From 983fe7c4ac262f56d38a143b1efab1e4afb77a52 Mon Sep 17 00:00:00 2001 From: l4check Date: Tue, 21 Jun 2011 19:57:51 +0000 Subject: [PATCH] update git-svn-id: http://svn.tudos.org/repos/oc/tudos/trunk@35 d050ee49-bd90-4346-b210-929a50b99cfc --- kernel/fiasco/Makefile | 3 +- kernel/fiasco/src/abi/l4_buf_desc.cpp | 80 + kernel/fiasco/src/abi/l4_fpage.cpp | 259 +- kernel/fiasco/src/abi/l4_msg_item.cpp | 198 +- kernel/fiasco/src/abi/l4_types.cpp | 615 +- .../fiasco/src/drivers/amd64/reset-amd64.cpp | 2 +- kernel/fiasco/src/drivers/ia32/reset-ia32.cpp | 2 +- .../fiasco/src/drivers/ppc32/reset-ppc32.cpp | 4 +- kernel/fiasco/src/jdb/arm/jdb-arm.cpp | 38 +- .../src/jdb/arm/jdb_entry_frame-arm.cpp | 2 +- kernel/fiasco/src/jdb/ia32/jdb-ia32-amd64.cpp | 15 +- kernel/fiasco/src/jdb/jdb.cpp | 19 +- kernel/fiasco/src/jdb/jdb_kobject.cpp | 20 +- kernel/fiasco/src/jdb/jdb_log.cpp | 19 +- kernel/fiasco/src/jdb/ppc32/jdb-ppc32.cpp | 8 + kernel/fiasco/src/jdb/ux/jdb-ux.cpp | 13 + .../src/kern/arm/bsp/imx/reset-arm-imx.cpp | 4 +- .../bsp/integrator/reset-arm-integrator.cpp | 2 +- .../arm/bsp/kirkwood/reset-arm-kirkwood.cpp | 2 +- kernel/fiasco/src/kern/arm/bsp/omap3/Kconfig | 17 +- kernel/fiasco/src/kern/arm/bsp/omap3/Modules | 28 +- .../kern/arm/bsp/omap3/boot_mp-arm-omap4.cpp | 60 + .../kern/arm/bsp/omap3/bootstrap-arm-omap.cpp | 21 + .../kern/arm/bsp/omap3/config-arm-omap.cpp | 32 + .../arm/bsp/omap3/kernel_uart-arm-omap.cpp | 15 + .../arm/bsp/omap3/mem_layout-arm-omap.cpp | 98 + .../kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp | 72 + .../src/kern/arm/bsp/omap3/pic-arm-omap3.cpp | 1 - .../src/kern/arm/bsp/omap3/reset-arm-omap.cpp | 38 + .../arm/bsp/omap3/timer-arm-mptimer-omap4.cpp | 8 + .../src/kern/arm/bsp/omap3/uart-arm-omap.cpp | 29 + .../src/kern/arm/bsp/pxa/reset-arm-pxa.cpp | 2 +- .../arm/bsp/realview/reset-arm-realview.cpp | 2 +- .../kern/arm/bsp/s3c/reset-arm-s3c2410.cpp | 2 +- .../kern/arm/bsp/sa1100/reset-arm-sa1100.cpp | 2 +- .../kern/arm/bsp/tegra2/reset-arm-tegra2.cpp | 2 +- kernel/fiasco/src/kern/arm/cpu-arm.cpp | 56 +- .../fiasco/src/kern/arm/entry_frame-arm.cpp | 12 +- kernel/fiasco/src/kern/arm/ivt.S | 14 +- kernel/fiasco/src/kern/arm/kdb_ke-arm.cpp | 2 +- kernel/fiasco/src/kern/arm/main.cpp | 14 +- kernel/fiasco/src/kern/arm/mem_space-arm.cpp | 7 + kernel/fiasco/src/kern/arm/pagetable-arch.cpp | 5 +- kernel/fiasco/src/kern/arm/paging-arm.cpp | 2 +- kernel/fiasco/src/kern/arm/tramp-mp.S | 51 +- kernel/fiasco/src/kern/buddy_alloc.cpp | 16 +- kernel/fiasco/src/kern/factory.cpp | 3 +- kernel/fiasco/src/kern/ia32/32/thread-dbf.cpp | 2 +- .../src/kern/ia32/32/thread-ia32-32.cpp | 2 +- kernel/fiasco/src/kern/ia32/64/entry.S | 23 +- kernel/fiasco/src/kern/ia32/64/thread-dbf.cpp | 2 +- kernel/fiasco/src/kern/ia32/apic-ia32.cpp | 105 +- kernel/fiasco/src/kern/ia32/cpu-ia32.cpp | 17 +- kernel/fiasco/src/kern/ia32/main-ia32.cpp | 8 +- kernel/fiasco/src/kern/ia32/map_util-io.cpp | 6 +- .../fiasco/src/kern/ia32/mem_space-ia32.cpp | 7 + kernel/fiasco/src/kern/io_space.cpp | 15 +- kernel/fiasco/src/kern/ipc_gate.cpp | 4 +- kernel/fiasco/src/kern/irq.cpp | 2 +- kernel/fiasco/src/kern/kernel_thread-std.cpp | 2 +- kernel/fiasco/src/kern/kobject_helper.cpp | 4 +- kernel/fiasco/src/kern/l4_buf_iter.cpp | 2 +- kernel/fiasco/src/kern/map_util-mem.cpp | 8 +- kernel/fiasco/src/kern/map_util-objs.cpp | 6 +- kernel/fiasco/src/kern/map_util.cpp | 42 +- kernel/fiasco/src/kern/mapping_tree.cpp | 26 +- kernel/fiasco/src/kern/obj_space.cpp | 9 +- kernel/fiasco/src/kern/ppc32/main.cpp | 14 +- .../fiasco/src/kern/ppc32/mem_space-ppc32.cpp | 8 + kernel/fiasco/src/kern/reset-dummy.cpp | 2 +- kernel/fiasco/src/kern/scheduler.cpp | 2 +- kernel/fiasco/src/kern/space.cpp | 13 +- kernel/fiasco/src/kern/syscalls-log.cpp | 4 +- kernel/fiasco/src/kern/task.cpp | 21 +- kernel/fiasco/src/kern/tb_entry.cpp | 4 +- kernel/fiasco/src/kern/tb_entry_output.cpp | 4 +- kernel/fiasco/src/kern/terminate.cpp | 8 +- kernel/fiasco/src/kern/thread-ipc.cpp | 7 +- kernel/fiasco/src/kern/thread.cpp | 2 +- kernel/fiasco/src/kern/thread_object.cpp | 23 +- kernel/fiasco/src/kern/ux/boot_info-ux.cpp | 34 + kernel/fiasco/src/kern/ux/emulation.cpp | 60 +- kernel/fiasco/src/kern/ux/loader.cpp | 9 +- kernel/fiasco/src/kern/ux/thread-ux.cpp | 12 +- kernel/fiasco/src/kernel.arm.ld | 5 +- kernel/fiasco/src/lib/libk/mem_region.cpp | 5 +- .../templates/globalconfig.out.arm-a9-mp-1 | 2 +- .../templates/globalconfig.out.arm-a9-mp-2 | 2 +- .../globalconfig.out.arm-a9-mp-vexpress | 4 +- .../src/templates/globalconfig.out.arm-imx21 | 2 +- .../src/templates/globalconfig.out.arm-imx35 | 2 +- .../src/templates/globalconfig.out.arm-imx51 | 2 +- .../src/templates/globalconfig.out.arm-int-1 | 2 +- .../src/templates/globalconfig.out.arm-int-2 | 2 +- .../templates/globalconfig.out.arm-kirkwood | 2 +- .../templates/globalconfig.out.arm-omap3evm | 3 +- .../globalconfig.out.arm-omap4-panda | 81 + .../src/templates/globalconfig.out.arm-pxa | 2 +- .../src/templates/globalconfig.out.arm-rv-1 | 2 +- .../src/templates/globalconfig.out.arm-rv-2 | 2 +- .../src/templates/globalconfig.out.arm-rv-3 | 2 +- .../templates/globalconfig.out.arm-rv-4-noinl | 2 +- .../src/templates/globalconfig.out.arm-sa | 2 +- .../src/templates/globalconfig.out.arm-t2 | 2 +- .../src/templates/globalconfig.out.arm-v6 | 2 +- .../templates/globalconfig.out.arm-v6-mp-eb | 2 +- .../templates/globalconfig.out.arm-v6-mp-pb | 2 +- .../src/templates/globalconfig.out.arm-v7 | 2 +- kernel/fiasco/src/types/types.h | 9 + kernel/fiasco/tool/kconfig/Makefile | 18 +- kernel/fiasco/tool/kconfig/README | 2 +- kernel/fiasco/tool/kconfig/scripts/Makefile | 5 + .../tool/kconfig/scripts/Makefile.build | 35 +- .../tool/kconfig/scripts/Makefile.modpost | 4 +- .../tool/kconfig/scripts/kconfig/conf.c | 2 +- l4/conf/examples/l4lx-gfx.cfg | 2 +- l4/conf/modules.list | 2 +- l4/mk/Kconfig | 18 + l4/mk/Makeconf | 7 +- l4/mk/aliases.d/10-stdlibs | 6 +- l4/mk/binary.inc | 131 +- l4/mk/defconfig/config.amd64 | 2 +- l4/mk/defconfig/config.arm-rv | 3 +- l4/mk/defconfig/config.ppc32 | 2 +- l4/mk/defconfig/config.sparc | 4 +- l4/mk/defconfig/config.x86 | 2 +- l4/mk/export_defs.inc | 1 - l4/mk/lib.mk | 17 +- l4/mk/modes.inc | 29 +- l4/mk/prog.mk | 7 +- l4/mk/rules.inc | 74 + l4/pkg/acpica/Control | 2 +- l4/pkg/ankh/Control | 2 +- l4/pkg/ankh/examples/dhcp/Makefile | 1 - l4/pkg/ankh/examples/lwip/Makefile | 1 - l4/pkg/ankh/examples/morpork/Makefile | 3 +- l4/pkg/ankh/examples/pingpong/Makefile | 3 +- l4/pkg/ankh/examples/wget/Makefile | 1 - l4/pkg/ankh/include/lwip-ankh.h | 2 + l4/pkg/ankh/lib/client-c/Makefile | 2 +- l4/pkg/ankh/lib/libc_be_socket/Makefile | 1 - l4/pkg/ankh/lib/lwip/lib/Makefile | 1 - l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c | 2 +- l4/pkg/ankh/lib/lwip/lib/arch/cc.h | 12 +- l4/pkg/ankh/server/src/Makefile | 1 - .../contrib/include/private/gc_priv.h | 12 +- l4/pkg/boost-lite/Control | 1 + l4/pkg/boost-lite/lib/Makefile | 1 + l4/pkg/bootstrap/Control | 2 +- .../server/src/ARCH-arm/bootstrap.ld.in | 9 +- l4/pkg/bootstrap/server/src/ARCH-arm/crt0.S | 18 + .../server/src/ARCH-ppc32/bootstrap.ld.in | 9 +- .../server/src/ARCH-sparc/bootstrap.ld.in | 6 +- .../server/src/ARCH-x86/bootstrap.ld.in | 6 +- l4/pkg/bootstrap/server/src/Make.rules | 14 +- l4/pkg/bootstrap/server/src/exec.c | 3 +- l4/pkg/bootstrap/server/src/libc_support+.cc | 2 +- l4/pkg/bootstrap/server/src/support_omap.cc | 43 + l4/pkg/bootstrap/server/src/unpack | 7 +- l4/pkg/cunit/Control | 2 +- l4/pkg/cxx/lib/ipc/include/ipc_stream | 5 +- l4/pkg/cxx/lib/tl/include/avl_map | 16 +- l4/pkg/cxx/lib/tl/include/avl_set | 8 + l4/pkg/cxx_libc_io/Control | 2 +- l4/pkg/dash/build/Makefile | 1 - .../dde-libinput/examples/inputtst/Makefile | 1 - l4/pkg/dde/Control | 2 +- l4/pkg/dde/ddekit/src/Makefile | 2 +- l4/pkg/dde/linux26/Makeconf | 3 +- l4/pkg/dde/linux26/lib/src/Makefile | 7 +- .../dde/linux26/lib/src/arch/arm/kernel/io.c | 50 + l4/pkg/dde/linux26/lib/src/arch/l4/kmalloc.c | 8 + l4/pkg/dde/linux26/lib/src/global-symbols.arm | 2 + l4/pkg/dope/Control | 2 +- l4/pkg/dope/lib/dope/l4/Makefile | 1 + l4/pkg/dope/server/l4/Makefile | 3 +- l4/pkg/drivers-frst/hpet/include/hpet | 2 +- l4/pkg/drivers/Control | 4 +- l4/pkg/drivers/lcd/src/lcd-tegra2.c | 2 +- l4/pkg/examples/fb/spectrum/Makefile | 1 - l4/pkg/examples/libs/inputtst/Makefile | 1 - .../examples/libs/libc_thread_safe/Makefile | 2 +- l4/pkg/examples/libs/libgomp/Makefile | 1 - l4/pkg/examples/libs/libio/Makefile | 1 - l4/pkg/examples/libs/libirq/Makefile | 1 - l4/pkg/examples/libs/libpng/Makefile | 1 - l4/pkg/examples/libs/shmc/Makefile | 3 +- l4/pkg/examples/sys/ipc/Makefile | 2 +- l4/pkg/examples/sys/migrate/Makefile | 2 +- l4/pkg/examples/sys/vmtest/Makefile | 3 +- l4/pkg/examples/sys/vmtest/main.c | 728 +- l4/pkg/fbterminal/Control | 2 +- l4/pkg/fbterminal/server/src/Makefile | 1 - l4/pkg/input/Control | 2 +- l4/pkg/input/lib/src/Makefile | 2 +- l4/pkg/io/server/src/Make.rules | 1 - l4/pkg/io/server/src/acpi.cc | 17 +- l4/pkg/io/server/src/pci.h | 11 +- l4/pkg/io/server/src/pci_iomem_root_bridge.cc | 4 +- l4/pkg/io/server/src/vicu.cc | 2 - l4/pkg/l4con/Control | 2 +- l4/pkg/l4con/server/src/Make.rules | 1 - l4/pkg/l4re/include/elf_aux.h | 6 + l4/pkg/l4re/include/impl/rm_impl.h | 21 + l4/pkg/l4re/include/l4aux.h | 13 - l4/pkg/l4re/include/rm | 17 + l4/pkg/l4re/include/rm-sys.h | 5 +- l4/pkg/l4re/util/include/event_buffer | 4 +- l4/pkg/l4re/util/include/icu_svr | 5 +- l4/pkg/l4re/util/include/region_mapping | 12 + l4/pkg/l4re/util/include/region_mapping_svr | 47 + l4/pkg/l4re_c/include/event_buffer.h | 13 +- l4/pkg/l4re_c/lib/src/event_buffer.cc | 13 +- l4/pkg/l4re_kernel/server/src/loader.h | 2 +- l4/pkg/l4re_kernel/server/src/main.cc | 66 +- l4/pkg/l4re_vfs/include/backend | 80 +- l4/pkg/l4re_vfs/include/impl/ns_fs.h | 4 + l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h | 2 + l4/pkg/l4re_vfs/include/impl/ro_file.h | 19 +- l4/pkg/l4re_vfs/include/impl/ro_file_impl.h | 44 +- l4/pkg/l4re_vfs/include/impl/vcon_stream.h | 4 +- .../l4re_vfs/include/impl/vcon_stream_impl.h | 2 +- l4/pkg/l4re_vfs/include/impl/vfs_impl.h | 32 +- l4/pkg/l4re_vfs/include/vfs.h | 3 + l4/pkg/l4sys/include/ARCH-arm/vm.h | 8 +- l4/pkg/l4util/Control | 2 +- l4/pkg/l4util/include/thread.h | 3 +- l4/pkg/l4util/lib/src/thread.c | 11 +- l4/pkg/ldscripts/ARCH-amd64/main_dyn.ld | 4 +- l4/pkg/ldscripts/ARCH-amd64/main_rel.ld | 13 +- l4/pkg/ldscripts/ARCH-amd64/main_stat.ld | 10 +- l4/pkg/ldscripts/ARCH-arm/main_dyn.ld | 4 +- l4/pkg/ldscripts/ARCH-arm/main_rel.ld | 35 +- l4/pkg/ldscripts/ARCH-arm/main_stat.ld | 18 +- l4/pkg/ldscripts/ARCH-ppc32/main_dyn.ld | 4 +- l4/pkg/ldscripts/ARCH-ppc32/main_stat.ld | 9 +- l4/pkg/ldscripts/ARCH-sparc/main_dyn.ld | 4 +- l4/pkg/ldscripts/ARCH-sparc/main_stat.ld | 10 +- l4/pkg/ldscripts/ARCH-x86/main_dyn.ld | 8 +- l4/pkg/ldscripts/ARCH-x86/main_rel.ld | 15 +- l4/pkg/ldscripts/ARCH-x86/main_stat.ld | 15 +- l4/pkg/ldscripts/Makefile | 5 + l4/pkg/ldscripts/generic.h | 3 + l4/pkg/ldscripts/kip_addr.c | 14 + l4/pkg/ldso/ldso/Makefile | 9 +- l4/pkg/ldso/ldso/vfs.cc | 4 +- l4/pkg/ldso/libdl/Makefile | 6 +- l4/pkg/lib_vt100/Control | 2 +- l4/pkg/libbsd-full/Control | 2 +- l4/pkg/libc_backends/Control | 6 +- l4/pkg/libc_backends/lib/l4re_file/file.cc | 21 +- l4/pkg/libc_backends/lib/minimal_io/be.cc | 5 + l4/pkg/libc_be_stdin/lib/src/stdin.cc | 40 +- l4/pkg/libevent/lib/src/Makefile | 5 +- l4/pkg/libgomp/Control | 2 +- l4/pkg/libgomp/lib/build/Makefile | 2 +- l4/pkg/libio-io/lib/src/io.cc | 65 +- l4/pkg/libirq/Control | 2 +- l4/pkg/libirq/lib/src/Makefile | 4 +- l4/pkg/libloader/include/elf | 69 +- l4/pkg/libloader/include/loader | 16 +- l4/pkg/libloader/include/remote_app_model | 3 +- l4/pkg/libloader/include/remote_mem | 9 - l4/pkg/libsdl/lib/build/Makefile | 2 +- l4/pkg/libstdc++-headers/Makefile | 2 +- .../include-4.1.0/bits/c++config.h | 4 +- .../include-4.3.3/bits/c++config.h | 11 +- .../include-4.5/bits/c++config.h | 12 +- l4/pkg/libstdc++-headers/include-4.6/Makefile | 8 + .../include-4.6/bits/c++config.h | 1580 + l4/pkg/libstdc++-headers/include-std/Makefile | 39 +- .../include/bits/os_defines.h | 1 + l4/pkg/libstdc++-v3-minimal/Control | 4 + l4/pkg/libstdc++-v3-minimal/Makefile | 14 + l4/pkg/libstdc++-v3/build/include/Makefile | 6 +- l4/pkg/libstdc++-v3/build/src/Makefile | 7 +- l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 | 2 +- l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 | 2 + l4/pkg/libstdc++-v3/build/src/Makefile-4.5 | 2 + l4/pkg/libstdc++-v3/build/src/Makefile-4.6 | 18 + l4/pkg/libstdc++-v3/contrib.inc | 7 + .../libstdc++-v3/contrib/gcc-4.6/coretypes.h | 175 + .../libstdc++-v3/contrib/gcc-4.6/unwind-pe.h | 289 + .../contrib/libstdc++-v3-4.6/ChangeLog | 1219 + .../contrib/libstdc++-v3-4.6/ChangeLog-1998 | 942 + .../contrib/libstdc++-v3-4.6/ChangeLog-1999 | 3544 + .../contrib/libstdc++-v3-4.6/ChangeLog-2000 | 5644 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2001 | 6067 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2002 | 5590 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2003 | 8619 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2004 | 6709 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2005 | 5468 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2006 | 5851 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2007 | 8243 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2008 | 4801 ++ .../contrib/libstdc++-v3-4.6/ChangeLog-2009 | 12427 +++ .../contrib/libstdc++-v3-4.6/ChangeLog-2010 | 7188 ++ .../contrib/libstdc++-v3-4.6/Makefile.am | 177 + .../contrib/libstdc++-v3-4.6/Makefile.in | 717 + .../contrib/libstdc++-v3-4.6/README | 6 + .../contrib/libstdc++-v3-4.6/acinclude.m4 | 3209 + .../contrib/libstdc++-v3-4.6/aclocal.m4 | 678 + .../contrib/libstdc++-v3-4.6/config.h.in | 1135 + .../config/abi/compatibility.h | 214 + .../post/alpha-linux-gnu/baseline_symbols.txt | 3915 + .../post/hppa-linux-gnu/baseline_symbols.txt | 3290 + .../post/i386-linux-gnu/baseline_symbols.txt | 3604 + .../post/i486-linux-gnu/baseline_symbols.txt | 3604 + .../post/ia64-linux-gnu/baseline_symbols.txt | 3402 + .../post/mips-linux-gnu/baseline_symbols.txt | 3290 + .../mips64-linux-gnu/64/baseline_symbols.txt | 3402 + .../mips64-linux-gnu/baseline_symbols.txt | 3402 + .../powerpc-linux-gnu/baseline_symbols.txt | 3909 + .../32/baseline_symbols.txt | 3909 + .../powerpc64-linux-gnu/baseline_symbols.txt | 3915 + .../post/s390-linux-gnu/baseline_symbols.txt | 3909 + .../post/s390x-linux-gnu/baseline_symbols.txt | 3915 + .../solaris2.10/amd64/baseline_symbols.txt | 3577 + .../abi/post/solaris2.10/baseline_symbols.txt | 3571 + .../solaris2.10/sparcv9/baseline_symbols.txt | 3577 + .../abi/post/solaris2.8/baseline_symbols.txt | 3581 + .../solaris2.8/sparcv9/baseline_symbols.txt | 3587 + .../post/sparc-linux-gnu/baseline_symbols.txt | 3909 + .../x86_64-linux-gnu/32/baseline_symbols.txt | 3604 + .../x86_64-linux-gnu/baseline_symbols.txt | 3610 + .../abi/pre/gnu-versioned-namespace.ver | 304 + .../libstdc++-v3-4.6/config/abi/pre/gnu.ver | 1461 + .../libstdc++-v3-4.6/config/abi/pre/none.ver | 7 + .../config/allocator/bitmap_allocator_base.h | 37 + .../config/allocator/malloc_allocator_base.h | 37 + .../config/allocator/mt_allocator_base.h | 37 + .../config/allocator/new_allocator_base.h | 37 + .../config/allocator/pool_allocator_base.h | 37 + .../config/cpu/alpha/atomic_word.h | 33 + .../config/cpu/arm/cxxabi_tweaks.h | 82 + .../config/cpu/cris/atomic_word.h | 31 + .../config/cpu/cris/atomicity.h | 89 + .../config/cpu/generic/atomic_word.h | 47 + .../generic/atomicity_builtins/atomicity.h | 44 + .../cpu/generic/atomicity_mutex/atomicity.h | 60 + .../config/cpu/generic/cpu_defines.h | 33 + .../config/cpu/generic/cxxabi_tweaks.h | 59 + .../config/cpu/hppa/atomicity.h | 94 + .../config/cpu/i386/atomicity.h | 73 + .../config/cpu/i486/atomicity.h | 52 + .../config/cpu/ia64/atomic_word.h | 64 + .../config/cpu/m68k/atomicity.h | 132 + .../config/cpu/microblaze/cpu_defines.h | 39 + .../config/cpu/powerpc/atomic_word.h | 37 + .../config/cpu/powerpc/cpu_defines.h | 36 + .../config/cpu/sh/atomicity.h | 109 + .../config/cpu/sparc/atomic_word.h | 48 + .../config/cpu/sparc/atomicity.h | 125 + .../config/io/basic_file_stdio.cc | 385 + .../config/io/basic_file_stdio.h | 111 + .../libstdc++-v3-4.6/config/io/c_io_stdio.h | 51 + .../config/locale/darwin/ctype_members.cc | 173 + .../locale/generic/c++locale_internal.h | 25 + .../config/locale/generic/c_locale.cc | 268 + .../config/locale/generic/c_locale.h | 93 + .../config/locale/generic/codecvt_members.cc | 220 + .../config/locale/generic/collate_members.cc | 74 + .../config/locale/generic/ctype_members.cc | 272 + .../config/locale/generic/messages_members.cc | 51 + .../config/locale/generic/messages_members.h | 93 + .../config/locale/generic/monetary_members.cc | 171 + .../config/locale/generic/numeric_members.cc | 106 + .../config/locale/generic/time_members.cc | 212 + .../config/locale/generic/time_members.h | 94 + .../config/locale/gnu/c++locale_internal.h | 64 + .../config/locale/gnu/c_locale.cc | 214 + .../config/locale/gnu/c_locale.h | 115 + .../config/locale/gnu/codecvt_members.cc | 308 + .../config/locale/gnu/collate_members.cc | 73 + .../config/locale/gnu/ctype_members.cc | 306 + .../config/locale/gnu/messages_members.cc | 86 + .../config/locale/gnu/messages_members.h | 131 + .../config/locale/gnu/monetary_members.cc | 935 + .../config/locale/gnu/numeric_members.cc | 218 + .../config/locale/gnu/time_members.cc | 401 + .../config/locale/gnu/time_members.h | 91 + .../locale/ieee_1003.1-2001/c_locale.cc | 107 + .../config/locale/ieee_1003.1-2001/c_locale.h | 49 + .../ieee_1003.1-2001/messages_members.cc | 56 + .../ieee_1003.1-2001/messages_members.h | 75 + .../config/os/aix/atomic_word.h | 43 + .../config/os/aix/atomicity.h | 56 + .../config/os/aix/ctype_base.h | 58 + .../config/os/aix/ctype_inline.h | 83 + .../config/os/aix/ctype_noninline.h | 91 + .../config/os/aix/os_defines.h | 52 + .../config/os/bionic/ctype_base.h | 60 + .../config/os/bionic/ctype_inline.h | 74 + .../config/os/bionic/ctype_noninline.h | 98 + .../config/os/bionic/os_defines.h | 36 + .../config/os/bsd/darwin/ctype_base.h | 74 + .../config/os/bsd/darwin/ctype_inline.h | 151 + .../config/os/bsd/darwin/ctype_noninline.h | 92 + .../config/os/bsd/darwin/os_defines.h | 42 + .../config/os/bsd/darwin/ppc-extra.ver | 1 + .../config/os/bsd/freebsd/ctype_base.h | 76 + .../config/os/bsd/freebsd/ctype_inline.h | 151 + .../config/os/bsd/freebsd/ctype_noninline.h | 92 + .../config/os/bsd/freebsd/os_defines.h | 39 + .../config/os/bsd/netbsd/ctype_base.h | 78 + .../config/os/bsd/netbsd/ctype_inline.h | 78 + .../config/os/bsd/netbsd/ctype_noninline.h | 94 + .../config/os/bsd/netbsd/os_defines.h | 33 + .../config/os/djgpp/ctype_base.h | 57 + .../config/os/djgpp/ctype_inline.h | 77 + .../config/os/djgpp/ctype_noninline.h | 92 + .../config/os/djgpp/error_constants.h | 127 + .../config/os/djgpp/os_defines.h | 40 + .../config/os/generic/ctype_base.h | 59 + .../config/os/generic/ctype_inline.h | 168 + .../config/os/generic/ctype_noninline.h | 92 + .../config/os/generic/error_constants.h | 178 + .../config/os/generic/os_defines.h | 36 + .../config/os/gnu-linux/arm-eabi-extra.ver | 18 + .../config/os/gnu-linux/ctype_base.h | 64 + .../config/os/gnu-linux/ctype_inline.h | 76 + .../config/os/gnu-linux/ctype_noninline.h | 190 + .../config/os/gnu-linux/ldbl-extra.ver | 32 + .../config/os/gnu-linux/os_defines.h | 42 + .../config/os/hpux/ctype_base.h | 58 + .../config/os/hpux/ctype_inline.h | 76 + .../config/os/hpux/ctype_noninline.h | 92 + .../config/os/hpux/os_defines.h | 110 + .../config/os/irix/atomic_word.h | 35 + .../config/os/irix/atomicity.h | 41 + .../config/os/irix/irix6.5/ctype_base.h | 64 + .../config/os/irix/irix6.5/ctype_inline.h | 74 + .../config/os/irix/irix6.5/ctype_noninline.h | 94 + .../config/os/irix/irix6.5/os_defines.h | 54 + .../config/os/mingw32/ctype_base.h | 64 + .../config/os/mingw32/ctype_inline.h | 75 + .../config/os/mingw32/ctype_noninline.h | 236 + .../config/os/mingw32/error_constants.h | 128 + .../config/os/mingw32/os_defines.h | 68 + .../config/os/newlib/ctype_base.h | 60 + .../config/os/newlib/ctype_inline.h | 74 + .../config/os/newlib/ctype_noninline.h | 97 + .../config/os/newlib/os_defines.h | 52 + .../config/os/qnx/qnx6.1/ctype_base.h | 63 + .../config/os/qnx/qnx6.1/ctype_inline.h | 74 + .../config/os/qnx/qnx6.1/ctype_noninline.h | 89 + .../config/os/qnx/qnx6.1/os_defines.h | 31 + .../config/os/solaris/solaris2.7/ctype_base.h | 60 + .../os/solaris/solaris2.7/ctype_inline.h | 76 + .../os/solaris/solaris2.7/ctype_noninline.h | 92 + .../config/os/solaris/solaris2.7/os_defines.h | 32 + .../config/os/tpf/ctype_base.h | 58 + .../config/os/tpf/ctype_inline.h | 76 + .../config/os/tpf/ctype_noninline.h | 113 + .../config/os/tpf/os_defines.h | 45 + .../config/os/uclibc/ctype_base.h | 66 + .../config/os/uclibc/ctype_inline.h | 76 + .../config/os/uclibc/ctype_noninline.h | 92 + .../config/os/uclibc/os_defines.h | 45 + .../config/os/vxworks/ctype_base.h | 59 + .../config/os/vxworks/ctype_inline.h | 78 + .../config/os/vxworks/ctype_noninline.h | 92 + .../config/os/vxworks/os_defines.h | 36 + .../contrib/libstdc++-v3-4.6/configure | 68815 ++++++++++++++++ .../contrib/libstdc++-v3-4.6/configure.ac | 459 + .../contrib/libstdc++-v3-4.6/configure.host | 339 + .../contrib/libstdc++-v3-4.6/crossconfig.m4 | 278 + .../contrib/libstdc++-v3-4.6/fragment.am | 25 + .../libstdc++-v3-4.6/include/Makefile.am | 1311 + .../libstdc++-v3-4.6/include/Makefile.in | 1696 + .../include/backward/auto_ptr.h | 295 + .../include/backward/backward_warning.h | 61 + .../include/backward/binders.h | 172 + .../include/backward/hash_fun.h | 171 + .../include/backward/hash_map | 600 + .../include/backward/hash_set | 568 + .../include/backward/hashtable.h | 1149 + .../include/backward/strstream | 185 + .../include/bits/algorithmfwd.h | 815 + .../libstdc++-v3-4.6/include/bits/allocator.h | 239 + .../libstdc++-v3-4.6/include/bits/atomic_0.h | 660 + .../libstdc++-v3-4.6/include/bits/atomic_2.h | 669 + .../include/bits/atomic_base.h | 295 + .../libstdc++-v3-4.6/include/bits/basic_ios.h | 475 + .../include/bits/basic_ios.tcc | 189 + .../include/bits/basic_string.h | 3036 + .../include/bits/basic_string.tcc | 1168 + .../include/bits/boost_concept_check.h | 791 + .../include/bits/c++0x_warning.h | 37 + .../libstdc++-v3-4.6/include/bits/c++config | 431 + .../include/bits/char_traits.h | 575 + .../libstdc++-v3-4.6/include/bits/codecvt.h | 506 + .../include/bits/concept_check.h | 80 + .../include/bits/cpp_type_traits.h | 425 + .../libstdc++-v3-4.6/include/bits/deque.tcc | 1046 + .../include/bits/forward_list.h | 1303 + .../include/bits/forward_list.tcc | 503 + .../libstdc++-v3-4.6/include/bits/fstream.tcc | 984 + .../include/bits/functexcept.h | 107 + .../include/bits/functional_hash.h | 191 + .../libstdc++-v3-4.6/include/bits/gslice.h | 185 + .../include/bits/gslice_array.h | 219 + .../libstdc++-v3-4.6/include/bits/hashtable.h | 1236 + .../include/bits/hashtable_policy.h | 987 + .../include/bits/indirect_array.h | 213 + .../libstdc++-v3-4.6/include/bits/ios_base.h | 977 + .../libstdc++-v3-4.6/include/bits/istream.tcc | 1094 + .../libstdc++-v3-4.6/include/bits/list.tcc | 470 + .../include/bits/locale_classes.h | 825 + .../include/bits/locale_classes.tcc | 273 + .../include/bits/locale_facets.h | 2610 + .../include/bits/locale_facets.tcc | 1362 + .../include/bits/locale_facets_nonio.h | 1938 + .../include/bits/locale_facets_nonio.tcc | 1373 + .../libstdc++-v3-4.6/include/bits/localefwd.h | 192 + .../include/bits/mask_array.h | 209 + .../libstdc++-v3-4.6/include/bits/move.h | 145 + .../libstdc++-v3-4.6/include/bits/ostream.tcc | 409 + .../include/bits/ostream_insert.h | 129 + .../libstdc++-v3-4.6/include/bits/postypes.h | 244 + .../libstdc++-v3-4.6/include/bits/random.h | 5395 ++ .../libstdc++-v3-4.6/include/bits/random.tcc | 2830 + .../include/bits/range_access.h | 105 + .../libstdc++-v3-4.6/include/bits/regex.h | 2517 + .../include/bits/regex_compiler.h | 1109 + .../include/bits/regex_constants.h | 301 + .../include/bits/regex_cursor.h | 93 + .../include/bits/regex_error.h | 161 + .../include/bits/regex_grep_matcher.h | 132 + .../include/bits/regex_grep_matcher.tcc | 179 + .../libstdc++-v3-4.6/include/bits/regex_nfa.h | 400 + .../include/bits/regex_nfa.tcc | 174 + .../include/bits/shared_ptr.h | 565 + .../include/bits/shared_ptr_base.h | 1385 + .../include/bits/slice_array.h | 275 + .../libstdc++-v3-4.6/include/bits/sstream.tcc | 290 + .../libstdc++-v3-4.6/include/bits/stl_algo.h | 6201 ++ .../include/bits/stl_algobase.h | 1211 + .../include/bits/stl_bvector.h | 1060 + .../include/bits/stl_construct.h | 160 + .../libstdc++-v3-4.6/include/bits/stl_deque.h | 1979 + .../include/bits/stl_function.h | 734 + .../libstdc++-v3-4.6/include/bits/stl_heap.h | 581 + .../include/bits/stl_iterator.h | 1131 + .../include/bits/stl_iterator_base_funcs.h | 203 + .../include/bits/stl_iterator_base_types.h | 229 + .../libstdc++-v3-4.6/include/bits/stl_list.h | 1630 + .../libstdc++-v3-4.6/include/bits/stl_map.h | 936 + .../include/bits/stl_multimap.h | 854 + .../include/bits/stl_multiset.h | 738 + .../include/bits/stl_numeric.h | 386 + .../libstdc++-v3-4.6/include/bits/stl_pair.h | 279 + .../libstdc++-v3-4.6/include/bits/stl_queue.h | 559 + .../include/bits/stl_raw_storage_iter.h | 109 + .../include/bits/stl_relops.h | 135 + .../libstdc++-v3-4.6/include/bits/stl_set.h | 753 + .../libstdc++-v3-4.6/include/bits/stl_stack.h | 300 + .../include/bits/stl_tempbuf.h | 273 + .../libstdc++-v3-4.6/include/bits/stl_tree.h | 1601 + .../include/bits/stl_uninitialized.h | 640 + .../include/bits/stl_vector.h | 1327 + .../include/bits/stream_iterator.h | 221 + .../include/bits/streambuf.tcc | 176 + .../include/bits/streambuf_iterator.h | 402 + .../libstdc++-v3-4.6/include/bits/stringfwd.h | 88 + .../include/bits/unique_ptr.h | 511 + .../include/bits/unordered_map.h | 409 + .../include/bits/unordered_set.h | 401 + .../include/bits/valarray_after.h | 552 + .../include/bits/valarray_array.h | 695 + .../include/bits/valarray_array.tcc | 245 + .../include/bits/valarray_before.h | 734 + .../libstdc++-v3-4.6/include/bits/vector.tcc | 781 + .../libstdc++-v3-4.6/include/c/cassert | 33 + .../contrib/libstdc++-v3-4.6/include/c/cctype | 36 + .../contrib/libstdc++-v3-4.6/include/c/cerrno | 50 + .../contrib/libstdc++-v3-4.6/include/c/cfloat | 36 + .../libstdc++-v3-4.6/include/c/ciso646 | 32 + .../libstdc++-v3-4.6/include/c/climits | 36 + .../libstdc++-v3-4.6/include/c/clocale | 36 + .../contrib/libstdc++-v3-4.6/include/c/cmath | 119 + .../libstdc++-v3-4.6/include/c/csetjmp | 44 + .../libstdc++-v3-4.6/include/c/csignal | 36 + .../libstdc++-v3-4.6/include/c/cstdarg | 37 + .../libstdc++-v3-4.6/include/c/cstddef | 40 + .../contrib/libstdc++-v3-4.6/include/c/cstdio | 79 + .../libstdc++-v3-4.6/include/c/cstdlib | 36 + .../libstdc++-v3-4.6/include/c/cstring | 36 + .../contrib/libstdc++-v3-4.6/include/c/ctime | 36 + .../contrib/libstdc++-v3-4.6/include/c/cwchar | 57 + .../libstdc++-v3-4.6/include/c/cwctype | 40 + .../include/c_compatibility/assert.h | 29 + .../include/c_compatibility/complex.h | 42 + .../include/c_compatibility/ctype.h | 50 + .../include/c_compatibility/errno.h | 34 + .../include/c_compatibility/fenv.h | 81 + .../include/c_compatibility/float.h | 34 + .../include/c_compatibility/inttypes.h | 91 + .../include/c_compatibility/iso646.h | 34 + .../include/c_compatibility/limits.h | 34 + .../include/c_compatibility/locale.h | 40 + .../include/c_compatibility/math.h | 77 + .../include/c_compatibility/setjmp.h | 39 + .../include/c_compatibility/signal.h | 40 + .../include/c_compatibility/stdarg.h | 38 + .../include/c_compatibility/stdbool.h | 42 + .../include/c_compatibility/stddef.h | 39 + .../include/c_compatibility/stdint.h | 110 + .../include/c_compatibility/stdio.h | 86 + .../include/c_compatibility/stdlib.h | 68 + .../include/c_compatibility/string.h | 59 + .../include/c_compatibility/tgmath.h | 42 + .../include/c_compatibility/time.h | 61 + .../include/c_compatibility/wchar.h | 116 + .../include/c_compatibility/wctype.h | 56 + .../libstdc++-v3-4.6/include/c_global/cassert | 45 + .../include/c_global/ccomplex | 44 + .../libstdc++-v3-4.6/include/c_global/cctype | 96 + .../libstdc++-v3-4.6/include/c_global/cerrno | 53 + .../libstdc++-v3-4.6/include/c_global/cfenv | 84 + .../libstdc++-v3-4.6/include/c_global/cfloat | 60 + .../include/c_global/cinttypes | 87 + .../libstdc++-v3-4.6/include/c_global/ciso646 | 34 + .../libstdc++-v3-4.6/include/c_global/climits | 60 + .../libstdc++-v3-4.6/include/c_global/clocale | 60 + .../libstdc++-v3-4.6/include/c_global/cmath | 1666 + .../libstdc++-v3-4.6/include/c_global/csetjmp | 63 + .../libstdc++-v3-4.6/include/c_global/csignal | 59 + .../libstdc++-v3-4.6/include/c_global/cstdarg | 59 + .../include/c_global/cstdbool | 44 + .../libstdc++-v3-4.6/include/c_global/cstddef | 44 + .../libstdc++-v3-4.6/include/c_global/cstdint | 106 + .../libstdc++-v3-4.6/include/c_global/cstdio | 185 + .../libstdc++-v3-4.6/include/c_global/cstdlib | 255 + .../libstdc++-v3-4.6/include/c_global/cstring | 125 + .../libstdc++-v3-4.6/include/c_global/ctgmath | 41 + .../libstdc++-v3-4.6/include/c_global/ctime | 77 + .../libstdc++-v3-4.6/include/c_global/cwchar | 305 + .../libstdc++-v3-4.6/include/c_global/cwctype | 127 + .../libstdc++-v3-4.6/include/c_std/cassert | 44 + .../libstdc++-v3-4.6/include/c_std/cctype | 80 + .../libstdc++-v3-4.6/include/c_std/cerrno | 52 + .../libstdc++-v3-4.6/include/c_std/cfloat | 47 + .../libstdc++-v3-4.6/include/c_std/ciso646 | 34 + .../libstdc++-v3-4.6/include/c_std/climits | 47 + .../libstdc++-v3-4.6/include/c_std/clocale | 59 + .../libstdc++-v3-4.6/include/c_std/cmath | 586 + .../libstdc++-v3-4.6/include/c_std/csetjmp | 62 + .../libstdc++-v3-4.6/include/c_std/csignal | 58 + .../libstdc++-v3-4.6/include/c_std/cstdarg | 58 + .../libstdc++-v3-4.6/include/c_std/cstddef | 48 + .../libstdc++-v3-4.6/include/c_std/cstdio | 184 + .../libstdc++-v3-4.6/include/c_std/cstdlib | 225 + .../libstdc++-v3-4.6/include/c_std/cstring | 125 + .../libstdc++-v3-4.6/include/c_std/ctime | 76 + .../libstdc++-v3-4.6/include/c_std/cwchar | 271 + .../libstdc++-v3-4.6/include/c_std/cwctype | 112 + .../libstdc++-v3-4.6/include/debug/bitset | 419 + .../libstdc++-v3-4.6/include/debug/debug.h | 129 + .../libstdc++-v3-4.6/include/debug/deque | 556 + .../include/debug/formatter.h | 415 + .../include/debug/forward_list | 741 + .../include/debug/functions.h | 383 + .../libstdc++-v3-4.6/include/debug/list | 744 + .../libstdc++-v3-4.6/include/debug/macros.h | 312 + .../libstdc++-v3-4.6/include/debug/map | 37 + .../libstdc++-v3-4.6/include/debug/map.h | 471 + .../libstdc++-v3-4.6/include/debug/multimap.h | 451 + .../libstdc++-v3-4.6/include/debug/multiset.h | 441 + .../include/debug/safe_base.h | 255 + .../include/debug/safe_iterator.h | 689 + .../include/debug/safe_iterator.tcc | 106 + .../include/debug/safe_sequence.h | 135 + .../include/debug/safe_sequence.tcc | 150 + .../libstdc++-v3-4.6/include/debug/set | 37 + .../libstdc++-v3-4.6/include/debug/set.h | 449 + .../libstdc++-v3-4.6/include/debug/string | 1113 + .../include/debug/unordered_map | 618 + .../include/debug/unordered_set | 596 + .../libstdc++-v3-4.6/include/debug/vector | 605 + .../libstdc++-v3-4.6/include/decimal/decimal | 485 + .../include/decimal/decimal.h | 468 + .../libstdc++-v3-4.6/include/ext/algorithm | 605 + .../include/ext/array_allocator.h | 157 + .../libstdc++-v3-4.6/include/ext/atomicity.h | 116 + .../include/ext/bitmap_allocator.h | 1112 + .../libstdc++-v3-4.6/include/ext/cast.h | 121 + .../include/ext/codecvt_specializations.h | 514 + .../include/ext/concurrence.h | 389 + .../include/ext/debug_allocator.h | 127 + .../include/ext/enc_filebuf.h | 65 + .../include/ext/extptr_allocator.h | 181 + .../libstdc++-v3-4.6/include/ext/functional | 427 + .../libstdc++-v3-4.6/include/ext/iterator | 116 + .../include/ext/malloc_allocator.h | 137 + .../libstdc++-v3-4.6/include/ext/memory | 198 + .../include/ext/mt_allocator.h | 754 + .../include/ext/new_allocator.h | 134 + .../libstdc++-v3-4.6/include/ext/numeric | 152 + .../include/ext/numeric_traits.h | 138 + .../include/ext/pb_ds/assoc_container.hpp | 700 + .../basic_tree_policy_base.hpp | 173 + .../basic_tree_policy/null_node_metadata.hpp | 67 + .../pb_ds/detail/basic_tree_policy/traits.hpp | 85 + .../include/ext/pb_ds/detail/basic_types.hpp | 211 + .../bin_search_tree_/bin_search_tree_.hpp | 497 + .../cond_dtor_entry_dealtor.hpp | 70 + .../cond_key_dtor_entry_dealtor.hpp | 81 + .../constructors_destructor_fn_imps.hpp | 219 + .../detail/bin_search_tree_/debug_fn_imps.hpp | 272 + .../detail/bin_search_tree_/erase_fn_imps.hpp | 120 + .../detail/bin_search_tree_/find_fn_imps.hpp | 182 + .../detail/bin_search_tree_/info_fn_imps.hpp | 64 + .../bin_search_tree_/insert_fn_imps.hpp | 211 + .../bin_search_tree_/iterators_fn_imps.hpp | 136 + .../bin_search_tree_/node_iterators.hpp | 237 + .../bin_search_tree_/point_iterators.hpp | 381 + .../policy_access_fn_imps.hpp | 56 + .../bin_search_tree_/r_erase_fn_imps.hpp | 120 + .../bin_search_tree_/rotate_fn_imps.hpp | 156 + .../bin_search_tree_/split_join_fn_imps.hpp | 146 + .../pb_ds/detail/bin_search_tree_/traits.hpp | 250 + .../detail/binary_heap_/binary_heap_.hpp | 357 + .../detail/binary_heap_/const_iterator.hpp | 152 + .../binary_heap_/const_point_iterator.hpp | 144 + .../constructors_destructor_fn_imps.hpp | 159 + .../detail/binary_heap_/debug_fn_imps.hpp | 72 + .../pb_ds/detail/binary_heap_/entry_cmp.hpp | 93 + .../pb_ds/detail/binary_heap_/entry_pred.hpp | 93 + .../detail/binary_heap_/erase_fn_imps.hpp | 242 + .../detail/binary_heap_/find_fn_imps.hpp | 91 + .../detail/binary_heap_/info_fn_imps.hpp | 64 + .../detail/binary_heap_/insert_fn_imps.hpp | 183 + .../detail/binary_heap_/iterators_fn_imps.hpp | 72 + .../binary_heap_/policy_access_fn_imps.hpp | 56 + .../detail/binary_heap_/resize_policy.hpp | 253 + .../binary_heap_/split_join_fn_imps.hpp | 173 + .../detail/binary_heap_/trace_fn_imps.hpp | 78 + .../detail/binomial_heap_/binomial_heap_.hpp | 116 + .../constructors_destructor_fn_imps.hpp | 61 + .../detail/binomial_heap_/debug_fn_imps.hpp | 49 + .../binomial_heap_base_.hpp | 234 + .../constructors_destructor_fn_imps.hpp | 97 + .../binomial_heap_base_/debug_fn_imps.hpp | 99 + .../binomial_heap_base_/erase_fn_imps.hpp | 192 + .../binomial_heap_base_/find_fn_imps.hpp | 73 + .../binomial_heap_base_/insert_fn_imps.hpp | 216 + .../split_join_fn_imps.hpp | 232 + .../detail/cc_hash_table_map_/cc_ht_map_.hpp | 636 + .../detail/cc_hash_table_map_/cmp_fn_imps.hpp | 83 + .../cond_key_dtor_entry_dealtor.hpp | 117 + .../constructor_destructor_fn_imps.hpp | 192 + ...uctor_destructor_no_store_hash_fn_imps.hpp | 55 + ...structor_destructor_store_hash_fn_imps.hpp | 56 + .../cc_hash_table_map_/debug_fn_imps.hpp | 74 + .../debug_no_store_hash_fn_imps.hpp | 49 + .../debug_store_hash_fn_imps.hpp | 53 + .../cc_hash_table_map_/entry_list_fn_imps.hpp | 91 + .../cc_hash_table_map_/erase_fn_imps.hpp | 103 + .../erase_no_store_hash_fn_imps.hpp | 101 + .../erase_store_hash_fn_imps.hpp | 95 + .../cc_hash_table_map_/find_fn_imps.hpp | 71 + .../find_store_hash_fn_imps.hpp | 41 + .../cc_hash_table_map_/info_fn_imps.hpp | 100 + .../cc_hash_table_map_/insert_fn_imps.hpp | 43 + .../insert_no_store_hash_fn_imps.hpp | 70 + .../insert_store_hash_fn_imps.hpp | 71 + .../cc_hash_table_map_/iterators_fn_imps.hpp | 83 + .../policy_access_fn_imps.hpp | 88 + .../cc_hash_table_map_/resize_fn_imps.hpp | 134 + .../resize_no_store_hash_fn_imps.hpp | 54 + .../resize_store_hash_fn_imps.hpp | 54 + .../cc_hash_table_map_/size_fn_imps.hpp | 59 + .../cc_hash_table_map_/standard_policies.hpp | 46 + .../cc_hash_table_map_/trace_fn_imps.hpp | 72 + .../include/ext/pb_ds/detail/cond_dealtor.hpp | 125 + .../constructors_destructor_fn_imps.hpp | 103 + .../pb_ds/detail/container_base_dispatch.hpp | 332 + .../ext/pb_ds/detail/debug_map_base.hpp | 346 + .../ext/pb_ds/detail/eq_fn/eq_by_less.hpp | 68 + .../ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp | 179 + .../constructor_destructor_fn_imps.hpp | 223 + ...uctor_destructor_no_store_hash_fn_imps.hpp | 53 + ...structor_destructor_store_hash_fn_imps.hpp | 54 + .../gp_hash_table_map_/debug_fn_imps.hpp | 55 + .../debug_no_store_hash_fn_imps.hpp | 71 + .../debug_store_hash_fn_imps.hpp | 77 + .../gp_hash_table_map_/erase_fn_imps.hpp | 100 + .../erase_no_store_hash_fn_imps.hpp | 85 + .../erase_store_hash_fn_imps.hpp | 86 + .../gp_hash_table_map_/find_fn_imps.hpp | 70 + .../find_no_store_hash_fn_imps.hpp | 46 + .../find_store_hash_fn_imps.hpp | 40 + .../detail/gp_hash_table_map_/gp_ht_map_.hpp | 677 + .../gp_hash_table_map_/info_fn_imps.hpp | 58 + .../gp_hash_table_map_/insert_fn_imps.hpp | 43 + .../insert_no_store_hash_fn_imps.hpp | 111 + .../insert_store_hash_fn_imps.hpp | 118 + .../gp_hash_table_map_/iterator_fn_imps.hpp | 83 + .../policy_access_fn_imps.hpp | 100 + .../gp_hash_table_map_/resize_fn_imps.hpp | 138 + .../resize_no_store_hash_fn_imps.hpp | 72 + .../resize_store_hash_fn_imps.hpp | 74 + .../gp_hash_table_map_/standard_policies.hpp | 74 + .../gp_hash_table_map_/trace_fn_imps.hpp | 74 + .../hash_fn/direct_mask_range_hashing_imp.hpp | 58 + .../hash_fn/direct_mod_range_hashing_imp.hpp | 58 + .../detail/hash_fn/linear_probe_fn_imp.hpp | 53 + .../hash_fn/mask_based_range_hashing.hpp | 107 + .../hash_fn/mod_based_range_hashing.hpp | 108 + .../pb_ds/detail/hash_fn/probe_fn_base.hpp | 59 + .../detail/hash_fn/quadratic_probe_fn_imp.hpp | 53 + .../pb_ds/detail/hash_fn/ranged_hash_fn.hpp | 359 + .../pb_ds/detail/hash_fn/ranged_probe_fn.hpp | 327 + .../pb_ds/detail/hash_fn/sample_probe_fn.hpp | 73 + .../detail/hash_fn/sample_range_hashing.hpp | 77 + .../detail/hash_fn/sample_ranged_hash_fn.hpp | 77 + .../detail/hash_fn/sample_ranged_probe_fn.hpp | 77 + .../const_iterator.hpp | 162 + .../const_point_iterator.hpp | 154 + .../constructors_destructor_fn_imps.hpp | 153 + .../debug_fn_imps.hpp | 141 + .../erase_fn_imps.hpp | 150 + .../info_fn_imps.hpp | 64 + .../insert_fn_imps.hpp | 175 + .../iterators_fn_imps.hpp | 88 + .../left_child_next_sibling_heap_.hpp | 349 + .../left_child_next_sibling_heap_/node.hpp | 123 + .../null_metadata.hpp | 55 + .../policy_access_fn_imps.hpp | 52 + .../trace_fn_imps.hpp | 95 + .../constructor_destructor_fn_imps.hpp | 142 + .../detail/list_update_map_/debug_fn_imps.hpp | 57 + .../list_update_map_/entry_metadata_base.hpp | 60 + .../detail/list_update_map_/erase_fn_imps.hpp | 135 + .../detail/list_update_map_/find_fn_imps.hpp | 90 + .../detail/list_update_map_/info_fn_imps.hpp | 57 + .../list_update_map_/insert_fn_imps.hpp | 106 + .../list_update_map_/iterators_fn_imps.hpp | 80 + .../pb_ds/detail/list_update_map_/lu_map_.hpp | 359 + .../detail/list_update_map_/trace_fn_imps.hpp | 59 + .../counter_lu_metadata.hpp | 86 + .../counter_lu_policy_imp.hpp | 51 + .../list_update_policy/mtf_lu_policy_imp.hpp | 55 + .../sample_update_policy.hpp | 74 + .../pb_ds/detail/ov_tree_map_/cond_dtor.hpp | 74 + .../constructors_destructor_fn_imps.hpp | 273 + .../detail/ov_tree_map_/debug_fn_imps.hpp | 83 + .../detail/ov_tree_map_/erase_fn_imps.hpp | 193 + .../detail/ov_tree_map_/info_fn_imps.hpp | 60 + .../detail/ov_tree_map_/insert_fn_imps.hpp | 63 + .../detail/ov_tree_map_/iterators_fn_imps.hpp | 103 + .../detail/ov_tree_map_/node_iterators.hpp | 292 + .../detail/ov_tree_map_/ov_tree_map_.hpp | 522 + .../ov_tree_map_/policy_access_fn_imps.hpp | 51 + .../ov_tree_map_/split_join_fn_imps.hpp | 137 + .../ext/pb_ds/detail/ov_tree_map_/traits.hpp | 183 + .../constructors_destructor_fn_imps.hpp | 91 + .../detail/pairing_heap_/debug_fn_imps.hpp | 53 + .../detail/pairing_heap_/erase_fn_imps.hpp | 236 + .../detail/pairing_heap_/find_fn_imps.hpp | 50 + .../detail/pairing_heap_/insert_fn_imps.hpp | 101 + .../detail/pairing_heap_/pairing_heap_.hpp | 216 + .../pairing_heap_/split_join_fn_imps.hpp | 140 + .../pb_ds/detail/pat_trie_/child_iterator.hpp | 93 + .../pat_trie_/cond_dtor_entry_dealtor.hpp | 79 + .../detail/pat_trie_/const_child_iterator.hpp | 111 + .../constructors_destructor_fn_imps.hpp | 215 + .../pb_ds/detail/pat_trie_/debug_fn_imps.hpp | 117 + .../pb_ds/detail/pat_trie_/erase_fn_imps.hpp | 319 + .../pb_ds/detail/pat_trie_/find_fn_imps.hpp | 269 + .../ext/pb_ds/detail/pat_trie_/head.hpp | 124 + .../pb_ds/detail/pat_trie_/info_fn_imps.hpp | 58 + .../detail/pat_trie_/insert_join_fn_imps.hpp | 465 + .../pb_ds/detail/pat_trie_/internal_node.hpp | 599 + .../detail/pat_trie_/iterators_fn_imps.hpp | 120 + .../ext/pb_ds/detail/pat_trie_/leaf.hpp | 171 + .../ext/pb_ds/detail/pat_trie_/node_base.hpp | 128 + .../pb_ds/detail/pat_trie_/node_iterators.hpp | 338 + .../detail/pat_trie_/node_metadata_base.hpp | 86 + .../ext/pb_ds/detail/pat_trie_/pat_trie_.hpp | 515 + .../detail/pat_trie_/point_iterators.hpp | 484 + .../pat_trie_/policy_access_fn_imps.hpp | 63 + .../detail/pat_trie_/r_erase_fn_imps.hpp | 103 + .../pb_ds/detail/pat_trie_/rotate_fn_imps.hpp | 150 + .../pb_ds/detail/pat_trie_/split_fn_imps.hpp | 254 + .../pat_trie_/split_join_branch_bag.hpp | 93 + .../pat_trie_/synth_e_access_traits.hpp | 229 + .../pb_ds/detail/pat_trie_/trace_fn_imps.hpp | 113 + .../ext/pb_ds/detail/pat_trie_/traits.hpp | 350 + .../pb_ds/detail/pat_trie_/update_fn_imps.hpp | 55 + .../detail/priority_queue_base_dispatch.hpp | 91 + .../constructors_destructor_fn_imps.hpp | 100 + .../detail/rb_tree_map_/debug_fn_imps.hpp | 78 + .../detail/rb_tree_map_/erase_fn_imps.hpp | 289 + .../detail/rb_tree_map_/find_fn_imps.hpp | 39 + .../detail/rb_tree_map_/info_fn_imps.hpp | 46 + .../detail/rb_tree_map_/insert_fn_imps.hpp | 115 + .../ext/pb_ds/detail/rb_tree_map_/node.hpp | 138 + .../pb_ds/detail/rb_tree_map_/rb_tree_.hpp | 280 + .../rb_tree_map_/split_join_fn_imps.hpp | 313 + .../ext/pb_ds/detail/rb_tree_map_/traits.hpp | 124 + .../constructors_destructor_fn_imps.hpp | 88 + .../rc_binomial_heap_/debug_fn_imps.hpp | 121 + .../rc_binomial_heap_/erase_fn_imps.hpp | 107 + .../rc_binomial_heap_/insert_fn_imps.hpp | 154 + .../ext/pb_ds/detail/rc_binomial_heap_/rc.hpp | 262 + .../rc_binomial_heap_/rc_binomial_heap_.hpp | 198 + .../rc_binomial_heap_/split_join_fn_imps.hpp | 81 + .../rc_binomial_heap_/trace_fn_imps.hpp | 53 + ...max_collision_check_resize_trigger_imp.hpp | 211 + .../hash_exponential_size_policy_imp.hpp | 90 + .../hash_load_check_resize_trigger_imp.hpp | 283 + ...sh_load_check_resize_trigger_size_base.hpp | 94 + .../hash_prime_size_policy_imp.hpp | 161 + .../hash_standard_resize_policy_imp.hpp | 249 + .../resize_policy/sample_resize_policy.hpp | 125 + .../resize_policy/sample_resize_trigger.hpp | 138 + .../resize_policy/sample_size_policy.hpp | 73 + .../constructors_destructor_fn_imps.hpp | 102 + .../detail/splay_tree_/debug_fn_imps.hpp | 74 + .../detail/splay_tree_/erase_fn_imps.hpp | 157 + .../pb_ds/detail/splay_tree_/find_fn_imps.hpp | 99 + .../pb_ds/detail/splay_tree_/info_fn_imps.hpp | 39 + .../detail/splay_tree_/insert_fn_imps.hpp | 93 + .../ext/pb_ds/detail/splay_tree_/node.hpp | 125 + .../detail/splay_tree_/splay_fn_imps.hpp | 283 + .../pb_ds/detail/splay_tree_/splay_tree_.hpp | 298 + .../detail/splay_tree_/split_join_fn_imps.hpp | 112 + .../ext/pb_ds/detail/splay_tree_/traits.hpp | 113 + .../ext/pb_ds/detail/standard_policies.hpp | 136 + .../constructors_destructor_fn_imps.hpp | 106 + .../pb_ds/detail/thin_heap_/debug_fn_imps.hpp | 112 + .../pb_ds/detail/thin_heap_/erase_fn_imps.hpp | 296 + .../pb_ds/detail/thin_heap_/find_fn_imps.hpp | 51 + .../detail/thin_heap_/insert_fn_imps.hpp | 326 + .../detail/thin_heap_/split_join_fn_imps.hpp | 126 + .../pb_ds/detail/thin_heap_/thin_heap_.hpp | 351 + .../pb_ds/detail/thin_heap_/trace_fn_imps.hpp | 55 + .../tree_policy/node_metadata_selector.hpp | 116 + .../tree_policy/null_node_update_imp.hpp | 50 + .../tree_policy/order_statistics_imp.hpp | 141 + .../tree_policy/sample_tree_node_update.hpp | 72 + .../ext/pb_ds/detail/tree_trace_base.hpp | 209 + .../trie_policy/node_metadata_selector.hpp | 116 + .../trie_policy/null_node_update_imp.hpp | 50 + .../trie_policy/order_statistics_imp.hpp | 181 + .../prefix_search_node_update_imp.hpp | 151 + .../sample_trie_e_access_traits.hpp | 89 + .../trie_policy/sample_trie_node_update.hpp | 72 + .../string_trie_e_access_traits_imp.hpp | 99 + .../detail/trie_policy/trie_policy_base.hpp | 249 + .../include/ext/pb_ds/detail/type_utils.hpp | 167 + .../include/ext/pb_ds/detail/types_traits.hpp | 82 + .../unordered_iterator/const_iterator.hpp | 129 + .../const_point_iterator.hpp | 151 + .../detail/unordered_iterator/iterator.hpp | 150 + .../unordered_iterator/point_iterator.hpp | 143 + .../include/ext/pb_ds/exception.hpp | 105 + .../include/ext/pb_ds/hash_policy.hpp | 605 + .../include/ext/pb_ds/list_update_policy.hpp | 139 + .../include/ext/pb_ds/priority_queue.hpp | 129 + .../include/ext/pb_ds/tag_and_trait.hpp | 364 + .../include/ext/pb_ds/tree_policy.hpp | 163 + .../include/ext/pb_ds/trie_policy.hpp | 356 + .../include/ext/pod_char_traits.h | 188 + .../libstdc++-v3-4.6/include/ext/pointer.h | 570 + .../include/ext/pool_allocator.h | 266 + .../libstdc++-v3-4.6/include/ext/rb_tree | 96 + .../include/ext/rc_string_base.h | 733 + .../contrib/libstdc++-v3-4.6/include/ext/rope | 2965 + .../libstdc++-v3-4.6/include/ext/ropeimpl.h | 1704 + .../libstdc++-v3-4.6/include/ext/slist | 1083 + .../include/ext/sso_string_base.h | 577 + .../include/ext/stdio_filebuf.h | 162 + .../include/ext/stdio_sync_filebuf.h | 290 + .../include/ext/string_conversions.h | 101 + .../include/ext/throw_allocator.h | 765 + .../include/ext/type_traits.h | 207 + .../libstdc++-v3-4.6/include/ext/typelist.h | 554 + .../libstdc++-v3-4.6/include/ext/vstring.h | 2796 + .../libstdc++-v3-4.6/include/ext/vstring.tcc | 702 + .../include/ext/vstring_fwd.h | 90 + .../include/ext/vstring_util.h | 184 + .../libstdc++-v3-4.6/include/parallel/algo.h | 2363 + .../include/parallel/algobase.h | 279 + .../include/parallel/algorithm | 40 + .../include/parallel/algorithmfwd.h | 908 + .../include/parallel/balanced_quicksort.h | 492 + .../libstdc++-v3-4.6/include/parallel/base.h | 426 + .../include/parallel/basic_iterator.h | 41 + .../include/parallel/checkers.h | 73 + .../include/parallel/compatibility.h | 364 + .../include/parallel/compiletime_settings.h | 75 + .../include/parallel/equally_split.h | 88 + .../include/parallel/features.h | 104 + .../libstdc++-v3-4.6/include/parallel/find.h | 405 + .../include/parallel/find_selectors.h | 197 + .../include/parallel/for_each.h | 90 + .../include/parallel/for_each_selectors.h | 349 + .../include/parallel/iterator.h | 198 + .../include/parallel/list_partition.h | 179 + .../include/parallel/losertree.h | 1055 + .../libstdc++-v3-4.6/include/parallel/merge.h | 251 + .../include/parallel/multiseq_selection.h | 646 + .../include/parallel/multiway_merge.h | 2069 + .../include/parallel/multiway_mergesort.h | 481 + .../libstdc++-v3-4.6/include/parallel/numeric | 514 + .../include/parallel/numericfwd.h | 203 + .../include/parallel/omp_loop.h | 115 + .../include/parallel/omp_loop_static.h | 115 + .../include/parallel/par_loop.h | 139 + .../include/parallel/parallel.h | 42 + .../include/parallel/partial_sum.h | 231 + .../include/parallel/partition.h | 434 + .../libstdc++-v3-4.6/include/parallel/queue.h | 155 + .../include/parallel/quicksort.h | 176 + .../include/parallel/random_number.h | 125 + .../include/parallel/random_shuffle.h | 533 + .../include/parallel/search.h | 172 + .../include/parallel/set_operations.h | 529 + .../include/parallel/settings.h | 343 + .../libstdc++-v3-4.6/include/parallel/sort.h | 233 + .../libstdc++-v3-4.6/include/parallel/tags.h | 185 + .../libstdc++-v3-4.6/include/parallel/types.h | 137 + .../include/parallel/unique_copy.h | 197 + .../include/parallel/workstealing.h | 312 + .../include/precompiled/extc++.h | 71 + .../include/precompiled/stdc++.h | 116 + .../include/precompiled/stdtr1c++.h | 53 + .../libstdc++-v3-4.6/include/profile/base.h | 66 + .../libstdc++-v3-4.6/include/profile/bitset | 377 + .../libstdc++-v3-4.6/include/profile/deque | 451 + .../include/profile/forward_list | 179 + .../include/profile/impl/profiler.h | 409 + .../include/profile/impl/profiler_algos.h | 118 + .../profile/impl/profiler_container_size.h | 222 + .../include/profile/impl/profiler_hash_func.h | 181 + .../profile/impl/profiler_hashtable_size.h | 105 + .../profile/impl/profiler_list_to_slist.h | 215 + .../profile/impl/profiler_list_to_vector.h | 331 + .../impl/profiler_map_to_unordered_map.h | 297 + .../include/profile/impl/profiler_node.h | 173 + .../include/profile/impl/profiler_state.h | 73 + .../include/profile/impl/profiler_trace.h | 666 + .../profile/impl/profiler_vector_size.h | 104 + .../profile/impl/profiler_vector_to_list.h | 354 + .../include/profile/iterator_tracker.h | 274 + .../libstdc++-v3-4.6/include/profile/list | 640 + .../libstdc++-v3-4.6/include/profile/map | 41 + .../libstdc++-v3-4.6/include/profile/map.h | 529 + .../include/profile/multimap.h | 376 + .../include/profile/multiset.h | 367 + .../libstdc++-v3-4.6/include/profile/set | 41 + .../libstdc++-v3-4.6/include/profile/set.h | 377 + .../include/profile/unordered_map | 576 + .../include/profile/unordered_set | 542 + .../libstdc++-v3-4.6/include/profile/vector | 519 + .../libstdc++-v3-4.6/include/std/algorithm | 69 + .../libstdc++-v3-4.6/include/std/array | 274 + .../libstdc++-v3-4.6/include/std/atomic | 1054 + .../libstdc++-v3-4.6/include/std/bitset | 1557 + .../libstdc++-v3-4.6/include/std/chrono | 723 + .../libstdc++-v3-4.6/include/std/complex | 1936 + .../include/std/condition_variable | 266 + .../libstdc++-v3-4.6/include/std/deque | 77 + .../libstdc++-v3-4.6/include/std/forward_list | 52 + .../libstdc++-v3-4.6/include/std/fstream | 923 + .../libstdc++-v3-4.6/include/std/functional | 2268 + .../libstdc++-v3-4.6/include/std/future | 1393 + .../libstdc++-v3-4.6/include/std/iomanip | 352 + .../contrib/libstdc++-v3-4.6/include/std/ios | 47 + .../libstdc++-v3-4.6/include/std/iosfwd | 212 + .../libstdc++-v3-4.6/include/std/iostream | 80 + .../libstdc++-v3-4.6/include/std/istream | 861 + .../libstdc++-v3-4.6/include/std/iterator | 70 + .../libstdc++-v3-4.6/include/std/limits | 1632 + .../contrib/libstdc++-v3-4.6/include/std/list | 76 + .../libstdc++-v3-4.6/include/std/locale | 45 + .../contrib/libstdc++-v3-4.6/include/std/map | 73 + .../libstdc++-v3-4.6/include/std/memory | 91 + .../libstdc++-v3-4.6/include/std/mutex | 830 + .../libstdc++-v3-4.6/include/std/numeric | 77 + .../libstdc++-v3-4.6/include/std/ostream | 590 + .../libstdc++-v3-4.6/include/std/queue | 67 + .../libstdc++-v3-4.6/include/std/random | 57 + .../libstdc++-v3-4.6/include/std/ratio | 393 + .../libstdc++-v3-4.6/include/std/regex | 66 + .../contrib/libstdc++-v3-4.6/include/std/set | 73 + .../libstdc++-v3-4.6/include/std/sstream | 582 + .../libstdc++-v3-4.6/include/std/stack | 64 + .../libstdc++-v3-4.6/include/std/stdexcept | 159 + .../libstdc++-v3-4.6/include/std/streambuf | 810 + .../libstdc++-v3-4.6/include/std/string | 57 + .../libstdc++-v3-4.6/include/std/system_error | 376 + .../libstdc++-v3-4.6/include/std/thread | 301 + .../libstdc++-v3-4.6/include/std/tuple | 808 + .../libstdc++-v3-4.6/include/std/type_traits | 1271 + .../libstdc++-v3-4.6/include/std/typeindex | 109 + .../include/std/unordered_map | 59 + .../include/std/unordered_set | 58 + .../libstdc++-v3-4.6/include/std/utility | 146 + .../libstdc++-v3-4.6/include/std/valarray | 1165 + .../libstdc++-v3-4.6/include/std/vector | 82 + .../libstdc++-v3-4.6/include/tr1/array | 252 + .../include/tr1/bessel_function.tcc | 628 + .../include/tr1/beta_function.tcc | 198 + .../libstdc++-v3-4.6/include/tr1/ccomplex | 34 + .../libstdc++-v3-4.6/include/tr1/cctype | 49 + .../libstdc++-v3-4.6/include/tr1/cfenv | 81 + .../libstdc++-v3-4.6/include/tr1/cfloat | 42 + .../libstdc++-v3-4.6/include/tr1/cinttypes | 84 + .../libstdc++-v3-4.6/include/tr1/climits | 46 + .../libstdc++-v3-4.6/include/tr1/cmath | 1484 + .../libstdc++-v3-4.6/include/tr1/complex | 422 + .../libstdc++-v3-4.6/include/tr1/complex.h | 34 + .../libstdc++-v3-4.6/include/tr1/cstdarg | 34 + .../libstdc++-v3-4.6/include/tr1/cstdbool | 40 + .../libstdc++-v3-4.6/include/tr1/cstdint | 104 + .../libstdc++-v3-4.6/include/tr1/cstdio | 53 + .../libstdc++-v3-4.6/include/tr1/cstdlib | 72 + .../libstdc++-v3-4.6/include/tr1/ctgmath | 34 + .../libstdc++-v3-4.6/include/tr1/ctime | 34 + .../libstdc++-v3-4.6/include/tr1/ctype.h | 34 + .../libstdc++-v3-4.6/include/tr1/cwchar | 65 + .../libstdc++-v3-4.6/include/tr1/cwctype | 50 + .../include/tr1/ell_integral.tcc | 751 + .../include/tr1/exp_integral.tcc | 525 + .../libstdc++-v3-4.6/include/tr1/fenv.h | 34 + .../libstdc++-v3-4.6/include/tr1/float.h | 34 + .../libstdc++-v3-4.6/include/tr1/functional | 2149 + .../include/tr1/functional_hash.h | 196 + .../libstdc++-v3-4.6/include/tr1/gamma.tcc | 473 + .../libstdc++-v3-4.6/include/tr1/hashtable.h | 1181 + .../include/tr1/hashtable_policy.h | 783 + .../include/tr1/hypergeometric.tcc | 779 + .../libstdc++-v3-4.6/include/tr1/inttypes.h | 34 + .../include/tr1/legendre_function.tcc | 306 + .../libstdc++-v3-4.6/include/tr1/limits.h | 34 + .../libstdc++-v3-4.6/include/tr1/math.h | 186 + .../libstdc++-v3-4.6/include/tr1/memory | 53 + .../include/tr1/modified_bessel_func.tcc | 437 + .../include/tr1/poly_hermite.tcc | 125 + .../include/tr1/poly_laguerre.tcc | 329 + .../libstdc++-v3-4.6/include/tr1/random | 50 + .../libstdc++-v3-4.6/include/tr1/random.h | 2417 + .../libstdc++-v3-4.6/include/tr1/random.tcc | 1721 + .../libstdc++-v3-4.6/include/tr1/regex | 2730 + .../include/tr1/riemann_zeta.tcc | 436 + .../libstdc++-v3-4.6/include/tr1/shared_ptr.h | 1179 + .../include/tr1/special_function_util.h | 144 + .../libstdc++-v3-4.6/include/tr1/stdarg.h | 34 + .../libstdc++-v3-4.6/include/tr1/stdbool.h | 34 + .../libstdc++-v3-4.6/include/tr1/stdint.h | 34 + .../libstdc++-v3-4.6/include/tr1/stdio.h | 34 + .../libstdc++-v3-4.6/include/tr1/stdlib.h | 52 + .../libstdc++-v3-4.6/include/tr1/tgmath.h | 34 + .../libstdc++-v3-4.6/include/tr1/tuple | 426 + .../libstdc++-v3-4.6/include/tr1/type_traits | 689 + .../include/tr1/unordered_map | 44 + .../include/tr1/unordered_map.h | 278 + .../include/tr1/unordered_set | 44 + .../include/tr1/unordered_set.h | 267 + .../libstdc++-v3-4.6/include/tr1/utility | 109 + .../libstdc++-v3-4.6/include/tr1/wchar.h | 34 + .../libstdc++-v3-4.6/include/tr1/wctype.h | 34 + .../libstdc++-v3-4.6/libsupc++/Makefile.am | 219 + .../libstdc++-v3-4.6/libsupc++/Makefile.in | 811 + .../libsupc++/array_type_info.cc | 33 + .../libstdc++-v3-4.6/libsupc++/atexit_arm.cc | 39 + .../libstdc++-v3-4.6/libsupc++/bad_alloc.cc | 34 + .../libstdc++-v3-4.6/libsupc++/bad_cast.cc | 37 + .../libstdc++-v3-4.6/libsupc++/bad_typeid.cc | 37 + .../libsupc++/class_type_info.cc | 111 + .../libstdc++-v3-4.6/libsupc++/cxxabi.h | 626 + .../libsupc++/cxxabi_forced.h | 60 + .../libstdc++-v3-4.6/libsupc++/del_op.cc | 48 + .../libstdc++-v3-4.6/libsupc++/del_opnt.cc | 36 + .../libstdc++-v3-4.6/libsupc++/del_opv.cc | 33 + .../libstdc++-v3-4.6/libsupc++/del_opvnt.cc | 33 + .../libstdc++-v3-4.6/libsupc++/dyncast.cc | 86 + .../libstdc++-v3-4.6/libsupc++/eh_alloc.cc | 220 + .../libstdc++-v3-4.6/libsupc++/eh_arm.cc | 182 + .../libsupc++/eh_aux_runtime.cc | 51 + .../libstdc++-v3-4.6/libsupc++/eh_call.cc | 158 + .../libstdc++-v3-4.6/libsupc++/eh_catch.cc | 138 + .../libsupc++/eh_exception.cc | 52 + .../libstdc++-v3-4.6/libsupc++/eh_globals.cc | 160 + .../libsupc++/eh_personality.cc | 789 + .../libstdc++-v3-4.6/libsupc++/eh_ptr.cc | 224 + .../libsupc++/eh_term_handler.cc | 46 + .../libsupc++/eh_terminate.cc | 80 + .../libstdc++-v3-4.6/libsupc++/eh_throw.cc | 117 + .../libstdc++-v3-4.6/libsupc++/eh_type.cc | 54 + .../libsupc++/eh_unex_handler.cc | 29 + .../libsupc++/enum_type_info.cc | 33 + .../libstdc++-v3-4.6/libsupc++/exception | 158 + .../libsupc++/exception_defines.h | 47 + .../libsupc++/exception_ptr.h | 191 + .../libsupc++/function_type_info.cc | 39 + .../libsupc++/fundamental_type_info.cc | 36 + .../libstdc++-v3-4.6/libsupc++/guard.cc | 393 + .../libstdc++-v3-4.6/libsupc++/guard_error.cc | 31 + .../libstdc++-v3-4.6/libsupc++/hash_bytes.cc | 189 + .../libstdc++-v3-4.6/libsupc++/hash_bytes.h | 59 + .../libsupc++/initializer_list | 102 + .../libsupc++/nested_exception.cc | 31 + .../libsupc++/nested_exception.h | 166 + .../contrib/libstdc++-v3-4.6/libsupc++/new | 114 + .../libstdc++-v3-4.6/libsupc++/new_handler.cc | 41 + .../libstdc++-v3-4.6/libsupc++/new_op.cc | 67 + .../libstdc++-v3-4.6/libsupc++/new_opnt.cc | 63 + .../libstdc++-v3-4.6/libsupc++/new_opv.cc | 33 + .../libstdc++-v3-4.6/libsupc++/new_opvnt.cc | 33 + .../libsupc++/pbase_type_info.cc | 66 + .../libsupc++/pmem_type_info.cc | 49 + .../libsupc++/pointer_type_info.cc | 56 + .../libstdc++-v3-4.6/libsupc++/pure.cc | 51 + .../libsupc++/si_class_type_info.cc | 85 + .../libstdc++-v3-4.6/libsupc++/tinfo.cc | 81 + .../libstdc++-v3-4.6/libsupc++/tinfo.h | 183 + .../libstdc++-v3-4.6/libsupc++/tinfo2.cc | 45 + .../libstdc++-v3-4.6/libsupc++/typeinfo | 224 + .../libstdc++-v3-4.6/libsupc++/unwind-cxx.h | 419 + .../contrib/libstdc++-v3-4.6/libsupc++/vec.cc | 516 + .../libsupc++/vmi_class_type_info.cc | 391 + .../libstdc++-v3-4.6/libsupc++/vterminate.cc | 101 + .../contrib/libstdc++-v3-4.6/linkage.m4 | 399 + .../contrib/libstdc++-v3-4.6/po/Makefile.am | 85 + .../contrib/libstdc++-v3-4.6/po/Makefile.in | 496 + .../contrib/libstdc++-v3-4.6/po/POTFILES.in | 24 + .../contrib/libstdc++-v3-4.6/po/de.po | 31 + .../contrib/libstdc++-v3-4.6/po/fr.po | 31 + .../contrib/libstdc++-v3-4.6/po/libstdc++.pot | 56 + .../libstdc++-v3-4.6/po/string_literals.cc | 33 + .../libstdc++-v3-4.6/python/Makefile.am | 60 + .../libstdc++-v3-4.6/python/Makefile.in | 514 + .../contrib/libstdc++-v3-4.6/python/hook.in | 60 + .../python/libstdcxx/__init__.py | 1 + .../python/libstdcxx/v6/__init__.py | 1 + .../python/libstdcxx/v6/printers.py | 802 + .../libstdc++-v3-4.6/scripts/check_compile | 56 + .../scripts/check_performance | 95 + .../scripts/create_testsuite_files | 54 + .../scripts/extract_symvers.in | 67 + .../scripts/extract_symvers.pl | 127 + .../scripts/gen_bind_includers.pl | 30 + .../libstdc++-v3-4.6/scripts/gen_includers.pl | 126 + .../scripts/gen_includers2.pl | 31 + .../libstdc++-v3-4.6/scripts/make_exports.pl | 144 + .../libstdc++-v3-4.6/scripts/make_graph.py | 576 + .../libstdc++-v3-4.6/scripts/make_graphs.py | 160 + .../libstdc++-v3-4.6/scripts/run_doxygen | 402 + .../scripts/testsuite_flags.in | 81 + .../contrib/libstdc++-v3-4.6/src/Makefile.am | 483 + .../contrib/libstdc++-v3-4.6/src/Makefile.in | 1026 + .../libstdc++-v3-4.6/src/allocator-inst.cc | 40 + .../contrib/libstdc++-v3-4.6/src/atomic.cc | 146 + .../libstdc++-v3-4.6/src/bitmap_allocator.cc | 128 + .../contrib/libstdc++-v3-4.6/src/chrono.cc | 83 + .../contrib/libstdc++-v3-4.6/src/codecvt.cc | 151 + .../src/compatibility-c++0x.cc | 84 + .../src/compatibility-debug_list-2.cc | 28 + .../src/compatibility-debug_list.cc | 28 + .../src/compatibility-ldbl.cc | 87 + .../src/compatibility-list-2.cc | 111 + .../src/compatibility-list.cc | 146 + .../src/compatibility-parallel_list-2.cc | 28 + .../src/compatibility-parallel_list.cc | 28 + .../libstdc++-v3-4.6/src/compatibility.cc | 554 + .../libstdc++-v3-4.6/src/complex_io.cc | 113 + .../libstdc++-v3-4.6/src/concept-inst.cc | 111 + .../src/condition_variable.cc | 93 + .../contrib/libstdc++-v3-4.6/src/ctype.cc | 139 + .../contrib/libstdc++-v3-4.6/src/debug.cc | 792 + .../contrib/libstdc++-v3-4.6/src/ext-inst.cc | 66 + .../libstdc++-v3-4.6/src/fstream-inst.cc | 49 + .../libstdc++-v3-4.6/src/functexcept.cc | 194 + .../libstdc++-v3-4.6/src/functional.cc | 35 + .../contrib/libstdc++-v3-4.6/src/future.cc | 112 + .../libstdc++-v3-4.6/src/globals_io.cc | 108 + .../src/hash-long-double-aux.cc | 50 + .../libstdc++-v3-4.6/src/hash_c++0x.cc | 34 + .../contrib/libstdc++-v3-4.6/src/hash_tr1.cc | 58 + .../libstdc++-v3-4.6/src/hashtable-aux.cc | 95 + .../libstdc++-v3-4.6/src/hashtable_c++0x.cc | 34 + .../libstdc++-v3-4.6/src/hashtable_tr1.cc | 33 + .../contrib/libstdc++-v3-4.6/src/ios-inst.cc | 43 + .../contrib/libstdc++-v3-4.6/src/ios.cc | 193 + .../libstdc++-v3-4.6/src/ios_failure.cc | 47 + .../contrib/libstdc++-v3-4.6/src/ios_init.cc | 205 + .../libstdc++-v3-4.6/src/ios_locale.cc | 60 + .../libstdc++-v3-4.6/src/iostream-inst.cc | 49 + .../libstdc++-v3-4.6/src/istream-inst.cc | 115 + .../contrib/libstdc++-v3-4.6/src/istream.cc | 690 + .../contrib/libstdc++-v3-4.6/src/limits.cc | 551 + .../contrib/libstdc++-v3-4.6/src/list.cc | 144 + .../libstdc++-v3-4.6/src/locale-inst.cc | 364 + .../contrib/libstdc++-v3-4.6/src/locale.cc | 444 + .../libstdc++-v3-4.6/src/locale_facets.cc | 118 + .../libstdc++-v3-4.6/src/locale_init.cc | 474 + .../libstdc++-v3-4.6/src/localename.cc | 354 + .../libstdc++-v3-4.6/src/math_stubs_float.cc | 224 + .../src/math_stubs_long_double.cc | 224 + .../contrib/libstdc++-v3-4.6/src/misc-inst.cc | 82 + .../libstdc++-v3-4.6/src/mt_allocator.cc | 818 + .../contrib/libstdc++-v3-4.6/src/mutex.cc | 121 + .../libstdc++-v3-4.6/src/ostream-inst.cc | 118 + .../libstdc++-v3-4.6/src/parallel_settings.cc | 42 + .../libstdc++-v3-4.6/src/placeholders.cc | 67 + .../libstdc++-v3-4.6/src/pool_allocator.cc | 177 + .../contrib/libstdc++-v3-4.6/src/regex.cc | 38 + .../libstdc++-v3-4.6/src/shared_ptr.cc | 39 + .../libstdc++-v3-4.6/src/sstream-inst.cc | 49 + .../contrib/libstdc++-v3-4.6/src/stdexcept.cc | 91 + .../libstdc++-v3-4.6/src/streambuf-inst.cc | 64 + .../contrib/libstdc++-v3-4.6/src/streambuf.cc | 117 + .../libstdc++-v3-4.6/src/string-inst.cc | 89 + .../contrib/libstdc++-v3-4.6/src/strstream.cc | 418 + .../libstdc++-v3-4.6/src/system_error.cc | 106 + .../contrib/libstdc++-v3-4.6/src/thread.cc | 104 + .../contrib/libstdc++-v3-4.6/src/tree.cc | 454 + .../contrib/libstdc++-v3-4.6/src/valarray.cc | 109 + .../libstdc++-v3-4.6/src/wlocale-inst.cc | 76 + .../libstdc++-v3-4.6/src/wstring-inst.cc | 35 + l4/pkg/libsupc++-minimal/Control | 4 + l4/pkg/libsupc++-minimal/Makefile | 15 + l4/pkg/libsupc++/build/Makefile | 11 +- l4/pkg/libsupc++/build/Makefile-4.6 | 21 + l4/pkg/loader/server/src/Makefile | 2 +- l4/pkg/log/lib/src/Makefile | 1 - l4/pkg/lua/lib/build++/Makefile | 8 +- l4/pkg/lua/lib/build/Makefile | 8 +- l4/pkg/lxfuxlibc/include/lxfuxlc.h | 2 + l4/pkg/lxfuxlibc/lib/libc_be/ux.cc | 23 +- l4/pkg/lxfuxlibc/lib/src/lxfuxlc.c | 4 + l4/pkg/mag-gfx/include/geometry | 2 +- l4/pkg/mag/Control | 2 +- l4/pkg/mag/include/server/session | 9 + l4/pkg/mag/plugins/client_fb/Makefile | 1 - l4/pkg/mag/plugins/mag_client/mag_client.cc | 22 +- l4/pkg/mag/server/src/Makefile | 1 - l4/pkg/mag/server/src/main.cc | 9 +- l4/pkg/mag/server/src/user_state.cc | 2 + l4/pkg/mag/server/src/view_stack.cc | 9 +- l4/pkg/moe/Control | 2 +- l4/pkg/moe/server/libgc/Make.rules | 1 + .../server/libgc/include/private/gcconfig.h | 14 + l4/pkg/moe/server/src/Makefile | 15 +- l4/pkg/moe/server/src/boot_fs.cc | 48 +- l4/pkg/moe/server/src/dataspace.cc | 1 - l4/pkg/moe/server/src/dataspace_cont.cc | 4 +- l4/pkg/moe/server/src/gc_support.cc | 1 + l4/pkg/moe/server/src/globals.h | 2 +- l4/pkg/moe/server/src/loader.cc | 7 +- l4/pkg/moe/server/src/main.cc | 25 +- l4/pkg/moe/server/src/remote_mem.h | 17 +- l4/pkg/moe/server/src/vesa_fb.cc | 6 +- l4/pkg/ned/Control | 2 +- l4/pkg/ned/server/src/Makefile | 3 +- l4/pkg/ned/server/src/app_model.cc | 8 +- l4/pkg/ned/server/src/remote_mem.cc | 23 +- l4/pkg/ned/server/src/remote_mem.h | 4 - l4/pkg/ocaml/build/asmrun/Makefile | 1 - l4/pkg/ocaml/build/byterun/Make.rules | 1 - l4/pkg/ocaml/build/byterun/lib/Makefile | 1 - l4/pkg/python/interpreter/Makefile | 29 +- l4/pkg/python/lib/objs/Makefile | 1 - l4/pkg/scout-gfx/Control | 2 +- l4/pkg/scout-gfx/lib/Make.rules | 1 - l4/pkg/scout/lib/src/Make.rules | 3 +- l4/pkg/scout/mk/scout.mk | 1 - l4/pkg/sigma0/Control | 2 +- l4/pkg/sigma0/server/src/Makefile | 6 +- l4/pkg/sqlite/Control | 2 +- l4/pkg/sqlite/lib/README | 2 +- l4/pkg/sqlite/lib/build/Makefile | 2 +- l4/pkg/sqlite/lib/contrib/Makefile.am | 2 +- l4/pkg/sqlite/lib/contrib/Makefile.in | 3 +- l4/pkg/sqlite/lib/contrib/configure | 518 +- l4/pkg/sqlite/lib/contrib/configure.ac | 8 +- l4/pkg/sqlite/lib/contrib/shell.c | 169 +- l4/pkg/sqlite/lib/contrib/sqlite3.c | 7231 +- l4/pkg/sqlite/lib/contrib/sqlite3.h | 207 +- l4/pkg/sqlite/lib/contrib/sqlite3.pc | 2 +- l4/pkg/tlsf/lib/build/Makefile | 1 - l4/pkg/tmpfs/lib/src/fs.cc | 73 +- l4/pkg/uclibc-headers/Control | 3 + l4/pkg/uclibc-headers/Makefile | 55 + l4/pkg/uclibc-minimal/Control | 4 + l4/pkg/uclibc-minimal/Makefile | 6 + l4/pkg/uclibc-minimal/libc/Make.rules | 32 + l4/pkg/uclibc-minimal/libc/Makefile | 9 + l4/pkg/uclibc/Control | 6 +- l4/pkg/uclibc/Makefile | 5 - l4/pkg/uclibc/lib/Makefile | 5 +- .../lib/contrib/uclibc/include/features.h | 4 + .../uclibc/lib/contrib/uclibc/include/tls.h | 7 +- .../lib/contrib/uclibc/ldso/include/dl-defs.h | 2 +- .../lib/contrib/uclibc/ldso/include/dl-elf.h | 18 +- .../lib/contrib/uclibc/ldso/include/dl-hash.h | 20 +- .../contrib/uclibc/ldso/include/dl-syscall.h | 2 +- .../contrib/uclibc/ldso/include/ldsodefs.h | 2 +- .../lib/contrib/uclibc/ldso/ldso/Makefile.in | 1 + .../contrib/uclibc/ldso/ldso/arm/elfinterp.c | 17 +- .../uclibc/ldso/ldso/avr32/elfinterp.c | 13 +- .../uclibc/ldso/ldso/bfin/dl-syscalls.h | 12 +- .../contrib/uclibc/ldso/ldso/bfin/elfinterp.c | 18 +- .../contrib/uclibc/ldso/ldso/c6x/dl-debug.h | 49 + .../contrib/uclibc/ldso/ldso/c6x/dl-inlines.h | 91 + .../contrib/uclibc/ldso/ldso/c6x/dl-startup.h | 122 + .../uclibc/ldso/ldso/c6x/dl-syscalls.h | 25 + .../contrib/uclibc/ldso/ldso/c6x/dl-sysdep.h | 209 + .../contrib/uclibc/ldso/ldso/c6x/elfinterp.c | 296 + .../contrib/uclibc/ldso/ldso/c6x/resolve.S | 68 + .../contrib/uclibc/ldso/ldso/cris/elfinterp.c | 5 +- .../lib/contrib/uclibc/ldso/ldso/dl-elf.c | 50 +- .../contrib/uclibc/ldso/ldso/dl-elf.c.orig | 18 +- .../lib/contrib/uclibc/ldso/ldso/dl-hash.c | 27 +- .../lib/contrib/uclibc/ldso/ldso/dl-startup.c | 23 +- .../lib/contrib/uclibc/ldso/ldso/dl-tls.c | 4 + .../contrib/uclibc/ldso/ldso/i386/elfinterp.c | 18 +- .../lib/contrib/uclibc/ldso/ldso/ldso.c | 28 +- .../lib/contrib/uclibc/ldso/ldso/ldso.c.orig | 34 +- .../contrib/uclibc/ldso/ldso/m68k/elfinterp.c | 15 +- .../contrib/uclibc/ldso/ldso/mips/dl-sysdep.h | 2 +- .../contrib/uclibc/ldso/ldso/mips/elfinterp.c | 22 +- .../uclibc/ldso/ldso/powerpc/elfinterp.c | 20 +- .../contrib/uclibc/ldso/ldso/sh/elfinterp.c | 44 +- .../contrib/uclibc/ldso/ldso/sh64/elfinterp.c | 7 +- .../uclibc/ldso/ldso/sparc/elfinterp.c | 26 +- .../uclibc/ldso/ldso/x86_64/elfinterp.c | 22 +- .../uclibc/ldso/ldso/xtensa/elfinterp.c | 11 +- .../lib/contrib/uclibc/ldso/libdl/Makefile.in | 1 + .../lib/contrib/uclibc/ldso/libdl/libdl.c | 25 +- .../contrib/uclibc/ldso/libdl/libdl.c.orig | 6 +- .../contrib/uclibc/libc/misc/elf/dl-support.c | 1 + .../libc/misc/internals/__uClibc_main.c | 10 +- .../uclibc/libc/misc/internals/tempname.c | 2 +- .../libc/sysdeps/linux/arm/bits/mathdef.h | 2 + .../libc/sysdeps/linux/sparc/bits/mathdef.h | 2 + .../libpthread/include/bits/pthreadtypes.h | 1 - l4/pkg/uclibc/lib/libpthread/src/Makefile | 35 +- l4/pkg/uclibc/lib/libpthread/src/cancel.c | 2 +- l4/pkg/uclibc/lib/libpthread/src/descr.h | 3 +- l4/pkg/uclibc/lib/libpthread/src/errno-loc.c | 3 + l4/pkg/uclibc/lib/libpthread/src/internals.h | 9 +- l4/pkg/uclibc/lib/libpthread/src/join.c | 8 +- l4/pkg/uclibc/lib/libpthread/src/l4.cc | 1 + l4/pkg/uclibc/lib/libpthread/src/manager.cc | 104 +- l4/pkg/uclibc/lib/libpthread/src/pthread.c | 52 +- l4/pkg/uclibc/lib/libpthread/src/semaphore.c | 10 +- l4/pkg/uclibc/lib/libpthread/src/specific.c | 26 +- .../lib/libpthread/src/sysdeps/alpha/dl-tls.h | 29 + .../lib/libpthread/src/sysdeps/alpha/tls.h | 127 + .../lib/libpthread/src/sysdeps/arm/dl-tls.h | 29 + .../lib/libpthread/src/sysdeps/arm/tls.h | 159 + .../libpthread/src/sysdeps/generic/dl-tls.c | 899 + .../libpthread/src/sysdeps/generic/dl-tls.h | 2 + .../src/sysdeps/generic/libc-tls.cc | 289 + .../lib/libpthread/src/sysdeps/i386/dl-tls.h | 62 + .../libpthread/src/sysdeps/i386/i686/tls.h | 36 + .../lib/libpthread/src/sysdeps/i386/tls.h | 507 + .../lib/libpthread/src/sysdeps/mips/dl-tls.h | 46 + .../lib/libpthread/src/sysdeps/mips/tls.h | 181 + .../libpthread/src/sysdeps/powerpc/dl-tls.h | 49 + .../lib/libpthread/src/sysdeps/powerpc/tls.h | 217 + .../lib/libpthread/src/sysdeps/sh/dl-tls.h | 29 + .../lib/libpthread/src/sysdeps/sh/tls.h | 182 + .../lib/libpthread/src/sysdeps/sparc/dl-tls.h | 29 + .../lib/libpthread/src/sysdeps/sparc/tls.h | 182 + .../libpthread/src/sysdeps/x86_64/dl-tls.h | 29 + .../lib/libpthread/src/sysdeps/x86_64/tls.h | 438 + .../libc/stdlib/malloc-standard/malloc.h | 10 +- .../libc/sysdeps/linux/common/getdents.c | 2 +- .../ARCH-amd64/include/bits/uClibc_config.h | 291 + .../ARCH-arm/include/bits/uClibc_config.h | 291 + .../ARCH-ppc32/include/bits/uClibc_config.h | 290 + .../ARCH-sparc/include/bits/uClibc_config.h | 290 + .../uclibc/ARCH-sparc/include/linux/sockios.h | 0 .../ARCH-x86/include/bits/uClibc_config.h | 291 + l4/pkg/uclibc/lib/uclibc/Make.rules | 56 + l4/pkg/uclibc/lib/uclibc/Makefile | 6 + l4/pkg/uclibc/lib/uclibc/contrib_files.mk | 702 + l4/pkg/uclibc/lib/uclibc/make_rules.mk | 114 + l4/pkg/uclibc/lib/uclibc/make_vars.mk | 36 + l4/pkg/uclibc/lib/uclibc/src_rules.mk | 21 + l4/pkg/uclibc/lib/uclibc/target_headers.lst | 215 + l4/pkg/valgrind/Control | 1 - l4/pkg/valgrind/build/Makefile | 10 +- l4/pkg/valgrind/build/ext-checksums | 2 +- .../valgrind/src/valgrind-3.6.0-svn/AUTHORS | 15 +- .../src/valgrind-3.6.0-svn/Makefile.all.am | 8 +- .../src/valgrind-3.6.0-svn/Makefile.am | 18 +- .../src/valgrind-3.6.0-svn/Makefile.in | 32 +- .../src/valgrind-3.6.0-svn/Makefile.tool.am | 11 + .../src/valgrind-3.6.0-svn/Makefile.vex.am | 23 +- .../src/valgrind-3.6.0-svn/Makefile.vex.in | 206 +- l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS | 412 +- l4/pkg/valgrind/src/valgrind-3.6.0-svn/README | 21 +- .../valgrind/src/valgrind-3.6.0-svn/README.L4 | 5 + .../src/valgrind-3.6.0-svn/README.s390 | 35 + .../src/valgrind-3.6.0-svn/README_DEVELOPERS | 15 + .../src/valgrind-3.6.0-svn/VEX/Makefile-gcc | 35 +- .../VEX/auxprogs/genoffsets.c | 14 + .../VEX/priv/guest_amd64_defs.h | 9 +- .../VEX/priv/guest_amd64_helpers.c | 249 +- .../VEX/priv/guest_amd64_toIR.c | 646 +- .../VEX/priv/guest_arm_defs.h | 14 +- .../VEX/priv/guest_arm_helpers.c | 608 +- .../VEX/priv/guest_arm_toIR.c | 3692 +- .../VEX/priv/guest_generic_bb_to_IR.c | 641 +- .../VEX/priv/guest_generic_x87.c | 1 + .../VEX/priv/guest_ppc_helpers.c | 273 +- .../VEX/priv/guest_ppc_toIR.c | 2233 +- .../VEX/priv/guest_s390_defs.h | 214 + .../VEX/priv/guest_s390_helpers.c | 1205 + .../VEX/priv/guest_s390_toIR.c | 13055 +++ .../VEX/priv/guest_x86_defs.h | 4 +- .../VEX/priv/guest_x86_helpers.c | 47 +- .../VEX/priv/guest_x86_toIR.c | 141 +- .../VEX/priv/host_amd64_defs.c | 73 +- .../VEX/priv/host_amd64_defs.h | 9 +- .../VEX/priv/host_amd64_isel.c | 177 +- .../VEX/priv/host_arm_defs.c | 68 +- .../VEX/priv/host_arm_defs.h | 50 +- .../VEX/priv/host_arm_isel.c | 90 +- .../VEX/priv/host_generic_simd128.c | 48 + .../VEX/priv/host_generic_simd128.h | 2 + .../VEX/priv/host_generic_simd64.c | 303 +- .../VEX/priv/host_generic_simd64.h | 32 + .../VEX/priv/host_ppc_defs.c | 96 +- .../VEX/priv/host_ppc_defs.h | 31 +- .../VEX/priv/host_ppc_isel.c | 165 +- .../VEX/priv/host_s390_defs.c | 7149 ++ .../VEX/priv/host_s390_defs.h | 503 + .../VEX/priv/host_s390_disasm.c | 463 + .../VEX/priv/host_s390_disasm.h | 93 + .../VEX/priv/host_s390_isel.c | 2446 + .../VEX/priv/host_x86_isel.c | 33 + .../src/valgrind-3.6.0-svn/VEX/priv/ir_defs.c | 163 +- .../src/valgrind-3.6.0-svn/VEX/priv/ir_opt.c | 202 +- .../valgrind-3.6.0-svn/VEX/priv/main_main.c | 88 +- .../valgrind-3.6.0-svn/VEX/priv/main_util.c | 4 +- .../valgrind-3.6.0-svn/VEX/priv/main_util.h | 5 +- .../src/valgrind-3.6.0-svn/VEX/pub/libvex.h | 67 +- .../VEX/pub/libvex_basictypes.h | 22 +- .../VEX/pub/libvex_guest_amd64.h | 12 +- .../VEX/pub/libvex_guest_arm.h | 11 +- .../VEX/pub/libvex_guest_ppc32.h | 218 +- .../VEX/pub/libvex_guest_ppc64.h | 222 +- .../VEX/pub/libvex_guest_s390x.h | 174 + .../valgrind-3.6.0-svn/VEX/pub/libvex_ir.h | 97 +- .../VEX/pub/libvex_s390x_common.h | 89 + .../src/valgrind-3.6.0-svn/VEX/test_main.c | 10 +- .../src/valgrind-3.6.0-svn/aclocal.m4 | 158 - .../valgrind-3.6.0-svn/auxprogs/Makefile.in | 15 +- .../valgrind-3.6.0-svn/cachegrind/Makefile.am | 3 +- .../valgrind-3.6.0-svn/cachegrind/Makefile.in | 67 +- .../valgrind-3.6.0-svn/cachegrind/cg-arm.c | 6 +- .../valgrind-3.6.0-svn/cachegrind/cg-ppc32.c | 6 +- .../valgrind-3.6.0-svn/cachegrind/cg-ppc64.c | 6 +- .../valgrind-3.6.0-svn/cachegrind/cg-s390x.c | 73 + .../cachegrind/cg-x86-amd64.c | 188 +- .../valgrind-3.6.0-svn/cachegrind/cg_arch.h | 10 +- .../cachegrind/cg_branchpred.c | 2 + .../valgrind-3.6.0-svn/cachegrind/cg_diff.in | 13 +- .../valgrind-3.6.0-svn/cachegrind/cg_main.c | 349 +- .../valgrind-3.6.0-svn/cachegrind/cg_sim.c | 8 +- .../cachegrind/docs/cg-manual.xml | 141 +- .../cachegrind/tests/Makefile.in | 15 +- .../cachegrind/tests/chdir.stderr.exp | 14 +- .../cachegrind/tests/dlclose.stderr.exp | 14 +- .../cachegrind/tests/filter_stderr | 15 +- .../cachegrind/tests/notpower2.stderr.exp | 14 +- .../cachegrind/tests/notpower2.vgtest | 2 +- .../cachegrind/tests/wrap5.stderr.exp | 14 +- .../cachegrind/tests/x86/Makefile.in | 15 +- .../tests/x86/fpu-28-108.stderr.exp | 14 +- .../valgrind-3.6.0-svn/callgrind/Makefile.am | 3 +- .../valgrind-3.6.0-svn/callgrind/Makefile.in | 68 +- .../src/valgrind-3.6.0-svn/callgrind/bbcc.c | 11 +- .../valgrind-3.6.0-svn/callgrind/callgrind.h | 48 +- .../callgrind/callgrind_annotate.in | 30 +- .../valgrind-3.6.0-svn/callgrind/callstack.c | 8 +- .../valgrind-3.6.0-svn/callgrind/command.c | 2 +- .../src/valgrind-3.6.0-svn/callgrind/costs.c | 2 +- .../callgrind/docs/cl-format.xml | 6 +- .../callgrind/docs/cl-manual.xml | 46 +- .../src/valgrind-3.6.0-svn/callgrind/dump.c | 30 +- .../src/valgrind-3.6.0-svn/callgrind/global.h | 7 +- .../src/valgrind-3.6.0-svn/callgrind/jumps.c | 2 + .../src/valgrind-3.6.0-svn/callgrind/main.c | 60 +- .../src/valgrind-3.6.0-svn/callgrind/sim.c | 286 +- .../callgrind/tests/Makefile.in | 15 +- .../callgrind/tests/filter_stderr | 14 +- .../tests/notpower2-hwpref.stderr.exp | 16 +- .../callgrind/tests/notpower2-hwpref.vgtest | 2 +- .../callgrind/tests/notpower2-use.stderr.exp | 16 +- .../callgrind/tests/notpower2-use.vgtest | 2 +- .../callgrind/tests/notpower2-wb.stderr.exp | 16 +- .../callgrind/tests/notpower2-wb.vgtest | 2 +- .../callgrind/tests/notpower2.stderr.exp | 16 +- .../callgrind/tests/notpower2.vgtest | 2 +- .../callgrind/tests/simwork-both.stderr.exp | 16 +- .../callgrind/tests/simwork-cache.stderr.exp | 16 +- .../callgrind/tests/simwork1.stderr.exp | 16 +- .../callgrind/tests/simwork2.stderr.exp | 16 +- .../callgrind/tests/simwork3.stderr.exp | 16 +- .../callgrind/tests/threads-use.stderr.exp | 16 +- .../valgrind-3.6.0-svn/callgrind/threads.c | 2 +- .../src/valgrind-3.6.0-svn/config.h.in | 29 +- .../valgrind/src/valgrind-3.6.0-svn/configure | 1627 +- .../src/valgrind-3.6.0-svn/configure.in | 369 +- .../valgrind-3.6.0-svn/coregrind/Makefile.am | 148 + .../valgrind-3.6.0-svn/coregrind/Makefile.in | 1113 +- .../coregrind/fixup_macho_loadcmds.c | 609 + .../coregrind/l4re/__c_main.c | 26 +- .../coregrind/l4re/fd_names.cpp | 1 - .../coregrind/l4re/rm_init.cpp | 2 + .../coregrind/l4re/vcap.cpp | 25 +- .../coregrind/l4re_trampoline.c | 1 + .../coregrind/launcher-linux.c | 7 +- .../coregrind/link_tool_exe_darwin.in | 29 +- .../coregrind/link_tool_exe_l4re.in | 2 +- .../coregrind/m_aspacemgr/aspacemgr-common.c | 12 +- .../coregrind/m_aspacemgr/aspacemgr-l4re.c | 195 +- .../coregrind/m_aspacemgr/aspacemgr-linux.c | 45 +- .../coregrind/m_coredump/coredump-elf.c | 31 +- .../coregrind/m_coredump/coredump-macho.c | 1 + .../valgrind-3.6.0-svn/coregrind/m_debugger.c | 76 +- .../coregrind/m_debuginfo/d3basics.c | 3 + .../coregrind/m_debuginfo/debuginfo.c | 172 +- .../coregrind/m_debuginfo/priv_d3basics.h | 2 + .../coregrind/m_debuginfo/priv_storage.h | 52 +- .../coregrind/m_debuginfo/readdwarf.c | 207 +- .../coregrind/m_debuginfo/readdwarf3.c | 85 +- .../coregrind/m_debuginfo/readelf.c | 244 +- .../coregrind/m_debuginfo/readpdb.c | 8 +- .../coregrind/m_debuginfo/readstabs.c | 3 - .../coregrind/m_debuginfo/storage.c | 13 + .../coregrind/m_debuginfo/tytypes.c | 2 + .../valgrind-3.6.0-svn/coregrind/m_debuglog.c | 50 +- .../coregrind/m_dispatch/dispatch-arm-linux.S | 4 +- .../m_dispatch/dispatch-ppc64-linux.S | 4 +- .../m_dispatch/dispatch-s390x-linux.S | 397 + .../valgrind-3.6.0-svn/coregrind/m_errormgr.c | 72 +- .../coregrind/m_execontext.c | 1 + .../m_gdbserver/32bit-core-valgrind-s1.xml | 65 + .../m_gdbserver/32bit-core-valgrind-s2.xml | 65 + .../coregrind/m_gdbserver/32bit-core.xml | 65 + .../m_gdbserver/32bit-linux-valgrind-s1.xml | 11 + .../m_gdbserver/32bit-linux-valgrind-s2.xml | 11 + .../coregrind/m_gdbserver/32bit-linux.xml | 11 + .../m_gdbserver/32bit-sse-valgrind-s1.xml | 52 + .../m_gdbserver/32bit-sse-valgrind-s2.xml | 52 + .../coregrind/m_gdbserver/32bit-sse.xml | 52 + .../m_gdbserver/64bit-core-valgrind-s1.xml | 73 + .../m_gdbserver/64bit-core-valgrind-s2.xml | 73 + .../coregrind/m_gdbserver/64bit-core.xml | 73 + .../m_gdbserver/64bit-linux-valgrind-s1.xml | 11 + .../m_gdbserver/64bit-linux-valgrind-s2.xml | 11 + .../coregrind/m_gdbserver/64bit-linux.xml | 11 + .../m_gdbserver/64bit-sse-valgrind-s1.xml | 60 + .../m_gdbserver/64bit-sse-valgrind-s2.xml | 60 + .../coregrind/m_gdbserver/64bit-sse.xml | 60 + .../coregrind/m_gdbserver/README_DEVELOPERS | 433 + .../m_gdbserver/amd64-coresse-valgrind.xml | 19 + .../m_gdbserver/amd64-linux-valgrind.xml | 23 + .../m_gdbserver/arm-core-valgrind-s1.xml | 31 + .../m_gdbserver/arm-core-valgrind-s2.xml | 31 + .../coregrind/m_gdbserver/arm-core.xml | 31 + .../m_gdbserver/arm-vfpv3-valgrind-s1.xml | 44 + .../m_gdbserver/arm-vfpv3-valgrind-s2.xml | 44 + .../coregrind/m_gdbserver/arm-vfpv3.xml | 44 + .../m_gdbserver/arm-with-vfpv3-valgrind.xml | 16 + .../coregrind/m_gdbserver/arm-with-vfpv3.xml | 12 + .../coregrind/m_gdbserver/gdb/signals.h | 238 + .../m_gdbserver/i386-coresse-valgrind.xml | 19 + .../m_gdbserver/i386-linux-valgrind.xml | 23 + .../coregrind/m_gdbserver/inferiors.c | 227 + .../coregrind/m_gdbserver/m_gdbserver.c | 1312 + .../m_gdbserver/power-altivec-valgrind-s1.xml | 57 + .../m_gdbserver/power-altivec-valgrind-s2.xml | 57 + .../coregrind/m_gdbserver/power-altivec.xml | 57 + .../coregrind/m_gdbserver/power-core.xml | 49 + .../m_gdbserver/power-fpu-valgrind-s1.xml | 44 + .../m_gdbserver/power-fpu-valgrind-s2.xml | 44 + .../coregrind/m_gdbserver/power-fpu.xml | 44 + .../m_gdbserver/power-linux-valgrind-s1.xml | 12 + .../m_gdbserver/power-linux-valgrind-s2.xml | 12 + .../coregrind/m_gdbserver/power-linux.xml | 12 + .../m_gdbserver/power64-core-valgrind-s1.xml | 49 + .../m_gdbserver/power64-core-valgrind-s2.xml | 49 + .../coregrind/m_gdbserver/power64-core.xml | 49 + .../m_gdbserver/power64-linux-valgrind-s1.xml | 12 + .../m_gdbserver/power64-linux-valgrind-s2.xml | 12 + .../coregrind/m_gdbserver/power64-linux.xml | 12 + .../powerpc-altivec32l-valgrind.xml | 27 + .../m_gdbserver/powerpc-altivec32l.xml | 19 + .../powerpc-altivec64l-valgrind.xml | 27 + .../m_gdbserver/powerpc-altivec64l.xml | 19 + .../coregrind/m_gdbserver/regcache.c | 263 + .../coregrind/m_gdbserver/regcache.h | 80 + .../coregrind/m_gdbserver/regdef.h | 47 + .../coregrind/m_gdbserver/remote-utils.c | 1038 + .../coregrind/m_gdbserver/server.c | 979 + .../coregrind/m_gdbserver/server.h | 383 + .../coregrind/m_gdbserver/signals.c | 744 + .../coregrind/m_gdbserver/target.c | 121 + .../coregrind/m_gdbserver/target.h | 176 + .../coregrind/m_gdbserver/utils.c | 88 + .../m_gdbserver/valgrind-low-amd64.c | 306 + .../coregrind/m_gdbserver/valgrind-low-arm.c | 297 + .../m_gdbserver/valgrind-low-ppc32.c | 343 + .../m_gdbserver/valgrind-low-ppc64.c | 339 + .../m_gdbserver/valgrind-low-s390x.c | 205 + .../coregrind/m_gdbserver/valgrind-low-x86.c | 276 + .../coregrind/m_gdbserver/valgrind-low.c | 639 + .../coregrind/m_gdbserver/valgrind_low.h | 91 + .../coregrind/m_gdbserver/version.c | 2 + .../coregrind/m_initimg/initimg-darwin.c | 1 + .../coregrind/m_initimg/initimg-l4re.c | 4 + .../coregrind/m_initimg/initimg-linux.c | 32 +- .../coregrind/m_initimg/initimg-pathscan.c | 1 - .../coregrind/m_libcassert.c | 21 +- .../valgrind-3.6.0-svn/coregrind/m_libcbase.c | 140 + .../valgrind-3.6.0-svn/coregrind/m_libcfile.c | 58 +- .../coregrind/m_libcprint.c | 15 +- .../valgrind-3.6.0-svn/coregrind/m_libcproc.c | 24 +- .../coregrind/m_libcsetjmp.c | 276 + .../valgrind-3.6.0-svn/coregrind/m_machine.c | 439 +- .../src/valgrind-3.6.0-svn/coregrind/m_main.c | 124 +- .../coregrind/m_mallocfree.c | 99 +- .../valgrind-3.6.0-svn/coregrind/m_options.c | 59 +- .../valgrind-3.6.0-svn/coregrind/m_redir.c | 28 +- .../m_replacemalloc/vg_replace_malloc.c | 8 +- .../coregrind/m_scheduler/scheduler.c | 140 +- .../m_sigframe/sigframe-amd64-darwin.c | 1 + .../m_sigframe/sigframe-amd64-linux.c | 1 + .../coregrind/m_sigframe/sigframe-arm-linux.c | 1 + .../m_sigframe/sigframe-ppc32-linux.c | 1 + .../m_sigframe/sigframe-ppc64-linux.c | 5 +- .../m_sigframe/sigframe-s390x-linux.c | 571 + .../m_sigframe/sigframe-x86-darwin.c | 1 + .../coregrind/m_sigframe/sigframe-x86-linux.c | 1 + .../valgrind-3.6.0-svn/coregrind/m_signals.c | 105 +- .../coregrind/m_stacktrace.c | 91 +- .../valgrind-3.6.0-svn/coregrind/m_syscall.c | 63 + .../coregrind/m_syswrap/priv_syswrap-darwin.h | 6 +- .../coregrind/m_syswrap/priv_syswrap-linux.h | 1 + .../coregrind/m_syswrap/priv_types_n_macros.h | 2 +- .../coregrind/m_syswrap/syscall-s390x-linux.S | 172 + .../coregrind/m_syswrap/syswrap-aix5.c | 10 + .../m_syswrap/syswrap-amd64-darwin.c | 1 + .../coregrind/m_syswrap/syswrap-amd64-linux.c | 3 +- .../coregrind/m_syswrap/syswrap-arm-linux.c | 136 +- .../coregrind/m_syswrap/syswrap-darwin.c | 111 +- .../coregrind/m_syswrap/syswrap-generic.c | 84 +- .../coregrind/m_syswrap/syswrap-l4re.c | 1 + .../m_syswrap/syswrap-linux-variants.c | 1 + .../coregrind/m_syswrap/syswrap-linux.c | 68 +- .../coregrind/m_syswrap/syswrap-main.c | 95 +- .../coregrind/m_syswrap/syswrap-ppc32-linux.c | 13 +- .../coregrind/m_syswrap/syswrap-ppc64-linux.c | 11 +- .../coregrind/m_syswrap/syswrap-s390x-linux.c | 1528 + .../coregrind/m_syswrap/syswrap-x86-darwin.c | 1 + .../coregrind/m_syswrap/syswrap-x86-l4re.c | 175 +- .../coregrind/m_syswrap/syswrap-x86-linux.c | 3 +- .../coregrind/m_threadstate.c | 1 + .../coregrind/m_trampoline.S | 55 + .../coregrind/m_translate.c | 64 +- .../valgrind-3.6.0-svn/coregrind/m_transtab.c | 5 +- .../valgrind-3.6.0-svn/coregrind/m_ume/elf.c | 5 +- .../coregrind/pub_core_aspacemgr.h | 16 +- .../coregrind/pub_core_basics.h | 10 +- .../coregrind/pub_core_debuginfo.h | 6 +- .../coregrind/pub_core_errormgr.h | 9 +- .../coregrind/pub_core_gdbserver.h | 194 + .../coregrind/pub_core_libcassert.h | 4 +- .../coregrind/pub_core_libcsetjmp.h | 49 + .../coregrind/pub_core_machine.h | 18 + .../coregrind/pub_core_mallocfree.h | 3 +- .../coregrind/pub_core_options.h | 44 +- .../coregrind/pub_core_scheduler.h | 8 + .../coregrind/pub_core_syscall.h | 2 + .../coregrind/pub_core_threadstate.h | 6 +- .../coregrind/pub_core_trampoline.h | 6 + .../coregrind/pub_core_transtab_asm.h | 13 +- .../coregrind/vg_preloaded.c | 15 +- .../src/valgrind-3.6.0-svn/coregrind/vgdb.c | 4399 + .../src/valgrind-3.6.0-svn/darwin10-drd.supp | 156 +- .../src/valgrind-3.6.0-svn/darwin10.supp | 36 +- .../src/valgrind-3.6.0-svn/darwin9.supp | 17 + .../src/valgrind-3.6.0-svn/docs/Makefile.in | 7 +- .../docs/internals/release-HOWTO.txt | 16 +- .../src/valgrind-3.6.0-svn/docs/xml/FAQ.xml | 5 +- .../docs/xml/manual-core-adv.xml | 23 +- .../docs/xml/manual-core.xml | 1293 +- .../docs/xml/manual-intro.xml | 6 + .../valgrind-3.6.0-svn/docs/xml/manual.xml | 4 +- .../docs/xml/quick-start-guide.xml | 3 +- .../docs/xml/vg-entities.xml | 6 +- .../src/valgrind-3.6.0-svn/drd/Makefile.am | 6 + .../src/valgrind-3.6.0-svn/drd/Makefile.in | 88 +- .../src/valgrind-3.6.0-svn/drd/TODO.txt | 36 - .../drd/docs/drd-manual.xml | 220 +- .../valgrind/src/valgrind-3.6.0-svn/drd/drd.h | 304 +- .../src/valgrind-3.6.0-svn/drd/drd_barrier.c | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_barrier.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_basics.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_bitmap.c | 8 +- .../src/valgrind-3.6.0-svn/drd/drd_bitmap.h | 9 +- .../valgrind-3.6.0-svn/drd/drd_bitmap2_node.c | 30 +- .../valgrind-3.6.0-svn/drd/drd_clientobj.c | 6 +- .../valgrind-3.6.0-svn/drd/drd_clientobj.h | 5 +- .../valgrind-3.6.0-svn/drd/drd_clientreq.c | 58 +- .../valgrind-3.6.0-svn/drd/drd_clientreq.h | 6 +- .../src/valgrind-3.6.0-svn/drd/drd_cond.c | 35 +- .../src/valgrind-3.6.0-svn/drd/drd_cond.h | 4 +- .../drd/drd_darwin_intercepts.c | 55 + .../src/valgrind-3.6.0-svn/drd/drd_error.c | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_error.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_hb.c | 36 +- .../src/valgrind-3.6.0-svn/drd/drd_hb.h | 4 +- .../valgrind-3.6.0-svn/drd/drd_load_store.c | 14 +- .../valgrind-3.6.0-svn/drd/drd_load_store.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_main.c | 180 +- .../drd/drd_malloc_wrappers.c | 20 +- .../drd/drd_malloc_wrappers.h | 6 +- .../src/valgrind-3.6.0-svn/drd/drd_mutex.c | 6 +- .../src/valgrind-3.6.0-svn/drd/drd_mutex.h | 4 +- .../drd/drd_pthread_intercepts.c | 518 +- .../drd/drd_qtcore_intercepts.c | 78 +- .../src/valgrind-3.6.0-svn/drd/drd_rwlock.c | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_rwlock.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_segment.c | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_segment.h | 4 +- .../valgrind-3.6.0-svn/drd/drd_semaphore.c | 23 +- .../valgrind-3.6.0-svn/drd/drd_semaphore.h | 4 +- .../drd/drd_strmem_intercepts.c | 2 +- .../valgrind-3.6.0-svn/drd/drd_suppression.c | 14 +- .../valgrind-3.6.0-svn/drd/drd_suppression.h | 2 +- .../src/valgrind-3.6.0-svn/drd/drd_thread.c | 71 +- .../src/valgrind-3.6.0-svn/drd/drd_thread.h | 12 +- .../drd/drd_thread_bitmap.h | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_vc.c | 4 +- .../src/valgrind-3.6.0-svn/drd/drd_vc.h | 4 +- .../valgrind-3.6.0-svn/drd/pub_drd_bitmap.h | 4 +- .../download-and-build-ppc-crosscompiler | 2 +- .../valgrind-3.6.0-svn/drd/tests/Makefile.am | 57 +- .../valgrind-3.6.0-svn/drd/tests/Makefile.in | 269 +- .../drd/tests/annotate_barrier.stderr.exp | 24 +- .../drd/tests/annotate_hb_err.c | 26 +- .../drd/tests/annotate_hb_err.stderr.exp | 19 +- .../drd/tests/annotate_hb_race.c | 6 +- .../drd/tests/annotate_ignore_rw.c | 3 +- .../drd/tests/annotate_smart_pointer.cpp | 4 +- .../drd/tests/annotate_static.cpp | 11 + .../drd/tests/circular_buffer.c | 12 +- .../drd/tests/custom_alloc.c | 2 +- .../drd/tests/custom_alloc_fiw.stderr.exp | 12 + .../drd/tests/custom_alloc_fiw.vgtest | 2 + .../drd/tests/filter_stderr | 1 + .../drd/tests/free_is_write.c | 70 + .../drd/tests/free_is_write.stderr.exp | 4 + .../drd/tests/free_is_write.vgtest | 4 + .../drd/tests/free_is_write2.stderr.exp | 4 + .../drd/tests/free_is_write2.vgtest | 4 + .../drd/tests/memory_allocation.c | 2 +- .../drd/tests/pth_detached.c | 41 +- .../drd/tests/pth_detached3.c | 29 + .../drd/tests/pth_detached3.stderr.exp1 | 12 + .../drd/tests/pth_detached3.stderr.exp2 | 14 + .../drd/tests/pth_detached3.vgtest | 2 + .../drd/tests/pth_inconsistent_cond_wait.c | 12 +- .../drd/tests/read_and_free_race.stderr.exp | 14 + .../drd/tests/read_and_free_race.vgtest | 2 + .../drd/tests/rwlock_race.c | 6 +- .../drd/tests/rwlock_type_checking.stderr.exp | 6 +- .../valgrind-3.6.0-svn/drd/tests/sem_open.c | 5 +- .../valgrind-3.6.0-svn/drd/tests/sigalrm.c | 3 - .../drd/tests/sigaltstack.stderr.exp | 6 + .../drd/tests/sigaltstack.vgtest | 2 + .../tc23_bogus_condwait.stderr.exp-darwin | 63 - ...c23_bogus_condwait.stderr.exp-darwin-amd64 | 69 + .../tc23_bogus_condwait.stderr.exp-darwin-x86 | 63 + .../drd/tests/threaded-fork.c | 55 + .../drd/tests/threaded-fork.stderr.exp | 6 + .../drd/tests/threaded-fork.vgtest | 2 + .../drd/tests/tsan_thread_wrappers_pthread.h | 13 +- .../drd/tests/tsan_unittest.cpp | 12 +- .../drd/tests/unified_annotations.h | 36 +- .../drd/tests/unit_bitmap.c | 1 + .../valgrind-3.6.0-svn/exp-bbv/Makefile.in | 26 +- .../exp-bbv/tests/Makefile.in | 15 +- .../exp-bbv/tests/amd64-linux/Makefile.in | 15 +- .../exp-bbv/tests/arm-linux/Makefile.in | 0 .../exp-bbv/tests/ppc32-linux/Makefile.am | 4 +- .../exp-bbv/tests/ppc32-linux/Makefile.in | 19 +- .../exp-bbv/tests/x86-linux/Makefile.in | 15 +- .../exp-bbv/tests/x86/Makefile.in | 15 +- .../valgrind-3.6.0-svn/exp-dhat/Makefile.am | 100 + .../valgrind-3.6.0-svn/exp-dhat/Makefile.in | 1181 + .../src/valgrind-3.6.0-svn/exp-dhat/dh_main.c | 1402 + .../exp-dhat/docs/dh-manual.xml | 400 + .../exp-dhat/tests/Makefile.am | 1 + .../exp-dhat/tests/Makefile.in | 367 + .../src/valgrind-3.6.0-svn/exp-ptrcheck.supp | 87 - .../exp-ptrcheck/Makefile.in | 24 +- .../exp-ptrcheck/docs/pc-manual.xml | 366 +- .../valgrind-3.6.0-svn/exp-ptrcheck/h_main.c | 5019 +- .../valgrind-3.6.0-svn/exp-ptrcheck/h_main.h | 20 - .../exp-ptrcheck/pc_common.c | 9 +- .../exp-ptrcheck/pc_common.h | 2 +- .../valgrind-3.6.0-svn/exp-ptrcheck/pc_main.c | 135 +- .../valgrind-3.6.0-svn/exp-ptrcheck/sg_main.c | 74 +- .../exp-ptrcheck/tests/Makefile.am | 1 + .../exp-ptrcheck/tests/Makefile.in | 14 +- .../exp-ptrcheck/tests/arith_include2.c | 2 +- .../exp-ptrcheck/tests/bad_percentify.vgtest | 1 + .../exp-ptrcheck/tests/base.vgtest | 1 + .../exp-ptrcheck/tests/ccc.vgtest | 1 + .../exp-ptrcheck/tests/filter_stderr | 3 +- .../exp-ptrcheck/tests/fp.vgtest | 1 + .../exp-ptrcheck/tests/globalerr.vgtest | 1 + .../exp-ptrcheck/tests/hackedbz2.vgtest | 1 + .../exp-ptrcheck/tests/hp_bounds.c | 2 +- .../exp-ptrcheck/tests/hp_bounds.vgtest | 1 + .../exp-ptrcheck/tests/hp_dangle.c | 2 +- .../exp-ptrcheck/tests/hp_dangle.vgtest | 1 + .../exp-ptrcheck/tests/hsg.vgtest | 1 + .../exp-ptrcheck/tests/is_arch_supported | 15 + .../exp-ptrcheck/tests/justify.c | 2 +- .../exp-ptrcheck/tests/justify.vgtest | 1 + .../exp-ptrcheck/tests/mm.c | 2 +- .../exp-ptrcheck/tests/partial.c | 12 +- .../exp-ptrcheck/tests/partial_bad.vgtest | 1 + .../exp-ptrcheck/tests/partial_good.vgtest | 1 + .../exp-ptrcheck/tests/preen_invars.vgtest | 1 + .../exp-ptrcheck/tests/pth_create.vgtest | 1 + .../exp-ptrcheck/tests/pth_specific.c | 2 +- .../exp-ptrcheck/tests/pth_specific.vgtest | 1 + .../exp-ptrcheck/tests/realloc.c | 6 +- .../exp-ptrcheck/tests/realloc.vgtest | 1 + .../exp-ptrcheck/tests/stackerr.vgtest | 1 + .../exp-ptrcheck/tests/strcpy.vgtest | 1 + .../exp-ptrcheck/tests/strlen.c | 2 +- .../exp-ptrcheck/tests/supp.vgtest | 1 + .../exp-ptrcheck/tests/tricky.vgtest | 1 + .../exp-ptrcheck/tests/unaligned.c | 2 +- .../exp-ptrcheck/tests/unaligned.vgtest | 1 + .../exp-ptrcheck/tests/zero.c | 2 +- .../exp-ptrcheck/tests/zero.vgtest | 1 + .../src/valgrind-3.6.0-svn/exp-sgcheck.supp | 20 + .../exp-sgcheck/Makefile.am | 109 + .../exp-sgcheck/Makefile.in | 1337 + .../exp-sgcheck/docs/sg-manual.xml | 316 + .../exp-sgcheck/h_intercepts.c | 398 + .../valgrind-3.6.0-svn/exp-sgcheck/h_main.c | 729 + .../valgrind-3.6.0-svn/exp-sgcheck/h_main.h | 81 + .../exp-sgcheck/pc_common.c | 802 + .../exp-sgcheck/pc_common.h | 75 + .../valgrind-3.6.0-svn/exp-sgcheck/pc_main.c | 146 + .../valgrind-3.6.0-svn/exp-sgcheck/sg_main.c | 2548 + .../valgrind-3.6.0-svn/exp-sgcheck/sg_main.h | 78 + .../exp-sgcheck/tests/Makefile.am | 87 + .../exp-sgcheck/tests/Makefile.in | 850 + .../exp-sgcheck/tests/bad_percentify.c | 643 + .../bad_percentify.stderr.exp-glibc28-amd64 | 30 + .../tests/bad_percentify.stdout.exp | 3 + .../exp-sgcheck/tests/bad_percentify.vgtest | 2 + .../exp-sgcheck/tests/filter_add | 8 + .../exp-sgcheck/tests/filter_stderr | 38 + .../exp-sgcheck/tests/filter_suppgen | 11 + .../exp-sgcheck/tests/globalerr.c | 15 + .../tests/globalerr.stderr.exp-glibc28-amd64 | 17 + .../exp-sgcheck/tests/globalerr.vgtest | 2 + .../exp-sgcheck/tests/hackedbz2.c | 6537 ++ .../tests/hackedbz2.stderr.exp-glibc28-amd64 | 17 + .../exp-sgcheck/tests/hackedbz2.stdout.exp | 70 + .../exp-sgcheck/tests/hackedbz2.vgtest | 2 + .../exp-sgcheck/tests/hsg.c | 48 + .../exp-sgcheck/tests/hsg.stderr.exp | 116 + .../exp-sgcheck/tests/hsg.stdout.exp | 1 + .../exp-sgcheck/tests/hsg.vgtest | 4 + .../exp-sgcheck/tests/is_arch_supported | 15 + .../exp-sgcheck/tests/preen_invars.c | 52 + .../preen_invars.stderr.exp-glibc28-amd64 | 9 + .../exp-sgcheck/tests/preen_invars.stdout.exp | 1 + .../exp-sgcheck/tests/preen_invars.vgtest | 2 + .../exp-sgcheck/tests/preen_invars_so.c | 12 + .../exp-sgcheck/tests/stackerr.c | 53 + .../tests/stackerr.stderr.exp-glibc27-x86 | 27 + .../tests/stackerr.stderr.exp-glibc28-amd64 | 30 + .../exp-sgcheck/tests/stackerr.vgtest | 2 + .../gdbserver_tests/Makefile.am | 86 + .../gdbserver_tests/Makefile.in | 813 + .../gdbserver_tests/README_DEVELOPPERS | 241 + .../gdbserver_tests/clean_after_fork.c | 36 + .../gdbserver_tests/filter_gdb | 100 + .../gdbserver_tests/filter_make_empty | 10 + .../gdbserver_tests/filter_memcheck_monitor | 29 + .../gdbserver_tests/filter_stderr | 6 + .../gdbserver_tests/filter_vgdb | 17 + .../gdbserver_tests/invoker | 19 + .../gdbserver_tests/make_local_links | 58 + .../gdbserver_tests/mcbreak.stderrB.exp | 7 + .../gdbserver_tests/mcbreak.stdinB.gdb | 69 + .../gdbserver_tests/mcbreak.stdout.exp | 8 + .../gdbserver_tests/mcbreak.stdoutB.exp | 54 + .../gdbserver_tests/mcbreak.vgtest | 12 + .../mcclean_after_fork.stderr.exp | 12 + .../mcclean_after_fork.stderrB.exp | 4 + .../mcclean_after_fork.stdinB.gdb | 25 + .../mcclean_after_fork.stdoutB.exp | 12 + .../gdbserver_tests/mcclean_after_fork.vgtest | 10 + .../gdbserver_tests/mchelp.stderrB.exp | 5 + .../gdbserver_tests/mchelp.stdoutB.exp | 66 + .../gdbserver_tests/mchelp.vgtest | 9 + .../gdbserver_tests/mcinfcallRU.stderr.exp | 4 + .../gdbserver_tests/mcinfcallRU.stdinB.gdb | 22 + .../gdbserver_tests/mcinfcallRU.vgtest | 15 + .../gdbserver_tests/mcinfcallWSRU.stderr.exp | 7 + .../gdbserver_tests/mcinfcallWSRU.stderrB.exp | 51 + .../gdbserver_tests/mcinfcallWSRU.stdinB.gdb | 29 + .../gdbserver_tests/mcinfcallWSRU.vgtest | 15 + .../gdbserver_tests/mcinvokeRU.stderrB.exp | 14 + .../gdbserver_tests/mcinvokeRU.stdoutB.exp | 23 + .../gdbserver_tests/mcinvokeRU.vgtest | 12 + .../gdbserver_tests/mcinvokeWS.stderrB.exp | 14 + .../gdbserver_tests/mcinvokeWS.stdoutB.exp | 23 + .../gdbserver_tests/mcinvokeWS.vgtest | 12 + .../gdbserver_tests/mcleak.stderr.exp | 40 + .../gdbserver_tests/mcleak.stderrB.exp | 58 + .../gdbserver_tests/mcleak.stdinB.gdb | 76 + .../gdbserver_tests/mcleak.stdoutB.exp | 49 + .../gdbserver_tests/mcleak.vgtest | 12 + .../gdbserver_tests/mcsignopass.stderr.exp | 20 + .../gdbserver_tests/mcsignopass.stdinB.gdb | 42 + .../gdbserver_tests/mcsignopass.stdoutB.exp | 62 + .../gdbserver_tests/mcsignopass.vgtest | 16 + .../gdbserver_tests/mcsigpass.stderr.exp | 20 + .../gdbserver_tests/mcsigpass.stdinB.gdb | 26 + .../gdbserver_tests/mcsigpass.stdoutB.exp | 17 + .../gdbserver_tests/mcsigpass.vgtest | 11 + .../gdbserver_tests/mcvabits.stderrB.exp | 55 + .../gdbserver_tests/mcvabits.stdinB.gdb | 74 + .../gdbserver_tests/mcvabits.stdoutB.exp | 11 + .../gdbserver_tests/mcvabits.vgtest | 13 + .../gdbserver_tests/mcwatchpoints.stderr.exp | 25 + .../gdbserver_tests/mcwatchpoints.stdinB.gdb | 25 + .../gdbserver_tests/mcwatchpoints.stdoutB.exp | 31 + .../gdbserver_tests/mcwatchpoints.vgtest | 13 + .../gdbserver_tests/mssnapshot.stderrB.exp | 23 + .../gdbserver_tests/mssnapshot.stdinB.gdb | 22 + .../gdbserver_tests/mssnapshot.stdoutB.exp | 4 + .../gdbserver_tests/mssnapshot.vgtest | 11 + .../gdbserver_tests/nlcontrolc.stderr.exp | 9 + .../gdbserver_tests/nlcontrolc.stdinB.gdb | 39 + .../gdbserver_tests/nlcontrolc.stdoutB.exp | 22 + .../gdbserver_tests/nlcontrolc.vgtest | 18 + .../gdbserver_tests/simulate_control_c | 11 + .../gdbserver_tests/sleepers.c | 196 + .../valgrind-3.6.0-svn/gdbserver_tests/t.c | 153 + .../gdbserver_tests/watchpoints.c | 67 + .../src/valgrind-3.6.0-svn/glibc-2.X-drd.supp | 11 +- .../valgrind-3.6.0-svn/helgrind/Makefile.in | 26 +- .../helgrind/docs/hg-manual.xml | 26 +- .../valgrind-3.6.0-svn/helgrind/helgrind.h | 54 +- .../valgrind-3.6.0-svn/helgrind/hg_basics.c | 2 + .../valgrind-3.6.0-svn/helgrind/hg_basics.h | 6 + .../valgrind-3.6.0-svn/helgrind/hg_errors.c | 8 +- .../helgrind/hg_intercepts.c | 20 +- .../helgrind/hg_lock_n_thread.h | 14 +- .../src/valgrind-3.6.0-svn/helgrind/hg_main.c | 485 +- .../valgrind-3.6.0-svn/helgrind/hg_wordset.c | 26 +- .../src/valgrind-3.6.0-svn/helgrind/libhb.h | 13 +- .../valgrind-3.6.0-svn/helgrind/libhb_core.c | 739 +- .../helgrind/tests/Makefile.am | 5 + .../helgrind/tests/Makefile.in | 57 +- .../helgrind/tests/annotate_hbefore.c | 19 + .../tests/annotate_smart_pointer.stderr.exp | 4 + .../tests/annotate_smart_pointer.vgtest | 2 + .../helgrind/tests/free_is_write.c | 42 + .../helgrind/tests/free_is_write.stderr.exp | 20 + .../helgrind/tests/free_is_write.vgtest | 2 + .../helgrind/tests/pth_spinlock.vgtest | 6 +- .../helgrind/tests/tc03_re_excl.c | 2 +- .../helgrind/tests/tc07_hbl1.c | 21 +- .../helgrind/tests/tc08_hbl2.c | 21 +- .../tc09_bad_unlock.stderr.exp-glibc25-amd64 | 4 + .../helgrind/tests/tc11_XCHG.c | 5 +- .../helgrind/tests/tc17_sembar.c | 79 +- .../helgrind/tests/tc18_semabuse.c | 2 +- .../tc20_verifywrap.stderr.exp-glibc27-amd64 | 12 +- .../helgrind/tests/tc23_bogus_condwait.c | 69 +- .../tests/tc23_bogus_condwait.stderr.exp | 21 +- .../helgrind/tests/tc24_nonzero_sem.c | 72 +- .../valgrind-3.6.0-svn/include/Makefile.am | 10 +- .../valgrind-3.6.0-svn/include/Makefile.in | 17 +- .../src/valgrind-3.6.0-svn/include/pub_l4re.h | 3 +- .../include/pub_tool_basics.h | 8 +- .../include/pub_tool_gdbserver.h | 179 + .../include/pub_tool_libcassert.h | 4 +- .../include/pub_tool_libcbase.h | 12 + .../include/pub_tool_libcfile.h | 6 + .../include/pub_tool_libcproc.h | 4 +- .../include/pub_tool_libcsetjmp.h | 101 + .../include/pub_tool_machine.h | 18 +- .../include/pub_tool_options.h | 8 + .../include/pub_tool_vkiscnums_asm.h | 3 + .../src/valgrind-3.6.0-svn/include/valgrind.h | 1178 +- .../include/vki/vki-amd64-linux.h | 6 + .../include/vki/vki-arm-linux.h | 123 +- .../include/vki/vki-darwin.h | 1 + .../valgrind-3.6.0-svn/include/vki/vki-l4re.h | 45 +- .../include/vki/vki-linux.h | 19 +- .../include/vki/vki-posixtypes-s390x-linux.h | 77 + .../include/vki/vki-ppc32-linux.h | 6 + .../include/vki/vki-ppc64-linux.h | 6 + .../include/vki/vki-s390x-linux.h | 944 + .../include/vki/vki-scnums-arm-linux.h | 2 +- .../include/vki/vki-scnums-s390x-linux.h | 447 + .../include/vki/vki-scnums-x86-l4re.h | 2 +- .../include/vki/vki-x86-l4re.h | 17 +- .../include/vki/vki-x86-linux.h | 6 + .../src/valgrind-3.6.0-svn/lackey/Makefile.in | 26 +- .../src/valgrind-3.6.0-svn/lackey/lk_main.c | 6 +- .../lackey/tests/Makefile.in | 7 +- .../src/valgrind-3.6.0-svn/massif/Makefile.in | 26 +- .../massif/docs/ms-manual.xml | 32 + .../src/valgrind-3.6.0-svn/massif/ms_main.c | 129 +- .../massif/perf/Makefile.in | 15 +- .../massif/tests/Makefile.in | 15 +- .../massif/tests/insig.post.exp | 4 +- .../massif/tests/insig.vgtest | 3 +- .../valgrind-3.6.0-svn/massif/tests/realloc.c | 2 +- .../valgrind-3.6.0-svn/memcheck/Makefile.in | 26 +- .../memcheck/docs/mc-manual.xml | 179 +- .../valgrind-3.6.0-svn/memcheck/mc_errors.c | 106 +- .../valgrind-3.6.0-svn/memcheck/mc_include.h | 6 + .../memcheck/mc_leakcheck.c | 50 +- .../valgrind-3.6.0-svn/memcheck/mc_machine.c | 578 +- .../src/valgrind-3.6.0-svn/memcheck/mc_main.c | 340 +- .../memcheck/mc_malloc_wrappers.c | 74 +- .../memcheck/mc_replace_strmem.c | 123 +- .../memcheck/mc_translate.c | 187 +- .../valgrind-3.6.0-svn/memcheck/memcheck.h | 120 +- .../memcheck/perf/Makefile.in | 15 +- .../memcheck/tests/Makefile.am | 44 +- .../memcheck/tests/Makefile.in | 212 +- .../memcheck/tests/amd64-linux/Makefile.in | 15 +- .../memcheck/tests/amd64/Makefile.in | 15 +- .../memcheck/tests/amd64/fxsave-amd64.c | 167 +- .../tests/amd64/fxsave-amd64.stdout.exp | 223 +- .../memcheck/tests/amd64/fxsave-amd64.vgtest | 1 + .../memcheck/tests/atomic_incs.c | 65 +- .../memcheck/tests/badfree-2trace.stderr.exp | 4 +- .../memcheck/tests/badfree.stderr.exp | 4 +- .../memcheck/tests/badfree3.stderr.exp | 10 + .../memcheck/tests/badfree3.vgtest | 2 + .../memcheck/tests/badjump.stderr.exp-s390x | 25 + .../memcheck/tests/badjump2.stderr.exp-s390x | 6 + .../memcheck/tests/custom_alloc.c | 23 +- .../memcheck/tests/custom_alloc.stderr.exp | 35 +- .../memcheck/tests/darwin/Makefile.am | 6 +- .../memcheck/tests/darwin/Makefile.in | 25 +- .../memcheck/tests/doublefree.stderr.exp | 2 +- .../memcheck/tests/error_counts.c | 4 +- .../memcheck/tests/fprw.stderr.exp | 2 +- .../memcheck/tests/leak-cases.c | 1 + .../memcheck/tests/leak-cycle.c | 2 + .../valgrind-3.6.0-svn/memcheck/tests/leak.h | 24 + .../memcheck/tests/linux-syscalls-2007.c | 83 - .../tests/linux-syscalls-2007.stderr.exp | 10 - .../memcheck/tests/linux-syscalls-2007.vgtest | 2 - .../memcheck/tests/linux-syslog-syscall.c | 23 - .../tests/linux-syslog-syscall.stderr.exp | 11 - .../tests/linux-syslog-syscall.vgtest | 2 - .../memcheck/tests/linux/Makefile.am | 6 +- .../memcheck/tests/linux/Makefile.in | 42 +- .../memcheck/tests/linux/brk.c | 2 +- .../memcheck/tests/linux/capget.c | 3 + .../memcheck/tests/linux/capget.stderr.exp2 | 15 + .../memcheck/tests/linux/stack_changes.c | 4 +- .../memcheck/tests/linux/stack_switch.c | 2 +- .../memcheck/tests/linux/syscalls-2007.c | 83 + .../tests/linux/syscalls-2007.stderr.exp | 10 + .../memcheck/tests/linux/syscalls-2007.vgtest | 2 + .../memcheck/tests/linux/syslog-syscall.c | 23 + .../tests/linux/syslog-syscall.stderr.exp | 11 + .../tests/linux/syslog-syscall.vgtest | 2 + .../memcheck/tests/linux/timerfd-syscall.c | 68 +- .../tests/linux/timerfd-syscall.stderr.exp | 46 + .../tests/linux/timerfd-syscall.stdout.exp | 46 - .../memcheck/tests/malloc2.stderr.exp | 2 +- .../memcheck/tests/memalign_test.stderr.exp | 2 +- .../memcheck/tests/mempool.stderr.exp | 14 +- .../memcheck/tests/mempool2.c | 176 + .../memcheck/tests/mempool2.stderr.exp | 81 + .../memcheck/tests/mempool2.vgtest | 2 + .../origin5-bz2.stderr.exp-glibc212-s390x | 133 + .../origin5-bz2.stderr.exp-glibc27-ppc64 | 18 +- .../memcheck/tests/partiallydefinedeq.c | 7 + .../tests/partiallydefinedeq.stderr.exp3 | 20 + .../tests/partiallydefinedeq.stderr.exp4 | 24 + .../memcheck/tests/ppc32/Makefile.am | 13 + .../memcheck/tests/ppc32/Makefile.in | 736 + .../memcheck/tests/ppc32/filter_stderr | 3 + .../memcheck/tests/ppc32/power_ISA2_05.c | 207 + .../tests/ppc32/power_ISA2_05.stderr.exp | 10 + .../tests/ppc32/power_ISA2_05.stdout.exp | 122 + .../memcheck/tests/ppc32/power_ISA2_05.vgtest | 1 + .../memcheck/tests/ppc64/Makefile.am | 13 + .../memcheck/tests/ppc64/Makefile.in | 736 + .../memcheck/tests/ppc64/filter_stderr | 3 + .../memcheck/tests/ppc64/power_ISA2_05.c | 207 + .../tests/ppc64/power_ISA2_05.stderr.exp | 10 + .../tests/ppc64/power_ISA2_05.stdout.exp | 123 + .../memcheck/tests/ppc64/power_ISA2_05.vgtest | 2 + .../memcheck/tests/sh-mem-random.c | 6 +- .../memcheck/tests/sh-mem.c | 6 +- .../memcheck/tests/sigprocmask.c | 1 + .../memcheck/tests/strchr.c | 2 +- .../tests/supp_unknown.stderr.exp-s390x | 10 + .../memcheck/tests/supp_unknown.supp | 7 + .../memcheck/tests/suppfree.stderr.exp | 2 +- .../memcheck/tests/trivialleak.c | 2 +- .../memcheck/tests/varinfo1.stderr.exp-ppc64 | 37 + .../memcheck/tests/varinfo2.stderr.exp-ppc64 | 21 + .../memcheck/tests/varinfo3.stderr.exp-ppc64 | 58 + .../memcheck/tests/varinfo4.stderr.exp-ppc64 | 21 + .../memcheck/tests/varinfo5.stderr.exp-ppc64 | 180 + .../memcheck/tests/varinfo6.stderr.exp-ppc64 | 20 + .../memcheck/tests/x86-linux/Makefile.in | 15 +- .../tests/x86-linux/scalar_exit_group.c | 2 +- .../memcheck/tests/x86-linux/scalar_fork.c | 2 +- .../memcheck/tests/x86-linux/scalar_vfork.c | 2 +- .../memcheck/tests/x86/Makefile.in | 15 +- .../memcheck/tests/xml1.stderr.exp | 4 +- .../src/valgrind-3.6.0-svn/mpi/Makefile.in | 15 +- .../src/valgrind-3.6.0-svn/none/Makefile.in | 26 +- .../src/valgrind-3.6.0-svn/none/nl_main.c | 2 + .../valgrind-3.6.0-svn/none/tests/Makefile.am | 6 +- .../valgrind-3.6.0-svn/none/tests/Makefile.in | 51 +- .../none/tests/amd64/Makefile.am | 26 +- .../none/tests/amd64/Makefile.in | 166 +- .../none/tests/amd64/cmpxchg.c | 377 + .../none/tests/amd64/cmpxchg.stderr.exp | 2 + .../none/tests/amd64/cmpxchg.stdout.exp | 16 + .../none/tests/amd64/cmpxchg.vgtest | 1 + .../none/tests/amd64/crc32.c | 213 + .../none/tests/amd64/crc32.stdout.exp | 21 + .../none/tests/amd64/crc32.vgtest | 3 + .../none/tests/amd64/gen_insn_test.pl | 61 +- .../none/tests/amd64/insn_pclmulqdq.def | 160 + .../tests/amd64/insn_pclmulqdq.stdout.exp | 160 + .../none/tests/amd64/insn_pclmulqdq.vgtest | 3 + .../none/tests/amd64/loopnel.c | 11 + .../none/tests/amd64/loopnel.stderr.exp | 2 + .../none/tests/amd64/loopnel.stdout.exp | 1 + .../none/tests/amd64/loopnel.vgtest | 1 + .../none/tests/amd64/pcmpstr64.c | 82 + .../none/tests/amd64/pcmpstr64.stdout.exp | 228 + .../none/tests/amd64/pcmpstr64.vgtest | 3 + .../none/tests/amd64/pcmpxstrx64.stdout.exp | 210 + .../none/tests/amd64/pcmpxstrx64.vgtest | 3 + .../none/tests/amd64/sbbmisc.c | 393 + .../none/tests/amd64/sbbmisc.stderr.exp | 2 + .../none/tests/amd64/sbbmisc.stdout.exp | 10 + .../none/tests/amd64/sbbmisc.vgtest | 1 + .../none/tests/amd64/sse4-64.c | 1410 +- .../none/tests/amd64/sse4-64.stdout.exp | 4706 ++ .../none/tests/amd64/sse4-64.vgtest | 3 + .../none/tests/arm/Makefile.am | 15 +- .../none/tests/arm/Makefile.in | 77 +- .../none/tests/arm/neon128.c | 170 +- .../none/tests/arm/neon128.stdout.exp | 1499 + .../none/tests/arm/neon64.c | 958 +- .../none/tests/arm/neon64.stdout.exp | 3835 +- .../none/tests/arm/v6intARM.c | 68 + .../none/tests/arm/v6intARM.stdout.exp | 62 + .../none/tests/arm/v6intThumb.c | 453 + .../none/tests/arm/v6intThumb.stdout.exp | 1453 + .../none/tests/arm/v6media.c | 4093 + .../none/tests/arm/v6media.stdout.exp | 3173 + .../none/tests/arm/v6media.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/arm/vfp.c | 2277 + .../none/tests/arm/vfp.stdout.exp | 1220 + .../none/tests/arm/vfp.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/bug129866.c | 2 +- .../none/tests/cmdline1.stdout.exp | 17 +- .../none/tests/cmdline2.stdout.exp | 17 +- .../none/tests/coolo_sigaction.cpp | 3 +- .../none/tests/darwin/Makefile.in | 15 +- .../valgrind-3.6.0-svn/none/tests/discard.c | 2 +- .../none/tests/faultstatus.c | 9 +- .../none/tests/linux/Makefile.in | 15 +- .../none/tests/linux/mremap2.c | 2 +- .../none/tests/ppc32/Makefile.am | 39 +- .../none/tests/ppc32/Makefile.in | 94 +- .../none/tests/ppc32/bug129390-ppc32.vgtest | 1 + .../none/tests/ppc32/jm-insns.c | 195 +- .../tests/ppc32/jm-vmx.stdout.exp_Minus_nan | 3036 + .../none/tests/ppc32/jm-vmx.vgtest | 1 + .../none/tests/ppc32/power5+_round.c | 168 + .../none/tests/ppc32/power5+_round.stderr.exp | 2 + .../none/tests/ppc32/power5+_round.stdout.exp | 60 + .../none/tests/ppc32/power5+_round.vgtest | 1 + .../none/tests/ppc32/power6_bcmp.c | 68 + .../none/tests/ppc32/power6_bcmp.stderr.exp | 2 + .../none/tests/ppc32/power6_bcmp.vgtest | 1 + .../none/tests/ppc32/testVMX.vgtest | 1 + .../tests/ppc32/test_fx.stdout.exp_Minus_nan | 40 + .../tests/ppc32/test_gx.stdout.exp_Minus_nan | 80 + .../none/tests/ppc32/test_isa_2_06_part1.c | 2189 + .../ppc32/test_isa_2_06_part1.stderr.exp | 2 + .../ppc32/test_isa_2_06_part1.stdout.exp | 1023 + .../tests/ppc32/test_isa_2_06_part1.vgtest | 2 + .../none/tests/ppc32/xlc_dbl_u32.c | 2 + .../none/tests/ppc64/Makefile.am | 31 +- .../none/tests/ppc64/Makefile.in | 85 +- .../tests/ppc64/jm-vmx.stdout.exp_Minus_nan | 3036 + .../none/tests/ppc64/jm-vmx.vgtest | 1 + .../none/tests/ppc64/power6_bcmp.c | 73 + .../none/tests/ppc64/power6_bcmp.stderr.exp | 2 + .../none/tests/ppc64/power6_bcmp.vgtest | 1 + .../none/tests/ppc64/power6_mf_gpr.c | 49 + .../none/tests/ppc64/power6_mf_gpr.stderr.exp | 2 + .../none/tests/ppc64/power6_mf_gpr.stdout.exp | 3 + .../none/tests/ppc64/power6_mf_gpr.vgtest | 1 + .../none/tests/ppc64/test_isa_2_06_part1.c | 2189 + .../ppc64/test_isa_2_06_part1.stderr.exp | 2 + .../ppc64/test_isa_2_06_part1.stdout.exp | 1031 + .../tests/ppc64/test_isa_2_06_part1.vgtest | 2 + .../none/tests/require-text-symbol-2.vgtest | 3 +- .../none/tests/s390x/Makefile.am | 28 + .../none/tests/s390x/Makefile.in | 1020 + .../valgrind-3.6.0-svn/none/tests/s390x/add.c | 67 + .../valgrind-3.6.0-svn/none/tests/s390x/add.h | 206 + .../none/tests/s390x/add.stderr.exp | 2 + .../none/tests/s390x/add.stdout.exp | 3938 + .../none/tests/s390x/add.vgtest | 1 + .../none/tests/s390x/add_EI.c | 45 + .../none/tests/s390x/add_EI.stderr.exp | 2 + .../none/tests/s390x/add_EI.stdout.exp | 308 + .../none/tests/s390x/add_EI.vgtest | 2 + .../none/tests/s390x/add_GE.c | 34 + .../none/tests/s390x/add_GE.stderr.exp | 2 + .../none/tests/s390x/add_GE.stdout.exp | 220 + .../none/tests/s390x/add_GE.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/s390x/and.c | 85 + .../valgrind-3.6.0-svn/none/tests/s390x/and.h | 182 + .../none/tests/s390x/and.stderr.exp | 2 + .../none/tests/s390x/and.stdout.exp | 1476 + .../none/tests/s390x/and.vgtest | 1 + .../none/tests/s390x/and_EI.c | 28 + .../none/tests/s390x/and_EI.stderr.exp | 2 + .../none/tests/s390x/and_EI.stdout.exp | 156 + .../none/tests/s390x/and_EI.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/s390x/clc.c | 74 + .../none/tests/s390x/clc.stderr.exp | 2 + .../none/tests/s390x/clc.stdout.exp | 283 + .../none/tests/s390x/clc.vgtest | 1 + .../none/tests/s390x/clcle.c | 74 + .../none/tests/s390x/clcle.stderr.exp | 2 + .../none/tests/s390x/clcle.stdout.exp | 63 + .../none/tests/s390x/clcle.vgtest | 1 + .../none/tests/s390x/condloadstore.c | 129 + .../none/tests/s390x/condloadstore.stderr.exp | 2 + .../none/tests/s390x/condloadstore.stdout.exp | 3072 + .../none/tests/s390x/condloadstore.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/s390x/cvb.c | 104 + .../none/tests/s390x/cvb.stderr.exp | 2 + .../none/tests/s390x/cvb.stdout.exp | 68 + .../none/tests/s390x/cvb.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/cvd.c | 34 + .../none/tests/s390x/cvd.stderr.exp | 2 + .../none/tests/s390x/cvd.stdout.exp | 10 + .../none/tests/s390x/cvd.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/div.c | 30 + .../valgrind-3.6.0-svn/none/tests/s390x/div.h | 65 + .../none/tests/s390x/div.stderr.exp | 2 + .../none/tests/s390x/div.stdout.exp | 1080 + .../none/tests/s390x/div.vgtest | 1 + .../none/tests/s390x/ex_clone.c | 60 + .../none/tests/s390x/ex_clone.stderr.exp | 2 + .../none/tests/s390x/ex_clone.stdout.exp | 2 + .../none/tests/s390x/ex_clone.vgtest | 1 + .../none/tests/s390x/ex_sig.c | 46 + .../none/tests/s390x/ex_sig.stderr.exp | 2 + .../none/tests/s390x/ex_sig.stdout.exp | 1 + .../none/tests/s390x/ex_sig.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/fgx.c | 32 + .../none/tests/s390x/fgx.stderr.exp | 2 + .../none/tests/s390x/fgx.stdout.exp | 15 + .../none/tests/s390x/fgx.vgtest | 1 + .../none/tests/s390x/filter_stderr | 4 + .../none/tests/s390x/flogr.c | 130 + .../none/tests/s390x/flogr.stderr.exp | 2 + .../none/tests/s390x/flogr.vgtest | 2 + .../none/tests/s390x/fold_And16.c | 17 + .../none/tests/s390x/fold_And16.stderr.exp | 2 + .../none/tests/s390x/fold_And16.stdout.exp | 1 + .../none/tests/s390x/fold_And16.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/icm.c | 94 + .../none/tests/s390x/icm.stderr.exp | 2 + .../none/tests/s390x/icm.stdout.exp | 1 + .../none/tests/s390x/icm.vgtest | 1 + .../none/tests/s390x/insert.c | 71 + .../none/tests/s390x/insert.h | 94 + .../none/tests/s390x/insert.stderr.exp | 2 + .../none/tests/s390x/insert.stdout.exp | 744 + .../none/tests/s390x/insert.vgtest | 1 + .../none/tests/s390x/insert_EI.c | 39 + .../none/tests/s390x/insert_EI.stderr.exp | 2 + .../none/tests/s390x/insert_EI.stdout.exp | 312 + .../none/tests/s390x/insert_EI.vgtest | 2 + .../none/tests/s390x/lam_stam.c | 20 + .../none/tests/s390x/lam_stam.stderr.exp | 2 + .../none/tests/s390x/lam_stam.stdout.exp | 4 + .../none/tests/s390x/lam_stam.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/lpr.c | 95 + .../none/tests/s390x/lpr.stderr.exp | 2 + .../none/tests/s390x/lpr.stdout.exp | 27 + .../none/tests/s390x/lpr.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/mul.c | 54 + .../valgrind-3.6.0-svn/none/tests/s390x/mul.h | 213 + .../none/tests/s390x/mul.stderr.exp | 2 + .../none/tests/s390x/mul.stdout.exp | 2244 + .../none/tests/s390x/mul.vgtest | 1 + .../none/tests/s390x/mul_GE.c | 51 + .../none/tests/s390x/mul_GE.stderr.exp | 2 + .../none/tests/s390x/mul_GE.stdout.exp | 484 + .../none/tests/s390x/mul_GE.vgtest | 2 + .../none/tests/s390x/mvst.c | 51 + .../none/tests/s390x/mvst.stderr.exp | 2 + .../none/tests/s390x/mvst.stdout.exp | 7 + .../none/tests/s390x/mvst.vgtest | 1 + .../none/tests/s390x/op_exception.c | 38 + .../none/tests/s390x/op_exception.stderr.exp | 54 + .../none/tests/s390x/op_exception.stdout.exp | 2 + .../none/tests/s390x/op_exception.vgtest | 1 + .../none/tests/s390x/opcodes.h | 308 + .../valgrind-3.6.0-svn/none/tests/s390x/or.c | 85 + .../valgrind-3.6.0-svn/none/tests/s390x/or.h | 182 + .../none/tests/s390x/or.stderr.exp | 2 + .../none/tests/s390x/or.stdout.exp | 1476 + .../none/tests/s390x/or.vgtest | 1 + .../none/tests/s390x/or_EI.c | 41 + .../none/tests/s390x/or_EI.stderr.exp | 2 + .../none/tests/s390x/or_EI.stdout.exp | 312 + .../none/tests/s390x/or_EI.vgtest | 2 + .../none/tests/s390x/srst.c | 93 + .../none/tests/s390x/srst.stderr.exp | 2 + .../none/tests/s390x/srst.stdout.exp | 11 + .../none/tests/s390x/srst.vgtest | 1 + .../none/tests/s390x/stck.c | 41 + .../none/tests/s390x/stck.stderr.exp | 2 + .../none/tests/s390x/stck.stdout.exp | 1 + .../none/tests/s390x/stck.vgtest | 1 + .../none/tests/s390x/stcke.c | 56 + .../none/tests/s390x/stcke.stderr.exp | 2 + .../none/tests/s390x/stcke.stdout.exp | 1 + .../none/tests/s390x/stcke.vgtest | 1 + .../none/tests/s390x/stckf.c | 42 + .../none/tests/s390x/stckf.stderr.exp | 2 + .../none/tests/s390x/stckf.stdout.exp | 1 + .../none/tests/s390x/stckf.vgtest | 2 + .../valgrind-3.6.0-svn/none/tests/s390x/sub.c | 52 + .../valgrind-3.6.0-svn/none/tests/s390x/sub.h | 127 + .../none/tests/s390x/sub.stderr.exp | 2 + .../none/tests/s390x/sub.stdout.exp | 3850 + .../none/tests/s390x/sub.vgtest | 1 + .../none/tests/s390x/sub_EI.c | 29 + .../none/tests/s390x/sub_EI.stderr.exp | 2 + .../none/tests/s390x/sub_EI.stdout.exp | 154 + .../none/tests/s390x/sub_EI.vgtest | 2 + .../none/tests/s390x/tcxb.c | 95 + .../none/tests/s390x/tcxb.stderr.exp | 2 + .../none/tests/s390x/tcxb.stdout.exp | 64 + .../none/tests/s390x/tcxb.vgtest | 1 + .../none/tests/s390x/test.h | 30 + .../valgrind-3.6.0-svn/none/tests/s390x/xc.c | 102 + .../none/tests/s390x/xc.stderr.exp | 2 + .../none/tests/s390x/xc.stdout.exp | 18 + .../none/tests/s390x/xc.vgtest | 1 + .../valgrind-3.6.0-svn/none/tests/s390x/xor.c | 52 + .../valgrind-3.6.0-svn/none/tests/s390x/xor.h | 182 + .../none/tests/s390x/xor.stderr.exp | 2 + .../none/tests/s390x/xor.stdout.exp | 1140 + .../none/tests/s390x/xor.vgtest | 1 + .../none/tests/s390x/xor_EI.c | 42 + .../none/tests/s390x/xor_EI.stderr.exp | 2 + .../none/tests/s390x/xor_EI.stdout.exp | 312 + .../none/tests/s390x/xor_EI.vgtest | 2 + .../none/tests/valgrind_cpp_test.cpp | 2 +- .../none/tests/x86-linux/Makefile.in | 15 +- .../none/tests/x86/Makefile.am | 14 +- .../none/tests/x86/Makefile.in | 119 +- .../none/tests/x86/aad_aam.c | 115 + .../none/tests/x86/aad_aam.stdout.exp | 2 + .../none/tests/x86/aad_aam.vgtest | 2 + .../none/tests/x86/gen_insn_test.pl | 61 +- .../none/tests/x86/sbbmisc.c | 63 + .../none/tests/x86/sbbmisc.stdout.exp | 3 + .../none/tests/x86/shift_ndep.c | 42 + .../none/tests/x86/shift_ndep.stderr.exp | 2 + .../none/tests/x86/shift_ndep.stdout.exp | 1 + .../none/tests/x86/shift_ndep.vgtest | 1 + .../src/valgrind-3.6.0-svn/perf/Makefile.in | 15 +- .../src/valgrind-3.6.0-svn/perf/sarp.c | 2 +- .../src/valgrind-3.6.0-svn/perf/tinycc.c | 9 +- .../src/valgrind-3.6.0-svn/tests/Makefile.am | 4 +- .../src/valgrind-3.6.0-svn/tests/Makefile.in | 31 +- .../src/valgrind-3.6.0-svn/tests/arch_test.c | 4 + .../tests/check_isa-2_06_cap | 11 + .../valgrind-3.6.0-svn/tests/check_vmx_cap | 11 + .../valgrind-3.6.0-svn/tests/s390x_features.c | 93 + .../valgrind-3.6.0-svn/tests/vg_regtest.in | 133 +- .../tests/x86_amd64_features.c | 6 + .../src/valgrind-3.6.0-svn/vg-in-place | 3 + l4/tool/gendep/deptrack.c | 81 +- l4/tool/kconfig/Makefile | 18 +- l4/tool/kconfig/README | 2 +- l4/tool/kconfig/scripts/Makefile | 5 + l4/tool/kconfig/scripts/Makefile.build | 35 +- l4/tool/kconfig/scripts/Makefile.modpost | 4 +- l4/tool/kconfig/scripts/kconfig/conf.c | 2 +- repomgr | 22 +- 2531 files changed, 687902 insertions(+), 18402 deletions(-) create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/boot_mp-arm-omap4.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/bootstrap-arm-omap.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/config-arm-omap.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/kernel_uart-arm-omap.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/mem_layout-arm-omap.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/reset-arm-omap.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/timer-arm-mptimer-omap4.cpp create mode 100644 kernel/fiasco/src/kern/arm/bsp/omap3/uart-arm-omap.cpp create mode 100644 kernel/fiasco/src/templates/globalconfig.out.arm-omap4-panda create mode 100644 l4/mk/rules.inc create mode 100644 l4/pkg/bootstrap/server/src/support_omap.cc create mode 100644 l4/pkg/dde/linux26/lib/src/arch/arm/kernel/io.c create mode 100644 l4/pkg/ldscripts/kip_addr.c create mode 100644 l4/pkg/libstdc++-headers/include-4.6/Makefile create mode 100644 l4/pkg/libstdc++-headers/include-4.6/bits/c++config.h create mode 100644 l4/pkg/libstdc++-v3-minimal/Control create mode 100644 l4/pkg/libstdc++-v3-minimal/Makefile create mode 100644 l4/pkg/libstdc++-v3/build/src/Makefile-4.6 create mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.6/coretypes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.6/unwind-pe.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1998 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1999 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2000 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2001 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2002 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2003 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2004 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2005 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2006 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2007 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2008 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2009 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2010 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/README create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/acinclude.m4 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/aclocal.m4 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config.h.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/compatibility.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/alpha-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/hppa-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i386-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i486-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/ia64-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390x-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/amd64/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/sparc-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu-versioned-namespace.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/none.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/bitmap_allocator_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/malloc_allocator_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/mt_allocator_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/new_allocator_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/pool_allocator_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/alpha/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/arm/cxxabi_tweaks.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_builtins/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_mutex/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cpu_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cxxabi_tweaks.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/hppa/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i386/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i486/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/ia64/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/m68k/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/microblaze/cpu_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/cpu_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sh/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/c_io_stdio.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/darwin/ctype_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c++locale_internal.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/codecvt_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/collate_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/ctype_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/monetary_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/numeric_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c++locale_internal.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/codecvt_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/collate_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/ctype_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/monetary_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/numeric_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ppc-extra.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/error_constants.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/error_constants.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/arm-eabi-extra.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ldbl-extra.ver create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomic_word.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/error_constants.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/os_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_inline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_noninline.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/os_defines.h create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.ac create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.host create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/crossconfig.m4 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/fragment.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/auto_ptr.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/backward_warning.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/binders.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_fun.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hashtable.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/strstream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/algorithmfwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_0.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_2.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/boost_concept_check.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++0x_warning.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++config create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/char_traits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/codecvt.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/concept_check.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/cpp_type_traits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/deque.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/fstream.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functexcept.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functional_hash.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice_array.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable_policy.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/indirect_array.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ios_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/istream.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/list.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/localefwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/mask_array.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/move.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream_insert.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/postypes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/range_access.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_compiler.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_constants.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_cursor.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_error.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/slice_array.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/sstream.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algo.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algobase.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_bvector.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_construct.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_deque.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_function.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_heap.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_funcs.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_types.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_list.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multimap.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multiset.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_numeric.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_pair.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_queue.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_raw_storage_iter.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_relops.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_set.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_stack.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tempbuf.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tree.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_uninitialized.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_vector.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stream_iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf_iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stringfwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unique_ptr.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_set.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_after.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_before.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/vector.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cassert create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cerrno create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cfloat create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ciso646 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/climits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/clocale create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csetjmp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csignal create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdarg create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstddef create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdio create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdlib create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstring create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ctime create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwchar create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/assert.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/complex.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/ctype.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/errno.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/fenv.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/float.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/inttypes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/iso646.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/limits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/locale.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/math.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/setjmp.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/signal.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdarg.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdbool.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stddef.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdint.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdio.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdlib.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/string.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/tgmath.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/time.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wchar.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wctype.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cassert create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ccomplex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cerrno create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfenv create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfloat create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cinttypes create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ciso646 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/climits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/clocale create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csetjmp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csignal create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdarg create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdbool create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstddef create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdint create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdio create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdlib create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstring create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctgmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctime create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwchar create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cassert create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cerrno create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cfloat create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ciso646 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/climits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/clocale create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csetjmp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csignal create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdarg create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstddef create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdio create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdlib create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstring create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ctime create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwchar create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/bitset create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/debug.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/deque create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/formatter.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/forward_list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/functions.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/macros.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multimap.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multiset.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/string create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/vector create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/algorithm create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/array_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/atomicity.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/bitmap_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/cast.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/codecvt_specializations.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/concurrence.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/debug_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/enc_filebuf.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/extptr_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/functional create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/iterator create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/malloc_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/memory create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/mt_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/new_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric_traits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/assoc_container.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_types.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cond_dealtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/container_base_dispatch.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/debug_map_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/head.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/leaf.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/node.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/node.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/standard_policies.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_trace_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/type_utils.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/types_traits.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/exception.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/hash_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/list_update_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/priority_queue.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tag_and_trait.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tree_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/trie_policy.hpp create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pod_char_traits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pointer.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pool_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rb_tree create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rc_string_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rope create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/ropeimpl.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/slist create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/sso_string_base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_filebuf.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_sync_filebuf.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/string_conversions.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/throw_allocator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/type_traits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/typelist.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_fwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_util.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algo.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algobase.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithm create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithmfwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/balanced_quicksort.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/basic_iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/checkers.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compatibility.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compiletime_settings.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/equally_split.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/features.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find_selectors.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each_selectors.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/iterator.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/list_partition.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/losertree.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/merge.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiseq_selection.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_merge.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_mergesort.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numeric create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numericfwd.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop_static.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/par_loop.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/parallel.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partial_sum.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partition.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/queue.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/quicksort.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_number.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_shuffle.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/search.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/set_operations.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/settings.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/sort.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/tags.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/types.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/unique_copy.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/workstealing.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/extc++.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdc++.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdtr1c++.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/base.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/bitset create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/deque create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/forward_list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_algos.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_container_size.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hash_func.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hashtable_size.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_slist.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_vector.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_map_to_unordered_map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_node.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_state.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_trace.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_size.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_to_list.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/iterator_tracker.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multimap.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multiset.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/vector create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/algorithm create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/array create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/atomic create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/bitset create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/chrono create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/complex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/condition_variable create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/deque create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/forward_list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/fstream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/functional create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/future create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iomanip create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ios create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iosfwd create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iostream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/istream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iterator create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/limits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/locale create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/memory create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/mutex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/numeric create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ostream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/queue create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/random create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ratio create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/regex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/sstream create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stack create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stdexcept create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/streambuf create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/string create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/system_error create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/thread create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/tuple create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/type_traits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/typeindex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/utility create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/valarray create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/vector create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/array create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/bessel_function.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/beta_function.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ccomplex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfenv create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfloat create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cinttypes create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/climits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdarg create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdbool create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdint create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdio create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdlib create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctgmath create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctime create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctype.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwchar create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwctype create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ell_integral.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/exp_integral.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/fenv.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/float.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional_hash.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/gamma.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable_policy.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hypergeometric.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/inttypes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/legendre_function.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/limits.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/math.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/memory create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/modified_bessel_func.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_hermite.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_laguerre.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/regex create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/riemann_zeta.tcc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/shared_ptr.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/special_function_util.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdarg.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdbool.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdint.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdio.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdlib.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tgmath.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tuple create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/type_traits create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/utility create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wchar.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wctype.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/array_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/atexit_arm.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_alloc.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_cast.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_typeid.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/class_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi_forced.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_op.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opnt.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opv.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opvnt.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/dyncast.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_alloc.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_arm.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_aux_runtime.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_call.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_catch.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_exception.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_globals.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_personality.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_ptr.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_term_handler.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_terminate.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_throw.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_type.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_unex_handler.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/enum_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_defines.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_ptr.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/function_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/fundamental_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard_error.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/initializer_list create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_handler.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_op.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opnt.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opv.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opvnt.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pbase_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pmem_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pointer_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pure.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/si_class_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo2.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/typeinfo create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/unwind-cxx.h create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vec.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vmi_class_type_info.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vterminate.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/linkage.m4 create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/POTFILES.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/de.po create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/fr.po create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/libstdc++.pot create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/string_literals.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/hook.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/__init__.py create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/__init__.py create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/printers.py create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_compile create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_performance create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/create_testsuite_files create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.pl create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_bind_includers.pl create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers.pl create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers2.pl create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_exports.pl create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graph.py create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graphs.py create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/run_doxygen create mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/testsuite_flags.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.am create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.in create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/allocator-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/atomic.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/bitmap_allocator.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/chrono.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/codecvt.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-c++0x.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list-2.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-ldbl.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list-2.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list-2.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/complex_io.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/concept-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/condition_variable.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ctype.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/debug.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ext-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/fstream-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functexcept.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functional.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/future.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/globals_io.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash-long-double-aux.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_c++0x.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_tr1.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable-aux.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_c++0x.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_tr1.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_failure.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_init.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_locale.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/iostream-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/limits.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/list.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_facets.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_init.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/localename.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_float.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_long_double.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/misc-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mt_allocator.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mutex.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ostream-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/parallel_settings.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/placeholders.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/pool_allocator.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/regex.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/shared_ptr.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/sstream-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/stdexcept.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/string-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/strstream.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/system_error.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/thread.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/tree.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/valarray.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wlocale-inst.cc create mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wstring-inst.cc create mode 100644 l4/pkg/libsupc++-minimal/Control create mode 100644 l4/pkg/libsupc++-minimal/Makefile create mode 100644 l4/pkg/libsupc++/build/Makefile-4.6 create mode 100644 l4/pkg/uclibc-headers/Control create mode 100644 l4/pkg/uclibc-headers/Makefile create mode 100644 l4/pkg/uclibc-minimal/Control create mode 100644 l4/pkg/uclibc-minimal/Makefile create mode 100644 l4/pkg/uclibc-minimal/libc/Make.rules create mode 100644 l4/pkg/uclibc-minimal/libc/Makefile create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-debug.h create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-inlines.h create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-startup.h create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-syscalls.h create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-sysdep.h create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/elfinterp.c create mode 100644 l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/resolve.S create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.c create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/libc-tls.cc create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/i686/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/dl-tls.h create mode 100644 l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/tls.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-amd64/include/bits/uClibc_config.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-arm/include/bits/uClibc_config.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-ppc32/include/bits/uClibc_config.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/bits/uClibc_config.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/linux/sockios.h create mode 100644 l4/pkg/uclibc/lib/uclibc/ARCH-x86/include/bits/uClibc_config.h create mode 100644 l4/pkg/uclibc/lib/uclibc/Make.rules create mode 100644 l4/pkg/uclibc/lib/uclibc/Makefile create mode 100644 l4/pkg/uclibc/lib/uclibc/contrib_files.mk create mode 100644 l4/pkg/uclibc/lib/uclibc/make_rules.mk create mode 100644 l4/pkg/uclibc/lib/uclibc/make_vars.mk create mode 100644 l4/pkg/uclibc/lib/uclibc/src_rules.mk create mode 100644 l4/pkg/uclibc/lib/uclibc/target_headers.lst create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.L4 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.s390 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_defs.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_helpers.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_toIR.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_isel.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_s390x.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_s390x_common.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-s390x.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/fixup_macho_loadcmds.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-s390x-linux.S create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/README_DEVELOPERS create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-coresse-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-linux-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/gdb/signals.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-coresse-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-linux-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/inferiors.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/m_gdbserver.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-core.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regdef.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/remote-utils.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/signals.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/utils.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-amd64.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-arm.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc32.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc64.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-s390x.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-x86.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind_low.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/version.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcsetjmp.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-s390x-linux.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syscall-s390x-linux.S create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-s390x-linux.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_gdbserver.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcsetjmp.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vgdb.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_darwin_intercepts.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp1 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp2 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-x86 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/arm-linux/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/dh_main.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/docs/dh-manual.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/is_arch_supported create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck.supp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/docs/sg-manual.xml create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_intercepts.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_main.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_add create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_stderr create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_suppgen create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.stderr.exp-glibc28-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stderr.exp-glibc28-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/is_arch_supported create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stderr.exp-glibc28-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars_so.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc27-x86 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc28-amd64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/README_DEVELOPPERS create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/clean_after_fork.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_make_empty create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_memcheck_monitor create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_stderr create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_vgdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/invoker create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/make_local_links create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stderrB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdinB.gdb create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdoutB.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/simulate_control_c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/sleepers.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/t.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/watchpoints.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_gdbserver.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcsetjmp.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-posixtypes-s390x-linux.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-s390x-linux.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-s390x-linux.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump.stderr.exp-s390x create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump2.stderr.exp-s390x create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.stderr.exp2 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp3 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp4 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/filter_stderr create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/filter_stderr create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.stderr.exp-s390x create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo1.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo2.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo3.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo4.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo5.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo6.stderr.exp-ppc64 create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.def create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.stdout.exp_Minus_nan create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_fx.stdout.exp_Minus_nan create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_gx.stdout.exp_Minus_nan create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.stdout.exp_Minus_nan create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.am create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.in create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/filter_stderr create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/opcodes.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/test.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.h create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.c create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stderr.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stdout.exp create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.vgtest create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_isa-2_06_cap create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_vmx_cap create mode 100644 l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/s390x_features.c diff --git a/kernel/fiasco/Makefile b/kernel/fiasco/Makefile index bf9cef8a3..0a63e9b13 100644 --- a/kernel/fiasco/Makefile +++ b/kernel/fiasco/Makefile @@ -13,6 +13,7 @@ INSTALLSUBDIRS := $(MANSUBDIRS) CLEANSUBDIRS := $(MANSUBDIRS) $(wildcard $(DFLBUILDDIR)) CONFIG_FILE := $(TEMPLDIR)/globalconfig.out TEST_TEMPLATES := $(patsubst $(CONFIG_FILE).%,%,$(wildcard $(CONFIG_FILE).*)) +TEST_TEMPLATES := $(if $(TEMPLATE_FILTER),$(filter $(TEMPLATE_FILTER),$(TEST_TEMPLATES)),$(TEST_TEMPLATES)) DFL_TEMPLATE := ia32-1 PL ?= 1 @@ -110,7 +111,7 @@ checkall l4check: list: @echo "Templates:" - @echo $(patsubst $(TEMPLDIR)/globalconfig.out.%,%,$(wildcard $(TEMPLDIR)/globalconfig.out.*)) + @echo $(TEST_TEMPLATES) randcheck: $(RM) -r $(RANDBUILDDIR); \ diff --git a/kernel/fiasco/src/abi/l4_buf_desc.cpp b/kernel/fiasco/src/abi/l4_buf_desc.cpp index e90c8a907..be8dc6e86 100644 --- a/kernel/fiasco/src/abi/l4_buf_desc.cpp +++ b/kernel/fiasco/src/abi/l4_buf_desc.cpp @@ -2,28 +2,108 @@ INTERFACE: #include "types.h" +/** + * Description of the mapping buffer registers contained in the UTCB + * (used e.g. during IPC). + * The utcb can contain buffers that describe memory regions, bits in the + * I/O bitmap or capabilities. The buffer description is used to find the + * first buffer for each type. + * Additionally, the buffer description contains a flag to specify the + * willingness to receive FPU state in an IPC operation. + * + * Note that a single buffer might occupy more than one word in the buffer- + * registers array in the UTCB. The L4_buf_iter class can be used to iterate + * over buffers. + */ class L4_buf_desc { public: enum Flags { + /** + * \brief Flag the willingness to receive FPU state during IPC. + * + * If this flag is set, the receiving thread in an IPC is willing + * to receive the status of the floating point unit (FPU) from its partner + * as part of an IPC. Conceptually, this flag adds the FPU of the + * receiver as an additional message receiver buffer. + * The sender must set the corresponding flag L4_msg_tag::Transfer_fpu. + */ Inherit_fpu = (1UL << 24) }; + /** + * Create an uninitialized buffer descriptor. + * \note The value of the buffer descriptor is unpredictable. + */ L4_buf_desc() {} + /** + * Create a buffer descriptor with given values. + * \param mem the BR index for the first memory buffer item. + * \param io the BR index for the first I/O-port buffer item. + * \param obj the BR index for the first object/capability buffer item. + * \param flags the flags, such as, Inherit_fpu. + * + * The buffer registers must contain blocks of buffers of identical + * type (memory, caps, I/O-ports) starting at the given index. The first + * non-matching item terminates the items of the particular type. + * \see Utcb and L4_msg_tag + */ L4_buf_desc(unsigned mem, unsigned io, unsigned obj, unsigned flags = 0) : _raw(mem | (io << 5) | (obj << 10) | flags) {} + /** + * Index of the first memory receive buffer. + * \return the index of the first receive buffer for memory mappings. + * + * The memory receive items use two BRs each. + * \see L4_fpage, L4_msg_item + */ unsigned mem() const { return _raw & ((1UL << 5)-1); } + + /** + * Index of the first I/O-port buffer item. + * \return the index of the first BR containing a I/O-port buffer. + * + * The I/O-port buffer items use two BRs each. + * \see L4_fpage, L4_msg_item. + */ unsigned io() const { return (_raw >> 5) & ((1UL << 5)-1); } + + /** + * Index of the first object receive buffer. + * \return the BR index for the first object/capability receive buffer. + * + * An object receive buffer may use one or two BRs depending on the + * value in the L4_msg_item in the first BR. + * \see L4_msg_item, L4_fpage. + */ unsigned obj() const { return (_raw >> 10) & ((1UL << 5)-1); } + + /** + * The flags of the BDR. + * \return flags encoded in the BDR, see #Inherit_fpu, L4_buf_desc::Flags. + * \note The return value may have reserved bits set. + */ Mword flags() const { return _raw; } + /** + * Get the raw binary representation of the buffer descriptor. + * \return binary representation of the buffer descriptor. + */ Mword raw() const { return _raw; } private: + /** + * A single machine word that describes the buffers that follow: + * - Bits 0..4: The index of the first memory buffer. + * - Bits 5..9: The index of the first io buffer. + * - Bits 10..14: The index of the first capability buffer. + * - Bits 15..23: Unused + * - Bits 24..31: Flags as defined above (only #Inherit_fpu is in use). + */ Mword _raw; }; diff --git a/kernel/fiasco/src/abi/l4_fpage.cpp b/kernel/fiasco/src/abi/l4_fpage.cpp index 97ed692a1..9fdb27772 100644 --- a/kernel/fiasco/src/abi/l4_fpage.cpp +++ b/kernel/fiasco/src/abi/l4_fpage.cpp @@ -5,27 +5,59 @@ INTERFACE: /** * A L4 flex page. * - * A flex page represents a size aligned - * region of an address space. + * A flex page represents a naturally aligned area of mappable space, + * such as memory, I/O-ports, and capabilities (kernel objects). + * There is also a representation for describing a flex page that represents + * the whole of all these address spaces. The size of a flex page is given + * as a power of two. + * + * + * The internal representation is a single machine word with the following + * layout: + * \verbatim + * +- bitsize-12 +- 11-6 -+ 5-4 -+-- 3-0 -+ + * | page number | order | type | rights | + * +-------------+--------+------+--------+ + * \endverbatim + * + * - The rights bits (0-3) denote the access rights to an object, see + * L4_fpage::Rights. + * - The \a type of a flex page is denotes the address space that is + * referenced by that flex page (see L4_fpage::Type). + * - The order is the exponent for the size calculation (size = 2^order). + * - The page number denotes the page address within the address space + * denoted by \a type. For example when \a type is #Memory, the \a page + * \a number must contain the most significant bits of a virtual address + * that must be aligned to \a order bits. In the case that \a type + * equals either #Io or #Obj, the \a page \a number contains all bits of + * the I/O-port number or the capability index, respectively (note, the + * values must also be aligned according to the value of \a order). + * */ class L4_fpage { public: + /** + * Data type to represent the binary representation of a flex page. + */ typedef Mword Raw; + /** + * Address space type of a flex page. + */ enum Type { - Special = 0, - Memory, - Io, - Obj + Special = 0, ///< Special flex pages, either invalid or all spaces. + Memory, ///< Memory flex page + Io, ///< I/O-port flex page + Obj ///< Object flex page (capabilities) }; enum { Addr_shift = 12 }; private: /** - * Create a flexpage with the given parameters. + * Create a flex page with the given parameters. */ L4_fpage(Type type, Mword address, unsigned char order, unsigned char rights) @@ -33,43 +65,134 @@ private: {} public: - enum { Whole_space = 63 }; + enum + { + Whole_space = 63 ///< Value to use as \a order for a whole address space. + }; + /** + * Create an I/O flex page. + * + * IO flex pages do not support access rights other than RW or nothing. + * \param port base I/O-port number (0..65535), must be aligned to + * 2^\a order. The value is shifted by #Addr_shift bits to the + * left. + * \param order the order of the I/O flex page, size is 2^\a order ports. + */ static L4_fpage io(Mword port, unsigned char order) { return L4_fpage(Io, port << Addr_shift, order, 0); } + /** + * Create an object flex page. + * + * \param idx capability index, note capability indexes are multiples of + * 0x1000. (hence \a idx is not shifted) + * \param order The size of the flex page is 2^\a order. The value in \a idx + * must be aligned to 2^(\a order + #Addr_shift. + */ static L4_fpage obj(Mword idx, unsigned char order, unsigned char rights = 0) { return L4_fpage(Obj, idx & (~0UL << Addr_shift), order, rights); } + /** + * Create a memory flex page. + * + * \param addr The virtual address. Only the most significant bits are + * considered, bits from 0 to \a order-1 are dropped. + * \param order The size of the flex page is 2^\a order in bytes. + */ static L4_fpage mem(Mword addr, unsigned char order, unsigned char rights = 0) { return L4_fpage(Memory, addr & (~0UL << Addr_shift), order, rights); } + /** + * Create a nil (invalid) flex page. + */ static L4_fpage nil() { return L4_fpage(0); } + /** + * Create a special receive flex page representing + * all available address spaces at once. This is used + * for page-fault and exception IPC. + */ static L4_fpage all_spaces(unsigned char rights = 0) { return L4_fpage(Special, 0, Whole_space, rights); } + /** + * Create a flex page from the raw value. + */ explicit L4_fpage(Raw raw) : _raw(raw) {} - Type type() const { return Type((_raw >> 4) & 3); } + /** + * Get the type, see #L4_fpage::Type. + * \return the type of the flex page. + */ + Type type() const { return Type((_raw >> 4) & 3); } + + /** + * Get the order of a flex page. + * \return the order of the flex page (size is 2^\a order). + */ unsigned char order() const { return (_raw >> 6) & 0x3f; } + /** + * The robust type for carrying virtual memory addresses. + */ typedef Virt_addr Mem_addr; + + /** + * Get the virtual address of a memory flex page. + * + * \pre type() must return #Memory to return a valid value. + * \return The virtual memory base address of the flex page. + */ Virt_addr mem_address() const { return Virt_addr(_raw & (~0UL << Addr_shift)); } - Mword obj_address() const { return _raw & (~0UL << Addr_shift); } - Mword io_address() const { return _raw >> Addr_shift; } - Mword obj_index() const { return _raw >> Addr_shift; } + /** + * Get the capability address of an object flex page. + * + * \pre type() must return #Obj to return a valid value. + * \return The capability value (index) of this flex page. + * This value is not shifted, so it is a multiple of 0x1000. + * See obj_index() for reference. + */ + Mword obj_address() const { return _raw & (~0UL << Addr_shift); } + /** + * Get the I/O-port number of an I/O flex page. + * \pre type() must return #Io to return a valid value. + * \return The I/O-port index of this flex page. + */ + Mword io_address() const { return _raw >> Addr_shift; } + + /** + * Get the capability index of an object flex page. + * + * \pre type() must return #Obj to return a valid value. + * \return The index into the capability table provided by this flex page. + * This value is shifted #Addr_shift to be a real index + * (opposed to obj_address()). + */ + Mword obj_index() const { return _raw >> Addr_shift; } + + /** + * Test for memory flex page (if type() is #Memory). + * \return true if type() is #Memory. + */ bool is_mempage() const { return type() == Memory; } - bool is_iopage() const { return type() == Io; } + + /** + * Test for I/O flex page (if type() is #Io). + * \return true if type() is #Io. + */ + bool is_iopage() const { return type() == Io; } + + /** + * Test for object flex page (if type() is #Obj). + * \return true if type() is #Obj. + */ bool is_objpage() const { return type() == Obj; } - Mword write() const { return _raw & 2; } - Mword read() const { return _raw & 4; } - Mword exec() const { return _raw & 1; } /** * Is the flex page the whole address space? @@ -80,82 +203,72 @@ public: /** * Is the flex page valid? - * @return not zero if the flex page + * \return not zero if the flex page * contains a value other than 0. */ Mword is_valid() const { return _raw; } /** * Get the binary representation of the flex page. - * @return this flex page in binary representation. + * \return this flex page in binary representation. */ Raw raw() const { return _raw; } private: - Raw _raw; - enum { - /* +- bitsize-12 +- 11-6 -+ 5-3 -+ 2-0 + - * | page number | size | type | rwx | - * +-------------+--------+------+-----+ */ - - // Extension: bits for returning a flexpage's access status. - // (Make sure these flags do not overlap any significant fpage - // bits -- but overlapping the Grant and Write bits used in some - // APIs is OK.) - }; - public: - enum - { - Caching_opt = 1, - Cached = 3, - Buffered = 5, - Uncached = 1, - - Control_addr_shift = 12, - Control_grant = 2, - }; - - enum Obj_map_ctl - { - C_weak_ref = 0x10, - C_ref = 0x00, - - C_obj_right_1 = 0x20, - C_obj_right_2 = 0x40, - C_obj_right_3 = 0x80, - - C_obj_specific_rights = C_obj_right_1 | C_obj_right_2 | C_obj_right_3, - C_ctl_rights = C_obj_specific_rights | C_weak_ref, - }; + /** + * Rights bits for flex pages. + * + * The particular semantics of the rights bits in a flex page differ depending on the + * type of the flex page. For memory there are #R, #W, and #X rights. For + * I/O-ports there must be #R and #W, to get access. For object (capabilities) + * there are #CD, #CR, #CS, and #CW rights on the object and additional + * rights in the map control value of the map operation (see L4_fpage::Obj_map_ctl). + */ enum Rights { - R = 4, - W = 2, - X = 1, - RX = R | X, - RWX = R | W | X, - RW = R | W, - WX = W | X, - - CD = 0x8, - CR = 0x4, - CS = 0x2, - CW = 0x1, - CRW = CR | CW, - CRS = CR | CS, - CRWS = CRW | CS, - CWS = CW | CS, - CWSD = CW | CS | CD, - CRWSD = CRWS | CD, - - FULL = 0xf, + R = 4, ///< Memory flex page is readable + W = 2, ///< Memory flex page is writable + X = 1, ///< Memory flex page is executable (often equal to #R) + + RX = R | X, ///< Memory flex page is readable and executable + RWX = R | W | X, ///< Memory flex page is readable, writeable, and executable + RW = R | W, ///< Memory flex page is readable and writable + WX = W | X, ///< Memory flex page is writable and executable + + + CD = 0x8, ///< Object flex page: delete rights + CR = 0x4, ///< Object flex page: read rights (w/o this the mapping is not present) + CS = 0x2, ///< Object flex page: strong semantics (object specific, i.e. not having + /// this right on an IPC gate demotes all capabilities transferred via this + /// IPC gate to also suffer this right. + CW = 0x1, ///< Object flex page: write rights (purely object specific) + + CRW = CR | CW, ///< Object flex page: combine #CR and #CW + CRS = CR | CS, ///< Object flex page: combine #CR and #CS + CRWS = CRW | CS, ///< Object flex page: combine #CR, #CW, and #CS + CWS = CW | CS, ///< Object flex page: combine #CS and #CW + CWSD = CW | CS | CD, ///< Object flex page: combine #CS, #CW, and #CD + CRWSD = CRWS | CD, ///< Object flex page: combine #CR, #CW, #CS, and #CD + + FULL = 0xf, ///< All rights shall be transferred, independent of the type }; + /** + * Get the rights associated with this flexpage. + * \return The rights associated with this flex page. The semantics of this + * value also depends on the type (type()) of the flex page. + */ Rights rights() const { return Rights(_raw & FULL); } + + /** + * Remove the given rights from this flex page. + * \param r the rights to remove. The semantics depend on the + * type (type()) of the flex page. + */ void mask_rights(Rights r) { _raw &= (Mword(r) | ~0x0fUL); } }; diff --git a/kernel/fiasco/src/abi/l4_msg_item.cpp b/kernel/fiasco/src/abi/l4_msg_item.cpp index bbb92efce..14982e5b6 100644 --- a/kernel/fiasco/src/abi/l4_msg_item.cpp +++ b/kernel/fiasco/src/abi/l4_msg_item.cpp @@ -1,13 +1,103 @@ INTERFACE: #include "types.h" +#include "l4_fpage.h" +/** + * The first word of a message item, either a send item or a receive buffer. + * + * L4_msg_item is the first word of a typed message item in system calls (incl. + * IPC) The L4_msg_item is usually followed by a second word. The + * interpretation of the second word depends on the contents of the + * L4_msg_item. + * + * A generic message item has the following binary layout. + * \verbatim + * +----------------------------+ 3 + 2 .. 1 + 0 + + * | | t | | c | + * +----------------------------+---+--------+---+ \endverbatim + * + * Bit 3 (\a t) is the type bit, if t is set the item is a map + * item. \note Fiasco.OC currently has no support for other types + * than map items. + * + * Bit 0 (\a c) is the compound bit and is available + * for scatter-gather behavior. For map items the \a c bit is useful + * for send items only, and described afterwards. + * + * A map item has a more specific layout: + * \verbatim + * +-- x .. 12 --+- 11 .. 8 -+- 7 .. 4 -+ 3 + 2 +- 1 -+ 0 + + * | hot_spot | SBZ | attr | 1 | i | g/s | c | + * +-------------+-----------+----------+---+---+-----+---+ \endverbatim + * + * Bit 0 (\a c), the compound bit: if this bit is set on a send map item + * the next message item of the same type shall be mapped using the same + * receive buffer as this send item. The caller should properly use the + * \a hot_spot to avoid overlapping mappings. + * + * Bit 1 (\a g/s): On a send map item a set \a g bit flags a grant operation. + * This means, the sender delegates access to the receiver and atomically + * removes the own rights (basically a move operation). On a receive buffer + * a set \a s bit flags a small object buffer. This means, the whole buffer + * item is just a single buffer register in size and provides a receive buffer + * for a single object mapping, the address of the buffer is stored in the + * \a hot_spot. + * + * Bit 2 (\a i): This bit is defined for small receive buffers only, a set \a i + * bit denotes that he receiver wants to avoid a full mapping. Instead, if all + * preconditions are met, the receiver will get either the label of an Ipc_gate + * or a capability selector in its message registers. A label of an Ipc_gate + * is sent if and only if the receiving thread is in the same task as the + * thread that is attached to the Ipc_gate. A capability selector is received + * if the sending and the receiving thread are in the same task. + * + * Bits 7..4 (\a attr): This bits contain extra attributes that influence the + * mapping itself. For memory mapping these bits contain cachebility information. + * For object mappings these bits contain extra rights on the object. + * + * Bits x..12 (\a hot_spot): These bits are the so called hot spot and are used + * to disambiguate the cases where either the send flex page or the receive flex + * page is larger that the other. + */ class L4_msg_item { +private: + enum + { + Addr_shift = 12, ///< number of bits an index must be shifted, or + /// an address must be aligned to, in the control word + }; + public: - enum Consts + /** + * Additional rights for objects (capabilities) apply to the control word of L4_msg_item. + */ + enum Obj_attribs + { + C_weak_ref = 0x10, ///< Map a weak reference (not counted in the kernel) + C_ref = 0x00, ///< Map a normal reference (counted, if not derived + /// from a weak reference) + + C_obj_right_1 = 0x20, ///< Some kernel internal, object-type specific right + C_obj_right_2 = 0x40, ///< Some kernel internal, object-type specific right + C_obj_right_3 = 0x80, ///< Some kernel internal, object-type specific right + + C_obj_specific_rights = C_obj_right_1 | C_obj_right_2 | C_obj_right_3, + C_ctl_rights = C_obj_specific_rights | C_weak_ref, + }; + + /** + * Additional flags for memory send items. + * + * These flags are to control the caching attributes of memory mappings. + */ + enum Memory_attribs { - Grant_bit = 2, + Caching_opt = 0x10, ///< This flag denotes the presence of a cachability option + Cached = 0x30, ///< Map the memory cachable + Buffered = 0x50, ///< Map the memory bufferable (write combining in Intel speech) + Uncached = 0x10, ///< Map the memory fully uncachable }; enum Type @@ -15,18 +105,114 @@ public: Map = 8, }; + /** + * Create a message item from its binary represenation. + * \param raw is the binary representation of the message item. + */ explicit L4_msg_item(Mword raw) : _raw(raw) {} - Mword compund() const { return _raw & 1; } + + /** + * Use the same receive buffer for the next send item. + * \pre The item must be a send item. + * \return true if the next send item shall be handled with the + * same receive buffer as this one. + */ + Mword compound() const { return _raw & 1; } + + /** + * Get the type of the message item. + * \return the type of the message item, currently Fiasco.OC + * supports map items only, see #L4_msg_item::Map). + */ Type type() const { return Type(_raw & 8); } + + /** + * Is the item a a void item? + * \return true if the item is \a void, false if it is valid. + */ bool is_void() const { return _raw == 0; } - bool is_small_obj() const { return _raw & 2; } - bool is_rcv_id() const { return _raw & 4; } + /** + * Is the buffer item a small object buffer? + * \pre The item must be a receive buffer. + * \pre type() == #L4_msg_item::Map + * \return true if the buffer is a single-word single-object + * receive buffer, false else. + */ + Mword is_small_obj() const { return _raw & 2; } + + /** + * Receiver tries to receive an object ID or a + * capability selector? + * \pre The item must be a receive buffer. + * \pre type() == #L4_msg_item::Map + * \pre is_small_obj() == true + * \return true if the receiver is willing to receive an object ID + * or a capability selector, if possible. + */ + Mword is_rcv_id() const { return _raw & 4; } + + /** + * Is the map item actually a grant item? + * \pre type() == #L4_msg_item::Map + * \pre The item is a send item. + * \return true if the sender does a grant operation. + */ + Mword is_grant() const { return _raw & 2; } + + /** + * Get the binary representation of the item. + * \return the binary representation of this item. + */ Mword raw() const { return _raw; } - Mword j() const { return _raw >> 4; } + /** + * Get the extra attributes for the send item. + * \pre The item is a send item. + * \pre type() == #L4_msg_item::Map. + * \return the extra attributes for this send item. + * + * The semantics of the extra attributes depends on + * the type of the second word, the L4_fpage, of the + * complete send item. + * \see L4_msg_item::Memory_attribs, L4_msg_item::Obj_attribs + */ + Mword attr() const { return _raw & 0xf0; } + + /** + * Get the value of the most significant bits of a map item. + * \pre type() == #L4_msg_item::Map + * \return the most significant bits (shifted by #L4_msg_item::Addr_shift). + */ + Mword index() const { return _raw >> Addr_shift; } + + /** + * Get the most significant bits of a map item (masked). + * \pre type() == #L4_msg_item::Map + * \return the most significant bits (masked the lower + * #L4_msg_item::Addr_shift bits). + */ + Mword address() const { return _raw & (~0UL << Addr_shift); } + + /** + * Get the L4_fpage that represents the small buffer item. + * \pre type() == #L4_msg_item::Map + * \pre is_small_obj() == true + * \return the flex page (L4_fpage) representing the single + * object slot with index index(). + */ + + L4_fpage get_small_buf() { return L4_fpage::obj(_raw, 0, attr() >> 4); } + + /** + * Create a map item. + * \param base the hot spot address of the map item. + */ static L4_msg_item map(Mword base) { return L4_msg_item(base | Map); } private: + /** + * The binary representation. + */ Mword _raw; }; diff --git a/kernel/fiasco/src/abi/l4_types.cpp b/kernel/fiasco/src/abi/l4_types.cpp index 6a98f2d55..d444318ff 100644 --- a/kernel/fiasco/src/abi/l4_types.cpp +++ b/kernel/fiasco/src/abi/l4_types.cpp @@ -13,30 +13,144 @@ typedef Address Local_id; class Utcb; +/** + * A reference to a kernel object (capability selector), + * as passed from user level. + * + * A capability selector contains an index into the capability table/object + * space of a task. The index is usually stored in the most significant bits + * of the binary representation. The twelve least significant bits are used to + * to denote the type of operation that shall be invoked and also so flags for + * special capabilities, such as the invalid cap, the reply capability, or the + * self capability. + * + * Generally all operations on kernel objects are modelled as message passing + * primitives that consist of two phases, the send phase and the receive phase. + * However, both phases are optional and come in slightly different flavors. + * \see L4_obj_ref::Operation. + * The terms send and receive are from the invokers point of view. This means, + * a client doing RPC needs a send for sending the requested operation an + * parameters and a receive to receive the return code of the RPC. + */ class L4_obj_ref { public: - enum Flags + /** + * Operation codes, stored in the four least significant bits of a capability + * selector. + */ + enum Operation { + /// A no-op on the capability (undefined from user level). None = 0, + + /** + * \deprecated Use #Ipc_call_ipc. + * Deprecated call code, do not use this operation code. + */ Ipc_call = 0, + + /** + * Set this bit to include a send phase. + * + * In the case of a send phase, the message is send to the object + * denoted by either the capability selector (cap()), the reply capability + * (if #Ipc_reply is also set), or to the thread itself (if the cap is the + * special self capability). + */ Ipc_send = 1, + + /** + * Set this bit to include a receive phase. + * + * During the receive phase the caller waits for a message from either a + * specific sender (closed wait) or from any possible sender + * (#Ipc_open_wait) that has a capability to send messages to the invoker. + */ Ipc_recv = 2, + + /** + * Set this bit to denote an open-wait receive phase. + * + * An open wait means that the invoker shall wait for a message from any + * sender that has a capability to send messages to the invoker. In this + * case the index (cap()) in the capability selector are ignored for the + * receive phase. + */ Ipc_open_wait = 4, + + /** + * Set this bit to make the send phase a reply. + * + * A reply operation uses the implicit reply capability that is stored + * in per thread storage and can be used only once. The reply capability + * also vanishes in the case of an abort due to the caller or a newly + * received call operation by the same thread. + * \see #Ipc_send. + */ Ipc_reply = 8, + /** + * Denotes a wait operation. (#Ipc_recv | #Ipc_open_wait). + * + * The wait operation is usually used by servers to implement remote + * objects. + */ Ipc_wait = Ipc_open_wait | Ipc_recv, + + /** + * Denotes a combination of a send and a wait operation (#Ipc_send | + * #Ipc_recv | #Ipc_open_wait). + * + * \note this is not used for usual RPC, see #Ipc_reply_and_wait for that. + */ Ipc_send_and_wait = Ipc_open_wait | Ipc_send | Ipc_recv, + + /** + * Denotes a reply and wait operation (#Ipc_send | #Ipc_reply | #Ipc_recv | + * #Ipc_open_wait). + * + * This operation is usually used to send replies to RPC requests. + */ Ipc_reply_and_wait = Ipc_open_wait | Ipc_send | Ipc_recv | Ipc_reply, + + /** + * Denotes a call operation (#Ipc_send | #Ipc_recv). + * + * A call is usually used by a client to invoke an operation on a remote + * object and wait for a result. The call operation establishes the + * implicit reply capability for the partner thread (see #Ipc_reply) + * and enables the implementation of an object to respond to an invocation + * without knowledge of the invoker thread. + */ Ipc_call_ipc = Ipc_send | Ipc_recv, }; + /** + * Special capability selectors (e.g., Invalid cap). + */ enum Special { + /** + * Invalid capability selector. + */ Invalid = 1UL << 11UL, - Invalid_bit = 1UL << 11UL, + + /** + * Bit that flags a capability selector as special. + */ + Special_bit = 1UL << 11UL, + + /** + * Value for the self capability selector. This means, the invoking thread + * references itself. + */ Self = (~0UL) << 11UL, - Invalid_mask = (~0UL) << 11UL, + + /** + * Mask for getting all bits of special capabilities. + */ + Special_mask = (~0UL) << 11UL, }; enum @@ -44,23 +158,106 @@ public: Cap_shift = 12UL }; + /** + * Create a special capability selector from \a s. + * \param s which special cap selector shall be created + * (see L4_obj_ref::Special). + * + * Special capability selectors are the invalid capability and the self + * Capability. All special capability selectors must have the #Special_bit + * set. + */ L4_obj_ref(Special s = Invalid) : _raw(s) {} + + /** + * Create a capability selector from it's binary representation. + * \param raw the raw binary representation of a capability selector. As + * passed from user land. + */ static L4_obj_ref from_raw(Mword raw) { return L4_obj_ref(true, raw); } - bool valid() const { return !(_raw & Invalid_bit); } - bool invalid() const { return _raw & Invalid_bit; } - bool self() const { return invalid(); } + /** + * Is the capability selector a valid capability (no special capability). + * \return true if the capability selector is a valid index into the + * capability table, or false if the selector is a special + * capability. + */ + bool valid() const { return !(_raw & Special_bit); } + + /** + * Is the capability selector a special capability (i.e., not an index + * into the capability table). + * \return true if the capability selector denotes a special capability + * (see L4_obj_ref::Special), or false if this capability is a + * valid index into a capability table. + * + */ + bool special() const { return _raw & Special_bit; } + + /** + * Is this capability selector the special \a self capability. + * \return true if this capability is the special self capability for the + * invoking thread. + */ + bool self() const { return special(); } + + /** + * Get the value of a special capability. + * \pre special() == true + * \return the value of a special capability selector, see + * L4_obj_ref::Special. + */ + Special special_cap() const { return Special(_raw & Special_mask); } //bool self() const { return (_raw & Invalid_mask) == Self; } + + /** + * Does the operation contain a receive phase? + * \return true if the operation encoded in the capability selector + * comprises a receive phase, see #L4_obj_ref::Ipc_recv. + */ unsigned have_recv() const { return _raw & Ipc_recv; } + /** + * Get the index into the capability table. + * \pre valid() == true + * \return The index into the capability table stored in the capability + * selector (i.e., the most significant bits of the selector). + */ unsigned long cap() const { return _raw >> 12; } - unsigned flags() const { return _raw & 0xf; } + /** + * Get the operation stored in this selector (see L4_obj_ref::Operation). + * \return The operation encoded in the lower 4 bits of the capability + * selector, see L4_obj_ref::Operation. + */ + Operation op() const { return Operation(_raw & 0xf); } + + /** + * Get the raw binary representation of this capability selector. + * \return the binary representation of this cap selector. + */ Mword raw() const { return _raw; } - explicit L4_obj_ref(Mword cap, unsigned flags = 0) : _raw(cap | flags) {} - L4_obj_ref(Flags flags) : _raw(flags) {} + /** + * Create a valid capability selector for the shifted cap-table index + * and the operation. + * \param cap the shifted (<< #Cap_shift) capability-table index. + * \param op the operation to be encoded in bits 0..3. + */ + explicit L4_obj_ref(Mword cap, Operation op = None) : _raw(cap | op) {} + + /** + * Create a capability selector (index 0) with the given operation. + * \param op the operation to be encoded into the capability selector, + * see L4_obj_ref::Operation. + */ + L4_obj_ref(Operation op) : _raw(op) {} + /** + * Compare two capability selectors for equality. + * \param o the right hand side for te comparison. + * \note Capability selectors are compared by their binary representation. + */ bool operator == (L4_obj_ref const &o) const { return _raw == o._raw; } private: @@ -70,21 +267,41 @@ private: /** - * L4 fpage unmap map_mask. + * Flags for unmap operations. */ class L4_map_mask { public: + + /** + * Create a from binary representation. + * \param raw the binary representation, as passed from user level. + */ explicit L4_map_mask(Mword raw = 0) : _raw(raw) {} - static L4_map_mask full(); + /** + * Get the flags for a full unmap. + * \return A L4_map_mask for doing a full unmap operation. + */ + static L4_map_mask full() { return L4_map_mask(0xc0000002); } + /** + * Get the raw binary representation for the map mask. + * \return the binary value of the flags. + */ Mword raw() const { return _raw; } /** * Unmap from the calling Task too. + * \return true if the caller wishes to unmap from its own address space too. + */ + Mword self_unmap() const { return _raw & 0x80000000; } + + /** + * Shall the unmap delete the object if allowed? + * \return true if the unmap operation shall also delete the kernel + * object if permitted to the caller. */ - Mword self_unmap() const; Mword do_delete() const { return _raw & 0x40000000; } private: @@ -92,41 +309,123 @@ private: }; +/** + * Description of a message to the kernel or other thread. + * + * A message tag determines the number of untyped message words (words()), the + * number of typed message items (items(), L4_msg_item), some flags, and a + * protocol ID. The number of typed and untyped items in the UTCB's message + * registers, as well as the flags, control the kernels message passing + * mechanism. The protocol ID is not interpreted by the message passing + * itself, however is interpreted by the receiving object itself. In thread to + * thread IPC the all contents besides the flags are copied from the sender to + * the receiver. The flags on the receiver side contain some information about + * the operation itself. + * + * The untyped message words are copied to the receiving object/thread + * uninterpreted. The typed items directly following the untyped words in + * the message registers are interpreted by the message passing and contain, + * for example, map items for memory or kernel objects (see L4_msg_item, + * L4_fpage). + */ class L4_msg_tag { public: + /** + * Flags in the message tag. + * + * The input flags control the send phase of an IPC operation. Flags might + * have a different semantics in the returned message tag, the result of an + * IPC operation, see L4_msg_tag::Output_flags. However, the #Transfer_fpu + * and #Schedule flags are passed to the receiver. + */ enum Flags { - Error = 0x8000, // rcv only flag - X_cpu = 0x4000, // rcv only flag - Rcv_flags = Error | X_cpu, - - Transfer_fpu = 0x1000, // snd and pass through flag - Schedule = 0x2000, // snd and pass through flag + /** + * The sender is transferring the state of the floating-point unit (FPU) + * as part of the message. + * \note The receiver needs to agree with that by setting + * L4_buf_desc::Inherit_fpu in its buffer descriptor register (BDR). + * \note This flag is passed through to the receiver. + */ + Transfer_fpu = 0x1000, + + /** + * The sender does not want to donate its remaining time-slice to the + * receiver (partner) thread. + * \note This flag is passed on to the receiver. + */ + Schedule = 0x2000, + + /** + * The sender wants to propagate an incoming call operation to a different + * thread. + * \note Not implemented in Fiasco.OC. + * + * Propagation means that the reply capability shall be passed on to the + * receiver of this message to enable a direct reply. + */ Propagate = 0x4000, // snd only flag }; + /** + * Result flags for IPC operations. + * + * These flags are dedicated return values for an IPC operation. + */ + enum Output_flags + { + /** + * The IPC operation did not succeed, the detailed error code + * is in the error register in the UTCB. + */ + Error = 0x8000, + + /** + * The IPC operation did cross CPU boundaries. + */ + X_cpu = 0x4000, + + /** + * Combination of flags that are not pass through. + */ + Rcv_flags = Error | X_cpu, + }; + + /** + * Protocol IDs that are defined by the kernel ABI. + * + * These protocol IDs are used for either kernel implemented + * objects, or used for kernel-synthesized requests to user + * objects. + */ enum Protocol { - Label_none = 0, + Label_none = 0, ///< No protocol, the default + /** + * Value to allow the current system call for an alien thread. + * + * This value is used in the reply to an alien pre-syscall exception IPC. + */ Label_allow_syscall = 1, - Label_irq = -1L, - Label_page_fault = -2L, - Label_preemption = -3L, - Label_sys_exception = -4L, - Label_exception = -5L, - Label_sigma0 = -6L, - Label_io_page_fault = -8L, - Label_del_observer = -9L, - Label_kobject = -10L, - Label_task = -11L, - Label_thread = -12L, - Label_log = -13L, - Label_cpu = -14L, - Label_factory = -15L, - Label_vm = -16L, - Label_semaphore = -20L, + Label_irq = -1L, ///< IRQ object protocol. + Label_page_fault = -2L, ///< Page fault messages use this protocol. + Label_preemption = -3L, ///< Preemption IPC protocol. \note unused. + Label_sys_exception = -4L, ///< Sys exception protocol. \note unused. + Label_exception = -5L, ///< Exception IPC protocol. + Label_sigma0 = -6L, ///< Protocol for sigma0 objects. + Label_io_page_fault = -8L, ///< Protocol for I/O-port page faults. + Label_kobject = -10L, ///< Control protocol iD for IPC gates (server + /// side). + Label_task = -11L, ///< Protocol ID for task and VM objects. + Label_thread = -12L, ///< Protocol ID for thread objects. + Label_log = -13L, ///< Protocol ID for log / vcon objects. + Label_scheduler = -14L, ///< Protocol ID for scheduler objects. + Label_factory = -15L, ///< Protocol ID for factory objects. + Label_vm = -16L, ///< Protocol ID for VM objects (used for create + /// operations on a factory). + Label_semaphore = -20L, ///< Protocol ID for semaphore objects. }; private: Mword _tag; @@ -138,7 +437,7 @@ private: class L4_timeout { public: - /// Typical timout constants. + /// Typical timeout constants. enum { Never = 0, ///< Never timeout. Zero = 0x400, ///< Zero timeout. @@ -238,59 +537,13 @@ struct L4_timeout_pair Mword raw() const { return (Mword)rcv.raw() | (Mword)snd.raw() << 16; } }; - -class L4_pipc -{ -private: - enum - { - Clock_shift = 0, - Id_shift = 56, - Lost_shift = 62, - Type_shift = 63, - Clock_mask = 0x00ffffffffffffffULL, - Id_mask = 0x3f00000000000000ULL, - Lost_mask = 0x4000000000000000ULL, - Type_mask = 0x8000000000000000ULL, - Low_shift = 0, - High_shift = 32, - Low_mask = 0x00000000ffffffffULL, - High_mask = 0xffffffff00000000ULL - }; - - /** - * Raw 64 bit representation - */ - Unsigned64 _raw; - -public: - /** - * Extract the low message word. - */ - Mword low() const; - - /** - * Extract the high message word. - */ - Mword high() const; - - /** - * Create a Preemption-IPC message - */ - L4_pipc(unsigned type, unsigned lost, unsigned id, Cpu_time clock); -}; - - +/** + * This class contains constants for the message size for exception IPC. + * + * This information is architecture dependent, see #Msg_size. + */ class L4_exception_ipc -{ -public: - enum - { - //Exception_ipc_cookie_1 = Mword(-0x5), - //Exception_ipc_cookie_2 = Mword(-0x21504151), - Protocol = -5 - }; -}; +{}; class L4_semaphore { @@ -299,23 +552,25 @@ public: Mword flags; }; +/** + * Constants for error codes returned by kernel objects. + */ class L4_err { public: enum Err { - EPerm = 1, - ENoent = 2, - ENomem = 12, - EAccess = 13, - EBusy = 16, - EExists = 17, - ENodev = 19, - EInval = 22, - ENosys = 38, - EBadproto = 39, - - EAddrnotavail = 99, + EPerm = 1, ///< Permission denied. + ENoent = 2, ///< Some object was not found. + ENomem = 12, ///< Out of memory. + EBusy = 16, ///< The object is busy, try again. + EExists = 17, ///< Some object does already exist. + ENodev = 19, ///< Objects of the specified type cannot be created. + EInval = 22, ///< Invalid parameters passed. + ENosys = 38, ///< No such operation. + EBadproto = 39, ///< Protocol not supported by object. + + EAddrnotavail = 99, ///< The given address is not available. }; }; @@ -359,28 +614,78 @@ public: //---------------------------------------------------------------------------- INTERFACE: +/** + * User-level Thread Control Block (UTCB). + * + * The UTCB is a virtual extension of the registers of a thread. A UTCB + * comprises three sets of registers: the message registers (MRs), the buffer + * registers (BRs and BDR), and the control registers (TCRs). + * + * The message registers (MRs) contain the contents of the messages that are + * sent to objects or received from objects. The message contents consist of + * untyped data and typed message items (see L4_msg_tag). The untyped must be + * stored in the first \a n message registers (\a n = L4_msg_tag::words()) and + * are transferred / copied uninterpreted to the receiving object (MRs of + * receiver thread or kernel object). The typed items follow starting at MR[\a + * n+1]. Each typed item is stored in two MRs and is interpreted by the kernel + * (see L4_msg_item, L4_fpage). The number of items is denoted by + * L4_msg_tag::items(). On the receiver side the typed items are translated + * into a format that is useful for the receiver and stored at into the same + * MRs in the receivers UTCB. + * + * The buffer registers (BRs and BDR) contain information that describe receive + * buffers for incoming typed items. The contents of these registers are not + * altered by the kernel. The buffer descriptor register (BDR, Utcb::buf_desc) + * contains information about the items in the buffer registers (BRs) and + * flags to enable FPU state transfer. The BRs contain a set of receive + * message items (L4_msg_item) that describe receive buffers, such as, virtual + * memory regions for incoming memory mappings or buffers for capabilities. + * The BRs are also used to store absolute 64bit timeout values for operations, + * The value of the timeout pair encodes the number of the BR if an absolute + * timeout is used. + * + * The thread control registers (TCRs) comprise an error code for errors during + * message passing and a set of user-level registers. The user-level registers + * are not used by the kernel and provide and anchor for thread-local storage. + */ class Utcb { /* must be 2^n bytes */ public: + /** + * Type for time values in the UTCB (size is fix 64bit). + * + * On 32bit architectures this type uses two MRs on 64bit one Mr is used. + * This type is used for conversion of time values stored in MRs or BRs. + */ union Time_val { - enum { Words = sizeof(Cpu_time)/sizeof(Mword) }; - Mword b[Words]; - Cpu_time t; + enum { Words = sizeof(Cpu_time)/sizeof(Mword) /**< Number of MRs used. */ }; + Mword b[Words]; ///< The array of MRs to use. + Cpu_time t; ///< The time value itself. }; - enum { Max_words = 63, Max_buffers = 58 }; + enum + { + Max_words = 63, ///< Number of MRs. + Max_buffers = 58 ///< Number of BRs. + }; + /// The message registers (MRs). Mword values[Max_words]; Mword reserved; + /// The buffer descriptor register (BDR). L4_buf_desc buf_desc; + /// The buffer registers (BRs). Mword buffers[Max_buffers]; + /// The error code for IPC (TCR). L4_error error; + /// \deprecated transfer timeout is not used currently (TCR). L4_timeout_pair xfer; + /// The user-level registers for TLS (TCR). Mword user[3]; }; @@ -389,68 +694,137 @@ IMPLEMENTATION: #include - +/** + * Receiver is ready to receive FPU contents? + * \return true if the receiver is ready to receive the state of the FPU as + * part of a message. + * \see L4_buf_desc::Inherit_fpu, L4_buf_desc. + */ PUBLIC inline bool Utcb::inherit_fpu() const { return buf_desc.flags() & L4_buf_desc::Inherit_fpu; } - +/** + * Create a message tag from its parts. + * \param words the number of untyped message words to transfer. + * \param items the number of typed message items, following the untyped words + * in the message registers. See L4_msg_item. + * \param flags the flags, see L4_msg_tag::Flags and L4_msg_tag::Output_flags. + * \param proto the protocol ID to use. + */ PUBLIC inline L4_msg_tag::L4_msg_tag(unsigned words, unsigned items, unsigned long flags, unsigned long proto) - : _tag((words & 0x3f) | ((items << 6) & 0x3f) | flags | (proto << 16)) + : _tag((words & 0x3f) | ((items & 0x3f) << 6) | flags | (proto << 16)) {} +/** + * Create an uninitialized message tag. + * \note the value of the tag is unpredictable. + */ PUBLIC inline L4_msg_tag::L4_msg_tag() {} +/** + * Create a message tag from another message tag, replacing + * the L4_msg_tag::Output_flags. + * \param o the message tag to copy. + * \param flags the output flags to set in the new tag. + * \pre (flags & ~Rcv_flags) == 0 + */ PUBLIC inline L4_msg_tag::L4_msg_tag(L4_msg_tag const &o, Mword flags) : _tag((o.raw() & ~Mword(Rcv_flags)) | flags) {} +/** + * Create msg tag from the binary representation. + * \param raw the raw binary representation, as passed from user level. + */ PUBLIC explicit inline L4_msg_tag::L4_msg_tag(Mword raw) : _tag(raw) {} +/** + * Get the protocol ID. + * \return the protocol ID. + */ PUBLIC inline long L4_msg_tag::proto() const { return long(_tag) >> 16; } +/** + * Get the binary representation. + * \return the binary value of the tag. + */ PUBLIC inline unsigned long L4_msg_tag::raw() const { return _tag; } +/** + * Get the number of untyped words to deliver. + * \return number message registers that shall be transferred + * uninterpreted to the receiving object. + */ PUBLIC inline unsigned L4_msg_tag::words() const { return _tag & 63; } +/** + * Get the number of typed message items in the message. + * \return the number of typed items, directly following the + * untyped words in the message registers. + * \see L4_msg_item. + */ PUBLIC inline unsigned L4_msg_tag::items() const { return (_tag >> 6) & 0x3f; } +/** + * Get the flags of the tag. + * \return the flags of the message tag, note reserved bits might be + * set in the result. + */ PUBLIC inline Mword L4_msg_tag::flags() const { return _tag; } +/** + * Transfer the FPU? + * \return true if the sender wishes to transfer FPU contents. + * \see #Transfer_fpu. + */ PUBLIC inline bool L4_msg_tag::transfer_fpu() const { return _tag & Transfer_fpu; } +/** + * Do time-slice donation? + * \return true if the sender is willing to donate its remaining time- + * slice to the receiver. + * \see #Schedule. + */ PUBLIC inline bool L4_msg_tag::do_switch() const { return !(_tag & Schedule); } +/** + * Set the error flag to \a e. + * \param e the value of the error flag to be set. + */ PUBLIC inline void L4_msg_tag::set_error(bool e = true) { if (e) _tag |= Error; else _tag &= ~Mword(Error); } - +/** + * Is there an error flagged? + * \return true if the error flag of the message tag is set. + */ PUBLIC inline bool L4_msg_tag::has_error() const { return _tag & Error; } @@ -521,25 +895,6 @@ unsigned short L4_timeout::is_finite() const { return _t; } -// -// L4_pipc implementation -// - -IMPLEMENT inline -L4_pipc::L4_pipc(unsigned type, unsigned lost, unsigned id, Cpu_time clock) - : _raw ( (((Unsigned64) type << Type_shift) & Type_mask) | - (((Unsigned64) lost << Lost_shift) & Lost_mask) | - (((Unsigned64) id << Id_shift) & Id_mask) | - (((Unsigned64) clock << Clock_shift) & Clock_mask)) -{} - -IMPLEMENT inline Mword L4_pipc::low() const -{ return (_raw & Low_mask) >> Low_shift; } - -IMPLEMENT inline Mword L4_pipc::high() const -{ return (_raw & High_mask) >> High_shift; } - - // // L4_timeout implementation // @@ -568,11 +923,5 @@ IMPLEMENT inline void L4_timeout::man (Mword w) { _t = (_t & ~Man_mask) | ((w << Man_shift) & Man_mask); } -IMPLEMENT inline -Mword L4_map_mask::self_unmap() const -{ return _raw & 0x80000000; } - -IMPLEMENT inline -L4_map_mask L4_map_mask::full() { return L4_map_mask(0xc0000002); } diff --git a/kernel/fiasco/src/drivers/amd64/reset-amd64.cpp b/kernel/fiasco/src/drivers/amd64/reset-amd64.cpp index 5ab684e01..d59af2c5e 100644 --- a/kernel/fiasco/src/drivers/amd64/reset-amd64.cpp +++ b/kernel/fiasco/src/drivers/amd64/reset-amd64.cpp @@ -5,7 +5,7 @@ IMPLEMENTATION[amd64]: // reset PC void __attribute__ ((noreturn)) -pc_reset() +platform_reset() { // i8042: store the next byte at port 0x60 as command byte while (Io::in8 (0x64) & 0x2) diff --git a/kernel/fiasco/src/drivers/ia32/reset-ia32.cpp b/kernel/fiasco/src/drivers/ia32/reset-ia32.cpp index ba73aaf1a..21a8e0a5a 100644 --- a/kernel/fiasco/src/drivers/ia32/reset-ia32.cpp +++ b/kernel/fiasco/src/drivers/ia32/reset-ia32.cpp @@ -5,7 +5,7 @@ IMPLEMENTATION[ia32]: // reset PC void __attribute__ ((noreturn)) -pc_reset() +platform_reset() { // i8042: store the next byte at port 0x60 as command byte while (Io::in8 (0x64) & 0x2) diff --git a/kernel/fiasco/src/drivers/ppc32/reset-ppc32.cpp b/kernel/fiasco/src/drivers/ppc32/reset-ppc32.cpp index ca4770598..443963e12 100644 --- a/kernel/fiasco/src/drivers/ppc32/reset-ppc32.cpp +++ b/kernel/fiasco/src/drivers/ppc32/reset-ppc32.cpp @@ -13,7 +13,7 @@ enum Reg_offsets * Porgram Gerneral purpose timer as watchdog, thus causing a system reset */ void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { Address mbar = Boot_info::mbar(); @@ -31,7 +31,7 @@ pc_reset(void) IMPLEMENTATION [ppc32 && !mpc52xx]: void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { for(;;); } diff --git a/kernel/fiasco/src/jdb/arm/jdb-arm.cpp b/kernel/fiasco/src/jdb/arm/jdb-arm.cpp index 0c0d028de..fccdb0239 100644 --- a/kernel/fiasco/src/jdb/arm/jdb-arm.cpp +++ b/kernel/fiasco/src/jdb/arm/jdb-arm.cpp @@ -67,7 +67,7 @@ Jdb::handle_debug_traps(unsigned cpu) if (ef->error_code == 0x00e00000) snprintf(error_buffer.cpu(cpu), sizeof(error_buffer.cpu(0)), "%s", (char const *)ef->r[0]); - else if (ef->error_code == 0x00f00000) + else if (ef->debug_ipi()) snprintf(error_buffer.cpu(cpu), sizeof(error_buffer.cpu(0)), "IPI ENTRY"); @@ -83,6 +83,12 @@ Jdb::handle_user_request(unsigned cpu) Space * task = get_task(cpu); char tmp; + if (ef->debug_ipi()) + return cpu != 0; + + if (ef->error_code == 0x00e00001) + return execute_command_ni(task, str); + if (!peek(str, task, tmp) || tmp != '*') return false; if (!peek(str+1, task, tmp) || tmp != '#') @@ -269,6 +275,15 @@ Jdb::write_tsc(Signed64 tsc, char *buf, int maxlen, bool sign) write_tsc_s(tsc, buf, maxlen, sign); } +//---------------------------------------------------------------------------- +IMPLEMENTATION [arm && !mp]: + +PROTECTED static inline +template< typename T > +void +Jdb::set_monitored_address(T *dest, T val) +{ *dest = val; } + //---------------------------------------------------------------------------- IMPLEMENTATION [arm && mp]: @@ -276,8 +291,25 @@ IMPLEMENTATION [arm && mp]: static void -Jdb::send_nmi(unsigned /*cpu*/) +Jdb::send_nmi(unsigned cpu) { - printf("NMI, what's that?\n"); + printf("NMI to %d, what's that?\n", cpu); } +PROTECTED static inline +template< typename T > +void +Jdb::set_monitored_address(T *dest, T val) +{ + *dest = val; + Mem::dsb(); + asm volatile("sev"); +} + +PROTECTED static inline +template< typename T > +T Jdb::monitor_address(unsigned, T volatile *addr) +{ + asm volatile("wfe"); + return *addr; +} diff --git a/kernel/fiasco/src/jdb/arm/jdb_entry_frame-arm.cpp b/kernel/fiasco/src/jdb/arm/jdb_entry_frame-arm.cpp index dabed6dd5..a41ee5885 100644 --- a/kernel/fiasco/src/jdb/arm/jdb_entry_frame-arm.cpp +++ b/kernel/fiasco/src/jdb/arm/jdb_entry_frame-arm.cpp @@ -64,7 +64,7 @@ Jdb_entry_frame::dump() const IMPLEMENT inline bool Jdb_entry_frame::debug_ipi() const -{ return error_code == 0x00f00000; } +{ return error_code == 0x00e00002; } IMPLEMENT inline NEEDS["processor.h"] Address_type diff --git a/kernel/fiasco/src/jdb/ia32/jdb-ia32-amd64.cpp b/kernel/fiasco/src/jdb/ia32/jdb-ia32-amd64.cpp index 39dbcc874..3eb134c87 100644 --- a/kernel/fiasco/src/jdb/ia32/jdb-ia32-amd64.cpp +++ b/kernel/fiasco/src/jdb/ia32/jdb-ia32-amd64.cpp @@ -203,15 +203,26 @@ Jdb::connected() } PROTECTED static inline +template< typename T > void -Jdb::monitor_address(unsigned current_cpu, void *addr) +Jdb::set_monitored_address(T *dest, T val) { - if (Cpu::cpus.cpu(current_cpu).has_monitor_mwait()) + *dest = val; +} + +PROTECTED static inline +template< typename T > +T +Jdb::monitor_address(unsigned current_cpu, T *addr) +{ + if (!*addr && Cpu::cpus.cpu(current_cpu).has_monitor_mwait()) { asm volatile ("monitor \n" : : "a"(addr), "c"(0), "d"(0) ); Mword irq_sup = Cpu::cpus.cpu(current_cpu).has_monitor_mwait_irq() ? 1 : 0; asm volatile ("mwait \n" : : "a"(0x00), "c"(irq_sup) ); } + + return *addr; } diff --git a/kernel/fiasco/src/jdb/jdb.cpp b/kernel/fiasco/src/jdb/jdb.cpp index 9969c2c7b..adc44fcf1 100644 --- a/kernel/fiasco/src/jdb/jdb.cpp +++ b/kernel/fiasco/src/jdb/jdb.cpp @@ -295,17 +295,17 @@ Jdb::execute_command_ni(Space *task, char const *str, int len = 1000) for (;;) { int c = getchar(); - + was_input_error = true; if (0 != strchr(non_interactive_cmds, c)) { - char _cmd[] = {c, 0}; + char _cmd[] = {(char)c, 0}; Jdb_core::Cmd cmd = Jdb_core::has_cmd(_cmd); if (cmd.cmd) { if (Jdb_core::exec_cmd (cmd, 0) != 3) - was_input_error = false; + was_input_error = false; } } @@ -342,7 +342,7 @@ Jdb::input_short_mode(Jdb::Cmd *cmd, char const **args, int &cmd_key) printf("\033[K%c", c); // clreol + print key - char cmd_buffer[2] = { c, 0 }; + char cmd_buffer[2] = { (char)c, 0 }; *cmd = Jdb_core::has_cmd(cmd_buffer); if (cmd->cmd) @@ -594,7 +594,7 @@ Jdb::remote_work(unsigned cpu, void (*func)(unsigned, void *), void *data, Jdb::remote_func_running.cpu(cpu) = 1; Jdb::remote_func_data.cpu(cpu) = data; Mem::barrier(); - Jdb::remote_func.cpu(cpu) = func; + set_monitored_address(&Jdb::remote_func.cpu(cpu), func); Mem::barrier(); while (sync) @@ -1290,13 +1290,11 @@ Jdb::stop_all_cpus(unsigned current_cpu) { Mem::barrier(); void (**func)(unsigned, void *) = &remote_func.cpu(current_cpu); + void (*f)(unsigned, void *); - monitor_address(current_cpu, reinterpret_cast(func)); - - if (*func) + if ((f = monitor_address(current_cpu, func))) { // Execute functions from queued from another CPU - void (*f)(unsigned, void *) = *func; *func = 0; f(current_cpu, remote_func_data.cpu(current_cpu)); Mem::barrier(); @@ -1340,6 +1338,9 @@ Jdb::leave_wait_for_others() { if (Cpu::online(c) && running.cpu(c)) { + // notify other CPU + set_monitored_address(&Jdb::remote_func.cpu(c), + (void (*)(unsigned, void *))0); // printf("JDB: wait for CPU[%2u] to leave\n", c); all_there = false; } diff --git a/kernel/fiasco/src/jdb/jdb_kobject.cpp b/kernel/fiasco/src/jdb/jdb_kobject.cpp index e32f6a34c..f1dcb1178 100644 --- a/kernel/fiasco/src/jdb/jdb_kobject.cpp +++ b/kernel/fiasco/src/jdb/jdb_kobject.cpp @@ -15,7 +15,7 @@ public: private: Jdb_kobject_handler *_first; Jdb_kobject_handler **_tail; - static Kobject *kobj; + static void *kobjp; }; @@ -349,7 +349,7 @@ Jdb_kobject_handler::next_global() return 0; } -Kobject *Jdb_kobject::kobj; +void *Jdb_kobject::kobjp; IMPLEMENT Jdb_kobject::Jdb_kobject() @@ -450,10 +450,16 @@ Jdb_kobject::action(int cmd, void *&, char const *&, int &) if (cmd == 0) { puts(""); - if (!handle_obj(kobj, 0)) - printf("Kobj w/o handler: "); - print_kobj(kobj); - puts(""); + Kobject *k = Kobject::pointer_to_obj(kobjp); + if (!k) + printf("Not a kobj.\n"); + else + { + if (!handle_obj(k, 0)) + printf("Kobj w/o handler: "); + print_kobj(k); + puts(""); + } return NOTHING; } else if (cmd == 1) @@ -471,7 +477,7 @@ Jdb_kobject::cmds() const static Cmd cs[] = { { 0, "K", "kobj", "%p", "K\tshow information for kernel object", - &kobj }, + &kobjp }, { 1, "Q", "listkobj", "", "Q\tshow information for kernel objects", 0 }, }; return cs; diff --git a/kernel/fiasco/src/jdb/jdb_log.cpp b/kernel/fiasco/src/jdb/jdb_log.cpp index 05df77748..ad93affa6 100644 --- a/kernel/fiasco/src/jdb/jdb_log.cpp +++ b/kernel/fiasco/src/jdb/jdb_log.cpp @@ -55,7 +55,7 @@ Jdb_log_list_hdl::invoke(Kobject_common *, Syscall_frame *f, Utcb *utcb) unsigned char const idx = utcb->values[1]; - if (_log_table + idx >= _log_table_end) + if (_log_table + idx >= &_log_table_end) { f->tag(Kobject_iface::commit_result(-L4_err::EInval)); return true; @@ -148,7 +148,7 @@ Jdb_log_list::patch_item(Tb_log_table_entry const *e, unsigned char val) Mem_unit::clean_dcache(e->patch); } - for (Tb_log_table_entry *x = _end; x < _log_table_end; ++x) + for (Tb_log_table_entry *x = _end; x < &_log_table_end; ++x) { if (equal(x, e) && x->patch) { @@ -180,7 +180,7 @@ Jdb_log_list::next(void **item) { Tb_log_table_entry *e = static_cast(*item); - while (e + 1 < _log_table_end) + while (e + 1 < &_log_table_end) { #if 0 if (equal(e, e+1)) @@ -270,9 +270,9 @@ static bool lt_cmp(Tb_log_table_entry *a, Tb_log_table_entry *b) static void sort_tb_log_table() { - for (Tb_log_table_entry *p = _log_table; p < _log_table_end; ++p) + for (Tb_log_table_entry *p = _log_table; p < &_log_table_end; ++p) { - for (Tb_log_table_entry *x = _log_table_end -1; x > p; --x) + for (Tb_log_table_entry *x = &_log_table_end -1; x > p; --x) if (lt_cmp(x, x - 1)) swap(x - 1, x); } @@ -283,7 +283,8 @@ static void Jdb_log_list::move_dups() { - _end = _log_table_end; + _end = &_log_table_end; + Tb_log_table_entry *const tab_end = &_log_table_end; for (Tb_log_table_entry *p = _log_table + 1; p < _end;) { if (equal(p-1, p)) @@ -292,8 +293,8 @@ Jdb_log_list::move_dups() if (p < _end) { Tb_log_table_entry tmp = *p; - memmove(p, p + 1, sizeof(Tb_log_table_entry) * (_log_table_end - p - 1)); - *(_log_table_end - 1) = tmp; + memmove(p, p + 1, sizeof(Tb_log_table_entry) * (tab_end - p - 1)); + *(tab_end - 1) = tmp; } else break; @@ -328,7 +329,7 @@ PUBLIC Jdb_module::Action_code Jdb_log::action(int, void *&, char const *&, int &) { - if (_log_table >= _log_table_end) + if (_log_table >= &_log_table_end) return NOTHING; Jdb_log_list list; diff --git a/kernel/fiasco/src/jdb/ppc32/jdb-ppc32.cpp b/kernel/fiasco/src/jdb/ppc32/jdb-ppc32.cpp index a5125a0f0..0cedf3e8e 100644 --- a/kernel/fiasco/src/jdb/ppc32/jdb-ppc32.cpp +++ b/kernel/fiasco/src/jdb/ppc32/jdb-ppc32.cpp @@ -233,3 +233,11 @@ PUBLIC static void Jdb::write_tsc(Signed64 /*tsc*/, char * /*buf*/, int /*maxlen*/, bool /*sign*/) {} + +PROTECTED static inline +template< typename T > +void +Jdb::set_monitored_address(T *dest, T val) +{ + *dest = val; +} diff --git a/kernel/fiasco/src/jdb/ux/jdb-ux.cpp b/kernel/fiasco/src/jdb/ux/jdb-ux.cpp index 8f58568cc..19de88941 100644 --- a/kernel/fiasco/src/jdb/ux/jdb-ux.cpp +++ b/kernel/fiasco/src/jdb/ux/jdb-ux.cpp @@ -470,6 +470,19 @@ Jdb::leave_getchar() tcsetattr (fileno (stdin), TCSAFLUSH, &raw); } +PROTECTED static inline +template< typename T > +void +Jdb::set_monitored_address(T *dest, T val) +{ *dest = val; } + +PROTECTED static inline +template< typename T > +T Jdb::monitor_address(unsigned, T volatile *addr) +{ + return *addr; +} + //---------------------------------------------------------------------------- IMPLEMENTATION [ux && mp]: diff --git a/kernel/fiasco/src/kern/arm/bsp/imx/reset-arm-imx.cpp b/kernel/fiasco/src/kern/arm/bsp/imx/reset-arm-imx.cpp index 89dd4c571..7e7776f21 100644 --- a/kernel/fiasco/src/kern/arm/bsp/imx/reset-arm-imx.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/imx/reset-arm-imx.cpp @@ -4,7 +4,7 @@ IMPLEMENTATION [arm && imx21]: #include "kmem.h" void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { enum { WCR = Kmem::Watchdog_map_base + 0, @@ -31,7 +31,7 @@ IMPLEMENTATION [arm && (imx35 || imx51)]: #include "kmem.h" void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { enum { WCR = Kmem::Watchdog_map_base + 0, diff --git a/kernel/fiasco/src/kern/arm/bsp/integrator/reset-arm-integrator.cpp b/kernel/fiasco/src/kern/arm/bsp/integrator/reset-arm-integrator.cpp index 5b43e5fc6..8c99e7f70 100644 --- a/kernel/fiasco/src/kern/arm/bsp/integrator/reset-arm-integrator.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/integrator/reset-arm-integrator.cpp @@ -4,7 +4,7 @@ IMPLEMENTATION [arm && integrator]: #include "kmem.h" void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { enum { HDR_CTRL_OFFSET = Kmem::Integrator_map_base + 0xc, diff --git a/kernel/fiasco/src/kern/arm/bsp/kirkwood/reset-arm-kirkwood.cpp b/kernel/fiasco/src/kern/arm/bsp/kirkwood/reset-arm-kirkwood.cpp index b52ad1423..884b62fbf 100644 --- a/kernel/fiasco/src/kern/arm/bsp/kirkwood/reset-arm-kirkwood.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/kirkwood/reset-arm-kirkwood.cpp @@ -17,7 +17,7 @@ public: IMPLEMENTATION [arm && kirkwood]: void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { // enable software reset Io::write(1 << 2, Kirkwood_reset::Mask_reg); diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/Kconfig b/kernel/fiasco/src/kern/arm/bsp/omap3/Kconfig index c69a239d4..70079b36d 100644 --- a/kernel/fiasco/src/kern/arm/bsp/omap3/Kconfig +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/Kconfig @@ -1,23 +1,30 @@ -# PF: OMAP3 -# PFDESCR: OMAP3 +# PF: OMAP +# PFDESCR: TI OMAP # PFDEPENDS: ARM choice - prompt "OMAP3 Platform" + prompt "OMAP Platform" default PF_OMAP3_EVM config PF_OMAP3_EVM bool "TI OMAP3EVM" - depends on PF_OMAP3 + depends on PF_OMAP select CAN_ARM_CPU_CORTEX_A8 help Choose for OMAP3EVM. config PF_OMAP3_BEAGLEBOARD bool "Beagle Board" - depends on PF_OMAP3 + depends on PF_OMAP select CAN_ARM_CPU_CORTEX_A8 help Choose for Beagleboard. +config PF_OMAP4_PANDABOARD + bool "Pandaboard" + depends on PF_OMAP + select CAN_ARM_CPU_CORTEX_A9 + help + Choose for Pandaboard. + endchoice diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/Modules b/kernel/fiasco/src/kern/arm/bsp/omap3/Modules index bb024bfe3..1e057aa05 100644 --- a/kernel/fiasco/src/kern/arm/bsp/omap3/Modules +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/Modules @@ -2,17 +2,23 @@ SUBSYSTEMS += LIBUART OBJECTS_LIBUART += uart_omap35x.o -PREPROCESS_PARTS += omap3 libuart -PREPROCESS_PARTS += $(if $(CONFIG_PF_OMAP3_EVM),omap3_evm) -PREPROCESS_PARTS += $(if $(CONFIG_PF_OMAP3_BEAGLEBOARD),omap3_beagleboard) +PREPROCESS_PARTS += omap libuart +PREPROCESS_PARTS += $(if $(CONFIG_PF_OMAP3_EVM),omap3 omap3_evm) +PREPROCESS_PARTS += $(if $(CONFIG_PF_OMAP3_BEAGLEBOARD),omap3 omap3_beagleboard) +PREPROCESS_PARTS += $(if $(CONFIG_PF_OMAP4_PANDABOARD),omap4 mptimer pic_gic omap4_pandaboard) CONFIG_KERNEL_LOAD_ADDR := 0x80000000 +MPCORE_PHYS_BASE := 0x48240000 -uart_IMPL += uart-arm-omap3 -config_IMPL += config-arm-omap3 -mem_layout_IMPL += mem_layout-arm-omap3 -pic_IMPL += pic-arm-omap3 -bootstrap_IMPL += bootstrap-arm-omap3 -timer_IMPL += timer-arm-omap3 -kernel_uart_IMPL += kernel_uart-arm-omap3 -reset_IMPL += reset-arm-omap3 +INTERFACES_KERNEL += $(if $(CONFIG_MP),boot_mp) +INTERFACES_KERNEL += $(if $(CONFIG_PF_OMAP4_PANDABOARD),gic) + +uart_IMPL += uart-arm-omap +config_IMPL += config-arm-omap +mem_layout_IMPL += mem_layout-arm-omap +pic_IMPL += $(if $(CONFIG_PF_OMAP4_PANDABOARD),pic-arm-gic-omap4,pic-arm-omap3) +bootstrap_IMPL += bootstrap-arm-omap +timer_IMPL += $(if $(CONFIG_PF_OMAP4_PANDABOARD),timer-arm-mptimer timer-arm-mptimer-omap4,timer-arm-omap3) +kernel_uart_IMPL += kernel_uart-arm-omap +reset_IMPL += reset-arm-omap clock_IMPL += clock-generic +boot_mp_IMPL += boot_mp-arm-omap4 diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/boot_mp-arm-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/boot_mp-arm-omap4.cpp new file mode 100644 index 000000000..e3cf796c5 --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/boot_mp-arm-omap4.cpp @@ -0,0 +1,60 @@ +INTERFACE [arm && mp && omap4]: + +#include "types.h" + +class Boot_mp +{ +}; + +IMPLEMENTATION [arm && mp && omap4]: + +#include "io.h" +#include "kmem.h" + +PRIVATE +void +Boot_mp::aux(unsigned cmd, Mword arg0, Mword arg1) +{ + register unsigned long r0 asm("r0") = arg0; + register unsigned long r1 asm("r1") = arg1; + register unsigned long r12 asm("r12") = cmd; + + asm volatile("dsb; smc #0" + : : "r" (r0), "r" (r1), "r" (r12) + : "r2", "r3", "r4", "r5", "r6", + "r7", "r8", "r9", "r10", "r11", "lr", "memory"); +} + +PUBLIC +void +Boot_mp::start_ap_cpus(Address phys_tramp_mp_addr) +{ + // two possibilities available, the memory mapped only in later board + // revisions + if (1) + { + enum { + AUX_CORE_BOOT_0 = 0x104, + AUX_CORE_BOOT_1 = 0x105, + }; + aux(AUX_CORE_BOOT_1, phys_tramp_mp_addr, 0); + asm volatile("dsb; sev" : : : "memory"); + aux(AUX_CORE_BOOT_0, 0x200, 0xfffffdff); + } + else + { + enum { + AUX_CORE_BOOT_0 = Kmem::Devices2_map_base + 0x81800, + AUX_CORE_BOOT_1 = Kmem::Devices2_map_base + 0x81804, + }; + Io::write(phys_tramp_mp_addr, AUX_CORE_BOOT_1); + asm volatile("dsb; sev" : : : "memory"); + Io::write((Io::read(AUX_CORE_BOOT_0) & ~0xfffffdff) | 0x200, + AUX_CORE_BOOT_0); + } +} + +PUBLIC +void +Boot_mp::cleanup() +{} diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/bootstrap-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/bootstrap-arm-omap.cpp new file mode 100644 index 000000000..403f86e8d --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/bootstrap-arm-omap.cpp @@ -0,0 +1,21 @@ +INTERFACE [arm && omap]: + +enum { + Cache_flush_area = 0, +}; + +//----------------------------------------------------------------------------- +IMPLEMENTATION [arm && omap]: + +#include "mem_layout.h" +#include "io.h" + +void +map_hw(void *pd) +{ + // map devices + map_1mb(pd, Mem_layout::Devices1_map_base, Mem_layout::Devices1_phys_base, false, false); + map_1mb(pd, Mem_layout::Devices2_map_base, Mem_layout::Devices2_phys_base, false, false); + map_1mb(pd, Mem_layout::Devices3_map_base, Mem_layout::Devices3_phys_base, false, false); + map_1mb(pd, Mem_layout::Devices4_map_base, Mem_layout::Devices4_phys_base, false, false); +} diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/config-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/config-arm-omap.cpp new file mode 100644 index 000000000..292ce4d56 --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/config-arm-omap.cpp @@ -0,0 +1,32 @@ +INTERFACE[arm && omap3_evm]: +#define TARGET_NAME "OMAP3EVM" + +INTERFACE[arm && omap3_beagleboard]: +#define TARGET_NAME "Beagleboard" + +INTERFACE[arm && omap4_pandaboard]: +#define TARGET_NAME "Pandaboard" + +INTERFACE [arm && omap3]: + +EXTENSION class Config +{ +public: + enum + { + Scheduling_irq = 37, + Max_num_dirqs = 96, + }; +}; + +INTERFACE [arm && omap4_pandaboard]: + +EXTENSION class Config +{ +public: + enum + { + Scheduling_irq = 29, + Max_num_dirqs = 160, + }; +}; diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/kernel_uart-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/kernel_uart-arm-omap.cpp new file mode 100644 index 000000000..14a479544 --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/kernel_uart-arm-omap.cpp @@ -0,0 +1,15 @@ +INTERFACE: + +// On ARM the MMIO for the uart is accessible before the MMU is fully up +EXTENSION class Kernel_uart { enum { Bsp_init_mode = Init_before_mmu }; }; + +IMPLEMENTATION [arm && omap && serial]: + +#include "mem_layout.h" + +IMPLEMENT +bool Kernel_uart::startup(unsigned port, int /*irq*/) +{ + if(port!=3) return false; + return Uart::startup(Mem_layout::Uart_base, 123456); +} diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/mem_layout-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/mem_layout-arm-omap.cpp new file mode 100644 index 000000000..2e1022aaf --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/mem_layout-arm-omap.cpp @@ -0,0 +1,98 @@ +INTERFACE [arm && omap3]: //----------------------------------------------- + +EXTENSION class Mem_layout +{ +public: + enum Virt_layout_omap3 { + Devices1_map_base = Registers_map_start, + L4_addr_prot_map_base = Devices1_map_base + 0x00040000, + Uart1_map_base = Devices1_map_base + 0x0006a000, + Gptimer10_map_base = Devices1_map_base + 0x00086000, + Wkup_cm_map_base = Devices1_map_base + 0x00004c00, + + Devices2_map_base = Registers_map_start + 0x00100000, + Intc_map_base = Devices2_map_base + 0x0, + + Devices3_map_base = Registers_map_start + 0x00200000, + Gptimer1_map_base = Devices3_map_base + 0x00018000, + Prm_global_reg_map_base = Devices3_map_base + 0x00007200, + + Devices4_map_base = Registers_map_start + 0x00300000, + Uart3_map_base = Devices4_map_base + 0x00020000, + + Timer_base = Gptimer1_map_base, + }; + + enum Phys_layout_omap3 { + Devices1_phys_base = 0x48000000, + L4_addr_prot_phys_base = Devices1_phys_base + 0x00040000, + Uart1_phys_base = Devices1_phys_base + 0x0006a000, + Gptimer10_phys_base = Devices1_phys_base + 0x00086000, + Wkup_cm_phys_base = Devices1_phys_base + 0x00004c00, + + Devices2_phys_base = 0x48200000, + Intc_phys_base = Devices2_phys_base + 0x0, + + Devices3_phys_base = 0x48300000, + Gptimer1_phys_base = Devices3_phys_base + 0x00018000, + Prm_global_reg_phys_base = Devices3_phys_base + 0x00007200, + + Devices4_phys_base = 0x49000000, + Uart3_phys_base = Devices4_phys_base + 0x00020000, + + Sdram_phys_base = 0x80000000, + + Flush_area_phys_base = 0xe0000000, + }; +}; + +INTERFACE [arm && omap3_evm]: //------------------------------------------- + +EXTENSION class Mem_layout +{ +public: + enum Virt_layout_omap3_evm { + Uart_base = Uart1_map_base, + }; +}; + +INTERFACE [arm && omap3_beagleboard]: //----------------------------------- + +EXTENSION class Mem_layout +{ +public: + enum Virt_layout_omap3_beagleboard { + Uart_base = Uart3_map_base, + }; +}; + +INTERFACE [arm && omap4]: //----------------------------------------------- + +EXTENSION class Mem_layout +{ +public: + enum Phys_layout_omap4 { + Devices1_phys_base = 0x48000000, + Devices2_phys_base = 0x48200000, + Devices3_phys_base = 0x4a300000, + Devices4_phys_base = 0x49000000, + Sdram_phys_base = 0x80000000, + }; + + enum Virt_layout_omap4_pandaboard { + Devices1_map_base = Registers_map_start, + Devices2_map_base = Registers_map_start + 0x00100000, + Devices3_map_base = Registers_map_start + 0x00200000, + Devices4_map_base = Registers_map_start + 0x00300000, + + Uart_base = Devices1_map_base + 0x20000, + Mp_scu_map_base = Devices2_map_base + 0x40000, + Gic_cpu_map_base = Devices2_map_base + 0x40100, + Gic_dist_map_base = Devices2_map_base + 0x41000, + + __Timer = Devices2_map_base + 0x40600, + __PL310 = Devices2_map_base + 0x42000, + + Prm_map_base = Devices3_map_base + 0x6000, + }; +}; diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp new file mode 100644 index 000000000..e5ab55a9e --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-gic-omap4.cpp @@ -0,0 +1,72 @@ +INTERFACE [arm && pic_gic && omap4]: + +#include "gic.h" + +EXTENSION class Pic +{ +public: + enum + { + Multi_irq_pending = 0, + No_irq_pending = 1023, + }; +}; + +//------------------------------------------------------------------- +IMPLEMENTATION [arm && pic_gic && omap4]: + +#include "config.h" +#include "initcalls.h" +#include "irq_chip.h" +#include "irq_chip_generic.h" +#include "kmem.h" + +Gic Gic_pin::_gic[1]; + +class Irq_chip_omap4 : public Irq_chip_gen +{ +}; + +PUBLIC +void +Irq_chip_omap4::setup(Irq_base *irq, unsigned irqnum) +{ + irq->pin()->replace(0, irqnum); +} + +IMPLEMENT FIASCO_INIT +void +Pic::init() +{ + static Irq_chip_omap4 _ia; + Irq_chip::hw_chip = &_ia; + + Gic_pin::_gic[0].init(Kmem::Gic_cpu_map_base, Kmem::Gic_dist_map_base); +} + +IMPLEMENT inline +Pic::Status Pic::disable_all_save() +{ return 0; } + +IMPLEMENT inline +void Pic::restore_all(Status) +{} + +PUBLIC static inline +Unsigned32 Pic::pending() +{ + return Gic_pin::_gic[0].pending(); +} + +PUBLIC static inline +Mword Pic::is_pending(Mword &irqs, Mword irq) +{ return irqs == irq; } + +//------------------------------------------------------------------- +IMPLEMENTATION [arm && mp && pic_gic && omap4]: + +PUBLIC static +void Pic::init_ap() +{ + Gic_pin::_gic[0].init_ap(); +} diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-omap3.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-omap3.cpp index c7c96f51a..130805424 100644 --- a/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-omap3.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/pic-arm-omap3.cpp @@ -31,7 +31,6 @@ public: }; }; - //------------------------------------------------------------------- IMPLEMENTATION [arm && omap3]: diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/reset-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/reset-arm-omap.cpp new file mode 100644 index 000000000..8d3766ca7 --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/reset-arm-omap.cpp @@ -0,0 +1,38 @@ +IMPLEMENTATION [arm && omap3]: + +#include "io.h" +#include "kmem.h" + +void __attribute__ ((noreturn)) +platform_reset(void) +{ + enum + { + PRM_RSTCTRL = Kmem::Prm_global_reg_map_base + 0x50, + }; + + Io::write(2, PRM_RSTCTRL); + + for (;;) + ; +} + +IMPLEMENTATION [arm && omap4]: + +#include "io.h" +#include "kmem.h" + +void __attribute__ ((noreturn)) +platform_reset(void) +{ + enum + { + DEVICE_PRM = Kmem::Prm_map_base + 0x1b00, + PRM_RSTCTRL = DEVICE_PRM + 0, + }; + + Io::write(1, PRM_RSTCTRL); + + for (;;) + ; +} diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/timer-arm-mptimer-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/timer-arm-mptimer-omap4.cpp new file mode 100644 index 000000000..0bdc6407f --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/timer-arm-mptimer-omap4.cpp @@ -0,0 +1,8 @@ +// -------------------------------------------------------------------------- +INTERFACE [arm && mptimer && omap4_pandaboard]: + +EXTENSION class Timer +{ +private: + enum { Interval = 499999, }; +}; diff --git a/kernel/fiasco/src/kern/arm/bsp/omap3/uart-arm-omap.cpp b/kernel/fiasco/src/kern/arm/bsp/omap3/uart-arm-omap.cpp new file mode 100644 index 000000000..e2e6e1f8f --- /dev/null +++ b/kernel/fiasco/src/kern/arm/bsp/omap3/uart-arm-omap.cpp @@ -0,0 +1,29 @@ +IMPLEMENTATION [arm && omap3_evm]: // ------------------------------------- + +#include "arm/uart_omap35x.h" + +IMPLEMENT L4::Uart *Uart::uart() +{ + static L4::Uart_omap35x uart(72, 72); + return &uart; +} + +IMPLEMENTATION [arm && omap3_beagleboard]: // ----------------------------- + +#include "arm/uart_omap35x.h" + +IMPLEMENT L4::Uart *Uart::uart() +{ + static L4::Uart_omap35x uart(74, 74); + return &uart; +} + +IMPLEMENTATION [arm && omap4_pandaboard]: // ----------------------------- + +#include "arm/uart_omap35x.h" + +IMPLEMENT L4::Uart *Uart::uart() +{ + static L4::Uart_omap35x uart(32 + 74, 32 + 74); + return &uart; +} diff --git a/kernel/fiasco/src/kern/arm/bsp/pxa/reset-arm-pxa.cpp b/kernel/fiasco/src/kern/arm/bsp/pxa/reset-arm-pxa.cpp index 7938a273a..bd5dba4ed 100644 --- a/kernel/fiasco/src/kern/arm/bsp/pxa/reset-arm-pxa.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/pxa/reset-arm-pxa.cpp @@ -4,7 +4,7 @@ IMPLEMENTATION [arm && pxa]: #include "io.h" void __attribute__ ((noreturn)) - pc_reset(void) +platform_reset(void) { enum { OSCR = Kmem::Timer_map_base + 0x10, diff --git a/kernel/fiasco/src/kern/arm/bsp/realview/reset-arm-realview.cpp b/kernel/fiasco/src/kern/arm/bsp/realview/reset-arm-realview.cpp index 1ae3f60dd..cb5a6c9f5 100644 --- a/kernel/fiasco/src/kern/arm/bsp/realview/reset-arm-realview.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/realview/reset-arm-realview.cpp @@ -41,7 +41,7 @@ static inline void do_reset() IMPLEMENTATION [arm && realview]: void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { Io::write(0xa05f, Realview_reset::LOCK); // unlock for reset do_reset(); diff --git a/kernel/fiasco/src/kern/arm/bsp/s3c/reset-arm-s3c2410.cpp b/kernel/fiasco/src/kern/arm/bsp/s3c/reset-arm-s3c2410.cpp index 63c7a900d..79fdff4fd 100644 --- a/kernel/fiasco/src/kern/arm/bsp/s3c/reset-arm-s3c2410.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/s3c/reset-arm-s3c2410.cpp @@ -4,7 +4,7 @@ IMPLEMENTATION [arm && s3c2410]: #include "kmem.h" void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { enum { WTCON = Kmem::Watchdog_map_base + 0x0, diff --git a/kernel/fiasco/src/kern/arm/bsp/sa1100/reset-arm-sa1100.cpp b/kernel/fiasco/src/kern/arm/bsp/sa1100/reset-arm-sa1100.cpp index 777f02261..d1920e753 100644 --- a/kernel/fiasco/src/kern/arm/bsp/sa1100/reset-arm-sa1100.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/sa1100/reset-arm-sa1100.cpp @@ -7,7 +7,7 @@ IMPLEMENTATION [arm && sa1100]: typedef Sa1100_generic Sa1100; void __attribute__ ((noreturn)) - pc_reset(void) +platform_reset(void) { Io::write( (Mword)Sa1100::RSRR_SWR, (Address)Sa1100::RSRR ); for (;;) diff --git a/kernel/fiasco/src/kern/arm/bsp/tegra2/reset-arm-tegra2.cpp b/kernel/fiasco/src/kern/arm/bsp/tegra2/reset-arm-tegra2.cpp index 0c9666add..e7e042a12 100644 --- a/kernel/fiasco/src/kern/arm/bsp/tegra2/reset-arm-tegra2.cpp +++ b/kernel/fiasco/src/kern/arm/bsp/tegra2/reset-arm-tegra2.cpp @@ -16,7 +16,7 @@ public: IMPLEMENTATION [arm && tegra2]: void __attribute__ ((noreturn)) -pc_reset(void) +platform_reset(void) { Io::write(Io::read(Tegra2_reset::RESET) | 4, Tegra2_reset::RESET); for (;;) diff --git a/kernel/fiasco/src/kern/arm/cpu-arm.cpp b/kernel/fiasco/src/kern/arm/cpu-arm.cpp index 3ff193569..c9b83d341 100644 --- a/kernel/fiasco/src/kern/arm/cpu-arm.cpp +++ b/kernel/fiasco/src/kern/arm/cpu-arm.cpp @@ -108,8 +108,6 @@ public: Cp15_c1_cache_bits = Cp15_c1_cache | Cp15_c1_insn_cache, - - Smp_enable = 0x20, }; }; @@ -157,8 +155,6 @@ public: | Cp15_c1_high_vector | Cp15_c1_rao_sbop | (Config::Cp15_c1_use_a9_swp_enable ? Cp15_c1_sw : 0), - - Smp_enable = 0x41, }; }; @@ -173,14 +169,52 @@ public: }; }; +//--------------------------------------------------------------------------- +IMPLEMENTATION [arm && armv6]: + +PRIVATE static inline void +Cpu::enable_smp() +{ + asm volatile ("mrc p15, 0, %0, c1, c0, 1 \n" + "orr %0, %1 \n" + "mcr p15, 0, %0, c1, c0, 1 \n" + : : "r" (0), "i" (0x20)); +} + +//--------------------------------------------------------------------------- +IMPLEMENTATION [arm && armv7]: + +PRIVATE static inline void +Cpu::enable_smp() +{ + Mword midr; + asm volatile ("mrc p15, 0, %0, c0, c0, 0" : "=r" (midr)); + + // ACTRL is implementation defined + if ((midr & 0xff0ffff0) != 0x410fc090) + return; + + Mword actrl; + asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (actrl)); + if (!(actrl & 0x40)) + asm volatile ("mcr p15, 0, %0, c1, c0, 1" : : "r" (actrl | 0x41)); +} + //--------------------------------------------------------------------------- IMPLEMENTATION [arm && (mpcore || armca9)]: -PUBLIC static inline void +PRIVATE static inline void Cpu::early_init_platform() { - Io::write(0xffffffff, Mem_layout::Mp_scu_map_base + 0xc); - Io::write(1, Mem_layout::Mp_scu_map_base + 0); + enum { + Scu_control = Mem_layout::Mp_scu_map_base + 0x0, + Scu_config = Mem_layout::Mp_scu_map_base + 0x4, + Scu_power_status = Mem_layout::Mp_scu_map_base + 0x8, + Scu_inv = Mem_layout::Mp_scu_map_base + 0xc, + }; + + Io::write(0xffffffff, Scu_inv); + Io::write(Io::read(Scu_control) | 1, Scu_control); Io::write(Io::read(Mem_layout::Gic_cpu_map_base + 0) | 1, Mem_layout::Gic_cpu_map_base + 0); @@ -189,17 +223,13 @@ Cpu::early_init_platform() Mem_unit::clean_dcache(); - Mword tmp = 0; - __asm__ __volatile__("mrc p15, 0, %0, c1, c0, 1 \n" - "orr %0, %1 \n" - "mcr p15, 0, %0, c1, c0, 1 \n" - : : "r" (tmp), "i" (Smp_enable)); + enable_smp(); } //--------------------------------------------------------------------------- IMPLEMENTATION [arm && !(mpcore || armca9)]: -PUBLIC static inline void Cpu::early_init_platform() +PRIVATE static inline void Cpu::early_init_platform() {} //--------------------------------------------------------------------------- diff --git a/kernel/fiasco/src/kern/arm/entry_frame-arm.cpp b/kernel/fiasco/src/kern/arm/entry_frame-arm.cpp index ce9ba85de..dc4ad74f8 100644 --- a/kernel/fiasco/src/kern/arm/entry_frame-arm.cpp +++ b/kernel/fiasco/src/kern/arm/entry_frame-arm.cpp @@ -29,12 +29,16 @@ IMPLEMENTATION [arm]: #include -IMPLEMENT //inline +IMPLEMENT void Syscall_frame::dump() { - for(int i = 0; i < 15; i+=4 ) - printf("R[%2d]: %08lx R[%2d]: %08lx R[%2d]: %08lx R[%2d]: %08lx\n", - i,r[i],i+1,r[i+1],i+2,r[i+2],i+3,r[i+3]); + printf(" R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", + r[0], r[1], r[2], r[3]); + printf(" R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", + r[4], r[5], r[6], r[7]); + printf(" R8: %08lx R9: %08lx R10: %08lx R11: %08lx\n", + r[8], r[9], r[10], r[11]); + printf("R12: %08lx\n", r[12]); } IMPLEMENT inline diff --git a/kernel/fiasco/src/kern/arm/ivt.S b/kernel/fiasco/src/kern/arm/ivt.S index 0c4e5a1e9..83d28f46c 100644 --- a/kernel/fiasco/src/kern/arm/ivt.S +++ b/kernel/fiasco/src/kern/arm/ivt.S @@ -699,7 +699,7 @@ fiq_label: .string "FIQ entry" kdebug entry **********************************************************************/ -.macro DEBUGGER_ENTRY errorcode +.macro DEBUGGER_ENTRY type #ifdef CONFIG_JDB str sp, [sp, #(RF(USR_SP, -RF_SIZE))] @ save r[13] sub sp, sp, #(RF_SIZE) @@ -711,7 +711,8 @@ fiq_label: .string "FIQ entry" stmdb sp!, {r0 - r12} mov r0, #-1 @ pfa - mov r1, #\errorcode @ err + mov r1, #0x00e00000 @ err + orr r1, #\type @ + type stmdb sp!, {r0, r1} mov r0, sp @@ -738,7 +739,12 @@ fiq_label: .string "FIQ entry" .global kern_kdebug_entry .align 4 kern_kdebug_entry: - DEBUGGER_ENTRY 0x00e00000 + DEBUGGER_ENTRY 0 + + .global kern_kdebug_sequence_entry + .align 4 +kern_kdebug_sequence_entry: + DEBUGGER_ENTRY 1 #ifdef CONFIG_MP @@ -746,7 +752,7 @@ kern_kdebug_entry: .global kern_kdebug_ipi_entry .align 4 kern_kdebug_ipi_entry: - DEBUGGER_ENTRY 0x00f00000 + DEBUGGER_ENTRY 2 .previous #endif diff --git a/kernel/fiasco/src/kern/arm/kdb_ke-arm.cpp b/kernel/fiasco/src/kern/arm/kdb_ke-arm.cpp index 97e9c2f10..edf4b33ab 100644 --- a/kernel/fiasco/src/kern/arm/kdb_ke-arm.cpp +++ b/kernel/fiasco/src/kern/arm/kdb_ke-arm.cpp @@ -3,6 +3,6 @@ INTERFACE [arm]: void kdb_ke(const char *msg) asm ("kern_kdebug_entry") __attribute__((long_call)); -void kdb_ke_sequence(const char *msg) asm ("kern_kdebug_entry") +void kdb_ke_sequence(const char *msg) asm ("kern_kdebug_sequence_entry") __attribute__((long_call)); diff --git a/kernel/fiasco/src/kern/arm/main.cpp b/kernel/fiasco/src/kern/arm/main.cpp index ecceeff37..e28aee61d 100644 --- a/kernel/fiasco/src/kern/arm/main.cpp +++ b/kernel/fiasco/src/kern/arm/main.cpp @@ -29,10 +29,14 @@ static int exit_question_active = 0; extern "C" void __attribute__ ((noreturn)) _exit(int) { - if(exit_question_active) - pc_reset(); - else - while(1) { Proc::halt(); Proc::pause(); } + if (exit_question_active) + platform_reset(); + + while (1) + { + Proc::halt(); + Proc::pause(); + } } @@ -57,7 +61,7 @@ static void exit_question() // problems. // SO just do the reset at this point. puts("\033[1mRebooting...\033[0m"); - pc_reset(); + platform_reset(); break; } } diff --git a/kernel/fiasco/src/kern/arm/mem_space-arm.cpp b/kernel/fiasco/src/kern/arm/mem_space-arm.cpp index 0943afcad..5d118ccd3 100644 --- a/kernel/fiasco/src/kern/arm/mem_space-arm.cpp +++ b/kernel/fiasco/src/kern/arm/mem_space-arm.cpp @@ -96,6 +96,13 @@ Mem_space::xlate_flush(unsigned char rights) return a; } +PUBLIC static inline +Mword +Mem_space::is_full_flush(unsigned char rights) +{ + return rights & L4_fpage::RX; +} + PUBLIC static inline unsigned char Mem_space::xlate_flush_result(Mword attribs) diff --git a/kernel/fiasco/src/kern/arm/pagetable-arch.cpp b/kernel/fiasco/src/kern/arm/pagetable-arch.cpp index 47b3317f7..0a34306b4 100644 --- a/kernel/fiasco/src/kern/arm/pagetable-arch.cpp +++ b/kernel/fiasco/src/kern/arm/pagetable-arch.cpp @@ -525,14 +525,15 @@ IMPLEMENTATION [arm]: #include "mem.h" IMPLEMENT -void * Page_table::operator new( size_t s ) +void *Page_table::operator new(size_t s) { + (void)s; assert(s == 16*1024); return alloc()->alloc(14); // 2^14 = 16K } IMPLEMENT -void Page_table::operator delete( void *b ) +void Page_table::operator delete(void *b) { alloc()->free(14, b); } diff --git a/kernel/fiasco/src/kern/arm/paging-arm.cpp b/kernel/fiasco/src/kern/arm/paging-arm.cpp index 528034ac5..983afe1d5 100644 --- a/kernel/fiasco/src/kern/arm/paging-arm.cpp +++ b/kernel/fiasco/src/kern/arm/paging-arm.cpp @@ -140,7 +140,7 @@ IMPLEMENTATION [arm && (armv6 || armv7)]: PUBLIC static inline Mword PF::is_alignment_error(Mword error) -{ return (error & 0xf00a0f) == 0x400001; } +{ return (error & 0xf0040f) == 0x400001; } //--------------------------------------------------------------------------- IMPLEMENTATION [arm]: diff --git a/kernel/fiasco/src/kern/arm/tramp-mp.S b/kernel/fiasco/src/kern/arm/tramp-mp.S index e26fc5521..c9bbfb752 100644 --- a/kernel/fiasco/src/kern/arm/tramp-mp.S +++ b/kernel/fiasco/src/kern/arm/tramp-mp.S @@ -39,36 +39,48 @@ invalidate_l1_v7: .global _tramp_mp_entry _tramp_mp_entry: // IRQs off, SVC - mrs r0, cpsr - orr r0, #0xd3 - msr cpsr_c, r0 + mrs r0, cpsr + orr r0, #0xd3 + msr cpsr_c, r0 // enable SMP - adr r0, .Lmpcore_phys_base - ldr r0, [r0] - ldr r1, [r0] - orr r1, #1 - str r1, [r0] + adr r0, .Lmpcore_phys_base + ldr r0, [r0] + ldr r1, [r0] + orr r1, #1 + str r1, [r0] #ifdef CONFIG_ARM_V7 - bl invalidate_l1_v7 + bl invalidate_l1_v7 #endif - mcr p15, 0, r0, c7, c5, 0 // ICIALLU - mcr p15, 0, r0, c7, c5, 6 // BPIALL + mcr p15, 0, r0, c7, c5, 0 // ICIALLU + mcr p15, 0, r0, c7, c5, 6 // BPIALL - mcr p15, 0, r0, c7, c10, 4 // dsb + mcr p15, 0, r0, c7, c10, 4 // dsb #ifdef CONFIG_ARM_V6 - mcr p15, 0, r0, c7, c7, 0 // inv both + mcr p15, 0, r0, c7, c7, 0 // inv both #endif - mrc p15, 0, r0, c1, c0, 1 + // ACTRL is implementation defined + mrc p15, 0, r0, c0, c0, 0 // read MIDR + adr r3, .Lactrl_cpuid // load addr + ldm r3, {r1,r2} // load mask + val + and r0, r1 // apply mask + teq r0, r2 // check value + bne 2f // only do mcr on this CPU + + mrc p15, 0, r0, c1, c0, 1 #ifdef CONFIG_ARM_V7 - orr r0, r0, #0x41 + tst r0, #0x40 + bne 2f + orr r0, r0, #0x41 #else - orr r0, r0, #0x20 + orr r0, r0, #0x20 #endif - mcr p15, 0, r0, c1, c0, 1 + mcr p15, 0, r0, c1, c0, 1 + +2: // TLB flush mcr p15, 0, r0, c8, c7, 0 @@ -100,6 +112,11 @@ _tramp_mp_entry: .Lmpcore_phys_base: .long MPCORE_PHYS_BASE +// only one currently +.Lactrl_cpuid: + .long 0xff0ffff0 + .long 0x410fc090 + // we run paged now _tramp_mp_virt: ldr r0, _cpu_counter_address diff --git a/kernel/fiasco/src/kern/buddy_alloc.cpp b/kernel/fiasco/src/kern/buddy_alloc.cpp index 96f282181..3ece2f476 100644 --- a/kernel/fiasco/src/kern/buddy_alloc.cpp +++ b/kernel/fiasco/src/kern/buddy_alloc.cpp @@ -54,8 +54,17 @@ public: }; private: + enum + { + // the number of bits in the bitmap is given by the amount of the smallest + // supported blocks. We need an extra bit in the case that the Max_mem + // is no multiple of Max_size to ensure that buddy() does not access + // beyond the bitmap. + Buddy_bits = (Max_mem + Min_size - 1)/Min_size + + !!(Max_mem & (Max_size-1)) + }; Head *_free[Num_sizes]; - Bitmap<(Max_mem+Min_size-1)/Min_size> _free_map; + Bitmap _free_map; }; @@ -91,6 +100,8 @@ Buddy_t_base::buddy(void *block, unsigned long index, Head **new_block) Head * const _buddy_h = (Head*)_buddy; + // this test may access one bit behind our maximum, this is safe because + // we allocated an extra bit if (_free_map[(_buddy - _base)/Min_size] && _buddy_h->index == index) return _buddy_h; @@ -117,7 +128,8 @@ Buddy_t_base::free(void *block, unsigned long size) size, (unsigned long)Min_size << size_index); - while (size_index < Num_sizes) + // no need to look for a buddy if we already have the biggest block size + while (size_index + 1 < Num_sizes) { Head *n, *b; b = buddy(block, size_index, &n); diff --git a/kernel/fiasco/src/kern/factory.cpp b/kernel/fiasco/src/kern/factory.cpp index 144130b1a..a6fbb7403 100644 --- a/kernel/fiasco/src/kern/factory.cpp +++ b/kernel/fiasco/src/kern/factory.cpp @@ -99,11 +99,10 @@ Factory::map_obj(Kobject_iface *o, Mword cap, Space *c_space, if (!map(o, o_space, c_space, cap, rl.list())) { delete o; - // FIXME: reap stuff if needed return commit_result(-L4_err::ENomem); } - // FIXME: reap stuff if needed + // return a tag with one typed item for the returned capability return commit_result(0, 0, 1); } diff --git a/kernel/fiasco/src/kern/ia32/32/thread-dbf.cpp b/kernel/fiasco/src/kern/ia32/32/thread-dbf.cpp index 84b28ef45..968cc53f6 100644 --- a/kernel/fiasco/src/kern/ia32/32/thread-dbf.cpp +++ b/kernel/fiasco/src/kern/ia32/32/thread-dbf.cpp @@ -96,5 +96,5 @@ Thread::handle_double_fault (void) } puts ("\033[1mRebooting...\033[0m"); - pc_reset(); + platform_reset(); } diff --git a/kernel/fiasco/src/kern/ia32/32/thread-ia32-32.cpp b/kernel/fiasco/src/kern/ia32/32/thread-ia32-32.cpp index 655577a9d..bb0da1e1a 100644 --- a/kernel/fiasco/src/kern/ia32/32/thread-ia32-32.cpp +++ b/kernel/fiasco/src/kern/ia32/32/thread-ia32-32.cpp @@ -291,7 +291,7 @@ Thread::invoke_arch(L4_msg_tag &tag, Utcb *utcb) if (this == current_thread()) switch_gdt_user_entries(this); - tag = Kobject_iface::commit_result(0); + tag = Kobject_iface::commit_result((utcb->values[1] << 3) + Gdt::gdt_user_entry1 + 3); return true; } diff --git a/kernel/fiasco/src/kern/ia32/64/entry.S b/kernel/fiasco/src/kern/ia32/64/entry.S index ec4a19696..570931f84 100644 --- a/kernel/fiasco/src/kern/ia32/64/entry.S +++ b/kernel/fiasco/src/kern/ia32/64/entry.S @@ -446,24 +446,24 @@ leave_by_vcpu_upcall: mov 32 + SCRATCH_REGISTER_SIZE(%rsp), %rdx mov %rdx, 32(%rcx) /* SS */ - mov 0(%rsp), %rdx /* R11 */ + mov (0*8)(%rsp), %rdx /* r11 */ mov %rdx, -(14*8)(%rcx) - mov 8(%rsp), %rdx /* R10 */ + mov (1*8)(%rsp), %rdx /* r10 */ mov %rdx, -(13*8)(%rcx) mov (2*8)(%rsp), %rdx - mov %rdx, -(12*8)(%rcx) + mov %rdx, -(12*8)(%rcx) /* r9 */ mov (3*8)(%rsp), %rdx - mov %rdx, -(11*8)(%rcx) + mov %rdx, -(11*8)(%rcx) /* r8 */ mov (4*8)(%rsp), %rdx - mov %rdx, -(5*8)(%rcx) + mov %rdx, -(5*8)(%rcx) /* rdx */ mov (5*8)(%rsp), %rdx - mov %rdx, -(4*8)(%rcx) + mov %rdx, -(4*8)(%rcx) /* rcx */ mov (6*8)(%rsp), %rdx - mov %rdx, -(3*8)(%rcx) + mov %rdx, -(3*8)(%rcx) /* rax */ mov (7*8)(%rsp), %rdx - mov %rdx, -(9*8)(%rcx) + mov %rdx, -(9*8)(%rcx) /* rsi */ mov (8*8)(%rsp), %rdx - mov %rdx, -(10*8)(%rcx) + mov %rdx, -(10*8)(%rcx) /* rdi */ lea SCRATCH_REGISTER_SIZE(%rsp), %rdx lea -(5*8)(%rcx), %rsp @@ -471,6 +471,11 @@ leave_by_vcpu_upcall: push %rbx sub $8, %rsp push %rbp + sub $(6*8), %rsp + push %r12 + push %r13 + push %r14 + push %r15 /*add SCRATCH_REGISTER_SIZE, %esp*/ #if 0 diff --git a/kernel/fiasco/src/kern/ia32/64/thread-dbf.cpp b/kernel/fiasco/src/kern/ia32/64/thread-dbf.cpp index 983d4ae6d..6187b766b 100644 --- a/kernel/fiasco/src/kern/ia32/64/thread-dbf.cpp +++ b/kernel/fiasco/src/kern/ia32/64/thread-dbf.cpp @@ -72,7 +72,7 @@ Thread::handle_double_fault (Trap_state *ts) } puts ("\033[1mRebooting...\033[0m"); - pc_reset(); + platform_reset(); } diff --git a/kernel/fiasco/src/kern/ia32/apic-ia32.cpp b/kernel/fiasco/src/kern/ia32/apic-ia32.cpp index a4eb5fb46..e3a6b9fca 100644 --- a/kernel/fiasco/src/kern/ia32/apic-ia32.cpp +++ b/kernel/fiasco/src/kern/ia32/apic-ia32.cpp @@ -11,14 +11,6 @@ class Apic public: static void init() FIASCO_INIT; - typedef enum - { - APIC_NONE, - APIC_P6, // Intel PPro, PIII - APIC_P4, // Intel PIV - APIC_K7 // AMD Athlon Model 2 - } Apic_type; - private: Apic(); // default constructors are undefined Apic(const Apic&); @@ -30,7 +22,6 @@ private: static const Address io_base; static Address phys_base; static unsigned timer_divisor; - static Apic_type type; static unsigned frequency_khz; static Unsigned64 scaler_us_to_apic; @@ -174,7 +165,6 @@ int Apic::good_cpu; const Address Apic::io_base = Mem_layout::Local_apic_page; Address Apic::phys_base; unsigned Apic::timer_divisor = 1; -Apic::Apic_type Apic::type = APIC_NONE; unsigned Apic::frequency_khz; Unsigned64 Apic::scaler_us_to_apic; @@ -316,24 +306,12 @@ Apic::test_cpu() if (cpu().vendor() == Cpu::Vendor_intel) { if (cpu().family() == 15) - { - // Intel PIV - type = APIC_P4; - return 1; - } - else if (cpu().family() >= 6) - { - // Intel PPro, PIII - type = APIC_P6; - return 1; - } + return 1; + if (cpu().family() >= 6) + return 1; } if (cpu().vendor() == Cpu::Vendor_amd && cpu().family() >= 6) - { - // >= AMD K7 Model 2 - type = APIC_K7; - return 1; - } + return 1; return 0; } @@ -662,7 +640,7 @@ Apic::check_still_getting_interrupts() // yes, succesful return 1; } while (Cpu::rdtsc() < tsc_until); - + // timeout return 0; } @@ -674,13 +652,6 @@ Apic::is_present() return present; } -PUBLIC static -inline int -Apic::cpu_type() -{ - return type; -} - PUBLIC static void Apic::set_perf_nmi() @@ -697,7 +668,7 @@ Apic::calibrate_timer() Unsigned32 count, tt1, tt2, result, dummy; Unsigned32 runs = 0, frequency_ok; - do + do { frequency_khz = 0; @@ -806,7 +777,6 @@ Apic::dump_info() { printf("Local APIC[%02x]: version=%02x max_lvt=%d\n", get_id() >> 24, get_version(), get_max_lvt()); - } IMPLEMENT @@ -815,46 +785,47 @@ Apic::init() { int was_present; - good_cpu = test_cpu(); + was_present = present = test_present(); + + if (!was_present) + { + good_cpu = test_cpu(); + + if (good_cpu && Config::apic) + { + // activate; this could lead an disabled APIC to appear + // set base address of I/O registers to be able to access the registers + activate_by_msr(); + present = test_present(); + } + } if (!Config::apic) return; - // check CPU type - if ((present = good_cpu)) + // initialize if available + if (present) { - // check cpu features of cpuid - was_present = test_present(); + // map the Local APIC device registers + map_apic_page(); - // activate; this could lead an disabled APIC to appear - // set base address of I/O registers to be able to access the registers - activate_by_msr(); + // set some interrupt vectors to appropriate values + init_lvt(); - // previous test_present() could have failed but we could have it - // activated by writing the msr so we have to test again - if ((present = test_present())) - { - // map the Local APIC device registers - map_apic_page(); - - // set some interrupt vectors to appropriate values - init_lvt(); + // initialize APIC_spiv register + init_spiv(); - // initialize APIC_spiv register - init_spiv(); + // initialize task-priority register + init_tpr(); - // initialize task-priority register - init_tpr(); - - // test if local timer counts down - if ((present = check_working())) - { - if (!was_present) - // APIC _was_ not present before writing to msr so we have - // to set APIC_lvt0 and APIC_lvt1 to appropriate values - route_pic_through_apic(); - } - } + // test if local timer counts down + if ((present = check_working())) + { + if (!was_present) + // APIC _was_ not present before writing to msr so we have + // to set APIC_lvt0 and APIC_lvt1 to appropriate values + route_pic_through_apic(); + } } if (!present) diff --git a/kernel/fiasco/src/kern/ia32/cpu-ia32.cpp b/kernel/fiasco/src/kern/ia32/cpu-ia32.cpp index 161108c61..d9b4e774f 100644 --- a/kernel/fiasco/src/kern/ia32/cpu-ia32.cpp +++ b/kernel/fiasco/src/kern/ia32/cpu-ia32.cpp @@ -96,12 +96,12 @@ private: Unsigned32 _l3_cache_size; Unsigned16 _l3_cache_asso; Unsigned16 _l3_cache_line_size; - + Unsigned8 _phys_bits; Unsigned8 _virt_bits; Vendor _vendor; - char _model_str[32]; + char _model_str[52]; Unsigned32 _arch_perfmon_info_eax; Unsigned32 _arch_perfmon_info_ebx; @@ -370,7 +370,6 @@ Cpu::Vendor_table const Cpu::intel_table[] FIASCO_INITDATA_CPU = { 0xf0ff0, 0x106a0, 0xffff, "Core i7 / Xeon, 45nm" }, { 0xf0ff0, 0x106b0, 0xffff, "Xeon MP, 45nm" }, { 0xf0ff0, 0x106c0, 0xffff, "Atom" }, - { 0xf0ff0, 0x206c0, 0xffff, "Xeon X5680 (and others?)" }, { 0x0, 0x0, 0xFFFF, "" } }; @@ -426,8 +425,6 @@ Cpu::Vendor_table const Cpu::amd_table[] FIASCO_INITDATA_CPU = { 0xfff0ff0, 0x040f30, 0, "Athlon 64 X2 (Windsor)" }, { 0xfff0ff0, 0x040f80, 0, "Turion 64 X2 (Taylor)" }, { 0xfff0ff0, 0x060fb0, 0, "Athlon 64 X2 (Brisbane)" }, - { 0xfff0ff0, 0x100f20, 0, "Phenom X3/Toliman / X4/Agena" }, - { 0xfff0ff0, 0x100f40, 0, "Opteron (Shanghai)" }, { 0x0, 0x0, 0, "" } }; @@ -864,6 +861,9 @@ Cpu::set_model_str() { Vendor_table const *table; + if (_model_str[0]) + return; + for (table = vendor_table[vendor()]; table && table->vendor_mask; table++) if ((_version & table->vendor_mask) == table->vendor_code && (table->l2_cache == 0xFFFF || _l2_cache_size >= table->l2_cache)) @@ -1034,6 +1034,13 @@ Cpu::identify() if (_vendor == Vendor_amd || _vendor == Vendor_via) cache_tlb_l1(); case 0x80000004: + { + Unsigned32 *s = (Unsigned32 *)_model_str; + for (unsigned i = 0; i < 3; ++i) + cpuid(0x80000002 + i, &s[0 + 4*i], &s[1 + 4*i], + &s[2 + 4*i], &s[3 + 4*i]); + _model_str[48] = 0; + } case 0x80000003: case 0x80000002: case 0x80000001: diff --git a/kernel/fiasco/src/kern/ia32/main-ia32.cpp b/kernel/fiasco/src/kern/ia32/main-ia32.cpp index 024ee1e8e..501ea102a 100644 --- a/kernel/fiasco/src/kern/ia32/main-ia32.cpp +++ b/kernel/fiasco/src/kern/ia32/main-ia32.cpp @@ -27,11 +27,11 @@ extern "C" void __attribute__ ((noreturn)) _exit(int) { if (exit_question_active) - pc_reset(); + platform_reset(); - while(1) - { - Proc::halt(); + while (1) + { + Proc::halt(); Proc::pause(); } } diff --git a/kernel/fiasco/src/kern/ia32/map_util-io.cpp b/kernel/fiasco/src/kern/ia32/map_util-io.cpp index 127c8fdd2..32606ec08 100644 --- a/kernel/fiasco/src/kern/ia32/map_util-io.cpp +++ b/kernel/fiasco/src/kern/ia32/map_util-io.cpp @@ -34,8 +34,8 @@ io_mapdb_instance() @return IPC error code that describes the status of the operation */ L4_error -io_map(Space *from, L4_fpage const &fp_from, - Space *to, L4_fpage const &fp_to, Mword control) +io_map(Space *from, L4_fpage const &fp_from, + Space *to, L4_fpage const &fp_to, L4_msg_item control) { /* printf("io_map %u -> %u " * "snd %08x base %x size %x rcv %08x base %x size %x\n", @@ -70,7 +70,7 @@ io_map(Space *from, L4_fpage const &fp_from, from->io_space(), from, snd_pos, snd_size, to->io_space(), to, snd_pos, - control & L4_fpage::Control_grant, add_attribs, del_attribs, + control.is_grant(), add_attribs, del_attribs, (Io_space::Reap_list**)0); } diff --git a/kernel/fiasco/src/kern/ia32/mem_space-ia32.cpp b/kernel/fiasco/src/kern/ia32/mem_space-ia32.cpp index 31741d79a..33854b457 100644 --- a/kernel/fiasco/src/kern/ia32/mem_space-ia32.cpp +++ b/kernel/fiasco/src/kern/ia32/mem_space-ia32.cpp @@ -116,6 +116,13 @@ Mem_space::xlate_flush(unsigned char rights) return a; } +PUBLIC static inline +Mword +Mem_space::is_full_flush(unsigned char rights) +{ + return rights & L4_fpage::RX; +} + PUBLIC static inline unsigned char Mem_space::xlate_flush_result(Mword attribs) diff --git a/kernel/fiasco/src/kern/io_space.cpp b/kernel/fiasco/src/kern/io_space.cpp index 87690f941..3d735d78e 100644 --- a/kernel/fiasco/src/kern/io_space.cpp +++ b/kernel/fiasco/src/kern/io_space.cpp @@ -104,6 +104,14 @@ Generic_io_space::xlate_flush(unsigned char rights) return 0; } +PUBLIC template< typename SPACE > +static inline +Mword +Generic_io_space::is_full_flush(unsigned char rights) +{ + return rights; +} + PUBLIC template< typename SPACE > static inline Mword @@ -460,13 +468,6 @@ Generic_io_space::get_port_bit(Address const port_number) const } -PRIVATE template< typename SPACE > -inline -Pt_entry *Generic_io_space::bitmap_pde_lookup(Address v) -{ - return (Pt_entry*)(mem_space()->dir()->walk(v/*PTV >> 12*/, Pdir::Super_level).e); -} - PUBLIC template< typename SPACE > inline static Page_number diff --git a/kernel/fiasco/src/kern/ipc_gate.cpp b/kernel/fiasco/src/kern/ipc_gate.cpp index 16cadbf6e..aabd0570e 100644 --- a/kernel/fiasco/src/kern/ipc_gate.cpp +++ b/kernel/fiasco/src/kern/ipc_gate.cpp @@ -90,7 +90,7 @@ PUBLIC Kobject_iface * Ipc_gate_obj::downgrade(unsigned long attr) { - if (attr & L4_fpage::C_obj_right_1) + if (attr & L4_msg_item::C_obj_right_1) return static_cast(this); else return static_cast(this); @@ -342,7 +342,7 @@ Ipc_gate::invoke(L4_obj_ref /*self*/, Mword rights, Syscall_frame *f, Utcb *utcb } } - bool ipc = _thread->check_sys_ipc(f->ref().flags(), &partner, &sender, &have_rcv); + bool ipc = _thread->check_sys_ipc(f->ref().op(), &partner, &sender, &have_rcv); LOG_TRACE("IPC Gate invoke", "gate", current(), __fmt_ipc_gate_invoke, Log_ipc_gate_invoke *l = tbe->payload(); diff --git a/kernel/fiasco/src/kern/irq.cpp b/kernel/fiasco/src/kern/irq.cpp index df1258d9b..c3784a426 100644 --- a/kernel/fiasco/src/kern/irq.cpp +++ b/kernel/fiasco/src/kern/irq.cpp @@ -401,7 +401,7 @@ Irq_sender::transfer_msg(Receiver *recv) Syscall_frame* dst_regs = recv->rcv_regs(); // set ipc return value: OK - dst_regs->tag(L4_msg_tag(0, 0, 0, L4_msg_tag::Label_irq)); + dst_regs->tag(L4_msg_tag(0)); // set ipc source thread id dst_regs->from(_irq_id); diff --git a/kernel/fiasco/src/kern/kernel_thread-std.cpp b/kernel/fiasco/src/kern/kernel_thread-std.cpp index 86122cdf5..5e5b6c4e9 100644 --- a/kernel/fiasco/src/kern/kernel_thread-std.cpp +++ b/kernel/fiasco/src/kern/kernel_thread-std.cpp @@ -57,7 +57,7 @@ Kernel_thread::init_workload() for (d=ctrl; d < ctrl+sizeof(ctrl)-1 && *s && *s != ' '; *d++ = *s++) ; *d = '\0'; - printf("JDB: exec cmd '%s'\n", ctrl); + kdb_ke_sequence(ctrl); } diff --git a/kernel/fiasco/src/kern/kobject_helper.cpp b/kernel/fiasco/src/kern/kobject_helper.cpp index d4a124461..8ec6a8040 100644 --- a/kernel/fiasco/src/kern/kobject_helper.cpp +++ b/kernel/fiasco/src/kern/kobject_helper.cpp @@ -34,7 +34,7 @@ public: void invoke(L4_obj_ref self, Mword rights, Syscall_frame *f, Utcb *u) { L4_msg_tag res(0); - if (EXPECT_TRUE(self.flags() & L4_obj_ref::Ipc_send)) + if (EXPECT_TRUE(self.op() & L4_obj_ref::Ipc_send)) res = static_cast(this)->T::kinvoke(self, rights, f, (Utcb const *)u, self.have_recv() ? u : utcb_dummy()); @@ -49,7 +49,7 @@ public: if (!res.do_switch()) { Thread *t = current_thread(); - Sender *s = (self.flags() & L4_obj_ref::Ipc_open_wait) ? 0 : _sender(t, static_cast(this)); + Sender *s = (self.op() & L4_obj_ref::Ipc_open_wait) ? 0 : _sender(t, static_cast(this)); t->do_ipc(f->tag(), 0, 0, true, s, f->timeout(), f, rights); return; } diff --git a/kernel/fiasco/src/kern/l4_buf_iter.cpp b/kernel/fiasco/src/kern/l4_buf_iter.cpp index 96d00c290..7da0a8012 100644 --- a/kernel/fiasco/src/kern/l4_buf_iter.cpp +++ b/kernel/fiasco/src/kern/l4_buf_iter.cpp @@ -74,7 +74,7 @@ L4_buf_iter::next() return false; if (c.b.type() == L4_msg_item::Map && c.b.is_small_obj()) - c.d = L4_fpage::obj(c.b.raw(), 0, c.b.j() & 0x0f).raw(); + c.d = c.b.get_small_buf().raw(); else { ++_buf; diff --git a/kernel/fiasco/src/kern/map_util-mem.cpp b/kernel/fiasco/src/kern/map_util-mem.cpp index 991dccfa3..cd0f5701e 100644 --- a/kernel/fiasco/src/kern/map_util-mem.cpp +++ b/kernel/fiasco/src/kern/map_util-mem.cpp @@ -17,7 +17,7 @@ IMPLEMENTATION: */ L4_error mem_map(Space *from, L4_fpage const &fp_from, - Space *to, L4_fpage const &fp_to, Mword control) + Space *to, L4_fpage const &fp_to, L4_msg_item control) { typedef Map_traits Mt; @@ -28,7 +28,7 @@ mem_map(Space *from, L4_fpage const &fp_from, // loop variables Mt::Addr rcv_addr = fp_to.mem_address(); Mt::Addr snd_addr = fp_from.mem_address(); - Mt::Addr offs = Virt_addr(control & (~0UL << L4_fpage::Control_addr_shift)); + Mt::Addr offs = Virt_addr(control.address()); Mt::Size snd_size = Mt::Size::from_shift(fp_from.order() - L4_fpage::Mem_addr::Shift); Mt::Size rcv_size = Mt::Size::from_shift(fp_to.order() - L4_fpage::Mem_addr::Shift); @@ -45,15 +45,13 @@ mem_map(Space *from, L4_fpage const &fp_from, return L4_error::None; } - bool fp_from_grant = control & 2; - unsigned long del_attribs, add_attribs; Mt::attribs(control, fp_from, &del_attribs, &add_attribs); return map(mapdb_instance(), from->mem_space(), from, snd_addr, snd_size, to->mem_space(), to, - rcv_addr, fp_from_grant, add_attribs, del_attribs, + rcv_addr, control.is_grant(), add_attribs, del_attribs, (Mem_space::Reap_list**)0); } diff --git a/kernel/fiasco/src/kern/map_util-objs.cpp b/kernel/fiasco/src/kern/map_util-objs.cpp index 20c6758de..3de82784c 100644 --- a/kernel/fiasco/src/kern/map_util-objs.cpp +++ b/kernel/fiasco/src/kern/map_util-objs.cpp @@ -22,7 +22,7 @@ save_access_attribs (Kobject_mapdb* /*mapdb*/, L4_error obj_map(Space *from, L4_fpage const &fp_from, - Space *to, L4_fpage const &fp_to, Mword control, + Space *to, L4_fpage const &fp_to, L4_msg_item control, Kobject ***reap_list) { typedef Map_traits Mt; @@ -30,7 +30,7 @@ obj_map(Space *from, L4_fpage const &fp_from, Mt::Addr snd_addr = Mt::get_addr(fp_from); Mt::Size snd_size = Mt::Size::from_shift(fp_from.order()); Mt::Size rcv_size = Mt::Size::from_shift(fp_to.order()); - Mt::Addr offs(control >> L4_fpage::Control_addr_shift); + Mt::Addr offs(control.index()); snd_addr = snd_addr.trunc(snd_size); rcv_addr = rcv_addr.trunc(rcv_size); @@ -51,7 +51,7 @@ obj_map(Space *from, L4_fpage const &fp_from, from->obj_space(), from, snd_addr, snd_size, to->obj_space(), to, rcv_addr, - control & L4_fpage::Control_grant, add_attribs, del_attribs, + control.is_grant(), add_attribs, del_attribs, reap_list); } diff --git a/kernel/fiasco/src/kern/map_util.cpp b/kernel/fiasco/src/kern/map_util.cpp index 61204c6ea..eb8de7b3d 100644 --- a/kernel/fiasco/src/kern/map_util.cpp +++ b/kernel/fiasco/src/kern/map_util.cpp @@ -101,7 +101,7 @@ Map_traits::free_object(typename SPACE::Phys_addr, PUBLIC template< typename SPACE > static inline void -Map_traits::attribs(Mword /*control*/, L4_fpage const &/*fp*/, +Map_traits::attribs(L4_msg_item /*control*/, L4_fpage const &/*fp*/, unsigned long *del_attr, unsigned long *set_attr) { *del_attr = 0; *set_attr = 0; } @@ -201,19 +201,19 @@ Map_traits::get_addr(L4_fpage const &fp) IMPLEMENT template<> inline void -Map_traits::attribs(Mword control, L4_fpage const &fp, +Map_traits::attribs(L4_msg_item control, L4_fpage const &fp, unsigned long *del_attr, unsigned long *set_attr) { - *del_attr = fp.write() ? 0 : Mem_space::Page_writable; - short cache = (control >> 4) & 7; + *del_attr = (fp.rights() & L4_fpage::W) ? 0 : Mem_space::Page_writable; + short cache = control.attr() & 0x70; - if (cache & L4_fpage::Caching_opt) + if (cache & L4_msg_item::Caching_opt) { *del_attr |= Page::Cache_mask; - if (cache == L4_fpage::Cached) + if (cache == L4_msg_item::Cached) *set_attr = Page::CACHEABLE; - else if (cache == L4_fpage::Buffered) + else if (cache == L4_msg_item::Buffered) *set_attr = Page::BUFFERED; else *set_attr = Page::NONCACHEABLE; @@ -254,11 +254,11 @@ Map_traits::free_object(Obj_space::Phys_addr o, IMPLEMENT template<> inline void -Map_traits::attribs(Mword control, L4_fpage const &fp, +Map_traits::attribs(L4_msg_item control, L4_fpage const &fp, unsigned long *del_attr, unsigned long *set_attr) { *set_attr = 0; - *del_attr = (~(fp.rights() | (L4_fpage::C_weak_ref ^ (control & L4_fpage::C_ctl_rights)))); + *del_attr = (~(fp.rights() | (L4_msg_item::C_weak_ref ^ control.attr()))); } IMPLEMENT template<> @@ -269,7 +269,7 @@ Map_traits::apply_attribs(unsigned long attribs, unsigned long set_attr, unsigned long del_attr) { - if (attribs & del_attr & L4_fpage::C_obj_specific_rights) + if (attribs & del_attr & L4_msg_item::C_obj_specific_rights) a = a->downgrade(del_attr); return (attribs & ~del_attr) | set_attr; @@ -295,7 +295,7 @@ Map_traits::apply_attribs(unsigned long attribs, // inline NEEDS ["config.h", io_map] L4_error fpage_map(Space *from, L4_fpage fp_from, Space *to, - L4_fpage fp_to, Mword control, Reap_list *r) + L4_fpage fp_to, L4_msg_item control, Reap_list *r) { if (Map_traits::match(fp_from, fp_to)) return mem_map(from, fp_from, to, fp_to, control); @@ -627,21 +627,11 @@ map(MAPDB* mapdb, break; } - SPACE *flush_from = 0; if (need_tlb_flush) - { - from->tlb_flush(); - if (SPACE::Need_xcpu_tlb_flush) - flush_from = from; - } + from->tlb_flush(); - if (SPACE::Need_xcpu_tlb_flush) - { - SPACE *flush_to = 0; - if (SPACE::Need_insert_tlb_flush && need_xcpu_tlb_flush) - flush_to = to; - Context::xcpu_tlb_flush(false, to, from); - } + if (SPACE::Need_xcpu_tlb_flush && need_xcpu_tlb_flush) + Context::xcpu_tlb_flush(false, to, from); if (EXPECT_FALSE(no_page_mapped)) { @@ -680,8 +670,8 @@ unmap(MAPDB* mapdb, SPACE* space, Space *space_id, Page_count phys_size; Vaddr page_address; - bool const full_flush = rights & L4_fpage::R; Mword const flush_rights = SPACE::xlate_flush(rights); + bool const full_flush = SPACE::is_full_flush(rights); bool need_tlb_flush = false; bool need_xcpu_tlb_flush = false; @@ -788,7 +778,7 @@ IMPLEMENTATION[!io || ux]: inline L4_error -io_map(Space *, L4_fpage const &, Space *, L4_fpage const &, Mword) +io_map(Space *, L4_fpage const &, Space *, L4_fpage const &, L4_msg_item) { return L4_error::None; } diff --git a/kernel/fiasco/src/kern/mapping_tree.cpp b/kernel/fiasco/src/kern/mapping_tree.cpp index d141d2492..c3043cd1d 100644 --- a/kernel/fiasco/src/kern/mapping_tree.cpp +++ b/kernel/fiasco/src/kern/mapping_tree.cpp @@ -327,7 +327,7 @@ PUBLIC Mapping_tree::~Mapping_tree() { // special case for copied mapping trees - for (Mapping *m = _mappings; m < _mappings+_count && !m->is_end_tag(); ++m) + for (Mapping *m = _mappings; m < end() && !m->is_end_tag(); ++m) { if (!m->submap() && !m->unused()) quota(m->space())->free(sizeof(Mapping)); @@ -730,8 +730,7 @@ Mapping_tree::flush(Mapping *parent, bool me_too, else start_of_deletions++; - unsigned m_depth = p_depth + 1; - bool skip_subtree = false; + unsigned m_depth = p_depth; for (Mapping* m = parent + 1; m < end() && ! m->is_end_tag(); @@ -755,20 +754,7 @@ Mapping_tree::flush(Mapping *parent, bool me_too, continue; } - // m is a submap or a regular mapping. - if (skip_subtree) - { - if (m->depth() > p_depth + 1) // Can use m->depth() even for submaps. - { - start_of_deletions++; - continue; - } - - skip_subtree = false; - } - Space *space; - if (Treemap* submap = m->submap()) { space = submap_ops.owner(submap); @@ -776,7 +762,7 @@ Mapping_tree::flush(Mapping *parent, bool me_too, // Check for immediate child. Note: It's a bad idea to // call m->parent() because that would iterate backwards // over already-deleted entries. - && m_depth == p_depth + 1 + && m_depth == p_depth && submap_ops.is_partial(submap, offs_begin, offs_end)) { submap_ops.flush(submap, offs_begin, offs_end); @@ -809,8 +795,6 @@ Mapping_tree::flush(Mapping *parent, bool me_too, _empty_count -= empty_elems_passed; #endif } - - return; } PUBLIC template< typename SUBMAP_OPS > @@ -938,7 +922,7 @@ Base_mappable::pack() if (new_t.get()) { - // ivalidate mode 0 because we must not free the quota for it + // ivalidate node 0 because we must not free the quota for it t->reset(); t = new_t.get(); @@ -979,7 +963,7 @@ Base_mappable::pack() if (new_t.get()) { - // ivalidate mode 0 because we must not free the quota for it + // ivalidate node 0 because we must not free the quota for it t->reset(); t = new_t.get(); diff --git a/kernel/fiasco/src/kern/obj_space.cpp b/kernel/fiasco/src/kern/obj_space.cpp index 403e2d7fb..5a24e3686 100644 --- a/kernel/fiasco/src/kern/obj_space.cpp +++ b/kernel/fiasco/src/kern/obj_space.cpp @@ -1,6 +1,7 @@ INTERFACE: #include "l4_types.h" +#include "l4_msg_item.h" #include "pages.h" class Kobject_mapdb; @@ -50,7 +51,7 @@ namespace Obj { Delete = L4_fpage::CD, Ref_cnt = 0x10, - Initial_flags = Delete | Ref_cnt | L4_fpage::C_ctl_rights + Initial_flags = Delete | Ref_cnt | L4_msg_item::C_ctl_rights }; protected: @@ -214,6 +215,12 @@ Mword Generic_obj_space::xlate_flush(unsigned char rights) { return rights; } +PUBLIC template< typename SPACE > +static inline +Mword +Generic_obj_space::is_full_flush(unsigned char rights) +{ return rights & L4_fpage::R; } + PUBLIC template< typename SPACE > static inline Mword diff --git a/kernel/fiasco/src/kern/ppc32/main.cpp b/kernel/fiasco/src/kern/ppc32/main.cpp index afb247038..64284b8a3 100644 --- a/kernel/fiasco/src/kern/ppc32/main.cpp +++ b/kernel/fiasco/src/kern/ppc32/main.cpp @@ -29,10 +29,14 @@ static int exit_question_active = 0; extern "C" void __attribute__ ((noreturn)) _exit(int) { - if(exit_question_active) - pc_reset(); - else - while(1) { Proc::halt(); Proc::pause(); } + if (exit_question_active) + platform_reset(); + + while (1) + { + Proc::halt(); + Proc::pause(); + } } @@ -57,7 +61,7 @@ static void exit_question() // problems. // SO just do the reset at this point. puts("\033[1mRebooting...\033[0m"); - pc_reset(); + platform_reset(); break; } } diff --git a/kernel/fiasco/src/kern/ppc32/mem_space-ppc32.cpp b/kernel/fiasco/src/kern/ppc32/mem_space-ppc32.cpp index 1e1aaf77d..e4374bab2 100644 --- a/kernel/fiasco/src/kern/ppc32/mem_space-ppc32.cpp +++ b/kernel/fiasco/src/kern/ppc32/mem_space-ppc32.cpp @@ -118,6 +118,14 @@ Mem_space::xlate_flush(unsigned char rights) return a; } +//XXX cbass: check; +PUBLIC static inline +Mword +Mem_space::is_full_flush(unsigned char rights) +{ + return rights & L4_fpage::RX; +} + PUBLIC static inline unsigned char Mem_space::xlate_flush_result(Mword attribs) diff --git a/kernel/fiasco/src/kern/reset-dummy.cpp b/kernel/fiasco/src/kern/reset-dummy.cpp index 8a8c3e7d4..7ccbb8a40 100644 --- a/kernel/fiasco/src/kern/reset-dummy.cpp +++ b/kernel/fiasco/src/kern/reset-dummy.cpp @@ -2,7 +2,7 @@ IMPLEMENTATION: // reset PC void __attribute__ ((noreturn)) -pc_reset() +platform_reset() { while(1) ; diff --git a/kernel/fiasco/src/kern/scheduler.cpp b/kernel/fiasco/src/kern/scheduler.cpp index dd81be8a6..04dcc9706 100644 --- a/kernel/fiasco/src/kern/scheduler.cpp +++ b/kernel/fiasco/src/kern/scheduler.cpp @@ -196,7 +196,7 @@ L4_msg_tag Scheduler::kinvoke(L4_obj_ref, Mword rights, Syscall_frame *f, Utcb const *iutcb, Utcb *outcb) { - if (EXPECT_FALSE(f->tag().proto() != L4_msg_tag::Label_cpu)) + if (EXPECT_FALSE(f->tag().proto() != L4_msg_tag::Label_scheduler)) return commit_result(-L4_err::EBadproto); switch (iutcb->values[0]) diff --git a/kernel/fiasco/src/kern/space.cpp b/kernel/fiasco/src/kern/space.cpp index 91659d2b4..b6693e66c 100644 --- a/kernel/fiasco/src/kern/space.cpp +++ b/kernel/fiasco/src/kern/space.cpp @@ -190,13 +190,19 @@ PUBLIC Space::Ku_mem const * Space::find_ku_mem(User::Ptr p, unsigned size) { - if ((Address)p.get() & (sizeof(double) - 1)) + Address const pa = (Address)p.get(); + + // alignment check + if (EXPECT_FALSE(pa & (sizeof(double) - 1))) + return 0; + + // overflow check + if (EXPECT_FALSE(pa + size < pa)) return 0; for (Ku_mem const *f = _ku_mem; f; f = f->next) { - Address a = (Address)f->u_addr.get(); - Address pa = (Address)p.get(); + Address const a = (Address)f->u_addr.get(); if (a <= pa && (a + f->size) >= (pa + size)) return f; } @@ -289,6 +295,7 @@ bool Space::is_user_memory(Address address, Mword len) { return address < Mem_layout::User_max + && address < address + len // prevent overflow && address + len <= Mem_layout::User_max; } diff --git a/kernel/fiasco/src/kern/syscalls-log.cpp b/kernel/fiasco/src/kern/syscalls-log.cpp index 97be063fd..0ca37cc56 100644 --- a/kernel/fiasco/src/kern/syscalls-log.cpp +++ b/kernel/fiasco/src/kern/syscalls-log.cpp @@ -19,8 +19,8 @@ extern "C" void sys_ipc_log_wrapper(void) Syscall_frame *ipc_regs = reinterpret_cast(curr->regs()); Mword entry_event_num = (Mword)-1; - Unsigned8 have_snd = (ipc_regs->ref().flags() & L4_obj_ref::Ipc_send) - || (ipc_regs->ref().flags() == L4_obj_ref::Ipc_call); + Unsigned8 have_snd = (ipc_regs->ref().op() & L4_obj_ref::Ipc_send) + || (ipc_regs->ref().op() == L4_obj_ref::Ipc_call); Unsigned8 is_next_period = ipc_regs->next_period(); Utcb *utcb = curr->utcb().access(true); int do_log = Jdb_ipc_trace::log() && diff --git a/kernel/fiasco/src/kern/task.cpp b/kernel/fiasco/src/kern/task.cpp index 35fef8c54..a927c7534 100644 --- a/kernel/fiasco/src/kern/task.cpp +++ b/kernel/fiasco/src/kern/task.cpp @@ -146,18 +146,18 @@ Task::alloc_ku_mem_chunk(User::Ptr u_addr, unsigned size, void **k_addr) { case Mem_space::Insert_ok: break; case Mem_space::Insert_err_nomem: - free_ku_mem_chunk(p, u_addr, size); + free_ku_mem_chunk(p, u_addr, size, i); return -L4_err::ENomem; case Mem_space::Insert_err_exists: - free_ku_mem_chunk(p, u_addr, size); + free_ku_mem_chunk(p, u_addr, size, i); return -L4_err::EExists; default: printf("UTCB mapping failed: va=%p, ph=%p, res=%d\n", (void*)user_va, (void*)kern_va, res); kdb_ke("BUG in utcb allocation"); - free_ku_mem_chunk(p, u_addr, size); + free_ku_mem_chunk(p, u_addr, size, i); return 0; } } @@ -208,13 +208,14 @@ PRIVATE inline NOEXPORT void Task::free_ku_mem(Ku_mem *m) { - free_ku_mem_chunk(m->k_addr, m->u_addr, m->size); + free_ku_mem_chunk(m->k_addr, m->u_addr, m->size, m->size); m->free(ram_quota()); } PRIVATE void -Task::free_ku_mem_chunk(void *k_addr, User::Ptr u_addr, unsigned size) +Task::free_ku_mem_chunk(void *k_addr, User::Ptr u_addr, unsigned size, + unsigned mapped_size) { Mapped_allocator * const alloc = Mapped_allocator::allocator(); @@ -226,7 +227,7 @@ Task::free_ku_mem_chunk(void *k_addr, User::Ptr u_addr, unsigned size) if (size >= Config::SUPERPAGE_SIZE) page_size = Config::SUPERPAGE_SIZE; - for (unsigned long i = 0; i < size; i += page_size) + for (unsigned long i = 0; i < mapped_size; i += page_size) { Address user_va = (Address)u_addr.get() + i; mem_space()->v_delete(Mem_space::Addr(user_va), @@ -418,7 +419,7 @@ Task::sys_map(unsigned char rights, Syscall_frame *f, Utcb *utcb) cpu_lock.clear(); ret = fpage_map(from, L4_fpage(utcb->values[2]), this, - L4_fpage::all_spaces(), utcb->values[1], &rl); + L4_fpage::all_spaces(), L4_msg_item(utcb->values[1]), &rl); cpu_lock.lock(); } @@ -479,7 +480,7 @@ Task::sys_cap_valid(Syscall_frame *, Utcb *utcb) { L4_obj_ref obj(utcb->values[1]); - if (obj.invalid()) + if (obj.special()) return commit_result(0); Obj_space::Capability cap = obj_space()->lookup(obj.cap()); @@ -504,8 +505,8 @@ Task::sys_caps_equal(Syscall_frame *, Utcb *utcb) if (obj_a == obj_b) return commit_result(1); - if (obj_a.invalid() || obj_b.invalid()) - return commit_result(obj_a.invalid() && obj_b.invalid()); + if (obj_a.special() || obj_b.special()) + return commit_result(obj_a.special_cap() == obj_b.special_cap()); Obj_space::Capability c_a = obj_space()->lookup(obj_a.cap()); Obj_space::Capability c_b = obj_space()->lookup(obj_b.cap()); diff --git a/kernel/fiasco/src/kern/tb_entry.cpp b/kernel/fiasco/src/kern/tb_entry.cpp index 7014bc1cc..f9eb2e75b 100644 --- a/kernel/fiasco/src/kern/tb_entry.cpp +++ b/kernel/fiasco/src/kern/tb_entry.cpp @@ -41,7 +41,7 @@ struct Tb_log_table_entry }; extern Tb_log_table_entry _log_table[]; -extern Tb_log_table_entry _log_table_end[]; +extern Tb_log_table_entry _log_table_end; class Context; class Space; @@ -454,7 +454,7 @@ Tb_entry_ipc::set_sc(Context const *ctx, Mword ip, Syscall_frame *ipc_regs, PUBLIC inline Mword Tb_entry_ipc::ipc_type() const -{ return payload()->_dst.flags(); } +{ return payload()->_dst.op(); } PUBLIC inline Mword diff --git a/kernel/fiasco/src/kern/tb_entry_output.cpp b/kernel/fiasco/src/kern/tb_entry_output.cpp index f0d81ebd0..9c672e059 100644 --- a/kernel/fiasco/src/kern/tb_entry_output.cpp +++ b/kernel/fiasco/src/kern/tb_entry_output.cpp @@ -158,7 +158,7 @@ formatter_ipc(Tb_entry *tb, const char *tidstr, unsigned tidlen, /*e->dst().next_period() ? "[NP] " :*/ "", tidlen, tidstr, m); // print destination id - if (e->dst().invalid()) + if (e->dst().special()) my_snprintf(buf, maxlen, "[C:INV] DID=%lx", e->dbg_id()); else my_snprintf(buf, maxlen, "[C:%lx] DID=%lx", e->dst().raw(), e->dbg_id()); @@ -377,14 +377,12 @@ formatter_ctx_switch(Tb_entry *tb, const char *tidstr, unsigned tidlen, Context *sctx = 0; Mword sctxid = ~0UL; - Mword src; Mword dst; Mword dst_orig; sctx = e->from_sched()->context(); sctxid = static_cast(sctx)->dbg_id(); - src = static_cast(e->ctx())->dbg_id(); dst = static_cast(e->dst())->dbg_id(); dst_orig = static_cast(e->dst_orig())->dbg_id(); diff --git a/kernel/fiasco/src/kern/terminate.cpp b/kernel/fiasco/src/kern/terminate.cpp index f36866a18..73417449d 100644 --- a/kernel/fiasco/src/kern/terminate.cpp +++ b/kernel/fiasco/src/kern/terminate.cpp @@ -18,13 +18,13 @@ void raw_exit() { // make sure that we don't acknowledg the exit question automatically - Kconsole::console()->change_state(Console::PUSH, 0, + Kconsole::console()->change_state(Console::PUSH, 0, ~Console::INENABLED, 0); puts("\nPress any key to reboot."); Kconsole::console()->getchar(); puts("\033[1mRebooting.\033[m"); // Cpu::busy_wait_ns(10000000); - pc_reset(); + platform_reset(); } @@ -47,7 +47,7 @@ terminate (int exit_value) if (exit_question) exit_question(); - puts ("\nShutting down..."); + puts("\nShutting down..."); - _exit (exit_value); + _exit(exit_value); } diff --git a/kernel/fiasco/src/kern/thread-ipc.cpp b/kernel/fiasco/src/kern/thread-ipc.cpp index f8e199510..306ef65ed 100644 --- a/kernel/fiasco/src/kern/thread-ipc.cpp +++ b/kernel/fiasco/src/kern/thread-ipc.cpp @@ -934,9 +934,10 @@ Thread::transfer_msg_items(L4_msg_tag const &tag, Thread* snd, Utcb *snd_utcb, // diminish when sending via restricted ipc gates if (sfp.type() == L4_fpage::Obj) sfp.mask_rights(L4_fpage::Rights(rights | L4_fpage::RX)); - + cpu_lock.clear(); L4_error err = fpage_map(snd->space(), sfp, - rcv->space(), L4_fpage(buf->d), item->b.raw(), &rl); + rcv->space(), L4_fpage(buf->d), item->b, &rl); + cpu_lock.lock(); if (EXPECT_FALSE(!err.ok())) { @@ -948,7 +949,7 @@ Thread::transfer_msg_items(L4_msg_tag const &tag, Thread* snd, Utcb *snd_utcb, --items; - if (!item->b.compund()) + if (!item->b.compound()) buf_iter->next(); } diff --git a/kernel/fiasco/src/kern/thread.cpp b/kernel/fiasco/src/kern/thread.cpp index 08150e895..27f2206ef 100644 --- a/kernel/fiasco/src/kern/thread.cpp +++ b/kernel/fiasco/src/kern/thread.cpp @@ -561,7 +561,7 @@ Thread::do_kill() } // if engaged in IPC operation, stop it - if (receiver()) + if (in_sender_list()) sender_dequeue(receiver()->sender_list()); Context::do_kill(); diff --git a/kernel/fiasco/src/kern/thread_object.cpp b/kernel/fiasco/src/kern/thread_object.cpp index f00e9c67d..b207545f4 100644 --- a/kernel/fiasco/src/kern/thread_object.cpp +++ b/kernel/fiasco/src/kern/thread_object.cpp @@ -39,7 +39,7 @@ Kobject_iface * Obj_cap::deref(unsigned char *rights = 0, bool dbg = false) { Thread *current = current_thread(); - if (flags() & L4_obj_ref::Ipc_reply) + if (op() & L4_obj_ref::Ipc_reply) { if (rights) *rights = current->caller_rights(); Thread *ca = static_cast(current->caller()); @@ -48,7 +48,7 @@ Obj_cap::deref(unsigned char *rights = 0, bool dbg = false) return ca; } - if (EXPECT_FALSE(invalid())) + if (EXPECT_FALSE(special())) { if (!self()) return 0; @@ -114,9 +114,9 @@ PUBLIC void Thread_object::invoke(L4_obj_ref /*self*/, Mword rights, Syscall_frame *f, Utcb *utcb) { - register unsigned flags = f->ref().flags(); - if (((flags != 0) && !(flags & L4_obj_ref::Ipc_send)) - || (flags & L4_obj_ref::Ipc_reply) + register L4_obj_ref::Operation op = f->ref().op(); + if (((op != 0) && !(op & L4_obj_ref::Ipc_send)) + || (op & L4_obj_ref::Ipc_reply) || f->tag().proto() != L4_msg_tag::Label_thread) { /* we do IPC */ @@ -125,7 +125,7 @@ Thread_object::invoke(L4_obj_ref /*self*/, Mword rights, Syscall_frame *f, Utcb Thread *partner = 0; bool have_rcv = false; - if (EXPECT_FALSE(!check_sys_ipc(flags, &partner, &sender, &have_rcv))) + if (EXPECT_FALSE(!check_sys_ipc(op, &partner, &sender, &have_rcv))) { utcb->error = L4_error::Not_existent; return; @@ -198,7 +198,7 @@ Thread_object::sys_vcpu_resume(L4_msg_tag const &tag, Utcb *utcb) vcpu->user_task = L4_obj_ref(); } - else if (user_task.flags() == L4_obj_ref::Ipc_reply) + else if (user_task.op() == L4_obj_ref::Ipc_reply) vcpu_set_user_space(0); L4_snd_item_iter snd_items(utcb, tag.words()); @@ -217,7 +217,7 @@ Thread_object::sys_vcpu_resume(L4_msg_tag const &tag, Utcb *utcb) Reap_list rl; L4_error err = fpage_map(space(), sfp, vcpu_user_space(), L4_fpage::all_spaces(), - item->b.raw(), &rl); + item->b, &rl); rl.del(); cpu_lock.lock(); @@ -269,7 +269,7 @@ Thread_object::sys_vcpu_resume(L4_msg_tag const &tag, Utcb *utcb) if (vcpu->state & Vcpu_state::F_user_mode) { if (!vcpu_user_space()) - return commit_result(-L4_err::EInval); + return commit_result(-L4_err::EInval); user_mode = true; @@ -598,11 +598,14 @@ Thread_object::handle_remote_ex_regs(Drq *, Context *self, void *p) PRIVATE inline NOEXPORT L4_msg_tag -Thread_object::sys_ex_regs(L4_msg_tag const &tag, Utcb * /*utcb*/) +Thread_object::sys_ex_regs(L4_msg_tag const &tag, Utcb *utcb) { if (tag.words() != 3) return commit_result(-L4_err::EInval); + if (current() == this) + return ex_regs(utcb); + Remote_syscall params; params.thread = current_thread(); diff --git a/kernel/fiasco/src/kern/ux/boot_info-ux.cpp b/kernel/fiasco/src/kern/ux/boot_info-ux.cpp index 8fad0adec..efb9cb1c2 100644 --- a/kernel/fiasco/src/kern/ux/boot_info-ux.cpp +++ b/kernel/fiasco/src/kern/ux/boot_info-ux.cpp @@ -59,6 +59,7 @@ IMPLEMENTATION[ux]: #include // for uname #include "config.h" +#include "emulation.h" #include "initcalls.h" #include "kernel_console.h" #include "koptions.h" @@ -169,9 +170,11 @@ Boot_info::init() Multiboot_info * mbi; Multiboot_module * mbm; struct utsname uts; +#if 0 char const * symbols_file = "Symbols"; char const * lines_file = "Lines"; char const * roottask_config_file = "roottask.config"; +#endif _args = __libc_argv; _pid = getpid (); @@ -194,15 +197,21 @@ Boot_info::init() break; case 'Y': // sYmbols path +#if 0 symbols_file = optarg; +#endif break; case 'L': // Lines path +#if 0 lines_file = optarg; +#endif break; case 'C': // roottask Configuration file +#if 0 roottask_config_file = optarg; +#endif break; case 'l': @@ -329,6 +338,7 @@ Boot_info::init() uts.sysname, uts.release, uts.machine); get_minimum_map_address(); + find_x86_tls_base(); if ((_fd = open (physmem_file, O_RDWR | O_CREAT | O_EXCL | O_TRUNC, 0700)) == -1) @@ -493,6 +503,30 @@ Boot_info::get_minimum_map_address() = (_min_mappable_address + (Config::PAGE_SIZE - 1)) & Config::PAGE_MASK; } +PRIVATE static +void +Boot_info::find_x86_tls_base() +{ + // the base is different on 32 and 64 bit hosts, so we need to find the + // right one + // be very pessimistic and scan a larger range + + for (unsigned nr = 0; nr < 40; ++nr) + { + Ldt_user_desc desc; + int r = Emulation::get_thread_area(&desc, nr); + if (r == -38) + panic("get_thread_area not available"); + if (!r) + { + Emulation::set_host_tls_base(nr); + return; + } + } + + panic("finding TLS base did not work"); +} + PUBLIC static inline void Boot_info::reset_checksum_ro() diff --git a/kernel/fiasco/src/kern/ux/emulation.cpp b/kernel/fiasco/src/kern/ux/emulation.cpp index c5a426669..ecec83c32 100644 --- a/kernel/fiasco/src/kern/ux/emulation.cpp +++ b/kernel/fiasco/src/kern/ux/emulation.cpp @@ -32,6 +32,7 @@ private: static Address _page_fault_addr asm ("PAGE_FAULT_ADDR"); static Idt_entry const *_idt_base; static unsigned short _idt_limit; + static unsigned _host_tls_base; }; IMPLEMENTATION: @@ -45,6 +46,7 @@ Address Emulation::_page_dir_addr; Address Emulation::_page_fault_addr; Idt_entry const *Emulation::_idt_base; unsigned short Emulation::_idt_limit; +unsigned Emulation::_host_tls_base; /** * Return page directory base address (register cr3) @@ -173,39 +175,59 @@ Emulation::modify_ldt (unsigned entry, unsigned long base_addr, unsigned limit) "d" (sizeof (ldt))); } +PUBLIC static +void +Emulation::set_host_tls_base(unsigned b) +{ + _host_tls_base = b; +} + +PUBLIC static inline +unsigned +Emulation::host_tls_base() +{ return _host_tls_base; } + +PUBLIC static inline +int +Emulation::get_thread_area(Ldt_user_desc *desc, unsigned entry_number) +{ + int result; + desc->entry_number = entry_number; + +#ifndef __NR_get_thread_area +#define __NR_get_thread_area 244 +#endif + asm volatile ("int $0x80" : "=a" (result) + : "0" (__NR_get_thread_area), + "b" (desc), "m" (*desc)); + + if (EXPECT_FALSE(result == -38)) // -ENOSYS + printf("Your kernel does not support the get/set_thread_area system calls!\n" + "The requested feature will not work.\n"); + return result; +} + PUBLIC static inline NEEDS [, ] void Emulation::thread_area_host (unsigned entry) { Ldt_user_desc desc; int result; - static int called = 0; + enum { NUM_TLS = 3 }; + static int called[NUM_TLS]; #ifndef __NR_set_thread_area #define __NR_set_thread_area 243 #endif -#ifndef __NR_get_thread_area -#define __NR_get_thread_area 244 -#endif - - if (called) - return; - called = 1; + assert(_host_tls_base <= entry && entry < (_host_tls_base + NUM_TLS)); - desc.entry_number = entry; - - asm volatile ("int $0x80" : "=a" (result) - : "0" (__NR_get_thread_area), - "b" (&desc), "m" (desc)); + if (called[entry - _host_tls_base]) + return; - if (EXPECT_FALSE(result == -38)) // -ENOSYS - { - printf("Your kernel does not support the get/set_thread_area system calls!\n" - "The requested feature will not work.\n"); - return; - } + called[entry - _host_tls_base] = 1; + result = get_thread_area(&desc, entry); assert(!result); if (!desc.base_addr || !desc.limit) diff --git a/kernel/fiasco/src/kern/ux/loader.cpp b/kernel/fiasco/src/kern/ux/loader.cpp index e9c6036b2..41d9a9fee 100644 --- a/kernel/fiasco/src/kern/ux/loader.cpp +++ b/kernel/fiasco/src/kern/ux/loader.cpp @@ -114,7 +114,7 @@ Loader::load_module (const char * const path, if ((fp = open_module (path)) == NULL) return errors[0]; - + // Load ELF Header if (fread (&eh, sizeof (eh), 1, fp) != 1) { @@ -122,11 +122,10 @@ Loader::load_module (const char * const path, return errors[1]; } - // Check if valid ELF magic, 32bit, little endian, SysV + // Check if valid ELF magic, 32bit, little endian if (memcmp(eh.e_ident, ELFMAG, 4) != 0 || eh.e_ident[EI_CLASS] != ELFCLASS32 || - eh.e_ident[EI_DATA] != ELFDATA2LSB || - eh.e_ident[EI_OSABI] != ELFOSABI_SYSV) + eh.e_ident[EI_DATA] != ELFDATA2LSB) { fclose (fp); return errors[2]; @@ -206,7 +205,7 @@ Loader::copy_module (const char * const path, { FILE *fp; struct stat s; - + if ((fp = open_module (path)) == NULL) return errors[0]; diff --git a/kernel/fiasco/src/kern/ux/thread-ux.cpp b/kernel/fiasco/src/kern/ux/thread-ux.cpp index 550df7819..ce2ddc8fb 100644 --- a/kernel/fiasco/src/kern/ux/thread-ux.cpp +++ b/kernel/fiasco/src/kern/ux/thread-ux.cpp @@ -240,9 +240,6 @@ PROTECTED inline bool Thread::invoke_arch(L4_msg_tag &tag, Utcb *utcb) { -#ifndef GDT_ENTRY_TLS_MIN -#define GDT_ENTRY_TLS_MIN 6 -#endif switch (utcb->values[0] & Opcode_mask) { case Op_gdt_x86: // Gdt operation @@ -250,7 +247,7 @@ Thread::invoke_arch(L4_msg_tag &tag, Utcb *utcb) // if no words given then return the first gdt entry if (tag.words() == 1) { - utcb->values[0] = GDT_ENTRY_TLS_MIN; + utcb->values[0] = Emulation::host_tls_base(); tag = commit_result(0, 1); return true; } @@ -271,7 +268,7 @@ Thread::invoke_arch(L4_msg_tag &tag, Utcb *utcb) continue; Ldt_user_desc info; - info.entry_number = entry_number + GDT_ENTRY_TLS_MIN; + info.entry_number = entry_number + Emulation::host_tls_base(); info.base_addr = d->base(); info.limit = d->limit(); info.seg_32bit = d->seg32(); @@ -296,14 +293,13 @@ Thread::invoke_arch(L4_msg_tag &tag, Utcb *utcb) // segment registers can be set, this is necessary for signal // handling, esp. for sigreturn to work in the Fiasco kernel // with the context of the client (gs/fs values). - Emulation::thread_area_host(entry_number + GDT_ENTRY_TLS_MIN); - + Emulation::thread_area_host(entry_number + Emulation::host_tls_base()); } if (this == current_thread()) switch_gdt_user_entries(this); - tag = commit_result(0); + tag = commit_result(((utcb->values[1] + Emulation::host_tls_base()) << 3) + 3); return true; } diff --git a/kernel/fiasco/src/kernel.arm.ld b/kernel/fiasco/src/kernel.arm.ld index ed92163f1..1c693d8dd 100644 --- a/kernel/fiasco/src/kernel.arm.ld +++ b/kernel/fiasco/src/kernel.arm.ld @@ -8,10 +8,7 @@ _tcbs_1 = 0xd0000000; /* assumption: 256MB-aligned */ _unused2_1 = 0xea400000; /* assumption: 4MB-aligned */ _unused3_1 = 0xea800000; /* assumption: 4MB-aligned */ _service = 0xeac00000; /* assumption: 4MB-aligned */ -/* 0xeb000000 - 0xee000000 unused */ -_ipc_window0_1 = 0xee000000; /* assumption: 8MB-aligned */ -_ipc_window1_1 = 0xee800000; /* assumption: 8MB-aligned */ -/* 0xef000000 - 0xef800000 unused */ +/* 0xeb000000 - 0xef800000 unused */ _kstatic1_1 = 0xef800000; /* assumption: 4MB-aligned */ _iobitmap_1 = 0xefc00000; /* assumption: 4MB-aligned */ _unused4_io_1 = 0xefc80000; /* assumption: 2nd level field in diff --git a/kernel/fiasco/src/lib/libk/mem_region.cpp b/kernel/fiasco/src/lib/libk/mem_region.cpp index 6c76df20d..910051c7a 100644 --- a/kernel/fiasco/src/lib/libk/mem_region.cpp +++ b/kernel/fiasco/src/lib/libk/mem_region.cpp @@ -118,7 +118,10 @@ Mem_region_map_base::sub(Mem_region const &r) if (_r[pos].overlaps(r)) { if (r.contains(_r[pos])) - del(pos, pos+1); + { + del(pos, pos+1); + --pos; // ensure we do not skip the next element + } else if (r.start <= _r[pos].start) _r[pos].start = r.end + 1; else if (r.end >= _r[pos].end) diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-1 b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-1 index fdc83da7d..873105fe9 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-1 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-1 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-2 b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-2 index 30d250527..72bfe71e1 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-2 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-2 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-vexpress b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-vexpress index 0f6c45855..01a088b14 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-vexpress +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-a9-mp-vexpress @@ -1,7 +1,5 @@ # # Automatically generated make config: don't edit -# Fiasco configuration -# Wed Apr 20 14:59:06 2011 # # @@ -14,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-imx21 b/kernel/fiasco/src/templates/globalconfig.out.arm-imx21 index 946d44eac..9a798b0ec 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-imx21 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-imx21 @@ -12,7 +12,7 @@ CONFIG_ARM=y CONFIG_PF_IMX=y # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-imx35 b/kernel/fiasco/src/templates/globalconfig.out.arm-imx35 index 6a55358f1..4ab4017f1 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-imx35 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-imx35 @@ -12,7 +12,7 @@ CONFIG_ARM=y CONFIG_PF_IMX=y # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-imx51 b/kernel/fiasco/src/templates/globalconfig.out.arm-imx51 index a05bd3a1a..93c4cdb36 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-imx51 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-imx51 @@ -12,7 +12,7 @@ CONFIG_ARM=y CONFIG_PF_IMX=y # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-int-1 b/kernel/fiasco/src/templates/globalconfig.out.arm-int-1 index 44a9af358..d6169a7c9 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-int-1 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-int-1 @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-int-2 b/kernel/fiasco/src/templates/globalconfig.out.arm-int-2 index 41367e5d9..5fce0c512 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-int-2 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-int-2 @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-kirkwood b/kernel/fiasco/src/templates/globalconfig.out.arm-kirkwood index 8305618e3..42fa19671 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-kirkwood +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-kirkwood @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set CONFIG_PF_KIRKWOOD=y diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-omap3evm b/kernel/fiasco/src/templates/globalconfig.out.arm-omap3evm index c57f803fb..1140d5168 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-omap3evm +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-omap3evm @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -CONFIG_PF_OMAP3=y +CONFIG_PF_OMAP=y # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set @@ -20,6 +20,7 @@ CONFIG_PF_OMAP3=y CONFIG_BSP_NAME="omap3" CONFIG_PF_OMAP3_EVM=y # CONFIG_PF_OMAP3_BEAGLEBOARD is not set +# CONFIG_PF_OMAP4_PANDABOARD is not set CONFIG_ABI_VF=y CONFIG_CAN_ARM_CPU_CORTEX_A8=y CONFIG_ARM_CORTEX_A8=y diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-omap4-panda b/kernel/fiasco/src/templates/globalconfig.out.arm-omap4-panda new file mode 100644 index 000000000..3c602c4b0 --- /dev/null +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-omap4-panda @@ -0,0 +1,81 @@ +# +# Automatically generated make config: don't edit +# + +# +# Target configuration +# +# CONFIG_IA32 is not set +# CONFIG_AMD64 is not set +CONFIG_ARM=y +# CONFIG_PF_REALVIEW is not set +# CONFIG_PF_IMX is not set +# CONFIG_PF_S3C2410 is not set +# CONFIG_PF_TEGRA2 is not set +CONFIG_PF_OMAP=y +# CONFIG_PF_XSCALE is not set +# CONFIG_PF_SA1100 is not set +# CONFIG_PF_KIRKWOOD is not set +# CONFIG_PF_INTEGRATOR is not set +CONFIG_BSP_NAME="omap3" +# CONFIG_PF_OMAP3_EVM is not set +# CONFIG_PF_OMAP3_BEAGLEBOARD is not set +CONFIG_PF_OMAP4_PANDABOARD=y +CONFIG_ABI_VF=y +CONFIG_PF_ARM_MP_CAPABLE=y +CONFIG_CAN_ARM_CPU_CORTEX_A9=y +CONFIG_ARM_CORTEX_A9=y +CONFIG_ARM_ALIGNMENT_CHECK=y +# CONFIG_ARM_TZ is not set +CONFIG_ARM_CA9_ENABLE_SWP=y +CONFIG_FPU=y + +# +# Kernel options +# +CONFIG_MP=y +CONFIG_MP_MAX_CPUS=4 +CONFIG_CONTEXT_4K=y +# CONFIG_FINE_GRAINED_CPUTIME is not set +CONFIG_SCHED_FIXED_PRIO=y +# CONFIG_SCHED_WFQ is not set +# CONFIG_SCHED_FP_WFQ is not set +# CONFIG_DISABLE_VIRT_OBJ_SPACE is not set + +# +# Debugging +# +CONFIG_INLINE=y +# CONFIG_NDEBUG is not set +# CONFIG_NO_FRAME_PTR is not set +# CONFIG_STACK_DEPTH is not set +# CONFIG_LIST_ALLOC_SANITY is not set +CONFIG_SERIAL=y +CONFIG_JDB=y +CONFIG_JDB_LOGGING=y +# CONFIG_JDB_DISASM is not set +# CONFIG_JDB_GZIP is not set +# CONFIG_VMEM_ALLOC_TEST is not set +# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set +# CONFIG_WARN_NONE is not set +CONFIG_WARN_WARNING=y +# CONFIG_WARN_ANY is not set + +# +# Compiling +# +CONFIG_CC="gcc" +CONFIG_CXX="g++" +CONFIG_HOST_CC="gcc" +CONFIG_HOST_CXX="g++" +# CONFIG_VERBOSE is not set +# CONFIG_MAINTAINER_MODE is not set +CONFIG_LABEL="" +CONFIG_EXPERIMENTAL=y +CONFIG_PERF_CNT=y +CONFIG_BIT32=y +CONFIG_ARM_V7=y +CONFIG_ARM_V6PLUS=y +CONFIG_WARN_LEVEL=1 +CONFIG_XARCH="arm" +CONFIG_ABI="vf" diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-pxa b/kernel/fiasco/src/templates/globalconfig.out.arm-pxa index 390796c5d..dc02e95b7 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-pxa +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-pxa @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set CONFIG_PF_XSCALE=y # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-1 b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-1 index 54e325b3f..a3040a43f 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-1 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-1 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-2 b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-2 index e24cfa116..0ca6d193a 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-2 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-2 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-3 b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-3 index 0d3c0ba0c..5b12a803d 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-3 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-3 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-4-noinl b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-4-noinl index 9704ff1e5..68e8db99c 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-rv-4-noinl +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-rv-4-noinl @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-sa b/kernel/fiasco/src/templates/globalconfig.out.arm-sa index 31cc88918..3eff5cc11 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-sa +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-sa @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set CONFIG_PF_SA1100=y # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-t2 b/kernel/fiasco/src/templates/globalconfig.out.arm-t2 index e217cacc9..ab946acc2 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-t2 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-t2 @@ -12,7 +12,7 @@ CONFIG_ARM=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set CONFIG_PF_TEGRA2=y -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-v6 b/kernel/fiasco/src/templates/globalconfig.out.arm-v6 index 0a973232c..4c5dd1976 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-v6 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-v6 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-eb b/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-eb index d3dedb807..7fd2652f3 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-eb +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-eb @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-pb b/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-pb index 7dd55693c..aac4cf355 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-pb +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-v6-mp-pb @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/templates/globalconfig.out.arm-v7 b/kernel/fiasco/src/templates/globalconfig.out.arm-v7 index ad2ef7ba8..8ada38a4d 100644 --- a/kernel/fiasco/src/templates/globalconfig.out.arm-v7 +++ b/kernel/fiasco/src/templates/globalconfig.out.arm-v7 @@ -12,7 +12,7 @@ CONFIG_PF_REALVIEW=y # CONFIG_PF_IMX is not set # CONFIG_PF_S3C2410 is not set # CONFIG_PF_TEGRA2 is not set -# CONFIG_PF_OMAP3 is not set +# CONFIG_PF_OMAP is not set # CONFIG_PF_XSCALE is not set # CONFIG_PF_SA1100 is not set # CONFIG_PF_KIRKWOOD is not set diff --git a/kernel/fiasco/src/types/types.h b/kernel/fiasco/src/types/types.h index 6b30167cc..0fd244e6a 100644 --- a/kernel/fiasco/src/types/types.h +++ b/kernel/fiasco/src/types/types.h @@ -15,6 +15,10 @@ a nonull_static_cast( b p ) return reinterpret_cast( reinterpret_cast
(p) + d); } +template< typename T > +T access_once(T const &a) +{ return static_cast(a); } + template< typename T > class Static_object { @@ -77,6 +81,7 @@ public: { _v = o._v; return *static_cast(this); } Value value() const { return _v; } + Value value() const volatile { return _v; } void set_value(Value v) { _v = v; } bool operator < (Target const &o) const { return _v < o._v; } @@ -161,6 +166,10 @@ public: explicit Page_addr(Address a) : B(a) {} + Page_addr(Page_addr const volatile &o) : B(o.value()) {} + Page_addr(Page_addr const &o) : B(o.value()) {} + + Page_addr() {} diff --git a/kernel/fiasco/tool/kconfig/Makefile b/kernel/fiasco/tool/kconfig/Makefile index 6e2267f37..3e3d9b84f 100644 --- a/kernel/fiasco/tool/kconfig/Makefile +++ b/kernel/fiasco/tool/kconfig/Makefile @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 6 -SUBLEVEL = 38 +SUBLEVEL = 39 EXTRAVERSION = NAME = Flesh-Eating Bats with Fangs @@ -102,6 +102,10 @@ ifeq ("$(origin O)", "command line") KBUILD_OUTPUT := $(O) endif +ifeq ("$(origin W)", "command line") + export KBUILD_ENABLE_EXTRA_GCC_CHECKS := 1 +endif + # That's our default target when none is given on the command line PHONY := _all _all: @@ -421,7 +425,7 @@ endif # of make so .config is not included in this case either (for *config). no-dot-config-targets := clean mrproper distclean \ - cscope TAGS tags help %docs check% coccicheck \ + cscope gtags TAGS tags help %docs check% coccicheck \ include/linux/version.h headers_% \ kernelversion %src-pkg @@ -666,7 +670,7 @@ export MODLIB # INSTALL_MOD_STRIP, if defined, will cause modules to be # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then # the default option --strip-debug will be used. Otherwise, -# INSTALL_MOD_STRIP will used as the options to the strip command. +# INSTALL_MOD_STRIP value will be used as the options to the strip command. ifdef INSTALL_MOD_STRIP ifeq ($(INSTALL_MOD_STRIP),1) @@ -1018,7 +1022,7 @@ hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) PHONY += __headers __headers: include/linux/version.h scripts_basic FORCE - $(Q)$(MAKE) $(build)=scripts scripts/unifdef + $(Q)$(MAKE) $(build)=scripts build_unifdef PHONY += headers_install_all headers_install_all: @@ -1135,7 +1139,7 @@ CLEAN_FILES += vmlinux System.map \ MRPROPER_DIRS += include/config usr/include include/generated MRPROPER_FILES += .config .config.old .version .old_version \ include/linux/version.h \ - Module.symvers tags TAGS cscope* + Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS # clean - Delete most, but leave enough to build external modules # @@ -1222,6 +1226,7 @@ help: @echo ' modules_prepare - Set up for building external modules' @echo ' tags/TAGS - Generate tags file for editors' @echo ' cscope - Generate cscope index' + @echo ' gtags - Generate GNU GLOBAL index' @echo ' kernelrelease - Output the release version string' @echo ' kernelversion - Output the version stored in Makefile' @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ @@ -1262,6 +1267,7 @@ help: @echo ' make O=dir [targets] Locate all output files in "dir", including .config' @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' @echo ' make C=2 [targets] Force check of all c source with $$CHECK' + @echo ' make W=1 [targets] Enable extra gcc checks' @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @echo 'For further info see the ./README file' @@ -1380,7 +1386,7 @@ clean: $(clean-dirs) quiet_cmd_tags = GEN $@ cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@ -tags TAGS cscope: FORCE +tags TAGS cscope gtags: FORCE $(call cmd,tags) # Scripts to check various things for consistency diff --git a/kernel/fiasco/tool/kconfig/README b/kernel/fiasco/tool/kconfig/README index 8f41abd33..778d26aee 100644 --- a/kernel/fiasco/tool/kconfig/README +++ b/kernel/fiasco/tool/kconfig/README @@ -1,3 +1,3 @@ -kconfig taken from vanilla Linux 2.6.38, and slightly patched. +kconfig taken from vanilla Linux 2.6.39, and slightly patched. diff --git a/kernel/fiasco/tool/kconfig/scripts/Makefile b/kernel/fiasco/tool/kconfig/scripts/Makefile index 2e088109f..fcea26168 100644 --- a/kernel/fiasco/tool/kconfig/scripts/Makefile +++ b/kernel/fiasco/tool/kconfig/scripts/Makefile @@ -18,6 +18,11 @@ always := $(hostprogs-y) $(hostprogs-m) # The following hostprogs-y programs are only build on demand hostprogs-y += unifdef +# This target is used internally to avoid "is up to date" messages +PHONY += build_unifdef +build_unifdef: scripts/unifdef FORCE + @: + subdir-$(CONFIG_MODVERSIONS) += genksyms subdir-y += mod subdir-$(CONFIG_SECURITY_SELINUX) += selinux diff --git a/kernel/fiasco/tool/kconfig/scripts/Makefile.build b/kernel/fiasco/tool/kconfig/scripts/Makefile.build index 4eb99ab34..d5f925abe 100644 --- a/kernel/fiasco/tool/kconfig/scripts/Makefile.build +++ b/kernel/fiasco/tool/kconfig/scripts/Makefile.build @@ -49,6 +49,40 @@ ifeq ($(KBUILD_NOPEDANTIC),) $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS) endif endif + +# +# make W=1 settings +# +# $(call cc-option... ) handles gcc -W.. options which +# are not supported by all versions of the compiler +ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS +KBUILD_EXTRA_WARNINGS := -Wextra +KBUILD_EXTRA_WARNINGS += -Wunused -Wno-unused-parameter +KBUILD_EXTRA_WARNINGS += -Waggregate-return +KBUILD_EXTRA_WARNINGS += -Wbad-function-cast +KBUILD_EXTRA_WARNINGS += -Wcast-qual +KBUILD_EXTRA_WARNINGS += -Wcast-align +KBUILD_EXTRA_WARNINGS += -Wconversion +KBUILD_EXTRA_WARNINGS += -Wdisabled-optimization +KBUILD_EXTRA_WARNINGS += -Wlogical-op +KBUILD_EXTRA_WARNINGS += -Wmissing-declarations +KBUILD_EXTRA_WARNINGS += -Wmissing-format-attribute +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wmissing-include-dirs,) +KBUILD_EXTRA_WARNINGS += -Wmissing-prototypes +KBUILD_EXTRA_WARNINGS += -Wnested-externs +KBUILD_EXTRA_WARNINGS += -Wold-style-definition +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Woverlength-strings,) +KBUILD_EXTRA_WARNINGS += -Wpacked +KBUILD_EXTRA_WARNINGS += -Wpacked-bitfield-compat +KBUILD_EXTRA_WARNINGS += -Wpadded +KBUILD_EXTRA_WARNINGS += -Wpointer-arith +KBUILD_EXTRA_WARNINGS += -Wredundant-decls +KBUILD_EXTRA_WARNINGS += -Wshadow +KBUILD_EXTRA_WARNINGS += -Wswitch-default +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wvla,) +KBUILD_CFLAGS += $(KBUILD_EXTRA_WARNINGS) +endif + include scripts/Makefile.lib ifdef host-progs @@ -403,7 +437,6 @@ ifneq ($(cmd_files),) include $(cmd_files) endif - # Declare the contents of the .PHONY variable as phony. We keep that # information in a variable se we can use it in if_changed and friends. diff --git a/kernel/fiasco/tool/kconfig/scripts/Makefile.modpost b/kernel/fiasco/tool/kconfig/scripts/Makefile.modpost index 7d2205658..56dfafc73 100644 --- a/kernel/fiasco/tool/kconfig/scripts/Makefile.modpost +++ b/kernel/fiasco/tool/kconfig/scripts/Makefile.modpost @@ -35,14 +35,14 @@ # KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined # symbols in the final module linking stage # KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. -# This is solely usefull to speed up test compiles +# This is solely useful to speed up test compiles PHONY := _modpost _modpost: __modpost include include/config/auto.conf include scripts/Kbuild.include -# When building external modules load the Kbuild file to retreive EXTRA_SYMBOLS info +# When building external modules load the Kbuild file to retrieve EXTRA_SYMBOLS info ifneq ($(KBUILD_EXTMOD),) # set src + obj - they may be used when building the .mod.c file diff --git a/kernel/fiasco/tool/kconfig/scripts/kconfig/conf.c b/kernel/fiasco/tool/kconfig/scripts/kconfig/conf.c index 659326c3e..006ad817c 100644 --- a/kernel/fiasco/tool/kconfig/scripts/kconfig/conf.c +++ b/kernel/fiasco/tool/kconfig/scripts/kconfig/conf.c @@ -332,7 +332,7 @@ static int conf_choice(struct menu *menu) } if (!child) continue; - if (line[strlen(line) - 1] == '?') { + if (line[0] && line[strlen(line) - 1] == '?') { print_help(child); continue; } diff --git a/l4/conf/examples/l4lx-gfx.cfg b/l4/conf/examples/l4lx-gfx.cfg index 8b6c580b6..a7161e167 100644 --- a/l4/conf/examples/l4lx-gfx.cfg +++ b/l4/conf/examples/l4lx-gfx.cfg @@ -51,7 +51,7 @@ loader:start( loader:start( { caps = { log = L4.Env.log:m("rws"), - fb = mag_svc:create(L4.Proto.Goos, "640x480"); + fb = mag_svc:create(L4.Proto.Goos, "g=640x480"); vbus = vbus_l4linux; }, l4re_dbg = L4.Dbg.Warn, diff --git a/l4/conf/modules.list b/l4/conf/modules.list index b2dab980d..e0327b120 100644 --- a/l4/conf/modules.list +++ b/l4/conf/modules.list @@ -75,7 +75,7 @@ module libc_be_l4re.so module r/libsupc++.so module r/libuc_c.so -entry L4linux ARM +entry L4Linux ARM roottask moe rom/l4lx.cfg module l4re module ned diff --git a/l4/mk/Kconfig b/l4/mk/Kconfig index 76f1963a1..27efec173 100644 --- a/l4/mk/Kconfig +++ b/l4/mk/Kconfig @@ -252,6 +252,9 @@ config PLATFORM_ARM_omap3evm config PLATFORM_ARM_beagleboard bool "Beagleboard" +config PLATFORM_ARM_pandaboard + bool "Pandaboard" + config PLATFORM_ARM_tegra2 bool "NVIDIA Tegra 2" @@ -352,6 +355,21 @@ config RAM_SIZE_MB default 128 endif +if PLATFORM_ARM_pandaboard + +config ARM_PLATFORM_TYPE + string + default "pandaboard" + +config RAM_BASE + hex + default 0x80000000 + +config RAM_SIZE_MB + int + default 512 +endif + if PLATFORM_ARM_tegra2 config ARM_PLATFORM_TYPE diff --git a/l4/mk/Makeconf b/l4/mk/Makeconf index 6a3a4252c..2ed673f3c 100644 --- a/l4/mk/Makeconf +++ b/l4/mk/Makeconf @@ -304,7 +304,7 @@ endif # linking address, source a possible privately configured one ifneq ($(RELOC_PHYS),) -include $(OBJ_BASE)/Makeconf.ram_base -EXTRA_GENERAL_D_DEP += $(if $(wildcard $(OBJ_BASE)/Makeconf.ram_base),$(OBJ_BASE)/Makeconf.ram_base) +BID_RAM_BASE_DEP := $(if $(wildcard $(OBJ_BASE)/Makeconf.ram_base),$(OBJ_BASE)/Makeconf.ram_base) endif INCLUDE_MAKE_RULES += $(if $(LABEL),$(L4DIR)/Makeconf.$(LABEL)) @@ -339,11 +339,6 @@ PL_j := -j $(PL) export PL endif -BID_INT_NOEXC=n -ifeq ($(MODE_NOEXC),y) -BID_INT_NOEXC=y -endif - include $(L4DIR)/mk/config.inc ifneq ($(CONFIG_HAVE_LDSO),) diff --git a/l4/mk/aliases.d/10-stdlibs b/l4/mk/aliases.d/10-stdlibs index ce4468a2a..7134537eb 100644 --- a/l4/mk/aliases.d/10-stdlibs +++ b/l4/mk/aliases.d/10-stdlibs @@ -1,3 +1,3 @@ -stdlibs-all := l4sys l4re l4re-main libc_be_l4refile libc_be_l4re cxx_io cxx_libc_io -stdlibs := stdlibs-all libl4re-vfs -stdlibs-sh := stdlibs-all libdl libc_support_misc libc_be_socket_noop +stdlibs-all := l4sys l4re l4re-main l4re-util libc_be_l4refile libc_be_l4re cxx_io cxx_libc_io +stdlibs := stdlibs-all libl4re-vfs +stdlibs-sh := stdlibs-all ldso libdl libc_support_misc libc_be_socket_noop diff --git a/l4/mk/binary.inc b/l4/mk/binary.inc index 903dcfb51..0472e8fea 100644 --- a/l4/mk/binary.inc +++ b/l4/mk/binary.inc @@ -171,9 +171,6 @@ all:: $(TARGET) disasm: $(TARGET) $(call DISASM_CMD,$(if $(DABIN),$(DABIN),$<)) -expand_libdir_noexc = $(foreach i,$(1),$(i)/noexc $(i)) -expand_libdir_reentrant = $(foreach i,$(1),$(i)/r $(i)) - ifneq ($(CONFIG_USE_DROPS_STDDIR),) L4INCDIR ?= $(addprefix $(OBJ_BASE)/include/$(ARCH)/,$(L4API)) \ $(addprefix $(OBJ_BASE)/include/,$(L4API)) \ @@ -205,10 +202,6 @@ L4LIBDIR ?= $(addprefix $(OBJ_BASE)/lib/$(ARCH)_$(CPU)/,$(L4API)) \ $(OBJ_BASE)/lib endif -L4LIBDIR_R-y = $(call expand_libdir_reentrant, $(L4LIBDIR)) -L4LIBDIR_R-n = $(L4LIBDIR) -L4LIBDIR_NOEXC= $(call expand_libdir_noexc,$(L4LIBDIR_R-$(L4_MULTITHREADED))) - # # Variables Section # @@ -268,7 +261,6 @@ REQUIRES_LIBS += $(REQUIRES_LIBS_$(ARCH)) $(call BID_mode_var,REQUIRES_LIBS) #CRT0 = $(word 1, $(CRT0_$@_$(OSYSTEM)) $(CRT0_$@) $(CRT0_$(OSYSTEM))) #CRTN = $(word 1, $(CRTN_$@_$(OSYSTEM)) $(CRTN_$@) $(CRTN_$(OSYSTEM))) LIBS += $(strip $(LIBS_$(OSYSTEM)) $(LIBS_$@) $(LIBS_$@_$(OSYSTEM))) -LIBS += $(REQUIRES_LIBS_LIST) LDFLAGS += $(strip $(LDFLAGS_$(OSYSTEM)) $(LDFLAGS_$@) $(LDFLAGS_$@_$(OSYSTEM))) @@ -351,10 +343,12 @@ ifeq ($(MODE),host) SYSTEM_TARGET = CC = $(HOST_CC) CXX = $(HOST_CXX) +LIBS += $(REQUIRES_LIBS_LIST) else # no architecture specific flags in host mode -LDFLAGS += $(LDFLAGS_$(ARCH)) -OPTS += $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU)) +LDFLAGS += $(LDFLAGS_$(ARCH)) +OPTS += $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU)) +L4_LIBS += $(REQUIRES_LIBS_LIST) endif # no link address if build a lib or we're compiling a host program and using @@ -388,7 +382,6 @@ CFLAGS += $(CFLAGS_C99) ifneq ($(MODE),host) CFLAGS += $(GCCNOSTACKPROTOPT) endif -DEFINES-$(L4_MULTITHREADED) += -DL4_THREAD_SAFE DEFINES += $(DEFINES_$(OSYSTEM)) $(DEFINES_$($@_ # write helper variables containing the IDL-C-Sources @@ -584,8 +573,6 @@ $(BID_OBJ_Makefile).inc: .general.d # create the object-dirs @$(if $(OBJDIRS), $(VERBOSE)set -e; for d in $(OBJDIRS); do \ [ -d "$$d" ] || $(MKDIR) $$d; done ) - @[ -d "noexc" ] || $(MKDIR) noexc - @[ -d "r" ] || $(MKDIR) r # # write the object-dependencies for the targets @@ -618,7 +605,7 @@ ifneq ($(wildcard $(STATICFILE)),) @$(ECHO) -e '\n$@: $(firstword $(wildcard $(STATICFILE)))' >>$@_ # we find out the relocation address here. @$(ECHO) -e '$(foreach target, $(TARGET),$(strip \ - \nLDFLAGS_$(target)+= -Ttext=$(firstword \ + \nLDFLAGS_$(target)+= -Ttext=__executable_start=$(firstword \ $(shell $(AWKP) -v prog=$(target) \ "/^[^\#]/{if(\$$2==prog){print $$1; exit}}" \ < $(firstword $(wildcard $(STATICFILE)))) \ @@ -632,7 +619,7 @@ else >>$@_ # we find out the relocation address here. @$(ECHO) -e '$(foreach target, $(TARGET),$(strip \ - \nLDFLAGS_$(target)+= -Ttext=$(firstword \ + \nLDFLAGS_$(target)+= --defsym=__executable_start=$(firstword \ $(call default_reloc,$(target)))))' \ >>$@_ endif # STATIC file @@ -708,96 +695,28 @@ DEPEND_FLAG = -MD .PHONY: FORCE endif # CONFIG_HAVE_LDSO empty +DEPFLAGS = -MD -MF $(@D)/.$(@F).d -%.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.ne.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS_NOEXC) $(CXXFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.s.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.s.ne.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS_NOEXC) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.s.o: %.cc - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.o: %.cpp - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.s.o: %.cpp - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.o: %.cpp - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.s.o: %.cpp - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.o: %.c - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.s.o: %.c - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.o: %.c - @$(COMP_PR_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) - -%.pr.s.o: %.c - @$(COMP_PR_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) +include $(L4DIR)/mk/rules.inc -%.o: %.S - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) +# generate rules to compile %.cc files to %.o, %.s.o etc +$(eval $(call BID_GENERATE_CXX_MAKE_RULES,cc)) +# generate rules to compile %.cpp files to %.o, %.s.o etc +$(eval $(call BID_GENERATE_CXX_MAKE_RULES,cpp)) +# generate rules to compile %.c files to %.o, %.s.o etc +$(eval $(call BID_GENERATE_C_MAKE_RULES,c)) +# generate rules to compile %.S files to %.o, %.s.o etc +$(eval $(call BID_GENERATE_DEFAULT_MAKE_RULES,%,%.S,AS)) -%.s.o: %.S - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) +# Reset implicit rules, mind the TAB. +%: %.c + -%.pr.o: %.S - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) +%: %.cc + -%.pr.s.o: %.S - @$(COMP_MESSAGE) - $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ - $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) +%: %.S + %.c: %.y @$(GEN_MESSAGE) diff --git a/l4/mk/defconfig/config.amd64 b/l4/mk/defconfig/config.amd64 index 64ffc8f46..295d15659 100644 --- a/l4/mk/defconfig/config.amd64 +++ b/l4/mk/defconfig/config.amd64 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# L4Re version: SVN +# L4Re Configuration # # CONFIG_BUILD_ARCH_x86 is not set CONFIG_BUILD_ARCH_amd64=y diff --git a/l4/mk/defconfig/config.arm-rv b/l4/mk/defconfig/config.arm-rv index e1d57ae4e..70b67209f 100644 --- a/l4/mk/defconfig/config.arm-rv +++ b/l4/mk/defconfig/config.arm-rv @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# L4Re version: SVN +# L4Re Configuration # # CONFIG_BUILD_ARCH_x86 is not set # CONFIG_BUILD_ARCH_amd64 is not set @@ -31,6 +31,7 @@ CONFIG_PLATFORM_ARM_rv=y # CONFIG_PLATFORM_ARM_imx51 is not set # CONFIG_PLATFORM_ARM_omap3evm is not set # CONFIG_PLATFORM_ARM_beagleboard is not set +# CONFIG_PLATFORM_ARM_pandaboard is not set # CONFIG_PLATFORM_ARM_tegra2 is not set # CONFIG_PLATFORM_ARM_custom is not set CONFIG_ARM_PLATFORM_TYPE="rv" diff --git a/l4/mk/defconfig/config.ppc32 b/l4/mk/defconfig/config.ppc32 index 5f38b615c..29ba12b62 100644 --- a/l4/mk/defconfig/config.ppc32 +++ b/l4/mk/defconfig/config.ppc32 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# L4Re version: SVN +# L4Re Configuration # # CONFIG_BUILD_ARCH_x86 is not set # CONFIG_BUILD_ARCH_amd64 is not set diff --git a/l4/mk/defconfig/config.sparc b/l4/mk/defconfig/config.sparc index c11708f93..0ea75ecad 100644 --- a/l4/mk/defconfig/config.sparc +++ b/l4/mk/defconfig/config.sparc @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# L4Re version: SVN +# L4Re Configuration # # CONFIG_BUILD_ARCH_x86 is not set # CONFIG_BUILD_ARCH_amd64 is not set @@ -14,8 +14,6 @@ CONFIG_CPU="v8" CONFIG_SPARC_PLATFORM_TYPE="leon3" # CONFIG_USE_DROPS_STDDIR is not set # CONFIG_USE_DICE is not set -CONFIG_DROPS_STDDIR="/path/to/l4re" -CONFIG_DROPS_INSTDIR="/path/to/l4re" CONFIG_BID_COLORED_PHASES=y # diff --git a/l4/mk/defconfig/config.x86 b/l4/mk/defconfig/config.x86 index 1b078c33d..5c366ad0c 100644 --- a/l4/mk/defconfig/config.x86 +++ b/l4/mk/defconfig/config.x86 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# L4Re version: SVN +# L4Re Configuration # CONFIG_BUILD_ARCH_x86=y # CONFIG_BUILD_ARCH_amd64 is not set diff --git a/l4/mk/export_defs.inc b/l4/mk/export_defs.inc index ce6e3b0d4..5cff4b596 100644 --- a/l4/mk/export_defs.inc +++ b/l4/mk/export_defs.inc @@ -30,7 +30,6 @@ L4_LDFLAGS_GCC_STATIC = $(filter-out -l%,$(BID_LDFLAGS_FOR_LINKING_GCC)) L4_LDFLAGS_DYNAMIC_LINKER_LD = $(LDFLAGS_DYNAMIC_LINKER) L4_LDFLAGS_DYNAMIC_LINKER_GCC= $(LDFLAGS_DYNAMIC_LINKER_GCC) L4_LIBDIRS = $(addprefix -L,$(L4LIBDIR)) -L4_LIBDIRS_R = $(addprefix -L,$(foreach i,$(L4LIBDIR),$(i)/r)) L4_CPPFLAGS = $(CPPFLAGS) L4_CFLAGS = $(CFLAGS) L4_CXXFLAGS = $(CXXFLAGS) diff --git a/l4/mk/lib.mk b/l4/mk/lib.mk index 4cfee837a..1873ff7fa 100644 --- a/l4/mk/lib.mk +++ b/l4/mk/lib.mk @@ -52,25 +52,19 @@ TARGET_LIB := $(TARGET) $(TARGET_$(OSYSTEM)) TARGET_SHARED := $(filter %.so,$(TARGET_LIB)) TARGET_STANDARD := $(filter-out %.so,$(TARGET_LIB)) -TARGET_LIB_NE := $(TARGET_NE) $(TARGET_NE_$(OSYSTEM)) -TARGET_SHARED_NE := $(addprefix noexc/,$(filter %.so,$(TARGET_LIB_NE))) -TARGET_STANDARD_NE:= $(addprefix noexc/,$(filter-out %.so,$(TARGET_LIB_NE))) - TARGET_PROFILE := $(patsubst %.a,%.pr.a,\ $(filter $(BUILD_PROFILE),$(TARGET_STANDARD))) TARGET_PROFILE_SHARED := $(filter %.so,$(TARGET_PROFILE)) TARGET_PIC := $(patsubst %.a,%.p.a,\ $(filter $(BUILD_PIC),$(TARGET_STANDARD))) -TARGET_PIC_NE := $(addprefix noexc/,$(TARGET_PIC)) TARGET_PROFILE_PIC := $(patsubst %.a,%.p.a,\ $(filter $(BUILD_PIC),$(TARGET_PROFILE))) TARGET += $(TARGET_$(OSYSTEM)) $(TARGET_PIC) -TARGET += $(TARGET_PIC_NE) $(TARGET_SHARED_NE) $(TARGET_STANDARD_NE) TARGET += $(TARGET_PROFILE) $(TARGET_PROFILE_SHARED) $(TARGET_PROFILE_PIC) # define some variables different for lib.mk and prog.mk LDFLAGS += $(addprefix -L, $(PRIVATE_LIBDIR) $(PRIVATE_LIBDIR_$(OSYSTEM)) $(PRIVATE_LIBDIR_$@) $(PRIVATE_LIBDIR_$@_$(OSYSTEM))) -LDFLAGS += $(addprefix -L, $(if $(LINK_WITH_NOEXC_LIBS_$@),$(L4LIBDIR_NOEXC),$(L4LIBDIR_R-$(L4_MULTITHREADED)))) +LDFLAGS += $(addprefix -L, $(L4LIBDIR)) LDFLAGS += $(LIBCLIBDIR) LDFLAGS_SO ?= -shared -nostdlib @@ -113,7 +107,7 @@ DEPS += $(foreach file,$(TARGET), $(dir $(file)).$(notdir $(file)).d) $(filter-out $(LINK_INCR) %.so %.o.a %.o.pr.a, $(TARGET)):%.a: $(OBJS) @$(AR_MESSAGE) - $(VERBOSE)$(MKDIR) $(basename $@) + $(VERBOSE)[ -d "$(dir $@)" ] || $(MKDIR) $(dir $@) $(VERBOSE)$(RM) $@ $(VERBOSE)$(AR) crs $@ $(OBJS) @$(BUILT_MESSAGE) @@ -121,7 +115,7 @@ $(filter-out $(LINK_INCR) %.so %.o.a %.o.pr.a, $(TARGET)):%.a: $(OBJS) # shared lib $(filter %.so, $(TARGET)):%.so: $(OBJS) $(CRTN) $(CRT0) $(CRTP) $(LIBDEPS) @$(LINK_SHARED_MESSAGE) - $(VERBOSE)$(MKDIR) $(basename $@) + $(VERBOSE)[ -d "$(dir $@)" ] || $(MKDIR) $(dir $@) $(VERBOSE)$(call MAKEDEP,$(LD)) $(LD) -m $(LD_EMULATION) \ -o $@ $(LDFLAGS_SO) $(addprefix -T,$(LDSCRIPT)) $(CRTP) \ $(OBJS) $(REQUIRES_LIBS_LIST) $(LDFLAGS) \ @@ -131,9 +125,10 @@ $(filter %.so, $(TARGET)):%.so: $(OBJS) $(CRTN) $(CRT0) $(CRTP) $(LIBDEPS) # build an object file (which looks like a lib to a later link-call), which # is either later included as a whole or not at all (important for static # constructors) -$(filter $(LINK_INCR) %.o.a %.o.pr.a, $(TARGET)):%.a: $(OBJS) $(LIBDEPS) +LINK_INCR_TARGETS = $(filter $(LINK_INCR) %.o.a %.o.pr.a, $(TARGET)) +$(LINK_INCR_TARGETS):%.a: $(OBJS) $(LIBDEPS) $(foreach x,$(LINK_INCR_TARGETS),$(LINK_INCR_ONLYGLOBSYMFILE_$(x))) @$(LINK_PARTIAL_MESSAGE) - $(VERBOSE)$(MKDIR) $(basename $@) + $(VERBOSE)[ -d "$(dir $@)" ] || $(MKDIR) $(dir $@) $(VERBOSE)$(call MAKEDEP,$(LD)) $(LD) -m $(LD_EMULATION) \ -T$(LDSCRIPT_INCR) \ -o $@ -r $(OBJS) $(LDFLAGS) diff --git a/l4/mk/modes.inc b/l4/mk/modes.inc index a9a5754ce..4ef49b6d5 100644 --- a/l4/mk/modes.inc +++ b/l4/mk/modes.inc @@ -3,21 +3,8 @@ # # Makefile-Include for defining modes -# Default is uClibc without reentrant functions. If, for example -# two independant threads of the same application call malloc at the same -# time, L4_MULTITHREADED _must_ be defined to y. -L4_MULTITHREADED ?= n -LIBC_IMPLEMENTATION-y := libpthread libc -LIBC_IMPLEMENTATION-n := libc -LIBC_IMPLEMENTATION = $(LIBC_IMPLEMENTATION-$(L4_MULTITHREADED)) -ifeq ($(LIBC_IMPLEMENTATION),) - $(error LIBC_IMPLEMENTATION not set, L4_MULTITHREADED must be defined to 'y' or 'n'.) -endif - -ifeq ($(MODE),l4linux) - ifeq ($(L4_MULTITHREADED),y) - $(error MODE=l4linux and L4_MULTITHREADED=y not possible) - endif +ifneq ($(L4_MULTITHREADED),) + $(error L4_MULTITHREADED is obsolete, just remove, reentrance is default now, you might want to add 'libpthread' to REQUIRES_LIBS) endif ifneq ($(MODE_USE_C),) @@ -78,8 +65,7 @@ LIBC_INCLUDE = -nostdinc \ BID_SUPPORTED_all_sigma0 = y LIBCINCDIR_all_sigma0 = $(LIBC_INCLUDE) -REQUIRES_LIBS_all_sigma0 = l4util l4util l4sys \ - $(LIBC_IMPLEMENTATION) +REQUIRES_LIBS_all_sigma0 = L4_LIBS_all_sigma0 = -static -nostdlib \ $(GCCLIB) $(GCCLIB_EH) -lcrt0 \ $(EXTRA_LIBS) @@ -95,8 +81,7 @@ LDFLAGS_all_sigma0 = -Bstatic BID_SUPPORTED_all_static = y LIBCINCDIR_all_static = $(LIBC_INCLUDE) -REQUIRES_LIBS_all_static = l4re-main l4re-util stdlibs \ - $(LIBC_IMPLEMENTATION) +REQUIRES_LIBS_all_static = stdlibs L4_LIBS_all_static = -static -nostdlib $(GCCLIB) $(GCCLIB_EH) \ $(EXTRA_LIBS) CRT0_all_static = $(CRTI_stat_bin) $(CRTBEGIN_stat_bin) $(CRT1_stat_bin) @@ -112,9 +97,9 @@ LIBCINCDIR_all_shared = $(LIBC_INCLUDE) CRT0_all_shared = $(CRTI_dyn_bin) $(CRTBEGIN_dyn_bin) $(CRT1_dyn_bin) CRTN_all_shared = $(CRTN_dyn_bin) LDSCRIPT_all_shared = $(LDS_dyn_bin) -REQUIRES_LIBS_all_shared = l4re-main l4re-util ldso stdlibs-sh \ - $(LIBC_IMPLEMENTATION) -L4_LIBS_all_shared += -nostdlib $(GCCLIB) $(GCCLIB_EH) \ +REQUIRES_LIBS_all_shared = stdlibs-sh +L4_LIBS_all_shared += -nostdlib -luc_c_nonshared.p \ + $(GCCLIB) $(GCCLIB_EH) \ $(EXTRA_LIBS) LDFLAGS_all_shared = --eh-frame-hdr diff --git a/l4/mk/prog.mk b/l4/mk/prog.mk index f1f383ccc..0a6484fe1 100644 --- a/l4/mk/prog.mk +++ b/l4/mk/prog.mk @@ -52,9 +52,6 @@ TARGET_STANDARD := $(TARGET) $(TARGET_$(OSYSTEM)) TARGET_PROFILE := $(addsuffix .pr,$(filter $(BUILD_PROFILE),$(TARGET))) TARGET += $(TARGET_$(OSYSTEM)) $(TARGET_PROFILE) -L4LIBDIR_PROG_NOEXC-y = $(L4LIBDIR_NOEXC) -L4LIBDIR_PROG_NOEXC-n = $(L4LIBDIR_R-$(L4_MULTITHREADED)) - LDFLAGS_DYNAMIC_LINKER := --dynamic-linker=rom/libld-l4.so LDFLAGS_DYNAMIC_LINKER_GCC := $(addprefix -Wl$(BID_COMMA),$(LDFLAGS_DYNAMIC_LINKER)) @@ -83,7 +80,7 @@ endif ifneq ($(HOST_LINK),1) # linking for our L4 platform - LDFLAGS += $(addprefix -L, $(L4LIBDIR_PROG_NOEXC-$(BID_INT_NOEXC))) + LDFLAGS += $(addprefix -L, $(L4LIBDIR)) LDFLAGS += $(addprefix -T, $(LDSCRIPT)) LDFLAGS += --start-group $(LIBS) $(L4_LIBS) --end-group LDFLAGS += --warn-common @@ -96,7 +93,7 @@ else else # linking for L4Linux, we want to look for Linux-libs before the L4-libs LDFLAGS += $(GCCSYSLIBDIRS) - LDFLAGS += $(addprefix -L, $(L4LIBDIR_PROG_NOEXC-$(BID_INT_NOEXC))) + LDFLAGS += $(addprefix -L, $(L4LIBDIR)) LDFLAGS += $(LIBS) -Wl,-Bstatic $(L4_LIBS) # -Wl,-Bdynamic is only applicable for dynamically linked programs, # we need a static/dynamic flag for the l4linux mode... diff --git a/l4/mk/rules.inc b/l4/mk/rules.inc new file mode 100644 index 000000000..0f9b4fd7e --- /dev/null +++ b/l4/mk/rules.inc @@ -0,0 +1,74 @@ +# vi:ft=make +# This makefile contains the generator for our basic pattern rules. +# These generators allow easy instantiation of own rule sets. + +# variables for instantiating make rules. +# for C++ compile (CXX) use $(CXX), $(INT_CXX_NAME), and $(CXXFLAGS) +BID_CXX_COMPILER = CXX +BID_CXX_COMPILER_INT_NAME = INT_CXX_NAME +# for C compile (C) use $(CC), $(INT_CPP_NAME), and $(CFLAGS) +BID_C_COMPILER = CC +BID_C_COMPILER_INT_NAME = INT_CPP_NAME +# for AS compile (AS) use $(CC), $(INT_CPP_NAME), and $(ASFLAGS) +BID_AS_COMPILER = CC +BID_AS_COMPILER_INT_NAME = INT_CPP_NAME + +# Template for our make rules. +# arg1: the target or target pattern (e.g., %.o) +# arg2: the prerequisites (e.g., %.c) +# arg3: the compiler pattern, used for determining the compiler +# variables and default flags (e.g., CXX). The rule uses +# $($(BID__COMPILER)) as compiler, +# $($(BID__COMPILER_INT_NAME)) for gendep, and +# $(FLAGS) as flags +# arg4: extra command line flags for the compile +define BID_MAKE_RULE_template_gendep +$(1): $(2) + @$$(COMP_MESSAGE) + $$(VERBOSE)$$(call MAKEDEP,$$($(BID_$(3)_COMPILER_INT_NAME))) $$($(BID_$(3)_COMPILER)) -c $$(DEPEND_FLAG) $$(CPPFLAGS) $$($(3)FLAGS) $(4) $$(call absfilename,$$<) -o $$@ + $$(DEPEND_VERBOSE)$$(call DEPEND_EXTEND_FUNC, $$(*F).d, $$(dir $$@).$$(notdir $$@).d) +endef + +# Template for our make rules (make rules that do not use gendep) +define BID_MAKE_RULE_template_nongendep +$(1): $(2) + @$$(COMP_MESSAGE) + $$(VERBOSE)$$($(BID_$(3)_COMPILER)) -c $$(DEPFLAGS) $$(CPPFLAGS) $$($(3)FLAGS) $(4) $$(call absfilename,$$<) -o $$@ +endef + +# which template rule do we really use +BID_MAKE_RULE_template = $(BID_MAKE_RULE_template_gendep) + +# +# Generate the default set of make rules. +# targets: .o, .s.o, .pr.o, and .pr.s.o +# +define BID_GENERATE_DEFAULT_MAKE_RULES + $(call BID_MAKE_RULE_template,$(1).o,$(2),$(3),$(4)) + $(call BID_MAKE_RULE_template,$(1).s.o,$(2),$(3),$(4) $$(PICFLAGS)) + $(call BID_MAKE_RULE_template,$(1).pr.o,$(2),$(3),$(4) -DPROFILE -pg) + $(call BID_MAKE_RULE_template,$(1).pr.s.o,$(2),$(3),$(4) $$(PICFLAGS) -DPROFILE -pg) +endef + +# +# Generate the C++ set of make rules. +# prerequisites: %. (usually %.cc) +# targets: %.o, %.s.o, %.ne.o, %.s.ne.o, %.pr.o, and %.pr.s.o +# +define BID_GENERATE_CXX_MAKE_RULES + $(call BID_GENERATE_DEFAULT_MAKE_RULES,%,%.$(1),CXX) + $(call BID_MAKE_RULE_template,%.ne.o,%.$(1),CXX,$$(CXXFLAGS_NOEXC)) + $(call BID_MAKE_RULE_template,%.s.ne.o,%.$(1),CXX,$$(CXXFLAGS_NOEXC) $$(PICFLAGS)) +endef + +# +# +# Generate the C set of make rules. +# prerequisites: %. (usually %.c) +# targets: %.o, %.s.o, %.pr.o, and %.pr.s.o +# +define BID_GENERATE_C_MAKE_RULES + $(call BID_GENERATE_DEFAULT_MAKE_RULES,%,%.$(1),C) +endef + + diff --git a/l4/pkg/acpica/Control b/l4/pkg/acpica/Control index 99fc677bc..4a3a5aae0 100644 --- a/l4/pkg/acpica/Control +++ b/l4/pkg/acpica/Control @@ -1,3 +1,3 @@ provides: acpica -requires: l4re libc_r +requires: l4re libc maintainer: warg@os.inf.tu-dresden.de diff --git a/l4/pkg/ankh/Control b/l4/pkg/ankh/Control index 0ebdeab11..ad91c427c 100644 --- a/l4/pkg/ankh/Control +++ b/l4/pkg/ankh/Control @@ -1,4 +1,4 @@ -provides: ankh ankh_lwip libc_be_socket_lwip +provides: ankh ankh_lwip libc_be_socket_lwip libankh_packet_analyzer requires: l4util dde-linux26 dde-linux26_net libboost-lite shmc_ringbuf lxfuxlibc libstdc++ Maintainer: doebel@os.inf.tu-dresden.de diff --git a/l4/pkg/ankh/examples/dhcp/Makefile b/l4/pkg/ankh/examples/dhcp/Makefile index 6750c533e..32190e36b 100644 --- a/l4/pkg/ankh/examples/dhcp/Makefile +++ b/l4/pkg/ankh/examples/dhcp/Makefile @@ -5,7 +5,6 @@ TARGET = dhcp_clnt SYSTEMS = x86-l4f arm-l4f SRC_C = main.c REQUIRES_LIBS = ankh_netboot ankh -L4_MULTITHREADED = y PRIVATE_INCDIR += $(SRC_DIR)/../../lib/netboot diff --git a/l4/pkg/ankh/examples/lwip/Makefile b/l4/pkg/ankh/examples/lwip/Makefile index 3e837b9da..5f958d1b4 100644 --- a/l4/pkg/ankh/examples/lwip/Makefile +++ b/l4/pkg/ankh/examples/lwip/Makefile @@ -5,7 +5,6 @@ TARGET = lwip_test SRC_C = main.c SYSTEMS = x86-l4f arm-l4f REQUIRES_LIBS = ankh_lwip libc_be_socket_lwip -L4_MULTITHREADED = y include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/ankh/examples/morpork/Makefile b/l4/pkg/ankh/examples/morpork/Makefile index d224de8cb..528e1b19f 100644 --- a/l4/pkg/ankh/examples/morpork/Makefile +++ b/l4/pkg/ankh/examples/morpork/Makefile @@ -3,8 +3,7 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = morpork SYSTEMS = x86-l4f arm-l4f -L4_MULTITHREADED = y SRC_CC = main.cc arping.cc -REQUIRES_LIBS = l4util l4re l4re-util shmc_ringbuf libstdc++ libboost-lite +REQUIRES_LIBS = ankh libboost-lite include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/ankh/examples/pingpong/Makefile b/l4/pkg/ankh/examples/pingpong/Makefile index 9f31bc1d0..6a90140b4 100644 --- a/l4/pkg/ankh/examples/pingpong/Makefile +++ b/l4/pkg/ankh/examples/pingpong/Makefile @@ -3,8 +3,7 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = morping morpong SYSTEMS = x86-l4f arm-l4f -REQUIRES_LIBS = l4util l4re-util shmc_ringbuf libstdc++ libboost-lite -L4_MULTITHREADED = y +REQUIRES_LIBS = ankh libboost-lite SRC_CC_morping = ping.cc SRC_CC_morpong = ping.cc diff --git a/l4/pkg/ankh/examples/wget/Makefile b/l4/pkg/ankh/examples/wget/Makefile index e98b1e5e5..c888fe160 100644 --- a/l4/pkg/ankh/examples/wget/Makefile +++ b/l4/pkg/ankh/examples/wget/Makefile @@ -4,7 +4,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = wget_clnt SYSTEMS = x86-l4f arm-l4f REQUIRES_LIBS = ankh_lwip libc_be_fs_noop libc_support_misc libc_be_sig -L4_MULTITHREADED = y PRIVATE_INCDIR += $(SRC_DIR)/contrib/src CFLAGS += -DHAVE_CONFIG_H -Wno-sign-compare -Wno-unused diff --git a/l4/pkg/ankh/include/lwip-ankh.h b/l4/pkg/ankh/include/lwip-ankh.h index cef6b14e8..7af9e1f9f 100644 --- a/l4/pkg/ankh/include/lwip-ankh.h +++ b/l4/pkg/ankh/include/lwip-ankh.h @@ -46,3 +46,5 @@ L4_INLINE void __hexdump(unsigned char *buf, unsigned len) * accordingly, so that it does not contain these args afterwards. */ int l4_lwip_init(int *argc, char **argv); + +extern struct netif ankh_netif; diff --git a/l4/pkg/ankh/lib/client-c/Makefile b/l4/pkg/ankh/lib/client-c/Makefile index de081e8a6..4858edc9e 100644 --- a/l4/pkg/ankh/lib/client-c/Makefile +++ b/l4/pkg/ankh/lib/client-c/Makefile @@ -3,7 +3,7 @@ L4DIR ?= $(PKGDIR)/../.. SYSTEMS = x86-l4f arm-l4f PC_FILENAME = ankh -REQUIRES_LIBS = shmc_ringbuf l4re-util +REQUIRES_LIBS = shmc_ringbuf l4re-util libpthread TARGET = lib$(PKGNAME)-c.a lib$(PKGNAME)-c.so SRC_CC = lib.cc diff --git a/l4/pkg/ankh/lib/libc_be_socket/Makefile b/l4/pkg/ankh/lib/libc_be_socket/Makefile index 06038b583..3af0d6661 100644 --- a/l4/pkg/ankh/lib/libc_be_socket/Makefile +++ b/l4/pkg/ankh/lib/libc_be_socket/Makefile @@ -4,7 +4,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = libc_be_socket_lwip.a libc_be_socket_lwip.so SYSTEMS = x86-l4f arm-l4f PC_FILENAME = libc_be_socket_lwip -L4_MULTITHREADED = y SRC_C = be.c SRC_CC = sock_fs.cc REQUIRES_LIBS = ankh_lwip diff --git a/l4/pkg/ankh/lib/lwip/lib/Makefile b/l4/pkg/ankh/lib/lwip/lib/Makefile index 041aace81..0d264af47 100644 --- a/l4/pkg/ankh/lib/lwip/lib/Makefile +++ b/l4/pkg/ankh/lib/lwip/lib/Makefile @@ -5,7 +5,6 @@ TARGET = liblwip.a liblwip.so PC_FILENAME = ankh_lwip REQUIRES_LIBS = ankh libpthread SYSTEMS = x86-l4f arm-l4f -L4_MULTITHREADED = y CONTRIB_INCDIR = ankh_lwip \ ankh_lwip/contrib/src/include \ ankh_lwip/contrib/src/include/ipv4 diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c b/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c index a96754cd1..15bb471de 100644 --- a/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c +++ b/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c @@ -400,7 +400,7 @@ err_t ankhif_init(struct netif *netif) static ankh_config_info cfg = { 2048, L4_INVALID_CAP, L4_INVALID_CAP, "" }; // default interface -static struct netif ankh_netif; +struct netif ankh_netif; static ip_addr_t ipaddr, netmask, gw; static int try_l4re_option(int argc, char **argv, unsigned idx) diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/cc.h b/l4/pkg/ankh/lib/lwip/lib/arch/cc.h index ff63ea68e..00d5b17a2 100644 --- a/l4/pkg/ankh/lib/lwip/lib/arch/cc.h +++ b/l4/pkg/ankh/lib/lwip/lib/arch/cc.h @@ -37,7 +37,17 @@ #include #include #include -extern int h_errno; + +/* ------------ Taken start ------------------ */ +/* Taken from uclibc-netdb.h because lwip has its own netdb.h... */ +/* pkg/uclibc/lib/contrib/uclibc/include/netdb.h */ +/* Error status for non-reentrant lookup functions. + We use a macro to access always the thread-specific `h_errno' variable. */ +#define h_errno (*__h_errno_location ()) + +/* Function to get address of global `h_errno' variable. */ +extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); +/* ------------ Taken end ------------------ */ /* Define generic types used in lwIP */ typedef unsigned char u8_t; diff --git a/l4/pkg/ankh/server/src/Makefile b/l4/pkg/ankh/server/src/Makefile index 795890074..85b57f8b7 100644 --- a/l4/pkg/ankh/server/src/Makefile +++ b/l4/pkg/ankh/server/src/Makefile @@ -41,7 +41,6 @@ REQUIRES_LIBS += libstdc++ libsupc++ l4re-util l4re l4re_c \ l4re_c-util log slab libboost-lite ddekit dde-linux26 dde-linux26_net shmc \ shmc_ringbuf libankh_packet_analyzer \ $(REQUIRES_LIBS-ARCH-$(ARCH)) -L4_MULTITHREADED = y ifeq ($(ARCH), arm) DEFINES += -D__LINUX_ARM_ARCH__=6 diff --git a/l4/pkg/boehm_gc/contrib/include/private/gc_priv.h b/l4/pkg/boehm_gc/contrib/include/private/gc_priv.h index a07a4b916..7b895b279 100644 --- a/l4/pkg/boehm_gc/contrib/include/private/gc_priv.h +++ b/l4/pkg/boehm_gc/contrib/include/private/gc_priv.h @@ -304,11 +304,13 @@ typedef char * ptr_t; /* A generic pointer to which we can add */ # define GET_TIME(x) x = GetTickCount() # define MS_TIME_DIFF(a,b) ((long)((a)-(b))) # elif defined (__L4) -# include -# define CLOCK_TYPE l4_cpu_time_t -# define CLOCKS_PER_SEC 1000000 -# define MS_TIME_DIFF(a,b) ((long)((a)-(b))) -# define GET_TIME(x) x = l4re_kip()->clock +# ifndef GET_TIME +# include +# define CLOCK_TYPE l4_cpu_time_t +# define CLOCKS_PER_SEC 1000000 +# define MS_TIME_DIFF(a,b) ((long)((a)-(b))) +# define GET_TIME(x) x = l4re_kip()->clock +# endif # else /* !MSWIN32, !MSWINCE, !BSD_TIME */ # include # if !defined(__STDC__) && defined(SPARC) && defined(SUNOS4) diff --git a/l4/pkg/boost-lite/Control b/l4/pkg/boost-lite/Control index e31487f7c..f51dfa588 100644 --- a/l4/pkg/boost-lite/Control +++ b/l4/pkg/boost-lite/Control @@ -1,2 +1,3 @@ Provides: libboost-lite +Requires: libstdc++ Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/boost-lite/lib/Makefile b/l4/pkg/boost-lite/lib/Makefile index cb56291fc..3fb6c24b1 100644 --- a/l4/pkg/boost-lite/lib/Makefile +++ b/l4/pkg/boost-lite/lib/Makefile @@ -3,5 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. PC_FILENAME = libboost-lite CONTRIB_INCDIR = boost-1_39-lite +REQUIRES_LIBS = libstdc++ include $(L4DIR)/mk/lib.mk diff --git a/l4/pkg/bootstrap/Control b/l4/pkg/bootstrap/Control index 3fcd323c1..e6cd01c46 100644 --- a/l4/pkg/bootstrap/Control +++ b/l4/pkg/bootstrap/Control @@ -1,2 +1,2 @@ -requires: drivers_uart drivers_of libc l4util cxx_io +requires: drivers_uart drivers_of libc_minimal l4util cxx_io Maintainer: frenzel@os.inf.tu-dresden.de, adam@os.inf.tu-dresden.de, warg@os.inf.tu-dresden.de diff --git a/l4/pkg/bootstrap/server/src/ARCH-arm/bootstrap.ld.in b/l4/pkg/bootstrap/server/src/ARCH-arm/bootstrap.ld.in index 60a2d4ffa..e536d0574 100644 --- a/l4/pkg/bootstrap/server/src/ARCH-arm/bootstrap.ld.in +++ b/l4/pkg/bootstrap/server/src/ARCH-arm/bootstrap.ld.in @@ -38,6 +38,7 @@ SECTIONS { /* Read-only sections, merged into text segment. The start address of * the text segment is : */ + . = LINKADDR; .text : { _stext = .; @@ -55,7 +56,7 @@ SECTIONS PROVIDE (etext = .); /* ensure that data starts at a new L4 page */ - . = ALIGN(4K); + . = ALIGN(4096); .data : { *(.data .data.* .gnu.linkonce.d.*) @@ -105,15 +106,15 @@ SECTIONS #if defined(PLACE_MODULES_AT_MODADDR) && !defined(SINGLE_SECTION) . = RAM_BASE + MODADDR; #endif - . = ALIGN(4K); + . = ALIGN(4096); .data.m : { _modules_start = .; *(.module.data) - . = ALIGN(4K); + . = ALIGN(4096); _modules_end = .; - . = ALIGN(4K); + . = ALIGN(4096); _module_data_start = .; *(.module_data) _module_data_end = .; diff --git a/l4/pkg/bootstrap/server/src/ARCH-arm/crt0.S b/l4/pkg/bootstrap/server/src/ARCH-arm/crt0.S index ea46ab043..32d6930c8 100644 --- a/l4/pkg/bootstrap/server/src/ARCH-arm/crt0.S +++ b/l4/pkg/bootstrap/server/src/ARCH-arm/crt0.S @@ -9,10 +9,28 @@ */ /* -*- c -*- */ +#define MIMIC_A_VMLINUZ + .section .text.init,#alloc,#execinstr .type _start,#function .globl _start _start: +/* Some bootloaders like it this way, for others it won't harm */ +#ifdef MIMIC_A_VMLINUZ + nop + nop + nop + nop + nop + nop + nop + nop + b 10f + .word 0x016f2818 + .word _start + .word _edata +10: +#endif /* * It might be the case that we're not run at the position where we * have been linked to. If this is the case we copy ourselves to the diff --git a/l4/pkg/bootstrap/server/src/ARCH-ppc32/bootstrap.ld.in b/l4/pkg/bootstrap/server/src/ARCH-ppc32/bootstrap.ld.in index 5d5172491..7450e908a 100644 --- a/l4/pkg/bootstrap/server/src/ARCH-ppc32/bootstrap.ld.in +++ b/l4/pkg/bootstrap/server/src/ARCH-ppc32/bootstrap.ld.in @@ -16,6 +16,7 @@ SECTIONS { /* Read-only sections, merged into text segment. The start address of * the text segment is : */ + . = LINKADDR; .text : { . = ALIGN(4); @@ -34,7 +35,7 @@ SECTIONS PROVIDE (etext = .); /* ensure that data starts at a new L4 page */ - . = ALIGN(4K); + . = ALIGN(4096); .data : { *(.data .data.* .gnu.linkonce.d.*) @@ -48,10 +49,10 @@ SECTIONS *(.module_info) _module_info_end = .; - . = ALIGN(4K); + . = ALIGN(4096); _modules_start = .; *(.module.data) - . = ALIGN(4K); + . = ALIGN(4096); _modules_end = .; } : data /* exception frames for C++ */ @@ -90,7 +91,7 @@ SECTIONS #if defined(PLACE_MODULES_AT_MODADDR) && !defined(SINGLE_SECTION) . = MODADDR; #else - . = ALIGN(4K); + . = ALIGN(4096); #endif _module_data_start = .; .module_data : { *(.module_data) } : mods diff --git a/l4/pkg/bootstrap/server/src/ARCH-sparc/bootstrap.ld.in b/l4/pkg/bootstrap/server/src/ARCH-sparc/bootstrap.ld.in index 65cd49748..6d88f6eb3 100644 --- a/l4/pkg/bootstrap/server/src/ARCH-sparc/bootstrap.ld.in +++ b/l4/pkg/bootstrap/server/src/ARCH-sparc/bootstrap.ld.in @@ -30,16 +30,16 @@ SECTIONS *(.module_info) _module_info_end = .; - . = ALIGN(4K); + . = ALIGN(4096); _modules_start = .; *(.module.data) - . = ALIGN(4K); + . = ALIGN(4096); _modules_end = .; } : data _edata = .; PROVIDE (edata = .); - . = ALIGN(4K); + . = ALIGN(4096); __bss_start = .; .bss : { diff --git a/l4/pkg/bootstrap/server/src/ARCH-x86/bootstrap.ld.in b/l4/pkg/bootstrap/server/src/ARCH-x86/bootstrap.ld.in index d0a94c1aa..2ba7bb2eb 100644 --- a/l4/pkg/bootstrap/server/src/ARCH-x86/bootstrap.ld.in +++ b/l4/pkg/bootstrap/server/src/ARCH-x86/bootstrap.ld.in @@ -35,16 +35,16 @@ SECTIONS *(.module_info) _module_info_end = .; - . = ALIGN(4K); + . = ALIGN(4096); _modules_start = .; *(.module.data) - . = ALIGN(4K); + . = ALIGN(4096); _modules_end = .; } : data _edata = .; PROVIDE (edata = .); - . = ALIGN(4K); + . = ALIGN(4096); __bss_start = .; .bss : { diff --git a/l4/pkg/bootstrap/server/src/Make.rules b/l4/pkg/bootstrap/server/src/Make.rules index efa244012..6598e46ad 100644 --- a/l4/pkg/bootstrap/server/src/Make.rules +++ b/l4/pkg/bootstrap/server/src/Make.rules @@ -17,7 +17,7 @@ DEFAULT_RELOC_ppc32 := 0x002d0000 DEFAULT_RELOC_sparc := 0x00100000 RELOC_PHYS := y LDFLAGS = -Bstatic -EXTRA_GENERAL_D_DEP = .redo-change-tracker +EXTRA_GENERAL_D_DEP = .redo-change-tracker $(BID_RAM_BASE_DEP) INCLUDE_MAKE_RULES = $(SRC_DIR)/*/Make.rules BOOTSTRAP_LD_dep := $(SRC_DIR)/ldscript.inc #REQUIRES_LIBS = libbsd-lite @@ -81,8 +81,9 @@ SUPPORT_CC_arm-sa1000 := support_sa1000.cc SUPPORT_CC_arm-pxa := support_pxa.cc SUPPORT_CC_arm-integrator := support_integrator.cc SUPPORT_CC_arm-rv := support_rv.cc -SUPPORT_CC_arm-omap3evm := support_omap3evm.cc -SUPPORT_CC_arm-beagleboard:= support_beagleboard.cc +SUPPORT_CC_arm-omap3evm := support_omap.cc +SUPPORT_CC_arm-beagleboard:= support_omap.cc +SUPPORT_CC_arm-pandaboard := support_omap.cc SUPPORT_CC_arm-tegra2 := support_tegra2.cc SUPPORT_CC_arm-imx21 := support_imx.cc SUPPORT_CC_arm-imx35 := support_imx.cc @@ -119,7 +120,7 @@ SRC_CC += $(SUPPORT_CC_$(ARCH)-$(PLATFORM_TYPE)) SRC_S += ARCH-$(ARCH)/crt0.S OPTS = -g -Os $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU)) -DEFINES += -DRAM_BASE=$(RAM_BASE) +DEFINES += -DRAM_BASE=$(RAM_BASE) -DL4_MINIMAL_LIBC=1 DEFINES += -DCMDLINE="\"$(BOOTSTRAP_CMDLINE)\"" DEFINES += -DPLATFORM_TYPE=\"$(PLATFORM_TYPE)\" DEFINES += -DPLATFORM_TYPE_$(PLATFORM_TYPE) @@ -300,7 +301,7 @@ CPPFLAGS += -DMODADDR=$(MOD_ADDR) LIBS = L4_LIBS = -static -nostdlib $(DRV_LIBS) -lcxx_base -lcxx_io -L4_LIBS += -luc_c $(GCCLIB) +L4_LIBS += -luc_c_minimal $(GCCLIB) all:: $(BOOTSTRAP_RAW) @@ -350,6 +351,7 @@ $(BOOTSTRAP_UIMAGE): $(BOOTSTRAP_RAW).$(BOOTSTRAP_UIMAGE_COMPRESSION) $(VERBOSE)$(MKIMAGE) -e $(call default_reloc,$(ARCH)) \ -a $(call default_reloc,$(ARCH)) -A $(MKIMAGE_ARCH) \ -C $(BOOTSTRAP_UIMAGE_COMPRESSION) \ + -n "L4 Image #$$(cat .build_nr)" \ -d $^ $@ $(TARGET): $(LDSCRIPT) $(OBJS_$(TARGET)) @@ -369,7 +371,7 @@ startup.o: CPPFLAGS += -DBUILD_DATE="\"$(shell date)\"" -DBUILD_NR=\"$(call incr $(LDSCRIPT): $(LDSCRIPT).in $(GENERAL_D_LOC) $(BOOTSTRAP_LD_dep) @$(GEN_MESSAGE) - $(VERBOSE)cpp -P $(CPPFLAGS) -DLINKADDR=$(DEFAULT_RELOC_$(ARCH)) $< $@; + $(VERBOSE)cpp -P $(CPPFLAGS) -DLINKADDR=$(strip $(call default_reloc,$(ARCH))) $< $@; clean:: $(VERBOSE)$(RM) mod.make.inc mod*.bin mbi_modules.bin $(LDSCRIPT) diff --git a/l4/pkg/bootstrap/server/src/exec.c b/l4/pkg/bootstrap/server/src/exec.c index 532b6ff78..2ca7a9262 100644 --- a/l4/pkg/bootstrap/server/src/exec.c +++ b/l4/pkg/bootstrap/server/src/exec.c @@ -32,7 +32,6 @@ exec_load_elf(exec_handler_func_t *handler, ElfW(Ehdr) *x = t->mod_start; ElfW(Phdr) *phdr, *ph; int i; - int result; /* Read the ELF header. */ @@ -57,7 +56,7 @@ exec_load_elf(exec_handler_func_t *handler, if (ph->p_flags & PF_R) type |= EXEC_SECTYPE_READ; if (ph->p_flags & PF_W) type |= EXEC_SECTYPE_WRITE; if (ph->p_flags & PF_X) type |= EXEC_SECTYPE_EXECUTE; - result = (*handler)(handle, + (*handler)(handle, ph->p_offset, ph->p_filesz, ph->p_paddr, ph->p_vaddr, ph->p_memsz, type); } diff --git a/l4/pkg/bootstrap/server/src/libc_support+.cc b/l4/pkg/bootstrap/server/src/libc_support+.cc index c33d388a6..e98974a57 100644 --- a/l4/pkg/bootstrap/server/src/libc_support+.cc +++ b/l4/pkg/bootstrap/server/src/libc_support+.cc @@ -240,7 +240,7 @@ getchar(void) return c; } -off64_t lseek64(int /*fd*/, off64_t /*offset*/, int /*whence*/) +off_t lseek(int /*fd*/, off_t /*offset*/, int /*whence*/) { return 0; } diff --git a/l4/pkg/bootstrap/server/src/support_omap.cc b/l4/pkg/bootstrap/server/src/support_omap.cc new file mode 100644 index 000000000..e6272adbc --- /dev/null +++ b/l4/pkg/bootstrap/server/src/support_omap.cc @@ -0,0 +1,43 @@ +/*! + * \file support_beagleboard.cc + * \brief Support for the Beagleboard + * + * \date 2009-08 + * \author Adam Lackorznynski + * + */ +/* + * (c) 2009 Author(s) + * economic rights: Technische Universität Dresden (Germany) + * + * This file is part of TUD:OS and distributed under the terms of the + * GNU General Public License 2. + * Please see the COPYING-GPL-2 file for details. + */ + +#include "support.h" +#include + +namespace { +class Platform_arm_omap : public Platform_single_region_ram +{ + bool probe() { return true; } + + void init() + { + static L4::Uart_omap35x _uart(1, 1); +#ifdef PLATFORM_TYPE_beagleboard + _uart.startup(0x49020000); +#elif defined(PLATFORM_TYPE_omap3evm) + _uart.startup(0x4806a000); +#elif defined(PLATFORM_TYPE_pandaboard) + _uart.startup(0x48020000); +#else +#error Unknown platform +#endif + set_stdio_uart(&_uart); + } +}; +} + +REGISTER_PLATFORM(Platform_arm_omap); diff --git a/l4/pkg/bootstrap/server/src/unpack b/l4/pkg/bootstrap/server/src/unpack index 9fa373f77..41c989c71 100755 --- a/l4/pkg/bootstrap/server/src/unpack +++ b/l4/pkg/bootstrap/server/src/unpack @@ -83,6 +83,7 @@ while ($offset < length($unpackdata) - 12 * 4) { $start1, $size1, $sizeun1, $name1, $md5comp1, $md5uncomp1, $start2, $size2, $sizeun2, $name2, $md5comp2, $md5uncomp2) = unpack("LLLLLLLLLLLLLLLLLL", substr($unpackdata, $offset)); + if ((!defined $previous || $previous + $modinfo_size == $offset) && ($start0 > 0x5000) && ($start1 > 0x5000) @@ -93,9 +94,9 @@ while ($offset < length($unpackdata) - 12 * 4) { && ($size0 < $filesize) && ($size1 < $filesize) && ($size2 < $filesize) - && ($sizeun0 < (10 << 20)) - && ($sizeun1 < (10 << 20)) - && ($sizeun2 < (10 << 20))) { + && ($sizeun0 < (80 << 20)) + && ($sizeun1 < (80 << 20)) + && ($sizeun2 < (80 << 20))) { #printf "%x %x %x\n", $start0, $start1, $start2; printf "Found module info at offset %d/0x%x\n", $offset, $offset; diff --git a/l4/pkg/cunit/Control b/l4/pkg/cunit/Control index 1521274f4..29736bf2e 100644 --- a/l4/pkg/cunit/Control +++ b/l4/pkg/cunit/Control @@ -1,3 +1,3 @@ -provides: libcunit +provides: libcunit libcunit_dde requires: log stdlibs Maintainer: doebel@os.inf.tu-dresden.de diff --git a/l4/pkg/cxx/lib/ipc/include/ipc_stream b/l4/pkg/cxx/lib/ipc/include/ipc_stream index d5a785858..11cbe40a6 100644 --- a/l4/pkg/cxx/lib/ipc/include/ipc_stream +++ b/l4/pkg/cxx/lib/ipc/include/ipc_stream @@ -891,14 +891,15 @@ public: * \param v The element to insert. */ template< typename T > - void put(T const &v) + bool put(T const &v) { _pos = cxx::Type_traits::align(_pos); if (Utcb_stream_check::check_utcb_data_offset(_pos + sizeof(T))) - return; + return false; *(reinterpret_cast(_current_msg + _pos)) = v; _pos += sizeof(T); + return true; } int put(Varg const &va) diff --git a/l4/pkg/cxx/lib/tl/include/avl_map b/l4/pkg/cxx/lib/tl/include/avl_map index 3950a3c2d..8cae9ab0a 100644 --- a/l4/pkg/cxx/lib/tl/include/avl_map +++ b/l4/pkg/cxx/lib/tl/include/avl_map @@ -38,10 +38,10 @@ namespace cxx { * \param Compare Type comparison functor for the key values. * \param Alloc Type of the allocator used for the nodes. */ -template< typename Key, typename Data, +template< typename Key, typename Data, template class Compare = Lt_functor, template class Alloc = New_allocator > -class Avl_map : public Avl_set, +class Avl_map : public Avl_set, Pair_first_compare< Compare, Pair >, Alloc> { @@ -95,6 +95,14 @@ public: Node find_node(Key_type const &key) const { return Base_type::find_node(Local_item_type(key, Data_type())); } + /** + * \brief Find the first node greater or equal to \a key. + * \param key the key to look for. + * \return The first node greater or equal to \a key. + */ + Node lower_bound_node(Key_type const &key) const + { return Base_type::lower_bound_node(Local_item_type(key, Data_type())); } + /** * \brief Find a pair for a given key. * \param key The key value to use for the lookup. @@ -109,6 +117,10 @@ public: int remove(Key_type const &key) { return Base_type::remove(Local_item_type(key, Data_type())); } + /** + * \brief Removed the element \a key. + * \see remove() + */ int erase(Key_type const &key) { return remove(key); } diff --git a/l4/pkg/cxx/lib/tl/include/avl_set b/l4/pkg/cxx/lib/tl/include/avl_set index 9d0fc5b7b..b6ff737b2 100644 --- a/l4/pkg/cxx/lib/tl/include/avl_set +++ b/l4/pkg/cxx/lib/tl/include/avl_set @@ -267,6 +267,14 @@ public: Node find_node(Item_type const &item) const { return Node(_tree.find_node(item)); } + /** + * \brief Find the first node greater or equal to \a key. + * \param key the key to look for. + * \return The first node greater or equal to \a key. + */ + Node lower_bound_node(Item_type const &key) const + { return Node(_tree.lower_bound_node(key)); } + /** * \brief Get the constant forward iterator for the first element in the set. diff --git a/l4/pkg/cxx_libc_io/Control b/l4/pkg/cxx_libc_io/Control index c9338f488..54fd31055 100644 --- a/l4/pkg/cxx_libc_io/Control +++ b/l4/pkg/cxx_libc_io/Control @@ -1,3 +1,3 @@ -requires: cxx_io libc libstdc++-headers +requires: cxx_io libc-headers libstdc++-headers provides: cxx_libc_io Maintainer: warg@os.inf.tu-dresden.de diff --git a/l4/pkg/dash/build/Makefile b/l4/pkg/dash/build/Makefile index ba69f922a..31cd23c79 100644 --- a/l4/pkg/dash/build/Makefile +++ b/l4/pkg/dash/build/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = dash REQUIRES_LIBS = libc_be_sig libc_support_misc libc_be_file_stdin -L4_MULTITHREADED = y PRIVATE_INCDIR = $(PKGDIR)/contrib/src $(SRC_DIR) $(L4DIR) DEFINES = -DBSD=1 -DSHELL -DHAVE_CONFIG_H diff --git a/l4/pkg/dde-libinput/examples/inputtst/Makefile b/l4/pkg/dde-libinput/examples/inputtst/Makefile index e902c9f5f..d2e53f218 100644 --- a/l4/pkg/dde-libinput/examples/inputtst/Makefile +++ b/l4/pkg/dde-libinput/examples/inputtst/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. DDE_SYSTEMS = arm x86 TARGET = dde_inputtst -L4_MULTITHREADED = y REQUIRES_LIBS = ddekit dde-linux26 dde-linux26_char dde-libinput l4re_c-util SRC_C = main.c diff --git a/l4/pkg/dde/Control b/l4/pkg/dde/Control index 0b8b39cbd..91b00f211 100644 --- a/l4/pkg/dde/Control +++ b/l4/pkg/dde/Control @@ -1,3 +1,3 @@ provides: dde-linux26 dde-linux26_net dde-linux26_block dde-linux26_char ddekit -requires: l4sys log l4util libc_r slab libio libirq slab stdlibs l4re_c +requires: l4sys log l4util libc slab libio libirq slab stdlibs l4re_c Maintainer: doebel@os.inf.tu-dresden.de diff --git a/l4/pkg/dde/ddekit/src/Makefile b/l4/pkg/dde/ddekit/src/Makefile index 47f98b770..683d17d2a 100644 --- a/l4/pkg/dde/ddekit/src/Makefile +++ b/l4/pkg/dde/ddekit/src/Makefile @@ -22,7 +22,7 @@ SRC_CC = malloc.cc \ memory.cc \ pci.cc -REQUIRES_LIBS := libio slab +REQUIRES_LIBS := libio slab l4re_c-util libpthread PC_FILENAME = ddekit diff --git a/l4/pkg/dde/linux26/Makeconf b/l4/pkg/dde/linux26/Makeconf index 283f3d714..bbc39838e 100644 --- a/l4/pkg/dde/linux26/Makeconf +++ b/l4/pkg/dde/linux26/Makeconf @@ -1,5 +1,7 @@ # vim:set ts=4: +include $(L4DIR)/mk/Makeconf + SYSTEMS = ifneq ($(filter x86,$(DDE_SYSTEMS)),) @@ -46,7 +48,6 @@ MY_LINUX26_INCDIR = $(OBJ_BASE)/include/$(ARCH)/l4/dde/linux26/linux-headers \ CHECKCC = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \ > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) -L4_MULTITHREADED = y # arch-specific stuff ifeq ($(ARCH), x86) diff --git a/l4/pkg/dde/linux26/lib/src/Makefile b/l4/pkg/dde/linux26/lib/src/Makefile index e5beef49c..0907e5062 100644 --- a/l4/pkg/dde/linux26/lib/src/Makefile +++ b/l4/pkg/dde/linux26/lib/src/Makefile @@ -54,8 +54,8 @@ LINK_INCR_ONLYGLOBSYMFILE_$(TARGET_DDE) = $(SRC_DIR)/global-symbols.all \ $(SRC_DIR)/global-symbols.$(ARCH) # contrib sources are in $(CONTRIB) -vpath %.c $(CONTRIB) -vpath %.S $(CONTRIB) +vpath %.c $(CONTRIB) +vpath %.S $(CONTRIB) PRIVATE_INCDIR += $(CONTRIB)/drivers/pci $(PKGDIR)/linux26/lib/src/arch/l4 \ $(CONTRIB)/$(ARCH_DIR)/pci $(CONTRIB)/drivers/base/ \ @@ -100,7 +100,8 @@ SRC_S_$(TARGET_DDE) += $(ARCH_DIR)/lib/io-writesl.S SRC_S_$(TARGET_DDE) += $(ARCH_DIR)/lib/io-writesw-armv4.S #SRC_C_$(TARGET_DDE) += $(ARCH_DIR)/kernel/semaphore.c SRC_C_$(TARGET_DDE) += $(ARCH_DIR)/kernel/traps.c -SRC_C $(TARGET_DDE) += $(ARCH_DIR)/mm/flush.c +SRC_C_$(TARGET_DDE) += $(ARCH_DIR)/kernel/io.c +#SRC_C_$(TARGET_DDE) += $(ARCH_DIR)/mm/flush.c SRC_C_$(TARGET_DDE) += lib/rwsem-spinlock.c SRC_C_$(TARGET_DDE) += drivers/amba/bus.c endif diff --git a/l4/pkg/dde/linux26/lib/src/arch/arm/kernel/io.c b/l4/pkg/dde/linux26/lib/src/arch/arm/kernel/io.c new file mode 100644 index 000000000..f4470307e --- /dev/null +++ b/l4/pkg/dde/linux26/lib/src/arch/arm/kernel/io.c @@ -0,0 +1,50 @@ +#include +#include +#include + +/* + * Copy data from IO memory space to "real" memory space. + * This needs to be optimized. + */ +void _memcpy_fromio(void *to, const volatile void __iomem *from, size_t count) +{ + unsigned char *t = to; + while (count) { + count--; + *t = readb(from); + t++; + from++; + } +} + +/* + * Copy data from "real" memory space to IO memory space. + * This needs to be optimized. + */ +void _memcpy_toio(volatile void __iomem *to, const void *from, size_t count) +{ + const unsigned char *f = from; + while (count) { + count--; + writeb(*f, to); + f++; + to++; + } +} + +/* + * "memset" on IO memory space. + * This needs to be optimized. + */ +void _memset_io(volatile void __iomem *dst, int c, size_t count) +{ + while (count) { + count--; + writeb(c, dst); + dst++; + } +} + +EXPORT_SYMBOL(_memcpy_fromio); +EXPORT_SYMBOL(_memcpy_toio); +EXPORT_SYMBOL(_memset_io); diff --git a/l4/pkg/dde/linux26/lib/src/arch/l4/kmalloc.c b/l4/pkg/dde/linux26/lib/src/arch/l4/kmalloc.c index e0779ff31..d48962e8b 100644 --- a/l4/pkg/dde/linux26/lib/src/arch/l4/kmalloc.c +++ b/l4/pkg/dde/linux26/lib/src/arch/l4/kmalloc.c @@ -197,6 +197,14 @@ void dma_free_coherent(struct device *dev, size_t size, free_pages((unsigned long)vaddr, get_order(size)); } +#ifdef ARCH_arm +#include +void dma_cache_maint(const void *start, size_t size, int direction) +{ + l4_cache_dma_coherent((unsigned long)start, (unsigned long)start + size); +} +#endif + /******************** ** Initialization ** diff --git a/l4/pkg/dde/linux26/lib/src/global-symbols.arm b/l4/pkg/dde/linux26/lib/src/global-symbols.arm index c768f3d7c..e0b348069 100644 --- a/l4/pkg/dde/linux26/lib/src/global-symbols.arm +++ b/l4/pkg/dde/linux26/lib/src/global-symbols.arm @@ -6,6 +6,7 @@ __raw_writesw _clear_bit_le _find_first_zero_bit_le _find_next_bit_le +_memcpy_fromio _set_bit_le _test_and_clear_bit_le _test_and_set_bit_le @@ -14,3 +15,4 @@ amba_release_regions amba_request_regions clk_get clk_put +dma_cache_maint diff --git a/l4/pkg/dope/Control b/l4/pkg/dope/Control index 88bbb7cd7..c790bef5e 100644 --- a/l4/pkg/dope/Control +++ b/l4/pkg/dope/Control @@ -1,3 +1,3 @@ provides: dope -requires: l4re_c libc_r input libio stdlibs +requires: l4re_c libc input libio stdlibs libpthread Maintainer: weinhold@os.inf.tu-dresden.de diff --git a/l4/pkg/dope/lib/dope/l4/Makefile b/l4/pkg/dope/lib/dope/l4/Makefile index 304aa588a..adb77c237 100644 --- a/l4/pkg/dope/lib/dope/l4/Makefile +++ b/l4/pkg/dope/lib/dope/l4/Makefile @@ -2,6 +2,7 @@ PKGDIR ?= ../../.. L4DIR ?= $(PKGDIR)/../.. TARGET = lib4dope.a +REQUIRES_LIBS = libpthread PRIVATE_INCDIR = $(PKGDIR)/lib/dope/include \ $(PKGDIR)/server/include \ $(PKGDIR)/include diff --git a/l4/pkg/dope/server/l4/Makefile b/l4/pkg/dope/server/l4/Makefile index 5f3177da0..51b0c9e07 100644 --- a/l4/pkg/dope/server/l4/Makefile +++ b/l4/pkg/dope/server/l4/Makefile @@ -2,8 +2,7 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. TARGET = l4dope -REQUIRES_LIBS = input libio l4re_c-util -L4_MULTITHREADED = y +REQUIRES_LIBS = input libio l4re_c-util libpthread include $(L4DIR)/mk/Makeconf diff --git a/l4/pkg/drivers-frst/hpet/include/hpet b/l4/pkg/drivers-frst/hpet/include/hpet index 982215e86..5d031e825 100644 --- a/l4/pkg/drivers-frst/hpet/include/hpet +++ b/l4/pkg/drivers-frst/hpet/include/hpet @@ -85,7 +85,7 @@ public: l4_uint32_t int_route_cap() const { return _conf_and_cap >> 32; } - unsigned int_avail(int int_nr) const { return int_route_cap() & int_nr; } + unsigned int_avail(int int_nr) const { return int_route_cap() & (1 << int_nr); } unsigned ints_avail() const { return int_route_cap(); } int get_first_int(int i = 0) diff --git a/l4/pkg/drivers/Control b/l4/pkg/drivers/Control index ac2b0655d..89bad00f6 100644 --- a/l4/pkg/drivers/Control +++ b/l4/pkg/drivers/Control @@ -1,3 +1,3 @@ -provides: libdrivers-lcd libdrivers-input -requires: libc_r l4re_c libio input +provides: libdrivers-lcd libdrivers-input libdrivers-generic +requires: libc l4re_c libio input Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/drivers/lcd/src/lcd-tegra2.c b/l4/pkg/drivers/lcd/src/lcd-tegra2.c index f8260639d..ca6cf3ced 100644 --- a/l4/pkg/drivers/lcd/src/lcd-tegra2.c +++ b/l4/pkg/drivers/lcd/src/lcd-tegra2.c @@ -11,7 +11,7 @@ #include static inline int width(void) { return 1280; } -static inline int height(void) { return 900; } +static inline int height(void) { return 1024; } static inline int bytes_per_pixel(void) { return 2; } static unsigned int fbmem_size(void) diff --git a/l4/pkg/examples/fb/spectrum/Makefile b/l4/pkg/examples/fb/spectrum/Makefile index 0416a34a9..016af9816 100644 --- a/l4/pkg/examples/fb/spectrum/Makefile +++ b/l4/pkg/examples/fb/spectrum/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = ex_fb_spectrum SRC_CC = spectrum.cc -L4_MULTITHREADED= y REQUIRES_LIBS = libevent include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/libs/inputtst/Makefile b/l4/pkg/examples/libs/inputtst/Makefile index 08d700972..eb9fd82ef 100644 --- a/l4/pkg/examples/libs/inputtst/Makefile +++ b/l4/pkg/examples/libs/inputtst/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = inputtst SRC_C = main.c -L4_MULTITHREADED = y DEPENDS_PKGS = input REQUIRES_LIBS = input diff --git a/l4/pkg/examples/libs/libc_thread_safe/Makefile b/l4/pkg/examples/libs/libc_thread_safe/Makefile index b7a7e6860..f07b17757 100644 --- a/l4/pkg/examples/libs/libc_thread_safe/Makefile +++ b/l4/pkg/examples/libs/libc_thread_safe/Makefile @@ -3,6 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = uclibc_thread_safe SRC_CC = main.cc -L4_MULTITHREADED = y +REQUIRES_LIBS = libpthread include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/libs/libgomp/Makefile b/l4/pkg/examples/libs/libgomp/Makefile index a3ced0d28..2cd169973 100644 --- a/l4/pkg/examples/libs/libgomp/Makefile +++ b/l4/pkg/examples/libs/libgomp/Makefile @@ -18,6 +18,5 @@ endif SRC_C = main.c CFLAGS = -fopenmp -L4_MULTITHREADED = y include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/libs/libio/Makefile b/l4/pkg/examples/libs/libio/Makefile index af79c08ae..b47dd5b66 100644 --- a/l4/pkg/examples/libs/libio/Makefile +++ b/l4/pkg/examples/libs/libio/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = ex_libio SRC_C = main.c -L4_MULTITHREADED = y DEPENDS_PKGS = libio REQUIRES_LIBS = libio libirq diff --git a/l4/pkg/examples/libs/libirq/Makefile b/l4/pkg/examples/libs/libirq/Makefile index 7da36860d..9fa350d66 100644 --- a/l4/pkg/examples/libs/libirq/Makefile +++ b/l4/pkg/examples/libs/libirq/Makefile @@ -4,7 +4,6 @@ L4DIR ?= $(PKGDIR)/../.. SRC_C_ex_libirq_async = async_isr.c SRC_C_ex_libirq_loop = loop.c TARGET = ex_libirq_async ex_libirq_loop -L4_MULTITHREADED = y DEPENDS_PKGS = libirq REQUIRES_LIBS = libirq libio diff --git a/l4/pkg/examples/libs/libpng/Makefile b/l4/pkg/examples/libs/libpng/Makefile index a6269d2bd..81c462913 100644 --- a/l4/pkg/examples/libs/libpng/Makefile +++ b/l4/pkg/examples/libs/libpng/Makefile @@ -3,7 +3,6 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = ex_libpng SRC_C = main.c -L4_MULTITHREADED = y DEPENDS_PKGS = libpng zlib REQUIRES_LIBS = libl4png_wrap l4re_c-util diff --git a/l4/pkg/examples/libs/shmc/Makefile b/l4/pkg/examples/libs/shmc/Makefile index 93c37e758..e673c143f 100644 --- a/l4/pkg/examples/libs/shmc/Makefile +++ b/l4/pkg/examples/libs/shmc/Makefile @@ -3,8 +3,7 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = ex_shmc SRC_C = prodcons.c -L4_MULTITHREADED = y DEPENDS_PKGS = shmc -REQUIRES_LIBS = shmc +REQUIRES_LIBS = shmc libpthread include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/sys/ipc/Makefile b/l4/pkg/examples/sys/ipc/Makefile index e682f38d6..11d55bde7 100644 --- a/l4/pkg/examples/sys/ipc/Makefile +++ b/l4/pkg/examples/sys/ipc/Makefile @@ -2,7 +2,7 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. TARGET = ex_ipc1 -L4_MULTITHREADED = y SRC_C = ipc_example.c +REQUIRES_LIBS = libpthread include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/sys/migrate/Makefile b/l4/pkg/examples/sys/migrate/Makefile index abf4ac94d..85d7cecd6 100644 --- a/l4/pkg/examples/sys/migrate/Makefile +++ b/l4/pkg/examples/sys/migrate/Makefile @@ -2,7 +2,7 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. TARGET = ex_thread_migrate -L4_MULTITHREADED = y SRC_CC = thread_migrate.cc +REQUIRES_LIBS = libpthread include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/sys/vmtest/Makefile b/l4/pkg/examples/sys/vmtest/Makefile index 4c8eac0cd..184694d12 100644 --- a/l4/pkg/examples/sys/vmtest/Makefile +++ b/l4/pkg/examples/sys/vmtest/Makefile @@ -4,6 +4,7 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = ex_vmtest SYSTEMS = x86-l4f SRC_C = main.c -REQUIRES_LIBS = libvcpu l4re_c-util +REQUIRES_LIBS = libvcpu l4re_c-util libpthread + include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/examples/sys/vmtest/main.c b/l4/pkg/examples/sys/vmtest/main.c index 8418c8bcb..881970070 100644 --- a/l4/pkg/examples/sys/vmtest/main.c +++ b/l4/pkg/examples/sys/vmtest/main.c @@ -14,6 +14,8 @@ #include #include +#include + #include #include #include @@ -24,419 +26,477 @@ #include #include +#include + #define STACKSIZE (8<<10) static char stack[STACKSIZE]; +static char hdl_stack[STACKSIZE]; static unsigned long idt[32 * 2] __attribute__((aligned(4096))); static unsigned long gdt[32 * 2] __attribute__((aligned(4096))); -static void init_vmcb(l4_vm_svm_vmcb_t *vmcb_s) -{ - - vmcb_s->control_area.np_enable = 1; - vmcb_s->control_area.guest_asid_tlb_ctl = 1; - - vmcb_s->state_save_area.es.selector = 0; - vmcb_s->state_save_area.es.attrib = 0; - vmcb_s->state_save_area.es.limit = 0; - vmcb_s->state_save_area.es.base = 0ULL; +void vm_resume(void); +void handle_vmexit(void); +l4_vcpu_state_t *vcpu; +l4_vm_svm_vmcb_t *vmcb_s; + +static void init_vmcb(l4_vm_svm_vmcb_t *vmcb_s) { + + vmcb_s->control_area.np_enable = 1; + vmcb_s->control_area.guest_asid_tlb_ctl = 1; + + vmcb_s->state_save_area.es.selector = 0; + vmcb_s->state_save_area.es.attrib = 0; + vmcb_s->state_save_area.es.limit = 0; + vmcb_s->state_save_area.es.base = 0ULL; + + // vmcb[256 + 0] = 0; // es; attrib sel + + vmcb_s->state_save_area.cs.selector = 0x8; + vmcb_s->state_save_area.cs.attrib = 0xc9b; + vmcb_s->state_save_area.cs.limit = 0xffffffff; + vmcb_s->state_save_area.cs.base = 0ULL; + + vmcb_s->state_save_area.ss.selector = 0x10; + vmcb_s->state_save_area.ss.attrib = 0xc93; + vmcb_s->state_save_area.ss.limit = 0xffffffff; + vmcb_s->state_save_area.ss.base = 0ULL; + + vmcb_s->state_save_area.ds.selector = 0x23; + vmcb_s->state_save_area.ds.attrib = 0xcf3; + vmcb_s->state_save_area.ds.limit = 0xffffffff; + vmcb_s->state_save_area.ds.base = 0ULL; + + vmcb_s->state_save_area.fs.selector = 0; + vmcb_s->state_save_area.fs.attrib = 0xcf3; + vmcb_s->state_save_area.fs.limit = 0xffffffff; + vmcb_s->state_save_area.fs.base = 0ULL; + + vmcb_s->state_save_area.gs.selector = 0; + vmcb_s->state_save_area.gs.attrib = 0xcf3; + vmcb_s->state_save_area.gs.limit = 0xffffffff; + vmcb_s->state_save_area.gs.base = 0ULL; + + vmcb_s->state_save_area.gdtr.selector = 0; + vmcb_s->state_save_area.gdtr.attrib = 0; + vmcb_s->state_save_area.gdtr.limit = 0x3f; + vmcb_s->state_save_area.gdtr.base = (unsigned long) gdt; + + vmcb_s->state_save_area.ldtr.selector = 0; + vmcb_s->state_save_area.ldtr.attrib = 0; + vmcb_s->state_save_area.ldtr.limit = 0; + vmcb_s->state_save_area.ldtr.base = 0; + + vmcb_s->state_save_area.idtr.selector = 0; + vmcb_s->state_save_area.idtr.attrib = 0; + vmcb_s->state_save_area.idtr.limit = 0xff; + vmcb_s->state_save_area.idtr.base = (unsigned long) idt; + + vmcb_s->state_save_area.tr.selector = 0x28; + vmcb_s->state_save_area.tr.attrib = 0x8b; + vmcb_s->state_save_area.tr.limit = 0x67; + vmcb_s->state_save_area.tr.base = 0; + + vmcb_s->state_save_area.g_pat = 0x7040600010406ULL; +} +static int check_svm(void) { + l4_umword_t ax, bx, cx, dx; -// vmcb[256 + 0] = 0; // es; attrib sel + if (!l4util_cpu_has_cpuid()) + return 1; - vmcb_s->state_save_area.cs.selector = 0x8; - vmcb_s->state_save_area.cs.attrib = 0xc9b; - vmcb_s->state_save_area.cs.limit = 0xffffffff; - vmcb_s->state_save_area.cs.base = 0ULL; + l4util_cpu_cpuid(0x80000001, &ax, &bx, &cx, &dx); - vmcb_s->state_save_area.ss.selector = 0x10; - vmcb_s->state_save_area.ss.attrib = 0xc93; - vmcb_s->state_save_area.ss.limit = 0xffffffff; - vmcb_s->state_save_area.ss.base = 0ULL; + if (!(cx & 4)) { + printf("CPU does not support SVM.\n"); + return 1; + } + l4util_cpu_cpuid(0x8000000a, &ax, &bx, &cx, &dx); - vmcb_s->state_save_area.ds.selector = 0x23; - vmcb_s->state_save_area.ds.attrib = 0xcf3; - vmcb_s->state_save_area.ds.limit = 0xffffffff; - vmcb_s->state_save_area.ds.base = 0ULL; + printf("SVM revision: %lx\n", ax & 0xf); + printf("Number of ASIDs: %lx\n", bx); - vmcb_s->state_save_area.fs.selector = 0; - vmcb_s->state_save_area.fs.attrib = 0xcf3; - vmcb_s->state_save_area.fs.limit = 0xffffffff; - vmcb_s->state_save_area.fs.base = 0ULL; + return 0; +} - vmcb_s->state_save_area.gs.selector = 0; - vmcb_s->state_save_area.gs.attrib = 0xcf3; - vmcb_s->state_save_area.gs.limit = 0xffffffff; - vmcb_s->state_save_area.gs.base = 0ULL; +static int check_svm_npt(void) { + l4_umword_t ax, bx, cx, dx; - vmcb_s->state_save_area.gdtr.selector = 0; - vmcb_s->state_save_area.gdtr.attrib = 0; - vmcb_s->state_save_area.gdtr.limit = 0x3f; - vmcb_s->state_save_area.gdtr.base = (unsigned long) gdt; + l4util_cpu_cpuid(0x8000000a, &ax, &bx, &cx, &dx); - vmcb_s->state_save_area.ldtr.selector = 0; - vmcb_s->state_save_area.ldtr.attrib = 0; - vmcb_s->state_save_area.ldtr.limit = 0; - vmcb_s->state_save_area.ldtr.base = 0; + printf("NPT available: %s\n", dx & 1 ? "yes" : "no"); - vmcb_s->state_save_area.idtr.selector = 0; - vmcb_s->state_save_area.idtr.attrib = 0; - vmcb_s->state_save_area.idtr.limit = 0xff; - vmcb_s->state_save_area.idtr.base = (unsigned long) idt; + return (!(dx & 1)); +} - vmcb_s->state_save_area.tr.selector = 0x28; - vmcb_s->state_save_area.tr.attrib = 0x8b; - vmcb_s->state_save_area.tr.limit = 0x67; - vmcb_s->state_save_area.tr.base = 0; +int vmexit = 0; + +static int cnt_triggered, cnt_received; + +static void handler(void) { + //if(vmexit){ + //vmexit = 0; + //handle_vmexit(); + //} else { + // exception and ipc handling here + cnt_received++; + printf("received interrupt %d | %d %d\n", (int)vcpu->i.label, + cnt_triggered, cnt_received); + //} + vm_resume(); +} - vmcb_s->state_save_area.g_pat = 0x7040600010406ULL; +void vm_resume(void) { + unsigned long long old_rip; + l4_msgtag_t tag; + +// if ((vmcb_s->state_save_area.rip >= marker)) { +// //printf("set tf for rip=%llx\n", vmcb_s->state_save_area.rip); +// vmcb_s->state_save_area.rflags |= 0x100; // set tf +// } + + vmcb_s->control_area.intercept_exceptions |= 0xa; // intercept #1 & #3 + vmcb_s->control_area.intercept_exceptions |= 0xffffffff; + vmcb_s->control_area.intercept_instruction1 |= 0x20; // intercept int1 + + //vmcb_s->control_area.exitcode = 0x100 << i; + vmcb_s->control_area.exitcode = 0; + + old_rip = vmcb_s->state_save_area.rip; + + tag = l4_thread_vcpu_resume_commit(L4_INVALID_CAP, + l4_thread_vcpu_resume_start()); + if (l4_error(tag)) + printf("vm-resume failed: %s (%ld)\n", l4sys_errtostr(l4_error(tag)), + l4_error(tag)); + + // if l4_thread_vcpu_resume_commit returns without error + // tell the handler that a vmexit occurred + vmexit = 1; + // and rewind the stack before we return into the handler + // simulating an upcall + handle_vmexit(); + vm_resume(); +#if 0 + asm volatile ( + "movl %0, %%esp\n" + "pushl %1\n" + "ret\n" + : : "r"(vcpu->entry_sp), "r"(handler) ); +#endif } -static int check_svm(void) -{ - l4_umword_t ax, bx, cx, dx; +void handle_vmexit(void) { + static unsigned int i = 0; + ++i; + printf("iteration=%d, exit code=%llx", i, + vmcb_s->control_area.exitcode); - if (!l4util_cpu_has_cpuid()) - return 1; + if (vmcb_s->control_area.exitcode == 0x43) + // int3 is treated as fault, not trap + vmcb_s->state_save_area.rip += 1; - l4util_cpu_cpuid(0x80000001, &ax, &bx, &cx, &dx); + if (vmcb_s->control_area.exitcode == 0x46) { +// if (vmcb_s->state_save_area.rip >= test_end) +// break; + vmcb_s->state_save_area.rip += 2; + } - if (!(cx & 4)) - { - printf("CPU does not support SVM.\n"); - return 1; + if (vmcb_s->control_area.exitcode == 0x400) { + printf("host-level page fault; error code=%llx, gpa=%llx\n", + vmcb_s->control_area.exitinfo1, vmcb_s->control_area.exitinfo2); } - l4util_cpu_cpuid(0x8000000a, &ax, &bx, &cx, &dx); + if (vmcb_s->control_area.exitcode == 0x4e) { + printf("page fault; error code=%llx, pfa=%llx\n", + vmcb_s->control_area.exitinfo1, vmcb_s->control_area.exitinfo2); + } - printf("SVM revision: %lx\n", ax & 0xf); - printf("Number of ASIDs: %lx\n", bx); + if (vmcb_s->control_area.exitcode == 0x81) { + printf("VMMCALL\n"); + vmcb_s->state_save_area.rip += 3; + } - return 0; + if (vmcb_s->control_area.exitcode == 0x4d) { + printf("cs=%08x attrib=%x, limit=%x, base=%llx\n", + vmcb_s->state_save_area.cs.selector, + vmcb_s->state_save_area.cs.attrib, + vmcb_s->state_save_area.cs.limit, + vmcb_s->state_save_area.cs.base); + printf("ss=%08x attrib=%x, limit=%x, base=%llx\n", + vmcb_s->state_save_area.ss.selector, + vmcb_s->state_save_area.ss.attrib, + vmcb_s->state_save_area.ss.limit, + vmcb_s->state_save_area.ss.base); + printf("np_enabled=%lld\n", vmcb_s->control_area.np_enable); + printf("cr0=%llx cr4=%llx\n", vmcb_s->state_save_area.cr0, + vmcb_s->state_save_area.cr4); + printf("interrupt_ctl=%llx\n", vmcb_s->control_area.interrupt_ctl); + printf("rip=%llx, rsp=%llx, cpl=%d\n", vmcb_s->state_save_area.rip, + vmcb_s->state_save_area.rsp, vmcb_s->state_save_area.cpl); + printf("exitinfo1=%llx\n", vmcb_s->control_area.exitinfo1); + } } -static int check_svm_npt(void) -{ - l4_umword_t ax, bx, cx, dx; - - l4util_cpu_cpuid(0x8000000a, &ax, &bx, &cx, &dx); - - printf("NPT available: %s\n", dx & 1 ? "yes" : "no"); - - return (!(dx & 1)); -} +static l4_vcpu_state_t *get_state_mem(l4_addr_t *extstate) { + static int done; + long r; + l4_msgtag_t tag; + static l4_addr_t ext_state; -static l4_vcpu_state_t *get_state_mem(l4_addr_t *extstate) -{ - static int done; - long r; - l4_msgtag_t tag; - static l4_vcpu_state_t *vcpu; - static l4_addr_t ext_state; - - if (done) - { - *extstate = ext_state; - return vcpu; + if (done) { + *extstate = ext_state; + return vcpu; } - if ((r = l4vcpu_ext_alloc(&vcpu, &ext_state, - L4_BASE_TASK_CAP, l4re_env()->rm))) - { - printf("Adding state mem failed: %ld\n", r); - exit(1); + if ((r = l4vcpu_ext_alloc(&vcpu, &ext_state, L4_BASE_TASK_CAP, + l4re_env()->rm))) { + printf("Adding state mem failed: %ld\n", r); + exit(1); } - vcpu->state = L4_VCPU_F_FPU_ENABLED; - vcpu->saved_state = L4_VCPU_F_USER_MODE | L4_VCPU_F_FPU_ENABLED; + vcpu->state = L4_VCPU_F_FPU_ENABLED; + vcpu->saved_state = L4_VCPU_F_USER_MODE | L4_VCPU_F_FPU_ENABLED | L4_VCPU_F_IRQ; + + vcpu->entry_ip = (l4_umword_t)handler; + l4_umword_t * stack = (l4_umword_t*)(hdl_stack + STACKSIZE); + --stack; + *stack = 0; + vcpu->entry_sp = (l4_umword_t)stack; + - tag = l4_thread_vcpu_control_ext(L4_INVALID_CAP, (l4_addr_t)vcpu); - if (l4_error(tag)) - { - printf("Could not enable ext vCPU\n"); - exit(1); + tag = l4_thread_vcpu_control_ext(L4_INVALID_CAP, (l4_addr_t) vcpu); + if (l4_error(tag)) { + printf("Could not enable ext vCPU\n"); + exit(1); } - done = 1; - *extstate = ext_state; + done = 1; + *extstate = ext_state; - return vcpu; + return vcpu; } -static void run_test(int np_available) -{ - l4_umword_t eflags; - l4_msgtag_t tag; - l4_cap_idx_t vm_task = l4re_util_cap_alloc(); - int i; - l4_umword_t ip, marker, test_end; - l4_addr_t vmcx; - l4_vcpu_state_t *vcpu = get_state_mem(&vmcx); - - printf("run test, np_available=%d\n", np_available); - - if (l4_is_invalid_cap(vm_task)) - { - printf("No more caps.\n"); - return; + +static void run_test(int np_available) { + l4_umword_t eflags; + l4_msgtag_t tag; + l4_cap_idx_t vm_task = l4re_util_cap_alloc(); +// int i; + l4_umword_t ip; //, marker, test_end; + l4_addr_t vmcx; + get_state_mem(&vmcx); + + printf("run test, np_available=%d\n", np_available); + + if (l4_is_invalid_cap(vm_task)) { + printf("No more caps.\n"); + return; } - tag = l4_factory_create_vm(l4re_env()->factory, vm_task); - if (l4_error(tag)) - { - printf("Failed to create new task\n"); - exit(1); + tag = l4_factory_create_vm(l4re_env()->factory, vm_task); + if (l4_error(tag)) { + printf("Failed to create new task\n"); + exit(1); } - l4_vm_svm_vmcb_t *vmcb_s = (l4_vm_svm_vmcb_t *)vmcx; - - vcpu->user_task = vm_task; - - vcpu->r.dx = 1; - vcpu->r.cx = 2; - vcpu->r.bx = 3; - vcpu->r.bp = 4; - vcpu->r.si = 5; - vcpu->r.di = 6; - - printf("clearing exit codes\n"); - - asm volatile(" jmp 1f; \n" - "2: nop \n" - " nop \n" - " ud2 \n" - " int3 \n" - "3: nop \n" - " nop \n" - " int3 \n" - //"3: nop \n" - //" int3 \n" - " nop \n" - " nop \n" - " movl %%eax, %%ecx \n" - " addl %%edx, %%ecx \n" - " vmmcall \n" - "4: \n" - " ud2 \n" - "1: movl $2b, %0 \n" - " movl $3b, %1 \n" - " movl $4b, %2 \n" - : "=r" (ip), "=r" (marker), "=r" (test_end)); - - - init_vmcb(vmcb_s); - - vmcb_s->state_save_area.cpl = 0; - vmcb_s->state_save_area.efer = 0x1000; // svme set - - vmcb_s->state_save_area.cr4 = 0x690; - vmcb_s->state_save_area.cr3 = 0; - // PG[31] = 0, WP[16] = 1, NE[5] = 1, ET[4] = 1 - // TS[3] = 1, MP[1] = 1, PE[0] = 1 - vmcb_s->state_save_area.cr0 = 0x1003b; - - if (!np_available) - { - vmcb_s->state_save_area.cr0 |= 0x80000000; // PG = 1 - vmcb_s->control_area.np_enable &= ~1; + vmcb_s = (l4_vm_svm_vmcb_t *) vmcx; + + vcpu->user_task = vm_task; + + vcpu->r.dx = 1; + vcpu->r.cx = 2; + vcpu->r.bx = 3; + vcpu->r.bp = 4; + vcpu->r.si = 5; + vcpu->r.di = 6; + + printf("clearing exit codes\n"); + + // asm volatile(" jmp 1f; \n" + // "2: nop \n" + // " nop \n" + // " ud2 \n" + // " int3 \n" + // "3: nop \n" + // " nop \n" + // " int3 \n" + // //"3: nop \n" + // //" int3 \n" + // " nop \n" + // " nop \n" + // " movl %%eax, %%ecx \n" + // " addl %%edx, %%ecx \n" + // " vmmcall \n" + // "4: \n" + // " ud2 \n" + // "1: movl $2b, %0 \n" + // " movl $3b, %1 \n" + // " movl $4b, %2 \n" + // : "=r" (ip), "=r" (marker), "=r" (test_end)); + + asm volatile(" jmp 1f; \n" + "2: nop \n" + " nop \n" + " nop \n" + " jmp 2b \n" + "1: movl $2b, %0 \n" + : "=r" (ip)); + + init_vmcb(vmcb_s); + + vmcb_s->state_save_area.cpl = 0; + vmcb_s->state_save_area.efer = 0x1000; // svme set + + vmcb_s->state_save_area.cr4 = 0x690; + vmcb_s->state_save_area.cr3 = 0; + // PG[31] = 0, WP[16] = 1, NE[5] = 1, ET[4] = 1 + // TS[3] = 1, MP[1] = 1, PE[0] = 1 + vmcb_s->state_save_area.cr0 = 0x1003b; + + if (!np_available) { + vmcb_s->state_save_area.cr0 |= 0x80000000; // PG = 1 + vmcb_s->control_area.np_enable &= ~1; } - vmcb_s->state_save_area.dr7 = 0x300; - vmcb_s->state_save_area.dr6 = 0; + vmcb_s->state_save_area.dr7 = 0x300; + vmcb_s->state_save_area.dr6 = 0; - asm volatile("pushf \n" - "popl %0 \n" - : "=r" (eflags)); + asm volatile("pushf \n" + "popl %0 \n" + : "=r" (eflags)); - vmcb_s->state_save_area.rflags = eflags; - vmcb_s->state_save_area.rip = ip; - vmcb_s->state_save_area.rsp = (l4_umword_t)stack + STACKSIZE; + vmcb_s->state_save_area.rflags = eflags; + vmcb_s->state_save_area.rip = ip; + vmcb_s->state_save_area.rsp = (l4_umword_t) stack + STACKSIZE; - unsigned ofs; - for (ofs = 0; ofs < STACKSIZE; ofs += L4_PAGESIZE) - { - stack[ofs] = 0; - unsigned char c = stack[ofs]; - unsigned dummy; + unsigned ofs; + for (ofs = 0; ofs < STACKSIZE; ofs += L4_PAGESIZE) { + stack[ofs] = 0; + unsigned char c = stack[ofs]; + unsigned dummy; - asm volatile("nop" : "=a"(dummy) : "0" (c)); + asm volatile("nop" : "=a"(dummy) : "0" (c)); - tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, - l4_fpage((((l4_umword_t)(stack)) + ofs) & L4_PAGEMASK, - L4_PAGESHIFT, L4_FPAGE_RW), - l4_map_control(((l4_umword_t)stack) + ofs, 0, - L4_MAP_ITEM_MAP)); - printf("msgtag raw=%08x, ofs=%08x\n", (unsigned) tag.raw, ofs); + tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, l4_fpage( + (((l4_umword_t)(stack)) + ofs) & L4_PAGEMASK, L4_PAGESHIFT, + L4_FPAGE_RW), l4_map_control(((l4_umword_t) stack) + ofs, 0, + L4_MAP_ITEM_MAP)); + printf("msgtag raw=%08x, ofs=%08x\n", (unsigned) tag.raw, ofs); } - tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, - l4_fpage(ip & L4_PAGEMASK, L4_PAGESHIFT, L4_FPAGE_RW), - l4_map_control(ip, 0, L4_MAP_ITEM_MAP)); - - printf("msgtag raw=%08lx, ip=%08lx\n", tag.raw, ip); - - idt[26] = 0x80000; // #13 general protection fault - idt[27] = 0x8e00; + tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, l4_fpage(ip & L4_PAGEMASK, + L4_PAGESHIFT, L4_FPAGE_RW), l4_map_control(ip, 0, L4_MAP_ITEM_MAP)); - idt[28] = 0x80000; // #14 page fault - idt[29] = 0x8e00; + printf("msgtag raw=%08lx, ip=%08lx\n", tag.raw, ip); - // code segment 0x08 - gdt[2] = 0xffff; - gdt[3] = 0xcf9b00; + idt[26] = 0x80000; // #13 general protection fault + idt[27] = 0x8e00; - // stack segment 0x10 - gdt[4] = 0xffff; - gdt[5] = 0xcf9300; + idt[28] = 0x80000; // #14 page fault + idt[29] = 0x8e00; - // data segment 0x20 - gdt[8] = 0xffff; - gdt[9] = 0xcff300; + // code segment 0x08 + gdt[2] = 0xffff; + gdt[3] = 0xcf9b00; - // tss 0x28 - gdt[10] = 0x67; - gdt[11] = 0x8b00; + // stack segment 0x10 + gdt[4] = 0xffff; + gdt[5] = 0xcf9300; - unsigned idt0 = (unsigned) idt; - tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, - l4_fpage(idt0 & L4_PAGEMASK, L4_PAGESHIFT, L4_FPAGE_RW), - l4_map_control(idt0, 0, L4_MAP_ITEM_MAP)); - printf("msgtag raw=%08x, idt=%08x\n", (unsigned) tag.raw, idt0); + // data segment 0x20 + gdt[8] = 0xffff; + gdt[9] = 0xcff300; - unsigned gdt0 = (unsigned) gdt; - tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, - l4_fpage(gdt0 & L4_PAGEMASK, L4_PAGESHIFT, L4_FPAGE_RW), - l4_map_control(gdt0, 0, L4_MAP_ITEM_MAP)); - printf("msgtag raw=%08x, gdt=%08x\n", (unsigned) tag.raw, gdt0); + // tss 0x28 + gdt[10] = 0x67; + gdt[11] = 0x8b00; + unsigned idt0 = (unsigned) idt; + tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, l4_fpage(idt0 & L4_PAGEMASK, + L4_PAGESHIFT, L4_FPAGE_RW), + l4_map_control(idt0, 0, L4_MAP_ITEM_MAP)); + printf("msgtag raw=%08x, idt=%08x\n", (unsigned) tag.raw, idt0); -// printf("sizes vmcb=%x, control=%x, state=%x\n", -// sizeof(*vmcb_s), -// sizeof(vmcb_s->control_area), sizeof(vmcb_s->sitate_save_area)); + unsigned gdt0 = (unsigned) gdt; + tag = l4_task_map(vm_task, L4RE_THIS_TASK_CAP, l4_fpage(gdt0 & L4_PAGEMASK, + L4_PAGESHIFT, L4_FPAGE_RW), + l4_map_control(gdt0, 0, L4_MAP_ITEM_MAP)); + printf("msgtag raw=%08x, gdt=%08x\n", (unsigned) tag.raw, gdt0); - printf("start rip=%llx\n", vmcb_s->state_save_area.rip); + // printf("sizes vmcb=%x, control=%x, state=%x\n", + // sizeof(*vmcb_s), + // sizeof(vmcb_s->control_area), sizeof(vmcb_s->sitate_save_area)); - vmcb_s->state_save_area.rax = 8; + printf("start rip=%llx\n", vmcb_s->state_save_area.rip); - for (i = 0; i < 16; i++) - { - unsigned long long old_rip; + vmcb_s->state_save_area.rax = 8; - if ((vmcb_s->state_save_area.rip >= marker)) - { - //printf("set tf for rip=%llx\n", vmcb_s->state_save_area.rip); - vmcb_s->state_save_area.rflags |= 0x100; // set tf - } + vm_resume(); - vmcb_s->control_area.intercept_exceptions |= 0xa; // intercept #1 & #3 - vmcb_s->control_area.intercept_exceptions |= 0xffffffff; - vmcb_s->control_area.intercept_instruction1 |= 0x20; // intercept int1 - - //vmcb_s->control_area.exitcode = 0x100 << i; - vmcb_s->control_area.exitcode = 0; +} - old_rip = vmcb_s->state_save_area.rip; +// printf("rip=%08llx, rax=%llx, edx=%lx, ecx=%lx\n", +// vmcb_s->state_save_area.rip, +// vmcb_s->state_save_area.rax, +// vcpu->r.dx, vcpu->r.cx); +// +// printf("run vm stop, status=%s\n", vcpu->r.cx == 9 ? "success" : "failure"); +// +// l4_task_unmap(L4RE_THIS_TASK_CAP, +// l4_obj_fpage(vm_task, 0, L4_FPAGE_RWX), +// L4_FP_ALL_SPACES); +//} + +#include +l4_cap_idx_t timer_irq; +void * timer_thread(void * ); +void * timer_thread(void * data) { + (void)data; + l4_sleep(1000); + fiasco_tbuf_log("FIRST"); + while(1){ + l4_sleep(200); + fiasco_tbuf_log("Trig"); + printf("trigger\n"); + cnt_triggered++; + l4_irq_trigger(timer_irq); + } +} - tag = l4_thread_vcpu_resume_commit(L4_INVALID_CAP, - l4_thread_vcpu_resume_start()); - if (l4_error(tag)) - printf("vm-resume failed: %s (%ld)\n", - l4sys_errtostr(l4_error(tag)), l4_error(tag)); +#include - printf("iteration=%d, exit code=%llx, rip=%llx -> %llx\n", - i, vmcb_s->control_area.exitcode, - old_rip, vmcb_s->state_save_area.rip); +int main(void) +{ + timer_irq = l4re_util_cap_alloc(); + if (l4_error(l4_factory_create_irq(l4re_env()->factory, timer_irq))) + printf("irq creation failed\n"); + if (l4_error(l4_irq_attach(timer_irq, 0x120, L4_INVALID_CAP))) + printf("irq attach failed\n"); - if (vmcb_s->control_area.exitcode == 0x43) - // int3 is treated as fault, not trap - vmcb_s->state_save_area.rip += 1; + printf("VM testing\n"); - if (vmcb_s->control_area.exitcode == 0x46) - { - if (vmcb_s->state_save_area.rip >= test_end) - break; - vmcb_s->state_save_area.rip += 2; - } - - if (vmcb_s->control_area.exitcode == 0x400) - { - printf("host-level page fault; error code=%llx, gpa=%llx\n", - vmcb_s->control_area.exitinfo1, - vmcb_s->control_area.exitinfo2); - } - - if (vmcb_s->control_area.exitcode == 0x4e) - { - printf("page fault; error code=%llx, pfa=%llx\n", - vmcb_s->control_area.exitinfo1, - vmcb_s->control_area.exitinfo2); - } - - if (vmcb_s->control_area.exitcode == 0x81) - { - printf("VMMCALL\n"); - vmcb_s->state_save_area.rip += 3; - } - - if (vmcb_s->control_area.exitcode == 0x4d) - { - printf("cs=%08x attrib=%x, limit=%x, base=%llx\n", - vmcb_s->state_save_area.cs.selector, - vmcb_s->state_save_area.cs.attrib, - vmcb_s->state_save_area.cs.limit, - vmcb_s->state_save_area.cs.base); - printf("ss=%08x attrib=%x, limit=%x, base=%llx\n", - vmcb_s->state_save_area.ss.selector, - vmcb_s->state_save_area.ss.attrib, - vmcb_s->state_save_area.ss.limit, - vmcb_s->state_save_area.ss.base); - printf("np_enabled=%lld\n", - vmcb_s->control_area.np_enable); - printf("cr0=%llx cr4=%llx\n", - vmcb_s->state_save_area.cr0, - vmcb_s->state_save_area.cr4); - printf("interrupt_ctl=%llx\n", - vmcb_s->control_area.interrupt_ctl); - printf("rip=%llx, rsp=%llx, cpl=%d\n", - vmcb_s->state_save_area.rip, - vmcb_s->state_save_area.rsp, - vmcb_s->state_save_area.cpl); - printf("exitinfo1=%llx\n", vmcb_s->control_area.exitinfo1); - break; - } - } - - printf("rip=%08llx, rax=%llx, edx=%lx, ecx=%lx\n", - vmcb_s->state_save_area.rip, - vmcb_s->state_save_area.rax, - vcpu->r.dx, vcpu->r.cx); - - printf("run vm stop, status=%s\n", vcpu->r.cx == 9 ? "success" : "failure"); - - l4_task_unmap(L4RE_THIS_TASK_CAP, - l4_obj_fpage(vm_task, 0, L4_FPAGE_RWX), - L4_FP_ALL_SPACES); -} + if (check_svm()) + { + printf("No SVM CPU. Bye.\n"); + return 1; + } -int main(void) -{ - printf("VM testing\n"); + l4_touch_rw(stack, sizeof(stack)); + l4_touch_rw(hdl_stack, sizeof(hdl_stack)); - if (check_svm()) - { - printf("No SVM CPU. Bye.\n"); - return 1; - } + pthread_t pthread_timer_thread; - l4_touch_rw(stack, sizeof(stack)); + pthread_create(&pthread_timer_thread, NULL, timer_thread, NULL); - run_test(0); + run_test(0); - if (!check_svm_npt()) - run_test(1); + if (!check_svm_npt()) + run_test(1); - return 0; + return 0; } diff --git a/l4/pkg/fbterminal/Control b/l4/pkg/fbterminal/Control index 73d632264..0dd738e45 100644 --- a/l4/pkg/fbterminal/Control +++ b/l4/pkg/fbterminal/Control @@ -1,3 +1,3 @@ -requires: libc_r lib_vt100 libgfxbitmap libc_support_misc +requires: libc lib_vt100 libgfxbitmap libc_support_misc libc_be_fs_noop libgfxbitmap-support stdlibs libevent maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/fbterminal/server/src/Makefile b/l4/pkg/fbterminal/server/src/Makefile index 48e8c4cad..1d63f5dfc 100644 --- a/l4/pkg/fbterminal/server/src/Makefile +++ b/l4/pkg/fbterminal/server/src/Makefile @@ -5,6 +5,5 @@ TARGET = fbterminal SRC_CC = main.cc REQUIRES_LIBS = libgfxbitmap lib_vt100 libc_support_misc libc_be_fs_noop \ libgfxbitmap-support libevent -L4_MULTITHREADED = y include $(L4DIR)/mk/prog.mk diff --git a/l4/pkg/input/Control b/l4/pkg/input/Control index 788ba6ad5..f4888d985 100644 --- a/l4/pkg/input/Control +++ b/l4/pkg/input/Control @@ -1,3 +1,3 @@ provides: input input-dummy -requires: libirq libio l4re_c +requires: libirq libio l4re_c libpthread Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/input/lib/src/Makefile b/l4/pkg/input/lib/src/Makefile index d0da383d9..3d8136e84 100644 --- a/l4/pkg/input/lib/src/Makefile +++ b/l4/pkg/input/lib/src/Makefile @@ -5,7 +5,7 @@ TARGET = libinput.a SRC_S = jiffie_hack.S SRC_C = emul_time.c emul_irq.c emul_wait.c emul_res.c \ l4evdev.c init.c l4drv.c l4drv_reg.c l4bus.c -REQUIRES_LIBS = libio libirq l4util libc +REQUIRES_LIBS = libio libirq l4util libc libpthread PRIVATE_INCDIR = $(PKGDIR)/lib/include diff --git a/l4/pkg/io/server/src/Make.rules b/l4/pkg/io/server/src/Make.rules index 0427e538f..65a817b45 100644 --- a/l4/pkg/io/server/src/Make.rules +++ b/l4/pkg/io/server/src/Make.rules @@ -18,4 +18,3 @@ REQUIRES_LIBS_amd64 = acpica REQUIRES_CFLAGS = libio-vbus libio-io PRIVATE_INCDIR += $(SRC_DIR) -L4_MULTITHREADED = y diff --git a/l4/pkg/io/server/src/acpi.cc b/l4/pkg/io/server/src/acpi.cc index f76c7681c..b2847f55d 100644 --- a/l4/pkg/io/server/src/acpi.cc +++ b/l4/pkg/io/server/src/acpi.cc @@ -471,10 +471,21 @@ Acpi_res_discover::discover_crs(Hw::Device *host) void Acpi_res_discover::discover_resources(Hw::Device *host) { - if (dynamic_cast(host->discover_bus_if())) + Pci_bridge *bridge = dynamic_cast(host->discover_bus_if()); + if (bridge) discover_prt(host); discover_crs(host); + + if (bridge) + { + for (Resource_list::iterator i = host->resources()->begin(); + i != host->resources()->end(); ++i) + { + if ((*i)->type() == Resource::Bus_res) + bridge->num = bridge->subordinate = static_cast(*i)->start(); + } + } } @@ -581,7 +592,7 @@ discover_pre_cb(ACPI_HANDLE obj, UINT32 nl, void *ctxt, void **) { // we found a second root bridge // create a new root pridge instance - rb = new Pci_port_root_bridge(nd); + rb = new Pci_port_root_bridge(-1, nd); } else rb->set_host(nd); @@ -616,7 +627,7 @@ int acpica_init() { d_printf(DBG_INFO, "Hello from L4-ACPICA\n"); - pci_register_root_bridge(0, new Pci_port_root_bridge(0)); + pci_register_root_bridge(0, new Pci_port_root_bridge(0, 0)); AcpiDbgLevel = ACPI_LV_INIT diff --git a/l4/pkg/io/server/src/pci.h b/l4/pkg/io/server/src/pci.h index f29bcf390..ff9d9d473 100644 --- a/l4/pkg/io/server/src/pci.h +++ b/l4/pkg/io/server/src/pci.h @@ -284,7 +284,7 @@ public: unsigned char num; unsigned char subordinate; - Pci_bridge() : num(0), subordinate(0) {} + explicit Pci_bridge(unsigned char bus) : num(bus), subordinate(bus) {} virtual int cfg_read(unsigned bus, l4_uint32_t devfn, l4_uint32_t reg, l4_uint32_t *value, Cfg_width) = 0; @@ -312,7 +312,7 @@ public: using Pci_bridge::cfg_read; explicit Pci_pci_bridge_basic(Hw::Device *host, Pci_bridge *bus) - : Pci_dev(host, bus), pri(0) + : Pci_bridge(0), Pci_dev(host, bus), pri(0) {} void increase_subordinate(int x) @@ -363,8 +363,8 @@ private: Hw::Device *_host; public: - explicit Pci_root_bridge(Hw::Device *host) - : _host(host) + explicit Pci_root_bridge(unsigned bus_nr, Hw::Device *host) + : Pci_bridge(bus_nr), _host(host) {} @@ -383,7 +383,8 @@ public: struct Pci_port_root_bridge : public Pci_root_bridge { - explicit Pci_port_root_bridge(Hw::Device *host) : Pci_root_bridge(host) {} + explicit Pci_port_root_bridge(unsigned bus_nr, Hw::Device *host) + : Pci_root_bridge(bus_nr, host) {} int cfg_read(unsigned bus, l4_uint32_t devfn, l4_uint32_t reg, l4_uint32_t *value, Cfg_width); diff --git a/l4/pkg/io/server/src/pci_iomem_root_bridge.cc b/l4/pkg/io/server/src/pci_iomem_root_bridge.cc index e5b43f5ba..e96e6c7a3 100644 --- a/l4/pkg/io/server/src/pci_iomem_root_bridge.cc +++ b/l4/pkg/io/server/src/pci_iomem_root_bridge.cc @@ -25,8 +25,8 @@ class Pci_iomem_root_bridge : public Pci_root_bridge, public Hw::Device public: typedef Hw::Pci::Cfg_width Cfg_width; - Pci_iomem_root_bridge() - : Pci_root_bridge(this), _iobase_virt(0), _iobase_phys(~0UL), + explicit Pci_iomem_root_bridge(unsigned bus_nr = 0) + : Pci_root_bridge(bus_nr, this), _iobase_virt(0), _iobase_phys(~0UL), _dev_start(~0UL), _dev_end(~0UL), _iosize(0) { set_discover_bus_if(this); diff --git a/l4/pkg/io/server/src/vicu.cc b/l4/pkg/io/server/src/vicu.cc index 61d526641..5b9cff8c3 100644 --- a/l4/pkg/io/server/src/vicu.cc +++ b/l4/pkg/io/server/src/vicu.cc @@ -25,8 +25,6 @@ #include #include -#include -#include namespace Vi { diff --git a/l4/pkg/l4con/Control b/l4/pkg/l4con/Control index 05ade1508..5ab23ed73 100644 --- a/l4/pkg/l4con/Control +++ b/l4/pkg/l4con/Control @@ -1,3 +1,3 @@ -requires: l4re_c l4re-util libio libc_r lxfuxlibc x86emu input +requires: l4re_c l4re-util libio libc lxfuxlibc x86emu input libgfxbitmap stdlibs libdrivers-lcd linux-26-headers Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/l4con/server/src/Make.rules b/l4/pkg/l4con/server/src/Make.rules index bf8329c59..8cd1846b2 100644 --- a/l4/pkg/l4con/server/src/Make.rules +++ b/l4/pkg/l4con/server/src/Make.rules @@ -4,7 +4,6 @@ TARGET = con REQUIRES_LIBS += libio input libirq libgfxbitmap l4util l4re_c-util PRIVATE_INCDIR = $(SRC_DIR) -L4_MULTITHREADED = y LIBS_x86 = -lclxfux.o -lx86emu_int10 -lx86emu LIBS_amd64 = -lx86emu_int10 -lx86emu LIBS_arm = -larm_lcd.o -larm_generic diff --git a/l4/pkg/l4re/include/elf_aux.h b/l4/pkg/l4re/include/elf_aux.h index e88bc6f65..19f4c61f0 100644 --- a/l4/pkg/l4re/include/elf_aux.h +++ b/l4/pkg/l4re/include/elf_aux.h @@ -91,6 +91,12 @@ enum * for the first application thread. */ L4RE_ELF_AUX_T_STACK_ADDR, + + /** + * \brief Tag for descriptor that defines the KIP address + * for the binaries address space. + */ + L4RE_ELF_AUX_T_KIP_ADDR, }; /** diff --git a/l4/pkg/l4re/include/impl/rm_impl.h b/l4/pkg/l4re/include/impl/rm_impl.h index 9e8ab9111..edc204732 100644 --- a/l4/pkg/l4re/include/impl/rm_impl.h +++ b/l4/pkg/l4re/include/impl/rm_impl.h @@ -156,5 +156,26 @@ Rm::find(l4_addr_t *addr, unsigned long *size, unsigned long *offset, return err; } +int +Rm::get_regions(l4_addr_t start, Region **regions) throw() +{ + L4::Ipc_iostream io(l4_utcb()); + io << Opcode(Rm_::Get_regions) << start; + long err = l4_error(io.call(cap(), L4Re::Protocol::Rm)); + if (err > 0) + *regions = reinterpret_cast(&l4_utcb_mr()->mr[0]); + return err; +} + +int +Rm::get_areas(l4_addr_t start, Area **areas) throw() +{ + L4::Ipc_iostream io(l4_utcb()); + io << Opcode(Rm_::Get_areas) << start; + long err = l4_error(io.call(cap(), L4Re::Protocol::Rm)); + if (err > 0) + *areas = reinterpret_cast(&l4_utcb_mr()->mr[0]); + return err; +} } diff --git a/l4/pkg/l4re/include/l4aux.h b/l4/pkg/l4re/include/l4aux.h index 4426a7f0c..be5002a4a 100644 --- a/l4/pkg/l4re/include/l4aux.h +++ b/l4/pkg/l4re/include/l4aux.h @@ -31,17 +31,6 @@ * \internal */ -/** - * \brief Auxiliary memory descriptor - * \ingroup api_l4aux - * \internal - */ -typedef struct l4re_mem_area_t -{ - l4_addr_t start; /**< Start of the memory area */ - l4_umword_t size; /**< Size of the memory area */ -} l4re_mem_area_t; - /** * \brief Flags for program loading * \ingroup api_l4aux @@ -65,7 +54,5 @@ typedef struct l4re_aux_t l4_cap_idx_t kip_ds; /**< Data space of the KIP */ l4_umword_t dbg_lvl; /**< Debug levels for l4re */ l4_umword_t ldr_flags; /**< Flags for l4re, see \a l4re_aux_ldr_flags_t */ - l4_umword_t cnt; /**< Number of memory areas */ - l4re_mem_area_t vm[]; /**< Memory areas */ } l4re_aux_t; diff --git a/l4/pkg/l4re/include/rm b/l4/pkg/l4re/include/rm index 5f1b23aec..8d4506b44 100644 --- a/l4/pkg/l4re/include/rm +++ b/l4/pkg/l4re/include/rm @@ -416,6 +416,23 @@ public: int find(l4_addr_t *addr, unsigned long *size, l4_addr_t *offset, unsigned *flags, L4::Cap *m) throw(); + struct Region + { + l4_addr_t start; + l4_addr_t end; + l4_addr_t offset; + L4::Cap ds; + }; + + struct Area + { + l4_addr_t start; + l4_addr_t end; + }; + + int get_regions(l4_addr_t start, Region **regions) throw(); + int get_areas(l4_addr_t start, Area **areas) throw(); + private: int _detach(l4_addr_t start, unsigned long size, L4::Cap *mem, L4::Cap task, unsigned flags) const throw(); diff --git a/l4/pkg/l4re/include/rm-sys.h b/l4/pkg/l4re/include/rm-sys.h index 2043fcd4c..d8e52dba9 100644 --- a/l4/pkg/l4re/include/rm-sys.h +++ b/l4/pkg/l4re/include/rm-sys.h @@ -31,6 +31,9 @@ namespace L4Re * \ingroup api_l4re_protocols * \internal */ - enum Opcodes { Attach, Detach, Find, Attach_area, Detach_area }; + enum Opcodes + { + Attach, Detach, Find, Attach_area, Detach_area, Get_regions, Get_areas + }; }; }; diff --git a/l4/pkg/l4re/util/include/event_buffer b/l4/pkg/l4re/util/include/event_buffer index 546c99a1d..3331bb672 100644 --- a/l4/pkg/l4re/util/include/event_buffer +++ b/l4/pkg/l4re/util/include/event_buffer @@ -97,7 +97,7 @@ public: * \param cb Function callback. */ template< typename CB, typename D > - void foreach_available_event(CB const &cb, D data = D()) throw() + void foreach_available_event(CB const &cb, D data = D()) { typename Event_buffer_t::Event *e; while ((e = Event_buffer_t::next())) @@ -119,7 +119,7 @@ public: template< typename CB, typename D > void process(L4::Cap irq, L4::Cap thread, - CB const &cb, D data = D()) throw() + CB const &cb, D data = D()) { if (l4_error(irq->attach(0, thread))) diff --git a/l4/pkg/l4re/util/include/icu_svr b/l4/pkg/l4re/util/include/icu_svr index ad7cd6f42..5e7086402 100644 --- a/l4/pkg/l4re/util/include/icu_svr +++ b/l4/pkg/l4re/util/include/icu_svr @@ -7,7 +7,6 @@ #include #include #include -#include #include #include @@ -156,7 +155,9 @@ Icu_cap_array_svr::Irq::bind(ICU *cfb, L4::Snd_fpage const &irq_fp) if (!irq_fp.cap_received()) return -L4_EINVAL; - _cap = L4Re::chkcap(L4Re::Util::cap_alloc.alloc()); + _cap = L4Re::Util::cap_alloc.alloc(); + if (!_cap.is_valid()) + return -L4_ENOMEM; _cap.get().move(L4::cap_cast(cfb->rcv_cap())); return 0; } diff --git a/l4/pkg/l4re/util/include/region_mapping b/l4/pkg/l4re/util/include/region_mapping index 2076b9e5a..537ad1f58 100644 --- a/l4/pkg/l4re/util/include/region_mapping +++ b/l4/pkg/l4re/util/include/region_mapping @@ -168,6 +168,18 @@ public: return n; } + Node lower_bound(Key_type const &key) const throw() + { + Node n = _rm.lower_bound_node(key); + return n; + } + + Node lower_bound_area(Key_type const &key) const throw() + { + Node n = _am.lower_bound_node(key); + return n; + } + l4_addr_t attach_area(l4_addr_t addr, unsigned long size, unsigned flags = None, unsigned char align = L4_PAGESHIFT) throw() diff --git a/l4/pkg/l4re/util/include/region_mapping_svr b/l4/pkg/l4re/util/include/region_mapping_svr index 683608482..a496a6b36 100644 --- a/l4/pkg/l4re/util/include/region_mapping_svr +++ b/l4/pkg/l4re/util/include/region_mapping_svr @@ -152,6 +152,53 @@ int region_map_server(RM *rm, IOS &ios) return L4_EOK; } + case Rm_::Get_regions: + { + l4_addr_t addr; + ios >> addr; + typename RM::Node r; + int num = 0; + while ((r = rm->lower_bound(Region(addr, addr +1)))) + { + Rm::Region x; + x.start = r->first.start(); + x.end = r->first.end(); + x.offset = r->second.offset(); + + if (!ios.put(x)) + break; + + num++; + if (x.end >= rm->max_addr()) + break; + addr = x.end + 1; + } + + return num; + } + case Rm_::Get_areas: + { + l4_addr_t addr; + ios >> addr; + typename RM::Node r; + int num = 0; + while ((r = rm->lower_bound_area(Region(addr, addr +1)))) + { + Rm::Area x; + x.start = r->first.start(); + x.end = r->first.end(); + + if (!ios.put(x)) + break; + + num++; + if (x.end >= rm->max_addr()) + break; + addr = x.end + 1; + } + + return num; + } default: return -L4_ENOSYS; } diff --git a/l4/pkg/l4re_c/include/event_buffer.h b/l4/pkg/l4re_c/include/event_buffer.h index 4218f6d8a..0c2e3703d 100644 --- a/l4/pkg/l4re_c/include/event_buffer.h +++ b/l4/pkg/l4re_c/include/event_buffer.h @@ -27,9 +27,6 @@ typedef struct l4re_event_buffer_consumer_t unsigned long _obj_buf[8]; } l4re_event_buffer_consumer_t; -//typedef void l4re_event_buffer_consumer_obj_t; -//typedef unsigned long l4re_event_buffer_consumer_obj_store_t[8]; - L4_CV void l4re_event_free(l4re_event_t *e) L4_NOTHROW; @@ -40,14 +37,16 @@ l4re_event_buffer_attach(l4re_event_buffer_consumer_t *evbuf, L4_CV l4re_event_t * l4re_event_buffer_next(l4re_event_buffer_consumer_t *evbuf) L4_NOTHROW; +typedef L4_CV void l4re_event_buffer_cb_t(l4re_event_t *ev, void *data); + L4_CV void -l4re_event_buffer_consumer_foreach_available_event - (l4re_event_buffer_consumer_t *evbuf, void *data, - L4_CV void (*cb)(l4re_event_t *ev, void *data)) L4_NOTHROW; +l4re_event_buffer_consumer_foreach_available_event(l4re_event_buffer_consumer_t *evbuf, + void *data, l4re_event_buffer_cb_t *cb); + L4_CV void l4re_event_buffer_consumer_process(l4re_event_buffer_consumer_t *evbuf, l4_cap_idx_t irq, l4_cap_idx_t thread, void *data, - L4_CV void (*cb)(l4re_event_t *ev, void *data)) L4_NOTHROW; + l4re_event_buffer_cb_t *cb); EXTERN_C_END diff --git a/l4/pkg/l4re_c/lib/src/event_buffer.cc b/l4/pkg/l4re_c/lib/src/event_buffer.cc index f48f7fe75..da52c88b4 100644 --- a/l4/pkg/l4re_c/lib/src/event_buffer.cc +++ b/l4/pkg/l4re_c/lib/src/event_buffer.cc @@ -21,13 +21,13 @@ using L4Re::Util::Event_buffer_consumer; -static inline Event_buffer_consumer *cast(l4re_event_buffer_consumer_t *e) +static inline Event_buffer_consumer *cast(l4re_event_buffer_consumer_t *e) throw() { (void)sizeof(char[sizeof(e->_obj_buf) - sizeof(Event_buffer_consumer)]); return (Event_buffer_consumer *)e->_obj_buf; } -inline void *operator new(size_t, void *a) { return a; } +inline void *operator new(size_t, void *a) throw() { return a; } L4_CV long l4re_event_buffer_attach(l4re_event_buffer_consumer_t *evbuf, @@ -56,17 +56,18 @@ l4re_event_buffer_next(l4re_event_buffer_consumer_t *evbuf) L4_NOTHROW L4_CV void l4re_event_buffer_consumer_foreach_available_event (l4re_event_buffer_consumer_t *evbuf, void *data, - L4_CV void (*cb)(l4re_event_t *ev, void *data)) L4_NOTHROW + l4re_event_buffer_cb_t *cb) { - void (*_cb)(L4Re::Event_buffer::Event*, void *) - = (void (*)(L4Re::Event_buffer::Event*, void *))cb; + typedef void Cb(L4Re::Event_buffer::Event*, void *); + + Cb *_cb = (Cb*)cb; cast(evbuf)->foreach_available_event(_cb, data); } L4_CV void l4re_event_buffer_consumer_process(l4re_event_buffer_consumer_t *evbuf, l4_cap_idx_t irq, l4_cap_idx_t thread, void *data, - L4_CV void (*cb)(l4re_event_t *ev, void *)) L4_NOTHROW + l4re_event_buffer_cb_t *cb) { L4::Cap i(irq); L4::Cap t(thread); diff --git a/l4/pkg/l4re_kernel/server/src/loader.h b/l4/pkg/l4re_kernel/server/src/loader.h index 2a84c5905..c363ed1b1 100644 --- a/l4/pkg/l4re_kernel/server/src/loader.h +++ b/l4/pkg/l4re_kernel/server/src/loader.h @@ -114,7 +114,7 @@ struct L4Re_app_model : public Ldr::Base_app_model return L4::Cap(Global::l4re_aux->kip_ds); } - void const *generate_l4aux(char const *, char const *) const + void const *generate_l4aux(char const *) const { return Global::l4re_aux; } void extra_elf_auxv(); diff --git a/l4/pkg/l4re_kernel/server/src/main.cc b/l4/pkg/l4re_kernel/server/src/main.cc index 877c8311c..36fa2f38c 100644 --- a/l4/pkg/l4re_kernel/server/src/main.cc +++ b/l4/pkg/l4re_kernel/server/src/main.cc @@ -23,7 +23,6 @@ #include #include - #include #include @@ -61,21 +60,66 @@ public: } }; +extern "C" +void *__libc_alloc_initial_tls(unsigned long size) +{ + using namespace L4; + using namespace L4Re; + Cap ds(Env::env()->first_free_cap() << L4_CAP_SHIFT); + ::l4re_global_env->first_free_cap += 1; + if (Env::env()->mem_alloc()->alloc(size, ds, 0) < 0) + return NULL; + + void *addr = (void*)0xb0000000; + if(Env::env()->rm()->attach(&addr, size, Rm::Search_addr, + ds, 0, 0) < 0) + return NULL; + + return addr; +} static L4::Server server(l4_utcb()); -static void insert_regions(l4re_aux_t *a) +static void insert_regions() { - unsigned long n = a->cnt; - for (unsigned long i = 0; i < n; ++i) + using L4Re::Rm; + using L4Re::Env; + int n; + l4_addr_t addr = 0; + Rm::Region *rl; + while ((n = L4Re::Env::env()->rm()->get_regions(addr, &rl)) > 0) + { + for (int i = 0; i < n; ++i) + { + Rm::Region const *r = &rl[i]; + void *x = __local_rm.attach((void*)r->start, r->end - r->start +1, + Region_handler(L4::cap_reinterpret_cast(Env::env()->rm()), + L4_INVALID_CAP, 0, Rm::Pager), 0); + if (!x) + { + L4::cerr << "l4re: error while initializing region mapper\n"; + exit(1); + } + + addr = r->end + 1; + } + + } + + Rm::Area *al; + while ((n = L4Re::Env::env()->rm()->get_areas(addr, &al)) > 0) { - void *x = __local_rm.attach((void*)a->vm[i].start, a->vm[i].size, - Region_handler(L4::cap_reinterpret_cast(L4Re::Env::env()->rm()), - L4_INVALID_CAP, 0, L4Re::Rm::Pager), 0); - if (!x) + for (int i = 0; i < n; ++i) { - L4::cerr << "l4re: error while initializing region mapper\n"; - exit(1); + Rm::Area const *r = &al[i]; + l4_addr_t x = __local_rm.attach_area(r->start, r->end - r->start +1); + if (!x) + { + L4::cerr << "l4re: error while initializing region mapper\n"; + exit(1); + } + + addr = r->end + 1; } } } @@ -168,7 +212,7 @@ int main(int argc, char const *argv[]) boot.printf("setup local region mapping\n"); __local_rm.init(); boot.printf("adding regions from remote region mapper\n"); - insert_regions(Global::l4re_aux); + insert_regions(); boot.printf("initializing local page allocator\n"); Single_page_alloc_base::init_local_rm(Global::local_rm); diff --git a/l4/pkg/l4re_vfs/include/backend b/l4/pkg/l4re_vfs/include/backend index e728462be..bc13ae125 100644 --- a/l4/pkg/l4re_vfs/include/backend +++ b/l4/pkg/l4re_vfs/include/backend @@ -20,6 +20,7 @@ #pragma once #include +#include namespace L4Re { namespace Vfs { @@ -54,8 +55,16 @@ public: ssize_t writev(const struct iovec*, int) throw() { return -EINVAL; } + /// Default backend for POSIX pwrite and pwritev functions. + ssize_t pwritev(const struct iovec*, int, off64_t) throw() + { return -EINVAL; } + + /// Default backend for POSIX pread and preadv functions. + ssize_t preadv(const struct iovec*, int, off64_t) throw() + { return -EINVAL; } + /// Default backend for POSIX seek and lseek functions. - virtual off64_t lseek64(off64_t, int) throw() + off64_t lseek64(off64_t, int) throw() { return -ESPIPE; } /// Default backend for the POSIX truncate, ftruncate and similar functions. @@ -140,7 +149,6 @@ public: ssize_t getdents(char *, size_t) throw() { return -ENOTDIR; } - ~Be_file() throw() = 0; private: @@ -155,6 +163,68 @@ protected: inline Be_file::~Be_file() throw() {} +class Be_file_pos : public Be_file +{ +public: + Be_file_pos() throw() : Be_file(), _pos(0) {} + + virtual off64_t size() const throw() = 0; + + ssize_t readv(const struct iovec *v, int iovcnt) throw() + { + ssize_t r = preadv(v, iovcnt, _pos); + if (r > 0) + _pos += r; + return r; + } + + ssize_t writev(const struct iovec *v, int iovcnt) throw() + { + ssize_t r = pwritev(v, iovcnt, _pos); + if (r > 0) + _pos += r; + return r; + } + + ssize_t preadv(const struct iovec *v, int iovcnt, off64_t offset) throw() = 0; + ssize_t pwritev(const struct iovec *v, int iovcnt, off64_t offset) throw() = 0; + + off64_t lseek64(off64_t offset, int whence) throw() + { + off64_t r; + switch (whence) + { + case SEEK_SET: r = offset; break; + case SEEK_CUR: r = _pos + offset; break; + case SEEK_END: r = size() + offset; break; + default: return -EINVAL; + }; + + if (r < 0) + return -EINVAL; + + _pos = r; + return _pos; + } + +protected: + off64_t pos() const throw() { return _pos; } + +private: + off64_t _pos; +}; + +class Be_file_stream : public Be_file +{ +public: + ssize_t preadv(const struct iovec *v, int iovcnt, off64_t) throw() + { return readv(v, iovcnt); } + + ssize_t pwritev(const struct iovec *v, int iovcnt, off64_t) throw() + { return writev(v, iovcnt); } + +}; + /** * \brief Boilerplate class for implementing a L4Re::Vfs::File_system. * @@ -187,7 +257,7 @@ public: * This destructor takes care of removing this file system * from the registry of L4Re::Vfs::vfs_ops. */ - ~Be_file_system() throw() + ~Be_file_system() throw() { vfs_ops->unregister_file_system(this); } @@ -200,5 +270,9 @@ public: char const *type() const throw() { return _fstype; } }; +/* Make sure filesystems can register before the constructor of libmount + * runs */ +#define L4RE_VFS_FILE_SYSTEM_ATTRIBUTE \ + __attribute__((init_priority(INIT_PRIO_LATE_VAL))) }} diff --git a/l4/pkg/l4re_vfs/include/impl/ns_fs.h b/l4/pkg/l4re_vfs/include/impl/ns_fs.h index a85592cc4..2ab159cce 100644 --- a/l4/pkg/l4re_vfs/include/impl/ns_fs.h +++ b/l4/pkg/l4re_vfs/include/impl/ns_fs.h @@ -48,6 +48,8 @@ public: ssize_t readv(const struct iovec*, int) throw() { return -EISDIR; } ssize_t writev(const struct iovec*, int) throw() { return -EISDIR; } + ssize_t preadv(const struct iovec*, int, off64_t) throw() { return -EISDIR; } + ssize_t pwritev(const struct iovec*, int, off64_t) throw() { return -EISDIR; } int fstat64(struct stat64 *) const throw(); int faccessat(const char *path, int mode, int flags) throw(); int get_entry(const char *path, int flags, mode_t mode, @@ -73,6 +75,8 @@ public: ssize_t readv(const struct iovec*, int) throw() { return -EISDIR; } ssize_t writev(const struct iovec*, int) throw() { return -EISDIR; } + ssize_t preadv(const struct iovec*, int, off64_t) throw() { return -EISDIR; } + ssize_t pwritev(const struct iovec*, int, off64_t) throw() { return -EISDIR; } int fstat64(struct stat64 *) const throw(); int faccessat(const char *path, int mode, int flags) throw(); int get_entry(const char *path, int flags, mode_t mode, diff --git a/l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h b/l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h index 1d990de47..4ebe8741f 100644 --- a/l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h +++ b/l4/pkg/l4re_vfs/include/impl/ns_fs_impl.h @@ -179,6 +179,7 @@ Ns_dir::getdents(char *buf, size_t sz) throw() l = sizeof(d->d_name); unsigned n = offsetof (struct dirent64, d_name) + l; + n = (n + sizeof(long) - 1) & ~(sizeof(long) - 1); if (n > sz) break; @@ -361,6 +362,7 @@ Env_dir::getdents(char *buf, size_t sz) throw() l = sizeof(d->d_name); unsigned n = offsetof (struct dirent64, d_name) + l; + n = (n + sizeof(long) - 1) & ~(sizeof(long) - 1); if (n <= sz) { diff --git a/l4/pkg/l4re_vfs/include/impl/ro_file.h b/l4/pkg/l4re_vfs/include/impl/ro_file.h index 38d54a98f..9e328db29 100644 --- a/l4/pkg/l4re_vfs/include/impl/ro_file.h +++ b/l4/pkg/l4re_vfs/include/impl/ro_file.h @@ -23,17 +23,16 @@ namespace L4Re { namespace Core { -class Ro_file : public L4Re::Vfs::Be_file +class Ro_file : public L4Re::Vfs::Be_file_pos { private: L4::Cap _ds; - off64_t _f_pos; off64_t _size; char const *_addr; public: explicit Ro_file(L4::Cap ds) throw() - : Be_file(), _ds(ds), _f_pos(0), _addr(0) + : Be_file_pos(), _ds(ds), _addr(0) { _ds->take(); _size = _ds->size(); @@ -41,14 +40,12 @@ public: L4::Cap data_space() const throw() { return _ds; } - ssize_t readv(const struct iovec*, int iovcnt) throw(); - ssize_t writev(const struct iovec*, int iovcnt) throw(); - - off64_t lseek64(off64_t, int) throw(); int fstat64(struct stat64 *buf) const throw(); int ioctl(unsigned long, va_list) throw(); + off64_t size() const throw() { return _size; } + int get_status_flags() const throw() { return O_RDONLY; } @@ -61,13 +58,11 @@ public: void operator delete(void *b) throw(); private: - - ssize_t read(const struct iovec*) throw(); -// ssize_t write(const struct iovec*) throw(); - + ssize_t read_single(const struct iovec*, off64_t) throw(); + ssize_t preadv(const struct iovec *, int, off64_t) throw(); + ssize_t pwritev(const struct iovec *, int , off64_t) throw(); private: - static Simple_store store; }; diff --git a/l4/pkg/l4re_vfs/include/impl/ro_file_impl.h b/l4/pkg/l4re_vfs/include/impl/ro_file_impl.h index 06bd77e2f..6d1b96904 100644 --- a/l4/pkg/l4re_vfs/include/impl/ro_file_impl.h +++ b/l4/pkg/l4re_vfs/include/impl/ro_file_impl.h @@ -70,16 +70,15 @@ Ro_file::fstat64(struct stat64 *buf) const throw() } ssize_t -Ro_file::read(const struct iovec *vec) throw() +Ro_file::read_single(const struct iovec *vec, off64_t pos) throw() { off64_t l = vec->iov_len; - if (_size - _f_pos < l) - l = _size - _f_pos; + if (_size - pos < l) + l = _size - pos; if (l > 0) { - Vfs_config::memcpy(vec->iov_base, _addr + _f_pos, l); - _f_pos += l; + Vfs_config::memcpy(vec->iov_base, _addr + pos, l); return l; } @@ -87,13 +86,14 @@ Ro_file::read(const struct iovec *vec) throw() } ssize_t -Ro_file::readv(const struct iovec *vec, int cnt) throw() +Ro_file::preadv(const struct iovec *vec, int cnt, off64_t offset) throw() { if (!_addr) { void const *file = (void*)L4_PAGESIZE; long err = L4Re::Env::env()->rm()->attach(&file, _size, - Rm::Search_addr | Rm::Read_only, _ds, 0); + Rm::Search_addr | Rm::Read_only, + _ds, 0); if (err < 0) return err; @@ -105,7 +105,8 @@ Ro_file::readv(const struct iovec *vec, int cnt) throw() while (cnt > 0) { - ssize_t r = read(vec); + ssize_t r = read_single(vec, offset); + offset += r; l += r; if ((size_t)r < vec->iov_len) @@ -118,30 +119,9 @@ Ro_file::readv(const struct iovec *vec, int cnt) throw() } ssize_t -Ro_file::writev(const struct iovec*, int iovcnt) throw() +Ro_file::pwritev(const struct iovec *, int, off64_t) throw() { - (void)iovcnt; - return -EBADF; -} - -off64_t -Ro_file::lseek64(off64_t offset, int whence) throw() -{ - off64_t r; - switch (whence) - { - case SEEK_SET: r = offset; break; - case SEEK_CUR: r = _f_pos + offset; break; - case SEEK_END: r = _size + offset; break; - default: return -EINVAL; - }; - - if (r < 0) - return -EINVAL; - - _f_pos = r; - - return _f_pos; + return -EROFS; } int @@ -151,7 +131,7 @@ Ro_file::ioctl(unsigned long v, va_list args) throw() { case FIONREAD: // return amount of data still available int *available = va_arg(args, int *); - *available = _size - _f_pos; + *available = _size - pos(); return 0; }; return -EINVAL; diff --git a/l4/pkg/l4re_vfs/include/impl/vcon_stream.h b/l4/pkg/l4re_vfs/include/impl/vcon_stream.h index 7318ff68c..927b62a64 100644 --- a/l4/pkg/l4re_vfs/include/impl/vcon_stream.h +++ b/l4/pkg/l4re_vfs/include/impl/vcon_stream.h @@ -23,10 +23,9 @@ #include - namespace L4Re { namespace Core { -class Vcon_stream : public L4Re::Vfs::Be_file +class Vcon_stream : public L4Re::Vfs::Be_file_stream { private: L4::Cap _s; @@ -46,5 +45,4 @@ public: void operator delete (void *) {} }; - }} diff --git a/l4/pkg/l4re_vfs/include/impl/vcon_stream_impl.h b/l4/pkg/l4re_vfs/include/impl/vcon_stream_impl.h index 1c29c5a9f..333f49945 100644 --- a/l4/pkg/l4re_vfs/include/impl/vcon_stream_impl.h +++ b/l4/pkg/l4re_vfs/include/impl/vcon_stream_impl.h @@ -28,7 +28,7 @@ namespace L4Re { namespace Core { Vcon_stream::Vcon_stream(L4::Cap s) throw() -: Be_file(), _s(s), _irq(cap_alloc()->alloc()) +: Be_file_stream(), _s(s), _irq(cap_alloc()->alloc()) { #if 1 //printf("VCON: irq cap = %lx\n", _irq.cap()); diff --git a/l4/pkg/l4re_vfs/include/impl/vfs_impl.h b/l4/pkg/l4re_vfs/include/impl/vfs_impl.h index 71536d6f0..5689e4ec4 100644 --- a/l4/pkg/l4re_vfs/include/impl/vfs_impl.h +++ b/l4/pkg/l4re_vfs/include/impl/vfs_impl.h @@ -69,15 +69,26 @@ public: Fd_store() throw(); }; +// for internal Vcon_streams we want to have a placement new operator, so +// inherit and add one +class Std_stream : public L4Re::Core::Vcon_stream +{ +public: + inline void *operator new (size_t, void *p) throw() { return p; } + Std_stream(L4::Cap c) : L4Re::Core::Vcon_stream(c) {} +}; Fd_store::Fd_store() throw() { - static L4Re::Core::Vcon_stream s(L4Re::Env::env()->log()); + // use this strange way to prevent deletion of the stdio object + // this depends on Fd_store to being a singleton !!! + static char m[sizeof(Std_stream)] __attribute__((aligned(sizeof(long)))); + Std_stream *s = new (m) Std_stream(L4Re::Env::env()->log()); // make sure that we never delete the static io stream thing - s.add_ref(); - set(0, cxx::ref_ptr(&s)); // stdin - set(1, cxx::ref_ptr(&s)); // stdout - set(2, cxx::ref_ptr(&s)); // stderr + s->add_ref(); + set(0, cxx::ref_ptr(s)); // stdin + set(1, cxx::ref_ptr(s)); // stdout + set(2, cxx::ref_ptr(s)); // stderr } class Root_mount_tree : public L4Re::Vfs::Mount_tree @@ -93,6 +104,7 @@ private: bool _early_oom; public: + void *operator new (size_t, void *p) throw() { return p; } Vfs() : _early_oom(true), _root_mount(), _root(L4Re::Env::env()), _annon_size(0x10000000) @@ -746,12 +758,18 @@ int Vfs::madvise(void *, size_t, int) L4_NOTHROW { return 0; } -static Vfs vfs __attribute__((init_priority(1000))); +namespace { +// use this container construct here to prevent a destructor for +// our VFS main object is ever called! +static char vfs_cnt[sizeof(Vfs)] __attribute__((aligned(sizeof(long)))); +static void init_vfs() { new (vfs_cnt) Vfs(); } +L4_DECLARE_CONSTRUCTOR(init_vfs, INIT_PRIO_EARLY); +} } //L4Re::Vfs::Ops *__ldso_posix_vfs_ops = &vfs; -void *__rtld_l4re_env_posix_vfs_ops = &vfs; +void *__rtld_l4re_env_posix_vfs_ops = &vfs_cnt; extern void *l4re_env_posix_vfs_ops __attribute__((alias("__rtld_l4re_env_posix_vfs_ops"), visibility("default"))); diff --git a/l4/pkg/l4re_vfs/include/vfs.h b/l4/pkg/l4re_vfs/include/vfs.h index 9c7d18d57..dfe12c6f7 100644 --- a/l4/pkg/l4re_vfs/include/vfs.h +++ b/l4/pkg/l4re_vfs/include/vfs.h @@ -298,6 +298,9 @@ public: */ virtual ssize_t writev(const struct iovec*, int iovcnt) throw() = 0; + virtual ssize_t preadv(const struct iovec *iov, int iovcnt, off64_t offset) throw() = 0; + virtual ssize_t pwritev(const struct iovec *iov, int iovcnt, off64_t offset) throw() = 0; + /** * \brief Change the file pointer. * diff --git a/l4/pkg/l4sys/include/ARCH-arm/vm.h b/l4/pkg/l4sys/include/ARCH-arm/vm.h index fad28c978..2b3c2a0b6 100644 --- a/l4/pkg/l4sys/include/ARCH-arm/vm.h +++ b/l4/pkg/l4sys/include/ARCH-arm/vm.h @@ -65,7 +65,7 @@ struct l4_vm_state l4_umword_t pc; l4_umword_t cpsr; - + l4_umword_t pending_events; l4_umword_t cp15_ttbr0; @@ -79,8 +79,10 @@ struct l4_vm_state l4_umword_t cp15_control; l4_umword_t cp15_prim_region_remap; l4_umword_t cp15_norm_region_remap; - l4_umword_t cp15_cid; - + l4_umword_t cp15_cid; // banked + l4_umword_t cp15_tls[3]; // banked + l4_umword_t cp10_fpexc; + l4_umword_t pfs; l4_umword_t pfa; l4_umword_t exit_reason; diff --git a/l4/pkg/l4util/Control b/l4/pkg/l4util/Control index b9a0098ca..a145c9189 100644 --- a/l4/pkg/l4util/Control +++ b/l4/pkg/l4util/Control @@ -1,3 +1,3 @@ provides: l4util -requires: crtn libc +requires: crtn libc-headers Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/l4util/include/thread.h b/l4/pkg/l4util/include/thread.h index 3e3b16b93..a869ad9ab 100644 --- a/l4/pkg/l4util/include/thread.h +++ b/l4/pkg/l4util/include/thread.h @@ -38,7 +38,8 @@ EXTERN_C_BEGIN * \param sp Initial value of stack pointer * \param pager Pager of the thread * \param task Task to put thread in - * \param scheduler Scheduler to use + * \param scheduler Scheduler to use, specify L4_INVALID_CAP for not + * calling the scheduler. * \param sp Scheduler params to use * \return 0 on success, <0 on error */ diff --git a/l4/pkg/l4util/lib/src/thread.c b/l4/pkg/l4util/lib/src/thread.c index c498df0db..d381079e2 100644 --- a/l4/pkg/l4util/lib/src/thread.c +++ b/l4/pkg/l4util/lib/src/thread.c @@ -28,10 +28,6 @@ l4util_create_thread(l4_cap_idx_t id, l4_utcb_t *thread_utcb, if (l4_error(res)) return l4_error(res); - res = l4_scheduler_run_thread(scheduler, id, &scp); - if (l4_error(res)) - return l4_error(res); - l4_thread_control_start(); l4_thread_control_pager(pager); l4_thread_control_bind(thread_utcb, task); @@ -43,5 +39,12 @@ l4util_create_thread(l4_cap_idx_t id, l4_utcb_t *thread_utcb, if (l4_error(res)) return l4_error(res); + if (!l4_is_invalid_cap(scheduler)) + { + res = l4_scheduler_run_thread(scheduler, id, &scp); + if (l4_error(res)) + return l4_error(res); + } + return 0; } diff --git a/l4/pkg/ldscripts/ARCH-amd64/main_dyn.ld b/l4/pkg/ldscripts/ARCH-amd64/main_dyn.ld index 6a38b4794..0db313695 100644 --- a/l4/pkg/ldscripts/ARCH-amd64/main_dyn.ld +++ b/l4/pkg/ldscripts/ARCH-amd64/main_dyn.ld @@ -85,7 +85,9 @@ SECTIONS PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } :ehf :ro diff --git a/l4/pkg/ldscripts/ARCH-amd64/main_rel.ld b/l4/pkg/ldscripts/ARCH-amd64/main_rel.ld index c202ea9cb..a1b5ccd8b 100644 --- a/l4/pkg/ldscripts/ARCH-amd64/main_rel.ld +++ b/l4/pkg/ldscripts/ARCH-amd64/main_rel.ld @@ -47,6 +47,10 @@ SECTIONS .plt : { *(.plt) *(.iplt) } .text : { + *(.text.unlikely .text.*_unlikely) + *(.text.exit .text.exit.*) + *(.text.startup .text.startup.*) + *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .gnu.warning sections are handled specially by elf32.em. */ @@ -63,7 +67,11 @@ SECTIONS .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table + .gcc_except_table.*) } + /* These sections are generated by the Sun/Oracle C++ compiler. */ + .exception_ranges : ONLY_IF_RO { *(.exception_ranges + .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); @@ -71,6 +79,7 @@ SECTIONS /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } @@ -200,5 +209,5 @@ SECTIONS .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) } + /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } diff --git a/l4/pkg/ldscripts/ARCH-amd64/main_stat.ld b/l4/pkg/ldscripts/ARCH-amd64/main_stat.ld index f55990a5e..eeeb20523 100644 --- a/l4/pkg/ldscripts/ARCH-amd64/main_stat.ld +++ b/l4/pkg/ldscripts/ARCH-amd64/main_stat.ld @@ -3,7 +3,8 @@ ENTRY(_start) PHDRS { - ro PT_LOAD; + phdr PT_PHDR PHDRS; + ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; L4_DEFINE_L4PHDRS } @@ -11,6 +12,8 @@ PHDRS SECTIONS { L4_DEFINE_X86_KERNEL_ENTRY_SYMS + PROVIDE (__executable_start = 0x010000); + . = __executable_start + SIZEOF_HEADERS; /* No program code/data before _stext/_prog_img_start! */ @@ -72,7 +75,10 @@ SECTIONS PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } diff --git a/l4/pkg/ldscripts/ARCH-arm/main_dyn.ld b/l4/pkg/ldscripts/ARCH-arm/main_dyn.ld index a69cc52ab..deec93b65 100644 --- a/l4/pkg/ldscripts/ARCH-arm/main_dyn.ld +++ b/l4/pkg/ldscripts/ARCH-arm/main_dyn.ld @@ -73,7 +73,9 @@ SECTIONS PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } diff --git a/l4/pkg/ldscripts/ARCH-arm/main_rel.ld b/l4/pkg/ldscripts/ARCH-arm/main_rel.ld index 543831581..588221861 100644 --- a/l4/pkg/ldscripts/ARCH-arm/main_rel.ld +++ b/l4/pkg/ldscripts/ARCH-arm/main_rel.ld @@ -25,6 +25,7 @@ SECTIONS *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) + *(.rel.iplt) } .rela.dyn : { @@ -39,21 +40,30 @@ SECTIONS *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) + *(.rela.iplt) + } + .rel.plt : + { + *(.rel.plt) + } + .rela.plt : + { + *(.rela.plt) } - .rel.plt : { *(.rel.plt) } - .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0 .plt : { *(.plt) } + .iplt : { *(.iplt) } .text : { + *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } =0 .fini : { @@ -65,16 +75,15 @@ SECTIONS .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } - __exidx_start = .; + PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } - __exidx_end = .; + PROVIDE_HIDDEN (__exidx_end = .); .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ - . = ALIGN(CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); - PROVIDE (_sdata = .); + . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } @@ -87,13 +96,13 @@ SECTIONS } .init_array : { - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) } .fini_array : { - KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) } .ctors : { @@ -128,10 +137,10 @@ SECTIONS .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); - .got : { *(.got.plt) *(.got) } + .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) SORT(CONSTRUCTORS) @@ -196,5 +205,5 @@ SECTIONS .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) } + /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } diff --git a/l4/pkg/ldscripts/ARCH-arm/main_stat.ld b/l4/pkg/ldscripts/ARCH-arm/main_stat.ld index fb265e88c..eee8bdd36 100644 --- a/l4/pkg/ldscripts/ARCH-arm/main_stat.ld +++ b/l4/pkg/ldscripts/ARCH-arm/main_stat.ld @@ -6,7 +6,8 @@ ENTRY(_start) PHDRS { - ro PT_LOAD; + phdr PT_PHDR PHDRS; + ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; L4_DEFINE_L4PHDRS } @@ -14,6 +15,8 @@ PHDRS SECTIONS { + PROVIDE (__executable_start = 0x010000); + . = __executable_start + SIZEOF_HEADERS; /* No program code/data before _stext/_prog_img_start! */ /* Read-only sections, merged into text segment. The start address of @@ -78,7 +81,9 @@ SECTIONS . = ALIGN(0x40); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } @@ -89,9 +94,9 @@ SECTIONS .eh_frame : ONLY_IF_RO { - PROVIDE(__eh_frame_start__ = .); +/* PROVIDE(__eh_frame_start__ = .);*/ KEEP (*(.eh_frame)) - KEEP (*(.eh_frame_terminator)) +/* KEEP (*(.eh_frame_terminator)) */ } :ro .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } @@ -104,9 +109,9 @@ SECTIONS /* Exception handling */ .eh_frame : ONLY_IF_RW { - PROVIDE (__eh_frame_start__ = .); +/* PROVIDE (__eh_frame_start__ = .); */ KEEP (*(.eh_frame)) - KEEP (*(.eh_frame_terminator)) +/* KEEP (*(.eh_frame_terminator)) */ } :rw .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } :rw /* Thread Local Storage sections */ @@ -200,6 +205,7 @@ SECTIONS KEEP (*(.c_dtors)) KEEP (*(.mark_end_c_dtors))*/ } + .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { *(.data .data.* .gnu.linkonce.d.*) diff --git a/l4/pkg/ldscripts/ARCH-ppc32/main_dyn.ld b/l4/pkg/ldscripts/ARCH-ppc32/main_dyn.ld index 7448d9cd8..93d170759 100644 --- a/l4/pkg/ldscripts/ARCH-ppc32/main_dyn.ld +++ b/l4/pkg/ldscripts/ARCH-ppc32/main_dyn.ld @@ -84,7 +84,9 @@ SECTIONS PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .sdata2 : diff --git a/l4/pkg/ldscripts/ARCH-ppc32/main_stat.ld b/l4/pkg/ldscripts/ARCH-ppc32/main_stat.ld index 7063422cb..32b5eb9e2 100644 --- a/l4/pkg/ldscripts/ARCH-ppc32/main_stat.ld +++ b/l4/pkg/ldscripts/ARCH-ppc32/main_stat.ld @@ -7,13 +7,16 @@ SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); PHDRS { - ro PT_LOAD; + phdr PT_PHDR PHDRS; + ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; L4_DEFINE_L4PHDRS } SECTIONS { + PROVIDE (__executable_start = 0x010000); + . = __executable_start + SIZEOF_HEADERS; /* Read-only sections, merged into text segment: */ /* PROVIDE (__executable_start = 0x10000000); . = 0x10000000 + SIZEOF_HEADERS; */ @@ -84,7 +87,9 @@ SECTIONS PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .sdata2 : diff --git a/l4/pkg/ldscripts/ARCH-sparc/main_dyn.ld b/l4/pkg/ldscripts/ARCH-sparc/main_dyn.ld index 3bc60a576..180c92ed6 100644 --- a/l4/pkg/ldscripts/ARCH-sparc/main_dyn.ld +++ b/l4/pkg/ldscripts/ARCH-sparc/main_dyn.ld @@ -86,7 +86,9 @@ SECTIONS PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .sdata2 : diff --git a/l4/pkg/ldscripts/ARCH-sparc/main_stat.ld b/l4/pkg/ldscripts/ARCH-sparc/main_stat.ld index ce687cf57..af2771935 100644 --- a/l4/pkg/ldscripts/ARCH-sparc/main_stat.ld +++ b/l4/pkg/ldscripts/ARCH-sparc/main_stat.ld @@ -7,13 +7,17 @@ SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); PHDRS { - ro PT_LOAD; + phdr PT_PHDR PHDRS; + ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; L4_DEFINE_L4PHDRS } SECTIONS { + PROVIDE (__executable_start = 0x010000); + . = __executable_start + SIZEOF_HEADERS; + /* Read-only sections, merged into text segment: */ /* PROVIDE (__executable_start = 0x10000000); . = 0x10000000 + SIZEOF_HEADERS; */ @@ -85,7 +89,9 @@ SECTIONS PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux _rodata_start = . ; .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } diff --git a/l4/pkg/ldscripts/ARCH-x86/main_dyn.ld b/l4/pkg/ldscripts/ARCH-x86/main_dyn.ld index 64239fdf0..1f650a7c7 100644 --- a/l4/pkg/ldscripts/ARCH-x86/main_dyn.ld +++ b/l4/pkg/ldscripts/ARCH-x86/main_dyn.ld @@ -8,6 +8,7 @@ PHDRS ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; dyn PT_DYNAMIC; + tls PT_TLS; ehf PT_GNU_EH_FRAME; L4_DEFINE_L4PHDRS } @@ -79,7 +80,8 @@ SECTIONS PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } :ehf :ro @@ -107,14 +109,14 @@ SECTIONS } :rw .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } :rw /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } :rw + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } :rw : tls .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); - } + } : rw .init_array : { PROVIDE_HIDDEN (__init_array_start = .); diff --git a/l4/pkg/ldscripts/ARCH-x86/main_rel.ld b/l4/pkg/ldscripts/ARCH-x86/main_rel.ld index 611cb333f..b41d25694 100644 --- a/l4/pkg/ldscripts/ARCH-x86/main_rel.ld +++ b/l4/pkg/ldscripts/ARCH-x86/main_rel.ld @@ -44,6 +44,9 @@ SECTIONS .text : { *(.text.unlikely .text.*_unlikely) + *(.text.exit .text.exit.*) + *(.text.startup .text.startup.*) + *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .gnu.warning sections are handled specially by elf32.em. */ @@ -60,14 +63,20 @@ SECTIONS .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table + .gcc_except_table.*) } + /* These sections are generated by the Sun/Oracle C++ compiler. */ + .exception_ranges : ONLY_IF_RO { *(.exception_ranges + .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); + /* Exception handling */ PROVIDE (_sdata = .); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } @@ -77,8 +86,8 @@ SECTIONS } .init_array : { - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) } .fini_array : { diff --git a/l4/pkg/ldscripts/ARCH-x86/main_stat.ld b/l4/pkg/ldscripts/ARCH-x86/main_stat.ld index 83c92122f..3e6387147 100644 --- a/l4/pkg/ldscripts/ARCH-x86/main_stat.ld +++ b/l4/pkg/ldscripts/ARCH-x86/main_stat.ld @@ -3,8 +3,10 @@ ENTRY(_start) PHDRS { - ro PT_LOAD; + phdr PT_PHDR PHDRS; + ro PT_LOAD FILEHDR PHDRS; rw PT_LOAD; + tls PT_TLS; L4_DEFINE_L4PHDRS } @@ -12,6 +14,8 @@ PHDRS SECTIONS { L4_DEFINE_X86_KERNEL_ENTRY_SYMS + PROVIDE (__executable_start = 0x0100000); + . = __executable_start + SIZEOF_HEADERS; /* No program code/data before _stext/_prog_img_start! */ @@ -74,7 +78,9 @@ SECTIONS PROVIDE (_etext = .); PROVIDE (etext = .); - .rol4re_elf_aux : { KEEP (*(.rol4re_elf_aux)) } : ro : l4re_aux + .rol4re_elf_aux : { + KEEP (*(.rol4re_elf_aux)) + } : ro : l4re_aux .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } :ro @@ -88,6 +94,7 @@ SECTIONS .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + . = ALIGN(CONSTANT(MAXPAGESIZE)); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ @@ -102,14 +109,14 @@ SECTIONS } :rw .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } :rw /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } :rw + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } : rw : tls .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); - } + } : rw .init_array : { PROVIDE_HIDDEN (__init_array_start = .); diff --git a/l4/pkg/ldscripts/Makefile b/l4/pkg/ldscripts/Makefile index 9ab85676e..2578d22bd 100644 --- a/l4/pkg/ldscripts/Makefile +++ b/l4/pkg/ldscripts/Makefile @@ -40,6 +40,11 @@ INSTALL_TARGET = $(LD_SCRIPTS) crti.o crtn.o crt1.o crti.s.o crtn.s.o crt1.s.o include $(L4DIR)/mk/lib.mk +$(eval $(call BID_MAKE_RULE_template, crti_s.o, crti.S,AS)) + +crti.o: crti_s.o kip_addr.o + $(LD) -m $(LD_EMULATION) -r -o $@ $^ + %.ld: $(PKGDIR)/ARCH-$(ARCH)/%.ld $(SRC_DIR)/Makefile $(SRC_DIR)/generic.h @$(GEN_MESSAGE) $(VERBOSE)[ "$(LDVERSION)" -lt "218" ] && \ diff --git a/l4/pkg/ldscripts/generic.h b/l4/pkg/ldscripts/generic.h index 3228ab321..da4584162 100644 --- a/l4/pkg/ldscripts/generic.h +++ b/l4/pkg/ldscripts/generic.h @@ -1,6 +1,9 @@ #pragma once #define L4_DEFINE_L4PHDRS \ + l4re_aux 0x60000014; + +#define L4_DEFINE_L4PHDRS___DISABLED \ stack 0x60000012 AT (__L4_STACK_ADDR__); \ kip 0x60000013 AT (__L4_KIP_ADDR__); \ l4re_aux 0x60000014; diff --git a/l4/pkg/ldscripts/kip_addr.c b/l4/pkg/ldscripts/kip_addr.c new file mode 100644 index 000000000..debbf189a --- /dev/null +++ b/l4/pkg/ldscripts/kip_addr.c @@ -0,0 +1,14 @@ +typedef unsigned long l4_umword_t; + +typedef struct l4re_elf_aux_mword_t +{ + l4_umword_t type; + l4_umword_t length; + l4_umword_t value; +} l4re_elf_aux_mword_t; + +extern char const __L4_KIP_ADDR__[]; + +static __attribute__((used, section(".rol4re_elf_aux"))) l4re_elf_aux_mword_t const kip_addr + = { 4, sizeof(l4re_elf_aux_mword_t), (l4_umword_t)__L4_KIP_ADDR__ }; + diff --git a/l4/pkg/ldso/ldso/Makefile b/l4/pkg/ldso/ldso/Makefile index e45bed896..4c51cce44 100644 --- a/l4/pkg/ldso/ldso/Makefile +++ b/l4/pkg/ldso/ldso/Makefile @@ -2,6 +2,7 @@ PKGDIR ?= .. L4DIR ?= $(PKGDIR)/../.. CON_DIR := $(PKGDIR)/../uclibc/lib/contrib/uclibc/ldso +PTH_DIR := $(PKGDIR)/../uclibc/lib/libpthread DIR_amd64 := x86_64 DIR_x86 := i386 @@ -17,7 +18,9 @@ PRIVATE_INCDIR-x86 := $(CON_DIR)/../libc PRIVATE_INCDIR := $(PRIVATE_INCDIR-$(ARCH)) \ $(CON_DIR)/ldso/$(DIR_$(ARCH)) \ $(SRC_DIR) \ - $(CON_DIR)/include + $(CON_DIR)/include \ + $(PTH_DIR)/src \ + $(PTH_DIR)/src/sysdeps/$(DIR_$(ARCH)) TARGET := libld-l4.so @@ -32,6 +35,10 @@ CPPFLAGS := -DNOT_IN_libc -DIS_IN_rtld \ -D__LDSO_SEARCH_INTERP_PATH__=1 \ -DIS_IN_rtld -D__LIBDL_SHARED__ -DSHARED +DEFINES_x86-l4f += -DUSE_TLS=1 -DUSE___THREAD=1 + + + LDFLAGS = -Bsymbolic -Bstatic --warn-common --sort-common \ --no-undefined -e _start -z defs -z now \ --discard-locals --discard-all \ diff --git a/l4/pkg/ldso/ldso/vfs.cc b/l4/pkg/ldso/ldso/vfs.cc index 1025cc45b..c23df8da4 100644 --- a/l4/pkg/ldso/ldso/vfs.cc +++ b/l4/pkg/ldso/ldso/vfs.cc @@ -67,7 +67,7 @@ struct dyn_elf { }; extern struct dyn_elf *_dl_symbol_tables; -extern "C" char * _dl_lookup_hash(const char * name, struct dyn_elf * rpnt, +extern "C" char * _dl_find_hash(const char * name, struct dyn_elf * rpnt, struct elf_resolve *mytpnt, int type_class, struct elf_resolve **tpntp); @@ -97,7 +97,7 @@ namespace Vfs_config { { if (!_dl_open) { - _dl_open = (Dl_open*)_dl_lookup_hash("dlopen", _dl_symbol_tables, NULL, ELF_RTYPE_CLASS_PLT, NULL); + _dl_open = (Dl_open*)_dl_find_hash("dlopen", _dl_symbol_tables, NULL, ELF_RTYPE_CLASS_PLT, NULL); if (!_dl_open) return -1; } diff --git a/l4/pkg/ldso/libdl/Makefile b/l4/pkg/ldso/libdl/Makefile index 5992f8799..93dfad382 100644 --- a/l4/pkg/ldso/libdl/Makefile +++ b/l4/pkg/ldso/libdl/Makefile @@ -4,6 +4,7 @@ L4DIR ?= $(PKGDIR)/../.. PC_FILENAME := libdl CON_DIR := $(PKGDIR)/../uclibc/lib/contrib/uclibc +PTH_DIR := $(PKGDIR)/../uclibc/lib/libpthread DIR_amd64 := x86_64 DIR_x86 := i386 @@ -19,7 +20,9 @@ PRIVATE_INCDIR-x86 := $(CON_DIR)/libc PRIVATE_INCDIR := $(PRIVATE_INCDIR-$(ARCH)) \ $(CON_DIR)/ldso/ldso/$(DIR_$(ARCH)) \ $(SRC_DIR) \ - $(CON_DIR)/ldso/include + $(CON_DIR)/ldso/include \ + $(PTH_DIR)/src \ + $(PTH_DIR)/src/sysdeps/$(DIR_$(ARCH)) TARGET := libdl.a libdl.so @@ -32,6 +35,7 @@ CPPFLAGS := -DNOT_IN_libc -DIS_IN_libdl \ -include libc-symbols.h -DUCLIBC_LDSO=\"libld-l4.so\" \ -DUCLIBC_RUNTIME_PREFIX=\"/\" +DEFINES_x86-l4f += -DUSE_TLS=1 -DUSE___THREAD=1 LDFLAGS = -lld-l4 #LDFLAGS = -fini dl_cleanup diff --git a/l4/pkg/lib_vt100/Control b/l4/pkg/lib_vt100/Control index 4446cf5c2..6f18f2ef5 100644 --- a/l4/pkg/lib_vt100/Control +++ b/l4/pkg/lib_vt100/Control @@ -1,3 +1,3 @@ provides: lib_vt100 -requires: l4sys libc_r +requires: l4sys libc Maintainer: frenzel@os.inf.tu-dresden.de diff --git a/l4/pkg/libbsd-full/Control b/l4/pkg/libbsd-full/Control index a089d0007..9407baaa1 100644 --- a/l4/pkg/libbsd-full/Control +++ b/l4/pkg/libbsd-full/Control @@ -1,4 +1,4 @@ provides: libbsd-full -requires: libc_r libbsd-lite +requires: libc libbsd-lite source-pkg: libbsd maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/libc_backends/Control b/l4/pkg/libc_backends/Control index a7b6e72b8..dbe623e88 100644 --- a/l4/pkg/libc_backends/Control +++ b/l4/pkg/libc_backends/Control @@ -1,5 +1,5 @@ -Provides: libc_be_mem libc_be_file_ns libc_be_socket_noop libc_be_l4re - libc_support_misc libc_be_fs_noop libc_be_math libc_be_l4refile - libc_be_minimal_log_io +Provides: libc_be_socket_noop libc_be_l4re libc_support_misc + libc_be_fs_noop libc_be_math libc_be_l4refile + libc_be_minimal_log_io libmount Requires: l4re libsupc++ libl4re-vfs Maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/libc_backends/lib/l4re_file/file.cc b/l4/pkg/libc_backends/lib/l4re_file/file.cc index fc4f2a8a0..46a273c40 100644 --- a/l4/pkg/libc_backends/lib/l4re_file/file.cc +++ b/l4/pkg/libc_backends/lib/l4re_file/file.cc @@ -52,7 +52,6 @@ ssize_t write(int fd, const void *buf, size_t count) return writev(fd, &iov, 1); } - static void copy_stat64_to_stat(struct stat *buf, struct stat64 *sb64) { memset(buf, 0, sizeof(*buf)); @@ -489,6 +488,8 @@ int select(int nfds, fd_set *readfds, fd_set *writefds, L4B_REDIRECT_2(int, fstat64, int, struct stat64 *) L4B_REDIRECT_3(ssize_t, readv, int, const struct iovec *, int) L4B_REDIRECT_3(ssize_t, writev, int, const struct iovec *, int) +L4B_REDIRECT_4(ssize_t, preadv, int, const struct iovec *, int, off_t) +L4B_REDIRECT_4(ssize_t, pwritev, int, const struct iovec *, int, off_t) L4B_REDIRECT_3(__off64_t, lseek64, int, __off64_t, int) L4B_REDIRECT_2(int, ftruncate64, int, off64_t) L4B_REDIRECT_1(int, fsync, int) @@ -550,6 +551,24 @@ extern "C" int fchdir(int fd) L4_NOTHROW return -1; } +extern "C" +ssize_t pread64(int fd, void *buf, size_t count, off64_t offset) +{ + struct iovec iov; + iov.iov_base = buf; + iov.iov_len = count; + return preadv(fd, &iov, 1, offset); +} + +extern "C" +ssize_t pwrite64(int fd, const void *buf, size_t count, off64_t offset) +{ + struct iovec iov; + iov.iov_base = const_cast(buf); + iov.iov_len = count; + return pwritev(fd, &iov, 1, offset); +} + extern "C" char *getcwd(char *buf, size_t size) L4_NOTHROW { unsigned len_cwd = strlen(_current_working_dir) + 1; diff --git a/l4/pkg/libc_backends/lib/minimal_io/be.cc b/l4/pkg/libc_backends/lib/minimal_io/be.cc index 3a4bf3159..a43c5b597 100644 --- a/l4/pkg/libc_backends/lib/minimal_io/be.cc +++ b/l4/pkg/libc_backends/lib/minimal_io/be.cc @@ -27,6 +27,11 @@ extern "C" ssize_t read(int, void *, size_t) L4_NOTHROW return -1; } +extern "C" __off_t lseek(int, __off_t, int) L4_NOTHROW +{ + return -1; +} + extern "C" __off64_t lseek64(int, __off64_t, int) L4_NOTHROW { return -1; diff --git a/l4/pkg/libc_be_stdin/lib/src/stdin.cc b/l4/pkg/libc_be_stdin/lib/src/stdin.cc index 1b3b2eec1..6ff2c74cf 100644 --- a/l4/pkg/libc_be_stdin/lib/src/stdin.cc +++ b/l4/pkg/libc_be_stdin/lib/src/stdin.cc @@ -21,13 +21,15 @@ namespace { using namespace L4Re::Vfs; -class in_ops : public Be_file +class in_ops : public Be_file_stream { private: Event::Event _event; + L4::Cap _s; public: - in_ops() throw() : Be_file(), _event(this) {} + in_ops(L4::Cap v) throw() + : Be_file_stream(), _event(this), _s(v) {} ~in_ops() throw() {} int bind_irq(unsigned irq, L4::Cap const &irq_cap) throw() @@ -43,7 +45,7 @@ public: if (len == 0) return -EINVAL; - int ret = L4Re::Env::env()->log()->read((char *)buf, len); + int ret = _s->read((char *)buf, len); if (ret > (int)len) ret = len; @@ -52,7 +54,7 @@ public: // nothing read, read needs to block _event.wait(); - ret = L4Re::Env::env()->log()->read((char *)buf, len); + ret = _s->read((char *)buf, len); if (ret > (int)len) ret = len; } @@ -69,15 +71,20 @@ public: struct termios *t = va_arg(args, struct termios *); - // XXX: well, we're cheating, get this from the other side! - - t->c_iflag = 0; - t->c_oflag = 0; // output flags - t->c_cflag = 0; // control flags - - t->c_lflag = 0; // local flags + l4_vcon_attr_t l4a; + if (!l4_error(_s->get_attr(&l4a))) + { + t->c_iflag = l4a.i_flags; + t->c_oflag = l4a.o_flags; // output flags + t->c_cflag = 0; // control flags + t->c_lflag = l4a.l_flags; // local flags + } + else + t->c_iflag = t->c_oflag = t->c_cflag = t->c_lflag = 0; +#if 0 //t->c_lflag |= ECHO; // if term->echo t->c_lflag |= ICANON; // if term->term_mode == VT100MODE_COOKED +#endif t->c_cc[VEOF] = CEOF; t->c_cc[VEOL] = _POSIX_VDISABLE; @@ -97,7 +104,6 @@ public: t->c_cc[VTIME] = 0; //printf("TCGETS: c_lflags = %08x\n", t->c_lflag); - } return 0; @@ -107,11 +113,17 @@ public: case TCSETSF: { //vt100_tcsetattr(term, (struct termios *)argp); - //struct termios *t = va_arg(args, struct termios *); + struct termios *t = va_arg(args, struct termios *); //XXX: probably we need to get this over to the other side! //printf("TCSETS*: c_lflags = %08x\n", t->c_lflag); + + l4_vcon_attr_t l4a; + l4a.i_flags = t->c_iflag; + l4a.o_flags = t->c_oflag; // output flags + l4a.l_flags = t->c_lflag; // local flags + _s->set_attr(&l4a); } return 0; @@ -134,7 +146,7 @@ public: static void get_in_ops() __attribute__((constructor)); static void get_in_ops() { - static in_ops _myops; + static in_ops _myops(L4Re::Env::env()->log()); _myops.add_ref(); // prevent the static object from beeing deleted L4Re::Vfs::vfs_ops->set_fd(STDIN_FILENO, cxx::ref_ptr(&_myops)); } diff --git a/l4/pkg/libevent/lib/src/Makefile b/l4/pkg/libevent/lib/src/Makefile index c1cdf98ea..ed2e02839 100644 --- a/l4/pkg/libevent/lib/src/Makefile +++ b/l4/pkg/libevent/lib/src/Makefile @@ -1,7 +1,8 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. -TARGET = libevent.a libevent.so -SRC_CC = event.cc +TARGET = libevent.a libevent.so +SRC_CC = event.cc +REQUIRES_LIBS = libpthread include $(L4DIR)/mk/lib.mk diff --git a/l4/pkg/libgomp/Control b/l4/pkg/libgomp/Control index 4741f10f4..b6eefdc15 100644 --- a/l4/pkg/libgomp/Control +++ b/l4/pkg/libgomp/Control @@ -1,3 +1,3 @@ provides: libgomp -requires: libc_r +requires: libc libpthread maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/libgomp/lib/build/Makefile b/l4/pkg/libgomp/lib/build/Makefile index d244fd894..deefb046f 100644 --- a/l4/pkg/libgomp/lib/build/Makefile +++ b/l4/pkg/libgomp/lib/build/Makefile @@ -14,7 +14,6 @@ ifneq ($(SYSTEM),) TARGET = libgomp.a endif endif -L4_MULTITHREADED = y PRIVATE_INCDIR = $(PKGDIR)/lib/contrib/gcc-4.3/libgomp \ $(PKGDIR)/lib/contrib/gcc-4.3/libgomp/config/posix \ @@ -27,6 +26,7 @@ vpath %.c $(PKGDIR)/lib/contrib/gcc-4.3/libgomp \ SRC_C = affinity.c alloc.c bar.c barrier.c critical.c env.c error.c \ fortran.c iter.c lock.c loop.c mutex.c ordered.c parallel.c proc.c \ sections.c sem.c single.c team.c time.c work.c +REQUIRES_LIBS = libpthread include $(L4DIR)/mk/lib.mk diff --git a/l4/pkg/libio-io/lib/src/io.cc b/l4/pkg/libio-io/lib/src/io.cc index 5b1bc5596..646ee2192 100644 --- a/l4/pkg/libio-io/lib/src/io.cc +++ b/l4/pkg/libio-io/lib/src/io.cc @@ -8,8 +8,6 @@ * GNU Lesser General Public License 2.1. * Please see the COPYING-LGPL-2.1 file for details. */ -#include -#include #include #include #include @@ -38,15 +36,15 @@ namespace { /*********************************************************************** * Init ***********************************************************************/ +static Cap _vbus(Cap::No_init); static Cap &vbus() { - static Cap _vbus; return _vbus; } +static Cap _icu(Cap::No_init); static Cap &icu() { - static Cap _icu; return _icu; } @@ -55,44 +53,39 @@ static Cap &icu() extern "C" void __attribute__((__used__)) __internal_l4io_init() { - try - { - L4::Cap rm = L4Re::Env::env()->rm(); + L4::Cap rm = L4Re::Env::env()->rm(); - vbus() = L4Re::Env::env()->get_cap("vbus"); - if (!vbus().is_valid()) - { - printf("libio: Warning: Query of 'vbus' failed!\n"); - return; - } + vbus() = L4Re::Env::env()->get_cap("vbus"); + if (!vbus().is_valid()) + { + printf("libio: Warning: Query of 'vbus' failed!\n"); + return; + } - l4vbus_device_handle_t handle = 0; - int ret = l4vbus_get_device_by_hid(vbus().cap(), 0, &handle, "L40009", - L4VBUS_MAX_DEPTH, 0); - if (ret) - { - //printf("libio: Warning: Finding 'icu' in system bus failed with '%s'\n", - // l4sys_errtostr(ret)); - return; - } - - icu() = L4Re::chkcap(L4Re::Util::cap_alloc.alloc(), - "allocating ICU cap"); - - ret = l4vbus_vicu_get_cap(vbus().cap(), handle, icu().cap()); - if (ret) - { - printf("libio: Warning: Getting 'icu' device failed.\n"); - L4Re::Util::cap_alloc.free(icu()); - icu().invalidate(); - } + l4vbus_device_handle_t handle = 0; + int ret = l4vbus_get_device_by_hid(vbus().cap(), 0, &handle, "L40009", + L4VBUS_MAX_DEPTH, 0); + if (ret) + { + printf("libio: Warning: Finding 'icu' in system bus failed with '%s'\n", + l4sys_errtostr(ret)); + return; } - catch (L4::Runtime_error const &e) + + icu() = L4Re::Util::cap_alloc.alloc(); + if (!icu().is_valid()) { - L4::cerr << e; - printf("Libio caught exception\n"); + printf("libio: cannot allocate ICU cap\n"); return; } + + ret = l4vbus_vicu_get_cap(vbus().cap(), handle, icu().cap()); + if (ret) + { + printf("libio: Warning: Getting 'icu' device failed.\n"); + L4Re::Util::cap_alloc.free(icu()); + icu().invalidate(); + } } L4_DECLARE_CONSTRUCTOR(__internal_l4io_init, INIT_PRIO_LIBIO_INIT); diff --git a/l4/pkg/libirq/Control b/l4/pkg/libirq/Control index 09a09718e..9849d6b40 100644 --- a/l4/pkg/libirq/Control +++ b/l4/pkg/libirq/Control @@ -1,3 +1,3 @@ provides: libirq -requires: l4re libc_r libio +requires: l4re libc libio libpthread maintainer: adam@os.inf.tu-dresden.de diff --git a/l4/pkg/libirq/lib/src/Makefile b/l4/pkg/libirq/lib/src/Makefile index e89ada4f8..81610aec8 100644 --- a/l4/pkg/libirq/lib/src/Makefile +++ b/l4/pkg/libirq/lib/src/Makefile @@ -1,8 +1,8 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. -TARGET = libirq.a +TARGET = libirq.a libirq.so SRC_CC = irq.cc -REQUIRES_LIBS = libio +REQUIRES_LIBS = libio libpthread include $(L4DIR)/mk/lib.mk diff --git a/l4/pkg/libloader/include/elf b/l4/pkg/libloader/include/elf index 87eb13fc9..893ca9f0c 100644 --- a/l4/pkg/libloader/include/elf +++ b/l4/pkg/libloader/include/elf @@ -135,27 +135,6 @@ struct Phdr_load_min_max } }; -struct Phdr_kip -{ - mutable l4_addr_t kip; - - explicit Phdr_kip(l4_addr_t kip_default) - : kip(kip_default) - {} - - void operator () (Elf_phdr const &h) const - { - switch (h.type()) - { - case PT_L4_KIP: - kip = h.paddr(); - break; - default: - break; - } - } -}; - template< typename Dbg > struct Phdr_print { @@ -237,17 +216,19 @@ struct Phdr_load }; template< typename App_model > -struct Phdr_l4re_elf_aux_stack +struct Phdr_l4re_elf_aux_infos { mutable l4_size_t stack_size; mutable l4_addr_t stack_addr; + mutable l4_addr_t kip_addr; typedef typename App_model::Const_dataspace Const_dataspace; App_model const *mm; Const_dataspace bin; - explicit Phdr_l4re_elf_aux_stack(App_model const *mm, Const_dataspace bin) - : stack_size(0x8000), stack_addr(0x80000000), mm(mm), bin(bin) + explicit Phdr_l4re_elf_aux_infos(App_model const *mm, Const_dataspace bin, + l4_addr_t kip_addr) + : stack_size(0x8000), stack_addr(0x80000000), kip_addr(kip_addr), mm(mm), bin(bin) {} void operator () (Elf_phdr const &h) const @@ -278,6 +259,12 @@ struct Phdr_l4re_elf_aux_stack stack_addr = v->value; break; } + case L4RE_ELF_AUX_T_KIP_ADDR: + { + l4re_elf_aux_mword_t const *v = (l4re_elf_aux_mword_t const *)e; + kip_addr = v->value; + break; + } default: break; } @@ -408,32 +395,23 @@ public: if (!eh->is_valid()) { - ldr.printf("file is not an ELF binary\n"); chksys(-L4_EINVAL, "not an ELF binary"); } - - Phdr_kip stack_kip(mm->prog_info()->kip); -#if 0 - Phdr_kip stack_kip(info->stack.target_addr(), info->stack.stack_size(), - info->kip); -#endif - - eh->iterate_phdr(stack_kip); - - mm->prog_info()->kip = stack_kip.kip; - - Phdr_l4re_elf_aux_stack stack_info(mm, bin); - + Phdr_l4re_elf_aux_infos stack_info(mm, bin, mm->prog_info()->kip); eh->iterate_phdr(stack_info); mm->stack()->set_target_stack(stack_info.stack_addr, stack_info.stack_size); + mm->prog_info()->kip = stack_info.kip_addr; + ldr.printf(" STACK: %lx (%zx) KIP: %lx\n", stack_info.stack_addr, + stack_info.stack_size, stack_info.kip_addr); + ldr.printf(" PHDRs: type offset\tpaddr\tvaddr\tfilesz\tmemsz\trights\n"); eh->iterate_phdr(Phdr_print(ldr)); mm->local_detach_ds((l4_addr_t)eh, L4_PAGESIZE); } - void load(App_model *mm, Const_dataspace bin, l4_addr_t *base, + void load(App_model *mm, Const_dataspace bin, l4_addr_t *base, bool interpreter, Dbg_log const &ldr) { using L4Re::chksys; @@ -480,6 +458,13 @@ public: Phdr_dynamic dyn_info(mm, bin, _base); eh->iterate_phdr(dyn_info); + if (!interpreter && dyn_info.phdrs) + { + Prog_start_info *i = mm->prog_info(); + i->dyn_phdrs = dyn_info.phdrs; + i->dyn_num_phdrs = eh->num_phdrs(); + } + // Load the interpreter if (dyn_info.is_dynamic) { @@ -488,13 +473,11 @@ public: Const_dataspace file = mm->open_file(dyn_info.interp); l4_addr_t base = 0x400000; - load(mm, file, &base, ldr); + load(mm, file, &base, true, ldr); Prog_start_info *i = mm->prog_info(); i->dyn_exec_entry = eh->entry() + _base; - i->dyn_phdrs = dyn_info.phdrs; - i->dyn_num_phdrs = eh->num_phdrs(); i->dyn_interp_base = base; } @@ -506,7 +489,7 @@ public: void load(App_model *mm, Const_dataspace bin, Dbg_log const &ldr) { - load(mm, bin, 0, ldr); + load(mm, bin, 0, false, ldr); } diff --git a/l4/pkg/libloader/include/loader b/l4/pkg/libloader/include/loader index 12695b905..4f557030e 100644 --- a/l4/pkg/libloader/include/loader +++ b/l4/pkg/libloader/include/loader @@ -179,9 +179,6 @@ Loader::launch(App_model *am, Const_dataspace bin, Dbg_ const void const *l4aux_ptr; { - // add all the VMAs to the region map and stack - char const *before_vma = stack.ptr(); - // load the program into memory, prepare all the VMAs // and stuff on the application stack load(am, bin, dbg); @@ -190,7 +187,7 @@ Loader::launch(App_model *am, Const_dataspace bin, Dbg_ const am->prog_reserve_utcb_area(); am->prog_attach_kip(); - l4aux_ptr = am->generate_l4aux(before_vma, am->argv.a0); + l4aux_ptr = am->generate_l4aux(am->argv.a0); } L4Re::Env *env = am->add_env(); @@ -230,16 +227,19 @@ Loader::launch(App_model *am, Const_dataspace bin, Dbg_ const stack.push(l4_umword_t(0)); stack.push(l4_umword_t(AT_EGID)); - if (am->prog_info()->dyn_exec_entry) + if (am->prog_info()->dyn_phdrs) { - stack.push(l4_umword_t(am->prog_info()->dyn_exec_entry)); - stack.push(l4_umword_t(AT_ENTRY)); - stack.push(l4_umword_t(am->prog_info()->dyn_phdrs)); stack.push(l4_umword_t(AT_PHDR)); stack.push(l4_umword_t(am->prog_info()->dyn_num_phdrs)); stack.push(l4_umword_t(AT_PHNUM)); + } + + if (am->prog_info()->dyn_exec_entry) + { + stack.push(l4_umword_t(am->prog_info()->dyn_exec_entry)); + stack.push(l4_umword_t(AT_ENTRY)); stack.push(l4_umword_t(am->prog_info()->dyn_interp_base)); stack.push(l4_umword_t(AT_BASE)); diff --git a/l4/pkg/libloader/include/remote_app_model b/l4/pkg/libloader/include/remote_app_model index ff3a367c4..29c19205c 100644 --- a/l4/pkg/libloader/include/remote_app_model +++ b/l4/pkg/libloader/include/remote_app_model @@ -96,9 +96,8 @@ public: L4::Cap prog_kip_ds() const { return L4::Cap(Caps::Kip_cap << L4_CAP_SHIFT); } - void const *generate_l4aux(char const *before_vma, char const *name) + void const *generate_l4aux(char const *name) { - this->_stack.set_ma_cnt(before_vma); this->_stack.push(l4_umword_t(this->prog_info()->ldr_flags)); this->_stack.push(l4_umword_t(this->prog_info()->l4re_dbg)); this->_stack.push(l4_umword_t(prog_kip_ds().cap())); diff --git a/l4/pkg/libloader/include/remote_mem b/l4/pkg/libloader/include/remote_mem index b73031f4b..7b90bd737 100644 --- a/l4/pkg/libloader/include/remote_mem +++ b/l4/pkg/libloader/include/remote_mem @@ -32,7 +32,6 @@ public: explicit Remote_stack(char *p = 0) : _target_top(0), _top(p), _p(p) {} char *ptr() const { return _p; } void ptr(char *p) { _p = p; } - void set_ma_cnt(char const *before_vma); void set_target_stack(l4_addr_t addr, l4_size_t size) { _target_top = addr + size; _size = size; } @@ -85,14 +84,6 @@ private: }; -template -void -Remote_stack::set_ma_cnt(char const *before_vma) -{ - push((l4_umword_t)((before_vma - _p) / sizeof(l4re_mem_area_t))); -} - - template char const * Remote_stack::push_str(char const *s, size_t len) diff --git a/l4/pkg/libsdl/lib/build/Makefile b/l4/pkg/libsdl/lib/build/Makefile index 417e84b42..8ba459b3e 100644 --- a/l4/pkg/libsdl/lib/build/Makefile +++ b/l4/pkg/libsdl/lib/build/Makefile @@ -4,7 +4,7 @@ L4DIR ?= $(PKGDIR)/../.. TARGET = libSDL.a CONTRIB_INCDIR = libsdl -REQUIRES_LIBS = libc_support_misc l4re_c-util +REQUIRES_LIBS = libc_support_misc l4re_c-util libpthread SRC_C = $(patsubst $(PKGDIR)/%.c, %.c, $(wildcard $(PKGDIR)/contrib/src/*.c)) \ $(patsubst $(PKGDIR)/%.c, %.c, $(wildcard $(PKGDIR)/contrib/src/events/*.c)) \ diff --git a/l4/pkg/libstdc++-headers/Makefile b/l4/pkg/libstdc++-headers/Makefile index 5f65d02ca..202fdeb9d 100644 --- a/l4/pkg/libstdc++-headers/Makefile +++ b/l4/pkg/libstdc++-headers/Makefile @@ -2,7 +2,7 @@ PKGDIR ?= . L4DIR ?= $(PKGDIR)/../.. STDCXX_PKG_DIR ?= $(PKGDIR_ABS)/../libstdc++-v3 -include $(L4DIR)/mk/subdir.mk +include $(L4DIR)/mk/Makeconf include $(STDCXX_PKG_DIR)/contrib.inc TARGET := include include-$(STDCXX_CONTRIB_VERSION) include-std diff --git a/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h index eeb8891fc..33cb1c77a 100644 --- a/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h +++ b/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h @@ -15,8 +15,10 @@ #define _GLIBCXX_GTHREAD_USE_WEAK 1 #endif +#if !defined(L4_MINIMAL_LIBC) #define _GLIBCXX_HAVE_MBSTATE_T 1 #define _GLIBCXX_HAVE_WCHAR_H 1 +#endif // Macros for visibility. @@ -276,7 +278,7 @@ _GLIBCXX_END_NAMESPACE #define _GLIBCXX_HOSTED 1 -#ifdef L4_THREAD_SAFE +#ifndef L4_MINIMAL_LIBC # define _GLIBCXX__PTHREADS 1 #endif #define _GLIBCXX_HAVE_UNISTD_H 1 diff --git a/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h index 220842bd2..de3492e1b 100644 --- a/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h +++ b/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h @@ -15,9 +15,10 @@ #define _GLIBCXX_GTHREAD_USE_WEAK 1 #endif +#if !defined(L4_MINIMAL_LIBC) #define _GLIBCXX_HAVE_MBSTATE_T 1 #define _GLIBCXX_HAVE_WCHAR_H 1 - +#endif // Macros for visibility. // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY @@ -275,7 +276,7 @@ _GLIBCXX_END_NAMESPACE #define _GLIBCXX_HOSTED 1 -#ifdef L4_THREAD_SAFE +#ifndef L4_MINIMAL_LIBC # define _GLIBCXX__PTHREADS 1 #endif #define _GLIBCXX_HAVE_UNISTD_H 1 @@ -516,8 +517,10 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ /* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */ +#if !defined(L4_MINIMAL_LIBC) /* Define if mbstate_t exists in wchar.h. */ #define _GLIBCXX_HAVE_MBSTATE_T 1 +#endif /* Define to 1 if you have the header file. */ #define _GLIBCXX_HAVE_MEMORY_H 1 @@ -675,6 +678,7 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ #define _GLIBCXX_HAVE_UNISTD_H 1 +#if !defined(L4_MINIMAL_LIBC) /* Defined if vfwscanf exists. */ #define _GLIBCXX_HAVE_VFWSCANF 1 @@ -686,6 +690,7 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ #define _GLIBCXX_HAVE_WCHAR_H 1 +#endif /* Defined if wcstof exists. */ //#define _GLIBCXX_HAVE_WCSTOF 1 @@ -1046,8 +1051,10 @@ _GLIBCXX_END_NAMESPACE namespace std::tr1. */ #define _GLIBCXX_USE_C99_STDINT_TR1 1 +#if !defined(L4_MINIMAL_LIBC) /* Define if LFS support is available. */ #define _GLIBCXX_USE_LFS 1 +#endif /* Define if code specialized for long long should be used. */ #define _GLIBCXX_USE_LONG_LONG 1 diff --git a/l4/pkg/libstdc++-headers/include-4.5/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.5/bits/c++config.h index 999f8426e..dd00d2688 100644 --- a/l4/pkg/libstdc++-headers/include-4.5/bits/c++config.h +++ b/l4/pkg/libstdc++-headers/include-4.5/bits/c++config.h @@ -381,10 +381,10 @@ _GLIBCXX_END_NAMESPACE #define _GLIBCXX_GTHREAD_USE_WEAK 1 #endif -#ifdef L4_THREAD_SAFE -# define _GLIBCXX__PTHREADS 1 -#else +#ifdef L4_MINIMAL_LIBC # define _GLIBCXX__PTHREADS 0 +#else +# define _GLIBCXX__PTHREADS 1 #endif #define _GLIBCXX__PTHREADS95 0 #define _GLIBCXX__DCE_THREADS 0 @@ -655,8 +655,10 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ /* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */ +#if !defined(L4_MINIMAL_LIBC) /* Define if mbstate_t exists in wchar.h. */ #define _GLIBCXX_HAVE_MBSTATE_T 1 +#endif /* Define to 1 if you have the header file. */ //#define _GLIBCXX_HAVE_MEMORY_H 1 @@ -808,6 +810,7 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ #define _GLIBCXX_HAVE_UNISTD_H 1 +#if !defined(L4_MINIMAL_LIBC) /* Defined if vfwscanf exists. */ #define _GLIBCXX_HAVE_VFWSCANF 1 @@ -825,6 +828,7 @@ _GLIBCXX_END_NAMESPACE /* Define to 1 if you have the header file. */ #define _GLIBCXX_HAVE_WCTYPE_H 1 +#endif /* Define if writev is available in . */ #define _GLIBCXX_HAVE_WRITEV 1 @@ -1180,8 +1184,10 @@ _GLIBCXX_END_NAMESPACE /* Defined if gettimeofday is available. */ //#define _GLIBCXX_USE_GETTIMEOFDAY 1 +#if !defined(L4_MINIMAL_LIBC) /* Define if LFS support is available. */ #define _GLIBCXX_USE_LFS 1 +#endif /* Define if code specialized for long long should be used. */ #define _GLIBCXX_USE_LONG_LONG 1 diff --git a/l4/pkg/libstdc++-headers/include-4.6/Makefile b/l4/pkg/libstdc++-headers/include-4.6/Makefile new file mode 100644 index 000000000..3c58a8b04 --- /dev/null +++ b/l4/pkg/libstdc++-headers/include-4.6/Makefile @@ -0,0 +1,8 @@ +PKGDIR ?= .. +L4DIR ?= $(PKGDIR)/../.. + +CONTRIB_HEADERS = y +INCSRC_DIR = $(SRC_DIR) +PKGNAME = libstdc++-v3 + +include $(L4DIR)/mk/include.mk diff --git a/l4/pkg/libstdc++-headers/include-4.6/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.6/bits/c++config.h new file mode 100644 index 000000000..910b8da4e --- /dev/null +++ b/l4/pkg/libstdc++-headers/include-4.6/bits/c++config.h @@ -0,0 +1,1580 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +// 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20110508 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +#ifndef _GLIBCXX_NOTHROW +# ifdef __cplusplus +# define _GLIBCXX_NOTHROW throw() +# else +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# ifdef __GXX_EXPERIMENTAL_CXX0X__ +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +namespace std +{ + inline namespace _6 { } + + namespace rel_ops { inline namespace _6 { } } + + namespace tr1 + { + inline namespace _6 { } + namespace placeholders { inline namespace _6 { } } + namespace regex_constants { inline namespace _6 { } } + namespace __detail { inline namespace _6 { } } + } + + namespace decimal { inline namespace _6 { } } + + namespace chrono { inline namespace _6 { } } + namespace placeholders { inline namespace _6 { } } + namespace regex_constants { inline namespace _6 { } } + namespace this_thread { inline namespace _6 { } } + + namespace __detail { inline namespace _6 { } } + namespace __regex { inline namespace _6 { } } +} + +namespace __gnu_cxx +{ + inline namespace _6 { } + namespace __detail { inline namespace _6 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace _6 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace _6 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + } _GLIBCXX_END_NAMESPACE_VERSION +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE 1 -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + } _GLIBCXX_END_NAMESPACE_VERSION +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +#define _GLIBCXX_HAVE_ACOSL 1 + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +#define _GLIBCXX_HAVE_ASINL 1 + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +#define _GLIBCXX_HAVE_ATAN2L 1 + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +#define _GLIBCXX_HAVE_ATANL 1 + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +#define _GLIBCXX_HAVE_CEILL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +#define _GLIBCXX_HAVE_COSHL 1 + +/* Define to 1 if you have the `cosl' function. */ +#define _GLIBCXX_HAVE_COSL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_DLFCN_H 1 + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_ENDIAN_H 1 + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_EXECINFO_H 1 + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +#define _GLIBCXX_HAVE_EXPL 1 + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +#define _GLIBCXX_HAVE_FABSL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FENV_H 1 + +/* Define to 1 if you have the `finite' function. */ +#define _GLIBCXX_HAVE_FINITE 1 + +/* Define to 1 if you have the `finitef' function. */ +#define _GLIBCXX_HAVE_FINITEF 1 + +/* Define to 1 if you have the `finitel' function. */ +#define _GLIBCXX_HAVE_FINITEL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +#define _GLIBCXX_HAVE_FLOORL 1 + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +#define _GLIBCXX_HAVE_FMODL 1 + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +#define _GLIBCXX_HAVE_FREXPL 1 + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gthr-default.h exists (meaning that threading support is + enabled). */ +//#define _GLIBCXX_HAVE_GTHR_DEFAULT 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +#define _GLIBCXX_HAVE_HYPOTF 1 + +/* Define to 1 if you have the `hypotl' function. */ +#define _GLIBCXX_HAVE_HYPOTL 1 + +/* Define if you have the iconv() function. */ +//#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_IEEEFP_H */ + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +#define _GLIBCXX_HAVE_ISINF 1 + +/* Define to 1 if you have the `isinff' function. */ +#define _GLIBCXX_HAVE_ISINFF 1 + +/* Define to 1 if you have the `isinfl' function. */ +#define _GLIBCXX_HAVE_ISINFL 1 + +/* Define to 1 if you have the `isnan' function. */ +#define _GLIBCXX_HAVE_ISNAN 1 + +/* Define to 1 if you have the `isnanf' function. */ +#define _GLIBCXX_HAVE_ISNANF 1 + +/* Define to 1 if you have the `isnanl' function. */ +#define _GLIBCXX_HAVE_ISNANL 1 + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +#define _GLIBCXX_HAVE_LDEXPL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LIBINTL_H 1 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 1 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 1 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 1 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 1 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +//#define _GLIBCXX_HAVE_LINUX_FUTEX 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +#define _GLIBCXX_HAVE_LOG10L 1 + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +#define _GLIBCXX_HAVE_LOGL 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */ + +#if !defined(L4_MINIMAL_LIBC) +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 +#endif + +/* Define to 1 if you have the header file. */ +//#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +#define _GLIBCXX_HAVE_MODF 1 + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +#define _GLIBCXX_HAVE_MODFL 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +//#define _GLIBCXX_HAVE_POLL 1 + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +#define _GLIBCXX_HAVE_POWL 1 + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `setenv' function. */ +#define _GLIBCXX_HAVE_SETENV 1 + +/* Define to 1 if you have the `sincos' function. */ +#define _GLIBCXX_HAVE_SINCOS 1 + +/* Define to 1 if you have the `sincosf' function. */ +#define _GLIBCXX_HAVE_SINCOSF 1 + +/* Define to 1 if you have the `sincosl' function. */ +#define _GLIBCXX_HAVE_SINCOSL 1 + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +#define _GLIBCXX_HAVE_SINHL 1 + +/* Define to 1 if you have the `sinl' function. */ +#define _GLIBCXX_HAVE_SINL 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +#define _GLIBCXX_HAVE_SQRTL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +#define _GLIBCXX_HAVE_STRERROR_L 1 + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +#define _GLIBCXX_HAVE_STRTOLD 1 + +/* Define if strxfrm_l is available in . */ +#define _GLIBCXX_HAVE_STRXFRM_L 1 + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +#define _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_IPC_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_SEM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_UIO_H 1 + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +#define _GLIBCXX_HAVE_TANHL 1 + +/* Define to 1 if you have the `tanl' function. */ +#define _GLIBCXX_HAVE_TANL 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +#ifdef ARCH_X86 +#define _GLIBCXX_HAVE_TLS 1 +#endif + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +#if !defined(L4_MINIMAL_LIBC) +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 +#endif /* L4_MINIMAL_LIBC */ + +/* Define if writev is available in . */ +#define _GLIBCXX_HAVE_WRITEV 1 + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define as const if the declaration of iconv() needs const. */ +#define _GLIBCXX_ICONV_CONST + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ +#if defined(ARCH_x86) || defined(ARCH_amd64) + +/* Define if builtin atomic operations for bool are supported on this host. */ +#define _GLIBCXX_ATOMIC_BUILTINS_1 1 + +/* Define if builtin atomic operations for short are supported on this host. + */ +#define _GLIBCXX_ATOMIC_BUILTINS_2 1 + +/* Define if builtin atomic operations for int are supported on this host. */ +#define _GLIBCXX_ATOMIC_BUILTINS_4 1 +#endif /* L4 atomics */ + +#if defined(ARCH_amd64) +/* Define if builtin atomic operations for long long are supported on this + host. */ +#define _GLIBCXX_ATOMIC_BUILTINS_8 1 +#endif /* L4 atomics */ + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define if a fully dynamic basic_string is wanted. */ +/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */ + +/* Define if gthreads library is available. */ +//#define _GLIBCXX_HAS_GTHREADS 1 + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +//#define _GLIBCXX_RES_LIMITS 1 + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +#define _GLIBCXX_SYMVER 1 + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +#define _GLIBCXX_SYMVER_GNU 1 + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +#define _GLIBCXX_USE_C99 1 + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +#define _GLIBCXX_USE_C99_COMPLEX 1 + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +#define _GLIBCXX_USE_C99_COMPLEX_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_FENV_TR1 1 + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +#define _GLIBCXX_USE_DECIMAL_FLOAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +#if !defined(L4_MINIMAL_LIBC) +/* Define if LFS support is available. */ +#define _GLIBCXX_USE_LFS 1 +#endif + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +//#define _GLIBCXX_USE_NLS 1 + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +#define _GLIBCXX_USE_RANDOM_TR1 1 + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if code specialized for wchar_t should be used. */ +//#define _GLIBCXX_USE_WCHAR_T 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/l4/pkg/libstdc++-headers/include-std/Makefile b/l4/pkg/libstdc++-headers/include-std/Makefile index 012ade0f4..2fdc07869 100644 --- a/l4/pkg/libstdc++-headers/include-std/Makefile +++ b/l4/pkg/libstdc++-headers/include-std/Makefile @@ -8,7 +8,9 @@ PKGNAME = libstdc++-v3 INCSRC_DIR = $(STDCXX_CONTRIB_DIR)/include TARGET = $(shell (cd $(INCSRC_DIR) && find . -type f -not -name 'Make*' -print)) -LIBSUPC_H := exception_defines.h exception new typeinfo cxxabi.h cxxabi-forced.h +LIBSUPC_H := exception new typeinfo +LIBSUPC_H-4.6_PLUS- := exception_defines.h cxxabi-forced.h +LIBSUPC_H-4.6_PLUS-y := bits/exception_defines.h bits/cxxabi_forced.h bits/hash_bytes.h ALLOCATOR_H := config/allocator/new_allocator_base.h CLOCALE_H := config/locale/generic/c_locale.h @@ -20,16 +22,17 @@ BASIC_FILE_H := config/io/basic_file_stdio.h CSTDIO_H := config/io/c_io_stdio.h CMATH_TCC := include/c_std/cmath.tcc -CTYPE_HEADERS := config/os/generic/* + # FIX BID: include $(L4DIR)/mk/include.mk include $(STDCXX_PKG_DIR)/contrib.inc ifeq ("$(STDCXX_0x)", "y") - LIBSUPC_H += initializer_list exception_ptr.h nested_exception.h + LIBSUPC_H += initializer_list + LIBSUPC_H-4.6_PLUS- += exception_ptr.h nested_exception.h + LIBSUPC_H-4.6_PLUS-y += bits/exception_ptr.h bits/nested_exception.h endif - STDCXX_CSTD_HEADERS := \ cassert cctype cerrno cfloat ciso646 climits clocale cmath csetjmp csignal \ cstdarg cstddef cstdio cstdlib cstring ctime cwchar cwctype cstdint @@ -37,21 +40,25 @@ STDCXX_CSTD_HEADERS := \ STDCXX_CSTD_HEADERS += $(patsubst std_%.h,%,$(notdir $(wildcard $(INCSRC_DIR)/std/*))) -STDCXX_STD_DIRS := std c_std c_global tr1 +STDCXX_STD_DIRS := std c_global c_std tr1 INSTALL_INCDIR_X = $(INSTALLDIR_LOCAL)/$(INSTALL_INC_PREFIX) SRCDIR_X = $(STDCXX_CONTRIB_DIR) +CTYPE_HEADERS := $(filter-out %/os_defines.h,$(wildcard $(SRCDIR_X)/config/os/generic/*)) -install_header = $(LN) -sf $(SRCDIR_X)/$(strip $(1)) $(INSTALL_INCDIR_X)/$(strip $(2)) +install_header_x = $(MKDIR) $(dir $(INSTALL_INCDIR_X)/$(strip $(2))) && $(LN) -sf $(call absfilename,$(strip $(1)) $(INSTALL_INCDIR_X)/$(strip $(2))) +install_header = $(MKDIR) $(dir $(INSTALL_INCDIR_X)/$(strip $(2))) && $(LN) -sf $(SRCDIR_X)/$(strip $(1)) $(INSTALL_INCDIR_X)/$(strip $(2)) -install_config_header = $(VERBOSE)$(call install_header, $(1), bits/$(strip $(2))) +install_config_header = $(call install_header, $(1), bits/$(strip $(2))) cpu_header = $(word 1,$(wildcard $(SRCDIR_X)/$(CPU_H_arch)/$(strip $(1)) $(SRCDIR_X)/$(CPU_H_generic)/$(strip $(1)))) install_cpu_header = $(VERBOSE)$(if $(call cpu_header,$(1)),$(LN) -sf $(call cpu_header,$(1)) $(INSTALL_INCDIR_X)/bits/$(strip $(1))) +LIBSUPC_H += $(foreach V,$(STDCXX_AVAILABLE_VERSIONS),$(LIBSUPC_H-$(V)_PLUS-$(STDCXX_CONTRIB_VERSION_$(V)_PLUS))) + LIBSUPC_HI = $(addprefix $(INSTALL_INCDIR_X)/, $(LIBSUPC_H)) STDCXX_CSTD_HEADERS_ABS = $(addprefix $(INSTALL_INCDIR_X)/, $(STDCXX_CSTD_HEADERS)) @@ -66,7 +73,7 @@ $(STDCXX_CSTD_HEADERS_ABS): %: $(INSTALL_INCDIR_X) $(LIBSUPC_HI): %: $(INSTALL_INCDIR_X) @$(INSTALL_LINK_MESSAGE) - $(VERBOSE)$(call install_header, libsupc++/$(notdir $@), $(notdir $@)) + $(VERBOSE)$(call install_header, libsupc++/$(notdir $@), $(patsubst $(INSTALL_INCDIR_X)/%,%,$@)) $(INSTALL_INCDIR_X): @$(INSTALL_LINK_MESSAGE) $(INSTALL_INCDIR_X) @@ -74,14 +81,14 @@ $(INSTALL_INCDIR_X): all:: $(INSTALL_INCDIR_X) $(LIBSUPC_HI) $(STDCXX_CSTD_HEADERS_ABS) @$(INSTALL_LINK_MESSAGE) - $(call install_config_header, $(ALLOCATOR_H), c++allocator.h) - $(call install_config_header, $(CLOCALE_H), c++locale.h) + $(VERBOSE)$(call install_config_header, $(ALLOCATOR_H), c++allocator.h) + $(VERBOSE)$(call install_config_header, $(CLOCALE_H), c++locale.h) $(call install_cpu_header, atomic_word.h) $(call install_cpu_header, cpu_defines.h) $(call install_cpu_header, cxxabi_tweaks.h) - $(call install_config_header, $(CTYPE_HEADERS), .) - $(call install_config_header, $(TIME_MEMBERS_H), time_members.h) - $(call install_config_header, $(MESSAGES_MEMBERS_H), messages_members.h) - $(call install_config_header, $(BASIC_FILE_H), basic_file.h) - $(call install_config_header, $(CSTDIO_H), c++io.h) - $(call install_config_header, $(CMATH_TCC), cmath.tcc) + $(VERBOSE)$(foreach H,$(CTYPE_HEADERS), $(call install_header_x, $(H), bits/$(notdir $(H))); ) + $(VERBOSE)$(call install_config_header, $(TIME_MEMBERS_H), time_members.h) + $(VERBOSE)$(call install_config_header, $(MESSAGES_MEMBERS_H), messages_members.h) + $(VERBOSE)$(call install_config_header, $(BASIC_FILE_H), basic_file.h) + $(VERBOSE)$(call install_config_header, $(CSTDIO_H), c++io.h) + $(VERBOSE)$(call install_config_header, $(CMATH_TCC), cmath.tcc) diff --git a/l4/pkg/libstdc++-headers/include/bits/os_defines.h b/l4/pkg/libstdc++-headers/include/bits/os_defines.h index 376a10c1e..856ff8a2a 100644 --- a/l4/pkg/libstdc++-headers/include/bits/os_defines.h +++ b/l4/pkg/libstdc++-headers/include/bits/os_defines.h @@ -2,6 +2,7 @@ // This keeps isanum, et al from being propagated as macros. #define __NO_CTYPE 1 +#define _GLIBCXX_GTHREAD_USE_WEAK 1 #include diff --git a/l4/pkg/libstdc++-v3-minimal/Control b/l4/pkg/libstdc++-v3-minimal/Control new file mode 100644 index 000000000..82276d890 --- /dev/null +++ b/l4/pkg/libstdc++-v3-minimal/Control @@ -0,0 +1,4 @@ +provides: libstdc++_minimal +requires: libsupc++_minimal libstdc++-headers +source-pkg: libstdc++-v3 +maintainer: warg@os.inf.tu-dresden.de diff --git a/l4/pkg/libstdc++-v3-minimal/Makefile b/l4/pkg/libstdc++-v3-minimal/Makefile new file mode 100644 index 000000000..5a85c770e --- /dev/null +++ b/l4/pkg/libstdc++-v3-minimal/Makefile @@ -0,0 +1,14 @@ +PKGDIR ?= . +L4DIR ?= $(PKGDIR)/../.. + +TARGET = libstdc++_minimal.a +PC_FILENAME = libstdc++_minimal +PC_LIBS = -lstdc++_minimal +REQUIRES_LIBS= libsupc++_minimal + +STDCXX_PKG_DIR = $(PKGDIR_ABS)/../libstdc++-v3 +DEFINES += -DL4_MINIMAL_LIBC + +include $(PKGDIR)/../libstdc++-v3/build/src/Makefile + +$(GENERAL_D_LOC): $(PKGDIR)/../libstdc++-v3/build/src/Makefile diff --git a/l4/pkg/libstdc++-v3/build/include/Makefile b/l4/pkg/libstdc++-v3/build/include/Makefile index 8848b2442..ab965b5d7 100644 --- a/l4/pkg/libstdc++-v3/build/include/Makefile +++ b/l4/pkg/libstdc++-v3/build/include/Makefile @@ -1,6 +1,8 @@ PKGDIR = ../.. L4DIR ?= $(PKGDIR)/../.. +$(error Tschüss) + CONTRIB_HEADERS = y INCSRC_DIR = $(PKGDIR_ABS)/contrib/libstdc++-v3/include TARGET = $(shell (cd $(INCSRC_DIR) && find . -type f -not -name 'Make*' -print)) @@ -17,7 +19,7 @@ BASIC_FILE_H := config/io/basic_file_stdio.h CSTDIO_H := config/io/c_io_stdio.h CMATH_TCC := include/c_std/cmath.tcc -CTYPE_HEADERS := config/os/generic/* +CTYPE_HEADERS := config/os/generic/ctype_base.h config/os/generic/ctype_inline.h config/os/generic/ctype_noninline.h # FIX BID: ARCH=x86 @@ -48,7 +50,7 @@ all:: $(LIBSUPC_HI) $(call install_config_header, $(CLOCALE_H), c++locale.h) $(call install_config_header, $(ATOMIC_WORD_H), atomic_word.h) $(call install_config_header, $(CPU_DEFINES_H), cpu_defines.h) - $(call install_config_header, $(CTYPE_HEADERS), .) +# $(call install_config_header, $(CTYPE_HEADERS), .) $(call install_config_header, $(TIME_MEMBERS_H), time_members.h) $(call install_config_header, $(MESSAGES_MEMBERS_H), messages_members.h) $(call install_config_header, $(CXX_ABI_TWEAKS_$(ARCH)), cxxabi_tweaks.h) diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile b/l4/pkg/libstdc++-v3/build/src/Makefile index 2b5860899..2d21d19e2 100644 --- a/l4/pkg/libstdc++-v3/build/src/Makefile +++ b/l4/pkg/libstdc++-v3/build/src/Makefile @@ -2,10 +2,10 @@ PKGDIR ?= ../.. L4DIR ?= $(PKGDIR)/../.. TARGET ?= libstdc++.a libstdc++.so -CONTRIB_INCDIR = libstdc++-v3 PC_FILENAME ?= libstdc++ -STDCXX_PKG_DIR ?= $(PKGDIR_ABS) +PC_LIBS ?= -lstdc++ REQUIRES_LIBS ?= libsupc++ +STDCXX_PKG_DIR ?= $(PKGDIR_ABS) STDCXX_SRC_SUBDIRS := src config/io config/locale/generic @@ -18,7 +18,6 @@ SRC_CC := \ concept-inst.cc \ ctype.cc \ debug.cc \ - debug_list.cc \ ext-inst.cc \ fstream-inst.cc \ functexcept.cc \ @@ -47,7 +46,6 @@ SRC_CC := \ streambuf-inst.cc \ string-inst.cc \ tree.cc \ - valarray-inst.cc \ wlocale-inst.cc \ wstring-inst.cc \ basic_file_stdio.cc \ @@ -60,7 +58,6 @@ SRC_CC := \ codecvt_members.cc \ collate_members.cc \ - include $(L4DIR)/mk/lib.mk include $(STDCXX_PKG_DIR)/contrib.inc include $(STDCXX_PKG_DIR)/build/src/Makefile-$(STDCXX_CONTRIB_VERSION) diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 index 8b5fddf9e..07cdab4b0 100644 --- a/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 +++ b/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 @@ -1,5 +1,5 @@ -SRC_CC += globals_locale.cc list.cc +SRC_CC += globals_locale.cc list.cc valarray-inst.cc debug_list.cc SRC_CC += atomicity.cc $(OBJ_DIR)/atomicity.cc: $(call CPU_file,atomicity.h) diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 index 2fe7247b4..3c0ee23d1 100644 --- a/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 +++ b/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 @@ -3,6 +3,8 @@ SRC_CC += hash_c++0x.cc \ hashtable_c++0x.cc \ parallel_list.cc \ parallel_settings.cc \ + valarray-inst.cc \ + debug_list.cc SRC_CC_arm += atomicity.cc SRC_CC_ppc32 += atomicity.cc diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.5 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.5 index 84759a719..7d17b2ba9 100644 --- a/l4/pkg/libstdc++-v3/build/src/Makefile-4.5 +++ b/l4/pkg/libstdc++-v3/build/src/Makefile-4.5 @@ -6,6 +6,8 @@ SRC_CC += hash_c++0x.cc \ parallel_settings.cc \ future.cc \ system_error.cc \ + valarray-inst.cc \ + debug_list.cc SRC_CC_arm += atomicity.cc diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.6 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.6 new file mode 100644 index 000000000..c326940e8 --- /dev/null +++ b/l4/pkg/libstdc++-v3/build/src/Makefile-4.6 @@ -0,0 +1,18 @@ +CXXFLAGS += -std=c++0x + +SRC_CC += hash_c++0x.cc \ + hashtable_c++0x.cc \ + parallel_settings.cc \ + future.cc \ + system_error.cc \ + functional.cc \ + regex.cc \ + list.cc + +SRC_CC_arm += atomicity.cc +SRC_CC_ppc32 += atomicity.cc +SRC_CC += $(SRC_CC_$(ARCH)) + +$(OBJ_DIR)/atomicity.cc: $(call CPU_file,atomicity_mutex/atomicity.h) + $(LN) -sf $< $@ + diff --git a/l4/pkg/libstdc++-v3/contrib.inc b/l4/pkg/libstdc++-v3/contrib.inc index 19590e451..e1e0ec3e1 100644 --- a/l4/pkg/libstdc++-v3/contrib.inc +++ b/l4/pkg/libstdc++-v3/contrib.inc @@ -17,6 +17,8 @@ __GCCSUBVER= $(wordlist 1, $(GCCSUBVERSION), $(__NUMBERS)) SDTCXX_0x = n +STDCXX_AVAILABLE_VERSIONS = 4.1.0 4.3.3 4.5 4.6 + ifeq ("$(GCCMAJORVERSION)", "4") ifeq ("$(GCCMINORVERSION)", "3") STDCXX_CONTRIB_VERSION := 4.3.3 @@ -28,6 +30,11 @@ ifeq ("$(GCCMAJORVERSION)", "4") STDCXX_CONTRIB_VERSION := 4.5 STDCXX_0x = y endif + ifeq ("$(GCCMINORVERSION)", "6") + STDCXX_CONTRIB_VERSION := 4.6 + STDCXX_CONTRIB_VERSION_4.6_PLUS := y + STDCXX_0x = y + endif ifneq ("$(call gte, $(__GCCMINOR), $(call n, 1))", "") STDCXX_CONTRIB_VERSION ?= 4.1.0 endif diff --git a/l4/pkg/libstdc++-v3/contrib/gcc-4.6/coretypes.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.6/coretypes.h new file mode 100644 index 000000000..20932b8d9 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/gcc-4.6/coretypes.h @@ -0,0 +1,175 @@ +/* GCC core type declarations. + Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +/* Provide forward declarations of core types which are referred to by + most of the compiler. This allows header files to use these types + (e.g. in function prototypes) without concern for whether the full + definitions are visible. Some other declarations that need to be + universally visible are here, too. + + In the context of tconfig.h, most of these have special definitions + which prevent them from being used except in further type + declarations. This is a kludge; the right thing is to avoid + including the "tm.h" header set in the context of tconfig.h, but + we're not there yet. */ + +#ifndef GCC_CORETYPES_H +#define GCC_CORETYPES_H + +#ifndef GTY +#define GTY(x) /* nothing - marker for gengtype */ +#endif + +#ifndef USED_FOR_TARGET + +struct bitmap_head_def; +typedef struct bitmap_head_def *bitmap; +typedef const struct bitmap_head_def *const_bitmap; +struct simple_bitmap_def; +typedef struct simple_bitmap_def *sbitmap; +typedef const struct simple_bitmap_def *const_sbitmap; +struct rtx_def; +typedef struct rtx_def *rtx; +typedef const struct rtx_def *const_rtx; +struct rtvec_def; +typedef struct rtvec_def *rtvec; +typedef const struct rtvec_def *const_rtvec; +union tree_node; +typedef union tree_node *tree; +union gimple_statement_d; +typedef union gimple_statement_d *gimple; +typedef const union tree_node *const_tree; +typedef const union gimple_statement_d *const_gimple; +union section; +typedef union section section; +struct gcc_options; +struct cl_target_option; +struct cl_optimization; +struct cl_option; +struct cl_decoded_option; +struct cl_option_handlers; +struct diagnostic_context; +typedef struct diagnostic_context diagnostic_context; +struct gimple_seq_d; +typedef struct gimple_seq_d *gimple_seq; +typedef const struct gimple_seq_d *const_gimple_seq; + +/* Address space number for named address space support. */ +typedef unsigned char addr_space_t; + +/* The value of addr_space_t that represents the generic address space. */ +#define ADDR_SPACE_GENERIC 0 +#define ADDR_SPACE_GENERIC_P(AS) ((AS) == ADDR_SPACE_GENERIC) + +/* The major intermediate representations of GCC. */ +enum ir_type { + IR_GIMPLE, + IR_RTL_CFGRTL, + IR_RTL_CFGLAYOUT +}; + +/* Provide forward struct declaration so that we don't have to include + all of cpplib.h whenever a random prototype includes a pointer. + Note that the cpp_reader and cpp_token typedefs remain part of + cpplib.h. */ + +struct cpp_reader; +struct cpp_token; + +/* The thread-local storage model associated with a given VAR_DECL + or SYMBOL_REF. This isn't used much, but both trees and RTL refer + to it, so it's here. */ +enum tls_model { + TLS_MODEL_NONE, + TLS_MODEL_EMULATED, + TLS_MODEL_REAL, + TLS_MODEL_GLOBAL_DYNAMIC = TLS_MODEL_REAL, + TLS_MODEL_LOCAL_DYNAMIC, + TLS_MODEL_INITIAL_EXEC, + TLS_MODEL_LOCAL_EXEC +}; + +/* Types of unwind/exception handling info that can be generated. */ + +enum unwind_info_type +{ + UI_NONE, + UI_SJLJ, + UI_DWARF2, + UI_TARGET +}; + +/* Callgraph node profile representation. */ +enum node_frequency { + /* This function most likely won't be executed at all. + (set only when profile feedback is available or via function attribute). */ + NODE_FREQUENCY_UNLIKELY_EXECUTED, + /* For functions that are known to be executed once (i.e. constructors, destructors + and main function. */ + NODE_FREQUENCY_EXECUTED_ONCE, + /* The default value. */ + NODE_FREQUENCY_NORMAL, + /* Optimize this function hard + (set only when profile feedback is available or via function attribute). */ + NODE_FREQUENCY_HOT +}; + + +struct edge_def; +typedef struct edge_def *edge; +typedef const struct edge_def *const_edge; +struct basic_block_def; +typedef struct basic_block_def *basic_block; +typedef const struct basic_block_def *const_basic_block; + +#define obstack_chunk_alloc ((void *(*) (long)) xmalloc) +#define obstack_chunk_free ((void (*) (void *)) free) +#define OBSTACK_CHUNK_SIZE 0 +#define gcc_obstack_init(OBSTACK) \ + _obstack_begin ((OBSTACK), OBSTACK_CHUNK_SIZE, 0, \ + obstack_chunk_alloc, \ + obstack_chunk_free) + +/* enum reg_class is target specific, so it should not appear in + target-independent code or interfaces, like the target hook declarations + in target.h. */ +typedef int reg_class_t; + +#else + +struct _dont_use_rtx_here_; +struct _dont_use_rtvec_here_; +union _dont_use_tree_here_; +#define rtx struct _dont_use_rtx_here_ * +#define const_rtx struct _dont_use_rtx_here_ * +#define rtvec struct _dont_use_rtvec_here * +#define const_rtvec struct _dont_use_rtvec_here * +#define tree union _dont_use_tree_here_ * +#define const_tree union _dont_use_tree_here_ * + +#endif + +#endif /* coretypes.h */ + diff --git a/l4/pkg/libstdc++-v3/contrib/gcc-4.6/unwind-pe.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.6/unwind-pe.h new file mode 100644 index 000000000..121f87767 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/gcc-4.6/unwind-pe.h @@ -0,0 +1,289 @@ +/* Exception handling and frame unwind runtime interface routines. + Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009 Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +/* @@@ Really this should be out of line, but this also causes link + compatibility problems with the base ABI. This is slightly better + than duplicating code, however. */ + +#ifndef GCC_UNWIND_PE_H +#define GCC_UNWIND_PE_H + +/* If using C++, references to abort have to be qualified with std::. */ +#if __cplusplus +#define __gxx_abort std::abort +#else +#define __gxx_abort abort +#endif + +/* Pointer encodings, from dwarf2.h. */ +#define DW_EH_PE_absptr 0x00 +#define DW_EH_PE_omit 0xff + +#define DW_EH_PE_uleb128 0x01 +#define DW_EH_PE_udata2 0x02 +#define DW_EH_PE_udata4 0x03 +#define DW_EH_PE_udata8 0x04 +#define DW_EH_PE_sleb128 0x09 +#define DW_EH_PE_sdata2 0x0A +#define DW_EH_PE_sdata4 0x0B +#define DW_EH_PE_sdata8 0x0C +#define DW_EH_PE_signed 0x08 + +#define DW_EH_PE_pcrel 0x10 +#define DW_EH_PE_textrel 0x20 +#define DW_EH_PE_datarel 0x30 +#define DW_EH_PE_funcrel 0x40 +#define DW_EH_PE_aligned 0x50 + +#define DW_EH_PE_indirect 0x80 + + +#ifndef NO_SIZE_OF_ENCODED_VALUE + +/* Given an encoding, return the number of bytes the format occupies. + This is only defined for fixed-size encodings, and so does not + include leb128. */ + +static unsigned int +size_of_encoded_value (unsigned char encoding) __attribute__ ((unused)); + +static unsigned int +size_of_encoded_value (unsigned char encoding) +{ + if (encoding == DW_EH_PE_omit) + return 0; + + switch (encoding & 0x07) + { + case DW_EH_PE_absptr: + return sizeof (void *); + case DW_EH_PE_udata2: + return 2; + case DW_EH_PE_udata4: + return 4; + case DW_EH_PE_udata8: + return 8; + } + __gxx_abort (); +} + +#endif + +#ifndef NO_BASE_OF_ENCODED_VALUE + +/* Given an encoding and an _Unwind_Context, return the base to which + the encoding is relative. This base may then be passed to + read_encoded_value_with_base for use when the _Unwind_Context is + not available. */ + +static _Unwind_Ptr +base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *context) +{ + if (encoding == DW_EH_PE_omit) + return 0; + + switch (encoding & 0x70) + { + case DW_EH_PE_absptr: + case DW_EH_PE_pcrel: + case DW_EH_PE_aligned: + return 0; + + case DW_EH_PE_textrel: + return _Unwind_GetTextRelBase (context); + case DW_EH_PE_datarel: + return _Unwind_GetDataRelBase (context); + case DW_EH_PE_funcrel: + return _Unwind_GetRegionStart (context); + } + __gxx_abort (); +} + +#endif + +/* Read an unsigned leb128 value from P, store the value in VAL, return + P incremented past the value. We assume that a word is large enough to + hold any value so encoded; if it is smaller than a pointer on some target, + pointers should not be leb128 encoded on that target. */ + +static const unsigned char * +read_uleb128 (const unsigned char *p, _uleb128_t *val) +{ + unsigned int shift = 0; + unsigned char byte; + _uleb128_t result; + + result = 0; + do + { + byte = *p++; + result |= ((_uleb128_t)byte & 0x7f) << shift; + shift += 7; + } + while (byte & 0x80); + + *val = result; + return p; +} + +/* Similar, but read a signed leb128 value. */ + +static const unsigned char * +read_sleb128 (const unsigned char *p, _sleb128_t *val) +{ + unsigned int shift = 0; + unsigned char byte; + _uleb128_t result; + + result = 0; + do + { + byte = *p++; + result |= ((_uleb128_t)byte & 0x7f) << shift; + shift += 7; + } + while (byte & 0x80); + + /* Sign-extend a negative value. */ + if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) + result |= -(((_uleb128_t)1L) << shift); + + *val = (_sleb128_t) result; + return p; +} + +/* Load an encoded value from memory at P. The value is returned in VAL; + The function returns P incremented past the value. BASE is as given + by base_of_encoded_value for this encoding in the appropriate context. */ + +static const unsigned char * +read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, + const unsigned char *p, _Unwind_Ptr *val) +{ + union unaligned + { + void *ptr; + unsigned u2 __attribute__ ((mode (HI))); + unsigned u4 __attribute__ ((mode (SI))); + unsigned u8 __attribute__ ((mode (DI))); + signed s2 __attribute__ ((mode (HI))); + signed s4 __attribute__ ((mode (SI))); + signed s8 __attribute__ ((mode (DI))); + } __attribute__((__packed__)); + + const union unaligned *u = (const union unaligned *) p; + _Unwind_Internal_Ptr result; + + if (encoding == DW_EH_PE_aligned) + { + _Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p; + a = (a + sizeof (void *) - 1) & - sizeof(void *); + result = *(_Unwind_Internal_Ptr *) a; + p = (const unsigned char *) (_Unwind_Internal_Ptr) (a + sizeof (void *)); + } + else + { + switch (encoding & 0x0f) + { + case DW_EH_PE_absptr: + result = (_Unwind_Internal_Ptr) u->ptr; + p += sizeof (void *); + break; + + case DW_EH_PE_uleb128: + { + _uleb128_t tmp; + p = read_uleb128 (p, &tmp); + result = (_Unwind_Internal_Ptr) tmp; + } + break; + + case DW_EH_PE_sleb128: + { + _sleb128_t tmp; + p = read_sleb128 (p, &tmp); + result = (_Unwind_Internal_Ptr) tmp; + } + break; + + case DW_EH_PE_udata2: + result = u->u2; + p += 2; + break; + case DW_EH_PE_udata4: + result = u->u4; + p += 4; + break; + case DW_EH_PE_udata8: + result = u->u8; + p += 8; + break; + + case DW_EH_PE_sdata2: + result = u->s2; + p += 2; + break; + case DW_EH_PE_sdata4: + result = u->s4; + p += 4; + break; + case DW_EH_PE_sdata8: + result = u->s8; + p += 8; + break; + + default: + __gxx_abort (); + } + + if (result != 0) + { + result += ((encoding & 0x70) == DW_EH_PE_pcrel + ? (_Unwind_Internal_Ptr) u : base); + if (encoding & DW_EH_PE_indirect) + result = *(_Unwind_Internal_Ptr *) result; + } + } + + *val = result; + return p; +} + +#ifndef NO_BASE_OF_ENCODED_VALUE + +/* Like read_encoded_value_with_base, but get the base from the context + rather than providing it directly. */ + +static inline const unsigned char * +read_encoded_value (struct _Unwind_Context *context, unsigned char encoding, + const unsigned char *p, _Unwind_Ptr *val) +{ + return read_encoded_value_with_base (encoding, + base_of_encoded_value (encoding, context), + p, val); +} + +#endif + +#endif /* unwind-pe.h */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog new file mode 100644 index 000000000..cbfc52a06 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog @@ -0,0 +1,1219 @@ +2011-05-06 Jonathan Wakely + + * doc/xml/manual/status_cxx200x.xml: Update to reflect current status + and FDIS content. + * doc/xml/manual/documentation_hacking.xml: Fix typo. + * doc/html/*: Regenerate. + +2011-05-03 Ollie Wild + + * include/ext/sso_string_base.h (__sso_string_base<>::_M_construct): + Fix unqualified lookup. + (__sso_string_base<>::_M_construct): Likewise. + (__sso_string_base<>::_M_construct): Likewise. + (__sso_string_base<>::_M_assign): Likewise. + (__sso_string_base<>::_M_reserve): Likewise. + (__sso_string_base<>::_M_mutate): Likewise. + (__sso_string_base<>::_M_erase): Likewise. + * include/ext/vstring.h (__versa_string<>::replace): Likewise. + (__versa_string<>::compare): Likewise. + * include/ext/vstring.tcc (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + +2011-05-03 Paolo Carlini + + PR libstdc++/48750 + * include/parallel/multiway_merge.h: Run _ValueType destructors. + * include/parallel/multiway_mergesort.h: Likewise. + * include/parallel/quicksort.h: Likewise. + * include/parallel/random_shuffle.h: Likewise. + * include/parallel/partial_sum.h: Likewise. + * include/parallel/losertree.h: Run destructors; minor tweaks. + * include/parallel/par_loop.h: Run destructors, fix memory + allocations and deallocations. + * testsuite/26_numerics/accumulate/48750.cc: New. + + * testsuite/ext/profile/mutex_extensions_neg.cc: Do not run in + parallel-mode to avoid spurious multiple errors. + +2011-04-30 Doug Kwan + + * include/Makefile.am (install-freestanding-headers): Also install + cxxabi_tweaks.h. + * include/Makefile.in: Regenerate. + +2011-04-29 Paolo Carlini + + PR libstdc++/48760 + * include/std/complex (complex::complex(float, float), + complex::complex(double, double), + complex::complex(long double, long double)): Initialize + in the body in C++03 mode (no fix in C++0x mode). + * testsuite/26_numerics/complex/cons/48760.cc: New. + +2011-04-23 Jonathan Wakely + + PR libstdc++/48521 + * include/std/type_traits (result_of): Handle pointer to member. + * include/std/functional (__invoke): Likewise. + (_Function_to_function_pointer): Remove. + (_Reference_wrapper_base): Provide nested types independent of + unary_function and binary_function. + (reference_wrapper::operator()): DR 2017. + (ref(const A&&), cref(const A&&): Define as deleted. + * include/std/future (async): Simplify SFINAE and use result_of to + support pointer to member. + * testsuite/20_util/reference_wrapper/invoke.cc: Test pointer to + member. + * testsuite/20_util/reference_wrapper/24803.cc: Likewise. + * testsuite/20_util/reference_wrapper/typedefs.cc: Test for types + instead of derivation from unary_function and binary_function. + * testsuite/20_util/reference_wrapper/invoke-2.cc: New. + * testsuite/20_util/reference_wrapper/ref_neg.c: New. + * testsuite/20_util/reference_wrapper/typedefs-3.c: New. + +2011-04-19 Hans-Peter Nilsson + + PR testsuite/48675 + * testsuite/20_util/hash/chi2_quality.cc (test_document_words): Stub + this part if SAMPLES < 100000. + +2011-04-17 Daniel Krugler + Paolo Carlini + + PR libstdc++/48635 (again) + * include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(unique_ptr<>&&), + unique_ptr<_Tp[]>::unique_ptr(unique_ptr<>&&), + unique_ptr<>::operator=(unique_ptr<>&&), + unique_ptr<_Tp[]>::operator=(unique_ptr<>&&)): Use forward<_Ep>, not + forward<_Dp>, to forward the deleter. + * testsuite/20_util/unique_ptr/assign/48635_neg.cc: New. + +2011-04-15 Daniel Krugler + Paolo Carlini + + PR libstdc++/48631 + * include/bits/unique_ptr.h (default_delete<_Tp[]>): Add deleted + function call operator. + * testsuite/20_util/default_delete/48631_neg.cc: New. + * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error + line numbers. + +2011-04-15 Daniel Krugler + Paolo Carlini + + PR libstdc++/48635 + * include/bits/unique_ptr.h (unique_ptr<>::operator=(unique_ptr&&), + unique_ptr<>::operator=(unique_ptr<>&&), + unique_ptr<_Tp[],>::operator=(unique_ptr&&), + unique_ptr<_Tp[],>::operator=(unique_ptr<>&&)): Forward the deleter + instead of moving it. + * testsuite/20_util/unique_ptr/assign/48635.cc: New. + +2011-04-15 Paolo Carlini + + * include/std/istream: Fix comments in the light of DR60 + N3168. + +2011-04-15 Takaya Saito + + PR libstdc++/48476 + * include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&), + _Tuple_impl<>::operator=(_Tuple_impl&&), _Tuple_impl<>::operator= + (_Tuple_impl<>&&), tuple_cat): Use std::forward where appropriate. + * testsuite/20_util/tuple/cons/48476.cc: New. + * testsuite/20_util/tuple/48476.cc: Likewise. + * testsuite/20_util/tuple/creation_functions/48476.cc: Likewise. + +2011-04-12 Allan McRae + + PR libstdc++/48566 + * testsuite/tr1/6_containers/unordered_map/requirements/ + iterator_null_neg.cc: Include . + * testsuite/tr1/6_containers/unordered_set/requirements/ + iterator_null_neg.cc: Likewise. + * testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Include + . + * testsuite/util/testsuite_common_types.h: Include . + * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: + Adjust dg-error line numbers. + * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise. + * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: + Likewise. + * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: + Likewise. + * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: + Likewise. + * testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise. + * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. + +2011-04-10 Jonathan Wakely + + * testsuite/20_util/function/48451.cc: Rename to... + * testsuite/20_util/function/48541.cc: This. + +2011-04-10 Jonathan Wakely + + PR libstdc++/48541 + * include/std/functional (_Base_manager::_M_get_pointer): Use + addressof. + * testsuite/20_util/function/48451.cc: New. + +2011-04-10 Jonathan Wakely + + PR libstdc++/48465 + * configure.ac (libtool_VERSION): Bump library version to 6:16:0. + * configure: Regenerate. + * config/abi/pre/gnu.ver (GLIBCXX_3.4.16): Export missing symbols. + * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16. + +2011-04-06 Jeffrey Yasskin + + * include/ext/algorithm (is_sorted): In C++0x mode import from + namespace std. + * include/ext/numeric (iota): In C++0x mode import from + namespace std. + * testsuite/ext/is_sorted/cxx0x.cc: New. + * testsuite/ext/iota/cxx0x.cc: New. + +2011-04-02 Jonathan Wakely + + PR libstdc++/48398 + * include/bits/unique_ptr.h (__tuple_type): Store pointer type. + * testsuite/20_util/unique_ptr/modifiers/48398.cc: New. + * testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Remove + unused parameter name. + +2011-03-31 Jeffrey Yasskin + + * libsupc++/exception_ptr.h: Forward-declare std::type_info. + * libsupc++/nested_exception.h (__throw_with_nested): Remove a + redundant default argument from std::__throw_with_nested. + +2011-03-26 Paolo Carlini + + * include/bits/random.h (negative_binomial_distribution<>:: + negative_binomial_distribution(_IntType, double), + negative_binomial_distribution<>:: + negative_binomial_distribution(const param_type&)): Fix thinko + p / (1 - p) for (1 - p) / p. + * include/bits/random.tcc (negative_binomial_distribution<>:: + operator()): Fix. + +2011-03-25 Release Manager + + * GCC 4.6.0 released. + +2011-03-24 Rainer Orth + + * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerate. + * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise. + +2011-03-23 Matthias Klose + + * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Regenerated. + +2011-03-23 Uros Bizjak + + * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated. + +2011-03-22 Jakub Jelinek + + * config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs + and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_. + * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerated. + * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise. + * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: + Likewise. + * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise. + * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise. + * testsuite/21_strings/basic_string/cons/char/moveable2.cc: New test. + * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: New + test. + +2011-03-21 Jakub Jelinek + + * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: + Likewise. + * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise. + * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise. + + * testsuite/util/testsuite_abi.cc (check_version): Set incompatible + even when adding symbols to CXXABI_1.3, GLIBCXX_LDBL_3.4 and + CXXABI_LDBL_1.3 versions. + +2011-03-21 Benjamin Kosnik + + * config/abi/pre/gnu.ver: Remove typeinfo name exports for C++0x types. + +2011-03-21 Jakub Jelinek + + * config/abi/pre/gnu.ver (CXXABI_1.3): Don't export _ZT[IS][PK]*[no]. + (CXXABI_1.3.5): Export _ZTI[PK]*[no]. + +2011-03-21 Rainer Orth + + * testsuite/22_locale/num_put/put/char/14220.cc: Don't xfail on + sparc*-sun-solaris2.10 && lp64. + +2011-03-16 Benjamin Kosnik + + * src/Makefile.am: Add functional.cc, shared_ptr.cc. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am: Add nested_exception.cc. + * libsupc++/Makefile.in: Regenerate. + * src/system_error.cc: Add ctor and dtor definitions for error_category. + * src/functional.cc: New. Add dtor definition for bad_function_call. + * src/stdexcept.cc: Add dtor definitions for domain_error, + invalid_argument, length_error, out_of_range, range_error, + overflow_error, underflow_error. + * src/future.cc: Add dtor definition for __future_base::_Result_base. + * src/shared_ptr.cc: New. Add dtor definition for bad_weak_ptr. + * include/std/system_error: Adjust. + * include/std/stdexcept: Same. + * include/std/future: Same. + * include/std/functional: Same. + * include/bits/shared_ptr_base.h: Same. + * libsupc++/nested_exception.cc: New. Add dtor for nested_exception. + * libsupc++/nested_exception.h: Adjust. + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers. + * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. + * config/abi/pre/gnu.ver: Add new exports. + + * src/future.cc: Guard definitions. + * libsupc++/nested_exception.cc: Same. + + * config/abi/pre/gnu.ver: Make nested_exception exports super clear. + Move bad_function_call exports from CXXABI_1.3.5 to GLIBCXX_3.4.15. + Add base destructors for stdexcept classes. + + * testsuite/19_diagnostics/stdexcept.cc: New. + +2011-03-15 Doug Kwan + + PR libstdc++/48123 + * include/Makefile.am (install-freestanding-headers): Install + cpu_defines.h + * include/Makefile.in: Regenerate. + +2011-03-14 Rainer Orth + + * doc/xml/manual/abi.xml: Replace docs.sun.com URLs by their OTN + equivalents. + * doc/html/manual/abi.html: Regenerate. + +2011-03-14 Andrey Zholos + + PR libstdc++/48114 + * include/bits/random.h (geometric_distribution): Correct formula + in comment, per C++0x. + (geometric_distribution<>::param_type::param_type(double)): Fix check. + (geometric_distribution<>::param_type::_M_initialize): + Store log(1 - p). + * include/bits/random.tcc (geometric_distribution<>::operator()): + Fix computation. + (binomial_distribution<>::operator()): Likewise. + +2011-03-09 Paolo Carlini + + * testsuite/util/testsuite_rvalref.h: Minor tweaks. + +2011-03-09 Jonathan Wakely + Chris Jefferson + Paolo Carlini + + * testsuite/util/testsuite_rvalref.h (rvalstruct_compare_by_value): + New. + * testsuite/25_algorithms/sort_heap/check_compare_by_value.cc: + Likewise. + * testsuite/25_algorithms/partial_sort/check_compare_by_value: + Likewise. + * testsuite/25_algorithms/stable_sort/check_compare_by_value.cc: + Likewise. + * testsuite/25_algorithms/sort/check_compare_by_value: Likewise. + +2011-03-09 Chris Jefferson + + PR libstdc++/48038 + * include/bits/stl_algo.h (__merge_backward): Rename to + __move_merge_backward and change to always move rather than copy. + (__move_merge): New function similar to std::merge except values + are moved instead of copied. + (__merge_adaptive, __merge_sort_loop): Change from using std::merge + and __merge_backward to __move_merge and __move_merge_backward. + +2011-03-07 Jason Merrill + + * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust + expected errors. + +2011-03-07 Benjamin Kosnik + Matthias Klose + Jonathan Wakely + + PR libstdc++/47145 + * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Define. + * configure.ac: Use it. + * doc/Makefile.am (XSL_STYLE_DIR): Set at configure time. + * configure: Regenerate. + * doc/Makefile.in: Regenerate. + +2011-03-04 Benjamin Kosnik + + * src/Makefile.am (inst_sources): Make source instantion files + conditional. + (XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional. + * src/Makefile.in: Regenerate. + * src/valarray-inst.cc: Move to.. + * src/valarray.cc: ...this. + * acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define. + * configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it. + * configure: Regenerate. + * include/Makefile.am (stamp-extern-template): Add. + * include/Makefile.in: Regenerate. + + * doc/xml/manual/configure.xml: Document --enable-extern-template. + + * include/bits/locale_classes.tcc: Adjust comment. + * include/bits/locale_facets.tcc: Same. + * include/bits/basic_ios.tcc: Same. + * include/bits/istream.tcc: Same. + * include/bits/codecvt.h: Same. + * include/bits/ostream.tcc: Same. + * include/bits/sstream.tcc: Same. + * include/bits/c++config: Same. + * include/bits/basic_string.tcc: Same. + * include/bits/ostream_insert.h: Same. + * include/bits/locale_facets_nonio.tcc: Same. + * include/bits/streambuf.tcc: Same. + * include/bits/allocator.h: Same. + * include/bits/fstream.tcc: Same. + + * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers. + +2011-03-02 Benjamin Kosnik + + * testsuite/Makefile.am: Make clean fixups. + * testsuite/Makefile.in: Regenerate. + +2011-03-02 Marc Glisse + + * include/std/ratio (ratio_less): Add comments. + +2011-03-02 Marc Glisse + + PR libstdc++/47913 + * include/std/ratio (ratio_add): Avoid denominator overflow. + * testsuite/20_util/ratio/operations/47913.cc: New. + +2011-02-28 Benjamin Kosnik + + * testsuite/20_util/hash/chi2_quality.cc: Use C++0x mode on simulators. + * testsuite/20_util/hash/quality.cc: Same. + +2011-02-28 Paolo Carlini + + PR libstdc++/47921 + * include/std/streambuf (basic_streambuf<>::__safe_gbump, + __safe_pbump): Add. + * include/bits/streambuf.tcc (basic_streambuf<>::xgetn, + xputn): Use the latter. + * include/bits/streambuf_iterator.h: Likewise. + * src/strstream.cc: Likewise. + * src/streambuf.cc: Likewise. + * src/compatibility.cc: Likewise. + * src/istream.cc: Likewise. + * include/bits/fstream.tcc (basic_filebuf<>::xsgetn): Use setg + instead of gbump. + * include/std/sstream (basic_stringbuf<>::_M_pbump): Add. + * include/bits/sstream.tcc (basic_stringbuf<>::seekoff, + seekpos, _M_sync): Use setg, setp, and _M_pbump. + * config/abi/pre/gnu.ver: Tweak. + +2011-02-28 Paolo Carlini + + * testsuite/20_util/ratio/comparisons/comp3.cc: New. + +2011-02-28 Marc Glisse + + PR libstdc++/42622 + * include/std/ratio (ratio_less): Reimplement to never overflow. + * testsuite/20_util/ratio/comparisons/comp2.cc: Extend. + +2011-02-24 Benjamin Kosnik + + * testsuite/18_support/type_info/fundamental.cc: New. + + * testsuite/Makefile.am: Make clean fixups. + * testsuite/Makefile.in: Regenerate. + +2011-02-19 François Dumont + + * include/debug/string (basic_string::insert): Add iterator check and + pass normal iterator to normal insert. + * include/debug/macros.h (__glibcxx_check_heap, + __glibcxx_check_heap_pred): Remove __glibcxx_check_valid_range, + already done. + +2011-02-17 Paolo Carlini + + PR libstdc++/47776 + * testsuite/ext/vstring/hash/char/1.cc: Fix. + * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise. + +2011-02-17 Jonathan Wakely + + * include/bits/regex.h (basic_regex::traits_type): Add typedef. + (basic_regex::basic_regex(basic_regex&&)): Add noexcept. + (basic_regex::operator=(basic_regex&&)): Likewise. + (basic_regex::assign(basic_regex&&)): Likewise. + (operator==(sub_match,...)): Implement DR 1181. + (match_results::match_results(match_results&&)): Define. + (match_results::operator=(const match_results&)): Fix parameter type. + (match_results::operator=(match_results&&)): Define. + +2011-02-17 Jonathan Wakely + + PR libstdc++/47724 + * include/bits/regex_compiler.h (_Scanner::_M_advance): Do not treat + line anchors as metacharacters. + * testsuite/28_regex/basic_regex/ctors/47724.cc: New. + +2011-02-16 Paolo Carlini + + PR libstdc++/47773 + * include/ext/vstring.h (hash<__gnu_cxx::__vstring>, + hash<__gnu_cxx::__wvstring>, hash<__gnu_cxx::__u16vstring>, + hash<__gnu_cxx::__u32vstring>): Add. + * testsuite/ext/vstring/hash/char/1.cc: New. + * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise. + +2011-02-16 Jonathan Wakely + + * include/bits/regex.h (match_results::format): Use char_traits. + +2011-02-16 Benjamin Kosnik + + * include/std/atomic: Remove atomic_address, uplift to N3225. + * include/bits/atomic_0.h: Same. + * include/bits/atomic_2.h: Same. + * include/bits/atomic_base.h: Same. + * testsuite/29_atomics/atomic_address/*: Delete. + +2011-02-14 Jonathan Wakely + + * include/bits/regex.h (sub_match::sub_match): Add. + (match_results::ready): Add. + (match_results::empty): Adjust. + (match_results::length): Add missing dereference. + (match_results::operator[],prefix,suffix): Add debug mode checks. + (match_results::cend): Re-use end(). + (match_results::format): Adjust signatures. + (operator==(match_results,match_results)): Implement. + * include/bits/regex_compiler.h (_Scanner_base): Use constexpr. + * include/bits/regex_constants.h (syntax_option_type): Likewise. + * include/bits/regex_grep_matcher.h: Fix comment typo. + (_SpecializedResults::_SpecializedResults): Simplify. + * include/bits/regex_cursor.h: Fix comment typo. + * include/bits/regex_nfa.h: Likewise. + * testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc: + Fix error code, remove xfail. + * testsuite/28_regex/basic_regex/ctors/extended/ + string_range_01_02_03.cc: Likewise. + +2011-02-14 Jonathan Wakely + + * include/bits/regex_compiler.h: Remove unnecessary bind() calls. + * include/bits/regex_nfa.h: Remove unnecessary base classes. + +2011-02-13 Ralf Wildenhues + + * configure: Regenerate. + +2011-02-12 Paolo Carlini + + PR libstdc++/47709 + * include/ext/algorithm (is_heap): In C++0x mode import from + namespace std. + * testsuite/ext/is_heap/47709.cc: New. + +2011-02-12 Jakub Jelinek + Jonathan Wakely + + PR libstdc++/47662 + * testsuite/17_intro/headers/c++200x/operator_names.cc: New. + * testsuite/17_intro/headers/c++1998/operator_names.cc: Add comment. + +2011-02-12 Paolo Carlini + + * include/tr1/cmath (fabs): Define. + * include/tr1/complex (acos, asin, atan): Avoid duplicate definitions + in C++0x mode. + +2011-02-12 Jonathan Wakely + + * testsuite/tr1/headers/c++200x/complex.cc: New. + +2011-02-11 Johannes Singler + + PR libstdc++/47433 + * include/parallel/losertree.h + (_LoserTreeUnguarded<>::__delete_min_insert): + Add missing "using std::swap;", as for other variants. + +2011-02-10 Benjamin Kosnik + + * src/Makefile.am (sources): Add regex.cc. + * src/Makefile.in: Regenerate. + * src/regex.cc: New. + * include/bits/regex_error.h (error_type): Use constexpr. + (regex_error): Move ctor and dtor out of line. + + * testsuite/28_regex/03_requirements: To... + * testsuite/28_regex/requirements: ... this. + * testsuite/28_regex/04_header: To... + * testsuite/28_regex/headers: ... this. + * testsuite/28_regex/05_constants: To... + * testsuite/28_regex/constants: ... this. + * testsuite/28_regex/06_exception_type: To... + * testsuite/28_regex/regex_error: ... this. + * testsuite/28_regex/07_traits: To... + * testsuite/28_regex/traits: ... this. + * testsuite/28_regex/08_basic_regex: To... + * testsuite/28_regex/basic_regex: ... this. + * testsuite/28_regex/09_sub_match: To... + * testsuite/28_regex/sub_match: ... this. + * testsuite/28_regex/10_match_results: To... + * testsuite/28_regex/match_results: ... this. + * testsuite/28_regex/11_algorithms: To... + * testsuite/28_regex/algorithms: ... this. + * testsuite/28_regex/12_iterators: To... + * testsuite/28_regex/iterators: ... this. + +2011-02-10 Jonathan Wakely + + PR libstdc++/47662 + * include/bits/c++config: Do not use alternative token. + * testsuite/17_intro/headers/c++1998/operator_names.cc: New. + +2011-02-10 Jonathan Wakely + + * src/future.cc (future_error_category::message): Handle no_state. + +2011-02-10 Paolo Carlini + + * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Do + not test in C++0x mode. + * testsuite/23_containers/map/modifiers/erase/47628.cc: Likewise. + * testsuite/20_util/headers/utility/synopsis.cc: Tweak to work + in C++0x mode too. + +2011-02-10 Jonathan Wakely + + * doc/xml/manual/status_cxx200x.xml: Update. + * doc/html/*: Regenerate. + +2011-02-10 Jonathan Wakely + + * doc/xml/manual/debug.xml: Improve data race docs. + +2011-02-09 Paolo Carlini + + PR libstdc++/47668 + * include/debug/map.h (map): Remove unnecessary using-declaration. + * include/debug/multimap.h (multimap): Likewise. + * include/profile/map.h (map): Likewise. + * include/profile/multimap.h (multimap): Likewise. + +2011-02-09 Jonathan Wakely + + PR libstdc++/43863 + * libsupc++/guard.cc (recursive_init_error::~recursive_init_error): + Move to ... + * libsupc++/guard_error.cc: ... new file. + * libsupc++/Makefile.am: Update. + * libsupc++/Makefile.in: Regenerate. + +2011-02-09 Jonathan Wakely + + * include/std/future (packaged_task::operator bool): Rename to... + (packaged_task::valid): ...this. + * testsuite/30_threads/packaged_task/cons/1.cc: Adjust. + * testsuite/30_threads/packaged_task/cons/2.cc: Adjust. + * testsuite/30_threads/packaged_task/cons/move.cc: Adjust. + * testsuite/30_threads/packaged_task/cons/move_assign.cc: Adjust. + * testsuite/30_threads/packaged_task/cons/alloc.cc: Adjust. + * testsuite/30_threads/packaged_task/members/invoke.cc: Adjust. + * testsuite/30_threads/packaged_task/members/reset.cc: Adjust. + * testsuite/30_threads/packaged_task/members/reset2.cc: Adjust. + * testsuite/30_threads/packaged_task/members/swap.cc: Adjust. + * testsuite/30_threads/packaged_task/members/boolconv.cc: Remove. + * testsuite/30_threads/packaged_task/members/valid.cc: Add. + +2011-02-09 Paolo Carlini + + * doc/xml/manual/io.xml: Fix typo. + * doc/html/manual/streambufs.html: Likewise. + +2011-02-09 Paolo Carlini + + * config/abi/pre/gnu.ver: Fix. + +2011-02-08 Benjamin Kosnik + + * doc/xml/manual/appendix_porting.xml: Add doc section. + * doc/xml/manual/appendix_contributing.xml: Split out doc bits to... + * doc/xml/manual/documentation_hacking.xml: ...here. + + * doc/xml/manual/debug_mode.xml: Adjust. + * doc/xml/manual/prerequisites.xml: Adjust. + * doc/Makefile.am (xml_sources): Add dot files, + documentation_hacking.xml. + * doc/Makefile.in: Regenerate. + + * doc/xml/manual/build_hacking.xml: Use absolute paths for images. + * doc/xml/images/confdeps.pdf: Add. + + * doc/html/*: Regenerate. + +2011-02-08 Jonathan Wakely + + * doc/xml/gnu/fdl-1.2.xml: Remove. + * doc/xml/gnu/gpl-2.0.xml: Remove. + * doc/Makefile.am: Update. + * doc/Makefile.in: Regenerate. + +2011-02-07 Paolo Carlini + + PR libstdc++/47628 + * include/bits/stl_tree.h (_Rb_tree::erase(iterator), erase(iterator, + iterator)): Add back in C++03 mode. + * testsuite/23_containers/map/modifiers/erase/47628.cc: New. + * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Likewise. + +2011-02-07 Benjamin Kosnik + + PR libstdc++/47560 try two + * config/os/hpux/os_defines.h: Guard for C++. + +2011-02-07 Gerald Pfeifer + + * doc/xml/faq.xml: Adjust link to bug database. + Remove old item on broken header files. + +2011-02-04 Benjamin Kosnik + + * include/bits/regex_error.h (__throw_regex_error): Not inline. + * src/functexcept.cc: Add definition. + * config/abi/pre/gnu.ver: Export. + +2011-02-04 Ralf Corsépius + + * crossconfig.m4 (GLIBCXX_CROSSCONFIG): Add *-rtems*. + * configure: Regenerate. + +2011-02-01 Paolo Carlini + + PR libstdc++/46914 + * include/bits/atomic_0.h (_ATOMIC_STORE_, _ATOMIC_MODIFY_, + _ATOMIC_CMPEXCHNG_): Rename __v -> __w, and __m -> __n, to + avoid name conflicts. + +2011-02-01 Benjamin Kosnik + + PR libstdc++/47560 + * config/os/hpux/os_defines.h: Remove use of macros on namespace. + +2011-02-01 Benjamin Kosnik + + * scripts/run_doxygen: Allow doxygen 1.7.0 again. + * doc/doxygen/user.cfg.in (PDF_HYPERLINKS): Re-enable. + (COMPACT_LATEX): Enable. + + * include/profile/impl/profiler_container_size.h: Adjust doxygen markup. + * include/profile/impl/profiler_hash_func.h: Same. + * include/bits/hashtable.h: Same. + * include/backward/auto_ptr.h: Same. + * include/backward/strstream: Same. + * include/backward/backward_warning.h: Same. + * include/backward/binders.h: Same. + +2011-02-01 Gerald Pfeifer + + * doc/xml/manual/debug.xml: Use GDB instead of gdb. + Adjust link to GDB manual. + +2011-01-31 Benjamin Kosnik + + * include/bits/c++config (_GLIBCXX_DEPRECATED): To + _GLIBCXX_USE_DEPRECATED. + (_GLIBCXX_DEPRECATED_ATTR): To _GLIBCXX_DEPRECATED. + * doc/xml/manual/using.xml: Same. + * include/std/memory: Same. + * include/std/streambuf: Same. + * include/bits/shared_ptr.h: Same. + * include/bits/unique_ptr.h: Same. + * include/bits/shared_ptr_base.h: Same. + * include/bits/stl_function.h: Same. + * include/tr1/shared_ptr.h: Same. + * include/backward/auto_ptr.h: Same. + * include/backward/binders.h: Same. + +2011-01-31 Paolo Carlini + + * doc/html/ext/lwg-active.html: Update to Revision D73. + * doc/html/ext/lwg-closed.html: Likewise. + * doc/html/ext/lwg-defects.html: Likewise. + * doc/xml/manual/intro.xml: Update status of issues 408, 539, 865. + +2011-01-30 Benjamin Kosnik + + PR libstdc++/36104 part four + * include/bits/c++config (_GLIBCXX_STD): Remove. + (_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C. + (_GLIBCXX_P): Now _GLIBCXX_STD_A. + (_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL, + _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove. + (_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL, + _GLIBCXX_INLINE_PROFILE): Remove. + (_GLIBCXX_BEGIN_NAMESPACE(X)): Remove. + (_GLIBCXX_END_NAMESPACE): Remove. + (_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove. + (_GLIBCXX_END_NESTED_NAMESPACE): Remove. + (_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add. + (_GLIBCXX_END_NAMESPACE_ALGO): Add. + (_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add. + (_GLIBCXX_END_NAMESPACE_CONTAINER): Add. + (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add. + (_GLIBCXX_END_NAMESPACE_VERSION): Add. + (_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL. + (_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL. + (_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY. + * include/*: Use new macros for namespace scope. + * config/*: Same. + * src/*: Same. + + * src/Makefile.am (sources): Remove debug_list.cc, add + compatibility-debug_list-2.cc. + (parallel_sources): Remove parallel_list.cc, add + compatibility-parallel_list-2.cc. + (compatibility-parallel_list-2.[o,lo]): New rule. + * src/Makefile.in: Regenerate. + * src/debug_list.cc: Remove. + * src/parallel_list.cc: Remove. + * src/compatibility-list-2.cc: New. + * src/compatibility-debug_list-2.cc: New. + * src/compatibility-parallel_list-2.cc: New. + + * doc/doxygen/user.cfg.in: Adjust macros. + + * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros. + * testsuite/20_util/declval/requirements/1_neg.cc: Same. + * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. + * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. + * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. + * testsuite/20_util/forward/c_neg.cc: Same. + * testsuite/20_util/forward/f_neg.cc: Same. + * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. + * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. + * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same. + * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same. + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same. + * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. + * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. + * testsuite/23_containers/deque/requirements/dr438/ + constructor_1_neg.cc: Same. + * testsuite/23_containers/deque/requirements/dr438/ + constructor_2_neg.cc: Same. + * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. + * testsuite/23_containers/forward_list/capacity/1.cc: Same. + * testsuite/23_containers/forward_list/requirements/dr438/ + assign_neg.cc: Same. + * testsuite/23_containers/forward_list/requirements/dr438/ + constructor_1_neg.cc: Same. + * testsuite/23_containers/forward_list/requirements/dr438/ + constructor_2_neg.cc: Same. + * testsuite/23_containers/forward_list/requirements/dr438/ + insert_neg.cc: Same. + * testsuite/23_containers/list/capacity/29134.cc: Same. + * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. + * testsuite/23_containers/list/requirements/dr438/ + constructor_1_neg.cc: Same. + * testsuite/23_containers/list/requirements/dr438/ + constructor_2_neg.cc: Same. + * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. + * testsuite/23_containers/vector/bool/capacity/29134.cc: Same. + * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same. + * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. + * testsuite/23_containers/vector/requirements/dr438/ + constructor_1_neg.cc: Same. + * testsuite/23_containers/vector/requirements/dr438/ + constructor_2_neg.cc: Same. + * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. + * testsuite/25_algorithms/sort/35588.cc: Same. + * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. + * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. + * testsuite/ext/profile/mutex_extensions_neg.cc: Same. + * testsuite/ext/profile/profiler_algos.cc: Same. + * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same. + * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same. + * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same. + * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same. + * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same. + +2011-01-30 Gerald Pfeifer + + * doc/xml/manual/abi.xml: Adjust link to C++ ABI specification. + Improve description of one such reference. + +2011-01-30 Gerald Pfeifer + + * doc/xml/manual/codecvt.xml: Fix link to The Austin Common + Standards Revision Group. + * doc/xml/manual/locale.xml: Ditto. + * doc/xml/manual/messages.xml: Ditto. + * doc/xml/manual/using_exceptions.xml: Ditto. + +2011-01-28 Paolo Carlini + + * include/bits/atomic_base.h: Do not include . + (kill_dependency): Uglify ret. + +2011-01-26 Johannes Singler + + * include/parallel/numeric (inner_product, partial_sum): + Qualify subsequent call with __gnu_parallel instead of + _GLIBCXX_STD_P to reenable parallel execution without ambiguity. + * include/parallel/algobase.h (equal): Likewise. + * include/parallel/algo.h (find_first_of, search_n, merge, + nth_element, partial_sort, max_element, min_element): Likewise. + * testsuite/25_algorithms/headers/algorithm/ + parallel_algorithm_mixed1.cc (main): Add respective test cases. + * testsuite/25_algorithms/headers/algorithm/ + parallel_algorithm_mixed2.cc (main): Likewise. + * testsuite/26_numerics/headers/numeric/ + parallel_numeric_mixed1.cc (main): Likewise. + * testsuite/26_numerics/headers/numeric/ + parallel_numeric_mixed2.cc (main): Likewise. + +2011-01-24 Graham Reed + + PR libstdc++/47387 + * config/os/aix/ctype_inline.h (ctype::is): Use _M_table if + provided. + +2011-01-24 Johannes Singler + + PR libstdc++/47433 + * include/parallel/losertree.h + (_LoserTree<>::__delete_min_insert): + Do not qualify swap with std:: for value type, + but include a using directive instead. + (_LoserTreeUnguarded<>::__delete_min_insert): Likewise. + * include/parallel/balanced_quicksort.h (__qsb_divide): + Use std::iter_swap instead of std::swap. + (__qsb_local_sort_with_helping): Likewise. + * include/parallel/partition.h (__parallel_partition): + Likewise. (__parallel_nth_element): Likewise. + +2011-01-24 Johannes Singler + + PR libstdc++/47437 + * include/parallel/multiway_merge.h (_UnguardedIterator): + Remove useless "mutable" from reference declaration. + +2011-01-21 Benjamin Kosnik + + * include/bits/c++config (_GLIBCXX_EXPORT_TEMPLATE): Remove. + * include/debug/safe_sequence.h: Same. + * include/debug/safe_iterator.h: Same. + * include/std/forward_list: Same. + * include/std/deque: Same. + * include/std/list: Same. + * include/std/random: Same. + * include/std/streambuf: Same. + * include/std/fstream: Same. + * include/std/istream: Same. + * include/std/string: Same. + * include/std/ostream: Same. + * include/std/sstream: Same. + * include/ext/vstring.h: Same. + * include/bits/basic_ios.h: Same. + * include/bits/locale_classes.h: Same. + * include/bits/locale_facets.h: Same. + * include/bits/valarray_array.h: Same. + * include/bits/locale_facets_nonio.h: Same. + * include/tr1/random: Same. + +2011-01-20 Jonathan Wakely + + * doc/xml/manual/diagnostics.xml: Replace note about C++0x concepts. + +2011-01-20 Benjamin Kosnik + + PR libstdc++/36104 part three + * src/hashtable_c++0x.cc: Adjust namespace macros. + * testsuite/util/testsuite_rvalref.h: Don't forward declare hash. + * config/abi/pre/gnu-versioned-namespace.ver: Update. + +2011-01-20 Benjamin Kosnik + + * include/ext/pb_ds/detail/resize_policy/ + hash_load_check_resize_trigger_imp.hpp: Adjust assert condition. + * include/ext/pb_ds/detail/pat_trie_/ + constructors_destructor_fn_imps.hpp: Same. + * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Format. + * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same. + * include/ext/pb_ds/detail/debug_map_base.hpp: Use never_adjustor. + + * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Adjust + iterations downward when testing in debug mode. + * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same. + * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Use SIZE, + reduce in debug mode. + +2011-01-19 Benjamin Kosnik + + PR libstdc++/36104 part two + * include/bits/hashtable.h: Revert to non-nested macro usage. + * include/bits/hashtable_policy.h: Same. + +2011-01-19 Graham Reed + + PR libstdc++/47354 + * src/bitmap_allocator.cc (free_list::_M_get): Lock mutex. + +2011-01-18 Benjamin Kosnik + + * doc/xml/images/confdeps.png: Regenerate. + + * include/std/chrono (duration): Mark copy constructor constexpr. + * testsuite/20_util/duration/cons/constexpr.cc: Add test. + +2011-01-18 Paolo Carlini + + * include/bits/unique_ptr.h (default_delete<>::default_delete()): + Declare defaulted per DR 1517. + * testsuite/util/testsuite_common_types.h + (constexpr_defaulted_default_constructible): Add. + * testsuite/20_util/default_delete/cons/constexpr.cc: Use it. + +2011-01-17 Paolo Carlini + + * include/bits/stl_queue.h (queue<>::swap, priority_queue<>::swap): + Implement DR 1198. + * include/bits/stl_stack.h (stack<>::swap): Likewise. + +2011-01-16 Paolo Carlini + + PR libstdc++/47323 + * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: + Only test wregex when _GLIBCXX_USE_WCHAR_T is defined. + +2011-01-16 Paolo Carlini + + PR libstdc++/47320 + * testsuite/18_support/numeric_limits/lowest.cc: + Only test wchar_t when _GLIBCXX_USE_WCHAR_T is defined. + +2011-01-16 Paolo Carlini + + PR libstdc++/47321 + * testsuite/21_strings/basic_string/requirements/typedefs.cc: + Only test std::wstring when _GLIBCXX_USE_WCHAR_T is defined. + +2011-01-16 François Dumont + + * testsuite/23_containers/forward_list/debug/erase_after1_neg.cc: Move + to this. Use _neg suffix. + * testsuite/23_containers/forward_list/debug/erase_after1.cc: ...from + this. + * testsuite/23_containers/forward_list/debug/erase_after2_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after2.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after3_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after3.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after4_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after4.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after5_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after5.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after6_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after6.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after7_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after7.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after8_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after8.cc: Same. + * testsuite/23_containers/forward_list/debug/erase_after9_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/erase_after9.cc: Same. + * testsuite/23_containers/forward_list/debug/insert_after1_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/insert_after1.cc: Same. + * testsuite/23_containers/forward_list/debug/insert_after2_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/insert_after2.cc: Same. + * testsuite/23_containers/forward_list/debug/insert_after3_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/insert_after3.cc: Same. + * testsuite/23_containers/forward_list/debug/splice_after1_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/splice_after1.cc: Same. + * testsuite/23_containers/forward_list/debug/splice_after2_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/splice_after2.cc: Same. + * testsuite/23_containers/forward_list/debug/splice_after3_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/splice_after3.cc: Same. + * testsuite/23_containers/forward_list/debug/splice_after4_neg.cc: + Same. + * testsuite/23_containers/forward_list/debug/splice_after4.cc: Same. + +2011-01-14 Benjamin Kosnik + + PR libstdc++/36104 + * include/Makefile.am (bits_sup_headers, stamp-bits-sup): New. + * include/Makefile.in: Regenerate. + * libsupc++/Makefile.am (std_HEADERS, bits_HEADERS): New. + (install-stdHEADERS, install-bitsHEADERS): New. + * libsupc++/Makefile.in: Regenerate. + + * include/bits/c++config: Update for inline namespaces. + * libsupc++/cxxabi-forced.h: To... + * libsupc++/cxxabi_forced.h: ...this. + * libsupc++/hash_bytes.h: Separate file. + * libsupc++/typeinfo: Use it. + * libsupc++/exception: Adjust for bits subdirectory. + * libsupc++/eh_aux_runtime.cc: Same. + * libsupc++/eh_ptr.cc: Same. + * libsupc++/new_op.cc: Same. + * libsupc++/exception_defines.h: Same. + * libsupc++/nested_exception.h: Same. + * libsupc++/eh_terminate.cc: Same. + * libsupc++/vec.cc: Same. + * libsupc++/vterminate.cc: Same. + * libsupc++/exception_ptr.h: Same. + * libsupc++/eh_personality.cc: Same. + * libsupc++/eh_call.cc: Same. + * libsupc++/new_opnt.cc: Same. + * libsupc++/hash_bytes.cc: Same. + * config/cpu/arm/cxxabi_tweaks.h: Same. + * config/cpu/generic/cxxabi_tweaks.h: Same. + * libsupc++/cxxabi.h: Same. Consolidate _GLIBCXX_NOTHROW defines. + * include/std/bitset: Same. + * include/ext/vstring.tcc: Same. + * include/bits/hashtable.h: Same. + * include/bits/functional_hash.h: Same. + * include/bits/hashtable_policy.h: Same. + * include/bits/basic_string.h: Same. + * include/bits/istream.tcc: Same. + * include/bits/ostream.tcc: Same. + * include/bits/algorithmfwd.h: Same. + * include/bits/basic_string.tcc: Same. + * include/bits/ostream_insert.h: Same. + * include/bits/fstream.tcc: Same. + * include/bits/functexcept.h: Same. + + * doc/doxygen/user.cfg.in: Adjust names. + + * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers. + +2011-01-14 Paolo Carlini + + * testsuite/25_algorithms/is_permutation/check_type.cc: Minor + tweaks. + * testsuite/25_algorithms/is_permutation/1.cc: Cosmetic changes. + +2011-01-13 Paolo Carlini + + * testsuite/25_algorithms/is_permutation/check_type.cc: New. + * testsuite/25_algorithms/is_permutation/requirements/ + explicit_instantiation/2.cc: Likewise. + * testsuite/25_algorithms/is_permutation/requirements/ + explicit_instantiation/pod.cc: Likewise. + * testsuite/25_algorithms/is_permutation/1.cc: Likewise. + +2011-01-13 John Lakos + Pablo Halpern + Paolo Carlini + + * include/bits/stl_algo.h (is_permutation): Add, per N3068. + * include/bits/algorithmfwd.h: Add. + +2011-01-13 Jonathan Wakely + + PR libstdc++/47045 + * config/os/bsd/netbsd/ctype_base.h: Use new macros based on version. + +2011-01-11 Paolo Carlini + + * aclocal.m4: Regenerate. + +2011-01-06 Paolo Carlini + + PR libstdc++/47185 + * src/placeholders.cc: New. + * src/Makefile.am: Adjust. + * src/Makefile.in: Regenerate. + * include/std/functional (placeholders::_1, _2, ..., _29): Declare + extern. + * config/abi/pre/gnu.ver: Export. + +2011-01-05 François Dumont + + * include/debug/safe_base.h (_Safe_iterator_base::_M_unlink): New. + * include/src/debug.cc: Use latter + * include/debug/forward_list (forward_list<>::_M_swap): Fix to + correctly handle before_begin iterators. + * testsuite/23_containers/forward_list/debug/swap.cc: Remove now + useless _GLIBCXX_DEBUG checks. + +2011-01-04 Kai Tietz + + PR libstdc++/47145 + * configure.ac (AC_CHECK_FILE): Replaced by test -f. + * configure: Regenerated. + +2011-01-03 Paolo Carlini + + PR libstdc++/46922 + * config/abi/pre/gnu.ver: Export std::bad_function_call symbols. + + +Copyright (C) 2011 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1998 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1998 new file mode 100644 index 000000000..2549db484 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1998 @@ -0,0 +1,942 @@ +1998-12-31 Benjamin Kosnik + + * bits/fstream.tcc: Add fstream ctor for cin/cout/etc. + * bits/std_fstream.h: Ditto. + * src/stdstreams.cc: Ditto. + + * math/cpowl.c: Fix header typo with last change. + +1998-12-31 Benjamin Kosnik + + * COPYING: New file (GPL v 2). + * LICENSE.STD: Remove. + * ./*: Change license. + +1998-12-30 Benjamin Kosnik + + * bits/std_streambuf.h (std): Remove static on _M_init. + * bits/streambuf.tcc (std): Ditto. + + * bits/std_fstream.h: Add changes as discussed with Nathan, including + state_type and codecvt_type members, the allocation of an internal + buffer, the streamlined codecvt calls, etc. + +1998-12-21 Benjamin Kosnik + + * bits/std_sstream.h: Tweak. + * bits/fstream.tcc: Remove unused stubs. + * bits/std_fstream.h: Tweak. + +1998-12-17 Benjamin Kosnik + + * bits/std_streambuf.h: Move _IO_file_flags into basic_filebuf. + Remove unused _IO_* members, possibly put into filebuf, which may + need them. + * bits/std_fstream.h: Add _M_flag. + * bits/sbuf_iter.h: Tweak. + + * bits/std_cstdio.h: Add SEEK_SET, SEEK_END, SEEK_CUR. + * bits/ios_base.h: Use. + + * src/stdstreams.cc: Modify to reflect standard ctors for + filebuf. + * src/misc-inst.cc: Ditto. + + * bits/os_raw.h: Wrap in std namespace. Model parameters on + underlying C library calls instead of the underlying unix + filesystem. + * src/os_raw.cc (_S_os_open): Use fopen, and compute a mode + string as per p.659. + (_S_os_close): Model on fopen. + (_S_os_read): Model on fread. + (_S_os_write): Model on fwrite. + (_S_os_seek): Model on fseek. + + * bits/ios_base.h: Tweak. + * bits/std_iosfwd.h: Wrap libio.h include with extern "C". + * bits/std_sstream.h: Tweak. + * bits/sstream.tcc: Remove old, uncalled code. + * bits/std_fstream.h: Major reconstruction. + * bits/fstream.tcc: Disable for the time being. + +1998-12-11 Benjamin Kosnik + + * bits/basic_string.h: Fix insert method. + * stl/bits/stl_iterator.h: Remove previous hack. + * bits/std_streambuf.h (sbumpc): Correct increment/return oddness. + * bits/std_sstream.h: Fix more regressions. + * testsuite/27/27stringbuf.C: Add (almost) complete tests. + +1998-12-09 Benjamin Kosnik + + * bits/basic_string.h: Tweak. + + * stl/bits/stl_iterator.h: Specialize iterator_traits for int so + that string::append can be instantiated. HACK--checkin + basic_string::iterator class. + +1998-12-07 Benjamin Kosnik + + * bits/std_sstream.h: Tweak. + * bits/sstream.tcc: Tweak ctors. + + FIXME invalid friend defs. . WHERE ARE THEY?? + + * bits/sbuf_iter.h (istreambuf_iterator::equal): Change to new + names for basic_streambuf data members. + + * bits/std_streambuf.h: Add getloc() initialization bits. + basic_streambuf(): Initialize with global locale data. + imbue(): Set _M_init. + + * bits/std_streambuf.h(seekoff, seekpos): Complete with invalid + stream pos == pos_type(off_type(-1)). + in_avail(): Complete default implementation. + snextc, sbumpc, sputbackc, sungetc, sputc, setg, xsputn, + underflow, uflow, xsgetn, showmany, sync: Ditto. + + * bits/std_streambuf.h: _M_snextc_helper(): Remove. + + * bits/streambuf.tcc (sputbackc): Temporarily remove, need to + re-populate with in-line member functions that are too big. Add + initialization for _M_init. + +1998-12-03 Benjamin Kosnik + + * bits/sstream.tcc: Convert _Allocator to _Alloc. Add typedefs + for basic_string and basic_streambuf. Scope _IO_buf_* pointers to + streambuf_type. + + * src/stdstreams.cc (std): Disable wchar_t instantiations. + + * bits/c++config.h (_G_DEPRICATED): Add. + (_G_USE_WCHAR_T): Add. + * bits/std_streambuf.h: Radical reconstruction of basic_streambuf. + Take out _Streambuf_base. Put _IO_FILE data member in basic_filebuf. + * bits/streambuf.tcc (sputbackc): Remove ctor anti-def, Tweak. + * bits/std_fstream.h: Add comment for implementation. + * src/streambuf.cc: Remove. + * src/Makefile.in: Remove streambuf.lo. + * src/misc-inst.cc: Tweak. + +1998-12-02 Benjamin Kosnik + + * bits/std_sstream.h: Add const_cast to rdbuf returns. + * testsuite/27stringstream.C: Modify. + +1998-11-25 Benjamin Kosnik + + * src/Makefile.in (libstdc___la_OBJECTS): Add streambuf.lo. + (libstdc___la_SOURCES): Ditto. + + * bits/streambuf.tcc: Tweak. + + * src/streambuf.cc: New file, add out-of-line definitions for + _Streambuf_base. + + * src/misc-inst.cc: Remove _Streambuf_base instantiations. + Comment out wchar_t versions of the buffer instantiations, for now. + + * bits/std_streambuf.h: Wrap libio.h include with extern "C". + Remove template wrapper around _Streambuf_base. + Move IO_* data members into _Streambuf_base. + Move _Streambuf_base members into streambuf.tcc. + + * bits/c++config.h (_G_USE_LIBIO): Enable. + +1998-11-02 Nathan Myers + + * CHECKLIST: downgrade iterator implementations + * DESIGN: fill out notes about unimplemented features + +1998-10-31 Nathan Myers + + * CHECKLIST: itemized list of all interfaces, and status of each. + +1998-10-30 Nathan Myers + + * RELEASE-NOTES: add notes about optional includes, linking, running + * src/Makefile.am: handle header installs properly + * src/Makefile.in: regenerate from new src/Makefile.am + +1998-10-30 Benjamin Kosnik + + * bits/basic_string.h: Revert npos pending ciso646. + * src/Makefile.am: Revert CXX flags for now. + * src/Makefile.in: Ditto. + +1998-10-30 Brendan Kehoe + + * bits/std_sstream.h: Re-order ctors to put base before member + inits. + +1998-10-30 Ryszard Kabatek + + * stl/bits/std_memory.h: Fix typo. + +1998-10-30 Nathan Myers + + * src/string[A-Z]+.cc: change back to include "string.cc". + * src/Makefile.am: revert filename changes. We need a different + way to keep filenames in std/ from confusing Make. + * bits/basic_string.h: define _S_max_size right, return it from + string::max_size(); churn definition of npos again. + * bits/string.tcc: fix _S_frob_size to avoid uint overflow. + * bits/ios.cc: remove #ifdef on ios_base locale member initialization + * BUGS: clear cruft. + * C++STYLE: Touchup for release. + * CHECKLIST: Touchup for release. + * DESIGN: New file. + * LICENSE.STD: Add requirement to retain copyrights and to provide + the license with any copies. + * README: Update for release. + * TODO: Minor touchup for release. + * RELEASE-NOTES: prepare for release + +1998-10-29 Ulrich Drepper + + * src/string[A-Z]+.cc: Include stdstring.cc, not string.cc. + + * src/Makefile.am (CXXFLAGS): Define _GNU_SOURCE. + + * src/Makefile.am (CXXLINK): New variable. Make sure we don't use + CXX to generate the shared object. + + * src/Makefile.am (headers): Remove duplicated char_traits.h. + +1998-10-29 Brendan Kehoe + + * bits/basic_string.h (basic_string<>::max_size): Subtract 1, not + 2, from npos, solving infinite loop problems. + +1998-10-29 18:41 Ulrich Drepper + + * src/Makefile.am: Add rules to install headers. + +1998-10-29 Nathan Myers + + * bits/std_ostream.h: Remove #ifdef on operator<< for long double + * bits/ostream.tcc: Remove #ifdef on operator<< for long double + * shadow/libio.h: + * shadow/unistd.h: + * shadow/bits/wrap_libio.h: + * shadow/bits/wrap_unistd.h: New files. + +1998-10-29 Brendan Kehoe + + * bits/ostream.tcc (operator<<): Wrap with #ifdef + _G_HAVE_LONG_DOUBLE_IO, to match bits/std_ostream.h. + +1998-10-29 Ulrich Drepper + + * src/Makefile.am: Add temporarily rules to make sure misc-inst.cc + is not compiled with -fno-implicit-templates in effect. + + * src/Makefile.am (EXTRA_SOURCES): Add string.cc and wstring.cc here. + (libstdc___la_SOURCES): Add all the string*.cc and wstring*.cc files. + * src/stringADDCS.cc: Wrapper around string.cc to define individual + function. + * src/stringADDPS.cc: Likewise. + * src/stringADDSC.cc: Likewise. + * src/stringADDSP.cc: Likewise. + * src/stringADDSS.cc: Likewise. + * src/stringBIST.cc: Likewise. + * src/stringBOST.cc: Likewise. + * src/stringCHTR.cc: Likewise. + * src/stringEQPS.cc: Likewise. + * src/stringEQSP.cc: Likewise. + * src/stringEQSS.cc: Likewise. + * src/stringEXTRA.cc: Likewise. + * src/stringGEPS.cc: Likewise. + * src/stringGESP.cc: Likewise. + * src/stringGESS.cc: Likewise. + * src/stringGETLI.cc: Likewise. + * src/stringGTPS.cc: Likewise. + * src/stringGTSP.cc: Likewise. + * src/stringGTSS.cc: Likewise. + * src/stringINSER.cc: Likewise. + * src/stringLEPS.cc: Likewise. + * src/stringLESP.cc: Likewise. + * src/stringLESS.cc: Likewise. + * src/stringLTPS.cc: Likewise. + * src/stringLTSP.cc: Likewise. + * src/stringLTSS.cc: Likewise. + * src/stringMAIN.cc: Likewise. + * src/stringNEPS.cc: Likewise. + * src/stringNESP.cc: Likewise. + * src/stringNESS.cc: Likewise. + * src/stringSCOPY.cc: Likewise. + * src/wstringADDCS.cc: Wrapper around wstring.cc to define individual + functions. + * src/wstringADDPS.cc: Likewise. + * src/wstringADDSC.cc: Likewise. + * src/wstringADDSP.cc: Likewise. + * src/wstringADDSS.cc: Likewise. + * src/wstringBIST.cc: Likewise. + * src/wstringBOST.cc: Likewise. + * src/wstringCHTR.cc: Likewise. + * src/wstringEQPS.cc: Likewise. + * src/wstringEQSP.cc: Likewise. + * src/wstringEQSS.cc: Likewise. + * src/wstringEXTRA.cc: Likewise. + * src/wstringGEPS.cc: Likewise. + * src/wstringGESP.cc: Likewise. + * src/wstringGESS.cc: Likewise. + * src/wstringGETLI.cc: Likewise. + * src/wstringGTPS.cc: Likewise. + * src/wstringGTSP.cc: Likewise. + * src/wstringGTSS.cc: Likewise. + * src/wstringINSER.cc: Likewise. + * src/wstringLEPS.cc: Likewise. + * src/wstringLESP.cc: Likewise. + * src/wstringLESS.cc: Likewise. + * src/wstringLTPS.cc: Likewise. + * src/wstringLTSP.cc: Likewise. + * src/wstringLTSS.cc: Likewise. + * src/wstringMAIN.cc: Likewise. + * src/wstringNEPS.cc: Likewise. + * src/wstringNESP.cc: Likewise. + * src/wstringNESS.cc: Likewise. + * src/wstringSCOPY.cc: Likewise. + * src/string.cc: Remove now unneeded #defines now. + +1998-10-29 Nathan Myers + + * bits/locfacets.tcc: Define num_put::put(... const void*), improve + integer formatting. + * bits/ostream.tcc: Delete cruft, rewrite various op<< as members, + add definitions for double, long double, const void*. + * bits/std_ostream.h: Move op<<'s back into class ostream, + define some in-line. + * bits/string.tcc: fix unnecessary-copying bug in op[], typos in + string construction from input iterators that Brendan reported. + + +1998-10-28 Brendan Kehoe + + * stl/bits/stl_pair.h (op!=, op>, p<=, op>=): Add missing definitions. + + * bits/valarray_meta.h (class _Constant): Move declaration to the + top, so the rest of the file can grok it. + (_ApplyBinaryFunction::operator[]): Add missing parenthesis. + + * bits/std_sstream.h (basic_ostringstream::str): Fix typo of extra + semicolon. + (basic_stringstream::str, both instances): Likewise. + +1998-10-28 Nathan Myers + + * bits/locfacets.h: fix num_put<>::falsename() + * bits/locfacets.tcc: fix _Format_cache<>::_M_populate bool name init + * testsuite/27/27octfmt.C, testsuite/27/27octfmt.C: new tests + * bits/locfacets.tcc: touch up _S_group_digits. + * src/misc-inst.cc: adjust _S_group_digits insts to match. + +1998-10-27 Nathan Myers + + * stl/bits/stl_config.h: Turn off long long support, for now. + * src/locale-inst.cc: Instantiate num_put<> only for + ostreambuf_iterator, num_get only for istreambuf_iterator. + * src/misc-inst.cc: Delete duplicate locale-related instantiations, + add lots of new instantiations for num_put support function templates; + remove junk about __match_parallel for ostreambuf_iterator. + +1998-10-27 Nathan Myers + + * bits/locfacets.tcc: Make num_put's digit grouping work. + * bits/string.tcc: More uglification. + * src/ios.cc: initialize format cache right + +1998-10-26 Nathan Myers + + * bits/basic_string.h: Uglify more names. + * bits/fstream.tcc: Rewrite some filebut output handling. + * bits/ios_base.h: Cosmetic. + * bits/locfacets.h: Changes to _Format_cache for support of num_put. + Also, specialize its default ctor for optimal default case. + #ifdef out "long long" prototypes for now. + * bits/locfacets.tcc: Do complete, optimized num_put<>::do_put + implementation for integer types. (Still needs optimized + std::copy() applied to ostreambuf_iterator to be optimal.) + * bits/ostream.tcc: Write operator<< for long, bool types. + Make other operators<< non-members, per spec. (Many still + not implemented.) Identify those that fail to create a sentry. + * bits/sbuf_iter: Cosmetic. + * bits/std_fstream.h: Add some filebuf members. + * bits/std_locale.h: Include for use in bits/locfacets.h + * bits/std_ostream.h: Make member operators<< global, per spec. + (Should do the same in std_istream.h.) + * bits/std_string.h: Include for use in bits/locfacets.h + * bits/string.tcc: Uglify names + * shadow/bits/std_cstdlib.h: Optimize std::div and std::ldiv. + * src/ios.cc: Specialize _Format_cache<> for char and wchar_t, + for optimal default behavior. + +1998-10-26 Benjamin Kosnik + + * src/Makefile.in (libstdc___la_SOURCES): Add misc-inst.cc again. + +1998-10-21 Nathan Myers + + * src/locale.cc: make ctype operations actually work for glibc + * CHECKLIST: add a comprehensive (i.e. huge) implementation + checklist of stdlib facilities. Not filled in yet. + +1998-10-20 Nathan Myers + + * bits/string.tcc: fix patching NULs on string ends. + +1998-10-19 Nathan Myers + + * bits/std_iosfwd.h: eliminate "basic_" prefix on streambuf + iterator forward declarations + * bits/sbuf_iter.h: eliminate default template argument definitions + on streambuf iterators (rely on decls). + * TODO: add note about lazy facet construction + * bits/basic_ios.h: hit operator void* again. This should be the + last time we need to touch it. + * bits/basic_ios.h: copyfmt now returns *this. + * bits/basic_string.h: fix npos again. npos cannot be defined as zero. + * bits/basic_string.h: put back overloaded constructors; adjust + behavior for default allocator on copy constructor. + * bits/char_traits.h: make not_eof return correct type. + * bits/loccore.h: remove call to bits/std_stdexcept.h; subincludes + cannot be in non-standard headers or we get include loops (bad) + * bits/loccore.h: delete ifdef'd out workarounds for old compiler bugs. + * bits/loccore.h: add apparatus to support lazy construction of + facets. + * bits/locfacets.tcc: Uglify names in __match_parallel decl. + * bits/std_ios.h: add include of to get bad_cast for + locale use_facet<> failure. + * bits/std_locale.h: same. + * bits/std_string.h: same. + * bits/std_stdexcept.h: change exception member __msg from a + reference to a regular object. + * bits/string.tcc: add pasting a NUL on the end of strings after + each operation. We had already left room for it, but previously + plugged it only on a call to c_str(), but the WG changed the + requirement when I wasn't looking. (Can't leave them alone for + a second without they break something else.) + * bits/valarray_meta.h: add Gaby's changes from 981018. + * src/locale.cc: add new type _Bad_use_facet to be thrown on + failure of use_facet<>(). + * src/stdexcept.cc: remove pragma, remove bkoz's #if 0, + comment out leftover member definitions + +1998-10-16 Ulrich Drepper + + * string/Makefile.am: Revert last change. + * math/Makefile.am: Likewise. + +1998-10-15 Benjamin Kosnik + + * bits/std_sstream.h: Fix typo. + +1998-10-15 Benjamin Kosnik + + * src/Makefile.am (libstdc___la_SOURCES): Add misc-inst.cc. + + * bits/std_sstream.h: Add typedefs, member definitions. Clean. + * bits/std_stdexcept.h: Remove. + +1998-10-15 Benjamin Kosnik + + * src/misc-inst.cc: Tweak again. + + * bits/std_sstream.h: Move out-of-line definitions to sstream.tcc. + * bits/sstream.tcc: New file. + +1998-10-15 Ulrich Drepper + + * configure.in: Test for machine/param.h, sys/machine.h and fp.h. + Don't run AC_C_BIGENDIAN if machine/param.h or sys/machine.h are + available. + + * math/mathconf.h: Include sys/machine.h, machine/param.h and fp.h + if available. + (INFINITE_P): Use IS_INF macro if available. + +1998-10-15 Ulrich Drepper + + * math/Makefile.am (EXTRA_LTLIBRARIES): Renamed from + noinst_LTLIBRARIES. + * string/Makefile.am: Likewise. + +1998-10-15 Ulrich Drepper + + * configure.in (AC_CHECK_FUNCS): Add finite, qfinite, fpclass, and + qfpclass. + (AC_CHECK_HEADERS): Add machine/endian.h. If no header specifying + endianess is available run AC_C_BIGENDIAN. + + * math/clog10l.c: Add ugly hack around bug in Irix 6.2 header until + fixincludes is fixed. + * math/clogl.c: Likewise. + * math/csqrtl.c: Likewise. + * math/mycabsl.c: Likewise. + + * math/mathconf.h: Include machine/endian.h if possible. If no + header describing endianess is available rely on WORDS_BIGENDIAN + macro. + (FINITE_P, FINITEF_P, FINITEL_P): Use finite functino if available. + (INFINITE_P, INFINITEF_P, INFINITEL_P): Use fpclass function if + available. + + * src/complex.cc (polar): Don't use sincos on OSF machines. + +1998-10-09 Benjamin Kosnik + + * src/locale-inst.cc: Don't instantiate time_get for + ostreambuf_iterators as time_get::do_get_weekday and + time_get::do_get_monthname use __match_parallel, which is illegal + for ostreambuf_iterators to use, as they don't have operator== or + operator!=. + * bits/std_stdexcept.h: Add dtor definitions. + Use stl/bits/std_stdexcept.h instead of this file? + * bits/sbuf_iter.h : Tweak. + * src/misc-inst.cc: Tweak. + +1998-10-09 Benjamin Kosnik + + * bits/std_stdexcept.h: New file. + * src/stdexcept.cc: Define the following: + logic_error::what() + runtime_error::what() + + * src/misc-inst.cc: New file. + * src/Makefile.in (libstdc___la_SOURCES): Add misc-inst.cc. + (libstdc___la_OBJECTS): Add misc-inst.lo. + + * bits/basic_string.h: Disable non-standard ctor declarations. + * bits/string.tcc: Disable definitions as well. + * src/string.cc: Disable dependencies. + * bits/sbuf_iter.h (std): Add default to template parameter for + ostreambuf_iterator and istreambuf_iterator. + * bits/std_iosfwd.h: Change istreambuf_iterator to + basic_istreambuf_iterator. Likewise for ostreambuf. + * bits/locfacets.tcc (__match_parallel): Fix typo. + * src/ios.cc (imbue): Remove the _G_HAVE_LOCALE guards around + ios_base::imbue. + * bits/std_streambuf.h: Define _Streambuf_base::getloc(). + * bits/std_istream.h: Define the following: + get (basic_streambuf& __sb, char_type __delim) + get (char_type* __s, streamsize __n, char_type __delim); + getline (char_type* __s, streamsize __n, char_type __delim) + * bits/loccore.h : FIXME friend template code for use_facet. + Add std_stdexcept.h include so that range_error will be defined. + Add explicit conversion to string for range_error throws. (HACK?) + +1998-10-8 Ulrich Drepper + + * configure.in: Check for sincos, sincosf, and sincosl. + * src/complex.cc (polar): Use sincos if available. + + * bits/c++config.h: Fix hack to get LONG_LONG* definitions on Linux. + * stl/bits/std_limits.h: Include bits/c++config.h. HACK!!! + + * math/clog10.c: Fix typo (FP_INIFITE_P -> INFINITE_P). + + * math/cpow.c: Use c_log, not clog. + * math/cpowf.c: Likewise. + * math/cpowl.c: Likewise. + + * math/cexp.c: Remove unused fpclassify calls. Use FINITE_P instead + of isfinite call. + + * math/mathconf.h (FINITE_P, FINITEF_P, FINITEL_P): Define using + isfinite macro if it is available. + (INFINITE_P, INFINITEF_P, INFINITEL_P): Define using isinf macro. + + * math/ccosf.c: Use appropriate test macros for this type. + * math/ccoshf.c: Likewise. + * math/ccoshl.c: Likewise. + * math/ccosl.c: Likewise. + * math/cexpf.c: Likewise. + * math/cexpl.c: Likewise. + * math/clog10f.c: Likewise. + * math/clog10l.c: Likewise. + * math/clogf.c: Likewise. + * math/clogl.c: Likewise. + * math/csinf.c: Likewise. + * math/csinhf.c: Likewise. + * math/csinhl.c: Likewise. + * math/csinl.c: Likewise. + * math/csqrtf.c: Likewise. + * math/csqrtl.c: Likewise. + * math/ctanf.c: Likewise. + * math/ctanhf.c: Likewise. + * math/ctanhl.c: Likewise. + * math/ctanl.c: Likewise. + +1998-10-06 Benjamin Kosnik + + * bits/basic_ios.h: Fix previous change. + +1998-10-06 Benjamin Kosnik + + * bits/basic_ios.h: Add const_cast + (operator void*): As per 5.2.9 p 2, make sure static_cast is + well-formed. + * bits/char_traits.h: No _CharT for specialization, change to 0. + * bits/basic_string.h: As per 9.4.2 p4, initialize with + constant-initializer. + * bits/locfacets.tcc: Add template parameter to initialization list. + +1998-10-02 Benjamin Kosnik + + * bits/basic_string.h: Should just be <, not <=. + +1998-10-01 Benjamin Kosnik + + * bits/string.tcc (compare): Fix for strings that are similar, but + not the same length. + +1998-09-04 Brendan Kehoe + + * bits/c++config.h: For __linux__, define _GNU_SOURCE. This is + required for us to get LONG_LONG_{MIN,MAX} out of gcc's limits.h. + We can't check for __GLIBC__ here, since this header can be read + before any system one (that would lead to features.h) being used. + + * stl/bits/stl_config.h (__STL_LONG_LONG): Re-enabled + + * stl/bits/std_limits.h [__STL_LONG_LONG]: Fix usage to use + LONG_LONG_MIN, LONG_LONG_MAX, and ULONG_LONG_MAX. + + * stl/bits/stl_config.h: Don't do __STL_LONG_LONG, it uses + LONGLONG_{MIN,MAX} which I can't find the origin of. + +1998-09-03 Brendan Kehoe + + * stl/bits/stl_iterator.h: Add extern decl of cin for now; where + should this come from, if not iostream.h? + (class istream_iterator): Make the new operator!= a friend also. + + * stl/bits/stl_config.h: Define __STL_HAS_WCHAR_T, + __STL_MEMBER_TEMPLATE_CLASSES, and __STL_LONG_LONG. Don't include + _G_config.h like the egcs one does. + +1998-09-01 Brendan Kehoe + + * bits/string.tcc: Call `_M_destroy' instead of `destroy'. + + * bits/valarray_meta.h: Throughout, rename _Expr typedefs to be + _Expr1 (or _Expr_def if it's taken), and change definitions. + Avoids redecl of the template parm. + + * bits/string.tcc (basic_string copy ctor): Fix typo in declaration. + (operator>>): Initialize __ERROR with ios_base::goodbit, not 0. + + * bits/std_streambuf.h (_POSIX_SOURCE): Only define if it's not + already done. + + * src/locale-inst.cc: New file, **TOTAL HACK**. There has GOT to + be a better way to do this. + + * src/stlinst.cc: New file. + + * BUGS: New file, with various discovered bugs that need to be + fixed. + + * Makefile.in, math/Makefile.in, string/Makefile.in, + src/Makefile.in: Reran automake. + + Workarounds, these may not all be the final fixes: + + * bits/basic_ios.h (class basic_ios): Make _M_strbuf be protected, + not private, for basic_istream::get() in std_istream.h to be able + to use it. + (basic_ios::operator void*): Don't use static_cast for the false + case. + (basic_ios::copyfmt): Fix `rhs.except' to be `rhs.exceptions ()'. + This appears to have been in sep94, but didn't get corrected + afterwards. + + * bits/basic_string.h (npos): Don't init here. + * bits/string.tcc: Instead, do initialization here, to -1 instead + of the size_type destructor. + + * src/traits.cc, src/wtraits.cc: New files. + * bits/char_traits.h: For char_traits and + char_traits, declare static, but define over in the src + files. + + * bits/gslice.h: Comment out forward decls of _Array, valarray, + gslice_array, and _GsliceExpression. + + * bits/std_cstdio.h [__sparc__ && __svr4__]: #undef all of + clearerr, feof, ferror, getc, getchar, putc, putchar, stdin, + stdout, and stderr. Note we do get unresolved refs to stdin, but + that'll get fixed by the "true" solution. + + * bits/std_ios.h: Include to get the + definition of basic_streambuf.h, which is used in basic_ios.h to + call pubimbue. + + * bits/std_streambuf.h: Don't include libio.h for now. + (class basic_streambuf): Define missing methods pubimbue and + getloc. + + * src/Makefile.am (libstdc___la_SOURCES): Add stdexcept.cc, + ios.cc, os_raw.cc, stdstreams.cc, locale.cc, localename.cc, + locale-inst.cc, stlinst.cc, traits.cc, wtraits.cc. + + * src/ios.cc: Instantiate basic_ios and basic_ios. + + * src/locale.cc: Come up with munged versions of _S_toupper, + _S_tolower, and _S_table instead of the glibc-specific ones, so + they're at least defined, if not necessarily usable. The glibc + ones on any other system will yield unresolved refs to + __ctype_{b,toupper,tolower}. + + * src/string.cc: Define all of ADDCS, ADDPS, et al. Add + basic_ios, basic_istream, basic_ostream. Don't do char_traits + anymore cuz of the explicit specialization in char_traits.h. + Also add _S_string_copy, but this doesn't fix it -- cf the BUGS + file for the details. + + * stl/bits/stl_algobase.h (equal): Fix to do `! (x==y)'. + * stl/bits/stl_iterator.h (__distance): Likewise. + + * stl/bits/stl_iterator.h: As with 8/18 set, define missing op!=, + op>, op<=, and op>= for reverse_iterator. Also add op!= for + istream_iterator. + +1998-08-26 Brendan Kehoe + + * bits/string.tcc (basic_string::compare (const char*)): Fix to + return 0, not 1. + +1998-08-25 Brendan Kehoe + + This should really be fixed with __asm__ directives renaming the + symbol, but keeping the function. + * math/clogf.c (c_logf): Renamed from `clogf'. + * math/clogl.c (c_logl): Renamed from `clogl'. + * math/complex-stub.h (c_logf, c_logl): Change decls. + + * bits/locfacets.h (class _Numeric_get): For friend decls, rename + _CharT and _InIter parms, since they duplicate the enclosing ones. + +1998-08-19 Brendan Kehoe + + Deal with conflict of the iostreams `clog' and our internal + complex number `clog'. + * src/complex.cc: Call `c_log' instead of `clog'. + * math/clog.c (c_log):: Renamed from clog. + * math/complex-stub.h (c_log): Renamed from clog decl. + + * bits/locfacets.h (class _Numeric_get): Tweak fwd decls of the + get/put classes. + (num_put::put): #if 0 long long version, since we don't declare or + define the long long version of do_put. + +1998-08-18 Nathan Myers + + * bits/basic_string.h: add basic_string<>::push_back(), fix return + type of get_allocator (thanks to Ryszard Kabatek). + * bits/char_traits.h: make init order of fpos<> members + match decl order. + * bits/ios_base.h: fix decls of ios_base bitmask & enum types, add + flags _S_fd_in etc. for special filebuf ctor. + * bits/locfacets.h: make _Numeric_get and _Format_cache public + to work around problems in friend declarations. + * bits/locfacets.tcc: qualify _S_get_cache in num_get<>::get(..bool&), + fix random type errors & typos + * bits/std_fstream.h: major refitting to bypass libio (for now), + instrument to use bits/fstream.tcc template definitions + * bits/std_iosfwd.h: mess with wrappers + * bits/std_istream.h: remove meaningless comment + * bits/std_ostream.h: instrument to work with ostream.tcc. + * bits/std_streambuf.h: instrument to work with streambuf.tcc + * bits/fstream.tcc: template defs for + * bits/ostream.tcc: template defs for + * bits/streambuf.tcc: template defs for + * bits/os_raw.h: thin OS interface wrapper, to bypass libio (for now). + * Delete .cc files, replace with bits/*.tcc + src/fstream.cc + src/istream.cc + src/ostream.cc + src/streambuf.cc + * Add files: + src/os_raw.cc: thin interface to OS, to bypass libio (for now). + src/stdstreams.cc: cout, cin, etc. definitions + (these still need work: must be init'd before user statics.) + + +1998-08-18 Brendan Kehoe + + Sent to SGI before checkin: + * stl/bits/stl_vector.h (operator!=, operator>, operator<=, + operator>=): Define. + * stl/bits/stl_bvector.h (vector::flip): Define method. + * stl/bits/stl_deque.h (operator!=, operator>, operator<=, + operator>=): Define. + (operator==, operator<): Add inline. + * stl/bits/stl_map.h (operator!=, operator<, operator<=, + operator>=): Define. + * stl/bits/stl_multimap.h (operator!=, operator<, operator<=, + operator>=): Define. + * stl/bits/stl_list.h (operator!=, operator<, operator<=, + operator>=): Define. + * stl/bits/stl_set.h (operator!=, operator<, operator<=, + operator>=): Define. + * stl/bits/stl_multiset.h (operator!=, operator<, operator<=, + operator>=): Define. + + * bits/std_valarray.h (_Shift_left, _Shift_right): Inherit from + unary_function. + +1998-08-15 Nathan Myers + + * bits/ios_base.h: change nominal bitmask and enum types to real enums + * bits/locfacets.h: make _Format_cache bool names usable by num_get + * bits/locfacets.tcc: make num_get<>::get(... bool&) use _Format_cache + * bits/std_fstream.h: minor cleanups: ctors delegate to open() + * bits/std_iosfwd.h: more bitmask changes, for ios_base::iostate + * bits/std_sstream.h: formatting cleanups + +1998-08-14 Nathan Myers + + * bits/locfacets.tcc: implement num_get<>::do_get(..., bool&) + * bits/locfacets.tcc: implement time_get<>::do_get_weekday + * bits/locfacets.tcc: implement time_get<>::do_get_monthname + * bits/locfacets.h: fix missing argument in do_get_monthname + (this is a bug in the standard, ref. 36 in my list.) + * bits/locfacets.h: make month and day name caches mutable + * bits/locfacets.tcc: various typos in get() functions + * bits/sbuf_iter.h: fix omission in istreambuf_iterator::op++(). + * bits/std_streambuf.h: fix typo in sgetn (Brendan) + +1998-08-12 Nathan Myers + * move streambuf iterators to bits/sbuf_iter.h + * optimize streambuf iterators + * begin generalizing streambuf + * begin implementing num_get<>::get (starting with bool) + * patch stl/bits/stl_config.h so that relops operators are + contained properly, out of the way. + +1998-07-24 Nathan Myers + * Fold in SGI 3.11 changes (uglified names, some algorithm + improvements, very minor bug fixes.) + * Uglify names elsewhere to match (s/_T/_Tp/). + * Begin work on optimized streambuf + * Put complex.cc in namespace std:: (thanks Martin) + +1998-07-17 Nathan Myers + + * bits/char_traits.h: add _Char_traits_match template. + * bits/string.tcc: fix bugs in various find_last* members. + * bits/basic_string.h: redeclare member _S_find. + * stl/bits/stl_iterator.h: change member names in nonstandard + templates bidirectional_reverse_iterator and + random_access_reverse_iterator to match expected changes + in upstream source. + * src/string.cc: fix definitions of stream operators. + +1998-07-14 16:06 Ulrich Drepper + + * Makefile.am (SUBDIRS): Add string. + + * configure.in: Test for long double functions separately. Test for + ISO C 89 float functions. Test for endian.h and sys/isa_defs.h. + Generate string/Makefile. + + * bits/c++config.h: Define mbstate_t for Solaris. + + * bits/char_traits.h: Remove unused #if. + + * bits/std_cwchar.h: Declare wide char string functions. + + * m4/stringfcts.m4: New file. + + * math/complex-stub.h: Declare nan. + * math/nan.c: New file. + + * math/mathconf.h: Hack around missing endian.h file. + Handle missing NAN definition. + Handle missing float math functions. + + * src/Makefile.am (libstdc___la_LIBADD): Add libstring.la. + (libstdc___la_LDFLAGS): Set version information. + + * src/complexl.cc: Don't compile any code if no long double functions + are available. + + * string/Makefile.am: New file. + * string/dummy.c: New file. + * string/wmemchr.c: New file. + * string/wmemcmp.c: New file. + * string/wmemcpy.c: New file. + * string/wmemmove.c: New file. + * string/wmemset.c: New file. + +1998-07-14 10:45 Ulrich Drepper + + * configure.in: Make it work. + * install-sh: New file. + * missing: New file. + * mkinstalldirs: New file. + * m4/mathfcts.m4: New file. + * math/Makefile.am: New file. + + * bits/std_complex.h (conj): Mark specializations as inline. + + * math/carg.c: New file. + * math/cargf.c: New file. + * math/cargl.c: New file. + * math/mycabs.c: New file. + * math/mycabsf.c: New file. + * math/mycabsl.c: New file. + * math/signbit.c: New file. + * math/signbitf.c: New file. + * math/signbitl.c: New file. + + * math/ccos.c: Avoid ISO C 9x functionality. + * math/ccosf.c: Likewise. + * math/ccosh.c: Likewise. + * math/ccoshf.c: Likewise. + * math/ccoshl.c: Likewise. + * math/ccosl.c: Likewise. + * math/cexp.c: Likewise. + * math/cexpf.c: Likewise. + * math/cexpl.c: Likewise. + * math/clog.c: Likewise. + * math/clog10.c: Likewise. + * math/clog10f.c: Likewise. + * math/clog10l.c: Likewise. + * math/clogf.c: Likewise. + * math/clogl.c: Likewise. + * math/cpow.c: Likewise. + * math/cpowf.c: Likewise. + * math/cpowl.c: Likewise. + * math/csin.c: Likewise. + * math/csinf.c: Likewise. + * math/csinh.c: Likewise. + * math/csinhf.c: Likewise. + * math/csinhl.c: Likewise. + * math/csinl.c: Likewise. + * math/csqrt.c: Likewise. + * math/csqrtf.c: Likewise. + * math/csqrtl.c: Likewise. + * math/ctan.c: Likewise. + * math/ctanf.c: Likewise. + * math/ctanh.c: Likewise. + * math/ctanhf.c: Likewise. + * math/ctanhl.c: Likewise. + * math/ctanl.c: Likewise. + + * math/complex-stub.h: New file. + + * math/mathconf.h: New file. + + * src/Makefile.am: New file. + + * src/complex.cc: Use mathconf.h instead of complex.h. + Don't use cabs, always use __mycabs. + +1998-02-13 Brendan Kehoe + + * iterator (class reverse_iterator): Do some tweaks to be in sync + w/ the FDIS. + diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1999 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1999 new file mode 100644 index 000000000..29a506317 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-1999 @@ -0,0 +1,3544 @@ +1999-12-26 Phil Edwards + + * docs/gentop/status: Add snapshot version column, update + for Solaris 7. + * docs/status.html: Regenerated. + +1999-12-26 Phil Edwards + + * docs/faq/index.html: Turn README and RELEASE-NOTES into links + from installation FAQ, and specify location of text files. + * docs/faq/index.txt: Regenerated. + +1999-12-23 Phil Edwards + + * docs/gentop/download: Add links to prebuilds for Cygwin/Mingw32. + * docs/download.html: Regenerated. + +1999-12-22 Phil Edwards + + * docs/faq/index.html: Update 'what works' for .7 snapshot, + clean up various links. + * docs/faq/index.txt: Regenerated. + * docs/gentop/gentop: Smarter regeneration script. + * docs/gentop/{head,foot}chunk.html: Updated with new + contributors link and mod date. + * docs/gentop/index: Snapshot relase date. + * docs/gentop/thanks: New contributors page added. + * docs/{download,how,index,links,mail,status,thanks}.html: + Regenerated from gentop; thanks.html created. + +1999-12-21 Benjamin Kosnik + + * bits/c++config.h.in (__GLIBCPP__): 19991221. + * docs/index.html: Add correct information. + + * config/irix: New directory. + * config/irix/ctype.cc: Add irix-6.5 info. Not tested. + * config/irix/bits/ctype_base.h: And here. + + * config/aix: New directory. + * config/aix/ctype.cc: Add aix-4.2 info. Not tested. + * config/aix/bits/ctype_base.h: And here. + +1999-12-21 Philip Martin + + * bits/basic_string.h: Add special case handling for integral + "iterators". + * bits/std_string.h: include type_traits.h + * testsuite/21_strings/ctor_copy_dtor.cc: Tweak. + +1999-12-21 Benjamin Kosnik + + * bits/fstream.tcc (seekoff): Output buffer based on _M_*_in and + _M_*_end now. + * bits/std_fstream.h (sync): And here. + * testsuite/27_io/filebuf.cc: Revisions. + * testsuite/27_io/filebuf-2.tst: Correct, remove weird character + at the end of the file. + * testsuite/27_io/filebuf-3.tst: Correct. + +1999-12-21 Phil Edwards + + * docs/gentop/index: Hold off on .7 announcement date. + * docs/index.html: Regenerate. + +1999-12-21 Benjamin Kosnik + + * bits/std_fstream.h (sync): Move _M_file->sync() to + _M_really_overflow(). + * bits/fstream.tcc (seekoff): Call sync, not _M_really_overflow so + as to get the _M_file->sync action, which forces the external + buffer to update itself. + (underflow): Same here. + +1999-12-21 Phil Edwards + + * bits/c++config.h.in: Uncomment _GLIBCPP_USE_NAMESPACES and move... + * acconfig.h: ...to here. + * config.h.in: Regenerate from aclocal. + * acinclude.m4: Add GLIBCPP_ENABLE_DEBUG, GLIBCPP_ENABLE_NAMESPACES. + * aclocal.m4: Regenerate from acinclude. + * configure.in: Use ENABLE macros here. + * configure: Regenerate. + * src/Makefile.am: Use results from ENABLE macros. + * src/Makefile.in: Regenerate. + +1999-12-20 Benjamin Kosnik + + * mkcheck (SRC_DIR): Now have to include config/* dir if "make + check" and not "make check-install." Temporarily hack in linux + support. + + * bits/std_streambuf.h: Tweaks. + * bits/streambuf.tcc (xsgetn): Tweaks. + * bits/std_fstream.h (sync): Make _M_really_overflow consistent. + * bits/fstream.tcc (filebuf::underflow): Simplify. + * bits/std_sstream.h (streambuf::underflow): Minor change to make + checks for read position precisely implement the standard. + * bits/basic_file.h (filepos_cur): Base this on _offset. + * testsuite/21_strings/inserters_extractors.cc (test05): Tweaks. + * testsuite/27_io/filebuf.cc: Tweak. + +1999-12-20 Benjamin Kosnik + + * docs/17_intro/RELEASE-NOTES: Fix typos. + + * bits/locale_facets.h (ctype): Modify, use __to_type to abstract + out platform-specific bits. + * config/default/ctype.cc: And here. + * config/defaults/bits/ctype_base.h: And here. + * config/linux/ctype.cc: And here. + * config/linux/bits/ctype_base.h (ctype_base): And here. + * config/solaris/bits/ctype_base.h (ctype_base): Add + __to_type. Comment, as it looks like this is for solaris2.6 and + above: solaris2.5.1 doesn't seem to have the same definitions. + * config/solaris/ctype.cc: And here. + +1999-12-19 Benjamin Kosnik + Ulrich Drepper + + * acconfig.h: Remove _GLIBCPP_USE_CTYPE_ISBIT. + + * src/locale.cc: Take out platform-specific hacks. + * config/linux/ctype.cc: Put here. + * config/solaris/ctype.cc: Put here. + * config/default/ctype.cc: Put here. + + * bits/locale_facets.h: Take out platform-specific hacks. + * config/linux/bits/ctype_base.h: Put here. + * config/solaris/bits/ctype_base.h: Put here. + * config/default/bits/ctype_base.h: Put here. + + * configure.in: Bump version. + Add tests for top-level config directory. + * configure: Regenerated. + * src/Makefile.am (INCLUDES): Add platform-specific dir. + * src/Makefile: Regenerate. + +1999-12-19 Benjamin Kosnik + Ulrich Drepper + + * bits/locale_facets.h: Hack in solaris support. + * src/locale.cc: Here too. + +1999-12-18 Gabriel Dos Reis + + * docs/17_intro/TODO: Update + * docs/17_intro/RELEASE-NOTES (New): Update. + +1999-12-17 Benjamin Kosnik + + * bits/c++config.h.in (__GLIBCPP__): Bump. + * docs/17_intro/RELEASE-NOTES: Update, Gaby please add your stuff. + * docs/17_intro/TODO: Update. + + * bits/locale_facets.h: Touch this too. + * bits/localefwd.h: Add typedefs for loooooong vector names. + * bits/locale_facets.tcc (locale::operator()): Need parens. + (has_facet): Simplify. + * src/locale-inst.cc: Add instantiations. + * src/locale.cc: Tweaks. + + * bits/std_streambuf.h: Move indeterminates into. . + * bits/std_fstream.h: Here. + * bits/fstream.tcc (underflow): Rewind just for ios_base::out + streams. + * bits/sstream.tcc: Very minor formatting tweaks. + * bits/std_streambuf.h (_M_set_determinate): If exclusively an + input buffer, set _M_buf to offset. + * bits/istream.tcc (std): Tweaks. + * testsuite/27_io/istream_unformatted.cc (test05): More tweaks, + include fstream. + * testsuite/27_io/filebuf.cc: Tweaks. + +1999-12-17 Phil Edwards + + * configure.in: Add OPTLEVEL, -O2 for gcc 2.96+, nothing otherwise. + * configure: Regenerate. + * src/Makefile.am: Use OPTLEVEL in CXXFLAGS. + * src/Makefile.in: Regenerate. Also picks up OTHER_CXXFLAGS rename + to OPTIMIZE_CXXFLAGS from a previous revision (1.96) to Makefile.am. + +1999-12-17 Phil Edwards + + * docs/21_strings/stringtok_std_h.txt: New algorithm + suggested by Chris King. + * docs/21_strings/howto.html: Link to new version. + +1999-12-16 Gabriel Dos Reis + + * bits/valarray_array.h (__valarray_sum): Use operator+=, not + operator+. + * docs/17_intro/TODO: Update. + +1999-12-15 Phil Edwards + + * docs/gentop/footchunk.html: Updated, fixed CRLFs. + * docs/gentop/gentop: Ditto. + * docs/gentop/headchunk.html: Ditto. + * docs/*.html: Regenerated from gentop. + * docs/*/howto.html: Updated as test. + * docs/faq/index.html: Updated, fixed CRLFs. + * docs/faq/index.txt: Regenerated. + +1999-12-15 Gabriel Dos Reis + + * mknumeric_limits (OUT_C): restart only if $OUT_C is present. + + * bits/std_complex.h + (complex::complex(const complex&), + complex::complex(const complex&)): Define. + + * docs/17_intro/TODO: Update. + +1999-12-13 Benjamin Kosnik + + * bits/istream.tcc (seekg): Don't set _M_gcount. + (tellg): Same. + * bits/fstream.tcc (filebuf::underflow): Re-sync + external byte sequence's input buffer only. . . + * testsuite/27_io/istream_unformatted.cc (test04): New tests for + tellg, seekg and filebufs. + (test05): Same for stringbufs. + * testsuite/27_io/istream_unformatted-2.tst: New file. + * testsuite/27_io/istream_unformatted-1.tst: New file. + * testsuite/27_io/istream_unformatted-1.txt: New file. + * testsuite/21_strings/inserters_extractors.cc (test05): Change + output file. + +1999-12-13 Phil Edwards + + * docs/gentop/*: New directory, containing bits for the homepages. + * docs/*.html: Regenerated from gentop. + * docs/*/*.html: Entries added and regenerated. + +1999-12-13 Benjamin Kosnik + + Efforts to get -O2 to work with -Winline -Werrors. + * bits/valarray_array.h (__valarray_fill(_Tp*, size_t, const + _Tp&): Remove inline declaration, as cannot be inlined and + -Winline -Werror complains. An interesting question is why this + cannot be inlined, as I can see no real reason to disqualify it. + (__valarray_product(const _Tp*, const _Tp*)): Same here. + * bits/std_valarray.h (valarray::operator[](size_t)): Same here. + + * docs/17_intro/TODO: Update. + +1999-12-12 Benjamin Kosnik + + * bits/std_fstream.h (seekpos): Tweaks, fixes. Move definition to + fstream.tcc. + * bits/basic_file.h (filepos_cur()): Make pointers themselves be + the resultant position. + * bits/fstream.tcc (seekoff): Explicitly set return value to + resultant external byte sequence position, not value returned from + _M_file->seekoff. Need to make + (seekpos): New definition. + + * bits/istream.tcc (seekg): As per Library Issues List 136, set to + just istream. Necessary, or else tellg will give an invalid stream + position, but seekg will return a valid stream position, which is + not groovy: see testcase addition. + * bits/ostream.tcc (seekp): Same. + + * bits/streambuf.tcc (_S_copy_streambufs): Simplify. + * bits/sstream.tcc: Tweaks. + * bits/locale_facets.tcc: Tweaks. + (num_put::do_put(iter_type, ios_base, char_type, const void*)): + Re-write in a way that is easier for the inliner to work with. + * bits/ios_base.h: Use explicit static_cast(...) notation. + +1999-12-10 Benjamin Kosnik + + * bits/locale_facets.tcc: Tweaks. + * bits/locale_facets.h (use_facet): Can't inline, remove inline + from declaration. + * bits/localefwd.h: And here. + * bits/std_ostream.h: Tweaks, sentry ctor can't be inlined. + * bits/ostream.tcc: Put here. + + Frank Ch. Eigler + * src/Makefile.am: Adjust CXXFLAGS, add AM_CXXFLAGS. + +1999-12-08 Benjamin Kosnik + + * bits/sstream.tcc (stringbuf::seekoff): Long overdue revamp. Make + in and out buffers update independently. + + * bits/basic_ios.h: Minor formatting. + * bits/fstream.tcc (std): Fix indentation. + +1999-12-08 Chip Salzenberg + + * bits/char_traits.h (char_traits<>): Move not_eof() functions + after corresponding eof() functions, so they're easier for the + compiler to inline. + * bits/locale_facets.h (money_base::__default_pattern): Move + static variable out of inline functions. + (_Moneypunct<>::do_{pos,neg}_format): Use it. + * src/locale-inst.cc (money_base::__default_pattern): Define it. + +1999-12-08 Benjamin Kosnik + + * bits/std_fstream.h (filebuf::open): Tweak. + * bits/fstream.tcc (filebuf::seekoff): Simplify, fix. + * bits/std_ios.h: Minor tweaks for headers. + +1999-12-06 Benjamin Kosnik + + * bits/c++config.h.in (_GLIBCPP_FULLY_COMPLIANT_HEADERS): New macro. + * src/string-inst.cc: Add guards . . . + * src/misc-inst.cc: And here. + * bits/std_sstream.h: And here. + * bits/std_fstream.h: And here. + * bits/std_streambuf.h: And here. + * bits/std_istream.h: And here. + * bits/std_ostream.h: And here. + +1999-12-06 Scott Snyder + + * bits/istream.tcc (basic_istream::read): Try to handle __n == 0 + case. + (basic_istream::readsome): And here as well. + * testsuite/27_io/istream_unformatted.cc: Test a zero-length + read(). + +1999-12-06 Mumit Khan + + * bits/istream.tcc (basic_istream::ignore): streamsize is not + necessarily an `int'. + +1999-12-06 Gabriel Dos Reis + + * mknumeric_limits: Don't use $CXXFLAGS when building + gen-num-limits. It's definitely wrong to use it since $CXXFLAGS + generally instructs the compiler not to emit template + instantiations and we end up with undefined symbols. Sigh. + +1999-12-05 Benjamin Kosnik + + * bits/locale_facets.tcc: Tweak. + (_S_format_long): Adjust showpos formatting for hex and oct. + * bits/std_ostream.h (operator<<(short)): Correctly deal with hex + and oct by formatting as unsigned. + (operator<<(int)): Same here. + * bits/ostream.tcc (operator<<(long)): Same. + (operator<<(long long)): Same. + (_S_pad_char): Actually treat ios_base::internal as something + worth doing correctly. Remove const designation on ios argument. + * testsuite/27_io/ios_manip_basefield.cc (test02): Add tests. + * testsuite/27_io/ostream_inserter_arith.cc (test03): Add tests. + +1999-12-04 Benjamin Kosnik + + * bits/std_sstream.h (streambuf::underflow): Check for mode == in. + +1999-12-03 Benjamin Kosnik + + * bits/locale_facets.tcc (num_put::do_put(bool): Fix. + + * bits/sstream.tcc (streambuf::seekoff): Add parens. + * bits/istream.tcc (istream::get(sb)): Handle exceptional events. + (operator>>(istream, _CharT*)): Change streamsize to int_type. + (operator>>(istream, _CharT&)): Fix typedef'd type to be _CharT. + * bits/ostream.tcc (ostream::operator<<(const char*)): Stub out + unused argument. + (ostream::operator<<(_CharT)): Fix. + + * bits/std_sstream.h: Temporarily disable including sstream.tcc to + see if this will increase compile speed. + * bits/std_ostream.h: Likewise. . . + * bits/std_istream.h: And here. + * bits/std_fstream.h: And here. + * src/misc-inst.cc: Add relevant header file includes for + instantiation purposes. + * src/string-inst.cc: And here. + * testsuite/27_io/ostream_inserter_arith.cc: Add test case. + +1999-12-02 Benjamin Kosnik + + * testsuite/27_io/istream_unformatted.cc (test03): Add tests. + * bits/istream.tcc (get(streambuf)): More fixes. + (istream::ignore): Get specific about numeric_limits::max() + requirements. + + * bits/fstream.tcc (filebuf::open): Tweaks for _M_last_overflowed. + (filebuf::close): Same. + * testsuite/27_io/filebuf.cc: Add tests for ios_base::ate. + +1999-12-01 Phil Edwards + + * mkcheck: Support for compilation/execution timing. + * testsuite/printnow.c: New file. + +1999-12-01 Phil Edwards + + * bits/std_cwchar.h: Test for _GLIBCPP_USE_WCHAR_T. + * configure.in: Test for presence of wchar.h before testing + for any of its features. + * configure: Regenerate. + +1999-11-30 Benjamin Kosnik + + Preliminary istream validations complete. + * bits/istream.tcc (istream::getline): Fixes. Tweaks to make + formatting more consistent. Removal of if-statements inside of for + loops. + (ignore): Fix. + (get): Same. + (putback): Same. + * bits/std_istream.h: Same. + * bits/sstream.tcc (stringbuf::pbackfail): Fix. + * testsuite/27_io/stringbuf.cc: Tweak. + * testsuite/27_io/istream_unformatted.cc (test02): Mo' tests. + + * bits/ostream.tcc (ostream::operator<<(arith)): Set badbit, not + failbit on failure, as per 27.6.2.5.2. + + * stl/bits/std_vector.h: Allow bool specializations. Should move + ext/std_bvector to bits, not ext, maybe. + +1999-11-30 Mumit Khan + + * configure.in: Fix checks for mbstate_t and WCHAR_MIN/MAX. + * configure: Regenerate. + +1999-11-29 Benjamin Kosnik + + * bits/istream.tcc (get(streambuf, char)): Fix. + * testsuite/27_io/istream_unformatted.cc (test03): Add tests. + +1999-11-29 Scott Snyder + + * bits/basic_string.h (append(const _Char*, size_type)): The + length of the appended string is given exactly by the second arg, + regardless of the data in the character array. + * bits/string.tcc (basic_string(const _CharT*, size_type, const + _Alloc&)): Likewise. + * testsuite/21_strings/append.cc (test01): Remove erroneous test + of basic_string::append. + +1999-11-29 Chip Salzenberg + + * Makefile.in: Tweaks for CXXFLAGS. + * */Makefile.in: Same. + +1999-11-29 Mumit Khan + + * conficd bgure.in: Check for wide character support. + * bits/c++config.h.in (_GLIBC_USE_WCHAR_T): Move from here ... + * acconfig.h (_GLIBC_USE_WCHAR_T): to here. + * bits/string.tcc (wstring::_S_find): Guard wchar_t specialization. + +1999-11-29 Mumit Khan + + * acinclude.m4: Fix typo. + * src/complex.cc: Fix macro line continuation. + +1999-11-29 Petter Urkedal + + * src/Makefile.am (CXXFLAGS): Add -Wno-format to allow non- + string literals in format, as used in locale-facets.tcc. + +1999-11-28 Benjamin Kosnik + + * testsuite/27_io/istream_unformatted.cc (test03): Add tests. + * bits/istream.tcc (istream::get): Extract to argument minus one. + Various tweaks and fixes. + +1999-11-22 Mumit Khan + + * bits/locale_facets.tcc: Workaround for compiler crash on + ix86-*-mingw32. + +1999-11-21 Mumit Khan + + * acinclude.m4: New file. New _GLIBCPP_CHECK_FLOAT_SUPPORT macro. + * configure.in: Use. + * acconfig.h: New _GLIBCPP_BUGGY_FLOAT_COMPLEX macro. + * src/complexf.cc: New _GLIBCPP_FLOAT_SPECIALIZATION macro. + * bits/std_complex.h: Use. + * src/complex.cc: Use. + +1999-11-19 Mumit Khan + + * testsuite/18_support/numeric_limits.cc: Add missing std:: prefix. + * testsuite/21_strings/inserters_extractors.cc: Likewise. + * testsuite/22_locale/ctype.cc: Likewise. + * testsuite/23_containers/multiset.cc: Likewise. + * testsuite/23_containers/vector_ctor.cc: Likewise. + * testsuite/26_numerics/binary_closure.cc: Likewise. + * testsuite/27_io/fpos.cc: Likewise. + * testsuite/27_io/ios_base_callbacks.cc: Likewise. + * testsuite/27_io/istream_extractor_arith.cc: Likewise. + * testsuite/27_io/istream_extractor_char.cc: Likewise. + * testsuite/27_io/istream_extractor_other.cc: Likewise. + * testsuite/27_io/istream_sentry.cc: Likewise. + * testsuite/27_io/ostream_inserter_char.cc: Likewise. + * testsuite/27_io/ostream_inserter_other.cc: Likewise. + * testsuite/27_io/streambuf.cc: Likewise. + * testsuite/27_io/stringstream.cc: Likewise. + +1999-11-19 Gabriel Dos Reis + + * bits/valarray_meta.h: Don't forget to define tanh + +1999-11-18 Philip Martin + + * src/stl-inst.cc: Use typedef to refer to iterator + * stl/bits/stl_algobase.h: Add traits based dispatch for + __normal_iterator in the copy()algorithm + * stl/bits/type_traits.h: Add _Is_normal_iterator trait support + +1999-11-18 Kevin Ediger + + * src/locale.cc (locale::_Imp::_Imp): Use auto_ptr to make + constructors for locale::_Impl exception safe. + +1999-11-18 Scott Snyder + + * stl/bits/stl_queue.h: The C++ standard gives the default for the + _Sequence template argument of priority_queue<> as vector<>, not + deque<>. + +1999-11-18 Benjamin Kosnik + + * bits/std_sstream.h (stringbuf::_M_really_sync): Add __iend as a + parameter. + * bits/sstream.tcc: Adjust here too. + +1999-11-17 Benjamin Kosnik + + * bits/sbuf_iter.h (istreambuf_iter::equal): Tweak. + * bits/istream.tcc (operator>>): Replace iostate(0) with + iostate(ios_base::goodbit), which is the same thing, but hopefully + a bit clearer. + * bits/locale_facets.tcc (do_get(bool)): Streamline, deal with + libraries issue list 17. + (do_gets): Don't set goodbit explicitly, instead only set on + failures as good bit is the default setting. + * bits/ios_base.h (setf): Set correctly. + * bits/fstream.tcc: Tweak. + * bits/std_sstream.h (_M_really_sync): Fix ibuffer positioning for + in|out bufs that are empty. . . + * testsuite/27_io/istream_extractor_arith.cc (test03): Add. + +1999-11-16 Benjamin Kosnik + + * testsuite/27_io/streambuf.cc (class testbuf): Don't set _M_buf_size. + * bits/std_streambuf.h (setp): Set _M_buf_size, _M_mode. + Add comments "all about _M_buf." + (setg): Set _M_mode. + +1999-11-16 Kevin Ediger + + * bits/locale_facets.tcc (_S_build_float_format): New function. + (_S_output_float): New function. + (num_put::do_put(double)): Use 'em. + (num_put::do_put(long double)): Use 'em. + * testsuite/27_io/ostream_inserter_arith.cc: New file. + +1999-11-15 Scott Snyder + + * bits/basic_file.h: Type of __off parm should be __c_streampos, to + match how libio is calling us. + * src/basic_file.cc (sys_seek): Likewise. + * bits/std_fstream.h (basic_filebuf::sync): Restore sync call. + +1999-11-15 Benjamin Kosnik + + * docs/17_intro/contribute.html: Add link to assignment form. + * docs/17_intro/libstdc++-assign.txt: New file. + + * mkcheck (TESTS_FILE): Move a copy of test files as well as + output files. + + * bits/std_streambuf.h (_M_buf_bump): New function. + * bits/streambuf.tcc: Mods to support _M_buf_bump. + (xsputn): Here. Also add checks for output valid. + (xsgetn): Add checks for input valid. + (sputc): Here. + (sgetc): Set _M_in_end to _M_buf + _M_buf_end. + * bits/std_sstream.h (_M_really_sync): Set _M_buf. + Set _M_out_end to variable-length-end. + * bits/sstream.tcc (overflow): Use _M_buf_bump. + (seekpos): Same. + (seekoff): Same. + * bits/fstream.tcc (std): Tweak formatting. + (filebuf::overflow): Simplify. + (filebuf::showmanyc): Same. + (filebuf::underflow): Same. + * testsuite/27_io/filebuf.cc: Fix. + * testsuite/27_io/ostream_inserter_other.cc: Fix. + * testsuite/27_io/ostream_inserter_other-2.tst: New file. + * testsuite/27_io/stringbuf.cc: Tweak. + * testsuite/27_io/streambuf.cc: Tweak. + * testsuite/27_io/istream_extractor_other.cc: Fix. + +1999-11-11 Matthias Klose + + * stl_deque.h: Use static_casts(signed_type). + +1999-11-11 Benjamin Kosnik + + Cleanups for callbacks, more regression hunting. Remaining + failures (1) due to last unresolved stringstream issues, not + regressions per se. + * bits/std_fstream.h: Revert. Disable call to _M_file->sync as + killing 27_io/filebuf.cc tests. . . need another solution. + + * bits/streambuf.tcc (_S_copy_streambufs): Fix. + * testsuite/27_io/istream_extractor_other.cc: Tweak comments. + + * bits/basic_ios.h: Add cached facets here. UGH. The standard + foils all attempts at a graceful, minimal implementation. + * bits/basic_ios.tcc: Tweaks. + * bits/istream.tcc: Fix. + * bits/ostream.tcc: Fix. + * bits/std_istream.h: Fix. + * bits/std_ostream.h: Fix. + * src/ios.cc (ios_base::imbue): Set _M_locale_ios before calling + callbacks. + * bits/locale_facets.tcc (std): Minor, minor formatting tweak. + (_S_pad_numeric): Make comprehensible. + +1999-11-10 Benjamin Kosnik + + * bits/std_ostream.h: Add callbacks for _M_fnumput. + (_S_ostream_fcache): New function. + Move functions out-of-line. + * bits/ostream.tcc: Put here. + + * bits/std_istream.h: Add callbacks for _M_fnumget. + (_S_istream_fcache): New function. + Move functions out-of-line. + * bits/istream.tcc: Put here. + + * bits/basic_ios.tcc (basic_ios::imbue): Tweaks, remove call to + _M_call_callbacks(), as ios_base::imbue does this already. + * src/ios.cc (register_callback): Clean. + (_M_call_callbacks): Same. + * bits/ios_base.h: Callback work. + * testsuite/27_io/ios_base_callbacks.cc (test01): New file. + +1999-11-10 Benjamin Kosnik + Matthias Klose + + * stl/ext/stl_rope.h: Fix initialization order. + +1999-11-09 Scott Snyder + + * bits/std_fstream.h (basic_filebuf::sync): Unconditionally call + _M_file->sync() so that redirection works correctly. + +1999-11-09 Benjamin Kosnik + + * bits/istream.tcc: Re-order. + * bits/std_istream.h: Fix getline problems. + * testsuite/27_io/istream_unformatted.cc: New tests. + + Clean up regressions. + * bits/std_sstream.h: Set initial stringbufs correctly. + +1999-11-09 Scott Snyder + + * stl_vector.h (_M_range_insert): Fix mixing pointers and + vector::iterator. + * testsuite/23_containers/vector_modifiers.cc (test01): New file, + tests. + +1999-11-09 Benjamin Kosnik + + * src/Makefile.am (CXXFLAGS): Add -Winline. + * src/Makefile.in: Regenerate. + +1999-11-05 Gabriel Dos Reis + + * bits/valarray_meta.h (_DEFINE_EXPR_UNARY_FUNCTION): When + building meta-expressions don't forget to take the contained + closures. + +1999-11-02 Benjamin Kosnik + + * configure: Regenerate. + +1999-11-02 Gabriel Dos Reis + + * bits/valarray_meta.h (_Expr<>::sum): Tweak. Use copy-initialization + syntax. + * bits/valarray_meta.h (min): Likewise. + * bits/valarray_meta.h (max): Likewise. + +1999-11-01 Benjamin Kosnik + + * bits/std_sstream.h (_M_really_sync): Take into account in | out bufs. + * bits/std_streambuf.h (_S_copy_streambufs): New function. + * bits/streambuf.tcc: Define. + * bits/istream.tcc (istream::operator>>(streambuf)): Rewrite. + * bits/ostream.tcc (ostream::operator<<(streambuf)): Rewrite. + * testsuite/27_io/ostream_inserter_other.cc: Add tests. + * testsuite/27_io/ostream_inserter_other-1.tst: New file. + + * bits/basic_string.h: Explicitly cast npos to unsigned type, + reported by Richard Atterer. + * bits/char_traits.h: For consistency's sake, here too. + + * configure.in: Bump version to 2.90.7. + +1999-10-31 Benjamin Kosnik + + * testsuite/27_io/ostream_inserter_char-1.tst: Check file output. + * testsuite/27_io/ostream_inserter_char.cc (test05, test01): Add tests. + * bits/streambuf.tcc (xsputn): Treat--size const char for long loops. + (xsgetn): Same. + * bits/sstream.tcc (seekpos): Tricks, mostly: check _M_mode before + writing into buffer. + (seekoff): Same. + +1999-10-29 Gabriel Dos Reis + + * bits/valarray_array.h (__valarray_sum): New function. + * bits/valarray_array.h (__valarray_product): Same. + + * bits/std_valarray.h (valarray::product): Comment out. + * bits/std_valarray.h (valarray::sum): Use __valarray_sum + instead of accumulate. + + * src/valarray-inst.cc: Remove explicit intantiation of + class multiplies, accumulate, valarray::product. + * src/valarray-inst.cc (__valarray_product): Instantiate + explicitly. + * src/valarray-inst.cc (__valarray_product(const + valarray&)): New function. + * src/valarray-inst.cc (gslice::_Indexer::_Indexer): Don't use + valarray::product. Use __valarray_product instead. + +1999-10-25 Benjamin Kosnik + + * bits/std_ostream.h (ostream.inserters.char): Correctly pad output. + (_S_pad_char): New function. Not done: ios_base::internal. + * bits/ostream.tcc: Clean for above. + * bits/locale_facets.tcc (_S_fill): Remove ostreambufiterator + specialization that was commented out, as ostreams now have to + correctly deal with padding. + * testsuite/27_io/ostream_inserter_char.cc (main): Add tests. + + * testsuite/21_strings/ctor_copy_dtor.cc(test02): Add test case + from mailing list. This is a bug, and should be fixed. + * testsuite/21_strings/inserters_extractors.cc (main): Tweak, fix typo. + +1999-10-22 Petter Urkedal + + * stl/bits/stl_numeric.h (__power): Replaced argument name `__opr' + to avoid conflict with gcc name mangling. + * stl/bits/stl_algo.h (__transform): Same. + +1999-10-21 Benjamin Kosnik + + * bits/ios_base.h: Change argument names. + * docs/17_intro/BADNAMES: Add __opr. + +1999-10-20 Benjamin Kosnik + + Work on compilation slowdowns from 10-5 to 10-12, which are + related to the _Callback_list inlining/merge-ifcation, which is + still a pending issue, but this stuff is necessary cleanup anyway. + + * src/ios.cc: Re-arrange. + * bits/ios_base.h: Tweak. + * bits/basic_ios.tcc: Move out of line definitions here, move + small out-of-line definitions inline. + * bits/basic_ios.h: From here. + + * bits/streambuf.tcc (pbackfail, overflow): Move back inline. + * bits/std_streambuf.h: From here. + +1999-10-19 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_char.cc: Add tests. + * bits/std_istream.h: Tweaks--set eofbit on eof condition. + * bits/istream.tcc (operator>>(istream&, string&): Remove + vestigial issspace hacks and use ctype::is instead. + (getline): Remove unnecessary loops, fortify and pasteurize. + (ws): Same. + +1999-10-18 Benjamin Kosnik + + * bits/istream.tcc (operator>>): Tweak. + * bits/std_istream.h: Fix according to library issues list 68. + Add typedefs. + + * bits/locale_facets.h: Fix table_size to be non-zero. + +1999-10-18 Vadim Egorov + + * src/basic_file.cc: ifdef instead of comment for binary mode + +1999-10-18 Russell Davidson + + * bits/std_sstream.h: Stringbuf initialization based on actual, + not allocated, size. + * testsuite/21_strings/inserters_extractors.cc (test06): Add test + case. + +1999-10-17 Benjamin Kosnik + + * testsuite/26_numerics/c_math.cc (test03): Tweak. + * testsuite/27_io/istream_manip.cc (test01): Corrections due to + sentry change. + * testsuite/21_strings/inserters_extractors.cc (test01): Same. + +1999-10-14 Benjamin Kosnik + + * bits/std_istream.h: Tweaks. + * bits/istream.tcc (istream::sentry::sentry()): Simplify, correct + as per issues list addition--set failbit, eof on empty buffers. + * testsuite/27_io/istream_sentry.cc: New file. + +1999-10-12 Chris Prince + + * bits/std_cstdio.h: Remove Solaris hacks. + +1999-10-12 Phil Edwards + + * docs/index.html: Fix minor typos and tweaks. + * docs/17_intro/contribute.html: Ditto. + * docs/*/howto.html: Ditto. More "EGCS"->"GCC" conversion, notes on + thread safety and binary I/O, links to external sites. + * docs/faq/index.html: EGCS/GCC cleanup, new entries for Cygwin + and MT. + +1999-10-12 Petter Urkedal + + * bits/std_cmath.h (abs(float)): When ::absf is not present, call + ::fabs(double) rather than ::abs(int). + +1999-10-11 Benjamin Kosnik + + * bits/std_streambuf.h: Fix minor blip--should explicitly return + *gptr(), not the result of underflow. + (pbackfail): Conform to default behavior. + (overflow): Same. + * bits/streambuf.tcc: Add out-of-line streambuf members. + (xsputn): Tweak. + (xsgetn): Tweak. + * testsuite/27_io/streambuf.cc: New file. + * testsuite/27_io/filebuf.cc: Correct test. + +1999-10-08 Benjamin Kosnik + + * bits/std_cmath.h: Correctly cast int to double. + * testsuite/26_numerics/c_math.cc: Add test. + + * mknumeric_limits (OUT_C): Tweaks. + * src/gen-num-limits.cc: Checks for WCHAR_MIN, WCHAR_MAX before + trying to instantiate type_traits. + * acconfig.h: Add _GLIBCPP_HAS_WCHAR_MIN_MAX. + * configure.in (LIBS): Plus checks for WCHAR_MIN, WCHAR_MAX. + * configure: Regenerate. + +1999-10-06 Benjamin Kosnik + + * bits/streambuf.tcc (streambuf::xsgetn): Rewrite. + (streambuf::xsputn): Put in break. + Aiming for parity between these two (mostly) similar functions. + Need to re-write tests. + + * bits/ios_base.h (ios_base::_M_copy_base): Remove declaration. + Make data members protected, not private. + * src/ios.cc (ios_base::_M_copy_base): Move _Callback_list into + ios_base.h. As called only once, collapse into . . . + * bits/basic_ios.h (basic_ios::copyfmt): Fix. + (basic_ios::clear): Throw ios_base::failure on occasion. + (basic_ios::exceptions): Fix. + * testsuite/27_io/ios_members.cc (test02): Add tests. + + * bits/fpos.h: Default initialize. + * testsuite/27_io/fpos.cc (test03): Add test. + +1999-10-04 Russell Davidson + + * src/basic_file.cc: Fix open modes. + +1999-10-04 Gabriel Dos Reis + + * bits/locale_facets.tcc (num_get<>::do_get): Fix typo. + +1999-09-23 Benjamin Kosnik + + * bits/streambuf.tcc: Yea. Fix this for real. + * testsuite/27_io/ostream_inserter_other.cc: Add file. + * src/Makefile.*: Regenerate. + +1999-09-22 Benjamin Kosnik + + * bits/std_cstdlib.h: Add more linux-specif hacks to the header + files so that stdtof and strtold will be declared. Some hacks + already exits in bits/std_cctype.h -- these should all be removed + at a later date. + * bits/locale_facets.tcc: Add cstring.h include. + _S_format_long: Use long, not int. + Add std_limits.h include, for numeric_limits. + * testsuite/27_io/istream.cc: Make instantiations work when using + -fhonor-std. + * testsuite/27_io/ostream.cc: Same. + +1999-09-21 Benjamin Kosnik + + * bits/fpos.h (fpos::operator streamoff): Make const, don't return + a reference. Same for operators == and !=. + * testsuite/27_io/fpos.cc: Add tests. + +1999-09-21 Gabriel Dos Reis + + * bits/valarray_array.h: Fix typo. + + * mknumeric_limits: Make sure we are regenerating things from + scratch. Otherwise things get redefined. Not good. + +1999-09-20 Benjamin Kosnik + + * bits/std_ostream.h: Fix typo. + * bits/std_istream.h: Same. + * bits/std_iomanip.h: Same. + + * bits/istream.tcc (sentry::sentry()): Remove optional tie with + ostream, as happens with underflow anyway. + * testsuite/27_io/istream.cc (main): New file. + * testsuite/27_io/ostream.cc (main): New file. + * testsuite/27_io/istream_unformatted.cc: Add tests. + + * src/Makefile.am (headers): Add new file. + * src/Makefile.in (headers): Regenerated. + + * bits/basic_ios.h: Remove local-related files. + * bits/basic_ios.tcc: New file, add locale-related items. + * src/misc-inst.cc: Add include of basic_ios.tcc, as a hack for now. + * testsuite/27_io/ios_members_static.cc: Change to + * testsuite/27_io/ios_base_members_static.cc: This. + * testsuite/27_io/ios_members.cc: New file. + * testsuite/27_io/stdios_basefield_manip: Change to + * testsuite/27_io/ios_manip_basefield.cc: This. + * testsuite/27_io/stdios_fmtflags_manip: Change to + * testsuite/27_io/ios_manip_fmtflags.cc: This. + + * bits/fpos.h: Fix discarding qualifiers on this when + using _M_position with a const fpos. + * bits/std_iosfwd.h: Tweak. + * testsuite/27_io/fpos.cc: New file. + +1999-09-17 Benjamin Kosnik + + * bits/streambuf.tcc (streambuf::xsputn): Tweak. + * bits/ostream.tcc: Tweak. + * testsuite/21_strings/inserters_extractors.cc (test04, test05): + Add new regressions. + +1999-09-16 Benjamin Kosnik + + * bits/basic_ios.h: Inline, tweak. + * bits/fstream.tcc (basic_filebuf::_M_really_overflow): Tweak, + pass back accurate return value to basic_filebuf::overflow. + * bits/streambuf.tcc (streambuf::xsputn): Fix overflow accounting. + This fixes sstream problems reported in libstdc++/9, but screws up + filebufs. That solution is pending. + +1999-09-15 Vadim Egorov + + * bits/streambuf.tcc (basic_streambuf::xsputn): Add check for + zero count puts. + * testsuite/21_strings/inserters_extractors.cc (test01): Add test. + +1999-09-08 Benjamin Kosnik + + * bits/c++config.h.in: Add emacs hints. + + * stl/bits/stl_range_errors.h: Don't define here, for now define + in stdexcept.cc along with string inlines __length_error, etc. + * src/stdexcept.cc: Define here. + * stl/bits/stl_config.h (__STL_CAN_THROW_RANGE_ERRORS): Enable, so + at(size_t) will be declared/defined. + (__STL_THREADS): Fix mess surrounding use of this, enable. + +1999-08-31 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_arith.cc: Fix. + * src/localename.cc: Tweak formatting, fix assignment to + const compiler errors. + +1999-08-25 Benjamin Kosnik + + * acconfig.h: Add absf, cosf. + * configure.in (use_builtin_sinf): Same. + * configure: Regenerate. + * bits/std_cmath.h: Add mess of defines. + * testsuite/26_numerics/modf_float.cc: Change to + * testsuite/26_numerics/c_math.cc: This. + + * src/locale.cc: Change. + * bits/locale_facets.h: Fix. + * testsuite/22_locale/ctype.cc: Add temporary tests. + +1999-08-24 Benjamin Kosnik + + * bits/fpos.h: Test. + + * docs/index.html: Add powerpc-linux-gnu results with gcc-2.95.1. + Fix database name for "libstdc++". + +1999-08-23 Benjamin Kosnik + + * mknumeric_limits (numeric_limits): Add default definitions to + member functions. + * testsuite/18_support/numeric_limits.cc: New file. + +1999-08-18 Benjamin Kosnik + + * bits/std_istream.h: Correct initialization. + * bits/std_ostream.h: Likewise. + * bits/std_sstream.h: Likewise. + * bits/std_fstream.h: Likewise. + * testsuite/27_io/stringstream.cc: Add test case. + + * bits/std_sstream.h: Replace ____string_type with __string_type. + * bits/basic_ios.h (basic_ios::rdbuf(sb*): Call clear(), as required. + * bits/std_ostream.h: Tweak dtor. + +1999-08-17 Benjamin Kosnik + + * src/Makefile.am (CXXFLAGS): Add -O2. + * src/Makefile.in: Likewise. + + * src/gen-num-limits.cc: Conditionally allow wchar_t. See what + this breaks. . . + * mknumeric_limits (numeric_limits): Uglify. + + * bits/std_istream.h: Fix warnings. + * bits/locale_facets.tcc: Collateral damage from + char_traits::int_type change. + + * testsuite/27_io/istream_extractor_char.cc: Terminate strings. + +1999-08-17 Benjamin Kosnik + + * docs/index.html: Add mailing list form. + * docs/27_io/howto.html: Add link to iostreams_hierarchy.pdf. + +1999-08-16 Benjamin Kosnik + + * bits/streambuf.tcc (streambuf::xsputn): Allow copies to continue + if overflow successfully allocates more space. + * bits/std_sstream.h: Adjust comments. + * bits/sstream.tcc (stringbuf::overflow): Copy buffer into string + before overflow forces a resize. + * testsuite/27_io/ostream_inserter_char.cc: New file. + + * bits/std_fstream.h: Remove declaration. + * bits/fstream.tcc: Move uflow. + * bits/std_streambuf.h: To here. + * bits/streambuf.tcc: Make consistent. + + * src/Makefile.am (WERROR): Enable. + * src/Makefile.in: Regenerate. + * bits/sbuf_iter.h: Tweak. + * bits/char_traits.h: (char_traits::eof): Use WEOF. + Use unsigned int as char_traits::int_type. + + * bits/ostream.tcc (ostream::putc(char)): Tweak. + * testsuite/27_io/iostream_objects.cc: Terminate string. + Move cin::operator>>(char*) test to extractor_char.cc. + * testsuite/27_io/stringstream.cc: Add stringstream instantiation. + * bits/std_istream.h (basic_iostream): Make explicit definition + for default ctor. + * bits/std_sstream.h: Fix typos. + * bits/fstream.tcc (_M_init_filebuf): Set to indeterminate for + basic_filebuf ctor with fileno open arguments. Thus, filebufs are + initialized in a consistent manner, no matter if the underlying + FILE/bit bucket is a tty or a text file or some other imaginary + construct. This and setting _M_buf_size to 1 for cin allows + istream::get(char) to work in a manner consistent with what others + expect. + + * docs/index.html: Link Stroustrup's C++ page. + +1999-08-12 Michael Cook + + * bits/fstream.tcc: Fix signed/unsigned -Wall warning. + * bits/istream.tcc: ditto. + * bits/sbuf_iter.h: ditto. + * bits/std_istream.h: ditto. + * src/Makefile.am: Add -Wall to CXXFLAGS. + * src/Makefile.in: ditto. + +1999-08-12 Benjamin Kosnik + Russell Davidson + + * bits/locale_facets.tcc (_M_extract): Finish off patch from yesterday. + * src/Makefile.am (myinstallheaders): Tweak, remove PHONY. + +1999-08-11 Benjamin Kosnik + + * testsuite/27_io/istream_unformatted.cc: New file. + + * testsuite/27_io/istream_extractor_arith.cc (test02): Add more + elaborate tests for int types with noskipws. + + * testsuite/27_io/istream_extractor_other-1.txt: New file. + * testsuite/27_io/istream_extractor_other-1.tst: New file. + * testsuite/27_io/istream_extractor_other-2.tst: New file. + * testsuite/27_io/istream_extractor_other.cc: Add tests. + * bits/istream.tcc: Fix operator>>(streambuf*). + + * testsuite/23_containers/vector_ctor.cc (test01): Add. + + * docs/index.html: Remove references to egcs. + * docs/17_intro/DESIGN: Same. + * docs/17_intro/contribute.html: Same. + * docs/17_intro/RELEASE-NOTES: Ditto. + * docs/17_intro/howto.html: Same here. + + Russell Davidson + * stl/bits/stl_vector.h (_M_insert_aux): + * bits/locale_facets.tcc (_M_extract): Tweaks for preliminary + decimal/floating point support. + * bits/locale_facets.h: Change _M_extract prototype. + * bits/char_traits.h (char_traits::to_int_type): Cast to unsigned. + * bits/std_istream.h (istream::read(char_type, streamsize)): Fix. + +1999-08-10 Michael Cook + + * bits/fstream.tcc: Fix for unused variable warning (-Wall). + * bits/ios_base.h: ditto. + * bits/istream.tcc: ditto. + * bits/locale_facets.h: ditto. + * bits/locale_facets.tcc: ditto. + * bits/std_streambuf.h: ditto. + * src/basic_file.cc: ditto. + * src/locale.cc: ditto. + * src/localename.cc: ditto. + +1999-08-10 Kirat Singh + + * bits/std_iomanip.h: Inline. + +1999-08-10 Alfred Minarik + + * bits/std_streambuf.h: Correct member initialization order. + * src/ios.cc: Add definitions for ios_base data members. + +1999-08-06 Phil Edwards + + * docs/index.html: Seventh snapshot updates. Minor tweaks. + * docs/faq/index.html: Ditto. Removed bugs sections that have + been fixed for a long time... Lots of "egcs" references still + exist. + * docs/faq/index.txt: Regenerated. + +1999-08-05 Gabriel Dos Reis + Andreas Amann + + * testsuite/26_numerics/binary_closure.cc (main): new test. + +1999-07-29 Andreas Amann + + * bits/valarray_meta.h: (_BinClos<>::_Binclos): fix typo causing + segmentation fault. + +1999-08-04 Benjamin Kosnik + + * docs/index.html (host): Put in testing status. + +1999-08-03 Benjamin Kosnik + + * docs/index.html: Update for libstdc++-2.90.6 release. + * docs/17_intro/RELEASE-NOTES (New): Update. + * docs/17_intro/BUGS: Update. + * bits/c++config.h.in (__GLIBCPP__): Bump version number. + * README (file): Update. + +1999-08-03 Benjamin Kosnik + + * src/Makefile.am (generated_headers): Remove bits/c++config.h as + a target. + ($(generated_headers)): Same. + * src/gen-c++config.cc: Remove, rename to + * bits/c++config.h.in: New file. Bump version number. + * configure.in: Generate bits/c++config.h at configure time. + * math/mathconf.h: include bits/c++config.h, not config.h. + + * bits/std_cmath.h: Fix remaining link error for solaris shared + builds. _GLIBCPP_HAS_BUILTIN_SINF has to be disabled for the time + being, as on Solaris this silently calls sinf, which does not + exist. + + * src/complex.cc: More tweaks. + +1999-08-03 Benjamin Kosnik + + * src/complex.cc: Same. + * math/complex-stub.h: Change. + * math/c_log10*.c: Change back to clog10*.c. + + * configure.in (NEED_C_LOG10): Delete. + * configure: Regenerate. + * math/Makefile.am: Change. + +1999-07-30 Benjamin Kosnik + + * math/Makefile.am: Fix, for real. + * configure.in (use_builtin_sinf): Ok, make autoconf solution. + * math/clog.c: Move to c_log.c. + * math/clog*: Ditto. + * math/c_log10l.c (c_log10l): Change function name. + * math/c_log10f.c (c_log10f): Change function name. + * math/c_log10.c (c_log10): Change function name. + + * math/complex-stub.h: Change to c_log* variants. + * src/complex.cc: And here. + +1999-07-29 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_other.cc: Correct last test. + * bits/sstream.tcc (stringbuf::overflow): Don't update the input + sequence, just the output sequence. + * bits/std_sstream.h (stringbuf::str()): Only in stringbufs return + the original string, all others use complicated heuristic. + + * src/complex.cc: Assume c_log10. + * math/Makefile.am (EXTRA_yes): Fix c_log/c_logf unresolved + symbols in shared libraries by making c_log/c_log10 part of the + "must cmpile" sources. This may not work on solaris, must check. + +1999-07-29 Benjamin Kosnik + + * bits/istream.tcc (operator>>(streambuf*)): Re-do. + * bits/std_istream.h: Fix char extractors. + * testsuite/27_io/istream_extractor_char.cc: Change. + * testsuite/27_io/istream_extractor_other.cc: Add tests. + +1999-07-28 Benjamin Kosnik + + * bits/std_cctype.h: Fix for solaris2.6 builds. + + * bits/istream.tcc: Fix, thanks Alfred. + * bits/std_istream.h: Formatting changes. + + * libio/Makefile.am (libio_la_SOURCES): Remove cleanup.c, so that + _IO_cleanup will not be undefined. + * libio/*: Regenerate. + + * bits/basic_string.h: More namespace-safety stuff. + * testsuite/27_io/istream_extractor_char.cc: Fix. + * testsuite/27_io/istream_extractor_arith.cc: Fix. + * testsuite/27_io/iostream_objects.cc: Fix. + * testsuite/27_io/ios_ctor.cc: Fix. + * testsuite/27_io/istream_manip.cc: Make namespace safe. + * testsuite/27_io/istream_extractor_other.cc: New file. + + * mkcheck (TESTS_FILE): Tweaks. + +1999-07-27 Benjamin Kosnik + + * src/gen-c++config.cc: Note here, change version. + * acconfig.h( _GLIBCPP_USE_CTYPE_ISBIT): New macro. + * src/locale.cc: Used here. + * configure.in (use_builtin_sinf): Check for _ISBit using autoconf. + + * aclocal.m4: Regenerate by running `aclocal -I m4.` + + * bits/istream.tcc: Fix. + * bits/std_istream.h: More changes to extractors. + + * testsuite/27_io/istream_extractor_char.cc: More. + * testsuite/21_strings/inserters_extractors.cc (test01): Fix logic + error in testsuite construction. + + * bits/std_istream.h: Partially revert. + * bits/std_ostream.h: Same. + * bits/std_sstream.h: Revert. + +1999-07-26 Benjamin Kosnik + + * bits/std_sstream.h: Change initialization. + * bits/std_ostream.h: Make default ctor/assign/operator= private. + * bits/std_istream.h: Same, also correct sentry args. + * bits/istream.tcc: Add correct sentry args. + + * testsuite/27_io/istream_extractor_char.cc: New file. + * testsuite/27_io/istream_extractor_arith.cc: New file, old file, + name changes making me dizzy. + +1999-07-26 Ulrich Drepper + Benjamin Kosnik + + * aclocal.m4, config.guess, config.sub, ltconfig ltmain.sh: Update + to libtool 1.3.3. + +1999-07-26 Gabriel Dos Reis + + * bits/std_complex.h: Tweak. Make the primary template class + complex work with user-defined numerical types. Provide member + definitions. Restructure. + (class complex): Uglify. Remove __value(). Rename __val + to _M_value. Rename __complex_value_type to _ComplexT. Make it + private. Remove dependency on __value(). Fix various explicit + specialization syntax. Declare a some functions friend. Now the + implementation is nearly comforming. + (class complex): Likewise. + (class complex): Likewise. + + * src/complex.cc: Tweak. Remove dependency on complex::__value(). + (sin, sinh, tan, than): Fix call to corresponding C9x function + syntax. + +1999-07-24 Benjamin Kosnik + + * bits/istream.tcc (ws): Fix error with failbit being set. + + Disabled due to egcs/gcc-2_95 internal compiler errors. + * src/Makefile.am (CXXFLAGS): Add -fsquangle -fhonor-std + -fnew-exceptions. Compiling with namespaces enabled will now be + the default. + * mkcheck (CXX_FLAG): Same. + * src/gen-c++config.cc (_GLIBCPP_USE_NAMESPACES): Yup. New macro. + * bits/std_cctype.h: Not enough to just define in namespace std if + ctype-isms are macros. Need to also define in namespace std:: if + the C functions are just plain functions. + + * src/gen-num-limits.cc: Fix spelling inconsistencies. + +1999-07-24 Gabriel Dos Reis + + * docs/18_support/howto.html: Start documentation. Need to keep + track of the ongoing discussion in th LWG reflector. + + * src/gen-num-limits.cc: Tweak. + (class predicate): New class. + (class value): Likewise. + Make the whole machinery more flexible. Add comments. + +1999-07-23 Benjamin Kosnik + + * bits/ios_base.h: Move state/exception functions into basic_ios. + * bits/basic_ios.h: Same. + * src/ios.cc: And here. Callbacks don't attempt to reset + state now. + + * bits/std_streambuf.h: Separate ios and streambuf locale data + members and cached facets. Using this convention: _M_locale_buf for + the streambuf-related classes, and _M_locale_ios for the ios + hierarchy. + * bits/fstream.tcc: And here. + * bits/basic_ios.h: And here. Also, add cached ctype. + * src/ios.cc: Ditto. + * bits/ios_base.h: Ditto. + * bits/std_istream.h: Use cached ctype facet. + * docs/27_io/iostreams_hierarchy.pdf: Update for new data member + arraignment. + + * testsuite/27_io/ios_ctor.cc: New file. + * src/ios.cc: Move _M_state init to basic_ios::init(). + * bits/basic_ios.h: To here. + + Attempt for some consistency in naming for testsuite/27_io/*.cc. + * testsuite/27_io/boolfmt.cc: Rename to stdios_fmtflags_manip.cc + * testsuite/27_io/octfmt.cc: Rename to stdios_basefield_manip.cc + * testsuite/27_io/istream_manip.cc: Rename to istringstream_manip.cc. + * testsuite/27_io/ostream_manip.cc: Rename to ostringstream_manip.cc. + +1999-07-22 Benjamin Kosnik + + * src/ios.cc: Tweak initializations of standard iostream + objects to closely match the standard. Tie cin/wcin, set flags on + cerr/wcerr + * bits/char_traits.h: Change from size_t to int_type, as per + standard. As per wide streams. + * bits/basic_ios.h: Infect with __ctype_type, as a preparation + for caching a bunch of ctype info. For instance, ctype_base::space + info needs to be stored somewhere, somehow. + * bits/std_istream.h: Also here. + * bits/std_ostream.h: Ditto. + * bits/std_istream.h (operator>>(istream, char): Aggh. Fixup. + * testsuite/27_io/iostream_objects.cacc (test01): Oh yeah. Fix + stream states. + + * bits/istream.tcc (ws): Fix. + * testsuite/27_io/istream_manip.cc: New file, test ws. + * testsuite/27_io/ostream_manip.cc: New file, test endl, ends, flush. + + * bits/basic_string.h: Provide a specialized member function for + _S_find using strchr. + * src/string-inst.cc: Put specializations here. + * bits/string.tcc: Small fix for find, remove typo. + * testsuite/21_strings/find.cc (test01): Add tests to catch this + find bug. . . + +1999-07-20 Benjamin Kosnik + + * bits/basic_ios.h: Put into basic_ios namespace. + Tweak widen/narrow. + +1999-07-19 Benjamin Kosnik + + * bits/std_sstream.h (stringbuf::sync): Change to _M_really_sync, + adjust _M_*_cur pointers inside the function, so callee doesn't + have to adjust. + * bits/sstream.tcc (stringbuf::overflow): Tweak. + + * mkcheck: Tweak. Add execution time field, even though it is not + implemented yet. Simplify pass/fail status notation. + +1999-07-18 Mumit Khan + + * configure.in: Check for float.h and underscored version of + math functions. + * acconfig.h: Add @BOTTOM@ section for handling underscored + math functions. + * configure: Regenerate. + * config.h.in: Regenerate. + * math/mathconf.h (float.h): Include conditionally. + (M_PI): Define conditionally. + (INFINITE_P): Define for Mingw. + * bits/locale_facets.tcc: Workaround for compiler crash on + ix86-*-mingw32. + * bits/std_cwchar.h (bits/std_cstddef.h): Include. + * src/locale.cc (bits/std_istream.h): Include. + (bits/std_ostream.h): Likewise. + +1999-07-18 Phil Edwards + + * docs/faq/index.html: Updated __black_count notes, fixed typos. + * docs/faq/index.txt: Regenerated. + +1999-07-15 Benjamin Kosnik + + * testsuite/27_io/stringbuf.cc: Cccchanges, latent bugs. + + * bits/sstream.tcc (stringbuf::overflow): Modify accounting of + newly-allocated buffer. + * bits/streambuf.tcc (streambuf::xsgetn): Aaaaaah. Fix final + overflow condition bits. + +1999-07-14 Benjamin Kosnik + + * bits/std_sstream.h (stringbuf::_M_init_stringbuf): Set + _M_buf_size to initial _M_string.size(), even though for + ostringstreams it is pretty pointless. It's necessary for + istringstreams. + (stringbuf::str()): Adjust. + (stringbuf::str()): Adjust, call _M_init_stringbuf. + * bits/streambuf.tcc (streambuf::xsgetn): Adjust return value for + overflow's possible success. + (streambuf::xsputn): Adjust. + + * testsuite/27_io/filebuf.cc: Adjust for the xsgetn re-write from + yesterday. + * testsuite/27_io/stringbuf.cc: Tweak. + * testsuite/21_strings/inserters_extractors.cc (test01): Remove + notes to myself. + * testsuite/23_containers/vector_cons.cc: Rename to be consistent + with other constructor tests to. . . + * testsuite/23_containers/vector_ctor.cc: New file. + +1999-07-14 Alfred Minarik + + * testsuite/*: Changes to make the testsuit compilable with + -fhonor-std. Contains direct qualification of library names with + std::. + +1999-07-13 Benjamin Kosnik + + * bits/streambuf.tcc: Tweaks. + (streambuf::xsputn): Optimize, fix for sstreams. + (streambuf::xsgetn): Same. + * bits/sstream.tcc (stringbuf::overflow): Adjust _M_buf_size + correctly, handle overflow/reallocate conditions correctly. + * bits/std_sstream.h: Fix typo. + _M_init_stringbuf(): Fix _M_buf_size initialization. + (stringbuf::str()): Construct return string if output has occurred. + + * bits/basic_string.h: Fix typo from yesterday's patch. + +1999-07-12 Ryszard Kabatek + + * bits/string.tcc: _M_mutate - clear _M_state again. + * bits/basic_string.h: In the three functions that return + an iterator set _M_state to -1 before return. + Also optimized two cases of operator+. + +1999-07-12 Phil Edwards + + * docs/index.html: Expand egcs-1.1.2 notes/links. + * docs/faq/index.html: And here. Add links to LWG issues-list. + * docs/faq/index.txt: Regenerate. (lynx rocks) + * docs/21_strings/howto.html: Fix notes on case conversion. + * docs/21_strings/stringtok_h.txt: Goodly spelling... + * docs/23_containers/howto.html: Stub for bitmasks. + * docs/27_io/howto.html: Add section on buffering, stub binary. + +1999-07-12 Nathan Myers + + * stl/bits/stl_tree.h (__black_count): Optimize. + +1999-07-09 Vadim Egorov + + * src/basic_file.cc: Cleanup in __basic_file destructor. + +1999-07-08 Benjamin Kosnik + + * bits/std_streambuf.h: Changes. . . + * bits/streambuf.tcc: Merge xsputn from filebuf into xsputn in + basic_streambuf, to be used for both filebufs and streambufs. + * bits/std_fstream.h (_M_init_filebuf): New function. + Take out specialized xsputn, put into basic_streambuf. + * bits/fstream.tcc: Define, call from both ctors. + * bits/std_sstream.h (_M_init_stringbuf): New function. + * bits/sstream.tcc: Tweak. + + * docs/27_io/iostreams_hierarchy.pdf: New file. + + * docs/17_intro/CHECKLIST (basic_string): Validation and + acceptance. Wooo-hoo! + + * bits/char_traits.h: Change int_type for char_traits general + template, so that 21_strings/capacity.cc will compile. + * testsuite/21_strings/capacity.cc: Add operators. + + * bits/string.tcc (string::compare): Clean up, re-implement. + * testsuite/21_strings/compare.cc: Tweak. + + * bits/string.tcc (string:_M_mutate): Keep leaked value in + _M_state, which means that whenever begin() or end() has been + called, the string is unshareable, period. By doing this, insert + and erase member functions that return iterators can remain + footloose and fancy free. + * testsuite/21_strings/invariants.cc: Update. + + * bits/basic_string.h (string::append): Fix self-referential + problems, ie when "this" is also an argument to a member function. + * bits/string.tcc: Tweak, same. + * testsuite/21_strings/append.cc: New file. + +1999-07-07 Benjamin Kosnik + + * bits/char_traits.h: Tweaks. + * bits/basic_string.h: Tweak. + * bits/fstream.tcc: Remove warning for _M_buf_size assignment. + +1999-07-06 Benjamin Kosnik + + * bits/std_streambuf.h: Absorb/acquire data members previously + working in basic_filebuf. + * bits/streambuf.tcc: Tweaks. + * bits/fstream.tcc: Adjust. + * bits/std_fstream.h: Move and rename the following functions: + _M_set_ideterminate, _M_is_indeterminate, _M_set_determinate are + now declared and defined in the base class, basic_streambuf. Oh + fuck it, move data members _M_buf, and _M_buf_size into + basic_streambuf as well. + + * bits/ostream.tcc: Tweak. + * bits/locale_facets.tcc: Fix typo in comments. + + * testsuite/21_strings/inserters_extractors.cc (test01): Change + state from good to not good, as eof() is set. + +1999-07-05 Benjamin Kosnik + + * bits/char_traits.h (char_traits::compare). Fix. + + * config.guess, config.sub: Update. + +1999-07-02 Ryszard Kabatek + + * bits/string.tcc: Check the __res_arg for a length error. + +1999-07-01 Benjamin Kosnik + + * bits/std_streambuf.h: Tweaks. Need to move _M_is_indeterminate + and related functions into basic_streambuf, from basic_filebuf to + take care of ostringstreams and empty strings. So that's groovy, + or will be groovy. + * bits/std_istream.h: Tweaks. + * bits/istream.tcc: Implement ws, getline, operator>> for string. + * bits/std_ostream.h: And here. + * bits/ostream.tcc: Same. + * src/misc-inst.cc: Add instantiations for ws. + + * src/string-inst.cc: Add instantiations for inserters and + extractors (operators << and >>, getline). + + * testsuite/21_strings/inserters_extractors.cc: Amazingly enough, + a testcase for getline and operators << and >>. Ostream tests are + failing right now, but istream tests should work. . . + + * bits/string.tcc: Change _S_max_size, as GNU malloc won't budge. + * bits/std_sstream.h: Revert. + + * testsuite/17_intro: header_[iosfwd, ios, iostream, iomanip, + istream, ostream, streambuf, fstream, sstream].cc: New files. + +1999-06-30 Ryszard Kabatek + + * bits/std_sstream.h (stringbuf::sync): Don't use string::begin() + and string::end(). + + * bits/basic_string.h (basic_string<>::_S_copy_chars): Add + specializations for _CharT*, iterator and const_iterator. + * src/string-inst.cc: Remove explicit instantiation, as + now explicitly specialized. + + * bits/basic_string.h: Add a size_type parameter to _M_clone with + a default value set to 0. + * bits/string.tcc: In _M_clone by the call of _S_create add the + value of the new parameter to _M_length. In reserve check + _M_state and use _M_clone instead of _M_mutate. + +1999-06-30 Benjamin Kosnik + + * bits/basic_string.h: Fix _S_max_size. + * bits/string.tcc: Add def here. + * testsuite/21_strings/insert.cc: Fix. + + * bits/sbuf_iter.h: Remove detritus. + * testsuite/24_iterators/istreambuf_iterator.cc: Add tests. + + * src/locale-inst.cc: Elaborate iterator/locale instantiations + to resolve alpha-osf4 build problems. + +1999-06-29 Benjamin Kosnik + + * bits/string.tcc: Fix signed/unsigned issues in compares. + * stl/bits/stl_deque.h: And here. + * stl/bits/stl_string_fwd.h: Remove __get_c_string. + +1999-06-29 Ryszard Kabatek + + * bits/string.tcc: New implementation and interface of _M_mutate. + Adapt the change in all functions that call _M_mutate. + * bits/basic_string.h: And here. + +1999-06-29 Benjamin Kosnik + + * testsuite/21_strings/capacity.cc (test01): Fix. + +1999-06-29 Phil Edwards + + * mknumeric_limits: Exit script if gen-num-limits isn't built. + +1999-06-29 Andreas Gruenbacher + + * stl/bits/stl_vector.h: Fix. + * testsuite/23_containers/vector_cons.cc: Add. + +1999-06-29 Gabriel Dos Reis + + * mknumeric_limits (LDFLAGS): fix. + +1999-06-29 Gabriel Dos Reis + + * mknumeric_limits (LDFLAGS): set it according to the system. + + * math/mathconf.h (NAN): Check whether host is running under + Cygwin and make the appropriate definition. + * math/complex-stub.h (nan): protect declaration. + +1999-06-28 Benjamin Kosnik + + * bits/sbuf_iter.h: Rename internal data structure to prevent + confusion between basic_ios and istreambuf_iterators internal + basic_streambuf data member. + * testsuite/24_iterators/istreambuf_iterator.cc: New file. + + * bits/basic_string.h: Remove conditionals, add input_iterator + version of S_construct again. + * bits/string.tcc: Same. + * src/string-inst.cc: And add explicit instantiation here. + + * src/gen-c++config.cc (_GNU_SOURCE): Take out both _GNU_SOURCE + and __USE_GNU macro defines, as single __USE_GNU use leading to + confusion on glibc2.1 systems (ie, RedHat 6.0). + + * src/Makefile.am (headers): Add std_utility to installed headers. + +1999-06-25 John Potter + + * stl/bits/stl_tree.h (insert_unique): Revert, just fix insert_equal. + +1999-06-25 Gilles Zunino + + * mknumeric_limits (LDFLAGS): Swap -lc and -lgcc. + +1999-06-24 Benjamin Kosnik + + * src/gen-c++config.cc (_GLIBCPP_*): Change all + macros to include _GLIBCPP as a distinct namespace. + * bits/*: And here. + * src/*: And here. + + * stl/bits/std_stdexcept.h: Forward-declare __Named_exception ctor. + * bits/basic_string.h: Remove __get_c_string. + * src/stdexcept.cc: Define ctor here. + * bits/ios_base.h: And fix ios_base::failure as well. + * src/ios.cc: Define here. + + * bits/std_streambuf.h: Add a private copy ctor and assignment + operator wrapped in _G_RESOLVE_LIB_DEFECTS. + * bits/ios_base.h: And here too. + + * bits/basic_string.h: Tweak. + * testsuite/21_strings/nonmember.cc: Add operator+ tests. + + * src/valarray.cc: Rename to. . . + * src/valarray-inst.cc: This. + * src/Makefile.am (sources): Change here. + * src/Makefile.in: Regenerated. + +1999-06-24 Vadim Egorov + + * bits/string.tcc(basic_string<>::_Rep::_S_create): Fixed + allocated size + +1999-06-24 Benjamin Kosnik + Tom Tromey + + * configure.in (use_glibc2): Eek, correct for non-glibc systems. + Use AM_CONDITIONAL to get us out of this jam. . + * libio/Makefile.am: Same. + * */Makefile: Regenerated. + +1999-06-24 Benjamin Kosnik + John Potter + + * stl/bits/stl_tree.h (insert_equal): Fix. + * testsuite/23_containers/multiset.cc: New file. + +1999-06-23 Benjamin Kosnik + + * configure.in (test for glibc2): Correct AC_TRY_COMPILE so that + this works correctly on glibc-2 systems. This should allow + simplified linking on these systems, and successful linking on Red + Hat 6.0 systems. + * configure, Makefile: Regenerate. + + * bits/std_cwctype.h: Add missing 'w' to _S_iswpunct_helper name. + + * testsuite/ext: New directory. + * testsuite/ext/headers.cc: New file. + +1999-06-23 Vadim Egorov + + * stl/ext/hash_set: include missing headers + * stl/ext/hash_map: Same + * stl/ext/slist: Same + +1999-06-17 Gabriel Dos Reis + + * bits/std_cmath.h: comment out modf. Kills build on hpux10.20 + +1999-06-15 Benjamin Kosnik + + * src/Makefile.am (sources): Regenerate. + * mkcheck: Add TESTS_FILE as a way of controlling what testcases + are run. + +1999-06-14 Benjamin Kosnik + + * src/string-inst.cc: Change _S_construct signature, to + track requested allocation size versus valid input iterator range. + * bits/basic_string.h: Here too. + * bits/string.tcc: And here. + +1999-06-12 Benjamin Kosnik + + * mkcheck (LOG_FILE): Correctly append errors. + + * stl/bits/stl_iterator.h: Revert previous, delirious, change. + + * bits/basic_string.h: Change _Rep::_M_data to _Rep::_M_refdata, + to clarify differences between basic_string::_M_data() calls and + _Rep::_M_data() calls. + * bits/std_string.h: Fix. + Put in check for out_of_range in substr. + * bits/string.tcc: Fix for _S_find. + + * testsuite/21_strings/compare.cc: Add tests. + * testsuite/21_strings/find.cc: New file. + * testsuite/21_strings/substr: New file. + * testsuite/21_strings/replace.cc: New file. + +1999-06-11 Gabriel Dos Reis + + * bits/valarray_array.h: __restrict__ify pointers. + + * bits/std_valarray.h: Tweak. + (valarray::cshift, valarray::shift): use __builtin_alloca. + + * bits/gslice_array.h: Tweak. Reflect changes in bits/gslice.h + + * bits/gslice.h: Tweak. + (class gslice::_Indexer): new class. + (gslice::gslice(const gslice&)): implement copy-ctor to support + ref-counted index. + (gslice::operator=(const gslice&)): support ref-counted index. + (gslice::_M_convert_to_index): delete. + + * src/valarray.cc: New file. + (__gslice_to_index): turn a gslice into a valarray + (ctor gslice::_Indexer::_Indexer): implement. + + * src/Makefile.am (sources): add valarray.cc + * src/Makefile.in: regenerate. + +1999-06-08 Benjamin Kosnik + + * stl/bits/stl_iterator.h (__normal_iterator::const_iterator + ctor): Put in a const_cast. + + * testsuite/21_strings/invariants.cc: New file. + + * testsuite/21_strings/insert.cc: Add exception handling bits. + * testsuite/21_strings/ctor_copy_dtor.cc: Same. + + * src/wstring-inst.cc: Add c++config.h include. + + * bits/basic_string.h: Fix const operator[] for size == pos. + Add _M_leak for rbegin, non-const. + Add _M_leak for rend, non-const. + Make member function at standards conformant. + Add _S_terminal to _Rep for operator[] const, add this into + c_str() as well. + * bits/string.tcc: Add static member definition here, + temporarily. + + * testsuite/21_strings/element_access.cc: Add tests. + +1999-06-08 Vadim Egorov + + * bits/fstream.tcc (_M_really_overflow): Fixed size of + conversion buffer. + +1999-06-08 Phil Edwards + + * bits/fstream.tcc (basic_filebuf::xsputn): Fix off-by-one count + caused when __testinit is true. + * bits/ostream.tcc (basic_ostream::op<<(streambuf*)): Write buffer + using rdbuf()->sputn rather than _M_fnumput->put. + +1999-06-08 Benjamin Kosnik + + * testsuite/23_containers/bitset_ctor.cc: New file. + * stl/bits/std_bitset.h (__BITSET_WORDS): Fix integration bug. + +1999-06-08 Phil Edwards + + * bits/fstream.tcc (basic_filebuf::underflow): Fix, rename local vars. + +1999-06-07 Benjamin Kosnik + + * testsuite/21_strings/element_access.cc: Finish off these tests. + * testsuite/21_strings/insert.cc (test01): Uncomment. + * testsuite/21_strings/ctor_copy_dtor.cc (test01): Finish off ctors. + * bits/basic_string.h: Tweak, okay, fix for real this time. + * bits/string.tcc: Same. + * bits/char_traits.h: Tweak. + +1999-06-07 Benjamin Kosnik + + * bits/std_cmath.h: Example of how to use the generated macro. + * acconfig.h: Add macro for sinf here. + * configure.in (LIBS): Add test for builtin math function sinf. + * configure: Regenerated. + + * bits/basic_string.h: Fix _S_max_size. + +1999-06-06 Benjamin Kosnik + + * bits/basic_string.h: Fixes for out-of-memory segv for large strings. + Remove _S_construct signature for forward_iterator_tag and + input_iterator_tag. + Clean _M_fold. + * src/string-inst.cc: Same, tweaks. + * bits/string.tcc: Same, tweaks. + + * testsuite/21_strings/ctor_copy_dtor.cc: Add/clarify tests. + * mkcheck (LOG_FILE): Fix filebuf-[2,3].tst checks. + * mknumeric_limits (LD_FLAGS): Add -nodefaultlibs -lc -lgcc as per + Gaby. + + * src/locale.cc: Final separation for char/wchar_t bits. + +1999-06-05 Phil Edwards + + * docs/index.html: Added link to book upon request'n'agreement. + * docs/23_containers/wrappers_h.txt: Added. + * docs/{23_containers,27_io}/howto.html: Added sections. + + * bits/std_fstream.h: Tweak. + +1999-06-05 Benjamin Kosnik + + * src/ios.cc: Same here. + * bits/std_iosfwd.h: More wchar_t defines. + + * bits/basic_string.h: Tweaks. + * bits/string.tcc: Tweak. Fix _S_construct to check for max_size + when doing error checking, as per LWG defect #83. + + * src/gen-c++config.cc: Fix comment. + + * testsuite/21_strings/ctor_copy_dtor.cc: New file, checks ctors, + assignments, dtors. + * testsuite/21_strings/element_access.cc: New file, checks for + operator[], at(...). + * testsuite/21_strings/insert.cc: New file, tests string::insert. + * testsuite/21_strings/char_traits.cc: New file, tests + for char_traits. + + * bits/utility.h: Remove, again. + * src/Makefile.am (std_headers): Remove utility.h. + * src/Makefile.in (std_headers): Regenerate. + + Alfred Minarik + * bits/basic_string.h: Move __out_of_range and __length_error into + namespace std. + +1999-06-05 Gabriel Dos Reis + + * testsuite/26_numerics/modf_float.cc: New file. + + * bits/std_cmath.h (modf(float, float*)): Fix signature. Correct + typo: use ::modff, not ::modf. + +1999-06-03 Vadim Egorov + + * bits/string.tcc (basic_string::_M_mutate): Fixed memory + allocation error + * testsuite/21_strings/capacity.cc (test01): Test. + +1999-06-03 Phil Edwards + + * bits/fstream.tcc: Re-order inits to stop warnings. Comment/move + unused variables to within #if 0 blocks to do the same. + * bits/std_fstream.h: Fix typos (one prevents compilation). + +1999-06-03 Benjamin Kosnik + + * src/wstring-inst.cc: Fix. + +1999-06-02 Benjamin Kosnik + + * bits/char_traits.h: Add _G_USE_WCHAR_T macro guards. + * stl/bits/stl_string_fwd.h: Same. + * bits/locale_facets.h: Same. + * bits/locale_facets.tcc: Same. + * src/wstring-inst.cc: And here. + + * src/gen-c++config.cc: Comment _G_USE_WCHAR_T. Leading to + problems on HPUX 10.20. + * your-build-directory-here/bits/c++config.h: Just kidding, do it + here as a temporary hack till the compiler/host problems get + worked out. + + * bits/locale_facets.tcc (num_get::do_get): Change from ifdef + HAVE_STRTOLD to HAVE_STRTOLD && !(__hpux). Apparently, problems + converting "long double" to struct long_double. Probably should be + done with one macro (HAVE_STRTOLD) at configure time. + + * bits/std_cmath.h: Comment out pow(double, int) definition as + gives re-declaration under hpux10.20. Revert previous change, as + kills linux/x86, solaris 2.7, hpux builds. These should be done + using autoconf, see std_cctype.h and the solutions started in + configure.in (see config.h for the generated file.) + + * mknumeric_limits (LDFLAGS): Remove '-nodefaultlibs -lc', as + -nodefaultlibs prevents linking under HPUX 10.20 as __main is not + defined. + + * docs/index.html: Add some useful links. + * docs/17_intro/contribute.html: Fix broken links. + +1999-06-02 Benjamin Kosnik + + * mkcheck (LOG_FILE): Add !/bin/bash instead of cygnus-style + paths. The rest of the world should be able to run this script + now. + + * src/Makefile.am ($(generated_headers)): Remove comment. + * Makefile*: Regenerate. + + * bits/std_locale.h: Remove detritus. + * bits/localefwd.h: Add include to undefine the isspace + macro. + +1999-06-01 Benjamin Kosnik + + * src/gen-c++config.cc: New file. Making c++config.h at configure + time by catting this file (nee bits/config.h) with the build + directories config.h. This is not a complete or perfect solution + but is better than what was in place previously. + * bits/c++config.h: Rename/move to above. + * src/Makefile.am (headers): Remove c++config.h. + (myinstallheaders). Add. + * Makefile*: Regenerated. + + * bits/std_cwchar.h: Add include of c++config.h for HAVE_* + definitions, so that wmemcmp, wcslen, wmemchr, etc are properly + declared only if not present in the host's wchar.h. + + * bits/locale_facets.tcc (std): Change _G_USE_STRTO* to HAVE_STRTO*. + + * bits/std_cmath.h: Define out, for the moment. Linux has no + __buitin_fsqrtl? Probably need some kind of configure trickery + here as well. + + * src/Makefile.*: Regenerate. + * bits/c++config.h: Add config.h include. + + * bits/std_cwchar.h: Remove remaining #error guard. + + * acconfig.h: Add bits for HAVE_LC_MESSAGES. + + * configure.in (LIBS): Replace previous effort for mbstate_t and + strtold/strtof with this implementation. + +1999 06-01 Gabriel Dos Reis + + * bits/std_cmath.h: Tweak. Add more functions. Use __builtin_xxx + whenever possible. + +1999-05-28 Benjamin Kosnik + + * bits/locale_facets.tcc (std): Eek: this left in. Autoconf bits + for determining mbstate_t differences across various hosts not + finished. + +1999-05-26 Benjamin Kosnik + + * bits/locale_facets.tcc: Change to ifdef. + + * bits/std_sstream.h (stringbuf::setbuf): Remove dynamic_cast. + * bits/std_fstream.h (filebuf::setbuf): Same. + + * bits/std_istream.h: Add ws declaration. + * bits/istream.tcc: Stub out definition. + + * docs/index.html: Fix broken link for design.txt. + + * configure.in: Test for mbstate_t. If wchar.h doesn't have it, + then set _G_NEED_MBSTATE_T. + * configure: Regenerate. + * bits/c++config.h: Move mbstate_t define. + * bits/std_cwchar.h: To here. + +1999-05-25 Ryszard Kabatek + + * bits/std_sstream.h: + basic_stringbuf<>::basic_stringbuf: fix. + basic_stringbuf<>::setbuf: + remove the temporary __string_type object, + remove the unnecessary dynymic_cast in the return value, + change the type of the returned value from __streambuf_type* + to basic_stringbuf<_CharT, _Traits, _Alloc>*. + +1999-05-25 Phil Edwards + + * bits/std_streambuf.h (streambuf::setbuf): Always return streambuf*. + +1999-04-25 Gabriel Dos Reis + + * bits/std_cmath.h: Tweak. Add float versions of the math functions + in . still incomplete and incorrekt. + +1999-05-24 Gabriel Dos Reis + + * mknumeric_limits (LDFLAGS): set appropriate link flags. + +1999-05-23 Phil Edwards + + * docs/17_intro/howto.html: Added links to text docs, + e.g., BUGS. + * docs/21_strings/howto.html: Updated sections and links. + * docs/21_strings/{gotw29a.txt,stringtok_h.txt}: Added. + * docs/faq/index.html: Updated what-works for sixth + snapshot. Also a number of "internal" links have been + fixed, now that the web pages are the docs directory... + * docs/faq/index.txt: Regenerated. + +1999-05-21 Benjamin Kosnik + + * bits/basic_string.h: Add Nathan's documentation on the string class. + + * testsuite/27_io/ios_members_static.cc: New file, for testing + ios_base::sync_with_stdio. + +1999-05-21 Benjamin Kosnik + + * bits/std_locale.h: Simplify includes. + * bits/loccore.h: Delete. + * bits/localefwd.h: Renamed, trimmed. + * bits/locfacets.h: Delete. + * bits/locale_facets.h: Rename, expanded. + * bits/loccore.tcc: Deleted. + * bits/locfacets.tcc: Deleted. + * bits/locale_facets.tcc: Resultant merge. + * bits/std_fstream.h: Modify include. + * bits/ostream.tcc: Same. + * bits/istream.tcc: Same. + + * src/locale-inst.cc: And here. + * src/locale.cc: Ditto. + * src/Makefile.am: Updated. + * src/Makefile.in: Rengenerated. + + * bits/std_istream.h: Move istream::sentry ctor definition. + * bits/istream.tcc: Move istream::sentry ctor here. + Add more detailed locale include here for ctype member functions. + * bits/ostream.tcc (std): And here. + + * bits/sbuf_iter.h: Include std_streambuf.h + + * bits/locfacets.h: Start separating this into a localeimp.h file. + * bits/loccore.h: Start separating this into a localefwd.h file. + Add std_climits for CHAR_BIT. + + * bits/ios_base.h (ios_base::sync_with_stdio): Stub in. + + * bits/char_traits.h: Tweak. + + * bits/ios_base.h: Remove INT_MAX, use 1<<16. + + * bits/std_ostream.h: Remove c++config.h include. + * bits/std_istream.h: Same. + * bits/std_streambuf.h: Same. + * bits/std_fstream.h: Same. + * bits/std_sstream.h: And here. + + * bits/std_iosfwd.h: Add _G_RESOLVE_LIB_DEFECTS here for streampos. + * bits/char_traits.h: Add include of std_cwchar.h for mbstate_t. + * bits/fpos.h: Tweak, format. + + * std/ciso646: New file. + * bits/std_ciso646.h: New file. + * src/Makefile.am (std_headers): Add ciso646. + (headers): Add bits/std_ciso646.h. + * src/Makefile.in: Regenerate. + * testsuite/17_intro/header_ciso646.cc: New file, disable + equivalance tests. + + * bits/fpos.h: Remove libio.h include. + * bits/basic_file.h: And here. + * bits/std_ios.h: Put here. + + * src/ios.cc: Simplify includes, tweak. + * bits/std_ios.h: Simplify include order. + * bits/ios_base.h: Modify ios_base::failure. + + * stl/bits/std_numeric.h: Change include from stl_iterator to + std_iterator. + +1999-05-19 Benjamin Kosnik + + * std/iostream: Remove static member __ioint. + * bits/std_iostream.h: Put here. + + * stl/bits/std_numeric.h: Remove unneccessary std_iostream.h include. + * stl/bits/stl_algobase.h: Same. + * testsuite/27_io/iostream_objects.cc: Regression tests. + * testsuite/27_io/hello.cc: Remove, subset of above. + +1999-05-19 Phil Edwards + + * docs/index.html: Tweak, update. + +1999-05-18 Gabriel Dos Reis + + * docs/17_intro/RELEASE-NOTES: remove outdated + documentation about numeric_limits. Correct CXXINCLUDE setting + documentation. + +1999-05-18 Phil Edwards + + * docs/{17_intro,18_support,19_diagnostics,20_util,21_strings, + 22_locale,23_containers,24_iterators,25_algorithms,26_numerics, + 27_io}/howto.html: Created, with some initial entries. + * docs/faq/index.html: Fixed some links. + * docs/faq/index.txt: Regenerated. + +1999-05-18 Benjamin Kosnik + + * bits/c++config.h (__GLIBCPP__): Set version to 19990518. + + * docs/17_intro/RELEASE-NOTES: Update. + * docs/index.html: Correct link to mailing list help page, update News. + * docs/faq/index.html: Change fifth to sixth for snapshot. + + * src/Makefile.am (myinstallheaders): Bring over Gaby's changes to + install $(top_builddir)/bits/std_limits.h into + $(myincludepfx)/bits. This was mistakenly omitted from yesterday's + Makefile.am changes. + * *Makefile*: Regenerate using automake. + + * mkcheck (LOG_FILE): Fix filebuf directory oddness. + * testsuite/27_io/filebuf.cc: Same. + +1999-05-18 Gabriel Dos Reis + + * docs/17_intro/CHECKLIST: update. + * docs/17_intro/TODO: update. + +1999-05-17 Phil Edwards + + * docs/{17_intro,18_support,19_diagnostics,20_util,21_strings, + 22_locale,23_containers,24_iterators,25_algorithms,26_numerics, + 27_io}/howto.html: Created, with some initial entries. + * docs/faq/index.html: Fixed some links. + * docs/faq/index.txt: Regenerated. + +1999-05-17 Benjamin Kosnik + + * src/Makefile.am (myinstallheaders): Missed removing missing.h. + * Makefile.in*: Regenerate. + +1999-05-17 Benjamin Kosnik + + * bits/std_streambuf.h: Same. + + * bits/loccore.h (_Bad_use_facet): Remove bits warned about. + * bits/locfacets.h (std): Same. + * bits/sstream.tcc: Same. + * testsuite/27_io/stringstream.cc: Tweak. + + * testsuite/27_io/filebuf.cc: Adjust. + * testsuite/21_strings/capacity.cc (test01): Add more + string::reserve tests. + + * bits/c++config.h: Remove broken CCTYPE. + * bits/std_cctype.h: Tweak, remove de-macroization, enable + sequestered topper implementation. + * bits/std_cwctype.h: Same. + + * bits/missing.h: Remove. + * bits/std_locale.h: Remove missing.h include. + + * stl/bits/std_bitset.h (bitset::bitset(string): Tweak to compile. + + * src/Makefile.am (headers): Add bits/std_cwctype.h. + INCLUDES: Add top_builddir. + * src/Makefile.in: Regenerate. + + * Makefile.am: Add check and check-install as new targets. + * testsuite/make_check_libfree++: Move to. . . + * mkcheck: Here. + * configure.in: Tweak versions. + * mknumeric_limits: Set paths correctly. + +1999-05-17 Gabriel Dos Reis + + * src/Makefile.in (myinstallheaders): add rule to install + std_limits.h. + + * bits/slice.h (class slice): don't const-qualify data members + since the copy and assignment operator is implicitly used. The + valarray specification is definitively a bad one. + + * Makefile.in (generate-limits-sources): fix typo. + + * docs/text/TODO: update. + * docs/text/CHECKLIST: update. + + * bits/gslice.h (gslice): fix bugglet. + (gslice::gslice): set _M_index_size to 0 whenever given lengths + (lj) of size zero. + + * src/Makefile.am (libstdc___la_SOURCES): add gen-num-limits. + * src/Makefile.in (libstdc___la_SOURCES): keep in sync. + [Note: **/Makefile.in should be generated from the corresponding + Makefile.am. The current situation is a litte chaotic. ] + +1999-05-16 Gabriel Dos Reis + + * mknumeric_limits: tweak. + + * Makefile.in (all): add target generate-limits-sources. + (generate-limits-sources): make a directory bits/ in top_builddir + where the generated std_limits.h is put; generate limitsMEMBERs.cc + directly under $(top_builddir)/src. Remains to put the appropriate + rule for installing std_limits.h. + + * src/Makefile.in (headers): remove bits/std_limits.h to this list. + (INCLUDES): add -I$(top_builddir) for bits/std_limits.h which is + now generated at build-time in the build directory + (libstdc___la_SOURCES): remove limitsMEMBERS.cc form this list + * src/Makefile.am: reflect changes in src/Makefile.in + +1999-05-12 Phil Edwards + + * docs/faq/index.html: Add more entries (5.4,5.5), finish + all but one empty entry. Add links for HOWTOs, but no files yet. + (Corrected HOWTO links are for bkoz's new scheme.) + * docs/faq/index.txt: Regenerated. + +1999-05-12 Benjamin Kosnik + + * testsuite/17_intro/headers.cc: New file. + * stl/bits/std_queue.h: Change stl_bvector.h include path. + * bits/std_cwctype.h: New file. + + * testsuite/27_io/filebuf.cc: Need to tweak directory structure. + +1999-05-11 Benjamin Kosnik + + * stl/bits/stl_config.h (__USE_MALLOC): Change underlying allocator. + Check __USE_MALLOC before defining specializations containing + __default_alloc_template. + * src/stl-inst.cc: Here too. + + * bits/basic_string.h: Change. + + * testsuite/make_check_libfree++: More tweaks. + * testsuite/21/capacity.cc: New file. + + * src/string.cc: Rename to be consistent with other inst files. + Rename to string-inst.cc. + * src/string*.cc: Change include. + * src/wstring.cc: Rename to wstring-inst.cc. + * src/wstring*.cc: Ditto. + * src/Makefile.in: Also here. + * src/Makefile.am: Ditto. + + * src/traits.cc: Remove. + * src/wtraits.cc: Same. + + Try a new way of organizing documentation, one with synchronicity + between testsuites and docs subdirectories, and see who yelps. + * docs/html: Remove, use chapter and subject specific directories + instead of forcing things immediately into format of + documentation. + * docs/text: Same. + * docs/image: Same. + * docs/faq/text, docs/faq/html: Remove, put in the docs/faq + directory and sort by filename and extension. + * docs/17_intro, 18_support, 19_diagnostics, 20_util, 21_strings, + 22_locale, 23_containers, 24_iterators, 25_algorithms, + 26_numerics, 27_io: Add. + * docs/17_intro/*: Populate with all the text files. . . + * docs/index.html: Construct. + + * testsuite/*: Update with same names as the docs subdir. + * testsuite/results: Where to stash conformance results for the + different snapshots, so that progress/size/speed issues can be + tracked over time. + +1999-05-10 Benjamin Kosnik + + * src/string.cc: Add _S_copy_chars instantiation, as well as + string::binary operators !=, ==, etc. + + * src/Makefile.am (CXXFLAGS): Remove -fvtable-thunks. + * src/Makefile.in (CXXFLAGS): Same here. + * testsuite/make_check_libfree++ (CXX_FLAG): And here. + +1999-05-07 Benjamin Kosnik + + * src/string.cc: Add missing member functions to instantiation list. + +1999-05-07 Benjamin Kosnik + + * src/misc-inst.cc: Remove unused string instantiations. + + * bits/string.tcc: Tweak, fix. + * bits/basic_string.h: Format. Fix reported error with c_str(). + + * testsuite/make_check_libfree++: Tweak for shared builds. + * testsuite/21/operations.cc: New file for testing c_str() etc. + +1999-05-06 Benjamin Kosnik + Ryszard Kabatek + + * stl/bits/stl_vector.h: Fix the code of vector<> for usage with + an iterator class. Delineate pointer versus iterator differences + in implementation. + * 23/vector_capacity.cc: New file, tests for above. + +1999-05-06 Gabriel Dos Reis + + * mknumeric_limits: Fix typo. 'unsigned lont' should read + 'unsigned long'. + * src/Makefile.am (libstdc___la_SOURCES): add limitsMEMBERS.cc, + generated by mknumeric_limits to the list. Now std_limits.h is + basically working. + * src/Makefile.in (generate-numeric-limits): new target to handle + automatic generation of bits/std_limits.h and src/limitsMEMBERS.cc. + (all): add target generate-numeric-limits. + (libstdc___la_OBJECTS): add limitsMEMBERS.lo + (libstdc___la_SOURCES): add limitsMEMBERS.cc + +1999-05-05 Benjamin Kosnik + + Irix build issues. + * bits/c++config.h (_G_USE_CTYPE_ISBIT): Defines new macro for + mask values in ctype_base. Move hacks for _ISBit to locfacets.h. + * bits/locfacts.h: Here. + +1999-05-05 Benjamin Kosnik + Ulrich Drepper + + Solaris build issues. + * bits/c++config.h: Define new macros, _G_USE_STRTOF and + _G_USE_STRTOLD. + + * bits/locfacets.tcc (num_get::do_get): Tweak long double and + float overloads to use the above macros. Account for the lack of + strtold on some systems, and revert back to using sscanf. + +1999-05-04 Ryszard Kabatek + + * bits/locfacets.tcc (num_get::do_get): Check the errno variable. + Use strtoul/strtoull for unsigned types. Check the ranges for + short/unsigned short and if necessary for int/unsigned int. + +1999-05-04 Benjamin Kosnik + + * src/gen-num-limits.cc (round_style): Need to use mknumericlimits + to generate bits/std_limits.h now, as the SGI std_limits.h is + being depricated. Not done, but should be done immediately: need + to make sure this script is run as part of the configuration + process, because without it "make" in a configured build directory + will fail. Also tweaked: added a space for float_round_style, and + used static_cast of zero to default-initialize, which should be ok + according to the standard. (see 8.5 p5 and 20.1.3). + * mknumeric_limits (OUT_C): Need this for x86 long + double extensions. + + * bits/basic_file.h: Include libio.h, not libioP.h. + * src/basic_file.cc: And add libioP.h include here, so that + _IO_init, et. al are well-declared. + + * testsuite/make_check_libfree++ (LIB_PATH): Test installed + headers, not source directory headers. + + * src/Makefile.am (headers): Add stl_range_errors.h, also adjust + for ext/*. Also add basic_file.h. + * src/Makefile.in (headers): Same. + + * bits/std_string.h: Reduce dependencies for faster + pre-processing. Move istream and ostream specific defines into + istream.tcc and ostream.tcc respectively. + * bits/string.tcc: And here. + * bits/basic_string.h: Move getline inline out-of-line, and to + istream.tcc. + * bits/istream.tcc: Move string::getline and operator>> here. + * bits/ostream.tcc: And here too. + + * bits/utility.h: Remove, as clashes with a standard header. Put + __OUTOFRANGE and __LENGTHERROR macros into string.tcc for the time + being, until this can be combined with SGI's approach. + * bits/string.tcc: Add macros, as above. + * bits/loccore.h: Add _Count_ones defines. + * bits/std_string.h: And here too. + * bits/std_locale.h: And here. + * bits/std_ios.h: Take out include here. + * src/Makefile.am (headers): Remove utility.h + * src/Makefile.in (headers): Remove utility.h + + * stl/bits/*: Update to SGI STL 3.20. + * stl/ext/pthread_alloc: Delete this file. + +1999-05-04 Phil Edwards + + * docs/faq/html/index.html: Add more entries + * docs/faq/html/index.txt: regenerated. + +1999-05-04 Gabriel Dos Reis + + * src/gen-num-limits.cc (DO_DEFINE_MIN_MAX): fix typo. + +1999-04-29 Benjamin Kosnik + + * bits/locfacets.tcc (num_get::do_get): Re-implement, with input + from Ulrich and Nathan. Remove extraneous string class usage, + tweak, clean, simplify and consolidate with a eye towards removing + duplcate code. Use strto[l, ll, f, d, ld] instead of sscanf. + Not done: dealing with leading zeros, wchar_t work. + * bits/locfacets.h: And here too. + + * doc: Remove. + +1999-04-29 Gabriel Dos Reis + + * docs/: add a FAQ. + * docs/faq/: New directory. + * docs/faq/html/: Likewise. + * docs/faq/text/: Likewise. + * docs/faq/html/index.html: New file. + * docs/faq/html/index.txt: Likewise. Generated from + docs/faq/html/index.html by lynx. + +1999-04-28 Benjamin Kosnik + Ryszard Kabatek and Branko Cibej + + * bits/locfacets.tcc: Modify. + +1999-04-27 Benjamin Kosnik + + * bits/sbuf_iter.h: Clean, fix istreambuf_iterator, make + conformant to 14882, wrap non-standard extensions with + _G_RESOLVE_LIB_DEFECTS, remove detritus and cruft, rennovate. + * bits/locfacets.tcc (num_get::do_get(bool)): Return correct iterator. + + * testsuite/27/istringstream_formatted.cc: Add tests. + + * bits/locfacets.h: Remove cruft from _Format_cache, continue + commenting, simplify. + * bits/locfacets.tcc: Same. + + 1999-04-27 Ryszard Kabatek + * bits/locfacets.tcc (num_get::do_get): + Fix the sscanf format parameter + for long long 'll' (as in C9X) instead of 'l'. + Fix the order of sscanf format parameters: "%dl" --> "%ld". + Change the type of the local variable '__conv' from 'string' + to 'const char*' and adapt the change. + +1999-04-26 Benjamin Kosnik + + * bits/locfacets.h: Document _Format_cache, and name data members + after the corresponding functions in numpunct. For instance: + _M_grsep -> _M_thousands_sep, and _M_decsep -> _M_decimal_point. + Break apart _M_boolnames{2] into _M_truename and _M_falsename. + * bits/locfacets.tcc: Same. + + * bits/locfacets.h (num_get::_M_extract): Don't allow groupings to + stop parsing--store for later analysis. + * testsuite/27/istringstream_formatted.cc: Add cases. + +1999-04-25 Gabriel Dos Reis + + * bits/valarray_meta.h: tweak. + (_UnFunBase, _BinFunBase, _BinFunBase1, _BinFunBase2, _BinBase1, + _BinFunBase2): rename typedef-name _Tp to _Vt to keep the compiler + happy -- boggus warning. + * bits/std_valarray.h: Fix. + (valarray::shift): Fix. Update comment. + (valarray::cshift): Fix. + +1999-04-23 Benjamin Kosnik + + * testsuite/27filebuf-2.txt: Delete. + * testsuite/27/filebuf.cc: Put output files directly into the + correct subdirectory (27). + + Alexandre Petit-Bianco + * testsuite/make_check_libfree++: Check generated (*.txt) file + against stored results file (*.tst). + +1999-04-22 Benjamin Kosnik + + * bits/locfacets.tcc: Fix. + + * bits/fstream.tcc (filebuf::seekoff): Output current out pointer. + (filebuf::overflow): Simplify. + (filebuf::xsputn): Correctly handle indeterminate state. + + * testsuite/27/istringstream_formatted.cc: Tweak. + * testsuite/27/filebuf.cc: Tweak. + * testsuite/27/filebuf-3.tst: Correct: this is the canonical + results file, please use this in the future to guarantee filebuf + positioning accuracy. + * testsuite/27/filebuf-2.tst: Same. + +1999-04-21 Benjamin Kosnik + + * bits/fstream.tcc (filebuf::xsputn): Add. + * bits/std_fstream.h: Declare. + + * src/basic_file.cc (__basic_file::open): Add O_CREAT to open + calls using ios_base::trunc. + + * bits/sstream.tcc (streambuf::overflow): Fix crasher. + + * testsuite/make_check_libfree++ (LOG_FILE): Ugh. Another fix. + * testsuite/27/27stringstream.cc: Same. + * testsuite/27/27stringbuf.cc: More tweaks. + * testsuite/27/27filebuf-2.txt: Remove. + + * testsuite/27/27filebuf-1.tst: Append, to force byte size over + BUFSIZE so that overflows/underflow can be tested with default + buffer setting. + * testsuite/27/27filebuf-1.tst: Add. + + * testsuite/*/*: Remove pre-pended chapter names, as they + duplicate the chapter info contained in the enclosing directory + anyway. + +1999-04-20 Benjamin Kosnik + + * bits/streambuf.tcc (streambuf::xsputn): Re-implement to conform + to sputc conditions. + + * bits/ios_base.h: Define here. + * src/ios.cc (ios_base::_M_clear): Remove hack. + * bits/basic_ios.h: Fix rdstate(). + + * bits/sstream.tcc (streambuf::seekoff): Fix. + * bits/fstream.tcc (filebuf::seekoff): Tweak comments. + + * testsuite/make_check_libfree++ (LOG_FILE): More c-c-c-changes. + * testsuite/24/24iterator.cc: Add/Fixes for DEBUG_ASSERT. + * testsuite/27/27stringstream.cc: Same. + * testsuite/27/27stringbuf.cc: Same. + * testsuite/27/27istringstream_formatted.cc: Same. + * testsuite/27/27filebuf.cc: Same. + + * bits/locfacets.h: Remove specializations for messages and + messages ctors. Same for moneypunct. Not required, not used. + * src/locale.cc: Remove definitions for above. + * src/misc-inst.cc: Revert, take out iomanip.h include. + * bits/std_iomanip.h: Tweak, format. + +1999-04-19 Benjamin Kosnik + + * bits/loccore.h: Format, move inline. + * bits/locfacets.tcc: Same. + * bits/locfacets.h: Same. + + Ulrich Drepper + * aclocal.m4: Re-generate. + * configure, configure.in: Same. + * m4/lc_messages.m4: New file. + +1999-04-18 Benjamin Kosnik + + * bits/std_ostream.h: Fix typedef for wchar_t instantiations. + * bits/sstream.tcc: Tweak. + + * std/iostream: Put __ioinit inside macro guards. + + * src/stlinst.cc: Delete and move to . . . + * src/stl-inst.cc: New file, plus wrapping in namespace std. + * src/Makefile.in: Change. + * src/Makefile.am: Same. + * src/misc-inst.cc: Add istringstream/ostringstream instantiations. + + * testsuite/make_check_libfree++: Efficiently format for minimal + space. Enforce stricter execution tests by enabling + -DDEBUG_ASSERT. + +1999-04-16 Benjamin Kosnik + + * docs/text/RELEASE-NOTES: Fix include typo. + + * src/Makefile.am (headers): Add istream.tcc. + * src/Makefile.in (headers): Add istream.tcc. + + * ltconfig, ltmain.sh, libtool: Update to libtool-1.2g. + +1999-04-16 Benjamin Kosnik + + * bits/locfacets.tcc (num_get::do_get(long)): Finish roughing in. + * bits/locfacets.h (num_get::_M_extract): New functin: + consolidate logic for do_get(...) members. + + * bits/sbuf_iter.h (istreambuf_iterator::operator++()): Fix. + * testsuite/27/27istringstream_formatted.cc: Add. + +1999-04-16 Martin v. Löwis + + * src/basic_file.cc (__basic_file::open): Fix thinko in + _G_HAVE_IO_FILE_OPEN bits. + * bits/std_istream.h (sentry::sentry(istream, bool)): Fix isspace bug. + * bits/std_cmath.h: Add stdlib.h include for ldiv_t. + * src/complex.cc (FCT): Qualify all functions with global namespace. + * src/locale.cc: Don't qualify memcpy and setlocale. + * src/stdexcept.cc (__out_of_range): Qualify out_of_range with std::. + (__length_error): Likewise, for length_error. + * src/stlinst.cc: Qualify instantiations with std::. + +1999-04-15 Benjamin Kosnik + + * C++STYLE: Add ChangeLog guidelines for member functions. + + * doc/* : Delete. + * BADNAMES, BUGS, C++STYLE, CHECKLIST, COPYING, + DESIGN, HEADER_POLICY, PROBLEMS, RELEASE-NOTES, TODO: Moved into + docs/text and made less strident. + + * bits/fstream.tcc: Change non-standard ctor to match Sun's sematics. + * bits/std_fstream.h: Same. + * src/ios.cc: Same. + + * bits/locfacets.h: Touch. + +1999-04-15 Ulrich Drepper + + * math/cexp.c (cexp): Use NAN instead of nan(""). + Reported by joel reed . + + * libio/libioP.h: Define _IO_seek_fpos_t and _IO_seek_off_t based on + _G_IO_IO_FILE_VERSION. Use these types in the prototypes. + * libio/fileops.c: Use _IO_seek_fpos_t and _IO_seek_off_t types + instead of #if cascades. + * libio/genops.c: Likewise. + * libio/ioseekoff.c: Likewise. + * libio/ioseekpos.c: Likewise. + * libio/strops.c: Likewise. + Patch by Chip Salzenberg . + +1999-04-15 Gabriel Dos Reis + + * docs: New directory. + * docs/html: Likewise. + * docs/text: Likewise. + * docs/image: Likewise. + + * bits/std_cmath.h: Add new functions. + (abs): overload for long and double. + (div): overload for long. + + * bits/valarray_array.h: Fix. + * bits/gslice.h: Adjust friend. + * bits/slice_array.h: likewise. + * bits/valarray_meta.h: likewise. + +1999-04-13 Benjamin Kosnik + + * bits/locfacets.h: More changes, for num_get for insertion + operators for integral types. Comment fields in _Format_cache. + * bits/locfacets.tcc: And here too: add preliminary long version. + * testsuite/27/27istringstream_formatted.cc: Add cases. + +1999-04-13 Mark Elbrecht + + * configure.in: Add locale.h to AC_CHECK_HEADERS argument. Call + AC_LC_MESSAGES macro. + * aclocal.m4 (AC_LC_MESSAGES): New. Determines if a target + supports LC_MESSAGES. + * config.h.in: Add entry for HAVE_LC_MESSAGES. + * src/locale.cc (locale::_S_normalize_category): Use the + HAVE_LC_MESSAGES macro to check for LC_MESSAGES support instead of + _G_NO_CLOCALE_HAS_MESSAGES. + * aclocal.m4 (AM_PROG_LD): For DOS style paths, simplify test to + '?:' from '?:\\' so any path beginning with a drive name matches. + +1999-04-12 Mark Elbrecht + + * src/basic_file.cc(sys_open) [O_BINARY]: Declare __testb. + +1999-04-12 Benjamin Kosnik + + * bits/locfacets.h: Tweak. + * bits/locfacets.tcc(do_get): Clean/fix bool method. + + * testsuite/21/21nonmember.cc: Same. + * testsuite/21/21compare.cc: Fix license. + * testsuite/27/27istringstream_formatted.cc: New file. + +1999-04-12 Gabriel Dos Reis + + * bits/valarray_meta.h: _BinFunBase1, _BinFunBase2, _BinBase1, + _BinBase2: new template classes; put in there to work around a + compiler limitation. The whole valarray architecture is now + working. + +1999-04-08 Benjamin Kosnik + + * bits/locfacets.tcc: Fix, format. + * bits/locfacets.h: Fix. + * src/locale.cc: Same, plus format. + + * bits/basic_string.h: Re-add definition here. + * src/string.cc: Take out. + +1999-04-08 Gabriel Dos Reis + + * bits/std_valarray.h: tweak. + * bits/valarray_array.h tweak. use _Expr. + * bits/slice_array.h: likewise. + * bits/gslice_array.h: likewise. + * bits/mask_array.h: likewise. + * bits/indirect_array.h: likewise. + * bits/valarray_meta.h: tweak. + _UnFunBase, _UnFunClos, _BinFunBase, _FunBase, _ValFunClos, + _RefFunClos, _UnBase, _UnClos, _BinBase, _BinClos, _SClos, _GClos, + _IClos: new template classes. + _Meta: renamed to _Expr. Made template with args. + _Constant: made template with two args. + +1999-04-05 Gabriel Dos Reis + + * bits/valarray_array.h: tweak. + +1999-04-06 Benjamin Kosnik + + * bits/basic_string.h: Whoops--fix blip. + +1999-04-06 Benjamin Kosnik + + Update to SGI STL 3.13 + * bits/basic_string.h: Add __get_c_string definition. + * stl/bits/stl_range_errors.h: New file. + * stl/bits/std_bvector.h: Same. + * stl/bits/*: Update. + +1999-04-04 1999 Gabriel Dos Reis + + * bits/slice_array.h: tweak. + * bits/gslice_array.h: tweak. + * bits/mask_array.h: tweak. + * bits/indirect_array.h: tweak. + * bits/valarray_array.h: tweak. + (__valarray_copy): replace copy with memcpy. + * bits/std_valarray.h: use __valarray_copy whenever possible. + use __valarray_fill instead of fill. + +1999-04-02 Gabriel Dos Reis + + * src/gen-num-limits.cc: new file + * mknumeric_limits: Ditto. + +1999-03-30 Benjamin Kosnik + + * bits/locfacets.tcc: Do a stub version of num_get for short, int, + and long types. + * bits/locfacets.h: Add num_get::get methods overloaded for int + and short, to resolve ambiguous overloads in istream insertion + operators. + +1999-03-30 Benjamin Kosnik + + * bits/std_istream.h: Fix. + * bits/istream.tcc: Fix. + +1999-03-30 Philip Martin + + * testsuite/24/24iterator.cc: fix ++/-- tests + +1999-03-29 Benjamin Kosnik + + * bits/std_ostream.h: Looks like this, actually: Fix up eh-isms. + * bits/ostream.tcc: Same. + + * bits/std_istream.h: Bring over ostream changes, implement member + functions. Baseline. + * bits/istream.tcc: New file. + +1999-03-26 Gabriel Dos Reis + + * bits/gslice.h (class gslice): fix friends template. + +1999-03-23 Benjamin Kosnik + + * bits/std_ostream.h: Fix sentry objects, implement seekp, tellp, + delete cruft, etc. + * bits/ostream.tcc: Same. + + * bits/std_istream.h: Minor tweaks. + +1999-03-18 Benjamin Kosnik + + * src/locale-inst.cc: Remove duplicate instantiations. + * bits/locfacets.tcc: Tweak definitions of static member. + +1999-03-18 Benjamin Kosnik + + * bits/std_fstream.h: Format: prepend "__" in front of + non-standard typedefs. + * bits/fstream.tcc: Match. + * bits/std_streambuf.h: Format: prepend "__" in front of + non-standard typedefs. + + * bits/sstream.tcc: Match. + * bits/std_istream.h: Format. + * src/locale-inst.cc: Add num_get instantiations. + + * bits/std_sstream.h: Fix crash in stringstreams. Remove member + _M_sb, a basic_stringbuf object, and use the basic_ios pointer + _M_streambuf instead. Make initializations sane. Fix + allocation/deallocation of _M_streambuf. + * bits/std_ostream.h: Fix initialization code. + (ctor): Eliminate redundant this->init(), let base class initialize. + (default ctor): New. Assume base classes already initialzed. + * bits/std_istream.h: Parallel work to ostream. + (ctor): Eliminate redundant this->init(), let base class initialize. + (default ctor): New. Assume base classes already initialzed. + Fix initialization of basic_iostream. + + * bits/std_fstream.h: While we're at it, make initializations sane + here too. Now matches sstream.h. + + * bits/string.tcc: Fix crash in basic_string::compare. + * bits/basic_string.h: And here. + * bits/c++config.h: Add comment about _G_USE_EXCEPTIONS. + + * testsuite/make_check_libfree++: Check shared as well. + * testsuite/27/27stringstream.cc: Add bits. + * testsuite/27/27boolfmt.cc: Add bits. + * testsuite/27/27octfmt.cc: Add bits. + +1999-03-17 Benjamin Kosnik + + * configure.in (USE_LONG_DOUBLE): signbitl link error. + + * bits/locfacets.h: Fix errors that cause build problems + with current egcs (template parameters have class scope). + * bits/locfacets.tcc: Same. + * src/locale-inst.cc: Same, clean. + * src/misc-inst.cc: Same, clean. + +1999-03-17 Ryszard Kabatek + + * stl/bits/std_memory.h: Modify auto_ptr::reset to reflect the + standard. Re-apply this previous patch. + +1999-03-17 Philip Martin + + * bits/basic_string.h: Use __normal_iterator<> for iterators. + * bits/std_sstream.h: Support __normal_iterator<> iterators. + * bits/string.tcc: Ditto. + * src/misc-inst.cc: Ditto. + * src/locale-inst.cc: Ditto. + * stl/bits/stl_iterator.h: Add __normal_iterator<>. + * stl/bits/stl_vector.h: Use __normal_iterator<> for iterators. + * testsuite/24/24iterator.cc: Add test cases for basic_string and + vector iterators. + +1999-03-16 Benjamin Kosnik + + * bits/locfacets.tcc: Remove macro hack. + * bits/locfacets.h: Tweaks. + * src/misc-inst.cc: Weed out locale-related instantiations. + * src/locale-inst.cc: Same. + + * RELEASE-NOTES: Make more changes. + * bits/c++config.h: Bump version number. + + * testsuite/make_check_libfree++: Collect diagnostics. + + * bits/std_ostream.h: Fix ostream initialization/destruction + problem, related to dtor cleanup and new cached facets, agggggggh. + * bits/ostream.tcc: Tweak. + * bits/locfacets.h: Remove all friends of iostream classes. + * bits/ios_base.h: Same. + * bits/streambuf.tcc: Tweak. + * bits/std_streambuf.h: Tweak. + * bits/std_fstream.h: Tweak. + * bits/fstream.tcc: Tweak. + * src/stdstreams.cc: Tweak. + * src/ios.cc: Close streams. + + * math/Makefile.in: Add missing files for shared link errors. + * math/Makefile.am: Same. + +1999-03-15 Benjamin Kosnik + + * src/locale-inst.cc: More wchar_t instantiations. + * src/misc-inst.cc: Missed a few bits. + * testsuite/make_check_libfree++: Add static and shared runs. + * src/ios.cc: Add clarity to ios_base::Init::~Init(). + +1999-03-15 Benjamin Kosnik + + * bits/std_ostream.h: Format, expunge, simplify. Add cached + facets. Resolve link errors. + * bits/ostream.tcc: Same. + * src/misc-inst.cc: Add ostream, wostream instantiations. + * src/Makefile.am: Add missing bits for stdstreams.cc. + * src/Makefile.in: Same. + * bits/std_iosfwd.h: Format. + * bits/locfacets.h (num_put): Add basic_ostream as a friend to + num_put so that cached _M_fnumput pointer can be deleted in + basic_ostream's dtor. Now everybody plays nice. + +1999-03-12 Gabriel Dos Reis + + * bits/gslice.h (class gslice): Make friends valarray, + gslice_array and _GliceExpression. + +1999-03-11 Benjamin Kosnik + + * RELEASE-NOTES: Update. + * src/ios.cc: Use do proper init. + * bits/std_streambuf.h: Tweak. + * bits/std_iostream.h: Take out static member. + * std/iostream: Put here. + * bits/std_ostream.h: Non-default ctor shouldn't smash _M_streambuf. + * bits/std_istream.h: Ditto. + * bits/basic_ios.h: Format. + * bits/ostream.tcc(write): Fix. + * bits/fstream.tcc: Fix stdstreams ctor to do a proper + initialization of the fstream class. + * src/stdstreams.cc: I'm baaaaaaaack. + +1999-03-10 Benjamin Kosnik + + * bits/ios_base.h: Correct comments. Add ios_base::init() + functionality. Format, tweak, expunge, clean, bathe, and hang to dry. + * src/misc-inst.cc: Add instantiations here. + * src/ios.cc: Clean. + * bits/std_iostream.h: Add wrappers, global ios_base::Init object. + * src/stdstreams.cc: Delete this file, as now unnecessary. + * bits/fstream.tcc: Add missing initialization bits for ctor. + * src/Makefile.am (libstdc___la_SOURCES): Delete here as well. + * src/Makefile.in (libstdc___la_OBJECTS): And here. + + * bits/streambuf.tcc: Tweak. + * bits/sstream.tcc: Here too. + + * bits/fstream.tcc: And change definition as well. + * bits/std_fstream.h: Change ctor. + * src/basic_file.cc (sys_open): Add call that opens a specific fileno. + * bits/basic_file.h: Add declarations. + + * testsuite/27/27hello.cc: New file. + + * bits/std_ostream.h: Move flush() inline. + * bits/ostream.tcc: From here. + + * bits/char_traits.h: Add include of fpos.h for streamoff/streampos. + * bits/std_ios.h: Change include libio to only when necessary. + * bits/fpos.h: Like here. + * ios_base.h: And here. + + * bits/locfacets.h: Change _Iostate to _Ios_Iostate. + * bits/locfacets.tcc: Same. + * bits/std_locale.h: Include std_ios.h not std_iosfwd.h. + * bits/std_iosfwd.h: Move _Ios_Iostate to ios_base.h + +1999-03-09 Benjamin Kosnik + + * bits/basic_ios.h: Change _M_ctype to _M_fctype. + + * bits/std_streambuf.h: Clean, tweak. + * bits/std_fstream.h: Same. + * bits/std_sstream.h: Same. + * bits/streambuf.tcc: Move most member functions out-of-line. + * bits/fstream.tcc: Same. + * bits/streambuf.tcc: Same. + + * bits/basic_file.h(filepos_cur): Set correctly. + (filepos_beg): Same. + (seekpos): Change to __c_streampos. + * src/basic_file.cc (std): Change to __c_streampos. + + * testsuite/27/27filebuf.cc: Round one is finished. + * testsuite/27/27filebuf-2.tst: New file, final output should match. + * testsuite/27/27filebuf-3.tst: Same. + +1999-03-08 Benjamin Kosnik + + * bits/basic_file.h: Fix typo, add comments about what to expect + from the various member functions in __basic_file. + + * bits/std_fstream.h: Re-do sync/underflow to work + together. Change from sys_read to xsgetn and from sys_write to + xsputn. As it should have been from the beginning. . . + +1999-03-06 Benjamin Kosnik + + * bits/c++config.h (__GLIBCPP__): Add versioning macro. + + * bits/basic_file.h(file_beg): New function. + (file_cur): Ditto. + + * testsuite/27/27filebuf.cc: Test in, out, in | out. + * bits/std_fstream.h: More _M_mode refinements. + (synch): Add bits for out mode only. + * bits/std_streambuf.h(xsputn): Correct for filebufs. + * bits/std_sstream.h: Ditto. + +1999-03-03 Benjamin Kosnik + + * bits/std_fstream.h: Fix _M_mode AND with ios_base::openmode. + * testsuite/27/27filebuf.cc: Modify. + * bits/c++config.h: Fix. + +1999-03-02 Benjamin Kosnik + + * bits/c++config.h: New macro, _G_RESOLVE_LIB_DEFECTS, used to put + code in place that diverges from the final standard, but has been + brought up on the library mailing list. + + * bits/std_fstream.h(underflow): Position all three internal + buffer pointers at the same initial position. Re-implement with + basic_filebuf abstraction. + (overflow): Ditto. + (seekoff): Ditto. + (seekpos): Ditto. + * bits/std_sstream.h: Move _M_mode down into base class + basic_streambuf. + * bits/sstream.tcc: Ditto. + * bits/std_streambuf.h: Ditto. + + * testsuite/27/27filebuf.cc: Tweak. + +1999-02-27 Benjamin Kosnik + + * bits/std_sstream.h: Ditto. + * bits/std_fstream.h: Fix blip. + +1999-02-26 Benjamin Kosnik + + * C++STYLE: Add cases. + * bits/std_fstream.h: Format. + * bits/std_streambuf.h: Ditto. + * bits/std_sstream.h: Ditto. + + * src/basic_file.cc(sys_seek): Fix stack delirium, by keeping + return type for _IO_file_seek and __basic_file::seek the same size. + * bits/basic_file.h: Ditto. + +1999-02-26 Benjamin Kosnik + + * bits/fstream.tcc: Add include guards. + * src/misc-inst.cc: Add instantiations for shared libes. + * src/locale-inst.cc: Add instantiaions for use_facet. + * bits/loccore.h: Remove specialization foward decls for + use_facet: perhaps add the whole lot of them later on. + * bits/std_fstream.h: Fix. + * bits/locfacets.h: Ditto. + * src/stdstreams.cc: Disable wide streams for now. + + * src/Makefile.am (CXXFLAGS): Change up. + * src/Makefile.in (CXXFLAGS): Ditto. + +1999-02-25 Benjamin Kosnik + + * src/basic_file.cc: Change to ios_base::seekdir from int. + * bits/basic_file.h: Ditto. + * bits/locfacets.h : Fix blip with new guard macros. + +1999-02-25 Benjamin Kosnik + + * stl/bits/stl_config.h (__STL_USE_STD_ALLOCATORS): Minor tweaking. + * bits/c++config.h: Clean. Remove _G_NO_STREAMBUF_ITERATORS and + _G_USE_NAMESPACE. + * amm1/locale: Remove unused defines. + * generic/locale: Ditto. + * src/ios.cc: Ditto. + * src/locale.cc: Ditto. + * src/locale-inst.cc: Ditto. + * src/localename.cc: Ditto. + * src/stdstreams.cc: And here. + + * bits/c++config.h (_G_USE_WCHAR_T): Fix. + * bits/loccore.h: Simplify, clean, add wchar_t guards. + * bits/loccore.tcc: Ditto. + * bits/locfacets.h: Ditto. + * src/locale-inst.cc: Ditto. + * bits/locfacets.tcc: Add do_put long long here. + +1999-02-24 Benjamin Kosnik + + * bits/std_streambuf.h: Add cached ctype facet, _M_ctype. + * bits/basic_ios.h: Clean. Replace _M_strbuf with + _M_streambuf. Use cached _M_cvt in basic_streambuf. + * bits/std_istream.h: Replace _M_strbuf with _M_streambuf. + * bits/std_fstream.h: Tweak. + + * bits/char_traits.h: Remove fpos definitions from here. . . + * bits/fpos.h: New file, put them here. Eventually, this may allow + the severing of char_traits and fpos dependencies. + * src/Makefile.in: Add fpos.h. + * src/Makefile.am: Ditto. + * bits/std_string.h: Add fpos.h include here. + * bits/std_ios.h: And here. + + * bits/std_streambuf.h: Change _M_init to _M_initialized. + * bits/ios_base.h: Remove cstdio include. + * bits/std_ios.h: ... Place here. + +1999-02-23 Benjamin Kosnik + + * src/Makefile.in (CXXFLAGS): Re-add -fvtable-thunks. + * src/Makefile.am (CXXFLAGS): Re-add -fvtable-thunks. + + * bits/basic_file.h: Comment, adjust arguments. + * src/basic_file.cc: Ditto. + + * bits/std_fstream.h(seekoff): Error is of fpos type, not integral + type: check and convert accordingly. Re-interpet "resultant stream + position" to indicate external byte sequence location, not internal + buffer info. + +1999-02-22 Benjamin Kosnik + + * mkcshadow: And change copyright here. + * src/Makefile.am (CXXFLAGS): Add -g -O2. Add new header + dependencies for stl_pthread_alloc.h, pthread_allocimpl.h, + stl_thread.h, and stl_iterator_base.h. + * src/Makefile.in (CXXFLAGS): Ditto. + * stl/backward/pthread_alloc.h: Remove. + +1999-02-19 Benjamin Kosnik + + * bits/std_streambuf.h (sungetc): Use standard defs for putback + position. + * bits/std_fstream.h (pbackfail): Correct. + (sungetc): Test. + (seekoff): Implement. + (seekpos): Re-do. + * testsuite/27/27filebuf.cc: Add test cases. + +1999-02-18 Benjamin Kosnik + + * bits/std_fstream.h: Go with basic_file's interfaces for dealing + with the external buffers, and stop mucking around with setting + and re-setting the external buf's pointers. Aka, clarity and + simplicity rule the day. + * src/locale.cc: Use memcpy in codecvt::do_in and codecvt::do_out. + Remove partial result and support code. + +1999-02-18 Ulrich Drepper + + * configure.in: Add hypot, hypotf, atan2f, expf, and copysignf to + list of function which have to be replaced. + Remove expf from list of functions to test for. + Define USE_LONG_DOUBLE in case the libm has partial support for long + doubles. + * Makefile.in: Regenerated. + * config.h.in: Likewise. + * configure: Likewise. + * libio/Makefile.am (LIBIO_SRCS): Add missing backslash. + * libio/Makefile.in: Regenerated. + * src/Makefile.in: Regenerated. + * string/Makefile.in: Regenerated. + * math/Makefile.am (EXTRA_DIST): Add hypot.c, hypotf.c, hypotl.c, + atan2f.c, expf.c, and $(EXTRA_yes). + (EXTRA_yes): Add signbitl.c mycabsl.c. + (libmath_la_LIBADD): Add $(EXTRA_$(USE_LONG_DOUBLE)). + (libmath_la_SOURCES): remove long double versions. + * math/Makefile.in: Regnerated. + * math/atan2f.c: New file. + * math/copysignf.c: New file. + * math/expf.c: New file. + * math/hypot.c: New file. + * math/hypotf.c: New file. + * math/hypotl.c: New file. + * math/cargf.c: Use correct function and macro names. + * math/ccos.c: Likewise. + * math/ccosh.c: Likewise. + * math/ccoshf.c: Likewise. + * math/ccoshl.c: Likewise. + * math/cexp.c: Likewise. + * math/cexpf.c: Likewise. + * math/cexpl.c: Likewise. + * math/clog.c: Likewise. + * math/clog10.c: Likewise. + * math/clog10f.c: Likewise. + * math/clog10l.c: Likewise. + * math/clogf.c: Likewise. + * math/clogl.c: Likewise. + * math/copysignf.c: Likewise. + * math/csin.c: Likewise. + * math/csinf.c: Likewise. + * math/csinh.c: Likewise. + * math/csinhf.c: Likewise. + * math/csinhl.c: Likewise. + * math/csinl.c: Likewise. + * math/csqrt.c: Likewise. + * math/csqrtf.c: Likewise. + * math/csqrtl.c: Likewise. + * math/ctan.c: Likewise. + * math/ctanf.c: Likewise. + * math/ctanh.c: Likewise. + * math/ctanhf.c: Likewise. + * math/ctanhl.c: Likewise. + * math/ctanl.c: Likewise. + +1999-02-17 Benjamin Kosnik + + * testsuite/27/27filebuf.cc: Add cases. + * testsuite/27/27filebuf-1.txt: Remove inadvertent garbage. + * bits/std_streambuf.h: Simplify, always have one return statement. + * bits/std_fstream.h: Tweak comments in underflow. + +1999-02-17 Ulrich Drepper + + * ltmain.sh: Update from libtool 1.2d and fix Solaris problems. + * ltconfig: Likewise. + +1999-02-16 Christophe Pierret + + * src/locale.cc: Fix assert. + +1999-02-16 Benjamin Kosnik + + FIXME: Still need some kind of solution for undefined math symbols. + * src/Makefile.in (locale-inst.lo): Compile with + -fimplicit-templates to fix Solaris link problem. + * src/Makefile.am: Ditto. + * libio/Makefile.in: Add stdfiles.c so that _IO_list_all is defined. + * libio/Makefile.am: Ditto. + * src/locale.cc: Provide some kind of def for _S_tolower. + * bits/locfacets.h: Fix declarations of ctype to + match ctype for _S_tolower, _S_toupper, _S_table. + +1999-02-10 Benjamin Kosnik + + * bits/loccore.tcc: Move member-template ctor inline... + * bits/loccore.h: ...here. + * src/locale-inst.cc: Add instantiation here. + + * testsuite/27/27stringstream.cc: Tweak. + + * bits/ostream.tcc: Include sbuf_iter.h. + + * bits/ostream.tcc: Convert *this to ostreambuf_iterator before + passing to num_put, as num_put's first argument is an interator, + not basic_ostream. + + * testsuite/make_check_libfree++: New file, runs through the + existing test files in the testsuite directory and makes sure + they link. + +1999-02-10 Brendan Kehoe + + * testsuite/21/21compare.cc: Fix typo. + * src/locale.cc (ctype::_S_{toupper,tolower,table}): + Don't try to provide non-linux versions, since it's impossible to + initialize their const references with the integer 0, no matter + how we try to cast it. + +1999-02-10 Benjamin Kosnik + + * bits/std_locale.h: Move std_vector.h dependency. + * bits/std_ios.h: ...from here. + * bits/std_string.h: ...and here. + * src/locale.cc: ..to here. + * bits/loccore.h: Ditto, add vector forward declaration, + make locale::_Impl data members pointers not containers. + * bits/loccore.tcc: Move out-of-line for now. + * bits/locfacets.h: Move vector dependency from here... + * bits/locfacets.tcc: ...to here. + * src/localename.cc: ..and here. + * src/locale-inst.cc: Add include of locfacets.tcc here. + + * stl/bits/stl_string_fwd.h: Make __get_c_string non-static. + * bits/basic_string.h: Can't use sizeof on an incomplete type. + * bits/string.tcc: Tweak. + * src/string.cc: And add __get_c_string def here. + + * bits/std_fstream.h: Yeah, comment the fill_n idea out as impractical. + + * src/stlinst.cc: Add include of stl_config.h. + +1999-02-09 Benjamin Kosnik + + * stl/bits/std_bitset.h: Update to SGI STL 3.12. + * stl/bits/stl_config.h: Tweak, update. + * stl/bits/std_stdexcept.h: Ditto, change stl_exception to + std_exception. + * stl/bits/std_memory.h: Reconstructed auto_ptr, Ditto. + * stl/bits/std_functional.h: Ditto. + + * stl/bits/stl_string.h: New file, SGI's string + implementation. For reference only, corresponding to string in + 3.12 source. + * stl/bits/stl_char_traits.h: As above. + + * stl/bits/pthread_allocimpl.h: New file corresponding to + pthread_alloc. + * stl/bits/stl_pthread_alloc.h: New file corresponding to + pthread_alloc.h + * stl/bits/stl_threads.h: New file. + + Note that SGI STL 3.12's file iterator.h is not used. + * stl/bits/std_iterator.h: Ditto. + * stl/bits/stl_iterator.h: Drop in replace. + * stl/bits/stl_iterator_base.h: New file, drop in replace. + + * stl/bits/stl_queue.h, stl_rope.h, stl_set.h, stl_stack.h, + stl_string_fwd.h, stl_tempbuf.h, stl_tree.h, stl_vector.h, + stl_pair.h, stl_multimap.h, stl_multiset.h, stl_list.h, + stl_hashtable.h, stl_hash_set.h, stl_hash_map.h, stl_function.h, + stl_deque.h, stl_alloc.h, stl_algo.h, stl_algobase.h, ropeimpl.h: + Drop-in replace (ie, stop changing __SGI_STL_* to _CPP_BITS_* for + preprocessor guards, but fixup include paths and names according + to new directory layout). + +1999-02-05 Benjamin Kosnik + + * bits/std_fstream.h: Remove _M_open data member. + * bits/fstream.tcc: Ditto. + + * src/locale.cc: Tweak. + + * bits/std_sstream.h: Simplify. + + * bits/std_streambuf.h: Simplify. + (sputc): Use correct definition of "write area." + + * bits/std_fstream.h: Fix uflow. + * src/basic_file.cc: Tweak. + * testsuite/27/27filebuf.cc: Add tests. + * testsuite/27/27filebuf-3.txt: Rename to *-2.txt. + +1999-02-02 Ryszard Kabatek + + * bits/ios_base.h: Make protected. + +1999-02-01 Ryszard Kabatek + + * bits/ios_base.h: Changes in the class ios_base: + Rename _M_exceptions member to _M_exceptions_data. + Make the member functions rdstate(), clear(), exceptions() + and exceptions(iostate) protected and add the "_M_" prefix. + * src/ios.cc: Ditto. + * bits/basic_ios.h: Adapt the changes from ios_base. + +1999-01-29 Benjamin Kosnik + + * bits/std_fstream.h: Remove _M_flags, _M_equilibrate as unnecessary. + * bits/fstream.tcc: Ditto. + + * bits/std_fstream.h (underflow): Resize deallocates memory and + resets pointers in the internal cache according to new _M_buf. . dooh! + * src/locale.cc: Mas changes with codecvt::do_in, do_out. + +1999-01-29 Ryszard Kabatek + + * stl/bits/std_memory.h: Modify auto_ptr::reset to reflect the + standard. + +1999-01-28 Benjamin Kosnik + + * src/locale.cc (codecvt::do_in): Finer-grained tuning to take + into account partial returns. + (codecvt::do_out): Likewise. + + * bits/char_traits.h: Change streamsize to be a signed type, as + required by 27.4.1 Types p 2. (Changing to _IO_ssize_t.) + * bits/std_streambuf.h: Make + in_avail() and showmanyc() have streamsize as return types, so + that showmanyc()'s return of eof won't underflow in_avail's return + value and give a bogus result. + * src/misc-inst.cc: And more changes. . . + + * bits/std_streambuf.h (basic_streambuf): Add _M_buf_unified to keep + track of joint in/out pointers into the internal buffer. + (sbumpc): Add check for _M_buf_unified. + (sputbackc): Ditto. + (sungetc): Ditto. + + * testsuite/27/27filebuf.cc: Add cases. + * testsuite/27/27stringbuf.cc: Add showmanyc case. + + * bits/std_fstream.h (close): Fix logic error. + (open): Initialize internal pointers based on _M_buf and _M_buf_size. + (showmanyc): Add underflow component, to match the standard. + + * bits/fstream.tcc: Ditto. + +1999-01-27 Benjamin Kosnik + + * bits/basic_file.h: Match vtables w/ _IO_FILE_plus. + * src/basic_file.cc: Ditto. + * src/Makefile.in: Add -fvtable-thunks to CXXFLAGS: preferred + format for dealing with _IO_file in libio. + +1999-01-27 Ulrich Drepper + + * src/basic_file.cc: Include fcntl.h. + +1999-01-27 Benjamin Kosnik + + * libio/Makefile.in: Add fileops.lo, genops.lo to objects to debug + libio calls. + * bits/std_streambuf.h: Redefine read posion. + + * bits/std_fstream.h: Temporary hack to get vtables working again. + * bits/basic_file.h: Revert. + * src/basic_file.cc: Ditto. + * testsuite/27/27filebuf.cc: Tweak. + +1999-01-26 Benjamin Kosnik + + * bits/basic_file.h: Add showmanyc, underflow. . + * src/basic_file.cc: Ditto. + + * bits/std_fstream.h (showmanyc): Add bits to ping libio to see if more + chars can be read. + + * testsuite/27/27filebuf.cc: Add testcases. + * src/basic_file.cc: Add O_CREAT to open calls with + ios_base::trunc as part of the open mode. + +1999-01-26 Ryszard Kabatek + + * bits/basic_ios.h: fix basic_ios::exceptions(iostate) + +1999-01-25 Benjamin Kosnik + + * src/ios.cc (clear): Correct typo. + * bits/ios_base.h: Tweak spacing. + +1999-01-25 Ryszard Kabatek + + * bits/basic_ios.h: fix basic_ios::fail() + +1999-01-25 Benjamin Kosnik + + * bits/basic_file.h: Include libioP.h from libio instead of here. + * bits/iolibio.h: Remove. + * bits/libio.h: Remove. + +1999-01-22 Benjamin Kosnik + + * bits/std_fstream.h: Tweak cvt-> in call for newer egcs compilers. + +1999-01-22 Ulrich Drepper + + * Makefile.am (SUBDIRS): Add libio. + * configure.in: Add rule to test for glibc2. + + * src/Makefile.am (INCLUDES): Add -I to libio subdir. + (libstdc___la_LIBADD): Add libio.la. + +1999-01-21 Benjamin Kosnik + + * bits/basic_file.h: Make new abstraction for underlying C library + FILE, named __basic_file. + * src/basic_file.cc: New file. + * bits/os_raw.h: Delete. + * src/os_raw.cc: Delete. + * src/Makefile.in: Tweak. + * src/Makefile.am: Tweak. + * bits/iolibio.h: Add this here, for the time being. + * bits/libioP.h: Ditto. + + * bits/ios_base.h: Delete unused defines. + * src/locale.cc (codecvt::do_in): Use + strcpy to copy between the two buffers. + + * testsuite/27/27stringbuf.cc: Change license, fix in_avail tests. + * testsuite/27/27filebuf.cc: New file. + * testsuite/27/27filebuf-1.txt: Data file for above test. + * testsuite/27/27filebuf-2.txt: Ditto. + + * bits/std_streambuf.h (uflow): Re-implement default. + * bits/std_fstream.h: Set _M_buf_size based on cstdio's BUFSIZ. + Re-implement virtual functions. + * bits/fstream.tcc: Delete unused mf's. + diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2000 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2000 new file mode 100644 index 000000000..274f223b3 --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2000 @@ -0,0 +1,5644 @@ +2000-12-31 Alexandre Oliva + + * include/c_std/bits/std_cstdlib.h (mblen): Protect against macro. + +2000-12-23 Benjamin Kosnik + + * src/Makefile.am (CSTD_INCLUDES): Change from CSHADOW_INCLUDES. + (strstream.cc): Add special rule for deprecated files. + * libsupc++/Makefile.am (INCLUDES): Sync. + * acinclude.m4 (GLIBCPP_EXPORT_INCLUDES): And here. + + Reported by Fred Fish + * include/backward/iomanip.h: Remove backward from include + * include/backward/strstream.h: Same. + * include/backward/stream.h: Same. + * include/backward/ostream.h: Same. + * include/backward/istream.h: Same. + * src/strstream.cc: And here. + + Reported by Brad Garcia + * src/string-inst.cc (_S_find): Use generic template. + * include/bits/string.tcc (_S_find): Remove specializations + +2000-12-22 Benjamin Kosnik + + Attempt to make locale visible in gdb. + * include/bits/std_locale.h: Remove codecvt.h include. + * include/bits/locale_facets.h: Add here, after ctype decls. + * include/bits/codecvt.h: Remove std namespace, as assumed to be + in std now. + + * include/bits/locale_facets.h: Consistently move generic static + member definitions directly after generic facet declarations. + * include/bits/locale_facets.tcc: From here. + + * src/locale.cc: Organize locale::id static definitions for + required facets. + * src/codecvt.cc (codecvt): Remove locale::id definition. + (codecvt): Same. + * src/localename: And here. + + * include/bits/localefwd.h (_Count_ones): Change _S_count to _M_count. + Same for _M_halfcount. + +2000-12-22 Alexandre Oliva + + * mknumeric_limits: Output to temporary files, and rename them at + the end. + +2000-12-21 Benjamin Kosnik + + * configure.in: Change GLIBCPP_ENABLE_SHADOW to + GLIBCPP_ENABLE_CHEADERS. + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): Change to + ENABLE_CHEADERS. C_INCLUDE_DIR defaults to c_std from c. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * include/c: Move to ... + * include/c_std: ...here. + * include/c_std: Move to ... + * include/c_shadow: ...here. + * include/c: Repopulate, with simple headers. + * docs/html/configopts.html: Adjust docs. + +2000-12-21 Joseph S. Myers + + * acinclude.m4, configure.in, mkcheck.in, + testsuite/21_strings/ctor_copy_dtor.cc, + testsuite/21_strings/inserters_extractors.cc, + testsuite/23_containers/map_operators.cc, + testsuite/23_containers/vector_element_access.cc, + testsuite/25_algorithms/lower_bound.cc, + testsuite/27_io/ifstream_members.cc, + testsuite/27_io/istream_extractor_arith.cc, + testsuite/27_io/istream_unformatted.cc, + testsuite/27_io/ofstream_members.cc, + testsuite/27_io/ostream_inserter_char.cc, + testsuite/27_io/ostream_inserter_other.cc, + testsuite/27_io/ostream_manip.cc, testsuite/27_io/streambuf.cc: + Change sourceware.cygnus.com and sources.redhat.com URLs for + libstdc++ web pages and list archives to point to gcc.gnu.org + * aclocal.m4, configure: Regenerate. + +2000-12-21 Gabriel Dos Reis + + * src/Makefile.am (sources): Remove complex.cc, complexf.cc and + complexl.cc from list. + * src/Makefile.in: Regenerate. + * src/complex.cc: Remove. + * src/complexf.cc: Likewise. + * src/complexl.cc: Likewise. + + * libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove csqrtl.c + (EXTRA_DIST): Remove csqrt.c and csqrtf.c. + * libmath/Makefile.in: Regenerate. + * libmath/complex-stub.h: Remove. + * libmath/csqrt.c: Likewise. + * libmath/sqrtf.c: Likewise. + * libmath/sqrtl.c: Likewise. + * libmath/mathconf.h: Remove and "complex-stub.h" + #inclusion. + + * include/bits/std_complex.h (sqrt<>): Define primary template. + (complex<>): Remove sqrt friend declarations. + + * configure.in: Initialize with src/ios.cc. + * configure: Regenerate. + * acinclude.m4: Remove check for csqrt* and + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + * Makefile.in: Regenerate. + +2000-12-20 Phil Edwards + + * acinclude.m4 (SECTION_FLAGS, OPT_LDFLAGS): Fix minor thinko. + * aclocal.m4: Regenerate. + * configure: Ditto. + * Makefile.in: Ditto. + * libio/Makefile.in: Ditto. + * libmath/Makefile.in: Ditto. + * libsupc++/Makefile.in: Ditto. + * src/Makefile.in: Ditto. + + * include/bits/istream.tcc: Fix clause reference in comment. + +2000-12-20 Benjamin Kosnik + + * testsuite/17_intro/headers_c.cc (main): New file. + + * acinclude.m4 (SECTION_FLAGS): Only set if --enable-debug is not + passed. + (OPT_LDFLAGS): And here. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-12-19 Curtis Janssen + + * src/ios.cc (ios_base::_M_grow_words(int ix)): Fix libstdc++/1089. + * testsuite/27_io/ios_base_storage.cc (test01): New file. + +2000-12-19 Benjamin Kosnik + + * configure.in: Don't turn on long long by default. + (gxx_target_include_dir): Adjuse comment. + * configure: Regenerate. + * include/c/bits/std_cstdio.h: Remove c++config.h include. + * src/locale.cc: Formatting tweaks. + * testsuite/22_locale/ctype.cc (char): Provide + member functions. + +2000-12-19 Loren J. Rittle + + * testsuite/22_locale/ctype.cc (test01): Correct ~ operator usage. + +2000-12-19 Mark Kettenis + + * configure.target: Support the Hurd. + +2000-12-19 Benjamin Kosnik + + * config/os/solaris/solaris2.5/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.6/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.7/bits/ctype_inline.h (is): Same. + * config/os/newlib/bits/ctype_inline.h (is): Same. + * config/os/irix/bits/ctype_inline.h (is): Same. + * config/os/bsd/netbsd/bits/ctype_inline.h (is): Same. + * config/os/bsd/freebsd/bits/ctype_inline.h (is): Same. + * config/os/aix/bits/ctype_inline.h (is): Same. + * config/os/gnu-linux/bits/ctype_inline.h (is): Revert. + * config/os/generic/bits/ctype_inline.h (is): Non-table based + implementation. + + * testsuite/22_locale/ctype_char_members.cc (test01): Use binary + operator correctly. + (test01): Check 'A' for alnum, upper, alpha. + +2000-12-19 Gabriel Dos Reis + + * include/bits/std_complex.h (complex::operator-=): Fix + thinko. + +2000-12-18 Benjamin Kosnik + + * configure.in: Set os_include_dir for cross_compiles. + * configure: Regenerate. + * configure.target (l_glibcpp_cxxflags): Don't try to be clever + when assigning ATOMICITYH. Only special case the special cases... + +2000-12-18 Joseph S. Myers + + * docs/html/17_intro/COPYING: Update to current + ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references + to 19yy as example year in copyright notice). + +2000-12-15 Benjamin Kosnik + + * configure.in (gxx_target_include_dir): Install target-dependent + include files in a target-dependent place. + * configure: Regenerate. + * src/Makefile.am: Add in support here. + * src/Makefile.in: Regenerate. + +2000-12-14 Benjamin Kosnik + + * src/Makefile.am (myinstallheaders): Install backwards headers in + prefix, not prefix/backward. + * src/Makefile.in: Regenerate. + +2000-12-14 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Revert changes + touching copysignf, atan2f, expf. + (GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT): Add it back here. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-12-14 Benjamin Kosnik + + * configure.in (CXX): Exit out if mknumeric_limits fails. + * mknumeric_limits (CXX): Use BUILD_DIR/g++, not g++ in + path. Consistency with tests_flags.in. + +2000-12-14 Benjamin Kosnik + + * include/c/bits/*.h: Remove include_next, replace with include, + as include_next does not work host-x-host, and include_next not + necessary. + +2000-12-13 Benjamin Kosnik + + * include/bits/locale_facets.h (ctype): Remove throw specs not in + base class signature. + * config/os/*/bits/ctype_inline.h (is): Same. + +2000-12-13 Benjamin Kosnik + + * config/os/generic/bits/ctype_base.h (ctype_base): Consistency + with linux. + * config/os/generic/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.5/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.5/bits/ctype_base.h: Same. + * config/os/solaris/solaris2.6/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.6/bits/ctype_base.h: Same. + * config/os/solaris/solaris2.7/bits/ctype_inline.h (is): Same. + * config/os/solaris/solaris2.7/bits/ctype_base.h: Same. + * config/os/irix/bits/ctype_inline.h (is): Same. + * config/os/irix/bits/ctype_base.h (ctype_base): Same. + * config/os/aix/bits/ctype_inline.h (is): Same. + * config/os/aix/bits/ctype_base.h (ctype_base): Same. + * config/os/bsd/netbsd/bits/ctype_inline.h (is): Same. + * config/os/bsd/netbsd/bits/ctype_base.h (ctype_base): Same. + * config/os/bsd/freebsd/bits/ctype_base.h (ctype_base): Same. + * config/os/bsd/freebsd/bits/ctype_inline.h (is): Same. + * config/os/newlib/bits/ctype_inline.h (is): Same. + * config/os/newlib/bits/ctype_base.h (ctype_base): Same. + + * testsuite/22_locale/ctype_char_members.cc (test01): Add tests, fix. + * testsuite/22_locale/ctype.cc (test01): Add tests for + ctype_base::mask bitmask features. + * src/locale.cc: Define const static data for ctype_base. + * config/os/gnu-linux/bits/ctype_base.h (ctype_base): Make + ctype_base::mask type an integer type, not an enum. + * config/os/gnu-linux/bits/ctype_inline.h (is): Implement correctly. + * include/bits/locale_facets.h: Tweaks. + + * include/bits/ios_base.h: Formatting tweaks. + + * docs/html/17_intro/C++STYLE: Add. + +2000-12-12 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Don't link ctype + files here... + * configure.in: Rather, do it once for all targets here. Clean up + canadian cross and cross compile targets for linux-targeted + crosses. + * configure: Regenerate. + * aclocal.m4: Regnerate. + * acconfig.h: Add more defines. + * config.h.in: Regenerate. + +2000-12-12 Angela Marie Thomas + + * configure.in: Fix case for host-x-linux + * configure: Regenerate. + +2000-12-10 Alexandre Petit-Bianco + + * src/Makefile.am (libstdc++.INC:): 2000-12-05 reverted to include + 2000-11-12 hunk. + * src/Makefile.in: Rebuilt. + +2000-12-09 Jason Merrill + + * testsuite/20_util/auto_ptr.cc (test07): Remove test that tries + to copy-initialize an auto_ptr from an auto_ptr; it + isn't supposed to work anymore. + +2000-12-09 Phil Edwards + + Move the HTML-containing subdirs from 'docs' to 'docs/html'. + * README: Update the locations of instructions. + * docs/doxygen/run_doxygen: New file, stub. + + * docs/Makefile: Moved... + * docs/configopts.html: Likewise. + * docs/documentation.html: Likewise. + * docs/install.html: Likewise. + * docs/lib3styles.css: Likewise. + * docs/17_intro/BADNAMES: Likewise. + * docs/17_intro/BUGS: Likewise. + * docs/17_intro/C++STYLE: Likewise. + * docs/17_intro/CHECKLIST: Likewise. + * docs/17_intro/COPYING: Likewise. + * docs/17_intro/DESIGN: Likewise. + * docs/17_intro/HEADER_POLICY: Likewise. + * docs/17_intro/PROBLEMS: Likewise. + * docs/17_intro/RELEASE-NOTES: Likewise. + * docs/17_intro/TODO: Likewise. + * docs/17_intro/contribute.html: Likewise. + * docs/17_intro/headers_cc.txt: Likewise. + * docs/17_intro/howto.html: Likewise. + * docs/17_intro/libstdc++-assign.txt: Likewise. + * docs/17_intro/organization: Likewise. + * docs/17_intro/porting-howto.html: Likewise. + * docs/18_support/howto.html: Likewise. + * docs/19_diagnostics/howto.html: Likewise. + * docs/20_util/howto.html: Likewise. + * docs/21_strings/gotw29a.txt: Likewise. + * docs/21_strings/howto.html: Likewise. + * docs/21_strings/stringtok_h.txt: Likewise. + * docs/21_strings/stringtok_std_h.txt: Likewise. + * docs/22_locale/codecvt.html: Likewise. + * docs/22_locale/ctype.html: Likewise. + * docs/22_locale/howto.html: Likewise. + * docs/22_locale/locale.html: Likewise. + * docs/23_containers/howto.html: Likewise. + * docs/23_containers/wrappers_h.txt: Likewise. + * docs/24_iterators/howto.html: Likewise. + * docs/25_algorithms/howto.html: Likewise. + * docs/26_numerics/howto.html: Likewise. + * docs/27_io/howto.html: Likewise. + * docs/27_io/iostreams_hierarchy.pdf: Likewise. + * docs/ext/howto.html: Likewise. + * docs/faq/index.html: Likewise. + * docs/faq/index.txt: Likewise. + * docs/html/Makefile: ...to here. + * docs/html/configopts.html: Likewise. + * docs/html/documentation.html: Likewise. + * docs/html/install.html: Likewise. + * docs/html/lib3styles.css: Likewise. + * docs/html/17_intro/BADNAMES: Likewise. + * docs/html/17_intro/BUGS: Likewise. + * docs/html/17_intro/C++STYLE: Likewise. + * docs/html/17_intro/CHECKLIST: Likewise. + * docs/html/17_intro/COPYING: Likewise. + * docs/html/17_intro/DESIGN: Likewise. + * docs/html/17_intro/HEADER_POLICY: Likewise. + * docs/html/17_intro/PROBLEMS: Likewise. + * docs/html/17_intro/RELEASE-NOTES: Likewise. + * docs/html/17_intro/TODO: Likewise. + * docs/html/17_intro/contribute.html: Likewise. + * docs/html/17_intro/headers_cc.txt: Likewise. + * docs/html/17_intro/howto.html: Likewise. + * docs/html/17_intro/libstdc++-assign.txt: Likewise. + * docs/html/17_intro/organization: Likewise. + * docs/html/17_intro/porting-howto.html: Likewise. + * docs/html/18_support/howto.html: Likewise. + * docs/html/19_diagnostics/howto.html: Likewise. + * docs/html/20_util/howto.html: Likewise. + * docs/html/21_strings/gotw29a.txt: Likewise. + * docs/html/21_strings/howto.html: Likewise. + * docs/html/21_strings/stringtok_h.txt: Likewise. + * docs/html/21_strings/stringtok_std_h.txt: Likewise. + * docs/html/22_locale/codecvt.html: Likewise. + * docs/html/22_locale/ctype.html: Likewise. + * docs/html/22_locale/howto.html: Likewise. + * docs/html/22_locale/locale.html: Likewise. + * docs/html/23_containers/howto.html: Likewise. + * docs/html/23_containers/wrappers_h.txt: Likewise. + * docs/html/24_iterators/howto.html: Likewise. + * docs/html/25_algorithms/howto.html: Likewise. + * docs/html/26_numerics/howto.html: Likewise. + * docs/html/27_io/howto.html: Likewise. + * docs/html/27_io/iostreams_hierarchy.pdf: Likewise. + * docs/html/ext/howto.html: Likewise. + * docs/html/faq/index.html: Likewise. + * docs/html/faq/index.txt: Likewise. + +2000-12-08 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): New conditional, + GLIBCPP_BUILD_LIBIO, true iff building libio. + * libio/Makefile.am: Use; set noinst_LTLIBRARIES empty if false. + * aclocal.m4: Regenerated. + * config.h.in: Regenerated. + * configure: Regenerated. + * libio/Makefile.in: Regenerated. + * libmath/Makefile.in: Regenerated. + +2000-12-08 Gabriel Dos Reis + + * libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove ccosl, + cexpl, clog10l, csinhl, ctanhl, ctanl. + (EXTRA_DIST): Remove ccos, ccosf, csin, csinf, ccosh, ccoshf, + csing, csinhf, clog10, clog10f, ctan, ctanf, ctanh, ctanhf. + * libmath/Makefile.in: Regenarate. + * libmath/ccos.c: Remove. + * libmath/ccosf.c: Likewise. + * libmath/ccosl.c: Likewise. + * libmath/csin.c: Likewise. + * libmath/csinf.c: Likewise. + * libmath/csinl.c: Likewise. + * libmath/ctan.c: Likewise. + * libmath/ctanf.c: Likewise. + * libmath/ctanl.c: Likewise. + * libmath/ccosh.c: Likewise. + * libmath/ccoshf.c: Likewise. + * libmath/ccoshl.c: Likewise. + * libmath/csinh.c: Likewise. + * libmath/csinhf.c: Likewise. + * libmath/csinhl.c: Likewise. + * libmath/ctanh.c: Likewise. + * libmath/ctanhf.c: Likewise. + * libmath/ctanhl.c: Likewise. + * libmath/cexp.c: Likewise. + * libmath/cexpf.c: Likewise. + * libmath/cexpl.c: Likewise. + * libmath/clog10.c: Likewise. + * libmath/clog10f.c: Likewise. + * libmath/clog10l.c: Likewise. + * libmath/complex-stub.h: Remove forward declaration of functions + mentioned above. + + * include/bits/std_complex.h(tan, tanh): Define primary templates. + (complex<>): Remove friend declarations for tan<> and tanh<>. + * src/complex.cc(tan, tanh): Remove specializations. + + * acinclude.m4: Remove check for ccos, ccosf, ccosl, ccosh, + ccoshf, ccoshl, csin, csinf, csinl, csinh, csinhf, csinhl, cexp, + cexpf, cexpl, ctan, ctanf, ctanl, ctanh, ctanhf, ctanhl. + * aclocal.m4: Regenarate. + * configure: Regenarate. + +2000-12-08 Gabriel Dos Reis + + * acinclude.m4: Don't forget to remove check for cpowl as it is no + longer needed, nor is the corresponding stub existent. + * aclocal.m4: Regenarate. + * configure: Regenarate. + +2000-12-07 Benjamin Kosnik + + * config/os/generic/bits/ctype_base.h (ctype_base): Change space mask. + + * config/os/generic/bits/ctype_noninline.h (ctype): Remove default + arguments in definition. + * config/os/solaris/solaris2.7/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same. + * config/os/newlib/bits/ctype_noninline.h (ctype): Same. + * config/os/irix/bits/ctype_noninline.h (ctype): Same. + * config/os/hpux/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/netbsd/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/freebsd/bits/ctype_noninline.h (ctype): Same. + * config/os/aix/bits/ctype_noninline.h (ctype): Same. + + * include/bits/locale_facets.h: Tweak. + +2000-12-06 Benjamin Kosnik + + * include/bits/locale_facets.h (ctype): Remove _Ctype_nois and + _Ctype and replace with common __ctype_abstract_base. + (ctype::_M_convert_to_wmask): Move to locale.cc. + * config/os/gnu-linux/bits/ctype_noninline.h (ctype::ctype): + And here. + * config/os/solaris/solaris2.7/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same. + * config/os/newlib/bits/ctype_noninline.h (ctype): Same. + * config/os/irix/bits/ctype_noninline.h (ctype): Same. + * config/os/hpux/bits/ctype_noninline.h (ctype): Same. + * config/os/generic/bits/ctype_noninline.h (ctype): Same. + * config/os/aix/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/netbsd/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/freebsd/bits/ctype_noninline.h (ctype): Same. + * src/locale-inst.cc: Clean instantiations. + * src/locale.cc (ctype): Add definitions here. + (ctype::_M_wmask): Move definitions here. + + * config/os/generic/bits/ctype_inline.h (ctype::is): + Implement in a generic way, with only "C" functionality and no + knowlege of the target os. + * config/os/generic/bits/os_defines.h: Change comments to C++ style. + * testsuite/22_locale/ctype_char_members.cc (test01): Add tests. + + * include/bits/codecvt.h (ctype_byname): Remove specializations, + as not required. + * include/bits/localefwd.h (codecvt_byname): And here. + * src/codecvt.cc: Remove codecvt_byname specializations. + + * include/c/bits/std_cstdio.h: Include c++config.h. + +2000-12-06 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_*_DECL_AND_LINKAGE_*): Pre-test + whether the cached result is present. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * Makefile.in: Regenerate. + * libio/Makefile.in: Regenerate. + * libmath/Makefile.in: Regenerate. + * libsupc++/Makefile.in: Regenerate. + * src/Makefile.in: Regenerate. + +2000-12-06 Richard Earnshaw + + * configure.target (*-*-freebsd, *-*-netbsd): Correct paths to + os_include_dir. + +2000-12-05 Jeffrey A Law + + * configure.target (hpux): Set os_include_dir. + * config/os/hpux/bits/ctype_base.h: New file + * config/os/hpux/bits/ctype_inline.h: New file + * config/os/hpux/bits/ctype_noinline.h: New file + * config/os/hpux/bits/os_defines.h: New file + +2000-12-05 Alexandre Petit-Bianco + + * src/Makefile.am (libstdc++.INC): Revert for libjava builds. + * src/Makefile.in: Regenerate. + +2000-12-05 Benjamin Kosnik + + * acinclude.m4 (EXTRA_CXX_FLAGS): And here. + * include/c/bits/std_cstdlib.h (std ): Change macro to + _GLIBCPP_NEED_LLDIV_T. + * acconfig.h: Remove unused MBSTATE_T bits. + * configure.in: Same. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config.h.in: Regenerate. + +2000-12-05 Benjamin Kosnik + + * acinclude.m4: Change up to reflect new directory organization. + Add in bits for NetBSD. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config/os/bsd: New directory. + * config/os/netbsd: Move to... + * config/os/bsd/netbsd: ...here. + * config/os/freebsd: Move to... + * config/os/bsd/freebsd: ...here. + +2000-12-05 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Check for + lldiv_t. Allow the use of os-specific defines while checking for + long-long functions by the inclusion of os_defines.h. + * aclocal.m4: Regenerate. + * configure.in: Add comments. + * configure: Regenerate. + * acconfig.h: Add _GLIBCPP_HAVE_LLDIV_T. + * config.h.in: Regenerate. + * config/os/gnu-linux/bits/os_defines.h: Fix typos and + duplications in comments. + +2000-12-05 Richard Earnshaw + + * config/os/freebsd/bits/ctype_base.h: Update comments about other + BSD variants. + +2000-12-05 Richard Earnshaw + + * config/os/freebsd/bits/*.h: Move here from config/os/bsd/bits. + * aclocal.m4: Adjust accordingly. + * configure.target: Likewise. + * configure: Regenerate. + +2000-12-05 Richard Earnshaw + + * config/cpu/arm/bits/atomicity.h: Add support for compiling Thumb + code. + +2000-12-05 Richard Earnshaw + + Support for NetBSD. + * aclocal.m4: Add test for NetBSD's ctype support. + * configure: Regenerate. + * configure.target: Support NetBSD. + * config/os/netbsd/bits/ctype_base.h: New file. + * config/os/netbsd/bits/ctype_inline.h: New file. + * config/os/netbsd/bits/ctype_noinline.h: New file. + * config/os/netbsd/bits/os_defines.h: New file. + +2000-12-05 Gabriel Dos Reis + + * src/complex.cc (pow): Remove definitions for explicit + specializations. + * libmath/mathconf.h: Remove declarations for c_log, c_logf, + c_logl. + * libmath/complex-stub.h: Remove declarations for cpow, cpowf, + cpowl. + * libmath/cpow.c: Remove. + * libmath/cpowf.c: Remove. + * libmath/cpowl.c: Remove. + * libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove c_logl, + cpowl, + (EXTRA_DIST): Remove c_log, c_logf, carg, cargf. + * libmath/Makefile.in: Regenarate. + * libmath/c_log.c: Remove + * libmath/c_logf.c: Likewise. + * libmath/c_logl.c: Likewise. + * libmath/carg.c: Likewise. + * libmath/cargf.c: Likewise. + * libmath/cargl.c: Likewise. + * include/bits/std_complex.h (pow): Define primary templates. + (complex<>): Remove friend declarations for pow<>(). + * acinclude.m4: Remove check for c_log, c_logf, c_logl, carg, + cargf. + * aclocal.m4: Regenarate. + * configure: Regenarate. + +2000-12-03 Joseph S. Myers + + * docs/configopts.html, docs/documentation.html, + docs/install.html, docs/17_intro/BADNAMES, + docs/17_intro/contribute.html, docs/17_intro/howto.html, + docs/18_support/howto.html, docs/19_diagnostics/howto.html, + docs/20_util/howto.html, docs/21_strings/howto.html, + docs/22_locale/howto.html, docs/23_containers/howto.html, + docs/24_iterators/howto.html, docs/25_algorithms/howto.html, + docs/26_numerics/howto.html, docs/27_io/howto.html, + docs/ext/howto.html, docs/faq/index.html, docs/faq/index.txt: Sync + with wwwdocs. + +2000-12-01 Phil Edwards + + * docs/download.html: Remove. + * docs/footer.ihtml: Remove. + * docs/header.ihtml: Remove. + * docs/index.html: Remove. + * docs/links.html: Remove. + * docs/mail.html: Remove. + * docs/status.html: Remove. + * docs/thanks.html: Remove. + +2000-12-01 Phil Edwards + + * mkcheck.in: Count static and shared results separately. + +2000-12-01 Loren J. Rittle + + * mkcheck.in: Correct typo. + +2000-12-01 Gabriel Dos Reis + + * src/cmath.cc: Remove. + * src/Makefile.am (c_base_headers): Add bits/cmath.tcc. + (sources): Remove cmath.cc + * src/Makefile.in: Regenerate. + + * include/c/bits/std_cmath.h (__cmath_power<>): Declare. + (__cmath_abs<>): New function. + (abs, fabs): Use __cmath_abs when no direct support is available. + (__pow_helper<>): New function. + (pow): Define here. Use __pow_helper<>. + + * include/c/bits/cmath.tcc: New file. + +2000-11-29 Benjamin Kosnik + + Fixes for build directories with colons, AIX build problems. + * src/Makefile.am: Cleanups, add documentation. + (libstdc++.INC): Simplify rule. + (myinstallheaders): Consolidate install rules. + (myinstalldirs): New, make directores. + (base_headers): Subdivide based on install directory. + (ext_headers): New. + (backward_headers): New. + (headers): Remove. + (c_headers): Remove, unused. + (c_shadow_headers): Split up, deal with conditional usage in a + sane manner. + * src/Makefile.in: Regenerate. + +2000-11-29 Phil Edwards + + Sync with the documentation from wwwdocs. + * docs/Makefile: New file (rebuilds FAQ text version). + * docs/configopts.html: Update. + * docs/documentation.html: Update. + * docs/download.html: Update. + * docs/index.html: Update. + * docs/install.html: Update. + * docs/links.html: Update. + * docs/mail.html: Update. + * docs/status.html: Update. + * docs/thanks.html: Update. + * docs/27_io/howto.html: Update. + * docs/faq/index.html: Update for 2.91. + * docs/faq/index.txt: Update for 2.91. + * docs/footer.html: Removed. + * docs/footer.ihtml: New file. + * docs/gccrebuild.html: Removed. + * docs/header.html: Removed. + * docs/header.ihtml: New file. + +2000-11-29 Loren J. Rittle + + * tests_flags.in: Correct typo. + +2000-11-29 Gabriel Dos Reis + + * tests_flags (SH_FLAGS, ST_FLAGS): Move them back to ... + * mkcheck.in (SH_FLAGS, ST_FLAGS): ...here + +2000-11-29 Gabriel Dos Reis + + * src/Makefile.am (sources): Add bitset.cc + * src/Makefile.in: Regenrate. + + * include/bits/std_bitset.h (_GLIBCPP_BITSET_BITS_PER_WORD): New + macro. Replace __BITS_PER_WORDS throughout. + (__BITS_PER_WORDS): Remove. + (bitset<>::_M_do_find_first, bitset<>::_M_do_find_next): Move + definitions to src/bitset.cc. + + * src/bitset.cc (bitset<>::_M_do_find_first, + bitset<>::_M_do_find_next): Define here. + (_Bit_count<>::_S_bit_count, _Find_one<>::_S_first_one): Define + here. Explicitly instantiate definitions. + +2000-11-28 Franz Sirl + + * config/cpu/powerpc/bits/atomicity.h (__exchange_and_add): Silence + preprocessor multi-line string warnings. + (__atomic_add): Likewise. + (__compare_and_swap): Likewise. + (__always_swap): Likewise. + (__test_and_set): Likewise. + * config/cpu/arm/bits/atomicity.h (__exchange_and_add): Likewise. + (__atomic_add): Likewise. + (__compare_and_swap): Likewise. + (__always_swap): Likewise. + (__test_and_set): Likewise. + +2000-11-28 Benjamin Kosnik + + Update for 2.91 release. + * include/bits/c++config (__GLIBCPP__): Update. + * docs/17_intro/RELEASE-NOTES: Update. + * docs/status.html: Update, remove bogus autotools disinformation. + +2000-11-27 Benjamin Kosnik + + * tests_flags.in (LTCXX): Change CXX_FLAG to CXXFLAGS. + + * testsuite/22_locale/ctor_copy_dtor.cc: Adjust formatting. + * testsuite/27_io/istream_extractor_arith.cc (test11): New + testcase, based on libstdc++/90. + +2000-11-27 Franz Sirl + + * config/cpu/arm/bits/atomicity.h (__exchange_and_add): Add + __volatile__ to asm. + (__atomic_add): Likewise. + (__compare_and_swap): Likewise. + (__always_swap): Likewise. + (__test_and_set): Likewise. + + * config/cpu/powerpc/bits/atomicity.h: Replace '__ATOMICITY_INLINE' + with 'inline'. + (__exchange_and_add): Add __volatile__ to asm. + (__atomic_add): Likewise. + (__compare_and_swap): Likewise. + (__always_swap): Likewise. + (__test_and_set): Likewise. + +2000-11-27 Gabriel Dos Reis + + * tests_flags.in: Update documentation to reflect the change + below. + +2000-11-26 Benjamin Kosnik + + * tests_flags.in: Export CXX, CXXFLAGS. + * mkcheck.in: Grab them. + +2000-11-26 David Billinghurst + Benjamin Kosnik + + * mkcheck.in: Add exe extension to printnow executable, abstract + out call to this with TIMER_COMMAND. + * configure.target (l_glibcpp_cxxflags): Add cygwin support. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Correct paths. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-11-26 Benjamin Kosnik + + * testsuite/27_io/istream_unformatted.cc (test05): Fixup. + +2000-11-26 Benjamin Kosnik + + * acinclude.m4: Only sanity check for compiler version when + configuring. More fixes for 'make clean'. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-11-26 Gabriel Dos Reis + + * libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove cabsl.c + * libmath/Makefile.in: Regenerate. + * libmath/cabs.c: Remove. + * libmath/cabsf.c: Likewise. + * libmath/cabsl.c: Likewise. + * libmath/complex-stub.h: Remove declarations for cabs*. + + * acinclude.m4: Remove check for cabs*. + * aclocal.m4: Regenerate. + + * Makefile.in: Regenerate. + +2000-11-26 Gabriel Dos Reis + + * tests_flags.in: New file. Split out of ... + * mkcheck.in: ... this. Move flags computation into + tests_flags.in. + * configure.in: Add support for tests_flags. + * confiigure: Regenerate. + +2000-11-25 Joseph S. Myers + + * acinclude.m4: Change C9X references to refer to C99. + * aclocal.m4, configure: Regenerate. + * config/os/gnu-linux/bits/os_defines.h, src/complex.cc, + testsuite/22_locale/codecvt_wchar_t_char.cc, + include/bits/stl_config.h, include/c/bits/std_cwchar.h, + libmath/mathconf.h: Change C9X references to refer to C99. + +2000-11-25 Benjamin Kosnik + Richard Earnshaw + + * src/Makefile.am (INCLUDES): Remove unconditional use of + _GNU_SOURCE and _ISOC99_SOURCE macros. + * src/Makefile.in: Regenerate. + +2000-11-24 Benjamin Kosnik + + * testsuite/22_locale/codecvt_wchar_t_char.cc (main): Add + _GLIBCPP_USE_WCHAR_T guards. + + * configure.in (AC_OUTPUT_COMMANDS): Remove, just run scripts as + is, so that checks for existence of generated files actually work. + * configure: Regenerate. + +2000-11-23 Hans-Peter Nilsson + + * config/os/gnu-linux/bits/os_defines.h: Include . + If not glibc 2.1 or higher, include and define + __off64_t as __loff_t and #define __THROW as empty. + + * libio/libio.h [__P]: Move __THROW and __PMT into their own + ifndef:s. + +2000-11-23 David Edelsohn + + * porting.texi: Expand libtool information. + +2000-11-23 Gabriel Dos Reis + + * include/bits/ios_base.h (ios_base::failure::~failure, + ios_base::failure::what): Move definition to ... + + * src/ios.cc (ios_base::failure::~failure): ... here. + src/ios.cc (ios::failure::what): Likewise. + +2000-11-22 Benjamin Kosnik + + Make deprecated strstream header consistent with new and new.h. + * include/backward/strstream.h: Add. Use using declarations to + scope strstreambuf, istrstream, ostrstream, strstream to global + scope. + * include/backward/strstream: Remove using declarations. + * src/Makefile.am (base_headers): Add strstream. + * src/Makefile.in: Regenerate. + + * include/backward/new.h (_CPP_BACKWARD_NEW_H): Change macro guard + to be consistent with other headers. + +2000-11-22 Richard Henderson + + * config/os/bsd/bits/ctype_inline.h (is): Fix order of expressions. + +2000-11-22 Phil Edwards + + * porting.texi: Minor tweaks to vocabulary. + +2000-11-22 Loren J. Rittle + + * include/backward/strstream.h: Reinstate the `using' + statements. + +2000-11-22 Loren J. Rittle + + * src/Makefile.am (base_headers): Add missing backwards headers. + * src/Makefile.in: Regenerate. + +2000-11-21 scott snyder + + * config/c_io_stdio.cc (seekoff): Fix return value. + (seekpos): Likewise. + (sys_seek): Likewise. + +2000-11-21 Loren J. Rittle + + * mkcheck.in (explanation): Retain output of all failing + compiles. Don't add gratuitous space to the log file. + +2000-11-21 Benjamin Kosnik + + * src/strstream.cc: Adjust includes. + * src/Makefile.am (base_headers): Remove std_strstream.h, add + backwards/strstream.h. + (std_headers): Remove strstream. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am (headers): Remove new.h + * libsupc++/Makefile.in: Regenerate. + * include/std/strstream: Remove. + * include/backward/strstream.h: Replace with... + * include/bits/std_strstream.h: ...this. Move. + * include/backward/complex.h: Remove SGIisms. + * include/backward/streambuf.h: Same. + * include/backward/stream.h: Same. + * include/backward/ostream.h: Same. + * include/backward/istream.h: Same. + * include/backward/iostream.h: Same. + * include/backward/iomanip.h: Same. + * include/backward/fstream.h: Same. + * libsupc++/new.h: Add using declarations for bad_alloc, + nothrow_t, and nothrow, move to ... + * include/backward/new.h: ...here. + +2000-11-21 Mark Mitchell + + * porting.texi: New file. + +2000-11-21 Branko Cibej + + * config/os/solaris/solaris2.6/bits/os_defines.h: Define + _XOPEN_SOURCE, _LARGEFILE64_SOURCE, __EXTENSIONS__, __off_t, + __off64_t and __ssize_t. + * config/os/solaris/solaris2.5/bits/os_defines.h: For now, use the + same configuration as above. + +2000-11-21 Benjamin Kosnik + + * acinclude.m4 (AC_LC_MESSAGES): Check for locale.h. + * aclocal.m4: Regenerate. + * configure: Renerate. + +2000-11-20 Benjamin Kosnik + + * mkcheck.in (explanation): Don't paste output of passing compiles + into log file. Use -static. Get version info. + + * testsuite/23_containers/vector_ctor.cc (test02): Fix thinko. + +2000-11-20 Gabriel Dos Reis + + * include/bits/std_complex.h (complex): Constructor + complex::complex(const complex&) is not explicit; + since it is a promotion. + (complex): Constructors taking complex and + complex are not explicit. + +2000-11-20 Benjamin Kosnik + + * include/bits/std_complex.h: Tweaks, include cmath for abs overloads. + * src/complex.cc: Remove cmath include, formatting tweaks, remove + dead code. + * include/c/bits/std_cmath.h: Formatting tweaks. + * testsuite/26_numerics/complex_value.cc: New file, for catching + bits gleaned from libstdc++/106. + + * testsuite/23_containers/vector_ctor.cc (test02): Add test from + libstdc++/102. + +2000-11-20 Joseph S. Myers + + * include/bits/c++config, include/bits/ios_base.h, + include/bits/std_streambuf.h: Correct spelling of "deprecated". + +2000-11-19 Mark Mitchell + + * libsupc++/exception_support.cc (__throw_bad_cast): Name it + __cxa_bad_cast under the new ABI. + (__throw_bad_typeid): Name it __cxa_bad_typeid under the new ABI. + * libsupc++/pure.cc (__pure_virtual): Name it __cxa_pure_virtual + under the new ABI. + +2000-11-18 Mark Mitchell + + * libsupc++/exception_support.h: New header file. + * libsupc++/vec.cc: Include it. + (__cxa_vec_new2): Recatch exceptions before rethrows. + (__cxa_vec_new3): Likewise. + (__cxa_vec_ctor): Likewise. + (__cxa_vec_cctor): Likewise. + (__cxa_vec_dtor): Likewise. + (__cxa_vec_delete2): Likewise. + (__cxa_vec_delete3): Likewise. + +2000-11-17 Theodore Papadopoulo + + * include/bits/stl_tree.h: Overload operators == and != to be able + to handle the case (const_iterator,iterator) and + (iterator,const_iterator), thus fixing libstdc++/737 and the like. + * testsuite/23_containers/map_operators.cc (test02): New tests. + +2000-11-17 Loren J. Rittle + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Correct last patch + to ``make --enable-cstdio=stdio the default''. + * libstdc++-v3/aclocal.m4: Rebuilt. + * libstdc++-v3/configure: Rebuilt. + +2000-11-17 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_ATOMICITY): Move switch statement + contents to... + * configure.target: ...here. Enable generic atomic ops, and warn. + * aclocal.m4: Regenerated. + * configure: Ditto. + * Makefile.in: Ditto. + * libio/Makefile.in: Ditto. + * libmath/Makefile.in: Ditto. + * libsupc++/Makefile.in: Ditto. + * src/Makefile.in: Ditto. + +2000-11-16 Loren J. Rittle + + * include/bits/locale_facets.tcc (num_get<_CharT, + _InIter>::do_get(...)): Add missing typename keyword. + +2000-11-16 Mark Mitchell + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Make + --enable-cstdio=stdio the default. Disable wide character support + in that event. + * configure.in: Move GLIBCPP_ENABLE_C_MBCHAR after + (GLIBCPP_ENABLE_CSTDIO). + * config/c_io_stdio.h: Don't include , don't define + __c_wfile_type. + * aclocal.m4: Regenerated. + * configure: Likewise. + * Makefile.in: Likewise. + * libio/Makefile.in: Likewise. + * libmath/Makefile.in: Likewise. + * libsupc++/Makefile.in: Likewise. + * src/Makefile.in: Likewise. + +2000-11-16 Gerald Pfeifer + + * config/c_io_stdio.h: Include stddef.h. + +2000-11-16 Mark Mitchell + + * config/c_io_stdio.h (streamsize): Make it a typedef for + ptrdiff_t. + (wstreamsize): Likewise. + + * config/c_io_stdio.h: Include libio.h. + +2000-11-15 Mark P Mitchell + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Substitute libio_la. + * src/Makefile.am (libstdc___la_LIBADD): Use it. + * aclocal.m4: Regenerated. + * configure: Likewise. + * Makefile.in: Likewise. + * libio/Makefile.in: Likewise. + * libmath/Makefile.in: Likewise. + * libsupc++/Makefile.in: Likewise. + * src/Makfile.in: Likewise. + +2000-11-15 Mark Mitchell + + * mkcheckin.in: Move check for bash version 2 later in the file. + + * include/bits/basic_string.h (basic_string::_Rep::_S_max_size): + Make it const. + (basic_string::_Rep::_S_terminal): Likewise. + * include/bits/string.tcc (basic_string::_Rep::_S_max_size): + Likewise. + (basic_string::_Rep::_S_terminal): Likewise. + +2000-11-15 David Billinghurst + + * mkcheck.in: Add function size_command() for irix. + +2000-11-14 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPOR): Set LIBS back to + initial value. + (GLIBCPP_EXPORT_INCLUDES): Only export TOPLEVEL_INCLUDES if + building a canadian cross. This should fix the remaining java + build issues. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * include/bits/c++config (__GLIBCPP__): Set release version for 2.91. + +2000-11-14 Phil Edwards + + * mkcheck.in: On a platform where we don't know how to extract + section sizes, just set them to zero. Use old method of reading + file contents. + +2000-11-13 Loren J. Rittle + + * config/c_io_stdio.h: Don't define __c_wfile_type + when _GLIBCPP_USE_WCHAR_T is not defined. + +2000-11-13 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_TARGET): New macro, replacing + GLIBCPP_CHECK_CPU and GLIBCPP_CHECK_OS, sourcing configure.target. + (GLIBCPP_CONFIGURE): Call new macro here. + * configure.host: Cleanup. + * configure.in: Remove those two macros. + * configure.target: New file. + * aclocal.m4: Regenerated. + * configure: Ditto. + * Makefile.in: Ditto. + * libio/Makefile.in: Ditto. + * libmath/Makefile.in: Ditto. + * libsupc++/Makefile.in: Ditto. + * src/Makefile.in: Ditto. + + * mkcheck.in: Use libtool. Split things out into functions. + +2000-11-12 Alexandre Petit-Bianco + + * Makefile.am (tmp-libstdsc++.INC:): Do not use -I$(top_builddir). + * Makefile.in: Regenerate. + +2000-11-12 David Edelsohn + + * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Add test for + libiconv.a providing wchar_t support functions. + * aclocal.m4: Regenerate. + +2000-11-12 Loren J. Rittle + + * acinclude.m4 (GLIBCPP_ENABLE_ATOMICITY): Handle FreeBSD. + * aclocal.m4, configure: Rebuilt. + +2000-11-12 Brent Verner + + * include/c_std/bits/wrap_langinfo.h: New file. + * include/c_std/langinfo.h: New file. + * include/bits/codecvt.h (__enc_trants::__enc_traits()): Bring in + CODESET from _C_legacy::CODESET if using shadow headers. + * src/Makefile.am: Add new files. + * src/Makefile.in: Regenerate. + +2000-11-12 Mark Mitchell + + * include/c/bits/std_cmath.h (abs): Change extern "C" declaration + of `abs (double)' to ... + (fabs): this. + + * config/os/solaris/solaris2.7/bits/os_defines.h: Define + __EXTENSIONS__. + +2000-11-11 Mark P Mitchell + + * include/bits/basic_file.h (__basic_file): Don't use __c_wfile_type + when _GLIBCPP_USE_WCHAR_T is not defined. + +2000-11-10 Phil Edwards + + * include/bits/codecvt.h (__iconv_adaptor): New adaptor function, + courtesy of Alexandre Oliva, to handle const/non-const signatures. + (codecvt::do_out): Use. + (codecvt::do_in): And here. + +2000-11-10 Gabriel Dos Reis + + * include/bits/cpp_type_traits.h: Fix typos. Adjust formatting. + +2000-11-10 Gabriel Dos Reis + + * include/bits/localefwd.h (_Count_ones<>::_S_halfcount, + _Count_ones<>::_S_count): Turn into enumerators. + +2000-11-08 Mark Mitchell + + * include/bits/codecvt.h (codecvt::do_out): Make it const-correct. + (codecvt::do_in): Likewise. + +2000-11-08 David Edelsohn + + * src/locale-inst.cc: Add explicit instantiations of + _M_fill_insert and fill_n<..., unsigned long,...> . + +2000-11-06 Gabriel Dos Reis + + * include/bits/std_complex.h (conj): Undo double removal. + +2000-11-06 Alexandre Oliva + + * acinclude.m4 (LIB_AC_PROG_CXX): Remove CXX from the list of + alternatives for CXX_libstdcxx, now that it is useless. + * aclocal.m4, configure: Rebuilt. + +2000-11-04 Mark Mitchell + + * acinclude.m4 (LIB_AC_PROG_CXX): Set CXX_libstdcxx from CXX. + * aclocal.m4: Regenerated. + * configure: Likewise. + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Fix punctuation in + use of `test'. + * aclocal.m4: Regenerated. + * configure: Likewise. + +2000-11-04 Alexandre Oliva + + * acinclude.m4 (CXX): Prevent it from being cached. + * aclocal.m4, configure, */Makefile.in: Rebuilt. + +2000-11-03 David Edelsohn + + * acinclude.m4 (GLIBCPP_CHECK_OS): Add AIX target selecting threads + flag based on multilib definition of $CXX. + * mknumeric_limits (LDFLAGS): Add AIX target linking with pthreads + based on multilib definition of $CXX. + * config/os/aix/bits/os_defines.h (_G_USING_THUNKS): Define as 0. + +2000-11-03 Phil Edwards + + * acinclude.m4: Cleanups. + * aclocal.m4: Regenerated. + * configure: Ditto. + * Makefile.in: Ditto. + * libio/Makefile.in: Ditto. + * libmath/Makefile.in: Ditto. + * libsupc++/Makefile.in: Ditto. + * src/Makefile.in: Ditto. + + * docs/install.html: Removal of EGCS. + * docs/23_containers/wrappers_h.txt: Likewise. + * docs/faq/index.html: Likewise. + * docs/faq/index.txt: Regenerated. + * docs/thanks.html: More people. + +2000-11-03 David Edelsohn + + * include/c/bits/std_cwchar.h: Undefine macro that conflicts + with function name defined in this file. + +Thu Nov 2 23:19:20 2000 Mark P Mitchell + + * include/c/bits/std_cctype.h: Undefine macros that conflict + with function names defined in this file. + * include/c/bits/std_cstdio.h: Likewise. + +2000-11-02 Mark Mitchell + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Fix typo. + +Thu Nov 2 10:11:45 2000 Mark P Mitchell + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Add support for IRIX. + * aclocal.m4: Regenerated. + * Makefile.in: Regenerated. + * libio/Makefile.in: Likewise. + * libmath/Makefile.in: Likewise. + * libsupc++/Makefile.in: Likewise. + * src/Makefile.in: Likewise. + * configure: Likewise. + * config/os/irix/bits/ctype_base.h: Revise. + * config/os/irix/bits/ctype_inline.h: Likewise. + * config/os/irix/bits/ctype_noninline.h: Likewise. + + * testsuite/22_locale/codecvt_unicode_char.cc: Don't run it + if not _GLIBCPP_USE_WCHAR_T. + * testsuite/22_locale/codecvt_unicode_wchar_t.cc: Likewise. + * testsuite/22_locale/ctor_copy_dtor.cc: Likewise. + * testsuite/22_locale/ctype_wchar_t_members.cc: Likewise. + + * mkcheck.in: Fix echoing of -rpath option. + + * config/os/irix/bits/atomicity.h (_Atomic_word): Make it a + signed type. + (__exchange_aand_add): Adjust accordingly. + (__atomic_add): Likewise. + +2000-11-02 Benjamin Kosnik + + * src/locale.cc: Match orderings for static members. + * include/bits/fstream.tcc: Fixes for cin. + +2000-11-02 Gabriel Dos Reis + + * include/bits/std_complex.h (complex<>): Remove (cos<>, cosh<>, + exp<>, log<>, log<>, sin, sinh<>) friend declarations. + (cos, cosh, sin, sinh): Define primary templates. + + * src/complex.cc (cos<>, cosh<>, sin<>, sinh<>): Comment out + definitions. + +2000-11-01 Benjamin Kosnik + + * bits/basic_file.h (_M_open_mode): Change signature, move + specializations to.. + * config/c_io_libio.cc: ...here. + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Add sdtio option, remove wince. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config/c_io_stdio.h: New file. + * config/c_io_stdio.cc: New file. + * docs/configopts.html: Modify documentation. + +2000-10-31 Benjamin Kosnik + + * include/c/bits/std_cwctype.h: Add more undefs. + +2000-10-31 Gabriel Dos Reis + + * include/bits/std_complex.h (norm): Forward declare. + (complex<>): Comment out friend declaration of conj<>. + (conj<>): Comment out specialization. + (exp, log, log10): Define primary templates. + + * src/complex.cc (exp<>, log<>, log10<>): Comment out + specializations. + +2000-10-31 Benjamin Kosnik + + * include/bits/std_complex.h: Remove duplicate definition of conj. + * include/c/bits/std_cwctype.h: Consistent placement of undefs. + +2000-10-31 Gabriel Dos Reis + + * src/complex.cc (arg, polar): Comment out specializations. + + * include/bits/std_complex.h (complex<>): Remove arg<> friend + declaration. + (arg): Define primary template. + (polar): Likewise. + (conj): Likewise. + +2000-10-31 Gabriel Dos Reis + + * include/c/bits/std_cwctype.h: #undef possible function-like + macro definitions of iswxxx functions, which might be brought in + by . Those macro definitions prevent build on some + linux-based systems. + + * include/bits/std_complex.h (complex<>): Comment out friend + declarations of abs<> specializations. + (abs): Define primary template. + + * src/complex.cc (abs): Comment out specialization definition. + +2000-10-30 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Raise debugging level from + the default of 2 to 3. + * configure.in: Fix minor typos. SUBST the values of enable_shared + and enable_static so that mkcheck will be aware of them. Put the + test for gconv.h in with all the other header tests. + * aclocal.m4: Regenerate. + * configure: Ditto. + * Makefile.in: Ditto. + * libio/Makefile.in: Ditto. + * libmath/Makefile.in: Ditto. + * libsupc++/Makefile.in: Ditto. + * src/Makefile.in: Ditto. + + * config/os/solaris/solaris2.7/bits/os_defines.h: Define + _G_USING_THUNKS to 0. + +2000-10-30 Benjamin Kosnik + + * src/complex_io.cc : Remove ancient defines. + * config/os/gnu-linux/bits/os_defines.h: Add defines. + * libsupc++/tinfo2.cc: Change to cstddef. + + * include/bits/codecvt.h: Add include of c++config.h, so that + __USE_GNU gets defined. (Important for alpha.) + + * include/c/bits/std_cwctype.h: Same. + * include/c/bits/std_ctime.h: And here. + * include/c/bits/std_cstdarg.h: Same. + * include/c/bits/std_csignal.h: Same. + * include/c/bits/std_csetjmp.h: Same. + * include/c/bits/std_clocale.h: Same. + * include/c/bits/std_climits.h: Touch. + * include/c/bits/std_cfloat.h: Same. + * include/c/bits/std_cerrno.h: Same. + * include/c/bits/std_cwchar.h: Same. + * include/c/bits/std_cassert.h: Same. + * include/c/bits/std_cctype.h: Same. + * include/c/bits/std_cstddef.h: And here. + * include/c/bits/std_cstdlib.h: And here. + * include/c/bits/std_cstdio.h: Same. + * include/c/bits/std_cstring.h: Add names to namespace std::. + + * include/bits/c++config (_GNU_SOURCE): Move linux-specific macros + from here... + (_ISOC99_SOURCE): And this one.... + * config/os/gnu-linux/bits/os_defines.h: ...to here. + + * include/bits/codecvt.h (codecvt<_InternT, _ExternT, + __enc_traits>::do_in): Don't cast to const, this is a bug in glibc + prior to 2.2. + (codecvt<_InternT, _ExternT, __enc_traits>::do_out): Same. + * include/c/bits/std_cwchar.h: Add using declarations for mbstate_t. + +2000-10-30 Steven King + + * include/bits/codecvt.h: Add cast. + * include/c_std/stdio.h: Re-add printf using declaration. + * include/c_std/bits/std_cstdio.h: Same + * testsuite/22_locale/codecvt_wchar_t_char.cc: Fixup testsuite. + * testsuite/22_locale/ctor_copy_dtor.cc: Same. + * testsuite/22_locale/facet.cc: Same. + * testsuite/22_locale/global_templates.cc: Same. + * testsuite/22_locale/operators.cc: Same. + * testsuite/22_locale/static_members.cc: Same. + * testsuite/26_numerics/c_math.cc: Same. + * testsuite/26_numerics/complex_inserters_extractors.cc: Same. + * testsuite/27_io/fpos.cc: Same. + * testsuite/27_io/istream_extractor_arith.cc: Same. + * testsuite/27_io/istream_unformatted.cc: Same. + * testsuite/27_io/ostream_inserter_arith.cc: Same. + * testsuite/27_io/streambuf.cc: Same. + +2000-10-30 Mark Mitchell + + * acinclude.m4 (GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT): Check + for cabs, cabsf, and cabsl, too. + * aclocal.m4: Regenerated. + * config.h.in: Likewise. + * configure: Likewise. + * libmath/Makefile.am (libmath_la_SOURCES): Remove cabs.c and + cabsf.c. + * libmath/Makefile.in: Regenerated. + * libmath/complex-stub.h (cabs): Don't declare if the system + already provides this function. + (cabsf): Likewise. + (cabsl): Likewise. + * src/complex.cc (abs): Directly use `hypot' since we can't call + cabs on IRIX. + +2000-10-30 Joseph S. Myers + + * acinclude.m4: Update URL on egcs.cygnus.com to point to + gcc.gnu.org. + * aclocal.m4, configure: Regenerate. + * src/gen-num-limits.cc, include/bits/c++config, + include/bits/stl_config.h: Remove EGCS references. + +2000-10-29 Mark Mitchell + + * mkcheck.in (test_file): Use -rpath, rather than --rpath, when + building shared executables. + +2000-10-29 Mark Harig + + * src/Makefile.am: Change logic for include dir options. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am: Ditto. + * libsupc++/Makefile.in: Regenerate. + +2000-10-29 Benjamin Kosnik + + * configure.in: Simplify use of AC_CACHE_SAVE. Put linked files + in $(top_builddir)/include/bits, not $(top_builddir)/bits, to help + with libgcj build issues and improve consistency with the source + directory's include directory setup. + * configure: Regenerate. + * acinclude.m4: Same here. + * aclocal.m4: Regenerate. + * mknumeric_limits (OUT_H): Also change paths here. + * mkcheck.in (C_DIR): And here. + * mkc++config (OUT_H): And here. + * libmath/Makefile.am (INCLUDES): And here. + * src/Makefile.am (INCLUDES): Change to $(top_builddir)/include. + * libio/Makefile.am: Ditto. + * libsupc++/Makefile.am (INCLUDES): Ditto. + +2000-10-29 Mark Mitchell + + * config/c_io_libio.cc (basic_file::__basic_file): + Don't pass a NULL _IO_wide_data to _IO_no_init when + _GLIBCPP_USE_WCHAR_T is not defined. + * config/c_io_libio.h (_IO_codecvt): Don't declare when + _GLIBCPP_USE_WCHAR_T is not defined. + * config/c_io_libio_codecvt.c: Don't compile it + when _GLIBCPP_USE_WCHAR_T is not defined. + * include/bits/codecvt.h (codecvt<_InternT, _ExternT, __enc_traits): + Don't define this specialization when _GLIBCPP_USE_WCHAR_T + is not defined. + * include/bits/locale_facets.h (): Don't + include it when _GLIBCPP_USE_WCHAR_T is not defined. + * src/codecvt.cc (__enc_traits::_S_max_size): Don't define + when _GLIBCPP_USE_WCHAR_T is not defined. + * src/localename.cc (locale::_Impl::_M_construct_collate): + Don't call wide-character functions when _GLIBCPP_USE_WCHAR_T is + not defined. + (locale::_Impl::_M_construct_ctype): Likewise. + (locale::_Impl::_M_construct_monetary): Likewise. + (locale::_Impl::_M_construct_numeric): Likewise. + (locale::_Impl::_M_construct_time): Likewise. + (locale::_Impl::_M_construct_messages): Likewise. + + * acinclude.m4 (GLIBCPP_ENABLE_ATOMICITY): Handle IRIX. + * aclocal.m4: Regenerated. + * configure: Likewise. + * config/os/irix/bits/atomicity.h: New file. + * config/os/irix/bits/os_defines.h (_POSIX_SOURCE): Undefine. + (__off_t): Define. + (__off64_t): Likewise. + (__ssize_t): Likewise. + (_G_USING_THUNKS): Define to zero. + +2000-10-28 Mark Mitchell + + * src/string-inst.cc (basic_string::npos): Explicitly + instantiate it. + +2000-10-26 Benjamin Kosnik + + * include/c/bits/std_cmath.h: Fix double declarations in namespace std. + + Clean up naming, consistency in "C" library autoconf testing. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): For consistency, change to + GLIBCPP_CHECK_CTYPE_SUPPORT. + (GLIBCPP_CHECK_STDLIB_SUPPORT): Add. + * aclocal.m4: Regenerate. + * configure.in: And here. + Add call to GLIBCPP_CHECK_STDLIB_SUPPORT. + * configure: Regenerate. + +2000-10-26 David Edelsohn + + * acinclude.m4 (GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2): New macro. + (GLIBCPP_CHECK_MATH_SUPPORT): Use it to test for strtold. + +2000-10-26 Phil Edwards + David Edelsohn + + * acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Comment out + --gc-sections stuff entirely to avoid misleading people. + (GLIBCPP_ENABLE_CSTDIO): Merge need_libio and need_xtra_libio. + * libio/Makefile.am (LIBIO_SRCS,LIBIO_WSRCS,LIBIO_XTRA_SRCS): + Rearrange and merge. + * libio/libio.h: Simplify, make fewer assumptions. Define those + macros which must be defined. + * config/os/solaris/solaris2.7/bits/os_defines.h: Simplify as a + result. + +2000-10-26 Mark Mitchell + + * include/backward/streambuf.h: New file. + +2000-10-26 David Edelsohn + + * config/os/aix/bits/ctype_inline.h (is): Use __OBJ_DATA directly. + * config/os/aix/bits/ctype_noninline.h (do_tolower): Fix typo. + * config/os/aix/bits/os_defines.h: Add AIX defines. + +2000-10-26 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_DOUBLE): Remove. + * aclocal.m4: Regenerate. + * configure.in: Remove GLIBCPP_ENABLE_LONG_DOUBLE. + * configure: Regenerate. + * docs/configopts.html: Remove. + * src/complexl.cc: Revert. + * config.h.in: Remove. + * include/c_std/bits/std_cmath.h: Remove guards based on + _GLIBCPP_USE_LONG_DOUBLE. + * include/c/bits/std_cmath.h: Same. Format. Match c_std behavior + with respect to long double signatures. + + * config/os/aix/bits/ctype_noninline.h (ctype): Remove throw + specification. + * config/os/newlib/bits/ctype_noninline.h (ctype): And here. + * config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same. + * config/os/generic/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/bits/ctype_noninline.h (ctype): Same. + +2000-10-26 Gabriel Dos Reis + + * include/bits/std_valarray.h (valarray::valarray): Fix thinko. + Use __valarray_copy_construct only where appropriate. + +2000-10-25 Mark Mitchell + + * Makefile.in (check): Don't make mkcheck executable. + (check-install): Likewise. + * configure.in (AC_OUTPUT): Make mkcheck executable. + * mkcheck.in (top_srcdir): New variable. + (INC_PATH): Set the path to the backward and ext directories + correctly. + +2000-10-25 Phil Edwards + + * configure.in: Check for gconv.h. + * libio/wfileops.c: Wrap gconv.h in HAVE_GCONV_H. + + * config/c_io_libio_codecvt.c: Change __mbstate_t to __c_mbstate_t. + * libio/_G_config.h: And here. + * libio/iofwide.c: And here. + * libio/libio.h: And here. + + * config/os/solaris/solaris2.7/bits/ctype_noninline.h: Remove + exception specification to match declaration. + * include/bits/locale_facets.tcc: Include bits/std_clocale.h. + +2000-10-24 Mark Harig + + * docs/configopts.html: Added documentation for the + "--enable-version-specific-runtime-libs" and + "--with-gxx-include-dir" configuration switches. + +2000-10-24 Benjamin Kosnik + + * include/bits/stl_pair.h (make_pair): Add LWG solution. + + * testsuite/21_strings/compare.cc (test01): Inject namespace std + into the mix. + + * mkcheck.in (MAX_MEM_USAGE): Bump up to 3072. Strangely enough, + this works. + +2000-10-24 Levente Farkas + + * include/bits/std_bitset.h (_M_do_find_next): Fix typo. + +2000-10-24 Phil Edwards + + * acconfig.h: List _GLIBCPP_USE_THREADS. + * acinclude.m4: General formatting cleanup (tabs/spaces), typo + correction, etc. Add comments about following *real* changes + where they are used. + (GLIBCPP_ENABLE_C_MBCHAR): New test... + (GLIBCPP_CHECK_WCHAR_T_SUPPORT): ...results used here. + (GLIBCPP_ENABLE_CSTDIO): Define need_wlibio iff wide characters + are requested. + (GLIBCPP_ENABLE_THREADS): If threads are used, define new + macro _GLIBCPP_USE_THREADS in c++config.h. + (GLIBCPP_ENABLE_SHADOW): For C_INCLUDE_DIR, change () to {} as + this is used in both makefiles and shell scripts (mkcheck). + * configure.in: Call GLIBCPP_ENABLE_C_MBCHAR. + + * libio/_G_config.h: Wrap _IO_MTSAFE_IO in _GLIBCPP_USE_THREADS. + * config/c_io_libio.h: In nonthreaded case, typedef __c_lock to + something harmless, like int. + + * config/os/aix/bits/os_defines.h: Guard with _GLIBCPP_OS_DEFINES, + add comment/instructions. + * config/os/bsd/bits/os_defines.h: Ditto. + * config/os/generic/bits/os_defines.h: Ditto. + * config/os/gnu-linux/bits/os_defines.h: Ditto. + * config/os/irix/bits/os_defines.h: Ditto. + * config/os/newlib/bits/os_defines.h: Ditto. + * config/os/solaris/solaris2.5/bits/os_defines.h: Ditto. + * config/os/solaris/solaris2.6/bits/os_defines.h: Ditto. + + * mkcheck.in: Limit the available heap size for testsuite + binaries, initially at 2MB. + +2000-10-23 Benjamin Kosnik + + * testsuite/21_strings/compare.cc (test01): Add using declarations. + + * include/c_std/bits/std_cerrno.h: And here. + * include/c_std/bits/std_cassert.h: Tweaks. + + * mkcheck.in: Simplify. + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_DOUBLE): Simplify. + (GLIBCPP_ENABLE_LONG_LONG): Same. + * aclocal.m4: Regenerate. + + * src/Makefile.am (c_shadow_headers): Add features.h, + bits/wrap_features.h. + * src/Makefile.in: Regenerate. + * include/c_std/features.h: New file. + * include/c_std/bits/wrap_features.h (_CPP_WRAP_FEATURES_H): New + file. Need to have c++config.h included before this file so + _ISOC99_SOURCE around. + + * include/c_std/sys/cdefs.h: Hack. + * include/c_std/stdlib.h: Same, use c++config.h. + * include/c_std/bits/std_cstdlib.h: Use _GLIBCPP_HAVE_STRTOLD. + + * include/c_std/bits/std_cassert.h: Fix. + * include/c_std/bits/std_cerrno.h: Make consistent. + + * include/c_std/bits/std_csetjmp.h (setjmp): Unscope global + declaration from ::_C_legacy to _C_legacy. + + * include/c_std/bits/std_cstdio.h: same with printf. + * include/c_std/stdio.h: And here. + + * include/c_std/bits/std_cstdlib.h: abort, exit comment. + * include/c_std/stdlib.h: Same here. + +2000-10-23 Benjamin Kosnik + + * testsuite/21_strings/compare.cc (test01): Add using declarations. + + * include/c_std/bits/std_cerrno.h: And here. + * include/c_std/bits/std_cassert.h: Tweaks. + + * mkcheck.in: Simplify. + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_DOUBLE): Simplify. + (GLIBCPP_ENABLE_LONG_LONG): Same. + * aclocal.m4: Regenerate. + + * src/Makefile.am (c_shadow_headers): Add features.h, + bits/wrap_features.h. + * src/Makefile.in: Regenerate. + * include/c_std/features.h: New file. + * include/c_std/bits/wrap_features.h (_CPP_WRAP_FEATURES_H): New + file. Need to have c++config.h included before this file so + _ISOC99_SOURCE around. + + * include/c_std/sys/cdefs.h: Hack. + * include/c_std/stdlib.h: Same, use c++config.h. + * include/c_std/bits/std_cstdlib.h: Use _GLIBCPP_HAVE_STRTOLD. + + * include/c_std/bits/std_cassert.h: Fix. + * include/c_std/bits/std_cerrno.h: Make consistent. + + * include/c_std/bits/std_csetjmp.h (setjmp): Unscope global + declaration from ::_C_legacy to _C_legacy. + + * include/c_std/bits/std_cstdio.h: same with printf. + * include/c_std/stdio.h: And here. + + * include/c_std/bits/std_cstdlib.h: abort, exit comment. + * include/c_std/stdlib.h: Same here. + +2000-10-21 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_DOUBLE): New macro. + * aclocal.m4: Regenerate. + * configure.in: Use it. + * configure: Regenerate. + * src/complexl.cc: Fixup. + * include/c_std/bits/std_cmath.h: Fixup. + * include/c/bits/std_cmath.h: Fixup. + * docs/configopts.html: Add docs. + + * docs/links.html: Add links to defects list, standards FAQ. + + * testsuite/21_strings/ctor_copy_dtor.cc (test01): Disable tests + with string creation that allocate huge ammounts of memory. + + * include/c/bits/std_cstddef.h: Put size_t, ptrdiff_t in + namepace std. + +2000-10-21 Theodore Papadopoulo + + * libsupc++/exception.cc: Use namespace std. + * libsupc++/new: DITTO. + * libsupc++/new_op.cc: DITTO. + * libsupc++/new_opnt.cc: DITTO. + * libsupc++/new_opv.cc: DITTO. + * libsupc++/new_opvnt.cc: DITTO. + * libsupc++/tinfo.cc: DITTO. + * libsupc++/tinfo.h: DITTO. + * libsupc++/vec.cc: DITTO. + * libsupc++/Makefile.am: Blank lines removal. + +2000-10-21 Joseph S. Myers + + * docs/configopts.html, docs/install.html, docs/17_intro/BADNAMES, + docs/17_intro/howto.html, docs/18_support/howto.html, + docs/19_diagnostics/howto.html, docs/20_util/howto.html, + docs/21_strings/howto.html, docs/22_locale/howto.html, + docs/23_containers/howto.html, docs/24_iterators/howto.html, + docs/25_algorithms/howto.html, docs/26_numerics/howto.html, + docs/27_io/howto.html, docs/ext/howto.html, docs/faq/index.html: + Remove many EGCS references; use current absolute URLs on + gcc.gnu.org or sources.redhat.com for messages in list archives. + * docs/faq/index.txt: Regenerate. + +2000-10-19 Benjamin Kosnik + + * testsuite/22_locale/codecvt_unicode_char.cc (test01): Adjust + creation of state_type for unicode_codecvt to take into account + the byte order markings. Add distinct tests for UCS-2BE and UCS-2LE. + * testsuite/22_locale/codecvt_unicode_wchar_t.cc (test01): Same. + * include/bits/codecvt.h (__enc_traits): Add support for encodings + that need a byte order marker. Needed for correct unicode support. + + * src/locale.cc: Remove explicit qualification std::. + (locale::locale(const char* __name)): Revert, as named locale + support not finished. + * src/localename.cc (locale::_Impl:: _Impl(size_t __numfacets, + size_t __refs, bool __has_name = false, string __name): Move + default argument... + * include/bits/localefwd.h: Here. + +2000-10-18 Chip Salzenberg + + * libio/libio.h (_IO_USER_LOCK): Define. + +2000-10-18 Benjamin Kosnik + + * libsupc++/Makefile.am (exception): Change exception.cc to + exception_support.cc. + (CXXLINK): Remove bogus --tag CC. + * libsupc++/Makefile.in: Regenerate. + * libsupc++/exception.cc: Move to... + * libsupc++/exception_support.cc: ...here. + + * src/Makefile.am: Remove bogus --tag CC. + * src/Makefile.in: Regenerate. + + * include/bits/locale_facets.tcc (use_facet): Simplify. + * include/bits/locale_facets.h (use_facet >): Correct + use_facet declaration. Replace 'const ctype' with ctype. + (use_facet >): Same. + * src/locale-inst.cc: Remove explicit instantiation. + * src/locale.cc: Correct signature here too. + (_Bad_use_facet::what()): Correct error string. + * include/bits/localefwd.h: Correct comment. + + * mkcheck.in (C_DIR): Change libsupc++/include to libsupc++. + +2000-10-17 Martin Buchholz + + * testsuite/27_io/istream_seeks.cc: Fix spelling typo. + * testsuite/27_io/ostream_seeks.cc: Similarly. + +2000-10-17 Benjamin Kosnik + + via Alexandre Oliva + * libsupc++/Makefile.am: Add --tag CXX, --tag CC, comments. + * libsupc++/Makefile.in: Regenerate. + * src/Makefile.am: Duplicate code. + * src/Makefile.in: Regenerate. + + * acinclude.m4 (GLIBCPP_ENABLE_RELIBGCC): Take this out. + * aclocal.m4: Regenerate. + * configure.in: And here. + * configure: Regenerate. + + * acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Disable + test for SECTION_LDFLAGS. + +2000-10-16 Benjamin Kosnik + + Shadow headers would work if libsupc++ was strict about namespaces. + This only possible if g++ maps std::size_t -> size_t. (Hint hint.) + * include/c_std/assert.h: Add guards. + * include/c_std/bits/std_climits.h: Correct typo. + * include/c_std/ctype.h: Remove #error. + + * libio/libioP.h: Break up extern "C" bits around includes. + * libio/libio.h: Only include C headers, or else _C_legacy namespaces + will be nested. + * libio/libioP.h: Same here. + +2000-10-15 Theodore Papadopoulo + + * include/c_std/unistd.h: Define some types only when defined in + the original unistd.h. + * include/c_std/bits/std_cstddef.h: Explicitly ask for the + definition of size_t, ptrdiff_t and NULL. + * include/c_std/bits/wrap_unistd.h: Blank lines removal. + +2000-10-15 Phil Edwards + + * docs/configopts.html: Remove libgcc-rebuild; HTML formatting. + +2000-10-13 Benjamin Kosnik + Mark Harig + + * src/Makefile.am (toolexeclibdir): Add support fo + VERSION_SPECIFIC_LIBS and --with-gxx-include-dir. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am: Same. + (glibcppinstalldir): Adjust. + * libsupc++/Makefile.in: Regenerate. + * Makefile.am: Remove gxx_include_dir. Remove INCLUDE. + * Makefile.in: Regenerate. + * docs/configopts.html: Add descriptions of flags. + +2000-10-11 Benjamin Kosnik + + * libsupc++/Makefile.am: Use it. + * libio/Makefile.am: Use it. + * libmath/Makefile.am: Use it. + * src/Makefile.am: Use it. + * Makefile.am (AM_MAKEFLAGS): Remove includes. + + * acinclude.m4 (GLIBCPP_EXPORT_INCLUES): Move include macros here. + (GLIBCPP_EXPORT_FLAGS): Move CXX flag setting here. + * configure.in: Use it. + + * mkcheck.in (SRC_DIR): Use C_INCLUDE_DIR. + + * src/Makefile.am (CXXCOMPILE): Remove. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am (CXXCOMPILE): Same here. + * libsupc++/Makefile.in: Regenerate. + + * include/c_std/*: Merge with shadow. + * include/c_std/bits/*: Same. + + * shadow: Remove directory. + * shadow/*: De-populate. + +2000-10-11 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Comment out + exception-throwing code for linker test. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-10-10 Benjamin Kosnik + + * Makefile.am (LIBSUPCXX_INCLUDES): Adjust. + * libsupc++/include: Remove + * libsupc++/include/*: Move to ... + * libsupc++: Here. + * libsupc++/Makefile.am (glibcppinstall_HEADERS): Install headers. + (glibcppinstalldir): New. + + * src/Makefile.am (c_base_headers): New. + (c_shadow_headers): New + (c_headers): New. + (myinstallheaders): Correct install issues. + * src/Makefile.in: Regenerate. + + * Makefile.am (CSHADOW_INCLUDES): Simplify. + * Makefile.in: Regenerate. + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): Add c_include_dir. + * aclocal.m4: Regenerate. + * mkcheck.in (SRC_DIR): Use it. + + * include/bits/std_stdexcept.h: And here. + * include/bits/std_ios.h: Change std_exception.h to exception. + * src/locale.cc: And here. + * src/locale-inst.cc: And here. + + * include/bits/valarray_array.h: And here. + * include/bits/stl_alloc.h: And here. + * include/bits/stl_algobase.h: And here. + * include/bits/pthread_allocimpl.h: And here. + * include/bits/stl_construct.h: Change to std_new.h to new. + + * include/bits/locale_facets.h: Change std_typeinfo.h to typeinfo. + + * src/Makefile.am (INCLUDES): Add LIBSUPCXX_INCLUDES. + (headers): Remove duplicated headers. + (std_headers): And here. + * src/Makefile.in: Regenerate. + * libsupc++/Makefile.am (LIBSUPCXX_INCLUDES): Remove. + * libsupc++/Makefile.in: Regenerate. + * Makefile.am (LIBSUPCXX_INCLUDES): Add here. + (AM_MAKEFLAGS): And here. + * Makefile.in: Regenerate. + * include/bits/std_typeinfo.h: Remove. + * include/bits/std_new.h: Remove + * include/bits/std_exception.h: Remove. + * std/new: Remove. + * std/typeinfo: Remove. + * std/exception: Remove. + + * libio/_G_config.h (__need_ptrdiff_t): Add. + + * libsupc++/include/new: Change stddef.h to cstddef. + * libsupc++/tinfo.h: Change limits.h to climits. + * libsupc++/pure.cc: Comment out _GNU_LIBRARY_ bits, as this + renders the file uncompilable. Add copyright. + + * include/c_std/bits/std_cstddef.h: Don't bring wchar_t into std + namespace, as it is a fundamental type. + +2000-10-09 Richard Henderson + + * libsupc++/pure.cc: New file. + * libsupc++/Makefile.am (INCLUDES): Add top_builddir. + (sources): Add pure.cc. + * libsupc++/Makefile.in: Regenerate. + +2000-10-09 Benjamin Kosnik + + * docs/configopts.html: Edit. + + * libio/Makefile.am (INCLUDES): Remove duplicates, simplify. + * libio/Makefile.in: Regenerate. + * libmath/Makefile.am (INCLUDES): Remove duplicates, simplify. + * libmath/Makefile.in: Regenerate. + * libsupc++/Makefile.am (INCLUDES): Remove duplicate. + * libsupc++/Makefile.in: Regenerate. + + * Makefile.am (AM_MAKEFLAGS): Add GLIBCPP_INCLUDES, + TOPLEVEL_INCLUDES, LIBMATH_INCLUDES, LIBIO_INCLUDES, + CSHADOW_INCLUDES up here. + * Makefile.in: Regenerate. + * src/Makefile.am (CSHADOW_INCLUDES): Add include/c_std, include/c + for shadow headers. + (myinstallheaders): Change glibcpp_includedir to GLIBCPP_INCLUDES. + Move GLIBCPP_INCLUDES, TOPLEVEL_INCLUDES, LIBMATH_INCLUDES, + LIBIO_INCLUDES, CSHADOW_INCLUDES up Makefile hierarchy. + * src/Makefile.in: Regenerate. + + * include/c: New directory. + * include/c/bits/(std_cassert.h, std_cctype.h, std_cerrno.h, + std_cfloat.h, std_climits.h, std_clocale.h, std_cmath.h, + std_csetjmp.h, std_csignal.h, std_cstdarg.h, std_cstddef.h, + std_cstdio.h, std_cstdlib.h, std_cstring.h, std_ctime.h, + std_cwchar.h, std_cwctype.h): Add, moving from... + * include/bits: ...here. + * include/c_std: New directory. + * include/c_std/bits/*: Populate from... + * shadow: ...here. Remove directory. + +2000-10-08 Benjamin Kosnik + + * libsupc++/Makefile.am (INCLUDES): Add toplevel include directory. + (INCLUDES): Add glibcpp_includedir. + * libsupc++/Makefile.in: Regenerate. + + * acinclude.m4 (GLIBCPP_CHECK_OS): Link to os_defines.h. + * aclocal.m4: Regenerate. + * config/os/*/bits/os_defines: Adjust copyright dates. + +2000-10-08 Phil Edwards + + * include/bits/c++config: Include + * config/os/aix/bits/os_defines.h: New file. + * config/os/bsd/bits/os_defines.h: Ditto. + * config/os/generic/bits/os_defines.h: Ditto. + * config/os/gnu-linux/bits/os_defines.h: Ditto. + * config/os/irix/bits/os_defines.h: Ditto. + * config/os/newlib/bits/os_defines.h: Ditto. + * config/os/solaris/solaris2.5/bits/os_defines.h: Ditto. + * config/os/solaris/solaris2.6/bits/os_defines.h: Ditto. + * config/os/solaris/solaris2.7/bits/os_defines.h: Ditto. + +2000-10-07 David Edelsohn + + * config/os/aix/bits/atomicity.h: New file. + +2000-10-07 Benjamin Kosnik + + * acinclude.m4: Remove CPU_FLAGS + * libio/Makefile.am: Here too. + * Makefile.am: Here too. + + * src/Makefile.am (CONFIG_INCLUDES): Remove. + (INCLUDES): Remove CONFIG_INCLUDES. + (cpu_headers): Remove. + (myinstallheaders): Remove cpu_headers. + (generated_headers): Rename to build_headers. + (build_headers): Add atomicity.h, ctype_base.h, + ctype_specializations.h. + + * config/os: New directory. + * config/aix: Move to... + * config/bsd: Move to... + * config/generic: Move to... + * config/gnu-linux: Move to... + * config/irix: Move to... + * config/newlib: Move to... + * config/solaris: Move to... + * config/os/*: Here. + +2000-10-07 Benjamin Kosnik + + * acinclude.m4: Remove CPU_FLAGS + * libio/Makefile.am: Here too. + * Makefile.am: Here too. + + * src/Makefile.am (CONFIG_INCLUDES): Remove. + (INCLUDES): Remove CONFIG_INCLUDES. + (cpu_headers): Remove. + (myinstallheaders): Remove cpu_headers. + (generated_headers): Rename to build_headers. + (build_headers): Add atomicity.h, ctype_base.h, + ctype_specializations.h. + + * config/os: New directory. + * config/aix: Move to... + * config/bsd: Move to... + * config/generic: Move to... + * config/gnu-linux: Move to... + * config/irix: Move to... + * config/newlib: Move to... + * config/solaris: Move to... + * config/os/*: Here. + +2000-10-06 Benjamin Kosnik + + * src/Makefile.am: Remove OPTIMIZE_CXXFLAGS, WARN_CXXFLAGS, + CONFIG_CXXFLAGS from here, and move to... + * src/Makefile.in: Regenerate. + * Makefile.am: ... here. Clean. + (OPTIMIZE_CXXFLAGS): Move up Makefile hierarchy to here. + (WARN_CXXFLAGS): Same. + (CONFIG_CXXFLAGS): Same. + * Makefile.in: Regenerate. + * libsupc++/Makefile.am: Use top-level OPTIMIZE_CXXFLAGS, + WARN_CXXFLAGS, CONFIG_CXXFLAGS as part of local AM_CXXFLAGS. + * libsupc++/Makefile.in: Regenerate. + + Change math to libmath. + * math: Move to libmath, delete. + * libmath: New directory. + * libmath/*: Populate. + * src/Makefile.am (LIBMATH_INCLUDES): Change to libmath. + (libstdc___la_LIBADD): Same. + * src/Makefile.in: Regenerate. + * configure.in: Add AC_OUTPUT for libmath/Makefile. + * configure: Regenerate. + * Makefile.am (SUBDIRS): Add libmath. + * Makefile.in: Regenerate. + * README (file): Change name. + +2000-10-06 Benjamin Kosnik + Richard Henderson + Alexandre Oliva + + * libsupc++: New directory. + * libsupc++/*: Populate. + * libsupc++/Makefile.am (INCLUDES): Add -I../../gcc for + eh-common.h, gansidecl.h. + * configure.in: Add in libsupc++/Makefile to AC_OUTPUT. + * configure: Regenerate. + * Makefile.am (SUBDIRS): Add libsupc++. + * Makefile.in: Regenerate. + * src/Makefile.am (libstdc___la_LIBADD): Add in libsupc++.la + * src/Makefile.in: Regenerate. + * libio/Makefile.am: Remove extraneous, confusing bits. + * libio/Makefile.in: Regenerate. + +2000-10-05 Brent Verner + + * bits/istream.tcc [basic_istream::get(basic_streambuf&)]: Removed + test for _M_gcount < in_avail(), as in_avail() only reports info + for current buffer, causing method to return at end of buffer. + * testsuite/27_io/istream_unformatted.cc [test07()]: New test. + * testsuite/27_io/istream_unformatted-3.txt: New file. + * testsuite/27_io/istream_unformatted-3.tst: New file. + +2000-10-05 Benjamin Kosnik + + * README (file): Adjust directory structures. + * mkcheck.in (INC_PATH): Adjust for header changes. + +2000-10-05 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Tweaks to message texts + for public relations purposes. + * aclocal.m4: Regenerated. + * configure: Regenerated. + + * docs/ext/howto.html: Additional explanation about hashing. + +2000-10-05 Benjamin Kosnik + + * include: New directory. + * include/backward: New directory. + * include/bits: New directory. + * include/ext: New directory. + * include/std: New directory. + * include/*/*: Populate. + + * backwards: Move to include/backwards, delete. + * bits: Move to include/bits, delete. + * ext: Move to include/ext, delete. + * std: Move to include/std, delete. + + * src/complex.cc: Adjust include of mathconf. + + * mkc++config (BASE_H): Add include. + + * src/Makefile.am: Support for topleve sources include directory. + (INCLUDES): Add LIBMATH_INCLUDE. + * src/Makefile.in: Regenerate. + * math/Makefile.am (INCLUDES): Append /include. + * math/Makefile.in: Regenerate. + * libio/Makefile.am (INCLUDES): Add glibcpp_includedir. + * libio/Makefile.in: Regenerate. + +2000-10-04 Benjamin Kosnik + + * libio/_G_config.h : Re-guard the __mbstate_t declaration. + +2000-10-03 Benjamin Kosnik + + * docs/22_locale/howto.html: Add link to proto-documentation on + locales. + * docs/documentation.html: Rename links for clarity. + + * src/Makefile.am (headers): Remove unistd.h, wrap_unistd.h. Add + fcntl.h, iolibio.h, libioP.h, pthread.h, iconv.h. + * src/Makefile.in: Regenerate. + +2000-10-02 Steven King + + * mkcshadow: Fixed script to output proper include guard. + * bits/char_traits.h: Cleaned up types in char_traits functions. + * libio/_G_config.h: Hacked to make work with shadow heraders. + * shadow/*: Hacked to make shadow headers work. + +2000-10-02 Benjamin Kosnik + + Self-compile with shadow headers. + * acconfig.h (_GLIBCPP_USE_SHADOW_HEADERS): Define. Eventually, + like _GLIBCPP_USE_NAMESPACES before it, this macro will die when + it becomes the default way the library is built. + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): New macro. + * config/gnu-linux/bits/ctype_base.h (ctype_base): Use it. + * config/gnu-linux/ctype.cc (ctype): Use it. + + * src/localename.cc (locale::_Impl::_M_replace_categories): Remove + call to assert. + * src/locale.cc: Explicitly cast mbstate_t to void* in calls to + memset. This should not be necessary, but an ambiguous overload + with it in. + + * shadow/bits/std_cwchar.h: Fix. + * shadow/wchar.h: Fix. + + * config/gnu-linux/bits/ctype_base.h (ctype_base): Inject ctype + enums into namespace std:: for ctype_base enum. Other OS types + will have to do this as well. + * config/gnu-linux/ctype.cc (ctype): Inject ctype data into + namespace std, in particular __ctype_toupper, __ctype_tolower, + __ctype_b. + + * shadow/iolibio.h: New file. + * shadow/bits/wrap_iolibio.h: New file. + * shadow/libioP.h: New file. + * shadow/bits/wrap_libioP.h: New file. + * shadow/bits/wrap_fcntl.h: New file. + * shadow/fcntl.h: New file. + * shadow/iconv.h: New file. Inject iconv names into the global + namespace, unmangled for the moment. + * shadow/bits/wrap_iconv.h: New file. + * shadow/unistd.h: Remove. Useless. + * shadow/bits/wrap_unistd.h: Remove. + + * src/Makefile.am: Take out machine-ansi.h, add fcntl.h unistd.h. + * src/Makefile.in: Regenerate. + + * config/c_io_libio.h (_IO_codecvt): Change to normal C++ decl. + + * shadow/libio.h: Fix. + * shadow/bits/wrap_libio.h: Fix. + + * shadow/bits/std_clocale.h: Remove typedef struct construct, + which will not compile. + * shadow/bits/std_ctime.h: Same. + + * shadow/pthread.h: New file. Put pthreads types and functions + into global scope, which is probably not the correct long-term + solution but has to be done at the moment before libio wrappers + can even be started. + * shadow/bits/wrap_pthread.h: New file. + + * bits/std_ios.h: Formatting tweak. + * shadow/bits/std_cstdio.h: Format. Remove extraneous bits. + + * acinclude.m4 (GLIBCPP_CHECK_COMPILER_FEATURES): Add -Werror to + tests for compiler features. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * config/c_io_libio.cc: Remove fcntl.h include, as SEEK_SET + redefined. + * libio/libioP.h: Comment out fcntl.h include. + + * shadow/math.h: Add in float and long declarations, as per ISO C9X. + + * bits/c++config: Define _ISOC99_SOURCE. + + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): Add -fno-builtins to + CSHADOWFLAGS, as well as _ISOC99_SOURCE. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * src/Makefile.am (CSHADOW_INCLUDES): Enable, again. + (CSHADOW_INCLUDES): Add -I$(top_srcdir)/std before shadow include dir. + (CXXCOMPILE): Remove $(DEFS), which searches $(top_srcdir) before + std or shadow directories. + (LTCXXCOMPILE): Same. + (INCLUDES): Add $(top_builddir) before $(top_srcdir). + (AC_CXXFLAGS): Add CSHADOWFLAGS. + * src/Makefile.in: Regenerate. + + * src/complex.cc (FCT): Change ::name to name. + * src/complexl.cc (FCT): Same. Use _GLIBCPP_USE_LONG_LONG here. + * src/complexf.cc (FCT): Same. + + * src/complexf.cc: Remove FCT define, as things are properly + overloaded in the std namespace with the shadow headers. + * src/complexl.cc: Same. + * src/complex.cc: Same. + +2000-09-25 Phil Edwards + + * docs/documentation.html: Add link to... + * docs/ext/howto.html: ...this. New dir/file, describing library + extensions (both ours and SGI's). + * docs/faq/index.html: Small updates. + * docs/faq/index.txt: Regenerate. + +2000-09-25 Theodore Papadopoulo + + * bits/basic_file.h (_M_open_mode): Remove extra qualifier. + +2000-09-25 Levente Farkas + + * ext/stl_hashtable.h (_M_copy_from): Change __copy to __local_copy. + +2000-09-19 Benjamin Kosnik + + * src/localename.cc (locale::_Imp) : Remove typedefs. + * bits/localefwd.h (locale::locale(const locale& __other, _Facet* + __f): Consistency check, call _Imp ctor with reference argument + of 1. + * bits/localefwd.h: Change _S_num_categories to + _S_categories_num. Add new data member, _S_facets_num, which is + the number of standard facets. + +2000-09-19 Phil Edwards + + * docs/21_strings/howto.html: Fix editor lossage from last commit. + +2000-09-19 Phil Edwards + + * docs/thanks.html: More thanks. + * docs/18_support/howto.html: Fix thinko. + * docs/21_strings/howto.html: Minor tweaks and updates to URLs. + Redo the string transformation notes and link to... + * docs/22_locale/howto.html: ...here. + +2000-09-18 Benjamin Kosnik + + * src/locale-inst.cc: Add time_put_byname and + time_get_byname instantiations. + * bits/locale_facets.h: Correct default, private derivation to + public derivation in _byname declarations. + * src/locale.cc (locale::classic()): Simplify. + * src/localename.cc (locale::_Impl:: _Impl(const _Impl& __other, + const string& __name, category __cat, size_t __refs): Re-work for + named locales. + (_M_normalize_category_names): Remove. + + * testsuite/22_locale/global_templates.cc (test01): Tweaks. + * testsuite/22_locale/ctor_copy_dtor.cc (test01): More tests. + +2000-09-18 Yuri V. Baskakov + + * bits/std_bitset.h (operator>>): Change to char_type. + +2000-09-15 Benjamin Kosnik + + * src/locale.cc (locale::locale(const char* __name)): Consolidate + name setting. Add checks for NULL __name pointers. Remove calls to + _S_initialize() as initial locale initialization can either be + assumed, or needs to be made consistent throughout locale + constructors. + (locale::locale(const locale& __other, const char* __name, + category __cat): Add checks for NULL name. Add checks for + assignment to self. + * src/localename.cc (locale::_Impl:: _Impl(const _Impl& __other, + const string& __name, category __cat, size_t __refs)): Set correct + name, has_name values. + * testsuite/22_locale/ctor_copy_dtor.cc (test01): More tests. + * docs/22_locale/locale.html: New file, more unfinished docs... + +2000-09-14 Benjamin Kosnik + + * src/locale.cc (locale::name()): Implement. + (_Impl(size_t __numfacets, size_t __refs, bool __namep = false, + string __name = "*")): Change signature. + (locale::classic): Initialize the "C" locale as a named locale. + * bits/localefwd.h (locale): Change _M_num_references to + _M_references. Eliminate _M_cached_name_ok. Rename _M_cached_name + to _M_name. + * bits/localefwd.h: Tweaks. + * src/localename.cc: Tweaks. + * testsuite/22_locale/ctor_copy_dtor.cc (test01): Add tests. + (test01): Fix. + + * bits/basic_string.h: Consistency check, change _M_state -> + _M_references. + +2000-09-14 Brendan Kehoe + + * bits/string.tcc (_Rep::_S_max_size): Use typename for its size_type + return type. + + * src/Makefile.an (headers): Also install backward/fstream.h. + * src/Makefile.in: Regenerate. + + * bits/char_traits.h (char_traits<_CharT>::get_state, + char_traits::get_state, char_traits::get_state): Pass + argument in by reference, not by value. Uglify to _S_get_state. + (char_traits<*>::__eos): Uglify to _S_eos. + * bits/std_ostream.h (ends(basic_ostream<_CharT, _Traits>& __os)): + Change __eos to _S_eos. + +2000-09-13 Benjamin Kosnik + + * testsuite/22_locale/static_members.cc: New file. + * testsuite/22_locale/ctor_copy_dtor.cc: New file. + * src/locale.cc: Minor formatting tweaks. + +2000-09-12 Benjamin Kosnik + + * testsuite/22_locale/global_templates.cc (test01): Add negative + tests for use_facet. + + * bits/localefwd.h (locale::operator()): Minor tweaks. + * bits/locale_facets.tcc (locale::operator()): Same. + * testsuite/22_locale/operators.cc: New file. + + * testsuite/22_locale/facet.cc (output_iterator): Remove + gnu_input_iterator, gnu_output_iterator. + +2000-09-11 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_GNU_MAKE): Remove test != "0". + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * bits/c++config (__GLIBCPP__): Update, in the hopes of making a + snapshot release soon. + (_GNU_SOURCE): Define this in the header files, as ISO C99 support + is pretty much assumed. + + * testsuite/22_locale/global_templates.cc: New file. Add tests for + use_facet and has_facet. + + * bits/codecvt.h (codecvt<_InT, _ExT, __enc_traits>::do_out): + Modify/correct iconv signatures for glibc2.2. + +2000-09-10 Branko Cibej + + * acinclude.m4 (GLIBCPP_CHECK_GNU_MAKE): Replace "grep -q" with + "grep -c". + +2000-09-09 Benjamin Kosnik + + * bits/localefwd.h (locale::_Impl): Scope out types to public. + (locale): Make _Impl declaration public. + +2000-09-08 Felix Natter + + * docs/17_intro/porting-howto.html: New version. + +2000-09-07 Benjamin Kosnik + + * config/cpu/i386/bits/atomicity.h (__exchange_and_add): Change unused + to __unused__. + * config/cpu/ia64/bits/atomicity.h (__exchange_and_add): And here. + * config/cpu/i486/bits/atomicity.h (__exchange_and_add): And here. + +2000-09-07 Phil Edwards + + Add bits for --enable-maintainer-mode: + - turns on enable_debug + (doing "--enable-maint --disable-debug" will DTRT) + - turns on -Werror, now off by default + * acinclude.m4: Add bits. + * aclocal.m4: Regenerate. + * configure.in: Add defaults for GLIBCPP_ENABLE_DEBUG. + * configure: Regenerate. + +2000-09-07 Benjamin Kosnik + + * bits/std_cwctype.h: Remove yesterday's hacks. + +2000-09-07 Brad Garcia + + * bits/stl_tree.h: Make operators !=, == type safe for map, set. + * testsuite/23_containers/set_operators.cc: New file. Should not + compile. + * testsuite/23_containers/map_operators.cc: New file. Ditto. + +2000-09-06 Richard Henderson + Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_CPU): Add ia64 support. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config/cpu/ia64: New directory. + * config/cpu/ia64/bits: New directory. + * config/cpu/ia64/bits/atomicity.h: New file. + +2000-09-06 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Force glibc_satisfactory + to no, so that libstdc++-v3's libio will be built on glibc-2.2 + systems. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * */Makefile.in: Regenerate. + + * bits/std_cwctype.h: Put in temporary hack to work around -O2 + + glibc 2.1.x unsigned errors. Or disable -Werror by default... + + * testsuite/23_containers/vector_element_access.cc: New file. + * bits/stl_config.h (__STL_THROW_RANGE_ERRORS): Define. + +2000-09-06 Levente Farkas + + * bits/string.tcc: Fix up more parameter names. + +2000-09-06 Alexandre Oliva + + * configure: Rebuilt with new libtool.m4. + +2000-09-01 Benjamin Kosnik + + * src/locale-inst.cc: Remove pre-instantiation of unicode + codecvt types. Now unnecessary, as locale header now correct. + +2000-08-31 Benjamin Kosnik + + * bits/locale_facets.tcc (_S_build_float_format): Move ... + * src/locale.cc: Here. + * bits/locale_facets.tcc (num_get::_M_extract): Clean up generic + definition. Move specialization to ... + * src/locale.cc: Here. + * bits/locale_facets.tcc: Move _Format_cache specializations to ... + * src/locale.cc: Here. + * bits/locale_facets.tcc: Move use_facet specializations to ... + * src/locale.cc: Here. + + * bits/std_locale.h: Note that locale_facets.tcc should be + included here, for standards conformance. It may increase + compile times though. For the time being, enable. + * testsuite/22_locale/facet.cc: New file, some parts commented out + for the time being. + + * mkcheck.in: Append total time to test summary file. + + * bits/sbuf_iter.h : Formatting tweaks. + + Clean up static const data member definitions. + * src/locale.cc: Add definitions for all missing locale, + locale::_Imp, and locale::id static data members. + (ctype): Add table_size define. + (money_base): Add _S_default_pattern, uglify. + * bits/localefwd.h: Add definitions for static members of _Count_ones. + * bits/locale_facets.h: Tweaks. + * bits/locale_facets.tcc: Tweaks. + * bits/string.tcc: Add definition for npos. + * bits/ios_base.h: Tweaks. + * bits/ios_base.h (ios_base::Init::_M_ios_base_init): Change to + _S_ios_base_init. + * src/ios.cc: And here. Add _S_local_words definition. + Add definitions for __ios_flags const static data. + * src/codecvt.cc: Same for __enc_traits. + * src/locale-inst.cc: Remove money_base data member definition + here. + +2000-08-30 Benjamin Kosnik + + * testsuite/22_locale/ctype_wchar_t_members.cc (test01): New file. + + * docs/22_locale/codecvt.html: Re-number. + * docs/22_locale/howto.html: Add entry for ctype + documentation. Add entry for Nathan's introduction to locales + paper. + * docs/22_locale/ctype.html: New file. In progress... + + * docs/22_locale/codecvt.html: Formatting cleanups. + * src/locale.cc (ctype::do_is): Fix thinko. + +2000-08-30 Phil Edwards + + * docs/22_locale/codecvt.html: Behind-the-scenes ASCII->HTML + tweaks for certain browsers. + +2000-08-29 Benjamin Kosnik + + * bits/locale_facets.h (ctype): Remove __table_type. + Add include for bits/std_cwctype.h, for wctype_t. + * src/locale.cc (ctype): Implement. + * config/gnu-linux/bits/ctype_base.h (ctype_base): Remove mask + typedef, instead name enum. + * config/gnu-linux/bits/ctype_specializations.h: Tweak. + * config/gnu-linux/ctype.cc: Tweak. + * testsuite/22_locale/ctype.cc: Tweak. + + * bits/codecvt.h (__enc_traits): Uglify names. + +2000-08-28 Benjamin Kosnik + + * docs/22_locale/codecvt.html: Add more bits, format. + * bits/codecvt.h: Add copy ctor, rename types. + * testsuite/22_locale/codecvt_unicode_char.cc: Tweak. + + * libio/iofwide.c: Tweak. + +2000-08-28 Phil Edwards + + * docs/configopts.html: Mention new options. + * docs/install.html: Formatting changes for platform-specific + pre-reqs, previously only Cygwin. + * docs/mail.html: Fix new link. + * docs/thanks.html: A couple more people. + * docs/26_numerics/howto.html: Fix typo. + +2000-08-24 Benjamin Kosnik + + * docs/22_locale/howto.html: Add notes on codecvt implementation. + * docs/22_locale/codecvt.html: New file. In progress. + +2000-08-24 Benjamin Kosnik + + * acconfig.h: Revert. + * acinclude.m4: Revert. + * libio/_G_config.h: Revert. + * libio/libio.h: Revert. + +2000-08-23 Benjamin Kosnik + + * bits/codecvt.h: Tweaks. + * testsuite/22_locale/codecvt_unicode_wchar_t.cc (test01): Fix up + initial string literals for UCS4. + +2000-08-23 Phil Edwards + + * acconfig.h: _GLIBCPP_USING_THREADS and some workaround types added. + * acinclude.m4: New macro, GLIBCPP_ENABLE_WCHAR. Set the threads + definition as well, and some minor spelling/spacing fixes. If + building libio, check for certain typedefs. + * libio/_G_config.h: Wrap _IO_MTSAFE_IO in _GLIBCPP_USING_THREADS. + Conditionally define _LARGEFILE64_SOURCE, otherwise the 64-bit types + will never be there. + * libio/libio.h: In the null case, _IO_lock_t can't just be void. + * src/string-inst.cc: Use _GLIBCPP_USE_WCHAR_T. + + * configure.in: Update the cache a bit more often. + + * mkcheck.in: For check-install, also need to -I the testsuite dir. + +2000-08-22 Benjamin Kosnik + + * src/locale-inst.cc: Add codecvt instantiations for has_facet and use_facet. + * testsuite/22_locale/codecvt_unicode_wchar_t.cc: New file, for + testing two-byte unicode encodings converted to four-byte UCS4 + encodings. + + * bits/codecvt.h (codecvt<__enc_traits>): Fix do_unshift. + * testsuite/22_locale/codecvt_unicode_char.cc (test01): Add + correct state/encoding information. + + * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Add wcsrtombs, + mbsrtowcs checks as codecvt needs them + now. + Add checks for langinfo.h, nl_langinfo function call. + * libio/iofwide.c (_IO_fwide): Simplify, as nl_langinfo is assumed. + +2000-08-22 Richard B. Kreckel + + * config/cpu/alpha/bits/atomicity.h: Change __attribute__ + ((unused)) to __attribute__ ((__unused__)). + * config/cpu/arm/bits/atomicity.h: Same. + * config/cpu/generic/bits/atomicity.h: Same. + * config/cpu/i386/bits/atomicity.h: Same. + * config/cpu/i486/bits/atomicity.h: Same. + * config/cpu/powerpc/bits/atomicity.h: Same. + * config/cpu/sparc/sparc32/bits/atomicity.h: Same. + * config/cpu/sparc/sparc64/bits/atomicity.h: Same. + +2000-08-22 Levente Farkas + + * bits/basic_string.h: Fix up parameter names. + +2000-08-22 Brent Verner + + * src/Makefile.am (INCLUDES): Put $(CSHADOW_INCLUDES) before + $(top_srcdir) + * src/Makefile.in: Regenerate. + +2000-08-21 Benjamin Kosnik + + * bits/codecvt.h: Implement codecvt. Fix + up __enc_traits template so as to be marginally useful. + * src/codecvt.cc: And here. + * bits/char_traits: Tweak. + * bits/locale_facets.h: Tweak. + * bits/locale_facets.tcc: Tweak. + * bits/localefwd.h: Tweak. + * src/locale-inst.cc: Add use_facet/has_facet instantiations here. + * testsuite/22_locale/codecvt_wchar_t_cc.cc: New file. + * testsuite/22_locale/codecvt_char_char.cc: New file. + * testsuite/22_locale/codecvt_unicode_char.cc: New file. + +2000-08-21 Gabriel Dos Reis + + * bits/std_cmath.h (std::abs): Overload for int and long. + +2000-08-20 Benjamin Kosnik + + * src/string-inst.cc: Tweak instantiations for new-gxx-abi. + +2000-08-19 Gabriel Dos Reis + + * bits/valarray_array.h (__valarray_min, __valarray_max): Fix + thinko. Diagnostic messages really need to be improved for + template argument deduction. + +2000-08-18 Benjamin Kosnik + + * bits/valarray_meta.h: Fix typos... + +2000-08-18 Gabriel Dos Reis + + * bits/valarray_meta.h (_Expr<>::shift, _Expr::cshift, + _Expr<>::apply): Implement. + +2000-08-18 Gabriel Dos Reis + + * bits/valarray_meta.h (_Expr<>::min, _Expr<>::max): Implement. + + * bits/valarray_array.h (__valarray_min, __valarray_max): New + function. + +2000-08-17 Mark Mitchell + + * bits/localefwd.h (std::locale): Use explicit `class' specified + when declaring friends. + * bits/std_fstream.h (std::basic_filebuf): Likewise. + +2000-08-16 Alexandre Oliva + + * src/Makefile.am (libstdc++.INC): Renamed from INCLUDES. + * src/Makefile.in: Regenerate. + +2000-08-15 Benjamin Kosnik + + * bits/codecvt.h: New file. + * src/codecvt.cc: New file. + * bits/std_locale.h: Add include here. + * src/Makefile.am (headers): Add codecvt.h + (sources): Add codecvt.cc. + * src/Makefile.in: Regenerate. + * bits/locale_facets.h (codecvt): Re-implement. Rename _Codecvt to + __codecvt_abstract_base in an attempt to point some light this way... + Move __enc_traits and codecvt bits to codecvt.h. + * src/locale-inst.cc: Remove codecvt + explicit instantiation. Separate out codecvt instantiations, simplify. + * src/locale.cc: Move codecvt bits to codecvt.cc + +2000-08-15 Alexandre Oliva + + * src/Makefile.am (INCLUDES): New target file, with all -I flags. + * src/Makefile.in: Regenerate. + +2000-08-14 Benjamin Kosnik + + C/C++ io merge/sync. + * libio/fileops.c + * libio/genops.c + * libio/iofclose.c + * libio/iofopen.c + * libio/iofwide.c + * libio/libio.h + * libio/libioP.h + * libio/stdio.c + * libio/wfileops.c + * libio/wgenops.c + * config/c_io_libio.cc (__basic_file): Add hacky casts to + ((struct _IO_FILE_plus *) in ctors. + (__basic_file): Adjust _wide_data->_codecvt to just _codecvt. + * libio/Makefile.am: Fix copyright. Remove cleanup.c. + * libio/cleanup.c: Remove. + * libio/filedoalloc.c (_IO_file_doallocate): Don't call + _IO_cleanup_registration_needed, even if not libc. + + * testsuite/27_io/stringstream.cc (test02): Fix. + +2000-08-14 Brent Verner + + * testsuite/debug_assert.h: new file + * testsuite/*/*.cc: s/test\s*&=([^;]+);/VERIFY($1);/g + changed conditional #include to + unconditional #include + * mkcheck.in: added $SRC_DIR/testsuite to include search path + for testsuite compile command. + +2000-08-14 Levente Farkas + + * bits/std_fstream.h: Remove duplicate typdefs for ofstream and + wofstream, filebuf, wfilebuf, fstream, wfstream. + * bits/std_streambuf.h: Same for streambuf, wstreambuf. + * bits/std_sstream.h: Same for stringstream and wstringstream. + Same for stringbuf, wstringbuf, istringstream, wistringstream, + ostringstream, wostringstream. + + * testsuite/26_numerics/valarray.cc: Add test. + +2000-08-14 Zack Weinberg + + * configure: Regenerate after change to ../libtool.m4. + +2000-08-10 Benjamin Kosnik + + * bits/locale_facets.tcc: Formatting tweaks. + * bits/locale_facets.h (__enc_traits): Start integrating this + into codecvt, ctype. Formatting tweaks. + +2000-08-09 Benjamin Kosnik + + Preliminary wchar_t implementation, with trivial encodings. + * docs/configopts.html: Add bits about canonical configure option + checking. + + * testsuite/27_io/iostream_objects.cc: Replace this file (which + has newly-declared-illegal mixing of wide/narrow stdstreams) with... + * testsuite/27_io/narrow_stream_objects.cc: New file. + * testsuite/27_io/wide_stream_objects.cc: New file. + + * bits/fstream.tcc (underflow): Temporarily hack a solution + together that writes from the external file to the internal + buffers. This removes codecvt from the loop, and is incorrect. + (_M_really_overflow): Same here. + + * testsuite/21_strings/inserters_extractors.cc (test05): Tweaks. + +2000-08-08 Benjamin Kosnik + Ulrich Drepper + + * config/c_io_libio.h: Tweak. + * config/c_io_libio_codecvt.c: New file. + * libio/Makefile.am: Add c_codecvt.c. + * libio/Makefile.in: Regenerate. + * libio/genops.c (_IO_unbuffer_write): Don't call _IO_SETBUF if the + stream is not orientated. + + * acinclude.m4: Add config/c_io_libio_codecvt.c dummy file, until + encoding gets fleshed out. + + * bits/basic_file.h: Add specialization declarations. + * config/c_io_libio.cc: Add specializations for pbackfail, uflow. + + * config/c_io_libio.h: Add __c_wfile_type. + * bits/basic_file.h: Add _M_wfile. + + * config/c_io_libio.cc (__basic_file): Initialize the + streams without setting the orientation of the underlying FILE to + either wide or narrow. + (__basic_file)): Enable tricky wchar_t io bits. + +2000-08-07 Felix Natter + + * docs/17_intro/porting-howto.html: New version. + +2000-08-03 Mark Mitchell + + * bits/locale_facets.h (ctype::ctype): Don't name unused + parameters. + +2000-08-01 Benjamin Kosnik + + * docs/install.html: Edit bits about requiring a special version + of the autotools. + +2000-07-31 Benjamin Kosnik + + * libio/fileops.cc: Update to current glibc sources. + * libio/genops.c: Same. + * libio/iofwide.c: Same. + * libio/libio.h: Same. + * libio/libioP.h: Same. + * libio/wfiledoalloc.c: Same. + * libio/wgenops.c: Same. + +2000-07-28 Alexandre Oliva + + * acinclude.m4: Include ../libtool.m4. + * aclocal.m4, configure: Rebuilt. + +2000-07-26 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Test for GNU ld + before trying to use any of its options. + (CHECK_MATH_DECL*,CHECK_BUILTIN_MATH_DECL*): Cache tests. + * aclocal.m4: Regenerate. + * configure.in: Having found GNU make, name it. + * configure: Regenerate. + * docs/install.html: Mention possible problems with caching. + * src/Makefile.am (CXXLINK): Use new OPT_LDFLAGS. + * src/Makefile.in: Regenerate. + * libio/Makefile.in: Regenerate. + * math/Makefile.in: Regenerate. + * Makefile.in: Regenerate. + +2000-07-26 Benjamin Kosnik + + * src/misc-inst.cc (std): Remove instantiations. + + * acinclude.m4: Add forward-looking bits for autoconf. + * aclocal.m4: Regenerate. + + * bits/ostream.tcc (ostream::operator<<): Fix const char* case. + +2000-07-25 Benjamin Kosnik + + * configure.in: Change AM_PROG_LIBTOOL to AC_PROG_LIBTOOL. Change + it back for current versions of maintainer-tools... + * acinclude.m4: Some cleanups... + * aclocal: Regenerated. + * configure: Regenerated. + + * src/Makefile.am (CXXLINK): Add -Wl,-01 to the link line for + optimizing/adapting the hash table using GNU ld. + * src/Makefile.in: Regenerate. + +2000-07-24 H.J. Lu + + * src/Makefile.am (LIBIO_INCLUDES): Set to -I$(top_srcdir)/libio + even if GLIBCPP_NEED_LIBIO is false. The installed glibc header + files don't include private libio header files needed by + libstdc++ v3. + * src/Makefile.in: Rebuild. + +2000-07-24 Benjamin Kosnik + + * bits/std_fstream.h: Parameterize __basic_file. + * config/c_io_libio.cc: Add wchar_t methods for parameterization. + * bits/basic_file.h: Same here. + + * bits/istream.tcc (getline): Tweaks. + + * bits/fstream.tcc: Shorten __retval to __ret. + * bits/ostream.tcc: Same. + * bits/sbuf_iter.h: Same. + * bits/sstream.tcc: Same. + * bits/streambuf.tcc: Same. + * bits/std_fstream.h: Same. + * src/string-inst.cc: Same. + * src/ios.cc: Same. + * config/c_io_libio.cc: Same. + * bits/string.tcc: Same. + * bits/std_streambuf.h: Same. + +2000-07-23 Brent Verner + + * bits/istream.tcc: istream::getline(char_type*, streamsize, + char_type) make compliant + * testsuite/27_io/istream_unformatted.cc: test for compliant behavior + +2000-07-23 Benjamin Kosnik + + * acinclude.m4 (enable_cshadow_headers): Fix problems with blddir + and srcdir used to define CSHADOW_INCLUDES.. + + * configure.in: For consistency, change .sanity_warned to + stamp-sanity-warned. + + * acinclude.m4: Tweak formatting. + * Makefile.am (check): Call mkcheck with full pathname for build + directory... + (check-install): And here. + * Makefile.in: Regenerate. + +2000-07-22 Gabriel Dos Reis + + Line up with libstdc++-v2 version of valarray. + * bits/valarray_array.h (__valarray_product): Make inline. + * src/valarray-inst.cc (__valarray_product): Remove explicit + instantiation. + +2000-07-21 Benjamin Kosnik + + * src/stl-inst.cc: Change __sink_unused_warning to unsigned int + for alpha. + + * testsuite/26_numerics/complex_inserters_extractors.cc (testall): + Change return type to void. + * testsuite/25_algorithms/lower_bound.cc: Add return values. + * testsuite/17_intro/header_ciso646.cc: Modify. + * bits/locale_facets.h: Add return values for the generic cases. + +2000-07-21 H.J. Lu (hjl@gnu.org) + + * acinclude.m4: Include for glibc testing. + * aclocal.m4: Likewise. + + * configure: Rebuild. + +2000-07-20 H.J. Lu (hjl@gnu.org) + + * acinclude.m4: Change "#pragma system_header" to + "#pragma GCC system_header". + * aclocal.m4: Likewise. + * bits/std_cmath.h: Likewise. + * bits/std_cassert.h: Likewise. + * bits/std_cctype.h: Likewise. + * bits/std_cerrno.h: Likewise. + * bits/std_cfloat.h: Likewise. + * bits/std_climits.h: Likewise. + * bits/std_clocale.h: Likewise. + * bits/std_cwchar.h: Likewise. + * bits/std_csetjmp.h: Likewise. + * bits/std_csignal.h: Likewise. + * bits/std_cstdarg.h: Likewise. + * bits/std_cstddef.h: Likewise. + * bits/std_cstdio.h: Likewise. + * bits/std_cstdlib.h: Likewise. + * bits/std_cstring.h: Likewise. + * bits/std_ctime.h: Likewise. + * bits/std_cwctype.h: Likewise. + * bits/std_exception.h: Likewise. + * bits/std_new.h: Likewise. + * bits/std_typeinfo.h: Likewise. + * shadow/bits/std_cassert.h: Likewise. + * shadow/bits/std_cctype.h: Likewise. + * shadow/bits/std_cerrno.h: Likewise. + * shadow/bits/std_cfloat.h: Likewise. + * shadow/bits/std_climits.h: Likewise. + * shadow/bits/std_clocale.h: Likewise. + * shadow/bits/std_cmath.h: Likewise. + * shadow/bits/std_csetjmp.h: Likewise. + * shadow/bits/std_csignal.h: Likewise. + * shadow/bits/std_cstdarg.h: Likewise. + * shadow/bits/std_cstddef.h: Likewise. + * shadow/bits/std_cstdio.h: Likewise. + * shadow/bits/std_cstdlib.h: Likewise. + * shadow/bits/std_cstring.h: Likewise. + * shadow/bits/std_ctime.h: Likewise. + * shadow/bits/std_cwchar.h: Likewise. + * shadow/bits/std_cwctype.h: Likewise. + * shadow/bits/wrap_libio.h: Likewise. + * shadow/bits/wrap_unistd.h: Likewise. + * shadow/sys/cdefs.h: Likewise. + + * configure: Rebuild. + +2000-07-20 Jakub Jelinek + + * config/cpu/sparc/sparc64/bits/atomicity.h (__exchange_and_add): + Use extended word instructions to match 64bit _Atomic_word. + (__atomic_add): Likewise. + * math/clog10l.c (clog10l): Use M_PIl if defined. + * math/c_logl.c (c_logl): Likewise. + * math/signbitl.c (__signbitl): Adapt for IEEE quad long doubles. + * math/mathconf.h (ieee_quad_double_shape_type): New type. + (GET_LDOUBLE_MSW64): New define. + +2000-07-20 Benjamin Kosnik + + * bits/std_streambuf.h: Add bits for pback buffers here, so that + in_avail, etc can use them. + * bits/std_fstream.h: Ditto. + * bits/fstream.tcc: Ditto. + * testsuite/27_io/filebuf.cc: Tweaks. + * testsuite/27_io/filebuf-3.tst: Correct for pbackfail bits. + +2000-07-19 Benjamin Kosnik + + * src/localename.cc: Same. + * src/locale.cc: Same. + * bits/localefwd.h: _M_init_facet to _M_facet_init. + + * bits/locale_facets.h: _M_init_boolnames to _M_boolnames_init. + + * bits/std_sstream.h: Change _M_init_stringbuf to _M_stringbuf_init. + + * bits/fstream.tcc: Change _M_init_filebuf to _M_filebuf_init. + * bits/std_fstream.h: Same. + + * bits/basic_string.h: Tweaks. + +2000-07-19 Phil Edwards + + * docs/18_support/howto.html: Update. + +2000-07-19 Benjamin Kosnik + + Internal consistency checks..... + * bits/ios_base.h: Change _M_locale_ios to _M_ios_locale. + * src/ios.cc: Same. + + * bits/basic_ios.h: Change _M_fctype_ios to _M_ios_fctype. + * bits/basic_ios.tcc: Same. + + * bits/std_streambuf.h: Change _M_locale_buf to _M_buf_locale. + Change _M_fctype_buf to _M_buf_fctype. + * bits/fstream.tcc: Same. + + * bits/std_streambuf.h: Change _M_buf_bump to _M_out_cur_move. + Change _M_locale_set to _M_buf_locale_init. + * bits/streambuf.tcc: Same. + * bits/sstream.tcc: Same. + * bits/fstream.tcc: Same. + + * bits/std_streambuf.h: Make typedefs consistent. + (_M_buf_bump): Be more careful with input sequence. + + * bits/std_sstream.h: Same. + * bits/std_fstream.h: Same. + +2000-07-18 Benjamin Kosnik + + * acinclude.m4: Tweaks. + * config/c_io_libio.cc: Tweaks. + * bits/sstream.tcc (stringbuf::pbackfail): Simplify. + * libio/_G_config.h: Don't define _G_HAVE_ST_BLKSIZE. + * libio/[iofwide.c, wfiledoalloc.c, wfiteopos.c, wgenops.c]: New files. + * libio/iofclose.c iofopen.c, stdio.c: New files. + * libio/Makefile.am: Add files, add flags, etc. + * src/Makefile.am (sources): Add filebuf.cc. + * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): + (GLIBCPP_ENABLE_CSTDIO): Versioning testing, etc etc. + +2000-07-17 Phil Edwards + + * acinclude.m4: Import CHECK_GNU_MAKE from autoconf macro archive. + * configure.in: Use it. Also print reminders one time. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-07-15 Gabriel Dos Reis + + * bits/valarray_array.h (__valarray_get_storage): New function. + (_Array<>::Array): Use it. + * bits/std_valarray.h (valarray<>::valarray): Likewise. + (valarray<>::resize): Likewise. Tweak. + * src/valarray-inst.cc (__valarray_product): Tweak. + +2000-07-11 Phil Edwards + + * docs: Update sourceware->sources in every HTML file. Minor updates. + +2000-07-07 Benjamin Kosnik + + Clean up configure/build longstanding issues. + * src/Makefile.am (AC_CXXFLAGS): Don't set @SECTION_LDFLAGS@ here. + (CXXLINK): Add here, instead. + + * Makefile.am (check-install): Make sure mkcheck has execute privs. + (check): Same here. + * configure.in (AC_OUTPUT_COMMANDS): Remove hacks here. + + * configure.in (AC_OUTPUT_COMMANDS): Link c_io_libio.h and + c_io_libio.cc instead of copying. + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Do link here. + + * configure.in (AC_OUTPUT_COMMANDS): Link $THREADS.h and + c++threads.h instead of copying. + * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Do link here. + Tweaks. + + * config/c_io_libio.cc (__basic_file::_M_open_mode): Consolidate. + * bits/basic_file.h: Declare. + + * mkcheck.in (TESTS_FILE): Use -v instead of --version. + +2000-07-07 brent verner + + * testsuite/27_io/istream_unformatted.cc (test05): New test. + +2000-07-07 Benjamin Kosnik + + * bits/istream.tcc (istream::getline): Minor tweaks. + +2000-07-07 Phil Edwards + + * docs/download.html: Mention gcc_update. + * docs/configopts.html: Minor updates. + * docs/gccrebuild.html: Ditto. + * docs/18_support/howto.html: More tips, explanations, and reminders. + * docs/19_diagnostics/howto.html: Ditto. + * docs/21_strings/howto.html: Ditto. + * docs/24_iterators/howto.html: Ditto. + * docs/25_algorithms/howto.html: Ditto. + * docs/26_numerics/howto.html: Ditto. + +2000-07-05 brent verner + + * testsuite/27_io/ifstream_members.cc (test01): Add tests. + * testsuite/27_io/ofstream_members.cc (test01): Add tests. + * config/c_io_libio.cc (__basic_file::open): Unset + ~_IO_DELETE_DONT_CLOSE. + +2000-07-05 Zack Weinberg + + * bits/gslice_array.h, bits/indirect_array.h, bits/mask_array.h, + bits/slice_array.h, bits/std_valarray.h, bits/valarray_meta.h: + Do not paste anything after 'operator' keyword. + +2000-07-03 Benjamin Kosnik + + * bits/std_memory.h: Revert. + +2000-07-03 Brendan Kehoe + + * bits/std_complex.h: Fix parens. Format. + +2000-07-03 scott snyder + + * bits/locale_facets.tcc (_M_extract): Only figure out the base + from the input if base == 0. + * testsuite/27_io/istream_extractor_arith.cc: Test reading a + number with a leading `0' in hex mode. + + * shadow/bits/std_cmath.h: Fix typo in _GLIBCPP_HAVE_CEILL test. + + * mkinclosure: Change `==' to `=' in test. + +2000-07-03 Chip Salzenberg + + * src/Makefile.am (libio_headers): _G_config.h is found in srcdir, + not builddir. + * src/Makefile.in: Regenerate. + +2000-07-01 Benjamin Kosnik + Ulrich Drepper + + Sync libio to glibc-2.2 current CVS. + * libio/_G_config.h: New file. + * libio/wfileops.c: New file. + * libio/wfiledoalloc.c: New file. + * libio/wgenops.c: New file. + * libio/iofwide.c: New file. + * libio/Makefile.am: Tweaks. + * libio/Makefile.in: Regenerate. + * libio/gen-params: Remove. Generic replacement for this yet undone. + * libio/[filedoalloc.c, fileops.c, genops.c, iolibio.h, libio.h, + libioP.h, stdfiles.c]: Update. + * config/c_io_libio.cc: Tweaks. + * acinclude.m4: Complete hacks to test wide io. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * src/Makefile.am: Update. + * src/Makefile.in: Regenerate. + + * math/cargl.c: Remove underscores. + + * bits/locale_facets.h: Tweaks. Start adding iconv details + and notes. + * bits/locale_facets.tcc: Tweaks. + * bits/std_cwchar.h: Tweaks. + +2000-06-29 scott snyder + + * bits/concept_checks.h + (__less_then_comparable_requirement_violation): Only check for <. + * testsuite/25_algorithms/lower_bound.cc: New file. + +2000-06-29 Benjamin Kosnik + + * testsuite/27_io/ostream_manip.cc (test02): Add tests. + * bits/ostream.tcc: Tweak. + * bits/std_fstream.h (basic_filebuf::setbuf): Reset + _M_buf_size_opt too. + * bits/std_streambuf.h (basic_streambuf::~basic_streambuf): Zero + out _M_buf_size_opt. + * bits/std_sstream.h (basic_stringbuf::_M_init_stringbuf): Set + _M_buf_size_opt out here. + * bits/char_traits.h (char_traits::eos): Non standard member + function, uglify to __eos. Return char_type(). + * bits/std_ostream.h: Change. + + * testsuite/27_io/ostream_seeks.cc: New file. + * testsuite/27_io/ostream_seeks-1.tst: New file. + * testsuite/27_io/istream_unformatted.cc (main): Move test04 and + test05 to... + * testsuite/27_io/istream_seeks.cc: New file. + +2000-06-29 Branko Cibej + + * bits/std_memory.h (auto_ptr_ref): Reworked and defined only if + _GLIBCPP_RESOLVE_LIB_DEFECTS. + (auto_ptr): _M_ptr changed to void*. + (suto_ptr::get): Cast _M_ptr to element type. + (auto_ptr::auto_ptr(auto_ptr)): Test implicit convetsion. + (auto_ptr::~auto_ptr): Use this->get() instead of _M_ptr. + (auto_ptr::operator*): Likewise. + (auto_ptr::operator->): Likewise. + (auto_ptr::release): Likewise. + (auto_ptr::reset): Likewise. + (auto_ptr::auto_ptr(auto_ptr_ref)): Initialize from __ref._M_release. + (auto_ptr::operator auto_ptr_rev<_Tp1>): Updated. + Define nested auto_ptr_ref unless _GLIBCPP_RESOLVE_LIB_DEFECTS. + Define operator=(auto_ptr_ref) if _GLIBCPP_RESOLVE_LIB_DEFECTS. + +2000-06-28 Benjamin Kosnik + + * testsuite/27_io/filebuf.cc: Tweak. + * testsuite/27_io/filebuf_members.cc (test_01): Fix. + * config/c_io_libio.cc (__basic_file::~__basic_file): Match libio + filebuf dtor. + (__basic_file::basic_file): Clean, add calls similar to + _IO_file_attach. + (__basic_file::open): Clean. + (__basic_file::sys_open): Clean. + + * bits/std_fstream.h: Revert. + * bits/fstream.tcc (filebuf::close()): Revert. + (filebuf::basic_filebuf()): Revert. + +2000-06-27 Benjamin Kosnik + + Update to SGI STL 3.3 + * ext/hash_map, ext/hash_set, ext/slist, ext/stl_bvector.h, + ext/stl_rope.h, ext/ropeimpl.h: Update. + * bits/std_bitset.h, bits/std_map, bits/std_memory.h, + bits/stl_algo.h, bits/stl_algobase.h, bits/stl_alloc.h, + bits/stl_config.h, bits/stl_construct.h, bits/stl_deque.h, + bits/stl_function.h, bits/stl_heap.h, bits/stl_iterator.h, + bits/stl_iterator_base.h, bits/stl_list.h, bits/stl_map.h, + bits/stl_multimap.h, bits/stl_multiset.h, bits/stl_numeric.h, + bits/stl_queue.h, bits/stl_set.h, bits/stl_stack.h, + bits/stl_string_fwd.h, bits/stl_threads.h, bits/stl_three.h, + bits/stl_uninitialized.h, bits/stl_vectory.h: Update. + + * src/Makefile.am (headers): Add new files. + * src/Makefile.in: Regenerate. + * src/stl-inst.cc (std): Add instantiation for __sink_unused_warning. + * bits/concept_checks.h: New file. + * bits/container_concepts.h: New file. + * bits/sequence_concepts.h: New file. + +2000-06-27 H.J. Lu + Loren J. Rittle + + * mkcheck.in: Add support to print standard flags needed to + test g++ in build tree. Enhance command line error checking. + +2000-06-27 Phil Edwards + + * docs/install.html: Fix minor typo as reported. + +2000-06-26 Brent Verner + + * bits/string.tcc (string::rfind): Fix. + * testsuite/21_strings/rfind.cc: New file. + +2000-06-26 Anthony Williams + + * testsuite/21_strings/ctor_copy_dtor.cc: Fixed logic error. + +2000-06-26 Branko Cibej + + * testsuite/27_io/filebuf_members.cc (test_01): Fixed typos. + + * mkcheck.in: Make the *.txt and *.tst files writable after + copying them to $TEST_DIR. + + * testsuite/27_io/ostream_inserter_arith.cc: Renamed + __TEST_NUMPUT_VERBOSE to TEST_NUMPUT_VERBOSE. Define + TEST_NUMPUT_VERBOSE only if DEBUG_ASSERT. + +2000-06-23 Benjamin Kosnik + + * bits/fstream.tcc (basic_filebuf::basic_filebuf(fd)): Use it. + (basic_filebuf::close): Use it. + * bits/std_fstream.h (basic_filebuf): Remove default arguments for + filebuf ctor. + (basic_filebuf): Add _M_fileno_based data member. + As reported by brent verner + * testsuite/27_io/filebuf_members.cc: New file. + * testsuite/27_io/filebuf_members-1.tst: New file. + + * bits/std_fstream.h: Formatting tweaks. + * testsuite/27_io/ofstream_members.cc: New file. + * testsuite/27_io/ofstream_members-1.tst: New file. + * testsuite/27_io/ifstream_members.cc: New file. + * testsuite/27_io/ifstream_members-1.tst: New file. + +2000-06-23 Benjamin Kosnik + Ulrich Drepper + + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Add -D_GNU_SOURCE, so + that all the freaky stuff like sincos will be around... + +2000-06-22 Branko Cibej + + * Makefile.am (AM_MAKEFLAGS): Added WERROR to list of flags. + +2000-06-22 Steven King + + * acinclude.m4: Check for sinl, _sinl using 1 parameter. + +2000-06-22 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT): Redo. Use the + same approach as GLIBCPP_CHECK_MATH_SUPPORT, only don't try to + link against libm and don't use -fno-builtins... + * math/mathconf.h: Change up builtin macros to new schema. + * bits/std_cmath.h: And here. Wheee! + * shadow/bits/std_cmath.h: And here. + * acconfig.h: Change up builtin macros here. + * math/cosf.c: Remove. + * math/fabsf.c: Likewise. + * math/sinf.c: Likewise. + * math/sqrtf.c: Likewise. + * math/Makefile.am (EXTRA_DIST): Remove those four files. + * math/Makefile.in: Regenerate. + +2000-06-22 Anthony Williams + + * testsuite/21_strings/find.cc: Patch. + +2000-06-22 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHEC_LINKER_FEATURES): Use gcc + -x c++ as + an easy way to get at g++ without having to link in libstdc++. + +2000-06-21 Benjamin Kosnik + + Fix alpha, powerpc build failures. + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Substantially + re-write. Need to check for both proper declaration when using a + c++ compiler, and "C" linkage when linking. Do both, and if both + exist, then define the HAVE_* bits in config.h. + (GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE): New, uber-macro. Does all. + (GLIBCPP_CHECK_LINKER_FEATURES): Actually link and run this + program, doh. + +2000-06-20 Anthony Williams + + * bits/string.tcc: Fix find. + * testsuite/21_strings/find.cc: Patch. + +2000-06-20 Benjamin Kosnik + + * docs/install.html: Update where to get automake, where to get + binutils. + * acinclude.m4: Need -fno-builtins too, so gcc doesn't recognize + builtins. + +2000-06-19 Benjamin Kosnik + + * acinclude.m4 ((GLIBCPP_CHECK_MATH_SUPPORT): Revert last change. + Add -Werror-implicit-function-declaration instead. + + Regenerate with fixed maintainer-tools. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * libio/Makefile.in: Regenerate. + * src/Makefile.in: Regenerate. + +2000-06-19 Russell Davidson + + * testsuite/27_io/istream_extractor_arith.cc: Patch. + * bits/locale_factets.tcc: Tweak. + +2000-06-19 Raja R Harinath + + * src/Makefile.am: change @WERROR@ to $(WERROR) so that this can + be overridden on the command line for individual files. + +2000-06-19 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Can't use + AC_LANG_CPLUSPLUS as this tries to link in libstdc++, which we are + building. Use -x c++ instead, which does not attempt to link + libstdc++. + + * acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Actually check for + not coring when we hit a try/throw block, which was the problem + with the linker support... + + * docs/17_intro/contribute.html: Add bits about getting to the LWG + issues pages. + * docs/documentation.html: Rename link to make more accurate and scary. + * docs/gccrebuild.html: Edit for clarity as these are no longer + separate projects. + * docs/install.html: Add bits about binutils for + -ffunction-sections, -fdata-sections, -Wl,--gc-sections + + * configure.in: Add call for GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT. + * math/Makefile.am (EXTRA_DIST): Change USE_LONG_DOUBLE to + USE_COMPLEX_LONG_DOUBLE. + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Break into + GLIBCPP_CHECK_MATH_SUPPORT and GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT. + Works around irregularies in powerpc "C" compiler, but a good idea + anyway. + + * acinclude.m4 (GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT): + New. Merge both old compiler bug checks for complex into this. + +2000-06-19 Anthony Williams + + * testsuite/21_strings/find.cc: Empty strings can be found at all + positions. Modified. + +2000-06-19 Branko Cibej + + * testsuite/20_utilities: New directory. + * testsuite/20_utilities/auto_ptr.cc: New file. + +2000-06-14 Benjamin Kosnik + + * src/Makefile.am (string_sources): Simplify, assuming that with + -ffunction-sections, -fdata-sections, -Wl,--gc-sections, all this + hacking is not necessary. + (wstring_sources): Same. + (OPTIMIZE_CXXFLAGS): Enable -fdata-sections -ffunction-sections + -Wl,--gc-sections. + * src/string-inst.cc: Remove macro blocks. + * mkcheck.in (CXX_FLAG): Add bits here. + + * src/string-inst.cc: Remove iostream-related string instantiations. + * src/misc-inst.cc: Add here. + + * acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): Change FMTFLAGS + to WFMT_FLAGS. + * aclocal.m4: Regenerate. + * configure.in: Change up. + * configure: Regenerate. + +2000-06-13 Steven King + + * acinclude.m4: Fixup some of the builtin math tests and add tests for + __builtin_fmod* and test libm for fmodf, fmodl or _fmodf, _fmodl. + * acconfig.h: Add entries for fmod*. + +2000-06-13 Branko Cibej + + * bits/std_cmath.h: Fix typos in tests (*_FMODFF -> *_FMODF). + Test *_MODFF not *_MODF for modf(float, float*). + (modf(float, float*)): Remove reference to _C_legacy. + +2000-06-13 Benjamin Kosnik + + * acinclude.m4 (enable_cshadow_headers): Change CSHADOWFLAGS to + _GNU_SOURCE instead of _ISOC9X_SOURCE, as _GNU_SOURCE is the + superset, and already defined at top level. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * docs/17_intro/contribute.html: Plead with people to use -cp. + +2000-06-13 Anthony Williams + + * testsuite/23_containers/bitset_ctor.cc: Qualify reverse wth std::. + + * testsuite/27_io/filebuf.cc: Changed calls to + fpos<>._M_position() to implicit calls to operator streamoff(). + * testsuite/27_io/iostream_objects.cc: Removed #include , + as not needed. Revert, as part of standard. + * testsuite/27_io/ostream_inserter_arith.cc: Replaced explicit + call to numpunct<>._M_init() with overrides of the appropriate + virtual functions. + + * testsuite/27_io/stringstream.cc: Removed unnecessary char * + pointers from test01, so no need to call base(), which isn't + guaranteed to be implemented as iterators may themselves be pointers + * testsuite/27_io/stringbuf.cc: Removed unnecessary calls to + _M_position() - use implicit conversion to streamoff instead + +2000-06-13 Thomas Holenstein + + * bits/stl_iterator.h: Added inline to operators == to >=. + +2000-06-13 Brent Verner + + * bits/streambuf.tcc: repaired _S_copy_streambufs() + * testsuite/27_io/ostream_inserter_other.cc (test03): Added testcase. + +2000-06-12 Benjamin Kosnik + + * bits/locale_facets.h (ctype): Remove unnecessary data + members. + * src/locale.cc: Add cwchar include here. Remove incorrect + definitions, and stub them out. + * config/generic/ctype.cc (ctype): Remove ctype bits. + * config/solaris/solaris2.7/ctype.cc (ctype): Same. + * config/solaris/solaris2.5/ctype.cc (ctype): Same. + * config/newlib/ctype.cc: Same. + * config/gnu-linux/ctype.cc: Same. + * config/bsd/ctype.cc: Same. + * config/aix/ctype.cc: Same. + +2000-06-12 Branko Cibej + + * config/solaris/solaris2.6/ctype.cc (do_toupper, do_tolower): Use + towupper and towlower to convert wide characters. + +2000-06-12 Benjamin Kosnik + + * mkcheck.in: Clean up confusion regarding NAME, PRE_NAME. + +2000-06-08 Branko Cibej + + * acinclude.m4 (GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT): Check for + sinf, cosf, fabsf, and sqrtf; add to LIBMATHOBJS if missing. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * math/cosf.c: New file. + * math/fabsf.c: Likewise. + * math/sinf.c: Likewise. + * math/sqrtf.c: Likewise. + * math/Makefile.am (EXTRA_DIST): Add those four files. + * math/Makefile.in: Regenerate. + +2000-06-08 Phil Edwards + + * testsuite/26_numerics/complex_inserters_extractors.cc: Need cmath. + +2000-06-06 Steven King + + * acconfig.h: Added defines for HAVE_BUILTIN math functs for float, + double and long double. Added defines for HAVE libm math functs for + float and long double. + * aclocal.m4: Added configure checks for builtin math funcs and libm + support for float and long double versions of the math functions. + * config.h.in: Added undefs for math functs. + * configure: Regenerate. + * math/mathconf: Changed the _GLIBCPP_HAS_BUILTIN_* to + _GLIBCPP_HAVE_BUILTIN_*. + * bits/std_cmath.h: Added long double support. Use builtins for + float, double and long if available, otherwise, use libm versions if + availible, otherwise, punt. + * shadow/bits/std_cmath.h: ditto + +2000-06-02 Benjamin Kosnik + + * bits/locale_facets.h: Tweak. + * src/locale.cc (codecvt): Tweak. + + * bits/locale_facets.h (_Format_cache): _S_ecks -> _S_x. + * bits/locale_facets.tcc (num_get::_M_extract): Fix for hex. + + * bits/basic_string.h: Move data member up. + * src/string-inst.cc: Fix instantiations. + * bits/string.tcc: Fix types. + +2000-06-02 Anthony Williams + + * testsuite/21_strings/replace.cc (test01): Qualify find with std::. + +2000-06-01 Benjamin Kosnik + + * bits/std_cwctype.h: Clean. + * bits/std_cwchar.h: Clean, remove cruft. + + * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Re-work, add bits + for beginning iconv support. + Remove _GLIBCPP_HAS_WCHAR_MIN_MAX, roll into _GLIBCPP_USE_WCHAR_T + macro. + * acconfig.h: Remove _GLIBCPP_HAS_WCHAR_MIN_MAX. + * bits/limits_generic.h: Remove. + * src/gen-num-limits.cc: Same. + + * src/locale.cc: Tweaks. + + * bits/char_traits.h: Tweaks. + +2000-05-31 Russell Davidson + + * bits/locale_facets.tcc (num_get::_M_extract): Fix signage, + exponent, scientific formatting issues. + * testsuite/27_io/istream_extractor_arith.cc (test09): Add tests. + +2000-05-31 Branko Cibej + + * bits/limits_generic.h (numeric_limits): Use WCHAR_MIN + and WCHAR_MAX instead of WCHART_MIN and WCHART_MAX. + +2000-05-31 Nathan Myers + + * docs/thanks.html: edit own credits + +2000-05-31 Benjamin Kosnik + + * bits/generic_shadow.h: Remaining _C_Shadow -> _C_shadow fix. + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Add strtoull checks... + + * mkcheck.in (SH_FLAG): Add in -Wl,--rpath -Wl,$LIB_PATH. Tweaks. + +2000-05-31 Steven King + + * shadow/time.h: fix typo + * shadow/wchar.h: ifdef __USE_GNU for wcsdup + * shadow/bits/std_cwchar.h: ditto + * shadow/bits/std_cstdlib.h: add overloads of abs and div for long + and long long. + +2000-05-26 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): If strtoll isn't + available, force --disable. Need to flesh this out; make smarter. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * mkcheck.in: Minor tweaks. + * docs/download.html: Fix typo. + +2000-05-25 Benjamin Kosnik + + * inclosure: Change to... + * mkinclosure: This. + Fix paths to bash. + * mkcshadow: Fix paths to bash. + + * src/Makefile.am: Tweaks. Do cshadow header trickery at build time. + * src/Makefile.in: Regnerate. + * acinclude.m4 (GLIBCPP_COMPILER_VERSION): Fix typo. + (GLIBCPP_ENABLE_SHADOW): Do a less gross hack. + * aclocal.m4: Regenerate. + * mkcheck.in (INC_PATH): Tweak. + + * configure.in: Enable long long by default. + * configure: Regenerate. + + * mkcheck.in (LIB_PATH): Revert. + +2000-05-24 Nathan "I don't write ChangeLog Entries" Myers + + * config/cpu/i486: New directory. + * config/cpu/i486/bits: New directory. + * config/cpu/i486/bits/atomicity.h: New file. + * config/cpu/i386/bits/atomicity.h (__compare_and_swap): Delete + 'cmpxchgl' asm. + * acinclude.m4 (GLIBCPP_CHECK_CPU): Enable i386. + +2000-05-24 Loren J. Rittle + + * backward/alloc.h (__default_alloc_template): Only expose + implementation-specific symbol, if it exists in the + configuration. + * backward/iostream.h (ends): Expose symbol. + * backward/strstream.h: New file. + * backward/stream.h: New file. + * backward/ostream.h: New file. + * backward/istream.h: New file. + * backward/fstream.h: New file. + * backward/complex.h: New file. + * backward/iomanip.h: New file. + + * mkcheck.in (LIB_PATH): Add -R bits. + + * math/carg.c (carg): Replace __atan2 with atan2. + +2000-05-24 Benjamin Kosnik + + * Makefile.am (TAGS): Construct. + * Makefile.in: Rengerate. + * src/Makefile.am: Tweak. + * src/Makefile.in: Tweak. + * configure.in: Tweak. + + * bits/c++config.h: Rename to ... + * bits/c++config: This. + * mkc++config: Adjust. + + * m4: Remove. + * m4/lc_message.m4: Merge into acinclude.m4. + * m4/mathfcts.m4: Same. + * m4/stringfcts.m4: Same. + * acinclude.m4: Add here. + * configure: Regnerate. + + * acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): Remove + OPTLEVEL. Add FMTFLAGS. + * aclocal.m4: Regenerate. + * src/Makefile.am (AC_CXXFLAGS): Take out OPTLEVEL, as this has + been disabled due to higher-level Makefiles running amuck over + this bit, and add in FMTFLAGS so that formatting is clear. + * src/Makefile.in: Regenerate. + * configure: Regenerate. + + * src/ios.cc (ios_base::sync_with_stdio): Clean up buffers from + initialization. + + * docs/download.html: Remove references to Cygwin-specific bits, + as this can now be built natively. + Update with current information. + +2000-05-24 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): If we can use + -fdiagnostics-show-location=once, do so. Expand AC_LANG_* to + enclose other tests in this macro, including future ones. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * docs/faq/index.html: Update location of libg++ FAQ. + * docs/faq/index.txt: Regenerate. + +2000-05-22 Benjamin Kosnik + + * docs/17_intro/libstdc++-assign.txt: Change Cygnus to FSF. + +2000-05-22 Phil Edwards + + * mkcheck.in: Tweak for Solaris 8. Additional minor output comment. + +2000-05-22 Phil Edwards + + * acinclude.m4: If the new pragma isn't supported, don't kill -Werror; + keep -Werror and add -Wno-unknown-pragma. -Werror Is Good. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-05-19 Nathan C. Myers + + * bits/generic_shadow.h: s/swamp/legacy/ + +2000-05-19 Phil Edwards + + * acinclude.m4: Clean up comments on newer checks. + (GLIBCPP_CHECK_COMPILER_VERSION): Check for system_header + pragma support. Remove WERRORSUPPRESS variable, add WERROR. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * Makefile.in: Regenerate. + * libio/Makefile.in: Regenerate. + * math/Makefile.in: Regenerate. + * src/Makefile.am: Tell make's WERROR to depend on configure's WERROR. + * src/Makefile.in: Regenerate. + * docs/configopts.html: Document changes to --enable names. + +2000-05-18 Chip Salzenberg + + * bits/ostream.tcc (_S_pad_char): Function template should not be + static. + * bits/streambuf.tcc (_S_copy_streambufs): Likewise. + * src/string-inst.cc (__destroy_aux): Instantiate for string*. + +2000-05-18 Nathan C. Myers + + * mkcshadow: Change C_Swamp to C_legacy. + * shadow/*: Same. + * shadow/bits/*: Same. + s/C_Swamp/C_legacy/g + s/SWAMP/LEGACY/g + s/_Shadow/_shadow/g + +2000-05-18 Anthony Williams + + * bits/locale_facets.tcc (num_get::_M_extract): Change char* to + const char*. + * src/string-inst.cc (string::_S_find): Same. + +2000-05-18 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): Change to + --enable-cshadow-headers. Add output messages. + (GCC_ENABLE_LONG_LONG): Change to --enable-long-long, no + underscores (like the rest of the enable options.) Add output messages. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * configure.in: Touch. + +2000-05-17 Benjamin Kosnik + + * mkcheck.in: Enable shared library testing. + +2000-05-17 Nathan C. Myers + + * bits/std_cmath.h: fix sqrt(float) + +2000-05-16 Loren J. Rittle + + * bits/std_cassert.h: Use system_header pragma. + * bits/std_cctype.h: Likewise. + * bits/std_cerrno.h: Likewise. + * bits/std_cfloat.h: Likewise. + * bits/std_climits.h: Likewise. + * bits/std_clocale.h: Likewise. + * bits/std_cmath.h: Likewise. + * bits/std_csetjmp.h: Likewise. + * bits/std_csignal.h: Likewise. + * bits/std_cstdarg.h: Likewise. + * bits/std_cstddef.h: Likewise. + * bits/std_cstdio.h: Likewise. + * bits/std_cstdlib.h: Likewise. + * bits/std_cstring.h: Likewise. + * bits/std_ctime.h: Likewise. + * bits/std_cwchar.h: Likewise. + * bits/std_cwctype.h: Likewise. + * bits/std_exception.h: Likewise. + * bits/std_new.h: Likewise. + * bits/std_typeinfo.h: Likewise. + * shadow/bits/std_cassert.h: Likewise. + * shadow/bits/std_cctype.h: Likewise. + * shadow/bits/std_cerrno.h: Likewise. + * shadow/bits/std_cfloat.h: Likewise. + * shadow/bits/std_climits.h: Likewise. + * shadow/bits/std_clocale.h: Likewise. + * shadow/bits/std_cmath.h: Likewise. + * shadow/bits/std_csetjmp.h: Likewise. + * shadow/bits/std_csignal.h: Likewise. + * shadow/bits/std_cstdarg.h: Likewise. + * shadow/bits/std_cstddef.h: Likewise. + * shadow/bits/std_cstdio.h: Likewise. + * shadow/bits/std_cstdlib.h: Likewise. + * shadow/bits/std_cstring.h: Likewise. + * shadow/bits/std_ctime.h: Likewise. + * shadow/bits/std_cwchar.h: Likewise. + * shadow/bits/std_cwctype.h: Likewise. + * shadow/bits/wrap_libio.h: Likewise. + * shadow/bits/wrap_unistd.h: Likewise. + * shadow/sys/cdefs.h: Likewise. + +2000-05-16 Nathan C. Myers + + It appears that gcc-2.96 supports the keyword "and" now. + * bits/std_ciso646.h: remove. + * std/ciso646: gut. + * testsuite/17_intro/header_ciso646.c: enable testing. + * src/Makefile.am, src/Makefile.in: remove mention of + bits/std_ciso646.h + +2000-05-16 Nathan C. Myers + + * mkcshadow: fix typo s/_C_Swamp_/_C_Swamp/. + +2000-05-16 Phil Edwards + + * acinclude.m4: Fix typo, switch to decaf... + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-05-16 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_SHADOW): New macro, stub. + * aclocal.m4: Regenerate. + * configure.in: Call. + * configure: Regenerate. + * docs/configopts.html: Stub documentation. + +2000-05-14 Nathan Myers + + * mkcshadow: build in more-correct directory, create cshadow/ + directory if needed, report progress. + +2000-05-14 LLeweLLyn Reese + + * src/Makefile.am: Fix tr commands. + * src/Makefile.am: Remove references to [w]stringCTORDUPAL.[lo,cc] + * src/string-inst.cc: Remove extra instantiation of + S::basic_string(S::size_type, C, S::allocator_type const&); + * src/string-inst.cc: Remove extra template keyword. + +2000-05-14 Loren J. Rittle + + * config/bsd/bits/ctype_base.h: Add support for plain BSD4.4. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Enhance bsd tests. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * */Makefile.in: Regenerate. + +2000-05-11 Phil Edwards + + * acinclude.m4: Fix minor typo with ctypes, add more sanity to + enable-cxx-flags, and remove GLIBCPP_ENABLE_NAMESPACES altogether. + * aclocal.m4: Regenerate. + * configure.in: Non-blank arguments break fewer Linuxes. + * configure: Regenerate. + * src/Makefile.am: Re-order AC_CXXFLAGS components. + * src/Makefile.in: Regenerate. + +2000-05-10 Benjamin Kosnik + + * bits/std_cmath.h: Tweaks. + * math/mathconf.h: Tweaks and fixes for HP-UX 11. + (sqrtf): Define away iff !builtin and !in . + (sinf): Same. + (cosf): Same. + (fabsf): Same. + At some point this directory should be converted to c++, the + autoconf tests should be run by the c++ compiler (not c), and + should be used instead of math.h. + Move declaration of nan() here. + * math/complex-stub.h (cabsl): Remove nan() declaration. + + Finish up FreeBSD4.0 support. + * config/bsd/ctype.cc: Scope out toupper, tolower calls. + * config/generic/ctype.cc: And here. + * testsuite/21_strings/char_traits.cc (test02): Guard with + _GLIBCPP_USE_WCHAR_T. + + via Phil Edwards + * bits/std_cctype.h: Remove _GLIBCPP_USE_NAMESPACES. + * acconfig.h: And here. + * acinclude.m4: Same. + * testsuite/27_io/istream.cc: And here. + * testsuite/27_io/ostream.cc: And here. + +2000-05-09 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_CPU): Change powerpc bits to + -mcpu=powerpc. + * src/Makefile.am: Disable ENABLE_CXX_FLAGS stuff for the moment. + + * config/generic/bits/ctype_specializations.h (ctype::is): + Make more generic. + + * config/bsd: New directory. + * config/bsd/ctype.cc: New. + * config/bsd/bits/ctype_base.h (ctype_base): New. + * config/bsd/bits/ctype_specializations.h: New. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Add bsd tests. + +2000-05-09 Phil Edwards + + * acinclude.m4: New macro, GLIBCPP_ENABLE_CXX_FLAGS. + * configure.in: Call. + * src/Makefile.am: Append results of macro to AC_CXXFLAGS. + * aclocal.m4: Regenerate. + * configure: Ditto. + * src/Makefile.in: Ditto. + * docs/configopts.html: Document. + * docs/download.html: Fix typo (close quote). + * docs/footer.html: Update. + +2000-05-09 Loren J. Rittle + + * backward/iostream.h: Expose endl. Guard wide types. + * src/Makefile.am (headers): Update list to match files. + * src/Makefile.in: Regenerate. + +2000-05-09 Vadim Egorov + Benjamin Kosnik + Nathan Myers + Dietmar Kuehl + + * bits/streambuf.tcc (basic_streambuf::xsgetn): Fix uflow case. + (basic_streambuf::xsputn): Make consistent. + * testsuite/27_io/filebuf.cc: Add tests. + +2000-05-08 Steven King + + * bits/char_traits.h: Use wchar_t utility functions for + char_traits methods. + * testsuite/21_string/char_traits.cc: New (test02): test + char_traits + +2000-05-08 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CXXFLAGS): Add bits for solaris2.8. + + * bits/fstream.tcc (filebuf::_M_init_filebuf): Don't set + _M_buf_size based on macro, instead use _M_buf_size_opt. + * bits/std_streambuf.h (basic_streambuf): Add _M_buf_size_opt. + (basic_streambuf()): Set _M_buf_size_opt. + * testsuite/27_io/filebuf.cc (filebuf): Use _M_buf_size_opt + instead of _M_buf_size. + +2000-05-04 Branko Cibej + + * src/complex_io.cc: Don't instantiate inserters and extractors + for wide-character streams unless _GLIBCPP_USE_WCHAR_T is defined. + +2000-05-03 Phil Edwards + Felix Natter + + * docs/footer.html: Update to see if it takes effect. + * docs/thanks.html: More people. + * docs/17_intro/headers_cc.txt: Copy from testsuite, since that can't + be seen from the web pages. Rename for browser-friendliness... + * docs/17_intro/howto.html: ...and update here. + * docs/17_intro/porting-howto.html: Changes from Felix. + * docs/gccrebuild.html: Mention v3->egcs move. + * docs/faq/index.html: Ditto. Also misc tweaks and URL updates. + * docs/faq/index.txt: Regenerate. + +2000-05-01 Benjamin Kosnik + + * config/cpu/powerpc/bits/atomicity.h (__exchange_and_add): More + fixes. + +2000-05-01 Vadim Egorov + + * bits/char_traits.h: Fix parameter types. + * bits/string.tcc: Avoid traits_type::move. + +2000-05-01 Benjamin Kosnik + + * src/Makefile.am (AC_CXXFLAGS): Add CPUFLAGS here. + * src/Makefile.in: Regenerate. + * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Revert. + +2000-04-30 Steven King + + * bits/locale_facets.h: Fix syntax error. + * bits/std_fstream.h: ditto + +2000-04-30 Benjamin Kosnik + + * config/cpu/powerpc/bits/atomicity.h (__compare_and_swap): Fix typo. + + * mknumeric_limits (trait_name): Fix copyright notice. + * src/gen-num-limits.cc: Explicitly instantiate epsilon and + round_error data members of struct value. This works around + weak-linking issues on AIX, HPUX. + +2000-04-29 Phil Edwards + + * docs/download.html: Add link to list of mirror sites. + +2000-04-28 Loren J. Rittle + + * mkcheck.in: Rely on exit status instead of the presence of a + core file. Added comments on how/where to save core and exe + files. Move shell wildcards outside quotes and fix core path. + +2000-04-27 scott snyder + + * src/misc-inst.cc: Explicitly instantiate ifstream and ofstream + classes. + +2000-04-26 Nathan C. Myers + + * bits/basic_string.h: include instead + of , and use the uglified names. + * config/cpu/*/atomicity.h: replace with bits/atomicity.h; + uglify names, eliminate dependence on . + * src/Makefile.in, src/Makefile.am: refer to correct place + for atomicity.h header. + +2000-04-25 Steven King + + * bits/basic_string.h: Fix syntax error. + +2000-04-25 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_MATH_SUPPORT): Improve checks for + USE_LONG_DOUBLE. + (GLIBCPP_ENABLE_DEBUG): If alpha, use -gdwarf-2. + * math/Makefile.am (EXTRA_LONG_DOUBLE_yes): Add all the long + versions to this as copysignl is needed anyway for these targets. + * math/Makefile.in: Regenerate. + + * bits/streambuf.tcc (streambuf::xsgetn): Tweak. + * bits/fstream.tcc (underflow): Cast to libio types. + * bits/basic_file.h (seekoff): Fixes for alpha: use __c_streamoff. + * config/c_io_libio.cc (seekoff): And here. + +2000-04-24 Loren J. Rittle + + * mkcheck.in: Report compiler version used for test. Find + the built _G_config.h instead of any old installed version. + +2000-04-24 Loren J. Rittle + + * config/generic/ctype.cc (do_toupper): Remove dependence on + non-portable/non-existent lookup table. + (do_tolower): Same. + +2000-04-24 Nathan Myers + + * src/string-inst.cc: More fixing. + +2000-04-24 Benjamin Kosnik + + * bits/stl_iterator.h: Pedantic fixing. + * bits/std_sstream.h: And here. + * bits/string.tcc: And here. + +2000-04-24 Felix Natter + + * docs/17_intro/howto.html: Add bits. + * docs/17_intro/porting-howto.html: New file. + +2000-04-24 Branko Cibej + + * acinclude.m4(GLIBCPP_CHECK_WCHAR_T_SUPPORT): Expand + @libinst_wstring_la@ to libinst-wstring.la when specializing for + wchar_t, to empty string otherwise. + * src/Makefile.am: (EXTRA_LTLIBRARIES): New. + (sources): Remove $(string_sources) and $(wstring_sources). + (libstdc___la_LIBADD): Add libinst-string.la and @libinst_wstring_la@. + (libstdc___la_DEPENDENCIES): New. + (libinst_string_la_SOURCES, libinst_wstring_la_SOURCES): New. + +2000-04-20 Benjamin Kosnik + + * bits/std_sstream.h: Tweak formatting. + * bits/std_fstream.h: Make types public. + + * testsuite/27_io/streambuf.cc: Fix for alpha. + + Brad Garcia + * bits/locale_facets.h (numpunct::numpunct(size_t)): Fix bool + initialization. + * testsuite/27_io/ios_manip_fmtflags.cc (test02): Add test for + bool formatting. + +2000-04-19 Nathan Myers + + * src/string-inst: consolidate _S_create, + destroy, leak, clone members into stringMAIN and stringMUTATE + object files. + * src/Makefile.am: Above, and eliminate dependence on + wstring-inst.cc. + * src/wstring-inst.cc: Remove. + +2000-04-18 Benjamin Kosnik + + * src/Makefile.am (AC_CXXFLAGS): Activate debugging code, again. + Add flags for specialized rules dealing with instantiations. + + * src/string-inst.cc: Add instantiations missing from shared + libraries--see stringEQ, stringCONSC. + * src/Makefile.am (wstring_sources): Add. + (string_sources): Same. + * src/Makefile.in: Regenerate. + + * stl/*: Integrate contents of this directory into top-level + directories. + * ext/bvector hash_map hash_set rope ropeimpl.h slist + stl_bvector.h stl_hash_fun.h stl_hashtable.h stl_rope.h tree: Add. + * bits/pthread_allocimpl.h std_algorithm.h std_bitset.h + std_deque.h std_functional.h std_iterator.h std_list.h std_map.h + std_memory.h std_numeric.h std_queue.h std_set.h std_stack.h + std_stdexcept.h std_strstream.h std_utility.h std_vector.h + stl_algo.h stl_algobase.h stl_alloc.h stl_config.h stl_construct.h + stl_deque.h stl_function.h stl_heap.h stl_iterator.h + stl_iterator_base.h stl_list.h stl_map.h stl_multimap.h + stl_multiset.h stl_numeric.h stl_pair.h stl_pthread_alloc.h + stl_queue.h stl_range_errors.h stl_raw_storage_iter.h stl_relops.h + stl_set.h stl_stack.h stl_string_fwd.h stl_tempbuf.h stl_threads.h + stl_tree.h stl_uninitialized.h stl_vector.h type_traits.h: Add. + * backward/algo.h algobase.h alloc.h bvector.h defalloc.h deque.h + function.h hash_map.h hash_set.h hashtable.h heap.h iterator.h + list.h map.h multimap.h multiset.h pair.h rope.h set.h slist.h + stack.h tempbuf.h tree.h vector.h: Add. + * README (file): Update. + * docs/documentation.html: README not being found. + * src/Makefile.am (sources): Take out stl directory. + * mkcheck.in (SRC_DIR): And here. + * src/Makefile.in: Regenerate. + +2000-04-18 Levente Farkas + + * stl/bits/stl_function.h: Add bits so that const and non-const + both work. + +2000-04-18 scott snyder + + * stl/bits/stl_map.h (class map): Fix default for _Alloc template + parameter. Get rid of use of __STL_DEFAULT_ALLOCATOR and + __STL_LIMITED_DEFAULT_TEMPLATES macros. + * stl/bits/stl_multimap.h (class multimap): Likewise. Get rid of + use of __STL_DEPENDENT_DEFAULT_TMPL macro. + +2000-04-18 scott snyder + + * stl/bits/stl_config.h (__STL_DEPENDENT_DEFAULT_TMPL): Deleted + this macro. + + * stl/ext/hash_map (class hash_map, class hash_multimap): Get rid + of use of __STL_DEPENDENT_DEFAULT_TMPL macro. + * stl/ext/hash_set (class hash_set, class hash_multiset): + Likewise. + * stl/bits/stl_function.h (struct constant_unary_fun, struct + constant_binary_fun): Likewise. + * stl/bits/stl_queue.h (class queue, class priority_queue): Likewise. + * stl/bits/stl_stack.h (class stack): Likewise. + * stl/bits/stl_set.h (class set): Likewise. + * stl/bits/stl_multiset.h (class multiset): Likewise. + + * stl/bits/stl_iterator.h (class reverse_bidirectional_iterator, + class reverse_iterator): Get rid of use of + __STL_LIMITED_DEFAULT_TEMPLATES macro. + + * stl/bits/stl_config.h (__STL_DEFAULT_ALLOCATOR): Deleted this + macro. + + * stl/bits/stl_deque.h (class deque): Get rid of use of + __STL_DEFAULT_ALLOCATOR macro. + * stl/bits/stl_list.h (class list): Likewise. + * stl/bits/stl_multiset.h (class multiset): Likewise. + * stl/bits/stl_set.h (class set): Likewise. + * stl/bits/stl_string_fwd.h (class basic_string): Likewise. + * stl/bits/stl_tree.h (class _Rb_tree, class rb_tree): Likewise. + * stl/bits/stl_vector.h (class vector): Likewise. + * stl/ext/ropeimpl.h (rotate): Likewise. + * stl/ext/hash_map (class hash_map, class hash_multimap): + Likewise. + * stl/ext/hash_set (class hash_set, class hash_multiset): + Likewise. + * stl/ext/slist (class slist): Likewise. + * stl/ext/stl_bvector.h (class bit_vector): Likewise. + * stl/ext/stl_rope.h (class rope): Likewise. + * src/locale.cc (_Impl): Likewise. + * src/localename.cc (_Impl): Likewise. + * bits/localefwd.h (_Impl): Likewise. + +2000-04-18 Phil Edwards + + * docs/install.html: Cleanup, minor changes. + * docs/17_intro/howto.html: Ditto. + +2000-04-18 Nathan Myers + + * bits/basic_string.h: Remove "inline" from member _S_find. + + * src/string-inst.cc: Rewrite to reflect non-inline template + instantiations in string.tcc. + + * src/stringADDCS.cc, stringADDPS.cc, stringADDSC.cc, stringADDSP.cc, + stringADDSS.cc, stringBIST.cc, stringBOST.cc, stringCHTR.cc, + stringEQPS.cc, stringEQSP.cc, stringEQSS.cc, stringEXTRA.cc, + stringGEPS.cc, stringGESP.cc, stringGESS.cc, stringGETLI.cc, + stringGTPS.cc, stringGTPS.cc, stringGTSP.cc, stringGTSS.cc, + stringINSER.cc, stringLEPS.cc, stringLESP.cc, stringLESS.cc, + stringLESP.cc, stringLTPS.cc, stringLTPS.cc, stringLTSP.cc, + stringLTSS.cc, stringMAIN.cc, stringNEPS.cc, stringNESP.cc, + stringNESS.cc, stringSCOPY.cc: Remove. + * src/wstringADDCS.cc, etc: Remove. + + Benjamin Kosnik + * src/Makefile.am: Modify to reflect above. + * src/Makefile.in: Regenerate. + +2000-04-17 Benjamin Kosnik + + * docs/install.html (--enable-libstdcxx-v3): Clean up install docs. + +2000-04-13 Benjamin Kosnik + + * bits/std_fstream.h (filebuf::sync): Need to use the abstracted + io interface here instead of the libio particulars. + + * config/threads-posix.h: Consistency with stl_config.h. + + * mkcheck.in (CXX_FLAG): Add DDEBUG_ASSERT back in. + +2000-04-13 Loren J. Rittle + + * mknumeric_limits: Rename generic type template parameter name + '_T' to '_Tp'. + * stl/bits/type_traits.h: Ditto. + +2000-04-06 Benjamin Kosnik + + * mkcheck.in (SRC_DIR): Change default mkcheck behavior, so that + it is more useful for --enable-libstdcxx-v3. Use the built + compilers with v3, instead of compilers in PATH, and don't + re-include include directories for checking the install. + +2000-04-05 Benjamin Kosnik + + * src/Makefile.am (AM_CXXFLAGS): Disable NAMESPACES, as this is on + by default when using --enable-libstdcxx-v3. + * src/Makefile.in: Regenerate. + * configure.in: Disable GLIBCPP_ENABLE_NAMESPACES, + GLIBCPP_ENABLE_RELIBGCC for --enable-libstdcxx-v3 flag. + * configure: Regenerate. + * mkcheck.in: Deal with NAMESPACES. + +2000-04-05 Petter Urkedal + + * src/cmath.cc: New file... + (pow(*, int)): Define functions... + * src/Makefile.am (sources): ...register file. + * src/Makefile.in: Regenerate. + * bits/std_cmath.h (pow): ...declare functions here, and remove + old definitions. + +2000-04-04 Benjamin Kosnik + + * acinclude.m4 (GCC_OBJDIR): Tweaks + +2000-04-03 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_CPU): Add arm configure bits. + * config/cpu/arm: New directory. + + Jesper Skov + * config/cpu/arm/atomicity.h: New file. + +2000-03-31 Benjamin Kosnik + + * stl/bits/stl_config.h: Make _STL_THREADS depend on _REENTRANT. + Remove unused bits. Clean. + +2000-03-29 Benjamin Kosnik + + * testsuite/25_algorithms: New directory. + * testsuite/25_algorithms/min_max.cc: New file. + +2000-03-29 scott snyder + + * bits/locale_facets.tcc (do_put): Allow a couple extra digits of + precision beyond that which we get from numeric_limits::digits10. + + * stl/bits/stl_algobase.h (max, min): Don't use comparison + operator. + + * testsuite/23_containers/bitset_shift.cc: Fix. + + * testsuite/27_io/ios_manip_fmtflags.cc (test01): Don't give a + temporary to imbue(). + + * bits/std_fstream.h (sync): Resync libio's idea of the current + file position with the external file. + +2000-03-28 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_arith.cc.cvs: Fix merge + mistake. + + * bits/std_fstream.h (filebuf::is_open): Check for _M_file before + attempting calls to it. + * bits/fstream.tcc (ctors): Don't call _M_init_filebuf in + ctors. Instead, call _M_init_filebuf ... + (open): Here, as suggested by 27.8.1.3. + * src/ios.cc (ios_base::Init::Init()): Clean up default filebufs + properly when initializing cout/cin/cerr. + +2000-03-27 Russell Davidson + + * testsuite/23_containers/multiset.cc (main): Clean up for namespaces. + * testsuite/22_locale/ctype_char_members.cc: And here. + * testsuite/27_io/streambuf.cc (streambuf): And here. + * testsuite/27_io/ostream_inserter_char.cc (test06): And here. + * testsuite/27_io/istream_unformatted.cc (test05): And here. + * testsuite/27_io/istream_extractor_arith.cc: And here. + * testsuite/27_io/ios_manip_basefield.cc (test02): And here. + * testsuite/27_io/ios_base_members_static.cc: And here. + * bits/std_climits.h (_CPP_CLIMITS): Fix typo. + +2000-03-27 Chris Faylor + + * configure.in: Remove setting of CXX if canadian cross. + * configure: Regenerate. + +2000-03-27 Nathan Myers + + * bits/sstream.tcc: Optimize. + * bits/basic_string.h(string::append): Don't inline. + * bits/string.tcc: Move out-of-line. + +2000-03-27 Phil Edwards + + * acinclude.m4: (GLIBCPP_CHECK_COMPILER_VERSION) When using <2.96, + define WERRORSUPPRESS so that the inlining warnings won't kill us. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * src/Makefile.am: Use WERRORSUPPRESS for the files that need it. + * src/Makefile.in: Regenerate. + + * docs/install.html: Almost complete rewrite. + +2000-03-25 Phil Edwards + + * docs/install.html: Explain -Werror problem at "#Werror" mark. + * docs/faq/index.html: Testsuite will die horribly if new libgcc.a + not installed. + * docs/faq/index.txt: Regenerate. + +2000-03-24 Alexandre Oliva + + * src/Makefile.am (libio_headers_install): Fix. + * src/Makefile.in: Regenerate. + +2000-03-24 Benjamin Kosnik + + * docs/17_intro/RELEASE-NOTES: Fix typos. + * docs/index.html: Update. + * docs/17_intro/BUGS: Update. + * docs/status.html: Update for 2.90.8 release. + +2000-03-23 Phil Edwards + + * Makefile.am: Better error message when missing libgcc2.ready. + * Makefile.in: Regenerate. + * acinclude.m4: Fastidious nitpicking reformatting. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * mkcheck.in: Must use same namespace settings as the library being + tested. Also log ST_FLAG, since it's being passed. + * docs/install.html: Add brief chunk on configuration. + * docs/17_intro/RELEASE-NOTES: Fix minor Cygwin typo. + * docs/23_containers/howto.html: Mention MT-safe string. + * docs/faq/index.html: Minor updates. + * docs/faq/index.txt: Regerarate. + +2000-03-22 Benjamin Kosnik + + * bits/sstream.tcc (seekoff): Fix for gptr() null cases. + Return newoff. + * bits/fstream.tcc (seekoff): Sync. + (seekpos): Sync. + * testsuite/27_io/ostream_unformatted.cc: New file. + * testsuite/27_io/stringbuf.cc: Fix. + * testsuite/27_io/istream_unformatted.cc (test04): Fix. + + * config/newlib/bits/ctype_base.h (ctype_base): Fix. + * config/newlib/ctype.cc (ctype): Change __ctype -> _ctype_. + + * src/complex_io.cc (operator>>complex): Tweak. + + * config/cpu/alpha/atomicity.h: Explicitly typedef uint32_t, int32_t if + does not exist. + * config/cpu/sparc/sparc64/atomicity.h: Same. + * config/cpu/sparc/sparc32/atomicity.h: Same. + * config/cpu/powerpc/atomicity.h: Same. + * config/cpu/i386/atomicity.h: Same. + * config/cpu/generic/atomicity.h: Same. + * configure.in: Check for inttypes.h. + * configure: Regnerate. + +2000-03-21 Benjamin Kosnik + + * bits/std_sstream.h (_M_init_stringbuf): Set initial ate position + correctly. + * testsuite/27_io/ostream_inserter_char.cc (test06): Add tests for ate. + + * docs/17_intro/RELEASE-NOTES (New): Add bits. + + * configure.in: Move AC_CHECK_HEADERS to a point where we know we + are compiling natively. + + * libio/*: Update to CVS libio from egcs. + +2000-03-21 Phil Edwards + + * docs/download.html: Document use of -z9 for CVS. + * docs/index.html: Add target date (no link) for future snapshot. + +2000-03-21 Gabriel Dos Reis + + * bits/slice_array.h: Rename generic type template parameter name + '_T' to '_Tp'. + * bits/mask_array.h: Ditto + +2000-03-20 Benjamin Kosnik + + * *: Change copyright holder from "Cygnus Solutions" to "Free + Software Foundation, Inc." + + * docs/configopts.html: Explain what "hella versions" means. + * docs/install.html: Some tweaks--nice job on this Phil. + * docs/documentation.html: Add a direct link to configuration options. + + * src/Makefile.am (OPTIMIZE_CXXFLAGS): Add in extras. + * docs/17_intro/RELEASE-NOTES (New): Add. + * bits/c++config.h (__GLIBCPP__): Bump version. + + * config/c_io_libio.cc (__basic__file(__c_lock*)): Change argument + type to match prototype. + +2000-03-20 Phil Edwards + + * docs/install.html: Update for new funky build procedure. Move + description of 'configure' options to... + * docs/configopts.html: ...here. New file. + * docs/17_intro/howto.html: Updates for new snapshot. + * docs/20_util/howto.html: Ditto. + * docs/21_strings/howto.html: Ditto. + * docs/21_strings/stringtok_std_h.txt: Fix example typos. + * docs/22_locale/howto.html: Ditto. + * docs/23_containers/howto.html: Ditto. + * docs/faq/index.html: Ditto. + +2000-03-18 Petter Urkedal + Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_CHECK_COMPLEX_SUPPORT): Move code for main + to the right place. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-03-16 Benjamin Kosnik + scott snyder + + * config/c_io_libio.h: Add __c_lock. + * config/threads-no.h: Same here. + * config/threads-posix.h: Add __mutext_type typedef. + * config/c_io_libio.cc: basic_file ctor takes lock arg. + * bits/basic_file.h: Ctor takes lock arg. + * bits/std_fstream.h: Add _M_lock. + * bits/fstream.tcc: Supply it to basic_file ctor. + + * mkcheck.in (resultstext): Change [[ to [. + + * testsuite/27_io/ostream_inserter_char.cc (test06): Tweak. + + * bits/locale_facets.h: Tweak. + + * stl/bits/stl_config.h: Fix defines. + +2000-03-16 Benjamin Kosnik + + * mkcheck.in (INC_PATH): Add paths from cpu_include_dir to find + atomicity.h + * configure: Regenerate. + * aclocal.m4: Regnerate. + +2000-03-16 Nathan Myers + + * bits/string.tcc: Add MT support. + * bits/basic_string.h: Same. + +2000-03-16 Phil Edwards + + * configure.in: Make --enable-namespaces and -libgcc-rebuild=../.. + the defaults. + * configure: Regenerate. + + * config/solaris/solaris2.7/ctype.cc: Fix unsigned/signed comparison. + +2000-03-16 Phil Edwards + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): If Sol2.5 ctype is found, keep + checking for 2.[67]. (GLIBCPP_ENABLE_RELIBGCC): No longer ignore + any defaults passed in. + * aclocal.m4: Regenerate. + +2000-03-16 Phil Edwards + + * mkcheck.in: Report total successes and failures. + +2000-03-15 Benjamin Kosnik + + * config/cpu: New directory, intended to be used to provide + cpu-specific configuration files. In particular, assembly language + primitives for thread safety. + * config/cpu/alpha: Populate. + * config/cpu/alpha/atomicity.h: New file. + * config/cpu/arm: Populate. + * config/cpu/generic: Populate. + * config/cpu/generic/atomicity.h: New file. + * config/cpu/hppa: Populate. + * config/cpu/i386: Populate. + * config/cpu/i386/atomicity.h: New file, take from i486. + * config/cpu/m68k: Populate. + * config/cpu/mips: Populate. + * config/cpu/powerpc: Populate. + * config/cpu/powerpc/atomicity.h: New file. + * config/cpu/sparc: Populate. + * config/cpu/sparc/sparc32: Populate. + * config/cpu/sparc/sparc64: Populate. + * config/cpu/sparc/sparc32/atomicity.h: New file. + * config/cpu/sparc/sparc64/atomicity.h: New file. + + * src/Makefile.am (myinstallheaders): Add install routines. + * acinclude.m4 (GLIBCPP_CHECK_CPU):Add configuration for the + cpu dir. + * configure.in: Add. + + * config/default: Adopt glibc naming conventions, and so move to + * config/generic: Here. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Modify default case to generic. + +2000-03-15 Bill Thompson + + * testsuite/27_io/ostream_inserter_char.cc (test06): Add test. + +2000-03-14 Phil Edwards + + * docs/17_intro/howto.html: Add missing "TOC" entry, and new section. + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Fixup. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2000-03-13 scott snyder + Jason Merrill + + * bits/locale_facets.h (class ctype, class ctype, class + ctype): More mask fixes. + * testsuite/22_locale/ctype.cc: Test for the problem. + +2000-03-13 Benjamin Kosnik + + * acconfig.h: Add bits. + * configure.in: Move AM_PROG_LIBTOOL up in file. + Tweak cross compiling info. + * configure: Regenerate. + + * mknumeric_limits (XCOMPILE): Echo compilation line for + gen-num-limits.cc + + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Add aix checks. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config/aix/ctype.cc (ctype): Tweak. + * config/aix/bits/ctype_base.h (ctype_base): Tweak. + * config/aix/bits/ctype_specializations.h: New file. + +2000-03-10 scott snyder + + * stl/bits/stl_vector.h (_M_assign_aux): Fix for __normal_iterator + conversions. + * testsuite/23_containers/vector_modifiers.cc (test01): Add a + regression test for the problem. + +2000-03-09 Benjamin Kosnik + + * testsuite/27_io/streambuf.cc (class testbuf): Same here. + * bits/fpos.h: And here. + * bits/std_ostream.h: Same here. + * bits/std_istream.h: Same here. + * bits/basic_ios.h: Same here. + * bits/std_fstream.h: Same here. + * bits/sbuf_iter.h (std): Here too. + * bits/std_sstream.h: Make types public. + + * src/misc-inst.cc: Use size_t instead of unsigned int. + * bits/locale_facets.tcc (_S_format): For now, cast to char. I + suppose this should be ctype::narrow... all the ctype + stuff needs to be cleaned up. + +2000-03-09 Phil Edwards + + * docs/gentop: Remove entire directory, finally. + +2000-03-09 scott snyder + + * bits/std_cmath.h (modf): Fix pointer overrun. + * testsuite/26_numerics/c_math.cc (test04, main): Add a regression + test for the problem. + +2000-03-09 Phil Edwards + + Looks like changes to the #include'd files must be followed by a + change to the #include'ing files to take effect. Caveat emptor. + * docs/header.html: New file, for server-side include. + * docs/footer.html: New file, for server-side include. + * docs/documentation.html: Change to use SSI. + * docs/download.html: Ditto. + * docs/index.html: Ditto. + * docs/mail.html: Ditto. + * docs/status.html: Ditto. + * docs/thanks.html: Ditto, plus minor updates. + * docs/how.html: Remove. + +2000-03-09 Benjamin Kosnik + + Preliminary alpha-linux support. + * src/locale.cc (ctype): Use correct types... + * bits/locale_facets.h (ctype): Add __table_type typedef. + (ctype): Same. + * bits/locale_facets.h (ctype): Have char and wchar_t + types match for table_size (size_t). + + * config/gnu-linux/ctype.cc (ctype): Change char_type to wchar_t + as per char specialization. + * config/*/ctype.cc: Same. + +2000-03-09 Gabriel Dos Reis + + * bits/locale_facets.h (_Ctype<>::mask): Import from base class + _Ctype_nois<>. Template base classes are never examinated in + first-phase name-lookup. + +2000-03-08 Benjamin Kosnik + + Add Solaris 2.5.1 support. + * config/solaris/solaris2.5/bits/ctype_base.h (ctype_base): And here. + * config/solaris/solaris2.5/ctype.cc: Fixup. + * config/solaris/solaris2.5/bits/ctype_specializations.h: Add. + * acinclude.m4 (GLIBCPP_CHECK_CTYPE): Add bits for solaris2.5.1. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * config/default/ctype.cc (ctype): Fixup. + +2000-03-07 Benjamin Kosnik + + * testsuite/27_io/filebuf.cc: Activate init code from yesterday... + * testsuite/27_io/ostream_inserter_arith.cc (testcases): Fix for + non-wchar_t case. + +2000-03-07 Gabriel Dos Reis + + * bits/cpp_type_traits.h: Expand on this file purpose. + +2000-03-06 Benjamin Kosnik + + * bits/locale_facets.h (ctype): Remove static members, and + re-work initialization code. + (ctype): Same. + Move _S_touppper to _M_toupper and initialize in ctor. + Move _S_tolower to _M_tolower and initialize in ctor. + Move _S_table to _M_ctable and initialize in ctor. + * bits/locale_facets.h (std): And here. + * src/locale.cc (std): Tweak. + * config/gnu-linux/ctype.cc: Change initialization here. + * config/newlib/ctype.cc: And here. + * config/solaris/solaris2.7/ctype.cc: And here. + * config/solaris/solaris2.6/ctype.cc: And here. + + * bits/localefwd.h: Tweak. + * bits/std_streambuf.h: Tweak formatting. + + * testsuite/27_io/filebuf.cc: Remove BUFSIZ dependencies. + +2000-03-05 Chip Salzenberg + + * src/misc-inst.cc (basic_iostream<>): Instantiate. + +2000-03-02 Phil Edwards + Kevin Atkinson + + Initial grab of SGI's strstream implementation with minor + modifications. + * src/strstream.cc: New file. + * std/strstream: New file. + * stl/bits/std_strstream.h: New file. + * bits/std_streambuf.h: Add public access. + * src/Makefile.am: Add strstream sources to list of dependencies. + * src/Makefile.in: Regenerate. + +2000-03-03 2000 Gabriel Dos Reis + + * bits/valarray_meta.h: Fix typo. + +2000-03-02 Alexandre Oliva + Chip Salzenberg + Petter Urkedal + + * src/Makefile.am (myinstallheaders): Hack to avoid + `for i in ; do'. + * src/Makefile.in: Regenerate. + +2000-03-02 Chip Salzenberg + + * libio/Makefile.an, math/Makefile.an, src/Makefile.am + (LINK): Put quotes around "$(CC)" for libtool link mode, + so libtool will use "-B" options during GCC bootstrap. + * */Makefile.in: Regenerate. + +2000-03-02 Petter Urkedal + + * config/c_io_libio.h: Enclose it all in ::std. + * bits/basic_string.h (basic_string<>): Make types and + `npos' public. + * mkc++config: Truncate output file before writing. + +2000-03-01 Benjamin Kosnik + + * math/cabsf.c (__mycabsf): Rename to cabsf. + * math/cabs.c (__mycabs): Rename to cabs. + +2000-02-29 LLeweLLyn Reese + + * bits/basic_string.h: Move declarations of __out_of_range(), + __length_error() and accompanying macros ... + * bits/exception_support.h: here. (Newly created file). + * bits/basic_string.h: #include + * stl/bits/stl_vector.h: #include + * src/Makefile.am (headers): Add. + * src/Makefile.in: Regenerate. + +2000-02-29 Benjamin Kosnik + + * bits/cpp_type_traits.h: Rename structs so they don't clash with + type_traits.h. + * bits/valarray_array.h: Synch. Fix typos. + + * libio/Makefile.am: Change to only compile source files that + config/c_io_libio.cc actually needs. + * libio/Makefile.in: Regnerate. + * libio/PlotFile.hes SFile.h builtinbuf.h editbuf.h floatconv.c + floatio.h fstream.h indstream.h iofclose.c iofdopen.c iofeof.c + ioferror.c iofflush.c iofgetpos.c iofgets.c iofopen.c iofprintf.c + iofputs.c iofread.c iofscanf.c iofsetpos.c ioftell.c iofwrite.c + iogetc.c iogetdelim.c iogetline.c iogets.c ioignore.c iomanip.h + iopadn.c ioperror.c iopopen.c ioprims.c ioprintf.c ioputc.c + ioputs.c ioscanf.c ioseekoff.c ioseekpos.c iosetbuffer.c + iosetvbuf.c iosprintf.c iosscanf.c iostream.h iostrerror.c + ioungetc.c iovfprintf.c iovfscanf.c iovsprintf.c iovsscanf.c + istream.h list.out ostream.h outfloat.c parsestream.h peekc.c + pfstream.h procbuf.h stdiostream.h stream.h streambuf.h strfile.h + strops.c strstream.h: Delete. + + * bits/basic_file.h: Stub out or delete unused bits in this + interface. + (filepos_beg): Remove. + (filepos_cur): Remove. + (filepos_valid): Remove. + * config/c_io_libio.cc: Resynch with the changes to basic_file. + +2000-02-29 Gabriel Dos Reis + + * bits/cpp_type_traits.h: Correct typo. + +2000-02-29 Gabriel Dos Reis + + * bits/cpp_type_traits.h: New file. + + * bits/valarray_array.h: Tweak. #include + Improve array construction. + (_Array_default_ctor): New dispatcher class. + (__valarray_default_construct): New function. + (_Array_copy_ctor): New dispatcher class. + (__valarray_copy_construct): New function. + (_Array<>::free_data): Remove. + + * src/Makefile.am (headers): Add cpp_type_traits.h + * src/Makefile.in: Regenerate. + +2000-02-28 Benjamin Kosnik + + Prune libio directory to match files in libio/Makefile. + * libio/PlotFile.cc,indstream.cc, isgetsb.cc, sbform.cc, + stream.cc, SFile.cc, ioassign.cc, isscan.cc, sbgetline.cc, + streambuf.cc, builtinbuf.cc, ioextend.cc, osform.cc, sbscan.cc, + strstream.cc, editbuf.cc, iomanip.cc, parsestream.cc, + stdiostream.cc, filebuf.cc, iostream.cc, pfstream.cc, + stdstrbufs.cc, fstream.cc, isgetline.cc, procbuf.cc, + stdstreams.cc: Remove. + * libio/floatio.h, iolibio.h, iostdio.h, iostreamP.h: Remove. + * libio/iofflush_u.c: Remove. + + * libio/dbz: Remove. + * libio/include: Remove. + * libio/stdio: Remove. + * libio/tests: Remove. + * libio/testsuite: Remove. + + * config/c_io_libio.cc: Add fcntl.h include for Solaris. + + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Add bits. + * configure.in: Replace 'grep -e' with 'grep' for Solaris. + * configure: Regenerate. + +2000-02-25 Benjamin Kosnik + + Abstract out the underlying "C" io bits. + * bits/std_new.h: Remove include, as well as . + * stl/bits/stl_string_fwd.h: Remove include. + * bits/std_cwchar.h: Wrap with _GLIBCPP_USE_WCHAR_T guards. Don't + include . + * stl/bits/stl_config.h: Don't include _G_config.h. + + * bits/basic_file.h: Allow for non-inheritance based __basic_files. + * config/c_io_libio.h (_GLIBCPP_BASIC_FILE_INHERITANCE): Define. + * config/c_io_libio.cc: Tweak. + + * src/Makefile.am (TOPLEVEL_INCLUDES): Add includedir. + * src/Makefile.in: Regenerate. + * Makefile.am (AM_MAKEFLAGS): Define includedir so that + prefix/include files will be picked up. + * Makefile.in: Regenerate. + * math/Makefile.am (TOPLEVEL_INCLUDES): And here. + * libio/Makefile.am (TOPLEVEL_INCLUDES): And here. + + * bits/std_ios.h: Include instead of libio. + * bits/fpos.h: And here. + * bits/basic_file.h (get_fileno): Move definition from ... + * src/basic_file.cc (std): To here. + * bits/fpos.h: Move types for streamoff, streampos to.. + * bits/basic_file.h: Move __c_file_type and fpos typedefs to... + * config/c_io_libio.h: ...here. + (_GLIBCPP_[BOOLALPHA, HEX, DEC, FIXED, INTERNAL, LEFT, OCT, RIGHT, + SCIENTIFIC, SHOWBASE, SHOWPOINT, SHOWPOS, SKIPWS, UNITBUF, + UPPERCASE, ADJUSTFIELD, BASEFIELD, FLOATFIELD, BADBIT, EOFBIT, + FAILBIT, GOODBIT, APP, ATE, BINARY, IN, OUT, TRUNC): New macros to + abstract out bits in ios_base. + * bits/ios_base.h: Re-macrofy. + * src/basic_file.cc : Rename, move to + * config/c_io_libio.cc: Here. + * config/c_io_libio.h: New file. Include libio. + * bits/c++config.h: Don't define _GLIBCPP_USE_LIBIO. + * configure.in (blddir): Add enabling bits for GLIBCPP_ENABLE_CSTDIO. + * configure: Regenerate. + * src/Makefile.am (sources): Take out basic_file.cc and add c++io.cc. + (generated_headers): Add c++io.h + * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): New function to select + underlying "C" io library. + * acinclude.m4 (GLIBCPP_CHECK_LIBIO): Roll functionality into + GLIBCPP_ENABLE_CSTDIO. + + * configure.in: Add configure bits for cross compiling non-newlib + targets. . + GLIBCPP_CHECK_COMPILER_VERSION: Take out this test for this + target, as we assume g++ support is not the limiting factor. + GLIBCPP_CHECK_LIBIO: Same, know we don't need libio. + * configure: Regenerate. + +2000-02-22 Benjamin Kosnik + + * Makefile.am (INTERFACE): Define. + * Makefile.in: Regenerate. + * libio/ChangeLog: Add entry. + +2000-02-21 Benjamin Kosnik + + * docs/install.html: Update install directions. + + * docs/status.html: Fix sidebar to be consistent. + * docs/thanks.html: Same. + * docs/links.html: Same. + * docs/mail.html: Same. + * docs/download.html: Same. + + * testsuite/27_io/filebuf.cc: Change BUFSIZ to buffer_size, and + kill the macro BUFSIZ. I think the solaris fails lie elsewhere + however, in the ctype_char_members.cc fail (for instance.) + * testsuite/17_intro/headers.cc: Remove extraneous fails for hosts + that do not have wchar_t enabled. + * testsuite/27_io/ostream_inserter_arith.cc (struct _TestCase): + Same here. + * testsuite/27_io/iostream_objects.cc: And here. + + * libio/gen-params (CONFIG_NM): Specifically add in nm as the + default CONFIG_NM. + +2000-02-18 Benjamin Kosnik + Tom Tromey + + * configure.in: Manually add MULTISUBDIR. + * configure: Regenerate. + * src/Makefile.am (MULTISUBDIR): Add the lesser evil of Tom's two + "Eww" hacks to get multilib installs working correctly. + ($(headers): Test for MULTISUBDIR before installing. + * Makefile.am (AM_MAKEFLAGS): Don't define MULTISUBDIR, instead + have configure hack it in. + * Makefile.in: Regenerate. + * acinclude.m4 (GLIBCPP_CXXFLAGS): Tweak wording. + Add enabling bits for native Cygwin ctypes, and other newlib-based + Oses. + +2000-02-17 Benjamin Kosnik + + * mkc++config (OUT_H): Remove EOF in cygwin. + * acinclude.m4 (LIBS): Tweaks to allow cygwin to configure. + + Tom Tromey + * src/Makefile.am: Tweaks for installing multilibs. + +2000-02-17 Benjamin Kosnik + + * src/Makefile.am: + (toolexeclib_LTLIBRARIES): Use this instead of lib_LTLIBRARIES. + Add USE_LIBDIR bits here, not... + * src/Makefile.in: Regenerate. + * Makefile.am: ...here. + * Makefile.in: Regenerate. + +2000-02-17 Benjamin Kosnik + + * acinclude.m4 (LIBS): Fix typos. + * configure.in: _GLIBCPP_BUGGY_FLOAT_COMPLEX, + _GLIBCPP_BUGGY_COMPLEX for crosses. + * src/Makefile.am (std_headers): Add libio.h as install include, + as with _G_config.h + * src/Makefile.in: Regenerate. + + * mkcheck.in: Add bits to set CXX to cross compiler. + + * src/complex_io.cc: Tweak. + * configure.in: _GLIBCPP_BUGGY_COMPLEX for crosses. + * configure: Regenerate. + + * config/newlib/ctype.cc: Tweaks. + * config/newlib/bits/ctype_base.h (ctype_base): Set mask to char, + not const char. + * src/complex_io.cc (operator>>(istream, complex): Define out if + BUGGY_COMPLEX. + +2000-02-16 Benjamin Kosnik + + * config/newlib/bits/ctype_base.h: Correct _S_table. + + Reconfigure ctype support for "C" libraries that don't use arrays. + * testsuite/22_locale/ctype_char_members.cc: New file. Test for + basic ctype functionality. + * src/locale.cc: Move host-specific ctype functions that are not + inlines to config/*/ctype.cc files. + (ctype::do_tolower): For instance. + (ctype::do_toupper): For instance. + (ctype::do_tolower): For instance. + (ctype::do_toupper): For instance. + * config/gnu-linux/ctype.cc: Modify. + * config/default/ctype.cc: Modify. + * config/newlib/ctype.cc: Modify. + * config/solaris/solaris2.6/ctype.cc: Modify. + * config/solaris/solaris2.7/ctype.cc: Modify. + + * bits/locale_facets.h (ctype::is): Mark inline, move + out-of-line. + (ctype::scan_is): Here too. + (ctype::scan_not): Here too. + Move out of line defs to config/*/bits/ctype_specializations.h. + * config/gnu-linux/bits/ctype_specializations.h: ...here. New file. + * config/default/bits/ctype_specializations.h: ...here. New file. + * config/newlib/bits/ctype_specializations.h: ...here. New file. + * config/solaris/solaris2.6/bits/ctype_specializations.h: New file. + * config/solaris/solaris2.7/bits/ctype_specializations.h: New file. + * src/Makefile.am (headers): Add ctype_specializations.h. + * src/Makefile.in: Regenerate. + + Aaron Weiss + * Makefile.am (AM_MAKEFLAGS): Add NM_FOR_BUILD, NM_FOR_TARGET, and + CONFIG_NM for Solaris builds. + * Makefile.in: Regenerate. + + * src/locale.cc: Tweak formatting. + +2000-02-15 Benjamin Kosnik + + Jim Parsons + * testsuite/27_io/istream_unformatted.cc (test06): Add test. + * bits/istream.tcc (read): Set failbit if !good(). Don't increment + gcount if eof. + (readsome): Same. + + Michel Decima + * testsuite/27_io/streambuf.cc: Add test. + * bits/streambuf.tcc (xsgetn): Don't test for valid mode. + (xsputn): Same. + + * src/Makefile.am (AM_CXXFLAGS): Pass down AC_CXXFLAGS, + OPTIMIZE_CXXFLAGS, etc. So --enable-debug and --enable-namespaces + will work correctly, for instance. + * src/Makefile.in: Regenerate. + + * bits/locale_facets.h: Fix merge error. + (num_put::put(unsigned long long): And here. + * mknumeric_limits (trait_name): Same. + +2000-02-15 Chip Salzenberg + + Support 'configure --enable-long-long'. + * bits/c++config.h (_GLIBCPP_USE_LONG_LONG): Remove. + * stl/bits/stl_config.h (__STL_LONG_LONG): Remove '#if 0'. + * acconfig.h (_GLIBCPP_USE_LONG_LONG): Add. Default to undef. + * acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Define flag macro. + * configure.in (GLIBCPP_ENABLE_LONG_LONG): Use it. + + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + * configure: Regenerate. + +2000-02-15 Chip Salzenberg + + Improve (complete?) 'long long' support. + * mknumeric_limits: Call $CXX with $CPPFLAGS. Define statics + for {,unsigned} long long if the limits header declares them. + * src/gen-num-limits.cc: Include early. + (__USE_GNU, _GNU_SOURCE): Define if _GLIBC_USE_LONG_LONG. + (long long, unsigned long long): Gen limits if _GLIBC_USE_LONG_LONG. + * bits/locale_facets.h (num_get<>::get(..., long long &)): Define. + (num_put<>::put(..., long long)): Likewise. + (num_put<>::put(..., unsigned long long)): Likewise. + * bits/locale_facets.tcc (_S_format): Rename from _S_format_long. + Templatize last parameter to support 'long long'. + (num_put<>::put(...)): Call _S_format with new name. + (num_put<>::put(..., long long)): Define. + (num_put<>::put(..., unsigned long long)): Likewise. + * src/locale-inst.cc (_S_format): Instantiate under new name. + +2000-02-15 Petter Urkedal + + * src/complex.cc (operator<<, operator>>): Moved from here... + * src/complex_io.cc: ...to new file. + (operator>>): Stub replaced by the real thing. + * src/Makefile.am (sources): Inserted complex_io.cc. + * src/Makefile.in: Regenerate. + * testsuite/26_numerics/complex_inserters_extractors.cc: Check it. + +2000-02-14 Benjamin Kosnik + + Add in ctype information for newlib "C" libraries. + * config/newlib: New directory + * config/newlib/bits/ctype_base.h: New file. + * config/newlib/ctype.cc: New file. + + * ctype/config/linux/*: Rename, move to... + * ctype/config/gnu-linux/*: Here. + + Finish off multilib work. + * configure.in: Don't set CXX if not Canadian cross. + * configure: Regenerate. + * acinclude.m4 (GLIBCPP_CHECK_LIBIO): Tweak messages. + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + + * install-sh: Remove, as AC_CONFIG_AUX_DIR(..) picks this out of + the top-level gcc directory now. + * mkinstalldirs: Remove. + * missing: Remove + * ltconfig: Remove. + * ltmain.sh: Remove. + * config.guess: Remove. + * config.sub: Remove. + +2000-02-13 Benjamin Kosnik + + * configure.in (glibcpp_basedir): Add glibcpp_basedir. + * Makefile.am: Move mutlilib stuff to src/Makefile.am. + * Makefile.in: Regenerate. + * src/Makefile.am: Add multilib bits. + * src/Makefile.in: Regenerate. + +2000-02-12 Benjamin Kosnik + + * configure.in: Clean, add some multilib support. + * configure: Regenerate. + * configure.host: New file. + + * acinclude.m4: GLIBCPP_CHECK_LIBIO. Take bits from configure.in and + roll a new function, checks for presence of libio. + GLIBCPP_CHECK_COMPILER_VERSION: Same. + GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT: Same. + GLIBCPP_CHECK_MATH_SUPPORT: Same. + GLIBCPP_CHECK_WCHAR_T_SUPPORT: Same. + GLIBCPP_CHECK_LIBIO: Same. + GLIBCPP_CHECK_CTYPE: Same. + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + + * Makefile.am: Tweaks. + * Makefile.in: Regenerate. + +2000-02-11 Benjamin Kosnik + + * configure.in: Make outputing the libio/Makefile + conditional. Haha, yeah right. Anyway, we instead do this thing + where if libio is found, then we build a null library, as there is + no point in duplicating the found libio. + * Makefile.am: Tweak. + * Makefile: Regenerate. + * libio/Makefile.am: Add _G_config.h stuff. Now cross compilers + are happy happy happy. + * libio/Makefile.am: Regenerate. + * libio/gen-params: New file. + * src/Makefile.am: Make libio.la non-conditional, as it is now a + null library if it's not needed. At least we are being consistent, + if not as elegant as we could be. + * src/Makefile: Regenerate. + +2000-02-10 Benjamin Kosnik + + * Makefile.am (SUBDIRS): Add libio again. + * Makefile.in: Regenerate. + * configure.in (BUILD_LIBIO_INCLUDE): And here. + (AC_OUTPUT): Generate libio/Makefile again. + * configure: Regnerate. + * src/Makefile.am (libstdc___la_LIBADD): Change path so that + libio.la is referring back to the libio subdir again. + (LIBIO_INCLUDES): And here. + * src/Makefile.in: Regenerate. + +2000-02-09 Benjamin Kosnik + + * math/complex-stub.h: Missed one. Change __mycabs* to cabs*. + +2000-02-09 Gabriel Dos Reis + + * bits/valarray_array.h (): #include. + (__valarray_get_memory): New function. + (__valarray_release_memory): Likewise. + (__valarray_default_construct): New functions. + (__valarray_fill_construct): New function. + (__valarray_copy_construct): New funstions. + (__valarray_destroy_elements): New function. + + * bits/valarray_array.tcc (__valarray_copy_construct): New + functions. + + * bits/std_valarray.h (valarray<>::valarray): Use + __valarray_get_memory and __valarray_fill_construct, + __valarray_copy_construct, __valarray_default_construct to + properly construct valarrays. + (valarray<>::~valarray): Use __valarray_destroy_elements to + destroy elements and __valarray_release_memory to return memory. + (valarray<>::shift): Tweak. + (valarray<>::cshift): Likewise. + (valarray<>::resize): Robustify. + +2000-02-09 Benjamin Kosnik + + * mknumeric_limits (XCOMPILE): Add support for cross compiling. + * bits/limits_generic.h: New file, defaults. + * src/limits_generic.cc: New file, defaults. + * configure.in (LIBS): Run mknumeric_limits at configure time. + * acconfig.h: Remove PACKAGE VERSION HAVE_COMPLEX + HAVE_LC_MESSAGES, tidy, clean, etc. + * src/Makefile.am (geberated_sources): Remove. + + * bits/fpos.h: Use _GLIBCPP_USE_LIBIO guards for libio typenames + (_IO_off_t, _IO_ssize_t) + + * src/complex.cc: Use glibc's if + possible. . . apparently this was not being done before. Include + tweaks. + (abs): Enable cabs if it's around, instead of mycabs. + * src/complexf.cc (FCT): Add global scope to match complex.cc. + * src/complexl.cc (FCT): Same. + * math/Makefile.am (EXTRA_LONG_DOUBLE_yes): Change mycabsl to cabsl. + (libmath_la_SOURCES): And here. + * math/(mycabs.c, mycabsf.c, mycabsl.c): Move to. . . + * math/(cabs.c, cabsf.c, cabsl.c): . . . Here. + * math/complex-stub.h: Move c_log declarations into. . . + * math/mathconf.h: Here. This is because glibc's + declares cclog, not c_log. The case of the dueling standards. . . + * math/mathconf.h: Add _GLIBCPP_HAVE_* to macros. + * math/Makefile.am: Change. + * math/nan.c (nan): Change signature. + * math/mathconf.h (NAN): Same. + * math/complex-stub.h (nan): And here. + + * Makefile.am (rebuild-stamp): Remove libio and libio + dependencies. Plan to take out libio subdir and just merge with + libio in top level gcc directory. Of course, this assumes there is + a libio in the top level directory (ie ../src_dir). This will + probably change the way this library is configured by default. + * libio/*: Remove. + +2000-02-09 Chip Salzenberg + + * localefwd.h (locale): Make public: facet, id, category. + +2000-02-09 Gabriel Dos Reis + + * testsuite/26_numerics/buggy_complex.cc: Fix Origin:. + + * acinclude.m4: Patch only once! + +2000-02-09 Gabriel Dos Reis + + * testsuite/26_numerics/buggy_complex.cc: New file. + +2000-02-05 Petter Urkedal + + * acinclude.m4: New GLIBCPP_CHECK_COMPLEX_SUPPORT macro. Based + on the 1999-11-21 entries by Mumit Khan. + * configure.in: Use. + * acconfig.h: New _GLIBCPP_BUGGY_COMPLEX macro. + * bits/std_complex.h: Use. + +2000-02-04 Philip Martin + + * stl/bits/stl_algobase.h: Add traits based dispatch for + __normal_iterator in the copy_backward()algorithm + * stl/bits/stl_vector.h: Reduce use of __normal_iterator + base() function. + +2000-02-04 Mumit Khan + + * src/gen-num-limits.cc (signal_handler): Work around signal + handling problem on Cygwin. + Thanks to Chris Faylor . + +2000-02-03 Benjamin Kosnik + + * configure.in: Add (preliminary) support for cross compiles and + multilibs. + Remove AC_C_BIGENDIAN tests. Why is this necessary? Cross + compilation freaks on this. + * configure: Regenerate. + * src/Makefile.am: Add support for cross compiles. + * src/Makefile: Regenerate. + * Makefile.am: Add support for cross compiles. + * Makefile.in: Regenerate. + +2000-02-02 Benjamin Kosnik + + * configure.in (LIBS): Remove unused subdirs. + * configure: Regenerate. + * Makefile.am (SUBDIRS): And here. + * Makefile.in: Regenerate. + * src/Makefile.am (sources): And here. + * src/Makefile.in: Regenerate. + * string/*: Remove. + * amm1/*: Remove. + * generic/*: Remove. + * glibc/*: Remove. + * mkcheck.in (INC_PATH): Include $BUILD_DIR before any source dirs. + + * libtool: Update to libtool-1.3.4. + * ltconfig: Same + * ltmain.sh: Same + * config.sub: Same. + * config.guess: Same. + +2000-02-02 Benjamin Kosnik + Alexandre Petit-Bianco + + * mkc++config: New file. Put autoconf macros into _GLIBCPP_ + namespace instead of polluting global namespace with duplicate + autoconf output. + * configure.in (AC_OUTPUT): Don't need to generate bits/config.h + here anymore. . . + (AC_OUTPUT_COMMANDS): Make it here. + * configure: Regenerate. + * bits/c++config.h.in (_CPP_CPPCONFIG): Change. Tweak. Remove + endif, as now we will add it manually. + Move to this file. . . + * bits/c++config.h: New file. Same as old c++config.h.in except + the ending macro guard is now appended manually. + + * bits/locale_facets.tcc: Change HAVE_* macros to _GLIBCPP_HAVE_*. + * bits/std_cmath.h: Same here. + * bits/std_cwchar.h: And here. + * src/locale.cc: And here. + * src/complexl.cc: And here. + * math/mathconf.h: Change to include "config.h" instead of + bits/c++config.h. + +2000-02-01 Benjamin Kosnik + + * configure.in: Add support for threads. Try a model closer to + libjava, as hopefully if the thread bits are added carefully + enough, the source code will not have gross hacks. Besides, the + libstdc++-v2 model could be easily emulated without the necessity + of linking files in (as currently done)--all that needs to be done + is AC_DEFINE(-D_PTHREADS) etc. However, let's try something + new. . . and see if we arrive at a more elegant solution. + * configure: Regenerated. + * config/threads-no.h: New file. + * config/threads-posix.h: New file. + * src/Makefile.am (myinstallheaders): Install c++threads.h. + * src/Makefile.in: Regenerated. + +2000-01-31 Benjamin Kosnik + + META-QUESTION: Can we just make a "header.html" file and a + "footer.html" and just include them in all the doc sub-pages. The + duplication of the header info is kind of gross, and weak + considering that if you change order or layout then all this stuff + has to be changed in all the sub-files. + + * docs/17_intro/contribute.html: Take out duplicate file info. + * README: Should just contain a link to the docs/index.html + page. Duplicate information removed. + * docs/faq/index.html: Remove indexes into HOWTOS. + * docs/17_intro/howto.html: Make intro and docs part more + centralized. Move intro stuff to documentation.html. + * docs/how.html: Tweak. Does this file need to exist? What calls it? + * docs/README.html: Move documentation files to + documentation.html. Should this file be renamed + "config_and_install.html" as that is what is apparently covered + here. . . + * docs/install.html: Yes. New file, moved and renamed README.html. + * docs/documentation.html: New file. This is the index file for + the documentation. + * docs/index.html: Edit sidebar order. Insert new link to new + documentation spine, documentation.html. + +2000-01-31 Scott Snyder + + * bits/istream.tcc (operator>>(istream&, string&)): Set failbit if + we don't extract any characters. + * testsuite/21_strings/inserters_extractors.cc (main): New tests. + +2000-01-31 Anders Widell + + * stl/bits/std_bitset.h (_M_do_left_shift): Handle case when shift + step is a multiple of the word size. + (_M_do_right_shift): Same. + * testsuite/23_containers/bitset_shift.cc: New file. + +2000-01-31 Nathan Myers + + * README (Documentation): Add path info, fix typos. + +2000-01-26 Benjamin Kosnik + + * bits/locale_facets.tcc (num_get::_M_extract): Add the freaking + crazy group checking for numpunct, for real this time. At some + point, the local variable __grp should probably get replaced a + char array, or something a bit more lightweight. + (num_get::do_get(bool)): Simplify. Don't set bool reference to + parsed value unless err isn't failbit. + (num_get::do_get(*)): Same, make consistent. + + Nathan Myers + Jim Parsons + * testsuite/27_io/istream_extractor_arith.cc (test08): Add + more grouping tests, tweak, scold, wine. + +2000-01-24 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_arith.cc (test07): Add + grouping tests. + * bits/locale_facets.tcc (num_get::_M_extract): Change to fix + grouping bugs. Only allow thousands_sep if _M_use_groupings is + true. + + via + * stl/bits/stl_vector.h (vector::_M_range_check): Throw + out_of_range instead of range_error. + +2000-01-17 Gabriel Dos Reis + + * bits/std_iomanip.h (setw): Fix typo. + +2000-01-14 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_arith.cc: Fix. + * bits/locale_facets.tcc (do_get(...void)): Change to strtoul. + * testsuite/27_io/istream_unformatted.cc (test04): Tweak. + +2000-01-14 Phil Edwards + + * docs/README.html: Reformat, more installation instructions. + * docs/gccrebuild.html: New file. + * docs/faq/index.html: Update for new testsuite output filenames. + * docs/faq/index.txt: Regenerate. + +2000-01-14 Phil Edwards + + * Makefile.am (rebuild-stamp, all-local): New targets. + * Makefile.in: Regenerated. + * acinclude.m4: New macro, GLIBCPP_ENABLE_RELIBGCC. + * aclocal.m4: Regenerated. + * configure.in: Call new macro. Also do some sanity checks + for combinations of --enable's that may not make sense. + * configure: Regenerated. + +2000-01-13 Benjamin Kosnik + + * testsuite/27_io/istream_extractor_arith.cc: Add checks for void*. + * bits/locale_facets.tcc (do_get::(...void)): Set fmtflags + correctly for hex-formatted input. + + * testsuite/27_io/istream_manip.cc (test01): Fix, as per setting + eofbit instead of eofbit | failbit. + * testsuite/27_io/istream_unformatted.cc (test04): Fix, as + ifstreams now are opened or'd with ios_base::in (as is correct). + * bits/fstream.tcc (filebuf::seekoff): Simplify. + * testsuite/27_io/ios_base_members_static.cc (test01): Fix thinko. + +2000-01-12 Benjamin Kosnik + + * bits/std_fstream.h: Add ios_base as a friend to basic_filebuf. + * bits/basic_file.h (basic_file::filepos_cur): Remove incorrect + (misleading) code. + (__basic_file::filepos_valid): Same. + (__basic_file::filepos_beg): Same. + (__baseic_file::get_fileno): New function. + * bits/ios_base.h (ios_base::sync_with_stdio): Implement, including + feedback from LWG 49. + * src/ios.cc: Move definition here. + * testsuite/27_io/ios_base_members_static.cc (test01): Add tests. + + * bits/std_sstream.h (_M_really_sync): Simplify argument list. Set + output part of internal buffer based on string size, so that + _M_out_end is set consistently with filebufs. Correct comments. + * bits/sstream.tcc (stringbuf::overflow): Update here too. + * testsuite/27_io/stringbuf.cc: Changes. + +2000-01-11 Benjamin Kosnik + + * bits/sstream.tcc (seekoff): Set based on end of written buffer, + not buffer size. + * testsuite/27_io/stringbuf.cc: Add tests for seekoff(end). + + * bits/std_fstream.h (ifstream::open): Add ios_base::in to openmode. + (ofstream::open): Add ios_base::out to openmode. + + * bits/locale_facets.tcc (_M_extract): Have consistency between + istream::sentry and extractors, where failbit | eofbit is + set. Don't change this, but instead change. . (do some formatting + tweaks.) + * bits/istream.tcc (istream::sentry): Only set eofbit. + +2000-01-10 Benjamin Kosnik + + * testsuite/27_io/istringstream_members.cc: New file. + +2000-01-09 Benjamin Kosnik + + * bits/istream.tcc (istream::sentry): Flush. + + * configure.in (AC_OUTPUT_COMMANDS): Simplify. + * configure: Regenerate. + * src/Makefile.am (generated_headers): Remove bits/c++config.h so + that make clean will not delete it. + * src/Makefile: Regenerate. + +2000-01-07 Phil Edwards + + * mkcheck.in: Use host-specific invocation of size(1); + GNU binutils isn't necessarily there (more's the pity). + +2000-01-06 Benjamin Kosnik + + * configure.in (LIBS): Better tests for solaris2.6. + * configure: Regenerate. + + + * bits/std_sstream.h: As per libstdc++20. + +2000-01-06 Benjamin Kosnik + + Break out configuration on solaris. + * configure.in (ctype_solaris): Add in bits for solaris2.6 and 2.7. + * config/solaris/ctype.cc: Delete and move to proper version. + * config/solaris/bits: Same. + * config/solaris/solaris2.5: Add this directory, with subdir bits + and file ctype.cc. Probably doesn't work. + * config/solaris/solaris2.6: Same. + * config/solaris/solaris2.7: Same, as per specs via Phil Edwards. + + * Makefile.am: Change paths to mkcheck. + * Makefile: Regenerate. + * configure.in (AC_OUTPUT_COMMANDS): Build mkcheck here. + * configure: Regenerate. + * src/Makefile.am (generated_headers): Add bits/c++config.h. + + * mkcheck: Now autogenerated by configure and renamed. . . + * mkcheck.in (INC_PATH): Add glue for ctype_include_dir. + Have longer-style dates. + Raja R Harinath + * mkcheck: Change path to #!/usr/clocal/bin/bash. + + * docs/README.html: Correct links, maybe. FAQ, install notes, and + general documentation need to be organized around each other, not + fight against each other. . . + +2000-01-04 Phil Edwards + Nicolai Josuttis + + * README: Add a note referring to README.html. + * docs/README.html: New file from Nicolai. + * docs/faq/index.html: Move "how to get a copy" to here. + * docs/gentop/footchunk.html: Update. + * docs/gentop/headchunk.html: New links according to + bkoz's idea for "How to..." stuff. + * docs/gentop/thanks: Actually put people here. + * docs/download.html: Regenerated. + * docs/index.html, docs/links.html, docs/mail.html, + docs/status.html, docs/thanks.html, docs/faq/index.txt: Ditto. + * docs/how.html: Ditto. (This file should go away soon.) + diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2001 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2001 new file mode 100644 index 000000000..e7d658feb --- /dev/null +++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2001 @@ -0,0 +1,6067 @@ +2001-12-31 Paolo Carlini + + * include/ext/iterator: Add #include , tweak. + * testsuite/ext/headers.cc: Add . + +2001-12-31 Paolo Carlini + + * include/backward/algo.h: Add two more using declarations. + * include/backward/iterator.h: Include , + add using declaration. + * include/ext/algorithm: Add #pragma GCC system_header. + +2001-12-31 Phil Edwards + + * include/bits/stl_bvector.h: Change calls to 3-argument distance() + into standard 2-argument version. + * include/bits/stl_deque.h: Likewise. + * include/bits/stl_tempbuf.h: Likewise. + * include/bits/stl_tree.h: Likewise. + * include/bits/stl_vector.h: Likewise. + * include/ext/stl_hashtable.h: Likewise. + * include/bits/stl_iterator_base_funcs.h: Move distance() extension... + * include/ext/iterator: to here. New file. + * include/Makefile.am (ext_headers): Add new file, alphabetize. + * include/Makefile.in: Regenerate. + +2001-12-31 Phil Edwards + + * include/bits/stl_deque.h: Doxygenate with initial/example hooks. + Clean up spacing and indentation. + +2001-12-31 Paolo Carlini + + * include/ext/slist: Move into __gnu_cxx, + tweak, add using declarations. + +2001-12-31 Paolo Carlini + + * include/ext/hash_map: Move into __gnu_cxx, + tweak, add using declarations. + * include/ext/hash_set: Ditto. + * include/ext/ropeimpl.h: Ditto. + * include/ext/stl_hash_fun.h: Ditto. + * include/ext/stl_hashtable.h: Ditto. + * include/ext/stl_rope.h: Ditto. + * src/ext-inst.cc: Tweak. + * testsuite/ext/rope.cc: Tweak. + +2001-12-31 Paolo Carlini + + * include/backward/algo.h: Include , + tweak using declarations. + +2001-12-29 Richard Henderson + + * config/os/hpux/bits/os_defines.h: Don't define __glibcpp_long_bits. + * config/os/hpux/bits/cpu_limits.h: New file. + * configure.target (CPULIMITSH): Use it. + +2001-12-28 Richard Henderson + + * config/cpu/ia64/bits/cpu_limits.h: New file. + * config/os/osf/osf5.0/bits/cpu_limits.h: New file. + * configure.target (CPULIMITSH): Use them. + +2001-12-28 Phil Edwards + + * include/bits/c++config: Move doxygen hook comment... + * docs/doxygen/doxygroups.cc: ...to here. + +2001-12-28 Phil Edwards + + PR libstdc++/2054 + * include/bits/stl_algo.h (lower_bound): Relax concept checks. + * testsuite/ext/concept_checks.cc: New file. + +2001-12-28 Paolo Carlini + + * include/bits/stl_algo.h (count returning void, + count_if returning void, __random_sample, random_sample, + random_sample_n, __is_heap, is_heap, is_sorted): Move to... + * include/ext/algorithm: ...here, new file. + * include/Makefile.am (ext_headers): Add new file. + * include/Makefile.in: Regenerate. + * testsuite/ext/headers.cc: Include . + +2001-12-28 Paolo Carlini + Nathan Myers + + * include/bits/basic_string.h (insert(__pos, __s, __n)): + Optimize by avoiding temporaries and working in-place when possible. + (insert(__pos1, __str)): Call insert(__pos1, __str, __pos2, __n). + (insert(__pos1, __str, __pos2, __n)): Call insert(__pos, __s, __n). + * testsuite/21_strings/insert.cc (test02): New testcases. + +2001-12-27 Phil Edwards + + * testsuite/testsuite_hooks.h (gnu_counting_struct): Add. + * testsuite/23_containers/deque_ctor.cc: New file. + +2001-12-27 Paolo Carlini + + * include/bits/locale_facets.tcc (collate::do_transform): + Adjust implicit typename. + * config/locale/messages_members_generic.h (messages::open, + messages::do_open, messages::do_get): Adjust implicit typename. + * config/locale/messages_members_gnu.h (messages::open, + messages::do_open, messages::do_get): Adjust Implicit typename. + * config/locale/messages_members_ieee_1003.1-200x.h (messages::open, + messages::do_open, messages::do_get): Adjust implicit typename. + +2001-12-27 Phil Edwards + + PR libstdc++/3829 + * src/misc-inst.cc: Many additional I/O-related instantiations. + * testsuite/27_io/instantiations.cc: New file. + +2001-12-26 Benjamin Kosnik + + * testsuite/24_iterators/insert_iterator.cc (test02): Add. + * testsuite/24_iterators/front_insert_iterator.cc (test02): Add. + * testsuite/24_iterators/back_insert_iterator.cc (test02): Add. + * testsuite/24_iterators/reverse_iterator.cc (test02): Add. + + * include/bits/stl_iterator.h (reverse_iterator): Uglify member + current to _M_current. + (back_insert_iterator): Uglify member container to _M_container. + (front_insert_iterator): Same. + (insert_iterator): Same. + +2001-12-25 Gabriel Dos Reis + + * include/bits/std_limits.h (__glibcpp_xxx_is_modulo): New + macros for signed types; default value is true. + (numeric_limits<>::is_modulo): Get value from corresponding + __glibcpp_xxx_is_modulo macro. + +2001-12-23 Jeffrey A Law + + * config/os/hpux/bits/os_defines.h: Do not include <_sys/inttypes.h>. + Twiddle return types for strtoll and strtoull to avoid using + intmax_t and uintmax-t. + +2001-12-22 Richard Henderson + + * configure.target (CPULIMITSH): Fix typo in alpha case. + +2001-12-22 Jeffrey A Law + + * config/os/hpux/bits/os_defines.h: Update to avoid #defines + for strtoll and strtoull. + +2001-12-21 Jeffrey A Law + + * config/os/hpux/bits/os_defines.h: Include + + * configure.target: Fix typo in hpux case. + +2001-12-21 Paolo Carlini + + * include/ext/stl_rope.h (_Rope_iterator): + Add local typedef to fix implicit typename problems. + +2001-12-19 Phil Edwards + + * docs/doxygen/Intro.3: New 'Allocators' module. + * docs/doxygen/TODO: Update. + * docs/doxygen/doxygroups.cc: Update. + * docs/doxygen/run_doxygen: Update. + + * include/bits/stl_alloc.h: Tweak doxygen hooks in comments. + * include/bits/std_memory.h: Doxygenate. + * include/bits/stl_iterator_base_types.h: Likewise. + * include/bits/stl_raw_storage_iter.h: Likewise. + * include/bits/stl_tempbuf.h: Likewise. + (get_temporary_buffer): Remove unused nonstandard overload. + * include/bits/stl_uninitialized.h: Likewise. + + * include/bits/stl_iterator_base_types.h (input_iterator, + output_iterator, forward_iterator, bidirectional_iterator, + random_access_iterator): Move old names... + * include/backward/iterator.h: ...to here. + * include/bits/stl_bvector.h: Update. + * include/ext/stl_rope.h: Update. + +2001-12-19 Phil Edwards + + * docs/html/configopts.html: Describe recent options. + * docs/html/documentation.html: Point to new doxygen tarballs. + * docs/html/install.html: Brief updates. + * docs/html/17_intro/RELEASE-NOTES: Remove weird control character. + * docs/html/ext/howto.html: Fix typos, describe filebuf::fd(). + * docs/html/faq/index.html: Update for 3.0.95. + * docs/html/faq/index.txt: Regenerate. + +2001-12-19 David Billinghurst + + libstdc++-v3/5148 + * testsuite/lib/libstdc++-v3-dg.exp: Append .exe to + executable filenames + +2001-12-18 Benjamin Kosnik + + * docs/html/17_intro/TODO: Update. + * docs/html/17_intro/RELEASE-NOTES: Edits, update. + * README: Edit for clarity, update to reflect current directory + structure. + +2001-12-18 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Extended checking before + enabling gnu model. + * aclocal.m4: Rebuild. + * configure: Rebuild. + +2001-12-18 Paolo Carlini + Nathan Myers + + * include/bits/basic_string.h (assign(__str, __pos, __n)): + Call assign(__s, __n). + (assign(__s, __n)): Terminate the string with _S_terminal. + +2001-12-17 Benjamin Kosnik + + * include/bits/std_limits.h (__glibcpp_long_double_is_bounded): + Set to true, like float and double. + +2001-12-17 David Billinghurst + + libstdc++/5136 + * testsuite/lib/prune.exp: New file + * testsuite/lib/libstdc++-v3-dg.exp: Use it + +2001-12-17 Phil Edwards + + * include/bits/basic_file.h (__basic_file::fd): New function. + * config/io/basic_file_stdio.h (__basic_file::fd): Define. + * include/bits/std_fstream.h (basic_filebuf::fd): New function. + * include/bits/fstream.tcc (basic_filebuf::fd): Define. + * testsuite/27_io/filebuf_members.cc (test_02): New test. + +2001-12-16 Nathan Sidwell + + * po/Makefile.am (.po.mo): Use POSIXLY_CORRECT argument ordering. + * po/Makefile.in: Regenerated. + +2001-12-16 Paolo Carlini + + * testsuite/21_strings/assign.cc (test01): Add tests. + +2001-12-15 Paolo Carlini + Nathan Myers + + * include/bits/basic_string.h + (assign(__str, __pos, __n), assign(__s, __n)): Optimize + by avoiding unnecessary temporaries. + (assign(__s)): Call assign(__s, __n). + * include/bits/basic_string.tcc (_M_replace_safe): Adjust comment. + * include/bits/std_string.h: include stl_function.h. + * testsuite/21_strings/assign.cc (test02, test03): New tests. + +2001-12-15 Benjamin Kosnik + + * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Enable gnu locale model + on linux by default. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2001-12-14 Benjamin Kosnik + + Clean up initialization and simplify caching of underlying "C" + default locale objects. + * src/localename.cc (locale::_Impl::_Impl(string, size_t): + Unconditionally create __clocale object for all named locales, + including "C" and "POSIX". + * config/locale/c_locale_generic.cc + (locale::facet::_S_create_c_locale): Always set __cloc to zero. + * config/locale/c_locale_gnu.cc: Always delete. + * include/bits/localefwd.h (locale::facet::_S_c_locale): New. + * src/locale.cc (locale::classic()): Initialize + locale::facet::_S_c_locale. + (locale::facet::_S_c_locale): Define. + + * include/bits/locale_facets.h: Add ctype_byname ctor + specialization. + * src/locale.cc: Add definition here. + * config/os/gnu-linux/bits/ctype_inline.h: Tweak. + * config/os/gnu-linux/bits/ctype_noninline.h: Adjust initializations. + * include/bits/locale_facets.h (ctype::_M_c_locale_ctype): Add. + Adjust ctors, dtors. + (ctype::_M_toupper): Remove const&. + (ctype::_M_tolower): Remove const&. + (ctype::_M_ctable): Remove const&. + + * include/bits/locale_facets.h (collate): Clean up initialization + of _M_c_locale_collate in ctors and dtors. + * config/locale/collate_members_gnu.cc: Always use extended + functions. + + * include/bits/locale_facets.h (messages): Clean up inits in ctor/dtor. + (messages_byname): Same. + * config/locale/messages_members_generic.h (messages::~messages): + Remove. + * config/locale/messages_members_gnu.h: Same. + + * include/bits/localefwd.h: Clean. Move dtor definitions to + * src/locale.cc: Here. + * testsuite/22_locale/facet.cc: Fix spelling. + + Named locale support for ctype. + * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add variable + ctype_members_* bits. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * src/Makefile.am (sources): Add ctype.cc. + * src/Makefile.in: Regenerate. + * config/locale/ctype_members_generic.cc: New file. + * config/locale/ctype_members_gnu.cc: New file. + * src/locale.cc: Remove ctype definitions. + +2001-12-13 Roger Sayle + + * acconfig.h: Test for __builtin_sqrt instead of + __builtin_fsqrt. + * acinclude.m4: Same. + * include/c_shadow/bits/std_cmath.h: Same. + * aclocal.m4: Regenerated. + * config.h.in: Regenerated. + * configure: Regenerated. + +2001-12-13 Phil Edwards + + * docs/html/ext/howto.html: Fix typos. + +2001-12-13 Benjamin Kosnik + + libstdc++/3679 + * src/locale.cc (locale::locale(const char*)): Deal with locales + named "". + * testsuite/22_locale/ctor_copy_dtor.cc (test01): Modify. + +2001-12-12 Paolo Carlini + + * include/ext/ropeimpl.h (rope::_S_leaf_concat_char_iter, + _S_destr_leaf_concat_char_iter, _S_tree_concat, _S_concat_char_iter, + _S_destr_concat_char_iter, _S_concat, _S_substring, _S_balance) + : Adjust implicit typename. + * include/ext/stl_rope.h (_Rope_iterator::operator=, rope::npos): + Adjust implicit typename. + * testsuite/27_io/streambuf.cc: Adjust implicit typename. + +2001-12-12 Benjamin Kosnik + + Named locale support for ctype. + * config/locale/c_locale_gnu.h (_GLIBCPP_C_LOCALE_GNU): New. + * config/os/gnu-linux/bits/ctype_noninline.h (ctype): Add + definitions for alternate constructor. + * config/os/solaris/solaris2.7/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same. + * config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same. + * config/os/newlib/bits/ctype_noninline.h (ctype): Same. + * config/os/irix/irix6.5/bits/ctype_noninline.h (ctype): Same. + * config/os/irix/irix5.2/bits/ctype_noninline.h (ctype): Same. + * config/os/hpux/bits/ctype_noninline.h (ctype): Same. + * config/os/generic/bits/ctype_noninline.h (ctype): Same. + * config/os/djgpp/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/netbsd/bits/ctype_noninline.h (ctype): Same. + * config/os/bsd/freebsd/bits/ctype_noninline.h (ctype): Same. + * config/os/aix/bits/ctype_noninline.h (ctype): Same. + * include/bits/locale_facets.h (ctype<_CharT>): Remove dummy + definitions for all virtual functions. These are now explicitly + undefined for non-required factets, ie any non-char, non-wchar_t + instantiations. + * src/localename.cc (locale::_Impl::_Impl(string, size_t): Named + locales use alternate constructor for ctype facet. + * include/bits/locale_facets.h (ctype::ctype(__c_locale, const + mask*, bool, size_t): Add. + (ctype::ctype(__c_locale, size_t): Add. + * src/locale.cc (ctype::ctype(__c_locale, size_t)): Add + definition. + + * testsuite/22_locale/ctype_members_char.cc (test02): Add, mark + XFAIL for non-gnu locale models. + +2001-12-12 Philip Martin + Ross Smith + Paolo Carlini + + libstdc++/5045 + * include/bits/std_limits.h (defines, numeric_limits::digits10): + Fix digits10 values for integral types. + * include/bits/locale_facets.tcc (num_get::do_get for integral types): + Tweak _M_extract_int call. + * testsuite/27_io/istream_extractor_arith.cc (test13, test12_aux): + Tweak overflowing number of digits. + * testsuite/18_support/numeric_limits.cc (test03): New testcase. + +2001-12-11 Benjamin Kosnik + + * config/os/generic/bits/ctype_inline.h: Remove spaces. + * config/os/gnu-linux/bits/ctype_noninline.h: Same. + * include/bits/locale_facets.h (__num_base): Move double data + members to first in class. + * include/bits/locale_facets.tcc: Re-arrange, tweak. + * src/locale.cc: Clean. + *include/bits/stl_vector.h: Space typedefs. + +2001-12-11 Phil Edwards + + * testsuite/ext/allocators.cc: New file. + +2001-12-11 Jason Merrill + + * include/bits/locale_facets.tcc (_M_extract_int): Avoid + uninitialized warning. + +2001-12-11 Loren Rittle + + * config/cpu/sparc/sparc32/bits/atomicity.h + (__Atomicity_lock<0>::_S_atomicity_lock): Add. + +2001-12-10 Paolo Carlini + + * include/bits/basic_string.tcc (_M_replace_safe): Fix typos. + * include/bits/basic_string.h: Fix typos. + +2001-12-10 Paolo Carlini + Nathan Myers + + * include/bits/basic_string.tcc (_M_replace_safe): New function. + (_M_replace(input_iterator_tag), append members): Use it. + (_M_replace(forward_iterator_tag)): Remove. + * include/bits/basic_string.h: Adjust declarations. + * src/string-inst.cc: Adjust declarations. + +2001-12-09 Benjamin Kosnik + Philip Martin + + * include/bits/locale_facets.h (__num_base::_S_scale_hex): Add. + (__num_base::_S_scale_oct): Add. + * include/bits/locale_facets.tcc (_M_extract_int): Use them. + * src/locale.cc: Add definitions. + * testsuite/27_io/istream_extractor_arith.cc (main): Call test13. + + * testsuite/testsuite_hooks.h: Remove duplicate VERIFY define. + +2001-12-07 Nathan Myers + Loren Rittle + + libstdc++/5037 + * config/cpu/sparc/sparc32/bits/atomicity.h + (struct __Atomicity_lock<__inst>): Add. + (__Atomicity_lock<__inst>::_S_atomicity_lock): Add. + (__exchange_and_add): Use __Atomicity_lock<0>::_S_atomicity_lock + instead of lock local to static function. + (__atomic_add): Likewise. + +2001-12-07 Phil Edwards + + * src/globals.cc: Remove __GTHREADS guard. + +2001-12-07 Paolo Carlini + + * include/bits/locale_facets.tcc (num_put::_M_convert_float): + Extend comment, reduce __cs_size for non-fixed outputs. + +2001-12-07 Paolo Carlini + + * include/bits/basic_string.tcc (_M_mutate): Fix typo + in the previous check in. + +2001-12-06 Paolo Carlini + Loren J. Rittle + + * include/bits/basic_string.tcc (_M_mutate, _M_clone): Implement + exponential growth policy to meet linear amortized time + requirements of the standard. + (_S_create): Adjust comment. + +2001-12-06 Benjamin Kosnik + + libstdc++/3720 + * include/bits/locale_facets.tcc (num_put): Clean. + (num_get::_M_extract_float): Change argument to string. + (num_get::do_get(float)): Fixup. + (num_get::do_get(double)): Same. + (num_get::do_get(long double)): Same. + (num_get::_M_extract_int): Add maximum length parameter, __max. + (num_get::_M_extract_float): Correct zeros, use string. + * include/bits/locale_facets.h (num_get::_M_extract_float): Change + declaration here. + * src/locale.cc (__num_base::_S_atoms): Remove x, X. + * testsuite/27_io/istream_extractor_arith.cc (test13): Add. + +2001-12-06 Philip Martin + + * testsuite/27_io/istream_extractor_arith.cc (test12): Add + tests for excess input digits. + +2001-12-06 Phil Edwards + + * include/bits/std_bitset.h: Use GLIBCPP in multiple-inclusion guard. + * include/bits/stl_algo.h: Likewise. + * include/bits/stl_algobase.h: Likewise. + * include/bits/stl_bvector.h: Likewise. + * include/bits/stl_deque.h: Likewise. + * include/bits/stl_function.h: Likewise. + * include/bits/stl_iterator.h: Likewise. + * include/bits/stl_iterator_base_funcs.h: Likewise. + * include/bits/stl_iterator_base_types.h: Likewise. + * include/bits/stl_list.h: Likewise. + * include/bits/stl_multimap.h: Likewise. + * include/bits/stl_multiset.h: Likewise. + * include/bits/stl_pair.h: Likewise. + * include/bits/stl_queue.h: Likewise. + * include/bits/stl_set.h: Likewise. + * include/bits/stl_stack.h: Likewise. + * include/bits/stl_tempbuf.h: Likewise. + * include/bits/stl_tree.h: Likewise. + * include/bits/stl_vector.h: Likewise. + + * include/bits/stl_alloc.h: Use our own multiple inclusion guards. + Doxygenate more comments. Correct historical artifacts in comments. + (alloc, single_alloc): Uglify non-standard names. + (__default_alloc_template::_NFREELISTS): Calculate from other + parameters. + (__default_alloc_template::_S_free_list): Remove SunPro workaround. + (__default_alloc_template::_Lock): Mark as "unused". + * include/backward/alloc.h: Update. + * include/bits/stl_bvector.h: Likewise. + * include/ext/ropeimpl.h: Likewise. + * include/ext/stl_hashtable.h: Likewise. + +2001-12-05 Benjamin Kosnik + + DR/282 + * include/bits/locale_facets.tcc (num_put::_M_widen_float): Add + grouping to floating point types. + * testsuite/27_io/ostream_inserter_arith.cc (test02): Add test. + +2001-12-04 Paolo Carlini + + libstdc++/4402 + * testsuite/27_io/ostream_inserter_arith.cc (test02): Add testcase + from the PR. + * include/bits/locale_facets.tcc (num_put::_M_convert_float): + Deal properly with long ios_base::fixed floats. + (num_put::_M_widen_float): use + __len in __builtin_alloca call. + +2001-12-04 Benjamin Kosnik + + * src/Makefile.am (sources): Add ext-inst.cc. + * src/Makefile.in: Regenerate. + * src/ext-inst.cc: New file. + * include/bits/stl_threads.h: Format. + * src/globals.cc: Add instantiation for _S_swap_lock. + + * testsuite/18_support/numeric_limits.cc: Add numeric_limits + instantiation. + +2001-12-04 John David Anglin + + * testsuite/22_locale/numpunct_members_wchar_t.cc: Only compile + and execute test01 if _GLIBCPP_USE_WCHAR_T is defined. + * testsuite/26_numerics/complex_inserters_extractors.cc: Provide + for explicit instantiation of class std::basic_string >. + +2001-12-03 Benjamin Kosnik + + * testsuite/22_locale/collate.cc: Compile-only. + * testsuite/22_locale/time_get.cc: Same. + * testsuite/22_locale/time_put.cc: Same. + * testsuite/22_locale/numpunct.cc: Same. + * testsuite/22_locale/num_put.cc: Same. + * testsuite/22_locale/num_get.cc: Same. + * testsuite/22_locale/moneypunct.cc: Same. + * testsuite/22_locale/money_get.cc: Same. + * testsuite/22_locale/messages.cc: Same. + * testsuite/22_locale/ctype.cc: Same. + +2001-12-03 Benjamin Kosnik + + * src/string-inst.cc (string::_Rep::_S_terminal): Add static data + member instantiations. + +2001-12-03 Steve Ellcey + + * libstdc++-v3/configure.in: Add support for hpux cross compiles, + combine common linux/hpux/generic cross compile support to reduce + redundent lines. + * libstdc++-v3/configure: Regenerate. + +2001-12-03 Loren J. Rittle + + * docs/html/ext/howto.html: Update commentary. + * include/bits/c++config: Update threading configuration comment. + (__STL_GTHREADS): Remove macro definition. + (__STL_THREADS): Likewise. + * include/bits/stl_threads.h: Leave only the configuration + path which had been guarded by __STL_GTHREADS. Remove all + guards related to __STL_GTHREADS, __STL_SGI_THREADS, + __STL_PTHREADS, __STL_UITHREADS and __STL_WIN32THREADS. + * include/bits/stl_alloc.h: Leave only the configuration path + which had been guarded by __STL_THREADS. Remove configuration + path and guards for __STL_SGI_THREADS. + (__NODE_ALLOCATOR_THREADS): Remove macro definition. Unroll its use. + (__NODE_ALLOCATOR_LOCK): Likewise. + (__NODE_ALLOCATOR_UNLOCK): Likewise. + (_NOTHREADS): Remove guards related to macro. + * include/ext/stl_rope.h: Remove configuration path and guards + for __STL_SGI_THREADS. + * src/stl-inst.cc: Remove use of __NODE_ALLOCATOR_THREADS. + +2001-12-02 Phil Edwards + + * docs/html/ext/howto.html: Update list of implemented DRs. + * docs/html/ext/lwg-active.html: Import R20 from upstream. + * docs/html/ext/lwg-defects.html: Import R20 from upstream. + +2001-11-30 Benjamin Kosnik + + libstdc++/3150 + DR/266 + * libsupc++/exception (bad_exception::~bad_exception()): Remove + declaration. + * libsupc++/new (bad_alloc::~bad_alloc()): Remove. + * libsupc++/typeinfo (bad_cast::~bad_cast()): Remove. + (bad_typeid::~bad_typeid()): Remove. + * libsupc++/tinfo.cc (bad_cast::~bad_cast()): Remove definition. + (bad_typeid::~bad_typeid()): Same. + * libsupc++/new_handler.cc (bad_alloc::~bad_alloc()): Same. + * libsupc++/eh_exception.cc (bad_exception::~bad_exception()): Same. + + * include/bits/std_iomanip.h: Tweak. + +2001-11-29 Paolo Carlini + + libstdc++/3655 + * include/bits/locale_facets.tcc (__pad): Add bool parameter to + correctly pad internal-adjusted const char*-type objects. + * include/bits/locale_facts.tcc (num_put::_M_insert): Update call. + * include/bits/ostream.tcc (operator<<(_CharT , char, const + _CharT*, const char*, const basic_string&): Update calls. + * src/locale-inst.tcc: Update declarations. + * testsuite/27_io/ostream_inserter_arith.cc (test04): Add test. + +2001-11-29 Phil Edwards + + * docs/html/ext/howto.html: Finish allocator notes (inst and 3.0). + +2001-11-29 Benjamin Kosnik + + * include/bits/locale_facets.tcc (num_get::do_get(long double)): + Fix __traits_type typo. + +2001-11-28 Paolo Carlini + + * include/bits/locale_facets.tcc (__pad): Correctly pad + internal-adjusted hex numbers. + * testsuite/27_io/ostream_inserter_arith.cc: Add testcase. + +2001-11-28 Paolo Carlini + Loren J. Rittle + + * include/bits/basic_string.h + (basic_string::_Rep::__default_excess, _S_excess_slop): + Unused, remove. + * include/bits/basic_string.tcc: Remove dead code. + * include/bits/c++config: Remove comment. + +2001-11-28 Benjamin Kosnik + Jakub Jelinek + + * config/locale/moneypunct_members_gnu.cc + (moneypunct::_M_initialize_moneypunct): Correctly cast + for ia64, others. + * config/locale/numpunct_members_gnu.cc + (numpunct::_M_initialize_numpunct): Same. + +2001-11-27 Benjamin Kosnik + + * include/bits/locale_facets.tcc: Formatting tweaks. + + * testsuite/23_containers/map_operators.cc: Don't xfail. + * testsuite/23_containers/set_operators.cc: Same. + * testsuite/backward/header_iterator_h.cc: Pass in -Wno-deprecated. + * testsuite/backward/header_deque_h.cc: Same. + +2001-11-27 Loren J. Rittle + Paolo Carlini + + * include/bits/basic_string.tcc (basic_string::_Rep::_S_create): + Enforce allocation size blocking policy to reduce + fragmentation and enhance performance with common malloc + implementations. + +2001-11-27 Benjamin Kosnik + + Numeric facets cleanup. + * include/bits/locale_facets.h (__num_base::_S_atoms): Add, remove + + and - signs. + (__num_base::_M_zero): Add + (__num_base::_M_e): Add. + (__num_base::_M_E): Add. + * include/bits/locale_facets.tcc (num_get::_M_extract): Remove. + (num_get::_M_extract_float): New. + (num_get::_M_extract_int): New. + * src/locale.cc (num_get::_M_extract): Remove. + + * include/bits/locale_facets.tcc (num_put::_M_insert_float): + Simplify, use _M_insert. + (num_put::do_put(bool)): Simplify, remove __pad. + (__pad): Remove. + (__pad_output): Change to __pad. + * include/bits/ostream.tcc: And here. + * src/locale-inst: Remove instantiations. + + * include/bits/locale_facets.h: Move helper functions in to class + num_put. + (num_put::_M_insert_float): Same, for __output_integer. + (num_put::_M_insert_int): Same, for __output_float. + (num_put::_M_insert): New. + (__num_base): Add. + (__num_base::_S_format_float): Move + __build_float_format into class __num_base. + (__num_base::_S_format_int): Move __build_int_format into class + __num_base. + * include/bits/locale_facets.tcc (__group_digits): Change to + (__add_grouping): This. + * src/locale-inst.cc: And here. Tweak instantiations. + * src/misc-inst.cc: Remove instantiations. + + * include/bits/ostream.tcc (__pad_char): Rename, adjust inserters + for new calling conventions, move to... + * include/bits/locale_facets.tcc (__pad_output): Here. Adjust + signature to make it useful for both ostream and num_put. + (__pad_numeric): Remove. + * src/misc-inst.cc: Remove instantiations. + * src/locale-inst.cc: Same. + + * include/bits/locale_facets.h (_Numeric_get): Remove. + (_Numeric_put): Remove. + (num_get::get(short)): Remove. + (num_get::get(int)): Remove. + (num_get::do_get(short)): Remove. + (num_get::do_get(int)): Remove. + * include/bits/istream.tcc (istream::operator>>(short)): Fix as + per DR 118. + (istream::operator>>(int)): Same. + + * include/bits/locale_facets.h (_Format_cache): Remove. + * include/bits/locale_facets.tcc: Same. + * src/locale.cc: Same. + * src/locale-inst.cc: Same. + * include/bits/ostream.tcc: Same. + * src/ios.cc (ios_base::imbue): Remove here as well. + + * testsuite/22_locale/num_get.cc: New file. + * testsuite/22_locale/num_get_members_char.cc: New file. + * testsuite/22_locale/num_get_members_wchar_t.cc: New. + * testsuite/22_locale/numpunct_members_wchar_t.cc: New file. + * testsuite/22_locale/num_put.cc: New file. + * testsuite/22_locale/num_put_members_char.cc: New file. + * testsuite/22_locale/num_put_members_wchar_t.cc: New file. + * testsuite/27_io/ostream_inserter_arith.cc: Fix. + * testsuite/27_io/istream_extractor_arith.cc: Fix. + +2001-11-27 Phil Edwards + + * docs/html/explanations.html: New section, empty for now. + * docs/html/17_intro/howto.html: Cleanup. Move unrelated link... + * docs/html/23_containers/howto.html: ...to here. Break up and + rewrap threading discussion to emphasize warning. Move malloc text... + * docs/html/ext/howto.html: ...to here. New section. Describe + allocators and __USE_MALLOC effects. + * docs/html/ext/sgiexts.html: Mention their code. + +2001-11-24 Joseph S. Myers + + * docs/doxygen/maint.cfg.in, docs/doxygen/user.cfg.in, + docs/html/27_io/binary_iostreams_kuehl.txt: Revert previous + changes. + +2001-11-23 Phil Edwards + + * Makefile.am (doxygen-maint): The script isn't executable in CVS. + * Makefile.in: Regenerated. + * docs/doxygen/TODO: New file listing doxygen work to be done. + * docs/doxygen/run_doxygen: Fix up man pages. + * docs/doxygen/user.cfg.in: Insert maint-only toggles. + * docs/doxygen/maint.cfg.in: Copy from user.cfg and turn toggles on. + * include/bits/stl_construct.h: Use new hooks for internal functions. + + * docs/html/17_intro/TODO: Small updates. + * docs/html/faq/index.html: Likewise. + * docs/html/faq/index.txt: Regenerated. + + * include/bits/stl_alloc.h: Doxygenate, reindent comments, remove + SGI-isms and wrappers. + (simple_alloc, debug_alloc): Uglify class names. + (__default_alloc_template): Uglify "threads" template parameter and + update corresponding macros. + * include/backward/alloc.h: Bring up to date. + +2001-11-23 Jason Merrill + + * src/vterminate.cc (__verbose_terminate_handler): Add leading + underscores. + +2001-11-23 Joseph S. Myers + + * ChangeLog, docs/doxygen/maint.cfg.in, docs/doxygen/user.cfg.in, + docs/doxygen/doxygroups.cc, docs/doxygen/Intro.3, + docs/html/17_intro/BUGS, docs/html/17_intro/C++STYLE, + docs/html/17_intro/CHECKLIST, docs/html/17_intro/DESIGN, + docs/html/17_intro/howto.html, docs/html/17_intro/porting.html, + docs/html/17_intro/porting.texi, docs/html/18_support/howto.html, + docs/html/19_diagnostics/howto.html, docs/html/20_util/howto.html, + docs/html/21_strings/howto.html, + docs/html/23_containers/howto.html, + docs/html/26_numerics/howto.html, docs/html/27_io/howto.html, + docs/html/27_io/binary_iostreams_kuehl.txt, + docs/html/ext/sgiexts.html, docs/html/faq/index.html, + docs/html/faq/index.txt, testsuite/24_iterators/iterator.cc, + include/bits/basic_file.h, include/bits/locale_facets.h, + include/bits/locale_facets.tcc, include/bits/std_sstream.h, + include/ext/ropeimpl.h, include/ext/stl_rope.h, + libsupc++/tinfo.cc, libsupc++/cxxabi.h, libsupc++/typeinfo, + libsupc++/eh_throw.cc, acinclude.m4, aclocal.m4, configure, + configure.target, ChangeLog-2000: Fix spelling errors. + + * config/locale/moneypunct_members_gnu.cc, + include/bits/locale_facets.h: Fix spelling errors. + +2001-11-22 Stephen M. Webb + + * testsuite/23_containers/list_capacity.cc: New file. + * testsuite/23_containers/list_ctor.cc: New file. + * testsuite/23_containers/list_modifiers.cc: New file. + * testsuite/23_containers/list_operators.cc: New file. + +2001-11-22 Stephen M. Webb + + * include/bits/stl_list.h: Reformatted according to C++STYLE rules. + (size): Replaced nonstandard distance() call with the standard one. + (transfer): Uglified to _M_transfer. + +2001-11-21 Paolo Carlini + + PR libstdc++/4548 + * include/bits/basic_string.tcc (basic_string::reserve): Never shrink + below the current size. + * testsuite/21_strings/capacity.cc (test02): Add test. + +2001-11-19 Phil Edwards + + * docs/doxygen/Intro.3: More notes. + * docs/doxygen/style.css: Update to default style from Doxygen 1.2.10. + * include/bits/stl_algobase.h: Add doxygen hooks for functions. + * include/ext/hash_map: Add @file hook. + * include/ext/hash_set: Likewise. + * include/ext/rope: Likewise. + * include/ext/ropeimpl.h: Likewise. + * include/ext/slist: Likewise. + * include/ext/stl_hash_fun.h: Likewise. + * include/ext/stl_hashtable.h: Likewise. + * include/ext/stl_rope.h: Likewise. + + * docs/html/17_intro/license.html: Remove "experimental" sentence. + * docs/html/19_diagnostics/howto.html: Document new verbose + terminate handler. + * testsuite/27_io/filebuf.cc: Fix comment, move tweakable parameter + to more visible (closer to description) position. + + * libsupc++/eh_type.cc: Formatting tweak. + * libsupc++/exception: Likewise. + * src/vterminate.cc: Likewise. + + * docs/html/17_intro/porting.html: Regenerate. + * docs/html/faq/index.txt: Regenerate. + +2001-11-18 Jason Merrill + + * libsupc++/eh_personality.cc (__cxa_call_unexpected): Take void*. + * libsupc++/eh_catch.cc (__cxa_begin_catch): Likewise. + * libsupc++/unwind-cxx.h: Adjust. + * src/Makefile.am (strstream.o): Pass -Wno-deprecated. + + * libsupc++/eh_type.cc (__cxa_current_exception_type): New file. + * libsupc++/cxxabi.h: Declare it. + * libsupc++/Makefile.am (sources): Add it. + * src/vterminate.cc (verbose_terminate_handler): New file. + * libsupc++/exception: Declare it. + * src/Makefile.am (sources): Add it. + + * src/Makefile.am (VPATH): Check the src directory before the top one. + +2001-11-16 Paolo Carlini + + * include/bits/stl_deque.h (deque::erase()): Fix memory leak. + +2001-11-16 Loren J. Rittle + + * docs/html/17_intro/howto.html (Thread-safety): Rename + section to ``The Standard C++ library and multithreading'' and + update information based on recent mailing list traffic. Move + all discussion of __USE_MALLOC to... + * docs/html/23_containers/howto.html (Containers and multithreading): + ...here and rework it based on recent mailing list traffic. + +2001-11-15 Loren J. Rittle + + * docs/html/faq/index.html (Is libstdc++-v3 thread-safe?): Clarify + wording. + +2001-11-15 + Loren J. Rittle + + libstc++/4219 + * include/bits/stl_alloc.h (alloc): Update to use __mem_interface. + (single_client_alloc): Likewise. + +2001-11-08 Danny Smith + + * configure.target: Add os_include_dir for mingw32* target. + * docs/html/17_intro/porting.texi: Mention mingw32 as target benefiting + from _GLIBCPP_AVOID_FSEEK. + * config/os/mingw32/bits/ctype_base.h: New file. + * config/os/mingw32/bits/ctype_inline.h: New file. + * config/os/mingw32/bits/ctype_noninline.h: New file. + * config/os/mingw32/bits/os_defines.h: New file. + +2001-11-07 Nathan Myers + + * docs/html/faq/index.html (5.8): New entry on ABIs. + * docs/html/faq/index.txt: Regenerate. + +2001-11-07 Phil Edwards + + * docs/html/faq/index.html: Explain libsupc++, mention 'long long' + bugfixes on Solaris. + * docs/html/faq/index.txt: Regenerate. + +2001-11-06 Phil Edwards + + * acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Run the test in + LANG_CPLUSPLUS mode. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2001-11-05 Phil Edwards + + * porting.texi: Move... + * docs/html/17_intro/porting.texi: ...to here. + * docs/html/Makefile: Add rule to rebuild... + * docs/html/17_intro/porting.html: ...this. New file. + +2001-11-05 Felix Natter + + * docs/html/17_intro/porting-howto.xml: check in v0.9.4 + * docs/html/17_intro/porting-howto.html: regenerate + +2001-11-02 Loren J. Rittle + + * include/bits/stl_threads.h (_Atomic_swap): Only enable path + when platform supports __GTHREAD_MUTEX_INIT. + +2001-11-02 Phil Edwards + + * acconfig.h: Update comments. + * acinclude.m4 (GLIBCPP_ENABLE_C99): Move strtoll, strtoull tests... + (GLIBCPP_ENABLE_LONG_LONG): ...to here. Don't check enable_c99. + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + * configure: Regenerate. + + * include/bits/boost_concept_check.h: Unconditionally compile uses + of 'long long' which require only compiler support, not C lib support. + * include/bits/cpp_type_traits.h: Likewise. + * include/bits/std_limits.h: Likewise. + * include/bits/type_traits.h: Likewise. + * src/concept-inst.cc: Likewise. + * src/limits.cc: Likewise. + * include/c_shadow/stdlib.h: Compile conditionally on _GLIBCPP_USE_C99 + instead of _GLIBCPP_USE_LONG_LONG. + * include/c_shadow/bits/std_cstdlib.h: Likewise. + +2001-11-02 Phil Edwards + + * config/io/c_io_stdio.h: Correct grammar in comments. + * docs/doxygen/Intro.3: Expand "top-level" man page. + * docs/doxygen/doxygroups.cc: New module definitions (comments). + * docs/doxygen/mainpage.doxy: Tweaks. + * docs/doxygen/run_doxygen: Update Doxygen version, massage man pages. + + Add @file hooks so that headers are considered to be documented. + * include/bits/basic_ios.h, include/bits/basic_file.h, + include/bits/basic_string.h, include/bits/boost_concept_check.h, + include/bits/char_traits.h, include/bits/codecvt.h, + include/bits/concept_check.h, include/bits/cpp_type_traits.h, + include/bits/fpos.h, include/bits/gslice.h, include/bits/gslice_array.h, + include/bits/indirect_array.h, include/bits/ios_base.h, + include/bits/locale_facets.h, include/bits/localefwd.h, + include/bits/mask_array.h, include/bits/pthread_allocimpl.h, + include/bits/slice.h, include/bits/slice_array.h, + include/bits/std_algorithm.h, include/bits/std_bitset.h, + include/bits/std_complex.h, include/bits/std_deque.h, + include/bits/std_fstream.h, include/bits/std_functional.h, + include/bits/std_iomanip.h, include/bits/std_ios.h, + include/bits/std_iosfwd.h, include/bits/std_iostream.h, + include/bits/std_istream.h, include/bits/std_iterator.h, + include/bits/std_limits.h, include/bits/std_list.h, + include/bits/std_locale.h, include/bits/std_map.h, + include/bits/std_memory.h, include/bits/std_numeric.h, + include/bits/std_ostream.h, include/bits/std_queue.h, + include/bits/std_set.h, include/bits/std_sstream.h, + include/bits/std_stack.h, include/bits/std_streambuf.h, + include/bits/std_string.h, include/bits/std_utility.h, + include/bits/std_valarray.h, include/bits/std_vector.h, + include/bits/stl_algo.h, include/bits/stl_alloc.h, + include/bits/stl_bvector.h, include/bits/stl_construct.h, + include/bits/stl_deque.h, include/bits/stl_heap.h, + include/bits/stl_iterator.h, include/bits/stl_iterator_base_funcs.h, + include/bits/stl_iterator_base_types.h, include/bits/stl_list.h, + include/bits/stl_map.h, include/bits/stl_multimap.h, + include/bits/stl_multiset.h, include/bits/stl_numeric.h, + include/bits/stl_pair.h, include/bits/stl_pthread_alloc.h, + include/bits/stl_queue.h, include/bits/stl_raw_storage_iter.h, + include/bits/stl_relops.h, include/bits/stl_set.h, + include/bits/stl_stack.h, include/bits/stl_tempbuf.h, + include/bits/stl_threads.h, include/bits/stl_tree.h, + include/bits/stl_uninitialized.h, include/bits/stl_vector.h, + include/bits/stream_iterator.h, include/bits/streambuf_iterator.h, + include/bits/stringfwd.h, include/bits/type_traits.h, + include/bits/valarray_array.h, include/bits/valarray_meta.h: + Add hooks, tweak comments only. + + * include/bits/stl_algobase.h (swap, min, iter_swap): Also + document these functions. + * include/bits/stl_function.h: Tweak link comments. + +2001-11-01 Paolo Carlini + Benjamin Kosnik + + * testsuite/27_io/ios_manip_fmtflags.cc: Fix for non-interactive + output. + * include/bits/locale_facets.tcc (num_put::do_put(bool)): Fix. + +2001-11-01 Egor Duda + + * config/os/newlib/bits/ctype_noninline.h + (ctype::do_toupper(char __c)): Check for proper character class. + (ctype::do_tolower(char __c)): Ditto. + +2001-11-01 Phil Edwards + + * acinclude.m4: Fix spacing. + (GLIBCPP_ENABLE_CONCEPT_CHECKS): New macro. + * configure.in: Call here. + * acconfig.h: Add _GLIBCPP_CONCEPT_CHECKS. + * include/bits/boost_concept_check.h: Fix headers. + (__function_requires): Make inline. + * include/bits/c++config (_GLIBCPP_CONCEPT_CHECKS): Remove. + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + * configure: Regenerate. + + Move trailing ';' inside macro, PR libstdc++/3666. + * include/bits/concept_check.h: Add semicolon. + * include/bits/stl_algo.h: Remove semicolon. + * include/bits/stl_algobase.h: Likewise. + * include/bits/stl_deque.h: Likewise. + * include/bits/stl_heap.h: Likewise. + * include/bits/stl_iterator_base_funcs.h: Likewise. + * include/bits/stl_list.h: Likewise. + * include/bits/stl_map.h: Likewise. + * include/bits/stl_multimap.h: Likewise. + * include/bits/stl_multiset.h: Likewise. + * include/bits/stl_numeric.h: Likewise. + * include/bits/stl_queue.h: Likewise. + * include/bits/stl_set.h: Likewise. + * include/bits/stl_stack.h: Likewise. + * include/bits/stl_vector.h: Likewise. + * include/ext/hash_map: Likewise. + * include/ext/hash_set: Likewise. + * include/ext/slist: Likewise. + + * src/concept-inst.cc: New file with explicit instantiations. + * src/Makefile.am (sources): Add here, with special build rules. + * src/Makefile.in: Regenerate. + +2001-11-01 Gabriel Dos Reis + + * include/bits/std_complex.h (_Norm_helper): New class template. + (norm): Tweak. + (abs): Tweak. Fix Thinko. + +2001-10-31 Benjamin Kosnik + + libstdc++/4749 + * include/bits/codecvt.h: Add virtual member function declarations. + * src/codecvt.cc: Tweaks. + * testsuite/22_locale/codecvt.cc: Test compilation only, + non-required facets not required to have linkage. + +2001-10-31 Edward E. Meyer + + libstdc++/4622 + * include/bits/std_complex.h (complex::operator/=): Correct sign. + +2001-10-30 Paolo Carlini + Benjamin Kosnik + + libstdc++/4354 + * include/bits/basic_string.h: Tweaks. + * include/bits/basic_string.tcc (string::_M_replace(iterator, + iterator, _ForwardIter, _ForwardIter, forward_iterator_tag): Fix. + * src/string-inst.cc: Tweaks, add instantiation. + * testsuite/21_strings/replace.cc (test02): Add test. + * testsuite/21_strings/assign.cc (test01): New file. + +2001-10-30 Jakub Jelinek + + * include/bits/stl_deque.h (_M_new_elements_at_front): Use + __throw_exception_again. + (_M_new_elements_at_back): Likewise. + +2001-10-29 Benjamin Kosnik + + libstdc++/3647 + * include/bits/fstream.tcc (filebuf::showmanyc): Simplify. + * testsuite/27_io/filebuf.cc (test07): New test. + (test03): Modify showmanyc test. + +2001-10-26 Benjamin Kosnik + + libstdc++/4503 + * config/locale/codecvt_specializations_ieee_1003.1-200x.h + (__enc_traits::~__enc_traits): Fix. + (__enc_traits::_M_init): Add error checking. + +2001-10-25 Benjamin Kosnik + + libstdc++/4542 + * include/bits/locale_facets.tcc (time_get::_M_extract_name): Fix. + +2001-10-25 Benjamin Kosnik + + libstdc++/4545 + * include/bits/ostream.tcc (ostream::operator<<(streambuf*)): Fix + exceptions. + * include/bits/istream.tcc (istream::operator>>(streambuf*): Make + consistent, where possible. + * include/bits/streambuf.tcc: Tweak. + +2001-10-25 Brendan Kehoe + + libstdc++/4536 + * bits/ostream.tcc (seekp): Scope use as ios_base::failbit. + * bits/istream.tcc (seekg): Likewise. + +2001-10-25 Benjamin Kosnik + Peter Schmid + Ulrich Weigand + + * config/os/gnu-linux/bits/os_defines.h: Set to 64 bit longs with + __s390x__ only. + * include/bits/std_limits.h: Fix wchar_t issues. + * config/os/aix/bits/os_defines.h: Fix. + +2001-10-25 Benjamin Kosnik + + * include/bits/locale_facets.tcc (collate::do_transform): Fix. + +2001-10-25 Phil Edwards + + * docs/html/documentation.html: Fix typo. + +2001-10-23 Benjamin Kosnik + + Make -fno-exceptions work. + * config/locale/c_locale_gnu.cc: Use functexcept. + * include/bits/c++config (__stl_assert): Remove. + (__STL_USE_EXCEPTIONS): Same. + (__STL_TRY): Same. + (__STL_CATCH_ALL): Same. + (__STL_THROW): Same. + (__STL_RETHROW): Same. + (__STL_NOTHROW): Same. + (__STL_UNWIND): Same. + * include/bits/pthread_allocimpl.h: Fix. + * include/bits/std_bitset.h: Same. + * include/bits/std_list.h: Same. + * include/bits/std_memory.h: Same. + * include/bits/std_queue.h: Same. + * include/bits/stl_alloc.h: Same. + * include/bits/stl_deque.h: Same. + * include/bits/stl_list.h: Same. + * include/bits/stl_queue.h: Same. + * include/bits/stl_tempbuf.h: Same. + * include/bits/stl_tree.h: Same. + * include/bits/stl_uninitialized.h: Same. + * include/bits/stl_vector.h: Same. + * include/ext/ropeimpl.h: Same. + * include/ext/slist: Same. + * include/ext/stl_hashtable.h: Same. + * include/ext/stl_rope.h: Same. + * libsupc++/new_op.cc: Include cstdlib. + * libsupc++/eh_personality.cc: Add exception_defines include. Use + __throw_exception_again, tweak. + * libsupc++/eh_aux_runtime.cc: Include stdlib for abort. + * libsupc++/vec.cc: Tweak. + * src/functexcept.cc: Remove unused arguments. + * testsuite/23_containers/bitset_members.cc: Tweak. + +2001-10-22 Benjamin Kosnik + + * config/cpu/i386/bits/limits.h: Move to... + * config/cpu/i386/bits/cpu_limits.h: ...here. + * config/cpu/cris/bits/cpu_limits.h: Same. + * config/cpu/powerpc/bits/cpu_limits.h: Same. + * config/cpu/x86-64/bits/cpu_limits.h: Same. + * config/cpu/alpha/bits/cpu_limits.h: New. + * config/cpu/m68k/bits/cpu_limits.h: New. + * config/cpu/s390/bits/cpu_limits.h: New. + * config/os/aix/bits/os_defines.h: Tweaks. + * config/os/bsd/freebsd/bits/os_defines.h: Same. + * config/os/bsd/netbsd/bits/os_defines.h: Same. + * config/os/djgpp/bits/os_defines.h: Same. + * config/os/generic/bits/os_defines.h: Same. + * config/os/gnu-linux/bits/os_defines.h: Same. + * config/os/hpux/bits/os_defines.h: Same. + * config/os/irix/irix5.2/bits/os_defines.h: Same. + * config/os/irix/irix6.5/bits/os_defines.h: Same. + * config/os/newlib/bits/os_defines.h: Same. + * config/os/solaris/solaris2.5/bits/os_defines.h: Same. + * config/os/solaris/solaris2.6/bits/os_defines.h: Same. + * config/os/solaris/solaris2.7/bits/os_defines.h: Same. + + * include/bits/c++config: Remove include. + * include/bits/limits_generic.h: Remove. + * include/bits/std_limits.h: Include cpu_limits.h. + * include/Makefile.am: Fixup. + * src/limits.cc: Tweak. + * src/limits_generic.cc: Remove. + * src/gen-num-limits.cc: Remove. + * mknumeric_limits: Remove. + +2001-10-20 Brendan Kehoe + + * bits/type_traits.h (_Bool): Removed this type. + (__true_type, __false_type): Change to be plain structs. + * src/string-inst.cc (__destroy_aux): Change third parm to be + __false_type instead of _Bool. + * src/misc-inst.cc (__uninitialized_fill_n_aux, + __uninitialized_copy_aux): Likewise. + +2001-10-19 Benjamin Kosnik + + * mkcheck.in (static_fail): Remove older memory limit functionality. + Disable E_TIME due to formatting issues. + + * README: Update. + +2001-10-19 Brendan Kehoe + + * include/bits/std_complex.h: Default initialize second argument + of polar to 0, as specified in Library DR #79 + +2001-10-19 Brendan Kehoe + + * include/bits/stl_raw_storage_iter.h (operator=): Fix to call + _Construct instead of construct. + +2001-10-19 Brendan Kehoe + + * include/bits/basic_string.tcc (find_first_not_of): Take out check for + __n being non-zero, since the standard does not mandate that. + e.g., a search for "" in "" should yield position 0, not npos. + (find_last_not_of): Likewise. + +2001-10-19 Brendan Kehoe + + * include/bits/stl_bvector.h (vector::_M_range_check): Fix + to throw out_of_range, not range_error, thus sayeth $23.1.1.13. + +2001-10-19 Brendan Kehoe + + * include/bits/stl_iterator.h (reverse_iterator::current): Rename + member from _M_current, and change all uses; thus sayeth $24.4.1.1. + +2001-10-19 Brendan Kehoe + + * include/bits/stl_algo.h (partial_sort): Add missing `>' on the + template parameter _ValueType. + +2001-10-19 Brendan Kehoe + + * include/bits/std_limits.h: Clean up extra semicolons. + * include/bits/locale_facets.h: Likewise. + * include/bits/type_traits.h: Likewise. + +2001-10-19 Brendan Kehoe + + * include/bits/localefwd.h (locale::combine): Add const for lib DR 14. + * include/bits/locale_facets.tcc (locale::combine): Likewise. + +2001-10-19 Benjamin Kosnik + + * include/bits/locale_facets.h (__timepunct::_M_put_helper): + Declare specializations for char, wchar_t. + +2001-10-19 Andreas Jaeger + + * config/cpu/x86-64/bits/limits.h: New file. + * config/cpu/x86-64/bits/atomicity.h: New file. + * configure.target: Add x86-64. + +2001-10-17 Phil Edwards + + * docs/html/17_intro/howto.html: Remove 1999 links (and explain + why). Add link to recent message. + * docs/html/faq/index.html (5.6): Reformat text only; fixup
+	markup.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2001-10-12  Loren J. Rittle  
+
+	* docs/html/faq/index.html (Is libstdc++-v3 thread-safe?): Update
+	based on Nathan's review.  Use Nathan's words.
+
+2001-10-11  Matt Kraai  
+
+	* docs/html/configopts.html: Quote StyleSheet attribute values.
+	* docs/html/documentation.html: Likewise.
+	* docs/html/explanations.html: Likewise.
+	* docs/html/install.html: Likewise.
+	* docs/html/17_intro/howto.html: Likewise.
+	* docs/html/17_intro/license.html: Likewise.
+	* docs/html/18_support/howto.html: Likewise.
+	* docs/html/19_diagnostics/howto.html: Likewise.
+	* docs/html/20_util/howto.html: Likewise.
+	* docs/html/21_strings/howto.html: Likewise.
+	* docs/html/22_locale/howto.html: Likewise.
+	* docs/html/23_containers/howto.html: Likewise.
+	* docs/html/24_iterators/howto.html: Likewise.
+	* docs/html/25_algorithms/howto.html: Likewise.
+	* docs/html/26_numerics/howto.html: Likewise.
+	* docs/html/27_io/howto.html: Likewise.
+	* docs/html/ext/howto.html: Likewise.
+	* docs/html/ext/sgiexts.html: Likewise.
+	* docs/html/faq/index.html: Likewise.
+
+2001-10-11  Loren J. Rittle  
+
+	* docs/html/faq/index.html (Is libstdc++-v3 thread-safe?): Rewrite.
+	* docs/html/23_containers/howto.html (Containers and multithreading):
+	Update.
+
+2001-10-09  Phil Edwards  
+
+	* docs/html/17_intro/howto.html:  Tweak markup and value type.
+	* docs/html/27_io/howto.html:  Tweak markup, describe setbuf() for
+	nonzero arguments, add new note on threading.
+	* docs/html/faq/index.html:  Update.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2001-10-09  Phil Edwards  
+
+	* docs/html/configopts.html:  More HTML->XHTML and lowercasing of tags.
+	* docs/html/documentation.html:  Likewise.
+	* docs/html/explanations.html:  Likewise.
+	* docs/html/install.html:  Likewise.
+	* docs/html/17_intro/howto.html:  Likewise.
+	* docs/html/17_intro/license.html:  Likewise.  Tighten up language.
+	* docs/html/18_support/howto.html:  Likewise.
+	* docs/html/19_diagnostics/howto.html:  Likewise.
+	* docs/html/20_util/howto.html:  Likewise.
+	* docs/html/21_strings/howto.html:  Likewise.
+	* docs/html/22_locale/howto.html:  Likewise.
+	* docs/html/23_containers/howto.html:  Likewise.
+	* docs/html/24_iterators/howto.html:  Likewise.
+	* docs/html/25_algorithms/howto.html:  Likewise.
+	* docs/html/26_numerics/howto.html:  Likewise.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise.
+	* docs/html/ext/sgiexts.html:  Likewise.
+	* docs/html/faq/index.html:  Likewise.  Not so many absolute links.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2001-10-07  Joseph S. Myers  
+
+	* docs/html/22_locale/locale.html, docs/html/faq/index.html: Fix
+	spelling errors of "separate" as "seperate", and corresponding
+	spelling errors of related words.
+	* docs/html/faq/index.txt: Regenerate.
+
+2001-10-05  Phil Edwards  
+
+	* config/cpu/alpha/bits/atomicity.h (__compare_and_swap):  Remove
+	unused function.
+	* config/cpu/arm/bits/atomicity.h:  Likewise.
+	* config/cpu/generic/bits/atomicity.h:  Likewise.
+	* config/cpu/i486/bits/atomicity.h:  Likewise.
+	* config/cpu/ia64/bits/atomicity.h:  Likewise.
+	* config/cpu/mips/bits/atomicity.h:  Likewise.
+	* config/cpu/powerpc/bits/atomicity.h:  Likewise.
+	* config/cpu/sparc/sparc32/bits/atomicity.h:  Likewise.
+	* config/cpu/sparc/sparc64/bits/atomicity.h:  Likewise.
+
+2001-10-04  Phil Edwards  
+
+	* docs/html/faq/index.html:  Describe DR #22, and a workaround.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2001-10-04  Phil Edwards  
+
+	* docs/html/17_intro/COPYING.DOC:  New file, GFDL v1.1 from the FSF.
+	* docs/html/17_intro/license.html:  New file.  Explain the licenses
+	in use.
+
+	* docs/html/configopts.html:  Link to license.html.
+	* docs/html/documentation.html:  Likewise.
+	* docs/html/explanations.html:  Likewise.
+	* docs/html/install.html:  Likewise.
+	* docs/html/17_intro/howto.html:  Likewise.
+	* docs/html/18_support/howto.html:  Likewise.
+	* docs/html/19_diagnostics/howto.html:  Likewise.
+	* docs/html/20_util/howto.html:  Likewise.
+	* docs/html/21_strings/howto.html:  Likewise.
+	* docs/html/22_locale/howto.html:  Likewise.
+	* docs/html/23_containers/howto.html:  Likewise.
+	* docs/html/24_iterators/howto.html:  Likewise.
+	* docs/html/25_algorithms/howto.html:  Likewise.
+	* docs/html/26_numerics/howto.html:  Likewise.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise.
+	* docs/html/ext/sgiexts.html:  Likewise.
+	* docs/html/faq/index.html:  Likewise.  New question, linking to
+	the new license.html.
+
+2001-10-04  Phil Edwards  
+
+	* docs/html/17_intro/howto.html:  Fix mis-sed in header from 20010917.
+	* docs/html/18_support/howto.html:  Likewise.
+	* docs/html/19_diagnostics/howto.html:  Likewise.
+	* docs/html/20_util/howto.html:  Likewise.
+	* docs/html/21_strings/howto.html:  Likewise.
+	* docs/html/22_locale/howto.html:  Likewise.
+	* docs/html/23_containers/howto.html:  Likewise.
+	* docs/html/24_iterators/howto.html:  Likewise.
+	* docs/html/25_algorithms/howto.html:  Likewise.
+	* docs/html/26_numerics/howto.html:  Likewise.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise.
+	* docs/html/faq/index.html:  Likewise.  Spacing fix.
+
+2001-10-03  Dimitris Vyzovitis  
+
+	* include/bits/stl_threads.h (_Atomic_swap): New function.
+	(_Swap_lock_struct<__dummy>::_S_swap_lock): New data.
+	* testsuite/ext/rope.cc: New file.
+
+2001-10-02  Benjamin Kosnik  
+
+	* config/locale/time_members_gnu.h: Remove.
+	* config/locale/time_members_generic.h: Remove.
+	* config/locale/time_members_gnu.cc (__timepunct::_M_put_helper): Add.
+	* config/locale/time_members_generic.cc: Same.
+	* include/bits/locale_facets.h: Add data members.
+	(__timepunct::_M_put_helper): Change signature.
+	(__timepunct::_M_date_formats): Same.
+	(__timepunct::_M_time_formats): Same.
+	(__timepunct::_M_ampm): Add.
+	(__timepunct::_M_date_time_formats): Add.
+	(time_get::_M_extract_via_format): Add.
+	(time_get::_M_extract_time): Change to...
+	(time_get::_M_extract_num): ... this, modify signature.
+	* include/bits/locale_facets.tcc (time_get::do_get_year): Fix.
+	(time_get::do_get_time): Fix.
+	(time_get::do_get_date): Fix.
+
+	* acinclude.m4: Remove CTIME_H.
+	* aclocal.m4: Regenerate.
+	* include/Makefile.am: Same.
+	* include/Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+	* testsuite/22_locale/time_get_members_char.cc: Fix.
+	* testsuite/22_locale/time_get_members_wchar_t.cc: Add.
+	* testsuite/22_locale/time_put_members_wchar_t.cc: Add.
+
+2001-10-01  Hans-Peter Nilsson  
+
+	* config/cpu/cris/bits/atomicity.h: Correct file header.
+
+2001-09-29  Hans-Peter Nilsson  
+
+	* configure.target (LIMITSH): Set for cris.
+	(cpu_include_dir): Set for cris-*-*.
+	* config/cpu/cris/bits/atomicity.h: New file.
+	* config/cpu/cris/bits/limits.h: New file.
+
+2001-09-28  Benjamin Kosnik  
+
+	* config/locale/time_members_gnu.h (__timepunct::_M_get_helper): Add.
+	(__timepunct::_M_put_helper): Add.
+	* config/locale/time_members_generic.h: Same.
+	* include/bits/locale_facets.h (__match_parallel): Remove. Format.
+	(__timepunct): Add data members.
+	(__timepunct::_M_days): Add.
+	(__timepunct::_M_days_abbreviated): Add.
+	(__timepunct::_M_months): Add.
+	(__timepunct::_M_months_abbreviated): Add.
+	(__timepunct::_M_initialize_timepunct): Add.
+	* include/bits/locale_facets.tcc: Same.
+	* src/locale-inst.cc: Remove instantiations for __match_parallel.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add CTIME_CC.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/22_locale/time_put_members_char.cc: Mark XFAIL.
+	* testsuite/22_locale/time_put_members_char.cc (test01): New file.
+	* testsuite/22_locale/time_get.cc: New file.
+
+2001-09-28  Rainer Orth  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use
+	correct multilib builddir.
+	Properly locate libgcc_s.
+
+2001-09-27  Phil Edwards  
+
+	* include/std/*:  Add Doxygen hooks.
+	* docs/doxygen/Intro.3:  New file, general intro to the man pages.
+	* docs/doxygen/mainpage.doxy:  Formatting tweaks.  List our own links
+	rather than using a generated index.
+	* docs/doxygen/user.cfg.in:  Disable the index, enable man pages.
+	* docs/doxygen/run_doxygen:  Massage the generated man pages, using...
+	* docs/doxygen/stdheader.cc:  ...this new file.
+
+2001-09-26  Stan Shebs  
+
+	* include/Makefile.am: Remove RCS Id strings.
+	* src/Makefile.am: Ditto.
+	* docs/doxygen/run_doxygen: Ditto.
+	* docs/html/configopts.html: Ditto.
+	* docs/html/documentation.html: Ditto.
+	* docs/html/explanations.html: Ditto.
+	* docs/html/install.html: Ditto.
+	* docs/html/17_intro/howto.html: Ditto.
+	* docs/html/18_support/howto.html: Ditto.
+	* docs/html/19_diagnostics/howto.html: Ditto.
+	* docs/html/20_util/howto.html: Ditto.
+	* docs/html/21_strings/howto.html: Ditto.
+	* docs/html/22_locale/howto.html: Ditto.
+	* docs/html/23_containers/howto.html: Ditto.
+	* docs/html/24_iterators/howto.html: Ditto.
+	* docs/html/25_algorithms/howto.html: Ditto.
+	* docs/html/26_numerics/howto.html: Ditto.
+	* docs/html/27_io/howto.html: Ditto.
+	* docs/html/ext/howto.html: Ditto.
+	* docs/html/ext/sgiexts.html: Ditto.
+	* docs/html/faq/index.html: Ditto.
+	* docs/html/faq/index.txt: Ditto.
+
+2001-09-25  Phil Edwards  
+
+	* testsuite/21_strings/c_strings.cc (test01, test02):  Increase
+	`carray' size.
+
+2001-09-25  Phil Edwards  
+
+	* docs/html/20_util/howto.html:  Add anchor name.
+	* docs/html/23_containers/howto.html:  Line wrapping, another link.
+	* docs/html/25_algorithms/howto.html:  Another note.
+
+	* docs/html/ext/howto.html:  Link to SGI extensions.  List DRs and
+	link to them...
+	* docs/html/ext/lwg-active.html:  ...in this new file (from R19),
+	* docs/html/ext/lwg-defects.html:  and this new file (from R19).
+	* docs/html/ext/sgiexts.html:  New file.  Mention SGI extensions
+	carried over to libstdc++-v3.
+	* docs/html/faq/index.html:  Link to SGI extensions.  Mention the
+	"missing .." pseudobug.
+	* docs/html/faq/index.txt:  Regenerate.
+
+	* include/bits/ios_base.h:  DR-related comment cleanup.
+	* include/bits/istream.tcc:  Likewise.
+	* include/bits/locale_facets.h:  Likewise.
+	* include/bits/locale_facets.tcc:  Likewise.
+	* include/bits/ostream.tcc:  Likewise.
+	* include/bits/std_bitset.h:  Likewise.
+	* include/bits/std_iosfwd.h:  Likewise.
+	* include/bits/std_istream.h:  Likewise.
+	* include/bits/std_ostream.h:  Likewise.
+	* include/bits/std_streambuf.h:  Likewise.
+	* include/bits/stl_pair.h:  Likewise.
+	* include/bits/streambuf_iterator.h:  Likewise.
+
+	* include/bits/std_map.h:  Remove unused header inclusion guard
+	_CPP_BITS_STL_TREE_H from around bits/stl_tree.h.
+	* include/bits/std_set.h:  Likewise.
+
+	* include/bits/stl_function.h:  Doxygen markup.
+	* docs/doxygen/doxygroups.cc:  New file, specifying module grouping.
+	* libsupc++/typeinfo:  Doxygen markup tweak.
+
+2001-09-20  Scott Johnston 
+	    Peter Schmid 
+
+	* include/backward/alloc.h: Conditionally define malloc_alloc
+	* testsuite/backward/header_deque_h.cc: New file.
+
+2001-09-20  Sylvain Pion 
+
+	* libstdc++-v3/include/bits/locale_facets.tcc (money_put::do_put):
+	change variable name so that it works with -fno-for-scope.
+
+2001-09-20  Benjamin Kosnik  
+
+	* testsuite/22_locale/numpunct_members_char.cc (test01): Remove
+	redundant sanity checks.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test01): Same.
+	(test02): Same.
+	* testsuite/22_locale/money_put_members_char.cc (test01): Same.
+	(test02): Same.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc (test01): Same.
+	* testsuite/22_locale/moneypunct_members_char.cc (test01): Same.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test01): Same.
+	(test02): Same.
+	* testsuite/22_locale/money_get_members_char.cc (test01): Same.
+	(test02): Same.
+
+2001-09-19  Benjamin Kosnik  
+
+	Implement std::time_put.
+	* include/bits/locale_facets.h: Include time_members.h.
+	(__timepunct): New.
+	(time_put): Implement.
+	* include/bits/locale_facets.tcc (do_put): Put generic versions here.
+	* include/bits/localefwd.h: Bump number of facets.
+	* config/locale/time_members_generic.h: New file.
+	* config/locale/time_members_gnu.h: New file.
+	* config/locale/c_locale_generic.h: Include clocale.
+	* src/locale-inst.cc: Add use_facet instantiations for __timepunct.
+	* src/locale.cc: Add __timepunct initializations.
+	* src/localename.cc (locale::_Impl::_Impl(string, size_t)): Same.
+	* include/Makefile.am (stamp-target): Add time_members.h.
+	* include/Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add CTIME_H.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/22_locale/time_put.cc: New file.
+	* testsuite/22_locale/time_put_members_char.cc: New file.
+
+	* docs/html/22_locale/locale.html: Add note.
+
+2001-09-17  Phil Edwards  
+
+	* docs/html/configopts.html:  HTML to XHTML change.  Lowercase tags.
+	* docs/html/documentation.html:  Likewise.
+	* docs/html/explanations.html:  Likewise.
+	* docs/html/install.html:  Likewise.
+	* docs/html/17_intro/howto.html:  Likewise.
+	* docs/html/18_support/howto.html:  Likewise.
+	* docs/html/19_diagnostics/howto.html:  Likewise.
+	* docs/html/20_util/howto.html:  Likewise.
+	* docs/html/21_strings/howto.html:  Likewise.
+	* docs/html/22_locale/codecvt.html:  Likewise.
+	* docs/html/22_locale/ctype.html:  Likewise.
+	* docs/html/22_locale/howto.html:  Likewise.
+	* docs/html/22_locale/locale.html:  Likewise.
+	* docs/html/22_locale/messages.html:  Likewise.
+	* docs/html/23_containers/howto.html:  Likewise.
+	* docs/html/24_iterators/howto.html:  Likewise.
+	* docs/html/25_algorithms/howto.html:  Likewise.
+	* docs/html/26_numerics/howto.html:  Likewise.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise.
+	* docs/html/faq/index.html:  Likewise.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-09-14  Phil Edwards  
+
+	* docs/html/17_intro/headers_cc.txt:  "Sync"/copy real file over.
+	* docs/html/17_intro/howto.html:  Spacing and HTML markup fixes.
+	* docs/html/18_support/howto.html:  It won't compile; it's not code.
+	* docs/html/19_diagnostics/howto.html:  Point diagram seekers to
+	doxygen'd pages.
+	* docs/html/22_locale/howto.html:  Comment for future work.
+	* docs/html/23_containers/howto.html:  More comments.
+	* docs/html/25_algorithms/howto.html:  It's a comment, not a
+	blunt command to the reader.  (English grammar.)
+
+2001-09-14  Benjamin Kosnik  
+
+	* config/locale/moneypunct_members_gnu.cc: Fix initialization of
+	wchar_t members.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test02): New file.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test02): Fix.
+
+2001-09-14  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc: Conditionalize use of strtold.
+
+2001-09-13  Alexandre Petit-Bianco  
+
+	* testsuite/22_locale/money_get_members_char.cc: Fixed typo in comment.
+	* testsuite/22_locale/money_put_members_char.cc: Likewise.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Likewise.
+
+2001-09-13  Benjamin Kosnik  
+
+	Implement std::money_get.
+	* include/bits/locale_facets.tcc (money_get::do_get): Implement.
+	* include/bits/locale_facets.h (money_get): Correct signatures.
+	* testsuite/22_locale/money_get.cc: New file.
+	* testsuite/22_locale/money_get_members_char.cc: New file.
+
+	* include/bits/locale_facets.tcc (__verify_grouping): New
+	function. Consolidate num_get and money_get group checking into
+	one function.
+	(money_get): Use it.
+	* src/locale.cc (num_get::_M_extract): Use it.
+	* src/locale-inst.cc: Add instantiation.
+
+2001-09-12  Gabriel Dos Reis  
+
+	* include/bits/std_limits.h (numeric_limits::radix,
+	numeric_limits::epsilon:  Fix thinko.
+
+2001-09-10  Benjamin Kosnik  
+
+	* configure.in: Fix cross compiling math routines. Correct
+	comments for cross compiling and limits. Add floating point math
+	routines found in newlib.
+	* configure: Regenerate.
+	* acconfig.h: Add macros.
+	* config.h.in: Regenerate.
+
+2001-09-10  Benjamin Kosnik  
+
+	* config/locale/moneypunct_members_generic.cc
+	(money_base::_S_construct_pattern): Remove unused parameters.
+
+2001-09-10  Benjamin Kosnik  
+
+	* include/Makefile.am (stamp-target): Remove link to self.
+	* inclulde/Makefile.in: Regenerate.
+
+2001-09-09  Benjamin Kosnik  
+
+	Implement std::money_put.
+	* include/bits/locale_facets.h
+	(moneypunct::_M_initialize_moneypunct): Split up specializations
+	to account for _Intl.  More grody hacking to get around the
+	ill-considered use of const bool as a template parameter.
+	* config/locale/moneypunct_members_gnu.cc: And here.
+	* config/locale/moneypunct_members_generic.cc: And here.
+	* testsuite/22_locale/moneypunct_members_char.cc: Add tests.
+	* testsuite/22_locale/moneypunct.cc: Add tests.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: New file.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc: New file.
+
+	* src/locale.cc (money_base::_S_construct_pattern): Move into
+	gnu-specific file.
+	* config/locale/moneypunct_members_gnu.cc: Add here.
+	* config/locale/moneypunct_members_generic.cc: Add generic version
+	here.
+
+	* include/bits/locale_facets.tcc (money_put::do_put): Move member
+	function definitions here.
+	* include/bits/locale_facets.h (money_put): Implement.
+	* src/locale-inst.cc: Add use_facet instantiations for moneypunct.
+	Correct money_get, money_put instantiations.
+	* src/locale.cc (money_base::_S_construct_pattern): Handle case
+	where __posn == 0.
+	* testsuite/22_locale/money_put_members_char.cc: Add tests.
+
+2001-09-05  Phil Edwards  
+
+	* testsuite_flags.in:  No longer need to search testsuite builddir.
+	* src/stl-inst.cc (__sink_unused_warning):  Unused, remove.
+	* Makefile.am:  The testsuite directory never needs to be made here.
+	* Makefile.in:  Regenerate.
+	* include/Makefile.in:  Regenerate.
+	* libio/Makefile.in:  Regenerate.
+	* libmath/Makefile.in:  Regenerate.
+	* libsupc++/Makefile.in:  Regenerate.
+	* po/Makefile.in:  Regenerate.
+	* src/Makefile.in:  Regenerate.
+	* testsuite/Makefile.in:  Regenerate.
+
+2001-09-04  Scott Johnston  
+	    Peter Schmid  
+
+	* include/backward/iterator.h: Include ,
+	remove reverse_bidirectional_iterator.
+	* testsuite/backward: New directory.
+	* testsuite/backward/header_iterator_h.cc: New file.
+
+2001-09-04  Benjamin Kosnik  
+
+	* include/c_std/bits/std_c*.h: Don't use include_next.
+
+2001-09-03  Richard Sandiford  
+
+	* libsupc++/eh_personality.cc (parse_lsda_header): Change type of
+	tmp from _Unwind_Ptr to _Unwind_Word.
+
+2001-08-31  Jason Merrill  
+
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Simplify
+	leb128 handling.
+
+2001-08-28  Loren J. Rittle  
+
+	* include/Makefile.am: Use toplevel_srcdir to refer to src files
+	outside this component.
+	* include/Makefile.in: Regenerate.
+
+2001-08-27  Benjamin Kosnik  
+
+	* config/locale/c_locale_gnu.cc: Move facet info to separate files...
+	* config/locale/c_locale_generic.cc: Same.
+	* config/locale/moneypunct_members_gnu.cc: New file.
+	* config/locale/moneypunct_members_generic.cc: New file.
+	* config/locale/numpunct_members_gnu.cc: New file.
+	* config/locale/numpunct_members_generic.cc: New file.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add moneypunct, numpunct
+	options.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* src/Makefile.am (sources): And here.
+	* src/Makefile.in: Regenerate.
+
+	Rename for consistency with rest of testsuite.
+	* testsuite/22_locale/codecvt.cc: New file.
+	* testsuite/22_locale/money_put.cc: New file.
+	* testsuite/22_locale/money_put_members_char.cc: New file.
+
+2001-08-27  Phil Edwards  
+
+	PR libstdc++/4143
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO):  Handle enable/disable
+	correctly for version-specific-runtime-libs.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+
+2001-08-24  Loren J. Rittle  
+
+	* config/cpu/i386/bits/limits.h (__glibcpp_long_double_bits): Only
+	define if not already provided by per-OS file.
+	* config/os/bsd/freebsd/bits/os_defines.h (__glibcpp_long_double_bits):
+	Define.
+
+2001-08-24  Jan van Male 
+
+	* docs/html/17_intro/C++STYLE:  Fix typo.
+
+2001-08-24  Phil Edwards  
+
+	* docs/html/23_containers/howto.html:  Describe implementation of
+	insertion with hints.
+
+2001-08-24  Kenny Simpson  
+
+	libstdc++/3740
+	* include/bits/std_sstream.h (basic_ostringstream): Fix ctor.
+
+2001-08-24  Sylvain Pion 
+	    Phil Edwards  
+
+	PR libstdc++/3349
+	* include/bits/stl_tree.h (insert_unique):  Revert last change.
+	Values inserted at begin() must be less, not greater, than *begin()'s.
+	* testsuite/23_containers/map_insert.cc:  New file.
+
+2001-08-23  Benjamin Kosnik  
+
+	* config/locale/c_locale_gnu.cc: Minor tweaks.
+	(moneypunct): Implement.
+	* include/bits/locale_facets.h: Same.
+	* testsuite/22_locale/moneypunct.cc: New file.
+	* testsuite/22_locale/moneypunct_byname.cc: New file.
+	* testsuite/22_locale/moneypunct_char_members.cc: New file.
+
+2001-08-23  David Edelsohn  
+
+	* config/os/gnu-linux/bits/os_defines.h: Correct __s390__ definitions.
+	Set __powerpc__ long double definition based on __LONG_DOUBLE_128__.
+
+2001-08-23  Jason Merrill  
+
+	* testsuite_flags.in (build-includes): Re-add backward.
+
+2001-08-22  Benjamin Kosnik  
+
+	* testsuite/22_locale/collate_wchar_t_members.cc: Guard
+	with _GLIBCPP_USE_WCHAR_T.
+
+2001-08-21  Benjamin Kosnik  
+
+	* testsuite/22_locale/collate_byname.cc (test01): Fix.
+
+2001-08-18  Vladimir A Merzliakov  
+
+	* include/bits/locale_facets.tcc (collate::do_transform): Add typename.
+
+2001-08-18  Benjamin Kosnik  
+
+	* testsuite/22_locale/operators.cc: Add test.
+
+2001-08-17  Benjamin Kosnik  
+
+	Implement std::collate.
+	* config/locale/collate_specializations_gnu.cc: Add here, implement in
+	MT-safe way.
+	* config/locale/collate_specializations_generic.cc: Add here, but
+	in a less sophisticated manner.
+	* include/bits/locale_facets.tcc (collate): Add generic definition.
+	* include/bits/locale_facets.h (~collate): Mark virtual.
+	(collate::_M_compare_helper): New.
+	(collate::_M_transform_helper): New.
+	* src/locale.cc: Remove unnecessary specializations.
+	* src/string-inst.cc: Tweak instantiation of ctors.
+
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Do configury for collate.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* src/Makefile.am (sources): Add collate.cc.
+	* src/Makefile.in: Regenerate.
+
+	* testsuite/22_locale/collate_byname.cc: New.
+	* testsuite/22_locale/collate.cc: New file.
+	* testsuite/22_locale/collate_char_members.cc: New file.
+	* testsuite/22_locale/collate_wchar_t_members.cc: New file.
+
+2001-08-16  Franz Sirl  
+
+	* configure.target: Set LIMITSH for powerpc-*-*.
+	* config/cpu/powerpc/bits/limits.h: New file.
+
+2001-08-16  Marc Espie 
+
+	* configure.in:  Check for .
+	* configure:  Rebuild.
+	* config.h.in:  Rebuild.
+	* libmath/mathconf.h:  Include  prior to
+	 if available.
+
+2001-08-15  Andreas Schwab  
+
+	* configure.target (cpu_include_dir): Set to `config/cpu/m68k' for
+	m68k and m680[246]0.
+	* config/cpu/m68k/bits/atomicity.h: New file.
+
+	* include/bits/std_limits.h [__glibcpp_long_double_bits == 96]:
+	Define appropriate long double limits for m68k extended floating
+	point.
+	(__glibcpp_f32_digits10): Corrected, off by one.
+	(__glibcpp_f80_digits10): Likewise.
+	(__glibcpp_f128_digits10): Likewise.
+	* config/os/gnu-linux/bits/os_defines.h
+	(__glibcpp_long_double_bits) [__mc68000__]: Define to 96.
+
+2001-08-15  Gabriel Dos Reis  
+
+	* testsuite/18_support/numeric_limits.cc: Add more tests.
+	* include/bits/std_limits.h (numeric_limits::max): Fix
+	typo.
+
+2001-08-14  Ulrich Weigand  
+
+	* configure.target (cpu_include_dir): Set to `config/cpu/s390'
+	for s390 and s390x.
+
+	* config/cpu/s390/bits/atomicity.h: New.
+
+2001-08-14  Gabriel Dos Reis  
+
+	* include/bits/std_limits.h: Fix thinko.
+
+2001-08-14  Benjamin Kosnik  
+
+	* include/Makefile.am: Consolidate target rules. Don't clean stamp
+	files. Tweak target build directory stamp.
+	* include/Makefile.in: Regenerate.
+
+2001-08-14  Peter Schmid  
+
+	* libstdc++-v3/libmath/stubs.c: Fix PR/3988, replace
+	_GBLICPP_HAVE_LOGL with HAVE_LOGL
+
+2001-08-13  Benjamin Kosnik  
+
+	* configure.in (libtool_VERSION): Add.
+	(VERSION): Change to
+	(release_VERSION): This.
+	* configure: Regenerate.
+	* src/Makefile.am (libstdc___la_LDFLAGS): Use -version-info with
+	libtool_VERSION.
+	* src/Makefile.in: Regenerate.
+
+	* intl/Makefile.am: Remove.
+	* intl/Makefile.in: Remove.
+	* intl: Remove.
+	* Makefile.am (SUBDIRS): Remove intl.
+	* po/Makefile.am (DISTFILES): Add string_literals.cc
+	(MSGFMT): Add.
+	* po/string_literals.cc: Add.
+	* po/POTFILES.in: Fix path.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Don't call AM_GNU_GETTEXT.
+	* aclocal.m4: Regenerate.
+	* configure.in: Remove AC_OUTPUT of intl/Makefile.
+
+	* include/backward/backward_warning.h: Clarify message.
+
+	* testsuite_flags.in (--cxxflags): Use same debug flags for
+	library and testsuite.
+
+	* include/Makefile.am (c_compatibility): Remove.
+	* include/Makefile.in: Regenerate.
+
+2001-08-13  Mark Mitchell  
+
+	* configure.in (LIMITS_INC_SRCDIR): New variable.
+	* configure.target (LIMITSH): New variable.
+	* porting.texi: Discuss numeric limits.
+	* config/cpu/generic/bits/limits.h: New file.
+	* config/cpu/i386/bits/limits.h: New file.
+	* include/Makefile.am: Install bits/limits.h.
+	* include/bits/c++config: Include bits/limits.h.
+
+2001-08-13  H.J. Lu  (hjl@gnu.org)
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-copy-files):
+	New. Copy files.
+	(libstdc++-v3-init ): Use it.
+
+2001-08-13  Gabriel Dos Reis  
+
+	* include/bits/ostream.tcc (__pad_char): Change toplevel '__fmt'
+	to '__adjust' to avoid shadowing in nested scope.
+
+2001-08-10  Gabriel Dos Reis  
+
+	* include/bits/std_limits.h(__glibcpp_char_is_signed): Use
+	__CHAR_UNSIGNED__.
+
+	* config/os/gnu-linux/bits/os_defines.h(__glibcpp_char_is_signed):
+	Likewise.
+	* config/os/aix/bits/os_defines.h(__glibcpp_plain_char_is_signed):
+	Remove.
+
+2001-08-10  Loren J. Rittle  
+
+	* testsuite/testsuite_hooks.h (__set_testsuite_memlimit): Add
+	dummy default argument to the non-limit implementation.
+
+	bootstrap/3963
+	* include/Makefile.am: Use relative file path in rule to allow
+	colon in $(objdir).
+	* include/Makefile.in: Rebuilt.
+
+2001-08-10  Gunter Winkler  
+
+	* include/bits/std_complex.h (complex::operator*=,
+	complex::operator/=): Fix thinko.
+
+2001-08-10  Gabriel Dos Reis  
+
+	* include/bits/std_limits.h: New file.
+	* include/Makefile.am (bits_headers): Add std_limits.h
+	(all-local): std_limits.h is no longer built.
+	(${target_builddir}/std_limits.h): Remove.
+	* include/Makefile.in: Regenerate.
+	* src/limits.cc: New file.
+	* src/Makefile.am (sources): Add limits.cc in replacement of
+	limitsMEMBERS.cc.
+	* src/Makefile.in: Regenerate.
+
+2001-08-09  Gabriel Dos Reis  
+
+	* src/gen-num-limits.cc (digits10): Fix thinko.
+
+2001-08-09  Benjamin Kosnik  
+
+	* po/Makefile.am (check-no): Add.
+	(check-yes): Same.
+	* po/Makefile.in: Regenerate.
+
+2001-08-09  Benjamin Kosnik  
+
+	* acconfig.h (_GLIBCPP_MEM_LIMITS): Define.
+	* config.h.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_CHECK_SETRLIMIT): Check for setrlimit
+	function.
+	* aclocal.m4: Regenerate.
+	* configure.in: Remove duplicate AM_CONFIG_HEADER.
+	(AM_CONFIG_HEADER): Remove testsuite/testsuite_hooks.h.
+	Only call GLIBCPP_CHECK_SETRLIMIT for native compiles.
+	* configure: Regenerate.
+	* testsuite_hooks.h.in: Move to...
+	* testsuite_hooks.h: Here, include c++config.h. Use it.
+
+	* Makefile.am (SUBDIRS): Move testsuite to last directory.
+	* Makefile.in: Regenerate.
+	* po/Makefile.am (stamp-po): Add.
+
+2001-08-09  David Edelsohn  
+
+	* config/os/aix/bits/os_defines.h: Define std_limits.h macros.
+	* config/os/generic/bits/os_defines.h: Likewise.
+	* config/os/gnu-linux/bits/os_defines.h: Likewise.
+	* config/os/hpux/bits/os_defines.h: Likewise.
+	* config/os/irix/irix6.5/bits/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.7/bits/os_defines.h: Likewise.
+
+2001-08-08  Benjamin Kosnik  
+
+	* src/Makefile.am (libstdc___la_LDFLAGS): Use -release instead of
+	-version-info, use substituted VERSION info.
+	* src/Makefile.in: Regenerate.
+
+2001-08-07  Benjamin Kosnik  
+
+	Implement std::messages.
+	Make config a fully-nested directory.
+	* config/locale: New directory.
+	* config/c_locale_generic.cc: Move into locale subdirectory.
+	* config/c_locale_generic.h: Same.
+	* config/c_locale_gnu.cc: Same.
+	* config/c_locale_gnu.h: Same.
+	* config/c_locale_ieee_1003.1-200x.cc: Same.
+	* config/c_locale_ieee_1003.1-200x_.h: Same.
+	* config/codecvt_specializations_generic.h: Same.
+	* config/codecvt_specializations_ieee_1003.1-200x.h: Same.
+	* config/messages_members_gnu.h: Same.
+	* config/messaages_members_gnu.cc: Same.
+	* config/messages_members_generic.h: Same.
+	* config/messaages_members_generic.cc: Same.
+	* config/messages_members_ieee_1003.1-200x.h: Same.
+	* config/messaages_members_ieee_1003.1-200x.cc: Same.
+	* config/io: New directory.
+	* config/basic_file_libio.h: Move into io subdirectory.
+	* config/basic_file_libio.cc: Same.
+	* config/c_io_libio.h: Same.
+	* config/c_io_libio_codecvt.c: Same.
+	* config/basic_file_stdio.h: Same.
+	* config/basic_file_stdio.cc: Same.
+	* config/c_io_stdio.h: Same.
+
+	* po: New directory.
+	* po/POTFILES.in: New file.
+	* po/Makefile.am: New file.
+	* po/Makefile.in: New file.
+	* po/libstdc++.pot: Generic translation file.
+	* po/fr.po: Preliminary French translation.
+	* po/de.po: Preliminary German translation.
+	* intl: New directory.
+	* intl/Makefile.am: New file.
+	* intl/Makefile.in: New file.
+	* intl/string_literals.cc: New file.
+	* acinclude.m4 (GLIBCPP_CONFIGURE): Bump VERSION to 3.1.0. Add
+	requisite setup for gettext. Re-arrange.
+	* aclocal.m4: Regenerate.
+	* configure.in: Don't call GLIBCPP_CHECK_COMPILER_VERSION.
+	Output Makefile bits for po and intl.
+	* configure: Regenerate.
+	* Makefile.am (SUBDIRS): Add intl, po. Add rule for dist.
+	* Makefile.in: Regenerate.
+	* acconfig.h: Add ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY.
+	* config.h.in: Regenerate.
+
+	* acinclude.m4 (AC_REPLACE_STRINGFUNCS): Remove.
+
+	* include/Makefile.am (install-data-local): Don't install Makefile.
+	* include/Makefile.in: Regenerate.
+
+	* include/bits/locale_facet.h (locale::facet::_S_clone_c_locale):
+	Add member.
+	* config/locale/c_locale_gnu.cc (_S_clone_c_locale): Add definition.
+	* config/locale/c_locale_generic.cc: Same.
+	* config/locale/c_locale_ieee_1003.1-200x.cc: Same.
+
+	* include/bits/codecvt.h: Excise non-standard, non-required
+	bits. This includes __enc_traits, and partial specializations of
+	codecvt for __enc_traits.
+	* src/codecvt.cc (__enc_traits::_S_max_size): Guard
+	* config/codecvt_partials_ieee_1003.1-200x.h: New file.
+	* config/codecvt_partials_generic.h: New file.
+	* include/Makefile.am (allstamps): Add stamp-codecvt_model.
+	(stamp-codecvt_model): Add.
+	* include/Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add in codecvt configury.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/22_locale/codecvt_unicode_wchar_t.cc: Use macro guard.
+	* testsuite/22_locale/codecvt_unicode_char.cc: Same.
+	* testsuite/22_locale/ctor_copy_dtor.cc: And here.
+
+	* include/bits/localefwd.h (class locale::facet): Add __enc_traits
+	as a friend for _S_*_c_locale functions.
+	* include/bits/codecvt.h (__enc_traits::__enc_traits): Add locale
+	argument to default constructor so that CODESET information can be
+	deduced.
+	* include/bits/locale_facets.h (messages_byname):
+	Re-implement. Remove specializations.
+	* src/locale.cc (messages_byname): Remove specialization.
+	(messages_byname): Same.
+	* config/locale/c_locale_ieee_1003.1-200x.cc: New file.
+	* config/locale/c_locale_ieee_1003.1-200x.h: New file.
+	* config/locale/messages_members_ieee_1003.1-200x.cc: New file.
+	* config/locale/messages_members_ieee_1003.1-200x.h: New file.
+	* config/locale/messages_members_gnu.cc: New file.
+	* config/locale/messages_members_gnu.h: New file.
+	* config/locale/messages_members_generic.cc: New file.
+	* config/locale/messages_members_generic.h: New file.
+
+	* docs/html/configopts.html: Add documentation for new locale
+	model, ieee_1003.1. Adjust other flags for current defaults.
+	* docs/html/22_locale/locale.html: Update.
+	* docs/html/22_locale/howto.html: Add link to messages.html. Organize.
+	* docs/html/22_locale/messages.html: New.
+
+	* src/Makefile.am (sources): Add messages_virtuals.cc.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.am (allstamps): Add stamp-messages_model.
+	(stamp-messages_model): Add.
+	* include/Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add in messages configury.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+	* testsuite_flags.in (--cxxflags): Add LOCALEDIR.
+	* testsuite/lib/libstdc++-v3-dg.exp: Remove broken LD_LIBRARY_PATH
+	bits for Irix.
+	* acinclude (GLIBCPP_ENABLE_CLOCALE): Set glibcpp_localedir to the
+	build directories message catalog base directory, and export.
+	Eventually this should probably be made to deal with build and
+	install directories. For now, punt on this as the library itself
+	doesn't use message catalogs (yet).
+	* testsuite/22_locale/messages.cc: New file.
+	* testsuite/22_locale/messages_char_members.cc: New file.
+	* testsuite/22_locale/messages_byname.cc: New file.
+
+2001-08-06  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE):  New macro, calls...
+	(GLIBCPP_CHECK_SETRLIMIT):  ...this new macro, which also uses...
+	(GLIBCPP_CHECK_SETRLIMIT_ancilliary):  ...this new macro.
+	* configure.in (AM_CONFIG_HEADER):  Also generate testsuite_hooks.h.
+	Call GLIBCPP_CONFIGURE_TESTSUITE.
+	* aclocal.m4:  Regenerate.
+	* config.h.in:  Regenerate.
+	* configure:  Regenerate.
+
+	* testsuite/lib/libstdc++-v3-dg.exp:  Download new header instead
+	of old header.
+
+	* testsuite_flags.in:  Add build dir's testsuite to INCLUDES.
+	* testsuite/debug_assert.h:  Removed; contents merged into...
+	* testsuite/testsuite_hooks.h.in:  ...here.  New file.
+	* testsuite/17_intro/header_ciso646.cc:  No longer include
+	debug_assert.h, include testsuite_hooks.h instead.
+	* testsuite/17_intro/header_fstream.cc:  Likewise.
+	* testsuite/17_intro/header_iomanip.cc:  Likewise.
+	* testsuite/17_intro/header_ios.cc:  Likewise.
+	* testsuite/17_intro/header_iosfwd.cc:  Likewise.
+	* testsuite/17_intro/header_iostream.cc:  Likewise.
+	* testsuite/17_intro/header_istream.cc:  Likewise.
+	* testsuite/17_intro/header_ostream.cc:  Likewise.
+	* testsuite/17_intro/header_sstream.cc:  Likewise.
+	* testsuite/17_intro/header_streambuf.cc:  Likewise.
+	* testsuite/18_support/numeric_limits.cc:  Likewise.
+	* testsuite/19_diagnostics/stdexceptions.cc:  Likewise.
+	* testsuite/20_util/allocator_members.cc:  Likewise.
+	* testsuite/20_util/auto_ptr.cc:  Likewise.
+	* testsuite/20_util/pairs.cc:  Likewise.
+	* testsuite/21_strings/append.cc:  Likewise.
+	* testsuite/21_strings/capacity.cc:  Likewise.
+	* testsuite/21_strings/char_traits_requirements.cc:  Likewise.
+	* testsuite/21_strings/compare.cc:  Likewise.
+	* testsuite/21_strings/ctor_copy_dtor.cc:  Likewise.  Also set up
+	call to (disabled) __set_testsuite_memlimit() wrapper.
+	* testsuite/21_strings/element_access.cc:  Likewise.
+	* testsuite/21_strings/find.cc:  Likewise.
+	* testsuite/21_strings/insert.cc:  Likewise.  Also set up call to
+	(disabled) __set_testsuite_memlimit() wrapper.
+	* testsuite/21_strings/inserters_extractors.cc:  Likewise.
+	* testsuite/21_strings/invariants.cc:  Likewise.
+	* testsuite/21_strings/nonmember.cc:  Likewise.
+	* testsuite/21_strings/operations.cc:  Likewise.
+	* testsuite/21_strings/replace.cc:  Likewise.
+	* testsuite/21_strings/rfind.cc:  Likewise.
+	* testsuite/21_strings/substr.cc:  Likewise.
+	* testsuite/22_locale/codecvt_char_char.cc:  Likewise.
+	* testsuite/22_locale/codecvt_unicode_char.cc:  Likewise.
+	* testsuite/22_locale/codecvt_unicode_wchar_t.cc:  Likewise.
+	* testsuite/22_locale/codecvt_wchar_t_char.cc:  Likewise.
+	* testsuite/22_locale/ctor_copy_dtor.cc:  Likewise.
+	* testsuite/22_locale/ctype_char_members.cc:  Likewise.
+	* testsuite/22_locale/ctype_wchar_t_members.cc:  Likewise.
+	* testsuite/22_locale/facet.cc:  Likewise.
+	* testsuite/22_locale/global_templates.cc:  Likewise.
+	* testsuite/22_locale/members.cc:  Likewise.
+	* testsuite/22_locale/numpunct_byname.cc:  Likewise.
+	* testsuite/22_locale/numpunct_char_members.cc:  Likewise.
+	* testsuite/22_locale/operators.cc:  Likewise.
+	* testsuite/22_locale/static_members.cc:  Likewise.
+	* testsuite/23_containers/bitset_ctor.cc:  Likewise.
+	* testsuite/23_containers/bitset_members.cc:  Likewise.
+	* testsuite/23_containers/bitset_shift.cc:  Likewise.
+	* testsuite/23_containers/vector_capacity.cc:  Likewise.
+	* testsuite/23_containers/vector_ctor.cc:  Likewise.
+	* testsuite/23_containers/vector_element_access.cc:  Likewise.
+	* testsuite/23_containers/vector_modifiers.cc:  Likewise.
+	* testsuite/24_iterators/istreambuf_iterator.cc:  Likewise.
+	* testsuite/24_iterators/iterator.cc:  Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator.cc:  Likewise.
+	* testsuite/25_algorithms/binary_search.cc:  Likewise.
+	* testsuite/25_algorithms/copy.cc:  Likewise.
+	* testsuite/25_algorithms/heap.cc:  Likewise.
+	* testsuite/25_algorithms/lower_bound.cc:  Likewise.
+	* testsuite/25_algorithms/min_max.cc:  Likewise.
+	* testsuite/25_algorithms/partition.cc:  Likewise.
+	* testsuite/25_algorithms/rotate.cc:  Likewise.
+	* testsuite/25_algorithms/sort.cc:  Likewise.
+	* testsuite/26_numerics/c_math.cc:  Likewise.
+	* testsuite/26_numerics/complex_inserters_extractors.cc:  Likewise.
+	* testsuite/26_numerics/complex_value.cc:  Likewise.
+	* testsuite/27_io/filebuf.cc:  Likewise.
+	* testsuite/27_io/filebuf_members.cc:  Likewise.
+	* testsuite/27_io/filebuf_virtuals.cc:  Likewise.
+	* testsuite/27_io/fpos.cc:  Likewise.
+	* testsuite/27_io/fstream_members.cc:  Likewise.
+	* testsuite/27_io/ifstream_members.cc:  Likewise.
+	* testsuite/27_io/ios_base_callbacks.cc:  Likewise.
+	* testsuite/27_io/ios_base_members_static.cc:  Likewise.
+	* testsuite/27_io/ios_base_storage.cc:  Likewise.
+	* testsuite/27_io/ios_ctor.cc:  Likewise.
+	* testsuite/27_io/ios_init.cc:  Likewise.
+	* testsuite/27_io/ios_manip_basefield.cc:  Likewise.
+	* testsuite/27_io/ios_manip_fmtflags.cc:  Likewise.
+	* testsuite/27_io/ios_members.cc:  Likewise.
+	* testsuite/27_io/istream_extractor_arith.cc:  Likewise.
+	* testsuite/27_io/istream_extractor_char.cc:  Likewise.
+	* testsuite/27_io/istream_extractor_other.cc:  Likewise.
+	* testsuite/27_io/istream_manip.cc:  Likewise.
+	* testsuite/27_io/istream_seeks.cc:  Likewise.
+	* testsuite/27_io/istream_sentry.cc:  Likewise.
+	* testsuite/27_io/istream_unformatted.cc:  Likewise.
+	* testsuite/27_io/istringstream_members.cc:  Likewise.
+	* testsuite/27_io/narrow_stream_objects.cc:  Likewise.
+	* testsuite/27_io/ofstream_members.cc:  Likewise.
+	* testsuite/27_io/ostream_inserter_arith.cc:  Likewise.
+	* testsuite/27_io/ostream_inserter_char.cc:  Likewise.
+	* testsuite/27_io/ostream_inserter_other.cc:  Likewise.
+	* testsuite/27_io/ostream_manip.cc:  Likewise.
+	* testsuite/27_io/ostream_seeks.cc:  Likewise.
+	* testsuite/27_io/ostream_unformatted.cc:  Likewise.
+	* testsuite/27_io/ostringstream_members.cc:  Likewise.
+	* testsuite/27_io/streambuf.cc:  Likewise.
+	* testsuite/27_io/stringbuf.cc:  Likewise.
+	* testsuite/27_io/stringbuf_virtuals.cc:  Likewise.
+	* testsuite/27_io/stringstream.cc:  Likewise.
+	* testsuite/27_io/stringstream_members.cc:  Likewise.
+	* testsuite/27_io/wide_stream_objects.cc:  Likewise.
+
+2001-07-31  Loren J. Rittle  
+
+	* src/gen-num-limits.cc:  Use __LONG_LONG_MAX__.
+
+2001-07-30  Benjamin Kosnik  
+
+	* configure.target: Remove mips from cpu table.
+	* config/cpu/mips/bits/atomicity.h: Remove generic
+	versions. Comment sgidefs include.
+
+2001-07-25  H.J. Lu 
+
+	* configure.target (cpu_include_dir): Set to `config/cpu/mips'
+	for mips.
+
+	* config/cpu/mips/bits/atomicity.h: New.
+
+2001-07-25  Gabriel Dos Reis  
+
+	* acinclude.m4: CHECK_MATH_DECL_AND_LINKAGE for hypot, hypotf,
+	hypotl, atan2f, atan2l.  Remove from REPLACE_MATHFUNCS list.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+	* libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove hypotl.c
+	(EXTRA_DIST): Remove hypot.c hypotf.c.
+	* libmath/Makefile.am: Regenerate.
+	* libmath/hypotf.c: Remove.
+	* libmath/hypot.c: Likewise.
+	* libmath/hypotl.c: Likewise.
+	* libmath/stubs.c: The macros seen here are HAVE_xxx, not
+	_GLIBCPP_HAVE_xxx.  Add long double versions.
+
+2001-07-23  David Edelsohn  
+
+	* include/bits/limits_generic.h (int): Set digits and digits10
+	appropriately for word size.
+	(unsigned int,long,unsigned long): Likewise.
+
+2001-07-19  Peter Schmid  
+
+	* include/bits/stl_algo.h : Fix typos.
+	* testsuite/25_algorithms/unique.cc: New file.
+
+2001-07-19  Phil Edwards  
+	    Mark Mitchell 
+
+	Merge from cp-parser-branch.
+	* include/bits/basic_string.h:  Qualify symbols with 'template'.
+	* include/bits/basic_string.tcc:  Likewise.
+	* include/bits/fstream.tcc:  Likewise.
+	* include/bits/istream.tcc:  Likewise.
+	* include/bits/sstream.tcc:  Likewise.
+	* include/bits/std_istream.h:  Likewise.
+	* include/bits/stl_iterator.h:  Likewise.
+	* include/bits/streambuf.tcc:  Likewise.
+	* src/gen-num-limits.cc:  Add 'template<>' to specializations.
+	* src/locale.cc:  Likewise.
+
+2001-07-19  Gabriel Dos Reis  
+	    Bert De Knuydt 
+
+	* src/gen-num-limits.cc (set_signals_handler): New function.
+	Factor out signals setting.  Set signal handler for SIGILL.
+
+2001-07-18  Phil Edwards  
+
+	* docs/html/27_io/howto.html:  Fix typo.
+	* docs/html/faq/index.html:  Minor updates for 3.0 all around.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-07-18  Stephen M. Webb  
+	    Roman Sulzhyk  
+
+	libstdc++/3599
+	* include/bits/ostream.tcc (ostream::put): Fixed error condition check.
+	* testsuite/27_io/streambuf.cc (test07): Added new regression test.
+
+2001-07-17  Stephen M. Webb   r
+
+	All occurrences of the __value_type() and __distance_type()
+	functions, which were required to support the HP STL, have been
+	removed along with all the auxiliary forwarding functions that
+	were required to support their use.
+
+	The __iterator_category() function was pretty much left alone
+	because there was no benefit to removing it and its use made code
+	just a little more readable.
+
+	Incidences of distance() with nonstandard argument list were
+	replaced by calls to the standard function (only in the files
+	affected by the removal of the other HP functions).
+
+	The signature of the rotate() algorithm was changed to match the
+	standard.
+
+	Headers were reformatted under C++STYLE guidelines (indentation,
+	linebreaks, typename keyword).
+
+	* include/bits/stl_algo.h: replaced __value_type() and
+	__distance_type() with iterator_traits, eliminated auxiliary
+	support functions required to support said function usage.
+	Changed nonstandard distance() call to standard call.
+
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_heap.h: Same.
+	* include/bits/stl_numeric.h: Same.
+	* include/bits/stl_uninitialized.h: Same.
+	* include/bits/stl_iterator_base_types.h (__value_type()):
+	Removed.
+	(__distance_type()): Removed.
+	(value_type()): Gone.
+	(distance_type()): Done in.
+	(iterator_category()): Hasta la vista, baby.
+
+	* include/bits/stl_iterator_base_funcs.h (iterator_category()):
+	Replaced with __iterator_category().
+	* include/backward/iterator.h: moved definition of value_type(),
+	distance_type(), and iterator_category() out of std:: and into
+	here.
+	* testsuite/23_containers/vector_ctor.cc (test03): New testcases.
+	* testsuite/23_containers/vector_modifiers.cc (test03): New testcases.
+	* testsuite/25_algorithms/rotate.cc: New testcase.
+	* testsuite/25_algorithms/copy.cc: New testcase.
+	* testsuite/25_algorithms/sort.cc: Same.
+	* testsuite/25_algorithms/heap.cc: Same.
+	* testsuite/25_algorithms/partition.cc: Same.
+	* testsuite/25_algorithms/binary_search.cc: Same.
+	* testsuite/26_numerics/sum_diff.cc: Ditto.
+
+001-07-17  Benjamin Kosnik  
+
+	* testsuite/README: Add notes on naming test cases.
+	* testsuite/22_locale/members.cc: Mark as xfail.
+	* testsuite/22_locale/numpunct_char_members.cc: Same.
+
+2001-07-16  Stephen M. Webb  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_CHEADERS):  Use glibcpp_srcdir when
+	setting C_INCLUDE_DIR.
+	* configure.in:  Revert yesterday's LN_S change.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+
+2001-07-15  Phil Edwards  
+
+	* configure.in:  Temporarily force LN_S to copy instead of symlink.
+	* configure:  Regenerate.
+
+2001-07-13  Phil Edwards  
+
+	* include/bits/std_sstream.h (basic_stringbuf::basic_stringbuf(string):
+	Initialize _M_string with pointer-and-size constructor, not just
+	pointer.  Fix some comments.
+	* testsuite/21_strings/ctor_copy_dtor.cc (test03):  New test.
+	* testsuite/27_io/stringbuf.cc (test02):  Remove unused variable.
+	(test03):  Add embedded-NUL tests.
+
+	* mkcheck.in:  When printing totals, match the order of the tests.
+	* include/bits/stringfwd.h:  Use same declaration keywords.
+	* include/bits/std_iosfwd.h:  Cosmetic spacing.
+
+2001-07-13  Stephen M. Webb  
+	    Loren J. Rittle  
+	    Phil Edwards  
+
+	* include/Makefile.am:  New file encapsulating header generation rules.
+	* Makefile.am (SUBDIRS):  Prepend 'include' directory.
+	* acinclude.m4:  Moved/removed rules for building various headers.
+	* configure.in (AC_OUTPUT):  Add include/Makefile.
+	* mkc++config:  Removed.
+
+	* testsuite_flags.in:  Changed build-includes to match new scheme.
+	* mknumeric_limits:  Likewise.
+	* libio/Makefile.am:  Changed INCLUDES to maatch new header scheme.
+	* libmath/Makefile.am:  Likewise.
+	* libsupc++/Makefile.am:  Likewise.
+	* src/Makefile.am:  Likewise; removed rules to build headers.
+	* libmath/mathconf.h:  Changed #include'd header names to match.
+	* libmath/stubs.c:  Likewise.
+	* src/gen-num-limits.cc:  Likewise.
+
+	* configure:  Regenerated.
+	* config.h.in:  Regenerated.
+	* aclocal.m4:  Regenerated.
+	* Makefile.in:  Regenerated.
+	* include/Makefile.in:  Regenerated.
+	* libio/Makefile.in:  Regenerated.
+	* libmath/Makefile.in:  Regenerated.
+	* libsupc++/Makefile.in:  Regenerated.
+	* src/Makefile.in:  Regenerated.
+	* testsuite/Makefile.in:  Regenerated.
+
+2001-07-11   Felix Natter  
+
+	* docs/html/17_intro/porting-howto.xml:  Initial checkin of
+	master copy.
+	* docs/html/17_intro/porting-howto.html:  check in v0.9.3
+
+2001-07-11  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Don't keep output from previous run.
+	* docs/doxygen/user.cfg.in:  Tweaks.
+	* include/bits/c++config:  Documentation comments for Doxygen.
+	* include/bits/char_traits.h:  Likewise.
+	* include/bits/limits_generic.h:  Likewise.
+	* include/bits/std_stdexcept.h:  Likewise.
+	* include/bits/stl_pair.h:  Likewise.
+	* libsupc++/exception:  Likewise.
+	* libsupc++/new:  Likewise.
+	* libsupc++/typeinfo:  Likewise.
+	* libmath/Makefile.am:  Update and correct copyright.
+
+2001-07-10  Gabriel Dos Reis  
+
+	* acinclude.m4: Don't AC_REPLACE_MATHFUNCS expf and atan2f.
+	* aclocal.m4: Regenerate.
+	* configure: Same.
+
+2001-07-09  Phil Edwards  
+
+	* docs/html/configopts.html:  Fix thinko.
+	* docs/html/27_io/howto.html:  Fix thinko and HTML markup.
+	* include/bits/stl_iterator.h:  Fix typo.
+
+2001-07-09  Phil Edwards  
+
+	* docs/html/explanations.html:  New file.
+	* docs/html/configopts.html:  Link to it to provide more notes
+	on cstdio.  Minor markup and spacing fixes.
+	* docs/html/27_io/howto.html:  Talk about sync_with_stdio.
+
+2001-07-09  Kriang Lerdsuwanakij  
+
+	* include/bits/valarray_meta.h (_Expr::operator+): Use qualified id
+	for _Expr template template argument.
+	(_Expr::operator-): Likewise.
+	(_Expr::operator~): Likewise.
+	(_Expr::operator!): Likewise.
+	(_DEFINE_EXPR_UNARY_OPERATOR): Likewise.
+
+2001-07-06  Gabriel Dos Reis  
+
+	* libmath/Makefile.am (EXTRA_DIST): Remove atan2f.c and expf.c
+	* libmath/Makefile.in: Regenerate.
+	* libmath/expf.c: Remove.
+	* libmath/atan2f.c: Likewise.
+
+2001-07-06  Daniel Jacobowitz  
+
+	* configure.in: Remove NATIVE, NULL_TARGET.
+	Set CANADIAN only for Canadian crosses.  Set xcompiling
+	for both Canadian crosses and host-x-host crosses.
+	* configure: Regenerated.
+
+2001-07-06  Peter Schmid  
+
+	* include/bits/stl_vector.h (vector::_M_initialize_aux): Fix typo.
+
+2001-07-05  Jason Merrill  
+
+	* testsuite_flags.in (--build-includes): backward, not backwards.
+
+2001-07-04  Jeffrey Oldham  
+
+	* include/ext/ropeimpl.h (_Rope_RopeRep::_M_free_c_string):
+	Replace destroy by _Destroy.
+	(_Rope_RopeRep::_S_free_string): Likewise.
+	(rope::c_str()): Likewise.
+	* include/ext/slist (_Slist_base::_M_erase_after>): Likewise.
+	(_Slist_base::_M_erase_after): Likewise.
+	(slist::_M_create_node): Replace construct by _Construct.
+	(slist::pop_front): Replace destroy by _Destroy.
+	* include/ext/stl_hashtable.h (hashtable::_M_new_node): Replace
+	construct by _Construct.
+	(hashtable::_M_delete_node): Replace destroy by _Destroy.
+	* include/ext/stl_rope.h (rope::rope): Replace construct by
+	_Construct.
+	(rope::copy): Replace destroy by _Destroy.
+
+2001-07-03  Benjamin Kosnik  
+
+	* include/bits/localefwd.h: Format.
+	* include/bits/locale_facts.tcc (locale::combine): Adjust.
+	* src/locale.cc (locale::locale::(_Impl)): Don't call
+	_M_add_reference.
+	(locale::facet::_M_remove_reference): Simplify.
+	* src/globals.cc (locale_impl_c): New. Format.
+	(locale_c): New.
+	* src/ios.cc (ios_base::Init::Init): Increment _S_ios_base_init last.
+
+2001-07-02  Loren J. Rittle  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Protect variable from shell
+	expansion (thanks to Alexandre Oliva).
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-07-02  Benjamin Kosnik  
+
+	* src/locale.cc (locale::locale(const char*)): Make sure global
+	locales are initialized.
+	* include/bits/locale_facets.tcc (locale::combine): Refcout should
+	be zero, not one as it's return-by-value.
+	* testsuite/27_io/ios_base_callbacks.cc (test01): Don't check for
+	named locales here.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test01): Instead, check
+	for it here.
+	(test02): Add test.
+	* libsupc++/eh_alloc.cc: Use climits, not limits.h.
+
+2001-07-02  Loren J. Rittle  
+
+	libstdc++/3284
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Portability enhancement.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-07-02  Loren J. Rittle  
+
+	libstdc++/3243
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Add relative path to
+	staged/installed area to support -I-.  Document.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-07-02  Loren J. Rittle  
+
+	libstdc++/2211
+	* src/ios.cc (ios_base::Init::_S_ios_create): Rename __bufsize to
+	__out_bufsize.  Add __in_bufsize, document it and use it.
+
+2001-07-01  Stephen M. Webb 
+
+	* include/bits/stl_construct.h (construct): Remove.
+	(destroy): Remove.
+	(__destroy): Replaced by use of iterator_traits.
+	* include/bits/stl_deque.h: replaced HP iterator functions with
+	iterator_traits.
+	(construct): changed to _Construct.
+	(destroy): changed to _Destroy.
+	* include/bits/stl_tempbuf.h: Same.
+	* include/bits/stl_tree.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/backward/iterator.h (construct): moved definition to here.
+	(destroy): Same.
+
+2001-06-29  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (locale::combine): Clone _Impl.
+	before replacing facet.
+	* include/bits/localefwd.h (locale::_Impl::_M_remove_reference):
+	Correct decrement.
+	* src/localename.cc (locale::_Impl): Correct ctor initialization
+	lists. Initialize ref count with one. Simplify.
+	* src/locale.cc: Add comment.
+	* testsuite/22_locale/numpunct.cc (test01): Add derivation test.
+	* testsuite/22_locale/numpunct_char_members.cc (test01): Add tests.
+	* testsuite/22_locale/members.cc (test02): Fix.
+
+2001-06-27  Phil Edwards  
+
+	* include/backward/algo.h:  Add "GPL plus runtime exception" comment
+	block, this time for real.
+	* include/backward/algobase.h:  Likewise.
+	* include/backward/alloc.h:  Likewise.
+	* include/backward/bvector.h:  Likewise.
+	* include/backward/defalloc.h:  Likewise.
+	* include/backward/deque.h:  Likewise.
+	* include/backward/function.h:  Likewise.
+	* include/backward/hash_map.h:  Likewise.
+	* include/backward/hash_set.h:  Likewise.
+	* include/backward/hashtable.h:  Likewise.
+	* include/backward/heap.h:  Likewise.
+	* include/backward/iterator.h:  Likewise.
+	* include/backward/list.h:  Likewise.
+	* include/backward/map.h:  Likewise.
+	* include/backward/multimap.h:  Likewise.
+	* include/backward/multiset.h:  Likewise.
+	* include/backward/pair.h:  Likewise.
+	* include/backward/rope.h:  Likewise.
+	* include/backward/set.h:  Likewise.
+	* include/backward/slist.h:  Likewise.
+	* include/backward/stack.h:  Likewise.
+	* include/backward/strstream:  Likewise.
+	* include/backward/tempbuf.h:  Likewise.
+	* include/backward/tree.h:  Likewise.
+	* include/backward/vector.h:  Likewise.
+	* include/bits/pthread_allocimpl.h:  Likewise.
+	* include/bits/std_algorithm.h:  Likewise.
+	* include/bits/std_bitset.h:  Likewise.
+	* include/bits/std_deque.h:  Likewise.
+	* include/bits/std_functional.h:  Likewise.
+	* include/bits/std_iterator.h:  Likewise.
+	* include/bits/std_list.h:  Likewise.
+	* include/bits/std_map.h:  Likewise.
+	* include/bits/std_memory.h:  Likewise.
+	* include/bits/std_numeric.h:  Likewise.
+	* include/bits/std_queue.h:  Likewise.
+	* include/bits/std_set.h:  Likewise.
+	* include/bits/std_stack.h:  Likewise.
+	* include/bits/std_utility.h:  Likewise.
+	* include/bits/std_vector.h:  Likewise.
+	* include/bits/stl_algo.h:  Likewise.
+	* include/bits/stl_algobase.h:  Likewise.
+	* include/bits/stl_alloc.h:  Likewise.
+	* include/bits/stl_bvector.h:  Likewise.
+	* include/bits/stl_construct.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_function.h:  Likewise.
+	* include/bits/stl_heap.h:  Likewise.
+	* include/bits/stl_iterator.h:  Likewise.
+	* include/bits/stl_iterator_base_funcs.h:  Likewise.
+	* include/bits/stl_iterator_base_types.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_map.h:  Likewise.
+	* include/bits/stl_multimap.h:  Likewise.
+	* include/bits/stl_multiset.h:  Likewise.
+	* include/bits/stl_numeric.h:  Likewise.
+	* include/bits/stl_pair.h:  Likewise.
+	* include/bits/stl_pthread_alloc.h:  Likewise.
+	* include/bits/stl_queue.h:  Likewise.
+	* include/bits/stl_raw_storage_iter.h:  Likewise.
+	* include/bits/stl_relops.h:  Likewise.
+	* include/bits/stl_set.h:  Likewise.
+	* include/bits/stl_stack.h:  Likewise.
+	* include/bits/stl_tempbuf.h:  Likewise.
+	* include/bits/stl_threads.h:  Likewise.
+	* include/bits/stl_tree.h:  Likewise.
+	* include/bits/stl_uninitialized.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/bits/type_traits.h:  Likewise.
+	* include/ext/hash_map:  Likewise.
+	* include/ext/hash_set:  Likewise.
+	* include/ext/rope:  Likewise.
+	* include/ext/ropeimpl.h:  Likewise.
+	* include/ext/slist:  Likewise.
+	* include/ext/stl_hash_fun.h:  Likewise.
+	* include/ext/stl_hashtable.h:  Likewise.
+	* include/ext/stl_rope.h:  Likewise.
+	* src/bitset.cc:  Likewise.
+	* src/strstream.cc:  Likewise.
+
+2001-06-26  Benjamin Kosnik  
+	                     
+
+	libstdc++/3272
+	* include/bits/streambuf.tcc (__copy_streambufs): Don't set eofbit.
+	* testsuite/27_io/ostream_inserter_other.cc (test04): Add test.
+	* testsuite/27_io/istream_extractor_other.cc: Fix.
+
+2001-06-26  Zoltan Hidvegi  
+
+	* acinclude.m4 (glibcpp_toolexeclibdir): Make multilib safe.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-06-26  Benjamin Kosnik  
+
+	* include/bits/stream_iterator.h (istream_iterator): Add copy ctor.
+	(ostream_iterator): Same.
+	* include/bits/stl_iterator.h (front_insert_iterator::operator=):
+	Change argument to const_reference.
+	(back_insert_iterator): Same.
+
+2001-06-26  Benjamin Kosnik  
+
+	* include/bits/sbuf_iter.h: Change to..
+	* include/bits/streambuf_iterator.h: This.
+	* include/bits/stl_iterator.h: Take out of here...
+	* include/bits/stream_iterator.h: Add.
+	* src/Makefile.am (base_headers): Add streambuf_iterator,
+	stream_iterator.h
+	* src/Makefile.in: Regenerate.
+	* include/bits/std_string.h: Adjust includes.
+	* include/bits/basic_ios.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+	* include/bits/std_iosfwd.h: Same.
+
+	* include/bits/std_iterator.h: Add istream, ostream includes.
+	* include/bits/stl_iterator.h: Tweak.
+	* testsuite/24_iterators/ostream_iterator.cc: Add test.
+	* testsuite/24_iterators/istream_iterator.cc: Same.
+	* testsuite/23_containers/multiset.cc: Add iterator include.
+
+2001-06-26  Phil Edwards  
+
+	* acinclude.m4:  Clean extraneous tabs, rewrap 'test' lines.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+
+2001-06-26  Felix Natter  
+
+	* docs/html/17_intro/porting-howto.html:  Fixed some errors.
+
+2001-06-26  Benjamin Kosnik  
+
+	* include/bits/stl_iterator.h (istream_iterator::operator->): Fix
+	return values.
+	(istream_iterator::operator*): Same.
+
+2001-06-26  Benjamin Kosnik  
+	    Alexandre Petit-Bianco  
+
+	* testsuite/21_strings/element_access.cc (test01): Chill Out Cafe
+	is on 41st, not 14th.
+
+2001-06-26  Benjamin Kosnik  
+
+	* include/bits/std_iterator.h: Include sbuf_iter.h via std_ios.h.
+
+	* include/bits/stl_iterator.h (istream_iterator): Inherit from
+	iterator.
+	(ostream_iterator): Same.
+	* testsuite/24_iterators/istream_iterator.cc: New file.
+	* testsuite/24_iterators/ostream_iterator.cc: New file.
+
+	* include/bits/sbuf_iter.h: Remove self typedef.
+	* testsuite/24_iterators/ostreambuf_iterator.cc: Add test.
+	* testsuite/24_iterators/istreambuf_iterator.cc: Add test.
+
+	* include/bits/stl_iterator.h (reverse_iterator): Remove
+	extraneous typedefs. Add typename.
+	(__normal_iterator): Remove typedefs referring to self. Add typename.
+	(reverse_bidiretional_iterator): Remove, not longer required.
+
+2001-06-26  Gabriel Dos Reis  
+
+	* include/bits/stl_iterator.h (__normal_iterator<>): Qualify
+	dependent names with `typename'.  Bring in various required
+	iterator_traits members.  Can't imagine why that used to work.
+
+2001-06-25  Phil Edwards  
+	    Kurt Garloff 
+
+	PR libstdc++/3377
+	* src/cmath.cc:  New [version of an old] file; instantiate
+	__cmath_power to start with.
+	* src/Makefile.am (sources):  Add cmath.cc (and alphabetize).
+	* Makefile.in:  Regenerate.
+	* libio/Makefile.in:  Regenerate.
+	* libmath/Makefile.in:  Regenerate.
+	* libsupc++/Makefile.in:  Regenerate.
+	* src/Makefile.in:  Regenerate.
+	* testsuite/Makefile.in:  Regenerate.
+
+2001-06-24  Gabriel Dos Reis  
+
+	* libmath/stubs.c: Fix thinko.
+
+2001-06-24  David Edelsohn 
+
+	* libmath/stubs.c (sqrtf): Define.
+	(tanf): Correct typo.
+
+2001-06-22  Benjamin Kosnik  
+
+	* include/bits/stl_iterator.h (reverse_iterator): Inherit from
+	iterator.
+	(back_insert_iterator): Same.
+	(front_insert_iterator): Same.
+	(insert_iterator): Same.
+
+	* testsuite/20_util/raw_storage_iterator.cc: Modify.
+	* testsuite/24_iterators/reverse_iterator.cc: New file.
+	* testsuite/24_iterators/back_insert_iterator.cc: New file.
+	* testsuite/24_iterators/front_insert_iterator.cc: New file.
+	* testsuite/24_iterators/insert_iterator.cc: New file.
+
+2001-06-22  Phil Edwards  
+
+	* include/*:  Revert comment/license change from yesterday for all
+	except libsupc++/unwind-cxx.h.
+	* src/bitset.cc:  Likewise.
+	* src/strstream.cc:  Likewise.
+
+2001-06-22  Gabriel Dos Reis  
+
+	* libmath/stubs.c: New file.
+	(tanhf): Fix typo.
+	(powf): Likewise.
+
+	* libmath/Makefile.am (libmath_la_SOURCES): Add.
+	* libmath/Makefile.in.  Regenerate.
+
+2001-06-21  Phil Edwards  
+
+	* include/backward/algo.h:  Add "GPL plus runtime exception" comment.
+	* include/backward/algobase.h:  Likewise.
+	* include/backward/alloc.h:  Likewise.
+	* include/backward/bvector.h:  Likewise.
+	* include/backward/defalloc.h:  Likewise.
+	* include/backward/deque.h:  Likewise.
+	* include/backward/function.h:  Likewise.
+	* include/backward/hash_map.h:  Likewise.
+	* include/backward/hash_set.h:  Likewise.
+	* include/backward/hashtable.h:  Likewise.
+	* include/backward/heap.h:  Likewise.
+	* include/backward/iterator.h:  Likewise.
+	* include/backward/list.h:  Likewise.
+	* include/backward/map.h:  Likewise.
+	* include/backward/multimap.h:  Likewise.
+	* include/backward/multiset.h:  Likewise.
+	* include/backward/pair.h:  Likewise.
+	* include/backward/rope.h:  Likewise.
+	* include/backward/set.h:  Likewise.
+	* include/backward/slist.h:  Likewise.
+	* include/backward/stack.h:  Likewise.
+	* include/backward/strstream:  Likewise.
+	* include/backward/tempbuf.h:  Likewise.
+	* include/backward/tree.h:  Likewise.
+	* include/backward/vector.h:  Likewise.
+	* include/bits/pthread_allocimpl.h:  Likewise.
+	* include/bits/std_algorithm.h:  Likewise.
+	* include/bits/std_bitset.h:  Likewise.
+	* include/bits/std_deque.h:  Likewise.
+	* include/bits/std_functional.h:  Likewise.
+	* include/bits/std_iterator.h:  Likewise.
+	* include/bits/std_list.h:  Likewise.
+	* include/bits/std_map.h:  Likewise.
+	* include/bits/std_memory.h:  Likewise.
+	* include/bits/std_numeric.h:  Likewise.
+	* include/bits/std_queue.h:  Likewise.
+	* include/bits/std_set.h:  Likewise.
+	* include/bits/std_stack.h:  Likewise.
+	* include/bits/std_utility.h:  Likewise.
+	* include/bits/std_vector.h:  Likewise.
+	* include/bits/stl_algo.h:  Likewise.
+	* include/bits/stl_algobase.h:  Likewise.
+	* include/bits/stl_alloc.h:  Likewise.
+	* include/bits/stl_bvector.h:  Likewise.
+	* include/bits/stl_construct.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_function.h:  Likewise.
+	* include/bits/stl_heap.h:  Likewise.
+	* include/bits/stl_iterator.h:  Likewise.
+	* include/bits/stl_iterator_base_funcs.h:  Likewise.
+	* include/bits/stl_iterator_base_types.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_map.h:  Likewise.
+	* include/bits/stl_multimap.h:  Likewise.
+	* include/bits/stl_multiset.h:  Likewise.
+	* include/bits/stl_numeric.h:  Likewise.
+	* include/bits/stl_pair.h:  Likewise.
+	* include/bits/stl_pthread_alloc.h:  Likewise.
+	* include/bits/stl_queue.h:  Likewise.
+	* include/bits/stl_raw_storage_iter.h:  Likewise.
+	* include/bits/stl_relops.h:  Likewise.
+	* include/bits/stl_set.h:  Likewise.
+	* include/bits/stl_stack.h:  Likewise.
+	* include/bits/stl_tempbuf.h:  Likewise.
+	* include/bits/stl_threads.h:  Likewise.
+	* include/bits/stl_tree.h:  Likewise.
+	* include/bits/stl_uninitialized.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/bits/type_traits.h:  Likewise.
+	* include/ext/hash_map:  Likewise.
+	* include/ext/hash_set:  Likewise.
+	* include/ext/rope:  Likewise.
+	* include/ext/ropeimpl.h:  Likewise.
+	* include/ext/slist:  Likewise.
+	* include/ext/stl_hash_fun.h:  Likewise.
+	* include/ext/stl_hashtable.h:  Likewise.
+	* include/ext/stl_rope.h:  Likewise.
+	* libsupc++/unwind-cxx.h:  Likewise.
+	* src/bitset.cc:  Likewise.
+	* src/strstream.cc:  Likewise.
+
+2001-06-21  Gabriel Dos Reis  
+
+	* include/bits/indirect_array.h (indirect_array<>::operator=):
+	Make copy and assignment operator public.  Implement.  Format.
+
+	* include/bits/valarray_array.h (__valarray_copy): Add overloads
+	for copy between index arrays.  Format.
+
+2001-06-19  Benjamin Kosnik  
+
+	* mknumeric_limits: Add static definitions, format.
+	* testsuite/18_support/numeric_limits.cc (test02): Add test.
+
+	* include/c_std/bits/std_cwchar.h: Include ctime.
+	* testsuite/17_intro/header_cwchar.cc : Check.
+
+	* include/c_std/bits/std_cwctype.h: Inject wctype.
+	* testsuite/17_intro/header_cwctype.cc: Update.
+
+2001-06-18  Benjamin Kosnik  
+
+	* include/bits/stl_raw_storage_iter.h: Format. Correct derivation.
+	* testsuite/20_util/raw_storage_iterator.cc: Same.
+
+	* include/bits/stl_alloc.h (_S_chunk_alloc): Change malloc to
+	operator new.
+	(__mem_interface): New typedef for switching between malloc and new.
+	* testsuite/20_util/allocator_members.cc: New file.
+
+	* testsuite/20_util/comparisons.cc: New file.
+	* testsuite/20_util/pairs.cc: New file.
+
+2001-06-15  Phil Edwards  
+
+	* docs/html/documentation.html:  Point to new doxygen'ed collection.
+
+2001-06-14  Nathan Sidwell  
+
+	* configure.in (auxdir): Replace by ...
+	(toprel): ... new variable.
+	(toplevel_srcdir): Construct from $toprel.
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Use $toprel
+	rather than .. to locate gcc source directory.
+	(GLIBCPP_CONFIGURE): Replace $auxdir with $srcdir/$toprel.
+	* aclocal.m4, configure: Rebuilt.
+
+2001-06-13  John David Anglin  
+
+	(Approved by Mark and Benjamin.  Applied by Loren.)
+
+	* src/globals.cc: Define globals _GLIBCPP_mutex_init (),
+	_GLIBCPP_mutex_address_init (), _GLIBCPP_once, _GLIBCPP_mutex
+	and _GLIBCPP_mutex_address.
+	* include/bits/stl_threads.h (_STL_mutex_lock): Use above to provide
+	once-only runtime initialization of _M_lock mutex when
+	__GTHREAD_MUTEX_INIT_FUNCTION is defined.
+	(__STL_MUTEX_INITIALIZER): Provide initializer for _STL_mutex_lock
+	for __GTHREAD_MUTEX_INIT_FUNCTION case.
+
+2001-06-13  Gabriel Dos Reis  
+
+	* testsuite/26_numerics/slice_array_assignment.cc (main): New test.
+
+	* include/bits/slice_array.h (slice_array<>::operator=): Make
+	public and implement.
+	(slice_array<>::slice_array): Make copy-constructor public.
+
+	* include/bits/valarray_array.h (__valarray_copy): Add another
+	overload to copy between strided arrays.
+
+2001-06-13  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE): Bump version to 3.0.0.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* include/bits/c++config (__GLIBCPP__): Update date.
+
+2001-06-12  Benjamin Kosnik  
+
+	* include/bits/fpos.h (fpos::operator-): Don't return reference,
+	return original, non-modified version.
+	(fpos::operator+): Same.
+	* testsuite/27_io/fpos.cc: Add test.
+
+2001-06-12  Loren J. Rittle  
+
+	libstdc++/2071
+	* porting.texi: Add documentation about libstdc++-v3-specific
+	macros that are currently included in os_defines.h files.
+
+	* config/basic_file_stdio.h (sys_getc): New method.
+	(sys_ungetc): New method.
+	* include/bits/basic_file.h: (sys_getc): New method signature.
+	(sys_ungetc): New method signature.
+
+	* include/bits/fstream.tcc (underflow): Add conditional code
+	paths which avoid using short seeks on streams (especially
+	useful when the stream might be interactive or a pipe).  At
+	the moment, this alternate path only avoids seeking when the
+	``buffer size'' of underflow() is 1 since the C standard only
+	guarantees buffer space for one ungetc (this technique could
+	be extended since *-*-solaris* supports buffering for 4 calls
+	to ungetc and *-*-*bsd* supports buffering limited only by
+	memory resources).  Also, _GLIBCPP_AVOID_FSEEK must be defined
+	in a port's os_defines.h file for this alternate path to even
+	be considered.  As a bonus, the idiom of using getc/ungetc
+	requires no system calls whereas fseek maps to one or two
+	system call(s) on many platforms.
+
+	* config/os/bsd/freebsd/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK):
+	Define it.
+	* config/os/solaris/solaris2.5/bits/os_defines.h
+	(_GLIBCPP_AVOID_FSEEK): Likewise.
+	* config/os/solaris/solaris2.6/bits/os_defines.h
+	(_GLIBCPP_AVOID_FSEEK): Likewise.
+	* config/os/solaris/solaris2.7/bits/os_defines.h
+	(_GLIBCPP_AVOID_FSEEK): Likewise.
+
+2001-06-12  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): Change to
+	AC_TRY_COMPILE, so that the built compiler is checked, and
+	bootstraps or cross compiles with an older compile still work.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-06-12  Benjamin Kosnik  
+
+	libstdc++/3142
+	* include/bits/std_sstream.h: Add allocator_type, as per DR 251.
+
+	libstdc++/3141
+	* include/bits/istream.tcc (getline, get): Fix as per DR 243.
+
+	libstdc++/3140
+	* include/bits/std_bitset.h (bitset::set): Fix as per DR 186.
+
+	libstdc++/3139
+	* include/bits/limits_generic.h: Fix as per DR 184.
+
+2001-06-11  Benjamin Kosnik  
+
+	libstdc++/3126
+	* include/bits/basic_string.h (string::compare): Adjust signatures
+	as per DR 5.
+	* include/bits/basic_string.tcc: And here.
+
+	libstdc++/2346
+	* config/c_io_stdio.h: Remove whitespace.
+	* testsuite/27_io/istream_seeks.cc (test03): Add regression.
+	(test02): Add regression.
+	* testsuite/27_io/istream_seeks-3.tst: New file.
+
+2001-06-11  Phil Edwards  
+
+	* README:  Update to reflect reality.
+	* acinclude.m4:  Update descriptions, fix typos.  Comment changes only.
+	* configure.in:  Make certain target_alias is set and subst'd for 2.50.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate (with 2.13).
+
+2001-06-11  Benjamin Kosnik  
+
+	libstdc++/3114
+	* include/bits/ostream.tcc (ostream::seekp): Add error checking as
+	per DR 129.
+	* include/bits/istream.tcc (istream::seekg): Same.
+	* testsuite/27_io/istream_seeks.cc: Fix.
+
+	libstdc++/3113
+	* include/bits/stl_function.h (binder2nd): Fix as per DR 109.
+	(binder1st): Same.
+	* include/bits/std_queue.h: Add c++config.h.
+	* testsuite/20_util/binders.cc: New test.
+
+2001-06-11  Matthias Klose  
+	    Phil Edwards  
+
+	* docs/doxygen/run_doxygen (find_doxygen):  Tweak version check.
+	(main script):  Echo more information.
+
+2001-06-10  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cwchar.h: Alphabetize.
+	* include/bits/char_traits.h: Tweak.
+	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Check for
+	everything used by std_cwchar.h.
+	* aclocal.m4: Regenerate.
+	* configure.in: Regenerate.
+	* config.h.in: Regenerate.
+
+2001-06-10  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_C99): Add stdio.h checking.
+	Add checking for strtof, _Exit in stdlib.h
+	* aclocal.m4: Regenerate.
+	* configure.in: Regenerate.
+	* include/c_std/bits/std_cstdio.h: Alphabetize lists.
+	(snprintf): Put C99 functions into __gnu_cxx namespace.
+	(vfscanf): Same.
+	(vscanf): Same.
+	(vsnprintf): Same.
+	(vsscanf): Same.
+	* include/c_std/bits/std_cstdlib.h: Alphabetize lists. Put undefs
+	for C99 functions within _GLIBCPP_USE_C99 guard.
+	(_Exit): Same.
+	(strtof): Same.
+	(strtold): Same.
+	* include/bits/locale_facets.tcc: Check if C99 is enabled.
+	* include/c_std/bits/std_cwchar.h (__gnu_cxx): Put undefs within
+	C99 guard.
+	* include/c_std/bits/cmath.tcc: Formatting tweak.
+	* include/c_std/bits/std_cmath.h: Same.
+
+2001-06-10  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cstdio.h: Include cstddef for size_t.
+
+2001-06-09  Alexandre Oliva  
+	    Stephen L Moshier  
+
+	* acinclude.m4 (AC_EXEEXT): Work around in case it expands to
+	nothing, as in autoconf 2.50.
+	* configure: Rebuilt.
+
+2001-06-09  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cwchar.h: Remove size_t injection,
+	include std_cstddef.
+	* include/c_std/bits/std_ctime.h: Same.
+	* include/c_std/bits/std_cstring.h: Same.
+	* include/c_std/bits/std_cstdlib.h: Same.
+
+	* include/c_std/bits/std_cstdio.h: Remove vsnprintf, snprintf.
+	* include/c_std/bits/std_cctype.h: Remove isblank.
+
+2001-06-09  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Check for fgetwc,
+	fgetws.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* include/c_std/bits/std_cwchar.h: Remove duplicate fgetwc
+	injection, guard fgetwc, fgetws.
+	* include/c_std/bits/std_cstdio.h: Remove superfluous includes.
+	* include/c_std/bits/std_clocale.h: And here.
+	* include/c_std/bits/std_cctype.h: And here.
+	* include/c_std/bits/std_cstdlib.h (strtof): Guard strtof injection.
+
+	* config/basic_file_stdio.h: Don't include unistd.h.
+	* config/c_io_stdio.h: Don't use compatibility headers.
+	* libsupc++/eh_terminate.cc: Qualify abort.
+	(__terminate): And here.
+	* libsupc++/eh_catch.cc (__cxa_end_catch): Qualify abort.
+
+2001-06-08  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cstdlib.h: Remove _Exit, strtof injections.
+
+2001-06-08  Benjamin Kosnik  
+
+	libstdc++/2767
+	libstdc++/2989
+	libstdc++/2992
+	* include/std/*: Add copyright notice.
+	* include/c_std/bits/*: Use using statements instead of extern "C".
+	* include/c_std/bits/std_cmath.h: Don't overload double versions
+	of math functions with __buitin versions, use global version to
+	prevent ambiguities. Remove define hacks.
+	* include/c_std/bits/std_cwchar.h: Using declarations for "C"
+	functions that have changed signatures and std::
+	declarations. Remove define hacks.
+	* include/c_std/bits/std_cwchar.h: Same, plus remove ambiguous
+	__builtins in std::. Remove define hacks.
+	* testsuite/17_intro/headers_c.cc: Add tests.
+	* testsuite/17_intro/headers_c++.cc: Add test.
+
+2001-06-07  Loren J. Rittle  
+	    John David Anglin  
+
+	c++/3082
+	* libsupc++/eh_alloc.cc: Ensure that required macros are
+	defined before including gthr.h.  Ensure that we get the
+	version of gthr.h for which we know how to provide a
+	configuration.
+	* libsupc++/eh_globals.cc: Likewise.  And, bring the threading
+	code path into line with the current EH model.  Use std, where
+	appropriate.
+
+2001-06-07  Loren J. Rittle  
+	    John David Anglin  
+
+	* config/threads-no.h: Remove file.
+	* config/threads-posix.h: Remove file.
+
+	* acconfig.h (_GLIBCPP_USE_THREADS): Remove.
+	(_GLIBCPP_SUPPORTS_WEAK): Add (required by namespace-clean gthr*.h).
+	(_GLIBCPP_HAVE_GTHR_DEFAULT): Likewise.
+	* config.h.in: Regenerate.
+
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Completely rework to
+	setup and use gthr*.h files.  In particular, make gthr.h files
+	namespace-clean in the staging area (they don't have to be for
+	libgcc.a).
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+	* src/Makefile.am (build_headers): Remove bits/c++threads.h
+	and add bits/gthr.h bits/gthr-single.h bits/gthr-default.h.
+	* src/Makefile.in: Regenerate.
+
+	* include/bits/c++config: Cleanup threading configuration macros.
+	In particular, define __STL_GTHREADS macro which controls...
+	* include/bits/stl_threads.h: ...a brand new gthr.h-based
+	configuration here.
+
+	* config/c_io_stdio.h: Include staged gthr.h instead of local
+	thread configuration file.  Always use __gthread_mutex_t
+	instead of __mutext_type (or int).
+	* include/bits/std_fstream.h: Likewise.
+
+	* docs/html/17_intro/howto.html: Remove placeholder comment in
+	case this configuration patch didn't make it.  Add advice that
+	section only applies if configured with --enable-threads.
+	* docs/html/23_containers/howto.html: Reword to make clear
+	that _PTHREADS is no longer required for any port to be
+	correctly using STL with threads.  Add advice that section
+	only applies if configured with --enable-threads.
+
+2001-06-06  Benjamin Kosnik  
+
+	* src/string-inst.cc (_Rep::_S_max_size): Add instantiation.
+
+2001-06-05  Benjamin Kosnik  
+
+	libstdc++/3045
+	* include/bits/basic_ios.tcc: Formatting tweaks.
+	* include/bits/ios_base.h: Formatting tweaks.
+	* src/ios.cc (ios_base::Init::_S_ios_create): Use filebufs here.
+	(ios_base::Init::_S_ios_destroy): ..and here. Explicitly call dtors.
+	* src/globals.cc: Allocate filebufs for standard streams here.
+	(buf_cout, buf_cin, buf_cerr): Like so.
+	(buf_wcout, buf_wcin, buf_wcerr): And so.
+	* testsuite/27_io/ios_init.cc: Add.
+
+2001-06-04  Brendan Kehoe  
+	    Benjamin Kosnik  
+
+	libstdc++/3017
+	* include/bits/locale_facets.h (ctype<_CharT>): Add definitions
+	for generic ctype virtuals.
+	* src/locale.cc: Minor tweaks, naming consistency.
+	* testsuite/22_locale/ctype.cc: Add test.
+
+2001-06-04  Kenny Simpson 
+	    Phil Edwards  
+
+	PR libstdc++/3035 and PR libstdc++/3036
+	* include/bits/stl_pair.h:  Fix pair ctor and make_pair according
+	to LWG DR 181 and 265.
+
+2001-06-04  Phil Edwards  
+
+	PR libstdc++/3034
+	* include/bits/stl_multiset.h (find, lower_bound, upper_bound,
+	equal_range):  Add const overloads as per LWG DR 214.
+	* include/bits/stl_set.h:  Likewise.
+
+2001-06-04  Brendan Kehoe  
+	    Phil Edwards  
+
+	PR libstdc++/3018
+	* include/bits/std_bitset.h (bitset::test):  Fix __pos >= _Nb
+	comparison; all positions must be < _Nb.
+	* testsuite/23_containers/bitset_members.cc:  New file.
+
+2001-06-04  Brendan Kehoe  
+
+	PR libstdc++/3016
+	* include/bits/stl_queue.h (classes queue, priority_queue):  Fix
+	ctors to match the standard.
+
+2001-06-04  Jeffrey Oldham  
+
+	* include/bits/char_traits.h (move): Reverse qualification of
+	memmove with std::.
+	(copy): Reverse qualification of memcpy with std::.
+
+2001-06-04  Jeffrey Oldham  
+
+	* include/bits/char_traits.h (move): Qualify memmove with std::.
+	(copy): Qualify memcpy with std::.
+	* testsuite/27_io/filebuf_virtuals.cc (test01): Qualify strlen and
+	strncmp with std::.
+	(test02): Likewise.
+	* testsuite/27_io/stringbuf_virtuals.cc (test01): Likewise.
+
+2001-06-04  Hans-Peter Nilsson  
+
+	* libsupc++/Makefile.am (install-glibcppinstallHEADERS,
+	uninstall-glibcppinstallHEADERS): Have explicit rules catering to
+	SUN make VPATH peculiarities.
+	* libsupc++/Makefile.in: Regenerate.
+
+2001-06-01  Hans-Peter Nilsson  
+
+	* src/Makefile.am (VPATH): Delimit with ":", not space.
+	* src/Makefile.in: Regenerate.
+
+	* configure.in (use of GLIBCPP_CHECK_GNU_MAKE): Don't fail if GNU
+	make isn't found.
+	* configure: Regenerate.
+
+2001-05-31  scott snyder  
+
+	libstdc++/2976
+	* include/bits/istream.tcc: Include std_ostream.h.
+
+2001-05-31  Benjamin Kosnik  
+
+	libstdc++/2997
+	* src/bitset.cc: Qualify size_t with std::.
+
+2001-05-30  Benjamin Kosnik  
+
+	* acconfig.h (_GLIBCPP_BUGGY_FLOAT_COMPLEX): Remove.
+	(_GLIBCPP_BUGGY_COMPLEX): Remove.
+	* config.h.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT): Remove.
+	* aclocal.m4: Regenerate.
+	* configure.in: Don't call it.
+	* configure: Regenerate.
+
+	libstdc++/2970
+	* src/complex_io.cc (operator<<(ostream&, const complex&): Fix.
+	* testsuite/26_numerics/complex_inserters_extractors.cc (test01):
+	New test.
+
+	libstdc++/2985
+	* include/bits/std_complex.h: Include sstream. Put definitions for
+	complex inserters and extractors here, and remove them from...
+	* src/complex_io.cc: ...here.
+	* include/bits/basic_ios.h (basic_ios::__numput_type): Add _Traits
+	parameter.
+	(basic_ios::__numget_type): Same.
+	* include/bits/std_istream.h: Same.
+	* include/bits/std_ostream.h: Same.
+	* include/bits/sbuf_iter.h (ostreambuf_iterator): Fix typo in base
+	class iterator template arguments.
+	* src/locale-inst.cc: Add explicit has_facet instantiations.
+	* include/bits/basic_ios.h (basic_ios::_M_get_fctype_ios): Remove.
+	(_M_get_fnumput): Remove.
+	(_M_get_fnumget): Remove.
+	(basic_ios::_M_check_facet): New function.
+	(basic_ios::_M_cache_facets): New function.
+	* include/bits/basic_ios.tcc: Definition for _M_cache_facets.
+	(basic_ios::imbue): Call _M_cache_facets.
+	(basic_ios::init): Same.
+	* include/bits/istream.tcc: Format, use _M_check_facet.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/locale_facets.tcc (__output_float): Change
+	signature, add _Traits.
+	* testsuite/26_numerics/complex_inserters_extractors.cc (test02):
+	New test.
+
+2001-05-30  Loren J. Rittle  
+
+	* include/bits/c++config (__USE_MALLOC): Do not define it.
+	Document why not and give pointers to more information.
+
+	* docs/html/23_containers/howto.html: Update documentation
+	to reflect recent understanding of problem.
+	* docs/html/17_intro/howto.html: Likewise.
+
+2001-05-30  Phil Edwards  
+
+	* docs/doxygen/user.cfg.in:  Minor addition.
+	* docs/html/documentation.html:  Reorganize.  Put most-looked-at
+	stuff first.
+	* docs/html/install.html:  Update for 3.0.  HTML fixups.
+	* docs/html/17_intro/howto.html:  Likewise.
+	* docs/html/18_support/howto.html:  Likewise.
+	* docs/html/19_diagnostics/howto.html:  Likewise.
+	* docs/html/20_util/howto.html:  Likewise.
+	* docs/html/23_containers/howto.html:  Likewise.
+	* docs/html/24_iterators/howto.html:  Likewise.  More notes.
+	* docs/html/25_algorithms/howto.html:  Likewise.
+	* docs/html/26_numerics/howto.html:  Likewise.  More notes.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise.
+	* docs/html/faq/index.html:  Likewise.
+	* docs/html/faq/index.txt:  Regenerate.
+	* docs/html/27_io/iostreams_hierarchy.pdf:  Remove in favor of
+	Doxygen-created documentation.
+
+2001-05-30  Rainer Orth  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use
+	get_multilibs to find gcc.
+
+2001-05-30  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_C99):  Reorder output messages.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+
+2001-05-29  Gabriel Dos Reis  
+
+	* include/c_std/bits/std_cstdlib.h:: Move C99 thingies to __gnu_cxx::.
+	* include/c_std/bits/std_cwchar.h (__gnu_cxx): Likewise.
+
+2001-05-27  Gabriel Dos Reis  
+
+	* include/c_std/bits/std_cmath.h: Move C99 functions in __gnu_cxx::.
+	* include/c_std/bits/std_cstdlib.h: Same.
+	* include/c_std/bits/std_cwchar.h: Same.
+
+2001-05-30  Loren J. Rittle  
+
+	* docs/html/17_intro/howto.html: Update link.
+	* docs/html/23_containers/howto.html: Likewise.  Add new link.
+
+2001-05-26  Gabriel Dos Reis  
+
+	* include/c_std/bits/std_cmath.h (sqrt): #undef.
+
+2001-05-23  Rainer Orth  
+
+	* mknumeric_limits: Stop if gen-num-limits dies.
+
+2001-05-25  Benjamin Kosnik  
+
+	other/2931
+	* acinclude.m4 (GLIBCPP_ENABLE_C99): Use AC_TRY_COMPILE.
+	* aclocal.m4: Regenerate.
+	* configure: Same.
+
+2001-05-24  Rainer Orth  
+	    Phil Edwards  
+	    Alexandre Oliva  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Set glibcpp_srcdir
+	in an amd-safe manner. Revert glibcpp_prefixdir.
+
+2001-05-25  Gabriel Dos Reis  
+
+	* include/c_std/bits/std_cmath.h: Tweak.  #define away abs, cos,
+	fabs, sin, sqrt.  They are now implemented in terms of __builtin_
+	variants.
+
+2001-05-24  Benjamin Kosnik  
+
+	libstdc++/2830
+	* testsuite/21_strings/inserters_extractors.cc (test09): New test.
+	* include/bits/ostream.tcc: Format to match istream.tcc.
+	(operator<<(basic_ostream __out, const basic_string __s)): Fix.
+
+2001-05-24  Phil Edwards  
+
+	* libsupc++/eh_alloc.cc (__cxa_allocate_exception):  Qualify
+	malloc with std:: .
+	(__cxa_free_exception):  Likewise with free.
+
+2001-05-24  Mark Mitchell  
+
+	* include/c_std/bin/std_cstring.h: #define away all global
+	functions we will redeclare in namespace `std'.
+	* libsupc++/eh_alloc.cc (__cxa_allocate_exception): Use
+	std::memset, instead of memset.
+	* testsuite/19_diagnostics/stdexceptions.cc: Use `std::strcmp',
+	not plain `strcmp'.
+	* testsuite/21_strings/c_strings.cc: Use `std::strcpy' instead of
+	plain `strcpy'.
+
+2001-05-24  Benjamin Kosnik  
+
+	libstdc++/2832
+	* include/bits/basic_ios.tcc: Small tweak.
+	* include/bits/std_fstream.h (ifstream): Add buffer member. Adjust
+	ctors and dtors, and rdbuf settings.
+	(ofstream): Same.
+	(fstream): Same.
+	* include/bits/std_sstream.h: Same, but for stringstream classes.
+	* testsuite/27_io/ostringstream_members.cc: New.
+	* testsuite/27_io/stringstream_members.cc: New.
+	* testsuite/27_io/fstream_members.cc: New.
+	* testsuite/27_io/ifstream_members.cc: Add test.
+	* testsuite/27_io/istringstream_members.cc: Add test.
+	* testsuite/27_io/ofstream_members.cc: Add test.
+
+2001-05-24  Gabriel Dos Reis  
+
+	* include/bits/c++config(__NO_MATH_INLINES): Move to...
+	* config/os/gnu-linux/bits/os_defines.h: ...here.
+
+2001-05-24  Gabriel Dos Reis  
+
+	* include/bits/c++config (__NO_MATH_INLINES): New macro.
+	* testsuite/26_numerics/fabs_inline.cc (main): New test.
+
+2001-05-22  Benjamin Kosnik  
+
+	libstdc++/2841
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Set
+	ld_library_path.
+	(libstdc++-v3_set_ld_library_path): New, copied from g++.exp.
+	(libstdc++-v3-finish): Remove.
+	(libstdc++-v3_exit): Remove.
+
+2001-05-22  Phil Edwards  
+
+	* docs/html/documentation.html:  Point to doxygen output.
+
+2001-05-21  Benjamin Kosnik  
+
+	* mkcheck.in (static_fail): Remove S_FLAG decoration on output.
+
+	* include/bits/std_sstream.h (stringbuf::setbuf): Require both
+	arguments to be non-null.
+	* include/bits/fstream.tcc (filebuf::_M_allocate_buffers): Only
+	try allocations if allocated size is greater than zero.
+	(filebuf::_M_filebuf_init): Change to
+	(filebuf::_M_allocate_file): Which is what it does now.
+	(filebuf::_M_allocate_bufers): Change to
+	(filebuf::_M_allocate_internal_buffer): This, and create
+	(filebuf::_M_allocate_pback_buffer): New.
+	(filebuf::_M_destroy_internal_buffer): New.
+	(filebuf::_M_buf_allocated): New data member.
+	(filebuf::setbuf): Use new logic, allow use of external buffer.
+	* testsuite/27_io/stringbuf_virtuals.cc: New file.
+	* testsuite/27_io/filebuf_virtuals.cc: New file.
+
+2001-05-21  Stephen M. Webb  
+
+	* include/c_std/bits/std_cstring.h (memchr): Define "C" functions to
+	__glibcpp_memchr.
+	(strchr): Same, but to __glibcpp_strchr.
+	(strpbrk): Same.
+	(strrchr): Same.
+	(strstr): Same.
+	* include/c_std/bits/std_cwchar.h (wcschr): Same.
+	(wcsbrk): Same.
+	(wcsrchr): Same.
+	(wcsstr): Same.
+	(wmemchr): Same.
+
+2001-05-21  Benjamin Kosnik  
+
+	* testsuite/21_strings/c_strings.cc (main): Fix.
+
+2001-05-19  Phil Edwards  
+
+	* acinclude.m4:  Fix --help spacing, correct comments.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+	* mkcheck.in:  Add usage comments.
+	* docs/html/documentation.html:  Point to doxygen'd tarball.
+
+2001-05-18  Benjamin Kosnik  
+
+	* testsuite/README: Add notes.
+
+	* src/Makefile.am (libstdc++.INC): Remove.
+	* src/Makefile.in: Regenerate.
+
+	Phil Edwards 
+	* mkcheck.in: Add missing '#'.
+
+2001-05-18  Angela Marie Thomas 
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Set flags
+	appropriately for remote testing and testing installed files without
+	a build dir.
+
+2001-05-18  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Set glibcpp_srcdir
+	amd glibcpp_prefixdir with absolute paths.
+
+	* include/bits/c++config (__GLIBCPP__): Bump.
+	* acinclude.m4 (GLIBCPP_CONFIGURE): Correct version number.
+
+2001-05-18  Gabriel Dos Reis  
+
+	* include/bits/std_valarray.h (valarray<>::operator[] const):
+	Return a const reference.
+	* testsuite/26_numerics/valarray_const_bracket.cc: New test.
+
+2001-05-18  Alexandre Oliva  
+
+	* configure.target (ATOMICITYH): Actually use AIX-specific code on
+	earlier versions of AIX 4.*.
+
+2001-05-18  Angela Marie Thomas 
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-dg-test):  Set
+	output_file based on the name of the testcase.
+
+2001-05-18  Angela Marie Thomas 
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init):  Build
+	gluefile and use it if needs_status_wrapper is set.
+
+2001-05-18  Alexandre Oliva  
+
+	* configure.target (ATOMICITYH): Use cpu/generic code on earlier
+	versions of AIX.
+
+2001-05-17  Alexandre Oliva  
+
+	* configure.target (ATOMICITYH): Don't use AIX 4.3-specific code
+	on earlier versions of AIX.
+
+2001-05-15  Benjamin Kosnik  
+
+	* testsuite_flags.in (query): Add backwards, ext directories.
+
+2001-05-15  Mark Mitchell  
+
+	* porting.texi: Correct documentation about handling
+	_LARRGEFILE_SOURCE and its ilk.
+	* config/os/solaris/solaris2.5/bits/os_defines.h: Remove
+	definitions of _XOPEN_SOURCE, _LARGEFILE64_SOURCE, and
+	__EXTENSIONS__.
+	* config/os/solaris/solaris2.6/bits/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.7/bits/os_defines.h: Likewise.
+
+2001-05-15  Zack Weinberg  
+
+	* testsuite/21_strings/inserters_extractors.cc,
+	testsuite/27_io/istream_unformatted.cc,
+	testsuite/27_io/stringstream.cc:
+	Replace multi-line string constants with C89-style
+	concatenated string constants.
+
+2001-05-14  Richard Henderson  
+
+	* mknumeric_limits: Build with -fno-exceptions.
+
+2001-05-13   Benjamin Kosnik  
+
+	Switch over to new harness.
+	* testsuite_flags.in: Tweaks via Gaby.
+	* testsuite/Makefile.am: Change tool to libstdc++-v3.
+	(EXPECT): Quote directly.
+	(RUNTEST): Same.
+	* configure.in: Output testsuite_flags.
+	* acinclude.m4: Substitute src, bld, and prefix dirs.
+	Remove glibcpp_expect, glibcpp_runtestflags.
+	* Makefile.am (RUNTESTFLAGS): Pass this down to subdirs.
+	* mkcheck.in: Port to new interface.
+
+	* aclocal.m4: Regerate.
+	* configure: Regnerate.
+	* Makefile.in: Regnerate.
+	* */Makefile.in: Regenerate.
+
+	* tests_flags.in: Remove.
+	* testsuite/lib/libstdc++.exp: Remove.
+	* testsuite/libstdc++.tests/tests.exp: Remove.
+
+2001-05-13  Alexandre Oliva  
+
+	* configure.target: Remove detection of AIX pthread multilib, now
+	obtained from `gcc -v'.
+
+2001-05-13  John David Anglin  
+
+	* mkcheck.in (setup_size_command): Use Berkeley "-B" mode with GNU
+	size.  Add hpux case for HP size.
+
+2001-05-11   Benjamin Kosnik  
+
+	* testsuite_flags.in: New, simplified interface.
+	* testsuite/lib/libstdc++-v3-dg.exp: New test harness.
+	* testsuite/libstdc++-v3.dg: Add.
+	* testsuite/libstdc++-v3.dg/dg.exp: Add.
+
+2001-05-11   Benjamin Kosnik  
+
+	* testsuite/*/*.cc: Remove spaces, make sure testcases return zero.
+	* testsuite/config/default.exp: Update bugs email address.
+
+2001-05-11  Richard Henderson  
+
+	* libsupc++/eh_personality.cc: Include unwind-pe.h.  Remove
+	all pointer encoding logic.
+	(struct lsda_header_info): Add ttype_base.
+	(get_ttype_entry): Use it instead of a context.
+	(check_exception_spec): Likewise.
+	(PERSONALITY_FUNCTION): Initialize ttype_base.  Store it in
+	the c++ exception header for __cxa_call_unexpected.
+	(__cxa_call_unexpected): Use it.
+
+2001-05-09  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp: Use libgloss.exp. Call
+	libgloss_link_flags to find crt0.o for targets that use libgloss
+	instead of newlib.
+	Change LDFLAGS to LIBS.
+	Consistently name procedures libstdc++-XXX.
+	* testsuite/libstdc++.tests/tests.exp: Use new procedure names.
+
+2001-05-08  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cstring.h (memchr): Correct definitions.
+	(strchr): Same.
+	(strpbrk): Same.
+	(strrchr): Same.
+	(strstr): Same.
+	* include/c_std/bits/std_cwchar.h (wcschr): Same.
+	(wcsbrk): Same.
+	(wcsrchr): Same.
+	(wcsstr): Same.
+	(wmemchr): Same.
+	* testsuite/21_strings/c_strings.cc: Add tests.
+
+2001-05-07  Benjamin Kosnik  
+
+	libstdc++/2523
+	* include/bits/std_fstream.h (basic_filebuf): Change signature.
+	* include/bits/fstream.tcc (basic_filebuf): Change bool argument
+	to int_type, pass in buffer size info.
+	* include/bits/std_streambuf.h (_M_is_indeterminate): Check for
+	unbuffered situation.
+	(underflow): Remove codecvt bits for the time being.
+	* include/bits/istream.tcc (istream::sentry): Avoid sputbackc call.
+	* include/bits/locale_facets.tcc (_M_extract): Cache dereference
+	values from iterators, clean.
+	* src/locale.cc: Ditto.
+	* include/bits/sbuf_iter.h: Format.
+	* src/ios.cc: Explicitly pass in buffer sizes at creation time.
+	* testsuite/27_io/narrow_stream_objects.cc: Add tests.
+	* testsuite/27_io/filebuf.cc: Tweaks.
+	* testsuite/27_io/filebuf_members.cc: Tweaks.
+
+2001-05-07  Mark Mitchell  
+
+	* config/os/solaris/solaris2.7/bits/os_defines.h
+	(_LARGEFILE_SOURCE): Define it.
+
+2001-05-03  Alexandre Oliva  
+
+	* configure.in (LIBSUPCXX_PICFLAGS): Set it to -prefer-pic or
+	-prefer-non-pic depending on whether libtool has shared libraries
+	enabled or disabled.
+	* libsupc++/Makefile.am (LIBSUPCXX_CXXFLAGS): Set to
+	$(LIBSUPCXX_PICFLAGS).
+	* configure, */Makefile.in: Rebuilt.
+
+2001-05-01  Benjamin Kosnik  
+
+	* include/bits/sbuf_iter.h (istreambuf_iterator): Correct.
+	* testsuite/24_iterators/istreambuf_iterator.cc (test02): Add test.
+
+	* include/bits/std_sstream.h (stringbuf): Leak
+	copied string.
+	* testsuite/24_iterators/ostreambuf_iterator.cc: Correct.
+
+2001-05-01  Tom Browder  
+
+	* docs/html/ext/howto.html:  Fix typo.
+
+2001-05-01  Gabriel Dos Reis  
+
+	* testsuite/libstdc++.tests/tests.exp: Add comment.
+
+2001-05-01  Gabriel Dos Reis  
+
+	* testsuite/libstdc++.tests/tests.exp: Set ulimits.
+
+2001-04-30  Mark Mitchell  
+
+	* porting.texi: Use the GFDL.
+
+2001-04-30  Benjamin Kosnik  
+
+	libstdc++/2627
+	* testsuite/24_iterators/ostreambuf_iterator.cc: New file.
+	* include/bits/sbuf_iter.h (ostreambuf_iterator): Remove bogus
+	specializations.
+
+2001-04-30  Benjamin Kosnik  
+
+	libstdc++/2964
+	* include/bits/stl_iterator_base_funcs.h (__advance): Fix.
+
+2001-04-28  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Minor tweaks.
+	* docs/doxygen/style.css:  New file.
+	* docs/doxygen/user.cfg.in:  Update using "doxygen -u" to get the
+	latest parameters available.  Use style.css.
+
+2001-04-27  Benjamin Kosnik  
+
+	* docs/doxygen/mainpage.doxy: New.
+	* docs/doxygen/user.cfg.in: Change default configuration. Single
+	frame, other tweaks.
+
+2001-04-26  Mark Mitchell  
+
+	* docs/html/17_intro/BADNAMES: Remove EGCS reference.
+	Indicate obsolete nature of thelist for G++ 3.0.
+
+2001-04-26  Alexandre Oliva  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Obtain
+	target_thread_file with `gcc -v'.
+	* aclocal.m4, configure: Rebuilt.
+
+2001-04-25  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cmath.h (std): Explicitly inject c99 names.
+	* include/c_std/bits/std_cstdlib.h (std): Same, except for llabs.
+	* include/c_std/bits/std_cwchar.h (std): Same.
+	* acconfig.h (std): Remove c99 injection into std.
+	* config.h.in: Regenerate.
+
+	* testsuite/README: Fix typo.
+
+	* include/bits/codecvt.h: Remove warnings.
+
+2001-04-24  Peter Schmid  
+
+	* include/ext/slist: Include required header files.
+
+2001-04-23  Loren J. Rittle  
+
+	* include/c_std/bits/std_cerrno.h (errno): Define macro from
+	identifier declared with external linkage, if needed.
+	* include/c_std/bits/std_csetjmp.h (setjmp): Likewise.
+	* include/c_std/bits/std_cstdarg.h (va_end): Likewise.
+
+2001-04-23  Benjamin Kosnik  
+
+	* acinclude.m4 (CXX): Set to glibcpp_CXX so that in-directory
+	re-configures find the build compiler.
+	(GLIBCPP_ENABLE_C99): Do all fp-tests with 0.0, not 0. Fixes
+	libstdc++/2609.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-04-20  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Make sure required C99
+	support is enabled correctly before long long is activated.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+	* include/backward/backward_warning.h: Format correctly.
+
+	* testsuite/26_numerics/c99_classification_macros_c.cc: Add.
+	* testsuite/26_numerics/c99_classification_macros_c++.cc: Add.
+	* testsuite/26_numerics/c99_macros.cc: Remove.
+
+2001-04-20  Phil Edwards  
+
+	* include/bits/stl_bvector.h:  Replace __ITERATOR_CATEGORY with
+	__iterator_category.
+
+2001-04-19  Benjamin Kosnik  
+
+	* acconfig.h (_GLIBCPP_USE_C99): Add.
+	* config.h.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_ENABLE_C99): New macro. Test for ISO/IEC
+	9899: 1999 support.
+	* aclocal.m4: Regenerate.
+	* configure.in (GLIBCPP_ENABLE_C99): Use it, on by default.
+	* configure: Regenerate.
+	* configure.in (GLIBCPP_ENABLE_LONG_LONG): Set default to yes.
+	* configure: Regenerate.
+	* include/c_std/bits/std_cwchar.h: Put wcstold, wcstoll, wcstoull
+	into c99.
+	* include/c_std/bits/std_cmath.h: Bring C99 functions into c99
+	namespace.
+	* include/c_std/bits/std_cstdlib.h: Same.
+	* docs/html/configopts.html: Update.
+	* testsuite/26_numerics/c99_macros.cc: Edit, use cmath instead of
+	math.h
+	(test_c99_classify): Add.
+	* config/os/gnu-linux/bits/os_defines.h (_GNU_SOURCE): Remove.
+	(_ISOC99_SOURCE): Remove.
+
+	* include/bits/stl_algo.h: Use _GLIBCPP_HAVE_DRAND48.
+	* include/bits/c++config (__STL_ASSERTIONS): Simplify.
+	* acinclude.m4 (GLIBCPP_CHECK_STDLIB_SUPPORT): Add check for drand48.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-04-19  Phil Edwards  
+
+	* Makefile.am (doxygen):  Assume script is missing execute perms.
+	* Makefile.in:  Regenerated.
+	* docs/doxygen/user.cfg.in:  Add class diagrams and source browsing.
+
+2001-04-17  Loren J. Rittle  
+
+	* testsuite/27_io/istream_seeks.cc: Inform DejaGnu of required files.
+
+2001-04-17  Benjamin Kosnik  
+
+	* testsuite/23_containers/map_operators.cc: Add dg-excess-errors.
+	* testsuite/23_containers/set_operators.cc: Same.
+
+	* include/bits/c++config: Add _GLIBCPP_CONCEPT_CHECKS. Disable by
+	default.
+	(__GLIBCPP__): Bump from value of last release.
+	* include/bits/concept_check.h: Default to off, edit comments.
+	* src/stl-inst.cc: Use _GLIBCPP_CONCEPT_CHECKS.
+	* src/Makefile.am (AM_CXXFLAGS): Remove _GLIBCPP_NO_CONCEPT_CHECKS.
+	* src/Makefile.in: Regenerate.
+
+2001-04-14  Martin Reinecke 
+
+	* include/bits/boost_concept_check.h(_Mutable_ContainerConcept):
+	Properly uglify member.
+
+2001-04-13  Phil Edwards  
+
+	* include/bits/stl_algobase.h (equal):  Use EqualOpConcept instead
+	of EqualityCo
+	mparableConcept.
+
+2001-04-13  Phil Edwards  
+
+	* include/bits/boost_concept_check.h:  Uglify, fork from Boost.
+	* include/bits/concept_check.h:  Uglify.
+	* include/bits/stl_algo.h:  Likewise.
+	* include/bits/stl_algobase.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_heap.h:  Likewise.
+	* include/bits/stl_iterator_base_funcs.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_map.h:  Likewise.
+	* include/bits/stl_multimap.h:  Likewise.
+	* include/bits/stl_multiset.h:  Likewise.
+	* include/bits/stl_numeric.h:  Likewise.
+	* include/bits/stl_queue.h:  Likewise.
+	* include/bits/stl_set.h:  Likewise.
+	* include/bits/stl_stack.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/ext/hash_map:  Likewise.
+	* include/ext/hash_set:  Likewise.
+	* include/ext/slist:  Likewise.
+
+2001-04-13  Gabriel Dos Reis  
+
+	* testsuite/23_containers/set_operators.cc: Just try to compile.
+	Mark as XFAIL.
+	* testsuite/23_containers/map_operators.cc: Same.
+
+2001-04-12  Jason Merrill  
+
+	* testsuite/lib/libstdc++.exp (libstdc++-dg-test): Prepend "./" to
+	output_file.
+	(dg-test): Revert rth's change.
+
+2001-04-12  Nathan Sidwell  
+
+	* libsupc++/eh_alloc.cc (__cxa_allocate_exception): Don't
+	terminate holding the mutex. Make sure size fits in EMERGENCY_OBJ_SIZE.
+
+2001-04-12  Gabriel Dos Reis  
+
+	* testsuite/README: Add DejaGnu specific documentation.
+
+2001-04-11  Benjamin Kosnik  
+
+	* acinclude.m4: AC_CHECK_TOOL for expect.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (RUNTEST): Use substituted.
+	(EXPECT): Same.
+
+	* configure.in: Remove xcompiling substitution.
+	* tests_flags.in (CROSS_LIB_PATH): Remove.
+	(xcompiling): Remove.
+	(CXX): Use substituted CXX.
+
+2001-04-11  Richard Henderson  
+
+	* testsuite/lib/libstdc++.exp: Specify path for output_file.
+
+2001-04-08  Gabriel Dos Reis  
+
+	* include/bits/std_valarray.h(valarray<>::operator[]): Make
+	inline.
+
+2001-04-06  Gabriel Dos Reis  
+
+	* testsuite/25_algorithms/equal.cc: New test.
+
+2001-04-06  Joe Buck  
+
+	* stl_algobase.h (std::equal): avoid use of possibly-undefined
+	operator != (one line patch).
+
+2001-04-06   Benjamin Kosnik  
+
+	* include/backward/backward_warning.h: Re-enable.
+
+2001-04-06  Benjamin Kosnik  
+	    Alexandre Oliva  
+
+	* tests_flags.in (CROSS_LIB_PATH): Add as -B flag.
+
+2001-04-06  Gabriel Dos Reis  
+
+	* include/c_std/bits/std_cmath.h: Get rid of C99 math macros.
+	* testsuite/26_numerics/c99_macros.cc: Add test.
+
+2001-04-06  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update for 2.92, grab from RELEASE-NOTES.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-04-06  Benjamin Kosnik  
+
+	* include/backward/backward_warning.h: Temporarily disable until
+	g++ testsuite changes go in.
+	* tests_flags.in (CROSS_LIB_PATH): Add.
+
+2001-04-05  Benjamin Kosnik  
+
+	Warn when using backward headers.
+	* include/backward/algo.h: Include warning file.
+	* include/backward/vector.h: Same.
+	* include/backward/tree.h: Same.
+	* include/backward/tempbuf.h: Same.
+	* include/backward/strstream: Same.
+	* include/backward/streambuf.h: Same.
+	* include/backward/stream.h: Same.
+	* include/backward/stack.h: Same.
+	* include/backward/slist.h: Same.
+	* include/backward/set.h: Same.
+	* include/backward/rope.h:
+	* include/backward/queue.h: Same.
+	* include/backward/pair.h: Same.
+	* include/backward/ostream.h: Same.
+	* include/backward/new.h: Same.
+	* include/backward/multiset.h: Same.
+	* include/backward/multimap.h: Same.
+	* include/backward/map.h: Same.
+	* include/backward/list.h: Same.
+	* include/backward/iterator.h: Same.
+	* include/backward/istream.h: Same.
+	* include/backward/iostream.h:
+	* include/backward/iomanip.h:
+	* include/backward/heap.h: Same.
+	* include/backward/hashtable.h:
+	* include/backward/hash_set.h:
+	* include/backward/hash_map.h:
+	* include/backward/function.h:
+	* include/backward/fstream.h:
+	* include/backward/deque.h:
+	* include/backward/defalloc.h: Same.
+	* include/backward/complex.h: Same.
+	* include/backward/bvector.h:
+	* include/backward/alloc.h:
+	* include/backward/algobase.h: Same.
+
+	* include/backward/backward_warning.h: New file.
+	* src/Makefile.am (backward_headers): Add backward_warning.h
+	* src/Makefile.in: Regenerate.
+
+2001-04-05  Benjamin Kosnik  
+
+	* src/Makefile.am (myinstalldirs): Make sure backward directory is
+	created.
+	(myinstallheaders): Install backward headers in backward directory.
+	* src/Makefile.in: Regenerate.
+
+2001-04-05  Benjamin Kosnik  
+
+	Prepare for libstdc++-2.92.
+	* docs/html/17_intro/RELEASE-NOTES (New): Update.
+	* docs/html/configopts.html: Fix formatting.
+	* README (file): Updates.
+	* include/bits/c++config (__GLIBCPP__): Update.
+
+2001-04-05  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Check for the existence of Doxygen.
+
+2001-04-04  Phil Edwards  
+
+	* docs/doxygen/user.cfg.in:  Extract all non-private members;
+	reduce confusing documentation output.
+
+2001-04-04  Geoffrey Keating  
+
+	* include/backward/fstream.h: Add missing semicolons.
+
+2001-04-03  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc: Add bool parameter to filebuf ctor.
+	* include/bits/ios_base.h(ios_base::Init): Remove _M_cout, _M_cin,
+	_M_cerr, _M_wcout, _M_wcin, _M_wcerr.
+	(ios_base::Init::_S_ios_create): New.
+	(ios_base::Init::_S_ios_destroy): New.
+	* include/bits/std_fstream.h: Change ctor args.
+	* src/ios.cc (ios_base::Init::Init): Use _S_ios_create.
+	(ios_base::Init::~Init): Use _S_ios_destroy.
+	(ios_base::sync_with_stdio): Use new members.
+	* testsuite/27_io/filebuf_members.cc: Fix calling conventions for
+	filebuf ctor.
+
+2001-04-03  Peter Schmid  
+
+	* include/backward/fstream.h:  Expose streampos to global
+	namespace.
+
+2001-04-03  Peter Schmid  
+
+	* include/bits/stl_iterator_base_types.h: Fix typo
+
+2001-04-03  Andreas Schwab  
+
+	* include/backward/fstream.h: Define filebuf and wfilebuf.
+
+2001-04-02  Phil Edwards  
+
+	New concept checking implementation.
+	* docs/html/19_diagnostics/howto.html:  Document.
+	* docs/html/17_intro/concept_check.diff:  New file, for reference.
+	* include/bits/boost_concept_check.h:  New file from Boost.
+	* include/bits/c++config:  Update comments.
+
+	* include/bits/concept_check.h:  New file.
+	* include/bits/concept_checks.h:  Removed.
+	* include/bits/container_concepts.h:  Removed.
+	* include/bits/sequence_concepts.h:  Removed.
+	* include/bits/stl_iterator_base.h:  Removed; split into...
+	* include/bits/stl_iterator_base_funcs.h:  ...this new file...
+	* include/bits/stl_iterator_base_types.h:  ...and this new file.
+
+	* include/bits/sbuf_iter.h:  Update to use new implementation.
+	* include/bits/std_iterator.h:  Likewise.
+	* include/bits/std_memory.h:  Likewise.
+	* include/bits/stl_algo.h:  Likewise.
+	* include/bits/stl_algobase.h:  Likewise.
+	* include/bits/stl_construct.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_heap.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_map.h:  Likewise.
+	* include/bits/stl_multimap.h:  Likewise.
+	* include/bits/stl_multiset.h:  Likewise.
+	* include/bits/stl_numeric.h:  Likewise.
+	* include/bits/stl_queue.h:  Likewise.
+	* include/bits/stl_set.h:  Likewise.
+	* include/bits/stl_stack.h:  Likewise.
+	* include/bits/stl_uninitialized.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/ext/hash_map:  Likewise.
+	* include/ext/hash_set:  Likewise.
+	* include/ext/slist:  Likewise.
+	* include/ext/stl_hashtable.h:  Likewise.
+
+	* src/Makefile.am (base_headers):  Update list of headers.
+	* Makefile.in:  Regenerated.
+	* src/Makefile.in:  Regenerated.
+	* libio/Makefile.in:  Regenerated.
+	* libmath/Makefile.in:  Regenerated.
+	* libsupc++/Makefile.in:  Regenerated.
+	* testsuite/Makefile.in:  Regenerated.
+
+	* docs/html/install.html:  Update contact information.
+	* docs/html/17_intro/howto.html:  Ditto.
+	* docs/html/18_support/howto.html:  Ditto.
+	* docs/html/20_util/howto.html:  Ditto.
+	* docs/html/21_strings/howto.html:  Ditto.
+	* docs/html/22_locale/howto.html:  Ditto.
+	* docs/html/23_containers/howto.html:  Ditto.
+	* docs/html/24_iterators/howto.html:  Ditto.
+	* docs/html/25_algorithms/howto.html:  Ditto.
+	* docs/html/26_numerics/howto.html:  Ditto.
+	* docs/html/27_io/howto.html:  Ditto.
+	* docs/html/faq/index.html:  Ditto, plus info on new checking code.
+	* docs/html/ext/howto.html:  Ditto, plus info on new checking code.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-04-02  Zack Weinberg  
+
+	* testsuite/lib/libstdc++.exp (dg-test): Annotate result
+	messages with $which_library as well as $tool_flags and
+	${dg-extra-tool-flags}.  Factor out annotation text into
+	a single variable.
+
+2001-04-02  Stephen M. Webb  
+
+	* include/c_std/bits/std_cstring.h: Fix for const-correctness.
+	* include/c_std/bits/std_cwchar.h: Same.
+	* testsuite/21_strings/c_strings.cc: Add.
+
+2001-04-01  Benjamin Kosnik  
+
+	* docs/html/configopts.html: Add --enable-sjlj-exceptions docs.
+
+2001-04-01  Zack Weinberg  
+
+	* tests_flags.in: Use test a = b, not test a == b which is not
+	portable.
+
+2001-03-31  Benjamin Kosnik  
+
+	* configure.target: Remove duplicate aix entry.
+
+2001-03-30  Benjamin Kosnik  
+
+	* include/ext/stl_bvector.h: Move to...
+	* include/bits/stl_vector.h: ...here.
+	* include/ext/bvector: Move to...
+	* include/backward/bvector.h: ...here.
+	* include/bits/std_vector.h: Change stl_bvector include.
+	* include/bits/std_queue.h: Remove bvector include.
+	* include/ext/tree: Insert using rb_tree, move to...
+	* include/backward/tree.h: ...here.
+	* include/backward/hash_map.h: Include ext/hash_map.
+	* include/backward/hash_set.h: Include ext/hash_set.
+	* include/backward/queue.h: New file.
+	* include/backward/stack.h: Edit.
+	* include/backward/algo.h: Same.
+	* include/backward/algobase.h: Same.
+	* include/backward/alloc.h: Same.
+	* include/backward/function.h: Same.
+	* include/backward/iomanip.h: Same.
+	* include/backward/istream.h: Same.
+	* include/backward/iterator.h: Same.
+	* include/backward/list.h: Same.
+	* include/backward/map.h: Same.
+	* include/backward/multimap.h: Same.
+	* include/backward/multiset.h: Same.
+	* include/backward/ostream.h: Same.
+	* include/backward/pair.h: Same
+	* include/backward/rope.h: Same.
+	* include/backward/set.h: Same.
+	* include/backward/stream.h: Same.
+	* include/backward/strstream.h: Same.
+	* include/backward/tempbuf.h: Same.
+	* src/Makefile.am (ext_headers): Edit.
+	* src/Makefile.in: Regenerate.
+	* testsuite/ext/headers.cc (main): Fix.
+	* mkcheck.in: Fix.
+
+2001-03-30  Phil Edwards  
+
+	* tests_flags.in (LIBS):  Pass correct path for installed testing.
+
+2001-03-28  Benjamin Kosnik  
+
+	* mkcheck.in (LIBTOOL): Don't construct -B argument here...
+	* tests_flags.in (CXX): Construct here.
+	(static_fail): Don't remove compile.out. Format with spaces.
+	(INCLUDES): Deal with xcompiling.
+	* configure.in (xcompiling): Substitute.
+	* testsuite/Makefile.am: Snake libjava configury.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/23_containers/map_operators.cc: Tweaks.
+	* testsuite/23_containers/set_operators.cc: Tweaks.
+
+2001-03-28  Gabriel Dos Reis  
+
+	Enable dejagnu testing framework.
+	* configure.in: Generate testsuite/Makefile.
+	* configure: Regenerate.
+	* Makefile.am (check-install): Change rule from this...
+	(check-script-install): ...to this.
+	(check): Change rule from this...
+	(check-script):...to this.
+	* Makefile.in: Regenerate.
+
+2001-03-28  Alexandre Oliva  
+
+	* libsupc++/Makefile.am (CXXLINK): Add --tag disable-shared after
+	--tag CXX.
+	(LIBTOOL): Let automake take care of its definition.
+	* libsupc++/Makefile.in: Rebuilt.
+
+2001-03-28  Richard Henderson  
+
+	IA-64 ABI Exception Handling:
+	* acinclude.m4 (GLIBCPP_ENABLE_SJLJ_EXCEPTIONS): New.
+	* configure.in: Use it.
+	* Makefile.in, aclocal.m4, config.h.in, configure: Regenerate.
+	* libsupc++/Makefile.am (sources): Update files list.
+	* libsupc++/Makefile.in: Regenerate.
+	* libsupc++/eh_alloc.cc, libsupc++/eh_aux_runtime.cc: New files.
+	* libsupc++/eh_catch.cc, libsupc++/eh_exception.cc: New files.
+	* libsupc++/eh_globals.cc, libsupc++/eh_personality.cc: New files.
+	* libsupc++/eh_terminate.cc, libsupc++/eh_throw.cc: New files.
+	* libsupc++/exception_support.cc: Remove.
+	* libsupc++/exception_support.h: Remove.
+	* libsupc++/pure.cc: Use std::terminate.
+	* libsupc++/tinfo2.cc (__throw_type_match_rtti_2): Remove.
+	(__is_pointer): Remove.
+	* libsupc++/unwind-cxx.h: New file.
+	* libsupc++/vec.cc (uncatch_exception): Update for new abi.
+
+2001-03-27  Alexandre Oliva  
+
+	* libsupc++/Makefile.am (CXXLINK): Use CXX again, and choose
+	CXX tag explicitly.
+	* src/Makefile.am (CXXLINK): Likewise.
+	* libsupc++/Makefile.in, src/Makefile.in: Rebuilt.
+
+2001-03-27  Benjamin Kosnik  
+
+	* include/bits/c++config (_STL_USE_CONCEPT_CHECKS): Disable by default.
+
+2001-03-26  Peter Schmid  
+
+	* libstdc++-v3/tests_flags.in: Change the order of libstdc++
+	  and libc
+
+2001-03-26  Benjamin Kosnik  
+
+	* include/bits/basic_file.h (get_fileno): Remove.
+	(_M_fileno): Remove.
+	(_M_cfile_created): Add.
+	(basic_file::basic_file(__c_file_type*, openmode): Add.
+	(basic_file::basic_file(int, const char*, openmode): Remove.
+	* include/bits/fstream.tcc (basic_fstream::basic_filebuf(int __fd,
+	const char*, ios_base::openmode): Don't allocate
+	internal buffers. Turn off internal buffers.
+	(basic_filebuf::overflow): Remove test for null buffer.
+	(basic_filebuf::_M_really_overflow): Same. Allow unbuffered use.
+	* include/bits/streambuf.cc: Tweak.
+	* include/bits/std_ostream.h: Tweak.
+	* config/basic_file_libio.h: Same.
+	* config/basic_file_stdio.h: Same.
+	* src/ios.cc (ios_base::Init::Init()): Unbuffer stdout by default.
+	* testsuite/27_io/filebuf_members.cc: Tweaks.
+	* testsuite/27_io/ios_base_members_static.cc: Tweaks.
+
+2001-03-24  Phil Edwards  
+
+	* Makefile.am:  New targets, doxygen and doxygen-maint.
+	* Makefile.in:  Regenerated.
+	* docs/doxygen/run_doxygen:  Finally implemented.
+	* docs/doxygen/maint.cfg.in:  New file.
+	* docs/doxygen/user.cfg.in:  New file.
+
+2001-03-24  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CHECK_COMPILER_FEATURES):  Update comment.
+	* src/Makefile.am:  Replace leading spaces with tabs on continuation
+	lines.
+	* aclocal.m4:  Regenerated.
+	* configure:  Ditto.
+	* Makefile.in:  Ditto.
+	* src/Makefile.in:  Ditto.
+	* libio/Makefile.in:  Ditto.
+	* libmath/Makefile.in:  Ditto.
+	* libsupc++/Makefile.in:  Ditto.
+
+2001-03-24  Phil Edwards  
+
+	* docs/html/19_diagnostics/howto.html:  HTML fixup.  Describe
+	concept-checking code and current status of same.
+	* docs/html/ext/howto.html:  Ditto.
+	* docs/html/faq/index.html:  Ditto.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-03-24  Phil Edwards  
+
+	* include/bits/std_bitset.h:  Include ostream and istream headers
+	instead of iostream.
+
+2001-03-22  Greg Bumgardner 
+
+	* include/bits/ostream.tcc: Use __builtin_alloca.
+
+2001-03-22  Benjamin Kosnik  
+
+	* src/misc-inst.cc (__sink_unused_warning): Move to...
+	* src/locale-inst.cc (__sink_unused_warning): Move to...
+	* src/stl-inst.cc: Here.
+	* include/bits/c++config (_STL_NO_CONCEPT_CHECKS): Add define,
+	commented it out.
+
+2001-03-21  Theodore Papadopoulo  
+
+	* intclude/bits/basic_file.h: Fix typos in comments.
+
+2001-03-20  Richard Henderson  
+
+	* src/gen-num-limits.cc: Instantiate for wchar_t.
+	* config/os/aix/bits/ctype_base.h (mask): Use unsigned int.
+
+2001-03-20  Jason Merrill  
+
+	* libsupc++/vec.cc (__cxa_vec_cleanup): New fn.
+	(__cxa_vec_ctor, __cxa_vec_cctor, __cxa_vec_dtor): Call it.
+	* libsupc++/cxxabi.h: Declare it.
+
+2001-03-16  Alexandre Oliva  
+
+	* src/gen-num-limits.cc (signal_adapter): Overloaded to match
+	signal_func with an unspecified argument list.
+
+2001-03-15  Benjamin Kosnik  
+
+	* tests_flags.in (CXXFLAGS): Link libstdc++ before libsupc++.
+
+2001-03-15  Gabriel Dos Reis  
+
+	* include/bits/basic_string.tcc (operator+): Fix thinko.
+
+2001-03-14  Benjamin Kosnik  
+
+	libstdc++/2020
+	* include/bits/std_streambuf.h: Remove cached locale facets.
+	(basic_streambuf::_M_buf_fctype): Remove.
+	(basic_streambuf::~basic_streambuf): Remove here.
+	(basic_streambuf::basic_streambuf): Same.
+	(basic_streambuf::imbue): Same.
+	* include/bits/fstream.tcc (filebuf::imbue): Remove _M_buf_fctype.
+	* include/bits/std_fstream.h (basic_filebuf::_M_fcvt): Remove.
+	(basic_filebuf::~basic_filebuf()): Remove here.
+	* include/bits/fstream.tcc (basic_filebuf::basic_filebuf): Same.
+	(basic_filebuf::imbue): Same.
+	* include/bits/localefwd.h (_Count_ones): Remove.
+	(locale::_S_num_categories): Just use 6, since this doesn't
+	actually change, ever.
+	* include/bits/locale_facets.tcc (has_facet): Simplify.
+	(use_facet): Same.
+	* testsuite/27_io/filebuf.cc (test06): Add tests.
+
+2001-03-13  Steve Ellcey  
+
+	* libstdc++-v3/config/os/hpux/bits/ctype_base.h: Make ctype masks
+	match HP-UX ctype.h header file.
+
+2001-03-13  Andris Pavenis 
+
+	* config/djgpp/bits/ctype_noninline.h: Fix typo and remove
+	duplicate definitions of __dj_ctype_*
+
+2001-03-13  Benjamin Kosnik  
+
+	* libsupc++/new: Remove pragma interface.
+	* libsupc++/typeinfo: Same.
+	* libsupc++/exception: Same.
+	* libsupc++/new_handler.cc: Remove pragma implementation.
+	(bad_alloc::~bad_alloc()): Add.
+	* libsupc++/exception_support.cc: Same.
+	(exception::~exception): Add.
+	(bad_exception::~bad_exception): Add.
+	* libsupc++/tinfo.cc: Same.
+	(bad_cast::~bad_cast): Add.
+	(bad_typeid::~bad_typeid): Add.
+
+2001-03-13  Phil Edwards  
+
+	* mkcheck.in:  Fix IFS regression for non-bash-2.01 hosts.
+
+2001-03-12  Felix Lee  
+
+	* mkcheck.in: workaround for bash 2.01 IFS bug.
+
+2001-03-12  Benjamin Kosnik  
+
+	Fixups for -fno-for-scope
+	* include/bits/locale_facets.tcc (__match_parallel): Fixup.
+	* src/valarray-inst.cc (__gslice_to_index): Same.
+
+2001-03-12  Rodney Brown  
+
+	* src/gen-num-limits.cc (traps) [SPECIALIZE_TRAPPING]: Add fflush
+	prior to trapping signal (UnixWare 7 workaround).
+
+2001-03-12  Craig Rodrigues  
+
+	* include/backward/hashtable.h: Same.
+	* include/backward/rope.h: Fix include.
+
+2001-03-12  Benjamin Kosnik  
+
+	* include/backward/vector.h: Include std_vector.h.
+
+	* include/bits/istream.tcc (basic_istream<_CharT, _Traits>&
+	operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)):
+	Fix typo.
+
+2001-03-11  Peter Schmid  
+
+	* include/ext/stl_hashtable.h: Change type of __n to size_t
+	* include/backward/bvector.h: Include 
+
+2001-03-09  Gabriel Dos Reis  
+
+	* include/bits/istream.tcc ( basic_istream<_CharT, _Traits>&
+	operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)):
+	Use streamsize, not int_type.
+
+2001-03-08  Benjamin Kosnik  
+
+	* testsuite/27_io/streambuf.cc (test06): New test, disabled at the
+	moment.
+
+2001-03-08  Andreas Schwab  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Fix syntax in test
+	command.
+	* aclocal.m4, configure: Regenerated.
+
+2001-03-07  Benjamin Kosnik  
+
+	* include/bits/std_iosfwd.h: Remove string forward decls here.
+	* include/bits/stringfwd.h: Add forward decls for char_traits
+	specializations.
+	* config/c_io_libio.h (wstreamoff): Delete.
+	* config/c_io_stdio.h (wstreamoff): Same.
+	* include/bits/char_traits.h: Use streamoff not wstreamoff for
+	char_traits::off_type.
+	Remove duplicate typedefs.
+	* include/bits/fpos.h: Define streampos/wstreampos here.
+	* testsuite/27_io/istream_seeks.cc (test04): Explicitly cast int
+	values to off_type.
+	(test05): Same.
+	Changeup output files.
+	* testsuite/27_io/istream_unformatted.cc: Change output files.
+	* testsuite/27_io/istream_seeks-1.txt: Add.
+	* testsuite/27_io/istream_seeks-2.tst: Add.
+	* testsuite/27_io/istream_seeks-1.tst: Add.
+	* testsuite/27_io/istream_unformatted-2.tst: Delete.
+	* testsuite/27_io/istream_unformatted-3.tst: Delete.
+	* testsuite/27_io/istream_unformatted-3.txt: Delete.
+
+2001-03-07  Alexandre Oliva  
+
+	Add Irix 5.2, 6.3 support.
+	* config/os/irix/bits: Renamed to...
+	* config/os/irix/irix6.5/bits: this.
+	* config/os/irix/irix5.2/bits: New, copied from irix6.5/bits.
+	* config/os/irix/irix5.2/bits/ctype_base.h: Use _U, _L, _N,
+	_X, _S, _P, _C and _B instead of IRIX-6.5 _IS* macros.
+	* config/os/irix/irix5.2/bits/ctype_noninline.h
+	(ctype::ctype): Initialize _M_table with __ctype.
+	* configure.target: Adjust.
+
+2001-03-06  Benjamin Kosnik  
+
+	libstdc++/2181
+	* include/bits/istream.tcc (basic_istream<_CharT, _Traits>::
+	operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use
+	sentry.
+	(basic_istream<_CharT, _Traits>:: operator>>(__ios_type&
+	(*__pf)(__ios_type&)): Same.
+	(basic_istream<_CharT, _Traits>:: operator>>(ios_base&
+	(*__pf)(ios_base&))): Same.
+	* testsuite/27_io/istream_extractor_other.cc: Add tests.
+	* testsuite/27_io/istream_manip.cc (test01): Fix.
+
+2001-03-06  Nathan Myers  
+	    Benjamin Kosnik  
+
+	* include/c_std/bits/std_cerrno.h: Don't define errno in std::.
+	* testsuite/17_intro/header_cerrno.cc (test01): New file.
+	* testsuite/17_intro/header_cassert.cc (test01): New file.
+	* testsuite/17_intro/header_cstddef.cc (test01): New file.
+	* testsuite/17_intro/header_csetjmp.cc (test01): New file.
+	* testsuite/17_intro/header_cstdarg.cc (test01): New file.
+
+2001-03-05  scott snyder  
+
+	libstdc++/2190
+	* include/c_std/bits/std_cmath.h: Move abs(long), div(long,long)
+	from here...
+	* include/c_std/bits/std_cstdlib.h: ... to here.
+	* testsuite/17_intro/header_cstdlib.cc: Add test.
+
+2001-03-05  Stephen M. Webb  
+
+	* libsupc++/vec.cc (__cxxa_vec_new2): Qualify size_t.
+
+2001-03-05  Laurynas Biveinis  
+
+	* config/os/djgpp/ctype_base.h (ctype_base): fix __to_type
+	definition. Replace enum with static const variables.
+
+	* config/os/djgpp/ctype_inline.h (ctype::is): remove
+	throw specification, fix typos, use .
+	(ctype::scan_is): remove throw specification.
+	(ctype::scan_not): likewise.
+
+	* config/os/djgpp/ctype_noninline.h (ctype::ctype): fix typo.
+	(ctype::do_toupper(char)): use .
+	(ctype::do_toupper(char *, const char *)): likewise.
+	(ctype::do_tolower(char)): likewise.
+	(ctype::do_tolower(char *, const char *)): likewise.
+
+2001-03-04  Phil Edwards  
+
+	http://gcc.gnu.org/ml/libstdc++/2001-03/msg00015.html
+	* include/backward/algo.h:  Use std not __STD.  Remove unneeded
+	macros and "never happens" code.  Adjust to C++STYLE guidelines.
+	* include/backward/algobase.h:  Likewise.
+	* include/backward/alloc.h:  Likewise.
+	* include/backward/bvector.h:  Likewise.
+	* include/backward/deque.h:  Likewise.
+	* include/backward/function.h:  Likewise.
+	* include/backward/hash_map.h:  Likewise.
+	* include/backward/hash_set.h:  Likewise.
+	* include/backward/hashtable.h:  Likewise.
+	* include/backward/heap.h:  Likewise.
+	* include/backward/iterator.h:  Likewise.
+	* include/backward/list.h:  Likewise.
+	* include/backward/map.h:  Likewise.
+	* include/backward/multimap.h:  Likewise.
+	* include/backward/multiset.h:  Likewise.
+	* include/backward/pair.h:  Likewise.
+	* include/backward/rope.h:  Likewise.
+	* include/backward/set.h:  Likewise.
+	* include/backward/slist.h:  Likewise.
+	* include/backward/stack.h:  Likewise.
+	* include/backward/strstream:  Likewise.
+	* include/backward/tempbuf.h:  Likewise.
+	* include/backward/tree.h:  Likewise.
+	* include/backward/vector.h:  Likewise.
+	* include/bits/basic_ios.h:  Likewise.
+	* include/bits/basic_ios.tcc:  Likewise.
+	* include/bits/basic_string.h:  Likewise.
+	* include/bits/c++config:  Likewise.
+	* include/bits/concept_checks.h:  Likewise.
+	* include/bits/fpos.h:  Likewise.
+	* include/bits/fstream.tcc:  Likewise.
+	* include/bits/functexcept.h:  Likewise.
+	* include/bits/ios_base.h:  Likewise.
+	* include/bits/istream.tcc:  Likewise.
+	* include/bits/mask_array.h:  Likewise.
+	* include/bits/ostream.tcc:  Likewise.
+	* include/bits/pthread_allocimpl.h:  Likewise.
+	* include/bits/sbuf_iter.h:  Likewise.
+	* include/bits/slice.h:  Likewise.
+	* include/bits/slice_array.h:  Likewise.
+	* include/bits/sstream.tcc:  Likewise.
+	* include/bits/std_bitset.h:  Likewise.
+	* include/bits/std_fstream.h:  Likewise.
+	* include/bits/std_iomanip.h:  Likewise.
+	* include/bits/std_ios.h:  Likewise.
+	* include/bits/std_istream.h:  Likewise.
+	* include/bits/std_iterator.h:  Likewise.
+	* include/bits/std_memory.h:  Likewise.
+	* include/bits/std_ostream.h:  Likewise.
+	* include/bits/std_sstream.h:  Likewise.
+	* include/bits/std_streambuf.h:  Likewise.
+	* include/bits/std_string.h:  Likewise.
+	* include/bits/std_valarray.h:  Likewise.
+	* include/bits/stl_algo.h:  Likewise.
+	* include/bits/stl_algobase.h:  Likewise.
+	* include/bits/stl_alloc.h:  Likewise.
+	* include/bits/stl_construct.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_function.h:  Likewise.
+	* include/bits/stl_heap.h:  Likewise.
+	* include/bits/stl_iterator.h:  Likewise.
+	* include/bits/stl_iterator_base.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_map.h:  Likewise.
+	* include/bits/stl_multimap.h:  Likewise.
+	* include/bits/stl_multiset.h:  Likewise.
+	* include/bits/stl_numeric.h:  Likewise.
+	* include/bits/stl_pair.h:  Likewise.
+	* include/bits/stl_pthread_alloc.h:  Likewise.
+	* include/bits/stl_queue.h:  Likewise.
+	* include/bits/stl_raw_storage_iter.h:  Likewise.
+	* include/bits/stl_relops.h:  Likewise.
+	* include/bits/stl_set.h:  Likewise.
+	* include/bits/stl_stack.h:  Likewise.
+	* include/bits/stl_tempbuf.h:  Likewise.
+	* include/bits/stl_threads.h:  Likewise.
+	* include/bits/stl_tree.h:  Likewise.
+	* include/bits/stl_uninitialized.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/bits/streambuf.tcc:  Likewise.
+	* include/bits/type_traits.h:  Likewise.
+	* include/bits/valarray_meta.h:  Likewise.
+	* include/ext/bvector:  Likewise.
+	* include/ext/hash_map:  Likewise.
+	* include/ext/hash_set:  Likewise.
+	* include/ext/ropeimpl.h:  Likewise.
+	* include/ext/slist:  Likewise.
+	* include/ext/stl_bvector.h:  Likewise.
+	* include/ext/stl_hash_fun.h:  Likewise.
+	* include/ext/stl_hashtable.h:  Likewise.
+	* include/ext/stl_rope.h:  Likewise.
+	* src/complex_io.cc:  Likewise.
+	* src/ios.cc:  Likewise.
+	* src/locale-inst.cc:  Likewise.
+	* src/locale.cc:  Likewise.
+	* src/localename.cc:  Likewise.
+	* src/misc-inst.cc:  Likewise.
+	* src/stdexcept.cc:  Likewise.
+	* src/stl-inst.cc:  Likewise.
+	* src/strstream.cc:  Likewise.
+	* src/valarray-inst.cc:  Likewise.
+
+2001-03-03  Benjamin Kosnik  
+
+	* src/misc-inst.cc (__copy_streambufs): Fix typo for alpha.
+
+2001-03-02  Peter Schmid  
+
+	* include/bits/istream.tcc: change type of __extracted to __size_type
+
+2001-03-02  Benjamin Kosnik  
+
+	* src/wstring-inst.cc: New file.
+	* src/Makefile.am (EXTRA_LTLIBRARIES): Remove.
+	(libinst_wstring_la_SOURCES): Remove.
+	(libstdc___la_LIBADD): Remove libinst_wstring_la.
+	(sources): Add wstring-inst.cc
+	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Remove
+	libinst_wstring_la.
+
+2001-03-02  Peter Schmid  
+
+	* src/locale.cc: initialise __ret with zero
+	* src/strstream.cc:cast gptr to int_type
+
+2001-03-01  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update broken links.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-02-28  Benjamin Kosnik  
+
+	libstdc++/2064
+	* configure.target: Change irix* to irix6.5* in target_os table.
+
+2001-02-28  Benjamin Kosnik  
+
+	libstdc++/2103
+	* include/bits/c++config (__GLIBCPP__): Bump number in
+	anticipation of 2.92.
+
+	* include/bits/codecvt.h: Fix typo.
+	* include/bits/basic_file.h (__basic_file): Don't use _M_wfile for
+	stdio model.
+	* acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Enable wchar_t
+	instantiations for stdio model.
+
+2001-02-28  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE):  Remove GLIBCPP_CFLAGS
+	  and GLIBCPP_CXXFLAGS as unused variables.
+	* configure.host:  Likewise.
+	* configure.target:  Likewise.
+	* aclocal.m4:  Regenerated.
+	* configure:  Regenerated.
+	* Makefile.in:  Regenerated.
+	* libio/Makefile.in:  Regenerated.
+	* libmath/Makefile.in:  Regenerated.
+	* libsupc++/Makefile.in:  Regenerated.
+	* src/Makefile.in:  Regenerated.
+
+2001-02-27  Benjamin Kosnik  
+
+	libstdc++/1886
+	* include/bits/basic_file.h: Include basic_file_model.h.
+	* config/c_io_libio.cc: Move to...
+	* config/basic_file_libio.cc: Here.
+	* config/basic_file_libio.h: New file.
+	* config/c_io_stdio.cc: Move to...
+	* config/basic_file_stdio.cc: Here.
+	* config/basic_file_stdio.h: New file.
+	* config/c_io_libio.h: Tweak.
+	* config/c_io_stdio.h: Tweak.
+	* src/Makefile.am (build_headers): Add basic_file_model.h.
+	(sources): Add basic_file.cc, remove c++io.cc.
+	* src/Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Add support for
+	basic_file_model.h and basic_file.cc.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/27_io/filebuf.cc (test05): Add regression.
+
+2001-02-27  Benjamin Kosnik  
+
+	Correct license.
+	* config/cpu/alpha/bits/atomicity.h: Change.
+	* config/cpu/arm/bits/atomicit3y.h
+	* config/cpu/generic/bits/atomicity.h
+	* config/cpu/i386/bits/atomicity.h
+	* config/cpu/i486/bits/atomicity.h
+	* config/cpu/ia64/bits/atomicity.h
+	* config/cpu/powerpc/bits/atomicity.h
+	* config/cpu/sparc/sparc32/bits/atomicity.h
+	* config/cpu/sparc/sparc64/bits/atomicity.h
+	* config/os/aix/bits/atomicity.h
+	* config/os/irix/bits/atomicity.h
+
+2001-02-27  Benjamin Kosnik  
+
+	* include/bits/std_stdexcept.h (runtime_error): Make string
+	member non-const.
+	(logic_error): Same.
+	* testsuite/19_diagnostics/stdexceptions.cc (test04): Add test.
+	(test03): Fix.
+
+2001-02-26  Benjamin Kosnik  
+
+	libstdc++/1972
+	libstdc++/2089
+	* include/bits/std_stdexcept.h (logic_error::logic_error): Use
+	string object, not reference.
+	(runtime_error::runtime_error): Same.
+	* testsuite/19_diagnostics/stdexceptions.cc: New file.
+
+2001-02-26  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE):  Update required compiler version.
+	  (GLIBCPP_CHECK_COMPILER_FEATURES):  Can safely assume new
+	  diagnostics.  Remove WFMT_FLAGS.
+	* configure.in:  Replace WFMT_FLAGS with diagnostics options.
+	* libsupc++/Makefile.am:  Likewise.
+	* src/Makefile.am:  Likewise.
+	* aclocal.m4:  Regenerated.
+	* configure:  Regenerated.
+	* Makefile.in:  Regenerated.
+	* libio/Makefile.in:  Regenerated.
+	* libmath/Makefile.in:  Regenerated.
+	* libsupc++/Makefile.in:  Regenerated.
+	* src/Makefile.in:  Regenerated.
+
+2001-02-26  Phil Edwards  
+
+	Fixes libstdc++/2079
+	* include/backward/iomanip.h:  Expose  manipulators to global
+	  namespace.
+	* include/backward/iostream.h:  Also expose std::ws.
+
+2001-02-25  Greg Freemyer 
+
+	* libmath/mathconf.h (GET_LDOUBLE_MSW64): Fix thinko.
+
+2001-02-23  Benjamin Kosnik  
+
+	* include/bits/codecvt.h: Use __builtin_alloca.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/fstream.tcc: Same.
+
+2001-02-23  Alexandre Oliva 
+
+	* mknumeric_limits (CC): Use VAR=${VAR=...} form.
+
+2001-02-23  David Edelsohn 
+
+	* mknumeric_limits (CC): Use $BUILD_DIR/../../gcc/xgcc
+
+2001-02-23  Phil Edwards  
+
+	c++/2052
+	* include/backward/iostream.h:  Expose std::flush in old headers.
+
+2001-02-23  Gabriel Dos Reis  
+
+	* mknumeric_limits: Remove special-casing on target.  Use gcc
+	instead of g++ to build gen-num-limits.cc
+
+2001-02-22  Benjamin Kosnik  
+
+	* tests_flags.in (CXXFLAGS): Add -rpath to gcc build dir.
+
+	* include/bits/codecvt.h: Use alloca instead of __extension__ for
+	the time being.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/std_ostream.h: Same.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/locale_facets.tcc: Add typename.
+	* include/bits/c++config (_GLIBCPP_FULLY_COMPLIANT_HEADERS): Enable.
+
+2001-02-21  Phil Edwards  
+
+	* tests_flags.in:  Remove -n flag from call to echo.
+
+2001-02-20  Benjamin Kosnik  
+
+	* config/c_locale_gnu.h: Add clocale include.
+
+2001-02-20  Phil Edwards  
+
+	* include/bits/stl_config.h:  Remove file.
+	* src/Makefile.am (base_headers):  Remove from list.
+	* configure:  Regenerate.
+	* Makefile.in:  Ditto.
+	* libio/Makefile.in:  Ditto.
+	* libmath/Makefile.in:  Ditto.
+	* libsupc++/Makefile.in:  Ditto.
+	* src/Makefile.in:  Ditto.
+
+	* include/bits/c++config:  Move relevant macros to here.
+	* include/backward/alloc.h:  Include c++config.h instead.
+	* include/backward/function.h:  Ditto.
+	* include/backward/heap.h:  Ditto.
+	* include/backward/pair.h:  Ditto.
+	* include/bits/pthread_allocimpl.h:  Ditto.
+	* include/bits/std_functional.h:  Ditto.
+	* include/bits/std_iterator.h:  Ditto.
+	* include/bits/std_numeric.h:  Ditto.
+	* include/bits/std_utility.h:  Ditto.
+	* include/bits/stl_algobase.h:  Ditto.
+	* include/bits/type_traits.h:  Ditto.
+	* src/stl-inst.cc:  Ditto.
+
+2001-02-19  Gabriel Dos Reis  
+
+	* include/bits/basic_file.h: Add #pragma system_header
+	* include/bits/basic_ios.h: Ditto.
+	* include/bits/basic_string.h: Ditto.
+	* include/bits/char_traits.h: Ditto.
+	* include/bits/codecvt.h: Ditto.
+	* include/bits/cpp_type_traits.h:  Ditto.
+	* include/bits/fpos.h: Ditto.
+	* include/bits/gslice.h: Ditto.
+	* include/bits/gslice_array.h: Ditto.
+	* include/bits/indirect_array.h: Ditto.
+	* include/bits/ios_base.h: Ditto.
+	* include/bits/limits_generic.h: Ditto.
+	* include/bits/locale_facets.h: Ditto.
+	* include/bits/localefwd.h: Ditto.
+	* include/bits/mask_array.h: Ditto.
+	* include/bits/sbuf_iter.h: Ditto.
+	* include/bits/sequence_concepts.h: Ditto.
+	* include/bits/slice.h: Ditto.
+	* include/bits/slice_array.h: Ditto.
+	* include/bits/std_algorithm.h: Likewise.
+	* include/bits/std_bitset.h: Likewise.
+	* include/bits/std_complex.h: Likewise.
+	* include/bits/std_deque.h: Likewise.
+	* include/bits/std_fstream.h: Likewise.
+	* include/bits/std_functional.h: Likewise.
+	* include/bits/std_iomanip.h: Likewise.
+	* include/bits/std_ios.h: Likewise.
+	* include/bits/std_iosfwd.h: Likewise.
+	* include/bits/std_iostream.h: Likewise.
+	* include/bits/std_istream.h: Likewise.
+	* include/bits/std_iterator.h: Likewise.
+	* include/bits/std_list.h: Likewise.
+	* include/bits/std_locale.h: Likewise.
+	* include/bits/std_map.h: Likewise.
+	* include/bits/std_memory.h: Likewise.
+	* include/bits/std_numeric.h: Likewise.
+	* include/bits/std_ostream.h: Likewise.
+	* include/bits/std_queue.h: Likewise.
+	* include/bits/std_set.h: Likewise.
+	* include/bits/std_sstream.h: Likewise.
+	* include/bits/std_stack.h: Likewise.
+	* include/bits/std_stdexcept.h: Likewise.
+	* include/bits/std_streambuf.h: Likewise.
+	* include/bits/std_string.h: Likewise.
+	* include/bits/std_utility.h: Likewise.
+	* include/bits/std_valarray.h: Likewise.
+	* include/bits/std_vector.h: Likewise.
+	* include/bits/stringfwd.h: Likewise.
+	* include/bits/type_traits.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* include/bits/valarray_meta.h: Likewise.
+
+2001-02-19  Andreas Jaeger  
+
+	* config/cpu/sparc/sparc64/bits/atomicity.h (__compare_and_swap):
+	Fix typo.
+
+2001-02-16  Greg Bumgardner 
+
+	libstdc++/1734
+	* include/bits/std_ostream.h: Replaced usage of
+	_Traits::_S_eos() with _CharT() as per section 17.2.2.1.3.
+	* include/bits/char_traits.h: Removed non-standard
+	methods that cannot be used elsewhere.
+
+	libstdc++/1885
+	* include/bits/basic_ios.h: Uncommented #include of
+	bits/basic_ios.tcc
+
+	libstdc++/1897
+	* include/bits/codecvt.h: See next...
+	* include/bits/fstream.tcc: See next...
+	* include/bits/ostream.tcc: Add __extension__
+	to variable-length arrays.
+
+	libstdc++/1967
+	* include/bits/localefwd.h: Changed int counter type to size_t.
+
+	libstdc++/1968
+	* include/bits/std_fstream.h: Added typedef for __ctype_type.
+
+2001-02-16  Benjamin Kosnik  
+
+	* testsuite/21_strings/char_traits.cc: Move to ...
+	* testsuite/21_strings/char_traits_requirements.cc: ..here.
+	* testsuite/21_strings/char_traits-int_type.cc: Move to ...
+	* testsuite/21_strings/char_traits_typedefs.cc: ..here.
+
+2001-02-16  Gabriel Dos Reis  
+
+	* libmath/mathconf.h (FINITE_P, INFINITE_P): Remove macro
+	definitions.
+
+2001-02-15  Benjamin Kosnik  
+
+	* include/bits/c++config: Revert.
+
+2001-02-15  Mark Mitchell  
+
+	* include/bits/istream.tcc: Use ios_base::iostate in place of
+	iostate throughout.  Insert `typename' keyword where necessary.
+	* include/bits/ostream.tcc: Insert `typename' keyword where
+	necessary.
+
+2001-02-15  Jeffrey Oldham  
+
+	* include/bits/c++config (_GLIBCPP_FULLY_COMPLIANT_HEADERS):
+	Define so library is compliant.
+
+2001-02-15  Anthony Green  
+
+	* acinclude.m4 (glibcpp_toolexeclibdir): Fix test for cross
+	compilation.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-02-15  Rodney Brown  
+
+	* acinclude.m4 (GLIBCPP_CHECK_MATH_DECL_1):
+	Include ieeefp.h for fpclass on UnixWare{2,7}.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* mkcheck.in (size_command): Do without GNU-grep when using
+	size from binutils.
+
+2001-02-15  Mark Mitchell  
+
+	Remove old ABI support from libsupc++.
+	* libsupc++/cxxabi.h: Remove conditionally compiled code.
+	* libsupc++/exception_support.cc: Likewise.
+	* libsupc++/pure.cc: Likewise.
+	* libsupc++/tinfo.cc: Likewise.
+	* libsupc++/tinfo.h: Likewise.
+	* libsupc++/tinfo2.cc: Likewise.
+	* libsupc++/typeinfo: Likewise.
+	* libsupc++/vec.cc: Likewise.
+
+2001-02-15  Benjamin Kosnik  
+
+	Add support for -fno-exceptions.
+	* include/bits/exception_support.h: Remove.
+	* include/bits/basic_string.h: Remove exception_support.
+	(string::_M_check): Replace __OUTOFRANGE with __throw_out_of_range.
+	(string::at): Same.
+	(string::substr): Same.
+	* include/bits/basic_string.tcc (string::reserve): Replace
+	__LENGTHERROR with __throw_length_error.
+	(string::_S_create): Same.
+	(string::resize): Same.
+	(string::_M_replace): Same.
+	(string::replace): Same.
+	(string::copy): Replace __OUTOFRANGE with __throw_out_of_range.
+	(string::compare): Same.
+	* include/bits/stl_vector.h: Remove exception_support.
+	* src/Makefile.am (base_headers): Remove here.
+	* src/Makefile.in: Regenerate.
+
+	* include/bits/stl_range_errors.h: Remove.
+	* include/bits/stl_deque.h: Use __throw_range_error.
+	* include/bits/std_deque.h: Include functexcept.h.
+	* include/bits/std_vector.h: Same.
+	* src/Makefile.am (base_headers): Remove here.
+	* src/Makefile.in: Regenerate.
+	* include/ext/stl_bvector.h (class __BVECTOR): Use __throw_range_error.
+	* include/ext/bvector: Remove stl_range_errors.h
+
+	* include/bits/c++config (_GLIBCPP_USE_EXCEPTIONS): Remove.
+
+	* include/bits/functexcept.h: New file.
+	* src/functexcept.cc: New file. Definitions for function-based
+	exception routines.
+	* src/Makefile.am (sources): Add functexcept.cc.
+	* src/Makefile.in: Regenerate.
+
+	* include/bits/stl_config.h (__STL_USE_EXCEPTIONS): Wrap with
+	__EXCEPTIONS.
+
+	* include/bits/localefwd.h: Include functexcept.h.
+	* include/bits/std_iosfwd.h: Same.
+
+	* include/bits/basic_ios.h: Use __throw_ios_failure instead of
+	throw basic_ios::failure.
+	* include/bits/fstream.tcc (filebuf::_M_allocate_buffers):
+	Use __throw_exception_again.
+	(filebuf::_M_filebuf_init): Same.
+	* include/bits/streambuf.tcc (__copy_streambufs): Same.
+	* include/bits/ostream.tcc (ostream::operator<<): Same.
+	* include/bits/istream.tcc (istream::operator>>): Same.
+	* include/bits/basic_string.tcc (string::_M_mutate): Same.
+	(string::_S_construct): Same.
+	(string::_M_clone): Same.
+	* include/bits/locale_facets.tcc (use_facet(const locale&)): Use
+	__throw_bad_cast.
+	(num_put<_CharT, _OutIter>::do_put): Use __throw_exception_again.
+	* src/localename.cc (locale::_Imp::_Imp(const _Impl&, size_t): Use
+	__throw_exception_again.
+	(locale::_Imp::_Imp(string, size_t): Same.
+	(locale::_Imp::_M_replace_facet): Use __throw_runtime_error.
+	* src/locale.cc (locale::_M_coalesce): Use __throw_exception_again.
+	(locale::locale(const char*)): Use __throw_runtime_error.
+	(locale::classic): Use __throw_exception_again.
+	(locale::_S_normalize_category): Use __throw_runtime_error.
+
+	* src/stdexcept.cc: Remove cruft.
+
+	* libsupc++/exception_defines.h: New file.
+	* libsupc++/new_opnt.cc: Include exception_defines.h.
+	* libsupc++/vec.cc: Same.
+	(__cxa_vec_new2): Use __throw_exception_again.
+	(__cxa_vec_new3): Same.
+	(__cxa_vec_ctor): Same.
+	(__cxa_vec_delete3): Same.
+	(__cxa_vec_cctor): Same.
+	(__cxa_vec_delete2): Same.
+	(__cxa_vec_dtor): Same.
+	* libsupc++/exception_support.cc: Include exception_defines.h. Only
+	compile exception-handling bits if __EXCEPTIONS is defined.
+	Remove old ABI support.
+	* libsupc++/new_op.cc (new): Include exception_defines.h. Use
+	std::__throw_bad_alloc() instead of throw bad_alloc.
+	* libsupc++/Makefile.am: Add exception_defines.h.
+	* libsupc++/Makefile.in: Reformat.
+	* libsupc++/*: Format.
+
+2001-02-15  Phil Edwards  
+
+	* docs/html/configopts.html:  Minor updates and typo fixes.
+	* docs/html/faq/index.html:  Updates of the "not really bugs" list.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-02-15  Gabriel Dos Reis  
+
+	* testsuite/lib/libstdc++.exp: Lift, temporarily, out of
+	dejagnu/dg.exp.  Adapt to log options used to run testcases.
+
+2001-02-13  Gabriel Dos Reis  
+
+	* testsuite/lib/libstdc++.exp(dg-test): Lift temporarily from
+	dejagnu/dg.exp.
+
+2001-02-13  Dirk Mueller 
+	    Phil Edwards  
+
+	* include/backward/function.h:  Do not use rel_ops for older
+	  headers either.
+	* include/backward/pair.h:  Likewise.
+
+2001-02-12  Mark Mitchell  
+
+	* src/locale.cc: Remove bogus locale::id definitions.
+
+2001-02-11  Gabriel Dos Reis  
+
+	* include/bits/std_valarray.h: #undef _DEFINE_LOGICAL_OPERATOR,
+	not _DEFINE_VALARRAY_OPERATOR which is not existent.
+
+	* include/bits/valarray_meta.h (_RefFunClos<>_RefRunClos): Fix
+	thinko in member initialisation.
+
+2001-02-11  Gabriel Dos Reis  
+
+	* include/bits/std_valarray.h(valarray<>::shift): Avoid
+	comparaison between signed and unsigned integer types.
+	(valarray<>::cshift): Reformat.
+
+2001-02-11  Alexandre Oliva  
+
+	* src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available.
+	* mknumeric_limits: Compile it with -DHAVE_CONFIG_H.
+	* configure.in: Test for sigsetjmp.
+	* configure, config.h.in: Rebuilt.
+
+2001-02-11  Gabriel Dos Reis  
+
+	* src/valarray-inst.cc (gslice::_Indexer::_Indexer): Don't flip
+	lengths and strides.
+	(__gslice_to_index): Document.
+
+2001-02-11  Gabriel Dos Reis  
+
+	* include/bits/char_traits.h char_traits::int_type: Change
+	to `int' to match 21.1.3.1/2.
+
+	* testsuite/21_strings/char_traits-int_type.C: New test.
+
+2001-02-10  Gabriel Dos Reis  
+
+	* testsuite/Makefile.am: New file.
+
+2001-02-09  Nathan Sidwell  
+
+	* include/c_shadow/bits/std_cstdlib.h (lldiv_t): Fix typo.
+
+2001-02-08  Loren J. Rittle  
+
+	* src/locale-inst.cc (fill_n): Instantiate with size_t arguments.
+
+2001-02-08  David Edelsohn  
+
+	* configure.target (aix4*): Remove extra set of brackets.
+
+2001-02-07  Benjamin Kosnik  
+
+	Clean up stdexcept.
+	* include/bits/stringfwd.h: New file.
+	* include/bits/stl_string_fwd.h: Remove.
+	* include/bits/localefwd.h: Remove declaration for allocator.
+	* include/bits/std_iosfwd: Same.
+	* include/bits/std_string.h: Include it.
+	* include/bits/std_ios.h: Remove include.
+	* include/bits/basic_string.h: Tweak.
+	* libsupc++/new: Format.
+	* src/Makefile.am (base_headers): Add stringfwd.h, remove
+	stl_string_fwd.h
+	* src/Makefile.in: Regenerate.
+	* include/bits/std_stdexcept.h: Rewrite.
+	* src/stdexcept.cc: Same.
+
+2001-02-06  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Deal with library
+	install locations too.
+	* aclocal.m4: Regenerate.
+	* configure.in: Remove USE_LIBDIR.
+	* configure: Regenerate.
+	* src/Makefile.am (toolexecdir): Simplify, use
+	glibcpp_toolexecdir, glibcpp_toolexeclibdir.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Same.
+	* libsupc++/Makefile.in: Regenerate.
+
+	* src/Makefile.am: Just remove special rules for locale-inst.cc and
+	misc-inst.cc as no longer necessary.
+
+	Follow C++STYLE for naming non-static functions.
+	* include/bits/ostream.tcc (_S_pad_char): Not static, rename to
+	__pad_char.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/locale_facets.tcc (_S_pad_numeric): To __pad_numeric.
+	(_S_output_float): To __output_float.
+	* include/bits/std_streambuf.h (_S_copy_streambufs): To
+	__copy_streambufs.
+	* include/bits/locale_facets.tcc (_S_build_float_format): To
+	__build_float_format.
+	(_S_format): To __output_integer.
+	(_S_fill): To __pad.
+	* src/locale.cc: Same.
+	* src/misc-inst.cc: Fix formatting. Fix signature for wchar_t. Correct
+	names.
+	* include/bits/locale_facets.tcc (_S_group_digits): To
+	__group_digits.
+	* src/locale-inst.cc: Fixup names. Add use_facet instantiations
+	for collate, numpunct.
+
+2001-02-06  Phil Edwards  
+
+	* docs/html/configopts.html:  Fix HTML markup.
+	* docs/html/install.html:  Bring up to date.
+	* docs/html/17_intro/C++STYLE:  Add global variable conventions.
+	* docs/html/21_strings/howto.html:  More notes.
+	* docs/html/22_locale/howto.html:  Fix HTML markup.
+	* docs/html/27_io/howto.html:  More notes.
+	* docs/html/27_io/binary_iostreams_kanze.txt:  New file.
+	* docs/html/27_io/binary_iostreams_kuehl.txt:  New file.
+
+2001-02-06  Jeffrey Oldham  
+
+	* src/misc-inst.cc (_S_pad_char): Modify declaration's parameters
+	to match header files.
+	(_S_output_float): Likewise.
+	(_S_copy_streambufs): Likewise.
+
+2001-02-06  Hyman Rosen  
+	    Phil Edwards  
+
+	* include/bits/std_istream.h (op>> signed,unsigned char):  Must
+	  use reinterpret_cast, not static_cast.
+
+2001-02-06  Benjamin Kosnik  
+
+	* acinclude.m4 (gxx_include_dir): Quote, fix regression.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-02-05  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (class moneypunct): Fix typos.
+	* libsupc++/pure.cc: Revert.
+
+2001-02-05  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_MATH_DECL_1): New macro.
+	(GLIBCPP_CHECK_MATH_DECL_2): New macro.
+	(GLIBCPP_CHECK_MATH_DECL_3): New macro.
+	(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1): Use it, check for _* too.
+	(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2): Same.
+	(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3): Same.
+	(GLIBCPP_CHECK_MATH_SUPPORT): Remove explicit checks for _* versions.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2001-02-05  Mark Mitchell  
+
+	* include/bits/locale_facets.tcc: Remove `static' keyword on
+	function definitions.
+	* include/bits/std_streambuf.h: Likewise.
+	* src/Makefile.am: Remove use of -fimplicit-templates.
+	* src/Makefile.in: Regenerated.
+	* src/locale-inst.cc: Explicitly instantiate more functions.
+	* src/misc-inst.cc: Likewise.
+	* src/string-inst.cc: Likewise.
+
+2001-02-05  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): New
+	macro. Consolidate all the bits to do with where includes might be
+	installed.
+	* aclocal.m4: Regenerate.
+	* configure.in: Use it.
+	* configure: Regenerate.
+	* src/Makefile.am (targetincludep): Use simplified rules.
+	(targetincludep): Rename gxx_target_include_dir.
+	(myincludep): Rename gxx_include_dir.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Use simplified rules.
+	* libsupc++/Makefile.in: Regenerate.
+
+2001-02-05  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cerrno.h: Correct date format for copyright.
+	* include/c_std/bits/std_cctype.h: Same.
+	* include/c_std/bits/std_cassert.h: Same.
+	* include/c_std/bits/std_cstdarg.h: Same.
+	* include/c_std/bits/std_cstddef.h: Same.
+
+	* include/c_std/bits/std_cstdio.h: Undefine all names brought into
+	namespace std.
+	* include/c_std/bits/std_ctime.h: Same.
+	* include/c_std/bits/std_clocale.h: Same.
+	* include/c_std/bits/std_cmath.h: Same.
+	* include/c_std/bits/std_csetjmp.h: Same.
+	* include/c_std/bits/std_csignal.h: Same.
+	* include/c_std/bits/std_cstring.h: Same.
+	* include/c_std/bits/std_cstdlib.h: Same.
+	* include/c_std/bits/std_cwchar.h: Same.
+
+2001-02-05  Phil Edwards  
+
+	* testsuite/27_io/ios_base_members_static.cc:  Swap order of tests.
+
+2001-02-05  Mark Mitchell  
+
+	* src/string-inst.cc (string::_M_replace): Explicitly instantiate.
+	(string::_S_construct): Likewise.
+
+2001-02-05  Gabriel Dos Reis  
+
+	* testsuite/config/default.exp: New file.
+	* testsuite/config: New directory.
+
+2001-02-04  Mark Mitchell  
+
+	* libsupc++/typeinfo (__GXX_MERGED_TYPEINFO_NAMES): New macro.
+	* libsupc++/tinfo.cc (std::typeinfo::operator==): Use strcmp
+	whenever !__GXX_MERGED_TYPEINFO_NAMES.
+	* libsupc++/tinfo2.cc (std::typeinfo::before): Likewise.
+
+2001-02-03  Alexandre Oliva  
+	    Gerald Pfeifer  
+
+	* Makefile.am (mkinstalldirs): Set.
+	* src/Makefile.am (mkinstalldirs): Set.
+	* libmath/Makefile.am (mkinstalldirs): Set.
+	* libsup++/Makefile.am (mkinstalldirs): Set.
+	* libio/Makefile.am (mkinstalldirs): Set.
+	* */Makefile.in: Regenerate.
+
+2001-02-03  Benjamin Kosnik  
+
+	* include/bits/stl_threads.h (struct _STL_mutex_lock): Same.
+	* include/bits/localefwd.h: More initialization cleanups.
+
+2001-02-03  Jeffrey A Law  
+
+	* include/bits/ios_base.h (_S_ios_fmtflags_end): Initialize
+	correctly targets with 16bit ints.
+	(_S_ios_openmode_end): Similarly.
+	(_S_ios_iostate_end): Similarly.
+	(_S_ios_Seekdir_end): Similarly.
+
+2001-02-02  Phil Edwards  
+
+	* mkcheck.in:  Also limit virtual memory size, for mmap-based mallocs.
+
+2001-02-01  Alexandre Oliva  
+
+	* configure.in (toplevel_srcdir, auxdir): Set.
+	* acinclude.m4 (glibcpp_basedir): Set based on auxdir.
+	* aclocal.m4, configure, Makefile.in: Rebuilt.
+	* libio/Makefile.in, math/Makefile.in, src/Makefile.in: Likewise.
+	* libsupc++-v3/Makefile.am (INCLUDES): Use toplevel_srcdir.
+	* libsupc++-v3/Makefile.in: Rebuilt.
+	* libsupc++-v3/configure.in, libsupc++-v3/configure: Removed.
+	* libsupc++-v3/aclocal.m4, libsupc++-v3/config.h.in: Likewise.
+
+2001-01-30   Benjamin Kosnik  
+
+	* config/c_locale_generic.cc: Remove langinfo include.
+
+2001-01-29  Benjamin Kosnik  
+
+	Preliminary named locales.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): New macro.
+	* aclocal.m4: Regenerate.
+	* configure.in: Use it.
+	* configure: Regerate.
+	* src/Makefile.am (sources): Add c++locale.cc.
+	(build_headers): Add c++locale.h.
+	* src/Makefile.in: Regenerate.
+	* config/c_locale_gnu.h: New file.
+	* config/c_locale_gnu.cc: New file. Non-inline member functions
+	for named locales, gnu-specific.
+	* config/c_locale_generic.h: New file.
+	* config/c_locale_generic.cc: New file. Non-inline member
+	functions for named locales, generic version.
+	* docs/html/configopts.html: Add documentation on new options.
+
+	* include/bits/locale_facets.h (class _Messages): Remove.
+	(class _Moneypunct): Remove.
+	* src/locale-inst.cc: Remove.
+
+	* include/bits/locale_facets.h (class _Collate): Remove.
+	* src/locale-inst.cc (std): Remove.
+	* src/locale.cc: And here.
+
+	* include/bits/localefwd.h (locale::_M_coalesce): New
+	function. Correctly put together multi-name locales.
+	(_Impl(const _Impl&, category, size_t)): Remove.
+
+	* include/bits/localefwd.h (locale::_Impl): Remove _M_construct_*
+	member functions.
+	(_M_normalize_category_names): Remove.
+	(_M_replace_categories): Fix.
+
+	* src/localename.cc (locale::_Impl::_M_construct_collate): Remove.
+	(locale::_Impl::_M_construct_ctype): Remove.
+	(locale::_Impl::_M_construct_monetary): Remove.
+	(locale::_Impl::_M_construct_numeric): Remove.
+	(locale::_Impl::_M_construct_time): Remove.
+	(locale::_Impl::_M_construct_messages): Remove.
+
+	* include/bits/locale_facets.h (_Bad_use_facet): Remove.
+	(_Use_facet_failure_handle): Remove.
+	* src/locale.cc: Remove definitions.
+	* src/locale-inst.cc: And here.
+
+	* testsuite/22_locale/ctor_copy_dtor.cc (test01): Fixup. Add tests.
+
+	* src/localename.cc (locale::facet::_S_create_c_locale): Properly
+	create and error-check underlying locale object.
+	(locale::facet::_S_destroy_c_locale): Add, take care of properly
+	tearing down underlying locale object.
+	* include/bits/localefwd.h (locale::facet): Declare.
+	* testsuite/22_locale/members.cc: Don't test "fr_FR" locale for
+	correctness, as glibc apparently has incorrect info in it. Test
+	with it when it works again.....
+
+	* include/bits/localefwd.h (locale::_Impl::__vec_string):
+	Remove. Number of categories is fixed at six, so just simplify and
+	make this an array of strings.
+	(locale::_Impl::_M_has_name): Remove.
+	(locale::_Impl::_M_name): Remove.
+	(locale::_Impl::_M_category_names): Turns into...
+	(locale::_Impl::_M_names): ...this.
+	(locale::_Impl::_M_has_same_name()): New function.
+	* src/localename.cc (locale::_Impl::~_Impl()): Remove here.
+	(locale::_Impl::_Impl(size_t __refs, string __str)): Simplify
+	signature.
+	* src/locale.cc (locale::name()): Construct mangled name
+	accurately reflecting combined locale categories.
+
+	* src/locale.cc (locale::classic()): Don't initialize here.
+	* src/localename.cc (locale::_Impl::_Impl(size_t __num, size_t
+	__refs, bool __has_name, string __str): Do it here.
+
+	* include/bits/localefwd.h: _S_categories_num to
+	_S_num_categories. _S_facets_num to _S_num_facets.
+	(locale::id::id()): Explicitly set _M_index to zero.
+	* src/locale.cc: Same.
+
+	* src/locale.cc: (locale::locale(const char*)): Construct named
+	locales uniquely.
+
+	* src/locale.cc: Remove numpunct_byname ctors.
+	* testsuite/22_locale/numpunct_byname.cc: New file.
+	* testsuite/22_locale/numpunct.cc: New file.
+
+	* include/bits/localefwd.h (class locale): Change data members to
+	protected, from private.
+	(_Impl::_M_get_c_locale): Add member function.
+	(locale::facet::_M_get_global_impl()): Add member function.
+	* include/bits/locale_facets.h (numpunct::_M_init): Change to take
+	a __c_locale pointer.
+	(numpunct::numpunct( __c_locale*, size_t)): Add additonal ctor for
+	named locales.
+	* testsuite/22_locale/members.cc: New file, test name and combine.
+
+	* include/bits/locale_facets.h (class numpunct): Remove class
+	_Punct and _Numpunct. Rewrite class numpunct to be correct for
+	named locales.
+	* include/bits/localefwd.h (locale::_Imp::_M_c_locale): Add.
+	* src/localename.cc (_Impl::~_Impl()): Call __frelocale.
+	(_Imp::_Impl(size_t, size_t, bool, string)) Initialize _M_c_locale.
+	* src/locale-inst.cc: Remove _Numpunct, _Punct instantiations.
+	* testsuite/22_locale/numpunct_char_members.cc: New file.
+
+2001-01-28  Gabriel Dos Reis  
+
+	* testsuite/README: Add more comment.
+	* testsuite/lib/libstdc++.exp: Tweak comment.
+
+2001-01-26  Benjamin Kosnik  
+
+	* libsupc++/pure.cc (writestr): Just use cstdio and std::fputs.
+
+2001-01-25  Loren J. Rittle  
+
+	* testsuite/21_strings/inserters_extractors.cc: Remove
+	explicit reference to 'testsuite/'.
+
+2001-01-25  Richard Henderson  
+
+	* config/cpu/alpha/bits/atomicity.h: Remove tricky .subsetion
+	bits. Fixes Tru64 build issues.
+
+2001-01-25  Michael Sokolov  
+
+	* acinclude.m4 (GLIBCPP_CHECK_GNU_MAKE): Bourne shell portability bug
+	(use ${MAKE-make}, not ${MAKE:-make}).
+	* aclocal.m4, configure: Regenerate.
+
+2001-01-25  Mark Mitchell  
+
+	* src/ios.cc: Remove accidental inclusion of  in last
+	checkin.
+
+	* src/Makefile.am (sources): Add globals.cc.
+	* src/Makefile.in: Regenerated.
+	* src/globals.cc: New file.
+	* src/ios.cc (cin): Don't define here, just declare extern.
+	(cout): Likewise.
+	(cerr): Likewise.
+	(clog): Likewise.
+	(wcin): Likewise.
+	(wcout): Likewise.
+	(wcerr): Likewise.
+	(wclog): Likewise.
+
+2001-01-25  Phil Edwards  
+
+	* include/bits/std_iterator.h:  Do not include stl_relops.h.
+	* include/bits/std_numeric.h:  Ditto.
+	* include/bits/stl_algobase.h:  Ditto.
+	* include/bits/stl_relops.h:  Add comment warning about problems.
+
+2001-01-25  Gabriel Dos Reis  
+
+	* testsuite/27_io/*.cc: Remove explicit reference to 'testsuite/'
+	in testcases.  Prepare for the DejaGnu based framework.
+	* mkcheck.in: Adjust call to tests_flags.  Don't mmkdir testsuite
+	directory -- it is now mkcheck working directory.
+	* tests_flags.in: Remove reference to $(top_srcdir).  Use
+	${SRC_DIR} instead.
+	* Makefile.am (check, check-install): Change mkcheck invocation
+	logic.
+	* Makefile.in: Regenerate.
+
+2001-01-24  Mark Mitchell  
+
+	* config/os/aix/bits/atomicity.h (__compare_and_swap): Remove.
+	(__always_swap): Likewise.
+
+2001-01-23  Chris Demetriou  
+
+	* libsupc++/exception_support.cc (__terminate_func): Remove
+	declaration.
+	(__terminate_func_ptr): New typedef.
+	(__terminate, __terminate_set_func): New extern function
+	prototypes.
+	(std::terminate): Use __terminate function.
+	(std::set_terminate): Use __terminate_set_func function.
+
+2001-01-23  Benjamin Kosnik  
+
+	* configure.target: Just use os_include_dir always.
+	* configure.in: Remove calls to GLIBCPP_CHECK_CTYPE_SUPPORT.
+	Link atomicity files and ctype files here.
+	* configure: Regenerate.
+	* acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Remove.
+	(GLIBCPP_ENABLE_ATOMICITY): Remove.
+	* aclocal.m4: Regenerate.
+
+2001-01-23  Chris Demetriou  
+
+	* configure.in: Place definition of MULTISUBDIR in
+	libsupc++/Makefile as is done for src/Makefile.
+	* configure: Regenerate.
+
+2001-01-23  Phil Edwards  
+
+	* acinclude.m4:  Cosmetic changes only.
+	* aclocal.m4:  Regenerated.
+	* configure:  Regenerated.
+	* configure.target:  Update documented list of changed variables.
+	* docs/html/install.html:  Fix typo.
+	* docs/html/20_util/howto.html:  More notes on auto_ptr.
+	* docs/html/27_io/howto.html:  More notes on streabufs.
+	* docs/html/faq/index.html:  Add rel_ops problem and mention the
+	  DEC as(1) .subsection difficulty.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2001-01-23  Mark Mitchell  
+
+	* ainclude.m4 (GLIBCPP_CHEC_MATH_DECLS_AND_LINKAGE_1): New macro.
+	(GLIBCPP_CHECK_MATH_SUPPORT): Use it.
+	(GLIBCPP_CHECK_TYPE_SUPPORT): Don't autoconf ctype information if
+	its already provided in config.target.
+	* aclocal.m4: Regenerated.
+	* configure: Likewise.
+	* configure.target: Set ctype_include_dir for lots of systems.
+	* libsupc++/Makefile.am: Explicitly include --tag disable-shared.
+	* libsupc++/Makefile.in: Regenerated.
+
+2001-01-23  Gabriel Dos Reis  
+
+	* testsuite/lib/libstdc++.exp: Improve.  Add support for @xxx#
+	keyword capability.
+
+	* testsuite/README: Add comment.
+
+2001-01-21  Phil Edwards  
+
+	* docs/html/configopts.html:  Update for current status.  Fix HTML.
+	* docs/html/install.html:  Update for current status.
+
+2001-01-20  Gabriel Dos Reis  
+
+	* testsuite/libstdc++.tests/tests.exp: New file.
+	* testsuite/lib/libstdc++.exp: Itou.
+	* testsuite/README: Itou.
+
+2001-01-20  Gabriel Dos Reis  
+
+	* tests_flags.in: Just output the bare minimum to run tests.
+	Let's the caller do its own arrangement.
+
+	* mkcheck.in: Rename INC_PATH to INCLUDES.  Adjust flags
+	computations.
+
+2001-01-19  Gabriel Dos Reis  
+
+	* testsuite/17_intro: Prepare testcases for new style DejaGnu
+	framework.
+
+2001-01-18  Gabriel Dos Reis  
+
+	* testsuite/libstdc++.tests, testsuite/lib: New directories.
+
+2001-01-17  Loren J. Rittle  
+
+	* mkcheck.in: Construct file names that match $objdir structure.
+	* testsuite/27_io/filebuf_members-1.txt: New file.
+	* testsuite/27_io/ifstream_members-1.txt: New file.
+	* testsuite/27_io/ostream_inserter_char-1.txt: New file.
+
+	* testsuite/27_io/ios_base_members_static.cc (test02): Add test.
+	* testsuite/27_io/ios_base_members_static-1.tst: Add expected output.
+
+2001-01-17  Peter Schmid  
+
+	* testsuite/27_io/istream_sentry.cc (test02): Fix.
+
+2001-01-17  Benjamin Kosnik  
+
+	libstdc++/1605
+	* include/bits/ios_base.h (ios_base::failure): Tighten up throw specs.
+	* src/ios.cc (ios_base::failure): Make definitions match.
+	* libsupc++/typeinfo (class bad_typeid): Add throw specs.
+	(class bad_cast): Same.
+	* libsupc++/exception (class exception): Add throw specs.
+	* libsupc++/exception_support.cc (set_terminate): Add throw specs.
+	(set_unexpected): Same.
+	(uncaught_exception): Same.
+	(what): Same.
+
+	* docs/html/17_intro/C++STYLE (classname): Fix.
+
+2001-01-16  Mark Mitchell  
+
+	* src/gen-num-limits.cc (INSTANTIATIONS): New macro.
+	Use it do explicitly instantiate predicate and value for
+	all the builtin Ts.
+
+2001-01-16  Nathan Sidwell  
+
+	* libsupc++/exception_support.cc (__cp_pop_exception): Fix
+	uninitialized thinko in last change.
+
+2001-01-16  Mark Mitchell  
+
+	* libsupc++/exception_support.cc (__cp_pop_exception): Change
+	prototype.
+
+2001-01-16  Benjamin Kosnik  
+
+	* docs/html/17_intro/C++STYLE (classname): Add more existing
+	and stylish patterns.
+
+	libstdc++/944
+	* include/bits/istream.tcc (istream::sentry::sentry()): Set
+	failbit if the state of the stream is not good.
+	* testsuite/27_io/istream_sentry.cc (test02): Add test.
+	* testsuite/27_io/istream_manip.cc (test01): Modify.
+
+	libstdc++/1019
+	reported by Paolo Carlini 
+	* include/bits/istream.tcc (operator>>(istream&, string&)): Fix.
+	* testsuite/21_strings/inserters_extractors.cc (test08): Add test.
+
+	libstdc++/1057
+	* include/bits/std_streambuf.h (setp): Set _M_buf_size correctly.
+	* include/bits/streambuf.tcc (xsputn): Remove outside if clause.
+	(xsgetn): Same. Simplify.
+	* testsuite/27_io/streambuf.cc (test04): Add testcases.
+
+	reported by Larry Evans 
+	* include/bits/streambuf.tcc (streambuf::xsputn): Just check for
+	equality with eof on returned value from overflow.
+
+2001-01-14  Andreas Jaeger  
+
+	* libio/libio.h: Add test for glibc 2.0.
+
+2001-01-12  Benjamin Kosnik  
+
+	* config/os/djgpp/bits/*: Fix dates.
+
+	* include/bits/basic_string.h (_S_find(const _CharT* __beg, const
+	_CharT* __end, _CharT __c): Remove.
+	* include/bits/basic_string.tcc: Substitute traits::find for _S_find.
+	* include/bits/char_traits.h: Tweak.
+
+2001-01-12  Laurynas Biveinis  
+
+	* acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): check for DJGPP 
+	(LIB_AC_PROG_CXX): replace [/\\] with [\\/] to work around older
+	bash bug.
+	* aclocal.m4: regenerated.
+	* configure.target: set os_include_dir to config/os/djgpp under DJGPP.
+	* configure: regenerated.
+	* config/os/djgpp, config/os/djgpp/bits: new directories.
+	* config/os/djgpp/bits/ctype_base.h,
+	config/os/djgpp/bits/ctype_inline.h,
+	config/os/djgpp/bits/ctype_noninline.h,
+	config/os/djgpp/bits/os_defines.h: new files.
+
+2001-01-11   Joseph S. Myers  
+
+	* include/c_std/bits/std_cstdio.h: Undef printf.
+
+2001-01-10  Benjamin Kosnik  
+
+	* src/ios.cc: Fix typo: change cout->wcout.
+
+	* src/Makefile.am (targetincludep): Fix for version-specific-libs.
+	* src/Makefile.in: Regenerate.
+
+2001-01-10  Peter Schmid  
+
+	 * include/bits/std_complex.h: Fix a typo.
+
+2001-01-09  Benjamin Kosnik  
+			     
+
+	Fixes for libstdc++/1576
+	* src/stdstreams.cc: Initialize with NULL filebuf. Delete
+	file, move contents into....
+	* src/ios.cc: ...Here. Put defines for iostreams objects and
+	initialization routines into one file to simplify DSO interaction.
+	* include/bits/std_iostream.h: Touch.
+	* include/bits/ios_base.h (_S_synched_with_stdio): Make static.
+	* src/Makefile.am (sources): Remove stdstreams.cc.
+	* src/Makefile.in: Regenerate.
+
+2001-01-10  Gabriel Dos Reis  
+
+	* tests_flags.in (check_directory): Fix typo.
+
+2001-01-09  Peter Schmid  
+
+	 * include/bits/std_complex.h: Fix a typo.
+
+2001-01-09  Loren J. Rittle  
+
+	* config/os/bsd/freebsd/bits/ctype_inline.h (is): (Make right
+	code path:) Remove magic constants and restructure to handle
+	ctype.h bit mask layout changes more gracefully.  (Make fast
+	code path:) Use __maskrune (), if available.
+	(is): Remove special case for digit and xdigit masks.
+
+2001-01-09  Robert Lipe 
+
+	* include/c_std/bits/std_ctime.h: Undefine difftime.
+
+2001-01-09  Alexandre Oliva  
+
+	* src/gen-num-limits.cc (signal_adapter): New template function.
+	(signal_handler): Use it, instead of signal.
+	(traps): Likewise.  Install SIGTRAP handler too.  Don't
+	require both tests to trap to set trap_flag.
+
+2001-01-08  Benjamin Kosnik  
+
+	* include/bits/fpos.h (fpos:::fpos(streamoff __pos)): Explicitly
+	initialize mbstate_t member, name offset data members *off, not pos.
+	* include/bits/fstream.tcc (filebuf::filebuf): Same.
+
+2001-01-08  Benjamin Kosnik  
+
+	reported by Chris G. Demetriou 
+	* configure.in: Change -linux-* to -linux*.
+	* configure: Regenerate.
+
+2001-01-05  Benjamin Kosnik  
+
+	Fix 27_io/filebuf_members.cc
+	* src/localename.cc (locale::_Impl::_Impl(const _Impl& __imp,
+	const string& __name, category __cat, size_t __refs): Set
+	_M_has_name with _M_name.
+	* include/bits/localefwd.h (locale::operator!=): Protect member
+	function call with this->.
+	* src/locale.cc (locale::operator==): Make fast checks first.
+	* include/bits/basic_ios.tcc (basic_ios::init): Simplify.
+
+	* include/bits/ios_base.h (_M_synced_with_stdio): Add data member
+	to ios_base::Init.
+	* src/ios.cc (ios_base::Init::Init): Initialize here.
+	(ios_base::sync_with_stdio): Set here.
+
+2001-01-04  Loren J. Rittle  
+
+	* config/c_io_stdio.cc (__basic_file<_CharT>::sys_open()): On
+	systems that support it, call dup() before fdopen().
+
+2001-01-03  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cwctype.h: Include std_cwchar.h for wint_t.
+	* testsuite/17_intro/header_cwctype.cc (main): New file.
+
+	* src/Makefile.am (base_headers): Change.
+	* include/bits/std_string.h: And here.
+	* include/bits/string.tcc: Tweaks, move to...
+	* include/bits/basic_string.tcc: ...Here.
+	* src/string-inst.cc: Simplify, just instantiate the whole class,
+	not member-by-member.
+
+2001-01-02  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLD_CSTDIO): Add in default value.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+	* include/bits/c++config (__GLIBCPP__): Bump version number.
+
+	* ChangeLog: Start new log for year 2001
+	* ChangeLog-2000: New file.
+
+	* docs/html/configopts.html: Make sure default values are current,
+	add commentary.
+
+2001-01-01  Benjamin Kosnik  
+
+	* include/c_std/bits/std_cwchar.h: Same.
+	* testsuite/17_intro/header_cwchar.cc: Same.
+	* include/c_std/bits/std_ctime.h: Same.
+	* testsuite/17_intro/header_ctime.cc: Same.
+	* include/c_std/bits/std_cstdlib.h: Same.
+	Clean up undefs, make consistent with cwchar and cmath, etc.
+	* testsuite/17_intro/header_cstdlib.cc: Same.
+	* include/c_std/bits/std_cstdio.h: Same here.
+	* testsuite/17_intro/header_cstring.cc: Same.
+	* include/c_std/bits/std_cstring.h: Include std_cstddef.h for size_t.
+	* testsuite/17_intro/header_cstring.cc: New file. Check for
+	size_t in namespace std.
+
+	* include/c_std/bits/std_cwchar.h: Explicit checks for mbstate_t.
+	* acconfig.h (HAVE_MBSTATE_T): Add.
+	* config.h.in: Regenerate.
+	* acinclude.m4(GLIBCPP_CHECK_WCHAR_T_SUPPORT): Always test for
+	mbstate_t.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/17_intro/headers_c++.cc: New file.
+	* testsuite/17_intro/headers_c.cc: Small changes.
+
+2001-01-01  David Billinghurst 
+
+	* tests_flags.in: Fix typo in usage.
+
+	* tests_flags.in: Set target specific LIBS for cygwin.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2002 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2002
new file mode 100644
index 000000000..3448363ee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2002
@@ -0,0 +1,5590 @@
+2002-12-30  Loren J. Rittle  
+
+	* src/Makefile.am: Resolve non-portable use of $<.
+	* src/Makefile.in: Rebuilt.
+
+2002-12-30  Phil Edwards  
+
+	* configure.in (GLIBCPP_ENABLE_CXX_FLAGS):  Do not pass arguments,
+	let the defaults work.
+	* configure:  Regenerate.
+
+2002-12-30  Phil Edwards  
+
+	* acinclude.m4:  Remove trailing whitespace.
+	(GLIBCPP_ENABLE_CXX_FLAGS):  Fix.
+	* aclocal.m4, configure:  Regenerate.
+
+2002-12-29  Phil Edwards  
+
+	* include/std/std_bitset.h:  Better comments.
+
+2002-12-28  Joseph S. Myers  
+
+	* docs/html/17_intro/porting.texi: Use @copying.
+	* docs/html/17_intro/porting.html: Regenerate.
+
+2002-12-27  Mark Mitchell  
+
+	* config/locale/gnu/ctype_members.cc
+	(ctype::_M_convert_to_wmask): Remove stray semicolon.
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Avoid
+	defining classes in static_cast.
+	(moneypunct::_M_initialize_moneypunct): Likewise.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Likewise.
+	* include/bits/stl_deque.h (operator-): Insert typename where
+	required.
+	* include/bits/stl_multiset.h (multiset): Remove stray semicolon.
+	* include/bits/stl_set.h (set): Likewise.
+	* include/bits/valarray_meta.h (bits/slice_array.h): Include it.
+	* include/std/std_fstream.h (basic_fstream::open): Use this-> to
+	avoid Koenig lookup.
+	(basic_fstream::close): Likewise.
+	* libsupc++/new (operator delete): Remove stray semicolon.
+	* libsupc++/new (operator delete[]): Likewise.
+	* libsupc++/tinfo.cc: Likewise.
+	* src/stdexcept.c (logic_error::~logic_error): Likewise.
+	(runtime_error::~runtime_error): Likewise.
+
+2002-12-26  Phil Edwards  
+
+	* libsupc++/exception:  Add comment (mistakenly skipped).
+
+2002-12-26  Phil Edwards  
+
+	* include/std/std_bitset.h (_Base_bitset::_M_do_left_shift,
+	_Base_bitset::_M_do_right_shift): Expect a non-zero shift.
+	(bitset::operator<<=, bitset::operator>>=):  When shifting more bits
+	than are in the bitset, zero memory rather than segfault.
+	(operator>>(basic_istream,bitset):  Only call setstate once, after
+	all work has been done.
+
+	* testsuite/23_containers/bitset_members.cc (test03):  New test.
+	* testsuite/23_containers/bitset_shift.cc (test02):  New test.
+
+2002-12-26  Phil Edwards  
+
+	* libsupc++/vterminate.cc (writestr):  Use __builtin_strlen.
+
+2002-12-26  Phil Edwards  
+
+	* libsupc++/eh_term_handler.cc:  Add comment about embedded systems.
+	* docs/html/debug.html:  Cosmetic and HTML changes.  Point to
+	verb-term notes.
+	* docs/html/documentation.html:  Link to the FAQ.
+	* docs/html/17_intro/howto.html:  Mention use of isatty(3).
+	* docs/html/19_diagnostics/howto.html:  Update verb-term description.
+
+2002-12-25  Phil Edwards  
+
+	* src/vterminate.cc:  Move to...
+	* libsupc++/vterminate.cc:  ...here.  New file.  Replace fprintf with
+	writestr macro.  Slight reword to explanatory text.
+	* libsupc++/eh_terminate.cc (__cxxabiv1::__terminate_handler,
+	__cxxabiv1::__unexpected_handler):  Break definitions out to...
+	* libsupc++/eh_unex_handler.cc:  ...here (new file), and...
+	* libsupc++/eh_term_handler.cc:  ...here (new file).  Initialize
+	__terminate_handler with __gnu_cxx::__verbose_terminate_handler
+	instead of std::abort.
+
+	* libsupc++/Makefile.am (sources), src/Makefile.am (sources):  Update.
+	* libsupc++/Makefile.in, src/Makefile.in:  Regenerate.
+
+2002-12-23  Danny Smith  
+
+	* config/io/basic_file_stdio.cc (__basic_file::_M_open_mode):
+	Don't use O_NONBLOCK if it is not defined.
+	(__basic_file::open): Don't use fcntl either.
+
+2002-12-20  Sylvain Pion   
+
+	* include/bits/stl_deque.h: Fix typo.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_queue.h: Same.
+	* include/bits/stl_stack.h: Same.
+	* include/bits/stl_vector.h: Same.
+
+2002-12-18  Benjamin Kosnik  
+
+ 	* docs/html/documentation.html: Add link for debug.html.
+	* docs/html/debug.html: New.
+
+2002-12-18  Kaveh R. Ghazi  
+
+	* testsuite/23_containers/vector_capacity.cc (test03): Move ...
+	* testsuite/23_containers/vector_resize.cc: ...here as a new file.
+	Pass in -lmalloc for irix6.
+	* testsuite/27_io/ios_base_storage.cc: Pass in -lmalloc for irix6.
+
+2002-12-18  Jason Merrill  
+
+	* src/vterminate.cc (__verbose_terminate_handler): Send
+	diagnostics to stderr.
+
+2002-12-18  Ulrich Weigand  
+
+	* configure.in: Define with_target_subdir and with_build_subdir
+	variables in config-ml.in AC_OUTPUT call.
+	* configure: Regenerate.
+
+2002-12-16  Paolo Carlini  
+
+	PR libstdc++/8949
+	* include/std/std_limits.h
+	(struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits,
+	struct numeric_limits): According
+	to 18.2.1.2,53 and 18.2.1.5,1 is_iec559 shall be false.
+	* testsuite/18_support/numeric_limits.cc: Add test04.
+
+2002-12-16  Benjamin Kosnik  
+
+        * configure.in (GLIBCPP_ENABLE_DEBUG): Default to none.
+	Call GLIBCPP_ENABLE_DEBUG_FLAGS.
+        * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): GLIBCPP_BUILD_DEBUG, new
+        conditional if --enable-debug is yes. Rework.
+	(GLIBCPP_ENABLE_DEBUG_FLAGS): New.
+        * aclocal.m4: Regenerate.
+	* libio/Makefile.am: Remove DEBUG_FLAGS.
+	* libio/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Remove DEBUG_FLAGS.
+	* libsupc++/Makefile.in: Regenerate.
+	* docs/html/configopts.html: Add docs for --enable-debug,
+	--enable-debug-flags.
+
+2002-12-16  Benjamin Kosnik  
+
+	Correct dependency tracking, build warts.
+	* configure.in: Correct repeated AC_OUTPUT thrashing by
+	config-ml.in
+	* configure: Regenerate.
+	* include/Makefile.am (stamp-target): Stamp in top_builddir.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.am (codecvt_members.cc): New rule.
+	(collate_members.cc): Same.
+	(ctype_members.cc): Same.
+	(messages_members.cc): Same.
+	(monetary_members.cc): Same.
+	(numeric_members.cc): Same.
+	(time_members.cc): Same.
+	(c++locale.cc): Same.
+	(basic_file.cc): Same.
+	* src/Makefile.in: Regenerate.
+	* acinclude.m4 (CCTYPE_CHAR_CC): Remove.
+	(CCCODECVT_CC): Don't link, AC_SUBST.
+	(CCOLLATE_CC): Same.
+	(CCTYPE_CC): Same.
+	(CMESSAGES_CC): Same.
+	(CMONEY_CC): Same.
+	(CNUMERIC_CC): Same.
+	(CTIME_CC): Same.
+	(CLOCALE_CC): Same.
+	* aclocal.m4: Regenerate.
+
+	* src/Makefile.am (libstdc___la_LIBADD): Use top_builddir
+	for convenience libraries.
+	(version_arg): Rename linker.map to libstdc++.ver.
+	(libstdc___la_DEPENDENCIES): Remove linker.map, add
+	libstdc++-symbol.ver as a dependency.
+	(libstdc++-symbol.ver): Add rule.
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS): Change LINKER_MAP to
+	SYMVER_MAP. Don't link, AC_SUBST.
+
+	* include/Makefile.am (target_headers_noinst): New.
+	(stamp-target): Add CLOCALE_INTERNAL_H.
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Don't link
+	CLOCALE_INTERNAL_H, AC_SUBST.
+	* config/locale/gnu/c_locale.cc: Modify c++locale_internal.h
+	include.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/locale/gnu/numeric_members.cc: Same.
+	* config/locale/gnu/monetary_members.cc: Same.
+	* config/locale/gnu/messages_members.cc: Same.
+	* config/locale/gnu/ctype_members.cc: Same.
+	* config/locale/gnu/collate_members.cc: Same.
+	* config/locale/gnu/codecvt_members.cc: Same.
+	* config/locale/generic/codecvt_members.cc: Remove.
+
+2002-12-11  Paolo Carlini  
+
+	PR libstdc++/8887
+	* config/locale/generic/time_members.cc
+	(__timepunct::_M_initialize_timepunct): Fix typos
+	in _M_date_format and _M_date_era_format string literals.
+
+2002-12-10  Mark Mitchell  
+
+	* libsupc++/cxxabi.h (__cxa_bad_cast): Declare it.
+	(__cxa_bad_typeid): Likewise.
+	(__cxa_atexit): Likewise.
+	(__cxa_finalize): Likewise.
+
+2002-12-09  Gabriel Dos Reis  
+
+	* include/bits/slice_array.h (slice_array<>::operator=): Fix typo.
+
+2002-12-09  Mark Mitchell  
+
+	* libsupc++/cxxabi.h (__cxa_pure_virtual): Declare it.
+
+2002-12-05  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc: Add GLIBCPP_3.2.2.
+
+2002-12-04  Paolo Carlini  
+
+	* config/locale/generic/codecvt_members.cc (codecvt::do_out
+	(state_type&, const intern_type*, const intern_type*,
+	const intern_type*&, extern_type*, extern_type*, extern_type*&),
+	codecvt::do_in(state_type&, const extern_type*, const extern_type*,
+	const extern_type*&, intern_type*, intern_type*, intern_type*&)):
+	Fully qualify min() with std::.
+	* config/locale/gnu/codecvt_members.cc: Ditto.
+	* locale/ieee_1003.1-2001/codecvt_specializations.h
+	(codecvt::do_length(const state_type&, const extern_type*,
+	const extern_type*, size_t): Ditto.
+	* include/bits/deque.tcc
+	(_M_range_initialize(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag), deque::_M_range_insert_aux(iterator,
+	_ForwardIterator, _ForwardIterator, forward_iterator_tag),
+	deque::_M_reallocate_map(size_type, bool)): Fully qualify
+	distance() and max() with std::.
+	* include/bits/fstream.tcc (basic_filebuf::seekoff(off_type,
+	ios_base::seekdir, ios_base::openmode)): Fully qualify max()
+	with std::.
+	* include/bits/istream.tcc (basic_istream::ignore(streamsize,
+	int_type), basic_istream::readsome(char_type*, streamsize)):
+	Fully qualify min() with std::.
+	* include/bits/locale_facets.tcc (time_get::_M_extract_name
+	(iter_type&, iter_type&, int&, const _CharT**, size_t,
+	ios_base::iostate&)): Ditto.
+	* include/bits/sstream.tcc (basic_stringbuf::overflow(int_type)):
+	Fully qualify max() with std::.
+	* include/bits/stl_algo.h (__inplace_stable_partition(_ForwardIter
+	__first, _ForwardIter, _Predicate, _Distance),
+	__stable_partition_adaptive(_ForwardIter, _ForwardIter, _Predicate,
+	_Distance, _Pointer, _Distance), __merge_sort_loop(_RandomAccessIter1,
+	_RandomAccessIter1, _RandomAccessIter2, _Distance),
+	__merge_sort_loop(_RandomAccessIter1, _RandomAccessIter1,
+	_RandomAccessIter2, _Distance, _Compare), lower_bound(_ForwardIter,
+	_ForwardIter, const _Tp&), lower_bound(_ForwardIter, _ForwardIter,
+	const _Tp&, _Compare), upper_bound(_ForwardIter, _ForwardIter,
+	const _Tp&), upper_bound(_ForwardIter, _ForwardIter, const _Tp&,
+	_Compare), equal_range(_ForwardIter, _ForwardIter, const _Tp&),
+	equal_range(_ForwardIter, _ForwardIter, const _Tp&, _Compare),
+	__merge_without_buffer(_BidirectionalIter, _BidirectionalIter,
+	_BidirectionalIter, _Distance, _Distance), __merge_without_buffer
+	(_BidirectionalIter, _BidirectionalIter, _BidirectionalIter,
+	_Distance, _Distance, _Compare), __rotate_adaptive(_BidirectionalIter1,
+	_BidirectionalIter1, _BidirectionalIter1, _Distance, _Distance,
+	_BidirectionalIter2, _Distance), __merge_adaptive(_BidirectionalIter,
+	_BidirectionalIter, _BidirectionalIter, _Distance, _Distance,
+	_Pointer, _Distance), __merge_adaptive(_BidirectionalIter,
+	_BidirectionalIter, _BidirectionalIter, _Distance, _Distance,
+	_Pointer, _Distance, _Compare), inplace_merge(_BidirectionalIter,
+	_BidirectionalIter, _BidirectionalIter), inplace_merge
+	(_BidirectionalIter, _BidirectionalIter, _BidirectionalIter,
+	_Compare), __find_end(_BidirectionalIter1, _BidirectionalIter1,
+	_BidirectionalIter2, _BidirectionalIter2, bidirectional_iterator_tag,
+	bidirectional_iterator_tag), __find_end(_BidirectionalIter1,
+	_BidirectionalIter1, _BidirectionalIter2, _BidirectionalIter2,
+	bidirectional_iterator_tag, bidirectional_iterator_tag,
+	_BinaryPredicate)): Fully qualify distance() and min() with std::.
+	* include/bits/stl_algobase.h (lexicographical_compare
+	(const unsigned char*, const unsigned char*, const unsigned char*,
+	const unsigned char*)): Fully qualify min() with std::.
+	* include/bits/stl_bvector.h (_M_insert_range(iterator,
+	_ForwardIterator, _ForwardIterator, forward_iterator_tag),
+	_M_assign_aux(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag),
+	_M_initialize_range(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag), _M_fill_insert(iterator, size_type, bool)):
+	Fully qualify distance() and max() with std::.
+	* include/bits/stl_deque.h
+	(_Deque_base::_M_initialize_map(size_t),
+	_M_assign_aux(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag)):
+	Ditto.  * include/bits/stl_list.h (size()): Fully qualify
+	distance() with std::.
+	* include/bits/stl_tempbuf.h (_Temporary_buffer::_Temporary_buffer
+	(_ForwardIterator, _ForwardIterator)): Ditto.
+	* include/bits/stl_tree.h (_Rb_tree::erase(const _Key&),
+	_Rb_tree::count(const _Key&)): Ditto.
+	* include/bits/stl_vector.h (_M_range_initialize(_ForwardIterator,
+	_ForwardIterator, forward_iterator_tag)): Ditto.
+	* include/bits/streambuf.tcc (basic_streambuf::xsgetn(char_type*,
+	streamsize), basic_streambuf::xsputn(const char_type*, streamsize)):
+	Fully qualify min() with std::.
+	* include/bits/vector.tcc (_M_assign_aux(_ForwardIter, _ForwardIter,
+	forward_iterator_tag), _M_fill_insert(iterator, size_type,
+	const value_type&), _M_range_insert(iterator, _ForwardIterator,
+	_ForwardIterator, forward_iterator_tag)): Fully qualify max() and
+	distance() with std::.
+	* include/std/std_bitset.h (bitset::_M_copy_from_string
+	(const basic_string&, size_t, size_t)): Fully qualify min() with std::.
+	* include/std/std_streambuf.h (_M_pback_create()): Ditto.
+	* include/std/std_complex.h (abs(const complex<_Tp>&)):
+	Fully qualify max() with std::.
+	* include/std/std_sstream.h (str()): Ditto.
+	* src/codecvt.cc (codecvt::do_out(state_type&, const intern_type*,
+	const intern_type*, const intern_type*&, extern_type*, extern_type*,
+	 extern_type*&), codecvt::do_in(state_type&, const extern_type*,
+	const extern_type*, const extern_type*&, intern_type*, intern_type*,
+	intern_type*&), codecvt::do_length(const state_type&,
+	const extern_type*, const extern_type*, size_t), do_length
+	(const state_type&, const extern_type*, const extern_type*,
+	size_t)): Fully qualify min() with std::.
+	* src/strstream.cc (strstreambuf::strstreambuf(streamsize),
+	strstreambuf::overflow(int_type)): Fully qualify max() with std::.
+
+2002-12-02  Paolo Carlini  
+
+	* include/bits/basic_string.h (compare(const basic_string&)):
+	Fully qualify min() with std::.
+
+2002-12-02  Benjamin Kosnik  
+
+	* configure.in (libtool_VERSION): Update to 5:2:0.
+	* configure: Regenerate.
+
+2002-12-02  Paolo Carlini  
+
+	* include/bits/basic_string.tcc
+	(basic_string::append(const basic_string&, size_type,
+	size_type), basic_string::compare(size_type, size_type,
+	const basic_string&), basic_string::compare(size_type,
+	size_type, const basic_string&, size_type, size_type),
+	basic_string::compare(const _CharT*), basic_string::
+	compare(size_type, size_type, const _CharT*),
+	basic_string::compare(size_type, size_type, const _CharT*,
+	size_type), _S_string_copy(const basic_string&, _CharT*,
+	typename _Alloc::size_type)): Fully qualify min() with std::.
+
+2002-12-02  Paolo Carlini  
+
+	* include/bits/basic_string.tcc
+	(basic_string::_S_construct(_InIter, _InIter, const _Alloc&,
+	forward_iterator_tag)): Delay the declaration of __dnew,
+	fully qualify distance() with std::.
+	(basic_string::_M_replace_safe): Fully qualify distance()
+	with std::.
+
+2002-11-28  Phil Edwards  
+
+	PR libstdc++/8716
+	* testsuite/21_strings/ctor_copy_dtor.cc (test05):  Also test
+	the NULL-pointer, zero-size case.
+
+2002-11-28  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Add tip about a namespace for extensions.
+
+2002-11-28  Paolo Carlini  
+	    Nathan Myers  
+
+	* src/localename.cc
+	(locale::_Impl::_Impl(const char*, size_t)):
+	Improve previous fix for the strtok vs MT issue.
+
+2002-11-28  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.cc (locale::_S_categories):
+	Reorder the categories to match that of glibc's setlocale(LC_ALL, ""))
+	* config/locale/generic/c_locale.cc (locale::_S_categories): Ditto.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test04): Tweak.
+
+2002-11-25  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc: Add CXXABI_1.2.1 as compatible.
+	* config/linker-map.gnu: Version __cxa_guard_acquire,
+	__cxa_guard_release, __cxa_guard_abort in CXXABI_1.2.1.
+
+2002-11-25  Paolo Carlini  
+	    Nathan Myers  
+
+	* src/localename.cc
+	(locale::_Impl::_Impl(const char*, size_t)):
+	Avoid strtok for thread safety.
+
+2002-11-25  Stephen M. Webb  
+
+  	* testsuite/testsuite_allocator.h: New file.
+	* testsuite/testsuite_allocator.cc: New file.
+	* testsuite/Makefile.am: Added testsuite_allocator to test library.
+	* testsuite/testsuite_hooks.h: Added more detailed tracker objects
+	gnu_copy_constructor, gnu_assignment_operator, and gnu_destructor.
+	* testsuite/testsuite_hooks.cc: Added new static objects definitions.
+	* testsuite/23_containers/vector_capacity.cc: Added reserve() tests.
+	* testsuite/23_containers/vector_ctor.cc: Added a plethora of tests.
+	* testsuite/23_containers/deque_ctor.cc: Added a slew of new tests.
+
+2002-11-25  Mark Mitchell  
+
+	* libsupc++/Makefile.am (sources): Add guard.cc.
+	* libsupc++/Makefile.in: Regenerated.
+	* libsupc++/cxxabi.h (__cxa_guard_acquire): New function.
+	(__cxa_guard_release): Likewise.
+	(__cxa_guard_abort): Likewise.
+	* libsupc++/guard.cc: New file.
+
+2002-11-25  Wolfgang Bangerth  
+
+	* include/std/std_complex.h
+	(operator<<(basic_ostream&, const complex&)): Prefer 'x'
+	to "x" for efficiency sake.
+	* src/locale.cc (locale::locale(const char*)): Ditto.
+
+2002-11-24  Paolo Carlini  
+
+	* src/locale.cc (locale::locale(const char*)):
+	Trivial cosmetic tweaks.
+
+2002-11-22  Laszlo Ersek  
+	    Paolo Carlini  
+
+	PR libstdc++/8645
+	* include/bits/stl_tree.h (_Rb_tree_rebalance_for_erase):
+	Don't check that __w->_M_left != 0 and __w->_M_right != 0
+	when they can't be otherwise.
+
+2002-11-21  Phil Edwards  
+
+	* docs/html/documentation.html:  Fix broken/thinko'd URL.
+
+2002-11-21  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Tighter search expression for sed.
+	* docs/doxygen/stdheader.cc:  Handle the case of good headers.
+
+2002-11-21  Phil Edwards  
+
+	* acinclude.m4:  Uniform formatting.
+	* configure.in:  Warn when generic atomicity.h is used.
+	* configure.target:  Fix comment.
+	* aclocal.m4, configure:  Regenerate.
+
+2002-11-21  Phil Edwards  
+
+	* include/bits/streambuf.tcc (basic_streambuf::sputbackc):  Prefix
+	"this->" to call to pbackfail.
+
+2002-11-21  Phil Edwards  
+
+	* docs/doxygen/style.css:  Update.
+	* docs/doxygen/user.cfg.in:  Update.
+	* docs/html/documentation.html:  Regenerate.
+	* docs/html/17_intro/howto.html:  Tweak I/O sentry entry.
+	* docs/html/27_io/howto.html:  New section on headers.
+	* docs/html/faq/index.html:  Add i386 threading entry.
+	* docs/html/faq/index.txt:  Regenerate.
+
+	* docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+	Import R23.
+
+2002-11-21  Phil Edwards  
+
+	* docs/doxygen/TODO:  Note change in clause 27 docs.
+	* include/bits/basic_ios.h, include/bits/fpos.h,
+	include/bits/ios_base.h, include/bits/stl_deque.h,
+	include/bits/stl_iterator_base_types.h, include/std/std_fstream.h,
+	include/std/std_iomanip.h, include/std/std_iosfwd.h,
+	include/std/std_iostream.h, include/std/std_istream.h,
+	include/std/std_ostream.h, include/std/std_sstream.h,
+	include/std/std_streambuf.h:  Doxygenate all I/O entities.
+
+2002-11-20  Benjamin Kosnik  
+	    Jonathan Lennox  
+
+	* include/bits/streambuf.tcc (__copy_streambufs):
+	Revert previous fix for the interactive half of
+	libstdc++/6745, use _M_buf_size_opt to set dynamically
+	the correct buffer size.
+
+2002-11-20  Jonathan Wakely  
+
+	* docs/html/21_strings/howto.html: Fix example code, cite Gaby's
+	explanation of "" error with toupper/tolower.
+	* docs/html/22_locale/howto.html: Be more consistent with
+	example in 21_strings.
+
+2002-11-19  John Gustafsson  
+
+	* docs/html/20_util/howto.html: Fix typo.
+
+2002-11-18  Jonathan Lennox  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): verify
+	__sbin->gptr() + __bufsize < __sbin->egptr() before using.
+	* testsuite/27_io/ostream_inserter_other.cc (test_buffer_4): Add.
+	(test05): Use test_buffer_4.  Delete unused ostringstream
+	variables.
+
+2002-11-18  Paolo Carlini  
+
+	PR libstdc++/6745 (continued)
+	* include/bits/streambuf.tcc (__copy_streambufs):
+	Deal with interactive input by using isatty as in the
+	fix for libstdc++/8399.
+
+2002-11-17  Jakub Jelinek  
+
+	* config/linker-map.gnu: Export _S_construct even if size_t is
+	unsigned long.  Collapse std::codecvt::codecvt(size_t)
+	and std::codecvt::codecvt(size_t) into one export pattern.
+
+2002-11-15  Benjamin Kosnik  
+	    Gabriel Dos Reis  
+
+	PR libstdc++/8230
+	* include/bits/stl_alloc.h: Use builtin_expect for the most
+	obvious limit checks.
+	(__default_alloc_template::allocate): Check for null, throw
+	bad_alloc.
+	* include/bits/vector.tcc: Formatting tweaks.
+	* include/bits/stl_vector.h: Same.
+	* testsuite/20_util/allocator_members.cc (test02): Add.
+	* testsuite/23_containers/vector_capacity.cc (test03): Add.
+
+2002-11-15  Rainer Orth  
+
+	* src/ios.cc [_GLIBCPP_HAVE_UNISTD_H]: Include unistd.h.
+
+2002-11-15  Paolo Carlini  
+	    Loren J. Rittle  
+
+	PR libstdc++/8399
+	* acinclude.m4
+	(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1): New macro to
+	check for unistd.h functions.
+	(GLIBCPP_CHECK_UNISTD_SUPPORT): New macro, check for isatty
+	in unistd.h.
+	* configure.in: Call here.
+	* src/ios.cc (ios_base::Init::_S_ios_create(bool)):
+	Use _GLIBCPP_HAVE_ISATTY: ifdef, in case of interactive
+	input __in_size = 1 even when sync_with_stdio is false;
+	otherwise fall back to __in_size = 1.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+
+2002-11-13  Benjamin Kosnik  
+
+	* acconfig.h (HAVE_DRAND48): Add.
+	(HAVE_GETPAGESIZE): Add.
+	(HAVE_SETENV): Add.
+	(HAVE_SIGSETJMP): Add.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+
+2002-11-13  John David Anglin  
+
+	* config/os/hpux/os_defines.h (_GLIBCPP_INST_ATOMICITY_LOCK): Define
+	on hppa when there is no weak support.
+
+2002-11-13  Benjamin Kosnik  
+
+	PR libstdc++/8230
+	* include/bits/vector.tcc (vector::reserve): Throw length_error if
+	requested size is bigger than max_size().
+	* include/bits/stl_bvector.h (vector::reserve): Same.
+	* testsuite/23_containers/vector_capacity.cc (test02): Add.
+
+2002-11-13  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Export all _S_construct.
+
+2002-11-13  Loren J. Rittle  
+
+	PR libstdc++/7445
+	* src/locale.cc (std::locale::classic()): Weaken locking protocol.
+
+2002-11-13  Jonathan Wakely  
+
+	* docs/html/install.html, docs/html/22_locale/locale.html: HTML fix.
+
+2002-11-11  Benjamin Kosnik  
+
+	PR libstdc++/6746
+	* include/bits/fstream.tcc (filebuf::open): Set input pointers.
+	* config/io/basic_file_stdio.cc (__basic_file::_M_open_mode): Set
+	__p_mode as well.
+	(__basic_file::open): Set to non-block for input.
+	* testsuite/27_io/istream_unformatted.cc (test12): Add.
+	(test13): Same.
+
+2002-11-11  Jonathan Wakely 
+
+	* docs/html/17_intro/howto.html: Make "chapter 22 notes" a link.
+	* docs/html/faq/index.html: Mention that GCC ships with a newer
+	version of the library than the last snapshot. Make "see below" a
+	link. Add missing  tag.
+	* docs/html/faq/index.txt: Regenerate.
+	* docs/html/22_locale/locale.html, docs/html/22_locale/messages.html,
+	docs/html/23_containers/howto.html, docs/html/24_iterators/howto.html,
+	docs/html/25_algorithms/howto.html, docs/html/26_numerics/howto.html,
+	docs/html/27_io/howto.html, docs/html/ext/howto.html,
+	docs/html/ext/sgiexts.html: Add missing  tag.
+
+2002-11-07  Phil Edwards  
+	    Richard Earnshaw  
+
+	* config/cpu/generic/atomicity.h:  Provide atomic __exchange_and_add
+	and __atomic_add.
+
+2002-11-08  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct(__c_locale,
+	const char*),
+	moneypunct::_M_initialize_moneypunct(__c_locale,
+	const char*)): Tweak parameters for glibc2.3 systems, thus
+	avoiding unused parameter warnings.
+
+2002-11-05  Jonathan Wakely  
+
+	* include/std/std_sstream.h
+	(basic_stringbuf::str(const __string_type&)):
+	Prefer data() to c_str(), thus avoiding assigning the
+	unnecessary NULL-terminator.
+
+2002-11-05  Benjamin Kosnik  
+
+	PR libstdc++/8258
+	* include/bits/istream.tcc (istream::readsome): Don't set eofbit
+	for null buffer.
+	(istream::operator>>(_CharT*)): Use traits_type.
+	(istream::ws): Same.
+	(istream::operator>>(string)): Same.
+	* testsuite/27_io/istream_unformatted.cc (test11): Add.
+
+2002-11-05  Paolo Carlini  
+
+	PR libstdc++/8466
+	* include/std/std_sstream.h
+	(basic_stringbuf::str(const __string_type&)):
+	Cannot use simple assignment since the COW-nature of v3
+	basic_string is not taken into account in basic_stringbuf.
+	* testsuite/27_io/stringstream_members.cc: Add test04 from PR.
+
+2002-11-05  John David Anglin  
+
+	* configure.target (hppa*): Define cpu_include_dir.
+	* config/os/hpux/os_defines.h (_GLIBCPP_INST_ATOMICITY_LOCK): Define.
+	* src/misc-inst.cc: Instantiate atomicity lock when
+	_GLIBCPP_INST_ATOMICITY_LOCK is defined.
+	* config/cpu/hppa/atomicity.h: New file.
+
+2002-11-05  Benjamin Kosnik  
+
+	PR libstdc++/8463
+	* include/bits/ios_base.h (~ios_base): Make virtual.
+
+2002-11-04  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Export string operator+.
+	Export __default_alloc_template::_S_force_new.
+	* testsuite/abi_check.cc: Output tweaks.
+
+2002-11-01  Benjamin Kosnik  
+
+	PR libstdc++/8172
+	* src/string-inst.cc: Add instantiation.
+
+2002-11-01  Benjamin Kosnik  
+
+	PR libstdc++/7926
+	* configure.target: Simplify.
+	* config/cpu/i386/atomicity.h: Remove.
+	* config/cpu/i386: Remove.
+	* config/cpu/arm/atomicity.h: Remove.
+	* config/cpu/arm: Remove.
+	* config/cpu/x86-64/atomicity.h: Remove.
+	* config/cpu/x86-64: Remove.
+
+2002-11-01  Christian Ehrhardt  
+
+	PR libstdc++/8197
+	* config/link-map.gnu: Export math stubbs.
+
+2002-11-01  Benjamin Kosnik  
+
+	PR libstdc++/8318
+	* include/std/std_iostream.h: Tweak.
+	* include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T.
+	* include/std/std_iomanip.h: Same.
+	* include/bits/stringfwd.h: Same.
+	* include/bits/basic_string.tcc: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/basic_ios.tcc: Same.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/locale_facets.tcc: Same.
+
+2002-11-01  John Carter  
+
+	PR libstdc++/7961
+	* include/bits/basic_string.tcc
+	(compare(const _CharT* __s)): Don't access __s past its length.
+
+2002-10-31  Zack Weinberg  
+
+	* libsupc++/eh_globals.cc: Don't call __gthread_key_dtor.
+
+2002-10-31  Benjamin Kosnik  
+
+	PR libstdc++/8348
+	* include/bits/istream.tcc (istream::tellg): Remove sentry bits.
+	(istream::seekg): Same.
+	* testsuite/27_io/istream_seeks.cc (test06): New.
+
+2002-10-28  Jason Thorpe  
+
+	* testsuite/thread/pthread5.cc: Include 
+	if _GLIBCPP_HAVE_UNISTD_H is defined.
+	(main): Only use pthread_attr_setscope if
+	_POSIX_THREAD_PRIORITY_SCHEDULING is defined.
+
+2002-10-28  Jason Thorpe  
+
+	* testsuite/thread/pthread1.cc: Enable on *-*-netbsd*.
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+
+2002-10-27  Paolo Carlini  
+
+	PR libstdc++/8347
+	* include/bits/basic_string.tcc
+	(string::_S_construct(_InIter, _InIter, const _Alloc&,
+	forward_iterator_tag)): Do not throw logic error if
+	__beg == NULL && __end == __beg.
+	(string::string(const _CharT*, const _Alloc&)): Tweak.
+	* testsuite/21_strings/ctor_copy_dtor.cc: Add test05 from PR.
+
+2002-10-24  Hans-Peter Nilsson  
+
+	PR other/3337
+	PR bootstrap/6763
+	PR bootstrap/8122
+	* testsuite/testsuite_hooks.cc (__set_testsuite_memlimit): Use
+	__typeof__ (r.rlim_cur), not rlim_t in declaration of limit.
+
+2002-10-23  Jakub Jelinek  
+
+	* testsuite/22_locale/num_put_members_char.cc (test01): Swap size
+	and decimal_point arguments of find.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test01): Likewise.
+
+2002-10-22  Jakub Jelinek  
+
+	* Makefile.am (check-abi, new-abi-baseline): Use @glibcpp_srcdir@
+	instead of ${top_srcdir}.
+	* Makefile.in: Rebuilt.
+
+2002-10-22  Loren J. Rittle  
+
+	* testsuite/18_support/numeric_limits.cc (test_extrema):
+	Remove specialization for FreeBSD systems.
+
+2002-10-18  Loren J. Rittle  
+
+	* configure.target (freebsd*): Use abi_baseline_triplet.
+	* config/abi/i386-unknown-freebsd4/baseline_symbols.txt: New file.
+	* config/abi/i386-unknown-freebsd4.7/baseline_symbols.txt: Remove.
+
+	* testsuite/thread/pthread1.cc: Remove needless workaround
+	for FreeBSD 5.
+
+2002-10-18  Loren J. Rittle  
+	    Brad Spencer  
+	    (provided alternate patch and improvements)
+
+	* docs/html/23_containers/howto.html (GLIBCPP_FORCE_NEW): Document
+	new environment variable which replaces all uses of __USE_MALLOC
+	macro.
+	* docs/html/ext/howto.html (GLIBCPP_FORCE_NEW): Likewise.
+	(__mem_interface): Remove all references to old internal typedef.
+	* include/backward/alloc.h (__USE_MALLOC): Remove it and all
+	guarded code.
+	* include/bits/c++config (__USE_MALLOC): Update related error
+	message and comment.
+	* include/bits/stl_alloc.h (__USE_MALLOC): Remove it and all
+	guarded code.  Update all related comments.
+	(__mem_interface): Unconditionally replace it with __new_alloc.
+	However, leave the typedef around in case anyone used it.
+	(__default_alloc_template<>::_S_force_new): New class static.
+	(__default_alloc_template<>::allocate, deallocate): Add
+	run-time controlled feature similar to what __USE_MALLOC code
+	path had provided.
+	* src/stl-inst.cc (__USE_MALLOC): Remove it and all
+	guarded code.
+	* testsuite/21_strings/capacity.cc: Remove reference to __USE_MALLOC.
+	Add documentation on GLIBCPP_FORCE_NEW environment variable.
+	* testsuite/ext/allocators.cc: Likewise.
+
+2002-10-18  Phil Edwards  
+
+	* configure.in:  Use target, not target_alias, when matching triplet
+	patterns.
+	* configure:  Regenerate.
+
+2002-10-17  Momchil Velikov  
+	    Loren J. Rittle  
+
+	* configure.in: Add *-freebsd* to cross list.
+	* configure: Rebuilt.
+
+2002-10-16  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (__timepunct::__timepunct): Allocate
+	_M_name_timepunct.
+	(__timepunct::~__timepunct): Deallocate, remove specialization
+	declarations.
+	(messages::messages): Allocate _M_name_messages.
+	(messages::~messages): Deallocate.
+	(messages_byname): Same.
+	* config/locale/gnu/time_members.cc (__timepunct::~__timepunct):
+	Remove.
+	* config/locale/generic/time_members.cc (__timepunct::~__timepunct):
+	Remove.
+
+	* docs/html/install.html: Add es_MX, en_PH to required locales list.
+
+2002-10-16  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Add exports for codecvt constructors
+	where size_t == unsigned long.
+
+2002-10-14  Benjamin Kosnik  
+
+	* src/globals.cc (__gnu_cxx::c_locale_impl_compat): Add, alias to
+	c_locale_impl.
+	* testsuite/abi_check.cc (line_to_symbol_info): Collect size info.
+	* docs/html/abi.txt: Update.
+
+2002-10-14  Benjamin Kosnik  
+
+	* testsuite/22_locale/static_members.cc (test02): Less provincial.
+
+2002-10-14  Benjamin Kosnik  
+
+	* testsuite/22_locale/static_members.cc (test02): Disable for
+	systems without named locale support.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test04): Don't assume
+	running the testsuites in "C" environment.
+	Add new tests.
+	* docs/html/22_locale/locale.html: Update.
+
+2002-10-13  Danny Smith  
+
+	* include/bits/stl_threads.h (_GLIBCPP_mutex,
+	_GLIBCPP_mutex_init,_GLIBCPP_mutex_address,
+	_GLIBCPP_mutex_address_init, _GLIBCPP_once):
+	Declare in namespace __gnu_cxx.
+	(_STL_mutex_lock::_M_initialize): Qualify __gnu_cxx
+	names.
+	Adjust copyright.
+
+2002-10-12  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc (hash): Specialize.
+	Simplify. Check compatible symbol versions.
+	* config/linker-map.gnu: Clarify, explicitly export
+	std::codecvt::c* symbols.
+
+	* testsuite/22_locale/static_members.cc (test02): Avoid null strings.
+
+2002-10-12  Jonathan Wakely  
+	    Gabriel Dos Reis  
+
+	* docs/html/21_strings/howto.html#5:  Correct nasting of XHTML
+	elements.  Correct allocator-related text.
+
+2002-10-11  Benjamin Kosnik  
+
+	* testsuite/22_locale/static_members.cc (test02): Fix.
+
+2002-10-11  Benjamin Kosnik  
+
+	* acconfig.h (_GLIBCPP_SYMVER): Add.
+	(_GLIBCPP_ASM_SYMVER): Add.
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS): Define _GLIBCPP_SYMVER.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* include/bits/c++config (_GLIBCPP_AT_AT): Define, as an expedient
+	hack around m4 issues with quoting '@'.
+	* src/locale.cc: Use _GLIBCPP_ASM_SYMVER.
+	* src/globals.cc: Same.
+
+	* testsuite/22_locale/ctor_copy_dtor.cc (test04): Fix for
+	non-glibc systems.
+
+2002-10-10  Benjamin Kosnik  
+
+	* config/linker-map.gnu (GLIBCPP_3.2.1): Add.
+	(GLIBCPP_3.2): Don't export locale::_S_*.
+	* src/ios.cc: Move globals into __gnu_cxx. Make old exported
+	symbols match.
+	* src/locale.cc: Same.
+	* src/localename.cc: Same.
+	* src/globals.cc: Same.
+
+2002-10-10  Phil Edwards  
+
+	* docs/html/21_strings/howto.html:  Write #5, char_traits.
+	* docs/html/17_intro/porting.texi:  Expand on os_include_dir.
+	* docs/html/17_intro/porting.html:  Regenerate.
+
+2002-10-09  Benjamin Kosnik  
+
+	* src/locale.cc: Fix comments, move ctors together.
+	* testsuite/22_locale/static_members.cc (test03): Add.
+
+2002-10-08  Jonathan Lennox  
+
+	PR libstdc++/8071, libstdc++/8127, libstdc++/6745
+	* streambuf.tcc (__copy_streambufs): Handle cases where
+	__sbin->in_avail() returns 0, or where __sbin doesn't set gptr().
+	* testsuite/27_io/ostream_inserter_other.cc (test05): Add.
+
+2002-10-08  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	* include/bits/localefwd.h (class locale): Add static member
+	_S_num_extra_categories, encoding the number of additional
+	categories.
+	Change _S_num_categories to _S_categories_size.
+	(class locale::_Impl): Add _M_c_cats.
+	(class locale::_Impl::_M_names): Change to array of chars.
+	(class locale::_Impl::_M_check_same_name): Use
+	_S_extra_categories_size, tweak.
+	(locale::locale(const locale&, _Facet*)): Ditto.
+    	* src/locale.cc (locale::locale(const char* )): Rewrite to deal
+	with the environment in a POSIX-compliant way while being thread
+	safe.
+	(locale::name()): Update to output POSIX environment strings.
+	* src/localename.cc
+	(locale::_Impl::_Impl(const _Impl&, size_t): Use
+	_S_categories_size_*, tweak.
+	(locale::_Impl::_Impl(facet**, size_t, bool)): Ditto.
+	(locale::_Impl::_Impl(const char*, size_t)): Name each category
+	individually.
+	(locale::_Impl::_M_replace_categories): Use strcpy.
+
+	* include/bits/locale_facets.h (numpunct::_M_initialize_numpunct):
+	Change default argument to NULL from _S_c_locale.
+	(timepunct::_M_initialize_timepunct): Same.
+	_S_c_locale cleanups.
+	* src/codecvt.c: _S_c_locale simplification.
+	* src/ctype.c: Same.
+	* src/globals.cc: Add fake_name.
+	* src/locale-inst.cc: Remove extra includes.
+	* src/locale.cc: Remove extra includes.
+	Add _S_extra_categories_size definition.
+	Correct "C" initialization.
+	(locale::facet::facet): Don't initialize _S_c_locale.
+	(locale::facet::_M_remove_reference): Adjust.
+	* src/localename: Use facet_vec, facet_name.
+	(locale::_Impl::_Impl(facet** __f, size_t __refs, bool)): Set
+	facet ref counts to one. Initialize _S_c_locale.
+	(locale::_Impl::_M_install_facet(id*, facet*)): Adjust facet ref
+	counts when installing unilaterally.
+
+	* config/locale/generic/c_locale.cc: Add _S_categories definition.
+	* config/locale/generic/c_locale.h: Add _GLIBCPP_NUM_CATEGORIES macro.
+	* config/locale/generic/time_members.cc: _S_c_locale cleanup.
+
+	* config/locale/gnu/c_locale.cc: Add _S_categories definition.
+	(_S_destroy_c_locale): Move checks against _S_c_locale here.
+	* config/locale/gnu/c_locale.h: Add _GLIBCPP_NUM_CATEGORIES macro.
+	* config/locale/gnu/ctype_members.cc: Simplify _S_destroy_c_locale
+	calls, _S_c_locale usage.
+	* config/locale/gnu/monetary_members.cc: Same, tweaks.
+	* config/locale/gnu/monetary_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/os/gnu-linux/ctype_noninline.h: Use locale::classic().
+
+	* docs/html/22_locale/locale.html: Add bits about global locales
+	and "C" setlocale.
+
+	* testsuite/22_locale/facet.cc (test02): Add.
+	* testsuite/22_locale/static_members.cc (test02): Add.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test04): Add.
+
+2002-10-07  Jonathan Wakely  
+
+	* docs/html/configopts.html, docs/html/documentation.html,
+	docs/html/explanations.html, docs/html/install.html,
+	docs/html/17_intro/contribute.html, docs/html/17_intro/howto.html,
+	docs/html/17_intro/license.html, docs/html/18_support/howto.html,
+	docs/html/19_diagnostics/howto.html, docs/html/20_util/howto.html,
+	docs/html/21_strings/howto.html, docs/html/22_locale/codecvt.html,
+	docs/html/22_locale/ctype.html, docs/html/22_locale/howto.html,
+	docs/html/22_locale/locale.html, docs/html/22_locale/messages.html,
+	docs/html/23_containers/howto.html, docs/html/24_iterators/howto.html,
+	docs/html/25_algorithms/howto.html, docs/html/26_numerics/howto.html,
+	docs/html/27_io/howto.html, docs/html/ext/howto.html,
+	docs/html/ext/sgiexts.html, docs/html/faq/index.html:  Add DOCTYPEs.
+
+2002-10-03  Richard Earnshaw  
+
+	PR libstdc++/3584
+	* config/cpu/arm/atomicity.h (__exchange_and_add): Don't try to use
+	ASM sequences that don't give us atomic addition operations.  Instead
+	just add a comment explaining why it doesn't work.
+	(__atomic_add): Just use __exchange_and_add.
+	(__test_and_set, __always_swap): Delete.
+
+2002-10-02  Andreas Jaeger  
+
+	* config/abi/x86_64-unknown-linux-gnu/baseline_symbols.txt:
+	New file.
+
+2002-10-01  Phil Edwards  
+
+	* Makefile.am (check-abi):  Add @ to rule.
+	* Makefile.in:  Regenerated.
+
+2002-09-27  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put::_M_widen_int):
+	Deal correctly with grouped, showbased (oct or hex) zero.
+	* testsuite/22_locale/num_put_members_char.cc: Add test05.
+	* testsuite/22_locale/num_put_members_wchar_t.cc: Ditto.
+
+2002-09-27  Richard Henderson  
+
+	* config/os/hpux/cpu_limits.h: Remove.
+
+	* include/std/std_limits.h (numeric_limits::is_iec559): False
+	if denormals are not supported.
+
+2002-09-25  Benjamin Kosnik  
+
+	* include/Makefile.am (target_headers): Remove cpu_limits.h.
+	* include/Makefile.in: Regenerate.
+	* configure.in (CPU_LIMITS_INC_SRCDIR): Remove
+	* configure: Regenerate.
+	* configure.target (CPULIMITS): Remove.
+
+	* include/std/std_limits.h: Remove cpu_limits.h include.
+
+	* config/os/solaris/solaris2.7/os_defines.h (__glibcpp_long_bits):
+	Remove.
+	* config/os/irix/irix6.5/os_defines.h
+	(__glibcpp_long_double_bits): Remove.
+	(__glibcpp_wchar_t_bits): Remove.
+	(__glibcpp_long_bits): Remove.
+	* config/os/irix/irix5.2/os_defines.h
+	(__glibcpp_long_double_bits): Remove.
+	(__glibcpp_long_bits): Remove.
+	* config/os/hpux/os_defines.h (__glibcpp_wchar_t_is_signed): Remove.
+	* config/os/bsd/freebsd/os_defines.h:
+	(__glibcpp_long_double_bits): Remove.
+	* config/os/aix/os_defines.h (__glibcpp_wchar_t_bits): Remove.
+	(__glibcpp_wchar_t_is_signed): Remove.
+	(__glibcpp_long_bits): Remove.
+	* config/os/gnu-linux/os_defines.h (__glibcpp_long_bits): Remove.
+	(__glibcpp_long_double_bits): Remove.
+
+	* config/os/osf/osf5.0/cpu_limits.h: Remove.
+	* config/cpu/alpha/cpu_limits.h: Remove.
+	* config/cpu/arm/cpu_limits.h: Remove.
+	* config/cpu/cris/cpu_limits.h: Remove.
+	* config/cpu/generic/cpu_limits.h: Remove.
+	* config/cpu/generic/limits.h: Remove.
+	* config/cpu/ia64/cpu_limits.h: Remove.
+	* config/cpu/m68k/cpu_limits.h: Remove.
+	* config/cpu/mmix/cpu_limits.h: Remove.
+	* config/cpu/powerpc/cpu_limits.h: Remove.
+	* config/cpu/S390/cpu_limits.h: Remove.
+
+2002-09-25  Peter Schmid  
+
+	* testsuite/18_support/numeric_limits.cc: Check the maximum and
+	minimum values of the wchar_t type.
+
+2002-09-25  Mark Mitchell  
+
+	* include/std/std_limits.h (numeric_limits::digits):
+	Fix typo.
+
+2002-09-23  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_plain_char_is_signed,
+	__glibcpp_wchar_t_is_signed, __glibcpp_s8_max, __glibcpp_s8_min,
+	__glibcpp_s8_digits, __glibcpp_s8_digits10, __glibcpp_u8_min,
+	__glibcpp_u8_max, __glibcpp_u8_digits, __glibcpp_u8_digits10,
+	__glibcpp_s16_max, __glibcpp_s16_min, __glibcpp_s16_digits,
+	__glibcpp_s16_digits10, __glibcpp_u16_min, __glibcpp_u16_max,
+	__glibcpp_u16_digits, __glibcpp_u16_digits10, __glibcpp_s32_max,
+	__glibcpp_s32_min, __glibcpp_s32_digits, __glibcpp_s32_digits10,
+	__glibcpp_u32_min, __glibcpp_u32_max, __glibcpp_u32_digits,
+	__glibcpp_u32_digits10, __glibcpp_s64_max, __glibcpp_s64_min,
+	__glibcpp_s64_digits, __glibcpp_s64_digits10, __glibcpp_u64_min,
+	__glibcpp_u64_max, __glibcpp_u64_digits, __glibcpp_u64_digits10,
+	__glibcpp_bool_digits, __glibcpp_signed_char_min,
+	__glibcpp_signed_char_max, __glibcpp_signed_char_digits,
+	__glibcpp_signed_char_digits10, __glibcpp_unsigned_char_min,
+	__glibcpp_unsigned_char_max, __glibcpp_unsigned_char_digits,
+	__glibcpp_unsigned_char_digits10, __glibcpp_char_min,
+	__glibcpp_char_max, __glibcpp_char_digits, __glibcpp_char_digits10,
+	__glibcpp_signed_short_min, __glibcpp_signed_short_max,
+	__glibcpp_signed_short_digits, __glibcpp_signed_short_digits10,
+	__glibcpp_unsigned_short_min, __glibcpp_unsigned_short_max,
+	__glibcpp_unsigned_short_digits, __glibcpp_unsigned_short_digits10,
+	__glibcpp_signed_int_min, __glibcpp_signed_int_max,
+	__glibcpp_signed_int_digits, __glibcpp_signed_int_digits10,
+	__glibcpp_unsigned_int_min, __glibcpp_unsigned_int_max,
+	__glibcpp_unsigned_int_digits, __glibcpp_unsigned_int_digits10,
+	__glibcpp_signed_long_min, __glibcpp_signed_long_max,
+	__glibcpp_unsigned_long_digits, __glibcpp_unsigned_long_digits10,
+	__glibcpp_signed_long_long_min, __glibcpp_signed_long_long_max,
+	__glibcpp_signed_long_long_digits, __glibcpp_signed_long_long_digits10,
+	__glibcpp_wchar_t_min, __glibcpp_wchar_t_max, __glibcpp_wchar_t_digits,
+	__glibcpp_wchar_t_digits10): Remove.
+	(__glibcpp_byte, __glibcpp_word_bits, __glibcpp_word): Remove.
+	(__float_storage, __double_storage, __long_double_storage): Remove.
+	(__glibcpp_signed, __glibcpp_min, __glibcpp_max): New.
+	(__glibcpp_digits, __glibcpp_digits10): New.
+	(numeric_limits::min): Use __glibcpp_min or limits.h builtins.
+	(numeric_limits::max): Use __glibcpp_max or limits.h builtins.
+	(numeric_limits::is_signed, T=char,wchar_t): Use __glibcpp_signed.
+	(numeric_limits::digits): Use __glibcpp_digits.
+	(numeric_limits::digits10): Use __glibcpp_digits10.
+	* testsuite/18_support/numeric_limits.cc (test03): Don't use
+	__glibcpp_s8_digits10 et al; check vs the installed versions
+	of digits10 for particular sizes.
+
+	* include/std/std_limits.h (__glibcpp_float_is_modulo,
+	__glibcpp_double_is_modulo, __glibcpp_long_double_is_modulo): Kill.
+	(numeric_limits::is_modulo, T floating): Use false.
+
+2002-09-22  Kaveh R. Ghazi  
+
+	* Makefile.am (all-multi): Fix multilib parallel build.
+
+2002-09-22  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_f32_round_error,
+	__glibcpp_f64_round_error, __glibcpp_f80_round_error,
+	__glibcpp_f96_round_error, __glibcpp_f128_round_error,
+	__glibcpp_float_round_error, __glibcpp_double_round_error,
+	__glibcpp_long_double_round_error, __glibcpp_float_round_style,
+	__glibcpp_double_round_style, __glibcpp_long_double_round_style): Kill.
+	(numeric_limits::epsilon, round_error): Use constant 0.
+	(numeric_limits::round_error): Use constant 0.5.
+	(numeric_limits::round_style): Use round_to_nearest.
+	(numeric_limits, numeric_limits): Similarly.
+
+	* include/std/std_limits.h (__glibcpp_f32_is_iec559,
+	__glibcpp_f64_is_iec559, __glibcpp_f80_is_iec559,
+	__glibcpp_f96_is_iec559, __glibcpp_f128_is_iec559,
+	__glibcpp_float_is_iec559, __glibcpp_double_is_iec559,
+	__glibcpp_long_double_is_iec559): Remove.
+	(numeric_limits::is_iec559): Use has_infinity & has_quiet_NaN.
+	(numeric_limits, numeric_limits): Similarly.
+
+	* include/std/std_limits.h (__glibcpp_integral_traps): New.
+	(__glibcpp_char_traps, __glibcpp_short_traps, __glibcpp_int_traps,
+	__glibcpp_long_traps, __glibcpp_wchar_t_traps,
+	__glibcpp_long_long_traps, __glibcpp_plain_char_traps,
+	__glibcpp_signed_char_traps, __glibcpp_unsigned_char_traps,
+	__glibcpp_signed_short_traps, __glibcpp_unsigned_short_traps,
+	__glibcpp_signed_int_traps, __glibcpp_unsigned_int_traps,
+	__glibcpp_signed_long_traps, __glibcpp_unsigned_long_traps,
+	__glibcpp_signed_long_long_traps, __glibcpp_unsigned_long_long_traps,
+	__glibcpp_char_is_modulo, __glibcpp_signed_char_is_modulo,
+	__glibcpp_signed_short_is_modulo, __glibcpp_signed_int_is_modulo,
+	__glibcpp_signed_long_is_modulo, __glibcpp_signed_long_long_is_modulo,
+	__glibcpp_wchar_t_is_modulo, __glibcpp_float_is_bounded,
+	__glibcpp_double_is_bounded, __glibcpp_long_double_is_bounded): Kill.
+	(numeric_limits::traps, T integral): Use __glibcpp_integral_traps.
+	(numeric_limits::is_modulo, T integral): Use true.
+	(numeric_limits::is_bounded, T floating): Use true.
+
+2002-09-18  Loren J. Rittle  
+
+	* testsuite/18_support/numeric_limits.cc (test_epsilon): New.
+
+2002-09-18  Richard Henderson  
+
+	* testsuite/18_support/numeric_limits.cc: Add -mieee for alpha.
+
+2002-09-16  Benjamin Kosnik  
+
+	* include/c_shadow: Remove.
+	* include/bits/generic_shadow.h: Remove.
+	* include/Makefile.am: Remove generic_shadow.h.
+	* acinclude.m4: Remove c_shadow references.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* mkcshadow: Remove.
+	* mkinclosure: Remove.
+
+2002-09-16  Loren J. Rittle  
+
+	libstdc++/7922
+	* include/ext/stl_rope.h (rope<>): Qualify dependent names
+	with `typename'.
+
+2002-09-16  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_f32_QNaN_bytes,
+	__glibcpp_f32_has_QNaN, __glibcpp_f32_SNaN_bytes,
+	__glibcpp_f32_has_SNaN, __glibcpp_f64_QNaN_bytes,
+	__glibcpp_f64_has_QNaN, __glibcpp_f64_SNaN_bytes,
+	__glibcpp_f64_has_SNaN, __glibcpp_f80_QNaN_bytes,
+	__glibcpp_f80_has_QNaN, __glibcpp_f80_SNaN_bytes,
+	__glibcpp_f80_has_SNaN, __glibcpp_f96_QNaN_bytes,
+	__glibcpp_f96_has_QNaN, __glibcpp_f96_SNaN_bytes,
+	__glibcpp_f96_has_SNaN, __glibcpp_f128_QNaN_bytes,
+	__glibcpp_f128_has_QNaN, __glibcpp_f128_SNaN_bytes,
+	__glibcpp_f128_has_SNaN, __glibcpp_float_QNaN_bytes,
+	__glibcpp_float_has_QNaN, __glibcpp_float_SNaN_bytes,
+	__glibcpp_float_has_SNaN, __glibcpp_double_QNaN_bytes,
+	__glibcpp_double_has_QNaN, __glibcpp_double_SNaN_bytes,
+	__glibcpp_double_has_SNaN, __glibcpp_long_double_QNaN_bytes,
+	__glibcpp_long_double_has_QNaN, __glibcpp_long_double_SNaN_bytes,
+	__glibcpp_long_double_has_SNaN): Remove.
+	(__glibcpp_f128_is_iec559): True if IEEE.
+	(__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove.
+	(__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove.
+	(__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove.
+	(std::numeric_limits::has_quiet_NaN): Use __builtin_nanf.
+	(std::numeric_limits::has_signaling_NaN): Mirror has_quiet_NaN.
+	(std::numeric_limits::quiet_NaN): Use __builtin_nanf.
+	(std::numeric_limits::signaling_NaN): Use __builtin_nansf.
+	(std::numeric_limits): Similarly.
+	(std::numeric_limits): Similarly.
+	* src/limits.cc (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove.
+	(__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove.
+	(__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove.
+
+	* testsuite/18_support/numeric_limits.cc (test_infinity): New.
+	(test_denorm_min, test_qnan, test_is_iec559): New.
+
+2002-09-16  Phil Edwards  
+
+	* testsuite/abi_check.cc:  Pull shell fragments out into...
+	* config/abi/extract_symvers:  ...here.  New file.
+	* Makefile.am (check_abi):  Change to match.
+	(new-abi-baseline):  New target.
+	* Makefile.in:  Regenerated.
+
+2002-09-16  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_f32_denorm_min_bytes,
+	__glibcpp_f32_has_denorm, __glibcpp_f64_denorm_min_bytes,
+	__glibcpp_f64_has_denorm, __glibcpp_f80_denorm_min_bytes,
+	__glibcpp_f80_has_denorm, __glibcpp_f96_denorm_min_bytes,
+	__glibcpp_f96_has_denorm, __glibcpp_f128_denorm_min_bytes,
+	__glibcpp_f128_has_denorm, __glibcpp_float_denorm_min_bytes,
+	__glibcpp_float_has_denorm, __glibcpp_double_denorm_min_bytes,
+	__glibcpp_double_has_denorm, __glibcpp_long_double_denorm_min_bytes,
+	__glibcpp_long_double_has_denorm): Remove.
+	(__glibcpp_float_denorm_min, __glibcpp_double_denorm_min,
+	__glibcpp_long_double_denorm_min): Remove.
+	(std::numeric_limits::has_denorm): Use __FLT_DENORM_MIN__.
+	(std::numeric_limits::denorm_min): Likewise.
+	(std::numeric_limits): Similarly.
+	(std::numeric_limits): Similarly.
+	* src/limits.cc (__glibcpp_float_denorm_min,
+	__glibcpp_double_denorm_min, __glibcpp_long_double_denorm_min): Remove.
+
+2002-09-13  Andy Felt  
+
+	* docs/html/17_intro/howto.html:  Update link.
+
+2002-09-13  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Massage man page for Iterator_types.3.
+	* docs/html/faq/index.html:  Whitespace fixes.
+
+2002-09-12  Benjamin Kosnik  
+
+	* libmath/Makefile.am (LIBTOOL): Use --tag CC always for this
+	directory.
+	* libmath/Makefile.in: Regenerate.
+	* src/Makefile.am: Tweak comment.
+	* src/Makefile.in: Regenerate.
+
+	* config/locale/gnu/c_locale.h: Remove warnings.
+	Inject __uselocale into __gnu_cxx.
+	* config/locale/generic/c_locale.h: Match.
+
+2002-09-11  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (__convert_from_v): Remove.
+	* config/locale/gnu/c_locale.h (__convert_from_v): Add.
+	* config/locale/generic/c_locale.h (__convert_from_v): Add.
+
+2002-09-11  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__convert_from_v):
+	Use __uselocale instead of setlocale for glibc 2.3+.
+
+2002-09-10  Benjamin Kosnik  
+
+	* src/Makefile.am (sources): Edit.
+	(target_sources): New.
+	(target_sources_extra): New.
+	* src/Makefile.in: Regenerate.
+	* acinclude.m4: Set CCODECVT_CC.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* src/locale.cc: Move ctype definitions...
+	* src/ctype.cc: ...here. New file.
+	* src/locale.cc: Move codecvt definitions...
+	* src/codecvt.cc: ...here.
+	* config/generic/codecvt_members.cc: ...and here.
+	* config/gnu/codecvt_members.cc: ...and here.
+	* include/bits/codecvt.h: Tweak.
+	* include/bits/locale_facets: Tweak.
+
+	* src/bitset.cc: Correct license text.
+	* src/concept-inst.cc: Same.
+	* src/strstream.cc: Same.
+	* src/vterminate.cc: Same.
+
+2002-09-10  Gabriel Dos Reis  
+
+	* include/bits/stl_vector.h (vector<>): Don't use a name with
+	different meanings before and after re-evaluation in the completed
+	scope.
+	* include/bits/basic_string.h (basic_string<>): Likewise.
+	* include/bits/stl_bvector.h (vector): Likewise.
+	* include/bits/stl_deque.h (std): Likewise.
+	* include/bits/stl_list.h (list<>): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree<>): Likewise.
+
+2002-09-10  Paolo Carlini  
+
+	* include/bits/codecvt.h (class __codecvt_abstract_base):
+	Add __c_locale type _M_c_locale_codecvt member.
+	(class codecvt,
+	class codecvt): Add new
+	codecvt(__c_locale, size_t) constructor.
+	(codecvt_byname::codecvt_byname): Update.
+	* src/codecvt.cc (class codecvt,
+	class codecvt): Update codecvt(size_t)
+	constructor and ~codecvt() destructor; define
+	codecvt(__c_locale, size_t) constructor.
+	(codecvt::do_out): Switch to _M_c_locale_codecvt around wcsrtombs call.
+	(codecvt::do_in): Ditto for mbsrtowcs call.
+	* src/localename.cc (locale::_Impl::_Impl(const char*, size_t)):
+	Tweak construction of codecvt facets.
+
+2002-09-10  Danny Smith  
+
+	* include/bits/locale_facets.tcc (__convert_from_v):
+	Replace strdup with ISO malloc and strcpy.
+
+2002-09-09  Benjamin Kosnik  
+
+	* docs/html/configopts.html: Change grouping. Note ABI impacts.
+	Update information for locale model defaults.
+	* docs/html/install.html: Update include directory
+	information.
+	Update testing information.
+	Update linux issues for named locales.
+	* docs/html/abi.txt: Fix typos.
+	Add more info.
+
+	* src/misc-inst.cc: Add missing instantiations.
+
+	* testsuite/abi_check.cc: Make output results more verbose.
+
+	* config/os/gnu-linux/ctype_base.h: Remove shadow headers injections.
+
+2002-09-07  Jakub Jelinek  
+
+	* config/locale/generic/messages_members.cc: Add specialization for
+	messages.
+	* config/locale/ieee_1003.1-20021/messages_members.cc: Likewise.
+
+2002-09-06  Benjamin Kosnik  
+
+	* include/bits/localefwd.h: Tweak formatting.
+	* docs/html/abi.txt: Add.
+
+2002-09-06  Jakub Jelinek  
+
+	* configure.target: Use cpu_include_dir="config/cpu/sparc" for all
+	sparc targets.
+	* config/cpu/sparc/atomicity.h: New file.
+	* config/cpu/sparc/sparc32/atomicity.h: Removed.
+	* config/cpu/sparc/sparc64/atomicity.h: Removed.
+
+2002-09-06  Jakub Jelinek  
+
+	* config/os/gnu-linux/ctype_noninline.h
+	[_GLIBCPP_USE_SHADOW_HEADERS]: Remove using _C_legacy::__ctype_*.
+	(ctype::classic_table): If _GLIBCPP_C_LOCALE_GNU, return
+	_S_c_locale->__ctype_b, otherwise temporarily switch to "C" locale
+	and return __ctype_b.
+	(ctype::ctype(__c_locale, const mask*, bool, size_t)): If not
+	_GLIBCPP_C_LOCALE_GNU, temporarily switch to "C" locale and
+	initialize using __ctype_{b,tolower,toupper}.
+	(ctype::ctype(const mask*, bool, size_t)): If
+	_GLIBCPP_C_LOCALE_GNU, initialize using
+	_S_c_locale->__ctype_{b,tolower,toupper}, otherwise temporarily
+	switch to "C" locale and initialize using __ctype_{b,tolower,toupper}.
+
+2002-09-05  Paolo Carlini  
+	    Roland McGrath  
+
+	PR libstdc++/7811
+	* src/locale.cc (locale::locale(__s)): Use getenv instead
+	of setenv for the environment locale.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test03): New.
+
+2002-09-05  Jakub Jelinek  
+
+	* config/abi/ia64-unknown-linux-gnu: Add.
+	* config/abi/ia64-unknown-linux-gnu/baseline_symbols.txt: New file.
+	* config/abi/alphaev67-unknown-linux-gnu: Add.
+	* config/abi/alphaev67-unknown-linux-gnu/baseline_symbols.txt: New file.
+
+2002-09-05  Jonathan Wakely  
+
+	* docs/html/Makefile:  Use more portable shell wildcard.
+	* docs/html/makedoc.awk:  Nest elements correctly for XHTML conversion.
+	* docs/html/configopts.html, docs/html/documentation.html,
+	docs/html/explanations.html, docs/html/install.html,
+	docs/html/17_intro/contribute.html, docs/html/17_intro/howto.html,
+	docs/html/17_intro/license.html, docs/html/18_support/howto.html,
+	docs/html/19_diagnostics/howto.html, docs/html/20_util/howto.html,
+	docs/html/21_strings/howto.html, docs/html/22_locale/codecvt.html,
+	docs/html/22_locale/ctype.html, docs/html/22_locale/howto.html,
+	docs/html/22_locale/locale.html, docs/html/22_locale/messages.html,
+	docs/html/23_containers/howto.html, docs/html/24_iterators/howto.html,
+	docs/html/25_algorithms/howto.html, docs/html/26_numerics/howto.html,
+	docs/html/27_io/howto.html, docs/html/ext/howto.html,
+	docs/html/ext/sgiexts.html, docs/html/faq/index.html:  Convert
+	to XHTML.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2002-09-05  Jakub Jelinek  
+
+	* config/locale/gnu/ctype_members.cc (ctype::do_widen(char)):
+	Switch to _M_c_locale_ctype around btowc call.
+	(ctype::do_widen(const char*, const char *, wchar_t*)):
+	Switch to _M_c_locale_ctype around mbsrtowcs call.
+	(ctype::do_narrow(char)): Switch to _M_c_locale_ctype around
+	wctob call.
+	(ctype::do_narrow(const char*, const char *, wchar_t*)):
+	Switch to _M_c_locale_ctype around wcsrtombs call.
+
+2002-09-05  Jakub Jelinek  
+
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct,
+	moneypunct::_M_initialize_moneypunct): Use
+	__uselocale instead of setlocale for glibc 2.3.
+
+2002-09-05  Jakub Jelinek  
+
+	* config/locale/generic/c++locale_internal.h: New header.
+	* config/locale/gnu/c++locale_internal.h: New header.
+	* config/locale/gnu/c_locale.cc: Include it.
+	* config/locale/gnu/collate_members.cc: Include it.
+	* config/locale/gnu/ctype_members.cc: Include it.
+	* config/locale/gnu/messages_members.cc: Include it.
+	* config/locale/gnu/monetary_members.cc: Include it.
+	* config/locale/gnu/numeric_members.cc: Include it.
+	* config/locale/gnu/time_members.cc: Include it.
+	(_M_put): Reorder __strftime_l and __wcsftime_l arguments to match
+	glibc.
+	(_M_initialize_timepunct): Initialize _M_c_locale_timepunct for
+	C locale.
+	* acinclude.m4: Include string.h when testing strcoll_l.
+	For glibc 2.3 provide __-prefixed prototypes.
+	(CLOCALE_INTERNAL_H): Set, add AC_LINK_FILES line.
+	* aclocal.m4, configure: Rebuilt.
+
+2002-09-05  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h: Add declaration of specialization
+	here.
+	* config/locale/gnu/messages_members.cc: Add specialization for
+	messages.
+	* config/locale/gnu/messages_members.h: Remove generic definition
+	of do_get.
+
+2002-09-04  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_f32_infinity_bytes,
+	__glibcpp_f32_has_infinity, __glibcpp_f64_infinity_bytes,
+	__glibcpp_f64_has_infinity, __glibcpp_f80_infinity_bytes,
+	__glibcpp_f80_has_infinity, __glibcpp_f96_infinity_bytes,
+	__glibcpp_f96_has_infinity, __glibcpp_f128_infinity_bytes,
+	__glibcpp_f128_has_infinity, __glibcpp_float_infinity_bytes,
+	__glibcpp_float_has_infinity, __glibcpp_double_infinity_bytes,
+	__glibcpp_double_has_infinity, __glibcpp_long_double_infinity_bytes,
+	__glibcpp_long_double_has_infinity): Remove.
+	(std::numeric_limits, std::numeric_limits,
+	std::numeric_limits): Use __builtin_huge_val
+	to implement has_infinity and infinity().
+	* src/limits.cc (__glibcpp_float_infinity, __glibcpp_double_infinity,
+	__glibcpp_long_double_infinity): Remove.
+
+2002-09-03  Richard Henderson  
+
+	* include/std/std_limits.h (__glibcpp_f32_min, __glibcpp_f32_max,
+	__glibcpp_f32_digits, __glibcpp_f32_digits10, __glibcpp_f32_radix,
+	__glibcpp_f32_epsilon, __glibcpp_f32_min_exponent,
+	__glibcpp_f32_min_exponent10, __glibcpp_f32_max_exponent,
+	__glibcpp_f32_max_exponent10, __glibcpp_f64_min, __glibcpp_f64_max,
+	__glibcpp_f64_digits, __glibcpp_f64_digits10, __glibcpp_f64_radix,
+	__glibcpp_f64_min_exponent, __glibcpp_f64_min_exponent10,
+	__glibcpp_f64_max_exponent, __glibcpp_f64_max_exponent10,
+	__glibcpp_f80_min, __glibcpp_f80_max, __glibcpp_f80_digits,
+	__glibcpp_f80_digits10, __glibcpp_f80_radix, __glibcpp_f80_epsilon,
+	__glibcpp_f80_min_exponent, __glibcpp_f80_min_exponent10,
+	__glibcpp_f80_max_exponent, __glibcpp_f80_max_exponent10,
+	__glibcpp_f96_min, __glibcpp_f96_max, __glibcpp_f96_digits,
+	__glibcpp_f96_digits10, __glibcpp_f96_radix, __glibcpp_f96_epsilon,
+	__glibcpp_f96_min_exponent, __glibcpp_f96_min_exponent10,
+	__glibcpp_f96_max_exponent, __glibcpp_f96_max_exponent10,
+	__glibcpp_f128_min, __glibcpp_f128_max, __glibcpp_f128_digits,
+	__glibcpp_f128_digits10, __glibcpp_f128_radix, __glibcpp_f128_epsilon,
+	__glibcpp_f128_min_exponent, __glibcpp_f128_min_exponent10,
+	__glibcpp_f128_max_exponent, __glibcpp_f128_max_exponent10,
+	__glibcpp_float_min, __glibcpp_float_max, __glibcpp_float_digits,
+	__glibcpp_float_digits10, __glibcpp_float_radix,
+	__glibcpp_float_epsilon, __glibcpp_float_min_exponent,
+	__glibcpp_float_min_exponent10, __glibcpp_float_max_exponent,
+	__glibcpp_float_max_exponent10, __glibcpp_double_min,
+	__glibcpp_double_max, __glibcpp_double_digits,
+	__glibcpp_double_digits10, __glibcpp_double_radix,
+	__glibcpp_double_epsilon, __glibcpp_double_min_exponent,
+	__glibcpp_double_min_exponent10, __glibcpp_double_max_exponent,
+	__glibcpp_double_max_exponent10, __glibcpp_long_double_min,
+	__glibcpp_long_double_max, __glibcpp_long_double_digits,
+	__glibcpp_long_double_digits10, __glibcpp_long_double_radix,
+	__glibcpp_long_double_epsilon, __glibcpp_long_double_min_exponent,
+	__glibcpp_long_double_min_exponent10,
+	__glibcpp_long_double_max_exponent,
+	__glibcpp_long_double_max_exponent10): Remove macros.
+	(std::numeric_limits, std::numeric_limits,
+	std::numeric_limits): Use protected float.h macros.
+
+2002-09-01  Phil Edwards  
+
+	* testsuite/Makefile.am:  Use LD_RUN_PATH when linking abi_check.
+	Fix spelling in comment.
+	* testsuite/Makefile.in:  Regenerate.
+	* testsuite/abi_check.cc:  Use string literals to build 'cmd' rather
+	than 'quote' and 'bslash'.
+
+2002-08-31  Phil Edwards  
+
+	* acinclude.m4:  Minor comment tweaks.
+
+	* docs/html/makedoc.awk:  New file...
+	* docs/html/Makefile:  ...called from here...
+	* docs/html/documentation.html:  ...to help generate this.
+
+	* docs/html/21_strings/howto.html:  Prepare for new entry.
+	* include/bits/basic_string.h:  Initial basic_stirng hook for
+	doxygen.  Remove trailing whitespace.
+	* include/bits/char_traits.h:  Point to onlinedocs for new entry.
+	* include/bits/stringfwd.h:  Add doxygen hooks for string and
+	wstring typedefs.
+
+2002-08-29  Richard Earnshaw  
+
+	* config/cpu/arm/cpu_limits.h: New file.
+	* configure.target: Use config/cpu/arm for XScale and StrongARM
+	configurations.
+
+2002-08-28  Gabriel Dos Reis  
+
+	* include/std/std_limits.h (__glibcpp_char_bits,
+	__glibcpp_short_bits, __glibcpp_int_bits, __glibcpp_long_bits,
+	__glibcpp_long_long_bits, __glibcpp_float_bits,
+	__glibcpp_double_bits, __glibcpp_long_double_bits): Remove.  Use
+	compiler predifined macros.
+	(__glibcpp_wchar_t_is_signed): Define based on compiler predefined
+	__WCHAR_UNSIGNED__.
+
+2002-08-27  Gabriel Dos Reis  
+
+	* include/std/std_limits.h (__glibcpp_f32_infinity_bytes,
+	__glibcpp_f32_has_infinity, __glibcpp_f32_QNaN_bytes,
+	__glibcpp_f32_has_QNaN, __glibcpp_f32_SNaN_bytes,
+	__glibcpp_f32_has_SNaN, __glibcpp_f32_denorm_min_bytes,
+	__glibcpp_f32_has_denorm, __glibcpp_f32_is_iec559,
+	__glibcpp_f64_infinity_bytes,
+	__glibcpp_f64_has_infinity, __glibcpp_f64_QNaN_bytes,
+	__glibcpp_f64_has_QNaN, __glibcpp_f64_SNaN_bytes,
+	__glibcpp_f64_has_SNaN, __glibcpp_f64_denorm_min_bytes,
+	__glibcpp_f64_has_denorm, __glibcpp_f64_is_iec559,
+	__glibcpp_f80_infinity_bytes,
+	__glibcpp_f80_has_infinity, __glibcpp_f80_QNaN_bytes,
+	__glibcpp_f80_has_QNaN, __glibcpp_f80_SNaN_bytes,
+	__glibcpp_f80_has_SNaN, __glibcpp_f80_denorm_min_bytes,
+	__glibcpp_f80_has_denorm, __glibcpp_f80_is_iec559,
+	__glibcpp_f96_infinity_bytes,
+	__glibcpp_f96_has_infinity, __glibcpp_f96_QNaN_bytes,
+	__glibcpp_f96_has_QNaN, __glibcpp_f96_SNaN_bytes,
+	__glibcpp_f96_has_SNaN, __glibcpp_f96_denorm_min_bytes,
+	__glibcpp_f96_has_denorm, __glibcpp_f96_is_iec559,
+	__glibcpp_f128_infinity_bytes,
+	__glibcpp_f128_has_infinity, __glibcpp_f128_QNaN_bytes,
+	__glibcpp_f128_has_QNaN, __glibcpp_f128_SNaN_bytes,
+	__glibcpp_f128_has_SNaN, __glibcpp_f128_denorm_min_bytes,
+	__glibcpp_f128_has_denorm, __glibcpp_f128_is_iec559,
+	__glibcpp_float_infinity_bytes,
+	__glibcpp_float_has_infinity, __glibcpp_float_QNaN_bytes,
+	__glibcpp_float_has_QNaN, __glibcpp_float_SNaN_bytes,
+	__glibcpp_float_has_SNaN, __glibcpp_float_denorm_min_bytes,
+	__glibcpp_float_has_denorm, __glibcpp_float_is_iec559,
+	__glibcpp_double_infinity_bytes,
+	__glibcpp_double_has_infinity, __glibcpp_double_QNaN_bytes,
+	__glibcpp_double_has_QNaN, __glibcpp_double_SNaN_bytes,
+	__glibcpp_double_has_SNaN, __glibcpp_double_denorm_min_bytes,
+	__glibcpp_double_has_denorm, __glibcpp_double_is_iec559,
+	__glibcpp_long_double_infinity_bytes,
+	__glibcpp_long_double_has_infinity, __glibcpp_long_double_QNaN_bytes,
+	__glibcpp_long_double_has_QNaN, __glibcpp_long_double_SNaN_bytes,
+	__glibcpp_long_double_has_SNaN, __glibcpp_long_double_denorm_min_bytes,
+	__glibcpp_long_double_has_denorm, __glibcpp_long_double_is_iec559:
+	New macros.
+	(__glibcpp_word_bits, __glibcpp_word): Likewise.
+	(__glibcpp_byte): New typedef.
+	(__float_storage, __double_storage, __long_double_storage): New types.
+	(__glibcpp_float_infinity, __glibcpp_float_QNaN,
+	__glibcpp_float_SNaN, __glibcpp_float_denorm_min): Now
+	objects. Declare.
+	(__glibcpp_double_infinity, __glibcpp_double_QNaN,
+	__glibcpp_double_SNaN, __glibcpp_double_denorm_min): Likewise.
+	(__glibcpp_long_double_infinity, __glibcpp_long_double_QNaN,
+	__glibcpp_long_double_SNaN, __glibcpp_long_double_denorm_min):
+	Likewise.
+
+	* src/limits.cc (__glibcpp_float_infinity, __glibcpp_float_QNaN,
+	__glibcpp_float_SNaN, __glibcpp_float_denorm_min): Define.
+	(__glibcpp_double_infinity, __glibcpp_double_QNaN,
+	__glibcpp_double_SNaN, __glibcpp_double_denorm_min): Likewise.
+	(__glibcpp_long_double_infinity, __glibcpp_long_double_QNaN,
+	__glibcpp_long_double_SNaN, __glibcpp_long_double_denorm_min):
+	Likewise.
+
+2002-08-25  Gabriel Dos Reis  
+
+	* include/std/std_limits.h: Indent conditional macro definitions.
+
+2002-08-23  Phil Edwards  
+
+	* Makefile.am (check-abi):  Specify current directory.
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE):  Fix shell syntax, use
+	abi_baseline_triplet in baseline_file.
+	* Makefile.in, aclocal.m4, configure:  Regenerate.
+	* configure.target:  Add abi_baseline_triplet with default.
+	* testsuite/abi_check.cc:  More error checking.
+
+2002-08-23  Phil Edwards  
+
+	* config/linker-map.gnu:  Verbose comments, clean up spacing.
+	* include/bits/stl_alloc.h:  Fix indentation of 'if' bodies, return
+	statements.
+	__allocator:  Change class declaration to struct.
+	* docs/html/17_intro/C++STYLE:  Fix typo.
+	* include/bits/stl_deque.h, include/bits/stl_list.h,
+	include/bits/stl_map.h, include/bits/stl_multimap.h,
+	include/bits/stl_vector.h:  Fix fallout from typo.
+
+2002-08-22  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Set
+	GLIBCPP_BUILD_ABI_CHECK based on cross compiling, build, host
+	variables.
+	* aclocal.m4: Regenerate.
+	* testsuite/Makefile.am (noinst_PROGRAMS): Make conditional on
+	native compiling.
+	* testsuite/Makefile.in: Regenerate.
+
+2002-08-22  Loren J. Rittle 
+
+	* testsuite/abi_check.cc: Enhance shell portability.
+	Support older binutils/readelf.
+	* config/abi/i386-unknown-freebsd4.6: Add.
+	* config/abi/i386-unknown-freebsd4.6/baseline_symbols.txt: New file.
+
+2002-08-22  Paolo Carlini  
+
+	* docs/html/faq/index.html: Add Loren James Rittle and
+	Paolo Carlini to the list of v3 maintainers.
+	* docs/html/faq/index.txt: Ditto.
+	* docs/html/17_intro/RELEASE-NOTES: Ditto.
+
+2002-08-22  Benjamin Kosnik  
+	    Phil Edwards  
+	    Ulrich Drepper  
+
+	* Makefile.am (check-abi): New rule.
+	* Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Export baseline_file.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (noinst_PROGRAMS): Add abi_check.
+	(abi_check_SOURCES): Add.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/abi_check.cc: New file.
+	* config/abi: Add.
+	* config/abi/i686-pc-linux-gnu: Add.
+	* config/abi/i686-pc-linux-gnu/baseline_symbols.txt: New file.
+
+2002-08-19  Benjamin Kosnik  
+
+	* configure.in (libtool_VERSION): Update to 5:1:0.
+	* configure: Regenerate.
+
+2002-08-19  Jonathan Wakely  
+
+	* docs/html/configopts.html, docs/html/documentation.html,
+	docs/html/install.html, docs/html/22_locale/codecvt.html,
+	docs/html/22_locale/ctype.html, docs/html/22_locale/howto.html,
+	docs/html/22_locale/locale.html,
+	docs/html/22_locale/messages.html: Conform to HTML 4.01 standard.
+
+2002-08-15  Benjamin Kosnik  
+
+	* include/ext/stdio_filebuf.h (stdio_filebuf): Explicitly set
+	_M_buf_size_opt to zero when unbuffering.
+	* include/bits/fstream.tcc (filebuf::showmanyc): Simplify.
+	Consistency checks for _M_buf_size_opt.
+
+	Revert PR libstdc++/7445
+	* src/locale.cc (locale::classic): Revert.
+
+	* docs/html/17_intro/TODO: Add.
+
+2002-08-15  Phil Edwards  
+
+	* docs/html/documentation.html:  Update doxygen links for 3.2.
+
+2002-08-15  Steve Ellcey  
+
+	* libsupc++/unwind-cxx.h (__cxa_exception): Change catchTemp
+	type from void* to _Unwind_Ptr.
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION):
+	Do not cast landing_pad or base_of_encoded_value to (void *).
+	* libsupc++/eh_throw.cc (__gxx_exception_cleanup):
+	Accept _URC_NO_REASON as a valid reason code.
+
+2002-08-14  Jonathan Wakely  
+
+	* docs/html/22_locale/messages.html:  Use HTML entities for
+	punctuation.
+
+2002-08-13  Jonathan Wakely  
+	    Phil Edwards  
+
+	* docs/html/documentation.html:  Use HTML entities for punctuation.
+
+2002-08-09  Phil Edwards  
+
+	* include/bits/deque.tcc, include/bits/list.tcc,
+	include/bits/stl_deque.h, include/bits/stl_iterator_base_funcs.h,
+	include/bits/stl_list.h, include/bits/stl_map.h,
+	include/bits/stl_multimap.h, include/bits/stl_queue.h,
+	include/bits/stl_stack.h, include/bits/stl_vector.h,
+	include/bits/vector.tcc:  Re-indent contents of namespace std,
+	re-wrap comment lines as necessary.
+
+2002-08-08  Danny Smith  
+	    Benjamin Kosnik  
+
+	* include/bits/istream.tcc (basic_istream::ignore): Use sbumpc,
+	not snextc.
+	* testsuite/27_io/narrow_stream_objects.cc (test10): Add.
+
+2002-08-07  John David Anglin  
+
+	* libsupc++/Makefile.am (LTCOMPILE): Add LIBSUPCXX_PICFLAGS.
+	* libsupc++/Makefile.in: Regenerate.
+
+2002-08-05  Gabriel Dos Reis  
+
+	PR/7491
+	* include/bits/slice_array.h(_DEFINE_VALARRAY_OPERATOR):
+	Instantiate with new function objects.
+	* include/bits/mask_array.h (_DEFINE_VALARRAY_OPERATOR): Likewise.
+	Reformat.  Uglify.
+	* include/bits/gslice_array.h: Likewise.
+	* include/bits/indirect_array.h: Likewise.
+
+2002-08-03  Gabriel Dos Reis  
+
+	* testsuite/26_numerics/valarray_name_lookup.cc: Rename from
+	testsuite/26_numerics/valarray_name_lookup.C
+
+	* include/bits/valarray_array.h (_DEFINE_ARRAY_FUNCTION): Use our
+	object function surrogates.
+	* include/bits/valarray_meta.h (__shift_left): Fix typo.
+	(_BinFunClos<>): Remove.
+	(_BinFunBase<>): Likewise.
+	(_BinFunBase1<>):Likewise.
+	(_BinFunBase2<>): Likewise.
+	(_DEFINE_EXPR_RELATIONAL_OPERATOR): Likewise.
+	(_DEFINE_EXPR_UNARY_OPERATOR): Adjust definition.
+	(_DEFINE_EXPR_BINARY_OPERATOR): Likewise.
+	(_DEFINE_EXPR_BINARY_FUNCTION): Likewise.
+	* include/std/std_valarray.h: Dont #include  anymore.
+	(_Bitwise_or<>, _Bitwise_and<>, _Bitwise_xor<>, _Shift_left<>,
+	_Shift_right<>): Remove.
+	(_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT): Adjust instantiation.
+	(_DEFINE_BINARY_OPERATOR): Tweak definition.
+	(_DEFINE_LOGICAL_OPERATOR): Remove.
+	* testsuite/26_numerics/valarray_name_lookup.C (main): Add more tests.
+
+2002-08-02  Gabriel Dos Reis  
+
+	* include/bits/valarray_meta.h (_UnFunBase<>): Remove.
+	(_UnFunClos<>): Same.
+	(_UnBase<>): Reformat.  Make first template-parameter non
+	template.
+	(_UnClos<>): Likewise.
+	(_Expr<>): Reformate.  Adjust unary member operator return types.
+	(_DEFINE_EXPR_UNARY_OPERATOR): Adjust definition.
+	(_DEFINE_EXPR_UNARY_FUNCTION): Likewise.
+	* include/std/std_valarray.h (_UnClos<>): Adjust declaration.
+	(valarray<>::_UnaryOp<>):  New nested traits. Adjust unary member
+	operator return types.  Reformat.
+	(_Bitwise_not): Remove.
+	(_DEFINE_VALARRAY_UNARY_OPERATOR): Adjust definition.
+	* testsuite/26_numerics/valarray_name_lookup.C: New test.
+
+2002-08-02  Danny Smith  
+
+	* config/os/newlib/ctype_inline.h (is): Don't offset _M_table.
+	(scan_is): Use this->is.
+	(scan_not): Likewise.
+
+2002-08-02  Benjamin Kosnik  
+
+	Revert PR libstdc++/6594
+	* src/strstream.cc (strstreambuf): Revert.
+	(strstreambuf::overflow): Same.
+	(strstreambuf::~strstreambuf): Same.
+	* testsuite/backward/strstream_members.cc (test02): Add.
+
+	* docs/html/abi.txt: Update. Spell check.
+
+	* testsuite/19_diagnostics/stdexceptions.cc (test04): Add bool test.
+
+	* testsuite/Makefile.am (INCLUDES): Add LIBSUPCXX_INCLUDES.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/testsuite_hooks.h: Use __throw_exception_again,
+	include functexcept.h so that -fno-exceptions will build.
+
+2002-08-02  Gabriel Dos Reis  
+
+	* include/bits/valarray_meta.h (__unary_plus, __negate,
+	__bitwise_not, __plus, __minus, __multiplies, __divides,
+	__modulus, __bitwise_xor, __bitwise_or, __bitwise_and,
+	__shift_left, __shift_right, __logical_and, __logical_or,
+	__logical_not, __equal_to, __not_equal_to, __less, __less_equal,
+	__greater_equal, __greater, __atan2, __pow): New function object
+	classes.
+	(__fun<>):  New function traits class.
+
+2002-08-01  Rick Danos  
+
+	PR libstdc++/7461
+	* config/os/newlib/ctype_noninline.h (classic_table): Add offset.
+	* config/os/newlib/ctype_inline.h (is): Use static_cast.
+
+2002-08-01  Neil Booth  
+
+	* libsupc++/Makefile.am (LT_COMPILE): Remove C++ flags.
+	* libsupc++/Makefile.in: Regenerate.
+
+2002-08-01  Benjamin Kosnik  
+	    Jakub Jelinek  
+
+	* config/linker-map.gnu: Change CXXABI_1 to CXXABI_1.2,
+	GLIBCPP_3.1 to GLIBCPP_3.2.
+
+2002-07-31  Benjamin Kosnik  
+	    Mark Mitchell  
+
+	PR libstdc++/7442
+	* libsupc++/cxxabi.h (class __base_class_type_info::hwm_bit):
+	Change to __hwm_bit.
+	(__class_type_info): And here.
+
+2002-07-31  Benjamin Kosnik  
+
+	PR libstdc++/7442
+	* libsupc++/cxxabi.h
+	(__base_class_info): Change to __base_class_type_info. 2.9.5p6c
+	(__base_class_info::__base): Change to __base_type. 2.9.5p6c
+	(__base_class_info::offset_shift): Change to __offset_shift. 2.9.5p6c
+	(__vmi_class_type_info::__base_info): Don't make const, of type
+	__base_class_type_info, as per 2.9.5p6c
+	(__pbase_type_info::__qualifier_flags): Change to __flags, as per
+	2.9.5p7.
+	(__pbase_type_info::__qualifier_masks): Change to __masks, as per
+	2.9.5p7.
+	(__pointer_to_member_type_info::__context_class): Change member to
+	__context, as per 2.9.5p9.
+	* libsupc++/tinfo2.cc (__pointer_catch): Change __context_class to
+	__context.
+	* libsupc++/tinfo2.cc (__do_catch): Change __qualifier_flags to
+	__flags.
+	* libsupc++/tinfo.cc (__do_find_public_src): Change __base to
+	__base_type.
+	* libsupc++/tinfo.cc (__do_dyncast): Same.
+	* libsupc++/tinfo.cc (__do_upcast): Same.
+
+2002-07-31  Benjamin Kosnik  
+
+	* src/fstream.cc: Add _GLIBCPP_USE_WCHAR_T guards.
+
+2002-07-31  Simon Whomsley  
+
+	* docs/html/22_locale/howto.html: Fix.
+
+2002-07-31  Alex Kompel  
+
+	PR libstdc++/7445
+	* src/locale.cc (locale::classic): Move locks inside !_S_classic
+	block.
+
+2002-07-31  Benjamin Kosnik  
+
+	* docs/html/abi.txt: Update.
+
+2002-07-30  Benjamin Kosnik  
+	    Gabriel Dos Reis  
+
+	* include/bits/char_traits.h: Remove generic definitions.
+	* include/bits/streambuf_iterator.h (istreambuf_iterator): Use
+	eof, not -2.
+	* include/bits/istream.tcc (istream::readsome): Don't check
+	against eof, instead use constants.
+	(istream::sync): Same.
+	(istream::sentry::sentry): Use eq_int_type.
+	(istream::get): Same.
+	* include/bits/ostream.tcc: Change __pad to
+	__pad<_CharT, _Traits>::_S_pad.
+	* include/bits/locale_facets.h: Add __pad_traits generic and
+	ostreambuf_iterator specialization.
+	* include/bits/locale_facets.tcc: Change __pad into struct __pad
+	with a _CharT and _Traits template parameter and _S_pad static
+	member function.
+	* src/locale-inst.cc: Update __pad instantiations.
+
+	* include/std/std_fstream.h: Declare _M_underflow_common
+	specializations.
+	* src/fstream.cc: New. Add _M_underflow_common specializations.
+	* include/bits/fstream.tcc (filebuf::close): Use traits_type.
+	(filebuf::_M_underflow_common(bool)): Remove generic version, as
+	sys_ungetc and custom int_types don't get along.
+	* include/std/std_streambuf.h: Add _M_pos.
+	* src/Makefile.am (sources): Add fstream.cc.
+	* src/Makefile.in: Regenerate.
+
+	* testsuite/21_strings/capacity.cc: Add char_traits specializations.
+	* testsuite/22_locale/codecvt_members_unicode_char.cc: Same.
+	* testsuite/22_locale/codecvt_members_unicode_wchar_t.cc: Same.
+	* testsuite/22_locale/ctor_copy_dtor.cc: Same.
+	* testsuite/27_io/filebuf_virtuals.cc (test07): Move to...
+	* testsuite/27_io/filebuf.cc: ...here.
+	* testsuite/testsuite_hooks.h: Add gnu_char, gnu_int, char_traits
+	specialization for both.
+	* testsuite/27_io/streambuf.cc: Add instantiation test,
+	testsuite_hooks include.
+	* testsuite/27_io/istream.cc: Same.
+	* testsuite/27_io/ostream.cc: Same.
+	* testsuite/27_io/fstream.cc: Same.
+	* testsuite/27_io/stringstream.cc: Same.
+	* testsuite/27_io/filebuf.cc: Same.
+	* testsuite/27_io/stringbuf.cc: Same.
+
+2002-07-29  Alan Modra  
+
+	* config/cpu/powerpc/cpu_limits.h (__glibcpp_long_bits): Define.
+	* configure.target (cpu_include_dir): Use cpu/powerpc for powerpc64.
+	* config/cpu/powerpc/atomicity.h (__always_swap): Remove.
+	(__test_and_set): Remove.
+	(_STWCX): Define and use.
+
+2002-07-26  Phil Edwards  
+
+	* libsupc++/new (placement delete):  Remove unused parameter names.
+
+2002-07-25  Benjamin Kosnik  
+
+	PR libstdc++/7216
+	* include/std/std_istream.h (basic_iostream): Add typedefs for
+	char_type, int_type, pos_type, off_type, and traits_type.
+	* testsuite/27_io/iostream.cc (test01): Add typedef tests.
+	* testsuite/27_io/istream.cc: Same.
+	* testsuite/27_io/ostream.cc: Same.
+	* testsuite/27_io/filebuf.cc: Same.
+	* testsuite/27_io/stringbuf.cc: Replace content, move to...
+	* testsuite/27_io/stringbuf_members.cc: ...here.
+	* testsuite/27_io/streambuf.cc: Replace content, move to...
+	* testsuite/27_io/streambuf_members.cc: ...here.
+	* testsuite/27_io/stringstream.cc: Replace content, move to...
+	* testsuite/27_io/stringstream_members.cc: ...here.
+	* testsuite/27_io/ios.cc: New file.
+	* testsuite/27_io/fstream.cc: New file.
+	* testsuite/27_io/ifstream.cc: New file.
+	* testsuite/27_io/ofstream.cc: New file.
+	* testsuite/27_io/istringstream.cc: New file.
+	* testsuite/27_io/ostringstream.cc: New file.
+
+2002-07-25  Benjamin Kosnik  
+
+	PR libstdc++/7220
+	* include/bits/istream.tcc (istream::ignore): Don't extract on
+	zero.
+	* testsuite/27_io/istream_unformatted.cc (test10): Add.
+
+2002-07-25  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base_type.cc: Move to...
+	* testsuite/27_io/ios_base_types.cc: ...here.
+
+2002-07-24  Benjamin Kosnik  
+
+	PR libstdc++/7222
+	* src/locale.cc (locale::locale(const char*)): Use setlocale NULL.
+	* testsuite/22_locale/ctor_copy_dtor.cc (test02): New.
+
+2002-07-24  Benjamin Kosnik  
+
+	PR libstdc++/7230
+	* config/linker-map.gnu: Revert strstream patch from 2002-07-01.
+	* include/Makefile.am (backward_headers): Use strstream, not
+	strstream.h.
+	* include/Makefile.in: Regenerate.
+	* include/backward/strstream: Revert.
+	* include/backward/strstream.h: Remove.
+	* src/strstream.cc: Revert.
+	* testsuite/backward/strstream_members.cc: Change include.
+
+2002-07-24  Benjamin Kosnik  
+
+	PR libstdc++/7219
+	* include/bits/ios_base.h (ios_base::streampos): Add.
+	(ios_base::streamoff): Add.
+	* testsuite/27_io/ios_base_type.cc: New.
+
+2002-07-24  Benjamin Kosnik  
+
+	PR libstdc++/7286
+	* libsupc++/new: Add placement delete.
+	* testsuite/18_support/new_delete_placement.cc: New.
+
+	* docs/html/abi.txt: Fix typos.
+
+2002-07-23  Benjamin Kosnik  
+
+	* docs/html/documentation.html: Remove libstdc++-v3.0.86 links,
+	confusing usage of "latest."
+	De-tangle contributor information from introductory notes.
+	Move abi.txt link placement, activate.
+	Re-organize.
+	Move chapter info into old FAQ format.
+	* docs/html/organization.html: Removed, obsoleted by doxygen work.
+	* docs/html/abi.txt: Add notes on testing ABI changes.
+
+2002-07-20  Phil Edwards  
+
+	* docs/html/abi.txt:  New file.
+	* docs/html/23_containers/howto.html:  Tweak vector-overhead text.
+	* docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+	Import from upstream, R22.
+
+	* include/bits/char_traits.h, include/bits/stl_iterator.h,
+	include/bits/stl_iterator_base_types.h, libsupc++/exception,
+	libsupc++/new, libsupc++/typeinfo:  Use @brief markup.
+
+	* include/bits/deque.tcc, include/bits/stl_alloc.h,
+	include/bits/stl_deque.h, include/bits/stl_list.h:  Postpone removal
+	of deprecated functions until 3.4.  (Same timeframe, different text.)
+	* include/bits/stl_vector.h:  Ditto.  Also do the same cleanups that
+	the other sequence classes received.
+
+2002-07-18  Brendan Kehoe  
+
+	* bits/slice_array.h (_DEFINE_VALARRAY_OPERATOR): Fix typo of
+	_Nname to _Name.
+
+2002-07-19  Gabriel Dos Reis  
+
+	DR/123
+	* include/bits/slice_array.h
+	(slice_array::operator=(const T&)): Constify.
+	* include/bits/gslice_array.h
+	(gslice_array::operator=(const T&)):  Likewise.
+	* include/bits/mask_array.h
+	(mask_array::operator=(const T&)): Likewise.
+	* include/bits/indirect_array.h
+	(indirect_array::operator=(const T&): Likewise.
+
+2002-07-17  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Remove template parameter names from
+	"Compound List" summary page.  Reformat.
+	* docs/html/documentation.html:  XHTML fixes.
+
+2002-07-16  Andreas Schwab  
+
+	* libsupc++/new (set_new_handler): Declare to not throw any
+	exceptions.
+	* libsupc++/new_handler.cc (set_new_handler): Likewise.
+
+2002-07-16  Gabriel Dos Reis  
+
+	* include/Makefile.am (bits_headers): Remove slice.h
+	* include/Makefile.in: Regenerate.
+	* include/bits/slice.h (slice): move to include/bits/slice_array.h
+	* include/bits/slice.h Remove.
+	* include/std/std_valarray.h: Don't #include bits/slice.h anymore.
+	* include/bits/slice_array.h: Comply to official coding styles.
+	* testsuite/26_numerics/slice.cc: New test.
+
+2002-07-15  Rainer Orth  
+
+	* config/os/solaris/solaris2.5/ctype_base.h (ctype_base): Fix
+	print to match vendor .
+
+2002-07-15  Phil Edwards  
+
+	* docs/html/faq/index.html:  Fix download links.
+	* docs/html/faq/index.txt:  Regenerate.
+	* docs/html/17_intro/porting.html:  Regenerate from earlier changes.
+
+2002-07-11  Rainer Orth  
+
+	* configure.target (target_os switch): Allow for irix6*o32
+	configurations.
+
+2002-07-10  Gabriel Dos Reis  
+
+	* include/bits/valarray_meta.h (_UnFunBase): Take a second
+	template parameter. Remove _M_func data member.
+	(_UnFunClos): Take a third template parameter.
+	(__abs, __cos, __acos, __cosh, __sin, __asin, __sinh, __tan,
+	__atan, __tanh, __exp, __log, __log10, __sqrt): New classes.
+	(_DEFINE_EXPR_UNARY_OPERATOR): Adjust definition.
+
+2002-07-08  Eric Christopher  
+
+	* configure.target: Fix comment for mips atomicity. Add
+	mips*-*-linux* target, enable atomic operations there.
+	* config/cpu/mips/atomicity.h: Fix comments, remove
+	#ifndef/#endif. Add push/pop mips2.
+
+2002-07-08  Peter Schmid  
+
+	* include/bits/stl_deque.h (_Deque_alloc_base):  Change order of
+	member declarations to avoid compiler warnings and restore 3.1 ABI.
+
+2002-07-08  Phil Edwards  
+
+	* docs/html/23_containers/howto.html:  Link to dk_std::vector paper
+	and homepage.
+
+2002-07-07  Paolo Carlini  
+
+	PR libstdc++/7186
+	* include/bits/stl_deque.h (_Deque_iterator::operator-):
+	Make non-member, as already happens for the comparison
+	operators in accord with DR179 (Ready).
+	* testsuite/23_containers/deque_operators.cc: Add test02.
+
+2002-07-04  Benjamin Kosnik  
+	    Jack Reeves  
+
+	* include/std/std_streambuf.h (basic_streambuf::_M_buf): Change to
+	size_t, from int_type.
+ 	(basic_streambuf::_M_buf_size_opt): Same.
+ 	(basic_streambuf::_S_pback_sizex): Same.
+	* include/bits/streambuf.tcc: Same.
+	* include/std/std_streambuf.h (basic_streambuf::snextc): Use
+	eq_int_type.
+	(basic_streambuf::uflow): Same.
+	* include/bits/sstream.tcc (basic_stringbuf::overflow): Use
+	to_char_type.
+	* include/bits/basic_ios.tcc (basic_ios::init): Use _CharT().
+	* include/bits/streambuf.tcc (basic_streambuf::xsgetn): Use
+	eq_int_type.
+	(basic_streambuf::xsputn): Same.
+	(__copy_streambufs): Same.
+
+2002-07-03  Benjamin Kosnik  
+
+	* include/std/std_memory.h: Fix formatting.
+	* testsuite/20_util/auto_ptr_neg.cc: New.
+	* testsuite/20_util/auto_ptr.cc: Tweaks.
+	* testsuite/23_containers/map_operators.cc (test01): Split into..
+	* testsuite/23_containers/map_operators_neg.cc (test01): ...this. New.
+	* testsuite/23_containers/set_operators.cc: Move to...
+	* testsuite/23_containers/set_operators_neg.cc: ...here.
+	* testsuite/README: Add some more naming rules.
+
+2002-07-03  Steev Wilcox  
+
+	PR libstdc++/7057
+	* include/ext/stl_hashtable.h: Fix.
+	* testsuite/ext/hash_map.cc: New.
+
+2002-07-03  Jack Reeves  
+	    Kenny Simpson  
+	    Phil Edwards  
+
+	PR libstdc++/3946
+	* testsuite/20_util/auto_ptr.cc (test08):  New test.
+	* include/std/std_memory.h (auto_ref_ptr):  Make constructor explicit.
+	(auto_ptr::operator auto_ptr_ref):  Fix typo.
+	General reformatting and doxygenating of the whole file.
+
+2002-07-03  Benjamin Kosnik  
+
+	PR libstdc++/7097
+	* include/c/std_cwchar.h: Fix.
+
+2002-07-02  Benjamin Kosnik  
+
+	PR libstdc++/6410
+	* include/bits/locale_facets.h (moneypunct::moneypunct): Add const
+	char* name parameter.
+	* config/locale/gnu/monetary_members.cc: Use it.
+	* config/locale/generic/monetary_members.cc: Same.
+	* src/localename.cc (_Impl::_Impl(const char*, size_t)): Use it.
+
+	* include/backward/strstream.h: Update date.
+
+2002-07-02  Paolo Carlini  
+
+	PR libstdc++/6642
+	* include/bits/stl_iterator.h
+	(__normal_iterator::operator-(const __normal_iterator&)):
+	Make non-member, as already happens for the comparison
+	operators in accord with DR179 (Ready).
+	* testsuite/24_iterators/iterator.cc: Add test from the PR.
+
+2002-07-02  Phil Edwards  
+
+	PR libstdc++/7173
+	* acinclude.m4:  Simplify determination of gcc_version, and move
+	up to GLIBCPP_CONFIGURE.
+	* configure.in (release_VERSION):  Really remove.
+	(AM_INIT_AUTOMAKE, AM_CONFIG_HEADER):  Move after GLIBCPP_CONFIGURE.
+	* aclocal.m4, configure:  Regenerate.
+
+2002-07-02  Phil Edwards  
+
+	* docs/html/configopts.html, docs/html/install.html:  Tweaks.
+	* include/ext/algorithm, include/ext/hash_map, include/ext/hash_set,
+	include/ext/iterator, include/ext/numeric, include/ext/rb_tree,
+	include/ext/slist, include/ext/stl_rope.h:  Add doxygen hooks.
+
+2002-07-01  Benjamin Kosnik  
+
+	* include/backward/strstream: Remove namespace std. Transfer to...
+	* include/backward/strstream.h: ...here. Qualify std names.
+	* src/strstream.cc: Remove namespace std.
+	* include/Makefile.am (backward_headers): Remove strstream.h.
+	* include/Makefile.in: Regenerate.
+	* config/linker-map.gnu: Export strstream bits.
+
+	* src/fstream-inst.cc: Tweak.
+	* src/io-inst.cc: Same.
+	* src/istream-inst.cc: Same.
+	* src/misc-inst.cc: Same.
+	* src/ostream-inst.cc: Same.
+	* src/sstream-inst.cc: Same.
+	* src/valarray-inst.cc: Same.
+	* src/misc-inst.cc: Remove unused instantiations.
+
+2002-07-01  Benjamin Kosnik  
+
+	* configure.in (libtool_VERSION): Bump to 5:0:0.
+	* configure: Regenerate.
+
+2002-06-28  Phil Edwards  
+
+	PR libstdc++/7157, PR libstdc++/7158, PR libstdc++/7161
+	* include/std/std_queue.h:  Include deque.tcc, vector.tcc.
+	* include/std/std_stack.h:  Include deque.tcc.
+	* testsuite/23_containers/adaptors.cc:  New file.
+
+2002-06-27  Phil Edwards  
+
+	* include/bits/stl_alloc.h:  Deprecate all 'reallocate' memfns.
+	* docs/html/ext/howto.html:  Update allocator notes.
+
+2002-06-26  Benjamin Kosnik  
+
+	* configure.in (INTERFACE): Remove.
+	(release_VERSION): Remove.
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Change include placement.
+	(libstdcxx_interface): Change. Use gcc methods to determine version.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2002-06-25  DJ Delorie  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE): Split out
+	GLIBCPP_TOPREL_CONFIGURE.
+	* aclocal.m4: Likewise.
+	* configure.in: Call it before AC_CANONICAL_SYSTEM.
+	* configure: Regenerate.
+
+2002-06-25  Jessica Han  
+
+	* config/os/hpux/os_defines.h Define _GLIBCPP_VTABLE_PADDING
+	* libsupc++/tinfo.cc Handle the 8 byte aligned vtable entries when
+	_GLIBCPP_VTABLE_PADDING is defined.
+
+2002-06-25  Benjamin Kosnik  
+
+	* include/bits/stl_alloc.h: Additional formatting.
+
+2002-06-24  Phil Edwards  
+
+	* include/bits/stl_alloc.h:  Reformat as per C++STYLE.
+
+2002-06-24  Phil Edwards  
+
+	* config/cpu/*/bits/*:  Move header files up a level.  Remove bits.
+	* config/os/*/bits/*:  Likewise.
+	* configure.in:  Update.
+	* configure:  Regenerate.
+	* configure.target:  Update.
+	* docs/html/17_intro/porting.texi:  Update.
+
+2002-06-21  Phil Edwards  
+
+	* include/bits/stl_map.h, include/bits/stl_multimap.h,
+	include/bits/stl_queue.h, include/bits/stl_stack.h:  Reformat and
+	complete doxygenation.
+	* include/bits/boost_concept_check.h:  Minor comment.
+
+2002-06-21  Benjamin Kosnik  
+
+	* include/c_compatibility: New.
+	* include/c_compatibility/assert.h: New.
+	* include/c_compatibility/ctype.h: New.
+	* include/c_compatibility/errno.h: New.
+	* include/c_compatibility/float.h: New.
+	* include/c_compatibility/iso646.h: New.
+	* include/c_compatibility/limits.h: New.
+	* include/c_compatibility/locale.h: New.
+	* include/c_compatibility/math.h: New.
+	* include/c_compatibility/setjmp.h: New.
+	* include/c_compatibility/signal.h: New.
+	* include/c_compatibility/stdarg.h: New.
+	* include/c_compatibility/stddef.h: New.
+	* include/c_compatibility/stdio.h: New.
+	* include/c_compatibility/stdlib.h: New.
+	* include/c_compatibility/string.h: New.
+	* include/c_compatibility/time.h: New.
+	* include/c_compatibility/wchar.h: New.
+	* include/c_compatibility/wctype.h: New.
+
+	* include/c/std_cerrno.h: Get out of the way... define errno.
+	* include/c/std_cmath.h: Add abs, modf overloads.
+	Undefine C99 isms. Still not sure how to deal with this sanely.
+	* include/c/std_csetjmp.h: Tweak.
+	* include/c/std_cwchar.h: Include cstddef for size_t.
+
+	* include/c_std/std_cmath.h: Remove extra function.
+
+	Pendantic std usage in testsuites.
+	* testsuite/17_intro/header_cstdlib.cc (test01): Qualify ldiv_t
+	with std.
+	* testsuite/17_intro/header_cwchar.cc: Tweak.
+	* testsuite/22_locale/codecvt_members_char_char.cc (test03): Use
+	std::setlocale.
+	* testsuite/22_locale/ctype_to_wchar_t.cc (test05): Same.
+	* testsuite/22_locale/ctype_to_char.cc (test05): Same.
+	* testsuite/22_locale/ctype_is_wchar_t.cc (test05): Same.
+	* testsuite/22_locale/ctype_is_char.cc (test05): Same.
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc (test03): Same.
+	* testsuite/22_locale/time_get_members_wchar_t.cc (test08): Same.
+	* testsuite/22_locale/time_get_members_char.cc (test08): Same.
+	* testsuite/22_locale/time_put_members_wchar_t.cc (test04): Same.
+	* testsuite/22_locale/time_put_members_char.cc (test04): Same.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test04): Same.
+	* testsuite/22_locale/num_put_members_char.cc (test04): Same.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc (test03): Same.
+	* testsuite/22_locale/numpunct_members_char.cc (test03): Same.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Same.
+	* testsuite/22_locale/num_get_members_char.cc: Same.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test07): Same.
+	* testsuite/22_locale/money_put_members_char.cc (test07): Same.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc (test03): Same.
+	* testsuite/22_locale/moneypunct_members_char.cc (test03): Same.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test08): Same.
+	* testsuite/22_locale/money_get_members_char.cc (test08): Same.
+	* testsuite/22_locale/messages_members_char.cc (test03): Same.
+	* testsuite/22_locale/collate_members_wchar_t.cc (test04): Same.
+	* testsuite/22_locale/collate_members_char.cc (test04): Same.
+	* testsuite/26_numerics/fabs_inline.cc: Use std::printf.
+	* testsuite/27_io/istream_seeks.cc (test02): Qualify abort.
+	* testsuite/27_io/istream_extractor_arith.cc (test11): Qualify strtol.
+
+2002-06-20  Benjamin Kosnik  
+
+	* libsupc++/Makefile.am (libsupc__convenience_la_SOURCES): Add
+	c_sources.
+
+2002-06-20  Benjamin Kosnik  
+
+	* src/ext-inst.cc (__gnu_cxx): Use instead of std:: for extensions.
+	Use size_type instead of unsigned long.
+
+2002-06-20  Steve Ellcey  
+
+	* src/ext-inst.cc (_S_fetch): Add explicit templates for char and
+	wchar types.
+	(_S_min_len): Ditto.
+
+2002-06-20  Benjamin Kosnik  
+
+	* include/Makefile.am: Add rules.
+	* include/Makefile.in: Regenerate.
+
+	* acinclude.m4: Define GLIBCPP_C_HEADERS_COMPATIBILITY.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* configure.target (c_model, c_compatibility): Add.
+
+	* libsupc++/Makefile.am (c_sources): New.
+	(libsupc___la_SOURCES): Add c_sources.
+	(LTCOMPILE): Remove INCLUDES.
+	(GCC_INCLUDES): New.
+	(C_COMPILE): New, like COMPILE but without INCLUDES.
+	(cxa_demangle.o): Use C_COMPILE.
+	(dyn-string.o): Use C_COMPILE.
+
+	* include/c/std_cstdarg.h: Define __need___va_list.
+	* include/c/std_cstddef.h: Define need_size_t, need_ptrdiff_t,
+	need_NULL, need_offsetof.
+
+2002-06-19  Steve Ellcey  
+
+	* configure.in (HAVE_FINITE*, HAVE_ISINF*, HAVE_ISNAN*):  Remove
+	definitions in hpux11 cross-build because these functions do
+	not exist on hpux11 (but some exist on hpux10); move defaults out
+	into existing sections.
+	* configure:  Regenerate.
+
+2002-06-18  Benjamin Kosnik  
+
+	* include/c/std_cwchar.h: Guard. Add mbstate_t bits.
+	* include/c/std_cwctype.h: Guard.
+
+	* libsupc++/eh_alloc.cc: Tweak include order.
+	* libsupc++/pure.cc: Use cstdio.
+	* libsupc++/new_op.cc: Remove malloc forward declaration, as
+	cstdlib brings it in. Use std::malloc.
+
+	* src/Makefile.am (sources): Remove cmath.cc.
+	* src/Makefile.in: Regenerate.
+	* src/cmath.cc: Remove.
+
+2002-06-18  Phil Edwards  
+
+	* configure.target:  Force mips to use the generic cpu routines.
+
+2002-06-18  Phil Edwards  
+
+	* configure.host:  Delete file.
+	* configure.target:  More documentation.  Factor out common parts of
+	script into "intelligent" settings about defaults.  Remove redundancy.
+
+	* acinclude.m4:  Update comments.  Do not call configure.host.
+	(GLIBCPP_ENABLE_SYMVERS):  If disabled, do not bother checking for
+	libgcc_s.
+	* configure.in:  Slight reformatting, more comments.  Factor out
+	"config/" from all the directories.
+	* docs/html/17_intro/porting.texi:  Update and expand.
+	* testsuite/Makefile.am (AM_RUNTESTFLAGS):  Move empty setting
+	from configure.host.
+
+	* aclocal.m4, configure, docs/html/17_intro/porting.html,
+	testsuite/Makefile.in:  Regenerate.
+
+2002-06-16  Phil Edwards  
+
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/tables.html:  Uncomment magical middle column.
+	* docs/doxygen/user.cfg.in:  Kludge to ignore function-like macros.
+	* include/bits/stl_queue.h:  Doxygenate and reformat.
+	* include/bits/ios_base.h, include/std/std_streambuf.h:  Add comment
+	for deprecated names required by the standard.
+
+2002-06-14  J.T. Conklin  
+
+	* configure.in (target_alias): Fix.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2002-06-12  Phil Edwards  
+
+	* include/Makefile.am:  Add new files.
+	* include/Makefile.in:  Regenerate.
+
+	* include/bits/stl_deque.h, include/bits/stl_list.h,
+	include/bits/stl_vector.h:  Clean up, reformat.  Move definitions...
+	* include/bits/deque.tcc, include/bits/list.tcc,
+	include/bits/vector.tcc:  ...to here.  New files.
+
+	* include/ext/stl_hashtable.h:  Inclide correct full headers.
+	* include/std/std_deque.h:  Include .tcc files for now.
+	* include/std/std_list.h:  Likewise.
+	* include/std/std_vector.h:  Likewise.
+
+2002-06-12  Daniel Jacobowitz  
+
+	* Makefile.am: Add FLAGS_TO_PASS.
+	* Makefile.in: Regenerated.
+
+2002-06-11  J.T. Conklin  
+	    Benjamin Kosnik  
+
+	* configure.target: Set os_include_dir to config/os/qnx/qnx6.1
+	under *-qnx6.[12]*.
+	* configure.in: Add support for *-qnx6.[12]*.
+	* configure: Regenerate.
+
+	* config/os/qnx, config/os/qnx/qnx6.1, config/os/qnx/qnx6.1/bits:
+	New directories.
+	* config/os/qnx/qnx6.1/bits/ctype_base.h, ctype_inline.h,
+	ctype_noninline.h, os_defines.h: New files.
+
+2002-06-10  Loren J. Rittle 
+
+	* acinclude.m4 (GLIBCPP_CHECK_SETRLIMIT_ancilliary): Reorder and
+	include all required headers for test against older POSIX standard.
+	(GLIBCPP_CHECK_SETRLIMIT): Likewise.
+	(ac_setrlimit): Likewise.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/testsuite_hooks.cc: Reorder and include all
+	required headers for use against older POSIX standard.
+
+2002-06-08  Paolo Carlini  
+
+	* testsuite/backwards/strstream_members.cc: New.
+
+2002-06-08  Benjamin Kosnik  
+
+	* include/backwards/strstream: Format.
+	* src/strstream.cc: Format.
+
+2002-06-08  Andreas Schwab  
+
+	* src/strstream.cc (strstreambuf::overflow): Set _M_buf,
+	_M_buf_size and _M_buf_size_opt to the new buffer and size.
+
+2002-06-08  Benjamin Kosnik  
+
+	* config/os/generic/bits/ctype_noninline.h: Tweak format.
+
+2002-06-07  Steve Ellcey  
+
+	* src/locale-inst.cc (__codecvt_abstract_base):
+	Put inside _GLIBCPP_USE_WCHAR_T ifdef.
+	* include/bits/istream.tcc (basic_istream): Ditto.
+	(ws) Ditto.
+	(operator>>) Ditto.
+	* include/bits/ostream.tcc (basic_ostream): Ditto.
+	(endl): Ditto.
+	(ends): Ditto.
+	(flush): Ditto.
+	(operator<<): Ditto.
+
+2002-06-07  Phil Edwards  
+
+	* mkcheck.in:  Link against local testsuite library.
+	* testsuite/testsuite_hooks.h (__set_testsuite_memlimit):  Move null
+	implementation out...
+	* testsuite/testsuite_hooks.cc:  ...to here.
+
+2002-06-06  Loren J. Rittle 
+
+	* src/Makefile.am (AUTOMAKE_OPTIONS): Use cygnus-style generation.
+	* include/Makefile.am (AUTOMAKE_OPTIONS): Likewise.
+	* testsuite/Makefile.am (AUTOMAKE_OPTIONS): Likewise.
+	* src/Makefile.in: Regenerate (explicitly with --cygnus option).
+	* testsuite/Makefile.in: Likewise.
+
+2002-06-05  David Edelsohn  
+
+	* config/os/aix/bits/ctype_noninline.h (do_toupper,do_tolower):
+	Call external symbol.
+
+2002-06-04  Rainer Orth  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3_target_compile):
+	Search correct multilib testsuite dir for libv3test.
+
+2002-06-04  Paolo Carlini  
+	    Gaby Dos Reis  
+
+	* include/bits/basic_string.tcc
+	(basic_string::_S_construct(forward_iterator_tag):
+	Fix typo in null pointer check.
+	* testsuite/21_strings/ctor_copy_dtor.cc: Add test04.
+
+2002-06-04  Paolo Carlini  
+
+	* testsuite/22_locale/money_get_members_char.cc
+	(test02): Add decimal point to long double constants.
+	* testsuite/22_locale/money_get_members_wchar_t.cc
+	(test02): Likewise.
+	* testsuite/22_locale/money_put_members_char.cc
+	(test02, test03, test06): Likewise.
+	* testsuite/22_locale/money_put_members_wchar_t.cc:
+	(test02, test03, test06): Likewise.
+	* testsuite/22_locale/num_get_members_char.cc:
+	(test02, test01): Likewise; suffix long long constants with LL.
+	* testsuite/22_locale/num_get_members_wchar_t.cc:
+	(test02, test01): Likewise.
+	* testsuite/22_locale/num_put_members_char.cc:
+	(test02, test01): Likewise.
+	* testsuite/22_locale/num_put_members_wchar_t.cc:
+	(test02, test01): Likewise.
+
+2002-06-03  Marc Espie  
+
+	* config/cpu/m68k/bits/atomicity.h(__exchange_and_add): Fix inline
+	assembly for old assemblers.
+
+2002-06-03  Phil Edwards  
+
+	* include/bits/stl_bvector.h (swap(_Bit_reference,_Bit_reference)):
+	Move/rename...
+	(vector::swap(reference,reference)): ...to this.
+
+2002-06-03  Phil Edwards  
+
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/user.cfg.in (SORT_MEMBER_DOCS):  Set to off, now that
+	some class members are in 14882 order.
+	* docs/html/ext/howto.html:  3.1 is in the past now, not the future.
+
+	* include/std/std_bitset.h:  Update comment.
+	* src/bitset.cc:  Update comments, clean up spacing.
+
+	* src/Makefile.am (sources):  Alphabetize for convenience.
+	* src/Makefile.in:  Regenerate.
+
+2002-06-03  Phil Edwards  
+
+	* include/bits/stl_deque.h, include/bits/stl_list.h,
+	include/bits/stl_vector.h:  Reformat to (mostly) match C++STYLE.
+	Reorder to match 14882.  Doxygen blocks for all public members.
+
+2002-05-31  Marcus Meissner  
+
+	PR libstdc++/6886
+	* include/bits/stl_bvector.h:  Use UL suffix for unsigned longs.
+	* testsuite/23_containers/vector_bool.cc (test02):  New test.
+
+2002-05-30  Marc Espie  
+
+	* configure.in: Always check for sys/types.h
+	* configure: Regenerate.
+
+2002-05-28  Nick Clifton  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init):
+	Rebuild the wrapper file every time this proc is called.
+
+2002-05-28  Phil Edwards  
+
+	* testsuite/Makefile.am (noinst_LIBRARIES):  New target.  Pull in
+	CXX/INCLUDES.
+	* testsuite/Makefile.in:  Regenerate.
+	* testsuite/testsuite_hooks.h (gnu_copy_tracker):  Move from
+	list_modifiers.cc and rename from 'T'.  Move code bodies...
+	* testsuite/testsuite_hooks.cc:  ...to here.  New file.
+	* testsuite/23_containers/list_modifiers.cc:  Move 'T' class out.
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3_target_compile):
+	Add libv3test.a to link options.
+
+2002-05-27  Benjamin Kosnik  
+
+	* src/misc-inst.cc: Define unnecessary algorithm
+	instantiations. Break apart instantiations into groupings below.
+	* src/fstream-inst.cc: New.
+	* src/io-inst.cc: New.
+	* src/istream-inst.cc: New.
+	* src/ostream-inst.cc: New.
+	* src/streambuf-inst.cc: New.
+	* src/sstream-inst.cc: New.
+	* src/Makefile.am (sources): Add files.
+	* src/Makefile.in: Regenerate.
+
+	* acinclude.m4: Work around automake 1.4-p5 bug, change
+	AM_GNU_GETTEXT in comments to AM-GNU-GETTEXT.
+
+2002-05-27  Benjamin Kosnik  
+
+	PR libstdc++/6795.
+	* config/os/solaris/solaris2.6/bits/ctype_noninline.h
+	(classic_table): Fix.
+	* config/os/solaris/solaris2.5/bits/ctype_noninline.h: Same.
+
+2002-05-27  Benjamin Kosnik  
+
+	* testsuite/22_locale/ctype_is_wchar_t.cc: Guard with
+	_GLIBCPP_USE_WCHAR_T.
+	* testsuite/22_locale/ctype_narrow_wchar_t.cc: Same.
+	* testsuite/22_locale/ctype_to_wchar_t.cc: Same.
+	* testsuite/22_locale/ctype_widen_wchar_t.cc: Same.
+
+2002-05-26  Carlo Wood  
+	    Paolo Carlini  
+
+	PR libstdc++/6811
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h
+	(__enc_traits::operator=): add missing return statement.
+
+2002-05-24  Phil Edwards  
+
+	PR libstdc++/6282
+	* include/std/std_bitset.h (_Base_biteset<0>):  New specialization.
+	(operator>>):  If nothing was extracted, don't fail in the
+	zero-length case.
+	* testsuite/23_containers/bitset_ctor.cc (test02):  New test.
+
+2002-05-24  Benjamin Kosnik  
+
+	PR libstdc++/6701
+	* testsuite/22_locale/ctype_narrow_char.cc: New.
+	* testsuite/22_locale/ctype_narrow_wchar_t.cc: New.
+	* testsuite/22_locale/ctype_widen_char.cc: New.
+	* testsuite/22_locale/ctype_widen_wchar_t.cc: New.
+	* testsuite/22_locale/ctype_members_char.cc: Move some bits into...
+	* testsuite/22_locale/ctype_is_char.cc: ...this.
+	* testsuite/22_locale/ctype_to_char.cc: ...and this.
+	* testsuite/22_locale/ctype_members_wchar_t.cc: Move some bits into...
+	* testsuite/22_locale/ctype_is_wchar_t.cc: ...this.
+	* testsuite/22_locale/ctype_to_wchar_t.cc: ...and this.
+
+	* testsuite/22_locale/ctype_scan_wchar_t.cc: Should pass.
+
+2002-05-24  Dale Peakall 
+
+	PR libstdc++/6701
+	* config/locale/gnu/ctype_members.cc (ctype::do_narrow): Fix.
+	* config/locale/generic/ctype_members.cc: Same.
+
+2002-05-24  Benjamin Kosnik  
+
+	PR libstdc++/6750
+	* include/bits/ostream.tcc (ostream::operator<<(const char*)): Fix
+	for empty string literal.
+	(ostream::operator<<(const _CharT*)): Same.
+	(ostream::operator<<(const char*)): Same.
+	(ostream::operator<<(streambuf*)): Same.
+	* testsuite/27_io/ostream_inserter_char.cc (test08): Add tests.
+	* testsuite/27_io/ostream_inserter_other.cc (test02): Modify.
+
+2002-05-23  Benjamin Kosnik  
+
+	* configure.in (release_VERSION): Update to 3.1.1.
+	(libtool_VERSION): Update to 4:1:0.
+	* configure: Regenerate.
+
+2002-05-21  Phil Edwards  
+
+	* include/bits/stl_pair.h:  Tweak comment markup.
+
+2002-05-21  Phil Edwards  
+
+	* include/ext/stdio_filebuf.h:  Add header guards.  Doxygenate.
+
+2002-05-21  Phil Edwards  
+
+	* docs/doxygen/user.cfg.in (EXCLUDE):  Add 'CVS'.
+
+2002-05-21  Phil Edwards  
+
+	* include/bits/stl_vector.h:  Reformat to follow C++STYLE.
+	Doxygenate all public members.  Reorder to follow 14882.
+	(vector::push_back(void)):  Remove previously-deprecated fn.
+	(vector::insert(iterator), vector::_M_insert_aux(iterator)):
+	Deprecate for removal in 3.3.
+
+2002-05-20  Phil Edwards  
+
+	* docs/html/faq/index.html (5.4):  Recommend against -I options for
+	finding the ext headers.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2002-05-19  Paolo Carlini  
+
+	* testsuite/23_containers/deque_operators.cc (test01):
+	Fix minor typo in last commit.
+
+2002-05-18  Paolo Carlini  
+
+	PR libstdc++/6503
+	* include/bits/stl_deque.h (_Deque_iterator::operator==,
+	operator!=, operator<, operator>, operator>=, operator<=):
+	Make non-member functions, to allow comparing const and
+	non-const iterators in any order.
+	* testsuite/23_containers/deque_operators.cc: New testfile.
+
+2002-05-16  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update not-a-bug list with basic_file.h.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2002-05-16  Rainer Orth  
+
+	* Makefile.am: Allow for PWDCMD to override hardcoded pwd.
+	* acinclude.m4: Likewise.
+	* docs/html/Makefile: Likewise.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+
+2002-05-15  Loren J. Rittle 
+
+	libstdc++/6641
+	* include/bits/c++config (__USE_MALLOC): Report case where
+	the user improperly defined it on the command line.
+
+2002-05-15  Rainer Orth  
+
+	* testsuite/testsuite_hooks.h (__set_testsuite_memlimit):
+	Retrieve current limits before setting.
+
+2002-05-15  Benjamin Kosnik  
+
+	PR libstdc++/6518
+	* include/bits/ostream.tcc (ostream::operator<<(const char*)): Fix
+	for null case.
+	(ostream::operator<<(const _CharT*)): Same.
+	(ostream::operator<<(const char*)): Same.
+	* testsuite/27_io/ostream_inserter_char.cc (test07): Add test.
+
+2002-05-15  Benjamin Kosnik  
+
+	PR libstdc++/6594
+	* src/strstream.cc (strstreambuf): Fix leak.
+
+2002-05-15  Paolo Carlini  
+
+	PR libstdc++/6648
+	* include/bits/istream.tcc (istream::getline, ignore):
+	Upon __idelim (__delim) call sbumpc() not snextc().
+	* testsuite/27_io/narrow_stream_objects.cc:
+	Add test08 and test09.
+
+2002-05-13  Benjamin Kosnik  
+
+	* testsuite/22_locale/ctype_scan_char.cc: Tweak.
+	* testsuite/22_locale/ctype_scan_wchar_t.cc: New.
+
+	* docs/html/install.html: Fix.
+
+2002-05-13  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc
+	(basic_filebuf::_M_allocate_internal_buffer): Remove extraneous
+	try/catch blocks.
+	* src/localename.cc (locale::_Impl::_M_install_facet): Same.
+
+	* docs/html/install.html: Tweak, add bits about required locales
+	for the 22_locale tests when using the gnu model.
+
+	* testsuite/27_io/istream_sentry.cc: Tweak.
+
+2002-05-13  Kaveh R. Ghazi  
+
+	* config/os/irix/irix5.2/bits/ctype_inline.h (scan_is, scan_not):
+	Fix typo, use this->is() rather than manually (and perhaps
+	incorrectly) inlining it.
+	* config/os/irix/irix6.5/bits/ctype_inline.h (scan_is, scan_not):
+	Likewise.
+	* testsuite/22_locale/ctype_scan_char.cc: New file.
+
+2002-05-13  Paolo Carlini  
+	    Jakub Jelinek  
+
+	* testsuite/22_locale/money_get_members_char.cc
+	(test01, test02, test04): Use the de_DE@euro named locale
+	instead of de_DE to allow for an uniform behaviour with
+	both old and Euro-era localedata; tweak some tests.
+	* testsuite/22_locale/money_get_members_wchar_t.cc
+	(test01, test02, test04): Likewise.
+	* testsuite/22_locale/money_put_members_char.cc
+	(test01, test02, test04): Likewise.
+	* testsuite/22_locale/money_put_members_wchar_t.cc
+	(test01, test02, test04): Likewise.
+
+2002-05-13  Paolo Carlini  
+
+	* testsuite/22_locale/codecvt_members_char_char.cc
+	(test03): Robustify wrt localedata.
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc (test03): Likewise.
+	* testsuite/22_locale/collate_members_char.cc (test04): Likewise.
+	* testsuite/22_locale/collate_members_wchar_t.cc (test04): Likewise.
+	* testsuite/22_locale/ctype_members_char.cc (test05): Likewise.
+	* testsuite/22_locale/ctype_members_wchar_t.cc (test04): Likewise.
+	* testsuite/22_locale/messages_members_char.cc (test03): Likewise.
+	* testsuite/22_locale/money_get_members_char.cc (test08): Likewise.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test08): Likewise.
+	* testsuite/22_locale/money_put_members_char.cc (test07): Likewise.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test07): Likewise.
+	* testsuite/22_locale/moneypunct_members_char.cc (test03): Likewise.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc (test03): Likewise.
+	* testsuite/22_locale/num_get_members_char.cc (test06): Likewise.
+	* testsuite/22_locale/num_get_members_wchar_t.cc (test06): Likewise.
+	* testsuite/22_locale/num_put_members_char.cc (test04): Add comment.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test04): Likewise.
+	* testsuite/22_locale/numpunct_members_char.cc (test03): Likewise.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc (test03): Likewise.
+	* testsuite/22_locale/time_get_members_char.cc (test08): Likewise.
+	* testsuite/22_locale/time_get_members_wchar_t.cc (test08): Likewise.
+	* testsuite/22_locale/time_put_members_char.cc (test04): Likewise.
+	* testsuite/22_locale/time_put_members_wchar_t.cc (test04): Likewise.
+
+2002-05-12  Kaveh R. Ghazi  
+
+	* config/os/irix/irix5.2/bits/os_defines.h: Revert 2002-05-06
+	change.
+
+2002-05-11  John David Anglin  
+
+	* config/os/gnu-linux/bits/os_defines.h (__glibcpp_long_bits): Define
+	to 64 for hppa 64-bit port.
+	(__glibcpp_long_double_bits): Define to 64 for all hppa ports.
+
+2002-05-10  Rainer Orth  
+
+	* acinclude.m4 (enable_symvers): Quote $LD.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+
+2002-05-09  Jakub Jelinek  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Append all
+	multilib dirs containing libgcc_s*.so.1 below gcc object dir to
+	LD_LIBRARY_PATH.
+
+2002-05-08  Alexandre Oliva  
+
+	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
+	script entry, and set LD to it when configuring multilibs.
+	* configure: Rebuilt.
+
+2002-05-07  Mark Mitchell  
+
+	* configure.in: Add support for WindISS.
+	* configure: Regenerated.
+	* configure.target: Add support for WindISS.
+	* config/os/windiss/bits/ctype_base.h: New file.
+	* config/os/windiss/bits/ctype_inline.h: Likewise.
+	* config/os/windiss/bits/ctype_noninline.h: Likewise.
+	* config/os/windiss/bits/os_defines.h: Likewise.
+
+2002-05-06  Paolo Carlini  
+
+	Test all the facets for the temporary "C" locale switch issue.
+	* testsuite/22_locale/codecvt_members_char_char.cc: Add test03.
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc: Likewise.
+	* testsuite/22_locale/collate_members_char.cc: Add test04.
+	* testsuite/22_locale/collate_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/ctype_members_char.cc: Add test05.
+	* testsuite/22_locale/ctype_members_wchar_t.cc: Add test04.
+	* testsuite/22_locale/messages_members_char.cc: Add test03.
+	* testsuite/22_locale/money_get_members_char.cc: Add test08.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/money_put_members_char.cc: Add test07.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/moneypunct_members_char.cc: Add test03.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/num_get_members_char.cc: Add test06.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/numpunct_members_char.cc: Add test03.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/time_get_members_char.cc: Add test08.
+	* testsuite/22_locale/time_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/time_put_members_char.cc: Add test04.
+	* testsuite/22_locale/time_put_members_wchar_t.cc: Likewise.
+
+	* testsuite/22_locale/num_put_members_char.cc (test04): Add comment.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test04): Likewise.
+
+2002-05-06  Kaveh R. Ghazi  
+
+	* config/os/irix/irix5.2/bits/os_defines.h (_SGI_SOURCE,
+	__EXTENSIONS__): Ensure they are always defined.
+
+2002-05-06  Phil Edwards  
+
+	* docs/html/documentation.html:  Fix broken link.
+
+2002-05-04  Benjamin Kosnik  
+	    Paolo Carlini  
+
+	* testsuite/22_locale/num_put_members_char.cc: Add test04(),
+	testing for the locale_facets.tcc entry of the previous commit.
+	* testsuite/22_locale/num_put_members_wchar_t.cc: Likewise.
+
+2002-05-04  Takeshi Kobayakawa  
+
+	* config/locale/generic/c_locale.cc
+	(__convert_to_v(float, double, long double)):
+	Fix the temporary switch to the "C" locale, saving and
+	restoring in the proper way the current locale.
+	* config/locale/generic/time_members.cc
+	(__timepunct::_M_put): Likewise.
+	* config/locale/gnu/messages_members.cc
+	(messages::do_get): Likewise.
+	* config/locale/gnu/messages_members.h
+	(messages<_CharT>::do_get): Likewise.
+	* config/locale/gnu/time_members.cc
+	(__timepunct::_M_put): Likewise.
+	* include/bits/locale_facets.tcc (__convert_from_v): Likewise.
+
+2002-05-04  Kaveh R. Ghazi  
+
+	* configure.in (AC_CHECK_HEADERS): Check for string.h & stdlib.h.
+	* libsupc++/Makefile.am (LTCOMPILE): Add $(DEFS).
+
+	* Makefile.in, config.h.in, configure: Regenerate.
+
+2002-05-03  Benjamin Kosnik  
+
+	PR libstdc++/6549.
+	* include/bits/fstream.tcc (filebuf::_M_underflow_common): Revert.
+	* testsuite/27_io/narrow_stream_objects.cc (test07): Add.
+
+2002-05-03  Kaveh R. Ghazi  
+
+	* config/os/irix/irix5.2/bits/ctype_noninline.h (classic_table):
+	Return __ctype + 1.
+	(ctype:_M_table): Initialize to classic_table(), not __ctype.
+
+2002-05-03  Rainer Orth  
+
+	* configure.in: Update local install.html, configopts.html paths.
+	* configure: Regenerate.
+
+2002-05-02  Kaveh R. Ghazi  
+
+	* config/os/irix/irix5.2/bits/os_defines.h
+	(__glibcpp_long_double_bits, __glibcpp_long_bits): Define.
+
+	* config/os/irix/irix5.2/bits/ctype_inline.h: Cast to unsigned
+	char.
+
+2002-05-02  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update list in #4.1.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2002-05-02  Benjamin Kosnik  
+
+	* docs/html/17_intro/RELEASE-NOTES (New): Update.
+
+2002-05-01  Phil Edwards  
+
+	* include/std/std_bitset.h:  Fix doxygen comments.
+	* docs/html/documentation.html:  Minor tweaks for 3.1.
+	* docs/html/27_io/howto.html:  Likewise.
+	* docs/html/ext/howto.html:  Likewise, mention stdio_filebuf.
+	* docs/html/faq/index.html:  Likewise.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2002-05-01  Benjamin Kosnik  
+
+	PR libstdc++/6533
+	* include/bits/streambuf_iterator.h (istreambuf_iterator::_M_get): New.
+	(istreambuf_iterator::equal): Use it.
+	(istreambuf_iterator::operator*): Use it.
+
+2002-05-01  Paolo Carlini  
+
+	PR libstdc++/6513
+	* include/bits/stl_uninitialized.h
+	(uninitialized_copy(_InputIter, _InputIter, _ForwardIter)):
+	Fix typo in 2001-07-17 commit: typedef _ValueType to
+	iterator_traits<_ForwardIter> not <_InputIter>.
+	* testsuite/23_containers/vector_ctor.cc: Add test04.
+
+2002-04-30  John David Anglin  
+
+	PR libstdc++/6501
+	* include/c_std/std_cctype.h: Include bits/c++config.h.
+	* config/os/hpux/bits/os_defines.h (_SB_CTYPE_MACROS): Define.
+
+2002-04-30  Benjamin Kosnik  
+
+	* include/ext/stdio_filebuf.h: New file.
+	* include/ext/enc_filebuf.h: New file.
+	* config/io/basic_file_stdio.h (__basic_file::sys_open): Add fd ctor.
+	* config/io/basic_file_stdio.cc: Same.
+	* include/bits/fstream.tcc (filebuf::_M_allocate_internal_buffer):
+	Remove _M_unbuf hacks.
+	(filebuf::_M_destroy_internal_buffer): Same.
+	(filebuf::filebuf(cfile, openmode, int_type): Remove definition.
+	(filebuf::fd): Remove.
+	* include/std/std_fstream.h (filebuf::_M_unbuf): Remove.
+	(filebuf::filebuf(__c_file*, openmode, int_type)): Remove.
+	(filebuf::fd): Remove.
+	* src/ios.cc (ios_base::_S_ios_create): Change to use specialized
+	filebufs.
+	(ios_base::_S_ios_destroy): Same.
+	* src/misc-inst.cc (file_filebuf): Add instantiation.
+	* include/Makefile.am (ext_headers): Add ext_filebuf.h,
+	stdio_filebuf.h.  * include/Makefile.in: Regenerate.
+
+2002-04-30  Benjamin Kosnik  
+
+	PR libstdc++/6511
+	* config/os/solaris/solaris2.7/bits/ctype_noninline.h: Fix typo.
+
+2002-04-29  Benjamin Kosnik  
+
+	PR libstdc++/5820
+	* include/bits/fstream.tcc (basic_filebuf::_M_underflow_common):
+	Check for eof.
+	* include/bits/streambuf_iterator.h: Match stream_iterator.h.
+	(istreambuf_iterator::operator++): Invalidate on eof.
+	(istreambuf_iterator::operator++(int)): Same.
+	(istreambuf_iterator::operator*): Same.
+
+2002-04-29  Rainer Orth  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Set all
+	of LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
+	LD_LIBRARY64_PATH.
+
+2002-04-28  Benjamin Kosnik  
+
+	PR libstdc++/5820
+	* config/io/basic_file_stdio.h (__basic_file::sys_getc): Return int.
+	(__basic_file::sys_ungetc): Take int.
+	* config/io/basic_file_stdio.cc (__basic_file::sys_ungetc): Same.
+	* include/bits/fstream.tcc (basic_filebuf::_M_underflow_common):
+	Use sys_getc for unbuffered input.
+	* testsuite/27_io/narrow_stream_objects.cc (test06): New.
+
+	* src/ios.cc (_M_grow_words): Adjust error checking.
+	* testsuite/27_io/ios_base_storage.cc: Same.
+
+2002-04-28  Peter Schmid  
+
+	* include/ext/stl_hashtable.h: Import __iterator_category
+
+2002-04-28  Paolo Carlini  
+	    Peter Schmid  
+
+	* testsuite/ext/hash_set.cc: New testfile.
+
+2002-04-27  Benjamin Kosnik  
+
+	* config/os/solaris/solaris2.5/bits/os_defines.h: Remove
+	_G_USING_THUNKS.
+	* config/os/solaris/solaris2.6/bits/os_defines.h: Same.
+	* config/os/solaris/solaris2.7/bits/os_defines.h: Same.
+
+2002-04-26  Paolo Carlini  
+
+	* include/bits/basic_string.h (replace(__pos, __n1, __s, __n2):
+	Fix and tighten __throw_length_error check.
+	* testsuite/21_strings/replace.cc (test05): New.
+	* testsuite/21_strings/replace.cc (test02, test03, test04): Tweak.
+
+2002-04-23  Loren J. Rittle 
+
+	* include/std/std_fstream.h (basic_filebuf::sync): Hoist
+	unconditional flush on lower-layer handle to here...
+	* include/bits/fstream.tcc (basic_filebuf::_M_really_overflow):
+	...from here.  Optimize remaining _M_file.sync() call pattern.
+	* testsuite/27_io/narrow_stream_objects.cc (test04): New test.
+	(test05): Likewise.
+
+2002-04-23  Jason Merrill  
+
+	* include/bits/fstream.tcc (basic_filebuf::seekoff): Fix for
+	output-only filebufs.
+	* include/std/std_fstream.h (basic_filebuf::_M_set_indeterminate):
+	Likewise.
+	(basic_filebuf::_M_set_determinate): Likewise.
+
+	PR libstdc++/6414
+	* include/bits/fstream.tcc (basic_filebuf::seekoff): Adjust return
+	value properly in the trivial case.
+	* testsuite/27_io/istream_seeks.cc (test04): Make sure that
+	tellg() returns the right value after a read.
+
+2002-04-23  Hans-Peter Nilsson  
+
+	* config/cpu/mmix/bits/cpu_limits.h: New file.
+	* configure.target (CPULIMITSH): Use it.
+
+2002-04-22  Loren J. Rittle 
+
+	* docs/html/17_intro/porting.texi (_GLIBCPP_AVOID_FSEEK): Remove.
+	* docs/html/17_intro/porting.html: Rebuilt.
+
+2002-04-20  Jason Merrill  
+
+	PR libstdc++/4150
+	* include/std/std_streambuf.h (basic_streambuf::_M_set_indeterminate):
+	Move to filebuf.
+	(basic_streambuf::_M_set_determinate): Likewise.
+	(basic_streambuf::_M_is_indeterminate): Likewise.
+	* include/bits/std_fstream.h (basic_filebuf::_M_filepos): New
+	non-static data member.
+	(basic_filebuf::_M_underflow_common): New non-static member function.
+	(basic_filebuf::_M_underflow, _M_uflow): Call it.
+	(basic_filebuf::sync): Avoid useless seeking.
+	(basic_filebuf::_M_set_indeterminate): Move here from streambuf.
+	Set _M_filepos.
+	(basic_filebuf::_M_set_determinate): Likewise.
+	(basic_filebuf::_M_is_indeterminate): Likewise.
+	* include/bits/fstream.tcc (basic_filebuf::_M_really_overflow): Seek
+	back to _M_out_beg if necessary.
+	(basic_filebuf::seekoff): Likewise.
+	(basic_filebuf::_M_underflow_common): Generalization of old
+	underflow().  Don't seek back to _M_in_beg.
+	* src/ios.cc: Lose _GLIBCPP_AVOID_FSEEK stuff.
+	* config/os/solaris/solaris2.?/bits/os_defines.h: Likewise.
+	* config/os/bsd/freebsd/bits/os_defines.h: Likewise.
+	* config/os/mingw32/bits/os_defines.h: Likewise.
+	* testsuite/27_io/filebuf_virtuals.cc (test05): Don't overspecify
+	ungetc test.
+
+2002-04-22  Benjamin Kosnik  
+
+	* include/bits/istream.tcc (istream::read): Fix.
+	* testsuite/27_io/istream_unformatted.cc (main): Add.
+
+2002-04-20  Benjamin Kosnik  
+
+	PR libstdc++/6360
+	* include/bits/istream.tcc (istream::ignore): Streamline, use
+	delimiter as is.
+	* include/bits/streambuf.tcc: Use this->gptr.
+	* testsuite/27_io/istream_unformatted.cc (test08): Add test.
+
+2002-04-18  Benjamin Kosnik  
+
+	* include/bits/localefwd.h (locale::id::_M_id): Do this correctly,
+	as type safety is important, especially on solaris.
+	* include/bits/istream.tcc (istream::read): Clean.
+	(istream::readsome): Same.
+	* locale.cc: Wrap lines.
+
+	* testsuite/21_strings/inserters_extractors.cc: Tweaks.
+	* testsuite/27_io/instantiations.cc (test): Add bool variable...
+	* testsuite/21_strings/capacity.cc: Clean.
+
+2002-04-17  Phil Edwards  
+
+	* docs/doxygen/doxygroups.cc:  New group on binary searching.
+	* include/bits/stl_algo.h:  Document binary searches and merges.
+	* include/bits/stl_deque.h:  The 'map' member is not the 'map' class.
+
+2002-04-17  Phil Edwards  
+
+	* docs/doxygen/mainpage.html:  Doxygen logo is now a PNG file.
+	* docs/doxygen/run_doxygen:  Bump required version.
+	* docs/doxygen/user.cfg.in:  Revert accidental change.
+	* docs/html/faq/index.html:  Reindent a block of links.
+	(4.4):  New note on using dlsym.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2002-04-17  Phil Edwards  
+
+	* testsuite_flags.in (cxxflags):  Also pass @EXTRA_CXX_FLAGS@.
+
+2002-04-17  Benjamin Kosnik  
+
+	* config/linker-map.gnu (__malloc_alloc_template): Add.
+	(__default_alloc_template): Same.
+	* include/bits/stl_alloc.h (__malloc_alloc_template): Add extern
+	template.
+	(__default_alloc_template): Same.
+
+2002-04-17  Benjamin Kosnik  
+
+	* testsuite/27_io/filebuf_virtuals.cc: Add _S_pback_size instantiation.
+
+2002-04-16  Benjamin Kosnik  
+
+	* src/concept-inst.cc (vector): Remove instantiations.
+	* src/stl-inst.cc (vector::_M_insert_aux): Remove instantiation.
+	(__malloc_alloc_template): Conditionalize.
+
+	* include/bits/istream.tcc: Remove sputbackc calls.
+
+	* testsuite/19_diagnostics/stdexceptions.cc: Fix comment.
+
+2002-04-16  Paolo Carlini 
+
+ 	* testsuite/24_iterators/rel_ops.cc: New test.
+
+2002-04-16  Gabriel Dos Reis  
+
+	* include/bits/type_traits.h (__normal_iterator): Declare in
+	__gnu_cxx.  Adjust use at global namespace.
+	* include/bits/stl_iterator.h (__normal_iterator): Move definition
+	into __gnu_cxx::. Add more operator overloads.  Tidy existing ones.
+	* include/bits/basic_string.h (basic_string): Adjust use of
+	__normal_iterator.
+	* include/bits/stl_vector.h (_Alloc>): Likewise.
+	* src/concept-inst.cc (__gnu_cxx): __normal_iterator<> is now here.
+	* src/string-inst.cc (operator==): Instantiate in __gnu_cxx.
+
+2002-04-15  Benjamin Kosnik  
+
+	PR libstdc++/4164
+	Valgrind fixes.
+	* config/io/basic_file_stdio.cc (__basic_file::~__basic_file):
+	Call close.
+	(__basic_file::close): Call fflush. Correct return if fclose ok.
+	(__basic_file::is_open): Make const.
+	Change __c_file_type to __c_file.
+	* config/io/basic_file_stdio.h: Change __c_file_type to __c_file.
+	(__basic_file::is_open): Make const.
+	* config/io/c_io_stdio.h: Change __c_file_type to __c_file.
+	* include/std/std_fstream.h (filebuf::_M_allocate_file): Remove.
+	(filebuf::_M_unbuf): Add.
+	(filebuf::_M_file): Change to non-pointer.
+	(filebuf::_M_allocate_pback_buffer): Remove.
+	* include/bits/fstream.tcc (filebuf::_M_allocate_file): Remove.
+	(filebuf::_M_allocate_internal_buffer): Use _M_unbuf.
+	Change initialization list for _M_file change.
+	(filebuf::_M_allocate_pback_buffer): Remove.
+	Change _M_file usage to reflect non-pointer data member.
+
+	* config/locale/generic/c_locale.cc
+	(locale::facet::_S_create_c_locale): Add parameter.
+	* config/locale/generic/collate_members.cc: Change
+	_M_compare_helper to _M_compare.
+	Change _M_transform_helper to _M_transform.
+	* config/locale/generic/monetary_members.cc: Changeup data types.
+	Add dtors.
+	* config/locale/generic/numeric_members.cc: Add dtors.
+	* config/locale/generic/time_members.cc: Add dtors.
+	* config/locale/gnu/c_locale.cc: Add parameter.
+	* config/locale/gnu/collate_members.cc:Change
+	_M_compare_helper to _M_compare.
+	Change _M_transform_helper to _M_transform.
+	* config/locale/gnu/ctype_members.cc: Better error checking.
+	* config/os/gnu-linux/bits/ctype_noninline.h: Better error checking.
+	* config/locale/gnu/messages_members.cc: Tweak comment.
+	* config/locale/gnu/monetary_members.cc: Change data types.
+	Add dtors.
+	* config/locale/gnu/numeric_members.cc: Add dtors, better error
+	checking.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/locale/ieee_1003.1-2001/c_locale.cc
+	(locale::facet::_S_create_c_locale): Add parameter.
+	* config/locale/ieee_1003.1-2001/c_locale.h: Correct typedef.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Remove
+	bogus ctor.
+
+	* include/bits/locale_facets.h (moneypunct): Use string literals.
+	Don't define dtor.
+	(numpunct): Same.
+	(__timepunct): Same.
+	(locale::_Impl::_M_facets): Change from vector to array.
+	(locale::_Impl::_M_names): Change from array of strings to array
+	of string literals.
+	(locale::facet::_S_create_c_locale): Add parameter.
+	(locale::locale::_S_num_facets): Move to...
+	(locale::_Impl::_M_facets_size): Here.
+	* include/bits/locale_facets.tcc: Fixups for _M_facets, _M_name
+	changes.
+	* include/bits/localefwd.h: (locale::id::_M_id): Add member function.
+	(locale::_Impl::_Impl(facet**, size_t, bool)): Add.
+	(locale::_Impl::_Impl(string, size_t)): Change to
+	(locale::_Impl::_Impl(const char*, size_t)): This.
+
+	* include/bits/streambuf.tcc (streambuf::_S_pback_size): Define.
+	* include/std/std_streambuf.h (streambuf::_M_pback_size): Change to
+	(streambuf::_S_pback_size): This.
+
+	* src/globals.cc: Add pre-allocations for "C" facets.
+	* src/locale-inst.cc: Remove vector instantiations.
+	* src/locale.cc: Remove vector include. Fixups for _M_names,
+	_M_facets changes.
+	* src/localename.cc: Same.
+
+	* include/bits/stl_vector.h: Fix odd formatting.
+
+	* include/bits/basic_string.tcc: Tweak comment.
+
+	* libsupc++/new: Make sure parameters are uglified.
+	* libsupc++/typeinfo: Same.
+
+	* testsuite/22_locale/num_get_members_char.cc: Fixup.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Same.
+	* testsuite/27_io/filebuf_members.cc: Same.
+
+2002-04-12  Steve Ellcey  
+
+	* gcc/libstdc++-v3/config/os/hpux/bits/os_defines.h
+	(strtoll, strtoull): In 64 bit mode HP-UX (IA64 and HPPA)
+	does not define strtoll or strtoull, but does define strtol
+	and strtoul which are the same since in 64 bit mode
+	sizeof(long) == sizeof(long long).
+
+2002-04-12  Phil Edwards  
+
+	* include/std/std_bitset.h:  Doxygenate std::bitset<>.  Clean up
+	trailing spaces, indentation, and macro names.  Make exception
+	messages more informative.
+
+2002-04-11  Richard Henderson  
+
+	* include/bits/fstream.tcc (basic_filebuf<>::open): Fix & ordering.
+	* include/bits/ostream.tcc (basic_ostream<>::operator<<(long)): Same.
+	(basic_ostream<>::operator<<(long long)): Same.
+
+2002-04-11  Richard Henderson  
+
+	* config/linker-map.gnu: Add __gxx_personality_sj0.
+
+2002-04-09  Benjamin Kosnik  
+
+	libstdc++/1072
+	* include/bits/localefwd.h (locale::_Impl::_M_facets): Change from
+	pointer to vector.
+	Remove forward declaration of vector.
+	Include vector.
+	* include/bits/locale_facets.tcc: Remove vector include.
+	(use_locale): Adjust.
+	(has_locale): Adjust.
+	* src/locale.cc: Adjust.
+	* src/localename.cc: Same.
+
+2002-04-09  Benjamin Kosnik  
+	    Richard Henderson  
+
+	* include/bits/sstream.tcc: Clean up bit ops.
+	* include/bits/fstream.tcc: Same.
+
+2002-04-09  Jakub Jelinek  
+
+	* include/bits/locale_facets.h (__num_base::_S_scale_hex): Remove.
+	(__num_base::_S_scale_oct): Remove.
+	* src/locale.cc (__num_base::_S_scale_hex): Remove.
+	(__num_base::_S_scale_oct): Remove.
+
+2002-04-09  Benjamin Kosnik  
+
+	libstdc++/6124
+	* testsuite/23_containers/bitset_members.cc: New test.
+	* include/std/std_bitset.h (_Bit_count::_S_bit_count): Move..
+	(_S_bit_count): Here.
+	(_First_one::_S_first_one): Move...
+	(_S_first_one): Here.
+	Format.
+	* src/bitset.cc: Adjust.
+	* config/linker-map.gnu: Export.
+
+2002-04-08  Benjamin Kosnik  
+
+	libstdc++/5180
+	* include/bits/fstream.tcc (filebuf::seekpos): Fix.
+	* include/std/std_fstream.h: Clean.
+	* include/bits/ostream.tcc: Remove extraneous variables.
+	* include/bits/sstream.tcc (stringbuf::seekoff): Be strict about
+	open modes and which modes.
+	(stringbuf::seekpos): Same.
+	* testsuite/27_io/stringbuf_virtuals.cc: New tests.
+
+2002-04-05  Jonathan Wakely 
+
+	* include/bits/stl_algo.h (unique_copy, __gcd, rotate, rotate_copy,
+	random_shuffle, partition, stable_partition, sort, stable_sort,
+	partial_sort, partial_sort_copy, nth_element):  Doxygenate.
+
+2002-04-05  David S. Miller  
+
+	* config/os/gnu-linux/bits/os_defines.h
+	(__glibcpp_long_double_bits): Set to 64 on 32-bit Sparc.
+
+2002-04-04  Benjamin Kosnik  
+
+	libstdc++/3457
+	via gawrilow@math.tu-berlin.de
+	* acinclude.m4 (version_specific_libs): Fix combo usage with
+	--with-gxx-include-dir.
+	* aclocal.m4: Regenerate.
+	* configure: Same.
+
+2002-04-03  Benjamin Kosnik  
+
+	As per DR 184, libstdc++/3139
+	* include/std/std_limits.h (__glibcpp_bool_digits): Change to 1.
+	(numeric_limits::is_iec559): False.
+	(numeric_limits::is_modulo): False.
+
+	* testsuite/27_io/ios_init.cc: Add instantiations.
+
+2002-04-02  Benjamin Kosnik  
+
+	libstdc++/5268
+	* src/ios.cc: (ios_base::Init::_S_ios_destroy): Remove flush calls.
+	* testsuite/27_io/ios_init.cc (tests04): Add test.
+
+	libstdc++/3983
+	* include/bits/basic_ios.h (basic_ios::_M_get_fctype_ios): Remove.
+	(basic_ios::_M_ios_fctype): Consistently name to _M_fctype.
+	* include/bits/basic_ios.tcc: Same. Remove outdated comments.
+	* include/bits/istream.tcc: Use _M_fctype, make consistent with
+	ostream.
+	* testsuite/27_io/ios_init.cc (tests03): Add test.
+
+2002-04-02  Phil Edwards  
+
+	* include/Makefile.am (install-data-local):  Use mkinstalldirs.
+	* include/Makefile.in:  Regenerate.
+
+2002-04-02  Paolo Carlini  
+	    Nathan Myers  
+	    Philip Martin  
+
+	* include/bits/basic_string.h
+	(replace(i1, i2, _CharT* k1, _CharT* k2),
+	replace(i2, i2, const _CharT* k1, const _CharT* k2),
+	replace(i1, i2, iterator k1, iterator k2,
+	replace(i1, i2, const_iterator k1, const_iterator k2):
+	New specializations to optimize for the common cases of
+	pointers and iterators.
+	(replace(pos, n1, s, n2)): Tweak.
+	* include/bits/basic_string.tcc: Tweak comments.
+	* testsuite/21_strings/replace.cc (test04): New tests.
+
+2002-04-01  Benjamin Kosnik  
+
+	libstdc++/5542
+	* acinclude: More extensive checks for msgfmt, --enable-nls.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2002-04-01  Phil Edwards  
+
+	* libsupc++/exception (__verbose_terminate_handler):  Point to docs.
+	* docs/doxygen/doxygroups.cc:  Doxygen hooks for abi::__cxa_demangle.
+	* docs/html/18_support/howto.html:  Document the demangler.
+	* docs/html/17_intro/howto.html:  And link to it.
+
+	* docs/doxygen/mainpage.html:  Describe user-vs-maintainer docs.
+	* docs/doxygen/run_doxygen:  Print user-vs-maintainer.
+
+2002-04-01  Phil Edwards  
+
+	* config/linker-map.gnu:  Export __verbose_terminate_handler.
+	* libsupc++/Makefile.am (sources):  Add cxa_demangle.c, dyn-string.c.
+	Make new LTCOMPILE variable, use it in new special build rules.
+	* libsupc++/Makefile.in:  Rebuild.
+	* src/vterminate.cc (__verbose_terminate_handler):  Enable use of
+	runtime __cxa_demangle.
+
+	* docs/html/install.html:  Update prereqs and instructions.
+	* docs/html/19_diagnostics/howto.html:  Bring naming for
+	verbose_terminate_handler into line with reality.
+
+2002-04-01  Benjamin Kosnik  
+
+	libstdc++/3129
+	* include/bits/basic_ios.h (basic_ios::_M_exception): Move.
+	(basic_ios::_M_streambuf_state): Move.
+	* include/bits/ios_base (ios_base): To here.
+	* include/bits/ios_base.h (ios_base::_S_local_words): To
+	_S_local_word_size.
+	(ios_base::_M_word_array): To _M_local_word.
+	(ios_base::_M_words_limit): To _M_word_size.
+	(ios_base::_M_words): To _M_word.
+	Comment.
+	* include/bits/basic_ios.tcc: Adjust.
+	* src/ios.cc (ios_base::_M_grow_words): Tweak.
+	* testsuite/27_io/ios_base_storage.cc: Add tests.
+
+	libstdc++/5207
+	Kenny Simpson 
+	* include/bits/ios_base.h: Fix.
+
+	Richard Henderson  
+	* include/bits/ostream.tcc (ostream::operator<<(_CharT)): Correct
+	last change.
+
+	* include/bits/basic_string.h: Tweak formatting.
+
+2002-04-01  Paolo Carlini  
+
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h
+	(codecvt::do_out, codecvt::do_unshift, codecvt::do_in):
+	By definition, sizeof(char) == 1.
+	* include/bits/locale_facets.tcc (money_get::do_get,
+	money_put::do_put): Ditto.
+	* testsuite/21_strings/inserters_extractors.cc
+	(test04): Ditto.
+
+2002-03-30  Richard Henderson  
+
+	PR c++/3719
+	* libsupc++/eh_personality.cc (__cxa_call_unexpected): Copy handler
+	data out of the exception struct before calling unexpectedHandler.
+
+2002-03-28  Roger Sayle  
+
+	* include/c_std/std_cmath.h:  To prevent problems overloading
+	g++ builtins, use the double variants from the global namespace
+	before defining float and long double variants in std::.
+
+2002-03-28  Loren J. Rittle 
+
+	* testsuite/18_support/numeric_limits.cc (test_extrema): Fix typo.
+
+2002-03-28  Paolo Carlini  
+
+	* testsuite/24_iterators/istream_iterator.cc
+	(test02): New tests.
+
+2002-03-28  Ulrich Weigand  
+	    Paolo Carlini  
+
+	* testsuite/22_locale/codecvt_members_unicode_wchar_t.cc
+	(test01): Protect the test with _GLIBCPP_USE_WCHAR_T;
+	fix i_lit_base e_lit_base arrays, making them independent
+	from the endianness of the platform; tweak UCS4 to UCS-4BE.
+
+2002-03-27  Benjamin Kosnik  
+
+	* include/bits/ostream.tcc (ostream::operator<<(_CharT)): Always
+	allocate at least a byte.
+
+	* testsuite/18_support/numeric_limits.cc (test_extrema): Make
+	debugger-friendly.
+	* testsuite/27_io/streambuf.cc (test07): Fix.
+	(test06): Enable.
+
+2002-03-27  Phil Edwards  
+
+	* docs/doxygen/Intro.3:  Date tweak.
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/doxygroups.cc:  Point to tables.html.
+	* docs/doxygen/mainpage.html:  Date tweak.
+	* docs/doxygen/run_doxygen:  Version tweak.  Copy tables.html over.
+	* docs/doxygen/tables.html:  Fill in the blanks.
+
+	* docs/doxygen/user.cfg.in (ALIASES):  Remove maint and endmaint.
+	* include/bits/stl_algo.h:  Likewise; use expanded form.
+	* include/bits/stl_alloc.h:  Likewise.
+	* include/bits/stl_construct.h:  Likewise.
+	* include/bits/stl_deque.h:  Likewise.
+	* include/bits/stl_iterator_base_types.h:  Likewise.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_relops.h:  Likewise.
+	* include/bits/stl_tempbuf.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+	* include/std/std_memory.h:  Likewise.
+
+	* include/bits/stl_deque.h:  Point into tables.html and add @ingroup.
+	* include/bits/stl_list.h:  Likewise.
+	* include/bits/stl_vector.h:  Likewise.
+
+2002-03-26  Benjamin Kosnik  
+
+	* include/c/: Guard with _CPP_.
+	* include/c_std/: Same.
+	* include/Makefile.am: Fixup install, link routines for null
+	c_base_headers_extra scenarios.
+	* include/Makefile.in: Regerate.
+
+2002-03-25  Paolo Carlini 
+	    Richard Henderson  
+
+	* testsuite/22_locale/codecvt_members_unicode_char.cc
+	(test01, test02): make sure that the i_lit_base array
+	is sufficiently aligned.
+
+2002-03-25  Benjamin Kosnik  
+
+	* config/os/newlib/bits/ctype_noninline.h (ctype::classic): Set to
+	_ctype_.
+
+2002-03-25  Paolo Carlini  
+
+	* testsuite/22_locale/collate_byname.cc
+	(test01): compare the result of collate::compare with
+	that of collate::transform + string::compare, not with
+	that of collate::transform + collate::compare; values
+	returned by collate::compare are normalized, therefore
+	test against +-1.
+
+2002-03-25  Benjamin Kosnik  
+	    Jakub Jelinek  
+
+	* config/locale/gnu/messages_members.h: Correct conditional.
+	* config/locale/gnu/messages_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+
+2002-03-25  Ulrich Weigand  
+	    Paolo Carlini  
+
+	* testsuite/22_locale/codecvt_members_unicode_char.cc
+	(test01, test02): Fix i_lit_base arrays, making them
+	independent from the endianness of the platform.
+
+2002-03-22  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_COMPLEX_MATH_SUPP): Just test for
+	signbit and __signbit directly.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+	* libmath/Makefile.am: Simplify.
+	* libmath/Makefile.in: Regenerate.
+	* include/c_std/std_cmath.h: Update paths for include of cmath.tcc.
+
+	* include/Makefile.am: Clean up handling of extra "C" header files.
+	Add hooks for "C" compatibility headers.
+	* include/Makefile.in: Regenerate.
+
+	* include/c/*: Formatting tweaks, cleanups.
+	* include/c_std/*: Same.
+
+2002-03-22  Benjamin Kosnik  
+
+	* config/locale/gnu/messages_members.h: Add __uselocale bits.
+	* config/locale/gnu/messages_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+
+2002-03-22  Benjamin Kosnik  
+
+	* src/vterminate.cc: Format, -fno-exceptions cleanup.
+
+2002-03-21  Rainer Orth  
+
+	* acinclude.m4 (GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3): New.
+	(GLIBCPP_CONFIGURE_TESTSUITE): Use it to check for setenv.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+
+2002-03-19  Paolo Carlini  
+	    Ulrich Drepper  
+
+	* src/locale-inst.cc (__convert_from_v): Add an additional
+	__size parameter in the declarations.
+	* include/bits/locale_facets.tcc
+	(__convert_from_v): When available (that is,
+	_GLIBCPP_USE_C99 defined) use snprintf instead of sprintf.
+	(num_put::_M_convert_float): Depending on _GLIBCPP_USE_C99
+	being defined or not, call and use __convert_from_v in the
+	appropriate way.
+	(num_put::_M_convert_int): Same here.
+	(money_put::do_put(long double)): Same here.
+
+2002-03-19  Phil Edwards  
+
+	* docs/html/faq/index.html (#3.6):  Rewrap and close  tags.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2002-03-19  Steve Ellcey  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS): Define
+	GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS to set LIBUNWIND_FLAG if
+	--enable-libunwind-exceptions is set.
+	* configure.in (GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS): Call new
+	macro to check for libunwind.
+	* configure: Regenerate.
+	* src/Makefile.am (libstdc___la_LDFLAGS): Add
+	LIBUNWIND_FLAG to libstdc link line.
+	* src/Makefile.in: Regenerate.
+
+2002-03-19  Benjamin Kosnik  
+
+	* docs/html/faq/index.html: Add OS X workaround.
+	* docs/html/17_intro/TODO: Update.
+
+2002-03-18  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc
+	(money_put::do_put(long double)): Fix dimensioning of
+	temporary buffers to avoid risk of overruns.
+	(money_put::do_put(string)): Same for the buffer used to
+	add the grouping chars.
+	* testsuite/22_locale/money_put_members_char.cc: Add test06.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Ditto.
+
+	* include/bits/locale_facets.tcc
+	(collate::do_transform): Simplify.
+
+2002-03-18  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE):  Make indentation/spacing uniform.
+	* configure.in:  Add comments pointing the way for autoconf 2.5x.
+	* aclocal.m4, config.h.in, configure:  Regenerate.
+
+2002-03-18  Philipp Thomas  
+
+	* include/backward/hash_map.h: hash, hashtable, hash_map and
+	hash_multimap are in namespace __gnu_cxx.
+	include/backward/hash_set.h: hash, hashtable, hash_set and
+	hash_multiset are in namespace __gnu_cxx.
+	include/backward/hashtable.h: hash and hashtable are in
+	namespace __gnu_cxx.
+	include/backward/rope.h: char_producer, sequence_buffer,
+	rope, crope and wrope are in namespace __gnu_cxx.
+	include/backward/slist.h: slist is in namespace __gnu_cxx.
+	* testsuite/backward/header_hash_map_h.cc
+	testsuite/backward/header_hash_set_h.cc
+	testsuite/backward/header_hashtable_h.cc
+	testsuite/backward/header_rope_h.cc
+	testsuite/backward/header_slist_h.cc
+	testsuite/backward/header_tempbuf_h.cc: New tests for
+	checking that we're using the correct namespace.
+
+2002-03-17  Jason Merrill  
+
+	PR c++/4381
+	* libsupc++/eh_personality.cc (get_adjusted_ptr): New static fn.
+	(check_exception_spec): Call it.  Take the thrown pointer.
+	(__cxa_call_unexpected): Pass it.
+	(PERSONALITY_FUNCTION): Likewise.  Use get_adjusted_ptr.
+
+2002-03-15  Anthony Green  
+
+	* configure.in: Remove useless is_mingw32.
+	* configure: Rebuilt.
+
+2002-03-15  Paolo Carlini  
+
+	* testsuite/22_locale/collate_members_char.cc
+	(test01): compare the result of collate::compare with
+	that of collate::transform + string::compare, not with
+	that of collate::transform + collate::compare.
+	(test01): values returned by collate::compare are
+	normalized, therefore test against +-1.
+	* testsuite/22_locale/collate_members_wchar_t.cc: Ditto.
+
+2002-03-12  Loren Rittle  
+
+	reported by Peter Schmid 
+	* testsuite/thread/pthread4.cc: Lower nominal iteration counter.
+
+2002-03-12  Benjamin Kosnik  
+	    Per Liboriussen  
+
+	* config/os/gnu-linux/bits/ctype_noninline.h: Cast to
+	unsigned char.
+	* config/os/gnu-linux/bits/ctype_inline.h: Same.
+
+	* config/os/irix/irix6.5/bits/ctype_inline.h: Same.
+
+	* config/os/solaris/solaris2.5/bits/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.5/bits/ctype_noninline.h: Same.
+
+	* config/os/solaris/solaris2.6/bits/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.6/bits/ctype_noninline.h: Same.
+
+	* config/os/solaris/solaris2.7/bits/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.7/bits/ctype_noninline.h: Same.
+
+	* testsuite/22_locale/ctype_members_char.cc (main): Add tests.
+
+2002-03-12  Benjamin Kosnik  
+
+	* include/bits/basic_string.tcc (string::_S_construct(_InIter,
+	_InIter, const _Alloc&, forward_iterator_tag): Check for null.
+	(string::basic_string(const _CharT* __s, const _Alloc& __a)): Same.
+	* testsuite/21_strings/ctor_copy_dtor.cc (test01): Re-enable, now
+	that memory limits are in place.
+	(test03): Add tests.
+
+2002-03-11  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Check for wctype.h.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* include/c_std/std_cwctype.h: Guard.
+
+2002-03-11  Chris Demetriou  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS): Enhance check for
+	whether GLIBCPP_CHECK_LINKER_FEATURES has been used.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2002-03-11  Benjamin Kosnik  
+
+	* include/bits/stl_bvector.h: Fix warning.
+
+2002-03-11  Richard Henderson  
+
+	* include/bits/stl_bvector.h (_Bit_type): New.  Use throughout.
+
+2002-03-11  Phil Edwards  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-list-sourcefiles):
+	New function.  Build the list of tests to run in testsuite_files.
+	* testsuite/libstdc++-v3.dg/dg.exp:  Use it.
+
+2002-03-11  Phil Edwards  
+
+	* testsuite/21_strings/capacity.cc:  Only explicitly instantiate on
+	platforms with no weak support.
+	* testsuite/27_io/ios_init.cc:  Likewise.
+
+2002-03-10  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_put::do_put):
+	Consider sizeof(char_type) in allocating the buffer.
+
+	* include/bits/locale_facets.tcc (collate::do_tranform):
+	Remove redundant variable.
+
+2002-03-10  Ulrich Drepper  
+	    Paolo Carlini  
+
+	* config/locale/generic/collate_members.cc
+	(collate::_M_compare_helper): normalize
+	values returned by strcoll and wcscoll.
+	* config/locale/gnu/collate_members.cc
+	(collate::_M_compare_helper): ditto
+	for __strcoll_l and __wcscoll_l.
+
+2002-03-10  Anthony Green  
+
+	* configure.in: Support cross builds to mingw32 target.
+	* configure: Rebuilt.
+
+2002-03-09  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (collate::do_transform):
+	Rewrite to fix problems with long transformed strings.
+
+2002-03-08  Benjamin Kosnik  
+
+	* c_locale_generic.cc: Move to...
+	* generic/c_locale.cc
+	* c_locale_generic.h: Move to...
+	* generic/c_locale.h
+	* codecvt_specializations_generic.h: Move to...
+	* generic/codecvt_specializations.h
+	* collate_members_generic.cc: Move to...
+	* generic/collate_members.cc
+	* ctype_members_generic.cc: Move to...
+	* generic/ctype_members.cc
+	* messages_members_generic.cc: Move to...
+	* generic/messages_members.cc
+	* messages_members_generic.h: Move to...
+	* generic/messages_members.h
+	* moneypunct_members_generic.cc: Move to...
+	* generic/monetary_members.cc
+	* numpunct_members_generic.cc: Move to...
+	* generic/numeric_members.cc
+	* time_members_generic.cc: Move to...
+	* generic/time_members.cc
+	* c_locale_gnu.cc: Move to...
+	* gnu/c_locale.cc
+	* c_locale_gnu.h: Move to...
+	* gnu/c_locale.h
+	* collate_members_gnu.cc: Move to...
+	* gnu/collate_members.cc
+	* ctype_members_gnu.cc: Move to...
+	* gnu/ctype_members.cc
+	* messages_members_gnu.cc: Move to...
+	* gnu/messages_members.cc
+	* messages_members_gnu.h: Move to...
+	* gnu/messages_members.h
+	* moneypunct_members_gnu.cc: Move to...
+	* gnu/monetary_members.cc
+	* numpunct_members_gnu.cc: Move to...
+	* gnu/numeric_members.cc
+	* time_members_gnu.cc: Move to...
+	* gnu/time_members.cc
+	* c_locale_ieee_1003.1-200x.cc: Move to...
+	* ieee_1003.1-2001/c_locale.cc
+	* c_locale_ieee_1003.1-200x.h: Move to...
+	* ieee_1003.1-2001/c_locale.h
+	* codecvt_specializations_ieee_1003.1-200x.h: Move to...
+	* ieee_1003.1-2001/codecvt_specializations.h
+	* messages_members_ieee_1003.1-200x.cc: Move to...
+	* ieee_1003.1-2001/messages_members.cc
+	* messages_members_ieee_1003.1-200x.h: Move to...
+	* ieee_1003.1-2001/messages_members.h
+
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Make consistent.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* src/Makefile.am (sources): Change to monetary and numeric.
+	* src/Makefile.in: Regenerate.
+	* docs/html/configopts.html: Update to ieee_1003.1-2001.
+
+2002-03-08  scott snyder  
+
+	libstdc++/5875
+	* include/bits/locale_facets.tcc (num_put::_M_convert_float):
+	Allow one more digit of precision.
+	* testsuite/27_io/ostream_inserter_arith.cc: Test that we can
+	write a double and read back in the same value.
+
+2002-03-08  Benjamin Kosnik  
+
+	* include/std/std_limits.h: Move static const data members out of
+	generic template, into base class __numeric_limits_base.
+	* src/limits.cc: Add definitions.
+	* config/linker-map.gnu: Add __numeric_limits_base.
+	* testsuite/18_support/numeric_limits.cc: Declare test in scope.
+
+2002-03-07  Benjamin Kosnik  
+
+	* include/bits/stl_alloc.h: Add extern implicit allocator
+	instantiations.
+	* include/bits/basic_string.tcc: Tweak.
+	* include/bits/locale_facets.tcc: Remove default args. Add
+	has_facet, use_facet extern instantiations.
+	* src/stl-inst.cc: Add explicit instantiation.
+	* src/locale-inst.cc: Clean. Remove locale member template
+	instantiations.
+
+	* testsuite/22_locale/operators.cc (test02): Enable.
+
+2002-03-06  Benjamin Kosnik  
+	    Stephen M. Webb  
+
+	* include/bits/stl_tree.h (_S_rb_tree_red): Make enum.
+	(_S_rb_tree_black): Make enum.
+	Clean. Format.
+	* include/bits/stl_bvector.h (__WORD_BIT): To _M_word_bit, enum.
+	* include/bits/stl_algo.h (__stl_chunk_size): _M_chunk_size, enum.
+	(__stl_threshold): _M_threshold, enum.
+	* src/stl-inst.cc: Same.
+	* config/linker-map.gnu: Remove.
+
+	* testsuite/23_containers/vector_bool.cc: New.
+
+2002-03-06  Phil Edwards  
+
+	* docs/doxygen/user.cfg.in:  Also document deprecated entries.
+	* docs/html/Makefile:  Example rule to rebuild porting-howto.html.
+	* docs/html/17_intro/howto.html:  "gcc"->"GCC" changes, when
+	referring to the collection as a whole.  New section on which macros
+	can be redefined by the user.
+	* docs/html/19_diagnostics/howto.html:  Update note for concepts.
+	* docs/html/20_util/howto.html:  Update link to SGI.
+	* docs/html/faq/index.html:  Update snapshot versions.  New entry
+	on why g++ (but not gcc) must currently predefine certain macros.
+	* docs/html/faq/index.txt:  Regenerated.
+
+	* include/bits/basic_string.h (basic_string::_S_construct):  Fix
+	names in declaration.
+	(basic_string::compare):  These are no longer optional.
+	* include/bits/ostream.tcc:  Tweak closing brace placement.
+	* include/bits/stl_algo.h:  Lots of initial doxygen comment hooks.
+	* include/std/std_sstream.h:  Fix typo in comment.
+	* include/bits/locale_facets.tcc:  Remove unneeded header inclusion.
+	* src/locale.cc:  Likewise.
+
+2002-03-06  Phil Edwards  
+
+	PR libstdc++/5734
+	* include/bits/stl_vector.h (vector::push_back()):  Guard with
+	_GLIBCPP_DEPRECATED.
+
+2002-03-06  Phil Edwards  
+
+	* include/bits/c++config:  Fix misplaced leading blanks on first line.
+
+2002-03-05  Benjamin Kosnik  
+
+	* docs/html/17_intro/RELEASE-NOTES: Fix usage.
+	* README (libmath): Make clear.
+
+2002-03-05  Jakub Jelinek  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS): Check for version
+	script globbing in ld.
+	* aclocal.m4: Rebuilt.
+	* configure: Rebuilt.
+
+2002-03-05  Benjamin Kosnik  
+
+	* docs/html/17_intro/RELEASE-NOTES: Update.
+	* README: Format subdirectories.
+
+2002-03-05  Paolo Carlini  
+
+	libstdc++/5816
+	* include/bits/locale_facets.tcc
+	(num_get::_M_extract_float): Fix the parsing of __dec, since
+	the standard prescribes that if no grouping characters are
+	seen, no grouping check is applied.
+	* testsuite/22_locale/num_get_members_char.cc: Add test05
+	distilled from the PR.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Ditto.
+
+2002-03-04  Craig Rodrigues  
+
+	* docs/html/17_intro/porting-howto.xml: Refer to
+	http://www.oasis-open.org for docbookx.dtd.
+	* docs/html/17_intro/porting-howto.html: Regenerated.
+
+2002-03-03  Phil Edwards  
+
+	PR libstdc++/3955
+	* include/std/std_sstream.h:  Remove trailing spaces.
+	(basic_stringbuf::_M_stringbuf_init):  Also check for ios_base::app.
+	* testsuite/27_io/stringbuf.cc (test05, test06):  New tests.
+
+2002-03-02  Paolo Carlini  
+
+	* testsuite/22_locale/num_get_members_char.cc (test04):
+	Use a named locale expecting grouping (de_DE).
+	* testsuite/22_locale/num_get_members_wchar_t.cc (test04):
+	Ditto.
+	* testsuite/27_io/ios_manip_basefield.cc (test01):
+	Extend coverage, uniform treatment of hexs and octs.
+
+2002-02-28  Richard Henderson  
+
+	* config/linker-map.gnu: Export operator new with unsigned long,
+	and with std::nothrow_t.  Likewise operator delete.
+
+2002-02-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int):
+	Admit grouping for octals and hexadecimals too.
+	* testsuite/22_locale/num_get_members_char.cc: Add test04.
+	(test01): Tweak "." -> "," in void* test.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Ditto.
+
+	* testsuite/27_io/ios_manip_basefield.cc: Remove static keyword.
+	* testsuite/27_io/ios_manip_fmtflags.cc: Remove two of them.
+
+2002-02-27  Paolo Carlini  
+
+	* testsuite/27_io/ios_manip_basefield.cc (test01):
+	Fix for 64 bit machines.
+
+2002-02-26  Benjamin Kosnik  
+
+	libstdc++/3983
+	* include/bits/basic_ios.tcc (basic_ios::init): Set _M_fill to zero.
+	Adjust comment.
+	* include/bits/basic_ios.h (basic_ios::_M_fill): Make mutable.
+	(basic_ios::_M_fill_init): New.
+	(basic_ios::fill()): Delay dealing with _M_fill.
+	Adjust comment.
+	* ios.cc (ios_base::ios_base()): Initialize _M_callbacks, _M_words.
+	(ios_base::_M_call_callbacks): Adjust.
+	* testsuite/27_io/ios_init.cc (test02): Adjust testcase.
+
+2002-02-26  Loren Rittle  
+
+	* include/Makefile.am (thread_target_headers): Unconditionally
+	stage and install gthr-posix.h.
+	(${target_builddir}/gthr-posix.h): New rule cloned off
+	${target_builddir}/gthr-default.h.
+	(${target_builddir}/gthr-default.h): Support chained inclusion
+	of gthr support headers.
+	* include/Makefile.in: Rebuilt.
+
+2002-02-26  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put::_M_widen_int):
+	Group all the integral types, not only decs.
+	* testsuite/27_io/ios_manip_basefield.cc (test01): Tweak existing
+	tests, add a few more.
+
+2002-02-25  Benjamin Kosnik  
+
+	* src/ios.cc (ios_base::~ios_base): Tweak.
+	(ios_base::_M_call_callbacks): Deal with null __p.
+	(ios_base::ios_base): Set _M_callbacks.
+	* include/bits/basic_ios.tcc (basic_ios::init): Adjust comment.
+	* testsuite/27_io/ios_init.cc (test02): Fix.
+
+	* mkcheck.in (static_fail): Failed links go to output file.
+
+2002-02-25  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2002-02-22  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS):  Fix comment.
+	* aclocal.m4:  Regenerate.
+	* docs/html/configopts.html:  Document --enable-symvers.
+	* config/linker-map.gnu:  Break libsupc++ symbols out to their own tag.
+
+2002-02-22  Philipp Thomas  
+
+	* include/backward/tempbuf.h: get_temporary_buffer and
+	return_temporary_buffer are in namespace std, not in __gnu_cxx.
+
+2002-02-21  Benjamin Kosnik  
+
+	* configure.in (target_alias): Default to yes.
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS): Add check for shared
+	libgcc to default case.
+
+2002-02-20  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES):  Also check version.
+	(GLIBCPP_ENABLE_SYMVERS):  Redo logic, use linker version.
+	* configure.in (GLIBCPP_ENABLE_SYMVERS):  Move later in the script.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+	* config/linker-map.dummy:  New file.  Contains nothing useful.
+
+2002-02-20  Benjamin Kosnik  
+
+	* testsuite/22_locale/money_put_members_char.cc: Fix.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Fix.
+
+	* testsuite/27_io/standard_manipulators.cc: New file.
+
+	* testsuite/27_io/ios_manip_basefield.cc: Check results, now failing.
+	* testsuite/27_io/ios_manip_fmtflags.cc: Use locale::classic().
+
+2002-02-20  Danny Smith  
+
+	* config/os/mingw32/bits/ctype_noninline.h
+	(ctype::ctype): Remove default args from parm list.
+	* config/os/djgpp/bits/ctype_noninline.h: Same.
+
+2002-02-19  Benjamin Kosnik  
+
+	* include/std/std_iomanip.h: Inline, tweaks.
+	* config/linker-map.gnu: Remove hacks.
+
+	* testsuite/21_strings/capacity.cc: Add explicit instantiations.
+	* testsuite/27_io/ios_init.cc: Same.
+	* testsuite/22_locale/money_get_members_char.cc (test07): Fix.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test07): Same.
+
+2002-02-19  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Export global vtable, typeinfo, guard
+	variable, and thunk info as per CXXABI docs.
+
+2002-02-19  Loren Rittle 
+
+	* include/Makefile.am: Use CONFIG_HEADER instead of ad hoc names.
+	* include/Makefile.in: Rebuilt.
+
+2002-02-18  Peter Schmid  
+
+	* testsuite/22_locale/collate_byname.cc (test01): Replace size4
+	  with size3 for the string collations of str5.
+
+2002-02-18  Paolo Carlini  
+
+	libstdc++/5708
+	* include/bits/locale_facets.tcc (money_put::do_put):
+	For the space field use __fill instead of ' ', uniformly.
+	* testsuite/22_locale/money_put_members_char.cc:
+	Add test05 distilled from PR.
+	(test01-02-03): Trim some '*' to ' '.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Ditto.
+
+2002-02-18  Loren Rittle 
+
+	libstdc++/5697
+	* include/Makefile.am (thread_builddir): Remove (map all
+	existing uses to target_builddir).
+	(thread_headers): Rename to...
+	(thread_target_headers): ...this.
+	(stamp-thread): Remove.
+	(stamp-target): Correctly state the position as built.
+	Update all dependencies to match the new reality.  Remove all
+	dependency calculations on directories.
+	* include/Makefile.in: Rebuilt.
+
+2002-02-16   Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc: Add pragma GCC system_header.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/basic_ios.tcc: Same.
+	* include/bits/basic_string.tcc: Same.
+
+2002-02-15  Benjamin Kosnik  
+
+	* include/std/std_iosfwd.h: Don't guard typedefs with
+	_GLIBCPP_USE_WCHAR_T
+	* include/bits/stringfwd.h: Same.
+
+2002-02-15  Benjamin Kosnik  
+
+	* src/locale.cc (moneypunct_byname): Remove definitions.
+	* include/std/std_streambuf.h (streambuf::operator=): Return.
+
+2002-02-15  Benjamin Kosnik  
+
+	Tune for size.
+	* src/string-inst.cc (string::_Rep::_S_terminal): Remove redundant
+	explicit instantiation.
+	(string::_Rep::_S_max_size): Same.
+	* include/bits/basic_string.tcc: Add extern explicit
+	instantiations for string, wstring.
+	* include/bits/basic_ios.tcc: Add extern explicit instantiations
+	for ios, wios.
+	* include/bits/streambuf.tcc: Same, for streambuf, wstreambuf.
+	* include/bits/istream.tcc: Same, for istream, wistream.
+	* include/bits/ostream.tcc: Same for ostream, wostream, iostream,
+	wiostream.
+	* include/bits/sstream.tcc: Same, for stringbuf, wstringbuf,
+	istringstream, wistringstream, ostringstream, wostringstream,
+	stringstream, wstringstream.
+	* include/bits/fstream.tcc: Same, for filebuf, wfilebuf, ifstream,
+	wifstream, ofstream, wofstream, fstream, wfstream.
+	* src/misc-inst.cc: Correct comments.
+	Add iomanip instantiations for wide streams.
+	* include/std/std_iomanip.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+
+	* include/std/std_streambuf.h: Correct
+	_GLIBCPP_FULLY_COMPLIANT_HEADERS guard.
+	* include/std/std_sstream.h: Same.
+	* include/std/std_ostream.h: Same.
+	* include/std/std_istream.h: Same.
+	* include/std/std_fstream.h: Same.
+
+	* include/std/std_streambuf.h: Add definitions for private copy
+	ctor and assignment operator.
+	* include/std/std_istream.h: Remove declared but undefined copy
+	ctor and assignment operator. This is taken care of in ios_base,
+	so adding it in the derived class as well is superfluous.
+	* include/std/std_ostream.h: Same.
+
+	* include/bits/basic_ios.h (basic_ios::clear): Don't inline.
+	* include/bits/basic_ios.tcc (basic_ios::clear): Move definition here.
+
+2002-02-14  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Change tag from GCC_3.1 to GLIBCPP_3.1.
+	Add typeinfo bits. Smooth.
+	* aclocal.m4: Regenerate.
+	* configure: Same.
+	* src/Makefile.in: Same.
+
+2001-02-14  Joel Sherrill  
+
+	* config/cpu/m68k/bits/atomicity.h: Corrected for RTEMS targets
+	which do not have a CAS instruction.
+
+2002-02-14  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_SYMVERS):  New macro, initial revision.
+	* configure.in:  Call it.
+	* config/linker-map.gnu:  New file, initial incomplete revision.
+	* src/Makefile.am:  Optionally pass version script to the linker.
+	* aclocal.m4:  Regenerate.
+	* configure:  Regenerate.
+	* src/Makefile.in:  Regenerate.
+
+2002-02-13  Benjamin Kosnik  
+
+	* src/localename.cc: Remove stdexcept include.
+	* src/locale-inst.cc: Same.
+	* src/locale.cc: Same.
+	* src/functexcept.cc: Remove string includes.
+	* include/std/std_bitset.h: Remove stdexcept include.
+	* testsuite/23_containers/bitset_members.cc: Add stdexcept.
+	* testsuite/23_containers/bitset_ctor.cc: Same.
+
+2002-02-11  Benjamin Kosnik  
+
+	* include/bits/stl_algo (__stl_threshold): Declare external.
+	(__stl_chunk_size): Same.
+	* include/bits/stl_bvector.h (__WORD_BIT): Same.
+	* include/bits/stl_tree.h (_S_rb_tree_red): Same.
+	(_S_rb_tree_black): Same.
+	* src/stl-inst.cc (__stl_threshold): Define.
+	(__stl_chunk_size): Same.
+	(__WORD_BIT): Same.
+	(_S_rb_tree_red): Same.
+	(_S_rb_tree_black): Same.
+
+	* config/io/basic_file_libio.h (__basic_file): Add declarations.
+	* include/bits/basic_file.h: Remove.
+	* config/io/c_io_stdio.h: Remove _GLIBCPP_BASIC_FILE_ENCAPSULATION
+	Declare generic types, specialization.
+	* config/io/basic_file_stdio.cc: Definitions.
+	* config/io/c_io_libio.h: Remove _GLIBCPP_BASIC_FILE_INHERITANCE.
+	Declare generic types.
+	* include/Makefile.am (bits_headers): Remove basic_file.h.
+	(extra_target_headers): Change basic_file_model.h to basic_file.h.
+	(stamp-target): Same.
+
+	* include/bits/stl_alloc.h: Tweaks.
+	* include/bits/localefwd.h: Same.
+
+2002-02-11  Aaron W LaFramboise  
+
+	* include/bits/locale_facets.tcc (collate::do_hash): Fix.
+	* testsuite/22_locale/collate_members_char.cc (test03): New test.
+	* testsuite/22_locale/collate_members_wchar_t.cc (test03): Same.
+
+2002-02-10  Phil Edwards  
+
+	* include/bits/stl_algo.h (transform (both signatures), generate_n):
+	Use __typeof__ in concept checks.
+
+2002-02-10  Jonathan Wakely  
+
+	* include/bits/stl_algo.h (__median, for_each, find, find_if,
+	adjacent_find, count, count_if, search, search_n, swap_ranges,
+	transform, replace, replace_if, replace_copy, replace_copy_if,
+	generate, generate_n, remove_copy, remove_copy_if, remove, remove_if,
+	unique, unique_copy, reverse, reverse_copy):  Doxygenate.
+
+2002-02-08  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h
+	(numpunct<_CharT>::_M_initialize_numpunct): Remove definition.
+	(__timepunct<_CharT>::_M_initialize_timepunct): Same.
+	(__timepunct<_CharT>::_M_put_helper): Same.
+	(moneypunct<_CharT, _Intl>::_M_initialize_moneypunct): Same.
+
+	* include/bits/fstream.tcc (filebuf::underflow): Remove
+	__codecvt_type typedef.
+	(filebuf::_M_convert_to_external): Same.
+
+2002-02-08  Phil Edwards  
+
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/doxygroups.cc:  Tweak __gnu_cxx description.
+	* docs/doxygen/mainpage.html:  Add TODO list link.
+	* docs/doxygen/user.cfg.in:  Add @doctodo hook.
+	* docs/doxygen/tables.html:  New file, emoty structure only.
+
+	* include/bits/stl_iterator.h:  Doxygenate just about everything.
+	* include/bits/stl_iterator_base_funcs.h:  Ditto, clean up spaces.
+	* include/bits/stl_iterator_base_types.h:  Add notes.
+
+2002-02-07  Stephan Buys  
+
+	* include/bits/stl_map.h:  Tweak doxygen markup.
+	* include/bits/stl_multimap.h:  Doxygenate and remove extra spaces.
+	* include/bits/stl_vector.h:  Likewise.
+
+2002-02-07  Benjamin Kosnik  
+
+	libstdc++/5286
+	libstdc++/3860
+	* include/std/std_fstream.h (filebuf::__file_type): Change to
+	__basic_file.
+	(filebuf::_M_convert_to_external): Declare.
+	* include/bits/fstream.tcc (filebuf::_M_convert_to_external): Define
+	codecvt bits for wide streams.
+	(filebuf::_M_really_overflow): Use it.
+	(filebuf::underflow): Use codecvt.
+	* config/locale/codecvt_specializations_ieee_1003.1-200x.h:
+	(codecvt<__enc_traits>::do_out): Deal with partial.
+	(codecvt<__enc_traits>::do_encoding): Return something useful.
+	* src/codecvt.cc (codecvt::do_encoding): Return sizeof
+	wchar_t.
+	* testsuite/22_locale/codecvt_members_unicode_char.cc (test01):
+	Change expected encoding output.
+	(test02): Same.
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc (test01): Same.
+	(test02): Same.
+
+2002-02-07  Benjamin Kosnik  
+	    Wolfgang Bangerth  
+
+	* include/bits/basic_ios.tcc (basic_ios::narrow): Add default value.
+	(basic_ios::widen): Same.
+
+2002-02-07  Paolo Carlini  
+
+	* testsuite/22_locale/money_get_members_char.cc:
+	Add comment, tidy up.
+	(test01): more "en_HK" tests (without showbase).
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Ditto.
+
+2002-02-06  Loren Rittle 
+
+	* config/locale/c_locale_generic.cc: Do not trust
+	_GLIBCPP_HAVE_STRTOF or _GLIBCPP_HAVE_STRTOLD as
+	set by configure.
+
+2002-02-06  Loren Rittle 
+
+	* acinclude.m4: Add C++ linkage check for strtof.
+	* aclocal.m4: Rebuilt.
+	* config.h.in: Rebuilt.
+	* configure: Rebuilt.
+	* config/locale/c_locale_generic.cc: Conditionally include
+	.  Improve handling and error checking of float
+	and long double input for non-C99 configurations.
+
+2002-02-06  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(string)):
+	In case money_base::symbol deal properly with multi-char sign
+	for patterns {X,Y,Z,symbol} and {X,Y,symbol,none}.
+	* testsuite/22_locale/money_get_members_char.cc: Add test07.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Add test07.
+
+2002-02-05  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(string)):
+	First construct a tentative returned string, then, only if the
+	parsing succeeds, copy it into the string passed by reference.
+	* testsuite/22_locale/money_get_members_char.cc: Add test06.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Add test06.
+
+2002-02-04  Phil Edwards  
+
+	* docs/doxygen/TODO:  Impl-defined behavior now documented...
+	* docs/html/17_intro/howto.html:  ...here.
+	* docs/doxygen/mainpage.doxy:  Remove, rename...
+	* docs/doxygen/mainpage.html:  ...to this.  Tweak HTML, add license.
+	* docs/doxygen/style.css:  Add small text.
+	* docs/doxygen/run_doxygen:  Adjust for new mainpage.
+	* docs/doxygen/user.cfg.in:  Likewise.
+
+2002-02-04  Stephan Buys  
+
+	* include/bits/stl_map.h:  Initial doxygen markup.
+	* include/std/std_fstream.h:  Initial doxygen markup.
+
+2002-02-04  Paolo Carlini  
+
+	libstdc++/5579
+	* include/bits/locale_facets.tcc (money_get::do_get(string)):
+	Deal correctly with !(__io.flags() & ios_base::showbase)
+	for case money_base::symbol.
+	* testsuite/22_locale/money_get_members_char.cc: Add test05.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Add test05.
+
+2002-02-02  Paolo Carlini  
+
+	* testsuite/22_locale/operators.cc
+	(gnu_collate::do_compare()): Add return statement to
+	suppress "no return statement" warning.
+
+2002-02-01  Paolo Carlini  
+
+	* testsuite/27_io/ostream_manip.cc: Enable test02.
+
+2002-02-01  Phil Edwards  
+
+	* docs/html/documentation.html:  Update for 3.0.96.
+	* docs/html/faq/index.html:  Update for 3.0.96.
+	* docs/html/faq/index.txt:  Regenerated.
+	* docs/doxygen/TODO:  Update notes.
+	* docs/html/17_intro/howto.html:  Initial impl-specific listing.
+
+2002-01-31  Benjamin Kosnik  
+
+	* config/locale/codecvt_specializations_ieee_1003.1-200x.h:
+	Initialize all data members in copy ctor. Make ctors explicit.
+	(__enc_traits::__enc_traits()): Default ctor does nothing.
+	(__enc_traits::_M_init): Guard against multiple iconv_opens.
+	* include/std/std_sstream.h (basic_stringbuf): Make data members
+	protected.
+	* include/std/std_fstream.h (basic_filebuf): Same.
+	* include/std/std_streambuf.h: Tweak.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/fstream.tcc: Same.
+
+2002-01-31  Loren Rittle 
+
+	* testsuite/22_locale/codecvt_members_char_char.cc: Do not
+	allow NULL argument to be passed to setenv().
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc: Likewise.
+	* testsuite/22_locale/collate_members_char.cc: Likewise.
+	* testsuite/22_locale/collate_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/ctype_members_char.cc: Likewise.
+	* testsuite/22_locale/ctype_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/messages_members_char.cc: Likewise.
+	* testsuite/22_locale/money_get_members_char.cc: Likewise.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/money_put_members_char.cc: Likewise.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/moneypunct_members_char.cc: Likewise.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/num_get_members_char.cc: Likewise.
+	* testsuite/22_locale/num_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/num_put_members_char.cc: Likewise.
+	* testsuite/22_locale/num_put_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/numpunct_members_char.cc: Likewise.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/time_get_members_char.cc: Likewise.
+	* testsuite/22_locale/time_get_members_wchar_t.cc: Likewise.
+	* testsuite/22_locale/time_put_members_char.cc: Likewise.
+	* testsuite/22_locale/time_put_members_wchar_t.cc: Likewise.
+
+2002-01-30  Benjamin Kosnik  
+
+	* config/locale/c_locale_gnu.cc: Same errno fixes as generic.
+
+	* ChangeLog-2001: Fix spelling errors...
+	* docs/html/17_intro/RELEASE-NOTES: Update.
+	* docs/html/17_intro/TODO: Update.
+	* README (file): Update.
+
+2002-01-30  Loren Rittle 
+
+	* config/locale/c_locale_generic.cc: Check errno for ERANGE
+	instead of non-zero to aid portability.
+
+2002-01-30  Peter Schmid  
+
+	* docs/html/22_locale/messages.html: Fix example code.
+
+2002-01-30  Richard Henderson  
+
+	* testsuite/27_io/ostream_inserter_arith.cc (test03_check): Break
+	out from test03 and templatize.
+	(test03): Use it.
+
+2002-01-30  Paolo Carlini  
+
+	* config/locale/numpunct_members_gnu.cc
+	(numpunct::_M_initialize_numpunct()):
+	Fix initialization of _M_grouping for locales which have
+	_M_thousands_sep == '\0'(L'\0', respectively).
+	* testsuite/22_locale/numpunct_byname.cc (test02): Add test.
+
+2002-01-30  Paolo Carlini  
+
+	* testsuite/27_io/ostream_inserter_arith.cc (test03):
+	Better fix for 32/64 bit architectures, avoiding the
+	implicit assumption that CHAR_BIT == 8.
+
+2002-01-28  Phil Edwards  
+
+	* Makefile.am (doxygen, doxygen-maint, doxygen-man):  Tweak targets.
+	* Makefile.in:  Regenerate.
+
+	* docs/doxygen/run_doxygen:  Update, mostly for man pages.
+	* docs/doxygen/Intro.3:  Update.
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/doxygroups.cc:  Add namespace hook for __gnu_cxx.
+	* docs/doxygen/mainpage.doxy:  Update.
+	* docs/doxygen/user.cfg.in:  Update for header rename.  Also
+	regenerate comments and variables with 1.2.12.
+	* docs/doxygen/maint.cfg.in:  Remove file.
+
+	* include/bits/stl_relops.h:  Doxygenate.
+	* include/bits/stl_tempbuf.h (std::_Temporary_buffer):  Likewise.
+
+	* include/c_std/std_cassert.h, include/c_std/std_cctype.h,
+	include/c_std/std_cerrno.h, include/c_std/std_cfloat.h,
+	include/c_std/std_ciso646.h, include/c_std/std_climits.h,
+	include/c_std/std_clocale.h, include/c_std/std_cmath.h,
+	include/c_std/std_csetjmp.h, include/c_std/std_csignal.h,
+	include/c_std/std_cstdarg.h, include/c_std/std_cstddef.h,
+	include/c_std/std_cstdio.h, include/c_std/std_cstdlib.h,
+	include/c_std/std_cstring.h, include/c_std/std_ctime.h,
+	include/c_std/std_cwchar.h, include/c_std/std_cwctype.h,
+	include/ext/algorithm, include/ext/functional, include/ext/hash_map,
+	include/ext/hash_set, include/ext/iterator, include/ext/memory,
+	include/ext/numeric, include/ext/rb_tree, include/ext/rope,
+	include/ext/ropeimpl.h, include/ext/slist, include/ext/stl_hash_fun.h,
+	include/ext/stl_hashtable.h, include/ext/stl_rope.h,
+	include/std/std_algorithm.h, include/std/std_bitset.h,
+	include/std/std_complex.h, include/std/std_deque.h,
+	include/std/std_fstream.h, include/std/std_functional.h,
+	include/std/std_iomanip.h, include/std/std_ios.h,
+	include/std/std_iosfwd.h, include/std/std_iostream.h,
+	include/std/std_istream.h, include/std/std_iterator.h,
+	include/std/std_limits.h, include/std/std_list.h,
+	include/std/std_locale.h, include/std/std_map.h,
+	include/std/std_memory.h, include/std/std_numeric.h,
+	include/std/std_ostream.h, include/std/std_queue.h,
+	include/std/std_set.h, include/std/std_sstream.h,
+	include/std/std_stack.h, include/std/std_stdexcept.h,
+	include/std/std_streambuf.h, include/std/std_string.h,
+	include/std/std_utility.h, include/std/std_valarray.h,
+	include/std/std_vector.h:  Add/correct @file doxygen hook.
+
+	* include/ext/memory:  Doxygenate most of rest of file.
+	* libsupc++/exception:  Doxygen output formatting.
+	* libsupc++/new:  Say which header it is.
+
+	* testsuite/lib/libstdc++-v3-dg.exp:  Fix spacing.
+	* docs/html/19_diagnostics/howto.html:  Describe concept-checks switch.
+	* docs/html/23_containers/howto.html:  Describe O(n) list::size().
+	* docs/html/27_io/howto.html:  Also link to Langer and Kreft text.
+
+2002-01-28  Paolo Carlini  
+	    Charles Leggett 
+
+	* testsuite/27_io/filebuf_members.cc (test_05): Add test.
+
+2002-01-28  Paolo Carlini  
+
+	* testsuite/27_io/ostream_inserter_arith.cc (test03):
+	Fix to deal correctly with both 32 bit and 64 bit architectures
+
+2002-01-25  Loren Rittle 
+
+	* testsuite/thread/pthread1.cc: Use one condition variable
+	per predicate instead of tricky use of one condition variable.
+
+2002-01-25  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc (filebuf::close()): Fix close for input
+	streams.
+	(filebuf::_M_really_overflow): Match indeterminate and sync calls.
+	* testsuite/27_io/filebuf.cc: Compile only.
+	* testsuite/27_io/filebuf_members.cc: Move tests to here.
+	* testsuite/27_io/filebuf_virtuals.cc: And here.
+	Revert sungetc, sync changes for expected values.
+	* testsuite/27_io/filebuf-*: Move to...
+	* testsuite/27_io/filebuf_virtuals-*: ...here.
+	* testsuite/27_io/istream.cc: Compile only, activate.
+	* testsuite/27_io/ostream.cc: Same.
+	* testsuite/27_io/iostream.cc: New.
+	* testsuite/27_io/iostream_members.cc: New.
+
+2002-01-25  David Billinghurst 
+
+	* testsuite/thread/pthread1.cc: Enable on cygwin.
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+
+2002-01-24  Benjamin Kosnik  
+
+	* testsuite/27_io/ostream_inserter_char.cc (test07): New.
+
+2002-01-24  Benjamin Kosnik  
+
+	* include/bits/basic_ios.h (basic_ios::_M_check_facet): Make
+	const, tweak.
+	(basic_ios::fill(char_type)): Use fill().
+	* include/bits/basic_ios.tcc (basic_ios::widen): Use _M_check_facet.
+	(basic_ios::narrow): Same.
+	(basic_ios::_M_cache_facets): Explicitly set cached facets to zero
+	if they are invalid.
+	(basic_ios::init): Comment.
+	* testsuite/27_io/ios_init.cc (test02): New.
+
+2002-01-24  Phil Edwards  
+
+	* include/bits/stl_tempbuf.h (_Temporary_buffer):  Add doxygen hook.
+	* include/bits/stl_algo.h:  Include stl_tempbuf.h.
+	* include/ext/memory:  Do not include stl_tempbuf.h.
+	(temporary_buffer):  Add doxygen hook.
+	(__get_temporary_buffer, get_temporary_buffer,
+	return_temporary_buffer):  Move back to std:: header...
+	* include/std/std_memory.h:  ...here.  Do not include stl_tempbuf.h.
+	* include/ext/rope:  Do not include stl_tempbuf.h.
+	* include/ext/stl_hashtable.h:  Likewise.
+	* include/std/std_algorithm.h:  Likewise.
+	* testsuite/20_util/temporary_buffer.cc:  New file.
+
+2002-01-24  andrew@andypo.net
+	    (tweaks, test and commit by Loren J. Rittle  )
+
+	libstdc++/5432
+	* include/bits/ios_base.h: Use _Atomic_word for reference counts.
+	* include/bits/localefwd.h: Likewise.
+	Also use for std::locale::id::_S_highwater.
+	* src/ios.cc (ios_base::xalloc): Use _Atomic_word.
+	* src/locale.cc: Support new usage of _Atomic_word.
+	(std::locale::classic): Guard entire function against reentry.
+	* src/localename.cc: Support new usage of _Atomic_word.
+
+2002-01-24   Benjamin Kosnik  
+
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test03): Use
+	_GLIBCPP_HAVE_SETENV.
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc (test02): Same.
+	* testsuite/22_locale/collate_members_char.cc (test02): Same.
+	* testsuite/22_locale/ctype_members_char.cc (test03): Same.
+	* testsuite/22_locale/ctype_members_wchar_t.cc (test03): Same.
+	* testsuite/22_locale/messages_members_char.cc (test02): Same.
+	* testsuite/22_locale/moneypunct_members_char.cc (test02): Same.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc (test02): Same.
+	* testsuite/22_locale/money_put_members_char.cc (test04): Same.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test04): Same.
+	* testsuite/22_locale/num_get_members_char.cc (test03): Same.
+	* testsuite/22_locale/num_get_members_wchar_t.cc (test03): Same.
+	* testsuite/22_locale/numpunct_members_char.cc (test02): Same.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc (test02): Same.
+	* testsuite/22_locale/time_get_members_char.cc (test07): Same.
+	* testsuite/22_locale/time_get_members_wchar_t.cc (test07): Same.
+	* testsuite/22_locale/time_put_members_char.cc (test03): Same.
+	* testsuite/22_locale/time_put_members_wchar_t.cc (test03): Same.
+	* testsuite/22_locale/num_put_members_char.cc (test03): Same.
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Check for setenv.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+
+2002-01-23  Loren Rittle 
+
+	* testsuite/thread/pthread1.cc: New test.
+	* testsuite/thread/pthread2.cc: New test adapted from libstdc++/5347.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: New test adapted from
+	http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00679.html
+	* testsuite/thread/pthread5.cc: New test adapted from libstdc++/5464.
+	* testsuite/thread/pthread6.cc: New test adapted from libstdc++/5444.
+
+2002-01-23  Richard Henderson  
+
+	PR libstdc++/5198
+	* config/cpu/m68k/bits/atomicity.h (__exchange_and_add): Only use
+	CAS on the cpu variants that support it.  Add versions that use
+	TAS and that disable interrupts.
+	(__atomic_add): Use __exchange_and_add to guarantee atomicity.
+
+2002-01-23  Matt Kraai  
+
+	* include/bits/locale_facets.tcc: Remove old comments.
+
+2002-01-23  Andreas Tobler  
+
+	* include/bits/locale_facets.tcc (__convert_to_v): Change template
+	parameter to _Tv.
+	(__convert_from_v): Same.
+
+2002-01-23  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (num_get::_M_extract_int): Change
+	prototype.
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int): Remove
+	__max_digits checks, adjust arguments.
+	(num_get::do_get(*)): Changeup.
+
+2002-01-23  Loren Rittle 
+
+	* config/locale/c_locale_generic.cc: Fix typename usage.
+
+2002-01-22  Benjamin Kosnik  
+
+	* config/locale/c_locale_generic.cc: Fix.
+
+2002-01-22  Benjamin Kosnik  
+
+	* docs/html/22_locale/messages.html: Remove angle brackets.
+	* docs/html/17_intro/TODO: Add.
+
+2002-01-22  Paolo Carlini  
+
+	* testsuite/27_io/ios_manip_basefield.cc: Enable test02.
+	* testsuite/27_io/ostream_inserter_arith.cc: Enable test03.
+	* testsuite/27_io/ostream_inserter_char.cc: Enable test01.
+	* testsuite/27_io/ostream_inserter_other.cc: Enable test04.
+
+2002-01-22  Benjamin Kosnik  
+
+	Audit for LANG independence.
+	* include/bits/localefwd.h: Tweaks.
+	* include/bits/locale_facets.tcc (money_get::do_get(long double)):
+	Use __convert_to_v.
+	(time_get::do_get_year): Same.
+	(__convert_from_v): Add.
+	(num_put::_M_convert_float): Use.
+	(num_put::_M_convert_int): Same.
+	(money_put::do_put): Same.
+
+	* src/locale-inst.cc: Add instantiations for __convert_from_v.
+	* config/locale/time_members_gnu.cc: Cleanup setlocale usage.
+	* config/locale/time_members_generic.cc:
+	* config/locale/messages_members_gnu.cc: Same.
+	* config/locale/messages_members_gnu.h: Same.
+
+	* testsuite/22_locale/codecvt_members_wchar_t_char.cc (test02): New.
+	* testsuite/22_locale/codecvt_members_char_char.cc (test02): New.
+	* testsuite/22_locale/collate_members_wchar_t.cc (test02): New.
+	* testsuite/22_locale/collate_members_char.cc (test02): New.
+	* testsuite/22_locale/ctype_members_wchar_t.cc (test03): New.
+	* testsuite/22_locale/ctype_members_char.cc (test03): New.
+	* testsuite/22_locale/messages_members_char.cc (test02): New.
+	* testsuite/22_locale/moneypunct_members_wchar_t.cc (test02): New.
+	* testsuite/22_locale/moneypunct_members_char.cc (test02): New.
+	* testsuite/22_locale/money_get_members_wchar_t.cc (test04): New.
+	* testsuite/22_locale/money_get_members_char.cc (test04): New.
+	* testsuite/22_locale/money_put_members_wchar_t.cc (test04): New.
+	* testsuite/22_locale/money_put_members_char.cc (test04): New.
+	* testsuite/22_locale/numpunct_members_wchar_t.cc (test02): New.
+	* testsuite/22_locale/numpunct_members_char.cc (test02): New.
+	* testsuite/22_locale/time_put_members_wchar_t.cc (test03): New.
+	* testsuite/22_locale/time_put_members_char.cc (test03): New.
+	* testsuite/22_locale/time_get_members_wchar_t.cc (test07): New.
+	* testsuite/22_locale/time_get_members_char.cc (test07): New.
+	* testsuite/22_locale/num_get_members_wchar_t.cc (test03): New.
+	* testsuite/22_locale/num_get_members_char.cc (test03): New.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test03): New.
+	* testsuite/22_locale/num_put_members_char.cc (test03): New.
+
+	* testsuite/22_locale/time_get_members_char.cc: Fixups for global
+	locale issues.
+	* testsuite/22_locale/time_get_members_char.cc: Same.
+
+2002-01-22  Benjamin Kosnik  
+
+	libstdc++/5280
+	* include/bits/localefwd.h: Tweak comments.
+	* include/bits/locale_facets.h (__convert_to_v): Add.
+	* include/bits/locale_facets.tcc (num_get::do_get(double)): Use it.
+	(num_get::do_get(float)): Same.
+	(num_get::do_get(long double)): Same.
+	(num_get::do_get(bool)): Same.
+	(num_get::do_get(long)): Same.
+	(num_get::do_get(long long)): Same.
+	(num_get::do_get(unsigned int)): Same.
+	(num_get::do_get(unsigned short)): Same.
+	(num_get::do_get(unsigned long)): Same.
+	(num_get::do_get(unsigned long long)): Same.
+	* config/locale/c_locale_gnu.cc (__convert_to_v): Specialize.
+	* config/locale/c_locale_generic.cc: Same.
+
+2002-01-22  Loren Rittle 
+
+	* include/Makefile.am (c_base_builddir): Remove redundant slash.
+	(std_builddir): Likewise.
+	(std_headers_rename): Fix cut-n-paste typo.
+	(install-data-local): Concat path per element instead of once to
+	first element of list.
+	* include/Makefile.in: Rebuilt.
+
+2002-01-22  Benjamin Kosnik  
+
+	* config/os/aix/bits/ctype_noninline.h: Fix formatting.
+	* config/os/bsd/netbsd/bits/ctype_noninline.h: Fix typo.
+	* config/os/bsd/freebsd/bits/ctype_noninline.h: Fix formatting.
+
+2002-01-20  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (ctype::classic_table):
+	Remove definition.
+	(ctype::_S_ctable): Remove.
+	* config/os/gnu-linux/bits/ctype_noninline.h
+	(ctype::_S_table): Remove definition.
+	(ctype::classic_table): Define.
+	(ctype::ctype): Replace _S_ctable with classic_table().
+	* config/os/aix/bits/ctype_noninline.h: Same.
+	* config/os/bsd/freebsd/bits/ctype_noninline.h: Same.
+	* config/os/bsd/netbsd/bits/ctype_noninline.h: Same.
+	* config/os/djgpp/bits/ctype_noninline.h: Same.
+	* config/os/generic/bits/ctype_noninline.h: Same.
+	* config/os/gnu-linux/bits/ctype_noninline.h: Same.
+	* config/os/hpux/bits/ctype_noninline.h: Same.
+	* config/os/irix/irix5.2/bits/ctype_noninline.h: Same.
+	* config/os/irix/irix6.5/bits/ctype_noninline.h: Same.
+	* config/os/mingw32/bits/ctype_noninline.h: Same.
+	* config/os/newlib/bits/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.5/bits/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.6/bits/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.7/bits/ctype_noninline.h: Same.
+
+2002-01-20  Danny Smith  
+
+	* config/os/mingw32/bits/ctype_noninline.h: Declare _ctype instead
+	of _pctype. Use to define _S_ctable.  Add definition for alternate
+	ctor.  Initialise _M_ctable to _S_ctable in ctors.
+	(do_toupper, do_tolower): Use inline code appropriate for C-locale
+	rather than ::toupper, ::tolower.
+
+2002-01-18  Loren Rittle 
+
+	* testsuite/18_support/numeric_limits.cc (test_extrema):
+	Add specialization for FreeBSD systems only to avoid losing test
+	only due to extra precision unmentioned in system headers.
+
+2002-01-18  David Billinghurst 
+
+	* config/os/irix/irix6.5/bits/ctype_noninline.h: Fix typo
+
+2002-01-17  Nick Clifton  
+
+	* testsuite/testsuite_hooks.h: Fix comment typo.  Memory
+	limiting is only attempted if _GLIBCPP_MEM_LIMIT is defined.
+
+2002-01-17  Peter Schmid  
+
+	* testsuite/22_locale/ctor_copy_dtor.cc: Remove check.
+
+2002-01-17  David Edelsohn  
+
+	* configure.target: Define OPT_LDFLAGS for AIX case.
+
+2002-01-17  Gabriel Dos Reis  
+
+	* include/std/std_limits.h (__glibcpp_float_has_quiet_NaN,
+	__glibcpp_double_has_quiet_NaN): Correct mispelling.
+
+2002-01-17  Andreas Tobler  
+
+	* config/os/solaris/solaris2.6/bits/ctype_noninline.h: Fix.
+
+2002-01-16  David Edelsohn  
+
+	* acinclude.m4 (GLIBCPP_CHECK_LINKER_FEATURES): Do not clear
+	SECTION_LDFLAGS and OPT_LDFLAGS.  Fix ac_sectionLDflags type.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2002-01-16  Benjamin Kosnik  
+
+	* include/Makefile.am (c_base_headers_rename): New.
+	(c_base_headers_extra): New.
+	(stamp-c_base): Modify.
+	(install-data-local): Use both.
+	* include/Makefile.in: Regenerate.
+	* include/c/[cctype ciso646 cmath cstdarg cstdlib cerrno climits
+	csetjmp cstddef cstring cwchar cassert cfloat clocale csignal
+	cstdio ctime cwctype]: Move to..
+	* include/c/std_*: Here.
+	* include/c_std/[cctype ciso646 cmath cstdarg cstdlib cerrno climits
+	csetjmp cstddef cstring cwchar cassert cfloat clocale csignal
+	cstdio ctime cwctype]: Move to..
+	* include/c_std/std_*: Here.
+
+	Alexandre Oliva  
+	* include/Makefile.am (.PRECIOUS): Add rule.
+	* include/Makefile.in: Regenerate.
+
+2002-01-16  Benjamin Kosnik  
+	    Peter Schmid  
+
+	* include/bits/stl_iterator.h (reverse_iterator::_M_current):
+	Deuglify, should be current.
+	(back_insert_iterator::_M_container): Deuglify, should be container.
+	(front_insert_iterator::_M_container): Same.
+	(insert_iterator::_M_container): Same.
+	* testsuite/24_iterators/reverse_iterator.cc: Add check.
+	* testsuite/24_iterators/back_insert_iterator.cc: Add check.
+	* testsuite/24_iterators/front_insert_iterator.cc: Same.
+	* testsuite/24_iterators/insert_iterator.cc: Same.
+
+2002-01-16  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (ctype::classic_table): Make
+	static.
+	(ctype::_M_ctable): Make static, change name to _S_ctable.
+	* config/os/gnu-linux/bits/ctype_noninline.h: Define _S_ctable.
+	* config/os/solaris/solaris2.7/bits/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.6/bits/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.5/bits/ctype_noninline.h: Same.
+	* config/os/newlib/bits/ctype_noninline.h: Same.
+	* config/os/irix/irix6.5/bits/ctype_noninline.h: Same.
+	* config/os/irix/irix5.2/bits/ctype_noninline.h: Same.
+	* config/os/hpux/bits/ctype_noninline.h: Same.
+	* config/os/djgpp/bits/ctype_noninline.h: Same.
+	* config/os/bsd/netbsd/bits/ctype_noninline.h: Same.
+	* config/os/bsd/freebsd/bits/ctype_noninline.h: Same.
+	* config/os/aix/bits/ctype_noninline.h: Same.
+
+	Testcase by Dietmar Kühl via Peter Schmid
+	* testsuite/22_locale/ctype_members_char.cc (char>): Add test for
+	classic_table().
+
+2002-01-16  Benjamin Kosnik  
+
+	* libmath/signbitl.c: Copyright years as list, not range.
+	* libmath/Makefile.am: Same.
+	* libmath/Makefie.in: Regenerate.
+	* libmath/signbit.c: Same.
+	* libmath/nan.c: Same.
+	* libmath/copysignf.c: Same.
+	* libmath/signbitf.c: Same.
+	* testsuite/22_locale/money_get_members_char.cc: Same.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Same.
+	* testsuite/22_locale/money_put_members_char.cc: Same.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Same.
+	* testsuite/22_locale/time_get_members_char.cc: Same.
+	* testsuite/22_locale/time_get_members_wchar_t.cc: Same.
+	* testsuite/22_locale/time_put_members_char.cc: Same.
+	* testsuite/22_locale/time_put_members_wchar_t.cc: Same.
+	* testsuite/21_strings/nonmember.cc: Same.
+	* testsuite/21_strings/compare.cc: Same.
+	* testsuite/27_io/stringstream.cc: Same.
+	* testsuite/27_io/stringbuf.cc: Same.
+	* testsuite/27_io/filebuf.cc: Same.
+	* testsuite/27_io/ios_manip_basefield.cc: Same.
+	* testsuite/27_io/ios_manip_fmtflags.cc: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/bits/generic_shadow.h: Same.
+	* include/bits/gslice_array.h: Same.
+	* include/bits/gslice.h: Same.
+	* include/bits/indirect_array.h: Same.
+	* include/bits/slice_array.h: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/streambuf_iterator.h: Same.
+	* include/bits/valarray_array.tcc: Same.
+	* include/bits/valarray_meta.h: Same.
+	* include/bits/valarray_array.h: Same.
+	* config/os/mingw32/bits/ctype_noninline.h: Same.
+	* config/os/mingw32/bits/ctype_base.h: Same.
+	* config/os/hpux/bits/ctype_noninline.h: Same.
+	* config/os/hpux/bits/ctype_base.h: Same.
+	* config/os/gnu-linux/bits/ctype_noninline.h: Same.
+	* config/os/gnu-linux/bits/ctype_base.h: Same.
+	* config/os/generic/bits/ctype_noninline.h: Same.
+	* config/os/generic/bits/ctype_base.h: Same.
+
+	* libsupc++/tinfo.h: Tweaks.
+
+2002-01-15  Benjamin Kosnik  
+
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test02): Same.
+	* testsuite/22_locale/num_put_members_char.cc (test01): Tweak.
+	* testsuite/22_locale/ctype_members_char.cc: Tweak.
+
+2002-01-15  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (num_put::do_put(bool): Fix.
+	(num_put::do_put(void*)): Fix.
+	* testsuite/22_locale/num_put_members_char.cc (test02): Add.
+	* testsuite/22_locale/num_put_members_wchar_t.cc (test02): Add.
+	* testsuite/22_locale/num_get_members_char.cc (test02): Add
+	long double, void, bool types.
+	* testsuite/22_locale/num_get_members_wchar_t.cc (test02): Add.
+
+2002-01-15  Benjamin Kosnik  
+	    Alexandre Oliva  
+
+	* libmath/Makefile.am (LINK): Add --tag CC.
+	* libmath/Makefile.in: Regenerate.
+
+2002-01-15  John David Anglin  
+
+	* config/os/hpux/bits/ctype_noninline.h: Use __SB_masks for address
+	of character to attribute mapping table.
+
+2002-01-15  David Billinghurst 
+
+	* testsuite/26_numerics/c99_classification_macros_c.cc
+	Remove dg-error and dg-excess-errors comments.
+
+2002-01-14  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (time_put::put): Correct output
+	iterator positions.
+	* testsuite/22_locale/time_put_members_char.cc (test02): Add.
+	* testsuite/22_locale/time_put_members_wchar_t.cc (test02): Add.
+	* testsuite/22_locale/time_get_members_wchar_t.cc (test06): Add.
+	* testsuite/22_locale/time_get_members_char.cc (test06): Add.
+
+2002-01-14  Craig Rodrigues  
+
+	* docs/html/17_intro/porting-howto.xml: Update filebuf section.
+
+2002-01-14  Paolo Carlini  
+	    Nathan Myers  
+
+	* include/bits/basic_string.h
+	(replace(__pos, __n1, __s, __n2)): Optimize by avoiding
+	temporaries (i.e., call _M_replace_safe) when possible.
+	(replace(__pos, __n, __str)): Call replace(__pos, __n1, __s, __n2).
+	(replace(__pos, __n1, __s)): Call replace(__pos, __n1, __s , __n2).
+	(replace(__i1, __i2, __str)): Call replace(__i1, __i2, __s, __n).
+	(replace(__i1, __i2, __s)): Call replace(__i1, __i2, __s, __n).
+	(replace(__i1, __i2, __s, __n)): Call replace(__pos1, __n1, __s, __n2).
+	* include/bits/basic_string.tcc
+	(replace(__pos1, __n1, __str, __pos2, __n2)): Call
+	replace(__pos, __n1, __s, __n2).
+	* testsuite/21_strings/replace.cc (test03): New testcases.
+
+	* include/bits/basic_string.h (insert(__pos, __s, __n)):
+	Adjust comparison wrt overflow.
+
+2002-01-12  Benjamin Kosnik  
+
+	* include/Makefile.am (std_headers_rename): New variable.
+	(install-data-local): Use it.
+	* include/Makefile.in: Regenerate.
+
+2002-01-12  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (money_put::do_put(string):
+	Correct output iterator value.
+	* testsuite/22_locale/money_put_members_char.cc (test03): Add.
+	* testsuite/22_locale/money_put_members_wchar_t.cc: Same.
+
+2002-01-11  Phil Edwards  
+
+	* include/Makefile.am, include/Makefile.in (stamp-std):  Fix typo from
+	previous commit.
+
+2002-01-11  Phil Edwards  
+
+	* include/Makefile.am (std_headers):  Update list with new names.
+	(stamp-std):  Link to standardized name.
+	* include/Makefile.in:  Regenerate.
+
+	* include/std/algorithm, include/std/bitset, include/std/complex,
+	include/std/deque, include/std/fstream, include/std/functional,
+	include/std/iomanip, include/std/ios, include/std/iosfwd,
+	include/std/iostream, include/std/istream, include/std/iterator,
+	include/std/limits, include/std/list, include/std/locale,
+	include/std/map, include/std/memory, include/std/numeric,
+	include/std/ostream, include/std/queue, include/std/set,
+	include/std/sstream, include/std/stack, include/std/stdexcept,
+	include/std/streambuf, include/std/string, include/std/utility,
+	include/std/valarray, include/std/vector:  Rename to...
+
+	* include/std/std_algorithm.h, include/std/std_bitset.h,
+	include/std/std_complex.h, include/std/std_deque.h,
+	include/std/std_fstream.h, include/std/std_functional.h,
+	include/std/std_iomanip.h, include/std/std_ios.h,
+	include/std/std_iosfwd.h, include/std/std_iostream.h,
+	include/std/std_istream.h, include/std/std_iterator.h,
+	include/std/std_limits.h, include/std/std_list.h,
+	include/std/std_locale.h, include/std/std_map.h,
+	include/std/std_memory.h, include/std/std_numeric.h,
+	include/std/std_ostream.h, include/std/std_queue.h,
+	include/std/std_set.h, include/std/std_sstream.h,
+	include/std/std_stack.h, include/std/std_stdexcept.h,
+	include/std/std_streambuf.h, include/std/std_string.h,
+	include/std/std_utility.h, include/std/std_valarray.h,
+	include/std/std_vector.h:  ...this.
+
+2002-01-11  Loren Rittle 
+
+	* include/Makefile.am (extra_target_headers): New list of all
+	target files built with ad hoc naming rules.
+	(stamp-*): Handle LN_S failure in manner portable across make
+	implementations.
+	(install-data-local): Install header files from human-maintained
+	file lists and directory components instead of non-robust find.
+	* include/Makefile.in: Rebuilt.
+
+2002-01-11  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(string)):
+	Check for zero-length negative sign before adding it to output
+	string.
+	(money_get::do_get(long double)): Return beg.
+	* testsuite/22_locale/money_get_members_char.cc (test02): Add
+	iterator checks.
+	* testsuite/22_locale/money_get_members_wchar_t.cc: Same.
+
+2002-01-10  David Seymour  
+
+	libstdc++/5331
+	* include/bits/locale_facets.h (num_get<>): Return advanced iterator
+	for _M_extract_float and _M_extract_int
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float)
+	(num_get<>::_M_extract_int): Likewise, all callers changed
+	* testsuite/22_locale/num_get_members_char.cc: Testcase
+
+2002-01-09  Paolo Carlini 
+
+	* libsupc++/exception (bad_exception): Add comment.
+	* libsupc++/new (bad_alloc): Same.
+	* libsupc++/typeinfo (bad_cast, bad_typeid): Same.
+
+2002-01-09  Paolo Carlini 
+
+	libstdc++/3150: revert 2001-11-30 commit. DR266 only means
+	that the destructors should be removed from the descriptions
+	in the standard: writing them explicitly allows the vtable
+	heuristic to work. For additional information see:
+	http://gcc.gnu.org/ml/libstdc++/2002-01/msg00090.html
+	http://gcc.gnu.org/ml/libstdc++/2002-01/msg00110.html
+	http://gcc.gnu.org/ml/libstdc++/2002-01/msg00155.html
+	* libsupc++/exception (bad_exception::~bad_exception()):
+	Reintroduce declaration.
+	* libsupc++/new (bad_alloc::~bad_alloc()): Same.
+	* libsupc++/typeinfo (bad_cast::~bad_cast()): Same.
+	(bad_typeid::~bad_typeid()): Same.
+	* libsupc++/eh_exception.cc (bad_exception::~bad_exception()):
+	Reintroduce definition.
+	* libsupc++/new_handler.cc (bad_alloc::~bad_alloc()): Same.
+	* libsupc++/tinfo.cc (bad_cast::~bad_cast()): Same.
+	(bad_typeid::~bad_typeid()): Same.
+
+2002-01-09  Benjamin Kosnik  
+
+	* include/Makefile.am (c_base_srcdir): Remove duplicate '/'.
+	* include/Makefile.in: Regenerate.
+
+2002-01-09  Bo Thorsen  
+
+	* config/cpu/x86-64/bits/cpu_limits.h (__glibcpp_long_bits): Add
+	definition.
+
+2002-01-08  Benjamin Kosnik  
+
+	libstdc++/2913
+	libstdc++/4879
+	* include/bits/fstream.tcc (filebuf::_M_really_overflow): Test
+	return value of _M_file->sync().
+	(filebuf::showmanyc): Check for is_open.
+	* include/std/fstream (filebuf::sync): Tweak.
+	* testsuite/27_io/filebuf.cc: Tweak.
+
+2002-01-08  John Fardo  
+	    Brad Garcia  
+
+	* testsuite/27_io/filebuf_members.cc: Add test.
+
+2002-01-07  Benjamin Kosnik  
+ 	    Craig Rodrigues  
+
+	libstdc++/5174
+	* po/Makefile.am (mkinstalldirs): Add.
+	* po/Makefile.in: Regenerate.
+
+2002-01-07  David Billinghurst  
+
+	* testsuite_flags.in: Add -fmessage-length=0 to CXXFLAGS *
+	testsuite/lib/prune.exp: Delete lines ":In function ..."  from
+	compiler output.
+	* testsuite/23_containers/map_operators.cc: Remove
+	dg-excess-errors comment.
+	* testsuite/23_containers/set_operators.cc: Likewise.
+
+2002-01-06  Paolo Carlini  
+
+	* include/bits/stl_function.h:  Remove two lines of comments;
+	adjust copyright years.
+
+2002-01-04  Benjamin  Kosnik  
+
+	* include/Makefile.am (std_headers): Remove cXXX from list.
+	(c_base_srcdir): No bits subdirectory.
+	(c_base_builddir): Same.
+	(c_base_headers): Adjust names, add ciso646.
+	(bits_headers): Remove std_xxx.h headers.
+	* include/Makefile.in: Regenerate.
+
+	* include/ext/iterator: Adjust includes.
+	* include/ext/ropeimpl.h: Same.
+	* include/ext/stl_hash_fun.h: Same.
+	* include/ext/algorithm: Same.
+
+	* include/backward/bvector.h: Adjust includes.
+	* include/backward/vector.h: Same.
+	* include/backward/strstream: Same.
+	* include/backward/streambuf.h: Same.
+	* include/backward/stack.h: Same.
+	* include/backward/set.h: Same.
+	* include/backward/queue.h: Same.
+	* include/backward/multiset.h: Same.
+	* include/backward/multimap.h: Same.
+	* include/backward/map.h: Same.
+	* include/backward/list.h: Same.
+	* include/backward/iterator.h: Same.
+	* include/backward/iostream.h: Same.
+	* include/backward/iomanip.h: Same.
+	* include/backward/fstream.h: Same.
+	* include/backward/deque.h: Same.
+	* include/backward/complex.h: Same.
+
+	* include/bits/std_algorithm.h: Move to...
+	* include/std/algorithm: ...here.
+	* include/bits/std_iosfwd.h, std_locale.h, std_stack.h,
+	std_bitset.h, std_ios.h, std_map.h, std_stdexcept.h,
+	std_complex.h, std_iostream.h, std_memory.h, std_streambuf.h,
+	std_deque.h, std_istream.h, std_numeric.h, std_string.h,
+	std_fstream.h, std_ostream.h, std_utility.h, std_iterator.h,
+	std_queue.h, std_valarray.h, std_functional.h, std_limits.h,
+	std_set.h, std_vector.h, std_iomanip.h, std_list.h, std_sstream.h:
+	Same.
+
+	* include/c_std/bits/std_cassert.h: Move to...
+	* include/c_std/cassert: Here.
+	* include/c_std/std_cctype.h, std_cerrno.h, std_cfloat.h,
+	std_climits.h, std_clocale.h, std_cmath.h, std_csetjmp.h,
+	std_csignal.h, std_cstdarg.h, std_cstddef.h, std_cstdio.h,
+	std_cstdlib.h, std_cstring.h, std_ctime.h, std_cwchar.h,
+	std_cwctype.h: Same.
+	* include/c_std/cmath: Adjust cmath.tcc include.
+	* include/c_std/cstdlib: Adjust includes.
+	* include/c_std/cwchar: Same.
+	* include/c_std/ctime: Same.
+	* include/c_std/cstring: Same.
+	* include/c_std/cstdio: Same.
+	* include/c_std/bits: Remove directory.
+
+	* include/c/bits/std_cassert.h: Move to...
+	* include/c/cassert: Here.
+	* include/c/std_cctype.h, std_cerrno.h, std_cfloat.h,
+	std_climits.h, std_clocale.h, std_cmath.h, std_csetjmp.h,
+	std_csignal.h, std_cstdarg.h, std_cstddef.h, std_cstdio.h,
+	std_cstdlib.h, std_cstring.h, std_ctime.h, std_cwchar.h,
+	std_cwctype.h: Same.
+	* include/c/bits: Remove directory.
+
+	* include/std/cwctype: Remove.
+	* include/std/cwchar: Remove.
+	* include/std/ctime: Remove.
+	* include/std/cstring: Remove.
+	* include/std/cstdlib: Remove.
+	* include/std/cstdio: Remove.
+	* include/std/cstddef: Remove.
+	* include/std/cstdarg: Remove.
+	* include/std/csignal: Remove.
+	* include/std/csetjmp: Remove.
+	* include/std/cmath: Remove.
+	* include/std/clocale: Remove.
+	* include/std/climits: Remove.
+	* include/std/ciso646: Remove.
+	* include/std/cfloat: Remove.
+	* include/std/cerrno: Remove.
+	* include/std/cctype: Remove.
+	* include/std/cassert: Remove.
+
+	* include/bits/fpos.h: Adjust includes, removing 
+	files and subsituting .
+	* include/bits/valarray_array.h: Same.
+	* include/bits/stl_uninitialized.h: Same.
+	* include/bits/stl_alloc.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/pthread_allocimpl.h: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/localefwd.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/boost_concept_check.h: Same.
+	* include/bits/basic_file.h: Same.
+	* include/std/bitset: Same.
+	* include/std/complex: Same.
+	* include/std/fstream: Same.
+	* include/std/functional: Same.
+	* include/std/ios: Same.
+	* include/std/iostream: Same.
+	* include/std/ostream: Same.
+	* include/std/sstream: Same.
+	* include/std/streambuf: Same.
+	* include/std/string: Same.
+	* include/std/iterator: Same.
+	* include/std/valarray: Same.
+
+	* src/ios.cc: Adjust includes.
+	* src/valarray-inst.cc: Same.
+	* src/string-inst.cc: Same.
+	* src/stl-inst.cc: Same.
+	* src/stdexcept.cc: Same.
+	* src/misc-inst.cc: Same.
+	* src/localename.cc: Same.
+	* src/locale-inst.cc: Same.
+	* src/locale.cc: Same.
+	* src/limits.cc: Same.
+	* src/concept-inst.cc: Same.
+	* src/complex_io.cc: Same.
+	* src/codecvt.cc: Same.
+	* src/bitset.cc: Same.
+	* src/cmath.cc: Same.
+
+2002-01-04  Paolo Carlini  
+
+	* include/bits/stl_tree.h (rb_tree):  Move to...
+	* include/ext/rb_tree:  ...here, new file.
+	* include/Makefile.am (ext_headers):  Add new file.
+	* include/Makefile.in:  Regenerate.
+	* include/bits/stl_tempbuf.h (get_temporary_buffer + helper,
+	return_temporary_buffer, struct temporary_buffer):  Move to...
+	* include/ext/memory:  ...here.
+	* testsuite/ext/headers.cc:  Include .
+	* include/backward/tempbuf.h:  Include , tweak.
+	* include/backward/tree.h:  Include 
+
+	* include/bits/stl_numeric.h (power + helpers, iota):  Move to...
+	* include/ext/numeric:  ...here, new file.
+	* include/bits/stl_function.h (identity_element, unary_compose,
+	binary_compose, compose1, compose2, identity, select1st,
+	select2nd, project1st + helper, project2nd + helper,
+	constant_void_fun + helper, constant_unary_fun + helper,
+	costant_binary_fun + helper, constant0, constant1, constant2,
+	subtractive_rng, mem_fun1, mem_fun1_ref):  Move to...
+	* include/ext/functional:  ...here, new file.
+	* include/Makefile.am (ext_headers):  Add new files.
+	* include/Makefile.in:  Regenerate.
+	* testsuite/ext/headers.cc:  Include  and
+	.
+	* include/backward/algo.h:  Include , tweak.
+	* include/backward/function.h:  Include , tweak.
+	* include/ext/ropeimpl.h:  Include .
+
+2002-01-03  Jeffrey A Law  
+
+	* config/os/hpux/bits/os_defines.h: Prefix __strtoll and
+	__strtoull declarations with __extension__.
+
+2002-01-03  David Billinghurst 
+
+	* testsuite/lib/prune.exp: Correct regular expression for
+	-ffunction-sections
+
+2002-01-02  Phil Edwards  
+
+	* include/bits/stl_algo.h (upper_bound, equal_range, binary_search):
+	Change concept checks, as with lower_bound and PR 2054.
+	* testsuite/ext/concept_checks.cc:  Expand test to include those.
+
+2002-01-02  Phil Edwards  
+
+	* include/bits/boost_concept_check.h:  Import some changes from
+	upsteam (Boost) version.
+
+2002-01-02  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (copy_n + helpers,
+	lexicographical_compare_3way + helpers):  Move to...
+	* include/ext/algorithm:  ...here.
+	* include/bits/stl_uninitialized.h (uninitialized_copy_n +
+	helpers):  Move to...
+	* include/ext/memory:  ...here, new file.
+	* include/Makefile.am (ext_headers):  Add new file.
+	* include/Makefile.in:  Regenerate.
+	* testsuite/ext/headers.cc:  Include .
+	* include/backward/algobase.h:  Include  and
+	, tweak.
+	* include/ext/ropeimpl.h:  Include , tweak.
+	* include/ext/stl_rope.h:  Include , tweak.
+
+2002-01-01  Roger Sayle 
+
+	* libmath/stubs.c (sinf,cosf): Implement stubs to enable the
+	equivalent ___builtin__ versions.
+
+	* include/c_shadow/bits/std_cmath.h: All __builtin math functions
+	are available in libstdc++ as the necessary stub implementations
+	are provided by libmath/stubs.c.
+
+2002-01-01  Jason Thorpe  
+
+	* configure.in: Add support for NetBSD cross compiles.
+	* configure: Regenerate.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2003 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2003
new file mode 100644
index 000000000..b01638cd7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2003
@@ -0,0 +1,8619 @@
+2003-12-31  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int,
+	num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+	_first_ look for thousands_sep, then for decimal_point and
+	finally for digits.
+	(num_get::_M_extract_float): After the decimal_point or
+	'e'/'E', decimal_point and thousands_sep just break out the
+	parsing loop.
+	* testsuite/22_locale/num_get/get/char/11.cc: Add tests.
+	* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-30  Paolo Carlini  
+
+	PR libstdc++/13369
+	* include/bits/locale_facets.tcc (__verify_grouping):
+	Fix to deal properly with __grouping_tmp.size() >
+	__grouping.size().
+	* testsuite/22_locale/num_get/get/char/13.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/13.cc: Ditto.
+
+2003-12-29  Jerry Quinn  
+
+	* include/bits/locale_facets.h (ctype.narrow,widen): Add cast.
+
+2003-12-29  Paolo Carlini  
+
+	* acinclude.m4 (GLIBCXX_CHECK_LFS): Add -fno-exceptions
+	to CXXFLAGS.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+
+2003-12-29  Mark Mitchell  
+
+	* acconfig.h: Add _GLIBCXX_USE_C99_MATH.
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Define GLIBCXX_USE_C99_MATH.
+	* configure.ac: Define HAVE_S_ISREG and HAVE_S_IFREG when
+	targeting newlib.
+	* aclocal.m4: Regenerated.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+	* Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* include/c_std/std_cmath.h (_GLIBCXX_USE_C99): Replace with ...
+	(_GLIBCXX_USE_C99_MATH): ... this.
+
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: XFAIL for
+	arm-none-elf.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/6476-2.cc: Likewise.
+	* testsuite/27_io/objects/char/9.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
+
+2003-12-28  Paolo Carlini  
+
+	* include/ext/pool_allocator.h (class __pool_alloc): Use
+	operator new and operator delete.
+
+2003-12-24  Andrew Pinski  
+
+	* config/cpu/i386/atomicity.h (__exchange_and_add): Fix output
+	constraint.
+
+	PR libstdc++/13480
+	* config/cpu/i386/atomicity.h: Split up read-write memory operand.
+
+2003-12-23  Benjamin Kosnik  
+
+	* include/ext/new_allocator.h (new_allocator): Proper allocator class.
+	(__new_alloc): Delete.
+	* include/ext/malloc_allocator.h (malloc_allocator): Same.
+	(__malloc_alloc): Delete.
+ 	* include/ext/mt_allocator.h: Same, but weakly.
+ 	* include/ext/debug_allocator.h: Convert to the new style.
+	* include/ext/pool_allocator.h: Use global new and delete directly.
+	* include/backward/alloc.h: Don't inject malloc_allocator, or
+	debug_allocator.
+	* testsuite/ext/allocators.cc: Minimal fixups for usage of new
+	classes.  Comment out tests with __pool_alloc for now.
+	* testsuite/performance/allocator.cc: Same.
+
+2003-12-22  Matt Austern  
+
+	* include/bits/stl_bvector.h (_Bvector_alloc_base): Eliminate.
+	(_Bvector_base): Inherit directly from word allocator.
+	* include/bits/stl_tree.h (_Rb_tree_alloc_base): Eliminate.
+	(_Rb_tree_base): Eliminate.
+	(_Rb_tree): Inherit directly from node allocator.
+	* include/ext/slist (_Alist_alloc_base): Eliminate.
+	(_Slist_base): Inherit direcly from node allocator.
+
+2003-12-22  Benjamin Kosnik  
+
+	* testsuite/18_support/numeric_limits.cc: Add _GLIBCXX_ASSERT to
+	dg-options in testcases that use VERIFY.
+	* testsuite/23_containers/vector/invalidation/1.cc: Same.
+	* testsuite/23_containers/vector/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/3.cc: Same.
+	* testsuite/23_containers/vector/invalidation/4.cc: Same.
+	* testsuite/23_containers/vector/resize/1.cc: Same.
+	* testsuite/26_numerics/complex_value.cc: Same.
+	* testsuite/27_io/ios_base/storage/1.cc: Same.
+	* testsuite/27_io/ios_base/storage/2.cc: Same.
+	* testsuite/27_io/ios_base/storage/3.cc: Same.
+	* testsuite/27_io/manipulators/standard/char/2.cc: Same.
+	* testsuite/backward/11460.cc: Same.
+	* testsuite/backward/strstream_members.cc: Same.
+
+	* include/ext/hash_set (class hash_multiset): Fix typo.
+
+2003-12-22  Benjamin Kosnik  
+
+	* testsuite/27_io/objects/char/5.cc: Don't use stdc++.h.gch.
+	* testsuite/27_io/objects/wchar_t/5.cc: Same.
+	* docs/html/test.html: Add docs for constructing test files that
+	don't use stdc++.h.gch.
+	* scripts/testsuite_flags.in (PCHFLAGS): Move to --cxxpchflags.
+	* testsuite/libstdc++-dg/normal.exp: Compute DEFAULT_CXXFLAGS
+	differently.
+
+	* include/bits/ios_base.h (ios_base::Init::_S_initialized): Remove.
+	* src/ios_init.cc: Same.
+	* config/linker-map.gnu: Same.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+
+2003-12-22  Andrew Pinski  
+
+	PR libstdc++/13462
+	* include/bits/stl_multiset.h (__gnu_norm::multiset): Define pointer
+	as allocator's pointer, likewise for reference, const_pointer, and
+	const_reference.
+	* include/bits/stl_set.h (__gnu_norm::set): Likewise.
+	* include/ext/hash_set (__gnu_ext::hash_set): Likewise.
+	(__gnu_ext::hash_multiset): Likewise.
+
+2003-12-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int,
+	num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+	first look for decimal_point and thousands_sep, when parsing
+	sign, leading zeros (and 0, Ox, 0X for integer types) too.
+	* testsuite/22_locale/num_get/get/char/12.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+
+	* testsuite/22_locale/num_get/get/char/11.cc: Add a comment.
+	* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-20  Jason Merrill  
+
+	* config/cpu/powerpc/atomicity.h: Fix oversight in previous
+	change.
+
+2003-12-20  Jerry Quinn  
+
+	* docs/doxygen/TODO: Update.
+	* include/bits/locale_classes.h (locale, facet, id): Document.
+	* include/bits/locale_facets.tcc (has_facet, use_facet): Document.
+
+2003-12-19  Jason Merrill  
+
+	* config/cpu/cris/atomicity.h: Remove memory clobbers.
+	* config/cpu/mips/atomicity.h: Likewise.
+	* config/cpu/i486/atomicity.h: Remove memory clobbers.
+	Split up read-write memory operand.
+	* config/cpu/m68k/atomicity.h: Likewise.
+	* config/cpu/powerpc/atomicity.h: Make memory I/O explicit.
+	* config/cpu/s390/atomicity.h: Likewise.
+	* config/cpu/sparc/atomicity.h: Likewise.
+
+2003-12-20  Carlo Wood  
+
+	* bits/demangle.h
+	namespace __gnu_cxx::demangler
+	(session::decode_encoding): Put the postfix
+	of the return type of (member) functions after the function
+	instead of after the return type.
+
+2003-12-19  Jerry Quinn  
+
+        * include/bits/locale_facet.h
+        (__ctype_abstract_base,ctype,ctype,ctype):
+        Document.
+
+2003-12-19  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int,
+	num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+	first look for decimal_point and thousands_sep.
+	* testsuite/22_locale/num_get/get/char/11.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-19  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	When __found_sci becomes true stop eating thousands separators
+	and the decimal radix separator.
+	* testsuite/22_locale/num_get/get/char/9.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/9.cc: Likewise.
+
+	* config/locale/generic/c_locale.cc (__convert_to_v): Don't
+	check that *__sanity == '\0': parsing may stop earlier, still
+	be successful.
+	* config/locale/gnu/c_locale.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/10.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+	Tweak in one place accordingly.
+
+	* testsuite/22_locale/money_get/get/char/1.cc: Fix typo.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+
+2003-12-18  Benjamin Kosnik  
+
+	* include/bits/stl_list.h: Formatting tweaks.
+	* include/bits/list.tcc: Same.
+
+2003-12-18  Matt Austern  
+
+	* include/bits/demangle.h: Fix allocator type correctness,
+	i.e. make sure that when we instantiate a container with a value
+	type and an allocator, the allocator's value type matches the
+	container's.
+	* include/bits/stl_deque.h (_Deque_alloc_base): Eliminate.
+	(_Deque_base): inherit directly from the deque's allocator.  Use
+	rebinding instead of _Alloc_traits.  Pick up data members from
+	_Deque_alloc_base.
+	* include/bits/stl_list.h (_List_alloc_base): Eliminate.
+	(_List_base): Inherit directly from the list's allocator.  Use
+	rebinding instead of _Alloc_traits.  Pick up data members from
+	_List_alloc_base.
+	* include/bits/stl_vector.h (_Vector_alloc_base): Eliminate
+	(_Vector_base): Inherit directly from the vector's allocator.  Use
+	rebinding instead of _Alloc_traits.  Pick up data members from
+	_Vector_alloc_base.
+	* include/ext/hashtable.h: Fix allocator type correctness (the
+	vector of buckets must be passed an allocator for objects of
+	type _Node*).  Use rebinding instead of _Alloc_traits.
+
+2003-12-17  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+	Use narrow to get from __format[__i] a char __c representing a
+	formatting code, don't use it to compare *__beg to __format[__i].
+	* testsuite/22_locale/time_get/get_date/wchar_t/4.cc: New.
+
+2003-12-17  Paolo Carlini  
+
+	* testsuite/performance/container_benchmark.cc: Tweak outputs.
+
+	* testsuite/performance/list_create_fill_sort.cc: Shrink a
+	bit some outputs.
+
+	* testsuite/testsuite_performance.h: Widen a few output fields.
+
+	* testsuite/performance/ifstream_extract_int.cc: New.
+
+2003-12-16  Phil Edwards  
+
+	* configure.ac (AM_INIT_AUTOMAKE):  Don't warn about GNU Make.
+	* configure:  Regenerated.
+	* Makefile.am (check-%):  New catch-all forwarding target.
+	* Makefile.in:  Regenerated.
+
+2003-12-16  Paolo Carlini  
+
+	* testsuite/performance/container_benchmark.cc: New, a
+	benchmark developed by Bjarne Stroustrup and Alexander
+	Stepanov and made available with no restrictions.
+
+	* testsuite/testsuite_performance.h (report_header): New,
+	useful to produce header lines in the reports.
+
+2003-12-16  Jonathan Wakely  
+
+	* docs/html/21_strings/howto.html: Document shrink-to-fit reserve().
+	* docs/html/faq/index.html: Reducing vector's capacity() to size().
+	* docs/html/documentation.html, docs/html/faq/index.txt: Regenerate.
+
+2003-12-16  Paolo Carlini  
+
+	* testsuite/performance/narrow_widen_char.cc: Tweak the
+	number of iterations for each test.
+	* testsuite/performance/narrow_widen_wchar_t.cc: Add a
+	missing clear_counters.
+
+2003-12-16  Paolo Carlini  
+
+	PR libstdc++/11723
+	* include/bits/locale_facets.h: Add _M_bit and _M_wmask,
+	used to speed up the computation of ctype::do_is.
+	* config/locale/generic/ctype_members.cc
+	(_M_initialize_ctype): Fill _M_bit and _M_wmask.
+	(ctype::do_is): Use _M_bit and _M_wmask.
+	* config/locale/gnu/ctype_members.cc: Likewise.
+	* testsuite/performance/is_wchar_t.cc: New.
+
+	* testsuite/performance/narrow_widen_wchar_t.cc: Tweak
+	string literal (incorrect citation ;)
+
+	* include/bits/locale_facets.h: Minor tweaks, const
+	correctness, unsigned -> size_t.
+
+2003-12-16  Jerry Quinn  
+
+	* include/bits/locale_facets.h (widen, narrow):  Uncomment the
+	intended code.
+
+2003-12-15  Jerry Quinn  
+
+        * config/os/aix/ctype_noninline.h,
+	config/os/bsd/freebsd/ctype_noninline.h,
+	config/os/bsd/netbsd/ctype_noninline.h,
+	config/os/djgpp/ctype_noninline.h,
+	config/os/generic/ctype_noninline.h,
+	config/os/gnu-linux/ctype_noninline.h,
+	config/os/hpux/ctype_noninline.h,
+	config/os/irix/irix5.2/ctype_noninline.h,
+	config/os/irix/irix6.5/ctype_noninline.h,
+	config/os/mingw32/ctype_noninline.h,
+	config/os/newlib/ctype_noninline.h,
+	config/os/qnx/qnx6.1/ctype_noninline.h,
+	config/os/solaris/solaris2.5/ctype_noninline.h,
+	config/os/solaris/solaris2.6/ctype_noninline.h,
+	config/os/solaris/solaris2.7/ctype_noninline.h,
+	config/os/vxworks/ctype_noninline.h,
+	config/os/windiss/ctype_noninline.h (ctype):  Initialize
+	_M_narrow, _M_widen.
+	* include/bits/locale_facets.h (_M_widen, _M_widen_ok,
+	_M_narrow, _M_narrow_ok): New.
+	(widen, narrow): Use tables to bypass virtual functions.
+	(_M_widen_init, _M_narrow_init): New.
+
+2003-12-15  Carlo Wood  
+
+	* include/bits/ios_base.h (Init::_S_initialized): Change into
+	declaration.
+	* src/ios_init.cc (Init::_S_initialized): Add definition.
+
+2003-12-15  Benjamin Kosnik  
+
+	PR libstdc++/12658
+	* include/Makefile.am (bits_headers): Add concurrence.h.
+	* include/Makefile.in: Regenerated.
+	* include/bits/concurrence.h: New.
+	* src/locale_init.cc: Use it.
+	(locale::locale): Lock critical regions.
+	(locale::global): Same.
+
+2003-12-15  Benjamin Kosnik  
+
+	* include/bits/basic_string.h: Change _*_references to _*_refcount.
+	* include/bits/locale_classes.h: Same.
+	* src/locale.cc: Same.
+	* src/locale_name.cc: Same.
+	* src/locale_init.cc: Same.
+
+2003-12-15  Benjamin Kosnik  
+
+	PR libstdc++/12855
+	* include/bits/ios_base.h (Init::_S_ios_base_init): Change to
+	_S_refcount, make atomic.
+	* src/ios.cc: Adjust definition.
+	* src/ios_init.cc (ios_base::Init::Init): Use __exchange_and_add,
+	and __atomic_add.
+	(ios_base::Init::~Init): Same.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-12-15  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::do_get(bool&)):
+	Fail as soon as the begins of both truename and falsename
+	stop to match; always leave __beg one position beyond the
+	last char successfully matched.
+	* testsuite/22_locale/num_get/get/char/8.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/8.cc: Likewise.
+
+2003-12-15  Paolo Carlini  
+
+	* include/bits/locale_facets.h (_M_widen): Reserve space
+	for all the possible widened chars.
+	* config/locale/generic/ctype_members.cc (_M_initialize_ctype):
+	Compute at construction time all the possible widened chars.
+	(do_widen): Tweak, simplify.
+	* config/locale/gnu/ctype_members.cc: Likewise.
+	* testsuite/performance/narrow_widen_wchar_t.cc: Add tests
+	for the array versions.
+
+2003-12-12  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	PR libstdc++/13341
+	* include/bits/locale_facets.h (ctype): Declare
+	_M_initialize_ctype() and _M_narrow_ok, _M_narrow and _M_widen.
+	* src/ctype.cc (ctype::ctype(size_t),
+	ctype::ctype(__c_locale, size_t)): Use
+	_M_initialize_ctype to fill _M_narrow and _M_widen.
+	(ctype_byname::ctype_byname(const char*, size_t)):
+	Likewise.
+	* config/locale/generic/ctype_members.cc (do_narrow, do_widen)
+	Use _M_narrow and _M_widen when possible, instead of calling
+	wctob and btowc, respectively.
+	(_M_initialize_ctype): Define, it fills at construction time
+	_M_narrow and _M_widen.
+	* config/locale/gnu/ctype_members.cc: Likewise.
+	* testsuite/performance/narrow_widen_wchar_t.cc: New.
+
+2003-12-12  Jonathan Wakely  
+
+	* docs/html/faq/index.txt: Regenerate after adding  tags.
+
+2003-12-11  Neil Ferguson  
+            Paolo Carlini  
+
+	* include/bits/basic_string.tcc (reserve): Allow shrink-to-fit.
+	* testsuite/21_strings/basic_string/capacity/1.cc: Tweak.
+	* testsuite/21_strings/basic_string/capacity/char/1.cc: Ditto.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Ditto.
+
+2003-12-10  Benjamin Kosnik  
+
+	PR libstdc++/6243
+	* testsuite/lib/libstdc++.exp (v3-init): Add
+	original_ld_library_path, calculate ld_library path, set
+	LD_LIBRARY_PATH to both. Based on libjava.exp.
+
+2003-12-10  Benjamin Kosnik  
+            Alexandre Oliva  
+
+	PR libstdc++/11612
+	* testsuite/Makefile.am (GLIBCXX_DIR): New.
+	(GLIBGCC_DIR): New.
+	(CXXLINK): Use both with -R so libtool links the correct libs.
+
+2003-12-10  Paolo Carlini  
+
+	PR libstdc++/13217
+	* include/bits/fstream.tcc (underflow): Deal gracefully with
+	read errors: throw ios_base::failure.
+
+2003-12-10  Benjamin Kosnik  
+
+	PR libstdc++/10063
+	* config/io/basic_file_stdio.cc (__basic_file::sys_open): Sync.
+	* testsuite/ext/stdio_filebuf/char/10063-1.cc: New.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: New.
+
+2003-12-10  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put::do_put(void*)):
+	Remove the try/catch, not necessary.
+
+2003-12-10  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12438.cc: Tweak memory
+	limit and iterations to avoid spurious failures on some
+	64 bit machines.
+
+2003-12-09  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Remove private ios_base members from
+	export list.
+
+	* config/cpu/alpha/atomicity.h: Consistently format.
+	* config/cpu/cris/atomicity.h: Same.
+	* config/cpu/generic/atomicity.h: Same.
+	* config/cpu/hppa/atomicity.h: Same.
+	* config/cpu/i386/atomicity.h: Same.
+	* config/cpu/i486/atomicity.h: Same.
+	* config/cpu/ia64/atomicity.h: Same.
+	* config/cpu/m68k/atomicity.h: Same.
+	* config/cpu/mips/atomicity.h: Same.
+	* config/cpu/powerpc/atomicity.h: Same.
+	* config/cpu/s390/atomicity.h: Same.
+	* config/cpu/sparc/atomicity.h: Same.
+
+2003-12-09  Benjamin Kosnik  
+
+	PR libstdc++/13296
+	* acinclude.m4 (GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS): Remove.
+	* aclocal.m4: Regenerate.
+	* configure.ac: Remove call to GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS.
+	* conigure: Regenerate.
+	* src/Makefile.am (libstdc___la_LDFLAGS): Remove LIBUNWIND_FLAGS.
+	* src/Makefile.in: Regenerate.
+	* docs/html/17_intro/configury.html: Modify.
+
+2003-12-09  Paolo Carlini  
+
+	* include/bits/demangle.h (struct implementation_details):
+	Keep in comments the names of the unused parameters.
+
+2003-12-09  Paolo Carlini  
+
+	* include/bits/demangle.h (struct implementation_details):
+	Fix unused parameters warning.
+
+2003-12-09  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int):
+	Slightly streamline the code dealing with overflows and the
+	parsing of the sign.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/ext/algorithm, include/ext/debug_allocator.h,
+	include/ext/enc_filebuf.h, include/ext/functional,
+	include/ext/hash_fun.h, include/ext/hash_map, include/ext/hash_set,
+	include/ext/hashtable.h, include/ext/iterator,
+	include/ext/malloc_allocator.h, include/ext/memory,
+	include/ext/mt_allocator.h, include/ext/numeric,
+	include/ext/pod_char_traits.h, include/ext/pool_allocator.h,
+	include/ext/rb_tree, include/ext/rope, include/ext/ropeimpl.h,
+	include/ext/slist, include/ext/stdio_filebuf.h,
+	include/ext/stdio_sync_filebuf.h: Remove trailing whitespace.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/debug/bitset, include/debug/debug.h, include/debug/deque,
+	include/debug/formatter.h, include/debug/hash_map.h,
+	include/debug/hash_multimap.h, include/debug/hash_multiset.h,
+	include/debug/hash_set, include/debug/hash_set.h, include/debug/list,
+	include/debug/map.h, include/debug/multimap.h,
+	include/debug/multiset.h, include/debug/safe_base.h,
+	include/debug/safe_iterator.h, include/debug/safe_iterator.tcc,
+	include/debug/safe_sequence.h, include/debug/set.h,
+	include/debug/string, include/debug/vector: Remove trailing whitespace.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/c_compatibility/iso646.h, include/c_compatibility/limits.h,
+	include/c_compatibility/locale.h, include/c_compatibility/stdio.h,
+	include/c_compatibility/string.h, include/c_compatibility/time.h,
+	include/c_compatibility/wchar.h, include/c_compatibility/wctype.h:
+	Remove trailing whitespace.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/c_std/cmath.tcc, include/c_std/std_cassert.h,
+	include/c_std/std_cctype.h, include/c_std/std_cmath.h,
+	include/c_std/std_cstddef.h, include/c_std/std_cstdio.h,
+	include/c_std/std_cstdlib.h, include/c_std/std_cstring.h,
+	include/c_std/std_cwchar.h, include/c_std/std_cwctype.h:
+	Remove trailing whitespace.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/c/std_cctype.h, include/c/std_cmath.h,
+	include/c/std_cstdlib.h include/c/std_cwchar.h,
+	include/c/std_cwctype.h: Remove trailing whitespace.
+
+2003-12-09  Bernardo Innocenti  
+
+	* include/backward/algo.h, include/backward/algobase.h,
+	include/backward/alloc.h, include/backward/complex.h,
+	include/backward/defalloc.h, include/backward/function.h,
+	include/backward/iterator.h, include/backward/new.h,
+	include/backward/ostream.h, include/backward/queue.h,
+	include/backward/rope.h, include/backward/stream.h,
+	include/backward/streambuf.h, include/backward/strstream,
+	include/backward/tempbuf.h, include/backward/tree.h,
+	include/backward/vector.h: Remove trailing whitespace.
+
+2003-12-08  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc (__convert_to_v(long&),
+	__convert_to_v(unsigned long&), __convert_to_v(long long&),
+	__convert_to_v(unsigned long long&): Remove.
+	(__convert_to_v(float&), __convert_to_v(double&),
+	__convert_to_v(long double&)): Remove last unused parameter.
+	* config/locale/gnu/c_locale.cc: Likewise.
+	* include/bits/locale_facets.h: Likewise.
+	(num_get::_M_extract_int): Update declaration.
+	(class __num_base): Tweak _S_ie and _S_iE according to the
+	_S_atoms_in changes.
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int):
+	Provide directly the final _ValueT, not a string: accumulate
+	the result checking for overflow at each digit.
+	(num_get::do_get(bool&), num_get::do_get(long&),
+	num_get::do_get(unsigned short&), num_get::do_get(unsigned int&),
+	num_get::do_get(unsigned long&), num_get::do_get(long long&),
+	num_get::do_get(unsigned long long&), num_get::do_get(void*&)):
+	Use the new _M_extract_int, simplify.
+	* src/locale-inst.cc (num_get::_M_extract_int(long&),
+	num_get::_M_extract_int(unsigned short&),
+	num_get::_M_extract_int(unsigned int&),
+	num_get::_M_extract_int(unsigned long&),
+	num_get::_M_extract_int(long long&),
+	num_get::_M_extract_int(unsigned long long&): Instantiate.
+	* src/locale_facets.cc (__num_base::_S_atoms_in): Reorder
+        the chars in the natural order: abcdefABCDEF.
+
+2003-12-08  David S. Miller  
+
+	PR libstdc++/12496
+	* config/cpu/sparc/atomicity.h (__exchange_and_add, __atomic_add):
+	Extend increment to _Atomic_word before giving to assembler.
+
+2003-12-06  Benjamin Kosnik  
+
+	* testsuite/ext/enc_filebuf/char/13189.cc: Guard for __enc_traits.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Same.
+
+2003-12-06  Benjamin Kosnik  
+
+	PR libstdc++/11691
+	* include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf):
+	Remove __del argument to file descriptor constructor.
+	* config/io/basic_file_stdio.h (__basic_file::sys_open): Remove
+	bool argument.
+	* config/io/basic_file_stdio.cc: Same.
+
+2003-12-05  Benjamin Kosnik  
+
+	PR libstdc++/13189
+	* include/ext/enc_filebuf.h: Fix.
+	* include/bits/fstream.tcc: Tweak formatting.
+	* include/bits/postypes.h: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/streambuf.tcc: Same.
+	* testsuite/ext/stdio_filebuf.cc: Split.
+	* testsuite/ext/stdio_filebuf_2.cc: Split.
+	* testsuite/ext/stdio_sync_filebuf_char.cc: Split.
+	* testsuite/ext/stdio_sync_filebuf_wchar_t.cc: Split.
+	* testsuite/ext/enc_filebuf/char/13189.cc: New.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: New.
+	* testsuite/ext/stdio_filebuf/char/1.cc: New.
+	* testsuite/ext/stdio_filebuf/char/2.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/char/1.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: New.
+
+2003-12-05  Carlo Wood  
+
+	PR libstdc++/13045
+	* bits/demangle.h
+	namespace __gnu_cxx::demangler
+	(enum substitution_nt): Removed trailing comma.
+	(implementation_details): Added.
+	(session::M_implementation_details): Added.
+	(session::session): Pass implementation_details.
+	(session::decode_encoding): Same.
+	(session::decode_real): Added.
+	(_GLIBCXX_DEMANGLER_STYLE_VOID _GLIBCXX_DEMANGLER_STYLE_LITERAL
+	_GLIBCXX_DEMANGLER_STYLE_LITERAL_INT
+	_GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
+	_GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Replaced with
+	implementation_details equivalent.
+	(session::decode_expression):
+	Use M_implementation_details instead of macros. Add extra parentheses
+	around 'larger than' operator in expressions in template arguments.
+	(session::decode_bare_function_type): Idem.
+	(session::decode_literal):
+	Idem, and call decode_real for floating literals.
+	(session::decode_type_with_postfix): Put the postfix
+	of the return type of (member) functions after the function
+	instead of after the return type.  Also, put a space after the
+	prefix of qualified function pointers: "int (* const".
+	* src/demangle.cc: include most dependent header file first.
+	* testsuite/demangle/regression/cw-16.cc: Updated two
+	and added three tests.
+
+2003-12-04  Benjamin Kosnik  
+
+	PR libstdc++/13284
+	* include/bits/stl_algo.h (__random_number): Remove.
+	(random_shuffle): Use rand, as permitted by DR 395.
+	* include/ext/algorithm: Same.
+	* linkage.m4 (GLIBCXX_CHECK_STDLIB_SUPPORT): Remove lrand48.
+	* acconfig.h: Same.
+	* crossconfig.m4: Remove HAVE_DRAND48, HAVE_LRAND48.
+	* config.h.in: Regenerated.
+	* configure: Same.
+	* aclocal.m4: Same.
+
+2003-12-04  Paolo Carlini  
+
+	PR libstdc++/12653
+	* include/std/std_bitset.h (operator>>): Implement resolution
+	of DR 303 [WP]: use widen('0') and widen('1').
+	* docs/html/ext/howto.html: Add an entry for DR 303.
+
+	* include/std/std_bitset.h (operator>>): Implement the common
+	requirements of formatted input functions (27.6.1.2.1).
+
+	* include/std/std_bitset.h (operator>>): Set the failbit when
+	nothing was extracted and _Nb != 0.
+	* testsuite/23_containers/bitset/input/1.cc: New.
+
+2003-12-03  Paolo Carlini  
+
+	PR libstdc++/12791
+	* include/bits/locale_facets.tcc (time_get::_M_extract_num):
+	Rewrite, stop the parsing as soon as a digit cannot possibly
+	lead to a final number within the bounds; otherwise, simplify,
+	avoiding __ctype.is() and atoi().
+	* testsuite/22_locale/time_get/get_date/char/12791.cc: New.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: New.
+
+	* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+	Minor tweak: a 4-digit integer cannot be bigger than 9999.
+
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Use
+	type-correct wchar_t string literals.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
+
+2003-12-02  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get::do_get_year):
+	Avoid using a basic_string and calling a full blown strtol
+	(via __convert_to_v) for simple 2 or 4 digits, base 10,
+	positive integers; simplify.
+
+2003-12-02  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(money_base::_S_construct_pattern): For case 3: and 4:
+	exchanging 'if (__precedes)' and 'if (__space)' allows
+	to factor out a few more assignments.
+
+2003-12-01  Benjamin Kosnik  
+
+	* include/bits/basic_ios.h (basic_ios::setstate): Revert.
+	* include/bits/istream.tcc: Only call setstate if __err != goodbit.
+	* include/bits/ostream.tcc: Same.
+	* testsuite/27_io/basic_ios/exceptions/char/2.cc: New.
+
+	* testsuite/testsuite_io.h (__gnu_test::fail_streambuf): Make
+	internal buffer non-static.
+
+2003-12-01  Benjamin Kosnik  
+
+	* docs/html/17_intro/C++STYLE: Add exception bits.
+	* include/bits/fstream.tcc: Add location info to exception strings.
+
+	* include/bits/stl_construct.h: Formatting tweaks.
+
+2003-12-01  Paolo Carlini  
+
+	PR libstdc++/10378
+	* include/bits/allocator.h (allocator::construct): Implement
+	resolution of DR 402 [Ready] (in Revision 28).
+	* include/bits/allocator_traits.h (__allocator::construct):
+	Likewise.
+	* include/bits/stl_construct.h (_Construct): Likewise.
+	* testsuite/20_util/allocator_members.cc: Move to...
+	* testsuite/20_util/allocator/1.cc: ... here.
+	* testsuite/20_util/allocator/10378.cc: New.
+	* docs/html/ext/howto.html: Add an entry for DR 402.
+
+2003-11-30  Paolo Carlini  
+
+	* config/locale/gnu/codecvt_members.cc (codecvt::do_in,
+	codecvt::do_length): More minor tweaks.
+
+2003-11-30  Paolo Carlini  
+
+	* config/locale/gnu/codecvt_members.cc (codecvt::do_in):
+	Minor stylistic tweak.
+
+2003-11-30  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put::do_put(..., bool)):
+	Minor tweaks, consistent with the style used in other facets.
+
+2003-11-29  Paolo Carlini  
+
+	* include/bits/fstream.tcc (underflow): Minor tweaks in
+	preparation for libstdc++/13217.
+
+2003-11-29  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc:
+	Tweak for a few small problems (fix timings, use VERIFY..)
+
+2003-11-28  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: Remove.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: New,
+	the original third testcase for libstdc++/13171 belong here.
+
+2003-11-28  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc:
+	Remove extraneous wchar_t lines.
+
+2003-11-27  Paolo Carlini  
+
+	PR libstdc++/11544
+	PR libstdc++/11603
+	* include/bits/fstream.tcc (underflow): Throw ios_base::failure
+	upon incomplete or invalid byte sequences in the file.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc: New.
+
+2003-11-27  Paolo Carlini  
+
+	* include/std/std_streambuf.h (__copy_streambufs): Remove
+	the first, unused, basic_ios<> parameter.
+	* src/streambuf-inst.cc: Likewise.
+	* include/bits/streambuf.tcc: Likewise.
+	* include/bits/istream.tcc (operator>>(__streambuf_type*)):
+	Tweak accordingly the call.
+	* include/bits/ostream.tcc (operator<<(__streambuf_type*)):
+	Likewise.
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Remove
+	redundant try/catch.
+
+2003-11-26  Benjamin Kosnik  
+
+	PR libstdc++/9371
+	PR libstdc++/9546
+	PR libstdc++/10093
+	PR libstdc++/10095
+	* include/bits/basic_ios.h (basic_ios::setstate): Elide if goodbit.
+	(basic_ios::_M_setstate): Consolidate common error handling code.
+	* include/bits/basic_ios.tcc: Tweak.
+	* include/bits/fstream.tcc: Tweak.
+	* include/bits/istream.tcc: Use _M_setstate for common exception
+	handling. Move setstate calls after catch.
+	(basic_istream::tellg): Check for exceptions thrown by streambuf
+	virtual functions.
+	(basic_istream::seekg): Same.
+	* include/bits/ostream.tcc: Same, but for ostream.
+	(basic_ostream::flush): Check for exceptions thrown by streambuf
+	virtual functions.
+	(basic_istream::tellp): Same.
+	(basic_istream::seekp): Same.
+	* include/bits/locale_facets.tcc: Tweak.
+	* include/bits/streambuf.tcc: Tweak.
+	(__copy_streambufs): Propagate exceptions.
+	* testsuite/testsuite_io.h (fail_streambuf): New.
+	(fail_num_get): New.
+	(fail_num_put): New.
+	(facet_error): New.
+	(underflow_error): New.
+	(overflow_error): New.
+	(positioning_error): New.
+	* testsuite/27_io/basic_istream/exceptions/char/9561.cc: Tweak.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
+        exceptions_badbit_throw.cc, exceptions_failbit.cc,
+        exceptions_failbit_throw.cc: New.
+	* testsuite/27_io/basic_istream/extractors_other/char/
+	error_failbit.cc, exceptions_badbit_throw.cc,
+        exceptions_failbit_throw.cc, exceptions_null.cc: New.
+	* testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
+	New.
+	* testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc:
+	New.
+	* testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
+	New.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	exceptions_badbit_throw.cc, exceptions_failbit_throw.cc: New.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	error_failbit.cc, exceptions_badbit_throw.cc,
+        exceptions_failbit_throw.cc, exceptions_null.cc: New.
+	* testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
+	New.
+	* testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
+	New.
+
+2003-11-26  Benjamin Kosnik  
+
+	PR libstdc++/12297
+	* include/bits/istream.tcc
+	(basic_istream::sentry::sentry): Set failbit and eofbit when eof.
+	* testsuite/27_io/basic_istream/sentry/char/12297.cc: New.
+
+2003-11-26  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/13171
+	* include/bits/fstream.tcc (imbue): Relax the conditions under
+	which the function succeeds: allow for two consecutive calls with
+	the same name; state dependent encodings are ok even after open
+	if at the beginning of the file; don't check seekoff return value
+	(pipes, cin, cout, etc...)
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak comment.
+	* testsuite/27_io/basic_filebuf/imbue/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Tweak comment.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: Likewise.
+
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: More
+	correctly use the UTF-8 locale appearing in the PR.
+
+2003-11-26  Paolo Carlini  
+
+	* include/bits/locale_facets.h
+	(__numpunct_cache<>::_M_cache): Avoid zeroing _M_grouping,
+	_M_truename and _M_falsename: the constructor always does
+	it immediately before the _M_cache call.
+
+2003-11-25  Paolo Carlini  
+
+	* config/locale/gnu/codecvt_members.cc (codecvt::do_length):
+	Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
+	former is very fast, but stops if encounters a NUL.
+	(codecvt::do_out): Tweaks.
+	(codecvt::do_in): Tweaks, improve the code dealing with errors.
+	* testsuite/performance/wchar_t_length.cc: New.
+
+2003-11-24  Paolo Carlini  
+
+	* config/locale/gnu/codecvt_members.cc (codecvt::do_in):
+	Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
+	former is very fast, but stops if encounters a NUL.
+	(codecvt::do_out): Tweak.
+	* testsuite/performance/wchar_t_in.cc: New.
+
+2003-11-24  Paolo Carlini  
+
+	* include/bits/locale_facets.h
+	(__numpunct_cache<>::_M_cache): Set _M_allocated at the beginning
+	in order to avoid memory leaks; simplify a bit.
+
+2003-11-24  Benjamin Kosnik  
+
+	* include/bits/streambuf_iterator.h (ostreambuf_iterator): Remove
+	non-standard throw specs.
+	* testsuite/24_iterators/istreambuf_iterator.cc: Split into...
+	* testsuite/24_iterators/istreambuf_iterator/1.cc
+	* testsuite/24_iterators/istreambuf_iterator/2.cc
+	* testsuite/24_iterators/istreambuf_iterator/2627.cc
+	* testsuite/24_iterators/ostreambuf_iterator.cc: Split into...
+	* testsuite/24_iterators/ostreambuf_iterator/1.cc
+	* testsuite/24_iterators/ostreambuf_iterator/2.cc
+
+	* testsuite/24_iterators/reverse_iterator/1.cc: Just compile,
+	don't link.
+
+	* include/bits/allocator.h: Formatting tweak.
+
+2003-11-24  Paolo Carlini  
+
+	* src/locale_init.cc: Cosmetic reformatting.
+
+2003-11-23  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__add_grouping):
+	Cosmetic reformatting.
+
+2003-11-23  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (_M_extract_float,
+	_M_extract_int): Remove a wrong comment and simplify
+	the corresponding code using char_traits::find().
+
+2003-11-22  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(money_base::_S_construct_pattern): Factor out two assignments.
+
+2003-11-22  Paolo Carlini  
+
+	* include/bits/istream.tcc (getline(basic_string<>&)):
+        Fix error in comment of the previous commit.
+
+2003-11-22  Paolo Carlini  
+
+	PR libstdc++/12593
+	* include/bits/istream.tcc (operator>>(basic_string<>&),
+	getline(basic_string<>&)): Implement resolution of DR 91 [WP];
+	fix some minor issues with the exit conditions.
+	* docs/html/ext/howto.html: Add an entry for DR 91.
+
+2003-11-21  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(money_base::_S_construct_pattern): Factor out an assignment.
+
+2003-11-21  Paolo Carlini  
+
+	PR libstdc++/12882 (partial)
+	* acinclude.m4 (GLIBCXX_CHECK_LFS): Check fseeko64
+	and ftello64 too.
+	* include/ext/stdio_sync_filebuf.h (seekoff): Use fseeko64
+	and ftello64 if available.
+	* aclocal.m4: Regenerate.
+	* configure: Ditto.
+
+2003-11-20  Benjamin Kosnik  
+
+	* include/debug/formatter.h: Use _Tp as template argument.
+	* src/debug.cc: Same, instantiate std::size_t.
+
+2003-11-20  Benjamin Kosnik  
+
+	PR libstdc++/13109
+	* include/debug/formatter.h (_Error_formatter::_M_format_word): New.
+	* src/debug.cc (__gnu_debug): Format.
+	(_Error_formatter::_M_format_word): Define, use, instantiate.
+
+2003-11-20  Paolo Carlini  
+
+	PR libstdc++/11602
+	* config/locale/gnu/codecvt_members.cc (codecvt::do_out):
+	Rewrite, using both wcsnrtombs and wcrtomb in a loop: the
+	former is very fast, but stops if encounters a NUL.
+	* testsuite/performance/wchar_t_out.cc: New, from the PR.
+
+2003-11-19  Paolo Carlini  
+
+	* config/locale/gnu/codecvt_members.cc (do_out): If
+	we can upper bound the total number of external chars
+	to something smaller than __to_end - __to, avoid the
+	temporary buffer, the memcopy and simplify the loop.
+	* config/locale/generic/codecvt_members.cc (do_out):
+	Likewise.
+
+2003-11-19  Andreas Tobler  
+
+	* testsuite/lib/libstdc++.exp: Add DYLD_LIBRARY_PATH for darwin.
+	* testsuite/libstdc++-dg/normal.exp: Add -multiply_defined suppress
+	flag.
+
+2003-11-18  Jonathan Wakely  
+
+	* docs/html/configopts.html, docs/html/debug.html,
+	docs/html/documentation.html, docs/html/explanations.html,
+	docs/html/install.html, docs/html/17_intro/contribute.html,
+	docs/html/17_intro/howto.html, docs/html/17_intro/license.html,
+	docs/html/18_support/howto.html, docs/html/19_diagnostics/howto.html,
+	docs/html/20_util/howto.html, docs/html/21_strings/howto.html,
+	docs/html/22_locale/codecvt.html, docs/html/22_locale/ctype.html,
+	docs/html/22_locale/howto.html, docs/html/22_locale/locale.html,
+	docs/html/22_locale/messages.html, docs/html/23_containers/howto.html,
+	docs/html/24_iterators/howto.html, docs/html/25_algorithms/howto.html,
+	docs/html/26_numerics/howto.html, docs/html/27_io/howto.html,
+	docs/html/ext/howto.html, docs/html/ext/sgiexts.html: Add  tags.
+
+2003-11-18  Paolo Carlini  
+
+	PR libstdc++/12868
+	* include/bits/fstream.tcc (imbue): For encodings != -1 it's
+	always ok to imbue a new locale, provided seekoff(0, cur, ...)
+	doesn't fail, of course.
+	(underflow): In order for the above to work, deal gracefully
+	with _M_codecvt->in returning codecvt_base::error while
+	(__ilen = __iend - this->eback()) > 0: it just means __ilen
+	correctly converted internal characters before an error.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: New.
+
+2003-11-17  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: Fix typo in comment.
+
+2003-11-17  Paolo Carlini  
+
+	* testsuite/22_locale/num_put/put/char/8.cc: New test,
+	summarizing the discussion ensuing libstdc++/12988.
+	* testsuite/22_locale/num_put/put/wchar_t/8.cc: Ditto.
+
+2003-11-15  Paolo Carlini  
+
+	* include/std/std_fstream.h: Tweak a comment.
+
+2003-11-15  Roger Sayle  
+
+	* include/c_std/std_cmath.h: Don't import C99's float transcendentals
+	into the __gnu_cxx::__c99_binding namespace.
+	(acos, asin, atan, atan2, ceil, cosh, exp, floor, fmod, frexp,
+	ldexp, log, log10, modf, pow, sinh, tan, tanh): Implement using
+	GCC's math builtins, i.e. __builtin_foo.
+	* libmath/stubs.c (acosf, acosl, asinf, asinl, atanf, atanl,
+	ceilf, ceill, floorf, floorl, fmodf, fmodl, frexpf, frexpl,
+	ldexpf, ldexpl, modff, modfl): Provide stub implementations.
+
+2003-11-14  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12352.cc: Use
+	__gnu_test::try_named_locale.
+
+2003-11-14  Paolo Carlini  
+
+	* docs/html/ext/howto.html: Add entries for DR 63, 75
+	and 305; tweak entries for DR 60 and 328.
+
+2003-11-13  Douglas Gregor  
+
+	* docs/html/debug.html: Users are allowed to specialize in
+	namespace __gnu_debug, unlike in the Apple version of the debug
+	mode. Clear up a confusing double-negative. Note that
+	std::basic_string does provide extra debugging capabilities, but
+	not safe iterators.
+	* include/bits/basic_string.tcc: Make sure there's never an
+	ambiguity when calling __is_null_pointer.
+	* include/debug/deque: (deque::erase) Properly handle invalidation
+	when erasing at the end of the deque.
+	* include/debug/vector: (vector::swap): Swap _M_guaranteed_capacity.
+	(vector::clear): Set the guaranteed capacity to 0.
+	* testsuite/23_containers/deque/invalidation/4.cc: (test04): Test
+	iterator invalidation when erasing at the end of the deque.
+
+2003-11-13  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/13007
+	* include/bits/fstream.tcc (imbue): Don't touch the stored
+	locale.
+	* include/std/std_streambuf.h (imbue): According to the
+	standard, base class version does nothing.
+	(pubimbue): Store the locale.
+	* testsuite/27_io/basic_filebuf/imbue/char/13007.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc: New.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc: New.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc: New.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc: New.
+
+2003-11-13  Petur Runolfsson  
+
+	PR libstdc++/12594
+	* include/bits/ostream.tcc
+	(basic_ostream::operator<<(basic_ostream& (*)(basic_ostream&)),
+	basic_ostream::operator<<(basic_ios& (*)(basic_ios&)),
+	basic_ostream::operator<<(ios_base& (*)(ios_base&))):
+	Implement the resolution of DR 60 (TC): These are not formatted
+	output functions so don't construct sentry objects and don't
+	catch exceptions.
+	(basic_ostream::put, basic_ostream::write): Implement the
+	resolution of DR 63 (TC) by catching exceptions and setting
+	badbit.
+	(basic_ostream::flush): Implement the resolution of DR 60 (TC):
+	This is not an unformatted output function so don't construct
+	a sentry object.
+	* testsuite/testsuite_io.h (sync_streambuf): Define.
+	* testsuite/27_io/basic_ostream/flush/char/2.cc: New test.
+	* testsuite/27_io/basic_ostream/inserters_other/char/5.cc: New test.
+	* testsuite/27_io/basic_ostream/put/char/1.cc: New test.
+	* testsuite/27_io/basic_ostream/write/char/1.cc: New test.
+
+2003-11-13  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1:
+	Fix, closely following the testcase included in the PR.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: Ditto.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: Ditto.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: Ditto.
+
+2003-11-13  Jonathan Wakely 
+
+	* docs/html/17_intro/configury.html: XHTML tweak.
+
+2003-11-13  Jonathan Wakely 
+
+	* docs/html/debug_mode.html: XHTML fixes.
+
+2003-11-12  Benjamin Kosnik  
+
+	* docs/html/debug_mode.html: Update.
+	* docs/html/17_intro/TODO: Update.
+
+2003-11-12  Benjamin Kosnik  
+
+	* include/bits/c++config: Move using directive...
+	* include/debug/formatter.h: ...here.
+
+2003-11-12  Carlo Wood  
+
+        PR libstdc++/12947
+	* bits/demangle.h
+	(_GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS): Added.
+	(_GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Added.
+	(session::next_peek() const): Added.
+	(decode_non_negative_decimal_integer(string_type&)):
+	Renamed from decode_decimal_integer(string_type&).
+	(session::decode_nested_name):
+	Decode  as well.
+	(session::add_substitution):
+	Handle  for 's.
+	(enum xary_nt): Added.
+	(struct entry_st): Added member `xary_nt type' instead of `bool unary'.
+	(symbol_name_table_c): Updated for `entry_st::type' and additional
+	operators (unary `operator+' and `sizeof(type)').
+	(offset_table_c): Updated for new operators (causing a new hash map).
+	(decode_operator_name): Match the updated hash map.
+	(session::decode_expression):
+	Support for `sizeof ([typename] type)' (st),
+	dependent names (sr) and casting operator (cv).  Handle
+	`entry_st::type'.  Handle _GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
+	and _GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME.
+	(session::decode_type_with_postfix):
+	Support `extern "C"' function types (FY).
+	* testsuite/demangle/regression/cw-16.cc: Added tests for the
+	added functionality.
+	* testsuite/demangle/regression/3111-2.cc: sizeof now has a space
+	appended.
+
+2003-11-11  Paolo Carlini  
+
+	PR libstdc++/12875
+	* include/bits/fstream.tcc (setbuf): Don't do anything
+	after open(), in particular don't discard data.
+	(_M_allocate_internal_buffer): Tweak to not allocate memory
+	in case the buffer is provided by the user via setbuf.
+	* include/ext/stdio_filebuf.h: Tweak comment.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: New.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Tweak, now
+	setbuf does nothing after open().
+	* testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Likewise.
+
+2003-11-11  Doug Gregor  
+
+	* docs/html/debug.html: Document libstdc++ debug mode.
+	* docs/html/debug_mode.html: Document libstdc++ debug mode design.
+	* docs/html/test.html: Document how to test under debug mode.
+	* docs/html/17_intro/howto.html: Document debug-mode macros.
+	* include/Makefile.am: Install debug-mode headers.
+	* src/Makefile.am: Include debug.cc.
+	* include/bits/basic_string.tcc:
+	(basic_string::_S_construct): Fix NULL pointer check.
+	(__is_null_pointer): New.
+	Add precondition annotations.
+	* include/bits/stream_iterator.h (istream_iterator,
+	ostream_iterator): Added precondition annotations.
+	* include/bits/streambuf_iterator.h (istreambuf_iterator): Ditto.
+	* include/bits/stl_queue.h (queue, priority_queue): Ditto.
+	* include/bits/stl_stack.h (stack): Ditto.
+	* include/bits/basic_string.h (basic_string): Ditto.
+	* include/bits/basic_string.tcc (basic_string): Ditto.
+	* include/std/std_memory.h (auto_ptr): Ditto.
+	* include/std/std_valarray.h (valarray): Ditto.
+	* include/bits/stl_algo.h: Added algorithm precondition
+	annotations.
+	* include/bits/stl_algobase.h: Added algorithm precondition
+	annotations.
+	* include/bits/stl_numeric.h: Ditto.
+	* include/ext/algorithm: Added algorithm precondition
+	annotations.
+	(__is_heap): Moved away from here.
+	* include/bits/stl_heap.h: Added algorithm precondition
+	annotations.
+	(__is_heap): Moved to the top of this file.
+	(__is_heap): Added iterator range overloads.
+	* testsuite/20_util/auto_ptr_neg.cc: Fix line numbers to match up
+	with changes in std_memory.h.
+	* testsuite/23_containers/list/operators/4.cc: Don't verify
+	performance guarantees when in debug mode.
+	* testsuite/23_containers/bitset/invalidation/1.cc: New.
+	* testsuite/23_containers/deque/invalidation/1.cc: New.
+	* testsuite/23_containers/deque/invalidation/2.cc: New.
+	* testsuite/23_containers/deque/invalidation/3.cc: New.
+	* testsuite/23_containers/deque/invalidation/4.cc: New.
+	* testsuite/23_containers/list/invalidation/1.cc: New.
+	* testsuite/23_containers/list/invalidation/2.cc: New.
+	* testsuite/23_containers/list/invalidation/3.cc: New.
+	* testsuite/23_containers/list/invalidation/4.cc: New.
+	* testsuite/23_containers/map/invalidation/1.cc: New.
+	* testsuite/23_containers/map/invalidation/2.cc: New.
+	* testsuite/23_containers/multimap/invalidation/1.cc: New.
+	* testsuite/23_containers/multimap/invalidation/2.cc: New.
+	* testsuite/23_containers/multiset/invalidation/1.cc: New.
+	* testsuite/23_containers/multiset/invalidation/2.cc: New.
+	* testsuite/23_containers/set/invalidation/1.cc: New.
+	* testsuite/23_containers/set/invalidation/2.cc: New.
+	* testsuite/23_containers/vector/invalidation/1.cc: New.
+	* testsuite/23_containers/vector/invalidation/2.cc: New.
+	* testsuite/23_containers/vector/invalidation/3.cc: New.
+	* testsuite/23_containers/vector/invalidation/4.cc: New.
+	* testsuite/25_algorithms/heap.cc: Don't verify
+	performance guarantees when in debug mode.
+	* include/debug/bitset: New.
+	* include/debug/debug.h: New.
+	* include/debug/deque: New.
+	* include/debug/formatter.h: New.
+	* include/debug/hash_map: New.
+	* include/debug/hash_map.h: New.
+	* include/debug/hash_multimap.h: New.
+	* include/debug/hash_set: New.
+	* include/debug/hash_set.h: New.
+	* include/debug/hash_multiset.h: New.
+	* include/debug/list: New.
+	* include/debug/map: New.
+	* include/debug/map.h: New.
+	* include/debug/multimap.h: New.
+	* include/debug/multiset.h: New.
+	* include/debug/safe_base.h: New.
+	* include/debug/safe_iterator.h: New.
+	* include/debug/safe_iterator.tcc: New.
+	* include/debug/safe_sequence.h: New.
+	* include/debug/set: New.
+	* include/debug/set.h: New.
+	* include/debug/string: New.
+	* include/debug/vector: New.
+	* src/debug.cc: New.
+	* config/linker-map.gnu: Add debug mode symbols.
+
+2003-11-11  Benjamin Kosnik  
+
+	* src/string-inst.cc: Tweak namespaces.
+	* src/misc-inst.cc: Same.
+	* docs/html/debug.html: Edits.
+	* config/link-map.gnu: Remove cruft.
+
+	* include/bits/c++config: Add in namespace associations.
+	* include/std/std_bitset.h: Adjust namespace to __gnu_norm,
+	comment tweaks.
+	* include/bits/deque.tcc: Same.
+	* include/bits/list.tcc: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/vector.tcc: Same.
+
+	* include/std/std_algorithm.h: Remove markup comments.
+	* include/std/std_functional.h: Same.
+	* include/std/std_iterator.h: Same.
+	* include/std/std_numeric.h: Same.
+	* include/std/std_utility.h: Same.
+	* include/bits/stl_queue.h: Formatting tweaks.
+	* include/bits/stl_stack.h: Same.
+	* include/std/std_deque.h: Include debugging version in debug mode.
+	* include/std/std_list.h: Same.
+	* include/std/std_map.h: Same.
+	* include/std/std_set.h: Same.
+	* include/std/std_vector.h: Same.
+	* include/std/std_queue.h: Use deque, vector.
+	* include/std/std_stack.h: Same.
+
+2003-11-09  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (_M_insert_int,
+	_M_insert_float): Move a couple of vars inside an if block.
+
+2003-11-09  Paolo Carlini  
+
+	PR libstdc++/12971
+	* include/bits/locale_facets.tcc
+	(money_put::do_put(..., long double)): Fix conversion
+	specification as per DR 328 [WP].
+	* testsuite/22_locale/money_put/put/char/12971.cc: Add.
+	* testsuite/22_locale/money_put/put/wchar_t/12971.cc: Ditto.
+	* docs/html/ext/howto.html: Add entry for DR 328.
+
+2003-11-08  Paolo Carlini  
+
+	PR libstdc++/12967
+	* include/bits/list.tcc (merge): Implement resolution of
+	DR 300 [WP].
+	* docs/html/ext/howto.html: Add entry for DR 300; tweak entry
+	for DR 231.
+
+	* docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+	Import R27.
+
+2003-11-07  Jonathan Wakely  
+
+	* libsupc++/vec.cc: Conform to C++STYLE.
+
+2003-11-07  Carlo Wood  
+
+	PR libstdc++/12736
+	* bits/demangle.h (qualifier_list::decode_KVrA): Added.
+	(qualifier_list::decode_qualifiers): Collect concatenated
+	K, V, r and A qualifiers before processing them as a group.
+	* testsuite/demangle/abi_text/01.cc: Reordered CV-qualifiers.
+	* testsuite/demangle/regression/cw-16.cc: New.
+
+2003-11-07  Robert Millan  
+
+	* configure.host: Add kfreebsd*-gnu and knetbsd*-gnu.
+	* crossconfig.m4: Likewise.
+	* configure: Regenerate.
+
+2003-11-07  Carlo Wood  
+
+	* include/bits/demangle.h
+	(qualifier_list::decode_qualifiers(string_type&,
+	string_type&, bool member_function_pointer_qualifiers):
+	Always separate the '[' of an array type with a space from
+	what is left of it, except when that is the closing bracket
+	of another array dimension.
+
+2003-11-07  Carlo Wood  
+
+	* include/bits/demangle.h
+	(qualifier_list::decode_qualifiers(string_type&,
+	string_type&, bool) const): Made const.
+	(qualifier_list::M_printing_suppressed): Added mutable.
+	(_GLIBCXX_DEMANGLER_DOUT_ENTERING3, _GLIBCXX_DEMANGLER_RETURN3,
+	std::ostream& operator<<(std::ostream&, qualifier const&),
+	std::ostream& operator<<(std::ostream&, qualifier_list const&),
+	qualifier_list::decode_qualifiers(string_type&,
+	string_type&, bool) const,
+	session::decode_type_with_postfix(string_type&,
+	string_type&, qualifier_list*))
+	Added and/or changed debug-only hooks and code.
+
+2003-11-04  Jeffrey D. Oldham  
+
+	* libsupc++/vec.cc (__cxa_vec_delete2): If given a NULL pointer,
+	immediately return.  This reflects a C++ ABI change 2003 Nov 03.
+	(__cxa_vec_delete3): Likewise.
+
+2003-11-03  Petur Runolfsson  
+
+	PR libstdc++/12790
+	* include/bits/fstream.tcc: Delete _M_last_overflowed.
+	(basic_filebuf::basic_filebuf): Initialize _M_state_last.
+	(basic_filebuf::open, basic_filebuf::close): Assign
+	_M_state_beg to _M_state_cur and _M_state_last.
+	(basic_filebuf::close): Call _M_terminate_output to handle
+	unshift and flushing.
+	(basic_filebuf::underflow): Assign _M_state_last, throw
+	exception instead of calling abort when codecvt::max_length()
+	is bad.
+	(basic_filebuf::seekoff): Use _M_state_last when calling
+	codecvt::length(), pass correct state to _M_seek.
+	(basic_filebuf::seekpos): Pass __pos.state() to _M_seek.
+	(basic_filebuf::_M_seek): Add __state_type parameter,
+	set _M_state_cur correctly, store the resulting state in
+	the return value and use _M_terminate_output to handle
+	flushing and unshift.
+	(basic_filebuf::_M_terminate_output): Flush contents of
+	output buffer, if any, then call codecvt::unshift as
+	needed and output the result.
+	(basic_filebuf::sync): Move here, don't modify _M_writing
+	or _M_reading.
+
+	* include/std/std_fstream.h
+	(basic_filebuf::_M_state_last): Declare it.
+	(basic_filebuf::_M_last_overflowed): Delete.
+	(basic_filebuf::_M_seek): Add __state_type parameter.
+	(basic_filebuf::sync): Declare only.
+	(basic_filebuf::_M_output_unshift): Delete.
+	(basic_filebuf::_M_terminate_output): Declare it.
+
+	* testsuite/testsuite_character.h:
+	Define character class and state class plus char_traits and
+	codecvt specializations for same for testing support for
+	stateful encodings.
+
+	* testsuite/27_io/basic_filebuf/close/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/close/char/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/close/char/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/close/char/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/close/char/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/open/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc,
+	* testsuite/27_io/basic_filebuf/sync/char/1.cc,
+	* testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc:
+	New tests.
+
+	* testsuite/27_io/basic_filebuf/3.cc,
+	* testsuite/27_io/basic_filebuf/seekoff/10132-2.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/10132-3.cc,
+	* testsuite/27_io/basic_fstream/3.cc,
+	* testsuite/27_io/basic_ifstream/3.cc,
+	* testsuite/27_io/basic_ofstream/3.cc:
+	Use streamoff as off_type and fpos as pos_type.
+
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc,
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc:
+	Check that sync does *not* set _M_writing to false.
+
+2003-11-03  Anthony Green  
+
+	* libmath/stubs.c (sqrtf, sqrtl): Reorder so they appear before
+	they're used.
+
+2003-11-03  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (time_get::_M_extract_name): Add
+	ctype argument.
+	* include/bits/locale_facets.tcc: Same, use it to allow
+	capitalized names.
+
+	* include/bits/fstream.tcc: Spacing tweak.
+	* include/bits/istream.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+
+2003-10-30  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+	__mod is only assigned, never used its value, remove it.
+
+2003-10-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get::do_get_year):
+	Absolutely avoid dereferencing end iterators.
+	(time_put::put): Minor clean up.
+
+	* include/bits/locale_facets.tcc: Cosmetic reformattings.
+
+2003-10-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	Revert the last commit, is not correct, sorry.
+
+2003-10-29  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc: Add back  and
+	.
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	Clean up.
+
+2003-10-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_put::put): Absolutely
+	avoid dereferencing end iterators; clean up.
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float,
+	num_get::_M_extract_int): Minor tweak.
+
+2003-10-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: Remove some unnecessary
+	includes.
+	* config/locale/generic/c_locale.cc: Include  here.
+	* config/locale/gnu/c_locale.cc: Likewise.
+
+2003-10-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc
+	(money_get<>::do_get(..., string_type&)): Absolutely avoid
+	dereferencing end iterators; general clean up.
+
+2003-10-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get::_M_extract_num):
+	Absolutely avoid dereferencing end iterators.
+	(time_get::_M_extract_name): Likewise.
+
+	* include/bits/locale_facets.tcc
+	(time_get::_M_extract_via_format, case 'e'): Don't try to
+	be smart wrt returning the right __beg in case of parse
+	error, time_get::_M_extract_num must be fixed instead.
+
+2003-10-27  Paolo Carlini  
+
+	PR libstdc++/12778
+	* acinclude.m4 (GLIBCXX_CHECK_LFS): Use the C++ compiler.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-10-27  Benjamin Kosnik  
+
+	* docs/html/17_intro/TODO: Add links.
+	* testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+	Uncomment.
+
+2003-10-27  Paolo Carlini  
+
+	PR libstdc++/12750
+	* include/bits/locale_facets.tcc
+	(time_get::_M_extract_via_format): Deal with code 'e'.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: New.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Ditto.
+
+	* include/bits/locale_facets.tcc
+	(time_get::_M_extract_via_format): Tweak to absolutely avoid
+	dereferencing end iterators.
+
+	* include/bits/locale_facets.h (__verify_grouping):
+	Const-ify second parameter.
+	* include/bits/locale_facets.tcc (__verify_grouping): Ditto.
+	* src/locale-inst.cc (__verify_grouping): Ditto.
+
+2003-10-27  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	Various things: 1- Avoid absolutely end iterator dereferences;
+	2- Improve performance-wise the code skipping leading zeros;
+	3- Fix two bugs wrt early bail out in case of parsing errors
+	(see testcases); 4- General clean up.
+	(num_get::_M_extract_int): Likewise, except 3-. Additionally,
+	use __builtin_expect to favor base 10 inputs.
+	* testsuite/22_locale/num_get/get/char/7.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/7.cc: Ditto.
+
+2003-10-26  Paolo Carlini  
+
+	* testsuite/22_locale/money_put/put/char/1.cc: Clean up.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Ditto.
+
+2003-10-25  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int):
+	__pos in only incremented, never used its value, remove it.
+
+2003-10-24  Robert Millan  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add kfreebsd*-gnu
+	and knetbsd*-gnu.
+	* aclocal.m4:  Regenerated.
+	* configure:  Regenerated.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(...,
+	long double&): Properly size the temporary buffer.
+	* testsuite/22_locale/money_get/get/char/11.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/11.cc: Ditto.
+
+	* include/bits/locale_facets.tcc (num_put::_M_group_int,
+	num_put::_M_group_float, money_put::do_put(..., const
+	string_type&), collate::do_compare, collate::do_transform):
+	Prefer basic_string::data() to c_str() when the '\0'
+	terminator is not really needed.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__verify_grouping):
+	Prefer '=' to an unnecessary '&='.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
+	Tweak my fix for libstdc++/12657.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(...,
+	string_type&): Minor tweak to the previous commit.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(...,
+	string_type&): Disregard the previous commit: doesn't hurt but
+	doesn't accomplish anything useful either. This is the right
+	one, speeding up greatly the function in case of early fail.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(...,
+	string_type&): Move an if block, thus minimizing the amount
+	of code processed anyway when __tmp_units.size() == 0.
+
+2003-10-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc
+	(time_get<>::_M_extract_via_format): Deal with case 'C' too,
+	equivalent to 'y'.
+
+2003-10-23  Benjamin Kosnik  
+
+	* docs/html/documentation.html: Add a pointer to the doxygen style
+	guide.
+	* docs/html/17_intro/TODO: Update.
+	* docs/html/test.html: Add instructions for running a subset of
+	tests, update.
+
+2003-10-23  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::do_get(...,
+	string_type&)): Use find_first_not_of to strip leading
+	zeros; if __tmp_units == "0" never prefix it with '-';
+	always fail if __tmp_units is empty.
+	* testsuite/22_locale/money_get/get/char/10.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/10.cc: Ditto.
+
+2003-10-23  Phil Edwards  
+
+	* config/os/vxworks/ctype_noninline.h:  Adjust ctor to match
+	2003-10-21 change.
+
+2003-10-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__int_to_char): Remove
+	the const int parameter.
+	(_M_insert_int): Update caller.
+	* src/locale-inst.cc (__int_to_char): Update instantiations.
+
+2003-10-22  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h: Correct byname facets for "C"
+	locale.
+	* config/locale/generic/ctype_members.cc: Same.
+	* config/locale/generic/messages_members.h: Same.
+	* config/locale/gnu/ctype_members.cc: Same.
+	* config/locale/gnu/messages_members.h: Same.
+	* include/bits/codecvt.h: Same.
+	* src/ctype.cc: Same.
+	* testsuite/22_locale/codecvt_byname/1.cc: New.
+	* testsuite/22_locale/collate/1.cc: Edit.
+	* testsuite/22_locale/collate_byname/1.cc: Derivation tests, move to...
+	* testsuite/22_locale/collate_byname/named_equivalence.cc: ...here.
+	* testsuite/22_locale/ctype/1.cc: Derivation tests.
+	* testsuite/22_locale/ctype/11844.cc: Move...
+	* testsuite/22_locale/ctype_base/11844.cc: ...here.
+	* testsuite/22_locale/ctype_base/1.cc: Move mask bits here.
+	* testsuite/22_locale/ctype_byname/1.cc: Name.
+	* testsuite/22_locale/messages_byname/1.cc: New.
+	* testsuite/22_locale/messages_byname/named_equivalence.cc: New.
+	* testsuite/22_locale/moneypunct_byname/1.cc: Derivation test.
+	* testsuite/22_locale/moneypunct_byname/named_equivalence.cc: New.
+	* testsuite/22_locale/numpunct/1.cc: Edit.
+	* testsuite/22_locale/numpunct_byname/2.cc: Move...
+	* testsuite/22_locale/numpunct/members/char/3.cc: ...here.
+	* testsuite/22_locale/numpunct_byname/1.cc: Derivation tests.
+	* testsuite/22_locale/numpunct_byname/named_equivalence.cc: New.
+
+2003-10-22  Paolo Carlini  
+
+	PR libstdc++/8610
+	* acinclude.m4 (GLIBCXX_CHECK_INT64_T): New macro,
+	checking for the availability of int64_t.
+	(GLIBCXX_CHECK_LFS): New macro, checking for LFS support.
+	* configure.ac: Call here.
+	* acconfig.h: Add undef for the corresponding symbols.
+	* config/io/basic_file_stdio.cc	(__basic_file::open):
+	Depending on _GLIBCXX_USE_LFS, call fopen64 or fopen.
+	(__basic_file::seekoff): Likewise, call lseek64 when
+	available, otherwise lseek, checking the __off parameter.
+	* include/bits/postypes.h: Typedef __streamoff_base_type
+	to int64_t if available, otherwise long long.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+	* acinclude.m4 (GLIBCXX_CHECK_POLL, GLIBCXX_CHECK_WRITEV):
+	Use AC_TRY_LINK instead of AC_TRY_COMPILE.
+
+2003-10-22  Paolo Carlini  
+
+	PR libstdc++/12657
+	* include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
+	Implement resolution of DR 292 (WP).
+	* docs/html/ext/howto.html: Add entry for DR 292.
+
+2003-10-21  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h: Change include to gthr.h.
+	* include/ext/rope: Same. Add _Refcount_base definitions.
+	* include/ext/pool_allocator.h: Adjust namespaces.
+	* include/bits/stl_threads.h (_Refcount_base): Move.
+	Put remaining into namespace __gnu_cxx.
+
+2003-10-21  Benjamin Kosnik  
+
+	PR libstdc++/9858
+	* include/bits/locale_facets.h (ctype): Remove
+	__ctype_abstract_base.
+	(ctype::do_is): Remove.
+	(ctype::do_scan_is): Remove.
+	* src/ctype.cc: Same. Inline the rest.
+	* testsuite/22_locale/ctype/is/char/9858.cc: New.
+	* config/os/aix/ctype_noninline.h: Adjust ctor.
+	* config/os/bsd/freebsd/ctype_noninline.h: Same.
+	* config/os/bsd/netbsd/ctype_noninline.h: Same.
+	* config/os/djgpp/ctype_noninline.h: Same.
+	* config/os/generic/ctype_noninline.h: Same.
+	* config/os/gnu-linux/ctype_noninline.h: Same.
+	* config/os/hpux/ctype_noninline.h: Same.
+	* config/os/irix/irix5.2/ctype_noninline.h: Same.
+	* config/os/irix/irix6.5/ctype_noninline.h: Same.
+	* config/os/mingw32/ctype_noninline.h: Same.
+	* config/os/newlib/ctype_noninline.h: Same.
+	* config/os/qnx/qnx6.1/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.5/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.6/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.7/ctype_noninline.h: Same.
+	* config/os/windiss/ctype_noninline.h: Same.
+
+2003-10-21  Paolo Carlini  
+
+	* src/locale.cc: Tweak a comment.
+	* src/localename.cc: Move a comment.
+
+2003-10-20  Benjamin Kosnik  
+
+	PR libstdc++/10081
+	* testsuite_hooks.h: Add pod_type, ctype and numpunct specializations.
+	* testsuite_hooks.cc: Same.
+	* 22_locale/numpunct/members/pod/1.cc: Edit.
+	* 22_locale/numpunct/members/pod/2.cc: Same.
+	* 27_io/basic_istream/sentry/char/3983-fstream.cc: Move ...
+	* 27_io/basic_istream/sentry/char/3983-sstream.cc: Move ...
+	* 27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc: Here.
+	* 27_io/basic_istream/extractors_character/pod/3983-2.cc: Here.
+	* 27_io/basic_istream/extractors_other/pod/3983-3.cc: Here.
+	* 27_io/basic_ostream/sentry/char/3983-fstream.cc: Remove.
+	* 27_io/basic_ostream/sentry/char/3983-sstream.cc: Remove.
+	* 27_io/basic_istream/sentry/pod/1.cc: New.
+	* 27_io/basic_ostream/sentry/pod/1.cc: New.
+	* 21_strings/basic_string/inserters_extractors/pod/10081-in.cc: New.
+	* 21_strings/basic_string/inserters_extractors/pod/10081-out.cc: New.
+
+2003-10-20  Rainer Orth  
+
+	* config/cpu/mips/atomicity.h (__atomic_add): Use _ABIO32 instead
+	of external _MIPS_SIM_ABI32.
+
+2003-10-20  Phil Edwards  
+
+	* configure.ac:  Fix comment typo.
+	* configure.host:  Add vxworks to host_os switch.
+	* crossconfig.m4:  Remove old commented os_include_dir variables
+	left over from autotools transition.
+	(*-vxworks):  New stanza.
+	(*-windiss):  Add missing symbols.
+	* configure:  Regenerate.
+	* config/os/vxworks/ctype_base.h, config/os/vxworks/ctype_inline.h,
+	config/os/vxworks/ctype_noninline.h, config/os/vxworks/os_defines.h:
+	New files.
+	* config/os/windiss/os_defines.h:  Define __C9X__.
+
+2003-10-19  David Edelsohn  
+
+	PR other/12506
+	* configure.host (aix4,aix*): Define os_include_dir to os/generic.
+
+2003-10-18  Andreas Tobler  
+
+	* src/locale.cc (locale::_S_initialize): Re-apply workaround a
+	confusion of the use of the gthr API when __gthread_active_p()
+	returns true.
+
+2003-10-17  Benjamin Kosnik  
+
+	* src/Makefile.am: Add new files.
+	* src/Makefile.in: Regenerate.
+	* src/globals.cc: Split into..
+	* src/globals_io.cc: New.
+	* src/globals_locale.cc: New.
+	* src/ios.cc: Split into...
+	* src/ios_init.cc: New.
+	* src/ios_locale.cc: New.
+	* src/locale-inst.cc: Split into..
+	* src/wlocale-inst.cc: New.
+	* src/locale-misc-inst.cc: New.
+	* src/locale.cc, src/localename: Split into...
+	* src/locale_facets.cc: New.
+	* src/locale_init.cc: New.
+	* src/wstring-inst.cc: Add copyright info.
+
+2003-10-16  Petur Runolfsson  
+
+	PR libstdc++/11450
+	PR libstdc++/11543
+	PR libstdc++/12065
+	* config/io/basic_file_stdio.cc (__basic_file::seekoff):
+	Change return value from streampos to streamoff.
+	(__basic_file::seekpos): Delete.
+	* config/io/basic_file_stdio.h: Same.
+	* config/io/c_io_stdio.h: Remove streamoff and wstreamsize typedefs.
+	* include/Makefile.am (bits_headers): Add bits/postypes.h.
+	* include/bits/char_traits.h: Include bits/postypes.h instead of
+	bits/fpos.h.
+	* include/bits/fstream.tcc (basic_filebuf::open,
+	basic_filebuf::pbackfail): Don't use < or >= to compare pos_type
+	values, use == and != instead.
+	(basic_filebuf::_M_seek): Use explicit conversion from streamoff
+	to pos_type.
+	(basic_filebuf::imbue):  Don't use ! on pos_type values, use
+	== instead. Don't use __check_facet(_M_codecvt) unless is_open().
+	* include/bits/postypes.h: New file.
+	Add __streamoff_base_type typedef, streamsize.
+	(streamoff, streampos, wstreampos): Define typedefs, with
+	streamoff defined as...
+	(streamoff): New class. Document implementation defined
+	aspects.
+	(fpos): New implementation. Document implementation defined
+	aspects.
+	* include/bits/sstream.tcc (basic_stringbuf::seekpos): Use
+	explicit conversion from pos_type to off_type.
+	* include/std/std_iosfwd.h: Include bits/postypes.h instead
+	of bits/fpos.h.
+	* testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: New test.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: New test.
+	* testsuite/27_io/fpos/11450.cc: New test.
+	* testsuite/27_io/fpos/mbstate_t/12065.cc: New test.
+	* testsuite/27_io/fpos/mbstate_t/4_neg.cc: New test.
+	* testsuite/27_io/types/3.cc: New test.
+
+2003-10-16  Benjamin Kosnik  
+
+	* configure.host: Remove fpos_include_dir.
+	* configure.ac: Remove FPOS_INC_SRCDIR.
+	* configure: Regenerate.
+	* acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Remove FPOS_H.
+	* aclocal.m4: Regenerate.
+	* include/Makefile.am (host_headers): Remove fpos.h.
+	(bits_headers): Add postypes.h.
+	* include/Makefile.in: Regenerate.
+	* config/os/gnu-linux/fposh: Remove.
+	* config/os/generic/fpos.h: Remove.
+
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Fixup.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Same.
+	* testsuite/27_io/basic_istream/seekg/char/2.cc: Same.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Same.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Same.
+	* testsuite/27_io/fpos/mbstate_t/3.cc: Same.
+	* testsuite/27_io/objects/char/10.cc: Same.
+
+2003-10-16  Paolo Carlini  
+
+	* src/locale.cc (locale::locale(const char*)): ... one
+	more comparison missed in the previous commit.
+
+2003-10-16  Benjamin Kosnik  
+
+        * acconfig.h: Add HAVE_DRAND48.
+	* crossconfig.m4: Remove ISATTY.
+	* aclocal.m4: Regenerated.
+	* config.h.in: Regenerated.
+	* configure: Regenerated.
+
+2003-10-16  Bernardo Innocenti  
+
+	* config/cpu/m68k/atomicity.h (__exchange_and_add): Use TAS on
+	__mcf5400__. Don't rely on __mc68000__ to detect a bare 68000.
+	Document SMP safeness of asm macros.
+
+2003-10-16  Paolo Carlini  
+
+	* src/locale.cc (locale::locale(const char*)): Tweak
+	a couple of comparisons to use basic_string operators.
+
+2003-10-16  Paolo Carlini  
+
+	PR libstdc++/12540
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct):
+	Don't leak memory if new throws.
+	* src/locale.cc (locale::locale(const char*)): In order not
+	to leak memory in case new throws, use a basic_string type
+	for __res too and avoid strdup.
+
+2003-10-14  Jeff Bailey  
+
+	PR libstdc++/12562
+	* crossconfig.m4: Share the config between *-linux* and *-gnu*.
+	* configure: Regenerate.
+
+2003-10-14  Carlo Wood  
+
+	PR libstdc++/12600
+	* include/bits/demangle.h (session::
+	  decode_unqualified_name(string_type& output)): Fail on a
+	   when decoding .
+	* testsuite/demangle/regression/cw-15.cc: New.
+
+2003-10-14  Paolo Carlini  
+
+	PR libstdc++/11480
+	* include/bits/stl_algo.h (unique): Fix.
+	* testsuite/25_algorithms/unique.cc: Move to unique/1.cc.
+	* testsuite/25_algorithms/unique/11480.cc: New, from the PR.
+	* testsuite/25_algorithms/unique/2.cc: New.
+
+2003-10-14  Paolo Carlini  
+
+	* src/localename.cc (_M_replace_categories, M_replace_facet):
+	Const-ify a couple of variables.
+
+2003-10-14  Petur Runolfsson  
+	    Andreas Tobler  
+
+	* src/locale.cc (locale::_S_initialize): Workaround a confusion
+	of the use of the gthr API when __gthread_active_p() returns true.
+
+2003-10-12  Petur Runolfsson  
+	    Paolo Carlini  
+
+	PR libstdc++/11460
+	* src/strstream.cc (pbackfail): Fix to use to_int_type.
+	* testsuite/backward/11460.cc: New, from the PR.
+
+2003-10-12  Paolo Carlini  
+
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h:
+	Change #ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS to a comment.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* include/bits/istream.tcc: Likewise.
+	* include/bits/locale_facets.tcc: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/stl_function.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/streambuf_iterator.h
+	* include/std/std_iosfwd.h: Likewise.
+	* include/std/std_istream.h: Likewise.
+	* include/std/std_sstream.h: Likewise.
+	* include/std/std_streambuf.h: Likewise.
+	* src/ios.cc: Likewise.
+	* include/bits/c++config:
+	Comment out #define _GLIBCXX_RESOLVE_LIB_DEFECTS 1.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Tweak a
+	dg-error directive due to removal of a blank line.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2003-10-12  Andreas Tobler  
+	    Paolo Carlini  
+
+	PR libstdc++/11844/11740 (cont)
+	* config/os/generic/ctype_inline.h (ctype::is):
+	Generically, use a bitmasksize of 15 (instead of 10);
+	Fix the logic to actually return (M & m) != 0 as per
+	22.2.1.1.2.
+
+2003-10-11  Bernardo Innocenti  
+
+	* crossconfig.m4 (*-uclinux*): New target.
+	* configure: Regenerate.
+
+2003-10-10  Paolo Carlini  
+
+	* include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT))
+	Avoid unnecessarily calling __builtin_alloca and dealing
+	explicitly with width() smaller than zero.
+	(operator<<(basic_ostream&, char), operator<<(basic_ostream&,
+	const _CharT*), operator<<(basic_ostream<_CharT, _Traits>&,
+	const char*), operator<<(basic_ostream&,
+	const char*), operator<<(basic_ostream, const basic_string&)):
+	Likewise.
+
+2003-10-09  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Make more *_type_info bits visible.
+	Move new/delete bits back into GLIBCXX space.
+
+	* include/bits/locale_classes.h: Move _M_id out of line, so that
+	locale::id::_S_highwater can be removed from the export list.
+	* src/locale.cc (locale::id::_M_id): Define.
+
+2003-10-09  Andreas Tobler  
+
+	* testsuite/lib/libstdc++.exp: Set LD_LIBRARY_PATH_64 for
+	SPARC64.
+
+2003-10-09  Paolo Carlini  
+
+	PR libstdc++/11844
+	* config/os/aix/ctype_base.h: Fix 'alnum' and 'graph'
+	to conform to the requirements of 22.2.1.
+	* config/os/bsd/freebsd/ctype_base.h: Likewise.
+	* config/os/djgpp/ctype_base.h: Likewise.
+	* config/os/generic/ctype_base.h: Likewise.
+	* config/os/gnu-linux/ctype_base.h: Likewise.
+	* config/os/hpux/ctype_base.h: Likewise.
+	* config/os/irix/irix6.5/ctype_base.h: Likewise.
+	* config/os/solaris/solaris2.6/ctype_base.h: Likewise.
+	* config/os/solaris/solaris2.7/ctype_base.h: Likewise.
+	* testsuite/22_locale/ctype/11844.cc: New.
+
+	* config/locale/generic/ctype_members.cc (do_is):
+	Generically, use a bitmasksize of 15 (instead of 10), since
+	we don't know the numerical encoding of the various categories
+	in the underlying /usr/include/ctype.h.
+
+2003-10-09  Benjamin Kosnik  
+
+	* src/string-inst.cc: Prune.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-10-09  Petur Runolfsson  
+
+	* src/io-inst.cc: Don't include iostream.
+	* include/bits/ios_base.h (ios_base::failure): Use string.
+	* src/Makefile.am: Add ios_failure.cc.
+	* src/Makefile.in: Regenerate.
+	* src/ios.cc: Move ios_base::failure definitions to...
+	* src/ios_failure.cc: ...here. New.
+
+2003-10-09  Petur Runolfsson  
+
+	PR libstdc++/9874
+	* include/bits/fstream.tcc (basic_filebuf::seekoff):
+	Move code needed for both seekoff and seekpos...
+	(basic_filebuf::_M_seek): ...here. New function.
+	(basic_filebuf::seekpos): Don't call seekoff, call _M_seek.
+	* include/std/std_fstream.h (basic_filebuf::_M_seek): Declare it.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: New test.
+
+	* testsuite/22_locale/locale/cons/12438.cc: Increase memory limit.
+
+2003-10-08  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: More minor cosmetic
+	changes and const-ifications of some variables.
+
+2003-10-07  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: Minor cosmetic changes
+	and const-ifications of some variables.
+
+	* include/bits/locale_facets.tcc
+	(money_get::do_get(..., string_type&)): Simplify an if-else.
+
+2003-10-06  Paolo Carlini  
+
+	PR libstdc++/11740
+	* config/locale/gnu/ctype_members.cc (ctype::do_is):
+	Fix to actually return (M & m) != 0 as per 22.2.1.1.2.
+	* config/locale/generic/ctype_members.cc: Same.
+	* testsuite/22_locale/ctype/is/wchar_t/11740.cc: New.
+
+2003-10-06  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__pad<>::_S_pad):
+	Improve performance-wise: avoid one traits::copy, avoid
+	the __builtin_alloca, streamline.
+
+2003-10-05  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc
+	(num_put::do_put(..., bool)): Prefer ?: to if-else.
+	(time_get::_M_extract_name): Qualify min with std::.
+	(__pad<>::_S_pad): Constify two variables; simplify an
+	if-else statement factoring out some code.
+
+	* include/bits/locale_facets.tcc: Minor cosmetic changes.
+
+2003-10-04  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	Constify a couple of variables.
+	(num_get::do_get(..., bool&)): Constify __c; prefer *__beg,
+	++__beg to *__beg++.
+
+2003-10-04  Paolo Carlini  
+            Petur Runolfsson  
+
+	* include/ext/stdio_sync_filebuf.h: Don't include the whole
+	, only  and .
+
+2003-10-04  Paolo Carlini  
+
+	PR libstdc++/12206
+	* include/bits/fstream.tcc (imbue): In case a codecvt facet
+	is not available, set _M_codecvt = 0.
+	* testsuite/27_io/basic_filebuf/imbue/12206.cc: New.
+
+2003-10-02  Harald Boehme  
+
+	PR libstdc++/12451
+	* libsupc++/cxxabi.h: Move forward declaration of __class_type_info.
+
+2003-10-02  Benjamin Kosnik  
+
+	* include/bits/locale_classes.h (locale::facet::_S_get_c_name): Add.
+	* src/locale.cc: Define.
+	* src/localename.cc: Use it.
+	* config/locale/generic/time_members.h: Same.
+	* config/locale/gnu/messages_members.h: Same.
+	* config/locale/gnu/time_members.h: Same.
+
+2003-10-02  Paolo Carlini  
+
+	PR libstdc++/12232
+	* include/bits/fstream.tcc (seekoff): Ignore the openmode
+	argument; simplify.
+	* config/io/basic_file_stdio.h (__basic_file::seekoff,
+	seekpos): Remove the openmode argument.
+	* config/io/basic_file_stdio.cc (__basic_file::seekoff,
+	seekpos): Remove redundant placeholder for the openmode argument.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12232.cc: New.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Tweak.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Likewise.
+
+2003-10-02  Benjamin Kosnik  
+
+	* src/locale.cc (locale::_S_initialize): Use __gthread_active_p.
+	(locale::facet::_S_get_c_locale): Same.
+
+2003-10-02  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Export _S_get_c_locale instead of
+	_S_c_locale object.
+
+2003-10-02  Petur Runolfsson  
+
+	* config/locale/generic/c_locale.cc
+	(category_names, locale::_S_categories): Const qualify.
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/generic/time_members.h (__timepunct::__timepunct):
+	Copy string contents before assigning to _M_name_timepunct,
+	qualify strcpy and strlen with std::.
+	* config/locale/gnu/time_members.h: Same.
+	* config/locale/gnu/messages_members.h (messages::messages):
+	Copy string contents before assigning to _M_name_messages,
+	qualify strcpy and strlen with std::.
+	* config/os/gnu-linux/ctype_noninline.h
+	(ctype::classic_table()): Don't call locale::classic().
+	* include/bits/locale_classes.h
+	(locale::_S_categories): Const qualify.
+	(locale::_S_once, locale::_S_initialize_once,
+	locale::facet::_S_once, locale::facet::_S_initialize_once,
+	locale::facet::_S_get_c_locale): Declare.
+	(locale::_S_initialize): Don't define.
+	(locale::facet::_S_c_locale): Make private.
+	(locale::facet::_S_c_name): Same, const qualify.
+	(locale::_Impl::_Impl(facet**, size_t, bool)): Drop unused
+	parameters, add throw() specifier.
+	* include/bits/locale_facets.h (__timepunct::_M_name_timepunct,
+	messages::_M_name_messages): Const qualify.
+	* src/locale.cc
+	(locale::_S_once, locale::facet::_S_once): Define.
+	(locale::classic): Move initialization code...
+	(locale::_S_initialize_once): ...here.
+	(locale::_S_initialize): Call _S_initialize_once through
+	__gthread_once.
+	(locale::facet::_S_initialize_once): Initialize _S_c_locale.
+	(locale::facet::_S_get_c_locale): Call _S_initialize_once through
+	__gthread_once before returning _S_c_locale.
+	* src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool)):
+	Drop unused parameters, add throw() specifier, don't initialize
+	locale::facet::_S_c_locale and _S_c_name.
+
+	* config/locale/generic/messages_members.h:
+	Replace _S_c_locale with _S_get_c_locale().
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/gnu/messages_members.h: Same.
+	* config/locale/gnu/numeric_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/os/gnu-linux/ctype_noninline.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+	* src/codecvt.cc: Same.
+	* src/ctype.cc: Same.
+
+2003-10-02  Carlo Wood  
+
+	* include/bits/demangle.h (demangle::symbol(char const*)):
+	Decode symbols that start with _GLOBAL_[ID]_ differently: the
+	trailing part ends with a terminating zero and is not necessarily an
+	encoding.
+	* src/demangle.cc (): Same.
+	* testsuite/demangle/regression/cw-13.cc: Adjust for new output.
+
+2003-10-02  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12438.cc: Use
+	__gnu_test::try_named_locale("").
+
+2003-10-01  Rainer Orth  
+
+	* linkage.m4 (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0): Define.
+	(GLIBCXX_CHECK_STDLIB_SUPPORT): Use it to test for lrand48
+	instead of drand48.
+	* acconfig.h (HAVE_DRAND48): Renamed to HAVE_LRAND48.
+	* crossconfig.m4 (*-freebsd*): Define HAVE_LRAND48 instead of
+	HAVE_DRAND48.
+	* config.h.in, configure: Regenerate.
+	* include/bits/stl_algo.h: Use _GLIBCXX_HAVE_LRAND48 to guard
+	lrand48 use.
+
+2003-10-01  Nathan Myers  
+
+	* include/bits/locale_facets.tcc (time_put::put): Avoid
+	expensive *__s++, in favor of *__s, ++__s.
+
+2003-10-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_put::put): Minor
+	tweak to the previous commit.
+
+2003-10-01  Paolo Carlini  
+
+	PR libstdc++/12439
+	* include/bits/locale_facets.tcc (time_put::put): Deal
+	with the three issues pointed out by the PR.
+	* testsuite/22_locale/time_put/put/char/12439_1.cc: New.
+	* testsuite/22_locale/time_put/put/char/12439_3.cc: New.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_1.cc: New.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_2.cc: New.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_3.cc: New.
+
+2003-09-30  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Minor cosmetic reformattings.
+
+2003-09-30  Paolo Carlini  
+
+	* include/bits/stl_algo.h (search_n): Tweak, to spare the
+	first --__n.
+
+2003-09-30  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12352.cc: Explicitly
+	qualify exception name.
+
+2003-09-30  Paolo Carlini  
+
+	PR libstdc++/12438
+	* include/bits/locale_facets.tcc (locale::combine): Don't
+	leak memory if _M_replace_facet throws.
+	* testsuite/22_locale/locale/cons/12438.cc: New, from the PR.
+
+	* include/bits/locale_classes.h (locale::locale(const locale&,
+	_Facet*)): Tweak, use consistently _M_remove_reference.
+
+2003-09-30  Paolo Carlini  
+
+	PR libstdc++/12352 (cont)
+	* src/localename.cc (locale::_Impl::_Impl(const char*, size_t)):
+	Don't leak __cloc; don't leak if any of the _M_init_facet(...)
+	calls fail.
+	(locale::_Impl::_Impl(const _Impl&, size_t)): Tweak.
+	(locale::_Impl::~_Impl): Don't do anything if !_M_facets,
+	!_M_caches, !_M_names.
+
+2003-09-29  Rainer Orth  
+
+	* configure.host: Handle Solaris 2.5 micro releases explicitly.
+	Remove wildcards from Solaris 2.6, 7-9: there were no
+	micro releases.
+	Treat Solaris 10 and up like 7-9.
+
+2003-09-29  Paolo Carlini  
+
+	* include/bits/stl_algo.h (search_n): Improve the previous
+	fix as suggested by Martin.
+
+2003-09-29  Paolo Carlini  
+
+	PR libstdc++/12296
+	* include/bits/istream.tcc (peek): Set eofbit if sgetc
+	returns eof.
+	* testsuite/27_io/basic_istream/peek/char/12296.cc:
+	New, from the PR.
+
+2003-09-29  Nathan Myers  
+	    Paolo Carlini  
+
+	PR libstdc++/11400
+	* include/bits/stl_algo.h (search_n):
+	Use iterator_traits<>::difference_type for __n.
+	* testsuite/25_algorithms/search_n/11400.cc: New, from the PR.
+
+2003-09-29  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12352.cc:
+	Use __attribute__((unused)) for test.
+
+2003-09-26  Ulrich Weigand  
+
+	* testsuite/22_locale/time_put/put/char/2.cc (test_02): Allow either
+	"Son" or "So" as abbreviated name for Sunday in de_DE locale.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc (test_02): Likewise.
+
+2003-09-26  Brad Spencer  
+
+	* testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc:
+	Explicitly qualify exceptions.
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Same.
+	* testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
+
+2003-09-25  Paolo Carlini  
+
+	PR libstdc++/12352
+	* src/localename.cc (locale::_Impl::_Impl(const _Impl&,
+	size_t)): Don't leak if memory allocations for _M_facets,
+	_M_caches, and _M_names fail.
+	(locale::_Impl::_Impl(const char*, size_t)): Ditto.
+	(locale::_Impl::_M_replace_categories(const _Impl*,
+	category)): Ditto.
+	(locale::_Impl::_M_install_facet(const locale::id*,
+	const facet*)): Ditto.
+	* include/bits/locale_classes.h (locale::locale(const locale&,
+	_Facet*)): Don't leak memory.
+	* testsuite/22_locale/locale/cons/12352.cc: New, from the PR.
+
+	* src/localename.cc (locale::_Impl::_Impl(facet**, size_t,
+	bool)): Qualify with std:: strcpy, tweak.
+	* include/bits/locale_classes.h
+	(locale::_Impl::_M_check_same_name): Qualify strcmp.
+
+2003-09-25  Brad Spencer  
+
+	PR libstdc++/6072
+	* acinclude.m4: Split out checks for vfwscanf, vswscanf, vwscanf,
+	wcstof, iswblank.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* crossconfig.m4: Add in wchar_t bits for solaris crosses.
+	* config/io/basic_file_stdio.cc: Guard unistd.h.
+	* include/c_compatibility/wchar.h: Guard extra wchar_t functionality.
+	* include/c_std/std_cwchar.h: Same.
+	* include/c_std/std_cwctype.h: Same.
+
+2003-09-25  Benjamin Kosnik  
+
+	PR libstdc++/11065
+	* config/locale/gnu/ctype_members.cc (ctype::do_is): Fix.
+	* config/locale/generic/ctype_members.cc: Same.
+	* testsuite/22_locale/ctype/is/char/1.cc: Initialize mask.
+	* testsuite/22_locale/ctype/is/wchar_t/1.cc: Same.
+
+	* config/os/generic/ctype_inline.h: Update.
+
+2003-09-25  Ulrich Weigand  
+
+	* src/Makefile.am (version_dep): New variable.
+	(libstdc___la_DEPENDENCIES): Use it to add dependency on
+	libstdc++-symbol.ver only when using symbol versioning.
+	* src/Makefile.in: Regenerate.
+
+2003-09-23  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc: Tweak to avoid warnings.
+	* testsuite/testsuite_hooks.h: Same.
+	* testsuite/*/*.cc: Same.
+
+2003-09-22  Petur Runolfsson  
+
+	* include/bits/istream.tcc (basic_istream::read,
+	basic_istream::readsome, basic_istream::putback,
+	basic_istream::unget, operator>>(basic_istream, CharT)):
+	Avoid redundant setstate(failbit) calls when sentry::operator bool()
+	returns false.
+
+2003-09-22  Carlo Wood  
+
+	PR libstdc++/12365
+	* include/bits/demangle.h (qualifier(int, cv_qualifier_nt,
+	char const*, int, int)):  Remove unused identifier
+	cv_qualifier for overloaded constructor.
+
+2003-09-18  Benjamin Kosnik  
+
+	PR libstdc++/11504
+	* acinclude.m4 (GLIBCXX_EXPORT_FLAGS): Add -Wcast-qual to
+	WARN_FLAGS, remove -Wno-format.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-09-18  Petur Runolfsson  
+
+	* config/io/basic_file_stdio.cc (sys_getc, sys_ungetc): Delete.
+	* config/io/basic_file_stdio.h: Same.
+	* include/std/std_fstream.h (__ctype_type): Delete.
+	* include/std/std_streambuf.h (__ctype_type, __state_type): Delete.
+
+2003-09-17  Benjamin Kosnik  
+
+	PR libstdc++/12239
+	* configure.host (abi_baseline_pair): Error out on solaris2
+	configurations without a minor version number.
+
+2003-09-13  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Clear GENERATE_TAGFILE entirely
+	if man pages are on.
+	* docs/doxygen/user.cfg.in:  And here.
+
+2003-09-10  Daniel Jacobowitz  
+	    Andreas Jaeger 
+
+	PR libstdc++/12189
+	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Don't build
+	abi_check if cross compiling.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-09-10  Jeffrey D. Oldham  
+
+	* libsupc++/vec.cc (__cxa_vec_new2): If the allocator returns
+	NULL, return NULL.  This reflects a C++ ABI change 2003 Sep 05.
+	(__cxa_vec_new3): Likewise.
+
+2003-09-10  Petur Runolfsson  
+
+	* include/bits/fstream.tcc (basic_filebuf::seekoff):
+	Use codecvt::length to handle variable-width stateless encodings
+	correctly.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: New test.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: New test.
+
+2003-09-10  Alan Modra  
+
+	* config/io/basic_file_stdio.cc (_M_open_mode): Assign __p_mode
+	rather than or'ing.
+
+2003-09-09  Alan Modra  
+
+	* configure: Regenerate.
+
+2003-09-09  David Edelsohn  
+
+	* src/ios.cc (ios_base::Init::Init): Remove unnecessary
+	qualifier from _S_synced_with_stdio.
+
+2003-09-09  Bernardo Innocenti  
+
+	* include/c_std/std_cstdlib.h: Avoid using missing C library symbols.
+
+2003-09-04  Petur Runolfsson  
+
+	PR libstdc++/9028
+	* include/bits/fstream.tcc
+	(basic_filebuf::_M_destroy_internal_buffer): Destroy _M_ext_buf.
+	(basic_filebuf::basic_filebuf): Initialize _M_ext_buf,
+	_M_ext_buf_size, _M_ext_next and _M_ext_end.
+	(basic_filebuf::underflow): Handle variable-width stateless
+	encodings (codecvt::encoding() == 0), including UTF-8.
+	* include/std/std_fstream.h (basic_filebuf):
+	Declare _M_ext_buf, _M_ext_buf_size, _M_ext_next, _M_ext_end.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: New test.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: New test.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: New test.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc: New test.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc: New test.
+	* testsuite/27_io/objects/wchar_t/12.cc: New test.
+	* testsuite/27_io/objects/wchar_t/13.cc: New test.
+
+2003-09-04  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Note that a namespace alias can't be
+	used when specialising templates in extension namespace.
+	* docs/html/faq/index.txt: Regenerate.
+
+2003-09-03  Petur Runolfsson  
+
+	PR libstdc++/12048
+	* include/ext/stdio_sync_filebuf.h
+	(stdio_sync_filebuf::_M_unget_buf): Declare it.
+	(stdio_sync_filebuf::stdio_sync_filebuf): Initialize _M_unget_buf.
+	(stdio_sync_filebuf::uflow): Store the returned character in
+	_M_unget_buf.
+	(stdio_sync_filebuf::pbackfail): If argument is eof(), pass
+	_M_unget_buf to syncungetc(). Set _M_unget_buf to eof().
+	(stdio_sync_filebuf::xsgetn): Store last read character in
+	_M_unget_buf, if any, else eof().
+	(stdio_sync_filebuf::xsgetn: Store last read character in
+	_M_unget_buf, if any, else eof().
+	* testsuite/27_io/objects/char/12048.cc: Rename to...
+	* testsuite/27_io/objects/char/12048-1.cc: ...this.
+	* testsuite/27_io/objects/char/12048-2.cc: New test.
+	* testsuite/27_io/objects/char/12048-3.cc: New test.
+	* testsuite/27_io/objects/char/12048-4.cc: New test.
+	* testsuite/27_io/objects/char/12048-5.cc: New test. XFAIL.
+	* testsuite/27_io/objects/wchar_t/12048-1.cc: New test.
+	* testsuite/27_io/objects/wchar_t/12048-2.cc: New test.
+	* testsuite/27_io/objects/wchar_t/12048-3.cc: New test.
+	* testsuite/27_io/objects/wchar_t/12048-4.cc: New test.
+	* testsuite/27_io/objects/wchar_t/12048-5.cc: New test. XFAIL.
+	* testsuite/ext/stdio_sync_filebuf_char.cc
+	(test02, test03, test04, test05): New tests.
+	* testsuite/ext/stdio_sync_filebuf_wchar_t.cc
+	(test02, test03, test04, test05): New tests.
+
+2003-09-03  Petur Runolfsson  
+
+	* docs/html/27_io/howto.html: setbuf(0, 0) has no effect on
+	stringbuf or strstreambuf. Fix typos.
+
+2003-09-02  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_HOSTED):  #define _GLIBCXX_HOSTED
+	appropriately.
+	* config.h.in:  Add _GLIBCXX_HOSTED.
+	* libsupc++/eh_term_handler.cc:  Test it here; initialize
+	__terminate_handler to std::abort if freestanding.
+	* aclocal.m4, configure:  Regenerated.
+	* docs/html/configopts.html:  Document --disable-hosted-libstdcxx.
+
+2003-08-29  Nathan Myers  
+
+	PR libstdc++/11990
+	* include/bits/locale_facets.tcc (__pad): delete dead code.
+
+2003-08-28  Alan Modra  
+
+	* configure.ac: Test $with_cross_host against $build_alias, not $build.
+	* configure: Regenerate.
+
+2003-08-27  Petur Runolfsson  
+
+	* testsuite/27_io/objects/wchar_t/10.cc: Move wcout stuff...
+	* testsuite/27_io/objects/wchar_t/11.cc: ...here. New file.
+
+2003-08-27  Phil Edwards  
+
+	* Makefile.am:  Remove trailing whitespace.  Remove needless
+	"foo = @foo@" assignments.  Replace direct uses of @foo@ with $(foo).
+	* include/Makefile.am:  Likewise.
+	* libmath/Makefile.am:  Likewise.
+	* libsupc++/Makefile.am:  Likewise.
+	* po/Makefile.am:  Likewise.
+	* src/Makefile.am:  Likewise.
+	* testsuite/Makefile.am:  Likewise.
+
+	* Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+	testsuite/Makefile.in:  Regenerated.
+
+2003-08-27  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_EXPORT_INCLUDES):  Change quoting of
+	includedir.
+	* aclocal.m4, configure:  Regenerate.
+
+2003-08-27  Daniel Jacobowitz  
+
+	* acinclude.m4: Include no-executables.m4.
+	* configure.ac: Uncomment GCC_NO_EXECUTABLES.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-08-27  Daniel Jacobowitz  
+
+	* acinclude.m4: Don't call AC_ISC_POSIX.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-08-27  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_CONDITIONAL):  New macro.  Wrap
+	AM_CONDITIONAL.  Replace all calls to AM_CONDITIONAL with this one.
+	(GLIBCXX_ENABLE_HOSTED):  New macro, sets new variable is_hosted,
+	used elsewhere in this file.
+	(GLIBCXX_EVALUATE_CONDITIONALS):  New macro...
+	* configure.ac:  ...called here to expand all conditionals.
+	* Makefile.am:  Conditionalize SUBDIRS on GLIBCXX_HOSTED.
+	* include/Makefile.am:  Remove redundant gxx_include_dir assignment.
+	(install-freestanding-headers):  New target, a subset of
+	install-headers.  Conditionalize install-data-local on GLIBCXX_HOSTED.
+
+	* aclocal.m4, configure, Makefile.in, include/Makefile.in,
+	libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
+	src/Makefile.in, testsuite/Makefile.in:  Regenerated.
+
+2003-08-26  Phil Edwards  
+
+	* docs/doxygen/run_doxygen:  Shell fixes.  Remove hardcoded local
+	pathnames from generated tag file.
+
+2003-08-26  Phil Edwards  
+
+	* Makefile.am:  Add comment.
+	* acinclude.m4 (GLIBCXX_CONFIGURE):  Set new glibcxx_SUBDIRS and
+	SUBDIRS variables.
+	* configure.ac:  Use them both here, instead of hardcoded lists.
+
+	* fragment.am:  Add STAMP varaible.
+	* include/Makefile.am:  Cosmetic whitespace cleanup.  Use $(LN_S)
+	instead of @LN_S@.
+	(stamp-*):  Move file creation rule outside of 'if' branches to
+	ensure the stamp-* files are actually updated.  Use $(STAMP).
+	* src/Makefile.am:  Remove now-nonexistant variable.
+	* libsupc++/Makefile.am:  Likewise.  Snap the assignment chain
+	for -prefer-pic.
+	* po/Makefile.am:  Include same fragment as all the others.
+
+	* aclocal.m4, configure, Makefile.in, include/Makefile.in,
+	libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in:  Regenerated.
+
+2003-08-26  Loren J. Rittle  
+
+	* testsuite/data/cin_unget-1.txt: New.
+	* testsuite/27_io/objects/char/12048.cc: New.
+
+2003-08-25  Zack Weinberg  
+
+	* config/os/hpux/os_defines.h: Unconditionally define
+	_GLIBCXX_GTHREAD_USE_WEAK to 0.
+
+2003-08-19  Geoffrey Keating  
+
+	* crossconfig.m4 (*-darwin*): Add a large and boring stanza for
+	crosses to Darwin targets.
+	* configure: Regenerate.
+
+2003-08-19  Petur Runolfsson  
+
+	* include/ext/ropeimpl.h: #include  instead of 
+
+2003-08-17  Phil Edwards  
+
+	* configure.ac:  GCC_NO_EXECUTABLES was supposed to be commented
+	in the patch from 3 minutes ago.  Boy, is my face red.
+	* configure:  At least I remembered to regenerate this.
+
+2003-08-17  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_EXPORT_INCLUDES):  Remove LIBMATH_INCLUDES
+	and LIBSUPCXX_INCLUDES.  Re-purpose TOPLEVEL_INCLUDES to refer to
+	things from the top level.
+	* configure.ac (GLIBCXX_IS_NATIVE):  Determine earlier and re-order.
+	Comment out the conditionals for CANADIAN and GLIBCXX_BUILD_LIBMATH
+	(currently unused).  Strip the fake-VPATH shell fragment from
+	automake-generated rules, if present.
+	* linkage.m4:  Add comment.
+
+	* fragment.am:  New file, containing factored-out common settings.
+	(AM_CPPFLAGS):  Absorb the deprecated INCLUDES variable contents.
+	* Makefile.am:  Include fragment.am.  Remove common variables.
+	* include/Makefile.am:  Likewise.
+	* libmath/Makefile.am:  Likewise.
+	* libsupc++/Makefile.am:  Likewise.
+	* po/Makefile.am:  Likewise.  Print rules during check.
+	* src/Makefile.am:  Likewise.
+	* testsuite/Makefile.am:  Likewise.
+
+	* aclocal.m4, configure, Makefile.in, include/Makefile.in,
+	libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
+	src/Makefile.in, testsuite/Makefile.in:  Regenerate.
+
+2003-08-11  John Levon  
+
+	* docs/html/ext/howto/guide.html (GLIBCXX_FORCE_NEW): Update
+	remaining places for the name change from GLIBCPP_FORCE_NEW
+	to GLIBCXX_FORCE_NEW
+
+2003-08-11  Benjamin Kosnik  
+
+	* include/bits/basic_ios.h: Remove *_iter typedefs, change num*
+	typedefs to num_*.
+	* include/bits/basic_ios.tcc: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/std/std_istream.h: Same.
+	* include/std/std_ostream.h: Same.
+	* testsuite/26_numerics/complex_inserters_extractors.cc: Fix.
+
+	* include/ext/rope: Remove build warning.
+
+2003-08-11  Andreas Jaeger  
+
+	* include/Makefile.am (stamp-c_base): Add dependency on stamp-bits
+	to make SMP-safe.
+	* include/Makefile.in: Regenerated.
+
+2003-08-11  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_CONFIGURE):  Unprecious CC and CFLAGS
+	when calling AC_PROG_CC.
+	* aclocal.m4, configure:  Regenerate.
+
+2003-08-11  Phil Edwards  
+
+	* acinclude.m4:  Properly quote variable which will be expanded
+	inside makefiles.  Use CXX instead of CC to extract compiler info.
+	* configure.ac (AC_INIT):  Use the new 4-arg form to finally get the
+	correct form in PACKAGE.
+	* aclocal.m4, configure:  Regenerate.
+
+2003-08-08  Benjamin Kosnik  
+
+	* testsuite/Makefile.am (check-abi): Change libstdc++-v3 to libstdc++.
+	(check-abi-verbose): Same.
+	* testsuite/testsuite_performance.h (report_performance): Same.
+
+2003-08-08  Loren J. Rittle  
+
+	* testsuite/testsuite_performance.h (__FreeBSD__): Add fake mallinfo.
+
+2003-08-07  Doug Gregor  
+
+	* include/bits/char_traits.h (char_traits::not_eof): Match operand
+	types in ? :.
+
+2003-08-07  Bernardo Innocenti  
+
+	PR libstdc++/11784
+	* libstdc++-v3/config/cpu/m68k/atomicity.h (__exchange_and_add):
+	Replace variants with new BSET-based version.
+
+2003-08-07  Carlo Wood  
+
+	* include/bits/demangle.h: Do not use cctype functions that depend
+	on locale.
+
+2003-08-05  Phil Edwards  
+
+	* configure.in:  Rename...
+	* configure.ac:  ...to this.
+	* docs/html/17_intro/porting.texi:  Update name.
+
+	* docs/html/17_intro/porting.html:  Regenerate.
+	* config.h.in, Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+	testsuite/Makefile.in:  Regenerate (picks up new dependancy).
+
+2003-08-05  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS):  Put down the crack
+	pipe, open the window to let out the fumes, redo the option-handling
+	logic to properly execute the detection test.
+	* aclocal.m4, configure:  Regenerate.
+
+2003-08-04  Phil Edwards  
+
+	Convert to new autotools.
+	* acconfig.h:  Update with correct names.
+	* configure.host (ATOMICITYH):  Rename to atomicity_include_dir.
+	(qnx6.[12]*):  'q' comes before 's', not after 'w'.
+	* configure.in:  Update.  Split hardcoded cross-configury settings
+	out to...
+	* crossconfig.m4:  ...here.  New file.  Contents untouched.
+	* acinclude.m4:  Reorganize and rewrite as needed.  Split large
+	chunks out to...
+	* linkage.m4:  ...here.  New file.  Math and stdlib linkage tests.
+	Contents untouched.
+	* scripts/testsuite_flags.in:  Update.
+
+	* Makefile.am:  Remove unneeded AUTOMAKE_OPTIONS settings and other
+	variables (already generated by automake).
+	* include/Makefile.am:  Ditto.
+	* libmath/Makefile.am:  Ditto.
+	* libsupc++/Makefile.am:  Ditto.
+	* po/Makefile.am:  Ditto.
+	* src/Makefile.am:  Ditto.
+
+	* aclocal.m4:  Regenerate using new versions.
+	* config.h.in:  Ditto.
+	* configure:  Ditto.
+	* Makefile.in:  Ditto.
+	* include/Makefile.in:  Ditto.
+	* libmath/Makefile.in:  Ditto.
+	* libsupc++/Makefile.in:  Ditto.
+	* po/Makefile.in:  Ditto.
+	* src/Makefile.in:  Ditto.
+	* testsuite/Makefile.in:  Ditto.
+
+2003-08-04  Phil Edwards  
+
+	* po/libstdc++.pot:  Re-extract/regenerate.
+
+2003-08-04  Phil Edwards  
+
+	* testsuite/Makefile.am (DEJATOOL,EXPECT,RUNTEST,RUNTESTFLAGS):
+	Remove unneeded variable assignments.  Leave them for automake.
+	* testsuite/lib/libstdc++-v3.exp:  Rename...
+	* testsuite/lib/libstdc++.exp:  ...to this.  Adjust function names
+	accordingly.
+	* testsuite/libstdc++-v3.dg/dg.exp:  Rename...
+	* testsuite/libstdc++-dg/normal.exp:  ...to this.  Adjust function
+	names accordingly.
+
+2003-08-04  Phil Edwards  
+
+	* docs/doxygen/guide.html:  run_doxygen uses bash.
+	* docs/doxygen/mainpage.html:  We'll be shipping tag files.
+	* docs/doxygen/run_doxygen:  Tweaks and improvements.
+	* docs/doxygen/user.cfg.in:  Set GENERATE_TAGFILE.
+	* docs/html/install.html:  Update autoconf/automake requirements.
+	* docs/html/test.html:  Add section describing DejaGNU support.
+	* docs/html/17_intro/confdeps.dot:  New file, generates...
+	* docs/html/17_intro/confdeps.png:  ...this new file.
+	* docs/html/Makefile:  Generated here.
+	* docs/html/17_intro/configury.html:  New file.
+
+2003-07-31  Phil Edwards  
+
+	* testsuite/lib/libstdc++-v3-dg.exp:  Rename...
+	* testsuite/lib/libstdc++-v3.exp:  ...to this.
+	* testsuite/libstdc++-v3.dg/dg.exp:  No special case needed now.
+
+2003-07-31  Doug Gregor  
+
+	Add user specialization tests.
+	* testsuite/23_containers/deque/1.cc: New.
+	* testsuite/23_containers/list/1.cc: New.
+	* testsuite/23_containers/map/1.cc: New.
+	* testsuite/23_containers/multimap/1.cc: New.
+	* testsuite/23_containers/multiset/1.cc: New.
+	* testsuite/23_containers/set/1.cc: New.
+	* testsuite/23_containers/vector/1.cc: New.
+
+2003-07-31  Benjamin Kosnik  
+
+	Reshuffle 23_containers testsuite.
+	* 23_containers/adaptors.cc, bitset_ctor.cc,bitset_members.cc,
+	bitset_shift.cc, deque_ctor.cc, deque_operators.cc,
+	list_capacity.cc, list_ctor.cc, list_modifiers.cc, list_operators.cc,
+	map_insert.cc, map_operators.cc, map_operators_neg.cc, multiset.cc,
+	set_operators_neg.cc, vector_bool.cc, vector_capacity.cc,
+	vector_ctor.cc, vector_element_access.cc, vector_modifiers.cc,
+	vector_resize.cc: Split into...
+	* 23_containers/bitset/cons/1.cc: New.
+	* 23_containers/bitset/cons/6282.cc: New.
+	* 23_containers/bitset/count/6124.cc: New.
+	* 23_containers/bitset/operations/1.cc: New.
+	* 23_containers/bitset/operations/2.cc: New.
+	* 23_containers/bitset/test/1.cc: New.
+	* 23_containers/bitset/to_ulong/1.cc: New.
+	* 23_containers/deque/cons/1.cc: New.
+	* 23_containers/deque/cons/2.cc: New.
+	* 23_containers/deque/operators/1.cc: New.
+	* 23_containers/list/capacity/1.cc: New.
+	* 23_containers/list/cons/1.cc: New.
+	* 23_containers/list/cons/2.cc: New.
+	* 23_containers/list/cons/3.cc: New.
+	* 23_containers/list/cons/4.cc: New.
+	* 23_containers/list/cons/5.cc: New.
+	* 23_containers/list/cons/6.cc: New.
+	* 23_containers/list/cons/7.cc: New.
+	* 23_containers/list/cons/8.cc: New.
+	* 23_containers/list/cons/9.cc: New.
+	* 23_containers/list/modifiers/1.cc: New.
+	* 23_containers/list/modifiers/2.cc: New.
+	* 23_containers/list/modifiers/3.cc: New.
+	* 23_containers/list/operators/1.cc: New.
+	* 23_containers/list/operators/2.cc: New.
+	* 23_containers/list/operators/3.cc: New.
+	* 23_containers/list/operators/4.cc: New.
+	* 23_containers/map/insert/1.cc: New.
+	* 23_containers/map/operators/1.cc: New.
+	* 23_containers/map/operators/1_neg.cc: New.
+	* 23_containers/multiset/insert/1.cc: New.
+	* 23_containers/priority_queue/members/7161.cc: New.
+	* 23_containers/queue/members/7157.cc: New.
+	* 23_containers/set/operators/1_neg.cc: New.
+	* 23_containers/stack/members/7158.cc: New.
+	* 23_containers/vector/bool/1.cc: New.
+	* 23_containers/vector/bool/6886.cc: New.
+	* 23_containers/vector/capacity/1.cc: New.
+	* 23_containers/vector/capacity/2.cc: New.
+	* 23_containers/vector/capacity/8230.cc: New.
+	* 23_containers/vector/cons/1.cc: New.
+	* 23_containers/vector/cons/2.cc: New.
+	* 23_containers/vector/cons/3.cc: New.
+	* 23_containers/vector/cons/4.cc: New.
+	* 23_containers/vector/cons/6513.cc: New.
+	* 23_containers/vector/element_access/1.cc: New.
+	* 23_containers/vector/modifiers/1.cc: New.
+	* 23_containers/vector/modifiers/2.cc: New.
+	* 23_containers/vector/resize/1.cc: New.
+
+2003-07-31  Rainer Orth  
+
+	* testsuite/thread/pthread1.cc: Add alpha*-*-osf* to dg-do run,
+	dg-options.
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+
+2003-07-30  Phil Edwards  
+
+	* include/bits/c++config:  Partial reversion (comment placement) of
+	previous patch.
+
+2003-07-30  Benjamin Kosnik  
+
+	* include/bits/c++config (_GLIBCXX_FULLY_COMPLIANT_HEADERS): Remove.
+	(_GLIBCXX_NO_TEMPLATE_EXPORT): To _GLIBCXX_EXPORT_TEMPLATE.
+	(_GLIBCXX_AT_AT): Remove.
+	(__USE_MALLOC): Remove.
+	* include/std/std_fstream.h: Modify.
+	* include/bits/basic_ios.h: Same.
+	* include/bits/valarray_array.h: Same.
+	* include/c_std/std_cmath.h: Same.
+	* include/c_std/cmath.tcc: Same.
+	* include/std/std_vector.h: Same.
+	* include/std/std_string.h: Same.
+	* include/std/std_stack.h: Same.
+	* include/std/std_queue.h: Same.
+	* include/std/std_list.h: Same.
+	* include/std/std_deque.h: Same.
+	* include/std/std_streambuf.h: Same.
+	* include/std/std_sstream.h: Same.
+	* include/std/std_ostream.h: Same.
+	* include/std/std_istream.h: Same.
+	* include/bits/valarray_array.tcc: Same, format.
+
+	* include/c/std_cctype.h: Fix include guards.
+	* include/c/std_cerrno.h: Same.
+	* include/c/std_cfloat.h: Same.
+	* include/c/std_climits.h: Same.
+	* include/c/std_clocale.h: Same.
+	* include/c/std_cmath.h: Same.
+	* include/c/std_csetjmp.h: Same.
+	* include/c/std_csignal.h: Same.
+	* include/c/std_cstdarg.h: Same.
+	* include/c/std_cstddef.h: Same.
+	* include/c/std_cstdio.h: Same.
+	* include/c/std_cstdlib.h: Same.
+	* include/c/std_cstring.h: Same.
+	* include/c/std_ctime.h: Same.
+	* include/c/std_cwchar.h: Same.
+	* include/c/std_cwctype.h: Same.
+	* include/c_std/cmath.tcc: Same.
+	* include/c_std/std_cmath.h: Same.
+
+2003-07-30  Gawain Bolton  
+
+	PR libstdc++/11504.
+	* include/bits/stl_tree.h: Replace C-style casts with C++-style
+	casts.  Changes to avoid casting away constness.  Eliminate
+	_Rb_tree_base_iterator class.  Change _Rb_tree_iterator to use
+	initialization lists.  Move out implementation of __black_count()
+	to...
+	* src/stl_tree.cc: ...here and rename _Rb_tree_black_count().
+	Rename_Rb_tree_base_iterator::_M_increment() to
+	_Rb_tree_increment and _Rb_tree_base_iterator::_M_decrement() to
+	_Rb_tree_decrement.
+	* config/linker-map.gnu: Add and change symbols here.
+
+2003-07-30  Jonathan Wakely  
+
+	* docs/html/22_locale/howto.html: Use locale::classic() instead
+	of locale("C").
+
+2003-07-28  Benjamin Kosnik  
+
+	* testsuite/testsuite_hooks.h: Remove list include.
+	(func_callback): Define as unique type, not std::list.
+	Change DEBUG_ASSERT to _GLIBCXX_ASSERT.
+	* testsuite/libstdc++-v3.dg/dg.exp: Same.
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Same.
+	* testsuite/23_containers/bitset_ctor.cc:
+	* testsuite/17_intro/header_ciso646.cc: Remove DEBUG_ASSERT.
+	* testsuite/18_support/numeric_limits.cc: Same.
+	* testsuite/21_strings/basic_string/append/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/append/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/compare/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/compare/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/char/2.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/char/3.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/2.cc: Same.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/3.cc: Same.
+	* testsuite/21_strings/basic_string/find/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/find/char/2.cc: Same.
+	* testsuite/21_strings/basic_string/find/char/3.cc: Same.
+	* testsuite/21_strings/basic_string/find/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/find/wchar_t/2.cc: Same.
+	* testsuite/21_strings/basic_string/find/wchar_t/3.cc: Same.
+	* testsuite/21_strings/basic_string/insert/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/insert/char/2.cc: Same.
+	* testsuite/21_strings/basic_string/insert/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/insert/wchar_t/2.cc: Same.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/1.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/char/4.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/char/5.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/char/6.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/char/7.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc:
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc:
+	* testsuite/21_strings/basic_string/operators/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/operators/char/2.cc: Same.
+	* testsuite/21_strings/basic_string/operators/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/operators/wchar_t/2.cc: Same.
+	* testsuite/21_strings/basic_string/replace/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/char/2.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/char/3.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: Same.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: Same.
+	* testsuite/21_strings/basic_string/substr/char/1.cc: Same.
+	* testsuite/21_strings/basic_string/substr/wchar_t/1.cc: Same.
+	* testsuite/23_containers/bitset_ctor.cc: Same.
+	* testsuite/23_containers/bitset_shift.cc: Same.
+	* testsuite/23_containers/vector_ctor.cc: Same.
+	* testsuite/23_containers/vector_element_access.cc: Same.
+	* testsuite/24_iterators/istreambuf_iterator.cc: Same.
+	* testsuite/24_iterators/iterator.cc: Same.
+	* testsuite/24_iterators/ostreambuf_iterator.cc: Same.
+	* testsuite/25_algorithms/lower_bound.cc: Same.
+	* testsuite/26_numerics/complex_inserters_extractors.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc: Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc: Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc:
+	Same.
+
+2003-07-28  Phil Edwards  
+
+	* docs/doxygen/user.cfg.in, docs/html/abi.txt, docs/html/debug.html,
+	docs/html/test.html, docs/html/17_intro/headers_cc.txt,
+	docs/html/17_intro/howto.html, docs/html/ext/howto.html:  Change
+	GLIBCPP to GLIBCXX (and explain as needed).
+
+2003-07-28  Phil Edwards  
+
+	* README:  Update.
+
+2003-07-28  Phil Edwards  
+
+	* testsuite/22_locale/messages/members/char/1.cc,
+	testsuite/22_locale/messages/members/char/2.cc,
+	testsuite/22_locale/messages/members/char/3.cc,
+	testsuite/22_locale/messages_byname/1.cc:  Update comment regarding
+	the origin of LOCALEDIR.
+	* testsuite/lib/libstdc++-v3.exp:  New file.
+
+2003-07-25  Benjamin Kosnik  
+
+	* include/bits/char_traits.h: Update copyright, tweak.
+	* testsuite/ext/pod_char_traits.cc: Explicitly qualify namespace
+	std types.
+
+2003-07-24  Matt Austern  
+
+	* /include/bits/char_traits.h (class char_traits): Put all the
+	real work into the new class template __gnu_cxx::char_traits.
+	Gave generic definitions for member functions.  Types are taken
+	from the new class template __gnu_cxx::_Char_types.
+	* testsuite/21_strings/char_traits/requirements/short/1.cc: New
+	file.  Test of std::char_traits, which serves as a test of
+	the char_traits primary template.
+
+2003-07-24  Benjamin Kosnik  
+
+	* testsuite/*: Change __gnu_cxx_test to __gnu_test.
+
+2003-07-24  Nathan Myers  
+
+	* testsuite/23_containers/map_operators.cc: Conform to
+	container requirement as value must be Assignable.
+
+2003-07-23  Alexandre Oliva  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_PCH): Rework test such that it
+	tests not only generation of pch files, but also their use.
+	* aclocal.m4, configure: Rebuilt.
+
+2003-07-23  Steve Ellcey  
+
+	* config/cpu/hppa/atomicity.h: Change
+	_GLIBCXX_INST_GLIBCXX_ATOMICITY_LOCK to _GLIBCXX_INST_ATOMICITY_LOCK
+	to match misc-inst.cc
+
+2003-07-23  Steve Ellcey  
+
+	* include/c_std/cmath.tcc: Use _GLIBCXX_ prefix on file guard.
+	* include/c_std/std_cctype.h: Ditto.
+	* include/c_std/std_cerrno.h: Ditto.
+	* include/c_std/std_cfloat.h: Ditto.
+	* include/c_std/std_climits.h: Ditto.
+	* include/c_std/std_clocale.h: Ditto.
+	* include/c_std/std_cmath.h: Ditto.
+	* include/c_std/std_csetjmp.h: Ditto.
+	* include/c_std/std_csignal.h: Ditto.
+	* include/c_std/std_cstdarg.h: Ditto.
+	* include/c_std/std_cstddef.h: Ditto.
+	* include/c_std/std_cstdio.h: Ditto.
+	* include/c_std/std_cstdlib.h: Ditto.
+	* include/c_std/std_cstring.h: Ditto.
+	* include/c_std/std_ctime.h: Ditto.
+	* include/c_std/std_cwchar.h: Ditto.
+	* include/c_std/std_cwctype.h: Ditto.
+	* include/std/std_algorithm.h: Ditto.
+	* include/std/std_bitset.h: Ditto.
+	* include/std/std_complex.h: Ditto.
+	* include/std/std_deque.h: Ditto.
+	* include/std/std_fstream.h: Ditto.
+	* include/std/std_functional.h: Ditto.
+	* include/std/std_iomanip.h: Ditto.
+	* include/std/std_ios.h: Ditto.
+	* include/std/std_iosfwd.h: Ditto.
+	* include/std/std_iostream.h: Ditto.
+	* include/std/std_istream.h: Ditto.
+	* include/std/std_iterator.h: Ditto.
+	* include/std/std_limits.h: Ditto.
+	* include/std/std_list.h: Ditto.
+	* include/std/std_locale.h: Ditto.
+	* include/std/std_map.h: Ditto.
+	* include/std/std_memory.h: Ditto.
+	* include/std/std_numeric.h: Ditto.
+	* include/std/std_ostream.h: Ditto.
+	* include/std/std_queue.h: Ditto.
+	* include/std/std_set.h: Ditto.
+	* include/std/std_sstream.h: Ditto.
+	* include/std/std_stack.h: Ditto.
+	* include/std/std_stdexcept.h: Ditto.
+	* include/std/std_streambuf.h: Ditto.
+	* include/std/std_string.h: Ditto.
+	* include/std/std_utility.h: Ditto.
+	* include/std/std_valarray.h: Ditto.
+	* include/std/std_vector.h: Ditto.
+
+2003-07-22  Doug Gregor  
+
+	* include/bits/basic_string.h (basic_string::insert): Deprecate
+	GNU extension.
+
+2003-07-21  Benjamin Kosnik  
+
+	* scripts/testsuite_flags.in (--build-includes): Remove extraneous
+	paths for libio.
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
+	(test03): Include typeinfo for bad_cast.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+	* testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
+
+2003-07-21  Doug Gregor  
+
+	* include/bits/boost_concept_check.h:
+	(_EqualityComparableConcept::__constraints): Remove != from the
+	list of constraints; it is not listed in Table 28 of the C++98
+	standard.
+
+2003-07-18  Andreas Jaeger  
+
+	* config/abi/sparc-linux-gnu/baseline_symbols.txt: New file.
+	* config/abi/mips-linux-gnu/baseline_symbols.txt: New file.
+	* config/abi/hppa-linux-gnu/baseline_symbols.txt: New file.
+	* config/abi/x86_64-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2003-07-17  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Add __moneypunct_cache, __timepunct_cache.
+	* config/locale/generic/messages_members.h: Tweaks.
+	* config/locale/generic/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Use cache.
+	(moneypunct::~moneypunct): Delete cache.
+	* config/locale/generic/time_members.cc:
+	(__timepunct::_M_initialize_timepunct): Use cache.
+	* config/locale/generic/time_members.h:
+	(__timepunct::~__timepunct): Delete cache.
+	(__timepunct::__timepunct): Set cache.
+	* config/locale/gnu/messages_members.h: Tweaks.
+	* config/locale/gnu/monetary_members.cc:
+	(moneypunct::_M_initialize_moneypunct): Use cache.
+	(moneypunct::~moneypunct): Delete cache.
+	* config/locale/gnu/time_members.cc:
+	(__timepunct::_M_initialize_timepunct): Use cache.
+	* config/locale/gnu/time_members.h:
+	(__timepunct::~__timepunct): Delete cache.
+	(__timepunct::__timepunct): Set cache.
+	* include/bits/locale_facets.h (__timepunct_cache): New.
+	(__moneypunct_cache): New.
+	* include/bits/locale_facets.tcc: Tweak.
+	* src/locale.cc (__timepunct::_S_timezones): Adjust for cache.
+	* src/locale-inst.cc: Instantiate caches.
+	* src/globals.cc: Add "C" caches.
+	* src/localename.cc: Use external "C" caches.
+
+2003-07-17  Phil Edwards  
+
+	* docs/doxygen/guide.html:  Fix typo.
+
+2003-07-16  Benjamin Kosnik  
+
+	* include/ext/pod_char_traits.h: Add state template argument.
+
+2003-07-16  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (__num_base::_S_atoms_in): Add -+xX.
+	(num_get::_M_convert_int): To _M_insert_int.
+	(num_get::_M_convert_float): To _M_insert_float.
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
+	Use caches for ctype, num_get.
+	(num_get::_M_extract_int): Same.
+	(num_get::get(bool)): Same.
+	(__verify_grouping): Use size_t.
+	* src/locale-inst.cc: Update.
+	* src/locale.cc: Adjust _S_atoms_in.
+
+2003-07-16  Phil Edwards  
+
+	* docs/doxygen/mainpage.html:  Move building/writing instructions...
+	* docs/doxygen/guide.html:  ...to here.  New file.
+
+2003-07-16  Jonathan Wakely  
+
+	* docs/html/ext/howto.html: Update URL for SGI STL docs.
+	* docs/html/faq/index.html: Same.
+	* docs/html/faq/index.txt: Regenerate.
+
+2003-07-16  Paolo Carlini  
+
+	PR libstdc++/11528
+	* include/bits/locale_facets.tcc (money_get::do_get):
+	Strip only _leading_ zeros.
+	* testsuite/22_locale/money_get/get/char/11528.cc: Add.
+	* testsuite/22_locale/money_get/get/wchar_t/11528.cc: Add.
+
+2003-07-16  Gerald Pfeifer  
+
+	* include/ext/hash_map (class hash_multimap): Remove extra
+	semicolons from __glibcxx_class_requires3 entries.
+	* include/ext/hash_set (class hash_set): Ditto.
+	(class hash_multiset): Ditto.
+
+2003-07-15  Petur Runolfsson  
+
+	* include/bits/char_traits.h (char_traits::move):
+	Change last parameter from int_type to size_t.
+
+2003-07-15  Jerry Quinn  
+
+	* include/bits/stl_algo.h (includes, set_union, set_intersection,
+	set_difference, set_symmetric_difference, max_element, min_element,
+	next_permutation, prev_permutation, find_first_of, find_end):
+	Document.
+	* include/bits/stl_algobase.h (copy,copy_backward):  Clarify overlap
+	restrictions in docs.
+	* include/bits/stl_heap.h (push_heap, pop_heap, make_heap, sort_heap):
+	Document.
+	* docs/doxygen/doxygroups.cc (setoperations):  New group.
+
+2003-07-15  Jerry Quinn  
+
+	* include/bits/basic_string.h:  Document public functions.
+	* docs/doxygen/TODO:  Update c21 todo.
+
+2003-07-15  Jerry Quinn  
+
+	* include/bits/stl_list.h:  Document more functions.
+	* docs/doxygen/TODO:  Update c23 todo.
+
+2003-07-14  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h (__convert_from_v): One more
+	qualification.
+
+2003-07-14  Paolo Carlini  
+
+	* include/bits/stl_tempbuf.h: Qualify free with std::.
+	* src/locale.cc: Include , qualify getenv.
+
+2003-07-14  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h (__convert_from_v): Include
+	. Qualify names.
+	* config/locale/generic/c_locale.h (__convert_from_v): Ditto.
+
+2003-07-14  Paolo Carlini  
+	    Nathan C. Myers  
+
+	PR libstdc++/11378
+	* include/std/std_fstream.h (xsputn): Declare only.
+	* include/bits/fstream.tcc (xsputn): Define, optimize for the
+	always_noconv() case: when __n is sufficiently large flush
+	the buffer and issue a direct write, if possible combining the
+	two with writev in __basic_file<>::xsputn_2.
+	* config/io/basic_file_stdio.h (__basic_file<>::xsputn_2):
+	New, declare.
+	* config/io/basic_file_stdio.cc (__basic_file<>::xsputn_2):
+	Define.
+	* acinclude.m4 (GLIBCXX_CHECK_WRITE): New macro, checking for
+	the availability of writev in .
+	* configure.in: Call here.
+	* acconfig.h: Add undef for the corresponding symbol.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+	* testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Tweak.
+
+	* include/std/std_fstream.h (sync): Constify a variable.
+
+2003-07-14  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Fix line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-07-14  Gabriel Dos Reis  
+
+	* config/locale/gnu/c_locale.h (__convert_from_v): Include
+	 and . Qualify names.
+
+2003-07-13  Mark Mitchell  
+
+	* config/locale/generic/c_locale.h: Include  and
+	.
+	* include/bits/boost_concept_check.h: Add this-> to unqualified
+	method calls.
+	* include/bits/deque.tcc: Likewise.
+	* include/bits/locale_facets.h : Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/stl_algo.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/ext/rope: Likewise.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/ext/stdio_filebuf.h: Likewise.
+
+2003-07-11  Jerry Quinn  
+
+	* include/bits/basic_ios.h (copyfmt): Document.
+	* include/bits/ios_base.h (event, event_callback, register_callback,
+	xalloc, iword, pword):  Document.
+	(imbue, ~ios_base): Update docs on callbacks.
+
+2003-07-11  Phil Edwards  
+
+	* acinclude.m4 (GLIBCC_ENABLE_SYMVERS):  Tweak comments.  Add
+	warning messages if the environment cannot support symbol versioning.
+	(port_specific_symbol_file):  It's plural, add an 's' on the end.
+	* configure.host:  Likewise.
+	* src/Makefile.am:  Likewise.
+	* config/linker-map.gnu:  Remove one semicolon, heh.
+	* scripts/extract_symvers:  Don't assume useful 'export' syntax.
+	Set LANG as well as LC_ALL for possibly-broken sort(1)s.
+	* aclocal.m4, configure, src/Makefile.in:  Regenerated.
+
+2003-07-09  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc: Use function object for
+	__use_cache instead of template function. Partially specialize for
+	__numpunct<_CharT>.
+	* include/bits/locale_classes.h: Update friend declaration for
+	__use_cache.
+	(_M_install_cache): No throw exception specs.
+	* src/locale.cc: Remove __use_cache specializations.
+	* include/ext/pod_char_traits.h (length): Tweak.
+	* include/bits/locale_facets.h (__numpunct_cache): Remove
+	char_type typedef.
+	* testsuite/testsuite_hooks.h (pod_unsigned_int): Remove.
+	(pod_long): Remove.
+	* testsuite/22_locale/numpunct/members/char/cache_1.cc: New.
+	* testsuite/22_locale/numpunct/members/char/cache_2.cc: New.
+	* testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc: New.
+	* testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc: New.
+	* testsuite/22_locale/numpunct/members/pod/1.cc: New.
+	* testsuite/22_locale/numpunct/members/pod/2.cc: New.
+
+2003-07-09  Jerry Quinn  
+
+	* src/ios.cc (_M_grow_words):  Fix spelling.
+
+2003-07-09  Gawain Bolton  
+
+	* include/bits/stl_tree.h: Move larger member functions in
+	_Rb_tree_base_iterator and _Rb_tree_node to...
+	* src/stl_tree.cc: Here.
+	* src/Makefile.in: Add stl_tree.cc.
+	* src/Makefile.in: Regenerated.
+	* config/linker-map.gnu: Add symbols here.
+
+2003-07-08  Benjamin Kosnik  
+
+	* testsuite/ext/pod_char_traits.cc: New.
+	* include/ext/pod_char_traits.h: New.
+	* include/Makefile.am (ext_headers): Add pod_char_traits.h.
+	* include/Makefile.in: Regenerate.
+	* docs/html/21_strings/howto.html: Update.
+
+2003-07-08  Gawain Bolton  
+
+	* testsuite/performance/list_create_fill_sort.cc: New.
+
+2003-07-08  Benjamin Kosnik  
+
+	* config/locale/generic/numeric_members.cc: Correct type info.
+	* config/locale/gnu/numeric_members.cc: Same.
+	* include/bits/locale_facets.h: Same.
+
+	* include/bits/char_traits.h: Correct spacing.
+
+	* src/locale.cc: Wrap to 80 col.
+
+2003-07-07  Paolo Carlini  
+
+	* include/std/std_complex.h: Partially revert last
+	changes: cmath functions must not be qualified.
+
+2003-07-06  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS):  Do not test for binutils
+	2.11 with globbing backport fix.
+	* aclocal.m4, configure:  Regenerated.
+
+2003-07-06  Paolo Carlini  
+
+	* include/std/std_fstream.h (xsputn): Don't call _M_destroy_pback:
+	if output is at all possible (!_M_reading), cannot be active.
+
+	* include/std/std_fstream.h: Tweak comments to doxygen style.
+
+2003-07-06  Paolo Carlini  
+
+	* include/bits/locale_classes.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/locale_facets.tcc: Likewise.
+	* src/locale.cc: Likewise.
+	* src/localename.cc: Likewise.
+
+2003-07-06  Phil Edwards  
+
+	* include/bits/allocator_traits.h:  Fix doxygen markup.
+	* include/ext/mt_allocator.h:  Likewise.
+
+2003-07-06  Phil Edwards  
+
+	* testsuite/testsuite_hooks.h:  Guard against a missing unlink().
+
+2003-07-05  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS):  Bump minimal version
+	requirement.  Add port_specific_symbol_file variable.
+	* configure.host:  Add docs for port_specific_symbol_file.
+	Clean up try_cpu block for x86.
+	* config/linker-map.gnu:  No more "last symbol can't have a
+	semicolon" kaka.  Add hook for port-specific symbols.
+	* src/Makefile.am:  Remove trailing whitespace.
+	(libstdc++-symbol.ver):  Detect the presence of port-specific
+	symbols, and add them accordingly.
+
+	* docs/html/17_intro/porting.texi:  Bring up to date.
+
+	* src/Makefile.in, aclocal.m4, configure,
+	docs/html/17_intro/porting.html:  Regenerated.
+
+2003-07-05  Phil Edwards  
+
+	* scripts/create_testsuite_files:  New file.
+	* testsuite/Makefile.am (all-local, check-performance):  Use it.
+	* testsuite/lib/libstdc++-v3-dg.exp (v3-computer-tests):  Remove.
+	* testsuite/Makefile.in:  Regenerated.
+
+	* testsuite/performance/filebuf_sputc.cc:  Remove the temporary
+	files at the end.
+	* testsuite/performance/fstream_seek_write.cc:  Likewise.
+	* testsuite/performance/ofstream_insert_float.cc:  Likewise.
+	* testsuite/performance/ofstream_insert_int.cc:  Likewise.
+	* testsuite/abi_check.cc (main):  Nicer spacing in usage output.
+
+2003-07-05  Gawain Bolton  
+
+	* include/bits/stl_list.h: Performance and memory usage
+	improvements. In particular, the behaviour of the constructor and
+	destructor as the list header node is no longer dynamically
+	allocated/de-allocated.
+	* include/bits/list.tcc: Likewise.
+
+2003-07-05  Paolo Carlini  
+
+	* include/std/std_complex.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/std/std_memory.h: Likewise.
+	* include/std/std_valarray.h: Likewise.
+
+2003-07-05  Gawain Bolton  
+
+	* include/bits/stl_tree.h: _Rb_tree_rebalance():  Add local
+	  variable for grandparent and use const
+
+2003-07-05  David Billinghurst 
+
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: xfail on cygwin
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Ditto
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Ditto
+ 	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Ditto
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Ditto
+ 	* testsuite/27_io/objects/char/7.cc: Ditto
+ 	* testsuite/27_io/objects/char/9661-1.cc: Ditto
+
+2003-07-05  Paolo Carlini  
+
+	* include/std/std_bitset.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+
+	* include/std/std_fstream.h: Change comment to doxygen style.
+
+2003-07-05  Phil Edwards  
+
+	* include/std/std_limits.h:  More CPP->CXX changes.
+	* scripts/check_survey.in:  Likewise.
+
+2003-07-04  Benjamin Kosnik  
+
+	Move from CPP to CXX.
+	* include/bits/c++config: Move to GLIBCXX from GLIBCPP.
+	* testsuite/Makefile.am: Same.
+	* testsuite/Makefile.in: Regenerate.
+	* po/Makefile.am: Same.
+	* po/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Same.
+	* libsupc++/Makefile.in: Regenerate.
+	* libmath/Makefile.am: Same.
+	* libmath/Makefile.in: Regenerate.
+	* include/Makefile.am: Same.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.am: Same.
+	* src/Makefile.in: Regenerate.
+	* acconfig.h: Same.
+	* configure.host: Same.
+	* configure.in: Same.
+	* configure: Regenerate.
+	* acinclude.m4: Same.
+	* aclocal.m4: Same.
+	* src: Change all files in this directory.
+	* testsuite: Same.
+	* include: Same, standardize include guards.
+	* config: Same.
+	* libsupc++: Same.
+
+2003-07-04  Zack Weinberg  
+
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	XFAIL on all targets.
+
+2003-07-04  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix missed variable.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-07-04  Jerry Quinn  
+
+	* include/bits/locale_facets.tcc (__int_to_char): Move common case
+	to the top.
+
+2003-07-04  Benjamin Kosnik  
+	    Petur Runolfsson  
+
+	* config/io/basic_file_stdio.cc: Revert.
+
+2003-07-04  Paolo Carlini  
+
+	* include/bits/deque.tcc: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/gslice_array.h: Likewise.
+	* include/bits/indirect_array.h: Likewise.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/mask_array.h: Likewise.
+	* include/bits/slice_array.h: Likewise.
+
+2003-07-04  Gawain Bolton  
+
+	* include/bits/stl_tree.h: Performance and memory usage
+	improvements.
+
+2003-07-04  H.J. Lu 
+
+	* Makefile.am: Replace PWD with PWD_COMMAND.
+	* Makefile.in: Regenerated.
+	* docs/html/Makefile: Likewise.
+
+2003-07-04  Paolo Carlini  
+
+	* include/bits/valarray_array.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/vector.tcc: Likewise.
+
+2003-07-04  Benjamin Kosnik  
+
+	* include/Makefile.am: Update target_ to host_.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.am: Same.
+	* src/Makefile.in: Regenerate.
+
+	* config/os/gnu-linux/os_defines.h: Remove glibc-2.0 support.
+
+2003-07-04  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_DEBUG_FLAGS): To
+	--enable-libstdcxx-debug-flags.
+	(GLIBCPP_ENABLE_DEBUG_FLAGS): To --enable-libstdcxx-debug.
+	(GLIBCPP_ENABLE_PCH): To --enable-libstdcxx-pch.
+	* aclocal.m4: Regenerate.
+	* configure: Same.
+	* docs/html/configopts.html: Update.
+
+2003-07-04  Paolo Carlini  
+
+	Revert the fix for libstdc++/11378.
+
+2003-07-04  Paolo Carlini  
+
+	PR libstdc++/11378
+	* include/std/std_fstream.h (xsputn): In the unbuffered case,
+	provided always_noconv(), issue directly _M_file.xsputn.
+	* testsuite/performance/filebuf_unbuf_sputn.cc: New.
+
+2003-07-04  Paolo Carlini  
+
+	* include/bits/stl_list.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/stl_queue.h: Likewise.
+	* include/bits/stl_raw_storage_iter.h: Likewise.
+	* include/bits/stl_tempbuf.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/stl_uninitialized.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/ext/rope: Change includes order.
+
+2003-07-04  Benjamin Kosnik  
+
+	* configure.host (fpos_include_dir): Fix.
+
+2003-07-04  Paolo Carlini  
+
+	* include/bits/stl_heap.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/stl_iterator_base_funcs.h: Likewise.
+
+	* include/bits/stl_algo.h: Qualify __iterator_category too.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+
+	* include/bits/stl_algo.h: Don't qualify the pair type.
+
+2003-07-03  Benjamin Kosnik  
+
+	* include/Makefile.am (target_headers): Add fpos.h
+	(bits_headers): Remove.
+	* include/Makefile.in: Regenerate.
+	* configure.in: Add FPOS_INC_SRCDIR, substitute it.
+	* configure: Regenerate.
+	* configure.host: Add fpos_include_dir.
+	* config/os/gnu-linux/fpos.h: New.
+	* config/os/generic/fpos.h: Add.
+	* include/bits/fpos.h: Remove.
+
+	* config/io/c_io_stdio.h: Remove fpos_t typedef.
+
+	* include/bits/fstream.tcc: Tweaks.
+	* include/std/std_fstream.h: Same.
+
+	* testsuite/27_io/fpos/1.cc (test01): Uncomment. Move to...
+	* testsuite/27_io/fpos/mbstate_t/1.cc: ...here.
+	* testsuite/27_io/fpos/mbstate_t/2.cc: Same.
+	* testsuite/27_io/fpos/mbstate_t/3.cc: Same.
+	* testsuite/27_io/fpos/1.cc: New.
+
+2003-07-03  Benjamin Kosnik  
+	    Petur Runolfsson  
+
+	* include/std/std_streambuf.h: Remove _M_pos.
+	* config/io/basic_file_stdio.h: Use seekpos instead of seekoff.
+	* config/io/basic_file_stdio.cc: Same, use fseek instead of lseek,
+	use fread/fwrite instead of read/write.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Fix.
+	* testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Close filebufs
+	before reading again.
+	* testsuite/27_io/objects/char/6.cc: Tweak.
+
+2003-07-03  David Edelsohn  
+
+	* testsuite/22_locale/num_put/put/char/7.cc: Guard with
+	_GLIBCPP_USE_WCHAR_T.
+
+2003-07-02  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_M_replace_aux): Constify
+	__n1 and __off1.
+
+2003-07-02  Paolo Carlini  
+
+	* include/bits/stl_bvector.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+	* include/bits/stl_construct.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+
+2003-07-02  Paolo Carlini  
+
+	* testsuite/22_locale/num_put/put/char/7.cc: Include
+	, tweak.
+	* testsuite/22_locale/num_put/put/wchar_t/7.cc: Likewise.
+
+2003-07-01  Phil Edwards  
+
+	* testsuite/Makefile.am (AM_MAKEFLAGS):  Set to -j1 (affects
+	check* targets, but not libs/programs).
+	* testsuite/Makefile.in:  Regenerate.
+
+2003-07-01  Roger Sayle  
+
+	* acinclude.m4 (GLIBCPP_CHECK_STDLIB_SUPPORT): Fix typo in CXXFLAGS.
+	(GLIBCPP_CHECK_MATH_SUPPORT): Likewise.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-07-01  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix obvious error.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-07-01  Paolo Carlini  
+
+	PR libstdc++/11389
+	* include/bits/fstream.tcc (underflow): For encoding() == 0
+	don't read more than __buflen chars.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc: New.
+
+2003-07-01  Jerry Quinn  
+
+	* 22_locale/num_put/put/char/7.cc: New.
+	* 22_locale/num_put/put/wchar_t/7.cc: New.
+
+2003-06-30  Jerry Quinn  
+
+	* src/locale.cc (__use_cache): Revert previous relocation.
+	* include/bits/locale_facets.tcc (__use_cache): Ditto.
+
+2003-06-30  Benjamin Kosnik  
+
+	* 27_io/basic_filebuf/seekoff/char/1-in.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/1-io.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/1-out.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/2-in.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/2-io.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/2-out.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/2.cc: Remove.
+	* 27_io/basic_filebuf/seekoff/char/3-in.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/3-io.cc: Change.
+	* 27_io/basic_filebuf/seekoff/char/3-out.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/4-io.cc: Remove.
+	* 27_io/basic_filebuf/seekpos/char/1-in.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/1-io.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/1-out.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/2-in.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/2-io.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/2-out.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/2.cc: Change.
+	* 27_io/basic_filebuf/seekpos/char/3-in.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/3-io.cc: Remove.
+	* 27_io/basic_filebuf/seekpos/char/3-out.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/4-io.cc: Remove.
+ 	* data/seekoff-1.tst: Remove.
+	* data/seekoff-1io.tst: New.
+	* data/seekoff-1out.tst: New.
+	* data/seekoff-2.tst: Remove.
+	* data/seekoff-2io.tst: New.
+	* data/seekoff-2out.tst: New.
+	* data/seekoff.txt
+	* data/seekpos-1.tst: Remove.
+	* data/seekpos-1io.tst: New.
+	* data/seekpos-1out.tst: New.
+	* data/seekpos-2.tst: Remove.
+	* data/seekpos-2io.tst: New.
+	* data/seekpos-2out.tst: New.
+	* data/seekpos.txt: New.
+
+2003-06-30  Jerry Quinn  
+
+	* src/locale.cc (__use_cache): Move from here ...
+	* include/bits/locale_facets.tcc (__use_cache): To
+	here.
+
+2003-06-30  Paolo Carlini  
+
+	* include/bits/stl_algobase.h: Fully qualify standard
+	functions with std::, thus avoiding Koenig lookup.
+
+2003-06-30  Doug Gregor 
+
+	* include/bits/locale_facets.tcc (money_get::do_get): Avoid
+	subscripting empty string.
+
+2003-06-30  Phil Edwards  
+
+	* testsuite/Makefile.am (check-am):  Do not override.
+	(baseline_symbols):  Declare as PHONY, so no need to 'touch' it.
+	* testsuite/Makefile.in:  Regenerate.
+
+2003-06-30  Doug Gregor 
+
+	* testsuite/24_iterators/insert_iterator.cc (test01, test02):
+	Don't initialize an insert_iterator with a singular iterator.
+
+2003-06-30  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_PCH): Add bits for --enable-pch.
+	* aclocal.m4: Regenerate.
+	* configure.in (GLIBCPP_CHECK_PCH): Move, change to
+	GLIBCPP_ENABLE_PCH, default to yes.
+	* configure: Regenerate.
+	* docs/html/configopts.html: Add --enable-pch.
+
+2003-06-30  Phil Edwards  
+
+	* testsuite/lib/libstdc++-v3-dg.exp:  Add comments.
+	(libstdc++-v3-init):  Also set LD_RUN_PATH.
+
+2003-06-30  Paolo Carlini  
+
+	* include/std/std_streambuf.h (_M_mode): Unused by streambuf, move
+	from here to filebuf and stringbuf.
+	(~basic_streambuf()): Don't set _M_mode.
+	(basic_streambuf()): Don't set _M_mode.
+	* include/std/std_fstream.h (_M_mode): Move here, from streambuf.
+	(~basic_filebuf()): Clean up.
+	* include/bits/fstream.tcc (basic_filebuf()): Set _M_mode.
+	* include/std/std_sstream.h (_M_mode): Move here, from streambuf.
+	* testsuite/27_io/basic_streambuf/cons/char/1.cc: Don't set _M_mode.
+	* testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+
+2003-06-30  Paolo Carlini  
+
+	* include/std/std_fstream.h (_M_underflow): Remove.
+	(uflow): Remove, inherited from streambuf.
+	(underflow): Only declare.
+	* include/bits/fstream.tcc (_M_underflow): Rename to
+	underflow, to which is equivalent for __bump == false,
+	simplify.
+	* include/std/std_sstream.h (_M_underflow): Remove.
+	(uflow): Remove, inherited from streambuf.
+	(underflow): Only declare.
+	* include/bits/sstream.tcc (_M_underflow): Rename to
+	underflow, to which is equivalent for __bump == false,
+	simplify.
+
+2003-06-29  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Fully qualify standard functions
+	with std::, thus avoiding Koenig lookup.
+
+2003-06-29  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc:
+	Improve type correctness-wise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc:
+	Likewise.
+
+2003-06-29  Paolo Carlini  
+
+	* include/std/std_streambuf.h (uflow): According to
+	27.5.2.4.3,p16, don't check gptr() < egptr().
+
+2003-06-28  Paolo Carlini  
+
+	PR libstdc++/9875
+	* include/bits/fstream.tcc (seekoff): Fix for encoding() > 0.
+	(seekpos): Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc:
+	New test.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc:
+	New test.
+
+2003-06-27  Benjamin Kosnik  
+
+	* testsuite/testsuite_performance.h (__gnu_cxx_test): Change
+	output name to libstdc++-v3-performance.sum.
+	* testsuite/Makefile.am (CLEANFILES): Remove .performance.
+	* testsuite/Makefile.in: Regenerate.
+
+2003-06-27  Matthias Klose  
+
+	* testsuite/Makefile.am (check-abi, check-abi-verbose): Save
+	output of abi-check in libstdc++-v3-abi.sum.
+	* testsuite/Makefile.in: Regenerate.
+
+2003-06-27  Krister Walfridsson  
+
+	* config/os/bsd/netbsd/ctype_noninline.h
+	(_C_ctype_): Declare.
+	(ctype::classic_table): Return _C_ctype_ + 1.
+	(ctype::ctype): Use classic_table.
+
+2003-06-27  Paolo Carlini  
+	    Nathan C. Myers  
+
+	PR libstdc++/9178
+	* include/bits/fstream.tcc (_M_underflow): Properly estimate
+	the worst-case number of external bytes for a given get area.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: New.
+
+2003-06-27  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/11305
+	* include/bits/fstream.tcc (overflow): Properly estimate the
+	worst-case number of external bytes for a given put area
+	(by using codecvt::max_length()).
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1: New.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: New.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: New.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: New.
+
+2003-06-27  Nathan Sidwell  
+
+	* config/linker-map.gnu: Remove ; after __numpunct_cache.
+
+2003-06-26  Benjamin Kosnik  
+
+	* include/bits/ios_base.h (ios_base::_M_getloc): Return reference
+	to the imbued locale.
+	* include/bits/locale_facets.tcc (num_put::_M_convert_int): Use
+	_M_getloc.
+	(num_put::_M_convert_float): Use.
+
+2003-06-26  Benjamin Kosnik  
+	    Jerry Quinn  
+
+	* config/linker-map.gnu: Add __numpunct_cache.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Account for _M_data, fill in
+	all elements for "C" locale.
+	(numpunct::~numpunct): Delete _M_data.
+	* config/locale/generic/numeric_members.cc: Same.
+	* include/bits/basic_ios.tcc
+	(basic_ios::init): Remove __locale_cache bits.
+	(basic_ios::_M_cache_locale): Same.
+	* include/bits/ios_base.h: Same. Tweaks.
+	* include/bits/locale_classes.h: Tweaks. Reorder classes.
+	(__use_cache): Make friends with _Impl, locale.
+	(_Impl::_M_caches): Add.
+	(_Impl::_M_install_cache): Add.
+	* include/bits/locale_facets.h (__numpunct_cache): New.
+	(numpunct): Encapsulate data members in __numpunct_cache member,
+	_M_data. Adjust virtuals.
+	(numpunct::numpunct): New ctor for the same.
+	(__locale_cache_base): Remove.
+	(__locale_cache): Remove.
+	* include/bits/locale_facets.tcc (__use_cache): New function,
+	specializations.
+	(num_put::_M_convert_int, _M_convert_float, do_put): Use it.
+	* src/globals.cc: Add cache_vec, numpunct_cache_c, numpunct_cache_w.
+	* src/ios.cc (ios_base::ios_base): Remove __locale_cache.
+	* src/locale-inst.cc: Same. Add __numpunct_cache.
+	* src/locale.cc: Tweak inlines.
+	(__use_cache): Define specializations.
+	* src/localename.cc: Use global bits.
+	(_Impl::~Impl): Deal with __numpunct_cache destruction.
+	(_Impl::_Impl): Same. Pre-cache standard numpunct facets.
+	(_Impl::_M_init_facet): Take into account __numpunct_cache.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Update line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-06-26  Nathan C. Myers  
+	    Paolo Carlini  
+
+	* testsuite/performance/filebuf_copy.cc: New, testing char
+	by char file copy.
+
+2003-06-26  Paolo Carlini  
+	    Nathan C. Myers  
+
+	* include/bits/fstream.tcc (_M_underflow): When the actual
+	end of file is reached, set 'uncommitted' mode to allow a
+	next write without an intervening seek (see C++98 27.8.1.1,2
+	and C89 7.9.5.3).
+	* testsuite/27_io/basic_filebuf/underflow/char/2.cc: New.
+
+2003-06-25  Nathan C. Myers  
+
+	* include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
+	sputc): Move inline, from here...
+	* include/std/std_streambuf.h: ... to here.
+
+	* include/std/std_streambuf.h (snextc, sbumpc, sgetc,
+	sputbackc, sungetc, sputc): Use __builtin_expect.
+
+2003-06-24  Phil Edwards  
+
+	* docs/doxygen/mainpage.html:  Use a useful title.
+
+2003-06-24  Benjamin Kosnik  
+
+	* docs/html/documentation.html: Remove assignment info.
+	* docs/html/17_intro/contribute.html: Edits.
+	* docs/html/17_intro/libstdc++-assign.tx: Remove.
+
+	* docs/html/test.html: Update.
+
+	* README: Update.
+
+2003-06-24  Benjamin Kosnik  
+	    Ulrich Drepper  
+
+	* testsuite/testsuite_performance.h: Tweak mallinfo.
+
+2003-06-24  Paolo Carlini  
+	    Nathan C. Myers  
+
+	* include/std/std_fstream.h (_M_filepos): Remove.
+	(_M_reading, _M_writing): New, encode the various I/O modes:
+	'read', 'write' and 'uncommitted'.
+	(sync): If there is something to flush, do it, then go to
+	'uncommitted' mode.
+	* include/bits/fstream.tcc (_M_set_buffer): Overhaul to deal
+	with three different cases: __off > 0 (upon underflow),
+	__off == 0 (upon overflow), __off == -1 (upon open, setbuf,
+	seekoff/pos).
+	(_M_underflow): Don't call overflow, set _M_reading to true
+	on success, tweak.
+	(pbackfail): Set _M_reading to true on pback creation, tweak.
+	(overflow): Don't seek, deal with overflow in 'uncommitted' mode,
+	set _M_writing to true on success, tweak.
+	(seekoff): Simplify, set _M_reading, _M_writing to false, call
+	_M_set_buffer(-1) ('uncommitted').
+	(open, close, setbuf): Set _M_reading, _M_writing to false and
+	call _M_set_buffer(-1), tweak.
+	(basic_filebuf): Don't set _M_buf_unified.
+	(_M_destroy_internal_buffer): Don't call setg and setp.
+	* include/ext/stdio_filebuf.h (stdio_filebuf): Use _M_reading,
+	_M_writing and _M_set_buffer(-1).
+	* include/std/std_streambuf.h (_M_move_out_cur, _M_move_in_cur,
+	_M_out_lim, _M_buf_unified): Remove.
+	(basic_streambuf): Don't set _M_out_lim and _M_buf_unified.
+	(setp): Don't set _M_out_lim.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Fix for
+	the new logic ('read', 'write' and 'uncommitted' modes): e.g.,
+	upon open the mode is 'uncommitted' and therefore the put area
+	pointers are null.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: Ditto.
+
+	* include/bits/fstream.tcc (showmanyc): Use only the
+	documented derivation interface to basic_streambuf (gptr(),
+	setg(), etc.) to work right with user specializations.
+	* include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
+	sputc, xsgetn, xsputn, __copy_streambufs): Likewise.
+	* include/std/std_streambuf.h (in_avail, sgetc, uflow, stossc):
+	Likewise.
+	* include/std/std_fstream.h (_M_create_pback, _M_destroy_pback,
+	xsgetn): Likewise.
+
+2003-06-23  Loren J. Rittle  
+
+	* configure.host (freebsd*): Set abi_baseline_pair.
+	* config/abi/i386-freebsd4/baseline_symbols.txt: Update from 3.2
+	(at or near first release) to 3.3.
+	* config/abi/i386-freebsd5/baseline_symbols.txt: New file.
+	* config/abi/alpha-freebsd5/baseline_symbols.txt: New file.
+	* config/abi/sparc-freebsd5/baseline_symbols.txt: New file.
+
+	* include/ext/mt_allocator.h: Portability.
+	* testsuite/testsuite_performance.h: Likewise.
+
+2003-06-23  Benjamin Kosnik  
+
+	* docs/html/17_intro/libstdc++-assign.txt: Update address.
+
+	* testsuite/performance/ifstream_getline.cc: Fix.
+
+2003-06-23  Doug Gregor 
+
+	* include/bits/boost_concept_check.h: Don't use _D or _R for type
+	names.
+
+2003-06-22  Paolo Carlini  
+	    Nathan C. Myers  
+
+	* include/std/std_streambuf.h (_M_move_out_cur): _M_out_lim
+	is now used only for filebuf, when _M_buf_unified is true.
+	epgtr() plays the role of _M_out_lim but it's only updated
+	upon overflow, underflow, uflow, seekoff/pos.
+	* include/bits/sstream.tcc (_M_underflow): New, implements
+	stringbuf::underflow and uflow.
+	(seekoff, seekpos): Tweak, use  _M_update_egptr.
+	* include/std/std_sstream.h (str): Rewrote, deal correctly
+	with the new logic, in particular, when pptr() > egptr().
+	(_M_sync): When __testout && !__testin set all the get area
+	pointers to the current string end.
+	(_M_update_egptr): New, internal function updating egptr()
+	to the actual string end.
+	(_M_underflow): New, declare.
+	(underflow): Dispatch to _M_underflow(false).
+	(uflow): Dispatch to _M_underflow(true).
+
+	* include/bits/sstream.tcc (pbackfail, overflow, seekoff,
+	seekpos): Use only the documented derivation interface to
+	basic_streambuf (gptr(), setg(), etc.) to work right with
+	user specializations.
+	* include/std/std_sstream.h (str, _M_sync): Likewise.
+
+2003-06-20  Doug Gregor 
+
+	* testsuite/20_util/auto_ptr.cc: Don't dereference NULL auto_ptr
+	* testsuite/21_strings/basic_string/replace/char/4.cc: Don't
+	dereference end iterator.
+	* testsuite/21_strings/basic_string/replace/wchar_t/4.cc: Same.
+	* testsuite/22_locale/ctype/narrow/char/1.cc: Don't subscript with
+	index equal to the length of a string.
+	* testsuite/22_locale/ctype/narrow/char/2.cc: Same.
+	* testsuite/22_locale/ctype/narrow/wchar_t/1.cc: Same.
+	* testsuite/22_locale/ctype/narrow/wchar_t/2.cc: Same.
+	* testsuite/22_locale/ctype/widen/char/1.cc: Same.
+	* testsuite/22_locale/ctype/widen/wchar_t/1.cc: Same.
+	* testsuite/23_containers/list_modifiers.cc: Don't dereference
+	singular reverse iterator.
+	* testsuite/23_containers/vector_bool.cc: Don't increment singular
+	iterator.
+	* testsuite/24_iterators/rel_ops.cc: Don't compare singular iterator.
+
+2003-06-20  Doug Gregor 
+
+	* include/bits/basic_string.h (basic_string::replace): Dispatch
+	_InputIterator version based on _Is_integer.
+	* include/bits/basic_string.tcc (basic_string::replace):
+	Renamed replace(iterator, iterator, size_type, _CharT) to
+	_M_replace_aux.
+	* testsuite/21_strings/basic_string/assign/char/1.cc (test01):
+	Test basic_string::assign(_InputIterator, _InputIterator),
+	which calls basic_string::replace(iterator, iterator,
+	_Input_iterator, _InputIterator).
+
+2003-06-20  Benjamin Kosnik  
+
+	* testsuite/testsuite_performance.h (resource_counter): Don't use
+	mallinfo at the moment.
+
+2003-06-20  Matthias Klose  
+
+	* configure.host: Set try_cpu to target_cpu for existing
+	baseline files.
+
+2003-06-19  Andreas Jaeger  
+
+	* testsuite/Makefile.am (extract_symvers): Revert accidental
+	change.
+	* testsuite/Makefile.in: Regenerate.
+
+	* configure.in: Pass MULTISUBDIR to testsuite/Makefile.
+	* configure: Regenerated.
+
+2003-06-19  Paolo Carlini  
+
+	* include/std/std_sstream.h (_M_sync): Make non virtual.
+
+2003-06-18  Benjamin Kosnik  
+
+	* testsuite/testsuite_performance.h (time_counter): New.
+	(resource_counter): New.
+	(report_performance): New.
+	(start_counters): New.
+	(stop_counters): New.
+	(clear_counters): New.
+	* testsuite/performance/allocator.cc: Instrument.
+	* testsuite/performance/cout_insert_int.cc: Same.
+	* testsuite/performance/complex_norm.cc: Same.
+	* testsuite/performance/filebuf_sputc.cc: New.
+	* testsuite/performance/fstream_seek_write.cc: Same.
+	* testsuite/performance/ifstream_getline.cc: Same.
+	* testsuite/performance/map_create_fill.cc: Same.
+	* testsuite/performance/ofstream_insert_float.cc: Same.
+	* testsuite/performance/ofstream_insert_int.cc: Same.
+	* testsuite/performance/string_append.cc: Convert.
+	* scripts/check_performance: New.
+	* testsuite/Makefile.am (check-performance): New.
+	(CLEANFILES): Add.
+
+2003-06-18  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	* include/std/std_sstream.h (setbuf): Check __n >= 0.
+	* include/bits/fstream.tcc (setbuf): Tweak.
+
+2003-06-18  Paolo Carlini  
+
+	* include/bits/sstream.tcc (seekoff): We can't seek beyond
+	_M_out_lim, therefore _M_move_out_cur boils down to simply
+	updating _M_out_cur.
+	(seekpos): Likewise, clean up.
+
+2003-06-18  Nathan C. Myers  
+	    Paolo Carlini  
+
+	* include/bits/fstream.tcc (setbuf): Allow (__s, 1) too,
+	simply equivalent to the unbuffered case (0, 0) as far as
+	_M_buf_size is concerned.
+
+2003-06-18  Andreas Jaeger  
+
+	* testsuite/Makefile.am (new-abi-baseline): Create baseline
+	directory.
+	(baseline_file): Use baseline_dir.
+	(baseline_dir): New.
+	(mkinstalldirs): New.
+
+	* acinclude.m4: Rename baseline_file to baseline_dir, strip
+	filename from baseline_dir.
+
+	* testsuite/Makefile.in: Regenerated.
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-06-17  Benjamin Kosnik  
+
+	* configure.in: Missed check_survey bit.
+	* configure: Regenerated.
+
+2003-06-17  Benjamin Kosnik  
+
+	* scripts: New.
+	* config/abi/extract_symvers: Move to...
+	* scripts/extract_symvers: ...here.
+	* mkcheck.in: Move to..
+	* scripts/check_survey.in: ...here.
+	* testsuite_flags.in: Move to..
+	* scripts/testsuite_flags.in: ...here.
+	* configure.in: Change check and testsuite_flags locations.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (current_symbols.txt): Change location.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
+	location of testsuite_flags.
+	* Makefile.am (check-script): Move..
+	(check-script-install): Move...
+	* testsuite/Makefile.am: ... here.
+	* testsuite/Makefile.in: Regenerate.
+	* Makefile.in: Regenerate.
+
+2003-06-17  Benjamin Kosnik  
+
+	* config/abi/i486-linux-gnu/baseline_symbols.txt: Update to 3.3.0.
+
+2003-06-16  Benjamin Kosnik  
+
+	* Makefile.am (check-abi): Move...
+	(new-abi-baseline): Move...
+	* testsuite/Makefile.am: ...here.
+	(new-abi-baseline): Conditionalize.
+	(check-abi): Conditionalize.
+	(check-abi-verbose): New.
+	* Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+	* configure.in: Consolidate testsuite configure bits.
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Same.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+	* testsuite/abi_check.cc: Add --check-verbose.
+	Only output detailed information if --check-verbose.
+
+2003-06-16  Andreas Jaeger  
+
+	* testsuite/abi_check.cc: Create summary report.
+
+2003-06-16  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Fix
+	for systems with BUFSIZ != 8192.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc:
+	Minor tweaks.
+
+2003-06-16  Andreas Jaeger  
+
+	* acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Make
+	check-abi multilib aware.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-06-16  Benjamin Kosnik  
+	    Andreas Jaeger  
+
+	* configure.host: Set x86_64 abi_baseline pair correctly.
+
+2003-06-16  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Split and
+	fix for missing seeks between gets and puts into...
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc: New.
+
+2003-06-15  Richard Henderson  
+
+	* config/linker-map.gnu: Export virtual function thunks for
+	64-bit systems too.
+
+2003-06-13  Benjamin Kosnik  
+
+	* config/abi/i686-pc-linux-gnu: To..
+	* config/abi/i486-linux-gnu: ...this.
+	* config/abi/alphaev67-unknown-linux-gnu: To..
+	* config/abi/alpha-linux-gnu: ...this.
+	* config/abi/ia64-unknown-linux-gnu: To...
+	* config/abi/ia64-linux-gnu: ...this.
+	* config/abi/x86_64-unknown-linux-gnu: To...
+	* config/abi/x86_64-linux-gnu: ...this.
+	* config/abi/i386-unknown-freebsd4: To...
+	* config/abi/i386-freebsd4: ...this.
+	* config/linker-map.gnu: Cleanups, move libsupc++ bits into
+	CXXABI.
+	* configure.host: abi_baseline_triplet to abi_baseline_pair.
+	Simplify cpu bits so that abi_baseline_pair can use the same
+	cpu configuration.
+	* acinclude.m4: Same.
+	* aclocal.m4: Regenerate.
+	* configure.in: Can't get enable_abi_check to yes unless native.
+	* configure: Regenerate.
+
+2003-06-13  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Split and
+	fix for missing seeks between gets and puts into...
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: New.
+	* testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc: New.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Same, into...
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: New.
+	* testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Fix
+	for missing seeks between gets and puts.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Ditto.
+	* testsuite/data/seekoff-1.tst: New.
+	* testsuite/data/seekoff-2.tst: New.
+	* testsuite/data/seekpos-1.tst: New.
+	* testsuite/data/seekpos-2.tst: New.
+
+2003-06-13  Nathan C. Myers 
+
+	Avoid multi-processor bus contention on increment/decrement-and-
+	test of the reference count in the empty-string object, by comparing
+	addresses first, and never touching the reference count of the empty-
+	string object.
+	* include/bits/basic_string.h:
+	(_S_empty_rep_storage): Move into basic_string<>::_Rep for use by its
+	members.
+	(_Rep::_S_empty_rep()): New accessor.
+	(_Rep::_M_length, _Rep::_M_capacity, _Rep::_M_references): Move to
+	a base class _Rep_base.
+	(_Rep::_M_dispose, _Rep::_M_refcopy): Check for the empty string.
+	(basic_string()): Change to use _M_refdata() in place of _M_refcopy(),
+	since no longer must increment its refcount.
+	* include/bits/basic_string.tcc:
+	(_Rep::_M_destroy, _M_leak_hard): Check for the empty string and
+	return immediately.  The former might be unnecessary.  The latter
+	prevents begin() and end() from cloning it unnecessarily.
+	(_S_construct(_InIterator, _InIterator, const _Alloc&,
+	input_iterator_tag), _S_construct(_InIterator, _InIterator,
+	const _Alloc&, forward_iterator_tag), _S_construct(size_type, _CharT,
+	const _Alloc&)): Change to use _M_refdata() in place of _M_refcopy().
+	(_M_mutate): Check for the empty string and treat it as shared.
+	This is necessary here because _M_mutate is sometimes called with
+	all-zero arguments; in all other uses of _M_is_shared, the test comes
+	out right anyhow.
+
+2003-06-12  Benjamin Kosnik  
+
+	* src/allocator-inst.cc: Explicitly instantiate.
+	* include/ext/pool_allocator.h: Inhibit implicit instantiations.
+	Tweaks.
+	* config/linker-map.gnu: Add __pool_alloc bits. Tweaks.
+
+2003-06-11  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Simplify.
+	* aclocal.m4: Regenerate.
+	* Makefile.am (SUBDIRS): Remove libio.
+	* Makefile.in: Regenerate.
+	* configure.in: Same.
+	* configure: Regenerate.
+	* config/io/basic_file_libio.cc: Remove.
+	* config/io/basic_file_libio.h: Remove.
+	* config/io/c_io_libio_codecvt.c: Remove.
+	* config/io/c_io_libio.h: Remove.
+	* libio/*: Remove.
+	* src/Makefile.am: Same.
+	* src/Makefile.in: Regenerate.
+	* docs/html/configopts.html: Edits.
+	* docs/html/explanations.html: Edits.
+
+2003-06-11  Benjamin Kosnik  
+
+	* include/bits/stl_alloc.h (__debug_alloc): Move out.
+	(__malloc_alloc): Same.
+	(__pool_alloc): Same.
+	(__new_alloc): Same.
+	Rename to..
+	* include/bits/allocator.h: ...this.
+	* include/bits/stl_deque.h: Modify comment.
+	* include/bits/stl_tree.h: Modify include.
+	* include/std/std_memory.h: Same.
+	* include/ext/rope: Same.
+	* include/ext/slist: Same.
+	* include/std/std_vector.h: Same.
+	* include/std/std_stack.h: Same.
+	* include/std/std_queue.h: Same.
+	* include/std/std_list.h: Same.
+	* include/std/std_deque.h: Same.
+	* include/backward/alloc.h: Same.
+	* include/ext/debug_allocator.h: New.
+	* include/ext/malloc_allocator.h: New.
+	* include/ext/pool_allocator.h: New.
+	* include/ext/new_allocator.h: New.
+	* include/bits/pthread_allocimpl.h: Remove.
+	* include/bits/stl_pthread_alloc.h: Remove.
+	* include/Makefile.am (ext_headers): Add.
+	* include/Makefile.in: Regenerate.
+	* src/stl-inst.cc: Use __gnu_cxx namespace.
+	* src/stl-inst.cc: Move to...
+	* src/allocator-inst.cc: Here.
+	* src/Makefile.am (sources): Update.
+	* src/Makefile.in: Regenerate.
+	* config/linker-map.gnu: Remove __pool_alloc bits.
+	* testsuite/ext/headers.cc: Add.
+	* testsuite/ext/allocators.cc: Fixup.
+
+2003-06-11  Stefan Olsson  
+	    Ola Rönnerup  
+
+	* include/Makefile.am (ext_headers): Add.
+	* include/Makefile.in: Regenerate.
+	* include/ext/mt_allocator.h: New file.
+
+2003-06-10  Paolo Carlini  
+
+	* include/bits/fstream.tcc (close): Clean up a bit.
+
+	* include/bits/streambuf.tcc (sbumpc): Clean up a bit.
+
+	* include/std/std_fstream.h (_M_destroy_pback): _M_pback_cur_save
+	- the saved _M_in_cur, that is - cannot be null.
+	(sync): Constify a variable.
+
+	* include/std/std_streambuf.h: Tweak a comment.
+	(in_avail): Constify a variable.
+
+2003-06-10  Phil Edwards  
+
+	* docs/html/17_intro/BUGS:  Update from 2.90.8 snapshot.
+	* docs/html/17_intro/CHECKLIST:  Bring up to date with respect to
+	correctness of container::iterator typedefs.  Fix whitespace.
+	* docs/html/20_util/howto.html, docs/html/ext/howto.html:  Add links
+	to allocator docs.
+	* docs/html/documentation.html:  Regenerate.
+
+	* include/bits/basic_string.h, include/bits/basic_string.tcc,
+	include/bits/deque.tcc, include/bits/list.tcc, include/bits/stl_algo.h,
+	include/bits/stl_algobase.h, include/bits/stl_bvector.h,
+	include/bits/stl_deque.h, include/bits/stl_iterator_base_funcs.h,
+	include/bits/stl_list.h, include/bits/stl_uninitialized.h,
+	include/bits/stl_vector.h, include/bits/vector.tcc,
+	include/ext/algorithm, include/ext/slist, include/std/std_bitset.h:
+	Change _Iter names to _Iterator, and __pos to __position.
+
+	* include/bits/stl_relops.h, include/bits/stl_numeric.h,
+	include/bits/stl_multiset.h, include/bits/stl_set.h:
+	Remove emacs markers.
+
+	* include/bits/stl_threads.h (_STL_auto_lock):  Add __unused__.
+
+2003-06-10  Paolo Carlini  
+
+	* include/bits/fstream.tcc (overflow): According to
+	27.5.2.4.5, overflow() returns not_eof(eof()).
+	* testsuite/27_io/basic_filebuf/overflow/char/2.cc: New.
+	* testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Ditto.
+
+2003-06-10  Paolo Carlini  
+
+	* include/bits/fstream.tcc (_M_underflow): Check overflow return
+	value; tweak slightly.
+
+2003-06-09  Paolo Carlini  
+
+	* include/bits/fstream.tcc (_M_underflow): Do not special
+	case the unbuffered case, which really means simply a one char
+	get area.
+	(basic_filebuf): Initialize _M_buf_size.
+	(setbuf): Unbuffered means _M_buf_size == 1, since only
+	_M_buf_size - 1 == 0 chars are going to be used for the
+	put area and 1 for the get area.
+	* include/std/std_streambuf.h (_M_buf_size): Move to basic_filebuf.
+	(~basic_streambuf): Tweak.
+	(basic_streambuf): Do not initialize _M_buf_size.
+	* include/std/std_fstream.h (_M_buf_size): Add from basic_streambuf.
+	(~basic_filebuf): Tweak.
+	(_M_set_buffer): Tweak, considering that _M_buf_size == 1 is the
+	unbuffered situation (i.e., put area pointers NULL).
+	* include/bits/streambuf.tcc (sbumpc): Clean up.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc: New.
+
+2003-06-09  Phil Edwards  
+
+	* acinclude.m4:  Move all AM_CONDITIONAL calls out.
+	(GLIBCPP_CONFIGURE):  Set defaults for variables used in AM_CONDITIONAL
+	statements.
+	* configure.in:  Centralize AM_CONDITIONALs so that they are always
+	run.  Make use of GLIBCPP_IS_CROSS_COMPILING.
+	* aclocal.m4, configure:  Regenerated.
+
+2003-06-09  Paolo Carlini  
+
+	* docs/html/ext/howto.html ('LWG Issues'):  Add issue 235.
+
+2003-06-06  Nathan Myers  
+
+	* include/bits/stl_iterator.h
+	(reverse_iterator::reverse_iterator()): Apply DR235: default
+	constructor default-initializes data member.  Instantiated on a
+	pointer type, the member has to end up equal to zero.
+
+2003-06-06  Benjamin Kosnik  
+
+	* include/bits/stl_alloc.h: Cleanups.
+	* include/ext/functional: Same.
+	* include/ext/hash_map: Same.
+	* include/ext/hash_set: Same.
+	* include/ext/iterator: Same.
+	* include/ext/memory: Same.
+	* include/ext/numeric: Same.
+	* include/ext/rb_tree: Same.
+	* include/ext/ropeimpl.h: Same.
+	* include/ext/slist: Same.
+	* include/ext/stdio_filebuf.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/ext/stl_rope.h: Move to...
+	* include/ext/rope: ...here.
+	* include/ext/stl_hash_fun.h: Move to...
+	* include/ext/hash_fun.h: ...here.
+	* include/ext/stl_hashtable.h: Move to...
+	* include/ext/hashtable.h: ...here.
+	* include/backward/hashtable.h: Reflect new names.
+	* include/Makefile.am: Same.
+	* include/Makefile.in: Regenerated.
+
+2003-06-05  Benjamin Kosnik  
+
+	PR libstdc++/9024
+	* include/bits/fstream.tcc (_M_underflow): Fix for unbuffered.
+	* include/bits/stl_algobase.h: Tweak.
+	* include/std/std_fstream.h: Move _M_buf_size to...
+	* include/std/std_streambuf.h: ...here. Modify.
+	* include/bits/streambuf.tcc: Same.
+	* testsuite/testsuite_hooks.h: Tweak.
+	* testsuite/testsuite_io.h (constraint_filebuf): New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sgetn/char/3.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sputc/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/2.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sputc/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/1.cc: Split into...
+	* testsuite/27_io/basic_filebuf/sputn/char/1-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-in.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: New.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: New.
+	* testsuite/data/sgetc.txt: New.
+	* testsuite/data/sgetn.txt: New.
+
+2003-06-05  Paolo Carlini  
+
+	PR libstdc++/11095
+	* include/bits/istream.tcc (operator>>(basic_istream&, _CharT*)):
+	Deal with width() smaller than zero.
+	* include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT),
+	operator<<(basic_ostream&, char), operator<<(basic_ostream&, const
+	_CharT*), operator<<(basic_ostream<_CharT, _Traits>&, const
+	char*), operator<<(basic_ostream&, const char*),
+	operator<<(basic_ostream, const basic_string&)): Likewise.
+
+	* testsuite/27_io/basic_istream/extractors_character/char/
+	(11095-i.cc, 11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
+	* testsuite/27_io/basic_ostream/inserters_character/char/
+	(11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	(11095-od.cc, 11095-oe.cc, 11095-of.cc): New.
+
+2003-06-05  Rainer Orth  
+
+	* acinclude.m4 (GLIBCPP_CHECK_PCH): Only set glibcpp_PCHFLAGS if
+	.gch compilation works.
+	* aclocal.m4, configure: Regenerate.
+	* testsuite_flags.in (--build-cxx): Use glibcpp_PCHFLAGS to
+	initialize PCHFLAGS.
+
+2003-06-04  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_fold, insert(iterator, _CharT),
+	erase(iterator), erase(iterator, iterator), c_str,
+	compare(const basic_string&)): Constify various variables.
+	* include/bits/basic_string.tcc (_S_construct(_InIter, _InIter,
+	const _Alloc&, input_iterator_tag), _M_destroy, _M_mutate,
+	_S_create, resize, _M_replace, _M_replace_safe,
+	append(const basic_string&), append(const basic_string&, size_type,
+	size_type), append(const _CharT*, size_type), append(size_type,
+	_CharT), operator+(const _CharT*, const basic_string&),
+	operator+(_CharT, const basic_string&), replace(iterator, iterator,
+	size_type, _CharT), find(const _CharT*, size_type, size_type),
+	find(_CharT, size_type), rfind(const _CharT*, size_type, size_type),
+	rfind(_CharT, size_type), compare(size_type, size_type,
+	const basic_string&), compare(size_type, size_type,
+	const basic_string&, size_type, size_type), compare(const _CharT*),
+	compare(size_type, size_type, const _CharT*), compare(size_type,
+	size_type, const _CharT*, size_type)): Likewise.
+
+2003-06-03  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc (pbackfail): Make a rarely taken
+	'if' branch less obscure.
+
+2003-06-02  Andrew Pinski  
+
+	PR libstdc++/9815
+	* config/cpu/i386/atomicity.h (__exchange_and_add): add intel
+	asm case to asm.
+	* config/cpu/i486/atomicity.h (__exchange_and_add): Likewise.
+	(__atomic_add): likewise.
+
+2003-06-02  Paolo Carlini  
+
+	* include/bits/sstream.tcc (pbackfail): Minor clean up and
+	reformatting, consistent with basic_filebuf::pbackfail.
+
+2003-06-02  Richard Kreckel  
+
+	PR libstdc++/11062
+	* config/cpu/mips/atomicity.h:  Change __attribute__ ((unused)) to
+	__attribute__ ((__unused__)).
+	* config/os/aix/atomicity.h:  Likewise.
+
+2003-06-02  Paolo Carlini  
+
+	PR libstdc++/9761
+	* include/bits/fstream.tcc (pbackfail): If the pback buffer
+	is already active don't try to store in it a second char.
+	* testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: New.
+
+	* include/bits/fstream.tcc (pbackfail): Add unbuffered bits.
+
+2003-06-02  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: Tweak
+	line spacing.
+
+2003-06-02  Paolo Carlini  
+
+	* include/std/std_fstream.h (_M_destroy_pback): Use _M_in_beg
+	instead of unnecessarily taking the address of _M_pback.
+	(xsgetn): Simplify slightly for a single char pback buffer.
+
+2003-06-02  Paolo Carlini  
+
+	* include/bits/sstream.tcc (seekoff): Remove four unnecessary
+	variables and two 'if', clean up.
+
+2003-06-02  Paolo Carlini  
+
+	* include/bits/sstream.tcc (seekpos): Test against _M_out_lim
+	not _M_out_end, since the former actually points to the string
+	end (vs buffer end).
+	* testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: New.
+
+2003-05-30  Phil Edwards  
+
+	* docs/doxygen/filter:  New file.
+	* docs/doxygen/filter.sed:  New file.
+	* docs/doxygen/run_doxygen:  Add g flag to sed substitutions.  Duh.
+	* docs/doxygen/user.cfg.in (INPUT_FILTER):  Point to new filter.
+	* docs/html/documentation.html:  Fix links to doxygen pages.
+
+2003-05-30  Paolo Carlini  
+
+	* include/bits/fstream.tcc (_M_convert_to_external): Don't
+	check for __ilen > 0.
+
+2003-05-29  Sylvain Pion  
+
+	PR libstdc++/10783
+	* include/bits/stl_iterator.h (class __normal_iterator):
+	Don't inherit from iterator, add missing typedefs.
+
+2003-05-29  Paolo Carlini 
+
+	* testsuite/24_iterators/reverse_iterator.cc: Split up, as follows.
+	* testsuite/24_iterators/reverse_iterator/1.cc: New.
+	* testsuite/24_iterators/reverse_iterator/2.cc: New.
+	* testsuite/24_iterators/reverse_iterator/3.cc: New, from
+	PR libstdc++/10783.
+
+2003-05-27  Steve Ellcey  
+
+	* config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are
+	on IA64 HP-UX.
+	* libsupc++/eh_throw.cc: Don't call _Unwind_Resume_or_Rethrow if
+	_LIBUNWIND_STD_ABI is set.
+
+2003-05-26  Brendan Kehoe  
+
+	* include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and
+	make sure the number of digits required after the decimal-point
+	(if any) is exactly the value returned by frac_digits().
+	* testsuite/22_locale/money_get/get/char/9.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/9.cc: New.
+
+2003-05-27  Jonathan Wakely  
+
+	* include/std/std_istream.h, include/std/std_ostream.h: Typo in
+	comment.
+
+2003-05-26  Benjamin Kosnik  
+
+	PR libstdc++/9339
+	* include/std/std_fstream.h (basic_filebuf::_M_overflow): Remove.
+	(_M_pback): No array necessary.
+	* include/bits/fstream.tcc (basic_filebuf::_M_overflow): Add
+	unbuffered case, coalesec into ...
+	(basic_filebuf::overflow): ...this.
+	* testsuite/27_io/basic_filebuf/sputn/char/9339.cc: New.
+	* testsuite/27_io/basic_filebuf/sputc/char/2.cc: Unbuffered.
+
+2003-05-24  Nathanael Nerode  
+
+	* libsupc++/Makefile.am, libsupc++/cxxabi.h, libsupc++/del_op.cc,
+	libsupc++/del_opnt.cc, libsupc++/del_opv.cc, libsupc++/del_opvnt.cc,
+	libsupc++/eh_alloc.cc, libsupc++/eh_aux_runtime.cc,
+	libsupc++/eh_catch.cc, libsupc++/eh_exception.cc,
+	libsupc++/eh_globals.cc, libsupc++/eh_personality.cc,
+	libsupc++/eh_term_handler.cc, libsupc++/eh_terminate.cc,
+	libsupc++/eh_throw.cc, libsupc++/eh_type.cc,
+	libsupc++/eh_unex_handler.cc, libsupc++/exception,
+	libsupc++/new, libsupc++/new_handler.cc, libsupc++/new_op.cc,
+	libsupc++/new_opnt.cc, libsupc++/new_opv.cc, libsupc++/new_opvnt.cc,
+	libsupc++/pure.cc, libsupc++/tinfo.cc, libsupc++/tinfo2.cc,
+	libsupc++/typeinfo, libsupc++/unwind-cxx.h, libsupc++/vec.cc:
+	Replace "GNU CC" with "GCC".
+
+	* include/backward/new.h: Replace "GNU CC" with "GCC".
+
+2003-05-22  Benjamin Kosnik  
+
+	PR libstdc++/3066.
+	* configure.in: Switch target to host, don't assume newlib.
+	(target_alias): Remove.
+	* configure: Regenerate.
+	* acinclude.m4: Same.
+	* aclocal.m4: Regenerate.
+	* configure.target: Same. Rename to...
+	* configure.host: This.
+
+2003-05-22  Paolo Carlini  
+
+	* include/std/std_fstream.h (_S_pback_size): Remove definition.
+	(_M_create_pback(), _M_destroy_pback()): Simplify for a single-char
+	pback buffer.
+	* include/bits/fstream.tcc (_S_pback_size): Remove declaration.
+	* testsuite/27_io/basic_filebuf/3.cc: Remove explicit instantiation
+	of _S_pback_size for systems with no COMDAT or weak support.
+	* testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
+	* testsuite/27_io/basic_fstream/3.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/3.cc: Likewise.
+
+2003-05-22  Paolo Carlini  
+
+	* include/bits/fstream.tcc (_M_underflow): Simplify:
+	!__testout implies _M_filepos == _M_in_end, therefore
+	the first _M_file.seekoff call is never issued.
+
+2003-05-22  Benjamin Kosnik  
+
+	* configure.in: Sort cross table.
+	* configure: Regenerate.
+
+2003-05-22  Brad Spencer  
+
+	PR libstdc++/10106
+	* configure.in: Add Solaris cross bits.
+
+2003-05-21  Danny Smith  
+
+	* libstdc++-v3/config/os/mingw32/os_defines.h
+	(__GTHREAD_HIDE_WIN32API): Define to 1 by defualt.
+	(NOMINMAX): Define.  Update copyright year.
+
+2003-05-21  Paolo Carlini  
+
+	* include/std/std_fstream.h (_M_set_buffer): Fix indentation.
+
+2003-05-21  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Fix typo.
+	* docs/html/faq/index.txt: Regenerate.
+
+2003-05-21  Jonathan Wakely  
+
+	* docs/html/test.html: Fix markup.
+
+2003-05-21  Danny Smith  
+
+	* libmath/stubs.c (hypot, hypotf, hypotl): Don't divide by
+	zero.
+	Update copyright year.
+
+2003-05-20  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/close/char/4.cc: Fix typo.
+
+2003-05-20  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/close/char/5.cc: New file,
+	further testing that upon filebuf::close() 27.8.1.1,3 is enforced.
+
+2003-05-20  Gerald Pfeifer  
+
+	* include/bits/stl_alloc.h (__default_alloc_template::_S_chunk_alloc):
+	Cast via void* to avoid -Wcast-align warnings.
+	(__default_alloc_template::_S_refill): Likewise.
+
+2003-05-20  Benjamin Kosnik  
+
+	* testsuite/README: Move to...
+	* docs/html/test.html: ...here. Add documentation.
+	* docs/html/install.html: Move testing bits out..
+	* docs/html/documentation.html: Add separate testing link.
+	* testsuite/performance: Add.
+	* testsuite/performance/allocator.cc: New.
+	* testsuite/performance/complex_norm.cc: New.
+	* testsuite/performance/cout_insert_int.cc: New.
+	* testsuite/performance/fstream_seek_write.cc: New.
+	* testsuite/performance/ifstream_getline.cc: New.
+	* testsuite/performance/map_create_fill.cc: New.
+	* testsuite/performance/ofstream_insert_float.cc: New.
+	* testsuite/performance/ofstream_insert_int.cc: New.
+	* testsuite/performance/string_append.cc: New.
+	* testsuite/lib/libstdc++-v3-dg.exp (v3-compute-tests): Filter
+	performance tests.
+
+2003-05-20  Gabriel Dos Reis 
+
+	PR libstdc++/10689
+	* include/std/std_complex.h (pow): Tidy.
+
+2003-05-19  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/close/char/4.cc: New file, testing
+	that upon filebuf::close() 27.8.1.1,3 is enforced.
+
+2003-05-15  Loren J. Rittle  
+
+	* testsuite/thread/pthread4.cc: Further tweak to avoid fini race.
+
+2003-05-15  Paolo Carlini  
+	    Nathan Myers  
+
+	* include/bits/fstream.tcc (_M_overflow): Rewrote to call
+	_M_convert_to_external only once (_M_buf_size is now the size of
+	the put area + 1 for the overflow char of a full area); call
+	_M_set_buffer instead of _M_set_indeterminate.
+	(setbuf): Don't accept a buffer smaller than 2 chars.
+	(_M_underflow): Refill _M_buf_size - 1 chars; call _M_set_buffer,
+	instead of _M_set_determinate.
+	(open): Call _M_set_buffer, instead of _M_set_indeterminate.
+	(seekoff): Likewise.
+	* include/ext/stdio_filebuf.h (stdio_filebuf(int,
+	std::ios_base::openmode, bool, size_t),
+	stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t):
+	Likewise.
+	* include/std/std_fstream.h (_M_set_indeterminate): Remove.
+	(_M_set_determinate): Rename as _M_set_buffer, _M_buf_size ->
+	_M_buf_size - 1.
+	* include/std/std_streambuf.h: Tweak _M_out_lim comment.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Tweak, taking
+	into account that, for _M_buf_size == BUFSIZ == 8192, the size of
+	the put area is now BUFSIZ - 1.
+	* testsuite/ext/stdio_filebuf_2.cc: Tweak, taking into account
+	that now the smallest _M_buf_size is 2 (still fails, for the same
+	reason, with 3.2.3)
+
+2003-05-14  Loren J. Rittle  
+
+	* testsuite/thread/pthread4.cc: Tweak test.
+
+2003-05-13  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Remove
+	excess errors dg marker, use dg-errors instead.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+	* testsuite/20_util/auto_ptr_neg.cc: Same.
+
+2003-05-12  Benjamin Kosnik  
+
+	* include/std/std_fstream.h (basic_filebuf::_M_codecvt): Add
+	cached member.
+	* include/bits/fstream.tcc (basic_filebuf::basic_filebuf):
+	Initialize _M_codecvt.
+	(basic_filebuf::imbue): Same.
+	(basic_filebuf::showmanyc): Use it.
+	(basic_filebuf::underflow): Use it.
+	(basic_filebuf::_M_convert_to_external): Use it.
+	(basic_filebuf::seekoff): Use it.
+	(basic_filebuf::imbue): Use it, tweaks.
+	* include/bits/localefwd.h (__check_facet): New.
+	* include/bits/locale_classes.h: Tweaks.
+	* include/bits/locale_facets.tcc: Tweaks.
+	* include/bits/basic_ios.h (basic_ios::_M_check_facet): Remove.
+	_M_fctype to _M_ctype, _M_fnumput to _M_num_put, _M_fnumget to
+	_M_num_get. Change _M_check_facet to __check_facet. Tweaks.
+	* include/bits/basic_ios.tcc: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/std/std_streambuf.h: Same.
+	* testsuite/27_io/basic_filebuf/imbue/char/2.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/char/3.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc: New.
+
+2003-05-12  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Remove
+	unnecessary includes and unused string literals.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
+
+2003-05-12  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc (_M_overflow): Remove unbuffered bits.
+
+2003-05-12  Paolo Carlini  
+
+	* include/std/std_fstream.h (_M_convert_to_external): Change
+	to return bool, take two less streamsize parameters.
+	* include/bits/fstream.tcc (_M_convert_to_external): Tweak
+	consistently definition.
+	(_M_overflow): Adjust call points.
+
+2003-05-12  Benjamin Kosnik  
+
+	* testsuite/27_io/basic_filebuf/underflow/10096.cc: Add weak bits.
+
+2003-05-11  Phil Edwards  
+
+	* testsuite/Makefile.am:  Properly quote /both/ LD_RUN_PATHs.
+	* testsuite/Makefile.in:  Regenerate.
+
+2003-05-11  Phil Edwards  
+
+	* testsuite/Makefile.am:  Properly quote LD_RUN_PATH.
+	* testsuite/Makefile.in:  Regenerate.
+
+2003-05-11  Gabriel Dos Reis 
+
+	PR libstdc++/3181
+	* include/c_std/std_cmath.h: #include 
+	(acos): Handle integer argument.
+	(asin): Likewise.
+	(atan): Likewise.
+	(atan2): Likewise.
+	(ceil): Likewise.
+	(cos): Likewise.
+	(cosh): Likewise.
+	(exp): Likewise.
+	(fabs): Likewise.
+	(floor): Likewise.
+	(frexp): Likewise.
+	(ldexp): Likewise.
+	(log): Likewise.
+	(log10): Likewise.
+	(sin): Likewise.
+	(sinh): Likewise.
+	(sqrt): Likewise.
+	(tan): Likewise.
+	(tanh): Likewise.
+	* include/bits/cpp_type_traits.h (__are_same<>): New traits.
+	(__enable_if): Likewise.
+	* testsuite/26_numerics/cmath/overloads.C: New test.
+
+2003-05-10  Petur Runolfsson  
+
+	PR libstdc++/9027
+	PR libstdc++/9520
+	PR libstdc++/10096
+	* include/bits/fstream.tcc (basic_file::_M_underflow):  Add generic
+	implementation, based on old wchar_t specialization, add support
+	for codecvt::in() return value of codecvt_base::noconv, remove
+	_M_file.sys_ungetc() call.
+	* include/std/std_fstream.h (basic_file::underflow,
+	basic_file::uflow, basic_file::_M_underflow):  Remove
+	specialization declarations, call _M_underflow from generic versions
+	of underflow and uflow.
+	* src/fstream.cc (basic_file::underflow, basic_file::uflow,
+	basic_file::_M_underflow):  Remove specializations.
+	* src/Makefile.am (sources):  Remove fstream.cc.
+	* src/Makefile.in:  Regenerated.
+	* testsuite/27_io/basic_filebuf/underflow/10096.cc:  New test.
+	* testsuite/27_io/basic_filebuf/underflow/char/1.cc:  New test.
+	* testsuite/27_io/basic_filebuf/underflow/char/9027.cc:  New test.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc:  New test.
+
+2003-05-10  Benjamin Kosnik  
+
+	* include/ext/stdio_filebuf.h (__stdio_filebuf): Remove stack
+	buffer.
+	* config/io/basic_file_stdio.h (__basic_file::xsgetn): Remove
+	unbuffered bits.
+	(__basic_file::xsputn): Same.
+	(__basic_file::seekoff): Same.
+	(__basic_file::seekpos): Same.
+	(__basic_file::showmanyc): Same.
+	* config/io/basic_file_stdio.cc: Same.
+	* include/std/std_fstream.h: Same.
+	* include/bits/fstream.tcc: Same.
+	* src/fstream.cc: Same.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1.cc (test05): Tidy.
+
+2003-05-10  Petur Runolfsson  
+
+	PR libstdc++/9520
+	PR libstdc++/9661
+	PR libstdc++/9662
+	* include/ext/stdio_sync_filebuf.h:  New file.
+	(basic_stdiobuf):  New.
+	* include/Makefile.am (ext_headers): Add ext/stdio_sync_filebuf.h
+	* include/Makefile.in: Regenerate.
+	* include/bits/ios_base.h (Init::_S_create_buffers,
+	Init::_S_destroy_buffers):  Remove declarations.
+	* src/globals.cc (buf_cout_sync, buf_cin_sync, buf_cerr_sync,
+	buf_wcout_sync, buf_wcin_sync, buf_wcerr_sync):  Define.
+	* src/ios.cc (Init::_S_create_buffers,
+	Init::_S_destroy_buffers):  Remove.
+	(Init::Init):  Create and use syncronized buffers.
+	(ios_base::sync_with_stdio):  Destroy syncronized buffers,
+	create and install unsyncronized buffers.
+	* testsuite/27_io/objects/char/10.cc:  New test.
+	* testsuite/27_io/objects/char/9.cc:  New test.
+	* testsuite/27_io/objects/char/9661-1.cc:  New test.
+	* testsuite/27_io/objects/char/9661-2_xin.cc:  New test.
+	* testsuite/27_io/objects/char/9661-2_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/1.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/10.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/2.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/2523-1_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/2523-1_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/2523-2_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/2523-2_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/3045.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/3647.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/3_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/3_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/4_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/4_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/5.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/5268.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/5280_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/5280_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/6.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/6548_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/6548_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/6648-1_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/6648-1_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/6648-2_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/6648-2_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/7.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/7744_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/7744_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/8.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/9_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/9_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/9520.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/9661-2_xin.cc:  New test.
+	* testsuite/27_io/objects/wchar_t/9661-2_xin.in:  New.
+	* testsuite/27_io/objects/wchar_t/9662.cc:  New test.
+	* testsuite/ext/stdiobuf_char.cc:  New test.
+	* testsuite/ext/stdiobuf_wchar_t.cc:  New test.
+
+2003-05-10  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/close/char/3.cc: Remove
+	unnecessary includes and unused string literals.
+	* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
+
+2003-05-08  Paolo Carlini  
+
+	* include/std/std_streambuf.h (setg, setp): Don't touch _M_mode.
+
+2003-05-07  Richard Henderson  
+
+	PR c++/10570
+	* libsupc++/eh_catch.cc (__cxa_begin_catch): Handle foreign exceptions.
+	(__cxa_end_catch): Likewise.
+	* libsupc++/eh_throw.cc (__cxa_rethrow): Likewise.  Use
+	_Unwind_Resume_or_Rethrow.
+	* libsupc++/eh_personality.cc (empty_exception_spec): New.
+	(PERSONALITY_FUNCTION): Don't ignore terminate or catch-all
+	for _UA_FORCE_UNWIND.  Honor empty filter spec for foreign
+	exceptions.  Don't push terminate/unexpected to cxa functions.
+	(__cxa_call_unexpected): Remove foreign exception fixmes.
+
+2003-05-07  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base/cons: New.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: New.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: New.
+
+2003-05-07  Paolo Carlini  
+
+	* include/std/std_fstream.h (_M_is_indeterminate): Remove.
+	* src/fstream.cc
+	(basic_filebuf::_M_underflow): Simplify: either
+	there is no buffer or __testget == !__testinit.
+
+	* src/fstream.cc
+	(basic_filebuf::_M_underflow): _M_set_determinate()
+	automatically sets, if appropriate, _M_out_cur == _M_in_cur.
+
+	* include/std/std_fstream.h (_M_destroy_pback): Don't set
+	unnecessarily _M_pback_cur_save and _M_pback_end_save.
+
+	* include/std/std_fstream.h (_M_set_determinate): Minor tweak.
+
+	* include/std/std_sstream.h (_M_sync): Minor tweak.
+
+	* include/bits/fstream.tcc (close): No need to call
+	_M_destroy_pback, setting _M_pback_init to false suffices
+	to clean up.
+
+2003-05-06  Benjamin Kosnik  
+
+	* include/bits/stl_algo.h: Enums as _S_.
+	* include/bits/stl_tree.h: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/stl_alloc.h: Same.
+	* include/ext/stl_hashtable.h: Same.
+	* src/ios.cc: And here.
+
+	* include/std/std_sstream.h: Replace _M_really_sync to _M_sync.
+	* include/bits/sstream.tcc: Same.
+
+	* include/bits/basic_ios.h: Correct spacing for '< ctype'.
+
+	* include/bits/locale_facets.tcc: Replace __temp to __tmp.
+
+	* include/bits/locale_facets.h (__num_base): Remove protected.
+	Use _S_[io]* names for enumerations.
+	(_S_format_int): Remove.
+	* include/bits/locale_facets.tcc: Same.
+	* src/locale.cc: Same.
+
+	* include/std/std_sstream.h (stringbuf::str): Tweak formatting.
+
+2003-05-06  Phil Edwards  
+
+	* docs/html/faq/index.html (3.10):  Add note about mips atomicity.h.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2003-05-06  Michael Ritzert 
+	    Matt Kraai 
+
+	* include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): Tweak.
+	And retweak.
+
+2003-05-06  Richard Sandiford  
+
+	* configure.target (mips*): Use the generic atomicity.h by default.
+
+2003-05-05  Loren J. Rittle  
+	    (Inspired by an alternate patch from Danny Smith.)
+
+	* include/bits/stl_threads.h (_Atomic_swap): Kill it...
+	(_Swap_lock_struct<>): ...and the horse it rode in on.
+	* src/globals.cc (_Swap_lock_struct<>): Likewise.
+	* include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): New
+	member to support...
+	* include/ext/ropeimpl.h (rope<>::c_str): Follow *all* memory
+	visibility rules related to POSIX threads.
+	* testsuite/thread/pthread7-rope.cc: New test.
+
+2003-05-04  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/find/char/3.cc: New
+	file, testing basic_string::find_first_not_of.
+	* testsuite/21_strings/basic_string/find/wchar_t/3.cc:
+	Likewise for basic_string.
+
+2003-05-03  Loren J. Rittle  
+
+	* testsuite/thread/pthread1.cc: Remove special case for FreeBSD.
+
+2003-05-02  Benjamin Kosnik  
+
+	* include/Makefile.am (CLEANFILES): Remove PCH files in target
+	directory.
+	* include/Makefile.in: Regenerate.
+
+2003-05-02  Paolo Carlini  
+
+	* include/std/std_sstream.h (str()): Tidy.
+
+2003-05-02  Nathan Myers  
+	    Paolo Carlini  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Rewrote.
+
+2003-05-02  Jonathan Wakely  
+
+	* include/bits/basic_string.h (swap): Remove redundant template
+	parameters from declaration of non-template member function.
+
+2003-05-01  Phil Edwards  
+
+	* acconfig.h (_GLIBCPP_USE_NLS):  New symbol.
+	* configure.in:  Move libintl.h header test...
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE):  ...to here.  Gather all
+	the NLS-related test results into one symbol.
+	* src/functexcept.cc:  Use it here.
+	* aclocal.m4, config.h.in, configure:  Regenerated.
+
+2003-05-01  Paolo Carlini  
+
+	* include/bits/sstream.tcc (overflow): Instead of calling
+	str(), then _M_string.reserve, thus copying the contents
+	of the current buffer two times, just copy the latter in
+	a temporary, then use the 'swap trick'.
+
+2003-05-01  Paolo Carlini  
+
+	* include/std/std_sstream.h (str()): Revert the best of the
+	previous 'improvement', incorrect due to the COW nature of
+	v3 basic_string; simplify.
+
+2003-05-01  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Adjust the
+	type of __avail to ptrdiff_t to avoid signed-unsigned warning.
+
+2003-05-01  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc (check_version): Update known versions.
+	Check added symbols for version_name != base version. Add missing
+	symbols to incompatible list.
+
+2003-05-01  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_FLAGS): Remove -Winline.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2003-05-01  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (basic_streambuf::xsgetn):
+	Const-ify some variables.
+	(basic_streambuf::xsputn): Likewise; change the type of some
+	variables to size_t.
+	(__copy_streambufs): Change some variables to size_t.
+
+2003-05-01  Paolo Carlini  
+
+	* include/std/std_sstream.h (str()): Avoid constructing
+	a basic_string temporary not only when it would turn out
+	to be zero-sized but also when identical to the current
+	_M_string buffer.
+
+2003-05-01  Paolo Carlini  
+
+	* include/ext/stdio_filebuf.h
+	(stdio_filebuf(int, std::ios_base::openmode, bool, size_t),
+	stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t)):
+	Shorten a bit (-10 lines) by factoring out some code.
+
+2003-04-30  Phil Edwards  
+
+	* acinclude.m4:  Add bit missing from previous patch.
+	* aclocal.m4, configure:  Regenerated.
+
+2003-04-29  Phil Edwards  
+
+	* docs/doxygen/mainpage.html:  Bring up to date.
+	* docs/doxygen/run_doxygen:  Cosmetic tweaks.  Work around a bug
+	in Doxygen.
+	* docs/doxygen/user.cfg.in:  Scanning the precompiled headers
+	breaks everything.  Don't scan them.
+	* docs/html/documentation.html:  Point to "Write after approval"
+	notes.
+
+2003-04-29  Phil Edwards  
+
+	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE):  Search for gettext outside
+	of libc if message translations are being used.  Fix info text in
+	xieee_1003.1-2001 case.
+	* aclocal.m4, configure:  Regenerate.
+
+2003-04-29 Joel Sherrill  
+	   Loren J. Rittle 
+	   Martin v. Löwis  
+
+	* config/cpu/i386/atomicity.h: New file.
+
+2003-04-29  Paolo Carlini  
+
+	* include/bits/fstream.tcc (open): Change to single return.
+
+2003-04-29  Paolo Carlini  
+
+	* include/std/std_sstream.h (underflow): Change to single return.
+
+2003-04-28  Paolo Carlini  
+
+	* include/std/std_streambuf.h (_M_buf): is currently
+	used only for basic_filebuf, therefore move it there.
+	(basic_streambuf(), ~basic_streambuf()): Adjust.
+	* include/std/std_fstream.h (_M_buf): Moved here.
+	* include/std/std_sstream.h (setbuf): Don't set _M_buf,
+	is actually redundant for basic_stringbuf.
+	(_M_really_sync): Likewise.
+	* include/bits/fstream.tcc (basic_filebuf()): Adjust.
+	* include/bits/sstream.tcc (seekoff): Adjust.
+
+2003-04-28  Benjamin Kosnik  
+
+	* src/localename.cc: Standardize exception strings.
+	* src/locale.cc: Same.
+	* src/ios.cc: Same.
+	* include/bits/basic_string.tcc: Same.
+	* include/bits/basic_ios.tcc: Same.
+	* include/std/std_bitset.h: Same.
+	* include/ext/ropeimpl.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_bvector.h: Same.
+	* config/locale/generic/c_locale.cc: Same.
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
+
+	* testsuite/testsuite_hooks.cc (__gnu_cxx_test): Modify.
+
+2003-04-28  Paolo Carlini  
+
+	* include/std/std_streambuf.h (_M_buf_size): is currently
+	used only for basic_filebuf, therefore move it there.
+	(basic_streambuf(), ~basic_streambuf()): Adjust.
+	* include/std/std_fstream.h (_M_buf_size): Moved here.
+	* include/bits/fstream.tcc (basic_filebuf()): Adjust.
+
+2003-04-28  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Don't use
+	_M_buf_size (synced input is now correctly dealt with
+	elsewhere); when the output buffer is full don't fall back
+	to a snextc-sputc loop, call overflow instead.
+
+2003-04-28  Paolo Carlini  
+
+	* include/bits/sstream.tcc (pbackfail): Shorten a bit (6 lines)
+	the innermost 'if' by factoring out some code.
+
+2003-04-28  Phil Edwards  
+
+	* configure.in:  Test for libintl.h.
+	* include/bits/c++config:  Define __N for everybody.
+	* include/bits/basic_string.h, include/bits/stl_bvector.h,
+	include/bits/stl_deque.h, include/bits/stl_vector.h,
+	include/std/std_bitset.h:  Wrap all __throw* text with __N.
+	* po/Makefile.am (pot):  New rule, mostly working.
+	* src/functexcept.cc:  Call gettext on all __throw* arguments when
+	-fexceptions is in effect.
+	* po/Makefile.in, config.h.in, configure:  Regenerate.
+
+2003-04-28  Petur Runolfsson  
+
+	PR libstdc++/9523
+	* include/bits/ios_base.h (Init::_S_ios_create,
+	Init::_S_ios_destroy):  Remove declarations.
+	(Init::_S_create_buffers,
+	Init::_S_destroy_buffers):  Declare
+	* src/ios.cc (Init::_S_ios_create):  Remove
+	(Init::_S_create_buffers):  Create buffers and add to streams.
+	(Init::_S_ios_destroy):  Rename to...
+	(Init::_S_destroy_buffers):  this.
+	(Init::Init):  Only construct streams once.
+	(Init::~Init):  Flush streams, don't destroy them.
+	(ios_base::sync_with_stdio):  Don't destroy streams, only buffers.
+	* testsuite/27_io/ios_base/sync_with_stdio/9523.cc:  New test.
+	* testsuite/27_io/objects/char/5.cc:  New test.
+	* testsuite/27_io/objects/char/5268.cc:  Avoid undefined behavior.
+	* testsuite/27_io/objects/char/6.cc:  New test.
+	* testsuite/27_io/objects/char/7.cc:  New test.
+
+2003-04-28  Benjamin Kosnik  
+
+	* testsuite/27_io/objects/char/8.cc:  New test.
+
+2003-04-28  Benjamin Kosnik  
+
+	* testsuite/22_locale/codecvt/unicode/char.cc: Remove bom usage.
+	* testsuite/22_locale/codecvt/unicode/wchar_t.cc: Same.
+
+2003-04-27  Benjamin Kosnik  
+
+	* include/std/std_fstream.h (basic_filebuf): _M_pback_destroy to
+	_M_destroy_pback. _M_pback_create to
+	_M_create_pback. _M_underflow_common to
+	_M_underflow. _M_really_overflow to _M_overflow.
+	* include/bits/fstream.tcc: Same.
+	* src/fstream.cc: Same.
+	* include/std/std_streambuf.h (basic_streambuf): _M_in_cur_move to
+	_M_move_in_cur.  _M_out_cur_move to _M_move_out_cur.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/sstream.tcc: Same.
+
+2003-04-27  Benjamin Kosnik  
+
+	* include/bits/locale_classes.h (locale::_Impl): Change _M_names
+	from fixed size array.
+	(locale): Change _S_categories as well.
+	Formatting tweaks.
+	* include/bits/locale_facets.tcc: Tweak.
+	* config/locale/gnu/c_locale.cc: Assign _S_categories.
+	* config/locale/generic/c_locale.cc: Same.
+	* src/locale.cc: Tweak.
+	* src/globals.cc: Change facet_name to name_vec, add names_c.
+	* src/localename.cc: Use them.
+	(locale::_Impl::~_Impl): Destroy _M_names.
+	(locale::_Impl::_Impl): Create _M_names.
+
+2003-04-27  Andreas Schwab  
+
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h
+	(__enc_traits): Use __ibom and __ebom instead of ignoring them.
+
+2003-04-27  Nathan Myers  
+
+	Move some basic_string members out of line because
+	they are too big to reasonably be inline.
+	* include/bits/basic_string.h
+	(assign(const basic_string&, size_type, size_type),
+	assign(const _CharT*, size_type),
+	insert(size_type, const basic_string&, size_type, size_type),
+	insert(size_type, const _CharT*, size_type),
+	replace(size_type, size_type, const _CharT*, size_type)):
+	Move from here to...
+	* include/bits/basic_string.tcc: ...here.
+
+2003-04-26  Paolo Carlini  
+
+	* include/bits/fstream.tcc (pbackfail): Shorten a bit (10 lines)
+	the innermost 'if' by factoring out some code.
+
+2003-04-26  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Don't
+	use in_avail(), simplify.
+
+2003-04-26  Paolo Carlini  
+
+	* include/std/std_sstream.h (setbuf): don't set _M_buf_size,
+	in basic_stringbuf it's unused.
+
+	* include/std/std_sstream.h (underflow): consistently use
+	_M_in_cur, not gptr().
+
+2003-04-25  Ranjit Mathew  
+	    Phil Edwards  
+
+	* testsuite_flags.in: Guard against the possibility
+	of having "xgcc" as a part of a folder name in the
+	path to the GCC build folder.
+	* testsuite/Makefile.am: Likewise.
+	* testsuite/Makefile.in: Regenerated.
+
+2003-04-25  Benjamin Kosnik  
+
+	PR libstdc++/10132
+	* include/std/std_fstream.h (basic_filebuf::is_open): Add throw()
+	exception specifications.
+	(basic_filebuf::close): Same.
+	(basic_filebuf::_M_pback_destroy): Same.
+	(basic_filebuf::_M_destroy_internal_buffer): Same.
+	(basic_filebuf): Remove __res_type typedef.
+	* src/fstream.cc: Same.
+	* include/bits/fstream.tcc
+	(basic_filebuf::_M_convert_to_external): Simplify.
+	(basic_filebuf::seekoff): Use has_facet	before use_facet.
+	(basic_filebuf::close): Add exception specification of throw().
+	* testsuite/27_io/basic_filebuf/cons: New.
+	* testsuite/27_io/basic_filebuf/cons/wchar_t: New.
+	* testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc: New.
+	* testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: New.
+	* testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: New.
+
+2003-04-25  Benjamin Kosnik  
+
+	* include/bits/locale_classes.h
+	(locale::_S_extra_categories_size): Remove.
+	* src/locale.cc: Remove _S_extra_categories_size.
+	* src/localename.cc: Same.
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/generic/c_locale.cc: Same.
+
+2003-04-24  Richard Sandiford  
+
+	* src/localename.cc (__gnu_cxx::facet_vec): Correct types.
+
+2003-04-24  Phil Edwards  
+
+	* docs/html/17_intro/howto.html:  Update some links.
+	* docs/html/18_support/howto.html:  Link doxygen numeric_limits notes.
+	* docs/html/27_io/howto.html:  Link doxygen stdio_filebuf notes.
+	* docs/html/ext/howto.html:  Link to demangler notes and API.
+	* docs/html/faq/index.html:  Remove trailing whitespace.
+	(1.4, 2.4, 3.8, 4.1):  Bring up to date.
+	(5.6):  Change to a bulleted list.
+
+	* docs/html/faq/index.txt, docs/html/documentation.html,
+	docs/html/17_intro/porting.html:  Regenerate.
+
+2003-04-23  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/3.cc: _S_pback_size now
+	belongs to basic_filebuf.
+	* testsuite/27_io/basic_fstream/3.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/3.cc: Likewise.
+	* testsuite/27_io/basic_ios/3.cc: Remove _S_pback_size
+	instantiation (now belongs to basic_filebuf).
+	* testsuite/27_io/basic_iostream/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
+	_S_pback_size now belongs to basic_filebuf.
+	* testsuite/27_io/basic_istringstream/3.cc: Remove _S_pback_size
+	instantiation (now belongs to basic_filebuf).
+	* testsuite/27_io/basic_ofstream/3.cc: _S_pback_size now
+	belongs to basic_filebuf.
+	* testsuite/27_io/basic_ostream/3.cc: Remove _S_pback_size
+	instantiation (now belongs to basic_filebuf).
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc:
+	_S_pback_size now belongs to basic_filebuf.
+	* testsuite/27_io/basic_ostringstream/3.cc: Remove _S_pback_size
+	instantiation (now belongs to basic_filebuf).
+	* testsuite/27_io/basic_streambuf/3.cc: _S_pback_size now belongs
+	to basic_filebuf.
+	* testsuite/27_io/basic_stringbuf/3.cc: Remove _S_pback_size
+	instantiation (now belongs to basic_filebuf).
+	* testsuite/27_io/basic_stringstream/3.cc: Likewise.
+
+2003-04-23  Benjamin Kosnik  
+
+	* configure.in: Move GLIBCPP_CHECK_PCH before native/cross conditions.
+	* configure: Regenerated.
+
+2003-04-23  Benjamin Kosnik  
+
+	* config/locale/generic/c_locale.h (__convert_from_v): Use
+	attribute unused.
+
+2003-04-23  Phil Edwards  
+
+	* docs/html/ext/howto.html ('LWG Issues'):  Add issue 60, partial
+	implementation only.
+	* include/bits/istream.tcc (putback, unget, sync, tellg, seekg):
+	Comment and change to comply with DR 60 and the effect on gcount().
+	* include/std/std_istream.h:  Update comments.
+	* testsuite/27_io/basic_istream/putback/char/1.cc (test01):  Add
+	comments about reasons for tests.  Test sync() against gcount().
+	* testsuite/27_io/basic_istream/seekg/char/2.cc:  New file, test
+	for effect on gcount().
+	* testsuite/27_io/basic_istream/tellg/char/2.cc:  New file, test
+	for effect on gcount().
+
+2003-04-22  Loren J. Rittle  
+
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc (test_07):
+	Adjust timing.
+
+2003-04-22  Paolo Carlini  
+
+	* include/std/std_streambuf.h (_S_pback_size, _M_pback,
+	_M_pback_cur_save, _M_pback_end_save, _M_pback_init,
+	_M_pback_create(), _M_pback_destroy()): Move to basic_filebuf.
+	(basic_streambuf::basic_streambuf()): Adjust.
+	* include/std/std_fstream.h (_S_pback_size, _M_pback,
+	_M_pback_cur_save, _M_pback_end_save, _M_pback_init,
+	_M_pback_create(), _M_pback_destroy()): Moved here
+	from basic_streambuf.
+	* include/bits/fstream.tcc (basic_filebuf::basic_filebuf()):
+	Adjust.
+	(basic_filebuf::_S_pback_size): Add declaration.
+	* include/bits/streambuf.tcc (basic_streambuf::_S_pback_size):
+	Remove declaration.
+
+2003-04-21  Paolo Carlini  
+
+	Consistently use _M_in_beg instead of eback(), _M_in_cur
+	instead of gptr(), and so on.
+	* include/bits/fstream.tcc (pbackfail, imbue): Here.
+	* include/bits/sstream.tcc (pbackfail, seekoff, seekpos): Ditto.
+	* include/bits/streambuf.tcc (sbumpc, sputbackc,
+	__copy_streambufs): Ditto.
+	* include/std/std_streambuf.h (sgetc): Ditto.
+
+2003-04-21  Paolo Carlini  
+
+	* include/bits/sstream.tcc (pbackfail, overflow):
+	Formatting fixes.
+
+2003-04-21  Paolo Carlini  
+
+	* include/std/std_streambuf.h (uflow()): It's used only by
+	basic_stringbuf (i.e., basic_filebuf provide its own uflow()),
+	therefore do not consider the _M_buf_unified == true case.
+
+	* include/std/std_streambuf.h (sgetc()): Restore __ret variable.
+
+2003-04-20  Paolo Carlini  
+
+	* docs/html/ext/howto.html ('LWG Issues'):
+	Add issues 19, 90, 171, 231, 271.
+
+2003-04-20  Paolo Carlini  
+
+	* include/bits/sstream.tcc (pbackfail): Remove redundant
+	NULL pointer check from test involving _M_in_*.
+	(overflow, seekoff, seekpos): Const qualify bool variables.
+	* include/std/std_sstream.h (underflow): Remove redundant
+	NULL pointer check from test involving _M_in_*.
+	(_M_really_sync): Const qualify bool variables.
+	* src/fstream.cc (_M_underflow_common): Remove redundant
+	NULL pointer check from test involving _M_in_*, const qualify
+	bool variables.
+
+	* include/std/std_streambuf.h (sgetc): Remove redundant
+	variable.
+
+2003-04-18  Paolo Carlini  
+
+	According to 5.9 para 2 (second bullet) for pointers p, q
+	pointing to the same type, with  p == 0 and q == 0, (p < q)
+	is false.
+	* include/bits/fstream.tcc (close, overflow, _M_really_overflow,
+	seekoff): Remove redundant NULL pointer checks from tests
+	involving _M_out_* and _M_in_*, const qualify bool variables.
+	(showmanyc, pbackfail, _M_convert_to_external, imbue): Const
+	qualify bool variables.
+	* include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc, sputc):
+	Remove redundant NULL pointer checks from tests involving
+	_M_out_* and _M_in_*, const qualify bool variables.
+	* include/std/std_fstream.h (sync): Likewise.
+	(_M_is_indeterminate): Const qualify bool variables.
+	* include/std/std_streambuf.h (sgetc, uflow): Remove redundant
+	NULL pointer checks from tests involving _M_out_* and _M_in_*,
+	const qualify bool variables.
+	(_M_in_cur_move, _M_out_cur_move, uflow): Const qualify bool
+	variables.
+
+2003-04-18  Loren J. Rittle  
+
+	* include/c_std/std_cmath.h (C99 FP capture): Only undefine said
+	C99 FP macros, if actually captured.
+
+	* docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
+	(_GLIBCPP_USE_C99_DYNAMIC): New macro.
+	(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
+	(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
+	* config/os/bsd/freebsd/os_defines.h (_GLIBCPP_USE_C99_CHECK):
+	New macro.
+	(_GLIBCPP_USE_C99_DYNAMIC): New macro.
+	(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
+	(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
+	* include/c_std/std_cstdlib.h: Use new macros.
+	* include/c_std/std_cstdio.h: Use new macros.
+	* include/c_std/std_cwchar.h: Use new macros.
+
+2003-04-17  Benjamin Kosnik  
+
+	PR libstdc++/9555
+	* include/bits/ostream.tcc: Catch all exceptions for formatted
+	output, instead of std::exception and derivatives.
+	* include/bits/istream.tcc: Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc:
+	* testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc:
+	* testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc:
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc:
+	* testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+	* testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc:
+	New.
+
+2003-04-17  Phil Edwards  
+
+	* include/bits/c++config:  Minor cosmetic tweaks.
+
+2003-04-17  Loren J. Rittle  
+
+	* testsuite_flags.in (PCHFLAGS): Find PCH in new home.
+	* include/Makefile.am (pch_input): Find in ${target_builddir}.
+	(pch_output): Rename to...
+	(pch_output_builddir): ..this.  Find in ${target_builddir}.
+	(pch_source): Tweak.
+	(pch_build): Key off a built file.
+	(pch_output rule): Rename to...
+	(pch_input rule): ...this.  Produce ${pch_output_builddir}
+	instead of ${pch_output}.
+	(install-pch rule): Install ${pch_output_builddir}.
+	* include/Makefile.in: Regenerated.
+
+2003-04-17  Paolo Carlini  
+
+	* include/std/std_streambuf.h (setp): _M_out_lim, being
+	the end limit of used put area, is set equal to _M_out_beg.
+
+2003-04-16  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_PCH): New.
+	* aclocal.m4: Regenerated.
+	* configure.in: Remove old demangler bits.
+	Call pch checks.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+	* include/Makefile.am (allstamps): Now allstamped.
+	(allcreated): Define this.
+	(all-local): Use 'em.
+	Conditionally define pch_build, pch_install based on
+	GLIBCPP_BUILD_PCH.
+	(${pch_output}): New rule.
+	(install-pch): New rule.
+	(install-headers): New rule.
+	(install-data-local): Install headers and conditionally pch.
+	* include/Makefile.in: Regenerate.
+	* testsuite_flags.in (--build-cxx): Use pch file.
+
+2003-04-16  Jonathan Wakely  
+
+	* docs/html/ext/sgiexts.html: Fix path to stylesheet.
+
+2003-04-15  Benjamin Kosnik  
+	    Paolo Carlini  
+
+	PR libstdc++/9423
+	* docs/html/27_io/howto.html
+	('The buffering is screwing up my program!'): Explain that
+	opening counts as an I/O operation.
+
+2003-04-15  Andreas Tobler  
+
+	* testsuite/thread/pthread1.cc: Enable for darwin test.
+	* testsuite/thread/pthread2.cc: Same.
+	* testsuite/thread/pthread3.cc: Same.
+	* testsuite/thread/pthread4.cc: Same.
+	* testsuite/thread/pthread5.cc: Same.
+	* testsuite/thread/pthread6.cc: Same.
+
+2003-04-15  Loren J. Rittle  
+
+	libstdc++/7680
+	* include/c_std/std_cmath.h (__gnu_cx::__c99_binding): New namespace.
+	Populate it with multiple legal ways to obtain the C99 float
+	transcendentals.  Use them instead of direct global reference.
+	(C99 FP capture): Guard usage with _GLIBCPP_USE_C99_FP_MACROS_DYNAMIC.
+	* docs/html/17_intro/porting.texi
+	(_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
+	(_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
+	(_GLIBCPP_USE_C99_FP_MACROS_DYNAMIC): New macro.
+	* config/os/bsd/freebsd/os_defines.h
+	(_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
+	(_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
+	* testsuite/26_numerics/c_math_dynamic.cc: New file.
+
+2003-04-14  Andreas Tobler  
+	    Benjamin Kosnik  
+
+	* config/os/generic/ctype_inline.h: Fix.
+
+2003-04-14  Benjamin Kosnik  
+
+	* testsuite/testsuite_hooks.h
+	(__gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher):
+	Change to try_named_locale.
+	* testsuite/testsuite_hooks.cc (__gnu_cxx_test): Same.
+
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Use
+	try_named_locale.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/7.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/8.cc: Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/9.cc: Same.
+	* testsuite/22_locale/codecvt/length/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/length/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/length/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/length/wchar_t/7.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/out/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/out/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/out/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/out/wchar_t/7.cc: Same.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Same.
+	* testsuite/22_locale/collate/compare/char/1.cc: Same.
+	* testsuite/22_locale/collate/compare/char/2.cc: Same.
+	* testsuite/22_locale/collate/compare/char/3.cc: Same.
+	* testsuite/22_locale/collate/compare/wchar_t/1.cc: Same.
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc: Same.
+	* testsuite/22_locale/collate/compare/wchar_t/3.cc: Same.
+	* testsuite/22_locale/collate/hash/char/2.cc: Same.
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc: Same.
+	* testsuite/22_locale/collate/transform/char/2.cc: Same.
+	* testsuite/22_locale/collate/transform/char/3.cc: Same.
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc: Same.
+	* testsuite/22_locale/collate/transform/wchar_t/3.cc: Same.
+	* testsuite/22_locale/collate_byname/1.cc: Same.
+	* testsuite/22_locale/ctype/is/char/2.cc: Same.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Same.
+	* testsuite/22_locale/ctype/narrow/wchar_t/3.cc: Same.
+	* testsuite/22_locale/ctype/widen/wchar_t/2.cc: Same.
+	* testsuite/22_locale/ctype/widen/wchar_t/3.cc: Same.
+	* testsuite/22_locale/facet/2.cc: Same.
+	* testsuite/22_locale/locale/cons/2.cc: Same.
+	* testsuite/22_locale/locale/cons/4.cc: Same.
+	* testsuite/22_locale/locale/cons/5.cc: Same.
+	* testsuite/22_locale/locale/cons/7.cc: Same.
+	* testsuite/22_locale/locale/cons/7222-c.cc: Same.
+	* testsuite/22_locale/locale/cons/7222-env.cc: Same.
+	* testsuite/22_locale/locale/global_locale_objects/2.cc: Same.
+	* testsuite/22_locale/messages/members/char/1.cc: Same.
+	* testsuite/22_locale/messages/members/char/2.cc: Same.
+	* testsuite/22_locale/messages/members/char/3.cc: Same.
+	* testsuite/22_locale/messages_byname/1.cc: Same.
+	* testsuite/22_locale/money_get/get/char/1.cc: Same.
+	* testsuite/22_locale/money_get/get/char/2.cc: Same.
+	* testsuite/22_locale/money_get/get/char/3.cc: Same.
+	* testsuite/22_locale/money_get/get/char/4.cc: Same.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Same.
+	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Same.
+	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Same.
+	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Same.
+	* testsuite/22_locale/money_put/put/char/1.cc: Same.
+	* testsuite/22_locale/money_put/put/char/2.cc: Same.
+	* testsuite/22_locale/money_put/put/char/3.cc: Same.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Same.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Same.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Same.
+	* testsuite/22_locale/moneypunct/members/char/2.cc: Same.
+	* testsuite/22_locale/moneypunct/members/wchar_t/2.cc: Same.
+	* testsuite/22_locale/moneypunct_byname/1.cc: Same.
+	* testsuite/22_locale/num_get/get/char/1.cc: Same.
+	* testsuite/22_locale/num_get/get/char/2.cc: Same.
+	* testsuite/22_locale/num_get/get/char/3.cc: Same.
+	* testsuite/22_locale/num_get/get/char/5.cc: Same.
+	* testsuite/22_locale/num_get/get/char/6.cc: Same.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Same.
+	* testsuite/22_locale/num_get/get/wchar_t/2.cc: Same.
+	* testsuite/22_locale/num_get/get/wchar_t/3.cc: Same.
+	* testsuite/22_locale/num_get/get/wchar_t/5.cc: Same.
+	* testsuite/22_locale/num_get/get/wchar_t/6.cc: Same.
+	* testsuite/22_locale/num_put/put/char/1.cc: Same.
+	* testsuite/22_locale/num_put/put/char/2.cc: Same.
+	* testsuite/22_locale/num_put/put/char/3.cc: Same.
+	* testsuite/22_locale/num_put/put/char/5.cc: Same.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Same.
+	* testsuite/22_locale/num_put/put/wchar_t/2.cc: Same.
+	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Same.
+	* testsuite/22_locale/num_put/put/wchar_t/5.cc: Same.
+	* testsuite/22_locale/numpunct/members/char/1.cc: Same.
+	* testsuite/22_locale/numpunct/members/char/2.cc: Same.
+	* testsuite/22_locale/numpunct/members/wchar_t/1.cc: Same.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc: Same.
+	* testsuite/22_locale/numpunct_byname/1.cc: Same.
+	* testsuite/22_locale/numpunct_byname/2.cc: Same.
+	* testsuite/22_locale/time_get/date_order/char/1.cc: Same.
+	* testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: Same.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Same.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Same.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Same.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Same.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Same.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Same.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Same.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Same.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Same.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Same.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Same.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Same.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_put/put/char/1.cc: Same.
+	* testsuite/22_locale/time_put/put/char/2.cc: Same.
+	* testsuite/22_locale/time_put/put/char/3.cc: Same.
+	* testsuite/22_locale/time_put/put/char/4.cc: Same.
+	* testsuite/22_locale/time_put/put/char/5.cc: Same.
+	* testsuite/22_locale/time_put/put/char/6.cc: Same.
+	* testsuite/22_locale/time_put/put/char/7.cc: Same.
+	* testsuite/22_locale/time_put/put/char/8.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Same.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Same.
+	* testsuite/27_io/basic_filebuf/imbue/char/9322.cc: Same.
+	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc: Same.
+	* testsuite/27_io/basic_streambuf/imbue/char/9322.cc: Same.
+	* testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Same.
+
+2003-04-14  Andreas Tobler  
+
+	* configure.target (_cpu_incdir_fullpath): Solaris 2.9 uses
+	solaris includes, not generic.
+
+2003-04-14  Loren J. Rittle  
+
+	* testsuite/26_numerics/c99_classification_macros_c.cc: Add XFAIL.
+
+	* include/std/std_bitset.h (_M_do_find_next): Fix -Wall nit.
+	* include/bits/concept_check.h: Fix multi-line comment.
+	* testsuite/17_intro/headers.cc (dg-options): Add -Wall -Wsystem-header
+	when target is *-*-freebsd*.
+
+2003-04-14  Nathan Myers  
+	    Paolo Carlini  
+
+	PR libstdc++/9701 (in_avail())
+	* include/std/std_streambuf.h (in_avail): Simplify, in_avail
+	doesn't care if there is anything in some putback cell.
+	* testsuite/27_io/basic_streambuf/in_avail/char/9701-3.cc: Add.
+
+	* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Remove some
+	unused string literals.
+
+2003-04-14  Paolo Carlini  
+
+	* include/bits/fstream.tcc (basic_filebuf::setbuf): Don't set
+	_M_out_end, _M_set_indeterminate() does it.
+
+2003-04-12  John David Anglin  
+
+	* os/hpux/ctype_inline.h: Replace with gnu-linux version.
+
+2003-04-12  David Edelsohn  
+
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
+	Change basic_streambuf instantiation to "unsigned char".
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+
+2003-04-12  Paolo Carlini  
+
+	Remove _M_buf_size_opt, use directly _M_buf_size instead.
+	* include/bits/fstream.tcc
+	(basic_filebuf::_M_allocate_internal_buffer, setbuf): Remove
+	references to _M_buf_size_opt.
+	* include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise.
+	* include/bits/streambuf.tcc (__copy_streambufs): Likewise, rename
+	__bufsize to __in_avail and __size_opt to __buf_size.
+	* include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf): Likewise.
+	* include/std/std_sstream.h (_M_stringbuf_init, setbuf): Likewise.
+	* include/std/std_streambuf.h (~basic_streambuf(),
+	basic_streambuf()): Likewise, remove _M_buf_size_opt member.
+	* testsuite/27_io/basic_filebuf/close/char/3.cc: Set _M_buf_size.
+	* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
+
+2003-04-12  Paolo Carlini  
+
+	* include/ext/stdio_filebuf.h
+	(stdio_filebuf::stdio_filebuf(int, openmode, bool, size_t),
+	stdio_filebuf::stdio_filebuf(__c_file*, openmode, size_t):
+	_M_buf_size_opt == 0 only means "not to use an allocated buffer"
+	since a stack-based buffer is used for small values of the size_t
+	parameter.
+	* include/bits/fstream.tcc (basic_filebuf::_M_really_overflow).
+	If _M_buf_size != 0 flush out the buffer (any kind, stack-based too).
+	* testsuite/ext/stdio_filebuf_2.cc: New testfile.
+
+2003-04-12  Paolo Carlini  
+
+	PR libstdc++/9533
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: New.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Ditto.
+
+2003-04-11  Benjamin Kosnik  
+
+	* testsuite/22_locale/locale/cons/3.cc: Split.
+	* testsuite/22_locale/locale/cons/7222-c.cc: New.
+	* testsuite/22_locale/locale/cons/7222-env.cc: New.
+	Check before trying to create a locale from the environment.
+	* testsuite/27_io/ios_base/state/1.cc (test02): Use "C" locale.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Adjust includes.
+
+2003-04-11  Benjamin Kosnik  
+
+	* testsuite/22_locale/ctype/is/char/3.cc (test03): Use the classic
+	locale to construct this hybrid locale, not the global locale.
+
+2003-04-11  Benjamin Kosnik  
+
+	* testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Add
+	instantiation for AIX.
+	* testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+	* testsuite/25_algorithms/min_max.cc: Same.
+
+2003-04-10  John David Anglin  
+
+	* basic_file_stdio.cc (__basic_file::close): Don't flush stream
+	twice.  Always set _M_cfile to 0 when stream was open.
+
+2003-04-09  Benjamin Kosnik  
+
+	Reshuffle 27_io testsuite.
+	* testsuite/27_io/filebuf.cc,
+	filebuf_members-1.tst, filebuf_members-1.txt, filebuf_members.cc,
+	filebuf_virtuals-1.tst, filebuf_virtuals-1.txt,
+	filebuf_virtuals-2.tst, filebuf_virtuals-3.tst,
+	filebuf_virtuals.cc, fpos.cc, fstream.cc, fstream_members.cc,
+	ifstream.cc, ifstream_members-1.tst, ifstream_members-1.txt,
+	ifstream_members.cc, instantiations.cc, ios.cc,
+	ios_base_callbacks.cc, ios_base_members_static-1.tst,
+	ios_base_members_static.cc, ios_base_storage.cc,
+	ios_base_types.cc, ios_ctor.cc, ios_init.cc,
+	ios_manip_basefield.cc, ios_manip_fmtflags.cc, ios_members.cc,
+	iostream.cc, iostream_members.cc, istream.cc,
+	istream_exception.cc, istream_extractor_char.cc,
+	istream_extractor_other-1.tst, istream_extractor_other-1.txt,
+	istream_extractor_other-2.tst, istream_extractor_other.cc,
+	istream_manip.cc, istream_seeks-1.tst, istream_seeks-1.txt,
+	istream_seeks-2.tst, istream_seeks-3.tst, istream_seeks.cc,
+	istream_sentry.cc, istream_unformatted-1.tst,
+	istream_unformatted-1.txt, istream_unformatted.cc,
+	istringstream.cc, istringstream_members.cc,
+	narrow_stream_objects.cc, ofstream.cc, ofstream_members-1.tst,
+	ofstream_members.cc, ostream.cc, ostream_exception.cc,
+	ostream_fail.cc, ostream_inserter_arith.cc,
+	ostream_inserter_char-1.tst, ostream_inserter_char-1.txt,
+	ostream_inserter_char.cc, ostream_inserter_other-1.tst,
+	ostream_inserter_other-2.tst, ostream_inserter_other.cc,
+	ostream_manip.cc, ostream_seeks-1.tst, ostream_seeks.cc,
+	ostream_sentry.cc, ostream_unformatted.cc, ostringstream.cc,
+	ostringstream_members.cc, standard_manipulators.cc, streambuf.cc,
+	streambuf_members.cc, stringbuf.cc, stringbuf_members.cc,
+	stringbuf_virtuals.cc, stringstream.cc, stringstream_members.cc,
+	wide_stream_objects.cc, istream_extractor_arith/01.cc,
+	istream_extractor_arith/02.cc, istream_extractor_arith/03.cc,
+	istream_extractor_arith/06.cc, istream_extractor_arith/07.cc,
+	istream_extractor_arith/08.cc, istream_extractor_arith/09.cc,
+	istream_extractor_arith/10.cc, istream_extractor_arith/11.cc,
+	istream_extractor_arith/12.cc, istream_extractor_arith/13.cc:
+	Split into...
+	* 27_io/basic_filebuf/1.cc: New.
+	* 27_io/basic_filebuf/2.cc: New.
+	* 27_io/basic_filebuf/3.cc: New.
+	* 27_io/basic_filebuf/4.cc: New.
+	* 27_io/basic_filebuf/close/char/1.cc: New.
+	* 27_io/basic_filebuf/close/char/2.cc: New.
+	* 27_io/basic_filebuf/close/char/3.cc: New.
+	* 27_io/basic_filebuf/close/char/4879.cc: New.
+	* 27_io/basic_filebuf/close/char/9964.cc: New.
+	* 27_io/basic_filebuf/imbue/char/1.cc: New.
+	* 27_io/basic_filebuf/imbue/char/9322.cc: New.
+	* 27_io/basic_filebuf/in_avail/char/1.cc: New.
+	* 27_io/basic_filebuf/is_open/char/1.cc: New.
+	* 27_io/basic_filebuf/open/char/1.cc: New.
+	* 27_io/basic_filebuf/open/char/2.cc: New.
+	* 27_io/basic_filebuf/open/char/3.cc: New.
+	* 27_io/basic_filebuf/open/char/9507.cc: New.
+	* 27_io/basic_filebuf/overflow/char/1.cc: New.
+	* 27_io/basic_filebuf/overflow/char/3599.cc: New.
+	* 27_io/basic_filebuf/overflow/char/9169.cc: New.
+	* 27_io/basic_filebuf/overflow/char/9182-2.cc: New.
+	* 27_io/basic_filebuf/overflow/char/9988.cc: New.
+	* 27_io/basic_filebuf/sbumpc/char/1.cc: New.
+	* 27_io/basic_filebuf/sbumpc/char/9825.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/1.cc: New.
+	* 27_io/basic_filebuf/seekoff/char/2.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/1.cc: New.
+	* 27_io/basic_filebuf/seekpos/char/2.cc: New.
+	* 27_io/basic_filebuf/setbuf/char/1.cc: New.
+	* 27_io/basic_filebuf/setbuf/char/2.cc: New.
+	* 27_io/basic_filebuf/setbuf/char/3.cc: New.
+	* 27_io/basic_filebuf/sgetc/char/1.cc: New.
+	* 27_io/basic_filebuf/sgetn/char/1.cc: New.
+	* 27_io/basic_filebuf/sgetn/char/2.cc: New.
+	* 27_io/basic_filebuf/snextc/char/1.cc: New.
+	* 27_io/basic_filebuf/sputbackc/char/1.cc: New.
+	* 27_io/basic_filebuf/sputbackc/char/9425.cc: New.
+	* 27_io/basic_filebuf/sputc/char/1.cc: New.
+	* 27_io/basic_filebuf/sputc/char/1057.cc: New.
+	* 27_io/basic_filebuf/sputc/char/9701-2.cc: New.
+	* 27_io/basic_filebuf/sputn/char/1.cc: New.
+	* 27_io/basic_filebuf/sputn/char/1057.cc: New.
+	* 27_io/basic_filebuf/sputn/char/9701-1.cc: New.
+	* 27_io/basic_filebuf/sungetc/char/1.cc: New.
+	* 27_io/basic_filebuf/sync/char/1057.cc: New.
+	* 27_io/basic_filebuf/sync/char/9182-1.cc: New.
+	* 27_io/basic_filebuf/underflow/char/10097.cc: New.
+	* 27_io/basic_fstream/1.cc: New.
+	* 27_io/basic_fstream/2.cc: New.
+	* 27_io/basic_fstream/3.cc: New.
+	* 27_io/basic_fstream/4.cc: New.
+	* 27_io/basic_fstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_ifstream/1.cc: New.
+	* 27_io/basic_ifstream/2.cc: New.
+	* 27_io/basic_ifstream/3.cc: New.
+	* 27_io/basic_ifstream/4.cc: New.
+	* 27_io/basic_ifstream/cons/char/1.cc: New.
+	* 27_io/basic_ifstream/open/char/1.cc: New.
+	* 27_io/basic_ifstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_ios/1.cc: New.
+	* 27_io/basic_ios/2.cc: New.
+	* 27_io/basic_ios/3.cc: New.
+	* 27_io/basic_ios/4.cc: New.
+	* 27_io/basic_ios/clear/char/1.cc: New.
+	* 27_io/basic_ios/cons/char/1.cc: New.
+	* 27_io/basic_ios/cons/char/2.cc: New.
+	* 27_io/basic_ios/cons/char/3.cc: New.
+	* 27_io/basic_ios/copyfmt/char/1.cc: New.
+	* 27_io/basic_ios/copyfmt/char/2.cc: New.
+	* 27_io/basic_ios/exceptions/char/1.cc: New.
+	* 27_io/basic_ios/locales/char/1.cc: New.
+	* 27_io/basic_iostream/1.cc: New.
+	* 27_io/basic_iostream/2.cc: New.
+	* 27_io/basic_iostream/3.cc: New.
+	* 27_io/basic_iostream/4.cc: New.
+	* 27_io/basic_istream/1.cc: New.
+	* 27_io/basic_istream/2.cc: New.
+	* 27_io/basic_istream/3.cc: New.
+	* 27_io/basic_istream/4.cc: New.
+	* 27_io/basic_istream/exceptions/char/9561.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/01.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/02.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/03.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/06.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/07.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/08.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/09.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/10.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/11.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/12.cc: New.
+	* 27_io/basic_istream/extractors_arithmetic/char/13.cc: New.
+	* 27_io/basic_istream/extractors_character/char/1.cc: New.
+	* 27_io/basic_istream/extractors_character/char/2.cc: New.
+	* 27_io/basic_istream/extractors_character/char/3.cc: New.
+	* 27_io/basic_istream/extractors_character/char/9826.cc: New.
+	* 27_io/basic_istream/extractors_other/char/1.cc: New.
+	* 27_io/basic_istream/extractors_other/char/2.cc: New.
+	* 27_io/basic_istream/extractors_other/char/3.cc: New.
+	* 27_io/basic_istream/extractors_other/char/9318-in.cc: New.
+	* 27_io/basic_istream/extractors_other/char/9424-in.cc: New.
+	* 27_io/basic_istream/get/char/1.cc: New.
+	* 27_io/basic_istream/get/char/2.cc: New.
+	* 27_io/basic_istream/getline/char/1.cc: New.
+	* 27_io/basic_istream/getline/char/2.cc: New.
+	* 27_io/basic_istream/getline/char/3.cc: New.
+	* 27_io/basic_istream/ignore/char/1.cc: New.
+	* 27_io/basic_istream/ignore/char/6360.cc: New.
+	* 27_io/basic_istream/ignore/char/7220.cc: New.
+	* 27_io/basic_istream/peek/char/1.cc: New.
+	* 27_io/basic_istream/peek/char/6414.cc: New.
+	* 27_io/basic_istream/putback/char/1.cc: New.
+	* 27_io/basic_istream/read/char/1.cc: New.
+	* 27_io/basic_istream/read/char/2.cc: New.
+	* 27_io/basic_istream/read/char/3.cc: New.
+	* 27_io/basic_istream/readsome/char/6746-1.cc: New.
+	* 27_io/basic_istream/readsome/char/6746-2.cc: New.
+	* 27_io/basic_istream/readsome/char/8258.cc: New.
+	* 27_io/basic_istream/seekg/char/2346-fstream.cc: New.
+	* 27_io/basic_istream/seekg/char/2346-sstream.cc: New.
+	* 27_io/basic_istream/seekg/char/8348-1.cc: New.
+	* 27_io/basic_istream/seekg/char/8348-2.cc: New.
+	* 27_io/basic_istream/seekg/char/fstream.cc: New.
+	* 27_io/basic_istream/seekg/char/sstream.cc: New.
+	* 27_io/basic_istream/sentry/char/1.cc: New.
+	* 27_io/basic_istream/sentry/char/2.cc: New.
+	* 27_io/basic_istream/sentry/char/3.cc: New.
+	* 27_io/basic_istream/sentry/char/3983-fstream.cc: New.
+	* 27_io/basic_istream/sentry/char/3983-sstream.cc: New.
+	* 27_io/basic_istream/tellg/char/1.cc: New.
+	* 27_io/basic_istream/tellg/char/8348.cc: New.
+	* 27_io/basic_istream/tellg/char/fstream.cc: New.
+	* 27_io/basic_istream/tellg/char/sstream.cc: New.
+	* 27_io/basic_istream/ws/char/1.cc: New.
+	* 27_io/basic_istringstream/1.cc: New.
+	* 27_io/basic_istringstream/2.cc: New.
+	* 27_io/basic_istringstream/3.cc: New.
+	* 27_io/basic_istringstream/4.cc: New.
+	* 27_io/basic_istringstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_istringstream/str/char/1.cc: New.
+	* 27_io/basic_ofstream/1.cc: New.
+	* 27_io/basic_ofstream/2.cc: New.
+	* 27_io/basic_ofstream/3.cc: New.
+	* 27_io/basic_ofstream/4.cc: New.
+	* 27_io/basic_ofstream/cons/char/2.cc: New.
+	* 27_io/basic_ofstream/open/char/1.cc: New.
+	* 27_io/basic_ofstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_ostream/1.cc: New.
+	* 27_io/basic_ostream/2.cc: New.
+	* 27_io/basic_ostream/3.cc: New.
+	* 27_io/basic_ostream/4.cc: New.
+	* 27_io/basic_ostream/cons/char/9827.cc: New.
+	* 27_io/basic_ostream/endl/char/1.cc: New.
+	* 27_io/basic_ostream/ends/char/1.cc: New.
+	* 27_io/basic_ostream/ends/char/2.cc: New.
+	* 27_io/basic_ostream/exceptions/char/9561.cc: New.
+	* 27_io/basic_ostream/flush/char/1.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/1.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/2.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/3.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/4.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/4402.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/5.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/char/6.cc: New.
+	* 27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/1.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/2.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/3.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/4.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/5.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/6.cc: New.
+	* 27_io/basic_ostream/inserters_character/char/8.cc: New.
+	* 27_io/basic_ostream/inserters_character/wchar_t/7.cc: New.
+	* 27_io/basic_ostream/inserters_character/wchar_t/8.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/1.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/2.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/3.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/4.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/9318-out.cc: New.
+	* 27_io/basic_ostream/inserters_other/char/9424-out.cc: New.
+	* 27_io/basic_ostream/sentry/char/1.cc: New.
+	* 27_io/basic_ostream/sentry/char/2.cc: New.
+	* 27_io/basic_ostream/sentry/char/3983-fstream.cc: New.
+	* 27_io/basic_ostream/sentry/char/3983-sstream.cc: New.
+	* 27_io/basic_ostream/tellp/char/1.cc: New.
+	* 27_io/basic_ostream/tellp/char/2.cc: New.
+	* 27_io/basic_ostringstream/1.cc: New.
+	* 27_io/basic_ostringstream/2.cc: New.
+	* 27_io/basic_ostringstream/3.cc: New.
+	* 27_io/basic_ostringstream/4.cc: New.
+	* 27_io/basic_ostringstream/cons/char/3.cc: New.
+	* 27_io/basic_ostringstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_ostringstream/str/char/1.cc: New.
+	* 27_io/basic_ostringstream/str/char/2.cc: New.
+	* 27_io/basic_streambuf/1.cc: New.
+	* 27_io/basic_streambuf/2.cc: New.
+	* 27_io/basic_streambuf/3.cc: New.
+	* 27_io/basic_streambuf/cons/char/1.cc: New.
+	* 27_io/basic_streambuf/imbue/char/1.cc: New.
+	* 27_io/basic_streambuf/imbue/char/9322.cc: New.
+	* 27_io/basic_streambuf/overflow/char/1.cc: New.
+	* 27_io/basic_streambuf/overflow/char/2.cc: New.
+	* 27_io/basic_streambuf/overflow/char/3599.cc: New.
+	* 27_io/basic_streambuf/sgetc/char/1.cc: New.
+	* 27_io/basic_streambuf/sgetn/char/1.cc: New.
+	* 27_io/basic_streambuf/sputbackc/char/9538.cc: New.
+	* 27_io/basic_streambuf/sputc/char/1057.cc: New.
+	* 27_io/basic_streambuf/sputn/char/1.cc: New.
+	* 27_io/basic_streambuf/sputn/char/1057.cc: New.
+	* 27_io/basic_streambuf/sync/char/1057.cc: New.
+	* 27_io/basic_stringbuf/1.cc: New.
+	* 27_io/basic_stringbuf/2.cc: New.
+	* 27_io/basic_stringbuf/3.cc: New.
+	* 27_io/basic_stringbuf/4.cc: New.
+	* 27_io/basic_stringbuf/5.cc: New.
+	* 27_io/basic_stringbuf/imbue/char/1.cc: New.
+	* 27_io/basic_stringbuf/imbue/char/9322.cc: New.
+	* 27_io/basic_stringbuf/in_avail/char/1.cc: New.
+	* 27_io/basic_stringbuf/overflow/char/2.cc: New.
+	* 27_io/basic_stringbuf/overflow/char/3599.cc: New.
+	* 27_io/basic_stringbuf/overflow/char/9988.cc: New.
+	* 27_io/basic_stringbuf/sbumpc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sbumpc/char/9825.cc: New.
+	* 27_io/basic_stringbuf/seekoff/char/1.cc: New.
+	* 27_io/basic_stringbuf/seekoff/char/2.cc: New.
+	* 27_io/basic_stringbuf/seekpos/char/1.cc: New.
+	* 27_io/basic_stringbuf/seekpos/char/2.cc: New.
+	* 27_io/basic_stringbuf/setbuf/char/1.cc: New.
+	* 27_io/basic_stringbuf/setbuf/char/2.cc: New.
+	* 27_io/basic_stringbuf/setbuf/char/3.cc: New.
+	* 27_io/basic_stringbuf/sgetc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sgetn/char/1.cc: New.
+	* 27_io/basic_stringbuf/snextc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sputbackc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sputbackc/char/9425.cc: New.
+	* 27_io/basic_stringbuf/sputc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sputc/char/1057.cc: New.
+	* 27_io/basic_stringbuf/sputc/char/9404-1.cc: New.
+	* 27_io/basic_stringbuf/sputn/char/1.cc: New.
+	* 27_io/basic_stringbuf/sputn/char/1057.cc: New.
+	* 27_io/basic_stringbuf/sputn/char/9404-2.cc: New.
+	* 27_io/basic_stringbuf/str/char/1.cc: New.
+	* 27_io/basic_stringbuf/str/char/2.cc: New.
+	* 27_io/basic_stringbuf/str/char/3.cc: New.
+	* 27_io/basic_stringbuf/str/char/3955.cc: New.
+	* 27_io/basic_stringbuf/sungetc/char/1.cc: New.
+	* 27_io/basic_stringbuf/sync/char/1057.cc: New.
+	* 27_io/basic_stringstream/1.cc: New.
+	* 27_io/basic_stringstream/2.cc: New.
+	* 27_io/basic_stringstream/3.cc: New.
+	* 27_io/basic_stringstream/4.cc: New.
+	* 27_io/basic_stringstream/rdbuf/char/2832.cc: New.
+	* 27_io/basic_stringstream/str/char/1.cc: New.
+	* 27_io/basic_stringstream/str/char/2.cc: New.
+	* 27_io/basic_stringstream/str/char/3.cc: New.
+	* 27_io/basic_stringstream/str/char/4.cc: New.
+	* 27_io/fpos/1.cc: New.
+	* 27_io/fpos/2.cc: New.
+	* 27_io/fpos/3.cc: New.
+	* 27_io/ios_base/callbacks/1.cc: New.
+	* 27_io/ios_base/state/1.cc: New.
+	* 27_io/ios_base/storage/1.cc: New.
+	* 27_io/ios_base/storage/2.cc: New.
+	* 27_io/ios_base/storage/3.cc: New.
+	* 27_io/ios_base/sync_with_stdio/1.cc: New.
+	* 27_io/ios_base/sync_with_stdio/2.cc: New.
+	* 27_io/manipulators/adjustfield/char/1.cc: New.
+	* 27_io/manipulators/adjustfield/char/2.cc: New.
+	* 27_io/manipulators/basefield/char/1.cc: New.
+	* 27_io/manipulators/standard/char/1.cc: New.
+	* 27_io/manipulators/standard/char/2.cc: New.
+	* 27_io/objects/char/1.cc: New.
+	* 27_io/objects/char/2.cc: New.
+	* 27_io/objects/char/2523-1_xin.cc: New.
+	* 27_io/objects/char/2523-1_xin.in: New.
+	* 27_io/objects/char/2523-2_xin.cc: New.
+	* 27_io/objects/char/2523-2_xin.in: New.
+	* 27_io/objects/char/3045.cc: New.
+	* 27_io/objects/char/3647.cc: New.
+	* 27_io/objects/char/3_xin.cc: New.
+	* 27_io/objects/char/3_xin.in: New.
+	* 27_io/objects/char/4_xin.cc: New.
+	* 27_io/objects/char/4_xin.in: New.
+	* 27_io/objects/char/5268.cc: New.
+	* 27_io/objects/char/5280_xin.cc: New.
+	* 27_io/objects/char/5280_xin.in: New.
+	* 27_io/objects/char/6548_xin.cc: New.
+	* 27_io/objects/char/6548_xin.in: New.
+	* 27_io/objects/char/6648-1_xin.cc: New.
+	* 27_io/objects/char/6648-1_xin.in: New.
+	* 27_io/objects/char/6648-2_xin.cc: New.
+	* 27_io/objects/char/6648-2_xin.in: New.
+	* 27_io/objects/char/7744_xin.cc: New.
+	* 27_io/objects/char/7744_xin.in: New.
+	* 27_io/objects/wchar_t/1.cc: New.
+	* 27_io/types/1.cc: New.
+	* 27_io/types/2.cc: New.
+	* data/filebuf_members-1.tst: New.
+	* data/filebuf_members-1.txt: New.
+	* data/filebuf_virtuals-1.tst: New.
+	* data/filebuf_virtuals-1.txt: New.
+	* data/filebuf_virtuals-2.tst: New.
+	* data/filebuf_virtuals-3.tst: New.
+	* data/ifstream_members-1.tst: New.
+	* data/ifstream_members-1.txt: New.
+	* data/ios_base_members_static-1.tst: New.
+	* data/istream_extractor_other-1.tst: New.
+	* data/istream_extractor_other-1.txt: New.
+	* data/istream_extractor_other-2.tst: New.
+	* data/istream_seeks-1.tst: New.
+	* data/istream_seeks-1.txt: New.
+	* data/istream_seeks-2.tst: New.
+	* data/istream_seeks-3.tst: New.
+	* data/istream_unformatted-1.tst: New.
+	* data/istream_unformatted-1.txt: New.
+	* data/ofstream_members-1.tst: New.
+	* data/ostream_inserter_char-1.tst: New.
+	* data/ostream_inserter_char-1.txt: New.
+	* data/ostream_inserter_other-1.tst: New.
+	* data/ostream_inserter_other-2.tst: New.
+	* data/ostream_seeks-1.tst: New.
+
+2003-04-09  Benjamin Kosnik  
+
+	* include/bits/sstream.tcc (basic_stringbuf::seekpos): Remove
+	requirement that __mode must be strict input or output.
+
+	* include/std/std_streambuf.h (basic_streambuf::setp): Set
+	_M_out_lim.
+
+	* include/std/std_sstream.h (basic_strinbuf::str): Zero length
+	output string shouldn't core.
+	(basic_stringbuf::_M_really_sync): Add base argument. Remove rturn
+	type.
+	* include/bits/sstream.tcc: Adjust _M_really_sync bits here.
+
+	* include/bits/istream.tcc (basic_istream::putback): Set gcount to
+	zero.
+
+2003-04-09  Benjamin Kosnik  
+
+	* testsuite/data: New directory.
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
+	to copy files from the testsuite data directory.
+	(libstdc++-v3-list-sourcefiles): Add another test list filter, for
+	testfiles containing _xin, which now means this is an interactive
+	test and should be run with the interactive dejagnu hooks.
+	* testsuite/Makefile.am: Remove testsuite_* files.
+	* testsuite/Makefile.in: Regenerate.
+
+2003-04-09  Zack Weinberg  
+
+	* docs/html/install.html: Document complete list of locales
+	required by test suite.  Document procedure for installing
+	said locales under Debian.  Solicit instructions for other
+	operating systems.
+
+2003-04-08  Alexandre Oliva  
+
+	* include/bits/sstream.tcc (overflow): Make sure operands of min
+	and max have the same type.
+
+2003-04-04  Jerry Quinn  
+
+	PR libstdc++/10276
+	* src/ios.cc (ios_base::_M_init): Remove _M_callbacks
+	initialization.
+
+2003-03-31  Paolo Carlini  
+
+	* include/std/std_streambuf.h (_M_out_buf_size()): Remove.
+	* include/bits/fstream.tcc (_M_allocate_internal_buffer):
+	Don't set _M_out_end.
+	(basic_filebuf::overflow): Replace _M_out_buf_size() with
+	this->_M_out_cur && this->_M_out_cur < this->_M_out_end.
+	* include/bits/sstream.tcc (basic_stringbuf::overflow):
+	Replace _M_out_buf_size() with this->_M_out_cur < this->_M_out_end;
+	* include/bits/streambuf.tcc (basic_streambuf::sputc):
+	Replace _M_out_buf_size() with _M_out_cur && _M_out_cur < _M_out_end.
+	(basic_streambuf::xsputn): Replace _M_out_buf_size() with
+	_M_out_end - _M_out_cur.
+	(__copy_streambufs): Likewise.
+	* include/std/std_fstream.h (_M_set_determinate): Set
+	_M_out_end here.
+
+2003-03-30  Paolo Carlini  
+
+	* include/bits/fstream.tcc (basic_filebuf::showmanyc,
+	_M_convert_to_external, _M_really_overflow, seekoff): Fix
+	test for synced buffer.
+	* include/std/std_fstream.h (sync): Likewise.
+	* src/fstream.cc (basic_filebuf::_M_underflow_common,
+	basic_filebuf::_M_underflow_common): Likewise.
+
+2003-03-28  Benjamin Kosnik  
+
+	* include/std/std_sstream.h (basic_istringstream): Adjust
+	initialization.
+	(basic_ostringstream): Same.
+	(basic_stringstream): Same.
+	* include/std/std_fstream.h (basic_ifstream): Adjust initialization.
+	(basic_ofstream): Same.
+	(basic_fstream): Same.
+	* include/std/std_ostream.h (basic_ostrem): Add protected ctor
+	that does not call init.
+	* include/std/std_istream.h (basic_istream): Same.
+	(basic_iostream): Construct istream, ostream uninitialized, use
+	init to initialize just once. Add protected ctor that does not
+	call init.
+
+2003-03-28  Paolo Carlini  
+	    Nathan Myers  
+
+	PR libstdc++/9533
+	* include/bits/fstream.tcc (basic_filebuf<>::open): Don't
+	call underflow().
+	(basic_filebuf<>::showmanyc): Use the information provided
+	by codecvt and __basic_file<>::showmanyc_helper to implement
+	a non-trivial showmanyc.
+	* config/io/basic_file_stdio.h
+	(__basic_file<>::showmanyc_helper): New, declare.
+	* config/io/basic_file_stdio.cc
+	(__basic_file<>::showmanyc_helper): Define.
+	(__basic_file<>::_M_open_mode): Don't set O_NONBLOCK.
+	(__basic_file::open): Don't call fcntl().
+	* acinclude.m4 (GLIBCPP_CHECK_S_ISREG_OR_S_IFREG,
+	GLIBCPP_CHECK_POLL): New macros.
+	* configure.in: Call here.
+	* acconfig.h: Add #undefs for the corresponding symbols.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+
+2003-03-24  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Remove string export restrictions.
+
+2003-03-24  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/find/char/1.cc: Remove
+	find_first_of, find_last_of and find_last_not_of tests.
+	* testsuite/21_strings/basic_string/find/char/2.cc: find_first_of
+	tests here, new file.
+	* testsuite/21_strings/basic_string/find/wchar_t/1.cc: Likewise,
+	remove wchar_t find_first_of, find_last_of and find_last_not_of tests.
+	* testsuite/21_strings/basic_string/find/wchar_t/2.cc: Likewise,
+	wchar_t find_first_of tests here, new file.
+	* testsuite/21_strings/basic_string/rfind/char/2.cc: find_last_of
+	tests here.
+	* testsuite/21_strings/basic_string/rfind/char/3.cc: find_last_not_of
+	tests here.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: likewise,
+	wchar_t find_last_of tests here.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: likewise,
+	wchar_t find_last_not_of tests here.
+
+2003-03-22  Loren J. Rittle  
+
+	* config/os/hpux/ctype_noninline.h (ctype::classic_table):
+	Correct return value.
+
+2003-03-21  Jerry Quinn  
+
+	PR libstdc++/5730
+	* include/bits/c++config (_GLIBCPP_FAST_MATH): Define.
+	* include/std/std_complex.h (norm):  Use faster,
+	less accurate computation for builtin float types under --fast-math.
+
+2003-03-21  Magnus Fromreide  
+
+	* testsuite/testsuite_hooks.h: Fix warning nits.
+
+2003-03-19  Alexandre Oliva  
+
+	* config/cpu/mips/atomicity.h (__exchange_and_add, __atomic_add):
+	Only .set mips2 for the o32 ABI.
+
+2003-03-19  Paolo Carlini  
+
+	* testsuite/21_strings/char_traits/requirements/char/1.cc:
+	Test char not wchar_t.
+
+2003-03-18  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/append/wchar_t/1.cc:
+	Correct size, taking into account sizeof(wchar_t).
+
+2003-03-18  Paolo Carlini  
+
+	Reshuffle 21_strings testsuite.
+	* testsuite/21_strings/append.cc, c_strings.cc, invariants.cc,
+	assign.cc, ctor_copy_dtor.cc, nonmember.cc, capacity.cc,
+	element_access.cc, operations.cc, char_traits_requirements.cc,
+	find.cc, replace.cc, char_traits_typedefs.cc, insert.cc, rfind.cc,
+	compare.cc, inserters_extractors.cc, substr.cc: Split up, add
+	wchar_t tests as follows.
+	* 21_strings/basic_string/append/char/1.cc: New.
+	* 21_strings/basic_string/append/wchar_t/1.cc: New.
+	* 21_strings/basic_string/assign/char/1.cc: New.
+	* 21_strings/basic_string/assign/char/2.cc: New.
+	* 21_strings/basic_string/assign/char/3.cc: New.
+	* 21_strings/basic_string/assign/wchar_t/1.cc: New.
+	* 21_strings/basic_string/assign/wchar_t/2.cc: New.
+	* 21_strings/basic_string/assign/wchar_t/3.cc: New.
+	* 21_strings/basic_string/capacity/1.cc: New.
+	* 21_strings/basic_string/capacity/char/1.cc: New.
+	* 21_strings/basic_string/capacity/char/2.cc: New.
+	* 21_strings/basic_string/capacity/wchar_t/1.cc: New.
+	* 21_strings/basic_string/capacity/wchar_t/2.cc: New.
+	* 21_strings/basic_string/compare/char/1.cc: New.
+	* 21_strings/basic_string/compare/wchar_t/1.cc: New.
+	* 21_strings/basic_string/cons/char/1.cc: New.
+	* 21_strings/basic_string/cons/char/2.cc: New.
+	* 21_strings/basic_string/cons/char/3.cc: New.
+	* 21_strings/basic_string/cons/char/4.cc: New.
+	* 21_strings/basic_string/cons/char/5.cc: New.
+	* 21_strings/basic_string/cons/wchar_t/1.cc: New.
+	* 21_strings/basic_string/cons/wchar_t/2.cc: New.
+	* 21_strings/basic_string/cons/wchar_t/3.cc: New.
+	* 21_strings/basic_string/cons/wchar_t/4.cc: New.
+	* 21_strings/basic_string/cons/wchar_t/5.cc: New.
+	* 21_strings/basic_string/element_access/char/1.cc: New.
+	* 21_strings/basic_string/element_access/char/2.cc: New.
+	* 21_strings/basic_string/element_access/char/3.cc: New.
+	* 21_strings/basic_string/element_access/wchar_t/1.cc: New.
+	* 21_strings/basic_string/element_access/wchar_t/2.cc: New.
+	* 21_strings/basic_string/element_access/wchar_t/3.cc: New.
+	* 21_strings/basic_string/find/char/1.cc: New.
+	* 21_strings/basic_string/find/wchar_t/1.cc: New.
+	* 21_strings/basic_string/insert/char/1.cc: New.
+	* 21_strings/basic_string/insert/char/2.cc: New.
+	* 21_strings/basic_string/insert/wchar_t/1.cc: New.
+	* 21_strings/basic_string/insert/wchar_t/2.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/1.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/4.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/5.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/6.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/7.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/8.cc: New.
+	* 21_strings/basic_string/inserters_extractors/char/9.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/1.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/4.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/5.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/6.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/7.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/8.cc: New.
+	* 21_strings/basic_string/inserters_extractors/wchar_t/9.cc: New.
+	* 21_strings/basic_string/operators/char/1.cc: New.
+	* 21_strings/basic_string/operators/char/2.cc: New.
+	* 21_strings/basic_string/operators/wchar_t/1.cc: New.
+	* 21_strings/basic_string/operators/wchar_t/2.cc: New.
+	* 21_strings/basic_string/replace/char/1.cc: New.
+	* 21_strings/basic_string/replace/char/2.cc: New.
+	* 21_strings/basic_string/replace/char/3.cc: New.
+	* 21_strings/basic_string/replace/char/4.cc: New.
+	* 21_strings/basic_string/replace/char/5.cc: New.
+	* 21_strings/basic_string/replace/wchar_t/1.cc: New.
+	* 21_strings/basic_string/replace/wchar_t/2.cc: New.
+	* 21_strings/basic_string/replace/wchar_t/3.cc: New.
+	* 21_strings/basic_string/replace/wchar_t/4.cc: New.
+	* 21_strings/basic_string/replace/wchar_t/5.cc: New.
+	* 21_strings/basic_string/rfind/char/1.cc: New.
+	* 21_strings/basic_string/rfind/char/2.cc: New.
+	* 21_strings/basic_string/rfind/char/3.cc: New.
+	* 21_strings/basic_string/rfind/wchar_t/1.cc: New.
+	* 21_strings/basic_string/rfind/wchar_t/2.cc: New.
+	* 21_strings/basic_string/rfind/wchar_t/3.cc: New.
+	* 21_strings/basic_string/substr/char/1.cc: New.
+	* 21_strings/basic_string/substr/wchar_t/1.cc: New.
+	* 21_strings/c_strings/char/1.cc: New.
+	* 21_strings/c_strings/char/2.cc: New.
+	* 21_strings/c_strings/wchar_t/1.cc: New.
+	* 21_strings/c_strings/wchar_t/2.cc: New.
+	* 21_strings/char_traits/requirements/char/1.cc: New.
+	* 21_strings/char_traits/requirements/wchar_t/1.cc: New.
+	* 21_strings/char_traits/typedefs/char/1.cc: New.
+
+2003-03-17  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/10097
+	* src/fstream.cc (basic_filebuf::_M_underflow_common,
+	basic_filebuf::_M_underflow_common):
+	if (gptr() < egptr()) return *gptr().
+	* testsuite/27_io/filebuf_virtuals.cc (test16): Add.
+
+	* testsuite/27_io/filebuf_members.cc (test_04): Minor
+	changes: unlink fifo before making it, fix spelling error.
+
+2003-03-17  Benjamin Kosnik  
+
+	* testsuite/Makefile.am (CLEANFILES): Add tmp*.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/27_io/filebuf_members.cc: Consistently name tmp files.
+	Cleanups.
+
+2003-03-17  Petur Runolfsson  
+
+	PR libstdc++/9964
+	* include/bits/fstream.tcc (basic_filebuf::close):
+	Always close file, even when write fails.
+	* testsuite/27_io/filebuf_members.cc (test_07):  New test.
+
+2003-03-17  Danny Smith  
+
+	* libsupc++/Makefile.am (C_COMPILE): Remove.
+	(LTCOMPILE): Likewise.
+	* libsupc++/Makefile.in: Regenerate.
+
+2003-03-14  Benjamin Kosnik  
+
+	* testsuite/23_containers/bitset_members.cc: Add test variable.
+	* testsuite/23_containers/map_insert.cc: Same.
+	* testsuite/22_locale/ctype/cons/char/1.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Same.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Same.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
+	* testsuite/27_io/istream_exception.cc: Same.
+	* testsuite/27_io/filebuf_virtuals.cc: Same.
+	* testsuite/27_io/stringbuf_virtuals.cc: Same.
+	* testsuite/27_io/ostream_inserter_arith.cc: Same.
+	* testsuite/26_numerics/valarray_operators.cc: Same.
+	* testsuite/26_numerics/slice.cc: Same.
+	* testsuite/26_numerics/slice_array_assignment.cc: Same.
+	* testsuite/24_iterators/istream_iterator.cc: Same.
+	* mkcheck.in (TESTS_FILE): Use dejagnu-generated file if possible.
+
+2003-03-14  Petur Runolfsson  
+
+	PR libstdc++/9581
+	PR libstdc++/9870
+	* config/locale/generic/ctype_members.cc,
+	* config/locale/gnu/ctype_members.cc
+	(ctype::do_widen(char)):  Cast argument to
+	unsigned char before passing to btowc.
+	(ctype::do_widen(const char*, const char*, wchar_t*)):
+	Convert characters with btowc instead of mbsrtowcs.
+	(ctype::do_narrow(const wchar_t*, const wchar_t*,
+	char, char*):
+	Convert characters with wctob instead of wcsrtombs.
+	* testsuite/22_locale/ctype/narrow/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/ctype/widen/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/ctype/widen/wchar_t/3.cc:  New test.
+
+2003-03-14  Benjamin Kosnik  
+
+	* include/stdc++.h: New.
+	* libsupc++/exception_defines.h (__EXCEPTION_DEFINES_H): Add guard.
+	* include/Makefile.am (stamp-std-precompile): Generate stdc++.h.gch
+	* include/Makefile.in: Regenerate.
+	* testsuite_flags.in (--build-cxx): Add, but don't use PCHFLAGS.
+	(--cxxflags): Put -g -O2 here.
+	* testsuite/libstdc++-v3.dg/dg.exp: Remove -g -O2 here.
+
+2003-03-14  Loren J. Rittle  
+
+	* testsuite/testsuite_hooks.h: Suppress runtime exception thrown by
+	missing named locale.
+
+2003-03-14  Andreas Schwab  
+
+	* configure.in: Only append to makefiles that are newly created to
+	avoid multiple multi-do/multi-clean rules.
+	* configure: Rebuilt.
+
+2003-03-13  Jonathan Wakely  
+
+	* docs/html/configopts.html, docs/html/documentation.html,
+	docs/html/explanations.html, docs/html/install.html,
+	docs/html/19_diagnostics/howto.html, docs/html/faq/index.html: Fix
+	invalid XHTML and make page header style consistent.
+
+2003-03-12  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Explain memory "leaks" due to allocators.
+	* docs/html/faq/index.txt: Regenerate.
+	* docs/html/debug.html: Add a bit to allocator text and fix XHTML.
+
+2003-03-12  Andreas Schwab  
+
+	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in
+	glibcpp_toolexeclibdir.
+	* aclocal.m4, configure: Rebuilt.
+
+2003-03-11  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Update text about location of headers.
+	* docs/html/faq/index.txt: Regenerate.
+
+2003-03-11  Carlo Wood  
+
+	* include/bits/demangle.h: Prepend accessors of
+	class qualifier with 'get_' in order to fix warnings
+	when compiling with -Wshadow.
+
+2003-03-11  Loren J. Rittle  
+
+	* config/os/bsd/freebsd/ctype_inline.h:  Support _M_table
+	when so installed.
+	* testsuite/22_locale/ctype/cons/char/1.cc: Fix typo.
+
+	* testsuite/testsuite_hooks.h (run_tests_wrapped_env): Do not
+	report lack of setenv().
+
+2003-03-09  Paolo Carlini  
+
+	* config/io/basic_file_stdio.cc: include .
+
+2003-03-09  Paolo Carlini  
+	    Nathan Myers  
+
+	PR libstdc++/7744
+	* config/io/basic_file_stdio.h (__basic_file<>::xsgetn, xsputn,
+	seekoff, seekpos): Add a boolean parameter __stdio.
+	* config/io/basic_file_stdio.cc (__basic_file<>::xsgetn, xsputn,
+	seekoff, seekpos): If __stdio == true, use fread (fwrite, fseek/ftell,
+	fseek/ftell, respectively), otherwise read (write, lseek, lseek,
+	respectively).
+	* include/bits/fstream.tcc (basic_filebuf<>::_M_convert_to_external,
+	_M_really_overflow, seekoff): Use the boolean parameter in the calls.
+	* include/std/std_fstream.h (sync): Likewise.
+	* src/fstream.cc (basic_filebuf<>::_M_underflow_common): Likewise.
+	* src/ios.cc (ios_base::Init::_S_ios_create(bool)): Revert
+	libstdc++/8399 commit involving isatty(0).
+	* acinclude.m4 (GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1): Remove.
+	(GLIBCPP_CHECK_UNISTD_SUPPORT): Remove
+	* configure.in: Remove call.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* testsuite/27_io/narrow_stream_objects.cc (test11): Add.
+
+2003-03-09  Paolo Carlini  
+
+	PR libstdc++/9988
+	* include/bits/fstream.tcc (overflow): don't write EOF to file.
+	* testsuite/27_io/filebuf_virtuals.cc (test15): Add.
+
+2003-03-08  Jerry Quinn  
+
+	PR libstdc++/9561
+	* include/bits/basic_ios.h (_M_setstate): New.
+	* include/bits/ostream.tcc (operator<<): Use it.
+	* include/bits/istream.tcc (operator>>): Use it.
+	* include/std/std_ostream.h (operator<<): Make friends.
+	* include/std/std_istream.h (operator>>): Make friends.
+	* testsuite/27_io/ostream_exception.cc,
+	testsuite/27_io/istream_exception.cc: New tests.
+
+2003-03-08  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc: Fix typo.
+
+2003-03-08  Loren J. Rittle  
+
+	* testsuite/26_numerics/c99_classification_macros_c.cc: Tweak test.
+
+	* config/locale/generic/c_locale.cc
+	(locale::facet::_S_create_c_locale): Throw runtime exception when
+	unsupported language is specified.
+	* testsuite/testsuite_hooks.h
+	(run_test_wrapped_generic_locale_exception_catcher): New function.
+	* testsuite/testsuite_hooks.cc (run_tests_wrapped_locale):
+	Suppress runtime exception thrown by generic implementation.
+	(run_tests_wrapped_env): Likewise.
+	(run_test_wrapped_generic_locale_exception_catcher): New function.
+	* testsuite/22_locale/collate/compare/char/1.cc: New test wrap.
+	* testsuite/22_locale/collate/compare/char/2.cc: New test wrap.
+	* testsuite/22_locale/collate/compare/char/3.cc: New test wrap.
+	* testsuite/22_locale/collate/hash/char/2.cc: New test wrap.
+	* testsuite/22_locale/collate/transform/char/2.cc: New test wrap.
+	* testsuite/22_locale/collate/transform/char/3.cc: New test wrap.
+	* testsuite/22_locale/collate_byname/1.cc: New test wrap.
+	* testsuite/22_locale/ctype/is/char/2.cc: New test wrap.
+	* testsuite/22_locale/facet/2.cc: New test wrap.
+	* testsuite/22_locale/locale/cons/4.cc: New test wrap.
+	* testsuite/22_locale/locale/cons/5.cc: New test wrap.
+	* testsuite/22_locale/locale/cons/7.cc: New test wrap.
+	* testsuite/22_locale/messages/members/char/1.cc: New test wrap.
+	* testsuite/22_locale/messages/members/char/2.cc: New test wrap.
+	* testsuite/22_locale/messages/members/char/3.cc: New test wrap.
+	* testsuite/22_locale/messages_byname/1.cc: New test wrap.
+	* testsuite/22_locale/money_get/get/char/1.cc: New test wrap.
+	* testsuite/22_locale/money_get/get/char/2.cc: New test wrap.
+	* testsuite/22_locale/money_get/get/char/3.cc: New test wrap.
+	* testsuite/22_locale/money_get/get/char/4.cc: New test wrap.
+	* testsuite/22_locale/money_put/put/char/1.cc: New test wrap.
+	* testsuite/22_locale/money_put/put/char/2.cc: New test wrap.
+	* testsuite/22_locale/money_put/put/char/3.cc: New test wrap.
+	* testsuite/22_locale/moneypunct/members/char/2.cc: New test wrap.
+	* testsuite/22_locale/moneypunct_byname/1.cc: New test wrap.
+	* testsuite/22_locale/num_get/get/char/1.cc: New test wrap.
+	* testsuite/22_locale/num_get/get/char/2.cc: New test wrap.
+	* testsuite/22_locale/num_get/get/char/3.cc: New test wrap.
+	* testsuite/22_locale/num_get/get/char/5.cc: New test wrap.
+	* testsuite/22_locale/num_get/get/char/6.cc: New test wrap.
+	* testsuite/22_locale/num_put/put/char/1.cc: New test wrap.
+	* testsuite/22_locale/num_put/put/char/2.cc: New test wrap.
+	* testsuite/22_locale/num_put/put/char/3.cc: New test wrap.
+	* testsuite/22_locale/num_put/put/char/5.cc: New test wrap.
+	* testsuite/22_locale/numpunct/members/char/1.cc: New test wrap.
+	* testsuite/22_locale/numpunct/members/char/2.cc: New test wrap.
+	* testsuite/22_locale/numpunct_byname/1.cc: New test wrap.
+	* testsuite/22_locale/numpunct_byname/2.cc: New test wrap.
+	* testsuite/22_locale/time_get/date_order/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: New test wrap.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/1.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/2.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/3.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/4.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/5.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/6.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/7.cc: New test wrap.
+	* testsuite/22_locale/time_put/put/char/8.cc: New test wrap.
+	* testsuite/27_io/filebuf_virtuals.cc: New test wrap.
+	* testsuite/27_io/ios_members.cc: New test wrap.
+	* testsuite/27_io/ostream_inserter_arith.cc (test02): Make void.
+	New test wrap.
+	* testsuite/27_io/streambuf_members.cc: New test wrap.
+	* testsuite/27_io/stringbuf_virtuals.cc: New test wrap.
+
+2003-03-08  Paolo Carlini 
+	    Petur Runolfsson  
+
+	PR libstdc++/9424
+	* include/bits/streambuf.tcc (__copy_streambufs): Use
+	sgetn-sputn only when sputn cannot fail, otherwise fall back
+	to safe snextc-sputc.
+	* testsuite/27_io/streambuf_members.cc (test11, test12): Add.
+
+2003-03-08  Jerry Quinn  
+
+	* include/bits/locale_facets.tcc (num_put::do_put(bool)): Use
+	locale cache for truename and falsename.
+
+2003-03-08  Jerry Quinn  
+
+	* src/ios.cc (ios_base::ios_base): Correct order of _M_word and
+	_M_word_size initialization.
+
+2003-03-07  Paolo Carlini  
+
+	* include/bits/fstream.tcc (_M_convert_to_external):
+	Set __elen to zero if codecvt::out eventually fails.
+
+2003-03-07  Paolo Carlini  
+
+	PR libstdc++/9182
+	* include/bits/fstream.tcc (_M_really_overflow): Check
+	for _M_convert_to_external possible failures.
+	* include/std/std_fstream.h (sync): Check _M_really_overflow
+	return value and return -1 in case of failure.
+	* testsuite/27_io/filebuf_virtuals.cc (test13, test14): Add.
+
+2003-03-07  Paolo Carlini  
+
+	PR libstdc++/9826
+	* include/bits/istream.tcc (operator>>(_CharT*),
+	operator>>(basic_string&), ws): Pass a char_type to __ctype.is.
+	* testsuite/27_io/stringstream.cc (test02): Add.
+
+	* include/bits/istream.tcc (operator>>(_CharT*)):
+	Assign a char_type to *__s.
+
+2003-03-07  Petur Runolfsson  
+
+	PR libstdc++/9817
+	* include/bits/locale_facets.tcc
+	(collate::do_compare, collate::do_transform):
+	Handle nul characters in input.
+	* testsuite/22_locale/collate/compare/char/3.cc:  New test.
+	* testsuite/22_locale/collate/compare/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/collate/transform/char/3.cc:  New test.
+	* testsuite/22_locale/collate/transform/wchar_t/3.cc:  New test.
+
+2003-03-07  Jerry Quinn  
+
+	* include/bits/streambuf_iterator.h (_M_put): Set _M_failed if
+	sputn fails.
+	* testsuite/27_io/ostream_fail.cc: New test.
+
+2003-03-07  Matthias Klose  
+
+	* Makefile.am (AM_MAKEFLAGS): Also pass gxx_include_dir.
+	FLAGS_TO_PASS: Set to AM_MAKEFLAGS
+	* Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Express glibcppinstalldir in terms
+	of gxx_include_dir.
+	AM_MAKEFLAGS: Pass gxx_include_dir.
+	* libsupc++/Makefile.in: Regenerate.
+
+2003-03-06  Jerry Quinn  
+
+	* testsuite/27_io/ios_base_storage.cc (test02): Set exception
+	mask.  Test setting small-numbered pword and iword slots.  Test
+	behavior at limit of numeric_limits::max.  Check that values are
+	still good after failures.
+
+2003-03-06  Jerry Quinn  
+
+	* src/ios.cc (ios_base::_M_init): Remove _M_word_size.
+	(ios_base::ios_base): Set _M_word, _M_word_size.
+	(ios_base::~ios_base): Remove redundant test.
+	* testsuite/27_io/ios_base_storage.cc (test03): New.
+
+2003-03-04  Alexandre Oliva  
+
+	* src/strstream.cc, include/bits/basic_string.tcc: Remove
+	incorrect whitespace added in my previous change.
+
+2003-03-05  Carlo Wood  
+
+	* include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added
+	_S_initialized() in order to allow debugging libraries to detect
+	when the std streams are initialized from an overloaded operator
+	new.
+
+2003-03-05  Benjamin Kosnik  
+
+	* libsupc++/demangle.h: Move to..
+	* include/bits/demangle.h: ...here.
+	* src/demangle.cc: Adjust include.
+	* include/Makefile.am (bits_headers): Add.
+	* include/Makefile.in: Regenerate.
+
+2003-03-04  Benjamin Kosnik  
+
+	* src/globals.cc: Clarify comments, remove c_locale_imp_compat.
+
+	* config/linker-map.gnu: Filter typeinfo and vtable info.
+
+2003-03-04  Jerry Quinn  
+
+	* src/ios.cc (ios_base::_M_grow_words): Don't delete _M_word on
+	new failure.  Throw exception if badbit and exception mask when ix
+	>= numeric_limits::max().
+
+2003-03-04  Alexandre Oliva  
+
+	* src/strstream.cc (strstreambuf::overflow): Make sure operands of
+	min and max have the same type.
+	* include/bits/basic_string.tcc (append, rfind, compare): Likewise.
+
+2003-03-04  Benjamin Kosnik  
+
+	* include/Makefile.am (allstamps): Remove stamp-std-precompile.
+	* include/Makefile.in: Regenerate.
+
+2003-03-03  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc (report_symbol_info): Add version info.
+
+	* config/linker-map.gnu: Hide more stuff.
+	* include/Makefile.am: Cleanups.
+	* include/Makefile.in: Regenerate.
+
+2003-02-27  Jerry Quinn  
+
+	* config/locale/generic/messages_members.h (messages::messages):
+	Remove name from unused parameter.
+
+2003-02-27  Benjamin Kosnik  
+
+	* src/Makefile.am (sources): Add demangle.cc.
+	(demangle.o): Add.
+	(demangle.lo): Add.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Remove old __cxa_demangle bits.
+	* libsupc++/Makefile.in: Regenerate.
+
+	* testsuite/testsuite_hooks.h
+	(__gnu_cxx_test::verify_demangle): New.
+	* testsuite/testsuite_hooks.cc: Define.
+
+2003-02-27  Carlo Wood  
+
+	* src/demangle.cc: New.
+	* libsupc++/demangle.h: New.
+
+2003-02-27  Benjamin Kosnik  
+	    Carlo Wood  
+
+	* testsuite/demangle/abi_examples/01.cc: New.
+	* testsuite/demangle/abi_examples/02.cc: New.
+	* testsuite/demangle/abi_examples/03.cc: New.
+	* testsuite/demangle/abi_examples/04.cc: New.
+	* testsuite/demangle/abi_examples/05.cc: New.
+	* testsuite/demangle/abi_examples/06.cc: New.
+	* testsuite/demangle/abi_examples/07.cc: New.
+	* testsuite/demangle/abi_examples/08.cc: New.
+	* testsuite/demangle/abi_examples/09.cc: New.
+	* testsuite/demangle/abi_examples/10.cc: New.
+	* testsuite/demangle/abi_examples/11.cc: New.
+	* testsuite/demangle/abi_examples/12.cc: New.
+	* testsuite/demangle/abi_examples/13.cc: New.
+	* testsuite/demangle/abi_examples/14.cc: New.
+	* testsuite/demangle/abi_examples/15.cc: New.
+	* testsuite/demangle/abi_examples/16.cc: New.
+	* testsuite/demangle/abi_examples/17.cc: New.
+	* testsuite/demangle/abi_examples/18.cc: New.
+	* testsuite/demangle/abi_examples/19.cc: New.
+	* testsuite/demangle/abi_examples/20.cc: New.
+	* testsuite/demangle/abi_examples/21.cc: New.
+	* testsuite/demangle/abi_examples/22.cc: New.
+	* testsuite/demangle/abi_examples/23.cc: New.
+	* testsuite/demangle/abi_examples/24.cc: New.
+	* testsuite/demangle/abi_examples/25.cc: New.
+	* testsuite/demangle/abi_examples/26.cc: New.
+	* testsuite/demangle/abi_text/01.cc: New.
+	* testsuite/demangle/abi_text/02.cc: New.
+	* testsuite/demangle/abi_text/03.cc: New.
+	* testsuite/demangle/abi_text/04.cc: New.
+	* testsuite/demangle/abi_text/05.cc: New.
+	* testsuite/demangle/abi_text/06.cc: New.
+	* testsuite/demangle/abi_text/07.cc: New.
+	* testsuite/demangle/abi_text/08.cc: New.
+	* testsuite/demangle/abi_text/09.cc: New.
+	* testsuite/demangle/abi_text/10.cc: New.
+	* testsuite/demangle/abi_text/11.cc: New.
+	* testsuite/demangle/abi_text/12.cc: New.
+	* testsuite/demangle/abi_text/13.cc: New.
+	* testsuite/demangle/abi_text/14.cc: New.
+	* testsuite/demangle/regression/3111-1.cc: New.
+	* testsuite/demangle/regression/3111-2.cc: New.
+	* testsuite/demangle/regression/7986-01.cc: New.
+	* testsuite/demangle/regression/7986-02.cc: New.
+	* testsuite/demangle/regression/7986-03.cc: New.
+	* testsuite/demangle/regression/7986-04.cc: New.
+	* testsuite/demangle/regression/7986-05.cc: New.
+	* testsuite/demangle/regression/7986-06.cc: New.
+	* testsuite/demangle/regression/7986-07.cc: New.
+	* testsuite/demangle/regression/7986-08.cc: New.
+	* testsuite/demangle/regression/7986-09.cc: New.
+	* testsuite/demangle/regression/7986-10.cc: New.
+	* testsuite/demangle/regression/7986-11.cc: New.
+	* testsuite/demangle/regression/7986-12.cc: New.
+	* testsuite/demangle/regression/7986.cc: New.
+	* testsuite/demangle/regression/8897.cc: New.
+	* testsuite/demangle/regression/cw-01.cc: New.
+	* testsuite/demangle/regression/cw-02.cc: New.
+	* testsuite/demangle/regression/cw-03.cc: New.
+	* testsuite/demangle/regression/cw-04.cc: New.
+	* testsuite/demangle/regression/cw-05.cc: New.
+	* testsuite/demangle/regression/cw-06.cc: New.
+	* testsuite/demangle/regression/cw-07.cc: New.
+	* testsuite/demangle/regression/cw-08.cc: New.
+	* testsuite/demangle/regression/cw-09.cc: New.
+	* testsuite/demangle/regression/cw-10.cc: New.
+	* testsuite/demangle/regression/cw-11.cc: New.
+	* testsuite/demangle/regression/cw-12.cc: New.
+	* testsuite/demangle/regression/cw-13.cc: New.
+	* testsuite/demangle/regression/cw-14.cc: New.
+	* testsuite/demangle/regression/old.cc: New.
+
+2003-02-25  Phil Edwards  
+
+	* docs/doxygen/Intro.3:  Update with new (proper) names.
+	* docs/doxygen/TODO:  Update.
+	* docs/doxygen/run_doxygen:  More comments, fix up man pages.
+	Fake entries for standard typedefs.
+	* docs/doxygen/user.cfg.in:  Turn INLINE_INHERITED_MEMB back on.
+	* docs/html/documentation.html:  Top-level man page is now called
+	C++Intro.
+	* include/std/std_limits.h:  Doxygenate.
+
+2003-02-25  Scott Snyder  
+
+	PR libstdc++/9811
+	* include/bits/stl_map.h (lower_bound, upper_bound, equal_range):
+	Correct documentation.
+	* include/bits/stl_multimap.h (lower_bound, upper_bound,
+	equal_range): Likewise.
+
+2003-02-24  Paolo Carlini  
+
+	PR libstdc++/9825
+	* src/fstream.cc
+	(basic_filebuf::_M_underflow_common): When
+	__bump is true (uflow), always increment the read pointer
+	(_M_in_cur) before returning successfully.
+	* testsuite/27_io/filebuf_virtuals.cc (test12): Add.
+
+2003-02-24  Paolo Carlini 
+	    Nathan Myers 
+
+	PR libstdc++/9404, PR libstdc++/9701 (partial)
+	(aka pptr == epptr implies overflow)
+	* include/bits/fstream.tcc (_M_allocate_internal_buffer):
+	Consistently, _M_out_end points to the end of the buffer just
+	created.
+	(overflow): Tweak to use _M_out_buf_size().
+	(_M_convert_to_external): The role of the old _M_out_end is
+	now played by _M_out_lim.
+	(_M_really_overflow): Likewise.
+	(seekoff): Likewise.
+	(setbuf): _M_out_end points to the end of the external buffer.
+	* include/bits/sstream.tcc (overflow): Rewrote, taking into
+	account the resolution of DR 169 (TC).
+	(seekoff): Use _M_string.capacity(); ios_base::end is now _M_out_lim.
+	(seekpos): Use _M_string.capacity(); tweak.
+	* include/bits/streambuf.tcc (sputc, xsputn): Remove comments.
+	* include/std/std_fstream.h (sync): The role of the old
+	_M_out_end is now played by _M_out_lim.
+	(_M_set_indeterminate): Use _M_set_determinate.
+	(_M_set_determinate): _M_out_end is now _M_out_lim.
+	(_M_is_indeterminate): Likewise.
+	* include/std/std_sstream.h (str()): _M_out_end is now _M_out_lim.
+	(_M_stringbuf_init): Don't set _M_buf_size, unused for sstreams,
+	which have the information readily available as _M_string.capacity();
+	for ate and app modes, pass the string size to _M_really_sync.
+	(_M_really_sync): Consistently set _M_out_end and _M_out_lim, to
+	point to the end of the buffer (i.e., epptr) and to the string end,
+	respectively.
+	* include/std/std_streambuf.h: tweak comments, add _M_out_lim,
+	which points to the right limit of the used put area.
+	(_M_out_cur_move): The role of the old _M_out_end is now played
+	by _M_out_lim.
+	(_M_out_buf_size): Simplify: now (when _M_out_cur) return simply
+	_M_out_end  - _M_out_cur (i.e., pptr), _very_ close to the letter
+	of the standard.
+	(basic_streambuf()): Initialize _M_out_lim too.
+	* testsuite/27_io/filebuf_virtuals.cc (test10): Trivial tweak.
+	* testsuite/27_io/filebuf_virtuals.cc (test11): Add.
+	* testsuite/27_io/stringbuf_virtuals.cc (test09): Add.
+
+2003-02-24  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base_storage.cc (main): Call
+	set_memory_limits.
+
+2003-02-21  Jerry Quinn  
+
+	* include/bits/locale_facets.tcc (_M_convert_float): Replace
+	numpunct facet accesses with data from __locale_cache.
+
+2003-02-20  Phil Edwards  
+
+	* docs/html/faq/index.html (3.9):  New note, wchar_t on FreeBSD.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2003-02-20  Phil Edwards  
+
+	* config/linker-map.gnu:  Also export locking symbols needed for the
+	generic atomicity.h case.
+
+2003-02-20  Alexandre Oliva  
+
+	* configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
+	config.status.
+	* configure: Rebuilt.
+
+2003-02-19  Paolo Carlini  
+
+	* include/bits/sstream.tcc (overflow): According to
+	27.7.1.3, p5, actual output is performed by sputc(c).
+
+2003-02-19  Phil Edwards  
+
+	PR libstdc++/9582
+	* include/bits/stl_alloc.h:  Remove all traces of assert().
+
+2003-02-18  Paolo Carlini  
+
+	* include/std/std_sstream.h (str()): the size of the
+	current string may be different from the initial one
+	whenever _M_out_end > _M_out_beg.
+	* testsuite/27_io/stringbuf_members.cc (test07): Add.
+
+2003-02-18  Paolo Carlini  
+
+	PR libstdc++/9582
+	* include/bits/stl_alloc.h (__pool_alloc::allocate): Remove assert.
+
+2003-02-17  Benjamin Kosnik  
+
+	* include/bits/basic_ios.tcc (copyfmt): Copy locale data as well.
+	* testsuite/27_io/ios_members.cc (test03): New.
+
+2003-02-17  Jerry Quinn  
+
+	* include/bits/basic_ios.h (basic_ios::_M_cache_locale): Declare.
+	(basic_ios::_M_cache_facets): Move into above.
+	* include/bits/basic_ios.tcc (basic_ios::copyfmt): Rebuild locale
+	cache.
+	(basic_ios::imbue): Force locale cache to be built.
+	(basic_ios::_M_init): Create and initialize locale cache.
+	* include/bits/ios_base.h (__locale_cache_base): Declare.
+	(ios_base::_M_locale_cache): New.
+	(ios_base::_M_cache): Define.
+	* include/bits/locale_facets.h:	(__num_base): Fix comment.  Add
+	_S_end.
+	(__locale_cache_base,__locale_cache<_CharT>):  New classes.
+	(__locale_cache, __locale_cache): New specializations.
+	* include/bits/locale_facets.tcc (num_put::_M_convert_int): Use locale
+	cache literal string, grouping flag, thousands separator.
+	(__locale_cache<_CharT>::__locale_cache): New.
+	(__locale_cache<_CharT>::_M_init): New.
+	* src/ios.cc: Clear _M_locale_cache in constructor.
+	* src/locale-inst.cc (__locale_cache, __locale_cache<_char_t>):
+	New.
+
+2003-02-17  Paolo Carlini  
+
+	* src/locale-inst.cc: Do not include .
+	* src/locale.cc: Likewise.
+
+2003-02-17  Paolo Carlini  
+
+	PR libstdc++/9580
+	* include/std/std_fstream.h: Declare underflow and uflow
+	specializations, change generic definitions to do nothing.
+	* src/fstream.cc: Add underflow and uflow specializations.
+
+2003-02-17  Paolo Carlini  
+
+	PR libstdc++/9169
+	* include/bits/fstream.tcc (_M_convert_to_external):
+	Deal correctly with noconv, as prescribed by 27.8.1.4,p8.
+	* testsuite/27_io/filebuf_virtuals.cc (test10): Add.
+
+2003-02-13  Benjamin Kosnik  
+
+	* include/bits/c++config (_GLIBCPP_EXTERN_TEMPLATE): Define.
+	* include/bits/basic_ios.tcc: Guard use of extern template.
+	* include/std/std_iomanip.h: Same.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/stl_alloc.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/basic_string.tcc: Same.
+
+2003-02-13  Paolo Carlini  
+
+	* include/bits/ostream.tcc (sentry::sentry): Improve
+	performance-wise the fix for libstdc++/9563.
+
+2003-02-12  Phil Edwards  
+
+	* config/cpu/generic/atomicity.h (_Atomic_add_mutex):  Fix declaration.
+	(_GLIBCPP_NEED_GENERIC_MUTEX):  Define for this file.
+	(_Atomic_add_mutex_once, __gthread_atomic_add_mutex_once):  Declare
+	when we don't have static mutex initialization.
+	(__exchange_and_add):  Use _Atomic_add_mutex_once.
+	* src/misc-inst.cc:  Definitions of all the above.
+
+2003-02-12  Paolo Carlini  
+
+	PR libstdc++/9563
+	* include/bits/ostream.tcc (sentry::sentry): Check
+	the state of the stream after the preparation.
+	* testsuite/27_io/ostream_sentry.cc (test02): Add.
+
+2003-02-11  Benjamin Kosnik  
+
+	* include/Makefile.am (stamp-std-precompile): Add rule.
+	* include/Makefile.in: Regenerated.
+
+2003-02-11 Jerry Quinn  
+	   Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (__num_base): Add _S_atoms_out.
+	Add indexes into this array.
+	(__num_base::_S_atoms): To _S_atoms_in.
+	(num_put::_M_insert): Rename to _M_pad.
+	(num_put::_M_convert_int): Adjust remove __mod, __modl arguments.
+	(num_put::_M_widen_int): Rename to _M_group_int.
+	(num_put::_M_widen_float): Rename to _M_group_float.
+	* include/bits/locale_facets.tcc (__int_to_char): New inline
+	function and adapter functions.
+	(num_put::_M_group_int): Streamline.
+	(num_put::_M_group_float): Streamline.
+	(num_put::_M_convert_int): Remove unused parameter names. Choose
+	large enough buffer for text.  Use __int_to_char instead of
+	__convert_from_v.  Formatted text is now at the end of the buffer.
+	(num_put::_M_convert_float): Preliminary fixups.
+	* src/locale-inst.cc (__convert_from_v): Add ifdef.
+	(__int_to_char): Same.
+	(__int_to_char): New.
+	(__int_to_char): New.
+	(__int_to_char): New.
+	(__int_to_char): New.
+
+2003-02-11  Scott Snyder  
+
+	PR libstdc++/9659
+	* include/bits/fstream.tcc (seekoff): Avoid operator+
+	for pos_type.
+
+2003-02-11  Paolo Carlini  
+
+	PR libstdc++/9320
+	* include/ext/stdio_filebuf.h
+	(stdio_filebuf(int, std::ios_base::openmode, bool, int_type),
+	stdio_filebuf(std::__c_file*, std::ios_base::openmode, int_type)):
+	Change to take a __size parameter of type size_t, not
+	of type (template parameter dependent) int_type.
+	* src/ios.cc (ios_base::Init::_S_ios_create): Change type of
+	size vars to size_t.
+	* testsuite/ext/stdio_filebuf.cc: Add.
+
+2003-02-11  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/9318
+	* include/bits/streambuf.tcc (__copy_streambufs):
+	Don't conditionalize the copy to __testput.
+	* testsuite/27_io/streambuf_members.cc (test09, test10): Add.
+
+2002-02-11  DJ Delorie  
+
+	* acinclude.m4: Check for native targets that can't link at
+	this point in the build.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2003-02-08  John David Anglin  
+
+	* hppa/atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock):
+	Correct alignment.
+	(__exchange_and_add, __atomic_add): Use PA 2.0 ordered store to reset
+	lock.
+
+2003-02-07  Paolo Carlini  
+
+	* testsuite/27_io/filebuf_virtuals.cc (test08): Fix for
+	unsigned char platforms.
+
+2003-02-06  Paolo Carlini  
+
+	PR libstdc++/9562
+	* include/std/std_istream.h
+	(basic_istream::sentry::operator bool()): Make const.
+	* include/std/std_ostream.h
+	(basic_ostream::sentry::operator bool()): Likewise.
+	* testsuite/27_io/istream_sentry.cc (test03): Add.
+	* testsuite/27_io/ostream_sentry.cc: Add.
+
+2003-02-06  Paolo Carlini  
+
+	PR libstdc++/9548
+	Implement resolution of DR 231 (Ready)
+	* include/bits/locale_facets.h (__num_base::_S_format_float):
+	Change declaration: return void, remove __prec parameter.
+	* src/locale.cc (__num_base::_S_format_float): Implement
+	resolution of DR 231.
+	* include/bits/locale_facets.tcc (num_put::_M_convert_float):
+	Tweak uses. Check for negative precision.
+	* testsuite/22_locale/num_put/put/char/6.cc: Add
+	* testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
+
+2003-02-06  Peter Soetens  
+
+	* config/io/basic_file_libio.h: Fixups.
+	* config/io/c_io_libio.h: Same.
+	* libio/Makefile.am: Same.
+	* libio/Makefile.in: Regenerated.
+
+2003-02-06  Benjamin Kosnik  
+
+	* testsuite/22_locale/codecvt/encoding/wchar_t/1.cc (test01):
+	Explicitly use the "C" locale.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc (test01): Same.
+
+2003-02-06  Petur Runolfsson  
+
+	DR 75
+	DR 305
+	PR libstdc++/9028 (partial)
+	PR libstdc++/9224
+	PR libstdc++/9246
+	PR libstdc++/9247
+
+	* src/codecvt.cc
+	(codecvt::do_encoding,
+	codecvt::do_length,
+	codecvt::do_max_length):
+	Move...
+	* config/locale/generic/codecvt_members.cc:  ...here.
+	* config/locale/gnu/codecvt_members.cc:  ...and here.
+
+	* config/locale/generic/codecvt_members.cc,
+	* config/locale/gnu/codecvt_members.cc
+	(codecvt::do_encoding
+	codecvt::do_in,
+	codecvt::do_length,
+	codecvt::do_max_length,
+	codecvt::do_out):
+	New implementation that handles stateless encodings,
+	including UTF-8.
+
+	* config/locale/generic/codecvt_members.cc,
+	* config/locale/gnu/codecvt_members.cc,
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h,
+	* include/bits/codecvt.h,
+	* src/codecvt.cc
+	(codecvt::length, codecvt::do_length):
+	Change type of first argument of length and do_length from
+	'const state_type&' to 'state_type&' according to DR 75.
+
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/1.cc:
+	Cleanup and check for correct return value from encoding
+	for "C" locale.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/in/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/5.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/6.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/7.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/8.cc:  New test.
+	* testsuite/22_locale/codecvt/in/wchar_t/9.cc:  New test.
+	* testsuite/22_locale/codecvt/length/char/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/length/char/2.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/length/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/5.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/6.cc:  New test.
+	* testsuite/22_locale/codecvt/length/wchar_t/7.cc:  New test.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/out/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/4.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/5.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/6.cc:  New test.
+	* testsuite/22_locale/codecvt/out/wchar_t/7.cc:  New test.
+	* testsuite/22_locale/codecvt/unicode/1.cc:  New test.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/1.cc:  Cleanup.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc:  New test.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/3.cc:  New test.
+	* testsuite/22_locale/codecvt/unshfit/wchar_t/4.cc:  New test.
+
+2003-02-05  Benjamin Kosnik  
+
+	* include/bits/locale_facets.tcc (time_put::do_put): Use __write.
+	(money_put::do_put): Same.
+
+2003-02-05  Jerry Quinn  
+
+	* include/bits/ios_base.h (ios_base): Document reserved storage.
+
+	* include/bits/locale_facets.h:	(struct __pad): Comment on
+	implementation.
+	(__verify_grouping): Same.
+	(__add_grouping): Same.
+	* include/bits/locale_facets.tcc (__verify_grouping): Move
+	comments to declaration.
+	(__add_grouping): Same.
+
+	* include/bits/locale_facets.tcc:
+	(__write<_CharT, _OutIter>): New function.
+	(__write<_CharT>): New function specialization.
+	(num_put::_M_insert): Remove explicit loop over iterator.  Use
+	__write.
+	(num_put::_M_widen_float): Remove __basefield.
+	(num_put::_M_widen_int): Move __basefield to within grouping block.
+
+	* include/bits/streambuf_iterator.h: Include .
+	(ostreambuf_iterator::_M_put): Add.
+
+2003-02-05  Paolo Carlini  
+
+	* testsuite/26_numerics/valarray_name_lookup.cc: Fix typo.
+
+2003-02-04  Nathan Myers  
+
+	* testsuite/25_algorithms/min_max.cc (test02): Add.
+
+2003-02-04  Paolo Carlini  
+
+	PR libstdc++/9439, PR libstdc++/9425
+	* config/io/basic_file_stdio.cc
+	(__basic_file::seekoff, seekpos): Return -1L if
+	fseek fails.
+	* include/bits/fstream.tcc (basic_filebuf::seekoff):
+	Check _M_file.seekoff return value; always return
+	pos_type(off_type(-1)) in case of failure.
+	(basic_filebuf::pbackfail): Check this->seekoff return
+	value and return traits_type::eof() in case of failure.
+	* testsuite/27_io/filebuf_virtuals.cc (test09): Add.
+
+2003-02-04  Jerry Quinn  
+
+	* include/std/std_ostream.h (ostream::_M_write): Declare.
+	* ostream.tcc (ostream::_M_write): Define.
+	(basic_ostream::write): Use it.
+	(operator<<(basic_ostream, _CharT)): Ditto.
+	(operator<<(basic_ostream, char)): Ditto.
+	(operator<<(basic_ostream, _CharT*)): Ditto.
+	(operator<<(basic_ostream, char*)): Ditto.
+	(operator<<(basic_ostream, basic_string)): Ditto.
+
+2003-02-04  Benjamin Kosnik  
+
+	* testsuite/26_numerics/valarray_name_lookup.cc: Fix.
+
+2002-02-04  Jonathan Wakely  
+
+	* docs/html/27_io/howto.html: Link to Dietmar Kuehl's IOStream page,
+	add HTML comment about updating links if numbering changes.
+
+2003-02-04  Paolo Carlini  
+
+	PR libstdc++/9538
+	* include/bits/streambuf.tcc (sputbackc): Access
+	this->gptr()[-1] only if _M_in_beg < _M_in_cur.
+	* testsuite/27_io/filebuf_virtuals.cc (test08): Add.
+
+2003-02-04  Paolo Carlini  
+
+	PR libstdc++/9507
+	* include/bits/fstream.tcc (open): If the 'ate' repositioning
+	operation fails, calls close _and_ returns a null pointer
+	to indicate failure (27.8.1.3,4).
+	* testsuite/27_io/filebuf_members.cc (test_06): Add.
+
+2003-02-04  Petur Runolfsson  
+
+	* testsuite/27_io/filebuf_members.cc (test_04): Remove exit(0).
+
+2002-02-04  Jonathan Wakely  
+
+	* docs/html/27_io/howto.html: New section on stdio_filebuf.
+	* docs/html/ext/howto.html: Move stdio_filebuf notes to 27_io.
+	* docs/html/documentation.html: Regenerate.
+
+2003-02-04  Joseph S. Myers  
+
+	* docs/html/17_intro/porting.texi: Update to GFDL 1.2.
+	* docs/html/17_intro/porting.html: Regenerate.
+
+2003-02-03  Falk Hueffner  
+	    Phil Edwards  
+
+	* include/std/std_bitset.h:  Replace CHAR_BIT with __CHAR_BIT__, use
+	numeric_limits for bits-per-word values.
+	(_Base_bitset::_M_do_count, _Base_bitset<1>::_M_do_count):
+	Use __builtin_popcountl instead.
+	(_Base_bitset::_M_do_find_first, _Base_bitset::_M_do_find_next,
+	_Base_bitset<1>::_M_do_find_first, _Base_bitset<1>::_M_do_find_next):
+	Use __builtin_ctzl instead.
+	(_S_bit_count, _S_first_one):  Remove.
+	* config/linker-map.gnu (GLIBCPP_3.4):  Remove std::_S_bit_count.
+	* src/Makefile.am (sources):  Remove bitset.cc.
+	* src/bitset.cc:  Delete file.
+	* src/Makefile.in:  Regenerate.
+
+2003-02-03  Phil Edwards  
+
+	PR libstdc++/9527, PR libstdc++/8713
+	* docs/html/install.html:  Mention glibc version requirement.
+	* docs/html/faq/index.html (3.8):  New note, glibc 2.2.5+ is needed
+	with 3.2.1+ (formatting bugfixes).
+	* docs/html/faq/index.txt:  Regenerate.
+
+2003-02-03  Volker Reichelt  
+
+	PR libstdc++/9234
+	* include/bits/valarray_before.h (_UnBase::operator[]): Apply unary
+	operator.
+
+	* include/bits/valarray_before.h (__not_equal_to): Use != instead
+	of ==.
+
+	* testsuite/26_numerics/valarray_operators.cc: New test.
+
+2003-02-01  Phil Edwards  
+
+	* docs/html/faq/index.html:  Correct link to libg++ information.
+	* docs/html/faq/index.txt:  Regenerated.
+
+2003-02-01  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	Const correctness issue:
+	http://gcc.gnu.org/ml/libstdc++/2003-01/msg00370.html
+	* include/bits/locale_classes.h
+	(locale::_Impl::_M_facets): Change type to const facet**.
+	(locale::_Impl::_M_install_facet): Change declaration to
+	take const facet*.
+	(locale::facet::_M_references): Make mutable.
+	(locale::facet::_M_add_reference): Declare const.
+	(locale::facet::_M_remove_reference): Likewise.
+	* include/bits/locale_facets.tcc
+	(use_facet(const locale&)): Tweak for const facet** _M_facets.
+	(has_facet(const locale&)): Likewise.
+	* src/locale.cc
+	(locale::facet::_M_add_reference): Adjust definition.
+	(locale::facet::_M_remove_reference): Likewise.
+	* src/localename.cc
+	(locale::_Impl::_Impl(const _Impl&, size_t)): Tweak for
+	const facet** _M_facets.
+	(locale::_Impl::_Impl(const char*, size_t)): Likewise.
+	(locale::_Impl::_Impl(facet**, size_t, bool)): Likewise.
+	(locale::_Impl::_M_install_facet): Adjust definition to take
+	const facet* and for const facet** _M_facets.
+	* testsuite/22_locale/locale/cons/8.cc: Add.
+
+2003-01-29  Mark Mitchell  
+
+	* include/std/std_limits.h (numeric_limits::has_infinity):
+	Use __FLT_HAS_INIFINITY__ to initialize.
+	(numeric_limits::has_quiet_NaN): Likewise.
+	(numeric_limits::has_infinity): Use __DBL_HAS_INIFINITY__
+	to initialize.
+	(numeric_limits::has_quiet_NaN): Likewise.
+	(numeric_limits::has_infinity): Use
+	__LDBL_HAS_INIFINITY__ to initialize.
+	(numeric_limits::has_quiet_NaN): Likewise.
+
+2003-01-28  Nathan Sidwell  
+
+	PR c++/9433
+	* libsupc++/tinfo.cc (__vmi_class_type_info::__do_dyncast): Cope
+	with bases which are very ambiguous.
+
+2003-01-28  Danny Smith  
+
+	* src/Makefile.am (CONFIG_CXXFLAGS): Reverse order of
+	@EXTRA_CXX_FLAGS@ @SECTION_FLAGS@.
+	* libsupc++/Makefile.am (CONFIG_CXXFLAGS): Likewise.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+
+2003-01-27  Alexandre Oliva  
+
+	* acinclude.m4 (glibcpp_toolexeclibdir): Instead of
+	$(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless
+	version_specific_libs is enabled.
+	* aclocal.m4, configure: Rebuilt.
+
+2003-01-24  Nathan Sidwell  
+
+	* include/bits/valarray_meta.h: Remove, split into ...
+	* include/bits/valarray_before.h: ... this, and ...
+	* include/bits/valarray_after.h: ... this.
+	* include/std/std_valarray.h: Adjust.
+	* include/Makefile.am (bits_headers): Adjust.
+	* include/Makefile.in: Regenerate.
+
+2003-01-24  Andreas Schwab  
+
+	* config/linker-map.gnu: Fix for size_t variance.
+
+2003-01-23  Petur Runolfsson  
+
+	PR libstdc++/9322
+	* include/std/std_streambuf.h
+	(basic_streambuf::basic_streambuf,
+	basic_streambuf::~basic_streambuf,
+	basic_streambuf::getloc, basic_streambuf::imbue):
+	Remove _M_buf_locale_init
+	* include/bits/fstream.tcc (basic_filebuf::imbue):  Likewise
+	* testsuite/27_io/filebuf_virtuals.cc (test08):  Add.
+	* testsuite/27_io/streambuf_members.cc (test08):  Add.
+	* testsuite/27_io/stringbuf_virtuals.cc (test08):  Add.
+
+2003-01-23  Benjamin Kosnik  
+
+	Revert include ordering.
+	* config/locale/generic/c_locale.h: Add include guards.
+	* config/locale/gnu/c_locale.h: Same.
+	* include/bits/locale_classes.h: Remove cctype include.
+	* include/std/std_iosfwd.h: Add c++locale.h, cctype includes.
+	* include/std/std_fstream.h: Remove streambuf include.
+	* include/std/std_sstream.h: Remove streambuf include.
+
+2003-01-23  Benjamin Kosnik  
+
+	* configure.in (libtool_VERSION): To 6:0:0.
+	* configure: Regenerated.
+	* config/linker-map.gnu: Clean.
+
+	* src/misc-inst.cc: Remove instantiations.
+
+	* include/bits/stl_alloc.h (__malloc_alloc_template):
+	To __malloc_alloc.
+	(__default_alloc_template): To __pool_alloc.
+	* src/stl-inst.cc: Same.
+	* include/backward/alloc.h: Update.
+	* testsuite/ext/allocators.cc: Update.
+
+	* src/globals.cc (__gnu_cxx): Remove _GLIBCPP_ASM_SYMVER. Should
+	really try to remove these if possible.
+	* src/locale.cc (std): Same.
+
+	* testsuite/abi_check.cc (check_version): Add.
+
+2003-01-22  Benjamin Kosnik  
+	    Sysoltsev Slawa  
+	    Mark Mitchell  
+
+	PR libstdc++/9269
+	* include/std/std_fstream.h (basic_filebuf::uflow): Declare.
+	(basic_filebuf::underflow): Declare.
+	Move definitions.
+
+2003-01-22  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h: Move non-facet classes requiring
+	 to...
+	* include/bits/locale_classes.h: New.
+	* include/bits/Makefile.am (bits_headers_src): Add locale_classes.h.
+	* include/bits/Makefile.in: Regenerate.
+
+	* include/bits/locale_facets.tcc (__convert_from_v): Move to...
+	* config/locale/gnu/c_locale.h: ...here.
+	* config/locale/generic/c_locale.h: Same.
+
+	* include/bits/locale_facets.tcc: Move declarations to...
+	* include/bits/locale_facets.h: ...here.
+	* include/bits/basic_ios.h: Tweak includes accordingly.
+	* include/std/std_sstream.h: Add streambuf include.
+	* include/std/std_fstream.h: Ditto.
+	* include/std/std_locale.h: Add locale_classes.h include.
+	* include/std/std_iosfwd.h: Tweak.
+	* src/concept-inst.cc: Add iterator include.
+
+	* config/linker-map.gnu: Specify __cxa functions, mark __cxa_dyn_*
+	bits as unexported in the future.
+
+2003-01-21  Benjamin Kosnik  
+
+	Reshuffle 22_locale testsuite.
+	* 22_locale/(codecvt.cc money_get.cc
+	codecvt_members_char_char.cc money_get_members_char.cc
+	codecvt_members_unicode_char.cc money_get_members_wchar_t.cc
+	codecvt_members_unicode_wchar_t.cc moneypunct_byname.cc
+	codecvt_members_wchar_t_char.cc moneypunct.cc collate_byname.cc
+	moneypunct_members_char.cc collate.cc moneypunct_members_wchar_t.cc
+	collate_members_char.cc money_put.cc collate_members_wchar_t.cc
+	money_put_members_char.cc ctor_copy_dtor.cc
+	money_put_members_wchar_t.cc ctype.cc num_get.cc ctype_is_char.cc
+	num_get_members_char.cc ctype_is_wchar_t.cc num_get_members_wchar_t.cc
+	ctype_members_char.cc numpunct_byname.cc ctype_members_wchar_t.cc
+	numpunct.cc ctype_narrow_char.cc numpunct_members_char.cc
+	ctype_narrow_wchar_t.cc numpunct_members_wchar_t.cc ctype_scan_char.cc
+	num_put.cc ctype_scan_wchar_t.cc num_put_members_char.cc
+	ctype_to_char.cc num_put_members_wchar_t.cc ctype_to_wchar_t.cc
+	operators.cc ctype_widen_char.cc static_members.cc
+	ctype_widen_wchar_t.cc time_get.cc facet.cc time_get_members_char.cc
+	global_templates.cc time_get_members_wchar_t.cc, members.cc,
+	time_put.cc, messages_byname.cc, time_put_members_char.cc,
+	messages.cc, time_put_members_wchar_t.cc, messages_members_char.cc):
+	Split up into individual test cases...
+	* 22_locale/codecvt/1.cc: New.
+	* 22_locale/codecvt/2.cc: New.
+	* 22_locale/codecvt/always_noconv/char/1.cc: New.
+	* 22_locale/codecvt/always_noconv/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/always_noconv/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/always_noconv/wchar_t/1.cc: New.
+	* 22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/encoding/char/1.cc: New.
+	* 22_locale/codecvt/encoding/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/encoding/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/encoding/wchar_t/1.cc: New.
+	* 22_locale/codecvt/encoding/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/in/char/1.cc: New.
+	* 22_locale/codecvt/in/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/in/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/in/wchar_t/1.cc: New.
+	* 22_locale/codecvt/in/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/in/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/length/char/1.cc: New.
+	* 22_locale/codecvt/length/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/length/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/length/wchar_t/1.cc: New.
+	* 22_locale/codecvt/length/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/length/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/max_length/char/1.cc: New.
+	* 22_locale/codecvt/max_length/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/max_length/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/max_length/wchar_t/1.cc: New.
+	* 22_locale/codecvt/max_length/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/out/char/1.cc: New.
+	* 22_locale/codecvt/out/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/out/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/out/wchar_t/1.cc: New.
+	* 22_locale/codecvt/out/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/out/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/codecvt/unicode/char.cc: New.
+	* 22_locale/codecvt/unicode/wchar_t.cc: New.
+	* 22_locale/codecvt/unshift/char/1.cc: New.
+	* 22_locale/codecvt/unshift/char/wrapped_env.cc: New.
+	* 22_locale/codecvt/unshift/char/wrapped_locale.cc: New.
+	* 22_locale/codecvt/unshift/wchar_t/1.cc: New.
+	* 22_locale/codecvt/unshift/wchar_t/wrapped_env.cc: New.
+	* 22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/collate/1.cc: New.
+	* 22_locale/collate/2.cc: New.
+	* 22_locale/collate/compare/char/1.cc: New.
+	* 22_locale/collate/compare/char/2.cc: New.
+	* 22_locale/collate/compare/char/wrapped_env.cc: New.
+	* 22_locale/collate/compare/char/wrapped_locale.cc: New.
+	* 22_locale/collate/compare/wchar_t/1.cc: New.
+	* 22_locale/collate/compare/wchar_t/2.cc: New.
+	* 22_locale/collate/compare/wchar_t/wrapped_env.cc: New.
+	* 22_locale/collate/compare/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/collate/hash/char/1.cc: New.
+	* 22_locale/collate/hash/char/2.cc: New.
+	* 22_locale/collate/hash/char/wrapped_env.cc: New.
+	* 22_locale/collate/hash/char/wrapped_locale.cc: New.
+	* 22_locale/collate/hash/wchar_t/1.cc: New.
+	* 22_locale/collate/hash/wchar_t/2.cc: New.
+	* 22_locale/collate/hash/wchar_t/wrapped_env.cc: New.
+	* 22_locale/collate/hash/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/collate/transform/char/2.cc: New.
+	* 22_locale/collate/transform/char/wrapped_env.cc: New.
+	* 22_locale/collate/transform/char/wrapped_locale.cc: New.
+	* 22_locale/collate/transform/wchar_t/2.cc: New.
+	* 22_locale/collate/transform/wchar_t/wrapped_env.cc: New.
+	* 22_locale/collate/transform/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/collate_byname/1.cc: New.
+	* 22_locale/ctype/1.cc: New.
+	* 22_locale/ctype/2.cc: New.
+	* 22_locale/ctype/cons/char/1.cc: New.
+	* 22_locale/ctype/cons/char/wrapped_env.cc: New.
+	* 22_locale/ctype/cons/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/is/char/1.cc: New.
+	* 22_locale/ctype/is/char/2.cc: New.
+	* 22_locale/ctype/is/char/3.cc: New.
+	* 22_locale/ctype/is/char/wrapped_env.cc: New.
+	* 22_locale/ctype/is/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/is/wchar_t/1.cc: New.
+	* 22_locale/ctype/is/wchar_t/2.cc: New.
+	* 22_locale/ctype/is/wchar_t/wrapped_env.cc: New.
+	* 22_locale/ctype/is/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/ctype/narrow/char/1.cc: New.
+	* 22_locale/ctype/narrow/char/2.cc: New.
+	* 22_locale/ctype/narrow/char/wrapped_env.cc: New.
+	* 22_locale/ctype/narrow/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/narrow/wchar_t/1.cc: New.
+	* 22_locale/ctype/narrow/wchar_t/2.cc: New.
+	* 22_locale/ctype/narrow/wchar_t/wrapped_env.cc: New.
+	* 22_locale/ctype/narrow/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/ctype/scan/char/1.cc: New.
+	* 22_locale/ctype/scan/char/wrapped_env.cc: New.
+	* 22_locale/ctype/scan/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/scan/wchar_t/1.cc: New.
+	* 22_locale/ctype/scan/wchar_t/wrapped_env.cc: New.
+	* 22_locale/ctype/scan/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/ctype/to/char/1.cc: New.
+	* 22_locale/ctype/to/char/wrapped_env.cc: New.
+	* 22_locale/ctype/to/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/to/wchar_t/1.cc: New.
+	* 22_locale/ctype/to/wchar_t/wrapped_env.cc: New.
+	* 22_locale/ctype/to/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/ctype/widen/char/1.cc: New.
+	* 22_locale/ctype/widen/char/wrapped_env.cc: New.
+	* 22_locale/ctype/widen/char/wrapped_locale.cc: New.
+	* 22_locale/ctype/widen/wchar_t/1.cc: New.
+	* 22_locale/ctype/widen/wchar_t/wrapped_env.cc: New.
+	* 22_locale/ctype/widen/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/facet/1.cc: New.
+	* 22_locale/facet/2.cc: New.
+	* 22_locale/global_templates/1.cc: New.
+	* 22_locale/locale/cons/1.cc: New.
+	* 22_locale/locale/cons/2.cc: New.
+	* 22_locale/locale/cons/3.cc: New.
+	* 22_locale/locale/cons/4.cc: New.
+	* 22_locale/locale/cons/5.cc: New.
+	* 22_locale/locale/cons/6.cc: New.
+	* 22_locale/locale/cons/7.cc: New.
+	* 22_locale/locale/global_locale_objects/1.cc: New.
+	* 22_locale/locale/global_locale_objects/2.cc: New.
+	* 22_locale/locale/global_locale_objects/3.cc: New.
+	* 22_locale/locale/operations/1.cc: New.
+	* 22_locale/locale/operations/2.cc: New.
+	* 22_locale/messages/1.cc: New.
+	* 22_locale/messages/2.cc: New.
+	* 22_locale/messages/members/char/1.cc: New.
+	* 22_locale/messages/members/char/2.cc: New.
+	* 22_locale/messages/members/char/3.cc: New.
+	* 22_locale/messages/members/char/wrapped_env.cc: New.
+	* 22_locale/messages/members/char/wrapped_locale.cc: New.
+	* 22_locale/messages_byname/1.cc: New.
+	* 22_locale/money_get/1.cc: New.
+	* 22_locale/money_get/2.cc: New.
+	* 22_locale/money_get/get/char/1.cc: New.
+	* 22_locale/money_get/get/char/2.cc: New.
+	* 22_locale/money_get/get/char/3.cc: New.
+	* 22_locale/money_get/get/char/4.cc: New.
+	* 22_locale/money_get/get/char/5.cc: New.
+	* 22_locale/money_get/get/char/6.cc: New.
+	* 22_locale/money_get/get/char/7.cc: New.
+	* 22_locale/money_get/get/char/8.cc: New.
+	* 22_locale/money_get/get/char/wrapped_env.cc: New.
+	* 22_locale/money_get/get/char/wrapped_locale.cc: New.
+	* 22_locale/money_get/get/wchar_t/1.cc: New.
+	* 22_locale/money_get/get/wchar_t/2.cc: New.
+	* 22_locale/money_get/get/wchar_t/3.cc: New.
+	* 22_locale/money_get/get/wchar_t/4.cc: New.
+	* 22_locale/money_get/get/wchar_t/5.cc: New.
+	* 22_locale/money_get/get/wchar_t/6.cc: New.
+	* 22_locale/money_get/get/wchar_t/7.cc: New.
+	* 22_locale/money_get/get/wchar_t/8.cc: New.
+	* 22_locale/money_get/get/wchar_t/wrapped_env.cc: New.
+	* 22_locale/money_get/get/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/money_put/1.cc: New.
+	* 22_locale/money_put/2.cc: New.
+	* 22_locale/money_put/put/char/1.cc: New.
+	* 22_locale/money_put/put/char/2.cc: New.
+	* 22_locale/money_put/put/char/3.cc: New.
+	* 22_locale/money_put/put/char/4.cc: New.
+	* 22_locale/money_put/put/char/5.cc: New.
+	* 22_locale/money_put/put/char/6.cc: New.
+	* 22_locale/money_put/put/char/wrapped_env.cc: New.
+	* 22_locale/money_put/put/char/wrapped_locale.cc: New.
+	* 22_locale/money_put/put/wchar_t/1.cc: New.
+	* 22_locale/money_put/put/wchar_t/2.cc: New.
+	* 22_locale/money_put/put/wchar_t/3.cc: New.
+	* 22_locale/money_put/put/wchar_t/4.cc: New.
+	* 22_locale/money_put/put/wchar_t/5.cc: New.
+	* 22_locale/money_put/put/wchar_t/6.cc: New.
+	* 22_locale/money_put/put/wchar_t/wrapped_env.cc: New.
+	* 22_locale/money_put/put/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/moneypunct/1.cc: New.
+	* 22_locale/moneypunct/2.cc: New.
+	* 22_locale/moneypunct/3.cc: New.
+	* 22_locale/moneypunct/members/char/1.cc: New.
+	* 22_locale/moneypunct/members/char/2.cc: New.
+	* 22_locale/moneypunct/members/char/wrapped_env.cc: New.
+	* 22_locale/moneypunct/members/char/wrapped_locale.cc: New.
+	* 22_locale/moneypunct/members/wchar_t/1.cc: New.
+	* 22_locale/moneypunct/members/wchar_t/2.cc: New.
+	* 22_locale/moneypunct/members/wchar_t/wrapped_env.cc: New.
+	* 22_locale/moneypunct/members/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/moneypunct_byname/1.cc: New.
+	* 22_locale/num_get/1.cc: New.
+	* 22_locale/num_get/2.cc: New.
+	* 22_locale/num_get/get/char/1.cc: New.
+	* 22_locale/num_get/get/char/2.cc: New.
+	* 22_locale/num_get/get/char/3.cc: New.
+	* 22_locale/num_get/get/char/4.cc: New.
+	* 22_locale/num_get/get/char/5.cc: New.
+	* 22_locale/num_get/get/char/6.cc: New.
+	* 22_locale/num_get/get/char/wrapped_env.cc: New.
+	* 22_locale/num_get/get/char/wrapped_locale.cc: New.
+	* 22_locale/num_get/get/wchar_t/1.cc: New.
+	* 22_locale/num_get/get/wchar_t/2.cc: New.
+	* 22_locale/num_get/get/wchar_t/3.cc: New.
+	* 22_locale/num_get/get/wchar_t/4.cc: New.
+	* 22_locale/num_get/get/wchar_t/5.cc: New.
+	* 22_locale/num_get/get/wchar_t/6.cc: New.
+	* 22_locale/num_get/get/wchar_t/wrapped_env.cc: New.
+	* 22_locale/num_get/get/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/num_put/1.cc: New.
+	* 22_locale/num_put/2.cc: New.
+	* 22_locale/num_put/put/char/1.cc: New.
+	* 22_locale/num_put/put/char/2.cc: New.
+	* 22_locale/num_put/put/char/3.cc: New.
+	* 22_locale/num_put/put/char/4.cc: New.
+	* 22_locale/num_put/put/char/5.cc: New.
+	* 22_locale/num_put/put/char/wrapped_env.cc: New.
+	* 22_locale/num_put/put/char/wrapped_locale.cc: New.
+	* 22_locale/num_put/put/wchar_t/1.cc: New.
+	* 22_locale/num_put/put/wchar_t/2.cc: New.
+	* 22_locale/num_put/put/wchar_t/3.cc: New.
+	* 22_locale/num_put/put/wchar_t/4.cc: New.
+	* 22_locale/num_put/put/wchar_t/5.cc: New.
+	* 22_locale/num_put/put/wchar_t/wrapped_env.cc: New.
+	* 22_locale/num_put/put/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/numpunct/1.cc: New.
+	* 22_locale/numpunct/2.cc: New.
+	* 22_locale/numpunct/members/char/1.cc: New.
+	* 22_locale/numpunct/members/char/2.cc: New.
+	* 22_locale/numpunct/members/char/wrapped_env.cc: New.
+	* 22_locale/numpunct/members/char/wrapped_locale.cc: New.
+	* 22_locale/numpunct/members/wchar_t/1.cc: New.
+	* 22_locale/numpunct/members/wchar_t/2.cc: New.
+	* 22_locale/numpunct/members/wchar_t/wrapped_env.cc: New.
+	* 22_locale/numpunct/members/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/numpunct_byname/1.cc: New.
+	* 22_locale/numpunct_byname/2.cc: New.
+	* 22_locale/time_get/1.cc: New.
+	* 22_locale/time_get/2.cc: New.
+	* 22_locale/time_get/date_order/char/1.cc: New.
+	* 22_locale/time_get/date_order/char/wrapped_env.cc: New.
+	* 22_locale/time_get/date_order/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/date_order/wchar_t/1.cc: New.
+	* 22_locale/time_get/date_order/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/date_order/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_date/char/1.cc: New.
+	* 22_locale/time_get/get_date/char/2.cc: New.
+	* 22_locale/time_get/get_date/char/3.cc: New.
+	* 22_locale/time_get/get_date/char/wrapped_env.cc: New.
+	* 22_locale/time_get/get_date/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_date/wchar_t/1.cc: New.
+	* 22_locale/time_get/get_date/wchar_t/2.cc: New.
+	* 22_locale/time_get/get_date/wchar_t/3.cc: New.
+	* 22_locale/time_get/get_date/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/get_date/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_monthname/char/1.cc: New.
+	* 22_locale/time_get/get_monthname/char/2.cc: New.
+	* 22_locale/time_get/get_monthname/char/3.cc: New.
+	* 22_locale/time_get/get_monthname/char/wrapped_env.cc: New.
+	* 22_locale/time_get/get_monthname/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_monthname/wchar_t/1.cc: New.
+	* 22_locale/time_get/get_monthname/wchar_t/2.cc: New.
+	* 22_locale/time_get/get_monthname/wchar_t/3.cc: New.
+	* 22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_time/char/1.cc: New.
+	* 22_locale/time_get/get_time/char/2.cc: New.
+	* 22_locale/time_get/get_time/char/3.cc: New.
+	* 22_locale/time_get/get_time/char/wrapped_env.cc: New.
+	* 22_locale/time_get/get_time/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_time/wchar_t/1.cc: New.
+	* 22_locale/time_get/get_time/wchar_t/2.cc: New.
+	* 22_locale/time_get/get_time/wchar_t/3.cc: New.
+	* 22_locale/time_get/get_time/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/get_time/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_weekday/char/1.cc: New.
+	* 22_locale/time_get/get_weekday/char/2.cc: New.
+	* 22_locale/time_get/get_weekday/char/3.cc: New.
+	* 22_locale/time_get/get_weekday/char/wrapped_env.cc: New.
+	* 22_locale/time_get/get_weekday/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_weekday/wchar_t/1.cc: New.
+	* 22_locale/time_get/get_weekday/wchar_t/2.cc: New.
+	* 22_locale/time_get/get_weekday/wchar_t/3.cc: New.
+	* 22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_year/char/1.cc: New.
+	* 22_locale/time_get/get_year/char/3.cc: New.
+	* 22_locale/time_get/get_year/char/wrapped_env.cc: New.
+	* 22_locale/time_get/get_year/char/wrapped_locale.cc: New.
+	* 22_locale/time_get/get_year/wchar_t/1.cc: New.
+	* 22_locale/time_get/get_year/wchar_t/3.cc: New.
+	* 22_locale/time_get/get_year/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_get/get_year/wchar_t/wrapped_locale.cc: New.
+	* 22_locale/time_put/1.cc: New.
+	* 22_locale/time_put/2.cc: New.
+	* 22_locale/time_put/put/char/1.cc: New.
+	* 22_locale/time_put/put/char/10.cc: New.
+	* 22_locale/time_put/put/char/2.cc: New.
+	* 22_locale/time_put/put/char/3.cc: New.
+	* 22_locale/time_put/put/char/4.cc: New.
+	* 22_locale/time_put/put/char/5.cc: New.
+	* 22_locale/time_put/put/char/6.cc: New.
+	* 22_locale/time_put/put/char/7.cc: New.
+	* 22_locale/time_put/put/char/8.cc: New.
+	* 22_locale/time_put/put/char/9.cc: New.
+	* 22_locale/time_put/put/char/wrapped_env.cc: New.
+	* 22_locale/time_put/put/char/wrapped_locale.cc: New.
+	* 22_locale/time_put/put/wchar_t/1.cc: New.
+	* 22_locale/time_put/put/wchar_t/10.cc: New.
+	* 22_locale/time_put/put/wchar_t/2.cc: New.
+	* 22_locale/time_put/put/wchar_t/3.cc: New.
+	* 22_locale/time_put/put/wchar_t/4.cc: New.
+	* 22_locale/time_put/put/wchar_t/5.cc: New.
+	* 22_locale/time_put/put/wchar_t/6.cc: New.
+	* 22_locale/time_put/put/wchar_t/7.cc: New.
+	* 22_locale/time_put/put/wchar_t/8.cc: New.
+	* 22_locale/time_put/put/wchar_t/9.cc: New.
+	* 22_locale/time_put/put/wchar_t/wrapped_env.cc: New.
+	* 22_locale/time_put/put/wchar_t/wrapped_locale.cc: New.
+
+2003-01-16  Jeffrey D. Oldham  
+
+	* config/locale/generic/messages_members.h
+	(messages_byname<_CharT>::messages_byname): Use this-> to refer to
+	unqualified members of base clasess.
+
+2003-01-16  Mark Mitchell  
+	    Jeffrey Oldham 
+
+	* config/locale/gnu/messages_members.h: Use this-> to refer to
+	unqualified members of base clasess.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Likewise.
+	* include/bits/codecvt.h: Likewise.
+	* include/bits/deque.tcc: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/bits/istream.tcc: Likewise.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/locale_facets.h: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/sstream.tcc: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/ext/stdio_filebuf.h: Likewise.
+	* include/ext/stl_rope.h: Likewise.
+	* include/std/std_fstream.h: Likewise.
+	* include/std/std_sstream.h: Likewise.
+
+2003-01-15  Phil Edwards  
+
+	* include/bits/basic_string.tcc (_S_string_copy): Unused, remove.
+
+2003-01-15  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Substitute
+	GLIBCPP_TEST_WCHAR_T if building wchar_t bits in the library.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (all-local): Add conditional rule to
+	generate testsuite_wchar_t.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/lib/libstdc++-v3-dg.exp
+	(libstdc++-v3-list-sourcefiles): Remove wchar_t files if
+	testsuite_wchar_t is not present in the build directory.
+	* testsuite/libstdc++-v3.dg/dg.exp: Add -g -O2 to DEFAULT_CXXFLAGS.
+	Remove setulimit bits.
+	* testsuite/26_numerics/complex_value.cc: Set to noopts.
+	* testsuite/Makefile.am (CLEANFILES): Add.
+	* testsuite/Makefile.in: Regenerate.
+
+2003-01-15  John David Anglin  
+
+	* config/os/hpux/os_defines.h (_GLIBCPP_GTHREAD_USE_WEAK): Define for
+	__hppa__.
+
+2003-01-14  Jeffrey D. Oldham  
+
+	Further conform g++'s __vmi_class_type_info to the C++ ABI
+	specification.
+	* libsupc++/cxxabi.h
+	(__vmi_class_type_info::__flags_masks): Remove enumerations not
+	required by the specification.
+
+2003-01-12  Benjamin Kosnik  
+
+	Renames, namespaces for testsuite utilities.
+	* testsuite/testsuite_hooks.h: Put into namespace __gnu_cxx_test.
+	(gnu_allocator_tracker): Rename to allocation_tracker.
+	(gnu_new_allocator): Rename to tracker_alloc.
+	(__set_testsuite_memlimit): Rename to set_memory_limits.
+	(gnu_assignment_operator): Rename to assignment_operator.
+	(gnu_destructor): Rename to destructor.
+	(gnu_copy_tracker): Rename to copy_tracker.
+	(gnu_char, gnu_int, gnu_long): Rename to pod_char, pod_int, pod_long.
+	(run_tests_wrapped_locale): New.
+	(run_tests_wrapped_env): New.
+	* testsuite/testsuite_hooks.cc: Same.
+	(class locale_data): Add.
+	(class enviornment_variable): Add.
+	(class not_found): Add.
+	* testsuite/testsuite_allocator.h: Same.
+	* testsuite/testsuite_allocator.cc: Same.
+	* testsuite/23_containers/deque_ctor.cc
+	(test_copy_ctor_exception_safety): Change gnu_allocator_tracker to
+	allocation_tracker.
+	Change gnu_new_allocator to tracker_alloc.
+	Change gnu_counting_struct to counter.
+	Change gnu_copy_tracker to copy_tracker.
+	Change gnu_copy_constructor to copy_constructor.
+	Change gnu_assignment_operator to assignment_operator.
+	Inject.
+	* testsuite/23_containers/vector_capacity.cc: Same.
+	* testsuite/23_containers/vector_ctor.cc (test01): Same.
+	* testsuite/23_containers/list_modifiers.cc: Change
+	gnu_copy_tracker to copy_tracker.
+	* testsuite/21_strings/ctor_copy_dtor.cc (main): Change
+	__set_testsuite_memlimit to set_memory_limits.
+	* testsuite/21_strings/insert.cc (main): Same.
+	* testsuite/27_io/filebuf.cc: Change gnu_char to pod_char.
+	* testsuite/27_io/stringstream.cc: Same.
+	* testsuite/27_io/stringbuf.cc: Same.
+	* testsuite/27_io/streambuf.cc: Same.
+	* testsuite/27_io/ostream.cc: Same.
+	* testsuite/27_io/istream.cc: Same.
+	* testsuite/27_io/fstream.cc: Same.
+	* testsuite/lib/libstdc++-v3-dg.exp
+	(libstdc++-v3-list-sourcefiles): Additionally handle files two and
+	three levels deeper in glob patterns.
+
+2003-01-11  Phil Edwards  
+
+	* docs/doxygen/tables.html:  Finished now.
+	* docs/doxygen/user.cfg.in:  Update to latest version of Doxygen.
+	* include/bits/basic_ios.h (basic_ios::rdbuf):  Add example to
+	comments.
+
+	* include/bits/deque.tcc, include/bits/stl_alloc.h,
+	include/bits/stl_deque.h, include/bits/stl_list.h,
+	include/bits/stl_vector.h:  Remove _GLIBCPP_DEPRECATED bits scheduled
+	for 3.4 removal.
+
+2003-01-09  Benjamin Kosnik  
+
+	* configure.in: Revert.
+	* configure: Regenerate.
+
+2003-01-09  Christian Cornelssen  
+
+	* include/Makefile.am (install-data-local): Prepend
+	$(DESTDIR) to destination paths in all (un)installation
+	commands.  Use ${c_base_builddir} and ${std_builddir}
+	as destination subdirectories to achieve consistency with
+	preceding mkinstalldirs commands.  No effect because both
+	variables contain "." only.
+	* include/Makefile.in: Regenerate.
+
+2003-01-08  Benjamin Kosnik  
+
+	* include/Makefile.am (stamp-*): Add checks for existing stamps.
+	* include/Makefile.in: Regenerate.
+
+	* acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Correct comment.
+	* aclocal.m4: Regenerate.
+
+	* configure.in: Don't add new multi-do rules every time the
+	directory is reconfigured.
+	* configure: Regenerate.
+
+2003-01-08  Brad Spencer  
+	    Nathan Myers  
+
+	* src/Makefile.am (stamp-debug): Clean.
+	* src/Makefile.in: Regenerate.
+
+2003-01-07  Benjamin Kosnik  
+
+	PR libstdc++/8707
+	* Makefile.am (distclean-multi): Fix.
+	* Makefile.in: Regenerate.
+
+2003-01-06  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (messages): Move ctor, dtor
+	definitions to..
+	(__timepunct): Same.
+	* config/locale/gnu/messages_members.h (messages): Add dtor, ctor
+	definitions. Conditionalize for GNU systems.
+	* config/locale/generic/messages_members.h (messages): Add dtor, ctor
+	definitions.
+	* config/locale/gnu/time_members.h (messages): New. Add dtor, ctor
+	definitions. Conditionalize for GNU systems.
+	* config/locale/generic/time_members.h (messages): New. Add dtor, ctor
+	definitions.
+	* include/bits/localefwd.h (locale::facet::_S_c_name): Add.
+	* src/locale.cc: Define.
+	* src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool):
+	Use it.
+	* config/locale/gnu/time_members.h: Use it.
+	* config/locale/gnu/messages_members.h: Use it.
+	* config/linker-map.gnu: Add locale::facets details.
+	* include/Makefile.am (target_headers_extra): Add time_members.h.
+	* include/Makefile.in: Regenerate.
+	* acinclude.m4: Export CTIME_H.
+	* aclocal.m4: Regenerate.
+	* configure: Regnerate.
+
+2003-01-06  Paolo Carlini  
+
+	* src/codecvt.cc
+	(codecvt::do_in, do_out):
+	Tweak parameters to avoid unused parameter warnings.
+
+2003-01-06  Paolo Carlini  
+
+	PR libstdc++/9151
+	* include/bits/locale_facets.cc (num_put::_M_convert_float):
+	Limit __prec to digits10 + 2, not digits10 + 1, taking into
+	account the possibility of %{g,G} conversion specifiers
+	inside _S_format_float.
+	* testsuite/27_io/ostream_inserter_arith.cc (test06): Add.
+
+2003-01-06  Kaveh R. Ghazi  
+
+	* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init,
+	libstdc++-v3-list-sourcefiles): Additionally handle files one
+	level deeper in glob patterns.
+
+	* testsuite/27_io/istream_extractor_arith.cc: Delete, split...
+	* testsuite/27_io/istream_extractor_arith/01.cc,
+	testsuite/27_io/istream_extractor_arith/02.cc,
+	testsuite/27_io/istream_extractor_arith/03.cc,
+	testsuite/27_io/istream_extractor_arith/06.cc,
+	testsuite/27_io/istream_extractor_arith/07.cc,
+	testsuite/27_io/istream_extractor_arith/08.cc,
+	testsuite/27_io/istream_extractor_arith/09.cc,
+	testsuite/27_io/istream_extractor_arith/10.cc,
+	testsuite/27_io/istream_extractor_arith/11.cc,
+	testsuite/27_io/istream_extractor_arith/12.cc,
+	testsuite/27_io/istream_extractor_arith/13.cc: ... to new files.
+	* testsuite/27_io/istream_extractor_arith/12.cc: Add XFAIL for
+	sparc*-*-solaris2*.
+
+2003-01-05  Paolo Carlini 
+
+	PR libstdc++/9168
+	* src/codecvt.cc
+	(codecvt::do_in, do_out):
+	Implement the resolution of DR19 (TC).
+	* testsuite/22_locale/codecvt_members_char_char.cc
+	(test01): Tweak.
+
+2003-01-02  Jason Merrill  
+
+	* config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
+	*__mem is also an output.
+	* config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2004 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2004
new file mode 100644
index 000000000..716428349
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2004
@@ -0,0 +1,6709 @@
+2004-12-31  Paolo Carlini  
+
+	* include/tr1/type_traits (is_member_function_pointer): Provide a
+	workaround for c++/19076, correct for functions with up to 15
+	arguments.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_member_pointer/is_member_pointer.cc: Uncomment "XFAILed" tests;
+	add a test for variadic functions.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_scalar/is_scalar.cc: Uncomment "XFAILed" tests.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_enum/is_enum.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer/is_member_function_pointer.cc: Likewise;
+	add a test for variadic functions.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer/is_member_object_pointer.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_assign/has_nothrow_assign.cc: Uncomment "XFAILed" tests.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_constructor/has_nothrow_constructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_copy/has_nothrow_copy.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_assign/has_trivial_assign.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_constructor/has_trivial_constructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_copy/has_trivial_copy.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_destructor/has_trivial_destructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_pod/is_pod.cc: Likewise.
+
+2004-12-30  Paolo Carlini  
+
+	* include/tr1/type_traits: Add has_trivial_copy, has_trivial_assign,
+	has_nothrow_copy, has_nothrow_assign.
+	* testsuite/testsuite_tr1.h: Add test_copy_property and
+	test_assign_property.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_assign/has_nothrow_assign.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_assign/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_copy/has_nothrow_copy.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_copy/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_assign/has_trivial_assign.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_assign/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_copy/has_trivial_copy.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_copy/typedefs.cc: Likewise.
+
+2004-12-29  Jonathan Wakely  
+
+	* include/bits/vector.tcc (erase(iterator, iterator),
+	operator=, _M_assign_aux(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag)): Qualify all calls to std::copy().
+
+2004-12-29  Paolo Carlini  
+
+	Minimal fixes for -fno-exceptions.
+	* src/bitmap_allocator.cc (free_list::_M_get): Use
+	__throw_exception_again, instead of plain throw.
+	* testsuite/testsuite_abi.cc (get_symbol, examine_symbol,
+	create_symbols): Likewise.
+	* testsuite/testsuite_hooks.cc (verify_demangle,
+	run_tests_wrapped_locale, run_tests_wrapped_env): Likewise.
+	(try_named_locale): Wrap the whole catch in __EXCEPTIONS.
+
+2004-12-29  Paolo Carlini  
+
+	* include/tr1/type_traits: Add has_nothrow_constructor.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_constructor/has_nothrow_constructor.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_constructor/typedefs.cc: Likewise.
+
+2004-12-28  David Edelsohn  
+
+	* configure.host (aix4*|aix5*): Add atomic_word_dir.
+	* config/os/aix/atomic_word.h: New file.
+
+2004-12-27  Jason Merrill  
+
+	Add memory barriers to the double-checked locking used for static
+	initialization.
+	* libsupc++/guard.cc (__test_and_acquire): Define default.
+	(_GLIBCXX_GUARD_TEST_AND_ACQUIRE, __set_and_release)
+	(_GLIBCXX_GUARD_SET_AND_RELEASE): Likewise.
+	(recursion_push, recursion_pop): New abstraction functions.
+	(__cxa_guard_acquire): Use _GLIBCXX_GUARD_TEST_AND_ACQUIRE.
+	(__cxa_guard_release): Use _GLIBCXX_GUARD_SET_AND_RELEASE.
+	* config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST): Rename
+	from _GLIBCXX_GUARD_ACQUIRE and reverse sense.
+	(_GLIBCXX_GUARD_SET): Rename from _GLIBCXX_GUARD_RELEASE.
+	* config/cpu/arm/cxxabi_tweaks.h: Likewise.
+	* config/cpu/alpha/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER)
+	(_GLIBCXX_WRITE_MEM_BARRIER): Define.
+	* config/cpu/powerpc/atomic_word.h: Likewise.
+	* config/cpu/sparc/atomic_word.h: Likewise.
+	* config/cpu/generic/atomic_word.h: Define them, commented out.
+	* include/bits/atomicity.h: Define defaults.
+	* config/cpu/ia64/atomic_word.h (__test_and_acquire)
+	(__set_and_release): New inlines.
+	(_GLIBCXX_GUARD_TEST_AND_ACQUIRE): Define.
+	(_GLIBCXX_GUARD_SET_AND_RELEASE): Define.
+
+	* libsupc++/guard.cc (acquire_1): Use __builtin_trap instead of
+	abort();
+
+2004-12-27  Paolo Carlini  
+
+	* include/tr1/type_traits: Rework the _DEFINE_SPEC* macros.
+
+2004-12-26  Paolo Carlini  
+
+	* include/tr1/type_traits (__is_enum_helper): Slightly simplify,
+	make __convert non template.
+
+2004-12-26  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_pod, has_trivial_constructor,
+	and has_trivial_destructor.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_constructor/has_trivial_constructor.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_constructor/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_destructor/has_trivial_destructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_destructor/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_pod/is_pod.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_pod/typedefs.cc: Likewise.
+
+2004-12-25  Paolo Carlini  
+
+	* include/tr1/type_traits (is_enum): Minor tweak.
+
+2004-12-25  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_enum (usual caveats about
+	the nasty consequences of c++/19076...).
+	* testsuite/testsuite_tr1.h: Add ConvType.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_scalar/is_scalar.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_scalar/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_enum/is_enum.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_enum/typedefs.cc: Likewise.
+
+2004-12-24  Paolo Carlini  
+
+	* include/tr1/type_traits: Add missing undef.
+
+2004-12-24  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_member_object_pointer,
+	is_member_function_pointer. N.B. Due to c++/19076, the latter
+	doesn't really work at the moment (a rather ugly work around
+	will be provided in case the front-end bug doesn't get fixed
+	soon); generalize and extend the _DEFINE_SPEC macros.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_member_pointer/is_member_pointer.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_member_pointer/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer/is_member_function_pointer.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer/is_member_object_pointer.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer/typedefs.cc: Likewise.
+
+2004-12-22  Paolo Carlini  
+
+	* include/tr1/type_traits_fwd.h: New, forward declarations.
+	* include/tr1/type_traits: Clean-up.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+
+2004-12-20  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: New.
+	* testsuite/27_io/basic_istream/peek/wchar_t/12296.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/6414.cc: Likewise.
+	* testsuite/27_io/basic_istream/putback/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/ws/wchar_t/1.cc: Likewise.
+
+	* testsuite/data/wistream_extractor_other-1.tst: New.
+	* testsuite/data/wistream_extractor_other-1.txt: Likewise.
+	* testsuite/data/wistream_extractor_other-2.tst: Likewise.
+	* testsuite/data/wistream_seeks-1.tst: Likewise.
+	* testsuite/data/wistream_seeks-1.txt: Likewise.
+	* testsuite/data/wistream_unformatted-1.tst: Likewise.
+	* testsuite/data/wistream_unformatted-1.txt: Likewise.
+
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
+	Use wistream_extractor_other-1.txt.
+
+	* testsuite/27_io/basic_istream/peek/char/6414.cc: Minor clean-up.
+	* testsuite/27_io/basic_istream/putback/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/2.cc: Likewise.
+
+2004-12-19  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc: New.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	01.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	02.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	03.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	06.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	07.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	08.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	09.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	10.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	11.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	12.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	13.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	9555-ia.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	exceptions_failbit.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+	exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	11095-i.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	9555-ic.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	9318-in.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	9424-in.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	9555-io.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	error_failbit.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	exceptions_null.cc: Likewise.
+
+	* testsuite/27_io/basic_istream/extractors_other/char/2.cc: Minor
+	tweaks.
+
+	* testsuite/testsuite_io.h (struct fail_buf): Fix type of
+	dummy return values.
+
+2004-12-19  Dhruv Matani  
+
+	* include/ext/bitmap_allocator.h: Make doxygen style comments for
+	internal functions and classes.
+
+2004-12-19  Dhruv Matani  
+
+	* docs/html/20_util/allocator.html: Correct link.
+	* docs/html/ext/ballocator_doc.txt: Remove.
+	* docs/html/ext/ballocator_doc.html: Add.
+
+2004-12-16  Danny Smith  
+
+	PR target/18997
+	* config/os/newlib/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK):
+	Define to 0 for __CYGWIN__.
+
+2004-12-16  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement add_const, add_volatile,
+	and add_cv.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	add_const.cc: New.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	add_cv.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	add_volatile.cc: Likewise.
+
+2004-12-16  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_function.
+	(struct __sfinae_types, struct __is_function_helper): New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_object/is_object.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_object/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_function/is_function.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_function/typedefs.cc: Likewise.
+
+2004-12-13  Paolo Carlini  
+
+	* include/tr1/type_traits (extent): Minor tweak (i.e., public).
+
+2004-12-12  Paolo Carlini  
+
+	* include/tr1/type_traits: Minor tweak.
+	* testsuite/tr1/4_metaprogramming/type_properties/extent/
+	typedefs.cc: Fix date.
+
+2004-12-12  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement extent.
+	* testsuite/tr1/4_metaprogramming/type_properties/extent/
+	extent.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/extent/
+	typedefs.cc: Likewise.
+
+2004-12-12  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_pointer, remove_pointer,
+	and add_pointer; reformat.
+	(_DEFINE_PRIMARY_SPEC_HELPER, _DEFINE_PRIMARY_SPEC): Generalize
+	and rename to _DEFINE_SPEC_HELPER and _DEFINE_SPEC; update uses.
+	* testsuite/tr1/4_metaprogramming/pointer_modifications/
+	add_pointer.cc: New.
+	* testsuite/tr1/4_metaprogramming/pointer_modifications/
+	remove_pointer.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_pointer/is_pointer.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_pointer/typedefs.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_reference/is_reference.cc: Slightly tweak consistently.
+
+2004-12-11  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement rank.
+	* testsuite/testsuite_tr1.h (test_property): Generalize to any
+	value_type.
+	(test_category, test_relationship): Slightly tweak consistently.
+	* testsuite/tr1/4_metaprogramming/type_properties/rank/
+	rank.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/rank/
+	typedefs.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_compound/is_compound.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_compound/typedefs.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_arithmetic/is_arithmetic.cc: Tweak consistently with the
+	testsuite_tr1.h changes.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_fundamental/is_fundamental.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_array/is_array.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_floating_point/is_floating_point.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_integral/is_integral.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_reference/is_reference.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_void/is_void.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_same/is_same.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_const/
+	is_const.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_volatile/
+	is_volatile.cc: Likewise.
+
+2004-12-10  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement remove_const, remove_volatile,
+	and remove_cv.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	remove_const.cc: New.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	remove_cv.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/const_volatile_modifications/
+	remove_volatile.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_array/is_array.cc: Slightly tweak consistently, remove typedefs,
+	add a few tests.
+
+2004-12-09  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement remove_extent and
+	remove_all_extents.
+	* testsuite/tr1/4_metaprogramming/array_modifications/
+	remove_all_extents.cc: New.
+	* testsuite/tr1/4_metaprogramming/array_modifications/
+	remove_extent.cc: Likewise.
+
+2004-12-08  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_same, add_reference and
+	remove_reference.
+	* testsuite/testsuite_tr1.h (test_relationship): New.
+	* testsuite/tr1/4_metaprogramming/reference_modifications/
+	add_reference.cc: New.
+	* testsuite/tr1/4_metaprogramming/reference_modifications/
+	remove_reference.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_same/is_same.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_same/typedefs.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/type_properties/is_const/
+	is_const.cc: Minor tweaks.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_volatile/
+	is_volatile.cc: Likewise.
+
+2004-12-08  David Edelsohn  
+
+	* Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
+	PICFLAG.
+	* Makefile.in: Regenerated.
+
+2004-12-07  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_const and is_volatile.
+	* testsuite/testsuite_tr1.h (test_property): New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_const/is_const.c: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_const/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_volatile/is_volatile.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_volatile/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_arithmetic/is_arithmetic.cc: Slightly tweak to use ClassType
+	from testsuite_tr1.h.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_fundamental/is_fundamental.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_array/is_array.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_floating_point/is_floating_point.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_integral/is_integral.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_reference/is_reference.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_void/is_void.cc: Likewise.
+
+2004-12-06  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_reference.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_reference/is_reference.cc: New.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_reference/typedefs.cc: Likewise.
+
+2004-12-05  Paolo Carlini  
+
+	PR libstdc++/18837
+	* testsuite/testsuite_performance.h: Fix mallinfo macros for
+	hpux.
+
+2004-12-04  Richard Henderson  
+
+	* testsuite/26_numerics/complex/pow.cc: Use -mieee on alpha.
+
+2004-12-04  Richard Henderson  
+
+	* include/ext/malloc_allocator.h: Include cstdlib.
+
+2004-12-04  Paolo Carlini  
+
+	* include/tr1/type_traits: New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* testsuite/testsuite_tr1.h: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_arithmetic/is_arithmetic.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_arithmetic/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_fundamental/is_fundamental.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_fundamental/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/helper_classes/
+	true_false_type.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/helper_classes/
+	true_false_type_typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/helper_classes/
+	typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_array/is_array.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_array/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_floating_point/is_floating_point.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_floating_point/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_integral/is_integral.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_integral/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_void/is_void.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_void/typedefs.cc: Likewise.
+
+2004-12-02  Paolo Carlini  
+
+	* testsuite/testsuite_io.h (class sync_buf): New, templatized
+	version of sync_streambuf; add typedefs for streambuf/wstreambuf.
+	(class fail_buf): Likewise, for fail_streambuf.
+	(class fail_num_get): Templatize and add char/wchar_t typedefs.
+	(class fail_num_put): Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
+	exceptions_badbit_throw.cc: Use the latter.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
+	exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	exceptions_failbit_throw.cc: Likewise.
+
+2004-12-01  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/get/wchar_t/1.cc: New.
+	* testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc: Likewise.
+
+2004-11-29  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/capacity/char/18654.cc: Use
+        better names.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc: Same.
+
+2004-11-29  Paolo Carlini  
+
+	PR libstdc++/18654
+	* include/bits/basic_string.tcc (_Rep::_S_create): When shrinking,
+	do not round to pagesize.
+	* testsuite/21_strings/basic_string/capacity/char/18654.cc: New.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc: New.
+
+2004-11-27  Paolo Carlini  
+
+	PR libstdc++/18690
+	* include/tr1/utility (get(pair), get(const pair)): Change
+	occurrences of _I to _Int.
+
+2004-11-27  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/getline/wchar_t/2.cc: Fix typo.
+	* testsuite/27_io/basic_istream/getline/wchar_t/4.cc: Likewise.
+
+	* testsuite/22_locale/time_put/put/char/17038.cc: Use VERIFY.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc: Likewise.
+	* testsuite/27_io/basic_ios/exceptions/char/2.cc: Likewise.
+
+2004-11-26  Paolo Carlini  
+
+	DR 243. get and getline when sentry reports failure [WP]
+	* include/bits/istream.tcc (istream<>::get, istream<>::getline):
+	Store a null character only if the array has a non-zero size.
+	* src/istream.cc (istream::getline, istream::getline):
+	Likewise.
+	* testsuite/27_io/basic_istream/get/char/3.cc: New.
+	* testsuite/27_io/basic_istream/getline/char/6.cc: New.
+	* testsuite/27_io/basic_istream/getline/wchar_t/6.cc: New.
+	* docs/html/ext/howto.html: Add an entry for DR 243.
+
+	* testsuite/27_io/basic_istream/getline/wchar_t/1.cc: New.
+	* testsuite/27_io/basic_istream/getline/wchar_t/2.cc: New.
+	* testsuite/27_io/basic_istream/getline/wchar_t/3.cc: New.
+	* testsuite/27_io/basic_istream/getline/wchar_t/4.cc: New.
+	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: New.
+
+2004-11-24  Kelley Cook  
+
+	* configure: Regenerate for libtool change.
+
+2004-11-24  Kelley Cook  
+
+	* Makefile.in, aclocal.m4: Regenerate with automake 1.9.3.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2004-11-24  Jonathan Wakely  
+
+	* docs/html/ext/howto.html: Fix incorrect link.
+	* docs/html/documentation.html: Regenerate.
+
+2004-11-24  Nathan Myers  
+
+	* include/bits/streambuf_iterator.h
+	(istreambuf_iterator<>::operator++(), operator++(int)): Don't
+	check unnecessarily the return value of _M_sbuf->sbumpc().
+
+2004-11-24  Benjamin Kosnik  
+
+	* include/Makefile.am (tr1_headers): Add utility, functional.
+	* include/Makefile.in: Regenerate.
+
+2004-11-24  Chris Jefferson  
+
+	* include/tr1/tuple(operator!=): Change operator
+	definition to match (draft) technical report.
+	(operator>): Same.
+	(operator<=): Same.
+	(operator>=): Same.
+	(ref): Move to include/tr1/functional.
+	(cref): Same.
+	(tuple_size): Move to include/tr1/utility.
+	(tuple_element<,pair>): Same.
+	* include/tr1/functional: New.
+	* include/tr1/utility: New.
+	* testsuite/tr1/6_container/utility/pair.cc: New.
+
+2004-11-24  Volker Reichelt  
+
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h
+	(do_out, do_unshift, do_in): Remove redundant typedef.
+
+2004-11-23  Chris Jefferson  
+
+	* testsuite/testsuite_iterators.h: New.
+        * testsuite/25_algorithms/search_n/iterator.cc: New.
+        * testsuite/performance/25_algorithms/search_n.cc: New.
+
+2004-11-23  John David Anglin  
+
+	* testsuite/lib/libstdc++.exp: Use new procs in target-libpath.exp.
+
+2004-11-23  Benjamin Kosnik  
+
+	* docs/doxygen/doxygroups.cc: Add std::tr1 namespace.
+	* docs/doxygen/run_doxygen: Renames for std::tr1.
+	* docs/doxygen/user.cfg.in: Add cxxabi.h.
+	* include/bits/*.tcc: Add file markup.
+	* include/bits/allocator.h: Add link to allocator.html.
+	* include/bits/atomicity.h: Add file markup.
+	* include/bits/concurrence.h: Same.
+	* include/bits/functexcept.h: Same.
+	* include/ext*: Adjust file markup, remove GCC3 bits.
+	* include/std/*: Adjust file markup, remove bits about renamed files.
+	* libsupc++/cxxabi.h: Add file markup.
+	* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust line numbers.
+
+2004-11-22  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h (isspace, isprint, isupper,
+	islower, isalpha, isdigit, ispunct, isxdigit, isalnum, isgraph,
+	toupper, tolower): Add doxygen markup.
+	(codecvt_byname, ctype_byname, numpunct_byname, collate_byname,
+	time_get_byname, time_put_byname, moneypunct_byname,
+	messages_byname): Same.
+	* include/std/std_fstream.h: Remove superfluous markup.
+	* include/std/std_sstream.h: Same.
+	* include/std/std_streambuf.h: Same.
+	* include/ext/enc_filebuf.h: Adjust markup.
+	* include/ext/stdio_filebuf.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/bits/codecvt.h: Same.
+	* config/os/gnu-linux/ctype_base.h: Same.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
+	* include/tr1/array: Add markup.
+	* include/tr1/tuple: Same.
+
+	* docs/doxygen/run_doxygen: Print arguments.
+
+	* docs/doxygen/user.cfg.in: Tweaks.
+
+2004-11-19  Jonathan Wakely  
+
+	* include/bits/basic_string.h, include/bits/locale_classes.h,
+	include/bits/valarray_after.h, include/bits/valarray_before.h,
+	include/ext/stdio_sync_filebuf.h, include/std/std_algorithm.h,
+	include/std/std_functional.h, include/std/std_memory.h,
+	include/std/std_numeric.h: Doxygen fixes.
+
+2004-11-19  Paolo Carlini  
+
+	* testsuite/22_locale/time_get/get_date/char/1.cc: In the checks
+	use, more correctly (and consistently with other testcases) the
+	return value of the facet (the iterator arguments are by value).
+	* testsuite/22_locale/time_get/get_date/char/12791.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Likewise.
+
+2004-11-19  Jonathan Wakely  
+
+	* Makefile.am (doxygen, doxygen-maint, doxygen-man): Remove extra '$'
+	from host_alias variable.
+	* Makefile.in: Regenerate.
+
+2004-11-19  Chris Jefferson  
+
+	* include/bits/stl_list.h (list::back, list::back const):
+	Don't decrement temporary.
+
+2004-11-19  Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque::front, deque::front const,
+	deque::back, deque::back const): Slightly tweak for stylistic
+	consistency.
+
+2004-11-18  Paolo Carlini  
+
+	* testsuite/26_numerics/numeric/sum_diff.cc: Use VERIFY.
+	* testsuite/ext/array_allocator/1.cc: Likewise.
+	* testsuite/ext/array_allocator/2.cc: Likewise.
+	* testsuite/ext/array_allocator/3.cc: Likewise.
+	* testsuite/ext/enc_filebuf/char/13598.cc: Likewise.
+
+2004-11-18  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(void*&)):
+	If the failbit is set, don't set it again.
+	(money_get<>::_M_extract): Minor stylistic tweak: consistently
+	with the other functions, take care of eofbit at the end.
+
+2004-11-18  Paolo Carlini  
+
+	DR 434. bitset::to_string() hard to use [Ready]
+	* include/std/std_bitset.h (to_string): Add three overloads, taking
+	fewer template arguments.
+	* docs/html/ext/howto.html: Add an entry for DR 434.
+	* testsuite/23_containers/bitset/to_string/1.cc: New.
+
+2004-11-17  Paolo Carlini  
+
+	* include/bits/istream.tcc (getline(basic_istream<>&, basic_string<>&,
+	_CharT)): Remove temporary kludge for libstdc++/15002.
+	* include/std/std_streambuf.h (class basic_streambuf): Declare
+	getline(basic_istream<>&, basic_string<>&, _CharT) as friend.
+	* include/bits/basic_string.h (getline(basic_istream<>&,
+	basic_string<>&, _CharT)): Declare optimized specializations for
+	char and wchar_t, using protected members of basic_streambuf.
+	* src/istream.cc: Define the latter.
+
+2004-11-16  Jonathan Wakely  
+
+	* docs/html/19_diagnostics/howto.html: Document change from
+	_GLIBCPP_CONCEPT_CHECKS to _GLIBCXX_CONCEPT_CHECKS in 3.4.
+
+2004-11-16  Matthias Klose  
+
+	* docs/doxygen/user.cfg.in: Set HAVE_DOT to NO.
+
+2004-11-16  Matthias Klose  
+
+	* Makefile.am (doxygen, doxygen-maint, doxygen-man): Use host_alias
+	instead of build_alias.
+	* docs/doxygen/run_doxygen: Likewise.
+	* docs/doxygen/user.cfg.in: Likewise.
+	* Makefile.in: Regenerate.
+
+2004-11-15  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (__copy_streambufs): Provide
+	a generic version of the function, not using the protected
+	members of basic_streambuf.
+	* include/std/std_streambuf.h (__copy_streambufs): Declare
+	optimized specializations for char and wchar_t.
+	* src/streambuf.cc: New file, define the latter.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+
+2004-11-15  Matthias Klose  
+
+	* docs/doxygen/run_doxygen: Add --build_alias option,
+	substitute it in docs/doxygen/user.cfg.in.
+	* docs/doxygen/user.cfg.in: Use build_alias.
+	* Makefile.am: Pass --build_alias to run_doxygen
+	* Makefile.in: Regenerate.
+
+2004-11-15  Benjamin Kosnik  
+
+	* testsuite/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.4.
+
+2004-11-15  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 33.
+
+2004-11-14  Paolo Carlini  
+
+	* include/bits/streambuf_iterator.h (istreambuf_iterator::_M_get):
+	Slightly tweak for clarity (also leads to measurably better code).
+
+2004-11-12  Andrew Pinski  
+
+	PR other/14264
+	* testsuite/lib/libstdc++.exp: Set LC_ALL and LANG to C.
+
+2004-11-09  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get<>::do_get_weekday,
+	time_get<>::do_get_monthname): Absolutely avoid dereferencing
+	end iterators.
+
+	* include/bits/locale_facets.tcc (time_get<>::_M_extract_name):
+	Minor tweak.
+
+2004-11-08  Benjamin Kosnik  
+	    Doug Gregor  
+
+	PR libstdc++/17664
+	* src/debug.cc : Just use one mutex.
+
+2004-11-08  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:4:0.
+	* configure: Regenerate.
+
+	* config/linker-map.gnu: Slide new symbols into GLIBCXX_3.4.4.
+
+	* docs/doxygen/user.cfg.in: Add more extension files.
+
+2004-11-08  Paolo Carlini  
+
+	* include/bits/streambuf_iterator.h (class istreambuf_iterator):
+	Consistently use _M_c to cache the current char, i.e., not only
+	when operator++(int) is involved; change _M_c to mutable.
+	(_M_get()): Always save the return value of _M_sbuf->sgetc() into
+	_M_c.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Fix
+	(long standing) typo.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
+
+2004-11-08  Paolo Carlini  
+
+	* include/bits/istream.tcc (getline(char_type*, streamsize,
+	char_type), ignore(streamsize), ignore(streamsize, int_type)):
+	Restore a generic version of the functions, not using the
+	protected members of basic_streambuf.
+	* include/std/std_istream.h (getline(char_type*, streamsize,
+	char_type), ignore(streamsize), ignore(streamsize, int_type)):
+	Declare optimized specializations for char and wchar_t.
+	* src/istream.cc: New file, define the latter.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+
+2004-11-07  Paolo Carlini  
+
+	* testsuite/performance/27_io/ifstream_getline-2.cc: New.
+
+2004-11-05  Benjamin Kosnik  
+
+	PR libstdc++/17218
+	PR libstdc++/17223
+	* docs/doxygen/filter: Remove.
+	* docs/doxygen/filter.sed: Remove.
+	* docs/doxygen/mainpage.html: Add link to functions.
+	* docs/doxygen/run_doxygen: Changes due to new source filtering.
+	* docs/doxygen/user.cfg.in: Update to doxygen 1.3.9.1, tweak.
+	* include/bits/allocator.h: Tweaks for doxygen.
+	* include/bits/char_traits.h: Same.
+	* include/bits/codecvt.h: Same.
+	* include/bits/concurrence.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/ext/array_allocator.h: Same.
+	* include/ext/debug_allocator.h: Same.
+	* include/ext/malloc_allocator.h: Same.
+	* include/ext/mt_allocator.h: Same.
+	* include/ext/new_allocator.h: Same.
+	* include/ext/pool_allocator.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/std/std_memory.h: Same.
+	* include/tr1/array: Same.
+	* include/tr1/tuple: Same.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
+	* config/os/gnu-linux/ctype_base.h: Same.
+
+2004-11-04  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(bool&)):
+	Evaluate __beg == __end the exact strict minimum number of times.
+
+2004-11-03  Jonathan Wakely  
+
+	* include/bits/stl_numeric.h (partial_sum, adjacent_difference):
+	Avoid dereferencing two times __first in the prologue.
+
+2004-11-03  Paolo Carlini  
+
+	* include/bits/stl_numeric.h: Trivial formatting fixes.
+
+2004-11-03  Benjamin Kosnik  
+
+	* include/bits/c++config: Spacing.
+	* libsupc++/del_op.cc: Include c++config.h.
+	* libsupc++/del_opnt.cc: Same.
+	* libsupc++/del_opv.cc: Same.
+	* libsupc++/del_opvnt.cc: Same.
+	* libsupc++/new_op.cc: Same.
+	* libsupc++/new_opnt.cc: Same.
+	* libsupc++/new_opv.cc: Same.
+	* libsupc++/new_opvnt.cc: Same.
+
+2004-11-03  Aaron W. LaFramboise  
+
+	* config/os/bsd/darwin/os_defines.h
+	(_GLIBCXX_WEAK_DEFINITION): Define.
+	* include/bits/c++config (_GLIBCXX_WEAK_DEFINITION): Define.
+	* libsupc++/del_op.cc (operator delete(void *)): Use
+	_GLIBCXX_WEAK_DEFINITION.
+	* libsupc++/del_opnt.cc
+	(operator delete(void *, const std::nothrow_t&)): Same.
+	* libsupc++/del_opv.cc (operator delete[](void *)): Same.
+	* libsupc++/del_opvnt.cc
+	(operator delete[](void *, const std::nothrow_t&)): Same.
+	* libsupc++/new_op.cc (operator new(std::size_t)): Same.
+	* libsupc++/new_opnt.cc
+	(operator new(std::size_t, const std::nothrow_t&)): Same
+	* libsupc++/new_opv.cc (operator new[](std::size_t)): Same.
+	* libsupc++/new_opvnt.cc
+	(operator new[](std::size_t, const std::nothrow_t&)): Same.
+
+2004-11-02  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int):
+	Evaluate *__beg the exact strict minimum number of times; likewise
+	for __beg != __end; slightly simplify main parsing loop.
+
+2004-11-02  Benjamin Kosnik  
+  	    Lothar Werzinger  
+
+	PR libstdc++/17664
+	* src/debug.cc: Include concurrence, use mutexes.
+	(_Safe_iterator_base::_M_attach): Here.
+	(_Safe_iterator_base::_M_detach): Here.
+
+2004-11-02  Benjamin Kosnik  
+
+	PR libstdc++/17922
+	* include/bits/ios_base.h : Add enum values.
+	* testsuite/testsuite_hooks.h (bitmask_operators): Add function.
+	* testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc: New.
+	* testsuite/27_io/ios_base/types/fmtflags/case_label.cc: New.
+	* testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc: New.
+	* testsuite/27_io/ios_base/types/iostate/case_label.cc: New.
+	* testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc: New.
+	* testsuite/27_io/ios_base/types/openmode/case_label.cc: New.
+	* testsuite/27_io/ios_base/types/seekdir/case_label.cc: New.
+
+	* config/io/c_io_stdio.h (__ios_flags): Mark deprecated.
+	* src/ios.cc: Same.
+
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2004-11-01  Momchil Velikov  
+
+	PR libstdc++/18185
+	* libsupc++/eh_globals.cc (get_globals_dtor): Delete unhandled
+	exceptions.
+	* testsuite/thread/18185.cc: New.
+
+2004-11-01  Chris Jefferson  
+
+	PR libstdc++/18159
+	* include/tr1/tuple (get(pair)): Change occurrences of _I to _Int.
+	(get(const pair)): Likewise.
+
+2004-11-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	Evaluate *__beg the exact strict minimum number of times; likewise
+	for __beg != __end; in the main parsing loop, call ++__beg in two
+	places only. The former is also a correctness issue, because,
+	according to the standard (22.2.2.1.2, Stage 2), 'in' shall be
+	dereferenced only one time for each increment.
+
+2004-10-31  Benjamin Kosnik  
+
+	PR c++/16728
+	* testsuite/23_containers/set/modifiers/16728.cc: New.
+
+2004-10-30  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h (allocate(size_type)): Minor tweak.
+
+	* testsuite/ext/bitmap_allocator/check_delete.cc: New.
+	* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
+
+2004-10-29  Geoffrey Keating  
+
+	* configure.host (darwin*): Set os_include_dir to a separate directory
+	for Darwin.
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add a new C locale kind,
+	'darwin'.
+	* config/locale/darwin/ctype_members.cc: New.
+	* config/os/bsd/darwin/ctype_base.h: New.
+	* config/os/bsd/darwin/ctype_inline.h: New.
+	* config/os/bsd/darwin/ctype_noninline.h: New.
+	* config/os/bsd/darwin/os_defines.h: New.
+
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Only xfail
+	on Linux.
+
+2004-10-29  Chris Jefferson  
+
+	* include/bit/stl_algo.h (find_first_of(,,,,pred)):
+	Remove invalid EqualOpConcept.
+	* testsuite/25_algorithms/find_first_of/concept_check_1.cc: New.
+
+2004-10-29  Benjamin Kosnik  
+
+	* testsuite/testsuite_allocator.h (check_delete): New.
+	(check_new): Simplify.
+	* testsuite/ext/array_allocator/check_delete.cc: New.
+	* testsuite/ext/array_allocator/check_new.cc: Simplify.
+	* testsuite/ext/debug_allocator/check_delete.cc: New.
+	* testsuite/ext/debug_allocator/check_new.cc: Simplify.
+	* testsuite/ext/malloc_allocator/check_delete.cc: New.
+	* testsuite/ext/malloc_allocator/check_new.cc: Simplify.
+	* testsuite/ext/mt_allocator/check_delete.cc: New.
+	* testsuite/ext/mt_allocator/check_new.cc: Simplify.
+	* testsuite/ext/new_allocator/check_delete.cc: New.
+	* testsuite/ext/new_allocator/check_new.cc: Simplify.
+	* testsuite/ext/pool_allocator/check_delete.cc: New.
+	* testsuite/ext/pool_allocator/check_new.cc: Simplify.
+
+2004-10-28  Chris Jefferson  
+
+	PR libstdc++/18159
+	* include/tr1/tuple: Fix, change formatting.
+
+2004-10-28  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h (__common_pool_policy): Add template
+	template parameter for pool class type.
+	(__per_type_pool_policy): Same.
+	(__mt_allocator): Don't inherit policy. Qualify policy_type calls.
+	* testsuite/ext/mt_allocator/check_deallocate_null.cc: Fix.
+	* testsuite/ext/mt_allocator/check_deallocate_null_thread.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/instantiate.cc: Same.
+	* testsuite/ext/mt_allocator/tune-1.cc: Same.
+	* testsuite/ext/mt_allocator/tune-2.cc: Same.
+	* testsuite/ext/mt_allocator/tune-3.cc: Same.
+	* testsuite/ext/mt_allocator/tune-4.cc: Same.
+
+2004-10-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	Cache *__beg in __c when parsing exponent sign too.
+	(num_get<>::do_get(..., bool&)): Cache *__beg.
+	(money_get<>::_M_extract)): Likewise, in money_base::value.
+
+2004-10-27  Paolo Carlini  
+
+	* include/bits/basic_string.h (assign(const basic_string&)):
+	Move out of line...
+	* include/bits/basic_string.tcc: ... here.
+
+2004-10-27  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_replace_aux, _M_replace_safe):
+	Move out of line...
+	* include/bits/basic_string.tcc: ... here.
+
+2004-10-26  Paolo Carlini  
+
+	* include/bits/basic_string.h (append(const basic_string&),
+	append(size_type, _CharT)): Move out of line...
+	* include/bits/basic_string.tcc: ... here.
+
+2004-10-26  Paolo Carlini  
+
+	* include/bits/basic_string.h (erase(size_type, size_type),
+	erase(iterator), erase(iterator, iterator)): Call _M_mutate
+	instead of _M_replace_safe, equivalent when the fourth argument
+	is zero and simpler.
+
+2004-10-26  Benjamin Kosnik  
+
+	* include/ext/array_allocator.h (array::allocate): Check for valid
+	array object, use its size member function directly.
+	* testsuite/ext/array_allocator/3.cc: New.
+	* docs/html/20_util/allocator.html: Add docs.
+
+2004-10-25  Geoffrey Keating  
+
+	* configure.host (darwin*): Build libstdc++ single module
+	and flat namespace.
+	* libsupc++/new_op.cc (new): Make weak.
+	* libsupc++/new_opnt.cc (new): Make weak.
+	* libsupc++/new_opv.cc (new): Make weak.
+	* libsupc++/new_opvnt.cc (new): Make weak.
+	* libsupc++/delete_op.cc (delete): Make weak.
+	* libsupc++/delete_opnt.cc (delete): Make weak.
+	* libsupc++/delete_opv.cc (delete): Make weak.
+	* libsupc++/delete_opvnt.cc (delete): Make weak.
+
+2004-10-25  Benjamin Kosnik  
+
+	* testsuite/Makefile.am (GLIBCXX_INCLUDES): Add.
+	(AUTOMAKE_OPTIONS): Add nostdinc.
+	* testsuite/Makefile.in: Regenerate.
+	* scripts/testsuite_flags.in (build-includes): Remove redundant
+	search for libsupc++.
+	* fragment.am: Clean.
+
+2004-10-25  Benjamin Kosnik  
+
+	* include/Makefile.am (tr1_headers): Add tuple.
+	* include/Makefile.in: Regenerate.
+
+2004-10-25  Chris Jefferson  
+
+        * include/tr1/tuple: Implementation of tuple from library TR.
+	* testsuite/tr1/6_containers/tuple/tuple_element.cc: New.
+	* testsuite/tr1/6_containers/tuple/tuple_size.cc: New.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc:
+	New.
+	* testsuite/tr1/6_containers/tuple/cons/assignment.cc: New.
+	* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: New.
+	* testsuite/tr1/6_containers/tuple/cons/constructor.cc: New.
+	* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
+	New.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: New.
+	* testsuite/tr1/6_containers/tuple/element_access/get.cc: New.
+
+2004-10-25  Paolo Carlini  
+
+	* include/bits/basic_string.h (_Rep::_M_is_safe): Move to
+	basic_string as _M_disjunct, adjust to take only __s.
+	* include/bits/basic_string.tcc: Adjust consistently callers.
+
+2004-10-25  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (assign(const _CharT*, size_type)):
+	Adjust bit missing from the previous commit.
+
+2004-10-25  Eric Botcazou  
+
+	PR other/18138
+	* testsuite/lib/libstdc++.exp: Accept more than one multilib libgcc.
+
+2004-10-25  Paolo Carlini  
+
+	* include/bits/basic_string.h (_Rep::_M_is_safe, _M_check_length,
+	_M_move, _M_copy, _M_assign): New, use througout.
+	(operator+=(_CharT)): Define in terms of push_back.
+	(append(const basic_string&)): Define here, inline, and simplify,
+	don't use the full _M_replace_safe.
+	(append(size_type, _CharT)): Likewise, don't use _M_replace_aux.
+	(push_back): Likewise.
+	(assign(const basic_string&)): Define here, inline.
+	* include/bits/basic_string.tcc (append(const _CharT* s, size_type):
+	Fix: when s points inside the _Rep, upon reallocation (reserve) we
+	were copying from deallocated memory.
+	(append(const basic_string&, size_type, size_type)): Simplify,
+	don't use _M_replace_safe.
+	(replace(size_type, size_type, const _CharT*, size_type)): Slightly
+	tweak.
+	(reserve): Likewise.
+	* testsuite/21_strings/basic_string/append/char/2.cc: New.
+	* testsuite/21_strings/basic_string/append/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/wchar_t/3.cc: Likewise.
+
+	* testsuite/21_strings/basic_string/assign/char/3.cc: Remove junk.
+	* testsuite/21_strings/basic_string/assign/wchar_t/3.cc: Likewise.
+
+2004-10-23  Andrew Pinski  
+
+	* testsuite/ext/mt_allocator/deallocate_global-2.c:
+	s/value_t/value_type/. s/traits_t/traits_type/.
+	s/policy_t/policy_type/. s/allocator_t/allocator_type/.
+	s/string_t/string_type/. s/list_t/list_type/.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Likewise.
+
+2004-10-21  Benjamin Kosnik  
+
+	* include/tr1/array (array): Make safe for zero-sized arrays.
+	(array::end): Return one past the end.
+	(array::at): Use __throw_out_of_range, include functexcept.h.
+	(operator==): Implement.
+	(operator!=): Same.
+	(operator<): Same.
+	(operator>): Same.
+	(operator>=): Same.
+	(operator<=): Same.
+	* testsuite/tr1/6_containers/array/capacity/(empty.cc,
+	max_size.cc, size.cc): New.
+	* testsuite/tr1/6_containers/array/comparison_operators/(equal.cc,
+	greater.cc, greater_or_equal.cc, less.cc, less_or_equal.cc,
+	not_equal): New.
+	* testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
+	New.
+	* testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc:
+	New.
+	* testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc: New.
+	* testsuite/tr1/6_containers/array/requirements/(contiguous.cc,
+	instantiate, typedefs, zero_size_arrays): New.
+
+2004-10-21  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	* include/bits/basic_string.h (_M_set_length_and_sharable): New.
+	* include/bits/basic_string.tcc (_S_construct, assign(const _CharT*,
+	size_type), _M_mutate, _M_clone): Use it.
+	(_Rep::_S_create): Don't set/call _M_length/_M_set_sharable here.
+
+2004-10-21  Paolo Carlini  
+	    Dhruv Matani  
+	    Nathan Myers  
+
+	* include/bits/vector.tcc (_M_insert_aux, _M_fill_insert,
+	_M_range_insert): Check at the outset that we are not trying
+	to exceed max_size, then deal properly with __len overflows.
+	* testsuite/23_containers/vector/modifiers/insert/1.cc: New.
+
+	* testsuite/testsuite_allocator.h: Remove redundant include.
+
+2004-10-20  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h (allocate): Throw std::bad_alloc
+	when n > max_size().
+	* include/ext/malloc_allocator.h (allocate): Likewise.
+	* include/ext/mt_allocator.h (allocate): Likewise.
+	* include/ext/new_allocator.h (allocate): Likewise.
+	* include/ext/array_allocator.h: Use __throw_bad_alloc().
+	* include/ext/pool_allocator.h: Use __builtin_expect.
+	* testsuite/ext/array_allocator/check_allocate_max_size.cc: New.
+	* testsuite/ext/bitmap_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/malloc_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/new_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/pool_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/testsuite_allocator.h (check_allocate_max_size): New test.
+
+2004-10-19  Paolo Carlini  
+
+	* testsuite/performance/20_util/allocator/list_sort_search.cc:
+	Include .
+	* testsuite/performance/20_util/allocator/map_mt_find.cc: Likewise.
+
+2004-10-18  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_M_mutate): Do not reallocate
+	unnecessarily when _M_rep() == &_S_empty_rep() and __new_size
+	== capacity() (== 0): is ok to just leave everything unchanged.
+
+	* include/bits/basic_string.h: Minor formatting fixes.
+	* include/bits/basic_string.tcc: Likewise.
+
+2004-10-17  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h (__pool::_M_get_align): New.
+	(__mt_alloc::allocate): Use it.
+	* src/mt_allocator.cc (__pool::_M_reclaim_block): Use it.
+	(__pool::_M_reserve_block): Simplify block allocation.
+
+2004-10-17  Dhruv Matani  
+	    Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h: Change unsigned int -> size_t: this
+	makes the code 64-bit correct and also fixes (together with using at
+	the beginning a bitmap 2 * size_t bytes wide) alignment issues: now
+	8 is guaranteed, easily tunable to 16 via _BALLOC_ALIGN_BYTES.
+	Fix pthread-rope7.cc fail by nulling out __mini_vector<> destructor.
+	* src/bitmap_allocator.cc: Change to size_t.
+	* config/linker-map.gnu: Adjust.
+
+2004-10-16  Benjamin Kosnik  
+
+	* include/tr1/array: Don't use layout_type.
+
+2004-10-16  Sashan Govender  
+
+	* include/tr1/array (array::end const): Fix casting from iterator
+	to const_iterator.
+
+2004-10-15  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h: Qualify ::operator delete.
+	* src/bitmap_allocator.cc: Likewise.
+	* src/mt_allocator.cc: Use ::operator delete, not delete,
+	consistently with ::operator new.
+
+	* include/ext/bitmap_allocator.h (deallocate): Check for null
+	pointer.
+	* testsuite/ext/bitmap_allocator/check_deallocate_null.cc: New.
+	* testsuite/testsuite_allocator.h (check_deallocate_null): Add test.
+
+2004-10-14  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h (__mt_alloc::deallocate): Check for
+	null pointer.
+	* include/ext/pool_allocator.h (debug_allocator::deallocate):
+	Check pointer value.
+	* include/ext/debug_allocator.h (debug_allocator::deallocate):
+	Throw exceptions, don't abort.
+	* include/ext/array_allocator.h
+	(array_allocator_base::deallocate): Remove unused parameters.
+	* testsuite/testsuite_allocator.h (check_deallocate_null): New.
+	* testsuite/ext/mt_allocator/check_deallocate_null.cc: New.
+	* testsuite/ext/mt_allocator/check_deallocate_null_thread.cc: New.
+	* testsuite/ext/array_allocator/check_deallocate_null.cc: New.
+	* testsuite/ext/debug_allocator/check_deallocate_null.cc: New.
+	* testsuite/ext/malloc_allocator/check_deallocate_null.cc: New.
+	* testsuite/ext/new_allocator/check_deallocate_null.cc: New.
+	* testsuite/ext/pool_allocator/check_deallocate_null.cc: New.
+
+	* testsuite/testsuite_allocator.h (check_new): Add instance argument.
+	* testsuite/ext/array_allocator/check_new.cc: New.
+
+2004-10-14  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h (bitmap_allocator::_Alloc_block):
+	Rename __unused to __M_unused.
+
+2004-10-14  Benjamin Kosnik  
+
+	* testsuite/ext/headers.cc: Add includes, compile only.
+	* testsuite/ext/hash_map.cc: Move to...
+	* testsuite/ext/hash_map/1.cc: ...here.
+	* testsuite/ext/14648.cc: Move to...
+	* testsuite/ext/hash_map/14648.cc: ...here.
+	* testsuite/ext/hash_map/instantiate.cc: Add.
+	* testsuite/ext/hash_set.cc: Move to...
+	* testsuite/ext/hash_set/1.cc: ...here.
+	* testsuite/ext/hash_set_explicit_instantiation.cc: Move to...
+	* testsuite/ext/hash_set/instantiate.cc: ...here.
+	* testsuite/ext/hash_check_construct_destroy.cc: Move to...
+	* testsuite/ext/hash_set/check_construct_destroy.cc: ...here.
+	* testsuite/ext/slist_check_construct_destroy.cc: Move to...
+	* testsuite/ext/slist/check_construct_destroy.cc: ...here.
+	* testsuite/ext/slist_explicit_instantiation.cc: Move to...
+	* testsuite/ext/slist/instantiate.cc: ...here.
+
+2004-10-14  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h: Tweaks.
+	* src/mt_allocator.cc: Same.
+
+2004-10-14  Dhruv Matani  
+
+	* ext/bitmap_allocator.h: Clean-up add/remove functions.
+	* src/bitmap_allocator.cc: New file. Contains the out-of-line
+	function definitions, static initialization of variables, and
+	explicit instantiations needed for the allocator.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+	* config/linker.map.gnu: Add the necessary symbols.
+
+2004-10-13  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_S_create): Use consistently
+	the exponential policy, simplify.
+	* testsuite/performance/21_strings/string_append_2.cc: New.
+
+	* include/ext/array_allocator.h (allocate): Fix bad_alloc check.
+	* testsuite/ext/array_allocator/2.cc: Fix wrt 64-bit archs (in
+	that case sizeof(_Rep) == 24).
+
+2004-10-12  Paolo Carlini  
+
+	PR libstdc++/17948
+	* include/bits/stl_tree.h (erase(iterator, iterator)): Revert
+	wrong commit of 2004-10-07.
+
+2004-10-12  Scott Snyder  
+
+	PR libstdc++/17948
+	* testsuite/23_containers/set/modifiers/17948.cc: New.
+
+2004-10-11  Benjamin Kosnik  
+
+	* include/bits/stl_deque.h: Correct for over-long lines.
+
+2004-10-11  Benjamin Kosnik  
+
+	PR libstdc++/17937
+	* include/ext/mt_allocator.h (__pool::_M_destroy): New.
+	* src/mt_allocator.cc (__pool::~__pool): Change definitions to
+	_M_destroy.
+	* acconfig.h: Remove _GLIBCXX_USE___CXA_ATEXIT.
+	* acinclude.m4 (GLIBCXX_ENABLE_CXA_ATEXIT): Remove.
+	* configure.ac: Remove call to GLIBCXX_ENABLE_CXA_EXIT.
+	* configure: Regenerate.
+	* config/linker-map.gnu: Tweak exports.
+	* docs/html/ext/mt_allocator.html: Update docs.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Fix.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Fix.
+
+2004-10-11  Benjamin Kosnik  
+
+	PR libstdc++/16614 continued.
+	* include/ext/mt_allocator.h
+	(__per_type_pool_policy::_S_get_pool): Use saner defaults based on
+	specific type characteristics.
+	(__pool_base): Add constructor that takes a _Tune argument.
+	(__pool): Same.
+	* testsuite/ext/mt_allocator/tune-2.cc: Adjust default.
+	* testsuite/ext/mt_allocator/tune-4.cc: Same.
+	* testsuite/ext/mt_allocator/tune-3.cc: Same.
+
+2004-10-11  Joachim Kuebart  
+	    Paolo Carlini  
+
+	* src/pool_allocator.cc (__pool_alloc_base::_M_allocate_chunk):
+	Deal properly with exceptions thrown by ::operator new(size_t).
+	* testsuite/ext/pool_allocator/allocate_chunk.cc: New.
+
+	* include/ext/pool_allocator.h: Include .
+
+2004-10-10  Benjamin Kosnik  
+
+	* include/bits/functexcept.h: Add guards.
+
+	* acinclude.m4 (GLIBCXX_ENABLE_THREADS): Tweak test.
+	* configure: Regenerate.
+
+2004-10-10  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc (_S_construct_pattern):
+	Give __ret a default value, thus avoiding spurious warnings.
+
+	* testsuite/performance/27_io/filebuf_sgetn_unbuf.cc: Open either
+	words or linux.words, otherwise exit.
+	* testsuite/performance/27_io/ifstream_getline.cc: Slighlty tweak.
+
+2004-10-09  Paolo Carlini  
+
+	* include/std/std_memory.h (__get_temporary_buffer): Don't use
+	INT_MAX, prefer numeric_limits::max(), ok on 64-bit
+	platforms too.
+	* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust dg-error
+	line numbers.
+
+2004-10-08  Benjamin Kosnik  
+
+	* acconfig.h: Add _GLIBCXX_USE___CXA_ATEXIT.
+	* acinclude.m4 (GLIBCXX_ENABLE_CXA_ATEXIT): New.
+	* configure.ac: Call GLIBCXX_ENABLE_CXA_EXIT.
+	* configure: Regenerate.
+	* src/mt_allocator.cc (__pool::~__pool): Make conditional on
+	_GLIBCXX_USE___CXA_ATEXIT macro.
+	* docs/html/ext/mt_allocator.html: Add note about deallocation.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Guard checks
+	with _GLIBCXX_USE___CXA_ATEXIT.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Same.
+
+2004-10-07  Phil Edwards  
+
+	* testsuite/lib/libstdc++.exp:  Update list of undefined functions.
+
+2004-10-07  Paolo Carlini  
+
+	* include/bits/list.tcc (operator=): Avoid iterator postincrement.
+	* include/bits/stl_tree.h (erase(iterator, iterator)): Likewise.
+
+2004-10-07  Benjamin Kosnik  
+
+	* include/tr1: New.
+	* include/tr1/array: New.
+	* include/Makefile.am (tr1_headers): New.
+	(stamp-tr1): New.
+	(install-headers): New.
+	(allstamped): Add stamp-tr1.
+
+	* include/ext/array_allocator.h: New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* testsuite/ext/array_allocator/1.cc: New.
+	* testsuite/ext/array_allocator/2.cc: New.
+
+2004-10-07  Richard Earnshaw  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_exit): New proc.
+
+2004-10-07  Roger Sayle  
+
+	PR libstdc++/17850
+	* configure.ac: Newlib does not provide strtold.
+	* configure: Regenerate.
+
+2004-10-06  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_THREADS): Set enable_thread.
+	(GLIBCXX_CONFIGURE_TESTSUITE): Use it.
+	* configure: Regenerated.
+	* testsuite/Makefile.am (CLEANFILES): Add TEST for
+	check-performance executables.
+	(stamp_thread): New.
+	(all-local): Use it.
+	* testsuite/Makefile.in: Regenerate.
+	* scripts/create_testsuite_files: Filter thread tests.
+
+	* testsuite/thread/pthread1.cc: Remove macro conditionals: this
+	file will only be run by thread enabled configurations.
+	* testsuite/thread/pthread7-rope.cc: Same, add rope_type typedef.
+	* testsuite/thread/pthread6.cc: Same.
+	* testsuite/thread/pthread5.cc: Same.
+	* testsuite/thread/pthread4.cc: Same.
+	* testsuite/thread/pthread3.cc: Same.
+	* testsuite/thread/pthread2.cc: Same.
+
+	* testsuite/ext/mt_allocator/instantiate.cc: Add in __GTHREADS guard.
+	* testsuite/ext/mt_allocator/deallocate_global-1.cc: Move to...
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: ...here.
+	* testsuite/ext/mt_allocator/deallocate_global-3.cc: Move to...
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: ...here.
+	* testsuite/ext/mt_allocator/deallocate_local-1.cc: Move to...
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: ...here.
+	* testsuite/ext/mt_allocator/deallocate_local-3.cc: Move to...
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: ...here.
+
+2004-10-06  Benjamin Kosnik  
+	    Paolo Carlini  
+
+	PR libstdc++/17780
+	* src/mt_allocator.cc (__pool::_M_reserve_block): Revert
+	to old locking order.
+
+2004-10-06  Paolo Carlini  
+
+	* include/std/std_sstream.h (_M_sync): When the caller is
+	setbuf, don't trust _M_string.capacity() to be the size of
+	the buffer area, use _M_string.size() in this case.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/4.cc: New.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc: Likewise.
+
+	* include/bits/sstream.tcc (overflow): Avoid calling string::assign
+	unnecessarily when the current _M_string is empty.
+
+2004-10-06  Paolo Carlini  
+
+	* include/bits/stl_algo.h (__reverse(bidirectional_iterator_tag)):
+	Avoid iterator postincrement.
+	(__rotate): Likewise.
+
+	* include/bits/stl_algo.h: Minor formatting tweaks.
+
+2004-10-06  Christopher Jefferson 
+
+	* include/bits/stl_algo.h (__reverse(random_access_iterator_tag)):
+	Avoid iterator postincrement; fix swapping middle element with
+	itself on odd-length inputs.
+
+2004-10-05  Benjamin Kosnik  
+
+	PR libstdc++/17780
+	* include/ext/mt_allocator.h (__pool_base::_Tune): Add default
+	options as compile-time constant enums.
+	(__pool_base::_Tune::is_default): New.
+	(__pool_base::_Block_address): New.
+	(__pool_base): Rearrange data members.
+	(__pool::_M_reserve_memory): To _M_reserve_block.
+	(__pool::_M_reclaim_memory): To _M_reclaim_block.
+	(__pool::_Bin_record): Add _Block_address data member.
+	(__pool): Add _M_thread_freelist_initial.
+	(__pool::~__pool): Declare.
+	(__common_pool_policy): Move static data member to...
+	(__common_pool_policy::_S_get_pool): ...here, make static local.
+	(__per_type_pool_policy): Move static data member to...
+	(__per_type_pool_policy::_S_get_pool): ...here, make static local.
+	(__mt_alloc::__mt_alloc): Call __policy_type::_S_get_pool.
+	Remove static member definitions. Use define for __default_policy.
+	* src/mt_allocator.cc: Same.
+	* config/linker-map.gnu: Don't export _S_get_pool. Renames.
+	* testsuite/ext/new_allocator: New.
+	* testsuite/ext/new_allocator/instantiate.cc: New.
+	* testsuite/ext/new_allocator/check_new.cc: New.
+	* testsuite/ext/new_allocator/deallocate_global.cc: New.
+	* testsuite/ext/new_allocator/deallocate_local.cc: New.
+	* testsuite/ext/mt_allocator/instantiate.cc: Instantiate all
+	template arguments.
+	* testsuite/ext/mt_allocator/deallocate_global-1.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_global-3.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local-1.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local-3.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: New.
+	* testsuite/ext/mt_allocator/deallocate.cc: New.
+	* testsuite/ext/malloc_allocator/deallocate.cc: New.
+	* testsuite/ext/malloc_allocator/deallocate_global.cc: New.
+	* testsuite/ext/malloc_allocator/deallocate_local.cc: New.
+
+2004-10-05  Ulrich Weigand  
+
+	* configure.host (abi_baseline_pair): Define for s390-*-linux* and
+	s390x-*-linux*.
+	* config/abi/s390-linux-gnu/baseline_symbols.txt: Add missing symbols.
+	* config/abi/s390x-linux-gnu/baseline_symbols.txt: New file.
+
+2004-10-05  Christopher Jefferson  
+
+	* include/bits/stl_algobase.h (iter_swap): delegate to swap via
+	__iter_swap when iterator's value_types are equal.
+	(struct __iter_swap): New.
+
+2004-10-04  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:3:0.
+	* configure: Regnerate.
+	* testsuite/testsuite_abi.cc (check_version): Add 3.4.3.
+
+2004-10-04  Roger Sayle  
+	    Eric Botcazou  
+
+	PR libstdc++/17505
+	* config/linker-map.gnu: Synchronize the current list of stub
+	functions from libmath.
+
+2004-10-03  Roger Sayle  
+
+	* config/locale/generic/c_locale.cc (__convert_to_v): Use
+	_GLIBCXX_HAVE_STRTOF instead _GLIBCXX_USE_C99 to check for strtof.
+	Likewise, use _GLIBCXX_HAVE_STRTOLD instead of _GLIBCXX_USE_C99
+	to check for presence of strtold.
+
+2004-10-03  Paolo Carlini  
+
+	* include/bits/stl_list.h: Trivial formatting fixes.
+	* include/bits/stl_tree.h: Likewise.
+
+2004-10-03  Paolo Carlini  
+
+	* include/bits/sstream.tcc (seekpos): In case of success, just
+	return __sp.
+
+2004-10-01  Paolo Carlini  
+
+	* include/bits/sstream.tcc (pbackfail): Implement correctly
+	27.7.1.3/2, bullet 2: if mode & ios_base::out is false do not
+	write in the buffer.
+	* testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc: New.
+	* testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/putback/char/1.cc: Tweak consistently.
+
+2004-10-01  Paolo Carlini  
+
+	* include/bits/sstream.tcc (seekpos): Minor rearrangement of two
+	conditionals consistently with seekoff.
+	* include/std/std_sstream.h (setbuf): Avoid a string temporary.
+	(_M_sync): Simplify a bit, clean-up comment.
+
+2004-09-30  Paolo Carlini  
+
+	PR libstdc++/10975 (DR 453)
+	* include/bits/sstream.tcc (seekoff): Don't fail if __beg == 0
+	and __off == 0.
+	* docs/html/ext/howto.html: Add an entry for DR 453.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc: New.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/1.cc: Tweak consistently.
+	* testsuite/27_io/basic_ostream/tellp/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/2346-fstream.cc: Fix and
+	move to...
+	* testsuite/27_io/basic_istream/seekp/char/2346-fstream.cc: ... here.
+	* testsuite/27_io/basic_istream/seekg/char/2346-sstream.cc: Fix and
+	move to...
+	* testsuite/27_io/basic_istream/seekp/char/2346-sstream.cc: ... here.
+
+2004-09-29  Paolo Carlini  
+
+	* include/std/std_sstream.h (basic_stringbuf(ios_base::openmode)):
+	Don't use _M_stringbuf_init, keep the pointers null, per 27.7.1.1.
+	(str()): Slightly tweak, protect from pptr() == 0.
+	(_M_update_egptr()): Likewise.
+	* include/bits/sstream.tcc (ssekoff, seekpos): In order to check
+	for an empty buffer use __beg instead of _M_string.capacity().
+	* testsuite/27_io/basic_stringbuf/cons/char/1.cc: New.
+	* testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc: Likewise.
+
+	* testsuite/27_io/basic_filebuf/cons/char/1.cc: New.
+	* testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/cons/char/1.cc: Update.
+	* testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc: Likewise.
+
+2004-09-29  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	* testsuite/testsuite_io.h (class constraint_buf): New, extended
+	and templatized version of constraint_filebuf; add typedefs for
+	streambuf/stringbuf/filebuf and wchar_t counterparts.
+
+2004-09-28  Paolo Carlini  
+
+	PR libstdc++/16612
+	* include/bits/basic_string.h (_M_dispose, _M_refcopy,
+	basic_string()): When _GLIBCXX_FULLY_DYNAMIC_STRING is defined,
+	don't deal with _S_empty_rep.
+	* include/bits/basic_string.tcc (_S_construct, _M_destroy,
+	_M_leak_hard, _M_mutate): Likewise.
+	* acinclude.m4 (GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING): New.
+	* acconfig.h: Add corresponding undef.
+	* configure.ac: Use GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING.
+	* docs/html/configopts.html: Document --enable-fully-dynamic-string.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2004-09-28  Benjamin Kosnik  
+            Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/operations/char/1.cc: New.
+	* testsuite/21_strings/basic_string/operations/wchar_t/1.cc: New.
+	* testsuite/21_strings/basic_string/element_access/char/empty.cc: New.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc:
+	New.
+
+2004-09-28  Paolo Carlini  
+
+	* README: Remove obsolete entry about include/c_shadow.
+
+2004-09-24  H.J. Lu  
+
+	PR libstdc++/17469
+	* testsuite/lib/libstdc++.exp: Don't use global ld_library_path.
+
+2004-09-24  Paolo Carlini  
+
+	* src/localename.cc (locale::locale(const char*)): Minor tweaks:
+	rename a variable, move an assignment.
+	(locale::_Impl::_Impl(const char*, size_t)): Likewise, minor tweak.
+
+2004-09-24  Paul Brook  
+
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: XFAIL more arm
+	simulator targets.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Ditto.
+	* testsuite/27_io/basic_istream/readsome/char/6746-2.cc: Ditto.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Ditto.
+	* testsuite/ext/stdio_filebuf/char/10063-3.cc: Ditto.
+
+2004-09-23  Zack Weinberg  
+
+	* testsuite/20_util/memory/auto_ptr/assign_neg.cc
+	* testsuite/23_containers/map/operators/1_neg.cc
+	* testsuite/23_containers/set/operators/1_neg.cc:
+	Update locations and/or regexps of dg-error markers.
+
+2004-09-23  P.J. Darcy  
+
+	* include/Makefile.am (thread_host_headers): Add gthr-tpf.h.
+	Add rule to build ${host_builddir}/gthr-tpf.h.
+	* include/Makefile.in: Regenerate.
+
+2004-09-23  Paolo Carlini  
+	    Magnus Fromreide  
+
+	* include/bits/boost_concept_check.h (struct _SequenceConcept):
+	Remove wrong requirement, i.e., not present in Table 67.
+
+2004-09-21  Paolo Carlini  
+
+	PR libstdc++/12882 (cont)
+	* acinclude.m4 (GLIBCXX_CHECK_LFS): Check for fstat64 too.
+	* configure: Regenerate.
+	* config/io/basic_file_stdio.cc (__basic_file<>::showmanyc): When
+	_GLIBCXX_USE_LFS use fstat64 and lseek64, thus providing a non
+	trivial showmanyc for large files too.
+
+2004-09-17  Jonathan Wakely  
+
+	* include/bits/stl_algo.h (remove): Remove too restrictive
+	concept-check.
+
+2004-09-17  Paolo Carlini  
+
+	* include/bits/fstream.tcc (xsgetn): Slightly tweak conditional,
+	as per Nathan's original suggestion.
+
+2004-09-17  Paolo Carlini  
+
+	* testsuite/ext/mt_allocator/tune-1.cc: Use VERIFY, clean
+	up a bit.
+	* testsuite/ext/mt_allocator/tune-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-4.cc: Likewise.
+
+2004-09-17  Paolo Carlini  
+	    Andrea Arcangeli  
+
+	* config/io/basic_file_stdio.cc (__basic_file<>::close)): Don't
+	call unnecessarily sync, that is fflush: the library, since 3.4.0
+	does not use buffered fread/fwrite.
+	* include/bits/fstream.tcc (basic_filebuf<>::overflow): Likewise.
+
+2004-09-15  Mark Mitchell  
+
+	* config/cpu/arm/cxxabi_tweaks.h (__cxa_cdtor_return_type):
+	Define.
+	* config/cpu/generic/cxxabi_tweaks.h (__cxa_cdtor_return_type):
+	Define.
+	* libsupc++/cxxabi.h (__cxa_cdtor_return_type): New type.
+	(__cxa_vec_new): Use it.
+	(__cxa_vec_new2): Likewise.
+	(__cxa_vec_new3): Likewise.
+	(__cxa_vec_cdtor): Likewise.
+	(__cxa_vec_cctor): Likeiwse.
+	(__cxa_vec_dtor): Likewise.
+	(__cxa_vec_cleanup): Likewise.
+	(__cxa_vec_delete2): Likewise.
+	(__cxa_vec_delete3): Likewise.
+	* libsupc++/vec.cc (__cxa_vec_new): Likewise.
+	(__cxa_vec_new2): Likewise.
+	(__cxa_vec_new3): Likewise.
+	(__cxa_vec_cdtor): Likewise.
+	(__cxa_vec_cctor): Likeiwse.
+	(__cxa_vec_dtor): Likewise.
+	(__cxa_vec_cleanup): Likewise.
+	(__cxa_vec_delete2): Likewise.
+	(__cxa_vec_delete3): Likewise.
+	(__aeabi_vec_ctor_nocookie_nodtor): New function.
+	(__aeabi_vec_ctor_cookie_nodtor): Likewise.
+	(__aeabi_vec_cctor_nocookie_nodtor): Likewise.
+	(__aeabi_vec_new_cookie_noctor): Likewise.
+	(__aeabi_vec_new_nocookie): Likewise.
+	(__aeabi_vec_new_cookie_nodtor): Likewise.
+	(__aeabi_vec_new_cookie): Likewise.
+	(__aeabi_vec_dtor): Likewise.
+	(__aeabi_vec_dtor_cookie): Likewise.
+	(__aeabi_vec_delete): Likewise.
+	(__aeabi_vec_delete3): Likewise.
+	(__aeabi_vec_delete3_nodtor): Likewise.
+	(__aeabi_atexit): Likewise.
+
+2004-09-14  Nathan Myers  
+
+	* include/bits/fstream.tcc (xsgetn): Slightly tweak the recent fix
+	for 11722: copy can replace move; the common case is __avail == 0.
+
+2004-09-14  Paolo Carlini  
+
+	* include/bits/cpp_type_traits.h: Rename __is_trivially_copyable
+	to __is_scalar, more clear and consistent with "tr1" naming.
+	* include/bits/stl_algobase.h: Update consistently throughout.
+
+2004-09-13  Paolo Carlini  
+
+	PR libstdc++/11722
+	* include/std/std_fstream.h (xsgetn): Declare only.
+	* include/bits/fstream.tcc (xsgetn): Define, optimize for the
+	always_noconv() case: when __n > __buflen, copy the available
+	buffer and issue a direct read.
+	* testsuite/performance/27_io/filebuf_sgetn_unbuf.cc: New.
+
+	* include/bits/fstream.tcc (xsputn): Minor tweak, reorder a
+	conditional.
+
+2004-09-13  Hans-Peter Nilsson  
+
+	* testsuite/lib/libstdc++.exp: Use gcc wrapper.exp and call
+	libstdc++_maybe_build_wrapper instead of using local code.
+
+2004-09-08  Benjamin Kosnik  
+
+	* config/linker-map.gnu (GLIBCXX_3.4.3): New, adjust symbol exports.
+
+2004-09-03  Jan Beulich  
+
+	* crossconfig.m4: Add NetWare as a target.
+	* configure: Regenerate.
+
+2004-09-02  Mark Mitchell  
+
+	* libsupc++/typeinfo: Honor __GXX_MERGED_TYPEINFO_NAMES if already
+	defined.
+
+2004-09-02  Benjamin Kosnik  
+	    Simon Richter  
+
+	PR libstdc++/16715
+	* include/bits/istream.tcc: Add extern template for iostream
+	char and wchar_t instantiations.
+
+2004-09-02  Benjamin Kosnik  
+	    Leland Wang  
+
+	PR libstdc++/17259
+	* include/ext/ropeimpl.h (rope::_S_compare): Use
+	_Rope_constants::_S_leaf.
+
+2004-09-02  Benjamin Kosnik  
+
+	PR libstdc++/16848
+	* include/Makefile.am (ext_headers): Remove demangle.h.
+	* include/Makefile.in: Regenerate.
+	* include/ext/demangle.h: Remove.
+
+2004-09-01  Benjamin Kosnik  
+
+	PR libstdc++/16614
+	* include/ext/mt_allocator.h (__mt_base): Not type dependent,
+	split into..
+	(__pool): New, specialize.
+	(__common_pool): New, static bits here.
+	(__per_type_pool): New, and here.
+	(__mt_alloc_base): New.
+	(__mt_alloc): Add template parameter, inherit from it.
+	* src/allocator.cc: Split this...
+	* src/allocator-inst.cc: And this...
+	* src/pool_allocator.cc: ...into this.
+	* src/mt_allocator.cc: ... and this. Add definitions for
+	__mt_base.
+	* src/Makefile.am (sources): Split allocator.cc to
+	pool_allocator.cc and mt_allocator.cc.
+	* src/Makefile.in: Regenerate.
+	* config/linker-map.gnu: Add symbols.
+	* docs/html/ext/mt_allocator.html: Document new design.
+	* testsuite/ext/mt_allocator/tune-1.cc: New.
+	* testsuite/ext/mt_allocator/tune-2.cc: New.
+	* testsuite/ext/mt_allocator/tune-3.cc: New.
+	* testsuite/ext/mt_allocator/tune-4.cc: New.
+
+	* testsuite/testsuite_allocator.h (__gnu_test::check_new): New.
+	* testsuite/ext/allocators.cc: Use check_new, split into...
+	* testsuite/ext/mt_allocator/check_new.cc: this.
+	* testsuite/ext/pool_allocator/check_new.cc: this.
+	* testsuite/ext/malloc_allocator/check_new.cc: this.
+	* testsuite/ext/debug_allocator/check_new.cc: this.
+	* testsuite/ext/mt_allocator/instantiate.cc: this.
+	* testsuite/ext/pool_allocator/instantiate.cc: this.
+	* testsuite/ext/malloc_allocator/instantiate.cc: this.
+	* testsuite/ext/debug_allocator/instantiate.cc: this.
+
+2004-08-30  Phil Edwards  
+
+	* docs/html/install.html:  Update locales list (from Paolo).
+	Remove other redundant information and point to the GCC install
+	documentation.
+
+2004-08-30  Benjamin Kosnik  
+
+	* include/ext/pool_allocator.h: Rename __pool_base to
+	__pool_alloc_base.
+	* src/allocator.cc: Same.
+	* config/linker-map.gnu: Same.
+
+2004-08-30  Paolo Carlini  
+	    Kenneth C. Schalk  
+
+	PR libstdc++/17215
+	* config/io/basic_file_stdio.cc (__basic_file::close()):
+	Check the return value of fclose/sync, loop on EINTR.
+	(__basic_file::sys_open): Likewise, for sync.
+
+2004-08-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get<>::_M_extract_via_format,
+	case 'S'): Allow for at least one leap-second (as per C99, 7.23.1
+	and 7.23.3.5), two if !_GLIBCXX_USE_C99.
+	* testsuite/22_locale/time_get/get_time/char/4.cc: New.
+	* testsuite/22_locale/time_get/get_time/wchar_t/4.cc: Likewise.
+
+2004-08-27  Jason Merrill  
+
+	PR c++/13684
+	* libsupc++/guard.cc (static_mutex): Internal class implementing a
+	recursive mutex which controls initialization of local statics.
+	(__gnu_cxx::recursive_init): New exception class.
+	(__cxa_guard_acquire): Deal with locking and recursion detection.
+	(acquire_1, __cxa_guard_abort, __cxa_guard_release): Likewise.
+
+2004-08-27  Matthias Klose  
+
+	* configure.host: For mips*-*-linux* update cpu_include_dir
+	after atomicity_dir is set.
+
+2004-08-27  Matthias Klose  
+
+	* config/abi/arm-linux-gnu/baseline_symbols.txt: New.
+	* config/abi/mips-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+	* configure.host: Set abi_baseline_pair for arm*-*-linux* and
+	mips*-*-linux*.
+
+2004-08-27  Paolo Carlini  
+
+	* testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc: New.
+	* testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/manipulators/basefield/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/wchar_t/2.cc: Likewise.
+
+	* testsuite/27_io/manipulators/adjustfield/char/1.cc: Minor
+	formatting fixes.
+	* testsuite/27_io/manipulators/adjustfield/char/2.cc: Likewise.
+	* testsuite/27_io/manipulators/basefield/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/char/2.cc: Likewise.
+
+2004-08-25  Paolo Carlini  
+
+	PR libstdc++/17038 (partial)
+	* include/bits/locale_facets.tcc (time_put<>::do_put): Increase
+	__maxlen to 128.
+	* include/bits/locale_facets.h (class __timepunct): Add FIXME
+	comment about _M_put.
+	* config/locale/generic/time_members.cc (_M_put): Always null
+	terminate __s.
+	* config/locale/gnu/time_members.cc (_M_put): Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: New.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: New.
+
+2004-08-24  Paolo Carlini  
+
+	* testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc: New.
+	* testsuite/27_io/basic_istringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc: Likewise.
+
+	* testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc: Trim excess
+	newlines.
+	* testsuite/27_io/basic_istringstream/str/char/1.cc: Likewise.
+
+2004-08-22  Matthias Klose  
+
+	* config/abi/m68k-linux-gnu/baseline_symbols.txt: New.
+	* config/abi/sparc-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+
+2004-08-23  Paolo Carlini  
+
+	* configure.ac: Specify version 1.9.1 in AM_INIT_AUTOMAKE.
+	* aclocal.m4: Regenerate with automake-1.9.1.
+	* configure: Regenerate.
+	* Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2004-08-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put<>::do_put(bool)): Cast
+	to a signed type, long according to the resolution of DR 359.
+	* testsuite/22_locale/num_put/put/char/9.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/9.cc: New.
+
+	* include/bits/locale_facets.tcc (num_put<>::do_put(const void*)):
+	Simplify a bit: no need to clear showpos.
+
+2004-08-21  Paolo Carlini  
+
+	* include/bits/char_traits.h (struct _Char_traits_match): Remove,
+	unused.
+
+2004-08-21  Paolo Carlini  
+
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Use proper
+	wchar_t	type for the fill argument; minor formatting tweaks.
+	* testsuite/22_locale/money_put/put/wchar_t/12971.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/6.cc: Likewise.
+
+2004-08-21  Paolo Carlini  
+
+	* include/bits/basic_ios.tcc (basic_ios<>::copyfmt): Don't deal
+	with _M_word != _M_local_word two times, redundantly.
+
+2004-08-20  Jason Merrill  
+
+	* include/Makefile.am (${host_builddir}/gthr.h): Don't add
+	_GLIBCXX_ to #pragma lines.
+	* include/Makefile.in: Update.
+
+2004-08-20  Paolo Carlini  
+
+	PR libstdc++/7219 (continued)
+	* include/bits/ios_base.h (class ios_base): Expose Annex D.6
+	typedefs by default.
+	* testsuite/27_io/types/1.cc: Remove #if _GLIBCXX_DEPRECATED.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Tweak dg-error
+	line number.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2004-08-20  John David Anglin  
+
+	* cpu/hppa/atomicity.h (__exchange_and_add, __atomic_add): Add memory
+	barrier to locking asm.
+
+2004-08-20  Paolo Carlini  
+
+	* include/c_std/cmath.tcc (__cmath_power): Revert previous commit:
+	actually the warning is a front-end bug (c++/17120).
+
+2004-08-20  Matthias Klose  
+
+	* config/abi/s390-linux-gnu/baseline_symbols.txt: New.
+
+2004-08-20  Paolo Carlini  
+
+	* include/c_std/cmath.tcc (__cmath_power): Suppress assignment
+	used as truth value warning.
+
+2004-08-20  Paolo Carlini  
+
+	* config/abi/x86_64-linux-gnu/32/baseline_symbols.txt: Add 32 bit
+	baseline.
+
+2004-08-20  Paolo Carlini  
+
+	* config/abi/x86_64-linux-gnu/baseline_symbols.txt: Fix it.
+
+2004-08-19  Benjamin Kosnik  
+
+	* testsuite/22_locale/time_put/put/char/3.cc (test03): Don't check
+	timezone.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc (test03): Same.
+
+2004-08-19  Paolo Carlini  
+
+	* testsuite/performance/20_util/allocator/insert.cc: For std::map
+	instantiate the allocator for a correct pair type.
+	* testsuite/performance/20_util/allocator/insert_insert.cc: Likewise.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Likewise.
+	* testsuite/performance/20_util/allocator/producer_consumer.cc:
+	Likewise.
+
+	* testsuite/performance/20_util/allocator/list_sort_search.cc: Very
+	minor formatting fixes.
+	* testsuite/performance/20_util/allocator/map_mt_find.cc: Likewise.
+
+2004-08-19  Paolo Carlini  
+
+	* testsuite/22_locale/time_put/put/char/1.cc: Add VERIFY on the
+	results.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+
+2004-08-19  Paolo Carlini  
+
+	* config/abi/x86_64-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+
+2004-08-18  Matthias Klose  
+
+	* config/abi/hppa-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+	* config/abi/i386-linux-gnu/baseline_symbols.txt: New.
+	* config/abi/powerpc-linux-gnu/baseline_symbols.txt: New.
+
+2004-08-17  Paolo Carlini  
+
+	* config/abi/alpha-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+
+2004-08-17  Paolo Carlini  
+
+	* config/abi/ia64-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+
+2004-08-17  Benjamin Kosnik  
+
+	* config/abi/i486-linux-gnu/baseline_symbols.txt: Update to 3.4.0.
+
+2004-08-16  Paolo Carlini  
+
+	* include/bits/indirect_array.h: Trivial formatting fixes.
+	* include/bits/valarray_after.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* src/valarray-inst.cc: Likewise.
+
+2004-08-15  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc: Remove junk.
+	* testsuite/27_io/basic_stringstream/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/char/3.cc: Likewise.
+
+	* testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc: New.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/4.cc: Likewise.
+
+2004-08-15  Paolo Carlini  
+
+	* include/bits/deque.tcc: Trivial formatting fixes.
+
+2004-08-15  Paolo Carlini  
+
+	* include/bits/deque.tcc: Trivial formatting fixes.
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(&bool)):
+	Remove unneded typedef.
+
+	* include/bits/locale_facets.tcc: Very minor tweaks.
+
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Use proper
+	type for the fill argument.
+	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+
+2004-08-13  Paolo Carlini  
+
+	* src/debug.cc (_Error_formatter::_M_print_string): Fix thinko,
+	memmove is not needed, memcpy suffices.
+
+2004-08-13  Paolo Carlini  
+
+	* include/std/std_fstream.h (class basic_ifstream,
+	class basic_ofstream, class basic_fstream): Add const overloads
+	of is_open, as per DR 365 [WP].
+	* docs/html/ext/howto.html: Add an entry for DR 365.
+
+2004-08-12  Paolo Carlini  
+
+	* configure.ac: Specify version 1.8.5 in AM_INIT_AUTOMAKE.
+
+2004-08-12  Paolo Carlini  
+
+	PR libstdc++/16956
+	* include/bits/sstream.tcc (basic_stringbuf<>::seekoff): Add __off
+	to the returned value, reorganize a bit.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc: New.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc: New.
+
+	* testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Remove junk.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc: Likewise.
+
+2004-08-12  Paul Brook  
+
+	* config/cpu/arm/cxxabi_tweaks.h: Define __cxa_vec_ctor_return and
+	_GLIBCXX_CXA_VEC_CTOR_RETURN.
+	* config/cpu/generic/cxxabi_tweaks.h: Ditto.
+	* libsupc++/cxxabi.h (__cxa_vec_ctor, __cxa_vec_cctor): Use
+	__cxa_vec_ctor_return.
+	* libsupc++/vec.cc (__cxa_vec_ctor, __cxa_vec_cctor): Ditto.
+	Use _GLIBCXX_CXA_VEC_CTOR_RETURN.
+
+2004-08-12  Kelley Cook  
+
+	* Makefile.in, aclocal.m4, configure, include/Makefile.in,
+	libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
+	src/Makefile.in, testsuite/Makefile.in: Regenerate
+
+2004-08-12  Jan Beulich  
+
+	* config/locale/generic/ctype_members.cc
+	(ctype::_M_convert_to_wmask): Default case must not use 0 as
+	initializer for return value, as that is invalid for enumerated	types.
+	* config/locale/gnu/ctype_members.cc
+	(ctype::_M_convert_to_wmask): Likewise.
+
+2004-08-11  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc: Fix typo.
+
+2004-08-11  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringbuf/imbue/char/1.cc: Declare test
+	variable.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/in_avail/char/1.cc: Remove junk.
+	* testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sgetc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sgetn/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/snextc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputn/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Ditto.
+	* testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Ditto.
+
+2004-08-11  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/16959
+	* src/ios_init.cc (ios_base::sync_with_stdio): Make sure the
+	standard streams are constructed.
+	* testsuite/27_io/ios_base/sync_with_stdio/16959.cc: New.
+
+2004-08-09  Paolo Carlini  
+
+	* include/bits/stl_bvector.h: Trivial formatting fixes.
+
+2004-08-09  Paolo Carlini  
+
+	* src/ios.cc (ios_base::_M_grow_words): Uglify the names.
+
+2004-08-07  Jonathan Wakely  
+	    Paolo Carlini  
+
+	* src/debug.cc (_Error_formatter::_M_print_string): In order
+	to print individual words from __string, _M_format_word can't
+	be called since may be just sprintf, thus ignoring completely
+	__n: instead, use memmove and append '\0' by hand.
+
+2004-08-07  Paolo Carlini  
+
+	* config/locale/generic/c_locale.h (__convert_from_v): Don't
+	use a default for __prec, assume __prec >= 0 and simplify.
+	* config/locale/gnu/c_locale.h (__convert_from_v): Likewise.
+	* include/bits/locale_facets.tcc (money_put<>::do_put(long double)):
+	Pass format "%.*Lf" + precision == 0, equivalent to "%.0Lf".
+
+2004-08-04  Phil Edwards  
+
+	* docs/html/configopts.html:  Emphasize that options change.
+	* docs/html/17_intro/configury.html:  Update links.
+
+2004-08-03  Paolo Carlini  
+
+	* include/bits/list.tcc: Trivial formatting fixes.
+
+2004-08-03  Mark Mitchell  
+
+	* libsupc++/new_op.cc: Update comments.
+	* libsupc++/del_op.cc: Likewise.
+
+2004-08-02  Mark Mitchell  
+
+	* libsupc++/cxxabi.h: Make all declarations have default
+	visibility.
+	* libsupc++/exception: Likewise.
+	* libsupc++/new: Likewise.
+	* libsupc++/typeinfo: Likewise.
+	* libsupc++/unwind-cxx.h: Likewise.
+	* libsupc++/eh_alloc.cc (__cxa_allocate_exception): Put it into
+	the __cxxabiv1 namespace.
+	(__cxa_free_exception): Likewise.
+	* libsupc++/eh_aux_runtime.cc (__cxa_bad_cast): Likewise.
+	(__cxa_bad_typeid): Likewise.
+	* libsupc++/eh_catch.cc (__cxa_begin_catch): Likewise.
+	(__cxa_end_catch): Likewise.
+	* libsupc++/eh_globals.cc (__cxa_get_globals_fast): Likewise.
+	(__cxa_get_globals): Likewise.
+	* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
+	(__cxa_rethrow): Likewise.
+	* libsupc++/pure.cc (__cxa_pure_virtual): Likewise.
+	* libsupc++/eh_type.cc: Include .
+
+	* Makefile.am (hosted_source): Add libmath and testsuite.
+	(SUBDIRS): Remove them.
+	* acinclude.m4: (GLIBCXX_ENABLED_HOSTED): Default to freestanding
+	on arm*-*-symbianelf*.
+	* crossconfig.m4: Add arm*-*-symbianelf* support.
+	* include/c_std/std/std_cstdlib.h (stdlib.h): Do not include it
+	when freestanding.  Do not bring names into std:: namespace with
+	"using" when freestanding.  Declare required functions and macros
+	when freestanding.
+	* libsupc++/Makefile.am (c_sources): Do not include cp-demangle.c
+	when freestanding.
+	* libsupc++/del_op.cc: Declare "free" only when freestanding.
+	* libsupc++/eh_alloc.cc (cstring): Include it only when hosted.
+	(malloc): Declare when freestanding.
+	(free): Likewise.
+	(memset): Likewise.
+	(__cxa_allocate_exception): Call malloc, not std::malloc.  Likewise
+	for memset.
+	(__cxa_free_exception): Likewise for free.
+	* libsupc++/new_op.cc: Declare "malloc" when freestanding.
+	* libsupc++/pure.cc (writestr): Define to nothing when
+	freestanding.
+	* libsupc++/vterminate.cc: Do not define anything when
+	freestanding.
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Likewise.
+	* configure: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2004-08-01  Matt Austern  
+
+	PR libstdc++/16844
+	* include/bits/stl_list.h (_M_create_node): Remove unused
+	zero-argument version.
+	* include/ext/slist (_M_create_node): Pass two arguments to
+	allocator's construct() member function.
+	* testsuite/23_containers/deque/explicit_instantiation.cc: New.
+	* testsuite/23_containers/list/explicit_instantiation.cc: New.
+	* testsuite/23_containers/vector/explicit_instantiation.cc: New.
+	* testsuite/23_containers/map/explicit_instantiation.cc: New.
+	* testsuite/23_containers/set/explicit_instantiation.cc: New.
+	* testsuite/23_containers/multimap/explicit_instantiation.cc: New.
+	* testsuite/23_containers/multiset/explicit_instantiation.cc: New.
+	* testsuite/ext/hash_set_explicit_instantiation.cc: New.
+	* testsuite/ext/slist_explicit_instantiation.cc: New.
+
+2004-07-30  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+	num_get<>::_M_extract_int): In the main parsing loop delay the
+	life of __q to the actual use point.
+
+2004-07-29  Paolo Carlini  
+
+	PR libstdc++/14220
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
+	Don't clip the precision passed down to __convert_from_v:
+	22.2.2.2.2 nowhere says so.
+	* testsuite/22_locale/num_put/put/char/14220.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/14220.c: Likewise.
+
+2004-07-29  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 31.
+
+2004-07-29  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/12658 (continued)
+	* src/locale_init.cc (locale::locale, locale::global): Use
+	a single locale_mutex instead of two separate mutexes.
+
+2004-07-29  Paolo Carlini  
+
+	PR libstdc++/16813
+	* include/debug/map.h (insert(_InputIterator, _InputIterator)):
+	Fix typo.
+	* testsuite/23_containers/map/insert/16813.cc: New.
+
+2004-07-29  Phil Edwards  
+
+	* docs/html/faq/index.html:  Update version references.  Make
+	clear that code from SGI has diverged greatly.  Remove references
+	to library snapshots and what's-new sections.
+	* docs/html/faq/index.txt:  Regenerate.
+
+2004-07-28  Matt Austern  
+
+	* include/bits/stl_construct.h (_Destroy): New three-argument
+	overload that takes an allocator argument.  Another inline
+	three-argument overload that takes std::allocator and dispatches
+	to the two-argument version.
+	* include/bits/stl_uninitialized.h (__uninitialized_fill_n_aux):
+	Change return type to void to match uninitialized_fill_n.
+	(__uninitialized_copy_a_): New function.  Like uninitialized_copy
+	except that it takes an allocator and uses it for construct and
+	destroy.  If the allocator is std::allocator, dispatches to
+	uninitialized_copy.
+	(__uninitialized_fill_a): Likewise.
+	(__uninitialized_fill_n_a): Likewise.
+	(__uninitialized_copy_copy): Give it an allocator argument.
+	(__uninitialized_fill_copy): Likewise.
+	(__uninitialized_copy_fill): Likewise.
+	* include/bits/deque.tcc: Use new forms defined in stl_construct.h
+	and stl_uninitialized.h.  Replace use of single-argument _Construct
+	and _Destroy with use of allocator's construct and destroy methods.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/ext/hashtable.h: Use rebind so that allocator_type
+	has correct type for a container's allocator.  Replace use of
+	single-argument _Construct and _Destroy with use of allocator's
+	construct and destroy methods.
+	* include/ext/memory (__uninitialized_copy_n_a): New function.
+	Like uninitialized_copy_n except that it takes an extra parameter,
+	an allocator, and uses it for construct and destroy operations.
+	* include/ext/rope: Use new forms defined in stl_construct.h,
+	stl_uninitialized.h, and ext/memory.  Replace use of single-argument
+	_Construct and _Destroy with allocator construct and destroy methods.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/ext/slist.h: Likewise.
+	* testsuite/testsuite_allocator.h (check_construct_destroy): New.
+	* testsuite/testsuite_allocator.cc (check_construct_destroy): New.
+	* testsuite/23_containers/deque/check_construct_destroy.cc: New.
+	* testsuite/23_containers/list/check_construct_destroy.cc: New.
+	* testsuite/23_containers/set/check_construct_destroy.cc: New.
+	* testsuite/23_containers/vector/check_construct_destroy.cc: New.
+	* testsuite/ext/hash_check_construct_destroy.cc: New.
+	* testsuite/ext/slist_check_construct_destroy.cc: New.
+
+2004-07-28  Alexandre Oliva  
+
+	2003-10-01  Eric Christopher  
+	* config/cpu/sh/atomicity.h (__exchange_and_add): Remove 'm'
+	constraint.
+	2003-07-09  Alexandre Oliva  
+	* config/cpu/sh/atomicity.h: New.  Use movli and movco on SH4a.
+
+2004-07-23  Benjamin Kosnik  
+
+	PR libstdc++/16678
+	* include/bits/locale_facets.tcc: Fix for -Werror.
+
+2004-07-23  Jonathan Wakely  
+
+	* docs/html/debug.html: Say debug mode only available since 3.4.0.
+
+2004-07-21  Benjamin Kosnik  
+
+	* docs/doxygen/mainpage.html: Clarify links.
+	* docs/doxygen/stdheader.cc: Add files.
+	* docs/doxygen/style.css: Remove bolds, add h2, h3 styles.
+	* docs/doxygen/user.cfg.in: New options, wrap.
+
+2004-07-20  Danny Smith  
+
+	* include/c_std/std_cwchar.h (wcsstr): Correct signature.
+
+2004-07-19  Benjamin Kosnik  
+
+	PR libstdc++/15488
+	* testsuite/lib/libstdc++.exp (v3-copy-files): Revert.
+
+2004-07-17  Richard Sandiford  
+
+	PR bootstrap/16469
+	* scripts/create_testsuite_files: Pass -print to find.
+
+2004-07-15  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 30.
+	* docs/html/ext/howto.html: Tweak entries for DRs 167/253/389/402.
+
+2004-07-15  Jakub Jelinek  
+
+	PR libstdc++/14697
+	* acinclude.m4 (glibcxx_shared_libgcc): Correct
+	glibcxx_shared_libgcc test for multilibs.
+	* configure: Rebuilt.
+
+2004-07-14  Paolo Carlini  
+
+	PR libstdc++/16505
+	* include/bits/stl_uninitialized.h (uninitialized_fill_n): Fix
+	the signature to return void, as per 20.4.4.3.
+	* include/bits/stl_vector.h (vector::vector(size_type,
+	const value_type&, const allocator_type&), vector::vector(size_type),
+	vector::_M_initialize_dispatch): Adjust callers.
+	* include/bits/vector.tcc (vector<>::_M_fill_assign,
+	vector<>::_M_fill_insert): Likewise.
+	* testsuite/20_util/memory/16505.cc: New.
+
+2004-07-14  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc,
+	12658_thread-2.cc: Use __gnu_test::try_named_locale.
+
+2004-07-13  Benjamin Kosnik  
+
+	* docs/html/ext/mt_allocator.html: Add docs for _Tune.
+	* include/ext/mt_allocator.h (__mt_alloc::_S_get_options): Make public.
+	(__mt_alloc::_S_set_options): Same.
+	Add to comments.
+
+2004-07-13  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Add allocator defaults
+	for linux.
+	* configure: Regenerated.
+
+2004-07-13  Paolo Carlini  
+
+	* testsuite/22_locale/locale/cons/12658_thread.cc: Move/rename
+	to 12658_thread-1.cc and xfail.
+	* testsuite/22_locale/locale/cons/12658_thread-2.c: New, much
+	simpler version of 12658_thread-1.cc, still failing on 3_3 and
+	not failing on 3_4/mainline - both on single processor and
+	multiprocessor machines.
+
+2004-07-12  Benjamin Kosnik  
+
+	* docs/html/abi.html: Remove non-public qualification.
+
+	* include/bits/concurrence.h: Tweak comments.
+
+2004-07-11  Paolo Carlini  
+
+	Add wchar_t counterparts of the basic_streambbuf tests.
+	* testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc: New.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc, 9322.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/in_avail/wchar_t/9701-3.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc, 2.cc,
+	3599.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc, 1057.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc: Likewise.
+
+	* testsuite/27_io/basic_streambuf/imbue/char/1.cc, 9322.cc: Minor
+	tweaks.
+	* testsuite/27_io/basic_streambuf/overflow/char/2.cc, 3599.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sync/char/1057.cc: Likewise.
+
+2004-07-11  Phil Edwards  
+
+	* acinclude.m4:  Cosmetic shell syntax fixes.
+	* configure.ac:  Bring comment inline with reality.
+	* configure.host:  Both of the above.  Move 'arm' case to right
+	place in host_cpu switch.
+	* aclocal.m4, configure:  Regenerate.
+
+2004-07-09  Paolo Carlini  
+
+	Add wchar_t counterparts of the basic_stringbuf tests.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc, 9322.cc: New.
+	* testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc, 2.cc,
+	3599.cc, 9988.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc, 9825.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc, 2.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc, 2.cc, 3.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc, 2.cc, 3.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc, 9425.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc, 1057.cc,
+	9404-1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc, 1057.cc,
+	9404-2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc, 2.cc, 3.cc,
+	3955.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc: Likewise.
+
+2004-07-08  Paolo Carlini  
+
+	* include/bits/gslice.h: Trivial formatting fixes.
+	* include/bits/gslice_array.h: Likewise.
+	* include/bits/indirect_array.h: Likewise.
+	* include/bits/mask_array.h: Likewise.
+	* include/bits/slice_array.h: Likewise.
+	* include/bits/valarray_after.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* include/bits/valarray_before.h: Likewise.
+	* include/std/std_valarray.h: Likewise.
+
+2004-07-08  Benjamin Kosnik  
+
+	PR c++/16169
+	* include/bits/basic_string.h (basic_string::operator=): Revert.
+
+2004-07-07  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:2:0.
+	* configure: Regenerated.
+
+	* testsuite/testsuite_abi.cc (check_version): Add 3.4.2.
+
+2004-07-07  Aaron W. LaFramboise  
+
+	PR libstdc++/16411
+	* config/linker-map.gnu: Add stdio_sync_filebuf::file exports.
+
+2004-07-07  Benjamin Kosnik  
+
+	* docs/html/abi.html: Updates for 3.4.1 release. Add summary of
+	-Weffc++ issues.
+
+2004-07-07  Paolo Carlini  
+
+	PR libstdc++/16401
+	* include/bits/sstream.tcc (overflow): When reallocating _M_string
+	use an exponential grow policy.
+	* testsuite/27_io/basic_stringbuf/overflow/char/1.cc: New.
+	* testsuite/performance/27_io/stringbuf_overflow.cc: New.
+
+2004-07-06  Anssi Hannula  
+
+	PR libstdc++/15928
+	* crossconfig.m4: Add in bits for djgpp.
+	* configure: Regenerate.
+
+2004-07-05  Jonathan Wakely  
+
+	* testsuite/23_containers/{set,multiset}/14340.cc: Fix typos in
+	instantiation of set and multiset (functor param given as int).
+
+2004-07-04  Paolo Carlini  
+
+	* include/bits/basic_string.h: Trivial formatting fixes and/or
+	const-ification of some variables.
+	* include/bits/deque.tcc: Likewise.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_construct.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+
+2004-07-04  Paolo Carlini  
+
+	* testsuite/25_algorithms/copy/1.cc: Add instantiations for
+	systems with no COMDAT or weak support.
+	* testsuite/25_algorithms/copy/2.cc: Likewise.
+	* testsuite/25_algorithms/copy/3.cc: Likewise.
+	* testsuite/25_algorithms/copy/4.cc: Likewise.
+
+2004-07-03  Paul Brook  
+
+	* configure.ac: Set ABI_TWEAKS_SRCDIR.
+	* configure.host: Set abi_tweaks_dir.  Check for atomicity.h when
+	setting atomicity_dir.  Override type_cpu for arm based targets.
+	* include/Makefile.am (host_headers): Add cxxabi_tweaks.h.
+	* libsupc++/cxxabi.h: Include bits/cxxabi.h. Don't declare __guard.
+	* libsupc++/guard.cc: Use definitions from cxxabi_tweaks.h.
+	* libsupc++/vec.cc: Ditto.
+	* config/cpu/arm/cxxabi_tweaks.h: New file.
+	* config/cpu/generic/cxxabi_tweaks.h: New file.
+	* */Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2004-07-02  Paolo Carlini  
+
+	* include/bits/type_traits.h (_Is_normal_iterator): Move...
+	* include/bits/cpp_type_traits.h: ... here, renamed to
+	__is_normal_iterator and consistent with the other traits.
+	* include/bits/stl_algobase.h (__copy_ni1, __copy_ni2): Convert
+	to the struct __copy_normal and three specializations.
+	(__copy_backward_output_normal_iterator,
+	__copy_backward_input_normal_iterator): Likewise, convert to
+	the struct __copy_backward_normal and three specializations.
+	(copy, copy_backward): Use the latter.
+	(__copy_aux, __copy_backward_aux): Very minor tweaks.
+
+2004-07-01  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__copy_trivial): Remove.
+	(__copy_aux2): Rewrite as __copy_aux to use __is_pointer,
+	__is_trivially_copyable, __are_same and __copy::copy.
+	(__copy): Rewrite as a class template and two specializations.
+	(__copy_ni2): Simplify, just call __copy_aux.
+
+	* include/bits/stl_algobase.h (__copy_backward_aux): Add __are_same
+	check.
+	* testsuite/25_algorithms/copy/1.cc, 2.cc, 3.cc, 4.cc: Test also
+	for destination value type != source value type.
+
+2004-07-01  Benjamin Kosnik  
+	    Per Bothner  
+	    Mohan Embar  
+
+	PR libstdc++/16248
+	* include/bits/concurrence.h (__glibcxx_mutex_type): New.
+	(__glibcxx_mutex): Encapsulate mutex init function into type for
+	threaded configurations without __GTHREAD_MUTEX_INIT.
+	(lock::lock): Make device member a reference.
+	(lock::~lock): Same.
+	* include/ext/pool_allocator.h (__pool_base::_M_get_mutex): Change
+	to mutex_type.
+	* src/allocator.cc: Same.
+
+2004-06-30  Brad Spencer  
+
+	* include/ext/mt_allocator.h: Handle allocations at static
+	initialization that happen before _S_options is (automatically)
+	constructed; set _S_init even if _M_force_new is true.
+
+2004-06-30  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Revert new exports.
+
+2004-06-30  Benjamin Kosnik  
+	    Stuart Anderson  
+
+	* config/linker-map.gnu: Add destructor exports for abstract base
+	classes to conform to LSB.
+
+2004-06-30  Gabriel Dos Reis  
+	    Paolo Carlini  
+
+	* include/bits/cpp_type_traits.h: Add __is_pointer and
+	__is_trivially_copyable.
+	* include/bits/stl_algobase.h (fill, fill_n): Slightly
+	tweak to use the latter.
+	(__copy_backward_dispatch): Remove.
+	(__copy_backward_aux): Rewrite to use __is_pointer and
+	__is_trivially_copyable and __copy_backward::copy_b.
+	(__copy_backward): Rewrite as a class template and two
+	specializations.
+
+2004-06-30  Paolo Carlini  
+
+	* testsuite/25_algorithms/copy.cc: Move to...
+	* testsuite/25_algorithms/copy/1.cc: ... here, extend.
+	* testsuite/25_algorithms/copy/2.cc: New.
+	* testsuite/25_algorithms/copy/3.cc: New.
+	* testsuite/25_algorithms/copy/4.cc: New.
+
+2004-06-29  Paul Brook  
+
+	* libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Store the
+	element size in the cookie.
+
+2004-06-28  Paolo Carlini  
+
+	* include/bits/cpp_type_traits.h: Move the additions to
+	namespace __gnu_internal outside of namespace std; trivial
+	formatting fixes.
+
+2004-06-28  Benjamin Kosnik  
+
+	* include/debug/safe_base.h (__gnu_debug::_Safe_sequence_base):
+	Revert -Weffc++ changes that defined copy ctory and or assignment
+	operator.
+	* libsupc++/tinfo.cc (__upcast_result): Same.
+
+2004-06-28  Paolo Carlini  
+
+	* src/localename.cc (locale::_Impl::_Impl): Slightly improve
+	the algorithm used to name the categories.
+
+2004-06-28  Paolo Bonzini  
+
+	* include/Makefile.am: Give a .gch extension to
+	the PCH files, not only to the directory.
+	* include/Makefile.in: Regenerate.
+
+2004-06-28  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Clean up
+	assignments of _M_decimal_point and _M_thousands_sep.
+
+2004-06-27  Paolo Carlini  
+
+	* docs/html/17_intro/contribute.html: Update some links.
+	* docs/html/17_intro/porting-howto.html: Likewise.
+	* docs/html/17_intro/porting-howto.xml: Likewise.
+	* docs/html/18_support/howto.html: Likewise.
+	* docs/html/21_strings/howto.html: Likewise.
+	* docs/html/27_io/howto.html: Likewise.
+	* docs/html/configopts.html: Likewise.
+	* docs/html/ext/howto.html: Likewise.
+	* docs/html/faq/index.html: Likewise.
+	* docs/html/install.html: Don't mention 2.x compilers.
+
+2004-06-27  Paolo Carlini  
+
+	* include/ext/rope: Trivial formatting fixes.
+	* include/ext/ropeimpl.h: Likewise.
+
+2004-06-26  Paolo Carlini  
+
+	PR libstdc++/16210
+	* acinclude.m4 (GLIBCXX_ENABLE_LONG_LONG): Do not check for the
+	availability of strto(u)ll, not used anymore in the iostreams.
+	* configure: Regenerate.
+
+2004-06-25  Benjamin Kosnik  
+
+	PR libstdc++/16182
+	* linkage.m4 (GLIBCXX_CHECK_BUILTIN_MATH_DEC): Revert to
+	AC_DEFINE_UNQUOTED.
+	* configure: Regenerate.
+
+2004-06-25  Paul Brook  
+
+	* libsupc++/cxxabi.h: Define __ARM_EABI__
+	(__guard): Use it.
+	* libsupc++/guard.h (__cxa_guard_acquire, __cxa_guard_release): Ditto.
+
+2004-06-25  Paul Brook  
+
+	* include/bits/concurrence.h: Still create mutex object when
+	single-threaded.
+
+2004-06-25  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill, fill_n): Revert last
+	change: actually we need to copy construct an object of type
+	_Tp, not of type iterator_traits<>::value_type, therefore the
+	code is ok.
+
+2004-06-25  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill, fill_n): Tighten the
+	dispatch: use iterator_traits<>::value_type, not _Tp.
+
+2004-06-25  Paolo Carlini  
+
+	* testsuite/25_algorithms/fill/1.cc: Tweak instantiations.
+	* testsuite/25_algorithms/fill/2.cc: Likewise.
+
+2004-06-25  Dan Nicolaescu  
+	    Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__fill, __fill_n): New helpers
+	for fill and fill_n, respectively: when copying is cheap, use a
+	temporary to avoid a memory read in each iteration.
+
+2004-06-25  Paolo Carlini  
+
+	* testsuite/25_algorithms/fill/1.cc: New.
+	* testsuite/25_algorithms/fill/2.cc: Likewise.
+
+2004-06-25  Benjamin Kosnik  
+
+	* include/debug/formatter.h (__gnu_debug::_Error_formatter):
+	Remove copy constructor and assignment operator.
+
+2004-06-24  Benjamin Kosnik  
+
+	* include/bits/concurrence.h (__gnu_cxx::lock): New.
+	* include/ext/pool_allocator.h (__pool_base::_Lock::_S_lock): Remove.
+	(__pool_base::_M_get_mutex): New.
+	* include/bits/allocator.h: Tweak.
+	* src/allocator.cc (__pool_base::_M_get_free_list): Correct offset.
+	* config/linker-map.gnu: Remove __pool_base::_Lock::_S_lock.
+	* include/bits/stl_threads.h: Remove.
+	* include/Makefile.am: Also here.
+	* include/Makefile.in: Regenerate.
+
+	* src/locale_init.cc: Use __gnu_cxx::lock.
+
+	* src/allocator.cc: Move all instantiations...
+	* src/allocator-inst.cc: ...here.
+
+2004-06-23  Andrew Pinski  
+
+	* linkage.m4: Remove check for libmx.
+	* configure: Regenerate.
+
+2004-06-23  Paolo Carlini  
+
+	PR libstdc++/16154
+	* include/bits/boost_concept_check.h (struct _TrivialIteratorConcept):
+	Don't require the _DefaultConstructibleConcept.
+	(struct _ForwardIteratorConcept): Require it here.
+
+2004-06-22  Alexandre Oliva  
+
+	* include/bits/istream.tcc (getline): Make sure arguments passed
+	to min/max have the same type.
+	* include/bits/locale_facets.tcc (__verify_grouping): Likewise.
+	* include/bits/stl_deque.h (_Deque_base::_Deque_base): Likewise.
+
+2004-06-22  Benjamin Kosnik  
+
+	* docs/html/abi.html: Update links.
+
+2004-06-22  Paolo Carlini  
+
+	* testsuite/26_numerics/complex_inserters_extractors.cc,
+	complex_value.cc, buggy_complex.cc: Move to...
+	* testsuite/26_numerics/complex/: ... here.
+	* testsuite/26_numerics/c99_classification_macros_c++.cc,
+	c99_classification_macros_c.cc, c_math.cc, c_math_dynamic.cc,
+	fabs_inline.cc: Move to...
+	* testsuite/26_numerics/cmath/: ... here.
+	* testsuite/26_numerics/binary_closure.cc, slice.cc,
+	slice_array_assignment.cc, valarray.cc, valarray_const_bracket.cc,
+	valarray_name_lookup.cc, valarray_operators.cc,
+	valarray_subset_assignment.cc: Move to...
+	* testsuite/26_numerics/valarray/: ... here (new dir).
+	* testsuite/26_numerics/sum_diff.cc: Move to...
+	* testsuite/26_numerics/numeric/: ... here (new dir).
+
+2004-06-22  Paolo Carlini  
+
+	* include/std/std_istream.h (ignore(streamsize __n = 1,
+	int_type __delim = traits_type::eof())): Split into...
+	(ignore(), ignore(streamsize __n), ignore(streamsize __n,
+	int_type __delim)): The first two can be much more simpler
+	and efficient than the fully general case; also, the last
+	two can take advantage of the same mechanism already used
+	for getline.
+	* include/bits/istream.tcc (ignore(streamsize __n = 1,
+	int_type __delim = traits_type::eof()): Remove.
+	(ignore(), ignore(streamsize __n), ignore(streamsize __n,
+	int_type __delim)): New.
+
+2004-06-21  Loren J. Rittle  
+
+	* config/linker-map.gnu: Use wildcards for
+	__basic_file::sys_open(FILE*, _Ios_Openmode).
+
+2004-06-20  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/ignore/char/3.cc: New.
+
+2004-06-18  Paolo Carlini  
+
+	* include/ext/mt_allocator (__mt_alloc<>::_Tune): Add _M_align,
+	the alignment requested.
+	(__mt_alloc<>::_Tune::_Tune): Tweak consistently.
+	(__mt_alloc<>::allocate): Use it instead of sizeof(_Block_record).
+	(__mt_alloc<>::deallocate): Likewise.
+
+2004-06-18  Paolo Carlini  
+
+	PR libstdc++/16020
+	* include/debug/safe_base.h
+	(_Safe_sequence_base::_Safe_sequence_base(const _Safe_sequence_base&),
+	_Safe_sequence_base::operator=): Provide definitions.
+	* testsuite/23_containers/bitset/cons/16020.cc: New.
+
+2004-06-18  Benjamin Kosnik  
+
+	* include/ext/pool_allocator.h: Qualify __throw_bad_alloc.
+	(__pool_base): Remove unused template parameter.  Add
+	protected. Move lock data into __pool_base::_Lock. Remove static
+	on member functions.
+	(__pool_base::_M_get_free_list): New.
+	(__pool_alloc): Move _S_force new here.
+	* src/allocator.cc: Move out of line __pool_base definitions here.
+	* config/linker-map.gnu: Export bits from __pool_base.
+
+2004-06-18  Paolo Carlini  
+
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Clean up
+	assignments of _M_decimal_point and _M_thousands_sep.
+	* config/locale/gnu/time_members.cc
+	(__timepunct::_M_initialize_timepunct): Clean up
+	and reformat assignments of date and time fields.
+
+2004-06-16  Paolo Carlini  
+
+	* include/ext/rope (rope(_CharT, const allocator_type&)): Fix
+	to use _Data_allocate.
+	* include/ext/ropeimpl.h (rope<>::_S_leaf_concat_char_iter): Likewise.
+	(rope<>::_S_substring): Likewise.
+	(rope<>::rope(size_t, _CharT, const allocator_type&)): Likewise.
+	(rope<>::c_str()): Likewise.
+	(rope<>::replace_with_c_str()): Likewise.
+
+	* include/ext/ropeimpl.h (_Rope_iterator_base<>::_S_setbuf):
+	Correctly qualify _S_leaf, _S_function, etc., with _Rope_constants::,
+	not _RopeRep.
+	(_Rope_iterator_base<>::_S_setcache): Likewise.
+	(_Rope_iterator_base<>::_S_setcache_for_incr): Likewise.
+	(rope<>::_S_substring): Likewise.
+	(rope<>::_S_dump): Likewise.
+	(rope<>::_S_fetch_ptr): Likewise.
+	(rope<>::_S_compare): Likewise.
+	(rope<>::replace_with_c_str()): Likewise.
+
+	* testsuite/ext/rope.cc: Rename to testsuite/ext/rope/1.cc.
+	* testsuite/ext/rope/2.cc: New.
+
+2004-06-16  Paolo Carlini  
+	    Matt Austern  
+
+	* testsuite/ext/rope/3.cc: New.
+
+2004-06-15  Paolo Bonzini  
+
+	* acinclude.m4: Remove useless multilib configury.
+	* Makefile.am: Remove useless multilib rules.
+	* aclocal.m4: Regenerate.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2004-06-15  Paolo Carlini  
+
+	* include/ext/hashtable.h: Trivial formatting fixes.
+	* include/ext/rb_tree: Likewise.
+
+2004-06-14  Paolo Carlini  
+
+	* include/ext/hash_map: Trivial formatting fixes.
+	* include/ext/hash_set: Likewise.
+	* include/ext/memory: Likewise.
+	* include/ext/numeric: Likewise.
+
+2004-06-14  Benjamin Kosnik  
+
+	* Makefile.in: Regenerate with automake 1.8.5.
+	* aclocal.m4: Same.
+	* include/Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* po/Makefile.in: Same.
+	* src/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+
+2004-06-14  Paolo Carlini  
+
+	* include/ext/slist: Trivial formatting fixes.
+
+2004-06-14  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get<>::_M_extract_name):
+	Don't use the 'magic number' 10 in the computation of __minlen;
+	never access __name past __minlen; in the loop over __i3, don't
+	decrease __nmatches and increase __i3 at once, only either of
+	the two; tidy.
+
+2004-06-13  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get<>::do_get_time,
+	time_get<>::do_get_date): Use only once _M_extract_via_format,
+	instead of going through "%X"/"%x" and calling it two times
+	(+ using widen).
+
+2004-06-12  Paolo Carlini  
+
+	* include/ext/algorithm: Trivial formatting fixes.
+	* include/ext/functional: Likewise.
+	* include/ext/hash_fun.h: Likewise.
+	* include/ext/iterator: Likewise.
+
+2004-06-12  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (find(const _CharT*, size_type,
+	size_type)): Reimplement using std::search.
+	* src/string-inst.cc: Instantiate std::search for char/wchar_t.
+
+2004-06-12  Dhruv Matani  
+
+	* testsuite/performance/21_strings/string_find.cc: New.
+
+2004-06-10  Aaron W. LaFramboise  
+
+	* include/bits/istream.tcc (istream::ignore): Fix for -Wuninitialized.
+
+2004-06-10  Jan van Dijk  
+
+	* include/std/std_complex.h (sin(const complex<_Tp>& __z)): Make
+	this function return a value.
+
+2004-06-09  Paolo Carlini  
+
+	PR libstdc++/15775
+	* include/bits/stl_deque.h: Consistently with stl_set.h, define
+	pointer as allocator's pointer, likewise for reference,
+	const_pointer, and const_reference.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+
+2004-06-09  Benjamin Kosnik  
+
+	* crossconfig.m4: Remove signbit, signbitf, signbitl.
+	* linkage.m4: Comment LIBMATHOBJS, tweak others.  AC_DEFINES for
+	builtin math functions instead of AC_DEFINE_UNQUOTED.
+	* configure: Regenerate.
+
+2004-06-08  Benjamin Kosnik  
+
+	* docs/doxygen/filter.sed: Rename _GLIBCXX_STD to std.
+	* docs/doxygen/mainpage.html: Remove links.
+
+2004-06-08  Jason Merrill  
+
+	* config/linker-map.gnu: Use wildcards for
+	__basic_file::{xsgetn,xsputn,seekoff,xsputn_2}.
+
+2004-06-08  Paolo Carlini  
+
+	* include/ext/pool_allocator.h: Convert to a global free-list,
+	as per the original SGI/HP design: move the implementation
+	details to struct __pool_base, from which __pool_alloc derives.
+	* src/allocator.cc: Instantiate __pool_base.
+
+2004-06-07  Dhruv Matani  
+	    Paolo Carlini  
+
+	* testsuite/testsuite_performance.h
+	(resource_counter::allocated_memory): Make it return the right
+	number of bytes requested by the allocators/application. This is
+	the sbrk+mmaped memory.
+
+2004-06-02  Gabriel Dos Reis  
+
+	* include/std/std_complex.h (log): Tidy.
+
+2004-05-31  Benjamin Kosnik  
+
+	* config/linker-map.gnu (GLIBCXX_3.4.1): Add.
+	* testsuite/testsuite_abi.cc: Same.
+	* configure.ac (libtool_VERSION): Bump to 6:1:0.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2004-05-30  Gabriel Dos Reis  
+
+	* include/std/std_complex.h (complex<_Tp>): Properly indent
+	to follow C++STYLE.
+	(complex<>::__rep): New.
+	(__complex_abs): New.  Dispatch to built-ins.
+	(abs): Use them.
+	(__complex_arg): New. Dispatch to built-ins.
+	(arg): Use it.
+	(__complex_cos): New. Dispatch to built-ins.
+	(cos): Use it.
+	(__complex_cosh): New. Dispatch to built-ins.
+	(cosh): Use it.
+	(__complex_exp): New. Dispatch to built-ins.
+	(exp): Use it.
+	(__complex_log): New. Dispatch to built-ins.
+	(log): Use it.
+	(__complex_sin): New. Dispatch to built-ins.
+	(sin): Use it.
+	(__complex_sinh): New. Dispatch to built-ins.
+	(sinh): Use it.
+	(__complex_sqrt): New. Dispatch to built-ins.
+	(sqrt): Use it.
+	(__complex_tan): New. Dispatch to built-ins.
+	(tan): Use it.
+	(__complex_tanh): New. Dispatch to built-ins.
+	(tanh): Use it.
+	(__complex_pow): New. Dispatch to built-ins.
+	(pow): Use it.
+
+2004-05-29  Richard B. Kreckel  
+	    Benjamin Kosnik  
+
+	PR libstdc++/14600
+	* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf::file): New.
+	* include/ext/stdio_filebuf.h (stdio_filebuf::file): New.
+	* config/io/basic_file_stdio.cc (__basic_file::file): New.
+	* config/io/basic_file_stdio.h: Define.
+
+2004-05-27  Benjamin Kosnik  
+
+	PR libstdc++/15675
+	* docs/html/documentation.html: Update doxygen links for 3.4.0.
+
+2004-05-27  Jan Beulich  
+
+	* scripts/create_testsuite_files: Tweak.
+
+2004-05-25  Benjamin Kosnik  
+
+	PR libstdc++/15489
+	* scripts/create_testsuite_files: Revert xtype change, add non-GNU
+	bits to do the same thing.
+
+2004-05-24  Paolo Carlini  
+
+	* include/bits/istream.tcc (ignore): Correctly deal with
+	n == numeric_limits::max().
+	* testsuite/27_io/basic_istream/ignore/char/2.cc: New.
+
+	* include/bits/istream.tcc (basic_istream<>::getline): Prefer
+	'_M_gcount + 1 < __n' to '--__n; _M_gcount < __n', just in case
+	__n == numeric_limits<>::min().
+
+	* include/bits/istream.tcc: Minor tweaks.
+
+	* testsuite/21_strings/basic_string/inserters_extractors/char/10.cc:
+	Tighten.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/11.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/getline/char/5.cc: Likewise.
+
+2004-05-22  Benjamin Kosnik  
+
+	PR libstdc++/12854
+	Fixups for -Weffc++.
+	* include/bits/basic_string.h (basic_string::operator=): Return
+	pointer to this instead of result of assign. Although redundant,
+	this doesn't impact resultant codegen.
+
+	* include/bits/locale_facets.h (__numpunct_cache): Declare
+	assignment opxserator and copy constructor private.
+	(__timepunct_cache): Same.
+	(__moneypunct_cache): Same.
+	(collate): Use member initialization list for _M_c_locale_collate.
+	* config/locale/gnu/messages_members.h: Same.
+	* config/locale/gnu/time_members.h (__timepunct): Same.
+	* src/codecvt.cc: Use member initialization list to initialize
+	_M_c_locale_codecvt.
+	* src/ctype.cc: Same, with _M_c_locale_ctype and _M_narrow_ok.
+	* config/os/gnu-linux/ctype_noninline.h: Same.
+	* src/locale.cc (_Impl): Same.
+	* src/locale_init.cc: Same.
+	* src/localename.cc: Same.
+
+	* include/bits/basic_ios.h (basic_ios): Complete member
+	initialization list.
+	* include/bits/istream.tcc (basic_istream::sentry): Same.
+	* include/bits/ostream.tcc (basic_ostream::sentry): Same.
+	* include/bits/fstream.tcc (basic_filebuf): Add _M_lock and
+	_M_pback to member initialization list.
+	* include/std/std_streambuf.h: Same.
+	* include/std/std_sstream.h: Same, for _M_mode.
+	* src/ios.cc (ios_base): Same.
+
+	* include/ext/rope: Make derived classes match exception
+
+	 specifications. Add copy constructors and assignment operators.
+
+	* include/debug/safe_base.h (_Safe_sequence_base): Declare copy
+	constructor and assignment operator protected.
+	(_Safe_iterator_base): Same.
+	* include/debug/formatter.h (_Error_formatter): Define copy
+	constructor and assignment operator.
+
+	* include/backward/strstream: Declare assignment operator and copy
+	constructor private.
+
+2004-05-22  Benjamin Kosnik  
+
+	* testsuite/testsuite_hooks.h (func_callback): Declare copy
+	constructor and assignment operator private.
+	* testsuite/23_containers/deque/cons/clear_allocator.cc: Match
+	exception specifications of base class.
+	* testsuite/23_containers/list/cons/clear_allocator.cc: Same.
+	* testsuite/23_containers/vector/cons/clear_allocator.cc: Same.
+	* testsuite/23_containers/vector/bool/clear_allocator.cc: New.
+
+2004-05-22  Benjamin Kosnik  
+
+	* libsupc++/cxxabi.h: Remove duplicated and useless public and
+	private keywords in class declarations. Format. Use
+	stddef.h. Expose declarations to "C" compilation.
+	* libsupc++/tinfo.cc (__upcast_result): Add copy constructor and
+	assignment operator.
+	(__dyncast_result): Same.
+	* libsupc++/vec.cc (uncatch_exception): Same, use member
+	initialization list.
+
+2004-05-22  Benjamin Kosnik  
+
+	* testsuite/abi_check.cc: Add unistd.h.
+
+2004-05-22  Paolo Carlini  
+
+	PR libstdc++/15565
+	* include/bits/locale_facets.tcc (__int_to_char(unsigned long),
+	__int_to_char(unsigned long long)): Showpos is not relevant
+	for unsigned types.
+	* testsuite/22_locale/num_put/put/char/15565.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/15565.cc: New.
+
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Use L for the fill
+	char.
+	* testsuite/22_locale/num_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/8.cc: Likewise.
+
+2004-05-21  Matthias Klose  
+
+	* docs/doxygen/run_doxygen:  Bump required version.
+
+2004-05-21  Benjamin Kosnik  
+
+	* docs/html/abi.html (libgcc_s): Additions suggested by Matthias Klose.
+	* docs/doxygen/Intro.3: Subtractions suggested by Phil Edwards.
+
+2004-05-21  Paolo Carlini  
+
+	* include/bits/istream.tcc (ignore): Remove redundant line.
+	(readsome): Tidy, closely following 27.6.1.3, p30.
+
+2004-05-20  Paolo Carlini  
+
+	* include/bits/istream.tcc (operator>>(basic_istream<>&,
+	basic_string<>&)): Use a temporary buffer, thus avoiding
+	reallocation for common case.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/11.cc:
+	New.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
+	Likewise.
+
+	* include/bits/istream.tcc: Const-ification of a few variables.
+
+	* include/bits/ostream.tcc: Trivial formatting fixes and
+	const-ification of some variables.
+
+2004-05-20  Benjamin Kosnik  
+
+	PR libstdc++/15123
+	PR libstdc++/13928
+	* docs/doxygen/Intro.3: Remove Allocators.3.
+	Add new extension headers, extension namespace list.
+	* docs/doxygen/run_doxygen (problematic): Remove Allocators.3
+	Rename GLIBCXXSTD names to std::. Rename __gnu_debug to
+	__gnu_debug::. Remove __policy_ renames.
+	* docs/doxygen/guide.html: Add dot note.
+	* docs/doxygen/stdheader.cc: Edit, add files.
+	* docs/doxygen/user.cfg.in: Regenerate with Doxygen 1.3.7.
+
+2004-05-18  Jonathan Wakely  
+
+	* include/ext/stdio_filebuf.h: Update comments to reflect PR 11691.
+
+2004-05-18  Jan Beulich  
+
+	PR libstdc++/15489
+	* scripts/create_testsuite_files: Also find source files through
+	symbolic links.
+
+2004-05-18  Jan Beulich  
+
+	PR libstdc++/15488
+	* testsuite/lib/libstdc++.exp: Make test files writable.
+
+2004-05-18  Paolo Carlini  
+
+	* include/ext/mt_allocator.h:(__mt_alloc::allocate): Minor
+	tweaks.
+
+2004-05-18  Dhruv Matani  
+
+	* include/ext/mt_allocator.h:(__mt_alloc::allocate): Re-write
+	allocation loop which removes blocks from the global free list
+	from O(N) to O(1) when the required blocks are <= the number
+	available.
+
+2004-05-18  Jonathan Wakely  
+
+	* include/ext/enc_filebuf.h: Move concept-check macro to class scope.
+
+2004-05-17  Benjamin Kosnik  
+
+	* testsuite/testsuite_hooks.h (__gnu_test::conversion): New class.
+	* testsuite/23_containers/deque/14340.cc: New.
+	* testsuite/23_containers/list/14340.cc: New.
+	* testsuite/23_containers/map/14340.cc: New.
+	* testsuite/23_containers/multimap/14340.cc: New.
+	* testsuite/23_containers/multiset/14340.cc: New.
+	* testsuite/23_containers/set/14340.cc: New.
+	* testsuite/23_containers/vector/14340.cc: New.
+
+2004-05-17  Douglas Gregor   
+
+	PR libstdc++/14340
+	* include/debug/safe_iterator.h (_Safe_iterator converting
+	constructor): Only allow declaration to instantiate when the
+	incoming _Safe_iterator has exactly the right iterator type.
+
+2004-05-17  Jonathan Wakely  
+
+	* include/bits/boost_concept_check.h: Fix old attribute syntax.
+	* testsuite/23_containers/map/modifiers/swap.cc: Define operator<
+	to pass concept-checks.
+	* testsuite/23_containers/multimap/modifiers/swap.cc: Same.
+	* testsuite/23_containers/set/modifiers/swap.cc: Same.
+	* testsuite/23_containers/multiset/modifiers/swap.cc: Same.
+
+2004-05-16  Paolo Carlini  
+
+	* include/std/std_bitset.h: Minor formatting fixes.
+
+2004-05-16  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::deallocate):
+	Consistently update __bin._M_free[0].
+	(__mt_alloc<>::allocate): When __bin._M_first[0] != NULL use
+	__bin._M_free[0] to simplify the while loop (i.e., the number
+	of iterations becomes known at the outset).
+
+2004-05-15  Paolo Carlini  
+
+	* include/std/std_bitset.h: Trivial formatting fixes.
+
+2004-05-14  Paolo Carlini  
+	    Ivan Godard  
+
+	PR libstdc++/15361
+	* include/std/std_bitset.h (_Base_bitset<_Nw>::_M_do_find_next): Fix.
+	* testsuite/23_containers/bitset/ext/15361.cc: New.
+
+2004-05-13  Benjamin Kosnik  
+
+	PR libstdc++/15046
+	* crossconfig.m4: Add C99 math bits for linux crosses.
+	* configure: Regenerate.
+
+2004-05-13  Simon Marshall 
+	    Benjamin Kosnik  
+
+	PR libstdc++/15090
+	* include/bits/locale_facets.h: Fix for -fno-for-scope.
+	* include/debug/safe_sequence.h: Same.
+	* include/debug/safe_iterator.tcc: Same.
+	* src/debug.cc: Same.
+	* src/locale.cc: Same.
+	* src/locale_init.cc: Same.
+	* src/localename.cc: Same.
+	* config/locale/gnu/ctype_members.cc: Same.
+	* config/locale/gnu/numeric_members.cc: Same.
+	* testsuite/testsuite_abi.cc: Same.
+	* testsuite/testsuite_hooks.cc: Same.
+
+2004-05-13  Jonathan Wakely  
+
+	* docs/html/abi.html: Document effect of -fabi-version on value
+	of __GXX_ABI_VERSION, and that it's defined in c-cppbuiltin.c.
+	Fix markup.
+
+2004-05-13  Benjamin Kosnik  
+
+	PR libstdc++/15074
+	* docs/html/faq/index.html: Update docs for libsupc++ usage.
+
+2004-05-13  Benjamin Kosnik  
+
+	PR libstdc++/15412
+	* include/bits/stl_threads.h (_GLIBCXX_mutex): Move to namespace
+	__gnu_internal.
+	(_GLIBCXX_mutex_address): Same.
+	(_GLIBCXX_once): Same.
+	(_GLIBCXX_mutex_init): Same.
+	(_GLIBCXX_mutex_address_init): Same.
+
+2004-05-13  Benjamin Kosnik  
+
+	* docs/html/abi.html: New.
+	* docs/html/abi.txt: Remove.
+	* docs/html/documentation.html: Add link.
+	* testsuite/Makefile.am: Add files.
+	* testsuite/Makefile.in: Regenerated.
+	* testsuite/abi_check.cc: Move and modify code into...
+	* testsuite/testsuite_abi.cc: Add.
+	* testsuite/testsuite_abi.h: Add.
+
+	* docs/html/17_intro/TODO: Update.
+	* include/bits/stl_pair.h: Format.
+
+2004-05-06  Matthias Klose  
+
+	* include/backward/iterator.h: 	Add GPL copyright info,
+	with exception clause.
+	* include/bits/boost_concept_check.h: Likewise.
+	* include
+	* libsupc++/tinfo.h: Likewise.
+	* po/string_literals.cc: Likewise.
+
+2004-05-03  Andreas Tobler  
+
+	* acinclude.m4: Replace -W with more speaking -Wextra.
+	* configure: Rebuilt.
+
+2004-05-03  Paolo Carlini  
+
+	Optimize locale::_M_impl->_M_names for the most common cases:
+	!_M_names[0] means unnamed; !_M_names[1] means all the categories
+	the same name (_M_names[0] && _M_names[1] means that the full set
+	of _M_names must be processed, the general case).
+	* include/bits/locale_classes.h (locale::_Impl::_M_check_same_name):
+	Tweak, saving work when !_M_names[1].
+	(locale::locale(const locale&, _Facet*): Simplify: now just setting
+	_M_names[0] = 0 means unnamed.
+	* src/locale.cc (locale::operator==): Deal first with the common,
+	easy cases, otherwise fall back to locale::name().
+	(locale::name()): Tweak, if !_M_names[0] just return "*".
+	(locale::_Impl::_Impl(const _Impl&, size_t): Tweak, early stop
+	copying __imp._M_names if !__imp._M_names[0] or !__imp._M_names[1].
+	* src/locale_init.cc (locale::_Impl::_Impl(size_t)): Tweak.
+	* src/localename.cc (locale::_Impl::_Impl(const char*, size_t):
+	Simplify when !std::strchr, just updating _M_names[0]; clean up.
+	(locale::_Impl::_M_replace_categories): When !_M_names[1] prepare
+	for the general case (full set of names), then do the usual work;
+	clean up.
+
+	* src/locale.cc (locale::name()): Reserve space in __ret.
+	* src/locale_init.cc (locale::global(const locale&)): Save
+	the name in a temporary.
+	* src/localename.cc (locale::locale(const char*)): Reserve space
+	in __str.
+
+2004-04-29  Paolo Carlini  
+
+	* src/locale.cc (locale::operator==): Always avoid constructing
+	locale::name(), directly compare pairs of _M_names.
+
+2004-04-26  Paolo Carlini  
+
+	* include/bits/istream.tcc: Fix comment.
+
+2004-04-26  Paolo Carlini  
+
+	* include/bits/stl_vector.h: Trivial formatting fixes.
+	* include/bits/vector.tcc: Likewise.
+
+2004-04-25  Paolo Carlini  
+
+	PR libstdc++/15002 (continued again)
+	* include/bits/istream.tcc (getline(basic_istream<>&,
+	basic_string<>&, _CharT)): Use a temporary buffer, thus
+	avoiding reallocation for common case.
+
+	* include/bits/basic_string.tcc (_S_construct(_InIterator,
+	_InIterator, const _Alloc&, input_iterator_tag)): Tweak size
+	of temporary buffer to a power of two.
+
+	* testsuite/27_io/basic_istream/getline/char/4.cc: Add comment.
+
+2004-04-25  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/inserters_extractors/char/10.cc:
+	New.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/getline/char/5.cc: Likewise.
+
+2004-04-24  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/15002 (continued)
+	* include/bits/istream.tcc (basic_istream<>::getline(char_type*,
+	streamsize, char_type)): Use traits::find/copy in a loop to speed
+	up greatly the function in the common case (I/O buffer size >> 1).
+
+2004-04-24  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/getline/char/4.cc: New.
+
+	* include/bits/istream.tcc (getline(basic_istream<>&,
+	basic_string<>&, _CharT)): Change to use sgetc()/snextc() instead
+	of sbumpc(), consistently with the other functions, thus also
+	dealing correctly with the case of exceeded string::max_size().
+
+2004-04-24  Matthias Klose  
+
+	Jonathan Wakely  
+	* docs/html/configopts.html: Fix reference to allocator config option.
+
+2004-04-23  Andrew Pinski  
+
+	* linkage.m4 (GLIBCXX_CHECK_MATH_SUPPORT): Check for libmx also.
+	* configure: Regenerate.
+
+2004-04-23  Daniel Jacobowitz  
+
+	PR libstdc++/15047, libstdc++/11610
+	* testsuite/lib/libstdc++.exp (v3-copy-files): Use remote_download.
+	(libstdc++_init): Don't pass outdir to v3-copy-files.
+
+2004-04-21  Paolo Carlini  
+
+	* include/bits/deque.tcc: Trivial formatting fixes.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+
+2004-04-21  Paolo Carlini  
+	    Andrew Pinski  
+
+	* include/bits/basic_string.tcc (_M_mutate): Don't compute
+	__src unnecessarily.
+
+2004-04-19  Benjamin Kosnik  
+
+	* testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+	Clarify assertion, set test variable to false before assert.
+	* testsuite/27_io/basic_istringstream/str/char/1.cc: Same.
+	* testsuite/27_io/basic_stringstream/str/char/1.cc: Same.
+	* testsuite/27_io/ios_base/storage/2.cc: Same.
+
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: Fix
+	function returns.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Same.
+	* testsuite/27_io/fpos/14320-3.cc: Same.
+
+	* testsuite/27_io/basic_filebuf/2.cc: Instantiate in namespace std.
+	* testsuite/27_io/fpos/1.cc: Same.
+	* testsuite/27_io/basic_stringstream/2.cc: Same.
+	* testsuite/27_io/basic_stringbuf/4.cc: Same.
+	* testsuite/27_io/basic_stringbuf/1.cc: Same.
+	* testsuite/27_io/basic_stringbuf/2.cc: Same.
+	* testsuite/27_io/basic_streambuf/2.cc: Same.
+	* testsuite/27_io/basic_ostringstream/2.cc: Same.
+	* testsuite/27_io/basic_ostream/2.cc: Same.
+	* testsuite/27_io/basic_ofstream/2.cc: Same.
+	* testsuite/27_io/basic_istringstream/2.cc: Same.
+	* testsuite/27_io/basic_istream/2.cc: Same.
+	* testsuite/27_io/basic_iostream/2.cc: Same.
+	* testsuite/27_io/basic_ios/2.cc: Same.
+	* testsuite/27_io/basic_ifstream/2.cc: Same.
+	* testsuite/27_io/basic_fstream/2.cc: Same.
+	* testsuite/ext/stdio_filebuf/char/1.cc: Same, in namespace __gnu_cxx.
+
+	* testsuite/21_strings/basic_string/capacity/1.cc: Don't compare
+	unsigned against zero.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Same.
+	* testsuite/21_strings/basic_string/capacity/char/1.cc: Same.
+
+	* testsuite/18_support/new_delete_placement.cc: Initialize
+	variables before first use.
+	* testsuite/21_strings/char_traits/requirements/wchar_t/1.cc: Same.
+	* testsuite/21_strings/char_traits/requirements/char/1.cc: Same.
+	* testsuite/21_strings/char_traits/requirements/short/1.cc: Same.
+	* testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
+	Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	exceptions_badbit_throw.cc: Same.
+	* testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
+	Same.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	exceptions_failbit_throw.cc: Same.
+	* testsuite/27_io/types/2.cc: Same.
+
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Fix temporary
+	file name.
+	* testsuite/27_io/fpos/14775.cc: Same.
+
+2004-04-19  Paolo Carlini  
+
+	PR libstdc++/15002 (partial)
+	* include/bits/basic_string.h (_M_replace_aux, _M_replace_safe):
+	Special case __n2 == 1, not calling traits_type::assign/copy.
+
+2004-04-17  Benjamin Kosnik  
+
+	* include/bits/stl_bvector.h: Use _M_impl._M_start.
+
+2004-04-16  Benjamin Kosnik  
+
+	* include/bits/c++config (_GLIBCXX_STD): New.
+	* src/list.cc: Use it.
+	* include/std/std_bitset.h: Same.
+	* include/bits/vector.tcc: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/deque.tcc: Same.
+	* include/bits/list.tcc: Same.
+	* include/debug/vector: Same.
+	* include/debug/set.h: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/multimap.h: Same.
+	* include/debug/map.h: Same.
+	* include/debug/list: Same.
+	* include/debug/deque: Same.
+	* include/debug/bitset: Same.
+	* include/debug/formatter.h (__gnu_debug): Remove using directive.
+	Add using declaration for std::type_info.
+	* include/debug/safe_iterator.h: Add using declaration for
+	std::iterator_traits and std::pair.
+	* src/debug_list.cc: New.
+	* src/Makefile.am: Add debug_list.cc.
+	* src/Makefile.in: Regenerate.
+	* config/linker-map.gnu: Add _List_node_base exports for std and
+	__gnu_norm.
+
+	* include/bits/stl_bvector.h (_Bvector_base): Use _Bvector_impl
+	idiom that other containers use.
+	* testsuite/23_containers/vector/bool/clear_allocator.cc: New.
+
+2004-04-16  Paolo Carlini  
+
+	PR libstdc++/14975
+	* include/bits/fstream.tcc (basic_filebuf::imbue): Zero _M_codecvt
+	in case of error.
+	* testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: New.
+
+2004-04-16  Paolo Carlini  
+
+	* acconfig.h: Remove _GLIBCXX_USE_LONG_DOUBLE entry, not
+	used anymore.
+	* config.h.in: Regenerate.
+
+2004-04-16  Paolo Carlini  
+
+	* config/locale/generic/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Avoid calling
+	btowc unnecessarily, just cast to wchar_t (the concerned chars
+	all belong to the basic character set).
+	* config/locale/generic/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Likewise.
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Likewise.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Likewise.
+
+2004-04-15  Paolo Carlini  
+
+	* src/locale.cc (locale::operator==): When _M_impl == __rhs._M_impl
+	avoid constructing unnecessarily this->name().
+
+2004-04-14  Zack Weinberg  
+
+	* testsuite/Makefile.am: Add definition of AM_CXXFLAGS.
+	Change definition of CXX to use $(shell) instead of backticks.
+	* testsuite/Makefile.in: Regenerate.
+
+2004-04-12  Dhruv Matani  
+
+	* testsuite/performance/20_util/allocator/list_sort_search.cc:
+	Minor formatting fixes.
+	* testsuite/performance/20_util/allocator/map_mt_find.cc:
+	Likewise.
+
+2004-04-12  Paolo Carlini 
+
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): No need to wrap
+	in __uselocale, since btowc is called for chars belonging to
+	the basic character set.
+
+2004-04-09  Paolo Carlini  
+
+	* testsuite/22_locale/messages/members/char/1.cc: Remove junk.
+	* testsuite/22_locale/messages/members/char/2.cc: Ditto.
+	* testsuite/22_locale/messages/members/char/3.cc: Ditto.
+	* testsuite/22_locale/num_get/get/char/1.cc: Ditto.
+	* testsuite/22_locale/num_get/get/char/2.cc: Ditto.
+	* testsuite/22_locale/num_get/get/char/3.cc: Ditto.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/num_get/get/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/num_get/get/wchar_t/3.cc: Ditto.
+	* testsuite/22_locale/num_put/put/char/1.cc: Ditto.
+	* testsuite/22_locale/num_put/put/char/2.cc: Ditto.
+	* testsuite/22_locale/num_put/put/char/3.cc: Ditto.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/num_put/put/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Ditto.
+	* testsuite/22_locale/numpunct/members/char/1.cc: Ditto.
+	* testsuite/22_locale/numpunct/members/wchar_t/1.cc: Ditto.
+
+2004-04-07  Paolo Carlini  
+
+	* config/locale/generic/time_members.cc
+	(__timepunct::_M_initialize_timepunct,
+	__timepunct::_M_initialize_timepunct): the correct
+	_M_amonth07 in the "C" locale is "Jul" and L"Jul", respectively.
+	* config/locale/gnu/time_members.cc
+	(__timepunct::_M_initialize_timepunct,
+	__timepunct::_M_initialize_timepunct): Ditto.
+	* testsuite/22_locale/time_get/get_monthname/char/4.cc: New.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc: New.
+
+	* testsuite/22_locale/time_get/date_order/char/1.cc: Remove junk.
+	* testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Ditto.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/1.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/2.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/3.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/4.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/5.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/6.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/7.cc: Ditto.
+	* testsuite/22_locale/time_put/put/char/8.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Ditto.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Ditto.
+
+	* testsuite/22_locale/time_put/put/char/9780-1.cc: Fix typos.
+
+2004-04-07  Paolo Carlini  
+
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct): Prefer
+	_NL_MONETARY_DECIMAL_POINT_WC, _NL_MONETARY_THOUSANDS_SEP_WC,
+	and __MON_GROUPING to _NL_NUMERIC_DECIMAL_POINT_WC,
+	_NL_NUMERIC_THOUSANDS_SEP_WC, and GROUPING.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct::_M_initialize_numpunct): Prefer DECIMAL_POINT
+	and THOUSANDS_SEP to the deprecated RADIXCHAR and THOUSEP.
+
+2004-04-06  Benjamin Kosnik  
+
+	Fixups for EDG front end.
+	* include/ext/rope: Instead of non-existent function
+	_Data_allocate, use allocator's allocate. Use this.
+	(namespace _Rope_constants): Move _S_max_rope_depth, and _Tag
+	enumerations from _Rope_RopeRep here.
+	* include/ext/ropeimpl.h: Same.
+	* src/ext-inst.cc (_S_min_len): Fix up definition.
+
+	* config/locale/gnu/ctype_members.cc: Qualify base class members
+	with this.
+	* config/locale/generic/ctype_members.cc: Same.
+	* config/locale/gnu/messages_members.h: Same.
+	* config/locale/generic/messages_members.h: Same.
+	* src/ctype.cc: Same.
+	* include/bits/codecvt.h: Same.
+
+	* include/bits/boost_concept_check.h: Declare.
+	(__error_type_must_be_an_unsigned_integer_type): Remove this.
+	(__error_type_must_be_an_integer_type): Remove this.
+	(__error_type_must_be_a_signed_integer_type): Remove this.
+
+	* config/io/basic_file_stdio.cc (__basic_file::sys_open): Remove cast.
+
+	* libsupc++/eh_alloc.cc (__cxa_free_exception): Add exception
+	specification to definition.
+	(__cxa_allocate_exception): Same.
+	* libsupc++/eh_catch.cc (__cxa_begin_catch): Same.
+	* libsupc++/eh_globals.cc (__cxa_get_globals_fast): Same.
+	(__cxa_get_globals): Same.
+
+	* libsupc++/del_op.cc: Add comment about freestanding.
+
+2004-04-05  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::deallocate):
+	The critical section is actually very small, only two assignments.
+
+2004-04-04  Paolo Carlini  
+	    Petur Runolfsson  
+
+	* testsuite/performance/27_io/filebuf_sputn_unbuf.cc: New,
+	adapted from libstdc++/11378.
+
+2004-04-03  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::allocate): Factor out
+	some duplicated code.
+	(__mt_alloc<>::_Bin_record): Spare the space of _M_free and _M_used
+	in the single threaded case.
+	* testsuite/performance/20_util/allocator/list_sort_search.cc:
+	Reorder and renumber the tests consistently with the other testfiles.
+	* testsuite/performance/20_util/allocator/map_mt_find.cc: Ditto.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Ditto.
+	* testsuite/performance/20_util/allocator/producer_consumer.cc: Ditto.
+
+2004-04-02  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::deallocate):
+	Rearrange arithmetic to avoid computing two divisions at
+	each deallocation.
+
+2004-04-01  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::_S_initialize):
+	Streamline the second half, wrapping it in a single
+	'#ifdef __GTHREADS if (__gthread_active_p())' and avoiding
+	conditionals inside loops.
+
+2004-04-01  Paolo Carlini  
+
+	PR libstdc++/14775
+	* acconfig.h: Rename _GLIBCXX_MEM_LIMITS to _GLIBCXX_RES_LIMITS.
+	* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT): Call
+	GLIBCXX_CHECK_SETRLIMIT_ancilliary for FSIZE too, adjust define
+	to _GLIBCXX_RES_LIMITS.
+	(GLIBCXX_CHECK_SETRLIMIT_ancilliary): Rename HAVE_MEMLIMIT_* to
+	HAVE_LIMIT_*.
+	* testsuite/testsuite_hooks.h: Declare set_file_limit.
+	* testsuite/testsuite_hooks.cc: Define it, using getrlimit
+	and setrlimit(RLIMIT_FSIZE).
+	* testsuite/27_io/fpos/14775.cc: New.
+	* config.h.in: Regenerate.
+	* configure: Likewise.
+
+2004-03-31  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc (__convert_to_v(long double&)):
+	In v3 uses of sscanf, the special floating-point numbers INF,
+	INFINITY, etc., cannot occur in input, therefore, if the latter
+	is too large, ERANGE is always stored in errno, no need of finitel.
+
+2004-03-30  Benjamin Kosnik  
+
+	PR libstdc++/14783
+	* include/bits/stl_tree.h: Adjust initialization list order.
+
+2004-03-29  Loren J. Rittle  
+
+	* testsuite/thread/pthread7-rope.cc: Update comment to reflect test.
+
+2004-03-29  Paolo Carlini  
+
+	* testsuite/thread/pthread7-rope.cc: Fix, unpredictably, depending
+	on allocator behavior, the memory pointed by data2 may well be not
+	trashed.
+
+2004-03-28  Chavdar Botev  
+
+	PR libstdc++/14245
+	* include/bits/basic_string.tcc
+	(basic_string::basic_string(const basic_string&)): Pass to
+	_Rep::_M_grab the actual allocator of the string being constructed
+	not the default constructed one.
+
+2004-03-27  Benjamin Kosnik  
+
+	libstdc++ PR/13598
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h
+	(__enc_traits::_M_destroy): New.
+	(__enc_traits::~__enc_traits): Use it.
+	(__enc_traits::operator=): Use _M_destroy, _M_init.
+	(__enc_traits::__enc_traits): Same.
+
+2004-03-27  Petur Runolfsson  
+
+	* testsuite/ext/enc_filebuf/char/13598.cc: New.
+
+2004-03-27  Paolo Carlini  
+
+	* include/ext/mt_allocator.h: Uglify consistently names of
+	variables, members and classes; tidy.
+
+2004-03-27  Dhruv Matani  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::deallocate):
+	Deallocation loop rewrote.
+
+2004-03-26  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::allocate,
+	__mt_alloc<>::deallocate): Protect two instances of
+	block->thread_id with __GTHREADS.
+
+2004-03-25  Gawain Bolton  
+
+	* include/bits/stl_tree.h (_Rb_tree_impl): Add _Node_allocator
+	default argument in constructors.
+	(_Rb_tree::_M_empty_initialize): Remove.
+
+2004-03-25  Benjamin Kosnik  
+
+	* testsuite/23_containers/map/operators/1_neg.cc: Adjust line numbers.
+	* testsuite/23_containers/set/operators/1_neg.cc: Same.
+
+2004-03-25  Dhruv Matani  
+
+	* include/bits/cpp_type_traits.h: Changed __is_pod
+	completely. Now, it does not use any of the previous type_traits
+	to detect the pod types, and it also detects function pointers as
+	POD types.
+
+	* include/bits/stl_tree.h: Introduced a new class _Rb_tree_impl,
+	which encapsulates the internal implementation of an rb_tree. Made
+	the allocator a base class of this class instead of the rb_tree,
+	which was not conforming. This _Rb_tree_impl class is also
+	specialized on whether the _Compare parameter is a POD type or
+	not. If so, then it maintains the comparison function as a data
+	member, otherwise it makes the _Compare parameter a base class of
+	itself. Also, _M_key_compare is now a function instead of a data
+	member, so that the above trick can work properly. Delegated the
+	initialization of the other data members to this newly created
+	class. Also, now other member functions of rb_tree must refer to
+	_M_key_compare as _M_impl._M_key_compare(). The other data members
+	(*) can be referenced to as _M_impl.(*), where
+	(*) includes _M_header, and _M_node_count.
+
+2004-03-25  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::tune):
+	Add _M_min_bin, the size in bytes of the smallest bin.
+	(__mt_alloc<>::tune()): Tweak accordingly.
+	(__mt_alloc<>::tune(size_t, ...)): Likewise.
+	(__mt_alloc<>::block_record): Change to a union: members next
+	and thread_id are never used at the same time.
+	(__mt_alloc<>::allocate): Update consistently.
+	(__mt_alloc<>::deallocate): Likewise.
+	(__mt_alloc<>::_S_initialize): Update setups of _S_binmap and
+	_S_bin_size for the configurable _M_min_size.
+
+2004-03-25  Dhruv Matani  
+
+	* include/bits/stl_list.h: Created a _List_impl class and made it
+	derive from the allocator, instead of the list deriving from the
+	allocator class, which was not conformant. Changed all references
+	from this->_M_node to this->_M_impl._M_node * bits/list.tcc: Same
+	as above (changed all references to the concerned variables).
+
+2004-03-25  Dhruv Matani  
+
+	* include/bits/stl_deque.h: Created a _Deque_impl class and made
+	it derive from the allocator, instead of the deque deriving from
+	the allocator class, which was not conformant. Changed all
+	references to the _M_start, _M_finish, _M_map, and _M_map_size to
+	_M_impl.*.
+	(_Deque_base<_Tp,_Alloc>::~_Deque_base()): Added this->
+	qualification in 2 places where it was missing.
+	(_Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t)): Same as
+	above.
+	* include/bits/deque.tcc: Same as above (changed all references to
+	the concerned variables).
+
+2004-03-25  Dhruv Matani  
+
+	* include/bits/stl_vector.h: Created a _Vector_impl class and made
+	it derive from the allocator, instead of the _Vector_base class,
+	deriving from the allocator which was not conformant. Changed all
+	references to the _M_start, _M_finish, and _M_end_of_storage to
+	_M_impl.*.
+	* include/bits/vector.tcc: Same as above (changed all references
+	to the concerned variables).
+
+2004-03-25  Dhruv Matani  
+
+	* testsuite/23_containers/deque/cons/clear_allocator.cc: New.
+	* testsuite/23_containers/list/cons/clear_allocator.cc: New.
+	* testsuite/23_containers/vector/cons/clear_allocator.cc: New.
+
+2004-03-24  Dhruv Matani  
+
+	* include/ext/malloc_allocator.h: Fixed the construct function to
+	call global placement new instead of assignment. Added a check
+	after the return from malloc to check whether returned pointer is
+	NULL, and if so, throw std::bad_alloc().
+	* include/ext/debug_allocator.h: Added a check in the deallocate
+	function to check whether the user has passed a NULL pointer or
+	not.
+
+2004-03-24  Benjamin Kosnik  
+
+	* docs/html/20_util/allocator.html: Add bitmap_allocator links.
+
+2004-03-24  Andreas Schwab  
+
+	* testsuite/lib/prune.exp (prune_g++_output): Ignore errata
+	warning from IA64 assembler.
+
+2004-03-24  Dhruv Matani  
+
+	* include/ext/bitmap_allocator.h: (_Bit_scan_forward) -> Made this
+	function call __builtin_ctz instead of the while loop.
+	(allocate) -> If condition has __builtin_expect.
+	(deallocate) -> Ditto.
+	Renamed a few left-over variables and typedefs according to the
+	C++STYLE mentioned in the documentation.
+	Protected calls to __gthread* by __gthread_active_p(), whose value
+	is cached in the local variable __threads_active.
+
+2004-03-24  Felix Yen  
+
+	* testsuite/performance/20_util/allocator/producer_consumer.cc:
+	Use linear algorithm for producer.
+
+2004-03-24  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__mt_alloc<>::allocate,
+	__mt_alloc<>::deallocate): Avoid redundant conditionals.
+
+2004-03-23  Benjamin Kosnik  
+
+	* include/bits/locale_facets.h: Tweaks for 80 column.
+	(__numpunct_cache::_M_cache): Move to locale_facets.tcc.
+	(__moneypunct_cache::_M_cache): Same.
+	(num_get): Don't inherit from __num_base.
+	(num_put): Same.
+	(money_get): Don't inherit from money_base.
+	(money_put): Same.
+	(__timepunct::_M_am_pm_format): New.
+	(time_get::_M_extract_num): Return iterator, use ios_base as argument.
+	(time_get::_M_extract_name): Same.
+	(time_get::_M_extract_via_format): Same.
+	* include/bits/locale_facets.tcc: Tweaks for 80 column.
+	Use _M_getloc instead of getloc.
+	* testsuite/22_locale/money_put/put/char/9780-3.cc: New.
+	* testsuite/22_locale/num_put/put/char/9780-2.cc: New.
+	* testsuite/22_locale/time_put/put/char/9780-1.cc: New.
+
+2004-03-22  Paolo Carlini  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Add pool_allocator.
+	* configure: Regenerate.
+	* config/allocator/pool_allocator_base.h: New.
+	* include/ext/pool_allocator.h: Convert to a standard-conforming
+	allocator.
+	* src/allocator.cc: Tweak instantiations.
+	* testsuite/performance/20_util/allocator/insert.cc: Add __pool_alloc.
+	* testsuite/performance/20_util/allocator/insert_insert.cc: Ditto.
+	* testsuite/performance/20_util/allocator/list_sort_search.cc: Ditto.
+	* testsuite/performance/20_util/allocator/map_mt_find.cc: Ditto.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Ditto.
+	* testsuite/performance/20_util/allocator/producer_consumer.cc: Ditto.
+
+2004-03-22  Hans-Peter Nilsson  
+
+	* config/cpu/cris/atomicity.h (__atomic_add): Remove "static
+	inline" and attribute-unused.  Qualify parameter __mem with
+	"volatile".
+	(__exchange_and_add): Ditto.  Add back memory clobber to asm.
+
+2004-03-20  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/2.cc:
+	Remove junk.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/7.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/8.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/9.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc:
+	Likewise.
+
+2004-03-20  Paolo Carlini  
+
+	* include/std/std_valarray.h: Document DR389 [Ready].
+	* docs/html/ext/howto.html: Add an entry for DR389.
+
+2004-03-19  Michael Eager  
+
+	* config/cpu/mips/atomicity.h:  Prevent reg loads between LL and
+	SC instructions.
+
+2004-03-19  Paolo Carlini  
+
+	* testsuite/22_locale/num_get/get/char/11.cc: Remove redundant
+	static_cast-s.
+	* testsuite/22_locale/num_get/get/char/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/13.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/14.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/15.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/13.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/14.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/15.cc: Likewise.
+
+2004-03-19  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/12077
+	* include/ext/stdio_sync_filebuf.h (showmanyc): Remove, there's
+	no way to find out the conversion used by the underlying FILE*.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: New.
+	* testsuite/27_io/objects/char/9.cc: Tweak.
+
+2004-03-19  Paolo Carlini  
+
+	PR libstdc++/14648
+	* include/ext/ropeimpl.h (rope<>::_S_apply_to_pieces): Fix
+	memory allocation/deallocation calls.
+	* testsuite/ext/14648.cc: New.
+
+2004-03-19  Peter Schmid  
+
+	PR libstdc++/14647
+	* include/backward/bvector.h (bit_vector): Allocator is in std
+	namespace.
+
+2004-03-19  Phil Edwards  
+
+	* acinclude.m4 (GLIBCXX_CHECK_WCHAR_T_SUPPORT):  Set LIBICONV,
+	not libiconv.  SUBST this variable as well.
+	* testsuite/Makefile.am (site.exp):  New target, based on that
+	created by automake.  Also set libiconv.
+
+	* configure, Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+	testsuite/Makefile.in:  Regenerate.
+
+2004-03-16  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Default setting is
+	new_allocator for all hosts.
+	* configure: Regenerate.
+
+2004-03-16  Paolo Carlini  
+
+	* testsuite/22_locale/num_put/put/char/4.cc: Fix for 64-bit pointers.
+	* testsuite/22_locale/num_put/put/wchar_t/4.cc: Likewise.
+
+2004-03-15  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Adjust the logic underlying the parsing of symbol to deal
+	correctly with an optional sign component (i.e., when either
+	negative_sign or positive_sign is empty)
+	* testsuite/22_locale/money_get/get/char/19.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/19.cc: New.
+
+2004-03-15  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Do not accept an incomplete currency symbol.
+	* testsuite/22_locale/money_get/get/char/18.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/18.cc: New.
+
+2004-03-13  Benjamin Kosnik  
+
+	* config/allocator: New.
+	* config/allocator/bitmap_allocator_base.h: New.
+	* config/allocator/malloc_allocator_base.h: New.
+	* config/allocator/mt_allocator_base.h: New.
+	* config/allocator/new_allocator_base.h: New.
+	* include/bits/allocator.h: Include c++allocator.h.
+	* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): New.
+	* aclocal.m4: Regenerate.
+	* configure.ac: Use GLIBCXX_ENABLE_ALLOCATOR.
+	* configure: Regenerate.
+	* include/Makefile.am (host_headers_extra): Add c++allocator.h.
+	* include/Makefile.in: Regenerate.
+	* docs/html/configopts.html: Add enable-libstdcxx-allocator.
+
+2004-03-12  Benjamin Kosnik  
+
+	* include/bits/allocator.h: Revert.
+
+2004-03-12  Paolo Carlini  
+
+	* docs/html/ext/howto.html: Add entry for DR 253 [Ready].
+	* include/bits/gslice_array.h: Add comment about DR 253.
+	* include/bits/indirect_array.h: Likewise.
+	* include/bits/mask_array.h: Likewise.
+	* include/bits/slice_array.h: Likewise.
+
+2004-03-12  Benjamin Kosnik  
+
+	* testsuite/20_util/allocator/14176.cc: New.
+	* include/ext/mt_allocator.h: Formatting fixes.
+
+2004-03-11  Dhruv Matani  
+
+	* include/Makefile.am (ext_headers): Add
+	${ext_srcdir}/bitmap_allocator.h .
+	* include/Makefile.in: Regenerate.
+	* docs/html/ext/ballocator_doc.txt: New file.
+	* include/ext/bitmap_allocator.h: New file.
+	* testsuite/performance/20_util/allocator/list_sort_search.cc: Add
+	test.
+	* testsuite/performance/20_util/allocator/map_mt_find.cc: Likewise.
+	* testsuite/performance/20_util/allocator/producer_consumer.cc: Add
+	test for the bitmap_allocator<>.
+	* testsuite/performance/20_util/allocator/insert.cc: Likewise.
+	* testsuite/performance/20_util/allocator/insert_insert.cc: Likewise.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Likewise.
+
+2004-03-11  Paolo Carlini  
+
+	* include/std/std_complex.h (pow(const complex&, const _Tp&),
+	pow(const _Tp&, const complex&), pow(const complex&,
+	const complex&)): Fully qualify with std:: a few calls.
+	* testsuite/26_numerics/complex/13450.cc: Minor tweak.
+
+2004-03-11  Steven Bosscher  
+
+	PR libstdc++/11706
+	* include/c_std/cmath.tcc (__cmath_power): Define inline.
+
+2004-03-10  Kelley Cook  
+
+	* configure.ac: Bump AC_PREREQ to 2.59.
+
+2004-03-10  Paolo Carlini  
+
+	* testsuite/26_numerics/valarray_subset_assignment.cc: Fix typos.
+
+2004-03-10  Paul Kienzle  
+	    Paolo Carlini  
+
+	PR libstdc++/13450
+	* include/std/std_complex.h (pow(const complex&, const _Tp&),
+	pow(const _Tp&, const complex&)): Use cmath pow only when safe.
+	* testsuite/26_numerics/complex/13450.cc: New.
+
+	* testsuite/26_numerics/cmath/overloads.C: Rename to overloads.cc.
+	* testsuite/26_numerics/complex/pow.C: Rename to pow.cc and fix.
+
+2004-03-10  Jerry Quinn  
+
+	PR libstdc++/3247
+	* include/bits/gslice_array.h (gslice_array()): Make public.
+	(operator=(gslice_array)): Make public.  Implement.
+	* include/bits/indirect_array.h (indirect_array()): Make public.
+	* include/bits/mask_array.h (mask_array()): Make public.
+	(operator=(mask_array)): Make public.  Implement.
+	* include/bits/valarray_array.tcc (__valarray_copy):
+	Comment.  Add versions for gslice_array and mask_array.
+	* testsuite/26_numerics/valarray_subset_assignment.cc:  New test.
+
+2004-03-09  Benjamin Kosnik  
+
+	* testsuite/23_containers/deque/modifiers/swap.cc: Add in bits for
+	non-weak systems.
+	* testsuite/23_containers/vector/modifiers/swap.cc: Same.
+	* testsuite/23_containers/set/modifiers/swap.cc: Same.
+	* testsuite/23_containers/multiset/modifiers/swap.cc: Same.
+	* testsuite/23_containers/multimap/modifiers/swap.cc: Same.
+	* testsuite/23_containers/map/modifiers/swap.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap.cc: Same.
+
+	* testsuite/22_locale/locale/cons/12658_thread.cc: Catch exceptions.
+
+2004-03-08  Benjamin Kosnik  
+
+	PR c++/13658
+	* testsuite/23_containers/deque/modifiers/swap.cc: New.
+	* testsuite/23_containers/list/modifiers/swap.cc: New.
+	* testsuite/23_containers/map/modifiers/swap.cc: New.
+	* testsuite/23_containers/multimap/modifiers/swap.cc: New.
+	* testsuite/23_containers/multiset/modifiers/swap.cc: New.
+	* testsuite/23_containers/set/modifiers/swap.cc: New.
+	* testsuite/23_containers/vector/modifiers/swap.cc: New.
+
+2004-03-08  Petur Runolfsson  
+
+	PR libstdc++/12658
+	* testsuite/22_locale/locale/cons/12658_thread.cc: New.
+
+2004-03-08  Paolo Carlini  
+
+	* docs/html/ext/howto.html: Add entry for DR 103 [WP].
+	* include/bits/stl_multiset.h: Add comment about DR 103.
+	* include/bits/stl_set.h: Likewise.
+
+2004-03-08  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	The value _space_ indicates that at least one space is required
+	at that position.
+	* testsuite/22_locale/money_get/get/char/17.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/17.cc: New.
+
+	* testsuite/22_locale/money_get/get/char/7.cc: Minor tweaks.
+	* testsuite/22_locale/money_get/get/wchar_t/7.cc: Likewise.
+
+	* include/bits/locale_facets.tcc (money_get<>::do_get(long_double&)):
+	Remove redundant conditional on __str.size().
+
+2004-03-08  Benjamin Kosnik  
+
+	* include/bits/allocator.h: Switch defaults to mt_alloc.
+
+2004-03-06  Benjamin Kosnik  
+
+	* include/ext/mt_allocator.h (_S_initialize): If
+	!__GTHREAD_MUTEX_INIT, then initialize _S_thread_freelist_mutex.
+
+2004-03-06  Benjamin Kosnik  
+
+	PR libstdc++/12658
+	* src/locale_init.cc (locale::locale): Lock critical regions with
+	external mutexes.
+	(locale::global): Same.
+	* include/bits/concurrence.h (__glibcxx_mutex_define_initialized):
+	Add in once bits for cases without __GTHREAD_MUTEX_INIT.
+	(__glibcxx_mutex_lock): Same.
+
+	* config/cpu/generic/atomicity.h: Remove
+	_GLIBCXX_NEED_GENERIC_MUTEX, use concurrence.h.
+	* src/misc-inst.cc: Move all locking bits out of this file.
+
+	* config/os/hpux/os_defines.h: Remove _GLIBCXX_INST_ATOMICITY_LOCK.
+	* src/misc-inst.cc: Same.
+	* config/cpu/hppa/atomicity.h: Same.
+
+	* config/linker-map.gnu: Remove types in the signature of atomic
+	exports, as they may vary.
+
+2004-03-06  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: Tweak the comment preceding
+	has_facet: doesn't throw.
+
+2004-03-06  Paolo Carlini  
+
+	* testsuite/22_locale/money_get/get/char/1.cc: Clean up.
+	* testsuite/22_locale/money_get/get/char/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.
+
+2004-03-06  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+	num_get<>::_M_extract_int, num_get<>::do_get(bool&),
+	__pad<>::_S_pad): Prefer plain operator== to traits::eq().
+	* testsuite/testsuite_character.h (struct __gnu_test::character):
+	Provide operator==.
+	* testsuite/testsuite_hooks.h (struct __gnu_test::pod_char):
+	Likewise.
+
+2004-03-05  Paolo Carlini  
+
+	* testsuite/27_io/fpos/14320-2.cc: Remove xfail.
+
+2004-03-04  Benjamin Kosnik  
+
+	* testsuite/23_containers/multiset/insert/1.cc: Test result string.
+
+	* testsuite/23_containers/bitset/invalidation/1.cc: Main always
+	returns 0.
+	* testsuite/23_containers/deque/invalidation/4.cc: Same.
+	* testsuite/23_containers/list/invalidation/1.cc: Same.
+	* testsuite/23_containers/list/invalidation/2.cc: Same.
+	* testsuite/23_containers/list/invalidation/3.cc: Same.
+	* testsuite/23_containers/list/invalidation/4.cc: Same.
+	* testsuite/23_containers/map/invalidation/2.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/1.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/1.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
+	* testsuite/23_containers/set/invalidation/1.cc: Same.
+	* testsuite/23_containers/set/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/1.cc: Same.
+	* testsuite/23_containers/vector/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/3.cc: Same.
+	* testsuite/23_containers/vector/invalidation/4.cc: Same.
+
+2004-03-04  Paolo Carlini  
+
+	* scripts/testsuite_flags.in: Add "-D_GLIBCXX_ASSERT" to
+	CXXFLAGS_save.
+	* testsuite/lib/libstdc++.exp: Don't add it conditionally to
+	DEFAULT_CXXFLAGS.
+	* testsuite/18_support/numeric_limits.cc: Remove "-D_GLIBCXX_ASSERT"
+	from the dg-options.
+	* testsuite/23_containers/vector/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/vector/resize/1.cc: Likewise.
+	* testsuite/26_numerics/complex_value.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/1.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/3.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/char/2.cc: Likewise.
+	* testsuite/27_io/objects/char/5.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/5.cc: Likewise.
+	* testsuite/backward/11460.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+
+	* testsuite/21_strings/basic_string/compare/char/1.cc: Add
+	missing test variable.
+	* testsuite/21_strings/basic_string/compare/wchar_t/1.cc: Add
+	missing test variable.
+
+2004-03-04  Benjamin Kosnik  
+
+	* testsuite/20_util/allocator/1.cc: Provide explicit
+	instantiations for non-weak systems.
+	* testsuite/20_util/binders.cc: Same.
+	* testsuite/20_util/allocator/8230.cc: Same.
+	* testsuite/20_util/allocator/10378.cc: Same.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Same.
+	* testsuite/22_locale/ctype/is/char/2.cc: Same.
+	* testsuite/thread/pthread7-rope.cc: Same.
+	* testsuite/thread/pthread6.cc: Same.
+	* testsuite/thread/pthread5.cc: Same.
+	* testsuite/thread/pthread4.cc: Same.
+	* testsuite/thread/pthread1.cc: Same.
+	* testsuite/ext/rope.cc: Same.
+	* testsuite/ext/hash_set.cc: Same.
+	* testsuite/ext/hash_map.cc: Same.
+	* testsuite/ext/concept_checks.cc: Same.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Same.
+	* testsuite/25_algorithms/unique/2.cc: Same.
+	* testsuite/25_algorithms/unique/1.cc: Same.
+	* testsuite/25_algorithms/rotate.cc: Same.
+	* testsuite/25_algorithms/min_max.cc: Same.
+	* testsuite/25_algorithms/equal.cc: Same.
+	* testsuite/24_iterators/rel_ops.cc: Same.
+	* testsuite/24_iterators/iterator.cc: Same.
+	* testsuite/24_iterators/insert_iterator.cc: Same.
+	* testsuite/24_iterators/front_insert_iterator.cc: Same.
+	* testsuite/24_iterators/back_insert_iterator.cc: Same.
+	* testsuite/23_containers/vector/resize/1.cc: Same.
+	* testsuite/23_containers/vector/modifiers/2.cc: Same.
+	* testsuite/23_containers/vector/modifiers/1.cc: Same.
+	* testsuite/23_containers/vector/invalidation/4.cc: Same.
+	* testsuite/23_containers/vector/invalidation/3.cc: Same.
+	* testsuite/23_containers/vector/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/1.cc: Same.
+	* testsuite/23_containers/vector/element_access/1.cc: Same.
+	* testsuite/23_containers/vector/cons/6513.cc: Same.
+	* testsuite/23_containers/vector/cons/3.cc: Same.
+	* testsuite/23_containers/vector/cons/2.cc: Same.
+	* testsuite/23_containers/vector/cons/1.cc: Same.
+	* testsuite/23_containers/vector/capacity/8230.cc: Same.
+	* testsuite/23_containers/vector/capacity/1.cc: Same.
+	* testsuite/23_containers/vector/bool/6886.cc: Same.
+	* testsuite/23_containers/stack/members/7158.cc: Same.
+	* testsuite/23_containers/set/invalidation/2.cc: Same.
+	* testsuite/23_containers/set/invalidation/1.cc: Same.
+	* testsuite/23_containers/queue/members/7157.cc: Same.
+	* testsuite/23_containers/priority_queue/members/7161.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
+	* testsuite/23_containers/multiset/insert/1.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/operators/1.cc: Same.
+	* testsuite/23_containers/map/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/invalidation/1.cc: Same.
+	* testsuite/23_containers/map/insert/1.cc: Same.
+	* testsuite/23_containers/list/operators/4.cc: Same.
+	* testsuite/23_containers/list/operators/3.cc: Same.
+	* testsuite/23_containers/list/operators/2.cc: Same.
+	* testsuite/23_containers/list/operators/1.cc: Same.
+	* testsuite/23_containers/list/modifiers/3.cc: Same.
+	* testsuite/23_containers/list/modifiers/2.cc: Same.
+	* testsuite/23_containers/list/modifiers/1.cc: Same.
+	* testsuite/23_containers/list/invalidation/4.cc: Same.
+	* testsuite/23_containers/list/invalidation/3.cc: Same.
+	* testsuite/23_containers/list/invalidation/2.cc: Same.
+	* testsuite/23_containers/list/invalidation/1.cc: Same.
+	* testsuite/23_containers/list/cons/9.cc: Same.
+	* testsuite/23_containers/list/cons/8.cc: Same.
+	* testsuite/23_containers/list/cons/7.cc: Same.
+	* testsuite/23_containers/list/cons/6.cc: Same.
+	* testsuite/23_containers/list/cons/5.cc: Same.
+	* testsuite/23_containers/list/cons/4.cc: Same.
+	* testsuite/23_containers/list/cons/3.cc: Same.
+	* testsuite/23_containers/list/cons/2.cc: Same.
+	* testsuite/23_containers/list/cons/1.cc: Same.
+	* testsuite/23_containers/list/capacity/1.cc: Same.
+	* testsuite/23_containers/deque/operators/1.cc: Same.
+	* testsuite/23_containers/deque/invalidation/4.cc: Same.
+	* testsuite/23_containers/deque/invalidation/3.cc: Same.
+	* testsuite/23_containers/deque/invalidation/2.cc: Same.
+	* testsuite/23_containers/deque/invalidation/1.cc: Same.
+	* testsuite/23_containers/deque/cons/2.cc: Same.
+	* testsuite/23_containers/deque/cons/1.cc: Same.
+
+	* src/allocator.cc: Add char, wchar_t instantiations
+	to match extern template declarations in memory.h.
+
+2004-03-03  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
+	Fix warning regression.
+
+2004-03-03  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
+	Deal properly with empty __digits and negative frac_digits,
+	clean-up a bit.
+
+2004-03-03  Jonathan Wakely  
+
+	* docs/html/documentation.html: Regenerate.
+
+2004-03-02  Paolo Carlini  
+
+	PR libstdc++/14320
+	* include/bits/postypes.h (class streamoff): Remove, now
+	streamoff is just typedef a 64 bit signed integer type.
+	(class fpos): Tweak consistently.
+	* testsuite/27_io/fpos/14320-1.cc: New.
+	* testsuite/27_io/fpos/14320-2.cc: New.
+	* testsuite/27_io/fpos/14320-3.cc: New.
+	* testsuite/27_io/fpos/14320-4.cc: New.
+	* testsuite/27_io/fpos/14320-5.cc: New.
+	* testsuite/27_io/fpos/mbstate_t/4_neg.cc: xfail for now.
+
+2004-03-02  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Reorganize a bit the main parsing loop, thus early detecting
+	an empty value component.
+	* testsuite/22_locale/money_get/get/char/16.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/16.cc: New.
+
+2004-03-02  Benjamin Kosnik  
+
+	Support automake 1.8.2
+	* configure.ac (AM_INIT_AUTOMAKE): Add -Wno-override.
+	* po/Makefile.am (EXTRA_DIST): New.
+	* po/Makefile.in: Regenerate.
+	* Makefile.in: Same.
+	* include/Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* src/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+
+	* include/Makefile.am (${host_builddir}/gthr-posix.h): Use
+	__GXX_WEAK__ instead of SUPPORTS_WEAK.
+	(${host_builddir}/gthr-default.h): Same.
+	(${host_builddir}/gthr.h): Same.
+	* acinclude.m4 (GLIBCXX_ENABLE_THREAD): Remove
+	_GLIBCXX_SUPPORTS_WEAK, as this behavior can be modified via
+	-fno-weak.
+	* aclocal.m4: Regenerate.
+	* acconfig.h: Remove _GLIBCXX_SUPPORTS_WEAK.
+	* config.h.in: Regenerate.
+	* configure: Same.
+
+2004-03-01  Benjamin Kosnik  
+
+	Support autoconf 2.59
+	* acinclude.m4: Quote correctly.
+	* aclocal.m4: Regenerate.
+	* linkage.m4: Same.
+
+2004-03-01  Benjamin Kosnik  
+
+	* docs/html/test.html: Add multilib RUNTESTFLAGS example.
+
+	* docs/html/18_support/howto.html: Add bit about writing to
+	stderr, mostly by Zack.
+
+2004-03-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract,
+	money_get<>::do_get(string_type&)): ... and two more.
+
+2004-03-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Fix thinkos in the switch from string_type& to string& as last
+	argument.
+
+2004-03-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	Also when parsing exponent sign, first look for thousands_sep
+	and decimal_point; tweak a bit.
+	* testsuite/22_locale/num_get/get/char/15.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/15.cc: New.
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+	num_get<>::_M_extract_int): Reorder some conditionals.
+
+2004-03-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Consistently with numpunct, enforce the requirements in
+	22.2.6.3, p3 for the thousands separators; tweak a bit.
+	* testsuite/22_locale/money_get/get/char/15.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/15.cc: New.
+
+2004-03-01  David Billinghurst 
+
+	* testsuite/lib/libstdc++.exp (v3-list-tests): Use
+	testsuite_files from correct multilib blddir when running
+	testsuite.
+
+2004-02-29  Phil Edwards  
+
+	* testsuite/Makefile.am (check-abi, check-abi-verbose):  Copy
+	the summary file to the logfile.
+	* testsuite/Makefile.in:  Regenerate.
+
+2004-02-28  John David Anglin  
+
+	* config/cpu/hppa/atomicity.h (__atomic_add): Make first argument
+	volatile.
+	* config/os/hpux/os_defines.h (_GLIBCXX_INST_ATOMICITY_LOCK): Use
+	__GXX_WEAK__ instead of _GLIBCXX_SUPPORTS_WEAK.
+
+2004-02-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	According to 22.2.3.1, p2, 'units' may be followed by 'e' with
+	no 'decimal-point' in the middle: in this case too we must fix
+	up __found_grouping; slightly tweak.
+	* testsuite/22_locale/num_get/get/char/14.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/14.cc: New.
+
+2004-02-27  Eric Christopher  
+	    Phil Edwards  
+
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc,
+	testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc,
+	testsuite/22_locale/collate/hash/wchar_t/2.cc,
+	testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc,
+	testsuite/22_locale/collate/transform/wchar_t/2.cc,
+	testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	Use dg-require-iconv.
+	* testsuite/lib/libstdc++.exp:  Load target-supports.exp.
+
+2004-02-27  Phil Edwards  
+	    Eric Christopher  
+
+	* testsuite/config/default.exp:  Update with comments.
+	(${tool}_target_compile):  New wrapper routine.
+	* testsuite/lib/dg-options.exp:  New file, with dg-require-iconv.
+	* testsuite/lib/libstdc++.exp:  Update with comments and cosmetic
+	fixes.
+	(load_gcc_lib, v3track):  New routines.
+	(v3-init):  Rename to libstdc++_init.
+	* testsuite/libstdc++-dg/normal.exp:  No longer call v3-init.
+	Move DEFAULT_CXXFLAGS handling into libstdc++_init.
+
+2004-02-27  Benjamin Kosnik  
+
+	* config/cpu/hppa/atomicity.h: Include c++config.h to get defines.
+
+	* src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx.
+
+	* config/os/irix/irix5.2/atomicity.h: Merge..
+	* config/os/irix/irix6.5/atomicity.h: Merge..
+	* config/os/irix/atomicity.h: ...into this.
+	* config/os/irix/atomic_word.h: New.
+	* configure.host: Set atomic_word_dir for irix.
+
+	* hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock.
+	* i386/atomicity.h: Same.
+	* m68k/atomicity.h: Same.
+	* sparc/atomicity.h: Same.
+
+2004-02-27  David Edelsohn  
+
+	* config/os/aix/atomicity.h: Use __gnu_cxx namespace. Remove
+	static, and inline keywords.
+
+2004-02-27  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+	num_get<>::_M_extract_int, money_get<>::_M_extract): If appropriate,
+	call reserve on the __tmp_gruping string.
+	(num_get<>::_M_extract_float): Don't append unnecessarily a
+	char() to the returned string.
+	* include/bits/locale_facets.tcc: Trivial reformattings.
+
+2004-02-27  Paolo Carlini  
+
+	* include/bits/locale_facets.h (money_get<>::_M_extract):
+	Change signature: now takes a plain string&.
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Update consistently the definition; use the moneypunct cache
+	to parse the value; use swap to change __units.
+	(money_get<>::do_get(long double&)): Update call of _M_extract,
+	avoid ctype::narrow, not correct wrt the standard.
+	(money_get<>::do_get(string_type&)): Likewise, update call
+	of _M_extract, use ctype::widen.
+	* src/locale-inst.cc: Tweak instantiations of _M_extract.
+
+2004-02-26  Ian Lance Taylor  
+
+	* testsuite/demangle/abi_examples/01.cc: Expect error -2.
+	* testsuite/demangle/abi_examples/02.cc: Likewise.
+	* testsuite/demangle/regression/cw-11.cc: Likewise.
+	* testsuite/demangle/regression/cw-16.cc: Change two expected
+	results to match libiberty demangler output.
+
+2004-02-26  Benjamin Kosnik  
+
+	PR libstdc++/10246
+	* libsupc++/Makefile.am: Use libiberty demangler.
+	(c_sources): Add cp-demangle.c.
+	* libsupc++/Makefile.in: Regenerate.
+	* src/Makefile.am (sources): Remove demangle.cc.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.am (bits_headers): Move demangle.h.
+	(ext_headers): ...here.
+	* include/Makefile.in: Regenerate.
+	* include/bits/demangle.h: Move...
+	* include/ext/demangle.h: ...here.
+	* src/demangle.cc: Remove.
+
+2004-02-26  Benjamin Kosnik  
+
+	* include/bits/demangle.h: Add type template parameter to all
+	templates with just an Allocator template parameter.
+
+2004-02-25  Benjamin Kosnik  
+
+	* include/bits/atomicity.h: New, forward declarations for __atomic_add
+	and __exchange_and_add.
+	* config/cpu/generic/atomic_word.h: New, typdef for atomic word.
+	* config/cpu/cris/atomic_word.h: Same.
+	* config/cpu/sparc/atomic_word.h: Same.
+	* include/bits/ios_base.h (_Callback_list::_M_remove_reference):
+	Qualifiy with __gnu_cxx.
+	(_Callback_list::_M_add_reference): Same.
+	* include/bits/locale_classes.h (locale::facet::_M_add_reference): Add.
+	(locale::facet::_M_remove_reference): Same.
+	(locale::_Impl::_M_add_reference): Add.
+	(locale::_Impl::_M_remove_reference): Same.
+	* include/bits/basic_string.h (basic_string::_Rep::_M_refcopy): Same.
+	(basic_string::_Rep::_M_dispose): Same.
+	* src/ios.cc (ios_base::xalloc): Same.
+	* src/ios_init.cc (ios_base::Init::Init): Same.
+	(ios_base::Init::~Init): Same.
+	* src/locale.cc (locale::id::_M_id): Same.
+	* config/cpu/i486/atomicity.h: Use __gnu_cxx namespace. Remove
+	static, and inline keywords.
+	* config/cpu/alpha/atomicity.h: Same.
+	* config/cpu/cris/atomicity.h: Same.
+	* config/cpu/generic/atomicity.h: Same.
+	* config/cpu/hppa/atomicity.h: Same.
+	* config/cpu/i386/atomicity.h: Same.
+	* config/cpu/ia64/atomicity.h: Same.
+	* config/cpu/m68k/atomicity.h: Same.
+	* config/cpu/mips/atomicity.h: Same.
+	* config/cpu/powerpc/atomicity.h: Same.
+	* config/cpu/s390/atomicity.h: Same.
+	* config/cpu/sparc/atomicity.h: Same.
+
+	* src/Makefile.am (host_sources): Add atomicity.cc.
+	(atomicity.cc): New rule.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.am (host_headers): Remove host atomicity.h.
+	(host_headers): Add atomic_word.h.
+	(bits_headers): Add bits atomicity.h.
+	Change ATOMICITY_INC_SRCDIR to ATOMICITY_SRCDIR.
+	* include/Makefile.in: Regenerate.
+	* configure.host (atomic_word_dir): Add.
+	* configure.ac: Substitute ATOMIC_WORD_SRCDIR. Change
+	ATOMICITY_INC_SRCDIR to ATOMICITY_SRCDIR.
+	* configure: Regenerate.
+	* config/linker-map.gnu: Export __exchange_and_add, and __atomic_add.
+
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2004-02-25  Jonathan Wakely  
+
+	* docs/html/20_util/howto.html, docs/html/20_util/allocator.html,
+	docs/html/ext/howto.html, docs/html/ext/mt_allocator.html:
+	Fix markup, more  tags.
+
+2004-02-25  Carlo Wood  
+
+	* bits/demangle.h
+	namespace __gnu_cxx::demangler
+	(session::qualifier_list_Allocator): Add
+	(session::M_qualifier_list_alloc): Add
+	(session::decode_type_with_postfix):
+	Use M_qualifier_list_alloc instead of calling operator new/delete.
+
+2004-02-24  Paolo Carlini  
+
+	PR libstdc++/14252
+	* include/bits/postypes.h (class streamoff): Add operator++(),
+	operator++(int), operator--() and operator--(int).
+	* testsuite/27_io/fpos/14252.cc: New.
+
+2004-02-24  Richard Sandiford  
+
+	* include/bits/locale_facets.tcc (num_get::_M_extract_int): Fix bounds
+	error in handling of hex constants.
+
+2004-02-24  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
+	Prefer basic_string::append to operator+= and a temporary.
+
+2004-02-23  Benjamin Kosnik  
+
+	* libsupc++/vterminate.cc (__gnu_cxx::__verbose_terminate_handler):
+	Only use fputs, not write.
+
+2004-02-23  Benjamin Kosnik  
+
+	* include/ext/malloc_allocator.h: Add operators ==, !=.
+	* include/ext/new_allocator.h: Add operators ==, !=.
+	* include/ext/mt_allocator.h (__mt_alloc::tune): New.
+	(__mt_alloc::_S_get_options): New.
+	(__mt_alloc::_S_set_options): New.
+	(__mt_alloc::_S_thread_key_destr): To _S_destroy_thread_key.
+	(__mt_alloc::_S_no_of_bins): To _S_bin_size.
+	Move functions out of line, simplify, format.
+	* src/allocator.cc: Simplify explicit instantiations.
+	* include/bits/allocator.h: Tweak.
+
+2004-02-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
+	Restructure formatting of value component, first dealing with
+	the non-decimal digits; use reserve.
+
+2004-02-22  Paolo Carlini  
+
+	* include/bits/locale_facets.h (class money_get): Inherit
+	from money_base too; tweak declaration of _M_extract, now
+	parameterized on _Intl too.
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
+	Update definition to use the cache; call reserve on __res to
+	avoid multiple reallocations; fix parsing of sign component
+	according to 22.2.6.1.2, p3.
+	(money_get<>::do_get(long double&),
+	money_get<>::do_get(string_type&)): Update calls of _M_extract.
+	* src/locale-inst.cc:  Add instantiations of
+	money_get::_M_extract and money_get::_M_extract.
+	* testsuite/22_locale/money_get/get/char/14.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/14.cc: Ditto.
+
+2004-02-21  Mark Mitchell  
+
+	* libsupc++/vterminate.cc
+	(__gnu_cxx::__verbose_terminate_handler): Guard against recursive
+	calls to terminate.
+	* src/demangle.cc (__cxa_demangle): Wrap in try-catch block.
+
+	* testsuite/testsuite_hooks.cc (__gnu_test::set_memory_limits): Do
+	not set RLIMIT_AS on HP-UX.
+
+2004-02-21  Mark Mitchell  
+
+	* testsuite/testsuite_hooks.cc (__gnu_test::set_memory_limits): Do
+	not set RLIMIT_AS on HP-UX.
+
+2004-02-21  Paolo Carlini  
+
+	* include/bits/locale_facets.h (class money_base): Add { _S_minus,
+	_S_zero, _S_end } enum, _S_atoms.
+	(struct __moneypunct_cache<>): Parameterize on _Intl too; add
+	_M_grouping_size, _M_curr_symbol_size, _M_positive_sign_size,
+	_M_negative_sign_size, _M_atoms; tweak constructor consistently.
+	(__moneypunct_cache<>::~__moneypunct_cache): Update.
+	(__moneypunct_cache<>::_M_cache): Fill the cache.
+	(class moneypunct): Tweak __cache_type typedef.
+	(class money_put): Inherit from money_base too; tweak declaration
+	of _M_insert, now parameterized on _Intl.
+	* include/bits/locale_facets.tcc
+	(struct __use_cache<__moneypunct_cache<_CharT, _Intl> >): New.
+	(money_put<>::_M_insert): Update definition to use the cache;
+	call reserve on __res to avoid multiple reallocations.
+	(money_put<>::do_put(long double),
+	money_put<>::do_put(const string_type&): Update calls of _M_insert.
+	* config/locale/generic/monetary_members.cc
+	(moneypunct::_M_initialize_moneypunct,
+	moneypunct::_M_initialize_moneypunct,
+	moneypunct::_M_initialize_moneypunct,
+	moneypunct::_M_initialize_moneypunct): Update.
+	* config/locale/gnu/monetary_members.cc: Likewise.
+	* config/locale/gnu/monetary_members.cc
+	(moneypunct::~moneypunct(),
+	moneypunct::~moneypunct()): Likewise.
+	* src/globals_locale.cc: Tweak fake_money_cache_c.
+	* src/locale-inst.cc: Add instantiations for
+	money_put::_M_insert and money_put::_M_insert and
+	__moneypunct_cache, __moneypunct_cache.
+	* src/locale_facets.cc: Define money_base::_S_atoms.
+	* src/locale_init.cc: Update placement new of
+	__moneypunct_cache, __moneypunct_cache,
+	__moneypunct_cache, __moneypunct_cache.
+
+	* config/locale/generic/numeric_members.cc: Clean up.
+	* config/locale/gnu/numeric_members.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
+
+2004-02-20  Mark Mitchell  
+
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Open
+	FIFO for writing with ios_base::in|ios_base::out.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Open FIFO for writing
+	with "r+".
+
+2004-02-19  David Edelsohn  
+
+	* 22_locale/collate/compare/wchar_t/2.cc: Change input-charset
+	from iso-8859-1 to ISO8859-1.
+	* 22_locale/collate/compare/wchar_t/wrapped_env.cc: Same.
+	* 22_locale/collate/compare/wchar_t/wrapped_locale.cc: Same.
+	* 22_locale/collate/hash/wchar_t/2.cc: Same.
+	* 22_locale/collate/hash/wchar_t/wrapped_env.cc: Same.
+	* 22_locale/collate/hash/wchar_t/wrapped_locale.cc: Same.
+	* 22_locale/collate/transform/wchar_t/2.cc: Same.
+	* 22_locale/collate/transform/wchar_t/wrapped_env.cc: Same.
+	* 22_locale/collate/transform/wchar_t/wrapped_locale.cc: Same.
+
+2004-02-18  Paolo Carlini  
+
+	* include/bits/locale_facets.h (money_get<>::_M_extract):
+	New, helper for do_get.
+	(money_put<>::_M_insert): Likewise, for do_put.
+	* include/bits/locale_facets.tcc (money_get<>::_M_extract,
+	money_put<>::_M_insert): Define.
+	(money_get<>::do_get(long double&), money_get<>::do_get(
+	string_type&), money_put::do_put(long double),
+	money_put::do_put(const string_type&)): Use the helpers.
+
+2004-02-18  Paolo Carlini  
+
+	* config/io/basic_file_stdio.cc (__gnu_internal::xwritev):
+	Rewrite, avoiding recursion.
+	(__gnu_internal::xwrite): Minor tweaks.
+
+2004-02-17  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: Removed the last
+	pointer. Deallocated blocks are now added to the front of
+	freelists as proposed by Felix Yen.  This gives roughly 10%
+	performance boost and saves some memory.
+	* docs/html/ext/mt_allocator.html: Change due to that deallocated
+	blocks now are added to the front of freelists. The reason to this
+	approach is also explained.
+
+2004-02-17  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+	num_get<>::_M_extract_int, money_get<>::do_get): Simplify
+	grouping fidelity conditional.
+
+2004-02-16  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/overflow/char/13858.cc:
+	Qualify exception with std::.
+	* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+2004-02-16  Paolo Carlini  
+
+	* testsuite/ext/enc_filebuf/char/13189.cc: Don't check
+	for now that the catch block is not reached.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Likewise.
+
+2004-02-16  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
+	Fix parsing of the remaining sign characters.
+	* 22_locale/money_get/get/char/2.cc: Tweak: now, correctly,
+	the input is scanned 'til eof.
+	* 22_locale/money_get/get/char/4.cc: Likewise.
+	* 22_locale/money_get/get/wchar_t/2.cc: Likewise.
+	* 22_locale/money_get/get/wchar_t/4.cc: Likewise.
+	* 22_locale/money_get/get/char/8.cc: Tweak: override do_neg_format,
+	not do_pos_format: the former is the only one that matters during
+	input.
+	* 22_locale/money_get/get/wchar_t/8.cc: Likewise.
+
+	* 22_locale/money_get/get/char/6.cc: Minor tweak.
+	* 22_locale/money_get/get/wchar_t/6.cc: Likewise.
+
+2004-02-15  David Asher  
+
+	PR libstdc++/11352
+	* include/bits/locale_facets.tcc (__pad<>::_S_pad): Don't
+	access __olds beyond __oldlen.
+
+2004-02-14  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Make
+	sure the exception is actually thrown.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+2004-02-14  Paolo Carlini  
+
+	PR libstdc++/13858
+	* include/bits/fstream.tcc (basic_filebuf<>::_M_convert_to_external):
+	In case of conversion errors, throw ios_failure; simplify.
+	* testsuite/27_io/basic_filebuf/overflow/char/13858.cc: New.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Tweak,
+	previously we didn't throw in case of conversion errors, instead
+	just returned eof().
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+	* include/bits/fstream.tcc (basic_filebuf<>::overflow):
+	Trivial simplification of a conditional.
+
+2004-02-12  Paolo Carlini  
+
+	PR libstdc++/13731 (final part: writev)
+	* config/io/basic_file_stdio.cc (__gnu_internal::xwritev):
+	New, a wrapper around writev() handling partial writes.
+	(__basic_file::xwrite): Move to __gnu_internal and make
+	static.
+	(__basic_file::xsputn): Update call.
+	(__basic_file::xsputn_2): Likewise.
+	* config/io/basic_file_stdio.h (__basic_file::xwrite):
+	Don't declare, now static.
+
+2004-02-11  Stefan Olsson  
+
+	* docs/html/ext/mt_allocator.html: New.
+
+2004-02-11  Benjamin Kosnik  
+
+	* docs/html/20_util/allocator.html: New file, consolidate
+	allocator information here. Revamp.
+	* docs/html/documentation.html: Change links.
+	* docs/html/20_util/howto.html: Same.
+	* docs/html/ext/howto.html: Same.
+
+2004-02-11  Paolo Carlini  
+
+	PR libstdc++/13731 (first part: write)
+	* config/io/basic_file_stdio.h (__basic_file::xwrite):
+	New, declare.
+	* config/io/basic_file_stdio.cc (__basic_file::xwrite):
+	Define it: a wrapper around write() handling partial write.
+	(__basic_file::xsputn): Use it.
+	(__basic_file::xsputn_2): Likewise.
+
+2004-02-11  Paolo Carlini  
+	    Petur Runolfsson  
+
+	PR libstdc++/14078
+	* include/std/std_istream.h (operator>>(__istream_type& (*)
+	(__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)),
+	operator>>(ios_base& (*)(ios_base&))): Declare inline.
+	* include/std/std_ostream.h (operator<<(__ostream_type& (*)
+	(__ostream_type&)), operator<<(__ios_type& (*)(__ios_type&)),
+	operator<<(ios_base& (*) (ios_base&))): Likewise.
+	* testsuite/performance/27_io/fmtflags_manipulators.cc: New.
+
+2004-02-10  Loren J. Rittle  
+
+	PR libstdc++/14098
+	* config/linker-map.gnu: Add typeinfo and typeinfo name for
+	__gnu_cxx::stdio_sync_filebuf >.
+
+	PR libstdc++/14097
+	* config/linker-map.gnu: Add typeinfo and typeinfo name for
+	__gnu_cxx::stdio_filebuf >.
+
+2004-02-09  Loren J. Rittle  
+
+	* include/ext/pool_allocator.h: Include c++config.h.
+
+2004-02-09  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: thread_id is unused in non threaded
+	applications and now has a ifdef to remove it completely on
+	compilers without thread support. Include stdlib.h due to a
+	compiler warning on getenv().
+
+2004-02-09  Paul Brook  
+
+	* libstdc++-v3/configure.host: Explicitly check for atomicity.h file.
+
+2004-02-09  Paolo Carlini  
+
+	PR libstdc++/14071
+	* src/locale_init.cc (locale::global(const locale&)): Use
+	locale::name() in order to decide whether calling setlocale.
+	* testsuite/22_locale/locale/global_locale_objects/14071.cc: New.
+
+	* include/bits/locale_classes.h (locale::_Impl::_M_check_same_name()):
+	Avoid computing &= unnecessarily.
+
+2004-02-09  James E Wilson  
+
+	PR libstdc++/5625
+	* libsuspc++/eh_personality.cc (PERSONALITY_FUNCTION): Use
+	__builtin_extend_pointer.
+
+2004-02-09  Paolo Carlini  
+
+	PR libstdc++/14072
+	* include/bits/basic_ios.tcc (basic_ios<>::_M_cache_locale):
+	Don't leave dangling pointers.
+	* testsuite/27_io/basic_ios/imbue/14072.cc: New.
+	* testsuite/22_locale/numpunct/members/pod/2.cc: Tweak, the num_put
+	facet is needed in the final test.
+
+2004-02-09  Bernardo Innocenti  
+
+	* crossconfig.m4: Don't enable _GLIBCXX_USE_LFS on *-uclinux*.
+	* configure: Regenerate.
+
+2004-02-08  Richard Henderson  
+
+	PR libstdc++/14026
+	* libsupc++/eh_catch.cc (__cxa_begin_catch): Don't adjust
+	uncaughtExceptions during nested catch rethrow.
+	* testsuite/18_support/14026.cc: New.
+
+2004-02-08  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (assign(const _CharT*, size_type)):
+	When working in place remember to set the state to sharable
+	(otherwise, _M_mutate does it).
+
+2004-02-08  Bernardo Innocenti  
+
+	* include/bits/allocator.h, include/bits/basic_ios.h,
+	include/bits/basic_ios.tcc, include/bits/basic_string.h,
+	include/bits/basic_string.tcc, include/bits/boost_concept_check.h,
+	include/bits/char_traits.h, include/bits/codecvt.h,
+	include/bits/concurrence.h, include/bits/cpp_type_traits.h,
+	include/bits/demangle.h, include/bits/deque.tcc,
+	include/bits/fstream.tcc, include/bits/functexcept.h,
+	include/bits/gslice.h, include/bits/gslice_array.h,
+	include/bits/indirect_array.h, include/bits/ios_base.h,
+	include/bits/istream.tcc, include/bits/list.tcc,
+	include/bits/locale_classes.h, include/bits/locale_facets.h,
+	include/bits/locale_facets.tcc, include/bits/localefwd.h,
+	include/bits/mask_array.h, include/bits/ostream.tcc,
+	include/bits/postypes.h, include/bits/slice_array.h,
+	include/bits/sstream.tcc, include/bits/stl_algo.h,
+	include/bits/stl_algobase.h, include/bits/stl_bvector.h,
+	include/bits/stl_construct.h, include/bits/stl_deque.h,
+	include/bits/stl_function.h, include/bits/stl_heap.h,
+	include/bits/stl_iterator.h, include/bits/stl_iterator_base_funcs.h,
+	include/bits/stl_list.h, include/bits/stl_map.h,
+	include/bits/stl_multimap.h, include/bits/stl_multiset.h,
+	include/bits/stl_numeric.h, include/bits/stl_pair.h,
+	include/bits/stl_queue.h, include/bits/stl_raw_storage_iter.h,
+	include/bits/stl_relops.h, include/bits/stl_set.h,
+	include/bits/stl_stack.h, include/bits/stl_tempbuf.h,
+	include/bits/stl_threads.h, include/bits/stl_tree.h,
+	include/bits/stl_uninitialized.h, include/bits/stl_vector.h,
+	include/bits/stream_iterator.h, include/bits/streambuf.tcc,
+	include/bits/streambuf_iterator.h,include/bits/stringfwd.h,
+	include/bits/type_traits.h, include/bits/valarray_after.h,
+	include/bits/valarray_array.h, include/bits/valarray_array.tcc,
+	include/bits/valarray_before.h, include/bits/vector.tcc: Remove
+	trailing whitespace.
+
+2004-02-06  Paolo Carlini  
+
+	* include/bits/basic_string.h: Fix comment.
+
+2004-02-06  Paolo Carlini  
+
+	* include/bits/stl_construct.h: Wrap overlong lines, reformat
+	according to the coding standards.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_raw_storage_iter.h: Likewise.
+	* include/bits/stl_stack.h: Likewise.
+	* include/bits/stl_uninitialized.h: Likewise.
+	* include/bits/stream_iterator.h: Likewise.
+	* include/bits/streambuf_iterator.h: Likewise.
+	* include/bits/type_traits.h: Likewise.
+
+2004-02-06  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc:
+	Adjust timings.
+
+2004-02-05  Loren J. Rittle  
+
+	* scripts/check_performance: Support PCH.
+
+	* scripts/check_performance (CXX): Add -DNOTHREAD.
+	* testsuite/performance/20_util/allocator/insert.cc: Integrate
+	threaded tests from insert_insert.cc.  Tweak iterations,
+	remove special cases.
+	* testsuite/performance/20_util/allocator/insert_insert.cc:
+	Make all tests single-threaded. Tweak iterations.
+	* testsuite/performance/20_util/allocator/map_thread.cc:
+	Tweak iterations.
+	* testsuite/performance/20_util/allocator/producer_consumer.cc:
+	Likewise.
+
+2004-02-05  Geoffrey Keating  
+
+	PR 12179
+	* .cvsignore: New.
+	* acinclude.m4 (GLIBCXX_EXPORT_INSTALL_INFO): Use 'gcc', not
+	'gcc-lib'.  Add comment about poorly-named variables.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2004-02-05  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
+	Thousands-sep are always optional; thousands-sep are not allowed
+	after the decimal_point.
+	* testsuite/22_locale/money_get/get/char/12.cc: New.
+	* testsuite/22_locale/money_get/get/char/13.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/12.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/13.cc: New.
+
+	* testsuite/22_locale/money_get/get/char/1.cc: Clean-up.
+	* testsuite/22_locale/money_get/get/char/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.
+
+	* testsuite/22_locale/money_get/get/char/9.cc: Fix citation from
+	the standard.
+	* testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.
+
+2004-02-05  Richard Sandiford  
+
+	* config/os/irix/irix6.5/os_defines.h (_GLIBCXX_FIONREAD_TAKES_OFF_T):
+	Define.
+	* config/io/basic_file_stdio.cc (__basic_file::showmanyc): Use
+	it to decide whether FIONREAD should take an off_t or int argument.
+
+2004-02-05  Paolo Carlini  
+
+	* include/bits/stl_function.h: Minor formatting changes.
+
+2004-02-04  Zack Weinberg  
+
+	Revert previous change to config/abi/*/baseline_symbols.txt.
+
+2004-02-04  Benjamin Kosnik  
+	    Zack Weinberg  
+
+	* config/io/basic_file_stdio.cc (__gnu_internal::fopen_mode):
+	New function.
+	(__basic_file::sys_open, __basic_file::open): Use it.
+	(__basic_file::_M_open_mode): Delete.
+	* config/io/basic_file_stdio.cc: Delete declaration of _M_open_mode.
+
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc:
+	Correct flags to filebuf::open calls.
+
+	* config/abi/alpha-freebsd5/baseline_symbols.txt
+	* config/abi/alpha-linux-gnu/baseline_symbols.txt
+	* config/abi/hppa-linux-gnu/baseline_symbols.txt
+	* config/abi/i386-freebsd4/baseline_symbols.txt
+	* config/abi/i386-freebsd5/baseline_symbols.txt
+	* config/abi/i486-linux-gnu/baseline_symbols.txt
+	* config/abi/ia64-linux-gnu/baseline_symbols.txt
+	* config/abi/mips-linux-gnu/baseline_symbols.txt
+	* config/abi/sparc-freebsd5/baseline_symbols.txt
+	* config/abi/sparc-linux-gnu/baseline_symbols.txt
+	* config/abi/x86_64-linux-gnu/baseline_symbols.txt:
+	Remove entry for __basic_file::_M_open_mode.
+
+2004-02-04  Loren J. Rittle  
+
+	* testsuite/performance/20_util/allocator/insert.cc (main): Tweak.
+
+2004-02-04  Felix Yen  
+
+	* testsuite/performance/20_util/producer_consumer.cc: New.
+	* testsuite/performance/20_util/allocator/insert_insert.cc: Two loops.
+
+2004-02-04  Benjamin Kosnik  
+
+	* testsuite/performance/20_util/allocator.cc: Move to..
+	* testsuite/performance/20_util/allocator/insert.cc: ...here.
+	* testsuite/performance/20_util/allocator_thread.cc: Move to...
+	* testsuite/performance/20_util/allocator/insert_insert.cc: ...here.
+	* testsuite/performance/20_util/allocator_map_thread.cc: Move to...
+	* testsuite/performance/20_util/allocator/map_thread.cc: ...here.
+
+2004-02-04  Jonathan Wakely  
+
+	* docs/html/faq/index.html: Recommend using LD_LIBRARY_PATH.
+	* docs/html/faq/index.txt: Regenerate.
+
+2004-02-04  Dhruv Matani  
+
+	* include/ext/debug_allocator.h: _M_extra now stands for the
+	number of extra objects instead of the number of extra bytes.
+	(debug_allocator::allocate): Adjust.
+	(debug_allocator::deallocate): Adjust.
+
+	* include/ext/pool_allocator.h: Fix typo.
+
+2004-02-03  Felix Yen  
+	    Benjamin Kosnik  
+
+	* testsuite/performance/20_util/allocator.cc: Add map,
+	deque, set tests.
+	* testsuite/performance/20_util/allocator_thread.cc: Same.
+
+2004-02-03  Paolo Carlini  
+
+	* include/bits/basic_string.h (insert(iterator)): Remove,
+	non-standard and already scheduled for removal.
+
+2004-02-03  Paolo Carlini  
+
+	* include/bits/stl_iterator_base_funcs.h: Minor formatting
+	and indentation tweaks.
+	* include/bits/stl_iterator_base_types.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_tempbuf.h: Likewise.
+
+2004-02-02  Jerry Quinn  
+
+	* include/bits/gslice.h, include/bits/gslice_array.h,
+	include/bits/indirect_array.h, include/bits/mask_array.h,
+	include/bits/slice_array.h, include/bits/stl_numeric.h,
+	include/std/std_valarray.h:  Update copyright years.
+
+2004-02-02  Jerry Quinn  
+
+	* include/bits/gslice.h (gslice):  Document.
+	* include/bits/gslice_array.h (gslice_array):  Document.
+	* include/bits/indirect_array (indirect_array):  Document.
+	* include/bits/mask_array (mask_array):  Document.
+	* include/bits/slice_array.h (slice,slice_array):  Document.
+	* include/bits/stl_numeric.h (accumulate, inner_product, partial_sum,
+	adjacent_difference):  Document
+	* include/std/std_valarray.h (valarray):  Document.
+
+2004-02-02  Benjamin Kosnik  
+
+	* docs/html/19_diagnostics/howto.html: Move verbose terminate
+	documentation...
+	* docs/html/18_support/howto.html: Here.
+	* docs/html/documentation.html: Add reference here.
+
+2004-02-02  Paolo Carlini  
+
+	* config/locale/gnu/c++locale_internal.h: Remove prototypes
+	of no longer used GLIBC thread locale functions.
+
+2004-02-02  Eric Christopher  
+	    Zack Weinberg  
+
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc: Remove xfail. Use
+	-finput-charset.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc: Ditto.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc: Ditto
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc: Ditto.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc: Ditto.
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc: Ditto.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc: Ditto.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	Ditto.
+
+2004-02-02  Paolo Carlini  
+
+	* include/bits/stl_function.h: Additional minor tweaks.
+	* include/bits/stl_multiset.h: Likewise.
+
+	* include/bits/stl_queue.h: Minor tweaks.
+
+2004-02-02  Paolo Carlini  
+
+	PR libstdc++/13976 (continued)
+	* include/ext/malloc_allocator.h (malloc_allocator::deallocate):
+	Make the second parameter unnamed, to void unused parameter
+	warnings.
+	* include/ext/new_allocator.h (new_allocator::deallocate): Ditto.
+
+2004-02-02  Paolo Carlini  
+
+	PR libstdc++/13976
+	* include/ext/malloc_allocator.h (malloc_allocator::allocate):
+	Make the second parameter unnamed, to void unused parameter
+	warnings.
+	* include/ext/mt_allocator.h (__mt_alloc::allocate): Ditto.
+	* include/ext/new_allocator.h (new_allocator::allocate): Ditto.
+
+2004-02-01  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Additional minor tweaks.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+
+2004-02-01  Paolo Carlini  
+
+	* include/bits/vector.tcc (vector::_M_insert_aux(iterator)):
+	Remove, unused.
+
+2004-02-01  Paolo Carlini  
+
+	* include/bits/stl_function.h: Additional minor tweaks.
+
+2004-02-01  Paolo Carlini  
+
+	* include/bits/deque.tcc: Wrap overlong lines, constify
+	a few variables, reformat according to the coding standards.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_function.h: Likewise.
+	* include/bits/stl_iterator.h: Likewise.
+	* include/bits/stl_iterator_base_funcs.h: Likewise.
+	* include/bits/stl_iterator_base_types.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_relops.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+
+2004-02-01  Paolo Carlini  
+
+	* include/bits/stl_bvector.h: Wrap overlong lines, constify
+	a few variables, reformat according to the coding standards.
+	* include/bits/stl_tree.h: Likewise.
+
+2004-01-31  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Minor additional reformat, add
+	copyright year.
+	* include/bits/stl_algobase.h: Add copyright year.
+
+2004-01-31  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Wrap overlong lines, constify
+	a few variables, reformat according to the coding standards.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_heap.h: Likewise.
+
+2004-01-31  Paolo Carlini  
+
+	* include/bits/basic_string.h (_Rep::operator[]): Remove, unused.
+
+	* include/bits/basic_string.h: Fix two comments.
+
+2004-01-31  Per Bothner  
+
+	* include/ext/mt_allocator.h
+	(__mt_alloc::_S_thread_freelist_mutex): Guard with
+	__GTHREAD_MUTEX_INIT.
+
+2004-01-31  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_Rep::_S_create): Minor tweak.
+
+2004-01-30  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/cons/char/6.cc: New.
+	* testsuite/21_strings/basic_string/cons/wchar_t/6.cc: New.
+	* testsuite/performance/21_strings/string_cons_input_iterator.cc: New.
+
+2004-01-30  Felix Yen  
+
+	* testsuite/performance/20_util/allocator_thread.cc (do_loop):
+	Don't use clear, but instead assign. Use insert.
+
+2004-01-30  Benjamin Kosnik  
+
+	* src/demangle.cc: Add instantiations.
+	* src/Makefile.am: Remove special rules for demangle.lo, demangle.o.
+	* src/Makefile.in: Regenerate.
+
+2004-01-30  David Edelsohn  
+
+	* src/allocator.cc: Protect _S_get_thread_id() and
+	_S_thread_key_destr() with #ifdef __GTHREADS.
+
+2004-01-30  Paolo Carlini  
+
+	Reshuffle performance testsuite.
+	* testsuite/performance/allocator.cc, allocator_map_thread.cc,
+	allocator_thread.cc, complex_norm.cc, container_benchmark.cc,
+	cout_insert_int.cc, filebuf_copy.cc, filebuf_sputc.cc,
+	fstream_seek_write.cc, ifstream_extract_float.cc,
+	ifstream_extract_int.cc, ifstream_getline.cc, is_wchar_t.cc,
+	list_create_fill_sort.cc, map_create_fill.cc,
+	narrow_widen_char.cc, narrow_widen_wchar_t.cc,
+	ofstream_insert_float.cc, ofstream_insert_int.cc,
+	string_append.cc, wchar_t_in.cc, wchar_t_length.cc,
+	wchar_t_out.cc: Split into...
+	* testsuite/performance/20_util/allocator.cc: New.
+	* testsuite/performance/20_util/allocator_map_thread.cc: New.
+	* testsuite/performance/20_util/allocator_thread.cc: New.
+	* testsuite/performance/21_strings/string_append: New.
+	* testsuite/performance/22_locale/is_wchar_t.cc: New.
+	* testsuite/performance/22_locale/narrow_widen_char.cc: New.
+	* testsuite/performance/22_locale/narrow_widen_wchar_t.cc: New.
+	* testsuite/performance/22_locale/wchar_t_in.cc: New.
+	* testsuite/performance/22_locale/wchar_t_length.cc: New.
+	* testsuite/performance/22_locale/wchar_t_out.cc: New.
+	* testsuite/performance/23_containers/container_benchmark.cc: New.
+	* testsuite/performance/23_containers/list_create_fill_sort.cc: New.
+	* testsuite/performance/23_containers/map_create_fill.cc: New.
+	* testsuite/performance/26_numerics/complex_norm.cc: New.
+	* testsuite/performance/27_io/cout_insert_int.cc: New.
+	* testsuite/performance/27_io/filebuf_copy.cc: New.
+	* testsuite/performance/27_io/filebuf_sputc.cc: New.
+	* testsuite/performance/27_io/fstream_seek_write.cc: New.
+	* testsuite/performance/27_io/ifstream_extract_float.cc: New.
+	* testsuite/performance/27_io/ifstream_extract_int.cc: New.
+	* testsuite/performance/27_io/ifstream_getline.cc: New.
+	* testsuite/performance/27_io/ofstream_insert_float.cc: New.
+	* testsuite/performance/27_io/ofstream_insert_int.cc: New.
+
+2004-01-30  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_Rep::_S_create):
+	Never allocate a string bigger than max_size(); always keep
+	__capacity and __size in sync to avoid memory leaks at
+	deallocation time.
+
+2004-01-30  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_S_construct(_InIterator,
+	_InIterator, const _Alloc&, input_iterator_tag)): Simplify
+	the double loop, streamline.
+
+	* include/bits/basic_string.tcc: Very minor tweaks.
+
+2004-01-30  Loren J. Rittle  
+
+	* scripts/check_performance: Only compile with $THREAD_FLAG
+	when test is marked to require it.  Allow multiple
+	compilations/executions of marked tests.
+	* testsuite/testsuite_performance.h (report_performance):
+	Report dynamic thread support status.
+	(report_header): Likewise.
+	* testsuite/performance/allocator.cc: Stabilize iteration
+	count.  Support more allocators.  Mark each allocator test to
+	run and report independently.
+	* testsuite/performance/allocator_map_thread.cc: Likewise.
+	* testsuite/performance/allocator_thread.cc: Likewise.
+
+2004-01-29  Stephen M. Webb  
+
+	* config/local/generic/c_locale.h: Change ::malloc() to new char[].
+	* config/local/gnu/c_locale.h: Change ::malloc() to new char[].
+	* include/bits/stl_tempbuf.h: Convert _Temporary_buffer to use
+	std::get_temporary_buffer() instead of duplicating its code.
+	Update to C++STYLE conventions.
+	* include/std/std_memory.h (get_temporary_buffer): Use ::operator
+	new() instead of std::malloc().
+	(return_temporary_buffer): Use ::operator delete() instead of
+	std::free().
+
+2004-01-29  Benjamin Kosnik  
+
+	* include/bits/allocator.h: Temporary switch to new_allocator as
+	the default to unjam bootstraps.
+
+2004-01-28  Benjamin Kosnik  
+
+	* include/Makefile.am (bits_headers): Remove allocator_traits.h.
+	* include/Makefile.in: Regenerate.
+	* include/bits/allocator_traits.h: Remove.
+	* include/bits/allocator.h: Remove allocator_traits.h include, and
+	relevant comments.
+	(allocator): Empty base class, inherit from the underlying allocator.
+	* src/allocator-inst.cc: Move __pool_alloc instantiation to...
+	* src/allocator.cc: ...here. New. For the underlying allocators.
+	Add __mt_alloc, __pool_alloc, new_allocator, malloc_allocator bits.
+	* config/linker-map.gnu: Remove __pool_alloc bits.
+	* src/Makefile.am (sources): Add allocator.cc.
+	* src/Makefile.in: Regenerate.
+	* testsuite/20_util/allocator/1.cc: Split second test into...
+	* testsuite/20_util/allocator/8230.cc: ...this.
+	* include/bits/stl_bvector.h (__gnu_norm): Change bit_vector
+	typedef to use std::allocatore. Format.
+	* include/ext/pool_allocator.h: Remove allocator_traits.h include,
+	_Alloc_traits.
+	* include/ext/mt_allocator.h (__gnu_cxx): Qualify
+	__throw_bad_alloc calls. Don't include .
+	* include/ext/malloc_allocator.h: Remove  include.
+	* include/ext/new_allocator.h (new_allocator): Same.
+	* include/ext/ropeimpl.h (__gnu_cxx): Remove __alloc using
+	declaration. Switch __alloc to _Alloc.
+	* include/ext/hashtable.h: Remove __alloc.
+	* include/backward/alloc.h: Only inject allocator, not
+	implementation details.
+
+	* include/ext/mt_allocator.h: Replace free with delete.
+
+2004-01-28  Benjamin Kosnik  
+
+	* src/globals_io.cc: Change to __gnu_internal namespace.
+	* src/globals_locale.cc: Same.
+	* src/locale_init.cc: Same.
+	* src/ios_init.cc: Same.
+
+2004-01-28  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: Replaced all malloc() calls with
+	operator new(). Added support for the env variable
+	GLIBCXX_FORCE_NEW (this required the _S_init call to be the first
+	one in allocate() as well). Fix typos.
+
+2004-01-28  Paolo Carlini  
+
+	* include/bits/basic_string.h (_S_create(size_t,
+	const _Alloc&): Change signature to take two size_type
+	arguments.
+	* include/bits/basic_string.tcc (_S_construct(_InIterator,
+	_InIterator, const _Alloc&, input_iterator_tag)): Update
+	call, tweak a bit.
+	(_S_construct(_InIterator, _InIterator, const _Alloc&,
+	forward_iterator_tag)): Likewise.
+	(_S_construct(size_type, _CharT, const _Alloc&)): Likewise.
+	(_M_mutate(size_type, size_type, size_type)): Don't
+	implement the exponential growth policy, demand it to
+	_S_create, update call and simplify.
+	(_M_clone(const _Alloc&, size_type)): Likewise.
+	(_S_create(size_type, size_type, const _Alloc&)): Implement
+	the growth policy, simplify otherwise.
+
+	* include/bits/basic_string.h (_Rep::operator[]): Tweak
+	signature to take a size_type, consistently with the other
+	members.
+
+2004-01-27  Benjamin Kosnik  
+
+	* testsuite/27_io/ios_base/storage/11584.cc: Correct new and
+	delete declarations, add include and test variable.
+
+2003-01-27  Jerry Quinn  
+
+	* include/bits/codecvt.h, include/bits/locale_facets.h,
+	include/bits/postypes.h, include/bits/stl_bvector.h,
+	include/bits/stl_multiset.h, include/bits/stl_set.h,
+	include/bits/stream_iterator.h, include/bits/streambuf_iterator.h,
+	include/std/std_complex.h:  Document.
+
+2004-01-27  Jerry Quinn  
+
+	PR libstdc++/11584
+	* include/bits/ios_base.h (ios_base::_M_grow_words):  Add
+	iword/pword selector.
+	(ios_base::iword, ios_base::pword):  Use it.
+	* src/ios.cc (ios_base::_M_grow_words):  Clear _M_word_zero
+	iword or pword member on alloc failure.
+	* testsuite/27_io/ios_base/storage/11584.cc:  New test.
+
+2004-01-27  Ulrich Weigand  
+	    PJ Darcy  
+
+	* configure.host: Add support for *-tpf.
+	* crossconfig.m4: Likewise.
+	* configure: Regenerate.
+	* config/os/tpf: New directory.
+	* config/os/tpf/os_defines.h: New file.
+	* config/os/tpf/ctype_base.h: Likewise.
+	* config/os/tpf/ctype_inline.h: Likewise.
+	* config/os/tpf/ctype_noninline.h: Likewise.
+
+2004-01-27  Paolo Carlini  
+
+	PR libstdc++/13884
+	* include/bits/sstream.tcc: Guard use of extern template.
+
+2004-01-27  Paolo Carlini  
+
+	* include/bits/basic_string.tcc
+	(basic_string(const basic_string&, size_type, size_type),
+	basic_string(const basic_string&, size_type, size_type,
+	const _Alloc&)): Avoid unnecessarily constructing iterators.
+
+2004-01-26  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc: Fix throw messages
+	to use the __N marker.
+	* config/locale/gnu/c_locale.cc: Likewise.
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h:
+	Likewise.
+	* docs/html/17_intro/C++STYLE: Likewise.
+	* include/bits/basic_ios.tcc: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/std/std_bitset.h: Likewise.
+	* src/ios.cc: Likewise.
+	* src/locale.cc: Likewise.
+	* src/localename.cc: Likewise.
+
+2004-01-26  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_replace_aux): Use the
+	__N marker in throw message.
+	* include/bits/basic_string.tcc (assign(const _CharT*,
+	size_type), insert(size_type, const _CharT*, size_type),
+	replace(size_type, size_type, const _CharT*, size_type),
+	reserve, _Rep::_S_create, resize, _M_replace_dispatch):
+	Likewise.
+
+	* include/bits/basic_string.h, include/bits/basic_string.tcc:
+	Fold overlong lines, minor formatting changes.
+
+2004-01-26  Paolo Carlini  
+
+	* include/bits/basic_string.h (replace(iterator, iterator,
+	const basic_string&)): Remove _GLIBCXX_DEBUG_PEDASSERT.
+	(replace(iterator, iterator, const _CharT*)): Ditto.
+	(replace(iterator, iterator, const _CharT*, size_type)):
+	Add missing _GLIBCXX_DEBUG_PEDASSERT.
+
+2004-01-26  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (replace(size_type,
+	size_type, const _CharT*, size_type)): Implement optimized
+	in-place algorithm for non-overlapping ranges.
+	* testsuite/21_strings/basic_string/replace/char/6.cc: New.
+	* testsuite/21_strings/basic_string/replace/wchar_t/6.cc: New.
+
+	* include/bits/basic_string.tcc (insert(size_type,
+	const _CharT*, size_type)): Tweak slightly.
+
+2004-01-26  Andreas Schwab  
+
+	* config/locale/gnu/monetary_members.cc: Restore locale before
+	rethrowing exception.
+
+2004-01-25  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_replace_aux, _M_replace_safe):
+	Define inline here.
+	* include/bits/basic_string.tcc (_M_replace_aux, _M_replace_safe):
+	Move inline.
+
+	* include/bits/basic_string.tcc: Very minor tweaks.
+
+2004-01-25  Paolo Carlini  
+
+	* testsuite/performance/string_append.cc: Increase number
+	of iterations.
+
+2004-01-25  Paolo Carlini  
+
+	* include/bits/basic_string.h (erase(size_type, size_type),
+	erase(iterator), erase(iterator, iterator)): Call _M_replace_safe
+	instead, thus avoiding redundant check for length_error.
+
+	* include/bits/basic_string.h: Tweak some comments.
+
+2004-01-24  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (operator+(const _CharT*,
+	const basic_string&)): No need to go through the append
+	taking two iterators.
+
+2004-01-24  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (rfind(_CharT, size_type)):
+	Revert last change to use std::min: machine language is worse.
+	(find_last_of(const _CharT*, size_type, size_type)): Ditto.
+	(find_last_not_of(const _CharT*, size_type, size_type)): Ditto.
+	(find_last_not_of(_CharT, size_type)): Ditto.
+
+	* include/bits/basic_string.tcc (insert(size_type, const _CharT*,
+	size_type)): Discard the value returned by _M_check.
+	(replace(size_type, size_type, const _CharT*, size_type)): Ditto.
+	(append(const basic_string&, size_type, size_type)): Ditto.
+	(copy(_CharT*, size_type, size_type)): Ditto.
+	(compare(size_type, size_type, const basic_string&)): Ditto.
+	(compare(size_type, size_type, const basic_string&,
+	size_type, size_type)): Ditto.
+	(compare(size_type, size_type, const _CharT*)): Ditto.
+	(compare(size_type, size_type, const _CharT*, size_type)): Ditto.
+
+2004-01-24  Paolo Carlini  
+
+	* include/bits/basic_string.h (insert(size_type,
+	const basic_string&, size_type, size_type)): Define inline here.
+	* include/bits/basic_string.tcc (insert(size_type,
+	const basic_string&, size_type, size_type)): Move inline.
+
+2004-01-24  Paolo Carlini  
+
+	* include/bits/basic_string.h (assign(const basic_string&,
+	size_type, size_type)): Define inline here.
+	(replace(size_type, size_type, const basic_string&,
+	size_type, size_type)): Ditto.
+	(_M_replace_dispatch(iterator, iterator, _InputIterator,
+	_InputIterator, __false_type)): Only declare.
+	(_M_replace(iterator, iterator, _InputIterator,
+	_InputIterator)): Remove.
+	* include/bits/basic_string.tcc (assign(const basic_string&,
+	size_type, size_type)): Move inline.
+	(replace(size_type, size_type, const basic_string&,
+	size_type, size_type)): Ditto.
+	(_M_replace_dispatch(iterator, iterator, _InputIterator,
+	_InputIterator, __false_type)): Define, now does also what
+	_M_replace did before.
+	* src/string-inst.cc (_M_replace): Don't instantiate.
+
+	* include/bits/basic_string.tcc (find(const _CharT*,
+	size_type, size_type)): Tidy.
+	(rfind(_CharT, size_type)): Ditto.
+	(find_first_not_of(const _CharT*, size_type, size_type)): Ditto.
+	(find_first_not_of(_CharT, size_type)): Ditto.
+	(find_last_not_of(const _CharT*, size_type, size_type)): Ditto.
+	(find_last_not_of(_CharT, size_type)): Ditto.
+
+2004-01-23  Paolo Carlini  
+
+	PR libstdc++/13838
+	* include/debug/bitset (operator|=): Fix typo.
+	* testsuite/23_containers/bitset/operations/13838.cc: New.
+
+2004-01-23  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (insert(size_type,
+	const _CharT*, size_type __n)): Fix length_error check.
+	(replace(size_type, size_type, const _CharT*, size_type):
+	Ditto; call _M_replace_safe.
+	(_M_replace_aux(size_type, size_type, size_type, _CharT):
+	Fix length_error check.
+	(_M_replace(iterator, iterator, _InputIterator,
+	_InputIterator)): Ditto, tweak.
+	(_M_replace_safe(size_type, size_type, const _CharT*,
+	size_type)): Remove length_error check.
+
+	* include/bits/basic_string.tcc (append(const basic_string&),
+	append(const basic_string&, size_type, size_type)): Tweak
+	comment.
+
+	* include/bits/basic_string.tcc (copy(_CharT*, size_type,
+	size_type)): If __n == 0 don't call traits::copy.
+
+2004-01-23  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: Reduce lock contention.
+
+2004-01-23  Paolo Carlini  
+
+	PR libstdc++/13831
+	* include/bits/fstream.tcc (underflow): Remove unused
+	variable.
+	* include/bits/streambuf_iterator.h (equal): Ditto.
+	* include/bits/locale_facets.h (_M_convert_from_char):
+	Ditto.
+
+2004-01-23  Kaveh R. Ghazi  
+
+	PR c/13814
+	* config/linker-map.gnu (nan): Delete.
+	* libmath/mathconf.h (NAN, nan): Delete.
+	* linkage.m4 (nan): Don't check for it.
+	* libmath/nan.c: Delete file.
+
+	* config.h.in, configure: Regenerate.
+
+2004-01-23  Paolo Carlini  
+
+	* include/bits/basic_string.h (push_back(_CharT)):
+	Call _M_replace_aux.
+	(insert(size_type, const basic_string&)): Trivial tweak.
+	(insert(size_type, size_type, _CharT)): Call _M_replace_aux.
+	(insert(iterator, _CharT)): Ditto.
+	(erase(size_type, size_type)): Ditto.
+	(erase(iterator)): Ditto.
+	(erase(iterator, iterator)): Ditto.
+	(replace(size_type, size_type, size_type, _CharT)): Ditto.
+
+2004-01-23  Loren J. Rittle  
+
+	libstdc++/13823
+	* testsuite/performance/allocator_map_thread.cc: New test.
+
+2004-01-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc
+	(money_put::do_put(..., long double)): Use the basic_string
+	constructor for char arrays, not that for C-strings, to pass
+	__digits to do_put(..., const string_type&): __ws isn't
+	null-terminated.
+
+2004-01-22  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_replace_safe): Change
+	signatures to take size_types and const _CharT*.
+	(_M_replace_aux): Likewise, takes size_types instead of
+	iterators.
+	(append(size_type, _CharT)): Update call.
+	(assign(size_type, _CharT)): Ditto.
+	(replace(iterator, iterator, size_type, _CharT)): Ditto.
+	(_M_replace_dispatch(iterator, iterator, _Integer,
+	_Integer, __true_type)): Ditto.
+	* include/bits/basic_string.tcc (assign(const _CharT*,
+	size_type)): Ditto.
+	(insert(size_type, const _CharT*, size_type)): Ditto.
+	(replace(size_type, size_type, const _CharT*,
+	size_type)): Ditto.
+	(_M_replace(iterator, iterator, _InputIterator,
+	_InputIterator)): Ditto.
+	(append(const basic_string&)): Ditto.
+	(append(const basic_string&, size_type, size_type): Ditto.
+	(append(const _CharT*, size_type): Ditto.
+	(_M_replace_safe, _M_replace_safe): Change definitions
+	accordingly, simplify.
+	* string-inst.cc (_M_replace_safe): Don't instantiate.
+
+2004-01-21  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (append(const basic_string&)):
+	Revert previous change.
+	(append(const basic_string&, size_type, size_type)): Revert
+	previous change, use _M_check and _M_limit.
+
+2004-01-21  Paolo Carlini  
+
+	* include/bits/basic_string.h (_M_check): Change to return
+	a checked __pos and take an additional const char* argument.
+	(_M_fold): Rename to _M_limit, change to return a size_type,
+	corresponding to the __off limited to the actual length.
+	(insert(size_type, size_type, _CharT)): Update call, call
+	replace.
+	(insert(iterator, _CharT)): Call replace(iterator, iterator,
+	size_type, _CharT) instead.
+	(erase(size_type, size_type)): Update calls.
+	(replace(size_type, size_type, size_type, _CharT)): Ditto.
+	(substr(size_type, size_type)): Use _M_check.
+	* include/bits/basic_string.tcc (basic_string(const basic_string&,
+	size_type, size_type)): Update calls.
+	(basic_string(const basic_string&, size_type, size_type,
+	const _Alloc&)): Ditto.
+	(assign(const basic_string&, size_type, size_type)): Use the
+	new _M_check and _M_limit.
+	(insert(size_type, const basic_string&, size_type, size_type):
+	Ditto.
+	(insert(size_type, const _CharT*, size_type)): Ditto.
+	(replace(size_type, size_type, const _CharT*, size_type): Ditto.
+	(replace(size_type, size_type, const basic_string&,
+	size_type, size_type)): Ditto.
+	(append(const basic_string&)): Ditto.
+	(append(const basic_string&, size_type, size_type)): Ditto.
+	(copy(_CharT*, size_type, size_type)): Ditto.
+	(compare(size_type, size_type, const basic_string&)): Ditto.
+	(compare(size_type, size_type, const basic_string&,size_type,
+	size_type)): Ditto.
+	(compare(size_type, size_type, const _CharT*)): Ditto.
+	(compare(size_type, size_type, const _CharT*, size_type)): Ditto.
+
+2004-01-19  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: If a thread, when it dies, still has
+	memory on it's freelist this memory is not returned to global
+	list. Simplification of deallocate so that memory is always
+	returned to the calling thread id's freelist instead of to
+	global. Fix typos. Add volatile where appropriate.
+
+2004-01-19  Loren J. Rittle  
+
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Treat unbuffered.
+	* testsuite/ext/stdio_filebuf/char/10063-3.cc: New test.  Like -2 but
+	use __gnu_cxx::stdio_sync_filebuf instead; allow buffered stream.
+
+2004-01-19  Paolo Carlini  
+
+	* src/debug.cc: Make sure all the names are prefixed with
+	double (or single) underscore.
+
+2004-01-19  Paolo Carlini  
+
+	* src/debug.cc: Trivial formatting change.
+
+2004-01-19  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_S_construct(size_type,
+	_CharT, const _Alloc&)): Remove redundant try/catch.
+	(_M_mutate(size_type, size_type, size_type)): Ditto.
+	(_M_clone(const _Alloc&, size_type)): Ditto.
+
+2004-01-18  Paolo Carlini  
+
+	* include/bits/basic_string.h (c_str()): Simplify, due to
+	21.3.4 the internal representation is always kept null-terminated.
+	* include/bits/basic_string.tcc (_M_clone): Null-terminate.
+	* testsuite/21_strings/basic_string/element_access/char/4.cc: New.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/4.cc:
+	Ditto.
+
+2004-01-18  Paolo Carlini  
+
+	* include/bits/basic_string.h (append(size_type, _CharT)):
+	Moved inline, just call _M_replace_aux, no source iterators at
+	risk of being clobbered.
+	(assign(size_type, _CharT)): Call directly _M_replace_aux.
+	(_M_replace(iterator, iterator, _InputIterator, _InputIterator,
+	input_iterator_tag)): Remove fifth unused argument.
+	(_M_replace_dispatch(iterator, iterator, _InputIterator,
+	_InputIterator, __false_type)): Update call.
+	* include/bits/basic_string.tcc (replace(size_type, size_type,
+	const _CharT*, size_type)): Update call.
+	(_M_replace_aux(iterator, iterator, size_type, _CharT)): Tweak
+	throw string literal.
+	(_M_replace_safe(iterator, iterator, _ForwardIterator,
+	_ForwardIterator)): Likewise.
+	(_M_replace(iterator, iterator, _InputIterator, _InputIterator,
+	input_iterator_tag)): Remove fifth unused argument.
+	(append(size_type __n, _CharT __c)): Move inline.
+	* src/string-inst.cc (S::_M_replace(S::iterator, S::iterator,
+	const C*, const C*, input_iterator_tag)): Remove fifth unused
+	argument.
+
+2004-01-16  Benjamin Kosnik  
+
+	* testsuite/ext/enc_filebuf/char/13189.cc: Fix guards.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Same.
+
+2004-01-16  Danny Smith  
+
+	* testsuite/testsuite_hooks.cc (try_mkfifo): Avoid calling
+	mkfifo for mingw32.
+
+2004-01-15  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: Reuse thread id's as soon as
+	possible by changing the behaviour of thread_freelist to do
+	push_front when threads die instead of push_back.
+
+2004-01-14  Paolo Carlini  
+
+	* include/bits/locale_facets.h (struct __numpunct_cache):
+	Add member _M_grouping_size, caching the length of _M_grouping.
+	(__numpunct_cache<>::_M_cache): Assign the latter.
+	(__verify_grouping): Move declaration...
+	* include/bits/locale_facets.tcc (__verify_grouping):
+	... here, change signature to take a const char* and a size_t
+	for the grouping; not a template anymore.
+	(__add_grouping, num_put::_M_group_int, num_put::_M_group_float):
+	Likewise change signature and tweak consistently.
+	(num_get::_M_extract_float, num_get::_M_extract_int,
+	num_put::_M_insert_int, num_put::_M_insert_float,
+	money_get::do_get(string_type&), money_get::do_put(string_type)):
+	Update callers.
+	* config/locale/generic/numeric_members.cc
+	(numpunct<>::_M_initialize_numpunct): Assign the new member.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct<>::_M_initialize_numpunct): Likewise.
+	* src/locale-inst.cc (__add_grouping): Tweak signature.
+	(__verify_grouping): Don't instantiate, not a template anymore.
+
+	* include/bits/locale_facets.h: Rename _M_truename_len ->
+	_M_truename_size, _M_falsename_len -> _M_falsename_size.
+	* include/bits/locale_facets.tcc: Likewise.
+	* config/locale/generic/numeric_members.cc: Likewise.
+	* config/locale/gnu/numeric_members.cc: Likewise.
+
+2004-01-14  Stefan Olsson  
+
+	* include/ext/mt_allocator.h: Fixups.
+	* testsuite/performance/allocator.cc: Enable __mt_alloc tests.
+	* testsuite/performance/allocator_thread.cc: Same.
+
+2004-01-13  Benjamin Kosnik  
+
+	* testsuite/performance/ifstream_extract_float.cc: Add higher
+	precision tests.
+	* testsuite/performance/ofstream_insert_float.cc: Same.
+
+2004-01-13  Paolo Carlini  
+
+	* src/locale-misc-inst.cc (__convert_from_v(long),
+	__convert_from_v(unsigned long), __convert_from_v(long long),
+	__convert_from_v(unsigned long long)): Remove, unused.
+
+2004-01-13  Benjamin Kosnik  
+
+	* testsuite/performance/ifstream_extract_float.cc: New.
+	* testsuite/performance/ofstream_insert_float.cc: Float generation
+	matches above.
+
+	* 20_util/auto_ptr.cc, auto_ptr_neg.cc: Break into...
+	* 20_util/auto_ptr/1.cc: ...this.
+	* 20_util/auto_ptr/2.cc: Same.
+	* 20_util/auto_ptr/3.cc: Same.
+	* 20_util/auto_ptr/3946.cc: Same.
+	* 20_util/auto_ptr/4.cc: Same.
+	* 20_util/auto_ptr/5.cc: Same.
+	* 20_util/auto_ptr/6.cc: Same.
+	* 20_util/auto_ptr/7.cc: Same.
+	* 20_util/auto_ptr/assign_neg.cc
+	* 20_util/pairs.cc: Break into...
+	* 20_util/pair/1.cc: ...this.
+	* 20_util/pair/2.cc: Same.
+	* 20_util/pair/3.cc: Same.
+	* 20_util/pair/4.cc: Same.
+
+2004-01-13  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get::do_get(void*&)):
+	Set correctly just basefield, the only group that matters.
+
+2004-01-13  Paolo Carlini  
+
+	* include/ext/rope (_Rope_rep_alloc_base): Eliminate.
+	(_Rope_rep_base): Inherit directly from the rope allocator;
+	use rebinding instead of _Alloc_traits; pick up data member
+	from _Rope_rep_alloc_base.
+	(_Rope_alloc_base): Eliminate.
+	(_Rope_base): Inherit directly from the rope allocator; use
+	rebinding instead of _Alloc_traits; pick up data member from
+	_Rope_alloc_base.
+	(rope::_S_new_RopeLeaf, rope::_S_new_RopeConcatenation,
+	rope::_S_new_RopeFunction, rope::_S_new_RopeSubstring): Tweak.
+
+2004-01-13  Paolo Carlini  
+
+	PR libstdc++/13650
+	* include/bits/basic_string.tcc (compare(size_type, size_type,
+	const _CharT*, size_type)): Implement correctly the resolution
+	of DR 5: basically, s is a char array, -not- a C string.
+	* include/bits/basic_string.h: Tweak some comments.
+	* testsuite/21_strings/basic_string/compare/char/13650.cc: New.
+	* testsuite/21_strings/basic_string/compare/wchar_t/13650.cc: New.
+
+2004-01-12  Andreas Tobler  
+
+	* testsuite/lib/libstdc++.exp: Set LD_LIBRARY_PATH_32 for
+	Solaris.
+
+2004-01-12  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc:
+	Use try_mkfifo.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc:
+	Likewise.
+
+2004-01-12  Paolo Carlini  
+
+	* include/bits/locale_facets.h (struct __numpunct_cache):
+	Add members _M_truename_len and _M_falsename_len, caching
+	the lengths of _M_truename and _M_falsename.
+	(__numpunct_cache<>::_M_cache): Assign the latter.
+	* include/bits/locale_facets.tcc (num_get::do_get(bool&),
+	num_put::do_put(bool)): Use the new members, thus avoiding
+	computing string lengths again and again.
+	* config/locale/generic/numeric_members.cc
+	(numpunct<>::_M_initialize_numpunct): Assign the new members.
+	* config/locale/gnu/numeric_members.cc
+	(numpunct<>::_M_initialize_numpunct): Likewise.
+
+2004-01-12  Mark Mitchell  
+
+	* testsuite/testsuite_hooks.h (__gnu_test::try_mkfifo): Declare it.
+	* testsuite/testsuite_hooks.cc (__gnu_test::try_mkfifo): Define
+	it.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use try_mkfifo
+	and remove Cygwin XFAIL.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
+2004-01-11  Gabriel Dos Reis  
+
+	* include/std/std_complex.h (std::complex<>::real): Return a
+	reference. Add non-const overload.
+	(std::complex<>::real): Likewise.
+	(std::real): Likewise.
+	(std::imag): Likewise.
+	(std::operator+): Tidy.
+	(std::operator-): Likewise.
+	(std::operator*): Likewise.
+	(std::operator/): Likewise.
+	(std::operator>>): Likewise.
+
+2004-01-11  Paolo Carlini  
+
+	PR libstdc++/13582
+	* include/bits/fstream.tcc (imbue): Exploit the external
+	buffer to imbue 'on the fly' a new locale and convert its
+	remainder with the new codecvt facet.
+	(underflow): Tweak slightly to deal with this special case.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: New.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc: Ditto.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Ditto.
+	* testsuite/27_io/objects/wchar_t/13582-1_xin.cc: Ditto.
+	* testsuite/27_io/objects/wchar_t/13582-1_xin.in: Ditto.
+
+2004-01-10  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+	Import Revision 28.
+
+2004-01-10  Paolo Carlini  
+
+	PR libstdc++/13630
+	* include/bits/locale_classes.h (class locale): Fix category
+	typedef.
+	* testsuite/22_locale/locale/13630.cc: Add.
+
+2004-01-10  Giovanni Bajo  
+
+	* include/bits/locale_facets.h: Make a name really dependent. This
+	will be needed when Core Issue 224 is implemented.
+
+2004-01-09  Paolo Carlini  
+
+	* testsuite/performance/allocator.cc: Demangle typeid(obj).name().
+	* testsuite/performance/allocator_thread.cc: Likewise.
+
+2004-01-07  Benjamin Kosnik  
+
+	* crossconfig.m4: Add LFS, io bits to linux cross config.
+	* acconfig.h: Remove obsolete bits, reorder.
+	* config.h.in: Regenerate.
+	* aclocal.m4: Same.
+	* configure: Same.
+
+2004-01-07  Gawain Bolton  
+
+	* include/bits/stl_list.h:
+	* include/bits/list.tc:
+	* src/list.cc:
+	Performance enhancements for destructor, push_front(),
+	push_back(), pop_front(), pop_back(), sort()
+	Eliminated static_casts where possible.
+	Moved code out of header files into new src/list.cc
+	implementation file for library where possible.
+	Remove inheritance from iterator class and create separate
+	classes for non-constant and constant iterators.
+	* include/bits/stl_tree.h (_Rb_tree class):
+	* src/tree.cc:
+	Only erase contents in destructor.
+	Eliminate unnecessary initialization in assignment operator.
+	Optimize for the nominal case by not checking whether
+	container is empty in clear().
+	Re-order test in _M_insert() to improve performance.
+	Move initialization of new node's left & right pointers to
+	src/tree.cc to where new node's colour is initialized
+	and to reduce the amount of inline code.
+	Use  _M_leftmost() and _M_end() to improve readability where
+	appropriate.
+	Create separate classes for non-constant and constant
+	iterators to clarify code, avoid extra template parameters and
+	casting away constness.
+
+2004-01-07  Benjamin Kosnik  
+
+	* src/Makefile.am (sources): Add list.cc, tree.cc.
+	* src/stl_tree.cc: Move to...
+	* src/tree.cc: ...here.
+	* src/list.cc: Add.
+	* config/linker-map.gnu: Tweaks.
+	* testsuite/23_containers/map/operators/1_neg.cc: Add excess errors.
+	* testsuite/23_containers/set/operators/1_neg.cc: Add excess errors.
+
+	* bits/stl_vector.h: Column wrap comments.
+
+2004-01-07  Loren J. Rittle  
+
+	(re-open) PR libstdc++/12658
+	* src/locale_init.cc (locale::locale): Remove ill-scoped mutex.
+	(locale::global): Likewise.
+
+2004-01-07  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc:
+	Remove redundant #include.
+	* testsuite/27_io/basic_ostream/endl/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/char/1.cc: Likewise,
+	re-enable normal testing.
+	* testsuite/27_io/basic_ostream/ends/char/2.cc: Remove redundant
+	#include.
+	* testsuite/27_io/basic_ostream/flush/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/5.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/8.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc:
+	More properly, #include .
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc:
+	Remove redundant #include.
+	* testsuite/27_io/basic_ostream/inserters_other/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/3.cc: Remove
+	redundant DejaGnu directive.
+	* testsuite/27_io/basic_ostream/inserters_other/char/4.cc: Remove
+	redundant #include.
+
+2004-01-06  Benjamin Kosnik  
+	    Stefan Olsson  
+
+	* scripts/check_performance: Use -pthread.
+	* testsuite/performance/allocator.cc: Tweaks, add list.
+	* testsuite/performance/allocator_thread.cc: New.
+
+2004-01-06  Jerry Quinn  
+
+	* include/bits/locale_facets.h: Document public classes and
+	functions.
+	* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+	Add comment.
+
+2004-01-06  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_other/char/1.cc:
+	Remove redundant #includes.
+	* testsuite/27_io/basic_istream/extractors_other/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/get/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/6360.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/7220.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/6414.cc: Likewise.
+	* testsuite/27_io/basic_istream/putback/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/6746-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/6746-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/8258.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/2346-fstream.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/2346-sstream.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
+
+2004-01-04  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc:
+	Remove redundant #includes.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc:
+	Likewise.
+
+2004-01-04  Mark Mitchell  
+
+	PR c++/12226
+	* testsuite/27_io/basic_filebuf/4.cc: Remove use of invalid copy
+	constructor.
+	* testsuite/27_io/basic_fstream/4.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/4.cc: Likewise.
+	* testsuite/27_io/basic_ios/4.cc: Likewise.
+	* testsuite/27_io/basic_iostream/4.cc: Likewise.
+	* testsuite/27_io/basic_istream/4.cc: Likewise.
+	* testsuite/27_io/basic_istingstream/4.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/4.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/4.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/5.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/4.cc: Likewise.
+
+2004-01-04  Paolo Carlini  
+
+	* config/locale/generic/numeric_members.cc (_M_initialize_numpunct):
+	Avoid unnecessarily zero terminating _M_atoms_out and _M_atoms_in;
+	always use double underscored names.
+	* config/locale/gnu/numeric_members.cc (_M_initialize_numpunct):
+	Likewise.
+	* include/bits/locale_facets.h (struct __numpunct_cache):
+	Dimension _M_atoms_out and _M_atoms_in one position smaller.
+	(__numpunct_cache<>::_M_cache): Don't zero terminate _M_atoms_out
+	and _M_atoms_in.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2005 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2005
new file mode 100644
index 000000000..48ae4c1f5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2005
@@ -0,0 +1,5468 @@
+2005-12-28  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 40.
+
+2005-12-28  Chris Jefferson  
+
+	* testsuite/testsuite_allocator.h (check_deallocate_null): Return true.
+
+2005-12-28  Paolo Carlini  
+
+	* include/std/std_bitset.h (bitset<>::_M_copy_from_string,
+	bitset<>::_M_copy_to_string, bitset<>::operator>>): Reverse loop.
+
+	* testsuite/25_algorithms/heap/heap.cc (test01): Always enable
+	complexity checks.
+	* testsuite/18_support/numeric_limits/specialization.cc: Avoid
+	unused parameter warning.
+	* testsuite/18_support/numeric_limits/traps.cc: Acoid unused variable
+	warning.
+	* testsuite/ext/malloc_allocator/deallocate_global.cc: Fix format
+	string.
+	* testsuite/ext/malloc_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/array_allocator/2.cc: Remove unused variable.
+	* testsuite/tr1/3_function_objects/mem_fn.cc: Avoid unused variable
+	warnings.
+	* testsuite/tr1/6_containers/unordered/instantiate/set.cc: Just
+	instantiate.
+	* testsuite/tr1/6_containers/unordered/instantiate/map.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/instantiate/hash.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/instantiate/multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered/instantiate/multimap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
+	Avoid unused variable warnings.
+	* testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc:
+	Likewise.
+	* testsuite/thread/18185.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/11584.cc: Likewise; avoid comparison
+	between signed and unsigned warning.
+	* testsuite/27_io/types/1.cc: Avoid unused variable warnings.
+	* testsuite/testsuite_allocator.h (check_new): Likewise.
+	(check_deallocate_null): Adjust return type.
+	* testsuite/testsuite_hooks.h (bitmask_operators): Avoid unused
+	variable warnings.
+	* testsuite/21_strings/c_strings/wchar_t/24559.cc: Avoid unused
+	variable warning.
+
+2005-12-28  Chris Jefferson  
+
+	* include/std/std_bitset.h (bitset<0>::set, bitset<0>::reset,
+	bitset<0>::flip, bitset<0>::test): Add inline specializations for
+	bitset<0>.
+
+	* testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
+	(test01): Add static cast.
+	* testsuite/tr1/6_containers/unordered/insert/set_range.cc
+	(test01): Likewise.
+	* testsuite/testsuite_hooks.h (operator==(NonDefaultConstructible,
+	NonDefaultConstructible), operator<(NonDefaultConstructible,
+	NonDefaultConstrictible)): Avoid unused parameter warning.
+
+2005-12-26  Chris Jefferson  
+
+	* include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove
+	name of unused parameter.
+	* include/bits/stream_iterator.h (istream_iterator::istream_iterator):
+	Construct _M_value.
+	* include/debug/functions.h (__check_valid_range): Add
+	__attribute__((unused)).
+	* include/tr1/hashtable (hashtable::end): Remove name of unused
+	parameter.
+	* include/tr1/tuple_iterate.h (tuple::tuple): Likewise.
+	(tuple::operator=): Add __attribute__((unused)).
+	* include/tr1/functional (Fnv_hash<4>::hash): Add static_cast.
+	(Fnv_hash<8>::hash): Likewise.
+
+	* testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of
+	unused parameter.
+	* testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2):
+	Likewise.
+	* testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise.
+	* testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is,
+	Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is,
+	Derived2::do_scan_is, Derived2::do_scan_not): Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put):
+	Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put):
+	Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put):
+	Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put):
+	Likewise.
+	* testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put):
+	Likewise.
+	* testsuite/25_algorithms/find/17441.cc (find): Likewise.
+	* testsuite/23_containers/vector/cons/clear_allocator.cc
+	(clear_alloc::clear_alloc): Likewise.
+	* testsuite/23_containers/vector/bool/clear_allocator.cc
+	(clear_alloc::clear_alloc): Likewise.
+	* testsuite/23_containers/list/cons/clear_allocator.cc
+	(clear_alloc::clear_alloc): Likewise.
+	* testsuite/23_containers/set/modifiers/16728.cc (test_container):
+	Likewise.
+	* testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type,
+	to_int_type): Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in,
+	do_unshift, do_length): Likewise.
+	* testsuite/21_strings/basic_string/capacity/1.cc
+	(operator==(A,A), operator<(A,A),
+	char_traits::to_char_type, char_traits::to_int_type): Likewise
+	* testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is,
+	ctype::do_scan_not, do_toupper, do_tolower): Likewise.
+	* testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=):
+	Add missing return statement.
+	* testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=):
+	Likewise.
+	* testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=,
+	random_access_iterator_wrapper::operator==): Likewise.
+	* testsuite/20_util/functional/binders/1.cc (s::f_int_int_const,
+	s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise.
+	* testsuite/27_io/types/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static
+	cast.
+	* testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise.
+	* testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise.
+	* testsuite/testsuite_allocator.h (check_new): Likewise.
+	(check_deallocate_null): Add missing return value.
+	* testsuite/ext/pool_allocator/allocate_chunk.cc (test01):
+	Make variable unsigned.
+	* testsuite/23_containers/vector/modifiers/erase/1.cc (N,N1,N2,N3,N4,
+	N5,test01): Likewise.
+	* testsuite/26_numerics/valarray/valarray_subset_assignment.cc
+	(check_array): Likewise.
+	(main): Removed unused variable.
+	* testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05):
+	Removed unused variable.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise.
+	* testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/
+	assign/shared_ptr.cc (test01): Correct return type.
+	* testsuite/27_io/basic_filebuf/close/char/2.cc (test_02):
+	Add default value to close_num.
+
+2005-12-24  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill(const _Deque_iterator&,
+	const _Deque_iterator&, const _Tp&)): Deal, correctly, only
+	with iterators (leave const_iterators alone).
+
+2005-12-24  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill(const _Deque_iterator<>&,
+	const _Deque_iterator<>&, const _Tp&)): Add.
+
+	* testsuite/23_containers/deque/cons/assign/1.cc: New.
+
+2005-12-19  Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque<>::resize, _M_fill_assign):
+	Avoid troubles with ADL, user defined operators and _Deque_iterator.
+	(operator-(const _Deque_iterator<>&, const _Deque_iterator<>&):
+	Add overload for left and right iterators of the same type.
+	* include/bits/deque.tcc (erase(iterator)): Avoid troubles with ADL,
+	user defined operators and _Deque_iterator.
+	* testsuite/23_containers/deque/types/1.cc: Add.
+
+	* include/bits/deque.tcc (_M_insert_aux(iterator, size_type,
+	const value_type&)): Qualify with std:: fill call.
+
+2005-12-18  Benjamin Kosnik  
+
+	* include/bits/c++config: Add in revised namespace associations.
+	_GLIBCXX_BEGIN_NAMESPACE: New macro.
+	_GLIBCXX_END_NAMESPACE: Same.
+	_GLIBCXX_BEGIN_NESTED_NAMESPACE: Same.
+	_GLIBCXX_END_NESTED_NAMESPACE: Same.
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS]): Add gnu-versioned-namespace.
+	* configure: Regenerated.
+	* config.h.in: Same.
+	* config/abi/pre/gnu-versioned-namespace.ver: New.
+	* config/abi/pre/gnu.ver (GLIBCXX_3.4.7): Add exports for nested
+	debug mode items.
+	* include/Makefile.am (${host_builddir}/c++config.h): Fill in
+	values for __GLIBCXX__ and _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION.
+	* include/Makefile.in: Regnerate.
+	* src/compatibility.cc: Alias new, nested definitions to exported
+	symbols from non-nested __gnu_debug.
+	* src/Makefile.am:  Add in ENABLE_SYMVERS_GNU_NAMESPACE.
+	* src/Makefile.in: Regenerate.
+
+	* docs/html/debug_mode.html: Revise for nested design.
+	* docs/html/debug.html: Use debug qualifications instead of
+	__gnu_debug.
+	* docs/html/configopts.html: Revise documentation for
+	--enable-symvers.
+
+	* include/debug/formatter: Simplify namespace qualifications for
+	current, nested-only reality. Add top-level namespace alias,
+	namespace debug, for debug-mode containers.
+	* include/debug/safe_iterator.h: Same.
+	* include/debug/set.h: Same.
+	* include/debug/hash_multimap.h: Same.
+	* include/debug/hash_set.h: Same.
+	* include/debug/bitset
+	* include/debug/safe_sequence.h: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/safe_base.h: Same.
+	* include/debug/functions.h: Same.
+	* include/debug/safe_iterator.tcc
+	* include/debug/hash_multiset.h: Same.
+	* include/debug/vector
+	* include/debug/map.h: Same.
+	* include/debug/deque
+	* include/debug/hash_map.h: Same.
+	* include/debug/string
+	* include/debug/macros.h: Same.
+	* include/debug/list
+	* include/debug/debug.h: Same.
+	* include/debug/multimap.h: Same.
+	* src/debug.cc: Same.
+	* testsuite/23_containers/vector/invalidation/1.cc: Cleanups.
+	* testsuite/23_containers/vector/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/3.cc: Same.
+	* testsuite/23_containers/vector/invalidation/4.cc: Same.
+	* testsuite/23_containers/deque/invalidation/1.cc: Same.
+	* testsuite/23_containers/deque/invalidation/2.cc: Same.
+	* testsuite/23_containers/deque/invalidation/3.cc: Same.
+	* testsuite/23_containers/deque/invalidation/4.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/1.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/1.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
+	* testsuite/23_containers/bitset/invalidation/1.cc: Same.
+	* testsuite/23_containers/bitset/cons/16020.cc: Same.
+	* testsuite/23_containers/bitset/operations/13838.cc: Same.
+	* testsuite/23_containers/list/invalidation/1.cc: Same.
+	* testsuite/23_containers/list/invalidation/2.cc: Same.
+	* testsuite/23_containers/list/invalidation/3.cc: Same.
+	* testsuite/23_containers/list/invalidation/4.cc: Same.
+	* testsuite/23_containers/set/invalidation/1.cc: Same.
+	* testsuite/23_containers/set/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/invalidation/1.cc: Same.
+	* testsuite/23_containers/map/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/insert/16813.cc: Same.
+
+	* include/bits/basic_ios.h: Use _GLIBCXX_BEGIN_NAMESPACE(std) and
+	friends.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/localefwd.h: Same.
+	* include/bits/valarray_array.tcc: Same.
+	* include/bits/valarray_after.h: Same.
+	* include/bits/gslice_array.h: Same.
+	* include/bits/stl_queue.h: Same.
+	* include/bits/gslice.h: Same.
+	* include/bits/locale_facets.tcc: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/stl_stack.h: Same.
+	* include/bits/stl_iterator_base_types.h: Same.
+	* include/bits/stl_heap.h: Same.
+	* include/bits/indirect_array.h: Same.
+	* include/bits/atomicity.h: Same.
+	* include/bits/stream_iterator.h: Same.
+	* include/bits/concurrence.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_pair.h: Same.
+	* include/bits/basic_ios.tcc: Same.
+	* include/bits/stl_raw_storage_iter.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_numeric.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/istream.tcc: Same.
+	* include/bits/postypes.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/mask_array.h: Same.
+	* include/bits/stl_uninitialized.h: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/slice_array.h: Same.
+	* include/bits/boost_concept_check.h: Same.
+	* include/bits/sstream.tcc: Same.
+	* include/bits/stl_iterator_base_funcs.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/stringfwd.h: Same.
+	* include/bits/c++config
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/valarray_array.h: Same.
+	* include/bits/stl_tempbuf.h: Same.
+	* include/bits/vector.tcc: Same.
+	* include/bits/deque.tcc: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/basic_string.tcc: Same.
+	* include/bits/list.tcc: Same.
+	* include/bits/streambuf_iterator.h: Same.
+	* include/bits/valarray_before.h: Same.
+	* include/bits/stl_construct.h: Same.
+	* include/bits/stl_function.h: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/bits/streambuf.tcc: Same.
+	* include/bits/allocator.h: Same.
+	* include/bits/stl_tree.h: Same.
+	* include/bits/fstream.tcc: Same.
+	* include/bits/stl_relops.h: Same.
+	* include/bits/functexcept.h: Same.
+	* include/std/std_valarray.h: Same.
+	* include/std/std_iostream.h: Same.
+	* include/std/std_streambuf.h: Same.
+	* include/std/std_bitset.h: Same.
+	* include/std/std_iosfwd.h: Same.
+	* include/std/std_iomanip.h: Same.
+	* include/std/std_fstream.h: Same.
+	* include/std/std_limits.h: Same.
+	* include/std/std_stdexcept.h: Same.
+	* include/std/std_istream.h: Same.
+	* include/std/std_complex.h: Same.
+	* include/std/std_memory.h: Same.
+	* include/std/std_ostream.h: Same.
+	* include/std/std_sstream.h: Same.
+	* include/c_std/std_csignal.h: Same.
+	* include/c_std/std_cstdlib.h: Same.
+	* include/c_std/std_cstdio.h: Same.
+	* include/c_std/std_cstdarg.h: Same.
+	* include/c_std/std_cctype.h: Same.
+	* include/c_std/std_cmath.h: Same.
+	* include/c_std/std_ctime.h: Same.
+	* include/c_std/std_clocale.h: Same.
+	* include/c_std/std_csetjmp.h: Same.
+	* include/c_std/std_cwchar.h: Same.
+	* include/c_std/std_cstring.h: Same.
+	* include/c_std/std_cstddef.h: Same.
+	* include/c_std/std_cwctype.h: Same.
+	* include/backward/iterator.h: Same.
+	* include/backward/set.h: Same.
+	* include/backward/hashtable.h: Same.
+	* include/backward/fstream.h: Same.
+	* include/backward/tempbuf.h: Same.
+	* include/backward/istream.h: Same.
+	* include/backward/bvector.h: Same.
+	* include/backward/stack.h: Same.
+	* include/backward/rope.h: Same.
+	* include/backward/complex.h: Same.
+	* include/backward/ostream.h: Same.
+	* include/backward/heap.h: Same.
+	* include/backward/iostream.h: Same.
+	* include/backward/function.h: Same.
+	* include/backward/multimap.h: Same.
+	* include/backward/pair.h: Same.
+	* include/backward/stream.h: Same.
+	* include/backward/iomanip.h: Same.
+	* include/backward/strstream
+	* include/backward/slist.h: Same.
+	* include/backward/tree.h: Same.
+	* include/backward/vector.h: Same.
+	* include/backward/deque.h: Same.
+	* include/backward/multiset.h: Same.
+	* include/backward/list.h: Same.
+	* include/backward/map.h: Same.
+	* include/backward/algobase.h: Same.
+	* include/backward/hash_map.h: Same.
+	* include/backward/algo.h: Same.
+	* include/backward/queue.h: Same.
+	* include/backward/streambuf.h: Same.
+	* src/allocator-inst.cc: Same.
+	* src/complex_io.cc: Same.
+	* src/localename.cc: Same.
+	* src/limits.cc: Same.
+	* src/ios_failure.cc: Same.
+	* src/locale-misc-inst.cc: Same.
+	* src/streambuf-inst.cc: Same.
+	* src/misc-inst.cc: Same.
+	* src/concept-inst.cc: Same.
+	* src/ios_locale.cc: Same.
+	* src/pool_allocator.cc: Same.
+	* src/fstream-inst.cc: Same.
+	* src/istream-inst.cc: Same.
+	* src/string-inst.cc: Same.
+	* src/locale_init.cc: Same.
+	* src/ctype.cc: Same.
+	* src/strstream.cc: Same.
+	* src/ostream-inst.cc: Same.
+	* src/functexcept.cc: Same.
+	* src/streambuf.cc: Same.
+	* src/sstream-inst.cc: Same.
+	* src/ios.cc: Same.
+	* src/valarray-inst.cc: Same.
+	* src/locale.cc: Same.
+	* src/tree.cc: Same.
+	* src/stdexcept.cc: Same.
+	* src/istream.cc: Same.
+	* src/compatibility.cc: Same.
+	* src/locale-inst.cc: Same.
+	* src/globals_io.cc: Same.
+	* src/list.cc: Same.
+	* src/ios_init.cc: Same.
+	* src/locale_facets.cc: Same.
+	* src/codecvt.cc: Same.
+
+	* include/tr1/unordered_map: Use _GLIBCXX_BEGIN_NAMESPACE(tr1).
+	* include/tr1/boost_shared_ptr.h: Same.
+	* include/tr1/tuple
+	* include/tr1/hashtable
+	* include/tr1/type_traits_fwd.h: Same.
+	* include/tr1/unordered_set
+	* include/tr1/functional
+	* include/tr1/ref_fwd.h: Same.
+	* include/tr1/utility
+	* include/tr1/type_traits
+	* include/tr1/array
+
+	* include/ext/hashtable.h: Use _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx).
+	* include/ext/typelist.h: Same.
+	* include/ext/hash_map: Same.
+	* include/ext/rc_string_base.h: Same.
+	* include/ext/pool_allocator.h: Same.
+	* include/ext/iterator: Same.
+	* include/ext/rb_tree: Same.
+	* include/ext/numeric: Same.
+	* include/ext/vstring.tcc: Same.
+	* include/ext/sso_string_base.h: Same.
+	* include/ext/stdio_filebuf.h: Same.
+	* include/ext/algorithm: Same.
+	* include/ext/codecvt_specializations.h: Same.
+	* include/ext/new_allocator.h: Same.
+	* include/ext/array_allocator.h: Same.
+	* include/ext/vstring_util.h: Same.
+	* include/ext/vstring_fwd.h: Same.
+	* include/ext/mt_allocator.h: Same.
+	* include/ext/debug_allocator.h: Same.
+	* include/ext/slist: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/ext/hash_fun.h: Same.
+	* include/ext/malloc_allocator.h: Same.
+	* include/ext/functional: Same.
+	* include/ext/bitmap_allocator.h: Same.
+	* include/ext/pod_char_traits.h: Same.
+	* include/ext/vstring.h: Same.
+	* include/ext/ropeimpl.h: Same.
+	* include/ext/hash_set: Same.
+	* include/ext/memory: Same.
+	* include/ext/rope: Same.
+	* include/bits/boost_concept_check.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/bits/concurrence.h: Same.
+	* include/bits/atomicity.h: Same.
+	* config/locale/gnu/numeric_members.cc: Same.
+	* config/locale/gnu/collate_members.cc: Same.
+	* config/locale/gnu/ctype_members.cc: Same.
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/gnu/codecvt_members.cc: Same.
+	* config/locale/gnu/messages_members.cc: Same.
+	* config/locale/gnu/c_locale.h: Same.
+	* config/locale/gnu/monetary_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/locale/ieee_1003.1-2001/c_locale.h: Same.
+	* config/locale/generic/numeric_members.cc: Same.
+	* config/locale/generic/collate_members.cc: Same.
+	* config/locale/generic/ctype_members.cc: Same.
+	* config/locale/generic/c_locale.cc: Same.
+	* config/locale/generic/codecvt_members.cc: Same.
+	* config/locale/generic/messages_members.cc: Same.
+	* config/locale/generic/c_locale.h: Same.
+	* config/locale/generic/monetary_members.cc: Same.
+	* config/locale/generic/time_members.cc: Same.
+	* config/os/aix/atomicity.h: Same.
+	* config/os/irix/atomicity.h: Same.
+	* config/cpu/powerpc/atomicity.h: Same.
+	* config/cpu/cris/atomicity.h: Same.
+	* config/cpu/ia64/atomicity.h: Same.
+	* config/cpu/alpha/atomicity.h: Same.
+	* config/cpu/m68k/atomicity.h: Same.
+	* config/cpu/hppa/atomicity.h: Same.
+	* config/cpu/mips/atomicity.h: Same.
+	* config/cpu/sparc/atomicity.h: Same.
+	* config/cpu/i386/atomicity.h: Same.
+	* config/cpu/i486/atomicity.h: Same.
+	* config/cpu/sh/atomicity.h: Same.
+	* config/cpu/generic/atomicity.h: Same.
+	* config/cpu/s390/atomicity.h: Same.
+	* config/io/c_io_stdio.h: Same.
+	* config/io/basic_file_stdio.cc: Same.
+	* config/io/basic_file_stdio.h: Same.
+	* src/misc-inst.cc: Same.
+	* src/concept-inst.cc: Same.
+	* src/ext-inst.cc: Same.
+	* src/string-inst.cc: Same.
+	* src/pool_allocator.cc: Same.
+	* src/bitmap_allocator.cc: Same.
+	* src/mt_allocator.cc: Same.
+	* libsupc++/exception: Same.
+	* libsupc++/vterminate.cc: Same.
+	* testsuite/ext/hash_map/1.cc: Explicitly qualify __gnu_cxx::hash_map.
+	* testsuite/ext/hash_map/14648.cc: Same.
+
+	* libsupc++/eh_alloc.cc: Correct comment line spacing.
+
+2005-12-18  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__copy_normal::copy_n): Uglify
+	to __copy_n.
+	(__copy_backward::copy_b): Likewise to __copy_b.
+	(__copy_backward_normal::copy_b_n): Likewise to __copy_b_n.
+	(copy, __copy_backward_aux, copy_backward): Adjust.
+
+2005-12-18  Paolo Carlini  
+
+	* include/bits/stl_algo.h (partial_sort_copy): Add
+	_BinaryPredicateConcept<_Compare, _InputValueType, _OutputValueType>
+	(merge, set_union, set_symmetric_difference): Add
+	_OutputIteratorConcept<_OutputIterator, _ValueType2>.
+	(binary_search): Remove redundant _BinaryPredicateConcept<_Compare,
+	_ValueType, _Tp>, taken care by lower_bound.
+	* include/bits/stl_algo.h: Cosmetic changes.
+
+2005-12-18  Paolo Carlini  
+	    Howard Hinnant  
+
+	* include/bits/stl_algo.h (merge, includes, set_union,
+	set_intersection, set_difference, set_symmetric_difference):
+	Fix concept checks.
+
+2005-12-18  Paolo Carlini  
+
+	* include/bits/stl_algo.h (partial_sort_copy, lower_bound,
+	upper_bound, equal_range, binary_search): Fix concept checks.
+
+2005-12-18  Benjamin Kosnik  
+
+	* config/abi/post: New.
+	* config/abi/*-linux-gnu: Move to..
+	* config/abi/post/*-linux-gnu: ... here.
+	* config/abi/pre: New.
+	* config/linker-map.gnu: Move to ..
+	* config/abi/pre/gnu.ver: ... here.
+	* config/linker-map.dummy: Move to..
+	* config/abi/pre/none.ver: ... here.
+	* src/Makefile.am: Use ENABLE_SYMVERS_GNU,
+	ENABLE_SYMVERS_DARWIN, ENABLE_SYMVERS_GNU_NAMESPACE.
+	Use libstdc++-symbols.ver instead of libstdc++-symbol.ver.
+	* src/Makefile.in: Regnerate.
+	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Adjust paths for new
+	placement of abi baseline files.
+	(GLIBCXX_ENABLE_SYMVERS): Add ENABLE_SYMVERS, ENABLE_SYMVERS_GNU,
+	ENABLE_SYMVERS_DARWIN.  SYMVER_MAP to SYMVER_FILE.
+	* configure: Regnerate.
+	* config.h.in: Regnerate.
+	* src/compatibility.cc: Adjust macro usage.
+
+2005-12-17  Benjamin Kosnik  
+
+        * src/io-inst.cc: Separate instantiations into...
+        * src/ios-inst.cc: .. this.
+        * src/iostream-inst.cc: ... and this.
+        * src/Makefile.am (sources): Update.
+        * src/Makefile.in: Regenerate.
+
+2005-12-17  Benjamin Kosnik  
+
+	PR libstdc++/25472
+        * include/c_std/std_cstdlib.h: Fix for freestanding.
+
+2005-12-17  Benjamin Kosnik  
+
+	* testsuite/libstdc++-dg/normal.exp: Rename to..
+	* testsuite/libstdc++-dg/conformance.exp: ... this.
+
+2005-12-17  Paolo Carlini  
+
+	* include/bits/stl_vector.h (vector(const vector&)): Use
+	_M_get_Tp_allocator.
+	* include/bits/stl_deque.h (deque(const deque&)): Likewise.
+	(_M_destroy_data): Adjust.
+
+2005-12-17  Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque<>::_M_erase_at_end,
+	_M_erase_at_begin, _M_destroy_data, _M_destroy_data_dispatch,
+	_M_destroy_data_aux): New, optimize erase at begin() / end() and
+	consistently use the "segmented iterator" optimization.
+	(deque<>::~deque(), resize, clear, _M_assign_aux, _M_fill_assign):
+	Use the above.
+	* include/bits/deque.tcc (deque<>::operator=, _M_assign_aux): Same.
+	(erase(iterator, iterator)): Likewise, clean-up.
+	(erase(iterator)): Tweak, don't call copy unnecessarily.
+	(_M_destroy_data_aux): Define.
+	* testsuite/23_containers/deque/modifiers/erase/1.cc: New.
+	* testsuite/23_containers/deque/modifiers/erase/2.cc: Likewise.
+
+2005-12-17  Gabriel Dos Reis  
+
+	* include/bits/valarray_after.h (_Expr<>::operator[](slice)):
+	Don't assume the closure implements general indexing, as a matter
+	of fact, most of them don't.
+	(_Expr<>::operator[](const gslice&)): Likewise.
+	(_Expr<>::operator[](const valarray&)): Likewise.
+	(_Expr<>::operator[](const valarray&)): Likewise.
+	(_Expr<>::shift): Fix thinko.
+	(_Expr<>::cshift): Likewise.
+	(_Expr<>::apply): Likewise.
+
+2005-12-16  Paolo Carlini  
+
+	* testsuite/tr1/4_metaprogramming/type_properties/is_empty/is_empty.cc:
+	Fix class NonEmptyClassTwo.
+
+2005-12-15  Paolo Carlini  
+
+	* include/bits/stl_vector.h (vector<>::_M_get_Tp_allocator): Change
+	to return by ref and add non const version.
+	* include/bits/stl_deque.h (deque<>::_M_get_Tp_allocator): Likewise.
+
+2005-12-15  Paolo Carlini  
+
+	PR libstdc++/25421
+	* config/locale/gnu/c_locale.cc (_S_destroy_c_locale): Check
+	for null argument.
+	* testsuite/22_locale/facet/25421.cc: New.
+
+2005-12-13  Carlos O'Donell 
+
+	* include/std/std_limits.h (struct numeric_limits):
+	Use __DBL_HAS_DENORM__, __FLT_HAS_DENORM__, __LDBL_HAS_DENORM__.
+
+2005-12-10  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_compare):
+	Add, specialized for char and wchar_t to immediately return true
+	when a string is compared to itself.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_compare):
+	Likewise, for the same _Rep.
+	* include/ext/vstring.h (compare(const string&)): Use it.
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_destroy):
+	Deallocate passed size + 1.
+	(_M_dispose, _M_reserve): Adjust.
+
+2005-12-09  Paolo Carlini  
+	    Howard Hinnant  
+
+	PR libstdc++/25288
+	* include/bits/stl_list.h (list<>::_M_insert_dispatch, _M_fill_insert):
+	Remove.
+	(_M_initialize_dispatch, _M_fill_initialize): Add.
+	(list(size_type, const value_type&, const allocator_type&),
+	list(const list&), list(_InputIterator, _InputIterator,
+	const allocator_type&): Use the latter.
+	(insert(iterator, size_type, const value_type&), insert(iterator,
+	_InputIterator, _InputIterator)): Use construction & splice.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: New.
+	* testsuite/testsuite_allocator.h (class throw_allocator): Add.
+
+	* include/bits/stl_list.h (list<>::insert, erase): Fix wrong comments.
+
+2005-12-08  Paolo Carlini  
+
+	* include/bits/stl_vector.h (vector<>::size, resize, capacity,
+	operator[]): Avoid troubles with ADL, user defined operators
+	and __normal_iterator.
+	(_M_erase_at_end): Fix to take a pointer.
+	(clear): Adjust call.
+	* include/bits/vector.tcc (vector<>::insert(iterator, const
+	value_type&), erase(iterator, iterator), operator=(const
+	vector<>&), _M_assign_aux(input_iterator_tag), _M_insert_aux,
+	_M_fill_insert, _M_range_insert): Likewise.
+	(_M_fill_assign, _M_assign_aux(forward_iterator_tag)): Adjust
+	_M_erase_at_end call.
+	* testsuite/23_containers/vector/types/1.cc: New.
+
+2005-12-08  Paolo Carlini  
+
+	PR libstdc++/24617
+	* include/bits/stl_vector.h (vector<>::_M_erase_at_end): New.
+	(vector<>::clear, resize): Use it.
+	* include/bits/vector.tcc (vector<>::erase(iterator, iterator),
+	_M_fill_assign, _M_assign_aux): Likewise.
+
+	* testsuite/23_containers/vector/modifiers/erase/1.cc: New.
+
+2005-12-07  Paolo Carlini  
+
+	* docs/html/configopts.html ([--enable-libstdcxx-allocator]):
+	Mention the SGI pooled allocator.
+
+2005-12-06  Paolo Carlini  
+
+	* include/bits/basic_string.h (insert(iterator, _CharT),
+	erase(iterator), erase(iterator, iterator)): Avoid troubles
+	with ADL, user defined operators and __normal_iterator.
+	* include/bits/stl_iterator.h (operator-(const __normal_iterator
+	<_Iterator, _Container>&, const __normal_iterator<_Iterator,
+	_Container>&)): Add overload for left and right iterators of
+	the same type.
+	* include/debug/safe_iterator.h (operator-(const _Safe_iterator
+	<_Iterator, _Sequence>&, const _Safe_iterator<_Iterator,
+	_Sequence>&)): Likewise.
+	* testsuite/21_strings/basic_string/types/1.cc: New.
+
+2005-12-05  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_assign):
+	Simplify, avoid pointless reallocations.
+
+2005-12-04  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_reserve):
+	Simplify.
+
+2005-12-04  Paolo Carlini  
+
+	* include/ext/vstring.h (__versa_string<>::operator+, all
+	versions): Move out of line...
+	* include/ext/vstring.tcc (__versa_string<>::operator+): ...
+	here; consistently use reserve for the benefit of sso_string_base;
+	prefer push_back to single-char append when appropriate.
+
+	* include/ext/vstring.h (__versa_string<>::push_back): Don't
+	call _M_reserve, _M_mutate instead.
+	(reserve): Just forward to _M_reserve.
+	* include/ext/vstring.tcc (__versa_string<>::_M_reserve): Remove.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_reserve): Also
+	do the initial checks (first on length, in case __res == capacity).
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_reserve:
+	Likewise; don't call _M_set_length unnecessarily.
+
+2005-12-04  Paolo Carlini  
+
+	* include/ext/vstring.h (__versa_string<>::_M_append): New.
+	(append(const __versa_string&), append(const __versa_string&,
+	size_type, size_type), append(const _CharT*, size_type),
+	append(const _CharT*)): Use it.
+	(append(size_type, _CharT)): Delegate to _M_replace_aux.
+	(assign(const __versa_string&, size_type, size_type),
+	assign(const _CharT*), replace(size_type, size_type,
+	const _CharT*, size_type)): Forward to _M_replace.
+	* include/ext/vstring.tcc (__versa_string<>::_M_append):
+	Define, core append functionality.
+	(_M_replace): Simplify, move __s == 0 case to _M_replace_aux.
+	(_M_replace_aux): Reorganize, don't call _M_replace.
+
+2005-12-04  Paolo Carlini  
+
+	* include/ext/vstring.tcc (__versa_string<>::_M_replace):
+	Perform _M_check_length at the beginning and remove it from ...
+	(replace, _M_replace_dispatch, _M_replace_aux, assign): ... here.
+	(assign): Now move inline.
+	(resize): Don't call _M_check_length redundantly, append does.
+
+2005-12-04  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_get_allocator):
+	Add non const version.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_get_allocator):
+	Likewise.
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_erase): Add.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_erase): Likewise.
+	(_M_leak_hard): Use it.
+	* include/ext/vstring.h (__versa_string<>::clear, erase, all
+	versions): Use it.
+	* include/ext/vstring.tcc (__versa_string<>::resize): Likewise.
+
+	* include/ext/vstring.h (__versa_string<>::_M_replace_safe):
+	Remove.
+	* include/ext/vstring.h (__versa_string<>::_M_replace): New, does
+	the in-place work or delegates to _M_mutate in case of reallocation.
+	* include/ext/vstring.tcc (__versa_string<>::_M_replace_safe):
+	Remove.
+	* include/ext/vstring.tcc (__versa_string<>::_M_replace): Define.
+	(assign, replace, _M_replace_dispatch, _M_replace_aux): Use it.
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_mutate):
+	Change to manage only reallocations.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_mutate):
+	Likewise.
+
+	* include/ext/vstring.h (__versa_string<>::insert(size_type,
+	const __versa_string&), insert(size_type, const __versa_string&,
+	size_type, size_type), insert(size_type, const _CharT*, size_type),
+	insert(size_type, const _CharT*)): Delegate to replace.
+
+	* include/ext/vstring.h (__versa_string<>::reserve): Move out of
+	line.
+	* include/ext/vstring.tcc (__versa_string<>::reserve): Do the
+	checks and call _M_reserve.
+	* include/ext/vstring.h (__versa_string<>::append): Call _M_reserve
+	instead of reserve.
+	* include/ext/vstring.tcc (__versa_string<>::append, all versions):
+	Likewise.
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_reserve):
+	Adjust.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_reserve):
+	Likewise.
+
+2005-12-02  David Billinghurst (David.Billinghurst@riotinto.com)
+
+	PR testsuite/25193
+	* testsuite/lib/libstdc++.exp (libstdc++-dg-test): Catch
+	error if file cannot be deleted.
+
+2005-11-23  Paolo Carlini  
+
+	PR libstdc++/24975 (basic_string)
+	* include/bits/basic_string.h (_Rep::_S_empty_rep): Avoid
+	strict-aliasing warnings.
+
+2005-11-22  Paolo Carlini  
+
+	PR libstdc++/24975
+	* include/bits/stl_set.h (insert(iterator, const value_type&),
+	erase(iterator), erase(iterator, iterator)): Don't break aliasing
+	rules casting to _Rep_iterator&, forward to _Rb_tree facilities.
+	* include/bits/stl_multiset.h (insert(iterator, const value_type&),
+	erase(iterator), erase(iterator, iterator)): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert(_Const_Base_ptr,
+	_Const_Base_ptr, const value_type&), insert_unique(const_iterator,
+	const value_type&), insert_equal(const_iterator, const value_type&),
+	erase(const_iterator), erase(const_iterator, const_iterator)): New,
+	_Rb_tree<>::const_iterator counterparts of existing facilities.
+
+2005-11-21  Benjamin Kosnik  
+            Ulrich Drepper  
+
+	PR libstdc++/23591
+	* scripts/create_testsuite_files: Support for "C" test files.
+	* testsuite/lib/libstdc++.exp: Same.
+	* testsuite/libstdc++-dg/normal.exp: Same.
+	* testsuite/ext/mt_allocator/22309_thread.cc: Update names.
+	* testsuite/19_diagnostics/23591_thread-1.c: New.
+	* testsuite/testsuite_shared.cc: Add tests, rename existing functions.
+	* libsupc++/eh_globals.cc: Make global thread local if possible.
+	* configure.ac: Use GCC_CHECK_TLS.
+	* acinclude.m4: Include tls.m4.
+	* configure: Regenerate.
+	* config.h.in: Same.
+
+2005-11-21  Benjamin Kosnik  
+
+	* libsupc++/del_op.cc: Include c++config.h first.
+	* libsupc++/eh_alloc.cc: Same.
+	* libsupc++/new_opv.cc: Same.
+	* libsupc++/eh_throw.cc: Same.
+	* libsupc++/new_op.cc: Same.
+	* libsupc++/del_opv.cc: Same.
+	* libsupc++/eh_catch.cc: Same.
+	* libsupc++/guard.cc: Same.
+	* libsupc++/del_opnt.cc: Same.
+	* libsupc++/eh_exception.cc: Same.
+	* libsupc++/new_opvnt.cc: Same.
+	* libsupc++/eh_term_handler.cc: Same.
+	* libsupc++/eh_personality.cc: Same.
+	* libsupc++/eh_call.cc: Same.
+	* libsupc++/new_opnt.cc: Same.
+	* libsupc++/del_opvnt.cc: Same.
+
+2005-11-21  Benjamin Kosnik  
+
+	* src/Makefile.am (LTCXXCOMPILE): CXXFLAGS last.
+	* libsupc++/Makefile.am: Same.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Same.
+
+2005-11-21  Paolo Carlini  
+
+	* include/ext/sso_string_base.h: Minor formatting and stylistic fixes.
+	(__sso_string_base<>::_M_get_allocator): Return by const ref.
+	* include/ext/rc_string_base.h: Likewise.
+	(__rc_string_base<>::_M_get_allocator): Return by const ref.
+	(__rc_string_base<>::_M_dispose): Take void, use _M_get_allocator.
+	(__rc_string_base<>::_M_grab): Take one alloc, use _M_get_allocator.
+	(__rc_string_base<>::~__rc_string_base,
+	__rc_string_base(const __rc_string_base&), _M_assign, _M_reserve,
+	_M_mutate): Adjust.
+	* include/ext/vstring_util.h: Minor stylistic fixes.
+
+2005-11-18  Paolo Carlini  
+
+	* include/ext/rc_string_base.h (__rc_string_base<>::_Rep): Avoid the
+	anonymous struct extension, adjust everywhere.
+
+	* include/ext/rc_string_base.h (__rc_string_base<>::_S_empty_rep()):
+	Just use a static member.
+	(__rc_string_base<>::__rc_string_base(), _S_construct): Adjust.
+
+	* include/ext/rc_string_base.h (__rc_string_base<>::_Rep): Use
+	anonymous union together with _CharT to fix alignment issues,
+	rebind to _Rep and rename _Raw_alloc to _Rep_alloc_type.
+	(__rc_string_base<>::_Rep::_S_create, _M_destroy): Adjust consistently.
+
+	* include/ext/vstring_util.h (__is_null_p): Move inside struct
+	__vstring_utility as static _S_is_null_pointer.
+	* include/ext/sso_string.h
+	(__sso_string_base<>::_M_construct(std::forward_iterator_tag): Adjust.
+	* include/ext/rc_string_base.h
+	(__rc_string_base<>::_S_construct(std::forward_iterator_tag): Likewise.
+
+	Implement Option 3 of DR 431 for ext/vstring - both available bases.
+	* include/bits/cpp_type_traits.h (struct __is_empty): Add.
+	* include/ext/vstring.h (__versa_string<>::swap): Delegate to
+	this->_M_swap.
+	* include/ext/vstring.tcc (__versa_string<>::swap): Remove.
+	* include/ext/vstring_util.h (struct __vstring_utility<>): Add struct
+	_Alloc_hider<>, augmented of allocator swapping facility, specialized
+	to nop for empty allocators.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_swap): Use it.
+	(__rc_string_base<>::_M_is_leaked, _M_set_sharable): Change to private.
+	* include/ext/sso_string_base.h	(__sso_string_base<>::_M_swap):
+	Likewise.
+	(__sso_string_base<>::_M_is_leaked, _M_set_sharable): Remove, unused.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_data(_CharT*):
+	Return void.
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_data(_CharT*):
+	Likewise.
+
+2005-11-17  Geoffrey Keating  
+
+	* config/os/bsd/darwin/ppc-extra.ver: New.
+	* src/Makefile.am (libstdc++-symbol.ver): Move outside conditionals,
+	and make dependent on port symbol files.
+	(libstdc++-symbol.explist): Use the generated .ver file, not
+	the template.
+	* src/compatibility.cc [APPLE] (__eprintf): New.
+	* src/Makefile.in: Regenerate.
+	* configure.host (powerpc*-*-darwin*): Define
+	port_specific_symbol_files.
+
+2005-11-16  Nathan Sidwell  
+
+	* libsupc++/eh_arm.cc (__cxa_begin_cleanup): Remember a
+	foreign exception too.
+	(__gnu_end_cleanup): Recover a foreign exception too.
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Cope
+	with forced unwinding.
+	* libsupc++/eh_throw.cc (__cxxabiv1::__cxa_rethrow): Use
+	_Unwind_Resume_or_Rethrow for ARM EABI.
+
+2005-11-14  Geoffrey Keating  
+
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Don't check for
+	shared libgcc for darwin exports.
+	* configure: Regenerate.
+
+2005-11-13  Jonathan Wakely  
+
+	* include/tr1/boost_shared_ptr.h (get_deleter):
+	Declare before shared_ptr.
+	(shared_ptr<>): Declare get_deleter as friend.
+	(shared_ptr<>:_M_get_deleter): Private.
+
+2005-11-13  Douglas Gregor  
+
+	PR libstdc++/24818
+	* include/tr1/ref_wrap_iterate.h
+	(reference_wrapper::operator()()): Don't dereferene the result of
+	get() before calling it; it's already a reference.
+	* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
+	Test nullary calls to reference_wrappers.
+
+2005-11-11  Paolo Carlini  
+
+	PR libstdc++/24808
+	* include/tr1/type_traits (__is_abstract_helper): Rename to __in_array
+	(with complemented logic).
+	(is_function): Use it, don't use __conv_helper.
+	(is_abstract): Adjust.
+	(__conv_helper): Rename to __is_convertible_simple.
+	(is_convertible): Adjust.
+	* testsuite/testsuite_tr1.h (class IncompleteClass): Add.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/is_object/
+	24808.cc: New.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/is_enum/
+	24808.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/is_function/
+	24808.cc: Likewise.
+
+2005-11-11  Paolo Carlini  
+
+	PR libstdc++/24799
+	* include/tr1/functional (hash): Inherit from std::unary_function.
+	* testsuite/tr1/6_containers/unordered/hash/24799.cc: New.
+
+	PR libstdc++/24805
+	* include/tr1/boost_shared_ptr.h (swap(shared_ptr<>&, shared_ptr<>&),
+	swap(weak_ptr<>&, weak_ptr<>&)): Move inside namespace tr1.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/modifiers/
+	24805.cc: New.
+
+	PR libstdc++/24809
+	* include/tr1/type_traits (__is_polymorhpic_helper): Adjust destructor.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_polymorphic/
+	24809.cc: New.
+
+2005-11-10  Paolo Carlini  
+
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared.cc: Adjust, remove xfail.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared2.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared3.cc: Likewise.
+
+2005-11-10  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release,
+	weak_release): Protect barriers with __GTHREADS.
+
+2005-11-10  Paolo Carlini  
+	    Peter Dimov  
+
+	* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release):
+	Optimize by manually inlining weak_release.
+
+	* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release,
+	weak_release): Use explicit memory barriers.
+
+2005-11-09  Benjamin Kosnik  
+	    Paolo Carlini  
+            Gabriel Dos Reis  
+
+	PR libstdc++/22203
+	* numeric_limits.cc: Split into...
+	* numeric_limits/specialization.cc: ..this.
+	* numeric_limits/is_iec559.cc: Same.
+	* numeric_limits/sign.cc: Same.
+	* numeric_limits/quiet_NaN.cc: Same.
+	* numeric_limits/digits10.cc: Same.
+	* numeric_limits/denorm_min.cc: Same.
+	* numeric_limits/min_max.cc: Same.
+	* numeric_limits/epsilon.cc: Same.
+	* numeric_limits/infinity.cc: Same.
+	* numeric_limits/traps.cc: New.
+
+2005-11-09  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h: Trivial formatting fixes.
+
+2005-11-08  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_debug_mode): Use
+	exe as the executable extension.
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Change gnu defaults to
+	new.
+	(GLIBCXX_ENABLE_PCH): Adjust message order.
+	* configure: Regenerate.
+
+	* scripts/testsuite_flags.in (query): Correct print_usagex typo.
+
+	* include/bits/functexcept.h: Remove argument names.
+
+	* src/mt_allocator.cc: Adjust comment.
+
+2005-11-06  Paolo Carlini  
+
+	PR libstdc++/18174
+	* include/bits/stl_queue.h (priority_queue): Tweak a bit the
+	comment describing the container.
+
+2005-11-05  Paolo Carlini  
+
+	* configure.host: Add | rs6000 to the cpu_defines_dir switch,
+	consistently with the try_cpu one.
+
+2005-11-05  Paolo Carlini  
+
+	PR libstdc++/22203
+	* include/bits/c++config: Include cpu_defines.h.
+	* include/Makefile.am: Add cpu_defines.h to host_headers.
+	* configure.host: Add cpu_defines_dir.
+	* configure.ac: Use it.
+	* config/cpu/powerpc/cpu_defines.h: New.
+	* config/cpu/generic/cpu_defines.h: Likewise.
+	* configure: Regenerate.
+	* Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2005-11-03  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
+	Change the various traits_type::copy call to always copy the
+	entire local buffer; return early and don't do a full swap on
+	the lengths for two common cases; change two _S_copy to plain
+	traits_type::copy.
+
+2005-11-02  Thomas Kho  
+
+	PR libstdc++/23425
+	* include/bits/stl_vector.h (vector<>::clear): Open code
+	in terms of _Destroy.
+
+2005-11-02  Paolo Carlini  
+
+	* include/bits/vector.tcc (vector<>::_M_fill_assign): Qualify fill_n.
+
+2005-11-01  Paolo Carlini  
+
+	PR libstdc++/24595
+	* include/tr1/boost_shared_ptr.h (shared_ptr<>::get_deleter):
+	Move out of shared_ptr.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/misc/24595.cc:
+	New.
+
+2005-10-30  Paolo Carlini  
+
+	PR libstdc++/20213
+	* include/c_std/std_csignal.h: Adjust comment as per 17.4.1.2/4.
+	* include/c_std/std_cstdlib.h: Likewise.
+	* include/c_std/std_cstdio.h: Likewise.
+	* include/c_std/std_cstdarg.h: Likewise.
+	* include/c_std/std_cctype.h: Likewise.
+	* include/c_std/std_cerrno.h: Likewise.
+	* include/c_std/std_cmath.h: Likewise.
+	* include/c_std/std_ciso646.h: Likewise.
+	* include/c_std/std_ctime.h: Likewise.
+	* include/c_std/std_clocale.h: Likewise.
+	* include/c_std/std_climits.h: Likewise.
+	* include/c_std/std_cassert.h: Likewise.
+	* include/c_std/std_csetjmp.h: Likewise.
+	* include/c_std/std_cwchar.h: Likewise.
+	* include/c_std/std_cfloat.h: Likewise.
+	* include/c_std/std_cstring.h: Likewise.
+	* include/c_std/std_cstddef.h: Likewise.
+	* include/c_std/std_cwctype.h: Likewise.
+
+2005-10-29  Carey Evans  
+
+	PR libstdc++/22087
+	* config/os/djgpp/ctype_inline.h: Fix.
+	* config/os/djgpp/ctype_noninline.h: Likewise.
+
+2005-10-28  Paolo Carlini  
+
+	PR libstdc++/24559
+	* include/c_std/std_cwchar.h (wcspbrk): Adjust signature.
+	* testsuite/21_strings/c_strings/wchar_t/24559.cc: New.
+
+2005-10-25  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 39.
+	* docs/html/ext/howto.html: Adjust.
+
+2005-10-21  Paolo Carlini  
+
+	PR libstdc++/24450
+	* config/locale/generic/time_members.h (__timepunct<>::
+	__timepunct(__c_locale, const char*, size_t)): Avoid leaking
+	memory if new throws inside _M_initialize_timepunct.
+	* config/locale/gnu/time_members.h (__timepunct<>::
+	__timepunct(__c_locale, const char*, size_t)): Likewise.
+	* config/locale/gnu/message_members.h (messages<>::
+	messages(__c_locale, const char*, size_t)): Rearrange to
+	avoid memory leaks.
+
+2005-10-19  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (_M_swap): Rewrite.
+
+2005-10-19  Paolo Carlini  
+
+	* include/ext/rc_string_base.h (_S_terminal): Remove.
+	(_M_set_length): Adjust.
+	(_S_max_size): Change to anonymous enum.
+	(_M_max_size()): Add, returns the latter.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/ext/vstring.h (max_size): Adjust.
+
+2005-10-17  Jonathan Wakely  
+
+	PR libstdc++/24244
+	* include/tr1/boost_shared_ptr.h
+	(_Sp_counted_base::_Sp_counted_base()): When __GTHREAD_MUTEX_INIT
+	is defined, initialize the mutex.
+
+2005-10-15  Paolo Carlini  
+
+	* include/tr1/functional: Add missing #pragma GCC system_header.
+
+2005-10-14  Paolo Carlini  
+
+	* include/tr1/hashtable (hashtable::m_erase): Rename to erase_node.
+	(hashtable::erase(iterator), erase(const_iterator)): Adjust.
+
+2005-10-13  Richard Earnshaw  
+
+	PR libstdc++/23926
+	* acinclude.m4 (port_specific_symbol_files): More symbol versioning
+	fixes.
+	* configure: Regenerate.
+
+2005-10-13  Hans-Peter Nilsson  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Require
+	native testing before setting v3-sharedlib to 1.
+
+2005-10-12  Joe Buck  
+
+	* docs/html/27_io/howto.html: Use reference to ifstream when
+	including iosfwd.
+
+2005-10-11  Andrew Pinski  
+
+	PR libstdc++/23926
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Fix typo in check
+	for GNU LD.
+	* configure: Regenerate.
+
+2005-10-10  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:7:0.
+	* configure: Regenerate.
+	* testsuite/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.7.
+	* config/linker-map.gnu: Export locale::_Impl::_M_install_cache.
+
+2005-10-10  Ian Lance Taylor  
+
+	PR libstdc++/13583
+	* include/bits/locale_classes.h (locale::_Impl::_M_install_cache):
+	Move out of line.
+	* src/locale.cc: Define here, add mutex.
+
+2005-10-09  Paolo Carlini  
+
+	PR libstdc++/24061 (issue 6.19)
+	* include/tr1/hashtable (struct node_const_iterator, struct
+	hashtable_const_iterator): New, add const variants to enable separate
+	overloadings for iterator and const_iterator in unordered_set and
+	unordered_multiset (as required by issue 6.19).
+	(class hashtable): Change the mutable_iterators template parameter
+	to constant_iterators and adjust throughout the logic.
+	(hashtable::insert(iterator, const value_type&), erase(iterator)
+	erase(iterator, iterator)): New, as per issue 6.19.
+	(hashtable::m_erase(node*, node**)): New, called by erase(iterator)
+	and erase(const_iterator).
+	(hashtable::Insert_Conv_Type): New, used by insert(iterator,
+	const value_type&) and insert(const_iterator, const value_type&)
+	to delegate the work to insert(const value_type&).
+	* include/tr1/unordered_map (class unordered_map, unordered_multimap):
+	Adjust typedefs.
+	* include/tr1/unordered_set (class unordered_set, unordered_multiset):
+	Likewise.
+	* testsuite/tr1/6_containers/unordered/erase/24061-map.cc: New.
+	* testsuite/tr1/6_containers/unordered/erase/24061-multimap.cc: New.
+	* testsuite/tr1/6_containers/unordered/erase/24061-multiset.cc: New.
+	* testsuite/tr1/6_containers/unordered/erase/24061-set.cc: New.
+	* testsuite/tr1/6_containers/unordered/insert/24061-map.cc: New.
+	* testsuite/tr1/6_containers/unordered/insert/24061-multimap.cc: New.
+	* testsuite/tr1/6_containers/unordered/insert/24061-multiset.cc: New.
+	* testsuite/tr1/6_containers/unordered/insert/24061-set.cc: New.
+
+2005-10-08  Kazu Hirata  
+
+	Merge from csl-arm-branch:
+	2004-12-15  Daniel Jacobowitz  
+	* libstdc++-v3/config/linker-map.gnu: Add ARM EABI symbols.
+
+2005-10-07  Paolo Carlini  
+
+	Fix libstdc++/24196 for ext/vstring/rc by returning to the behavior
+	of basic_string pre-2003-06-13; remove fully-dynamic-string stuff.
+	* include/ext/rc_string_base.h (_M_refcopy): Move inside the
+	_Rep class and remove code in macro.
+	(__rc_string_base()): Construct with _S_empty_rep()._M_refcopy().
+	(_M_dispose, _M_leak_hard): Remove code in macro.
+	(_S_construct): Return _S_empty_rep()._M_refcopy() for empty string.
+	(_M_grab): Adjust.
+
+	* include/ext/rc_string_base.h (_Rep::_M_refdata()): Minor tweak,
+	mark throw().
+
+2005-10-07  Benjamin Kosnik  
+
+	* docs/doxygen/user.cfg.in: Update to Doyxygen 1.4.4.
+
+2005-10-05  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (struct __sso_string_local):
+	Remove, actually POD types cannot have user defined constructors
+	(being aggregates) and therefore can always be members of unions.
+	(class __sso_string_base): Adjust consistently.
+
+2005-10-05  Paolo Carlini  
+
+	PR libstdc++/24198
+	* testsuite/27_io/basic_filebuf/3.cc: Use __gnu_test::pod_ushort
+	instead.
+	* testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
+	* testsuite/27_io/basic_fstream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_ifstream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_ios/3.cc: Likewise.
+	* testsuite/27_io/basic_iostream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_istream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_istringstream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_ofstream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_ostream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_ostringstream/3.cc: Likewise; run the test.
+	* testsuite/27_io/basic_streambuf/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/3.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/3.cc: Likewise; run the test.
+
+2005-10-05  Paolo Carlini  
+
+	PR libstdc++/11729 (DR 280, [Ready])
+	* include/bits/stl_iterator.h: Add reverse_iterator global
+	functions with two template parameters (operator==, !=, <,
+	>, <=, >=, -).
+	* testsuite/24_iterators/reverse_iterator/11729.cc: New.
+	* docs/html/ext/howto.html: Add an entry for issue 280.
+
+2005-10-03  Paolo Carlini  
+
+	* include/tr1/hashtable
+	(node_iterator::node_iterator(const node_iterator<,true,>&)): Fix to
+	take a "false" (i.e., is_const == false) node_iterator.
+	(hashtable_iterator::hashtable_iterator(const hashtable_iterator<,
+	true,>&)): Likewise for hashtable_iterator.
+	(hashtable::const_local_iterator): Fix typedef (is_const == true).
+	(hashtable::const_iterator): Likewise.
+	* testsuite/tr1/6_containers/unordered/types/map_iterator.cc: New.
+	* testsuite/tr1/6_containers/unordered/types/multimap_iterator.cc: New.
+	* testsuite/tr1/6_containers/unordered/types/set_iterator.cc: New.
+	* testsuite/tr1/6_containers/unordered/types/multiset_iterator.cc: New.
+ 
+2005-10-02  Paolo Carlini  
+
+	PR libstdc++/24054
+	* include/tr1/hashtable (erase(const key_type&)): Return the
+	number of elements erased.
+	* testsuite/tr1/6_containers/unordered/hashtable/24054.cc: New.
+
+2005-10-01  Kenny Simpson  
+
+	* include/tr1/tuple_iterate.h (tuple::operator=(const std::pair<>&)):
+	Add missing return.
+
+2005-09-30  Paolo Carlini  
+
+	PR libstdc++/24064
+	* include/tr1/hashtable (hash_code_base<>::store_code): Add.
+	(hashtable<>::insert(const value_type&)): Use it.
+	* testsuite/tr1/6_containers/unordered/hashtable/24064.cc: New.
+
+2005-09-30  Paolo Carlini  
+
+	PR libstdc++/23953
+	* include/bits/locale_facets.tcc (__numpunct_cache<>::_M_cache,
+	__moneypunct_cache<>::_M_cache): Check that grouping()[0] > 0.
+	(__verify_grouping): Do the last check only if __grouping[__min] > 0.
+	(__add_grouping<>): End recursion if *__gbeg <= 0.
+	* testsuite/22_locale/num_get/get/char/23953.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/23953.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/23953.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/23953.cc: Likewise.
+
+2005-09-29  Chris Jefferson 
+
+	PR libstdc++/23978
+	* include/tr1/tuple_iterate.h (tuple): Add operator=(std::pair).
+	* testsuite/tr1/6_containers/tuple/creation_functions/23978.cc: New.
+
+	* include/tr1/functional (ref, cref): Make inline.
+	* include/tr1/tuple_iterate.h (tie): Correct formatting.
+	(make_tuple): Make inline.
+
+2005-09-25  Benjamin Kosnik  
+	    Eric Botcazou  
+
+	* include/ext/mt_allocator.h
+	(__per_type_pool<...true>::_S_initialize_once): Always call
+	_M_initialize_once.
+	(__common_pool<...true>::_S_initialize_once): Same.
+
+2005-09-23  Benjamin Kosnik  
+
+	* testsuite/ext/mt_allocator/tune-1.cc: Clarify for single-thread.
+	* testsuite/ext/mt_allocator/tune-2.cc: Same.
+	* testsuite/ext/mt_allocator/tune-3.cc: Same.
+	* testsuite/ext/mt_allocator/tune-4.cc: Same.
+
+2005-09-21  Guillaume Melquiond  
+
+	PR libstdc++/23956
+	* include/ext/mt_allocator.h: Remove excess
+	policy_type::_S_get_pool calls in constructors.
+
+2005-09-18  Paolo Carlini  
+
+	PR libstdc++/23417 (cont)
+	* include/bits/stl_tree.h (_Rb_tree_impl): Use member
+	initialization list for -Weffc++.
+
+2005-09-16  Janis Johnson  
+
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc:
+	New.
+
+2005-09-15  Benjamin Kosnik  
+
+	PR libstdc++/21674
+	PR libstdc++/22205
+	PR libstdc++/22222
+	* include/bits/c++config: Set _GLIBCXX_STD regardless of __GXX_WEAK__.
+	Add in check for __NO_INLINE__ for warning.
+	* testsuite/lib/dg-options.exp (dg-require-debug-mode): New.
+	* testsuite/lib/libstdc++.exp (check_v3_target_debug_mode): New.
+	* testsuite/21_strings/basic_string/element_access/char/21674.cc:
+	Use it.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
+	Use it.
+
+2005-09-15  Paolo Carlini  
+
+	PR libstdc++/23875
+	* include/std/std_ostream.h (operator<<(short), operator<<(unsigned
+	short), operator<<(int), operator<<(unsigned int), operator<<(float)):
+	Don't call operator<<(long), operator<<(unsigned long), or
+	operator<<(double), do the work mandated by the resolution of DR117...
+	* include/bits/ostream.tcc (operator<<(short), operator<<(unsigned
+	short), operator<<(int), operator<<(unsigned int), operator<<(float)):
+	... here.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc: New.
+
+2005-09-15  Mark Mitchell  
+
+	* testsuite/testsuite_character.h: Specialize character<>
+	templates in __gnu_cxx, not in __gnu_test.
+
+2005-09-13  Jonathan Wakely  
+	    Benjamin Kosnik  
+
+	PR libstdc++/21674
+	* testsuite/21_strings/basic_string/element_access/char/21674.cc: New.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
+	New.
+
+2005-09-12  David Edelsohn  
+
+	PR libstdc++/22554
+	PR libstdc++/23734
+	* include/Makefile.am (stamp-assoc): Install each subgroup
+	of headers separately.
+	* include/Makefile.in: Regenerate.
+
+2005-09-12  Benjamin Kosnik  
+
+	* testsuite/ext/mt_allocator/22309_thread.cc: Remove dg-do run.
+	* testsuite/lib/libstdc++.exp ( proc libstdc++_init): Enable
+	shared only for linux.
+
+2005-09-12  Benjamin Kosnik  
+	    David Edelsohn  
+
+	PR libstdc++/22554
+	PR libstdc++/23734
+	* include/Makefile.am (assoc_headers): Break into five sub values.
+	(install-headers): Use them.
+	(stamp-assoc): Same.
+	* include/Makefile.in: Regenerate.
+
+2005-09-12  Chris Jefferson  
+
+	* include/bits/stl_algo.h (search_n): Delegate to specializations.
+	(search_n(,,,,binary_predicate)): Likewise.
+	(__search_n(forward_iterator_tag)): Original search_n, tweak to
+	remove an unnecessary comparison.
+	(__search_n(,,,,binary_predicate,forward_iterator_tag)): Likewise.
+
+2005-09-12  Jim Xochellis  
+
+	* include/bits/stl_algo.h
+	(__search_n(std::random_access_iterator_tag)): Add specialization.
+	(__search_n(,,,,binary_predicate,std::random_access_iterator_tag)):
+	Likewise.
+
+2005-09-12  Benjamin Kosnik  
+
+	PR libstdc++/23417
+	* include/bits/stl_list.h (_List_impl): Use member initialization
+	list for -Weffc++.
+	* include/bits/stl_tree.h (_Rb_tree_impl): Same.
+
+2005-09-12  Paolo Carlini  
+
+	PR libstdc++/23767
+	* include/bits/stl_iterator.h (__normal_iterator::
+	__normal_iterator<>(const __normal_iterator<_Iter, _Container>&)):
+	Enable only when _Iter is equal to _Container::pointer.
+	* testsuite/21_strings/basic_string/types/23767.cc: New.
+	* testsuite/23_containers/vector/types/23767.cc: Likewise.
+	* testsuite/ext/vstring/types/23767.cc: Likewise.
+
+2005-09-11  Benjamin Kosnik  
+
+	PR libstdc++/19265
+	PR libstdc++/22309
+	* include/ext/mt_allocator.h
+	(__gnu_cxx::__create_handler): Remove.
+	(__pool::_M_destroy_thread_key): Compatibility only.
+	(__pool::_M_initialize(__destroy): Same.
+	(__pool::_M_initialize): New.
+	(__pool::_M_initialize_once): Nothing fancy.
+	(__pool::_M_once): Remove.
+	(__common_pool): New.
+	(__common_pool_base): New.
+	(__per_type_pool): New.
+	(__per_type_pool_base): New.
+	* src/mt_allocator.cc: Same.
+	* config/linker-map.gnu (__pool::_M_initialize()): Add.
+
+2005-09-11  Jakub Jelinek  
+
+	PR libstdc++/19265
+	PR libstdc++/22309
+	* src/mt_allocator.cc (__gnu_internal::freelist_mutex): Make static.
+	(__gnu_internal::__freelist): New type.
+	(__gnu_internal::freelist): New variable.
+	(__gnu_internal::_M_destroy_thread_key): New function.
+	(__gnu_cxx::__pool::_M_destroy): Don't delete
+	_M_thread_freelist_initial.
+	(__gnu_cxx::__pool::_M_initialize): Make argument nameless.
+	Don't use _M_thread_freelist and _M_thread_freelist_initial
+	__pool fields, instead use __gnu_internal::freelist fields, call
+	gthread_key_create just once.  Use
+	__gnu_internal::_M_destroy_thread_key as key destructor.
+	(__gnu_cxx::__pool::_M_get_thread_id): Store size_t id
+	rather than _Thread_record* in the thread specific value.  Don't
+	use _M_thread_freelist __pool field, instead use
+	__gnu_internal::freelist fields.
+	(__gnu_cxx::__pool::_M_destroy_thread_key): Do nothing.
+
+2005-09-11  Benjamin Kosnik  
+            Jakub Jelinek  
+
+	PR libstdc++/19265
+	PR libstdc++/22309
+	* testsuite/testsuite_shared.cc: New.
+	* testsuite/lib/dg-options.exp (dg-require-sharedlib): New.
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Look for shared
+	library, and set v3-sharedlib based on this.
+	(check_v3_target_sharedlib): New.
+	(proc v3-build_support): Build shared objects.
+	* testsuite/ext/mt_allocator/22309_thread.cc: New, use above.
+
+2005-09-11  Paolo Carlini  
+
+	PR libstdc++/23781
+	* include/bits/stl_list.h (_List_iterator<>::
+	_List_iterator(_List_node_base*), _List_const_iterator<>::
+	_List_const_iterator(const _List_node_base*)): Make explicit.
+	(list<>::begin(), list<>::end(), list<>::pop_back()): Adjust
+	consistently.
+	* include/bits/list.tcc (list<>::insert, list<>::erase): Adjust
+	consistently.
+	* include/bits/stl_tree.h (_Rb_tree_iterator<>::
+	_Rb_tree_iterator(_Link_type), _Rb_tree_const_iterator<>::
+	_Rb_tree_const_iterator(_Link_type)): Make explicit.
+	(_Rb_tree<>::begin(), _Rb_tree<>::end()): Adjust consistently.
+	* include/ext/slist (_Slist_iterator<>::_Slist_iterator(_Node*)):
+	Make explicit.
+	(slist<>::erase(iterator), slist<>::erase(iterator, iterator)):
+	Adjust consistently.
+	* include/tr1/hashtable (hashtable_iterator<>::
+	hashtable_iterator(hash_node<>**)): Make explicit.
+	* testsuite/23_containers/list/23781.cc: New.
+	* testsuite/23_containers/map/23781.cc: Likewise.
+	* testsuite/23_containers/multimap/23781.cc: Likewise.
+	* testsuite/23_containers/multiset/23781.cc: Likewise.
+	* testsuite/23_containers/set/23781.cc: Likewise.
+	* testsuite/ext/slist/23781.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/23781.cc: Likewise.
+	* testsuite/23_containers/map/operators/1_neg.cc: Adjust dg-error
+	line numbers.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+
+	* include/tr1/array (array<>::begin(), array<>::end()): Adjust
+	stylistically for consistency with the other containers.
+
+2005-09-10  Joseph S. Myers  
+
+	* testsuite/26_numerics/cmath/c99_classification_macros_c.cc:
+	XFAIL on *-*-linux*, not *-*-linux-gnu.
+
+2005-09-09  Benjamin Kosnik  
+            Jakub Jelinek  
+
+	* src/debug.cc (iterator_base_mutex): Make static for internal
+	linkage.
+	* src/locale_init.cc (locale_mutex): Same.
+	* src/mt_allocator.cc (freelist_mutex): Same.
+	* src/pool_allocator.cc (palloc_init_mutex): Same.
+
+2005-09-02  Paolo Carlini  
+
+	* testsuite/tr1/6_containers/unordered/hashtable/23465.cc:
+	Reduce maximum size and lf.
+
+2005-09-01  Benjamin Kosnik  
+
+	* include/c_std/std_cmath.h: Declare C99 functions and helper
+	functions as inline.
+
+2005-09-01  Benjamin Kosnik  
+	    Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_cxa_atexit): Fix
+	comment.
+
+2005-09-01  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_cxa_atexit): New.
+	* testsuite/lib/dg-options.exp (dg-require-cxa-atexit): New.
+	* testsuite/ext/mt_allocator/deallocate_local-6.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local-8.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-5.cc: New.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-7.cc: New.
+	* docs/html/ext/mt_allocator.html: Add link to examples.
+	* testsuite/testsuite_allocator.h: Tweak.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Same.
+	* testsuite/ext/new_allocator/deallocate_global.cc: Same.
+	* testsuite/ext/new_allocator/deallocate_local.cc: Same.
+
+2005-08-31  Paolo Carlini  
+	    Kaspar Fischer 
+
+	PR libstdc++/23632
+	* include/bits/stl_bvector.h (_Bit_iterator::operator[],
+	_Bit_const_iterator::operator[]): Const-ify.
+	* testsuite/23_containers/vector/bool/23632.cc: New.
+
+2005-08-30  Paolo Carlini  
+
+	PR libstdc++/23578 (cont)
+	* include/bits/stl_bvector.h (class vector): Add
+	a dummy data() to avoid problems in debug-mode.
+
+2005-08-30  Paolo Carlini  
+
+	* testsuite/ext/hash_map/23528.cc: New.
+
+2005-08-29  Paolo Carlini  
+
+	* include/bits/stl_map.h (class map): ... and a missing @a.
+
+2005-08-29  Paolo Carlini  
+
+	* include/bits/stl_map.h (class map): Add missing % in comment.
+
+2005-08-29  Paolo Carlini  
+
+	PR libstdc++/23578 (DR 464 [Ready])
+	* include/bits/stl_map.h (class map): Add at(const key_type&)
+	member functions.
+	* include/bits/stl_vector.h (class vector): Add data() member
+	functions.
+	* include/debug/map.h (class map): Adjust consistently.
+	* include/debug/vector (class vector): Likewise.
+	* testsuite/23_containers/map/element_access/1.cc: New.
+	* testsuite/23_containers/vector/data_access/1.cc: Likewise.
+	* docs/html/ext/howto.html: Add an entry for DR 464.
+
+2005-08-26  Benjamin Kosnik  
+
+	PR libstdc++/20534 (contd)
+	* src/debug.cc (__gnu_debug): Remove __fancy_abort definition.
+	Remove cstdio and cstdlib includes.
+	* include/debug/debug.h: Define inline here. Remove
+	_GLIBCXX_DEBUG_ABORT.
+	* include/debug/macros.h: Remove __fancy_abort declaration,
+	_GLIBXX_DEBUG_ABORT definition.
+	* config/linker-map.gnu: Remove export.
+
+2005-08-26  Benjamin Kosnik  
+
+	* scripts/check_compile (UNIQUE_ID): New. Use to name output files.
+
+2005-08-26  Paolo Carlini  
+
+	PR libstdc++/23081
+	* include/tr1/array: Implement members back(), front(), data(),
+	and the tuple interface; tidy.
+	* testsuite/tr1/6_containers/array/element_access/back.cc: New.
+	* testsuite/tr1/6_containers/array/element_access/data.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/front.cc: Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/get.cc: Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc:
+	Likewise.
+
+2005-08-25  Paolo Carlini  
+
+	* include/tr1/hashtable: Use __throw_exception_again,
+	not naked throw, in the catch clauses.
+
+2005-08-24  Lawrence Lim  
+            Jakub Jelinek  
+	    Benjamin Kosnik  
+
+	PR libstdc++/23550
+	* testsuite/21_strings/char_traits/requirements/char/1.cc
+	(test01): Simplify counting.
+	* testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
+	(test02): Same.
+
+2005-08-24  Paolo Carlini  
+	    Chris Jefferson  
+
+	PR libstdc++/23465
+	* include/tr1/hashtable (hash_code_base::m_swap): Use
+	std::swap.
+	(hashtable<>::hashtable(const hashtable&)): Use copy_code;
+	fix m_allocate_node call.
+	* testsuite/tr1/6_containers/unordered/hashtable/23465.cc: New.
+
+2005-08-23  Kelley Cook  
+
+	PR libstdc++/23462
+	* testsuite/data/sgetn.txt: Revert to previous FSF address.
+
+2005-08-23  Thomas Kho  
+
+	PR libstdc++/23358
+	* include/bits/stl_construct.h (_Destroy(_ForwardIterator,
+	_ForwardIterator, allocator<_Tp>)): Removed unused template parameter.
+
+2005-08-22  Geoffrey Keating  
+
+	* testsuite/23_containers/vector/resize/1.cc: XFAIL on darwin8.
+	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
+
+2005-08-19  J"orn Rennecke 
+
+	* config/cpu/sh/atomicity.h: Replace broken generic code with current
+	copy of generic/atomicity.h .
+
+2005-08-17  Kelley Cook  
+
+	* All files: Update FSF address.
+
+2005-08-09  Andrew Pinski  
+
+	* testsuite/26_numerics/cmath/c99_classification_macros_c.cc:
+	xfail on *-*-darwin*.
+
+2005-08-03  Geoffrey Keating  
+
+	* configure.ac: Don't use GCC_NO_EXECUTABLES or clear
+	GLIBCXX_IS_NATIVE on Darwin crosses.
+	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Don't skip configuring
+	the testsuite just because there's no symbol versioning.
+	* configure: Regenerate.
+
+	* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT_ancilliary): Print
+	status messages.
+	(GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Likewise.
+	(GLIBCXX_CHECK_POLL): Likewise.
+	(GLIBCXX_CHECK_WRITEV): Likewise.
+	(GLIBCXX_CHECK_INT64_T): Likewise.
+	(GLIBCXX_CHECK_LFS): Likewise.
+	* configure: Regenerate.
+
+2005-07-30  Andrew Pinski  
+
+	* scripts/make_exports.pl: Pass --strip-underscores to c++filt.
+
+2005-07-29  H.J. Lu  
+
+	PR libstdc++/22284
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Revert
+	the change to info.ttype_base.
+
+2005-07-28  Volker Reichelt  
+
+	* include/std/std_valarray.h: Fix grammar in comments.
+
+2005-07-25  Geoffrey Keating  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Handle darwin-export,
+	and make it the default for Darwin.
+	* scripts/make-exports.pl: New.
+	* src/Makefile.am: Update for changes to GLIBCXX_ENABLE_SYMVERS.
+	Handle darwin-export.
+	* configure: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2005-07-25  Dave Odell  
+
+	PR libstdc++/23053
+	* include/tr1/hashtable (hashtable<>::find_node): Const-ify.
+	* testsuite/tr1/6_containers/unordered/hashtable/23053.cc: New.
+
+2005-07-25  Paolo Carlini  
+
+	PR libstdc++/22515
+	* include/bits/basic_string.h: Declare the specialization
+	operator>>(basic_istream&, basic_string&).
+	* include/std/std_istream.h: Declate the specialization
+	operator>>(basic_istream&, char*).
+	* include/std/std_streambuf.h (basic_streambuf): Add friend
+	declarations for the above.
+	* src/istream.cc: Define the above.
+	* testsuite/27_io/basic_istream/extractors_character/char/4.cc: New.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
+	Likewise.
+	* testsuite/performance/27_io/ifstream_extract_chars.cc: Likewise.
+
+2005-07-20  Paolo Carlini  
+
+	* include/bits/streambuf.tcc (xsgetn, xsputn): Use streamsize
+	instead of size_t.
+	* src/streambuf.cc (__copy_streambufs): Likewise.
+
+2005-07-18  Paolo Carlini  
+
+	* config/locale/gnu/ctype_members.cc (do_is(mask, wchar_t)):
+	Speed-up for the common case of mask == ctype_base::space;
+	otherwise, exit the loop earlier if the mask is one of the
+	elementary ones.
+
+2005-07-14  Paolo Carlini  
+
+	PR libstdc++/21193 (float, double, long double)
+	* include/tr1/functional (hash, hash):
+	Reimplement exploiting the Fnv_hash<>::hash helper.
+	(hash): Reimplement using frexp (in this
+	case, due to random padding bits, the former approach
+	is not generally viable).
+
+2005-07-13  Paolo Carlini  
+
+	PR libstdc++/21193 (string & wstring)
+	* include/tr1/functional (hash, hash):
+	Reimplement using the FNV hash.
+
+	* include/tr1/functional: Trivial formatting fixes.
+
+2005-07-11  Paolo Carlini  
+
+	* include/bits/ostream.tcc (basic_ostream<>::operator<<(long),
+	basic_ostream<>::operator<<(long long)): Don't deal with oct
+	and hex and casts to unsigned here...
+	* include/bits/locale_facets.tcc (__int_to_char(_CharT*, long,
+	const _CharT*, ios_base::fmtflags), __int_to_char(_CharT*, long
+	long, const _CharT*, ios_base::fmtflags)): ... do that here,
+	instead, as per Table 57.
+	(num_put<>::_M_insert_int): Tidy treatment of numeric base and
+	sign.
+	* include/std/std_ostream.h (operator<<(short), operator<<(int)):
+	Adjust logic, as per the letter of the resolution of DR117 [WP].
+	* testsuite/22_locale/num_put/put/char/10.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/10.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc:
+	Likewise.
+
+2005-07-07  David Edelsohn  
+
+	* testsuite/ext/pb_assoc/example/tree_order_statistics_join.cc:
+	Change map_t to map_type.
+
+2005-07-05  Paolo Carlini  
+
+	Add class __versa_string, a versatile "basic_string-type" class:
+	an additional, non-standard, template parameter allows to specify
+	the preferred base class. Two are provided: __rc_string_base,
+	which implements a behavior very similar to our standard string,
+	and __sso_string_base, not reference-counted and optimized for
+	short strings.
+	* include/ext/rc_string_base.h: New.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/ext/vstring.tcc: Likewise.
+	* include/ext/vstring_fwd.h: Likewise.
+	* include/ext/vstring_util.h: Likewise.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* testsuite/ext/vstring/explicit_instantiation/1.cc: New.
+	* testsuite/ext/vstring/explicit_instantiation/2.cc: Likewise.
+	* testsuite/ext/vstring/explicit_instantiation/char/1.cc: Likewise.
+	* testsuite/ext/vstring/explicit_instantiation/wchar_t/1.cc: Likewise.
+
+	* Makefile.in: Regenerate with autotools 1.9.3 (to date, the version
+	officially used by v3).
+	* aclocal.m4: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2005-07-01  Paolo Carlini  
+
+        Port from libstdcxx_so_7-branch:
+	2004-10-28  Chris Jefferson  
+
+	PR libstdc++/17441
+	* include/bit/stl_algo.h (find(,,,input_iterator_tag),
+	find(,,,random_access_interator_tag),
+	find_if(,,,input_iterator_tag),
+	find_if(,,,random_access_iterator_tag)): Uglify function name.
+	(find, find_if): Use new uglified specialisation names.
+	* testsuite/25_algorithms/find/17441.cc: New.
+
+2005-06-30  Ulrich Weigand  
+
+	* include/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp
+	(PB_ASSOC_CLASS_C_DEC::s_highest_bit_1): Cast constant 1 to target
+	type before shifting.
+
+2005-06-29  Paolo Carlini  
+
+	PR libstdc++/21244 (cont^2)
+	* include/ext/bitmap_allocator.h: Convert everywhere
+	bits_per_block to size_t.
+
+2005-06-29  Jonathan Wakely  
+
+	* include/bits/basic_string.h, include/bits/locale_facets.h: Fix
+	Doxygen comments that use wrong parameter and function names.
+
+2005-06-29  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 37.
+	* docs/html/ext/howto.html: Adjust.
+
+2005-06-29  Paolo Carlini  
+
+	PR libstdc++/22131
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int,
+	num_get<>::_M_extract_float, money_get<>::_M_extract):
+	Adjust to assign the result also when digit grouping is
+	wrong (but the grammar is correct), as per 22.2.2.1.2, p11-12
+	(NB: consistently for money_get too).
+	* config/locale/generic/c_locale.cc (__convert_to_v): Do
+	not check ios_base::failbit at the outset.
+	* config/locale/gnu/c_locale.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/22131.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/12.cc: Adjust.
+	* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc:
+	Likewise.
+
+2005-06-28  Paul Brook  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Check for
+	__cxa_end_cleanup.
+	* libsupc++/Makefile.am (sources): Add eh_call.c and eh_arm.c.
+	* libsupc++/eh_arm.cc: New file.
+	* libsupc++/eh_call.cc: New file.
+	* libsupc++/eh_catch.cc (__cxa_get_exception_ptr): Use
+	__gxx_caught_object.
+	(__cxa_begin_catch): Ditto. Use __is_gxx_exception_class. Call
+	_Unwind_Complete when using the ARM EABI.
+	(__cxa_end_catch): Use __is_gxx_exception_class.
+	* libsupc++/eh_personality.cc: Define NO_SIZE_OF_ENCODED_VALUE when
+	using the ARM EABI.
+	(save_caught_exception, restore_caught_exception): New functions.
+	(_throw_typet): New typedef.
+	(get_ttype_entry, get_adjusted_ptr, check_exception_spec): Add ARM
+	EABI implementations.
+	(PERSONALITY_FUNCTION): Use new functions.  Addd support for ARM EABI
+	unwinding libary.
+	(__cxa_unexpected): Disable when using the ARM EABI.
+	* libsupc++/eh_throw.cc (__cxa_throw): Use __GXX_INIT_EXCEPTION_CLASS.
+	(__cxa_rethrow): Use __is_gxx_exception_class.  Call
+	_Unwind_RaiseException when using the ARM EABI.
+	* libsupc++/unwind-cxx.h (struct __cxa_exception): Add fields for ARM
+	EABI semantics.
+	(struct __cxa_eh_globals): Ditto.
+	(__cxa_call_terminate): Add prototype.
+	(__cxa_type_match, __cxa_begin_cleanup, __cxa_end_cleanup): Add
+	prototypes.
+	(__get_exception_header_from_obj, __get_exception_header_from_ue):
+	Move earlier in file.
+	(__is_gxx_exception_class, __GXX_INIT_EXCEPTION_CLASS,
+	__gxx_caught_object): New functions.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* src/Makefie.in: Regenerate.
+	* testsuite/makefile.in: Regenerate.
+
+2005-06-27  Paolo Carlini  
+
+	PR libstdc++/22102
+	* include/bits/stl_tree.h (insert_unique(iterator, const _Val&),
+	insert_equal((iterator, const _Val&)): Reimplement to check both
+	before and after, as per the algorithm "ignore hint if wrong" of
+	ISO paper N1780.
+
+2005-06-27  Benjamin Kosnik  
+	    Ami Tavory  
+
+	* docs/html/documentation.html: Add link for policy based
+	associative containers docs.
+	* docs/html/ext/pb_assoc/Std_hash_set_impl.jpg: New.
+	* docs/html/ext/pb_assoc/acks.html: New.
+	* docs/html/ext/pb_assoc/balls_and_bins.jpg: New.
+	* docs/html/ext/pb_assoc/basic_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html: New.
+	* docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html: New.
+	* docs/html/ext/pb_assoc/basic_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/basic_hash_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/basic_invalidation_guarantee.html: New.
+	* docs/html/ext/pb_assoc/basic_ms_tag.html: New.
+	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/
+	  basic_tree_assoc_cntnr_const_node_iterator.html: New.
+	* docs/html/ext/pb_assoc/
+	  basic_tree_assoc_cntnr_node_iterator.html: New.
+	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html: New.
+	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html: New.
+	* docs/html/ext/pb_assoc/basic_tree_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/cc_hash_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/
+	  cc_hash_max_collision_check_resize_trigger.html: New.
+	* docs/html/ext/pb_assoc/cc_hash_policy_cd.jpg: New.
+	* docs/html/ext/pb_assoc/cd.jpg: New.
+	* docs/html/ext/pb_assoc/component_requirements.html: New.
+	* docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html: New.
+	* docs/html/ext/pb_assoc/compound_data_type.html: New.
+	* docs/html/ext/pb_assoc/compound_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/concepts.html: New.
+	* docs/html/ext/pb_assoc/contact.html: New.
+	* docs/html/ext/pb_assoc/counter_update_metadata.html: New.
+	* docs/html/ext/pb_assoc/counter_update_policy.html: New.
+	* docs/html/ext/pb_assoc/data_enabled_ms_tag.html: New.
+	* docs/html/ext/pb_assoc/design.html: New.
+	* docs/html/ext/pb_assoc/different_underlying_dss.jpg: New.
+	* docs/html/ext/pb_assoc/direct_mask_range_hashing.html: New.
+	* docs/html/ext/pb_assoc/direct_mod_range_hashing.html: New.
+	* docs/html/ext/pb_assoc/disclaimer.html: New.
+	* docs/html/ext/pb_assoc/ds_gen.html: New.
+	* docs/html/ext/pb_assoc/ds_tag_cd.jpg: New.
+	* docs/html/ext/pb_assoc/ds_traits.html: New.
+	* docs/html/ext/pb_assoc/embedded_lists_1.jpg: New.
+	* docs/html/ext/pb_assoc/embedded_lists_2.jpg: New.
+	* docs/html/ext/pb_assoc/examples.html: New.
+	* docs/html/ext/pb_assoc/exception_guarantees_specifics.html: New.
+	* docs/html/ext/pb_assoc/find_invalidation_guarantee.html: New.
+	* docs/html/ext/pb_assoc/find_iterators_cd.jpg: New.
+	* docs/html/ext/pb_assoc/find_iterators_range_ops_1.jpg: New.
+	* docs/html/ext/pb_assoc/find_iterators_range_ops_2.jpg: New.
+	* docs/html/ext/pb_assoc/generics.html: New.
+	* docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/gp_hash_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/gp_hash_policy_cd.jpg: New.
+	* docs/html/ext/pb_assoc/hash_and_probe_general.html: New.
+	* docs/html/ext/pb_assoc/hash_based_containers.html: New.
+	* docs/html/ext/pb_assoc/hash_cd.jpg: New.
+	* docs/html/ext/pb_assoc/hash_exponential_size_policy.html: New.
+	* docs/html/ext/pb_assoc/hash_fn.html: New.
+	* docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html: New.
+	* docs/html/ext/pb_assoc/hash_policies.html: New.
+	* docs/html/ext/pb_assoc/hash_policy_cd.jpg: New.
+	* docs/html/ext/pb_assoc/hash_prime_size_policy.html: New.
+	* docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram.jpg: New.
+	* docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram2.jpg: New.
+	* docs/html/ext/pb_assoc/hash_ranged_hash_range_hashing_fns.jpg: New.
+	* docs/html/ext/pb_assoc/hash_standard_resize_policy.html: New.
+	* docs/html/ext/pb_assoc/home.html: New.
+	* docs/html/ext/pb_assoc/index.html: New.
+	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram1.jpg: New.
+	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram2.jpg: New.
+	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram3.jpg: New.
+	* docs/html/ext/pb_assoc/insert_type_methods.html: New.
+	* docs/html/ext/pb_assoc/interface.html: New.
+	* docs/html/ext/pb_assoc/interval_node_invariants.jpg: New.
+	* docs/html/ext/pb_assoc/introduction.html: New.
+	* docs/html/ext/pb_assoc/invalidation_guarantee_cd.jpg: New.
+	* docs/html/ext/pb_assoc/invalidation_guarantee_erase.jpg: New.
+	* docs/html/ext/pb_assoc/lib_download.html: New.
+	* docs/html/ext/pb_assoc/linear_probe_fn.html: New.
+	* docs/html/ext/pb_assoc/list_updates.html: New.
+	* docs/html/ext/pb_assoc/lu_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/lu_based_containers.html: New.
+	* docs/html/ext/pb_assoc/lu_cd.jpg: New.
+	* docs/html/ext/pb_assoc/lu_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/lu_ops.jpg: New.
+	* docs/html/ext/pb_assoc/mmap_value_utils.html: New.
+	* docs/html/ext/pb_assoc/motivation.html: New.
+	* docs/html/ext/pb_assoc/move_to_front_update_metadata.html: New.
+	* docs/html/ext/pb_assoc/move_to_front_update_policy.html: New.
+	* docs/html/ext/pb_assoc/ms_cd.jpg: New.
+	* docs/html/ext/pb_assoc/ms_gen.html: New.
+	* docs/html/ext/pb_assoc/ms_tag_cd.jpg: New.
+	* docs/html/ext/pb_assoc/ms_traits.html: New.
+	* docs/html/ext/pb_assoc/node_invariant_invalidations.jpg: New.
+	* docs/html/ext/pb_assoc/node_invariants.html: New.
+	* docs/html/ext/pb_assoc/node_invariants.jpg: New.
+	* docs/html/ext/pb_assoc/non_unique_mapping.html: New.
+	* docs/html/ext/pb_assoc/non_unique_mapping_containers.jpg: New.
+	* docs/html/ext/pb_assoc/null_data_type.html: New.
+	* docs/html/ext/pb_assoc/null_hash_fn.html: New.
+	* docs/html/ext/pb_assoc/null_probe_fn.html: New.
+	* docs/html/ext/pb_assoc/order_by_key.html: New.
+	* docs/html/ext/pb_assoc/order_statistics_key.html: New.
+	* docs/html/ext/pb_assoc/order_statistics_key_cmp.html: New.
+	* docs/html/ext/pb_assoc/order_statistics_node_updator.html: New.
+	* docs/html/ext/pb_assoc/ov_tree_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/overview.html: New.
+	* docs/html/ext/pb_assoc/pb_assoc_ex.html: New.
+	* docs/html/ext/pb_assoc/portability.html: New.
+	* docs/html/ext/pb_assoc/quadratic_probe_fn.html: New.
+	* docs/html/ext/pb_assoc/range_invalidation_guarantee.html: New.
+	* docs/html/ext/pb_assoc/rank_node_invariants.jpg: New.
+	* docs/html/ext/pb_assoc/rationale_null_node_updator.jpg: New.
+	* docs/html/ext/pb_assoc/rb_tree_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/reference_iterator.jpg: New.
+	* docs/html/ext/pb_assoc/references.html: New.
+	* docs/html/ext/pb_assoc/regression_tests.html: New.
+	* docs/html/ext/pb_assoc/resize_general.html: New.
+	* docs/html/ext/pb_assoc/resize_policies.html: New.
+	* docs/html/ext/pb_assoc/resize_policy_cd.jpg: New.
+	* docs/html/ext/pb_assoc/restoring_node_invariants.jpg: New.
+	* docs/html/ext/pb_assoc/sample_node_updator.hpp: New.
+	* docs/html/ext/pb_assoc/sample_probe_fn.hpp: New.
+	* docs/html/ext/pb_assoc/sample_probe_fn.html: New.
+	* docs/html/ext/pb_assoc/sample_range_hashing.hpp: New.
+	* docs/html/ext/pb_assoc/sample_range_hashing.html: New.
+	* docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp: New.
+	* docs/html/ext/pb_assoc/sample_ranged_hash_fn.html: New.
+	* docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp: New.
+	* docs/html/ext/pb_assoc/sample_ranged_probe_fn.html: New.
+	* docs/html/ext/pb_assoc/sample_resize_policy.hpp: New.
+	* docs/html/ext/pb_assoc/sample_resize_policy.html: New.
+	* docs/html/ext/pb_assoc/sample_resize_trigger.hpp: New.
+	* docs/html/ext/pb_assoc/sample_size_policy.hpp: New.
+	* docs/html/ext/pb_assoc/sample_update_policy.hpp: New.
+	* docs/html/ext/pb_assoc/size_policies_general.html: New.
+	* docs/html/ext/pb_assoc/splay_tree_ds_tag.html: New.
+	* docs/html/ext/pb_assoc/timing_tests.html: New.
+	* docs/html/ext/pb_assoc/toc.html: New.
+	* docs/html/ext/pb_assoc/tree_assoc_cntnr.html: New.
+	* docs/html/ext/pb_assoc/
+	  tree_assoc_cntnr_const_node_iterator.html: New.
+	* docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html: New.
+	* docs/html/ext/pb_assoc/tree_based_containers.html: New.
+	* docs/html/ext/pb_assoc/tree_cd.jpg: New.
+	* docs/html/ext/pb_assoc/trigger_policies_general.html: New.
+	* docs/html/ext/pb_assoc/tutorial.html: New.
+	* docs/html/ext/pb_assoc/update_seq_diagram.jpg: New.
+	* include/Makefile.am: Add assoc_srcdir, assoc_builddir, assoc_subdir,
+	assoc_headers.
+	* include/Makefile.in: Regenerate.
+	* include/ext/typelist.h: New.
+	* include/ext/pb_assoc/assoc_cntnr.hpp: New.
+	* include/ext/pb_assoc/data_type.hpp: New.
+	* include/ext/pb_assoc/ds_trait.hpp: New.
+	* include/ext/pb_assoc/exception.hpp: New.
+	* include/ext/pb_assoc/hash_policy.hpp: New.
+	* include/ext/pb_assoc/lu_policy.hpp: New.
+	* include/ext/pb_assoc/ms_trait.hpp: New.
+	* include/ext/pb_assoc/tree_policy.hpp: New.
+	* include/ext/pb_assoc/trivial_iterator_def.hpp: New.
+	* include/ext/pb_assoc/detail/assoc_cntnr_base.hpp: New.
+	* include/ext/pb_assoc/detail/cond_dealtor.hpp: New.
+	* include/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ds_trait_imp.hpp: New.
+	* include/ext/pb_assoc/detail/hash_types_traits.hpp: New.
+	* include/ext/pb_assoc/detail/map_debug_base.hpp: New.
+	* include/ext/pb_assoc/detail/mapping_level_imp.hpp: New.
+	* include/ext/pb_assoc/detail/ms_category_imp.hpp: New.
+	* include/ext/pb_assoc/detail/ms_trait_imp.hpp: New.
+	* include/ext/pb_assoc/detail/order_statistics_imp.hpp: New.
+	* include/ext/pb_assoc/detail/standard_policies.hpp: New.
+	* include/ext/pb_assoc/detail/standard_sizes.hpp: New.
+	* include/ext/pb_assoc/detail/type_utils.hpp: New.
+	* include/ext/pb_assoc/detail/typelist.hpp: New.
+	* include/ext/pb_assoc/detail/types_traits.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+     	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+	  d_find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+	  d_insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+	  insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
+	  iterators_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
+	  resize_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  node_iteration_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  policy_access_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  r_erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  r_range_iteration_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  range_iteration_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
+	  split_join_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  bin_search_tree_.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  cond_dtor_entry_dealtor.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  cond_key_dtor_entry_dealtor.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  iterators_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  r_erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/bin_search_tree_/
+	  split_join_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_hash_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  cond_key_dtor_entry_dealtor.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  constructor_destructor_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  constructor_destructor_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  debug_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  debug_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  erase_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  erase_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  find_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  find_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  insert_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  insert_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  policy_access_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  resize_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/
+	  resize_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp: New.
+	* include/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp: New.
+	* include/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp: New.
+	* include/ext/pb_assoc/detail/gp_hash_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  constructor_destructor_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  constructor_destructor_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  debug_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  debug_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  erase_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  erase_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  find_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  find_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+  	  insert_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  insert_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  policy_access_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  resize_no_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/gp_ht_map_/
+	  resize_store_hash_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/
+	  direct_mask_range_hashing_imp.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/
+	  direct_mod_range_hashing_imp.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/
+	  mask_based_range_hashing.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp: New.
+	* include/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp: New.
+	* include/ext/pb_assoc/detail/lu_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_assoc_cntnr/
+	  policy_access_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/lu_map_.hpp: New.
+	* include/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/lu_policy/
+  	  counter_lu_metadata_imp.hpp: New.
+	* include/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp: New.
+	* include/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/node.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp: New.
+	* include/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  cc_hash_max_collision_resize_trigger_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  hash_exponential_size_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  hash_load_check_resize_trigger_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  hash_prime_size_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  hash_standard_resize_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/
+	  ht_prime_size_policy_imp.hpp: New.
+	* include/ext/pb_assoc/detail/resize_policy/size_base.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/
+	  constructors_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/node.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp: New.
+	* include/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/tree_assoc_cntnr/
+	  constructor_destructor_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/tree_policy/
+	  null_node_updator_imp.hpp: New.
+	* include/ext/pb_assoc/detail/tree_policy/
+	  order_statistics_imp.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_append.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_apply.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_at_index.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_contains.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_filter.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/typelist_transform.hpp: New.
+	* include/ext/pb_assoc/detail/typelist/
+	  typelist_typelist_append.hpp: New.
+	* include/ext/pb_assoc/detail/unordered_iterator/
+	  const_find_iterator.hpp: New.
+	* include/ext/pb_assoc/detail/unordered_iterator/
+	  const_iterator.hpp: New.
+	* include/ext/pb_assoc/detail/unordered_iterator/
+	  find_iterator.hpp: New.
+	* include/ext/pb_assoc/detail/unordered_iterator/iterator.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	  constructor_destructor_and_related.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	  erase_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	  erase_if_pred.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	insert_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	invalidation_guarantee_selector.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	it_value_type_traits.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/iterator.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	iterator_fn_imps.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	value_type_adapter.hpp: New.
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	value_type_traits.hpp: New.
+	* testsuite/Makefile.am (CLEANFILES): Add .o, .dat, .cc.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/testsuite_common_types.h: New.
+	* testsuite/testsuite_visualization.h: New.
+	* testsuite/ext/pb_assoc/example/basic_map.cc: New.
+	* testsuite/ext/pb_assoc/example/basic_multimap.cc: New.
+	* testsuite/ext/pb_assoc/example/basic_set.cc: New.
+	* testsuite/ext/pb_assoc/example/ds_traits.cc: New.
+	* testsuite/ext/pb_assoc/example/erase_if.cc: New.
+	* testsuite/ext/pb_assoc/example/extract_key.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_find_neg.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_illegal_resize.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_initial_size.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_load_set_change.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_mod.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_resize.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_resize_neg.cc: New.
+	* testsuite/ext/pb_assoc/example/hash_shift_mask.cc: New.
+	* testsuite/ext/pb_assoc/example/mapping_level.cc: New.
+	* testsuite/ext/pb_assoc/example/mapping_level_neg.cc: New.
+	* testsuite/ext/pb_assoc/example/ms_traits.cc: New.
+	* testsuite/ext/pb_assoc/example/ranged_hash.cc: New.
+	* testsuite/ext/pb_assoc/example/store_hash.cc: New.
+	* testsuite/ext/pb_assoc/example/tree_intervals.cc: New.
+	* testsuite/ext/pb_assoc/example/tree_join.cc: New.
+	* testsuite/ext/pb_assoc/example/tree_order_statistics.cc: New.
+	* testsuite/ext/pb_assoc/example/tree_order_statistics_join.cc: New.
+	* testsuite/ext/pb_assoc/example/tree_split.cc: New.
+	* testsuite/performance/20_util/allocator/(insert.cc,
+	  insert_insert.cc, list_sort_search.cc, map_mt_find.cc, map_thread.cc,
+	  producer_consumer.cc): Recast to use typelists and move to...
+	* testsuite/performance/23_containers/find/map.cc: New.
+	* testsuite/performance/23_containers/index/map.cc: New.
+	* testsuite/performance/23_containers/insert/associative.cc: New.
+	* testsuite/performance/23_containers/insert/sequence.cc: New.
+	* testsuite/performance/23_containers/insert_erase/associative.cc: New.
+	* testsuite/performance/23_containers/producer_consumer/
+	(associative.cc, sequence.cc): New.
+	* testsuite/performance/23_containers/sort_search/list.cc: New.
+	* testsuite/performance/23_containers/container_benchmark.cc: Remove.
+	* testsuite/performance/23_containers/map_create_fill.cc: Move...
+	* testsuite/performance/23_containers/create/map.cc: ...here.
+	* testsuite/performance/23_containers/set_create_from_sorted.cc: Move.
+	* testsuite/performance/23_containers/create_from_sorted/set.cc: here.
+	* testsuite/performance/23_containers/list_create_fill_sort.cc: Move...
+	* testsuite/performance/23_containers/create_sort/list.cc: ...here.
+	* testsuite/performance/23_containers/set_insert_from_sorted.cc: Move.
+	* testsuite/performance/23_containers/insert_from_sorted/set.cc: here.
+
+2005-06-23  Jakub Jelinek  
+
+	PR libstdc++/22109
+	* src/compatibility.cc (_GLIBCXX_SYMVER_COMPATIBILITY): Remove.
+	(istreambuf_iterator, basic_fstream, basic_ifstream, basic_ofstream,
+	_M_copy, _M_move, _M_assign, _M_disjunct, _M_check_length,
+	_M_set_length_and_sharable, ignore, eq): Define to XX suffixed
+	variants.
+	(ignore (streamsize)): Remove _W prefixed aliases.
+	(_GLIBCXX_3_4_SYMVER_SPECIAL, _GLIBCXX_3_4_5_SYMVER_SPECIAL,
+	_GLIBCXX_APPLY_SYMVER_SPECIAL): Remove.
+	(_GLIBCXX_3_4_SYMVER, _GLIBCXX_3_4_5_SYMVER): Add XXname argument.
+	Use #XXname instead of #name as the alias argument.
+	* config/abi/compatibility.h: Replace uses of
+	_GLIBCXX_APPLY_SYMVER_SPECIAL with _GLIBCXX_APPLY_SYMVER.  Always
+	pass 2 arguments to the _GLIBCXX_APPLY_SYMVER macro.
+	* include/bits/char_traits.h (char_traits::eq): Revert 2005-06-15
+	change.
+	* acinclude.m4: Decrease glibcxx_min_gnu_ld_version back to 21400.
+	* configure: Rebuilt.
+
+2005-06-19  Benjamin Kosnik  
+
+	PR libstdc++/22111
+	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Remove
+	GLIBCXX_TEST_ABI. Remove duplicate _GLIBCXX_ASM_SYMVER define.
+	Don't enable abi testing unless versioned.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (check-abi): Remove conditional.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/libstdc++-abi/abi.exp: Call build_support, then check
+	v3-symver before proceeding.
+	* testsuite/lib/libstdc++.exp (libstdc++-dg-test): Set v3-symvers
+	if _GLIBCXX_SYMVER.
+
+2005-06-17  Paolo Carlini  
+
+        Port from libstdcxx_so_7-branch:
+	2005-01-12  Christopher Jefferson 
+
+	* include/bits/stl_function.h (mem_fun_t, const_mem_fun_t,
+	mem_fun_ref_t, const_mem_fun_ref_t, mem_fun1_t, const_mem_fun1_t,
+	mem_fun1_ref_t, const_mem_fun1_ref_t): Remove overloads for void
+	return type, just an old HP/SGI workaround.
+	* testsuite/20_util/functional/binders.cc: Move to...
+	* testsuite/20_util/functional/binders/3113.cc: ...here.
+	* testsuite/20_util/functional/binders/1.cc: New.
+
+2005-06-17  Jonathan Wakely  
+
+	* docs/html/21_strings/gotw29a.txt: Update code to corrected version.
+
+2005-06-17  Jakub Jelinek  
+            Benjamin Kosnik  
+
+	* config/abi/alpha-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/hppa-linux-gnu/baseline_symbols.txt: Same.
+	* config/abi/mips-linux-gnu/baseline_symbols.txt: Same.
+	* config/abi/sparc-linux-gnu/baseline_symbols.txt: Same.
+
+	* config/abi/alpha-freebsd5/baseline_symbols.txt: Remove.
+	* config/abi/i386-freebsd4/baseline_symbols.txt: Same.
+	* config/abi/i386-freebsd5/baseline_symbols.txt: Same.
+	* config/abi/sparc-freebsd5/baseline_symbols.txt: Same.
+
+	* config/abi/arm-linux-gnu/baseline_symbols.txt: Remove.
+	* config/abi/m68k-linux-gnu/baseline_symbols.txt: Same.
+
+2005-06-17  Jakub Jelinek  
+
+	* config/abi/ia64-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/s390x-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/s390-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/x86_64-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
+	* config/abi/powerpc-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/i486-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/i386-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/powerpc64-linux-gnu/baseline_symbols.txt: New file.
+	* config/abi/powerpc64-linux-gnu/32/baseline_symbols.txt: New file.
+
+2005-06-16  Jakub Jelinek  
+
+	* src/compatibility.cc: Include bits/c++config.h first.
+	(_GLIBCXX_SYMVER_COMPATIBILITY): Define if _GLIBCXX_SYMVER
+	and PIC are both defined.
+	* include/bits/char_traits.h (char_traits::eq): Rename
+	only if _GLIBCXX_SYMVER_COMPATIBILITY is defined.
+
+2005-06-16  Jakub Jelinek  
+
+        * acinclude.m4 ((GLIBCXX_ENABLE_SYMVERS): Rename _GLIBCXX_SIZE_T_IS_INT
+        to _GLIBCXX_SIZE_T_IS_UINT.  Define _GLIBCXX_PTRDIFF_T_IS_INT.
+        * configure: Regenerate.
+        * config.h.in: Regenerate.
+        * src/compatibility.cc (istream:ignore(streamsize)): Use
+        _GLIBCXX_PTRDIFF_T_IS_INT instead of _GLIBCXX_SIZE_T_IS_INT.
+        * config/abi/compatibility.h: Rename _GLIBCXX_SIZE_T_IS_INT
+        to _GLIBCXX_SIZE_T_IS_UINT.  Use _GLIBCXX_PTRDIFF_T_IS_INT
+        instead for symbols with streamsize arguments.
+
+2005-06-16  Jakub Jelinek  
+
+	* config/linker-map.gnu: Also export
+	_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][il].
+
+2005-06-15  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:6:0.
+	* configure: Regenerate.
+	* config/linker-map.gnu: Edit.
+	* src/istream.cc: Move istream::ignore(streamsize) specializations...
+	* src/compatibility.cc: ...here. New.
+	* include/bits/char_traits.h (char_traits::eq): Rename when
+	appropriate.
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Define _GLIBCXX_SIZE_T_IS_INT.
+	Bump glibcxx_min_gnu_ld_version to 21590.
+	* configure: Regenerate.
+	* acconfig.h: Remove _GLIBCXX_ASM_SYMVER.
+	* config.h.in: Regenerate.
+	* src/Makefile.am (sources): Add compatibility.cc.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.am (host_headers_noinst): Add compatibility.h.
+	* include/Makefile.in: Regenerate.
+	* testsuite/testsuite_abi.h (symbol): Add data members.
+	* testsuite/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.5,
+	GLIBCXX_3.4.6.  Remove deprecated versions. Do a better job
+	version checking.
+
+2005-06-15  Paolo Carlini  
+
+	* include/tr1/hashtable: Trivial formatting fixes.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+
+2005-06-14  Tom Tromey  
+
+	PR libgcj/19877:
+	* configure, aclocal.m4: Rebuilt.
+	* Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+	testsuite/Makefile.in: Likewise.
+
+2005-06-08  Benjamin Kosnik  
+
+	PR libstdc++/21955
+	* include/std/std_sstream.h (basic_stringbuf::showmanyc): Add.
+	Remove unnecessary this->_M_mode decoration.
+	* include/bits/fstream.tcc: Adjust line spacing.
+	* testsuite/27_io/basic_streambuf/in_avail/char/1.cc: New, test
+	base class behavior.
+	* testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc: Same.
+	* testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc: New.
+	* testsuite/27_io/basic_stringbuf/in_avail/char/1.cc: Match
+	filebuf behavior.
+	* testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc: Same.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc: Same.
+	* testsuite/27_io/basic_stringbuf/str/char/1.cc: Same.
+	* testsuite/27_io/basic_streambuf/in_avail/char/9701-3.cc: Move...
+	* testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc: ...here.
+
+2005-06-07  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Use C++ compiler for complex
+	tests.
+	* configure: Regenerated.
+
+2005-06-07  Adrian Straetling  
+
+	* config/cpu/s390/atomicity.h: (__exchange_and_add,
+	__atomic_add): Use the builtins for atomic memory operations.
+
+2005-06-06  Paolo Carlini  
+
+	PR libstdc++/21770 (cont: __gnu_debug::string)
+	* include/debug/string: Use _Base typedefs for pointer, const_pointer,
+	reference, const_reference, size_type, difference_type.
+	* testsuite/21_strings/basic_string/2.cc: New.
+
+2005-06-06  Paolo Carlini  
+
+	PR libstdc++/21770 (cont: debug-mode)
+	* include/debug/deque: Use _Base typedefs for pointer, const_pointer,
+	reference, const_reference.
+	* include/debug/list: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/set.h: Likewise.
+	* include/debug/vector: Likewise.
+
+2005-06-06  Paolo Carlini  
+
+        Port from libstdcxx_so_7-branch:
+	2004-09-24  Paolo Carlini  
+		    Jonathan Wakely  
+
+	* include/bits/stl_list.h (list::list(size_type, value_type,
+	const allocator_type&): Implement according to the letter of the
+	standard, i.e., don't use two overloads, not equivalent in case
+	of non default constructible T.
+	(list::resize(size_type, const value_type&)): Fix the signature:
+	according to the standard the second argument is by value; also,
+	don't use two overloads.
+	* include/bits/list.tcc (list::resize(size_type, const value_type&)):
+	Adjust consistently the signature.
+	* include/bits/stl_deque.h (deque::deque(size_type, value_type,
+	const allocator_type&)): Likewise.
+	(deque::resize(size_type, const value_type&)): Likewise.
+	* include/bits/stl_vector.h (vector::vector(size_type, value_type,
+	const allocator_type&)): Likewise.
+	(vector::resize(size_type, const value_type&)): Likewise.
+	* testsuite/testsuite_hooks.h: Add NonDefaultConstructible test type.
+	* testsuite/23_containers/deque/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/list/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/map/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/multimap/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/multiset/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/set/explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/vector/explicit_instantiation/2.cc: New.
+
+	* include/bits/deque.tcc: Minor formatting fix.
+
+2005-06-06  Peter Doerfler  
+
+	* include/bits/stl_function.h: ... and another one.
+
+2005-06-06  Peter Doerfler  
+
+	* include/bits/stl_function.h: Fix typo in comment.
+
+2005-06-05  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_C99]): Check clog, clogf, clogl
+	too for ac_c99_complex.
+	* configure: Regenerate.
+
+2005-06-03  Paolo Carlini  
+
+	PR libstdc++/21770
+	* include/bits/stl_deque.h: Add concept-check. In class _Deque_base
+	rebind _Alloc to  _Tp_alloc_type, change _Deque_impl to inherit from
+	the latter and add _M_get_Tp_allocator() which returns it. Use
+	everywhere _M_get_Tp_allocator() instead of get_allocator().
+	* include/bits/deque.tcc: Likewise, use _M_get_Tp_allocator().
+	* include/bits/stl_list.h: Add concept-check. In class _List_base
+	rebind _Alloc to _Tp_alloc_type and add _M_get_Tp_allocator(), which
+	returns the allocator (of type _Node_alloc_type) converted to
+	_Tp_alloc_type. Use everywhere _M_get_Tp_allocator() instead of
+	get_allocator().
+	* include/bits/list.tcc: Likewise, use _M_get_Tp_allocator().
+	* include/bits/stl_vector.h: Add concept-check. In class _Vector_base
+	rebind _Alloc to _Tp_alloc_type, change _Vector_impl to inherit from
+	the latter and add _M_get_Tp_allocator() which returns it. Use
+	everywhere _M_get_Tp_allocator() instead of get_allocator().
+	* include/bits/vector.tcc: Likewise, use _M_get_Tp_allocator().
+	* include/bits/stl_map.h: Add concept-check. Rebind _Alloc to
+	_Pair_alloc_type and use it for _Rb_tree.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Add concept-check. Rebind _Alloc to
+	_Key_alloc_type and use it for _Rb_tree.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/basic_string.h: Rebind _Alloc to _CharT_alloc_type and
+	use it for the allocator typedefs.
+	* testsuite/21_strings/basic_string/1.cc: New.
+	* testsuite/23_containers/deque/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/deque/explicit_instantiation/1.cc: ... here.
+	* testsuite/23_containers/deque/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/list/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/list/explicit_instantiation/1.cc: ... here.
+	* testsuite/23_containers/list/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/map/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/map/explicit_instantiation/1.cc: ... here.
+	* testsuite/23_containers/map/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/multimap/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/multimap/explicit_instantiation/1.cc: .. here.
+	* testsuite/23_containers/multimap/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/multiset/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/multiset/explicit_instantiation/1.cc: .. here.
+	* testsuite/23_containers/multiset/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/set/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/set/explicit_instantiation/1.cc: .. here.
+	* testsuite/23_containers/set/explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/vector/explicit_instantiation.cc: Move to...
+	* testsuite/23_containers/vector/explicit_instantiation/1.cc: ... here.
+	* testsuite/23_containers/vector/explicit_instantiation/3.cc: New.
+
+2005-06-02  Nathan Sidwell  
+
+	PR c++/21280
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust expected errors.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2005-05-31  Paolo Carlini  
+
+	PR libstdc++/20534 (contd)
+	* include/debug/macros.h: Add _GLIBCXX_DEBUG_ABORT, using
+	__gnu_debug::__fancy_abort.
+	* src/debug.cc: Define the latter.
+	* include/debug/debug.h: Use _GLIBCXX_DEBUG_ABORT instead of
+	assert.
+	* config/linker-map.gnu (__gnu_debug::__fancy_abort): Add.
+
+2005-05-30  Paolo Carlini  
+
+	* include/std/std_complex.h (log(const complex<_Tp>&)): When
+	_GLIBCXX_USE_C99_COMPLEX, forward to __builtin_clog/clogf/clogl.
+
+2005-05-28  Paolo Carlini  
+
+	Revert:
+	2005-05-18  Paolo Carlini  
+		    Nathan Myers  
+
+	PR libstdc++/19495
+	* include/bits/basic_string.h (_Raw_bytes_alloc): Rebind to
+	size_type instead of char and rename to _Raw_alloc.
+	* include/bits/basic_string.tcc (_Rep::_M_destroy, _Rep::_S_create):
+	Use the above.
+	* src/bitmap_allocator.cc: Add instantiation for size_type.
+	* src/mt_allocator.cc: Likewise.
+	* src/pool_allocator.cc: Likewise.
+	* include/ext/array_allocator.h: Tweak slightly, avoid assuming
+	the existence of an _Array::begin() and size() members.
+	* testsuite/ext/array_allocator/2.cc: Tweak to use an allocator
+	of size_type, instead of char, thus avoiding problems with
+	rebinds, not treated correctly by array_allocator.
+
+2005-05-27  Paolo Carlini  
+
+	* docs/html/abi.html: Mention 3.4.0 as the current baseline; add
+	a notice about the configure options.
+
+2005-05-27  Mark Mitchell  
+
+	* docs/html/test.html: Mention PCH_CXXFLAGS.
+	* testsuite/lib/libstdc++.exp: Set PCH_CXXFLAGS by probing for an
+	available stcd++.h PCH.
+	* testsuite/libstdc++-dg/normal.exp: Use PCH_CXXFLAGS.
+
+2005-05-27  Theodore Papadopoulo  
+
+	* src/misc-inst.cc: Remove unnecessary included files.
+
+2005-05-27  Benjamin Kosnik  
+
+	PR libstdc++/21674
+	* include/bits/c++config: Remove extern template use when in debug
+	mode, disable for non-weak systems.
+
+2005-05-27  Benjamin Kosnik  
+
+	PR libstdc++/20534
+	* include/debug/debug.h: Forwarding header, that pulls in details
+	only if in debug mode.
+	* include/debug/macros.h: ...transfer all the internal macros here.
+	* include/debug/functions.h: ...transfer all the functions here.
+	* include/debug/safe_iterator.h: Add functions.h, macros.h includes.
+	* include/debug/safe_sequence.h: Same.
+	* include/debug/vector: Tweak.
+	* include/Makefile.am (debug_headers): Add new includes.
+	* include/Makefile.in: Regenerate.
+	* testsuite/17_intro/no_assert_neg.cc: Add.
+
+	* include/ext/hash_set: Add debug mode include.
+	* include/ext/hash_map: Same.
+	* include/debug/hash_map: Fix included files to match actual files.
+	* include/debug/hash_set: Same.
+
+2005-05-26  Paolo Carlini  
+
+	PR libstdc++/13943
+	* include/c_std/std_cstdlib.h: Do not open code llabs and lldiv,
+	available when _GLIBCXX_USE_C99 is defined.
+	* testsuite/26_numerics/cstdlib/13943.cc: New.
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_C99]): For completeness, check
+	also strtoll and strtoull for ac_c99_stdlib.
+	* configure: Regenerate.
+
+2005-05-25  Benjamin Kosnik  
+
+	* config/linker-map.gnu: Add linkage support for no extern templates.
+	(std::ios_base::_M_call_callbacks): Add.
+	(std::ios_base::_M_dispose_callbacks): Add.
+	(std::locale::facet::_S_get_c_name): Add.
+	(std::__copy_streambufs): Add.
+	* configure.ac (libtool_VERSION): To 6:5:0.
+	* configure: Regenerate.
+	* testsuite/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.5.
+
+2005-05-25  Paolo Carlini  
+
+	* include/bits/basic_string.h (_Rep::_M_set_length_and_sharable):
+	Use, consistently, traits_type::assign.
+
+2005-05-25  Paolo Carlini  
+
+	* config/cpu/alpha/atomicity.h: Use the builtins for
+	atomic memory operations.
+	* config/cpu/powerpc/atomicity.h: Likewise.
+	* config/cpu/ia64/atomicity.h: Do not include ia64intrin.h.
+
+2005-05-24  Paolo Carlini  
+
+	* testsuite/25_algorithms/equal.cc: Move to...
+	* testsuite/25_algorithms/equal: ... here.
+	* testsuite/25_algorithms/lower_bound.cc: Move to...
+	* testsuite/25_algorithms/lower_bound: ... here.
+
+2005-05-24  Paolo Carlini  
+
+        Port from libstdcxx_so_7-branch:
+	2005-20-05  Chris Jefferson  
+
+	* testsuite/25_algorithms/heap.cc: Move to...
+	* testsuite/25_algorithms/heap/heap.cc: ...here.
+	* testsuite/25_algorithms/partition.cc: Move to...
+	* testsuite/25_algorithms/partition/partition.cc: ...here.
+
+	2005-03-29  Christopher Jefferson  
+
+	* testsuite/25_algorithms/includes/1.cc: Add tests.
+	* testsuite/25_algorithms/search/1.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/1.cc: Likewise.
+	* testsuite/25_algorithms/swap_ranges/1.cc: New.
+	* testsuite/25_algorithms/swap_ranges/check_type.cc: New.
+	* testsuite/25_algorithms/rotate.cc: Move to...
+	* testsuite/25_algorithms/rotate/rotate.cc: ... here.
+	* testsuite/25_algorithms/rotate/1.cc: New.
+	* testsuite/25_algorithms/rotate/check_type.cc: New.
+	* testsuite/25_algorithms/search_n/iterator.cc: Fix typo.
+
+	2005-03-14  Christopher Jefferson  
+
+	* include/bits/stl_algo.h (replace_copy, replace_copy_if):
+	Don't assume that __new_value and *__first are convertible to
+	each other.
+
+	* testsuite/25_algorithms/find/1.cc: New.
+	* testsuite/25_algorithms/find/check_type.cc: New.
+	* testsuite/25_algorithms/find_if/1.cc: New.
+	* testsuite/25_algorithms/find_if/check_type.cc: New.
+	* testsuite/25_algorithms/replace/1.cc: New.
+	* testsuite/25_algorithms/replace/check_type.cc: New.
+	* testsuite/25_algorithms/replace_if/1.cc: New.
+	* testsuite/25_algorithms/replace_if/check_type.cc: New.
+	* testsuite/25_algorithms/replace_copy/1.cc: New.
+	* testsuite/25_algorithms/replace_copy/check_type.cc: New.
+	* testsuite/25_algorithms/replace_copy_if/1.cc: New.
+	* testsuite/25_algorithms/replace_copy_if/check_type.cc: New.
+	* testsuite/25_algorithms/remove/1.cc: New.
+	* testsuite/25_algorithms/remove/check_type.cc: New.
+	* testsuite/25_algorithms/remove_if/1.cc: New.
+	* testsuite/25_algorithms/remove_if/check_type.cc: New.
+	* testsuite/25_algorithms/count/1.cc: New.
+	* testsuite/25_algorithms/count/check_type.cc: New.
+	* testsuite/25_algorithms/count_if/1.cc: New.
+	* testsuite/25_algorithms/count_if/check_type.cc: New.
+
+	2005-02-27  Christopher Jefferson  
+        	    Paolo Carlini  
+
+	* testsuite/ext/is_heap/check_type.cc: New.
+
+	2005-02-27  Paolo Carlini  
+
+	* testsuite/ext/is_heap/1.cc: New.
+
+	2005-02-01  Christopher Jefferson  
+
+	* testsuite/ext/median.cc: New.
+	* testsuite/25_algorithms/adjacent_find/1.cc: New.
+	* testsuite/25_algorithms/adjacent_find/check_type.cc: New.
+	* testsuite/25_algorithms/search/1.cc: New.
+	* testsuite/25_algorithms/search/check_type.cc: New.
+	* testsuite/25_algorithms/unique_copy/1.cc: New.
+	* testsuite/25_algorithms/unique_copy/check_type.cc: New.
+	* testsuite/25_algorithms/partial_sort/1.cc: New.
+	* testsuite/25_algorithms/partial_sort/check_type.cc: New.
+	* testsuite/25_algorithms/partial_sort_copy/1.cc: New.
+	* testsuite/25_algorithms/partial_sort_copy/check_type.cc: New.
+	* testsuite/25_algorithms/lower_bound/1.cc: New.
+	* testsuite/25_algorithms/lower_bound/check_type.cc: New.
+	* testsuite/25_algorithms/upper_bound/1.cc: New.
+	* testsuite/25_algorithms/upper_bound/check_type.cc: New.
+	* testsuite/25_algorithms/merge/1.cc: New.
+	* testsuite/25_algorithms/merge/check_type.cc: New.
+	* testsuite/25_algorithms/inplace_merge/1.cc: New.
+	* testsuite/25_algorithms/inplace_merge/check_type.cc: New.
+	* testsuite/25_algorithms/stable_sort/1.cc: New.
+	* testsuite/25_algorithms/stable_sort/check_type.cc: New.
+	* testsuite/25_algorithms/nth_element/1.cc: New.
+	* testsuite/25_algorithms/nth_element/check_type.cc: New.
+	* testsuite/25_algorithms/equal_range/1.cc: New.
+	* testsuite/25_algorithms/equal_range/check_type.cc: New.
+	* testsuite/25_algorithms/binary_search/1.cc: New.
+	* testsuite/25_algorithms/binary_search/check_type.cc: New.
+	* testsuite/25_algorithms/includes/1.cc: New.
+	* testsuite/25_algorithms/includes/check_type.cc: New.
+	* testsuite/25_algorithms/set_union/1.cc: New.
+	* testsuite/25_algorithms/set_union/check_type.cc: New.
+	* testsuite/25_algorithms/set_intersection/1.cc: New.
+	* testsuite/25_algorithms/set_intersection/check_type.cc: New.
+	* testsuite/25_algorithms/set_difference/1.cc: New.
+	* testsuite/25_algorithms/set_difference/check_type.cc: New.
+	* testsuite/25_algorithms/set_symmetric_difference/1.cc: New.
+	* testsuite/25_algorithms/set_symmetric_difference/check_type.cc: New.
+	* testsuite/25_algorithms/min_element/1.cc: New.
+	* testsuite/25_algorithms/min_element/check_type.cc: New.
+	* testsuite/25_algorithms/max_element/1.cc: New.
+	* testsuite/25_algorithms/max_element/check_type.cc: New.
+	* testsuite/25_algorithms/prev_permutation/1.cc: New.
+	* testsuite/25_algorithms/prev_permutation/check_type.cc: New.
+	* testsuite/25_algorithms/next_permutation/1.cc: New.
+	* testsuite/25_algorithms/next_permutation/check_type.cc: New.
+	* testsuite/25_algorithms/find_first_of/1.cc: New.
+	* testsuite/25_algorithms/find_first_of/check_type.cc: New.
+	* testsuite/25_algorithms/find_end/1.cc: New.
+	* testsuite/25_algorithms/find_end/check_type.cc: New.
+	* testsuite/25_algorithms/equal/check_type.cc: Insert iterator type.
+	* testsuite/25_algorithms/lexicographical_compare/check_type.cc:
+	Likewise.
+
+	2005-01-10  Christopher Jefferson 
+
+	* testsuite/25_algorithms/lexicographical_compare/check_type.cc: New.
+	* testsuite/25_algorithms/lexicographical_compare/1.cc: Likewise.
+	* testsuite/25_algorithms/mismatch/check_type.cc: Likewise.
+	* testsuite/25_algorithms/mismatch/1.cc: Likewise.
+	* testsuite/25_algorithms/equal/check_type.cc: New.
+	* testsuite/25_algorithms/equal/1.cc: New.
+
+2005-05-24  Benjamin Kosnik  
+
+	* include/bits/allocator.h: Change ___glibcxx_base_allocator to
+	__glibcxx_base_allocator.
+	* config/allocator/bitmap_allocator_base.h: Same.
+	* config/allocator/malloc_allocator_base.h: Same.
+	* config/allocator/mt_allocator_base.h: Same.
+	* config/allocator/new_allocator_base.h: Same.
+	* config/allocator/pool_allocator_base.h: Same.
+
+2005-05-24  Jonathan Wakely  
+
+	* include/debug/string (class basic_string): Add missing
+	default template arguments; provide typedefs for char
+	and wchar_t.
+	(operator[]): Allow s[s.size()] in debug mode, but not
+	pedantic mode.
+
+2005-05-24  Paolo Carlini  
+
+	Port from libstdcxx_so_7-branch:
+	2005-04-25  Christopher Jefferson  
+
+	* include/bits/stl_algo.h (count): Correct concept checks.
+	(search_n) : Likewise.
+	* testsuite/25_algorithms/search_n/check_type.cc: New.
+
+	* testsuite/testsuite_iterators.h
+	(random_access_iterator_wrapper::operator+): Move out of
+	class to external function, and add symmetric version.
+
+	2005-03-14  Christopher Jefferson  
+
+	* testsuite/testsuite_iterators.h (WritableObject::WritableObject):
+	Add const.
+
+	2005-02-01  Christopher Jefferson  
+
+	* testsuite/testsuite_iterators.h (random_access_iterator_wrapper::
+	operator--): Fix typo.
+	(OutputContainer::OutputContainer): Correct zeroing array.
+	(WritableObject::operator==): Fix typo.
+        (WritableObject::operator=): make operator= templated
+	to allow differing types to be assigned.
+	(WritableObject::operator++): Fix checking if iterator is
+	written to multiple times.
+	(random_access_iterator_wrapper::operator+): Add const.
+	(random_access_iterator_wrapper::operator-): Likewise.
+	(random_access_iterator_wrapper::operator[]): Add dereference.
+
+2005-05-23  Jonathan Wakely  
+
+	* docs/html/debug.html: Explain that _GLIBXX_DEBUG_PEDANTIC
+	had to be defined for pedantic mode in 3.4 and 4.0.0.
+
+2005-05-20  Jan Beulich  
+
+	* libmath/stubs.c: Also implement fabsf/fabsl if not present in the
+	system libraries.
+
+2005-05-20  Paolo Carlini  
+
+	* include/bits/stl_algo.h (__rotate<_RandomAccessIterator>):
+	Don't qualify __tmp as const, _ValueType is not necessarily
+	Assignable.
+	* include/bits/stl_algobase.h (swap, __iter_swap):
+	Likewise, as an harmless extension.
+
+2005-05-19  Richard Henderson  
+
+	* libsupc++/unwind-cxx.h: Revert gcc_unreachable change.
+
+2005-05-19  Jonathan Wakely  
+
+	* include/bits/basic_string.h (operator[]): Allow s[s.size()] in
+	debug mode, but not pedantic mode.
+
+2005-05-19  Jan Beulich  
+
+	* libsupc++/unwind-cxx.h: Include cstdlib.
+	(gcc_unreachable): #define.
+	* libsupc++/eh_personality.cc (gcc_unreachable): Remove #define.
+
+2005-05-18  Paolo Carlini  
+	    Nathan Myers  
+
+	PR libstdc++/19495
+	* include/bits/basic_string.h (_Raw_bytes_alloc): Rebind to
+	size_type instead of char and rename to _Raw_alloc.
+	* include/bits/basic_string.tcc (_Rep::_M_destroy, _Rep::_S_create):
+	Use the above.
+	* src/bitmap_allocator.cc: Add instantiation for size_type.
+	* src/mt_allocator.cc: Likewise.
+	* src/pool_allocator.cc: Likewise.
+	* include/ext/array_allocator.h: Tweak slightly, avoid assuming
+	the existence of an _Array::begin() and size() members.
+	* testsuite/ext/array_allocator/2.cc: Tweak to use an allocator
+	of size_type, instead of char, thus avoiding problems with
+	rebinds, not treated correctly by array_allocator.
+
+2005-05-18  Paolo Carlini  
+
+	* testsuite/22_locale/ctype/is/char/2.cc: Adjust dg-require-namedlocale.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/wrapped_env.cc: Add
+	missing dg-require-namedlocale.
+	* testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc:
+	Likewise.
+
+2005-05-18  Paolo Carlini  
+
+	* testsuite/testsuite_hooks.cc: Remove try_named_locale.
+	* testsuite/testsuite_hooks.h: Remove try_named_locale.
+	* testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): New.
+	* testsuite/lib/dg-options.exp (dg-require-namedlocale): New, uses
+	the above.
+	* testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc: Use
+	dg-require-namedlocale.
+	* testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/in/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/out/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate/compare/char/1.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/3.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate/hash/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/3.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/ctype/cons/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/cons/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/2.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/facet/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12352.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12438.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/4.cc: Likewise.
+	* testsuite/22_locale/locale/cons/5.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7222-env.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/14071.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/2.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/1.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/2.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/3.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/messages_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/10.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/11.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/11528.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/12.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/13.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/15.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/16.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/17.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/18.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/11.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/11528.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/13.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/15.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/16.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/17.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/18.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/9780-3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/2.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/5.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/6.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/9.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/20909.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/20914.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/9780-2.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/20909.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/20914.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/3.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/numpunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/9780-1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13007.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/10.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/11.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/13.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9520.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Likewise.
+
+2005-05-17  Nathan Sidwell  
+
+	* libsupc++/eh_personality.cc (gcc_unreachable): Define.
+
+2005-05-16  Paolo Carlini  
+
+	* docs/html/install.html: Update list of required named
+	locales, add "es_ES".
+
+2005-05-13  Magnus Fromreide  
+
+	* testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Use
+	initialization instead of copying as the string is used only once.
+	* testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc: Likewise.
+
+2005-05-12  Benjamin Kosnik  
+
+	* scripts/create_testsuite_files: Fix.
+
+2005-05-12  Kaz Kojima  
+
+	* testsuite/18_support/numeric_limits.cc (dg-options): Add
+	-mieee to options on sh*-*-*.
+
+2005-05-10  Jonathan Wakely  
+
+	* include/debug/debug.h: Fix typo in macro name.
+
+2005-05-09  Paolo Carlini  
+	    Giovanni Bajo  
+
+	PR libstdc++/18604
+	* include/bits/deque.tcc: Fully qualify names from namespace std.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/std/std_bitset.h: Likewise.
+	* testsuite/23_containers/bitset/18604.cc: New.
+	* testsuite/23_containers/deque/18604.cc: Likewise.
+	* testsuite/23_containers/list/18604.cc: Likewise.
+	* testsuite/23_containers/map/18604.cc: Likewise.
+	* testsuite/23_containers/set/18604.cc: Likewise.
+	* testsuite/23_containers/vector/18604.cc: Likewise.
+
+2005-05-09  Mike Stump  
+
+	* configure: Regenerate.
+
+2005-05-09  Jonathan Wakely  
+
+	DR 434. bitset::to_string() hard to use [Ready]
+	* include/debug/bitset (to_string): Add three overloads, taking
+	fewer template arguments.
+
+2005-05-06  Mark Mitchell  
+
+	* testsuite/testsuite_hooks.cc (try_mkfifo): Remove.
+	* testsuite/testsuite_hooks.h (try_mkfifo): Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use
+	dg-require-fork and dg-require-mkfifo.  Replace try_mkfifo with
+	mkfifo.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
+2005-05-04  Benjamin Kosnik  
+
+	* acinclude.m4: Remove testsuite_wchar_t and testsuite_thread.
+	* testsuite/Makefile.am: Same.
+	* scripts/create_testsuite_files: Same.
+	* Makefile.in: Regenerate.
+	* configure: Same.
+	* include/Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* po/Makefile.in: Same.
+	* src/Makefile.in: Same.
+
+2005-05-04  Mark Mitchell  
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Look for
+	__GTHREADS, rather than _GLIBCXX_HAVE_GTHR_DEFAULT, to determine
+	whether or not thread support is available.
+
+	* docs/html/test.html: Explain how to run the testsuite on an
+	installed directory.
+
+2005-05-01  Paolo Carlini  
+
+	* config/os/aix/os_defines.h: Remove obsolete __off_t,
+	__off64_t, __ssize_t defines.
+	* config/os/djgpp/os_defines.h: Likewise.
+	* config/os/hpux/os_defines.h: Likewise.
+	* config/os/irix/irix5.2/os_defines.h: Likewise.
+	* config/os/irix/irix6.5/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.5/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.6/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.7/os_defines.h: Likewise.
+	* docs/html/17_intro/porting.html: Don't discuss the defines.
+	* docs/html/17_intro/porting.texi: Likewise.
+
+2005-04-29  Paolo Carlini  
+	    Nathan Myers  
+
+	PR libstdc++/21286
+	* include/bits/fstream.tcc (basic_filebuf<>::xsgetn):
+	Loop on short reads; remove the work-around for
+	libstdc++/20806, not needed anymore.
+
+2005-04-29  Paolo Carlini  
+
+	PR libstdc++/21238
+	* include/bits/locale_facets.tcc (num_get::_M_extract_float,
+	num_get::_M_extract_int, num_get::do_get(bool&),
+	num_put::_M_insert_int, num_put::_M_insert_float,
+	num_put::do_put(bool), money_get::_M_extract,
+	money_put::_M_insert): Adjust the __cache_type typedef not to
+	forward to a numpunct/moneypunct typedef.
+	* testsuite/testsuite_character.h: Add pod_uint and its numpunct
+	and moneypunct specializations.
+	* testsuite/testsuite_character.cc: Add numpunct::id
+	and moneypunct::id.
+	* testsuite/22_locale/num_get/3.cc: New.
+	* testsuite/22_locale/num_put/3.cc: Likewise.
+	* testsuite/22_locale/money_get/3.cc: Likewise.
+	* testsuite/22_locale/money_put/3.cc: Likewise.
+
+	* include/bits/locale_facets.tcc (money_put::_M_insert,
+	time_get::_M_extract_name): Prefer operator== to operator!=
+	on char_types.
+
+2005-04-29  Paolo Carlini  
+
+	* include/tr1/type_traits (is_convertible): Adjust according
+	to the resolution of TR1 issue 3.20.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_convertible/is_convertible.cc: Add tests.
+
+2005-04-28  Paolo Carlini  
+	    Gabriel Dos Reis  
+
+	PR libstdc++/21244 (cont)
+	* include/bits/cpp_type_traits.h (struct __traitor): Convert
+	to bool the values.
+	* include/bits/stl_algo.h: Convert _S_threshold to int.
+	* include/bits/stl_bvector.h: Revert previous change, convert
+	_S_word_bit to int.
+	* include/debug/formatter.h: Convert __max_parameters to
+	size_t.
+	* include/ext/mt_allocator.h: Likewise for _S_chunk_size.
+	* include/ext/pool_allocator.h: Likewise for _S_max_bytes and
+	_S_align.
+	* include/ext/rope: Likewise for _S_alloc_granularity; convert
+	_S_max_rope_depth to int.
+	* include/ext/ropeimpl.h: Convert _S_path_cache_len to int;
+	_S_max_rope_depth to int; _S_copy_max to size_t.
+
+2005-04-27  Benjamin Kosnik  
+
+	* docs/doxygen/user.cfg.in: Update to doxygen-1.4.2.
+	* docs/doxygen/doxygroups.cc: Update namespace comments.
+
+2005-04-27  Dominik Strasser  
+	    Paolo Carlini  
+
+	PR libstdc++/21244
+	* include/bits/stl_bvector.h: Change the anonymous enum
+	at namespace scope to _S_word_bit_enum.
+	* testsuite/23_containers/vector/bool/21244.cc: New.
+
+2005-04-27  Paolo Carlini  
+
+	* include/tr1/type_traits (has_trivial_copy, has_trivial_assign,
+	has_nothrow_copy, has_nothrow_assign): Adjust according to the
+	resolution of TR1 issue 3.21.
+	* testsuite/testsuite_tr1.h (test_copy_property,
+	test_assign_property): Remove.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_assign/has_nothrow_assign.cc: Adjust.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_copy/has_nothrow_copy.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_assign/has_trivial_assign.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_copy/has_trivial_copy.cc: Likewise.
+
+2005-04-26  Jones Desougi  
+
+	PR libstdc++/21131
+	* linkage.m4: Fix comments.
+
+2005-04-26  Paolo Carlini  
+
+	PR libstdc++/21209
+	* include/bits/locale_facets.tcc (_M_extract_int): Avoid signed
+	integer overflow, always use a suited unsigned type in the main
+	parsing loop.
+	(struct __to_unsigned_type): New.
+	* testsuite/22_locale/num_get/get/char/16.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/16.cc: Likewise.
+
+2005-04-25  Paolo Carlini  
+
+	PR libstdc++/21035
+	* include/bits/basic_string.h (compare): Adjust the documentation
+	to match the implementation and the standard.
+
+2005-04-24  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 35.
+
+2005-04-20  Mark Mitchell  
+
+	* testsuite/ext/bitmap_allocator/check_allocate_max_size.cpp: Add
+	explicit instantiations for systems without weak symbols.
+	* testsuite/ext/bitmap_allocator/check_deallocate_null.cc:
+	Likewise.
+
+2005-04-18  Jonathan Wakely  
+
+	* include/bits/stl_algo.h (rotate_copy): Add missing std qualification.
+
+2005-04-17  Paolo Carlini  
+
+	PR libstdc++/20914
+	* include/bits/locale_facets.tcc (__int_to_char(_CharT*, _ValueT,
+	const _CharT*, ios_base::fmtflags, bool)): Don't deal with numeric
+	base or sign here, instead...
+	(_M_insert_int(_OutIter, ios_base&, _CharT, _ValueT)): ... here,
+	after adding the grouping. This fixes the bug and also allows to
+	clean-up the code dealing with integer types.
+	(_M_group_int(const char*, size_t, _CharT, ios_base&, _CharT*,
+	_CharT*, int&)): Simplify, remove bits dealing with numeric base.
+	(__int_to_char(_CharT*, unsigned long, const _CharT*,
+	ios_base::fmtflags), __int_to_char(_CharT*, unsigned long long,
+	const _CharT*, ios_base::fmtflags)): Remove hackish fix for
+	libstdc++/15565.
+	(__int_to_char(_CharT*, long, const _CharT*, ios_base::fmtflags),
+	__int_to_char(_CharT*, long long, const _CharT*, ios_base::fmtflags)):
+	Simplify, don't pass the sign.
+	(_M_insert_float(_OutIter, ios_base&, _CharT, char, _ValueT)):
+	Deal with a sign at the beginning of __cs; robustify the grouping
+	check.
+	* testsuite/22_locale/num_put/put/char/20914.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/20914.cc: Likewise.
+
+2005-04-14  Benjamin Kosnik  
+
+	* include/ext/bitmap_allocator.h
+	(__gnu_cxx::free_list::_M_get_mutex): New.
+	(__gnu_cxx::free_list::_M_get_free_list): New.
+	(__gnu_cxx::free_list::_S_bfl_mutex): Remove.
+	(__gnu_cxx::free_list::_S_free_list): Remove.
+	* src/bitmap_allocator.cc: Same.
+	* config/linker-map.gnu: Remove free_list and mutex export.
+
+2005-04-14  Benjamin Kosnik  
+
+	*  include/ext/pod_char_traits.h (__gnu_cxx::character): Add char_type.
+	(character::to): New.
+	(character::from): New.
+	(operator==): Add state parameter.
+	(operator<): Same.
+	(char_traits::copy): Use std::copy.
+	(char_traits::assign): Use std::fill_n.
+	(char_traits::to_char_type): Use character::from.
+	(char_traits::to_int_type): Use character::to.
+	*  testsuite/testsuite_character.h (__gnu_test::character): Remove.
+	(__gnu_test::conversion_state): Remove.
+	(__gnu_test::pod_char): Remove.
+	(pod_char): New typedef.
+	(pod_uchar): New typedef.
+	(pod_ushort): New typedef.
+	*  testsuite/testsuite_character.cc: Fixups.
+	*  testsuite/21_strings/basic_string/inserters_extractors/pod/
+	10081-in.cc: Same.
+	*  testsuite/21_strings/basic_string/inserters_extractors/pod/
+	10081-out.cc: Same.
+	*  testsuite/22_locale/numpunct/members/pod/1.cc: Same.
+	*  testsuite/22_locale/numpunct/members/pod/2.cc: Same.
+	*  testsuite/27_io/basic_filebuf/close/12790-1.cc: Same.
+	*  testsuite/27_io/basic_filebuf/open/12790-1.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekoff/12790-1.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekoff/12790-2.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekoff/12790-3.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekoff/12790-4.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekpos/12790-1.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekpos/12790-2.cc: Same.
+	*  testsuite/27_io/basic_filebuf/seekpos/12790-3.cc: Same.
+	*  testsuite/27_io/basic_ios/imbue/14072.cc: Same.
+	*  testsuite/27_io/basic_istream/extractors_arithmetic/pod/
+	3983-1.cc: Same.
+	*  testsuite/27_io/basic_istream/extractors_character/pod/
+	3983-2.cc: Same.
+	*  testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc: Same.
+	*  testsuite/27_io/basic_istream/sentry/pod/1.cc: Same.
+	*  testsuite/27_io/basic_ostream/sentry/pod/1.cc: Same.
+
+2005-04-12  Mike Stump  
+
+	* configure: Regenerate.
+
+2005-04-08  Benjamin Kosnik  
+
+	* testsuite/Makefile.am: Remove libv3test.a.
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/lib/libstdc++.exp (v3_target_compile): Fix comments.
+
+2005-04-08  Paolo Carlini  
+
+	PR libstdc++/20909
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
+	Don't even try to group numbers like 2e20, i.e., no decimal
+	point, scientific notation.
+	* testsuite/22_locale/num_put/put/char/20909.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/20909.cc: Likewise.
+
+2005-04-08  Kelley Cook  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Define _GLIBCXX_ASM_SYMVER.
+	* acconfig.h: Delete file.
+	* Makefile.in, acinclude.m4, configure: Regenerate.
+
+2005-04-08  Kelley Cook  
+
+	* linkage.m4 (GLIBCXX_MAYBE_UNDERSCORED_FUNCS): New macro.
+	(GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1,
+	GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2,
+	GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3,
+	GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1,
+	GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2): Use it.
+	(GLIBCXX_CHECK_MATH_SUPPORT): Delete obsolete comment.
+	* acconfig.h: Delete redundant macros.
+	* config.h.in, configure: Regenerate.
+
+2005-04-08  Kelley Cook  
+
+	* linkage.m4 (GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1): Eliminate
+	a subshell and if test fails, test for same functions with
+	leading underscore.
+	(GLIBCXX_CHECK_MATH_SUPPORT): Eliminate seperate checks for _funcs.
+	* configure: Regenerate.
+
+2005-04-08  Danny Smith  
+	    Paolo Carlini  
+
+	PR libstdc++/20806
+	* config/os/mingw32/os_defines.h: Define
+	_GLIBCXX_HAVE_DOS_BASED_FILESYSTEM.
+	* config/os/newlib/os_defines.h: Likewise, for __CYGWIN__.
+	* include/bits/fstream.tcc (basic_filebuf<>::showmanyc()):
+	Use it.
+	(basic_filebuf<>::xsgetn(_CharT*, streamsize)): Likewise.
+
+2005-04-08  Kelley Cook  
+
+	* acconfig.h: Sort the bottom section.
+	* config.h.in: Regenerate.
+
+2005-04-08  Kelley Cook  
+
+	* acconfig.h: Remove redundant HAVE_FLOAT_H.
+	* config.h.in: Regenerate.
+
+2005-04-08  Kelley Cook  
+
+	* configure.ac: Create template for PACKAGE and VERSION.
+	Update comment on how to regenerate file.  Update minimum
+	automake version to 1.9.3.
+	* acconfig.h: Remove PACKAGE and VERSION.
+	* aclocal.m4, configure, Makefile.in, po/Makefile.in,
+	src/Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	testsuite/Makefile.in, config.h.in: Regenerate.
+
+2005-04-06  Benjamin Kosnik  
+
+	* docs/html/test.html: Update.
+	* testsuite/printnow.c: Remove.
+	* scripts/check_survey.in: Remove.
+
+	* testsuite/abi_check.cc: To...
+	* testuite/testsuite_abi_check.cc: ...here.
+	* testsuite/libstdc++-abi/abi.exp: Change abi_check.cc to
+	testsuite_abi_check.cc.
+
+	* testsuite/testsuite_hooks.h: Move character related bits to...
+	* testsuite/testsuite_character.h: ...here.
+	* testsuite/testsuite_character.cc: ... and here.
+	* testsuite/21_strings/basic_string/inserters_extractors/pod/
+	10081-in.cc: Use testsuite_character.h.
+	* testsuite/21_strings/basic_string/inserters_extractors/pod/
+	10081-out.cc: Same.
+	* testsuite/22_locale/numpunct/members/pod/1.cc: Same.
+	* testsuite/22_locale/numpunct/members/pod/2.cc: Same.
+	* testsuite/27_io/basic_filebuf/2.cc: Same.
+	* testsuite/27_io/basic_fstream/2.cc: Same.
+	* testsuite/27_io/basic_istream/2.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/pod/
+	3983-1.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_character/char/
+	9826.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_character/pod/
+	3983-2.cc: Same.
+	* testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc: Same.
+	* testsuite/27_io/basic_istream/sentry/pod/1.cc: Same.
+	* testsuite/27_io/basic_ostream/2.cc: Same.
+	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Same.
+	* testsuite/27_io/basic_streambuf/2.cc: Same.
+	* testsuite/27_io/basic_stringbuf/2.cc: Same.
+	* testsuite/27_io/basic_stringbuf/4.cc: Same.
+	* testsuite/27_io/basic_stringstream/2.cc: Same.
+	* testsuite/27_io/fpos/1.cc: Same.
+	* testsuite/ext/mt_allocator/tune-1.cc: Same.
+	* testsuite/ext/mt_allocator/tune-2.cc: Same.
+	* testsuite/ext/stdio_filebuf/char/1.cc: Same.
+	* testsuite/lib/libstdc++.exp (v3-build_support): Add
+	testsuite_character.cc.
+	* testsuite/Makefile.am (libv3test_a_SOURCES): Add
+	testsuite_character.cc.
+	* testsuite/Makefile.in: Regenerate.
+
+	* configure.ac: Remove use of check_survey.
+	* configure: Regenerate.
+	* testsuite/Makefile.am: Remove check-script and
+	check-script-install rules.
+	* testsuite/Makefile.in: Regenerate.
+
+2005-04-06  Ulrich Weigand  
+
+	* config/cpu/s390/atomicity.h (__exchange_and_add): Add "memory"
+	clobber to inline assembly statement.
+
+2005-04-06  Kelley Cook  
+
+	* acinclude.m4 (_GLIBCXX_USE_LONG_LONG,
+	_GLIBCXX_USE_WCHAR_T, _GLIBCXX_USE_C99, _GLIBCXX_USE_C99_MATH,
+	_GLIBCXX_USE_C99_COMPLEX, _GLIBCXX_RES_LIMITS, _GLIBCXX_CONCEPT_CHECKS,
+	_GLIBCXX_SYMVER, _GLIBCXX_USE_LFS, _GLIBCXX_FULLY_DYNAMIC_STRING,
+	_GLIBCXX_USE_NLS, HAVE_GTHR_DEFAULT, HAVE_MBSTATE_T, HAVE_POLL,
+	HAVE_S_ISREG, HAVE_S_IFREG, HAVE_WRITEV, HAVE_INT64_T,
+	HAVE_LC_MESSAGES): Use long form of AC_DEFINE ...
+	* acconfig.h: ... to eliminate them from here.
+	(_GLIBCXX_ASM_SYMVER): Move definition below @BOTTOM@.
+	* config.h.in, configure: Regenerate.
+
+2005-04-05  Kelley Cook  
+
+	* Makefile.am (ACLOCAL_AMFLAGS): Define.
+	* crossconfig.m4: Wrap file into new GLIBCXX_CROSSCONFIG macro.
+	* configure.ac: Use it.
+	* acinclude.m4: Delete explicit m4_includes and sincludes.
+	* aclocal.m4, configure, Makefile.in, po/Makefile.in,
+	src/Makefile.in, include/Makefile.in, libmath/Makefile.in,
+	testsuite/Makefile.in: Regenerate.
+
+2005-04-05  Jonathan Wakely  
+
+	* include/tr1/memory, include/tr1/boost_shared_ptr.h: Use mutex
+	to make _Sp_counted_base::add_ref_lock() thread-safe. Check whether
+	to destroy resources by testing for equality, not inequality. Add
+	empty critical sections to solve memory visibility issues.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/auto_ptr_neg.cc: Use dg-excess-errors instead of
+	explicitly listing line numbers which need to be kept in sync.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/auto_ptr_neg.cc: Same.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/auto_ptr_rvalue_neg.cc: Same.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/weak_ptr_expired.cc: Make XFAIL for consistency when
+	-fno-exceptions.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared.cc: Add explanatory comments.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared2.cc: Same.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared3.cc: Same.
+
+2005-04-05  Kelley Cook  
+
+	* acconfig.h: Delete macros already AC_DEFINED.
+	* config.h.in: Regenerate.
+
+2005-04-05  Kelley Cook  
+
+	* acconfig.h (HAVE_MODF): Remove.
+	* linkage.m4: Check for modf.
+	* config.h.in, configure: Regenerate.
+
+2005-04-05  Kelley Cook  
+
+	* acconfig.h (ENABLE_NLS, HAVE_CATGETS): Remove.
+	(HAVE_GETTEXT, HAVE_STPCPY): Likewise.
+	* config.h.in: Regenerate.
+
+2005-04-05  Kelley Cook  
+
+	* linkage.m4 (GLIBCXX_CHECK_BUILTIN_MATH_DEC): Use m4 translit macro
+	to convert to uppercase instead of shelling out to tr.
+	* acconfig.h: Remove now redundant HAVE__BUILTINS_*.
+	* configure, config.h.in: Regenerate.
+
+2005-04-05  Kelley Cook  
+
+	* acconfig.h (HAVE_TANL): Correct cut-and-paste typo.
+	* config.h.in: Regenerate.
+
+2005-04-04  Mark Mitchell  
+
+	* testsuite/Makefile.am (check-local): Remove.
+	(curent_symbols.txt): Likewise.
+	(check-abi): Do not depend on current_symbols.txt.
+	* testsuite/Makefile.in: Regenerated.
+	* testsuite/libstdc++-abi/abi.exp: Build current_symbols.txt.
+
+2005-04-02  Douglas Gregor  
+
+	* include/tr1/tuple_iterate.h (tuple_element): Use new macro
+	_GLIBCXX_T_NUM_ARGS_PLUS_1 because _T is a macro on Darwin.
+	* include/tr1/repeat.h (_GLIBCXX_T_NUM_ARGS_PLUS_1): Define for
+	each iteration.
+	* scripts/gen_includers.h: Define _GLIBCXX_T_NUM_ARGS_PLUS_1 for
+	each iteration.
+
+2005-04-01  Douglas Gregor  
+
+	* include/tr1/functional (_Maybe_wrap_member_pointer): Wrap up
+	member pointers in _Mem_fn but let other function objects pass
+	through unchanged.
+	* include/tr1/functional_iterator (bind): Reduce number of bind()
+	overloads to two to eliminate ambiguities. Use
+	_Maybe_wrap_member_pointer to handle member pointers gracefully.
+
+2005-04-01  Mark Mitchell  
+
+	* testsuite/Makefile.am (noinst_PROGRAMS): Remove.
+	(site.exp): Write out the path to the baseline file.
+	(check-abi): Use DejaGNU.
+	(check-abi-verbose): Remove.
+	* testsuite/Makefile.in: Regenerated.
+	* testsuite/abi_check.cc (main): Check the return value from
+	compare_symbols.
+	* testsuite/testsuite_abi.cc (compare_symbols): Return a value.
+	* testsuite/testsuite_abi.h (compare_symbols): Adjust prototype.
+	* testsuite/libstdc++-abi/abi.exp: New file.
+
+2005-03-31  Chris Jefferson  
+
+        * include/tr1/tuple: Support iteration via tuple_iterate.h.
+        * include/tr1/tuple_iterate.h: Iteration file for tuple.
+
+2005-03-31  Douglas Gregor  
+
+        * include/Makefile.am (tr1_headers): Add bind and mu repetition
+        headers and reference_wrapper<> forwarding header.
+        * include/Makefile.in: Regenerate.
+        * include/tr1/bind_iterate.h: Implementation of function call
+        operators for the function object returned from tr1::bind().
+        * include/tr1/bind_repeat.h: Bind-specific repetition header,
+        akin to include/tr1/repeat.h.
+        * include/tr1/functional (_Mem_fn): Bug fix: declare result member
+        template for use with result_of.
+        (is_bind_expression): New.
+        (is_placeholder): New.
+        (_Placeholder): New. Placeholder type for bind.
+        (_Mu): New. Implementation detail of bind.
+        (_Bind, _Bind_result): New. Function objects returned by bind.
+        (_GLIBCXX_JOIN): New. Required to create bind placeholders.
+        * include/tr1/functional_iterate.h (_Bind, _Bind_result, bind):
+        New. Implementation of tr1::bind.
+        * include/tr1/mu_iterate.h (_Mu): result template and operator()
+        for the _Mu helper to bind.
+        * include/tr1/ref_fwd.h (reference_wrapper): Forward declaration
+        used by tuple header.
+        (ref): Ditto.
+        (cref): Ditto.
+        * include/tr1/repeat.h: Add bind-specific repetition macros.
+        * include/tr1/tuple: Use reference_wrapper forwarding header for
+        initial definitions, then include  at the end, to
+        make the circular dependencies work.
+        (tie): Support zero-argument tie() function.
+        * testsuite/tr1/3_function_objects/bind/all_bound.cc: New test of
+        bind() functionality with parameters bound.
+        * testsuite/tr1/3_function_objects/bind/nested.cc: New test of
+        nested bind() expressions.
+        * testsuite/tr1/3_function_objects/bind/placeholders.cc: New test
+        of bind() placeholders.
+        * testsuite/tr1/3_function_objects/bind/ref.cc: New test of bind()
+        with arguments bound via reference_wrapper<>.
+        * scripts/gen_includers.pl: Generate the repetitive part of
+	include/tr1/repeat.h.
+	* scripts/gen_bind_includers.pl: Generate the repetitive part of
+	include/tr1/bind_repeat.h.
+
+2005-03-30  Aaron W. LaFramboise  
+
+	* testsuite/Makefile.am (CXX): Use ${SHELL}.
+	(GLIBCXX_INCLUDES): Same.
+	(AM_CXXFLAGS): Same.
+	* testsuite/Makefile.in: Regenerate.
+
+2005-03-25  Mark Mitchell  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Define LOCALEDIR
+	when testing an installed compiler.
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Pass -w when
+	compiling support objects.
+
+2005-03-24  Benjamin Kosnik  
+
+	* include/tr1/memory: Forward to...
+	* include/tr1/boost_shared_ptr.h: ...here. Add Boost Software License.
+	* include/Makefile.am (tr1_headers): Add boost_shared_ptr.h.
+	* include/Makefile.in: Regenerate.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/cons/
+	auto_ptr_neg.cc: Adjust line numbers.
+
+2005-03-23  Mark Mitchell  
+
+	* testsuite/Makefile.am (all-local): Do not build testsuite_files.
+	* testsuite/Makefile.in: Regenerated.
+
+2005-03-23  Benjamin Kosnik  
+
+	* acinclude.m4: Adjust so that _GLIBCXX_USE_C99 implies
+	using _GLIBCXX_USE_C99_COMPLEX, _GLIBCXX_USE_C99_MATH, and
+	_GLIBCXX_USE_C99_WCHAR.
+	Remove GLIBCXX_ENABLE_C_MBCHAR, consolidate in GLIBCXX_ENABLE_C99
+	and GLIBCXX_ENABLE_WCHAR_T.
+	Take C99 bits from GLIBCXX_CHECK_WCHAR_T_SUPPORT and put in
+	GLIBCXX_ENABLE_C99.
+	Change remaining parts of GLIBCXX_CHECK_WCHAR_T_SUPPORT to
+	GLIBCXX_CHECK_ICONV_SUPPORT.
+	* configure.ac: Remove GLIBCXX_ENABLE_C_MBCHAR, use
+	GLIBCXX_CHECK_ICONV_SUPPORT and GLIBCXX_ENABLE_WCHAR_T.
+	* crossconfig.m4: Same.
+	* acconfig.h: Same, adjust comments.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* docs/html/configopts.html: Change --enable-c-mbchar to
+	--enable-wchar_t.
+
+	* config/locale/gnu/c++locale_internal.h: Guard wide functions
+	with _GLIBCXX_USE_WCHAR_T.
+	* include/c_std/std_cwctype.h: Alphabetize, remove duplicates.
+	* include/c_std/std_cstdio.h: Spacing.
+
+	* config/locale/gnu/c_locale.h: Tweaks for unused warnings.
+	* src/debug.cc: Same.
+
+2005-03-23  Mark Mitchell  
+
+	* testsuite/libstdc++-dg/normal.exp: Read testsuite_files, if it
+	exists.
+
+	* testsuite/lib/libstdc++.exp (libstdc++_wchar_t): Rename to ...
+	(v3-wchar_t): ... this.
+	(libstdc++_threads): Rename to ...
+	(v3-threads): ... this.
+	(libstdc++_test_objs): Rename to ...
+	(v3-test_objs): ... this.
+	(libstdc++_build_support): Rename to ...
+	(v3-build_support): ... this.
+	* testsuite/libstdc++-dg/normal.exp: Adjust to use new names.
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Improve handling
+	of compilers not in the build directory.
+	(libstdc++_wchar_t): New variable.
+	(libstdc++_threads): Likewise.
+	(libstdc++_test_objs): Likewise.
+	(v3_target_compile): Use libstdc++_test_objs.
+	(v3-list-tests): Remove.
+	(listdc++_build_support): New function.
+	* testsuite/libstdc++-dg/normal.exp: Rework to dynamically
+	generate list of tests.
+
+2005-03-21  Chris Jefferson  
+
+	PR libstdc++/20577
+	* include/bits/stl_algobase.h (iter_swap): Only delegate iter_swap
+	to swap when the iterator's reference_type is a reference to its
+	value_type.
+	* testsuite/25_algorithms/iter_swap/20577.cc: New.
+
+2005-03-21  Zack Weinberg  
+
+	* acinclude.m4 (GLIBCXX_CONFIGURE): Delete gcc_version logic.
+	(GLIBCXX_EXPORT_INSTALL_INFO): Adjust quotation so ${gcc_version}
+	is expanded by the Makefiles, not by configure.
+	* fragment.am: Set gcc_version.
+	* libmath/Makefile.am: Likewise.
+	* configure, Makefile.in, include/Makefile.in, libmath/Makefile.in
+	* libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in
+	* testsuite/Makefile.in: Regenerate.
+
+2005-03-16  Paolo Carlini  
+
+	* testsuite/20_util/functional/binders.cc: Remove explicit
+	instantiations for non-weak systems.
+	* testsuite/20_util/memory/allocator/1.cc: Likewise.
+	* testsuite/20_util/memory/allocator/10378.cc: Likewise.
+	* testsuite/20_util/memory/allocator/10416.cc: Likewise.
+	* testsuite/20_util/memory/allocator/8230.cc: Likewise.
+	* testsuite/20_util/utility/rel_ops.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/2.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Likewise.
+	* testsuite/23_containers/deque/cons/1.cc: Likewise.
+	* testsuite/23_containers/deque/cons/2.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/deque/operators/1.cc: Likewise.
+	* testsuite/23_containers/list/capacity/1.cc: Likewise.
+	* testsuite/23_containers/list/cons/1.cc: Likewise.
+	* testsuite/23_containers/list/cons/2.cc: Likewise.
+	* testsuite/23_containers/list/cons/3.cc: Likewise.
+	* testsuite/23_containers/list/cons/4.cc: Likewise.
+	* testsuite/23_containers/list/cons/5.cc: Likewise.
+	* testsuite/23_containers/list/cons/6.cc: Likewise.
+	* testsuite/23_containers/list/cons/7.cc: Likewise.
+	* testsuite/23_containers/list/cons/8.cc: Likewise.
+	* testsuite/23_containers/list/cons/9.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/1.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/3.cc: Likewise.
+	* testsuite/23_containers/list/operators/1.cc: Likewise.
+	* testsuite/23_containers/list/operators/2.cc: Likewise.
+	* testsuite/23_containers/list/operators/3.cc: Likewise.
+	* testsuite/23_containers/list/operators/4.cc: Likewise.
+	* testsuite/23_containers/map/insert/1.cc: Likewise.
+	* testsuite/23_containers/map/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/map/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/map/operators/1.cc: Likewise.
+	* testsuite/23_containers/multimap/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/multiset/insert/1.cc: Likewise.
+	* testsuite/23_containers/multiset/insert/2.cc: Likewise.
+	* testsuite/23_containers/multiset/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/priority_queue/members/7161.cc: Likewise.
+	* testsuite/23_containers/queue/members/7157.cc: Likewise.
+	* testsuite/23_containers/set/insert/1.cc: Likewise.
+	* testsuite/23_containers/set/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/set/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/stack/members/7158.cc: Likewise.
+	* testsuite/23_containers/vector/bool/6886.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/1.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/8230.cc: Likewise.
+	* testsuite/23_containers/vector/cons/1.cc: Likewise.
+	* testsuite/23_containers/vector/cons/2.cc: Likewise.
+	* testsuite/23_containers/vector/cons/3.cc: Likewise.
+	* testsuite/23_containers/vector/cons/6513.cc: Likewise.
+	* testsuite/23_containers/vector/element_access/1.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/1.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/swap.cc: Likewise.
+	* testsuite/23_containers/vector/resize/1.cc: Likewise.
+	* testsuite/24_iterators/back_insert_iterator.cc: Likewise.
+	* testsuite/24_iterators/front_insert_iterator.cc: Likewise.
+	* testsuite/24_iterators/insert_iterator.cc: Likewise.
+	* testsuite/24_iterators/iterator.cc: Likewise.
+	* testsuite/25_algorithms/copy/1.cc: Likewise.
+	* testsuite/25_algorithms/copy/2.cc: Likewise.
+	* testsuite/25_algorithms/copy/3.cc: Likewise.
+	* testsuite/25_algorithms/copy/4.cc: Likewise.
+	* testsuite/25_algorithms/equal.cc: Likewise.
+	* testsuite/25_algorithms/fill/1.cc: Likewise.
+	* testsuite/25_algorithms/fill/2.cc: Likewise.
+	* testsuite/25_algorithms/min_max.cc: Likewise.
+	* testsuite/25_algorithms/rotate.cc: Likewise.
+	* testsuite/25_algorithms/unique/1.cc: Likewise.
+	* testsuite/25_algorithms/unique/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Likewise.
+	* testsuite/ext/concept_checks.cc: Likewise.
+	* testsuite/ext/hash_map/1.cc: Likewise.
+	* testsuite/ext/hash_set/1.cc: Likewise.
+	* testsuite/ext/rope/1.cc: Likewise.
+	* testsuite/ext/rope/2.cc: Likewise.
+	* testsuite/ext/rope/3.cc: Likewise.
+	* testsuite/thread/pthread1.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+
+2005-03-15  Zack Weinberg  
+
+	* include/Makefile.am (c++config.h): Depend on DATESTAMP from gcc
+	subdirectory.  Generate #define of __GLIBCXX__ from contents of
+	that file.
+	* include/Makefile.in: Regenerate.
+	* include/bits/c++config: Do not define __GLIBCXX__.
+
+2005-03-15  Paolo Carlini  
+
+	PR libstdc++/20352
+	* include/std/std_complex.h (pow(const complex<_Tp>&,
+	const _Tp&)): On non-c99 platforms, don't try to compute
+	log of complex zero.
+
+2005-03-10  Ben Elliston  
+
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Don't XFAIL
+	on GNU/Linux.
+
+2005-03-07  Paolo Carlini  
+
+	* include/tr1/type_traits (is_polymorphic): Don't forget
+	the virtual destructor, thus avoiding warnings.
+	* testsuite/testsuite_tr1.h (class AbstractClass,
+	class PolymorphicClass): Likewise.
+
+2005-03-07  Paolo Carlini  
+
+	* include/std/std_complex.h (pow(const complex<_Tp>&,
+	const complex<_Tp>&)): Dispatch to either __complex_pow(__x.__rep(),
+	__y.__rep()) or __complex_pow(__x, __y) depending on the macro
+	_GLIBCXX_USE_C99_COMPLEX.
+
+2005-03-07  Paolo Carlini  
+
+	* include/std/std_fstream.h (basic_fstream<>::open,
+	basic_ifstream<>::open, basic_ofstream<>::open): Implement the
+	resolution of DR 409 [Ready], call clear() on success.
+	* docs/html/ext/howto.html: Add an entry for DR 409.
+	* docs/html/faq/index.html (4_4): Clarify the new behavior.
+	* testsuite/27_io/basic_ifstream/open/char/1.cc: Adjust.
+	* testsuite/27_io/basic_ofstream/open/char/1.cc: Likewise.
+
+2005-03-05  Joseph S. Myers  
+
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc,
+	testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc,
+	testsuite/22_locale/collate/hash/wchar_t/2.cc,
+	testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc,
+	testsuite/22_locale/collate/transform/wchar_t/2.cc,
+	testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc,
+	testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	XFAIL on *-*-hpux11.23.
+
+2005-03-04  Paolo Carlini  
+
+	* include/tr1/type_traits: Add is_base_of.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_base_of/is_base_of.cc: New.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_base_of/typedefs.cc: Likewise.
+
+2005-03-03  Benjamin Kosnik  
+
+	* include/tr1/functional: Convert relative path.
+
+	* docs/doxygen/user.cfg.in: Add tr1 includes.
+
+2005-03-03  Paolo Carlini  
+
+	* include/tr1/type_traits: Implemenet is_polymorphic.
+	(is_empty): Minor tweaks.
+	* testsuite/testsuite_tr1.h: Add test types.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_polymorphic/is_polymorphic.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_polymorphic/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_union_or_class/is_union_or_class.cc: Add tests.
+
+2005-03-02  Douglas Gregor  
+
+	* include/tr1/functional (_Has_result_type): Cleanup.
+	(_Result_of_impl): Handle member data pointers correctly.
+	(reference_wrapper): Support invocation.
+	Move repetition code into new file include/tr1/repeat.h.
+	* include/tr1/functional_iterate.h (reference_wrapper): Support
+	invocation.  Cleanup long lines.
+	* include/tr1/ref_wrap_iterate.h (reference_wrapper): Declare
+	invocation operators.
+	* include/tr1/repeat.h: Code repetition header.
+	* include/Makefile.am: Add ref_wrap_iterate.h, repeat.h.
+	* include/Makefile.in: Add ref_wrap_iterate.h, repeat.h.
+	* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
+	New test of reference_wrapper invocation.
+	* testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
+	New test of reference_wrapper typedefs and base classes.
+	* testsuite/tr1/3_function_objects/result_of.cc: Trivial cleanup
+	(e-mail address).
+
+2005-03-02  Douglas Gregor  
+
+	* include/tr1/function (result_of): New class template.
+	* include/tr1/functional/iterator.h: Implementation of TR1
+	result_of.
+	* testsuite/tr1/3_function_objects/result_of.cc: New test
+
+2005-03-01  Vladimir Merzliakov  
+
+	* testsuite/26_numerics/cmath/c99_classification_macros_c.cc: Tweak.
+
+2005-02-28  Benjamin Kosnik  
+
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/
+	cons/auto_ptr_neg.cc: Correct line numbers.
+
+	* testsuite/testsuite_abi.cc: Add CXXABI_1.3.1.
+
+2005-02-28  Jonathan Wakely  
+
+	* include/tr1/memory: Replace checked_deleter with (unchecked)
+	_Sp_deleter as GCC warns about delete on incomplete types anyway.
+
+2005-02-28  Jonathan Wakely  
+
+	* include/tr1/memory: Add missing "inline" to __throw_bad_weak_ptr.
+
+2005-02-28  Hans-Peter Nilsson  
+
+	PR target/19065
+	* config/cpu/cris/atomicity.h (__exchange_and_add): In asm, use
+	'Q' constraint, not 'm'.
+
+2005-02-26  Earl Chew  
+	    Christopher Jefferson  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert): Don't leak
+	memory if _M_key_compare throws.
+
+2005-02-25  Paolo Carlini  
+
+	* include/tr1/type_traits: Add the trivial is_union and is_class;
+	add the __is_union_or_class extension.
+	(is_enum, is_empty): Use the latter.
+	* include/tr1/type_traits_fwd.h: Add __is_union_or_class.
+	* testsuite/testsuite_tr1.h: Add UnionType; trivial formatting
+	fixes.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_union_or_class/is_union_or_class.cc: New.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_union_or_class/typedefs.cc: Likewise.
+
+2005-02-24  Benjamin Kosnik  
+
+	* testsuite/tr1/6_containers/unordered/instantiate/hash.cc: Guard
+	wchar_t use with _GLIBCXX_USE_WCHAR_T.
+
+2005-02-24  Benjamin Kosnik  
+
+	* include/std/std_complex.h: _GLIBCXX_USE_C99_COMPLEX_MATH to
+	_GLIBCXX_USE_C99_COMPLEX.
+	* acinclude.m4: Same.
+	* acconfig.h: Same.
+	* configure: Regenerate.
+	* config.h.in: Same.
+
+2005-02-24  Paolo Carlini  
+
+	* include/tr1/functional (mem_fn): Avoid _T, badname on
+	Darwin.
+
+2005-02-23  Douglas Gregor  
+
+	* include/tr1/functional (function): New class template.
+	(mem_fn): New function template.
+	Implementations of TR1 function and mem_fn facilities.
+	* include/tr1/functional_iterate.h: Implementations of TR1
+	function and mem_fn facilities.
+	* testsuite/tr1/3_function_objects/function/1.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/2.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/3.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/4.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/5.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/6.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/7.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/8.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/function/9.cc: New
+	test of std::tr1::function.
+	* testsuite/tr1/3_function_objects/mem_fn.cc: New test of
+	std::tr1::mem_fn.
+
+2005-02-23  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_convertible.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_convertible/is_convertible.cc: New.
+	* testsuite/tr1/4_metaprogramming/relationships_between_types/
+	is_convertible/typedefs.cc: Likewise.
+	* testsuite/testsuite_tr1.h: Add class DerivedType.
+
+	* include/tr1/type_traits (is_function): Don't mistake references
+	to function types for function types.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_function/is_function.cc: Add testcase.
+
+2005-02-22  Benjamin Kosnik  
+
+	* scripts/check_performance: Tweaks.
+
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc: Name
+	output file with extension that clean rules can find.
+
+2005-02-22  Richard Henderson  
+
+	PR libstdc++/20091
+	* libsupc++/eh_catch.cc (__cxa_begin_catch): Don't special case
+	decrement of uncaughtExceptions for rethrow.
+
+2005-02-22  Paolo Carlini  
+
+	* include/tr1/functional: Fix License to GPL with exception.
+	* include/tr1/hashtable: Likewise.
+	* include/tr1/tuple: Likewise.
+	* include/tr1/type_traits: Likewise.
+	* include/tr1/type_traits_fwd.h: Likewise.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+	* include/tr1/utility: Likewise.
+
+2005-02-22  Paolo Carlini  
+
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/
+	auto_ptr_neg.cc: Add missing dg-do compile directive.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/
+	auto_ptr_rvalue_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/
+	shared_ptr_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/cons/
+	auto_ptr_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/modifiers/
+	reset_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/modifiers/
+	swap_neg.cc: Likewise.
+
+2005-02-22  Jonathan Wakely  
+
+	* include/Makefile.am, include/Makefile.in: Fix accidental extra
+	change from previous commit.
+
+2005-02-21  Jonathan Wakely  
+
+	* include/tr1/memory: New file.
+	* include/Makefile.am, include/Makefile.in: Add new TR1 header.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared2.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/not_shared3.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/shared.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	enable_shared_from_this/still_shared.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/assign.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/auto_ptr.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/auto_ptr_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/auto_ptr_rvalue_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/shared_ptr.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/assign/shared_ptr_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/comparison/cmp.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/auto_ptr.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/auto_ptr_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/copy.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/default.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/pointer.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/weak_ptr.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/cons/weak_ptr_expired.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/dest/dest.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/misc/io.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/misc/swap.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/modifiers/reset.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/modifiers/reset_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/modifiers/swap.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/modifiers/swap_neg.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/observers/bool_conv.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/observers/get.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/observers/unique.cc: New test.
+	* testsuite/tr1/2_general_utilities/memory/
+	shared_ptr/observers/use_count.cc: New test.
+
+2005-02-21  Paolo Carlini  
+
+	* include/tr1/type_traits (is_member_function_pointer):
+	Remove ugly workaround for c++/19076.
+
+2005-02-21  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (_Rep::_M_destroy): Don't
+	check for this == &_S_empty_rep, it's always false, here.
+
+2005-02-19  Matt Austern  
+
+	* include/tr1/functional (tr1_hashtable_define_trivial_hash): Make
+	hash::operator() a const member function for T a fundamental type
+	* include/tr1/hashtable (extract1st::operator()): Declare const.
+	(hash_code_base): Declare all member functions const
+	(hashtable::find): fix call to this->bucket_count()
+	(hashtable::count): Likewise.
+	(hashtable::equal_range): m_incr_bucket applies to iterator, not node.
+	* testsuite/tr1/6_containers/unordered/find/set1.cc: New test.
+	* testsuite/tr1/6_containers/unordered/find/map1.cc: New test.
+	* testsuite/tr1/6_containers/unordered/find/multimap1.cc: New test.
+	* testsuite/tr1/6_containers/unordered/find/multiset1.cc: New test.
+
+2005-02-19  Hans-Peter Nilsson  
+
+	PR libstdc++/20071
+	* include/tr1/functional (hash): Wrap in #ifdef
+	_GLIBCXX_USE_WCHAR_T.
+
+2005-02-18  Richard Henderson  
+
+	PR libstdc++/10606
+	* config/linker-map.gnu (CXXABI_1.3.1): Add __cxa_get_exception_ptr.
+	* libsupc++/eh_alloc.cc (__cxa_allocate_exception): Increment
+	uncaughtExceptions here instead of ...
+	* libsupc++/eh_throw.cc (__cxa_throw) ... here.
+	(__cxa_rethrow): Increment uncaughtExceptions here instead of ...
+	* libsupc++/eh_catch.cc (__cxa_end_catch): ... here.
+	(__cxa_get_exception_ptr): New.
+	* libsupc++/unwind-cxx.h (__cxa_get_exception_ptr): Declare.
+
+2005-02-18  Matt Austern  
+
+	* testsuite/tr1/6_containers/unordered/insert/array_syntax.cc: Fix
+	test case to use assignment instead of ==
+	* testsuite/tr1/6_containers/unordered/insert/map_range.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/multimap_range.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/multiset_range.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/set_range.cc: New test.
+
+2005-02-18  Eric Botcazou  
+
+	* testsuite/thread/pthread1.cc: Do not invoke pthread_setconcurrency
+	on Solaris 2.6 and below.
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+
+2005-02-17  Matt Austern  
+
+	* include/tr1/functional (hash): New function object.
+	* include/tr1/hashtable: New file.
+	* include/tr1/unordered_set: New file.
+	* include/tr1/unordered_map: New file.
+	* include/Makefile.am: Add three new TR1 headers.
+	* include/Makefile.in: Likewise.
+	* testsuite/tr1/6_containers/unordered/insert/array_syntax.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/map_single.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/multimap_single.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/multiset_single.cc: New test.
+	* testsuite/tr1/6_containers/unordered/insert/set_single.cc: New test.
+	* testsuite/tr1/6_containers/unordered/instantiate/hash.cc: New test.
+	* testsuite/tr1/6_containers/unordered/instantiate/map.cc: New test.
+	* testsuite/tr1/6_containers/unordered/instantiate/multimap.cc: New test.
+	* testsuite/tr1/6_containers/unordered/instantiate/multiset.cc: New test.
+	* testsuite/tr1/6_containers/unordered/instantiate/set.cc: New test.
+
+2005-02-16  Paolo Carlini  
+
+	* testsuite/23_containers/set/modifiers/16728.cc:
+	Remove redundant include .
+
+2005-02-16  Paolo Carlini  
+
+	PR libstdc++/19829
+	* testsuite/21_strings/basic_string/find/char/3.cc: Fix the test
+	at line #66 to not access str_lit01 beyond its end.
+	* testsuite/21_strings/basic_string/find/wchar_t/3.cc: Likewise.
+
+2005-02-15  Paolo Carlini  
+	    Jon Grimm  
+
+	PR libstdc++/19955
+	* include/bits/locale_facets.h (ctype::_M_narrow_init()):
+	Fix the logic setting _M_narrow_ok: first check whether the
+	transformation is trivial with a dflt == 0, then deal with the
+	special case of zero.
+	* testsuite/22_locale/ctype/narrow/char/19955.cc: New.
+
+	* include/bits/locale_facets.h (ctype::_M_widen_init()):
+	Tweak consistently to use memcmp; minor formatting fixes.
+
+2005-02-15  Jakub Jelinek  
+
+	PR libstdc++/19946
+	* testsuite/demangle/abi_examples/01.cc (main): Adjust for 2005-02-13
+	demangler change.
+	* testsuite/demangle/abi_examples/02.cc (main): Likewise.
+
+2005-02-13  Richard Guenther  
+	    Paolo Carlini  
+
+	PR libstdc++/11706
+	* include/c_std/std_cmath.h (pow): Use __builtin_powi[lf]
+	for integer overloads.
+
+	* testsuite/26_numerics/cmath/powi.cc: New.
+
+2005-02-11  Janis Johnson  
+
+	* testsuite/26_numerics/complex/13450.cc: Fix XFAIL selector.
+	* testsuite/26_numerics/complex/complex_value.cc: Ditto.
+	* testsuite/26_numerics/complex/pow.cc: Ditto.
+
+	* testsuite/lib/libstdc++.exp: Load target-supports-dg.exp.
+	* testsuite/26_numerics/complex/13450.cc: XFAIL for broken_cplxf_arg.
+	* testsuite/26_numerics/complex/complex_value.cc: Ditto.
+	* testsuite/26_numerics/complex/pow.cc: Ditto.
+
+2005-02-09  Mike Stump  
+
+	* libsupc++/del_op.cc: Don't include cstdlib when !_GLIBCXX_HOSTED.
+
+2005-02-09  Janis Johnson  
+
+	* testsuite/ext/array_allocator/2.cc: XFAIL for powerpc*-*-linux*.
+
+2005-02-08  Mark Mitchell  
+
+	* config/linker-map.gnu (GLIBCXX_3.4): Add _ZNSdC* and _ZNSdD*.
+
+2005-02-07  Loren J. Rittle  
+
+	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Make buf static.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc: Make ref and
+	src static.
+
+2005-02-02  Brad Spencer  
+
+	* debug.html: Fix broken tags.
+	* documentation.html: Same.
+
+2005-02-02  Andreas Jaeger  
+
+	* testsuite/lib/libstdc++.exp: Revert Geoffrey Keating's patch
+	from 2005-01-28.
+	* testsuite/Makefile.am: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2005-02-01  Paolo Carlini  
+
+	* include/bits/cpp_type_traits.h: Rename _M_type fields to
+	__value, except for __enable_if, _M_type -> __type, consistently
+	with the other traits.
+	* include/bits/stl_algobase.h: Tweak consistently.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* include/c_std/std_cmath.h: Likewise.
+	* include/debug/safe_iterator.h: Likewise.
+	* include/std/std_complex.h: Likewise.
+
+2005-01-31  Brad Spencer  
+
+	* crossconfig.m4: Repair Solaris cross bits for strtold and strtof.
+	* configure: Regenerated.
+
+2005-01-31  Mark Mitchell  
+
+	* include/std/std_limits.h (numeric_limits::has_denorm):
+	Add required cast.
+	(numeric_limits::has_denorm): Likewise.
+	(numeric_limits::has_denorm): Likewise.
+
+2005-01-31  Paolo Carlini  
+	    Gabriel Dos Reis  
+
+	* include/bits/cpp_type_traits.h: Add types to the structs thus
+	making type_traits.h redundant; exploit new __truth_type and
+	__traitor helpers.
+	* include/bits/type_traits.h: Remove.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Regenerate.
+	* include/backward/tempbuf.h: Include cpp_type_traits.h instead.
+	* include/bits/basic_string.h (replace(iterator, iterator,
+	_InputIterator, _InputIterator), _S_construct(_InIterator,
+	_InIterator, const _Alloc&)): Use __is_integer instead.
+	* include/bits/stl_bvector.h (vector(_InputIterator,
+	_InputIterator, const allocator_type&), assign(_InputIterator,
+	_InputIterator), insert(iterator, _InputIterator, _InputIterator)):
+	Likewise.
+	* include/bits/stl_construct.h (_Destroy(_ForwardIterator,
+	_ForwardIterator)): Use __is_scalar.
+	* include/bits/stl_deque.h (deque(_InputIterator, _InputIterator,
+	const allocator_type&), assign(_InputIterator, _InputIterator),
+	insert(iterator, _InputIterator, _InputIterator)): Use __is_integer.
+	* include/bits/stl_list.h (assign(_InputIterator, _InputIterator),
+	insert(iterator, _InputIterator, _InputIterator)): Likewise.
+	* include/bits/stl_tempbuf.h (_Temporary_buffer(_ForwardIterator,
+	_ForwardIterator)): Use __is_scalar.
+	* include/bits/stl_uninitialized.h (uninitialized_copy(_InputIterator,
+	_InputIterator, _ForwardIterator), uninitialized_fill(_ForwardIterator,
+	_ForwardIterator, const _Tp&), uninitialized_fill_n(_ForwardIterator,
+	_Size, const _Tp&)): Likewise.
+	* include/bits/stl_vector.h (vector(_InputIterator, _InputIterator,
+	const allocator_type&), assign(_InputIterator, _InputIterator),
+	insert(iterator, _InputIterator, _InputIterator)): Use __is_integer.
+	* include/debug/debug.h (__valid_range(const _InputIterator&,
+	const _InputIterator&)): Use __is_integer.
+	* include/ext/slist (assign(_InputIterator, _InputIterator)): Likewise.
+	* include/std/std_string.h: Include cpp_type_traits.h instead.
+
+2005-01-30  Paolo Carlini  
+
+	PR libstdc++/19642
+	* config/locale/generic/c_locale.h (__convert_from_v): Switch only
+	LC_NUMERIC, and only when actually != "C".
+
+2005-01-28  Paolo Carlini  
+
+	* include/tr1/type_traits (is_function): Minor consistency tweaks.
+
+2005-01-28  Geoffrey Keating  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Search the path
+	for the compiler.  Don't set cxxflags.
+	(v3_target_compile): Search for libv3test.a relative to $objdir.
+	(lsearch_all_inline): New.
+	(lsearch_all_inline_not): New.
+	(v3-list-tests): Rewrite to not need generated files.
+	* testsuite/Makefile.am (IGNORE_WCHAR_T): New.
+	(IGNORE_THREAD): New.
+	(TESTS_TO_IGNORE): New.
+	(site.exp): Set tests_to_ignore, cxxflags.
+	* aclocal.m4: Regenerate.
+	* Makefile.in: Regenerate.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2005-01-28  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_empty.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_empty/
+	is_empty.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_empty/
+	typedefs.cc: Likewise.
+
+	* include/tr1/type_traits (__is_abstract_helper): Simplify a bit.
+
+2005-01-28  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_abstract, by exploiting the
+	resolution of DR core/337.
+	* testsuite/testsuite_tr1.h: Add AbstractClass.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
+	is_abstract.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
+	typedefs.cc: Likewise.
+
+	* include/tr1/type_traits (is_function): Rewrite, use the conversion
+	F& -> F* instead, thus avoiding problems with abstract classes.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_function/is_function.cc: Add a test for tricky AbstractClass.
+
+2005-01-26  Paolo Carlini  
+
+	* include/ext/mt_allocator.h
+	(struct __per_type_pool_policy<,, false>::_S_get_pool,
+	struct __per_type_pool_policy<,, true>::_S_get_pool): Scale
+	_M_chunk_size too with sizeof(_Tp), otherwise the allocator
+	breaks down as soon as sizeof(_Tp) >~ _S_chunk_size / 128;
+	reduce to 64 the multiplier for _M_max_bytes (safer wrt
+	_Binmap_type being a short); trivial reformattings.
+	* testsuite/ext/mt_allocator/check_allocate_big_per_type.cc: New.
+
+2005-01-26  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_C99]): Add ac_c99_complex
+	to the final test for enable_c99, thus robustifying it; remove
+	duplicate final test on ac_99_math.
+	* configure: Regenerate.
+
+	* include/std/std_complex.h: Remove usages of the dead
+	_GLIBCXX_BUGGY_COMPLEX macro.
+
+	* testsuite/26_numerics/cmath/19322.cc: Protect with
+	_GLIBCXX_USE_C99_MATH instead of the stronger _GLIBCXX_USE_C99,
+	since only C99 math facilities are involved.
+	* testsuite/26_numerics/cmath/c99_classification_macros_c++.cc:
+	Likewise.
+
+2005-01-25  Loren J. Rittle  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Map FreeBSD to darwin
+	instead of generic.  Change autoconf report to "darwin or freebsd".
+	* configure: Regenerate.
+	* config/os/bsd/freebsd/ctype_inline.h (ctype::do_is): Add.
+	(ctype::do_scan_is): Likewise.
+	(ctype::do_scan_not): Likewise.
+
+2005-01-25  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Test for complex math
+	functions, and enable _GLIBCXX_USE_C99_COMPLEX_MATH if they exist.
+	* acconfig.h: Add _GLIBCXX_USE_C99_COMPLEX_MATH.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* include/std/std_complex.h: Protect complex builtins with
+	_GLIBCXX_USE_C99_COMPLEX_MATH.
+
+2005-01-24  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement is_signed and is_unsigned.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_signed/is_signed.cc: New.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_signed/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_unsigned/is_unsigned.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_unsigned/typedefs.cc: Likewise.
+
+2005-01-23  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 34.
+
+2005-01-23  Paolo Carlini  
+
+	* testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc: New.
+	* testsuite/27_io/basic_ostream/endl/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/4402.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/6.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/9555-oa.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	wchar_t/exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/6.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/9555-oc.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/9318-out.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/9424-out.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/
+	wchar_t/9555-oo.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	error_failbit.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	exceptions_null.cc: Likewise.
+	* testsuite/27_io/basic_ostream/put/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/put/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/
+	2346-fstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/
+	2346-sstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/wchar_t/1.cc: Likewise.
+
+	* testsuite/data/wostream_inserter_char-1.tst: Likewise.
+	* testsuite/data/wostream_inserter_char-1.txt: Likewise.
+	* testsuite/data/wostream_inserter_other-1.tst: Likewise.
+	* testsuite/data/wostream_inserter_other-2.tst: Likewise.
+	* testsuite/data/wostream_seeks-1.tst: Likewise.
+
+	* testsuite/27_io/basic_ostream/endl/char/1.cc: Minor tweaks.
+	* testsuite/27_io/basic_ostream/ends/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/exceptions/char/9561.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/4402.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/6.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	char/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	error_failbit.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	exceptions_failbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	exceptions_null.cc: Likewise.
+	* testsuite/27_io/basic_ostream/put/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/
+	exceptions_badbit_throw.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/char/1.cc: Likewise.
+
+2005-01-23  Paolo Carlini  
+
+	* include/tr1/type_traits (aligned_storage): Use __aligned__ instead
+	of aligned.
+
+2005-01-23  Paolo Carlini  
+	    Andreas Jaeger  
+
+	PR libstdc++/19343
+	* include/bits/functexcept.h: Mark the helpers as 'noreturn'.
+
+2005-01-21  Loren J. Rittle  
+
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Allow
+	lseek on fifo to succeed.  Thus, check for consistent report.
+
+2005-01-21  Volker Reichelt  
+
+	PR libstdc++/19510
+	* include/bits/stl_list.h (_List_iterator): Initialize _M_node
+	in constructor.
+	(_List_const_iterator): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree_iterator): Likewise.
+	(_Rb_tree_const_iterator): Likewise.
+
+	* testsuite/23_containers/map/operators/1_neg.cc: Adjust line numbers.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+
+2005-01-20  Benjamin Kosnik  
+
+	* testsuite/Makefile.am (check-compile): New.
+	* testsuite/Makefile.in: Regenerate.
+	* scripts/check_compile_time: New.
+	* scripts/check_performance: Tweaks.
+
+2005-01-19  Paolo Carlini  
+
+	PR libstdc++/19535
+	* include/tr1/utility (struct __pair_get<1>::__get, __const_get):
+	Fix typo in the return type.
+	* testsuite/tr1/6_containers/utility/19535.cc: New.
+
+2005-01-19  Loren J. Rittle  
+
+	* include/ext/array_allocator.h (array_allocator<>::allocate):
+	Avoid __used.  Use __array_used instead.
+	* docs/html/17_intro/BADNAMES: Add list for FreeBSD.
+
+2005-01-18  David Edelsohn  
+
+	* config/os/aix/os_defines.h (_XOPEN_SOURCE): Delete.
+	(_XOPEN_SOURCE_EXTENDED): Delete.
+
+2005-01-18  Benjamin Kosnik  
+
+	* testsuite/testsuite_performance.h (time_counter::start):
+	Clear. Tweaks.
+	(clear_counters): Inline.
+	(start_counters): Inline.
+	(stop_counters): Inline.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Return.
+	* testsuite/performance/20_util/allocator/insert.cc: Remove bogus
+	return, add return.
+	* testsuite/performance/20_util/allocator/map_thread.cc: Same.
+
+2005-01-17  Paolo Carlini  
+
+	PR libstdc++/19433
+	* include/bits/stl_tree.h (_Rb_tree<>::insert_unique(iterator,
+	const _Val&), _Rb_tree<>::insert_equal(iterator, const _Val&)):
+	Obtain amortized constant complexity if t is inserted right after
+	p - not before p - as per Table 69.
+	* testsuite/performance/23_containers/set_insert_from_sorted.cc: New.
+
+	* testsuite/23_containers/multiset/insert/2.cc: New.
+	* testsuite/23_containers/set/insert/1.cc: Likewise.
+
+	* testsuite/performance/23_containers/set_create_from_sorted.cc:
+	Simplify.
+
+	* include/bits/stl_tree.h: Add a few missing std:: qualifications.
+
+2005-01-16  Jonathan Wakely  
+
+	* include/ext/rope: Qualify calls to std::copy() by sequence_buffer.
+	* testsuite/ext/rope/4.cc: Add.
+
+2005-01-16  Lorenz Minder  
+	    Paolo Carlini  
+
+	PR libstdc++/19322
+	* include/c_std/std_cmath.h: Define the C99 classification facilities
+	directly inside namespace std:.
+	* testsuite/26_numerics/cmath/19322.cc: New.
+
+2005-01-15  David Edelsohn  
+
+	* config/os/aix/os_defines.h (_G_USING_THUNKS): Delete.
+
+2005-01-14  Paolo Carlini  
+
+	PR libstdc++/19422
+	* include/bits/stl_tree.h (_Rb_tree<>::insert_equal(_II, _II),
+	_Rb_tree<>::insert_unique(_II, _II)): Use insert_equal (insert_unique,
+	respectively) with hint (end()).
+	* testsuite/performance/23_containers/set_create_from_sorted.cc: New.
+
+2005-01-13  Geoffrey Keating  
+
+	* configure.host (darwin): On darwin8 or later, no need to build
+	libstdc++ with -flat_namespace.
+
+2005-01-13  Jonathan Wakely  
+
+	* docs/doxygen/user.cfg.in: Set HAVE_DOT back to YES.
+
+2005-01-13  Paolo Carlini  
+
+	* testsuite/26_numerics/cmath/c99_classification_macros_c++.cc:
+	Re-enable commented-out test for double type.
+
+2005-01-11  Paolo Carlini  
+	    Benjamin Kosnik  
+
+	* src/istream.cc (basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type),
+	basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type)): In case
+	more than numeric_limits::max() chars are skipped,
+	set _M_gcount = max().
+	* include/bits/istream.tcc (ignore(streamsize), ignore(streamsize,
+	int_type)): Likewise; keep simple, don't forward.
+
+2005-01-11  Paolo Carlini  
+
+	* src/istream.cc (basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type),
+	basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type)): Revert
+	2005-01-05 change: actually, the previous behavior is conforming
+	and consistent with that of get(char_type*, streamsize, char_type),
+	albeit slightly different from that of 3.3/3.4 in a corner case
+	due to the use of snextc.
+	* include/bits/istream.tcc (ignore(streamsize), ignore(streamsize,
+	int_type)): Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/4.cc: Remove.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/4.cc: Likewise.
+
+2005-01-11  Paolo Carlini  
+
+	* include/tr1/type_traits: Implement alignment_of and aligned_storage.
+	* testsuite/tr1/4_metaprogramming/other_transformations/
+	aligned_storage/aligned_storage.cc: New.
+	* testsuite/tr1/4_metaprogramming/other_transformations/
+	aligned_storage/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	alignment_of/alignment_of.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	alignment_of/typedefs.cc: Likewise.
+
+2005-01-10  Paolo Carlini  
+
+	* Makefile.in: Regenerate.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2005-01-10  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (lexicographical_compare):
+	Fix concept check.
+
+2005-01-07  Benjamin Kosnik  
+
+	* acinclude.m4: Remove CCODECVT_H.
+	* configure: Regenerate.
+	* include/Makefile.am (host_headers_extra): Move to...
+	(ext_headers): ...here.
+	* include/Makefile.in: Regenerate.
+	* include/ext/enc_filebuf: Remove enc_filebuf, consolidate
+	enc_traits to...
+	* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Move...
+	* include/ext/codecvt_specializations.h: ...here. Remove
+	_GLIBCXX_USE___ENC_TRAITS.
+	(__enc_traits): To __encoding_state, put in __gnu_cxx namespace.
+	(enc_char_traits): To __encoding_char_traits, put in __gnu_cxx
+	namespace.
+	* config/locale/generic/codecvt_specializations.h: Remove.
+	* include/bits/codecvt.h: Remove codecvt_specializations.h include.
+	* src/codecvt.cc: Remove __enc_traits::_S_max_size.
+
+2005-01-06  Benjamin Kosnik  
+
+	* include/bits/fstream.tcc: Remove unnecessary qualifications for
+	uglified data members of basic_filebuf, including _M_buf,
+	_M_buf_size, _M_mode, _M_pback_init.
+	* include/std/std_fstream.h: Same.
+
+2005-01-05  Benjamin Kosnik  
+
+	* testsuite/testsuite_hooks.h:
+	(copy_constructor::mark_call):  Use __throw_runtime_error.
+	(assignment_operator::mark_call): Same.
+	* testsuite/testsuite_hooks.cc (verify_demangle): Same.
+	(locale_data): Remove, just use runtime_error directly.
+	(environment_variable): Same.
+	(not_found): Same.
+	(run_tests_wrapped_locale): Use __throw_runtime_error.
+	(run_tests_wrapped_env): Same.
+	(semaphore::semaphore): Same.
+	(semaphore::signal): Same.
+	(semaphore::wait): Same.
+	* testsuite/testsuite_abi.h (symbol_error): Remove, use logic_error.
+	* testsuite/testsuite_abi.cc (get_symbol): Use __throw_logic_error.
+	(create_symbols): Use __throw_runtime_error.
+	* src/bitmap_allocator.cc: Use __throw_bad_alloc.
+
+2005-01-05  Mark Mitchell  
+
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Remove child
+	process.
+
+2005-01-05  Paolo Carlini  
+
+	* src/istream.cc (basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type),
+	basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type)): At the end,
+	first check _M_gcount vs __n.
+	* include/bits/istream.tcc (ignore(streamsize), ignore(streamsize,
+	int_type)): Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/4.cc: New.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/4.cc: Likewise.
+
+2005-01-03  Mark Mitchell  
+
+	* testsuite/testsuite_hooks.cc: Use __throw_exception_again
+	instead of just throw.
+
+	* testsuite/testsuite_hooks.cc: Update coypright and follow style
+	guidelines.
+	* testsuite/testsuite_hooks.h: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use
+	semaphores, not sleep.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
+	* configure.ac: Check for sys/ipc.h and sys/sem.h.
+	* config.h.in: Regenerated.
+	* configure: Likewise.
+	* testsuite/testsuite_hooks.cc (_GLIBCXX_SYSV_SEM): Conditionally
+	define.
+	(sys/types.h): Include.
+	(sys/ipc.h): Likewise.
+	(sys/sem.h): Likewise.
+	(__gnu_test::semun): New type.
+	(__gnu_test::semaphore::sempaphore): New function.
+	(__gnu_test::semaphore::~semaphore): Likewise.
+	(__gnu_test::semaphore::wait): Likewise.
+	(__gnu_test::semaphore::signal): Likewise.
+	* testsuite/testsuite_hooks.h (__gnu_test::semaphore): New class.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use
+	semaphores, not sleep.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
+2005-01-03  Paolo Carlini  
+
+	* include/bits/istream.tcc (ignore(streamsize), ignore(streamsize,
+	int_type)): Reset _M_gcount to numeric_limits::min().
+	* src/istream.cc (basic_istream::ignore(streamsize, int_type),
+	basic_istream::ignore(streamsize, int_type)): Likewise.
+	* src/istream.cc (basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize)): Likewise; fix a typo.
+
+2005-01-02  Paolo Carlini  
+
+	* src/istream.cc (basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type),
+	basic_istream::ignore(streamsize),
+	basic_istream::ignore(streamsize, int_type)): Avoid
+	_M_gcount overflows.
+	* include/bits/istream.tcc (ignore(streamsize), ignore(streamsize,
+	int_type)): Likewise; use snextc in the main loop, consistently
+	with the specializations above.
+
+2005-01-02  Chris Jefferson  
+
+	* include/bits/stl_algobase.h (mismatch): Correct concept check.
+
+2005-01-01  Paolo Carlini  
+
+	* testsuite/ext/enc_filebuf/char/13189.cc: Fix, first include
+	testsuite_hooks.h, to know whether including ext/enc_filebuf.h.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Likewise.
+
+2005-01-01  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_character/char/1.cc: Fix,
+	null-terminate array1 at the outset.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc:
+	Likewise.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2006 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2006
new file mode 100644
index 000000000..4f91c8e56
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2006
@@ -0,0 +1,5851 @@
+2006-12-29  Paolo Carlini  
+
+	PR libstdc++/30226
+	* config/abi/pre/gnu.ver: Do not export ctype::widen.
+
+2006-12-28  Paolo Carlini  
+
+	* include/tr1/array (array<>::_M_at): Remove.
+	(array<>::_M_check): Add.
+	(array<>::at): Use the latter.
+
+2006-12-22  Paolo Carlini  
+
+        DR 541, [WP].
+	* include/std/memory (auto_ptr): Add specialization.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/
+	assign/dr541.cc: New.
+	* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust
+	dg-error markers.
+	* docs/html/ext/howto.html: Add an entry for DR 541.
+
+2006-12-16  Ralf Wildenhues  
+
+	* docs/html/27_io/howto.html: Fix typos.
+	* docs/html/24_iterators/howto.html: Likewise.
+	* docs/html/18_support/howto.html: Likewise.
+	* docs/html/21_strings/howto.html: Likewise.
+	* docs/html/ext/howto.html: Likewise.
+	* docs/html/ext/ballocator_doc.html: Likewise.
+	* docs/html/17_intro/porting-howto.xml: Likewise.
+	* docs/html/17_intro/howto.html: Likewise.
+	* docs/html/22_locale/howto.html: Likewise.
+	* docs/html/faq/index.html: Likewise.
+	* docs/doxygen/tables.html: Likewise.
+
+2006-12-13  Ian Lance Taylor  
+
+	PR c++/19564
+	PR c++/19756
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	Add parentheses around && within || to avoid warning.
+	(num_get<>::_M_extract_int): Likewise.
+	(money_get<>::_M_extract): Likewise.
+	(num_get<>::do_get(iter_type, iter_type, ios_base&,
+	ios_base::iostate&, void*&)): Add parentheses around & within | to
+	avoid warning.
+	(num_put<>::do_put(iter_type, ios_base&, char_type, const void*)):
+	Likewise.
+	* include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
+	Add parentheses around && within || to avoid warning.
+	* libsupc++/tinfo.cc (__do_dyncast): Likewise.
+	* src/locale.cc (locale::_S_normalize_category): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert_unique): Add
+	braces to avoid ambiguous else warning.
+	* src/strstream.cc (strstreambuf::_M_free): Likewise.
+	* src/tree.cc (_Rb_tree_rebalance_for_erase): Likewise.
+
+2006-12-12  Benjamin Kosnik  
+
+	PR libstdc++/28265
+	* crossconfig.m4: Remove GLIBCXX_CHECK_ICONV_SUPPORT call for
+	mingw crosses.
+	* configure: Regenerate.
+
+2006-12-12  Benjamin Kosnik  
+
+	PR libstdc++/26497
+	* crossconfig.m4: Add GLIBCXX_CHECK_LINKER_FEATURES for Solaris.
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Set
+	glibcxx_gnu_ld_version only when with GNU ld confirmed.
+	* configure: Regenerate.
+
+2006-12-11  Benjamin Kosnik  
+
+	PR libstdc++/28125
+	* acinclude.m4 (GLIBCXX_CHECK_ICONV_SUPPORT): Remove link test, ie
+	AC_CHECK_LIB for libiconv. Instead, use bits of AM_ICONV.
+        * configure: Regenerate.
+        * scripts/testsuite_flags.in (cxxldflags): Add LIBICONV bits.
+
+2006-12-11  Richard Guenther  
+	    Paolo Carlini  
+
+	* include/ext/pb_ds/detail/pat_trie_/traits.hpp: Qualify types.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
+	* include/ext/rope: Likewise.
+	* include/bits/stl_tree.h (struct _Rb_tree): Change the _Link_type
+	typedefs to use _Rb_tree_node<_Val> directly.
+	(_M_get_node, _M_put_node): Use _Link_type.
+
+2006-12-10  Paolo Carlini  
+
+	* src/valarray-inst.cc (__gslice_to_index): Optimize performance.
+	* testsuite/performance/26_numerics/valarray_gslice_to_index.cc: New.
+
+2006-12-08  Jakub Jelinek  
+
+	* testsuite/util/testsuite_hooks.cc (set_memory_limits): Don't set
+	RLIMIT_AS below 16MB on x86_64-linux.
+
+2006-12-06  Benjamin Kosnik  
+
+	* include/Makefile.am (std_headers_rename): Remove.
+	(c_base_headers_rename): Remove.
+	(std_headers): Adjust to true names.
+	(c_base_headers): Adjust to true names.
+	(stamp-c_base, stamp_std, stamp_c_base_extra): Adjust.
+	* configure: Regenerate.
+	* include/Makefile.in: Regenerate.
+
+        * include/std/std_algorithm.h: To...
+        * include/std/std_bitset.h: To...
+        * include/std/std_complex.h: To...
+        * include/std/std_deque.h: To...
+        * include/std/std_fstream.h: To...
+        * include/std/std_functional.h: To...
+        * include/std/std_iomanip.h: To...
+        * include/std/std_iosfwd.h: To...
+        * include/std/std_ios.h: To...
+        * include/std/std_iostream.h: To...
+        * include/std/std_istream.h: To...
+        * include/std/std_iterator.h: To...
+        * include/std/std_limits.h: To...
+        * include/std/std_list.h: To...
+        * include/std/std_locale.h: To...
+        * include/std/std_map.h: To...
+        * include/std/std_memory.h: To...
+        * include/std/std_numeric.h: To...
+        * include/std/std_ostream.h: To...
+        * include/std/std_queue.h: To...
+        * include/std/std_set.h: To...
+        * include/std/std_sstream.h: To...
+        * include/std/std_stack.h: To...
+        * include/std/std_stdexcept.h: To...
+        * include/std/std_streambuf.h: To...
+        * include/std/std_string.h: To...
+        * include/std/std_utility.h: To...
+        * include/std/std_valarray.h: To...
+        * include/std/std_vector.h: To...
+        * include/std/algorithm: ...this.
+        * include/std/bitset: ...this.
+        * include/std/complex: ...this.
+        * include/std/deque: ...this.
+        * include/std/fstream: ...this.
+        * include/std/functional: ...this.
+        * include/std/iomanip: ...this.
+        * include/std/iosfwd: ...this.
+        * include/std/ios: ...this.
+        * include/std/iostream: ...this.
+        * include/std/istream: ...this.
+        * include/std/iterator: ...this.
+        * include/std/limits: ...this.
+        * include/std/list: ...this.
+        * include/std/locale: ...this.
+        * include/std/map: ...this.
+        * include/std/memory: ...this.
+        * include/std/numeric: ...this.
+        * include/std/ostream: ...this.
+        * include/std/queue: ...this.
+        * include/std/set: ...this.
+        * include/std/sstream: ...this.
+        * include/std/stack: ...this.
+        * include/std/stdexcept: ...this.
+        * include/std/streambuf: ...this.
+        * include/std/string: ...this.
+        * include/std/utility: ...this.
+        * include/std/valarray: ...this.
+        * include/std/vector: ...this.
+
+        * include/c_std/std_cassert.h: To...
+        * include/c_std/std_cctype.h: To...
+        * include/c_std/std_cerrno.h: To...
+        * include/c_std/std_cfloat.h: To...
+        * include/c_std/std_ciso646.h: To...
+        * include/c_std/std_climits.h: To...
+        * include/c_std/std_clocale.h: To...
+        * include/c_std/std_cmath.h: To...
+        * include/c_std/std_csetjmp.h: To...
+        * include/c_std/std_csignal.h: To...
+        * include/c_std/std_cstdarg.h: To...
+        * include/c_std/std_cstddef.h: To...
+        * include/c_std/std_cstdio.h: To...
+        * include/c_std/std_cstdlib.h: To...
+        * include/c_std/std_cstring.h: To...
+        * include/c_std/std_ctime.h: To...
+        * include/c_std/std_cwchar.h: To...
+        * include/c_std/std_cwctype.h: To...
+        * include/c_std/cassert: ...this.
+        * include/c_std/cctype: ...this.
+        * include/c_std/cerrno: ...this.
+        * include/c_std/cfloat: ...this.
+        * include/c_std/ciso646: ...this.
+        * include/c_std/climits: ...this.
+        * include/c_std/clocale: ...this.
+        * include/c_std/cmath: ...this.
+        * include/c_std/csetjmp: ...this.
+        * include/c_std/csignal: ...this.
+        * include/c_std/cstdarg: ...this.
+        * include/c_std/cstddef: ...this.
+        * include/c_std/cstdio: ...this.
+        * include/c_std/cstdlib: ...this.
+        * include/c_std/cstring: ...this.
+        * include/c_std/ctime: ...this.
+        * include/c_std/cwchar: ...this.
+        * include/c_std/cwctype: ...this.
+
+        * include/c/std_cassert.h: To...
+        * include/c/std_cctype.h: To...
+        * include/c/std_cerrno.h: To...
+        * include/c/std_cfloat.h: To...
+        * include/c/std_ciso646.h: To...
+        * include/c/std_climits.h: To...
+        * include/c/std_clocale.h: To...
+        * include/c/std_cmath.h: To...
+        * include/c/std_csetjmp.h: To...
+        * include/c/std_csignal.h: To...
+        * include/c/std_cstdarg.h: To...
+        * include/c/std_cstddef.h: To...
+        * include/c/std_cstdio.h: To...
+        * include/c/std_cstdlib.h: To...
+        * include/c/std_cstring.h: To...
+        * include/c/std_ctime.h: To...
+        * include/c/std_cwchar.h: To...
+        * include/c/std_cwctype.h: To...
+        * include/c/cassert: ...this.
+        * include/c/cctype: ...this.
+        * include/c/cerrno: ...this.
+        * include/c/cfloat: ...this.
+        * include/c/ciso646: ...this.
+        * include/c/climits: ...this.
+        * include/c/clocale: ...this.
+        * include/c/cmath: ...this.
+        * include/c/csetjmp: ...this.
+        * include/c/csignal: ...this.
+        * include/c/cstdarg: ...this.
+        * include/c/cstddef: ...this.
+        * include/c/cstdio: ...this.
+        * include/c/cstdlib: ...this.
+        * include/c/cstring: ...this.
+        * include/c/ctime: ...this.
+        * include/c/cwchar: ...this.
+        * include/c/cwctype: ...this.
+
+2006-12-05  Benjamin Kosnik  
+
+	* include/bits/localefwd.h: Consistent @file placement, use
+        include/ as part of the path for files that have shadows instead of no
+        name.
+	* include/bits/valarray_after.h: Same.
+	* include/bits/gslice_array.h: Same.
+	* include/bits/gslice.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/indirect_array.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/postypes.h: Same.
+	* include/bits/codecvt.h: Same.
+	* include/bits/mask_array.h: Same.
+	* include/bits/slice_array.h: Same.
+	* include/bits/boost_concept_check.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/stringfwd.h: Same.
+	* include/bits/c++config: Same.
+	* include/bits/valarray_array.h: Same.
+	* include/bits/valarray_before.h: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/c/std_cerrno.h: Same.
+	* include/precompiled/extc++.h: Same.
+	* include/precompiled/stdtr1c++.h: Same.
+	* include/precompiled/stdc++.h: Same.
+	* include/tr1/cinttypes: Same.
+	* include/tr1/fenv.h: Same.
+	* include/tr1/mu_iterate.h: Same.
+	* include/tr1/cstdio: Same.
+	* include/tr1/limits.h: Same.
+	* include/tr1/ctgmath: Same.
+	* include/tr1/cstdarg: Same.
+	* include/tr1/tuple: Same.
+	* include/tr1/float.h: Same.
+	* include/tr1/stdint.h: Same.
+	* include/tr1/tuple_iterate.h: Same.
+	* include/tr1/type_traits_fwd.h: Same.
+	* include/tr1/hashtable_policy.h: Same.
+	* include/tr1/cfenv: Same.
+	* include/tr1/wctype.h: Same.
+	* include/tr1/ref_fwd.h: Same.
+	* include/tr1/bind_repeat.h: Same.
+	* include/tr1/utility: Same.
+	* include/tr1/climits: Same.
+	* include/tr1/type_traits: Same.
+	* include/tr1/stdlib.h: Same.
+	* include/tr1/cwchar: Same.
+	* include/tr1/stdio.h: Same.
+	* include/tr1/ref_wrap_iterate.h: Same.
+	* include/tr1/cstdint: Same.
+	* include/tr1/memory: Same.
+	* include/tr1/cstdbool: Same.
+	* include/tr1/cwctype: Same.
+	* include/tr1/bind_iterate.h: Same.
+	* include/tr1/math.h: Same.
+	* include/tr1/random: Same.
+	* include/tr1/tuple_defs.h: Same.
+	* include/tr1/cstdlib: Same.
+	* include/tr1/unordered_map: Same.
+	* include/tr1/boost_shared_ptr.h: Same.
+	* include/tr1/cctype: Same.
+	* include/tr1/random.tcc: Same.
+	* include/tr1/wchar.h: Same.
+	* include/tr1/hashtable: Same.
+	* include/tr1/cmath: Same.
+	* include/tr1/stdbool.h: Same.
+	* include/tr1/ctime: Same.
+	* include/tr1/functional: Same.
+	* include/tr1/unordered_set: Same.
+	* include/tr1/inttypes.h: Same.
+	* include/tr1/functional_iterate.h: Same.
+	* include/tr1/repeat.h: Same.
+	* include/tr1/complex: Same.
+	* include/tr1/cfloat: Same.
+	* include/tr1/ctype.h: Same.
+	* include/tr1/stdarg.h: Same.
+	* include/tr1/tgmath.h: Same.
+	* include/tr1/array: Same.
+	* include/tr1/common.h: Same.
+	* include/std/std_valarray.h: Same.
+	* include/std/std_iostream.h: Same.
+	* include/std/std_queue.h: Same.
+	* include/std/std_algorithm.h: Same.
+	* include/std/std_streambuf.h: Same.
+	* include/std/std_iterator.h: Same.
+	* include/std/std_ios.h: Same.
+	* include/std/std_bitset.h: Same.
+	* include/std/std_iosfwd.h: Same.
+	* include/std/std_set.h: Same.
+	* include/std/std_iomanip.h: Same.
+	* include/std/std_fstream.h: Same.
+	* include/std/std_functional.h: Same.
+	* include/std/std_numeric.h: Same.
+	* include/std/std_vector.h: Same.
+	* include/std/std_deque.h: Same.
+	* include/std/std_stdexcept.h: Same.
+	* include/std/std_utility.h: Same.
+	* include/std/std_stack.h: Same.
+	* include/std/std_string.h: Same.
+	* include/std/std_complex.h: Same.
+	* include/std/std_memory.h: Same.
+	* include/std/std_ostream.h: Same.
+	* include/std/std_list.h: Same.
+	* include/std/std_map.h: Same.
+	* include/std/std_sstream.h: Same.
+	* include/c_std/std_csignal.h: Same.
+	* include/c_std/std_cstdlib.h: Same.
+	* include/c_std/std_cstdio.h: Same.
+	* include/c_std/std_cstdarg.h: Same.
+	* include/c_std/std_cctype.h: Same.
+	* include/c_std/std_cerrno.h: Same.
+	* include/c_std/std_cmath.h: Same.
+	* include/c_std/std_ctime.h: Same.
+	* include/c_std/std_clocale.h: Same.
+	* include/c_std/std_climits.h: Same.
+	* include/c_std/std_cassert.h: Same.
+	* include/c_std/cmath.tcc
+	* include/c_std/std_csetjmp.h: Same.
+	* include/c_std/std_cwchar.h: Same.
+	* include/c_std/std_cfloat.h: Same.
+	* include/c_std/std_cstring.h: Same.
+	* include/c_std/std_cstddef.h: Same.
+	* include/c_std/std_cwctype.h: Same.
+
+	* config/locale/gnu/c_locale.h: Namespace scope in all files.
+	* config/locale/gnu/messages_members.h: Same.
+	* config/locale/gnu/c++locale_internal.h: Same.
+	* config/locale/gnu/time_members.h: Same.
+	* config/locale/ieee_1003.1-2001/c_locale.h: Same.
+	* config/locale/ieee_1003.1-2001/messages_members.h: Same.
+	* config/locale/generic/c_locale.h: Same.
+	* config/locale/generic/messages_members.h: Same.
+	* config/locale/generic/time_members.h: Same.
+	* config/allocator/mt_allocator_base.h: Same.
+	* config/allocator/malloc_allocator_base.h: Same.
+	* config/allocator/new_allocator_base.h: Same.
+	* config/allocator/pool_allocator_base.h: Same.
+	* config/allocator/bitmap_allocator_base.h: Same.
+	* config/os/windiss/ctype_noninline.h: Same.
+	* config/os/windiss/os_defines.h: Same.
+	* config/os/windiss/ctype_inline.h: Same.
+	* config/os/newlib/ctype_noninline.h: Same.
+	* config/os/newlib/os_defines.h: Same.
+	* config/os/newlib/ctype_inline.h: Same.
+	* config/os/aix/ctype_noninline.h: Same.
+	* config/os/aix/os_defines.h: Same.
+	* config/os/aix/ctype_inline.h: Same.
+	* config/os/vxworks/ctype_noninline.h: Same.
+	* config/os/vxworks/os_defines.h: Same.
+	* config/os/vxworks/ctype_inline.h: Same.
+	* config/os/hpux/ctype_noninline.h: Same.
+	* config/os/hpux/os_defines.h: Same.
+	* config/os/hpux/ctype_inline.h: Same.
+	* config/os/mingw32/ctype_noninline.h: Same.
+	* config/os/mingw32/os_defines.h: Same.
+	* config/os/mingw32/ctype_inline.h: Same.
+	* config/os/gnu-linux/ctype_noninline.h: Same.
+	* config/os/gnu-linux/os_defines.h: Same.
+	* config/os/gnu-linux/ctype_inline.h: Same.
+	* config/os/tpf/ctype_noninline.h: Same.
+	* config/os/tpf/os_defines.h: Same.
+	* config/os/tpf/ctype_inline.h: Same.
+	* config/os/uclibc/ctype_noninline.h: Same.
+	* config/os/uclibc/os_defines.h: Same.
+	* config/os/uclibc/ctype_inline.h: Same.
+	* config/os/djgpp/ctype_noninline.h: Same.
+	* config/os/djgpp/os_defines.h: Same.
+	* config/os/djgpp/ctype_inline.h: Same.
+	* config/os/qnx/qnx6.1/ctype_noninline.h: Same.
+	* config/os/qnx/qnx6.1/ctype_inline.h: Same.
+	* config/os/bsd/netbsd/ctype_noninline.h: Same.
+	* config/os/bsd/netbsd/ctype_inline.h: Same.
+	* config/os/bsd/darwin/ctype_noninline.h: Same.
+	* config/os/bsd/darwin/ctype_inline.h: Same.
+	* config/os/bsd/freebsd/ctype_noninline.h: Same.
+	* config/os/bsd/freebsd/ctype_inline.h: Same.
+	* config/os/irix/irix5.2/ctype_noninline.h: Same.
+	* config/os/irix/irix5.2/ctype_inline.h: Same.
+	* config/os/irix/irix6.5/ctype_noninline.h: Same.
+	* config/os/irix/irix6.5/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.5/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.5/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.6/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.6/ctype_inline.h: Same.
+	* config/os/solaris/solaris2.7/ctype_noninline.h: Same.
+	* config/os/solaris/solaris2.7/ctype_inline.h: Same.
+	* config/os/generic/ctype_noninline.h: Same.
+	* config/os/generic/os_defines.h: Same.
+	* config/os/generic/ctype_inline.h: Same.
+	* config/cpu/arm/cxxabi_tweaks.h: Same.
+	* config/cpu/powerpc/cpu_defines.h: Same.
+	* config/cpu/generic/cxxabi_tweaks.h: Same.
+	* config/cpu/generic/cpu_defines.h: Same.
+	* config/cpu/generic/atomic_word.h: Same.
+	* config/io/c_io_stdio.h: Same.
+	* config/abi/compatibility.h: Same.
+
+	* docs/doxygen/user.cfg.in: Adjust file list.
+
+2006-12-05  Paolo Carlini  
+
+	DR 543, [Ready].
+	* include/bits/slice_array.h (slice::slice()): Implement the
+	resolution.
+	* include/bits/gslice.h (gslice::_Indexer::_Indexer()): Add.
+	(gslice::gslice()): Use it.
+	* testsuite/26_numerics/valarray/dr543.cc: New.
+	* docs/html/ext/howto.html: Add an entry for DR 543.
+
+2006-12-05  Benjamin Kosnik  
+
+	* include/tr1/tuple: Consistent include guards.
+	* include/tr1/type_traits: Same.
+	* include/tr1/array: Same.
+
+2006-12-04  Paolo Carlini  
+
+	PR libstdc++/29989 (again)
+	* include/bits/c++config: #undef min and max.
+	* testsuite/18_support/numeric_limits/29989.cc: New.
+
+2006-12-04  Eric Botcazou  
+
+	* configure: Regenerate.
+
+2006-12-03  Paolo Carlini  
+
+	PR libstdc++/29989
+	* include/bits/stl_algobase.h: Remove min and max #undefs.
+
+2006-12-02  Howard Hinnant  
+
+	* acinclude.m4: Allow OPTIMIZE_CXXFLAGS to be set by configure.host.
+	* configure.host: Set OPTIMIZE_CXXFLAGS to -fvisibility-inlines-hidden
+	for x86/darwin.
+	* configure: Regenerate.
+
+2006-12-01  Paolo Carlini  
+
+	* include/ext/mt_allocator.h (__pool_base::_M_get_align): Remove
+	redundant const qualifier on the return type.
+
+2006-11-29  Benjamin Kosnik  
+
+	* include/ext/throw_allocator.h: Consistent @file markup.
+	* include/ext/type_traits.h: Same.
+	* include/debug/hash_map: Same.
+	* include/debug/hash_multimap.h: Same.
+	* include/debug/set.h: Same.
+	* include/debug/hash_set.h: Same.
+	* include/debug/formatter.h: Same.
+	* include/debug/bitset: Same.
+	* include/debug/set: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/safe_sequence.h: Same.
+	* include/debug/hash_set: Same.
+	* include/debug/functions.h: Same.
+	* include/debug/safe_base.h: Same.
+	* include/debug/hash_multiset.h: Same.
+	* include/debug/safe_iterator.tcc: Same.
+	* include/debug/vector: Same.
+	* include/debug/map.h: Same.
+	* include/debug/deque: Same.
+	* include/debug/hash_map.h: Same.
+	* include/debug/string: Same.
+	* include/debug/macros.h: Same.
+	* include/debug/list: Same.
+	* include/debug/debug.h: Same.
+	* include/debug/map: Same.
+	* include/debug/safe_iterator.h: Same.
+	* include/debug/multimap.h: Same.
+	* config/cpu/generic/atomicity_mutex/atomicity.h: Same.
+	* config/cpu/generic/atomicity_builtins/atomicity.h: Same.
+	* config/cpu/generic/atomic_word.h: Same.
+	* include/tr1/memory: Same.
+	* include/tr1/random: Same.
+	* include/std/std_queue.h: Same.
+	* include/std/std_iterator.h: Same.
+	* include/std/std_bitset.h: Same.
+	* include/std/std_set.h: Same.
+	* include/std/std_vector.h: Same.
+	* include/std/std_deque.h: Same.
+	* include/std/std_utility.h: Same.
+	* include/std/std_stack.h: Same.
+	* include/std/std_string.h: Same.
+	* include/std/std_list.h: Same.
+	* include/std/std_map.h: Same.
+	* libsupc++/typeinfo: Same.
+	* libsupc++/exception: Same.
+	* libsupc++/exception_defines.h: Same.
+	* libsupc++/new: Same.
+
+	* include/ext/bitmap_allocator.h: Change namespace __balloc to
+	__detail.
+	* src/bitmap_allocator.cc: Same.
+
+	* include/bits/cpp_type_traits.h: Change __true_type and
+	__false_type from global to namespace std scope.
+	* include/ext/slist: Same.
+	* include/ext/vstring.h: Same.
+	* include/ext/vstring.tcc: Same.
+	* include/ext/rc_string_base.h: Same.
+	* include/ext/sso_string_base.h: Same.
+
+	* include/bits/codecvt.h: Adjust markup so that correct namespace
+	scope information is in all files.
+	* include/bits/locale_facets.h: Same. Include ctype_base directly.
+	* config/os/windiss/ctype_base.h: Add in namespace markup.
+	* config/os/newlib/ctype_base.h: Same.
+	* config/os/aix/ctype_base.h: Same.
+	* config/os/vxworks/ctype_base.h: Same.
+	* config/os/hpux/ctype_base.h: Same.
+	* config/os/mingw32/ctype_base.h: Same.
+	* config/os/gnu-linux/ctype_base.h: Same.
+	* config/os/tpf/ctype_base.h: Same.
+	* config/os/uclibc/ctype_base.h: Same.
+	* config/os/djgpp/ctype_base.h: Same.
+	* config/os/qnx/qnx6.1/ctype_base.h: Same.
+	* config/os/bsd/netbsd/ctype_base.h: Same.
+	* config/os/bsd/darwin/ctype_base.h: Same.
+	* config/os/bsd/freebsd/ctype_base.h: Same.
+	* config/os/irix/irix5.2/ctype_base.h: Same.
+	* config/os/irix/irix6.5/ctype_base.h: Same.
+	* config/os/solaris/solaris2.5/ctype_base.h: Same.
+	* config/os/solaris/solaris2.6/ctype_base.h: Same.
+	* config/os/solaris/solaris2.7/ctype_base.h: Same.
+	* config/os/generic/ctype_base.h: Same.
+	* include/tr1/mu_iterate.h: Same.
+	* include/tr1/tuple: Same.
+	* include/tr1/tuple_iterate.h: Same.
+	* include/tr1/tuple_defs.h: Same.
+	* include/tr1/random.tcc: Same.
+	* include/tr1/functional: Same.
+	* include/tr1/functional_iterate.h: Same.
+
+	* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Line
+	number changes.
+	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
+	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
+	* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
+
+	* docs/doxygen/user.cfg.in: Update to doxygen 1.5.1.
+	* docs/html/17_intro/license.html: Updated info for generated docs.
+	* docs/doxygen/guide.html: Adjust.
+	* docs/doxygen/run_doxygen: Adjust.
+	* docs/doxygen/mainpage.html: Same.
+	* docs/doxygen/doxygroups.cc: Same.
+	* docs/doxygen/Intro.3: Same.
+	* docs/doxygen/tables.html: Same.
+
+2006-11-26  Paolo Carlini  
+
+	PR libstdc++/29385 (2nd part, based on an idea by Ion Gaztanaga)
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_equal_range): Add.
+	(equal_range(const key_type&)): Use it.
+
+2006-11-26  Paolo Carlini  
+
+	* testsuite/23_containers/multiset/operations/1.cc: New.
+	* testsuite/23_containers/set/operations/1.cc: Likewise.
+	* testsuite/23_containers/multimap/operations/1.cc: Likewise.
+	* testsuite/23_containers/map/operations/1.cc: Likewise.
+
+2006-11-25  Paolo Carlini  
+
+	PR libstdc++/29385 (partial)
+	* include/bits/stl_tree.h (_Rb_tree<>::destroy_node): Uglify.
+	(_M_erase, erase(iterator), erase(const_iterator)): Adjust
+
+2006-11-25  Paolo Carlini  
+
+	PR libstdc++/29385 (partial)
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_lower_bound(_Const_Link_type,
+	_Const_Link_type, const _Key&), _M_upper_bound(_Const_Link_type,
+	_Const_Link_type, const _Key&)): Add.
+	(lower_bound(const key_type&), upper_bound(const key_type&),
+	find(const key_type&)): Call the latter.
+
+2006-11-25  Gawain Bolton  
+
+	PR libstdc++/29385 (partial)
+	* include/bits/stl_tree.h (_Rb_tree_rotate_left,
+	_Rb_tree_rotate_right): Do not declare.
+	(_Rb_tree<>::_M_insert(_Base_ptr, _Base_ptr, const value_type&),
+	_M_insert(_Const_Base_ptr, _Const_Base_ptr, const value_type&),
+	_M_insert_unique(iterator, const value_type&),
+	_M_insert_unique(const_iterator, const value_type&),
+	_M_insert_equal(iterator, const value_type&),
+	_M_insert_equal(const_iterator, const value_type&)):
+	Remove.
+	(_Rb_tree<>::_M_insert_(_Const_Base_ptr, _Const_Base_ptr,
+	const value_type&), _M_insert_unique_(const_iterator,
+	const value_type&), _M_insert_equal_(const_iterator,
+	const value_type&)): Add, adjust all callers.
+	* include/bits/stl_map.h (map<>::insert(iterator, const value_type&)):
+	Adjust.
+	* include/bits/stl_set.h (set<>::insert(iterator, const value_type&)):
+	Likewise.
+	* include/bits/stl_multimap.h (multimap<>::insert(iterator,
+	const value_type&)): Likewise.
+	* include/bits/stl_multiset.h (multiset<>::insert(iterator,
+	const value_type&)): Likewise.
+
+2006-11-22  Antony King 
+            J"orn Rennecke 
+
+	PR libstdc++/29920
+	* include/Makefile.am (stamp-host): Remove CCODECVT_H line.
+	* include/Makefile.in: Regenerate.
+
+2006-11-21  Benjamin Kosnik  
+
+	* include/ext/hashtable.h: -Wshadow fixes.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* src/mt_allocator.cc: Same.
+	* src/debug.cc: Same.
+	* config/locale/gnu/codecvt_members.cc: Same.
+
+2006-11-21  Benjamin Kosnik  
+	    Howard Hinnant  
+
+	* src/iostream-inst.cc: Remove iostream include.
+
+2006-11-19  Paolo Carlini  
+
+	* include/tr1/functional (hash(long long), hash(unsigned long long)):
+	Add specializations.
+
+2006-11-18  Joseph Myers  
+
+	* config/cpu/powerpc/atomic_word.h (_GLIBCXX_WRITE_MEM_BARRIER):
+	Use plain sync if __NO_LWSYNC__.
+
+2006-11-14  Joseph Myers  
+
+	* testsuite/26_numerics/complex/13450.cc: Do not test long double
+	in IBM long double case.
+
+2006-11-13  Daniel Jacobowitz  
+
+	* configure: Regenerated.
+
+2006-11-13  Joseph Myers  
+
+	* libsupc++/eh_globals.cc (__cxxabiv1::__cxa_get_globals):
+	Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.
+	* libsupc++/eh_personality.cc (empty_exception_spec): Define
+	separately in __ARM_EABI_UNWINDER__ case.
+
+2006-11-13  Joseph Myers  
+
+	* libsupc++/typeinfo (__GXX_TYPEINFO_EQUALITY_INLINE): Define.
+	Use instead of __GXX_MERGED_TYPEINFO_NAMES to condition inline
+	definitions.
+	* libsupc++/tinfo.cc (operator==): Condition on
+	__GXX_TYPEINFO_EQUALITY_INLINE; check __GXX_MERGED_TYPEINFO_NAMES
+	to determine algorithm.
+	* libsupc++/tinfo2.cc (type_info::before): Likewise.
+
+2006-11-12  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h: Uglify some names.
+	* include/ext/concurrence.h: Likewise.
+	* src/bitmap_allocator.cc: Likewise.
+
+2006-11-11  Paolo Carlini  
+
+	PR libstdc++/29496
+	* include/debug/safe_base.h (_Safe_sequence_base::_M_get_mutex,
+	_Safe_iterator_base::_M_get_mutex, _M_attach_single, _M_detach_single):
+	New.
+	* src/debug.cc: Define the latter.
+	(_Safe_sequence_base::_M_detach_all, _M_detach_singular,
+	_M_revalidate_singular, _M_swap): Use the mutex.
+	(_Safe_iterator_base::_M_attach, _M_detach): Adjust, forward to the
+	*_single version.
+	* include/debug/safe_iterator.h (_Safe_iterator<>::_M_attach_single,
+	_M_invalidate_single): New.
+ 	* include/debug/safe_iterator.tcc: Define.
+	(_Safe_iterator<>::_M_invalidate): Adjust, forward to
+	_M_invalidate_single.
+	* include/debug/safe_sequence.h (_Safe_sequence<>::_M_invalidate_if,
+	_M_transfer_iter): Use the mutex, adjust, forward to the *_single
+	versions of _M_invalidate and _M_attach.
+	* config/abi/pre/gnu.ver (_Safe_sequence_base::_M_get_mutex,
+	_Safe_iterator_base::_M_get_mutex, _M_attach_single, _M_detach_single):
+	Add @GLIBCXX_3.4.10; adjust.
+	* configure.ac (libtool_VERSION): To 6:10:0.
+	* testsuite/util/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.10.
+	* configure: Regenerate.
+
+2006-11-10  Jakub Jelinek  
+
+	* config/locale/gnu/c_locale.cc (__convert_to_v): Prefer
+	strtold_l over __strtold_l if available.
+
+2006-11-07  Benjamin Kosnik  
+
+	PR libstdc++/29722
+	* include/ext/concurrence.h (concurrence_lock_error): New.
+	(concurrence_unlock_error): New.
+	(__throw_concurrence_lock_error): New.
+	(__throw_concurrence_unlock_error): New.
+	(__mutex): Use functions.
+	(__recursive_mutex): Same.
+	* testsuite/abi/cxx_runtime_only_linkage.cc: New.
+
+	* include/ext/pb_ds/exception.hpp: Keep exception classes defined
+	even when -fno-exceptions is passed, consistent with other usage.
+
+2006-11-07  Benjamin Kosnik  
+
+	* include/ext/pb_ds/exception.hpp (pb_ds): Modify for -fno-exceptions.
+	(__throw_container_error): New. Conditionalize based on __EXCEPTIONS.
+	(__throw_insert_error): New.
+	(__throw_join_error): New.
+	(__throw_resize_error): New.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Use them.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_exponential_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
+	* include/ext/pb_ds/detail/pat_trie_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/exception.hpp: Same.
+	* src/functexcept.cc: Qualify abort with std.
+
+2006-11-07  Benjamin Kosnik  
+
+	* include/ext/pb_ds/exception.hpp: Add translation support to
+	exception strings.
+	* include/ext/concurrence.h: Same.
+	* include/tr1/array: Same.
+
+2006-11-05  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 45.
+	* docs/html/ext/lwg-closed.html: Add.
+	* docs/html/ext/howto.html: Adjust.
+
+2006-10-30  Paolo Carlini  
+
+	* include/tr1/utility (tuple_size >::value): Provide
+	definition.
+
+2006-10-30  Paolo Carlini  
+
+	* include/tr1/tuple_iterate.h (tuple_size >::value): Provide
+	definition.
+	* include/tr1/functional (is_bind_expression<>::value,
+	is_placeholder<>::value, + various partial specializations): Likewise.
+	* include/tr1/array (tuple_size >::value): Likewise.
+
+2006-10-30  Paolo Carlini  
+
+	* testsuite/tr1/6_containers/array/capacity/max_size.cc: Actually
+	do test max_size().
+
+2006-10-30  Joseph Myers  
+
+	* testsuite/config/default.exp (${tool}_target_compile): Use
+	v3_target_compile.
+
+2006-10-29  Paolo Carlini  
+
+	* src/debug.cc (_Safe_sequence_base::_M_revalidate_singular): Fix
+	pasto, advance __iter only once per iteration.
+
+2006-10-29  Paolo Carlini  
+
+	PR libstdc++/29520
+	* include/tr1/random (geometric_distribution<>::
+	operator()(_UniformRandomNumberGenerator&)): Only declare.
+	* include/tr1/random.tcc (geometric_distribution<>::
+	operator()(_UniformRandomNumberGenerator&),
+	poisson_distribution<>::operator()(_UniformRandomNumberGenerator&),
+	binomial_distribution<>::operator()(_UniformRandomNumberGenerator&)):
+	Reject candidate floating point values not convertible to the
+	result_type.
+
+2006-10-28  Paolo Carlini  
+
+	* include/tr1/array (array<>::_M_at): New.
+	(array<>::at): Fix off-by-one bug, use the above.
+	* testsuite/tr1/6_containers/array/element_access/
+	at_out_of_range.cc: Adjust.
+
+	* include/tr1/array (class array<>): Remove non-conforming default
+	for the second parameter.
+	* include/ext/array_allocator.h: Adjust.
+
+	* include/tr1/array (array<>::front, array<>::back): Do not return
+	a reference to memory not belonging to the array when _Nm == 0.
+
+2006-10-17  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (money_get<>::__do_get(iter_type,
+	iter_type, bool, ios_base&, ios_base::iostate&, double&),
+	money_get<>::do_get(iter_type, iter_type, bool, ios_base&,
+	ios_base::iostate&, long double&), money_get<>::do_get(iter_type,
+	iter_type, bool, ios_base&, ios_base::iostate&, string_type&)): Tidy.
+
+2006-10-17  Paolo Carlini  
+
+	PR libstdc++/26020
+	* include/bits/stl_iterator_base_funcs.h (advance): Convert
+	distance parameter to iterator_traits<>::difference_type.
+	* testsuite/24_iterators/26020.cc: New.
+
+2006-10-17  Benjamin Kosnik  
+
+	* include/tr1/random.tcc: Fixup long line.
+
+2006-10-17  Benjamin Kosnik  
+
+	PR libstdc++/28514
+	* include/bits/cpp_type_traits.h (__detail): Uglify namespace.
+	* include/ext/rope: Remove global-scope anonymous namespace, use
+	nested __detail. Fixup resulting formatting issues.
+	* include/ext/ropeimpl.h: Same.
+	* include/tr1/hashtable_policy.h: Remove anonymous namespace
+	nesting for __detail.
+	* include/tr1/random: Revert anonymous namespace to nested
+	__detail namespace.
+	* include/tr1/random.tcc: Same.
+	* src/ext-inst.cc: Fixups for above.
+
+2006-10-16  Douglas Gregor  
+
+	* include/Makefile.am (tr1_headers): Add new tuple_defs.h.
+	* include/Makefile.in (tr1_headers): Regenerate.
+	* include/tr1/tuple (tuple): Move declaration to tuple_defs.h.
+	(get): Ditto.
+	(operator==): Ditto.
+	(operator<): Ditto.
+	(operator!=): Ditto.
+	(operator>): Ditto.
+	(operator<=): Ditto.
+	(operator>=): Ditto.
+	(__stripped_tuple_type): Ditto.
+	Include tuple.defs.h
+	* include/tr1/tuple_iterate.h (tuple): Use
+	_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED macro instead of 10
+	"typename"s.
+	(tuple_element): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS and
+	_GLIBCXX_TYPLE_ALL_TEMPLATE_ARGS instead of 10
+	parameters/arguments.
+	* include/tr1/tuple_defs.h: New header, contains declarations and
+	definitions for the tuple template with all arguments.
+	* include/tr1/repeat.h (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS): New.
+	(_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED): New.
+	(_GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS): New.
+	(_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS): New.
+	(_GLIBCXX_TEMPLATE_ARGS_STRIPPED): New.
+	* scripts/gen_includers.pl: Update.
+	* scripts/gen_includers2.pl: New.
+
+2006-10-16  Benjamin Kosnik  
+
+	PR libstdc++/29095 continued
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): Additions
+	so that testing not in the build directory works for the "C"
+	target language.
+
+2006-10-16  Jakub Jelinek  
+
+	* include/bits/basic_string.tcc (_Rep::_S_create): Call
+	_M_set_sharable() for backwards compatibility.
+
+2006-10-15  Paolo Carlini  
+
+	* include/bits/istream.tcc (getline(basic_istream<>&,
+	basic_string<>&)): Move...
+	* include/bits/basic_string.h: ... here.
+	(operator<<(basic_ostream<>&, const basic_string<>&)): Mark inline.
+
+2006-10-15  Geoffrey Keating  
+
+	* scripts/make_exports.pl: Use -_ rather than --strip-underscores
+	or --strip-underscore.
+
+2006-10-14  Geoffrey Keating  
+
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate with released autoconf-2.59.
+
+2006-10-14  Paolo Carlini  
+
+	* docs/html/faq/index.html: Update.
+	* docs/html/faq/index.txt: Regenerate.
+
+2006-10-14  Paolo Carlini  
+
+	* include/bits/ostream.tcc (operator<<(basic_ostream<>&,
+	const char*)): Further fix for throwing widen.
+
+2006-10-14  Paolo Carlini  
+
+	* include/bits/ostream.tcc (operator<<(basic_ostream<>&,
+	const char*)): Fix thinko in change for libstdc++/28277,
+	avoid memory leaks.
+
+2006-10-13  Paolo Carlini  
+
+	* include/bits/istream.tcc (operator>>(__istream_type&
+	(*)(__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)),
+	operator>>(ios_base& (*)(ios_base&))): Move...
+	* include/std/std_istream.h: ... here.
+	(operator>>(basic_istream&, unsigned char&),
+	operator>>(basic_istream&, signed char&),
+	operator>>(basic_istream&, unsigned char*),
+	operator>>(basic_istream&, signed char*)): Mark inline.
+	* include/bits/ostream.tcc (operator<<(__ostream_type&
+	(*)(__ostream_type&)), operator<<(__ios_type& (*)(__ios_type&)),
+	operator<<(ios_base& (*)(ios_base&))): Move...
+	* include/std/std_ostream.h: ... here.
+	(operator<<(basic_ostream<>&, _CharT),
+	operator<<(basic_ostream<>&, char),
+	operator<<(basic_ostream&, char),
+	operator<<(basic_ostream&, signed char),
+	operator<<(basic_ostream&, unsigned char),
+	operator<<(basic_ostream<>&, const _CharT*),
+	operator<<(basic_ostream&, const char*),
+	operator<<(basic_ostream&, const signed char*),
+	operator<<(basic_ostream&, const unsigned char*),
+	endl(basic_ostream<>&), ends(basic_ostream<>&),
+	flush(basic_ostream<>&)): Mark inline.
+
+2006-10-13  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: ostream bits 2)
+	* include/std/std_ostream.h (basic_ostream<>::_M_insert(const
+	char_type*, streamsize)): New.
+	(basic_ostream<>::_M_write(char_type, streamsize)): Likewise.
+	(operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&,
+	char), operator<<(basic_ostream<>&, const _CharT*),
+	operator<<(basic_ostream<>&, const char*)): Use the latter.
+	* include/bits/ostream.tcc (basic_ostream<>::_M_insert(const
+	char_type*, streamsize)): Define.
+	(operator<<(basic_ostream<>&, const char*)): Use the latter.
+	(operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&,
+	char), operator<<(basic_ostream<>&, const _CharT*),
+	operator<<(basic_ostream<>&, const char*),
+	operator<<(basic_ostream<>&, const basic_string<>&)): Remove.
+	* include/bits/basic_string.h (operator<<(basic_ostream<>&,
+	const basic_string<>&)): Use the latter, implement DR 586.
+	* config/abi/pre/gnu.ver: Adjust, export the new _M_insert.
+	* docs/html/ext/howto.html: Add an entry for DR 586.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/
+	28277.cc: New.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/
+	28277.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/
+	28277-3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/
+	28277-4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-4.cc: Likewise.
+
+2006-10-11  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 44.
+
+2006-10-11  Benjamin Kosnik  
+
+	PR libstdc++/29426
+	* libsupc++/guard.cc (get_static_mutex): New.
+	(mutex_wrapper::mutex_wrapper): Use it to get properly initialized
+	recursive mutex without ordering issues.
+
+	* src/locale_init.cc (__get_locale_mutex): No need to
+	uglify. Change to get_locale_mutex.
+
+2006-10-11  Paolo Carlini  
+
+	* testsuite/22_locale/num_put/put/char/11.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/11.cc: Likewise.
+
+2006-10-10  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Link
+	libtestc++.a, not a bunch of object files.
+
+2006-10-09  Benjamin Kosnik  
+
+	PR libstdc++/29118
+	* src/locale_init.cc (__get_locale_mutex): New.
+	(locale::locale): Use it.
+	(locale::global): Use it.
+
+2006-10-09  Benjamin Kosnik  
+
+	PR libstdc++/29095
+	* libsupc++/cxxabi.h (__cxa_cdtor_type): Explicit "C" linkage.
+	* config/cpu/arm/cxxabi_tweaks.h: Same.
+	* config/cpu/generic/cxxabi_tweaks.h: Same.
+	* testsuite/abi: Add.
+	* testsuite/abi/header_cxxabi.cc: New.
+	* testsuite/demangle: Move...
+	* testsuite/abi/demangle: ...here.
+	* testsuite/libstdc++-dg/conformance.exp: Adjust testsuite file
+	calculation.
+	* scripts/create_testsuite_files: Same.
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): New.
+	(libstdc++-dg-test): Use it.
+
+2006-10-09  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: __add_grouping)
+	* include/bits/locale_facets.tcc (__add_grouping<>(_CharT*, _CharT,
+	const char*, size_t, const _CharT*, const _CharT*)): Rewrite in
+	non-recursive form.
+
+2006-10-09  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: money_put bits)
+	* include/bits/locale_facets.tcc (money_put<>::_M_insert(iter_type,
+	ios_base&, char_type, const string_type&)): Avoid __builtin_alloca
+	with no limit, do the work in place.
+
+	* include/bits/locale_facets.tcc (money_put<>::do_put(iter_type,
+	bool, ios_base&, char_type, long double)): Avoid unnecessary
+	__builtin_alloca, do the work in place.
+
+2006-10-09  Benjamin Kosnik  
+
+	* src/globals_io.cc (_GLIBCXX_once): Remove, unused.
+	(_GLIBCXX_mutex): Same.
+	(_GLIBCXX_mutex_addres): Same.
+	(_GLIBCXX_mutex_init): Same.
+	(_GLIBCXX_mutex_address_init): Same.
+
+2006-10-07  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: money_get bits)
+	* include/bits/locale_facets.tcc (money_get<>::do_get(iter_type,
+	iter_type, bool, ios_base&, ios_base::iostate&, string_type&)):
+	Avoid __builtin_alloca with no limit, do the work in place.
+
+2006-10-07  Ion Gaztanaga  
+	    Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::erase(const _Key&)): Don't
+	call std::distance unnecessarily.
+
+2006-10-06  Paolo Carlini  
+
+	PR libstdc++/29368
+	* include/bits/basic_string.h: Adjust rfind documentation.
+	* include/ext/vstring.h: Likewise.
+
+2006-10-06  Paolo Carlini  
+
+	PR libstdc++/29354
+	* include/bits/sstream.tcc (basic_stringbuf<>::seekpos(pos_type,
+	ios_base::openmode)): Allow for seek to pos_type(off_type(0))
+	when the stream is empty.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc: New.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc: New.
+
+2006-10-04  Benjamin Kosnik  
+	    Mike Stump  
+
+	* testsuite/27_io/ios_base/storage/2.cc: Fail on Darwin 8.[0-4].* only.
+	* testsuite/23_containers/vector/resize/1.cc: Same.
+
+2006-10-04  Benjamin Kosnik  
+
+	* testsuite/util/performance/priority_queue/mem_usage/
+	pop_test.hpp: Correct typo.
+	* testsuite/util/performance/assoc/mem_usage/
+	multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp: Same.
+
+2006-10-03  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_allocator.h (allocation_tracker): To
+	tracker_allocator_counter.
+	(allocation_tracker::allocationTotal): To get_allocation_count.
+	(allocation_tracker::deallocationTotal): To get_deallocation_count.
+	(allocation_tracker::constructCount): To get_construct_count.
+	(allocation_tracker::destructCount): To get_destruct_count.
+	(allocation_tracker::resetCounts): To reset.
+	(tracker_alloc): To tracker_allocator.
+	* testsuite/util/performance/mem: Remove.
+	* testsuite/util/performance/mem/mem_track_allocator_base.hpp: Remove.
+	* testsuite/util/performance/mem/mem_track_allocator.hpp: Remove.
+	* testsuite/27_io/basic_stringbuf/4.cc: Adjust for new names
+	or includes.
+	* testsuite/ext/hash_set/check_construct_destroy.cc: Same.
+	* testsuite/ext/slist/check_construct_destroy.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	hash_random_int_erase_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_pop_mem_usage.cc: Same.
+	* testsuite/23_containers/vector/capacity/2.cc: Same.
+	* testsuite/23_containers/vector/cons/4.cc: Same.
+	* testsuite/23_containers/vector/check_construct_destroy.cc: Same.
+	* testsuite/23_containers/deque/cons/2.cc: Same.
+	* testsuite/23_containers/deque/check_construct_destroy.cc: Same.
+	* testsuite/23_containers/list/check_construct_destroy.cc: Same.
+	* testsuite/23_containers/set/check_construct_destroy.cc: Same.
+	* testsuite/util/testsuite_allocator.h
+	* testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
+	* testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp
+	* testsuite/util/testsuite_allocator.cc: Same.
+
+2006-10-03  Benjamin Kosnik  
+
+	* testsuite/util/native_type/priority_queue/native_pq_tag.hpp: Remove.
+	* testsuite/util/statistic/sample_var.hpp: Rename to...
+	* testsuite/util/statistic/sample_variance.hpp: ... this.
+	* testsuite/util/statistic/res_recorder.hpp: Rename to...
+	* testsuite/util/statistic/result_recorder.hpp: ... this.
+	* testsuite/util/statistic/sample_mean.hpp: Format.
+	* testsuite/util/statistic/sample_mean_confidence_checker.hpp: Same.
+	* testsuite/util/regression/trait/priority_queue/trait.hpp: Same.
+	* testsuite/util/regression/trait/erase_if_fn.hpp: Same.
+	* testsuite/util/regression/trait/assoc/trait.hpp: Same.
+	* testsuite/util/native_type/priority_queue/
+	native_priority_queue.hpp: Same.
+	* testsuite/util/native_type/assoc/native_tree_tag.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_tag.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/join_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/
+	modify_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	subscript_insert_test.hpp: Same.
+	* testsuite/util/performance/time/timing_test_base.hpp: Same.
+
+2006-10-02  Paolo Carlini  
+
+	* include/ext/rc_string_base.h (_M_compare):
+	Protect with _GLIBCXX_USE_WCHAR_T.
+	* include/ext/sso_string_base.h (_M_compare):
+	Likewise.
+	(__sso_string_base<>::_M_destroy): Inline.
+
+2006-10-02  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/basic_types.hpp (comp_hash_): Remove,
+	format.
+	* include/ext/pb_ds/detail/types_traits.hpp
+	(types_traits::comp_hash): Use pair typedef.
+	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
+
+2006-10-01  Paolo Carlini  
+
+	* include/tr1/random (xor_combine<>::_M_initialize_max_aux): New.
+	(xor_combine<>::operator()()): Tweak per N2079.
+	* include/tr1/random.tcc (xor_combine<>::_M_initialize_max_aux):
+	Define.
+	(xor_combine<>::_M_initialize_max): Use it.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	cons/default.cc: Adjust.
+	* docs/html/ext/tr1.html: Adjust.
+
+2006-10-01  Paolo Carlini  
+
+	* include/ext/type_traits.h: Avoid _T, badname for some targets;
+	also avoid plain T.
+
+2006-10-01  Paolo Carlini  
+
+	* config/io/basic_file_stdio.cc: As an extension, and
+	consistently with C facilities, allow for in|out|app and
+	in|out|app|binary openmodes.
+	* testsuite/27_io/basic_filebuf/open/char/4.cc: New.
+
+2006-09-30  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/types_traits.hpp (store_extra_false_type):
+	To false_type.
+	(store_extra_true_type): To true_type.
+	(no_throw_copies_true_type): To true_type.
+	(no_throw_copies_false_type): To false_type.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	entry_list_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	find_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+
+2006-09-29  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Formating fixes.
+	* include/ext/pb_ds/detail/basic_tree_policy/
+	null_node_metadata.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/basic_types.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/
+	mtf_lu_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/
+	counter_lu_metadata.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/
+	sample_update_policy.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/
+	counter_lu_policy_imp.hpp: Same.
+	* include/ext/pb_ds/list_update_policy.hpp: Same.
+
+2006-09-29  Benjamin Kosnik  
+            Howard Hinnant  
+            Paolo Carlini  
+
+	* include/ext/type_traits.h (__remove_unsigned): Fix up for signed
+	char, bool, wchar_t, and floating point types.
+	(__add_unsigned): Same.
+	* testsuite/ext/type_traits: New.
+	* testsuite/ext/type_traits.cc: Move...
+	* testsuite/ext/type_traits/numeric_traits.cc: ...here.
+	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: New.
+	* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: New.
+	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: New.
+	* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: New.
+	* testsuite/ext/type_traits/add_unsigned.cc: New.
+	* testsuite/ext/type_traits/remove_unsigned.cc: New.
+
+2006-09-29  Joseph S. Myers  
+
+	* acinclude.m4 (enable_symvers): Default to no if unable to link.
+	* configure: Regenerate.
+
+2006-09-28  Paolo Carlini  
+
+	* include/bits/stl_uninitialized.h
+	(__uninitialized_fill_n_a(_ForwardIterator, _Size, const _Tp&,
+	allocator<>)): Inline.
+
+2006-09-28  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Formatting fixes.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	entry_list_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	find_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	cond_key_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/head.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	iterator_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	find_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	find_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/
+	policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/node.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/
+	entry_metadata_base.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/
+	iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Same.
+
+2006-09-28  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h: Use __atomic_add_dispatch and
+	__exchange_and_add_dispatch everywhere.
+
+2006-09-27  Benjamin Kosnik  
+
+	* include/ext/typelist.h (type_to_type): Remove.
+	* include/ext/throw_allocator.h (assert_allocatod): Remove.
+	(check_allocated(label)): New.
+	(print_to_string): Print numerical output correctly.
+
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Adjust line numbers.
+
+	* testsuite/util/regression/rand/priority_queue/detail/
+	operator_fn_imps.hpp: Set and clear label, throw
+        probability. Check only allocations of the marked label.
+	* testsuite/util/regression/rand/assoc/detail/
+	operator_fn_imps.hpp: Same.
+
+	* testsuite/performance/ext/pb_ds/text_find_timing.cc: Adjustments for
+        removal of type_to_type.
+	* testsuite/performance/ext/pb_ds/
+	hash_random_int_erase_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	random_int_subscript_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/random_int_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	multimap_text_insert_mem_usage.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_modify_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	tree_order_statistics_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	random_int_subscript_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	multimap_text_insert_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_pop_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	hash_zlob_random_int_find_timing.cc: Same.
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	constructor_destructor_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/insert_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/assoc/common_type.hpp: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+	* testsuite/util/common_type/assoc/common_type.hpp: Same.
+	* testsuite/util/common_type/assoc/string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/template_policy.hpp: Same.
+	* testsuite/util/common_type/assoc/native_set.hpp: Same.
+	* testsuite/util/performance/priority_queue/mem_usage/
+	pop_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/
+	push_pop_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/join_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/push_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/
+	modify_test.hpp: Same.
+	* testsuite/util/performance/assoc/mem_usage/
+	multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	subscript_find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	subscript_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	tree_order_statistics_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	tree_split_join_test.hpp: Same.
+	* testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
+	* testsuite/util/testsuite_common_types.h: Same.
+
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Typedef
+        normalization, consistency in member names between cc and gp hash
+        tables, formatting fixes.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+
+	* include/ext/pb_ds/assoc_container.hpp: Formatting fixes.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/types_traits.hpp: Same.
+	* include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/
+	direct_mod_range_hashing_imp.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/
+	direct_mask_range_hashing_imp.hpp: Same.
+
+2006-09-27  Paolo Carlini  
+
+	PR libstdc++/29217
+	* src/localename.cc (locale::_Impl::_M_replace_categories)):
+	Compensate for the inconsistent numerical encodings of the
+	collate and time categories vs the corresponding names.
+	* testsuite/22_locale/locale/cons/29217.cc: New.
+
+	* testsuite/22_locale/locale/cons/2.cc: Enable and split
+	out the few ENC_TRAITS bits to...
+	* testsuite/22_locale/locale/cons/unicode/1.cc... here.
+
+2006-09-25  Howard Hinnant  
+
+	PR libstdc++/29224
+	* include/tr1/functional_iterate.h: Avoid -Wshadow warnings.
+
+2006-09-25  Paolo Carlini  
+
+	PR libstdc++/29179
+	* include/ext/mt_allocator.h (__pool_base): Adjust/extend
+	documentation in comments.
+
+2006-09-24  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h (shared_ptr<>::shared_ptr(const
+	__shared_ptr<>&), shared_ptr(const __weak_ptr<>&),
+	shared_ptr(const __shared_ptr<>&, __static_cast_tag),
+	shared_ptr(const __shared_ptr<>&, __const_cast_tag),
+	shared_ptr(const __shared_ptr<>&, __dynamic_cast_tag),
+	weak_ptr<>::weak_ptr(const __shared_ptr<>&), weak_ptr(const
+	__weak_ptr<>&)): Remove.
+	(shared_ptr<>::shared_ptr(const shared_ptr<>&),
+	shared_ptr(const weak_ptr<>&), shared_ptr(const shared_ptr<>&,
+	__static_cast_tag), shared_ptr(const shared_ptr<>&,
+	__const_cast_tag), shared_ptr(const shared_ptr<>&,
+	__dynamic_cast_tag), static_pointer_cast(const shared_ptr<>&),
+	const_pointer_cast(const shared_ptr<>&), dynamic_pointer_cast(const
+	shared_ptr<>&), weak_ptr<>::weak_ptr(const shared_ptr<>&),
+	weak_ptr(const weak_ptr<>&), weak_ptr<>::lock(),
+	__enable_shared_from_this_helper(const __shared_count<>&, const
+	enable_shared_from_this<>*, const _Tp2*)): Add.
+	(class enable_shared_from_this): Add.
+	* testsuite/tr1/2_general_utilities/memory/enable_shared_from_this/
+	1.cc: New.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/casts/1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/memory/weak_ptr/lock/1.cc:
+	Likewise.
+
+	* include/tr1/boost_shared_ptr.h: Further formatting and
+	uglification fixes.
+
+2006-09-22  Paolo Carlini  
+
+	PR libstdc++/29134 (vector bits)
+	* include/bits/stl_bvector.h (vector::max_size):
+	Use allocator' max_size.
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: New.
+
+	* testsuite/23_containers/deque/capacity/29134-2.cc: Minor tweak.
+	* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.
+
+2006-09-22  Paolo Carlini  
+
+	* include/tr1/type_traits (add_reference): Robustify vs
+	reference to void.
+	* testsuite/tr1/4_metaprogramming/reference_modifications/
+	add_reference.cc: Add test.
+
+	* include/tr1/memory: include .
+	* include/tr1/boost_shared_ptr.h (__shared_ptr<>::operator*):
+	Use add_reference instead.
+	* testsuite/tr1/2_general_utilities/memory/enable_shared_from_this/
+	explicit_instantiation/1.cc: New.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/
+	explicit_instantiation/1.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/memory/weak_ptr/
+	explicit_instantiation/1.cc: Likewise.
+
+	* testsuite/util/testsuite_tr1.h: Tweak; avoid empty enum.
+
+	* include/tr1/type_traits_fwd.h: Spelling fix.
+
+	* include/tr1/boost_shared_ptr.h: Obvious stylistic fixes.
+
+2006-09-22  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h: Trivial formatting fixes.
+
+2006-09-21  Benjamin Kosnik  
+
+	* include/ext/type_traits.h (__numeric_traits_integer): New.
+	(__numeric_traits_floating): New.
+	(__numeric_traits): Use them.
+	* testsuite/ext/type_traits.cc: New.
+
+2006-09-21  Paolo Carlini  
+
+	* include/ext/hash_map: Remove forward declaration of equality
+	operator, not needed for friendship of all its instances.
+	* include/ext/hash_set: Likewise.
+	* include/bits/stl_set.h: Likewise for equality operator and
+	operator less.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_queue.h: Likewise.
+	* include/bits/stl_stack.h: Likewise.
+	* include/bits/streambuf_iterator.h: Likewise for copy.
+	* include/std/std_streambuf.h: Likewise for __copy_aux and find.
+	* include/tr1/boost_shared_ptr.h: Likewise for get_deleter.
+	* include/tr1/random: Likewise, remove all forward declarations
+	of inserters and extractors.
+
+2006-09-21  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_max_size(),
+	_M_destroy, _M_create): Use _M_get_allocator.
+
+2006-09-21  Ben Elliston  
+
+	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Remove invocations of
+	GLIBCXX_CHECK_COMPILER_FEATURES.
+	* configure.ac: Always invoke GLIBCXX_CHECK_COMPILER_FEATURES.
+	Remove invocations elsewhere.
+	* configure: Regenerate.
+
+2006-09-21  Paolo Carlini  
+
+	PR libstdc++/29134 (ext/vstring bits)
+	* include/ext/sso_string_base.h (__sso_string_base<>::_S_max_size):
+	Remove.
+	(__sso_string_base<>::_M_max_size): Use allocator' max_size.
+	(__sso_string_base<>::_M_create): Adjust.
+	* include/ext/vstring.h: Minor comment tweak.
+	* testsuite/ext/vstring/capacity/29134.cc: New.
+
+2006-09-20  Paolo Carlini  
+
+	PR libstdc++/29134
+	* include/bits/stl_list.h (list<>::max_size): Forward to allocator'
+	max_size.
+	* include/bits/stl_vector.h (vector<>::max_size): Likewise.
+	* include/bits/stl_deque.h (deque<>::max_size): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree<>::max_size): Likewise.
+	* include/tr1/hashtable (_Hashtable<>::max_size): Likewise.
+	* testsuite/23_containers/vector/capacity/29134.cc: Add.
+	* testsuite/23_containers/deque/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/list/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/set/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/map/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/capacity/29134-set.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/capacity/29134-map.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/capacity/29134-multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered/capacity/29134-multimap.cc:
+	Likewise.
+
+	* include/bits/deque.tcc (deque<>::_M_new_elements_at_front,
+	deque<>::_M_new_elements_at_back): Check for length errors.
+	* testsuite/23_containers/deque/capacity/29134-2.cc: New.
+	* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.
+
+	* include/tr1/hashtable (_Hashtable<>::_M_get_Value_allocator): Add.
+	(_Hashtable<>::_M_allocate_node, _M_deallocate_node): Use it.
+	* testsuite/tr1/6_containers/unordered/instantiate/set.cc: Add test.
+	* testsuite/tr1/6_containers/unordered/instantiate/map.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered/instantiate/multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered/instantiate/multimap.cc:
+	Likewise.
+
+2006-09-20  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/
+	typelist_assoc_container.hpp: Remove, unused.
+	* include/ext/pb_ds/detail/typelist/
+	typelist_assoc_container_find.hpp: Same.
+	* include/ext/pb_ds/detail/typelist: Remove.
+	* include/ext/pb_ds/detail/typelist.hpp: Merge...
+	* include/ext/pb_ds/detail/typelist/typelist_flatten.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_contains.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_typelist_append.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_apply.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_filter.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_append.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_at_index.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_transform.hpp: Same.
+	* include/ext/typelist.h: ... into this.
+	* include/Makefile.am: Subtractions.
+	* include/Makefile.in: Regenerate.
+
+	* include/ext/pb_ds/assoc_container.hpp: Fixups for new includes,
+	namespaces, and names.
+	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	cc_hash_max_collision_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	sample_resize_policy.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	sample_resize_trigger.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_exponential_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_size_base.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Same.
+	* testsuite/performance/ext/pb_ds/text_find_timing.cc
+	* testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc
+	* testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc
+	* testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc
+	* testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc
+	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc
+	* testsuite/performance/ext/pb_ds/random_int_find_timing.cc
+	* testsuite/performance/ext/pb_ds/
+	multimap_text_insert_mem_usage.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_timing.cc
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_modify_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_push_pop_timing.cc
+	* testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_pop_timing.cc
+	* testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc
+	* testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc
+	* testsuite/performance/ext/pb_ds/
+	multimap_text_insert_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc
+	* testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc
+	* testsuite/performance/23_containers/find/map.cc
+	* testsuite/performance/23_containers/create/map.cc
+	* testsuite/performance/23_containers/insert_erase/associative.cc
+	* testsuite/performance/23_containers/insert/sequence.cc
+	* testsuite/performance/23_containers/insert/associative.cc
+	* testsuite/performance/23_containers/create_from_sorted/set.cc
+	* testsuite/performance/23_containers/index/map.cc
+	* testsuite/performance/23_containers/insert_from_sorted/set.cc
+	* testsuite/performance/23_containers/create_sort/list.cc
+	* testsuite/performance/23_containers/sort_search/list.cc
+	* testsuite/performance/23_containers/producer_consumer/sequence.cc
+	* testsuite/performance/23_containers/producer_consumer/associative.cc
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
+	* testsuite/util/regression/assoc/common_type.hpp: Same.
+	* testsuite/util/native_type/assoc/native_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_tree_tag.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_set.hpp: Same.
+	* testsuite/util/native_type/assoc/native_map.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_set.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: Same.
+	* testsuite/util/common_type/priority_queue/common_type.hpp: Same.
+	* testsuite/util/common_type/assoc/common_type.hpp: Same.
+	* testsuite/util/common_type/assoc/string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/template_policy.hpp: Same.
+	* testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
+	Same.
+	* testsuite/util/performance/priority_queue/timing/push_pop_test.hpp:
+	Same.
+	* testsuite/util/performance/priority_queue/timing/join_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/push_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/modify_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/common_type.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_insert_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/timing/subscript_find_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/timing/find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/subscript_insert_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/timing/insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	tree_order_statistics_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/tree_split_join_test.hpp:
+	Same.
+	* testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
+
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Fixup line numbers.
+
+2006-09-19  Paolo Carlini  
+
+	* include/tr1/hashtable_policy.h: Uglify all the names.
+	* include/tr1/hashtable: Likewise.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+	* include/tr1/functional: Uglify struct hash names.
+	* include/tr1/cmath: Uglify namespace detail to __detail.
+
+2006-09-18  Benjamin Kosnik  
+
+	* testsuite/util/regression/res_mng: Remove.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator_base.cc: Merge..
+	* testsuite/util/regression/res_mng/forced_exception.hpp: Merge...
+	* testsuite/util/regression/res_mng/dbg_ex_allocator_base.hpp: Merge..
+	* testsuite/util/regression/res_mng/dbg_ex_allocator.hpp: Merge..
+	* testsuite/util/testsuite_allocator.h (throw_allocator): Merge...
+	* include/ext/throw_allocator.h (throw_allocator): ... into this.
+	* src/throw_allocator.cc: ...and this.
+	* include/Makefile.am (ext_headers): Add.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.am (sources): New.
+	* src/Makefile.in: Regenerate.
+	* testsuite/lib/libstdc++.exp: Subtract dbg_ex_allocator_base.cc.
+
+	* include/ext/pb_ds/detail/map_debug_base.hpp: Adjust
+	includes, names, and namespaces.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	erase_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	constructor_destructor_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	insert_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	modify_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	split_join_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	subscript_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/erase_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	constructor_destructor_fn_imps.hpp
+	* testsuite/util/regression/rand/assoc/detail/insert_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	split_join_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/priority_queue/common_type.hpp: Same.
+	* testsuite/util/regression/assoc/common_type.hpp: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+	* testsuite/util/rng/twister_rand_gen.cc: Tweak.
+
+2006-09-18  Tom Tromey  
+
+	* configure: Rebuilt.
+
+2006-09-18  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (_M_group_int): Remove
+	redundant using-declaration.
+
+2006-09-18  Benjamin Kosnik  
+
+	* include/ext/typelist.h (cond_type): Remove, use __conditional_type.
+
+2006-09-18  Benjamin Kosnik  
+	    Peter Doerfler  
+	    Paolo Carlini  
+
+	* include/ext/type_traits.h: New.
+	(__conditional_type): New.
+	(__numeric_traits): New.
+	(__add_unsigned): New.
+	(__remove_unsigned): New.
+	(__enable_if): New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* include/ext/pb_ds/detail/type_utils.hpp: Use ext include,
+	remove duplicates.
+	* include/tr1/hashtable_policy.h (IF): Use __conditional_type.
+	(_Max_digits10): Same.
+	(identity): Use _Identity.
+	(extract1st): Use _Select1st.
+	* include/tr1/random (_Select): Use __conditional_type.
+	(_To_Unsigned_Type): Use __add_unsigned. Linebreak fixups.
+	* include/bits/locale_facets.tcc (__to_unsigned_type): Remove, use
+	__add_unsigned.
+	* include/tr1/random.tcc: Fixups as above.
+	* include/tr1/unordered_map: Same.
+	* include/tr1/hashtable: Same.
+	* include/tr1/unordered_set: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	standard_policies.hpp: Same.
+	* include/ext/pb_ds/detail/standard_policies.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_filter.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/type_utils.hpp: Same.
+	* include/ext/pb_ds/trie_policy.hpp: Same.
+	* docs/html/ext/pb_ds/string_trie_e_access_traits.html: Same.
+
+	* include/bits/cpp_type_traits.h (__enable_if): Move to ext, make
+	boolean argument first.
+	* include/bits/locale_facets.h: Fixups for __enable_if argument
+	and namespace switch.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/streambuf_iterator.h: Same.
+	* include/debug/safe_iterator.h: Same.
+	* include/tr1/hashtable_policy.h: Same.
+	* include/tr1/cmath: Same.
+	* include/tr1/functional: Same.
+	* include/tr1/functional_iterate.h: Same.
+	* include/std/std_streambuf.h: Same.
+	* include/c_std/std_cmath.h: Same.
+	* testsuite/util/testsuite_tr1.h: Same.
+	* testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
+
+2006-09-18  Paolo Carlini  
+
+	PR libstdc++/29063
+	* include/bits/valarray_array.h: Fix typo, undefine
+	_DEFINE_ARRAY_FUNCTION.
+	* include/std/std_valarray.h: Undefine _DEFINE_BINARY_OPERATOR.
+
+2006-09-14  Benjamin Kosnik  
+
+	* include/bits/concurrence.h (__mutex::__mutex): Pass address of
+	mutex to *_MUTEX_INIT_FUNCTION.
+
+2006-09-13  Benjamin Kosnik  
+
+	* include/bits/atomicity.h: Move to...
+	* include/ext/atomicity.h: ...here.
+	* include/bits/concurrence.h: Move to...
+	* include/ext/concurrence.h: ...here.
+	* include/Makefile.am (ext_headers): Additions.
+	(bits_headers): Subtractions.
+	* include/Makefile.in: Regenerate.
+
+	* include/ext/bitmap_allocator.h (_Mutex), __threads_enabled,
+	_Lock, _Auto_Lock): Subsume into...
+	* include/bits/concurrence.h (__mutex): ..this. Error check
+	locking and unlocking.
+	(lock): Uglify to...
+	(__scoped_lock): Use __mutex.
+	(__glibcxx_mutex_define_initialized): Remove.
+	(__glibcxx_mutex_type): Remove.
+
+	* include/tr1/boost_shared_ptr.h: Formating tweaks, adjustments.
+	(_Lock_policy): Move from here...
+	* include/ext/concurrence.h: ... to here.
+	(__shared_ptr_default_lock_mode): To __default_lock_policy.
+	(_S_lockfree): To _S_atomic.
+	Document.
+
+	* libsupc++/guard.cc (static_mutex): Subsume into and fixup for...
+	* include/ext/concurrence.h (__recursive_mutex): ...this. Error
+	check locking and unlocking.
+	* libsupc++/eh_alloc.cc: Use __scoped_lock.
+
+	* config/os/aix/atomicity.h: Fixups for include paths, mutex to
+	__scoped_mutex change, removal of locking defines.
+	* config/os/irix/atomicity.h: Same.
+	* config/cpu/cris/atomicity.h: Same.
+	* config/cpu/m68k/atomicity.h: Same.
+	* config/cpu/hppa/atomicity.h: Same.
+	* config/cpu/mips/atomicity.h: Same.
+	* config/cpu/sparc/atomicity.h: Same.
+	* config/cpu/i386/atomicity.h: Same.
+	* config/cpu/i486/atomicity.h: Same.
+	* config/cpu/sh/atomicity.h: Same.
+	* config/cpu/generic/atomicity_mutex/atomicity.h: Same.
+	* include/ext/pool_allocator.h: Same.
+	* include/ext/bitmap_allocator.h: Same.
+	* include/ext/rc_string_base.h: Same.
+	* include/ext/mt_allocator.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/tr1/memory: Same.
+	* src/pool_allocator.cc: Same.
+	* src/mt_allocator.cc: Same.
+	* src/locale_init.cc: Same.
+	* src/ios.cc: Same.
+	* src/locale.cc: Same.
+	* src/bitmap_allocator.cc: Same.
+	* src/ios_init.cc: Same.
+	* src/debug.cc: Same.
+
+2006-09-12  Benjamin Kosnik  
+
+	* libsupc++/eh_globals.cc: Remove __gnu_internal.
+	* config/io/basic_file_stdio.cc: Same.
+	* config/abi/compatibility.h: Same.
+	* config/cpu/generic/atomicity_mutex/atomicity.h: Same.
+	* config/cpu/sh/atomicity.h: Same.
+
+2006-09-10  Paolo Carlini  
+
+	* include/bits/stl_heap.h (sort_heap): Iterator post-decrement is
+	only required to be convertible to the iterator type.
+
+2006-09-08  Paolo Carlini  
+
+	* include/tr1/random.tcc (poisson_distribution<>::operator()):
+	Avoid potential warnings when _IntType is unsigned.
+
+2006-09-08  Benjamin Kosnik  
+
+	* include/debug/debug.h (_GLIBCXX_DEBUG_ONLY): New.
+	* include/ext/bitmap_allocator.h (_BALLOC_SANITY_CHECK,
+	_BALLOC_ASSERT): Remove. Use _GLIBCXX_DEBUG,
+	_GLIBCXX_DEBUG_ASSERT.
+	* include/ext/pb_ds/hash_policy.hpp (PB_DS_DBG_ASSERT): Convert to
+	_GLIBCXX_DEBUG_ASSERT. Formatting corrections.
+	(PB_DS_DBG_VERIFY): Remove, unused.
+	(PB_DS_DBG_ONLY): Convert to _GLIBCXX_DEBUG blocks.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	binomial_heap_base_.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/
+	const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/head.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/types_traits.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	left_child_next_sibling_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	const_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/map_debug_base.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/
+	constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/
+	iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	rc_binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/
+	constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
+	* testsuite/util/regression/res_mng/forced_exception.hpp: Same.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator_base.hpp: Same.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator.hpp: Same.
+	* testsuite/util/rng/twister_rand_gen.cc
+	* testsuite/util/native_type/assoc/native_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: Same.
+
+2006-09-05  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (find(const _CharT*, size_type,
+	size_type)): Robustify.
+	* include/ext/vstring.tcc (find(const _CharT*, size_type,
+	size_type)): Likewise.
+
+2006-09-05  Paolo Carlini  
+
+	* include/bits/basic_string.tcc (find(const _CharT*, size_type,
+	size_type)): Reimplement in terms of traits::eq and traits::compare.
+	* include/ext/vstring.tcc (find(const _CharT*, size_type,
+	size_type)): Likewise.
+	* src/string-inst.cc: Remove unneded std::search instantiation.
+
+2006-09-04  Benjamin Kosnik  
+
+	PR c++/28871
+	* include/ext/bitmap_allocator.h: Add comment for end of anonymous
+	namespace.
+	* include/ext/rope: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/tr1/tuple: Same.
+	* include/tr1/functional_iterate.h: Same.
+
+	* include/bits/cpp_type_traits.h: Revert anonymous namespace
+	change, use nested detail instead.
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): PCHFLAGS revert to
+	stdc++.h.
+
+2006-09-04  Paolo Carlini  
+
+	* src/mt_allocator.cc (__pool::_M_reclaim_block): Do
+	not name a variable __used, badname on BSD.
+
+2006-09-02  Paolo Carlini  
+	    Richard Guenther  
+
+	PR libstdc++/24469
+	* src/mt_allocator.cc (__pool::_M_reserve_block,
+	__pool::_M_reclaim_block): Fix the logic to avoid
+	races, exploit atomic counters stored in second part of
+	the memory pointed by _M_used.
+	(__pool::_M_initialize): Adjust _M_used allocation.
+	* include/ext/mt_allocator.h (__pool::_Bin_record):
+	Update comment.
+
+2006-08-31  Benjamin Kosnik  
+
+	PR libstdc++/28671 continued
+	* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Don't use
+	CXXFLAGS when checking for atomic builtins.
+	* configure: Regenerate.
+	* include/bits/atomicity.h: Revert.
+
+2006-08-31  Richard Guenther  
+
+	* include/ext/mt_allocator.h: Remove volatile qualifiers
+	from data members and corresponding locals and function
+	signatures.
+
+2006-08-31  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Correct atomic helper function signature
+	for case where _Atomic_word is long.
+
+2006-08-31  Benjamin Kosnik  
+
+	PR libstdc++/28671
+	* include/bits/atomicity.h (__exchange_and_add): Declare only.
+	(__atomic_add): Same.
+	* config/cpu/generic/atomicity_builtins/atomicity.h: Remove comment.
+
+2006-08-30  Benjamin Kosnik  
+            Richard Guenther  
+
+	* config/abi/pre/gnu.ver: Spell out exact signatures for atomic
+	access functions.
+
+	* include/bits/atomicity.h (__atomic_add_dispatch): Remove
+	volatile qualification for _Atomic_word argument.
+	(__atomic_add_single): Same.
+	(__exchange_and_add_dispatch): Same.
+	(__exchange_and_add_single): Same.
+
+2006-08-29  Paolo Carlini  
+
+	* include/tr1/random (subtract_with_carry_01<>::_M_initialize_npows):
+	New.
+	(subtract_with_carry_01<>::subtract_with_carry_01(),
+	subtract_with_carry_01<>::subtract_with_carry_01(unsigned long),
+	subtract_with_carry_01<>::subtract_with_carry_01(_Gen&)): Use it.
+	* include/tr1/random.tcc: Define.
+
+	* include/tr1/random (xor_combine<>::_M_initialize_max()): New.
+	(xor_combine<>::xor_combine(), xor_combine<>::xor_combine(const
+	base1_type&, const base2_type&), xor_combine<>::xor_combine(unsigned
+	long), xor_combine<>::xor_combine(_Gen&)): Use it.
+	(xor_combine<>::min, xor_combine<>::max): Adjust.
+	* include/tr1/random.tcc: Define.
+
+2006-08-29  Benjamin Kosnik  
+
+	* acinclude.m4(glibcxx_PCHFLAGS): Set to stdtr1c++.h.
+	* configure: Regenerate.
+
+	* scripts/check_compile: Output current compile line.
+
+2006-08-28  Benjamin Kosnik  
+
+	PR libstdc++/23773 partial
+	* docs/html/abi.html: Update.
+
+2006-08-28  Roger Sayle  
+	    Paolo Carlini  
+
+	* include/bits/stl_algo.h (__heap_select, __introselect): New.
+	(nth_element): New implementation.
+	(partial_copy): Use __heap_select.
+	* testsuite/performance/25_algorithms/nth_element_worst_case.cc: New.
+
+2006-08-28  Paolo Carlini  
+	    Roger Sayle  
+
+	* testsuite/25_algorithms/nth_element/2.cc: New.
+
+2006-08-27  Paolo Carlini  
+
+	PR libstdc++/28830
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread/
+	lockfree_weaktoshared.cc: Rename to...
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread/
+	default_weaktoshared.cc: ... this; test the default base class.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread/
+	mutex_weaktoshared.cc: Run like the other thread tests.
+
+2006-08-25  Paolo Carlini  
+
+	* docs/html/ext/tr1.html: Update.
+
+2006-08-25  Paolo Carlini  
+
+	* include/tr1/random (bernoulli_distribution::operator()): Fix
+	wrt generators returning integers.
+	(uniform_int<>::_M_call): Add.
+	(uniform_int<>::operator()): Use it.
+
+	* include/tr1/random (_Adaptor<>::min, _Adaptor<>::max): Add.
+	(_Adaptor<>::operator()): Allow for nonzero _M_g.min().
+
+	* include/tr1/random.tcc (linear_congruential<>::min, max):
+	Move inline...
+	(__mod): Move ...
+	* include/tr1/random: ... here.
+	(struct _Mod): Declare.
+
+	* include/tr1/random (struct _To_Unsigned_Type): Only declare,
+	move...
+	* include/tr1/random.tcc: ... here.
+
+2006-08-22  Phillip Jordan  
+
+	*include/tr1/boost_shared_ptr.h: Added locking policy to
+	tr1::shared_ptr<> and related classes.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread: New.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread/
+	lockfree_weaktoshared.cc: New.
+	* testsuite/tr1/2_general_utilities/memory/shared_ptr/thread/
+	mutex_weaktoshared.cc: New.
+	*testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/
+	shared_ptr_neg.cc: Modify.
+
+2006-08-22  Paolo Carlini  
+
+	* include/tr1/random.tcc (subtract_with_carry_01<>::
+	seed(_Gen&, false_type)): Fix _M_carry initialization.
+
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/default.cc: Qualify 1 as 1UL.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/gen1.cc: Likewise.
+
+2006-08-22  Paolo Carlini  
+
+	* include/tr1/random (class subtract_with_carry_01<>): Add.
+	* include/tr1/random.tcc (subtract_with_carry_01<>::
+	seed(unsigned long), subtract_with_carry_01<>::
+	seed(_Gen&, false_type), subtract_with_carry_01<>::
+	operator(), operator<<(std::basic_ostream<>&, const
+	subtract_with_carry_01<>&), operator>>(std::basic_istream<>&,
+	subtract_with_carry_01<>&)): Define.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc:
+	New.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/cons/seed1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/cons/seed2.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/cons/gen1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/operators/equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/operators/serialize.cc: Likewise.
+
+	* docs/html/ext/howto.html: Add two implemented TR1 issues.
+
+	* include/tr1/random.tcc (struct _To_Unsigned_Type<>): Move...
+	* include/tr1/random: ... here.
+	(class subtract_with_carry<>): Use it everywhere.
+
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/seed1.cc: Qualify 1 as 1UL.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/seed2.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/cons/gen1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/operators/equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/operators/serialize.cc: Likewise.
+
+	* include/tr1/random (class binomial_distribution<>): Reorder the
+	data members to save space.
+
+2006-08-20  Paolo Carlini  
+
+	* include/tr1/random (gamma_distribution<>::_M_initialize,
+	gamma_distribution<>::_M_l_d): Add.
+	(gamma_distribution<>::gamma_distribution(const result_type&),
+	operator>>(std::basic_istream<>&, gamma_distribution&)): Use it.
+	include/tr1/random.tcc (gamma_distribution<>::_M_initialize):
+	Define.
+	(gamma_distribution<>::operator()): Adjust.
+
+	* include/tr1/random (geometric_distribution<>::_M_initialize): Add.
+	(geometric_distribution<>::geometric_distribution(const _RealType&),
+	operator>>(std::basic_istream<>&, geometric_distribution&)): Use it.
+
+2006-08-18  Paolo Carlini  
+
+	* include/tr1/random (class binomial_distribution<>): Add.
+	* include/tr1/random.tcc (binomial_distribution<>::operator(),
+	operator<<(std::basic_ostream<>&, const binomial_distribution<>&),
+	operator>>(std::basic_istream<>&, binomial_distribution<>&,
+	binomial_distribution<>::_M_waiting(), binomial_distribution<>::
+	_M_initialize()): Define.
+	* testsuite/tr1/5_numerical_facilities/random/binomial_distribution/
+	requirements/typedefs.cc: New.
+
+	* include/tr1/random (geometric_distribution<>::
+	geometric_distribution(const _RealType&)): Fix DEBUG_ASSERT
+	limits.
+
+	* include/tr1/random (poisson_distribution): Add normal_distribution
+	member, adjust consistently; minor tweaks and rearrangements of the
+	arithmetic.
+	(operator>>(std::basic_istream<>&, poisson_distribution<>&)): Move
+	out of line.
+	* include/tr1/random.tcc: Adjust.
+
+	* include/tr1/random.tcc (normal_distribution<>::operator()): Minor
+	tweaks.
+
+2006-08-18  Paolo Carlini  
+
+	PR libstdc++/28765
+	* include/ext/rc_string_base.h (_M_clear): New.
+	* include/ext/sso_string_base.h (_M_clear): Likewise.
+	* include/ext/vstring.h (clear): Use it.
+
+2006-08-15  Paolo Carlini  
+
+	* include/tr1/random (poisson_distribution<>::_M_initialize): Add.
+	(poisson_distribution<>::poisson_distribution(const _RealType&):
+	Use it.
+	(operator>>(std::basic_istream<>&, poisson_distribution<>&)):
+	Likewise.
+	(poisson_distribution<>::_M_large): Remove.
+	* include/tr1/random.tcc (poisson_distribution<>::_M_initialize):
+	Define.
+	(operator<<(std::basic_ostream<>&, const poisson_distribution<>&)):
+	Do not output the constants.
+
+	* include/tr1/random (operator>>(std::basic_istream<>&,
+	gamma_distribution&)): Minor tweak.
+
+	* include/tr1/random.tcc (poisson_distribution<>::operator()):
+	Minor tweak.
+
+	* include/tr1/random: Consistently, all data members private.
+
+2006-08-15  Paolo Carlini  
+
+	* include/tr1/random.tcc (mersenne_twister<>::operator()): Revert
+	last change (per gcc-patches/2006-08/msg00484.html).
+
+2006-08-14  Paolo Carlini  
+
+	* include/tr1/random (class poisson_distribution<>): Add.
+	* include/tr1/random.tcc (poisson_distribution<>::operator(),
+	operator<<(std::basic_ostream<>&, const poisson_distribution<>&),
+	operator>>(std::basic_istream<>&, poisson_distribution<>&,
+	poisson_distribution<>::poisson_distribution(const _RealType&)):
+	Define.
+	* testsuite/tr1/5_numerical_facilities/random/poisson_distribution/
+	requirements/typedefs.cc: New.
+
+	* include/tr1/random.tcc (mersenne_twister<>::operator()): Tweak
+	a bit for efficiency.
+
+	* include/tr1/random.tcc (operator<<(std::basic_ostream<>&,
+	const normal_distribution<>&), operator>>(std::basic_istream<>&,
+	normal_distribution<>&)): Do not output _M_saved unnecessarily.
+
+	* include/tr1/random: Trivial formatting fixes.
+	* include/tr1/cmath: Likewise.
+
+2006-08-11  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (__fill_bvector(_Bit_iterator,
+	_Bit_iterator, bool)): New.
+	(fill(_Bit_iterator, _Bit_iterator, const bool&)): Use it.
+
+2006-08-10  Paolo Carlini  
+
+	* include/tr1/random.tcc (gamma_distribution<>::operator()): Fixes
+	from the Errata of Devroye's book.
+
+2006-08-10  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (_Bit_iterator_base::_M_incr(ptrdiff_t)):
+	Tidy a bit, thus reducing generated code size.
+
+2006-08-09  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (vector::_M_copy_aligned): New.
+	(vector::vector(const vector&), operator=(const vector&),
+	reserve(size_type), _M_fill_insert(iterator, size_type, bool),
+	_M_insert_range(iterator, _ForwardIterator, _ForwardIterator,
+	std::forward_iterator_tag), _M_insert_aux(iterator, bool)): Use it.
+	* testsuite/performance/23_containers/copy_construct/
+	vector_bool.cc: New.
+
+	* testsuite/23_containers/vector/bool/cons/1.cc: New.
+	* testsuite/23_containers/vector/bool/cons/2.cc: Likewise.
+
+	* include/bits/stl_bvector.h (vector::_M_fill): Remove.
+	(fill(_Bit_iterator, _Bit_iterator, const bool&)): New.
+	(vector::_M_fill_insert(iterator, size_type, bool)): Adjust.
+
+	* include/bits/stl_bvector.h (_M_initialize_range(_InputIterator,
+	_InputIterator, std::input_iterator_tag)): Remove redundant
+	assignments.
+
+	* include/bits/stl_algo.h (find(istreambuf_iterator<>,
+	istreambuf_iterator<>, _CharT)): Adjust signature.
+	* include/bits/streambuf_iterator.h: Likewise.
+	* include/std/std_streambuf.h: Likewise.
+
+2006-08-09  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill(const _Deque_iterator<>&,
+	const _Deque_iterator<>&, const _Tp&)): Move...
+	* include/bits/deque.tcc: ... here.
+	* include/bits/stl_deque.h: Declare.
+
+2006-08-06  Paolo Carlini  
+
+	PR libstdc++/16611
+	* include/bits/stl_bvector.h (vector::operator[],
+	vector::operator[] const): Do not use iterator::operator+,
+	hand code.
+
+2006-08-05  Paolo Carlini  
+
+	PR libstdc++/28587
+	* include/bits/stl_bvector.h (vector::_M_fill): New.
+	(vector::_M_fill_insert): Use it.
+	* testsuite/performance/23_containers/resize/vector_bool.cc: New.
+
+	* testsuite/23_containers/vector/bool/modifiers/insert/1.cc: New.
+	* testsuite/23_containers/vector/bool/capacity/1.cc: Likewise.
+
+2006-08-04  Paolo Carlini  
+
+	* include/bits/stl_queue.h (priority_queue<>::push,
+	priority_queue<>::pop): Remove try/catch, just follow the
+	letter of the Standard.
+
+2006-08-03  Paolo Carlini  
+
+	* include/bits/stl_queue.h: Trivial formatting fixes.
+	* include/bits/stl_stack.h: Likewise.
+
+2006-08-01  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* docs/html/ext/tr1.html: Update.
+
+2006-07-31  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
+	Find the decimal point in cs, instead of ws; tidy.
+
+2006-07-30  Roger Sayle  
+
+	* include/ext/codevt_specializations.h (__iconv_adaptor): Use
+	identifier _Tp instead of _T in template argument to avoid conflict.
+
+2006-07-30  Paolo Carlini  
+
+	* include/bits/stl_algo.h (stable_sort): Uglify the buf variable.
+	* include/bits/stl_tempbuf.h (_Temporary_buffer<>::
+	_M_initialize_buffer): Uglify the val parameter.
+
+2006-07-27  Benjamin Kosnik  
+
+	PR libstdc++/19664 round 3
+	* include/Makefile.am (tr1_headers): Add hashtable_policy.h.
+	* include/Makefile.in: Regenerate.
+	* include/tr1/hashtable: Move policy classes into...
+	* include/tr1/hashtable_policy.h: ... this. New.
+
+	* src/globals_locale.cc: Move contents....
+	* src/locale_init.cc: ... to here, put in anonymous namespace.
+	* src/Makefile.am: Remove globals_locale.cc.
+	* src/Makefile.in: Regenerate.
+
+	* src/locale.cc: Convert __gnu_internal to anonymous namespace.
+	* src/debug.cc: Same.
+	* src/ext-inst.cc: Same.
+	* src/mt_allocator.cc: Same.
+	* src/pool_allocator.cc: Same.
+
+	* include/tr1/random: Convert std::tr1::_Private to anonymous
+	namespace.
+	* include/tr1/random.tcc: Same.
+
+	* include/tr1/hashtable: Move ::Internal to std::tr1::detail and
+	enclose bits that can actually be internal in in anonymous
+	namespace.
+	* include/tr1/unordered_set: Adjust explicit qualifications for
+	namespace changes.
+	* include/tr1/unordered_map: Same.
+
+	* include/tr1/cmath: Convert __gnu_internal to nested detail namespace.
+
+	* include/bits/cpp_type_traits.h: Move __type_type into anonymous
+	namespace.
+
+	* include/ext/rope: Change _Rope_constants to anonymous namespace.
+	* include/ext/ropeimpl.h: Same.
+	* src/ext-inst.cc: Same.
+
+2006-07-24  Paolo Carlini  
+
+	* include/tr1/cinttypes: Simply protect everything with
+	_GLIBCXX_USE_C99_INTTYPES_TR1.
+	* include/tr1/cfenv: Likewise with _GLIBCXX_USE_C99_FENV_TR1.
+	* include/tr1/cstdint: Likewise with _GLIBCXX_USE_C99_STDINT_TR1.
+
+2006-07-21  Benjamin Kosnik  
+
+	* include/tr1/random: Make include guards consistent.
+	* include/tr1/unordered_map: Same.
+	* include/tr1/hashtable: Same.
+	* include/tr1/unordered_set: Same.
+
+2006-07-21  Steve Ellcey  
+
+	PR target/26792
+	* configure.ac: Use GCC_CHECK_UNWIND_GETIPINFO to
+	define HAVE_GETIPINFO.
+	* aclocal.m4: Add include of ../config/unwind_ipinfo.m4.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* libsupc++/eh_personality.cc: Check HAVE_GETIPINFO.
+
+2006-07-21  Jason Merrill  
+
+	PR libstdc++/19664 round 2
+	* libsupc++/eh_personality.cc: Wrap extern "C" function
+	definitions in namespace __cxxabiv1.
+
+2006-07-21  David Daney  
+
+	PR libgcj/28426
+	* acinclude.m4: Added a comment.
+
+2006-07-20  Benjamin Kosnik  
+	    Jakub Jelinek  
+
+	PR libstdc++/19664 round 1
+	* acinclude.m4 (GLIBCXX_ENABLE_VISIBILITY): Check it.
+	* configure.ac: Use it.
+	* configure: Regenerate.
+	* docs/html/configopts.html: Document it.
+	* include/Makefile.am: Slip in to c++config.
+	* include/Makefile.in: Regenerate.
+	* include/bits/c++config (_GLIBCXX_VISIBILITY): New.
+	(_GLIBCXX_BEGIN_NAMESPACE): Use it.
+	(_GLIBCXX_END_NAMESPACE): Use it.
+	(_GLIBCXX_BEGIN_NESTED_NAMESPACE): Use it.
+	(_GLIBCXX_END_NESTED_NAMESPACE): Use it.
+	* src/debug.cc: Mark __gnu_internal namespace with hidden
+	visibility attribute.
+	* src/ext-inst.cc: Same.
+	* src/globals_io.cc: Same.
+	* src/globals_locale.cc: Same.
+	* src/ios_init.cc: Same.
+	* src/locale.cc: Same.
+	* src/mt_allocator.cc: Same.
+	* src/pool_allocator.cc: Same.
+
+2006-07-16  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: valarray bits)
+	* include/std/std_valarray.h (valarray<>::shift(int),
+	valarray<>::cshift(int)): Avoid __builtin_alloca with no limit,
+	do the work in place.
+	* testsuite/26_numerics/valarray/28277.cc: New.
+
+2006-07-15  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: ostream bits 1)
+	* include/bits/ostream.tcc (operator<<(basic_ostream<_CharT>&,
+	const char*)): Avoid __builtin_alloca with no limit in the
+	widening.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-1.cc: New.
+
+2006-07-14  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): New.
+	* configure.ac: Use it.
+	* configure: Regenerated.
+	* config.h.in: Regenerated.
+	* configure.host: Simplify.
+	* include/bits/atomicity.h: Adjust macros.
+	* config/cpu/generic/atomicity.h: Move...
+	* config/cpu/generic/atomicity_mutex: New.
+	* config/cpu/generic/atomicity_mutex/atomicity.h: ...here.
+	* config/cpu/generic/atomic_builtins: Rename...
+	* config/cpu/generic/atomicity_builtins: ...to this.
+	* config/cpu/generic/atomicity_builtins/atomicity.h: Moved.
+	* config/cpu/mips/atomicity.h: Comment MIPS II requirement.
+
+	* scripts/testsuite_flags.in: Make --cxxflags reflect CXXFLAGS.
+
+2006-07-14  Paolo Carlini  
+
+	* include/tr1/random (minstd_rand0, minstd_rand, ranlux3, ranlux4):
+	Use unsigned long as implementation-defined type.
+
+2006-07-14  Paolo Carlini  
+
+	* include/tr1/random.tcc (struct _To_Unsigned_Type): Add.
+	(subtract_with_carry<>::seed(_Gen&, false_type)): Use an
+	unsigned type in the loop, fix factor multiplier, take g
+	invocations modulo 2^32.
+
+	* include/tr1/random.tcc (subtract_with_carry<>::
+	seed(unsigned long)): Fix value == 0 special case.
+
+	* include/tr1/random (struct _Shift): Fix for large shifts.
+
+2006-07-13  Paolo Carlini  
+
+	* testsuite/performance/21_strings/string_copy_cons_and_dest.cc: New.
+
+2006-07-13  Benjamin Kosnik  
+
+	* include/Makefile.am (pch*_output_anchor): Add.
+	(pch*_output): Use.
+	(CLEANFILES): Use.
+	* include/Makefile.in: Regenerate.
+
+	* scripts/check_performance: Be verbose on compile error.
+
+2006-07-12  Benjamin Kosnik  
+
+	* include/Makefile.am: Revert last change.
+	* include/Makefile.in: Same.
+
+2006-07-12  Benjamin Kosnik  
+
+	* include/Makefile.am (pch_output): Don't precompile extc++.h.
+	(pch_output_dirs): Same.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/lib/libstdc++.exp: Test PCH with stdtr1c++.h.
+
+2006-07-11  Paolo Carlini  
+
+	* include/ext/codecvt_specializations.h: Fix typo in commit
+	for libstdc++/28290.
+
+2006-07-11  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (collate<>::do_transform(
+	const _CharT*, const _CharT*)): Simplify previous fix for
+	libstdc++/28277, always allocate memory dynamically.
+
+2006-07-11  Paolo Carlini  
+
+	PR libstdc++/28344
+	* include/tr1/random (gamma_distribution<>::
+	gamma_distribution(const result_type&)): Don't use __alpha as
+	parameter name, a predefined macro on Alpha systems.
+
+2006-07-11  Paolo Carlini  
+
+	PR libstdc++/28290
+	* include/ext/codecvt_specializations.h: Fix, adding missing
+	includes and guards.
+
+2006-07-11  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: collate bits)
+	* include/bits/locale_facets.tcc (collate<>::do_transform(
+	const _CharT*, const _CharT*)): Avoid __builtin_alloca with no
+	limit; also avoid multiple calls (in a loop).
+	* testsuite/22_locale/collate/transform/char/28277.cc: New.
+	* testsuite/22_locale/collate/transform/wchar_t/28277.cc: Likewise.
+
+2006-07-10  Mike Stump  
+
+	* libsupc++/eh_globals.cc (~__eh_globals_init): Unset _M_init.
+
+2006-07-10  Benjamin Kosnik  
+
+	PR libstdc++/15448
+	* include/Makefile.am: Clean up pch rules.
+	* include/Makefile.in: Regenerate.
+
+2006-07-09  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__int_to_char<>(_CharT*,
+	long, const _CharT*, ios_base::fmtflags), __int_to_char<>(_CharT*,
+	unsigned long, const _CharT*, ios_base::fmtflags),
+	__int_to_char<>(_CharT*, long long, const _CharT*, ios_base::fmtflags),
+	__int_to_char<>(_CharT*, unsigned long long, const _CharT*,
+	ios_base::fmtflags)): Remove.
+	(__int_to_char<>(_CharT*, _ValueT, const _CharT*, ios_base::fmtflags,
+	bool)): Adjust.
+	(num_put<>::_M_insert_int(_OutIter, ios_base&, _CharT, _ValueT)):
+	Likewise.
+
+2006-07-06  Paolo Carlini  
+
+	* include/tr1/random (class gamma_distribution<>): Add.
+	* include/tr1/random.tcc (gamma_distribution<>::operator(),
+	operator<<(std::basic_ostream<>&, const gamma_distribution<>&)):
+	Define.
+	* testsuite/tr1/5_numerical_facilities/random/gamma_distribution/
+	requirements/typedefs.cc: New.
+
+2006-07-06  Benjamin Kosnik  
+
+	* testsuite/util/regression/trait/assoc/trait.hpp: Format.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/
+	assoc/container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/priority_queue/common_type.hpp: Same.
+	* testsuite/util/regression/assoc/common_type.hpp: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+
+2006-07-05  Benjamin Kosnik  
+
+	* include/Makefile.am (pch_output): New.
+	(clean-local): Use it.
+	* include/Makefile.in: Regenerate.
+
+2006-07-04  Paolo Carlini  
+
+	* include/tr1/random (_Adaptor<>::operator()()): Cast 1 to
+	result_type.
+	(variate_generator<>::operator()(),
+	variate_generator<>::operator()(_Tp)): Inline.
+
+	* include/tr1/random: Minor cosmetic changes.
+
+2006-07-03  Paolo Carlini  
+
+	* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
+	Adjust, take into account rounding in _M_create.
+	(__rc_string_base::_M_create): Add early _S_max_size check.
+
+2006-07-03  Ian Lance Taylor  
+	    Paolo Carlini  
+
+	* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
+	Increase by a factor of two.
+	* include/ext/sso_string_base.h (__sso_string_base::_S_max_size):
+	Likewise.
+
+2006-07-03  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base::_M_create): Never
+	allocate a string bigger than _S_max_size.
+
+2006-06-29  Benjamin Kosnik  
+
+	* include/Makefile.am (pch1_input, pch1_output_builddir,
+	pch1_outputj_installdir, pch1_source): Move from pch_*.
+	(pch2_input, pch2_output_builddir,
+	pch2_output_installdir, pch2_source): Clone for ext.
+	(pch3_input, pch3_output_builddir,
+	pch3_output_installdir, pch3_source): Clone for tr1.
+	(install-pch): Same.
+	* include/Makefile.in: Regenerate.
+
+	* include/precompiled: New directory.
+	* include/stdc++.h: Move...
+	* include/precompiled/stdc++.h: ... here.
+	* include/precompiled/stdtr1c++.h: New.
+	* include/precompiled/extc++.h: New.
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Set PCH_CXXFLAGS
+	to -include bits/stdtr1c++.h.
+
+2006-06-29  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp (v3_target_compile): Set timeout to
+	600.
+
+2006-06-27  Benjamin Kosnik  
+
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Revert.
+
+2006-06-27  Benjamin Kosnik  
+
+	* include/ext/typelist.h (typelist_append): To append_typelist.
+	(typelist): To node.
+	Enclose in namespace typelist.
+	* testsuite/util/testsuite_common_types.h: Adjust names, namespaces.
+	* testsuite/performance/23_containers/find/map.cc: Same.
+	* testsuite/performance/23_containers/create/map.cc: Same.
+	* testsuite/performance/23_containers/insert_erase/associative.cc:
+	Same.
+	* testsuite/performance/23_containers/insert/sequence.cc: Same.
+	* testsuite/performance/23_containers/insert/associative.cc: Same.
+	* testsuite/performance/23_containers/create_from_sorted/set.cc: Same.
+	* testsuite/performance/23_containers/index/map.cc: Same.
+	* testsuite/performance/23_containers/insert_from_sorted/set.cc: Same.
+	* testsuite/performance/23_containers/create_sort/list.cc: Same.
+	* testsuite/performance/23_containers/sort_search/list.cc: Same.
+	* testsuite/performance/23_containers/producer_consumer/sequence.cc:
+	Same.
+	* testsuite/performance/23_containers/producer_consumer/associative.cc:
+	Same.
+
+2006-06-26  Benjamin Kosnik  
+
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc:
+	Reduce iterations by half.
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
+
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp:
+	Set probability of compare from 1 to 0.25.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Same.
+
+2006-06-25  Paolo Carlini  
+
+	* include/tr1/random (operator<<(std::basic_ostream<>&,
+	const linear_congruential<>&), operator>>(std::basic_istream<>&,
+	linear_congruential<>&), operator<<(std::basic_ostream<>&,
+	const mersenne_twister<>&), operator>>(std::basic_istream<>&,
+	mersenne_twister<>&), operator<<(std::basic_ostream<>&,
+	const subtract_with_carry<>&), operator>>(std::basic_istream<>&,
+	subtract_with_carry<>&), operator<<(std::basic_ostream<>&,
+	const discard_block<>&), operator>>(std::basic_istream<>&,
+	discard_block<>&), operator<<(std::basic_ostream<>&,
+	const xor_combine<>&), operator>>(std::basic_istream<>&,
+	xor_combine<>&), operator<<(std::basic_ostream<>&,
+	const uniform_int<>&), operator>>(std::basic_istream<>&,
+	uniform_int<>&), operator<<(std::basic_ostream<>&,
+	const bernoulli_distribution&), operator<<(std::basic_ostream<>&,
+	const geometric_distribution<>&), operator<<(std::basic_ostream<>&,
+	const uniform_real<>&), operator>>(std::basic_istream<>&,
+	uniform_real<>&), operator<<(std::basic_ostream<>&,
+	const exponential_distribution<>&), operator<<(std::basic_ostream<>&,
+	const normal_distribution<>&), operator>>(std::basic_istream<>&,
+	normal_distribution<>&)): Redo per TR1 specs; move out of line...
+	* include/tr1/random.tcc: ... here.
+
+2006-06-24  Paolo Carlini  
+
+	* include/tr1/random (class normal_distribution<>): Add.
+	* include/tr1/random.tcc (normal_distribution<>::operator()): Define.
+
+	* include/tr1/random.tcc (struct _Max): Remove, "inline" in the
+	only user, mersenne_twister<>::max().
+
+	* include/tr1/random.tcc (struct _Shift): Move...
+	* include/tr1/random: ... here.
+
+	* include/tr1/random.tcc (linear_congruential<>::
+	linear_congruential(unsigned long), linear_congruential<>::
+	linear_congruential(_Gen&), mersenne_twister<>::max())): Move inline...
+	* include/tr1/random: ... here.
+
+	* include/tr1/random (exponential_distribution<>::
+	exponential_distribution(const result_type&)): Add missing
+	_GLIBCXX_DEBUG_ASSERT.
+
+	* testsuite/tr1/5_numerical_facilities/random/
+	exponential_distribution/requirements/typedefs.cc: New.
+	* testsuite/tr1/5_numerical_facilities/random/
+	normal_distribution/requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	bernoulli_distribution/requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	geometric_distribution/requirements/typedefs.cc: Likewise.
+
+2006-06-23  Benjamin Kosnik  
+
+	PR libstdc++/27984
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Adjust
+	testing includes.
+	* docs/html/test.html: Adjust for testsuite changes.
+
+2006-06-22  Jonathan Lennox  
+	    Paolo Carlini  
+
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Cast to size_t instead.
+
+2006-06-22  Ami Tavory  
+
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Fix for 64-bit machines.
+
+2006-06-21  Paolo Carlini  
+
+	* include/bits/postypes.h (operator==(const fpos<>&, const fpos<>&),
+	operator!=(const fpos<>&, const fpos<>&)): Add.
+	* testsuite/27_io/fpos/mbstate_t/6.cc: New.
+
+2006-06-21  Mark Mitchell  
+
+	* acinclude.m4 (GLIBCXX_EXPORT_INSTALL_INFO): When
+	cross-compiling, put headers in $prefix/$target/include/c++.
+	* configure: Regenerated.
+
+2006-06-20  Paolo Carlini  
+
+	* include/tr1/random.tcc (struct _Private::_Mod_w<>,
+	_Private::__mod_w<>): Remove.
+	(struct _Private::_Shift<>): New.
+	(struct _Private::_Max_w<>): Rename to _Max, use the latter.
+	(mersenne_twister<>::seed(unsigned long), seed(_Gen&, false_type),
+	max()): Adjust.
+
+2006-06-20  Vladimir Prus  
+
+	* libsupc++/eh_arm.cc (__cxa_begin_cleanup): Always return 'true'.
+
+2006-06-19  Paolo Carlini  
+
+	* include/tr1/random (xor_combine<>::operator<<): Fix typo.
+
+	* include/tr1/random (bernoulli_distribution::min(),
+	bernoulli_distribution::max(), geometric_distribution<>::min(),
+	geometric_distribution<>::max()): Remove.
+
+	* include/tr1/random (geometric_distribution<>::operator()):
+	Simplify formula.
+
+	* include/tr1/random: Minor cosmetic changes.
+
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/
+	operators/equal.cc: New.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/
+	operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/
+	operators/serialize.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	operators/equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	operators/serialize.cc: Likewise.
+
+2006-06-17  Ami Tavory  
+	    Paolo Carlini  
+
+	* testsuite/util/rng/twister_rand_gen.cc: Adapt to simply use
+	tr1::mt19937.
+	* testsuite/util/rng/twister_rand_gen.hpp: Likewise.
+
+2006-06-16  Paolo Carlini  
+
+	* include/tr1/random (uniform_real<>::uniform_real(_RealType,
+	_RealType)): Implement.
+	(uniform_real<>::min()): Likewise.
+	(uniform_real<>::max()): Likewise.
+	(uniform_real<>::reset()): Likewise.
+
+	* include/tr1/random (class uniform_real<>): Minor cosmetic tweaks.
+
+2006-06-16  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (time_get<>::_M_extract_via_format):
+	Ignore the value of the __err argument.
+	(time_get<>::do_get_weekday): Likewise.
+	(time_get<>::do_get_monthname): Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/5.cc: New.
+	* testsuite/22_locale/time_get/get_year/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/5.cc: Likewise.
+
+2006-06-15  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/type_utils.hpp (numeric_traits): Add,
+	const expression interface to std::numeric_limits::min and max
+	functions.
+	* include/ext/pb_ds/trie_policy.hpp (string_trie_e_access_traits):
+	Use it.
+
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Format.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same.
+
+2006-06-15  Paolo Carlini  
+
+	* include/tr1/random.tcc (mersenne_twister<>::operator()()):
+	Reload the last position of the _M_x vector too.
+
+2006-06-15  Paolo Carlini  
+
+	* include/tr1/random (class xor_combine): Fix result_type typedef.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	cons/default.cc: New.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	requirements/typedefs.cc: Tweak.
+
+	* include/tr1/random: Minor cosmetic changes.
+
+2006-06-14  Ami Tavory  
+	    Benjamin Kosnik  
+
+	* include/ext/pb_assoc: Delete.
+	* include/ext/pb_ds: Add.
+	* docs/html/ext/pb_assoc: Delete.
+	* docs/html/ext/pb_ds: Add.
+	* testsuite/ext/pb_assoc: Delete.
+	* testsuite/ext/pb_ds: Add.
+	* testsuite/performance/ext: Add.
+	* testsuite/performance/ext/pb_ds: Add.
+
+	* testsuite/util/regression: New.
+	* testsuite/util/rng: New.
+	* testsuite/util/native_type: New.
+	* testsuite/util/common_type: New.
+	* testsuite/util/performance: New.
+	* testsuite/util/hash_fn: New.
+	* testsuite/util/io: New.
+	* testsuite/util/statistic: New.
+
+	* scripts/make_graph.py: New.
+	* scripts/make_graphs.py: New.
+	* testsuite/data/thirty_years_among_the_dead_preproc.txt: Add.
+	* testsuite/data/make_graph_htmls.xml: Add.
+	* testsuite/data/make_graph_test_infos.xml: Add.
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Add in new
+	object files for regression testing.
+	* docs/html/documentation.html: Adjust links.
+	* include/Makefile.am (install-headers): Update for new sources,
+	directories.
+	* include/Makefine.in: Regenerate.
+	* scripts/testsuite_flags.in: Adjust to testsuite/util path.
+	* scripts/check_performance: Simplify, adjust for new testsuite output.
+	* testsuite/Makefile.am (check-performance): Adjust.
+	(doc-performance): New.
+	* testsuite/Makefile.in: Regenerate.
+
+	* include/ext/pb_ds: New.
+	* include/ext/pb_ds/assoc_container.hpp: Same.
+	* include/ext/pb_ds/detail: New.
+	* include/ext/pb_ds/detail/binomial_heap_base_: New.
+	* include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy: New.
+	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_: New.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/typelist_assoc_container.hpp: Same.
+	* include/ext/pb_ds/detail/tree_trace_base.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator: New.
+	* include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/typelist.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_: New.
+	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/head.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_: New.
+	* include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_: New.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/standard_policies.hpp: Same.
+	* include/ext/pb_ds/detail/typelist: New.
+	* include/ext/pb_ds/detail/typelist/typelist_flatten.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_contains.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_typelist_append.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_apply.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_filter.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_append.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_assoc_container_find.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_transform.hpp: Same.
+	* include/ext/pb_ds/detail/typelist/typelist_at_index.hpp: Same.
+	* include/ext/pb_ds/detail/tree_policy: New.
+	* include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp: Same.
+	* include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Same.
+	* include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp: Same.
+	* include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp: Same.
+	* include/ext/pb_ds/detail/basic_tree_policy: New.
+	* include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp: Same.
+	* include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp: Same.
+	* include/ext/pb_ds/detail/basic_tree_policy/traits.hpp: Same.
+	* include/ext/pb_ds/detail/types_traits.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_: New.
+	* include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy: New.
+	* include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp: Same.
+	* include/ext/pb_ds/detail/cond_dealtor.hpp: Same.
+	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_: Name.
+	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_: New.
+	* include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/type_utils.hpp: Same.
+	* include/ext/pb_ds/detail/eq_fn: New.
+	* include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Same.
+	* include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp: Same.
+	* include/ext/pb_ds/detail/basic_types.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy: New.
+	* include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_: New.
+	* include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_: New.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_: New.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/map_debug_base.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn: New.
+	* include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp: Same.
+	* include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_: New.
+	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/node.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_: New.
+	* include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_: New.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_: New.
+	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Same.
+	* include/ext/pb_ds/list_update_policy.hpp: Same.
+	* include/ext/pb_ds/exception.hpp: Same.
+	* include/ext/pb_ds/tree_policy.hpp: Same.
+	* include/ext/pb_ds/tag_and_trait.hpp: Same.
+	* include/ext/pb_ds/hash_policy.hpp: Same.
+	* include/ext/pb_ds/trie_policy.hpp: Same.
+	* include/ext/pb_ds/priority_queue.hpp: Same.
+
+	* docs/html/ext/pb_ds: New.
+	* docs/html/ext/pb_ds/container_tag.html: Same.
+	* docs/html/ext/pb_ds/trivial_iterator_tag.html: Same.
+	* docs/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png
+	* docs/html/ext/pb_ds/sample_trie_e_access_traits.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_table.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_tag_cd.svg
+	* docs/html/ext/pb_ds/container_cd.svg
+	* docs/html/ext/pb_ds/linear_probe_fn.html: Same.
+	* docs/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png
+	* docs/html/ext/pb_ds/quadratic_probe_fn.html: Same.
+	* docs/html/ext/pb_ds/assoc_regression_tests.html: Same.
+	* docs/html/ext/pb_ds/tree_tag.html: Same.
+	* docs/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html: Same.
+	* docs/html/ext/pb_ds/interface.html: Same.
+	* docs/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png
+	* docs/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/lu_based_containers.html: Same.
+	* docs/html/ext/pb_ds/embedded_lists_3.png
+	* docs/html/ext/pb_ds/tree_text_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png
+	* docs/html/ext/pb_ds/assoc_performance_tests.html: Same.
+	* docs/html/ext/pb_ds/list_update.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png
+	* docs/html/ext/pb_ds/point_iterators_range_ops_1.png
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png
+	* docs/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png
+	* docs/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html: Same.
+	* docs/html/ext/pb_ds/move_to_front_lu_policy.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/hash_random_int_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/string_trie_e_access_traits.html: Same.
+	* docs/html/ext/pb_ds/prerequisites.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_tag.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_tag_cd.png
+	* docs/html/ext/pb_ds/container_cd.png
+	* docs/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png
+	* docs/html/ext/pb_ds/container_base.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/tree_random_int_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png
+	* docs/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png
+	* docs/html/ext/pb_ds/text_find_timing_test_hash_local.png
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png
+	* docs/html/ext/pb_ds/ov_tree_tag.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png
+	* docs/html/ext/pb_ds/list_update_tag.html: Same.
+	* docs/html/ext/pb_ds/balls_and_bins.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png
+	* docs/html/ext/pb_ds/disclaimer.html: Same.
+	* docs/html/ext/pb_ds/insert_error.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png
+	* docs/html/ext/pb_ds/examples.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small.html: Same.
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png
+	* docs/html/ext/pb_ds/sample_probe_fn.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png
+	* docs/html/ext/pb_ds/priority_queue_text_push_timing_test.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png
+	* docs/html/ext/pb_ds/null_mapped_type.html: Same.
+	* docs/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png
+	* docs/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png
+	* docs/html/ext/pb_ds/associative_container_tag.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png
+	* docs/html/ext/pb_ds/design.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html: Same.
+	* docs/html/ext/pb_ds/pairing_heap_tag.html: Same.
+	* docs/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png
+	* docs/html/ext/pb_ds/references.html: Same.
+	* docs/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png
+	* docs/html/ext/pb_ds/hash_load_check_resize_trigger.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png
+	* docs/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png
+	* docs/html/ext/pb_ds/pq_different_underlying_dss.png
+	* docs/html/ext/pb_ds/insert_resize_sequence_diagram1.png
+	* docs/html/ext/pb_ds/pq_regression_tests.html: Same.
+	* docs/html/ext/pb_ds/sample_tree_node_update.html: Same.
+	* docs/html/ext/pb_ds/invalidation_guarantee_erase.png
+	* docs/html/ext/pb_ds/basic_invalidation_guarantee.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png
+	* docs/html/ext/pb_ds/point_iterators_range_ops_2.png
+	* docs/html/ext/pb_ds/null_probe_fn.html: Same.
+	* docs/html/ext/pb_ds/hash_prime_size_policy.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png
+	* docs/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large.html: Same.
+	* docs/html/ext/pb_ds/sample_resize_policy.html: Same.
+	* docs/html/ext/pb_ds/binomial_heap_tag.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png
+	* docs/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png
+	* docs/html/ext/pb_ds/trie_based_containers.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png
+	* docs/html/ext/pb_ds/tree_split_join_timing_test_local.png
+	* docs/html/ext/pb_ds/text_find_timing_test_hash_gcc.png
+	* docs/html/ext/pb_ds/motivation.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/tree_split_join_timing_test_gcc.png
+	* docs/html/ext/pb_ds/tree.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png
+	* docs/html/ext/pb_ds/invalidation_guarantee_cd.png
+	* docs/html/ext/pb_ds/tutorial.html: Same.
+	* docs/html/ext/pb_ds/null_trie_node_update.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png
+	* docs/html/ext/pb_ds/point_iterators_cd.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png
+	* docs/html/ext/pb_ds/rb_tree_tag.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png
+	* docs/html/ext/pb_ds/exceptions.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png
+	* docs/html/ext/pb_ds/hash_policy_cd.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html: Same.
+	* docs/html/ext/pb_ds/ds_gen.html: Same.
+	* docs/html/ext/pb_ds/hash_exponential_size_policy.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png
+	* docs/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png
+	* docs/html/ext/pb_ds/index.html: Same.
+	* docs/html/ext/pb_ds/binary_heap_tag.html: Same.
+	* docs/html/ext/pb_ds/basic_hash_tag.html: Same.
+	* docs/html/ext/pb_ds/trie_order_statistics_node_update.html: Same.
+	* docs/html/ext/pb_ds/sample_resize_trigger.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png
+	* docs/html/ext/pb_ds/hash_text_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test.html: Same.
+	* docs/html/ext/pb_ds/trie_tag.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png
+	* docs/html/ext/pb_ds/pq_tests.html: Same.
+	* docs/html/ext/pb_ds/insert_resize_sequence_diagram2.png
+	* docs/html/ext/pb_ds/node_invariant_invalidations.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png
+	* docs/html/ext/pb_ds/resize_policy_cd.png
+	* docs/html/ext/pb_ds/embedded_lists_1.png
+	* docs/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png
+	* docs/html/ext/pb_ds/null_lu_metadata.html: Same.
+	* docs/html/ext/pb_ds/tree_order_statistics_timing_test.html: Same.
+	* docs/html/ext/pb_ds/trie_prefix_search_node_update.html: Same.
+	* docs/html/ext/pb_ds/hash_range_hashing_seq_diagram.png
+	* docs/html/ext/pb_ds/point_invalidation_guarantee.html: Same.
+	* docs/html/ext/pb_ds/direct_mod_range_hashing.html: Same.
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png
+	* docs/html/ext/pb_ds/misc.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png
+	* docs/html/ext/pb_ds/counter_lu_policy.html: Same.
+	* docs/html/ext/pb_ds/different_underlying_dss.png
+	* docs/html/ext/pb_ds/restoring_node_invariants.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large.html: Same.
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png
+	* docs/html/ext/pb_ds/sample_update_policy.html: Same.
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png
+	* docs/html/ext/pb_ds/tree_order_statistics_timing_test_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/simple_list.png
+	* docs/html/ext/pb_ds/text_find_timing_test_hash_msvc.png
+	* docs/html/ext/pb_ds/assoc_examples.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png
+	* docs/html/ext/pb_ds/hash_based_containers.html: Same.
+	* docs/html/ext/pb_ds/text_find_timing_test_tree_like_local.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/tree_node_iterator.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png
+	* docs/html/ext/pb_ds/trie_node_iterator.html: Same.
+	* docs/html/ext/pb_ds/tree_based_containers.html: Same.
+	* docs/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png
+	* docs/html/ext/pb_ds/rationale_null_node_updator.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png
+	* docs/html/ext/pb_ds/lu.png
+	* docs/html/ext/pb_ds/assoc_container_traits.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png
+	* docs/html/ext/pb_ds/assoc_design.html: Same.
+	* docs/html/ext/pb_ds/splay_tree_tag.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html: Same.
+	* docs/html/ext/pb_ds/assoc_container_tag_cd.svg
+	* docs/html/ext/pb_ds/resize_error.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_text_join_timing_test.html: Same.
+	* docs/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png
+	* docs/html/ext/pb_ds/trie_const_node_iterator.html: Same.
+	* docs/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/sample_size_policy.html: Same.
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png
+	* docs/html/ext/pb_ds/cc_hash_table.html: Same.
+	* docs/html/ext/pb_ds/node_invariants.png
+	* docs/html/ext/pb_ds/tree_split_join_timing_test_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html: Same.
+	* docs/html/ext/pb_ds/tree_order_statistics_node_update.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png
+	* docs/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png
+	* docs/html/ext/pb_ds/priority_queue.html: Same.
+	* docs/html/ext/pb_ds/assoc_tests.html: Same.
+	* docs/html/ext/pb_ds/assoc_container_tag_cd.png
+	* docs/html/ext/pb_ds/basic_hash_table.html: Same.
+	* docs/html/ext/pb_ds/basic_tree_tag.html: Same.
+	* docs/html/ext/pb_ds/tree_split_join_timing_test.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png
+	* docs/html/ext/pb_ds/insert_resize_sequence_diagram3.png
+	* docs/html/ext/pb_ds/embedded_lists_2.png
+	* docs/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png
+	* docs/html/ext/pb_ds/sample_ranged_probe_fn.html: Same.
+	* docs/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png
+	* docs/html/ext/pb_ds/sample_trie_node_update.html: Same.
+	* docs/html/ext/pb_ds/introduction.html: Same.
+	* docs/html/ext/pb_ds/pq_performance_tests.html: Same.
+	* docs/html/ext/pb_ds/pat_trie.png
+	* docs/html/ext/pb_ds/range_invalidation_guarantee.html: Same.
+	* docs/html/ext/pb_ds/contact.html: Same.
+	* docs/html/ext/pb_ds/sample_range_hashing.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/update_seq_diagram.png
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/direct_mask_range_hashing.html: Same.
+	* docs/html/ext/pb_ds/tests.html: Same.
+	* docs/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png
+	* docs/html/ext/pb_ds/tree_node_updator_policy_cd.png
+	* docs/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html: Same.
+	* docs/html/ext/pb_ds/trie_node_updator_policy_cd.png
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png
+	* docs/html/ext/pb_ds/concepts.html: Same.
+	* docs/html/ext/pb_ds/pq_examples.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_tag.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html: Same.
+	* docs/html/ext/pb_ds/update_policy_cd.png
+	* docs/html/ext/pb_ds/thin_heap_tag.html: Same.
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png
+	* docs/html/ext/pb_ds/basic_tree.html: Same.
+	* docs/html/ext/pb_ds/null_hash_fn.html: Same.
+	* docs/html/ext/pb_ds/null_tree_node_update.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png
+	* docs/html/ext/pb_ds/trie.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/rc_binomial_heap_tag.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png
+	* docs/html/ext/pb_ds/pq_container_traits.html: Same.
+	* docs/html/ext/pb_ds/pq_design.html: Same.
+	* docs/html/ext/pb_ds/checked_by_tidy.gif
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png
+	* docs/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png
+	* docs/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png
+	* docs/html/ext/pb_ds/acks.html: Same.
+	* docs/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png
+	* docs/html/ext/pb_ds/cc_hash_tag.html: Same.
+	* docs/html/ext/pb_ds/sample_ranged_hash_fn.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png
+	* docs/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small.html: Same.
+	* docs/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png
+	* docs/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png
+	* docs/html/ext/pb_ds/PythonPoweredSmall.gif
+	* docs/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png
+	* docs/html/ext/pb_ds/pat_trie_tag.html: Same.
+	* docs/html/ext/pb_ds/hash_standard_resize_policy.html: Same.
+	* docs/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png
+	* docs/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png
+	* docs/html/ext/pb_ds/join_error.html: Same.
+	* docs/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png
+	* docs/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png
+
+	* testsuite/ext/pb_ds: New.
+	* testsuite/ext/pb_ds/regression: New.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/associative_containers.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/priority_queues.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/example: New.
+	* testsuite/ext/pb_ds/example/hash_shift_mask.cc: Same.
+	* testsuite/ext/pb_ds/example/basic_set.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Same.
+	* testsuite/ext/pb_ds/example/store_hash.cc: Same.
+	* testsuite/ext/pb_ds/example/assoc_container_traits.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_load_set_change.cc: Same.
+	* testsuite/ext/pb_ds/example/ranged_hash.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_resize.cc: Same.
+	* testsuite/ext/pb_ds/example/tree_order_statistics.cc: Same.
+	* testsuite/ext/pb_ds/example/trie_prefix_search.cc: Same.
+	* testsuite/ext/pb_ds/example/basic_multiset.cc: Same.
+	* testsuite/ext/pb_ds/example/priority_queue_xref.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_find_neg.cc: Same.
+	* testsuite/ext/pb_ds/example/erase_if.cc: Same.
+	* testsuite/ext/pb_ds/example/priority_queue_container_traits.cc: Same.
+	* testsuite/ext/pb_ds/example/tree_join.cc: Same.
+	* testsuite/ext/pb_ds/example/basic_map.cc: Same.
+	* testsuite/ext/pb_ds/example/trie_split.cc: Same.
+	* testsuite/ext/pb_ds/example/priority_queue_split_join.cc: Same.
+	* testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc: Same.
+	* testsuite/ext/pb_ds/example/priority_queue_erase_if.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_mod.cc: Same.
+	* testsuite/ext/pb_ds/example/tree_order_statistics_join.cc: Same.
+	* testsuite/ext/pb_ds/example/trie_dna.cc: Same.
+	* testsuite/ext/pb_ds/example/hash_initial_size.cc: Same.
+	* testsuite/ext/pb_ds/example/basic_priority_queue.cc: Same.
+	* testsuite/ext/pb_ds/example/tree_intervals.cc: Same.
+	* testsuite/ext/pb_ds/example/basic_multimap.cc: Same.
+	* testsuite/performance/ext: New.
+	* testsuite/performance/ext/pb_ds: New.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc: Same.
+	* testsuite/performance/ext/pb_ds/text_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/random_int_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp: Same.
+	* testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc: Same.
+	* testsuite/data/make_graph_test_infos.xml: Same.
+	* testsuite/data/thirty_years_among_the_dead_preproc.txt: New.
+	* testsuite/data/make_graph_htmls.xml: Same.
+	* testsuite/util/regression: New.
+	* testsuite/util/regression/trait: New.
+	* testsuite/util/regression/trait/priority_queue: New.
+	* testsuite/util/regression/trait/priority_queue/trait.hpp: Same.
+	* testsuite/util/regression/trait/erase_if_fn.hpp: Same.
+	* testsuite/util/regression/trait/assoc: New.
+	* testsuite/util/regression/trait/assoc/native_type_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/node_update_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/get_set_load_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/resize_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/to_string.hpp: Same.
+	* testsuite/util/regression/rand: New.
+	* testsuite/util/regression/rand/priority_queue: New.
+	* testsuite/util/regression/rand/priority_queue/detail: New.
+	* testsuite/util/regression/rand/priority_queue/detail/erase_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/cmp_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/policy_access_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/defs_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/it_conversion_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/constructor_destructor_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/diagnostic_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/insert_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/clear_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/modify_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/split_join_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/io: New.
+	* testsuite/util/regression/rand/io/priority_queue: New.
+	* testsuite/util/regression/rand/io/priority_queue/xml_formatter.hpp: Same.
+	* testsuite/util/regression/rand/io/assoc: New.
+	* testsuite/util/regression/rand/io/assoc/xml_formatter.hpp: Same.
+	* testsuite/util/regression/rand/io/xml_formatter.hpp: Same.
+	* testsuite/util/regression/rand/assoc: New.
+	* testsuite/util/regression/rand/assoc/detail: New.
+	* testsuite/util/regression/rand/assoc/detail/subscript_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/cmp_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/policy_access_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/defs_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/it_conversion_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/diagnostic_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/clear_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/get_set_load_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/erase_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/resize_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/constructor_destructor_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/insert_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/split_join_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/get_set_loads_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/priority_queue: New.
+	* testsuite/util/regression/priority_queue/common_type.hpp: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+	* testsuite/util/regression/assoc: New.
+	* testsuite/util/regression/assoc/common_type.hpp: Same.
+	* testsuite/util/regression/res_mng: New.
+	* testsuite/util/regression/res_mng/forced_exception.hpp: Same.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator_base.cc: Same.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator_base.hpp: Same.
+	* testsuite/util/regression/res_mng/dbg_ex_allocator.hpp: Same.
+	* testsuite/util/rng: New.
+	* testsuite/util/rng/twister_rand_gen.cc: Same.
+	* testsuite/util/rng/twister_rand_gen.hpp: Same.
+	* testsuite/util/native_type: New.
+	* testsuite/util/native_type/priority_queue: New.
+	* testsuite/util/native_type/priority_queue/native_priority_queue.hpp: Same.
+	* testsuite/util/native_type/priority_queue/native_pq_tag.hpp: Same.
+	* testsuite/util/native_type/assoc: New.
+	* testsuite/util/native_type/assoc/native_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_tree_tag.hpp: Same.
+	* testsuite/util/native_type/assoc/native_set.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_map.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_tag.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_set.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: Same.
+	* testsuite/util/common_type: New.
+	* testsuite/util/common_type/priority_queue
+	* testsuite/util/common_type/priority_queue/common_type.hpp: Same.
+	* testsuite/util/common_type/priority_queue/string_form.hpp: Same.
+	* testsuite/util/common_type/priority_queue/detail
+	* testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc: New.
+	* testsuite/util/common_type/assoc/common_type.hpp: Same.
+	* testsuite/util/common_type/assoc/string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/template_policy.hpp: Same.
+	* testsuite/util/common_type/assoc/detail: New.
+	* testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/native_set.hpp: Same.
+	* testsuite/util/performance: New.
+	* testsuite/util/performance/priority_queue: New.
+	* testsuite/util/performance/priority_queue/mem_usage: New.
+	* testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing: New.
+	* testsuite/util/performance/priority_queue/timing/push_pop_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/push_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/join_test.hpp: Same.
+	* testsuite/util/performance/priority_queue/timing/modify_test.hpp: Same.
+	* testsuite/util/performance/io: New.
+	* testsuite/util/performance/io/xml_formatter.hpp: Same.
+	* testsuite/util/performance/assoc: New.
+	* testsuite/util/performance/assoc/mem_usage: New.
+	* testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp: Same.
+	* testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
+	* testsuite/util/performance/assoc/timing: New.
+	* testsuite/util/performance/assoc/timing/common_type.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/subscript_find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/subscript_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/tree_split_join_test.hpp: Same.
+	* testsuite/util/performance/time: New.
+	* testsuite/util/performance/time/elapsed_timer.cc: Same.
+	* testsuite/util/performance/time/elapsed_timer.hpp: Same.
+	* testsuite/util/performance/time/timing_test_base.hpp: Same.
+	* testsuite/util/performance/mem: New.
+	* testsuite/util/performance/mem/mem_track_allocator_base.hpp: Same.
+	* testsuite/util/performance/mem/mem_track_allocator.hpp: Same.
+	* testsuite/util/hash_fn: New.
+	* testsuite/util/hash_fn/limit_string_hash_fn.hpp: Same.
+	* testsuite/util/hash_fn/string_ranged_hash_fn.hpp: Same.
+	* testsuite/util/hash_fn/string_hash_fn.hpp: Same.
+	* testsuite/util/hash_fn/string_ranged_probe_fn.hpp: Same.
+	* testsuite/util/hash_fn/dna_str_limit.hpp: Same.
+	* testsuite/util/io: New.
+	* testsuite/util/io/prog_bar.cc: Same.
+	* testsuite/util/io/prog_bar.hpp: Same.
+	* testsuite/util/io/text_populate.hpp: Same.
+	* testsuite/util/io/xml.hpp: Same.
+	* testsuite/util/io/illegal_input_error.hpp: Same.
+	* testsuite/util/io/xml_test_formatter.hpp: Same.
+	* testsuite/util/io/verified_cmd_line_input.cc: Same.
+	* testsuite/util/io/verified_cmd_line_input.hpp: Same.
+	* testsuite/util/statistic: New.
+	* testsuite/util/statistic/sample_var.hpp: Same.
+	* testsuite/util/statistic/res_recorder.hpp: Same.
+	* testsuite/util/statistic/sample_mean.hpp: Same.
+	* testsuite/util/statistic/sample_mean_confidence_checker.hpp: Same.
+
+2006-06-12  Paolo Carlini  
+
+	PR libstdc++/26970
+	* config/locale/gnu/c_locale.h (__convert_from_v<>): Change to
+	variadic function, instead of template function.
+	* config/locale/generic/c_locale.h (__convert_from_v<>): Likewise.
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
+	Adjust.
+	(money_put<>::do_put(long double)): Likewise.
+	* src/locale-misc-inst.cc: Remove.
+	* src/Makefile.am: Adjust.
+	* src/Makefile.in: Regenerate.
+
+2006-06-09  Paolo Carlini  
+
+	* include/tr1/random (random_device::random_device(const
+	std::string& = "/dev/urandom")): Open in binary mode.
+
+	* include/tr1/random (random_device::random_device(const
+	std::string& = "rand")): Use mersenne_twister.
+	(random_device::_M_strtoul): New.
+	(random_device::operator()()): Update.
+
+	* include/tr1/random: Minor stylistic changes, consistently
+	qualify with std::.
+
+2006-06-09  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_RANDOM_TR1]): New, check for
+	the availability of "/dev/random" and "/dev/urandom".
+	* configure.ac: Use it.
+	* include/tr1/random (random_device): Implement, a fall-back for
+	systems not providing "/dev/random" and "/dev/urandom" included.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/
+	cons/default.cc: New.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/
+	cons/token.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/
+	requirements/typedefs.cc: Likewise.
+	* config.h.in: Regenerate.
+	* configure: Likewise.
+
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/
+	cons/gen1.cc: Minor tweak, add bool test.
+
+2006-06-06  Benjamin Kosnik  
+
+	* testsuite/util: New directory.
+	* testsuite/testsuite_hooks.cc: Move to util sub-directory.
+	* testsuite/testsuite_abi_check.cc: Same.
+	* testsuite/testsuite_abi.cc: Same.
+	* testsuite/testsuite_tr1.h: Same.
+	* testsuite/testsuite_io.h: Same.
+	* testsuite/testsuite_iterators.h: Same.
+	* testsuite/testsuite_allocator.cc: Same.
+	* testsuite/testsuite_allocator.h: Same.
+	* testsuite/testsuite_hooks.h: Same.
+	* testsuite/testsuite_character.cc: Same.
+	* testsuite/testsuite_abi.h: Same.
+	* testsuite/testsuite_character.h: Same.
+	* testsuite/testsuite_visualization.h: Same.
+	* testsuite/testsuite_performance.h: Same.
+	* testsuite/testsuite_shared.cc: Same.
+	* testsuite/testsuite_common_types.h: Same.
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Adjust paths.
+	* testsuite/libstdc++-abi/abi.exp: Same.
+	* testsuite/libstdc++-dg/conformance.exp: Remove any files in the
+	utilities subdirectory from the list of test cases.
+
+	* scripts/testsuite_flags.in (build-includes): Adjust path for
+	testsuite includes.
+	* scripts/create_testsuite_files (dlist): Don't let utility files
+	creep into the testsuite_files list.
+
+2006-06-06  Paolo Carlini  
+
+	* include/tr1/random (mersenne_twister<>::operator==,
+	operator!=, operator<<, operator>>): Implement.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/
+	operators/equal.cc: New.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/
+	operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/
+	operators/serialize.cc: Likewise.
+
+	* include/tr1/random (subtract_with_carry<>::operator==): Fix,
+	compare the whole state; use std::equal.
+
+	* include/tr1/random: Minor formatting and style changes.
+
+2006-06-06  Benjamin Kosnik  
+
+	* testsuite/tr1/5_numerical_facilies: Move to...
+	* testsuite/tr1/5_numerical_facilities: ...this.
+
+2006-06-06  Paolo Carlini  
+
+	* include/tr1/random: Trivial uglification fixes.
+	* include/tr1/random.tcc: Likewise.
+
+	* include/tr1/random (subtract_with_carry<>::
+	subtract_with_carry(_IntType)): Fix parameter type to unsigned long.
+	(subtract_with_carry<>::seed(_IntType)): Likewise.
+	* include/tr1/random.tcc (subtract_with_carry<>::seed(_IntType)):
+	Adjust.
+
+2006-06-05  Paolo Carlini  
+
+	* include/tr1/random (mersenne_twister<>::seed()): Fix per
+	tr1/5.1.4.2, p8.
+	* include/tr1/random.tcc (mod_w): Add.
+	(mersenne_twister<>::seed(unsigned long)): Fix per tr1/5.1.4.2, p9.
+	(mersenne_twister<>::seed(Gen&, false_type)): Adjust to use mod_w.
+	* testsuite/tr1/5_numerical_facilies/random/mt19937.cc: Fix
+	expected result per tr1/5.1.5, p2.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/default.cc: Adjust.
+
+	* include/tr1/random (exponential_distribution<>::operator()()): Fix.
+
+2006-06-05  Paolo Carlini  
+
+	* include/tr1/random.tcc (Max::value()): Cast 1 to Tp(1) and
+	adjust shift count to w; rename as Max_w.
+	(struct Mod_w): New.
+	(mersenne_twister<>::seed(Gen&, false_type): Use the latter.
+	(mersenne_twister<>::operator()()): Fix ~0ul to ~_UInt().
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/default.cc: Fix ~0ul to 2^32-1.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/gen1.cc: Likewise.
+
+2006-06-05  Stephen M. Webb  
+
+	* include/tr1/random: New.
+	* include/tr1/random.tcc: Likewise.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/5_numerical_facilies/random/ranlux3.cc: New.
+	* testsuite/tr1/5_numerical_facilies/random/ranlux4.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mt19937.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/variate_generator/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	cons/seed1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	cons/seed2.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	cons/gen1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	operators/equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/subtract_with_carry/
+	operators/serialize.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/uniform_real/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/discard_block/
+	requirements/requirements.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	cons/seed1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	cons/seed2.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	cons/gen1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	requirements/non_uint_neg.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	operators/equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	operators/not_equal.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/linear_congruential/
+	operators/serialize.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/xor_combine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/minstd_rand.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/minstd_rand0.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/uniform_int/
+	cons/range.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/uniform_int/
+	cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/uniform_int/
+	cons/range_neg.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/uniform_int/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/seed1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/seed2.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/default.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	cons/gen1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilies/random/mersenne_twister/
+	requirements/typedefs.cc: Likewise.
+	* include/Makefile.in: Regenerate.
+	* testsuite/tr1/headers.cc: Update.
+
+2006-06-04  Paolo Carlini  
+
+	PR libstdc++/27867
+	* include/bits/valarray_before.h (struct _BinClos<_Oper, _ValArray,
+	_ValArray, _Tp, _Tp>): Fix value_type typedef.
+	* testsuite/26_numerics/valarray/27867.cc: New.
+
+2006-05-29  Paolo Carlini  
+
+	PR libstdc++/24692
+	* include/bits/atomicity.h (__exchange_and_add_multi,
+	__atomic_add_multi): New, depending on _GLIBCXX_ATOMIC_BUILTINS,
+	inline the atomic builtins.
+	(__exchange_and_add_dispatch, __atomic_add_dispatch): Adjust.
+	* configure.ac: Define _GLIBCXX_ATOMIC_BUILTINS when the atomic
+	builtins are available.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2006-05-27  Paolo Carlini  
+
+	* configure.host: If the CPU provides atomic builtins select
+	generic/atomic_builtins/atomicity.h.
+	* config/cpu/generic/atomic_builtins/atomicity.h: Add.
+	* config/cpu/powerpc/atomicity.h: Remove.
+	* config/cpu/ia64/atomicity.h: Likewise.
+	* config/cpu/alpha/atomicity.h: Likewise.
+	* config/cpu/s390/atomicity.h: Likewise.
+
+2006-05-26  Carlos O'Donell  
+
+	* Makefile.am: Add install-html target. Add install-html to .PHONY
+	* Makefile.in: Regenerate.
+
+2006-05-24  Paolo Carlini  
+
+	PR libstdc++/24704
+	* include/bits/atomicity.h (__exchange_and_add_single,
+	__atomic_add_single): New, single thread versions of the atomic
+	functions.
+	(__exchange_and_add_dispatch, __atomic_add_dispatch): New,
+	depending on __GTHREADS and __gthread_active_p() dispatch either
+	to the above or to the existing atomic functions.
+	* include/ext/pool_allocator.h: Update callers.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/bits/locale_classes.h: Likewise.
+	* include/bits/basic_string.h: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* include/tr1/boost_shared_ptr.h: Likewise.
+	* src/ios.cc: Likewise.
+	* src/locale.cc: Likewise.
+	* src/ios_init.cc: Likewise.
+
+2006-05-23  Paolo Carlini  
+
+	* testsuite/testsuite_shared.cc: Fix --enable-threads=single build.
+
+2006-05-19  Paolo Carlini  
+
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Avoid leaking the
+	semaphores if a VERIFY fails.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+
+2006-05-17  Paolo Carlini  
+
+	* include/tr1/hashtable (hashtable<>::m_find): Remove; update callers.
+
+	* include/tr1/hashtable (map_base<>::operator[]): Move out of line.
+
+	* include/tr1/hashtable (hashtable<>::m_insert(const value_type&,
+	std::tr1::false_type)): Avoid memory leak risk for new_node.
+
+2006-05-15  Paolo Carlini  
+
+	* include/tr1/hashtable (hashtable<>::m_find, m_insert_bucket): Add.
+	(hashtable<>::find, m_insert(const value_type&, std::tr1::true_type),
+	map_base<>::operator[]): Use the above.
+	* testsuite/performance/23_containers/insert/unordered_map_array.cc:
+	New.
+
+	* include/tr1/hashtable (hashtable<>::find_node,
+	insert(const value_type&, ...), erase_node): Rename to m_*, adjust
+	callers.
+	* include/tr1/hashtable: Minor cosmetic changes.
+
+2006-05-13  Peter Doerfler  
+
+	* include/tr1/hashtable (identity<>::operator(),
+	extract1st<>::operator()): Return by const ref.
+
+2006-05-10  Steve Ellcey  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_cxa_atexit):
+	Move to gcc subdir.
+	* testsuite/lib/dg-options.exp (dg-require-iconv): Remove.
+	(dg-require-cxa-atexit): Move to gcc subdir.
+
+2006-05-10  Paolo Carlini  
+	    Peter Doerfler  
+
+	* include/tr1/hashtable (hashtable_iterator<>::hashtable_iterator(),
+	hashtable_const_iterator<>::hashtable_const_iterator(),
+	node_iterator<>::node_iterator(),
+	node_const_iterator<>::node_const_iterator()): Add.
+	(node_iterator<>::node_iterator(hash_node<>*),
+	node_const_iterator<>::node_const_iterator(hash_node<>*)): Tweak,
+	remove default.
+	* testsuite/tr1/6_containers/unordered/hashtable/
+	iterators_default_constructor.c: New.
+
+2006-05-10  Marc Glisse  
+
+	* include/ext/pool_allocator.h: Add missing std:: qualifications.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/ext/pb_assoc/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Likewise.
+	* include/ext/pb_assoc/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Likewise.
+	* include/ext/pb_assoc/detail/lu_policy/
+	counter_lu_metadata_imp.hpp: Likewise.
+	* include/ext/pb_assoc/detail/map_debug_base.hpp: Likewise.
+	* libsupc++/eh_alloc.cc: Typo: memcpy -> memset.
+
+2006-05-07  Paolo Carlini  
+
+	* include/tr1/type_traits (integral_constant<>::value): Define.
+	* testsuite/tr1/4_metaprogramming/helper_classes/static_definition.cc:
+	New.
+
+2006-05-04  Douglas Gregor  
+
+	PR libstdc++/27404
+	* include/ext/rope (_Rope_const_iterator<>::operator*() const,
+	_Rope_iterator<>::operator*() const): Add.
+
+2006-05-01  Paolo Carlini  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_WCHAR_T): Always check the
+	presence of wctype.h, for use in GLIBCXX_ENABLE_C99.
+	* configure: Regenerate.
+
+2006-04-29  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
+	Special case main parsing loop for !_M_allocated (i.e., "C" locale).
+	(num_get<>::_M_extract_int): Likewise.
+	* include/bits/locale_facets.h (num_get<>::_M_find): New.
+
+2006-04-27  Benjamin Kosnik  
+
+	* docs/html/17_intro/TODO: Update.
+
+2006-04-26  Benjamin Kosnik  
+
+	PR libstdc++/26875
+	* include/ext/array_allocator.h (array_allocator): _M_used, new
+	data member.
+	* testsuite/ext/array_allocator/26875.cc: New.
+
+2006-04-26  Shantonu Sen  
+
+	PR libstdc++/26513
+	* scripts/make_exports.pl: Use $ENV{NM_FOR_TARGET}, if present.
+
+2006-04-23  Marc Glisse  
+
+	PR libstdc++/27199
+	* ext/pool_allocator.h: Add using declarations for size_t, ptrdiff_t.
+	* ext/bitmap_allocator.h: Likewise; qualify with std::.
+	* ext/new_allocator.h: Likewise.
+	* ext/malloc_allocator.h: Likewise.
+	* ext/array_allocator.h: Likewise.
+	* ext/mt_allocator.h: Likewise.
+	* ext/functional: Likewise for size_t.
+	* ext/debug_allocator.h: Likewise.
+	* bits/char_traits.h: Qualify with std:: size_t.
+	* debug/hash_multimap.h: Likewise.
+
+2006-04-23  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 42.
+
+2006-04-19  Paolo Carlini  
+
+	PR libstdc++/26424
+	* include/tr1/hashtable (X<>::primes): Extend for 64-bit machines.
+	(X<>::n_primes): Adjust.
+	(prime_rehash_policy::next_bkt, bkt_for_elements, need_rehash): Adjust.
+
+2006-04-18  Paolo Carlini  
+
+	* docs/html/faq/index.html ([5.5]): Adjust to mention function
+	objects and reference_wrapper; minor tweaks.
+	* docs/html/faq/index.txt: Regenerate.
+
+2006-04-16  Paolo Carlini  
+
+	PR libstdc++/6702 (again)
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Don't check non-C99
+	wchar_t functions...
+	(GLIBCXX_ENABLE_WCHAR_T): ... do that here.
+	* configure.ac: Adjust order of checks.
+	* configure: Regenerate.
+
+2006-04-14  Douglas Gregor  
+
+	PR libstdc++/27162
+	* include/bits/stl_algo.h (__search_n(,,,, _BinaryPredicate,
+	std::forward_iterator_tag)): Use __binary_pred, not ==.
+
+2006-04-10  Matthias Klose  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Recognize multilib
+	directory names containing underscores.
+
+2006-04-10  Paolo Carlini  
+
+	DR 538, [Ready]
+	* include/bits/stl_algo.h (__unique_copy(,,, input_iterator_tag,
+	output_iterator_tag), and predicated counterpart): Revert to the
+	algorithm pre-DR 241, i.e., value_type of InputIterator is now
+	required to be Assignable too.
+	* testsuite/25_algorithms/unique_copy/3.cc: Remove.
+	* docs/html/ext/howto.html: Add an entry for DR 538.
+
+2006-03-29  Benjamin Kosnik  
+
+	* testsuite/data/sgetn.txt: Correct copyright holder.
+	* testsuite/data/wistream_extractor_other-1.tst: Same.
+	* testsuite/data/wistream_extractor_other-2.tst: Same.
+	* testsuite/data/istream_extractor_other-1.txt: Same.
+	* testsuite/data/filebuf_virtuals-1.txt: Same.
+	* testsuite/data/wostream_inserter_other-1.tst: Same.
+	* testsuite/data/wostream_inserter_other-2.tst: Same.
+	* testsuite/data/ostream_inserter_other-1.tst: Same.
+	* testsuite/data/ostream_inserter_other-2.tst: Same.
+	* testsuite/data/wistream_extractor_other-1.txt: Same.
+	* testsuite/data/istream_extractor_other-1.tst: Same.
+	* testsuite/data/istream_extractor_other-2.tst: Same.
+	* testsuite/data/filebuf_virtuals-1.tst: Same.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Adjust test
+	conditions.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Same.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Same.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Same.
+
+2006-03-28  Paolo Carlini  
+
+	* include/ext/vstring.h (operator[]): Allow s[s.size()] in
+	debug mode, but not pedantic mode.
+
+2006-03-24  Mark Mitchell  
+            Joseph S. Myers  
+
+	PR libstdc++/20448
+	PR libstdc++/20451
+	* scripts/testsuite_flags.in (--cxxflags): Don't define LOCALEDIR.
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Always define
+	LOCALEDIR to ".".
+	(v3-build_support): Build MO files.
+
+2006-03-22  Paolo Carlini  
+
+	PR libstdc++/26777
+	* include/bits/fstream.tcc (basic_filebuf<>::_M_seek): Check
+	the return value of _M_file.seekoff.
+	* testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: New.
+
+2006-03-21  Paolo Carlini  
+
+	PR libstdc++/25482
+	* include/bits/stl_algobase.h (__copy_aux(_CharT*, _CharT*,
+	ostreambuf_iterator<_CharT>), __copy_aux(const _CharT*, const _CharT*,
+	ostreambuf_iterator<_CharT>), __copy_aux(istreambuf_iterator<_CharT>,
+	istreambuf_iterator<_CharT>, _CharT*), copy(istreambuf_iterator<_CharT>,
+	istreambuf_iterator<_CharT>, ostreambuf_iterator<_CharT>)): Declare.
+	* include/bits/stl_algo.h (find(istreambuf_iterator<_CharT>,
+	istreambuf_iterator<_CharT>, _CharT)): Likewise.
+	* include/bits/streambuf_iterator.h (copy(istreambuf_iterator<_CharT>,
+	istreambuf_iterator<_CharT>, ostreambuf_iterator<_CharT>),
+	__copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>),
+	__copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>),
+	__copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
+	_CharT*), find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
+	_CharT)): Define.
+	(class istreambuf_iterator<>, class ostreambuf_iterator<>): Declare
+	friends.
+	* include/std/std_streambuf.h (class basic_streambuf<>): Likewise.
+	* include/bits/cpp_type_traits.h (struct __is_char<>): Add.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc: New.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc: New.
+	* testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc: New.
+	* testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc: New.
+	* testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc: New.
+	* testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc: New.
+	* testsuite/performance/25_algorithms/copy_streambuf_iterators.cc: New.
+	* testsuite/performance/25_algorithms/find_istreambuf_iterators.cc: New.
+
+006-03-13  Paolo Carlini  
+
+	* include/bits/postypes.h (fpos<>::operator==, operator!=): Remove,
+	exploit conversion to streamoff.
+	* testsuite/27_io/fpos/mbstate_t/5.cc: New.
+
+2006-03-12  Howard Hinnant  
+
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc:
+	Fix race condition.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
+2006-03-10  Paolo Carlini  
+
+	* include/tr1/cmath: Add atan2 and pow bits; add using declarations.
+	* include/tr1/math.h: Add using declarations.
+	* include/tr1/complex: Add using declarations.
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: Fully
+	qualify calls.
+	* testsuite/tr1/8_c_compatibility/cmath/overloads.cc: Likewise;
+	add atan2 and pow bits.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_float.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc: Likewise;
+	adjust polar bits.
+
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add checks for double_t
+	and float_t typedefs.
+	* include/tr1/cmath: Add double_t and float_t.
+	* testsuite/tr1/8_c_compatibility/cmath/types.cc: New.
+
+	* include/tr1/ctgmath: New.
+	* include/tr1/tgmath.h: Likewise.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/headers.cc: Update.
+
+	* include/Makefile.in: Regenerate.
+	* configure: Likewise.
+
+	* docs/html/ext/tr1.html: Update.
+
+2006-03-08  Paolo Carlini  
+
+	Implement the resolution of DR 455, [DR].
+	* src/ios_init.cc (ios_base::Init::Init()): Do it.
+	* testsuite/27_io/objects/char/dr455.cc: New.
+	* testsuite/27_io/objects/wchar_t/dr455.cc: Likewise.
+	* docs/html/ext/howto.html: Add an entry for DR 455.
+
+2006-03-07  Paolo Carlini  
+
+	* include/tr1/cmath: Add C99 overloads.
+	* include/tr1/common.h (struct __promote_3): Add.
+	* testsuite/tr1/8_c_compatibility/cmath/overloads.cc: New.
+
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: Tweak.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_float.cc: Likewise.
+
+2006-03-06  Paolo Carlini  
+
+	PR target/26532
+	* config/io/c_io_stdio.h (struct __ios_flags): Remove.
+	* include/bits/ios_base.h: Adjust consistently.
+	(ios_base::_S_local_word_size): Change to an anonymous enum.
+	* src/ios.cc: Do not define static const data of __ios_flags,
+	likewise for ios_base::_S_local_word_size.
+	* include/bits/locale_classes.h (locale::_S_categories_size):
+	Change to an anonymous enum.
+	* src/locale.cc: Don't define.
+
+2006-03-03  Paolo Carlini  
+
+	PR libstdc++/26526
+	* config/abi/pre/gnu.ver (__copy_streambufs, 64-bit version): Add
+	@GLIBCXX_3.4.8; move existing symbols @GLIBCXX_3.4.8 to 3.4.9.
+	* configure.ac (libtool_VERSION): To 6:9:0.
+	* testsuite/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.9.
+	* configure: Regenerate.
+
+2006-03-02  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Adjust __copy_streambufs_eof export
+	vs 64-bit arches.
+
+2006-03-01  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 41.
+
+2006-02-27  Jakub Jelinek  
+
+	PR other/26208
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Use
+	_Unwind_GetIPInfo instead of _Unwind_GetIP.
+
+2006-02-27  Paolo Carlini  
+
+	PR libstdc++/14866
+	* testsuite/27_io/ios_base/sync_with_stdio/1.cc: Redirect
+	stderr instead.
+
+2006-02-26  Paolo Carlini  
+
+	* include/tr1/cmath: Add templates (8.16.3).
+	* include/tr1/cstdbool: New.
+	* include/tr1/stdbool.h: Likewise.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cmath/templates.cc: New.
+	* testsuite/tr1/headers.cc: Update.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  check.
+	* docs/html/ext/tr1.html: Update.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+2006-02-24  Paolo Carlini  
+
+	* include/tr1/array (array<>::swap, assign): Implement.
+	* include/tr1/array (operator==, operator!=, operator<,
+	operator>, operator>=, operator<=, swap, get): Inline.
+	* testsuite/tr1/6_containers/array/requirements/member_swap.cc: New.
+	* testsuite/tr1/6_containers/array/requirements/assign.cc: Likewise.
+	* testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc:
+	Likewise.
+
+2006-02-23  Benjamin Kosnik  
+
+	* testsuite/22_locale/codecvt/in/wchar_t/1.cc (test01): Change int
+	to size_t. Use explicit static_cast for casts.
+	* testsuite/22_locale/codecvt/in/wchar_t/6.cc (test06): Same.
+	* testsuite/22_locale/codecvt/in/wchar_t/5.cc (test05): Same.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc (test01): Same.
+
+2006-02-22  Paolo Carlini  
+
+	* docs/html/ext/pb_assoc/
+	basic_tree_assoc_cntnr_const_node_iterator.html:Fix links
+	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_node_iterator.html:
+	Likewise.
+	* docs/html/ext/pb_assoc/hash_based_containers.html: Likewise.
+	* docs/html/ext/pb_assoc/hash_standard_resize_policy.html: Likewise.
+	* docs/html/ext/pb_assoc/interface.html: Likewise..
+	* docs/html/ext/pb_assoc/list_updates.html: Likewise.
+	* docs/html/ext/pb_assoc/lu_based_containers.html: Likewise.
+	* docs/html/ext/pb_assoc/resize_policies.html: Likewise.
+	* docs/html/ext/pb_assoc/sample_probe_fn.html: Likewise.
+	* docs/html/ext/pb_assoc/sample_range_hashing.html: Likewise.
+	* docs/html/ext/pb_assoc/sample_ranged_hash_fn.html: Likewise.
+	* docs/html/ext/pb_assoc/sample_ranged_probe_fn.html: Likewise.
+	* docs/html/ext/pb_assoc/sample_resize_policy.html: Likewise.
+	* docs/html/ext/pb_assoc/tree_assoc_cntnr_const_node_iterator.html:
+	Likewise.
+	* docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html: Likewise.
+
+2006-02-22  Paolo Carlini  
+
+	PR libstdc++/26132
+	* include/tr1/hashtable (hashtable<>::rehash): Define.
+	* testsuite/tr1/6_containers/unordered/hashtable/26132.cc: New.
+
+	* include/tr1/hashtable: Trivial formatting and stylistic fixes.
+
+	* testsuite/tr1/headers.cc: remove , not a tr1 header,
+	only an implementation detail.
+
+2006-02-22  Paolo Carlini  
+
+	* include/debug/list (splice): Remove splice_alloc check, redundant
+	after implementing the splice bits of N1599.
+
+2006-02-21  Benjamin Kosnik  
+
+	* include/c_std/cmath.tcc: Use _GLIBCXX_BEGIN_NAMESPACE,
+	_GLIBCXX_END_NAMESPACE.
+
+2006-02-21  Benjamin Kosnik  
+
+	* include/bits/c++config: Simplify debug namespaces.
+	* include/ext/hash_set: Specialize insert_iterator after norm,
+	debug containers have been (optionally) declared. Use nested
+	namespaces.
+	* include/ext/hash_map: Same.
+	* include/debug/hash_map.h (insert): Add specialization for value
+	pointer types.
+	* include/debug/hash_set.h (insert): Same.
+	* include/debug/hash_multimap.h: Change __gnu_debug_def to __debug.
+	* include/debug/set.h: Same.
+	* include/debug/bitset: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/hash_multiset.h: Same.
+	* include/debug/vector: Same.
+	* include/debug/map.h: Same.
+	* include/debug/deque: Same.
+	* include/debug/list: Same.
+	* include/debug/multimap.h. Same.
+	* include/debug/macros.h: Use __gnu_debug.
+	* include/debug/debug.h: Same.
+	* include/debug/formatter.h: Same.
+	* include/debug/safe_sequence.h: Same.
+	* include/debug/functions.h: Same.
+	* include/debug/safe_base.h: Same.
+	* include/debug/safe_iterator.h: Same.
+	* include/debug/safe_iterator.tcc: Same.
+	(_M_invalidate): Adjust compare order.
+	* include/debug/string: Change std::__gnu_debug to __gnu_debug.
+	* include/ext/hashtable.h: Formatting fixes.
+	* include/bits/stl_map.h: Formatting fixes.
+	* src/compatibility.cc: Adjust compatibility symbols for old debug
+	mode model.
+	* src/debug_list.cc: Tweak.
+	* src/debug.cc: Adjust namespaces.
+	* docs/html/debug_mode.html: Adjust namespace names.
+	* testsuite/25_algorithms/heap/heap.cc: Restore _GLIBCXX_DEBUG
+	macro guards, as count values differ when in debug mode.
+	* testsuite/23_containers/vector/26412.cc: Move to...
+	* testsuite/23_containers/vector/26412-1.cc: ... here.
+	* testsuite/23_containers/vector/26412-2.cc: Add.
+
+	* include/ext/pb_assoc/detail/standard_policies.hpp
+	(PB_ASSOC_HASH_NAMESPACE): Remove, use __gnu_cxx::hash_map and
+	std::equal_to.
+
+	* configure.ac (libtool_VERSION): To 6:8:0.
+	* configure: Regenerate.
+	* config/abi/pre/gnu.ver: Revert to exporting __gnu_debug symbols.
+	(GLIBCXX_3.4.8): New.
+	* testsuite/testsuite_abi.cc: Add GLIBCXX_3.4.8 to known versions.
+
+2006-02-21  Paolo Carlini  
+
+	* include/tr1/hashtable: Trivial formatting fixes.
+
+2006-02-20  Paolo Carlini  
+
+	Revert recent commit for libstdc++/26211, now suspended waiting for
+	DR 342 (reopened) to reach a new resolution.
+	* include/bits/istream.tcc (basic_istream<>::tellg, seekg(pos_type),
+	seekg(off_type, ios_base::seekdir)): Remove sentry.
+	* testsuite/27_io/basic_istream/seekg/char/26211.cc: Remove.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Revert changes.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+
+2006-02-19  Paolo Carlini  
+
+	* include/std/std_sstream.h (basic_stringbuf<>::setbuf): Simply
+	clear the internal _M_string, adjust _M_sync call.
+	* include/bits/sstream.tcc (basic_stringbuf<>::_M_sync): Adjust
+	consistently for calls from setbuf.
+
+2006-02-17  Paolo Carlini  
+	    Howard Hinnant  
+
+	PR libstdc++/26250
+	* include/bits/sstream.tcc (basic_stringbuf<>::overflow): Tweak
+	to leave epgtr() just past the new write position, as per the
+	relevant bits of 27.7.1.3/8 (not changed by DR 432).
+	* testsuite/27_io/basic_stringbuf/overflow/char/26250.cc: New.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc: Same.
+
+	* docs/html/ext/howto.html: Add entries for DR 169 and DR 432.
+
+	* include/std/std_sstream.h (basic_stringbuf<>::_M_sync): Move out
+	of line...
+	* include/bits/sstream.tcc: ... here.
+
+2006-02-16  Joseph S. Myers  
+
+	PR libstdc++/14939
+	* config/os/uclibc/ctype_base.h, config/os/uclibc/ctype_inline.h,
+	config/os/uclibc/ctype_noninline.h, config/os/uclibc/os_defines.h:
+	New.
+	* acinclude.m4 (GLIBCXX_CONFIGURE): Test whether using uClibc.
+	* configure.host: Use os/uclibc for uClibc.
+	* crossconfig.m4 (*-linux*): Use link tests.  Don't hardcode
+	presence of math functions.
+	* configure: Regenerate.
+
+2006-02-12  Paolo Carlini  
+
+	PR libstdc++/26211
+	* include/bits/istream.tcc (basic_istream<>::tellg, seekg(pos_type),
+	seekg(off_type, ios_base::seekdir)): Construct a sentry, as per
+	27.6.1.3/1.
+	* testsuite/27_io/basic_istream/seekg/char/26211.cc: New.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Adjust.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+
+2006-02-10  Paolo Carlini  
+
+	PR libstdc++/26181
+	* include/bits/streambuf.tcc (__copy_streambufs_eof): New, like
+	the existing __copy_streambufs but reporting eof in input.
+	(__copy_streambufs): Just use the latter.
+	* src/streambuf.cc (__copy_streambufs_eof): Adjust specializations
+	of __copy_streambufs.
+	* include/bits/istream.tcc (operator>>(__streambuf_type*)): Use
+	__copy_streambufs_eof instead.
+	* include/std/std_streambuf.h: Adjust.
+	* src/streambuf-inst.cc: Adjust.
+	* config/abi/pre/gnu.ver: Export the new symbols.
+	* testsuite/27_io/basic_istream/extractors_other/char/26181.cc: New.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/1.cc: Adjust.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc:
+	Likewise.
+
+2006-02-08  Benjamin Kosnik  
+
+	PR libstdc++/26142
+	* include/debug/debug.h: Move debug alias inside namespace std,
+	same with namespace __gnu_cxx. Add top-level __gnu_debug
+	namespace.
+	* include/debug/hash_multimap.h: Nest within __gnu_cxx, not
+	std. Also, change nesting namespace name from __gnu_debug_def to
+	__gnu_debug.
+	* include/debug/hash_map.h: Same.
+	* include/debug/hash_multiset.h: Same.
+	* include/debug/hash_set.h: Same.
+	* docs/html/debug.html: Same.
+	* testsuite/23_containers/vector/26412.cc: New.
+	* testsuite/23_containers/vector/invalidation/1.cc:  Correct
+	qualifications for debug namespace change.
+	* testsuite/23_containers/vector/invalidation/2.cc: Same.
+	* testsuite/23_containers/vector/invalidation/3.cc: Same.
+	* testsuite/23_containers/vector/invalidation/4.cc: Same.
+	* testsuite/23_containers/deque/invalidation/1.cc: Same.
+	* testsuite/23_containers/deque/invalidation/2.cc: Same.
+	* testsuite/23_containers/deque/invalidation/3.cc: Same.
+	* testsuite/23_containers/deque/invalidation/4.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/1.cc: Same.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/1.cc: Same.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
+	* testsuite/23_containers/bitset/invalidation/1.cc: Same.
+	* testsuite/23_containers/bitset/cons/16020.cc: Same.
+	* testsuite/23_containers/bitset/operations/13838.cc: Same.
+	* testsuite/23_containers/list/invalidation/1.cc: Same.
+	* testsuite/23_containers/list/invalidation/2.cc: Same.
+	* testsuite/23_containers/list/invalidation/3.cc: Same.
+	* testsuite/23_containers/list/invalidation/4.cc: Same.
+	* testsuite/23_containers/set/invalidation/1.cc: Same.
+	* testsuite/23_containers/set/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/invalidation/1.cc: Same.
+	* testsuite/23_containers/map/invalidation/2.cc: Same.
+	* testsuite/23_containers/map/modifiers/insert/16813.cc: Same.
+	* testsuite/21_strings/basic_string/2.cc: Same.
+
+2006-02-08  Paolo Carlini  
+
+	PR libstdc++/26133  (DR 241, [WP])
+	* include/bits/stl_algo.h (__unique_copy(,,, forward_iterator_tag,
+	output_iterator_tag), __unique_copy(,,, input_iterator_tag,
+	output_iterator_tag), __unique_copy(,,, input_iterator_tag,
+	forward_iterator_tag), and predicated counterparts): Add.
+	(__unique_copy(,,, output_iterator_tag), __unique_copy(,,,
+	forward_iterator_tag), and predicated counterparts): Remove.
+	(unique_copy): Adjust, dispatch to the three helpers above.
+	* testsuite/25_algorithms/unique_copy/2.cc: New.
+	* testsuite/25_algorithms/unique_copy/26133.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/3.cc: Likewise.
+	* docs/html/ext/howto.html: Add an entry for DR 241.
+
+	* testsuite/25_algorithms/unique_copy/1.cc: Minor cosmetic changes.
+
+2006-02-07  Jakub Jelinek  
+	    Benjamin Kosnik  
+
+	* configure.ac (_GLIBCXX_LONG_DOUBLE_COMPAT): New check.
+	If true, set also port_specific_symbol_files and create
+	as_symver_specs.
+	(GLIBCXX_LDBL_COMPAT): New GLIBCXX_CONDITIONAL.
+	* configure: Rebuilt.
+	* config.h.in: Rebuilt.
+	* config/os/gnu-linux/ldbl-extra.ver: New file.
+	* config/abi/pre/gnu.ver: Make sure no __float128 symbols are
+	exported.
+	* include/bits/c++config (_GLIBCXX_LONG_DOUBLE_COMPAT,
+	_GLIBCXX_LDBL_NAMESPACE, _GLIBCXX_BEGIN_LDBL_NAMESPACE,
+	_GLIBCXX_END_LDBL_NAMESPACE): Define.
+	* include/bits/localefwd.h: Use them to conditionally scope facets.
+	* include/bits/locale_facets.h: Surround std::{money,num}_{get,put}
+	with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
+	Surround std::{money,num}_{get,put}
+	with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
+	[_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_get): Add __do_get method.
+	[_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_put): Add __do_put method.
+	[_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_get): Add __do_get method.
+	[_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_put): Add __do_put method.
+	* include/bits/locale_facets.tcc: Surround std::{money,num}_{get,put}
+	with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
+	(std::money_get::__do_get, std::money_put::__do_put,
+	std::num_get::__do_get, std::num_put::__do_put): New
+	specializations.
+	* include/Makefile.am: Conditionally define
+	_GLIBCXX_LONG_DOUBLE_COMPAT in c++config.
+	* include/Makefile.in: Regenerate.
+	* src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT] (_GLIBCXX_LOC_ID,
+	_GLIBCXX_SYNC_ID): Define, use them.
+	* src/compatibility-ldbl.cc: New file.
+	* src/complex_io.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Add compatibility
+	symbols.
+	* src/limits.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/locale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/locale-misc-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/istream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/ostream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/wlocale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* src/compatibility.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
+	* config/locale/generic/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
+	Likewise.
+	* config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
+	Likewise.
+	* src/Makefile.am (libstdc++-symbol.ver): Append instead of
+	insert in the middle if port specific symbol file requests it.
+	(ldbl_compat_sources): New variable.
+	(sources): Use it.
+	(compatibility-ldbl.lo, compatibility-ldbl.o): New rules.
+	* src/Makefile.in: Rebuilt.
+	* testsuite/testsuite_abi.cc: Recognize GLIBCXX_LDBL_3.4,
+	GLIBCXX_LDBL_3.4.7, CXXABI_LDBL_1.3.
+
+2006-02-07  Paolo Carlini  
+
+	* include/tr1/hashtable: Trivial formatting fixes.
+
+2006-02-07  Paolo Carlini  
+	    Zak Kipling  
+
+	PR libstdc++/26127
+	* include/tr1/hashtable (hashtable<>::key_equal): Define.
+	(hashtable<>::bucket, rehash_base<>::max_load_factor): Fix.
+	* testsuite/tr1/6_containers/unordered/hashtable/26127.cc: New.
+
+2006-02-07  Paolo Carlini  
+
+	* include/tr1/cmath: New.
+	* include/tr1/cstdlib: Likewise.
+	* include/tr1/ctime: Likewise.
+	* include/tr1/math.h: Likewise.
+	* include/tr1/stdlib.h: Likewise.
+	* include/Makefile.am: Add.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  checks.
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: New.
+	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdlib/types.cc: Likewise.
+	* testsuite/tr1/headers.cc: Update.
+
+	* include/tr1/cinttypes: Do not provide abs and div, conflicting
+	with the above overloads for _Longlong types.
+	* include/tr1/inttypes.h: Adjust.
+	* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Adjust.
+
+	* docs/html/ext/tr1.html: Update.
+
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Tweak.
+
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+2006-02-07  Mark Mitchell  
+
+	* testsuite/testsuite_tr1.h (test_property): New function.
+	* testsuite/tr1/4_metaprogramming/type_properties/extent/extent.cc
+	(test01)
+
+2006-02-05  Paolo Carlini  
+
+	* include/tr1/cstdio: New.
+	* include/tr1/stdio.h: Likewise.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cstdio/functions.cc: New.
+	* testsuite/tr1/headers.cc: Update.
+	* docs/html/ext/tr1.html: Update.
+
+	* include/tr1/cwchar: Simplify, use _GLIBCXX_USE_C99, consistently
+	with the facilities in std::.
+	* include/tr1/cwctype: Likewise.
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Tweak.
+	* testsuite/tr1/8_c_compatibility/cwctype/functions.cc: Likewise.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Remove  and
+	 checks.
+
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+2006-02-04  Paolo Carlini  
+
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Fix.
+
+2006-02-04  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc: Avoid
+	warning on string constant.
+
+2006-02-03  Paolo Carlini  
+
+	* include/tr1/cwchar: New.
+	* include/tr1/cwctype: Likewise.
+	* include/tr1/wchar.h: Likewise.
+	* include/tr1/wctype.h: Likewise.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: New.
+	* testsuite/tr1/8_c_compatibility/cwctype/functions.cc: Likewise.
+	* testsuite/tr1/headers.cc: Update.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  and
+	 checks.
+	* docs/html/ext/tr1.html: Update.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Cosmetic tweak.
+
+2006-02-02  Paolo Carlini  
+
+	* include/tr1/cfloat: New.
+	* include/tr1/climits: Likewise.
+	* include/tr1/cstdarg: Likewise.
+	* include/tr1/ctype.h: Likewise.
+	* include/tr1/fenv.h: Likewise.
+	* include/tr1/float.h: Likewise.
+	* include/tr1/inttypes.h: Likewise.
+	* include/tr1/limits.h: Likewise.
+	* include/tr1/stdint.h: Likewise.
+	* include/tr1/stdarg.h: Likewise.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* docs/html/ext/tr1.html: Update.
+	* testsuite/tr1/headers.cc: New.
+
+	* include/tr1/cctype: Include  instead.
+
+2006-01-31  Paolo Carlini  
+
+	PR libstdc++/21554
+	* include/tr1/array (array<>::_M_instance): Maximally align.
+	* testsuite/ext/array_allocator/2.cc: Do not xfail for powerpc.
+
+2006-01-31  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* docs/html/faq/index.html ([1.0]): Replace references to CVS
+	with appropriate references to SVN.
+	([1.3]): Likewise.
+	([1.4]): Likewise.
+	([2.3]): Likewise.
+	* docs/html/faq/index.txt: Regenerated.
+
+2006-01-30  Gabriel Dos Reis  
+
+	* include/bits/valarray_array.h (__valarray_default_construct):
+	Replace use __is_fundamental with __is_pod.
+	(__valarray_fill_construct): Likewise.
+	(__valarray_copy_construct): Likewise.
+	(__valarray_destroy_elements): Likewise.
+	(__valarray_copy): Likewise.
+
+2006-01-30  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Do the 
+	checks only if the  checks are successful.
+	* configure: Regenerate.
+
+2006-01-30  Paolo Carlini  
+
+	* include/tr1/cinttypes: New.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cinttypes/functions: New.
+	* testsuite/tr1/8_c_compatibility/cinttypes/types: Likewise.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  checks.
+	* docs/html/ext/tr1.html: Update.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+	* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: Cosmetic tweak.
+	* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Likewise.
+
+	* testsuite/tr1/8_c_compatibility/cstdint/types.cc: Fix, check in
+	std::tr1.
+
+2006-01-29  Paolo Carlini  
+
+	* include/tr1/cstdint: New.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cstdint/types: New.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  checks.
+	* docs/html/ext/tr1.html: Update.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+	* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Cosmetic tweak.
+
+2006-01-29  Paolo Carlini  
+
+	PR libstdc++/26006
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Tighten  and
+	 checks.
+	* configure: Regenerate.
+
+2006-01-26  Paolo Carlini  
+
+	* include/std/std_bitset.h (bitset<>::_M_copy_to_string):
+	Call the internal _Unchecked_set(size_t) instead of set.
+
+2006-01-26  Paolo Carlini  
+
+	* docs/html/install.html ([Tools you will need beforehand]):
+	Clarify that the de_DE locale is used by configure; clarify
+	that missing localedata leads to skipped tests, not fails.
+
+2006-01-26  Paolo Carlini  
+
+	* include/tr1/cfenv: New.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: New.
+	* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Likewise.
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add  checks.
+	* docs/html/ext/tr1.html: Update; add note.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+	* configure: Likewise.
+
+	* testsuite/tr1/8_c_compatibility/complex/functions.cc: Tweak.
+	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Likewise.
+
+	* docs/html/faq/index.html: Fix link to tr1.html text; fix
+	formatting.
+
+2006-01-25  Paolo Carlini  
+
+	* include/tr1/cctype: New.
+	* include/Makefile.am: Add.
+	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: New.
+	* include/Makefile.in: Regenerate.
+
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): New, check for C99
+	support to TR1, Chapter 8.
+	* configure.ac: Use it.
+	* include/tr1/complex: Adjust.
+	* config.h.in: Regenerate.
+	* configure: Likewise.
+
+2006-01-25  Benjamin Kosnik  
+
+	* docs/html/configopts.html: Tweak docs.
+
+	* libsupc++/eh_personality.cc: Fix typos.
+
+2006-01-24  Paolo Carlini  
+
+	PR libstdc++/25649
+	* include/std/std_istream.h (operator>>(short&), operator>>(int&)):
+	Move out of line...
+	* include/bits/istream.tcc: ... here.
+	* include/std/std_ostream.h (operator<<(short), operator<<(int)):
+	Move out of line...
+	* include/bits/ostream.tcc: ... here.
+
+2006-01-24  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* docs/html/faq/index.html ([5.2]): Mention TR1 and point to
+	paragraph [5.5], describing it.
+	([5.5]): New.
+	* docs/html/ext/tr1.html: New.
+
+2006-01-20  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Verbose ld version
+	reporting.  Disable --gc-sections for old binutils, by version.
+	* configure: Regenerate.
+
+2006-01-20  Joseph S. Myers  
+
+	PR libstdc++/25524
+	* include/Makefile.am: Install host-specific headers in multilib
+	subdirectory.
+	* include/Makefile.in: Regenerate.
+
+2006-01-19  Paolo Carlini  
+
+	Implement list::splice (and merge) bits of N1599
+	* include/bits/stl_list.h (list<>::_M_check_equal_allocators): New.
+	(list<>::splice(iterator, list&), splice(iterator, list&, iterator),
+	splice(iterator, list&, iterator, iterator)): Use it.
+	* include/bits/list.tcc (list<>::merge(list&), merge(list&,
+	_StrictWeakOrdering)): Likewise.
+	* testsuite/23_containers/list/operators/5.cc: New.
+
+2006-01-19  H.J. Lu  
+
+	PR libstdc++/25797
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Remove -Werror
+	from CFLAGS.  Check if linker really supports --gc-sections.
+	* configure: Regenerated.
+
+2006-01-18  Paul Brook  
+
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Use std::abort.
+
+2006-01-18  Paolo Carlini  
+
+	* include/bits/allocator.h: Include .
+
+2006-01-18  Perry Smith  
+
+	PR libstdc++/25823
+	PR libstdc++/25824
+	* libsupc++/eh_alloc.cc: Fix return type of memset declaration.
+	* libsupc++/eh_globals.cc: If !_GLIBCXX_HOSTED declare malloc and free.
+
+2006-01-18  Paolo Carlini  
+
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	value_type_adapter.hpp: Include .
+	* include/ext/pb_assoc/detail/value_type_adapter/
+	it_value_type_traits.hpp (it_value_type_traits_<>::value_type_holder):
+	Use tr1::aligned_storage and tr1::alignment_of.
+	(it_value_type_traits_<>::buf_t): Remove.
+	(it_value_type_traits_<>::make_valid, recast): Adjust.
+
+2006-01-16  Benjamin Kosnik  
+
+	PR libstdc++/25797
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Add -Werror to
+	CFLAGS for --gc-sections test.  Correct compile test.
+	* configure: Regenerated.
+
+2006-01-15  Paolo Carlini  
+	    Gabriel Dos Reis  
+
+	PR libstdc++/25626
+	* include/std/std_valarray.h (valarray(const slice_array<>&),
+	valarray(const gslice_array<>&), valarray(const mask_array<>&),
+	valarray(const indirect_array<>&), valarray(const _Expr<>&)):
+	Forward to __valarray_copy_construct, not __valarray_copy.
+	* include/bits/valarray_array.h
+	(__valarray_copy_construct(_Array<>, _Array<>, _Array<>, size_t),
+	__valarray_copy_construct(_Array<>, size_t, size_t, _Array<>)):
+	New.
+
+2006-01-15  Paolo Carlini  
+
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc:
+	Fix norm test, use casts everywhere.
+
+2006-01-14  Paolo Carlini  
+
+	* testsuite/testsuite_tr1.h: Add missing include; use std::__are_same.
+
+2006-01-14  Paolo Carlini  
+
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc:
+	Fix wrong test (don't pick by mistake the (const complex<>&, int)
+	overload); add some.
+
+2006-01-13  Paolo Carlini  
+	    Howard Hinnant  
+
+	* include/tr1/complex (arg, conj, imag, norm, polar, pow, real):
+	Add, implementing TR1, 8.1.9.
+	(__promote_2): New.
+	* include/tr1/common.h: New, provides __promote, __promote_2.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* testsuite/testsuite_tr1.h (check_ret_type): New.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc: New.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_float.cc: New.
+
+2006-01-12  Benjamin Kosnik  
+
+	* acinclude.m4(GLIBCXX_CHECK_LINKER_FEATURES): Enable
+	--gc-sections in more cases.
+	* configure: Regenerate.
+	* scripts/testsuite_flags.in: Remove SECTION_LDFLAGS.
+	* scripts/testsuite_flags.in (cxxldflags): New.
+	* testsuite/lib/libstdc++.exp (v3_target_compile): Add cxxldflags.
+	(libstdc++_init ): Same.
+
+2006-01-12  Jan Beulich  
+
+	* crossconfig.m4: Add AC_DEFINE-s for HAVE_HYPOT, HAVE_ISINF, and
+	HAVE_ISNAN for *-*-netware*.
+	* configure: Refresh.
+
+2006-01-11  Benjamin Kosnik  
+
+	* acinclude.m4(GLIBCXX_CHECK_LINKER_FEATURES): Use -Wl,-z,relro if
+	possible.
+	* configure: Regenerate.
+
+2006-01-10  Paolo Carlini  
+
+	* include/tr1/complex: New file, hosts the additions to header
+	 described in TR1, Chapter 8 [tr.c99].
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* testsuite/tr1/8_c_compatibility/complex/functions.cc: New.
+
+2006-01-09  Paolo Carlini  
+
+	PR libstdc++/25658
+	* testsuite/23_containers/deque/cons/assign/1.cc: Divide
+	sizes by 10.
+
+2006-01-08  Paolo Carlini  
+
+	PR libstdc++/22102 (insert as close to hint as possible)
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert_lower,
+	_M_insert_equal_lower): New.
+	(_M_insert_equal(iterator, const _Val&),
+	_M_insert_equal(const_iterator, const _Val&)): Use the above.
+	* docs/html/ext/howto.html: Add an entry for DR 233.
+	* testsuite/23_containers/multiset/modifiers/insert/22102.cc: New.
+	* testsuite/23_containers/multimap/modifiers/insert/22102.cc: New.
+
+	* testsuite/23_containers/set/insert/: Move...
+	* testsuite/23_containers/set/modifiers/insert/: ...here.
+	* testsuite/23_containers/map/insert/: Move...
+	* testsuite/23_containers/map/modifiers/insert/: ...here.
+	* testsuite/23_containers/multiset/insert/: Move...
+	* testsuite/23_containers/multiset/modifiers/insert/: ...here.
+
+2006-01-06  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::insert_unique): Rename
+	to _M_insert_unique.
+	(_Rb_tree<>::insert_equal): Rename to _M_insert_equal.
+	* include/bits/stl_map.h (class map<>): Update callers.
+	* include/bits/stl_set.h (class set<>): Likewise.
+	* include/bits/stl_multimap.h (class multimap<>): Likewise.
+	* include/bits/stl_multiset.h (class multiset<>): Likewise.
+
+2006-01-06  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (vector::erase(iterator,
+	iterator)): Just use _M_erase_at_end.
+
+2006-01-06  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (class vector): Move all the
+	helpers under protected access mode, consistently with the primary
+	vector template.
+	(vector::_M_erase_at_end): Add.
+	(erase(iterator, iterator), clear, resize, _M_fill_assign,
+	_M_assign_aux): Use it.
+	* testsuite/23_containers/vector/bool/modifiers/erase/1.cc: New.
+
+2006-01-06  Paolo Carlini  
+
+	Implement Option 3 of DR 431 for vector.
+	* include/bits/stl_bvector.h (class _Bvector_base): Change to
+	a struct, consistently with the primary vector template.
+	(class vector): Adjust to protected inheritance, tidy
+	typedefs.
+	(_Bvector_base<>::_M_get_Bit_allocator): Add.
+	(vector::vector(const vector&)): Use it.
+	(_Bvector_base<>::get_allocator): Tidy.
+	(vector::swap): Use __alloc_swap.
+	* testsuite/23_containers/vector/bool/modifiers/swap/1.cc: New.
+	* testsuite/23_containers/vector/bool/modifiers/swap/2.cc: New.
+
+2006-01-05  Paolo Carlini  
+
+	* testsuite/testsuite_hooks.h (test_tm(unsigned)): Change to
+	take all the tm members.
+	* testsuite/testsuite_hooks.cc (test_tm): Adjust.
+	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Update.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/10.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/4.cc: Likewise.
+
+2006-01-05  Paolo Carlini  
+
+	* testsuite/testsuite_hooks.h (test_tm(unsigned)): New.
+	* testsuite/testsuite_hooks.cc (test_tm(unsigned)): Define.
+	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Use it.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/10.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/4.cc: Likewise.
+
+2006-01-04  Paolo Carlini  
+
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_dataplus):
+	Use _CharT_alloc_type as base class.
+	(_M_get_allocator, _M_swap, _M_create, _M_destroy): Adjust.
+	* include/ext/vstring.h (get_allocator): Tidy.
+
+2006-01-04  Paolo Carlini  
+
+	Implement Option 3 of DR 431 for all the containers.
+	* include/bits/allocator.h (struct __alloc_swap): Add, swaps
+	allocators, optimized to nothing in case they are empty.
+	* include/bits/stl_deque.h (deque<>::swap): Use it.
+	* include/bits/stl_list.h (list<>::swap): Likewise.
+	* include/bits/stl_tree.h (_Rb_tree<>::swap): Likewise.
+	* include/bits/stl_vector.h (vector<>::swap): Likewise.
+	* include/tr1/hashtable (hashtable<>::swap): Likewise.
+	* include/ext/rc_string_base.h (__rc_string_base<>::_M_swap):
+	Likewise.
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
+	Likewise.
+	* include/ext/vstring_util.h (__vstring_utility<>::_Alloc_hider):
+	Clean-up (now vstring uses the generic __alloc_swap facility).
+	* include/tr1/unordered_map: Adjust includes.
+	* include/tr1/unordered_set: Likewise.
+	* docs/html/ext/howto.html: Add an entry for DR 431.
+	* testsuite/23_containers/deque/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/deque/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/deque/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/deque/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/list/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/list/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/list/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/vector/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/vector/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/vector/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/vector/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/set/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/set/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/set/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/set/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/map/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/map/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/map/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/map/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/multiset/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/multiset/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/multiset/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/multiset/modifiers/swap/3.cc: New.
+	* testsuite/23_containers/multimap/modifiers/swap.cc: Move to...
+	* testsuite/23_containers/multimap/modifiers/swap/1.cc: ... here.
+	* testsuite/23_containers/multimap/modifiers/swap/2.cc: New.
+	* testsuite/23_containers/multimap/modifiers/swap/3.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_set/1.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_set/2.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_map/1.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_map/2.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/1.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_multiset/2.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/1.cc: New.
+	* testsuite/tr1/6_containers/unordered/swap/unordered_multimap/2.cc: New.
+
+2006-01-03  Paolo Carlini  
+
+	* include/bits/stl_list.h (_List_base<>::_M_get_Node_allocator): Add.
+	(_M_get_Tp_allocator, get_allocator): Tidy.
+	(list<>::list(const list&), insert(iterator, size_type, const
+	value_type&), insert(iterator, _InputIterator, _InputIterator)):
+	Use _M_get_Node_allocator.
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_get_Node_allocator()): Add.
+	(_Rb_tree(const _Rb_tree<>&): Use it.
+	* include/bits/stl_deque.h (_Deque_base<>::_M_get_map_allocator,
+	get_allocator): Tidy.
+	* include/bits/stl_vector.h (_Vector_base<>::get_allocator): Tidy.
+	* testsuite/23_containers/map/operators/1_neg.cc: Adjust dg-error
+	line numbers.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+
+	* testsuite/testsuite_allocator.h (uneq_allocator<>::swap): Fix.
+
+	* testsuite/testsuite_allocator.h (class uneq_allocator): A simple
+	non-empty testing allocator which can be endowed of a "personality"
+	at construction time.
+
+2006-01-03  Paolo Carlini  
+
+	* testsuite/27_io/basic_stringstream/str/char/1.cc: Initialize vars.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/str/char/1.cc: Likewise, tidy.
+	* testsuite/27_io/basic_istringstream/str/wchar_t/1.cc: Likewise.
+
+2006-01-02  Mark Mitchell  
+
+	* src/Makefile.am (LTLDFLAGS): New variable.
+	(CXXLINK): Use LTLDFLAGS.
+	* src/Makefile.in: Regenerated.
+	* libsupc++/Makefile.am (LTLDFLAGS): New variable.
+	(CXXLINK): Use LTLDFLAGS.
+	* libsupc++/Makefile.in: Regenerated.
+
+2006-01-02  Paolo Carlini  
+
+	PR libstdc++/24645
+	* include/std/std_istream.h (basic_istream<>::_M_extract): New.
+	(operator>>(bool&), operator>>(short&), operator>>(unsigned short&),
+	operator>>(int&), operator>>(unsigned int&), operator>>(long&),
+	operator>>(unsigned long&), operator>>(long long&), operator>>
+	(unsigned long long&), operator>>(float&), operator>>(double&),
+	operator>>(long double&), operator>>(void*&)): Use it.
+	* include/bits/istream.tcc (basic_istream<>::_M_extract): Define.
+	* include/std/std_ostream.h (basic_ostream<>::_M_insert): New.
+	(operator<<(long), operator<<(unsigned long), operator<<(bool),
+	operator<<(short), operator<<(unsigned short), operator<<(int),
+	operator<<(unsigned int), operator<<(long long), operator<<
+	(unsigned long long), operator<<(double), operator<<(float),
+	operator<<(long double), operator<<(const void*): Use it.
+	* include/bits/ostream.tcc (basic_ostream<>::_M_insert): Define.
+	* src/istream-inst.cc: Add _M_extract instantiations.
+	* src/ostream-inst.cc: Add _M_insert instantiations.
+	* config/abi/pre/gnu.ver: Export the new symbols @GLIBCXX_3.4.7;
+	detail existing @GLIBCXX_3.4 exports of basic_ostream, num_put,
+	money_put, etc., symbols to avoid exporting _M_insert symbols
+	@GLIBCXX_3.4.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2007 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2007
new file mode 100644
index 000000000..d3a1407a9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2007
@@ -0,0 +1,8243 @@
+2007-12-30  Paolo Carlini  
+
+	* include/std/tuple (_Tuple_impl<>::_Tuple_impl(typename
+	std::remove_reference<>::type&&, typename
+	std::remove_reference<>::type&&...),
+	_Tuple_impl(const _Tuple_impl<>&), _Tuple_impl(_Tuple_impl&&),
+	_Tuple_impl(_Tuple_impl<>&&), operator=(_Tuple_impl&&),
+	operator=(const _Tuple_impl<>&), operator=(_Tuple_impl<>&&)): Add.
+	(tuple<>::tuple(const _Elements&...), tuple(_UElements&&...),
+	tuple(tuple&&), tuple(const tuple<>&), tuple(tuple<>&&),
+	operator=(tuple&&), operator=(const tuple<>&), operator=(tuple<>&&)):
+	Likewise.
+	(tuple<_T1, _T2>::tuple(const _T1&, const _T2&, tuple(_U1&&, _U2&&),
+	tuple(tuple&&), tuple(tuple<>&&), tuple(pair<>&&), operator=(tuple&&),
+	operator=(tuple<>&&), operator=(pair<>&&)): Likewise.
+	(tuple<>::tuple(typename __add_c_ref<_Elements>::type...),
+	tuple<_T1, _T2>::tuple(typename __add_c_ref<>::type,
+	typename __add_c_ref<>::type)): Remove.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc: New.
+	* testsuite/20_util/tuple/creation_functions/tie2.cc: Likewise.
+	* testsuite/20_util/tuple/moveable.cc: Likewise.
+
+2007-12-29  Gerald Pfeifer  
+
+	* config/os/mingw32/error_constants.h: Fix typo in comment.
+
+2007-12-29  Danny Smith  
+
+	* config/os/mingw32/error_constants.h (enum posix_errno): Move
+	inside namespace posix_error
+.
+2007-12-27  Paolo Carlini  
+
+	PR libstdc++/34538
+	* config/os/generic/error_constants.h (enum posix_errno): Move
+	inside namespace posix_error.
+	* include/std/system_error (error_category::posix,
+	error_code::error_code(posix_errno), error_code::posix): Adjust.
+	* src/system_error.cc (gnu_error_category::posix): Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+	Adjust.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/cons/default.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/operators/equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_category/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc:
+	Likewise.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
+	* testsuite/19_diagnostics/headers/system_error/34538.cc: New.
+
+2007-12-26  Paolo Carlini  
+
+	* testsuite/25_algorithms/copy/34595.C: Rename to 34595.cc.
+
+2007-12-26  Paolo Carlini  
+
+	PR libstdc++/34595
+	* include/bits/stl_algobase.h (struct __cm_assign): Remove.
+	(struct __copy_move,
+	struct __copy_move,
+	struct __copy_move_backward,
+	struct __copy_move_backward):
+	Add.
+	(struct __copy_move, struct __copy_move_backward,
+	struct __copy_move,
+	struct __copy_move_backward):
+	Adjust.
+	* testsuite/25_algorithms/copy/34595.C: New.
+
+2007-12-26  Chris Fairles  
+	    Paolo Carlini  
+
+	* include/std/tuple: New.
+	* include/tr1/tuple: New, adjust from tr1_impl/tuple code.
+	* include/tr1_impl/tuple: Remove.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Regenerate.
+
+2007-12-25  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (__lower_bound): Add.
+	(_Prime_rehash_policy::_M_next_bkt, _M_bkt_for_elements,
+	_M_need_rehash): Use __lower_bound.
+	* include/std/unordered_map: Do not include the whole ,
+	include .
+	* include/std/unordered_set: Likewise.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+
+2007-12-24  Paolo Carlini  
+
+	* testsuite/20_util/tuple/cons/big_tuples.cc: New.
+	* testsuite/20_util/tuple/cons/constructor.cc: Likewise.
+	* testsuite/20_util/tuple/cons/assignment.cc: Likewise.
+	* testsuite/20_util/tuple/tuple_element.cc: Likewise.
+	* testsuite/20_util/tuple/tuple_size.cc: Likewise.
+	* testsuite/20_util/tuple/comparison_operators/comparisons.cc:
+	Likewise.
+	* testsuite/20_util/tuple/element_access/get.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/23978.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/tie.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/make_tuple.cc: Likewise.
+
+	* testsuite/20_util/tuple/requirements/explicit_instantiation.cc:
+	Fix header file and namespace.
+
+	* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: Minor tweaks.
+	* testsuite/tr1/6_containers/tuple/cons/constructor.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/assignment.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/tuple_element.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/tuple_size.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/
+	comparisons.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/element_access/get.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
+	Likewise.
+
+2007-12-24  Jonathan Wakely  
+
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	default_weaktoshared.cc: Use static_cast not reinterpret_cast.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	mutex_weaktoshared.cc: Likewise.
+
+2007-12-24  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (_Prime_rehash_policy::
+	_M_next_bkt, _M_bkt_for_elements, _M_need_rehash): Use __builtin_ceil.
+	* include/std/unordered_map: Do not include ; prefer
+	 to .
+	* include/std/unordered_set: Likewise.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+
+2007-12-24  Paolo Carlini  
+
+	* include/std/complex (complex::complex(float, float)):
+	Uglify parameters.
+
+2007-12-17  Jonathan Wakely  
+
+	* include/bits/locale_classes.h (has_facet, use_facet): Simplify
+	RTTI checks.
+
+2007-12-17  Jonathan Wakely  
+
+	* docs/html/test.html: Fix paths and notes on running subset of tests.
+	* docs/html/ext/parallel_mode.html: Fix markup typos.
+	* docs/html/ext/pb_ds/index.html: Likewise.
+
+2007-12-17  Benjamin Kosnik  
+
+	* testsuite/22_locale/global_templates/
+	standard_facet_hierarchies.cc: Fix for generic locale model.
+
+2007-12-16  Jonathan Wakely  
+
+	* ChangeLog: Fix my email address in previous two entries.
+
+2007-12-16  Jonathan Wakely  
+
+	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
+	required dg-option for cygwin and darwin targets.
+	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
+
+2007-12-15  Jonathan Wakely  
+
+	* include/tr1_impl/boost_shared_ptr.h: Add support for allocators,
+	aliasing, make_shared and rvalue-references. Move __shared_count
+	and _Sp_counted_* classes to new headers.
+	* include/tr1_impl/boost_sp_counted_base.h: New.
+	* include/bits/boost_sp_shared_count.h: New.
+	* include/tr1/boost_sp_shared_count.h: New.
+	* include/std/memory, include/tr1/memory: Include new headers.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+	* docs/html/documentation.html: Link to shared_ptr notes.
+	* docs/html/20_util/shared_ptr.html: New.
+	* docs/html/17_intro/c++0x_status.html: Update shared_ptr status.
+	* testsuite/20_util/shared_ptr/cons/alias.cc: New.
+	* testsuite/20_util/shared_ptr/cons/alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/assign.cc: Duplicate tr1 test.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
+	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Likewise.
+	* testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/io.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/24805.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
+	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
+	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/
+	1.cc: Likewise.
+	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation.cc:
+	Remove.
+	* testsuite/20_util/weak_ptr/lock/1.cc: Duplicate tr1 test.
+	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation.cc:
+	Remove.
+
+2007-12-15  Hans-Peter Nilsson  
+
+	* configure.host (try_cpu settings): Set try_cpu=cris for crisv32.
+	* config/cpu/cris/atomicity.h (__exchange_and_add)
+	[__CRIS_arch_version >= 32]: Add support for CRIS v32.
+
+2007-12-15  Benjamin Kosnik  
+	    Paolo Carlini  
+
+	* include/parallel/partial_sum.h: Include new. Fix for DR 402.
+	* include/parallel/multiway_merge.h:Fix for DR 402.
+	* include/parallel/losertree.h: Same.
+	* include/parallel/quicksort.h: Same.
+	* include/parallel/random_shuffle.h: Same.
+	* include/parallel/multiway_mergesort.h: Same.
+
+2007-12-14  Benjamin Kosnik  
+
+	PR libstdc++/30127
+	PR libstdc++/34449
+	* include/bits/locale_classes.h (use_facet): Check facet hierarchy.
+	(has_facet): Same.
+	* testsuite/22_locale/global_templates/user_facet_hierarchies.cc: New.
+	* testsuite/22_locale/global_templates/
+	standard_facet_hierarchies.cc: New.
+
+2007-12-11  Benjamin Kosnik  
+
+	PR libstdc++/34015
+	* include/backward/backward_warning.h: Adjust warning message.
+
+2007-12-11  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (vector::reserve): Move out of
+	line...
+	* include/bits/vector.tcc: ... here.
+
+2007-12-10  Jonathan Wakely  
+
+	* docs/html/21_strings/howto.html: Add links to referenced articles.
+
+2007-12-10  Jonathan Wakely  
+
+	* docs/html/17_intro/backwards_compatibility.html: Fix markup.
+	* docs/html/17_intro/howto.html: Likewise.
+	* docs/html/18_support/howto.html: Likewise.
+	* docs/html/ext/concurrence.html: Likewise.
+	* docs/html/documentation.html: Likewise.
+
+2007-12-10  Paolo Carlini  
+
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/
+	requirements/non_uint_neg.cc: Avoid -Wall warnings.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/compile.cc: Likewise.
+	* testsuite/util/testsuite_api.h: Likewise.
+
+2007-12-10  Paolo Carlini  
+
+	* testsuite/25_algorithms/nth_element/2.cc: Avoid -Wall warnings.
+	* testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/12296.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+	28277-4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/
+	28277-3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/
+	28277-4.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool_neg.cc: Likewise.
+	* testsuite/18_support/headers/cstddef/macros.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	wchar_t/28277.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/28277.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/25913.cc: Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_xref.cc: Likewise.
+	* testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc: Likewise.
+	* testsuite/ext/vstring/inserters_extractors/char/28277.cc: Likewise.
+	* testsuite/ext/enc_filebuf/char/13598.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/char/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/1.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/
+	33128.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	mutex_weaktoshared.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	default_weaktoshared.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	range.cc: Likewise.
+	* testsuite/23_containers/multimap/operations/1.cc: Likewise.
+	* testsuite/23_containers/set/operations/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/1.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/2.cc: Likewise.
+	* testsuite/23_containers/multiset/operations/1.cc: Likewise.
+	* testsuite/23_containers/map/operations/1.cc: Likewise.
+	* testsuite/util/testsuite_hooks.cc: Likewise.
+	* testsuite/util/testsuite_rvalref.h: Likewise.
+
+2007-12-10  Jakub Jelinek  
+
+	* include/ext/throw_allocator.h (print_to_string): Change sprintf
+	format to %lu and cast ref.second.{first,second} to long.
+	* include/debug/safe_iterator.tcc (_M_can_advance): Add parens to
+	avoid warnings.
+
+2007-12-09  Benjamin Kosnik  
+
+	* docs/html/ext/howto.html: Update.
+	* docs/html/ext/sgiexts.html: Same.
+	* docs/html/ext/concurrence.html: New. Document extensions.
+	* docs/html/17_intro/api.html: Move some bits...
+	* docs/html/17_intro/backwards_compatibility.html: here. New. Add
+	compatibility suggestions, move existing ones.
+	* docs/html/17_intro/howto.html: Update info.
+	* docs/html/18_support/howto.html: Tweak.
+	* docs/html/faq/index.html: Update thread info.
+	* docs/html/documentation.html: Add links.
+	* docs/html/20_util/allocator.html: Update info.
+	* include/precompiled/stdc++.h: Add C++0x includes if appropriate.
+	* testsuite/17_intro/headers/c++200x/all.cc: Same.
+
+2007-12-09  Jonathan Wakely  
+
+	* testsuite/util/testsuite_allocator.h,
+	testsuite/util/testsuite_hooks.cc,
+	testsuite/util/testsuite_character.h,
+	testsuite/util/testsuite_performance.h,
+	testsuite/util/testsuite_rvalref.h, testsuite/util/testsuite_io.h,
+	testsuite/util/testsuite_allocator.cc: Remove semi-colons after
+	namespace declarations.
+
+2007-12-05  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (_Prime_rehash_policy::
+	_S_n_primes): Add.
+	(_Prime_rehash_policy::_M_next_bkt, _M_bkt_for_elements,
+	_M_need_rehash): Adjust.
+
+2007-12-03  Paolo Carlini  
+
+	* src/hashtable.cc (__prime_list): Use __SIZEOF_LONG__.
+
+2007-12-03  Paolo Carlini  
+
+	* src/hashtable.cc: New.
+	* src/hashtable_c++0x.cc: Likewise.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+	* include/tr1_impl/hashtable_policy.h (struct _Primes): Remove.
+	(_Prime_rehash_policy::_M_next_bkt, _M_bkt_for_elements,
+	_M_need_rehash): Adjust.
+	* config/abi/pre/gnu.ver: Update exports.
+
+	* src/hash.cc: Minor tweak.
+
+2007-12-03  Paolo Carlini  
+
+	* include/debug/unordered_map (operator==(const unordered_map&,
+	const unordered_map&), operator!=(const unordered_map&,
+	const unordered_map&), operator==(const unordered_multimap&,
+	const unordered_multimap&), operator!=(const unordered_multimap&,
+	const unordered_multimap&)): Remove.
+	(unordered_map<>::unordered_map(unordered_map&&),
+	operator=(unordered_map&&), clear, _M_invalidate_all,
+	unordered_multimap<>::unordered_multimap(unordered_multimap&&),
+	operator=(unordered_map&&), clear, _M_invalidate_all,
+	swap(unordered_map<>&&, unordered_map<>&), swap(unordered_map<>&,
+	unordered_map<>&&), swap(unordered_multimap<>&&,
+	unordered_multimap<>&), swap(unordered_multimap<>&,
+	unordered_multimap<>&&)): Add.
+	* include/debug/unordered_set (operator==(const unordered_set&,
+	const unordered_set&), operator!=(const unordered_set&,
+	const unordered_set&), operator==(const unordered_multiset&,
+	const unordered_multiset&), operator!=(const unordered_multiset&,
+	const unordered_multiset&)): Remove.
+	(unordered_set<>::unordered_set(unordered_set&&),
+	operator=(unordered_set&&), clear, _M_invalidate_all,
+	unordered_multiset<>::unordered_multiset(unordered_multiset&&),
+	operator=(unordered_set&&), clear, _M_invalidate_all,
+	swap(unordered_set<>&&, unordered_set<>&), swap(unordered_set<>&,
+	unordered_set<>&&), swap(unordered_multiset<>&&,
+	unordered_multiset<>&), swap(unordered_multiset<>&,
+	unordered_multiset<>&&)): Add.
+	* include/debug/safe_association.h (_Safe_association<>::
+	_Safe_association(_Safe_association&&)): Add.
+	(_Safe_association<>::clear, _M_invalidate_all): Remove.
+
+2007-12-01  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (struct _LessThan): Remove.
+	(_Prime_rehash_policy::_M_bkt_for_elements, _Prime_rehash_policy::
+	_M_need_rehash): Adjust.
+
+2007-12-01  Paolo Carlini  
+
+	* include/bits/stl_tempbuf.h (__get_temporary_buffer): Fold
+	in get_temporary_buffer.
+
+2007-11-29  Andris Pavenis 
+
+	* src/Makefile.am: Use separate vpath lines for each path.
+
+2007-11-28  Johannes Singler  
+
+        * include/parallel/multiway_merge.h: Destruct only elements that
+        were have been constructed before. Code beautifying and formatting.
+        * include/parallel/losertree.h: (Copy) construct all loser tree
+        item keys, so they can be deconstructed all at once.
+        * include/parallel/quicksort.h: Fix memory leak.
+        * include/parallel/random_shuffle.h: Use copy constructor instead
+        of assignment. Code beautifying and formatting.
+        * include/parallel/unique_copy.h: Use assignment instead of copy
+        constructor.
+        * include/parallel/multiway_mergesort.h: Use copy constructor
+        instead of assignment. Code beautifying and formatting.
+        * include/parallel/random_shuffle.h: Use copy constructor instead
+        of assignment. Code beautifying.
+
+2007-11-27  Kaz Kojima  
+
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/check_nan.cc: Add -mieee for sh.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	03_beta/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	12_ellint_1/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	13_ellint_2/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	14_ellint_3/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	15_expint/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	16_hermite/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	18_laguerre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	19_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/check_nan.cc: Likewise.
+
+2007-11-26  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_int): When
+	ios_base::showpos and the type is signed and the value is zero,
+	prepend +.
+	* testsuite/22_locale/num_put/put/char/12.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/12.cc: Likewise.
+
+2007-11-26  Paolo Carlini  
+
+	PR libstdc++/25913
+	* include/c_std/cmath (std::fpclassify, isfinite, isinf, isnan,
+	isnormal, signbit, isgreater, isgreaterequal, isless, islessequal,
+	islessgreater, isunordered): Guard with __enable_if and forward
+	with __promote.
+	* include/c_global/cmath: Likewise.
+	* testsuite/26_numerics/headers/cmath/25913.cc: New.
+
+	* include/c_std/cmath (__gnu_cxx::__capture_isfinite,
+	__capture_isinf, __capture_isnan, __capture_isnormal,
+	__capture_signbit, __capture_isgreater, __capture_isgreaterequal,
+	__capture_isless, __capture_islessequal, __capture_islessgreater,
+	__capture_isunordered): Remove.
+	(std::isfinite, isinf, isnan, isnormal, signbit, isgreater,
+	isgreaterequal, isless, islessequal, islessgreater, isunordered):
+	Forward to the corresponding builtin.
+	* include/c_global/cmath: Likewise.
+
+	* include/c_global/cmath (std::atan2, pow): Guard with __enable_if.
+
+2007-11-25  Paolo Carlini  
+
+	* include/tr1_impl/unordered_map
+	(__unordered_map<>::__unordered_map(__unordered_map&&),
+	__unordered_multimap<>::__unordered_multimap(__unordered_multimap&&),
+	unordered_map<>::unordered_map(unordered_map&&),
+	unordered_multimap<>::unordered_multimap(unordered_multimap&&),
+	unordered_map<>::operator=(unordered_map&&),
+	unordered_multimap<>::operator=(unordered_multimap&&),
+	swap(unordered_map<>&&, unordered_map<>&),
+	swap(unordered_map<>&, unordered_map<>&&),
+	swap(unordered_multimap<>&&, unordered_multimap<>&),
+	swap(unordered_multimap<>&, unordered_multimap<>&&)): Add in C++0x.
+	(swap(unordered_multimap<>&, unordered_multimap<>&),
+	swap(unordered_multimap<>&, unordered_multimap<>&)): Add.
+	* include/tr1_impl/unordered_set
+	(__unordered_set<>::__unordered_set(__unordered_set&&),
+	__unordered_multiset<>::__unordered_multiset(__unordered_multiset&&),
+	unordered_set<>::unordered_set(unordered_setp&&),
+	unordered_multiset<>::unordered_multiset(unordered_multiset&&),
+	unordered_set<>::operator=(unordered_set&&),
+	unordered_multiset<>::operator=(unordered_multiset&&),
+	swap(unordered_set<>&&, unordered_set<>&),
+	swap(unordered_set<>&, unordered_set<>&&),
+	swap(unordered_multiset<>&&, unordered_multiset<>&),
+	swap(unordered_multiset<>&, unordered_multiset<>&&)): Likewise.
+	(swap(unordered_set<>&, unordered_set<>&),
+	swap(unordered_multiset<>&, unordered_multiset<>&)): Add.
+	* include/tr1_impl/hashtable (_Hashtable<>::_Hashtable(_Hashtable&&),
+	swap(_Hashtable&&)): Add in C++0x.
+	* testsuite/23_containers/unordered_map/moveable.cc: New.
+	* testsuite/23_containers/unordered_set/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/moveable.cc: Likewise.
+
+2007-11-25  Paolo Carlini  
+
+	* include/tr1_impl/array (array<>::_M_check): Remove, not necessary
+	anymore.
+	(array<>::at): Adjust.
+
+	* docs/html/17_intro/c++0x_status.html: Fix array::data entry.
+
+2007-11-25  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__lexicographical_compare<>::__lc):
+	Move out of line.
+
+	* include/bits/stl_algobase.h (swap_ranges): Remove redundant
+	simulated concept checks.
+
+2007-11-23  Paolo Carlini  
+
+	* include/std/bitset (bitset<>::all): Add, per DR 693 [Ready].
+	(_Base_bitset<>::_M_are_all_aux()): Add.
+	* include/debug/bitset (bitset<>::all): Add.
+	* testsuite/23_containers/bitset/all/1.cc: New.
+	* docs/html/ext/howto.html: Add an entry for DR 693.
+
+	* include/std/bitset (bitset<0>::set, reset, flip, test): Remove,
+	not necessary anymore.
+
+2007-11-23  Paolo Carlini  
+
+	* include/bits/stl_list.h (insert(iterator, value_type&&)): Just
+	forward to emplace.
+	* include/bits/stl_vector.h (insert(iterator, value_type&&)): Likewise.
+	* include/bits/stl_deque.h (insert(iterator, value_type&&)): Likewise.
+	* include/debug/list (insert(iterator, value_type&&)): Likewise.
+	* include/debug/vector (insert(iterator, value_type&&)): Likewise.
+	* include/debug/deque (insert(iterator, value_type&&)): Likewise.
+	* include/bits/list.tcc (insert(iterator, value_type&&)): Remove.
+	* include/bits/vector.tcc (insert(iterator, value_type&&)): Likewise.
+	* include/bits/deque.tcc (insert(iterator, value_type&&)): Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-11-22  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree_impl<, true>): Remove,
+	identical in mainline to the primary template.
+
+2007-11-22  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Adjust new exports for 128-bit long double.
+
+2007-11-22  Johannes Singler  
+
+	PR libstdc++/33893
+        * include/parallel/multiway_merge.h: made omp_dynamic-safe
+        * include/parallel/workstealing.h: made omp_dynamic-safe
+        * include/parallel/base.h: infrastructure, cleanup
+        * include/parallel/par_loop.h: made omp_dynamic-safe
+        * include/parallel/features.h: activate loser tree variant
+        * include/parallel/quicksort.h: made omp_dynamic-safe
+        * include/parallel/compiletime_settings.h: settings overridable
+        * include/parallel/equally_split.h: made omp_dynamic-safe
+        * include/parallel/omp_loop_static.h: made omp_dynamic-safe
+        * include/parallel/random_shuffle.h: made omp_dynamic-safe
+        * include/parallel/balanced_quicksort.h: made omp_dynamic-safe
+        * include/parallel/set_operations.h: made omp_dynamic-safe
+        * include/parallel/unique_copy.h: made omp_dynamic-safe
+        * include/parallel/multiway_mergesort.h: made omp_dynamic-safe
+        * include/parallel/search.h: made omp_dynamic-safe
+        * include/parallel/partition.h: made omp_dynamic-safe
+        * include/parallel/partial_sum.h: made omp_dynamic-safe
+        * include/parallel/find.h: made omp_dynamic-safe
+        * include/parallel/omp_loop.h: made omp_dynamic-safe
+        * include/parallel/losertree.h: avoid default constructor
+
+2007-11-21  Jonathan Wakely  
+
+	* docs/html/17_intro/C++STYLE: Fix typos.
+
+2007-11-20  Benjamin Kosnik  
+
+	* docs/html/documentation.html: Validate. Add links to index,
+	correct broken links.
+	* docs/html/17_intro/C++STYLE: Add bits.
+	* docs/html/17_intro/configury.html: Correct, update.
+	* docs/html/17_intro/api.html: Correct HTML.
+
+	* include/bits/stl_algobase.h: Adjust comment.
+
+2007-11-20  Richard Sandiford  
+
+	* testsuite/ext/throw_allocator/variadic_construct.cc: Add
+	dg-require-time.
+
+2007-11-20  Paolo Carlini  
+
+	* include/bits/functional_hash.h: Do not include ext/numeric_traits.h.
+	* include/tr1/functional_hash.h: Likewise.
+	* include/std/functional: Include ext/type_traits.h.
+	* include/tr1/functional: Likewise.
+
+2007-11-20  Paolo Carlini  
+
+	* include/tr1_impl/functional_hash.h
+	(hash::operator()(long double)): Only declare.
+	* src/hash.cc: Define here.
+	* config/abi/pre/gnu.ver: Adjust exports.
+	* include/tr1/functional: Do not include .
+	* include/std/functional: Likewise.
+
+	* include/std/functional: Include .
+
+2007-11-18  Paolo Carlini  
+
+	* include/tr1/type_traits (_DEFINE_SPEC_BODY): Remove.
+	(_DEFINE_SPEC_0_HELPER): Rename to _DEFINE_SPEC_HELPER.
+	(_DEFINE_SPEC): Simplify; adjust uses.
+
+2007-11-18  Paolo Carlini  
+
+	* include/tr1_impl/type_traits (is_reference, is_function,
+	remove_cv, is_member_pointer, remove_reference): Declare.
+	* include/tr1_impl/type_traitsfwd.h: Remove.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+
+2007-11-17  Jonathan Wakely  
+
+	* docs/html/17_intro/howto.html, docs/html/21_strings/howto.html,
+	docs/html/22_locale/codecvt.html, docs/html/23_containers/howto.html,
+	docs/html/27_io/howto.html, docs/html/ext/howto.html,
+	docs/html/debug.html,  docs/html/install.html,
+	docs/html/faq/index.html: Fix typos and anachronisms.
+
+2007-11-16  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (struct __lexicographical_compare):
+	Move to namespace std.
+	(__lexicographical_compare_aux<>(_II1, _II1, _II2, _II2)): Add.
+	(lexicographical_compare<>(_II1, _II1, _II2, _II2)): Call the latter.
+
+2007-11-16  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (struct __lexicographical_compare): Add.
+	(lexicographical_compare<>(_II1, _II1, _II2, _II2)): Use it.
+	(lexicographical_compare(const unsigned char*, const unsigned char*,
+	const unsigned char*, const unsigned char*),
+	lexicographical_compare(const char*, const char*, const char*,
+	const char*)): Remove.
+	* include/ext/numeric_traits.h (__numeric_traits_floating<>::
+	__is_signed): Add.
+
+2007-11-16  Paolo Carlini  
+
+	* src/locale_facets.cc: Fix typo in Copyright.
+
+2007-11-16  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__verify_grouping): Move...
+	* src/locale_facets.cc: ... here.
+	* config/abi/pre/gnu.ver: Update exports.
+
+2007-11-15  Paolo Carlini  
+
+	* include/bits/istream.tcc (basic_istream<>::sentry::
+	sentry(basic_istream<>&, bool)): Explicitly convert to bool.
+	* include/bits/locale_facets.tcc (num_put<>::_M_insert_int(_OutIter,
+	ios_base&, _CharT, _ValueT)): Likewise.
+	* include/std/ostream (basic_ostream<>::sentry::~sentry): Likewise.
+
+2007-11-15  Paolo Carlini  
+
+	PR libstdc++/34105
+	* include/bits/stl_algobase.h: Do not include .
+	(lexicographical_compare(const unsigned char*, const unsigned char*,
+	const unsigned char*, const unsigned char*),
+	lexicographical_compare(const char*, const char*, const char*,
+	const char*)): Move to namespace (std, _GLIBCXX_STD_P).
+	* include/parallel/algobase.h: Do not include .
+	(equal): Move after mismatch.
+	* include/bits/stl_heap.h (is_heap, is_heap_until): Reorder.
+	* include/bits/char_traits.h: Include  instead
+	of .
+	* include/bits/stl_algo.h: Include first .
+	* include/bits/algorithmfwd.h (lexicographical_compare): Do not
+	declare overloads.
+	* include/parallel/partition.h: Include .
+	* testsuite/util/testsuite_abi.cc: Include .
+
+2007-11-14  Johannes Singler  
+
+      * include/parallel/multiway_merge.h: More robust finding of an
+        arbitrary existing element inside the input sequences.
+      * include/bits/stl_algo.h: Fix typo to actually call appropriate
+        sequential version.
+
+2007-11-13  Benjamin Kosnik  
+
+	* docs/html/documentation.html: First pass at unified table of contents.
+	* docs/html/abi.html: Move...
+	* docs/html/17_intro/abi.html: ...here.
+	* docs/html/17_intro/porting-howto.html: Update, edit, put
+	resulting pieces into...
+	* docs/html/17_intro/api.html: New.
+	* docs/html/17_intro/c++0x_status.html: New.
+	* docs/html/17_intro/CHECKLIST: Move to...
+	* docs/html/17_intro/c++1998_status.html: ...here.
+	* docs/html/ext/tr1.html: Move ...
+	* docs/html/17_intro/tr1_status.html: ...here.
+	* docs/html/debug_mode.html: Move...
+	* docs/html/ext/debug_mode.html: ...here.
+	* docs/html/parallel_mode.html: Move...
+	* docs/html/ext/parallel_mode.html: ...here
+	* docs/html/17_intro/BUGS: Remove.
+	* docs/html/17_intro/concept_check.diff: Remove.
+	* docs/html/17_intro/HEADER_POLICY: Remove.
+	* docs/html/17_intro/headers_cc.txt: Remove.
+	* docs/html/17_intro/PROBLEMS: Remove.
+	* docs/html/17_intro/RELEASE-NOTES: Remove.
+	* docs/html/explanations.html: Remove.
+	* docs/html/makedoc.awk: Remove.
+	* docs/html/faq/index.txt: Remove. HTML only.
+	* /docs/html/Makefile: Remove.
+	
+	* docs/html/17_intro/configury.html: Editing, updating,
+	consistency check with doxygen conventions. Change libstdc++-v3 to
+	libstdc++.	
+	* docs/html/17_intro/howto.html: Same.
+	* docs/html/17_intro/license.html: Same.
+	* docs/html/17_intro/porting.html: Same.
+	* docs/html/18_support/howto.html: Same.
+	* docs/html/19_diagnostics/howto.html: Same.
+	* docs/html/20_util/allocator.html: Same.
+	* docs/html/20_util/howto.html: Same.
+	* docs/html/21_strings/howto.html: Same.
+	* docs/html/22_locale/codecvt.html: Same.
+	* docs/html/22_locale/ctype.html: Same.
+	* docs/html/22_locale/howto.html: Same.
+	* docs/html/22_locale/messages.html: Same.
+	* docs/html/23_containers/howto.html: Same.
+	* docs/html/24_iterators/howto.html: Same.
+	* docs/html/25_algorithms/howto.html: Same.
+	* docs/html/26_numerics/howto.html: Same.
+	* docs/html/27_io/howto.html: Same.
+	* docs/html/configopts.html: Same.
+	* docs/html/debug.html: Same.
+	* docs/html/ext/ballocator_doc.html: Same.
+	* docs/html/ext/howto.html: Same.
+	* docs/html/ext/mt_allocator.html: Same.
+	* docs/html/ext/sgiexts.html: Same.
+	* docs/html/faq/index.html: Same.
+	* docs/html/install.html: Same.
+	* docs/html/test.html: Same.
+
+	* include/bits/c++config: Change _GLIBCXX_DEPRECATED to
+	_GLIBCXX_DEPRECATED_ATTR, _GLIBCXX_VISIBILITY to
+	_GLIBCXX_VISIBILITY_ATTR.
+	* include/backward/auto_ptr.h: Same.
+	* include/backward/binders.h: Same.
+	* include/bits/stl_function.h: Same.
+	* include/std/memory: Same.
+	* include/std/streambuf: Same.
+	* include/tr1_impl/boost_shared_ptr.h: Same.
+	* src/globals_io.cc: Same.
+	* src/ios_init.cc: Same.
+
+2007-11-13  Paolo Carlini  
+
+	* include/bits/deque.tcc (deque<>::_M_push_back_aux,
+	_M_push_front_aux): Do not copy unnecessarily to __t_copy.
+
+2007-11-12  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque<>::push_back<>(_Args...),
+	deque<>::push_front<>(_Args...), emplace<>(iterator, _Args...),
+	insert(iterator, _Tp&&), _M_push_back_aux<>(_Args&&...),
+	_M_push_front_aux<>(_Args&&...), _M_insert_aux<>(iterator,
+	_Args&&...)): Add.
+	* include/deque/deque.tcc (insert(iterator, value_type&&),
+	emplace<>(iterator, _Args...), _M_push_back_aux<>(_Args&&...),
+	_M_push_front_aux<>(_Args&&...), _M_insert_aux<>(iterator,
+	_Args&&...)): Define.
+	(_M_insert_aux(iterator, size_type, const value_type&),
+	_M_insert_aux<>(iterator, _ForwardIterator, _ForwardIterator,
+	size_type)): Use _GLIBCXX_MOVE3, _GLIBCXX_MOVE_BACKWARD3,
+	__uninitialized_move*, __uninitialized_fill_move,
+	__uninitialized_copy_move, when possible.
+	* include/bits/stl_uninitialized.h (__uninitialized_copy_copy,
+	__uninitialized_fill_copy, __uninitialized_copy_fill): Remove.
+	(__uninitialized_copy_move, __uninitialized_move_copy,
+	__uninitialized_move_fill, __uninitialized_fill_move): Add.
+	* include/debug/deque (deque<>::push_back<>(_Args...),
+	deque<>::push_front<>(_Args...), emplace<>(iterator, _Args...),
+	insert(iterator, _Tp&&)): Add.
+	* testsuite/23_containers/deque/modifiers/moveable.cc: Enable.
+	* testsuite/23_containers/deque/capacity/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/cons/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+	* include/debug/vector (vector<>::insert(iterator, _Tp&&)): Minor
+	tweak, prefer std::move.
+
+2007-11-11  Howard Hinnant  
+
+	* include/bits/stl_pair.h (pair<>::pair<>(_U1&&, _Arg0&&,
+	_Args&&...)): Add.
+
+2007-11-11  Paolo Carlini  
+
+	* include/bits/stl_list.h (list<>::_M_create_node<>(_Args&&...),
+	_M_insert<>(iterator, _Args&&...), push_front<>(_Args&&...),
+	push_back<>(_Args&&...)): Add.
+	(list<>::emplace<>(iterator, _Args&&...), insert(iterator,
+	value_type&&)): Declare.
+	(splice(iterator, list&&), splice(iterator, list&&, iterator),
+	splice(iterator, list&&, iterator, iterator), merge(list&&),
+	merge(list&&, _StrictWeakOrdering)): Add C++0x signatures.
+	* include/bits/list.tcc (list<>::emplace<>(iterator, _Args&&...),
+	insert(iterator, value_type&&)): Define.
+	* include/debug/list (list<>::emplace<>(iterator, _Args&&...),
+	insert(iterator, value_type&&)): Add.
+	(splice(iterator, list&&), splice(iterator, list&&, iterator),
+	splice(iterator, list&&, iterator, iterator), merge(list&&),
+	merge(list&&, _StrictWeakOrdering)): Add C++0x signatures, use
+	_GLIBCXX_MOVE.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-11-09  Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque<>::operator=(deque&&)): Implement
+	resolution of DR 675, call clear first.
+	* include/bits/stl_list.h (list<>::operator=(list&&)): Likewise.
+	* include/bits/stl_bvector.h (vector::operator=(vector&&)):
+	Likewise.
+	* include/bits/stl_vector.h (vector<>::operator=(vector&&)): Likewise.
+	* include/bits/stl_map.h (map<>::operator=(map&&)): Likewise.
+	* include/bits/stl_multimap.h (multimap<>::operator=(multimap&&)):
+	Likewise.
+	* include/bits/stl_multiset.h (multiset<>::operator=(multiset&&)):
+	Likewise.
+	* include/bits/stl_set.h (set<>::operator=(set&&)): Likewise.
+	* include/debug/map.h (map<>::operator=(map&&)): Likewise.
+	* include/debug/set.h (set<>::operator=(set&&)): Likewise.
+	* include/debug/multimap.h (multimap<>::operator=(multimap&&)):
+	Likewise.
+	* include/debug/multiset.h (multiset<>::operator=(multiset&&)):
+	Likewise.
+	* include/debug/deque (deque<>::operator=(deque&&)): Likewise.
+	* include/debug/list (list<>::operator=(list&&)): Likewise.
+	* include/debug/vector (vector<>::operator=(vector&&)): Likewise.
+	* testsuite/23_containers/multimap/moveable.cc: Adjust.
+	* testsuite/23_containers/multiset/moveable.cc: Likewise.
+	* testsuite/23_containers/set/moveable.cc: Likewise.
+	* testsuite/23_containers/map/moveable.cc: Likewise.
+	* testsuite/20_util/pair/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-11-09  Paolo Carlini  
+
+	PR libstdc++/34032
+	* acinclude.m4 ([GLIBCXX_ENABLE_C99], [GLIBCXX_CHECK_C99_TR1]):
+	Use -std=c++98 instead of the default -std=gnu++98.
+	* configure: Regenerate.
+
+2007-11-08  Paolo Carlini  
+
+	* config/io/basic_file_stdio.cc (fopen_mode): Add modes missing
+	per DR 596.
+	* testsuite/27_io/basic_filebuf/open/char/4.cc: Extend.
+	* include/std/fstream: Update comment preceding open.
+	* docs/html/ext/howto.html: Update.
+
+2007-11-08  Paolo Carlini  
+
+	* include/std/type_traits (__decay_selector<_Up, false, false>):
+	Change according to DR 705.
+	* include/bits/stl_pair.h (make_pair(_T1&&, _T2&&)): Change
+	according to DR 706.
+	* include/tr1_impl/tuple: Tweak.
+
+2007-11-08  Paolo Carlini  
+
+	* include/debug/vector (push_back, emplace): Fix signature typo.
+
+2007-11-08  Paolo Carlini  
+
+	* include/bits/locale_facets.h (ctype::taple, classic_table):
+	Implement trivial resolution of DR 695 [Ready].
+	* testsuite/22_locale/ctype/dr695.cc: New.
+	* docs/html/ext/howto.html: Update.
+
+2007-11-08  Paolo Carlini  
+
+	* docs/html/ext/lwg-active.html: Update to Revision R52.
+	* docs/html/ext/lwg-closed.html: Likewise.
+	* docs/html/ext/lwg-defects.html: Likewise.
+	* docs/html/ext/howto.html: Adjust.
+
+2007-11-07  Paolo Carlini  
+
+	* include/tr1_impl/complex (fabs): In C++0x mode adjust
+	return type per DR 595 [Ready].
+
+2007-11-07  Paolo Carlini  
+
+	* include/bits/stl_iterator.h (move_iterator<>::pointer): Adjust
+	typedef per DR 680 [Ready].
+
+2007-11-06  Paolo Carlini  
+
+	* include/bits/vector.tcc (vector<>::_M_insert_aux<>(iterator,
+	_Args&&...)): In C++0x mode do not use temporary copies.
+	(insert(iterator, const value_type&)): Copy to a temporary
+	when not reallocating.
+
+	* include/bits/vector.tcc (insert(iterator, value_type&&)):
+	Minor tweaks in C++0x mode.
+
+2007-11-06  Jonathan Wakely  
+
+	* include/tr1_impl/boost_shared_ptr.h: Avoid unnecessary memory
+	barriers in _S_atomic case.
+
+2007-11-05  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_vector.h (vector<>::push_back<>(_Args...),
+	emplace<>(iterator, _Args...), insert(iterator, _Tp&&),
+	_M_insert_aux<>(iterator, _Args&&...)): Add.
+	* include/bits/vector.tcc (insert(iterator, value_type&&),
+	emplace<>(iterator, _Args...), _M_insert_aux<>(iterator, _Args&&...)):
+	Define.
+	(_M_fill_insert(iterator, size_type, const value_type&),
+	_M_range_insert(iterator, _ForwardIterator, _ForwardIterator,
+	std::forward_iterator_tag)): Use __uninitialized_move_a,
+	_GLIBCXX_MOVE_BACKWARD3 when possible.
+	* include/bits/stl_uninitialized.h (__uninitialized_move_a): Add.
+	* include/debug/vector (vector<>::push_back<>(_Args...),
+	emplace<>(iterator, _Args...), insert(iterator, _Tp&&)): Add.
+	* testsuite/23_containers/vector/modifiers/moveable.cc: Enable.
+	* testsuite/23_containers/vector/resize/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/cons/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-11-03  Paolo Carlini  
+	    Kai-Uwe Bux  
+
+	* include/tr1_impl/random (variate_generator<>::min, max,
+	operator()()): Return non-trivial values when _Engine_result_type
+	is a floating point type and result_type is an integer type.
+
+2007-11-02  Paolo Carlini  
+
+	* include/bits/stl_algo.h (minmax, minmax_element): Add.
+	* include/bits/algorithmfwd.h: Update.
+	* testsuite/25_algorithms/minmax/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/25_algorithms/minmax/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/minmax/1.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/check_type.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/1.cc: Likewise.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+
+2007-11-02  Johannes Singler  
+
+        * include/parallel/workstealing.h: Replaced pragma by function
+          call lock.
+        * include/parallel/search.h: Same
+        * include/parallel/partition.h: Same
+        * include/parallel/find.h: Same
+
+2007-11-01  Janis Johnson  
+
+	PR testsuite/25352
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Remove xfail from dg-do and add dg-skip-if.
+
+2007-10-31  Paolo Carlini  
+
+	* include/bits/stl_queue.h (queue<>::push(value_type&&)): Replace
+	with "emplace" version per DR 756.
+	(priority_queue<>::push(value_type&&)): Likewise.
+	* include/bits/stl_stack.h (stack<>::push(value_type&&)): Likewise.
+
+2007-10-30  Paolo Carlini  
+
+	* include/tr1_impl/random (uniform_int<>::
+	_M_call(_UniformRandomNumberGenerator&, result_type, result_type,
+	true_type)): Only declare.
+	* include/tr1_impl/random.tcc (uniform_int<>::
+	_M_call(_UniformRandomNumberGenerator&, result_type, result_type,
+	true_type)): Re-do, unbiased for the currently supported ranges;
+	add comment.
+
+2007-10-30  Benjamin Kosnik  
+
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_small.html:
+	Correct filename.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_large.html: Same.
+	* docs/html/ext/pb_ds/
+	multimap_text_insert_mem_usage_test_small.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_insert_timing_test_large.html: Same.
+	* docs/html/ext/pb_ds/
+	multimap_text_insert_mem_usage_test_large.html: Same.
+	* docs/html/ext/pb_ds/multimap_text_find_timing_test_small.html: Same.
+
+2007-10-30  Benjamin Kosnik  
+
+	* include/Makefile.am (PCHFLAGS): Remove -Wno-deprecated.
+	* include/Makefile.in: Regenerate.
+
+	* include/std/memory: Remove extraneous include.
+
+2007-10-29  Benjamin Kosnik  
+
+	* include/bits/c++config (_GLIBCXX_DEPRECATED,
+	_GLIBCXX_USE_DEPRECATED): New. Adjust comments.
+	* include/bits/stl_auto_ptr.h: Move...
+	* includse/backward/auto_ptr.h: ...here.
+	* include/bits/stl_function.h (binder1st, binder2nd, bind1st,
+	bind2nd): Move...
+	* include/backward/binders.h: ...here. Deprecate in C++0x.
+
+	* include/tr1_impl/boost_shared_ptr.h: Guard auto_ptr usage.
+	* include/std/memory: Same.
+	* include/std/streambuf: Consistent use of _GLIBCXX_USE_DEPRECATED.
+
+	* include/backward/strstream: Fix guard macros.
+	* include/backward/backward_warning.h: Adjust for all new items.
+
+	* config/abi/pre/gnu.ver: Export basic_streambuf::stossc.
+
+	* include/Makefile.am (backward_headers): Adjust.
+	* include/Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2007-10-29  Benjamin Kosnik  
+
+	* include/Makefile.am (ext_compat_headers): New.
+	* include/Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2007-10-28  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (_GLIBCXX_MOVE3,
+	_GLIBCXX_MOVE_BACKWARD3): Add.
+	* include/bits/stl_iterator.h (_GLIBCXX_MAKE_MOVE_ITERATOR): Add.
+	* include/bits/vector.tcc (vector<>::reserve): Use the latter.
+	(vector<>::erase): Use _GLIBCXX_MOVE3.
+	* include/bits/deque.tcc (deque<>::erase): Use _GLIBCXX_MOVE3
+	and _GLIBCXX_MOVE_BACKWARD3.
+	* testsuite/23_containers/vector/modifiers/erase/moveable.cc: New.
+	* testsuite/23_containers/vector/capacity/reserve/moveable.cc: New.
+	* testsuite/23_containers/deque/modifiers/erase/moveable.cc: New.
+
+2007-10-28  Paolo Carlini  
+
+	* include/bits/stl_uninitialized.h (uninitialized_copy): Use
+	::new and value_type per the letter of the standard.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
+	move_iterators/1.cc: New.
+
+	* testsuite/20_util/specialized_algorithms/16505.cc: Move to...
+	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
+	16505.cc: ... here.
+	* testsuite/20_util/specialized_algorithms/32158.cc: Move to...
+	* testsuite/20_util/specialized_algorithms/uninitialized_fill/
+	32158.cc: ... here.
+
+	* include/bits/stl_construct.h (_Construct(_T1*)): Remove, unused.
+
+2007-10-27  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (struct __miter_base): Add.
+	(__copy_move_a2, __copy_move_backward_a2): Add.
+	(copy, copy_backward, move, move_backward): Adjust, call *a2 helpers.
+	* include/bits/cpp_type_traits.h (struct __is_move_iterator): Add.
+	* include/bits/streambuf_iterator.h (__copy_move_a<>): Rename
+	to __copy_move_a2.
+	* include/std/streambuf (friend __copy_move_a<>): Likewise.
+	* testsuite/25_algorithms/copy/move_iterators/1.cc: New.
+	* testsuite/25_algorithms/copy_backward/move_iterators/1.cc: Likewise.
+
+	* include/bits/stl_iterator.h (__normal_iterator<>::_Iterator_type):
+	Rename to iterator_type.
+
+2007-10-26  Paolo Carlini  
+
+	* include/ext/throw_allocator.h (throw_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	* include/ext/pool_allocator.h (__pool_alloc<>::
+	construct<>(pointer, _Args&&...)): Likewise.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* include/ext/bitmap_allocator.h (bitmap_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* include/ext/new_allocator.h (new_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* include/ext/malloc_allocator.h (malloc_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* include/ext/array_allocator.h (array_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* include/ext/mt_allocator.h (__mt_alloc<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* testsuite/util/testsuite_allocator.h (tracker_allocator<>::
+	construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+ 	(uneq_allocator<>::construct<>(pointer, _Args&&...)): Add.
+	(construct(pointer, const _Tp&)): Cast pointer to void*.
+	* testsuite/ext/mt_allocator/variadic_construct.cc: New.
+	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/malloc_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/pool_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/array_allocator/variadic_construct.cc: Likewise.
+
+2007-10-26  Benjamin Kosnik  
+
+	* include/std/unordered_map: Fix for parallel mode.
+	* include/std/unordered_set: Same.
+
+2007-10-25  Andreas Tobler  
+
+	* include/Makefile.am (parallel_headers): Remove timing.h.
+	* include/Makefile.in: Regenerate.
+
+2007-10-25  Johannes Singler  
+
+      * include/parallel/multiway_merge.h: Removed Timing
+      * include/parallel/random_shuffle.h: Same
+      * include/parallel/set_operations.h: Same
+      * include/parallel/tree.h: Same
+      * include/parallel/multiway_mergesort.h: Same
+      * include/parallel/timing.h: Removed completely
+
+2007-10-25  Paolo Carlini  
+
+	* include/bits/stl_algo.h (__lg<>(_Size)): Slightly tweak.
+	(__lg(int), __lg(long), __lg(long long)): Add, overloads
+	exploiting __builtin_clz*.
+
+2007-10-24  Paolo Carlini  
+
+	* include/tr1_impl/array (_M_instance): Align naturally.
+	* testsuite/ext/array_allocator/1.cc: Use ext/vstring,
+	more solid than our current basic_string vs alignment.
+	* testsuite/ext/array_allocator/2.cc: Likewise.
+	* testsuite/ext/array_allocator/3.cc: Likewise.
+
+2007-10-20  Paolo Carlini  
+
+	* include/bits/stl_move.h (_GLIBCXX_MOVE): Wrap in parentheses.
+	* include/bits/stl_algobase.h (__niter_base<>): Pass iterators
+	by value, as everywhere else.
+
+2007-10-20  Paolo Carlini  
+
+	* include/tr1_impl/random
+	(uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type,
+	result_type, true_type)): Fix small thinko.
+
+2007-10-19  Paolo Carlini  
+
+	PR libstdc++/33815
+	* include/tr1_impl/random
+	(uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type,
+	result_type, true_type)): Avoid the modulo (which uses the low-order
+	bits).
+
+2007-10-19  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (struct __cm_assign,
+	struct __copy_move, struct __copy_move_backward, move,
+	move_backward): Add.
+	(struct __copy, struct __copy_backward): Remove.
+	(__copy_aux, __copy_backward_aux): Rename to...
+	(__copy_move_a, __copy_move_backward_a): ... this, and
+	adjust calls.
+	(copy, copy_backward): Adjust calls.
+	* include/bits/streambuf_iterator.h (__copy_aux): Rename
+	to ...
+	(__copy_move_a): ... this; add bool template parameter.
+	* include/std/streambuf: Adjust friend declarations.
+	* testsuite/util/testsuite_iterators.h
+	(WritableObject<>::operator=(U&&)): Add.
+	* testsuite/25_algorithms/move/1.cc: New.
+	* testsuite/25_algorithms/move/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/move/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/move_backward/1.cc: Likewise.
+	* testsuite/25_algorithms/move_backward/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/move_backward/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2007-10-18  Kaz Kojima  
+
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/check_nan.cc: Add -mieee for sh.
+
+2007-10-18  Paolo Carlini  
+
+	* include/bits/allocator.h (struct __alloc_neq): Add.
+	* include/bits/stl_list.h (list<>::_M_check_equal_allocators): Use it.
+
+2007-10-18  Benjamin Kosnik  
+
+	* include/ext/hash_map: To...
+	* include/backward/hash_map: ...here. Remove debug mode.
+	* include/ext/hash_set: To...
+	* include/backward/hash_set: ...here. Remove debug mode.
+	* include/ext/hash_fun.h: To...
+	* include/backward/hash_fun.h: ...here.
+	* include/ext/hashtable.h: To...
+	* include/backward/hashtable.h: ...here.
+
+	* include/bits/c++config: Remove __gnu_cxx namespace from debug mode.
+	* include/debug/debug.h: Same.
+
+	* include/debug/hash_map: Remove.
+	* include/debug/hash_multimap.h: Remove.
+	* include/debug/hash_set.h: Remove.
+	* include/debug/hash_set: Remove.
+	* include/debug/hash_multiset.h: Remove.
+	* include/debug/hash_map.h: Remove.
+
+	* include/Makefile.am (ext_headers): Move hash_set, hash_map to
+	backward.
+	(debug_headers): Remove hash_map, hash_set, hash_map.h,
+	hash_map.h, hash_multiset.h, hash_multimap.h.
+	* include/Makefile.in: Regenerate.
+
+	* docs/html/debug.html: Update.
+	* docs/html/ext/howto.html: Same.
+	* docs/html/faq/index.html: Same.
+	* docs/doxygen/Intro.3: Same.
+	* docs/doxygen/user.cfg.in: Adjust includes.
+	* testsuite/ext/hash_map: Move to...
+	* testsuite/backward/hash_map: ...here.
+	* testsuite/ext/hash_set: Move to...
+	* testsuite/backward/hash_set: ...here.
+
+2007-10-18  Benjamin Kosnik  
+
+	Removal of pre-ISO C++ items from include/backwards.
+	* include/Makefile.am (backward_headers): Remove all but strstream,
+	backward_warning.h.
+	* include/Makefile.in: Regenerate.
+	* include/backward/new.h: Remove.
+	* include/backward/iterator.h: Same.
+	* include/backward/alloc.h: Same.
+	* include/backward/set.h: Same.
+	* include/backward/hashtable.h: Same.
+	* include/backward/hash_set.h: Same.
+	* include/backward/fstream.h: Same.
+	* include/backward/tempbuf.h: Same.
+	* include/backward/istream.h: Same.
+	* include/backward/bvector.h: Same.
+	* include/backward/stack.h: Same.
+	* include/backward/rope.h: Same.
+	* include/backward/complex.h: Same.
+	* include/backward/ostream.h: Same.
+	* include/backward/heap.h: Same.
+	* include/backward/iostream.h: Same.
+	* include/backward/function.h: Same.
+	* include/backward/multimap.h: Same.
+	* include/backward/pair.h: Same.
+	* include/backward/stream.h: Same.
+	* include/backward/iomanip.h: Same.
+	* include/backward/slist.h: Same.
+	* include/backward/tree.h: Same.
+	* include/backward/vector.h: Same.
+	* include/backward/deque.h: Same.
+	* include/backward/multiset.h: Same.
+	* include/backward/defalloc.h: Same.
+	* include/backward/list.h: Same.
+	* include/backward/map.h: Same.
+	* include/backward/algobase.h: Same.
+	* include/backward/hash_map.h: Same.
+	* include/backward/algo.h: Same.
+	* include/backward/queue.h: Same.
+	* include/backward/streambuf.h: Same.
+	* testsuite/backward/header_hash_set_h.cc: Same.
+	* testsuite/backward/header_slist_h.cc: Same.
+	* testsuite/backward/header_hash_map_h.cc: Same.
+	* testsuite/backward/header_tempbuf_h.cc: Same.
+	* testsuite/backward/header_deque_h.cc: Same.
+	* testsuite/backward/header_rope_h.cc: Same.
+	* testsuite/backward/header_iterator_h.cc: Same.
+	* testsuite/backward/header_hashtable_h.cc: Same.
+
+2007-10-18  Benjamin Kosnik  
+
+	PR libstdc++/30085
+	* include/debug/unordered_map: New.
+	* include/debug/unordered_set: New.
+	* include/debug/safe_association.h: New.
+	* include/std/unordered_map: Include debug header if _GLIBCXX_DEBUG.
+	* include/std/unordered_set: Same.
+	* include/Makefile.am (debug_headers): Add unordered_map,
+	unordered_set, safe_association.h.
+	* include/Makefile.in: Regenerate.
+	* testsuite/23_containers/unordered_map/requirements/debug.cc: New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	debug.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/debug.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	debug.cc: New.
+
+2007-10-18  Benjamin Kosnik  
+
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: Remove
+	hash_map include.
+
+2007-10-18  Paolo Carlini  
+
+	PR libstdc++/33807
+	* include/bits/allocator.h (operator==(const allocator<_Tp>&,
+	const allocator<_Tp>&), operator!=(const allocator<_Tp>&,
+	const allocator<_Tp>&)): Add.
+	* testsuite/20_util/allocator/33807.cc: New.
+
+2007-10-17  Paolo Carlini  
+
+	* include/bits/cpp_type_traits.h (__is_byte): Add.
+	* include/bits/stl_algobase.h (struct __fill, struct __fill_n,
+	__fill_aux, __fill_n_aux): Remove.
+	(__fill_a, __fill_n_a): Add.
+	(fill, fill_n): Adjust.
+
+2007-10-17  Paolo Carlini  
+
+	* include/bits/stl_iterator.h (back_insert_iterator<>::operator=
+	(typename _Container::value_type&&), front_insert_iterator<>::
+	operator=(typename _Container::value_type&&), insert_iterator<>::
+	operator=(typename _Container::value_type&&)): Add.
+
+	* include/bits/stl_iterator.h (insert_iterator<>::operator=
+	(typename _Container::const_reference)): Fix typo in signature.
+
+2007-10-17  Paolo Carlini  
+
+	* include/tr1_impl/array: Correct macro guarding cbegin, cend,
+	crbegin, crend.
+	* include/tr1_impl/hashtable: Likewise.
+
+2007-10-16  Paolo Carlini  
+
+	* include/ext/vstring.h (__versa_string<>::front,
+	__versa_string<>::back): Add.
+	* testsuite/ext/vstring/element_access/char/front_back.cc: New.
+	* testsuite/ext/vstring/element_access/wchar_t/front_back.cc: Likewise.
+
+2007-10-16  Paolo Carlini  
+
+	* include/bits/stl_queue.h (queue<>::queue(_Sequence&&),
+	queue<>::queue(queue&&), queue<>::operator=(queue&&),
+	queue<>::push(value_type&&), queue<>::swap(queue&&),
+	swap(queue<>&, queue<>&), swap(queue<>&&, queue<>&),
+	swap(queue<>&, queue<>&&), priority_queue<>::
+	priority_queue(const _Compare&, _Sequence&&),
+	priority_queue<>::priority_queue(_InputIterator, _InputIterator,
+	const _Compare&, _Sequence&&),
+	priority_queue<>::priority_queue(priority_queue&&),
+	priority_queue<>::operator=(priority_queue&&),
+	priority_queue<>::push(value_type&&),
+	priority_queue<>::swap(priority_queue&&),
+	swap(priority_queue<>&, priority_queue<>&),
+	swap(priority_queue<>&&, priority_queue<>&),
+	swap(priority_queue<>&, priority_queue<>&&)): Add.
+	* include/bits/stl_stack.h (stack<>::stack(_Sequence&&),
+	stack<>::push(value_type&&), stack<>::swap(stack&&),
+	swap(stack<>&, stack<>&), swap(stack<>&&, stack<>&),
+	swap(stack<>&, stack<>&&)): Add.
+	* testsuite/23_containers/queue/moveable.cc: New.
+	* testsuite/23_containers/priority_queue/moveable.cc: Likewise.
+
+2007-10-16  Paolo Carlini  
+
+	* include/ext/vstring.h (__versa_string<>::
+	__versa_string(__versa_string&&),
+	__versa_string<>::operator=(__versa_string&&,
+	swap(__versa_string<>&&, __versa_string<>&),
+	swap(__versa_string<>(&, __versa_string<>&&)): Add.
+	(__versa_string<>::swap(__versa_string&&)): Adjust for C++0x.
+	* include/ext/sso_string_base.h
+	(__sso_string_base(__sso_string_base&&)): Add.
+	(__sso_string_base()): Use _Alloc_hider(_CharT*).
+	* include/ext/rc_string_base.h (__rc_string_base(__rc_string_base&&)):
+	Add.
+	(__rc_string_base()): Use _Alloc_hider(_CharT*).
+	* include/ext/vstring_util.h (_Alloc_hider::_Alloc_hider(_CharT*)):
+	Add.
+	* testsuite/ext/vstring/moveable.cc: Add.
+
+	* include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&)): Add.
+	* include/bits/stl_map.h (map<>::map(map&&)): Forward to the latter.
+	* include/bits/stl_set.h (set<>::set(set&&)): Likewise.
+	* include/bits/stl_multimap.h (multimap<>::multimap(multimap&&)):
+	Likewise.
+	* include/bits/stl_multiset.h (multiset<>::multiset(multiset&&)):
+	Likewise.
+	* include/bits/stl_deque.h (_Deque_base<>::_Deque_base(_Deque_base&&)):
+	Add.
+	(deque<>::deque(deque&&)): Forward to the latter.
+	* include/bits/stl_list.h (_List_base<>::_List_base(_List_base&&)):
+	Add.
+	(list<>::list(list&&)): Forward to the latter.
+	* include/bits/stl_vector.h
+	(_Vector_base<>::_Vector_base(_Vector_base&&)): Add.
+	(vector<>::vector(vector&&)): Forward to the latter.
+	* include/bits/stl_bvector.h
+	(_Bvector_base<>::_Bvector_base(_Bvector_base&&)): Add.
+	(vector::vector(vector&&)): Forward to the latter.
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error lines.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-10-15  Paolo Carlini  
+
+	* include/debug/set.h (set<>::cbegin, cend, crbegin, crend): Add.
+	* include/debug/multiset.h (set<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/debug/vector (vector<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/debug/map.h (map<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/debug/deque (deque<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/debug/list (list<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/debug/multimap.h (multimap<>::cbegin, cend, crbegin,
+	crend): Likewise.
+	* include/tr1_impl/array (array<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/ext/vstring.h (__versa_string<>::cbegin, cend, crbegin,
+	crend): Likewise.
+	* include/bits/stl_list.h (list<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/bits/stl_map.h (map<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/bits/stl_set.h (set<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/bits/stl_multimap.h (multimap<>::cbegin, cend, crbegin,
+	crend): Likewise.
+	* include/bits/stl_vector.h (vector<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/bits/stl_deque.h (deque<>::cbegin, cend, crbegin, crend):
+	Likewise.
+	* include/bits/stl_multiset.h (multiset<>::cbegin, cend, crbegin,
+	crend): Likewise.
+	* include/bits/stl_bvector.h (vector::cbegin, cend, crbegin,
+	crend): Likewise.
+	* include/tr1_impl/hashtable (_Hashtable<>::cbegin, cend): Ad.
+
+	* testsuite/ext/vstring/requirements/citerators.cc: Add.
+	* testsuite/23_containers/unordered_map/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/set/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	citerators.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/vector/bool/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/multiset/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	citerators.cc: Likewise.
+	* testsuite/23_containers/map/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/array/requirements/citerators.cc: Likewise.
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error lines.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-10-15  Paolo Carlini  
+
+	PR libstdc++/33773 (cont)
+	* testsuite/21_strings/headers/cwchar/macros.cc: Guard with
+	_GLIBCXX_USE_WCHAR_T, instead.
+
+2007-10-15  Paolo Carlini  
+
+	PR libstdc++/33771
+	PR libstdc++/33773
+	* testsuite/21_strings/headers/cwchar/macros.cc: Guard test with
+	_GLIBCXX_HAVE_WCHAR_H.
+	* testsuite/21_strings/headers/cwctype/macros.cc: Likewise with
+	_GLIBCXX_HAVE_WCTYPE_H.
+	* testsuite/17_intro/headers/c++200x/all.cc: Guard inclusions
+	of  and .
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc:
+	Likewise.
+	* testsuite/17_intro/headers/c++1998/all.cc: Likewise.
+	* testsuite/17_intro/headers/c++1998/all_multiple_inclusion.cc:
+	Likewise.
+
+2007-10-14  Paolo Carlini  
+
+	* include/bits/stl_algo.h (is_sorted, is_sorted_until): Add.
+	* include/bits/algorithmfwd.h: Add.
+	* include/ext/algorithm: Adjust.
+	* testsuite/25_algorithms/is_sorted/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/25_algorithms/is_sorted/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted/1.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted_until/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted_until/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted_until/1.cc: Likewise.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc:
+	Add is_sorted and is_sorted_until.
+
+	* include/bits/stl_heap.h (is_heap_until): Add concept and
+	debug-mode checks.
+
+2007-10-12  Paolo Carlini  
+
+	* include/bits/stl_heap.h (__is_heap_until): Add.
+	(__is_heap(_RandomAccessIterator, _Distance),
+	__is_heap(_RandomAccessIterator, _Compare, _Distance)):
+	Adjust, call the latter.
+	(is_heap, is_heap_until): Add, call the above.
+	* include/bits/algorithmfwd.h: Add.
+	* testsuite/25_algorithms/is_heap/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/25_algorithms/is_heap/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/is_heap/1.cc: Likewise.
+	* testsuite/25_algorithms/is_heap_until/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/is_heap_until/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/is_heap_until/1.cc: Likewise.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc:
+	Add is_heap and is_heap_until.
+
+2007-10-12  Benjamin Kosnik  
+
+	* docs/doxygen/user.cfg.in: Scan tr1_impl/hashtable.
+	* include/tr1_impl/hashtable: Correct comment.
+
+	* include/ext/hash_map: Remove extraneous public markers.
+	* include/ext/hash_set: Same.
+
+	* testsuite/25_algorithms/headers/parallel_algorithm.cc: Move
+	inside algorithm directory.
+	* testsuite/25_algorithms/headers/algorithm_parallel_mode.cc: Same.
+	* testsuite/25_algorithms/headers/parallel_algorithm_mixed1.cc: Same.
+	* testsuite/25_algorithms/headers/parallel_algorithm_mixed2.cc: Same.
+	* testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc:
+	To this.
+	* testsuite/25_algorithms/headers/algorithm/
+	algorithm_parallel_mode.cc: Same.
+	* testsuite/25_algorithms/headers/algorithm/
+	parallel_algorithm_mixed1.cc: Same.
+	* testsuite/25_algorithms/headers/algorithm/
+	parallel_algorithm_mixed2.cc: Same.
+
+	* testsuite/21_strings/basic_string/requirements/
+	explicit_instantiation/debug.cc: Remove exception text.
+
+	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
+	Fix for debug mode testing.
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
+
+2007-10-12  Jesper Nilsson  
+
+       * testsuite/tr1/5_numerical_facilities/special_functions/
+       20_riemann_zeta/check_value_neg.c (MAX_ITERATIONS): Add limit
+       when target is simulator.
+       * testsuite/tr1/5_numerical_facilities/special_functions/
+       20_riemann_zeta/check_value_pos.c (MAX_ITERATIONS): Likewise.
+
+2007-10-11  Roger Sayle  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add EOVERFLOW for Tru64.
+	* configure: Regenerate.
+	* config/os/generic/error_constants.h: Guard.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+
+2007-10-11  Benjamin Kosnik  
+
+	Convert ext/hash_map, set to tr1/functional, tr1/unordered_map, set.
+	* include/ext/rope: Use tr1/functional hash instead of ext/hash_fun.h.
+	* include/ext/pb_ds/detail/standard_policies.hpp: Same.
+	* include/precompiled/extc++.h: Remove hash_map, hash_set.
+	* testsuite/util/testsuite_abi.h (__gnu_cxx): Use unordered_map
+	instead of hash_map. Remove hash specialization for string.
+	* testsuite/util/testsuite_abi.cc: Include .
+	* testsuite/util/native_type/assoc/native_hash_set.hpp: Remove
+	hash_set code.
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: Remove
+	hash_map code.
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp:
+	Change hash_multimap to unordered_multimap.
+	* testsuite/util/testsuite_common_types.h: Remove hash_map, hash_set.
+	* testsuite/ext/headers.cc: Same.
+	* testsuite/17_intro/headers/all_c++200x_compatibility.cc: Remove
+	hash_map.h, hash_set.h.
+	* testsuite/17_intro/headers/all.cc: Same.
+	* testsuite/17_intro/headers/all_pedantic_errors.cc: Same.
+
+	* include/ext/pb_ds/detail/standard_policies.hpp: Format.
+	* testsuite/util/native_type/assoc/native_set.hpp: Same,
+	update comment.
+	* testsuite/util/native_type/assoc/native_map.hpp: Same.
+	* testsuite/util/native_type/assoc/native_multimap.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	multimap_insert_test.hpp: Same.
+	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
+
+2007-10-11  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_heap.h (__push_heap, push_heap, __adjust_heap,
+	make_heap): Use _GLIBCXX_MOVE.
+	(__pop_heap): Likewise, adjust signature.
+	(pop_heap): Adjust __pop_heap call.
+	* include/bits/stl_algo.h (__heap_select): Likewise.
+	* testsuite/25_algorithms/heap/moveable.cc: Remove dg-require-rvalref.
+	* testsuite/25_algorithms/partial_sort/moveable.cc: Likewise.
+
+2007-10-11  Paolo Carlini  
+
+	PR libstdc++/33734
+	* include/ext/codecvt_specializations.h (encoding_state::good,
+	init, destroy): Use cast notation instead of reinterpret_cast.
+
+2007-10-11  Paolo Carlini  
+
+	* testsuite/25_algorithms/heap/moveable.cc: Fix and extend.
+
+2007-10-11  Danny Smith  
+
+	PR libstdc++/33578
+	* include/parallel/compatibility.h.  Use POSIX sched_yield on
+	__CYGWIN__
+	(Sleep): Add prototype for __MINGW32__.
+
+2007-10-10  Jason Merrill  
+
+	* libsupc++/guard.cc (struct mutex_wrapper): Move into
+	anonymous namespace.
+
+2007-10-10  Paolo Carlini  
+
+	* include/debug/list (list<>::list(list&&)): Fix.
+	* include/debug/vector (vector<>::vector(vector&&)): Likewise.
+	* include/debug/deque (deque<>::deque(deque&&)): Likewise.
+	* include/debug/set.h (set<>::set(set&&)): Likewise.
+	* include/debug/map.h (map<>::map(map&&)): Likewise.
+	* include/debug/multiset.h (multiset<>::multiset(multiset&&)):Likewise.
+	* include/debug/multimap.h (multimap<>::multimap(multimap&&)):Likewise.
+
+2007-10-10  Benjamin Kosnik  
+
+	PR libstdc++/33633
+	* include/debug/hash_multimap.h: Change _GLIBCXX_EXT to _GLIBCXX_EXT_D.
+	* include/debug/hash_set.h: Same.
+	* include/debug/hash_multiset.h: Same.
+	* include/debug/hash_map.h: Same.
+
+2007-10-10  Benjamin Kosnik  
+
+	* include/parallel/losertree.h (loser_tree_traits_unguarded): To
+	loser_tree_unguarded_traits.
+	* include/parallel/multiway_merge.h (__gnu_parallel): Same.
+
+2007-10-10  Paolo Carlini  
+	    Chris Fairles  
+
+	* include/bits/stl_algobase.h (swap): Move...
+	* include/bits/stl_move.h: ... here.
+	* include/bits/stl_pair.h (pair<>::pair(_U1&&, _U2&&),
+	pair<>::pair(pair<>&&), pair<>::operator=(pair<>&&),
+	pair<>::swap(pair&&), swap(&, &), swap(&&, &), swap(&, &&),
+	make_pair(_T1&&, _T2&&)): Add.
+	* testsuite/20_util/pair/swap.cc: Add.
+
+2007-10-09  Wolfgang Bangerth  
+
+	PR libstdc++/33485 continued.
+	* include/parallel/multiway_mergesort.h: Use __builtin_alloca.
+
+2007-10-09  Zhou Drangon  
+
+	PR libstdc++/33682
+        * libsupc++/guard.cc: Make single conditional variable
+        implementation dependent to __GTHREAD_HAS_COND.
+
+2007-10-09  Benjamin Kosnik  
+
+	PR libstdc++/33489 continued.
+	* include/parallel/features.h (_GLIBCXX_LOSER_TREE): Set to zero.
+	(_GLIBCXX_LOSER_TREE_POINTER): Set to one.
+	(_GLIBCXX_LOSER_TREE_UNGUARDED): Set to zero.
+	(_GLIBCXX_LOSER_TREE_POINTER_UNGUARDED): Set to one.
+	* include/parallel/multiway_merge.h (parallel_multiway_merge):
+	Change array of value_type to array of value_type pointers.
+ 	(multiway_merge_bubble): Same.
+	(multiway_merge_loser_tree): Same.
+	* include/parallel/merge.h (merge_advance_movc): Change to avoid
+	default construction.
+	* include/parallel/multiseq_selection.h (multiseq_partition):
+	Replace value_type, bool pair with value_type*, null-initialized.
+	* include/parallel/multiway_mergesort.h (parallel_sort_mwms):
+	Don't use array form of operator new for value_types.
+	(parallel_sort_mwms_pu): Same.
+	* include/parallel/quicksort.h (parallel_sort_qs_divide): Don't
+	use array form to construct pointer to value_type on stack,
+	instead use __builtin_alloca.
+	* include/parallel/random_shuffle.h (sequential_random_shuffle): Same,
+	but use operator new.
+	(parallel_random_shuffle_drs_pu): Same.
+	* include/parallel/partial_sum.h ( parallel_partial_sum_linear): Same.
+
+	* include/parallel/losertree.h: Format.
+	* include/parallel/settings.h: Format.
+
+	* include/parallel/multiway_merge.h: Move traits to....
+	* include/parallel/losertree.h: ... here.
+
+2007-10-09  Paolo Carlini  
+
+	* include/tr1_impl/type_traitsfwd.h (add_reference): Remove.
+	* include/tr1/type_traits (add_reference): Add forward declaration.
+	* include/tr1_impl/functional (class _Mu<>): Fix.
+
+2007-10-09  Paolo Carlini  
+
+	* include/bits/boost_concept_check.h (*AssociativeContainerConcept):
+	Remove, unused.
+
+2007-10-08  Johannes Singler  
+
+	* include/parallel/base.h: Added plus and multiplies functor
+       for differently typed objects.
+	* include/parallel/numeric: Use it.
+	* include/parallel/for_each_selectors.h: Allowed different types.
+	* include/parallel/partial_sum.h: Fixed return value.
+	* testsuite/26_numerics/accumulate/1.cc: Tests for accumulate.
+	* testsuite/26_numerics/inner_product/1.cc: Tests for inner_product.
+
+2007-10-08  Paolo Carlini  
+
+	* include/bits/stl_move.h (_GLIBCXX_MOVE): Add.
+	* include/bits/stl_algobase.h: Adjust.
+	* include/bits/stl_pair.h: Likewise.
+
+	* include/bits/stl_algo.h: Minor formatting fixes.
+
+2007-10-08  Benjamin Kosnik  
+
+	PR libstdc++/33489
+	* include/parallel/multiseq_selection.h: Remove default constructed
+	value_type.
+	* include/parallel/partition.h:
+	* include/parallel/partial_sum.h: Format.
+
+2007-10-08  Johannes Singler  
+
+        * include/parallel/multiway_merge.h: Added reference to paper.
+        * include/parallel/multiseq_selection.h: Added reference to paper.
+        * include/parallel/workstealing.h: Added reference to paper.
+        * include/parallel/balanced_quicksort.h: Added reference to paper.
+        * include/parallel/tree.h: Added reference to paper.
+        * docs/html/parallel_mode.html: Added reference to MCSTL.
+        More documentation on compile-time settings and tuning.
+
+2007-10-08  Paolo Carlini  
+
+	* include/std/utility (identity, move, forward): Move to...
+	* include/bits/stl_move.h: ... here.
+	* include/Makefile.am: Add.
+	* include/bits/stl_algobase.h: Include the latter.
+	* include/Makefile.in: Regenerate.
+	* testsuite/20_util/pair/moveable.cc: Remove dg-require-rvalref.
+
+2007-10-08  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_pair.h (pair<>:pair(pair&&),
+	pair<>::operator=(pair&&)): Add.
+
+2007-10-07  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/debug/list (list<>::list(list&&),
+	list<>::operator=(list&&)): Add.
+	(list<>::swap): Adjust.
+	(swap(list&&, list& __y), swap(list&, list&& __y)): Add.
+	* include/debug/vector (vector<>::vector(vector&&),
+	vector<>::operator=(vector&&)): Add.
+	(vector<>::swap): Adjust.
+	(swap(vector&&, vector& __y), swap(vector&, vector&& __y)): Add.
+	* include/debug/deque (deque<>::deque(deque&&),
+	deque<>::operator=(deque&&)): Add.
+	(deque<>::swap): Adjust.
+	(swap(deque&&, deque& __y), swap(deque&, deque&& __y)): Add.
+	* include/debug/set.h (set<>::set(set&&),
+	set<>::operator=(set&&)): Add.
+	(set<>::swap): Adjust.
+	(swap(set&&, set& __y), swap(set&, set&& __y)): Add.
+	* include/debug/map.h (map<>::map(map&&),
+	map<>::operator=(map&&)): Add.
+	(map<>::swap): Adjust.
+	(swap(map&&, map& __y), swap(map&, map&& __y)): Add.
+	* include/debug/multiset.h (multiset<>::multiset(multiset&&),
+	multiset<>::operator=(multiset&&)): Add.
+	(smultiet<>::swap): Adjust.
+	(swap(multiset&&, multiset& __y),
+	swap(multiset&, multiset&& __y)): Add.
+	* include/debug/multimap.h (multimap<>::multimap(multimap&&),
+	multimap<>::operator=(multimap&&)): Add.
+	(multimap<>::swap): Adjust.
+	(swap(multimap&&, multimap& __y),
+	swap(multimap&, multimap&& __y)): Add.
+
+2007-10-07  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (_GLIBCXX_MOVE): Add.
+	(swap, __iter_swap): Use it.
+	* testsuite/25_algorithms/rotate/moveable.cc: Remove
+	dg-require-rvalref.
+	* testsuite/25_algorithms/remove/moveable.cc: Likewise.
+	* testsuite/25_algorithms/partition/moveable.cc: Likewise.
+	* testsuite/25_algorithms/swap_ranges/moveable.cc: Likewise.
+	* testsuite/25_algorithms/reverse/moveable.cc: Likewise.
+	* testsuite/25_algorithms/unique/moveable.cc: Likewise.
+	* testsuite/25_algorithms/remove_if/moveable.cc: Likewise.
+
+	* include/bits/stl_algobase.h (lexicographical_compare):
+	Clean up.
+
+2007-10-07  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_algo.h (remove, remove_if, unique,
+	__rotate(_RandomAccessIterator, _RandomAccessIterator,
+	_RandomAccessIterator, random_access_iterator_tag)): Use _GLIBCXX_MOVE.
+	(__rotate(_ForwardIterator, _ForwardIterator, _ForwardIterator,
+	forward_iterator_tag), __rotate(_BidirectionalIterator,
+	_BidirectionalIterator, _BidirectionalIterator,
+	bidirectional_iterator_tag), __partition(_ForwardIterator,
+	_ForwardIterator, _Predicate, forward_iterator_tag)): Use iter_swap.
+
+2007-10-06  Benjamin Kosnik  
+
+	PR libstdc++/33678
+	* libsupc++/typeinfo (typeinfo): Revert ordering of virtual components.
+
+2007-10-06  Benjamin Kosnik  
+
+	PR libstdc++/33487
+	* include/parallel/algorithmfwd.h (for_each, generate, generate_n,
+	transform, replace, replace_if, max_element, min_element, count,
+	count_if): Consistently construct overloads.
+	* include/parallel/numericfwd.h (accumulate, adjacent_difference,
+	inner_product): Same.
+	* include/parallel/algobase.h: Same.
+	* include/parallel/algo.h: Same.
+	* include/parallel/numeric: Same.
+
+	* include/bits/algorithmfwd.h: Correct find_end placement.
+
+	* docs/html/parallel_mode.html: Document some of the interface
+	conventions.
+
+	* include/parallel/search.h (calc_borders): Only use operator ==.
+
+	* include/parallel/algorithmfwd.h: Move __gnu_sequential bits to...
+	* include/parallel/tags.h: ...here, and use a using directive.
+
+	* include/parallel/random_shuffle.h: Include stl_numeric. Qualify
+	uses of partial_num with __gnu_sequential.
+
+	* include/parallel/tree.h: Formatting.
+
+2007-10-05  Benjamin Kosnik  
+
+	Fixes for --disable-libstdcxx-pch.
+	* include/ext/rc_string_base.h: Include stl_iterator_base_funcs.h.
+	* include/ext/vstring_util.h: Include stl_iterator.h and
+	numeric_traits.h.
+	* include/tr1/functional: Include new.
+	* testsuite/util/testsuite_api.h: Include exception.
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Set
+	PCH_CXXFLAGS via cxxpchflags.
+
+	* testsuite/25_algorithms/binary_search/requirements/
+	explicit_instantiation/2.cc: Same.: Fix includes.
+	* testsuite/25_algorithms/count_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/equal_range/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/find_end/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/find_first_of/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/find_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/for_each/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/includes/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/inplace_merge/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/lexicographical_compare/
+	requirements/explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/lower_bound/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/make_heap/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/max_element/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/max/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/merge/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/min_element/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/min/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/next_permutation/
+	requirements/explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/nth_element/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/partial_sort_copy/
+	requirements/explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/partial_sort/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/partition/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/pop_heap/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/prev_permutation/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/push_heap/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/random_shuffle/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/remove_copy_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/remove_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/replace_copy_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/replace_if/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/search_n/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/search/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/set_difference/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/set_intersection/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/set_symmetric_difference/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/set_union/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/sort_heap/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/sort/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/stable_partition/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/stable_sort/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/transform/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/unique_copy/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/unique/requirements/
+	explicit_instantiation/2.cc: Same.
+	* testsuite/25_algorithms/upper_bound/requirements/
+	explicit_instantiation/2.cc: Same.
+
+	* testsuite/25_algorithms/remove/requirements/
+	explicit_instantiation/pod.cc: Provide a hint to the compiler.
+
+2007-10-05  Paolo Carlini  
+
+	* testsuite/23_containers/map/moveable.cc: Remove dg-require-rvalref.
+	* testsuite/23_containers/multimap/moveable.cc: Likewise.
+	* testsuite/23_containers/set/moveable.cc: Likewise.
+	* testsuite/23_containers/multiset/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/moveable.cc: Likewise.
+	* testsuite/23_containers/list/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/moveable.cc: Likewise.
+	* include/std/utility: Use _GLIBCXX_BEGIN_NAMESPACE.
+
+2007-10-05  Paolo Carlini  
+	    Chris Jefferson  
+
+	* include/bits/stl_iterator.h (class move_iterator,
+	make_move_iterator): Add.
+
+2007-10-04  Doug Kwan  
+
+	* include/ext/concurrent.h (class __mutex,
+	class __recursive_mutex): Add new method gthread_mutex to access
+	inner gthread mutex.
+	[__GTHREAD_HAS_COND] (class __concurrence_broadcast_error,
+	class __concurrence_wait_error, class __cond): Add.
+	* libsupc++/guard.cc (recursive_push, recursive_pop): Delete.
+	(init_in_progress_flag, set_init_in_progress_flag): Add to
+	replace recursive_push and recursive_pop.
+	(throw_recursive_init_exception): Add.
+	(acquire, __cxa_guard_acquire, __cxa_guard_abort and
+	__cxa_guard_release): [__GTHREAD_HAS_COND] Use a conditional
+	for synchronization of static variable initialization.
+	The global mutex is only held briefly when guards are
+	accessed. [!__GTHREAD_HAS_COND] Fall back to the old code,
+	which deadlocks.
+	* testsuite/thread/guard.cc: Add new test. It deadlocks with the
+	old locking code in libstdc++-v3/libsup++/guard.cc.
+
+2007-10-04  Paolo Carlini  
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-10-04  Chris Jefferson  
+	    Paolo Carlini  
+
+	* include/bits/stl_list.h (list<>::list(list&&),
+	list<>::operator=(list&&)): Add.
+	(list<>::swap): Adjust.
+	(swap(list&&, list& __y), swap(list&, list&& __y)): Add.
+	* include/bits/stl_vector.h (vector<>::vector(vector&&),
+	vector<>::operator=(vector&&)): Add.
+	(vector<>::swap): Adjust.
+	(swap(vector&&, vector& __y), swap(vector&, vector&& __y)): Add.
+	* include/bits/stl_bvector.h (vector<>::vector(vector&&),
+	vector<>::operator=(vector&&)): Add.
+	(vector<>::swap): Adjust.
+	* include/bits/stl_deque.h (deque<>::deque(deque&&),
+	deque<>::operator=(deque&&)): Add.
+	(deque<>::swap): Adjust.
+	(swap(deque&&, deque& __y), swap(deque&, deque&& __y)): Add.
+	* include/bits/stl_set.h (set<>::set(set&&),
+	set<>::operator=(set&&)): Add.
+	(set<>::swap): Adjust.
+	(swap(set&&, set& __y), swap(set&, set&& __y)): Add.
+	* include/bits/stl_map.h (map<>::map(map&&),
+	map<>::operator=(map&&)): Add.
+	(map<>::swap): Adjust.
+	(swap(map&&, map& __y), swap(map&, map&& __y)): Add.
+	* include/bits/stl_multiset.h (multiset<>::multiset(multiset&&),
+	multiset<>::operator=(multiset&&)): Add.
+	(smultiet<>::swap): Adjust.
+	(swap(multiset&&, multiset& __y),
+	swap(multiset&, multiset&& __y)): Add.
+	* include/bits/stl_multimap.h (multimap<>::multimap(multimap&&),
+	multimap<>::operator=(multimap&&)): Add.
+	(multimap<>::swap): Adjust.
+	(swap(multimap&&, multimap& __y),
+	swap(multimap&, multimap&& __y)): Add.
+
+2007-10-04  Paolo Carlini  
+
+	Avoid copying some allocator objects.
+	* include/bits/stl_list.h (_List_impl::_List_impl(),
+	_List_base::_List_base(), list<>::list()): Add.
+	* include/bits/stl_vector.h  (_Vector_impl::_Vector_impl(),
+	_Vector_base::_Vector_base(), vector<>::vector()): Add.
+	* include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl(),
+	_Bvector_base::_Bvector_base(), vector<>::vector()): Add.
+	* include/bits/stl_deque.h  (_Deque_impl::_Deque_impl(),
+	_Deque_base::_Deque_base(), deque<>::deque()): Add.
+	* include/bits/stl_tree.h (_Rb_tree_impl<>::_Rb_tree_impl(),
+	_Rb_tree_impl<>::_M_initialize): Add.
+	(_Rb_tree<>::_Rb_tree(const _Compare&, const allocator_type&),
+	_Rb_tree(const _Rb_tree&)): Adjust.
+	* include/bits/stl_set.h (set<>::set(),
+	set(_InputIterator, _InputIterator)): Use _M_t default constructor.
+	* include/bits/stl_map.h (map<>::map(), set(_InputIterator,
+	_InputIterator)): Use _M_t default constructor.
+	* include/bits/stl_multiset.h (multiset<>::multiset(),
+	multiset(_InputIterator, _InputIterator)): Use _M_t default
+	constructor.
+	* include/bits/stl_multimap.h (multimap<>::multimap(),
+	multimap(_InputIterator, _InputIterator)): Use _M_t default
+	constructor.
+
+2007-10-03  Chris Jefferson  
+	    Benjamin Kosnik  
+
+	* testsuite/20_util/pair/moveable.cc: New. Merge from
+	libstdcxx_so_7-branch.
+	* testsuite/23_containers/deque/capacity/moveable.cc: Same.
+	* testsuite/23_containers/deque/cons/moveable.cc: Same.
+	* testsuite/23_containers/deque/modifiers/moveable.cc: Same.
+	* testsuite/23_containers/deque/moveable.cc: Same.
+	* testsuite/23_containers/list/moveable.cc: Same.
+	* testsuite/23_containers/map/moveable.cc: Same.
+	* testsuite/23_containers/multimap/moveable.cc: Same.
+	* testsuite/23_containers/multiset/moveable.cc: Same.
+	* testsuite/23_containers/set/moveable.cc: Same.
+	* testsuite/23_containers/vector/cons/moveable.cc: Same.
+	* testsuite/23_containers/vector/modifiers/moveable.cc: Same.
+	* testsuite/23_containers/vector/moveable.cc: Same.
+	* testsuite/23_containers/vector/resize/moveable.cc: Same.
+	* testsuite/25_algorithms/heap/moveable.cc: Same.
+	* testsuite/25_algorithms/nth_element/moveable.cc: Same.
+	* testsuite/25_algorithms/partial_sort/moveable.cc: Same.
+	* testsuite/25_algorithms/partition/moveable.cc: Same.
+	* testsuite/25_algorithms/remove_if/moveable.cc: Same.
+	* testsuite/25_algorithms/remove/moveable.cc: Same.
+	* testsuite/25_algorithms/reverse/moveable.cc: Same.
+	* testsuite/25_algorithms/rotate/moveable.cc: Same.
+	* testsuite/25_algorithms/sort/moveable.cc: Same.
+	* testsuite/25_algorithms/swap_ranges/moveable.cc: Same.
+	* testsuite/25_algorithms/unique/moveable.cc: Same.
+	* testsuite/util/testsuite_rvalref.h: New.
+
+	* testsuite/25_algorithms/equal/equal.cc: Move to...
+	* testsuite/25_algorithms/equal/no_operator_ne.cc: ...this.
+	* testsuite/25_algorithms/heap/heap.cc: Move to...
+	* testsuite/25_algorithms/heap/1.cc: ...this.
+	* testsuite/25_algorithms/lower_bound/lower_bound.cc: Move to...
+	* testsuite/25_algorithms/lower_bound/no_operator_ne.cc: ...this.
+	* testsuite/25_algorithms/partition/partition.cc: Move to...
+	* testsuite/25_algorithms/partition/1.cc: ...this.
+	* testsuite/25_algorithms/stable_partition/1.cc: ... and this.
+
+	* testsuite/25_algorithms/search/1.cc: Update from merge.
+	* testsuite/25_algorithms/search/check_type.cc: Same.
+
+	* testsuite/lib/dg-options.exp (dg-require-rvalref): New.
+	* testsuite/lib/libstdc++.exp (check_v3_target_rvalref): New.
+
+2007-10-03  Richard Sandiford  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Temporarily add
+	-fno-exceptions to CXXFLAGS.  Use GCC_TRY_COMPILE_OR_LINK.
+	Make the tests assign results to volatile variables.  Use -lm
+	for link tests in GCC_TRY_COMPILE_OR_LINK.  Fall back to
+	compile-only tests if -lm is not available.
+	* configure: Regenerate.
+
+2007-10-03  Paolo Carlini  
+
+	PR libstdc++/33613
+	* include/debug/functions.h (__check_partitioned): Rename to...
+	(__check_partioned_lower): ... this.
+	(__check_partioned_upper): Add.
+	* include/debug/macros.h (__glibcxx_check_partitioned): Rename to...
+	(__glibcxx_check_partitioned_lower): ... this, adjust.
+	(__glibcxx_check_partitioned_upper): Add.
+	* include/debug/debug.h (__glibcxx_requires_partitioned): Rename to...
+	(__glibcxx_requires_partitioned_lower): ... this, adjust.
+	(__glibcxx_requires_partitioned_upper): Add.
+	* include/bits/stl_algo.h (lower_bound, upper_bound, equal_range,
+	binary search): Use the above.
+	* testsuite/25_algorithms/lower_bound/33613.cc: New.
+	* testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
+
+2007-10-03  Kazu Hirata  
+
+	Revert:
+	2007-10-02  Richard Sandiford  
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Temporarily add
+	-fno-exceptions to CXXFLAGS.  Use GCC_TRY_COMPILE_OR_LINK.
+	Make the tests assign results to volatile variables.
+	* configure: Regenerate.
+
+2007-10-02  Richard Sandiford  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Temporarily add
+	-fno-exceptions to CXXFLAGS.  Use GCC_TRY_COMPILE_OR_LINK.
+	Make the tests assign results to volatile variables.
+	* configure: Regenerate.
+
+2007-10-02  Benjamin Kosnik  
+
+	* testsuite/25_algorithms/binary_search/2.cc: Split into...
+	* testsuite/25_algorithms/upper_bound/2.cc: ... this.
+	* testsuite/25_algorithms/lower_bound/2.cc: ... this.
+	* testsuite/25_algorithms/equal_range/2.cc: ... and this.
+
+2007-10-02  Chris Jefferson  
+
+	* testsuite/25_algorithms/search/1.cc: Merge from
+	libstdcxx_so_7-branch.
+	* testsuite/25_algorithms/search/check_type.cc: Same.
+	* testsuite/25_algorithms/sort/vectorbool.cc: Same.
+
+2007-09-30  Jonathan Wakely  
+
+	* src/valarray-inst.cc, include/ext/atomicity.h,
+	include/ext/concurrence.h, include/bits/basic_string.h,
+	include/bits/fstream.tcc, include/ext/vstring.h: Fix comment typos.
+
+2007-09-29  Jonathan Wakely  
+
+	* docs/html/test.html, docs/html/ext/mt_allocator.html,
+	docs/html/ext/tr1.html, docs/html/17_intro/contribute.html,
+	docs/html/documentation.html, docs/html/20_util/allocator.html:
+	Update docs to refer to Subversion not CVS. Fix markup.
+
+2007-09-29  Jonathan Wakely  
+
+	* docs/html/Makefile: Follow up to libstdc++/14991, remove target.
+
+2007-09-28  Benjamin Kosnik  
+
+	* include/parallel/algorithmfwd.h: Spacing.
+	* include/parallel/tags.h: Correct comment.
+
+	* testsuite/Makefile.am (AM_MAKEFLAGS, AM_RUNTESTFLAGS): Remove.
+	* testsuite/Makefile.in: Regenerate.
+
+2007-09-27  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_hooks.cc (set_memory_limits): Adjust
+	x86_64 virtual memory setting for libgomp.
+
+2007-09-26  Benjamin Kosnik  
+
+	* include/bits/stl_algo.h: Add return type information to comments.
+	* include/bits/algorithmfwd.h: Formatting.
+	* testsuite/util/testsuite_hooks.h (NonDefaultConstructible): Move..
+	* testsuite/util/testsuite_api.h: ...here. Add necessary operators
+	for use in testing chapters 25 and 26.
+	* testsuite/util/testsuite_character.h: Same.
+
+	* testsuite/25_algorithms/*/requirements/explicit_instantiation/
+	2.cc, pod.cc: New.
+
+	* testsuite/26_numerics/accumulate, adjacent_difference, inner_product,
+	partial_sum/requirements/explicit_instantiation/2.cc, pod.cc: New.
+
+	* testsuite/26_numerics/numeric_arrays/*: Move contents into
+	testsuite/26_numerics.
+
+	* testsuite/26_numerics/numeric_operations: Same.
+
+	* testsuite/23_containers/*/requirements/explicit_instantiation/2.cc:
+	Adjust includes from testsuite_eh.h to testsuite_api.h.
+
+2007-09-25  Richard Sandiford  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_fileio): Test lseek.
+
+2007-09-18  Benjamin Kosnik  
+	    Chalathip Thumkanon  
+
+	PR libstdc++/32819
+	PR libstdc++/32822
+	* docs/html/ext/pb_ds/hash_based_containers.html: Correct.
+
+2007-09-17  Benjamin Kosnik  
+
+	* configure.host: Set atomic_flags on i486.
+
+	* include/Makefile.am: Remove parallel-mode pch.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/lib/libstdc++.exp: Set ld_library_flags for libgomp if
+	present.
+
+	* acinclude.m4 (GLIBCXX_ENABLE_PARALLEL): Comment.
+	* configure: Regenerate.
+
+2007-09-17  Johannes Singler  
+
+        * include/parallel/for_each.h: Fixed comment/doxygen markup typos.
+        * include/parallel/base.h: Same.
+        * include/parallel/numeric: Same.
+        * include/parallel/quicksort.h: Same.
+        * include/parallel/compiletime_settings.h: Same.
+        * include/parallel/random_shuffle.h: Same.
+        * include/parallel/balanced_quicksort.h: Same.
+        * include/parallel/tree.h: Same.
+        * include/parallel/settings.h: Same.
+        * include/parallel/search.h: Same.
+        * include/parallel/partition.h: Same.
+        * include/parallel/partial_sum.h: Same.
+
+2007-09-17  Paolo Carlini  
+
+	* include/tr1_impl/type_traitsfwd.h (aligned_storage): Remove
+	declaration.
+	* include/tr1_impl/type_traits (aligned_storage): Remove.
+	* include/std/type_traits (aligned_storage, __aligned_storage_msa):
+	Add.
+	* include/tr1/type_traits (aligned_storage): Add.
+	* testsuite/20_util/aligned_storage/value.cc: New.
+	* testsuite/20_util/aligned_storage/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error lines.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+
+2007-09-16  Paolo Carlini  
+	    Douglas Gregor  
+
+	* include/tr1_impl/type_traits (aligned_storage): Implement
+	in the neat and general way.
+
+2007-09-14  Benjamin Kosnik  
+
+	* include/parallel/base.h (__gnu_parallel::less): Add partial
+        specialization for one argument.
+	(__gnu_parallel::less): Add operator.
+
+	* include/parallel/multiway_merge.h: Use __builtin_alloca.
+	* include/parallel/partial_sum.h: Same.
+	* include/parallel/find.h: Same.
+
+2007-09-14  Jonathan Wakely  
+
+	* include/tr1_impl/boost_shared_ptr.h: (__weak_ptr::lock()): Add
+	missing template argument.
+	* testsuite/tr1/2_general_utilities/shared_ptr/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/tr1/2_general_utilities/weak_ptr/requirements/
+	explicit_instantiation/2.cc: New.
+
+2007-09-14  Benjamin Kosnik  
+
+	* testsuite/17_intro/headers/all_pedantic_errors.cc: New.
+	* include/tr1_impl/cinttypes: Add pragma GCC system_header.
+	* include/tr1_impl/cfenv: Same.
+	* include/tr1_impl/cstdint: Same.
+	* include/tr1/cstdbool: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Same.
+	* include/parallel/partial_sum.h: Avoid VLA error with
+	__builtin_alloca.
+
+2007-09-14  Thiemo Seufer  
+
+	* crossconfig.m4 (mips*-sde-elf*): New stanza.
+	* configure: Regenerate.
+
+2007-09-12  Benjamin Kosnik  
+
+	* include/ext/pb_ds/*: Change namespace pb_ds to __gnu_pbds.
+	* docs/html/ext/pb_ds/*: Same.
+	* testsuite/ext/pb_ds/*: Same.
+	* testsuite/performance/ext/pb_ds/*: Same.
+	* testsuite/util/*: Same.
+
+2007-09-12  Benjamin Kosnik  
+
+	* include/parallel/find.h: Doxygen fixups.
+	* include/bits/hashtable.h: Same.
+
+2007-09-11  Johannes Singler  
+	    Leonor Frias Moya  
+            Felix Putze  
+            Marius Elvert  
+	    Felix Bondarenko  
+	    Robert Geisberger  
+	    Robin Dapp  
+  	    Benjamin Kosnik  
+
+	Add parallel mode.
+	* include/parallel: New.
+	* include/parallel/iterator.h: New.
+	* include/parallel/multiway_merge.h: New.
+	* include/parallel/parallel.h: New.
+	* include/parallel/algorithm
+	* include/parallel/find_selectors.h: New.
+	* include/parallel/losertree.h: New.
+	* include/parallel/list_partition.h: New.
+	* include/parallel/types.h: New.
+	* include/parallel/for_each.h: New.
+	* include/parallel/multiseq_selection.h: New.
+	* include/parallel/workstealing.h: New.
+	* include/parallel/base.h: New.
+	* include/parallel/par_loop.h: New.
+	* include/parallel/numeric
+	* include/parallel/features.h: New.
+	* include/parallel/quicksort.h: New.
+	* include/parallel/algorithmfwd.h: New.
+	* include/parallel/equally_split.h: New.
+	* include/parallel/compiletime_settings.h: New.
+	* include/parallel/for_each_selectors.h: New.
+	* include/parallel/basic_iterator.h: New.
+	* include/parallel/omp_loop_static.h: New.
+	* include/parallel/random_shuffle.h: New.
+	* include/parallel/balanced_quicksort.h: New.
+	* include/parallel/set_operations.h: New.
+	* include/parallel/tags.h: New.
+	* include/parallel/merge.h: New.
+	* include/parallel/tree.h: New.
+	* include/parallel/settings.h: New.
+	* include/parallel/unique_copy.h: New.
+	* include/parallel/multiway_mergesort.h: New.
+	* include/parallel/numericfwd.h: New.
+	* include/parallel/search.h: New.
+	* include/parallel/partition.h: New.
+	* include/parallel/compatibility.h: New.
+	* include/parallel/algobase.h: New.
+	* include/parallel/find.h: New.
+	* include/parallel/partial_sum.h: New.
+	* include/parallel/algo.h: New.
+	* include/parallel/omp_loop.h: New.
+	* include/parallel/queue.h: New.
+	* include/parallel/timing.h: New.
+	* include/parallel/sort.h: New.
+	* include/parallel/checkers.h: New.
+	* include/parallel/random_number.h: New.
+	* include/bits/algorithmfwd.h: New.
+
+	* acinclude.m4 (GLIBCXX_ENABLE_PARALLEL): New.
+	* configure.host: Add atomic_flags.
+	* configure.ac: Export ATOMIC_FLAGS, call GLIBCXX_ENABLE_PARALLEL.
+	* src/Makefile.am: Add parallel_list rules.
+	* include/Makefile.am: Add parallel files.
+	* testsuite/Makefile.am (check-parallel): Add.
+	(check-performance-parallel): Add.
+	* config.h.in: Regenerate.
+	* configure: Same.
+	* libsupc++/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+	* Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* include/Makefile.in: Same.
+	* src/Makefile.in: Same.
+	* po/Makefile.in: Same.
+
+	* config/abi/pre/gnu.ver: Export parallel list bits.
+
+	* docs/html/parallel_mode.html: New.
+	* docs/html/documentation.html: Add link.
+	* docs/doxygen/user.cfg.in: Adjust for new files and directory.
+	* docs/doxygen/doxygroups.cc: Adjust namespace markup.
+
+	* include/debug/set.h: Adjust for _GLIBCXX_STD_D or _P change.
+	* include/debug/bitset: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/vector: Same.
+	* include/debug/map.h: Same.
+	* include/debug/deque: Same.
+	* include/debug/list: Same.
+	* include/debug/debug.h: Same.
+	* include/debug/multimap.h: Same.
+	* include/std/algorithm: Same.
+	* include/std/numeric: Same.
+	* include/std/bitset: Same.
+	* include/std/string: Same.
+	* include/ext/hash_map: Same.
+	* include/ext/hash_set: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_numeric.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/c++config: Same.
+	* include/bits/vector.tcc: Same.
+	* include/bits/deque.tcc: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/list.tcc: Same.
+	* src/list.cc: Same.
+	* src/parallel_list.cc: New.
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): New.
+	* testsuite/lib/dg-options.exp (dg-require-parallel-mode): New.
+	* scripts/testsuite_flags.in (--cxxparallelflags): New.
+	* scripts/check_performance: Adjust.
+	* testsuite/25_algorithms/headers/parallel_algorithm.cc: New.
+	* testsuite/25_algorithms/headers/algorithm_parallel_mode.cc: New.
+	* testsuite/25_algorithms/headers/parallel_algorithm_mixed1.cc: New.
+	* testsuite/25_algorithms/headers/parallel_algorithm_mixed2.cc: New.
+	* testsuite/26_numerics/headers/numeric/parallel_numeric.cc: New.
+	* testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc: New.
+	* testsuite/26_numerics/headers/numeric/
+	parallel_numeric_mixed1.cc: New.
+	* testsuite/26_numerics/headers/numeric/
+	parallel_numeric_mixed2.cc: New.
+
+2007-09-11  Daniel Jacobowitz  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Revert part of
+	2007-09-06 change.
+
+2007-09-09  Roger Sayle  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add ECANCELED for cygwin.
+	* configure: Regenerate.
+	* config/os/generic/error_constants.h: Guard.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+
+2007-09-09  Benjamin Kosnik  
+
+	* testsuite/25_algorithms/binary_search.cc: Move...
+	* testsuite/25_algorithms/binary_search/2.cc: ...here.
+
+	* testsuite/25_algorithms/sort.cc: Move...
+	* testsuite/25_algorithms/sort/1.cc: ...here.
+	* testsuite/25_algorithms/partial_sort_copy/2.cc: ...here.
+	* testsuite/25_algorithms/nth_element/3.cc: ...here.
+	* testsuite/25_algorithms/partial_sort/2.cc: ...here.
+	* testsuite/25_algorithms/stable_sort/2.cc: ...here.
+
+	* testsuite/25_algorithms/min_max.cc: Move...
+	* testsuite/25_algorithms/min/1.cc: ...here.
+	* testsuite/25_algorithms/min/2.cc: ...here.
+	* testsuite/25_algorithms/max/1.cc: ...here.
+	* testsuite/25_algorithms/max/2.cc: ...here.
+
+2007-09-09  Joseph Myers  
+
+	* testsuite/lib/libstdc++.exp (v3-build-support): Specify output
+	file for preprocessing.  Use remote_exec to call ar and ranlib.
+
+2007-09-08  Benjamin Kosnik  
+
+	* include/bits/functional_hash.h: Add ext/numeric_traits.h.
+	* include/tr1/functional_hash.h Same.
+	* include/tr1/functional: Remove string, ext/type_traits.h includes.
+	* include/tr1_impl/functional_hash.h: Move string, wstring
+	definitions for std::::operator into separate file.
+	* include/std/functional
+	* src/hash.cc: New, move definitions here.
+	* src/hash_c++0x.cc: Same.
+	* src/Makefile.am: Add new source files.
+	* configure: Regenerate.
+	* Makefile.in: Same.
+	* src/Makefile.in: Same.
+	* po/Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+	* config/abi/pre/gnu.ver: Add symbols.
+	* config/abi/pre/gnu-versioned-namespace.ver: Same, fix.
+
+2007-09-07  Benjamin Kosnik  
+
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc:
+	Correct line number.
+
+2007-09-07  Danny Smith  
+
+	PR libstdc++/33203
+	* configure.host (error_constants_dir):  New variable,
+	defaulting to os/generic.
+	( mingw32*): Overide default.
+	* configure.ac (ERROR_CONSTANTS_SRCDIR): New.
+	* configure: Regenerate.
+	* include/Makefile.am (host_headers): Add
+	$(ERROR_CONSTANTS_SRCDIR)/error_constants.h .
+	* include/Makefile.in: Regenerate.
+	* include/std/system_error (enum posix_errno): Remove.
+	Include  instead.
+	* config/os/mingw32/error_constants.h: New.
+	* config/os/generic/error_constants.h: New.
+
+2007-09-06  Benjamin Kosnik  
+
+	* testsuite/lib/libstdc++.exp: Check CXXFLAGS.
+	* scripts/testsuite_flags.in: CXXFLAGS_default, matching dejagnu.
+
+	* include/std/ostream: Spacing tweak.
+	* include/ext/hashtable.h: Use .
+	* include/ext/slist: Same.
+	* include/ext/rope: Same.
+	* include/bits/stl_function.h: Format.
+	* include/tr1_impl/array: Remove section number in doxygen markup.
+	* src/list.cc: Comment tweak.
+
+	* docs/doxygen/user.cfg.in: Update for include/tr1_impl.
+
+	* testsuite/25_algorithms/search_n/iterator.cc: Add using declaration.
+	* testsuite/25_algorithms/nth_element/1.cc:  Same.
+	* testsuite/21_strings/char_traits/requirements/short/1.cc: Use
+	char_type typedef to the underlying character type.
+	* testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc:
+	Remove -ansi -pedantic-errors.
+	* testsuite/21_strings/char_traits/requirements/char/typedefs.cc: Same.
+	* testsuite/tr1/6_containers/headers/functional/synopsis.cc:
+	Remove specializations.
+
+2007-09-06  Paolo Carlini  
+
+	* include/bits/stl_vector.h (_Vector_base<>::_M_allocate):
+	Do not call _M_impl.allocate when __n == 0.
+	* testsuite/23_containers/vector/zero_sized_allocations.cc: New.
+
+2007-09-06  Benjamin Kosnik  
+
+	PR libstdc++/29367
+	* include/ext/pb_ds/detail/map_debug_base.hpp: From this..
+	* include/ext/pb_ds/detail/debug_map_base.hpp: ...to this.
+	Rename map_debug_base to debug_map_base, add std::pair output
+	extractors, change duplicate map_debug_base typedef in containers
+	to debug_base. Use m_store_extra_indicator for m_store_hash_indicator.
+	* include/ext/pb_ds/*: Likewise.
+	* include/Makefile.am: Same.
+	* include/Makefile.in: Regenerate.
+
+2007-09-06  Matthias Klose  
+
+	* testsuite/27_io/headers/cstdlib: Remove empty directory.
+
+2007-09-05  Roger Sayle  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add EBADMSG for darwin.
+	* configure: Regenerate.
+	* include/std/system_error: Guard.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Adjust
+	line numbers.
+
+2007-09-03  Paolo Carlini  
+
+	PR libstdc++/33293
+	* include/bits/stl_numeric.h (accumulate, inner_product):
+	Add inline function-specifier.
+
+2007-08-31  Douglas Gregor  
+
+	* testsuite/abi/demangle/cxx0x/rref.cc: New.
+
+2007-08-29  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add ENODATA, ENOSR,
+	ENOSTR, ETIME for freebsd.
+	* configure: Regenerate.
+	* include/std/system_error: Guard.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Adjust
+	line numbers.
+
+2007-08-28  Paolo Carlini  
+
+	PR libstdc++/33128
+	* include/tr1_impl/random (uniform_int<>::_M_call): Deal with
+	__urng() returning negative values.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc:
+	New.
+
+2007-08-24  Benjamin Kosnik  
+
+	* acinclude.m4: Fix duplicate variable names.
+	* configure: Regenerate.
+
+2007-08-24  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add ENOLINK, EPROTO
+	for netbsd.
+	* configure: Regenerate.
+	* include/std/system_error: Guard.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Adjust
+	line numbers.
+
+2007-08-23  Benjamin Kosnik  
+
+	* include/std/system_error: New file.
+	* src/system_error.cc: New file.
+	* src/Makefile.am (sources): Add.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.am (std_headers): Add system_error.
+	* include/Makefile.in: Regenerate.
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): New.
+	* configure.ac: Call it.
+	* config.h.in: Regenerate.
+	* include/bits/functional_hash.h: Add hash.
+ 	* include/std/ostream: Add inserters for error_code.
+
+	* docs/doxygen/user.cfg.in: Add system_error.
+
+	* config/abi/pre/gnu.ver(GLIBCXX_3.4.10): Add new symbols.
+
+	* testsuite/19_diagnostics/error_code: New.
+	* testsuite/19_diagnostics/error_code/cons: Same.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators: Same.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/bool_neg.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Same.
+	* testsuite/19_diagnostics/error_category: Same.
+	* testsuite/19_diagnostics/error_category/cons: Same.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/default.cc: Same.
+	* testsuite/19_diagnostics/error_category/operators: Same.
+	* testsuite/19_diagnostics/error_category/operators/equal.cc: Same.
+	* testsuite/19_diagnostics/error_category/operators/not_equal.cc: Same.
+	* testsuite/19_diagnostics/headers/system_error: Same.
+	* testsuite/19_diagnostics/headers/system_error/
+	types_std_c++0x.cc: Same.
+	* testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc: Same.
+	* testsuite/19_diagnostics/system_error: Same.
+	* testsuite/19_diagnostics/system_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-1.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-2.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-big.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-3.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Same.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	error_code.cc: Same.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	error_code.cc: Same.
+	* testsuite/tr1/6_containers/hash/operators: New.
+	* testsuite/tr1/6_containers/hash/operators/size_t.cc: Same.
+
+	* testsuite/23_containers/hash: Move...
+	* testsuite/20_util/hash: ... here.
+	* testsuite/20_util/hash/operators: New.
+	* testsuite/20_util/hash/operators/size_t.cc: New.
+
+	* testsuite/20_util/function_objects/bad_function_call: Move...
+	* testsuite/20_util/bad_function_call: ...here.
+
+2007-08-21  Benjamin Kosnik  
+
+	* include/Makefile.am (install-data-local): Remove pch-install rules.
+	(host_headers): Add stdc++.h, stdtr1c++.h, extc++.h.
+	* include/Makefile.in: Regenerate.
+	* config.h.in: Same.
+
+	* scripts/check_compile: Remove space between outputs.
+	* include/ext/throw_allocator.h: Correct doxygen markup.
+	* include/bits/char_traits.h: Correct spacing.
+	* include/bits/stl_function.h: Same, for 80 column.
+	* include/std/valarray: Same.
+	* testsuite/util/testsuite_iterators.h: Same.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Format.
+
+2007-08-17  Daniel Jacobowitz  
+
+	PR testsuite/31884
+	* testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc (main): Do
+	not access deleted nodes.
+
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc,
+	testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc,
+	testsuite/27_io/basic_filebuf/open/char/4.cc,
+	testsuite/27_io/objects/char/9.cc: Use dg-require-fileio.
+	* testsuite/ext/forced_exception_error/cons_virtual_derivation.cc,
+	testsuite/ext/pb_ds/regression/hash_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/trie_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/priority_queue_rand.cc,
+	testsuite/ext/pb_ds/regression/tree_data_map_rand.cc,
+	testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc,
+	testsuite/ext/throw_allocator/deallocate_global.cc,
+	testsuite/ext/throw_allocator/check_delete.cc,
+	testsuite/ext/throw_allocator/check_allocate_max_size.cc,
+	testsuite/ext/throw_allocator/check_deallocate_null.cc,
+	testsuite/ext/throw_allocator/check_new.cc,
+	testsuite/ext/throw_allocator/deallocate_local.cc,
+	testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/
+	cons/gen1.cc,
+	testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/
+	gen1.cc,
+	testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/
+	gen1.cc,
+	testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/
+	gen1.cc,
+	testsuite/23_containers/list/modifiers/insert/25288.cc: Use
+	dg-require-time.
+
+2007-08-17  Paolo Carlini  
+
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error lines.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Ditto.
+
+2007-08-17  Chris Fairles  
+
+	PR libstdc++/33098
+	* include/std/type_traits (__is_convertible_helper):
+	Use add_lvalue_reference.
+
+2007-08-17  Johannes Willkomm  
+
+	PR libstdc++/33084
+	* include/std/valarray (operator _Op(const _Tp&,
+	const valarray<>&)): Fix typo.
+	* testsuite/26_numerics/numeric_arrays/valarray/33084.cc: New.
+
+2007-08-07  Jim Blandy  
+
+	* src/Makefile.am (libstdc++-symbol.ver): Make
+	sure the build tree copy of libstdc++-symbol.ver is writeable.
+	* src/Makefile.in: Regenerated.
+
+2007-08-02  Paolo Carlini  
+
+	DR 660, [Ready] in Toronto.
+	* include/bits/stl_function.h (bit_and, bit_or, bit_xor): Add.
+	* testsuite/20_util/function_objects/dr660.cc: New.
+	* docs/html/ext/howto.html: Add an entry for DR 660, update.
+
+	* docs/html/ext/lwg-closed.html, docs/html/ext/lwg-active.html,
+	docs/html/ext/lwg-defects.html: Import Revision 49.
+
+2007-07-30  Paolo Carlini  
+
+	PR libstdc++/32908
+	* include/bits/stl_algobase.h (struct __lc_rai): New.
+	(lexicographical_compare(_II1, _II1, _II2, _II2),
+	lexicographical_compare(_II1, _II1, _II2, _II2, _Compare)): Use it.
+	* testsuite/performance/25_algorithms/lexicographical_compare.cc: New.
+
+2007-07-27  Paolo Carlini  
+
+	PR libstdc++/32907
+	* include/bits/basic_string.h (operator==(const basic_string<_CharT>&,
+	const basic_string<_CharT>&)): Add.
+	(operator!=): Forward to operator==.
+	* include/ext/vstring.h(operator==(const __versa_string<_CharT,
+	std::char_traits<_CharT>, std::allocator<_CharT>, _Base>&,
+	const __versa_string<_CharT, std::char_traits<_CharT>,
+	std::allocator<_CharT>, _Base>&)): Add.
+	(operator!=): Forward to operator==.
+
+	* include/ext/sso_string_base.h (_M_compare): Remove.
+
+2007-07-25  Stephen M. Webb  
+
+	Fixed abi_check for missing symbol size changes.
+	* testsuite/util/testsuite_abi.cc: Changed local variable name to
+	prevent member variable hiding.
+
+2007-07-25  John David Anglin  
+
+	PR libstdc++/31836
+	* config/locale/generic/c_locale.cc (__convert_to_v): Don't use
+	strtold if _GLIBCXX_HAVE_BROKEN_STRTOLD is defined.
+	* config/os/hpux/os_defines.h (_GLIBCXX_HAVE_BROKEN_STRTOLD): Define
+	if __hppa__ is defined.
+
+2007-07-16  Rainer Orth  
+
+	PR bootstrap/3456
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Enable on
+	mips-sgi-irix6*.
+	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
+	* testsuite/thread/18185.cc: Likewise.
+	* testsuite/thread/pthread1.cc: Likewise.
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	default_weaktoshared.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	mutex_weaktoshared.cc: Likewise.
+
+2007-07-16  Danny Smith  
+
+	* config/os/mingw32/ctype_base.h: Use the generic libstdc++ masks
+	rather than MSVCRT defines.
+	* config/os/mingw32/ctype_noninline.h (classic_table): Construct
+	and return a static classic table based on generic libstdc++ masks.
+
+2007-07-12  Douglas Gregor  
+
+	* testsuite/tr1/3_function_objects/bind/all_bound.cc: Disambiguate
+	uses of TR1/C++0x facilities.
+	* testsuite/tr1/3_function_objects/bind/nested.cc: Ditto.
+	* testsuite/tr1/3_function_objects/bind/placeholders.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_multimap/swap/1.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_multimap/swap/2.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_set/requirements/
+	explicit_instantiation.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_set/swap/1.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_set/swap/2.cc: Ditto.
+	* testsuite/tr1/6_containers/utility/pair.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_map/requirements/
+	explicit_instantiation.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_map/24064.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_map/swap/1.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_map/swap/2.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/cons/constructor.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/cons/assignment.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/tuple_element.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/tuple_size.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/
+	comparisons.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/element_access/get.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/creation_functions/23978.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: Ditto.
+	* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
+	Ditto.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_multiset/swap/1.cc: Ditto.
+	* testsuite/tr1/6_containers/unordered_multiset/swap/2.cc: Ditto.
+
+2007-07-10  Bob Wilson  
+
+	* configure.ac: Check if $atomicity_dir is cpu/generic/atomicity_mutex
+	instead of the non-existent cpu/generic/atomic_mutex.
+	* configure: Regenerate.
+
+2007-07-10  Paolo Carlini  
+
+	* include/std/utility (identity, move, forward): Add.
+	* testsuite/20_util/move/requirements/explicit_instantiation.cc: New.
+	* testsuite/20_util/move/1.cc: New.
+	* testsuite/20_util/identity/value.cc: New.
+	* testsuite/20_util/identity/requirements/typedefs.cc: New.
+	* testsuite/20_util/identity/requirements/explicit_instantiation.cc:
+	New.
+	* testsuite/20_util/forward/requirements/explicit_instantiation.cc:
+	New.
+	* testsuite/20_util/forward/1.cc: New.
+	* testsuite/20_util/forward/1_neg.cc: New.
+
+2007-07-09  Paolo Carlini  
+
+	* testsuite/27_io/ios_base/failure/what-1.cc: Include .
+
+2007-07-09  Jim Xochellis  
+	    Paolo Carlini  
+
+	* include/bits/stl_algo.h (search(_ForwardIterator1,
+	_ForwardIterator1, _ForwardIterator2, _ForwardIterator2)): Tidy.
+	(search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2,
+	_ForwardIterator2, _BinaryPredicate)): Likewise.
+
+2007-07-06  Hans-Peter Nilsson  
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Use env(AR)
+	and env(RANLIB), not env(AR_FOR_TARGET) and env(RANLIB_FOR_TARGET).
+
+2007-07-05  Joerg Richter  
+
+	PR libstdc++/31957
+	* include/Makefile.am: Work around an AIX sed oddity.
+	* include/Makefile.in: Regenerate.
+
+2007-07-04  Jim Xochellis  
+
+	* include/bits/stl_algo.h (search(_ForwardIterator1,
+	_ForwardIterator1, _ForwardIterator2, _ForwardIterator2)): Simplify
+	general case loop to a for(;;).
+	(search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2,
+	_ForwardIterator2, _BinaryPredicate)): Likewise; remove redundant
+	inner loop.
+
+2007-07-03  Paolo Carlini  
+
+	PR libstdc++/31518
+	* include/debug/formatter.h (_Error_formatter::_M_get_max_length): New.
+	(_Error_formatter::_Error_formatter): Use it.
+	* src/debug.cc: Define.
+	(_Error_formatter::_M_error): Tweak.
+	* configure.ac: Adjust version to 6:10:0.
+	* config/abi/pre/gnu.ver: Export _Error_formatter::_M_get_max_length
+	at GLIBCXX_3.4.10.
+	* testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.10.
+	* docs/html/debug.html: Document.
+	* configure: Regenerate.
+
+2007-07-02  Douglas Gregor  
+
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Tweak line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Ditto.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
+	Don't try to create an unsigned wchar_t.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
+	Don't try to create an unsigned wchar_t.
+	* testsuite/util/testsuite_hooks.h: Remove a stray semicolon.
+
+2007-07-01  Douglas Gregor  
+
+	* include/std/type_traits (__make_unsigned): Remove invalid
+	wchar_t specialization.
+	(__make_signed): Remove invalid wchar_t specialization.
+
+2007-06-29  Douglas Gregor  
+
+	* testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc: Force
+	C++98 mode.
+	* testsuite/18_support/headers/cstdint/std_c++0x_neg.cc: Ditto.
+	* testsuite/20_util/headers/type_traits/std_c++0x_neg.cc: Ditto.
+	* testsuite/23_containers/headers/array/std_c++0x_neg.cc: Ditto.
+	* testsuite/23_containers/headers/tuple/std_c++0x_neg.cc: Ditto.
+	* testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
+	Ditto.
+	* testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
+	Ditto.
+	* testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: Ditto.
+	* testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc: Ditto.
+	* testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: Ditto.
+	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc: Ditto.
+	* testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Ditto.
+	* testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Ditto.
+
+2007-06-28  Paolo Carlini  
+
+	PR libstdc++/32509
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Carry out the checks
+	involving the de_DE locale only if an auto locale config is
+	used for a target suitable for the gnu locale model.
+	* docs/html/install.html: Update.
+	* configure: Regenerated.
+
+2007-06-26  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_api.h: New.
+	* testsuite/27_io/ios_base/failure: Add.
+	* testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc: New.
+	* testsuite/27_io/ios_base/failure/what-1.cc: Same.
+	* testsuite/27_io/ios_base/failure/what-2.cc: Same.
+	* testsuite/27_io/ios_base/failure/what-big.cc: Same.
+	* testsuite/27_io/ios_base/failure/what-3.cc: Same.
+	* testsuite/19_diagnostics/logic_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/19_diagnostics/runtime_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/18_support/bad_alloc/cons_virtual_derivation.cc: Same.
+	* testsuite/18_support/bad_cast/cons_virtual_derivation.cc: Same.
+	* testsuite/18_support/bad_exception/cons_virtual_derivation.cc: Same.
+	* testsuite/18_support/bad_typeid/cons_virtual_derivation.cc: Same.
+	* testsuite/ext/concurrence_lock_error: New.
+	* testsuite/ext/concurrence_lock_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/ext/forced_exception_error: New.
+	* testsuite/ext/forced_exception_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/ext/concurrence_unlock_error: New.
+	* testsuite/ext/concurrence_unlock_error/
+	cons_virtual_derivation.cc: Same.
+	* testsuite/20_util/function_objects/bad_function_call: New.
+	* testsuite/20_util/function_objects/bad_function_call/
+	cons_virtual_derivation.cc: Same.
+
+2007-06-26  Benjamin Kosnik  
+
+	* include/ext/throw_allocator.h: Fixes for -fno-exceptions.
+	* testsuite/util/testsuite_shared.cc: Same.
+	* testsuite/util/io/illegal_input_error.hpp: Same.
+	* testsuite/util/io/verified_cmd_line_input.cc: Same.
+
+	* libsupc++/typeinfo (type_info): Correct comment formatting,
+	clarify member access and public interface.
+	* libsupc++/exception: Less compressed comments.
+	* libsupc++/new: Same.
+
+2007-06-18  Paolo Carlini  
+
+	* include/bits/stl_list.h: Rename guard macro consistently with
+	file name.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_queue.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_stack.h: Likewise.
+	* include/bits/stl_iterator_base_types.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_iterator_base_funcs.h: Likewise.
+	* include/bits/stl_algo.h: Likewise.
+	* include/bits/stl_iterator.h: Likewise.
+	* include/bits/stl_tempbuf.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_function.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+
+2007-06-17  Nathan Sidwell  
+
+	* config/cpu/m68k/atomicity.h: Use __mcfisaa__, __mcfisaaplus__,
+	__mcfisab__ & __mcfisac__ instead of obsolete cpu #defines.
+
+2007-06-13  Richard Earnshaw  
+
+	* libsupc++/eh_arm.cc (__cxa_type_match): Handle foreign
+	exceptions.
+	* libsubpc++/eh_personality.cc: Don't try to set up foreign or
+	forced unwind types here when using the ARM EABI unwinder.
+
+2007-06-13  Paolo Carlini  
+
+	* include/c_global/cmath: Tweak includes.
+	* include/std/memory: Likewise.
+	* include/std/complex: Likewise.
+	* include/tr1/memory: Likewise.
+	* include/tr1/complex: Likewise.
+	* include/tr1/cmath: Likewise; do not wrap special functions
+	in #ifndef __GXX_EXPERIMENTAL_CXX0X__.
+
+2007-06-10  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_performance.h: Add cstring include for
+	memset.
+
+2007-06-08  Paolo Carlini  
+
+	* docs/html/install.html: Adjust consistently with libstdc++/31717.
+
+2007-06-08  Francesco Palagi  
+
+	* include/std/fstream: Add Table 92 in comment.
+
+2007-06-06  Paolo Carlini  
+
+	PR libstdc++/32233
+	* include/bits/stl_vector.h (_M_fill_initialize): Fix return type.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+
+2007-06-06  Benjamin Kosnik  
+	    Frank Mori Hess  
+
+	* docs/html/debug.html: Correct link.
+
+2007-06-02  Paolo Carlini  
+
+	* include/tr1_impl/type_traits (is_reference, add_reference,
+	remove_reference): Remove.
+	* include/tr1/type_traits (is_reference, add_reference,
+	remove_reference): Add.
+	* include/std/type_traits (is_lvalue_reference, is_rvalue_reference,
+	is_reference, remove_reference, add_lvalue_reference,
+	add_rvalue_reference): Add.
+	* include/tr1_impl/boost_shared_ptr.h (operator*): Adjust.
+	* testsuite/20_util/add_lvalue_reference/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/add_lvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/add_rvalue_reference/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/add_rvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/is_lvalue_reference/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_lvalue_reference/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/is_lvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/is_rvalue_reference/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_rvalue_reference/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/is_rvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/is_reference/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_reference/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_reference/value.cc: Likewise.
+	* testsuite/20_util/remove_reference/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/remove_reference/value.cc: Likewise.
+
+	* testsuite/tr1/4_metaprogramming/add_const/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/add_const/value.cc: ... here.
+	* testsuite/tr1/4_metaprogramming/add_cv/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/add_cv/value.cc: ... here.
+	* testsuite/tr1/4_metaprogramming/add_pointer/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/add_pointer/value.cc: ... here.
+	* testsuite/tr1/4_metaprogramming/add_reference/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/add_reference/value.cc: ... here.
+	* testsuite/tr1/4_metaprogramming/add_volatile/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/add_volatile/value.cc: ... here.
+	* testsuite/tr1/4_metaprogramming/aligned_storage/requirements/
+	typedefs.cc: Move...
+	* testsuite/tr1/4_metaprogramming/aligned_storage/value.cc: ... here.
+
+2007-06-02  Paolo Bonzini  
+
+	* configure: Regenerate.
+
+2007-06-01  Benjamin Kosnik  
+
+	* testsuite/19_diagnostics/logic_error/what-big.cc: New.
+	* testsuite/19_diagnostics/logic_error/what-3.cc: Same.
+	* testsuite/19_diagnostics/runtime_error/what-big.cc: Same.
+	* testsuite/19_diagnostics/runtime_error/what-3.cc: Same.
+
+	* testsuite/18_support/14493.cc: Break into...
+	* testsuite/18_support/exception/what.cc: ...this.
+	* testsuite/18_support/bad_cast/what.cc: ...this.
+	* testsuite/18_support/bad_alloc/what.cc: ...this.
+	* testsuite/18_support/bad_typeid/what.cc: ...this.
+	* testsuite/18_support/bad_exception/what.cc: ...this.
+
+	* testsuite/19_diagnostics/bad_exception/23591_thread-1.c: Move...
+	* testsuite/18_support/bad_exception/23591_thread-1.c: ...here.
+
+	* testsuite/18_support/14026.cc: Move...
+	* testsuite/18_support/uncaught_exception/14026.cc: ...here.
+
+2007-06-01  Benjamin Kosnik  
+
+	* include/ext/throw_allocator.h (__throw_allocator::allocate):
+	Throw bad_alloc for out of memory conditions.
+	* testsuite/ext/throw_allocator/deallocate_global.cc: New.
+	* testsuite/ext/throw_allocator/check_delete.cc: Same.
+	* testsuite/ext/throw_allocator/check_allocate_max_size.cc: Same.
+	* testsuite/ext/throw_allocator/check_deallocate_null.cc: Same.
+	* testsuite/ext/throw_allocator/explicit_instantiation.cc: Same.
+	* testsuite/ext/throw_allocator/check_new.cc: Same.
+	* testsuite/ext/throw_allocator/deallocate_local.cc: Same.
+
+2007-05-31  Paolo Carlini  
+
+	PR libstdc++/31426
+	* include/bits/c++config: Remove namespace association bits
+	from tr1 to std.
+
+	* include/ext/type_traits.h (__promote, __promote2,
+	__promote3, __promote4): Add.
+
+	* include/bits/hashtable.h: New.
+	* include/bits/functional_hash.h: Likewise.
+	* include/tr1/hashtable.h: Likewise.
+
+	* include/tr1_impl/random: New.
+	* include/tr1_impl/cinttypes: Likewise.
+	* include/tr1_impl/cstdlib: Likewise.
+	* include/tr1_impl/unordered_map: Likewise.
+	* include/tr1_impl/cstdio: Likewise.
+	* include/tr1_impl/boost_shared_ptr.h: Likewise.
+	* include/tr1_impl/cctype: Likewise.
+	* include/tr1_impl/random.tcc: Likewise.
+	* include/tr1_impl/tuple: Likewise.
+	* include/tr1_impl/functional_hash.h: Likewise.
+	* include/tr1_impl/hashtable: Likewise.
+	* include/tr1_impl/cmath: Likewise.
+	* include/tr1_impl/type_traitsfwd.h: Likewise.
+	* include/tr1_impl/hashtable_policy.h: Likewise.
+	* include/tr1_impl/cfenv: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/tr1_impl/functional: Likewise.
+	* include/tr1_impl/utility: Likewise.
+	* include/tr1_impl/complex: Likewise.
+	* include/tr1_impl/type_traits: Likewise.
+	* include/tr1_impl/cwchar: Likewise.
+	* include/tr1_impl/cstdint: Likewise.
+	* include/tr1_impl/regex: Likewise.
+	* include/tr1_impl/array: Likewise.
+	* include/tr1_impl/cwctype: Likewise.
+
+	* include/tr1/type_traitsfwd.h: Remove.
+	* include/tr1/boost_shared_ptr.h: Likewise.
+	* include/tr1/common.h: Likewise.
+	* include/tr1/hashtable: Likewise.
+	* include/tr1/hashtable_policy.h: Likewise.
+	* include/tr1/random.tcc: Likewise.
+
+	* include/c_global/cinttypes: Include tr1_impl/cinttypes.
+	* include/c_global/cstdlib: Likewise for cstdlib.
+	* include/c_global/cstdio: Likewise for cstdio.
+	* include/c_global/cctype: Likewise for cctype.
+	* include/c_global/cmath: Likewise for cmath.
+	* include/c_global/cfenv: Likewise for cfenv.
+	* include/c_global/cwchar: Likewise for cwchar.
+	* include/c_global/cstdint: Likewise for cstdint.
+	* include/c_global/cwctype: Likewise for cwctype.
+	* include/tr1/cinttypes: Likewise for cinttypes.
+	* include/tr1/cstdlib: Likewise for cstdlib.
+	* include/tr1/cstdio: Likewise for cstdio.
+	* include/tr1/cctype: Likewise for cctype.
+	* include/tr1/cmath: Likewise for cmath.
+	* include/tr1/cfenv: Likewise for cfenv.
+	* include/tr1/cwchar: Likewise for cwchar.
+	* include/tr1/cstdint: Likewise for cstdint.
+	* include/tr1/cwctype: Likewise for cwctype.
+	* include/tr1/functional_hash.h: Likewise for functional_hash.
+
+	* include/std/tuple: Include tr1_impl/tuple.
+	* include/std/utility: Likewise for utility.
+	* include/std/type_traits: Likewise for type_traits.
+	(is_pod): Just forward to __is_pod.
+	(has_trivial_default_constructor): Just forward to
+	__has_trivial_constructor.
+	(has_trivial_copy_constructor): Just forward to __has_trivial_copy.
+	(has_trivial_assign): Just forward to __has_trivial_assign.
+	(has_trivial_destructor): Just forward to __has_trivial_destructor.
+	(has_nothrow_default_constructor): Just forward to
+	__has_nothrow_constructor.
+	(has_nothrow_copy_constructor): Just forward to __has_nothrow_copy.
+	(has_nothrow_assign): Just forward to __has_nothrow_assign.
+	(is_base_of): Just forward to __is_base_of.
+	(is_signed, is_unsigned): Implement according to the C++0x
+	specifications.
+	* include/std/memory: Likewise for memory.
+	* include/std/regex: Likewise for regex.
+	* include/std/random: Likewise for random.
+	* include/std/unordered_map: Likewise for unordered_map.
+	* include/std/unordered_set: Likewise for unordered_set.
+	* include/std/functional: Likewise for functional.
+	* include/std/complex: Likewise for complex.
+	* include/std/array: Likewise for array.
+	* include/tr1/tuple: Likewise for tuple.
+	* include/tr1/utility: Likewise for utility.
+	* include/tr1/type_traits: Likewise for type_traits
+	* include/tr1/memory: Likewise for memory.
+	* include/tr1/regex: Likewise for regex.
+	* include/tr1/random: Likewise for random.
+	* include/tr1/unordered_map: Likewise for unordered_map.
+	* include/tr1/unordered_set: Likewise for unordered_set.
+	* include/tr1/functional: Likewise for functional.
+	* include/tr1/complex: Likewise for complex.
+	* include/tr1/array: Likewise for array.
+
+	* include/c_global/ctgmath: Tweak.
+	* include/c_global/cstdarg: Likewise.
+	* include/c_global/ctime: Likewise.
+	* include/c_global/climits: Likewise.
+	* include/c_global/cfloat: Likewise.
+	* include/c_global/ccomplex: Likewise.
+	* include/c_global/cstdbool: Likewise.
+
+	* include/tr1/poly_laguerre.tcc: Tweak, don't use _GLIBCXX_TR1.
+	* include/tr1/riemann_zeta.tcc: Likewise.
+	* include/tr1/beta_function.tcc: Likewise.
+	* include/tr1/exp_integral.tcc: Likewise.
+	* include/tr1/hypergeometric.tcc: Likewise.
+	* include/tr1/modified_bessel_func.tcc: Likewise.
+	* include/tr1/legendre_function.tcc: Likewise.
+	* include/tr1/special_function_util.h: Likewise.
+	* include/tr1/bessel_function.tcc: Likewise.
+	* include/tr1/poly_hermite.tcc: Likewise.
+	* include/tr1/ell_integral.tcc: Likewise.
+	* include/tr1/gamma.tcc: Likewise.
+	* include/tr1/stdlib.h: Likewise.
+	* include/tr1/math.h: Likewise.
+
+	* include/tr1/complex.h: Minor tweaks.
+	* include/tr1/wctype.h: Likewise.
+	* include/tr1/wchar.h: Likewise.
+	* include/tr1/inttypes.h: Likewise.
+	* include/tr1/tgmath.h: Likewise.
+	* include/tr1/cstdbool: Likewise.
+	* include/tr1/cfloat: Likewise.
+	* include/tr1/ccomplex: Likewise.
+	* include/tr1/ctime: Likewise.
+	* include/tr1/climits: Likewise.
+	* include/tr1/ctgmath: Likewise.
+	* include/tr1/cstdarg: Likewise.
+
+	* testsuite/tr1/headers.cc: Move...
+	* testsuite/tr1/headers/all.cc: ... here.
+	* testsuite/tr1/using_namespace_std_tr1.cc: Move...
+	* testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc: ... here.
+	* testsuite/tr1/headers/using_namespace_std_tr1.cc ... here.
+	* testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc: New.
+
+	* testsuite/20_util/tuple/requirements/explicit_instantiation.cc:
+	Adjust namespace.
+	* testsuite/20_util/has_nothrow_copy_constructor/value.cc: Adjust to
+	the C++0x requirements.
+	* testsuite/20_util/has_nothrow_default_constructor/value.cc: Likewise.
+	* testsuite/20_util/has_trivial_copy_constructor/value.cc: Likewise.
+	* testsuite/20_util/has_trivial_default_constructor/value.cc: Likewise.
+
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error lines.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
+	Un-xfail.
+
+	* testsuite/20_util/is_signed/value.cc: New.
+	* testsuite/20_util/is_signed/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_signed/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_unsigned/value.cc: Likewise..
+	* testsuite/20_util/is_unsigned/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc:
+	Likewise.
+
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+
+2007-05-31  Paolo Carlini  
+
+	PR c++/32158 (libstdc++ bits)
+	* include/bits/stl_uninitialized.h (__uninitialized_copy_aux,
+	__uninitialized_fill_aux, __uninitialized_fill_n_aux):
+	Remove.
+	(struct __uninitialized_copy, struct __uninitialized_fill,
+	struct __uninitialized_fill_n): Add.
+	(uninitialized_copy, uninitialized_fill, uninitialized_fill_n):
+	Adjust.
+	* testsuite/20_util/specialized_algorithms/32158.cc: New.
+
+	* include/bits/stl_uninitialized.h (uninitialized_copy(_InputIterator,
+	_InputIterator, _ForwardIterator)): Robustify vs non-POD input.
+
+	* include/bits/stl_vector.h (_M_fill_initialize): New.
+	(vector(size_type, const value_type&, const allocator_type&),
+	_M_initialize_dispatch(_Integer, _Integer, __true_type)): Use it.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-05-29  Paolo Carlini  
+
+	* aclocal.m4: Regenerate.
+
+	* testsuite/17_intro/headers/c++1998/c++_for_c.tar: Remove.
+	* testsuite/17_intro/headers/c++1998/c++.tar: Likewise.
+
+2007-05-28  Benjamin Kosnik  
+
+	PR libstdc++/31717
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Re-organize. Sanity check
+	gnu locale model requests to make sure it will work for the requested
+	target. Add checks for strxfrm_l, strerror_l when in gnu locale,
+	and strerror_r everywhere.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+	* config.h.in: Regenerated.
+
+2007-05-27  Paolo Carlini  
+
+	* include/tr1/boost_shared_ptr.h
+	(_Sp_counted_base<_S_mutex>::_M_add_ref_lock()): Do not wrap in
+	#ifdef __GTHREADS.
+
+2007-05-27  Paolo Carlini  
+
+	* include/c_global/cwchar: Do not include .
+	* include/c_std/cwchar: Likewise.
+	* include/ext/throw_allocator.h: Do it here.
+
+2007-05-25  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h (__convert_from_v): Fix typo.
+
+2007-05-24  Paolo Carlini  
+
+	* include/ext/concurrence.h: Use __GCC_HAVE_SYNC_COMPARE_AND_SWAP_*.
+
+2007-05-24  Steve Ellcey  
+
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2007-05-24  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h (__convert_from_v): Only switch to the
+	"C" locale if the current one isn't already "C" (for old glibcs).
+	* config/os/gnu-linux/ctype_noninline.h (ctype::classic_table,
+	ctype::ctype(__c_locale, const mask*, bool, size_t),
+	ctype::ctype(const mask*, bool, size_t)): Likewise, for generic
+	locale model.
+	* config/locale/gnu/messages_members.h
+	(messages<>::messages(__c_locale, const char*, size_t),
+	messages_byname<_CharT>::messages_byname(const char*, size_t)):
+	Only dynamically allocate memory if __s != "C".
+	* config/locale/gnu/time_members.h
+	(__timepunct<_CharT>::__timepunct(__c_locale, const char*, size_t)):
+	Likewise.
+	* config/locale/generic/time_members.h
+	(__timepunct<_CharT>::__timepunct(__c_locale, const char*, size_t)):
+	Likewise.
+
+	* testsuite/util/testsuite_allocator.h: Revert last change.
+
+2007-05-22  Paolo Carlini  
+
+	* testsuite/util/testsuite_allocator.h (check_new): Assign false
+	to new_called.
+	(check_delete): Likewise for delete_called.
+
+2007-05-21  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h: Do not include , use builtins.
+	* config/locale/generic/c_locale.h: Likewise.
+
+2007-05-21  Paolo Carlini  
+
+	PR libstdc++/31621
+	* acinclude.m4 ([GLIBCXX_CHECK_LINKER_FEATURES]): Use the C compiler.
+	* configure: Regenerate.
+
+2007-05-20  Paolo Carlini  
+
+	* include/bits/stl_algo.h: Shuffle the functions to better match the
+	order in the standard.
+
+2007-05-17  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h: Do not include .
+	* config/locale/gnu/messages_members.h: Do it here.
+
+	* config/locale/gnu/c_locale.h: Do not include , use
+	the builtins.
+	* config/locale/generic/c_locale.h: Likewise.
+
+2007-05-17  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Add -g to
+	compile flags, move code to test to global scope.
+	* configure: Regenerate.
+
+2007-05-17  Benjamin Kosnik  
+
+	* testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc:
+	Fix dg bits.
+	* testsuite/21_strings/char_traits/requirements/char/typedefs.cc: Same.
+
+2007-05-17  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (mismatch): Move...
+	* include/bits/stl_algo.h: ... here.
+
+2007-05-17  Benjamin Kosnik  
+
+	* include/tr1/cmath: Guard special math with
+	__GXX_EXPERIMENTAL_CXX0X__.
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc:
+	Remove xfail.
+
+2007-05-17  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__pad<>::_S_pad): Minor tweaks, avoid
+	unnecessary casts, do widenings just in time.
+
+2007-05-16  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Add a function
+	to the test code compiled with -ffunction-sections -fdata-sections.
+	* configure: Regenerate.
+
+	* testsuite/22_locale/ctype/scan/wchar_t/1.cc: Remove
+	_GLIBCXX_USE_WCHAR_T guards as superfluous.
+
+	* testsuite/20_util/make_signed/requirements/typedefs-1.cc: Add
+	_GLIBCXX_USE_WCHAR_T guards.
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Same.
+
+	* testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc:
+	Add.
+	* testsuite/21_strings/char_traits/typedefs/char/1.cc: Move...
+	* testsuite/21_strings/char_traits/requirements/char/typedefs.cc:
+	...here.
+	* testsuite/21_strings/char_traits/typedefs: Remove.
+	* testsuite/21_strings/char_traits/typedefs/char: Remove.
+
+2007-05-16  Benjamin Kosnik  
+
+	* docs/html/abi.html: Update for gcc-4.1.2 and gcc-4.2.0.
+
+2007-05-14  Kaz Kojima  
+
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	17_hyperg/check_nan.cc: Add -mieee for sh.
+
+2007-05-14  Paolo Carlini  
+
+	* testsuite/util/testsuite_io.h: Only include .
+
+2007-05-14  Paolo Carlini  
+
+	* include/bits/allocator.h: Do not include cpp_type_traits.h.
+
+2007-05-14  Paolo Carlini  
+
+	* include/bits/postypes.h (class fpos<>): Remove redundant forward
+	declaration.
+
+2007-05-13  Paolo Carlini  
+
+	* include/bits/stl_tempbuf.h (return_temporary_buffer(_Tp*)): Inline.
+
+2007-05-13  Paolo Carlini  
+
+	* include/tr1/type_traitsfwd.h: Fix include guard typo.
+
+2007-05-11  Paolo Carlini  
+
+	* include/ext/pod_char_traits.h (char_traits<>::move):
+	Use __builtin_memmove.
+	* include/bits/locale_classes.h (locale::_Impl::_M_check_same_name,
+	collate_byname(const char*, size_t)): Use __builtin_strcmp.
+	* include/bits/locale_facets.h: Use __builtin_mem* and
+	__builtin_str* everywhere.
+	* include/bits/codecvt.h (codecvt_byname(const char*, size_t)):
+	Use __builtin_strcmp.
+	* include/bits/char_traits.h: Use __builtin_mem* everywhere.
+	* include/bits/fstream.tcc (basic_filebuf<>::underflow, imbue):
+	Use __builtin_memcpy and __builtin_memmove.
+	* include/bits/locale_facets_nonio.h (moneypunct_byname(const char*,
+	size_t __refs)): Use __builtin_strcmp.
+	* include/std/bitset (bitset<>::_M_do_reset): Use __builtin_memset.
+	* config/locale/gnu/c_locale.h: Use __builtin_strlen, __builtin_strcmp,
+	and __builtin_memcpy.
+	* config/locale/gnu/messages_members.h: Likewise.
+	* config/locale/gnu/time_members.h: Likewise.
+	* config/locale/generic/c_locale.h: Likewise.
+	* config/locale/generic/messages_members.h: Likewise.
+	* config/locale/generic/time_members.h: Likewise.
+	* config/os/gnu-linux/ctype_noninline.h: Likewise, avoid strdup.
+	* config/os/tpf/ctype_noninline.h: Likewise.
+	* config/locale/generic/codecvt_members.cc: Include .
+	* config/locale/generic/ctype_members.cc: Likewise.
+	* config/locale/generic/collate_members.cc: Likewise.
+	* config/locale/gnu/c++locale_internal.h: Likewise.
+	* config/locale/darwin/ctype_members.cc: Likewise.
+	* src/ctype.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-3.cc: Likewise.
+	* config/locale/gnu/messages_members.cc: Avoid strdup.
+	* config/locale/gnu/monetary_members.cc: Likewise.
+	* config/locale/gnu/time_members.cc: Likewise.
+	* config/locale/gnu/time_members.cc: Likewise.
+	* config/locale/generic/c_locale.cc: Likewise.
+
+2007-05-11  Benjamin Kosnik  
+
+	* include/std/stdexcept: Remove extra spacing.
+
+	* testsuite/19_diagnostics/stdexceptions.cc: Break into...
+	* testsuite/19_diagnostics/bad_exception: ...this. Populate.
+	* testsuite/19_diagnostics/logic_error: ... this.
+	* testsuite/19_diagnostics/logic_error/what-1.cc: ...this.
+	* testsuite/19_diagnostics/logic_error/what-2.cc: ...this.
+	* testsuite/19_diagnostics/runtime_error: ...this.
+	* testsuite/19_diagnostics/runtime_error/what-1.cc: ...this.
+	* testsuite/19_diagnostics/runtime_error/what-2.cc: ...this.
+	* testsuite/19_diagnostics/runtime_error/what-3.cc: ...this.
+	* testsuite/19_diagnostics/23591_thread-1.c: Move...
+	* testsuite/19_diagnostics/bad_exception/23591_thread-1.c: ...here.
+
+2007-05-10  Paolo Carlini  
+
+	* 27_io/objects/wchar_t/11.cc: Include .
+	* 27_io/objects/wchar_t/10.cc: Likewise.
+	* 27_io/objects/wchar_t/12.cc: Likewise.
+	* 27_io/basic_streambuf/sputbackc/char/9538.cc: Likewise.
+	* 27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
+	* 27_io/basic_streambuf/overflow/char/1.cc: Likewise.
+	* 27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+	* 27_io/basic_streambuf/sputn/wchar_t/1.cc: Likewise.
+	* 27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+	* 27_io/basic_ios/cons/char/3.cc: Likewise.
+	* 27_io/basic_stringbuf/setbuf/char/2.cc: Likewise.
+	* 27_io/basic_stringbuf/setbuf/char/3.cc: Likewise.
+	* 27_io/basic_stringbuf/setbuf/char/4.cc: Likewise.
+	* 27_io/basic_istream/extractors_character/char/4.cc: Likewise.
+	* 27_io/fpos/mbstate_t/1.cc: Likewise.
+	* 27_io/basic_filebuf/setbuf/char/2.cc: Likewise.
+	* 27_io/basic_filebuf/setbuf/char/3.cc: Likewise.
+	* 25_algorithms/copy/streambuf_iterators/char/2.cc: Likewise.
+	* 25_algorithms/copy/streambuf_iterators/char/4.cc: Likewise.
+	* 19_diagnostics/stdexceptions.cc: Likewise.
+	* 21_strings/char_traits/requirements/short/1.cc: Likewise.
+	* 21_strings/basic_string/compare/char/1.cc: Likewise.
+	* 21_strings/basic_string/capacity/1.cc: Likewise.
+	* ext/codecvt/char-1.cc: Likewise.
+	* ext/codecvt/char-2.cc: Likewise.
+	* ext/codecvt/1.cc: Likewise.
+	* ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
+	* ext/stdio_sync_filebuf/char/1.cc: Likewise.
+	* ext/stdio_filebuf/char/2.cc: Likewise.
+	* ext/stdio_filebuf/char/10063-1.cc: Likewise.
+	* 22_locale/ctype/narrow/char/19955.cc: Likewise.
+	* 22_locale/codecvt/unshift/wchar_t/1.cc: Likewise.
+	* 22_locale/codecvt/unshift/wchar_t/2.cc: Likewise.
+	* 22_locale/codecvt/unshift/wchar_t/3.cc: Likewise.
+	* 22_locale/codecvt/unshift/wchar_t/4.cc: Likewise.
+	* 22_locale/codecvt/unshift/char/1.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/1.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/2.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/3.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/4.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/5.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/6.cc: Likewise.
+	* 22_locale/codecvt/length/wchar_t/7.cc: Likewise.
+	* 22_locale/codecvt/always_noconv/char/1.cc: Likewise.
+	* 22_locale/codecvt/encoding/char/1.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/1.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/2.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/3.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/4.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/5.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/6.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/7.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/8.cc: Likewise.
+	* 22_locale/codecvt/in/wchar_t/9.cc: Likewise.
+	* 22_locale/codecvt/in/char/1.cc: Likewise.
+	* 22_locale/codecvt/max_length/char/1.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/1.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/2.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/3.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/4.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/5.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/6.cc: Likewise.
+	* 22_locale/codecvt/out/wchar_t/7.cc: Likewise.
+	* 22_locale/codecvt/out/char/1.cc: Likewise.
+	* 22_locale/locale/cons/5.cc: Likewise.
+	* 22_locale/collate_byname/named_equivalence.cc: Likewise.
+
+2007-05-07  Mark Mitchell  
+
+	* libstdc++-v3/libsupc++/cxxabi.h (_GLIBCXX_NOTHROW): New macro.
+	(__cxa_atexit): Use it.
+
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): For
+	installed-tree testing, search more include directories.
+
+2007-05-08  Benjamin Kosnik  
+
+	* include/std/type_traits (make_signed): Remove specializations
+	for floating point types.
+	(make_unsigned): Same.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Fix.
+	* testsuite/20_util/make_signed/requirements/typedefs-1.cc: Same.
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Same.
+
+2007-05-08  Benjamin Kosnik  
+
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: New.
+
+2007-05-08  Jason Merrill  
+
+	* libsupc++/cxxabi-internal.h: Remove, to be replaced by...
+	* libsupc++/cxxabi-forced.h: ...this new file.
+	* include/ext/vstring.tcc: Include cxxabi-forced.h instead.
+	* include/bits/istream.tcc: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/ostream_insert.h: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/std/bitset: Likewise.
+	* libsupc++/cxxabi.h: Restore previous contents.
+	* Makefile.am (headers): Add cxxabi-forced.h.
+	* Makefile.in: Regenerate.
+
+2007-05-08  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.2.
+
+	* libsupc++/cxxabi-internal.h (__foreign_exception::__pure): To
+	__pure_virtual.
+
+2007-05-07  Jason Merrill  
+
+	* include/bits/ostream.tcc (operator<<(char*)): Add __s.
+
+	* config/abi/pre/gnu.ver: Fix symbol versions.
+	* config/abi/pre/gnu-versioned-namespace.ver: Likewise.
+
+2007-05-07  Danny Smith  
+
+	* config/os/mingw32/os_defines.h (NOMINMAX): Update comment.
+
+2007-05-07  Jason Merrill  
+
+	PR c++/28145
+	* libsupc++/cxxabi.h (__forced_unwind, __foreign_exception):
+	New classes.
+	* libsupc++/eh_exception.cc: Define their destructors.
+	* config/abi/pre/gnu.ver: Export their type_infos.
+	* config/abi/pre/gnu-versioned-namespace.ver: Likewise.
+	* libsupc++/eh_personality.cc: A handler for abi::__forced_unwind
+	matches a forced unwind, and a handler for abi::__foreign_exception
+	matches a foreign exception.
+
+	* include/bits/istream.tcc: Rethrow forced unwind.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/ostream_insert.h: Likewise.
+	* include/bits/basic_string.tcc (operator>>, getline): Likewise.
+	* include/bits/fstream.tcc (basic_filebuf::close): Likewise.
+	* include/ext/vstring.cc (operator>>, getline): Likewise.
+	* src/istream.cc: Likewise.
+	* src/compatibility.cc (basic_istream::ignore): Likewise.
+	* include/std/bitset (operator>>): Likewise.
+	* include/std/fstream (basic_filebuf::close): Remove throw() spec.
+	* libsupc++/cxxabi-internal.h: Split out from...
+	* libsupc++/cxxabi.h: ...here.
+
+2007-05-07  Paolo Carlini  
+
+	* include/bits/stl_algobase.h: Do not include .
+	(copy(const _Tp*, const _Tp*, _Tp*), __copy_b(const _Tp*, const _Tp*,
+	_Tp*)): Use __builtin_memmove.
+	(__fill_aux): Use __builtin_memset.
+	(equal(const _Tp*, const _Tp*, const _Tp*),
+	lexicographical_compare(const unsigned char*, const unsigned char*,
+	const unsigned char*, const unsigned char*)): Use __builtin_memcmp.
+	* include/bits/valarray_array.h: Do not include .
+	(_Array_default_ctor<, true>::_S_do_it): Use __builtin_memset.
+	(_Array_copy_ctor<, true>::_S_do_it, _Array_copier<, true>::_S_do_it):
+	Use __builtin_memcpy.
+	* include/ext/algorithm
+	(__lexicographical_compare_3way(const unsigned char*,
+	const unsigned char*, const unsigned char*, const unsigned char*)):
+	Use __builtin_memcmp.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2007-05-07  Mark Mitchell  
+
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): For
+	installed-tree testing, search more include directories.
+
+	* testsuite/22_locale/num_put/put/char/14220.cc: XFAIL on Solaris
+	2.10.
+	* testsuite/22_locale/num_put/put/wchar_t/14220.cc: Likewise.
+
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): In
+	installed-tree testing, use "remote_exec host", not "remote_exec
+	exec".  Trip trailing newlines from output of -dumpversion and
+	-dumpmachine.
+
+2007-05-07  Benjamin Kosnik  
+            Howard Hinnant  
+
+	* include/std/type_traits: (make_signed, make_unsigned): Adjust
+	for enum sizes.
+	* testsuite/20_util/make_unsigned/requirements/typedefs.cc: Move to...
+	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: ...here.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Add,
+	compile with -funsigned-char -fshort-enums.
+	* testsuite/20_util/make_signed/requirements/typedefs.cc: Move to...
+	* testsuite/20_util/make_signed/requirements/typedefs-1.cc: ...here.
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Add,
+	compile with -funsigned-char -fshort-enums.
+
+	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
+	Add a temporary xfail to this test for all platforms.
+
+2007-05-06  Paolo Carlini  
+
+	* include/std/complex: Add missing extern template declarations.
+	* testsuite/26_numerics/complex/complex_inserters_extractors.cc:
+	Move...
+	* testsuite/26_numerics/complex/inserters_extractors/char/1.cc:
+	... here.
+	* testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc:
+	New.
+
+2007-05-06  Paolo Carlini  
+
+	PR libstdc++/31834
+	* testsuite/17_intro/headers/c++200x/all.cc: Protect inclusion
+	of C99 headers.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc:
+	Likewise.
+
+2007-05-06  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc: Don't use __builtin_huge_val*
+	when __*_HAS_INFINITY__ is false.
+
+2007-05-04  Paolo Carlini  
+
+	* include/bits/stl_raw_storage_iter.h (class raw_storage_iterator):
+	Adjust template parameter name.
+
+2007-05-04  Mark Mitchell  
+
+	* libsupc++/cxxabi.h (__cxa_atexit): Conditionalize exception
+	specification on #ifdef __cplusplus.
+
+2007-05-04  Paolo Carlini  
+
+	* include/bits/stl_memory.h: Rename to stl_auto_ptr.h.
+	(__get_temporary_buffer, get_temporary_buffer,
+	return_temporary_buffer): Move...
+	* include/bits/stl_tempbuf.h: ... here.
+	* include/std/memory: Adjust includes.
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust dg-error line
+	numbers.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/util/testsuite_iterators.h: Do not include the entire
+	.
+	* include/bits/stl_iterator_base_types.h: Adjust includes.
+	* testsuite/25_algorithms/unique_copy/2.cc: Include .
+
+2007-05-04  Mark Mitchell  
+
+	* libsupc++/atexit_arm.cc: New file.
+	* libsupc++/vec.cc (__aeabi_atexit): Remove.
+	* libsupc++/cxxabi.h (__cxa_atexit): Add exception specification.
+
+	* libsupc++/Makefile.am: Add atexit_arm.cc.
+	* libsupc++/Makefile.in: Regenerated.
+
+2007-05-04  Paolo Carlini  
+
+	* include/bits/stl_construct.h (_Destroy(_ForwardIterator,
+	_ForwardIterator __last, _Allocator)): Change the last parameter
+	to _Allocator&.
+	* include/bits/stl_uninitialized.h (__uninitialized_copy_a,
+	__uninitialized_fill_a, __uninitialized_fill_n_a,
+	__uninitialized_fill_copy, __uninitialized_copy_fill,
+	__uninitialized_copy_copy): Likewise.
+	* include/ext/rope: Adjust everywhere.
+	* include/ext/ropeimpl.h: Likewise.
+
+2007-05-03  Benjamin Kosnik  
+
+	* include/std/type_traits (enable_if): New.
+	(conditional): New.
+	(__decay_selector, decay): New.
+	(__cv_selector, __match_cv_qualifiers): New.
+	(__make_unsigned, __make_unsigned_selector, make_unsigned): New.
+	(__make_signed, __make_signed_selector, make_signed): New.
+	(has_trivial_constructor): ... to has_trivial_default_constructor.
+	(has_nothrow_constructor): ... to has_nothrow_default_constructor.
+	(has_trivial_copy): ... to has_trivial_copy_constructor.
+	(has_nothrow_copy): ... to has_nothrow_copy_constructor.
+
+	* include/tr1/type_traits_fwd: Move to...
+	* include/tr1/type_traitsfwd: ... this, consistency with
+	ios/string/locale forward headers.
+	* include/tr1/type_traits: Adjust include.
+	* include/Makefile.am (tr1_headers): Change type_traits_fwd.h to
+	type_traitsfwd.h.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/23_containers/tuple: Move...
+	* testsuite/20_util/tuple:... here.
+
+	* testsuite/20_util/conditional: New.
+	* testsuite/20_util/conditional/requirements: Same.
+	* testsuite/20_util/conditional/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/conditional/requirements/typedefs.cc: Same.
+	* testsuite/20_util/decay: Same.
+	* testsuite/20_util/decay/requirements: Same.
+	* testsuite/20_util/decay/requirements/explicit_instantiation.cc: Same.
+	* testsuite/20_util/decay/requirements/typedefs.cc: Same.
+	* testsuite/20_util/enable_if: Same.
+	* testsuite/20_util/enable_if/requirements: Same.
+	* testsuite/20_util/enable_if/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/enable_if/requirements/typedefs.cc: Same.
+	* testsuite/20_util/enable_if/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/has_nothrow_copy_constructor: Same.
+	* testsuite/20_util/has_nothrow_copy_constructor/requirements: Same.
+	* testsuite/20_util/has_nothrow_copy_constructor/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/has_nothrow_copy_constructor/requirements/
+	typedefs.cc: Same.
+	* testsuite/20_util/has_nothrow_copy_constructor/value.cc: Same.
+	* testsuite/20_util/has_nothrow_default_constructor: Same.
+	* testsuite/20_util/has_nothrow_default_constructor/requirements: Same.
+	* testsuite/20_util/has_nothrow_default_constructor/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/has_nothrow_default_constructor/requirements/
+	typedefs.cc: Same.
+	* testsuite/20_util/has_nothrow_default_constructor/value.cc: Same.
+	* testsuite/20_util/has_trivial_copy_constructor: Same.
+	* testsuite/20_util/has_trivial_copy_constructor/requirements: Same.
+	* testsuite/20_util/has_trivial_copy_constructor/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/has_trivial_copy_constructor/requirements/
+	typedefs.cc: Same.
+	* testsuite/20_util/has_trivial_copy_constructor/value.cc: Same.
+	* testsuite/20_util/has_trivial_default_constructor: Same.
+	* testsuite/20_util/has_trivial_default_constructor/requirements: Same.
+	* testsuite/20_util/has_trivial_default_constructor/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/has_trivial_default_constructor/requirements/
+	typedefs.cc: Same.
+	* testsuite/20_util/has_trivial_default_constructor/value.cc: Same.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc: Same.
+	* testsuite/20_util/make_signed: Same.
+	* testsuite/20_util/make_signed/requirements: Same.
+	* testsuite/20_util/make_signed/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/make_signed/requirements/typedefs.cc: Same.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/make_unsigned: Same.
+	* testsuite/20_util/make_unsigned/requirements: Same.
+	* testsuite/20_util/make_unsigned/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+
+2007-05-02  Paolo Carlini  
+
+	PR libstdc++/31777
+	* include/ext/pool_allocator.h (__pool_alloc<>::allocate,
+	__pool_alloc<>::deallocate): Fix _S_force_new check.
+
+2007-05-01  Benjamin Kosnik  
+
+	* 23_containers/requirements/sequences/dr438/deque/*: Move to...
+	* 23_containers/deque/requirements/dr438: ...here.
+
+	* 23_containers/requirements/sequences/dr438/list/*: Move to...
+	* 23_containers/list/requirements/dr438: ...here.
+
+	* 23_containers/requirements/sequences/dr438/vector/*: Move to...
+	* 23_containers/vector/requirements/dr438: ...here.
+
+2007-05-01  Benjamin Kosnik  
+
+	* testsuite/*/explicit_instantiations.cc: Change to...
+	* testsuite/*/explicit_instantiation.cc: ... this.
+
+2007-05-01  Benjamin Kosnik  
+
+	* testsuite/tr1/4_metaprogramming/*/explicit_instantiations.cc: Change
+	"basic_ofstream" in comment to type_traits.
+
+2007-04-30  Benjamin Kosnik  
+
+	Directory layout flattening.
+
+	Added in testsuite:
+	* tr1/4_metaprogramming/add_const
+	* tr1/4_metaprogramming/add_const/requirements
+	* tr1/4_metaprogramming/add_const/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/add_const/requirements/typedefs.cc
+	* tr1/4_metaprogramming/add_cv
+	* tr1/4_metaprogramming/add_cv/requirements
+	* tr1/4_metaprogramming/add_cv/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/add_cv/requirements/typedefs.cc
+	* tr1/4_metaprogramming/add_pointer
+	* tr1/4_metaprogramming/add_pointer/requirements
+	* tr1/4_metaprogramming/add_pointer/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/add_pointer/requirements/typedefs.cc
+	* tr1/4_metaprogramming/add_reference
+	* tr1/4_metaprogramming/add_reference/requirements
+	* tr1/4_metaprogramming/add_reference/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/add_reference/requirements/typedefs.cc
+	* tr1/4_metaprogramming/add_volatile
+	* tr1/4_metaprogramming/add_volatile/requirements
+	* tr1/4_metaprogramming/add_volatile/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/add_volatile/requirements/typedefs.cc
+	* tr1/4_metaprogramming/aligned_storage
+	* tr1/4_metaprogramming/aligned_storage/requirements
+	* tr1/4_metaprogramming/aligned_storage/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/aligned_storage/requirements/typedefs.cc
+	* tr1/4_metaprogramming/alignment_of
+	* tr1/4_metaprogramming/alignment_of/requirements
+	* tr1/4_metaprogramming/alignment_of/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
+	* tr1/4_metaprogramming/alignment_of/value.cc
+	* tr1/4_metaprogramming/extent
+	* tr1/4_metaprogramming/extent/requirements
+	* tr1/4_metaprogramming/extent/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/extent/requirements/typedefs.cc
+	* tr1/4_metaprogramming/extent/value.cc
+	* tr1/4_metaprogramming/has_nothrow_assign
+	* tr1/4_metaprogramming/has_nothrow_assign/requirements
+	* tr1/4_metaprogramming/has_nothrow_assign/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_assign/value.cc
+	* tr1/4_metaprogramming/has_nothrow_constructor
+	* tr1/4_metaprogramming/has_nothrow_constructor/requirements
+	* tr1/4_metaprogramming/has_nothrow_constructor/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_nothrow_constructor/
+	requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_constructor/value.cc
+	* tr1/4_metaprogramming/has_nothrow_copy
+	* tr1/4_metaprogramming/has_nothrow_copy/requirements
+	* tr1/4_metaprogramming/has_nothrow_copy/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_copy/value.cc
+	* tr1/4_metaprogramming/has_trivial_assign
+	* tr1/4_metaprogramming/has_trivial_assign/requirements
+	* tr1/4_metaprogramming/has_trivial_assign/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_assign/value.cc
+	* tr1/4_metaprogramming/has_trivial_constructor
+	* tr1/4_metaprogramming/has_trivial_constructor/requirements
+	* tr1/4_metaprogramming/has_trivial_constructor/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_trivial_constructor/
+	requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_constructor/value.cc
+	* tr1/4_metaprogramming/has_trivial_copy
+	* tr1/4_metaprogramming/has_trivial_copy/requirements
+	* tr1/4_metaprogramming/has_trivial_copy/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_copy/value.cc
+	* tr1/4_metaprogramming/has_trivial_destructor
+	* tr1/4_metaprogramming/has_trivial_destructor/requirements
+	* tr1/4_metaprogramming/has_trivial_destructor/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_destructor/value.cc
+	* tr1/4_metaprogramming/has_virtual_destructor
+	* tr1/4_metaprogramming/has_virtual_destructor/requirements
+	* tr1/4_metaprogramming/has_virtual_destructor/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
+	* tr1/4_metaprogramming/has_virtual_destructor/value.cc
+	* tr1/4_metaprogramming/integral_constant
+	* tr1/4_metaprogramming/integral_constant/requirements
+	* tr1/4_metaprogramming/integral_constant/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
+	* tr1/4_metaprogramming/integral_constant/true_false_value.cc
+	* tr1/4_metaprogramming/is_abstract
+	* tr1/4_metaprogramming/is_abstract/requirements
+	* tr1/4_metaprogramming/is_abstract/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_abstract/value.cc
+	* tr1/4_metaprogramming/is_arithmetic
+	* tr1/4_metaprogramming/is_arithmetic/requirements
+	* tr1/4_metaprogramming/is_arithmetic/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_arithmetic/value.cc
+	* tr1/4_metaprogramming/is_array
+	* tr1/4_metaprogramming/is_array/requirements
+	* tr1/4_metaprogramming/is_array/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_array/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_array/value.cc
+	* tr1/4_metaprogramming/is_base_of
+	* tr1/4_metaprogramming/is_base_of/requirements
+	* tr1/4_metaprogramming/is_base_of/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_base_of/value.cc
+	* tr1/4_metaprogramming/is_class
+	* tr1/4_metaprogramming/is_class/requirements
+	* tr1/4_metaprogramming/is_class/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_class/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_class/value.cc
+	* tr1/4_metaprogramming/is_compound
+	* tr1/4_metaprogramming/is_compound/requirements
+	* tr1/4_metaprogramming/is_compound/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_compound/value.cc
+	* tr1/4_metaprogramming/is_const
+	* tr1/4_metaprogramming/is_const/requirements
+	* tr1/4_metaprogramming/is_const/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_const/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_const/value.cc
+	* tr1/4_metaprogramming/is_convertible
+	* tr1/4_metaprogramming/is_convertible/requirements
+	* tr1/4_metaprogramming/is_convertible/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_convertible/value.cc
+	* tr1/4_metaprogramming/is_empty
+	* tr1/4_metaprogramming/is_empty/requirements
+	* tr1/4_metaprogramming/is_empty/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_empty/value.cc
+	* tr1/4_metaprogramming/is_enum
+	* tr1/4_metaprogramming/is_enum/requirements
+	* tr1/4_metaprogramming/is_enum/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_enum/value.cc
+	* tr1/4_metaprogramming/is_floating_point
+	* tr1/4_metaprogramming/is_floating_point/requirements
+	* tr1/4_metaprogramming/is_floating_point/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_floating_point/value.cc
+	* tr1/4_metaprogramming/is_function
+	* tr1/4_metaprogramming/is_function/requirements
+	* tr1/4_metaprogramming/is_function/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_function/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_function/value.cc
+	* tr1/4_metaprogramming/is_fundamental
+	* tr1/4_metaprogramming/is_fundamental/requirements
+	* tr1/4_metaprogramming/is_fundamental/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_fundamental/value.cc
+	* tr1/4_metaprogramming/is_integral
+	* tr1/4_metaprogramming/is_integral/requirements
+	* tr1/4_metaprogramming/is_integral/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_integral/value.cc
+	* tr1/4_metaprogramming/is_member_function_pointer
+	* tr1/4_metaprogramming/is_member_function_pointer/requirements
+	* tr1/4_metaprogramming/is_member_function_pointer/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_member_function_pointer/
+	requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_member_function_pointer/value.cc
+	* tr1/4_metaprogramming/is_member_object_pointer
+	* tr1/4_metaprogramming/is_member_object_pointer/requirements
+	* tr1/4_metaprogramming/is_member_object_pointer/
+	requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_member_object_pointer/
+	requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_member_object_pointer/value.cc
+	* tr1/4_metaprogramming/is_member_pointer
+	* tr1/4_metaprogramming/is_member_pointer/requirements
+	* tr1/4_metaprogramming/is_member_pointer/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_member_pointer/value.cc
+	* tr1/4_metaprogramming/is_object
+	* tr1/4_metaprogramming/is_object/requirements
+	* tr1/4_metaprogramming/is_object/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_object/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_object/value.cc
+	* tr1/4_metaprogramming/is_pod
+	* tr1/4_metaprogramming/is_pod/requirements
+	* tr1/4_metaprogramming/is_pod/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_pod/value.cc
+	* tr1/4_metaprogramming/is_pointer
+	* tr1/4_metaprogramming/is_pointer/requirements
+	* tr1/4_metaprogramming/is_pointer/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_pointer/value.cc
+	* tr1/4_metaprogramming/is_polymorphic
+	* tr1/4_metaprogramming/is_polymorphic/requirements
+	* tr1/4_metaprogramming/is_polymorphic/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_polymorphic/value.cc
+	* tr1/4_metaprogramming/is_reference
+	* tr1/4_metaprogramming/is_reference/requirements
+	* tr1/4_metaprogramming/is_reference/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_reference/value.cc
+	* tr1/4_metaprogramming/is_same
+	* tr1/4_metaprogramming/is_same/requirements
+	* tr1/4_metaprogramming/is_same/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_same/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_same/value.cc
+	* tr1/4_metaprogramming/is_scalar
+	* tr1/4_metaprogramming/is_scalar/requirements
+	* tr1/4_metaprogramming/is_scalar/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_scalar/value.cc
+	* tr1/4_metaprogramming/is_signed
+	* tr1/4_metaprogramming/is_signed/requirements
+	* tr1/4_metaprogramming/is_signed/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_signed/value.cc
+	* tr1/4_metaprogramming/is_union
+	* tr1/4_metaprogramming/is_union/requirements
+	* tr1/4_metaprogramming/is_union/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_union/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_union/value.cc
+	* tr1/4_metaprogramming/is_unsigned
+	* tr1/4_metaprogramming/is_unsigned/requirements
+	* tr1/4_metaprogramming/is_unsigned/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_unsigned/value.cc
+	* tr1/4_metaprogramming/is_void
+	* tr1/4_metaprogramming/is_void/requirements
+	* tr1/4_metaprogramming/is_void/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_void/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_void/value.cc
+	* tr1/4_metaprogramming/is_volatile
+	* tr1/4_metaprogramming/is_volatile/requirements
+	* tr1/4_metaprogramming/is_volatile/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
+	* tr1/4_metaprogramming/is_volatile/value.cc
+	* tr1/4_metaprogramming/rank
+	* tr1/4_metaprogramming/rank/requirements
+	* tr1/4_metaprogramming/rank/requirements/explicit_instantiations.cc
+	* tr1/4_metaprogramming/rank/requirements/typedefs.cc
+	* tr1/4_metaprogramming/rank/value.cc
+	* tr1/4_metaprogramming/remove_all_extents
+	* tr1/4_metaprogramming/remove_all_extents/requirements
+	* tr1/4_metaprogramming/remove_all_extents/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_all_extents/value.cc
+	* tr1/4_metaprogramming/remove_const
+	* tr1/4_metaprogramming/remove_const/requirements
+	* tr1/4_metaprogramming/remove_const/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_const/value.cc
+	* tr1/4_metaprogramming/remove_cv
+	* tr1/4_metaprogramming/remove_cv/requirements
+	* tr1/4_metaprogramming/remove_cv/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_cv/value.cc
+	* tr1/4_metaprogramming/remove_extent
+	* tr1/4_metaprogramming/remove_extent/requirements
+	* tr1/4_metaprogramming/remove_extent/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_extent/value.cc
+	* tr1/4_metaprogramming/remove_pointer
+	* tr1/4_metaprogramming/remove_pointer/requirements
+	* tr1/4_metaprogramming/remove_pointer/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_pointer/value.cc
+	* tr1/4_metaprogramming/remove_reference
+	* tr1/4_metaprogramming/remove_reference/requirements
+	* tr1/4_metaprogramming/remove_reference/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_reference/value.cc
+	* tr1/4_metaprogramming/remove_volatile
+	* tr1/4_metaprogramming/remove_volatile/requirements
+	* tr1/4_metaprogramming/remove_volatile/requirements/
+	explicit_instantiations.cc
+	* tr1/4_metaprogramming/remove_volatile/value.cc
+
+	Deleted in testsuite:
+	* tr1/4_metaprogramming/alignment_of/alignment_of.cc
+	* tr1/4_metaprogramming/alignment_of/typedefs.cc
+	* tr1/4_metaprogramming/array_modifications
+	* tr1/4_metaprogramming/array_modifications/remove_all_extents.cc
+	* tr1/4_metaprogramming/array_modifications/remove_extent.cc
+	* tr1/4_metaprogramming/composite_type_traits
+	* tr1/4_metaprogramming/composite_type_traits/is_arithmetic
+	* tr1/4_metaprogramming/composite_type_traits/is_arithmetic/
+	is_arithmetic.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_arithmetic/typedefs.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_compound
+	* tr1/4_metaprogramming/composite_type_traits/is_compound/
+	is_compound.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_compound/typedefs.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_fundamental
+	* tr1/4_metaprogramming/composite_type_traits/is_fundamental/
+	is_fundamental.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_fundamental/
+	typedefs.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_member_pointer
+	* tr1/4_metaprogramming/composite_type_traits/is_member_pointer/
+	is_member_pointer.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_member_pointer/
+	typedefs.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_object
+	* tr1/4_metaprogramming/composite_type_traits/is_object/24808.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_object/is_object.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_object/typedefs.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_scalar
+	* tr1/4_metaprogramming/composite_type_traits/is_scalar/is_scalar.cc
+	* tr1/4_metaprogramming/composite_type_traits/is_scalar/typedefs.cc
+	* tr1/4_metaprogramming/const_volatile_modifications
+	* tr1/4_metaprogramming/const_volatile_modifications/add_const.cc
+	* tr1/4_metaprogramming/const_volatile_modifications/add_cv.cc
+	* tr1/4_metaprogramming/const_volatile_modifications/add_volatile.cc
+	* tr1/4_metaprogramming/const_volatile_modifications/remove_const.cc
+	* tr1/4_metaprogramming/const_volatile_modifications/remove_cv.cc
+	* tr1/4_metaprogramming/const_volatile_modifications/remove_volatile.cc
+	* tr1/4_metaprogramming/extent/extent.cc
+	* tr1/4_metaprogramming/extent/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_assign/has_nothrow_assign.cc
+	* tr1/4_metaprogramming/has_nothrow_assign/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_constructor/
+	has_nothrow_constructor.cc
+	* tr1/4_metaprogramming/has_nothrow_constructor/typedefs.cc
+	* tr1/4_metaprogramming/has_nothrow_copy/has_nothrow_copy.cc
+	* tr1/4_metaprogramming/has_nothrow_copy/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_assign/has_trivial_assign.cc
+	* tr1/4_metaprogramming/has_trivial_assign/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_constructor/
+	has_trivial_constructor.cc
+	* tr1/4_metaprogramming/has_trivial_constructor/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_copy/has_trivial_copy.cc
+	* tr1/4_metaprogramming/has_trivial_copy/typedefs.cc
+	* tr1/4_metaprogramming/has_trivial_destructor/
+	has_trivial_destructor.cc
+	* tr1/4_metaprogramming/has_trivial_destructor/typedefs.cc
+	* tr1/4_metaprogramming/has_virtual_destructor/
+	has_virtual_destructor.cc
+	* tr1/4_metaprogramming/has_virtual_destructor/typedefs.cc
+	* tr1/4_metaprogramming/helper_classes
+	* tr1/4_metaprogramming/helper_classes/static_definition.cc
+	* tr1/4_metaprogramming/helper_classes/true_false_type.cc
+	* tr1/4_metaprogramming/helper_classes/true_false_type_typedefs.cc
+	* tr1/4_metaprogramming/helper_classes/typedefs.cc
+	* tr1/4_metaprogramming/integral_constant/true_false_type.cc
+	* tr1/4_metaprogramming/integral_constant/typedefs.cc
+	* tr1/4_metaprogramming/is_abstract/is_abstract.cc
+	* tr1/4_metaprogramming/is_abstract/typedefs.cc
+	* tr1/4_metaprogramming/is_arithmetic/is_arithmetic.cc
+	* tr1/4_metaprogramming/is_arithmetic/typedefs.cc
+	* tr1/4_metaprogramming/is_array/is_array.cc
+	* tr1/4_metaprogramming/is_array/typedefs.cc
+	* tr1/4_metaprogramming/is_base_of/is_base_of.cc
+	* tr1/4_metaprogramming/is_base_of/typedefs.cc
+	* tr1/4_metaprogramming/is_class/is_class.cc
+	* tr1/4_metaprogramming/is_class/typedefs.cc
+	* tr1/4_metaprogramming/is_compound/is_compound.cc
+	* tr1/4_metaprogramming/is_compound/typedefs.cc
+	* tr1/4_metaprogramming/is_const/is_const.cc
+	* tr1/4_metaprogramming/is_const/typedefs.cc
+	* tr1/4_metaprogramming/is_convertible/is_convertible.cc
+	* tr1/4_metaprogramming/is_convertible/typedefs.cc
+	* tr1/4_metaprogramming/is_empty/is_empty.cc
+	* tr1/4_metaprogramming/is_empty/typedefs.cc
+	* tr1/4_metaprogramming/is_enum/is_enum.cc
+	* tr1/4_metaprogramming/is_enum/typedefs.cc
+	* tr1/4_metaprogramming/is_floating_point/is_floating_point.cc
+	* tr1/4_metaprogramming/is_floating_point/typedefs.cc
+	* tr1/4_metaprogramming/is_function/is_function.cc
+	* tr1/4_metaprogramming/is_function/typedefs.cc
+	* tr1/4_metaprogramming/is_fundamental/is_fundamental.cc
+	* tr1/4_metaprogramming/is_fundamental/typedefs.cc
+	* tr1/4_metaprogramming/is_integral/is_integral.cc
+	* tr1/4_metaprogramming/is_integral/typedefs.cc
+	* tr1/4_metaprogramming/is_member_function_pointer/
+	is_member_function_pointer.cc
+	* tr1/4_metaprogramming/is_member_function_pointer/typedefs.cc
+	* tr1/4_metaprogramming/is_member_object_pointer/
+	is_member_object_pointer.cc
+	* tr1/4_metaprogramming/is_member_object_pointer/typedefs.cc
+	* tr1/4_metaprogramming/is_member_pointer/is_member_pointer.cc
+	* tr1/4_metaprogramming/is_member_pointer/typedefs.cc
+	* tr1/4_metaprogramming/is_object/is_object.cc
+	* tr1/4_metaprogramming/is_object/typedefs.cc
+	* tr1/4_metaprogramming/is_pod/is_pod.cc
+	* tr1/4_metaprogramming/is_pod/typedefs.cc
+	* tr1/4_metaprogramming/is_pointer/is_pointer.cc
+	* tr1/4_metaprogramming/is_pointer/typedefs.cc
+	* tr1/4_metaprogramming/is_polymorphic/is_polymorphic.cc
+	* tr1/4_metaprogramming/is_polymorphic/typedefs.cc
+	* tr1/4_metaprogramming/is_reference/is_reference.cc
+	* tr1/4_metaprogramming/is_reference/typedefs.cc
+	* tr1/4_metaprogramming/is_same/is_same.cc
+	* tr1/4_metaprogramming/is_same/typedefs.cc
+	* tr1/4_metaprogramming/is_scalar/is_scalar.cc
+	* tr1/4_metaprogramming/is_scalar/typedefs.cc
+	* tr1/4_metaprogramming/is_signed/is_signed.cc
+	* tr1/4_metaprogramming/is_signed/typedefs.cc
+	* tr1/4_metaprogramming/is_union/is_union.cc
+	* tr1/4_metaprogramming/is_union/typedefs.cc
+	* tr1/4_metaprogramming/is_unsigned/is_unsigned.cc
+	* tr1/4_metaprogramming/is_unsigned/typedefs.cc
+	* tr1/4_metaprogramming/is_void/is_void.cc
+	* tr1/4_metaprogramming/is_void/typedefs.cc
+	* tr1/4_metaprogramming/is_volatile/is_volatile.cc
+	* tr1/4_metaprogramming/is_volatile/typedefs.cc
+	* tr1/4_metaprogramming/other_transformations
+	* tr1/4_metaprogramming/other_transformations/aligned_storage
+	* tr1/4_metaprogramming/other_transformations/aligned_storage/
+	aligned_storage.cc
+	* tr1/4_metaprogramming/other_transformations/aligned_storage/
+	typedefs.cc
+	* tr1/4_metaprogramming/pointer_modifications
+	* tr1/4_metaprogramming/pointer_modifications/add_pointer.cc
+	* tr1/4_metaprogramming/pointer_modifications/remove_pointer.cc
+	* tr1/4_metaprogramming/primary_type_categories
+	* tr1/4_metaprogramming/primary_type_categories/is_array
+	* tr1/4_metaprogramming/primary_type_categories/is_array/is_array.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_array/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_class
+	* tr1/4_metaprogramming/primary_type_categories/is_class/is_class.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_class/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_enum
+	* tr1/4_metaprogramming/primary_type_categories/is_enum/24808.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_enum/is_enum.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_enum/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_floating_point
+	* tr1/4_metaprogramming/primary_type_categories/is_floating_point/
+	is_floating_point.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_floating_point/
+	typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_function
+	* tr1/4_metaprogramming/primary_type_categories/is_function/24808.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_function/
+	is_function.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_function/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_integral
+	* tr1/4_metaprogramming/primary_type_categories/is_integral/
+	is_integral.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_integral/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer/is_member_function_pointer.cc
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_function_pointer/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer/is_member_object_pointer.cc
+	* tr1/4_metaprogramming/primary_type_categories/
+	is_member_object_pointer/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_pointer
+	* tr1/4_metaprogramming/primary_type_categories/is_pointer/
+	is_pointer.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_pointer/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_reference
+	* tr1/4_metaprogramming/primary_type_categories/is_reference/
+	is_reference.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_reference/
+	typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_union
+	* tr1/4_metaprogramming/primary_type_categories/is_union/is_union.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_union/typedefs.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_void
+	* tr1/4_metaprogramming/primary_type_categories/is_void/is_void.cc
+	* tr1/4_metaprogramming/primary_type_categories/is_void/typedefs.cc
+	* tr1/4_metaprogramming/rank/rank.cc
+	* tr1/4_metaprogramming/rank/typedefs.cc
+	* tr1/4_metaprogramming/reference_modifications/add_reference.cc
+	* tr1/4_metaprogramming/reference_modifications/remove_reference.cc
+	* tr1/4_metaprogramming/relationships_between_types
+	* tr1/4_metaprogramming/relationships_between_types/is_base_of
+	* tr1/4_metaprogramming/relationships_between_types/is_base_of/
+	is_base_of.cc
+	* tr1/4_metaprogramming/relationships_between_types/is_base_of/
+	typedefs.cc
+	* tr1/4_metaprogramming/relationships_between_types/is_convertible
+	* tr1/4_metaprogramming/relationships_between_types/is_convertible/
+	is_convertible.cc
+	* tr1/4_metaprogramming/relationships_between_types/is_convertible/
+	typedefs.cc
+	* tr1/4_metaprogramming/relationships_between_types/is_same
+	* tr1/4_metaprogramming/relationships_between_types/is_same/is_same.cc
+	* tr1/4_metaprogramming/relationships_between_types/is_same/typedefs.cc
+	* tr1/4_metaprogramming/type_properties
+	* tr1/4_metaprogramming/type_properties/alignment_of
+	* tr1/4_metaprogramming/type_properties/alignment_of/alignment_of.cc
+	* tr1/4_metaprogramming/type_properties/alignment_of/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/extent
+	* tr1/4_metaprogramming/type_properties/extent/extent.cc
+	* tr1/4_metaprogramming/type_properties/extent/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_assign
+	* tr1/4_metaprogramming/type_properties/has_nothrow_assign/
+	has_nothrow_assign.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_assign/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_constructor
+	* tr1/4_metaprogramming/type_properties/has_nothrow_constructor/
+	has_nothrow_constructor.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_constructor/
+	typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_copy
+	* tr1/4_metaprogramming/type_properties/has_nothrow_copy/
+	has_nothrow_copy.cc
+	* tr1/4_metaprogramming/type_properties/has_nothrow_copy/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_assign
+	* tr1/4_metaprogramming/type_properties/has_trivial_assign/
+	has_trivial_assign.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_assign/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_constructor
+	* tr1/4_metaprogramming/type_properties/has_trivial_constructor/
+	has_trivial_constructor.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_constructor/
+	typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_copy
+	* tr1/4_metaprogramming/type_properties/has_trivial_copy/
+	has_trivial_copy.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_copy/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_destructor
+	* tr1/4_metaprogramming/type_properties/has_trivial_destructor/
+	has_trivial_destructor.cc
+	* tr1/4_metaprogramming/type_properties/has_trivial_destructor/
+	typedefs.cc
+	* tr1/4_metaprogramming/type_properties/has_virtual_destructor
+	* tr1/4_metaprogramming/type_properties/has_virtual_destructor/
+	has_virtual_destructor.cc
+	* tr1/4_metaprogramming/type_properties/has_virtual_destructor/
+	typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_abstract
+	* tr1/4_metaprogramming/type_properties/is_abstract/is_abstract.cc
+	* tr1/4_metaprogramming/type_properties/is_abstract/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_const
+	* tr1/4_metaprogramming/type_properties/is_const/is_const.cc
+	* tr1/4_metaprogramming/type_properties/is_const/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_empty
+	* tr1/4_metaprogramming/type_properties/is_empty/is_empty.cc
+	* tr1/4_metaprogramming/type_properties/is_empty/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_pod
+	* tr1/4_metaprogramming/type_properties/is_pod/is_pod.cc
+	* tr1/4_metaprogramming/type_properties/is_pod/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_polymorphic
+	* tr1/4_metaprogramming/type_properties/is_polymorphic/24809.cc
+	* tr1/4_metaprogramming/type_properties/is_polymorphic/
+	is_polymorphic.cc
+	* tr1/4_metaprogramming/type_properties/is_polymorphic/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_signed
+	* tr1/4_metaprogramming/type_properties/is_signed/is_signed.cc
+	* tr1/4_metaprogramming/type_properties/is_signed/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_unsigned
+	* tr1/4_metaprogramming/type_properties/is_unsigned/is_unsigned.cc
+	* tr1/4_metaprogramming/type_properties/is_unsigned/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/is_volatile
+	* tr1/4_metaprogramming/type_properties/is_volatile/is_volatile.cc
+	* tr1/4_metaprogramming/type_properties/is_volatile/typedefs.cc
+	* tr1/4_metaprogramming/type_properties/rank
+	* tr1/4_metaprogramming/type_properties/rank/rank.cc
+	* tr1/4_metaprogramming/type_properties/rank/typedefs.cc
+
+2007-04-30  Hans-Peter Nilsson  
+
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): Correct
+	regexp to filter out -nostdinc++.
+
+2007-04-30  Paolo Carlini  
+
+	PR libstdc++/30449 (equal)
+	* include/bits/stl_algobase.h (struct __niter_base): Add.
+	(copy(_II, _II, _OI), copy_backward(_BI1, _BI1, _BI2),
+	fill(_ForwardIterator, _ForwardIterator, const _Tp&),
+	fill_n(_OI, _Size, const _Tp&), equal(_II1, _II1, _II2)):
+	Use it.
+	(struct __copy_normal, __copy_backward_normal,
+	struct __fill_normal, struct __fill_n_normal): Remove.
+	(struct __equal, struct __equal_aux): Add.
+	* include/bits/stl_iterator.h: Add _Iterator_type typedef.
+
+	* include/bits/stl_algobase.h (__fill_aux(wchar_t*,
+	wchar_t*, wchar_t), __fill_n_aux(wchar_t*, _Size, wchar_t)):
+	Remove.
+
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	constructor_1_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	constructor_2_neg.cc: Likewise.
+
+2007-04-30  Paolo Carlini  
+
+	* include/tr1/type_traits (is_pod): Use __is_pod.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_destructor/has_trivial_destructor.cc: Adjust.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_nothrow_constructor/has_nothrow_constructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_trivial_constructor/has_trivial_constructor.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	is_pod/is_pod.cc: Likewise.
+
+2007-04-29  Paolo Carlini  
+
+	* include/bits/localefwd.h: Remove redundant inline qualifiers.
+	(__check_facet): Move...
+	* include/bits/basic_ios.h: ... here.
+	(widen(char), narrow(char_type, char)): Define inline.
+	* include/bits/basic_ios.tcc (widen(char), narrow(char_type, char)):
+	Remove.
+
+2007-04-27  Paolo Carlini  
+
+	DR 438, [DR].
+	* include/bits/basic_string.h (_S_construct_aux(_InIterator,
+	_InIterator, const _Alloc&, __true_type)): Do not cast the
+	second argument.
+	* include/ext/rc_string_base.h (_S_construct_aux(_Integer,
+	_Integer, const _Alloc&, std::__true_type)): Likewise.
+	* include/ext/sso_string_base.h (_M_construct_aux(_InIterator,
+	_InIterator, std::__true_type)): Likewise.
+	* include/bits/stl_deque.h (_M_initialize_dispatch(_Integer,
+	_Integer, __true_type)): Cast the first argument.
+	(_M_assign_dispatch(_Integer, _Integer, __true_type)): Do
+	not cast the arguments.
+	(_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)):
+	Likewise.
+	* include/bits/stl_list.h (_M_initialize_dispatch(_Integer,
+	_Integer, __true_type)): Likewise.
+	(_M_assign_dispatch(_Integer, _Integer, __true_type)): Do
+	not cast both arguments.
+	* include/bits/stl_bvector.h (_M_initialize_dispatch(_Integer,
+	_Integer, __true_type)): Cast the first argument.
+	(_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not
+	cast the arguments.
+	* include/bits/stl_vector.h (_M_initialize_dispatch(_Integer,
+	_Integer, __true_type)): Cast the first argument.
+	(_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not
+	cast the arguments.
+	(_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)):
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/dr438/
+	constructor.cc: New.
+	* testsuite/ext/vstring/requirements/dr438/constructor.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/deque/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/deque/
+	constructor.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/deque/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/deque/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/deque/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/list/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/list/
+	constructor.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/list/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/list/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/list/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	constructor.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/requirements/sequences/dr438/vector/
+	bool/constructor.cc: Likewise.
+	* docs/html/ext/howto.html: Add an entry for DR 438.
+
+2007-04-25  Paolo Carlini  
+
+	* include/bits/locale_classes.h: Remove redundant inline specifiers.
+	* include/bits/ios_base.h: Likewise.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error line
+	numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2007-04-24  Paolo Carlini  
+
+	* include/bits/locale_facets.h (class collate, class collate_byname):
+	Move...
+	* include/bits/locale_classes.h: ... here.
+	* include/bits/locale_facets.tcc (locale::combine, locale::operator(),
+	has_facet, use_facet, collate::_M_compare, collate::_M_transform,
+	collate::do_compare, collate::do_transform, collate::do_hash): Move...
+	* include/bits/locale_classes.tcc: ... here, new.
+	* include/Makefile.am: Add.
+	* testsuite/util/testsuite_abi.h: Include .
+	* include/std/locale: Tweak.
+	* include/std/istream: Likewise.
+	* include/std/ostream: Likewise.
+	* include/bits/codecvt.h: Likewise.
+	* include/Makefile.in: Regenerate.
+
+	* include/bits/codecvt.h: Adjust extern template declarations.
+	* include/bits/ostream_insert.h: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+
+	* include/bits/locale_facets.h: Do not include .
+	* include/std/fstream: Do it here.
+	* include/bits/locale_facets_nonio.h: Likewise.
+
+2007-04-23  Paolo Carlini  
+
+	* include/bits/locale_facets.h (class time_base,
+	struct __timepunct_cache, class __timepunct, class time_get,
+	class time_get_byname, class time_put, class time_put_byname,
+	class money_base, struct __moneypunct_cache, class moneypunct,
+	class moneypunct_byname, class money_get, class money_put,
+	struct messages_base, class messages, class messages_byname): Move...
+	* include/bits/locale_facets_nonio.h: ... here.
+	* include/bits/locale_facets.tcc
+	(struct __use_cache<__moneypunct_cache<> >,
+	__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
+	money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
+	money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
+	time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
+	time_get<>::_M_extract_name, time_get<>::do_get_time,
+	time_get<>::do_get_date, time_get<>::do_get_weekday,
+	time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
+	time_put<>::do_put): Move...
+	* include/bits/locale_facets_nonio.tcc: ... here.
+	* include/Makefile.am: Add.
+	* include/std/locale: Adjust includes.
+	* include/std/fstream: Likewise.
+	* include/std/istream: Likewise.
+	* include/std/ostream: Likewise.
+	* include/Makefile.in: Regenerate.
+
+2007-04-23  Nathan Sidwell  
+
+	* scripts/testsuite_flags.in: Add --build-cc option.
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Set cc.  Fix typo
+	in previous change.
+	(v3_target_compile_as_c): Use cc.
+
+2007-04-22  Mark Mitchell  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Use the same flags
+	for remote host testing we use for local host testing.  Copy all
+	testsuite headers to the remote host
+	(v3_target_compile_as_c): Use remote_exec, not just exec.
+
+2007-04-22  Paolo Carlini  
+
+	* include/tr1/functional: Formatting fixes.
+
+2007-04-22  Paolo Carlini  
+
+	* include/ext/concurrence.h: Do not include , use
+	__builtin_abort.
+	* include/debug/debug.h: Likewise.
+	* include/tr1/memory: Likewise.
+	* include/tr1/boost_shared_ptr.h: Likewise.
+	* include/tr1/functional: Likewise.
+
+2007-04-22  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc: Do not include .
+	* testsuite/27_io/basic_ios/imbue/14072.cc: Do it here.
+	* testsuite/27_io/basic_ios/cons/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/pod/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	pod/10081-in.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	pod/10081-out.cc: Likewise.
+	* testsuite/22_locale/locale/cons/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/unicode.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/pod/2.cc: Likewise.
+	* testsuite/22_locale/global_templates/1.cc: Likewise.
+
+2007-04-19  Joseph Myers  
+
+	* configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
+	for long double compatibility.
+	* configure: Regenerate.
+	* src/complex_io.cc, src/istream-inst.cc, src/ostream-inst.cc:
+	Condition some _GLIBCXX_LDBL_COMPAT calls on _GLIBCXX_USE_WCHAR_T.
+
+2007-04-14  Steve Ellcey  
+
+	* configure.ac: Change how LIBSUPCXX_PICFLAGS is set.
+	* configure: Regenerate.
+
+2007-04-14  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc: Include .
+
+2007-04-13  Paolo Carlini  
+
+	PR libstdc++/31556
+	* include/bits/stl_algobase.h (equal(_InputIterator1, _InputIterator1,
+	_InputIterator2, _BinaryPredicate), mismatch(_InputIterator1,
+	_InputIterator1, _InputIterator2, _BinaryPredicate)): Convert
+	predicate return to bool.
+	* include/bits/stl_algo.h (__find_if(_InputIterator, _InputIterator,
+	_Predicate, input_iterator_tag), search(_ForwardIterator1,
+	_ForwardIterator1, _ForwardIterator2, _ForwardIterator2,
+	_BinaryPredicate), __search_n(_ForwardIterator, _ForwardIterator,
+	_Integer, const _Tp&, _BinaryPredicate, std::forward_iterator_tag),
+	__search_n(_RandomAccessIter, _RandomAccessIter, _Integer, const _Tp&,
+	_BinaryPredicate, std::random_access_iterator_tag),
+	search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&,
+	_BinaryPredicate), remove_copy_if(_InputIterator, _InputIterator,
+	_OutputIterator, _Predicate), __unique_copy(_ForwardIterator,
+	_ForwardIterator, _OutputIterator, _BinaryPredicate,
+	forward_iterator_tag, output_iterator_tag),
+	__unique_copy(_InputIterator, _InputIterator, _OutputIterator,
+	_BinaryPredicate, input_iterator_tag, output_iterator_tag),
+	__unique_copy(_InputIterator, _InputIterator, _OutputIterator,
+	_BinaryPredicate, input_iterator_tag, output_iterator_tag),
+	__unique_copy(_InputIterator, _InputIterator, _ForwardIterator,
+	_BinaryPredicate, input_iterator_tag, forward_iterator_tag),
+	unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate),
+	__partition(_BidirectionalIterator, _BidirectionalIterator, _Predicate,
+	bidirectional_iterator_tag), binary_search(_ForwardIterator,
+	_ForwardIterator, const _Tp&, _Compare),
+	next_permutation(_BidirectionalIterator, _BidirectionalIterator,
+	_Compare), prev_permutation(_BidirectionalIterator,
+	_BidirectionalIterator, _Compare)): Likewise.
+
+2007-04-13  Paolo Carlini  
+
+	PR libstdc++/31554
+	* include/bits/stl_algo.h (stable_partition): Convert __buf.size()
+	to _DistanceType.
+
+2007-04-13  Paolo Carlini  
+
+	* include/ext/numeric_traits.h: Do not include .
+	(__numeric_traits_integer::__is_signed, __digits): Add.
+	(__numeric_traits_floating::__digits10, __max_exponent10): Add.
+	* src/istream.cc (ignore(streamsize, int_type), operator>>
+	(basic_istream&, char*), ignore(streamsize,
+	int_type)): Use the latter.
+	* src/compatibility.cc (ignore(streamsize),
+	ignore(streamsize)): Likewise.
+	* include/ext/vstring_util.h (__vstring_utility<>::_S_compare):
+	Likewise.
+	* include/bits/stl_memory.h (__get_temporary_buffer): Likewise.
+	* include/bits/stl_algobase.h (lexicographical_compare(const char*,
+	const char*, const char*, const char*)): Likewise.
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int(_InIter,
+	_InIter, ios_base&, ios_base::iostate&, _ValueT&),
+	num_put<>::_M_insert_int(_OutIter, ios_base&, _CharT, _ValueT),
+	num_put<>::_M_insert_float(_OutIter, ios_base&, _CharT, char,
+	_ValueT), collate<>::do_hash(const _CharT*, const _CharT*)): Likewise.
+	* include/bits/basic_string.h (basic_string<>::_S_compare): Likewise.
+	* include/bits/istream.tcc (operator>>(short&), operator>>(int&),
+	ignore(streamsize), ignore(streamsize, int_type), operator>>
+	(basic_istream<>&, _CharT*)): Likewise.
+	* include/bits/stl_bvector.h (vector::max_size): Likewise.
+	* include/tr1/functional_hash.h (struct hash): Likewise.
+	* include/std/istream: Do not include .
+	* include/tr1/cmath: Include .
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc:
+	Likewise.
+	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
+
+	* include/tr1/hashtable: Do not include the whole .
+
+2007-04-11  Paolo Carlini  
+
+	* config/locale/gnu/c_locale.h: Do not include 
+	and .
+	* config/locale/gnu/c++locale_internal.h: Include .
+
+2007-04-11  Paolo Carlini  
+
+	* include/std/istream (class basic_istream<>): Remove unneded friend
+	declarations.
+
+2007-04-11  Paolo Carlini  
+
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Initialize v.
+
+2007-04-11  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	ios_base&, ios_base::iostate&, void*&)): Fix for sizeof(void*)
+	> sizeof(unsigned long).
+
+	* testsuite/22_locale/num_get/get/char/1.cc: Fix void* test.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+
+	* testsuite/22_locale/num_put/put/char/1.cc: Tweak comment.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise.
+
+2007-04-11  Zack Weinberg  
+
+	* include/std/iosfwd: Do not include  and
+	.
+
+2007-04-10  Benjamin Kosnik  
+
+	* include/ext/pb_ds/detail/resize_policy/
+	cc_hash_max_collision_check_resize_trigger_imp.hpp: Qualify
+	namespace std members.
+	* include/ext/pb_ds/detail/list_update_policy/
+	counter_lu_metadata.hpp: Same.
+	* include/ext/throw_allocator.h: Same.
+	* include/ext/pod_char_traits.h: Same.
+	* include/ext/malloc_allocator.h: Same.
+	* libsupc++/del_op.cc: Same, simplify.
+
+	* include/bits/c++config: Adjust macro name.
+
+	* include/c_global/cstring: Alphabetize.
+	* include/c_global/cwctype: Same.
+
+2007-04-10  Paolo Carlini  
+
+	* include/tr1/cmath: Include  instead of
+	the whole .
+
+2007-04-10  Paolo Carlini  
+
+	* include/tr1/type_traits (__is_function_helper): New, uses
+	variadic templates.
+	(is_function): Forward to the latter.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_function/is_function.cc: Add test.
+
+2007-04-10  Paolo Carlini  
+
+	PR libstdc++/28277 (partial: vstring bits)
+	* include/bits/ostream_insert.h: New.
+	* include/Makefile.am: Add.
+	* include/ext/vstring.h (operator<<(basic_ostream<>&,
+	const __versa_string<>&): Forward to __ostream_insert.
+	* include/bits/basic_string.h (operator<<(basic_ostream<>&,
+	const string<>&)): Likewise.
+	* include/std/ostream (operator<<(basic_ostream<>&, _CharT),
+	operator<<(basic_ostream&, char), operator<<(basic_ostream<>&,
+	const _CharT*), operator<<(basic_ostream&, const char*)):
+	Likewise.
+	* include/ext/vstring.tcc (operator<<(basic_ostream<>&,
+	const __versa_string<>&)): Remove.
+	(class basic_ostream): Remove friend declarations.
+	(basic_ostream<>::_M_write(char_type, streamsize),
+	_M_insert(const char_type*, streamsize)): Remove.
+	* include/bits/ostream.tcc (_M_insert(const char_type*, streamsize)):
+	Remove definition.
+	(operator<<(basic_ostream<>&, const char*)): Use __ostream_insert.
+	* config/abi/pre/gnu.ver: Adjust.
+	* src/ostream-inst.cc: Add __ostream_insert instantiations.
+	* include/bits/locale_facets.h (__pad<>::_S_pad): Remove __num
+	parameter.
+	* include/bits/locale_facets.tcc (__pad<>::_S_pad): Adjust.
+	(num_put<>::_M_pad(_CharT, streamsize, ios_base&, _CharT*,
+	const _CharT*, int&)): Likewise.
+	* include/Makefile.in: Rebuild.
+	* testsuite/ext/vstring/inserters_extractors/char/28277.cc: New.
+	* testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc: New.
+
+	* include/ext/vstring_util.h: Do not include the whole .
+	* include/ext/vstring.tcc (operator>>(basic_istream<>&,
+	__versa_string<>&, getline(basic_istream<>&, __versa_string<>&,
+	_CharT)): Tweak to refer to ios_base as a base of istream; do not
+	refer to non-standard types of istream.
+	* include/bits/istream.tcc (operator>>(basic_istream<>&, _CharT*),
+	ws(basic_istream<>&)): Do not refer to non-standard types of istream.
+	* include/std/bitset (operator>>(std::basic_istream<>&, bitset<>&)):
+	Avoid using basic_streambuf<>*.
+
+	* include/bits/istream.tcc (operator>>(basic_istream<>&,
+	basic_string<>&), getline(basic_istream<>&, basic_string<>&, _CharT)):
+	Move...
+	* include/bits/basic_string.tcc: ... here; tweak to refer to ios_base
+	as a base of istream; do not refer to non-standard types of istream.
+	* include/std/string: Tweak includes.
+
+	* include/ext/type_traits.h (__is_null_pointer): Add.
+	* include/ext/rc_string_base.h: Use it.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/bits/basic_string.tcc (__is_null_pointer): Remove, use
+	the above.
+	* include/ext/vstring_util.h (__vstring_utility<>::_S_is_null_pointer):
+	Remove.
+
+2007-04-09  Paolo Carlini  
+
+	* include/tr1/type_traits_fwd.h (__is_union_or_class): Remove.
+	* include/tr1/type_traits (struct __in_array,
+	struct __is_union_or_class, struct __is_union_or_class_helper,
+	struct __is_empty_helper, struct __is_polymorphic_helper):
+	Remove.
+	(struct is_enum): Use __is_enum.
+	(struct is_union): Use __is_union.
+	(struct is_class): Use __is_class.
+	(struct is_function): Adjust.
+	(struct is_empty): Use __is_empty.
+	(struct is_polymorphic): Use __is_polymorphic.
+	(struct is_abstract): Use __is_abstract.
+	(struct has_virtual_destructor): Use __has_virtual_destructor.
+	(struct __is_base_of_helper): Use __is_base_of.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_union_or_class/typedefs.cc: Remove.
+	* testsuite/tr1/4_metaprogramming/composite_type_traits/
+	is_union_or_class/is_union_or_class.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_class/typedefs.cc: New.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_class/is_class.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_union/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/primary_type_categories/
+	is_union/is_union.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_virtual_destructor/typedefs.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/type_properties/
+	has_virtual_destructor/has_virtual_destructor.cc: Likewise.
+	* testsuite/util/testsuite_tr1.h (class VirtualDestructorClass): Add.
+	* testsuite/tr1/4_metaprogramming/type_properties/is_polymorphic/
+	is_polymorphic.cc: Add test.
+
+2007-04-08  Alexey Beshenov  
+
+	PR libstdc++/31511
+	* include/c_global/cmath.tcc (__cmath_power): Use _Tp(1).
+	* include/c_std/cmath.tcc (__cmath_power): Likewise.
+
+2007-04-06  Paolo Carlini  
+
+	PR libstdc++/31117
+	* config/locale/gnu/c_locale.cc (__convert_to_v): Do not use errno,
+	just check that the value is finite.
+	* config/locale/generic/c_locale.cc (__convert_to_v): Likewise.
+
+2007-04-06  Paolo Carlini  
+
+	* include/ext/type_traits.h (__numeric_traits): Move...
+	* include/ext/numeric_traits.h: ... here.
+	* include/Makefile.am: Add.
+	* include/ext/pb_ds/detail/type_utils.hpp: Include
+	 too.
+	* include/tr1/random: Likewise.
+	* testsuite/ext/type_traits/numeric_traits.cc: Move...
+	* testsuite/ext/numeric_traits/numeric_traits.cc: ... here.
+	* include/Makefile.in: Regenerate.
+
+2007-04-04  Paolo Carlini  
+
+	* include/bits/valarray_array.h (__valarray_default_construct(_Tp*,
+	_Tp*)): Use __is_scalar instead of __is_pod.
+
+2007-04-03  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__copy_aux(_II, _II, _OI),
+	__copy_backward_aux(_BI1, _BI1, _BI2)): Use __is_pod.
+	* include/bits/stl_deque.h (deque<>::_M_destroy_data(iterator,
+	iterator, const std::allocator<>&)): Use __has_trivial_constructor.
+	(deque<>::_M_destroy_data_dispatch): Remove.
+	* include/bits/stl_uninitialized.h (uninitialized_copy(_InputIterator,
+	_InputIterator, _ForwardIterator), uninitialized_fill(_ForwardIterator,
+	_ForwardIterator, const _Tp&), uninitialized_fill_n(_ForwardIterator,
+	_Size, const _Tp&)): Use __is_pod.
+	* include/bits/stl_tempbuf.h (_Temporary_buffer::
+	_Temporary_buffer(_ForwardIterator, _ForwardIterator)): Use __is_pod.
+	(_Temporary_buffer::_M_initialize_buffer): Remove.
+	* include/bits/stl_construct.h (_Destroy(_ForwardIterator,
+	_ForwardIterator)): Use __has_trivial_destructor.
+	(__destroy_aux): Remove.
+
+2007-04-03  Paolo Carlini  
+
+	* include/bits/stl_map.h (map<>::insert(iterator, const value_type&):
+	Uglify parameter.
+
+2007-04-03  Paolo Carlini  
+
+	PR libstdc++/31440
+	* include/bits/stl_tree.h (_M_lower_bound(_Link_type, _Link_type,
+	const _Key&), _M_upper_bound(_Link_type, _Link_type, const _Key&)):
+	Add.
+	(_M_equal_range(const _Key&) const): Remove.
+	(lower_bound(const key_type&), lower_bound(const key_type&) const,
+	upper_bound(const key_type&), upper_bound(const key_type&) const,
+	equal_range(const key_type&), equal_range(const key_type&) const):
+	Adjust.
+	(find(const _Key&), find(const _Key&) const): Tweak.
+	* testsuite/23_containers/map/operations/31440.cc: New.
+
+2007-04-02  Matthew Levine  
+	    Paolo Carlini  
+
+	PR libstdc++/31370
+	* include/bits/stl_bvector.h (vector::max_size): Fix.
+	(vector::_M_check_len): Add.
+	* include/bits/vector.tcc (_M_fill_insert(iterator, size_type, bool),
+	_M_insert_range(iterator, _ForwardIterator, _ForwardIterator,
+	std::forward_iterator_tag), _M_insert_aux(iterator, bool)): Use it.
+	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: New.
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Adjust.
+
+	* include/bits/stl_vector.h (vector<>::_M_check_len): Add.
+	* include/bits/vector.tcc (_M_insert_aux(iterator, const _Tp&),
+	_M_fill_insert(iterator, size_type, const value_type&),
+	_M_range_insert(iterator, _ForwardIterator, _ForwardIterator,
+	std::forward_iterator_tag)): Use it.
+
+2007-04-02  Paolo Carlini  
+
+	PR libstdc++/31401 (vstring bits)
+	* include/ext/vstring.tcc (find(const _CharT*, size_type,
+	size_type)): Avoid unsigned overflow.
+
+2007-04-02  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_put<>::do_put(iter_type,
+	ios_base&, char_type, const void*)): Fix for sizeof(const void*)
+	> sizeof(unsigned long).
+
+2007-04-01  Andreas Tobler  
+
+	* include/tr1/poly_laguerre.tcc: Missing s/__alpha/__alpha1, line 278.
+
+2007-04-01  Richard Henderson  
+
+	* include/tr1/poly_laguerre.tcc: s/__alpha/__alpha1/g.
+	* include/tr1/ell_integral.tcc: Likewise.
+
+2007-03-31  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (_M_fill_insert(iterator, size_type,
+	bool), _M_insert_range(iterator, _ForwardIterator, _ForwardIterator,
+	std::forward_iterator_tag), _M_insert_aux(iterator, bool)): Move
+	out of line...
+	* include/bits/vector.tcc: ... here.
+
+2007-03-30  Paolo Carlini  
+
+	PR c++/26099
+	* include/bits/cpp_type_traits.h (struct __is_pod, struct __is_empty):
+	Remove.
+	* include/bits/valarray_array.h: Adjust.
+	* include/bits/allocator.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+
+2007-03-30  Paolo Carlini  
+
+	PR libstdc++/31401
+	* include/bits/basic_string.tcc (find(const _CharT*, size_type,
+	size_type)): Avoid unsigned overflow.
+	* testsuite/21_strings/basic_string/find/char/4.cc: New.
+	* testsuite/21_strings/basic_string/find/wchar_t/4.cc: Likewise.
+
+2007-03-27  Paolo Carlini  
+
+	* include/bits/fstream.tcc (basic_filebuf<>::underflow):
+	Don't call codecvt::in at all if _M_ext_next >= _M_ext_end.
+	* testsuite/27_io/basic_filebuf/underflow/char/3.cc: New.
+
+2007-03-26  Benjamin Kosnik  
+
+	* include/c_compatibility/complex.h: Without
+	__GXX_EXPERIMENTAL_CXX0X__ include_next complex.h.
+	* include/c_compatibility/fenv.h: Same.
+	* include/c_compatibility/inttypes.h: Same.
+	* include/c_compatibility/stdbool.h: Same.
+	* include/c_compatibility/stdint.h: Same.
+	* include/c_compatibility/tgmath.h: Same.
+
+	* include/tr1/cinttypes: Use include_next.
+	* include/tr1/cstdint: Same.
+	* include/tr1/cstdbool: Same.
+
+	* acinclude.m4 (GLIBCXX_ENABLE_C99): Add check for tgmath.h
+	* configure: Regenerate.
+	* config.h.in: Same.
+
+2007-03-25  Paolo Carlini  
+
+	* include/tr1/functional: Formatting fixes.
+
+2007-03-23  Paolo Carlini  
+
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc:
+	Likewise use std::numeric_limits<>::max().
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc:
+	Minor tweaks.
+
+2007-03-23  Hans-Peter Nilsson  
+
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
+	(test02): Use std::numeric_limits<>::max() to get suitable large
+	values.
+
+2007-03-22  Benjamin Kosnik  
+
+	* testsuite/21_strings/headers/cstdlib/functions_std.cc: Without
+	C99 support, _GLIBCXX_USE_WCHAR_T not defined, so
+	dg-require-c-std.
+	* testsuite/tr1/6_containers/headers/functional/synopsis.cc: Same.
+	* testsuite/27_io/headers/iostream/synopsis.cc: Same.
+	* testsuite/27_io/headers/streambuf/types_std.cc: Same.
+	* testsuite/27_io/headers/sstream/types_std.cc: Same.
+	* testsuite/27_io/headers/ostream/types_std.cc: Same.
+	* testsuite/27_io/headers/istream/types_std.cc: Same.
+	* testsuite/27_io/headers/iostream/types_std.cc: Same.
+	* testsuite/27_io/headers/fstream/types_std.cc: Same.
+	* testsuite/21_strings/headers/string/types_std.cc: Same.
+	* testsuite/21_strings/headers/cwctype/functions_std.cc: Same.
+	* testsuite/21_strings/headers/cwctype/types_std.cc: Same.
+	* testsuite/21_strings/headers/cwchar/functions_std.cc: Same.
+	* testsuite/21_strings/headers/cwchar/types_std.cc: Same.
+
+	* include/Makefile.am (c_compatibility_headers): Add fenv.h.
+	* include/Makefile.in: Regenerate.
+	* configure.host: Update comment.
+
+	* include/tr1/cfenv: Use include_next.
+
+2007-03-19  Paolo Carlini  
+
+	* include/tr1/tuple (get(_Tuple_impl<>&, get(const _Tuple_impl<>&):
+	Rename as __get_helper.
+	(get(tuple<>&, get(const tuple<>&)): Forward to the latter.
+
+2007-03-19  Benjamin Kosnik  
+
+	* docs/doxygen/user.cfg.in: Update for new includes, macros.
+
+2007-03-18  Mark Mitchell  
+
+	* libsupc++/array_type_info.cc: Likewise.
+	* libsupc++/bad_cast.cc: Likewise.
+	* libsupc++/bad_typeid.cc: Likewise.
+	* libsupc++/class_type_info.cc: Likewise.
+	* libsupc++/dyncast.cc: Likewise.
+	* libsupc++/enum_type_info.cc: Likewise.
+	* libsupc++/function_type_info.cc: Likewise.
+	* libsupc++/fundamental_type_info.cc: Likewise.
+	* libsupc++/pbase_type_info.cc: Likewise.
+	* libsupc++/pmem_type_info.cc: Likewise.
+	* libsupc++/pointer_type_info.cc: Likewise.
+	* libsupc++/si_class_type_info.cc: Likewise.
+	* libsupc++/vmi_class_type_info.cc: Likewise.
+	* libsupc++/tinfo.h: Move inline type_info functions here.
+	* libsupc++/tinfo.cc: Separate type_info classes into their own
+	files.
+	* libsupc++/tinfo2.cc: Likewise.
+	* Makefile.am (sources): Mention new files.
+	* Makefile.in: Regenerated.
+
+2007-03-16  Benjamin Kosnik  
+
+	* testsuite/27_io/headers/cinttypes/types_std_c++0x.cc: Use
+	-std=gnu++0x instead of -std=c++0x for testing.
+	* testsuite/18_support/headers/cstdint/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/random/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x.cc: Same.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Same.
+	* testsuite/17_intro/headers/c++200x/all.cc: Same.
+	* testsuite/17_intro/using_namespace_std_tr1_neg.cc: Same.
+	* testsuite/23_containers/hash/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/tuple/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/headers/tuple/types_std_c++0x.cc: Same.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/array/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/enable_shared_from_this/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/headers/functional/types_std_c++0x.cc: Same.
+	* testsuite/20_util/headers/functional/
+	using_namespace_std_placeholders.cc: Same.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x.cc: Same.
+	* testsuite/20_util/headers/memory/types_std_c++0x.cc: Same.
+	* testsuite/20_util/shared_ptr/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/weak_ptr/requirements/
+	explicit_instantiation.cc: Same.
+
+2007-03-16  Benjamin Kosnik  
+
+	* testsuite/lib/dg-options.exp (dg-require-c-std): New.
+	* testsuite/lib/libstdc++.exp (check_v3_target_c_std): New. Check to
+	see if _GLIBCXX_USE_C99_MATH is active.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/check_nan.cc: Use dg-require-c-std.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	17_hyperg/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	13_ellint_2/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	16_hermite/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	12_ellint_1/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	18_laguerre/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	14_ellint_3/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	19_legendre/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	03_beta/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	15_expint/check_nan.cc: Same.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/check_nan.cc: Same.
+
+	* include/tr1/poly_laguerre.tcc (__poly_laguerre): Don't check if
+	unsigned int can be a NaN.
+
+2007-03-16  Edward M. Smith-Rowland  <3dw4rd@verizon.net>
+
+	* docs/html/ext/tr1.html : Marked tr1 math special functions done.
+	* docs/html/faq/index.html : Ditto.
+	* include/Makefile.in : Added new special function header files.
+	* include/Makefile.am : Ditto.
+	* include/tr1/common.h : Added type promotion routines for three
+	and four args.
+
+	* include/tr1/special_function_util.h: New.
+	* include/tr1/bessel_function.tcc: New.
+	* include/tr1/beta_function.tcc: New.
+	* include/tr1/ell_integral.tcc: New.
+	* include/tr1/exp_integral.tcc: New.
+	* include/tr1/gamma.tcc: New.
+	* include/tr1/hypergeometric.tcc: New.
+	* include/tr1/legendre_function.tcc: New.
+	* include/tr1/modified_bessel_func.tcc: New.
+	* include/tr1/poly_hermite.tcc: New.
+	* include/tr1/poly_laguerre.tcc: New.
+	* include/tr1/riemann_zeta.tcc: New.
+	* include/tr1/cmath : Included tr1 math special functions.
+	* include/tr1/math.h : Ditto.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	testcase.h: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+	check_value_neg.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+	check_value_pos.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/
+	compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/
+	check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/
+	check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/
+	compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_value_neg.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_value_pos.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/compile_2.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/compile.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/check_nan.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/check_value.cc: New.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/ compile_2.cc: New.
+
+2007-03-15  Hans-Peter Nilsson  
+
+	* testsuite/lib/libstdc++.exp (v3-build_support) : If it
+	exists, use env(AR_FOR_TARGET).  Log the command.
+	: Similar.
+
+2007-03-14  Nathan Sidwell  
+	    Joseph Myers  ::
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_fileio,
+        check_v3_target_time): New.
+	* testsuite/lib/dg-options.exp (dg-require-fileio,
+        dg-require-time): New.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: Use it.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: Use it.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: Use it.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: Use it.
+	* testsuite/ext/stdio_sync_filebuf/char/1.cc: Use it.
+	* testsuite/ext/stdio_filebuf/char/2.cc: Use it.
+	* testsuite/ext/stdio_filebuf/char/10063-1.cc: Use it.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Use it.
+	* testsuite/ext/stdio_filebuf/char/10063-3.cc: Use it.
+	* testsuite/22_locale/time_put/put/char/12439_1.cc: Use it.
+	* testsuite/22_locale/time_put/put/char/12439_3.cc: Use it.
+	* testsuite/27_io/basic_ofstream/open/char/1.cc: Use it.
+	* testsuite/27_io/basic_ofstream/cons/char/2.cc: Use it.
+	* testsuite/27_io/objects/char/12048-2.cc: Use it.
+	* testsuite/27_io/objects/char/12048-4.cc: Use it.
+	* testsuite/27_io/objects/char/12048-1.cc: Use it.
+	* testsuite/27_io/objects/char/12048-3.cc: Use it.
+	* testsuite/27_io/objects/char/10.cc: Use it.
+	* testsuite/27_io/objects/char/12048-5.cc: Use it.
+	* testsuite/27_io/basic_istream/get/char/2.cc: Use it.
+	* testsuite/27_io/basic_istream/ignore/char/2.cc: Use it.
+	* testsuite/27_io/basic_istream/ignore/char/3.cc: Use it.
+	* testsuite/27_io/basic_istream/getline/char/5.cc: Use it.
+	* testsuite/27_io/basic_istream/seekg/char/sstream.cc: Use it.
+	* testsuite/27_io/basic_istream/seekg/char/fstream.cc: Use it.
+	* testsuite/27_io/basic_istream/readsome/char/6746-2.cc: Use it.
+	* testsuite/27_io/basic_istream/extractors_other/char/2.cc: Use it.
+	* testsuite/27_io/basic_istream/tellg/char/sstream.cc: Use it.
+	* testsuite/27_io/basic_istream/tellg/char/1.cc: Use it.
+	* testsuite/27_io/basic_istream/tellg/char/fstream.cc: Use it.
+	* testsuite/27_io/basic_istream/extractors_character/char/4.cc: Use it.
+	* testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Use it.
+	* testsuite/27_io/basic_ostream/tellp/char/1.cc: Use it.
+	* testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc: Use it.
+	* testsuite/27_io/basic_ifstream/open/char/1.cc: Use it.
+	* testsuite/27_io/basic_ifstream/cons/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetn/char/3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-4.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc: Use it.
+	* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc: Use it.
+	* testsuite/27_io/basic_filebuf/is_open/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/open/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/open/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/open/char/2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/open/char/3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Use it.
+	* testsuite/27_io/basic_filebuf/overflow/char/2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/overflow/char/9988.cc: Use it.
+	* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/overflow/char/9169.cc: Use it.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/12790-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/12790-3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/12790-4.cc: Use it.
+	* testsuite/27_io/basic_filebuf/close/char/4.cc: Use it.
+	* testsuite/27_io/basic_filebuf/underflow/10096.cc: Use it.
+	* testsuite/27_io/basic_filebuf/underflow/char/2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-3.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Use it.
+	* testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: Use it.
+	* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Use it.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/10.cc: Use it.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/11.cc: Use it.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/5.cc: Use it.
+
+2007-03-13  Paolo Carlini  
+
+	* include/tr1/tuple: Only include  for std::pair, and
+	forward declare reference_wrapper; formatting fixes.
+	* include/tr1/ref_fwd.h: Remove.
+	* include/tr1/tuple_defs.h: Remove, unused.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Regenerate.
+	* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
+	Include  too.
+
+	* include/tr1/tuple: Define tuple_size >::value.
+
+2007-03-12  Stephen M. Webb  
+
+	* include/tr1/regex: Add "boilerplate" implementations.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/
+	translate_nocase.cc: New.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/
+	ctor.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/
+	translate_nocase.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/
+	ctor.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_ecma.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	default.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_grep.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_extended.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_basic.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_awk.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_egrep.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	string_op.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	string.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	pstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	cstring_op.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/
+	cstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	string_op.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	string.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	pstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	cstring_op.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/
+	cstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	default.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	string.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	pstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	cstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	range.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	default.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	string.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	pstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	cstring.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/match_results/ctors/char/
+	default.cc: Likewise.
+
+2007-03-12  Paolo Carlini  
+
+	* include/bits/stl_algo.h (swap_ranges): Move...
+	* include/bits/stl_algobase.h: ... here.
+	* include/tr1/array: Trim includes, stl_algobase.h is enough.
+
+2007-03-11  Paolo Carlini  
+
+	PR libstdc++/28080 (final)
+	* include/std/iosfwd: Do not include .
+	* config/io/basic_file_stdio.h: Do it here.
+	* include/ext/stdio_sync_filebuf.h: Likewise.
+	* include/ext/rope: Include  unconditionally.
+	* include/std/fstream: Do not include .
+
+	* include/std/ios: Do not include .
+	* include/bits/ios_base.h: Do it here.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error
+	line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2007-03-10  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/std/memory: Move C++03 implementation...
+	* include/bits/stl_memory.h: ... here, new.
+	* include/Makefile.am: Add.
+	* include/bits/stl_tempbuf.h: Include the latter instead.
+	* include/tr1/hashtable: Include allocator.h instead of
+	the whole .
+	* include/tr1/hashtable_policy.h: Include stl_function.h
+	instead of .
+	* include/Makefile.in: Regenerate.
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust dg-error
+	line numbers.
+
+2007-03-09  Douglas Gregor  
+
+	* include/Makefile.in: Regenerate.
+	* include/tr1/mu_iterate.h: Remove.
+	* include/tr1/tuple (_Tuple_impl): New.
+	(tuple): Make variadic, re-implement as shell over _Tuple_impl.
+	(0-element tuple): Basis case.
+	(2-element tuple): Handle pair methods.
+	(__get_helper): Remove.
+	(tuple_element): Reimplement with variadic templates.
+	(tuple_size): Ditto.
+	(get): Ditto.
+	(operator==): Use variadic templates in the signature.
+	(operator<): Ditto.
+	(operator!=): Ditto.
+	(operator>): Ditto.
+	(operator<=): Ditto.
+	(operator>=): Ditto.
+	(__stripped_tuple_type): Remove; we've inlined its behavior.
+	(make_tuple): Reimplement with variadic templates.
+	(tie): Ditto.
+	* include/tr1/tuple_iterate.h: Remove.
+	* include/tr1/bind_repeat.h: Remove.
+	* include/tr1/ref_wrap_iterate.h: Remove.
+	* include/tr1/bind_iterate.h: Remove.
+	* include/tr1/functional (_Weak_result_type): Add variadic
+	partial specializations.
+	(result_of): Ditto.
+	(__invoke): Reimplement using variadic templates.
+	(reference_wrapper): Reimplement operator() with variadic
+	templates.
+	(_Maybe_unary_or_binary_function): New.
+	(_Mem_fn): Implement for member function pointers using variadic
+	templates.
+	(placeholders): Define 30 placeholders.
+	(_Index_tuple): New.
+	(_Build_index_tuple): New.
+	(_No_tuple_element): New.
+	(_Safe_tuple_element_impl): New.
+	(_Safe_tuple_element): New.
+	(_Mu): Reimplement with variadic templates, use
+	_Safe_tuple_element instead of tuple_element.
+	(_Bind): Reimplement with variadic templates and tuples.
+	(_Bind_result): Ditto.
+	(bind): Reimplement with variadic templates.
+	(_Function_handler): Ditto.
+	(function): Ditto.
+	* include/tr1/functional_iterate.h: Remove.
+	* include/tr1/repeat.h: Remove.
+	* include/Makefile.am: Don't install removed headers.
+
+2007-03-06  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/bits/stl_algobase.h: Do not include .
+	* src/localename.cc: Do it here.
+	* src/ctype.cc: Likewise.
+	* include/ext/pb_ds/detail/map_debug_base.hpp: Likewise.
+	* include/ext/pb_ds/exception.hpp: Likewise.
+	* include/ext/pb_ds/list_update_policy.hpp: Likewise.
+	* include/bits/stl_algo.h: Likewise.
+	* include/tr1/random: Likewise.
+	* testsuite/util/testsuite_hooks.cc: Likewise.
+	* testsuite/util/testsuite_abi_check.cc: Likewise.
+	* testsuite/util/testsuite_abi.cc: Likewise.
+	* testsuite/util/performance/assoc/timing/
+	tree_order_statistics_test.hpp: Likewise.
+	* config/locale/darwin/ctype_members.cc: Likewise.
+	* config/locale/gnu/c++locale_internal.h: Likewise.
+	* config/locale/generic/ctype_members.cc: Likewise.
+	* config/locale/generic/time_members.cc: Likewise.
+
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Qualify abort.
+	* testsuite/util/performance/assoc/timing/
+	multimap_find_test.hpp: Likewise.
+	* include/std/valarray: Do include .
+	* include/tr1/hashtable: Likewise.
+
+2007-03-05  Joseph Myers  
+
+	PR libstdc++/30675
+	* testsuite/lib/libstdc++.exp (v3-build_support): Use [transform
+	"ar"] and [transform "ranlib"].
+
+2007-03-04  Paolo Carlini  
+
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/
+	char/31031.cc: Include the right header.
+
+2007-03-04  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Add c_global.
+	* configure.host (c_model): Set default to c_global.
+	* configure: Regenerate.
+	* include/Makefile.am (c_compatibility_headers_extra): Make
+	conditional on GLIBCXX_C_HEADERS_COMPATIBILITY.
+	(c_base_headers_extra): Make conditional on GLIBCXX_C_HEADERS_EXTRA.
+	(c_compatibility_headers): Make conditional on c/c_std/c_global.
+	* include/Makefile.in: Regenerate.
+	* docs/html/configopts.html: Add c_global information to
+	--enable-cheaders. Eventually, "c_std" should mean "C" includes
+	that are in namespace std, with optional C++ "C" compatibility
+	includes to inject into global scope. And "c_global" should mean
+	"C" includes that are in the global namespace, with C++ includes
+	injecting into namespace std and no C++ "C" compatibility
+	includes.
+
+2007-03-04  Benjamin Kosnik  
+
+	* include/bits/c++config: Add _GLIBCXX_NAMEPACE_C.
+	Add _GLIBCXX_NAMESPACE_ASSOCIATION_CXX200x.
+	Add _GLIBCXX_TR1 as namespace macro.
+	Add namespace associations for std::__cxx200x conditionally.
+
+	* include/c_compatibility/assert.h: Correct doxygen markup,
+	conditionalize the global injections on _GLIBCXX_NAMESPACE_C.
+	* include/c_compatibility/ctype.h: Same.
+	* include/c_compatibility/errno.h: Same.
+	* include/c_compatibility/float.h: Same.
+	* include/c_compatibility/iso646.h: Same.
+	* include/c_compatibility/limits.h: Same.
+	* include/c_compatibility/locale.h: Same.
+	* include/c_compatibility/math.h: Same.
+	* include/c_compatibility/setjmp.h: Same.
+	* include/c_compatibility/signal.h: Same.
+	* include/c_compatibility/stdarg.h: Same.
+	* include/c_compatibility/stddef.h: Same.
+	* include/c_compatibility/stdio.h: Same.
+	* include/c_compatibility/stdlib.h: Same.
+	* include/c_compatibility/string.h: Same.
+	* include/c_compatibility/time.h: Same.
+	* include/c_compatibility/wchar.h: Same.
+	* include/c_compatibility/wctype.h: Same.
+
+	* include/c_compatibility/complex.h: Add.
+	* include/c_compatibility/fenv.h: Same.
+	* include/c_compatibility/inttypes.h: Same.
+	* include/c_compatibility/stdbool.h: Same.
+	* include/c_compatibility/stdint.h: Same.
+	* include/c_compatibility/tgmath.h: Same.
+
+	* include/c_global/cassert: Add, use include_next, use C++0x features
+	if -std=c++0x.
+	* include/c_global/cctype: Same.
+	* include/c_global/cerrno: Same.
+	* include/c_global/cfloat: Same.
+	* include/c_global/ciso646: Same.
+	* include/c_global/climits: Same.
+	* include/c_global/clocale: Same.
+	* include/c_global/cmath: Same.
+	* include/c_global/cmath.tcc: Same.
+	* include/c_global/csetjmp: Same.
+	* include/c_global/csignal: Same.
+	* include/c_global/cstdarg: Same.
+	* include/c_global/cstddef: Same.
+	* include/c_global/cstdio: Same.
+	* include/c_global/cstdlib: Same.
+	* include/c_global/cstring: Same.
+	* include/c_global/ctime: Same.
+	* include/c_global/cwchar: Same.
+	* include/c_global/cwctype: Same.
+
+	* include/c_global/ccomplex: Add.
+	* include/c_global/cfenv: Add.
+	* include/c_global/cinttypes: Add.
+	* include/c_global/cstdbool: Add.
+	* include/c_global/cstdint: Add.
+	* include/c_global/ctgmath: Add.
+
+	* include/std/algorithm: Use C++0x features if -std=c++0x.
+	* include/std/bitset: Same.
+	* include/std/complex: Same.
+	* include/std/deque: Same.
+	* include/std/fstream: Same.
+	* include/std/functional: Same.
+	* include/std/iomanip: Same.
+	* include/std/ios: Same.
+	* include/std/iosfwd: Same.
+	* include/std/iostream: Same.
+	* include/std/istream: Same.
+	* include/std/iterator: Same.
+	* include/std/limits: Same.
+	* include/std/list: Same.
+	* include/std/locale: Same.
+	* include/std/map: Same.
+	* include/std/memory: Same.
+	* include/std/numeric: Same.
+	* include/std/ostream: Same.
+	* include/std/queue: Same.
+	* include/std/set: Same.
+	* include/std/sstream: Same.
+	* include/std/stack: Same.
+	* include/std/stdexcept: Same.
+	* include/std/streambuf: Same.
+	* include/std/string: Same.
+	* include/std/utility: Same.
+	* include/std/valarray: Same.
+	* include/std/vector: Same.
+
+	* include/std/array: Add.
+	* include/std/random: Add.
+	* include/std/regex: Add.
+	* include/std/tuple: Add.
+	* include/std/type_traits: Add.
+	* include/std/unordered_map: Add.
+	* include/std/unordered_set: Add.
+	* include/std/c++0x_warning.h: Add.
+
+	* include/tr1/array: Switch namespaces based on _GLIBCXX_TR1.
+	* include/tr1/boost_shared_ptr.h: Same.
+	* include/tr1/cctype: Same.
+	* include/tr1/cfenv: Same.
+	* include/tr1/cinttypes: Same.
+	* include/tr1/cmath: Same.
+	* include/tr1/common.h: Same.
+	* include/tr1/complex: Same.
+	* include/tr1/cstdint: Same.
+	* include/tr1/cstdio: Same.
+	* include/tr1/cstdlib: Same.
+	* include/tr1/cwchar: Same.
+	* include/tr1/cwctype: Same.
+	* include/tr1/functional: Same.
+	* include/tr1/functional_hash.h: Same.
+	* include/tr1/functional_iterate.h: Same.
+	* include/tr1/hashtable: Same.
+	* include/tr1/hashtable_policy.h: Same.
+	* include/tr1/math.h: Same.
+	* include/tr1/memory: Same.
+	* include/tr1/random: Same.
+	* include/tr1/random.tcc: Same.
+	* include/tr1/ref_fwd.h: Same.
+	* include/tr1/repeat.h: Same.
+	* include/tr1/stdlib.h: Same.
+	* include/tr1/tuple: Same.
+	* include/tr1/tuple_iterate.h: Same.
+	* include/tr1/type_traits: Same.
+	* include/tr1/type_traits_fwd.h: Same.
+	* include/tr1/unordered_map: Same.
+	* include/tr1/unordered_set: Same.
+	* include/tr1/utility: Same.
+
+	* include/tr1/ccomplex: Add.
+	* include/tr1/complex.h: Add.
+	* include/tr1/regex: Add.
+
+	* include/Makefile.am: Add C++0x headers, "C" compatibility headers.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/tr1/headers.cc: Add in regex/complex.
+
+	* testsuite/17_intro/headers/c++200x/all.cc: New.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Same.
+	* testsuite/17_intro/using_namespace_std_tr1_neg.cc: Same.
+	* testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc: Same.
+	* testsuite/18_support/headers/cstdint/std_c++0x_neg.cc: Same.
+	* testsuite/18_support/headers/cstdint/types_std_c++0x.cc: Same.
+	* testsuite/20_util/enable_shared_from_this/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/headers/functional/types_std_c++0x.cc: Same.
+	* testsuite/20_util/headers/functional/
+	using_namespace_std_placeholders.cc: Same.
+	* testsuite/20_util/headers/memory/types_std_c++0x.cc: Same.
+	* testsuite/20_util/headers/type_traits/std_c++0x_neg.cc: Same.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x.cc: Same.
+	* testsuite/20_util/shared_ptr/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/20_util/weak_ptr/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/array/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/hash/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/headers/array/std_c++0x_neg.cc: Same.
+	* testsuite/23_containers/headers/tuple/std_c++0x_neg.cc: Same.
+	* testsuite/23_containers/headers/tuple/types_std_c++0x.cc: Same.
+	* testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc: Same.
+	* testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc: Same.
+	* testsuite/23_containers/tuple/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation.cc: Same.
+	* testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: Same.
+	* testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc: Same.
+	* testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Same.
+	* testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: Same.
+	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc: Same.
+	* testsuite/26_numerics/headers/random/types_std_c++0x.cc: Same.
+	* testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Same.
+	* testsuite/27_io/headers/cinttypes/types_std_c++0x.cc: Same.
+	* testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Same.
+
+	* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Rename ...
+	* testsuite/tr1/8_c_compatibility/cinttypes/types.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cmath/types.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cstdint/types.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cstdlib/types.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc: ...to this.
+	* testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc: Same.
+	* testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Same.
+
+2007-03-03  Paolo Carlini  
+
+	PR libstdc++/31031
+	* include/bits/istream.tcc: Inhibit implicit instantiation of
+	the _M_insert helpers.
+	* include/bits/ostream.tcc: Likewise for _M_extract.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+	31031.cc: New.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/
+	31031.cc: Likewise.
+
+2007-03-03  Benjamin Kosnik  
+
+	* include/debug/functions.h: Use cstddef.
+
+	* testsuite/tr1/3_function_objects/headers/functional/
+	using_namespace_std_tr1_placeholders.cc: Fix include.
+
+2007-03-03  Benjamin Kosnik  
+
+	* crossconfig.m4 (djgpp): Correct builtin defines to HAVE___,
+	instead of HAVE____.
+	* configure: Regenerate.
+
+2007-03-03  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/bits/stl_algobase.h: Do not include ,
+	 is enough; adjust __copy_aux declarations;
+	remove declaration of copy overload for istreambuf_iterator /
+	ostreambuf_iterator.
+	* src/debug.cc: Include .
+	* include/ext/rope: Include .
+	* include/bits/char_traits.h: Include  and .
+	* include/bits/stl_algo.h: Remove declaration of find overload
+	for istreambuf_iterator.
+	* include/std/queue: Clean up includes.
+	* include/std/stack: Likewise.
+	* include/std/memory: Likewise.
+	* include/std/algorithm: Likewise.
+	* include/std/vector: Likewise.
+	* include/std/deque: Likewise.
+	* include/std/list: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust
+	dg-error markers.
+	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+	* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+	* testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Likewise.
+
+	* include/ext/type_traits.h: Fix type of __max_digits10; clean up
+	includes.
+
+	* testsuite/util/testsuite_hooks.h: Do not include .
+	* testsuite/util/testsuite_hooks.cc: Do it here.
+
+2007-03-02  Paolo Carlini  
+
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Include .
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/5.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
+	11.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/
+	4.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/
+	4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/
+	2346-fstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/
+	2346-fstream.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	wchar_t/10.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	wchar_t/11.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/10.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	char/11.cc: Likewise.
+	* testsuite/ext/pb_ds/example/trie_dna.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_local.cc: Likewise.
+	* testsuite/performance/27_io/filebuf_sgetn_unbuf.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_getline.cc: Likewise.
+	* testsuite/22_locale/locale/cons/4.cc: Likewise.
+	* testsuite/22_locale/locale/cons/5.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	mutex_weaktoshared.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/
+	default_weaktoshared.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread1.cc: Likewise.
+	* testsuite/23_containers/deque/cons/assign/1.cc: Likewise.
+
+2007-03-02  Paolo Carlini  
+
+	* testsuite/thread/pthread1.cc: Include .
+	* testsuite/thread/pthread2.cc: Likewise.
+	* testsuite/thread/pthread3.cc: Likewise.
+	* testsuite/thread/pthread4.cc: Likewise.
+	* testsuite/thread/pthread5.cc: Likewise.
+	* testsuite/thread/pthread6.cc: Likewise.
+	* testsuite/thread/pthread7-rope.cc: Likewise.
+
+2007-03-02  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/tr1/random (class random_device): Rework to use simple
+	 input, do not include .
+	* include/tr1/random.tcc (all inserters and extractors): Refer
+	to ios_base as base class of basic_istream or basic_ostream.
+
+2007-03-01  Brooks Moses  
+
+	* Makefile.am: Add dummy install-pdf target.
+	* Makefile.in: Regenerate
+
+2007-03-01  Paolo Carlini  
+
+	PR libstdc++/31005
+	* include/bits/localefwd.h: Include .
+
+2007-02-27  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/std/bitset: Do not include ,  is enough.
+	(operator>>(std::basic_istream<>&, bitset<>&)): Tweak, refer to
+	ios_base as a base of basic_istream.
+	* include/std/iomanip: Do not include ,  +
+	 is enough.
+	* include/std/iosfwd: Do not include  here...
+	* include/bits/locale_facets.h: ... do it here, when needed.
+	* include/bits/ostream.tcc: Clean up, do not include  here...
+	* include/std/ostream: ... here instead.
+	* include/bits/istream.tcc: Likewise for  and ...
+	* include/std/istream: ... here.
+	* include/bits/sstream.tcc: Do not include .
+
+2007-02-27  Richard Guenther  
+
+	* acinclude.m4: Adjust regular expression for ld version extraction.
+	* configure: Regenerate.
+
+2007-02-26  DJ Delorie  
+
+	* crossconfig.m4 (djgpp): Pre-detect djgpp-specific results, to
+	avoid needing to link during cross compiling.
+	* configure: Regenerated.
+
+2007-02-26  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/std/bitset: Do not include  and ,
+	 is enough.
+	* include/std/iomanip: Do not include the whole ,
+	 is enough; do not include ; reformat.
+	* include/std/functional: Do not include .
+	* include/std/list: Do not include .
+	* include/std/numeric: Do not include the whole  and
+	.
+	* include/std/valarray: Do not include .
+	* include/bits/stl_numeric.h: Include .
+	* src/iostream-inst.cc: Include .
+	* include/ext/functional: Include .
+	* testsuite/util/testsuite_hooks.h: Do not include ,
+	 is enough; qualify tm.
+	* testsuite/util/testsuite_hooks.cc: Qualify tm.
+
+2007-02-26  Paolo Carlini  
+
+	* include/bits/locale_facets.h (class ctype_byname,
+	class ctype_byname): Declare.
+	* src/ctype.cc (ctype_byname::ctype_byname(const char*,
+	size_t), ctype_byname::~ctype_byname): Define.
+	* config/locale/generic/ctype_members.cc (ctype_byname::
+	ctype_byname(const char*, size_t), ctype_byname::~ctype_byname):
+	Likewise.
+	* config/locale/gnu/ctype_members.cc (ctype_byname::
+	ctype_byname(const char*, size_t), ctype_byname::~ctype_byname):
+	Likewise.
+	* config/locale/darwin/ctype_members.cc (ctype_byname::
+	ctype_byname(const char*, size_t), ctype_byname::~ctype_byname):
+	Likewise.
+	* testsuite/22_locale/headers/locale/synopsis.cc: Remove xfail.
+
+2007-02-25  Paolo Carlini  
+
+	* testsuite/19_diagnostics/headers/cerrno/macros.cc: Include
+	the right header.
+	* testsuite/18_support/headers/cstdlib/macros.cc: Likewise.
+
+2007-02-23  Paolo Carlini  
+
+	PR libstdc++/25896
+	* include/tr1/hashtable (_Hashtable<>::erase(const key_type&)):
+	Take care of &_M_extract((*__slot)->_M_v) == &__k.
+
+	* testsuite/tr1/6_containers/unordered_map/erase/1.cc: New.
+	* testsuite/tr1/6_containers/unordered_multimap/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/erase/1.cc: Likewise.
+
+2007-02-23  Mark Mitchell  
+
+	* testsuite/27_io/ios_base/sync_with_stdio/1.cc: XFAIL for wrapped
+	targets.
+
+2007-02-23  Mark Mitchell  
+
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	XFAIL for Newlib targets.
+
+2007-02-22  Simon Martin  
+
+	* testsuite/27_io/basic_ios/cons/char/3.cc: Fixed type mismatches in
+	explicit instantiations.
+	* testsuite/27_io/basic_istream/extractors_other/pod/
+	3983-3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/sentry/pod/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/
+	pod/10081-in.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/pod/
+	10081-out.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
+
+2007-02-22  Paolo Carlini  
+
+	* include/tr1/unordered_map (class __unordered_map,
+	class __unordered_multimap): New.
+	(class unordered_map, class unordered_multimap): Forward to
+	the latter.
+	* include/tr1/unordered_set: Likewise for unordered_set and
+	unordered_multiset.
+	* testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc:
+	Remove xfail.
+	* testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc: Adjust.
+	* testsuite/tr1/6_containers/unordered_set/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/24064.cc: Likewise.
+	* testsuite/util/native_type/assoc/native_hash_set.hpp: Likewise.
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: Likewise.
+
+2007-02-20  Mark Mitchell  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Compile testglue
+	with -fexceptions.
+
+2007-02-20  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/tr1/functional: Split out hash bits to...
+	* include/tr1/functional_hash.h: ...here.
+	* include/Makefile.am: Add.
+	* include/tr1/unordered_set: Include the latter instead.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/random: Do not include the whole ,
+	stl_algobase.h is enough.
+	* include/tr1/memory: Likewise.
+	* include/Makefile.in: Regenerate.
+
+	* include/tr1/utility (get(std::pair<>&), get(const std::pair<>&)):
+	Mark inline.
+
+2007-02-20  Benjamin Kosnik  
+
+	Directory layout flattening.
+
+	Added in testsuite:
+	* 20_util/allocator
+	* 20_util/auto_ptr
+	* 20_util/function_objects
+	* 20_util/function_objects/binders
+	* 20_util/function_objects/binders/1.cc
+	* 20_util/function_objects/binders/3113.cc
+	* 20_util/function_objects/comparisons.cc
+	* 20_util/pair
+	* 20_util/raw_storage_iterator
+	* 20_util/rel_ops.cc
+	* 20_util/specialized_algorithms
+	* 20_util/specialized_algorithms/16505.cc
+	* 20_util/temporary_buffer.cc
+	* 26_numerics/numeric_arrays/slice_array
+	* 26_numerics/numeric_arrays/slice_array/array_assignment.cc
+	* 26_numerics/numeric_arrays/slice_array/requirements
+	* 26_numerics/numeric_arrays/slice_array/requirements/
+	explicit_instantiation.cc
+	* 26_numerics/numeric_arrays/slice_array/requirements/typedefs.cc
+	* 26_numerics/numeric_arrays/valarray
+	* 26_numerics/numeric_arrays/valarray/27867.cc
+	* 26_numerics/numeric_arrays/valarray/28277.cc
+	* 26_numerics/numeric_arrays/valarray/30416.cc
+	* 26_numerics/numeric_arrays/valarray/algo.cc
+	* 26_numerics/numeric_arrays/valarray/binary_closure.cc
+	* 26_numerics/numeric_arrays/valarray/const_bracket.cc
+	* 26_numerics/numeric_arrays/valarray/dr543.cc
+	* 26_numerics/numeric_arrays/valarray/name_lookup.cc
+	* 26_numerics/numeric_arrays/valarray/operators.cc
+	* 26_numerics/numeric_arrays/valarray/requirements
+	* 26_numerics/numeric_arrays/valarray/requirements/
+	explicit_instantiation.cc
+	* 26_numerics/numeric_arrays/valarray/requirements/typedefs.cc
+	* 26_numerics/numeric_arrays/valarray/subset_assignment.cc
+	* tr1/2_general_utilities/enable_shared_from_this
+	* tr1/2_general_utilities/shared_ptr
+	* tr1/2_general_utilities/weak_ptr
+
+	Deleted in testsuite:
+	* 20_util/functional
+	* 20_util/functional/binders
+	* 20_util/functional/binders/1.cc
+	* 20_util/functional/binders/3113.cc
+	* 20_util/functional/comparisons.cc
+	* 20_util/memory
+	* 20_util/memory/16505.cc
+	* 20_util/memory/allocator
+	* 20_util/memory/allocator/10378.cc
+	* 20_util/memory/allocator/14176.cc
+	* 20_util/memory/allocator/1.cc
+	* 20_util/memory/allocator/8230.cc
+	* 20_util/memory/allocator/requirements
+	* 20_util/memory/allocator/requirements/explicit_instantiation
+	* 20_util/memory/allocator/requirements/explicit_instantiation/1.cc
+	* 20_util/memory/auto_ptr
+	* 20_util/memory/auto_ptr/1.cc
+	* 20_util/memory/auto_ptr/2.cc
+	* 20_util/memory/auto_ptr/3946.cc
+	* 20_util/memory/auto_ptr/3.cc
+	* 20_util/memory/auto_ptr/4.cc
+	* 20_util/memory/auto_ptr/5.cc
+	* 20_util/memory/auto_ptr/6.cc
+	* 20_util/memory/auto_ptr/7.cc
+	* 20_util/memory/auto_ptr/assign_neg.cc
+	* 20_util/memory/auto_ptr/requirements
+	* 20_util/memory/auto_ptr/requirements/explicit_instantiation
+	* 20_util/memory/auto_ptr/requirements/explicit_instantiation/1.cc
+	* 20_util/memory/raw_storage_iterator
+	* 20_util/memory/raw_storage_iterator/requirements
+	* 20_util/memory/raw_storage_iterator/requirements/base_classes.cc
+	* 20_util/memory/raw_storage_iterator/requirements/
+	explicit_instantiation
+	* 20_util/memory/raw_storage_iterator/requirements/
+	explicit_instantiation/1.cc
+	* 20_util/memory/raw_storage_iterator/requirements/typedefs.cc
+	* 20_util/memory/temporary_buffer.cc
+	* 20_util/utility
+	* 20_util/utility/pair
+	* 20_util/utility/pair/1.cc
+	* 20_util/utility/pair/2.cc
+	* 20_util/utility/pair/3.cc
+	* 20_util/utility/pair/4.cc
+	* 20_util/utility/pair/requirements
+	* 20_util/utility/pair/requirements/explicit_instantiation
+	* 20_util/utility/pair/requirements/explicit_instantiation/1.cc
+	* 20_util/utility/rel_ops.cc
+	* 26_numerics/numeric_arrays/27867.cc
+	* 26_numerics/numeric_arrays/28277.cc
+	* 26_numerics/numeric_arrays/30416.cc
+	* 26_numerics/numeric_arrays/binary_closure.cc
+	* 26_numerics/numeric_arrays/dr543.cc
+	* 26_numerics/numeric_arrays/slice_array_assignment.cc
+	* 26_numerics/numeric_arrays/valarray.cc
+	* 26_numerics/numeric_arrays/valarray_const_bracket.cc
+	* 26_numerics/numeric_arrays/valarray_name_lookup.cc
+	* 26_numerics/numeric_arrays/valarray_operators.cc
+	* 26_numerics/numeric_arrays/valarray_subset_assignment.cc
+	* tr1/2_general_utilities/memory
+	* tr1/2_general_utilities/memory/enable_shared_from_this
+	* tr1/2_general_utilities/memory/enable_shared_from_this/1.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/not_shared2.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/not_shared3.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/not_shared.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/requirements
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	requirements/explicit_instantiation
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	requirements/explicit_instantiation/1.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/shared.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	still_shared.cc
+	* tr1/2_general_utilities/memory/shared_ptr
+	* tr1/2_general_utilities/memory/shared_ptr/assign
+	* tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/auto_ptr.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/auto_ptr_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/
+	auto_ptr_rvalue_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc
+	* tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/casts
+	* tr1/2_general_utilities/memory/shared_ptr/casts/1.cc
+	* tr1/2_general_utilities/memory/shared_ptr/comparison
+	* tr1/2_general_utilities/memory/shared_ptr/comparison/cmp.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons
+	* tr1/2_general_utilities/memory/shared_ptr/cons/auto_ptr.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/auto_ptr_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/copy.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/default.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/pointer.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/weak_ptr.cc
+	* tr1/2_general_utilities/memory/shared_ptr/cons/weak_ptr_expired.cc
+	* tr1/2_general_utilities/memory/shared_ptr/dest
+	* tr1/2_general_utilities/memory/shared_ptr/dest/dest.cc
+	* tr1/2_general_utilities/memory/shared_ptr/misc
+	* tr1/2_general_utilities/memory/shared_ptr/misc/24595.cc
+	* tr1/2_general_utilities/memory/shared_ptr/misc/io.cc
+	* tr1/2_general_utilities/memory/shared_ptr/misc/swap.cc
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers/24805.cc
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers/reset.cc
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers/reset_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers/swap.cc
+	* tr1/2_general_utilities/memory/shared_ptr/modifiers/swap_neg.cc
+	* tr1/2_general_utilities/memory/shared_ptr/observers
+	* tr1/2_general_utilities/memory/shared_ptr/observers/bool_conv.cc
+	* tr1/2_general_utilities/memory/shared_ptr/observers/get.cc
+	* tr1/2_general_utilities/memory/shared_ptr/observers/unique.cc
+	* tr1/2_general_utilities/memory/shared_ptr/observers/use_count.cc
+	* tr1/2_general_utilities/memory/shared_ptr/requirements
+	* tr1/2_general_utilities/memory/shared_ptr/requirements/
+	explicit_instantiation
+	* tr1/2_general_utilities/memory/shared_ptr/requirements/
+	explicit_instantiation/1.cc
+	* tr1/2_general_utilities/memory/shared_ptr/thread
+	* tr1/2_general_utilities/memory/shared_ptr/thread/
+	default_weaktoshared.cc
+	* tr1/2_general_utilities/memory/shared_ptr/thread/
+	mutex_weaktoshared.cc
+	* tr1/2_general_utilities/memory/weak_ptr
+	* tr1/2_general_utilities/memory/weak_ptr/lock
+	* tr1/2_general_utilities/memory/weak_ptr/lock/1.cc
+	* tr1/2_general_utilities/memory/weak_ptr/requirements
+	* tr1/2_general_utilities/memory/weak_ptr/requirements/
+	explicit_instantiation
+	* tr1/2_general_utilities/memory/weak_ptr/requirements/
+	explicit_instantiation/1.cc
+
+2007-02-20  Benjamin Kosnik  
+
+	Revamp library API testing.
+
+	Added in testsuite:
+	* 17_intro/headers
+	* 17_intro/headers/all_assert_neg.cc
+	* 17_intro/headers/all_c++200x_compatibility.cc
+	* 17_intro/headers/all.cc
+	* 17_intro/headers/c++1998
+	* 17_intro/headers/c++1998/all.cc
+	* 17_intro/headers/c++1998/all_multiple_inclusion.cc
+	* 17_intro/headers/c++1998/c++_for_c.tar
+	* 17_intro/headers/c++1998/c++.tar
+	* 17_intro/using_namespace_std.cc
+	* 18_support/headers
+	* 18_support/headers/cfloat
+	* 18_support/headers/cfloat/values.cc
+	* 18_support/headers/climits
+	* 18_support/headers/climits/values.cc
+	* 18_support/headers/csetjmp
+	* 18_support/headers/csetjmp/functions_std.cc
+	* 18_support/headers/csetjmp/macros.cc
+	* 18_support/headers/csetjmp/types_std.cc
+	* 18_support/headers/csignal
+	* 18_support/headers/csignal/functions_std.cc
+	* 18_support/headers/csignal/macros.cc
+	* 18_support/headers/csignal/types_std.cc
+	* 18_support/headers/cstdarg
+	* 18_support/headers/cstdarg/macros.cc
+	* 18_support/headers/cstdarg/types_std.cc
+	* 18_support/headers/cstddef
+	* 18_support/headers/cstddef/macros.cc
+	* 18_support/headers/cstddef/types_std.cc
+	* 18_support/headers/cstdlib
+	* 18_support/headers/cstdlib/functions_std.cc
+	* 18_support/headers/cstdlib/macros.cc
+	* 18_support/headers/ctime
+	* 18_support/headers/ctime/functions_std.cc
+	* 18_support/headers/ctime/macros.cc
+	* 18_support/headers/ctime/types_std.cc
+	* 18_support/headers/exception
+	* 18_support/headers/exception/synopsis.cc
+	* 18_support/headers/exception/types_std.cc
+	* 18_support/headers/limits
+	* 18_support/headers/limits/synopsis.cc
+	* 18_support/headers/new
+	* 18_support/headers/new/synopsis.cc
+	* 18_support/headers/new/types_std.cc
+	* 18_support/headers/typeinfo
+	* 18_support/headers/typeinfo/synopsis.cc
+	* 18_support/headers/typeinfo/types_std.cc
+	* 18_support/numeric_limits/is_signed.cc
+	* 18_support/numeric_limits/requirements
+	* 18_support/numeric_limits/requirements/explicit_instantiation
+	* 18_support/numeric_limits/requirements/explicit_instantiation/1.cc
+	* 18_support/numeric_limits/specialization_default_values.cc
+	* 19_diagnostics/headers
+	* 19_diagnostics/headers/cassert
+	* 19_diagnostics/headers/cassert/macros.cc
+	* 19_diagnostics/headers/cerrno
+	* 19_diagnostics/headers/cerrno/macros.cc
+	* 19_diagnostics/headers/stdexcept
+	* 19_diagnostics/headers/stdexcept/synopsis.cc
+	* 19_diagnostics/headers/stdexcept/types_std.cc
+	* 20_util/headers
+	* 20_util/headers/cstdlib
+	* 20_util/headers/cstdlib/functions_std.cc
+	* 20_util/headers/cstring
+	* 20_util/headers/cstring/functions_std.cc
+	* 20_util/headers/cstring/macros.cc
+	* 20_util/headers/cstring/types_std.cc
+	* 20_util/headers/ctime
+	* 20_util/headers/ctime/functions_std.cc
+	* 20_util/headers/ctime/macros.cc
+	* 20_util/headers/ctime/types_std.cc
+	* 20_util/headers/functional
+	* 20_util/headers/functional/synopsis.cc
+	* 20_util/headers/memory
+	* 20_util/headers/memory/synopsis.cc
+	* 20_util/headers/utility
+	* 20_util/headers/utility/synopsis.cc
+	* 20_util/headers/utility/using_namespace_std_rel_ops.cc
+	* 20_util/memory/allocator/requirements
+	* 20_util/memory/allocator/requirements/explicit_instantiation
+	* 20_util/memory/allocator/requirements/explicit_instantiation/1.cc
+	* 20_util/memory/auto_ptr/requirements
+	* 20_util/memory/auto_ptr/requirements/explicit_instantiation
+	* 20_util/memory/auto_ptr/requirements/explicit_instantiation/1.cc
+	* 20_util/memory/raw_storage_iterator
+	* 20_util/memory/raw_storage_iterator/requirements
+	* 20_util/memory/raw_storage_iterator/requirements/base_classes.cc
+	* 20_util/memory/raw_storage_iterator/requirements/
+	explicit_instantiation
+	* 20_util/memory/raw_storage_iterator/requirements/
+	explicit_instantiation/1.cc
+	* 20_util/memory/raw_storage_iterator/requirements/typedefs.cc
+	* 20_util/utility/pair/requirements
+	* 20_util/utility/pair/requirements/explicit_instantiation
+	* 20_util/utility/pair/requirements/explicit_instantiation/1.cc
+	* 21_strings/basic_string/requirements
+	* 21_strings/basic_string/requirements/explicit_instantiation
+	* 21_strings/basic_string/requirements/explicit_instantiation/1.cc
+	* 21_strings/basic_string/requirements/explicit_instantiation/debug.cc
+	* 21_strings/headers
+	* 21_strings/headers/cctype
+	* 21_strings/headers/cctype/functions_std.cc
+	* 21_strings/headers/cstdlib
+	* 21_strings/headers/cstdlib/functions_std.cc
+	* 21_strings/headers/cstdlib/macros.cc
+	* 21_strings/headers/cstring
+	* 21_strings/headers/cstring/functions_std.cc
+	* 21_strings/headers/cstring/macros.cc
+	* 21_strings/headers/cstring/types_std.cc
+	* 21_strings/headers/cwchar
+	* 21_strings/headers/cwchar/functions_std.cc
+	* 21_strings/headers/cwchar/macros.cc
+	* 21_strings/headers/cwchar/types_std.cc
+	* 21_strings/headers/cwctype
+	* 21_strings/headers/cwctype/functions_std.cc
+	* 21_strings/headers/cwctype/macros.cc
+	* 21_strings/headers/cwctype/types_std.cc
+	* 21_strings/headers/string
+	* 21_strings/headers/string/synopsis.cc
+	* 21_strings/headers/string/types_std.cc
+	* 22_locale/codecvt_byname/requirements
+	* 22_locale/codecvt_byname/requirements/base_classes.cc
+	* 22_locale/codecvt_byname/requirements/explicit_instantiation.cc
+	* 22_locale/codecvt_byname/requirements/typedefs.cc
+	* 22_locale/codecvt/requirements
+	* 22_locale/codecvt/requirements/base_classes.cc
+	* 22_locale/codecvt/requirements/explicit_instantiation.cc
+	* 22_locale/codecvt/requirements/typedefs.cc
+	* 22_locale/collate_byname/requirements
+	* 22_locale/collate_byname/requirements/base_classes.cc
+	* 22_locale/collate_byname/requirements/explicit_instantiation.cc
+	* 22_locale/collate_byname/requirements/typedefs.cc
+	* 22_locale/collate/requirements
+	* 22_locale/collate/requirements/base_classes.cc
+	* 22_locale/collate/requirements/explicit_instantiation.cc
+	* 22_locale/collate/requirements/typedefs.cc
+	* 22_locale/ctype_base/mask.cc
+	* 22_locale/ctype/requirements
+	* 22_locale/ctype/requirements/base_classes.cc
+	* 22_locale/ctype/requirements/explicit_instantiation.cc
+	* 22_locale/ctype/requirements/typedefs.cc
+	* 22_locale/headers
+	* 22_locale/headers/clocale
+	* 22_locale/headers/clocale/functions_std.cc
+	* 22_locale/headers/clocale/macros.cc
+	* 22_locale/headers/clocale/types_std.cc
+	* 22_locale/headers/locale
+	* 22_locale/headers/locale/synopsis.cc
+	* 22_locale/headers/locale/types_std.cc
+	* 22_locale/messages_byname/requirements
+	* 22_locale/messages_byname/requirements/base_classes.cc
+	* 22_locale/messages_byname/requirements/explicit_instantiation.cc
+	* 22_locale/messages_byname/requirements/typedefs.cc
+	* 22_locale/messages/requirements
+	* 22_locale/messages/requirements/base_classes.cc
+	* 22_locale/messages/requirements/explicit_instantiation.cc
+	* 22_locale/messages/requirements/typedefs.cc
+	* 22_locale/money_get/cons
+	* 22_locale/money_get/cons/3.cc
+	* 22_locale/money_get/requirements
+	* 22_locale/money_get/requirements/base_classes.cc
+	* 22_locale/money_get/requirements/explicit_instantiations.cc
+	* 22_locale/money_get/requirements/typedefs.cc
+	* 22_locale/moneypunct_byname/requirements
+	* 22_locale/moneypunct_byname/requirements/base_classes.cc
+	* 22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
+	* 22_locale/moneypunct_byname/requirements/typedefs.cc
+	* 22_locale/moneypunct/requirements
+	* 22_locale/moneypunct/requirements/false
+	* 22_locale/moneypunct/requirements/false/base_classes.cc
+	* 22_locale/moneypunct/requirements/false/explicit_instantiation.cc
+	* 22_locale/moneypunct/requirements/false/intl.cc
+	* 22_locale/moneypunct/requirements/false/typedefs.cc
+	* 22_locale/moneypunct/requirements/true
+	* 22_locale/moneypunct/requirements/true/base_classes.cc
+	* 22_locale/moneypunct/requirements/true/explicit_instantiation.cc
+	* 22_locale/moneypunct/requirements/true/intl.cc
+	* 22_locale/moneypunct/requirements/true/typedefs.cc
+	* 22_locale/money_put/cons
+	* 22_locale/money_put/cons/3.cc
+	* 22_locale/money_put/requirements
+	* 22_locale/money_put/requirements/base_classes.cc
+	* 22_locale/money_put/requirements/explicit_instantiation.cc
+	* 22_locale/money_put/requirements/typedefs.cc
+	* 22_locale/num_get/cons
+	* 22_locale/num_get/cons/3.cc
+	* 22_locale/num_get/requirements
+	* 22_locale/num_get/requirements/base_classes.cc
+	* 22_locale/num_get/requirements/explicit_instantiation.cc
+	* 22_locale/num_get/requirements/typedefs.cc
+	* 22_locale/numpunct_byname/requirements
+	* 22_locale/numpunct_byname/requirements/base_classes.cc
+	* 22_locale/numpunct_byname/requirements/explicit_instantiations.cc
+	* 22_locale/numpunct_byname/requirements/typedefs.cc
+	* 22_locale/numpunct/requirements
+	* 22_locale/numpunct/requirements/base_classes.cc
+	* 22_locale/numpunct/requirements/explicit_instantiations.cc
+	* 22_locale/numpunct/requirements/typedefs.cc
+	* 22_locale/num_put/cons
+	* 22_locale/num_put/cons/3.cc
+	* 22_locale/num_put/requirements
+	* 22_locale/num_put/requirements/base_classes.cc
+	* 22_locale/num_put/requirements/explicit_instantiations.cc
+	* 22_locale/num_put/requirements/typedefs.cc
+	* 22_locale/time_get/requirements
+	* 22_locale/time_get/requirements/base_classes.cc
+	* 22_locale/time_get/requirements/explicit_instantiations.cc
+	* 22_locale/time_get/requirements/typedefs.cc
+	* 22_locale/time_put/requirements
+	* 22_locale/time_put/requirements/base_classes.cc
+	* 22_locale/time_put/requirements/explicit_instantiations.cc
+	* 22_locale/time_put/requirements/typedefs.cc
+	* 23_containers/bitset/requirements
+	* 23_containers/bitset/requirements/explicit_instantiation
+	* 23_containers/bitset/requirements/explicit_instantiation/1.cc
+	* 23_containers/deque/requirements
+	* 23_containers/deque/requirements/explicit_instantiation
+	* 23_containers/deque/requirements/partial_specialization
+	* 23_containers/deque/requirements/partial_specialization/1.cc
+	* 23_containers/headers
+	* 23_containers/headers/bitset
+	* 23_containers/headers/bitset/synopsis.cc
+	* 23_containers/headers/deque
+	* 23_containers/headers/deque/synopsis.cc
+	* 23_containers/headers/list
+	* 23_containers/headers/list/synopsis.cc
+	* 23_containers/headers/map
+	* 23_containers/headers/map/synopsis.cc
+	* 23_containers/headers/queue
+	* 23_containers/headers/queue/synopsis.cc
+	* 23_containers/headers/set
+	* 23_containers/headers/set/synopsis.cc
+	* 23_containers/headers/stack
+	* 23_containers/headers/stack/synopsis.cc
+	* 23_containers/headers/vector
+	* 23_containers/headers/vector/synopsis.cc
+	* 23_containers/list/requirements
+	* 23_containers/list/requirements/explicit_instantiation
+	* 23_containers/list/requirements/partial_specialization
+	* 23_containers/list/requirements/partial_specialization/1.cc
+	* 23_containers/map/requirements
+	* 23_containers/map/requirements/explicit_instantiation
+	* 23_containers/map/requirements/partial_specialization
+	* 23_containers/map/requirements/partial_specialization/1.cc
+	* 23_containers/multimap/requirements
+	* 23_containers/multimap/requirements/explicit_instantiation
+	* 23_containers/multimap/requirements/partial_specialization
+	* 23_containers/multimap/requirements/partial_specialization/1.cc
+	* 23_containers/multiset/requirements
+	* 23_containers/multiset/requirements/explicit_instantiation
+	* 23_containers/multiset/requirements/partial_specialization
+	* 23_containers/multiset/requirements/partial_specialization/1.cc
+	* 23_containers/priority_queue/requirements
+	* 23_containers/priority_queue/requirements/explicit_instantiation
+	* 23_containers/priority_queue/requirements/explicit_instantiation/1.cc
+	* 23_containers/queue/requirements
+	* 23_containers/queue/requirements/explicit_instantiation
+	* 23_containers/queue/requirements/explicit_instantiation/1.cc
+	* 23_containers/set/requirements
+	* 23_containers/set/requirements/explicit_instantiation
+	* 23_containers/set/requirements/partial_specialization
+	* 23_containers/set/requirements/partial_specialization/1.cc
+	* 23_containers/stack/requirements
+	* 23_containers/stack/requirements/explicit_instantiation
+	* 23_containers/stack/requirements/explicit_instantiation/1.cc
+	* 23_containers/vector/requirements
+	* 23_containers/vector/requirements/explicit_instantiation
+	* 23_containers/vector/requirements/partial_specialization
+	* 23_containers/vector/requirements/partial_specialization/1.cc
+	* 24_iterators/back_insert_iterator
+	* 24_iterators/back_insert_iterator/2.cc
+	* 24_iterators/back_insert_iterator/requirements
+	* 24_iterators/back_insert_iterator/requirements/base_classes.cc
+	* 24_iterators/back_insert_iterator/requirements/container.cc
+	* 24_iterators/back_insert_iterator/requirements/
+	explicit_instantiation.cc
+	* 24_iterators/back_insert_iterator/requirements/typedefs.cc
+	* 24_iterators/front_insert_iterator
+	* 24_iterators/front_insert_iterator/2.cc
+	* 24_iterators/front_insert_iterator/requirements
+	* 24_iterators/front_insert_iterator/requirements/base_classes.cc
+	* 24_iterators/front_insert_iterator/requirements/container.cc
+	* 24_iterators/front_insert_iterator/requirements/
+	explicit_instantiation.cc
+	* 24_iterators/front_insert_iterator/requirements/typedefs.cc
+	* 24_iterators/headers
+	* 24_iterators/headers/iterator
+	* 24_iterators/headers/iterator/synopsis.cc
+	* 24_iterators/headers/iterator/types_std.cc
+	* 24_iterators/insert_iterator
+	* 24_iterators/insert_iterator/2.cc
+	* 24_iterators/insert_iterator/requirements
+	* 24_iterators/insert_iterator/requirements/base_classes.cc
+	* 24_iterators/insert_iterator/requirements/container.cc
+	* 24_iterators/insert_iterator/requirements/explicit_instantiation.cc
+	* 24_iterators/insert_iterator/requirements/typedefs.cc
+	* 24_iterators/istreambuf_iterator/requirements
+	* 24_iterators/istreambuf_iterator/requirements/base_classes.cc
+	* 24_iterators/istreambuf_iterator/requirements/
+	explicit_instantiation.cc
+	* 24_iterators/istreambuf_iterator/requirements/typedefs.cc
+	* 24_iterators/istream_iterator
+	* 24_iterators/istream_iterator/2.cc
+	* 24_iterators/istream_iterator/requirements
+	* 24_iterators/istream_iterator/requirements/base_classes.cc
+	* 24_iterators/istream_iterator/requirements/explicit_instantiation.cc
+	* 24_iterators/istream_iterator/requirements/typedefs.cc
+	* 24_iterators/ostreambuf_iterator/requirements
+	* 24_iterators/ostreambuf_iterator/requirements/base_classes.cc
+	* 24_iterators/ostreambuf_iterator/requirements/
+	explicit_instantiation.cc
+	* 24_iterators/ostreambuf_iterator/requirements/typedefs.cc
+	* 24_iterators/ostream_iterator
+	* 24_iterators/ostream_iterator/requirements
+	* 24_iterators/ostream_iterator/requirements/base_classes.cc
+	* 24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
+	* 24_iterators/ostream_iterator/requirements/typedefs.cc
+	* 24_iterators/random_access_iterator
+	* 24_iterators/random_access_iterator/26020.cc
+	* 24_iterators/random_access_iterator/string_vector_iterators.cc
+	* 24_iterators/reverse_iterator/requirements
+	* 24_iterators/reverse_iterator/requirements/base_classes.cc
+	* 24_iterators/reverse_iterator/requirements/current.cc
+	* 24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
+	* 24_iterators/reverse_iterator/requirements/typedefs.cc
+	* 25_algorithms/headers
+	* 25_algorithms/headers/algorithm
+	* 25_algorithms/headers/algorithm/synopsis.cc
+	* 25_algorithms/headers/cstdlib
+	* 25_algorithms/headers/cstdlib/functions_std.cc
+	* 26_numerics/headers
+	* 26_numerics/headers/cmath
+	* 26_numerics/headers/cmath/19322.cc
+	* 26_numerics/headers/cmath/c99_classification_macros_c.cc
+	* 26_numerics/headers/cmath/c99_classification_macros_c++.cc
+	* 26_numerics/headers/cmath/c_math.cc
+	* 26_numerics/headers/cmath/c_math_dynamic.cc
+	* 26_numerics/headers/cmath/fabs_inline.cc
+	* 26_numerics/headers/cmath/functions_std.cc
+	* 26_numerics/headers/cmath/macros.cc
+	* 26_numerics/headers/cmath/overloads.cc
+	* 26_numerics/headers/cmath/powi.cc
+	* 26_numerics/headers/complex
+	* 26_numerics/headers/complex/synopsis.cc
+	* 26_numerics/headers/cstdlib
+	* 26_numerics/headers/cstdlib/13943.cc
+	* 26_numerics/headers/cstdlib/2190.cc
+	* 26_numerics/headers/cstdlib/functions_std.cc
+	* 26_numerics/headers/cstdlib/macros.cc
+	* 26_numerics/headers/cstdlib/types_std.cc
+	* 26_numerics/headers/numeric
+	* 26_numerics/headers/numeric/synopsis.cc
+	* 26_numerics/headers/valarray
+	* 26_numerics/headers/valarray/synopsis.cc
+	* 26_numerics/headers/valarray/types_std.cc
+	* 26_numerics/numeric_arrays
+	* 26_numerics/numeric_operations
+	* 27_io/basic_filebuf/cons/2020.cc
+	* 27_io/basic_filebuf/requirements
+	* 27_io/basic_filebuf/requirements/base_classes.cc
+	* 27_io/basic_filebuf/requirements/explicit_instantiation.cc
+	* 27_io/basic_filebuf/requirements/typedefs.cc
+	* 27_io/basic_fstream/cons
+	* 27_io/basic_fstream/cons/3.cc
+	* 27_io/basic_fstream/requirements
+	* 27_io/basic_fstream/requirements/base_classes.cc
+	* 27_io/basic_fstream/requirements/explicit_instantiation.cc
+	* 27_io/basic_fstream/requirements/typedefs.cc
+	* 27_io/basic_ifstream/cons/2020.cc
+	* 27_io/basic_ifstream/requirements
+	* 27_io/basic_ifstream/requirements/base_classes.cc
+	* 27_io/basic_ifstream/requirements/explicit_instantiation.cc
+	* 27_io/basic_ifstream/requirements/typedefs.cc
+	* 27_io/basic_ios/cons/2020.cc
+	* 27_io/basic_ios/requirements
+	* 27_io/basic_ios/requirements/base_classes.cc
+	* 27_io/basic_ios/requirements/explicit_instantiation.cc
+	* 27_io/basic_ios/requirements/typedefs.cc
+	* 27_io/basic_iostream/cons
+	* 27_io/basic_iostream/cons/2020.cc
+	* 27_io/basic_iostream/requirements
+	* 27_io/basic_iostream/requirements/base_classes.cc
+	* 27_io/basic_iostream/requirements/explicit_instantiation.cc
+	* 27_io/basic_iostream/requirements/typedefs.cc
+	* 27_io/basic_istream/cons
+	* 27_io/basic_istream/cons/3.cc
+	* 27_io/basic_istream/requirements
+	* 27_io/basic_istream/requirements/base_classes.cc
+	* 27_io/basic_istream/requirements/explicit_instantiation.cc
+	* 27_io/basic_istream/requirements/typedefs.cc
+	* 27_io/basic_istringstream/cons
+	* 27_io/basic_istringstream/cons/2020.cc
+	* 27_io/basic_istringstream/requirements
+	* 27_io/basic_istringstream/requirements/base_classes.cc
+	* 27_io/basic_istringstream/requirements/explicit_instantiation.cc
+	* 27_io/basic_istringstream/requirements/typedefs.cc
+	* 27_io/basic_ofstream/cons/2020.cc
+	* 27_io/basic_ofstream/requirements
+	* 27_io/basic_ofstream/requirements/base_classes.cc
+	* 27_io/basic_ofstream/requirements/explicit_instantiations.cc
+	* 27_io/basic_ofstream/requirements/typedefs.cc
+	* 27_io/basic_ostream/cons/2020.cc
+	* 27_io/basic_ostream/requirements
+	* 27_io/basic_ostream/requirements/base_classes.cc
+	* 27_io/basic_ostream/requirements/explicit_instantiation.cc
+	* 27_io/basic_ostream/requirements/typedefs.cc
+	* 27_io/basic_ostringstream/cons/2020.cc
+	* 27_io/basic_ostringstream/requirements
+	* 27_io/basic_ostringstream/requirements/base_classes.cc
+	* 27_io/basic_ostringstream/requirements/explicit_instantiation.cc
+	* 27_io/basic_ostringstream/requirements/typedefs.cc
+	* 27_io/basic_streambuf/cons/2020.cc
+	* 27_io/basic_streambuf/requirements
+	* 27_io/basic_streambuf/requirements/base_classes.cc
+	* 27_io/basic_streambuf/requirements/typedefs.cc
+	* 27_io/basic_stringbuf/cons/2020.cc
+	* 27_io/basic_stringbuf/requirements
+	* 27_io/basic_stringbuf/requirements/base_classes.cc
+	* 27_io/basic_stringbuf/requirements/explicit_instantiation
+	* 27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
+	* 27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
+	* 27_io/basic_stringbuf/requirements/typedefs.cc
+	* 27_io/basic_stringstream/cons
+	* 27_io/basic_stringstream/cons/2020.cc
+	* 27_io/basic_stringstream/requirements
+	* 27_io/basic_stringstream/requirements/base_classes.cc
+	* 27_io/basic_stringstream/requirements/explicit_instantiation.cc
+	* 27_io/basic_stringstream/requirements/typedefs.cc
+	* 27_io/fpos/requirements
+	* 27_io/fpos/requirements/explicit_instantiation.cc
+	* 27_io/headers
+	* 27_io/headers/cstdio
+	* 27_io/headers/cstdio/functions_std.cc
+	* 27_io/headers/cstdio/macros.cc
+	* 27_io/headers/cstdio/types_std.cc
+	* 27_io/headers/cstdlib
+	* 27_io/headers/fstream
+	* 27_io/headers/fstream/synopsis.cc
+	* 27_io/headers/fstream/types_std.cc
+	* 27_io/headers/iomanip
+	* 27_io/headers/iomanip/synopsis.cc
+	* 27_io/headers/ios
+	* 27_io/headers/ios/synopsis.cc
+	* 27_io/headers/iostream
+	* 27_io/headers/iostream/synopsis.cc
+	* 27_io/headers/iostream/types_std.cc
+	* 27_io/headers/ios/types_std.cc
+	* 27_io/headers/istream
+	* 27_io/headers/istream/synopsis.cc
+	* 27_io/headers/istream/types_std.cc
+	* 27_io/headers/ostream
+	* 27_io/headers/ostream/synopsis.cc
+	* 27_io/headers/ostream/types_std.cc
+	* 27_io/headers/sstream
+	* 27_io/headers/sstream/synopsis.cc
+	* 27_io/headers/sstream/types_std.cc
+	* 27_io/headers/streambuf
+	* 27_io/headers/streambuf/synopsis.cc
+	* 27_io/headers/streambuf/types_std.cc
+	* ext/debug_allocator/explicit_instantiation.cc
+	* ext/hash_map/requirements
+	* ext/hash_map/requirements/explicit_instantiation.cc
+	* ext/hash_set/requirements
+	* ext/hash_set/requirements/explicit_instantiation.cc
+	* ext/malloc_allocator/explicit_instantiation.cc
+	* ext/mt_allocator/explicit_instantiation.cc
+	* ext/pool_allocator/explicit_instantiation.cc
+	* ext/slist/requirements
+	* ext/slist/requirements/explicit_instantiation.cc
+	* ext/stdio_filebuf/requirements
+	* ext/stdio_filebuf/requirements/explicit_instantiation.cc
+	* ext/vstring/requirements
+	* ext/vstring/requirements/explicit_instantiation
+	* tr1/2_general_utilities/headers
+	* tr1/2_general_utilities/headers/functional
+	* tr1/2_general_utilities/headers/functional/synopsis.cc
+	* tr1/2_general_utilities/headers/memory
+	* tr1/2_general_utilities/headers/memory/synopsis.cc
+	* tr1/2_general_utilities/headers/memory/types_std_tr1.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/requirements
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	requirements/explicit_instantiation
+	* tr1/2_general_utilities/memory/shared_ptr/requirements
+	* tr1/2_general_utilities/memory/shared_ptr/requirements/
+	explicit_instantiation
+	* tr1/2_general_utilities/memory/weak_ptr/requirements
+	* tr1/2_general_utilities/memory/weak_ptr/requirements/
+	explicit_instantiation
+	* tr1/3_function_objects/headers
+	* tr1/3_function_objects/headers/functional
+	* tr1/3_function_objects/headers/functional/synopsis.cc
+	* tr1/3_function_objects/headers/functional/types_std_tr1.cc
+	* tr1/3_function_objects/headers/functional/
+	using_namespace_std_tr1_placeholders.cc
+	* tr1/4_metaprogramming/headers
+	* tr1/4_metaprogramming/headers/type_traits
+	* tr1/4_metaprogramming/headers/type_traits/synopsis.cc
+	* tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
+	* tr1/5_numerical_facilities/headers
+	* tr1/5_numerical_facilities/headers/random
+	* tr1/5_numerical_facilities/headers/random/synopsis.cc
+	* tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
+	* tr1/5_numerical_facilities/random/discard_block/
+	requirements/typedefs.cc
+	* tr1/6_containers/array/requirements/explicit_instantiation.cc
+	* tr1/6_containers/hash
+	* tr1/6_containers/hash/requirements
+	* tr1/6_containers/hash/requirements/base_classes.cc
+	* tr1/6_containers/hash/requirements/explicit_instantiation.cc
+	* tr1/6_containers/headers
+	* tr1/6_containers/headers/array
+	* tr1/6_containers/headers/array/synopsis.cc
+	* tr1/6_containers/headers/functional
+	* tr1/6_containers/headers/functional/synopsis.cc
+	* tr1/6_containers/headers/tuple
+	* tr1/6_containers/headers/tuple/synopsis.cc
+	* tr1/6_containers/headers/tuple/types_std_tr1.cc
+	* tr1/6_containers/headers/unordered_map
+	* tr1/6_containers/headers/unordered_map/synopsis.cc
+	* tr1/6_containers/headers/unordered_set
+	* tr1/6_containers/headers/unordered_set/synopsis.cc
+	* tr1/6_containers/tuple/requirements
+	* tr1/6_containers/tuple/requirements/explicit_instantiation.cc
+	* tr1/6_containers/unordered_map
+	* tr1/6_containers/unordered_map/24064.cc
+	* tr1/6_containers/unordered_map/capacity
+	* tr1/6_containers/unordered_map/capacity/29134-map.cc
+	* tr1/6_containers/unordered_map/erase
+	* tr1/6_containers/unordered_map/erase/24061-map.cc
+	* tr1/6_containers/unordered_map/find
+	* tr1/6_containers/unordered_map/find/map1.cc
+	* tr1/6_containers/unordered_map/insert
+	* tr1/6_containers/unordered_map/insert/24061-map.cc
+	* tr1/6_containers/unordered_map/insert/array_syntax.cc
+	* tr1/6_containers/unordered_map/insert/map_range.cc
+	* tr1/6_containers/unordered_map/insert/map_single.cc
+	* tr1/6_containers/unordered_map/requirements
+	* tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
+	* tr1/6_containers/unordered_map/requirements/iterator_neg.cc
+	* tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
+	* tr1/6_containers/unordered_map/swap
+	* tr1/6_containers/unordered_map/swap/1.cc
+	* tr1/6_containers/unordered_map/swap/2.cc
+	* tr1/6_containers/unordered_multimap
+	* tr1/6_containers/unordered_multimap/capacity
+	* tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
+	* tr1/6_containers/unordered_multimap/erase
+	* tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
+	* tr1/6_containers/unordered_multimap/find
+	* tr1/6_containers/unordered_multimap/find/multimap1.cc
+	* tr1/6_containers/unordered_multimap/insert
+	* tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
+	* tr1/6_containers/unordered_multimap/insert/multimap_range.cc
+	* tr1/6_containers/unordered_multimap/insert/multimap_single.cc
+	* tr1/6_containers/unordered_multimap/requirements
+	* tr1/6_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc
+	* tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
+	* tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
+	* tr1/6_containers/unordered_multimap/swap
+	* tr1/6_containers/unordered_multimap/swap/1.cc
+	* tr1/6_containers/unordered_multimap/swap/2.cc
+	* tr1/6_containers/unordered_multiset
+	* tr1/6_containers/unordered_multiset/24054.cc
+	* tr1/6_containers/unordered_multiset/capacity
+	* tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
+	* tr1/6_containers/unordered_multiset/erase
+	* tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
+	* tr1/6_containers/unordered_multiset/find
+	* tr1/6_containers/unordered_multiset/find/multiset1.cc
+	* tr1/6_containers/unordered_multiset/insert
+	* tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
+	* tr1/6_containers/unordered_multiset/insert/multiset_range.cc
+	* tr1/6_containers/unordered_multiset/insert/multiset_single.cc
+	* tr1/6_containers/unordered_multiset/requirements
+	* tr1/6_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc
+	* tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
+	* tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
+	* tr1/6_containers/unordered_multiset/swap
+	* tr1/6_containers/unordered_multiset/swap/1.cc
+	* tr1/6_containers/unordered_multiset/swap/2.cc
+	* tr1/6_containers/unordered_set
+	* tr1/6_containers/unordered_set/23053.cc
+	* tr1/6_containers/unordered_set/23465.cc
+	* tr1/6_containers/unordered_set/26127.cc
+	* tr1/6_containers/unordered_set/26132.cc
+	* tr1/6_containers/unordered_set/capacity
+	* tr1/6_containers/unordered_set/capacity/29134-set.cc
+	* tr1/6_containers/unordered_set/erase
+	* tr1/6_containers/unordered_set/erase/24061-set.cc
+	* tr1/6_containers/unordered_set/find
+	* tr1/6_containers/unordered_set/find/set1.cc
+	* tr1/6_containers/unordered_set/insert
+	* tr1/6_containers/unordered_set/insert/24061-set.cc
+	* tr1/6_containers/unordered_set/insert/set_range.cc
+	* tr1/6_containers/unordered_set/insert/set_single.cc
+	* tr1/6_containers/unordered_set/requirements
+	* tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
+	* tr1/6_containers/unordered_set/requirements/iterator_neg.cc
+	* tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
+	* tr1/6_containers/unordered_set/requirements/
+	iterators_default_constructor.cc
+	* tr1/6_containers/unordered_set/swap
+	* tr1/6_containers/unordered_set/swap/1.cc
+	* tr1/6_containers/unordered_set/swap/2.cc
+	* tr1/using_namespace_std_tr1.cc
+
+	Deleted in testsuite:
+	* 17_intro/header_cassert.cc
+	* 17_intro/header_cerrno.cc
+	* 17_intro/header_csetjmp.cc
+	* 17_intro/header_cstdarg.cc
+	* 17_intro/header_cstddef.cc
+	* 17_intro/header_cstdio.cc
+	* 17_intro/header_cstdlib.cc
+	* 17_intro/header_cstring.cc
+	* 17_intro/header_ctime.cc
+	* 17_intro/header_cwchar.cc
+	* 17_intro/header_cwctype.cc
+	* 17_intro/header_fstream.cc
+	* 17_intro/header_iomanip.cc
+	* 17_intro/header_ios.cc
+	* 17_intro/header_iosfwd.cc
+	* 17_intro/header_iostream.cc
+	* 17_intro/header_istream.cc
+	* 17_intro/header_ostream.cc
+	* 17_intro/headers.cc
+	* 17_intro/headers_c++_c++0x_compat.cc
+	* 17_intro/headers_c.cc
+	* 17_intro/headers_c++.cc
+	* 17_intro/header_sstream.cc
+	* 17_intro/header_streambuf.cc
+	* 17_intro/no_assert_neg.cc
+	* 18_support/numeric_limits/sign.cc
+	* 18_support/numeric_limits/specialization.cc
+	* 20_util/memory/raw_storage_iterator.cc
+	* 21_strings/basic_string/1.cc
+	* 21_strings/basic_string/2.cc
+	* 22_locale/codecvt/1.cc
+	* 22_locale/codecvt/2.cc
+	* 22_locale/codecvt_byname/1.cc
+	* 22_locale/collate/1.cc
+	* 22_locale/collate/2.cc
+	* 22_locale/collate_byname/1.cc
+	* 22_locale/ctype/1.cc
+	* 22_locale/ctype_base/1.cc
+	* 22_locale/messages/1.cc
+	* 22_locale/messages/2.cc
+	* 22_locale/messages_byname/1.cc
+	* 22_locale/money_get/1.cc
+	* 22_locale/money_get/2.cc
+	* 22_locale/money_get/3.cc
+	* 22_locale/moneypunct/1.cc
+	* 22_locale/moneypunct/2.cc
+	* 22_locale/moneypunct/3.cc
+	* 22_locale/moneypunct_byname/1.cc
+	* 22_locale/money_put/1.cc
+	* 22_locale/money_put/2.cc
+	* 22_locale/money_put/3.cc
+	* 22_locale/num_get/1.cc
+	* 22_locale/num_get/2.cc
+	* 22_locale/num_get/3.cc
+	* 22_locale/numpunct/1.cc
+	* 22_locale/numpunct/2.cc
+	* 22_locale/numpunct_byname/1.cc
+	* 22_locale/num_put/1.cc
+	* 22_locale/num_put/2.cc
+	* 22_locale/num_put/3.cc
+	* 22_locale/time_get/1.cc
+	* 22_locale/time_get/2.cc
+	* 22_locale/time_put/1.cc
+	* 22_locale/time_put/2.cc
+	* 23_containers/deque/1.cc
+	* 23_containers/deque/explicit_instantiation
+	* 23_containers/deque/explicit_instantiation/1.cc
+	* 23_containers/deque/explicit_instantiation/2.cc
+	* 23_containers/deque/explicit_instantiation/3.cc
+	* 23_containers/list/1.cc
+	* 23_containers/list/explicit_instantiation
+	* 23_containers/list/explicit_instantiation/1.cc
+	* 23_containers/list/explicit_instantiation/2.cc
+	* 23_containers/list/explicit_instantiation/3.cc
+	* 23_containers/map/1.cc
+	* 23_containers/map/explicit_instantiation
+	* 23_containers/map/explicit_instantiation/1.cc
+	* 23_containers/map/explicit_instantiation/2.cc
+	* 23_containers/map/explicit_instantiation/3.cc
+	* 23_containers/multimap/1.cc
+	* 23_containers/multimap/explicit_instantiation
+	* 23_containers/multimap/explicit_instantiation/1.cc
+	* 23_containers/multimap/explicit_instantiation/2.cc
+	* 23_containers/multimap/explicit_instantiation/3.cc
+	* 23_containers/multiset/1.cc
+	* 23_containers/multiset/explicit_instantiation
+	* 23_containers/multiset/explicit_instantiation/1.cc
+	* 23_containers/multiset/explicit_instantiation/2.cc
+	* 23_containers/multiset/explicit_instantiation/3.cc
+	* 23_containers/set/1.cc
+	* 23_containers/set/explicit_instantiation
+	* 23_containers/set/explicit_instantiation/1.cc
+	* 23_containers/set/explicit_instantiation/2.cc
+	* 23_containers/set/explicit_instantiation/3.cc
+	* 23_containers/vector/1.cc
+	* 23_containers/vector/explicit_instantiation
+	* 23_containers/vector/explicit_instantiation/1.cc
+	* 23_containers/vector/explicit_instantiation/2.cc
+	* 23_containers/vector/explicit_instantiation/3.cc
+	* 24_iterators/26020.cc
+	* 24_iterators/back_insert_iterator.cc
+	* 24_iterators/front_insert_iterator.cc
+	* 24_iterators/insert_iterator.cc
+	* 24_iterators/istreambuf_iterator/1.cc
+	* 24_iterators/istream_iterator.cc
+	* 24_iterators/iterator.cc
+	* 24_iterators/ostreambuf_iterator/1.cc
+	* 24_iterators/ostream_iterator.cc
+	* 24_iterators/reverse_iterator/1.cc
+	* 26_numerics/cmath
+	* 26_numerics/cmath/19322.cc
+	* 26_numerics/cmath/c99_classification_macros_c.cc
+	* 26_numerics/cmath/c99_classification_macros_c++.cc
+	* 26_numerics/cmath/c_math.cc
+	* 26_numerics/cmath/c_math_dynamic.cc
+	* 26_numerics/cmath/fabs_inline.cc
+	* 26_numerics/cmath/overloads.cc
+	* 26_numerics/cmath/powi.cc
+	* 26_numerics/cstdlib
+	* 26_numerics/cstdlib/13943.cc
+	* 26_numerics/numeric
+	* 26_numerics/numeric/sum_diff.cc
+	* 26_numerics/valarray
+	* 26_numerics/valarray/27867.cc
+	* 26_numerics/valarray/28277.cc
+	* 26_numerics/valarray/30416.cc
+	* 26_numerics/valarray/binary_closure.cc
+	* 26_numerics/valarray/dr543.cc
+	* 26_numerics/valarray/slice_array_assignment.cc
+	* 26_numerics/valarray/slice.cc
+	* 26_numerics/valarray/valarray.cc
+	* 26_numerics/valarray/valarray_const_bracket.cc
+	* 26_numerics/valarray/valarray_name_lookup.cc
+	* 26_numerics/valarray/valarray_operators.cc
+	* 26_numerics/valarray/valarray_subset_assignment.cc
+	* 27_io/basic_filebuf/1.cc
+	* 27_io/basic_filebuf/2.cc
+	* 27_io/basic_filebuf/3.cc
+	* 27_io/basic_filebuf/4.cc
+	* 27_io/basic_fstream/1.cc
+	* 27_io/basic_fstream/2.cc
+	* 27_io/basic_fstream/3.cc
+	* 27_io/basic_fstream/4.cc
+	* 27_io/basic_ifstream/1.cc
+	* 27_io/basic_ifstream/2.cc
+	* 27_io/basic_ifstream/3.cc
+	* 27_io/basic_ifstream/4.cc
+	* 27_io/basic_ios/1.cc
+	* 27_io/basic_ios/2.cc
+	* 27_io/basic_ios/3.cc
+	* 27_io/basic_ios/4.cc
+	* 27_io/basic_iostream/1.cc
+	* 27_io/basic_iostream/2.cc
+	* 27_io/basic_iostream/3.cc
+	* 27_io/basic_iostream/4.cc
+	* 27_io/basic_istream/1.cc
+	* 27_io/basic_istream/2.cc
+	* 27_io/basic_istream/3.cc
+	* 27_io/basic_istream/4.cc
+	* 27_io/basic_istringstream/1.cc
+	* 27_io/basic_istringstream/2.cc
+	* 27_io/basic_istringstream/3.cc
+	* 27_io/basic_istringstream/4.cc
+	* 27_io/basic_ofstream/1.cc
+	* 27_io/basic_ofstream/2.cc
+	* 27_io/basic_ofstream/3.cc
+	* 27_io/basic_ofstream/4.cc
+	* 27_io/basic_ostream/1.cc
+	* 27_io/basic_ostream/2.cc
+	* 27_io/basic_ostream/3.cc
+	* 27_io/basic_ostream/4.cc
+	* 27_io/basic_ostringstream/1.cc
+	* 27_io/basic_ostringstream/2.cc
+	* 27_io/basic_ostringstream/3.cc
+	* 27_io/basic_ostringstream/4.cc
+	* 27_io/basic_streambuf/1.cc
+	* 27_io/basic_streambuf/2.cc
+	* 27_io/basic_streambuf/3.cc
+	* 27_io/basic_stringbuf/1.cc
+	* 27_io/basic_stringbuf/2.cc
+	* 27_io/basic_stringbuf/3.cc
+	* 27_io/basic_stringbuf/4.cc
+	* 27_io/basic_stringbuf/5.cc
+	* 27_io/basic_stringstream/1.cc
+	* 27_io/basic_stringstream/2.cc
+	* 27_io/basic_stringstream/3.cc
+	* 27_io/basic_stringstream/4.cc
+	* 27_io/fpos/1.cc
+	* ext/debug_allocator/instantiate.cc
+	* ext/hash_map/instantiate.cc
+	* ext/hash_set/instantiate.cc
+	* ext/malloc_allocator/instantiate.cc
+	* ext/mt_allocator/instantiate.cc
+	* ext/pool_allocator/instantiate.cc
+	* ext/slist/instantiate.cc
+	* ext/stdio_filebuf/char/1.cc
+	* ext/vstring/explicit_instantiation
+	* ext/vstring/explicit_instantiation/1.cc
+	* ext/vstring/explicit_instantiation/2.cc
+	* ext/vstring/explicit_instantiation/char
+	* ext/vstring/explicit_instantiation/char/1.cc
+	* ext/vstring/explicit_instantiation/wchar_t
+	* ext/vstring/explicit_instantiation/wchar_t/1.cc
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	explicit_instantiation
+	* tr1/2_general_utilities/memory/enable_shared_from_this/
+	explicit_instantiation/1.cc
+	* tr1/2_general_utilities/memory/shared_ptr/explicit_instantiation
+	* tr1/2_general_utilities/memory/shared_ptr/explicit_instantiation/1.cc
+	* tr1/2_general_utilities/memory/weak_ptr/explicit_instantiation
+	* tr1/2_general_utilities/memory/weak_ptr/explicit_instantiation/1.cc
+	* tr1/5_numerical_facilities/random/discard_block/requirements/
+	requirements.cc
+	* tr1/6_containers/array/requirements/instantiate.cc
+	* tr1/6_containers/unordered
+	* tr1/6_containers/unordered/23781.cc
+	* tr1/6_containers/unordered/capacity
+	* tr1/6_containers/unordered/capacity/29134-map.cc
+	* tr1/6_containers/unordered/capacity/29134-multimap.cc
+	* tr1/6_containers/unordered/capacity/29134-multiset.cc
+	* tr1/6_containers/unordered/capacity/29134-set.cc
+	* tr1/6_containers/unordered/erase
+	* tr1/6_containers/unordered/erase/24061-map.cc
+	* tr1/6_containers/unordered/erase/24061-multimap.cc
+	* tr1/6_containers/unordered/erase/24061-multiset.cc
+	* tr1/6_containers/unordered/erase/24061-set.cc
+	* tr1/6_containers/unordered/find
+	* tr1/6_containers/unordered/find/map1.cc
+	* tr1/6_containers/unordered/find/multimap1.cc
+	* tr1/6_containers/unordered/find/multiset1.cc
+	* tr1/6_containers/unordered/find/set1.cc
+	* tr1/6_containers/unordered/hash
+	* tr1/6_containers/unordered/hash/24799.cc
+	* tr1/6_containers/unordered/hashtable
+	* tr1/6_containers/unordered/hashtable/23053.cc
+	* tr1/6_containers/unordered/hashtable/23465.cc
+	* tr1/6_containers/unordered/hashtable/24054.cc
+	* tr1/6_containers/unordered/hashtable/24064.cc
+	* tr1/6_containers/unordered/hashtable/26127.cc
+	* tr1/6_containers/unordered/hashtable/26132.cc
+	* tr1/6_containers/unordered/hashtable/iterators_default_constructor.cc
+	* tr1/6_containers/unordered/insert
+	* tr1/6_containers/unordered/insert/24061-map.cc
+	* tr1/6_containers/unordered/insert/24061-multimap.cc
+	* tr1/6_containers/unordered/insert/24061-multiset.cc
+	* tr1/6_containers/unordered/insert/24061-set.cc
+	* tr1/6_containers/unordered/insert/array_syntax.cc
+	* tr1/6_containers/unordered/insert/map_range.cc
+	* tr1/6_containers/unordered/insert/map_single.cc
+	* tr1/6_containers/unordered/insert/multimap_range.cc
+	* tr1/6_containers/unordered/insert/multimap_single.cc
+	* tr1/6_containers/unordered/insert/multiset_range.cc
+	* tr1/6_containers/unordered/insert/multiset_single.cc
+	* tr1/6_containers/unordered/insert/set_range.cc
+	* tr1/6_containers/unordered/insert/set_single.cc
+	* tr1/6_containers/unordered/instantiate
+	* tr1/6_containers/unordered/instantiate/hash.cc
+	* tr1/6_containers/unordered/instantiate/map.cc
+	* tr1/6_containers/unordered/instantiate/multimap.cc
+	* tr1/6_containers/unordered/instantiate/multiset.cc
+	* tr1/6_containers/unordered/instantiate/set.cc
+	* tr1/6_containers/unordered/swap
+	* tr1/6_containers/unordered/swap/unordered_map
+	* tr1/6_containers/unordered/swap/unordered_map/1.cc
+	* tr1/6_containers/unordered/swap/unordered_map/2.cc
+	* tr1/6_containers/unordered/swap/unordered_multimap
+	* tr1/6_containers/unordered/swap/unordered_multimap/1.cc
+	* tr1/6_containers/unordered/swap/unordered_multimap/2.cc
+	* tr1/6_containers/unordered/swap/unordered_multiset
+	* tr1/6_containers/unordered/swap/unordered_multiset/1.cc
+	* tr1/6_containers/unordered/swap/unordered_multiset/2.cc
+	* tr1/6_containers/unordered/swap/unordered_set
+	* tr1/6_containers/unordered/swap/unordered_set/1.cc
+	* tr1/6_containers/unordered/swap/unordered_set/2.cc
+	* tr1/6_containers/unordered/types
+	* tr1/6_containers/unordered/types/map_iterator.cc
+	* tr1/6_containers/unordered/types/multimap_iterator.cc
+	* tr1/6_containers/unordered/types/multiset_iterator.cc
+	* tr1/6_containers/unordered/types/set_iterator.cc
+
+	* testsuite/24_iterators/reverse_iterator/2.cc: To just one
+	non-requirements test.
+	* testsuite/ext/headers.cc: Add new includes.
+
+2007-02-18  Paolo Carlini  
+
+	PR libstdc++/28080 (partial)
+	* include/bits/stl_algobase.h: Do not include , use
+	std::numeric_limits.
+	* include/bits/stl_bvector.h: Use __CHAR_BIT__.
+	* config/locale/gnu/codecvt_members.cc: Include .
+	* config/locale/generic/codecvt_members.cc: Likewise.
+	* include/std/string: Do not include ; do not include
+	, include  instead.
+	* include/ext/vstring_fwd.h: Likewise.
+	* include/ext/vstring_util.h: Do not include .
+	* include/tr1/hashtable_policy.h: Include .
+	* testsuite/21_strings/basic_string/replace/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/1.cc: Likewise.
+	* testsuite/util/testsuite_character.h: Likewise.
+
+	* config/locale/gnu/codecvt_members.cc: Also include ,
+	for MB_CUR_MAX.
+	* config/locale/generic/codecvt_members.cc: Likewise.
+
+2007-02-16  Paolo Carlini  
+
+	Revert.
+	2007-02-14  Hans-Peter Nilsson  
+
+	PR middle-end/30768
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc:
+	Xfail ICE for cris-*-*.
+
+2007-02-14  Hans-Peter Nilsson  
+
+	PR middle-end/30768
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc:
+	Xfail ICE for cris-*-*.
+
+2007-02-14  Benjamin Kosnik  
+
+	* configure.ac: Move AM_ICONV to native-only, add HAVE_ICONV for
+        newlib.
+	* configure: Regenerate.
+
+2007-02-13  Dirk Mueller  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get): Avoid
+	warning about ambiguous else.
+
+2007-02-12  Paolo Carlini  
+
+	PR libstdc++/21172
+	* include/bits/stl_heap.h (__adjust_heap(_RandomAccessIterator,
+	_Distance, _Distance, _Tp), __adjust_heap(_RandomAccessIterator,
+	_Distance, _Distance, _Tp, _Compare)): Avoid potential integer
+	overflow.
+
+	* include/bits/stl_heap.h (__is_heap(_RandomAccessIterator,
+	_RandomAccessIterator), __is_heap(_RandomAccessIterator,
+	_RandomAccessIterator, _StrictWeakOrdering): Mark inline.
+	(make_heap(_RandomAccessIterator, _RandomAccessIterator,
+	_Compare)): Do not mark inline.
+
+	* include/bits/stl_heap.h (push_heap(_RandomAccessIterator,
+	_RandomAccessIterator), sort_heap(_RandomAccessIterator,
+	_RandomAccessIterator)): Uncomment __glibcxx_requires_heap.
+
+2007-02-09  Richard Sandiford  
+
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: XFAIL if
+	dummy_wcsftime.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/2.cc: XFAIL if lax_strtofp.
+	* testsuite/22_locale/num_get/get/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc:
+	Likewise.
+	* testsuite/26_numerics/cmath/c99_classification_macros_c++.cc: XFAIL
+	for uClibc.
+	* testsuite/26_numerics/cmath/c99_classification_macros_c.cc: Likewise.
+
+2007-02-09  Paolo Carlini  
+
+	* scripts/testsuite_flags.in: Add back @LIBICONV@ to SECTIONLDFLAGS.
+
+2007-02-08  Howard Hinnant  
+
+	PR libstdc++/17012
+	* include/bits/list.tcc (list<>::remove): Take care of
+	&*__first == &__value.
+	* docs/html/ext/howto.html: Add an entry for DR 526.
+
+2007-02-07  Jakub Jelinek  
+
+	PR libgomp/28468
+	* configure: Regenerate.
+
+2007-02-07  Hans-Peter Nilsson  
+
+	PR testsuite/28870
+	* testsuite/27_io/basic_stringbuf/overflow/char/1.cc: Use only
+	10000 iterations for simulator targets.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Use only 5
+	iterations for simulator targets.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Ditto.
+	* testsuite/23_containers/set/modifiers/16728.cc: Use only 10
+	iterations for simulator targets.
+
+2007-02-06  Benjamin Kosnik  
+            Marco Trudel  
+
+	* include/precompiled/extc++.h: Guard include files that assume
+	iconv support is present from precompilation via
+	_GLIBCXX_HAVE_ICONV.
+
+2007-02-05  Paolo Carlini  
+
+	* include/bits/stl_deque.h (operator<): Qualify call.
+
+2007-02-02  Benjamin Kosnik  
+
+	* include/bits/c++config: Consistent macro guards for config includes.
+	* config/locale/gnu/c_locale.h: Same.
+	* config/locale/generic/c_locale.h: Same.
+	* config/allocator/mt_allocator_base.h: Same.
+	* config/allocator/malloc_allocator_base.h: Same.
+	* config/allocator/new_allocator_base.h: Same.
+	* config/allocator/pool_allocator_base.h: Same.
+	* config/allocator/bitmap_allocator_base.h: Same.
+	* config/os/vxworks/os_defines.h: Same.
+	* config/cpu/sh/atomicity.h: Same.
+	* config/io/c_io_stdio.h: Same.
+	* config/io/basic_file_stdio.h: Same.
+
+2007-02-01  Paolo Carlini  
+
+	PR libstdc++/14493
+	* libsupc++/typeinfo (bad_cast::what, bad_typeid::what): Declare.
+	* libsupc++/tinfo.cc: Define.
+	* libsupc++/exception (bad_exception::what): Declare.
+	* libsupc++/eh_exception.cc: Define.
+	(exception::what): Adjust, don't use typeid.
+	* libsupc++/new (bad_alloc::what): Declare.
+	* libsupc++/new_handler.cc: Define.
+	* config/abi/pre/gnu.ver: Export the new methods @3.4.9; adjust
+	existing 3.4.10 exports to 3.4.9.
+	* configure.ac: Adjust to 6.0.9.
+	* configure: Regenerate.
+	* testsuite/util/testsuite_abi.cc: Update.
+	* testsuite/18_support/14493.cc: New.
+
+2007-02-01  Ben Elliston  
+
+	* libsupc++/eh_alloc.cc (__cxa_free_exception): Don't refer to the
+	emergency_buffer using `&array[0][0]' notation, use `array'.
+
+2007-01-30  Benjamin Kosnik  
+
+	PR libstdc++/30571
+	* include/ext/pb_ds/detail/type_utils.hpp: Use C++0x
+	static_assert if available, if not, centralize PB_DS_STATIC_ASSERT
+	definition here.
+	* include/ext/pb_ds/detail/resize_policy/
+	cc_hash_max_collision_check_resize_trigger_imp.hpp: Remove
+	PB_DS_STATIC_ASSERT definition.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Same.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
+	* include/ext/pb_ds/trie_policy.hpp: Same.
+	* testsuite/util/performance/assoc/timing/
+	tree_order_statistics_test.hpp: Same.
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Adjust line numbers.
+	* testsuite/17_intro/headers_c++_c++0x_compat.cc: New.
+
+	* include/precompiled/extc++.h: Update to current list of ext files.
+
+2007-01-29  Paolo Carlini  
+
+	* include/bits/stl_uninitialized.h (uninitialized_copy(const char*,
+	const char*, char*), uninitialized_copy(const wchar_t*, const wchar_t*,
+	wchar_t*)): Remove, just forward to std::copy.
+
+2007-01-29  Benjamin Kosnik  
+
+	* include/ext/enc_filebuf.h: Resurrect, update.
+	* include/ext/codecvt_specializations.h: Remove
+        _GLIBCXX_USE_ICONV, _GLIBCXX_USE_ENCODING_STATE.
+	* include/bits/localefwd.h: Remove declaration for __enc_traits.
+	* docs/html/22_locale/codecvt.html: Change __enc_traits to
+	encoding_state.
+	* scripts/testsuite_flags.in: Remove ICONV.
+
+	* configure.ac: Remove GLIBCXX_CHECK_ICONV_SUPPORT.
+	* acinclude.m4 (GLIBCXX_CHECK_ICONV_SUPPORT): Remove.
+	* crossconfig.m4: Remove use of GLIBCXX_CHECK_ICONV_SUPPORT.
+	* config.h.in: Remove HAVE_ICONV_CLOSE, HAVE_ICONV_OPEN,
+	HAVE_NL_LANGINFO, _GLIBCXX_USE_ICONV.
+	* include/Makefile.am: Uglify ICONV_CONST.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+	* Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Use
+	dg-require-iconv, fix up for encoding_state changes.
+	* testsuite/ext/enc_filebuf/char/13189.cc: Same.
+	* testsuite/ext/enc_filebuf/char/13598.cc: Same.
+	* testsuite/22_locale/codecvt/unicode: Move...
+	* testsuite/22_locale/codecvt/unicode/char.cc: Move...
+	* testsuite/22_locale/codecvt/unicode/1.cc: Move...
+	* testsuite/22_locale/codecvt/unicode/wchar_t.cc: Move...
+	* testsuite/ext/codecvt: New.
+	* testsuite/ext/codecvt/char-1.cc: ...here. Also, use dg-require-iconv.
+	* testsuite/ext/codecvt/char-2.cc: ...here. Same.
+	* testsuite/ext/codecvt/1.cc: ...here. Same.
+	* testsuite/ext/codecvt/wchar_t.cc: ...here. Same.
+	* testsuite/22_locale/locale/cons/unicode: Delete directory.
+	* testsuite/22_locale/locale/cons/unicode/1.cc: Move...
+	* testsuite/22_locale/locale/cons/unicode.cc: ...here.
+
+2007-01-28  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, bool&),
+	num_put<>::_M_insert_int(_OutIter, ios_base&, _CharT, _ValueT)):
+	-Wconversion and -Woverflow fixes.
+	* include/bits/istream.tcc (operator>>(int&), operator>>(short&)):
+	Likewise.
+	* include/std/valarray (valarray<>::shift, cshift): Likewise.
+
+2007-01-26  Paolo Carlini  
+
+	PR libstdc++/30586
+	* config/cpu/ia64/atomic_word.h: Just include .
+	* testsuite/abi/30586.cc: New.
+
+2007-01-25  Nathan Myers  
+
+	* include/bits/streambuf_iterator.h (istreambuf_iterator<>::equal):
+	Simplify.
+
+2007-01-24   Steve LoBasso 
+	     Paolo Carlini  
+
+	* include/bits/deque.tcc (deque<>::erase(iterator, iterator)):
+	Fix condition.
+	* testsuite/23_containers/deque/modifiers/erase/3.cc: New.
+
+2007-01-24  Andrew Pinski  
+
+	* libsupc++/eh_personality.cc  (PERSONALITY_FUNCTION): Replace
+	_Unwind_Word with _uleb128_t in the SJLJ context.
+
+2007-01-24  Benjamin Kosnik  
+
+	PR libstdc++/29722 continued
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): Add
+	libsupc++ library directory.
+	* testsuite/abi/cxx_runtime_only_linkage.cc: Remove hard-coded
+	path specification.
+
+2007-01-24  Andreas Krebbel  
+
+	* libsupc++/eh_personality.cc (parse_lsda_header, check_exception_spec,
+	get_ttype_entry, empty_exception_spec, PERSONALITY_FUNCTION): Replaced
+	_Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
+
+2007-01-22  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (__fill_aux(unsigned char*,
+	unsigned char*, const unsigned char&), __fill_aux(signed char*,
+	signed char*, const signed char&), __fill_aux(char*, char*,
+	const char&), __fill_aux(wchar_t*, wchar_t*, const wchar_t&)):
+	Take the character by value.
+	(__fill_n_aux): Likewise.
+
+2007-01-21  Paolo Carlini  
+
+	PR libstdc++/30449 (fill, fill_n)
+	* include/bits/stl_algobase.h (__fill_aux(wchar_t*, wchar_t*,
+	const wchar_t&), __fill_n_aux(wchar_t*, _Size, const wchar_t&)): New.
+	(fill(signed char*, signed char*, const signed char&),
+	fill(unsigned char*, unsigned char*, const unsigned char&),
+	fill(char*, char*, char&), fill_n(signed char*, _Size,
+	const signed char&), fill_n(unsigned char*, _Size,
+	const unsigned char&), fill_n(char*, _Size, char&)): Rename to
+	__*_aux.
+	(__fill_normal, __fill_n_normal): New, call the latter.
+	(fill, fill_n): Adjust, call the latter.
+	* testsuite/25_algorithms/fill/4.cc: New.
+	* testsuite/25_algorithms/fill/5.cc: New.
+
+2007-01-18  Paolo Carlini  
+
+	* include/bits/basic_string.h (basic_string<>::_S_compare): Add.
+	(compare(const basic_string&)): Use it.
+	* include/bits/basic_string.tcc (compare(size_type, size_type,
+	const basic_string&), compare(size_type, size_type,
+	const basic_string&, size_type, size_type), compare(const _CharT*),
+	compare(size_type, size_type, const _CharT*), compare(size_type,
+	size_type, const _CharT*, size_type)): Likewise.
+	* include/ext/vstring_util.h (__vstring_utility<>::_S_compare): Add.
+	* include/ext/vstring.h (compare(const __versa_string&)): Use it.
+	* include/ext/vstring.tcc (compare(size_type, size_type,
+	const __versa_string&), compare(size_type, size_type,
+	const __versa_string&, size_type, size_type), compare(const _CharT*),
+	compare(size_type, size_type, const _CharT*), compare(size_type,
+	size_type, const _CharT*, size_type)): Likewise.
+
+2007-01-15  Ian Lance Taylor  
+	    Paolo Carlini  
+
+	* include/ext/type_traits.h: Fix __glibcxx_max macro.
+	* include/std/limits: Likewise.
+
+2007-01-15  Paolo Carlini  
+
+	* include/std/valarray (valarray<>::cshift): Fix typo.
+
+2007-01-14  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (fill_n(char*, _Size,
+	const signed char&)): Fix signature.
+	* testsuite/25_algorithms/fill/3.cc: New.
+
+2007-01-13  John David Anglin  
+
+	* config/cpu/hppa/atomicity.h (__exchange_and_add): Don't use ordered
+	store.
+	(__atomic_add): Likewise.
+
+2007-01-13  Paolo Carlini  
+
+	PR libstdc++/14991
+	* docs/html/17_intro/porting-howto.html ([3]): Mention stdio_filebuf.
+	* docs/html/17_intro/porting-howto.xml: Remove.
+
+	* docs/html/17_intro/porting-howto.html: Remove spurious end tags
+	pointed out by validator.w3.org.
+
+2007-01-12  Paolo Carlini  
+
+	PR libstdc++/30416 (continued)
+	* include/std/valarray (valarray<>::shift, valarray<>::cshift):
+	Allways return the same variable, thus facilitating NRVO.
+
+2007-01-12  Paolo Carlini  
+
+	PR libstdc++/30416
+	* include/std/valarray (valarray<>::shift, valarray<>::cshift):
+	Do not segfault when |n| > size.
+	* testsuite/26_numerics/valarray/30416.cc: New.
+
+2007-01-06  Paolo Carlini  
+
+	PR libstdc++/30365
+	* crossconfig.m4 (case *-linux*): Run GLIBCXX_CHECK_LFS.
+	* configure: Regenerate.
+
+2007-01-06  Matthias Klose  
+
+	* include/tr1/random (gamma_distribution): Fix typo in formula.
+	* docs/doxygen/user.cfg.in: Use package amsmath.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2008 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2008
new file mode 100644
index 000000000..b1ba0aadc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2008
@@ -0,0 +1,4801 @@
+2008-12-22  Jonathan Larmour  
+
+	* include/ext/concurrence.h: Fix __gthread_cond_t initialisation
+	function macro name.
+
+2008-12-22  Benjamin Kosnik  
+
+	* doc/doxygen/stdheader.cc: Add cstdlib.
+	* doc/doxygen/user.cfg.in: Regenerate for doxygen 1.5.7.
+
+2008-12-21  Andrew Pinski  
+
+	PR target/38300
+	* configure: Regenerate.
+
+2008-12-21  Paolo Carlini  
+
+	PR libstdc++/38596
+	* include/tr1_impl/functional (function<>::target,
+	function<>::target_type): Provide only when __GXX_RTTI is defined.
+	(_Function_base::_M_manager, _Ref_manager<>::_M_manager,
+	_Function_handler::_M_manager):
+	Adjust.
+
+2008-12-19  Ben Elliston  
+
+	* acinclude.m4: Guard a variable test against an empty string.
+	* configure: Regenerate.
+
+2008-12-18  Jack Howarth  
+
+	* testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
+	Add xfail on all targets except darwin.
+	* libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/
+	1674.cc: Same.
+	* libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc: Correct syntax
+	for xfailing on all targets except linux.
+
+2008-12-18  Ralf Wildenhues  
+
+	* configure: Regenerate.
+
+2008-12-17  Jack Howarth  
+
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Don't xfail test on darwin8 or later.
+
+2008-12-16  Jack Howarth  
+
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Don't xfail excessive errors on darwin8 or later.
+
+2008-12-15  Benjamin Kosnik  
+
+	* include/c_global/cstdatomic: Remove assert include.
+	* include/debug/debug.h: Consolidate __replacement_assert...
+	* include/parallel/base.h: Consolidate __replacement_assert...
+	* include/bits/c++config: ...here.
+	* include/bits/atomic_0.h: Use it.
+	* include/bits/atomic_2.h: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+
+2008-12-13  Benjamin Kosnik  
+
+	* src/atomic.cc: Revert last change.
+	* include/bits/atomic_2.h: Move cassert include to...
+	* include/c_global/cstdatomic: ...here.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+
+2008-12-12  Benjamin Kosnik  
+
+	* src/Makefile.am: Remove -x c++ for atomic build rules.
+	* src/Makefile.in: Regenerate.
+	* src/atomic.cc: Move mutex include before cstdatomic.
+
+2008-12-12  H.J. Lu  
+
+	PR libstdc++/37144
+	* testsuite/util/regression/trait/assoc/type_trait.hpp
+	(regression_test_type_traits): Add const to pair_type_rebind.
+
+2008-12-12  Benjamin Kosnik  
+
+	* src/atomic.cc: Correct guards to match mutex.cc.
+
+2008-12-11  Benjamin Kosnik  
+	    Richard Henderson  
+
+	* include/c_global/cstdatomic: Update to N2798.
+	(atomic): Remove explicit constructors as per DR 845.
+	* include/bits/atomic_0.h: New. Switchable implementation.
+	* include/bits/atomic_2.h: New. Lock-free implementation.
+	* include/c_compatibility/stdatomic.h: Use foward headers.
+	* include/bits/atomicfwd_cxx.h: New.
+	* include/bits/atomicfwd_c.h: New.
+	* src/atomic.cc: Adjust.
+	* acinclude.m4 (GLIBCXX_CHECK_STANDARD_LAYOUT): Remove,
+	unconditionally use default/deleted syntax.
+	(GLIBCXX_ENABLE_ATOMIC_BUILTINS): Check for 2, 8.
+	* include/Makefile.am (bits_headers): Add atomicfwd_c.h,
+	atomicfwd_cxx.h, atomic_0.h, atomic_2.h.
+	* include/Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+	* config/abi/pre/gnu.ver: Adjust exports.
+
+	* testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc: Adjust.
+	* testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc: Same.
+	* testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/explicit_value.cc: Move to..
+	* testsuite/29_atomics/atomic_address/cons/single_value.cc: ...this.
+	* testsuite/29_atomics/atomic_address/cons/copy_neg.cc
+	* testsuite/29_atomics/atomic_integral/cons/single_value.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/default.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/direct_list.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/copy_list.cc: New.
+	* testsuite/29_atomics/atomic_integral/requirements/
+	standard_layout.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/
+	integral_assignment.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/increment.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/decrement.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise.cc: New.
+	* testsuite/29_atomics/atomic_integral/operators/
+	integral_conversion.cc: New.
+	* testsuite/29_atomics/atomic_flag/cons/assign_neg.cc: Adjust.
+	* testsuite/29_atomics/atomic_flag/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/requirements/
+	standard_layout.cc: Same.
+	* testsuite/29_atomics/atomic_flag/
+	atomic_global_fence_compatibility.cc: Kill.
+	* testsuite/29_atomics/headers/cstdatomic/types_std_c++0x.cc: Adjust.
+	* testsuite/29_atomics/headers/cstdatomic/functions_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/cstdatomic/macros.cc: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/macros.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/types.c: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/explicit_value.cc: Move to...
+	* testsuite/29_atomics/atomic/cons/single_value.cc: ...this.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc
+	* testsuite/29_atomics/atomic/cons/direct_list.cc: New.
+	* testsuite/29_atomics/atomic/cons/copy_list.cc: New.
+	* testsuite/29_atomics/atomic/requirements/standard_layout.cc: New.
+	* testsuite/29_atomics/atomic/requirements/base_classes.cc: New.
+	* testsuite/29_atomics/atomic/operators/integral_assignment.cc: New.
+	* testsuite/29_atomics/atomic/operators/integral_conversion.cc: New.
+	* testsuite/util/testsuite_hooks.h (bitmask_operators): Move...
+	* testsuite/util/testsuite_common_types.h: ...here.
+	(atomic_integrals_no_bool): New.
+	(atomic_integrals): New.
+	(has_increment_operators, has_decrement_operators)
+	(direct_list_initializable, single_value_constructible)
+	(standard_layout, has_bitwise_operators, integral_convertable)
+	(integral_assignable): Add.
+
+2008-12-11  Jakub Jelinek  
+
+	PR c++/37582
+	* testsuite/26_numerics/headers/cmath/37582.cc: New.
+
+2008-12-08  Paolo Carlini  
+
+	* include/tr1_impl/cmath: Undef remquof / remquol too; add using
+	declarations.
+	* acinclude.m4 [GLIBCXX_CHECK_C99_TR1]: Check remquof / remquol too.
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: Adjust.
+	* configure: Regenerate.
+
+2008-12-08  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/forward_list.h: Fixed spurious "forward_swap" in doxy.
+
+2008-12-06  Paolo Carlini  
+
+	PR libstdc++/38421
+	* include/tr1/ell_integral.tcc: Avoid __ea, future SPU badname.
+	* doc/xml/manual/appendix_contributing.xml: Add __ea to the list
+	of badnames.
+
+2008-12-05  Tom Tromey  
+
+	* include/tr1_impl/functional (_Mu): Fix typo.
+
+2008-12-05  Paolo Carlini  
+
+	PR libstdc++/38399
+	* include/bits/locale_facets_nonio.tcc (money_get<>::
+	_M_extract(iter_type, iter_type, ios_base&, ios_base::iostate&,
+	string&)): Fix, reject decimal point when frac_digits <= 0.
+	* testsuite/22_locale/money_get/get/char/38399.cc: New.
+	* testsuite/22_locale/money_get/get/wchar_t/38399.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/5.cc: Adjust.
+	* testsuite/22_locale/money_get/get/wchar_t/5.cc: Likewise.
+
+2008-12-05  Paolo Carlini  
+
+	PR libstdc++/38411
+	* testsuite/22_locale/numpunct/members/char/2.cc: Use is_IS instead
+	of fr_FR.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7.cc: Likewise.
+
+2008-12-04  Paolo Carlini  
+
+	PR libstdc++/38368
+	* config/locale/gnu/numeric_members.cc (numpunct::
+	_M_initialize_numpunct, numpunct::_M_initialize_numpunct):
+	Fix for THOUSANDS_SEP == '\0' consistently with "C" locale.
+	* config/locale/gnu/monetary_members.cc (moneypunct::
+	_M_initialize_moneypunct, moneypunct::
+	_M_initialize_moneypunct, moneypunct::
+	_M_initialize_moneypunct, moneypunct::
+	_M_initialize_moneypunct): Fix for __MON_DECIMAL_POINT == '\0' or
+	__MON_THOUSANDS_SEP == '\0' consistently with "C" locale.
+	* testsuite/22_locale/locale/cons/38368.cc: New.
+
+2008-12-02  Paolo Carlini  
+
+	PR libstdc++/38365 (cont)
+	* src/localename.cc (locale::locale(const locale&, const locale&,
+	category)): Revert last changes.
+	(locale::_Impl::_M_replace_categories(const _Impl*, category)):
+	Fix here instead; rework.
+
+2008-12-02  Paolo Carlini  
+
+	PR libstdc++/38365
+	* src/localename.cc (locale::locale(const locale&, const locale&,
+	category)): Fix.
+	* testsuite/22_locale/locale/cons/38365.cc: New.
+
+2008-12-01  Benjamin Kosnik  
+
+	PR libstdc++/38080
+	* include/std/iostream: Correct URL.
+	* include/std/streambuf: Same.
+	* include/std/bitset: Same.
+	* include/std/iosfwd: Same.
+	* include/std/fstream: Same.
+	* include/std/istream: Same.
+	* include/std/ostream: Same.
+	* include/std/sstream: Same.
+	* include/bits/basic_ios.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/stl_relops.h: Same.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Ditto.
+
+2008-11-26  Janis Johnson  
+
+	PR testsuite/28870
+	* testsuite/lib/libstdc++.exp: Include new timeout library files.
+	(libstdc++_init): Define tool_timeout.
+	(dg-test): Override DejaGnu proc.
+	(v3_target_compile): Set timeout value from new proc.
+	(v3_target_compile_as_c): Ditto.
+
+2008-11-24  Paolo Carlini  
+
+	PR libstdc++/38244 (cont, debug bits)
+	* include/debug/bitset (bitset<>::bitset(const char*, char, char)):
+	Remove, do not implement DR 778.
+
+2008-11-24  Paolo Carlini  
+
+	PR libstdc++/38244
+	* include/std/bitset (bitset<>::bitset(const char*, char, char)):
+	Remove, do not implement DR 778.
+	* doc/xml/manual/intro.xml: Remove entry for DR 778.
+	* testsuite/23_containers/bitset/cons/2.cc: Remove.
+	* testsuite/23_containers/bitset/cons/dr396.cc: Tweak.
+	* testsuite/23_containers/bitset/cons/38244.cc: Add.
+
+2008-11-21  Paolo Carlini  
+
+	* testsuite/22_locale/num_put/put/char/38210.cc: Tweak.
+	* testsuite/22_locale/num_put/put/wchar_t/38210.cc: Likewise.
+
+2008-11-21  Paolo Carlini  
+
+	PR libstdc++/38210
+	* include/bits/locale_facets.tcc (num_put<>::do_put(iter_type,
+	ios_base&, char_type, const void*)): Fix.
+	* testsuite/22_locale/num_put/put/char/38210.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/38210.cc: Likewise.
+
+2008-11-20  Paolo Carlini  
+
+	PR libstdc++/38196
+	* include/bits/locale_facets.tcc (num_put<>::do_put(iter_type,
+	ios_base&, char_type, bool)): Fix.
+	* testsuite/22_locale/num_put/put/char/38196.cc: New.
+	* testsuite/22_locale/num_put/put/wchar_t/38196.cc: Likewise.
+
+2008-11-18  Paolo Carlini  
+
+	* include/tr1_impl/cinttypes: Remove redundant pragma system_header.
+	* include/tr1_impl/cfenv: Likewise.
+	* include/tr1_impl/cstdint: Likewise.
+
+2008-11-13  Paolo Carlini  
+
+	PR libstdc++/38000
+	* include/c_global/csignal: Do not use include_next.
+	* include/c_global/cstdlib: Likewise.
+	* include/c_global/cstdio: Likewise.
+	* include/c_global/cstdarg: Likewise.
+	* include/c_global/cctype: Likewise.
+	* include/c_global/cerrno: Likewise.
+	* include/c_global/cmath: Likewise.
+	* include/c_global/clocale: Likewise.
+	* include/c_global/climits: Likewise.
+	* include/c_global/cassert: Likewise.
+	* include/c_global/csetjmp: Likewise.
+	* include/c_global/cwchar: Likewise.
+	* include/c_global/cfloat: Likewise.
+	* include/c_global/cstdbool: Likewise.
+	* include/c_global/cstring: Likewise.
+	* include/c_global/cstddef: Likewise.
+	* include/c_global/cwctype: Likewise.
+	* include/tr1/cstdbool: Likewise.
+	* include/tr1_impl/cinttypes: Do not include .
+	* include/c_global/cinttypes: Do it here.
+	* include/tr1/cinttypes: Likewise.
+	* include/tr1_impl/cfenv: Do not include .
+	* include/c_global/cfenv: Do it here.
+	* include/tr1/cfenv: Likewise.
+	* include/tr1_impl/cstdint: Do not include .
+	* include/c_global/cstdint: Do it here.
+	* include/tr1/cstdint: Likewise.
+	* include/c_compatibility/fenv.h: Include .
+	* include/c_compatibility/stdint.h: Include .
+	* include/c_compatibility/inttypes.h: Include .
+
+	* include/c_compatibility/math.h: Minor tweak, add comment.
+
+2008-11-12  Steve Ellcey  
+
+	* configure.ac: Move call to GCC_CHECK_UNWIND_GETIPINFO.
+	* configure: Regenerate to get new GCC_CHECK_UNWIND_GETIPINFO.
+
+2008-11-12  Paolo Carlini  
+
+	PR libstdc++/37986 (cont)
+	* include/tr1_impl/random (struct _Adaptor): Use only remove_reference
+	on _Engine.
+	(struct _Adaptor<_Engine*, _Distribution>): Add.
+	* testsuite/tr1/5_numerical_facilities/random/variate_generator/
+	37986.cc: Extend.
+
+2008-11-11  Paolo Carlini  
+
+	PR libstdc++/37986
+	* include/tr1_impl/random (struct _Adaptor): Use remove_pointer
+	and remove_reference on _Engine.
+	* testsuite/tr1/5_numerical_facilities/random/variate_generator/
+	37986.cc: New.
+
+2008-11-11  Paolo Carlini  
+
+	* testsuite/ext/ext_pointer/1_neg.cc: Adjust dg-error line numbers.
+
+2008-11-11  Paolo Carlini  
+
+	* testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc: Fix.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/element.cc:
+	Likewise.
+
+2008-11-11  Bob Walters  
+
+	* include/bits/forward_list.h: Support non-standard pointer types
+	(_Fwd_list_node_base): Add _Alloc template parameter.
+	(_Fwd_list_node<>): Likewise.
+	(_Fwd_list_iterator<>): Likewise.
+	(_Fwd_list_const_iterator<>): Likewise.
+	(_Fwd_list_node_base::_M_next, _M_transfer_after, _M_reverse_after):
+	Use _Alloc<_Tp>::pointer.
+	(_Fwd_list_iterator<>::_M_node): Use _Node_base::_Pointer.
+	(_Fwd_list_base<>::_M_get_node, _M_create_node, _M_create_node,
+	_M_insert_after, _M_put_node, _M_erase_after): Likewise.
+	(_Fwd_list_const_iterator<>::_M_node): use _Node_base::_Const_pointer.
+	(forward_list<>): Use __static_pointer_cast in place of static_cast,
+	and __const_pointer_cast in place of const_cast.
+	* include/bits/forward_list.tcc
+	(_Fwd_list_node<>::_M_sort_after): Using _Pointer typedefs in place
+	of standard pointers, __static_pointer_cast in place of static_cast.
+	(_Fwd_list_base<>::_Fwd_list_base, _M_insert_after, _M_erase_after):
+	Likewise.
+	(forward_list<>::_M_initialize_dispatch, _M_fill_initialize,
+	splice_after, remove, remove_if, merge): Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/1.cc: New.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/6.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/7.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/
+	explicit_instantiation/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/
+	explicit_instantiation/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/1.cc: Likewise.
+
+2008-11-11  Paolo Carlini  
+
+	* include/ext/extptr_allocator.h: Minor tweaks.
+	* include/ext/pointer.h: Likewise.
+	* include/ext/cast.h: Likewise.
+
+2008-11-10  Paolo Carlini  
+
+	PR libstdc++/38067
+	* config/locale/gnu/monetary_members.cc (moneypunct<>::
+	_M_initialize_moneypunct(__c_locale, const char*)): Use correct vector
+	delete for __wcs_ps and __wcs_ns.
+
+2008-11-07  Bob Walters  
+
+	* include/ext/pointer.h: New, add experimental support for non-standard
+	pointer types in containers via the allocator::pointer typedef.
+	(Currently only supported/working with std::vector)
+	* include/ext/cast.h: New, add overload-able pointer casting functions
+	for use in containers supporting non-standard pointer types.
+	* include/ext/extptr_allocator.h: New, add _ExtPtr_allocator.
+	* include/Makefile.am: Update.
+	* include/precompiled/extc++.h: Likewise.
+	* include/Makefile.in: Regenerate.
+	* testsuite/ext/ext_pointer/1.cc: New.
+	* testsuite/ext/ext_pointer/1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/citerators.cc: New.
+	* testsuite/23_containers/vector/ext_pointer/data_access.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/resize.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/types/1.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/element.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
+	1.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
+	3.cc: Likewise.
+
+2008-11-05  Jonathan Wakely  
+
+	PR libstdc++/38017
+	Revert:
+	* include/tr1_impl/functional (result_of,reference_wrapper): Update
+	to use C++0x features.
+	* testsuite/20_util/function_objects/return_types/result_of.cc: New.
+	* testsuite/20_util/function_objects/return_types/result_of_neg.cc:
+	New.
+	* testsuite/20_util/function_objects/return_types/result_of_ref.cc:
+	New.
+	* testsuite/20_util/reference_wrapper/24803.cc: Uncomment FIXMEs.
+
+2008-11-05  Jonathan Wakely  
+
+	PR libstdc++/24803
+	PR libstdc++/37351
+	* include/tr1_impl/functional (result_of,reference_wrapper): Update
+	to use C++0x features.
+	* testsuite/20_util/function_objects/return_types/result_of.cc: New.
+	* testsuite/20_util/function_objects/return_types/result_of_neg.cc:
+	New.
+	* testsuite/20_util/function_objects/return_types/result_of_ref.cc:
+	New.
+	* testsuite/20_util/reference_wrapper/24803.cc: Uncomment FIXMEs.
+
+2008-11-03  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, bool&): Tidy.
+	* testsuite/22_locale/num_get/get/char/37958.cc: Extend.
+	* testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise.
+
+2008-11-01  Paolo Carlini  
+
+	PR libstdc++/37958 (cont again)
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, bool&): Fix again.
+	* testsuite/22_locale/num_get/get/char/37958.cc: Extend.
+	* testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise.
+
+2008-11-01  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (num_get<>::do_get(, long&),
+	num_get<>::do_get(, unsigned short&),
+	num_get<>::do_get(, unsigned int&),
+	num_get<>::do_get(, unsigned long&),
+	num_get<>::do_get(, long long&),
+	num_get<>::do_get(, unsigned long long&),
+	num_put<>::do_put(, long), num_put<>::do_put(, unsigned long),
+	num_put<>::do_put(, long long),
+	num_put<>::do_put(, unsigned long long)): Move inline...
+	* include/bits/locale_facets.h: ... here.
+
+2008-11-01  Paolo Carlini  
+
+	PR libstdc++/37958 (cont)
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, bool&): Fix again.
+
+2008-11-01  Jonathan Wakely  
+
+	* include/bits/shared_ptr.h: Update comparisons to match WP.
+	(_Sp_counted_ptr): Make copy and assignment members deleted.
+	(_Sp_counted_deleter): Remove private copy and assignment members.
+	(__shared_count::_M_less,__weak_count::_M_less,operator<): Replace
+	friend operator< with overloaded _M_less member functions to allow
+	comparison with either shared_count or weak_count.
+	(__shared_ptr::_M_less,__weak_ptr::_M_less): Replace with...
+	(__shared_ptr::owner_before,__weak_ptr::owner_before): New overloads
+	for ownership-based ordering.
+	(operator<(__shared_ptr,__shared_ptr)): Compare stored pointers,
+	make non-friend.
+	(operator==(__shared_ptr,__shared_ptr)): Make non-friend.
+	(operator!=(__shared_ptr,__shared_ptr)): Likewise.
+	(less<__shared_ptr<>>,less>,_Sp_less): Explicitly call
+	pointer specialization.
+	(__weak_ptr::operator<,weak_ptr::operator<=,weak_ptr::operator>,
+	weak_ptr::operator>=): Remove operator< and delete all comparisons.
+	(_Sp_owner_less,owner_less): Predicate for ownership-based ordering.
+	(operator<(shared_ptr,shared_ptr): Overload for derived shared_ptr.
+	(operator==(shared_ptr,shared_ptr): Likewise.
+	(operator!=(shared_ptr,shared_ptr): Likewise.
+	(swap(shared_ptr,shared_ptr)): Fix parameter types.
+	(swap(weak_ptr,weak_ptr)): Add missing overload.
+	* testsuite/20_util/owner_less/cmp.cc: New.
+	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Test other ops.
+	* testsuite/20_util/shared_ptr/comparison/less.cc: New.
+	* testsuite/20_util/shared_ptr/observers/owner_before.cc: New.
+	* testsuite/20_util/weak_ptr/observers/owner_before.cc: New.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: New.
+
+2008-10-31  Paolo Carlini  
+
+	PR libstdc++/37958
+	* include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, bool&): Fix.
+	* testsuite/22_locale/num_get/get/char/37958.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise.
+
+2008-10-27  Paolo Carlini  
+
+	PR libstdc++/37919
+	Revert:
+	2008-10-18  Douglas Gregor  
+
+	* include/bits/stl_pair.h (__may_be_null_pointer_init): New.
+	(pair::pair): Eliminate the redundant pair(U1&&, U2&&) constructor.
+	Add lvalue pair constructor to handle non-const pair lvalues.
+	Remove the old variadic constructor, and instead provide several
+	variadic constructors that avoid failing when attempting to
+	initialize a pointer from a null pointer constant.
+	* testsuite/20_util/pair/moveable.cc (test3): Add new tests with
+	initialization of pointers from the null pointer constant.
+
+2008-10-27  Paolo Carlini  
+
+	PR libstdc++/37522
+	* config/os/mingw32/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+	* include/bits/basic_string.h: Guard string conversions with
+	!defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) too.
+	* testsuite/lib/libstdc++.exp (check_v3_target_string_conversions):
+	New.
+	* testsuite/lib/dg-options.exp (dg-require-string-conversions): New.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
+	Use the latter.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/
+	stoull.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/
+	to_string.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
+	Likewise.
+
+2008-10-24  Paolo Carlini  
+
+	* config/os/generic/error_constants.h (enum errc): Remove
+	no_posix_equivalent.
+	* config/os/mingw32/error_constants.h (enum errc): Likewise.
+	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
+	Adjust.
+
+2008-10-24  Jakub Jelinek  
+
+	* testsuite/Makefile.am (AUTOMAKE_OPTIONS): Remove dejagnu.
+	(RUNTESTDEFAULTFLAGS, EXPECT, check_DEJAGNU_normal_targets): New
+	variables.
+	(%/site.exp, check-DEJAGNU%): New targets.
+	(check-am): Run $(MAKE) check-DEJAGNU.
+	* testsuite/Makefile.in: Regenerated.
+
+2008-10-23  Chris Fairles  
+
+	* config/os/generic/error_constants.h (errc): Use long type.
+	* config/os/mingw32/error_constants.h (errc): Likewise.
+
+2008-10-22  Chris Fairles  
+
+	* include/std/system_error (is_error_code_enum): Specialize for errc.
+	(error_category::error_category): Defaulted and protected.
+	(error_category::~error_category): New, virtual.
+	(error_category::error_category(const error_category&),
+	error_category::operator=(const error_category&)): Deleted.
+	(get_system_category, get_posix_category): Remove (DR 890).
+	(system_category): External linkage (DR 890).
+	(posix_category): Remove.
+	(generic_category): Add. External linkage (DR 890).
+	(error_code::error_code<>(_ErrorCodeEnum)): Use generic_category.
+	(error_code::clear, error_code::operator=<>(_ErrorCodeEnum)): Forward to
+	error_code::assign, use generic_category.
+	(error_condition::error_condition,
+	error_condition::error_condition<>(_ErrorConditionEnum)): Use
+	generic_category.
+	(error_condition::clear,
+	error_condition::operator=<>(_ErrorConditionEnum)): Forward to
+	error_code::assign, use generic_category.
+	(make_error_code, make_error_condition): Define in namespace std.
+	* include/std/mutex (unique_lock<>::lock, unique_lock<>::try_lock,
+	unique_lock<>::try_lock_until<>(duration),
+	unique_lock<>::try_lock_for<>(duration)): Replace posix_error with errc.
+	* src/system_error.cc (system_error_category, generic_error_category):
+	New.
+	(gnu_error_category): Remove.
+	(get_system_category, get_posix_category): Remove (DR 890).
+	(system_category, generic_category): Define.
+	* src/functexcept.cc (__throw_system_error): Use generic_category.
+	* config/abi/pre/gnu.ver: Export system_category and generic_category,
+	remove get_system_category and get_generic_category (DR 890).
+	* config/os/generic/error_constants.h (posix_errno): Rename to errc, use
+	enum class type. Fix spelling.
+	* config/os/mingw32/error_constants.h (posix_errno): Likewise.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Use errc and
+	generic_category.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Use errc.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Update
+	dg-error line numbers.
+	* testsuite/19_diagnostics/error_condition/cons/1.cc: Use
+	generic_category.
+	* testsuite/19_diagnostics/error_condition/operators/bool.cc: Use errc.
+	* testsuite/19_diagnostics/error_condition/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: New.
+	* testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc:
+	Remove using tests since errc is not a namespace.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Use errc.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
+	Likewise.
+	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
+
+2008-10-20  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (_Hash_node<>::_Hash_node<>
+	(_Args&&...)): Add in C++0x mode.
+	* include/tr1_impl/hashtable (_Hashtable<>::_M_allocate_node,
+	_Hashtable<>::_M_deallocate_node): Use _M_get_Node_allocator in
+	C++0x mode.
+
+	* include/tr1_impl/hashtable (_Hashtable<>::max_size): Use
+	Node_allocator for improved accuracy.
+	* testsuite/tr1/6_containers/unordered_multimap/capacity/
+	29134-multimap.cc: Adjust.
+	* testsuite/tr1/6_containers/unordered_multimap/capacity/
+	29134-map.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/capacity/
+	29134-multiset.cc: Adjust.
+	* testsuite/tr1/6_containers/unordered_multimap/capacity/
+	29134-set.cc: Likewise.
+
+2008-10-19  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree_node<>::_Rb_tree_node<>
+	(_Args&&...)): Add in C++0x mode.
+	(_Rb_tree<>::_M_create_node<>(_Args&&...)): Add in C++0x mode,
+	use _M_get_Node_allocator.
+	(_Rb_tree<>::_M_destroy_node(_Link_type): Use _M_get_Node_allocator
+	in C++0x mode.
+	* testsuite/23_containers/set/operators/1_neg.cc: Adjust dg-error
+	line numbers.
+	* testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+
+2008-10-18  Douglas Gregor  
+
+	* include/bits/stl_pair.h (__may_be_null_pointer_init): New.
+	(pair::pair): Eliminate the redundant pair(U1&&, U2&&) constructor.
+	Add lvalue pair constructor to handle non-const pair lvalues.
+	Remove the old variadic constructor, and instead provide several
+	variadic constructors that avoid failing when attempting to
+	initialize a pointer from a null pointer constant.
+	* testsuite/20_util/pair/moveable.cc (test3): Add new tests with
+	initialization of pointers from the null pointer constant.
+
+2008-10-17  Paolo Carlini  
+
+	* include/bits/forward_list.tcc (forward_list<>::
+	_M_initialize_dispatch(_InputIterator, _InputIterator, __false_type)):
+	Simplify.
+
+2008-10-17  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::
+	forward_list(size_type)): Tweak, use _Base default constructor.
+
+2008-10-17  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::insert_after): Minor
+	cosmetic changes.
+
+2008-10-16  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/forward_list.h: Factor list construction to dispatch
+	routines.
+	* include/bits/forward_list.tcc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/2.cc:
+
+2008-10-16  Paolo Carlini  
+
+	* include/bits/forward_list.tcc (operator==): Use auto.
+
+2008-10-16  Paolo Carlini  
+
+	* include/bits/forward_list.h (_Fwd_list_base<>::_M_insert_after):
+	Move out of line, tweak to return _Fwd_list_node_base*.
+	(forward_list<>::insert_after(const_iterator, const _Tp&),
+	forward_list<>::insert_after(const_iterator, _Tp&&)): Use it.
+	* include/bits/forward_list.tcc (_Fwd_list_base<>::_M_insert_after):
+	Define.
+
+	* include/bits/forward_list.h (forward_list<>): Consistently qualify
+	calls of base class functions with this->.
+	* include/bits/forward_list.tcc (forward_list<>): Likewise.
+
+	* include/bits/forward_list.h: Move some functions out of line...
+	* include/bits/forward_list.tcc: ... here.
+
+	* include/bits/forward_list.h (forward_list<>::resize(size_type)): Fix.
+
+2008-10-15  Paolo Carlini  
+
+	* include/bits/forward_list.h: Remove pointless const qualifiers in
+	const_casts.
+	* include/bits/forward_list.tcc: Likewise.
+
+	* include/bits/forward_list.h (forward_list<>::pointer,
+	const_pointer, reference, const_reference): Fix, use _Tp_alloc_type.
+	* testsuite/23_containers/forward_list/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/forward_list/requirements/
+	explicit_instantiation/1.cc: Likewise.
+
+2008-10-15  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::max_size): Use
+	Node_allocator; minor cosmetic changes.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Adjust.
+
+2008-10-15  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/std/forward_list: New.
+	* include/bits/forward_list.h: Likewise.
+	* include/bits/forward_list.tcc: Likewise.
+	* include/precompiled/stdc++.h: Modified to include forward_list.
+	* include/Makefile.am: Add forward_list, forward_list.h, and
+	forward_list.tcc.
+	* include/Makefile.in: Regenerate.
+	* testsuite/23_containers/forward_list/modifiers/1.cc: New.
+	* testsuite/23_containers/forward_list/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/6.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/7.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/8.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/9.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/6.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/7.cc: Likewise.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/comparable.cc: Likewise.
+	* testsuite/23_containers/forward_list/moveable.cc: Likewise.
+	* testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Update.
+	* testsuite/17_intro/headers/c++200x/all: Likewise.
+
+2008-10-14  Paolo Carlini  
+
+	* include/bits/stl_list.h (_List_node<>::_List_node<>(_Args&&...)):
+	Add in C++0x mode.
+	(list<>::_M_create_node<>(_Args&&...)): Use _M_get_Node_allocator.
+	(list<>::_M_erase(iterator): Likewise, in C++0x mode.
+	* include/bits/list.tcc (_List_base<>::_M_clear): Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2008-10-14  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::max_size): Use Node_allocator
+	for improved accuracy.
+	* include/bits/stl_list.h (list<>::max_size): Likewise.
+	* testsuite/23_containers/multimap/capacity/29134.cc: Adjust.
+	* testsuite/23_containers/set/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/list/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/map/capacity/29134.cc: Likewise.
+
+2008-10-10  Paolo Carlini  
+
+	* testsuite/20_util/reference_wrapper/24803.cc: Avoid uninitialized
+	warnings.
+
+2008-10-10  Paolo Carlini  
+
+	* include/std/system_error (native_category): Remove.
+	(posix_category): Add.
+	(error_code::error_code(_ErrorCodeEnum, typename enable_if<>:type*):
+	Fix _M_cat initialization.
+	(error_code::operator=(_ErrorCodeEnum)): Assign _M_cat too.
+	(error_condition::_M_cat, error_condtion::operator=
+	(_ErrorConditionEnum)): Implement resolution of DR 804.
+	(error_condition::error_condition(_ErrorConditionEnum, typename
+	enable_if<>:type*): Fix.
+	(error_condition::clear, error_condition::assign): Implement.
+	(operator==, operator!=): Fix uglification of parameters.
+	(make_error_code, make_error_condition): Define in namespace
+	posix_error.
+	(operator<<(basic_ostream<>&, const error_code&)): Define here.
+	* include/std/ostream (operator<<(basic_ostream<>&,
+	const error_code&)): Do not define here.
+	* testsuite/19_diagnostics/error_condition/cons/1.cc: New.
+	* testsuite/19_diagnostics/error_condition/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/bool_neg.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Tweak.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/30_threads/unique_lock/locking/2.cc: Tweak.
+
+	* testsuite/util/testsuite_error.h: Minor tweaks.
+	* testsuite/util/testsuite_hooks.cc: Avoid uninitialized warning.
+
+2008-10-10  Chris Fairles  
+
+	* testsuite/20_util/duration/cons/1.cc: Remove invalid check of
+	uninitialized duration.
+
+2008-10-08  Bob Walters  
+
+	* include/bits/stl_vector.h (_Vector_base<>::_Vector_impl::_M_start,
+	_M_finish, _M_end_of_storage, _Vector_base<>::_M_allocate,
+	_M_deallocate): Use _Tp_alloc_type::pointer.
+
+2008-10-07  Jason Merrill  
+
+	PR libstdc++/37761
+	* testsuite/abi/demangle/abi_examples/20.cc: Adjust expected spacing.
+	* testsuite/abi/demangle/abi_text/02.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-16.cc: Likewise.
+
+2008-10-07  Paolo Carlini  
+
+	* include/bits/stl_iterator.h (operator-(const reverse_iterator<>&,
+	const reverse_iterator<>&), operator-(const __normal_iterator<>&,
+	const __normal_iterator<>&), operator-(const move_iterator<>&,
+	const move_iterator<>&)): Use the auto -> return type syntax,
+	implement DR 685.
+
+2008-10-06  Jason Merrill  
+
+	* config/abi/pre/gnu.ver: Update char16/32_t manglings.
+
+2008-10-05  Paolo Carlini  
+
+	* testsuite/20_util/reference_wrapper/invoke.cc: New.
+	* testsuite/20_util/reference_wrapper/24803.cc: Likewise.
+	* testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
+
+2008-10-01  Andrew Pinski  
+
+	* config/locale/generic/c_locale.cc (__convert_to_v): Fix
+	!__FLT_HAS_INFINITY__ case.
+
+2008-09-30  Chris Fairles  
+
+	* include/std/tuple (tuple<>::swap): Implement swap for tuple as per
+	DR 522 [Ready].
+	* testsuite/20_util/tuple/swap.cc: New.
+
+2008-09-30  Paolo Carlini  
+
+	PR libstdc++/30085 (again)
+	* include/debug/unordered_map (unordered_map<>, unordered_multimap<>):
+	Do not derive from _Safe_association, derive from _GLIBCXX_STD_D::
+	unordered_map / unordered_multimap; add missing member functions.
+	* include/debug/unordered_set (unordered_set<>, unordered_multiset<>):
+	Likewise for _GLIBCXX_STD_D::unordered_set / unordered_multiset.
+	* include/debug/safe_association.h: Remove.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+	* testsuite/23_containers/unordered_multimap/init-list.cc: Remove
+	xfail.
+
+2008-09-28  Paolo Carlini  
+
+	* include/bits/unique_ptr.h (unique_ptr<_Tp[]>::template
+	void reset(U)): Add as deleted function, per DR 821 [Ready].
+	* include/bits/unique_ptr.h: Prefer everywhere deleted to private
+	member function declarations; minor formatting tweaks.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: New.
+	* testsuite/20_util/unique_ptr/assign/assign.cc: Adjust DejaGNU
+	directives.
+
+2008-09-28  Chris Fairles  
+
+	* include/std/mutex (try_lock): Implement generic try_lock.
+	* testsuite/30_threads/try_lock/1.cc: New.
+	* testsuite/30_threads/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/try_lock/3.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise.
+
+2008-09-26  Peter O'Gorman  
+	    Steve Ellcey  
+
+	* configure: Regenerate for new libtool.
+	* aclocal.m4: Ditto.
+	* Makefile.in: Ditto.
+	* src/Makefile.in: Ditto.
+	* doc/Makefile.in: Ditto.
+	* po/Makefile.in: Ditto.
+	* libmath/Makefile.in: Ditto.
+	* include/Makefile.in: Ditto.
+	* libsupc++/Makefile.in: Ditto.
+	* testsuite/Makefile.in: Ditto.
+
+2008-09-24  Paolo Carlini  
+
+	* include/std/bitset: Adjust comment to reflect DR 853.
+	* include/debug/bitset: Likewise.
+	* doc/xml/manual/intro.xml: Add an entry for DR 853.
+
+2008-09-23  Paolo Carlini  
+
+	Implement DR 396 [Ready].
+	* include/std/bitset (bitset<>::bitset(const std::basic_string<>&,
+	size_t, size_t, _CharT, _CharT), bitset<>::bitset(const char*,
+	char, char), bitset<>::to_string(_CharT, _CharT),
+	bitset<>::_M_copy_from_string(const std::basic_string<>&, size_t,
+	size_t, _CharT, _CharT), bitset<>::_M_copy_to_string
+	(std::basic_string<>&, _CharT, _CharT), bitset<>::_M_copy_from_ptr(
+	const _CharT*, size_t, size_t, size_t, _CharT, _CharT)): Add.
+	(operator>>(std::basic_istream<>&, bitset<_Nb>&), operator<<(
+	std::basic_ostream<>&, const bitset<_Nb>&)): Adjust.
+	* include/debug/bitset (bitset<>::bitset(const std::basic_string<>&,
+	size_t, size_t, _CharT, _CharT), bitset<>::bitset(const char*,
+	char, char), bitset<>::to_string(_CharT, _CharT)): Add.
+	* doc/xml/manual/intro.xml: Add an entry for DR 396.
+	* testsuite/23_containers/bitset/cons/dr396.cc: Add.
+	* testsuite/23_containers/bitset/to_string/dr396.cc: Likewise.
+
+2008-09-23  Chris Fairles  
+
+	* testsuite/25_algorithms/min/37547.cc: Return void to avoid warnings.
+	* testsuite/25_algorithms/max/37547.cc: Likewise.
+	* testsuite/25_algorithms/minmax/37547.cc: Likewise.
+
+2008-09-23  Chris Fairles  
+
+	* include/std/chrono: If _GLIBCXX_USE_MONOTONIC_CLOCK is defined, don't
+	typedef monotonic_clock to system_clock and instead declare new class.
+	* src/chrono.cc: Conditionally define monotonic_clock::now().
+	* include/std/condition_variable (wait_until): Throw exception if
+	__gthread_cond_timedwait returns with error other than timed_out. Use
+	system_clock as known clock type (__clock_t) and add overloads for known
+	and unknown clocks. In the unknown case, sync to the known clock.
+	Implement overload taking a predicate.
+	(wait_for): Implement overload taking a predicate.
+	* config/abi/pre/gnu.ver: Add exports for monotonic_clock.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Modify
+	line numbers.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable/member/1.cc: New.
+	* testsuite/30_threads/condition_variable/member/2.cc: Likewise.
+
+2008-09-23  Paolo Carlini  
+
+	PR libstdc++/37624
+	* testsuite/22_locale/num_get/get/char/10.cc: Skip long double case
+	when strtold is not available.
+	* testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
+
+2008-09-23  Benjamin Kosnik  
+
+	PR libstdc++/37391 continued.
+	* doc/html/ext/pb_ds/assoc_examples.html: Don't use base tag,
+	specify full path for source file links.
+	* doc/html/ext/pb_ds/pq_examples.html: Same.
+
+2008-09-23  Paolo Carlini  
+
+	* include/bits/locale_facets.tcc (__pad<>::_S_pad): Don't use const
+	by value parameters.
+	* include/bits/locale_facets.h (__pad<>::_S_pad): Likewise.
+
+2008-09-22  Paolo Carlini  
+
+	PR libstdc++/32422, DR 23 [Ready in R60]
+	* config/locale/gnu/c_locale.cc (__convert_to_v(const char*, float&,
+	ios_base::iostate&, const __c_locale&), __convert_to_v(const char*,
+	double&, ios_base::iostate&, const __c_locale&), __convert_to_v(const
+	char*, long double&, ios_base::iostate&, const __c_locale&)): Implement
+	DR 23 and deal correctly with broken exponents.
+	* config/locale/generic/c_locale.cc (__convert_to_v(const char*,
+	float&, ios_base::iostate&, const __c_locale&), __convert_to_v(const
+	char*, double&, ios_base::iostate&, const __c_locale&),
+	__convert_to_v(const char*, long double&, ios_base::iostate&, const
+	__c_locale&)): Likewise.
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int(_InIter,
+	_InIter, ios_base&, ios_base::iostate&, _ValueT&)): Likewise.
+	(num_get<>::_M_extract_float(_InIter, _InIter, ios_base&,
+	ios_base::iostate&, string&): Change grouping check to set instead of
+	OR failbit; do not check for eofbit here...
+	(num_get<>::do_get(iter_type, iter_type, ios_base&,
+	ios_base::iostate&, float&), num_get<>::do_get(iter_type, iter_type,
+	ios_base&, ios_base::iostate&, double&), num_get<>::do_get(iter_type,
+	iter_type, ios_base&, ios_base::iostate&, long double&),
+	num_get<>::__do_get(iter_type, iter_type, ios_base&,
+	ios_base::iostate&, double&)): ... do it here instead.
+	(num_get<>::do_get(iter_type, iter_type, ios_base&,
+	ios_base::iostate&, bool&)): Implement DR 23.
+	(num_get<>::do_get(iter_type, iter_type, ios_base&,
+	ios_base::iostate&, void*&)): Adjust.
+	* doc/xml/manual/intro.xml: Add and entry for DR 23.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc:
+	Adjust.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+	Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/15.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/16.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/10.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/15.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/16.cc: Likewise.
+
+2008-09-22  Benjamin Kosnik  
+
+	PR libstdc++/37391
+	* doc/html/ext/pb_ds/*.html: Fix external links.
+
+2008-09-22  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Define _GLIBCXX_HAS_GTHREADS for mutex,
+	condition_variable, and thread output.
+
+2008-09-22  Paolo Carlini  
+
+	* doc/html/ext/lwg-closed.html: Update to Revision R59.
+	* doc/html/ext/lwg-active.html: Likewise.
+	* doc/html/ext/lwg-defects.html: Likewise.
+	* doc/xml/manual/intro.xml: Adjust.
+
+2008-09-21  Paolo Carlini  
+
+	* include/bits/stl_algo.h (minmax(initializer_list<>): Use make_pair,
+	consistently with the other overload for initializer_list.
+
+2008-09-19  Johannes Singler  
+
+	PR libstdc++/37470
+	* include/parallel/base.h: Rename log2 to __log2.
+	  (__log2) Avoid infinite loop for n <= 0, return 0.
+	* include/parallel/losertree.h: Rename log2 to __log2.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+
+2008-09-18  Paolo Carlini  
+
+	* include/bits/shared_ptr.h (__shared_count<>::
+	__shared_count(_Ptr, _Deleter), __shared_count<>::
+	__shared_count(_Ptr, _Deleter, _Alloc), __shared_count<>::
+	__shared_count(_Sp_make_shared_tag, _Tp*, _Alloc, _Args&&...)):
+	Qualify new with ::.
+
+2008-09-17  Paolo Carlini  
+
+	PR libstdc++/37547
+	* include/bits/stl_algo.h (min(initializer_list<>),
+	min(initializer_list<>, Compare), max(initializer_list<>),
+	max(initializer_list<>, Compare), minmax(initializer_list<>),
+	minmax(initializer_list<>, Compare)): Fix return type.
+	* include/bits/algorithmfwd.h: Adjust.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/
+	3.cc: Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/max/37547.cc: New.
+	* testsuite/25_algorithms/min/37547.cc: Likewise.
+	* testsuite/25_algorithms/minmax/37547.cc: Likewise.
+
+2008-09-16  Chris Fairles  
+
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc:
+	New.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/min/3.cc: Likewise.
+	* testsuite/25_algorithms/min/4.cc: Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/max/3.cc: Likewise.
+	* testsuite/25_algorithms/max/4.cc: Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/
+	3.cc: Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/
+	pod2.cc: Likewise.
+	* testsuite/25_algorithms/minmax/2.cc: Likewise.
+	* testsuite/25_algorithms/minmax/3.cc: Likewise.
+
+2008-09-16  Paolo Carlini  
+
+	* include/bits/stl_algo.h (min(initializer_list<>),
+	min(initializer_list<>, Compare), max(initializer_list<>),
+	max(initializer_list<>, Compare), minmax(initializer_list<>),
+	minmax(initializer_list<>, Compare)): Add in C++0x mode.
+	* include/bits/algorithmfwd.h: Add.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Likewise.
+
+2008-09-13  Chris Fairles  
+
+	* testsuite/30_threads/thread/algorithm/1.cc: Join thread before
+	program exits.
+	* testsuite/30_threads/thread/algorithm/2.cc: Likewise.
+	* testsuite/30_threads/thread/this_thread/3.cc: Define test variable.
+	* testsuite/30_threads/thread/this_thread/4.cc: Likewise.
+
+2008-09-12  Chris Fairles  
+	    Benjamin Kosnik  
+
+	* include/std/thread: New.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Regenerate.
+	* src/thread.cc: New.
+	* src/Makefile.am: Update.
+	* src/Makefile.in: Regenerate.
+	* acinclude.m4: Add check for nanosleep.
+	* configure.ac: Call it.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+	* config/abi/pre/gnu.ver: Add exports.
+	* doc/doxygen/user.cfg.in: Add thread header.
+	* testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add.
+	* testsuite/lib/dg-options.exp (dg-require-nanosleep): Add.
+	* testsuite/30_threads/thread/cons/1.cc: New.
+	* testsuite/30_threads/thread/cons/2.cc: Likewise.
+	* testsuite/30_threads/thread/cons/3.cc: Likewise.
+	* testsuite/30_threads/thread/cons/4.cc: Likewise.
+	* testsuite/30_threads/thread/algorithm/1.cc: Likewise.
+	* testsuite/30_threads/thread/algorithm/2.cc: Likewise.
+	* testsuite/30_threads/thread/member/1.cc: Likewise.
+	* testsuite/30_threads/thread/member/2.cc: Likewise.
+	* testsuite/30_threads/thread/member/3.cc: Likewise.
+	* testsuite/30_threads/thread/this_thread/1.cc: Likewise.
+	* testsuite/30_threads/thread/this_thread/2.cc: Likewise.
+	* testsuite/30_threads/thread/this_thread/3.cc: Likewise.
+	* testsuite/30_threads/thread/this_thread/4.cc: Likewise.
+	* testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
+	* testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
+	* testsuite/17_intro/headers/c++200x/all.cc: Add thread.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc:
+	Add thread, condition_variable and mutex.
+
+2008-09-10  Paolo Carlini  
+
+	* src/ctype.cc (use_facet >, use_facet):
+	Remove specializations.
+	* src/locale-inst.cc (use_facet >): Instantiate.
+	* include/bits/locale_facets.tcc (use_facet >,
+	use_facet): Declare as extern template.
+	* include/bits/locale_facets.h (use_facet >,
+	use_facet): Do not declare as specializations.
+
+2008-09-10  Paolo Carlini  
+
+	* config/locale/darwin/ctype_members.cc (ctype::_M_narrow_init,
+	ctype::_M_widen_init): Don't define here.
+	* config/locale/gnu/ctype_members.cc: Likewise.
+	* config/locale/generic/ctype_members.cc: Likewise.
+	* src/ctype.cc: Define here.
+
+2008-09-10  Paolo Carlini  
+
+	PR libstdc++/37455
+	* include/bits/locale_facets.h (ctype::_M_narrow_init,
+	ctype::_M_widen_init): Don't define inline.
+	* config/locale/darwin/ctype_members.cc: ... define here.
+	* config/locale/gnu/ctype_members.cc: ... likewise.
+	* config/locale/generic/ctype_members.cc: ... likewise.
+	* config/abi/pre/gnu.ver: Export.
+
+2008-09-09  Benjamin Kosnik  
+
+	* doc/xml/manual/abi.xml: Update for new releases.
+	* doc/doxygen/user.cfg.in: Include C compatibility headers.
+	* doc/html/*: Regenerate.
+
+2008-09-09  Paolo Carlini  
+
+	* include/tr1_impl/cinttypes: Restore __STDC_FORMAT_MACROS after
+	inclusion of .
+	* include/tr1_impl/cstdint: Likewise for __STDC_LIMIT_MACROS and
+	__STDC_CONSTANT_MACROS after .
+	* include/bits/postypes.h: Likewise.
+
+2008-09-09  Andreas Schwab  
+
+	* acinclude.m4 (GLIBCXX_CHECK_STANDARD_LAYOUT): Fix compile check
+	not to redefine main.
+
+2008-09-07  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Check wcstoimax and
+	wcstoumax, define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1.
+	* include/tr1_impl/cinttypes: Use the latter.
+	* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2008-09-05  Peter Dimov  
+
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New.
+
+2008-09-05  Paolo Carlini  
+
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc: Rename
+	to...
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc: ...
+	this.
+
+2008-09-04  Jonathan Wakely  
+
+	PR libstdc++/36962
+	* include/Makefile.am: Update headers.
+	* include/Makefile.in: Regenerate.
+	* include/std/memory: Update headers.
+	* include/tr1/memory: Likewise.
+	* include/tr1_impl/boost_shared_ptr.h: Remove, splitting into
+	separate implementations for std and tr1.
+	* include/bits/boost_sp_shared_count.h: Remove.
+	* include/tr1/boost_sp_shared_count.h: Remove.
+	* include/bits/shared_ptr.h: New. Combines boost_sp_shared_count.h
+	and boost_shared_ptr.h into one file.
+	(__shared_count,__shared_ptr,shared_ptr,swap): Add unique_ptr
+	and rvalue-reference support as per current WP.
+	* include/tr1/shared_ptr.h: New. Combines boost_sp_shared_count.h
+	and boost_shared_ptr.h into one file.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: New.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: New.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc: New.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: New.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc: New.
+	* testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc: New.
+	* testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc: New.
+	* testsuite/20_util/shared_ptr/modifiers/swap_rvalue.cc: New.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue_neg.cc: Remove.
+
+2008-09-04  Jonathan Wakely  
+
+	* doc/xml/manual/locale.xml: Fix typo.
+
+2008-09-04  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): Tidy checks in case of
+	POSIX threads.
+	* configure: Regenerate.
+
+2008-09-04  Chris Fairles  
+
+	* include/std/mutex (once_flag): Construct __gthread_once_t in a
+	temporary variable before assigning to _M_once to avoid initialization
+	errors.
+
+2008-09-03  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Also export __once_functor_lock; tighten
+	GLIBCXX_3.4 exports (necessary in case of undef _GLIBCXX_HAVE_TLS).
+
+	* Makefile.in: Regenerate.
+	* src/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2008-09-03  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): Fix typo in last commit,
+	check _POSIX_TIMEOUTS, not _POSIX_TIMERS.
+	* configure: Regenerate.
+
+2008-09-03  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): Check _POSIX_TIMERS too.
+	* configure: Regenerate.
+
+2008-09-03  Chris Fairles  
+
+	* include/std/condition_variable: Use new deleted ctors.
+	* include/std/mutex: Likewise plus implement timed_mutex,
+	recursive_timed_mutex and call_once.
+	* src/condition_variable.cc: Implement wait(). Use gthread types.
+	Remove _GTHREADS_HAS_COND checks in favor of global
+	_GLIBCXX_HAS_GTHREADS.
+	* src/mutex.cc (call_once): Implementation using TLS with mutex
+	fallback.
+	* config/abi/pre/gnu.ver: Add exported symbols.
+	* testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New.
+	* testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise.
+	* testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use
+	dg-require-gthreads and dg-require-cstdint.
+	* testsuite/30_threads/lock_guard/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
+	* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error
+	lines for deleted members.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/call_once/once_flag.cc: New.
+	* testsuite/30_threads/call_once/call_once1.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
+	Likewise.
+	* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
+
+2008-09-01  Mark Mitchell  
+
+	* include/std/type_traits (__make_unsigned_selector<>): Consider
+	enums of size smaller than short.
+	(__make_signed_selector<>): Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust line numbers.
+	* testsuite/20_util/make_usigned/requirements/typedefs_neg.cc:
+	Adjust line numbers.
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc:
+	Ensure test_enum is the same size as short.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
+	Ensure test_enum is the same size as short.
+
+2008-08-31  Aaron W. LaFramboise  
+
+	* acinclude.m4 : Don't use symvers on Windows.
+	* configure: Regenerated.
+	* Makefile.in: Regenerated.
+	* src/Makefile.in: Regenerated.
+	* doc/Makefile.in: Regenerated.
+	* po/Makefile.in: Regenerated.
+	* libmath/Makefile.in: Regenerated.
+	* include/Makefile.in: Regenerated.
+	* libsupc++/Makefile.in: Regenerated.
+	* testsuite/Makefile.in: Regenerated.
+
+2008-08-29  Mark Mitchell  
+
+	* testsuite/25_algorithms/nth_element/2.cc: Constrain iterations
+	when testing on a simultor.
+
+2008-08-28  Paolo Carlini  
+
+	* testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc:
+	Rename to .../typedefs.cc.
+	* testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/
+	typedef.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/
+	typedef.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/typedef.cc:
+	Likewise.
+
+2008-08-28  Chris Fairles  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): New. Checks for gthread
+	support used by c++0x thread library.
+	* configure.ac: Test unconditionally.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+
+2008-08-27  Benjamin Kosnik  
+
+	* doc/Makefile.am: Edit xml file list.
+	* doc/Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* doc/xml/manual/intro.xml: Edit, correct links, structure.
+	* doc/xml/manual/configure.xml: Same.
+	* doc/xml/manual/debug.xml: Same.
+	* doc/xml/manual/test.xml: Same.
+	* doc/xml/manual/build.xml: Remove.
+	* doc/xml/manual/prerequisites.xml: Add.
+	* doc/html/*: Regenerate.
+
+2008-08-27  Paolo Carlini  
+
+	* include/tr1_impl/hashtable (_Hashtable<>): Add missing pointer and
+	const_pointer typedefs.
+	* testsuite/tr1/6_containers/unordered_set/requirements/typedef.cc:
+	Add.
+	* testsuite/tr1/6_containers/unordered_map/requirements/typedef.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/
+	typedef.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/
+	typedef.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/typedef.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/typedef.cc:
+	Likewise.
+
+2008-08-27  Paul Brook  
+
+	* libsupc++/eh_call.cc (__cxa_call_unexpected): Fix name of
+	__get_object_from_ambiguous_exception.
+
+2008-08-26  Ben Elliston  
+
+	* src/mt_allocator.cc (__pool): Fix error in comment.
+
+2008-08-25  Paolo Carlini  
+
+	* linkage.m4 ([GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1],
+	[GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT]): Remove
+	* configure.ac: Do not call the latter.
+	* crossconfig.m4: Likewise.
+	* libmath/mathconf.h: Adjust.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2008-08-24  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_RANDOM_TR1]): Simplify, just use
+	two test -r instead of an AC_TRY_RUN.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2008-08-24  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_CLOCK_GETTIME]): Improve documentation.
+	* doc/xml/manual/configure.xml: Likewise.
+
+2008-08-23  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_CLOCK_GETTIME]): Use [=KIND] in
+	GLIBCXX_ENABLE.
+	* configure: Regenerate.
+
+2008-08-23  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_GETTIMEOFDAY]): Change to use
+	GCC_TRY_COMPILE_OR_LINK.
+	([GLIBCXX_CHECK_CLOCK_GETTIME]): Rename to
+	[GLIBCXX_ENABLE_CLOCK_GETTIME], a versatile configure-time option,
+	[no] by default, since it includes TRY_LINK checks.  librt is also
+	searched, if requested.
+	* doc/xml/manual/configure.xml: Document the latter.
+	* configure.ac: Move the above checks outside native-only.
+	* configure: Regenerate.
+
+2008-08-23  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_atomic_builtins): Add.
+	* testsuite/lib/dg-options.exp (dg-require-atomic-builtins): Likewise.
+	* testsuite/18_support/exception_ptr/current_exception.cc: Use it.
+	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise.
+	* testsuite/18_support/exception_ptr/lifespan.cc: Likewise.
+
+2008-08-23  Sebastian Redl 
+
+	Add (again) exception propagation support as per N2179.  Feature is
+	available only when _GLIBCXX_ATOMIC_BUILTINS_4 is defined.
+	* libsupc++/exception_ptr.h (exception_ptr, current_exception,
+	copy_exception, rethrow_exception): New file, implement exception
+	propagation.
+	* libsupc++/eh_ptr.cc (exception_ptr, current_exception,
+	rethrow_exception, __gxx_dependent_exception_cleanup): Likewise.
+	* libsupc++/unwind-cxx.h (__cxa_exception): Add reference count.
+	(__cxa_dependent_exception, __cxa_allocate_dependent_exception,
+	__cxa_free_dependent_exception, __get_dependent_exception_from_ue,
+	__GXX_INIT_DEPENDENT_EXCEPTION_CLASS, __is_dependent_exception,
+	__gxx_dependent_exception_class, __get_object_from_ue,
+	__get_object_from_ambiguous_exception): Add.
+	(__GXX_INIT_EXCEPTION_CLASS, __gxx_exception_class): Rename.
+	(__is_gxx_exception_class): Handle dependent exceptions.
+	* libsupc++/eh_arm.cc (__cxa_type_match): Likewise.
+	* libsupc++/eh_call.cc (__cxa_call_unexpected): Likewise.
+	* libsupc++/eh_personality.cc (__gxx_personality_*): Likewise.
+	* libsupc++/eh_type.cc (__cxa_current_exception_type): Likewise.
+	* libsupc++/eh_alloc.cc (__cxa_allocate_dependent_exception,
+	__cxa_free_dependent_exception): Add.
+	* libsupc++/eh_throw.cc (__gxx_exception_cleanup): Handle reference
+	counting.
+	* libsupc++/exception: Conditionally include exception_ptr.h.
+	* libsupc++/Makefile.am: Register new files.
+	* libsupc++/Makefile.in: Regenerate.
+	* config/abi/pre/gnu.ver: Add new symbols.
+	* testsuite/18_support/exception_ptr/current_exception.cc: Test the
+	core functionality of current_exception().
+	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test the
+	core functionality of rethrow_exception().
+	* testsuite/18_support/exception_ptr/lifespan.cc: Test the life span of
+	exception objects during exception propagation.
+
+2008-08-22  Paolo Carlini  
+
+	Revert again the N2179 patch.
+
+2008-08-21  Sebastian Redl 
+
+	* libsupc++/eh_ptr.cc (__gxx_dependent_exception_cleanup): Call
+	__cxa_free_dependent_exception.
+
+2008-08-20  Paolo Carlini  
+
+	* include/bits/char_traits.h (char_traits::
+	assign(char_type*, size_t, char_type), char_traits::
+	assign(char_type*, size_t, char_type)): For now, just open-code.
+
+2008-08-20  Paolo Carlini  
+
+	PR c++/33979 (partial)
+	* include/bits/postypes.h (u16streampos, u32streampos): Add.
+	* include/bits/char_traits.h (char_traits,
+	char_traits): Add.
+	* include/bits/stringfwd.h (u16string, u32string): Add.
+	* include/ext/vstring_fwd.h: Add typedefs for char16_t/char32_t.
+	* testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc:
+	New.
+	* testsuite/21_strings/char_traits/requirements/
+	explicit_instantiation/short/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/
+	explicit_instantiation/char32_t/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/
+	explicit_instantiation/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/
+	explicit_instantiation/char16_t/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/
+	explicit_instantiation/char/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/
+	explicit_instantiation/char32_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/requirements/
+	explicit_instantiation/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/requirements/
+	explicit_instantiation/char16_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/requirements/
+	explicit_instantiation/char/1.cc: Likewise.
+	* testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/
+	char32_t/1.cc: Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/
+	char16_t/1.cc: Likewise.
+
+2008-08-18  Paolo Carlini  
+
+	PR libstdc++/37149
+	* testsuite/27_io/basic_ostream/inserters_other/char/4.cc: Include
+	.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
+	Likewise.
+	* testsuite/27_io/objects/char/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-3.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
+	* testsuite/ext/malloc_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/malloc_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-6.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-8.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-5.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-7.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Likewise.
+	* include/std/regex: Include .
+	* include/tr1/regex: Likewise.
+
+2008-08-18  Paolo Carlini  
+
+	* configure.ac: Do not hardcode HAVE_S_ISREG and HAVE_S_IFREG for
+	newlib.
+	* configure: Regenerate.
+
+2008-08-18  Paolo Carlini  
+
+	PR libstdc++/37147
+	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Tighten checks on stdint.h,
+	check the macros too.
+	* configure: Regenerate.
+
+2008-08-17  Paolo Carlini  
+
+	* acinclude.m4 ([AC_LC_MESSAGES]): Use AC_TRY_COMPILE instead of
+	AC_TRY_LINK.
+	* configure.ac: Run unconditionally AC_LC_MESSAGES.
+	* crossconfig.m4: Adjust.
+	* configure: Regenerate.
+
+2008-08-17  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_LFS], [GLIBCXX_CHECK_POLL],
+	[GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [GLIBCXX_CHECK_WRITEV]):
+	Use GCC_TRY_COMPILE_OR_LINK instead of AC_TRY_LINK, in C++,
+	with -fno-exceptions as flags.
+	* configure.ac: Run unconditionally GLIBCXX_CHECK_LFS,
+	GLIBCXX_CHECK_POLL, GLIBCXX_CHECK_S_ISREG_OR_S_IFREG,
+	GLIBCXX_CHECK_WRITEV and commonized AC_CHECK_HEADERS.
+	* crossconfig.m4: Adjust; remove AC_CHECK_HEADERS commonized
+	in configure.ac.
+	* configure: Regenerate.
+
+2008-08-13  Paolo Carlini  
+
+	Re-instate last patch, amended to use __exchange_and_add_dispatch
+	and __atomic_add_dispatch in eh_ptr.cc and eh_throw.cc.
+
+2008-08-13  Paolo Carlini  
+
+	Revert the last patch.
+
+2008-08-13  Sebastian Redl 
+
+	Add exception propagation support as per N2179.
+	* libsupc++/exception_ptr.h (exception_ptr, current_exception,
+	copy_exception, rethrow_exception): New file, implement exception
+	propagation.
+	* libsupc++/eh_ptr.cc (exception_ptr, current_exception,
+	rethrow_exception, __gxx_dependent_exception_cleanup): Likewise.
+	* libsupc++/unwind-cxx.h (__cxa_exception): Add reference count.
+	(__cxa_dependent_exception, __cxa_allocate_dependent_exception,
+	__cxa_free_dependent_exception, __get_dependent_exception_from_ue,
+	__GXX_INIT_DEPENDENT_EXCEPTION_CLASS, __is_dependent_exception,
+	__gxx_dependent_exception_class, __get_object_from_ue,
+	__get_object_from_ambiguous_exception): Add.
+	(__GXX_INIT_EXCEPTION_CLASS, __gxx_exception_class): Rename.
+	(__is_gxx_exception_class): Handle dependent exceptions.
+	* libsupc++/eh_arm.cc (__cxa_type_match): Likewise.
+	* libsupc++/eh_call.cc (__cxa_call_unexpected): Likewise.
+	* libsupc++/eh_personality.cc (__gxx_personality_*): Likewise.
+	* libsupc++/eh_type.cc (__cxa_current_exception_type): Likewise.
+	* libsupc++/eh_alloc.cc (__cxa_allocate_dependent_exception,
+	__cxa_free_dependent_exception): Add.
+	* libsupc++/eh_throw.cc (__gxx_exception_cleanup): Handle reference
+	counting.
+	* libsupc++/exception: Conditionally include exception_ptr.h.
+	* libsupc++/Makefile.am: Register new files.
+	* libsupc++/Makefile.in: Regenerate.
+	* config/abi/pre/gnu.ver: Add new symbols.
+	* testsuite/18_support/exception_ptr/current_exception.cc: Test the
+	core functionality of current_exception().
+	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test the
+	core functionality of rethrow_exception().
+	* testsuite/18_support/exception_ptr/lifespan.cc: Test the life span of
+	exception objects during exception propagation.
+
+2008-08-12  Paolo Carlini  
+
+	PR libstdc++/37100
+	* include/bits/stl_pair.h: Fix documentation URL in comment.
+
+2008-08-12  Johannes Singler  
+
+	* include/paralle/losertree.h
+	(LoserTreePointerBase<>::~LoserTreePointerBase):
+	Replace delete by appropriate delete[].
+
+2008-08-12  Paolo Carlini  
+
+	* configure.ac: Run unconditionally GLIBCXX_CHECK_INT64_T and
+	GLIBCXX_CHECK_C99_TR1; remove sigsetjmp and mmap checks (unused).
+	* crossconfig.m4: Adjust; remove HAVE_GETPAGESIZE defines (unused).
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+	* acinclude.m4: Minor formatting fixes.
+
+2008-08-11  Stephen M. Webb  
+
+	* include/tr1_impl/regex: Formatting fixes.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc:
+	  New test.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc:
+	  New test.
+
+2008-08-11  Paolo Carlini  
+
+	* config/locale/generic/c_locale.cc: Include .
+
+2008-08-11  Paolo Carlini  
+
+	* configure.ac: Run GLIBCXX_CHECK_STDIO_MACROS unconditionally.
+	* configure: Regenerate.
+
+2008-08-10  Paolo Carlini  
+
+	* include/tr1_impl/type_traits (_DEFINE_SPEC*): Simplify.
+	(_DEFINE_SPEC_BODY): Remove.
+	(__is_void_helper, __is_integral_helper, __is_floating_point_helper,
+	__is_member_object_pointer_helper, __is_member_function_pointer_helper,
+	__remove_pointer_helper): Add.
+	(is_void, is_integral, is_floating_point, is_member_object_pointer,
+	is_member_function_pointer, remove_pointer): Use the latter.
+	* include/tr1/type_traits (_DEFINE_SPEC): Simplify.
+	(_DEFINE_SPEC_HELPER): Remove.
+	(__is_signed_helper, __is_unsigned_helper): Add.
+	(is_signed, is_unsigned): Use the latter.
+
+2008-08-09  Paolo Carlini  
+
+	Revert fix for libstdc++/35637, thanks to other/36901.
+	* include/tr1_impl/type_traits (__is_function_helper): New, uses
+	variadic templates.
+	(is_function): Forward to the latter.
+	(__in_array): Remove.
+
+2008-08-09  Paolo Carlini  
+
+	* config/locale/darwin/ctype_members.cc: Include .
+
+2008-08-08  Paolo Carlini  
+
+	* include/bits/ios_base.h: Undef _IOS_BASE_SEEK_CUR and
+	_IOS_BASE_SEEK_END at the end of the file.
+	* include/bits/char_traits.h: Likewise for _CHAR_TRAITS_EOF.
+
+2008-08-07  Stephen M. Webb  
+
+	* include/tr1_impl/regex (match_results<>::cbegin, cend): Add, per
+	N2691 WD.
+
+2008-08-06  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_STDIO_MACROS]): New, checks for
+	common values of EOF, SEEK_CUR, SEEK_END.
+	* configure.ac: Use it.
+	* include/bits/ios_base.h: Likewise.
+	* include/bits/char_traits.h: Likewise.
+	* config/locale/gnu/ctype_members.cc: Include .
+	* config/locale/generic/ctype_members.cc: Likewise.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error lines.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2008-08-06  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_INT64_T]): Also check whether int64_t
+	is actually a typedef to long or long long.
+	* include/bits/postypes.h: If int64_t is actually a typedef for
+	long or long long don't include  unnecessarily.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+2008-08-05  Paolo Carlini  
+
+	* testsuite/util/testsuite_api.h (diamond_derivation<>::test):
+	Expect ambiguity together with the standard exception classes.
+	* testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc: Remove
+	xfail.
+	* testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/18_support/bad_alloc/cons_virtual_derivation.cc: Likewise.
+	* testsuite/18_support/bad_cast/cons_virtual_derivation.cc: Likewise.
+	* testsuite/18_support/bad_exception/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/18_support/bad_typeid/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/forced_exception_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
+	Likewise.
+
+2008-08-04  Paolo Carlini  
+
+	* include/bits/postypes.h: Reinstate inclusion of ;
+	also define the __STDC_* macros.
+	(streamoff): Adjust.
+
+	* include/tr1_impl/cstdint: Check that the __STDC_* macros are
+	not defined before defining.
+
+2008-08-01  Paolo Bonzini  
+	    Chris Fairles  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_CLOCK_GETTIME]): Reinstate clock_gettime
+	search, but only in libposix4, never link librt.
+	* src/Makefile.am: Reinstate previous change to add GLIBCXX_LIBS.
+	* configure: Regenerate.
+	* configure.in: Likewise.
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* libsup++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+
+2008-07-31  Chris Fairles 
+
+	* include/std/chrono (duration): Use explicitly defaulted ctor, cctor,
+	dtor and assignment. Add diagnostics as per 20.8.3 paragraphs 2, 3
+	and 4 in WD. Other minor tweaks.
+	* testsuite/20_util/duration/cons/1_neg.cc: Adjust line numbers.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: New.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+
+2008-07-31  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Set v3-libgomp.
+	(check_v3_target_parallel_mode): Robustify, just follow the
+	structure of testsuite/Makefile.am.
+
+2008-07-29  Paolo Carlini  
+
+	* include/debug/set.h: Minor formatting fixes.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/safe_association.h: Likewise.
+	* include/debug/vector: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/string: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+
+2008-07-29  Paolo Carlini  
+
+	* include/std/utility: Include , per the current WP.
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_cstdint): Tweak,
+	don't use -std=gnu++0x unnecessarily.
+	* testsuite/18_support/numeric_limits/char16_32_t.cc: Use
+	dg-require-cstdint.
+	* testsuite/18_support/headers/cstdint/types_std_c++0x.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc: Likewise.
+
+2008-07-28  Paolo Carlini  
+
+	PR libstdc++/36949
+	* include/tr1_impl/boost_shared_ptr.h
+	(__shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...): Call
+	__enable_shared_from_this_helper.
+	* testsuite/20_util/shared_ptr/creation/36949.cc: New.
+
+2008-07-24  Paolo Carlini  
+
+	PR libstdc++/36924
+	Revert:
+	2008-07-23  Chris Fairles 
+
+	* acinclude.m4 ([GLIBCXX_CHECK_CLOCK_GETTIME]): Define GLIBCXX_LIBS.
+	Holds the lib that defines clock_gettime (-lrt or -lposix4).
+	* src/Makefile.am: Use it.
+	* configure: Regenerate.
+	* configure.in: Likewise.
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* libsup++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+
+2008-07-23  Chris Fairles 
+
+	* include/std/condition_variable: Update to N2691 WD.
+	* include/std/mutex: Likewise.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+
+2008-07-23  Chris Fairles 
+
+	* acinclude.m4 ([GLIBCXX_CHECK_CLOCK_GETTIME]): Define GLIBCXX_LIBS.
+	Holds the lib that defines clock_gettime (-lrt or -lposix4).
+	* src/Makefile.am: Use it.
+	* configure: Regenerate.
+	* configure.in: Likewise.
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* libsup++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+
+2008-07-22  Paolo Carlini  
+
+	* include/ext/sso_string_base.h
+	(__sso_string_base<>::__sso_string_base(std::initializer_list<_CharT>,
+	const _Alloc&)): Remove.
+	* include/ext/rc_string_base.h
+	(__rc_string_base<>::__rc_string_base(std::initializer_list<_CharT>,
+	const _Alloc&)): Likewise.
+	* include/ext/vstring.h
+	(__versa_string<>::__versa_string(std::initializer_list<_CharT>,
+	const _Alloc&)): Adjust.
+
+2008-07-21  Jason Merrill  
+
+	Add initializer_list support as per N2679.
+	* include/debug/unordered_map: Add initializer_list support.
+	* include/debug/safe_association.h: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/vector: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/set.h: Likewise.
+	* include/debug/string: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/tr1_impl/unordered_map: Likewise.
+	* include/tr1_impl/hashtable: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/tr1_impl/regex: Likewise.
+	* include/std/valarray: Likewise.
+	* include/std/unordered_map: Likewise.
+	* include/std/unordered_set: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/basic_string.h: Likewise.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/ext/sso_string_base.h: Likewise.
+	* src/Makefile.am (w?string-inst): Build with -std=gnu++0x.
+	* src/Makefile.in: Likewise.
+	* config/abi/pre/gnu.ver: Add new w?string exports.
+	* testsuite/21_strings/basic_string/init-list.cc: New test.
+	* testsuite/23_containers/vector/init-list.cc: New test.
+	* testsuite/23_containers/deque/init-list.cc: New test.
+	* testsuite/23_containers/list/init-list.cc: New test.
+	* testsuite/23_containers/map/init-list.cc: New test.
+	* testsuite/23_containers/multimap/init-list.cc: New test.
+	* testsuite/23_containers/set/init-list.cc: New test.
+	* testsuite/23_containers/multiset/init-list.cc: New test.
+	* testsuite/23_containers/unordered_map/init-list.cc: New test.
+	* testsuite/23_containers/unordered_multimap/init-list.cc: New test.
+	* testsuite/23_containers/unordered_set/init-list.cc: New test.
+	* testsuite/23_containers/unordered_multiset/init-list.cc: New test.
+	* testsuite/26_numerics/valarray/init-list.cc: New test.
+	* testsuite/28_regex/init-list.cc: New test.
+	* testsuite/ext/vstring/init-list.cc: New test.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Update error lineno.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Update error lineno.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
+	Update error lineno.
+	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
+	Update error lineno.
+
+2008-07-21  Mark Mitchell  
+
+	* config/os/gnu-linux/arm-eabi-extra.ver: New file.
+	* configure.host: Use it for arm*-*-linux-*eabi.
+
+2008-07-19  Paolo Carlini  
+
+	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+	(assert_node_consistent): Avoid ambiguous else warning.
+
+	* include/ext/pb_ds/detail/debug_map_base.hpp: Include .
+
+	* include/bits/c++config: In debug-mode (and parallel-mode) set
+	_GLIBCXX_EXTERN_TEMPLATE to -1, not 0, thus disabling extern
+	templates only for basic_string (per libstdc++/21674).
+	* include/bits/basic_string.tcc: Use extern templates when
+	_GLIBCXX_EXTERN_TEMPLATE > 0.
+
+2008-07-18  Kris Van Hees  
+	    Holger Hopp  
+
+	* config/abi/pre/gnu.ver: Support char16_t and char32_t.
+	* testsuite/util/testsuite_abi.cc (check_version): Add
+	CXXABI_1.3.3 to known_versions.
+
+2008-07-16  Paolo Carlini  
+
+	* include/debug/vector (insert(iterator, _Tp&&), push_back(_Tp&&)):
+	Enable only when _Tp != bool.
+
+	* testsuite/25_algorithms/heap/1.cc: Avoid unused variable warnings.
+
+2008-07-18  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_c_std): Avoid unused
+	variable warnings leading to spurious fails of the test.
+
+2008-07-16  Paolo Carlini  
+
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Adjust
+	dg-error lines.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/20_util/duration/cons/1_neg.cc: Likewise.
+
+	* include/tr1_impl/type_traits: Fix comment typo.
+
+2008-07-16  Paolo Carlini  
+
+	* include/bits/unique_ptr.h: Remove stray character.
+
+2008-07-15  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Add complex, ratio,
+	intializer_list.
+	(PREDEFINED): Add _GLIBCXX_USE_C99_STDINT_TR1.
+	* doc/doxygen/doxygroups.cc: Add std::chrono.
+	* include/bits/unique_ptr.h (default_delete, unique_ptr): Add markup.
+	* libsupc++/initializer_list (initializer_list): Same.
+	* include/std/ratio: Same.
+	* include/std/chrono: Same.
+	* include/std/complex: Disambiguate file markup.
+
+2008-07-15  Chris Fairles  
+
+	* include/std/chrono: New, as per N2661.
+	* src/chrono.cc: New.
+	* include/Makefile.am: Update.
+	* src/Makefile.am: Likewise.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.in: Likewise.
+	* acinclude.m4: Add tests for clock_gettime and gettimeofday that
+	define _GLIBCXX_HAS_CLOCK_GETTIME and/or _GLIBCXX_HAS_GETTIMEOFDAY.
+	* configure.ac: Use them.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+	* config/abi/pre/gnu.ver: Add symbols for system_clock::now() and
+	system_clock::is_monotonic.
+	* testsuite/20_util/duration/cons/1.cc: New.
+	* testsuite/20_util/duration/cons/2.cc: Likewise.
+	* testsuite/20_util/duration/cons/1_neg.cc: Likewise.
+	* testsuite/20_util/duration/requirements/explicit_instantiation/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/duration/arithmetic/1.cc: Likewise.
+	* testsuite/20_util/duration/arithmetic/2.cc: Likewise.
+	* testsuite/20_util/duration/comparisons/1.cc: Likewise.
+	* testsuite/20_util/time_point/requirements/explicit_instantiation/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/time_point/1.cc: Likewise.
+	* testsuite/20_util/time_point/2.cc: Likewise.
+	* testsuite/20_util/time_point/3.cc: Likewise.
+	* testsuite/20_util/clocks/1.cc: Likewise.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add
+	missing headers.
+	* testsuite/17_intro/headers/c++200x/all.cc: Likewise.
+	* include/precompiled/stdc++.h: Likewise and remove .
+	* doc/doxygen/user.cfg.in: Likewise.
+
+2008-07-15  Paolo Carlini  
+
+	PR libstdc++/36832
+	* include/ext/rope (_Destroy_const): Add.
+	(rope<>::copy): Call it.
+	* testsuite/ext/rope/36832.cc: New.
+
+2008-07-15  Johannes Singler  
+
+	* include/parallel/find_selectors.h:
+	Correct name for include guard #ifndef.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/[various files]:
+	Add/correct comment for #endif of include guard (at end of file)
+
+2008-07-12  Paolo Carlini  
+
+	* include/std/date_time: Remove, per N2549, in WP.
+	* src/date_time.cc: Likewise.
+	* config/abi/pre/gnu.ver: Remove  symbols.
+	* include/Makefile.am: Remove date_time in std headers.
+	* src/Makefile.am: Remove date_time.cc to source files.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.in: Likewise.
+	* testsuite/31_date_time/headers/date_time/types_std.cc: Remove.
+	* testsuite/31_date_time/headers/date_time/std_c++0x_neg.cc: Likewise.
+	* testsuite/31_date_time/headers/date_time/functions_std.cc: Likewise.
+	* testsuite/31_date_time/headers/date_time/synopsis.cc: Likewise.
+	* testsuite/31_date_time/nanoseconds/requirements/traits.cc: Likewise.
+	* testsuite/31_date_time/nanoseconds/requirements/duration.cc: Likewise.
+	* testsuite/31_date_time/system_time/requirements: Likewise.
+	* testsuite/31_date_time/system_time/requirements/traits.cc: Likewise.
+	* testsuite/17_intro/headers/c++200x/all.cc: Adjust.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Adjust.
+
+2008-07-10  Johannes Singler  
+
+	* include/parallel/balanced_quicksort.h:
+	(qsb_divide) Replace "*end" by "*(end - 1)" in assertion.
+
+2008-07-09  Benjamin Kosnik  
+
+	PR libstdc++/36451
+	* doc/xml/manual/allocator.xml: Fix links.
+	* doc/html/*: Regenerate.
+
+2008-07-09  Joseph Myers  
+
+	* libsupc++/unwind-cxx.h (__is_gxx_forced_unwind_class,
+	__GXX_INIT_FORCED_UNWIND_CLASS): Define for ARM EABI unwinder.
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Call
+	__GXX_INIT_FORCED_UNWIND_CLASS for forced unwind with ARM EABI
+	unwinder.
+	* libsupc++/eh_arm.cc (__cxa_type_match): Use
+	__is_gxx_forced_unwind_class to check for forced unwind.
+
+2008-07-09  Andreas Beckmann  
+
+	PR libstdc++/36552
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	null_metadata.hpp: Remove self-include.
+
+2008-07-09  Joseph Myers  
+
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc,
+	testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Use
+	-Wl,--no-enum-size-warning for arm*-*-linux*eabi.
+
+2008-07-09  Johannes Singler  
+
+	PR libstdc++/36729
+	* include/parallel/random_shuffle.h:
+	(sequential_random_shuffle) Copy data back.
+	* testsuite/25_algorithms/random_shuffle/1.cc:
+	New. Generic random_shuffle functionality test.
+
+2008-07-08  Chris Fairles  
+
+	* include/std/type_traits: Add common_type.
+	* testsuite/20_util/common_type/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/common_type/requirements/
+	typedefs-1.cc: Likewise.
+
+2008-07-07  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_stdint): New.
+	* testsuite/lib/dg-options.exp (dg-require-cstdint): New.
+	* testsuite/20_util/ratio/cons/cons1.cc: Use it.
+	* testsuite/20_util/ratio/cons/cons_overflow.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops1.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops2.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops3.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops_overflow.cc: Likewise.
+	* testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
+	* testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
+
+	* include/std/type_traits: Fix comment typo.
+
+2008-07-06  Roger Sayle  
+
+	* include/std/system_error (is_error_code_enum): Use identifier
+	_Tp instead of _T to avoid conflict with system macro on Darwin.
+	(is_error_condition_enum): Likewise.
+
+2008-07-05  Paolo Carlini  
+
+	* include/bits/postypes.h: Do not include .
+
+	* include/Makefile.am: Reorder.
+
+2008-07-05  Paolo Carlini  
+
+	* include/std/ratio: Prefer __INTMAX_MAX__ to INTMAX_MAX (INTMAX_MIN).
+
+2008-07-05  Chris Fairles  
+
+	* include/std/ratio: Documentation for std::ratio class. Add conditions
+	to ratio_less to prevent overflow.
+	* testsuite/20_util/ratio/comparisons/comp2.cc: New.
+	* testsuite/20_util/ratio/cons/cons_overflow.cc: Update dg-error line
+	numbers.
+
+2008-07-04  Chris Fairles  
+
+	* include/std/ratio: New, per N2661.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Regenerate.
+	* testsuite/20_util/ratio/cons/cons1.cc: New.
+	* testsuite/20_util/ratio/cons/cons_overflow.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops1.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops2.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops3.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops_overflow.cc: Likewise.
+	* testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
+
+2008-07-04  Paolo Carlini  
+
+	PR libstdc++/36616
+	* testsuite/22_locale/time_put/put/char/4.cc: Just use es_ES instead.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+
+2008-07-03  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
+	Improve check on long double limits.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stof.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stod.cc: Likewise.
+
+2008-07-03  Paolo Carlini  
+
+	* libsupc++/Makefile.am: Add initializer_list to the headers.
+	* libsupc++/Makefile.in: Regenerate.
+
+	* libsupc++/initializer_list: Minor cosmetic changes.
+
+2008-07-02  Jason Merrill  
+
+	* libsupc++/initializer_list: Uglify and wrap in
+	__GXX_EXPERIMENTAL_CXX0X__.
+	* include/bits/stl_map.h (insert(initializer_list)): Wrap.
+
+2008-07-02  Jason Merrill  
+
+	* libsupc++/initializer_list: New file.
+	* include/bits/stl_map.h (insert(initializer_list)): New method.
+
+2008-06-30  Alfred E. Heggestad  
+
+	* include/backward/backward_warning.h: Fix typo.
+
+2008-06-29  Paolo Carlini  
+
+	* src/string_conversions.cc: Remove.
+	* config/abi/pre/gnu.ver: Delete exports.
+	* src/Makefile.am: Update.
+	* include/ext/string_conversions.h: Add.
+	* include/Makefile.am: Update.
+	* include/bits/basic_string.h: Include string_conversions.h,
+	define numeric conversion functions.
+	* include/ext/vstring.h: Likewise.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+
+2008-06-29  Paolo Carlini  
+
+	* include/bits/stl_algo.h (copy_n): Add in C++0x mode.
+	* include/bits/algorithmfwd.h: Add.
+	* include/bits/stl_uninitialized.h (uninitialized_copy_n): Add
+	in C++0x mode.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
+	move_iterators/1.cc: New
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+	* testsuite/25_algorithms/copy_n/1.cc: New.
+	* testsuite/25_algorithms/copy_n/2.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/3.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/4.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/partition_point/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2008-06-28  Paolo Carlini  
+
+	* include/bits/stl_algo.h (partition_point): Add in C++0x mode.
+	* include/bits/algorithmfwd.h: Add.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+	* testsuite/25_algorithms/partition_point/1.cc: New.
+	* testsuite/25_algorithms/partition_point/check_type.cc: Likewise.
+	* testsuite/25_algorithms/partition_point/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/partition_point/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2008-06-28  Paolo Carlini  
+
+	PR libstdc++/36660
+	* include/ext/pb_ds/detail/resize_policy/
+	sample_resize_trigger.hpp: Remove spurious namespace end.
+
+2008-06-27  Mark Mitchell  
+
+	* libsupc++/vec.cc (__aeabi_vec_dtor_cookie): Handle NULL array
+	address.
+	(__aeabi_vec_delete): Likewise.
+	(__aeabi_vec_delete3): Likewise.
+	(__aeabi_vec_delete3_nodtor): Likewise.
+
+2008-06-27  Paolo Carlini  
+
+	* include/bits/stl_algo.h (is_partitioned): Add in C++0x mode.
+	* include/bits/algorithmfwd.h: Add.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+	* testsuite/25_algorithms/is_partitioned/1.cc: New.
+	* testsuite/25_algorithms/is_partitioned/check_type.cc: Likewise.
+	* testsuite/25_algorithms/is_partitioned/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/is_partitioned/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2008-06-27  Paolo Carlini  
+
+	* include/bits/stl_numeric.h (iota): Add in C++0x mode.
+	* testsuite/util/testsuite_character.h (pod_int): Add operator++
+	in C++0x mode.
+	* testsuite/util/testsuite_api.h (NonDefaultConstructible): Likewise.
+	* testsuite/26_numerics/iota/1.cc: New.
+	* testsuite/26_numerics/iota/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/26_numerics/iota/requirements/explicit_instantiation/
+	pod.cc: Likewise.
+
+	* include/ext/algorithm: Do not fiddle with the legacy headers.
+
+	* testsuite/26_numerics/partial_sum/1.cc: Minor changes, comments,
+	style.
+	* testsuite/26_numerics/accumulate/1.cc: Likewise.
+	* testsuite/26_numerics/adjacent_difference/1.cc: Likewise.
+	* testsuite/26_numerics/inner_product/1.cc: Likewise.
+
+2008-06-26  Paolo Carlini  
+
+	* include/bits/stl_algo.h (partition_copy): Add in C++0x mode.
+	* include/bits/algorithmfwd.h: Add.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+	* testsuite/25_algorithms/partition_copy/1.cc: New.
+	* testsuite/25_algorithms/partition_copy/check_type.cc: Likewise.
+	* testsuite/25_algorithms/partition_copy/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/partition_copy/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2008-06-26  Chris Fairles  
+
+	* testsuite/20_util/unique_ptr/cons/pointer_array.cc: New.
+	* testsuite/20_util/unique_ptr/cons/pointer.cc: Likewise.
+	* testsuite/20_util/unique_ptr/cons/pointer_array_convertible.cc:
+	Likewise.
+	* testsuite/20_util/unique_ptr/assign/move_array.cc: Likewise.
+	* testsuite/20_util/unique_ptr/assign/move.cc: Likewise.
+	* testsuite/20_util/unique_ptr/specialized_algorithms/
+	comparisons_array.cc: Likewise.
+	* testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc:
+	Likewise
+	* testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc:
+	Likewise.
+
+2008-06-26  Paolo Carlini  
+
+	* include/parallel/base.h (plus, multiplies): Use __typeof__,
+	not typeof.
+
+2008-06-25  Paolo Carlini  
+
+	* testsuite/29_atomics/atomic_flag/cons/default.cc: Avoid -Wall
+	warnings.
+	* testsuite/29_atomics/atomic_flag/cons/aggregate.cc: Likewise.
+	* testsuite/29_atomics/headers/cstdatomic/types_std_c++0x.cc:
+	Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h/types.c: Likewise.
+	* testsuite/util/testsuite_common_types.h (struct assignable,
+	struct default_constructible, struct copy_constructible,
+	struct explicit_value_constructible): Use a tad of simulated
+	concept checking techniques to avoid spurious warnings.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error
+	markers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+
+2008-06-25  Paolo Carlini  
+
+	* include/bits/stl_algo.h (__find_if_not, find_if_not, all_of,
+	any_of, none_of): Add in C++0x, per N2666.
+	* include/bits/algorithmfwd.h: Update.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Likewise.
+	* testsuite/25_algorithms/all_of/check_type.cc: New.
+	* testsuite/25_algorithms/all_of/1.cc: Likewise.
+	* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/
+	pod.cc: Likewise.
+	* testsuite/25_algorithms/any_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/any_of/1.cc: Likewise.
+	* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/
+	pod.cc: Likewise.
+	* testsuite/25_algorithms/none_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/none_of/1.cc: Likewise.
+	* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/
+	pod.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/1.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+	* testsuite/25_algorithms/copy_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/remove_copy_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find_if/1.cc: Minor tweaks.
+
+2008-06-24  Benjamin Kosnik  
+
+	* doc/xml/manual/parallel_mode.xml: Clarify use of explicit
+	parallel algorithms.
+	* doc/xml/manual/using.xml: Markup fixes caught by validation check.
+	* doc/xml/manual/test.xml: Remove empty para tags.
+
+	* doc/html/*: Regenerate.
+
+2008-06-24  Paolo Carlini  
+
+	* include/bits/stl_algo.h (remove_if): Cast __pred result to bool.
+	(copy_if): Add, per N2666.
+	* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/
+	2.cc: New.
+	* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/
+	pod.cc: Likewise.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Update.
+
+2008-06-24  Paolo Carlini  
+	    Chalathip Thumkanon  
+
+	PR libstdc++/36612
+	* include/ext/pb_ds/exception.hpp (__throw_container_error,
+	__throw_insert_error, __throw_join_error, __throw_resize_error):
+	Mark inline.
+
+2008-06-22  Paolo Carlini  
+
+	* include/bits/move.h (swap(_Tp (&)[_Nm], _Tp (&)[_Nm])): Add,
+	per DR 809.
+	* include/bits/algorithmfwd.h: Add.
+	* doc/xml/manual/intro.xml: Add an entry for DR 809.
+	* testsuite/25_algorithms/swap/dr809.cc: New.
+
+	* testsuite/25_algorithms/swap/requirements/explicit_instantiation/
+	2.cc: Remove stray empty line.
+
+2008-06-21  Paolo Carlini  
+
+	* include/bits/stl_move.h: Rename to move.h.
+	* include/std/utility: Adjust.
+	* include/ext/vstring_util.h: Likewise.
+	* include/ext/throw_allocator.h: Likewise.
+	* include/ext/pool_allocator.h: Likewise.
+	* include/ext/bitmap_allocator.h: Likewise.
+	* include/ext/new_allocator.h: Likewise.
+	* include/ext/malloc_allocator.h: Likewise.
+	* include/ext/array_allocator.h: Likewise.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_heap.h: Likewise.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_iterator.h: Likewise.
+	* testsuite/util/testsuite_allocator.h: Likewise.
+	* testsuite/util/testsuite_iterators.h: Likewise.
+	* include/Makefile.am: Likewise.
+	* include/Makefile.in: Regenerate.
+
+2008-06-21  Chris Fairles  
+
+	* include/bits/unique_ptr.h: New.
+	* include/std/memory: Adjust.
+	* include/Makefile.am: Add.
+	* testsuite/20_util/unique_ptr/requirements/explicit_instantiation/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/unique_ptr/assign/assign.cc: Likewise.
+	* include/Makefile.in: Regenerate.
+
+2008-06-21  Jonathan Wakely  
+
+	* include/c_global/climits, include/tr1/climits: Add parentheses.
+
+2008-06-17  Ralf Wildenhues  
+
+	* configure: Regenerate.
+
+2008-06-17  Chris Fairles  
+
+	* include/bits/stl_iterator_base_funcs.h (next, prev): Add in
+	C++0x mode.
+	* testsuite/24_iterators/operations/next.cc: New.
+	* testsuite/24_iterators/operations/prev.cc: Likewise.
+
+2008-06-17  Paolo Carlini  
+
+	* src/string_conversions.cc (__to_xstring<>): New.
+	(to_string, to_wstring): Use it.
+
+2008-06-16  Paolo Carlini  
+
+	* include/bits/basic_string.h (stod, stof, stoi, stol, stold, stoll,
+	stoul, stoull, to_string, to_wstring): Declare in C++0x mode.
+	* src/string_conversions.cc: Add.
+	* src/Makefile.am: Update.
+	* config/abi/pre/gnu.ver: Adjust exports.
+	* src/Makefile.in: Regenerate.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
+	New.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/
+	to_string.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stod.cc: New.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stof.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stoi.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stol.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stold.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stoll.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stoul.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	stoull.cc: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	to_wstring.cc: Likewise.
+
+2008-06-15  Ralf Wildenhues  
+
+	* include/Makefile.am: Remove trailing white space, fix typo.
+	(parallel_headers): Remove duplicate file, sort entries.
+	* include/Makefile.in: Regenerate.
+
+2008-06-15  Ralf Wildenhues  
+
+	* src/condition_variable.cc (~condition_variable): Drop unused
+	variable.
+
+2008-06-13  Paolo Carlini  
+
+	* include/bits/stl_deque.h (deque<>::push_back(_Args&&...),
+	deque<>::push_front(_Args&&...)): Remove.
+	(deque<>::push_back(value_type&&),
+	deque<>::push_front(value_type&&)): Add.
+	(deque<>::push_back(const value_type&),
+	deque<>::push_front(const value_type&)): Add back.
+	(deque<>::emplace_back(_Args&&...),
+	deque<>::emplace_front(_Args&&...)): Declare...
+	* include/bits/deque.tcc: ... and define.
+	* include/bits/stl_list.h (list<>::push_back(_Args&&...),
+	list<>::push_front(_Args&&...)): Remove.
+	(list<>::push_back(value_type&&), list<>::push_front(value_type&&),
+	list<>::emplace_back(_Args&&...), list<>::emplace_front(_Args&&...)):
+	Add.
+	(list<>::push_back(const value_type&),
+	list<>::push_front(const value_type&)): Add back.
+	* include/bits/stl_vector.h (vector<>::push_back(_Args&&...)): Remove.
+	(vector<>::push_back(value_type&&)): Add.
+	(vector<>::push_back(const value_type&)): Add back.
+	(vector<>::emplace_back(_Args&&...)): Declare...
+	* include/bits/vector.tcc: ... and define.
+	* include/bits/stl_queue.h (queue<>::push(_Args&&...),
+	priority_queue<>::push(_Args&&...)): Remove.
+	(queue<>::push(value_type&&), queue<>::emplace(_Args&&...),
+	priority_queue<>::push(value_type&&),
+	priority_queue<>::emplace(_Args&&...)): Add.
+	(queue<>::push(const value_type&),
+	priority_queue<>::push(const value_type&)): Add back.
+	* include/bits/stl_stack.h (stack<>::push(_Args&&...)): Remove.
+	(stack<>::push(value_type&&), stack<>::emplace(_Args&&...)): Add.
+	(stack<>::push(const value_type&)): Add back.
+	* include/debug/deque (deque<>::push_back(_Args&&...),
+	deque<>::push_front(_Args&&...)): Remove.
+	(deque<>::push_back(value_type&&), deque<>::push_front(value_type&&),
+	deque<>::emplace_back(_Args&&...), deque<>::emplace_front(_Args&&...)):
+	Add.
+	(deque<>::push_back(const value_type&),
+	deque<>::push_front(const value_type&)): Add back.
+	* include/debug/list (list<>::push_back(_Args&&...),
+	list<>::push_front(_Args&&...)): Remove.
+	(list<>::push_back(value_type&&), list<>::push_front(value_type&&),
+	list<>::emplace_back(_Args&&...), list<>::emplace_front(_Args&&...)):
+	Add.
+	(list<>::push_back(const value_type&),
+	list<>::push_front(const value_type&)): Add back.
+	* include/debug/vector (vector<>::push_back(_Args&&...)): Remove.
+	(vector<>::push_back(value_type&&),
+	vector<>::emplace_back(_Args&&...)): Add.
+	(vector<>::push_back(const value_type&)): Add back.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2008-06-13  Paolo Carlini  
+
+	* include/tr1_impl/array (array<>::assign): Do not define in
+	C++0x mode, per DR 776...
+	(array<>::fill): ... define instead.
+	* doc/xml/manual/intro.xml: Add an entry for DR 776.
+	* testsuite/23_containers/array/requirements/fill.cc: New.
+
+2008-06-12  Paolo Carlini  
+
+	* include/std/complex (pow(const complex<>&, int)): Do not define in
+	C++0x mode, per DR 844.
+	* include/tr1/complex (pow(const complex<>&, int)): Remove.
+	* doc/xml/manual/intro.xml: Add an entry for DR 844.
+	* testsuite/26_numerics/complex/dr844.cc: New.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc: Adjust.
+
+2008-06-11  Paolo Carlini  
+
+	* include/tr1_impl/hashtable (_Hashtable<>::cbegin(size_type),
+	cend(size_type)): Add per DR 691.
+	* testsuite/23_containers/unordered_map/requirements/cliterators.cc:
+	New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	cliterators.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/cliterators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	cliterators.cc: Likewise.
+	* doc/xml/manual/intro.xml: Add an entry for DR 691.
+
+2008-06-11  Matthias Klose  
+
+	* testsuite/30_threads/lock_error, testsuite/30_threads/once_flag:
+	Remove empty directories.
+
+2008-06-07  Joseph Myers  
+
+	* configure.host (xscale, ep9312, m680[246]0, solaris2.5,
+	solaris2.5.[0-9], solaris2.6, windiss*): Remove.
+	* crossconfig.m4 (*-solaris2.5, *-solaris2.6, *-windiss*): Remove.
+	* configure: Regenerate.
+	* config/os/solaris/solaris2.5: Remove directory.
+	* config/os/solaris/solaris2.6: Remove directory.
+	* config/os/windiss: Remove directory.
+
+2008-06-06  Benjamin Kosnik  
+
+	* doc/xml/manual/using.xml: Outline exception topics.
+
+	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Format.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	policy_access_fn_imps.hpp: Same.
+	* include/ext/pb_ds/priority_queue.hpp: Same.
+	* include/ext/throw_allocator.h: Same.
+
+	* include/ext/pb_ds/tag_and_trait.hpp (string_tag): New tag.
+	(sequence_tag): New tag. Doxygen markup fixes.
+
+	* testsuite/lib/libstdc++.exp: Remove twister_ran_gen.cc source file.
+
+	* testsuite/performance/ext/pb_ds/text_find_timing.cc: Fix
+	comment typo, include paths, format.
+	* testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	hash_random_int_erase_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	random_int_subscript_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/random_int_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp
+	* testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_join_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_random_int_push_pop_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	random_int_subscript_insert_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc: Same.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp
+	* testsuite/performance/ext/pb_ds/
+	priority_queue_text_pop_mem_usage.cc: Same.
+	* testsuite/performance/ext/pb_ds/
+	hash_zlob_random_int_find_timing.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same.
+	* testsuite/util/regression/trait/priority_queue/trait.hpp: Same.
+	* testsuite/util/regression/trait/erase_if_fn.hpp: Same.
+	* testsuite/util/regression/trait/assoc/native_type_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/node_update_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/get_set_load_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/resize_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/to_string.hpp: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+	* testsuite/util/common_type/priority_queue/string_form.hpp: Same.
+	* testsuite/util/common_type/priority_queue/detail/
+	ds_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	resize_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	trigger_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	comb_hash_fn_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	size_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	probe_fn_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	list_update_policy_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	store_hash_string_form.hpp: Same.
+	* testsuite/util/common_type/assoc/native_set.hpp: Same.
+	* testsuite/util/io/prog_bar.cc: Same.
+
+	* testsuite/util/regression/rand/io: Remove.
+	* testsuite/util/regression/rand/io/priority_queue: Same.
+	* testsuite/util/regression/rand/io/assoc: Same.
+	* testsuite/util/regression/rand/io/priority_queue/
+	xml_formatter.hpp: Consolidate this...
+	* testsuite/util/regression/rand/io/assoc/xml_formatter.hpp: ...this
+	* testsuite/util/regression/rand/io/xml_formatter.hpp: ... and this
+	* testsuite/util/regression/rand/xml_formatter.hpp: ...here.
+
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.hpp:To ...
+	container_rand_regression_test.h: ... this.
+	* testsuite/util/regression/rand/priority_queue/detail/*.hpp:To ...
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.tcc: ... this.
+	PB_DS_THROW_IF_FAIL: Change to _GLIBCXX_THROW_IF, adjust predicate.
+	PB_DS_SET_DESTRUCT_PRINT: Fold inline.
+	PB_DS_CANCEL_DESTRUCT_PRINT: Fold inline.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Adjust includes.
+
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.hpp: To ...
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.h: ... this.
+	* testsuite/util/regression/rand/assoc/detail/*.hpp:To ...
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.tcc: ...this.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Adjust
+	includes.
+
+	* testsuite/util/regression/priority_queue: Remove.
+	* testsuite/util/regression/assoc: Remove.
+	* testsuite/util/regression/priority_queue/
+	common_type.hpp: Consolidate this...
+	* testsuite/util/regression/assoc/common_type.hpp: ... and this
+	* testsuite/util/regression/common_type.hpp: ...here.
+
+	* testsuite/util/rng: Remove.
+	* testsuite/util/rng/twister_rand_gen.cc: Consolidate...
+	* testsuite/util/rng/twister_rand_gen.hpp: ... and this
+	* testsuite/util/testsuite_rng.h: ...here.
+
+	* testsuite/util/native_type/priority_queue: Remove.
+	* testsuite/util/native_type/priority_queue/
+	native_priority_queue.hpp: To...
+	* testsuite/util/native_type/native_priority_queue.hpp: ...here.
+
+	* testsuite/util/native_type/assoc: Remove.
+	* testsuite/util/native_type/assoc/native_multimap.hpp: To...
+	* testsuite/util/native_type/assoc/native_tree_tag.hpp: To...
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: To...
+	* testsuite/util/native_type/assoc/native_set.hpp: To...
+	* testsuite/util/native_type/assoc/native_map.hpp: To...
+	* testsuite/util/native_type/assoc/native_hash_set.hpp: To...
+	* testsuite/util/native_type/assoc/native_hash_tag.hpp: To...
+	* testsuite/util/native_type/assoc/native_hash_map.hpp: To...
+	* testsuite/util/native_type/native_multimap.hpp: ...here.
+	* testsuite/util/native_type/native_tree_tag.hpp: ...here.
+	* testsuite/util/native_type/native_hash_multimap.hpp: ...here.
+	* testsuite/util/native_type/native_set.hpp: ...here.
+	* testsuite/util/native_type/native_map.hpp: ...here.
+	* testsuite/util/native_type/native_hash_set.hpp: ...here.
+	* testsuite/util/native_type/native_hash_tag.hpp: ...here.
+	* testsuite/util/native_type/native_hash_map.hpp: ...here.
+
+	* testsuite/util/common_type/priority_queue/common_type.hpp:
+	Make include guard distinct.
+	* testsuite/util/common_type/assoc/common_type.hpp: Same.
+
+2008-06-06  Joseph Myers  
+
+	* configure.ac: Do not check for gconv.h.
+	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Do not test for gconv.h or
+	gconf.h.  For glibc and uClibc systems, define
+	_GLIBCXX_USE_RANDOM_TR1 and HAVE_MMAP and use AC_LC_MESSAGES and
+	AM_ICONV.
+	* configure, config.h.in: Regenerate.
+
+2008-06-06  Joseph Myers  
+
+	* testsuite/17_intro/headers/all.cc,
+	testsuite/17_intro/headers/all_c++200x_compatibility.cc,
+	testsuite/17_intro/headers/all_pedantic_errors.cc,
+	testsuite/ext/headers.cc: Only include
+	 and  if
+	_GLIBCXX_HAVE_ICONV.
+
+2008-06-05  Johannes Singler  
+
+	* include/parallel/random_shuffle.h:
+	(parallel_random_shuffle_drs) Get the actual number of
+	threads after entering the parallel region. Indentation.
+	* include/parallel/algo.h: (random_shuffle(begin, end))
+	Add namespace qualification to avoid ambiguity.
+
+2008-06-04  Benjamin Kosnik  
+
+	* include/ext/pb_ds/assoc_container.hpp: Change allocator typedef
+	to allocator_type, as per existing conventions.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	binomial_heap_base_.hpp: Same.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Same.
+	* include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	left_child_next_sibling_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	rc_binomial_heap_.hpp: Same.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+	* include/ext/pb_ds/list_update_policy.hpp: Same.
+	* include/ext/pb_ds/exception.hpp: Same.
+	* include/ext/pb_ds/tree_policy.hpp: Same.
+	* include/ext/pb_ds/trie_policy.hpp: Same.
+	* include/ext/pb_ds/priority_queue.hpp: Same.
+	* testsuite/util/regression/trait/assoc/trait.hpp: Same.
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	defs_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/detail/
+	operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/defs_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/detail/
+	operator_fn_imps.hpp: Same.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.hpp: Same.
+	* testsuite/util/native_type/assoc/native_multimap.hpp: Same.
+	* testsuite/util/native_type/assoc/native_hash_multimap.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	tree_supports_order_statistics.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	trie_supports_prefix_search.hpp: Same.
+	* testsuite/util/common_type/assoc/detail/
+	trie_supports_order_statistics.hpp: Same.
+
+2008-06-02  Sandra Loosemore  
+	    Daniel Jacobowitz  
+
+	* testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc: Use
+	dg-require-fileio.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc: Likewise.
+
+2008-06-02  Paolo Carlini  
+
+	* include/bits/vector.tcc (vector<>::_M_insert_aux): In C++0x mode,
+	avoid a memory leak if the first __uninitialized_move_a throws.
+	(vector<>::_M_fill_insert): Do not always copy to __x_copy, similarly
+	to _M_insert_aux.
+	* testsuite/23_containers/vector/modifiers/moveable.cc: Adjust.
+	* testsuite/23_containers/vector/resize/moveable.cc: Likewise.
+
+2008-05-31  Paolo Carlini  
+	    Chris Jefferson  
+
+	PR libstdc++/36338
+	* include/bits/stl_heap.h (sort_heap): Use __pop_heap directly.
+	(pop_heap): Slightly tweak.
+
+2008-05-29  Paolo Carlini  
+
+	* include/debug/bitset (bitset(const char*)): Implement DR 778
+	in debug-mode too.
+
+	* include/bits/cpp_type_traits.h (__is_integer): In C++0x mode
+	deal with char16_t and char32_t.
+
+2008-05-26  Paolo Carlini  
+
+	* include/c_global/cmath (pow(float, int), pow(double, int),
+	pow(long double, int)): Do not define in C++0x mode, per DR 550.
+	* include/tr1_impl/cmath (pow): Do not bring in unconditionally
+	from namespace std.
+	* include/tr1/cmath (pow(double, double), pow(float, float),
+	pow(long double, long double), pow(_Tp, _Up)): Define.
+	* include/tr1/complex (pow): Do not bring in from namespace std.
+	(pow(const std::complex<_Tp>&, int), pow(const std::complex<_Tp>&,
+	const _Tp&), pow(const _Tp&, const std::complex<_Tp>&),
+	pow(const std::complex<_Tp>&, const std::complex<_Tp>&)): Define.
+	* include/tr1_impl/complex (pow(const std::complex<_Tp>&,
+	const _Up&), pow(const _Tp&, const std::complex<_Up>&),
+	pow(const std::complex<_Tp>&, const std::complex<_Up>&)): Always
+	define.
+	* doc/xml/manual/intro.xml: Add an entry for DR 550.
+	* testsuite/26_numerics/headers/cmath/dr550.cc: New.
+	* testsuite/tr1/8_c_compatibility/cmath/overloads.cc: Adjust.
+
+2008-05-25  Paolo Carlini  
+
+	* include/std/tuple: Ifndef __GXX_EXPERIMENTAL_CXX0X__ just error out.
+	* include/std/date_time: Likewise.
+	* include/std/system_error: Likewise.
+	* include/std/type_traits: Likewise; fix typo in macro name.
+	* include/std/regex: Likewise.
+	* include/std/random: Likewise.
+	* include/std/unordered_map: Likewise.
+	* include/std/condition_variable: Likewise.
+	* include/std/unordered_set: Likewise.
+	* include/std/mutex: Likewise.
+	* include/std/array: Likewise.
+
+	* include/c_std/cmath: Fix obsolete comment.
+	* include/c_global/cmath: Likewise.
+
+2008-05-25  Paolo Carlini  
+
+	* include/std/complex (complex<>::real(_Tp), complex<>::imag(_Tp),
+	complex::real(float), complex::imag(float),
+	complex::real(double), complex::imag(double),
+	complex::real(long double),
+	complex::imag(long double)): Add per DR 387.
+	(complex<>::real(), complex<>::imag(), complex::real(),
+	complex::imag(), complex::real(),
+	complex::imag(), complex::real(),
+	complex::imag(long double)): Adjust in C++0x mode.
+	(real(complex<>&), imag(complex<>&), real(const complex<>&),
+	imag(const complex<>&)): Likewise.
+	* testsuite/26_numerics/complex/dr387.cc: New.
+	* doc/xml/manual/intro.xml: Add an entry for DR 387.
+
+2008-05-25  Paolo Carlini  
+
+	* include/std/complex: Trivial stylistic changes, define inline
+	members inline, consistently with the rest of the library.
+	(pow(const _Tp&, const complex<>&)): Minor tweak.
+
+2008-05-24  Paolo Carlini  
+
+	* src/atomic.cc (atomic_flag_test_and_set_explicit,
+	atomic_flag_clear_explicit): Suppress unused parameter warnings.
+
+2008-05-23  Paolo Carlini  
+
+	* include/std/tuple: Replace int -> size_t throughout per DR 775.
+	* include/tr1_impl/array: Likewise.
+	* include/tr1_impl/utility: Likewise.
+	* doc/xml/manual/intro.xml: Add an entry for DR 775.
+
+2008-05-23  Paolo Carlini  
+
+	* doc/xml/manual/intro.xml: Adjust links to ISO documents.
+
+2008-05-23  Paolo Carlini  
+
+	* include/c_std/cmath (fpclassify): Use __builtin_fpclassify.
+	* include/c_global/cmath (fpclassify): Likewise.
+
+2008-05-22  Paolo Carlini  
+
+	* include/tr1_impl/hashtable_policy.h (_Map_base<,,
+	std::_Select1st<_Pair>, true,>::at): Add per DR 761.
+	* testsuite/23_containers/unordered_map/dr761.cc: New.
+	* doc/xml/manual/intro.xml: Add an entry for DR 761.
+
+2008-05-22  Paolo Carlini  
+
+	* testsuite/26_numerics/complex/dr781.cc: Add test variable.
+
+2008-05-22  Paolo Carlini  
+
+	* include/std/complex (proj(const std::complex<>&), proj(_Tp)):
+	Add per DR 781.
+	* include/tr1_impl/complex(polar(const _Tp&, const _Up&)): Move to...
+	* include/tr1/complex: ... here.
+	* doc/xml/manual/intro.xml: Add an entry for DR 781.
+	* testsuite/26_numerics/complex/dr781.cc: Add.
+	* acinclude.m4 ([GLIBCXX_ENABLE_C99]): Update.
+	* configure: Regenerate.
+
+2008-05-21  Paolo Carlini  
+
+	* include/std/bitset (bitset<>::bitset(const char*)): Add per DR 778.
+	(bitset<>::_M_copy_from_ptr): Add.
+	(bitset<>::_M_copy_from_string): Forward to the latter.
+	* doc/xml/manual/intro.xml: Add an entry for DR 778.
+	* testsuite/23_containers/bitset/cons/2.cc: Add.
+
+2008-05-21  Paolo Carlini  
+
+	* doc/html/ext/lwg-active.html: Update to Revision R56.
+	* doc/html/ext/lwg-closed.html: Likewise.
+	* doc/html/ext/lwg-defects.html: Likewise.
+
+2008-05-20  Paolo Carlini  
+
+	PR c++/33979 (partial)
+	* include/tr1_impl/functional_hash.h (hash,
+	hash): Add specializations.
+	* include/tr1_impl/type_traits (is_integral,
+	is_integral): Likewise.
+	* include/std/limits (numeric_limits,
+	numeric_limits): Likewise.
+	* src/limits_c++0x.cc: Add.
+	* src/Makefile.am: Update.
+	* testsuite/20_util/hash/requirements/explicit_instantiation.cc:
+	Update.
+	* testsuite/20_util/is_integral/value.cc: New.
+	* testsuite/20_util/is_integral/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_integral/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/18_support/numeric_limits/char16_32_t.cc: Likewise.
+	* config/abi/pre/gnu.ver: Export new numeric_limits symbols at
+	GLIBCXX_3.4.11.
+	* configure: Regenerate.
+	* src/Makefile.in: Likewise.
+	* config.h.in: Likewise.
+
+2008-05-16  Benjamin Kosnik  
+
+	* include/std/system_error: Align to current draft specifications.
+	* src/system_error.cc: Same.
+	* src/functexcept.cc: Adjust for corrected system_error construction.
+	* include/std/ostream: Adjust error_code inserter.
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove sys_nerr test.
+	* config/abi/pre/gnu.ver: Add new exports.
+
+	* testsuite/util/testsuite_error.h: Consolidate error testing
+	utilities here.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Use
+	testsuite_error, adjust line numbers and constructor calls.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Same.
+	* testsuite/19_diagnostics/error_category/cons/default.cc: Same.
+	* testsuite/19_diagnostics/error_category/operators/equal.cc: Same.
+	* testsuite/19_diagnostics/error_category/operators/not_equal.cc: Same.
+	* testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc:
+	Same.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-1.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-2.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-big.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-3.cc: Same.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Same.
+
+2008-05-15  Bernd Schmidt  
+
+	* configure.ac: Don't check AC_LIBTOOL_DLOPEN if using newlib.
+	* configure: Regenerate.
+
+2008-05-15  Johannes Singler  
+
+	* xml/manual/parallel_mode.xml:
+	General revision and documentation of new compile-time
+	options for sorting.
+
+2008-05-14  Benjamin Kosnik  
+
+	* include/std/mutex (mutex::try_lock): Eat errors.
+	(mutex::unlock): Same.
+	(recursive_mutex::try_lock): Eat errors.
+	(recursive_mutex::unlock): Same.
+	* testsuite/30_threads/mutex/dest/destructor_locked.cc: Add
+	-pthreads, adjust line numbers.
+	* testsuite/30_threads/mutex/native_handle/1.cc: Same.
+	* testsuite/30_threads/mutex/cons/1.cc: Same.
+	* testsuite/30_threads/mutex/try_lock/1.cc: Same.
+	* testsuite/30_threads/mutex/try_lock/2.cc: Same.
+	* testsuite/30_threads/mutex/lock/1.cc: Same.
+	* testsuite/30_threads/mutex/unlock/1.cc: Same.
+	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Same.
+	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/1.cc: Same.
+
+2008-05-14  Benjamin Kosnik  
+
+	* include/std/sstream: Adjust braces.
+	* include/bits/fstream.tcc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Add
+	-shared-libgcc.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Same.
+
+	* doc/doxygen/user.cfg.in: Remove thread include.
+
+2008-05-13  David Daney  
+
+	* config/cpu/mips/atomicity.h: Remove file.
+	* config/cpu/mips: Remove directory.
+	* configure.host: Remove host specific handling for mips*-*-*.
+
+2008-05-12  Stefano Soffia  
+	    Paolo Carlini  
+
+	* include/debug/vector (vector<>::_M_requires_reallocation): Just
+	use this->capacity().
+	(vector<>::capacity): Move non-pedantic / pedantic logic here.
+	* testsuite/23_containers/vector/
+	debug_mode_requires_reallocation-2.cc: New.
+
+	* testsuite/23_containers/vector/debug_mode_requires_reallocation.cc:
+	Rename to debug_mode_requires_reallocation-1.cc
+
+2008-05-10  Roberto Bagnara  
+	    Paolo Carlini  
+
+	* include/debug/vector (vector<>::_M_requires_reallocation): Fix macro.
+	* testsuite/23_containers/vector/debug_mode_requires_reallocation.cc:
+	New.
+
+2008-05-07  Johannes Singler  
+
+	* include/parallel/quicksort.h:
+	(parallel_sort_qs_conquer) Explicitly request number of threads
+	in the parallel clause.
+	(parallel_sort_qs) Remove setting the number of threads globally.
+
+2008-05-06  Benjamin Kosnik  
+
+	* include/std/mutex (mutex::mutex): Fix usage of initializing macro.
+	(recursive_mutex::recursive_mutex): Same.
+	(once_flag::once_flag): Same.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Fix line numbers.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same.
+
+2008-05-06  Benjamin Kosnik  
+
+	* include/std/condition_variable: New.
+	* include/std/mutex: New.
+	* src/condition_variable.cc: New.
+	* src/mutex.cc: New.
+	* include/bits/functexcept.h: Add __throw_system_error varients.
+	* src/functexcept.cc: Same.
+	* config/abi/pre/gnu.ver: Add exports.
+
+	* doc/xml/manual/using.xml: Add new includes.
+	* doc/doxygen/user.cfg.in: Doxygen support.
+	* doc/doxygen/doxygroups.cc: Same.
+
+	* include/Makefile.am: Add mutex, condition_variable.
+	* include/Makefile.in: Regenerated.
+	* src/Makefile.am: Add mutex.cc, condition_variable.cc.
+	* src/Makefile.in: Regenerated.
+
+	* testsuite/30_threads: New.
+	* testsuite/30_threads/lock_error: New.
+	* testsuite/30_threads/mutex: New.
+	* testsuite/30_threads/mutex/dest: New.
+	* testsuite/30_threads/mutex/dest/destructor_locked.cc: New.
+	* testsuite/30_threads/mutex/native_handle: New.
+	* testsuite/30_threads/mutex/native_handle/1.cc: New.
+	* testsuite/30_threads/mutex/cons: New.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: New.
+	* testsuite/30_threads/mutex/cons/1.cc: New.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: New.
+	* testsuite/30_threads/mutex/requirements: New.
+	* testsuite/30_threads/mutex/requirements/typedefs.cc: New.
+	* testsuite/30_threads/mutex/try_lock: New.
+	* testsuite/30_threads/mutex/try_lock/1.cc: New.
+	* testsuite/30_threads/mutex/try_lock/2.cc: New.
+	* testsuite/30_threads/mutex/lock: New.
+	* testsuite/30_threads/mutex/lock/1.cc: New.
+	* testsuite/30_threads/mutex/unlock: New.
+	* testsuite/30_threads/mutex/unlock/1.cc: New.
+	* testsuite/30_threads/recursive_mutex: New.
+	* testsuite/30_threads/recursive_mutex/dest: New.
+	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New.
+	* testsuite/30_threads/recursive_mutex/native_handle: New.
+	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: New.
+	* testsuite/30_threads/recursive_mutex/cons: New.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New.
+	* testsuite/30_threads/recursive_mutex/cons/1.cc: New.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New.
+	* testsuite/30_threads/recursive_mutex/requirements: New.
+	* testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New.
+	* testsuite/30_threads/lock_guard: New.
+	* testsuite/30_threads/lock_guard/requirements: New.
+	* testsuite/30_threads/lock_guard/requirements/typedefs.cc: New.
+	* testsuite/30_threads/lock_guard/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/30_threads/headers: New.
+	* testsuite/30_threads/headers/mutex: New.
+	* testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New.
+	* testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New.
+	* testsuite/30_threads/headers/condition_variable: New.
+	* testsuite/30_threads/headers/condition_variable/
+	types_std_c++0x.cc: New.
+	* testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New.
+	* testsuite/30_threads/once_flag: New.
+	* testsuite/30_threads/unique_lock: New.
+	* testsuite/30_threads/unique_lock/requirements: New.
+	* testsuite/30_threads/unique_lock/requirements/typedefs.cc: New.
+	* testsuite/30_threads/unique_lock/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/17_intro/headers/c++200x/all.cc: Add new includes.
+
+2008-05-06  Benjamin Kosnik  
+
+	PR libstdc++/36130
+	* include/bits/c++config: Namespace macros and setup only in C++.
+	* testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: New.
+
+2008-05-06  Johannes Singler  
+
+	* include/parallel/multiway_merge.h:
+	  (multiway_merge_*_unguarded):
+	  Pass sentinel directly, to allow correct determination.
+	  (multiway_merge_loser_tree_unguarded):
+	  Remove over-cautious assertion.
+	  (calls to multiway_merge_*_splitting):
+	  Parametrize with type that is correct in all cases.
+	* include/parallel/losertree.h:
+	  (delete_min_insert (in many classes)):
+	  Correct and standardize assertions.
+
+2008-05-05  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_visualization.h: Move contents into...
+	* testsuite/util/testsuite_performance.h: ...here.
+	* testsuite/util/testsuite_common_types.h: Move
+	performance-related test infrastructure into
+	testsuite_performance.
+	* testsuite/performance/25_algorithms/search_n.cc: Fix includes.
+	* testsuite/performance/23_containers/find/map.cc: Same.
+	* testsuite/performance/23_containers/create/map.cc: Same.
+	* testsuite/performance/23_containers/insert_erase/associative.cc: Same.
+	* testsuite/performance/23_containers/insert/sequence.cc: Same.
+	* testsuite/performance/23_containers/insert/associative.cc: Same.
+	* testsuite/performance/23_containers/create_from_sorted/set.cc: Same.
+	* testsuite/performance/23_containers/index/map.cc: Same.
+	* testsuite/performance/23_containers/insert_from_sorted/set.cc: Same.
+	* testsuite/performance/23_containers/create_sort/list.cc: Same.
+	* testsuite/performance/23_containers/sort_search/list.cc: Same.
+	* testsuite/performance/23_containers/producer_consumer/sequence.cc:
+	Same.
+	* testsuite/performance/23_containers/producer_consumer/associative.cc:
+	Same.
+
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+
+2008-05-05  Benjamin Kosnik  
+
+	* 20_util/make_signed/requirements/typedefs-1.cc: Correct requirements.
+	* 20_util/make_unsigned/requirements/typedefs-1.cc: Same.
+
+2008-05-01  Benjamin Kosnik  
+
+	* include/bits/c++config: Revert _GLIBCXX_LONG_DOUBLE_COMPAT change.
+
+2008-04-30  Ralf Wildenhues  
+
+	* include/Makefile.am (install-headers): Cope with empty
+	parallel_headers.
+	* include/Makefile.in: Regenerate.
+
+2008-04-29  Benjamin Kosnik  
+
+	* include/bits/c++config: Remove space between '#' and 'undef' for
+	_GLIBCXX_LONG_DOUBLE_COMPAT.
+
+2008-04-29  Joseph Myers  
+
+	* Makefile.am (install-html, install-pdf): Add dummy targets.
+	* Makefile.in: Regenerate.
+	* doc/Makefile.am (install-html, install-pdf): Remove.
+	* doc/Makefile.in: Regenerate.
+
+2008-04-28  Benjamin Kosnik  
+
+	* include/bits/c++config: Move os_defines and cpu_defines after
+	namespace definitions and base macros.
+
+2008-04-28  Benjamin Kosnik  
+
+	PR libstdc++/35887
+	* acinclude.m4 (GLIBCXX_ENABLE_PARALLEL): Revert back to just
+	checking for omp.h.
+	* configure: Regenerate.
+
+2008-04-25  Benjamin Kosnik  
+
+	PR libstdc++/35922
+	* include/std/unordered_map: Include debug/unordered_map if
+	_GLIBCXX_DEBUG.
+	* testsuite/23_containers/unordered_map/requirements/debug.cc: Move...
+	* testsuite/23_containers/unordered_map/requirements/
+	debug_container.cc: ...here.
+	* testsuite/23_containers/unordered_map/requirements/debug_mode.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/debug.cc: Move...
+	* testsuite/23_containers/unordered_set/requirements/
+	debug_container.cc: ...here.
+	* testsuite/23_containers/unordered_set/requirements/debug_mode.cc: New.
+
+2008-04-25  Benjamin Kosnik  
+
+	PR libstdc++/35887
+	* acinclude.m4: (GLIBCXX_ENABLE_PARALLEL): Check for thread support.
+	* configure.ac: Re-order compiler macros.
+	* configure: Regenerated.
+
+2008-04-24  Benjamin Kosnik  
+
+	PR libstdc++/35887
+	* configure.ac: Add default argument to GLIBCXX_ENABLE_PARALLEL.
+	Move atomic warnings to GLIBCXX_ENABLE_ATOMIC_BUILTINS.
+	* acinclude.m4 (GLIBCXX_ENABLE_PARALLEL): Check for --disable-libgomp.
+	(GLIBCXX_ENABLE_ATOMIC_BUILTINS): Add warning information.
+	* configure: Regenerate.
+	* include/Makefile.am (parallel_headers): Make conditional on
+	ENABLE_PARALLEL.
+	* include/Makefile.in: Regenerate.
+
+2008-04-24  Paolo Carlini  
+
+	PR libstdc++/35969
+	* include/debug/list (merge): Use _M_transfer_iter, consistently
+	with the splice members.
+	* testsuite/23_containers/list/operations/35969.cc: New.
+
+	* testsuite/23_containers/list/operators: Rename to
+	testsuite/23_containers/list/operations.
+
+2008-04-24  Benjamin Kosnik  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Check for set of
+	all used __sync builtins, in two sizes.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* src/atomic.cc: Use  _GLIBCXX_ATOMIC_BUILTINS_1.
+	* include/ext/atomicity.h: Use  _GLIBCXX_ATOMIC_BUILTINS_4.
+	* libsupc++/guard.cc: Use  _GLIBCXX_ATOMIC_BUILTINS_4.
+	* doc/xml/manual/concurrency.xm: Update docs.
+
+2008-04-23  Benjamin Kosnik  
+
+	* config/os/hpux/os_defines.h: Use _GLIBCXX_BEGIN_NAMESPACE,
+	_GLIBCXX_BEGIN_EXTERN_C, etc.
+
+2008-04-23  Johannes Singler  
+
+	* include/parallel/quicksort.h: Reformat,
+	(parallel_sort_qs): Do not pass number of elements.
+	* include/parallel/balanced_quicksort.h: Reformat,
+	(parallel_sort_qsb): Do not pass number of elements.
+	* include/parallel/tags.h:
+	Introduce new tags for compile-time choice.
+	* include/parallel/merge.h:
+	(parallel_merge_advance):Beautified.
+	* include/parallel/algo.h: Reformatting (spaces for tabs)
+	New sort and stable_sort variants, corresponding to the tags.
+	* include/parallel/sort.h:
+	New sort and stable_sort variants, corresponding to the tags.
+	Changed determining the desired number of threads.
+
+2008-04-23  Johannes Singler  
+
+	* include/parallel/multiway_merge.h
+	(multiway_merge_loser_tree):
+	Leave checks to callers, add precondition instead.
+	(multiway_merge_loser_tree_unguarded): Likewise.
+	(multiway_merge_loser_tree_sentinel): Likewise.
+	(sequential_multiway_merge): Added checks for total length 0.
+	(parallel_multiway_merge): Skip empty sequences.
+	(multiway_merge, all variants):
+	Remove temporary variable, return directly.
+	(stable_multiway_merge, all variants): Likewise.
+	(multiway_merge_sentinels, all variants):  Likewise.
+	(stable_multiway_merge_sentinels, all variants): Likewise.
+	* include/parallel/multiseq_selection.h
+	(multiseq_partition): More detailed assertions.
+
+2008-04-21  Ralf Wildenhues  
+
+	* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT, GLIBCXX_ENABLE_C99)
+	(GLIBCXX_CHECK_C99_TR1, GLIBCXX_CHECK_RANDOM_TR1)
+	(GLIBCXX_ENABLE_VISIBILITY): Fix cache variable names.
+	(GLIBCXX_CHECK_SYSTEM_ERROR): Likewise.  Factorize.
+	* configure: Regenerate.
+
+2008-04-20  Ralf Wildenhues  
+
+	PR libstdc++/35954
+	* include/Makefile.am (pch*_output): Do not touch pch*_output_anchor.
+	Call 'mkdir -p' unconditionally, but ignore its return value.
+	* include/Makefile.in: Regenerate.
+
+	* include/Makefile.am: Fix most stamp rules to regenerate
+	the links for all sources newer than the stamp file.
+	* include/Makefile.in: Regenerate.
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2008-04-18  Paolo Bonzini  
+
+	PR bootstrap/35457
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2008-04-16  Andreas Tobler  
+
+	PR libstdc++/35915
+	* configure.ac: Use GCC_HEADER_STDINT.
+	* src/atomic.cc: Include gstdint.h
+	* configure: Regenerate.
+	* Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* aclocal.m4: Likewise.
+
+2008-04-14  Benjamin Kosnik  
+
+	PR libstdc++/35816
+	* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Set CXXFLAGS to
+	-O0 when checking for atomic builtins.
+	* configure: Regenerate.
+
+2008-04-14  Benjamin Kosnik  
+
+	* include/bits/c++config: Guard _LDBL_ macros with __cplusplus.
+
+2008-04-10  Benjamin Kosnik  
+
+	* doc/html/*: Regenerate.
+
+2008-04-10  Ralf Wildenhues  
+
+	* doc/xml/manual/bitmap_allocator.xml: Improve wording a bit.
+	* doc/xml/authors.xml: Fix typos.
+	* doc/xml/faq.xml: Likewise.
+	* doc/xml/manual/abi.xml: Likewise.
+	* doc/xml/manual/allocator.xml: Likewise.
+	* doc/xml/manual/appendix_contributing.xml: Likewise.
+	* doc/xml/manual/backwards_compatibility.xml: Likewise.
+	* doc/xml/manual/build_hacking.xml: Likewise.
+	* doc/xml/manual/codecvt.xml: Likewise.
+	* doc/xml/manual/concurrency.xml: Likewise.
+	* doc/xml/manual/ctype.xml: Likewise.
+	* doc/xml/manual/debug_mode.xml: Likewise.
+	* doc/xml/manual/diagnostics.xml: Likewise.
+	* doc/xml/manual/evolution.xml: Likewise.
+	* doc/xml/manual/extensions.xml: Likewise.
+	* doc/xml/manual/locale.xml: Likewise.
+	* doc/xml/manual/messages.xml: Likewise.
+	* doc/xml/manual/parallel_mode.xml: Likewise.
+	* doc/xml/manual/status_cxx200x.xml: Likewise.
+	* doc/xml/manual/strings.xml: Likewise.
+	* doc/xml/manual/support.xml: Likewise.
+	* doc/xml/manual/test.xml: Likewise.
+	* doc/xml/manual/using.xml: Likewise.
+
+2008-04-10  Benjamin Kosnik  
+	    Johannes Singler  
+
+	* doc/xml/manual/parallel_mode.xml: Remove map/set bulk
+	insertors. Correct omp_set_num_threads example.
+
+2008-04-10  Benjamin Kosnik  
+
+	* include/c_global/cstdatomic: C++ types only, format, doxygen markup.
+	* include/c_compatibility/stdatomic.h: "C" only, format, doxygen markup.
+	* src/atomic.c: Format, doxygen markup, edits.
+
+	* include/Makefile.am (cstdatomic, stdatomic.h): Add.
+	* src/Makefile.am (atomic.c): Add.
+	* acinclude.m4 (GLIBCXX_CHECK_STANDARD_LAYOUT): New.
+	* configure.ac: Call it.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.in: Same.
+	* Makefile.in: Same.
+	* doc/Makefile.in: Same.
+	* po/Makefile.in: Same.
+	* libmath/Makefile.in: Same.
+	* include/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* config.h.in: Same.
+	* configure: Same.
+
+	* config/abi/pre/gnu.ver: Add atomics exports.
+
+	* include/ext/typelist.h (apply_generator): New.
+	* include/bits/c++config (_GLIBCXX_BEGIN_EXTERN_C): New.
+	(_GLIBCXX_END_EXTERN_C): New.
+	Deal with _GLIBCXX_BEGIN_NAMESPACE, _GLIBCXX_END_NAMESPACE when
+	compiling as C.
+	* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): Add -L
+	flag for libstdc++.
+	* testsuite/util/testsuite_common_types.h (integral_types): New
+	typelist.
+	(atomics, atomics_tl): Same.
+	(assignable, default_constructible, copy_constructible,
+	explicit_value_constructible): New.
+	* testsuite/17_intro/headers/c++200x/all.cc: Test new headers.
+	* testsuite/29_atomics: New.
+	* testsuite/29_atomics/atomic_address: Same.
+	* testsuite/29_atomics/atomic_address/cons: Same.
+	* testsuite/29_atomics/atomic_address/cons/explicit_value.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Same.
+	* testsuite/29_atomics/atomic_flag: Same.
+	* testsuite/29_atomics/atomic_flag/cons: Same.
+	* testsuite/29_atomics/atomic_flag/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/aggregate.cc: Same.
+	* testsuite/29_atomics/atomic_flag/requirements: Same.
+	* testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc:
+	Same.
+	* testsuite/29_atomics/atomic_flag/
+	atomic_global_fence_compatibility.cc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Same.
+	* testsuite/29_atomics/headers: Same.
+	* testsuite/29_atomics/headers/cstdatomic: Same.
+	* testsuite/29_atomics/headers/cstdatomic/types_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/cstdatomic/functions_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/cstdatomic/std_c++0x_neg.cc: Same.
+	* testsuite/29_atomics/headers/cstdatomic/macros.cc: Same.
+	* testsuite/29_atomics/headers/stdatomic.h: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/macros.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/types.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/functions.c: Same.
+	* testsuite/29_atomics/atomic: Same.
+	* testsuite/29_atomics/atomic/cons: Same.
+	* testsuite/29_atomics/atomic/cons/explicit_value.cc: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic/requirements: Same.
+	* testsuite/29_atomics/atomic/requirements/explicit_instantiation: Same.
+	* testsuite/29_atomics/atomic/requirements/explicit_instantiation/
+	1.cc: Same.
+
+2008-04-10  Lawrence Crowl  
+
+	* include/c_global/cstdatomic: New.
+	* include/c_compatibility/stdatomic.h: New.
+	* src/atomic.c: New.
+
+2008-04-10  Benjamin Kosnik  
+
+	* include/std/tuple: Consistency check for include guard, doxygen
+	file markup.
+	* include/std/date_time: Same.
+	* include/std/type_traits: Same.
+	* include/std/regex: Same.
+	* include/std/array: Same.
+	* include/std/system_error: Same, add error_code ctor.
+
+2008-04-07  Johannes Singler  
+
+	* include/parallel/multiway_merge.h: Moved decisions to
+	compile-time instead of run-time.
+	* include/parallel/losertree.h: Removed obsolete variants, added
+	variant that uses pointers in the loser tree.
+	* include/parallel/types.h: Remove obsolete settings options from enum.
+	* include/parallel/features.h: Remove obsolete compile-time switches.
+	* include/parallel/compiletime_settings.h: Remove obsolete variant
+	that copies back *after* sorting.
+	* include/parallel/tags.h: Add one new tag for compile-time switch.
+	* include/parallel/merge.h: Adapt to changes in multiway_merge.h.
+	* include/parallel/multiway_mergesort.h: Adapt to changes in
+	multiway_merge.h. Factor out splitting variants. Remove obsolete
+	variant that copies back *after* sorting.
+	* include/parallel/sort.h: Adapt to changes in multiway_mergesort.h.
+	* testsuite/25_algorithms/sort/35588.cc: Added test case from /
+	for PR 35588.
+
+2008-03-29  Paolo Carlini  
+
+	PR libstdc++/35725
+	* include/bits/stl_algobase.h (__fill_a(_ForwardIterator,
+	_ForwardIterator, _Tp), __fill_a(_Tp*, _Tp*, _Tp),
+	__fill_n_a(_OutputIterator, _Size, _Tp), __fill_n_a(_Tp*, _Size,
+	_Tp)): Fix signatures.
+	* testsuite/25_algorithms/fill/35725.cc: New.
+	* testsuite/25_algorithms/fill_n/35725.cc: Likewise.
+
+2008-03-29  Matthias Klose  
+
+	* config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
+	* config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/mips-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Likewise.
+
+2008-03-27  Ian Lance Taylor  
+
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Set
+	glibcxx_ld_is_gold.  Check for gold in --gc-sections test.
+	(GLIBCXX_ENABLE_SYMVERS): Check for gold.
+	* aclocal.m4, configure: Rebuild.
+
+2008-03-26  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_abi.h: Remove symbol_objects,
+	symbol_names typedefs.
+	* testsuite/util/testsuite_abi.cc (compare_symbols): Correct check
+	for long double compatiblity symbols, simplify data structures used.
+
+2008-03-25  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Remove html_output_dir. Downgrade to
+	Doxygen 1.5.1.
+	* doc/doxygen/style.css: Delete.
+	* doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.5.1.
+	(INPUT): Update.
+	(PREDEFINED): Update.
+	(HTML_OUTPUT): Remove html_output_dir, use html.
+	(HTML_STYLESHEET): Remove style.css.
+	* doc/doxygen/tables.html: Remove style.css use.
+	* doc/doxygen/mainpage.html: Nested lists for Namespaces and Classes.
+	* doc/doxygen/doxygroups.cc: Namespace edits.
+	* doc/doxygen/Intro.3: Correct typo.
+
+	* doc/xml/api.xml: Add gcc-4.3 links.
+	* doc/html/api.html: Regenerate.
+
+	* include/debug/debug.h: Document namepaces here.
+	* include/parallel/base.h: Same.
+	* include/ext/typelist.h: Same.
+	* include/ext/pb_ds/tag_and_trait.hpp: Same.
+
+	* include/tr1_impl/random: Adjust line break.
+	* include/tr1_impl/unordered_map: Correct and or add markup.
+	* include/tr1_impl/boost_shared_ptr.h: Correct and or add markup.
+	* include/tr1_impl/functional_hash.h: Same.
+	* include/tr1_impl/cmath: Same.
+	* include/tr1_impl/functional: Same.
+	* include/tr1_impl/unordered_set: Same.
+	* include/tr1_impl/complex: Same.
+	* include/tr1_impl/type_traits: Same.
+	* include/tr1_impl/regex: Same.
+	* include/tr1_impl/array: Same.
+	* include/std/tuple: Same.
+	* include/std/date_time: Same.
+	* include/std/system_error: Same.
+	* include/std/type_traits: Same.
+	* include/ext/enc_filebuf.h: Same.
+	* include/ext/throw_allocator.h: Same.
+	* include/ext/pool_allocator.h: Same.
+	* include/ext/bitmap_allocator.h: Same.
+	* include/ext/concurrence.h: Same.
+	* include/ext/codecvt_specializations.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/ext/array_allocator.h: Same.
+	* include/ext/mt_allocator.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/codecvt.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/allocator.h: Same.
+	* include/bits/locale_facets_nonio.h: Same.
+	* include/tr1/poly_laguerre.tcc: Same.
+	* include/tr1/riemann_zeta.tcc: Same.
+	* include/tr1/beta_function.tcc: Same.
+	* include/tr1/tuple: Same.
+	* include/tr1/exp_integral.tcc: Same.
+	* include/tr1/gamma.tcc: Same.
+	* include/tr1/hypergeometric.tcc: Same.
+	* include/tr1/modified_bessel_func.tcc: Same.
+	* include/tr1/legendre_function.tcc: Same.
+	* include/tr1/type_traits: Same.
+	* include/tr1/special_function_util.h: Same.
+	* include/tr1/bessel_function.tcc: Same.
+	* include/tr1/cmath: Same.
+	* include/tr1/poly_hermite.tcc: Same.
+	* include/tr1/ell_integral.tcc: Same.
+	* config/abi/compatibility.h: Adjust file name.
+
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Adjust
+	line numbers.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+
+2008-03-23  Paolo Carlini  
+
+	* doc/xml/faq.xml: Fix various links.
+	* doc/xml/api.xml: Likewise.
+	* doc/xml/manual/parallel_mode.xml: Likewise.
+	* doc/html/faq.html: Regenerate.
+	* doc/html/api.html: Likewise.
+	* doc/html/manual/bk01pt12ch31s03.html: Likewise.
+
+2008-03-20  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_abi.cc: Add support for not counting
+	GLIBCXX_LDBL_* compat symbols missing if no long double compat
+	symbols under test.
+
+2008-03-20  Paolo Carlini  
+
+	PR libstdc++/35637
+	* include/tr1_impl/type_traits (struct __in_array): Add back.
+	(is_function): Use it.
+	* testsuite/tr1/4_metaprogramming/is_function/35637.cc: New.
+
+2008-03-20  Johannes Singler  
+
+	* include/parallel/set_operations.h (set_intersection): Remove.
+
+2008-03-19  Benjamin Kosnik  
+
+	PR libstdc++/35256
+	* doc/xml/manual/parallel_mode.xml: Correct configuration documentation.
+	* doc/html/manual/bk01pt12ch31s04.html: Regenerate.
+
+2008-03-18  Benjamin Kosnik  
+
+	* configure.ac (libtool_VERSION): To 6:11:0.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2008-03-16  Paolo Carlini  
+
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc:
+	Update.
+	* testsuite/17_intro/headers/c++200x/all.cc: Likewise.
+	* include/precompiled/stdc++.h: Likewise.
+
+2008-03-16  Pedro Lamarão  
+
+	* include/std/date_time: New file.
+	* src/date_time.cc: New file.
+	* config/abi/pre/gnu.ver: Added  symbols in version
+	GLIBCXX_3.4.11 and changed two patterns in version GLIBCXX_3.4
+	that matched new symbols.
+	* include/Makefile.am: Add date_time in std headers.
+	* src/Makefile.am: Add date_time.cc to source files.
+	* include/Makefile.in: Regenerate.
+	* src/Makefile.in: Likewise.
+
+2008-03-16  Pedro Lamarão  
+
+	* testsuite/31_date_time/headers/date_time/types_std.cc: New.
+	* testsuite/31_date_time/headers/date_time/std_c++0x_neg.cc: Likewise.
+	* testsuite/31_date_time/headers/date_time/functions_std.cc: Likewise.
+	* testsuite/31_date_time/headers/date_time/synopsis.cc: Likewise.
+	* testsuite/31_date_time/nanoseconds/requirements/traits.cc: Likewise.
+	* testsuite/31_date_time/nanoseconds/requirements/duration.cc: Likewise.
+	* testsuite/31_date_time/system_time/requirements: Likewise.
+	* testsuite/31_date_time/system_time/requirements/traits.cc: Likewise.
+
+2008-03-16  Paolo Carlini  
+
+	* config.h.in: Regenerate.
+
+2008-03-16  Ralf Wildenhues  
+
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+	* Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+
+2008-03-13  Dennis Czeremin  
+
+	PR libstdc++/35566
+	* include/bits/stl_multimap.h (multimap<>::multimap(_InputIterator,
+	_InputIterator)): Forward to _M_insert_equal, not _M_insert_unique.
+
+2008-03-13  Paolo Carlini  
+
+	PR libstdc++/35541
+	* include/debug/functions.h (__check_sorted_set_aux): Fix signature.
+	* testsuite/25_algorithms/set_difference/35541.cc: New.
+
+2008-03-07  Jakub Jelinek  
+
+	* config/abi/pre/gnu.ver: Move  related
+	symbols to GLIBCXX_3.4.11 symbol version.
+	* testsuite/util/testsuite_abi.cc (check_version): Allow
+	GLIBCXX_3.4.11.
+
+2008-03-06  Chris Jefferson  
+	    Paolo Carlini  
+
+	PR libstdc++/35480
+	* include/tr1/tuple (operator==, operator<): Fix.
+	* include/std/tuple (operator==, operator<): Likewise.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc: New.
+	* testsuite/20_util/tuple/comparison_operators/35480.cc: Likewise.
+
+2008-03-04  Joseph Myers  
+
+	* crossconfig.m4 (*-mingw32*): Define HAVE_STRTOF and
+	HAVE_STRTOLD.
+	* configure: Regenerate.
+
+2008-03-02  Hans-Peter Nilsson  
+
+	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc,
+	testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc:
+	Mark changed error message prelude, adding "in file included from",
+	using dg-excess-errors.
+
+2008-03-01  Jakub Jelinek  
+
+	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
+	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
+	Likewise.
+	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
+	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
+
+2008-02-29  Jakub Jelinek  
+
+	* config/abi/pre/gnu.ver: Remove
+	_ZNKSt3tr14hashIgEclEg@@GLIBCXX_3.4.10 and
+	_ZNKSt4hashIgEclEg@@GLIBCXX_3.4.10 export.
+	* config/os/gnu-linux/ldbl-extra.ver: Export
+	_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+	and _ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10.
+	* src/hash.cc: Only define long double hash specialization if
+	_GLIBCXX_LONG_DOUBLE_COMPAT_IMPL is defined.
+	* src/compatibility-ldbl.cc: Include "hash.cc".
+	(_GLIBCXX_LONG_DOUBLE_COMPAT_IMPL): Define.
+	(_ZNKSt4hashIeEclEe): New alias.
+	* testsuite/util/testsuite_abi.cc (check_version): Support
+	GLIBCXX_LDBL_3.4.10.
+
+2008-02-25  Jan Beulich  
+
+	* acinclude.m4: Also check for EIDRM and ETXTBSY.
+	* configure: Re-generate.
+	* config/os/generic/error_constants.h (namespace posix_error):
+	Also wrap uses of EIDRM and ETXTBSY in conditionals.
+	* testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc:
+	Likewise.
+
+2008-02-20  Jason Merrill  
+
+	* include/bits/c++config: Use 'inline namespace' instead of
+	strong using.
+
+2008-02-18  Pedro Lamarao 
+
+	* include/std/tuple: Fixes for moveable, non-copyable types.
+	* testsuite/20_util/tuple/moveable2.cc: New.
+
+2008-02-18  Paolo Carlini  
+
+	* include/std/tuple (operator+(tuple<>&&, tuple<>&&): Remove.
+
+2008-02-17  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/tr1/poly_laguerre.tcc: Doxygen fixes.
+	* include/tr1/exp_integral.tcc: Same.
+	* include/tr1/gamma.tcc: Same.
+	* include/tr1/hypergeometric.tcc: Same.
+
+2008-02-17  Benjamin Kosnik  
+
+	PR libstdc++/34797
+	* include/parallel/settings.h (_Settings): Reconstruct Settings class
+	here, uglify, remove anonymous namespace and static
+	members. Convert to datum.
+	* include/parallel/types.h: Move Settings:: enumerations here, uglify.
+	* src/parallel_settings.cc: New, definition for _Settings member
+	functions.
+	* include/parallel/multiway_merge.h: Same.
+	* include/parallel/for_each.h: Same.
+	* include/parallel/workstealing.h: Same.
+	* include/parallel/base.h: Same.
+	* include/parallel/numeric
+	* include/parallel/features.h: Same.
+	* include/parallel/quicksort.h: Same.
+	* include/parallel/equally_split.h: Same.
+	* include/parallel/algorithmfwd.h: Same.
+	* include/parallel/omp_loop_static.h: Same.
+	* include/parallel/random_shuffle.h: Same.
+	* include/parallel/balanced_quicksort.h: Same.
+	* include/parallel/tags.h: Same.
+	* include/parallel/multiway_mergesort.h: Same.
+	* include/parallel/numericfwd.h: Same.
+	* include/parallel/partition.h: Same.
+	* include/parallel/partial_sum.h: Same.
+	* include/parallel/find.h: Same.
+	* include/parallel/algo.h: Same.
+	* include/parallel/omp_loop.h: Same.
+	* include/parallel/sort.h: Same.
+
+	* src/Makefile.am (parallel_sources): Add parallel_settings.cc.
+	* src/Makefile.in: Regenerate.
+
+	* config/abi/pre/gnu.ver: Export _Settings::get and _Settings::set.
+
+2008-02-17  Paolo Carlini  
+
+	PR libstdc++/35221
+	* include/parallel/types.h: Reinstate integer types typedefs.
+	* include/parallel/multiseq_selection.h: Adjust.
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/random_number.h: Likewise.
+	* include/parallel/base.h: Likewise.
+
+2008-02-17  Paolo Carlini  
+
+	PR libstdc++/35209
+	* config/abi/pre/gnu.ver: Export stdio_sync_filebuf symbols.
+	* testsuite/ext/stdio_sync_filebuf/char/35209.cc: New.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc: Likewise.
+
+2008-02-16  Benjamin Kosnik  
+
+	* include/parallel/random_number.h: Use TR1's mersenne_twister.
+	(random_number::genrand_bits()): Remove.
+	(random_number::set_seed): Remove.
+
+2008-02-15  Benjamin Kosnik  
+
+	* include/parallel/types.h: Remove enum parallelism.
+
+2008-02-15  Benjamin Kosnik  
+
+	* include/parallel/types.h: Move enum parallelism here.  Use
+	tr1/cstdint's int16_t, uint16_t, int32_t, uint32_t, int64_t,
+	uint64_t.
+	* include/parallel/multiseq_selection.h: Adjust for cstdint.
+	* include/parallel/compatibility.h: Same.
+	* include/parallel/tags.h: Just compile-time tags.
+	* include/parallel/base.h: Put namespace bits here.
+
+	* src/Makefile.am (PARALLEL_FLAGS): Use it.
+	* src/Makefile.in: Regenerate.
+
+	* testsuite/25_algorithms/nth_element/1.cc: Add test variable.
+
+2008-02-15  Hans-Peter Nilsson  
+
+	* testsuite/config/default.exp: Load gcc dejapatches.exp.
+
+2008-02-14  Kaveh R. Ghazi  
+
+	* testsuite/27_io/fpos/14320-1.cc: Check for "long long" and
+	remove XFAIL.
+
+2008-02-14  Benjamin Kosnik  
+
+	* config/os/generic/error_constants.h (posix_errno): Guard
+	not_supported use of ENOTSUP.
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Add check for ENOTSUP
+	for OpenBSD.
+	* aclocal.m4: Regenerate.
+	* configure: Rengerate.
+	* config.h.in: Same.
+
+2008-02-13  Benjamin Kosnik  
+
+	* doc/doxygen/mainpage.html: Correct links.
+
+2008-02-11  Benjamin Kosnik  
+
+	* doc/html/*: Populate with regenerated files.
+
+2008-02-11  Benjamin Kosnik  
+
+	* doc/html/*: Remove all but contents of ext/pb_ds.
+	* doc/html/index.html: New.
+	* doc/html/README: New.
+
+2008-02-11  Benjamin Kosnik  
+
+	* doc/doxygen/mainpage.html: Add in corrected links.
+	* README: Edit, move most into...
+	* doc/xml/manual/appendix_contributing.xml (Directory Layout): ...here.
+	(Documentation Style): Revise.
+	* doc/xml/spine.xml: Edit file names.
+	* doc/Makefile.am: Edit xml_sources.
+	* doc/Makefile.in: Regenerate.
+
+2008-02-11  Paolo Carlini  
+
+	* configure: Regenerate with documented autoconf and automake
+	versions (i.e., 2.59 and 1.9.6).
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* aclocal.m4: Likewise.
+
+2008-02-10  Benjamin Kosnik  
+
+	Convert documentation to DocBook.
+	* doc/Makefile.am (doc-doxygen-html): Changed to doc-html-doxygen.
+	(doc-doxygen-man): Changed to doc-man-doxygen.
+	(doc-performance): Changed to doc-html-performance.
+	(doc-xml-doxygen): New.
+	(doc-xml-single): New.
+	(doc-xml-validate): New.
+	(doc-html): New.
+	(doc-html-single): New.
+	(doc-fo): New.
+	(doc-pdf): New.
+	(doc-pdf-fop-xml): New.
+	(doc-pdf-fop-fo): New.
+	(doc-pdf-xmlto): New.
+	(doc-pdf-xmlroff): New.
+	(doc-pdf-prince): New.
+	* doc/xml: New directory.
+	* doc/xml/authors.xml: New.
+	* doc/xml/images: New directory.
+	* doc/xml/images/confdeps.png: Add.
+	* doc/xml/images/confdeps.dot: Add.
+	* doc/xml/faq.xml: New.
+	* doc/xml/api.xml: New.
+	* doc/xml/gnu: New directory.
+	* doc/xml/gnu/gpl-3.0.xml: New.
+	* doc/xml/gnu/fdl-1.2.xml: New.
+	* doc/xml/gnu/gpl-2.0.xml: New.
+	* doc/xml/manual: New directory.
+	* doc/xml/manual/mt_allocator.xml: New.
+	* doc/xml/manual/allocator.xml: New.
+	* doc/xml/manual/ctype.xml: New.
+	* doc/xml/manual/numerics.xml: New.
+	* doc/xml/manual/codecvt.xml: New.
+	* doc/xml/manual/concurrency.xml: New.
+	* doc/xml/manual/backwards_compatibility.xml: New.
+	* doc/xml/manual/intro.xml: New.
+	* doc/xml/manual/shared_ptr.xml: New.
+	* doc/xml/manual/abi.xml: New.
+	* doc/xml/manual/status_cxxtr1.xml: New.
+	* doc/xml/manual/auto_ptr.xml: New.
+	* doc/xml/manual/build.xml: New.
+	* doc/xml/manual/internals.xml: New.
+	* doc/xml/manual/parallel_mode.xml: New.
+	* doc/xml/manual/status_cxx1998.xml: New.
+	* doc/xml/manual/containers.xml: New.
+	* doc/xml/manual/io.xml: New.
+	* doc/xml/manual/appendix_porting.xml: New.
+	* doc/xml/manual/utilities.xml: New.
+	* doc/xml/manual/bitmap_allocator.xml: New.
+	* doc/xml/manual/support.xml: New.
+	* doc/xml/manual/configure.xml: New.
+	* doc/xml/manual/build_hacking.xml: New.
+	* doc/xml/manual/evolution.xml: New.
+	* doc/xml/manual/using.xml: New.
+	* doc/xml/manual/debug.xml: New.
+	* doc/xml/manual/localization.xml: New.
+	* doc/xml/manual/strings.xml: New.
+	* doc/xml/manual/debug_mode.xml: New.
+	* doc/xml/manual/locale.xml: New.
+	* doc/xml/manual/extensions.xml: New.
+	* doc/xml/manual/appendix_contributing.xml: New.
+	* doc/xml/manual/messages.xml: New.
+	* doc/xml/manual/diagnostics.xml: New.
+	* doc/xml/manual/appendix_free.xml: New.
+	* doc/xml/manual/algorithms.xml: New.
+	* doc/xml/manual/iterators.xml: New.
+	* doc/xml/manual/spine.xml: New.
+	* doc/xml/manual/test.xml: New.
+	* doc/xml/manual/status_cxx200x.xml: New.
+	* doc/xml/spine.xml: New.
+
+	* doc/xml/book.txml: New. Template file.
+	* doc/xml/chapter.txml: Same.
+	* doc/xml/class.txml: Same.
+
+	* doc/doxygen/guide.html: Removed, integrated into other docs.
+	* doc/doxygen/user.cfg.in: Clean up XML generation.
+	* doc/doxygen/run_doxygen: Move to..
+	* scripts/run_doxygen: ...here.
+
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2008-02-10  Paolo Carlini  
+
+	PR libstdc++/16251
+	* include/std/istream (basic_istream<>::basic_istream()): Call
+	this->init().
+	(basic_iostream<>::basic_iostream(basic_streambuf<>*)): Don't
+	do it here, per 27.6.1.5.1/1.
+	* include/std/ostream (basic_ostream<>::basic_ostream()): Call
+	this->init().
+	* testsuite/27_io/basic_iostream/cons/16251.C: New.
+
+	* testsuite/27_io/basic_iostream/cons/2020.cc: Minor tweaks.
+
+2008-01-31  Ralf Wildenhues  
+
+	* include/backward/auto_ptr.h: Fix comment typos.
+	* include/bits/algorithmfwd.h: Likewise.
+	* include/bits/basic_ios.h: Likewise.
+	* include/bits/c++config: Likewise.
+	* include/bits/char_traits.h: Likewise.
+	* include/bits/codecvt.h: Likewise.
+	* include/bits/gslice.h: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* include/bits/locale_facets.h: Likewise.
+	* include/bits/locale_facets_nonio.tcc: Likewise.
+	* include/bits/postypes.h: Likewise.
+	* include/bits/sstream.tcc: Likewise.
+	* include/bits/stl_algo.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_iterator.h: Likewise.
+	* include/bits/stl_iterator_base_types.h Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* include/debug/safe_base.h: Likewise.
+	* include/ext/bitmap_allocator.h: Likewise.
+	* include/ext/codecvt_specializations.h Likewise.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/ext/rope: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/std/bitset: Likewise.
+	* include/std/complex: Likewise.
+	* include/std/fstream: Likewise.
+	* include/std/istream: Likewise.
+	* include/std/limits: Likewise.
+	* include/std/ostream: Likewise.
+	* include/std/stdexcept: Likewise.
+	* include/std/streambuf: Likewise.
+	* include/tr1/bessel_function.tcc: Likewise.
+	* include/tr1/cmath: Likewise.
+	* include/tr1/ell_integral.tcc: Likewise.
+	* include/tr1/hypergeometric.tcc: Likewise.
+	* include/tr1/legendre_function.tcc: Likewise.
+	* include/tr1_impl/random: Likewise.
+	* include/tr1_impl/regex: Likewise.
+
+2008-01-31  Paolo Carlini  
+
+	* testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc:
+	Avoid -Wall warnings.
+	* testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
+	Likewise.
+	* testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/hash/operators/size_t.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/constructor.cc: Likewise.
+	* testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/contiguous.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/member_swap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/assign.cc: Likewise.
+	* testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/
+	less_or_equal.cc: Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/
+	greater_or_equal.cc: Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/less.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/greater.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/get.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/element_access/back.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/front.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/data.cc: Likewise.
+	* testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/capacity/empty.cc: Likewise.
+	* testsuite/tr1/6_containers/array/capacity/max_size.cc: Likewise.
+	* testsuite/tr1/6_containers/array/capacity/size.cc: Likewise.
+	* testsuite/thread/guard.cc: Likewise.
+	* testsuite/20_util/tuple/cons/big_tuples.cc: Likewise.
+	* testsuite/20_util/tuple/cons/constructor.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
+	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
+	Likewise.
+
+2008-01-26  David Edelsohn  
+
+	PR target/34794
+	* config/os/aix/os_defines.h: Define __COMPATMATH__.
+
+2008-01-24  David Edelsohn  
+
+	* configure: Regenerate.
+
+2008-01-21  Matthias Klose  
+
+	* doc/doxygen/user.cfg.in: Set SHORT_NAMES to YES.
+
+2008-01-19  Paolo Carlini  
+
+	* configure: Regenerate.
+	* Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* aclocal.m4: Likewise.
+
+2008-01-18  Benjamin Kosnik  
+
+	* docs/*: To...
+	* doc/*: ...here.
+	* testsuite/Makefile.am: Move doc-performance to...
+	* Makefile.am: Add doc to SUBDIRS, move doxygen-* rules to...
+	* doc/Makefile.am: Consolidate documentation creation here.
+	(doc-doxygen-html): New.
+	(doc-doxygen-man): New.
+	(doc-performance): New.
+	* doc/Makefile.in: New.
+	* acinclude.m4 (glibcxx_SUBDIRS): Add doc directory.
+	* doc/doxygen/guide.html: Edit for unified html configuration.
+	* doc/doxygen/mainpage.html: Same.
+	* doc/doxygen/run_doxygen: Same, more namespace fixups for man
+	generation.
+	* doc/doxygen/user.cfg.in: Update for doxygen 1.5.4.
+
+	* include/tr1_impl/random: Remove maint from doxygen markup.
+	* include/tr1_impl/functional: Same.
+	* include/std/tuple: Same.
+	* include/std/streambuf: Same.
+	* include/std/bitset: Same.
+	* include/std/limits: Same.
+	* include/std/fstream: Same.
+	* include/std/istream: Same.
+	* include/std/sstream: Same.
+	* include/ext/pool_allocator.h: Same.
+	* include/ext/rc_string_base.h: Same.
+	* include/bits/basic_ios.h: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_iterator_base_types.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/postypes.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/stl_tempbuf.h: Same.
+	* include/bits/stl_construct.h: Same.
+	* include/bits/stl_relops.h: Same.
+	* include/tr1/tuple: Same.
+	* include/backward/auto_ptr.h: Same.
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Fixups for line number changes.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Same.
+
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* libmath/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+	* scripts/make_graphs.py: Correct paths for new layout.
+
+2008-01-17  Benjamin Kosnik  
+
+	* acinclude.m4 (AC_LC_MESSAGES): Remove serial.
+	* linkage.m4 (AC_REPLACE_MATHFUNCS): Same.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
+2008-01-14  Paolo Carlini  
+
+	* include/parallel/list_partition.h: Formatting fixes, inline tweaks.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/algobase.h: Likewise.
+	* include/parallel/algo.h: Likewise.
+
+2008-01-14  Seongbae Park 
+
+	* crossconfig.m4: Add missing header checks, C99 TR1 check,
+	and sigsetjmp check.
+
+2008-01-14  Paolo Carlini  
+
+	* include/parallel/tree.h: Remove.
+	* include/Makefile.am: Update.
+	* include/Makefile.in: Rebuild.
+
+	* src/Makefile.am: Remove spurious trailing backslash.
+	* src/Makefile.in: Rebuild.
+	* po/Makefile.in: Likewise.
+	* libmath/Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* aclocal.m4: Likewise.
+	* Makefile.in: Likewise.
+	* configure: Likewise.
+
+2008-01-12  Paolo Carlini  
+
+	PR libstdc++/34730
+	* include/debug/functions.h (__check_sorted_set,
+	__check_sorted_set_aux): Add.
+	(__check_sorted): Check StrictWeakOrdering.
+	* include/debug/macros.h (__glibcxx_check_strict_weak_ordering,
+	__glibcxx_check_strict_weak_ordering_pred): Remove.
+	(__glibcxx_check_sorted, __glibcxx_check_sorted_pred): Adjust.
+	(__glibcxx_check_sorted_set, __glibcxx_check_sorted_set_pred): Add.
+	* include/debug/debug.h (__glibcxx_requires_sorted_set,
+	__glibcxx_requires_sorted_set_pred): Add.
+	* include/bits/stl_algo.h (merge, includes, set_union,
+	set_intersection, set_difference, set_symmetric_difference):
+	Adjust, use __glibcxx_requires_sorted_set* instead.
+	* testsuite/25_algorithms/set_intersection/34730.cc: New.
+
+2008-01-09  Paolo Carlini  
+
+	* include/parallel/multiway_merge.h: Reformat to 80 columns;
+	adjust some inline specifiers; other minor style fixes.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/quicksort.h: Likewise.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/set_operations.h: Likewise.
+	* include/parallel/tree.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/algo.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/random_number.h: Likewise.
+
+2008-01-09  Benjamin Kosnik  
+
+	* docs/html/17_intro/api.html: Fix markup for rope.h.
+
+2008-01-09  Paolo Carlini  
+
+	* include/parallel/iterator.h: Reformat to 80 columns; adjust some
+	inline specifiers.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/algobase.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/algo.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+
+2008-01-09  Francesco Biscani  
+
+	* include/tr1_impl/hashtable (_Hashtable): Fix friend declaration
+	of __detail::_Map_base<>.
+
+2008-01-08  Paolo Carlini  
+
+	* testsuite/22_locale/global_templates/user_facet_hierarchies.cc: Do
+	not include .
+	* testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
+	Likewise.
+	* testsuite/util/testsuite_common_types.h: Include .
+
+2008-01-08  Jakub Jelinek  
+
+	* configure.ac (--enable-linux-futex): Add new configure option.
+	(HAVE_LINUX_FUTEX): New AC_DEFINE.
+	* Makefile.in: Rebuilt.
+	* aclocal.m4: Rebuilt.
+	* configure: Rebuilt.
+	* config.h.in: Rebuilt.
+	* config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_BIT,
+	_GLIBCXX_GUARD_PENDING_BIT, _GLIBCXX_GUARD_WAITING_BIT): Define.
+	* config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_BIT,
+	_GLIBCXX_GUARD_PENDING_BIT, _GLIBCXX_GUARD_WAITING_BIT): Define.
+	* libsupc++/guard.cc: Include climits and syscall.h.
+	(_GLIBCXX_USE_FUTEX): Define if futex syscall and atomic builtins
+	are supported.
+	(_GLIBCXX_FUTEX_WAIT, _GLIBCXX_FUTEX_WAKE): Likewise.
+	(__guard_test_bit): New static inline.
+	(__cxa_guard_acquire, __cxa_guard_release, __cxa_guard_abort): Use
+	atomic builtins and futex syscall if _GLIBCXX_USE_FUTEX.
+
+2008-01-07  Paolo Carlini  
+
+	PR libstdc++/34680
+	* include/bits/locale_classes.h (has_facet<>, use_facet<>): Do not
+	use dynamic_cast when run-time type identification is disabled; do
+	not mark inline; only declare, define...
+	* include/bits/locale_classes.tcc: ... here.
+
+2008-01-06  Ted Phelps  
+
+	PR c++/34152
+	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Check
+	_GLIBCXX_HAVE_GETIPINFO instead of HAVE_GETIPINFO.
+
+2008-01-01  Paolo Carlini  
+
+	PR libstdc++/34095
+	* include/parallel/multiway_merge.h (multiway_merge_bubble,
+	parallel_multiway_merge): Together with ::operator new use
+	::operator delete.
+	* include/parallel/losertree.h (LoserTree<>::~LoserTree): Likewise.
+	* include/parallel/quicksort.h (parallel_sort_qs_divide): Likewise.
+	* include/parallel/random_shuffle.h (parallel_random_shuffle_drs_pu,
+	sequential_random_shuffle): Likewise.
+	* include/parallel/tree.h (_M_not_sorted_bulk_insertion_construction):
+	Likewise.
+	* include/parallel/multiway_mergesort.h (parallel_sort_mwms_pu,
+	parallel_sort_mwms): Likewise.
+	* include/parallel/partial_sum.h (parallel_partial_sum_linear):
+	Likewise.
+	* testsuite/25_algorithms/sort/34095.cc: New.
+
+2008-01-01  Paolo Carlini  
+
+	* testsuite/25_algorithms/sort/34636.cc: Fix Copyright year.
+
+2008-01-01  Paolo Carlini  
+
+	PR libstdc++/34636
+	* include/parallel/algobase.h (lexicographical_compare_switch(...,
+	random_access_iterator_tag, random_access_iterator_tag)): Careful
+	with undereferenceable iterators.
+	* testsuite/25_algorithms/sort/34636.cc: New.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2009 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2009
new file mode 100644
index 000000000..e5064a33d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2009
@@ -0,0 +1,12427 @@
+2009-12-31  Benjamin Kosnik  
+
+	PR libstdc++/21772 part 3
+	* include/ext/throw_allocator.h: Add _GLIBCXX_IS_AGGREGATE.
+	* testsuite/util/testsuite_container_traits.h (traits):
+	Add has_insert.
+	(traits): Add has_insert.
+	(traits): Add has_size_type_constructor.
+	* testsuite/23_containers/array/requirements/exception/
+	generation_prohibited.cc: New.
+	* testsuite/21_strings/basic_string/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/ext/vstring/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/multimap/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/set/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/unordered_multimap/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/forward_list/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/vector/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/deque/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/multiset/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+	* testsuite/23_containers/map/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+
+2009-12-31  Benjamin Kosnik  
+
+	* doc/xml/manual/intro.xml: Order TR's at the end of status.
+	* doc/xml/manual/abi.xml: Update.
+	* doc/xml/manual/evolution.xml: Put in stubs.
+
+2009-12-31  Paolo Carlini  
+
+	* include/std/bitset (bitset<>::bitset(unsigned long long),
+	_Base_bitset<>::_Base_bitset(unsigned long long)): Add
+	in C++0x mode.
+	* testsuite/23_containers/bitset/cons/3.cc: New.
+
+2009-12-31  Paolo Carlini  
+
+	* include/std/type_traits: Fix minor stylistic nit.
+
+2009-12-31  Paolo Carlini  
+
+	* include/std/type_traits (__is_constructible_helper1): Rename
+	to __is_constructible_helper1, tweaked to a specialization of
+	__is_constructible_helper.
+	(is_constructible): Adjust; minor formatting and stylistic
+	changes throughout.
+	* testsuite/util/testsuite_tr1.h (test_relationship): Change
+	variadic version to an overload of test_property.
+	* testsuite/20_util/is_constructible/value.cc: Adjust.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2009-12-30  Paolo Carlini  
+
+	* include/std/type_traits: Fix minor formatting nit.
+
+2009-12-30  Daniel Frey  
+	    Paolo Carlini  
+
+	* include/std/type_traits (is_explicitly_convertible,
+	is_constructible): Add.
+	* testsuite/util/testsuite_tr1.h (ExplicitClass): Add.
+	* testsuite/20_util/is_explicitly_convertible/value.cc: New.
+	* testsuite/20_util/is_constructible/value.cc: Likewise.
+
+2009-12-30  Paolo Carlini  
+
+	* testsuite/util/testsuite_tr1.h (test_relationship): Add
+	variadic version.
+	* testsuite/20_util/is_explicitly_convertible/requirements/
+	typedefs.cc: New.
+	* testsuite/20_util/is_explicitly_convertible/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_constructible/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/is_constructible/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_convertible/value.cc: Extend.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2009-12-30  Paolo Carlini  
+
+	* include/bits/stl_iterator.h.: Fix typo in comment.
+
+2009-12-29  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/random.h: Fix equation in comment of Weibull distro.
+
+2009-12-29  Paolo Carlini  
+
+	* include/std/bitset (bitset<>::to_ullong, _M_do_to_ullong): Add.
+	(_Base_bitset<>::_M_do_to_ullong): Add.
+	* include/debug/bitset (bitset<>): Add using _Base::to_ullong.
+	* include/profile/bitset (bitset<>): Likewise.
+	* testsuite/23_containers/bitset/to_ullong/1.cc: New.
+
+2009-12-28  Paolo Carlini  
+
+	* include/debug/bitset (bitset<>::bitset(const char*)): Add.
+	* include/profile/bitset (bitset<>::bitset(const char*)): Likewise.
+
+2009-12-24  Edward Smith-Rowland  <3dw4rd@verizon.net>
+	    Paolo Carlini  
+
+	* include/std/bitset (bitset<>::bitset(const char*)): Add.
+
+2009-12-24  Jonathan Wakely  
+	    Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* testsuite/23_containers/bitset/cons/2.cc: New.
+
+2009-12-24  Jonathan Wakely  
+
+	* include/std/functional (bind): Avoid invalid instantiations
+	for bind.
+	* testsuite/20_util/bind/conv_result.cc: New.
+
+2009-12-24  Paolo Carlini  
+
+	* include/bits/stl_deque.h (copy_backward(_Deque_iterator,
+	_Deque_iterator, _Deque_iterator), move_backward(_Deque_iterator,
+	_Deque_iterator, _Deque_iterator)): Declare.
+	* include/bits/deque.tcc: Implement the latter.
+	* testsuite/performance/25_algorithms/
+	copy_backward_deque_iterators.cc: New.
+	* testsuite/25_algorithms/move_backward/deque_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_backward/deque_iterators/1.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-12-23  Paolo Carlini  
+
+	* testsuite/25_algorithms/copy/5.cc: Move...
+	* testsuite/25_algorithms/copy/deque_iterators/1.cc: ... here.
+	* testsuite/25_algorithms/move/2.cc: Move...
+	* testsuite/25_algorithms/move/deque_iterators/1.cc: ... here.
+
+2009-12-23  Paolo Carlini  
+
+	* include/bits/stl_deque.h (copy(_Deque_iterator, _Deque_iterator,
+	_Deque_iterator), move(_Deque_iterator, _Deque_iterator,
+	_Deque_iterator)): Declare.
+	* include/bits/deque.tcc: Implement the latter.
+	* testsuite/performance/25_algorithms/copy_deque_iterators.cc: New.
+	* testsuite/25_algorithms/move/2.cc: Likewise.
+	* testsuite/25_algorithms/copy/5.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-12-22  Iain Sandoe  
+
+	PR target/41605
+	* testsuite/libstdc++-abi/abi.exp: Provide -B options to allow for
+	link spec %s substitutions for static libraries.
+	* testsuite/lib/libstdc++.exp: Ditto
+
+2009-12-22  Jonathan Wakely  
+
+	* include/std/mutex (call_once(once_flag&, _Callable, _Args&&...)):
+	Explicitly qualify with std:: bind calls.
+
+2009-12-21  Benjamin Kosnik  
+
+	PR libstdc++/42456
+	* src/atomic.cc: Move _GLIBCXX_ASM_SYMVER define within guard.
+	* config/abi/pre/gnu.ver: Add non-volatile exports.
+
+2009-12-21  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Update nested namespace exceptions.
+
+2009-12-20  Benjamin Kosnik  
+
+	* include/std/atomic: Update to N3000.
+	* include/bits/atomic_0.h: Same.
+	* include/bits/atomic_2.h: Same.
+	* include/c_global/cstdatomic: Move...
+	* include/bits/atomic_base.h: ...here.
+	* include/c_compatibility/stdatomic.h: Just include atomic_base.h.
+	* include/precompiled/stdc++.h: Adjust includes.
+	* include/Makefile.am: Adjust files.
+	* include/Makefile.in: Regenerate.
+	* include/std/future: Adjust.
+	* src/atomic.cc: Adjust, adjust exports for compatibility.
+	* src/compatibility.cc: Move C++0x stuff...
+	* src/compatibility-c++0x.cc: ...here.
+
+	* doc/xml/manual/using.xml: Update.
+	* doc/xml/manual/status_cxx200x.xml: Update.
+	* doc/doxygen/user.cfg.in: Update.
+
+	* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/single_value.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Same.
+	* testsuite/29_atomics/atomic_address/requirements/
+	standard_layout.cc: Same.
+	* testsuite/29_atomics/atomic_address/requirements/trivial.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/single_value.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/copy_list.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/direct_list.cc: Same.
+	* testsuite/29_atomics/atomic_integral/requirements/
+	standard_layout.cc: Same.
+	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/
+	integral_assignment.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/increment.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/decrement.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/
+	integral_conversion.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/aggregate.cc: Same.
+	* testsuite/29_atomics/atomic_flag/requirements/
+	standard_layout.cc: Same.
+	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Same.
+	* testsuite/29_atomics/atomic_flag/clear/1.cc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/functions.c
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/single_value.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/default.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_list.cc: Same.
+	* testsuite/29_atomics/atomic/cons/direct_list.cc: Same.
+	* testsuite/29_atomics/atomic/requirements/explicit_instantiation/
+	1.cc: Same.
+	* testsuite/29_atomics/atomic/requirements/base_classes.cc: Same.
+	* testsuite/29_atomics/atomic/operators/integral_assignment.cc: Same.
+	* testsuite/29_atomics/atomic/operators/integral_conversion.cc: Same.
+	* testsuite/util/testsuite_common_types.h: Adjust.
+
+	* testsuite/29_atomics/headers/cstdatomic: Move and adjust...
+	* testsuite/29_atomics/headers/atomic: ...here.
+	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: Same.
+	* testsuite/29_atomics/headers/atomic/macros.cc: Same.
+
+	* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Add.
+	* testsuite/29_atomics/atomic/cons/user_pod.cc: Add.
+
+2009-12-18  Jimmy Guo  
+
+	PR libstdc++/40088
+	* src/locale_init.cc (locale::locale()): Optimize the common case
+	where _S_global still points to _S_classic.
+
+2009-12-17  Dave Korn  
+
+	PR target/42377
+	* config/abi/pre/gnu.ver: Adjust mangled function signatures to permit
+	LLP64 sizetypes throughout.
+
+2009-12-17  Paolo Carlini  
+
+	PR libstdc++/42198
+	* src/thread.cc (thread::_M_start_thread): Throw system_error
+	immediately if the thread system is inactive.
+
+2009-12-16  Benjamin Kosnik  
+
+	PR libstdc++/21772 part 2
+	* doc/xml/manual/test.xml: Add documentation about testing details.
+	* testsuite/util/exception/safety.h: New. Functor objects for
+	testing C++0x container classes.
+	* testsuite/util/testsuite_container_traits.h: Add traits.
+
+	* testsuite/23_containers/list/requirements/exception/
+	basic.cc: New.
+	generation_prohibited.cc: New.
+	propagation_consistent.cc: New.
+
+2009-12-15  Benjamin Kosnik  
+
+	PR libstdc++/21772 part 1
+	* include/ext/throw_allocator.h: Rework.
+	(__gnu_cxx::throw_allocator): To...
+	(__gnu_cxx::throw_allocator_limit): ...this.
+	(__gnu_cxx::throw_allocator_random): ...and this.
+	(throw_value_base, throw_value_limit, throw_value_random): Add.
+	(condition_base, random_condition, limit_condition): Add.
+	(forced_exception_error): To...
+	(forced_error): ...this.
+	* testsuite/ext/throw_value: New.
+	* testsuite/ext/throw_value/cons.cc: New.
+	* testsuite/ext/throw_allocator/deallocate_global.cc: Adjust for
+	throw_allocator, forced_exception_error changes.
+	* testsuite/ext/throw_allocator/check_delete.cc: Same.
+	* testsuite/ext/throw_allocator/check_allocate_max_size.cc: Same.
+	* testsuite/ext/throw_allocator/check_deallocate_null.cc: Same.
+	* testsuite/ext/throw_allocator/explicit_instantiation.cc: Same.
+	* testsuite/ext/throw_allocator/check_new.cc: Same.
+	* testsuite/ext/throw_allocator/variadic_construct.cc: Same.
+	* testsuite/ext/throw_allocator/deallocate_local.cc: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.h: Same.
+	* testsuite/util/regression/common_type.hpp: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.tcc: Same.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.h: Same.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.tcc: Same.
+	* testsuite/util/regression/basic_type.hpp: Same.
+
+	* testsuite/ext/forced_exception_error/cons_virtual_derivation.cc: To...
+	* testsuite/ext/forced_error/cons_virtual_derivation.cc: ...this, same.
+
+2009-12-15  Paolo Carlini  
+
+	PR libstdc++/42381
+	* include/bits/stl_deque.h (_GLIBCXX_DEQUE_BUF_SIZE): Add.
+	(__deque_buf_size(size_t)): Use it.
+	* testsuite/23_containers/deque/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-12-15  Jonathan Wakely  
+
+	* include/std/future (unique_future::get, promise::set_value): Remove
+	workaround for c++/34022.
+	(packaged_task::get_future, packaged_task::operator()): Use
+	__throw_bad_function_call.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: Likewise.
+
+2009-12-15  Jonathan Wakely  
+
+	* include/std/functional (function::function): Move construct target.
+	(function::operator=): Use perfect forwarding for argument.
+	(function::operator()): Use new __throw_bad_function_call.
+	* include/bits/functexcept.h (__throw_bad_function_call): Declare.
+	* src/functexcept.cc (__throw_bad_function_call): Define.
+	* config/abi/pre/gnu.ver: Add new symbol.
+	* testsuite/20_util/function/cons/move_target.cc: New.
+	* testsuite/20_util/function/assign/move_target.cc: New.
+
+2009-12-15  Paolo Carlini  
+
+	PR c++/42379
+	* testsuite/23_containers/set/operators/1_neg.cc: Fix dg-error strings.
+	* testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+
+2009-12-14  Paolo Carlini  
+
+	PR libstdc++/25304, DR 865 [Ready]
+	* include/bits/stl_algobase.h (fill_n): Add comment about DR 865.
+	* include/bits/stl_algo.h (generate_n): Likewise.
+	* include/bits/algorithmfwd.h: Remove obsolete comment.
+	* doc/xml/manual/intro.xml: Add an entry for DR 865.
+
+2009-12-14  Ralf Wildenhues  
+
+	* configure.ac: Remove code to un-precious-ize CC, CXX,
+	CXXFLAGS, CFLAGS, LDFLAGS.
+	* configure: Regenerate.
+
+2009-12-14  Paolo Carlini  
+
+	* testsuite/23_containers/queue/requirements/
+	explicit_instantiation/1_c++0x.cc: New.
+	* testsuite/23_containers/priority_queue/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/multimap/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/bitset/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/set/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/stack/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/multiset/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/list/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+	* testsuite/23_containers/map/requirements/
+	explicit_instantiation/1_c++0x.cc: Likewise.
+
+2009-12-14  Paolo Carlini  
+
+	* include/bits/stl_list.h (splice(iterator, list&), splice(iterator,
+	list&, iterator), splice(iterator, list&, iterator, iterator),
+	merge(list&), merge(list&, _StrictWeakOrdering)): Re-add in C++0x
+	mode for backward compatibility (see DR 1133).
+	(insert(iterator, size_type, const value_type&), insert(iterator,
+	_InputIterator, _InputIterator)): Adjust.
+	* include/bits/list.tcc (sort): Likewise.
+	* testsuite/23_containers/list/modifiers/1_c++0x.cc: Add.
+	* testsuite/23_containers/list/operations/2_c++0x.cc: Likewise.
+	* testsuite/23_containers/list/operations/3_c++0x.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-12-11  Paolo Carlini  
+	    Matthias Klose  
+
+	PR libstdc++/40133
+	* acinclude.m4 ([GLIBCXX_ENABLE_ATOMIC_BUILTINS]): On *-*-linux*,
+	*-*-uclinux*, *-*-kfreebsd*-gnu | *-*-gnu* targets do link tests when
+	possible.
+	* configure: Regenerate.
+
+2009-12-11  Paolo Carlini  
+
+	* include/parallel/numeric: Trivial formatting changes.
+
+2009-12-11  Paolo Carlini  
+
+	PR libstdc++/42352
+	* include/bits/list.tcc (sort): Use _GLIBCXX_MOVE for list::splice
+	and list::merge calls.
+	* testsuite/23_containers/list/operations/42352.cc: New.
+
+2009-12-11  Paolo Carlini  
+
+	PR libstdc++/22634, DR 539 [Ready]
+	* include/bits/stl_numeric.h (adjacent_difference): Use std::move
+	at the end of the loop body, per the Ready resolution.
+	* include/std/numeric: Do not include unnecessarily .
+	* doc/xml/manual/intro.xml: Add an entry for DR 539.
+
+2009-12-11  Paolo Carlini  
+
+	* doc/html/ext/lwg-active.html: Update to Revision R68.
+	* doc/html/ext/lwg-closed.html: Likewise.
+	* doc/html/ext/lwg-defects.html: Likewise.
+	* doc/xml/manual/intro.xml: Update status of issues 431, 630, and 696.
+
+2009-12-10  Jakub Jelinek  
+
+	PR c++/42317
+	* config/abi/pre/gnu.ver: Don't export certain base dtors that
+	weren't previously exported.
+
+2009-12-10  Paolo Carlini  
+
+	PR libstdc++/42261 (take 2)
+	* include/bits/basic_string.h (_S_construct_aux_2(size_type, _CharT,
+	const _Alloc&)): Add.
+	(_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)):
+	Call it.
+	* include/ext/sso_string_base.h (_M_construct_aux_2(size_type,
+	_CharT): Add.
+	(_M_construct_aux(_Integer, _Integer, std::__true_type)): Call it.
+	* include/ext/rc_string_base.h (_S_construct_aux_2(size_type, _CharT,
+	const _Alloc&)): Add.
+	(_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)):
+	Call it.
+	* config/abi/pre/gnu.ver: Export basic_string::_S_construct_aux_2.
+	* testsuite/21_strings/basic_string/cons/char/42261.cc: New.
+	* testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise.
+
+2009-12-10  Paolo Carlini  
+
+	Revert:
+	2009-12-03  Paolo Carlini  
+
+	PR libstdc++/42261
+	* include/bits/basic_string.h (_S_construct_aux(_Integer, _Integer,
+	const _Alloc&, __true_type)): Cast the second argument to value_type.
+	* include/ext/sso_string_base.h (_M_construct_aux(_Integer, _Integer,
+	std::__true_type)): Likewise.
+	* include/ext/rc_string_base.h (_S_construct_aux(_Integer, _Integer,
+	const _Alloc&, std::__true_type)): Likewise.
+	* testsuite/21_strings/basic_string/cons/char/42261.cc: New.
+	* testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise.
+
+2009-12-10  Paolo Carlini  
+
+	* testsuite/util/testsuite_containers.h (populate<>::populate(_Tp&)):
+	Avoid used uninitialized warning.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Fix typo causing sequence point
+	warning.
+
+2009-12-09  Benjamin Kosnik  
+
+	* include/profile/impl/profiler_container_size.h: Fix include
+	guard, formatting fixes.
+	* include/profile/impl/profiler_vector_size.h: Same.
+	* include/profile/impl/profiler_hash_func.h: Same.
+	* include/profile/impl/profiler_trace.h: Same.
+	* include/profile/impl/profiler_vector_to_list.h: Same.
+	* include/profile/impl/profiler.h: Same.
+	* include/profile/impl/profiler_state.h: Same.
+	* include/profile/impl/profiler_map_to_unordered_map.h: Same.
+	* include/profile/impl/profiler_hashtable_size.h: Same.
+	* include/profile/impl/profiler_node.h: Same.
+
+2009-12-09  Roman Odaisky  
+
+	PR libstdc++/42273
+	* include/bits/atomic_2.h: Fix typo.
+
+2009-12-07  Paolo Carlini  
+
+	PR libstdc++/42319
+	* include/parallel/losertree.h: Include bits/stl_function.h instead
+	of the whole .
+	* include/parallel/base.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* testsuite/17_intro/headers/c++200x/42319.cc: New.
+
+2009-12-05  Ralf Wildenhues  
+
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* python/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2009-12-05  Dave Korn  
+
+	* config/os/hpux/os_defines.h (_GLIBCXX_PSEUDO_VISIBILITY): Provide
+	empty definition.
+
+2009-12-03  Paolo Carlini  
+
+	PR libstdc++/42261
+	* include/bits/basic_string.h (_S_construct_aux(_Integer, _Integer,
+	const _Alloc&, __true_type)): Cast the second argument to value_type.
+	* include/ext/sso_string_base.h (_M_construct_aux(_Integer, _Integer,
+	std::__true_type)): Likewise.
+	* include/ext/rc_string_base.h (_S_construct_aux(_Integer, _Integer,
+	const _Alloc&, std::__true_type)): Likewise.
+	* testsuite/21_strings/basic_string/cons/char/42261.cc: New.
+	* testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise.
+
+2009-12-03  Paolo Carlini  
+
+	* testsuite/20_util/bind/ref.cc: Add.
+	* testsuite/20_util/bind/all_bound.cc: Likewise.
+	* testsuite/20_util/bind/nested.cc: Likewise.
+	* testsuite/20_util/bind/placeholders.cc: Likewise.
+
+2009-12-03  Hans-Peter Nilsson  
+
+	* testsuite/ext/profile/mutex_extensions.cc: Adjust dg-error line
+	number.
+
+2009-11-30  Dave Korn  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Add host-dependent
+	settings for LC_ALL and LANG.
+
+2009-11-30  Dave Korn  
+
+	* libstdc++-v3/acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Don't disable
+	on PE targets.
+	* libstdc++-v3/configure: Regenerate.
+	* libstdc++-v3/configure.host: Add libtool DLL options for Cygwin
+	and MinGW platforms.
+
+	* libstdc++-v3/include/bits/c++config (_GLIBCXX_VISIBILITY_ATTR): On
+	platforms that don't support visibility, allow them to declare a macro
+	_GLIBCXX_PSEUDO_VISIBILITY that is applied in place of visibility.
+	(_GLIBCXX_PSEUDO_VISIBILITY): Supply empty default if not declared by
+	CPU- or OS-specific headers.
+
+	* libstdc++-v3/config/os/newlib/os_defines.h
+	(_GLIBCXX_PSEUDO_VISIBILITY_default): New macro for dllimport.
+	(_GLIBCXX_PSEUDO_VISIBILITY_hidden): New empty macro.
+	(_GLIBCXX_PSEUDO_VISIBILITY): Evaluate to one of the above.
+	* libstdc++-v3/config/os/mingw32/os_defines.h
+	(_GLIBCXX_PSEUDO_VISIBILITY_default,
+	_GLIBCXX_PSEUDO_VISIBILITY_hidden,
+	_GLIBCXX_PSEUDO_VISIBILITY): Likewise.
+
+2009-11-30  Paolo Carlini  
+
+	* include/tr1_impl/functional: Remove file, copy its contents,
+	trivially adjusted...
+	* include/std/functional: ... here, and...
+	* include/tr1/functional: ... here.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+
+2009-11-30  Jonathan Wakely  
+
+	* include/tr1_impl/functional (function): Add rvalue support and
+	tweak doxygen markup.
+	* testsuite/20_util/function/assign/move.cc: New.
+	* testsuite/20_util/function/cons/move.cc: New.
+	* testsuite/20_util/function/invoke/move_only.cc: New.
+	* testsuite/20_util/function/cmp/cmp_neg.cc: New.
+	* testsuite/20_util/function/1.cc: Copy from testsuite/tr1/.
+	* testsuite/20_util/function/2.cc: Likewise.
+	* testsuite/20_util/function/3.cc: Likewise.
+	* testsuite/20_util/function/4.cc: Likewise.
+	* testsuite/20_util/function/5.cc: Likewise.
+	* testsuite/20_util/function/6.cc: Likewise.
+	* testsuite/20_util/function/7.cc: Likewise.
+	* testsuite/20_util/function/8.cc: Likewise.
+	* testsuite/20_util/function/9.cc: Likewise.
+
+2009-11-29  Jonathan Wakely  
+
+	* doc/doxygen/user.cfg.in: Add __GXX_RTTI to PREDEFINED macros.
+
+2009-11-20  Jonathan Wakely  
+
+	PR libstdc++/42019
+	* include/tr1/shared_ptr.h: Only use typeid when RTTI is enabled.
+	* include/bits/shared_ptr_base.h: Likewise.
+	* include/bits/shared_ptr.h: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc: New.
+	* testsuite/20_util/shared_ptr/misc/42019.cc: New.
+
+2009-11-20  Paolo Carlini  
+
+	* src/compatibility-c++0x.cc (_Fnv_hash<4>, _Fnv_hash<8>): Add.
+
+2009-11-19  Benjamin Kosnik  
+
+	* src/pool_allocator.cc: Adjust catch blocks.
+	* src/bitmap_allocator.cc: Same.
+	* src/localename.cc: Same.
+	* src/ios.cc: Same.
+
+	* libsupc++/cxxabi-forced.h: Adjust comments, markup.
+
+	* testsuite/util/testsuite_hooks.h (copy_constructor::copyCount):
+	Remove.
+	(copy_constructor::dtorCount): Remove.
+	* testsuite/23_containers/list/modifiers/1.h: Adjust.
+	* testsuite/23_containers/list/modifiers/2.h: Same.
+	* testsuite/23_containers/list/modifiers/3.h: Same.
+
+2009-11-19  Paolo Carlini  
+
+	PR libstdc++/41622
+	* include/bits/functional_hash.h: Implement inline the various
+	std::hash specializations, using, when appropriate, pass by
+	const ref too, per DR 1245.
+	* include/tr1_impl/functional_hash.h: Remove, move its contents...
+	* include/tr1/functional_hash.h: ... here.
+	* include/std/functional: Tweak includes.
+	* src/hash_c++0x: Rename to...
+	* src/compatibility-c++0x.cc: ... this, implementing compatibility
+	std::hash<>::operator() specializations.
+	* src/hash.cc: Do not mark specializations as throw().
+	* src/Makefile.am: Adjust.
+	* include/Makefile.am: Likewise.
+	* src/Makefile.in: Regenerate.
+	* include/Makefile.in: Likewise.
+	* testsuite/util/testsuite_api.h: Define a dummy hash for
+	NonDefaultConstructible.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/2.cc: Use it.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation/2.cc: Likewise.
+
+2009-11-19  Johannes Singler  
+
+	* include/parallel/partition.h (__parallel_partition): Correctly
+	initialize chunk size.
+	(__parallel_nth_element): Respect nth_element_minimal_n.  Use
+	sequential nth_element as base case, instead of sequential sort.
+
+2009-11-17  Benjamin Kosnik  
+
+	* include/profile/impl/profiler.h: Remove namespace markup.
+
+2009-11-17  Benjamin Kosnik  
+
+	* include/profile/bitset: Tweak doxygen markup.
+	* include/profile/deque: Same.
+	* include/profile/list: Same.
+	* include/profile/map.h: Same.
+	* include/profile/multimap.h: Same.
+	* include/profile/multiset.h: Same.
+	* include/profile/set.h: Same.
+	* include/profile/unordered_map: Same.
+	* include/profile/vector: Same.
+
+	* include/profile/impl/profiler_container_size.h: Use namespace
+	__gnu_profile instead of __cxxprof_impl.
+	* include/profile/impl/profiler.h: Same.
+	(_GLIBCXX_PROFILE_IMPL_REENTRANCE_GUARD): To
+	_GLIBCXX_PROFILE_REENTRANCE_GUARD.
+	Remove namespace __cxxprof_guard.
+	(__reentrance_guard): De-templatize.
+	(__reentrance_guard::__inside_cxxprof_impl): To
+	__reentrance_guard::_S_get_in.
+
+	* include/profile/impl/profiler_hash_func.h: Use namespace
+	__gnu_profile instead of __cxxprof_impl.
+	* include/profile/impl/profiler_hashtable_size.h: Same.
+	* include/profile/impl/profiler_map_to_unordered_map.h: Same.
+	* include/profile/impl/profiler_node.h: Same.
+	* include/profile/impl/profiler_state.h: Same.
+	* include/profile/impl/profiler_trace.h: Same.
+	* include/profile/impl/profiler_vector_size.h: Same.
+	* include/profile/impl/profiler_vector_to_list.h: Same.
+	* doc/xml/manual/profile_mode.xml: Update.
+
+2009-11-17  Benjamin Kosnik  
+
+	* include/debug/bitset: Add doxygen markup.
+	* include/debug/deque: Same.
+	* include/debug/list: Same.
+	* include/debug/map.h: Same.
+	* include/debug/multimap.h: Same.
+	* include/debug/set.h: Same.
+	* include/debug/multiset.h: Same.
+	* include/debug/unordered_map: Same.
+	* include/debug/unordered_set: Same.
+	* include/debug/string: Same.
+	* include/debug/vector: Same.
+
+2009-11-15  Steve Ward  
+
+	* libsupc++/cxxabi.h (__cxa_demangle): Fix typo in comment.
+
+2009-11-13  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::erase_after):
+	Change signature per N2988, return void; simplify.
+	(_Fwd_list_base<>::_M_erase_after): Likewise return void.
+	(forward_list<>::~forward_list): Do not call _M_erase_after
+	unnecessarily, the base class destructor already does it.
+	(forward_list<>::splice_after(const_iterator position,
+	forward_list&&, const_iterator i): Check position != i and
+	position != ++i.
+	* include/bits/forward_list.tcc (_Fwd_list_base<>::
+	_M_erase_after(typename _Node_base::_Pointer): Simplify.
+	(_Fwd_list_base<>::_M_erase_after(typename _Node_base::_Pointer,
+	typename _Node_base::_Pointer): Fix (remove the correct range
+	of element) and simplify (update __pos->_M_next at the end).
+	* testsuite/23_containers/forward_list/modifiers/3.cc: Adjust
+	and extend.
+	* testsuite/23_containers/forward_list/ext_pointer/
+	modifiers/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Tweak dg-error line numbers.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-11-13  Paolo Carlini  
+
+	* include/std/algorithm: Include , per UK-300.
+	* include/bits/stl_algobase.h: Don't do it here.
+
+2009-11-12  Paolo Carlini  
+
+	* include/std/type_traits (declval): Add, per DR 1255.
+	(__is_convertible_helper, common_type): Use it.
+	* include/bits/move.h: Mention std::declval.
+	* testsuite/20_util/declval/requirements/1.cc: New.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+	* testsuite/20_util/common_type/requirements/typedefs-2.cc: Likewise.
+	* testsuite/20_util/common_type/requirements/
+	explicit_instantiation.cc: Extend.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+
+2009-11-12  Paolo Carlini  
+
+	* include/bits/stl_algobase.h: Include the full , per
+	UK-300.
+	* include/bits/stl_algo.h: Tweak includes.
+
+2009-11-11  Jason Merrill  
+
+	* testsuite/Makefile.am: Remove use of baseline_file.
+	* testsuite/Makefile.in: Likewise.
+
+	PR c++/39131
+	* config/abi/pre/gnu.ver: Add DFP types.
+	* testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_1.3.4.
+
+2009-11-11  Paolo Carlini  
+
+	* include/bits/basic_string.h (to_string(int), to_string(unsigned),
+	to_string(long), to_string(unsigned long), to_string(float),
+	to_string(double), to_wstring(int), to_wstring(unsigned),
+	to_wstring(long), to_wstring(unsigned long), to_wstring(float),
+	to_wstring(double)): Add, per resolution of DR 1261.
+	* include/ext/vstring.h: Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/
+	dr1261.cc: Add.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	dr1261.cc: Likewise.
+
+2009-11-09  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Regenerate, add files.
+	* libsupc++/eh_ptr.cc: Format.
+	* libsupc++/exception_ptr.h: Same.
+	* libsupc++/cxxabi.h(recursive_init_error): Move declaration here.
+	* libsupc++/guard.cc: From here.
+	* libsupc++/nested_exception.h: Add markup.
+
+2009-11-09  Johannes Singler  
+
+	* include/parallel/multiway_merge.h (multiway_merge_*,
+	__sequential_multiway_merge, parallel_multiway_merge): Replace
+	int by appropriate difference_type (typedef to _SeqNumber) or
+	_ThreadIndex.
+	* include/parallel/multiseq_selection.h (multiseq_partition,
+	multiseq_selection): Replace int by appropriate difference_type
+	(typedef to _SeqNumber)
+	* include/parallel/base.h (__get_max_threads): Replace int by
+	_ThreadIndex.
+	* include/parallel/balanced_quicksort.h
+	(__qsb_local_sort_with_helping, __parallel_sort_qsb): Likewise.
+	* include/parallel/set_operations.h (__parallel_set_operation):
+	Likewise.
+	* include/parallel/unique_copy.h (__parallel_unique_copy): Likewise.
+	* include/parallel/multiway_mergesort.h (_SplitConsistently,
+	parallel_sort_mwms_pu, parallel_sort_mwms): Likewise.
+	* include/parallel/partial_sum.h (__parallel_partial_sum_linear):
+	Likewise.
+	* include/parallel/partition.h (__parallel_partition): Replace int
+	by appropriate difference_type or _ThreadIndex.
+
+2009-11-08  Jason Merrill  
+
+	* include/ext/sso_string_base.h (_M_mutate): Remove extra 'const'.
+
+2009-11-06  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Adjust includes.
+
+	* doc/doxygen/doxygroups.cc: Move group markup.
+	* include/tr1_impl/regex: Change " to '. Add group markup.
+	* include/std/utility: Same.
+	* include/std/type_traits: Same.
+	* include/std/streambuf: Same.
+	* include/std/iosfwd: Same.
+	* include/std/limits: Same.
+	* include/std/sstream: Same.
+	* include/profile/impl/profiler_state.h: Same.
+	* include/profile/impl/profiler_hashtable_size.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_iterator_base_types.h: Same.
+	* include/bits/stream_iterator.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/stl_tempbuf.h: Same.
+	* include/bits/streambuf_iterator.h: Same.
+	* libsupc++/exception: Same.
+	* libsupc++/cxxabi.h: Same.
+	* include/tr1_impl/type_traits: Same.
+
+	* include/parallel/multiway_merge.h: Change @__c to @c, @__f to @f.
+	* include/parallel/list_partition.h: Same.
+	* include/parallel/for_each.h: Same.
+	* include/parallel/workstealing.h: Same.
+	* include/parallel/base.h: Same.
+	* include/parallel/equally_split.h: Same.
+	* include/parallel/random_shuffle.h: Same.
+	* include/parallel/balanced_quicksort.h: Same.
+	* include/parallel/merge.h: Same.
+	* include/parallel/multiway_mergesort.h: Same.
+	* include/parallel/compatibility.h: Same.
+	* include/parallel/queue.h: Same.
+	* include/parallel/checkers.h: Same.
+	* include/parallel/random_number.h: Same.
+
+
+	* include/c_global/csignal: Change # to \#.
+	* include/c_global/cstdlib: Same.
+	* include/c_global/cstdio: Same.
+	* include/c_global/cstdarg: Same.
+	* include/c_global/cctype: Same.
+	* include/c_global/cerrno: Same.
+	* include/c_global/cstdatomic: Same.
+	* include/c_global/cmath: Same.
+	* include/c_global/ciso646: Same.
+	* include/c_global/ctime: Same.
+	* include/c_global/clocale: Same.
+	* include/c_global/climits: Same.
+	* include/c_global/cassert: Same.
+	* include/c_global/csetjmp: Same.
+	* include/c_global/cwchar: Same.
+	* include/c_global/cfloat: Same.
+	* include/c_global/cstring: Same.
+	* include/c_global/cstddef: Same.
+	* include/c_global/cwctype: Same.
+
+	* include/std/memory: Only dance around boost_sp_counted_base.h.
+	* include/tr1_impl/boost_sp_counted_base.h: Add markup.
+	* include/tr1/shared_ptr.h: Strip markup.
+	* include/bits/shared_ptr.h: Move base types...
+	* include/bits/shared_ptr_base.h: ...here.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* configure: Same.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+
+2009-11-06  Paolo Carlini  
+
+	* include/parallel/multiway_merge.h: Simple formatting and
+	uglification fixes.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/quicksort.h: Likewise.
+	* include/parallel/equally_split.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/tags.h: Likewise.
+	* include/parallel/set_operations.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+
+2009-11-06  Jonathan Wakely  
+
+	PR libstdc++/41949
+	* include/std/ostream: Adjust link.
+
+2009-11-05  Paolo Carlini  
+
+	* include/parallel/multiway_merge.h: Simple formatting and
+	uglification fixes.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+
+2009-11-04  Benjamin Kosnik  
+
+	* testsuite/25_algorithms/fill/5.cc: Move...
+	* testsuite/25_algorithms/fill_n/1.cc: ...here.
+
+2009-11-04  Paolo Carlini  
+
+	* include/parallel/multiway_merge.h: Simple formatting and
+	uglification fixes.
+	* include/parallel/losertree.h: Likewise.
+
+2009-11-03  David Krauss  
+	    Paolo Carlini  
+
+	PR libstdc++/41351
+	* include/bits/stl_algo.h (__rotate(_RandomAccessIterator,
+	_RandomAccessIterator, _RandomAccessIterator,
+	random_access_iterator_tag)): Rewrite to use only std::swap in
+	general and std::copy/std::copy_backward when safe.
+
+2009-11-02  Benjamin Kosnik  
+
+	* include/std/future: Use base class with nested types.
+	(__future_base): New.
+	(__future_base::_Result_base): From _Future_result_base.
+	(__future_base::_Result): From _Future_result.
+	(__future_base::_Move_result): From _Move_future_result.
+	(__future_base::_Ptr): From _Future_ptr.
+	(__future_base::_State): From _Future_state.
+	(__basic_future): From _Future_impl.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust line
+	numbers.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Same.
+
+2009-10-31  Paolo Carlini  
+
+	* include/std/chrono (struct __common_rep_type): New.
+	(duration_cast(const duration<>&),
+	duration<>::duration(const _Rep2&),
+	duration<>::duration(const duration<>&),
+	operator*(const duration<>&, const _Rep2&),
+	operator*(const _Rep1&, const duration<>&),
+	operator/(const duration<>&, const _Rep2&),
+	time_point_cast(const time_point<>&)): Implement resolution of
+	DR 1177 ([Ready] in Santa Cruz), change to not participate to
+	overload resolution if the constraints are not met.
+	* testsuite/20_util/duration/cons/1_neg.cc: Adjust dg-errors.
+	* testsuite/20_util/duration/cons/dr974.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+
+2009-10-31  Gerald Pfeifer  
+
+	* doc/xml/manual/intro.xml: Refer to our bugs page instead of
+	Bugzilla directly.
+
+2009-10-30  Jerry Quinn  
+
+	* libsupc++/tinfo.cc (operator=(const type_info&)): Reapply 153734.
+	* libsupc++/typeinfo (type_info::name()): Likewise.
+	* libsupc++/tinfo2.cc (before):  Likewise.
+
+2009-10-30  Paolo Carlini  
+
+	* include/bits/random.h: Fix typo in static_assert text.
+
+2009-10-30  Paolo Carlini  
+
+	PR libstdc++/41759
+	* include/bits/random.h: Tweak a bit the text of some static_asserts.
+
+2009-10-30  Paolo Carlini  
+
+	* include/std/type_traits (__is_convertible_simple): Remove.
+	(__is_convertible_helper): Adjust.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+
+2009-10-30  Jerry Quinn  
+
+	* libsupc++/tinfo.cc (operator=(const type_info&)): Revert 153734.
+	* libsupc++/typeinfo (type_info::name()): Likewise.
+	* libsupc++/tinfo2.cc (before):  Likewise.
+
+2009-10-28  Jerry Quinn  
+
+	* libsupc++/tinfo.cc (operator=(const type_info&)): Compare by
+	pointer if name begins with '*'.
+	* libsupc++/typeinfo (type_info::name()): Likewise.
+	* libsupc++/tinfo2.cc (before):  Likewise.
+
+2009-10-29  Paolo Carlini  
+  	    Douglas Gregor  
+
+	PR libstdc++/40925 (again)
+	* include/bits/stl_pair.h (pair<_T1, _T2>::pair(_U1&&, const _T2&),
+	pair<_T1, _T2>::pair(const _T1&, _U2&&)): Add, to deal correctly
+	with move-only types in the presence of "null pointers".
+	* testsuite/20_util/pair/40925.cc: Extend.
+
+2009-10-29  Paolo Carlini  
+
+	* include/std/type_traits (__is_int_or_cref): Remove.
+	(__is_convertible_helper): Fix per C++0x and simplify (the hack to
+	suppress warnings isn't necessary anymore).
+	* testsuite/20_util/is_convertible/requirements/typedefs.cc: New.
+	* testsuite/20_util/is_convertible/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_convertible/value.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+
+2009-10-29  Paolo Carlini  
+
+	* testsuite/20_util/pair/40925.cc: Minor comment fix.
+
+2009-10-29  Paolo Carlini  
+
+	PR libstdc++/40925
+	* include/bits/stl_pair.h (pair<_T1, _T2>::pair(_U1&&, _U2&&)):
+	Use enable_if to remove it from the overload set when either _U1
+	is not convertible to _T1 or _U2 is not convertible to _T2.
+	(pair<>::pair(_U1&&, _Arg0&&, _Args&&...)): Remove.
+
+2009-10-29  Douglas Gregor  
+
+	PR libstdc++/40925
+	* testsuite/20_util/pair/40925.cc: Add.
+
+2009-10-29  Paolo Carlini  
+
+	* include/decimal/decimal: Minor formatting and uglification fixes.
+	* include/decimal/decimal.h: Likewise.
+
+2009-10-28  Paolo Carlini  
+
+	* include/bits/stl_iterator_base_funcs.h: (next): Change
+	template parameter name consistently with the resolution
+	of DR 1011 ([Ready] in Santa Cruz).
+
+2009-10-28  Johannes Singler  
+
+	PR libstdc++/40852
+	* include/parallel/multiseq_selection.h
+	(multiseq_partition, multiseq_selection):  Avoid intermediate
+	values exceeding the integer type range for very large inputs.
+
+2009-10-26  Paolo Carlini  
+
+	* include/std/chrono (duration<>::duration(const duration<>&)): Fix
+	per the straightforward resolution of DR 974.
+	* testsuite/20_util/duration/cons/dr974.cc: Add.
+
+2009-10-26  Jakub Jelinek  
+
+	PR libstdc++/38923
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Avoid using too many
+	*s.  Accept ld version without text in ()s.
+	* configure: Regenerated.
+
+2009-10-26  Jason Merrill  
+
+	Core issue 906
+	* include/std/future (~Future_result_base): Default outside class
+	body.
+	* include/std/system_error (error_category()): Likewise.
+	* libsupc++/nested_exception.h (nested_exception): Remove
+	exception specifications from defaulted methods.
+
+009-10-20  Paolo Carlini  
+
+	PR libstdc++/41773
+	Revert:
+	2009-10-20  Paolo Carlini  
+
+	* include/bits/basic_string.h (_S_construct(const _CharT*, size_type,
+	const _Alloc&)): New, declare.
+	(_S_construct(_CharT*, _CharT*, const _Alloc&),
+	_S_construct(const _CharT*, const _CharT*, const _Alloc&),
+	_S_construct(iterator, iterator, const _Alloc&),
+	_S_construct(const_iterator, const_iterator, const _Alloc&)): New,
+	forward to the latter.
+	* include/bits/basic_string.tcc (_S_construct(const _CharT*,
+	size_type, const _Alloc&)): Define.
+	(basic_string(const basic_string&, size_type, size_type),
+	basic_string(const basic_string&, size_type, size_type,
+	const _Alloc&), basic_string(const _CharT*, size_type,
+	const _Alloc&), basic_string(const _CharT*, const _Alloc&),
+	basic_string(initializer_list<>, const _Alloc&)): Call the latter.
+	* config/abi/pre/gnu.ver: Remove recently added exports.
+	* src/string-inst.cc: Remove instantiations.
+
+2009-10-20  Paolo Carlini  
+
+	PR libstdc++/41763
+	* include/bits/valarray_array.h (__valarray_default_construct,
+	__valarray_fill_construct, __valarray_copy_construct, __valarray_sum
+	__valarray_destroy_elements, __valarray_product): Do not qualify with
+	__restrict__ pointers accessing data also accessed by other pointers.
+
+2009-10-20  Paolo Carlini  
+
+	* include/bits/basic_string.h (_S_construct(const _CharT*, size_type,
+	const _Alloc&)): New, declare.
+	(_S_construct(_CharT*, _CharT*, const _Alloc&),
+	_S_construct(const _CharT*, const _CharT*, const _Alloc&),
+	_S_construct(iterator, iterator, const _Alloc&),
+	_S_construct(const_iterator, const_iterator, const _Alloc&)): New,
+	forward to the latter.
+	* include/bits/basic_string.tcc (_S_construct(const _CharT*,
+	size_type, const _Alloc&)): Define.
+	(basic_string(const basic_string&, size_type, size_type),
+	basic_string(const basic_string&, size_type, size_type,
+	const _Alloc&), basic_string(const _CharT*, size_type,
+	const _Alloc&), basic_string(const _CharT*, const _Alloc&),
+	basic_string(initializer_list<>, const _Alloc&)): Call the latter.
+	* config/abi/pre/gnu.ver: Remove recently added exports.
+	* src/string-inst.cc: Remove instantiations.
+
+2009-10-15  Phil Muldoon 
+
+	* python/libstdcxx/v6/printers.py (StdTuplePrinter): New printer.
+	(build_libstdcxx_dictionary): Add StdTuplePrinter registration.
+
+2009-10-16  Benjamin Kosnik  
+
+	* include/c_compatibility/stdatomic.h: Include cstdatomic if
+	__cplusplus.
+
+2009-10-15  Benjamin Kosnik  
+
+	PR libstdc++/40654
+	PR libstdc++/40826
+	* src/atomic.cc (atomic_flag_test_and_set_explicit): Add
+	static_cast from base to derived.
+	(atomic_flag_clear_explicit): Same.
+	* include/bits/atomic_2.h (__atomic2::atomic_flag): Public derivation.
+	Remove value type constructor.
+	* include/bits/atomic_0.h (__atomic0::atomic_flag): Same.
+	* include/std/future (_Future_state): Use ATOMIC_FLAG_INIT to
+	initialized the atomic_flag member.
+
+2009-10-14  Benjamin Kosnik  
+
+	* doc/xml/authors.xml: Update.
+	* doc/xml/manual/intro.xml: Move test section...
+	* doc/xml/manual/appendix_porting.xml: ...here.
+	* doc/xml/manual/diagnostics.xml: Edit.
+	* doc/xml/manual/using.xml: Break out exception section.
+	* doc/xml/manual/using_exceptions.xml: New.
+	* doc/html: Regenerate.
+
+2009-10-14  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Export the _S_construct<> helpers.
+
+2009-10-14  Paolo Carlini  
+
+	* include/bits/basic_string.h (operator+=(initializer_list<>),
+	append(initializer_list<>)): Forward to the append overload taking
+	a const CharT* pointer and a size, thus avoiding instantiating
+	unnecessarily in the built library the overload taking a pair of
+	iterators.
+	(operator=(initializer_list<>), assign(initializer_list<>)): Likewise
+	for assign.
+	(insert(iterator, initializer_list<>): Likewise for insert.
+
+2009-10-14  Paolo Carlini  
+
+	* include/bits/c++config: Do not disable extern templates for string
+	in plain parallel-mode and in profile-mode; add comment explaining
+	_GLIBCXX_EXTERN_TEMPLATE == -1.
+	* testsuite/ext/profile/mutex_extensions.cc: Adjust dg-error line.
+
+2009-10-14  Jason Merrill  
+
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust expected.
+
+2009-10-13  Paolo Carlini  
+
+	* include/parallel/for_each_selectors.h: Minor uglification and
+	stylistic fixes.
+
+2009-10-13  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/precompiled/stdc++.h: Include 
+	for completeness.
+
+2009-10-12  Paolo Carlini  
+
+	* include/bits/random.h (class linear_congruential_engine,
+	class mersenne_twister_engine, class subtract_with_carry_engine,
+	class discard_block_engine, class independent_bits_engine,
+	class shuffle_order_engine, class uniform_int_distribution,
+	class binomial_distribution, class geometric_distribution,
+	class negative_binomial_distribution, class poisson_distribution,
+	class discrete_distribution): Do not use simulated concept checks,
+	tidy startic_asserts on argument types and ranges.
+	(class uniform_real_distribution, class normal_distribution,
+	class lognormal_distribution, class gamma_distribution,
+	class chi_squared_distribution, class cauchy_distribution,
+	class fisher_f_distribution, class student_t_distribution,
+	class exponential_distribution, class weibull_distribution,
+	class extreme_value_distribution, class piecewise_linear_distribution,
+	class piecewise_constant_distribution): Add static_assert on
+	template argument type.
+	* include/std/random: Do not include .
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc:
+	Fix.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	requirements/non_uint_neg.cc: Tweak.
+
+2009-10-10  Gerald Pfeifer  
+
+	* doc/xml/manual/messages.xml: Update GNU gettext reference.
+
+2009-10-10  Gerald Pfeifer  
+
+	* doc/xml/manual/codecvt.xml: Refer to The Open Group Base
+	Specifications, Issue 6 (IEEE Std. 1003.1-2004).
+	Update link to bogus site with reference to unix.org.
+	* doc/xml/manual/ctype.xml: Ditto.
+	* doc/xml/manual/locale.xml: Ditto.
+
+2009-10-09  Paolo Carlini  
+
+	* include/parallel/numeric (__adjacent_difference_switch): Fix typo.
+	* include/parallel/for_each_selectors.h
+	(__adjacent_difference_selector): Likewise.
+
+2009-10-08  Paolo Carlini  
+
+	* include/ext/bitmap_allocator.h: Minor clean-ups.
+
+2009-10-08  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Adjust exports.
+
+2009-10-07  Phil Muldoon 
+
+	* doc/xml/manual/debug.xml: Rewrite and expand GDB Python
+	pretty-printer section.
+
+2009-10-07  Chris Jefferson  
+
+	* testsuite/25_algorithms/rotate/moveable2.cc: New.
+
+2009-10-06  Janis Johnson  
+
+	* testsuite/decimal/binary-arith.cc: Fix directive to skip test.
+	* testsuite/decimal/cast_neg.cc: Ditto.
+	* testsuite/decimal/comparison.cc: Ditto.
+	* testsuite/decimal/compound-assignment.cc: Ditto.
+	* testsuite/decimal/compound-assignment-memfunc.cc: Ditto.
+	* testsuite/decimal/conversion-from-float.cc: Ditto.
+	* testsuite/decimal/conversion-from-integral.cc: Ditto.
+	* testsuite/decimal/conversion-to-generic-float.cc: Ditto.
+	* testsuite/decimal/conversion-to-integral.cc: Ditto.
+	* testsuite/decimal/ctor.cc: Ditto.
+	* testsuite/decimal/incdec.cc: Ditto.
+	* testsuite/decimal/incdec-memfunc.cc: Ditto.
+	* testsuite/decimal/make-decimal.cc: Ditto.
+	* testsuite/decimal/mixed-mode_neg.cc: Ditto.
+	* testsuite/decimal/operator_neg.cc: Ditto.
+	* testsuite/decimal/unary-arith.cc: Ditto.
+
+2009-10-05  Benjamin Kosnik  
+
+	* doc/html/*: Regenerate.
+
+2009-10-05  John Bytheway  
+
+	PR libstdc++/41530
+	* include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&)):
+	Fix to just move.
+	* testsuite/20_util/tuple/cons/41530.cc: New.
+
+2009-10-05  Phil Muldoon  
+
+	* doc/xml/manual/debug.xml: Add narrative for GDB Python pretty
+	printers. Add links to GDB wiki/online manual.
+
+2009-10-05  Benjamin Kosnik  
+	    Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/decimal/decimal: Warn if decimal floating point types
+	are not available.
+	* acinclude.m4 (GLIBCXX_ENABLE_DECIMAL_FLOAT): New.
+	* configure.ac: Use it.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+
+2009-10-05  Benjamin Kosnik  
+
+	* include/Makefile.am: Remove stray line break.
+
+	* include/decimal/decimal: Brief class doxygen markup.
+	* libsupc++/exception: Whitespace cleanup.
+
+	* testsuite/libstdc++-dg/conformance.exp: Add testsuite directory
+	decimal.
+	* scripts/create_testsuite_files (dlist): Same.
+
+	* doc/xml/manual/using.xml: One column in table. Move after TR1.
+
+	* testsuite/decimal/bad-cast.cc: Move to...
+	* testsuite/decimal/cast_neg.cc: ...here.
+	* testsuite/decimal/bad-mixed-mode.cc: Move to...
+	* testsuite/decimal/mixed-mode_neg.cc: ...here.
+	* testsuite/decimal/bad-operator.cc: Move to...
+	* testsuite/decimal/operator_neg.cc: ...here.
+
+	* doc/doxygen/user.cfg.in (INPUT): Add decimal/decimal.
+
+2009-10-05  Janis Johnson  
+
+	* doc/Makefile.am: Process new file.
+	* doc/xml/manual/intro.xml: Ditto.
+	* doc/xml/manual/using.xml: Document new header.
+	* doc/xml/manual/status_cxxdecimal.xml: New file.
+	* include/Makefile.am: Process new headers.
+	* include/decimal/decimal: New file.
+	* include/decimal/decimal.h: New file.
+
+2009-10-05  Janis Johnson  
+
+	* testsuite/decimal: New directory.
+	* testsuite/decimal/bad-cast.cc: New test.
+	* testsuite/decimal/bad-mixed-mode.cc: New test.
+	* testsuite/decimal/bad-operator.cc: New test.
+	* testsuite/decimal/binary-arith.cc: New test.
+	* testsuite/decimal/comparison.cc: New test.
+	* testsuite/decimal/compound-assignment.cc: New test.
+	* testsuite/decimal/compound-assignment-memfunc.cc: New test.
+	* testsuite/decimal/conversion-from-float.cc: New test.
+	* testsuite/decimal/conversion-from-integral.cc: New test.
+	* testsuite/decimal/conversion-to-generic-float.cc: New test.
+	* testsuite/decimal/conversion-to-integral.cc: New test.
+	* testsuite/decimal/ctor.cc: New test.
+	* testsuite/decimal/incdec.cc: New test.
+	* testsuite/decimal/incdec-memfunc.cc: New test.
+	* testsuite/decimal/make-decimal.cc: New test.
+	* testsuite/decimal/unary-arith.cc: New test.
+
+2009-10-05  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_rvalref): Remove.
+	* testsuite/lib/dg-options.exp (dg-require-rvalref): Likewise.
+
+2009-10-05  Chris Jefferson  
+
+	* include/bits/stl_algo.h (__stable_partition_adaptive,
+	__rotate_adaptive, __merge_adaptive, __merge_sort_loop):
+	Extend to work with rvalue references in C++0x mode.
+	* testsuite/25_algorithms/inplace_merge/moveable2.cc: New.
+	* testsuite/25_algorithms/inplace_merge/moveable.cc: Likewise.
+	* testsuite/25_algorithms/stable_partition/moveable.cc: Likewise.
+	* testsuite/25_algorithms/stable_sort/moveable2.cc: Likewise.
+	* testsuite/25_algorithms/stable_sort/moveable.cc: Likewise.
+
+2009-10-04  Benjamin Kosnik  
+
+	* doc/xml/manual/using.xml: Add profile headers.
+	* testsuite/ext/profile/mh.cc: Restrict to linux.
+
+2009-10-02  Silvius Rus  
+
+	* configure: Add check for execinfo.h.
+	* config.h.in: Add undef for HAVE_EXECINFO_H.
+	* include/Makefile.am: Add build support for profile mode.
+	* include/Makefile.in: Same.
+	* include/profile/base.h: New file.
+	* include/profile/bitset: Same.
+	* include/profile/deque: Same.
+	* include/profile/hashtable.h: Same.
+	* include/profile/list: Same.
+	* include/profile/map: Same.
+	* include/profile/map.h: Same.
+	* include/profile/multimap.h: Same.
+	* include/profile/multiset.h: Same.
+	* include/profile/set: Same.
+	* include/profile/set.h: Same.
+	* include/profile/unordered_map: Same.
+	* include/profile/unordered_set: Same.
+	* include/profile/vector: Same.
+	* include/profile/impl/profiler.h: Same.
+	* include/profile/impl/profiler_container_size.h: Same.
+	* include/profile/impl/profiler_hash_func.h: Same.
+	* include/profile/impl/profiler_hashtable_size.h: Same.
+	* include/profile/impl/profiler_map_to_unordered_map.h: Same.
+	* include/profile/impl/profiler_node.h: Same.
+	* include/profile/impl/profiler_state.h: Same.
+	* include/profile/impl/profiler_trace.h: Same.
+	* include/profile/impl/profiler_vector_size.h: Same.
+	* include/profile/impl/profiler_vector_to_list.h: Same.
+	* include/std/vector: Include corresponding profile header guarded by
+	_GLIBCXX_PROFILE.
+	* include/std/deque: Same.
+	* include/std/list: Same.
+	* include/std/map: Same.
+	* include/std/unordered_map: Same.
+	* include/std/bitset: Same.
+	* include/std/set: Same.
+	* include/std/unordered_set: Same.
+	* include/backward/hash_map: Same.
+	* include/backward/hash_set: Same.
+	* include/tr1_impl/hashtable (_Hashtable): Expose insert_return_type.
+	* include/bits/c++config: Define profile namespace.
+	* testsuite/Makefile.in: Add check-profile.
+	* testsuite/Makefile.am: Same.
+	* testsuite/ext/profile/all.cc: New file.
+	* testsuite/ext/profile/mh.cc: Same.
+	* testsuite/ext/profile/mutex_extensions.cc: Same.
+	* testsuite/23_containers/unordered_map/profile/hash_map.cc: Same.
+	* testsuite/23_containers/unordered_map/profile/unordered.cc: Same.
+	* testsuite/23_containers/vector/profile/vector.cc: Same.
+	* testsuite/23_containers/vector/resize/moveable.cc: Make it pass
+	in profile mode.
+	* testsuite/23_containers/deque/capacity/moveable.cc: Same.
+	* testsuite/23_containers/list/capacity/29134.cc: Same.
+	* doc/Makefile.in: Add reference to profile_mode.xml.
+	* doc/Makefile.am: Same.
+	* doc/xml/manual/profile_mode.xml: New file.
+	* doc/xml/manual/debug.xml: Add link to profile mode section.
+	* doc/xml/manual/extensions.xml: Add profile mode.  Update numbering.
+	* doc/doxygen/user.cfg.in: Add profile mode files.
+
+2009-10-02  Johannes Singler  
+
+	* include/parallel/base.h: Take integer types from .
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/random_number.h: Likewise;
+	use numeric_limits<>::digit instead of sizeof()*8.
+	* include/parallel/types.h: Likewise.
+	* doc/html/manual/bk01pt12ch31s03.html:
+	Document dependency on stdint.h.
+
+2009-10-01  Phil Muldoon 
+
+	* python/libstdcxx/v6/printers.py (StdListPrinter):
+	Add -D_GLIBCXX_DEBUG implementation changes. Receive typename from
+	printer registration.
+	(StdListIteratorPrinter): Likewise.
+	(StdDebugIteratorPrinter): New printer.
+	(build_libstdcxx_dictionary): Add -D_GLIBCXX_DEBUG registration
+	entries.  Always pass a typename where the type can change.
+	(StdSlistPrinter) Receive typename from printer registration.  Use
+	in printer output.
+	(StdBitsetPrinter): Likewise.
+	(StdDequePrinter): Likewise.
+
+2009-09-29  Paolo Carlini  
+
+	* include/bits/random.tcc: Define static const data members.
+	* include/tr1/random.tcc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	requirements/constants.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/requirements/
+	constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/
+	requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/
+	requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/
+	requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/
+	requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/
+	requirements/constants.cc: Likewise.
+
+2009-09-29  Ralf Wildenhues  
+
+	PR libstdc++/38923
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Avoid 'head',
+	use sed script portable to Solaris /bin/sed for extracting ld
+	version.
+	* configure: Regenerate.
+
+2009-09-28  Benjamin Kosnik  
+
+	* libsupc++/eh_terminate.cc: Fixes for -fno-exceptions.
+	* libsupc++/vec.cc: Same.
+	* libsupc++/vterminate.cc: Same.
+	* libsupc++/new_opnt.cc: Same.
+
+2009-09-28  Johannes Singler  
+
+	* include/parallel/for_each_selectors.h:  Remove obsolete comment.
+
+2009-09-26  Paolo Carlini  
+
+	* doc/html/ext/lwg-active.html: Update to Revision R66.
+	* doc/html/ext/lwg-closed.html: Likewise.
+	* doc/html/ext/lwg-defects: Likewise.
+
+	* doc/xml/manual/intro.xml: Update entry for DR 853.
+
+2009-09-26  Gerald Pfeifer  
+
+	* doc/html/ext/lwg-closed.html: Adjust four instances of two URLs
+	according to upstream redirects.
+
+2009-09-25  Johannes Singler  
+
+	* include/parallel/include/parallel/checkers.h
+	(is_sorted_failure, is_sorted_print_failures):  Remove (unused).
+	(__is_sorted):  Remove default parameter for _Compare; remove
+	inappropriate printf.
+
+2009-09-25  Johannes Singler  
+
+	* include/parallel/base.h:  Comment on presence of min/max duplicates.
+
+2009-09-25  Johannes Singler  
+
+	* include/parallel/partition.h (__parallel_nth_element):
+	Correct comment.
+
+2009-09-24  Johannes Singler  
+
+	* include/parallel/algo.h: Uglify internal identifiers;
+	correct line breaks.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+
+2009-09-24  Johannes Singler  
+
+	* include/parallel/base.h (_EqualFromLess):  Move _Compare template
+	parameter to the end as of others.
+	* include/parallel/algobase.h
+	(__lexicographical_compare_switch): Likewise.
+
+2009-09-23  Johannes Singler  
+
+	* include/parallel/algobase.h: Uglify internal identifiers;
+	correct line breaks.
+	* include/parallel/algo.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/equally_split.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+
+2009-09-21  Gerald Pfeifer  
+
+	* doc/xml/manual/appendix_contributing.xml: Adjust link to
+	coreutils.
+
+2009-09-18  Jan Kratochvil  
+
+	* python/hook.in: Fix prefix trailing slash on 64bit host arches.
+
+2009-09-17  Joseph Myers  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_binary_io): New.
+	* testsuite/lib/dg-options.exp (dg-require-binary-io): New.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc,
+	testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc,
+	testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc,
+	testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc,
+	testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc,
+	testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc,
+	testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc,
+	testsuite/27_io/basic_istream/readsome/char/6746-2.cc,
+	testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc,
+	testsuite/27_io/objects/char/10.cc: Use dg-require-binary-io.
+
+2009-09-17  Joseph Myers  
+
+	* include/ext/vstring.h (to_wstring(long long),
+	to_wstring(unsigned long long), to_wstring(long double)): Disable
+	for _GLIBCXX_HAVE_BROKEN_VSWPRINTF.
+
+2009-09-17  Johannes Singler  
+
+	* include/parallel/algobase.h: Replace tabs by spaces;
+	correct line breaks.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/equally_split.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/iterator.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/quicksort.h: Likewise.
+	* include/parallel/random_number.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/set_operations.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/types.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+	* include/parallel/algo.h: Likewise;
+	shorten _ForwardIterator to _FIterator.
+	* include/parallel/find_selectors.h: Likewise.
+
+2009-09-16  Johannes Singler  
+
+	* include/parallel/base.h: Correct some comments accidentally changed
+	during uglification.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/tags.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+
+2009-09-16  Johannes Singler  
+
+	* include/parallel/base.h (_EqualFromLess):
+	Correct uglification of member variables and method arguments.
+	* include/parallel/balanced_quicksort.h (_QSBThreadLocal): Likewise.
+	* include/parallel/find_selectors.h (__find_first_of_selector):
+	Likewise.
+	* include/parallel/iterator.h (_IteratorTriple): Likewise.
+	* include/parallel/multiseq_selection.h
+	(_Lexicographic, _LexicographicReverse): Likewise.
+	* include/parallel/multiway_mergesort.h (_Piece, _PMWMSSortingData):
+	Likewise.
+	* include/parallel/random_number.h (_RandomNumber): Likewise.
+	* include/parallel/random_shuffle.h (_DRandomShufflingGlobalData):
+	Likewise.
+	* include/parallel/set_operations.h (__symmetric_difference_func,
+	__difference_func, __intersection_func, __union_func,
+	parallel_set_union, parallel_set_intersection, parallel_set_difference,
+	parallel_set_symmetric_difference): Likewise.
+	* include/parallel/tags.h (parallel_tag): Likewise.
+	* include/parallel/workstealing.h (_Job): Likewise.
+	* include/parallel/multiway_merge.h
+	(__multiway_merge_k_variant_sentinel_switch:operator())
+	correct uglification of _*LoserTree*.
+	* include/parallel/losertree.h (_*LoserTree*): Likewise; correct
+	uglification of member variables and method arguments.
+	* include/parallel/par_loop.h: Correct uglification of finish_iterator.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/algo.h: Likewise; uglify c_rand_number.
+
+2009-09-16  Johannes Singler  
+
+	* include/parallel/base.h (_PseudoSequenceIterator, _PseudoSequence):
+	Replace redundant _Self.
+	* include/parallel/iterator.h (_IteratorPair, _IteratorTriple):
+	Replace redundant _Self.
+	* include/parallel/algo.h: Correct accidental _Self in comments.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+
+2009-09-16  Johannes Singler  
+
+	* include/parallel/algobase.h: Uglify internal identifiers.
+	* include/parallel/algo.h: Likewise.
+	* include/parallel/algorithm: Likewise.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/basic_iterator.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/compiletime_settings.: Likewise.
+	* include/parallel/equally_split.h: Likewise.
+	* include/parallel/features.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/iterator.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/parallel.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/quicksort.h: Likewise.
+	* include/parallel/random_number.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/set_operations.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/tags.h: Likewise.
+	* include/parallel/types.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+
+2009-09-14  Paolo Carlini  
+
+	PR libstdc++/41037
+	* src/ios_init.cc (ios_base::Init::Init): Properly initialize cerr
+	and wcerr flags.
+	* testsuite/27_io/objects/char/41037.cc: New.
+	* testsuite/27_io/objects/wchar_t/41037.cc: Likewise.
+
+2009-09-14  Andrew Stubbs  
+
+	* config/cpu/sh/atomicity.h (__exchange_and_add): Set earlyclobber
+	constraint.
+
+2009-09-11  Johannes Singler  
+
+	* include/parallel/multiway_merge.h
+	(multiway_merge_exact_splitting): Deallocate borders correctly.
+	(parallel_multiway_merge): Remove unnecessarily complicated
+	allocation, random access iterators are default-constructible;
+	deallocate ne_seqs correctly.
+
+2009-09-11  Paolo Carlini  
+
+	PR libstdc++/41316
+	* include/bits/forward_list.h (_Fwd_list_node_base<>::_M_sort_after):
+	Remove.
+	(forward_list<>::sort(_Comp)): Only declare.
+	(forward_list<>::sort()): Forward to the latter.
+	* include/bits/forward_list.tcc (_Fwd_list_node_base<>::_M_sort_after):
+	Remove definition.
+	(forward_list<>::sort(_Comp)): Define.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2009-09-11  Ralf Wildenhues  
+
+	* src/Makefile.am (libstdc___la_LINK): New.
+	* src/Makefile.in: Regenerate.
+
+2009-09-09  Loren J. Rittle  
+
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Remove
+	*-*-freebsd* from both dg-do and dg-options.
+
+2009-09-08  Alexandre Oliva  
+
+	* configure: Rebuilt with modified libtool.m4.
+
+2009-09-07  H.J. Lu  
+	    Ralf Wildenhues  
+
+	PR libstdc++/41280
+	* configure.ac: Run "${multi_basedir}/config-ml.in" to generate
+	MULTISUBDIR = in subdirectory Makefiles, with ml_norecursion set.
+	* configure: Regenerate.
+
+2009-09-06  Paolo Carlini  
+
+	PR libstdc++/41267
+	* include/bits/stl_algobase.h (__copy_move::__copy_m,
+	__copy_move_backward::__copy_move_b): Don't call __builtin_memmove
+	with a null third argument.
+
+2009-09-04  Benjamin Kosnik  
+
+	Revert.
+	2009-08-06  Benjamin Kosnik  
+	* src/compatibility.cc: Make C++0x safe, add in explicit casts to
+	bool for stream sentry objects.
+	* include/bits/istream.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/basic_string.tcc: Same.
+	* include/bits/ostream_insert.h: Same.
+	* src/istream.cc: Same.
+
+2009-09-02  Ralf Wildenhues  
+
+	* configure.ac: Replace AC_CONFIG_COMMANDS([default])
+	instantiation with additional commands issued for each Makefile
+	in glibcxx_SUBDIRS, so `./config.status subdir/Makefile' also
+	runs these commands.
+	Add a separate AC_CONFIG_COMMANDS([generate-headers]) for
+	running `make' in include, passing `pch_build=' to `make'.
+	* configure: Regenerate.
+
+	PR libstdc++/41220
+	* include/Makefile.am (CLEANFILES): Add stamp-host.
+	* include/Makefile.in: Regenerate.
+
+2009-09-02  Joseph Myers  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Copy .tcc files
+	under util/ to remote host.  Copy .h and .hpp files at more levels
+	under util/ to remote host.
+
+2009-09-02  Paolo Carlini  
+
+	* include/bits/stl_uninitialized.h
+	(__uninitialized_copy::uninitialized_copy): Just call (the now
+	forwarding) _Construct.
+
+2009-09-01  Chris Jefferson  
+	    Paolo Carlini  
+
+	* testsuite/util/testsuite_rvalref.h: Remove obsolete macro using
+	_GLIBCXX_TESTSUITE_ALLOW_RVALREF_ALIASING.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
+	move_iterators/1.cc: Adjust, do not define
+	_GLIBCXX_TESTSUITE_ALLOW_RVALREF_ALIASING.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
+	move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/move/1.cc: Likewise.
+	* testsuite/25_algorithms/move_backward/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_backward/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/heap/moveable.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort/moveable.cc: Likewise; add
+	test for predicated test.
+	* testsuite/25_algorithms/sort/moveable.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/moveable.cc: Add test
+	for predicated version.
+	* testsuite/25_algorithms/unique/moveable.cc: Likewise.
+
+	* testsuite/25_algorithms/inplace_merge/1.cc (S::operator<): Fix,
+	enable test2 and test3.
+
+	* testsuite/util/testsuite_iterators.h (operator=): Fix invalid
+	moving bug in C++0x mode.
+
+	* testsuite/25_algorithms/random_shuffle/moveable.cc: New.
+	* testsuite/25_algorithms/prev_permutation/moveable.cc: Likewise.
+	* testsuite/25_algorithms/next_permutation/moveable.cc: Likewise.
+	* testsuite/25_algorithms/heap/moveable2.cc: Likewise.
+
+2009-08-31  Uros Bizjak  
+	    Kaz Kojima  
+
+	* testsuite/18_support/numeric_limits/denorm_min.cc: Use
+	dg-add-options ieee.
+	* testsuite/18_support/numeric_limits/digits10.cc: Likewise.
+	* testsuite/18_support/numeric_limits/epsilon.cc: Likewise.
+	* testsuite/18_support/numeric_limits/infinity.cc: Likewise.
+	* testsuite/18_support/numeric_limits/is_iec559.cc: Likewise.
+	* testsuite/18_support/numeric_limits/is_signed.cc: Likewise.
+	* testsuite/18_support/numeric_limits/min_max.cc: Likewise.
+	* testsuite/18_support/numeric_limits/quiet_NaN.cc: Likewise.
+	* testsuite/18_support/numeric_limits/
+	specialization_default_values.cc: Likewise.
+	* testsuite/18_support/numeric_limits/traps.cc: Likewise.
+	* testsuite/26_numerics/complex/pow.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	01_assoc_laguerre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	02_assoc_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	03_beta/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	04_comp_ellint_1/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	05_comp_ellint_2/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	06_comp_ellint_3/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	07_conf_hyperg/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	08_cyl_bessel_i/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	09_cyl_bessel_j/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	10_cyl_bessel_k/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	11_cyl_neumann/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	12_ellint_1/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	13_ellint_2/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	14_ellint_3/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	15_expint/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	16_hermite/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	17_hyperg/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	18_laguerre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	19_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	20_riemann_zeta/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	21_sph_bessel/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	22_sph_legendre/check_nan.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/
+	23_sph_neumann/check_nan.cc: Likewise.
+
+2009-08-29  Paolo Carlini  
+
+	* include/bits/stl_construct.h: Include .
+
+2009-08-29  Chris Jefferson  
+
+	* include/bits/move.h (_GLIBCXX_FORWARD): Add.
+	* include/bits/stl_uninitialized.h (__uninitialized_construct_range):
+	Add.
+	* include/bits/stl_tempbuf.h (_Temporary_buffer::
+	_Temporary_buffer(_ForwardIterator, _ForwardIterator)): Use the latter.
+	* include/bits/stl_construct.h (_Construct(_T1*, _T2&&)): Add in
+	C++0x mode.
+	* testsuite/util/testsuite_hooks.h (operator<(const copy_tracker&,
+    	const copy_tracker&)): Add.
+	* testsuite/25_algorithms/stable_partition/mem_check.cc: New.
+	* testsuite/25_algorithms/stable_sort/mem_check.cc: Likewise.
+
+2009-08-26  Benjamin Kosnik  
+
+	* config/abi/pre/gnu.ver: Fixups for string member functions.
+
+2009-08-26  Jonathan Wakely  
+
+	PR libstdc++/41005
+	* configure.ac: Bump libtool_VERSION to 6:14:0.
+	* configure: Regenerate.
+	* src/Makefile.am: Compile fstream-inst.cc as C++0x.
+	* src/Makefile.in: Regenerate.
+	* config/abi/pre/gnu.ver: Add new symbols and disambiguate old ones,
+	move  symbols to 3.4.14 version.
+	* testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.14 version.
+
+2009-08-25  Benjamin Kosnik  
+
+	* include/bits/basic_string.h (basic_string): Add cbegin(),
+	cend(), crbegin(), crend() in C++0x mode.
+	* config/abi/pre/gnu.ver: Add exports.
+
+	* testsuite/util/testsuite_containers.h: New.
+	* testsuite/util/testsuite_container_traits.h: New.
+	* testsuite/21_strings/basic_string/requirements/citerators.cc: New.
+	* testsuite/21_strings/basic_string/requirements/typedefs.cc: New.
+	* testsuite/ext/vstring/requirements/citerators.cc: Edit.
+	* testsuite/ext/vstring/requirements/typedefs.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/
+	cliterators.cc: Edit.
+	* testsuite/23_containers/unordered_map/requirements/
+	citerators.cc: Edit.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/typedefs.cc: Edit.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation.cc: Move to nested directory.
+	* testsuite/23_containers/queue/requirements/typedefs.cc: New.
+	* testsuite/23_containers/priority_queue/requirements/typedefs.cc: New.
+	* testsuite/23_containers/multimap/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/multimap/requirements/typedefs.cc: New.
+	* testsuite/23_containers/set/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/set/requirements/typedefs.cc: New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	cliterators.cc: Edit.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	citerators.cc: Edit.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation/2.cc: Edit.: New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	typedefs.cc: Edit.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation.cc: Move to nested.
+	* testsuite/23_containers/forward_list/requirements/citerators.cc: New.
+	* testsuite/23_containers/forward_list/requirements/1.cc: Remove.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: New.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: New.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: New.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: New.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor.cc: New.
+	* testsuite/23_containers/forward_list/requirements/typedefs.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/
+	cliterators.cc: Edit.
+	* testsuite/23_containers/unordered_set/requirements/
+	citerators.cc: Edit.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/unordered_set/requirements/typedefs.cc: Edit.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation.cc: Move to nested.
+	* testsuite/23_containers/vector/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/vector/requirements/dr438/bool/
+	constructor.cc: Move.
+	* testsuite/23_containers/vector/requirements/typedefs.cc: New.
+	* testsuite/23_containers/vector/bool/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/vector/bool/requirements/dr438/
+	constructor.cc: New.
+	* testsuite/23_containers/deque/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/deque/requirements/typedefs.cc
+	* testsuite/23_containers/stack/requirements/typedefs.cc
+	* testsuite/23_containers/multiset/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/multiset/requirements/typedefs.cc: New.
+	* testsuite/23_containers/list/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/list/requirements/typedefs.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	cliterators.cc: Edit.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	citerators.cc: Edit.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation.cc: Move.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation/3.cc: New.
+	* testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
+	* testsuite/23_containers/map/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/map/requirements/typedefs.cc: New.
+	* testsuite/23_containers/array/requirements/citerators.cc: Edit.
+	* testsuite/23_containers/array/requirements/explicit_instantiation.cc:
+	Move.
+	* testsuite/23_containers/array/requirements/
+	explicit_instantiation/1.cc: New.
+	* testsuite/23_containers/array/requirements/
+	explicit_instantiation/2.cc: New.
+	* testsuite/23_containers/array/requirements/typedefs.cc: New.
+
+2009-08-24  Ralf Wildenhues  
+
+	* configure.ac (AC_PREREQ): Bump to 2.64.
+
+2009-08-24  Chris Jefferson  
+
+	* include/stl_algo.h (__unguarded_partition_pivot,
+	__move_median_first): New.
+	(__insertion_sort, __unguarded_insertion_sort): Adjust for move-only
+	types.
+	(__unguarded_linear_insert): Assume always inserting value at __last.
+	(__unguarded_partition): Take pivot by reference.
+	(__introsort_loop, __introselect): Use __unguarded_partition_pivot.
+	* testsuite/25_algorithms/nth_element/moveable.cc: Enable.
+
+2009-08-23  Ralf Wildenhues  
+
+	* libsupc++/Makefile.am (LTCOMPILE): Expand $(LIBTOOLFLAGS)
+	before --mode argument.
+	* libsupc++/Makefile.in: Regenerate.
+
+2009-08-22  Ralf Wildenhues  
+
+	* doc/xml/manual/build_hacking.xml: Use tools from Autoconf
+	2.64 and Automake 1.11 in examples; update link to Autoconf
+	manual page about quadrigraphs.
+	* Makefile.am (install-html, install-pdf): Remove.
+	* Makefile.in: Regenerate.
+
+	* Makefile.in: Regenerate.
+	* acinclude.m4: Regenerate.
+	* aclocal.m4: Regenerate.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* python/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2009-08-22  Ralf Wildenhues  
+
+	* libsupc++/Makefile.am (LTCOMPILE, LTCXXCOMPILE, CXXLINK): Add
+	$(LIBTOOLFLAGS).
+	* libsupc++/Makefile.in: Regenerate.
+	* src/Makefile.am (LTCXXCOMPILE, CXXLINK): Add $(AM_LIBTOOLFLAGS)
+	and $(LIBTOOLFLAGS).
+	* src/Makefile.in: Regenerate.
+
+2009-08-20  Paolo Carlini  
+
+	* testsuite/30_threads/packaged_task/requirements/typedefs.cc: Add
+	missing dg-require directives.
+
+2009-08-20  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/tr1/gamma.tcc: Change include guard from _TR1_GAMMA_TCC
+	to _GLIBCXX_TR1_GAMMA_TCC to match the rest of the headers in tr1.
+	* include/tr1/exp_integral.tcc: Replace _TR1_GAMMA_TCC with
+	__numeric_constants<_Tp>::__gamma_e().
+
+2009-08-17  Benjamin Kosnik  
+
+	* testsuite/30_threads/packaged_task/requirements/typedefs.cc: New.
+
+2009-08-15  Ralf Wildenhues  
+
+	* configure.ac: Move guarded checks for CC and CXX ...
+	* acinclude.m4 (GLIBCXX_CONFIGURE): ... from here.
+	* configure: Regenerate.
+
+2009-08-14  Edward Smith-Rowland  <3dw4rd@verizon.net>
+	    Paolo Carlini  
+
+	PR libstdc++/41061
+	* include/bits/random.h (operator<<(std::basic_ostream<>&,
+	const std::lognormal_distribution<>&),
+	operator>>(std::basic_istream<>&, std::lognormal_distribution<>&),
+	operator<<(std::basic_ostream<>&, const std::gamma_distribution<>&),
+	operator>>(std::basic_istream<>&, std::gamma_distribution<>&),
+	operator<<(std::basic_ostream<>&,
+	const std::chi_squared_distribution<>&),
+	operator>>(std::basic_istream<>&, std::chi_squared_distribution<>&),
+	operator<<(std::basic_ostream<>&,
+	const std::fisher_f_distribution<>&),
+	operator>>(std::basic_istream<>&, std::fisher_f_distribution<>&),
+	operator<<(std::basic_ostream<>&,
+	const std::student_t_distribution<>&),
+	operator>>(std::basic_istream<>&, std::student_t_distribution<>&),
+	operator<<(std::basic_ostream<>&,
+	const std::negative_binomial_distribution<>&)): Declare friend.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/serialize.cc
+	* testsuite/26_numerics/random/student_t_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/operators/
+	serialize.cc: Likewise.
+
+2009-08-14  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/stl_tree.h: In C++0x mode make erase return
+	an iterator as per DR 130.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* doc/xml/manual/intro.xml: Document.
+	* testsuite/23_containers/set/dr130.cc: New.
+	* testsuite/23_containers/multiset/dr130.cc: New.
+	* testsuite/23_containers/map/dr130.cc: New.
+	* testsuite/23_containers/multimap/dr130.cc: New.
+
+2009-08-14  Benjamin Kosnik  
+
+	* include/ext/pointer.h: Add pragma system_header, use
+	_GLIBCXX_USE_LONG_LONG, macro cleanup.
+
+2009-08-14  Uros Bizjak  
+
+	* src/compatibility-ldbl.cc: Include cmath.
+
+2009-08-13  Benjamin Kosnik  
+
+	* src/compatibility-ldbl.cc: Include tr1/functional.
+
+2009-08-12  Benjamin Kosnik  
+
+	* src/compatibility-ldbl.cc: Add explicit namespace scope.
+
+2009-08-11  Benjamin Kosnik  
+
+	* include/precompiled/extc++.h: Don't include TR1 if C++0x.
+	* include/precompiled/stdc++.h: Don't include cassert if
+	_GLIBCXX_NO_ASSERT defined.
+	* include/ext/cast.h (_GLIBCXX_BEGIN_NAMESPACE): Remove extra
+	semi-colon.
+	* include/ext/pointer.h (_GCC_CXX_POINTER_COMPARISON_OPERATION_SET):
+	Same.
+
+	* testsuite/17_intro/headers/all.cc: Move into dialect-specific
+	directory.
+	* testsuite/17_intro/headers/all_pedantic_errors.cc: Same.
+	* testsuite/17_intro/headers/all_assert_neg.cc: Same.
+	* testsuite/17_intro/headers/all_c++200x_compatibility.cc: Same.
+
+	* testsuite/17_intro/headers/c++1998/all.cc: Use extc++.h include.
+	* testsuite/17_intro/headers/c++1998/stdc++.cc: Converted all.cc,
+	use stdc++.h include.
+	* testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc: Same.
+	* testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Same.
+	* testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc: Same.
+	* testsuite/17_intro/headers/c++1998/all_no_exceptions.cc: New.
+	* testsuite/17_intro/headers/c++1998/all_multiple_inclusion.cc: To...
+	* testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
+	...this.
+	* testsuite/17_intro/headers/c++200x/all.cc: To...
+	* testsuite/17_intro/headers/c++200x/stdc++.cc: ..this.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: To...
+	* testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc:
+	...this.
+	* testsuite/17_intro/headers/c++200x/all_no_exceptions.cc: New.
+	* testsuite/17_intro/headers/c++200x/all_pedantic_errors.cc: New.
+
+2009-08-10  Benjamin Kosnik  
+
+	* include/std/future: Move error handling bits outside macro guard.
+	* src/future.cc: Adjust.
+
+	* include/precompiled/stdc++.h: Add future.
+	* doc/xml/manual/using.xml: Same.
+
+2009-08-10  Benjamin Kosnik  
+
+	* src/hashtable.cc: Just definitions.
+	* src/hashtable_c++0x.cc: Compile C++0x versions.
+	* src/hash.cc: Same.
+	* src/hash_c++0x.cc: Same.
+	src/hash_tr1.cc: Compile TR1 versions.
+	src/hashtable_tr1.cc: Same.
+
+	* src/limits_c++0x.cc: Sync build error handling.
+
+	* src/Makefile.am (sources): Change hash.cc to hash_tr1.cc,
+	hashtable.cc to hashtable_tr1.cc.
+	* src/Makefile.in: Regenerate.
+
+2009-08-10  Benjamin Kosnik  
+
+	* include/tr1_impl/functional: Doxygen markup.
+
+	* doc/html/*: Regenerate.
+
+2009-08-10  Benjamin Kosnik  
+
+	* include/std/future: Fixes for -fno-exceptions.
+	* include/bits/functexcept.h: Same.
+	* libsupc++/exception_ptr.h: Same.
+	* src/pool_allocator.cc: Same.
+	* src/future.cc: Same.
+	* src/functexcept.cc: Same.
+	* config/abi/pre/gnu.ver: New exports.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Same.
+
+	* testsuite/23_containers/deque/operators/1.cc: Separate in two...
+	* testsuite/23_containers/deque/operators/2.cc: New.
+
+2009-08-07  Paolo Carlini  
+
+	* src/hash.cc (hash::operator()(string),
+	hash::operator()(wstring)): Do not decorate as throwing
+	nothing.
+	* include/bits/functional_hash.h (hash::
+	operator()(error_code)): Likewise.
+
+2009-08-06  Benjamin Kosnik  
+
+	* src/compatibility.cc: Make C++0x safe, add in explicit casts to
+	bool for stream sentry objects.
+	* include/bits/istream.tcc: Same.
+	* include/bits/ostream.tcc: Same.
+	* include/bits/basic_string.tcc: Same.
+	* include/bits/ostream_insert.h: Same.
+	* src/istream.cc: Same.
+
+2009-08-04  Paolo Carlini  
+
+	PR libstdc++/15523
+	* include/debug/safe_iterator.h (_Safe_iterator<>::
+	_Safe_iterator(const _Safe_iterator&), _Safe_iterator<>::
+	operator=(const _Safe_iterator&)): Implement resolution of DR 408,
+	do not error out when the source is a value-initialized iterator.
+	* testsuite/23_containers/vector/15523.cc: New.
+	* doc/xml/manual/intro.xml: Add an entry for DR 408.
+
+2009-08-03  Paolo Carlini  
+
+	* include/std/istream (operator>>(basic_istream<>&&, _Tp&)): Minor
+	cosmetic changes, inline.
+	* include/std/ostream (operator<<(basic_ostream<>&&, const _Tp&)):
+	Likewise.
+	* include/bits/move.h: Minor cosmetic changes.
+
+2009-08-02  Paolo Carlini  
+
+	PR libstdc++/40912 (final)
+	* testsuite/26_numerics/random/mt19937.cc: dg-require-cstdint.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	parms_neg.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	parms.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/range.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/num_xbound_fun.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/initlist_fun.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/minstd_rand.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/
+	parms.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/
+	range.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/
+	initlist.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/
+	cons/parms_neg.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/cons/
+	parms.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/ranlux24_base.cc: Likewise.
+	* testsuite/26_numerics/random/
+	default_random_engine.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/
+	cons/range.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/
+	cons/initlist.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/
+	cons/num_xbound_fun.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/base_move.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/seed1.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/seed2.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/base_copy.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	cons/seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/ranlux48_base.cc: Likewise.
+	* testsuite/26_numerics/random/minstd_rand0.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	cons/seed1.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	cons/seed2.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	base_move.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed1.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed2.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	base_copy.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	cons/seed1.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	cons/seed2.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/mt19937_64.cc: Likewise.
+	* testsuite/26_numerics/random/random_device/cons/
+	token.cc: Likewise.
+	* testsuite/26_numerics/random/random_device/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/random_device/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/ranlux24.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/range.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/num_xbound_fun.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/initlist_fun.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	cons/seed1.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	cons/seed2.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	requirements/non_uint_neg.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/ranlux48.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	base_move.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed1.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed2.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	base_copy.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/
+	cons/parms.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/
+	cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/knuth_b.cc: Likewise.
+
+2009-07-31  Jason Merrill  
+	    Douglas Gregor  
+
+	* include/bits/move.h (forward): Implement as in N2835.
+	(move): Implement as in N2831.
+	* include/std/istream (rvalue stream operator>>): New.
+	* include/std/ostream (rvalue stream operator<<): New.
+	* testsuite/27_io/rvalue_streams.cc: New.
+
+2009-07-31  Jason Merrill  
+
+	* include/bits/forward_list.h (splice_after): Use forward.
+	(merge): Likewise.
+	* include/bits/stl_iterator.h (move_iterator::operator*): Use move.
+	(move_iterator::operator[]): Use move.
+	* include/bits/stl_list.h (insert): Use move.
+	* include/std/thread (_Callable constructor): Use forward.
+	* include/std/tuple: Don't specify explicit template args to move.
+
+	* testsuite/20_util/forward/requirements/explicit_instantiation.cc:
+	Adjust signature.
+	* testsuite/20_util/tuple/swap.cc: Swap takes lvalue reference.
+	* testsuite/30_threads/shared_future/cons/copy.cc: Return rvalue
+	reference.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr.cc,
+	testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc,
+	testsuite/20_util/shared_ptr/cons/auto_ptr.cc,
+	testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc,
+	testsuite/23_containers/forward_list/ext_pointer/operations/1.cc,
+	testsuite/23_containers/forward_list/ext_pointer/operations/5.cc,
+	testsuite/23_containers/forward_list/operations/1.cc,
+	testsuite/23_containers/forward_list/operations/5.cc: Use move.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc,
+	testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc,
+	testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc,
+	testsuite/23_containers/list/requirements/dr438/insert_neg.cc,
+	testsuite/30_threads/thread/cons/assign_neg.cc: Adjust line numbers.
+
+2009-07-31  Paolo Carlini  
+
+	PR libstdc++/40912 (partial)
+	* include/std/random: Disable the facility if  is not
+	available.
+
+2009-07-30  John David Anglin  
+
+	PR libstdc++/40919
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	xfail on darwin[3-9]*.
+
+2009-07-30  Paolo Carlini  
+
+	PR libstdc++/40917
+	* testsuite/util/replacement_memory_operators.h: Add missing includes,
+	tweak qualifications.
+
+2009-07-30  Paolo Carlini  
+
+	PR libstdc++/40916
+	* testsuite/23_containers/list/modifiers/swap/1.cc: Fix include order.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: Likewise.
+
+2009-07-30  Ralf Wildenhues  
+
+	* acinclude.m4 (GLIBCXX_CONFIGURE): Use m4_rename_force.
+
+2009-07-30  Paolo Carlini  
+
+	PR libstdc++/40915
+	* testsuite/18_support/headers/exception/synopsis.cc: Fix
+	std::terminate declaration.
+
+2009-07-29  Paolo Carlini  
+
+	PR libstdc++/40908
+	* config/abi/pre/gnu.ver: Avoid exporting inadvertently std::mutex
+	symbols at GLIBCXX_3.4.
+
+2009-07-29  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Add GLIBCXX_3.4.13, move a symbol into it.
+	* testsuite/util/testsuite_abi.cc: Adjust.
+	* configure.ac: Bump libtool_VERSION to 6:13:0.
+	* configure: Regenerate.
+
+2009-07-28  Benjamin Kosnik  
+	    Tyler Earman  
+
+	* doc/xml/manual/configure.xml: Consistent placement of
+	ABI-changing options, clarify --enable-clocale.
+
+2009-07-28  Ralf Wildenhues  
+
+	* python/Makefile.in: Regenerate.
+
+2009-07-27  Ralf Wildenhues  
+
+	* python/Makefile.am (install-data-local): Use DESTDIR
+	correctly.
+
+2009-07-24  Jason Merrill  
+
+	Core issue 901
+	* libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Handle NULL
+	dealloc.
+
+2009-07-24  Joseph Myers  
+
+	* include/c_global/cwchar (swprintf, vswprintf): Do not use if
+	_GLIBCXX_HAVE_BROKEN_VSWPRINTF.
+	* testsuite/lib/libstdc++.exp (check_v3_target_swprintf): New.
+	* testsuite/lib/dg-options.exp (dg-require-swprintf): New.
+	* testsuite/21_strings/headers/cwchar/functions_std.cc,
+	testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc,
+	testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+	Use dg-require-swprintf.
+
+2009-07-24  Paolo Carlini  
+
+	* testsuite/26_numerics/valarray/dr630-2.cc: Extend.
+
+2009-07-23  Paolo Carlini  
+
+	* include/c_std/cmath (abs(_Tp)): Add.
+	* include/c_global/cmath (abs(_Tp)): Likewise.
+	* testsuite/26_numerics/headers/cmath/overloads.cc: Extend.
+
+2009-07-23  Paolo Carlini  
+
+	* doc/html/ext/lwg-closed.html: Update to R65.
+	* doc/html/ext/lwg-defects.html: Likewise.
+	* doc/html/ext/lwg-active.html: Likewise.
+	* doc/xml/manual/intro.xml: Update DRs entries.
+
+2009-07-22  Jason Merrill  
+
+	* libsupc++/typeinfo (__GXX_MERGED_TYPEINFO_NAMES): Default to 0.
+
+2009-07-22  Paolo Carlini  
+
+	* include/std/valarray (valarray<>::operator=(const valarray<>&),
+	valarray<>::operator=(initializer_list<>)): Implement resolution
+	of DR 630, [Ready] in Frankfurt.
+	* testsuite/26_numerics/valarray/dr630-1.cc: New.
+	* testsuite/26_numerics/valarray/dr630-2.cc: Likewise.
+	* doc/xml/manual/intro.xml: Add an entry for DR 630.
+
+2009-07-21  Paolo Carlini  
+
+	* include/std/chrono (duration<>::operator%=,  operator%):
+	Add, per DR 934.
+	* testsuite/20_util/duration/arithmetic/dr934-1.cc: New.
+	* testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
+
+	* include/std/chrono (operator/): Simplify implementation.
+
+2009-07-20  Benjamin Kosnik  
+
+	* doc/xml/manual/intro.xml: Escape '&', validate.
+	* doc/xml/manual/using.xml: Validate, dead link check.
+	* doc/xml/manual/strings.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/iterators.xml: Same.
+	* doc/xml/manual/spine.xml: Same.
+
+	* doc/xml/faq.xml: Remove redundant xreflabel entities.
+	* doc/xml/gnu/gpl-3.0.xml: Same.
+	* doc/xml/manual/mt_allocator.xml: Same.
+	* doc/xml/manual/allocator.xml: Same.
+	* doc/xml/manual/ctype.xml: Same.
+	* doc/xml/manual/codecvt.xml: Same.
+	* doc/xml/manual/backwards_compatibility.xml: Same.
+	* doc/xml/manual/shared_ptr.xml: Same.
+	* doc/xml/manual/abi.xml: Same.
+	* doc/xml/manual/auto_ptr.xml: Same.
+	* doc/xml/manual/internals.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/bitmap_allocator.xml: Same.
+	* doc/xml/manual/build_hacking.xml: Same.
+	* doc/xml/manual/evolution.xml: Same.
+	* doc/xml/manual/debug.xml: Same.
+	* doc/xml/manual/localization.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/locale.xml: Same.
+	* doc/xml/manual/messages.xml: Same.
+	* doc/xml/manual/spine.xml: Same.
+	* doc/xml/manual/test.xml: Same.
+	* doc/xml/book.txml: Same.
+	* doc/xml/spine.xml: Same.
+
+	* doc/xml/api.xml: Clean up ulink targets, convert to link if possible.
+	* doc/xml/manual/backwards_compatibility.xml: Same.
+	* doc/xml/manual/concurrency.xml: Same.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/status_cxx1998.xml: Same.
+	* doc/xml/manual/containers.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/strings.xml: Same.
+	* doc/xml/manual/debug_mode.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/messages.xml: Same.
+	* doc/xml/manual/test.xml: Same.
+
+	* doc/xml/manual/abi.xml: Same.
+	* doc/xml/manual/auto_ptr.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/build_hacking.xml: Same.
+	* doc/xml/manual/evolution.xml: Same.
+	* doc/xml/manual/using.xml: Same.
+	* doc/xml/manual/debug_mode.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/algorithms.xml: Same.
+
+	* doc/html: Regenerate.
+
+2009-07-18  Paolo Carlini  
+
+	PR libstdc++/40712
+	* config/locale/gnu/numeric_members.cc (numpunct<>::
+	_M_initialize_numpunct): Dynamically allocate _M_data->_M_grouping
+	and copy the langinfo data into it.
+	(numpunct<>::~numpunct): Free the allocated memory.
+	* config/locale/gnu/monetary_members.cc (moneypunct<>::
+	_M_initialize_moneypunct): Dynamically allocate _M_data->_M_grouping,
+	_M_data->_M_positive_sign, _M_data->_M_negative_sign,
+	_M_data->_M_curr_symbol.
+	(moneypunct<>::~moneypunct): Free the allocated memory.
+	* testsuite/22_locale/moneypunct/40712.cc: New.
+
+	* include/bits/locale_facets.tcc (__numpunct_cache<>::_M_cache):
+	Do not leak memory if new throws.
+	* include/bits/locale_facets_nonio.tcc
+	(__moneypunct_cache<>::_M_cache): Likewise.
+
+2009-07-17  Joseph Myers  
+
+	PR other/40784
+	* configure: Regenerate.
+
+2009-07-16  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_common_types.h (standard_layout): Activate.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Adjust
+	line numbers.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+
+2009-07-16  Joseph Myers  
+
+	* configure: Regenerate.
+
+2009-07-16  Jason Merrill  
+
+	PR libstdc++/37907
+	* include/std/type_traits: Add is_standard_layout, is_trivial.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc,
+	testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Update line numbers.
+
+2009-07-16  Phil Muldoon 
+	    Tom Tromey 
+
+	* python/libstdcxx/v6/printers.py (StdStringPrinter.to_string):
+	Fetch std::string to the given length.
+
+2009-07-16  Paolo Carlini  
+
+	* include/bits/istream.tcc (basic_istream<>::operator>>(short&),
+	basic_istream<>::operator>>(int&)): Implement resolution of DR 696,
+	[Ready] in Frankfurt.
+	* include/tr1_impl/regex (regex_traits<>::value): Adjust.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc:
+	New.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc:
+	Adjust.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc:
+	Likewise.
+	* doc/xml/manual/intro.xml: Add an entry for DR 696.
+
+	* include/bits/istream.tcc: Minor clean-up to the initializers of the
+	__err locals.
+	* include/bits/ostream.tcc: Likewise.
+	* src/compatibility.cc: Likewise.
+	* src/istream.cc: Likewise.
+
+2009-07-12  Paolo Carlini  
+
+	* include/std/type_traits (common_type): Remove workaround for
+	PR36628, now fixed.
+
+2009-07-11  Richard Sandiford  
+
+	PR testsuite/40699
+	PR testsuite/40707
+	PR testsuite/40709
+	* testsuite/lib/libstdc++.exp: Revert 2009-06-30 commit.
+
+2009-07-08  Janis Johnson  
+
+	PR libstdc++/40691
+	* include/bits/valarray_after.h (_Expr::operator!): Fix return type.
+	* testsuite/26_numerics/valarray/40691.cc: New test.
+
+2009-07-06  Benjamin Kosnik  
+
+	* testsuite/21_strings/c_strings/wchar_t/3.cc: Add copyright.
+	* testsuite/21_strings/c_strings/char/3.cc: Same.
+
+2009-07-06  Jason Merrill  
+
+	* libsupc++/vmi_class_type_info.cc (__do_dyncast): Use src2dst hint
+	to defer searching bases that don't overlap the desired address.
+
+2009-07-05  Joseph Myers  
+
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc,
+	testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
+	to_wstring.cc, testsuite/ext/vstring/element_access/char/front_back.cc,
+	testsuite/ext/vstring/element_access/wchar_t/front_back.cc,
+	testsuite/ext/vstring/init-list.cc,
+	testsuite/ext/vstring/moveable.cc,
+	testsuite/ext/vstring/requirements/citerators.cc,
+	testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc,
+	testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc:
+	Use dg-require-string-conversions.
+
+2009-06-30  Richard Sandiford  
+
+	* testsuite/lib/libstdc++.exp (libstdc++_init): Don't add "."
+	to ld_library_path.  Use add_path.  Add just find_libgcc_s to
+	ld_library_path, not every libgcc multilib directory.
+
+2009-06-30  Paolo Carlini  
+
+	PR libstdc++/40600
+	* testsuite/25_algorithms/minmax/2.cc: Fix consistently with
+	std::minmax return type.
+	* testsuite/25_algorithms/minmax/3.cc: Likewise.
+
+2009-06-30  Paolo Carlini  
+
+	PR libstdc++/40511
+	* config/locale/gnu/c_locale.cc: Don't use LC_CTYPE_MASK together
+	with glibc2.2.x.
+
+2009-06-29  Paolo Carlini  
+
+	* include/bits/random.tcc
+	(linear_congruential_engine<>::seed(seed_seq&)): Use uint_least32_t
+	as array type.
+
+2009-06-29  Paolo Carlini  
+
+	* include/bits/random.h (__mod(_Tp)): Use defaults.
+	(struct _Mod): Adjust template parameters.
+	(linear_congruential_engine<>::operator()()): Adjust.
+	(typedef _UInt32Type): Remove.
+	(mersenne_twister_engine<>::initialization_multiplier): Fix type.
+	* include/bits/random.tcc (struct _Mod): Adjust template parameters.
+	(linear_congruential_engine<>::seed(result_type)): Adjust __mod
+	calls.
+	(mersenne_twister_engine<>::seed(result_type)): Likewise.
+	(mersenne_twister_engine<>::seed(seed_seq&)): Likewise.
+	(subtract_with_carry_engine<>::seed(result_type)): Likewise.
+	(subtract_with_carry_engine<>::seed(seed_seq&)): Likewise.
+	(seed_seq::seed_seq(std::initializer_list<>)): Likewise.
+	(seed_seq::seed_seq(_InputIterator, _InputIterator)): Likewise.
+	(seed_seq::generate(_RandomAccessIterator, _RandomAccessIterator)):
+	Likewise.
+
+	* include/bits/random.tcc
+	(mersenne_twister_engine<>::seed(result_type)): Fix i usage in the
+	formula (i mod n).
+	(mersenne_twister_engine<>::seed(seed_seq&)): Use uint_least32_t
+	as array type.
+	(subtract_with_carry_engine<>::seed(seed_seq&)): Likewise; fix array
+	size.
+	(subtract_with_carry_engine<>::seed(result_type)): Fix; also use
+	uint_least32_t.
+
+2009-06-24  Jonathan Wakely  
+
+	* include/std/future (shared_future): Adjust doxygen comment.
+
+2009-06-24  Jonathan Wakely  
+
+	PR libstdc++/40297
+	* include/bits/atomic_0.h: Reverse debug assertions.
+	* include/bits/atomic_2.h: Likewise.
+
+2009-06-23  DJ Delorie  
+
+	Add MeP port.
+	* configure.host: Add mep support.
+
+2009-06-23  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in (PREDEFINED): Add _GLIBCXX_ATOMIC_BUILTINS_*.
+	(INPUT): Add future.
+	* include/std/future: Adjust markup.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: Adjust
+	line numbers.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Same.
+
+2009-06-23  Jonathan Wakely  
+
+	* include/bits/shared_ptr.h: Do not swap rvalues.
+	* testsuite/20_util/owner_less/cmp.cc: Add missing test variables.
+	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
+	* testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
+	* testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
+	* testsuite/20_util/tuple/swap.cc: Likewise.
+
+2009-06-23  Jonathan Wakely  
+
+	* include/debug/macros.h: Replace @tbd with valid doxygen tag @todo.
+	* include/std/ratio: Typo in comment.
+
+2009-06-23  Paolo Carlini  
+
+	PR libstdc++/40518
+	* include/bits/basic_string.h (basic_string<>::_Rep::
+	_M_set_length_and_sharable): Do not write the empty rep.
+	(basic_string<>::erase(iterator, iterator)): Likewise,
+	move out of line...
+	* include/bits/basic_string.tcc: ... here.
+
+2009-06-22  Paolo Carlini  
+
+	* testsuite/util/testsuite_common_types.h (bitwise_operators,
+	bitwise_assignment_operators): Initialize a and b.
+	(struct has_bitwise_operators): Do not call the latter.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+
+2009-06-22  Paolo Carlini  
+
+	* testsuite/23_containers/list/invalidation/1.cc: Mark test as
+	possibly unused.
+	* testsuite/23_containers/list/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/4.cc: Likewise.
+
+2009-06-21  Jonathan Wakely  
+
+	* include/std/future: New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* src/future.cc: New.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+	* config/abi/pre/gnu.ver: Add export.
+	* testsuite/30_threads/headers/future/std_c++0x_neg.cc: New.
+	* testsuite/30_threads/headers/future/types_std_c++0x.cc: New.
+	* testsuite/30_threads/packaged_task/cons/1.cc: New.
+	* testsuite/30_threads/packaged_task/cons/2.cc: New.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: New.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: New.
+	* testsuite/30_threads/packaged_task/cons/move_assign.cc: New.
+	* testsuite/30_threads/packaged_task/cons/move.cc: New.
+	* testsuite/30_threads/packaged_task/members/boolconv.cc: New.
+	* testsuite/30_threads/packaged_task/members/get_future.cc: New.
+	* testsuite/30_threads/packaged_task/members/get_future2.cc: New.
+	* testsuite/30_threads/packaged_task/members/invoke.cc: New.
+	* testsuite/30_threads/packaged_task/members/invoke2.cc: New.
+	* testsuite/30_threads/packaged_task/members/invoke3.cc: New.
+	* testsuite/30_threads/packaged_task/members/invoke4.cc: New.
+	* testsuite/30_threads/packaged_task/members/invoke5.cc: New.
+	* testsuite/30_threads/packaged_task/members/reset.cc: New.
+	* testsuite/30_threads/packaged_task/members/reset2.cc: New.
+	* testsuite/30_threads/packaged_task/members/swap.cc: New.
+	* testsuite/30_threads/packaged_task/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/30_threads/promise/cons/1.cc: New.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: New.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: New.
+	* testsuite/30_threads/promise/cons/move_assign.cc: New.
+	* testsuite/30_threads/promise/cons/move.cc: New.
+	* testsuite/30_threads/promise/members/get_future.cc: New.
+	* testsuite/30_threads/promise/members/get_future2.cc: New.
+	* testsuite/30_threads/promise/members/set_exception.cc: New.
+	* testsuite/30_threads/promise/members/set_exception2.cc: New.
+	* testsuite/30_threads/promise/members/set_value.cc: New.
+	* testsuite/30_threads/promise/members/set_value2.cc: New.
+	* testsuite/30_threads/promise/members/set_value3.cc: New.
+	* testsuite/30_threads/promise/members/swap.cc: New.
+	* testsuite/30_threads/promise/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: New.
+	* testsuite/30_threads/shared_future/cons/copy.cc: New.
+	* testsuite/30_threads/shared_future/cons/default_neg.cc: New.
+	* testsuite/30_threads/shared_future/cons/move.cc: New.
+	* testsuite/30_threads/shared_future/members/get.cc: New.
+	* testsuite/30_threads/shared_future/members/get2.cc: New.
+	* testsuite/30_threads/shared_future/members/has_exception.cc: New.
+	* testsuite/30_threads/shared_future/members/has_value.cc: New.
+	* testsuite/30_threads/shared_future/members/is_ready.cc: New.
+	* testsuite/30_threads/shared_future/members/wait.cc: New.
+	* testsuite/30_threads/shared_future/members/wait_for.cc: New.
+	* testsuite/30_threads/shared_future/members/wait_until.cc: New.
+	* testsuite/30_threads/shared_future/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: New.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: New.
+	* testsuite/30_threads/unique_future/cons/default_neg.cc: New.
+	* testsuite/30_threads/unique_future/cons/move.cc: New.
+	* testsuite/30_threads/unique_future/members/get.cc: New.
+	* testsuite/30_threads/unique_future/members/get2.cc: New.
+	* testsuite/30_threads/unique_future/members/has_exception.cc: New.
+	* testsuite/30_threads/unique_future/members/has_value.cc: New.
+	* testsuite/30_threads/unique_future/members/is_ready.cc: New.
+	* testsuite/30_threads/unique_future/members/wait.cc: New.
+	* testsuite/30_threads/unique_future/members/wait_for.cc: New.
+	* testsuite/30_threads/unique_future/members/wait_until.cc: New.
+	* testsuite/30_threads/unique_future/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/performance/30_threads/future/polling.cc: New.
+
+2009-06-20  Paolo Carlini  
+
+	* Revert last Change.
+
+2009-06-20  Paolo Carlini  
+
+	PR libstdc++/40497
+	* include/bits/stl_iterator_base_funcs.h (next, prev): Fix the
+	signature per the current C++1x draft (N2857).
+	* testsuite/24_iterators/operations/40497.cc: Add.
+
+2009-06-19  Paolo Carlini  
+
+	* include/bits/random.h (_Adaptor): Simplify for _DInputType always
+	a floating point type.
+	(uniform_int_distribution<>::uniform_int_distribution(_IntType,
+	_IntType)): Fix second default argument.
+	(uniform_int_distribution<>::_M_call): Remove.
+	(uniform_int_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&)): Only declare.
+	* include/bits/random.tcc (uniform_int_distribution<>::_M_call(
+	_UniformRandomNumberGenerator&, result_type, result_type, true_type):
+	Remove.
+	uniform_int_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&): Define here.
+	(geometric_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&), discrete_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&),
+	piecewise_constant_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&),
+	piecewise_linear_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&)): Use double as
+	the second template argument of _Adaptor.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/
+	default.cc: Adjust.
+
+2009-06-19  Paolo Carlini  
+
+	* include/bits/random.tcc (discrete_distribution<>::param_type::
+      	param_type(size_t, double, double, _Func),
+	discrete_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&)): Tidy.
+	(piecewise_constant_distribution<>::param_type::_M_initialize):
+	Use reserve, fix.
+	(piecewise_constant_distribution<>::param_type::
+	param_type(initializer_list<>, _Func),
+	piecewise_constant_distribution<>::param_type::
+	param_type(size_t, _RealType, _RealType, _Func),
+       	piecewise_linear_distribution<>::param_type::
+	param_type(initializer_list<>, _Func),
+       	piecewise_linear_distribution<>::param_type::
+	param_type(size_t, _RealType, _RealType, _Func)): Use reserve, tidy.
+	(piecewise_constant_distribution<>::param_type::
+	param_type(_InputIteratorB, _InputIteratorB, _InputIteratorW),
+	piecewise_constant_distribution<>::
+	operator()(_UniformRandomNumberGenerator&, const param_type&),
+      	piecewise_linear_distribution<>::
+	operator()(_UniformRandomNumberGenerator&, const param_type&)): Fix.
+	(operator>>(std::basic_istream<>&,
+	piecewise_constant_distribution<>&),
+	operator>>(std::basic_istream<>&, piecewise_linear_distribution<>&)):
+	Use reserve.
+	* include/bits/random.h: Minor cosmetic changes.
+
+2009-06-17  Benjamin Kosnik  
+
+	* testsuite/23_containers/list/check_construct_destroy.h: New.
+	Move test logic here.
+	* testsuite/23_containers/list/moveable.h: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.h: Same.
+	* testsuite/23_containers/list/modifiers/1.h: Same.
+	* testsuite/23_containers/list/modifiers/2.h: Same.
+	* testsuite/23_containers/list/modifiers/3.h: Same.
+	* testsuite/23_containers/list/modifiers/swap/1.h: Same.
+	* testsuite/23_containers/list/modifiers/swap/2.h: Same.
+	* testsuite/23_containers/list/modifiers/swap/3.h: Same.
+	* testsuite/23_containers/list/operations/1.h: Same.
+	* testsuite/23_containers/list/operations/2.h: Same.
+	* testsuite/23_containers/list/operations/3.h: Same.
+	* testsuite/23_containers/list/operations/4.h: Same.
+	* testsuite/23_containers/list/operations/5.h: Same.
+	* testsuite/23_containers/list/capacity/1.h: Same.
+	* testsuite/23_containers/list/init-list.h: Same.
+	* testsuite/23_containers/list/cons/1.h: Same.
+	* testsuite/23_containers/list/cons/2.h: Same.
+	* testsuite/23_containers/list/cons/3.h: Same.
+	* testsuite/23_containers/list/cons/4.h: Same.
+	* testsuite/23_containers/list/cons/5.h: Same.
+	* testsuite/23_containers/list/cons/6.h: Same.
+	* testsuite/23_containers/list/cons/7.h: Same.
+	* testsuite/23_containers/list/cons/8.h: Same.
+	* testsuite/23_containers/list/cons/9.h: Same.
+	* testsuite/23_containers/list/cons/clear_allocator.h: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Include test
+	header.
+	* testsuite/23_containers/list/modifiers/1.cc: Same.
+	* testsuite/23_containers/list/modifiers/2.cc: Same.
+	* testsuite/23_containers/list/modifiers/3.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/1.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/3.cc: Same.
+	* testsuite/23_containers/list/operations/1.cc: Same.
+	* testsuite/23_containers/list/operations/2.cc: Same.
+	* testsuite/23_containers/list/operations/3.cc: Same.
+	* testsuite/23_containers/list/operations/4.cc: Same.
+	* testsuite/23_containers/list/operations/5.cc: Same.
+	* testsuite/23_containers/list/capacity/1.cc: Same.
+	* testsuite/23_containers/list/init-list.cc: Same.
+	* testsuite/23_containers/list/cons/1.cc: Same.
+	* testsuite/23_containers/list/cons/2.cc: Same.
+	* testsuite/23_containers/list/cons/3.cc: Same.
+	* testsuite/23_containers/list/cons/4.cc: Same.
+	* testsuite/23_containers/list/cons/5.cc: Same.
+	* testsuite/23_containers/list/cons/6.cc: Same.
+	* testsuite/23_containers/list/cons/7.cc: Same.
+	* testsuite/23_containers/list/cons/8.cc: Same.
+	* testsuite/23_containers/list/cons/9.cc: Same.
+	* testsuite/23_containers/list/cons/clear_allocator.cc: Same.
+	* testsuite/23_containers/list/check_construct_destroy.cc: Same.
+	* testsuite/23_containers/list/moveable.cc: Same.
+
+2009-06-17  Tom Tromey  
+
+	* python/hook.in: Do not fail when there is no current objfile.
+	Use os.path.normpath.
+
+2009-06-16  Jonathan Wakely  
+
+	* libsupc++/exception_ptr.h (exception_ptr::swap(exception_ptr&&)):
+	Remove.
+	(exception_ptr::operator=(exception_ptr&&)): Cast source to
+	rvalue-reference so that move constructor is called.
+	* testsuite/18_support/exception_ptr/move.cc: New.
+
+2009-06-16  Jonathan Wakely  
+
+	* include/std/thread (~thread(), operator=(thread&&)): Call terminate
+	if joinable.
+
+2009-06-15  Tom Tromey  
+
+	* python/libstdcxx/v6/printers.py (StdMapPrinter.__init__): Don't
+	set self.iter.
+	(StdMapPrinter.to_string): Make a new iterator.
+	(StdMapPrinter.children): Likewise.
+	(StdSetPrinter.__init__): Don't set self.iter.
+	(StdSetPrinter.to_string): Make a new iterator.
+	(StdSetPrinter.children): Likewise.
+
+2009-06-11  Paolo Carlini  
+
+	* include/bits/random.tcc
+	(negative_binomial_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&): Tweak to use a
+	class member gamma_distribution.
+	(negative_binomial_distribution<>::operator()
+	(_UniformRandomNumberGenerator&)): Implement out of line here.
+	(operator<<(basic_ostream<>&, negative_binomial_distribution<>),
+	operator>>(basic_ostream<>&, negative_binomial_distribution<>): Adjust.
+	(student_t_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&): Move inline,
+	simplify.
+	(operator<<(basic_ostream<>&, student_t_distribution<>),
+	operator>>(basic_ostream<>&, student_t_distribution<>): Adjust.
+	(chi_squared_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&): Move inline,
+	tweak to use a class member gamma_distribution.
+	(operator<<(basic_ostream<>&, chi_squared_distribution<>),
+	operator>>(basic_ostream<>&, chi_squared_distribution<>): Adjust.
+	(fisher_f_distribution<>::operator() (_UniformRandomNumberGenerator&,
+	const param_type&): Move inline, tweak to use class member
+	gamma_distributions.
+	(operator<<(basic_ostream<>&, fisher_f_distribution<>),
+	operator>>(basic_ostream<>&, fisher_f_distribution<>): Adjust.
+	* include/bits/random.h: Adjust, minor tweaks.
+
+2009-06-10  Tom Tromey  
+
+	* python/libstdcxx/v6/printers.py (lookup_function): Remove extra ';'.
+	(build_libstdcxx_dictionary): Accept shortened form of
+	basic_string names.
+	(StdStringPrinter.to_string): Remove reference to WideEncoding.
+
+2009-06-10  Tom Tromey  
+
+	PR libstdc++/40289:
+	* python/Makefile.in: Rebuild.
+	* python/hook.in: Compute module path relative to objfile.
+	* python/Makefile.am (pythondir): Redefine.
+	(gdb.py): Subst toolexeclibdir.
+	(install-data-local): Rewrite.
+
+2009-06-09  Benjamin Kosnik  
+
+	* include/bits/move.h: Doxygen group fixes.
+
+2009-06-08  Paolo Carlini  
+
+	* include/bits/random.tcc (gamma_distribution<>::operator()
+	(_UniformRandomNumberGenerator&, const param_type&): Redo, using
+	the Marsaglia/Tsang algorithm.
+	(gamma_distribution<>::param_type::_M_initialize): Adjust.
+	(operator<<(basic_ostream<>&, gamma_distribution<>),
+	operator>>(basic_ostream<>&, gamma_distribution<>): Likewise.
+
+	* include/bits/random.tcc(student_t_distribution<>::_M_gaussian):
+	Remove, just use normal_distribution.
+	(operator<<(basic_ostream<>&, student_t_distribution<>),
+	operator>>(basic_ostream<>&, student_t_distribution<>): Adjust.
+	(linear_congruential_engine<>::operator()()): Move inline.
+	(lognormal_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&)): Move inline, just use normal_distribution.
+	(operator<<(basic_ostream<>&, lognormal_distribution<>),
+	operator>>(basic_ostream<>&, lognormal_distribution<>): Adjust.
+	(weibull_distribution<>::operator()(_UniformRandomNumberGenerator&,
+	const param_type&)): Move here, out of line.
+	(piecewise_constant_distribution<>::param_type::param_type()): Move
+	inline.
+	* include/bits/random.h: Adjust, minor tweaks.
+
+2009-06-05  Benjamin Kosnik  
+
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Remove xfail.
+
+2009-06-04  Benjamin Kosnik  
+
+	* include/ext/throw_allocator.h: Rework.
+	* include/ext/pb_ds/detail/debug_map_base.hpp: Adjust usage.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Same.
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.tcc: Inline functions.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.tcc: Same.
+
+2009-06-03  Benjamin Kosnik  
+
+	* testsuite/23_containers/list/cons/6.cc: Adjust test name.
+
+2009-06-02  Richard Sandiford  
+
+	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Handle AIX targets.
+	* configure: Regenerate.
+
+2009-06-03  Paolo Carlini  
+
+	PR libstdc++/40299
+	* include/ext/memory: Fully qualify calls with __gnu_cxx.
+	* testsuite/ext/rope/40299.cc: New.
+
+2009-05-28  Tom Tromey  
+	    Phil Muldoon  
+	    Jonathan Wakely  
+
+	* python/Makefile.in, , python/libstdcxx/__init__.py,
+	python/libstdcxx/v6/__init__.py, python/libstdcxx/v6/printers.py,
+	python/hook.in, python/Makefile.am: New files.
+	* configure, Makefile.in: Rebuild.
+	* acinclude.m4 (glibcxx_SUBDIRS): Add python.
+	* Makefile.am (SUBDIRS): Add python.
+
+2009-05-28  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_allocator.h (check_new, check_delete): Move
+	to ...
+	* testsuite/util/replacement_memory_operators.h: ...here. New.
+	* testsuite/util/testsuite_hooks.h (counter): To object_counter.
+	* testsuite/util/testsuite_hooks.cc: Same.
+
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Use
+	replacement_memory_operators.h.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/check_delete.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-5.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-7.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-6.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_local-8.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Same.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Same.
+	* testsuite/ext/mt_allocator/check_new.cc: Same.
+	* testsuite/ext/debug_allocator/check_delete.cc: Same.
+	* testsuite/ext/debug_allocator/check_new.cc: Same.
+	* testsuite/ext/new_allocator/deallocate_global.cc: Same.
+	* testsuite/ext/new_allocator/check_delete.cc: Same.
+	* testsuite/ext/new_allocator/check_new.cc: Same.
+	* testsuite/ext/new_allocator/deallocate_local.cc: Same.
+	* testsuite/ext/throw_allocator/deallocate_global.cc: Same.
+	* testsuite/ext/throw_allocator/check_delete.cc: Same.
+	* testsuite/ext/throw_allocator/check_new.cc: Same.
+	* testsuite/ext/throw_allocator/deallocate_local.cc: Same.
+	* testsuite/ext/malloc_allocator/deallocate_global.cc: Same.
+	* testsuite/ext/malloc_allocator/check_delete.cc: Same.
+	* testsuite/ext/malloc_allocator/check_new.cc: Same.
+	* testsuite/ext/malloc_allocator/deallocate_local.cc: Same.
+	* testsuite/ext/pool_allocator/check_delete.cc: Same.
+	* testsuite/ext/pool_allocator/check_new.cc: Same.
+	* testsuite/ext/bitmap_allocator/check_delete.cc: Same.
+	* testsuite/ext/bitmap_allocator/check_new.cc: Same.
+	* testsuite/ext/array_allocator/check_delete.cc: Same.
+	* testsuite/ext/array_allocator/check_new.cc: Same.
+	* testsuite/23_containers/deque/cons/1.cc: Same.
+	* testsuite/23_containers/deque/cons/2.cc: Same.
+
+2009-05-27  Benjamin Kosnik  
+
+	* libsupc++/initializer_list: Format.
+	* testsuite/18_support/initializer_list/requirements/typedefs.cc: New.
+	* testsuite/18_support/initializer_list/requirements/
+	explicit_instantiation.cc: New.
+
+2009-05-27  Benjamin Kosnik  
+
+	PR libstdc++/40273
+	* include/tr1_impl/functional: Add explicit casts.
+	* testsuite/20_util/function/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/function/null_pointer_comparisons.cc: New.
+
+2009-05-24  Eelis van der Weegen  
+
+	* libsupc++/initializer_list (initializer_list): Add missing typedefs.
+
+2009-05-21  Benjamin Kosnik  
+
+	PR libstdc++/40221
+	* include/tr1_impl/functional: Add explicit cast.
+
+2009-05-21  Paolo Carlini  
+
+	PR libstdc++/40094
+	Revert:
+	2009-05-07  Paolo Carlini  
+	* include/ext/throw_allocator.h (throw_allocator_base): Avoid
+	out of line member functions definitions.
+	(throw_allocator_base::_S_g, _S_map, _S_throw_prob, _S_label):
+	Remove, use static locals instead.
+	(throw_allocator_base::do_check_allocated, print_to_string): Declare.
+	* src/throw_allocator.cc: New.
+	* src/Makefile.am: Add.
+	* config/abi/pre/gnu.ver: Add exports.
+	* src/Makefile.in: Regenerate.
+
+2009-05-20  Benjamin Kosnik  
+
+	* include/tr1_impl/functional (function): Use explicit operator bool.
+	* include/bits/shared_ptr.h (__shared_ptr): Same.
+	* include/bits/unique_ptr.h (unique_ptr): Same.
+	* include/std/mutex (unique_lock): Same.
+	* include/std/system_error (error_code): Same.
+	(error_condition): Same.
+	* include/std/ostream (sentry): Same.
+	* include/std/istream (sentry): Same.
+	* testsuite/19_diagnostics/error_condition/operators/bool.cc: Adjust.
+	* testsuite/19_diagnostics/error_condition/operators/bool_neg.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Same.
+	* testsuite/19_diagnostics/error_code/operators/bool_neg.cc: Same.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Same.
+	* testsuite/20_util/shared_ptr/observers/bool_conv.cc: Same.
+
+2009-05-19  Benjamin Kosnik  
+
+	* testsuite/23_containers/list/14340.cc: Abstract list type.
+	* testsuite/23_containers/list/init-list.cc: Same.
+	* testsuite/23_containers/list/pthread5.cc: Same.
+	* testsuite/23_containers/list/invalidation/1.cc: Same.
+	* testsuite/23_containers/list/invalidation/2.cc: Same.
+	* testsuite/23_containers/list/invalidation/3.cc: Same.
+	* testsuite/23_containers/list/invalidation/4.cc: Same.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Same.
+	* testsuite/23_containers/list/modifiers/1.cc: Same.
+	* testsuite/23_containers/list/modifiers/2.cc: Same.
+	* testsuite/23_containers/list/modifiers/3.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/1.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: Same.
+	* testsuite/23_containers/list/modifiers/swap/3.cc: Same.
+	* testsuite/23_containers/list/cons/1.cc: Same.
+	* testsuite/23_containers/list/cons/2.cc: Same.
+	* testsuite/23_containers/list/cons/3.cc: Same.
+	* testsuite/23_containers/list/cons/4.cc: Same.
+	* testsuite/23_containers/list/cons/5.cc: Same.
+	* testsuite/23_containers/list/cons/6.cc: Same.
+	* testsuite/23_containers/list/cons/7.cc: Same.
+	* testsuite/23_containers/list/cons/clear_allocator.cc: Same.
+	* testsuite/23_containers/list/cons/8.cc: Same.
+	* testsuite/23_containers/list/cons/9.cc: Same.
+	* testsuite/23_containers/list/operations/1.cc: Same.
+	* testsuite/23_containers/list/operations/2.cc: Same.
+	* testsuite/23_containers/list/operations/3.cc: Same.
+	* testsuite/23_containers/list/operations/4.cc: Same.
+	* testsuite/23_containers/list/operations/5.cc: Same.
+	* testsuite/23_containers/list/requirements/citerators.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/constructor.cc: Same.
+	* testsuite/23_containers/list/requirements/
+	partial_specialization/1.cc: Same.
+	* testsuite/23_containers/list/23781.cc: Same.
+	* testsuite/23_containers/list/pthread1.cc: Same.
+	* testsuite/23_containers/list/capacity/1.cc: Same.
+	* testsuite/23_containers/list/capacity/29134.cc: Same.
+	* testsuite/23_containers/list/check_construct_destroy.cc: Same.
+	* testsuite/23_containers/list/moveable.cc: Same.
+
+	* testsuite/util/common_type/assoc/common_type.hpp: Re-break lines.
+
+2009-05-19  Paolo Carlini  
+
+	PR libstdc++/40184
+	* include/bits/locale_classes.h (locale::facet::_S_lc_ctype_c_locale):
+	Declare...
+	* config/locale/gnu/c_locale.cc: ... and define.
+	* config/locale/generic/c_locale.cc: Define.
+	* src/localename.cc (locale::_Impl::_Impl(const char*, size_t)):
+	Use it.
+	* testsuite/22_locale/locale/cons/40184.cc: New.
+
+2009-05-18  Paolo Carlini  
+
+	PR libstdc++/40192
+	* include/bits/stl_construct.h (struct _Destroy_aux): Add.
+	(_Destroy(_ForwardIterator, _ForwardIterator)): Use the latter.
+	* testsuite/23_containers/vector/40192.cc: New.
+
+2009-05-18  Jonathan Wakely  
+
+	* include/bits/stl_pair.h (swap): Do not swap rvalues.
+	* include/bits/stl_deque.h (swap): Likewise.
+	* include/bits/stl_list.h (swap): Likewise.
+	* include/bits/stl_vector.h (swap): Likewise.
+	* include/bits/stl_bvector.h (swap): Likewise.
+	* include/bits/stl_queue.h (swap): Likewise.
+	* include/bits/stl_stack.h (swap): Likewise.
+	* include/bits/stl_tree.h (swap): Likewise.
+	* include/bits/stl_map.h (swap): Likewise.
+	* include/bits/stl_multimap.h (swap): Likewise.
+	* include/bits/stl_set.h (swap): Likewise.
+	* include/bits/stl_multiset.h (swap): Likewise.
+	* include/bits/forward_list.h (swap): Likewise.
+	* include/bits/unique_ptr.h (swap): Likewise.
+	* include/debug/deque (swap): Likewise.
+	* include/debug/list (swap): Likewise.
+	* include/debug/vector (swap): Likewise.
+	* include/debug/map.h (swap): Likewise.
+	* include/debug/multimap.h (swap): Likewise.
+	* include/debug/set.h (swap): Likewise.
+	* include/debug/multiset.h (swap): Likewise.
+	* include/debug/unordered_map (swap): Likewise.
+	* include/debug/unordered_set (swap): Likewise.
+	* include/ext/vstring.h (swap): Likewise.
+	* include/tr1_impl/unordered_map (swap): Likewise.
+	* include/tr1_impl/hashtable (swap): Likewise.
+	* include/tr1_impl/unordered_set (swap): Likewise.
+	* include/std/tuple (swap): Likewise.
+	* include/std/mutex (swap): Likewise.
+	* include/std/thread (swap): Likewise.
+	(operator<<): Only output to lvalue streams.
+	* testsuite/20_util/shared_ptr/modifiers/swap_rvalue.cc: Remove.
+	* testsuite/23_containers/headers/forward_list/synopsis.cc: Adjust.
+	* testsuite/23_containers/deque/requirements/dr438/
+	assign_neg.cc: Adjust line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/30_threads/thread/swap/1.cc: Swap with lvalue and also
+	test non-member swap.
+	* testsuite/30_threads/thread/swap/2.cc: Remove.
+
+2009-05-16  Jonathan Wakely  
+
+	* include/std/mutex: Move std::lock_error to ...
+	* src/compatibility.cc: Here.
+	* src/mutex.cc: Likewise.
+	* testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Add checks
+	for lock types and remove std::lock_error check.
+
+2009-05-15  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/40160.cc: Remove spurious
+	double include.
+
+2009-05-15  Paolo Carlini  
+
+	PR libstdc++/40160
+	* include/debug/formatter.h (_Parameter::_Parameter): Don't use
+	typeid when __GXX_RTTI is undefined.
+	* src/debug.cc (_Error_formatter::_Parameter::_M_print_field): Adjust
+	for null _M_variant._M_iterator._M_type,
+	_M_variant._M_iterator._M_seq_type, _M_variant._M_sequence._M_type.
+	* testsuite/21_strings/basic_string/40160.cc: New.
+
+2009-05-15  Paolo Carlini  
+
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	num_xbound_fun.cc: Minor tweaks.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/initlist_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	cons/num_xbound_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/initlist_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	cons/num_xbound_fun.cc: Likewise
+
+2009-05-15  David Billinghurst 
+
+	PR libstdc++/36211
+	* testsuite/lib/libstdc++.exp(v3_target_compile):  Add
+	cxxldflags to additional_flags rather than cxx_final.
+
+2009-05-15  David Billinghurst 
+
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	num_xbound_fun.cc: Replace non-standard macro M_PI with constant pi.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	initlist_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	num_xbound_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	initlist_fun.cc: Likewise
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	num_xbound_fun.cc: Likewise
+
+2009-05-14  Paolo Carlini  
+
+	PR libstdc++/40123
+	* random.tcc (independent_bits_engine<>::operator()()): Use
+	result_type(1), not 1UL.
+
+	* random.tcc (independent_bits_engine<>::operator()()): Use _M_b.max()
+	and _M_b.min(), instead of this->max() and this->min().
+
+	* random.h (_ShiftMin1): Remove, adjust everywhere.
+
+	* random.tcc: Minor cosmetic changes.
+
+2009-05-14  Paolo Carlini  
+
+	* include/bits/random.tcc (cauchy_distribution<>::
+	operator()(_UniformRandomNumberGenerator&, const param_type&)):
+	Avoid M_PI, a glibc extension.
+
+2009-05-13  Ben Elliston  
+
+	* include/Makefile.am (PCHFLAGS): Remove -Winvalid-pch.
+	* include/Makefile.in: Likewise.
+
+2009-05-13  Ben Elliston  
+
+	* src/compatibility.cc (_ZTIe, _ZTIPe, _ZTIPKe): Change type to
+	const void * const.
+
+2009-05-12  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* doc/xml/manual/status_cxx200x.xml: Note missing constexpr for
+	random number engines, complex, bitset, array, time utilities, and
+	char_traits.
+
+2009-05-12  Jonathan Wakely  
+
+	* libsupc++/exception: Include nested_exception.h in C++0x mode.
+	* libsupc++/nested_exception.h: New.
+	* libsupc++/Makefile.am: Add new header.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/18_support/nested_exception/rethrow_nested.cc: New.
+	* testsuite/18_support/nested_exception/throw_with_nested.cc: New.
+	* testsuite/18_support/nested_exception/cons.cc: New.
+	* testsuite/18_support/nested_exception/nested_ptr.cc: New.
+	* testsuite/18_support/nested_exception/rethrow_if_nested.cc: New.
+	* doc/xml/manual/status_cxx200x.xml: Adjust.
+
+2009-05-07  Paolo Carlini  
+
+	* include/ext/throw_allocator.h: Remove redundant include.
+
+2009-05-07  Paolo Carlini  
+
+	* include/ext/throw_allocator.h (throw_allocator_base): Avoid
+	out of line member functions definitions.
+	(throw_allocator_base::_S_g, _S_map, _S_throw_prob, _S_label):
+	Remove, use static locals instead.
+	(throw_allocator_base::do_check_allocated, print_to_string): Declare.
+	* src/throw_allocator.cc: New.
+	* src/Makefile.am: Add.
+	* config/abi/pre/gnu.ver: Add exports.
+	* src/Makefile.in: Regenerate.
+
+2009-05-07  Paolo Carlini  
+
+	* configure.ac: Bump libtool_VERSION to 6:12:0.
+	* configure: Regenerate.
+
+2009-05-07  Matthias Klose  
+
+	PR libstdc++/40038
+	* src/math_stubs_long_double.cc: Add ceill.
+
+2009-05-06  Johannes Singler  
+
+	PR libstdc++/39546
+	* include/parallel/algo.h (find_switch):
+	Parametrize binder2nd with const T& instead of T.
+	* testsuite/25_algorithms/find/39546.cc: new test case
+
+2009-05-06  Paolo Carlini  
+
+	Revert:
+	2009-05-03  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_ATOMIC_BUILTINS]): Do link tests when
+	possible.
+	* configure: Regenerate.
+
+2009-05-05  Jonathan Wakely  
+
+	PR libstdc++/39909
+	* include/std/mutex (__get_once_functor_lock, __get_once_mutex,
+	__set_once_functor_lock_ptr): Replace global lock object with local
+	locks on global mutex.
+	* src/mutex.cc (__get_once_functor_lock, __get_once_mutex,
+	__set_once_functor_lock_ptr): Likewise, keeping old function to
+	preserve ABI.
+	(__once_proxy): Use pointer to local lock if set, global lock
+	otherwise.
+	* config/abi/pre/gnu.ver: Add new symbols to new ABI version.
+	* testsuite/util/testsuite_abi.cc: Add GLIBCX_3.4.12 version.
+	* testsuite/30_threads/call_once/39909.cc: New.
+
+2009-05-03  Jan Hubicka  
+
+	* include/parallel/settings.h (get): Mark const.
+	* libsupc++/unwind-cxx.h (__cxa_call_terminate): Mark throw ().
+	* libsupc++/eh_call.cc (__cxa_call_terminate): Mark throw ().
+	* config/io/basic_file_stdio.cc (sys_open, is_open, fd, seekoff): Mark
+	throw ().
+	* config/io/basic_file_stdio.h (__basic_file, sys_open): Mark throw ().
+	(is_open, fd): Mark pure and throw ().
+	(seekoff): Mark throw ().
+
+2009-05-03  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_ATOMIC_BUILTINS]): Do link tests when
+	possible.
+	* configure: Regenerate.
+
+2009-05-02  Jan Hubicka  
+
+	* include/tr1_impl/functional_hash.h (explicit specializations of ()
+	operator): Mark pure.
+
+2009-04-30  Jonathan Wakely  
+
+	* scripts/create_testsuite_files: Remove thread directory.
+
+2009-04-28  Benjamin Kosnik  
+
+	PR libstdc++/39868
+	* scripts/run_doxygen: Uncomment removal of includes.
+	(problematic): Rewrite __cxxabiv1 namespace to abi.
+
+2009-04-26  Paolo Carlini  
+
+	Revert the last commit.
+
+2009-04-25  Jonathan Wakely  
+
+	* include/std/mutex (__get_once_functor_lock, __get_once_mutex):
+	Replace global lock object with local locks on global mutex.
+	* src/mutex.cc: Likewise.
+	* config/abi/pre/gnu.ver: Adjust.
+	* testsuite/30_threads/call_once/call_once2.cc: New.
+
+2009-04-25  Paolo Carlini  
+
+	PR libstdc++/39880
+	PR libstdc++/39881
+	PR libstdc++/39882
+	* include/std/system_error (is_error_code_enum): Remove.
+	(error_condition<>::error_condition(_ErrorCodeEnum,)
+	error_condition<>::operator=(_ErrorCodeEnum)): Use make_error_condition.
+	(error_code<>::error_code(_ErrorCodeEnum,),
+	error_code<>::operator=(_ErrorCodeEnum)): Use make_error_code.
+	* testsuite/19_diagnostics/system_error/39880.cc: New.
+	* testsuite/19_diagnostics/error_condition/modifiers/39881.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
+	Adjust.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
+
+2009-04-24  Benjamin Kosnik  
+
+	* doc/xml/authors.xml: Add space.
+	* doc/xml/faq.xml: Update links.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/abi.xml: Update.
+	* doc/xml/manual/appendix_contributing.xml: Fix typo.
+	* doc/xml/manual/status_cxxtr1.xml: Update links.
+	* doc/xml/manual/status_cxx1998.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Same.
+
+2009-04-22  Jan Hubicka  
+
+	* include/tr1_impl/array (at): Do not use builtin_expect.
+	* include/ext/throw_allocator.h (allocate): Likewise.
+	* include/ext/pool_allocator.h (allocate): Likweise.
+	* include/ext/bitmap_allocator.h (allocate): Likewise.
+	* include/ext/rc_string_base.h (_S_construct): Likewise.
+	* include/ext/malloc_allocator.h (allocate): Likewise.
+	* include/ext/mt_allocator.h (allocate): Likewise.
+	* include/ext/sso_string_base.h (_M_construct): Likewise.
+	* include/bits/basic_string.tcc (_S_construct): Likewise.
+
+2009-04-22  Jan Hubicka  
+
+	* include/c_std/cstdlib (abort, exit, _Exit): Mark noreturn throw ().
+	(atexit, atoll, stroll, strtoull): Mark throw ()
+	* include/c_std/cstdio (snprintf, vsnprintf, vscanf): Mark throw ().
+	* include/c_std/cwchar (wcstold, wcstoll, wcstoull): Mark throw ().
+	* include/c_global/cstdlib (abort, exit, _Exit): Mark noreturn throw ().
+	(atexit, atoll, stroll, strtoull): Mark throw ()
+	* include/c_global/cstdio (snprintf, vsnprintf, vscanf): Mark throw ().
+	* include/c_wchar/cstdio (snprintf, vsnprintf, vscanf): Mark throw ().
+
+2009-04-21  Jan Hubicka  
+
+	* include/ext/atomicity.h
+	(__exchange_and_add, __atomic_add): Mark throw ().
+	* config/os/aix/atomicity.h
+	* config/os/aix/atomicity.h
+	* config/os/irix/atomicity.h
+	* config/cpu/cris/atomicity.h
+	* config/cpu/m68k/atomicity.h
+	* config/cpu/hppa/atomicity.h
+	* config/cpu/sparc/atomicity.h
+	* config/cpu/i386/atomicity.h
+	* config/cpu/i486/atomicity.h
+	* config/cpu/sh/atomicity.h
+	* config/cpu/generic/atomicity_mutex/atomicity.h
+	* config/cpu/generic/atomicity_builtins/atomicity.h
+	(__exchange_and_add, __atomic_add): Mark throw ().
+
+2009-04-21  Paolo Carlini  
+
+	PR libstdc++/39835
+	* include/bits/random.h: Avoid the badname __alpha (and, for
+	consistency, __beta too).
+	* include/bits/random.tcc: Likewise.
+
+2009-04-19  Jan Hubicka  
+
+	* include/c_compatibility/stdatomic.h (__atomic_flag_for_address): Use
+	_GLIBCXX_NOTHROW.
+
+2009-04-19  Jan Hubicka  
+
+	* include/c_compatibility/stdatomic.h
+	(atomic_flag_test_and_set_explicit, atomic_flag_clear_explicit,
+	__atomic_flag_wait_explicit): Use _GLIBCXX_NOTHROW.
+	* include/bits/c++config (_GLIBCXX_NOTHROW): New.
+
+2009-04-18  Jan Hubicka  
+
+	* libsupc++/eh_type.cc (__cxa_current_exception_type) Mark throw().
+	* libsupc++/unwind-cxx.h (__cxa_get_globals,
+	__cxa_get_globals_fast): Mark const.
+	(__cxa_get_exception_ptr): Mark pure.
+	(__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn
+	(__terminate): Makr throw ().
+	* libsupc++/exception (terminate): Mark throw().
+	(uncaught_exception): Mark pure.
+	* libsupc++/eh_ptr.cc (_M_safe_bool_dummy): Mark throw().
+	* libsupc++/guard.cc (__cxa_guard_abort, __cxa_guard_release):
+	Mark throw().
+	* libsupc++/eh_terminate.cc (__terminate, terminate): Mark throw().
+	* libsupc++/vec.cc (__cxa_vec_cleanup): Mark throw().
+	* libsupc++/cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release,
+	__cxa_guard_abort): Mark throw ().
+	(__cxa_pure_virtual): Mark noreturn.
+	(__cxa_current_exception_type): Mark throw and pure.
+	* libsupc++/exception_ptr.h (operator ==, !=, _M_get, !, ==,
+	__cxa_exception_type): Mark pure.
+	(_M_safe_bool_dummy): Mark pure and const.
+
+2009-04-18  Jan Hubicka  
+
+	* src/pool_allocator.cc (_M_get_free_list, _M_get_mutex): Mark throw ()
+	* src/mt_allocator.cc (_M_reclaim_block, _M_reclaim_block,
+	_M_destroy_thread_key): Mark throw ()
+	* debug.cc (_M_get_mutex, _M_attach_single, _M_detach_single,
+	_M_singular, _M_can_compare _M_get_mutex, _M_message,
+	_M_get_max_length): Mark throw ().
+	* include/debug/formatter.h (_M_message, _M_format_word,
+	_M_get_max_length): Mark throw ().
+	* include/debug/safe_base.h (_M_get_mutex, _M_attach_single,
+	_M_detach_single): Mark throw ().
+	(_M_singular, _M_can_compare, _M_get_mutex): Mark pure and throw ().
+	* include/ext/pool_allocator.h (_M_get_free_list): Mark const and
+	throw ()
+	(_M_get_mutex): Mark throw ().
+	* include/ext/mt_allocator.h (_M_reclaim_block): Mark throw ();
+	(_M_destroy_thread_key): Mark CONST and throw.
+	* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
+	throw ().
+
+2009-04-18  Jan Hubicka  
+
+	* src/condition_variable.cc (condition_variable,
+	condition_variable_any constructors): Mark throw()
+	* src/hash.cc (operator() for long double, string, and wstring): Mark
+	throw ().
+	* src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
+	_M_setup, rdbuf, str): Mark throw ().
+	* src/chrono.cc (new): Mark throw ().
+	* include/std/system_error (system_category, generic_category): Mark
+	throw () and const.
+	* include/std/chrono (now): Mark throw ().
+	* include/std/condition_variable (condition_variable,
+	~condition_variable, condition_variable_any,
+	~condition_variable_any): Mark throw ().
+	* include/std/mutex (mutex): Mark throw ().
+	* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
+	throw.
+	* include/bits/functional_hash.h (operator()  on size_t): Mark pure
+	and throw ().
+	* include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
+	* include/bits/locale_classes.h (_S_initialize_once,
+	_S_clone_c_locale): Mark throw ().
+	(_S_get_c_name): Mark const and throw ().
+	(_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark
+	throw ().
+	* include/bits/locale_facets.h (__convert_to_v explicit instances):
+	Mark throw ().
+	(_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark
+	throw ().
+	* include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
+	ios_base): Mark throw ()
+	* include/bits/locale_facets_nonio.h (_M_put): Mark throw.
+	* include/backward/strstream (strstreambuf constructors): Mark throw ().
+	(str, freeze, _M_setupf): Mark throw ().
+	(pcount): Mark pure and throw ().
+	(rdbuf): Mark const and throw ().
+
+2009-04-18  Paolo Carlini  
+
+	PR libstdc++/39802
+	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int
+	(_InIter, _InIter, ios_base&, ios_base::iostate&, _ValueT&)):
+	Always accept negative values, for unsigned types too.
+	* testsuite/22_locale/num_get/get/char/39802.cc: New.
+	* testsuite/22_locale/num_get/get/wchar_t/39802.cc: Likewise.
+
+2009-04-18  Jan Hubicka  
+
+	* include/debug/formater.h: Include bits/c++config.h.
+	(_M_error): Mark noreturn.
+	* include/bits/c++config (_GLIBCXX_PURE, _GLIBCXX_CONST,
+	_GLIBCXX_NORETURN): New.
+	* include/bits/stl_tree.h (_Rb_tree_increment, _Rb_tree_increment,
+	_Rb_tree_decrement, _Rb_tree_decrement, _Rb_tree_black_count):
+	Mark pure.
+	* include/c_compatibility/stdatomic.h
+	(atomic_flag_test_and_set_explicit, atomic_flag_clear_explicit,
+	__atomic_flag_wait_explicit, __atomic_flag_for_address):
+	Mark by throw ().
+	* src/atomic.cc (atomic_flag_test_and_set_explicit,
+	atomic_flag_clear_explicit, __atomic_flag_wait_explicit,
+	__atomic_flag_for_address): Mark by throw ().
+
+2009-04-17  Uros Bizjak  
+
+	* config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2009-04-16  Jan Hubicka  
+
+	* tree.cc (_Rb_tree_increment, _Rb_tree_decrement,
+	_Rb_tree_rebalance_for_erase, _Rb_tree_black_count): Mark nothrow;
+	update uses of _Rb_tree_rotate_left, _Rb_tree_rotate_right.
+	(_Rb_tree_rotate_left, _Rb_tree_rotate_right): Make wrapper and break
+	out body to ...
+	(local_Rb_tree_rotate_left, local_Rb_tree_rotate_right): New static
+	functions.
+	* stl_tree.h (_Rb_tree_increment, _Rb_tree_decrement,
+	_Rb_tree_insert_and_rebalance, _Rb_tree_rebalance_for_erase,
+	_Rb_tree_black_count): Mark nothrow.
+
+2009-04-16  Paolo Carlini  
+
+	* include/bits/forward_list.h: Remove default std::allocator<_Tp>
+	from base classes.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Adjust.
+
+2009-04-15  Benjamin Kosnik  
+
+	* doc/html: Regenerate.
+
+2009-04-15  Benjamin Kosnik  
+
+	* doc/xml/manual/status_cxx1998.xml: Update to new table style.
+
+	* doc/xml/gnu/gpl-3.0.xml: Add or adjust dbhtml markup.
+	* doc/xml/gnu/fdl-1.2.xml: Same.
+	* doc/xml/manual/numerics.xml: Same.
+	* doc/xml/manual/concurrency.xml: Same.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/status_cxxtr1.xml: Same.
+	* doc/xml/manual/containers.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/utilities.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/using.xml: Same.
+	* doc/xml/manual/localization.xml: Same.
+	* doc/xml/manual/locale.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Same.
+
+2009-04-15  Benjamin Kosnik  
+
+	* doc/xml/manual/status_cxxtr1.xml: Update to new table style.
+	* doc/xml/manual/status_cxx200x.xml: Adjust.
+
+2009-04-14  Benjamin Kosnik  
+
+	* doc/xml/spine.xml: Remove unused license entity, update
+	copyright year.
+
+	* doc/xml/manual/spine.xml: Markup for primary index terms.
+	* doc/xml/manual/numerics.xml: Same.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/containers.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/appendix_porting.xml: Same.
+	* doc/xml/manual/utilities.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/localization.xml: Same.
+	* doc/xml/manual/strings.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/algorithms.xml: Same.
+	* doc/xml/manual/appendix_free.xml: Same.
+	* doc/xml/manual/iterators.xml: Same.
+
+	* doc/xml/gnu/gpl-3.0.xml: Fix xml markup regressions.
+	* doc/xml/gnu/fdl-1.2.xml: Same.
+
+	* doc/xml/manual/status_cxx200x.xml: Re-write.
+
+2009-04-09  Paolo Carlini  
+
+	PR libstdc++/39629 (final bits)
+	* include/bits/random.h (subtract_with_carry_engine<>::_S_modulus):
+	Remove, consistently use __detail::_Shift<_UIntType, __w>::__value.
+	* include/bits/random.tcc (shuffle_order_engine<>::operator()()):
+	Fix formula for __j.
+	* include/bits/random.tcc (operator==(const normal_distribution<>&,
+	const normal_distribution<>&): Remove.
+	* include/bits/random.h (operator==(const uniform_int_distribution<>&,
+	const uniform_int_distribution<>&), operator==(const
+	uniform_real_distribution<>&, const uniform_real_distribution<>&),
+	operator==(const normal_distribution<>&, const normal_distribution<>&),
+	operator==(const lognormal_distribution<>&,
+	const lognormal_distribution<>&), operator==(const
+	chi_squared_distribution<>&, const chi_squared_distribution<>&),
+	operator==(const cauchy_distribution<>&, const cauchy_distribution<>&),
+	operator==(const fisher_distribution<>&, const fisher_distribution<>&),
+	operator==(const student_t_distribution<>&,
+	const student_t_distribution<>&), operator==(const
+	bernoulli_distribution<>&, const bernoulli_distribution<>&),
+	operator==(const binomial_distribution<>&, const
+	binomial_distribution<>&), operator==(const geometric_distribution<>&,
+	const geometric_distribution<>&), operator==(const
+	negative_binomial_distribution<>&, const
+	negative_binomial_distribution<>&), operator==(const
+	poisson_distribution<>&, const poisson_distribution<>&),
+	operator==(const exponential_distribution<>&,
+	const exponential_distribution<>&), operator==(const
+	gamma_distribution<>&, const gamma_distribution<>&), operator==(const
+	weibull_distribution<>&, const weibull_distribution<>&),
+	operator==(const extreme_value_distribution<>&,
+	const extreme_value_distribution<>&), operator==(const
+	discrete_distribution<>&, const discrete_distribution<>&),
+	operator==(const piecewise_constant_distribution<>&,
+	const piecewise_constant_distribution<>&), operator==(const
+	piecewise_linear_distribution<>&, const
+	piecewise_linear_distribution<>&)): Remove.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/
+	serialize.cc: Remove.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/operators/
+	serialize.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/operators/
+	serialize.cc: Likewise.
+
+	* include/bits/random.h (linear_congruential_engine<>::seed(_Gen&,
+	true_type), linear_congruential_engine<>::seed(_Gen&, false_type),
+	mersenne_twister_engine<>::seed(_Gen&,
+	true_type), mersenne_twister_engine<>::seed(_Gen&, false_type),
+	subtract_with_carry_engine<>::seed(_Gen&,
+	true_type), subtract_with_carry_engine<>::seed(_Gen&, false_type)):
+	Remove, unused.
+	* include/bits/random.tcc (linear_congruential_engine<>::
+	seed(_Gen&, false_type): Likewise.
+
+2009-04-09  Nick Clifton  
+
+	* src/allocator-inst.cc: Change copyright header to refer to
+	version 3 of the GNU General Public License with version 3.1
+	of the GCC Runtime Library Exception and to point readers at
+	the COPYING3 and COPYING3.RUNTIME files and the FSF's license
+	web page.
+	* config/abi/compatibility.h: Likewise.
+	* config/abi/pre/gnu-versioned-namespace.ver: Likewise.
+	* config/abi/pre/gnu.ver: Likewise.
+	* config/allocator/bitmap_allocator_base.h: Likewise.
+	* config/allocator/malloc_allocator_base.h: Likewise.
+	* config/allocator/mt_allocator_base.h: Likewise.
+	* config/allocator/new_allocator_base.h: Likewise.
+	* config/allocator/pool_allocator_base.h: Likewise.
+	* config/cpu/alpha/atomic_word.h: Likewise.
+	* config/cpu/arm/cxxabi_tweaks.h: Likewise.
+	* config/cpu/cris/atomic_word.h: Likewise.
+	* config/cpu/cris/atomicity.h: Likewise.
+	* config/cpu/generic/atomic_word.h: Likewise.
+	* config/cpu/generic/atomicity_builtins/atomicity.h: Likewise.
+	* config/cpu/generic/atomicity_mutex/atomicity.h: Likewise.
+	* config/cpu/generic/cpu_defines.h: Likewise.
+	* config/cpu/generic/cxxabi_tweaks.h: Likewise.
+	* config/cpu/hppa/atomicity.h: Likewise.
+	* config/cpu/i386/atomicity.h: Likewise.
+	* config/cpu/i486/atomicity.h: Likewise.
+	* config/cpu/ia64/atomic_word.h: Likewise.
+	* config/cpu/m68k/atomicity.h: Likewise.
+	* config/cpu/powerpc/atomic_word.h: Likewise.
+	* config/cpu/powerpc/cpu_defines.h: Likewise.
+	* config/cpu/sh/atomicity.h: Likewise.
+	* config/cpu/sparc/atomic_word.h: Likewise.
+	* config/cpu/sparc/atomicity.h: Likewise.
+	* config/io/basic_file_stdio.cc: Likewise.
+	* config/io/basic_file_stdio.h: Likewise.
+	* config/io/c_io_stdio.h: Likewise.
+	* config/locale/darwin/ctype_members.cc: Likewise.
+	* config/locale/generic/c++locale_internal.h: Likewise.
+	* config/locale/generic/c_locale.cc: Likewise.
+	* config/locale/generic/c_locale.h: Likewise.
+	* config/locale/generic/codecvt_members.cc: Likewise.
+	* config/locale/generic/collate_members.cc: Likewise.
+	* config/locale/generic/ctype_members.cc: Likewise.
+	* config/locale/generic/messages_members.cc: Likewise.
+	* config/locale/generic/messages_members.h: Likewise.
+	* config/locale/generic/monetary_members.cc: Likewise.
+	* config/locale/generic/numeric_members.cc: Likewise.
+	* config/locale/generic/time_members.cc: Likewise.
+	* config/locale/generic/time_members.h: Likewise.
+	* config/locale/gnu/c++locale_internal.h: Likewise.
+	* config/locale/gnu/c_locale.cc: Likewise.
+	* config/locale/gnu/c_locale.h: Likewise.
+	* config/locale/gnu/codecvt_members.cc: Likewise.
+	* config/locale/gnu/collate_members.cc: Likewise.
+	* config/locale/gnu/ctype_members.cc: Likewise.
+	* config/locale/gnu/messages_members.cc: Likewise.
+	* config/locale/gnu/messages_members.h: Likewise.
+	* config/locale/gnu/monetary_members.cc: Likewise.
+	* config/locale/gnu/numeric_members.cc: Likewise.
+	* config/locale/gnu/time_members.cc: Likewise.
+	* config/locale/gnu/time_members.h: Likewise.
+	* config/locale/ieee_1003.1-2001/c_locale.cc: Likewise.
+	* config/locale/ieee_1003.1-2001/c_locale.h: Likewise.
+	* config/locale/ieee_1003.1-2001/messages_members.cc: Likewise.
+	* config/locale/ieee_1003.1-2001/messages_members.h: Likewise.
+	* config/os/aix/atomic_word.h: Likewise.
+	* config/os/aix/atomicity.h: Likewise.
+	* config/os/aix/ctype_base.h: Likewise.
+	* config/os/aix/ctype_inline.h: Likewise.
+	* config/os/aix/ctype_noninline.h: Likewise.
+	* config/os/aix/os_defines.h: Likewise.
+	* config/os/bsd/darwin/ctype_base.h: Likewise.
+	* config/os/bsd/darwin/ctype_inline.h: Likewise.
+	* config/os/bsd/darwin/ctype_noninline.h: Likewise.
+	* config/os/bsd/darwin/os_defines.h: Likewise.
+	* config/os/bsd/freebsd/ctype_base.h: Likewise.
+	* config/os/bsd/freebsd/ctype_inline.h: Likewise.
+	* config/os/bsd/freebsd/ctype_noninline.h: Likewise.
+	* config/os/bsd/freebsd/os_defines.h: Likewise.
+	* config/os/bsd/netbsd/ctype_base.h: Likewise.
+	* config/os/bsd/netbsd/ctype_inline.h: Likewise.
+	* config/os/bsd/netbsd/ctype_noninline.h: Likewise.
+	* config/os/bsd/netbsd/os_defines.h: Likewise.
+	* config/os/djgpp/ctype_base.h: Likewise.
+	* config/os/djgpp/ctype_inline.h: Likewise.
+	* config/os/djgpp/ctype_noninline.h: Likewise.
+	* config/os/djgpp/os_defines.h: Likewise.
+	* config/os/generic/ctype_base.h: Likewise.
+	* config/os/generic/ctype_inline.h: Likewise.
+	* config/os/generic/ctype_noninline.h: Likewise.
+	* config/os/generic/error_constants.h: Likewise.
+	* config/os/generic/os_defines.h: Likewise.
+	* config/os/gnu-linux/ctype_base.h: Likewise.
+	* config/os/gnu-linux/ctype_inline.h: Likewise.
+	* config/os/gnu-linux/ctype_noninline.h: Likewise.
+	* config/os/gnu-linux/os_defines.h: Likewise.
+	* config/os/hpux/ctype_base.h: Likewise.
+	* config/os/hpux/ctype_inline.h: Likewise.
+	* config/os/hpux/ctype_noninline.h: Likewise.
+	* config/os/hpux/os_defines.h: Likewise.
+	* config/os/irix/atomic_word.h: Likewise.
+	* config/os/irix/atomicity.h: Likewise.
+	* config/os/irix/irix5.2/ctype_base.h: Likewise.
+	* config/os/irix/irix5.2/ctype_inline.h: Likewise.
+	* config/os/irix/irix5.2/ctype_noninline.h: Likewise.
+	* config/os/irix/irix5.2/os_defines.h: Likewise.
+	* config/os/irix/irix6.5/ctype_base.h: Likewise.
+	* config/os/irix/irix6.5/ctype_inline.h: Likewise.
+	* config/os/irix/irix6.5/ctype_noninline.h: Likewise.
+	* config/os/irix/irix6.5/os_defines.h: Likewise.
+	* config/os/mingw32/ctype_base.h: Likewise.
+	* config/os/mingw32/ctype_inline.h: Likewise.
+	* config/os/mingw32/ctype_noninline.h: Likewise.
+	* config/os/mingw32/error_constants.h: Likewise.
+	* config/os/mingw32/os_defines.h: Likewise.
+	* config/os/newlib/ctype_base.h: Likewise.
+	* config/os/newlib/ctype_inline.h: Likewise.
+	* config/os/newlib/ctype_noninline.h: Likewise.
+	* config/os/newlib/os_defines.h: Likewise.
+	* config/os/qnx/qnx6.1/ctype_base.h: Likewise.
+	* config/os/qnx/qnx6.1/ctype_inline.h: Likewise.
+	* config/os/qnx/qnx6.1/ctype_noninline.h: Likewise.
+	* config/os/qnx/qnx6.1/os_defines.h: Likewise.
+	* config/os/solaris/solaris2.7/ctype_base.h: Likewise.
+	* config/os/solaris/solaris2.7/ctype_inline.h: Likewise.
+	* config/os/solaris/solaris2.7/ctype_noninline.h: Likewise.
+	* config/os/solaris/solaris2.7/os_defines.h: Likewise.
+	* config/os/tpf/ctype_base.h: Likewise.
+	* config/os/tpf/ctype_inline.h: Likewise.
+	* config/os/tpf/ctype_noninline.h: Likewise.
+	* config/os/tpf/os_defines.h: Likewise.
+	* config/os/uclibc/ctype_base.h: Likewise.
+	* config/os/uclibc/ctype_inline.h: Likewise.
+	* config/os/uclibc/ctype_noninline.h: Likewise.
+	* config/os/uclibc/os_defines.h: Likewise.
+	* config/os/vxworks/ctype_base.h: Likewise.
+	* config/os/vxworks/ctype_inline.h: Likewise.
+	* config/os/vxworks/ctype_noninline.h: Likewise.
+	* config/os/vxworks/os_defines.h: Likewise.
+	* include/backward/auto_ptr.h: Likewise.
+	* include/backward/backward_warning.h: Likewise.
+	* include/backward/binders.h: Likewise.
+	* include/backward/hash_fun.h: Likewise.
+	* include/backward/hash_map: Likewise.
+	* include/backward/hash_set: Likewise.
+	* include/backward/hashtable.h: Likewise.
+	* include/backward/strstream: Likewise.
+	* include/bits/algorithmfwd.h: Likewise.
+	* include/bits/allocator.h: Likewise.
+	* include/bits/atomic_0.h: Likewise.
+	* include/bits/atomic_2.h: Likewise.
+	* include/bits/atomicfwd_c.h: Likewise.
+	* include/bits/atomicfwd_cxx.h: Likewise.
+	* include/bits/basic_ios.h: Likewise.
+	* include/bits/basic_ios.tcc: Likewise.
+	* include/bits/basic_string.h: Likewise.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/boost_concept_check.h: Likewise.
+	* include/bits/c++config: Likewise.
+	* include/bits/char_traits.h: Likewise.
+	* include/bits/codecvt.h: Likewise.
+	* include/bits/concept_check.h: Likewise.
+	* include/bits/cpp_type_traits.h: Likewise.
+	* include/bits/deque.tcc: Likewise.
+	* include/bits/forward_list.h: Likewise.
+	* include/bits/forward_list.tcc: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/bits/functexcept.h: Likewise.
+	* include/bits/functional_hash.h: Likewise.
+	* include/bits/gslice.h: Likewise.
+	* include/bits/gslice_array.h: Likewise.
+	* include/bits/hashtable.h: Likewise.
+	* include/bits/indirect_array.h: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* include/bits/istream.tcc: Likewise.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/locale_classes.h: Likewise.
+	* include/bits/locale_classes.tcc: Likewise.
+	* include/bits/locale_facets.h: Likewise.
+	* include/bits/locale_facets.tcc: Likewise.
+	* include/bits/locale_facets_nonio.h: Likewise.
+	* include/bits/locale_facets_nonio.tcc: Likewise.
+	* include/bits/localefwd.h: Likewise.
+	* include/bits/mask_array.h: Likewise.
+	* include/bits/move.h: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/ostream_insert.h: Likewise.
+	* include/bits/postypes.h: Likewise.
+	* include/bits/shared_ptr.h: Likewise.
+	* include/bits/slice_array.h: Likewise.
+	* include/bits/sstream.tcc: Likewise.
+	* include/bits/stl_algo.h: Likewise.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* include/bits/stl_construct.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_function.h: Likewise.
+	* include/bits/stl_heap.h: Likewise.
+	* include/bits/stl_iterator.h: Likewise.
+	* include/bits/stl_iterator_base_funcs.h: Likewise.
+	* include/bits/stl_iterator_base_types.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/stl_numeric.h: Likewise.
+	* include/bits/stl_pair.h: Likewise.
+	* include/bits/stl_queue.h: Likewise.
+	* include/bits/stl_raw_storage_iter.h: Likewise.
+	* include/bits/stl_relops.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_stack.h: Likewise.
+	* include/bits/stl_tempbuf.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/stl_uninitialized.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stream_iterator.h: Likewise.
+	* include/bits/streambuf.tcc: Likewise.
+	* include/bits/streambuf_iterator.h: Likewise.
+	* include/bits/stringfwd.h: Likewise.
+	* include/bits/unique_ptr.h: Likewise.
+	* include/bits/valarray_after.h: Likewise.
+	* include/bits/valarray_array.h: Likewise.
+	* include/bits/valarray_array.tcc: Likewise.
+	* include/bits/valarray_before.h: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/c/cassert: Likewise.
+	* include/c/cctype: Likewise.
+	* include/c/cerrno: Likewise.
+	* include/c/cfloat: Likewise.
+	* include/c/ciso646: Likewise.
+	* include/c/climits: Likewise.
+	* include/c/clocale: Likewise.
+	* include/c/cmath: Likewise.
+	* include/c/csetjmp: Likewise.
+	* include/c/csignal: Likewise.
+	* include/c/cstdarg: Likewise.
+	* include/c/cstddef: Likewise.
+	* include/c/cstdio: Likewise.
+	* include/c/cstdlib: Likewise.
+	* include/c/cstring: Likewise.
+	* include/c/ctime: Likewise.
+	* include/c/cwchar: Likewise.
+	* include/c/cwctype: Likewise.
+	* include/c_compatibility/assert.h: Likewise.
+	* include/c_compatibility/complex.h: Likewise.
+	* include/c_compatibility/ctype.h: Likewise.
+	* include/c_compatibility/errno.h: Likewise.
+	* include/c_compatibility/fenv.h: Likewise.
+	* include/c_compatibility/float.h: Likewise.
+	* include/c_compatibility/inttypes.h: Likewise.
+	* include/c_compatibility/iso646.h: Likewise.
+	* include/c_compatibility/limits.h: Likewise.
+	* include/c_compatibility/locale.h: Likewise.
+	* include/c_compatibility/math.h: Likewise.
+	* include/c_compatibility/setjmp.h: Likewise.
+	* include/c_compatibility/signal.h: Likewise.
+	* include/c_compatibility/stdarg.h: Likewise.
+	* include/c_compatibility/stdatomic.h: Likewise.
+	* include/c_compatibility/stdbool.h: Likewise.
+	* include/c_compatibility/stddef.h: Likewise.
+	* include/c_compatibility/stdint.h: Likewise.
+	* include/c_compatibility/stdio.h: Likewise.
+	* include/c_compatibility/stdlib.h: Likewise.
+	* include/c_compatibility/string.h: Likewise.
+	* include/c_compatibility/tgmath.h: Likewise.
+	* include/c_compatibility/time.h: Likewise.
+	* include/c_compatibility/wchar.h: Likewise.
+	* include/c_compatibility/wctype.h: Likewise.
+	* include/c_global/cassert: Likewise.
+	* include/c_global/ccomplex: Likewise.
+	* include/c_global/cctype: Likewise.
+	* include/c_global/cerrno: Likewise.
+	* include/c_global/cfenv: Likewise.
+	* include/c_global/cfloat: Likewise.
+	* include/c_global/cinttypes: Likewise.
+	* include/c_global/ciso646: Likewise.
+	* include/c_global/climits: Likewise.
+	* include/c_global/clocale: Likewise.
+	* include/c_global/cmath.tcc: Likewise.
+	* include/c_global/cmath: Likewise.
+	* include/c_global/csetjmp: Likewise.
+	* include/c_global/csignal: Likewise.
+	* include/c_global/cstdarg: Likewise.
+	* include/c_global/cstdatomic: Likewise.
+	* include/c_global/cstdbool: Likewise.
+	* include/c_global/cstddef: Likewise.
+	* include/c_global/cstdint: Likewise.
+	* include/c_global/cstdio: Likewise.
+	* include/c_global/cstdlib: Likewise.
+	* include/c_global/cstring: Likewise.
+	* include/c_global/ctgmath: Likewise.
+	* include/c_global/ctime: Likewise.
+	* include/c_global/cwchar: Likewise.
+	* include/c_global/cwctype: Likewise.
+	* include/c_std/cassert: Likewise.
+	* include/c_std/cctype: Likewise.
+	* include/c_std/cerrno: Likewise.
+	* include/c_std/cfloat: Likewise.
+	* include/c_std/ciso646: Likewise.
+	* include/c_std/climits: Likewise.
+	* include/c_std/clocale: Likewise.
+	* include/c_std/cmath.tcc: Likewise.
+	* include/c_std/cmath: Likewise.
+	* include/c_std/csetjmp: Likewise.
+	* include/c_std/csignal: Likewise.
+	* include/c_std/cstdarg: Likewise.
+	* include/c_std/cstddef: Likewise.
+	* include/c_std/cstdio: Likewise.
+	* include/c_std/cstdlib: Likewise.
+	* include/c_std/cstring: Likewise.
+	* include/c_std/ctime: Likewise.
+	* include/c_std/cwchar: Likewise.
+	* include/c_std/cwctype: Likewise.
+	* include/debug/bitset: Likewise.
+	* include/debug/debug.h: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/formatter.h: Likewise.
+	* include/debug/functions.h: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/macros.h: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/map: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/safe_base.h: Likewise.
+	* include/debug/safe_iterator.h: Likewise.
+	* include/debug/safe_iterator.tcc: Likewise.
+	* include/debug/safe_sequence.h: Likewise.
+	* include/debug/set.h: Likewise.
+	* include/debug/set: Likewise.
+	* include/debug/string: Likewise.
+	* include/debug/unordered_map: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/vector: Likewise.
+	* include/ext/algorithm: Likewise.
+	* include/ext/array_allocator.h: Likewise.
+	* include/ext/atomicity.h: Likewise.
+	* include/ext/bitmap_allocator.h: Likewise.
+	* include/ext/cast.h: Likewise.
+	* include/ext/codecvt_specializations.h: Likewise.
+	* include/ext/concurrence.h: Likewise.
+	* include/ext/debug_allocator.h: Likewise.
+	* include/ext/enc_filebuf.h: Likewise.
+	* include/ext/extptr_allocator.h: Likewise.
+	* include/ext/functional: Likewise.
+	* include/ext/iterator: Likewise.
+	* include/ext/malloc_allocator.h: Likewise.
+	* include/ext/memory: Likewise.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/ext/new_allocator.h: Likewise.
+	* include/ext/numeric: Likewise.
+	* include/ext/numeric_traits.h: Likewise.
+	* include/ext/pb_ds/assoc_container.hpp: Likewise.
+	* include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/basic_tree_policy/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/basic_types.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/cond_dealtor.hpp: Likewise.
+	* include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Likewise.
+	* include/ext/pb_ds/detail/debug_map_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp: Likewise.
+	* include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/head.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/node.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/standard_policies.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/type_utils.hpp: Likewise.
+	* include/ext/pb_ds/detail/types_traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
+	Likewise.
+	* include/ext/pb_ds/exception.hpp: Likewise.
+	* include/ext/pb_ds/hash_policy.hpp: Likewise.
+	* include/ext/pb_ds/list_update_policy.hpp: Likewise.
+	* include/ext/pb_ds/priority_queue.hpp: Likewise.
+	* include/ext/pb_ds/tag_and_trait.hpp: Likewise.
+	* include/ext/pb_ds/tree_policy.hpp: Likewise.
+	* include/ext/pb_ds/trie_policy.hpp: Likewise.
+	* include/ext/pod_char_traits.h: Likewise.
+	* include/ext/pointer.h: Likewise.
+	* include/ext/pool_allocator.h: Likewise.
+	* include/ext/rb_tree: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/ext/rope: Likewise.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/ext/slist: Likewise.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/ext/stdio_filebuf.h: Likewise.
+	* include/ext/stdio_sync_filebuf.h: Likewise.
+	* include/ext/string_conversions.h: Likewise.
+	* include/ext/throw_allocator.h: Likewise.
+	* include/ext/type_traits.h: Likewise.
+	* include/ext/typelist.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/ext/vstring.tcc: Likewise.
+	* include/ext/vstring_fwd.h: Likewise.
+	* include/ext/vstring_util.h: Likewise.
+	* include/parallel/algo.h: Likewise.
+	* include/parallel/algobase.h: Likewise.
+	* include/parallel/algorithm: Likewise.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/basic_iterator.h: Likewise.
+	* include/parallel/checkers.h: Likewise.
+	* include/parallel/compatibility.h: Likewise.
+	* include/parallel/compiletime_settings.h: Likewise.
+	* include/parallel/equally_split.h: Likewise.
+	* include/parallel/features.h: Likewise.
+	* include/parallel/find.h: Likewise.
+	* include/parallel/find_selectors.h: Likewise.
+	* include/parallel/for_each.h: Likewise.
+	* include/parallel/for_each_selectors.h: Likewise.
+	* include/parallel/iterator.h: Likewise.
+	* include/parallel/list_partition.h: Likewise.
+	* include/parallel/losertree.h: Likewise.
+	* include/parallel/merge.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiway_mergesort.h: Likewise.
+	* include/parallel/numeric: Likewise.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/omp_loop.h: Likewise.
+	* include/parallel/omp_loop_static.h: Likewise.
+	* include/parallel/par_loop.h: Likewise.
+	* include/parallel/parallel.h: Likewise.
+	* include/parallel/partial_sum.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+	* include/parallel/quicksort.h: Likewise.
+	* include/parallel/random_number.h: Likewise.
+	* include/parallel/random_shuffle.h: Likewise.
+	* include/parallel/search.h: Likewise.
+	* include/parallel/set_operations.h: Likewise.
+	* include/parallel/settings.h: Likewise.
+	* include/parallel/sort.h: Likewise.
+	* include/parallel/tags.h: Likewise.
+	* include/parallel/types.h: Likewise.
+	* include/parallel/unique_copy.h: Likewise.
+	* include/parallel/workstealing.h: Likewise.
+	* include/precompiled/extc++.h: Likewise.
+	* include/precompiled/stdc++.h: Likewise.
+	* include/precompiled/stdtr1c++.h: Likewise.
+	* include/std/algorithm: Likewise.
+	* include/std/array: Likewise.
+	* include/std/bitset: Likewise.
+	* include/std/c++0x_warning.h: Likewise.
+	* include/std/chrono: Likewise.
+	* include/std/complex: Likewise.
+	* include/std/condition_variable: Likewise.
+	* include/std/deque: Likewise.
+	* include/std/forward_list: Likewise.
+	* include/std/fstream: Likewise.
+	* include/std/functional: Likewise.
+	* include/std/iomanip: Likewise.
+	* include/std/ios: Likewise.
+	* include/std/iosfwd: Likewise.
+	* include/std/iostream: Likewise.
+	* include/std/istream: Likewise.
+	* include/std/iterator: Likewise.
+	* include/std/limits: Likewise.
+	* include/std/list: Likewise.
+	* include/std/locale: Likewise.
+	* include/std/map: Likewise.
+	* include/std/memory: Likewise.
+	* include/std/mutex: Likewise.
+	* include/std/numeric: Likewise.
+	* include/std/ostream: Likewise.
+	* include/std/queue: Likewise.
+	* include/std/random: Likewise.
+	* include/std/ratio: Likewise.
+	* include/std/regex: Likewise.
+	* include/std/set: Likewise.
+	* include/std/sstream: Likewise.
+	* include/std/stack: Likewise.
+	* include/std/stdexcept: Likewise.
+	* include/std/streambuf: Likewise.
+	* include/std/string: Likewise.
+	* include/std/system_error: Likewise.
+	* include/std/thread: Likewise.
+	* include/std/tuple: Likewise.
+	* include/std/type_traits: Likewise.
+	* include/std/unordered_map: Likewise.
+	* include/std/unordered_set: Likewise.
+	* include/std/utility: Likewise.
+	* include/std/valarray: Likewise.
+	* include/std/vector: Likewise.
+	* include/tr1/array: Likewise.
+	* include/tr1/bessel_function.tcc: Likewise.
+	* include/tr1/beta_function.tcc: Likewise.
+	* include/tr1/ccomplex: Likewise.
+	* include/tr1/cctype: Likewise.
+	* include/tr1/cfenv: Likewise.
+	* include/tr1/cfloat: Likewise.
+	* include/tr1/cinttypes: Likewise.
+	* include/tr1/climits: Likewise.
+	* include/tr1/cmath: Likewise.
+	* include/tr1/complex.h: Likewise.
+	* include/tr1/complex: Likewise.
+	* include/tr1/cstdarg: Likewise.
+	* include/tr1/cstdbool: Likewise.
+	* include/tr1/cstdint: Likewise.
+	* include/tr1/cstdio: Likewise.
+	* include/tr1/cstdlib: Likewise.
+	* include/tr1/ctgmath: Likewise.
+	* include/tr1/ctime: Likewise.
+	* include/tr1/ctype.h: Likewise.
+	* include/tr1/cwchar: Likewise.
+	* include/tr1/cwctype: Likewise.
+	* include/tr1/ell_integral.tcc: Likewise.
+	* include/tr1/exp_integral.tcc: Likewise.
+	* include/tr1/fenv.h: Likewise.
+	* include/tr1/float.h: Likewise.
+	* include/tr1/functional: Likewise.
+	* include/tr1/functional_hash.h: Likewise.
+	* include/tr1/gamma.tcc: Likewise.
+	* include/tr1/hashtable.h: Likewise.
+	* include/tr1/hypergeometric.tcc: Likewise.
+	* include/tr1/inttypes.h: Likewise.
+	* include/tr1/legendre_function.tcc: Likewise.
+	* include/tr1/limits.h: Likewise.
+	* include/tr1/math.h: Likewise.
+	* include/tr1/memory: Likewise.
+	* include/tr1/modified_bessel_func.tcc: Likewise.
+	* include/tr1/poly_hermite.tcc: Likewise.
+	* include/tr1/poly_laguerre.tcc: Likewise.
+	* include/tr1/random: Likewise.
+	* include/tr1/regex: Likewise.
+	* include/tr1/riemann_zeta.tcc: Likewise.
+	* include/tr1/shared_ptr.h: Likewise.
+	* include/tr1/special_function_util.h: Likewise.
+	* include/tr1/stdarg.h: Likewise.
+	* include/tr1/stdbool.h: Likewise.
+	* include/tr1/stdint.h: Likewise.
+	* include/tr1/stdio.h: Likewise.
+	* include/tr1/stdlib.h: Likewise.
+	* include/tr1/tgmath.h: Likewise.
+	* include/tr1/tuple: Likewise.
+	* include/tr1/type_traits: Likewise.
+	* include/tr1/unordered_map: Likewise.
+	* include/tr1/unordered_set: Likewise.
+	* include/tr1/utility: Likewise.
+	* include/tr1/wchar.h: Likewise.
+	* include/tr1/wctype.h: Likewise.
+	* include/tr1_impl/array: Likewise.
+	* include/tr1_impl/boost_sp_counted_base.h: Likewise.
+	* include/tr1_impl/cctype: Likewise.
+	* include/tr1_impl/cfenv: Likewise.
+	* include/tr1_impl/cinttypes: Likewise.
+	* include/tr1_impl/cmath: Likewise.
+	* include/tr1_impl/complex: Likewise.
+	* include/tr1_impl/cstdint: Likewise.
+	* include/tr1_impl/cstdio: Likewise.
+	* include/tr1_impl/cstdlib: Likewise.
+	* include/tr1_impl/cwchar: Likewise.
+	* include/tr1_impl/cwctype: Likewise.
+	* include/tr1_impl/functional: Likewise.
+	* include/tr1_impl/functional_hash.h: Likewise.
+	* include/tr1_impl/hashtable: Likewise.
+	* include/tr1_impl/hashtable_policy.h: Likewise.
+	* include/tr1_impl/random.tcc: Likewise.
+	* include/tr1_impl/random: Likewise.
+	* include/tr1_impl/regex: Likewise.
+	* include/tr1_impl/type_traits: Likewise.
+	* include/tr1_impl/unordered_map: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/tr1_impl/utility: Likewise.
+	* libsupc++/array_type_info.cc: Likewise.
+	* libsupc++/atexit_arm.cc: Likewise.
+	* libsupc++/bad_cast.cc: Likewise.
+	* libsupc++/bad_typeid.cc: Likewise.
+	* libsupc++/class_type_info.cc: Likewise.
+	* libsupc++/cxxabi-forced.h: Likewise.
+	* libsupc++/cxxabi.h: Likewise.
+	* libsupc++/del_op.cc: Likewise.
+	* libsupc++/del_opnt.cc: Likewise.
+	* libsupc++/del_opv.cc: Likewise.
+	* libsupc++/del_opvnt.cc: Likewise.
+	* libsupc++/dyncast.cc: Likewise.
+	* libsupc++/eh_alloc.cc: Likewise.
+	* libsupc++/eh_arm.cc: Likewise.
+	* libsupc++/eh_aux_runtime.cc: Likewise.
+	* libsupc++/eh_call.cc: Likewise.
+	* libsupc++/eh_catch.cc: Likewise.
+	* libsupc++/eh_exception.cc: Likewise.
+	* libsupc++/eh_globals.cc: Likewise.
+	* libsupc++/eh_personality.cc: Likewise.
+	* libsupc++/eh_ptr.cc: Likewise.
+	* libsupc++/eh_term_handler.cc: Likewise.
+	* libsupc++/eh_terminate.cc: Likewise.
+	* libsupc++/eh_throw.cc: Likewise.
+	* libsupc++/eh_type.cc: Likewise.
+	* libsupc++/eh_unex_handler.cc: Likewise.
+	* libsupc++/enum_type_info.cc: Likewise.
+	* libsupc++/exception: Likewise.
+	* libsupc++/exception_defines.h: Likewise.
+	* libsupc++/exception_ptr.h: Likewise.
+	* libsupc++/function_type_info.cc: Likewise.
+	* libsupc++/fundamental_type_info.cc: Likewise.
+	* libsupc++/guard.cc: Likewise.
+	* libsupc++/initializer_list: Likewise.
+	* libsupc++/new: Likewise.
+	* libsupc++/new_handler.cc: Likewise.
+	* libsupc++/new_op.cc: Likewise.
+	* libsupc++/new_opnt.cc: Likewise.
+	* libsupc++/new_opv.cc: Likewise.
+	* libsupc++/new_opvnt.cc: Likewise.
+	* libsupc++/pbase_type_info.cc: Likewise.
+	* libsupc++/pmem_type_info.cc: Likewise.
+	* libsupc++/pointer_type_info.cc: Likewise.
+	* libsupc++/pure.cc: Likewise.
+	* libsupc++/si_class_type_info.cc: Likewise.
+	* libsupc++/tinfo.cc: Likewise.
+	* libsupc++/tinfo.h: Likewise.
+	* libsupc++/tinfo2.cc: Likewise.
+	* libsupc++/typeinfo: Likewise.
+	* libsupc++/unwind-cxx.h: Likewise.
+	* libsupc++/vec.cc: Likewise.
+	* libsupc++/vmi_class_type_info.cc: Likewise.
+	* libsupc++/vterminate.cc: Likewise.
+	* po/string_literals.cc: Likewise.
+	* src/atomic.cc: Likewise.
+	* src/bitmap_allocator.cc: Likewise.
+	* src/chrono.cc: Likewise.
+	* src/codecvt.cc: Likewise.
+	* src/compatibility-ldbl.cc: Likewise.
+	* src/compatibility.cc: Likewise.
+	* src/complex_io.cc: Likewise.
+	* src/concept-inst.cc: Likewise.
+	* src/condition_variable.cc: Likewise.
+	* src/ctype.cc: Likewise.
+	* src/debug.cc: Likewise.
+	* src/debug_list.cc: Likewise.
+	* src/ext-inst.cc: Likewise.
+	* src/fstream-inst.cc: Likewise.
+	* src/functexcept.cc: Likewise.
+	* src/globals_io.cc: Likewise.
+	* src/hash.cc: Likewise.
+	* src/hash_c++0x.cc: Likewise.
+	* src/hashtable.cc: Likewise.
+	* src/hashtable_c++0x.cc: Likewise.
+	* src/ios-inst.cc: Likewise.
+	* src/ios.cc: Likewise.
+	* src/ios_failure.cc: Likewise.
+	* src/ios_init.cc: Likewise.
+	* src/ios_locale.cc: Likewise.
+	* src/iostream-inst.cc: Likewise.
+	* src/istream-inst.cc: Likewise.
+	* src/istream.cc: Likewise.
+	* src/limits.cc: Likewise.
+	* src/limits_c++0x.cc: Likewise.
+	* src/list.cc: Likewise.
+	* src/locale-inst.cc: Likewise.
+	* src/locale.cc: Likewise.
+	* src/locale_facets.cc: Likewise.
+	* src/locale_init.cc: Likewise.
+	* src/localename.cc: Likewise.
+	* src/math_stubs_float.cc: Likewise.
+	* src/math_stubs_long_double.cc: Likewise.
+	* src/misc-inst.cc: Likewise.
+	* src/mt_allocator.cc: Likewise.
+	* src/mutex.cc: Likewise.
+	* src/ostream-inst.cc: Likewise.
+	* src/parallel_list.cc: Likewise.
+	* src/parallel_settings.cc: Likewise.
+	* src/pool_allocator.cc: Likewise.
+	* src/sstream-inst.cc: Likewise.
+	* src/stdexcept.cc: Likewise.
+	* src/streambuf-inst.cc: Likewise.
+	* src/streambuf.cc: Likewise.
+	* src/string-inst.cc: Likewise.
+	* src/strstream.cc: Likewise.
+	* src/system_error.cc: Likewise.
+	* src/thread.cc: Likewise.
+	* src/tree.cc: Likewise.
+	* src/valarray-inst.cc: Likewise.
+	* src/wlocale-inst.cc: Likewise.
+	* src/wstring-inst.cc: Likewise.
+	* doc/xml/manual/intro.xml: Change documentation to refer the
+	reader to version 3 of the GNU General Public License, version
+	3.1 of the GCC Runtime Library Exception, and to point readers
+	at the FSF's license web page.
+
+2009-04-09  Jakub Jelinek  
+
+	* Makefile.am: Change copyright header to refer to version
+	3 of the GNU General Public License and to point readers at the
+	COPYING3 file and the FSF's license web page.
+	* doc/Makefile.am: Likewise.
+	* include/Makefile.am: Likewise.
+	* libsupc++/Makefile.am: Likewise.
+	* po/Makefile.am: Likewise.
+	* po/POTFILES.in: Likewise.
+	* src/Makefile.am: Likewise.
+	* testsuite/17_intro/headers/all_assert_neg.cc: Likewise.
+	* testsuite/17_intro/headers/c++1998/all.cc: Likewise.
+	* testsuite/17_intro/headers/c++1998/all_multiple_inclusion.cc:
+	Likewise.
+	* testsuite/17_intro/headers/c++200x/all.cc: Likewise.
+	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc:
+	Likewise.
+	* testsuite/17_intro/using_namespace_std.cc: Likewise.
+	* testsuite/17_intro/using_namespace_std_tr1_neg.cc: Likewise.
+	* testsuite/18_support/bad_alloc/cons_virtual_derivation.cc: Likewise.
+	* testsuite/18_support/bad_alloc/what.cc: Likewise.
+	* testsuite/18_support/bad_cast/cons_virtual_derivation.cc: Likewise.
+	* testsuite/18_support/bad_cast/what.cc: Likewise.
+	* testsuite/18_support/bad_exception/23591_thread-1.c: Likewise.
+	* testsuite/18_support/bad_exception/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/18_support/bad_exception/what.cc: Likewise.
+	* testsuite/18_support/bad_typeid/cons_virtual_derivation.cc: Likewise.
+	* testsuite/18_support/bad_typeid/what.cc: Likewise.
+	* testsuite/18_support/exception/38732.cc: Likewise.
+	* testsuite/18_support/exception/what.cc: Likewise.
+	* testsuite/18_support/exception_ptr/current_exception.cc: Likewise.
+	* testsuite/18_support/exception_ptr/lifespan.cc: Likewise.
+	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise.
+	* testsuite/18_support/headers/cfloat/values.cc: Likewise.
+	* testsuite/18_support/headers/climits/values.cc: Likewise.
+	* testsuite/18_support/headers/csetjmp/functions_std.cc: Likewise.
+	* testsuite/18_support/headers/csetjmp/macros.cc: Likewise.
+	* testsuite/18_support/headers/csetjmp/types_std.cc: Likewise.
+	* testsuite/18_support/headers/csignal/functions_std.cc: Likewise.
+	* testsuite/18_support/headers/csignal/macros.cc: Likewise.
+	* testsuite/18_support/headers/csignal/types_std.cc: Likewise.
+	* testsuite/18_support/headers/cstdarg/macros.cc: Likewise.
+	* testsuite/18_support/headers/cstdarg/types_std.cc: Likewise.
+	* testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc: Likewise.
+	* testsuite/18_support/headers/cstddef/macros.cc: Likewise.
+	* testsuite/18_support/headers/cstddef/types_std.cc: Likewise.
+	* testsuite/18_support/headers/cstdint/std_c++0x_neg.cc: Likewise.
+	* testsuite/18_support/headers/cstdint/types_std_c++0x.cc: Likewise.
+	* testsuite/18_support/headers/cstdlib/functions_std.cc: Likewise.
+	* testsuite/18_support/headers/cstdlib/macros.cc: Likewise.
+	* testsuite/18_support/headers/ctime/functions_std.cc: Likewise.
+	* testsuite/18_support/headers/ctime/macros.cc: Likewise.
+	* testsuite/18_support/headers/ctime/types_std.cc: Likewise.
+	* testsuite/18_support/headers/exception/synopsis.cc: Likewise.
+	* testsuite/18_support/headers/exception/types_std.cc: Likewise.
+	* testsuite/18_support/headers/limits/synopsis.cc: Likewise.
+	* testsuite/18_support/headers/new/synopsis.cc: Likewise.
+	* testsuite/18_support/headers/new/types_std.cc: Likewise.
+	* testsuite/18_support/headers/typeinfo/synopsis.cc: Likewise.
+	* testsuite/18_support/headers/typeinfo/types_std.cc: Likewise.
+	* testsuite/18_support/new_delete_placement.cc: Likewise.
+	* testsuite/18_support/numeric_limits/29989.cc: Likewise.
+	* testsuite/18_support/numeric_limits/char16_32_t.cc: Likewise.
+	* testsuite/18_support/numeric_limits/denorm_min.cc: Likewise.
+	* testsuite/18_support/numeric_limits/digits10.cc: Likewise.
+	* testsuite/18_support/numeric_limits/epsilon.cc: Likewise.
+	* testsuite/18_support/numeric_limits/infinity.cc: Likewise.
+	* testsuite/18_support/numeric_limits/is_iec559.cc: Likewise.
+	* testsuite/18_support/numeric_limits/is_signed.cc: Likewise.
+	* testsuite/18_support/numeric_limits/min_max.cc: Likewise.
+	* testsuite/18_support/numeric_limits/quiet_NaN.cc: Likewise.
+	* testsuite/18_support/numeric_limits/specialization_default_values.cc:
+	Likewise.
+	* testsuite/18_support/numeric_limits/traps.cc: Likewise.
+	* testsuite/18_support/pthread_guard.cc: Likewise.
+	* testsuite/18_support/uncaught_exception/14026.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/cons/default.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/bool_neg.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Likewise.
+	* testsuite/19_diagnostics/error_condition/cons/1.cc: Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/bool.cc: Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/bool_neg.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
+	Likewise.
+	* testsuite/19_diagnostics/headers/cassert/macros.cc: Likewise.
+	* testsuite/19_diagnostics/headers/cerrno/macros.cc: Likewise.
+	* testsuite/19_diagnostics/headers/stdexcept/synopsis.cc: Likewise.
+	* testsuite/19_diagnostics/headers/stdexcept/types_std.cc: Likewise.
+	* testsuite/19_diagnostics/headers/system_error/34538.cc: Likewise.
+	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
+	Likewise.
+	* testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc:
+	Likewise.
+	* testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/19_diagnostics/logic_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-3.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-big.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-3.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-big.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/19_diagnostics/system_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-3.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-4.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-big.cc: Likewise.
+	* testsuite/20_util/add_lvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/add_rvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/aligned_storage/value.cc: Likewise.
+	* testsuite/20_util/allocator/1.cc: Likewise.
+	* testsuite/20_util/allocator/10378.cc: Likewise.
+	* testsuite/20_util/allocator/14176.cc: Likewise.
+	* testsuite/20_util/allocator/33807.cc: Likewise.
+	* testsuite/20_util/allocator/8230.cc: Likewise.
+	* testsuite/20_util/auto_ptr/1.cc: Likewise.
+	* testsuite/20_util/auto_ptr/2.cc: Likewise.
+	* testsuite/20_util/auto_ptr/3.cc: Likewise.
+	* testsuite/20_util/auto_ptr/3946.cc: Likewise.
+	* testsuite/20_util/auto_ptr/4.cc: Likewise.
+	* testsuite/20_util/auto_ptr/5.cc: Likewise.
+	* testsuite/20_util/auto_ptr/6.cc: Likewise.
+	* testsuite/20_util/auto_ptr/7.cc: Likewise.
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Likewise.
+	* testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/20_util/clocks/1.cc: Likewise.
+	* testsuite/20_util/common_type/requirements/typedefs-1.cc: Likewise.
+	* testsuite/20_util/conditional/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/decay/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/duration/arithmetic/1.cc: Likewise.
+	* testsuite/20_util/duration/arithmetic/2.cc: Likewise.
+	* testsuite/20_util/duration/comparisons/1.cc: Likewise.
+	* testsuite/20_util/duration/cons/1.cc: Likewise.
+	* testsuite/20_util/duration/cons/1_neg.cc: Likewise.
+	* testsuite/20_util/duration/cons/2.cc: Likewise.
+	* testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/enable_if/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/enable_if/requirements/typedefs_neg.cc: Likewise.
+	* testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/forward/1.cc: Likewise.
+	* testsuite/20_util/forward/1_neg.cc: Likewise.
+	* testsuite/20_util/function_objects/binders/1.cc: Likewise.
+	* testsuite/20_util/function_objects/binders/3113.cc: Likewise.
+	* testsuite/20_util/function_objects/comparisons.cc: Likewise.
+	* testsuite/20_util/function_objects/dr660.cc: Likewise.
+	* testsuite/20_util/has_nothrow_copy_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/has_nothrow_copy_constructor/value.cc: Likewise.
+	* testsuite/20_util/has_nothrow_default_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/has_nothrow_default_constructor/value.cc: Likewise.
+	* testsuite/20_util/has_trivial_copy_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/has_trivial_copy_constructor/value.cc: Likewise.
+	* testsuite/20_util/has_trivial_default_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/has_trivial_default_constructor/value.cc: Likewise.
+	* testsuite/20_util/hash/operators/size_t.cc: Likewise.
+	* testsuite/20_util/hash/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise.
+	* testsuite/20_util/headers/cstring/functions_std.cc: Likewise.
+	* testsuite/20_util/headers/cstring/macros.cc: Likewise.
+	* testsuite/20_util/headers/cstring/types_std.cc: Likewise.
+	* testsuite/20_util/headers/ctime/functions_std.cc: Likewise.
+	* testsuite/20_util/headers/ctime/macros.cc: Likewise.
+	* testsuite/20_util/headers/ctime/types_std.cc: Likewise.
+	* testsuite/20_util/headers/functional/synopsis.cc: Likewise.
+	* testsuite/20_util/headers/functional/types_std_c++0x.cc: Likewise.
+	* testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc:
+	Likewise.
+	* testsuite/20_util/headers/memory/synopsis.cc: Likewise.
+	* testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise.
+	* testsuite/20_util/headers/type_traits/std_c++0x_neg.cc: Likewise.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x.cc: Likewise.
+	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/20_util/headers/utility/synopsis.cc: Likewise.
+	* testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc:
+	Likewise.
+	* testsuite/20_util/identity/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/identity/value.cc: Likewise.
+	* testsuite/20_util/is_integral/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_integral/value.cc: Likewise.
+	* testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/is_lvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/is_reference/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_reference/value.cc: Likewise.
+	* testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/is_rvalue_reference/value.cc: Likewise.
+	* testsuite/20_util/is_signed/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_signed/value.cc: Likewise.
+	* testsuite/20_util/is_unsigned/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_unsigned/value.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise.
+	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/move/1.cc: Likewise.
+	* testsuite/20_util/owner_less/cmp.cc: Likewise.
+	* testsuite/20_util/pair/1.cc: Likewise.
+	* testsuite/20_util/pair/2.cc: Likewise.
+	* testsuite/20_util/pair/3.cc: Likewise.
+	* testsuite/20_util/pair/4.cc: Likewise.
+	* testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
+	* testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
+	* testsuite/20_util/ratio/cons/cons1.cc: Likewise.
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops1.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops2.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops3.cc: Likewise.
+	* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+	* testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
+	* testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
+	* testsuite/20_util/rel_ops.cc: Likewise.
+	* testsuite/20_util/remove_reference/value.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/assign.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc: Likewise.
+	* testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
+	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
+	* testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/39405.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/alias.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/36949.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
+	* testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
+	* testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/io.cc: Likewise.
+	* testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/24805.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/modifiers/swap_rvalue.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/owner_before.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
+	* testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
+	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
+	Likewise.
+	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc:
+	Likewise.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc:
+	Likewise.
+	* testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc:
+	Likewise.
+	* testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc:
+	Likewise.
+	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc:
+	Likewise.
+	* testsuite/20_util/temporary_buffer.cc: Likewise.
+	* testsuite/20_util/time_point/1.cc: Likewise.
+	* testsuite/20_util/time_point/2.cc: Likewise.
+	* testsuite/20_util/time_point/3.cc: Likewise.
+	* testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/tuple/comparison_operators/35480.cc: Likewise.
+	* testsuite/20_util/tuple/comparison_operators/comparisons.cc:
+	Likewise.
+	* testsuite/20_util/tuple/cons/assignment.cc: Likewise.
+	* testsuite/20_util/tuple/cons/big_tuples.cc: Likewise.
+	* testsuite/20_util/tuple/cons/constructor.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/23978.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/make_tuple.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/tie.cc: Likewise.
+	* testsuite/20_util/tuple/creation_functions/tie2.cc: Likewise.
+	* testsuite/20_util/tuple/element_access/get.cc: Likewise.
+	* testsuite/20_util/tuple/tuple_element.cc: Likewise.
+	* testsuite/20_util/tuple/tuple_size.cc: Likewise.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+	* testsuite/20_util/unique_ptr/assign/move.cc: Likewise.
+	* testsuite/20_util/unique_ptr/assign/move_array.cc: Likewise.
+	* testsuite/20_util/unique_ptr/cons/pointer.cc: Likewise.
+	* testsuite/20_util/unique_ptr/cons/pointer_array.cc: Likewise.
+	* testsuite/20_util/unique_ptr/cons/pointer_array_convertible.cc:
+	Likewise.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Likewise.
+	* testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc:
+	Likewise.
+	* testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc:
+	Likewise.
+	* testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc:
+	Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+	* testsuite/20_util/weak_ptr/lock/1.cc: Likewise.
+	* testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
+	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/append/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/append/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/compare/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/compare/char/13650.cc: Likewise.
+	* testsuite/21_strings/basic_string/compare/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/compare/wchar_t/13650.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/5.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/6.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/5.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/6.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/2.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/3.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/4.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/find/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/char/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/find/wchar_t/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/insert/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/insert/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/insert/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/insert/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/10.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/11.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/4.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/5.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/6.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/7.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/8.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/9.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/operations/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/operations/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/operators/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/operators/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/operators/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/operators/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/pthread18185.cc: Likewise.
+	* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/5.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/char/6.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/4.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/5.cc: Likewise.
+	* testsuite/21_strings/basic_string/replace/wchar_t/6.cc: Likewise.
+	* testsuite/21_strings/basic_string/requirements/dr438/constructor.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/rfind/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/rfind/char/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/rfind/char/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: Likewise.
+	* testsuite/21_strings/basic_string/substr/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/substr/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/types/1.cc: Likewise.
+	* testsuite/21_strings/c_strings/char/1.cc: Likewise.
+	* testsuite/21_strings/c_strings/char/2.cc: Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/24559.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/char/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/char/typedefs.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc:
+	Likewise.
+	* testsuite/21_strings/char_traits/requirements/short/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc:
+	Likewise.
+	* testsuite/21_strings/headers/cctype/functions_std.cc: Likewise.
+	* testsuite/21_strings/headers/cstdlib/functions_std.cc: Likewise.
+	* testsuite/21_strings/headers/cstdlib/macros.cc: Likewise.
+	* testsuite/21_strings/headers/cstring/functions_std.cc: Likewise.
+	* testsuite/21_strings/headers/cstring/macros.cc: Likewise.
+	* testsuite/21_strings/headers/cstring/types_std.cc: Likewise.
+	* testsuite/21_strings/headers/cwchar/functions_std.cc: Likewise.
+	* testsuite/21_strings/headers/cwchar/macros.cc: Likewise.
+	* testsuite/21_strings/headers/cwchar/types_std.cc: Likewise.
+	* testsuite/21_strings/headers/cwctype/functions_std.cc: Likewise.
+	* testsuite/21_strings/headers/cwctype/macros.cc: Likewise.
+	* testsuite/21_strings/headers/cwctype/types_std.cc: Likewise.
+	* testsuite/21_strings/headers/string/synopsis.cc: Likewise.
+	* testsuite/21_strings/headers/string/types_std.cc: Likewise.
+	* testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/in/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/out/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt_byname/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/codecvt_byname/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/1.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/3.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate/hash/char/1.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/collate/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/collate/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/collate/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/2.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/28277.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/3.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/28277.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/collate_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/collate_byname/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/collate_byname/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/ctype/2.cc: Likewise.
+	* testsuite/22_locale/ctype/cons/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/cons/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/dr695.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/ctype/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/ctype_base/mask.cc: Likewise.
+	* testsuite/22_locale/ctype_byname/1.cc: Likewise.
+	* testsuite/22_locale/facet/1.cc: Likewise.
+	* testsuite/22_locale/facet/2.cc: Likewise.
+	* testsuite/22_locale/facet/25421.cc: Likewise.
+	* testsuite/22_locale/global_templates/1.cc: Likewise.
+	* testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
+	Likewise.
+	* testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
+	Likewise.
+	* testsuite/22_locale/headers/clocale/functions_std.cc: Likewise.
+	* testsuite/22_locale/headers/clocale/macros.cc: Likewise.
+	* testsuite/22_locale/headers/clocale/types_std.cc: Likewise.
+	* testsuite/22_locale/headers/locale/synopsis.cc: Likewise.
+	* testsuite/22_locale/headers/locale/types_std.cc: Likewise.
+	* testsuite/22_locale/locale/13630.cc: Likewise.
+	* testsuite/22_locale/locale/cons/1.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12352.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12438.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/29217.cc: Likewise.
+	* testsuite/22_locale/locale/cons/38365.cc: Likewise.
+	* testsuite/22_locale/locale/cons/38368.cc: Likewise.
+	* testsuite/22_locale/locale/cons/4.cc: Likewise.
+	* testsuite/22_locale/locale/cons/5.cc: Likewise.
+	* testsuite/22_locale/locale/cons/6.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7222-c.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7222-env.cc: Likewise.
+	* testsuite/22_locale/locale/cons/8.cc: Likewise.
+	* testsuite/22_locale/locale/cons/unicode.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/1.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/14071.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/2.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/3.cc: Likewise.
+	* testsuite/22_locale/locale/operations/1.cc: Likewise.
+	* testsuite/22_locale/locale/operations/2.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/1.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/2.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/3.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/messages/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/messages/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/messages/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/messages_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/messages_byname/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/messages_byname/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/22_locale/money_get/cons/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/10.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/11.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/11528.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/12.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/13.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/14.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/15.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/16.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/17.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/18.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/19.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/22131.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/38399.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/39168.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/5.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/6.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/7.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/8.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/9.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/11.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/11528.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/13.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/14.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/15.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/16.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/17.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/18.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/19.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/38399.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/39168.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_get/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/money_get/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/money_get/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/money_put/cons/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/12971.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/39168.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/9780-3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/12971.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/39168.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/money_put/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/money_put/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/money_put/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/1.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/2.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/false/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/false/intl.cc: Likewise.
+	* testsuite/22_locale/moneypunct/requirements/false/typedefs.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/true/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/true/intl.cc: Likewise.
+	* testsuite/22_locale/moneypunct/requirements/true/typedefs.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/22_locale/num_get/cons/3.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/10.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/11.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/13.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/14.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/15.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/16.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/2.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/23953.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/3.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/37958.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/39168.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/4.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/5.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/6.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/7.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/8.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/9.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/13.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/14.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/15.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/16.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/22131.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/23953.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/39168.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_get/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/num_get/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/num_get/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/num_put/cons/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/10.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/11.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/12.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/14220.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/15565.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/20909.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/20914.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/23953.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/38196.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/38210.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/9.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/9780-2.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/11.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/12.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/14220.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/15565.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/20909.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/20914.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/23953.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/38196.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/38210.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_put/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/num_put/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/num_put/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/1.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/3.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/cache_1.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/cache_2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/pod/1.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/pod/2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/numpunct/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/numpunct/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/numpunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/numpunct_byname/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/numpunct_byname/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/date_order/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12791.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_year/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/time_get/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/time_get/requirements/typedefs.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/10.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/9780-1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/9.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/time_put/requirements/base_classes.cc: Likewise.
+	* testsuite/22_locale/time_put/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/time_put/requirements/typedefs.cc: Likewise.
+	* testsuite/23_containers/array/requirements/fill.cc: Likewise.
+	* testsuite/23_containers/bitset/18604.cc: Likewise.
+	* testsuite/23_containers/bitset/all/1.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/1.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/16020.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/38244.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/6282.cc: Likewise.
+	* testsuite/23_containers/bitset/cons/dr396.cc: Likewise.
+	* testsuite/23_containers/bitset/count/6124.cc: Likewise.
+	* testsuite/23_containers/bitset/ext/15361.cc: Likewise.
+	* testsuite/23_containers/bitset/input/1.cc: Likewise.
+	* testsuite/23_containers/bitset/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/bitset/operations/1.cc: Likewise.
+	* testsuite/23_containers/bitset/operations/13838.cc: Likewise.
+	* testsuite/23_containers/bitset/operations/2.cc: Likewise.
+	* testsuite/23_containers/bitset/test/1.cc: Likewise.
+	* testsuite/23_containers/bitset/to_string/1.cc: Likewise.
+	* testsuite/23_containers/bitset/to_string/dr396.cc: Likewise.
+	* testsuite/23_containers/bitset/to_ulong/1.cc: Likewise.
+	* testsuite/23_containers/deque/18604.cc: Likewise.
+	* testsuite/23_containers/deque/capacity/29134-2.cc: Likewise.
+	* testsuite/23_containers/deque/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/deque/cons/1.cc: Likewise.
+	* testsuite/23_containers/deque/cons/2.cc: Likewise.
+	* testsuite/23_containers/deque/cons/assign/1.cc: Likewise.
+	* testsuite/23_containers/deque/cons/clear_allocator.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/deque/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/1.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/2.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/3.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/deque/operators/1.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/constructor.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/types/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/6.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/7.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/8.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/9.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/6.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/7.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/modifiers/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/5.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/6.cc: Likewise.
+	* testsuite/23_containers/forward_list/operations/7.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/1.cc: Likewise.
+	* testsuite/23_containers/headers/array/std_c++0x_neg.cc: Likewise.
+	* testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/map/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/set/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/stack/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/tuple/std_c++0x_neg.cc: Likewise.
+	* testsuite/23_containers/headers/tuple/types_std_c++0x.cc: Likewise.
+	* testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
+	* testsuite/23_containers/list/18604.cc: Likewise.
+	* testsuite/23_containers/list/capacity/1.cc: Likewise.
+	* testsuite/23_containers/list/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/list/cons/1.cc: Likewise.
+	* testsuite/23_containers/list/cons/2.cc: Likewise.
+	* testsuite/23_containers/list/cons/3.cc: Likewise.
+	* testsuite/23_containers/list/cons/4.cc: Likewise.
+	* testsuite/23_containers/list/cons/5.cc: Likewise.
+	* testsuite/23_containers/list/cons/6.cc: Likewise.
+	* testsuite/23_containers/list/cons/7.cc: Likewise.
+	* testsuite/23_containers/list/cons/8.cc: Likewise.
+	* testsuite/23_containers/list/cons/9.cc: Likewise.
+	* testsuite/23_containers/list/cons/clear_allocator.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/list/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/1.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/3.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/list/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/list/operations/1.cc: Likewise.
+	* testsuite/23_containers/list/operations/2.cc: Likewise.
+	* testsuite/23_containers/list/operations/3.cc: Likewise.
+	* testsuite/23_containers/list/operations/35969.cc: Likewise.
+	* testsuite/23_containers/list/operations/4.cc: Likewise.
+	* testsuite/23_containers/list/operations/5.cc: Likewise.
+	* testsuite/23_containers/list/pthread1.cc: Likewise.
+	* testsuite/23_containers/list/pthread5.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/constructor.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/map/18604.cc: Likewise.
+	* testsuite/23_containers/map/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/map/element_access/1.cc: Likewise.
+	* testsuite/23_containers/map/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/map/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/1.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/16813.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/map/operators/1.cc: Likewise.
+	* testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+	* testsuite/23_containers/map/pthread6.cc: Likewise.
+	* testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/multimap/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/multimap/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/insert/22102.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/multiset/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/multiset/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/insert/1.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/insert/22102.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/priority_queue/members/7161.cc: Likewise.
+	* testsuite/23_containers/queue/members/7157.cc: Likewise.
+	* testsuite/23_containers/set/18604.cc: Likewise.
+	* testsuite/23_containers/set/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/set/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/set/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/17948.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+	* testsuite/23_containers/stack/members/7158.cc: Likewise.
+	* testsuite/23_containers/unordered_map/dr761.cc: Likewise.
+	* testsuite/23_containers/unordered_map/requirements/debug_container.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/debug.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/debug.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/requirements/debug_container.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/23_containers/vector/18604.cc: Likewise.
+	* testsuite/23_containers/vector/bool/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/21244.cc: Likewise.
+	* testsuite/23_containers/vector/bool/23632.cc: Likewise.
+	* testsuite/23_containers/vector/bool/6886.cc: Likewise.
+	* testsuite/23_containers/vector/bool/capacity/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/vector/bool/clear_allocator.cc: Likewise.
+	* testsuite/23_containers/vector/bool/cons/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/cons/2.cc: Likewise.
+	* testsuite/23_containers/vector/bool/modifiers/erase/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/modifiers/insert/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
+	Likewise.
+	* testsuite/23_containers/vector/bool/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/vector/bool/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/1.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/2.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/29134.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/8230.cc: Likewise.
+	* testsuite/23_containers/vector/cons/1.cc: Likewise.
+	* testsuite/23_containers/vector/cons/2.cc: Likewise.
+	* testsuite/23_containers/vector/cons/3.cc: Likewise.
+	* testsuite/23_containers/vector/cons/4.cc: Likewise.
+	* testsuite/23_containers/vector/cons/6513.cc: Likewise.
+	* testsuite/23_containers/vector/cons/clear_allocator.cc: Likewise.
+	* testsuite/23_containers/vector/data_access/1.cc: Likewise.
+	* testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc:
+	Likewise.
+	* testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc:
+	Likewise.
+	* testsuite/23_containers/vector/element_access/1.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/1.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/2.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/3.cc: Likewise.
+	* testsuite/23_containers/vector/invalidation/4.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/1.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/erase/1.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/swap/1.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/swap/2.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/swap/3.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/bool/constructor.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/constructor.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/resize/1.cc: Likewise.
+	* testsuite/23_containers/vector/types/1.cc: Likewise.
+	* testsuite/24_iterators/back_insert_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/back_insert_iterator/requirements/container.cc:
+	Likewise.
+	* testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/front_insert_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/front_insert_iterator/requirements/container.cc:
+	Likewise.
+	* testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/headers/iterator/synopsis.cc: Likewise.
+	* testsuite/24_iterators/headers/iterator/types_std.cc: Likewise.
+	* testsuite/24_iterators/insert_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/insert_iterator/requirements/container.cc:
+	Likewise.
+	* testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/insert_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/istream_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/istream_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/istreambuf_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/istreambuf_iterator/2627.cc: Likewise.
+	* testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/operations/next.cc: Likewise.
+	* testsuite/24_iterators/operations/prev.cc: Likewise.
+	* testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/24_iterators/random_access_iterator/26020.cc: Likewise.
+	* testsuite/24_iterators/random_access_iterator/string_vector_iterators.cc:
+	Likewise.
+	* testsuite/24_iterators/reverse_iterator/11729.cc: Likewise.
+	* testsuite/24_iterators/reverse_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/reverse_iterator/3.cc: Likewise.
+	* testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/24_iterators/reverse_iterator/requirements/current.cc:
+	Likewise.
+	* testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/25_algorithms/adjacent_find/1.cc: Likewise.
+	* testsuite/25_algorithms/adjacent_find/check_type.cc: Likewise.
+	* testsuite/25_algorithms/all_of/1.cc: Likewise.
+	* testsuite/25_algorithms/all_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/any_of/1.cc: Likewise.
+	* testsuite/25_algorithms/any_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/binary_search/1.cc: Likewise.
+	* testsuite/25_algorithms/binary_search/2.cc: Likewise.
+	* testsuite/25_algorithms/binary_search/check_type.cc: Likewise.
+	* testsuite/25_algorithms/copy/1.cc: Likewise.
+	* testsuite/25_algorithms/copy/2.cc: Likewise.
+	* testsuite/25_algorithms/copy/3.cc: Likewise.
+	* testsuite/25_algorithms/copy/34595.cc: Likewise.
+	* testsuite/25_algorithms/copy/4.cc: Likewise.
+	* testsuite/25_algorithms/copy/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc: Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc: Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc: Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc: Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_backward/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/1.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/2.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/3.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/4.cc: Likewise.
+	* testsuite/25_algorithms/copy_n/move_iterators/1.cc: Likewise.
+	* testsuite/25_algorithms/count/1.cc: Likewise.
+	* testsuite/25_algorithms/count/check_type.cc: Likewise.
+	* testsuite/25_algorithms/count_if/1.cc: Likewise.
+	* testsuite/25_algorithms/count_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/equal/1.cc: Likewise.
+	* testsuite/25_algorithms/equal/check_type.cc: Likewise.
+	* testsuite/25_algorithms/equal/no_operator_ne.cc: Likewise.
+	* testsuite/25_algorithms/equal_range/1.cc: Likewise.
+	* testsuite/25_algorithms/equal_range/2.cc: Likewise.
+	* testsuite/25_algorithms/equal_range/check_type.cc: Likewise.
+	* testsuite/25_algorithms/fill/1.cc: Likewise.
+	* testsuite/25_algorithms/fill/2.cc: Likewise.
+	* testsuite/25_algorithms/fill/3.cc: Likewise.
+	* testsuite/25_algorithms/fill/35725.cc: Likewise.
+	* testsuite/25_algorithms/fill/4.cc: Likewise.
+	* testsuite/25_algorithms/fill/5.cc: Likewise.
+	* testsuite/25_algorithms/fill_n/35725.cc: Likewise.
+	* testsuite/25_algorithms/find/1.cc: Likewise.
+	* testsuite/25_algorithms/find/17441.cc: Likewise.
+	* testsuite/25_algorithms/find/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc: Likewise.
+	* testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc: Likewise.
+	* testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc:
+	Likewise.
+	* testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_end/1.cc: Likewise.
+	* testsuite/25_algorithms/find_end/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find_first_of/1.cc: Likewise.
+	* testsuite/25_algorithms/find_first_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find_first_of/concept_check_1.cc: Likewise.
+	* testsuite/25_algorithms/find_if/1.cc: Likewise.
+	* testsuite/25_algorithms/find_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/1.cc: Likewise.
+	* testsuite/25_algorithms/find_if_not/check_type.cc: Likewise.
+	* testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc:
+	Likewise.
+	* testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc:
+	Likewise.
+	* testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc:
+	Likewise.
+	* testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc:
+	Likewise.
+	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Likewise.
+	* testsuite/25_algorithms/headers/cstdlib/functions_std.cc: Likewise.
+	* testsuite/25_algorithms/heap/1.cc: Likewise.
+	* testsuite/25_algorithms/heap/moveable.cc: Likewise.
+	* testsuite/25_algorithms/includes/1.cc: Likewise.
+	* testsuite/25_algorithms/includes/check_type.cc: Likewise.
+	* testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
+	* testsuite/25_algorithms/inplace_merge/check_type.cc: Likewise.
+	* testsuite/25_algorithms/is_heap/1.cc: Likewise.
+	* testsuite/25_algorithms/is_heap_until/1.cc: Likewise.
+	* testsuite/25_algorithms/is_partitioned/1.cc: Likewise.
+	* testsuite/25_algorithms/is_partitioned/check_type.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted/1.cc: Likewise.
+	* testsuite/25_algorithms/is_sorted_until/1.cc: Likewise.
+	* testsuite/25_algorithms/iter_swap/20577.cc: Likewise.
+	* testsuite/25_algorithms/lexicographical_compare/1.cc: Likewise.
+	* testsuite/25_algorithms/lexicographical_compare/check_type.cc:
+	Likewise.
+	* testsuite/25_algorithms/lower_bound/1.cc: Likewise.
+	* testsuite/25_algorithms/lower_bound/2.cc: Likewise.
+	* testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
+	* testsuite/25_algorithms/lower_bound/check_type.cc: Likewise.
+	* testsuite/25_algorithms/lower_bound/no_operator_ne.cc: Likewise.
+	* testsuite/25_algorithms/max/1.cc: Likewise.
+	* testsuite/25_algorithms/max/2.cc: Likewise.
+	* testsuite/25_algorithms/max/3.cc: Likewise.
+	* testsuite/25_algorithms/max/37547.cc: Likewise.
+	* testsuite/25_algorithms/max/4.cc: Likewise.
+	* testsuite/25_algorithms/max_element/1.cc: Likewise.
+	* testsuite/25_algorithms/max_element/check_type.cc: Likewise.
+	* testsuite/25_algorithms/merge/1.cc: Likewise.
+	* testsuite/25_algorithms/merge/check_type.cc: Likewise.
+	* testsuite/25_algorithms/min/1.cc: Likewise.
+	* testsuite/25_algorithms/min/2.cc: Likewise.
+	* testsuite/25_algorithms/min/3.cc: Likewise.
+	* testsuite/25_algorithms/min/37547.cc: Likewise.
+	* testsuite/25_algorithms/min/4.cc: Likewise.
+	* testsuite/25_algorithms/min_element/1.cc: Likewise.
+	* testsuite/25_algorithms/min_element/check_type.cc: Likewise.
+	* testsuite/25_algorithms/minmax/1.cc: Likewise.
+	* testsuite/25_algorithms/minmax/2.cc: Likewise.
+	* testsuite/25_algorithms/minmax/3.cc: Likewise.
+	* testsuite/25_algorithms/minmax/37547.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/1.cc: Likewise.
+	* testsuite/25_algorithms/minmax_element/check_type.cc: Likewise.
+	* testsuite/25_algorithms/mismatch/1.cc: Likewise.
+	* testsuite/25_algorithms/mismatch/check_type.cc: Likewise.
+	* testsuite/25_algorithms/move/1.cc: Likewise.
+	* testsuite/25_algorithms/move_backward/1.cc: Likewise.
+	* testsuite/25_algorithms/next_permutation/1.cc: Likewise.
+	* testsuite/25_algorithms/next_permutation/check_type.cc: Likewise.
+	* testsuite/25_algorithms/none_of/1.cc: Likewise.
+	* testsuite/25_algorithms/none_of/check_type.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/1.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/2.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/3.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/check_type.cc: Likewise.
+	* testsuite/25_algorithms/nth_element/moveable.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort/1.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort/2.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort/check_type.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort/moveable.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort_copy/1.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort_copy/2.cc: Likewise.
+	* testsuite/25_algorithms/partial_sort_copy/check_type.cc: Likewise.
+	* testsuite/25_algorithms/partition/1.cc: Likewise.
+	* testsuite/25_algorithms/partition/moveable.cc: Likewise.
+	* testsuite/25_algorithms/partition_copy/1.cc: Likewise.
+	* testsuite/25_algorithms/partition_copy/check_type.cc: Likewise.
+	* testsuite/25_algorithms/partition_point/1.cc: Likewise.
+	* testsuite/25_algorithms/partition_point/check_type.cc: Likewise.
+	* testsuite/25_algorithms/prev_permutation/1.cc: Likewise.
+	* testsuite/25_algorithms/prev_permutation/check_type.cc: Likewise.
+	* testsuite/25_algorithms/random_shuffle/1.cc: Likewise.
+	* testsuite/25_algorithms/remove/1.cc: Likewise.
+	* testsuite/25_algorithms/remove/check_type.cc: Likewise.
+	* testsuite/25_algorithms/remove/moveable.cc: Likewise.
+	* testsuite/25_algorithms/remove_copy_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/remove_if/1.cc: Likewise.
+	* testsuite/25_algorithms/remove_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/remove_if/moveable.cc: Likewise.
+	* testsuite/25_algorithms/replace/1.cc: Likewise.
+	* testsuite/25_algorithms/replace/check_type.cc: Likewise.
+	* testsuite/25_algorithms/replace_copy/1.cc: Likewise.
+	* testsuite/25_algorithms/replace_copy/check_type.cc: Likewise.
+	* testsuite/25_algorithms/replace_copy_if/1.cc: Likewise.
+	* testsuite/25_algorithms/replace_copy_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/replace_if/1.cc: Likewise.
+	* testsuite/25_algorithms/replace_if/check_type.cc: Likewise.
+	* testsuite/25_algorithms/reverse/moveable.cc: Likewise.
+	* testsuite/25_algorithms/rotate/1.cc: Likewise.
+	* testsuite/25_algorithms/rotate/check_type.cc: Likewise.
+	* testsuite/25_algorithms/rotate/moveable.cc: Likewise.
+	* testsuite/25_algorithms/rotate/rotate.cc: Likewise.
+	* testsuite/25_algorithms/search/1.cc: Likewise.
+	* testsuite/25_algorithms/search/check_type.cc: Likewise.
+	* testsuite/25_algorithms/search_n/11400.cc: Likewise.
+	* testsuite/25_algorithms/search_n/check_type.cc: Likewise.
+	* testsuite/25_algorithms/search_n/iterator.cc: Likewise.
+	* testsuite/25_algorithms/set_difference/1.cc: Likewise.
+	* testsuite/25_algorithms/set_difference/35541.cc: Likewise.
+	* testsuite/25_algorithms/set_difference/check_type.cc: Likewise.
+	* testsuite/25_algorithms/set_intersection/1.cc: Likewise.
+	* testsuite/25_algorithms/set_intersection/34730.cc: Likewise.
+	* testsuite/25_algorithms/set_intersection/check_type.cc: Likewise.
+	* testsuite/25_algorithms/set_symmetric_difference/1.cc: Likewise.
+	* testsuite/25_algorithms/set_symmetric_difference/check_type.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_union/1.cc: Likewise.
+	* testsuite/25_algorithms/set_union/check_type.cc: Likewise.
+	* testsuite/25_algorithms/sort/1.cc: Likewise.
+	* testsuite/25_algorithms/sort/34095.cc: Likewise.
+	* testsuite/25_algorithms/sort/34636.cc: Likewise.
+	* testsuite/25_algorithms/sort/35588.cc: Likewise.
+	* testsuite/25_algorithms/sort/moveable.cc: Likewise.
+	* testsuite/25_algorithms/sort/vectorbool.cc: Likewise.
+	* testsuite/25_algorithms/stable_partition/1.cc: Likewise.
+	* testsuite/25_algorithms/stable_sort/1.cc: Likewise.
+	* testsuite/25_algorithms/stable_sort/2.cc: Likewise.
+	* testsuite/25_algorithms/stable_sort/check_type.cc: Likewise.
+	* testsuite/25_algorithms/swap_ranges/1.cc: Likewise.
+	* testsuite/25_algorithms/swap_ranges/check_type.cc: Likewise.
+	* testsuite/25_algorithms/swap_ranges/moveable.cc: Likewise.
+	* testsuite/25_algorithms/unique/1.cc: Likewise.
+	* testsuite/25_algorithms/unique/11480.cc: Likewise.
+	* testsuite/25_algorithms/unique/2.cc: Likewise.
+	* testsuite/25_algorithms/unique/moveable.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/1.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/2.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/26133.cc: Likewise.
+	* testsuite/25_algorithms/unique_copy/check_type.cc: Likewise.
+	* testsuite/25_algorithms/upper_bound/1.cc: Likewise.
+	* testsuite/25_algorithms/upper_bound/2.cc: Likewise.
+	* testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
+	* testsuite/25_algorithms/upper_bound/check_type.cc: Likewise.
+	* testsuite/26_numerics/accumulate/1.cc: Likewise.
+	* testsuite/26_numerics/adjacent_difference/1.cc: Likewise.
+	* testsuite/26_numerics/complex/13450.cc: Likewise.
+	* testsuite/26_numerics/complex/buggy_complex.cc: Likewise.
+	* testsuite/26_numerics/complex/complex_value.cc: Likewise.
+	* testsuite/26_numerics/complex/dr387.cc: Likewise.
+	* testsuite/26_numerics/complex/dr387_2.cc: Likewise.
+	* testsuite/26_numerics/complex/dr781.cc: Likewise.
+	* testsuite/26_numerics/complex/dr844.cc: Likewise.
+	* testsuite/26_numerics/complex/inserters_extractors/char/1.cc:
+	Likewise.
+	* testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/c_math.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/dr550.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/fabs_inline.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/functions_std.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/macros.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/powi.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/functions_std.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise.
+	* testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/numeric/parallel_numeric.cc: Likewise.
+	* testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/numeric/synopsis.cc: Likewise.
+	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/random/types_std_c++0x.cc: Likewise.
+	* testsuite/26_numerics/headers/valarray/synopsis.cc: Likewise.
+	* testsuite/26_numerics/headers/valarray/types_std.cc: Likewise.
+	* testsuite/26_numerics/inner_product/1.cc: Likewise.
+	* testsuite/26_numerics/iota/1.cc: Likewise.
+	* testsuite/26_numerics/partial_sum/1.cc: Likewise.
+	* testsuite/26_numerics/slice/1.cc: Likewise.
+	* testsuite/26_numerics/valarray/28277.cc: Likewise.
+	* testsuite/26_numerics/valarray/dr543.cc: Likewise.
+	* testsuite/26_numerics/valarray/operators.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/5.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/12206.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13007.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/is_open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/5.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/13858.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/9169.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/9988.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12232.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/snextc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sync/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/9027.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc: Likewise.
+	* testsuite/27_io/basic_fstream/cons/1.cc: Likewise.
+	* testsuite/27_io/basic_fstream/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_fstream/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_fstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_fstream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/cons/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/open/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_ios/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ios/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_iostream/cons/16251.C: Likewise.
+	* testsuite/27_io/basic_iostream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_iostream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_istream/cons/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/exceptions/char/9561.cc: Likewise.
+	* testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/26181.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/5.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/6.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/6.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/6360.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/7220.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/12296.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/6414.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/12296.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/6414.cc: Likewise.
+	* testsuite/27_io/basic_istream/putback/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/putback/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/6746-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/6746-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/char/8258.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc: Likewise.
+	* testsuite/27_io/basic_istream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
+	* testsuite/27_io/basic_istream/ws/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ws/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/27_io/basic_istringstream/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/cons/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/open/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_ofstream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_ostream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ostream/cons/char/9827.cc: Likewise.
+	* testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc: Likewise.
+	* testsuite/27_io/basic_ostream/endl/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/endl/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/ends/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/exceptions/char/9561.cc: Likewise.
+	* testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/6.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/8.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/put/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/put/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/requirements/base_classes.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/cons/char/3.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostringstream/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/in_avail/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/in_avail/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/char/26250.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/char/9988.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/char/4.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/char/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/char/3955.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringstream/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/char/3.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/char/4.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/str/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/fpos/11450.cc: Likewise.
+	* testsuite/27_io/fpos/14320-1.cc: Likewise.
+	* testsuite/27_io/fpos/14320-2.cc: Likewise.
+	* testsuite/27_io/fpos/14320-3.cc: Likewise.
+	* testsuite/27_io/fpos/14320-4.cc: Likewise.
+	* testsuite/27_io/fpos/14320-5.cc: Likewise.
+	* testsuite/27_io/fpos/14775.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/12065.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/4_neg.cc: Likewise.
+	* testsuite/27_io/fpos/requirements/explicit_instantiation.cc: Likewise.
+	* testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise.
+	* testsuite/27_io/headers/cinttypes/types_std_c++0x.cc: Likewise.
+	* testsuite/27_io/headers/cstdio/functions_std.cc: Likewise.
+	* testsuite/27_io/headers/cstdio/macros.cc: Likewise.
+	* testsuite/27_io/headers/cstdio/types_std.cc: Likewise.
+	* testsuite/27_io/headers/fstream/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/fstream/types_std.cc: Likewise.
+	* testsuite/27_io/headers/iomanip/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/ios/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/ios/types_std.cc: Likewise.
+	* testsuite/27_io/headers/iostream/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/iostream/types_std.cc: Likewise.
+	* testsuite/27_io/headers/istream/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/istream/types_std.cc: Likewise.
+	* testsuite/27_io/headers/ostream/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/ostream/types_std.cc: Likewise.
+	* testsuite/27_io/headers/sstream/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/sstream/types_std.cc: Likewise.
+	* testsuite/27_io/headers/streambuf/synopsis.cc: Likewise.
+	* testsuite/27_io/headers/streambuf/types_std.cc: Likewise.
+	* testsuite/27_io/ios_base/callbacks/1.cc: Likewise.
+	* testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc: Likewise.
+	* testsuite/27_io/ios_base/failure/what-1.cc: Likewise.
+	* testsuite/27_io/ios_base/failure/what-2.cc: Likewise.
+	* testsuite/27_io/ios_base/failure/what-3.cc: Likewise.
+	* testsuite/27_io/ios_base/failure/what-big.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/1.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/11584.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
+	* testsuite/27_io/ios_base/storage/3.cc: Likewise.
+	* testsuite/27_io/ios_base/sync_with_stdio/1.cc: Likewise.
+	* testsuite/27_io/ios_base/sync_with_stdio/16959.cc: Likewise.
+	* testsuite/27_io/ios_base/sync_with_stdio/2.cc: Likewise.
+	* testsuite/27_io/ios_base/sync_with_stdio/9523.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/char/2.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/manipulators/standard/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/objects/char/1.cc: Likewise.
+	* testsuite/27_io/objects/char/10.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-2.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-3.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-4.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-5.cc: Likewise.
+	* testsuite/27_io/objects/char/2.cc: Likewise.
+	* testsuite/27_io/objects/char/2523-1_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/2523-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/3_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/4_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/5.cc: Likewise.
+	* testsuite/27_io/objects/char/5280_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/6.cc: Likewise.
+	* testsuite/27_io/objects/char/6548_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/6648-1_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/6648-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/7744_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/8.cc: Likewise.
+	* testsuite/27_io/objects/char/9.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/char/dr455.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/10.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/11.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/13.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/13582-1_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/2523-1_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/2523-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/3_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/4_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/5.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/5280_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/6.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/6548_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/6648-1_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/6648-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7744_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/8.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9520.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-2_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9662.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9_xin.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/dr455.cc: Likewise.
+	* testsuite/27_io/types/1.cc: Likewise.
+	* testsuite/27_io/types/2.cc: Likewise.
+	* testsuite/27_io/types/3.cc: Likewise.
+	* testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/requirements/base_classes.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/29_atomics/headers/cstdatomic/functions_std_c++0x.cc:
+	Likewise.
+	* testsuite/29_atomics/headers/cstdatomic/macros.cc: Likewise.
+	* testsuite/29_atomics/headers/cstdatomic/std_c++0x_neg.cc: Likewise.
+	* testsuite/29_atomics/headers/cstdatomic/types_std_c++0x.cc: Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h/functions.c: Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h/macros.c: Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h/types.c: Likewise.
+	* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/native_handle/typesizes.cc:
+	Likewise.
+	* testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
+	Likewise.
+	* testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise.
+	* testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
+	* testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
+	* testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
+	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
+	Likewise.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/thread/id/operators.cc: Likewise.
+	* testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise.
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise.
+	* testsuite/Makefile.am: Likewise.
+	* testsuite/abi/30586.cc: Likewise.
+	* testsuite/abi/cxx_runtime_only_linkage.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/01.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/02.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/03.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/04.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/05.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/06.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/07.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/08.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/09.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/10.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/11.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/12.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/13.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/14.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/15.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/16.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/17.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/18.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/19.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/20.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/21.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/22.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/23.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/24.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/25.cc: Likewise.
+	* testsuite/abi/demangle/abi_examples/26.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/01.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/02.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/03.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/04.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/05.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/06.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/07.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/08.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/09.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/10.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/11.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/12.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/13.cc: Likewise.
+	* testsuite/abi/demangle/abi_text/14.cc: Likewise.
+	* testsuite/abi/demangle/cxx0x/rref.cc: Likewise.
+	* testsuite/abi/demangle/regression/3111-1.cc: Likewise.
+	* testsuite/abi/demangle/regression/3111-2.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-01.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-02.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-03.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-04.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-05.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-06.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-07.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-08.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-09.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-10.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-11.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986-12.cc: Likewise.
+	* testsuite/abi/demangle/regression/7986.cc: Likewise.
+	* testsuite/abi/demangle/regression/8897.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-01.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-02.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-03.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-04.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-05.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-06.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-07.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-08.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-09.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-10.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-11.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-12.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-13.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-14.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-15.cc: Likewise.
+	* testsuite/abi/demangle/regression/cw-16.cc: Likewise.
+	* testsuite/abi/demangle/regression/old.cc: Likewise.
+	* testsuite/abi/header_cxxabi.c: Likewise.
+	* testsuite/backward/11460.cc: Likewise.
+	* testsuite/backward/hash_map/1.cc: Likewise.
+	* testsuite/backward/hash_map/14648.cc: Likewise.
+	* testsuite/backward/hash_map/23528.cc: Likewise.
+	* testsuite/backward/hash_set/1.cc: Likewise.
+	* testsuite/backward/strstream_members.cc: Likewise.
+	* testsuite/config/default.exp: Likewise.
+	* testsuite/data/filebuf_virtuals-1.tst: Likewise.
+	* testsuite/data/filebuf_virtuals-1.txt: Likewise.
+	* testsuite/data/istream_extractor_other-1.tst: Likewise.
+	* testsuite/data/istream_extractor_other-1.txt: Likewise.
+	* testsuite/data/istream_extractor_other-2.tst: Likewise.
+	* testsuite/data/ostream_inserter_other-1.tst: Likewise.
+	* testsuite/data/ostream_inserter_other-2.tst: Likewise.
+	* testsuite/data/sgetn.txt: Likewise.
+	* testsuite/data/wistream_extractor_other-1.tst: Likewise.
+	* testsuite/data/wistream_extractor_other-1.txt: Likewise.
+	* testsuite/data/wistream_extractor_other-2.tst: Likewise.
+	* testsuite/data/wostream_inserter_other-1.tst: Likewise.
+	* testsuite/data/wostream_inserter_other-2.tst: Likewise.
+	* testsuite/ext/array_allocator/26875.cc: Likewise.
+	* testsuite/ext/array_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/array_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/array_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/array_allocator/check_new.cc: Likewise.
+	* testsuite/ext/array_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
+	* testsuite/ext/bitmap_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/codecvt/1.cc: Likewise.
+	* testsuite/ext/codecvt/char-1.cc: Likewise.
+	* testsuite/ext/codecvt/char-2.cc: Likewise.
+	* testsuite/ext/codecvt/wchar_t.cc: Likewise.
+	* testsuite/ext/concept_checks.cc: Likewise.
+	* testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/debug_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/debug_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/debug_allocator/check_new.cc: Likewise.
+	* testsuite/ext/debug_allocator/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/enc_filebuf/char/13189.cc: Likewise.
+	* testsuite/ext/enc_filebuf/char/13598.cc: Likewise.
+	* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Likewise.
+	* testsuite/ext/forced_exception_error/cons_virtual_derivation.cc:
+	Likewise.
+	* testsuite/ext/headers.cc: Likewise.
+	* testsuite/ext/is_heap/1.cc: Likewise.
+	* testsuite/ext/is_heap/check_type.cc: Likewise.
+	* testsuite/ext/malloc_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/malloc_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/malloc_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/malloc_allocator/check_new.cc: Likewise.
+	* testsuite/ext/malloc_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/malloc_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/malloc_allocator/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/malloc_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/median.cc: Likewise.
+	* testsuite/ext/mt_allocator/22309_thread.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_allocate_big_per_type.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_deallocate_null_thread.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/mt_allocator/check_new.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_global_thread-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-6.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local-8.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-5.cc: Likewise.
+	* testsuite/ext/mt_allocator/deallocate_local_thread-7.cc: Likewise.
+	* testsuite/ext/mt_allocator/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-1.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-2.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-3.cc: Likewise.
+	* testsuite/ext/mt_allocator/tune-4.cc: Likewise.
+	* testsuite/ext/mt_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/new_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/new_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/new_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/new_allocator/check_new.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/new_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/new_allocator/instantiate.cc: Likewise.
+	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/numeric_traits/numeric_traits.cc: Likewise.
+	* testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
+	* testsuite/ext/pool_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/pool_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/pool_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/pool_allocator/check_new.cc: Likewise.
+	* testsuite/ext/pool_allocator/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/pool_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/rope/1.cc: Likewise.
+	* testsuite/ext/rope/2.cc: Likewise.
+	* testsuite/ext/rope/3.cc: Likewise.
+	* testsuite/ext/rope/36832.cc: Likewise.
+	* testsuite/ext/rope/4.cc: Likewise.
+	* testsuite/ext/rope/pthread7-rope.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/10063-1.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/10063-3.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/2.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/35209.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc: Likewise.
+	* testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
+	* testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
+	* testsuite/ext/throw_allocator/check_delete.cc: Likewise.
+	* testsuite/ext/throw_allocator/check_new.cc: Likewise.
+	* testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
+	* testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
+	* testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
+	* testsuite/ext/type_traits/add_unsigned.cc: Likewise.
+	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+	* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned.cc: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise.
+	* testsuite/ext/vstring/capacity/29134.cc: Likewise.
+	* testsuite/ext/vstring/element_access/char/front_back.cc: Likewise.
+	* testsuite/ext/vstring/element_access/wchar_t/front_back.cc: Likewise.
+	* testsuite/ext/vstring/inserters_extractors/char/28277.cc: Likewise.
+	* testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc: Likewise.
+	* testsuite/ext/vstring/requirements/dr438/constructor.cc: Likewise.
+	* testsuite/lib/dg-options.exp: Likewise.
+	* testsuite/lib/libstdc++.exp: Likewise.
+	* testsuite/lib/prune.exp: Likewise.
+	* testsuite/libstdc++-abi/abi.exp: Likewise.
+	* testsuite/libstdc++-dg/conformance.exp: Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/bind/all_bound.cc: Likewise.
+	* testsuite/tr1/3_function_objects/bind/nested.cc: Likewise.
+	* testsuite/tr1/3_function_objects/bind/placeholders.cc: Likewise.
+	* testsuite/tr1/3_function_objects/bind/ref.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/1.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/2.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/3.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/4.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/5.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/6.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/7.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/8.cc: Likewise.
+	* testsuite/tr1/3_function_objects/function/9.cc: Likewise.
+	* testsuite/tr1/3_function_objects/headers/functional/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/mem_fn.cc: Likewise.
+	* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/3_function_objects/result_of.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/add_const/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/add_cv/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/add_pointer/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/add_reference/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/add_volatile/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/aligned_storage/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/alignment_of/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/extent/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_abstract/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_array/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_base_of/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_class/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_compound/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_const/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_convertible/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_empty/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_enum/24808.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_enum/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_floating_point/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_function/24808.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_function/35637.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_function/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_fundamental/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_integral/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_object/24808.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_object/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pod/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pointer/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_reference/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_same/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_scalar/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_signed/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_union/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_unsigned/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_void/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_volatile/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/rank/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_const/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_cv/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_extent/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_pointer/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_reference/value.cc: Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_volatile/value.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/mt19937.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux3.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux4.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range_neg.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc:
+	Likewise.
+	* testsuite/tr1/5_numerical_facilities/special_functions/testcase.h:
+	Likewise.
+	* testsuite/tr1/6_containers/array/capacity/empty.cc: Likewise.
+	* testsuite/tr1/6_containers/array/capacity/max_size.cc: Likewise.
+	* testsuite/tr1/6_containers/array/capacity/size.cc: Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/greater.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/less.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/element_access/back.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/data.cc: Likewise.
+	* testsuite/tr1/6_containers/array/element_access/front.cc: Likewise.
+	* testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/assign.cc: Likewise.
+	* testsuite/tr1/6_containers/array/requirements/contiguous.cc: Likewise.
+	* testsuite/tr1/6_containers/array/requirements/member_swap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/get.cc: Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/hash/24799.cc: Likewise.
+	* testsuite/tr1/6_containers/hash/operators/size_t.cc: Likewise.
+	* testsuite/tr1/6_containers/hash/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/headers/array/synopsis.cc: Likewise.
+	* testsuite/tr1/6_containers/headers/functional/synopsis.cc: Likewise.
+	* testsuite/tr1/6_containers/headers/tuple/synopsis.cc: Likewise.
+	* testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/assignment.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/cons/constructor.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/23978.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/element_access/get.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/tuple_element.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/tuple_size.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/24064.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/find/map1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/insert/map_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/insert/map_single.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/swap/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_map/swap/2.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/swap/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/swap/2.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/24054.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/swap/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/swap/2.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/23053.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/23465.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/26127.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/26132.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/erase/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/find/set1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/insert/set_range.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/insert/set_single.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/swap/1.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_set/swap/2.cc: Likewise.
+	* testsuite/tr1/6_containers/utility/19535.cc: Likewise.
+	* testsuite/tr1/6_containers/utility/pair.cc: Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_extended.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc:
+	Likewise.
+	* testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc:
+	Likewise.
+	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/overloads.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/templates.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/complex/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_float.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdio/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cwctype/functions.cc: Likewise.
+	* testsuite/tr1/headers/all.cc: Likewise.
+	* testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc: Likewise.
+	* testsuite/tr1/headers/using_namespace_std_tr1.cc: Likewise.
+	* testsuite/util/testsuite_shared.cc: Likewise.
+	* scripts/extract_symvers: Likewise.  Remove runtime exception.
+	* testsuite/17_intro/headers/all.cc: Likewise.
+	* testsuite/17_intro/headers/all_c++200x_compatibility.cc: Likewise.
+	* testsuite/17_intro/headers/all_pedantic_errors.cc: Likewise.
+	* testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/conditional/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/decay/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+	* testsuite/20_util/enable_if/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/forward/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/has_nothrow_copy_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/has_nothrow_default_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/has_trivial_copy_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/has_trivial_default_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/identity/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_integral/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_signed/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/make_signed/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/move/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/pair/moveable.cc: Likewise.
+	* testsuite/20_util/pair/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/pair/swap.cc: Likewise.
+	* testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/20_util/reference_wrapper/24803.cc: Likewise.
+	* testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/tuple/moveable.cc: Likewise.
+	* testsuite/20_util/tuple/moveable2.cc: Likewise.
+	* testsuite/20_util/tuple/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/tuple/swap.cc: Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/21674.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/char/empty.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/init-list.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/types/23767.cc: Likewise.
+	* testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/ctype/cons/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/2.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/3.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/9858.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/11740.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/19955.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/2.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/ctype/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/ctype/scan/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/ctype_base/11844.cc: Likewise.
+	* testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/array/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/array/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/deque/14340.cc: Likewise.
+	* testsuite/23_containers/deque/capacity/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/check_construct_destroy.cc: Likewise.
+	* testsuite/23_containers/deque/cons/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/init-list.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/erase/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/modifiers/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/moveable.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/comparable.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/moveable.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/list/14340.cc: Likewise.
+	* testsuite/23_containers/list/23781.cc: Likewise.
+	* testsuite/23_containers/list/check_construct_destroy.cc: Likewise.
+	* testsuite/23_containers/list/init-list.cc: Likewise.
+	* testsuite/23_containers/list/moveable.cc: Likewise.
+	* testsuite/23_containers/list/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/list/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/map/14340.cc: Likewise.
+	* testsuite/23_containers/map/23781.cc: Likewise.
+	* testsuite/23_containers/map/init-list.cc: Likewise.
+	* testsuite/23_containers/map/moveable.cc: Likewise.
+	* testsuite/23_containers/map/operations/1.cc: Likewise.
+	* testsuite/23_containers/map/operations/31440.cc: Likewise.
+	* testsuite/23_containers/map/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/map/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/map/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/map/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/map/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/14340.cc: Likewise.
+	* testsuite/23_containers/multimap/23781.cc: Likewise.
+	* testsuite/23_containers/multimap/init-list.cc: Likewise.
+	* testsuite/23_containers/multimap/moveable.cc: Likewise.
+	* testsuite/23_containers/multimap/operations/1.cc: Likewise.
+	* testsuite/23_containers/multimap/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/multiset/14340.cc: Likewise.
+	* testsuite/23_containers/multiset/23781.cc: Likewise.
+	* testsuite/23_containers/multiset/init-list.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/insert/2.cc: Likewise.
+	* testsuite/23_containers/multiset/moveable.cc: Likewise.
+	* testsuite/23_containers/multiset/operations/1.cc: Likewise.
+	* testsuite/23_containers/multiset/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/multiset/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/priority_queue/moveable.cc: Likewise.
+	* testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/queue/moveable.cc: Likewise.
+	* testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/set/14340.cc: Likewise.
+	* testsuite/23_containers/set/23781.cc: Likewise.
+	* testsuite/23_containers/set/check_construct_destroy.cc: Likewise.
+	* testsuite/23_containers/set/init-list.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/16728.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/insert/1.cc: Likewise.
+	* testsuite/23_containers/set/moveable.cc: Likewise.
+	* testsuite/23_containers/set/operations/1.cc: Likewise.
+	* testsuite/23_containers/set/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/set/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/set/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/set/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/init-list.cc: Likewise.
+	* testsuite/23_containers/unordered_map/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_map/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/cliterators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/requirements/debug_mode.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/init-list.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/cliterators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/init-list.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/cliterators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/init-list.cc: Likewise.
+	* testsuite/23_containers/unordered_set/moveable.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/requirements/cliterators.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/requirements/debug_mode.cc:
+	Likewise.
+	* testsuite/23_containers/vector/14340.cc: Likewise.
+	* testsuite/23_containers/vector/26412-1.cc: Likewise.
+	* testsuite/23_containers/vector/26412-2.cc: Likewise.
+	* testsuite/23_containers/vector/bool/requirements/citerators.cc:
+	Likewise.
+	* testsuite/23_containers/vector/capacity/reserve/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/check_construct_destroy.cc: Likewise.
+	* testsuite/23_containers/vector/cons/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/citerators.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/data_access.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/element.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc:
+	Likewise.
+	* testsuite/23_containers/vector/ext_pointer/resize.cc: Likewise.
+	* testsuite/23_containers/vector/ext_pointer/types/1.cc: Likewise.
+	* testsuite/23_containers/vector/init-list.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/erase/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/insert/1.cc: Likewise.
+	* testsuite/23_containers/vector/modifiers/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/citerators.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/partial_specialization/1.cc:
+	Likewise.
+	* testsuite/23_containers/vector/resize/moveable.cc: Likewise.
+	* testsuite/23_containers/vector/types/23767.cc: Likewise.
+	* testsuite/23_containers/vector/zero_sized_allocations.cc: Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc:
+	Likewise.
+	* testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc:
+	Likewise.
+	* testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/swap/dr809.cc: Likewise.
+	* testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/cmath/19322.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/25913.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/37582.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c++.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/cmath/c_math_dynamic.cc: Likewise.
+	* testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise.
+	* testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc:
+	Likewise.
+	* testsuite/26_numerics/slice_array/array_assignment.cc: Likewise.
+	* testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/26_numerics/slice_array/requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/valarray/27867.cc: Likewise.
+	* testsuite/26_numerics/valarray/30416.cc: Likewise.
+	* testsuite/26_numerics/valarray/33084.cc: Likewise.
+	* testsuite/26_numerics/valarray/algo.cc: Likewise.
+	* testsuite/26_numerics/valarray/const_bracket.cc: Likewise.
+	* testsuite/26_numerics/valarray/init-list.cc: Likewise.
+	* testsuite/26_numerics/valarray/name_lookup.cc: Likewise.
+	* testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/26_numerics/valarray/requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/valarray/subset_assignment.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/char/3599.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sync/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_fstream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_ifstream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_ios/clear/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/cons/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ios/cons/char/3.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/exceptions/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ios/imbue/14072.cc: Likewise.
+	* testsuite/27_io/basic_ios/locales/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_ios/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_iostream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/char/9826.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/getline/char/4.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/pod/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/sentry/wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_istringstream/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_ofstream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/sentry/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostringstream/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/char/2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/char/3599.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/requirements/base_classes.cc:
+	Likewise.
+	* testsuite/27_io/basic_streambuf/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sync/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/char/3599.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sync/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/27_io/basic_stringstream/requirements/typedefs.cc: Likewise.
+	* testsuite/27_io/fpos/14252.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/1.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/2.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/3.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/5.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/6.cc: Likewise.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Likewise.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+	* testsuite/27_io/ios_base/state/1.cc: Likewise.
+	* testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc:
+	Likewise.
+	* testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Likewise.
+	* testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc: Likewise.
+	* testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
+	* testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
+	Likewise.
+	* testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.
+	* testsuite/27_io/ios_base/types/seekdir/case_label.cc: Likewise.
+	* testsuite/27_io/manipulators/adjustfield/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/adjustfield/char/2.cc: Likewise.
+	* testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc: Likewise.
+	* testsuite/27_io/manipulators/basefield/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/basefield/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/objects/char/3045.cc: Likewise.
+	* testsuite/27_io/objects/char/3647.cc: Likewise.
+	* testsuite/27_io/objects/char/5268.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/3045.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/3647.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/5268.cc: Likewise.
+	* testsuite/28_regex/init-list.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/copy_list.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/default.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/direct_list.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/single_value.cc: Likewise.
+	* testsuite/29_atomics/atomic/operators/integral_assignment.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic/operators/integral_conversion.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/default.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/single_value.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_address/requirements/trivial.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/cons/aggregate.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/cons/default.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Likewise.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Likewise.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/copy_list.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/default.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/direct_list.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/single_value.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/decrement.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/increment.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc:
+	Likewise.
+	* testsuite/30_threads/call_once/call_once1.cc: Likewise.
+	* testsuite/30_threads/call_once/once_flag.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
+	* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
+	* testsuite/30_threads/condition_variable/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+	* testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
+	* testsuite/30_threads/mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/mutex/requirements/standard_layout.cc: Likewise.
+	* testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
+	Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/this_thread/1.cc: Likewise.
+	* testsuite/30_threads/this_thread/2.cc: Likewise.
+	* testsuite/30_threads/this_thread/3.cc: Likewise.
+	* testsuite/30_threads/this_thread/4.cc: Likewise.
+	* testsuite/30_threads/thread/cons/1.cc: Likewise.
+	* testsuite/30_threads/thread/cons/2.cc: Likewise.
+	* testsuite/30_threads/thread/cons/3.cc: Likewise.
+	* testsuite/30_threads/thread/cons/4.cc: Likewise.
+	* testsuite/30_threads/thread/cons/5.cc: Likewise.
+	* testsuite/30_threads/thread/cons/6.cc: Likewise.
+	* testsuite/30_threads/thread/cons/7.cc: Likewise.
+	* testsuite/30_threads/thread/cons/8.cc: Likewise.
+	* testsuite/30_threads/thread/cons/9.cc: Likewise.
+	* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
+	* testsuite/30_threads/thread/members/1.cc: Likewise.
+	* testsuite/30_threads/thread/members/2.cc: Likewise.
+	* testsuite/30_threads/thread/members/3.cc: Likewise.
+	* testsuite/30_threads/thread/members/4.cc: Likewise.
+	* testsuite/30_threads/thread/members/5.cc: Likewise.
+	* testsuite/30_threads/thread/swap/1.cc: Likewise.
+	* testsuite/30_threads/thread/swap/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/requirements/standard_layout.cc:
+	Likewise.
+	* testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
+	* testsuite/30_threads/try_lock/1.cc: Likewise.
+	* testsuite/30_threads/try_lock/2.cc: Likewise.
+	* testsuite/30_threads/try_lock/3.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
+	* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
+	* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
+	* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
+	* testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise.
+	* testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
+	* testsuite/backward/hash_map/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/backward/hash_set/check_construct_destroy.cc: Likewise.
+	* testsuite/backward/hash_set/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/ext/array_allocator/1.cc: Likewise.
+	* testsuite/ext/array_allocator/2.cc: Likewise.
+	* testsuite/ext/array_allocator/3.cc: Likewise.
+	* testsuite/ext/ext_pointer/1.cc: Likewise.
+	* testsuite/ext/ext_pointer/1_neg.cc: Likewise.
+	* testsuite/ext/pb_ds/example/assoc_container_traits.cc: Likewise.
+	* testsuite/ext/pb_ds/example/basic_map.cc: Likewise.
+	* testsuite/ext/pb_ds/example/basic_multimap.cc: Likewise.
+	* testsuite/ext/pb_ds/example/basic_multiset.cc: Likewise.
+	* testsuite/ext/pb_ds/example/basic_priority_queue.cc: Likewise.
+	* testsuite/ext/pb_ds/example/basic_set.cc: Likewise.
+	* testsuite/ext/pb_ds/example/erase_if.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_find_neg.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_initial_size.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_load_set_change.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_mod.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_resize.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_shift_mask.cc: Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_container_traits.cc:
+	Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc: Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_erase_if.cc: Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_split_join.cc: Likewise.
+	* testsuite/ext/pb_ds/example/priority_queue_xref.cc: Likewise.
+	* testsuite/ext/pb_ds/example/ranged_hash.cc: Likewise.
+	* testsuite/ext/pb_ds/example/store_hash.cc: Likewise.
+	* testsuite/ext/pb_ds/example/tree_intervals.cc: Likewise.
+	* testsuite/ext/pb_ds/example/tree_join.cc: Likewise.
+	* testsuite/ext/pb_ds/example/tree_order_statistics.cc: Likewise.
+	* testsuite/ext/pb_ds/example/tree_order_statistics_join.cc: Likewise.
+	* testsuite/ext/pb_ds/example/trie_dna.cc: Likewise.
+	* testsuite/ext/pb_ds/example/trie_prefix_search.cc: Likewise.
+	* testsuite/ext/pb_ds/example/trie_split.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/associative_containers.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc:
+	Likewise.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/priority_queues.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Likewise.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Likewise.
+	* testsuite/ext/pod_char_traits.cc: Likewise.
+	* testsuite/ext/slist/23781.cc: Likewise.
+	* testsuite/ext/slist/check_construct_destroy.cc: Likewise.
+	* testsuite/ext/slist/requirements/explicit_instantiation.cc: Likewise.
+	* testsuite/ext/vstring/init-list.cc: Likewise.
+	* testsuite/ext/vstring/moveable.cc: Likewise.
+	* testsuite/ext/vstring/requirements/citerators.cc: Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/1.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/2.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc:
+	Likewise.
+	* testsuite/ext/vstring/types/23767.cc: Likewise.
+	* testsuite/performance/21_strings/string_append.cc: Likewise.
+	* testsuite/performance/21_strings/string_append_2.cc: Likewise.
+	* testsuite/performance/21_strings/string_cons_input_iterator.cc:
+	Likewise.
+	* testsuite/performance/21_strings/string_copy_cons_and_dest.cc:
+	Likewise.
+	* testsuite/performance/21_strings/string_find.cc: Likewise.
+	* testsuite/performance/22_locale/is_wchar_t.cc: Likewise.
+	* testsuite/performance/22_locale/narrow_widen_char.cc: Likewise.
+	* testsuite/performance/22_locale/narrow_widen_wchar_t.cc: Likewise.
+	* testsuite/performance/22_locale/wchar_t_in.cc: Likewise.
+	* testsuite/performance/22_locale/wchar_t_length.cc: Likewise.
+	* testsuite/performance/22_locale/wchar_t_out.cc: Likewise.
+	* testsuite/performance/23_containers/copy_construct/vector_bool.cc:
+	Likewise.
+	* testsuite/performance/23_containers/create/map.cc: Likewise.
+	* testsuite/performance/23_containers/create_from_sorted/set.cc:
+	Likewise.
+	* testsuite/performance/23_containers/create_sort/list.cc: Likewise.
+	* testsuite/performance/23_containers/find/map.cc: Likewise.
+	* testsuite/performance/23_containers/index/map.cc: Likewise.
+	* testsuite/performance/23_containers/insert/associative.cc: Likewise.
+	* testsuite/performance/23_containers/insert/sequence.cc: Likewise.
+	* testsuite/performance/23_containers/insert/unordered_map_array.cc:
+	Likewise.
+	* testsuite/performance/23_containers/insert_erase/associative.cc:
+	Likewise.
+	* testsuite/performance/23_containers/insert_from_sorted/set.cc:
+	Likewise.
+	* testsuite/performance/23_containers/producer_consumer/associative.cc:
+	Likewise.
+	* testsuite/performance/23_containers/producer_consumer/sequence.cc:
+	Likewise.
+	* testsuite/performance/23_containers/resize/vector_bool.cc: Likewise.
+	* testsuite/performance/23_containers/sort_search/list.cc: Likewise.
+	* testsuite/performance/25_algorithms/copy_streambuf_iterators.cc:
+	Likewise.
+	* testsuite/performance/25_algorithms/find_istreambuf_iterators.cc:
+	Likewise.
+	* testsuite/performance/25_algorithms/lexicographical_compare.cc:
+	Likewise.
+	* testsuite/performance/25_algorithms/nth_element_worst_case.cc:
+	Likewise.
+	* testsuite/performance/25_algorithms/search_n.cc: Likewise.
+	* testsuite/performance/26_numerics/complex_norm.cc: Likewise.
+	* testsuite/performance/26_numerics/valarray_gslice_to_index.cc:
+	Likewise.
+	* testsuite/performance/27_io/cout_insert_int.cc: Likewise.
+	* testsuite/performance/27_io/filebuf_copy.cc: Likewise.
+	* testsuite/performance/27_io/filebuf_sgetn_unbuf.cc: Likewise.
+	* testsuite/performance/27_io/filebuf_sputc.cc: Likewise.
+	* testsuite/performance/27_io/filebuf_sputn_unbuf.cc: Likewise.
+	* testsuite/performance/27_io/fmtflags_manipulators.cc: Likewise.
+	* testsuite/performance/27_io/fstream_seek_write.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_extract_chars.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_extract_float.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_extract_int.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_getline-2.cc: Likewise.
+	* testsuite/performance/27_io/ifstream_getline.cc: Likewise.
+	* testsuite/performance/27_io/ofstream_insert_float.cc: Likewise.
+	* testsuite/performance/27_io/ofstream_insert_int.cc: Likewise.
+	* testsuite/performance/27_io/stringbuf_overflow.cc: Likewise.
+	* testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing.hpp:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing.hpp:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing_large.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.hpp:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/random_int_find_timing.cc: Likewise.
+	* testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/text_find_timing.cc: Likewise.
+	* testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc:
+	Likewise.
+	* testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Likewise.
+	* testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc: Likewise.
+	* testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/array/requirements/typedefs.cc: Likewise.
+	* testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc:
+	Likewise.
+	* testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc:
+	Likewise.
+	* testsuite/util/common_type/assoc/common_type.hpp: Likewise.
+	* testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Likewise.
+	* testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/assoc/native_set.hpp: Likewise.
+	* testsuite/util/common_type/assoc/string_form.hpp: Likewise.
+	* testsuite/util/common_type/assoc/template_policy.hpp: Likewise.
+	* testsuite/util/common_type/priority_queue/common_type.hpp: Likewise.
+	* testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp:
+	Likewise.
+	* testsuite/util/common_type/priority_queue/string_form.hpp: Likewise.
+	* testsuite/util/hash_fn/dna_str_limit.hpp: Likewise.
+	* testsuite/util/hash_fn/limit_string_hash_fn.hpp: Likewise.
+	* testsuite/util/hash_fn/string_hash_fn.hpp: Likewise.
+	* testsuite/util/hash_fn/string_ranged_hash_fn.hpp: Likewise.
+	* testsuite/util/hash_fn/string_ranged_probe_fn.hpp: Likewise.
+	* testsuite/util/io/illegal_input_error.hpp: Likewise.
+	* testsuite/util/io/prog_bar.cc: Likewise.
+	* testsuite/util/io/prog_bar.hpp: Likewise.
+	* testsuite/util/io/text_populate.hpp: Likewise.
+	* testsuite/util/io/verified_cmd_line_input.cc: Likewise.
+	* testsuite/util/io/verified_cmd_line_input.hpp: Likewise.
+	* testsuite/util/io/xml.hpp: Likewise.
+	* testsuite/util/io/xml_test_formatter.hpp: Likewise.
+	* testsuite/util/native_type/native_hash_map.hpp: Likewise.
+	* testsuite/util/native_type/native_hash_multimap.hpp: Likewise.
+	* testsuite/util/native_type/native_hash_set.hpp: Likewise.
+	* testsuite/util/native_type/native_hash_tag.hpp: Likewise.
+	* testsuite/util/native_type/native_map.hpp: Likewise.
+	* testsuite/util/native_type/native_multimap.hpp: Likewise.
+	* testsuite/util/native_type/native_priority_queue.hpp: Likewise.
+	* testsuite/util/native_type/native_set.hpp: Likewise.
+	* testsuite/util/native_type/native_tree_tag.hpp: Likewise.
+	* testsuite/util/performance/assoc/mem_usage/erase_test.hpp: Likewise.
+	* testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/multimap_common_type.hpp: Likewise.
+	* testsuite/util/performance/assoc/timing/common_type.hpp: Likewise.
+	* testsuite/util/performance/assoc/timing/find_test.hpp: Likewise.
+	* testsuite/util/performance/assoc/timing/insert_test.hpp: Likewise.
+	* testsuite/util/performance/assoc/timing/multimap_find_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/timing/multimap_insert_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/timing/subscript_find_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/timing/subscript_insert_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp:
+	Likewise.
+	* testsuite/util/performance/assoc/timing/tree_split_join_test.hpp:
+	Likewise.
+	* testsuite/util/performance/io/xml_formatter.hpp: Likewise.
+	* testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
+	Likewise.
+	* testsuite/util/performance/priority_queue/timing/join_test.hpp:
+	Likewise.
+	* testsuite/util/performance/priority_queue/timing/modify_test.hpp:
+	Likewise.
+	* testsuite/util/performance/priority_queue/timing/push_pop_test.hpp:
+	Likewise.
+	* testsuite/util/performance/priority_queue/timing/push_test.hpp:
+	Likewise.
+	* testsuite/util/performance/time/elapsed_timer.cc: Likewise.
+	* testsuite/util/performance/time/elapsed_timer.hpp: Likewise.
+	* testsuite/util/performance/time/timing_test_base.hpp: Likewise.
+	* testsuite/util/regression/basic_type.hpp: Likewise.
+	* testsuite/util/regression/common_type.hpp: Likewise.
+	* testsuite/util/regression/rand/assoc/container_rand_regression_test.h:
+	Likewise.
+	* testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc:
+	Likewise.
+	* testsuite/util/regression/rand/assoc/rand_regression_test.hpp:
+	Likewise.
+	* testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h:
+	Likewise.
+	* testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc:
+	Likewise.
+	* testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp:
+	Likewise.
+	* testsuite/util/regression/rand/xml_formatter.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/get_set_load_trait.hpp:
+	Likewise.
+	* testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp:
+	Likewise.
+	* testsuite/util/regression/trait/assoc/native_type_trait.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/node_update_trait.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/resize_trait.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/to_string.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/trait.hpp: Likewise.
+	* testsuite/util/regression/trait/assoc/type_trait.hpp: Likewise.
+	* testsuite/util/regression/trait/erase_if_fn.hpp: Likewise.
+	* testsuite/util/regression/trait/priority_queue/trait.hpp: Likewise.
+	* testsuite/util/statistic/result_recorder.hpp: Likewise.
+	* testsuite/util/statistic/sample_mean.hpp: Likewise.
+	* testsuite/util/statistic/sample_mean_confidence_checker.hpp: Likewise.
+	* testsuite/util/statistic/sample_variance.hpp: Likewise.
+	* testsuite/util/testsuite_abi.cc: Likewise.
+	* testsuite/util/testsuite_abi.h: Likewise.
+	* testsuite/util/testsuite_abi_check.cc: Likewise.
+	* testsuite/util/testsuite_allocator.cc: Likewise.
+	* testsuite/util/testsuite_allocator.h: Likewise.
+	* testsuite/util/testsuite_api.h: Likewise.
+	* testsuite/util/testsuite_character.cc: Likewise.
+	* testsuite/util/testsuite_character.h: Likewise.
+	* testsuite/util/testsuite_common_types.h: Likewise.
+	* testsuite/util/testsuite_error.h: Likewise.
+	* testsuite/util/testsuite_hooks.cc: Likewise.
+	* testsuite/util/testsuite_hooks.h: Likewise.
+	* testsuite/util/testsuite_io.h: Likewise.
+	* testsuite/util/testsuite_iterators.h: Likewise.
+	* testsuite/util/testsuite_performance.h: Likewise.
+	* testsuite/util/testsuite_rng.h: Likewise.
+	* testsuite/util/testsuite_rvalref.h: Likewise.
+	* testsuite/util/testsuite_tr1.h: Likewise.
+	* testsuite/util/thread/all.h: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc:
+	Likewise.
+	* testsuite/26_numerics/random/ranlux24_base.cc: Likewise.
+	* testsuite/26_numerics/random/minstd_rand.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/default.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/range.cc: Likewise.
+	* testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/cons/range.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/parms_neg.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mt19937.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mt19937_64.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/normal_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/ranlux24.cc: Likewise.
+	* testsuite/26_numerics/random/ranlux48_base.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc:
+	Likewise.
+	* testsuite/26_numerics/random/knuth_b.cc: Likewise.
+	* testsuite/26_numerics/random/minstd_rand0.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/default_random_engine.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc:
+	Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/parms_neg.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/ranlux48.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc:
+	Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc:
+	Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
+	Likewise.
+	* testsuite/26_numerics/random/random_device/requirements/typedefs.cc:
+	Likewise.
+	* testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
+	* testsuite/26_numerics/random/random_device/cons/default.cc: Likewise.
+	* testsuite/backward/hash_map/25896.cc: Likewise.
+	* testsuite/backward/hash_set/25896.cc: Likewise.
+
+2009-04-08  Ian Lance Taylor  
+
+	* include/backward/hashtable.h (erase): Correctly handle erasing a
+	reference to an entry in the hash table.
+	* testsuite/backward/hash_map/25896.cc: New.
+	* testsuite/backward/hash_set/25896.cc: New.
+
+2009-04-08  Adam Nemet  
+
+	* config/abi/post/mips64-linux-gnu/baseline_symbols.txt: Regenerate.
+	* config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt: New file.
+
+2009-04-06  Benjamin Kosnik  
+
+	* include/Makefile.am (${pch1a_output}): Use gnu++0x flags instead
+	of debug.
+	* include/Makefile.in: Regenerate.
+	* include/precompiled/stdc++.h: Add.
+
+2009-04-06  Benjamin Kosnik  
+
+	* include/bits/random.h: Adjust doxygen markup.
+	* doc/doxygen/user.cfg.in: Prefer C++0x to tr1 includes.
+
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/serialize.cc: Use typedefs.
+
+2009-04-06  Andrew Stubbs  
+
+	* config/cpu/sh/atomicity.h: Put the SH4A specific functions in the
+	__gnu_cxx namespace.  Remove "static inline".
+
+2009-04-06  Paolo Carlini  
+
+	* include/bits/random.tcc (linear_congruential_engine<>::
+	seed(seed_seq&)): Fix typo in last fix for __m == 0.
+
+2009-04-06  Paolo Carlini  
+
+	* include/bits/random.h (operator==): Mark all inline.
+	(mersenne_twister_engine): Enable #if 0 checks.
+
+	* include/bits/random.h: Formatting tweaks.
+
+2009-04-05  Paolo Carlini  
+
+	* include/bits/random.tcc (piecewise_linear_distribution<>::
+	operator()(_UniformRandomNumberGenerator&, const param_type&)):
+	Remove spurious closed parenthesis.
+
+2009-04-05  Paolo Carlini  
+
+	PR libstdc++/39644 (partial)
+	* include/bits/random.tcc (linear_congruential_engine<>::
+	seed(seed_seq&), independent_bits_engine<>::operator(),
+	generate_canonical(_UniformRandomNumberGenerator&)): Avoid log2l.
+
+2009-04-04  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/random.h (struct _ShiftMin1): Fix small typo and
+	thinko.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	default.cc: Enable.
+
+2009-04-04  Paolo Carlini  
+
+	PR libstdc++/39629 (partial)
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_move.cc: Use uint_fast64_t instead of unsigned long.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed1.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed2.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_copy.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	requirements/typedefs.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/
+	operators/serialize.cc: Likewise.
+	* testsuite/26_numerics/random/mt19937_64.cc: Use ull.
+
+2009-04-03  Paolo Carlini  
+
+	* include/tr1_impl/random: Remove, empty.
+	* include/tr1_impl/random.tcc: Likewise.
+
+	* include/std/random: Minor clean-ups, formatting fixes, adjust
+	copyright years.
+	* include/bits/random.tcc: Likewise.
+	* include/bits/random.h: Likewise.
+	* include/tr1/random: Likewise.
+	* include/tr1/random.tcc: Likewise.
+	* include/tr1/random.h: Likewise.
+
+2009-04-02  Benjamin Kosnik  
+
+	* doc/xml/api.xml: Add gcc-4.4.0 doxygen link.
+	* doc/html/api.html: Regenerate.
+
+2009-04-02  Benjamin Kosnik  
+
+	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
+	Change to mersenne_twister_engine, add same defaults as
+	mersenne_twister_engine/cons/default.cc.
+	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Same.
+
+	* include/bits/random.tcc (seed_seq::seed_seq): Uglify parameter
+	to __il.
+	* include/bits/random.h (mersenne_twister_engine): Qualify
+	_ShiftMin1 with namespace __detail.
+	(__detail::_ShiftMin1): Use __gnu_cxx::__numeric_traits::max until
+	constexpr std::numeric_limits::max() can be used.
+	(mersenne_twister_engine): Split apart static asserts into one
+	assert per message. Temporarily disable the last three.
+
+2009-04-02  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/Makefile.am: Update to N2836. Modified for new random headers.
+	* include/Makefile.in: Ditto.
+	* include/tr1_impl/random: Moved to tr1/random.h
+	* include/tr1_impl/random.tcc: Moved to tr1
+	* include/tr1/random: Just point to moved tr1 random headers.
+	* include/tr1/random.tcc: Moved from tr1_impl.
+	* include/tr1/random.h: Moved from tr1_impl/random.
+	* include/std/random: Modified to point to std random headers.
+	* include/bits/random.tcc: New implementation of std random facilities.
+	* include/bits/random.h: Ditto.
+	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc: Changed.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/
+	non_uint_neg.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	base_move.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	base_copy.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	seed_seq.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_move.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_copy.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed_seq.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	base_move.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed1.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed2.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	base_copy.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	seed_seq.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/operators/
+	equal.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/operators/
+	serialize.cc
+	* testsuite/26_numerics/random/mt19937.cc: New.
+	* testsuite/26_numerics/random/mt19937_64.cc: New.
+	* testsuite/26_numerics/random/minstd_rand.cc: New.
+	* testsuite/26_numerics/random/minstd_rand0.cc: New.
+	* testsuite/26_numerics/random/ranlux24_base.cc: New.
+	* testsuite/26_numerics/random/ranlux48_base.cc: New.
+	* testsuite/26_numerics/random/ranlux24.cc: New.
+	* testsuite/26_numerics/random/ranlux48.cc: New.
+	* testsuite/26_numerics/random/knuth_b.cc: New.
+	* testsuite/26_numerics/random/default_random_engine.cc: New.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/chi_squared_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/chi_squared_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/normal_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/normal_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/normal_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/normal_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/seed_seq/cons/range.cc: New.
+	* testsuite/26_numerics/random/seed_seq/cons/default.cc: New.
+	* testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc: New.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/
+	parms_neg.cc: New.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/uniform_int_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/uniform_int_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	parms_neg.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/poisson_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/poisson_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/poisson_distribution/requirements/
+	typedefs.cc
+	* testsuite/26_numerics/random/poisson_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/bernoulli_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/bernoulli_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/bernoulli_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	range.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	initlist.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/cons/
+	num_xbound_fun.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/weibull_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/weibull_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/weibull_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/weibull_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/negative_binomial_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/negative_binomial_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	requirements/typedefs.cc: New.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	operators/serialize.cc: New.
+	* testsuite/26_numerics/random/cauchy_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/cauchy_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/cauchy_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/gamma_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/gamma_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/gamma_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/gamma_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/fisher_f_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/fisher_f_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/fisher_f_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/
+	serialize.cc: New.
+
+	* testsuite/26_numerics/random/exponential_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/exponential_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/exponential_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/exponential_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/lognormal_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/lognormal_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/lognormal_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/binomial_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/binomial_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/binomial_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/binomial_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/random_device/cons/
+	token.cc: New.
+	* testsuite/26_numerics/random/random_device/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/random_device/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/extreme_value_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/extreme_value_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/extreme_value_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/extreme_value_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	range.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	num_xbound_fun.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/
+	initlist_fun.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	requirements/typedefs.cc: New.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/student_t_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/student_t_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/student_t_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/student_t_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/geometric_distribution/cons/
+	parms.cc: New.
+	* testsuite/26_numerics/random/geometric_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/geometric_distribution/requirements/
+	typedefs.cc: New.
+	* testsuite/26_numerics/random/geometric_distribution/operators/
+	serialize.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	range.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	default.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	num_xbound_fun.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/
+	initlist_fun.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	requirements/typedefs.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/serialize.cc: New.
+
+2009-04-02  Dodji Seketeli  
+
+	* include/ext/bitmap_allocator.h: The typedefs should be made public
+	if we want them to be accessible. This has been revealed by the patch
+	that fixes PR c++/26693 in g++.
+
+2009-04-02  Jakub Jelinek  
+
+	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
+	Regenerated.
+	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
+	Regenerated.
+	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/s390-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Regenerated.
+	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt:
+	Regenerated.
+	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2009-03-31  Jason Merrill  
+
+	* libsupc++/unwind-cxx.h: Correct __cxa_call_terminate prototype.
+
+	PR libstdc++/39310
+	* include/tr1_impl/type_traits (is_function): Add partial
+	specializations with function cv-quals.
+	(__is_function_helper): Remove.
+	(is_member_pointer): Don't define in terms of is_member_*_pointer.
+
+2009-03-30  Ian Lance Taylor  
+
+	* include/backward/hashtable.h (clear): Return quickly if the
+	table is empty.
+
+2009-03-27  Ian Lance Taylor  
+
+	* include/backward/hashtable.h (_S_num_primes): Change to 29.
+	(__stl_prime_list): Add 5 at the start of the list.
+
+2009-03-25  Edward Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/std/fstream (basic_filebuf<>::open(const std::string&,
+	ios_base::openmode), basic_ifstream<>::basic_ifstream(const
+	std::string&, ios_base::openmode), basic_ifstream<>::
+	open(const std::string&, ios_base::openmode), basic_ofstream<>::
+	basic_ofstream(const std::string&, ios_base::openmode),
+	basic_ofstream<>::open(const std::string&, ios_base::openmode),
+	basic_fstream<>::basic_fstream(const std::string&, ios_base::openmode),
+	basic_fstream<>::open(const std::string&, ios_base::openmode)):
+	Add in C++0x mode.
+	* testsuite/27_io/basic_ofstream/open/char/2.cc: New.
+	* testsuite/27_io/basic_ofstream/cons/char/2.cc: Likewise.
+	* testsuite/27_io/basic_fstream/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_fstream/cons/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/open/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ifstream/cons/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/5.cc: Likewise.
+
+2009-03-25  Paolo Carlini  
+
+	* testsuite/27_io/basic_ofstream/cons/char/2.cc: Rename to...
+	* testsuite/27_io/basic_ofstream/cons/char/1.cc: ... this.
+	* testsuite/27_io/basic_fstream/cons/3.cc: Rename to...
+	* testsuite/27_io/basic_fstream/cons/1.cc: ... this.
+
+2009-03-25  Paolo Carlini  
+
+	* include/bits/forward_list.h (_Fwd_list_node_base<>::
+	_M_transfer_after, _M_reverse_after): Move out of line...
+	* include/bits/forward_list.tcc: ... here.
+	(forward_list<>::reverse): Move inline...
+	* include/bits/forward_list.h: ... here; minor cosmetic changes.
+
+2009-03-22  Mark Mitchell  
+
+	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/
+	28277.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc:
+	Likewise.
+	* testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc:
+	Likewise.
+
+2009-03-22  Mark Mitchell  
+
+	* testsuite/25_algorithms/search_n/iterator.cc: Update copyright
+	year(s).
+	* testsuite/25_algorithms/heap/moveable.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc:
+	Likewise.
+	* testsuite/ext/vstring/inserters_extractors/char/28277.cc: Likewise.
+
+2009-03-22  Mark Mitchell  
+
+	* testsuite/25_algorithms/search_n/iterator.cc: Condition
+	iterations for simulators.
+	* testsuite/25_algorithms/heap/moveable.cc: Likewise.
+	* testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
+	Condition stream width for simulators.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc:
+	Likewise.
+	* testsuite/ext/vstring/inserters_extractors/char/28277.cc: Likewise.
+
+2009-03-17  Benjamin Kosnik  
+
+	* doc/xml/manual/appendix_contributing.xml: Add docbook style
+	sheet version information. Table-ize docbook element examples.
+	* doc/xml/manual/using.xml: Human-readable header
+	markup. Alphabetized. Add new headers.
+	* doc/html: Regenerate.
+
+2009-03-15  Paolo Carlini  
+
+	* doc/xml/faq.xml: Fix link to setup documentation.
+
+2009-03-14  Paolo Carlini  
+
+	* include/std/type_traits (__add_lvalue_reference_helper,
+	__add_rvalue_reference_helper): As an optimization, rewrite
+	condition (avoid is_function).
+
+2009-03-13  Paolo Carlini  
+
+	PR libstdc++/39405
+	* testsuite/20_util/shared_ptr/cons/39405.cc: New.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc: Likewise.
+
+2009-03-12  Benjamin Kosnik  
+
+	* testsuite/30_threads/condition_variable_any/native_handle/
+	typesizes.cc: Include tweaks.
+	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/condition_variable/native_handle/
+	typesizes.cc: Same.
+
+2009-03-11  Jonathan Wakely  
+
+	* include/bits/shared_ptr.h: Add include guards.
+	* include/tr1/shared_ptr.h: Likewise.
+
+2009-03-11  Jonathan Wakely  
+
+	* include/std/iostream: Fix doxygen link.
+	* include/bits/forward_list.h: Fix doxygen markup.
+	* include/ext/vstring.h: Escape backslash in doxygen comment.
+	* include/bits/basic_string.h: Likewise.
+
+2009-03-10  Paolo Carlini  
+
+	* doc/xml/faq.xml: Fix links to implementation status pages.
+
+2009-03-10  Paolo Carlini  
+
+	* include/std/complex (operator+(const complex<>&, const _Tp&),
+	operator+(const _Tp&, const complex<>&),
+	operator-(const complex<>&, const _Tp&),
+	operator-(const _Tp&, const complex<>&)): Do not assume real()
+	returns a reference (against DR 387).
+	* testsuite/26_numerics/complex/dr387_2.cc: New.
+
+2009-03-02  Benjamin Kosnik  
+
+	* testsuite/thread/pthread4.cc: Move...
+	* testsuite/21_strings/basic_string/pthread4.cc: ...here.
+	* testsuite/thread/pthread5.cc: Move...
+	* testsuite/23_containers/list/pthread5.cc: ...here.
+	* testsuite/thread/pthread6.cc: Move...
+	* testsuite/23_containers/map/pthread6.cc: ...here.
+	* testsuite/thread/pthread7-rope.cc: Move...
+	* testsuite/ext/rope/pthread7-rope.cc: ...here.
+	* testsuite/thread/guard.cc: Move...
+	* testsuite/18_support/pthread_guard.cc: ...here.
+	* testsuite/thread/18185.cc: Move...
+	* testsuite/21_strings/basic_string/pthread18185.cc: ...here.
+	* testsuite/thread/pthread1.cc: Move...
+	* testsuite/23_containers/list/pthread1.cc: ...here.
+	* testsuite/thread/pthread2.cc: Move...
+	* testsuite/27_io/basic_ofstream/pthread2.cc: ...here.
+	* testsuite/thread/pthread3.cc: Move...
+	* testsuite/27_io/basic_ostringstream/pthread3.cc: ...here.
+
+	* testsuite/libstdc++-dg/conformance.exp: Remove thread directory.
+	* testsuite/thread: Remove.
+
+2009-03-01  Ralf Wildenhues  
+
+	* configure: Regenerate.
+
+2009-02-23  Adam Nemet  
+
+	* testsuite/libstdc++-abi/abi.exp: Add multilib support.
+	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Remove MULTISUBDIR
+	from baseline_dir.
+	* configure: Regenerate.
+	* testsuite/Makefile.am (baseline_file): Remove variable.
+	(site.exp): Set baseline_dir rather than baseline_file.
+	(check-abi): Pass AM_RUNTESTFLAGS and RUNTESTFLAGS to runtest.
+	* testsuite/Makefile.in: Regenerate.
+
+2009-02-20  Benjamin Kosnik  
+
+	* testsuite/30_threads/thread/this_thread: Move...
+	* testsuite/30_threads/this_thread: ...here.
+	* testsuite/20_util/unique_ptr/assign/assign.cc: Move...
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: ...here.
+	* testsuite/20_util/ratio/cons/cons_overflow.cc: Move...
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: ...here.
+	* testsuite/20_util/ratio/operations/ops_overflow.cc: Move...
+	* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: ...here.
+
+2009-02-20  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Tweaks.
+	* doc/doxygen/doxygroups.cc: Prefer markup that can be elsewhere,
+	be elsewhere.
+
+	* include/tr1_impl/unordered_map: Just use most specialized
+	container module.
+	* include/tr1_impl/unordered_set: Same.
+	* include/tr1_impl/array: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_queue.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_stack.h: Same.
+	* include/bits/forward_list.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_bvector.h: Same.
+
+	* include/backward/binders.h: Change binder module to binders.
+
+	* include/std/complex: Add complex_numers module.
+	* include/tr1_impl/complex: Same.
+
+	* include/std/valarray: Add numeric_arrays module.
+	* include/bits/gslice_array.h: Same.
+	* include/bits/gslice.h: Same.
+	* include/bits/mask_array.h: Same.
+	* include/bits/slice_array.h: Same.
+	* include/bits/indirect_array.h: Same.
+
+	* include/bits/allocator.h: Add allocators module.
+	* include/ext/throw_allocator.h
+	* include/ext/pool_allocator.h
+	* include/ext/bitmap_allocator.h
+	* include/ext/new_allocator.h
+	* include/ext/malloc_allocator.h
+	* include/ext/array_allocator.h
+	* include/ext/mt_allocator.h
+	* include/ext/debug_allocator.h
+	* include/ext/extptr_allocator.h
+
+	* include/tr1_impl/functional: Move namespace markup here.
+	* include/tr1_impl/regex: Same.
+
+	* include/tr1_impl/type_traits: Add metaprogramming module.
+	* include/std/type_traits: Same.
+
+	* include/std/memory: Add memory module.
+
+	* include/std/ratio: Add ratio module.
+
+	* include/std/chrono: Move namespace markup here, add time module.
+
+	* include/std/thread: Move namespace markup here, add concurrency
+	module.
+	* include/std/mutex: Use concurrency module.
+	* include/std/condition_variable: Same.
+
+
+	* include/bits/ios_base.h: Refine io module.
+	* include/bits/basic_ios.h: Same.
+	* include/std/fstream: Same.
+	* include/std/istream: Same.
+	* include/std/ostream: Same.
+	* include/std/sstream: Same.
+
+	* include/ext/vstring.h: Correct parameter markup.
+
+	* include/bits/shared_ptr.h: Add pointer_abstractions module.
+	* include/bits/unique_ptr.h: Same.
+
+	* include/bits/algorithmfwd.h: Add mutating_algorithms,
+	non_mutating_algorithms, sorting_algorithms. Adjust nesting.
+	* include/bits/stl_heap.h: Add markup for new groupings.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_algo.h: Same.
+
+	* include/c_compatibility/stdatomic.h: Add atomics module.
+	* include/c_global/cstdatomic: Same.
+
+	* libsupc++/exception: Add exceptions module.
+	* libsupc++/typeinfo: Same.
+	* libsupc++/new: Same.
+	* libsupc++/exception_ptr.h: Same.
+	* include/std/system_error: Same.
+	* include/std/stdexcept: Same.
+
+	* libsupc++/cxxabi.h: Move doxygroups.cc markup here.
+	* libsupc++/cxxabi-forced.h: Same.
+
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Fix up line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/20_util/duration/cons/1_neg.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same.
+	* testsuite/20_util/unique_ptr/assign/assign.cc: Same.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+	* testsuite/20_util/ratio/cons/cons_overflow.cc: Same.
+	* testsuite/20_util/ratio/operations/ops_overflow.cc: Same.
+
+2009-02-18  Benjamin Kosnik  
+
+	* doc/doxygen/doxygroups.cc: Move algorithm groups into algorithmfwd.h.
+	* doc/doxygen/user.cfg.in: Update.
+	* scripts/run_doxygen: Adjust for new group names.
+
+	* include/tr1_impl/random: Update doxygen group markup.
+	* include/tr1_impl/unordered_map: Same.
+	* include/tr1_impl/unordered_set: Same.
+	* include/tr1_impl/array: Same.
+	* include/std/numeric: Same.
+	* include/std/utility: Same.
+	* include/std/bitset: Same.
+	* include/std/iosfwd: Same.
+	* include/bits/stl_list.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_queue.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/stl_stack.h: Same.
+	* include/bits/stl_iterator_base_types.h: Same.
+	* include/bits/forward_list.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/stl_vector.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/stl_bvector.h: Same.
+	* include/bits/algorithmfwd.h: Same.
+	* include/bits/stl_function.h: Same.
+	* include/tr1/cmath: Same.
+	* include/backward/binders.h: Same.
+
+2009-02-17  Benjamin Kosnik  
+
+	* include/std/system_error (system_category): To system_category().
+	(generic_category): To generic_category. DR 890.
+	* src/system_error.cc: Define.
+	* include/bits/functexcept.h: Only one __throw_system_error.
+	* src/functexcept.cc: Same.
+	* include/std/mutex: Fixup for changes above.
+	* testsuite/19_diagnostics/error_condition/cons/1.cc: Same.
+	* testsuite/19_diagnostics/error_code/cons/1.cc: Same.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Same.
+	* config/abi/pre/gnu.ver: Clean up exports.
+
+2009-02-17  Jonathan Wakely  
+
+	* include/std/thread: Fix typo.
+	* src/thread.cc (thread::join): Use NULL.
+
+2009-02-15  Paolo Carlini  
+
+	PR libstdc++/39168
+	* src/locale_facets.cc (__verify_grouping(const char*, size_t,
+	const string&)): Also check that the value != CHAR_MAX.
+	* include/bits/locale_facets.tcc (__numpunct_cache<>::
+	_M_cache(const locale&), __add_grouping(_CharT*, _CharT,
+	const char*, size_t, const _CharT*, const _CharT*)): Likewise.
+	* include/bits/locale_facets_nonio.tcc (__moneypunct_cache<>::
+	_M_cache(const locale&)): Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/39168.cc: New.
+	* testsuite/22_locale/money_put/put/char/39168.cc: Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/39168.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/39168.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/39168.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/39168.cc: Likewise.
+
+2009-02-13  Chris Fairles  
+	    Benjamin Kosnik  
+
+	* include/std/thread (_Impl_base): Move _M_id out and into ...
+	(thread): ...here. Call _M_make_routine in body of constructors.
+	Adjust data member usage to reflect changes.
+	(_M_make_routine): From _M_make_shared_data.
+	(_M_start_thread): Add __shared_base_type argument.
+	* src/thread.cc: Fixups for above.
+	* config/abi/pre/gnu.ver: Adjust exports.
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Enable.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Same.
+
+2009-02-12  Benjamin Kosnik  
+
+	* testsuite/util/thread/all.h (compare_type_to_native_type_sizes): To...
+	(compare_type_to_native_type): ...this, add alignment check.
+	* testsuite/30_threads/condition_variable_any/native_handle/
+	typesizes.cc: Modify as above.
+	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/condition_variable/native_handle/
+	typesizes.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/native_handle/
+	typesizes.cc: Same.
+
+	* testsuite/30_threads/thread/cons/1.cc: Add comments.
+	* testsuite/30_threads/thread/cons/2.cc: Same.
+	* testsuite/30_threads/thread/cons/3.cc: Same.
+	* testsuite/30_threads/thread/cons/4.cc: Same.
+	* testsuite/30_threads/thread/cons/5.cc: Same.
+	* testsuite/30_threads/thread/cons/6.cc: Same.
+	* testsuite/30_threads/thread/cons/7.cc: Same.
+	* testsuite/30_threads/thread/cons/8.cc: Same.
+
+	* testsuite/30_threads/thread/cons/9.cc: New.
+	* testsuite/30_threads/thread/cons/moveable.cc: New.
+
+	* src/condition_variable.cc: Clean up whitespace.
+	* include/std/condition_variable: Same.
+
+2009-02-09  Benjamin Kosnik  
+
+	* include/std/condition_variable (condition_variable): Remove
+	_M_internal_mutex. Add private __native_type typedef.
+	* src/condition_variable.cc (condition_variable::notify_one):
+	Remove _M_internal_mutex use. Use typedef.
+	(condition_variable::notify_all): Same.
+	* include/std/mutex (mutex): Add private __native_type typedef. Use it.
+	(recursive_mutex): Same.
+	(timed_mutex): Same.
+	(recursive_timed_mutex): Same.
+	(once_flag): Make __native_type typedef private.
+
+	* include/std/thread (this_thread): Add minimal markup.
+
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Adjust line numbers.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same.
+
+	* testsuite/util/thread/all.h: Testsuite utilities for testing thread.
+	* testsuite/30_threads/condition_variable_any/native_handle/
+	typesizes.cc: New.
+	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/thread/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same.
+	* testsuite/30_threads/condition_variable/native_handle/
+	typesizes.cc: Same.
+	* testsuite/30_threads/recursive_timed_mutex/native_handle/
+	typesizes.cc: Same.
+
+2009-02-09  Jack Howarth  
+
+	PR testsuite/33300
+	* libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc: Skip
+	on darwin for lp64.
+
+2009-02-09  Adam Nemet  
+
+	* configure.host: Set abi_baseline_pair for mips64*-linux.
+	* config/abi/post/mips64-linux-gnu/baseline_symbols.txt: New file.
+
+2009-02-08  Chris Fairles  
+
+	* include/std/thread (this_thread::get_id): Inline.
+
+2009-02-08  Chris Fairles  
+
+	* include/std/thread (thread<>::thread(_Callable)): Explicitly use
+	_Callable as template argument for _M_make_shared_data.
+	* testsuite/30_threads/thread/cons/6.cc: New.
+	* testsuite/30_threads/thread/cons/7.cc: New.
+	* testsuite/30_threads/thread/cons/8.cc: New.
+
+2009-02-07  Benjamin Kosnik  
+
+	* testsuite/30_threads/thread/member: To..
+	* testsuite/30_threads/thread/members: ...this.
+	* testsuite/30_threads/condition_variable/member: To...
+	* testsuite/30_threads/condition_variable/members: ...this.
+
+2009-02-06  Benjamin Kosnik  
+
+	* include/std/thread (thread::id): Move definition inside thread.
+	Use native_handle_type. Remove this_thread::get_id friend.
+	Change __thread_data_ptr to __shared_base_ptr.
+	(thread::id::id(native_handle_type): Make public. Still explicit.
+	Use native_handle_type. Change _M_thread_id to _M_thread.
+	(thread::__thread_data_base): Rename to _Impl_base. Use id, change
+	_M_thread_handle to _M_id.
+	(thread::__thread_data): Rename to _Impl.
+	Fixup for renames.
+	(thread::_M_make_thread_data): Return derived type.
+	(thread::hardware_concurrency): Add definition for default case.
+	(thread::get_id): Now can define inline.
+	(thread): Change _M_thread_data to _M_data.
+	(this_thread::get_id): Now can define inline.
+	* src/thread.cc (__thread_proxy): Rename to
+	execute_native_thread_routine.
+	Fixup for other renames.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: New.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: New.
+	* testsuite/30_threads/thread/algorithm: Move to..
+	* testsuite/30_threads/thread/swap: ...this.
+	* testsuite/30_threads/thread/member/hardware_concurrency.cc: Add.
+	* testsuite/30_threads/thread/id/operators.cc: New.
+
+2009-02-05  Chris Fairles  
+
+	* include/std/tuple (_Head_base<>::_Head_base(_UHead&&)): Formatting.
+	(_Head_base<>::__swap_impl): Rename to _M_swap_impl.
+	(_Tuple_impl<>::__swap_impl): Likewise and make protected to avoid
+	exposing it in public std::tuple interface.
+
+2009-02-05  Chris Fairles  
+	    Benjamin Kosnik  
+
+	* include/std/thread (__thread_data_base): Nest class in std::thread.
+	(__thread_data): Likewise.
+	(__thread_data_ptr): Nest typedef in std::thread.
+	* src/thread.cc (__thread_proxy): Qualify the above names.
+	* config/abi/pre/gnu.ver: Remove unused exports.
+
+2009-02-04  Benjamin Kosnik  
+
+	* include/bits/unique_ptr.h: Remove private __this_type typedef.
+	* include/bits/stl_vector.h: Remove private vector_type typedef.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Fix line numbers.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Same.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Same.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same.
+	* testsuite/20_util/unique_ptr/assign/assign.cc: Same.
+
+2009-02-03  Paolo Carlini  
+
+	PR libstdc++/25191
+	* libsupc++/exception_defines.h: Depending on __EXCEPTIONS,
+	deal consistently with __try and __catch too.
+	* src/localename.cc: Replace try -> __try, catch -> __catch.
+	* src/ios.cc: Likewise.
+	* src/locale.cc: Likewise.
+	* src/istream.cc: Likewise.
+	* src/thread.cc: Likewise.
+	* src/compatibility.cc: Likewise.
+	* src/bitmap_allocator.cc: Likewise.
+	* src/ios_init.cc: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/list: Likewise.
+	* include/tr1_impl/hashtable: Likewise.
+	* include/std/bitset: Likewise.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_load_check_resize_trigger_imp.hpp: Likewise.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_standard_resize_policy_imp.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/
+	split_join_branch_bag.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/debug_map_base.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	constructor_destructor_fn_imps.hpp: Likewise.
+	* include/ext/slist: Likewise.
+	* include/ext/memory: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/ext/ropeimpl.h: Likewise.
+	* include/ext/vstring.tcc: Likewise.
+	* include/ext/rope: Likewise.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/bits/shared_ptr.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/locale_classes.tcc: Likewise.
+	* include/bits/locale_facets.tcc: Likewise.
+	* include/bits/locale_classes.h: Likewise.
+	* include/bits/forward_list.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/istream.tcc: Likewise.
+	* include/bits/stl_uninitialized.h: Likewise.
+	* include/bits/ostream.tcc: Likewise.
+	* include/bits/vector.tcc: Likewise.
+	* include/bits/stl_tempbuf.h: Likewise.
+	* include/bits/deque.tcc: Likewise.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/ostream_insert.h: Likewise.
+	* include/bits/locale_facets_nonio.tcc: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/tr1/shared_ptr.h: Likewise.
+	* include/tr1/hypergeometric.tcc: Likewise.
+	* include/backward/hashtable.h: Likewise.
+	* libsupc++/exception_ptr.h: Likewise.
+	* libsupc++/eh_personality.cc: Likewise.
+	* libsupc++/eh_call.cc: Likewise.
+	* config/locale/gnu/monetary_members.cc: Likewise.
+	* config/locale/gnu/time_members.h: Likewise.
+	* config/locale/generic/time_members.h: Likewise.
+
+2009-02-03  Johannes Singler  
+
+	* include/parallel/algorithmfwd.h:
+	Add parallelism default for many declarations.
+	* include/parallel/numericfwd.h: Likewise.
+	* include/parallel/iterator.h: Use iterator_traits as usual.
+	* include/parallel/par_loop.h:
+	Include equally_split.h.
+	(for_each_template_random_access_ed):
+	Avoid calling the Result default constructor.
+	* include/parallel/numeric: Replace
+	for_each_template_random_access by
+	for_each_template_random_access_ed in numeric functions.
+
+2009-02-02  Benjamin Kosnik  
+
+	* config/os/gnu-linux/os_defines.h: Remove superfluous
+	__NO_STRING_INLINES.
+
+2009-02-02  Jakub Jelinek  
+
+	* testsuite/21_strings/c_strings/char/3.cc: New test.
+	* testsuite/21_strings/c_strings/wchar_t/3.cc: New test.
+
+2009-01-30  Ulrich Drepper  
+	    Jakub Jelinek  
+
+	PR libstdc++/30928 (partial, works together with recent glibcs)
+	* include/c_std/cstring (memchr, strchr, strpbrk, strrchr, strstr):
+	Provide inlines only if __CORRECT_ISO_CPP_STRING_H_PROTO is not
+	defined.
+	* include/c_std/cwchar (wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr):
+	Provide inlines only if __CORRECT_ISO_CPP_WCHAR_H_PROTO is not
+	defined.
+	* include/c_global/cstring (memchr, strchr, strpbrk, strrchr, strstr):
+	Provide inlines only if __CORRECT_ISO_CPP_STRING_H_PROTO is not
+	defined.
+	* include/c_global/cwchar (wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr):
+	Provide inlines only if __CORRECT_ISO_CPP_WCHAR_H_PROTO is not
+	defined.
+	* testsuite/21_strings/c_strings/char_t/2.cc (test02): If first
+	argument is const char *, assign result to const char * var, not
+	char *.
+	* testsuite/21_strings/c_strings/wchar_t/2.cc (test02): If first
+	argument is const wchar_t *, assign result to const wchar_t * var, not
+	wchar_t *.
+
+2009-01-29  Jonathan Wakely  
+
+	* include/std/thread: Remove unused headers.
+	(__thread_data_base): Remove unused mutex and base.
+	(thread::~thread): Only detach if joinable.
+	(thread::joinable): Test if thread data ptr is empty.
+	(thread::_M_thread_data_mutex): Remove.
+	(thread::_M_get_thread_data): Remove.
+	(thread::_M_make_thread_data): Remove overload, use make_shared.
+	(thread::id::id): Make constructor explicit.
+	* src/thread.cc (thread::join,thread::detach): Throw if not joinable.
+	(thread::_M_start_thread): Break shared_ptr cycle on error.
+	(__thread_proxy): Use shared_ptr swap instead of copy and reset.
+	* testsuite/30_threads/thread/member/4.cc: New.
+	* testsuite/30_threads/thread/member/5.cc: New.
+
+2009-01-28  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_common_types.h (has_trivial_cons_dtor): New.
+	(standard_layout): Just use !has_virtual_destructor for now.
+	* testsuite/30_threads/mutex/requirements/standard_layout.cc: New.
+	* testsuite/30_threads/timed_mutex/requirements/standard_layout.cc: New.
+	* testsuite/30_threads/recursive_mutex/requirements/
+	standard_layout.cc: New.
+	* testsuite/30_threads/condition_variable/requirements/
+	standard_layout.cc: New.
+	* testsuite/29_atomics/atomic_address/requirements/
+	standard_layout.cc: Adjust.
+	* testsuite/29_atomics/atomic_flag/requirements/
+	standard_layout.cc: Same.
+	* testsuite/29_atomics/atomic_address/requirements/trivial.cc: New.
+	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Same.
+	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Same.
+	* testsuite/30_threads/condition_variable/requirements/typedefs.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Adjust
+	line numbers.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/requirements/standard_layout.cc:
+	Remove, not required.
+
+2009-01-22  Jonathan Wakely  
+
+	* include/std/thread (__thread_data_base, thread): Rename member
+	functions to match coding style.
+	(thread::thread,thread::operator=): Define move operations.
+	* src/thread.cc (__thread_data_base, thread): Rename member functions.
+	* config/abi/pre/gnu.ver: Adjust.
+
+2009-01-22  Benjamin Kosnik  
+
+	PR libstdc++/38384
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Disable symbol versioning
+	on HPUX.
+	* configure: Regenerate.
+
+2009-01-21  Benjamin Kosnik  
+
+	* testsuite/29_atomics/headers/stdatomic.h/functions.c: Remove
+	atomic_flag_fence.
+
+2009-01-21  Dodji Seketeli  
+
+2009-01-20  Benjamin Kosnik  
+	    Uros Bizjak  
+
+	PR libstdc++/38834
+	* config/abi/pre/gnu.ver: Correct char16_t and char32_t exports.
+	* config/os/gnu-linux/ldbl-extra.ver: Tweak.
+
+2009-01-20  Benjamin Kosnik  
+	    Rainer Emrich  
+
+	PR libstdc++/38919
+	* crossconfig.m4: Use GLIBCXX_CHECK_MATH_SUPPORT and
+	GLIBCXX_CHECK_STDLIB_SUPPORT for mingw crosses.
+	* configure: Regenerate.
+
+2009-01-18  Jonathan Wakely  
+
+	* include/std/thread (__thread_data_base::__run): Make non-const.
+	* testsuite/30_threads/thread/cons/5.cc: New.
+
+2009-01-16  Benjamin Kosnik  
+
+	* src/Makefile.am (sources): Add math_stubs_float.cc.
+	* src/Makefile.in: Regenerate.
+	* src/math_stubs_float.cc: New, from libmath/stubs.c.
+
+2009-01-15  Benjamin Kosnik  
+
+	* src/Makefile.am (sources): Add math_stubs_long_double.cc.
+	* src/Makefile.in: Regenerate.
+	* src/math_stubs_long_double.cc: New, from libmath/stubs.c.
+
+2009-01-15  Benjamin Kosnik  
+
+	PR libstdc++/32666
+	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
+
+2009-01-15  Benjamin Kosnik  
+
+	PR libstdc++/32666
+	* Makefile.am (hosted_source): Remove libmath directory.
+	* Makefile.in: Regenerate.
+	* linkage.m4 (GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT): Remove.
+	(AC_REPLACE_MATHFUNCS): Remove.
+	(GLIBCXX_CHECK_MATH_SUPPORT): Remove copysign, copysignl checks as done
+	in GLIBCXX_CHECK_C99_TR1.
+	* acinclude.m4: Remove libmath, need_math.
+	* crossconfig.m4: Remove use of HAVE_COPYSIGN, HAVE_COPYSIGNL,
+	HAVE_COPYSIGNF, GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT, need_libmath.
+	* configure.ac: Same.
+	* configure: Regenerate.
+	* fragment.am: Fix comment.
+	* config.h.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* src/Makefile.am: Remove libmath references.
+	* doc/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+	* src/compatibility.cc: Also export long double versions of "C" math
+	library if hppa-linux.
+	* config/abi/pre/gnu.ver: Remove unused __signbit exports.
+	* doc/xml/manual/appendix_contributing.xml: Remove libmath reference.
+
+	* libmath: Remove.
+	* libmath/signbit.c: Same.
+	* libmath/stubs.c: Same.
+	* libmath/Makefile.in: Same.
+	* libmath/copysignf.c: Same.
+	* libmath/mathconf.h: Same.
+	* libmath/signbitf.c: Same.
+	* libmath/Makefile.am: Same.
+	* libmath/signbitl.c: Same.
+
+2009-01-15  Chris Fairles  
+	    Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_ENABLE_CLOCK_GETTIME],
+	[GLIBCXX_CHECK_NANOSLEEP]): Remove.
+	([GLIBCXX_ENABLE_LIBSTDCXX_TIME]): Add.
+	* configure.ac: Adjust.
+	* doc/xml/manual/configure.xml: Update.
+	* testsuite/lib/libstdc++.exp (check_v3_target_sched_yield): Add.
+	* testsuite/lib/dg-options.exp (dg-require-sched-yield): Add.
+	* testsuite/30_threads/thread/this_thread/2.cc: Use the latter.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+
+	* src/thread.cc (thread::thread(), thread::~thread, thread::get_id,
+	thread::joinable, thread::swap, this_thread::get_id,
+	this_thread::yield): Define inline...
+	* include/std/thread: ... here.
+	* config/abi/pre/gnu.ver: Adjust.
+
+2009-01-13  Uros Bizjak  
+
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc:
+	Add dg-timeout-factor 2.0.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Ditto.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Ditto.
+
+2009-01-13  Uros Bizjak  
+
+	* scripts/extract_symvers: Add sed script to remove ' [: xx] '
+	field from readelf output.
+
+2009-01-12  Benjamin Kosnik  
+
+	PR libstdc++/38384
+	* crossconfig.m4 (hpux): Update for 10.20, 11, 11.20.
+	* configure: Regenerate.
+
+2009-01-12  Benjamin Kosnik  
+
+	* crossconfig.m4 (linux): Add GCC_CHECK_TLS to define
+	_GLIBCXX_HAVE_TLS.
+	Use GLIBCXX_CHECK_COMPILER_FEATURES to compute SECTION_FLAGS.
+
+2009-01-11  Jonathan Wakely  
+
+	* include/tr1_impl/regex (basic_regex::basic_regex): Use range
+	constructor for _M_pattern.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/
+	string.cc: Test construction from different basic_string type.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/
+	string.cc: Likewise.
+
+2009-01-07  Benjamin Kosnik  
+	    Jonathan Larmour  
+
+	PR libstdc++/36801
+	* config/cpu/generic/atomicity_mutex/atomicity.h (get_atomic_mutex):
+	New.
+	(__gnu_cxx::__exchange_and_add): Use it.
+	* src/atomic.cc (get_atomic_mutex): New.
+	* src/debug.cc (get_safe_base_mutex): New.
+	* src/locale.cc (get_locale_cache_mutex): New.
+	* src/mt_allocator.cc (get_freelist): New.
+	(get_freelist_mutex): New.
+	* src/pool_allocator.cc (get_palloc_mutex): New.
+	* include/std/mutex (__once_functor_lock): To
+	(__get_once_functor_lock): ...this.
+	* src/mutex.cc (__once_mutex): Don't export, use
+	(get_once_mutex): ...this.
+	* config/abi/pre/gnu.ver: Adjust exports.
+
+2009-01-07  Jakub Jelinek  
+
+	PR libstdc++/38732
+	* libsupc++/unwind-cxx.h (__cxxabiv1::__cxa_exception): Remove
+	referenceCount field again.
+	(__cxxabiv1::__cxa_refcounted_exception): New struct.
+	(__cxxabiv1::__get_refcounted_exception_header_from_obj,
+	__cxxabiv1::__get_refcounted_exception_header_from_ue): New static
+	inline functions.
+	* libsupc++/eh_alloc.cc (__cxxabiv1::__cxa_allocate_exception,
+	__cxxabiv1::__cxa_free_exception): Use __cxa_refcounted_exception
+	instead of __cxa_exception.
+	* libsupc++/eh_throw.cc (__gxx_exception_cleanup,
+	__cxxabiv1::__cxa_throw): Likewise.
+	* libsupc++/eh_ptr.cc (std::rethrow_exception,
+	std::__exception_ptr::exception_ptr::_M_addref,
+	std::__exception_ptr::exception_ptr::_M_release,
+	__gxx_dependent_exception_cleanup): Likewise.
+	* testsuite/18_support/exception/38732.cc: New test.
+
+	PR libstdc++/38092
+	* acinclude.m4 (HAVE_AS_SYMVER_DIRECTIVE): New test.
+	* src/compatibility.cc: Don't use .symver directives if
+	_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE is not defined.
+	* config.h.in: Regenerated.
+	* configure: Likewise.
+
+2009-01-07  Paolo Carlini  
+
+	PR libstdc++/38466
+	* include/bits/stl_pair.h: Document C++03 pair vs swap.
+
+2009-01-06  Benjamin Kosnik  
+
+	* src/locale_init.cc (locale::_S_initialize_once): Move construction
+	of classic locale...
+	(locale::classic): Here.
+
+2009-01-06  Jonathan Wakely  
+
+	* include/tr1_impl/regex: Fix bad return statements and typos.
+
+2009-01-05  Benjamin Kosnik  
+
+	* include/tr1_impl/regex: Remove unimplemented function definitions.
+	* testsuite/28_regex/init-list.cc: Compile only.
+	* testsuite/tr1/7_regular_expressions/regex/cons/char/
+	c_string_extended.cc: Same.
+	* testsuite/tr1/7_regular_expressions/basic_regex/assign/*: Same.
+	* testsuite/tr1/7_regular_expressions/basic_regex/ctors/*: Same.
+
+2009-01-05  Benjamin Kosnik  
+
+	PR libstdc++/38384
+	* crossconfig.m4: Define HAVE_FABSF for hpux crosses.
+	* configure: Regenerate.
+
+2009-01-05  Ben Elliston  
+
+	* configure.ac (GLIBCXX_CHECK_STANDARD_LAYOUT): Remove invocation.
+	* configure: Regenerate.
+
+2009-01-05  Ben Elliston  
+
+	* configure.ac: Exchange the order of GLIBCXX_ENABLE_THREADS and
+	GLIBCXX_ENABLE_ATOMIC_BUILTINS macro invocations.
+	* configure: Regenerate.
+
+2009-01-04  Richard Guenther  
+
+	PR libstdc++/38720
+	* include/ext/pointer.h (_Relative_pointer_impl): Use an unsigned
+	integer type for storage, arithmetic and comparisons.
+	* testsuite/ext/ext_pointer/1_neg.cc: Adjust line numbers.
+
+2009-01-04  Paolo Carlini  
+
+	PR libstdc++/38719
+	* include/bits/forward_list.h (_Fwd_list_iterator<>::_M_next,
+	_Fwd_list_const_iterator::_M_next): Fix return type.
+
+2009-01-03  Paolo Carlini  
+
+	* Revert last commit, reopen and suspend libstdc++/38678.
+
+2009-01-01  Paolo Carlini  
+
+	PR libstdc++/38678
+	* include/std/istream (basic_istream<>::_M_read): New.
+	* include/bits/istream.tcc (basic_istream<>::_M_read): Define.
+	(basic_istream<>::read, basic_istream<>::readsome): Use it.
+	* include/std/ostream (basic_ostream<>::_M_write_): New.
+	(basic_ostream<>::_M_write): Adjust.
+	* include/bits/ostream.tcc (basic_ostream<>::_M_write_): Define.
+	* testsuite/27_io/basic_istream/read/char/38678.cc: New.
+	* testsuite/27_io/basic_istream/read/wchar_t/38678.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/char/38678.cc: Likewise.
+	* testsuite/27_io/basic_ostream/write/wchar_t/38678.cc: Likewise.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2010 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2010
new file mode 100644
index 000000000..82831e77e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/ChangeLog-2010
@@ -0,0 +1,7188 @@
+2010-12-31  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Allow doxygen 1.7.1 again.
+
+	* doc/xml/manual/build_hacking.xml: Update.
+	* doc/xml/images/confdeps.dot: Same.
+	* doc/xml/images/confdeps.png: Same.
+
+	* configure.ac: Define BUILD_INFO, BUILD_XML, BUILD_HTML,
+	BUILD_MAN, BUILD_PDF, BUILD_EPUB conditionally.
+	* Makefile.am (xml, html, pdf, man, info, pd, dvi, epub): Define,
+	and install rules.
+	* doc/Makefile.am: Same. Add stamp rules.
+	(doc-epub-docbook): Add.
+	(stamp-xml-single-docbook): Make set too.
+	* configure: Regenerate.
+	* Makefile.in: Same.
+	* doc/Makefile.in: Same.
+	* include/Makefile.in: Same.
+	* libsupc++/Makefile.in: Same.
+	* po/Makefile.in: Same.
+	* python/Makefile.in: Same.
+	* src/Makefile.in: Same.
+	* testsuite/Makefile.in: Same.
+	* aclocal.m4: Same.
+
+2010-12-31  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Disable PDF_HYPERLINKS.
+
+2010-12-19  John David Anglin  
+
+	PR libstdc++/46869
+	* testsuite/20_util/enable_shared_from_this/cons/constexpr.cc:
+	Compile with -g0.
+	* testsuite/20_util/shared_ptr/cons/constexpr.cc: Likewise.
+	* testsuite/20_util/unique_ptr/cons/constexpr.cc: Likewise.
+	* testsuite/20_util/weak_ptr/cons/constexpr.cc: Likewise.
+
+2010-12-19  Paolo Carlini  
+
+	* include/bits/basic_string.h (operator+(basic_string<>&&,
+	basic_string<>&&)): Optimize better.
+	* include/ext/vstring.h (operator+(__versa_string<>&&,
+	__versa_string<>&)): Likewise.
+
+2010-12-19  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/operators/char/4.cc: New.
+	* testsuite/21_strings/basic_string/operators/wchar_t/4.cc: Likewise.
+	* testsuite/ext/vstring/operators/2.cc: Likewise.
+
+2010-11-18  Benjamin Kosnik  
+
+	* config/*/*: Use headername alias to associate private includes
+	to public includes.
+	* include/*/*: Same.
+
+	* scripts/run_doxygen: Update for doxygen 1.7.2.
+	* doc/doxygen/user.cfg.in: Same.
+	* doc/doxygen/TODO: Remove.
+
+	* testsuite/*/std_c++0x_neg.cc: Adjust line number.
+
+2010-12-17  Paolo Carlini  
+
+	* include/bits/basic_string.h (operator+(basic_string<>&&,
+	const basic_string<>&), operator+(const basic_string<>&,
+	basic_string<>&&), operator+(basic_string<>&&, basic_string<>&&),
+	operator+(const _CharT*, basic_string<>&&), operator+(_CharT,
+	basic_string<>&&), operator+(basic_string<>&&, const _CharT*),
+	operator+(basic_string<>&&, _CharT)): Add.
+	* testsuite/21_strings/basic_string/operators/char/3.cc: New.
+	* testsuite/21_strings/basic_string/operators/wchar_t/3.cc: Likewise.
+
+2010-12-17  Paolo Carlini  
+
+	* aclocal.m4: Regenerate.
+	* Makefile.in: Likewise.
+	* testsuite/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* python/Makefile.in: Likewise.
+
+2010-11-16  Benjamin Kosnik  
+
+	* testsuite/util/testsuite_iterators.h: Guard move.h includes.
+	* testsuite/util/testsuite_allocator.h: Same.
+
+	* testsuite/20_util/temporary_buffer.cc: Use typedef, qualify.
+
+	* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Define
+	PB_DS_REGRESSION in the source file.
+	* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
+	* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same.
+
+	* testsuite/21_strings/c_strings/wchar_t/3_neg.cc: Move to this.
+	Use _neg suffix.
+	* testsuite/21_strings/c_strings/wchar_t/3.cc: ...from this.
+	* testsuite/21_strings/c_strings/char/3_neg.cc: Same.
+	* testsuite/21_strings/c_strings/char/3.cc: Same.
+	* testsuite/ext/slist/23781_neg.cc: Same.
+	* testsuite/ext/slist/23781.cc: Same.
+	* testsuite/ext/profile/mutex_extensions.cc: Same.
+	* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820.cc: Same.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc:
+	Same.
+	* testsuite/tr1/6_containers/tuple/comparison_operators/35480.cc: Same.
+	* testsuite/23_containers/multimap/23781_neg.cc: Same.
+	* testsuite/23_containers/multimap/23781.cc: Same.
+	* testsuite/23_containers/set/23781_neg.cc: Same.
+	* testsuite/23_containers/set/23781.cc: Same.
+	* testsuite/23_containers/multiset/23781_neg.cc: Same.
+	* testsuite/23_containers/multiset/23781.cc: Same.
+	* testsuite/23_containers/list/23781_neg.cc: Same.
+	* testsuite/23_containers/list/23781.cc: Same.
+	* testsuite/23_containers/map/23781_neg.cc: Same.
+	* testsuite/23_containers/map/23781.cc: Same.
+	* testsuite/20_util/duration/cons/dr974_neg.cc: Same.
+	* testsuite/20_util/duration/cons/dr974.cc: Same.
+	* testsuite/20_util/tuple/comparison_operators/35480_neg.cc: Same.
+	* testsuite/20_util/tuple/comparison_operators/35480.cc: Same.
+	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Same.
+	* testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc:
+	Same.
+	* testsuite/20_util/unique_ptr/cons/pointer_array_convertible.cc: Same.
+
+2010-12-15  Paolo Carlini  
+
+	* include/ext/vstring.h (operator+(__versa_string<>&&,
+	const __versa_string<>&), operator+(const __versa_string<>&,
+	__versa_string<>&&), operator+(__versa_string<>&&,
+	__versa_string<>&&), operator+(const _CharT*,
+	__versa_string<>&&), operator+(_CharT, __versa_string<>&&),
+	operator+(__versa_string<>&&, const _CharT*),
+	operator+(__versa_string<>&&, _CharT)): Add.
+	* testsuite/ext/vstring/operators/1.cc: New.
+
+2010-12-15  Jonathan Wakely  
+
+	PR libstdc++/46951
+	* testsuite/30_threads/future/members/45133.cc: Fix dg-options.
+	* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
+
+2010-12-14  Jonathan Wakely  
+
+	PR libstdc++/45133
+	* include/std/future (__basic_future::wait): Throw if not valid.
+	(__basic_future::wait_for): Likewise.
+	(__basic_future::wait_until): Likewise.
+	(__basic_future::_M_get_result): Likewise.
+	* testsuite/30_threads/future/members/45133.cc: New.
+	* testsuite/30_threads/shared_future/members/45133.cc: New.
+
+2010-12-14  Jonathan Wakely  
+
+	PR libstdc++/46910
+	* include/bits/shared_ptr_base.h (_Sp_counted_deleter): Do not
+	derive from _Sp_counted_ptr.
+	* testsuite/20_util/shared_ptr/cons/46910.cc: New.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Adjust.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
+
+2010-12-13  Rainer Orth  
+
+	* config/abi/post/solaris2.8/baseline_symbols.txt: Regenerate.
+	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+
+2010-12-12  Paolo Carlini  
+
+	* testsuite/util/testsuite_abi.cc (check_version): Don't push back
+	GLIBCXX_3.4.16, unused.
+
+2010-12-10  Rainer Orth  
+
+	* testsuite/lib/libstdc++.exp (v3-build_support): Delete
+	libtestc++.a before creation.
+
+2010-12-10  Jack Howarth  
+	    Iain Sandoe  
+
+	PR 43751/target
+	* testsuite/lib/prune.exp: Prune dsymutil warnings.
+
+2010-12-08  Nathan Froyd  
+
+	PR testsuite/46860
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
+
+2010-12-08  Paolo Carlini  
+
+	* include/std/bitset (_Base_bitset<>::_Base_bitset(),
+	_Base_bitset(unsigned long)): Simplify.
+
+2010-12-07  François Dumont  
+
+	* include/bits/stl_iterator.h: Add move_iterator operators overloads
+	to make it robust to template abuses.
+	* testsuite/util/testsuite_greedy_ops.h: New.
+	* testsuite/23_containers/vector/types/1.cc: Use latter.
+	* testsuite/23_containers/deque/types/1.cc: Likewise.
+	* testsuite/24_iterators/move_iterator/greedy_ops.cc: New.
+	* testsuite/24_iterators/normal_iterator/greedy_ops.cc: New.
+	* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: New.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line numbers.
+
+2010-12-06  Paul Pluzhnikov  
+
+	PR libstdc++/46830
+	* include/ext/sso_string_base.h (__sso_string_base<>::_M_swap):
+	Early return when this == &__rcs.
+
+2010-12-06  Paolo Carlini  
+
+	* include/bits/shared_ptr.h (shared_ptr<>::shared_ptr(_Tp1*, _Deleter,
+	const _Alloc&), shared_ptr(nullptr_t, _Deleter, const _Alloc&)): Take
+	the allocator by value, per N3225.
+	(shared_ptr<>::shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...),
+	allocate_shared(_Alloc, _Args&&...): Viceversa, take the allocator
+	by const lvalue ref.
+	* include/bits/shared_ptr_base.h (__shared_count<>::
+	__shared_count(_Sp_make_shared_tag, _Tp*, _Alloc, _Args&&...),
+	__shared_ptr<>::__shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...),
+	__allocate_shared(_Alloc, _Args&&...)): Likewise.
+	(__shared_ptr<>::__shared_ptr(_Tp1*, _Deleter, const _Alloc&),
+	__shared_ptr(nullptr_t, _Deleter, const _Alloc&), reset(_Tp1*,
+	_Deleter, const _Alloc&)): Take the allocator by value.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Adjust dg-error line
+	numbers.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-12-06  Rainer Orth  
+
+	* acinclude.m4 (symvers_renaming): Also set if enable_symvers = no.
+	* configure: Regenerate.
+
+2010-12-06  Paolo Carlini  
+
+	PR libstdc++/46821
+	* include/std/tuple (_Head_base<,, true>::_M_swap_impl):
+	Swap the empty bases.
+	(_Head_base<,, false>::_M_swap_impl): Minor tweak.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line number.
+
+2010-12-06  Dave Korn  
+
+	PR target/40125
+	PR lto/46695
+	* configure.ac: Invoke ACX_LT_HOST_FLAGS.
+	* configure.host (OPT_LDFLAGS): Use lt_host_flags for cygming.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* python/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-12-04  Jonathan Wakely  
+
+	* include/std/mutex (try_lock, __try_lock_impl): Fix.
+	(lock): Implement using __try_lock_impl.
+	* testsuite/30_threads/try_lock/2.cc: Fix logic.
+	* testsuite/30_threads/try_lock/4.cc: New.
+	* testsuite/30_threads/lock/1.cc: New.
+	* testsuite/30_threads/lock/2.cc: New.
+	* testsuite/30_threads/lock/3.cc: New.
+	* testsuite/30_threads/lock/4.cc: New.
+
+2010-12-02  Jonathan Wakely  
+
+	* src/future.cc (future_category): Export compatibility symbol.
+	* config/abi/pre/gnu.ver: Move _ZSt15future_categoryv to 3.4.15
+	version.
+
+2010-12-02  François Dumont  
+
+	* testsuite/23_containers/vector/requirements/explicit_instantiation/
+	2.cc: Hide explicit instantiation with non default constructible type
+	in C++0x mode.
+	* testsuite/23_containers/deque/requirements/explicit_instantiation/
+	2.cc: Likewise.
+	* testsuite/23_containers/list/requirements/explicit_instantiation/
+	2.cc: Likewise.
+
+2010-12-02  Kai Tietz  
+
+	PR libstdc++/43738
+	* config/io/basic_file_stdio.cc (showmanyc): Check _GLIBCXX_NO_IOCTL
+	before use of ioctl.
+	* config/os/mingw32/os_defines.h (_GLIBCXX_NO_IOCTL): New.
+
+2010-12-01  François Dumont  
+
+	* testsuite/23_containers/deque/cons/2.cc: Fix to explicitly invoke
+	the copy constructor with or without C++0x mode.
+	* testsuite/23_containers/vector/cons/4.cc: Likewise.
+
+2010-12-01  Rainer Orth  
+
+	* scripts/extract_symvers.pl: New file.
+	* scripts/extract_symvers: Rename to ...
+	* scripts/extract_symvers.in: ... this.
+	Use extract_symvers.pl on SunOS.
+	* configure.ac: Add scripts/extract_symvers to AC_CONFIG_FILES.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* testsuite/Makefile.am (extract_symvers): Call extract_symvers
+	from $(glibcxx_builddir).
+	* testsuite/Makefile.in: Regenerate.
+	* testsuite/libstdc++-abi/abi.exp: Call extract_symvers from
+	$objdir.
+
+	* config/abi/post/solaris2.8/baseline_symbols.txt: Regenerate.
+	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+
+2010-11-30  Paolo Carlini  
+
+	PR libstdc++/46718
+	* include/std/type_traits (__is_nullptr_t): Add.
+	(is_scalar): Use the latter.
+	* testsuite/20_util/is_scalar/value.cc: New.
+	* testsuite/20_util/is_scalar/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc:
+	Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2010-11-28  Jonathan Wakely  
+
+	PR libstdc++/46689
+	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Remove tests for
+	invalid comparisons.
+
+2010-11-27  Jonathan Wakely  
+
+	* include/bits/shared_ptr_base.h (operator>, operator>=, operator<=):
+	Remove comparisons not specified in the C++0x draft.
+
+2010-11-27  François Dumont  
+
+	* include/debug/unordered_map (unordered_multimap<>::erase): Fix to
+	erase all elements associated to the key.
+	* include/debug/unordered_set (unordered_multiset<>::erase): Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/1.cc: Modify to
+	check for multiple erase.
+	* testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise.
+
+2010-11-27  François Dumont  
+
+	* include/debug/unordered_map, unordered_set (unordered_map<>::insert,
+	unordered_multimap<>::insert, unordered_set<>::insert,
+	unordered_multiset<>::insert) Debug check iterator hint and pass it to
+	normal implementation.
+
+2010-11-27  François Dumont  
+
+	* include/debug/bitset (bitset<>::reference): Clean code, use normal
+	reference type in experimental mode.
+	* testsuite/23_containers/bitset/debug/invalid/1.cc: Fix for
+	experimental mode.
+
+2010-11-26  François Dumont  
+
+	* testsuite/lib/libstdc++.exp ([check_v3_target_debug_mode]): Use
+	remote_file delete for generated exe.
+	([check_v3_target_profile_mode]): Add.
+	* testsuite/lib/dg-options.exp ([dg-require-profile-mode]): Add
+	* testsuite/ext/profile/mh.cc, profiler_algos.cc, all.cc: Use
+	dg-require-profile-mode, remove explicit _GLIBCXX_PROFILE definition.
+
+2010-11-25  François Dumont  
+
+	* src/debug.cc: Introduce a mutex pool in get_safe_base_mutex.
+	Move code used to manipulate sequence safe iterators from safe
+	iterator methods to safe sequence ones. Remove usage of safe iterator
+	mutex, keep _Safe_iterator_base::_M_get_mutex for library backward
+	binary compatibility.
+	* src/Makefile.am: Build debug.cc in gnu++0x mode for _Hash_impl usage.
+	* src/Makefile.in: Regenerate
+	* include/debug/safe_base.h: Add _Safe_iterator_base _M_invalidate
+	and _M_reset. Add _Safe_sequence_base _M_attach, _M_attach_single,
+	_M_detach and _M_detach_single.
+	* include/debug.safe_iterator.h, safe_iterator.tcc: Remove
+	_Safe_iterator _M_invalidate and _M_invalidate_single. Implement all
+	methods in terms of normal iterators rather than safe ones.
+	* include/debug/safe_sequence.h: Replace _Safe_sequence
+	_M_transfe_iter with _M_transfer_from_if taking the source sequence
+	and a predicate signaling when a safe iterator shall be transfered.
+	Add _Equal_to predicate.
+	* include/debug/safe_sequence.tcc: New.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+	* include/debug/forward_list: Swap safe iterators in move constructor.
+	Do not invalidate before begin in _M_invalidate_all method.
+	Reimplement safe methods using normal iterators rather than safe ones.
+	* include/debug/set.h, unordered_map, multiset.h, vector,
+	unordered_set, deque, map.h, list, multimap.h: Reimplement safe method
+	using normal iterators rather than safe ones.
+	* testsuite/23_containers/forward_list/debug/clear.cc, swap.cc,
+	move_constructor.cc, splice_after.cc, splice_after1.cc,
+	splice_after2.cc, splice_after3.cc, splice_after4.cc: New.
+	* testsuite/23_containers/vector/debug/multithreaded_swap.cc: New.
+
+2010-11-24  Benjamin Kosnik  
+
+	* include/std/tuple: Mark more constructors constexpr.
+	* include/bits/stl_pair.h: Same.
+	* testsuite/20_util/tuple/requirements/dr801.cc: New.
+	* testsuite/20_util/pair/requirements/dr801.cc: New.
+	* testsuite/20_util/tuple/cons/constexpr.cc: Add cases for new
+	constexpr constructors.
+	* testsuite/20_util/pair/cons/constexpr.cc: Same.
+	* testsuite/20_util/pair/comparison_operators/constexpr.cc: New.
+
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line number.
+
+2010-11-24  Paolo Carlini  
+
+	* testsuite/30_threads/future/cons/constexpr.cc: Add dg-require*
+	directives.
+	* testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
+
+2010-11-23  Benjamin Kosnik  
+
+	* include/std/chrono: Constexpr markup for is_monotonic.
+	* src/chrono.cc: Same.
+	* testsuite/20_util/clocks/1.cc: Move...
+	* testsuite/20_util/system_clock/1.cc: ...here.
+	* testsuite/20_util/system_clock/constexpr_data.cc
+	* testsuite/20_util/monotonic_clock/constexpr_data.cc
+
+	* include/std/complex: Mark primary template constexpr.
+	* testsuite/26_numerics/complex/cons/constexpr_primary.cc: Add.
+	* testsuite/26_numerics/complex/complex_value.cc: Move...
+	* testsuite/26_numerics/complex/dr387.cc: Move...
+	* testsuite/26_numerics/complex/value_operations/1.cc: ... here.
+	* testsuite/26_numerics/complex/value_operations/dr387.cc: ...here.
+	* testsuite/26_numerics/complex/value_operations/constexpr.cc: New.
+
+2010-11-23  Benjamin Kosnik  
+	    Jason Merrill  
+
+	* testsuite/lib/libstdc++.exp: Use scanasm.
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_default_constructible): Add support for non-literal types.
+	(constexpr_single_value_constructible): Same.
+	* testsuite/20_util/enable_shared_from_this/cons/constexpr.cc:
+	Remove xfail.
+	* testsuite/20_util/shared_ptr/cons/constexpr.cc: Add.
+	* testsuite/20_util/unique_ptr/cons/constexpr.cc: Add.
+	* testsuite/20_util/weak_ptr/cons/constexpr.cc: Add.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line number.
+
+2010-11-23  Benjamin Kosnik  
+	    Jonathan Wakely  
+
+	* include/std/future (shared_future): Default ctor constexpr.
+	(future): Same.
+	* testsuite/30_threads/shared_future/cons/constexpr.cc: New.
+	* testsuite/30_threads/future/cons/constexpr.cc: New.
+
+2010-11-23  Uros Bizjak  
+
+	* testsuite/22_locale/collate/hash/char/wrapped_locale.cc: Require
+	additional locale name.
+	* testsuite/22_locale/collate/hash/char/wrapped_env.cc: Ditto.
+
+2010-11-18  Jonathan Wakely  
+
+	PR libstdc++/46455
+	* include/std/mutex: Define destructors for mutex types which use an
+	init function.
+	* include/ext/concurrence.h: Likewise.
+
+2010-11-18  Paolo Carlini  
+
+	PR libstdc++/26211 + N3168
+	* include/bits/istream.tcc (basic_istream<>::tellg, seekg(pos_type),
+	seekg(off_type, ios_base::seekdir)): Construct a sentry.
+	(basic_istream<>::seekg(pos_type), seekg(off_type, ios_base::seekdir)
+	putback, unget): Clear eofbit first, per N3168.
+	* testsuite/27_io/basic_istream/seekg/char/26211.cc: New.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Tweak.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+
+2010-11-18  H.J. Lu  
+
+	PR other/42670
+	* testsuite/abi/demangle/regression/cw-13.cc: Updated.
+
+2010-11-18  Paolo Carlini  
+
+	* include/debug/formatter.h (__truth): Remove, unused.
+	(__is_same): Remove, include cpp_type_traits.h instead.
+	(_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
+	_Is_iterator)): Adjust.
+	* include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant):
+	Likewise.
+
+2010-11-17  François Dumont  
+
+	* testsuite/lib/libstdc++.exp (check_v3_target_debug_mode): Clean
+	built exe.
+
+2010-11-15  Ralf Wildenhues  
+
+	PR libstdc++/45711
+	* src/Makefile.am (stamp-debug): Also adjust VPATH.
+	* src/Makefile.in: Regenerate.
+
+2010-11-15  Jie Zhang  
+
+	* testsuite/ext/profile/mh.cc: Add xfail for uclibc.
+
+2010-11-14  Matthias Klose  
+
+	* testsuite/28_regex/13_ecmascript: Remove, empty directory.
+	* testsuite/28_regex/02_definitions: Likewise.
+	* testsuite/29_atomics/headers/stdatomic.h: Likewise.
+
+2010-11-14  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Remove.
+	(_Rb_tree_const_iterator<>::_M_const_cast): Add.
+	(_Rb_tree<>::erase, _M_insert_unique_): Adjust.
+	* include/debug/map.h (map<>::erase, insert): Fix C++0x signatures.
+	* include/debug/multimap.h (multimap<>::erase, insert): Likewise.
+	* include/debug/set.h (set<>::erase, insert): Fix, only cosmetic
+	changes in this case.
+	* include/debug/multiset.h (multiset<>::erase, insert): Likewise.
+	* include/profile/set.h (set<>::insert): Remove redundant macro.
+	* include/profile/multiset.h (multiset<>::insert): Likewise.
+	* include/bits/stl_set.h (set<>::insert): Likewise.
+	* include/bits/stl_multiset.h (multiset<>::insert): Likewise.
+
+2010-11-12  Ian Lance Taylor  
+
+	PR other/46332
+	* testsuite/abi/demangle/abi_examples/14.cc (main): Change
+	expected demangling.
+
+2010-11-11  Paolo Carlini  
+
+	* include/bits/move.h (forward): Implement N3143, resolving US 90.
+	* testsuite/20_util/forward/a.cc: New.
+	* testsuite/20_util/forward/b.cc: Likewise.
+	* testsuite/20_util/forward/c_neg.cc: Likewise.
+	* testsuite/20_util/forward/d.cc: Likewise.
+	* testsuite/20_util/forward/e.cc: Likewise.
+	* testsuite/20_util/forward/f_neg.cc: Likewise.
+
+2010-11-10  François Dumont  
+
+	* include/profile/unordered_map (unordered_map<>::_M_profile_size):
+	Simplify, don't take a __new_size argument; adjust all callers.
+
+2010-11-10  Paolo Carlini  
+
+	PR libstdc++/44436 (partial)
+	PR libstdc++/46148
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert_, _M_insert_lower,
+	_M_insert_equal_lower, _M_insert_unique, _M_insert_equal,
+	_M_insert_unique_, _M_insert_equal_): Templatize in C++0x mode,
+	use _GLIBCXX_FORWARD throughout.
+	* include/bits/stl_map.h (map<>::insert(_Pair&&),
+	insert(const_iterator, _Pair&&), operator[](key_type&&): Add.
+	* include/bits/stl_set.h (set<>::insert(value_type&&),
+	insert(const_iterator, value_type&&)): Likewise.
+	* include/bits/stl_multimap.h (multimap<>::insert(_Pair&&),
+	insert(const_iterator, _Pair&&)): Likewise.
+	* include/bits/stl_multiset.h (multiset<>::insert(value_type&&),
+	insert(const_iterator, value_type&&)): Likewise.
+	* include/debug/set.h: Adjust.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/profile/set.h: Likewise.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* testsuite/23_containers/multimap/modifiers/insert/1.cc: New.
+	* testsuite/23_containers/multimap/modifiers/insert/2.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/insert/3.cc: Likewise.
+	* testsuite/23_containers/multimap/modifiers/insert/4.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/insert/2.cc: Likewise.
+	* testsuite/23_containers/set/modifiers/insert/3.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/insert/3.cc: Likewise.
+	* testsuite/23_containers/multiset/modifiers/insert/4.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/2.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/3.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/4.cc: Likewise.
+	* testsuite/23_containers/map/modifiers/insert/5.cc: Likewise.
+	* testsuite/23_containers/map/element_access/2.cc: Likewise.
+	* testsuite/23_containers/map/element_access/46148.cc: Likewise.
+
+	* include/bits/hashtable.h: Trivial naming changes.
+
+2010-11-10  Paolo Carlini  
+
+	* include/bits/hashtable.h (_Hashtable<>::_Insert_Conv_Type,
+	_Hashtable<>::_Insert_Return_Type): Change to private.
+
+2010-11-10  Jonathan Wakely  
+
+	* include/bits/unique_ptr.h: Use static_assert in constexpr
+	constructors.
+	* testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Remove xfails.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line number.
+
+2010-11-09  François Dumont  
+	    Johannes Singler  
+
+	* include/parallel/algobase.h (equal):  Call parallel variant
+	for applicable overloads.
+
+2010-11-09  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Add
+	and use it throughout.
+
+2010-11-09  Paolo Carlini  
+
+	PR libstdc++/46385
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line number.
+
+2010-11-08  Jonathan Wakely  
+
+	* include/bits/unique_ptr.h: Move misplaced static_assert and use
+	tuple's constexpr constructor in constexpr constructors.
+	* testsuite/20_util/unique_ptr/cons/ptr_deleter.cc: New.
+	* testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: New.
+
+2010-11-08  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Adjust scanned includes.
+	* include/std/forward_list: Make doxygen file markup unambiguous.
+
+2010-11-08  Jason Merrill  
+
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust
+	expected error.
+
+2010-11-08  Benjamin Kosnik  
+
+	* include/std/complex (operator==, !=): Mark constexpr.
+	* testsuite/26_numerics/complex/comparison_operators/constexpr.cc: New.
+
+2010-11-08  Paolo Carlini  
+
+	* include/bits/stl_tree.h (_Rb_tree<>::_M_erase_aux): Add.
+	(_Rb_tree<>::erase(iterator)): Fix in C++0x mode to take
+	const_iterator; remove redundant overload in C++03 mode.
+	(_Rb_tree<>::erase(iterator, iterator)): Likewise.
+	* include/bits/stl_map.h (map<>::erase): Adjust.
+	(map<>::insert): Fix signature in C++0x mode.
+	* include/bits/stl_set.h (set<>::erase): Likewise.
+	(set<>::insert): Likewise.
+	* include/bits/stl_multimap.h (multimap<>::erase): Likewise.
+	(multimap<>::insert): Likewise.
+	* include/bits/stl_multiset.h (multiset<>::erase): Likewise.
+	(multiset<>::insert): Fix signature in C++0x mode.
+	* include/profile/set.h: Adjust.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* testsuite/util/exception/safety.h (erase_base, insert_base):
+	Update.
+
+2010-11-07  Paolo Carlini  
+
+	* include/profile/unordered_map (unordered_map<>::operator[](_Key&&)):
+	Add.
+
+2010-11-07  Paolo Carlini  
+
+	* include/profile/bitset (bitset<>::bitset(), bitset<>::
+	bitset(unsigned long long)): Add constexpr specifier.
+
+2010-11-07  Paolo Carlini  
+
+	* include/debug/bitset: Do not derive from _Safe_sequence_base in
+	C++0x mode, otherwise std::bitset isn't a literal type anymore;
+	adjust everywhere.
+
+	* include/debug/bitset (bitset<>::bitset(), bitset<>::
+	bitset(unsigned long long)):  Add missing constexpr specifier.
+
+2010-11-05  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Add typeindex.
+
+	* testsuite/util/testsuite_common_types.h (constexpr_comparison_eq_ne,
+	constexpr_comparison_operators): New.
+	* testsuite/20_util/duration/comparisons: Move...
+	* testsuite/20_util/duration/comparison_operators: ...here.
+	* testsuite/20_util/duration/comparison_operators/constexpr.cc: New.
+	* testsuite/20_util/time_point/comparison_operators/constexpr.cc: Add.
+
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Adjust line
+	numbers.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+
+2010-11-05  Paolo Carlini  
+
+	* include/bits/shared_ptr.h (shared_ptr<>::__shared_ptr(),
+	shared_ptr<>::shared_ptr(nullptr_t), weak_ptr<>::weak_ptr(),
+	enable_shared_from_this::enable_shared_from_this()): Add constexpr
+	specifier.
+	* include/bits/shared_ptr_base.h (__shared_count::__shared_count(),
+	__shared_count::__shared_count(), __shared_ptr<>::__shared_ptr(),
+	__shared_ptr<>::__shared_ptr(nullptr_t), __weak_ptr<>::__weak_ptr(),
+	__enable_shared_from_this::__enable_shared_from_this()): Likewise.
+	* include/bits/unique_ptr.h (default_delete,
+	unique_ptr<>::unique_ptr(), unique_ptr<>::unique_ptr(nullptr_t)):
+	Likewise.
+	* testsuite/20_util/default_delete/cons/constexpr.cc: Do not xfail.
+	* testsuite/20_util/shared_ptr/cons/constexpr.cc: Remove, the test
+	cannot work for a non-literal type like std::shared_ptr.
+	* testsuite/20_util/weak_ptr/cons/constexpr.cc: Likewise.
+	* testsuite/util/testsuite_common_types.h: Add comments.
+	* testsuite/20_util/unique_ptr/cons/constexpr.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Adjust dg-error line
+	numbers.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-11-05  Benjamin Kosnik  
+
+	* doc/doxygen/user.cfg.in: Remove tr1_impl headers.
+
+	* testsuite/tr1/4_metaprogramming/integral_constant/requirements/
+	constexpr_data.cc: New.
+
+	* testsuite/util/testsuite_tr1.h (LType, LTypeDerived, NLType): New.
+	* testsuite/20_util/is_literal_type/value.cc: New.
+	* testsuite/20_util/is_literal_type/requirements/typedefs.cc: Name.
+	* testsuite/20_util/is_literal_type/requirements/
+	explicit_instantiation.cc: New.
+
+2010-11-04  Paolo Carlini  
+
+	PR libstdc++/46303
+	* testsuite/30_threads/call_once/constexpr.cc: Add missing dg-require
+	directives.
+	* testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
+	* testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
+
+2010-11-04  Paolo Carlini  
+
+	* include/std/ratio (ratio_add, ratio_subtract, ratio_multiply,
+	ratio_divide): Declare the data members constexpr.
+	* testsuite/20_util/ratio/requirements/constexpr_data.cc: Extend.
+
+2010-11-03  Benjamin Kosnik  
+
+	* include/std/tuple (tuple): Make default constructors constexpr.
+	* testsuite/20_util/tuple/cons/constexpr.cc: Add.
+
+	* testsuite/18_support/initializer_list/requirements/
+	constexpr_functions.cc: Add.
+	* testsuite/18_support/initializer_list/constexpr.cc: Add.
+
+2010-11-03  Paolo Carlini  
+
+	* include/std/limits (__glibcxx_digits10, __glibcxx_max_digits10):
+	Use 643L instead of 643 to avoid overflows on 16-bit machines.
+	* include/ext/numeric_traits.h (__glibcxx_max_digits10): Likewise.
+
+2010-11-02  Benjamin Kosnik  
+
+	* include/std/chrono: Use typedefs.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
+	line numbers.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
+
+2010-11-02  Paolo Carlini  
+
+	* include/c_global/cmath (fpclassify, isfinite, isinf, isnan,
+	isnormal, signbit, isgreater, isgreaterequal, isless, islessequal,
+	islessgreater, isunordered): Remove spurious duplicate definition
+	added in the last commit.
+
+	* include/tr1/cmath: Remove tr1_impl leftover macro.
+
+2010-11-02  Paolo Carlini  
+
+	* include/tr1_impl/cinttypes: Remove, move contents to C++0x
+	and TR1 headers.
+	* include/tr1_impl/cstdlib: Likewise.
+	* include/tr1_impl/cstdio: Likewise.
+	* include/tr1_impl/cctype: Likewise.
+	* include/tr1_impl/boost_sp_counted_base.h: Likewise.
+	* include/tr1_impl/cmath: Likewise.
+	* include/tr1_impl/cfenv: Likewise.
+	* include/tr1_impl/utility: Likewise.
+	* include/tr1_impl/complex: Likewise.
+	* include/tr1_impl/cwchar: Likewise.
+	* include/tr1_impl/type_traits: Likewise.
+	* include/tr1_impl/cstdint: Likewise.
+	* include/tr1_impl/regex: Likewise.
+	* include/tr1_impl/array: Likewise.
+	* include/tr1_impl/cwctype: Likewise.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+	* src/condition_variable.cc: Adjust; consistently use
+	_GLIBCXX_BEGIN_NAMESPACE and _GLIBCXX_END_NAMESPACE.
+	* src/mutex.cc: Likewise.
+	* src/future.cc: Likewise.
+	* src/atomic.cc: Likewise.
+	* src/chrono.cc: Likewise.
+	* src/thread.cc: Likewise.
+	* include/std/tuple: Likewise.
+	* include/std/utility: Likewise.
+	* include/std/thread: Likewise.: Likewise.
+	* include/std/type_traits: Likewise.
+	* include/std/memory: Likewise.
+	* include/std/future: Likewise.
+	* include/std/ratio: Likewise.
+	* include/std/chrono: Likewise.
+	* include/std/condition_variable: Likewise.
+	* include/std/mutex: Likewise.
+	* include/std/functional: Likewise.
+	* include/std/complex: Likewise.
+	* include/std/typeindex: Likewise.
+	* include/std/array: Likewise.
+	* include/bits/regex_compiler.h: Likewise.
+	* include/bits/regex_grep_matcher.tcc: Likewise.
+	* include/bits/regex_grep_matcher.h: Likewise.
+	* include/bits/regex_constants.h: Likewise.
+	* include/bits/regex_cursor.h: Likewise.
+	* include/bits/regex_nfa.tcc: Likewise.
+	* include/bits/shared_ptr_base.h: Likewise.
+	* include/bits/regex_nfa.h: Likewise.
+	* include/bits/random.tcc: Likewise.
+	* include/bits/regex.h: Likewise.
+	* include/bits/random.h: Likewise.
+	* include/bits/regex_error.h: Likewise.
+	* include/c_global/cinttypes: Likewise.
+	* include/c_global/cstdlib: Likewise.
+	* include/c_global/cstdio: Likewise.
+	* include/c_global/cctype: Likewise.
+	* include/c_global/cmath: Likewise.
+	* include/c_global/cfenv: Likewise.
+	* include/c_global/cwchar: Likewise.
+	* include/c_global/cstdint: Likewise.
+	* include/c_global/cwctype: Likewise.
+	* include/tr1/shared_ptr.h: Likewise.
+	* include/tr1/cinttypes: Likewise.
+	* include/tr1/cstdio: Likewise.
+	* include/tr1/cfenv: Likewise.
+	* include/tr1/utility: Likewise.
+	* include/tr1/cwchar: Likewise.
+	* include/tr1/type_traits: Likewise.
+	* include/tr1/memory: Likewise.
+	* include/tr1/cstdint: Likewise.
+	* include/tr1/regex: Likewise.
+	* include/tr1/cwctype: Likewise.
+	* include/tr1/cstdlib: Likewise.
+	* include/tr1/cctype: Likewise.
+	* include/tr1/cmath: Likewise.
+	* include/tr1/complex: Likewise.
+	* include/tr1/array: Likewise.
+	* include/c_compatibility/fenv.h: Likewise.
+	* include/c_compatibility/stdint.h: Likewise.
+	* include/c_compatibility/inttypes.h: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+	* testsuite/20_util/make_unsigned/requirements/
+	typedefs_neg.cc: Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-11-02  Paolo Carlini  
+
+	* include/bits/atomic_0.h (_ATOMIC_CMPEXCHNG_): Use C-style cast.
+
+2010-11-02  Rainer Orth  
+
+	PR target/45693
+	* configure.host (osf*): Set os_include_dir to os/generic.
+	Add -lpthread to OPT_LDFLAGS.
+
+2010-11-02  Paolo Carlini  
+
+	* include/std/bitset (_Base_bitset<>_Base_bitset(unsigned long long)):
+	Convert __val to _WordT.
+
+2010-11-01  Benjamin Kosnik  
+
+	* include/std/chrono: Extend constexpr application.
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_default_constructible, constexpr_single_value_constructible)
+	: Add comments about implied constraints.
+	* testsuite/20_util/duration/cons/constexpr.cc: Activate all tests.
+	* testsuite/20_util/time_point/cons/constexpr.cc: Same.
+	* testsuite/20_util/time_point/requirements/constexpr_functions.cc:
+	Same.
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust line
+	numbers.
+	* testsuite/20_util/time_point_cast/constexpr.cc: New.
+
+	* include/std/bitset: Use __SIZEOF_* macros to re-create original
+	logic instead of slipshod application of
+	std::numeric_limits::max() macros.
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_default_constructible): Modify.
+
+	* include/std/chrono: Tested constexpr.
+	* testsuite/20_util/duration_cast/constexpr.cc: New.
+	* testsuite/20_util/time_point/cons/constexpr.cc: New.
+
+	* testsuite/20_util/duration/cons/constexpr.cc: Add single_value tests.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
+	line numbers.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
+	* testsuite/20_util/time_point/cons/constexpr.cc: Add single_value
+	tests.
+	* testsuite/20_util/time_point/requirements/constexpr_functions.cc: Add.
+
+	* testsuite/util/testsuite_common_types.h: Adjust init.
+
+	* include/std/chrono (duration): Remove defaulted constructor,
+	replace with mem-init list.
+	* testsuite/20_util/duration/cons/constexpr.cc: Add single value.
+	* testsuite/20_util/duration/requirements/constexpr_functions.cc:
+	Add non-static member functions.
+
+	* testsuite/20_util/default_delete/cons/constexpr.cc: New, xfail.
+	* testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Same.
+	* testsuite/20_util/shared_ptr/cons/constexpr.cc: Same.
+	* testsuite/20_util/time_point/requirements/constexpr_functions.cc:
+	Same.
+	* testsuite/20_util/unique_ptr/cons/constexpr.cc: Same.
+	* testsuite/20_util/weak_ptr/cons/constexpr.cc: Same.
+
+	* include/std/bitset: Add constexpr as per N3126 draft.
+	* testsuite/23_containers/bitset/cons/constexpr.cc: New.
+	* testsuite/23_containers/bitset/requirements/constexpr_functions.cc:
+	New.
+
+	* testsuite/util/testsuite_common_types.h: Reset condition.
+
+	* include/bits/random.h: Remove misleading comments.
+	* include/bits/regex.h: Add constexpr.
+	* testsuite/28_regex/05_constants/syntax_option_type.cc: Add tests.
+	* testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: New.
+
+	PR libstdc++/46134
+	* include/std/chrono: Use default constructor.
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_default_constructible): Adjust condition.
+
+	PR libstdc++/46133
+	* include/std/complex: Adjust complex specialization default
+	constructors for constexpr.
+	* testsuite/26_numerics/complex/cons/constexpr.cc: Enable tests.
+
+	* include/bits/random.h: Adjust for constexpr as per N3126 draft.
+	* testsuite/26_numerics/random/discard_block_engine/requirements/
+	constexpr_data.cc: New.
+	* testsuite/26_numerics/random/discard_block_engine/requirements/
+	constexpr_functions.cc: New.
+	* testsuite/26_numerics/random/independent_bits_engine/requirements/
+	constexpr_functions.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/
+	constexpr_data.cc: New.
+	* testsuite/26_numerics/random/linear_congruential_engine/requirements/
+	constexpr_functions.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
+	constexpr_data.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
+	constexpr_functions.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/requirements/
+	constexpr_data.cc: New.
+	* testsuite/26_numerics/random/shuffle_order_engine/requirements/
+	constexpr_functions.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
+	constexpr_data.cc: New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
+	constexpr_functions.cc: New.
+
+	* include/bits/stream_iterator.h: Add constexpr as per N3126 draft.
+	* include/bits/streambuf_iterator.h: Same.
+	* include/std/complex: Same.
+	* testsuite/24_iterators/istream_iterator/cons/constexpr.cc: New.
+	* testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc: New.
+	* testsuite/26_numerics/complex/cons/constexpr.cc: New.
+	* testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
+	New.
+
+	* include/bits/char_traits.h: Add constexpr as per N3126 draft.
+	* testsuite/21_strings/char_traits/requirements/constexpr_functions.cc:
+	New.
+
+	* include/tr1_impl/array: Add constexpr as per N3126 draft.
+	* testsuite/23_containers/array/requirements/
+	constexpr_functions.cc: New.
+
+	* include/bits/shared_ptr.h: Revert changes.
+	* include/bits/unique_ptr.h: Same.
+
+	* include/std/chrono: Adjust.
+	* include/tr1_impl/type_traits: Same.
+
+	* testsuite/util/testsuite_common_types.h: Add test functors.
+	* testsuite/20_util/duration/cons/constexpr.cc: New.
+	* testsuite/20_util/duration/requirements/constexpr_functions.cc: Same.
+	* testsuite/20_util/pair/cons/constexpr.cc: Same.
+	* testsuite/20_util/ratio/requirements/constexpr_data.cc: Same.
+	* testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc: Same.
+	* testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc: Same.
+	* testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc: Same.
+	* testsuite/30_threads/call_once/constexpr.cc: Same.
+	* testsuite/30_threads/mutex/cons/constexpr.cc: Same.
+	* testsuite/30_threads/once_flag/cons/constexpr.cc: Same.
+	* testsuite/tr1/4_metaprogramming/integral_constant/requirements/
+	constexpr_data.cc: Same.
+
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.
+
+	* include/bits/allocator.h: Add constexpr as per N3126 draft.
+	* include/bits/ios_base.h: Same.
+	* include/bits/shared_ptr.h: Same.
+	* include/bits/unique_ptr.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/stl_pair.h: Same.
+	* include/std/tuple: Same.
+	* include/tr1_impl/type_traits: Same.
+	* include/std/chrono: Same.
+	* include/std/ratio: Same.
+	* include/std/mutex: Same.
+	* src/mutex.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust.
+	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+	* doc/doxygen/user.cfg.in: Replace _GLIBCXX_USE_CONSTEXPR,
+	_GLIBCXX_CONSTEXPR for doxygen generation.
+
+	* src/limits.cc: Undef.
+	* testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust.
+	* testsuite/29_atomics/atomic_address/cons/constexpr.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.c: Same.
+	* testsuite/18_support/numeric_limits/constexpr.cc: To...
+	* testsuite/18_support/numeric_limits/requirements/
+	constexpr_data.cc, constexpr_functions.cc: ...this
+
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_single_value_constructible): Add.
+	* testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust name.
+	* testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/constexpr.cc: New.
+	* testsuite/18_support/numeric_limits/constexpr.cc: New.
+
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/29_atomics/atomic/cons/constexpr.cc: Same.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same.
+	* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same.
+
+	* include/bits/c++config (_GLIBCXX_CONSTEXPR): Add.
+	(_GLIBCXX_USE_CONSTEXPR): Add.
+	* include/std/limits: Use it.
+	* src/limits.cc: Adjust.
+	* testsuite/ext/profile/mutex_extensions.cc: Change line number.
+
+	* include/bits/atomic_0.h: Rework for N3126 draft, add constexpr.
+	* include/bits/atomic_2.h: Same.
+	* include/bits/atomic_base.h: Same.
+	* include/std/atomic: Same.
+	* src/atomic.cc: Same.
+	* include/bits/atomicfwd_c.h: Remove.
+	* include/bits/atomicfwd_cxx.h: Remove.
+	* include/c_compatibility/stdatomic.h: Remove.
+	* include/Makefile.am: Remove atomicfwd_c.h, atomicfwd_cxx.h,
+	stdatomic.h.
+	* include/Makefile.in: Regenerate.
+	* doc/xml/manual/using.xml: Update list of header files for changes.
+	* testsuite/util/testsuite_common_types.h
+	(constexpr_constructible): Add.
+	* testsuite/29_atomics/atomic/cons/constexpr.cc: New.
+	* testsuite/29_atomics/atomic_integral/cons/constexpr.cc: New.
+	* testsuite/17_intro/headers/c++200x/stdc++.cc: Modify.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/cons/1.cc: Same.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
+	* testsuite/29_atomics/headers/atomic/macros.cc: Same.
+	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same.
+	* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Same.
+	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Remove.
+	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same.
+	* testsuite/29_atomics/atomic_flag/clear/1.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/functions.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/macros.c: Same.
+	* testsuite/29_atomics/headers/stdatomic.h/types.c: Same.
+
+	* testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16.
+
+2010-11-01  Jason Merrill  
+
+	* libsupc++/initializer_list: Decorate with constexpr.
+
+2010-11-01  Jonathan Wakely  
+
+	PR libstdc++/45999
+	* python/libstdcxx/v6/printers.py (StdVectorPrinter): Replace
+	conditional expression with backward-compatible if-else.
+
+2010-11-01  Jie Zhang  
+
+	* config/abi/pre/gnu.ver: Export __emutls_v._ZSt11__once_call
+	and __emutls_v._ZSt15__once_callable.
+
+2010-10-31  Paolo Carlini  
+
+	* testsuite/23_containers/bitset/cons/dr1325-2.cc: Fix typo.
+	* testsuite/20_util/hash/quality.cc: Avoid -Wall warnings.
+	* testsuite/20_util/hash/chi2_quality.cc: Likewise.
+
+2010-10-29  Paolo Carlini  
+
+	* include/bits/stl_function.h (_Select1st<>::operator()): Add
+	templatized overloads.
+	* include/bits/hashtable_policy.h (_Select1st): Remove; revert
+	everything to std::_Select1st.
+	* include/bits/unordered_map.h: Likewise.
+
+2010-10-28  Paolo Carlini  
+
+	PR libstdc++/44436 (partial)
+	* include/bits/hashtable.h (_Hashtable<>::insert(value_type&&),
+	insert(_Pair&&), insert(const_iterator, value_type&&),
+	insert(const_iterator, _Pair&&)): Add.
+	(_M_allocate_node, _M_insert, _M_insert_bucket): Templatize.
+	* include/bits/hashtable_policy.h (__detail::_Select1st): Add; use
+	it throughout.
+	(_Map_base<>::operator[](_Key&&)): Add.
+	* include/bits/unordered_map.h: Use __detail::_Select1st throughout.
+	* include/debug/unordered_map: Update.
+	* include/debug/unordered_set: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* testsuite/util/testsuite_rvalref.h (struct hash): Add;
+	minor tweaks throughout, use deleted special members.
+	* testsuite/23_containers/unordered_map/insert/map_single_move-1.cc:
+	New.
+	* testsuite/23_containers/unordered_map/insert/map_single_move-2.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/insert/array_syntax_move.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/insert/
+	multimap_single_move-1.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/insert/
+	multimap_single_move-2.cc: Likewise.
+	* testsuite/23_containers/unordered_set/insert/set_single_move.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/insert/
+	multiset_single_move.cc: Likewise.
+
+	* testsuite/23_containers/unordered_map/insert/array_syntax.cc:
+	Minor cosmetic changes.
+
+2010-10-27  Jason Merrill  
+
+	* include/std/type_traits (is_literal_type): New.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust.
+
+2010-10-26  Paolo Carlini  
+
+	* testsuite/lib/libstdc++.exp ([check_v3_target_normal_mode]): Add.
+	* testsuite/lib/dg-options.exp ([dg-require-normal-mode]): Likewise.
+	* testsuite/23_containers/headers/forward_list/synopsis.cc: Use the
+	latter.
+	* testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/set/synopsis.cc: Likewise.
+	* testsuite/23_containers/headers/map/synopsis.cc: Likewise.
+
+2010-10-25  Paolo Carlini  
+
+	* include/bits/forward_list.h (_Fwd_list_node_base::swap): Remove.
+	(_Fwd_list_base<>::_Fwd_list_base(_Fwd_list_base&&),
+	_Fwd_list_base<>::_Fwd_list_base(_Fwd_list_base&&, const _Alloc&)):
+	Don't use swap.
+	(forward_list<>::swap): Just use std::swap.
+
+	* include/bits/forward_list.h (_Fwd_list_base<>::_Fwd_list_base(),
+	_Fwd_list_base(const _Alloc&)): Don't zero again _M_next.
+
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-10-25  Paolo Carlini  
+
+	* include/bits/hashtable.h (_Hashtable<>:_M_get_Value_allocator):
+	Remove, unused.
+
+2010-10-24  François Dumont  
+
+	* src/debug.cc: Fix parameter indexes in __msg_valid_range2 message.
+	Replace 'before begin' decription in 'before-begin' for consistency
+	with 'paste-the-end'.
+
+2010-10-18  Paolo Carlini  
+
+	PR libstdc++/45866
+	* include/std/ratio (ratio<>::type): Add.
+	(ratio_add<>::num, ratio_add<>::den,
+	ratio_subtract<>::num, ratio_subtract<>::den,
+	ratio_multiply<>::num, ratio_multiply<>::den,
+	ratio_divide<>::num, ratio_divide<>::den): Likewise.
+	* testsuite/20_util/ratio/operations/45866.cc: New.
+
+2010-10-17  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::erase_after): Return
+	an iterator.
+	(_M_erase_after): Return _Fwd_list_node_base*.
+	* include/bits/forward_list.tcc: Likewise.
+	* include/debug/forward_list: Likewise.
+	* testsuite/23_containers/forward_list/modifiers/3.cc: Update
+	and extend.
+	* testsuite/util/exception/safety.h (erase_base>):
+	Adjust.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-10-17  Paolo Carlini  
+
+	PR libstdc++/43554
+	* include/profile/forward_list: New file.
+	* include/std/forward_list: Include .
+	* include/Makefile.am: Add.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Adjust.
+	* include/Makefile.in: Regenerate.
+
+2010-10-15  Paolo Carlini  
+
+	* include/std/functional (function<>::operator==, operator!=):
+	Remove, per LWG 1240.
+	* testsuite/20_util/function/cmp/cmp_neg.cc: Adjust dg-* directives.
+
+2010-10-13  Jonathan Wakely  
+
+	PR libstdc++/45990
+	* include/bits/regex.h (regex_traits::isctype): DR 1337.
+
+2010-10-13  Paolo Carlini  
+
+	* include/bits/random.h (discrete_distribution<>::param_type::
+	param_type()): Default construct the vectors.
+	(discrete_distribution<>::param_type::probabilities): Adjust.
+	(discrete_distribution<>::probabilities): Likewise.
+	(discrete_distribution<>::max): Likewise.
+	(piecewise_constant_distribution<>::param_type::
+	param_type()): Default construct the vectors.
+	(piecewise_constant_distribution<>::param_type::intervals): Adjust.
+	(piecewise_constant_distribution<>::param_type::densities): Likewise.
+	(piecewise_constant_distribution<>::intervals): Likewise.
+	(piecewise_constant_distribution<>::densities): Likewise.
+	(piecewise_constant_distribution<>::min): Likewise.
+	(piecewise_constant_distribution<>::max): Likewise.
+	(piecewise_linear_distribution<>::param_type::
+	param_type()): Default construct the vectors.
+	(piecewise_linear_distribution<>::param_type::intervals): Adjust.
+	(piecewise_linear_distribution<>::param_type::densities): Likewise.
+	(piecewise_linear_distribution<>::intervals): Likewise.
+	(piecewise_linear_distribution<>::densities): Likewise.
+	(piecewise_linear_distribution<>::min): Likewise.
+	(piecewise_linear_distribution<>::max): Likewise.
+	* include/bits/random.tcc (discrete_distribution<>::param_type::
+	_M_initialize): Deal quickly with raw _M_prob equivalent to
+	a default constructed param_type, just clear the vector.
+	(discrete_distribution<>::operator()): Early return 0 for a
+	default constructed distribution.
+	(piecewise_constant_distribution<>::param_type::_M_initialize):
+	Likewise for _M_int and _M_den.
+	(piecewise_constant_distribution<>::operator()): Early return
+	for a default constructed distribution.
+	(piecewise_linear_distribution<>::param_type::_M_initialize):
+	Likewise.
+	(piecewise_linear_distribution<>::operator()): Early return
+	for a default constructed distribution.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	call-default.cc: New.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/call-default.cc: Likewise.
+
+2010-10-12  Paolo Carlini  
+
+	* include/bits/random.h (discrete_distribution<>::param_type):
+	Disable move operations.
+	(piecewise_constant_distribution<>::param_type): Likewise.
+	(piecewise_linear_distribution<>::param_type): Likewise.
+
+	* include/bits/random.h (discrete_distribution<>::param_type::
+	param_type()): Simplify, don't use _M_initialize.
+	(piecewise_constant_distribution<>::param_type::param_type()):
+	Likewise.
+	(piecewise_linear_distribution<>::param_type::param_type()):
+	Likewise.
+
+2010-10-12  Paolo Carlini  
+
+	* include/bits/random.tcc (piecewise_linear_distribution<>::
+	operator()): Don't crash when the dist is default-constructed.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/call-default.cc: New.
+
+2010-10-11  Jonathan Wakely  
+
+	* testsuite/23_containers/bitset/cons/2.cc: Tweak.
+
+2010-10-11  Paolo Carlini  
+
+	* include/std/bitset (bitset<>::bitset(const _CharT*,
+	typename std::basic_string<>::size_type, _CharT, _CharT)):
+	Implement new proposed resolution for DR 1325.
+	* include/debug/bitset: Likewise.
+	* include/profile/bitset: Likewise.
+	* testsuite/23_containers/bitset/cons/dr1325-1.cc: New.
+	* testsuite/23_containers/bitset/cons/dr1325-2.cc: Likewise.
+
+2010-10-11  Benjamin Kosnik  
+
+	* doc/xml/api.xml: Add link to 4.5 generated docs.
+
+2010-10-08  Paolo Carlini  
+
+	* include/std/future (_Result_alloc): Derive from _Alloc,
+	exploit the Empty Base Optimization.
+
+2010-10-08  Jonathan Wakely  
+
+	PR libstdc++/45403
+	* python/libstdcxx/v6/printers.py: Check for lazy_string support.
+
+2010-10-08  Paolo Carlini  
+
+	* include/std/future (uses_allocator,>): Add;
+	minor formatting tweaks.
+
+2010-10-08  Jonathan Wakely  
+
+	* include/std/future: Enable allocator support.
+	* testsuite/30_threads/packaged_task/cons/alloc.cc: Expect PASS.
+	* testsuite/30_threads/promise/cons/alloc.cc: Expect PASS.
+
+2010-10-08  Jonathan Wakely  
+
+	PR libstdc++/45893
+	* include/std/functional (bind): Implement DR 817 and add support
+	for volatile-qualified call wrappers.
+	* include/std/mutex (call_once): Implement DR 891.
+	* include/std/thread (thread::thread): Implement DR 929.
+	* include/std/future: Optimise use of std::bind.
+	* testsuite/20_util/bind/cv_quals.cc: Test volatile-qualification.
+	* testsuite/20_util/bind/move.cc: New.
+
+2010-10-07  Hans-Peter Nilsson  
+
+	PR libstdc++/45841
+	* testsuite/lib/libstdc++.exp (check_v3_target_fileio): Rewrite to
+	use an actual testsuite file and machinery, not ".".  Specifically
+	check that incorrectly seeking backwards from 0 yields an error,
+	and that reading, seeking backwards and reading again works.
+
+	* testsuite/libstdc++-dg/conformance.exp: Apply
+	check_v3_target_fileio as a gate for tests in
+	subdirectories matching the substring _filebuf.
+
+2010-10-07  Paolo Carlini  
+
+	* include/bits/locale_facets_nonio.tcc (time_get<>::
+	_M_extract_via_format): Tighten somewhat error checking.
+	* testsuite/22_locale/time_get/get_time/char/6.cc: New.
+	* testsuite/22_locale/time_get/get_time/wchar_t/6.cc: Likewise.
+
+2010-10-07  Jonathan Wakely  
+
+	PR libstdc++/45924
+	* include/std/functional (_Bind_result::operator()): Do not expand
+	template parameter pack in forward call.
+	* testsuite/20_util/bind/45924.cc: New.
+
+2010-10-06  Paolo Carlini  
+
+	* include/std/functional (struct _Weak_result_type_impl): Add
+	specializazions for cv-qualified function types, for variadic
+	function types and pointers and references to function types,
+	and for pointers to member function types.
+	(struct _Reference_wrapper_base): Add specializations for
+	cv-qualified unary and binary function types.
+	* testsuite/20_util/reference_wrapper/result_type.cc: New.
+	* testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
+
+2010-10-06  Rainer Orth  
+
+	PR libstdc++/45863
+	* scripts/extract_symvers: Restore revision 164879.
+	Only use pvs on SunOS.
+
+2010-10-05  David Krauss  
+
+	PR libstdc++/45841
+	* include/bits/fstream.h (basic_filebuf::underflow): Overflow
+	success does not preclude returning failure.
+	(basic_filebuf::pbackfail): Likewise.
+	(basic_filebuf::xsputn): Fix indentation problem.
+	(basic_filebuf::xsgetn): Likewise. Also, add similar overflow
+	call to enable optimized case from write mode.
+	* testsuite/27_io/basic_filebuf/underflow/char/45841.cc: New.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc: Likewise.
+
+2010-10-05  Jonathan Wakely  
+
+	* include/bits/locale_facets_nonio.h (time_get::get_time): Doc typo.
+	(time_get::get_date): Likewise.
+
+2010-10-05  Paolo Carlini  
+
+	* include/std/type_traits (_GLIBCXX_HAS_NESTED_TYPE): Add.
+	* include/std/functional (_Has_result_type_helper,
+	_Has_result_type): Remove; use the above to define __has_result_type.
+	* include/bits/stl_iterator_base_types.h: Use the above to define
+	__has_iterator_category.
+	* include/bits/allocator.h (__has_allocator_type): Use the above.
+	* include/bits/cpp_type_traits.h (__has_iterator_category,
+	__is_iterator): Remove.
+
+2010-10-05  Sebastian Huber  
+	    Jonathan Wakely  
+
+	PR libstdc++/44647
+	* libsupc++/Makefile.am (sources): Add bad_alloc.cc.
+	* libsupc++/new_handler.cc (bad_alloc): Move to ...
+	* libsupc++/bad_alloc.cc (bad_alloc): ... here, new file.
+	* libsupc++/Makefile.in: Regenerate.
+
+2010-10-04  Paolo Carlini  
+
+	* include/std/functional (function<>::swap): Use std::swap.
+	* include/tr1/functional (function<>::swap): Likewise.
+
+2010-10-04  Andreas Schwab  
+
+	* acinclude.m4 (GLIBCXX_ENABLE): Properly quote argument to
+	AC_HELP_STRING.  Double quote expansion of _g_help.
+	(GLIBCXX_ENABLE_LIBSTDCXX_TIME): Double quote third argument of
+	GLIBCXX_ENABLE.
+	(GLIBCXX_ENABLE_CHEADERS): Likewise.
+	(GLIBCXX_ENABLE_CLOCALE): Likewise.
+	(GLIBCXX_ENABLE_ALLOCATOR): Likewise.
+	(GLIBCXX_ENABLE_CSTDIO): Likewise.
+	(GLIBCXX_ENABLE_SYMVERS): Likewise.
+	* configure: Regenerate.
+
+2010-10-02  H.J. Lu  
+
+	PR libstdc++/45863
+	* scripts/extract_symvers: Revert the pvs change.
+
+2010-10-01  Benjamin Kosnik  
+
+	* scripts/extract_symvers: Add support for tracking TLS symbols.
+	* testsuite/util/testsuite_abi.h (symbol::category): Add tls type.
+	* testsuite/util/testsuite_abi.cc: Set symbol type to tls when
+	appropriate, collect size info.
+
+2010-10-01  Rainer Orth  
+
+	* scripts/extract_symvers: Use pvs if present.
+	* config/abi/post/solaris2.8/baseline_symbols.txt: New file.
+	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+	* configure.host (i?86-*-solaris2*): Remove.
+	(sparc*-*-solaris2*): Remove.
+	(*-*-solaris2.[89]): Use solaris2.8 baseline.
+	(*-*-solaris2.1[0-9]): Use solaris2.10 baseline.
+	* testsuite/Makefile.am (new-abi-baseline): Add missing /.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-09-30  Michael Eager  
+
+	* config/cpu/microblaze/cpu_defines.h: New. Define
+	_GLIBCXX_NO_VERBOSE_TERMINATE for MicroBlaze.
+
+2010-09-29  Paolo Carlini  
+
+	* include/Makefile.am: Add debug/forward_list.
+	* include/Makefile.in: Regenerate.
+
+	* testsuite/util/testsuite_container_traits.h (traits_base):
+	Add has_erase_after and hash_insert_after typedefs.
+	(traits>): Adjust.
+	* testsuite/util/exception/safety.h (erase_point, erase_range,
+	insert_point): Deal correctly with forward_list.
+	* include/Makefile.am: Add.
+
+2010-09-29  François Dumont  
+
+	* src/debug.cc: Add forward_list specific debug messages.
+	* include/debug/forward_list: New.
+	* include/debug/formatter.h: Add debug message ids and before begin
+	iterator state.
+	* include/debug/macros.h (__glibcxx_check_insert_after,
+	__glibcxx_check_insert_range_after, __glibcxx_check_erase_after,
+	__glibcxx_check_erase_range_after): Add.
+	* include/debug/safe_iterator.h (_BeforeBeginHelper): Add.
+	(_Safe_iterator<>::_M_before_dereferenceable,
+	_Safe_iterator<>::_M_is_before_begin): Add.
+	(_Safe_iterator<>::_M_dereferenceable, _Safe_iterator<>::_M_is_end,
+	_Safe_iterator<>::_M_incrementable): Adjust.
+	* include/std/forward_list: Include debug/forward when _GLIBCXX_DEBUG
+	defined.
+	* include/bits/forward_list.h, forward_list.tcc: Put in std::__norm
+	when debug mode is active.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Fix to compile
+	even in debug mode.
+	* testsuite/23_containers/forward_list/debug/erase_after1.cc,
+	erase_after2.cc, erase_after3.cc, erase_after4.cc, erase_after5.cc,
+	insert_after1.cc,erase_after6.cc, erase_after7.cc, insert_after2.cc,
+	erase_after8.cc, insert_after3.cc, erase_after9.cc: New
+
+2010-09-28  DJ Delorie  
+
+	* libsupc++/hash_bytes.cc (_Hash_bytes): Replace "clength" with
+	"len" for "unusual sizeof(size_t)" case.
+
+2010-09-28  Matt Austern  
+
+	* testsuite/20_util/hash/chi2_quality.cc: New.
+	* testsuite/20_util/hash/quality.cc: Likewise.
+
+2010-09-27  Paolo Carlini  
+
+	* include/bits/allocator.h (allocator_arg_t, allocator_arg,
+	uses_allocator): Add.
+	* testsuite/20_util/uses_allocator/value.cc: New.
+	* testsuite/20_util/uses_allocator/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/uses_allocator/requirements/
+	explicit_instantiation.cc: Likewise.
+	* include/bits/stl_queue.h (uses_allocator,
+	uses_allocator): Add.
+	* include/bits/stl_stack.h (uses_allocator): Likewise.
+
+	* include/bits/stl_pair.h (piecewise_construct): Add.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line number.
+
+2010-09-27  Paolo Carlini  
+
+	* include/c_std/cmath (__pow_helper): Remove.
+	(__cmath_power): Remove declaration.
+	* include/c_global/cmath: Likewise.
+	* include/std/complex (__complex_pow_unsigned): Add.
+	(pow(const complex<_Tp>&, int)): Use the latter.
+	* include/c_std/cmath.tcc: Remove file.
+	* include/c_global/cmath.tcc: Likewise.
+	* acinclude.m4: Adjust.
+	* include/Makefile.am: Likewise.
+	* configure: Regenerate.
+	* include/Makefile.in: Likewise.
+
+2010-09-22  David Krauss  
+
+	PR libstdc++/45628
+	* include/bits/fstream.tcc (basic_filebuf::underflow): Add state
+	transition to avoid modality requiring seekoff(0,ios::cur).
+	(basic_filebuf::pbackfail): Likewise.
+	(basic_filebuf::overflow): Likewise.
+	(basic_filebuf::_M_seek): Avoid minor unnecessary conversion.
+	(basic_filebuf::seekoff): Remove code to _M_get_ext_pos; make
+	(0, ios::cur) a special case preserving buffer contents.
+	(basic_filebuf::_M_get_ext_pos): New function to obtain status
+	about codecvt extern_t buffer for overflow and seekoff.
+	* include/std/fstream (basic_filebuf::_M_get_ext_pos): Likewise.
+	* config/abi/pre/gnu.ver: Export new symbols.
+	* testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc: New,
+	verifies that seekoff(0, ios::cur) preserves buffers.
+	* testsuite/27_io/basic_filebuf/seekoff/45628-2.cc: Likewise.
+	for codecvt case. More lenient as it may still flush put area.
+	* testsuite/27_io/basic_filebuf/seekoff/char/4.cc: Modify to
+	check that seekoff is not required between read and write.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc: Remove.
+	* testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc: Likewise.
+	* testsuite/util/testsuite_character.h (codecvt::do_length): Comply
+	with 22.2.1.5.2/10 "Returns ... the LARGEST value in the range..."
+
+2010-09-22  Paolo Carlini  
+
+	* include/bits/functional_hash.h (__hash_base): Add.
+	(hash): Derive from __hash_base instead.
+	* include/debug/bitset (hash): Likewise.
+	* include/debug/vector (hash): Likewise.
+	* include/std/system_error (hash): Likewise.
+	* include/std/thread (hash): Likewise.
+	* include/std/bitset (hash): Likewise.
+	* include/profile/bitset (hash): Likewise.
+	* include/profile/vector (hash): Likewise.
+	* include/bits/basic_string.h (hash): Likewise.
+	* include/bits/stl_bvector.h (hash): Likewise.
+	* include/std/typeindex (hash): Do not derive from unary_function,
+	add result_type and argument_type typedefs; trim includes.
+
+2010-09-22  Paolo Carlini  
+
+	* include/std/typeindex: New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* include/precompiled/stdc++.h: Add.
+	* testsuite/20_util/typeindex/comparison_operators.cc: New.
+	* testsuite/20_util/typeindex/hash.cc: Likewise.
+	* testsuite/20_util/typeindex/hash_code.cc: Likewise.
+	* testsuite/20_util/typeindex/name.cc: Likewise.
+
+	* testsuite/18_support/type_info/hash_code.cc: Tweak.
+
+2010-09-22  Paolo Carlini  
+
+	* src/hash_bytes.cc: Move...
+	* libsupc++/hash_bytes.cc: ... here.
+	* src/Makefile.am: Adjust.
+	* libsupc++/Makefile.am: Likewise.
+	* config/abi/pre/gnu.ver: Likewise.
+	* libsupc++/typeinfo (type_info::hash_code): Add in C++0x mode.
+	* src/Makefile.in: Regenerate.
+	* libsupc++/Makefile.am: Likewise.
+	* testsuite/18_support/type_info/hash_code.cc: New.
+
+2010-09-20  Ralf Wildenhues  
+
+	PR libstdc++/45711
+	* src/Makefile.am (stamp-debug): Also adjust possibly-relative
+	file names in MKDIR_P, and, for consistency, also top_build_prefix.
+	* src/Makefile.in: Regenerate.
+
+2010-09-19  Ralf Wildenhues  
+
+	* include/ext/throw_allocator.h
+	(hash<__gnu_cxx::throw_value_limit>::operator()): Uglify local.
+	(hash<__gnu_cxx::throw_value_random>::operator()): Likewise.
+	* include/parallel/set_operations.h (__symmetric_difference_func):
+	Uglify remaining arguments to __count, __first_empty, _M_invoke.
+	(__difference_func): Likewise for __count.
+	* include/profile/impl/profiler_node.h
+	(__object_info_base::__write): Uglify parameter.
+
+2010-09-19  Paolo Carlini  
+
+	* src/hash_bytes.cc: Compile load_bytes and shift_mix only when
+	__SIZEOF_SIZE_T__ == 8.
+
+2010-09-17  Luc Hermitte  
+	    Paolo Carlini  
+
+	PR libstdc++/45713
+	* include/std/bitset: Fix _GLIBCXX_BITSET_WORDS macro.
+	* testsuite/23_containers/bitset/45713.cc: New.
+
+2010-09-16  Paolo Carlini  
+
+	* include/bits/stl_raw_storage_iter.h (raw_storage_iterator<>::
+	operator=(const _Tp&)): Use std::__addressof.
+
+2010-09-16  Paolo Carlini  
+
+	* include/std/system_error (system_error::system_error(error_code),
+	system_error(error_code, const string&), system_error(int, const
+	error_category&), system_error(int, const error_category&,
+	const string&)): Fix for what() to return the NBTS recommended in
+	the Note in 19.5.6.2/14.
+	* testsuite/19_diagnostics/system_error/cons-1.cc: Adjust.
+	* testsuite/19_diagnostics/system_error/what-1.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-2.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-big.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-3.cc: Likewise.
+
+	* testsuite/19_diagnostics/system_error/what-4.cc: Tidy includes.
+
+2010-09-16  Paolo Carlini  
+
+	* include/std/complex (complex::operator=(float),
+	complex::operator+=(float),
+	complex::operator-=(float),
+	complex::operator=(double),
+	complex::operator+=(double),
+	complex::operator-=(double),
+	complex::operator=(long double),
+	complex::operator+=(long double),
+	complex::operator-=(long double)): Simplify a tad,
+	just forward to the underlying __complex__ T operators, as
+	operator*= and operator/= already do.
+
+	* include/std/complex (complex, complex,
+	complex): Simplify spelling of return types, just
+	say complex, instead of complex, complex,
+	complex, respectively.
+
+2010-09-15  François Dumont  
+
+	* testsuite/lib/libstdc++.exp,([check_v3_target_namedlocale]):
+	Clean temporary source file once compiled.
+
+2010-09-15  Paolo Carlini  
+
+	* doc/xml/manual/prerequisites.xml: Update "C" library locale
+	information prerequisites.
+
+2010-09-15  François Dumont  
+
+	* testsuite/lib/libstdc++.exp, dg-options.exp
+	([check_v3_target_namedlocale]): Take the name of the required locale.
+	* testsuite/27_io/objects/wchar_t/9520.cc, 11.cc, 13.cc, 10.cc, 12.cc:
+	Specify locale name to check.
+	* testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc, 13007-1.cc,
+	13007-2.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/imbue/char/9322.cc, 13007-1.cc,
+	13007-2.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc, 2.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc, 9322.cc,
+	13582-2.cc, 2.cc, 13582-3.cc, 12868.cc, 14975-2.cc, 13007.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc, 13171-4.cc,
+	9322.cc, 13582-2.cc, 2.cc, 14975-1.cc, 13007.cc, 13171-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc,
+	11305-2.cc, 11305-3.cc, 11305-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc, 1.cc, 2.cc,
+	3.cc, 11389-1.cc, 4.cc, 11389-2.cc, 5.cc, 11389-3.cc, 11389-4.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Likewise.
+	* testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/manipulators/extended/put_money/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/manipulators/extended/get_money/char/1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc, 2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/1.cc, 2.cc, 3.cc, 9780-3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/facet/2.cc: Likewise.
+	* testsuite/22_locale/collate/hash/wchar_t/2.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/hash/char/2.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/wchar_t/1.cc, 2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/compare/char/1.cc, 2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/transform/wchar_t/2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate/transform/char/2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/cons/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/to/char/wrapped_locale.cc, wrapped_env.cc:
+	Likewise.
+	* testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/scan/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/wchar_t/2.cc, 3.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/widen/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/wchar_t/3.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/2.cc,wrapped_locale.cc,
+	wrapped_env.cc: Likewise
+	* testsuite/22_locale/ctype/is/char/2.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc, 3.cc, 4.cc, 6.cc,
+	7.cc, 8.cc, wrapped_env.cc, wrapped_locale.cc, 17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc, 3.cc, 4.cc, 6.cc,
+	9780-1.cc, 7.cc, 8.cc, wrapped_env.cc, wrapped_locale.cc, 17038.cc:
+	Likewise.
+	* testsuite/22_locale/money_get/get/wchar_t/1.cc, 2.cc, 3.cc, 4.cc,
+	wrapped_env.cc, 10.cc, 11528.cc, wrapped_locale.cc, 11.cc, 12.cc,
+	13.cc, 15.cc, 16.cc, 17.cc, 18.cc: Likewise.
+	* testsuite/22_locale/money_get/get/char/1.cc, 2.cc, 3.cc, 4.cc,
+	wrapped_env.cc, 10.cc, 11528.cc, wrapped_locale.cc, 11.cc, 12.cc,
+	13.cc, 15.cc, 16.cc, 17.cc, 18.cc: Likewise
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc, 3.cc, 5.cc,
+	wrapped_env.cc, 20914.cc, wrapped_locale.cc, 20909.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/1.cc, 3.cc, 5.cc, 9780-2.cc,
+	wrapped_env.cc, 20914.cc, wrapped_locale.cc, 20909.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc, wrapped_locale.cc,
+	3.cc, 4.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	testsuite/22_locale/codecvt/length/wchar_t/2.cc, wrapped_locale.cc,
+	3.cc, 4.cc, 7.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/length/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc,
+	wrapped_locale.cc, 3.cc, 4.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc, wrapped_locale.cc,
+	3.cc, 4.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/wchar_t/2.cc, wrapped_locale.cc, 3.cc,
+	4.cc, 7.cc, 8.cc, 9.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/in/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc,
+	wrapped_locale.cc, 3.cc, 4.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/wchar_t/2.cc, wrapped_locale.cc,
+	3.cc, 4.cc, 7.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/codecvt/out/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/moneypunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/2.cc, 38081-1.cc,
+	wrapped_locale.cc, 38081-2.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc, 26701.cc,
+	2.cc, wrapped_locale.cc, 4.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/12750.cc, 26701.cc,
+	2.cc, wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/1.cc, 2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/1.cc, 2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc, 3.cc, 5.cc, 6.cc, 9.cc,
+	wrapped_env.cc, wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/1.cc, 3.cc, 5.cc, 6.cc, 9.cc,
+	wrapped_env.cc, wrapped_locale.cc: Likewise.
+	* testsuite/22_locale/locale/cons/38368.cc, 2.cc, 4.cc, 5.cc, 7.cc,
+	12658_thread-1.cc, 12658_thread-2.cc, 40184.cc, 29217.cc, 38365.cc:
+	Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/14071.cc, 2.cc:
+	Likewise.
+	* testsuite/22_locale/moneypunct/40712.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/2.cc,
+	wrapped_locale.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/2.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/messages_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/numpunct_byname/named_equivalence.cc: Likewise.
+	* testsuite/22_locale/messages/members/char/1.cc, 2.cc,
+	wrapped_locale.cc, 3.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc, wrapped_locale.cc,
+	wrapped_env.cc: Likewise.
+	* testsuite/22_locale/numpunct/members/char/2.cc, wrapped_locale.cc,
+	3.cc, wrapped_env.cc: Likewise.
+	* testsuite/22_locale/collate_byname/named_equivalence.cc: Likewise.
+
+2010-09-14  Matt Austern  
+	    Paolo Carlini  
+
+	* testsuite/performance/21_strings/hash.cc: New.
+
+2010-09-14  Paolo Carlini  
+
+	* testsuite/performance/21_strings/string_append.cc: Rename to...
+	* testsuite/performance/21_strings/append-1.cc: ... this.
+	* testsuite/performance/21_strings/string_append_2.cc: Rename to...
+	* testsuite/performance/21_strings/append-2.cc: ... this.
+	* testsuite/performance/21_strings/string_cons_input_iterator.cc:
+	Rename to...
+	* testsuite/performance/21_strings/cons_input_iterator.cc: ... this.
+	* testsuite/performance/21_strings/string_copy_cons_and_dest.cc:
+	Rename to...
+	* testsuite/performance/21_strings/copy_cons_and_dest.cc: ... this.
+	* testsuite/performance/21_strings/string_find.cc: Rename to...
+	* testsuite/performance/21_strings/find.cc: ... this.
+
+2010-09-13  Benjamin Kosnik  
+
+	* doc/xml/api.xml: Add title.
+	* doc/xml/manual/spine.xml: Same.
+	* doc/xml/spine.xml: Same.
+
+2010-09-13  Matt Austern  
+
+	* src/hash_bytes.cc: New file, exports _Hash_bytes (a Murmur hash),
+	and _Fnv_hash_bytes (based on a FNV algorithm).
+	* src/compatibility-c++0x.cc (hash::operator(),
+	hash::operator(), hash::operator(),
+	hash::operator(), hash::operator()):
+	Adjust, use _Hash_bytes.
+	* include/std/system_error (hash::operator()): Likewise.
+	* include/std/thread (hashoperator()): Likewise.
+	* include/std/bitset (hashoperator()): Likewise.
+	* include/bits/basic_string.h (hash::operator(),
+	hash::operator(), hash::operator(),
+	hash::operator()): Adjust.
+	* include/bits/vector.tcc (hash>::operator()): Adjust.
+	* include/bits/functional_hash.h (_Hash_bytes, _Fnv_hash_bytes):
+	Declare.
+	(struct _Hash_impl, struct _Fnv_hash_impl): Add, use _Hash_bytes
+	and _Fnv_hash_bytes, respectively.
+	(hash::operator(), hash::operator()): Adjust.
+	* config/abi/pre/gnu.ver: Add exports.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+
+2010-09-13  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::resize(size_type,
+	value_type)): Fix signature, per LWG 1340.
+	* include/bits/forward_list.tcc: Adjust definition.
+
+2010-09-13  Paolo Carlini  
+
+	* testsuite/27_io/basic_filebuf/seekoff/char/4.cc: New.
+	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Likewise.
+
+2010-09-10  Paolo Carlini  
+
+	* src/hash-string-aux.cc: Remove. Move contents...
+	* src/hash_tr1.cc: ... here.
+	* src/compatibility-c++0x.cc: ... and here.
+
+2010-09-09  Paolo Carlini  
+
+	PR libstdc++/45613
+	* include/bits/random.tcc: Add missing include guards.
+	* include/bits/random.h: Likewise.
+	* include/tr1/random.tcc: Likewise.
+
+2010-09-09  Paolo Carlini  
+
+	* libsupc++/cxxabi.h: Uglify nothrow to __nothrow__; fix a few
+	inconsistent uglifications everywhere.
+
+2010-09-07  Paolo Carlini  
+	    Marc Glisse  
+
+	PR libstdc++/45549
+	* include/bits/cpp_type_traits.h (__is_iterator_helper): Rename to
+	__has_iterator_category.
+	(__is_iterator): Adjust.
+	* include/bits/stl_iterator_base_types.h (__iterator_traits): Add
+	in C++0x mode, use the latter.
+	(iterator_traits): In C++0x mode, derive from the latter.
+	* include/bits/stl_iterator_base_funcs.h (next, prev): Remove
+	enable_if on the return type.
+
+2010-09-07  Paolo Carlini  
+
+	PR libstdc++/45398
+	* include/std/atomic (atomic<_TP*>::store): Define.
+
+	* include/std/atomic (atomic<_TP*>::load, exchange): Define inline.
+
+2010-09-06  Jason Merrill  
+
+	* testsuite/libstdc++-abi/abi.exp: Add "libstdc++-abi/" to
+	abi_check FAIL message.
+
+2010-09-03  Paolo Carlini  
+
+	PR libstdc++/45347
+	* include/ext/concurrence.h: Add #pragma GCC system_header.
+
+2010-09-03  François Dumont 
+
+	* testsuite/lib/libstdc++.exp ([check_v3_target_debug_mode]): Fix so
+	that it really detects when debug mode is activated.
+	* testsuite/util/debug/construct_neg.h, insert_neg.h, assign_neg.h:
+	Remove, content moved...
+	* testsuite/util/debug/checks.h: ... here. Modify checks to take the
+	type of the container to test rather than an intermediate container
+	type traits helper.
+	* testsuite/23_containers/unordered_map/debug/insert1_neg.cc: Update to
+	use dg-require-debug-mode when necessary and use new check functions.
+	* testsuite/23_containers/unordered_map/debug/construct1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/debug/construct2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_map/debug/construct3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_map/debug/construct4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/multimap/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/debug/assign1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/assign2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/assign3_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/assign4_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_set/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_set/debug/construct1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/debug/construct2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_set/debug/construct3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_set/debug/construct4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/assign1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/assign2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/assign3_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/assign4_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/assign1_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/assign2_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/assign3_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/assign4_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc:
+	Likewise.
+	* testsuite/23_containers/map/debug/insert1_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/construct1_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/construct2_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/insert2_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/construct3_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/insert3_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/construct4_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/insert4_neg.cc: Likewise.
+
+	* testsuite/23_containers/unordered_map/debug/cont_traits.h: Remove.
+	* testsuite/23_containers/unordered_map/debug/debug_cont_traits.h:
+	Likewise.
+	* testsuite/23_containers/multimap/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/multimap/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/set/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/set/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/cont_traits.h:
+	Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/
+	debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/vector/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/vector/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/unordered_set/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/unordered_set/debug/debug_cont_traits.h:
+	Likewise.
+	* testsuite/23_containers/deque/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/deque/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/multiset/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/multiset/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/list/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/list/debug/debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/cont_traits.h:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/
+	debug_cont_traits.h: Likewise.
+	* testsuite/23_containers/map/debug/cont_traits.h: Likewise.
+	* testsuite/23_containers/map/debug/debug_cont_traits.h: Likewise.
+
+	* testsuite/21_strings/basic_string/element_access/char: Tidy.
+	* testsuite/21_strings/basic_string/element_access/wchar_t: Likewise.
+
+2010-09-02  Paolo Carlini  
+
+	PR libstdc++/40974
+	* include/Makefile.am: Add -nostdinc++ to PCHFLAGS.
+	* include/Makefile.in: Regenerate.
+
+2010-09-01  Christopher Yeleighton  
+	    Paolo Carlini  
+
+	PR libstdc++/45488
+	* include/bits/stl_algobase.h (lower_bound): Clean-up a tad, move
+	two variables inside the main loop.
+	* include/bits/stl_algo.h (lower_bound, upper_bound, equal_range):
+	Likewise.
+
+2010-08-31  Paolo Carlini  
+
+	PR libstdc++/44480
+	* include/bits/hashtable.h (_Hashtable<>::_M_begin_bucket_index):
+	Add, caching the index of the first non-empty bucket.
+	(begin, cbegin): Use it.
+	(_Hashtable<>::_Hashtable(_InputIterator, _InputIterator, ...),
+	_Hashtable(const _Hashtable&), _Hashtable(_Hashtable&&),
+	swap(_Hashtable&), clear): Adjust.
+	(_M_insert_bucket, _M_insert, erase(const_iterator),
+	erase(const key_type&), _M_rehash): Update it.
+
+	* include/bits/hashtable.h (_Hashtable<>::_M_erase): Remove.
+	(erase(const_iterator)): Inline the latter.
+
+2010-08-31  Paolo Carlini  
+
+	* testsuite/23_containers/forward_list/operations/remove_freed.cc:
+	Fix test01 return type to void.
+	* testsuite/util/exception/safety.h: Avoid -Wall -m32 warnings.
+	* testsuite/util/replacement_memory_operators.h: Likewise.
+
+2010-08-29  Paolo Carlini  
+
+	* testsuite/23_containers/bitset/invalidation: Move...
+	* testsuite/23_containers/bitset/debug/invalidation: ... here.
+	* testsuite/23_containers/deque/invalidation: Move...
+	* testsuite/23_containers/deque/debug/invalidation: ... here.
+	* testsuite/23_containers/list/invalidation: Move...
+	* testsuite/23_containers/list/debug/invalidation: ... here.
+	* testsuite/23_containers/map/invalidation: Move...
+	* testsuite/23_containers/map/debug/invalidation: ... here.
+	* testsuite/23_containers/multimap/invalidation: Move...
+	* testsuite/23_containers/multimap/debug/invalidation: ... here.
+	* testsuite/23_containers/set/invalidation: Move...
+	* testsuite/23_containers/set/debug/invalidation: ... here.
+	* testsuite/23_containers/multiset/invalidation: Move...
+	* testsuite/23_containers/multiset/debug/invalidation: ... here.
+	* testsuite/23_containers/vector/invalidation: Move...
+	* testsuite/23_containers/vector/debug/invalidation: ... here.
+
+2010-08-29  François Dumont  
+
+	* include/bits/stl_algobase.h (_Iter_base):  Move...
+	* include/bits/stl_iterator_base_types.h: ...here.
+	* include/debug/functions.h (__check_valid_range, __check_string,
+	__check_sorted): Fix to not depend on _GLIBCXX_DEBUG; include
+	formatter.h and use formatting macros for a consistent debug result.
+	* include/debug/formatter.h (__check_singular): Declare; do not
+	include debug.h.
+	* include/debug/debug.h: Do not include formatter.h.
+	* include/debug/safe_iterator.h (_Safe_iterator::_Base_Iterator)
+	rename to iterator_type.
+	(__gnu_debug::__base): Add.
+	* include/debug/set.h: Use everywhere __gnu_debug::__base once
+	iterator range valided.
+	* include/debug/unordered_map: Likewise.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/vector: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/string: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* testsuite/23_containers/util/debug/assign_neg.h: New test cases on
+	debug checks performed on container assign operation.
+	* testsuite/23_containers/util/debug/construct_neg.h: New test cases
+	on debug checks on constructors.
+	* testsuite/23_containers/util/debug/insert_neg.h: New test cases on
+	debug checks performed on container insert operations.
+	* testsuite/23_containers/unordered_map/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: New.
+	* testsuite/23_containers/multimap/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/set/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_set/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/multiset/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/map/debug/cont_traits.h,
+	debug_cont_traits.h, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/vector/debug/cont_traits.h,
+	debug_cont_traits.h, assign1_neg.cc, assign2_neg.cc, assign3_neg.cc,
+	assign4_neg.cc, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/deque/debug/cont_traits.h,
+	debug_cont_traits.h, assign1_neg.cc, assign2_neg.cc, assign3_neg.cc,
+	assign4_neg.cc, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/23_containers/list/debug/cont_traits.h,
+	debug_cont_traits.h, assign1_neg.cc, assign2_neg.cc, assign3_neg.cc,
+	assign4_neg.cc, construct1_neg.cc, construct2_neg.cc,
+	construct3_neg.cc, construct4_neg.cc, insert1_neg.cc, insert2_neg.cc,
+	insert3_neg.cc, insert4_neg.cc: Likewise.
+	* testsuite/performance/23_containers/range_construct/
+	list_construct1.cc: New, validate performance impact of the patch
+	on the debug mode.
+	* testsuite/performance/23_containers/range_construct/
+	list_construct2.cc: Likewise.
+	* testsuite/performance/23_containers/range_construct/
+	vector_construct.cc: Likewise.
+	* testsuite/performance/23_containers/range_construct/
+	deque_construct.cc: Likewise.
+
+2010-08-26  Benjamin Kosnik  
+
+	* include/bits/stl_iterator_base_types.h: Fix doxygen warning.
+
+2010-08-21  Ralf Wildenhues  
+
+	* configure: Regenerate.
+
+2010-08-18  Kostya Serebryany 
+	    Paolo Carlini  
+
+	PR libstdc++/45276
+	* doc/xml/manual/debug.xml ([debug.races]): Add.
+
+2010-08-17  Paolo Carlini  
+
+	PR libstdc++/45300
+	* include/c_std/cwchar: Replace 'restrict' -> '__restrict'.
+	* include/c_global/cwchar: Likewise.
+
+2010-08-16  Paolo Carlini  
+
+	PR libstdc++/45300
+	* include/c_std/cstdlib: Replace 'restrict' -> '__restrict'.
+	* include/c_std/cstdio: Likewise.
+	* include/c_global/cstdlib: Likewise.
+	* include/c_global/cstdio: Likewise.
+
+2010-08-16  Chris Moller  
+
+	http://sourceware.org/bugzilla/show_bug.cgi?id=11874
+	* python/libstdcxx/v6/printers.py (StdVectorPrinter): Added stuff
+	to handle pretty-printing of std::vector.
+
+2010-08-14  Jonathan Wakely  
+
+	PR libstdc++/45283
+	* testsuite/performance/30_threads/future/polling.cc: Replace calls to
+	shared_future::is_ready.
+
+2010-08-13  Paolo Carlini  
+
+	* include/bits/hashtable.h (_Hashtable<>::operator=(const
+	_Hashtable&)): Move inline.
+	(operator=(_Hashtable&&)): Define.
+	* include/bits/unordered_map.h (unordered_map(unordered_map&&),
+	unordered_map(const unordered_map&), unordered_multimap
+	(unordered_multimap&&), unordered_multimap(const unordered_multimap&),
+	__unordered_map(__unordered_map&&), __unordered_map(const
+	__unordered_map&), __unordered_multimap(__unordered_multimap&&),
+	__unordered_multimap(const __unordered_multimap&)): Do not define,
+	leave implicit.
+	* include/bits/unordered_set.h (unordered_set(unordered_set&&),
+	unordered_set(const unordered_set&), unordered_multiset
+	(unordered_multiset&&), unordered_multiset(const unordered_multiset&),
+	__unordered_set(__unordered_set&&), __unordered_set(const
+	__unordered_set&), __unordered_multiset(__unordered_multiset&&),
+	__unordered_multiset(const __unordered_multiset&)): Likewise.
+
+	* include/bits/unordered_map.h (__unordered_map(initializer_list<>),
+	__unordered_map<>::operator=(initializer_list<>),
+	__unordered_multimap(initializer_list<>), __unordered_multimap<>::
+	operator=(initializer_list<>)): Add.
+	* include/bits/unordered_set.h (__unordered_set(initializer_list<>),
+	__unordered_set<>::operator=(initializer_list<>),
+	__unordered_multiset(initializer_list<>), __unordered_multiset<>::
+	operator=(initializer_list<>)): Likewise.
+
+	* include/bits/unordered_map.h (__unordered_map(_InputIterator,
+	_InputIterator, size_type __n), unordered_map(_InputIterator,
+	_InputIterator, size_type __n), unordered_map(initializer_list<>,
+	size_type __n), unordered_multimap(initializer_list<>, size_type __n)):
+	Fix __n default to 0.
+	* include/bits/unordered_set.h (__unordered_set(_InputIterator,
+	_InputIterator, size_type __n), unordered_set(_InputIterator,
+	_InputIterator, size_type __n), unordered_set(initializer_list<>,
+	size_type __n), unordered_multiset(initializer_list<>, size_type __n)):
+	Likewise.
+	* include/debug/unordered_map (unordered_map(_InputIterator,
+	_InputIterator, size_type __n), unordered_map(initializer_list<>,
+	size_type __n), unordered_map(_InputIterator, _InputIterator,
+	size_type __n), unordered_multimap(initializer_list<>, size_type __n)):
+	Likewise.
+	* include/debug/unordered_set (unordered_set(_InputIterator,
+	_InputIterator, size_type __n), unordered_set(initializer_list<>,
+	size_type __n), unordered_set(_InputIterator, _InputIterator,
+	size_type __n), unordered_multiset(initializer_list<>, size_type __n)):
+	Likewise.
+	* include/profile/unordered_map (unordered_map(_InputIterator,
+	_InputIterator, size_type __n), unordered_map(initializer_list<>,
+	size_type __n), unordered_map(_InputIterator, _InputIterator,
+	size_type __n), unordered_multimap(initializer_list<>, size_type __n)):
+	Likewise.
+	* include/profile/unordered_set (unordered_set(_InputIterator,
+	_InputIterator, size_type __n), unordered_set(initializer_list<>,
+	size_type __n), unordered_set(_InputIterator, _InputIterator,
+	size_type __n), unordered_multiset(initializer_list<>, size_type __n)):
+	Likewise.
+
+2010-08-13  Paolo Carlini  
+
+	PR libstdc++/45281
+	* include/bits/stl_queue.h (queue(queue&&), operator=(queue&&),
+	priority_queue(priority_queue&&), operator=(priority_queue&&)):
+	Remove, per CH 15.
+
+2010-08-13  Paolo Carlini  
+
+	* testsuite/23_containers/unordered_map/dr1189.cc: Move to...
+	* testsuite/23_containers/unordered_map/hash_policy/dr1189.cc:
+	... here.
+	* testsuite/23_containers/unordered_set/dr1189.cc: Move to...
+	* testsuite/23_containers/unordered_set/hash_policy/dr1189.cc:
+	... here.
+	* testsuite/23_containers/unordered_multimap/dr1189.cc: Move to...
+	* testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc:
+	... here.
+	* testsuite/23_containers/unordered_multiset/dr1189.cc: Move to...
+	* testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc:
+	... here.
+
+	* testsuite/23_containers/unordered_set/hash_policy/26132.cc: New.
+
+2010-08-13  Paolo Carlini  
+
+	* src/ios_init.cc (ios_base::Init::~Init): Add back semicolon
+	at the end of the _GLIBCXX_SYNCHRONIZATION_HAPPENS_* macros,
+	removed by mistake.
+	* include/tr1_impl/boost_sp_counted_base.h: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/bits/locale_classes.h: Likewise.
+	* include/bits/basic_string.h: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* include/bits/c++config: Adjust comment.
+
+2010-08-12  Kostya Serebryany 
+	    Paolo Carlini  
+
+	* include/bits/c++config (_GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE,
+	_GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER): Add.
+	* src/ios_init.cc (ios_base::Init::~Init): Decorate with the
+	latter.
+	* include/tr1_impl/boost_sp_counted_base.h: Likewise.
+	* include/ext/rc_string_base.h: Likewise.
+	* include/bits/locale_classes.h: Likewise.
+	* include/bits/basic_string.h: Likewise.
+	* include/bits/ios_base.h: Likewise.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error
+	line number.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+	* testsuite/ext/profile/mutex_extensions.cc: Likewise.
+
+2010-08-11  Paolo Carlini  
+
+	* include/bits/hashtable.h (_Hashtable<>::erase(const key_type&)):
+	Use std::__addressof.
+
+	* include/bits/forward_list.tcc (forward_list<>::remove): Deal
+	correctly with &__tmp->_M_value == &__val.
+	* testsuite/23_containers/forward_list/operations/remove_freed.cc:
+	New.
+
+2010-08-11  Paolo Carlini  
+
+	* include/bits/stl_algo.h (shuffle): Change signature consistently
+	with random_shuffle (US 121).
+	* include/bits/algorithmfwd.h: Adjust.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2010-08-11  Paolo Carlini  
+
+	* include/bits/move.h (forward): Reinstate the N2835 version.
+
+2010-08-11  Paolo Carlini  
+
+	PR libstdc++/42925
+	* include/bits/unique_ptr.h (operator==(const unique_ptr<>&,
+	nullptr_t), operator==(nullptr_t, const unique_ptr<>&),
+	operator!=(const unique_ptr<>&, nullptr_t),
+	operator!=(nullptr_t, const unique_ptr<>&)): Add.
+	* include/bits/shared_ptr_base.h (operator==(const __shared_ptr<>&,
+	nullptr_t), operator==(nullptr_t, const __shared_ptr<>&),
+	operator!=(const __shared_ptr<>&, nullptr_t),
+	operator!=(nullptr_t, const __shared_ptr<>&)): Likewise.
+	* include/bits/shared_ptr.h (operator==(const shared_ptr<>&,
+	nullptr_t), operator==(nullptr_t, const shared_ptr<>&),
+	operator!=(const shared_ptr<>&, nullptr_t),
+	operator!=(nullptr_t, const shared_ptr<>&)): Likewise.
+	* testsuite/20_util/unique_ptr/comparison/42925.cc: New.
+	* testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust
+	dg-error line numbers.
+
+2010-08-11  Paolo Carlini  
+
+	* include/bits/unique_ptr.h: Replace _Tp_Deleter -> _Dp, and
+	_Up_Deleter -> _Ep.
+
+2010-08-10  Paolo Carlini  
+
+	* include/bits/shared_ptr_base.h: Remove a few now redundant
+	__glibcxx_function_requires(_ConvertibleConcept...).
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Adjust dg-error
+	line number.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-08-10  Paolo Carlini  
+
+	* testsuite/ext/stdio_sync_filebuf/char/1.cc: Avoid -Wall
+	warnings.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
+
+2010-08-10  Paolo Carlini  
+
+	* testsuite/23_containers/array/range_access.cc: Avoid -Wall
+	warnings.
+
+2010-08-10  Paolo Carlini  
+
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Avoid -Wall
+	warnings.
+
+	* include/bits/shared_ptr.h (shared_ptr<>::shared_ptr
+	(const shared_ptr<>&), shared_ptr(shared_ptr<>&&), weak_ptr<>::
+	weak_ptr(const weak_ptr<>&), weak_ptr(const shared_ptr<>&)):
+	Constrain appropriately via std::is_convertible, etc.
+	* include/bits/shared_ptr_base.h: Likewise.
+	* include/bits/unique_ptr.h (default_delete<>::
+	default_delete(const default_delete<>&),
+	unique_ptr<>::unique_ptr(unique_ptr<>&&), operator=(unique_ptr<>&&)):
+	Likewise.
+
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line numbers.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Likewise.
+
+	* include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(auto_ptr<>&&)):
+	Add.
+	* include/std/memory: Adjust includes order.
+	* testsuite/20_util/unique_ptr/cons/auto_ptr.cc: New.
+	* testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Minor tweaks.
+
+2010-08-10  Paolo Carlini  
+
+	PR libstdc++/45228
+	* include/std/tuple (tuple): Constrain
+	converting constructors and assignment operators with
+	sizeof...(_UElements) == sizeof...(_Elements).
+	(tuple(tuple<_UElements...>&): Remove.
+	(tuple): Add.
+	* testsuite/20_util/tuple/cons/45228.cc: New.
+	* testsuite/20_util/tuple/cons/converting.cc: Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust
+	dg-error line number.
+
+	* include/std/tuple (_Tuple_impl<>::_Tuple_impl(const _Tuple_impl&)):
+	Defaulted.
+
+	* include/std/tuple (tuple
+	::operator=(pair<_U1, _U2>&&)): Use forward.
+
+2010-08-08  Paolo Carlini  
+
+	PR libstdc++/44963
+	* include/bits/stl_iterator.h (insert_iterator<>::
+	operator=(const typename _Container::value_type&,
+	back_insert_iterator<>::
+	operator=(const typename _Container::value_type&),
+	front_insert_iterator<>::
+	operator=(const typename _Container::value_type&))): Add
+	in C++0x mode.
+	* testsuite/ext/rope/44963.cc: New.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust
+	dg-error line number.
+
+2010-08-08  Paolo Carlini  
+
+	* include/c_global/cmath: Implement US 136.
+	* include/tr1_impl/cmath: Do not bring fpclassify, etc from namespace
+	std, define namespace tr1.
+	* testsuite/26_numerics/headers/cmath/
+	c99_classification_macros_c++0x.cc: New.
+
+2010-08-06  David Malcolm  
+	    Jan Kratochvil  
+
+	* python/hook.in: Rename variable dir to dir_.
+
+2010-08-06  Jason Merrill  
+
+	* include/std/thread: Add deleted thread(thread&).
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Remove XFAIL.
+
+2010-08-06  Paolo Carlini  
+
+	* include/std/tuple (pack_arguments): Rename to forward_as_tuple
+	and simplify, per US 98 and US 99.
+	* testsuite/20_util/tuple/creation_functions/pack_arguments.cc:
+	Rename to...
+	* testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc:
+	... this, adjust.
+	* testsuite/20_util/pair/piecewise.cc: Adjust.
+
+2010-08-06  Paolo Carlini  
+
+	* include/std/tuple (begin, end): Remove per GB 87.
+	* testsuite/20_util/tuple/range_access.cc: Remove.
+
+2010-08-06  Paolo Carlini  
+
+	* include/std/ratio (ratio_less): Improve, use ratio_divide to avoid
+	more overflows.
+	* testsuite/20_util/ratio/comparisons/comp1.cc: Extend.
+	* testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
+
+2010-08-05  Paolo Carlini  
+
+	* include/tr1_impl/utility (begin, end): Remove per GB 85.
+	* testsuite/20_util/pair/range_access.cc: Remove.
+
+	* include/std/functional (function<>::function()): Remove explicit,
+	per JP 3.
+
+2010-08-05  Paolo Carlini  
+
+	* include/bits/move.h (forward): Update to N3092.
+	(identity): Remove (US 92 is NAD).
+	* include/debug/set.h: Fix move constructor to simply use move.
+	* include/debug/unordered_map: Likewise.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/vector: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/string: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/profile/set.h: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* include/profile/vector: Likewise.
+	* include/profile/deque: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/list: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/forward_list.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/unordered_map.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/bits/unordered_set.h: Likewise.
+	* include/bits/stl_bvector.h: Likewise.
+	* testsuite/20_util/identity/value.cc: Remove
+	* testsuite/20_util/identity/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/identity/requirements/explicit_instantiation.cc:
+	Likewise.
+
+2010-07-27  Paolo Carlini  
+
+	* acinclude.m4 ([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS]): Fix
+	messages.
+	* configure: Regenerate.
+
+2010-07-27  Paolo Carlini  
+
+	* include/ext/vstring_util.h: Include bits/range_access.h.
+	* testsuite/ext/vstring/range_access.cc: New test.
+
+2010-07-27  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/range_access.h: New.
+	* include/Makefile.in: Add bits/range_access.h.
+	* include/Makefile.am: Regenerate.
+	* include/std/array: Include bits/range_access.h.
+	* include/std/deque: Ditto.
+	* include/std/forward_list: Ditto.
+	* include/std/iterator: Ditto.
+	* include/std/list: Ditto.
+	* include/std/map: Ditto.
+	* include/std/regex: Ditto.
+	* include/std/set: Ditto.
+	* include/std/string: Ditto.
+	* include/std/unordered_map: Ditto.
+	* include/std/unordered_set: Ditto.
+	* include/std/vector: Ditto.
+	* include/std/valarray: Add begin() and end().
+	* libsupc++/initializer_list: Ditto.
+	* include/tr1_impl/utility: Add begin() and end().
+	* include/std/tuple: Ditto.
+	* testsuite/24_iterators/headers/iterator/range_access.cc: New test.
+	* testsuite/24_iterators/range_access.cc: Ditto.
+	* testsuite/28_regex/range_access.cc: Ditto.
+	* testsuite/18_support/initializer_list/range_access.cc: Ditto.
+	* testsuite/21_strings/basic_string/range_access.cc: Ditto.
+	* testsuite/26_numerics/valarray/range_access.cc: Ditto.
+	* testsuite/23_containers/unordered_map/range_access.cc: Ditto.
+	* testsuite/23_containers/multimap/range_access.cc: Ditto.
+	* testsuite/23_containers/set/range_access.cc: Ditto.
+	* testsuite/23_containers/unordered_multimap/range_access.cc: Ditto.
+	* testsuite/23_containers/forward_list/range_access.cc: Ditto.
+	* testsuite/23_containers/unordered_set/range_access.cc: Ditto.
+	* testsuite/23_containers/vector/range_access.cc: Ditto.
+	* testsuite/23_containers/deque/range_access.cc: Ditto.
+	* testsuite/23_containers/multiset/range_access.cc: Ditto.
+	* testsuite/23_containers/list/range_access.cc: Ditto.
+	* testsuite/23_containers/unordered_multiset/range_access.cc: Ditto.
+	* testsuite/23_containers/map/range_access.cc: Ditto.
+	* testsuite/23_containers/array/range_access.cc: Ditto.
+	* testsuite/20_util/tuple/range_access.cc: Ditto.
+	* testsuite/20_util/pair/range_access.cc: Ditto.
+
+2010-07-27  Paolo Carlini  
+	    Ralf Wildenhues  
+
+	* acinclude.m4 ([GLIBCXX_CHECK_STDIO_MACROS]): Remove.
+	([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS]): Add, actually
+	compute the constants via AC_COMPUTE_INT.
+	* configure.ac: Call the latter.
+	* include/bits/ios_base.h: Adjust.
+	* include/bits/char_traits.h: Likewise.
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error
+	line number.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+	* config.h.in: Regenerate.
+	* configure: Likewise.
+
+2010-07-27  Paolo Carlini  
+
+	* config/io/c_io_stdio.h: Do not include .
+
+2010-07-26  Rainer Orth  
+
+	* testsuite/22_locale/num_put/put/char/14220.cc: XFAIL on Solaris
+	9/x86, 32-bit Solaris 10/x86 and 64-bit Solaris 10/SPARC.
+	* testsuite/22_locale/num_put/put/wchar_t/14220.cc: XFAIL on
+	Solaris 9/x86 and 32-bit Solaris 10/x86.
+
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+	Only XFAIL on Solaris 8 and 9.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
+	Likewise.
+
+	* testsuite/ext/enc_filebuf/char/13598.cc: XFAIL before Solaris 11.
+
+2010-07-25  Jonathan Wakely  
+
+	PR libstdc++/45060
+	* include/bits/hashtable.h (_Hashtable::_Hashtable(_Hashtable&&)):
+	Reorder mem-initializers.
+
+2010-07-22  Benjamin Kosnik  
+
+	DocBook 4.5 to 5.0 transition.
+	* doc/xml/authors.xml: Update markup to DocBook 5.0.
+	* doc/xml/faq.xml: Same.
+	* doc/xml/api.xml: Same.
+	* doc/xml/class.txml
+	* doc/xml/gnu/gpl-3.0.xml: Same.
+	* doc/xml/gnu/fdl-1.2.xml: Same.
+	* doc/xml/gnu/fdl-1.3.xml: Same.
+	* doc/xml/gnu/gpl-2.0.xml: Same.
+	* doc/xml/chapter.txml: Same.
+	* doc/xml/manual/mt_allocator.xml: Same.
+	* doc/xml/manual/allocator.xml: Same.
+	* doc/xml/manual/ctype.xml: Same.
+	* doc/xml/manual/numerics.xml: Same.
+	* doc/xml/manual/codecvt.xml: Same.
+	* doc/xml/manual/backwards_compatibility.xml: Same.
+	* doc/xml/manual/concurrency.xml: Same.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/abi.xml: Same.
+	* doc/xml/manual/shared_ptr.xml: Same.
+	* doc/xml/manual/status_cxxtr1.xml: Same.
+	* doc/xml/manual/auto_ptr.xml: Same.
+	* doc/xml/manual/internals.xml: Same.
+	* doc/xml/manual/atomics.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/status_cxx1998.xml: Same.
+	* doc/xml/manual/profile_mode.xml: Same.
+	* doc/xml/manual/containers.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/concurrency_extensions.xml: Same.
+	* doc/xml/manual/appendix_porting.xml: Same.
+	* doc/xml/manual/utilities.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/bitmap_allocator.xml: Same.
+	* doc/xml/manual/configure.xml: Same.
+	* doc/xml/manual/build_hacking.xml: Same.
+	* doc/xml/manual/evolution.xml: Same.
+	* doc/xml/manual/using.xml: Same.
+	* doc/xml/manual/using_exceptions.xml: Same.
+	* doc/xml/manual/debug.xml: Same.
+	* doc/xml/manual/localization.xml: Same.
+	* doc/xml/manual/strings.xml: Same.
+	* doc/xml/manual/debug_mode.xml: Same.
+	* doc/xml/manual/locale.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/prerequisites.xml: Same.
+	* doc/xml/manual/messages.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/algorithms.xml: Same.
+	* doc/xml/manual/appendix_free.xml: Same.
+	* doc/xml/manual/iterators.xml: Same.
+	* doc/xml/manual/spine.xml: Same.
+	* doc/xml/manual/status_cxxtr24733.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Same.
+	* doc/xml/manual/test.xml: Same.
+	* doc/xml/book.txml: Same.
+	* doc/xml/spine.xml: Same.
+	* doc/Makefile.am: Same.
+	* doc/Makefile.in: Regenerate.
+
+2010-07-20  Benjamin Kosnik  
+
+	* doc/xml/manual/appendix_contributing.xml: Update for new reality.
+	* doc/Makefile.am (doc-xml): New default rule for XML output.
+	(doc-xml-single-doxygen): Standardize output names.
+	* doc/Makefile.in: Regenerate.
+
+	* doc/doxygen/user.cfg.in: Tweak.
+
+2010-07-20  Paolo Carlini  
+
+	* libsupc++/unwind-cxx.h: Minor formatting / stylistic tweaks.
+
+2010-07-20  Mikael Pettersson  
+
+	PR libstdc++/44902
+	* libsupc++/unwind-cxx.h (__cxa_type_match): Correct prototype.
+	(__cxa_begin_cleanup): Likewise.
+
+2010-07-19  Benjamin Kosnik  
+
+	* doc/Makefile.am (doc-texinfo): New rule.
+	(doc-texinfo-docbook): New rule.
+	(DB2TEXI_FLAGS): New.
+	(doc-xml-single-docbook): Just the manual, not the set. Tweak flags.
+	* doc/Makefile.in: Regenerate.
+
+2010-07-14  Jonathan Wakely  
+
+	* doc/xml/manual/shared_ptr.xml: Update.
+	* doc/html/*: Regenerate.
+
+2010-07-13  Benjamin Kosnik  
+
+	* doc/Makefile.am: Edit pdf rules.
+	(doc-man, doc-pdf, doc-html): Expand default rules.
+	* doc/Makefile.in: Regenerate.
+	* doc/doxygen/user.cfg.in: Update to Doxygen 1.7.1.
+
+2010-07-11  Paolo Carlini  
+
+	* include/std/type_traits (is_convertible): Use SFINAE.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2010-07-09  Jonathan Wakely  
+
+	PR libstdc++/44875
+	* doc/xml/manual/status_cxx200x.xml: Corrections to status.
+	* doc/html/*: Regenerate.
+
+2010-07-08  Benjamin Kosnik  
+
+	* include/bits/stl_heap.h: Update markup.
+	* include/bits/move.h: Same.
+	* include/bits/algorithmfwd.h: Same.
+	* include/bits/regex.h: Same.
+	* include/bits/random.h: Same.
+	* doc/doxygen/doxygroups.cc: Same.
+	* doc/doxygen/user.cfg.in: Remove include/tr1_impl/regex from
+	input file list.
+	* doc/Makefile.am (doc-pdf-doxygen): Add comment, put generated
+	pdf in location consistent with docbook pdf generation.
+	* doc/Makefile.in: Regenerate.
+
+2010-07-06  Jonathan Wakely  
+
+	* doc/xml/manual/status_cxx200x.xml: Add some missing features.
+	* doc/html/*: Regenerate.
+
+2010-07-03  Jonathan Wakely  
+
+	* include/bits/regex_compiler.h: Fix filename in doxygen comment.
+	* include/bits/regex_constants.h: Likewise.
+	* include/bits/regex_error.h: Likewise.
+	* include/bits/regex_grep_matcher.h: Likewise.
+	* include/bits/regex_grep_matcher.tcc: Likewise.
+	* include/bits/regex_nfa.tcc: Likewise.
+
+2010-07-02  Rainer Orth  
+
+	* acinclude.m4 (symvers_renaming): Define
+	HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT instead of
+	_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT.
+	Fix syntax error.
+	* config.h.in: Regenerate.
+	* configure: Regenerate.
+
+2010-07-02  Rainer Orth  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Handle sun style.
+	Require GCC_PROG_GNU_CXXFILT.
+	(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT): Define
+	unless targetting solaris2*.
+	Include ../config/gc++filt.m4.
+	* configure.host (i?86-*-solaris2*): Set abi_baseline_pair.
+	(sparc-*-solaris2*): Likewise.
+	* src/Makefile.am [ENABLE_SYMVERS_SUN] (version_dep, version_arg):
+	New variables.
+	(libstdc++-symbols.ver-sun): New target.
+	* configure: Regenerate.
+	* config.h.in: Regenerate.
+	* Makefile.in: Likewise.
+	* doc/Makefile.in: Likewise.
+	* include/Makefile.in: Likewise.
+	* libsupc++/Makefile.in: Likewise.
+	* po/Makefile.in: Likewise.
+	* python/Makefile.in: Likewise.
+	* src/Makefile.in: Likewise.
+	* src/atomic.cc: Only define/use _GLIBCXX_ASM_SYMVER if
+	_GLIBCXX_HAVE_SYMVER_RENAMING_RUNTIME_SUPPORT.
+	* src/compatibility.cc: Likewise.
+	* testsuite/Makefile.am (baseline_subdir): Define.
+	(baseline_symbols): Use it.
+	(new-abi-baseline): Likewise.
+	* testsuite/Makefile.in: Regenerate.
+
+	* config/abi/pre/gnu.ver (GLIBCXX_3.4.5): Enclose duplicates in
+	#ifdef HAVE_SYMVER_RENAMING_RUNTIME_SUPPORT.
+	(GLIBCXX_3.4.6): Likewise.
+
+	* doc/xml/manual/configure.xml (--enable-symvers): Document sun
+	style.
+
+	* doc/xml/manual/abi.xml: Fix grammar.
+	(Symbol versioning on the libstdc++.so binary): Fix mapfile path.
+	(Incremental bumping of a library pre-defined macro): Fix
+	c++config path.
+	(Incremental bumping of a library pre-defined macro,
+	_GLIBCPP_VERSION): Likewise.
+	(Matching each specific C++ compiler release to a specific set of
+	C++ include files): Fix acinclude.m4 path.
+	(Prerequisites): Allow for Sun linker on Solaris 2.5+.
+	Use proper link to Configuring.
+	Fix acinclude.m4 path.
+	(Checking Active): Allow for additional symbol versioning styles.
+	Provide Solaris 2 example with pvs -r.
+	(Bibliography): Update Linker and Libraries Guide, C++ Migration
+	Guide entries.
+
+2010-06-29  Jason Merrill  
+
+	Enable implicitly declared move constructor/operator= (N3053).
+	* include/bits/unordered_map.h: Explicitly default copy constructors.
+	* include/bits/unordered_set.h: Likewise.
+
+	* 19_diagnostics/error_category/cons/copy_neg.cc: Adjust expected
+	errors, use dg-prune-output.
+	* 20_util/function/cmp/cmp_neg.cc: Likewise.
+	* 20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+	* 20_util/unique_ptr/cons/pointer_array_convertible.cc: Likewise.
+	* 20_util/unique_ptr/modifiers/reset_neg.cc: Likewise.
+	* 29_atomics/atomic/cons/assign_neg.cc: Likewise.
+	* 29_atomics/atomic/cons/copy_neg.cc: Likewise.
+	* 29_atomics/atomic_address/cons/assign_neg.cc: Likewise.
+	* 29_atomics/atomic_address/cons/copy_neg.cc: Likewise.
+	* 29_atomics/atomic_flag/cons/assign_neg.cc: Likewise.
+	* 29_atomics/atomic_flag/cons/copy_neg.cc: Likewise.
+	* 29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
+	* 29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+	* 29_atomics/condition_variable/cons/assign_neg.cc: Likewise.
+	* 30_threads/condition_variable/cons/copy_neg.cc: Likewise.
+	* 30_threads/condition_variable_any/cons/assign_neg.cc: Likewise.
+	* 30_threads/condition_variable_any/cons/copy_neg.cc: Likewise.
+	* 30_threads/future/cons/assign_neg.cc: Likewise.
+	* 30_threads/future/cons/copy_neg.cc: Likewise.
+	* 30_threads/mutex/cons/assign_neg.cc: Likewise.
+	* 30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* 30_threads/packaged_task/cons/assign_neg.cc: Likewise.
+	* 30_threads/packaged_task/cons/copy_neg.cc: Likewise.
+	* 30_threads/promise/cons/assign_neg.cc: Likewise.
+	* 30_threads/promise/cons/copy_neg.cc: Likewise.
+	* 30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* 30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* 30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise.
+	* 30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise.
+	* 30_threads/thread/cons/assign_neg.cc: Likewise.
+	* 30_threads/thread/cons/copy_neg.cc: Likewise.
+	* 30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+	* 30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+	* ext/ext_pointer/1_neg.cc: Likewise.
+
+2010-06-29  Paolo Carlini  
+
+	PR libstdc++/44708
+	* include/ext/algorithm (copy_n): Qualify __copy_n call with
+	__gnu_cxx::
+	* testsuite/ext/rope/44708.cc: New.
+
+2010-06-27  Paolo Carlini  
+
+	* include/bits/regex_compiler.h: Trivial formatting / stylistic fixes.
+	* include/bits/regex_grep_matcher.tcc: Likewise.
+	* include/bits/regex_cursor.h: Likewise.
+	* include/bits/regex.h: Likewise.
+
+2010-06-26  Paolo Carlini  
+
+	* testsuite/util/testsuite_hooks.h: Cast fn to bool.
+
+2010-06-26  Kees Cook  
+
+	* testsuite/27_io/ios_base/sync_with_stdio/1.cc: Verify freopen.
+	* testsuite/27_io/objects/wchar_t/9520.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/11.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/10.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-2.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-4.cc: Likewise.
+	* testsuite/27_io/objects/char/9.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-1.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-3.cc: Likewise.
+	* testsuite/27_io/objects/char/12048-5.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Verify fgets.
+	* testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc: Verify
+	fwrite.
+	* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
+	* testsuite/ext/stdio_sync_filebuf/char/1.cc: Likewise.
+
+2010-06-26  Jonathan Wakely  
+
+	* doc/xml/faq.xml: Fix typo.
+	* doc/html/faq.xml: Likewise.
+
+2010-06-25  Stephen M. Webb  
+
+	Initial regex implementation.
+	* include/std/regex: Modified to use bits/regex_* headers.
+	* include/bits/regex_compiler.h: New.
+	* include/bits/regex_constants.h: Likewise.
+	* include/bits/regex_cursor.h: Likewise.
+	* include/bits/regex_error.h: Likewise.
+	* include/bits/regex_grep_matcher.h: Likewise.
+	* include/bits/regex_grep_matcher.tcc: Likewise.
+	* include/bits/regex.h: Likewise.
+	* include/bits/regex_nfa.h: Likewise.
+	* include/bits/regex_nfa.tcc: Likewise.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerated.
+	* testsuite/28_regex/02_definitions: New.
+	* testsuite/28_regex/03_requirements: Likewise.
+	* testsuite/28_regex/03_requirements/typedefs.cc: Likewise.
+	* testsuite/28_regex/04_header: Likewise.
+	* testsuite/28_regex/04_header/regex: Likewise.
+	* testsuite/28_regex/04_header/regex/std_c++0x_neg.cc: Likewise.
+	* testsuite/28_regex/05_constants: Likewise.
+	* testsuite/28_regex/05_constants/error_type.cc: Likewise.
+	* testsuite/28_regex/05_constants/match_flag_type.cc: Likewise.
+	* testsuite/28_regex/05_constants/syntax_option_type.cc: Likewise.
+	* testsuite/28_regex/06_exception_type: Likewise.
+	* testsuite/28_regex/06_exception_type/regex_error.cc: Likewise.
+	* testsuite/28_regex/07_traits: Likewise.
+	* testsuite/28_regex/07_traits/char: Likewise.
+	* testsuite/28_regex/07_traits/char/ctor.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/isctype.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/length.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/lookup_classname.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/lookup_collatename.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/transform.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/transform_primary.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/translate.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/translate_nocase.cc: Likewise.
+	* testsuite/28_regex/07_traits/char/value.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/ctor.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/length.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/transform.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/translate.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/translate_nocase.cc: Likewise.
+	* testsuite/28_regex/07_traits/wchar_t/value.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/cstring_op.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/moveable.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/pstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/range.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/string.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/char/string_op.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/cstring_op.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/pstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/range.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/string.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/assign/wchar_t/string_op.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/basic: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/basic/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/basic/pstring_char.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/basic/pstring_wchar_t.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/basic/
+	string_range_01_02_03.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/cstring_awk.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/cstring_ecma.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/cstring_egrep.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/cstring_grep.cc:
+	Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/default.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/char/range.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/copy_char.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/extended: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/extended/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/extended/
+	string_range_01_02_03.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/move_char.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/string_char.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/string_wchar_t.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/wchar_t: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/wchar_t/cstring.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/wchar_t/default.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/ctors/wchar_t/range.cc: Likewise.
+	* testsuite/28_regex/08_basic_regex/regex.cc: Likewise.
+	* testsuite/28_regex/09_sub_match: Likewise.
+	* testsuite/28_regex/09_sub_match/cast_char.cc: Likewise.
+	* testsuite/28_regex/09_sub_match/cast_wchar_t.cc: Likewise.
+	* testsuite/28_regex/09_sub_match/length.cc: Likewise.
+	* testsuite/28_regex/09_sub_match/typedefs.cc: Likewise.
+	* testsuite/28_regex/10_match_results: Likewise.
+	* testsuite/28_regex/10_match_results/ctors: Likewise.
+	* testsuite/28_regex/10_match_results/ctors/char: Likewise.
+	* testsuite/28_regex/10_match_results/ctors/char/default.cc: Likewise.
+	* testsuite/28_regex/10_match_results/ctors/wchar_t: Likewise.
+	* testsuite/28_regex/10_match_results/ctors/wchar_t/default.cc:
+	Likewise.
+	* testsuite/28_regex/10_match_results/typedefs.cc: Likewise.
+	* testsuite/28_regex/11_algorithms: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/basic: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/basic/string_01.cc:
+	Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/basic/
+	string_range_00_03.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/basic/
+	string_range_01_03.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/basic/
+	string_range_02_03.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/cstring_plus.cc:
+	Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/
+	cstring_questionmark.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/string_any.cc:
+	Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/
+	string_range_00_03.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/
+	string_range_01_03.cc: Likewise.
+	* testsuite/28_regex/11_algorithms/02_match/extended/
+	string_range_02_03.cc: Likewise.
+	* testsuite/28_regex/12_iterators: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/ctors: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/ctors/char: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/ctors/char/
+	default.cc: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/ctors/wchar_t:
+	Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/ctors/wchar_t/
+	default.cc: Likewise.
+	* testsuite/28_regex/12_iterators/regex_iterator/typedefs.cc: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/ctors: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/ctors/char:
+	Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/ctors/char/
+	default.cc: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/ctors/
+	wchar_t: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/ctors/
+	wchar_t/default.cc: Likewise.
+	* testsuite/28_regex/12_iterators/regex_token_iterator/
+	typedefs.cc: Likewise.
+	* testsuite/28_regex/13_ecmascript: Likewise.
+
+2010-06-25  Paolo Carlini  
+
+	* include/profile/impl/profiler_list_to_slist.h: Remove spurious
+	semicolon; prefer pre-increment.
+	* include/profile/impl/profiler_container_size.h: Use everywhere
+	qualified std::size_t.
+	* include/profile/impl/profiler_trace.h (__trace_base<>::
+	__collect_warnings): Tidy loop.
+	* include/profile/impl/profiler_vector_to_list.h: Minor formatting
+	changes.
+
+2010-06-25  Paolo Carlini  
+
+	* include/profile/impl/profiler_trace.h: Uglify it to __it, use
+	everywhere std::size_t instead of size_t.
+
+2010-06-24  Paolo Carlini  
+
+	* include/profile/impl/profiler_trace.h (__trace_base<>::
+	__trace_base()): Move inline, simplify; formatting tweaks.
+	* include/profile/impl/profiler_hash_func.h: Formatting tweaks.
+
+2010-06-24  Paolo Carlini  
+
+	* include/profile/impl/profiler_trace.h (__warning_data::
+	__warning_message): Change to std::string; clean-up includes,
+	qualify size_t, fprintf, etc, with std everywhere.
+	(struct __warn::operator()): Adjust.
+	* include/profile/impl/profiler_list_to_slist.h
+	(__list2slist_info::__advice): Change to return a std::string;
+	clean-up includes, qualify size_t, fprintf, etc, with std.
+	* include/profile/impl/profiler_container_size.h
+	(__container_size_info::__advice): Likewise.
+	* include/profile/impl/profiler_hash_func.h (__hashfunc_info::
+	__advice): Likewise.
+	* include/profile/impl/profiler_list_to_vector.h
+	(__list2vector_info::__advice): Likewise.
+	* include/profile/impl/profiler_vector_to_list.h
+	(__vector2list_info::__advice): Likewise.
+	* include/profile/impl/profiler_map_to_unordered_map.h
+	(__map2umap_info::__advice): Likewise.
+	* include/profile/impl/profiler.h: Likewise.
+	* include/profile/impl/profiler_hashtable_size.h: Likewise.
+	* include/profile/impl/profiler_node.h: Likewise.
+	* include/profile/impl/profiler_vector_size.h: Likewise.
+
+	* include/profile/iterator_tracker.h: Formatting and stylistic
+	tweaks.
+	* include/profile/base.h: Likewise.
+	* include/profile/map.h: Likewise.
+
+2010-06-23  Paolo Carlini 
+
+	* include/bits/stl_tree.h (erase(iterator), erase(const_iterator)):
+	Remove inline specifier.
+
+2010-06-22  Paolo Carlini  
+
+	* include/profile/impl/profiler_list_to_slist.h: Fix formatting,
+	other minor stylistic changes.
+	* include/profile/impl/profiler_container_size.h: Likewise.
+	* include/profile/impl/profiler_vector_size.h: Likewise.
+	* include/profile/impl/profiler_hash_func.h: Likewise.
+	* include/profile/impl/profiler_trace.h: Likewise.
+	* include/profile/impl/profiler_list_to_vector.h: Likewise.
+	* include/profile/impl/profiler_vector_to_list.h: Likewise.
+	* include/profile/impl/profiler_state.h: Likewise.
+	* include/profile/impl/profiler_map_to_unordered_map.h: Likewise.
+	* include/profile/impl/profiler_hashtable_size.h: Likewise.
+	* include/profile/impl/profiler_node.h: Likewise.
+
+2010-06-22  Matthias Klose  
+
+	* python/libstdcxx/v6/printers.py: Don't use string exceptions.
+
+2010-06-22  Paolo Carlini  
+
+	PR libstdc++/44630
+	* include/profile/impl/profiler_trace.h (__min, __max): Remove,
+	use std::min, std::max everywhere.
+	* include/profile/impl/profiler_container_size.h: Use std::min and
+	std::max.
+	* include/profile/impl/profiler_hash_func.h: Likewise.
+	* include/profile/impl/profiler_list_to_vector.h: Likewise.
+
+2010-06-21  Rainer Orth  
+
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Add *-*-solaris2.1[0-9]* to dg-xfail-if, dg-excess-errors.
+
+2010-06-20  Paolo Carlini  
+	    Kai-Uwe Bux  
+
+	* include/bits/random.tcc (uniform_int_distribution<>::operator()):
+	Fix to work well for arbitrary urng.max() and urng.min().
+
+2010-06-18  Paolo Carlini  
+
+	PR libstdc++/32618
+	* include/bits/stl_list.h (vector<>::_M_default_initialize,
+	_M_default_append): Declare.
+	(list<>::list(size_type), resize(size_type)): Add in C++0x mode,
+	use the latter.
+	* include/bits/list.tcc (list<>::resize, _M_default_append): Define.
+	* include/bits/stl_vector.h (vector<>::_M_default_initialize,
+	_M_default_append): Declare.
+	(vector<>::vector(size_type), resize(size_type)): Add in C++0x mode,
+	use the latter.
+	* include/bits/vector.tcc (vector<>::_M_default_append): Define.
+	* include/bits/stl_deque.h (deque<>::_M_default_initialize,
+	_M_default_append): Declare.
+	(deque<>::deque(size_type), resize(size_type)): Add in C++0x mode,
+	use the latter.
+	* include/bits/deque.tcc (deque<>::_M_default_append): Define.
+	* include/debug/vector: Update.
+	* include/debug/deque: Likewise.
+	* include/debug/list: Likewise.
+	* include/profile/vector: Likewise.
+	* include/profile/deque: Likewise.
+	* include/profile/list: Likewise.
+	* include/bits/forward_list.h (_M_default_initialize,
+	_M_default_insert_after): Declare.
+	(forward_list<>::forward_list(size_type), resize(size_type)): Fix,
+	use the latter.
+	* include/bits/forward_list.tcc (forward_list<>::_M_default_append,
+	_M_default_insert_after): Define.
+	* testsuite/util/testsuite_api.h (NonCopyConstructible): Add.
+	* testsuite/23_containers/forward_list/modifiers/6.cc: Move to...
+	* testsuite/23_containers/forward_list/capacity/resize_size.cc:
+	... here.
+	* testsuite/23_containers/forward_list/cons/10.cc: Move to...
+	* testsuite/23_containers/forward_list/cons/cons_size.cc: ... here.
+	* testsuite/23_containers/vector/resize/1.cc: Move to...
+	* testsuite/23_containers/vector/capacity/resize/1.cc: ... here.
+	* testsuite/23_containers/vector/resize/moveable.cc: Move to...
+	* testsuite/23_containers/vector/resize/capacity/moveable.cc: ... here.
+	* testsuite/23_containers/vector/cons/cons_size.cc: New.
+	* testsuite/23_containers/vector/capacity/resize/resize_size.cc:
+	Likewise.
+	* testsuite/23_containers/deque/cons/cons_size.cc: Likewise.
+	* testsuite/23_containers/deque/capacity/resize_size.cc: Likewise.
+	* testsuite/23_containers/list/cons/cons_size.cc: Likewise.
+	* testsuite/23_containers/list/capacity/resize_size.cc: Likewise.
+	* testsuite/23_containers/vector/capacity/resize/moveable.cc: Adjust.
+	* testsuite/23_containers/deque/capacity/moveable.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-06-17  Paolo Carlini  
+
+	* include/bits/stl_uninitialized.h (__uninitialized_default,
+	__uninitialized_default_n, __uninitialized_default_a,
+	__uninitialized_default_n_a): Add.
+
+	* include/bits/stl_uninitialized.h (uninitialized_copy,
+	uninitialized_fill, uninitialized_fill_n): Use __is_trivial
+	instead of __is_pod.
+	* include/bits/valarray_array.h: Likewise.
+	* include/bits/stl_algobase.h (__copy_move_backward_a,
+	__copy_move_a): Likewise.
+
+2010-06-16  Paolo Carlini  
+
+	* include/bits/stl_construct.h (_Construct): Change to variadic in
+	C++0x mode, consistently with allocator::construct.
+	* include/bits/stl_uninitialized.h (__uninitialized_copy_n): Use
+	_Construct.
+	(__uninitialized_construct_range): Move to...
+	* include/bits/stl_tempbuf.h (__uninitialized_construct_buf): ... here.
+
+2010-06-16  Matthias Klose  
+
+	* src/compatibility.cc: Export long double versions of "C" math
+	library for arm-linux-gnueabi, m68k-linux-gnu (ColdFire),
+	mips*-linux-gnu (o32 ABI), sh*-linux-gnu (32 bit).
+
+2010-06-15  Jason Merrill  
+
+	* testsuite/lib/libstdc++.exp: Set additional_prunes.
+	(libstdc++-dg-test): Don't prune here.
+	* testsuite/lib/prune.exp (dg-prune-output): New.
+	(libstdc++-dg-prune): Rename from prune_g++_output.
+	Add a bunch of prunes from gcc's prune.exp.
+	* testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc:
+	Remove dg-excess-errors.
+	* testsuite/18_support/headers/cstdint/std_c++0x_neg.cc: Likewise.
+	* testsuite/19_diagnostics/error_category/cons/copy_neg.cc: Likewise.
+	* testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+	* testsuite/20_util/headers/type_traits/std_c++0x_neg.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Likewise.
+	* testsuite/23_containers/headers/array/std_c++0x_neg.cc: Likewise.
+	* testsuite/23_containers/headers/tuple/std_c++0x_neg.cc: Likewise.
+	* testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: Likewise.
+	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc: Likewise.
+	* testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise.
+	* testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
+	Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
+	Likewise.
+	* testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
+	Likewise.
+	* testsuite/30_threads/headers/future/std_c++0x_neg.cc: Likewise.
+	* testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise.
+	* testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
+	* testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
+	* testsuite/ext/profile/mutex_extensions.cc: Likewise.
+	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/assign/
+	shared_ptr_neg.cc: Likewise.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820.cc: Likewise.
+
+2010-06-13  Paolo Carlini 
+
+	* include/parallel/base.h (min, max): Mark inline.
+	* include/parallel/set_operations.h (__parallel_set_operation):
+	Uglify the Operation template parameter.
+
+2010-06-11  Paolo Carlini  
+
+	* include/bits/shared_ptr.h (hash): Add.
+	* include/bits/shared_ptr_base.h (hash<__shared_ptr>): Likewise.
+	* include/bits/unique_ptr.h (hash): Likewise.
+	* testsuite/20_util/shared_ptr/hash/1.cc: New.
+	* testsuite/20_util/unique_ptr/hash/1.cc: Likewise.
+
+2010-06-11  Jonathan Wakely  
+
+	* doc/xml/manual/appendix_contributing.xml: Indent code examples
+	to match original C++STYLE document. Fix typos and syntax errors.
+	Add some basic docbook markup.
+	* doc/html/*: Regenerate.
+
+2010-06-11  Jonathan Wakely  
+
+	PR libstdc++/44268
+	* doc/xml/manual/abi.xml: Fix libgcc version for hppa-linux.
+
+2010-06-11  Jonathan Wakely  
+
+	* include/std/tuple (_Swallow_assign::operator=): Add const.
+	(ignore): Replace anonymous namespace member with const instance.
+
+2010-06-10  Suresh Gumpula  
+
+	PR libstdc++/43918
+	* config/os/djgpp/error_constants.h: New.
+	* configure.host: Use it.
+
+2010-06-10  Paolo Carlini  
+
+	* include/std/tuple (tuple(const tuple&)): Define explicitly-defaulted.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-warning
+	line number.
+
+2010-06-10  Paolo Carlini  
+
+	PR libstdc++/44487
+	* include/bits/stl_pair.h (pair(pair&&)): Remove.
+	(pair(pair<_U1, _U2>&&): Use forward, consistently with Bullet 5
+	of LWG 1326.
+	* include/std/tuple (tuple(pair<_U1, _U2>&&)): Likewise.
+	* testsuite/20_util/pair/44487.cc: Add.
+	* testsuite/20_util/tuple/cons/44487.cc: Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+	line numbers.
+
+2010-06-09  Paolo Carlini  
+
+	* include/std/type_traits (is_nothrow_constructible): Add.
+	(declval): Add noexcept specification.
+	* testsuite/util/testsuite_tr1.h (struct NothrowExplicitClass,
+	ThrowExplicitClass, NoexceptExplicitClass, ExceptExplicitClass):
+	Add.
+	* testsuite/20_util/is_nothrow_constructible/value.cc: New.
+	* testsuite/20_util/is_nothrow_constructible/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/is_nothrow_constructible/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+	Adjust dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2010-06-09  Khem Raj  
+
+	PR libstdc++/44461
+	* libsupc++/eh_arm.cc (__cxa_end_cleanup): Use .pushsection/.popsection
+	to emit inline assembly into .text section.
+
+2010-06-09  Paolo Carlini  
+
+	Revert:
+	2010-06-09  Paolo Carlini  
+
+	PR libstdc++/44413
+	* include/ext/vstring_util.h (__vstring_utility<>::_S_compare):
+	Simplify, just return -1, 0, 1.
+
+2010-06-09  Iain Sandoe  
+
+	PR bootstrap/43170
+	* configure: Regenerate.
+
+2010-06-09  Paolo Carlini  
+
+	PR libstdc++/44413
+	* include/ext/vstring_util.h (__vstring_utility<>::_S_compare):
+	Simplify, just return -1, 0, 1.
+
+2010-06-08  Paolo Carlini  
+
+	* include/std/type_traits (has_nothrow_assign): Rename to
+	has_nothrow_copy_assign.
+	(has_trivial_assign): Rename to has_trivial_copy_assign.
+	* testsuite/20_util/has_nothrow_copy_assign/value.cc: New.
+	* testsuite/20_util/has_nothrow_copy_assign/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/has_nothrow_copy_assign/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/has_trivial_copy_assign/value.cc: Likewise.
+	* testsuite/20_util/has_trivial_copy_assign/requirements/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/has_trivial_copy_assign/requirements/
+	explicit_instantiation.cc: Likewise.
+
+2010-06-08  Johannes Singler  
+
+	* include/parallel/find.h
+	(__find_template(.., growing_blocks_tag)): Make block size
+	proportional to current position.
+	* include/parallel/settings.h (_Settings): Introduce new tuning
+	parameter find_scale_factor to the end of the struct, defaults to
+	0.01f.
+
+2010-06-08  Johannes Singler  
+
+	* include/parallel/partial_sum.h
+	(__parallel_partial_sum_linear):
+	Correctly calculate part lengths for partial_sum_dilation!=1.
+
+2010-06-07  Paolo Carlini  
+
+	PR libstdc++/44417
+	* include/c_std/cwctype: Provide a workaround for bug glibc
+	BZ 9694 affecting glibc 2.9 and older.
+	* include/c_global/cwctype: Likewise.
+	* testsuite/util/testsuite_abi.h: Remove temporary workaround.
+	* testsuite/util/testsuite_allocator.h: Use everywhere std::size_t
+	and std::ptrdiff_t, don't include .
+
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	error_code.cc: Minor tweak, prefer  to .
+
+2010-06-07  Paolo Carlini  
+
+	* include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp:
+	Avoid -Wall warnings.
+	* testsuite/27_io/ios_base/failure/what-3.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/str/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/snextc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Likewise.
+	* testsuite/27_io/types/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ws/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ws/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc:
+	Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc:
+	Likewise.
+	* testsuite/27_io/fpos/mbstate_t/4_neg.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/2.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/3.cc: Likewise.
+	* testsuite/27_io/fpos/mbstate_t/5.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/char/4.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/12790-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: Likewise.
+	* testsuite/25_algorithms/minmax/3.cc: Likewise.
+	* testsuite/19_diagnostics/logic_error/what-3.cc: Likewise.
+	* testsuite/19_diagnostics/runtime_error/what-3.cc: Likewise.
+	* testsuite/19_diagnostics/system_error/what-3.cc: Likewise.
+	* testsuite/24_iterators/front_insert_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/back_insert_iterator/2.cc: Likewise.
+	* testsuite/24_iterators/insert_iterator/2.cc: Likewise.
+	* testsuite/18_support/exception_ptr/make_exception_ptr.cc: Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/c_strings/wchar_t/2.cc: Likewise.
+	* testsuite/21_strings/c_strings/char/1.cc: Likewise.
+	* testsuite/21_strings/c_strings/char/2.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	copy.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	cons/copy.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/
+	cons/copy.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	cons/copy.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	cons/copy.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/
+	cons/copy.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/
+	requirements/constants.cc: Likewise.
+	* testsuite/26_numerics/complex/complex_value.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/overloads.cc: Likewise.
+	* testsuite/26_numerics/headers/cmath/
+	c99_classification_macros_c++.cc: Likewise.
+	* testsuite/26_numerics/slice_array/array_assignment.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/wchar_t/12971.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/money_put/put/char/12971.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/3.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/5.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/6.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/7.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/8.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/17038.cc: Likewise.
+	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_put/put/char/1.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_year/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_monthname/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_date/char/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/wchar_t/5.cc: Likewise.
+	* testsuite/22_locale/time_get/get_time/char/5.cc: Likewise.
+	* testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/num_get/get/char/1.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/moneypunct/members/char/1.cc: Likewise.
+	* testsuite/22_locale/ctype_base/mask.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	subtract_with_carry_01/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	discard_block/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	linear_congruential/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	mersenne_twister/requirements/constants.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/
+	xor_combine/requirements/constants.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cstdio/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/templates.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cmath/functions.cc: Likewise.
+	* testsuite/tr1/8_c_compatibility/cwctype/functions.cc: Likewise.
+	* testsuite/tr1/6_containers/utility/pair.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/
+	increment_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/
+	bitwise_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_integral/operators/
+	decrement_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_flag/cons/1.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+	* testsuite/23_containers/priority_queue/members/7161.cc
+	* testsuite/23_containers/set/dr130.cc: Likewise.
+	* testsuite/23_containers/list/pthread5.cc: Likewise.
+	* testsuite/23_containers/map/dr130.cc: Likewise.
+	* testsuite/util/exception/safety.h: Likewise.
+	* testsuite/util/testsuite_common_types.h: Likewise.
+	* testsuite/20_util/clocks/1.cc: Likewise.
+
+2010-06-06  Jonathan Wakely  
+
+	* doc/Makefile.am, doc/Makefile.in (xml_sources_extra): Add
+	fdl-1.3.xml.
+	* doc/xml/manual/intro.xml: Update FDL link.
+	* doc/xml/manual/spine.xml: Update FDL include.
+	* doc/xml/gnu/fdl-1.3.xml: Add.
+	* doc/html/*: Regenerate.
+
+2010-06-06  Jonathan Wakely  
+
+	* include/ext/pointer.h (_Pointer_adapter::operator++): Remove
+	name of unused parameter.
+
+2010-06-06  Jonathan Wakely  
+
+	PR libstdc++/40296
+	* libsupc++/exception_ptr.h (exception_ptr::exception_ptr): Replace
+	__safe_bool constructor with nullptr_t constructor in C++0x mode.
+	(exception_ptr::operator bool): Add explicit conversion to bool.
+	(swap(exception_ptr&, exception_ptr&)): Add.
+	(exception_ptr::_M_safe_bool_dummy): Only declare for old ABI.
+	* libsupc++/eh_ptr.cc (exception_ptr::_M_safe_bool_dummy): Move
+	next to other functions retained for ABI compatibility.
+	* testsuite/18_support/exception_ptr/requirements.cc: New.
+	* testsuite/18_support/exception_ptr/requirements_neg.cc: New.
+
+2010-06-05  Jonathan Wakely  
+
+	* include/bits/shared_ptr_base.h (_Sp_counted_ptr::_M_dispose): Make
+	nullptr_t specializations inline.
+
+2010-06-05  Jonathan Wakely  
+
+	* doc/xml/manual/status_cxx200x.xml: Update.
+
+2010-06-05  Magnus Fromreide  
+	    Jonathan Wakely  
+
+	* include/std/functional (function): Add nullptr_t support.
+	* include/bits/shared_ptr.h (shared_ptr): Likewise.
+	* include/bits/unique_ptr.h (unique_ptr): Likewise.
+
+2010-06-05  Jonathan Wakely  
+
+	* include/bits/shared_ptr_base.h (__shared_ptr): Add nullptr_t support.
+	(__shared_count): Add nullptr_t support and make constructors explicit.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: Adjust.
+	* testsuite/20_util/shared_ptr/cons/nullptr.cc: New.
+	* testsuite/20_util/unique_ptr/cons/nullptr.cc: New.
+	* testsuite/20_util/unique_ptr/assign/nullptr.cc: New.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
+
+2010-06-04  Jason Merrill  
+
+	* testsuite/util/testsuite_abi.h: Work around glibc BZ 9694.
+
+2010-06-03  Paolo Carlini  
+
+	* testsuite/util/testsuite_iterators.h: Don't include ,
+	don't use NULL, use std::size_t and std::ptrdiff_t.
+	* testsuite/18_support/exception/38732.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_2.cc: Likewise.
+	* testsuite/22_locale/time_put/put/wchar_t/12439_3.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
+	* testsuite/23_containers/list/pthread1.cc: Likewise.
+	* testsuite/23_containers/map/pthread6.cc: Likewise.
+	* testsuite/util/testsuite_hooks.cc: Likewise.
+	* config/locale/gnu/codecvt_members.cc: Likewise.
+	* config/locale/gnu/messages_members.cc: Likewise.
+	* config/locale/gnu/c_locale.h: Likewise.
+	* config/locale/gnu/messages_members.h: Likewise.
+	* config/locale/gnu/monetary_members.cc: Likewise.
+	* config/locale/gnu/time_members.cc: Likewise.
+	* config/locale/gnu/time_members.h: Likewise.
+	* config/locale/generic/c_locale.cc: Likewise.
+	* config/locale/generic/codecvt_members.cc: Likewise.
+	* config/locale/generic/c_locale.h: Likewise.
+	* config/locale/generic/time_members.cc: Likewise.
+	* config/locale/generic/time_members.h: Likewise.
+
+2010-06-03  Paolo Carlini  
+
+	* include/bits/c++config (std::size_t, std::ptrdiff_t,
+	std::nullptr_t): Provide typedefs.
+	* include/c_std/cstddef: Don't provide std::size_t and
+	std::ptrdiff_t here.
+	* include/c_global/cstddef: Likewise.
+	* src/condition_variable.cc: Don't include ,
+	don't use NULL, use std::size_t and std::ptrdiff_t.
+	* src/mt_allocator.cc: Likewise.
+	* src/localename.cc: Likewise.
+	* src/chrono.cc: Likewise.
+	* src/thread.cc: Likewise.
+	* include/debug/formatter.h: Likewise.
+	* include/debug/functions.h: Likewise.
+	* include/std/valarray: Likewise.
+	* include/std/thread: Likewise.
+	* include/std/type_traits: Likewise.
+	* include/std/atomic: Likewise.
+	* include/std/iterator: Likewise.
+	* include/std/bitset: Likewise.
+	* include/std/fstream: Likewise.
+	* include/std/mutex: Likewise.
+	* include/c_std/cstdlib: Likewise.
+	* include/c_std/cstdio: Likewise.
+	* include/c_std/ctime: Likewise.
+	* include/c_std/cwchar: Likewise.
+	* include/c_std/cstring: Likewise.
+	* include/parallel/multiway_merge.h: Likewise.
+	* include/parallel/multiseq_selection.h: Likewise.
+	* include/parallel/base.h: Likewise.
+	* include/parallel/basic_iterator.h: Likewise.
+	* include/parallel/multiway_mergesort.h
+	* include/parallel/partition.h: Likewise.
+	* include/ext/string_conversions.h: Likewise.
+	* include/ext/pb_ds/assoc_container.hpp: Likewise.
+	* include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp:
+	Likewise.
+	* include/ext/pb_ds/detail/resize_policy/
+	hash_prime_size_policy_imp.hpp: Likewise.
+	* include/ext/pb_ds/detail/resize_policy/
+	sample_resize_policy.hpp: Likewise.
+	* include/ext/pb_ds/detail/resize_policy/
+	sample_resize_trigger.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/binomial_heap_base_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_store_hash_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/d: Likewise.etail/cc_hash_table_map_/
+	insert_no_store_hash_fn_imps.hpp
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	cmp_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	insert_store_hash_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	entry_list_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	cc_ht_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	resize_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	constructor_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/cc_hash_table_map_/
+	erase_no_store_hash_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/
+	iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/
+	const_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/
+	point_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/unordered_iterator/
+	const_point_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/
+	insert_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/
+	const_child_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	r_erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	rotate_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	node_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	point_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/bin_search_tree_/
+	iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	gp_ht_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	resize_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/gp_hash_table_map_/
+	standard_policies.hpp: Likewise.
+	* include/ext/pb_ds/detail/tree_policy/
+	sample_tree_node_update.hpp: Likewise.
+	* include/ext/pb_ds/detail/basic_tree_policy/
+	null_node_metadata.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/
+	const_point_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/binary_heap_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/trie_policy/
+	sample_trie_node_update.hpp: Likewise.
+	* include/ext/pb_ds/detail/trie_policy/
+	sample_trie_e_access_traits.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/pairing_heap_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_policy/
+	counter_lu_metadata.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	null_metadata.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	const_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+	const_point_iterator.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/thin_heap_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/
+	constructors_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
+	* include/ext/pb_ds/detail/ov_tree_map_/
+	iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/
+	sample_ranged_probe_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Likewise.
+	* include/ext/pb_ds/detail/hash_fn/
+	sample_ranged_hash_fn.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/splay_tree_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	trace_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	find_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	constructor_destructor_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/list_update_map_/
+	iterators_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rc_binomial_heap_/
+	debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/
+	split_join_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Likewise.
+	* include/ext/pb_ds/list_update_policy.hpp: Likewise.
+	* include/ext/pb_ds/exception.hpp: Likewise.
+	* include/ext/pb_ds/tree_policy.hpp: Likewise.
+	* include/ext/pb_ds/tag_and_trait.hpp: Likewise.
+	* include/ext/pb_ds/hash_policy.hpp: Likewise.
+	* include/ext/pb_ds/trie_policy.hpp: Likewise.
+	* include/ext/pb_ds/priority_queue.hpp: Likewise.
+	* include/ext/throw_allocator.h: Likewis: Likewise.e.
+	* include/ext/bitmap_allocator.h
+	* include/ext/rc_string_base.h: Likewise.
+	* include/ext/new_allocator.h: Likewise.
+	* include/ext/codecvt_specializations.h: Likewise.
+	* include/ext/functional: Likewise.: Likewise.
+	* include/ext/array_allocator.h: Likewise.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/ext/sso_string_base.h: Likewise.
+	* include/profile/impl/profiler_trace.h: Likewise.
+	* include/profile/impl/profiler_node.h: Likewise.
+	* include/bits/stl_algobase.h: Likewise.
+	* include/bits/functional_hash.h: Likewise.
+	* include/bits/locale_facets.tcc: Likewise.
+	* include/bits/locale_facets.h: Likewise.
+	* include/bits/stl_iterator_base_types.h: Likewise.
+	* include/bits/move.h: Likewise.
+	* include/bits/boost_concept_check.h: Likewise.
+	* include/bits/basic_string.tcc: Likewise.
+	* include/bits/locale_facets_nonio.tcc: Likewise.
+	* include/bits/fstream.tcc: Likewise.
+	* include/bits/locale_facets_nonio.h: Likewise.
+	* include/c_global/cstdlib: Likewise.
+	* include/c_global/cstdio: Likewise.
+	* include/c_global/ctime: Likewise.
+	* include/c_global/cwchar: Likewise.
+	* include/c_global/cstring
+	* include/tr1/type_traits: Likewise.
+	* include/backward/hash_fun.h: Likewise.
+	* libsupc++/new: Likewise.
+	* libsupc++/initializer_list: Likewise.
+	* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
+	* testsuite/27_io/basic_iostream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_streambuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/5268.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/char/5268.cc: Likewise.
+	* testsuite/27_io/objects/char/10.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/copyfmt/char/2.cc: Likewise.
+	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/locales/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ios/clear/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc: Likewise.
+	* testsuite/27_io/basic_stringbuf/sputn/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/get/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/ignore/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/peek/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/getline/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	exceptions_null.cc
+	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+	1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/
+	exceptions_null.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_other/char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/cons/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/
+	wchar_t/01.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_arithmetic/
+	char/01.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	wchar_t/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	wchar_t/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	char/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	char/2.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	char/3.cc: Likewise.
+	* testsuite/27_io/basic_istream/extractors_character/
+	char/9826.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/wchar_t/1.cc: Likewise.
+	* testsuite/27_io/basic_istream/read/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	exceptions_null.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+	1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/
+	exceptions_null.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/cons/2020.cc: Likewise.
+	* testsuite/27_io/basic_ostream/sentry/pod/1.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	wchar_t/8.cc: Likewise.
+	* testsuite/27_io/basic_ostream/inserters_character/
+	char/8.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputc/char/1057.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/1.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/close/char/12790-3.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/sputn/char/1057.cc: Likewise.
+	* testsuite/24_iterators/ostreambuf_iterator/2.cc: Likewise.
+	* testsuite/18_support/bad_exception/23591_thread-1.c
+	* testsuite/18_support/new_delete_placement.cc: Likewise.
+	* testsuite/18_support/pthread_guard.cc: Likewise.
+	* testsuite/21_strings/basic_string/operations/wchar_t/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/operations/char/1.cc: Likewise.
+	* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/wchar_t/5.cc: Likewise.
+	* testsuite/21_strings/basic_string/cons/char/5.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/
+	assign_neg.cc: Likewise.
+	* testsuite/30_threads/recursive_timed_mutex/cons/
+	copy_neg.cc: Likewise.
+	* testsuite/ext/mt_allocator/22309_thread.cc: Likewise.
+	* testsuite/ext/slist/23781.cc: Likewise.
+	* testsuite/ext/rope/pthread7-rope.cc: Likewise.
+	* testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
+	* testsuite/22_locale/ctype/is/wchar_t/1.cc: Likewise.
+	* testsuite/22_locale/ctype/is/char/1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_1.cc: Likewise.
+	* testsuite/22_locale/time_put/put/char/12439_3.cc: Likewise.
+	* testsuite/22_locale/locale/cons/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
+	* testsuite/22_locale/locale/cons/29217.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/14071.cc: Likewise.
+	* testsuite/22_locale/locale/global_locale_objects/2.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multimap/
+	requirements/iterator_null_neg.cc: Likewise.
+	* testsuite/tr1/6_containers/unordered_multiset/
+	requirements/iterator_null_neg.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/single_value.cc: Likewise.
+	* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Likewise.
+	* testsuite/23_containers/multimap/23781.cc: Likewise.
+	* testsuite/23_containers/set/23781.cc: Likewise.
+	* testsuite/23_containers/multiset/23781.cc: Likewise.
+	* testsuite/23_containers/list/pthread1.cc: Likewise.
+	* testsuite/23_containers/list/23781.cc: Likewise.
+	* testsuite/23_containers/map/pthread6.cc: Likewise.
+	* testsuite/23_containers/map/23781.cc: Likewise.
+	* testsuite/util/regression/rand/priority_queue/
+	rand_regression_test.hpp: Likewise.
+	* testsuite/util/regression/rand/priority_queue/
+	container_rand_regression_test.tcc: Likewise.
+	* testsuite/util/regression/rand/assoc/
+	rand_regression_test.hpp: Likewise.
+	* testsuite/util/regression/rand/assoc/
+	container_rand_regression_test.tcc: Likewise.
+	* testsuite/util/testsuite_hooks.cc: Likewise.
+	* testsuite/util/testsuite_io.h: Likewise.
+	* testsuite/util/testsuite_iterators.h: Likewise.
+	* testsuite/util/replacement_memory_operators.h: Likewise.
+	* testsuite/util/testsuite_allocator.h: Likewise.
+	* testsuite/util/testsuite_performance.h: Likewise.
+
+2010-06-02  Jonathan Wakely  
+
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc: Fix
+	which tests are run.
+	* testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
+
+2010-06-01  Maxim Kuvyrkov  
+
+	* acinclude.m4, configure.host: Support Bionic C library.
+	* configure: Regenerate.
+	* config/os/bionic/ctype_base.h, config/os/bionic/ctype_inline.h,
+	* config/os/bionic/ctype_noincline.h, config/os/bionic/os_defines.h:
+	New files, based on config/os/newlib/*.
+
+2010-05-31  Jonathan Wakely  
+
+	PR libstdc++/43820
+	* include/bits/shared_ptr_base.h: Require complete type.
+	* include/tr1/shared_ptr.h: Likewise.
+	* testsuite/20_util/shared_ptr/cons/43820.cc: New.
+	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820.cc: New.
+
+2010-05-31  Paolo Carlini  
+
+	* include/bits/basic_string.h (front, back): Add.
+	* include/debug/string: Adjust.
+	* include/ext/vstring.h (front, back): Tweak the implementation
+	to follow more closely the letter of the specs.
+	* testsuite/21_strings/basic_string/element_access/char/
+	front_back.cc: New.
+	* testsuite/21_strings/basic_string/element_access/wchar_t/
+	front_back.cc: Likewise.
+	* config/abi/pre/gnu.ver: Export new symbols.
+	* testsuite/util/testsuite_abi.cc: Adjust.
+	* configure.ac: Bump minor version to 6:15:0.
+	* configure: Regenerate.
+
+2010-05-28  Paolo Carlini  
+
+	* include/bits/stl_vector.h (vector<>::data): Fix return type
+	in c++0x mode.
+	* testsuite/23_containers/vector/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-05-27  Jason Merrill  
+
+	Revert:
+	PR libstdc++/42832
+	* include/std/functional (function<>::swap): Perform bytewise
+	swap of _M_functor.
+	* include/tr1/functional (function<>::swap): Likewise.
+
+2010-05-27  Paolo Carlini  
+
+	PR libstdc++/40497
+	* include/bits/cpp_type_traits.h (__is_iterator): Add.
+	* include/bits/stl_iterator_base_funcs.h (next, prev): Use it.
+	* testsuite/24_iterators/operations/40497.cc: New.
+
+2010-05-21  Paolo Carlini  
+
+	PR libstdc++/25306
+	* include/bits/stl_algobase.h (fill_n): Use a properly typed __niter
+	initialized to __n.
+	* include/bits/stl_algo.h (generate_n): Likewise.
+	* testsuite/25_algorithms/fill_n/25306.cc: New.
+	* testsuite/25_algorithms/generate_n/25306.cc: Likewise.
+
+2010-05-21  Joseph Myers  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Use GNU locale model for
+	glibc 2.3 and later, but not uClibc, without an execution test.
+	* configure: Regenerate.
+	* doc/xml/manual/configure.xml, doc/xml/manual/prerequisites.xml,
+	doc/xml/faq.xml: Update.
+
+2010-05-21  Paolo Carlini  
+
+	* include/tr1/functional: Use std::__addressof.
+	* include/tr1/hashtable_policy.h: Likewise.
+
+2010-05-20  Paolo Carlini  
+
+	PR libstdc++/41792
+	* include/tr1_impl/array: Use std::__addressof.
+	* include/std/functional (reference_wrapper): Likewise.
+	* include/ext/throw_allocator.h: Likewise.
+	* include/ext/pool_allocator.h: Likewise.
+	* include/ext/bitmap_allocator.h: Likewise.
+	* include/ext/new_allocator.h: Likewise.
+	* include/ext/malloc_allocator.h: Likewise.
+	* include/ext/array_allocator.h: Likewise.
+	* include/ext/mt_allocator.h: Likewise.
+	* include/ext/extptr_allocator.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/hashtable_policy.h: Likewise.
+	* include/bits/forward_list.h: Likewise.
+	* include/bits/stl_uninitialized.h: Likewise.
+	* include/bits/list.tcc: Likewise.
+	* include/bits/stl_construct.h: Likewise.
+	* include/bits/stl_tree.h: Likewise.
+	* testsuite/20_util/reference_wrapper/41792.cc: New.
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/multimap/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/set/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/multiset/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/list/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/map/requirements/
+	explicit_instantiation/4.cc: Likewise.
+	* testsuite/23_containers/array/requirements/
+	explicit_instantiation/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/
+	dr438/assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-05-20  Peter Dimov  
+	    Paolo Carlini  
+
+	* include/bits/move.h (__addressof, addressof): Add.
+	* testsuite/util/testsuite_api.h (struct OverloadedAddress): Add.
+	* testsuite/20_util/addressof/requirements/
+	explicit_instantiation.cc: New.
+	* testsuite/20_util/addressof/1.cc: Likewise.
+
+2010-05-20  Paolo Carlini  
+
+	* include/bits/stl_pair.h (pair<>::pair(const pair&)): Defaulted
+	in C++0x mode.
+	(pair<>::operator=(const pair<>&)): Add in C++0x mode.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+	line number.
+
+2010-05-19  Jonathan Wakely  
+
+	* testsuite/30_threads/future/members/wait.cc (wait): Rename.
+	* testsuite/30_threads/shared_future/members/wait.cc (wait): Likewise.
+
+2010-05-18  Eelis van der Weegen  
+
+	PR libstdc++/44190
+	* include/debug/vector (vector<>::resize): Call
+	_M_update_guaranteed_capacity.
+	* testsuite/23_containers/vector/capacity/44190.cc: New.
+
+2010-05-17  Paolo Carlini  
+
+	* include/std/functional (result_of): Move...
+	* include/std/type_traits: ... here.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+	line number.
+
+2010-05-12  Jason Merrill  
+
+	* testsuite/20_util/auto_ptr/assign_neg.cc: Expect template
+	candidate messages.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2010-05-11  Silvius Rus  
+
+	PR libstdc++/43259
+	* include/profile/impl/profiler_algos.h: New.
+	* include/Makefile.am: Add.
+	* include/Makefile.in: Regenerate.
+	* include/profile/impl/profiler.h
+	(_GLIBCXX_PROFILE_DEFINE_UNINIT_DATA): Add.
+	* include/profile/impl/profiler_trace.h
+	(__mutex_t, __lock, __unlock): Remove.
+	(__lock_object_table, __lock_stack_table): Remove. Replace uses with
+	calls to __gnu_cxx::__mutex::lock.
+	(__unlock_object_table, __unlock_stack_table): Remove. Replace uses
+	with calls to __gnu_cxx::__mutex::unlock.
+	(__warn, __cost_factor_writer, __cost_factor_setter): Add.
+	* testsuite/ext/profile/profiler_algos.cc: New.
+
+2010-05-07  Jonathan Wakely  
+
+	* libsupc++/exception_ptr.h (make_exception_ptr): Add.
+	* testsuite/18_support/exception_ptr/make_exception_ptr.cc: New.
+
+2010-05-06  Jason Merrill  
+
+	* config/abi/pre/gnu.ver: Move decltype(nullptr) into CXXABI_1.3.5.
+	* testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_1.3.5.
+
+	* config/abi/pre/gnu.ver: Add typeinfo for decltype(nullptr).
+
+2010-05-06  Jonathan Wakely  
+
+	* include/bits/basic_string.h: Escape class names in doxygen docs.
+
+2010-05-06  Jonathan Wakely  
+
+	PR libstdc++/44014
+	* include/bits/stringfwd.h: Add doxygen comments and new group.
+	* include/bits/basic_string.h: Add to new doxygen group.
+	* doc/doxygen/user.cfg.in (ALIASES): Link to correct group.
+
+2010-05-06  Rainer Orth  
+
+	* configure.host: Removed irix[1-6], irix[1-5].*, irix6.[0-4]*
+	support.
+	* config/os/irix/irix5.2: Removed.
+
+2010-05-05  Paolo Carlini  
+
+	* testsuite/23_containers/vector/bool/capacity/29134.cc: Adjust
+	for profile-mode too.
+	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
+	Likewise.
+
+2010-05-05  Paolo Carlini  
+
+	* include/profile/unordered_map (unordered_map<>::insert(_InputIter,
+	_InputIter), unordered_multimap<>::insert(_InputIter, _InputIter)):
+	Fix typo, don't call base() on __first and __last.
+
+2010-05-05  Paolo Carlini  
+
+	Fix profile-mode vs -std=c++0x
+	* include/profile/impl/profiler_trace.h: Do not include the
+	whole , include  (additionally
+	to ).
+	(__write_cost_factors): Replace std::for_each with open-coding.
+	(__set_cost_factors): Likewise.
+	(__report): Likewise; use std::make_heap / std::sort_heap
+	instead of std::sort.
+	(__report_cost_factors): Replace std::remove with open-coding.
+	(__warn, __cost_factor_writer, __cost_factor_setter): Remove.
+
+2010-05-04  Ralf Wildenhues  
+
+	PR other/43620
+	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* python/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-05-01  Jonathan Wakely  
+
+	* doc/xml/faq.xml: Fix anachronisms.
+	* doc/xml/manual/intro.xml (Make): Tweak grammar and whitespace.
+	* doc/xml/manual/support.xml (NULL): Use inline  element
+	instead of  block.
+	* doc/html/*: Regenerate.
+
+2010-04-30  Paolo Carlini  
+
+	* include/bits/stl_pair.h (piecewise_construct_t,
+	pair<>::pair(piecewise_construct_t, tuple, tuple)): Add.
+	(pair<>::__cons, pair<>::__do_cons): Declare.
+	(__decay_and_strip, __strip_reference_wrapper): Move...
+	* include/std/type_traits: ... here.
+	* include/std/functional (_Index_tuple, _Build_index_tuple): Move...
+	* include/std/tuple: ... here.
+	(pack_arguments): Add.
+	(pair<>::__cons, pair<>::__do_cons): Define.
+	* testsuite/20_util/tuple/creation_functions/pack_arguments.cc: New.
+	* testsuite/20_util/pair/piecewise.cc: Likewise.
+	* testsuite/20_util/tuple/cons/big_tuples.cc: Include .
+	* testsuite/20_util/tuple/cons/constructor.cc: Likewise.
+	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+	Likewise.
+	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2010-04-27  Jonathan Wakely  
+
+	PR libstdc++/43865
+	* include/c_global/cstdlib (abort, exit): _GLIBCXX_NORETURN typo.
+
+2010-04-27  Jonathan Wakely  
+
+	* doc/xml/manual/status_cxx200x.xml: Update quick_exit status.
+	* doc/html/*: Regenerate.
+
+2010-04-27  Fabien Chêne  
+
+	* testsuite/util/testsuite_error.h: Add empty default constructor
+	to __gnu_test::test_category and
+	__gnu_test::test_derived_category.
+	* src/future.cc: Add empty default constructor to
+	future_error_category.
+	* src/system_error.cc: Add default ctor to generic_error_category
+	and system_error_category.
+
+2010-04-27  Alexander Monakov  
+
+	* testsuite/22_locale/codecvt/unshift/char/1.cc (test01): Clarify size
+	definition.  Use memcpy and memcmp to avoid access beyond allocated
+	memory.
+
+2010-04-27  Jonathan Wakely  
+
+	* doc/xml/manual/status_cxx200x.xml: Update to match n3092.
+	* doc/html/*: Regenerate.
+
+2010-04-25  Jonathan Wakely  
+
+	* doc/xml/manual/status_cxx200x.xml: Update Threads status.
+	* doc/html/manual/status.html: Regenerate.
+
+2010-04-24  Jonathan Wakely  
+
+	* include/bits/unique_ptr (unique_ptr::pointer): Use deleter's
+	pointer type if it exists.
+	* testsuite/20_util/unique_ptr/requirements/pointer_type.cc: New.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
+
+2010-04-22  Johannes Singler  
+
+	* include/parallel/partition.h (__parallel_partition):
+	Improve scalability by:
+	-introducing new variables __leftold, __rightold, __dist, thus
+	-getting rid of omp lock by using atomic operations
+	-getting rid of two omp barriers
+
+2010-04-22  Jonathan Wakely  
+
+	* doc/xml/faq.xml: Link to manual.
+	* doc/xml/manual/using.xml: Expand dynamic libraries section.
+	* doc/xml/manual/strings.xml: Mention shrink_to_fit() member.
+	* doc/xml/manual/prerequisites.xml: Link to doxygen requirements.
+	* doc/xml/manual/appendix_contributing.xml: Update Bash version.
+	* doc/html/*: Regenerate.
+
+2010-04-13  Ian Lance Taylor  
+
+	* include/backward/hash_map: Don't #include "backward_warning.h"
+	if _GLIBCXX_PERMIT_BACKWARD_HASH is defined.
+	* include/backward/hash_set: Likewise.
+
+2010-04-12  Rainer Orth  
+
+	* configure.host (os_include_dir): Removed solaris2.7 support.
+	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Likewise.
+	* configure: Regenerate.
+
+2010-04-06  Matthias Klose  
+
+	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Show test result.
+	* configure: Regenerate.
+	* doc/xml/manual/configure.xml, doc/html/manual/configure.html:
+	Document --enable-libstdcxx-time as the short form for
+	--enable-libstdcxx-time=yes.
+
+2010-04-03  Paolo Carlini  
+
+	* include/bits/basic_string.h: Fix pasto in comment.
+	* include/ext/vstring.h: Likewise.
+
+2010-04-02  Ralf Wildenhues  
+
+	* Makefile.in: Regenerate.
+	* aclocal.m4: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* include/Makefile.in: Regenerate.
+	* libsupc++/Makefile.in: Regenerate.
+	* po/Makefile.in: Regenerate.
+	* python/Makefile.in: Regenerate.
+	* src/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-03-30  Johannes Singler  
+
+	* include/parallel/random_shuffle.h
+	(__parallel_random_shuffle_drs) : Take as many threads as
+	possible, i. e. favor parallelism over cache efficiency.
+	Use own PRNG also for the 1 thread case.
+
+2010-03-30  Paolo Carlini  
+
+	* include/debug/unordered_map: Clean-up includes and guards.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/list: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/unordered_set: Likewise.
+
+2010-03-29  John David Anglin  
+
+	PR target/43458
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Xfail hppa*-*-hpux*.
+
+2010-03-26  Rainer Orth  
+
+	* doc/xml/manual/profile_mode.xml (Profile Diagnostics): Correct
+	cols.
+	* doc/xml/manual/using.xml (C++ 1998 Library Headers): Add missing
+	c5 colspec.
+	(C++ 1998 Library Headers for C Library Facilities): Likewise.
+	(C++ 200x Library Headers): Likewise.
+
+2010-03-25  Paolo Carlini  
+
+	* include/bits/unordered_map.h (operator==, operator!=): Add per N3068.
+	* include/bits/unordered_set.h (operator==, operator!=): Likewise.
+	* include/debug/unordered_map (operator==, operator!=): Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* testsuite/23_containers/unordered_map/operators/1.cc: New.
+	* testsuite/23_containers/unordered_multimap/operators/1.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/operators/2.cc: Likewise.
+	* testsuite/23_containers/unordered_set/operators/1.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/operators/1.cc: Likewise.
+
+2010-03-25  John Lakos  
+	    Pablo Halpern  
+	    Paolo Carlini  
+
+	* include/bits/hashtable_policy.h (struct _Equality_base): Add.
+	* include/bits/hashtable.h (_Hashtable<>): Derive from the latter.
+
+2010-03-23  Paolo Carlini  
+
+	* testsuite/util/testsuite_tr1.h (NType, TType, SLType, PODType): Add.
+	* testsuite/20_util/is_trivial/value.cc: Adjust.
+	* testsuite/20_util/is_standard_layout/value.cc: Likewise.
+	* testsuite/20_util/is_pod/value.cc: Likewise.
+
+2010-03-23  Paolo Carlini  
+
+	* testsuite/20_util/is_trivial/value.cc: New.
+	* testsuite/20_util/is_standard_layout/value.cc: Likewise.
+	* testsuite/20_util/is_pod/value.cc: Extend.
+
+2010-03-23  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (lower_bound(_ForwardIterator,
+	_ForwardIterator, const _Tp&, _Compare)): Move...
+	* include/bits/stl_algo.h: ... here.
+
+2010-03-22  Johannes Singler  
+
+	* include/parallel/numeric (inner_product, partial_sum):
+	Precede subsequent call with _GLIBCXX_STD_P:: to avoid ambiguity
+	between __gnu_parallel:: and std::
+	* include/parallel/algobase.h (equal): Likewise.
+	* include/parallel/algo.h (find_first_of, search_n, merge, nth_element,
+	partial_sort, max_element, min_element): Likewise.
+	* include/parallel/partial_sum.h (__parallel_partial_sum_linear):
+	Qualify accumulate call with __gnu_parallel::.
+
+2010-03-22  Paolo Carlini  
+
+	* include/parallel/base.h (_PseudoSequence): Do not forward declare.
+	(_VoidFunctor): Remove, unused.
+	(__median_of_three_iterators): Take __comp by value.
+	(_PseudoSequenceIterator<>::operator++(int)): Do not const qualify
+	the return type.
+	(_PseudoSequenceIterator<>::operator!=): Fix return type to bool.
+
+2010-03-22  Paolo Carlini  
+
+	* include/parallel/base.h (_Less): Use std::less.
+	(_Plus): Likewise use std::plus.
+	(_Multiplies): Likewise use std::multiplies.
+	* include/parallel/numeric: Adjust.
+
+2010-03-19  Paolo Carlini  
+
+	* testsuite/17_intro/freestanding.cc: Avoid -Wall warnings.
+
+2010-03-19  Rodolfo Lima  
+
+	* include/bits/shared_ptr.h (shared_ptr(unique_ptr&&),
+	shared_ptr(auto_ptr&&)): Remove explicit specifier (as per DR 925).
+	* include/bits/shared_ptr_base.h: Likewise.
+	* testsuite/20_util/shared_ptr/creation/dr925.cc: New.
+
+2010-03-19  Paolo Carlini  
+
+	* include/bits/random.tcc: Minor formatting changes.
+
+2010-03-19  Paolo Carlini  
+
+	* include/bits/stl_algo.h (shuffle): Fix typo in signature.
+	* include/bits/algorithmfwd.h: Adjust.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+2010-03-19  Paolo Carlini  
+
+	* include/bits/stl_algo.h (shuffle): Add, per D3056.
+	(random_shuffle): Fix signature in C++0x mode.
+	(lower_bound, __lg): Move...
+	* include/bits/stl_algobase.h: ... here.
+	* include/bits/algorithmfwd.h: Adjust.
+	* include/parallel/algorithmfwd.h: Likewise.
+	* include/parallel/algo.h: Likewise.
+	* include/bits/hashtable_policy.h (__lower_bound): Remove,
+	adjust callers.
+	* include/tr1/hashtable_policy.h (__lower_bound): Likewise.
+	* include/bits/random.tcc (__detail::__transform): Add,
+	adjust std::transform callers; don't include .
+	* testsuite/25_algorithms/shuffle/1.cc: Add.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/2.cc: Likewise.
+	* testsuite/25_algorithms/shuffle/requirements/
+	explicit_instantiation/pod.cc: Likewise.
+
+	* include/bits/random.h: Add comments.
+
+2010-03-17  Jonathan Wakely  
+
+	* doc/xml/manual/debug_mode.xml: Correct debug headers.
+
+2010-03-17  Jonathan Wakely  
+
+	PR libstdc++/43397
+	* include/std/functional (_Mem_fn): Use perfect forwarding.
+	* testsuite/20_util/function/43397.cc: New.
+
+2010-03-16  Paolo Carlini  
+
+	PR libstdc++/43394
+	* include/parallel/compatibility.h: Add __k8 and __core2 among the
+	i386 targets supporting atomic operations.
+
+2010-03-16  Paolo Carlini  
+
+	* include/backward/hash_map: Use consistently the _BACKWARD_*
+	prefix for the include guard.
+	* include/backward/hash_fun.h: Likewise.
+	* include/backward/hashtable.h: Likewise.
+	* include/backward/auto_ptr.h: Likewise.
+	* include/backward/strstream: Likewise.
+	* include/backward/binders.h: Likewise.
+	* include/backward/hash_set: Likewise.
+
+2010-03-16  Paolo Carlini  
+
+	* include/bits/random.h (operator==(const uniform_int_distribution<>&,
+	const uniform_int_distribution<>&), operator==(const
+	uniform_real_distribution<>&, const uniform_real_distribution<>&),
+	operator==(const lognormal_distribution<>&,
+	const lognormal_distribution<>&), operator==(const
+	chi_squared_distribution<>&, const chi_squared_distribution<>&),
+	operator==(const cauchy_distribution<>&, const cauchy_distribution<>&),
+	operator==(const fisher_distribution<>&, const fisher_distribution<>&),
+	operator==(const student_t_distribution<>&,
+	const student_t_distribution<>&), operator==(const
+	bernoulli_distribution<>&, const bernoulli_distribution<>&),
+	operator==(const binomial_distribution<>&, const
+	binomial_distribution<>&), operator==(const geometric_distribution<>&,
+	const geometric_distribution<>&), operator==(const
+	negative_binomial_distribution<>&, const
+	negative_binomial_distribution<>&), operator==(const
+	poisson_distribution<>&, const poisson_distribution<>&),
+	operator==(const exponential_distribution<>&,
+	const exponential_distribution<>&), operator==(const
+	gamma_distribution<>&, const gamma_distribution<>&), operator==(const
+	weibull_distribution<>&, const weibull_distribution<>&),
+	operator==(const extreme_value_distribution<>&,
+	const extreme_value_distribution<>&), operator==(const
+	discrete_distribution<>&, const discrete_distribution<>&),
+	operator==(const piecewise_constant_distribution<>&,
+	const piecewise_constant_distribution<>&), operator==(const
+	piecewise_linear_distribution<>&, const
+	piecewise_linear_distribution<>&)): Add, likewise for operator!=.
+	(operator!=(const independent_bits_engine<>&, const
+	independent_bits_engine<>&), operator!=(const
+	subtract_with_carry_engine<>&, const subtract_with_carry_engine<>&),
+	operator!=(const discard_block_engine<>&, const
+	discard_block_engine<>&), operator!=(const mersenne_twister_engine<>&,
+	const mersenne_twister_engine<>&), operator!=(const
+	linear_congruential_engine<>&, const linear_congruential_engine<>&),
+	operator!=(const shuffle_order_engine<>&, const
+	shuffle_order_engine<>&): Add.
+	* include/bits/random.tcc (operator==(const normal_distribution<>&,
+	const normal_distribution<>&)): Add.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/
+	inequal.cc: New.
+	* testsuite/26_numerics/random/uniform_real_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/inequal.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_constant_distribution/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/chi_squared_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/normal_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/poisson_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/bernoulli_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/discrete_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/weibull_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/cauchy_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	operators/inequal.cc: Likewise.
+	* testsuite/26_numerics/random/negative_binomial_distribution/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/gamma_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/fisher_f_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/exponential_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/binomial_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/lognormal_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/extreme_value_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/inequal.cc: Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/
+	operators/equal.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/student_t_distribution/operators/
+	equal.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/operators/
+	inequal.cc: Likewise.
+	* testsuite/26_numerics/random/geometric_distribution/operators/
+	equal.cc: Likewise.
+
+2010-03-15  Paolo Carlini  
+
+	* include/bits/forward_list.tcc (_Fwd_list_node_base::
+	_M_transfer_after): Return _Fwd_list_node_base*.
+	(forward_list<>::_M_splice_after): Add.
+	(forward_list<>::insert_after(const_iterator, size_type, const _Tp&),
+	insert_after(const_iterator, _InputIterator, _InputIterator),
+	insert_after(const_iterator, initializer_list<>)): Use the above,
+	implement DR 1278 ([Ready] in Pittsburgh).
+	* include/bits/forward_list.h (insert_after(const_iterator,
+	size_type, const _Tp&), insert_after(const_iterator, _InputIterator,
+	_InputIterator), insert_after(const_iterator, initializer_list<>)):
+	Only declare.
+	* testsuite/23_containers/forward_list/modifiers/2.cc: Adjust.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-03-15  Paolo Carlini  
+
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line number.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/capacity/1.cc: Adjust.
+
+	Revert:
+	2008-11-11  Bob Walters  
+
+	* include/bits/forward_list.h: Support non-standard pointer types
+	(_Fwd_list_node_base): Add _Alloc template parameter.
+	(_Fwd_list_node<>): Likewise.
+	(_Fwd_list_iterator<>): Likewise.
+	(_Fwd_list_const_iterator<>): Likewise.
+	(_Fwd_list_node_base::_M_next, _M_transfer_after, _M_reverse_after):
+	Use _Alloc<_Tp>::pointer.
+	(_Fwd_list_iterator<>::_M_node): Use _Node_base::_Pointer.
+	(_Fwd_list_base<>::_M_get_node, _M_create_node, _M_create_node,
+	_M_insert_after, _M_put_node, _M_erase_after): Likewise.
+	(_Fwd_list_const_iterator<>::_M_node): use _Node_base::_Const_pointer.
+	(forward_list<>): Use __static_pointer_cast in place of static_cast,
+	and __const_pointer_cast in place of const_cast.
+	* include/bits/forward_list.tcc
+	(_Fwd_list_node<>::_M_sort_after): Using _Pointer typedefs in place
+	of standard pointers, __static_pointer_cast in place of static_cast.
+	(_Fwd_list_base<>::_Fwd_list_base, _M_insert_after, _M_erase_after):
+	Likewise.
+	(forward_list<>::_M_initialize_dispatch, _M_fill_initialize,
+	splice_after, remove, remove_if, merge): Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/1.cc: New.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/2.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/3.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/4.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/5.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/6.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/operations/7.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/1.cc:
+	Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/
+	explicit_instantiation/1.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/requirements/
+	explicit_instantiation/3.cc: Likewise.
+	* testsuite/23_containers/forward_list/ext_pointer/1.cc: Likewise.
+
+2010-03-13  Paolo Carlini  
+
+	* include/tr1_impl/array (swap(array<>&, array<>&)): Use member swap.
+
+	* include/bits/stl_algo.h: Improve comment.
+
+2010-03-12  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Adjust.
+	* doc/doxygen/user.cfg.in: Adjust latex, xml prefs.
+	* doc/xml/api.xml: Update.
+	* doc/Makefile.am: Re-do stamp rules.
+	* doc/Makefile.in: Regenerate.
+
+2010-03-10  Paolo Carlini  
+
+	* include/bits/hashtable_policy.h (_Rehash_base<_Prime_rehash_policy,
+	_Hashtable>::reserve): Add, per DR 1189.
+	* include/bits/hashtable.h (_Hashtable<>::size_type,
+	_Hashtable<>::difference_type): Do not typedef from _Allocator.
+	* testsuite/23_containers/unordered_map/dr1189.cc: New.
+	* testsuite/23_containers/unordered_set/dr1189.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/dr1189.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/dr1189.cc: Likewise.
+
+2010-03-08  Paolo Carlini  
+
+	Revert:
+	2010-02-11  Paolo Carlini  
+
+	PR libstdc++/41975, DR 579
+	* include/bits/hashtable.h (_Hashtable<>::_M_erase_node): Remove.
+	(erase(const_iterator), erase(const_iterator, const_iterator)):
+	Change return type to void.
+	* include/debug/unordered_map: Adjust.
+	* include/debug/unordered_set: Likewise.
+	* testsuite/util/exception/safety.h: Likewise.
+	* testsuite/23_containers/unordered_map/erase/1.cc: Likewise.
+	* testsuite/23_containers/unordered_map/erase/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_set/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_set/erase/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/24061-map.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/24061-map.cc:
+	Likewise.
+
+2010-03-04  Paolo Carlini  
+
+	* testsuite/util/testsuite_container_traits.h (traits_base): Add
+	has_throwing_erase trait.
+	(traits, traits): Typedef the latter to true_type.
+	* testsuite/util/exception/safety.h (generation_prohibited):
+	Do not test vector::erase and deque::erase: can throw if
+	either copy constructor or assignment operator of value_type
+	throws.
+	* testsuite/23_containers/vector/requirements/exception/
+	generation_prohibited.cc: Remove xfail.
+	* testsuite/23_containers/deque/requirements/exception/
+	generation_prohibited.cc: Likewise.
+
+	* include/ext/throw_allocator.h (hash<__gnu_cxx::throw_value_limit>::
+	operator(), hash<__gnu_cxx::throw_value_random>::operator()): Pass
+	argument by const ref.
+
+	* testsuite/util/testsuite_container_traits.h (traits,
+	traits, traits, traits,
+	traits, traits,
+	traits, traits): Typedef
+	consistently has_erase and has_insert as true_type.
+
+	* testsuite/util/testsuite_container_traits.h
+	(traits, traits,
+	traits, traits): Do not wrongly
+	typedef has_size_type_constructor as true_type: the constructor
+	accepting a size_type actually gets the initial number of
+	buckets.
+
+2010-03-03  Benjamin Kosnik  
+
+	* doc/Makefile.am: Re-organize xml sources.
+	(doc-latex-doxygen): New.
+	(doc-pdf-doxygen): New.
+	(stamp-xml-doxygen, stamp-latex-doxygen): New.
+	* doc/Makefile.in: Regenerate.
+	* doc/doxygen/user.cfg.in: Add support here.
+	* doc/xml/manual/appendix_contributing.xml: Add specifics.
+
+	* doc/xml/manual/concurrency.xml: New.
+	* doc/xml/manual/atomics.xml: New.
+	* doc/xml/manual/spine.xml: Adjust.
+	* doc/xml/manual/diagnostics.xml: Adjust.
+
+2010-03-03  Paolo Carlini  
+	    Jonathan Wakely  
+
+	* include/bits/unique_ptr.h (unique_ptr<>::get_deleter): Simplify
+	return type.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust
+	dg-error line number.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+
+2010-03-02  Paolo Carlini  
+
+	* include/debug/bitset (hash): Minor tweaks.
+	* include/debug/vector (hash): Likewise.
+	* include/profile/bitset (hash): Likewise.
+	* include/profile/vector (hash): Likewise.
+
+2010-03-02  Paolo Carlini  
+
+	* include/bits/functional_hash.h (_Fnv_hash_base<>::hash): Change
+	to template.
+	* include/tr1/functional_hash.h (_Fnv_hash_base<>::hash): Likewise.
+	* include/bits/vector.tcc (hash): Adjust.
+	* include/bits/basic_string.h (hash): Likewise.
+	* include/std/bitset (hash): Likewise.
+	* src/hash-string-aux.cc (hash): Likewise.
+
+2010-03-02  Jonathan Wakely  
+
+	* include/std/mutex (lock_guard::lock_guard): Do not lock mutex when
+	adopt_lock_t constructor is used.
+	* testsuite/30_threads/lock_guard/cons/1.cc: New.
+
+2010-03-02  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (hash>::
+	operator()(const vector&)): Move definition...
+	* include/bits/vector.tcc: ... here.
+
+2010-03-02  Rainer Orth  
+
+	* testsuite/Makefile.am (check-DEJAGNU): Include de* in normal0
+	dirs.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-03-02  Paolo Carlini  
+
+	* include/bits/stl_bvector.h (hash>): Add.
+	* include/debug/vector (hash<__debug::vector>):
+	Likewise.
+	* include/profile/vector (hash<__profile::vector>):
+	Likewise.
+	* testsuite/23_containers/vector/bool/hash/1.cc: New.
+
+	* include/std/bitset (hash>): Small tweaks.
+	(hash>): Add.
+	* include/debug/bitset (hash<__debug::bitset<_Nb>>): Forward to
+	hash>.
+	* include/profile/bitset (hash<__profile::bitset<_Nb>>): Likewise.
+	* testsuite/23_containers/bitset/hash/1.cc: Improve.
+
+2010-03-02  Jonathan Wakely  
+
+	PR libstdc++/43230
+	* testsuite/30_threads/promise/members/set_value3.cc
+	(tester::~tester): Remove.
+
+2010-03-02  Paolo Carlini  
+
+	* include/std/bitset (_Base_bitset<>::_M_getdata()): Add.
+	(hash>): Add, use the latter.
+	* include/debug/bitset (hash<__debug::bitset<_Nb>>): Add.
+	* include/profile/bitset (hash<__profile::bitset<_Nb>>): Likewise.
+	* testsuite/23_containers/bitset/hash/1.cc: New.
+
+2010-03-02  Jonathan Wakely  
+
+	PR libstdc++/43183
+	* include/bits/unique_ptr.h (reset): Fix as per working paper.
+	(operator*, operator->, operator[], operator bool, release): Use
+	pointer's null value instead of 0.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/modifiers/43183.cc: New.
+
+2010-03-01  Paolo Carlini  
+
+	* include/std/iomanip (get_money, put_money): Add in C++0x mode; tidy.
+	* testsuite/27_io/manipulators/extended/get_money/char/1.cc: New.
+	* testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc:
+	Likewise.
+	* testsuite/27_io/manipulators/extended/put_money/char/1.cc: Likewise.
+	* testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc:
+	Likewise.
+
+2010-03-01  Benjamin Kosnik  
+
+	* include/bits/atomicfwd_cxx.h: Add typedefs to group.
+
+2010-03-01  Rainer Orth  
+
+	PR libstdc++/32499
+	* testsuite/Makefile.am (check-DEJAGNU
+	$(check_DEJAGNU_normal_targets)): Export AR, RANLIB.
+	* testsuite/Makefile.in: Regenerate.
+
+2010-02-28  Gerald Pfeifer  
+
+	* doc/html/ext/pb_ds/references.html: Adjust link to SGI's STL
+	site.
+
+2010-02-28  Paolo Carlini  
+
+	* src/hash-long-double-aux.cc (hash::
+	operator()(long double)): Hash both -0 and +0 to 0.
+
+2010-02-25  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/random.tcc (operator<<): Use max_digits10.
+
+2010-02-25  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/std/limits (__numeric_limits_base::max_digits10,
+	numeric_limits<>::max_digits10, numeric_limits<>::lowest): Add.
+	* src/limits.cc: Define max_digits10.
+	* config/abi/pre/gnu.ver: Adjust.
+	* testsuite/18_support/numeric_limits/dr559.cc: Test max_digits10
+	and lowest too.
+	* testsuite/18_support/numeric_limits/lowest.cc: New.
+	* testsuite/18_support/numeric_limits/max_digits10.cc: New.
+
+2010-02-25  Paolo Carlini  
+
+	* include/bits/functional_hash.h (__hash_combine): Remove.
+	(_Fnv_hash_base<>::hash(const char*, size_t)): Add defaulted
+	hash parameter.
+	(_Fnv_hash::__hash_combine(const _Tp&, size_t)): Add.
+	* include/std/system_error (hash): Adjust.
+	* src/compatibility-c++0x.cc (hash): Likewise.
+
+2010-02-24  Benjamin Kosnik  
+
+	* doc/xml/faq.xml: Adjust structure for pdf index.
+	* doc/xml/manual/mt_allocator.xml: Same.
+	* doc/xml/manual/allocator.xml: Same.
+	* doc/xml/manual/ctype.xml: Same.
+	* doc/xml/manual/numerics.xml: Same.
+	* doc/xml/manual/codecvt.xml: Same.
+	* doc/xml/manual/intro.xml: Same.
+	* doc/xml/manual/shared_ptr.xml: Same.
+	* doc/xml/manual/status_cxxtr1.xml: Same.
+	* doc/xml/manual/auto_ptr.xml: Same.
+	* doc/xml/manual/internals.xml: Same.
+	* doc/xml/manual/status_cxx1998.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/profile_mode.xml: Same.
+	* doc/xml/manual/containers.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/concurrency_extensions.xml: Same.
+	* doc/xml/manual/appendix_porting.xml: Same.
+	* doc/xml/manual/utilities.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/bitmap_allocator.xml: Same.
+	* doc/xml/manual/configure.xml: Same.
+	* doc/xml/manual/build_hacking.xml: Same.
+	* doc/xml/manual/evolution.xml: Same.
+	* doc/xml/manual/using.xml: Same.
+	* doc/xml/manual/debug.xml: Same.
+	* doc/xml/manual/localization.xml: Same.
+	* doc/xml/manual/strings.xml: Same.
+	* doc/xml/manual/debug_mode.xml: Same.
+	* doc/xml/manual/locale.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/prerequisites.xml: Same.
+	* doc/xml/manual/messages.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/algorithms.xml: Same.
+	* doc/xml/manual/appendix_free.xml: Same.
+	* doc/xml/manual/iterators.xml: Same.
+	* doc/xml/manual/spine.xml: Same.
+	* doc/xml/manual/status_cxxtr24733.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Same.
+	* doc/Makefile.am: Refactor.
+	* doc/Makefile.in: Regenerate.
+
+	* include/bits/c++0x_warning.h: Tweak doxygen file markup.
+
+2010-02-24  Rainer Orth  
+
+	* testsuite/ext/new_allocator/deallocate_global.cc: Require
+	__cxa_atexit.
+	* testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
+
+2010-02-23  Benjamin Kosnik  
+
+	* doc/xml/manual/concurrency.xml: Move...
+	* doc/xml/manual/concurrency_extensions.xml: ...here.
+	* doc/xml/manual/extensions.xml: Adjust.
+	* doc/Makefile.am: Adjust.
+	* doc/Makefile.in: Regenerate.
+
+2010-02-23  Benjamin Kosnik  
+
+	* include/bits/random.h: Doxygen group markup fixes.
+
+2010-02-23  Paolo Carlini  
+
+	* include/bits/functional_hash.h (struct _Fnv_hash): Rename
+	to _Fnv_hash_base.
+	(struct _Fnv_hash): Add, derives from the latter.
+	(__hash_combine): Add.
+	(hash::operator()(float), hash::operator()(double)):
+	Adjust.
+	* include/bits/basic_string.h (hash, hash,
+	hash, hash): Adjust.
+	* src/hash-string-aux.cc: Adjust.
+	* src/compatibility-c++0x.cc (hash): Use __hash_combine.
+	* include/std/system_error (hash): Likewise.
+	* include/std/thread (struct hash): Add.
+	* include/tr1/functional_hash.h : Rename to _Fnv_hash_base.
+	(struct _Fnv_hash): Add, derives from the latter.
+	(hash::operator()(float), hash::operator()(double)):
+	Adjust.
+	* testsuite/30_threads/thread/id/hash.cc: New.
+	* testsuite/30_threads/thread/cons/assign_neg.cc: Adjust dg-error
+	line number.
+	* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
+
+2010-02-22  Janis Johnson  
+
+	* src/compatibility-ldbl.cc: Include new hash-long-double-aux.cc.
+
+2010-02-22  Paolo Carlini  
+
+	* src/hash-aux.cc: Rename to...
+	* src/hash-string-aux.cc: ... this.
+	* src/hash-long-double-aux.cc: New.
+	* src/hash_c++0x.cc: Adjust.
+	* src/hash_tr1.cc: Likewise.
+	* src/compatibility-c++0x.cc: Likewise.
+
+2010-02-22  Benjamin Kosnik  
+
+	* doc/xml/class.txml: Adjust biblio markup.
+	* doc/xml/manual/allocator.xml: Same.
+	* doc/xml/manual/ctype.xml: Same.
+	* doc/xml/manual/codecvt.xml: Same.
+	* doc/xml/manual/backwards_compatibility.xml: Same.
+	* doc/xml/manual/abi.xml: Same.
+	* doc/xml/manual/shared_ptr.xml: Same.
+	* doc/xml/manual/profile_mode.xml: Same.
+	* doc/xml/manual/using_exceptions.xml: Same.
+	* doc/xml/manual/locale.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/messages.xml: Same.
+	* doc/Makefile.am (DBLATEX_FLAGS): Adjust.
+	* doc/Makefile.in: Regenerate.
+
+2010-02-22  François Dumont  
+
+	* doc/xml/manual/profile_mode.xml: Minor updates and fixes.
+	* doc/xml/manual/debug_mode.xml: Likewise.
+	* doc/xml/manual/test.xml: Likewise.
+
+2010-02-22  Paolo Carlini  
+
+	* include/tr1_impl/complex (arg): Use std::signbit only when
+	available.
+
+2010-02-22  Paolo Carlini  
+
+	* include/bits/functional_hash.h (hash, hash,
+	hash, hash, hash): Move, per
+	DR 1182 to...
+	* include/bits/basic_string.h: ... here.
+	* include/std/system_error: ... and here, respectively.
+	* src/hash-aux.cc (hash::operator()(long double)):
+	Move definition...
+	* src/hash_c++0x.cc: ... here, new file.
+	* src/hash_tr1.cc: ... and here, tweak includes.
+	* src/compatibility-c++0x.cc (hash, _Fnv_hash): Remove.
+	* src/Makefile.am: Adjust.
+	* src/Makefile.in: Regenerate.
+	* include/std/functional: Include .
+	* include/std/unordered_set: Remove redundant include.
+	* include/std/unordered_map: Likewise.
+	* include/tr1/functional_hash.h: Remove spurious trailing semicolon.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Remove
+	dg-excess.
+
+2010-02-21  Paolo Carlini  
+
+	* include/std/complex (proj): Change return type per DR 1137.
+	(conj): Copy from tr1_impl, likewise adjust return type.
+	* include/tr1_impl/complex (conj): Remove.
+	* include/tr1/complex (conj): Add both overloads.
+	* testsuite/26_numerics/complex/dr781.cc: Rename to...
+	* testsuite/26_numerics/complex/dr781_dr1137.cc: ... this, and extend.
+
+	* include/tr1_impl/complex (arg): Optimize.
+
+2010-02-21  Paolo Carlini  
+
+	* testsuite/20_util/is_trivial/requirements/typedefs.cc: New.
+	* testsuite/20_util/is_trivial/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_pod/value.cc: Likewise.
+	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
+	* testsuite/20_util/is_pod/requirements/
+	explicit_instantiation.cc: Likewise.
+	* testsuite/20_util/is_standard_layout/requiremenents/
+	typedefs.cc: Likewise.
+	* testsuite/20_util/is_standard_layout/requiremenents/
+	explicit_instantiation.cc: Likewise.
+
+2010-02-20  Manuel López-Ibáñez  
+
+	PR c++/35669
+	* testsuite/18_support/headers/cstddef/macros.cc: Add
+	-Wno-conversion-null.
+
+2010-02-19  Paolo Carlini  
+
+	* include/tr1_impl/array (array): Add pointer and const_pointer
+	typedefs in C++0x mode, per DR 1306.
+	* testsuite/util/testsuite_containers.h (basic_types): Add pointer
+	and const_pointer typedefs.
+	(pointer_aware_types): Remove.
+	* testsuite/util/testsuite_container_traits.h: Adjust.
+
+2010-02-19  Paolo Carlini  
+
+	* include/bits/stl_algo.h (for_each): Implement resolution of DR 1110.
+	* testsuite/25_algorithms/for_each/1.cc: New.
+
+2010-02-19  Paolo Carlini  
+
+	* include/bits/shared_ptr_base.h (__weak_ptr): Remove deleted
+	comparison operators, per DR 1256.
+	* include/bits/shared_ptr.h (weak_ptr): Likewise.
+	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
+
+2010-02-18  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Add shortnames option.
+	* doc/Makefile.am (doc-man-doxygen): Use it.
+	(doc-html-doxygen): Use it.
+	(doc-xml-doxygen): Use it, but default to NO.
+	(doc-pdf-dblatex): Add.
+	* doc/Makefile.in: Regenerate.
+	* doc/doxygen/user.cfg.in: Update filelist.
+	* include/bits/locale_facets.h: Fix markup warning.
+
+2010-02-18  Benjamin Kosnik  
+
+	* doc/xml/manual/using.xml: Update.
+	* doc/xml/manual/status_cxx1998.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Add link.
+	* doc/html/*: Regenerate.
+
+	* testsuite/17_intro/freestanding.cc: Add.
+
+2010-02-18  Paolo Carlini  
+
+	* libsupc++/typeinfo: Add system_header pragma.
+	* libsupc++/exception: Likewise.
+	* libsupc++/cxxabi-forced.h: Likewise.
+	* libsupc++/new: Likewise.
+	* libsupc++/cxxabi.h: Likewise.
+	* libsupc++/initializer_list: Likewise.
+
+2010-02-18  Paolo Carlini  
+
+	* libsupc++/nested_exception.h: Fix  include.
+
+2010-02-17  Benjamin Kosnik  
+
+	* doc/xml/manual/appendix_contributing.xml: Update markup rules
+	for quoting and functions.
+
+2010-02-17  Chris Jefferson  
+
+	* include/bits/locale_facets.h (__convert_to_v): Add empty
+	exception-specification.
+
+2010-02-17  Paolo Carlini  
+
+	* include/std/limits: Implement resolution of DR 559 (CD1) in
+	C++0x mode.
+	* testsuite/18_support/numeric_limits/dr559.cc: New.
+
+2010-02-16  Benjamin Kosnik  
+
+	* src/ios_locale.cc: Fixes for -pedantic.
+	* src/system_error.cc: Same.
+	* src/locale.cc: Same.
+	* src/list.cc: Same.
+	* src/locale_facets.cc: Same.
+	* src/locale_init.cc: Same.
+	* src/ios.cc: Same.
+	* config/locale/darwin/ctype_members.cc: Same.
+	* config/locale/gnu/collate_members.cc: Same.
+	* config/locale/gnu/ctype_members.cc: Same.
+	* config/locale/gnu/c_locale.cc: Same.
+	* config/locale/gnu/monetary_members.cc: Same.
+	* config/locale/gnu/time_members.cc: Same.
+	* config/locale/ieee_1003.1-2001/c_locale.cc: Same.
+	* config/locale/generic/collate_members.cc: Same.
+	* config/locale/generic/ctype_members.cc: Same.
+	* config/locale/generic/c_locale.cc: Same.
+	* config/locale/generic/monetary_members.cc: Same.
+	* config/locale/generic/time_members.cc: Same.
+	* config/io/basic_file_stdio.cc: Same.
+
+	* libsupc++/pbase_type_info.cc: Fixes for -fno-rtti.
+	* libsupc++/pointer_type_info.cc: Same.
+	* libsupc++/eh_personality.cc: Same.
+
+	* include/std/system_error: Throw spacing.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/ios_base.h: Same.
+
+	* testsuite/17_intro/headers/c++200x/all_no_rtti.cc: New.
+	* testsuite/17_intro/headers/c++1998/all_no_rtti.cc: New.
+
+2010-02-16  Paolo Carlini  
+
+	* include/bits/random.h (linear_congruential_engine(_Sseq&),
+	mersenne_twister_engine(_Sseq&), subtract_with_carry_engine(_Sseq&)):
+	Do not enable for the type itself.
+	(discard_block_engine(_Sseq&), independent_bits_engine(_Sseq&),
+	shuffle_order_engine(_Sseq&)): Do not enable for the type itself too.
+	(linear_congruential_engine<>::seed(_Sseq&),
+	mersenne_twister_engine<>::seed(_Sseq&),
+	subtract_with_carry_engine<>::seed(_Sseq&)): Use enable_if on the
+	return type.
+	(discard_block_engine<>::seed(_Sseq&),
+	independent_bits_engine<>::seed(_Sseq&),
+	shuffle_order_engine<>::seed(_Sseq&)): Do not use enable_if.
+	* include/bits/random.tcc: Adjust definitions.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc:
+	New.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	copy.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/
+	copy.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	copy.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	copy.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/
+	copy.cc: Likewise.
+
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_move.cc: Minor tweaks.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	base_copy.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/independent_bits_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed1.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed2.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	default.cc: Likewise.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	seed1.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	seed2.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc:
+	Likewise.
+	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc:
+	Likewise.
+
+2010-02-16  Paolo Carlini  
+
+	* include/bits/unique_ptr.h: (unique_ptr<>::
+	unique_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+	operator=(const unique_ptr<_Up, _Up_Deleter>&)): Remove, redundant,
+	per DR 1303.
+	* include/bits/shared_ptr.h (shared_ptr<>::
+	shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+	operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
+	* include/bits/shared_ptr_base.h (__shared_ptr<>::
+	__shared_ptr(const unique_ptr<_Up, _Up_Deleter>&),
+	operator=(const unique_ptr<_Up, _Up_Deleter>&)): Likewise.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
+	* testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
+	Likewise.
+
+2010-02-15  Paolo Carlini  
+
+	* testsuite/ext/median.cc: Adjust.
+
+2010-02-15  Paolo Carlini  
+
+	* include/bits/stl_algo.h (__median): Move...
+	* include/ext/algorithm: ... here, being an SGI extension.
+
+2010-02-12  Jonathan Wakely  
+	    Paolo Carlini  
+
+	PR libstdc++/42819, DR 1315
+	* include/std/future (async): Use std::result_of for the template
+	argument of the std::future return type; adjust everywhere.
+	* testsuite/30_threads/async/42819.cc: New.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust
+	dg-error line number.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
+
+2010-02-11  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Revert last changes.
+
+2010-02-11  Jason Merrill  
+
+	* include/std/thread (~_Impl_base): Declare inline.
+	* libsupc++/nested_exception.h (~nested_exception): Likewise.
+
+2010-02-11  Paolo Carlini  
+
+	PR libstdc++/41975, DR 579
+	* include/bits/hashtable.h (_Hashtable<>::_M_erase_node): Remove.
+	(erase(const_iterator), erase(const_iterator, const_iterator)):
+	Change return type to void.
+	* include/debug/unordered_map: Adjust.
+	* include/debug/unordered_set: Likewise.
+	* testsuite/util/exception/safety.h: Likewise.
+	* testsuite/23_containers/unordered_map/erase/1.cc: Likewise.
+	* testsuite/23_containers/unordered_map/erase/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_set/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_set/erase/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/24061-map.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/1.cc:  Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/24061-map.cc:
+	Likewise.
+
+2010-02-11  Paolo Carlini  
+
+	* config/abi/pre/gnu.ver: Avoid exporting inadvertently
+	std::nested_exception symbols at GLIBCXX_3.4.
+
+2010-02-10  Jason Merrill  
+
+	Core issue 906
+	* include/std/thread (~_Impl_base): Move defaulted dtor out of line.
+	* libsupc++/nested_exception.h (~nested_exception): Likewise.
+	* testsuite/18_support/nested_exception/throw_with_nested.cc: Likewise.
+	* testsuite/18_support/nested_exception/rethrow_if_nested.cc: Likewise.
+
+2010-02-10  Paolo Carlini  
+
+	* include/tr1/hashtable.h: Fold in include/tr1_impl/hashtable.h
+	contents.
+	* include/tr1_impl/hashtable.h: Remove.
+	* include/tr1_impl/hashtable_policy.h: Move and rename...
+	* include/tr1/hashtable_policy.h: ... here.
+	* include/tr1_impl/unordered_map: Move and rename...
+	* include/tr1/unordered_map.h: ... here.
+	* include/tr1_impl/unordered_set: Move and rename...
+	* include/tr1/unordered_set.h: ... here.
+	* include/tr1_impl/unordered_map: Move and rename...
+	* include/tr1/unordered_map.h: ... here.
+	* include/tr1/unordered_map: Adjust.
+	* include/tr1/unordered_set: Likewise.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+
+	* include/std/c++0x_warning.h: Move...
+	* include/bits/c++0x_warning.h: ... here.
+	* include/debug/unordered_map: Adjust.
+	* include/debug/unordered_set: Likewise.
+	* include/std/tuple: Likewise.
+	* include/std/system_error: Likewise.
+	* include/std/forward_list: Likewise.
+	* include/std/thread: Likewise.
+	* include/std/type_traits: Likewise.
+	* include/std/future: Likewise.
+	* include/std/regex: Likewise.
+	* include/std/atomic: Likewise.
+	* include/std/ratio: Likewise.
+	* include/std/random: Likewise.
+	* include/std/unordered_map: Likewise.
+	* include/std/chrono: Likewise.: Likewise.
+	* include/std/condition_variable: Likewise.
+	* include/std/mutex: Likewise.
+	* include/std/unordered_set: Likewise.
+	* include/std/array: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* include/c_global/cinttypes: Likewise.
+	* include/c_global/ctgmath: Likewise.
+	* include/c_global/cfenv: Likewise.
+	* include/c_global/cstdint: Likewise.
+	* include/c_global/cstdbool: Likewise.
+	* include/c_global/ccomplex: Likewise.
+
+	* include/bits/shared_ptr.h: Do not include 
+	at all, the file is not meant to be included by the users.
+	* include/bits/functional_hash.h: Likewise.
+	* include/bits/unique_ptr.h: Likewise.
+	* include/bits/forward_list.h: Likewise.
+
+	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-*
+	line numbers.
+	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Likewise.
+	* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise.
+
+2010-02-10  Paolo Carlini  
+
+	* include/bits/hashtable.h: Fold in include/tr1_impl/hashtable.h
+	for C++0x use.
+	* include/bits/hashtable_policy.h: New, copy and adjust for
+	C++0x use, include/tr1_impl/hashtable_policy.h; fix erase and
+	insert member functions per n3000.
+	* include/bits/unordered_map.h: Likewise for include/tr1_impl/
+	unordered_map.
+	* include/bits/unordered_set.h: Likewise for include/tr1_impl/
+	unordered_set.
+	* include/Makefile.am: Adjust.
+	* include/Makefile.in: Regenerate.
+	* include/tr1/unordered_map: Adjust.
+	* include/tr1/unordered_set: Likewise.
+	* include/tr1_impl/unordered_map: Adjust, now used only by tr1.
+	* include/tr1_impl/hashtable: Likewise.
+	* include/tr1_impl/hashtable_policy.h: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/std/unordered_map: Adjust and simplify includes.
+	* include/std/unordered_set: Likewise.
+	* include/debug/unordered_map: Adjuse erase and insert members.
+	* include/debug/unordered_set: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* testsuite/util/exception/safety.h: Fix for the updated erase and
+	insert member functions of the unordered_containers.
+	* testsuite/23_containers/unordered_map/erase/1.cc: New.
+	* testsuite/23_containers/unordered_map/erase/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_map/insert/map_single.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/insert/array_syntax.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_map/insert/24061-map.cc: Likewise.
+	* testsuite/23_containers/unordered_map/insert/map_range.cc: Likewise.
+	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/1.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/erase/
+	24061-multimap.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/insert/
+	24061-multimap.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/insert/
+	multimap_range.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/insert/
+	multimap_single.cc: Likewise.
+	* testsuite/23_containers/unordered_set/erase/1.cc: Likewise.
+	* testsuite/23_containers/unordered_set/erase/24061-set.cc: Likewise.
+	* testsuite/23_containers/unordered_set/insert/set_single.cc: Likewise.
+	* testsuite/23_containers/unordered_set/insert/24061-set.cc: Likewise.
+	* testsuite/23_containers/unordered_set/insert/set_range.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/erase/
+	24061-multiset.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/insert/
+	24061-multiset.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/insert/
+	multiset_range.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/insert/
+	multiset_single.cc: Likewise.
+
+	* testsuite/23_containers/set/operators/1_neg.cc: Tweak dg-errors
+	to avoid spurious fails in debug-mode.
+	* testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+
+2010-02-09  Benjamin Kosnik  
+
+	* include/std/streambuf: Adjust doxygen group markup.
+	* include/std/functional: Same.
+	* include/ext/vstring.h: Same.
+	* include/ext/pb_ds/assoc_container.hpp: Same.
+	* include/ext/stdio_filebuf.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/bits/localefwd.h: Same.
+	* include/bits/functional_hash.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/codecvt.h: Same.
+	* include/bits/locale_facets_nonio.h: Same.
+
+	* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2010-02-08  Benjamin Kosnik  
+
+	PR libstdc++/42460
+	* include/tr1_impl/regex: Fix quoting issues in doxygen markup.
+	* include/bits/random.h: Fix multi-line doxygen function markup.
+
+2010-02-08  Matthias Klose  
+
+	PR libstdc++/42460
+	* include/std/istream: Fix '\' quoting in doxygen markup.
+
+2010-02-08  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+	* include/bits/random.tcc (uniform_int_distribution<>::
+	operator()(_UniformRandomNumberGenerator&, const param_type&)):
+	Use make_unsigned instead of __add_unsigned and conditional
+	instead of __conditional_type.
+	* include/std/random: Do not include  and
+	.
+
+2010-02-07  Paolo Carlini  
+
+	PR libstdc++/16896
+	* include/bits/stl_list.h (_List_node_base::transfer): Rename
+	to _M_transfer.
+	(_List_node_base::reverse): Rename to _M_reverse.
+	(_List_node_base::hook): Rename to _M_hook.
+	(_List_node_base::unhook): Rename to _M_unhook; adjust callers.
+	* include/bits/list.tcc: Adjust callers.
+	* src/list.cc: Adjust.
+	* src/compatibility.cc: Likewise.
+	* src/compatibility-list.cc: New.
+	* src/compatibility-debug_list.cc: Likewise.
+	* src/compatibility-parallel_list.cc: Likewise.
+	* src/Makefile.am: Add.
+	* src/Makefile.in: Regenerate.
+	* config/abi/pre/gnu.ver: Export _M_* symbols.
+
+	* src/hash.cc: Rename to hash-aux.cc.
+	* src/compatibility-ldbl.cc: Adjust.
+	* src/compatibility-c++0x.cc: Likewise.
+	* src/hash_tr1.cc: Likewise.
+
+	* src/hashtable.cc: Rename to hashtable-aux.cc.
+	* src/hashtable_c++0x.cc: Adjust.
+	* src/hashtable_tr1.cc: Likewise.
+
+	* src/limits_c++0x.cc: Fold...
+	* src/limits.cc... here.
+
+2010-02-07  Paolo Carlini  
+
+	* include/bits/stl_pair.h (pair<>::pair(_U1&&, const _T2&),
+	pair<>::pair(const _T1&, _U2&&), pair<>::pair(_U1&&, _U2&&)):
+	Revert to std::is_convertible, basing on DR 811.
+
+2010-02-06  Paolo Carlini  
+
+	PR libstdc++/42989
+	* config/abi/pre/gnu.ver: Fix wstring move assignment operator typo.
+
+2010-02-06  Paolo Carlini  
+
+	PR libstdc++/27340
+	* include/bits/valarray_before.h: Uglify the structs wrapping
+	cmath functions differently, eg, _Cos instead of __cos.
+	* include/bits/valarray_after.h: Adjust.
+
+2010-02-05  Paolo Carlini  
+
+	* include/std/future (swap(packaged_task<>&, packaged_task<>&)): Fix
+	typo in last commit.
+
+2010-02-05  Paolo Carlini  
+
+	* include/std/future (swap(packaged_task<>&, packaged_task<>&),
+	swap(promise<>&, promise<>&)): Add; minor formatting fixes.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust
+	dg-error line number.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
+
+2010-02-05  Paolo Carlini  
+
+	* include/bits/stl_algobase.h (struct __iter_base): Rename to
+	_Iter_base; add iterator_type typedef.
+	(struct __miter_base): Rename to _Miter_base.
+	(struct __niter_base): Rename to _Niter_base.
+	(__miter_base, __niter_base): Add, use the latter; adjust everywhere.
+
+2010-02-04  Benjamin Kosnik  
+
+	PR libstdc++/42460
+	* doc/doxygen/user.cfg.in: Update file list.
+	* include/debug/safe_sequence.h: Doxygen markup fixes for '' and "".
+	* include/debug/safe_base.h: Same.
+	* include/debug/macros.h: Same.
+	* include/tr1_impl/regex: Same.
+	* include/std/iostream: Same.
+	* include/std/streambuf: Same.
+	* include/std/bitset: Same.
+	* include/std/iosfwd: Same.
+	* include/std/limits: Same.
+	* include/std/fstream: Same.
+	* include/std/istream: Same.
+	* include/std/ostream: Same.
+	* include/std/sstream: Same.
+	* include/parallel/multiway_merge.h: Same.
+	* include/parallel/for_each.h: Same.
+	* include/parallel/workstealing.h: Same.
+	* include/parallel/omp_loop_static.h: Same.
+	* include/parallel/omp_loop.h: Same.
+	* include/c_std/csignal: Same.
+	* include/c_std/cstdlib: Same.
+	* include/c_std/cstdio: Same.
+	* include/c_std/cstdarg: Same.
+	* include/c_std/cctype: Same.
+	* include/c_std/cerrno: Same.
+	* include/c_std/cmath: Same.
+	* include/c_std/ciso646: Same.
+	* include/c_std/ctime: Same.
+	* include/c_std/clocale: Same.
+	* include/c_std/climits: Same.
+	* include/c_std/cassert: Same.
+	* include/c_std/csetjmp: Same.
+	* include/c_std/cwchar: Same.
+	* include/c_std/cfloat: Same.
+	* include/c_std/cstring: Same.
+	* include/c_std/cstddef: Same.
+	* include/c_std/cwctype: Same.
+	* include/profile/iterator_tracker.h: Same.
+	* include/profile/impl/profiler_trace.h: Same.
+	* include/ext/vstring.h: Same.
+	* include/ext/algorithm: Same.
+	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.h.pp: Same.
+	* include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.h.pp: Same.
+	* include/ext/pb_ds/detail/type_utils.hpp: Same.
+	* include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same
+	* include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+	* include/ext/rc_string_base.h: Same.
+	* include/ext/stdio_sync_filebuf.h: Same.
+	* include/ext/functional: Same.
+	* include/ext/mt_allocator.h: Same.
+	* include/bits/basic_ios.h: Same.
+	* include/bits/stl_map.h: Same.
+	* include/bits/stl_algobase.h: Same.
+	* include/bits/stl_queue.h: Same.
+	* include/bits/locale_classes.h: Same.
+	* include/bits/stl_set.h: Same.
+	* include/bits/locale_facets.h: Same.
+	* include/bits/stl_stack.h: Same.
+	* include/bits/stl_iterator_base_types.h: Same.
+	* include/bits/basic_string.h: Same.
+	* include/bits/stl_multimap.h: Same.
+	* include/bits/ios_base.h: Same.
+	* include/bits/stl_deque.h: Same.
+	* include/bits/stl_multiset.h: Same.
+	* include/bits/stl_iterator_base_funcs.h: Same.
+	* include/bits/char_traits.h: Same.
+	* include/bits/stl_algo.h: Same.
+	* include/bits/stl_iterator.h: Same.
+	* include/bits/stl_tempbuf.h: Same.
+	* include/bits/random.tcc: Same.
+	* include/bits/stl_function.h: Same.
+	* include/bits/cpp_type_traits.h: Same.
+	* include/bits/random.h: Same.
+	* include/bits/allocator.h: Same.
+	* include/bits/locale_facets_nonio.h: Same.
+	* include/c_global/csignal: Same.
+	* include/c_global/cstdlib: Same.
+	* include/c_global/cstdio: Same.
+	* include/c_global/cstdarg: Same.
+	* include/c_global/cctype: Same.
+	* include/c_global/cerrno: Same.
+	* include/c_global/cmath: Same.
+	* include/c_global/ciso646: Same.
+	* include/c_global/ctime: Same.
+	* include/c_global/clocale: Same.
+	* include/c_global/climits: Same.
+	* include/c_global/cassert: Same.
+	* include/c_global/csetjmp: Same.
+	* include/c_global/cwchar: Same.
+	* include/c_global/cfloat: Same.
+	* include/c_global/cstring: Same.
+	* include/c_global/cstddef: Same.
+	* include/c_global/cwctype: Same.
+	* include/tr1/hypergeometric.tcc: Same.
+	* include/tr1/random.tcc: Same.
+	* include/tr1/functional: Same.
+	* include/tr1/random.h: Same.
+	* include/backward/auto_ptr.h: Same.
+	* include/backward/binders.h: Same.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust line numbers.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
+	Same.
+	* testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
+	Same.
+
+2010-02-03  Jonathan Wakely  
+
+	* include/std/condition_variable (condition_variable_any): Provide
+	definitions for all members.
+	* src/condition_variable.cc (condition_variable_any): Adjust
+	definitions.
+	* config/abi/pre/gnu.ver: Adjust exports for condition_variable_any.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/members/1.cc: New.
+	* testsuite/30_threads/condition_variable_any/members/2.cc: New.
+	* testsuite/30_threads/condition_variable_any/requirements/
+	standard_layout.cc: Remove.
+	* testsuite/30_threads/condition_variable_any/native_handle/
+	typesizes.cc: Remove.
+
+2010-02-02  Paolo Carlini  
+
+	* include/ext/vstring.h (__versa_string::shrink_to_fit): Fix
+	for -fno-exceptions.
+
+2010-02-02  Benjamin Kosnik  
+
+	* include/bits/allocator.h: Fix for -fno-exceptions.
+	* include/bits/basic_string.h (basic_string::shrink_to_fit): Same.
+
+2010-02-02  Paolo Carlini  
+
+	* testsuite/30_threads/unique_future: Rename to /future.
+
+2010-02-01  Paolo Carlini  
+
+	PR libstdc++/42408
+	* include/bits/random.h (linear_congruential_engine<>::
+	linear_congruential_engine(seed_seq&),
+	linear_congruential_engine<>::seed(seed_seq&),
+	mersenne_twister<>::mersenne_twister(seed_seq&),
+	mersenne_twister<>::seed(seed_seq&),
+	subtract_with_carry_engine<>::subtract_with_carry_engine(seed_seq&),
+	subtract_with_carry_engine<>::seed(seed_seq&),
+	discard_block_engine<>::discard_block_engine(seed_seq&),
+	discard_block_engine<>::seed(seed_seq&),
+	independent_bits_engine<>::independent_bits_engine(seed_seq&),
+	independent_bits_engine<>::seed(seed_seq&),
+	shuffle_order_engine<>::shuffle_order_engine(seed_seq&),
+	shuffle_order_engine<>::seed(seed_seq&)): Templatize.
+	* include/bits/random.tcc: Adjust.
+	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+	seed_seq.cc: New.
+	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
+	seed_seq.cc: Likewise.
+	* testsuite/26_numerics/random/linear_congruential_engine/
+	cons/seed_seq.cc: Likewise.
+
+2010-02-01  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::resize(size_type),
+	forward_list(size_type)): Only declare.
+	* include/bits/forward_list.tcc (forward_list<>::resize(size_type),
+	forward_list(size_type)): Define, don't assume CopyConstructible.
+	* testsuite/23_containers/forward_list/cons/10.cc: New.
+	* testsuite/23_containers/forward_list/modifiers/6.cc: Likewis.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+	* include/bits/forward_list.h: Use _M_get_Node_allocator throughout.
+
+2010-01-31  Paolo Carlini  
+
+	* testsuite/23_containers/array/requirements/exception/
+	generation_prohibited.c: Remove, swap can indeed throw (DR 774).
+
+	* testsuite/util/exception/safety.h (insert_base<__versa_string>): Fix.
+	* testsuite/util/testsuite_container_traits.h
+	(traits<__versa_string>): Enable insert tests.
+
+2010-01-31  Paolo Carlini  
+
+	* include/bits/forward_list.h (forward_list<>::insert_after
+	(const_iterator, size_type, const _Tp&), insert_after(const_iterator,
+	_InputIterator, _InputIterator), insert_after(const_iterator,
+	std::initializer_list<>)): Fix return type per N3000.
+	* testsuite/23_containers/forward_list/ext_pointer/modifiers/2.cc:
+	Adjust.
+	* testsuite/23_containers/forward_list/modifiers/2.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Adjust dg-error line numbers.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-01-31  Paolo Carlini  
+
+	Revert last changes. Also revert, among the previous changes:
+	* include/std/condition_variable (condition_variable_any::
+	wait<>(_Lock&)): Provide definition.
+
+2010-01-29  Paolo Carlini  
+
+	* include/std/condition_variable (condition_variable_any::
+	__wait_until_impl): Add.
+	(condition_variable_any::wait_until): Provide definitions.
+	* testsuite/30_threads/condition_variable_any/members/2.cc: New.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+
+	* testsuite/30_threads/condition_variable/members/1.cc: Minor
+	stylistic changes.
+	* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
+
+2010-01-29  Paolo Carlini  
+
+	* include/std/condition_variable (enum class cv_status): Add and
+	use it throughout, per N3000.
+	(condition_variable_any::wait<>(_Lock&), wait<>(_Lock&, _Predicate),
+	wait_until<>(_Lock&, const chrono::time_point<>&, _Predicate)):
+	Provide definitions.
+	* src/condition_variable.cc (condition_variable_any::notify_one,
+	condition_variable_any::notify_all): Likewise.
+	* config/abi/pre/gnu.ver: Export.
+	* testsuite/30_threads/condition_variable_any/requirements/
+	typedefs.cc: New.
+	* testsuite/30_threads/condition_variable_any/requirements/
+	standard_layout.cc: Likewise.
+	* testsuite/30_threads/condition_variable/members/1.cc: Adjust.
+	* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
+	* testsuite/30_threads/condition_variable/cons/assign_neg.cc: Adjust
+	dg-error line numbers.
+	* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
+	Likewise.
+	* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
+	Likewise.
+
+2010-01-28  François Dumont  
+
+	* include/bits/stl_algobase.h (struct __iter_base): Add.
+	(__niter_base, __miter_base): Adjust, use the latter.
+
+2010-01-28  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/element_access/char/21674.cc:
+	Extend xfail to all systems.
+	* testsuite/21_strings/basic_string/element_access/wchar_T/21674.cc:
+	Likewise.
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Extend xfail to darwin10 systems.
+
+2010-01-27  Benjamin Kosnik  
+
+	PR c++/42346
+	* testsuite/23_containers/unordered_map/requirements/exception/: Remove
+	-O1 workaround.
+	* testsuite/23_containers/multimap/requirements/exception/: Same.
+	* testsuite/23_containers/map/requirements/exception: Same.
+
+2010-01-27  Richard Guenther  
+
+	PR libstdc++/42832
+	* include/std/functional (function<>::swap): Perform bytewise
+	swap of _M_functor.
+	* include/tr1/functional (function<>::swap): Likewise.
+
+2010-01-27  Andreas Krebbel  
+
+	* config/abi/pre/gnu.ver: Avoid time_get pattern conflicts.
+
+2010-01-26  François Dumont  
+
+	* doc/xml/manual/allocator.xml: Minor updates and fixes.
+	* doc/xml/manual/containers.xml: Likewise.
+	* doc/xml/manual/using.xml: Likewise.
+	* doc/xml/manual/locale.xml: Likewise.
+	* doc/xml/manual/appendix_contributing.xml: Likewise.
+
+2010-01-26  Daniel Frey  
+
+	* include/std/functional: Use enable_if instead of __enable_if
+	throughout, do not include ext/type_traits.h.
+	(is_placeholder, is_bind_expression): Use integral_constant.
+
+2010-01-25  Paolo Carlini  
+
+	* testsuite/util/testsuite_common_types.h (has_bitwise_operators):
+	Avoid -Wall warnings.
+
+2010-01-25  Paolo Carlini  
+
+	* testsuite/22_locale/time_get/get_monthname/char/6.cc: Use an int
+	as loop variable, to avoid -Wall warnings.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/6.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
+
+	* testsuite/20_util/reference_wrapper/24803.cc: Remove unused vars.
+	* testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
+
+2010-01-22  Daniel Frey  
+
+	* include/std/functional (_Index_tuple, _Build_index_tuple):
+	Simplify and speed-up.
+
+2010-01-22  Joern Rennecke  
+
+	PR libstdc++/36101, PR libstdc++/42813
+	* acinclude.m4 (enable_parallel): Test ${TARGET_CONFIGDIRS} instead of
+	looking for omp.h.
+	* configure: Regenerate.
+
+2010-01-21  Jonathan Wakely  
+
+	PR libstdc++/42201
+	* include/std/future: Update to latest WP.
+	* src/functexcept.cc (__throw_future_error): Use make_error_code.
+	* testsuite/30_threads/async/any.cc: New.
+	* testsuite/30_threads/async/async.cc: New.
+	* testsuite/30_threads/async/sync.cc: New.
+	* testsuite/30_threads/packaged_task/cons/alloc.cc: New.
+	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Adjust.
+	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/get_future.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
+	* testsuite/30_threads/packaged_task/members/invoke.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/invoke2.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/invoke3.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/invoke4.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/reset.cc: Adjust.
+	* testsuite/30_threads/packaged_task/members/reset2.cc: Adjust.
+	* testsuite/30_threads/shared_future/cons/assign_neg.cc: Remove.
+	* testsuite/30_threads/shared_future/cons/default_neg.cc: Remove.
+	* testsuite/30_threads/shared_future/cons/default.cc: New.
+	* testsuite/30_threads/shared_future/cons/assign.cc: New.
+	* testsuite/30_threads/shared_future/cons/copy.cc: Adjust.
+	* testsuite/30_threads/shared_future/cons/move.cc: Adjust.
+	* testsuite/30_threads/shared_future/cons/move_assign.cc: New.
+	* testsuite/30_threads/shared_future/members/is_ready.cc: Remove.
+	* testsuite/30_threads/shared_future/members/has_value.cc: Remove.
+	* testsuite/30_threads/shared_future/members/has_exception.cc: Remove.
+	* testsuite/30_threads/shared_future/members/valid.cc: New.
+	* testsuite/30_threads/unique_future/cons/default_neg.cc: Remove.
+	* testsuite/30_threads/unique_future/cons/default.cc: New.
+	* testsuite/30_threads/unique_future/cons/move_assign.cc: New.
+	* testsuite/30_threads/unique_future/cons/assign_neg.cc: Adjust.
+	* testsuite/30_threads/unique_future/cons/copy_neg.cc: Adjust.
+	* testsuite/30_threads/unique_future/cons/move.cc: Adjust.
+	* testsuite/30_threads/unique_future/requirements/
+	explicit_instantiation.cc: Adjust.
+	* testsuite/30_threads/unique_future/members/is_ready.cc: Remove.
+	* testsuite/30_threads/unique_future/members/has_value.cc: Remove.
+	* testsuite/30_threads/unique_future/members/has_exception.cc: Remove.
+	* testsuite/30_threads/unique_future/members/valid.cc: New.
+	* testsuite/30_threads/unique_future/members/get.cc: Adjust.
+	* testsuite/30_threads/unique_future/members/get2.cc: Adjust.
+	* testsuite/30_threads/unique_future/members/wait.cc: Adjust.
+	* testsuite/30_threads/unique_future/members/wait_for.cc: Adjust.
+	* testsuite/30_threads/unique_future/members/wait_until.cc: Adjust.
+	* testsuite/30_threads/headers/future/types_std_c++0x.cc: Adjust.
+	* testsuite/30_threads/promise/cons/alloc.cc: New.
+	* testsuite/30_threads/promise/cons/assign_neg.cc: Adjust.
+	* testsuite/30_threads/promise/cons/copy_neg.cc: Adjust.
+	* testsuite/30_threads/promise/cons/move.cc: Adjust.
+	* testsuite/30_threads/promise/cons/move_assign.cc: Adjust.
+	* testsuite/30_threads/promise/members/get_future.cc: Adjust.
+	* testsuite/30_threads/promise/members/set_value.cc: Adjust.
+	* testsuite/30_threads/promise/members/set_exception.cc: Adjust.
+	* testsuite/30_threads/promise/members/set_exception2.cc: Adjust.
+	* testsuite/30_threads/promise/members/set_value2.cc: Adjust.
+	* testsuite/30_threads/promise/members/set_value3.cc: Adjust.
+	* testsuite/30_threads/promise/members/swap.cc: Adjust.
+
+2010-01-20  Janis Johnson  
+	    Paolo Carlini  
+
+	PR libstdc++/21769
+	* testsuite/lib/dg-options.exp (add_options_for_no_pch): Add.
+	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc:
+	Use it.
+
+2010-01-19  Johannes Singler  
+
+	PR libstdc++/42712
+	* include/parallel/settings.h (_Settings): Add search_minimal_n.
+	* include/parallel/algo.h (__search_switch):
+	Add serial fallback for too small inputs.
+	(__search_n_switch): Likewise.  Call serial fallback on higher level
+	to gain special treatment for __count 0 or 1.
+	* testsuite/25_algorithms/search_n/iterator.cc:
+	Reenable full test depth for parallel mode.
+
+2010-01-18  Daniel Frey  
+
+	* include/std/functional (_Bind<_Functor(_Bound_args...)>::
+	operator()): "Pass" _Result to __call*.
+	(_Bind<_Functor(_Bound_args...)>::__call*): Adjust, simplify.
+
+2010-01-18  Johannes Singler  
+
+	* include/parallel/base.h (__unary_negate): Correct comment.
+
+2010-01-16  Paolo Carlini  
+
+	* include/std/functional (_Bind<_Functor(_Bound_args...)>::__call):
+	Rename const version to __call_c and remove _Sfinae template
+	parameter.
+	(_Bind<_Functor(_Bound_args...)>::operator()): Adjust.
+
+	* include/std/functional: Pass everywhere temporary tuple<_Args...>
+	arguments by rvalue reference.
+
+	* testsuite/20_util/bind/cv_quals.cc: New.
+
+	* testsuite/20_util/bind/ref2.cc: Add missing test variables.
+
+2010-01-16  Ralf Wildenhues  
+
+	PR libstdc++/35942
+	* configure.ac: Remove -lstdc++ from libtool's postdeps_CXX.
+	* configure: Regenerate.
+
+2010-01-15  Phil Muldoon  
+
+	* python/libstdcxx/v6/printers.py (StdStringPrinter.__init__):
+	Remove encoding argument.
+	(StdStringPrinter.to_string): Do not compute or pass encoding.
+	Use lazy_string over string function.
+
+2010-01-14  Paolo Carlini  
+
+	* include/c_std/cstring (memchr): Forward to the builtin.
+	* include/c_std/cstring: Remove redundant casts; use names consistent
+	with the letter of the Standard.
+	* include/c_global/cstring: Likewise.
+
+2010-01-13  Benjamin Kosnik  
+
+	* include/profile/iterator_tracker.h: Add copyright.
+
+2010-01-13  Paolo Carlini  
+
+	* testsuite/Makefile.am (check-debug): Add.
+	* testsuite/Makefile.in: Regenerate.
+	* config.h.in: Likewise.
+
+2010-01-12  Paolo Carlini  
+
+	* testsuite/17_intro/using_namespace_std_tr1_neg.cc: Do not run
+	in parallel-mode.
+	* testsuite/25_algorithms/inplace_merge/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/rotate/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/stable_partition/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/remove/moveable.c: Likewiwse.
+	* testsuite/25_algorithms/random_shuffle/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/nth_element/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/partial_sort/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/next_permutation/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/partition/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/stable_sort/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/stable_sort/moveable2.cc: Likewiwse.
+	* testsuite/25_algorithms/sort/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/prev_permutation/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/unique/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/remove_if/moveable.cc: Likewiwse.
+	* testsuite/25_algorithms/heap/moveable.cc: Likewiwse.
+
+	* testsuite/25_algorithms/search_n/iterator.cc: Reduce iteration #
+	in parallel-mode.
+
+2010-01-12  Hans-Peter Nilsson  
+
+	* testsuite/ext/profile/all.cc: Pass -D_GLIBCXX_PROFILE_NO_THREADS
+	for non-tls_native targets.
+
+2010-01-12  Benjamin Kosnik  
+
+	* scripts/run_doxygen: Correct nested scope on the man pages.
+	* doc/xml/faq.xml: Edits, linkcheck, doxygen link reassociate.
+	* doc/xml/manual/mt_allocator.xml: Same.
+	* doc/xml/manual/allocator.xml: Same.
+	* doc/xml/manual/codecvt.xml: Same.
+	* doc/xml/manual/backwards_compatibility.xml: Same.
+	* doc/xml/manual/concurrency.xml: Same.
+	* doc/xml/manual/parallel_mode.xml: Same.
+	* doc/xml/manual/io.xml: Same.
+	* doc/xml/manual/support.xml: Same.
+	* doc/xml/manual/evolution.xml: Same.
+	* doc/xml/manual/using.xml: Same.
+	* doc/xml/manual/extensions.xml: Same.
+	* doc/xml/manual/appendix_contributing.xml: Same.
+	* doc/xml/manual/prerequisites.xml: Same.
+	* doc/xml/manual/diagnostics.xml: Same.
+	* doc/xml/manual/spine.xml: Same.
+	* doc/xml/manual/status_cxx200x.xml: Same.
+	* doc/xml/manual/test.xml: Same.
+	* doc/xml/spine.xml: Same.
+	* doc/html/*: Regenerate.
+
+	* include/profile/impl/profiler.h: Remove duplicate markup.
+
+2010-01-12  Jonathan Wakely  
+
+	PR libstdc++/24803
+	PR libstdc++/35569
+	PR libstdc++/42593
+	* include/std/functional (bind): Forward rvalues and detect correct
+	result type of bound function object.
+	* include/std/mutex (call_once): Specify bind result type.
+	* testsuite/20_util/reference_wrapper/invoke.cc: Remove invalid tests.
+	* testsuite/20_util/reference_wrapper/24803.cc: Remove invalid tests
+	and enable FIXME tests.
+	* testsuite/20_util/bind/35569.cc: New.
+	* testsuite/20_util/bind/ref2.cc: New.
+	* testsuite/20_util/bind/38889.cc: New.
+	* testsuite/20_util/bind/ref_neg.cc: New.
+	* testsuite/20_util/bind/42593.cc: New.
+
+2010-01-11  Paolo Carlini  
+
+	* include/parallel/base.h (decode2): Rename to __decode2.
+	(binder2nd): Likewise to __binder2nd.
+	* include/parallel/quicksort.h: Adjust callers.
+	* include/parallel/balanced_quicksort.h: Likewise.
+	* include/parallel/partition.h: Likewise.
+	* include/parallel/queue.h: Likewise.
+
+	* include/parallel/algo.h: Qualify with std:: binder2nd use.
+
+2010-01-10  Paolo Carlini  
+
+	* include/debug/string (basic_string<>::basic_string(basic_string&&),
+	operator=(basic_string&&), assign(basic_string&&)): Add.
+
+	* include/debug/string: Fully qualify initializer_list with std; fix
+	_Allocator misspellings as _Alloc.
+
+2010-01-10  Paolo Carlini  
+
+	* include/bits/basic_string.h (basic_string<>::
+	basic_string(basic_string&&), operator=(basic_string&&),
+	assign(basic_string&&)): Add.
+	* config/abi/pre/gnu.ver: Export new symbols.
+	* include/ext/vstring.h (__versa_string<>::assign(__versa_string&&)):
+	Add.
+	(operator=(__versa_string&&)): Don't call clear unnecessarily.
+	* include/ext/rc_string_base.h (__rc_string_base<>::
+	__rc_string_base(__rc_string_base&&)): Simplify a tad.
+	* testsuite/21_strings/basic_string/cons/char/moveable.cc: New.
+	* testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc: Likewise.
+	* testsuite/ext/vstring/assign/move_assign.cc: Likewise.
+	* testsuite/21_strings/basic_string/assign/char/move_assign.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/assign/wchar_t/move_assign.cc:
+	Likewise.
+
+	* testsuite/ext/vstring/cons/moveable.cc: Fix comment nit.
+
+2010-01-10  Silvius Rus  
+
+	* configure.ac: Add detection of execinfo.h.
+	* configure: Regenerate.
+	* config.h.in: Likewise.
+	* doc/xml/manual/profile_mode.xml: Add list_to_slist manual.
+	Also, correct user interface mistakes.
+	* include/Makefile.am: Add references to new include files.
+	* include/Makefile.in: Regenerate.
+	* include/backward/hash_map: Remove profile include.
+	* include/backward/hash_set: Likewise.
+	* include/profile/hashtable.h: Delete file.
+	* include/profile/iterator_tracker.h: New file.
+	* include/profile/vector: Add instrumentation for tracked iterator.
+	* include/profile/list: Same.
+	* include/profile/impl/profiler_list_to_slist.h: New file.
+	* include/profile/impl/profiler_list_to_vector.h: Same.
+	* include/profile/impl/profiler.h: Add list_to_slist and
+	list_to_vector instrumentation hook interfaces.  Fixed broken
+	diagnostic disabling mechanism.
+	(_GLIBCXX_PROFILE_DEFINE_DATA,_GLIBCXX_PROFILE_DATA) New macros.
+	(__reentrance_guard) Fix bug.
+	* include/profile/impl/profiler_trace.h: Replace dummy templates
+	with _GLIBCXX_PROFILE_DEFINE_DATA.
+	* include/profile/impl/profiler_container_size.h: Same.
+	* include/profile/impl/profiler_vector_size.h: Same.
+	* include/profile/impl/profiler_hash_func.h: Same.
+	* include/profile/impl/profiler_vector_to_list.h: Same.
+	* include/profile/impl/profiler_map_to_unordered_map.h: Same.
+	* include/profile/impl/profiler_hashtable_size.h: Same.
+	* include/profile/impl/profiler_node.h: Same.
+	* include/profile/impl/profiler_state.h: Same.  Also, remove
+	class __state. Also, use __sync_val_compare_and_swap to set state.
+
+2010-01-09  H.J. Lu  
+
+	PR other/42230
+	* testsuite/abi/pr42230.cc: New.
+
+2010-01-09  Paolo Carlini  
+
+	* include/debug/set.h: Revert last change, per DR 1204 [Ready];
+	mention the latter in comment.
+	* include/debug/unordered_map: Likewise.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/vector: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/tr1_impl/unordered_map: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/profile/set.h: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* include/profile/vector: Likewise.
+	* include/profile/deque: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/list: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+
+	* include/bits/forward_list.h: Remove pre-existing check.
+	* include/ext/vstring.h: Likewise.
+
+	* testsuite/ext/vstring/cons/self_move_assign.cc: Remove.
+	* testsuite/23_containers/unordered_map/cons/self_move_assign.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/set/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/cons/
+	self_move_assign.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/self_move_assign.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/cons/self_move_assign.cc:
+	Likewise.
+ 	* testsuite/23_containers/vector/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/deque/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/multiset/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/list/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/cons/
+	self_move_assign.cc: Likewise.
+	* testsuite/23_containers/map/cons/self_move_assign.cc: Likewise.
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+ 	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+ 	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	assign_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	insert_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/forward_list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-01-08  Paolo Carlini  
+
+	* include/debug/set.h: Protect move assignment operator vs self
+	assignment.
+	* include/debug/unordered_map: Likewise.
+ 	* include/debug/multiset.h: Likewise.
+ 	* include/debug/vector: Likewise.
+	* include/debug/unordered_set: Likewise.
+	* include/debug/deque: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/list: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/tr1_impl/unordered_map: Likewise.
+	* include/tr1_impl/unordered_set: Likewise.
+	* include/profile/set.h: Likewise.
+	* include/profile/unordered_map: Likewise.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/unordered_set: Likewise.
+	* include/profile/vector: Likewise.
+	* include/profile/deque: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/list: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* include/ext/vstring.h: Likewise.
+	* include/bits/stl_list.h: Likewise.
+	* include/bits/stl_map.h: Likewise.
+	* include/bits/stl_set.h: Likewise.
+	* include/bits/stl_multimap.h: Likewise.
+	* include/bits/stl_vector.h: Likewise.
+	* include/bits/stl_deque.h: Likewise.
+	* include/bits/stl_multiset.h: Likewise.
+	* include/ext/vstring.h: Use clear().
+	* testsuite/ext/vstring/cons/self_move_assign.cc: New.
+	* testsuite/23_containers/unordered_map/cons/self_move_assign.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/set/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/unordered_multimap/cons/
+	self_move_assign.cc: Likewise.
+	* testsuite/23_containers/forward_list/cons/self_move_assign.cc:
+	Likewise.
+	* testsuite/23_containers/unordered_set/cons/self_move_assign.cc:
+	Likewise.
+ 	* testsuite/23_containers/vector/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/deque/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/multiset/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/list/cons/self_move_assign.cc: Likewise.
+	* testsuite/23_containers/unordered_multiset/cons/
+	self_move_assign.cc: Likewise.
+	* testsuite/23_containers/map/cons/self_move_assign.cc: Likewise.
+
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line numbers.
+ 	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+ 	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/list/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+	* testsuite/ext/vstring/moveable.cc: Move to...
+	* testsuite/ext/vstring/cons/moveable.cc: ... here.
+	* testsuite/23_containers/unordered_map/moveable.cc: Move to...
+	* testsuite/23_containers/unordered_map/cons/moveable.cc ... here.
+	* testsuite/23_containers/multimap/moveable.cc: Move to...
+	* testsuite/23_containers/multimap/cons/moveable.cc: ... here.
+	* testsuite/23_containers/set/moveable.cc: Move to...
+	* testsuite/23_containers/set/cons/moveable.cc: ... here.
+	* testsuite/23_containers/unordered_multimap/moveable.cc: Move to...
+	* testsuite/23_containers/unordered_multimap/cons/moveable.cc:
+	... here.
+	* testsuite/23_containers/forward_list/moveable.cc: Move to...
+	* testsuite/23_containers/forward_list/cons/moveable.cc: ... here.
+	* testsuite/23_containers/unordered_set/moveable.cc Move to...
+	* testsuite/23_containers/unordered_set/moveable.cc: ... here.
+	* testsuite/23_containers/vector/cons/moveable.cc Move to...
+	* testsuite/23_containers/vector/cons/moveable2.cc: ... this.
+	* testsuite/23_containers/deque/cons/moveable.cc Move to...
+	* testsuite/23_containers/deque/cons/moveable2.cc: ... this.
+	* testsuite/23_containers/multiset/moveable.cc Move to...
+	* testsuite/23_containers/multiset/cons/moveable.cc: ... here.
+	* testsuite/23_containers/list/moveable.h Move to...
+	* testsuite/23_containers/list/cons/moveable.h: ... here.
+	* testsuite/23_containers/list/moveable.cc Move to...
+	* testsuite/23_containers/list/cons/moveable.cc: ... here.
+	* testsuite/23_containers/unordered_multiset/moveable.cc Move to...
+	* testsuite/23_containers/unordered_multiset/cons/moveable.cc:
+	... here.
+	* testsuite/23_containers/map/moveable.cc Move to...
+	* testsuite/23_containers/map/cons/moveable.cc: ... here.
+	* testsuite/23_containers/vector/moveable.cc: Move to...
+	* testsuite/23_containers/vector/cons/moveable.cc: ... here.
+	* testsuite/23_containers/deque/moveable.cc: Move to...
+	* testsuite/23_containers/deque/cons/moveable.cc: ... here.
+
+2010-01-08  Paolo Carlini  
+
+	PR libstdc++/42573
+	* include/bits/allocator.h (struct __shrink_to_fit): Add.
+	* include/bits/stl_deque.h (deque<>::shrink_to_fit): Add.
+	* include/bits/stl_vector.h (vector<>::shrink_to_fit): Likewise.
+	* include/bits/stl_bvector.h (vector::shrink_to_fit): Likewise.
+	* include/bits/basic_string.h (basic_string<>::shrink_to_fit):
+	Likewise.
+	* include/ext/vstring.h (__versa_string<>::shrink_to_fit): Likewise.
+	* include/debug/deque: Add corresponding using declaration.
+	* include/debug/vector: Likewise.
+	* include/debug/string: Likewise.
+	* include/profile/deque: Likewise.
+	* include/profile/vector: Likewise.
+	* config/abi/pre/gnu.ver: Export new symbols.
+	* testsuite/23_containers/deque/capacity/shrink_to_fit.cc: New.
+	* testsuite/23_containers/vector/capacity/shrink_to_fit.cc: Likewise.
+	* testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc:
+	Likewise.
+	* testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc:
+	Likewise.
+	* testsuite/ext/vstring/capacity/shrink_to_fit.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/deque/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+	Adjust dg-error line number.
+	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+	Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_1_neg.cc: Likewise.
+	* testsuite/23_containers/vector/requirements/dr438/
+	constructor_2_neg.cc: Likewise.
+
+2010-01-07  Benjamin Kosnik  
+
+	* doc/xml/manual/evolution.xml: Fix typos, update.
+
+2010-01-07  Paolo Carlini  
+
+	* include/bits/locale_facets_nonio.tcc (time_put<>::do_put): Avoid
+	pointless __builtin_alloca use.
+
+2010-01-06  Paolo Carlini  
+
+	PR libstdc++/26701
+	* include/bits/locale_facets_nonio.tcc (time_get<>::_M_extract_num):
+	Encode short two digits over four parsings to negative numbers.
+	(time_get<>::_M_extract_via_format): Adjust, accept both two digits
+	and four digits for both 'y' and 'Y'.
+	(time_get<>::do_get_year): Call time_get<>::_M_extract_num.
+	* doc/xml/manual/prerequisites.xml: Add en_GB.
+	* testsuite/lib/libstdc++.exp: Adjust
+	* testsuite/22_locale/time_get/get_date/char/26701.cc: New.
+	* testsuite/22_locale/time_get/get_date/wchar_t/26701.cc: Likewise.
+
+2010-01-06  Benjamin Kosnik  
+
+	PR libstdc++/42491
+	* scripts/check_performance (CXX): Add -std=gnu++0x.
+	* testsuite/performance/30_threads/future/polling.cc: Mark up as
+	using threads.
+
+2010-01-06  Paolo Carlini  
+
+	* testsuite/22_locale/time_get/get_weekday/char/38081-2.cc:
+	Add dg-require-namedlocale.
+
+2010-01-05  Benjamin Kosnik  
+
+	* doc/xml/manual/evolution.xml: Update for 4.4 and 4.5 releases.
+	* doc/html: Regenerate.
+
+2010-01-05  Paolo Carlini  
+
+	PR libstdc++/38081
+	* include/bits/locale_facets_nonio.h (time_get<>::
+	_M_extract_wday_or_month): New, declare.
+	* include/bits/locale_facets_nonio.tcc (time_get<>::
+	_M_extract_wday_or_month): Define.
+	(time_get<>::do_get_weekday, time_get<>::do_get_monthname): Use it.
+	* config/abi/pre/gnu.ver: Export new symbols.
+	* doc/xml/manual/prerequisites.xml: Add ru_RU.UTF-8 and
+	ru_RU.ISO-8859-5.
+	* testsuite/lib/libstdc++.exp: Adjust.
+	* testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: New.
+	* testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
+
+2010-01-05  Rainer Orth  
+
+	* configure: Regenerate.
+
+2010-01-05  Paolo Carlini  
+
+	* testsuite/22_locale/time_get/get_monthname/char/6.cc: New.
+	* testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/char/6.cc: Likewise.
+	* testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc: Likewise.
+
+2010-01-03  Paolo Carlini  
+
+	* include/profile/list: Implement DR 1133 here too.
+
+	* testsuite/25_algorithms/set_intersection/34730.cc: Do not force
+	debug-mode, leads to spurious failures in profile-mode.
+	* testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
+	* testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
+	* testsuite/25_algorithms/set_difference/35541.cc: Likewise.
+	* testsuite/21_strings/basic_string/40160.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_real_distribution/
+	cons/parms_neg.cc: Likewise.
+	* testsuite/26_numerics/random/uniform_int_distribution/
+	cons/parms_neg.cc: Likewise.
+	* testsuite/23_containers/unordered_map/requirements/debug_mode.cc:
+	Likewise.
+	* testsuite/23_containers/multimap/14340.cc: Likewise.
+	* testsuite/23_containers/bitset/18604.cc: Likewise.
+	* testsuite/23_containers/set/14340.cc: Likewise.
+	* testsuite/23_containers/set/18604.cc: Likewise.
+	* testsuite/23_containers/unordered_set/requirements/
+	debug_mode.cc: Likewise.
+	* testsuite/23_containers/vector/
+	debug_mode_requires_reallocation-1.cc: Likewise.
+	* testsuite/23_containers/vector/
+	debug_mode_requires_reallocation-2.cc: Likewise.
+	* testsuite/23_containers/vector/14340.cc: Likewise.
+	* testsuite/23_containers/vector/15523.cc: Likewise.
+	* testsuite/23_containers/vector/18604.cc: Likewise.
+	* testsuite/23_containers/deque/14340.cc: Likewise.
+	* testsuite/23_containers/deque/18604.cc: Likewise.
+	* testsuite/23_containers/multiset/14340.cc: Likewise.
+	* testsuite/23_containers/list/operations/35969.cc: Likewise.
+	* testsuite/23_containers/list/14340.cc: Likewise.
+	* testsuite/23_containers/list/18604.cc: Likewise.
+	* testsuite/23_containers/map/14340.cc: Likewise.
+	* testsuite/23_containers/map/18604.cc: Likewise.
+	* testsuite/tr1/5_numerical_facilities/random/uniform_int/
+	cons/range_neg.cc: Likewise.
+
+	* testsuite/23_containers/unordered_map/requirements/
+	explicit_instantiation/2.cc: Do not instantiate for
+	non-defaultconstructible mapped_type.
+
+2010-01-03  Paolo Carlini  
+
+	* include/debug/set.h: Implement DR 130 here too.
+	* include/debug/multiset.h: Likewise.
+	* include/debug/map.h: Likewise.
+	* include/debug/multimap.h: Likewise.
+	* include/profile/set.h: Implement DR 130 fully.
+	* include/profile/multiset.h: Likewise.
+	* include/profile/map.h: Likewise.
+	* include/profile/multimap.h: Likewise.
+	* include/debug/list: Implement DR 1133 here too.
+	* include/ext/pb_ds/detail/debug_map_base.hpp: Comment out for
+	now uses of __gnu_cxx::throw_allocator.
+	* testsuite/21_strings/basic_string/40160.cc: Don't pass
+	explicitly -D_GLIBCXX_DEBUG, doesn't play well with profile-mode
+	testing.
+
+2010-01-03  Paolo Carlini  
+
+	* include/profile/bitset (bitset<>::bitset(unsigned long long)): Add
+	in C++0x mode.
+	* include/debug/bitset (bitset<>::bitset(unsigned long long)):
+	Likewise.
+
+2010-01-03  Paolo Carlini  
+
+	* include/tr1_impl/hashtable (_Hashtable<>): Remove insert_return_type
+	typedef.
+	* include/profile/unordered_map (unordered_map<>::insert(const
+	value_type&), unordered_multimap<>::insert(const value_type&)): Adjust.
+	* include/profile/unordered_set (unordered_set<>::insert(const
+	value_type&), unordered_multimap<>::insert(const value_type&)):
+	Likewise.
+
+2010-01-03  Paolo Carlini  
+
+	* include/bits/stl_pair.h (pair<>::pair(_U1&&, const _T2&),
+	pair<>::pair(const _T1&, _U2&&), pair<>::pair(_U1&&, _U2&&)):
+	Use std::is_constructible instead of std::is_convertible.
+
+2010-01-01  Paolo Carlini  
+
+	Revert last change, reinstantiate basic_string and vstring tests.
+
+2010-01-01  Paolo Carlini  
+
+	* testsuite/21_strings/basic_string/requirements/exception/
+	propagation_consistent.cc: Remove, cannot instantiate basic_string
+	for non-PODs (21/1).
+	* testsuite/21_strings/basic_string/requirements/exception/
+	basic.cc: Likewise.
+	* testsuite/21_strings/basic_string/requirements/exception/
+	generation_prohibited.cc: Likewise.
+	* testsuite/ext/vstring/requirements/exception/
+	propagation_consistent.cc: Likewise.
+	* testsuite/ext/vstring/requirements/exception/basic.cc:
+	Likewise.
+	* testsuite/ext/vstring/requirements/exception/
+	generation_prohibited.cc: Likewise.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.am
new file mode 100644
index 000000000..f1b5b0787
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.am
@@ -0,0 +1,177 @@
+## Makefile for the toplevel directory of the GNU C++ Standard library.
+##
+## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2008, 2009, 2010
+## Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## .
+
+include $(top_srcdir)/fragment.am
+
+if GLIBCXX_HOSTED
+  hosted_source = doc src po testsuite
+endif
+
+## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
+## Note that python must come after src.
+SUBDIRS = include libsupc++ $(hosted_source) python
+
+ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+
+# Testsuite/check forwarding targets.
+check-%:
+	cd testsuite && $(MAKE) $@
+
+# Documentation forwarding targets.
+doc-%:
+	cd doc && $(MAKE) $@
+
+# Documentation conditionals for output.
+if BUILD_XML
+STAMP_XML = doc-xml
+STAMP_INSTALL_XML = doc-install-xml
+else
+STAMP_XML =
+STAMP_INSTALL_XML =
+endif
+
+if BUILD_HTML
+STAMP_HTML = doc-html
+STAMP_INSTALL_HTML = doc-install-html
+else
+STAMP_HTML =
+STAMP_INSTALL_HTML =
+endif
+
+if BUILD_MAN
+STAMP_MAN = doc-man
+STAMP_INSTALL_MAN = doc-install-man
+else
+STAMP_MAN =
+STAMP_INSTALL_MAN =
+endif
+
+if BUILD_PDF
+STAMP_PDF = doc-pdf
+STAMP_INSTALL_PDF = doc-install-pdf
+else
+STAMP_PDF =
+STAMP_INSTALL_PDF =
+endif
+
+if BUILD_EPUB
+STAMP_EPUB = doc-epub
+STAMP_INSTALL_EPUB = doc-install-epub
+else
+STAMP_EPUB = doc-epub
+STAMP_INSTALL_EPUB = doc-install-epub
+endif
+
+# Documentation primary rules.
+#
+# xml:
+# html:
+# pdf:
+# man:
+# info:
+# ps:
+# dvi:
+# epub:
+# install-xml:
+# install-html:
+# install-pdf:
+# install-man:
+# install-info:
+# install-ps:
+# install-dvi:
+# install-epub:
+
+xml: $(STAMP_XML)
+install-xml: $(STAMP_INSTALL_XML)
+
+html: $(STAMP_HTML)
+install-html: $(STAMP_INSTALL_HTML)
+
+man: $(STAMP_MAN)
+install-man: $(STAMP_INSTALL_MAN)
+
+pdf: $(STAMP_PDF)
+install-pdf: $(STAMP_INSTALL_PDF)
+
+epub: $(STAMP_EPUB)
+install-epub: $(STAMP_INSTALL_EPUB)
+
+info:
+install-info:
+
+ps:
+install-ps:
+
+dvi:
+install-dvi:
+
+# Multilib support.
+MAKEOVERRIDES=
+
+# All the machinations with string instantiations messes up the
+# automake-generated TAGS rule. Make a simple one here.
+TAGS: tags-recursive $(LISP)
+
+# Work around what appears to be a GNU make bug handling MAKEFLAGS
+# values defined in terms of make variables, as is the case for CC and
+# friends when we are called from the top level Makefile.
+AM_MAKEFLAGS = \
+	"AR_FLAGS=$(AR_FLAGS)" \
+	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
+	"CFLAGS=$(CFLAGS)" \
+	"CXXFLAGS=$(CXXFLAGS)" \
+	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+	"INSTALL=$(INSTALL)" \
+	"INSTALL_DATA=$(INSTALL_DATA)" \
+	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+	"LDFLAGS=$(LDFLAGS)" \
+	"LIBCFLAGS=$(LIBCFLAGS)" \
+	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+	"MAKE=$(MAKE)" \
+	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+	"PICFLAG=$(PICFLAG)" \
+	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+	"SHELL=$(SHELL)" \
+	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+	"exec_prefix=$(exec_prefix)" \
+	"infodir=$(infodir)" \
+	"libdir=$(libdir)" \
+	"includedir=$(includedir)" \
+	"prefix=$(prefix)" \
+	"tooldir=$(tooldir)" \
+	"gxx_include_dir=$(gxx_include_dir)" \
+	"AR=$(AR)" \
+	"AS=$(AS)" \
+	"LD=$(LD)" \
+	"RANLIB=$(RANLIB)" \
+	"NM=$(NM)" \
+	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
+	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
+	"WERROR=$(WERROR)"
+
+# Subdir rules rely on $(FLAGS_TO_PASS)
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.in
new file mode 100644
index 000000000..af62df5a6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/Makefile.in
@@ -0,0 +1,717 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am README ChangeLog \
+	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/configure $(am__configure_deps) \
+	$(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \
+	$(top_srcdir)/scripts/testsuite_flags.in \
+	$(top_srcdir)/scripts/extract_symvers.in
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = scripts/testsuite_flags scripts/extract_symvers
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+MULTISRCTOP = 
+MULTIBUILDTOP = 
+MULTIDIRS = 
+MULTISUBDIR = 
+MULTIDO = true
+MULTICLEAN = true
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = include libsupc++ doc src po testsuite python
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+@GLIBCXX_HOSTED_TRUE@hosted_source = doc src po testsuite
+SUBDIRS = include libsupc++ $(hosted_source) python
+ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+@BUILD_XML_FALSE@STAMP_XML = 
+
+# Documentation conditionals for output.
+@BUILD_XML_TRUE@STAMP_XML = doc-xml
+@BUILD_XML_FALSE@STAMP_INSTALL_XML = 
+@BUILD_XML_TRUE@STAMP_INSTALL_XML = doc-install-xml
+@BUILD_HTML_FALSE@STAMP_HTML = 
+@BUILD_HTML_TRUE@STAMP_HTML = doc-html
+@BUILD_HTML_FALSE@STAMP_INSTALL_HTML = 
+@BUILD_HTML_TRUE@STAMP_INSTALL_HTML = doc-install-html
+@BUILD_MAN_FALSE@STAMP_MAN = 
+@BUILD_MAN_TRUE@STAMP_MAN = doc-man
+@BUILD_MAN_FALSE@STAMP_INSTALL_MAN = 
+@BUILD_MAN_TRUE@STAMP_INSTALL_MAN = doc-install-man
+@BUILD_PDF_FALSE@STAMP_PDF = 
+@BUILD_PDF_TRUE@STAMP_PDF = doc-pdf
+@BUILD_PDF_FALSE@STAMP_INSTALL_PDF = 
+@BUILD_PDF_TRUE@STAMP_INSTALL_PDF = doc-install-pdf
+@BUILD_EPUB_FALSE@STAMP_EPUB = doc-epub
+@BUILD_EPUB_TRUE@STAMP_EPUB = doc-epub
+@BUILD_EPUB_FALSE@STAMP_INSTALL_EPUB = doc-install-epub
+@BUILD_EPUB_TRUE@STAMP_INSTALL_EPUB = doc-install-epub
+
+# Multilib support.
+MAKEOVERRIDES = 
+
+# Work around what appears to be a GNU make bug handling MAKEFLAGS
+# values defined in terms of make variables, as is the case for CC and
+# friends when we are called from the top level Makefile.
+AM_MAKEFLAGS = \
+	"AR_FLAGS=$(AR_FLAGS)" \
+	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
+	"CFLAGS=$(CFLAGS)" \
+	"CXXFLAGS=$(CXXFLAGS)" \
+	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+	"INSTALL=$(INSTALL)" \
+	"INSTALL_DATA=$(INSTALL_DATA)" \
+	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+	"LDFLAGS=$(LDFLAGS)" \
+	"LIBCFLAGS=$(LIBCFLAGS)" \
+	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+	"MAKE=$(MAKE)" \
+	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+	"PICFLAG=$(PICFLAG)" \
+	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+	"SHELL=$(SHELL)" \
+	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+	"exec_prefix=$(exec_prefix)" \
+	"infodir=$(infodir)" \
+	"libdir=$(libdir)" \
+	"includedir=$(includedir)" \
+	"prefix=$(prefix)" \
+	"tooldir=$(tooldir)" \
+	"gxx_include_dir=$(gxx_include_dir)" \
+	"AR=$(AR)" \
+	"AS=$(AS)" \
+	"LD=$(LD)" \
+	"RANLIB=$(RANLIB)" \
+	"NM=$(NM)" \
+	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
+	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
+	"WERROR=$(WERROR)"
+
+
+# Subdir rules rely on $(FLAGS_TO_PASS)
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+scripts/testsuite_flags: $(top_builddir)/config.status $(top_srcdir)/scripts/testsuite_flags.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+scripts/extract_symvers: $(top_builddir)/config.status $(top_srcdir)/scripts/extract_symvers.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+
+# GNU Make needs to see an explicit $(MAKE) variable in the command it
+# runs to enable its job server during parallel builds.  Hence the
+# comments below.
+all-multi:
+	$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+install-multi:
+	$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
+
+mostlyclean-multi:
+	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
+clean-multi:
+	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
+distclean-multi:
+	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
+maintainer-clean-multi:
+	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-am: all-am
+check: check-recursive
+all-am: Makefile all-multi config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-multi clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-multi distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags
+
+dvi-am:
+
+html-am:
+
+info-am:
+
+install-data-am:
+
+install-dvi-am:
+
+install-exec-am: install-multi
+
+install-html-am:
+
+install-info-am:
+
+install-pdf-am:
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-multi maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-multi mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf-am:
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all all-multi \
+	clean-multi ctags-recursive distclean-multi install-am \
+	install-multi install-strip maintainer-clean-multi \
+	mostlyclean-multi tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am all-multi am--refresh check check-am clean \
+	clean-generic clean-libtool clean-multi ctags ctags-recursive \
+	distclean distclean-generic distclean-hdr distclean-libtool \
+	distclean-multi distclean-tags dvi dvi-am html html-am info \
+	info-am install install-am install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-multi install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-multi mostlyclean \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Testsuite/check forwarding targets.
+check-%:
+	cd testsuite && $(MAKE) $@
+
+# Documentation forwarding targets.
+doc-%:
+	cd doc && $(MAKE) $@
+
+# Documentation primary rules.
+#
+# xml:
+# html:
+# pdf:
+# man:
+# info:
+# ps:
+# dvi:
+# epub:
+# install-xml:
+# install-html:
+# install-pdf:
+# install-man:
+# install-info:
+# install-ps:
+# install-dvi:
+# install-epub:
+
+xml: $(STAMP_XML)
+install-xml: $(STAMP_INSTALL_XML)
+
+html: $(STAMP_HTML)
+install-html: $(STAMP_INSTALL_HTML)
+
+man: $(STAMP_MAN)
+install-man: $(STAMP_INSTALL_MAN)
+
+pdf: $(STAMP_PDF)
+install-pdf: $(STAMP_INSTALL_PDF)
+
+epub: $(STAMP_EPUB)
+install-epub: $(STAMP_INSTALL_EPUB)
+
+info:
+install-info:
+
+ps:
+install-ps:
+
+dvi:
+install-dvi:
+
+# All the machinations with string instantiations messes up the
+# automake-generated TAGS rule. Make a simple one here.
+TAGS: tags-recursive $(LISP)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/README b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/README
new file mode 100644
index 000000000..2651ec481
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/README
@@ -0,0 +1,6 @@
+file: libstdc++-v3/README
+
+New users may wish to point their web browsers to the file
+index.html in the 'doc/html' subdirectory.  It contains brief
+building instructions and notes on how to configure the library in
+interesting ways.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/acinclude.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/acinclude.m4
new file mode 100644
index 000000000..ed8b129c2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/acinclude.m4
@@ -0,0 +1,3209 @@
+dnl
+dnl GLIBCXX_CONDITIONAL (NAME, SHELL-TEST)
+dnl
+dnl Exactly like AM_CONDITIONAL, but delays evaluation of the test until the
+dnl end of configure.  This lets tested variables be reassigned, and the
+dnl conditional will depend on the final state of the variable.  For a simple
+dnl example of why this is needed, see GLIBCXX_ENABLE_HOSTED.
+dnl
+m4_define([_m4_divert(glibcxx_diversion)], 8000)dnl
+AC_DEFUN([GLIBCXX_CONDITIONAL], [dnl
+  m4_divert_text([glibcxx_diversion],dnl
+   AM_CONDITIONAL([$1],[$2])
+  )dnl
+])dnl
+AC_DEFUN([GLIBCXX_EVALUATE_CONDITIONALS], [m4_undivert([glibcxx_diversion])])dnl
+
+
+dnl
+dnl Check to see what architecture and operating system we are compiling
+dnl for.  Also, if architecture- or OS-specific flags are required for
+dnl compilation, pick them up here.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_HOST], [
+  . $glibcxx_srcdir/configure.host
+  AC_MSG_NOTICE([CPU config directory is $cpu_include_dir])
+  AC_MSG_NOTICE([OS config directory is $os_include_dir])
+])
+
+dnl
+dnl Initialize the rest of the library configury.  At this point we have
+dnl variables like $host.
+dnl
+dnl Sets:
+dnl  SUBDIRS
+dnl Substs:
+dnl  glibcxx_builddir     (absolute path)
+dnl  glibcxx_srcdir       (absolute path)
+dnl  toplevel_srcdir      (absolute path)
+dnl  with_cross_host
+dnl  with_newlib
+dnl  with_target_subdir
+dnl plus
+dnl  - the variables in GLIBCXX_CHECK_HOST / configure.host
+dnl  - default settings for all AM_CONFITIONAL test variables
+dnl  - lots of tools, like CC and CXX
+dnl
+AC_DEFUN([GLIBCXX_CONFIGURE], [
+  # Keep these sync'd with the list in Makefile.am.  The first provides an
+  # expandable list at autoconf time; the second provides an expandable list
+  # (i.e., shell variable) at configure time.
+  m4_define([glibcxx_SUBDIRS],[include libsupc++ python src doc po testsuite])
+  SUBDIRS='glibcxx_SUBDIRS'
+
+  # These need to be absolute paths, yet at the same time need to
+  # canonicalize only relative paths, because then amd will not unmount
+  # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
+  glibcxx_builddir=`${PWDCMD-pwd}`
+  case $srcdir in
+    [\\/$]* | ?:[\\/]*) glibcxx_srcdir=${srcdir} ;;
+    *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
+  esac
+  toplevel_srcdir=${glibcxx_srcdir}/..
+  AC_SUBST(glibcxx_builddir)
+  AC_SUBST(glibcxx_srcdir)
+  AC_SUBST(toplevel_srcdir)
+
+  # We use these options to decide which functions to include.  They are
+  # set from the top level.
+  AC_ARG_WITH([target-subdir],
+    AC_HELP_STRING([--with-target-subdir=SUBDIR],
+		   [configuring in a subdirectory]))
+
+  AC_ARG_WITH([cross-host],
+    AC_HELP_STRING([--with-cross-host=HOST],
+		   [configuring with a cross compiler]))
+
+  AC_ARG_WITH([newlib],
+    AC_HELP_STRING([--with-newlib],
+		   [assume newlib as a system C library]))
+
+  # Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't
+  # available).  Uncomment the next line to force a particular method.
+  AC_PROG_LN_S
+  #LN_S='cp -p'
+
+  AC_CHECK_TOOL(AS, as)
+  AC_CHECK_TOOL(AR, ar)
+  AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
+
+  AM_MAINTAINER_MODE
+
+  # Set up safe default values for all subsequent AM_CONDITIONAL tests
+  # which are themselves conditionally expanded.
+  ## (Right now, this only matters for enable_wchar_t, but nothing prevents
+  ## other macros from doing the same.  This should be automated.)  -pme
+
+  # Check for C library flavor since Linux platforms use different configuration
+  # directories depending on the C library in use.
+  AC_EGREP_CPP([_using_uclibc], [
+  #include 
+  #if __UCLIBC__
+    _using_uclibc
+  #endif
+  ], uclibc=yes, uclibc=no)
+
+  AC_EGREP_CPP([_using_bionic], [
+  #include 
+  #if __BIONIC__
+    _using_bionic
+  #endif
+  ], bionic=yes, bionic=no)
+
+  # Find platform-specific directories containing configuration info.
+  # Also possibly modify flags used elsewhere, as needed by the platform.
+  GLIBCXX_CHECK_HOST
+])
+
+
+dnl
+dnl Tests for newer compiler features, or features that are present in newer
+dnl compiler versions but not older compiler versions still in use, should
+dnl be placed here.
+dnl
+dnl Defines:
+dnl  WERROR='-Werror' if requested and possible; g++'s that lack the
+dnl   new inlining code or the new system_header pragma will die on -Werror.
+dnl   Leave it out by default and use maint-mode to use it.
+dnl  SECTION_FLAGS='-ffunction-sections -fdata-sections' if
+dnl   compiler supports it and the user has not requested debug mode.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
+  # All these tests are for C++; save the language and the compiler flags.
+  # The CXXFLAGS thing is suspicious, but based on similar bits previously
+  # found in GLIBCXX_CONFIGURE.
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+
+  # Check for maintainer-mode bits.
+  if test x"$USE_MAINTAINER_MODE" = xno; then
+    WERROR=''
+  else
+    WERROR='-Werror'
+  fi
+
+  # Check for -ffunction-sections -fdata-sections
+  AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
+  CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
+  AC_TRY_COMPILE([int foo; void bar() { };],, [ac_fdsections=yes], [ac_fdsections=no])
+  if test "$ac_test_CXXFLAGS" = set; then
+    CXXFLAGS="$ac_save_CXXFLAGS"
+  else
+    # this is the suspicious part
+    CXXFLAGS=''
+  fi
+  if test x"$ac_fdsections" = x"yes"; then
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+  fi
+  AC_MSG_RESULT($ac_fdsections)
+
+  AC_LANG_RESTORE
+  AC_SUBST(WERROR)
+  AC_SUBST(SECTION_FLAGS)
+])
+
+
+dnl
+dnl If GNU ld is in use, check to see if tricky linker opts can be used.  If
+dnl the native linker is in use, all variables will be defined to something
+dnl safe (like an empty string).
+dnl
+dnl Defines:
+dnl  SECTION_LDFLAGS='-Wl,--gc-sections' if possible
+dnl  OPT_LDFLAGS='-Wl,-O1' and '-z,relro' if possible
+dnl  LD (as a side effect of testing)
+dnl Sets:
+dnl  with_gnu_ld
+dnl  glibcxx_ld_is_gold (set to "no" or "yes")
+dnl  glibcxx_gnu_ld_version (possibly)
+dnl
+dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
+dnl set glibcxx_gnu_ld_version to 12345.  Zeros cause problems.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+  AC_REQUIRE([AC_PROG_LD])
+  AC_REQUIRE([AC_PROG_AWK])
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    AC_MSG_CHECKING([for ld version])
+    changequote(,)
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+    changequote([,])
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
+    AC_MSG_RESULT($glibcxx_gnu_ld_version)
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
+    AC_TRY_LINK([ int one(void) { return 1; }
+     int two(void) { return 2; }
+	], [ two(); ] , [ac_gcsections=yes], [ac_gcsections=no])
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    AC_MSG_RESULT($ac_gcsections)
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    AC_MSG_CHECKING([for ld that supports -Wl,-z,relro])
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    AC_MSG_RESULT($ac_ld_relro)
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+  AC_SUBST(SECTION_LDFLAGS)
+  AC_SUBST(OPT_LDFLAGS)
+])
+
+
+dnl
+dnl Check for headers for, and arguments to, the setrlimit() function.
+dnl Used only in testsuite_hooks.h.  Called from GLIBCXX_CONFIGURE_TESTSUITE.
+dnl
+dnl Defines:
+dnl  _GLIBCXX_RES_LIMITS if we can set artificial resource limits
+dnl  various HAVE_LIMIT_* for individual limit names
+dnl
+AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [
+  AC_MSG_CHECKING([for RLIMIT_$1])
+  AC_TRY_COMPILE(
+    [#include 
+     #include 
+     #include 
+    ],
+    [ int f = RLIMIT_$1 ; ],
+    [glibcxx_mresult=1], [glibcxx_mresult=0])
+  AC_DEFINE_UNQUOTED(HAVE_LIMIT_$1, $glibcxx_mresult,
+		     [Only used in build directory testsuite_hooks.h.])
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  AC_MSG_RESULT($res)
+])
+
+AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
+  setrlimit_have_headers=yes
+  AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
+		   [],
+		   [setrlimit_have_headers=no])
+  # If don't have the headers, then we can't run the tests now, and we
+  # won't be seeing any of these during testsuite compilation.
+  if test $setrlimit_have_headers = yes; then
+    # Can't do these in a loop, else the resulting syntax is wrong.
+    GLIBCXX_CHECK_SETRLIMIT_ancilliary(DATA)
+    GLIBCXX_CHECK_SETRLIMIT_ancilliary(RSS)
+    GLIBCXX_CHECK_SETRLIMIT_ancilliary(VMEM)
+    GLIBCXX_CHECK_SETRLIMIT_ancilliary(AS)
+    GLIBCXX_CHECK_SETRLIMIT_ancilliary(FSIZE)
+
+    # Check for rlimit, setrlimit.
+    AC_CACHE_VAL(glibcxx_cv_setrlimit, [
+      AC_TRY_COMPILE(
+	[#include 
+	 #include 
+	 #include 
+	],
+	[struct rlimit r;
+	 setrlimit(0, &r);],
+	[glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no])
+    ])
+  fi
+
+  AC_MSG_CHECKING([for testsuite resource limits support])
+  if test $setrlimit_have_headers = yes && test $glibcxx_cv_setrlimit = yes; then
+    ac_res_limits=yes
+    AC_DEFINE(_GLIBCXX_RES_LIMITS, 1,
+	      [Define if using setrlimit to set resource limits during
+	      "make check"])
+  else
+    ac_res_limits=no
+  fi
+  AC_MSG_RESULT($ac_res_limits)
+])
+
+
+dnl
+dnl Check whether S_ISREG (Posix) or S_IFREG is available in .
+dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  AC_MSG_CHECKING([for S_ISREG or S_IFREG])
+  AC_CACHE_VAL(glibcxx_cv_S_ISREG, [
+    GCC_TRY_COMPILE_OR_LINK(
+      [#include ],
+      [struct stat buffer;
+       fstat(0, &buffer);
+       S_ISREG(buffer.st_mode);],
+      [glibcxx_cv_S_ISREG=yes],
+      [glibcxx_cv_S_ISREG=no])
+  ])
+  AC_CACHE_VAL(glibcxx_cv_S_IFREG, [
+    GCC_TRY_COMPILE_OR_LINK(
+      [#include ],
+      [struct stat buffer;
+       fstat(0, &buffer);
+       S_IFREG & buffer.st_mode;],
+      [glibcxx_cv_S_IFREG=yes],
+      [glibcxx_cv_S_IFREG=no])
+  ])
+  res=no
+  if test $glibcxx_cv_S_ISREG = yes; then
+    AC_DEFINE(HAVE_S_ISREG, 1,
+	      [Define if S_IFREG is available in .])
+    res=S_ISREG
+  elif test $glibcxx_cv_S_IFREG = yes; then
+    AC_DEFINE(HAVE_S_IFREG, 1,
+	      [Define if S_IFREG is available in .])
+    res=S_IFREG
+  fi
+  AC_MSG_RESULT($res)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+
+dnl
+dnl Check whether poll is available in , and define HAVE_POLL.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_POLL], [
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  AC_MSG_CHECKING([for poll])
+  AC_CACHE_VAL(glibcxx_cv_POLL, [
+    GCC_TRY_COMPILE_OR_LINK(
+      [#include ],
+      [struct pollfd pfd[1];
+       pfd[0].events = POLLIN;
+       poll(pfd, 1, 0);],
+      [glibcxx_cv_POLL=yes],
+      [glibcxx_cv_POLL=no])
+  ])
+  if test $glibcxx_cv_POLL = yes; then
+    AC_DEFINE(HAVE_POLL, 1, [Define if poll is available in .])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_POLL)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+
+dnl
+dnl Check whether writev is available in , and define HAVE_WRITEV.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  AC_MSG_CHECKING([for writev])
+  AC_CACHE_VAL(glibcxx_cv_WRITEV, [
+    GCC_TRY_COMPILE_OR_LINK(
+      [#include ],
+      [struct iovec iov[2];
+       writev(0, iov, 0);],
+      [glibcxx_cv_WRITEV=yes],
+      [glibcxx_cv_WRITEV=no])
+  ])
+  if test $glibcxx_cv_WRITEV = yes; then
+    AC_DEFINE(HAVE_WRITEV, 1, [Define if writev is available in .])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_WRITEV)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+
+dnl
+dnl Check whether int64_t is available in , and define HAVE_INT64_T.
+dnl Also check whether int64_t is actually a typedef to long or long long.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_INT64_T], [
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+
+  AC_MSG_CHECKING([for int64_t])
+  AC_CACHE_VAL(glibcxx_cv_INT64_T, [
+    AC_TRY_COMPILE(
+      [#include ],
+      [int64_t var;],
+      [glibcxx_cv_INT64_T=yes],
+      [glibcxx_cv_INT64_T=no])
+  ])
+
+  if test $glibcxx_cv_INT64_T = yes; then
+    AC_DEFINE(HAVE_INT64_T, 1, [Define if int64_t is available in .])
+    AC_MSG_RESULT($glibcxx_cv_INT64_T)
+
+    AC_MSG_CHECKING([for int64_t as long])
+    AC_CACHE_VAL(glibcxx_cv_int64_t_long, [
+      AC_TRY_COMPILE(
+	[#include 
+	template struct same { enum { value = -1 }; };
+	template struct same { enum { value = 1 }; };
+	int array[same::value];], [],
+	[glibcxx_cv_int64_t_long=yes], [glibcxx_cv_int64_t_long=no])
+    ])
+
+    if test $glibcxx_cv_int64_t_long = yes; then
+      AC_DEFINE(HAVE_INT64_T_LONG, 1, [Define if int64_t is a long.])
+      AC_MSG_RESULT($glibcxx_cv_int64_t_long)
+    fi
+
+    AC_MSG_CHECKING([for int64_t as long long])
+    AC_CACHE_VAL(glibcxx_cv_int64_t_long_long, [
+      AC_TRY_COMPILE(
+	[#include 
+	template struct same { enum { value = -1 }; };
+	template struct same { enum { value = 1 }; };
+	int array[same::value];], [],
+	[glibcxx_cv_int64_t_long_long=yes], [glibcxx_cv_int64_t_long_long=no])
+    ])
+
+    if test $glibcxx_cv_int64_t_long_long = yes; then
+      AC_DEFINE(HAVE_INT64_T_LONG_LONG, 1, [Define if int64_t is a long long.])
+      AC_MSG_RESULT($glibcxx_cv_int64_t_long_long)
+    fi
+  fi
+
+  AC_LANG_RESTORE
+])
+
+
+dnl
+dnl Check whether LFS support is available.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_LFS], [
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+  AC_MSG_CHECKING([for LFS support])
+  AC_CACHE_VAL(glibcxx_cv_LFS, [
+    GCC_TRY_COMPILE_OR_LINK(
+      [#include 
+       #include 
+       #include 
+      ],
+      [FILE* fp;
+       fopen64("t", "w");
+       fseeko64(fp, 0, SEEK_CUR);
+       ftello64(fp);
+       lseek64(1, 0, SEEK_CUR);
+       struct stat64 buf;
+       fstat64(1, &buf);],
+      [glibcxx_cv_LFS=yes],
+      [glibcxx_cv_LFS=no])
+  ])
+  if test $glibcxx_cv_LFS = yes; then
+    AC_DEFINE(_GLIBCXX_USE_LFS, 1, [Define if LFS support is available.])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_LFS)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+
+dnl
+dnl Check for whether a fully dynamic basic_string implementation should
+dnl be turned on, that does not put empty objects in per-process static
+dnl memory (mostly useful together with shared memory allocators, see PR
+dnl libstdc++/16612 for details).
+dnl
+dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING
+dnl --disable-fully-dynamic-string leaves _GLIBCXX_FULLY_DYNAMIC_STRING undefined
+dnl  +  Usage:  GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING], [
+  GLIBCXX_ENABLE(fully-dynamic-string,$1,,[do not put empty strings in per-process static memory])
+  if test $enable_fully_dynamic_string = yes; then
+    AC_DEFINE(_GLIBCXX_FULLY_DYNAMIC_STRING, 1,
+	      [Define if a fully dynamic basic_string is wanted.])
+  fi
+])
+
+
+dnl
+dnl Does any necessary configuration of the testsuite directory.  Generates
+dnl the testsuite_hooks.h header.
+dnl
+dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE must be done before this.
+dnl
+dnl Sets:
+dnl  enable_abi_check
+dnl  GLIBCXX_TEST_WCHAR_T
+dnl  GLIBCXX_TEST_THREAD
+dnl Substs:
+dnl  baseline_dir
+dnl
+AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [
+  if $GLIBCXX_IS_NATIVE ; then
+    # Do checks for resource limit functions.
+    GLIBCXX_CHECK_SETRLIMIT
+
+    # Look for setenv, so that extended locale tests can be performed.
+    GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
+  fi
+
+  if $GLIBCXX_IS_NATIVE && test $is_hosted = yes &&
+     test $enable_symvers != no; then
+    case "$host" in
+      *-*-cygwin*)
+	enable_abi_check=no ;;
+      *)
+	enable_abi_check=yes ;;
+    esac
+  else
+    # Only build this as native, since automake does not understand
+    # CXX_FOR_BUILD.
+    enable_abi_check=no
+  fi
+
+  # Export file names for ABI checking.
+  baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}"
+  AC_SUBST(baseline_dir)
+])
+
+
+dnl
+dnl Does any necessary configuration of the documentation directory.
+dnl
+dnl XSLTPROC must be set before this
+dnl
+dnl Sets:
+dnl  glibcxx_stylesheets
+dnl Substs:
+dnl  XSL_STYLE_DIR
+dnl
+AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
+
+AC_MSG_CHECKING([for stylesheets used in generation of documentation])
+glibcxx_stylesheets=no
+if test x${XSLTPROC} = xyes && echo '' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
+  glibcxx_stylesheets=yes
+fi
+AC_MSG_RESULT($glibcxx_stylesheets)
+
+AC_MSG_CHECKING([for local stylesheet directory])
+glibcxx_local_stylesheets=no
+if test x"$glibcxx_stylesheets" = x"yes"; then
+  if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
+    glibcxx_local_stylesheets=yes
+    XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
+  fi
+  if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
+    glibcxx_local_stylesheets=yes
+    XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
+  fi
+fi
+AC_MSG_RESULT($glibcxx_local_stylesheets)
+
+if test x"$glibcxx_local_stylesheets" = x"yes"; then
+  AC_SUBST(XSL_STYLE_DIR)
+  AC_MSG_NOTICE($XSL_STYLE_DIR)
+else
+  glibcxx_stylesheets=no
+fi
+])
+
+
+dnl
+dnl Set up *_INCLUDES variables for all sundry Makefile.am's.
+dnl
+dnl Substs:
+dnl  GLIBCXX_INCLUDES
+dnl  TOPLEVEL_INCLUDES
+dnl
+AC_DEFUN([GLIBCXX_EXPORT_INCLUDES], [
+  # Used for every C++ compile we perform.
+  GLIBCXX_INCLUDES="\
+-I$glibcxx_builddir/include/$host_alias \
+-I$glibcxx_builddir/include \
+-I$glibcxx_srcdir/libsupc++"
+
+  # For Canadian crosses, pick this up too.
+  if test $CANADIAN = yes; then
+    GLIBCXX_INCLUDES="$GLIBCXX_INCLUDES -I\${includedir}"
+  fi
+
+  # Stuff in the actual top level.  Currently only used by libsupc++ to
+  # get unwind* headers from the gcc dir.
+  #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include'
+  TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc'
+
+  # Now, export this to all the little Makefiles....
+  AC_SUBST(GLIBCXX_INCLUDES)
+  AC_SUBST(TOPLEVEL_INCLUDES)
+])
+
+
+dnl
+dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
+dnl (SECTION_FLAGS is done under CHECK_COMPILER_FEATURES.)
+dnl
+dnl Substs:
+dnl  OPTIMIZE_CXXFLAGS
+dnl  WARN_FLAGS
+dnl
+AC_DEFUN([GLIBCXX_EXPORT_FLAGS], [
+  # Optimization flags that are probably a good idea for thrill-seekers. Just
+  # uncomment the lines below and make, everything else is ready to go...
+  # Alternatively OPTIMIZE_CXXFLAGS can be set in configure.host.
+  # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
+  AC_SUBST(OPTIMIZE_CXXFLAGS)
+
+  WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
+  AC_SUBST(WARN_FLAGS)
+])
+
+
+dnl
+dnl All installation directory information is determined here.
+dnl
+dnl Substs:
+dnl  gxx_install_dir
+dnl  glibcxx_prefixdir
+dnl  glibcxx_toolexecdir
+dnl  glibcxx_toolexeclibdir
+dnl
+dnl Assumes cross_compiling bits already done, and with_cross_host in
+dnl particular.
+dnl
+dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir.
+dnl config/gxx-include-dir.m4 must be kept consistant with this as well.
+AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
+  glibcxx_toolexecdir=no
+  glibcxx_toolexeclibdir=no
+  glibcxx_prefixdir=$prefix
+
+  AC_MSG_CHECKING([for gxx-include-dir])
+  AC_ARG_WITH([gxx-include-dir],
+    AC_HELP_STRING([--with-gxx-include-dir=DIR],
+		   [installation directory for include files]),
+    [case "$withval" in
+      yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;;
+      no)  gxx_include_dir=no ;;
+      *)   gxx_include_dir=$withval ;;
+     esac],
+    [gxx_include_dir=no])
+  AC_MSG_RESULT($gxx_include_dir)
+
+  AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+  AC_ARG_ENABLE([version-specific-runtime-libs],
+    AC_HELP_STRING([--enable-version-specific-runtime-libs],
+		   [Specify that runtime libraries should be installed in a compiler-specific directory]),
+    [case "$enableval" in
+      yes) version_specific_libs=yes ;;
+      no)  version_specific_libs=no ;;
+      *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+     esac],
+    [version_specific_libs=no])
+  AC_MSG_RESULT($version_specific_libs)
+
+  # Default case for install directory for include files.
+  if test $version_specific_libs = no && test $gxx_include_dir = no; then
+    gxx_include_dir='include/c++/${gcc_version}'
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      gxx_include_dir='${prefix}/${target_alias}/'"$gxx_include_dir"
+    else
+      gxx_include_dir='${prefix}/'"$gxx_include_dir"
+    fi
+  fi
+
+  # Version-specific runtime libs processing.
+  if test $version_specific_libs = yes; then
+    # Need the gcc compiler version to know where to install libraries
+    # and header files if --enable-version-specific-runtime-libs option
+    # is selected.  FIXME: these variables are misnamed, there are
+    # no executables installed in _toolexecdir or _toolexeclibdir.
+    if test x"$gxx_include_dir" = x"no"; then
+      gxx_include_dir='${libdir}/gcc/${host_alias}/${gcc_version}/include/c++'
+    fi
+    glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
+    glibcxx_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
+  fi
+
+  # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir
+  # Install a library built with a cross compiler in tooldir, not libdir.
+  if test x"$glibcxx_toolexecdir" = x"no"; then
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
+      glibcxx_toolexeclibdir='${toolexecdir}/lib'
+    else
+      glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
+      glibcxx_toolexeclibdir='${libdir}'
+    fi
+    multi_os_directory=`$CXX -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) glibcxx_toolexeclibdir=$glibcxx_toolexeclibdir/$multi_os_directory ;;
+    esac
+  fi
+
+  AC_MSG_CHECKING([for install location])
+  AC_MSG_RESULT($gxx_include_dir)
+
+  AC_SUBST(glibcxx_prefixdir)
+  AC_SUBST(gxx_include_dir)
+  AC_SUBST(glibcxx_toolexecdir)
+  AC_SUBST(glibcxx_toolexeclibdir)
+])
+
+
+dnl
+dnl GLIBCXX_ENABLE
+dnl    (FEATURE, DEFAULT, HELP-ARG, HELP-STRING)
+dnl    (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c)
+dnl    (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER)
+dnl
+dnl See docs/html/17_intro/configury.html#enable for documentation.
+dnl
+m4_define([GLIBCXX_ENABLE],[dnl
+m4_define([_g_switch],[--enable-$1])dnl
+m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl
+ AC_ARG_ENABLE([$1],m4_dquote(_g_help),
+  m4_bmatch([$5],
+   [^permit ],
+     [[
+      case "$enableval" in
+       m4_bpatsubst([$5],[permit ])) ;;
+       *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;;
+	  dnl Idea for future:  generate a URL pointing to
+	  dnl "onlinedocs/configopts.html#whatever"
+      esac
+     ]],
+   [^$],
+     [[
+      case "$enableval" in
+       yes|no) ;;
+       *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;;
+      esac
+     ]],
+   [[$5]]),
+  [enable_]m4_bpatsubst([$1],-,_)[=][$2])
+m4_undefine([_g_switch])dnl
+m4_undefine([_g_help])dnl
+])
+
+
+dnl
+dnl Check for ISO/IEC 9899:1999 "C99" support.
+dnl
+dnl --enable-c99 defines _GLIBCXX_USE_C99
+dnl --disable-c99 leaves _GLIBCXX_USE_C99 undefined
+dnl  +  Usage:  GLIBCXX_ENABLE_C99[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl  +  If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_C99], [
+  GLIBCXX_ENABLE(c99,$1,,[turns on ISO/IEC 9899:1999 support])
+
+  if test x"$enable_c99" = x"yes"; then
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+
+  # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__
+  # undefined and fake C99 facilities - like pre-standard snprintf - may be
+  # spuriously enabled.
+  # Long term, -std=c++0x could be even better, could manage to explicitely
+  # request C99 facilities to the underlying C headers.
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++98"
+  ac_save_LIBS="$LIBS"
+  ac_save_gcc_no_link="$gcc_no_link"
+
+  if test x$gcc_no_link != xyes; then
+    # Use -fno-exceptions to that the C driver can link these tests without
+    # hitting undefined references to personality routines.
+    CXXFLAGS="$CXXFLAGS -fno-exceptions"
+    AC_CHECK_LIB(m, sin, [
+      LIBS="$LIBS -lm"
+    ], [
+      # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK
+      gcc_no_link=yes
+    ])
+  fi
+
+  # Check for the existence of <math.h> functions used if C99 is enabled.
+  AC_MSG_CHECKING([for ISO C99 support in <math.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_math, [
+  GCC_TRY_COMPILE_OR_LINK(
+     [#include <math.h>
+      volatile double d1, d2;
+      volatile int i;],
+     [i = fpclassify(d1);
+      i = isfinite(d1);
+      i = isinf(d1);
+      i = isnan(d1);
+      i = isnormal(d1);
+      i = signbit(d1);
+      i = isgreater(d1, d2);
+      i = isgreaterequal(d1, d2);
+      i = isless(d1, d2);
+      i = islessequal(d1, d2);
+      i = islessgreater(d1, d2);
+      i = islessgreater(d1, d2);
+      i = isunordered(d1, d2);
+     ],[glibcxx_cv_c99_math=yes], [glibcxx_cv_c99_math=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_math)
+  if test x"$glibcxx_cv_c99_math" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_MATH, 1,
+	      [Define if C99 functions or macros in <math.h> should be imported
+	      in <cmath> in namespace std.])
+  fi
+
+  # Check for the existence of <complex.h> complex math functions.
+  # This is necessary even though libstdc++ uses the builtin versions
+  # of these functions, because if the builtin cannot be used, a reference
+  # to the library function is emitted.
+  AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no)
+  AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no)
+  glibcxx_cv_c99_complex=no;
+  if test x"$ac_has_complex_h" = x"yes"; then
+    AC_MSG_CHECKING([for ISO C99 support in <complex.h>])
+    GCC_TRY_COMPILE_OR_LINK(
+       [#include <complex.h>
+	typedef __complex__ float float_type;
+	typedef __complex__ double double_type;
+	typedef __complex__ long double ld_type;
+	volatile float_type tmpf;
+	volatile double_type tmpd;
+	volatile ld_type tmpld;
+	volatile float f;
+	volatile double d;
+	volatile long double ld;],
+       [f = cabsf(tmpf);
+	f = cargf(tmpf);
+	tmpf = ccosf(tmpf);
+	tmpf = ccoshf(tmpf);
+	tmpf = cexpf(tmpf);
+	tmpf = clogf(tmpf);
+	tmpf = csinf(tmpf);
+	tmpf = csinhf(tmpf);
+	tmpf = csqrtf(tmpf);
+	tmpf = ctanf(tmpf);
+	tmpf = ctanhf(tmpf);
+	tmpf = cpowf(tmpf, tmpf);
+	tmpf = cprojf(tmpf);
+	d = cabs(tmpd);
+	d = carg(tmpd);
+	tmpd = ccos(tmpd);
+	tmpd = ccosh(tmpd);
+	tmpd = cexp(tmpd);
+	tmpd = clog(tmpd);
+	tmpd = csin(tmpd);
+	tmpd = csinh(tmpd);
+	tmpd = csqrt(tmpd);
+	tmpd = ctan(tmpd);
+	tmpd = ctanh(tmpd);
+	tmpd = cpow(tmpd, tmpd);
+	tmpd = cproj(tmpd);
+	ld = cabsl(tmpld);
+	ld = cargl(tmpld);
+	tmpld = ccosl(tmpld);
+	tmpld = ccoshl(tmpld);
+	tmpld = cexpl(tmpld);
+	tmpld = clogl(tmpld);
+	tmpld = csinl(tmpld);
+	tmpld = csinhl(tmpld);
+	tmpld = csqrtl(tmpld);
+	tmpld = ctanl(tmpld);
+	tmpld = ctanhl(tmpld);
+	tmpld = cpowl(tmpld, tmpld);
+	tmpld = cprojl(tmpld);
+       ],[glibcxx_cv_c99_complex=yes], [glibcxx_cv_c99_complex=no])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_c99_complex)
+  if test x"$glibcxx_cv_c99_complex" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX, 1,
+	      [Define if C99 functions in <complex.h> should be used in
+	      <complex>. Using compiler builtins for these functions requires
+	      corresponding C99 library functions to be present.])
+  fi
+
+  # Check for the existence in <stdio.h> of vscanf, et. al.
+  AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_stdio, [
+  GCC_TRY_COMPILE_OR_LINK(
+     [#include <stdio.h>
+      #include <stdarg.h>
+      void foo(char* fmt, ...)
+      {
+	va_list args; va_start(args, fmt);
+	vfscanf(stderr, "%i", args);
+	vscanf("%i", args);
+	vsnprintf(fmt, 0, "%i", args);
+	vsscanf(fmt, "%i", args);
+      }],
+     [snprintf("12", 0, "%i");],
+     [glibcxx_cv_c99_stdio=yes], [glibcxx_cv_c99_stdio=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_stdio)
+
+  # Check for the existence in <stdlib.h> of lldiv_t, et. al.
+  AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_stdlib, [
+  GCC_TRY_COMPILE_OR_LINK(
+     [#include <stdlib.h>
+      volatile float f;
+      volatile long double ld;
+      volatile unsigned long long ll;
+      lldiv_t mydivt;],
+     [char* tmp;
+      f = strtof("gnu", &tmp);
+      ld = strtold("gnu", &tmp);
+      ll = strtoll("gnu", &tmp, 10);
+      ll = strtoull("gnu", &tmp, 10);
+      ll = llabs(10);
+      mydivt = lldiv(10,1);
+      ll = mydivt.quot;
+      ll = mydivt.rem;
+      ll = atoll("10");
+      _Exit(0);
+      ],[glibcxx_cv_c99_stdlib=yes], [glibcxx_cv_c99_stdlib=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_stdlib)
+
+  # Check for the existence in <wchar.h> of wcstold, etc.
+  glibcxx_cv_c99_wchar=no;
+  if test x"$ac_has_wchar_h" = xyes &&
+     test x"$ac_has_wctype_h" = xyes; then
+    AC_MSG_CHECKING([for ISO C99 support in <wchar.h>])
+    AC_TRY_COMPILE([#include <wchar.h>
+		    namespace test
+		    {
+		      using ::wcstold;
+		      using ::wcstoll;
+		      using ::wcstoull;
+		    }
+		   ],[],[glibcxx_cv_c99_wchar=yes], [glibcxx_cv_c99_wchar=no])
+
+    # Checks for wide character functions that may not be present.
+    # Injection of these is wrapped with guard macros.
+    # NB: only put functions here, instead of immediately above, if
+    # absolutely necessary.
+    AC_TRY_COMPILE([#include <wchar.h>
+		    namespace test { using ::vfwscanf; } ], [],
+ 	    	   [AC_DEFINE(HAVE_VFWSCANF,1,
+			[Defined if vfwscanf exists.])],[])
+
+    AC_TRY_COMPILE([#include <wchar.h>
+		    namespace test { using ::vswscanf; } ], [],
+ 	    	   [AC_DEFINE(HAVE_VSWSCANF,1,
+			[Defined if vswscanf exists.])],[])
+
+    AC_TRY_COMPILE([#include <wchar.h>
+		    namespace test { using ::vwscanf; } ], [],
+ 	    	   [AC_DEFINE(HAVE_VWSCANF,1,[Defined if vwscanf exists.])],[])
+
+    AC_TRY_COMPILE([#include <wchar.h>
+		    namespace test { using ::wcstof; } ], [],
+ 	    	   [AC_DEFINE(HAVE_WCSTOF,1,[Defined if wcstof exists.])],[])
+
+    AC_TRY_COMPILE([#include <wctype.h>],
+		   [ wint_t t; int i = iswblank(t);],
+ 	    	   [AC_DEFINE(HAVE_ISWBLANK,1,
+			[Defined if iswblank exists.])],[])
+
+    AC_MSG_RESULT($glibcxx_cv_c99_wchar)
+  fi
+
+  # Option parsed, now set things appropriately.
+  if test x"$glibcxx_cv_c99_math" = x"no" ||
+     test x"$glibcxx_cv_c99_complex" = x"no" ||
+     test x"$glibcxx_cv_c99_stdio" = x"no" ||
+     test x"$glibcxx_cv_c99_stdlib" = x"no" ||
+     test x"$glibcxx_cv_c99_wchar" = x"no"; then
+    enable_c99=no;
+  else
+    AC_DEFINE(_GLIBCXX_USE_C99, 1,
+    [Define if C99 functions or macros from <wchar.h>, <math.h>,
+    <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.])
+  fi
+
+  gcc_no_link="$ac_save_gcc_no_link"
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  fi
+
+  AC_MSG_CHECKING([for fully enabled ISO C99 support])
+  AC_MSG_RESULT($enable_c99)
+])
+
+
+dnl
+dnl Check for clock_gettime, nanosleep and sched_yield, used in the
+dnl implementation of 20.8.5 [time.clock], and 30.2.2 [thread.thread.this]
+dnl in the current C++0x working draft.
+dnl
+dnl --enable-libstdcxx-time
+dnl --enable-libstdcxx-time=yes
+dnl        checks for the availability of monotonic and realtime clocks,
+dnl        nanosleep and sched_yield in libc and libposix4 and, in case, links
+dnl       the latter
+dnl --enable-libstdcxx-time=rt
+dnl        also searches (and, in case, links) librt.  Note that this is
+dnl        not always desirable because, in glibc, for example, in turn it
+dnl        triggers the linking of libpthread too, which activates locking,
+dnl        a large overhead for single-thread programs.
+dnl --enable-libstdcxx-time=no
+dnl --disable-libstdcxx-time
+dnl        disables the checks completely
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
+
+  AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield])
+  GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]],
+    [use KIND for check type],
+    [permit yes|no|rt])
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+  ac_save_LIBS="$LIBS"
+
+  ac_has_clock_monotonic=no
+  ac_has_clock_realtime=no
+  AC_MSG_RESULT($enable_libstdcxx_time)
+
+  if test x"$enable_libstdcxx_time" != x"no"; then
+
+    if test x"$enable_libstdcxx_time" = x"rt"; then
+      AC_SEARCH_LIBS(clock_gettime, [rt posix4])
+      AC_SEARCH_LIBS(nanosleep, [rt posix4])
+    else
+      AC_SEARCH_LIBS(clock_gettime, [posix4])
+      AC_SEARCH_LIBS(nanosleep, [posix4])
+    fi
+
+    case "$ac_cv_search_clock_gettime" in
+      -l*) GLIBCXX_LIBS=$ac_cv_search_clock_gettime
+      ;;
+    esac
+    case "$ac_cv_search_nanosleep" in
+      -l*) GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_nanosleep"
+      ;;
+    esac
+
+    AC_SEARCH_LIBS(sched_yield, [rt posix4])
+
+    case "$ac_cv_search_sched_yield" in
+      -lposix4*)
+      GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
+      AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
+		[ Defined if sched_yield is available. ])
+      ;;
+      -lrt*)
+      if test x"$enable_libstdcxx_time" = x"rt"; then
+	GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
+	AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
+		  [ Defined if sched_yield is available. ])
+      fi
+      ;;
+      *)
+      AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
+		[ Defined if sched_yield is available. ])
+      ;;
+    esac
+
+    AC_CHECK_HEADERS(unistd.h, ac_has_unistd_h=yes, ac_has_unistd_h=no)
+
+    if test x"$ac_has_unistd_h" = x"yes"; then
+      AC_MSG_CHECKING([for monotonic clock])
+      AC_TRY_LINK(
+	[#include <unistd.h>
+	 #include <time.h>
+	],
+	[#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
+	  timespec tp;
+	 #endif
+	  clock_gettime(CLOCK_MONOTONIC, &tp);
+	], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no])
+
+      AC_MSG_RESULT($ac_has_clock_monotonic)
+
+      AC_MSG_CHECKING([for realtime clock])
+      AC_TRY_LINK(
+	[#include <unistd.h>
+	 #include <time.h>
+	],
+	[#if _POSIX_TIMERS > 0
+	  timespec tp;
+	 #endif
+	  clock_gettime(CLOCK_REALTIME, &tp);
+	], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no])
+
+      AC_MSG_RESULT($ac_has_clock_realtime)
+
+      AC_MSG_CHECKING([for nanosleep])
+      AC_TRY_LINK(
+	[#include <unistd.h>
+	 #include <time.h>
+	],
+	[#if _POSIX_TIMERS > 0
+	  timespec tp;
+	 #endif
+	  nanosleep(&tp, 0);
+	], [ac_has_nanosleep=yes], [ac_has_nanosleep=no])
+
+      AC_MSG_RESULT($ac_has_nanosleep)
+    fi
+  fi
+
+  if test x"$ac_has_clock_monotonic" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC, 1,
+      [ Defined if clock_gettime has monotonic clock support. ])
+  fi
+
+  if test x"$ac_has_clock_realtime" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_CLOCK_REALTIME, 1,
+      [ Defined if clock_gettime has realtime clock support. ])
+  fi
+
+  if test x"$ac_has_nanosleep" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_NANOSLEEP, 1,
+      [ Defined if nanosleep is available. ])
+  fi
+
+  AC_SUBST(GLIBCXX_LIBS)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  LIBS="$ac_save_LIBS"
+  AC_LANG_RESTORE
+])
+
+dnl
+dnl Check for gettimeofday, used in the implementation of 20.8.5
+dnl [time.clock] in the current C++0x working draft.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_GETTIMEOFDAY], [
+
+  AC_MSG_CHECKING([for gettimeofday])
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  ac_has_gettimeofday=no;
+  AC_CHECK_HEADERS(sys/time.h, ac_has_sys_time_h=yes, ac_has_sys_time_h=no)
+  if test x"$ac_has_sys_time_h" = x"yes"; then
+    AC_MSG_CHECKING([for gettimeofday])
+    GCC_TRY_COMPILE_OR_LINK([#include <sys/time.h>],
+      [timeval tv; gettimeofday(&tv, 0);],
+      [ac_has_gettimeofday=yes], [ac_has_gettimeofday=no])
+
+    AC_MSG_RESULT($ac_has_gettimeofday)
+  fi
+
+  if test x"$ac_has_gettimeofday" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_GETTIMEOFDAY, 1,
+      [ Defined if gettimeofday is available. ])
+  fi
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+dnl
+dnl Check for ISO/IEC 9899:1999 "C99" support to ISO/IEC DTR 19768 "TR1"
+dnl facilities in Chapter 8, "C compatibility".
+dnl
+AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
+
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+
+  # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__
+  # undefined and fake C99 facilities may be spuriously enabled.
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++98"
+
+  # Check for the existence of <complex.h> complex math functions used
+  # by tr1/complex.
+  AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no)
+  ac_c99_complex_tr1=no;
+  if test x"$ac_has_complex_h" = x"yes"; then
+    AC_MSG_CHECKING([for ISO C99 support to TR1 in <complex.h>])
+    AC_TRY_COMPILE([#include <complex.h>],
+		   [typedef __complex__ float float_type; float_type tmpf;
+		    cacosf(tmpf);
+		    casinf(tmpf);
+		    catanf(tmpf);
+		    cacoshf(tmpf);
+		    casinhf(tmpf);
+		    catanhf(tmpf);
+		    typedef __complex__ double double_type; double_type tmpd;
+		    cacos(tmpd);
+		    casin(tmpd);
+		    catan(tmpd);
+		    cacosh(tmpd);
+		    casinh(tmpd);
+		    catanh(tmpd);
+		    typedef __complex__ long double ld_type; ld_type tmpld;
+		    cacosl(tmpld);
+		    casinl(tmpld);
+		    catanl(tmpld);
+		    cacoshl(tmpld);
+		    casinhl(tmpld);
+		    catanhl(tmpld);
+		   ],[ac_c99_complex_tr1=yes], [ac_c99_complex_tr1=no])
+  fi
+  AC_MSG_RESULT($ac_c99_complex_tr1)
+  if test x"$ac_c99_complex_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_TR1, 1,
+	      [Define if C99 functions in <complex.h> should be used in
+	      <tr1/complex>. Using compiler builtins for these functions
+	      requires corresponding C99 library functions to be present.])
+  fi
+
+  # Check for the existence of <ctype.h> functions.
+  AC_MSG_CHECKING([for ISO C99 support to TR1 in <ctype.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_ctype_tr1, [
+  AC_TRY_COMPILE([#include <ctype.h>],
+		 [int ch;
+		  int ret;
+		  ret = isblank(ch);
+		 ],[glibcxx_cv_c99_ctype_tr1=yes],
+		   [glibcxx_cv_c99_ctype_tr1=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_ctype_tr1)
+  if test x"$glibcxx_cv_c99_ctype_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_CTYPE_TR1, 1,
+	      [Define if C99 functions in <ctype.h> should be imported in
+	      <tr1/cctype> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of <fenv.h> functions.
+  AC_CHECK_HEADERS(fenv.h, ac_has_fenv_h=yes, ac_has_fenv_h=no)
+  ac_c99_fenv_tr1=no;
+  if test x"$ac_has_fenv_h" = x"yes"; then
+    AC_MSG_CHECKING([for ISO C99 support to TR1 in <fenv.h>])
+    AC_TRY_COMPILE([#include <fenv.h>],
+		   [int except, mode;
+		    fexcept_t* pflag;
+		    fenv_t* penv;
+		    int ret;
+		    ret = feclearexcept(except);
+		    ret = fegetexceptflag(pflag, except);
+		    ret = feraiseexcept(except);
+		    ret = fesetexceptflag(pflag, except);
+		    ret = fetestexcept(except);
+		    ret = fegetround();
+		    ret = fesetround(mode);
+		    ret = fegetenv(penv);
+		    ret = feholdexcept(penv);
+		    ret = fesetenv(penv);
+		    ret = feupdateenv(penv);
+		   ],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no])
+  fi
+  AC_MSG_RESULT($ac_c99_fenv_tr1)
+  if test x"$ac_c99_fenv_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_FENV_TR1, 1,
+	      [Define if C99 functions in <fenv.h> should be imported in
+	      <tr1/cfenv> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of <stdint.h> types.
+  AC_MSG_CHECKING([for ISO C99 support to TR1 in <stdint.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_stdint_tr1, [
+  AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS
+		  #define __STDC_CONSTANT_MACROS
+		  #include <stdint.h>],
+		 [typedef int8_t          my_int8_t;
+		  my_int8_t               i8 = INT8_MIN;
+		  i8 = INT8_MAX;
+		  typedef int16_t         my_int16_t;
+		  my_int16_t              i16 = INT16_MIN;
+		  i16 = INT16_MAX;
+		  typedef int32_t         my_int32_t;
+		  my_int32_t              i32 = INT32_MIN;
+		  i32 = INT32_MAX;
+		  typedef int64_t         my_int64_t;
+		  my_int64_t              i64 = INT64_MIN;
+		  i64 = INT64_MAX;
+		  typedef int_fast8_t     my_int_fast8_t;
+		  my_int_fast8_t          if8 = INT_FAST8_MIN;
+		  if8 = INT_FAST8_MAX;
+		  typedef int_fast16_t    my_int_fast16_t;
+		  my_int_fast16_t         if16 = INT_FAST16_MIN;
+		  if16 = INT_FAST16_MAX;
+		  typedef int_fast32_t    my_int_fast32_t;
+		  my_int_fast32_t         if32 = INT_FAST32_MIN;
+		  if32 = INT_FAST32_MAX;
+		  typedef int_fast64_t    my_int_fast64_t;
+		  my_int_fast64_t         if64 = INT_FAST64_MIN;
+		  if64 = INT_FAST64_MAX;
+		  typedef int_least8_t    my_int_least8_t;
+		  my_int_least8_t         il8 = INT_LEAST8_MIN;
+		  il8 = INT_LEAST8_MAX;
+		  typedef int_least16_t   my_int_least16_t;
+		  my_int_least16_t        il16 = INT_LEAST16_MIN;
+		  il16 = INT_LEAST16_MAX;
+		  typedef int_least32_t   my_int_least32_t;
+		  my_int_least32_t        il32 = INT_LEAST32_MIN;
+		  il32 = INT_LEAST32_MAX;
+		  typedef int_least64_t   my_int_least64_t;
+		  my_int_least64_t        il64 = INT_LEAST64_MIN;
+		  il64 = INT_LEAST64_MAX;
+		  typedef intmax_t        my_intmax_t;
+		  my_intmax_t             im = INTMAX_MAX;
+		  im = INTMAX_MIN;
+		  typedef intptr_t        my_intptr_t;
+		  my_intptr_t             ip = INTPTR_MAX;
+		  ip = INTPTR_MIN;
+		  typedef uint8_t         my_uint8_t;
+		  my_uint8_t              ui8 = UINT8_MAX;
+		  ui8 = UINT8_MAX;
+		  typedef uint16_t        my_uint16_t;
+		  my_uint16_t             ui16 = UINT16_MAX;
+		  ui16 = UINT16_MAX;
+		  typedef uint32_t        my_uint32_t;
+		  my_uint32_t             ui32 = UINT32_MAX;
+		  ui32 = UINT32_MAX;
+		  typedef uint64_t        my_uint64_t;
+		  my_uint64_t             ui64 = UINT64_MAX;
+		  ui64 = UINT64_MAX;
+		  typedef uint_fast8_t    my_uint_fast8_t;
+		  my_uint_fast8_t         uif8 = UINT_FAST8_MAX;
+		  uif8 = UINT_FAST8_MAX;
+		  typedef uint_fast16_t   my_uint_fast16_t;
+		  my_uint_fast16_t        uif16 = UINT_FAST16_MAX;
+		  uif16 = UINT_FAST16_MAX;
+		  typedef uint_fast32_t   my_uint_fast32_t;
+		  my_uint_fast32_t        uif32 = UINT_FAST32_MAX;
+		  uif32 = UINT_FAST32_MAX;
+		  typedef uint_fast64_t   my_uint_fast64_t;
+		  my_uint_fast64_t        uif64 = UINT_FAST64_MAX;
+		  uif64 = UINT_FAST64_MAX;
+		  typedef uint_least8_t   my_uint_least8_t;
+		  my_uint_least8_t        uil8 = UINT_LEAST8_MAX;
+		  uil8 = UINT_LEAST8_MAX;
+		  typedef uint_least16_t  my_uint_least16_t;
+		  my_uint_least16_t       uil16 = UINT_LEAST16_MAX;
+		  uil16 = UINT_LEAST16_MAX;
+		  typedef uint_least32_t  my_uint_least32_t;
+		  my_uint_least32_t       uil32 = UINT_LEAST32_MAX;
+		  uil32 = UINT_LEAST32_MAX;
+		  typedef uint_least64_t  my_uint_least64_t;
+		  my_uint_least64_t       uil64 = UINT_LEAST64_MAX;
+		  uil64 = UINT_LEAST64_MAX;
+		  typedef uintmax_t       my_uintmax_t;
+		  my_uintmax_t            uim = UINTMAX_MAX;
+		  uim = UINTMAX_MAX;
+		  typedef uintptr_t       my_uintptr_t;
+		  my_uintptr_t            uip = UINTPTR_MAX;
+		  uip = UINTPTR_MAX;
+		 ],[glibcxx_cv_c99_stdint_tr1=yes],
+		   [glibcxx_cv_c99_stdint_tr1=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_stdint_tr1)
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_STDINT_TR1, 1,
+	      [Define if C99 types in <stdint.h> should be imported in
+	      <tr1/cstdint> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of <math.h> functions.
+  AC_MSG_CHECKING([for ISO C99 support to TR1 in <math.h>])
+  AC_CACHE_VAL(glibcxx_cv_c99_math_tr1, [
+  AC_TRY_COMPILE([#include <math.h>],
+		 [typedef double_t  my_double_t;
+		  typedef float_t   my_float_t;
+		  acosh(0.0);
+		  acoshf(0.0f);
+		  acoshl(0.0l);
+		  asinh(0.0);
+		  asinhf(0.0f);
+		  asinhl(0.0l);
+		  atanh(0.0);
+		  atanhf(0.0f);
+		  atanhl(0.0l);
+		  cbrt(0.0);
+		  cbrtf(0.0f);
+		  cbrtl(0.0l);
+		  copysign(0.0, 0.0);
+		  copysignf(0.0f, 0.0f);
+		  copysignl(0.0l, 0.0l);
+		  erf(0.0);
+		  erff(0.0f);
+		  erfl(0.0l);
+		  erfc(0.0);
+		  erfcf(0.0f);
+		  erfcl(0.0l);
+		  exp2(0.0);
+		  exp2f(0.0f);
+		  exp2l(0.0l);
+		  expm1(0.0);
+		  expm1f(0.0f);
+		  expm1l(0.0l);
+		  fdim(0.0, 0.0);
+		  fdimf(0.0f, 0.0f);
+		  fdiml(0.0l, 0.0l);
+		  fma(0.0, 0.0, 0.0);
+		  fmaf(0.0f, 0.0f, 0.0f);
+		  fmal(0.0l, 0.0l, 0.0l);
+		  fmax(0.0, 0.0);
+		  fmaxf(0.0f, 0.0f);
+		  fmaxl(0.0l, 0.0l);
+		  fmin(0.0, 0.0);
+		  fminf(0.0f, 0.0f);
+		  fminl(0.0l, 0.0l);
+		  hypot(0.0, 0.0);
+		  hypotf(0.0f, 0.0f);
+		  hypotl(0.0l, 0.0l);
+		  ilogb(0.0);
+		  ilogbf(0.0f);
+		  ilogbl(0.0l);
+		  lgamma(0.0);
+		  lgammaf(0.0f);
+		  lgammal(0.0l);
+		  llrint(0.0);
+		  llrintf(0.0f);
+		  llrintl(0.0l);
+		  llround(0.0);
+		  llroundf(0.0f);
+		  llroundl(0.0l);
+		  log1p(0.0);
+		  log1pf(0.0f);
+		  log1pl(0.0l);
+		  log2(0.0);
+		  log2f(0.0f);
+		  log2l(0.0l);
+		  logb(0.0);
+		  logbf(0.0f);
+		  logbl(0.0l);
+		  lrint(0.0);
+		  lrintf(0.0f);
+		  lrintl(0.0l);
+		  lround(0.0);
+		  lroundf(0.0f);
+		  lroundl(0.0l);
+		  nan(0);
+		  nanf(0);
+		  nanl(0);
+		  nearbyint(0.0);
+		  nearbyintf(0.0f);
+		  nearbyintl(0.0l);
+		  nextafter(0.0, 0.0);
+		  nextafterf(0.0f, 0.0f);
+		  nextafterl(0.0l, 0.0l);
+		  nexttoward(0.0, 0.0);
+		  nexttowardf(0.0f, 0.0f);
+		  nexttowardl(0.0l, 0.0l);
+		  remainder(0.0, 0.0);
+		  remainderf(0.0f, 0.0f);
+		  remainderl(0.0l, 0.0l);
+		  remquo(0.0, 0.0, 0);
+		  remquof(0.0f, 0.0f, 0);
+		  remquol(0.0l, 0.0l, 0);
+		  rint(0.0);
+		  rintf(0.0f);
+		  rintl(0.0l);
+		  round(0.0);
+		  roundf(0.0f);
+		  roundl(0.0l);
+		  scalbln(0.0, 0l);
+		  scalblnf(0.0f, 0l);
+		  scalblnl(0.0l, 0l);
+		  scalbn(0.0, 0);
+		  scalbnf(0.0f, 0);
+		  scalbnl(0.0l, 0);
+		  tgamma(0.0);
+		  tgammaf(0.0f);
+		  tgammal(0.0l);
+		  trunc(0.0);
+		  truncf(0.0f);
+		  truncl(0.0l);
+		 ],[glibcxx_cv_c99_math_tr1=yes], [glibcxx_cv_c99_math_tr1=no])
+  ])
+  AC_MSG_RESULT($glibcxx_cv_c99_math_tr1)
+  if test x"$glibcxx_cv_c99_math_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_MATH_TR1, 1,
+	      [Define if C99 functions or macros in <math.h> should be imported
+	      in <tr1/cmath> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of <inttypes.h> functions (NB: doesn't make
+  # sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1).
+  ac_c99_inttypes_tr1=no;
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+    AC_MSG_CHECKING([for ISO C99 support to TR1 in <inttypes.h>])
+    AC_TRY_COMPILE([#include <inttypes.h>],
+		   [intmax_t i, numer, denom, base;
+		    const char* s;
+		    char** endptr;
+		    intmax_t ret = imaxabs(i);
+		    imaxdiv_t dret = imaxdiv(numer, denom);
+		    ret = strtoimax(s, endptr, base);
+		    uintmax_t uret = strtoumax(s, endptr, base);
+		   ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no])
+  fi
+  AC_MSG_RESULT($ac_c99_inttypes_tr1)
+  if test x"$ac_c99_inttypes_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_TR1, 1,
+	      [Define if C99 functions in <inttypes.h> should be imported in
+	      <tr1/cinttypes> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of whcar_t <inttypes.h> functions (NB: doesn't
+  # make sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1).
+  ac_c99_inttypes_wchar_t_tr1=no;
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+    AC_MSG_CHECKING([for wchar_t ISO C99 support to TR1 in <inttypes.h>])
+    AC_TRY_COMPILE([#include <inttypes.h>],
+		   [intmax_t base;
+		    const wchar_t* s;
+		    wchar_t** endptr;
+		    intmax_t ret = wcstoimax(s, endptr, base);
+		    uintmax_t uret = wcstoumax(s, endptr, base);
+		   ],[ac_c99_inttypes_wchar_t_tr1=yes],
+		     [ac_c99_inttypes_wchar_t_tr1=no])
+  fi
+  AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1)
+  if test x"$ac_c99_inttypes_wchar_t_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1, 1,
+	      [Define if wchar_t C99 functions in <inttypes.h> should be
+	      imported in <tr1/cinttypes> in namespace std::tr1.])
+  fi
+
+  # Check for the existence of the <stdbool.h> header.
+  AC_CHECK_HEADERS(stdbool.h)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+dnl
+dnl Check whether "/dev/random" and "/dev/urandom" are available for the
+dnl random_device of "TR1" (Chapter 5.1, "Random number generation").
+dnl
+AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [
+
+  AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for TR1 random_device])
+  AC_CACHE_VAL(glibcxx_cv_random_tr1, [
+    if test -r /dev/random && test -r /dev/urandom; then
+      glibcxx_cv_random_tr1=yes;
+    else
+      glibcxx_cv_random_tr1=no;
+    fi
+  ])
+  AC_MSG_RESULT($glibcxx_cv_random_tr1)
+
+  if test x"$glibcxx_cv_random_tr1" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1, 1,
+	      [Define if /dev/random and /dev/urandom are available for
+	       the random_device of TR1 (Chapter 5.1).])
+  fi
+
+])
+
+dnl
+dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants.
+dnl
+AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [
+
+  AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [
+  AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]],
+		 [#include <stdio.h>],
+		 [AC_MSG_ERROR([computing EOF failed])])
+  ])
+  AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof,
+		     [Define to the value of the EOF integer constant.])
+
+  AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [
+  AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]],
+		 [#include <stdio.h>],
+		 [AC_MSG_ERROR([computing SEEK_CUR failed])])
+  ])
+  AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur,
+		     [Define to the value of the SEEK_CUR integer constant.])
+
+  AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [
+  AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]],
+		 [#include <stdio.h>],
+		 [AC_MSG_ERROR([computing SEEK_END failed])])
+  ])
+  AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end,
+		     [Define to the value of the SEEK_END integer constant.])
+])
+
+dnl
+dnl Check whether macros, etc are present for <system_error>
+dnl
+AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [
+
+m4_pushdef([n_syserr], [1])dnl
+m4_foreach([syserr], [EOWNERDEAD, ENOTRECOVERABLE, ENOLINK, EPROTO, ENODATA,
+		      ENOSR, ENOSTR, ETIME, EBADMSG, ECANCELED,
+		      EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY],
+[m4_pushdef([SYSERR], m4_toupper(syserr))dnl
+AC_MSG_CHECKING([for syserr])
+AC_CACHE_VAL([glibcxx_cv_system_error[]n_syserr], [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]],
+				   [int i = syserr;])],
+		  [glibcxx_cv_system_error[]n_syserr=yes],
+		  [glibcxx_cv_system_error[]n_syserr=no])
+])
+AC_MSG_RESULT([$glibcxx_cv_system_error[]n_syserr])
+if test x"$glibcxx_cv_system_error[]n_syserr" = x"yes"; then
+  AC_DEFINE([HAVE_]SYSERR, 1, [Define if ]syserr[ exists.])
+fi
+m4_define([n_syserr], m4_incr(n_syserr))dnl
+m4_popdef([SYSERR])dnl
+])
+m4_popdef([n_syserr])dnl
+])
+
+dnl
+dnl Check for what type of C headers to use.
+dnl
+dnl --enable-cheaders= [does stuff].
+dnl --disable-cheaders [does not do anything, really].
+dnl  +  Usage:  GLIBCXX_ENABLE_CHEADERS[(DEFAULT)]
+dnl       Where DEFAULT is either 'c' or 'c_std' or 'c_global'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_CHEADERS], [
+  GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]],
+    [construct "C" headers for g++], [permit c|c_std|c_global])
+  AC_MSG_NOTICE("C" header strategy set to $enable_cheaders)
+
+  C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders
+
+  # Allow overrides to configure.host here.
+  if test $enable_cheaders = c_global; then
+     c_compatibility=yes
+  fi
+
+  AC_SUBST(C_INCLUDE_DIR)
+  GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C, test $enable_cheaders = c)
+  GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_STD, test $enable_cheaders = c_std)
+  GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_GLOBAL, test $enable_cheaders = c_global)
+  GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_COMPATIBILITY, test $c_compatibility = yes)
+])
+
+
+dnl
+dnl Check for which locale library to use.  The choice is mapped to
+dnl a subdirectory of config/locale.
+dnl
+dnl Default is generic.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
+  GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]],
+    [use MODEL for target locale package],
+    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
+
+  # Deal with gettext issues.  Default to not using it (=no) until we detect
+  # support for it later.  Let the user turn it off via --e/d, but let that
+  # default to on for easier handling.
+  USE_NLS=no
+  AC_ARG_ENABLE(nls,
+    AC_HELP_STRING([--enable-nls],[use Native Language Support (default)]),
+    [],
+    [enable_nls=yes])
+
+  # Either a known packaage, or "auto"
+  if test $enable_clocale = no || test $enable_clocale = yes; then
+     enable_clocale=auto
+  fi
+  enable_clocale_flag=$enable_clocale
+
+  # Probe for locale model to use if none specified.
+  # Default to "generic".
+  if test $enable_clocale_flag = auto; then
+    case ${target_os} in
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+	enable_clocale_flag=gnu
+	;;
+      darwin* | freebsd*)
+	enable_clocale_flag=darwin
+	;;
+      *)
+	enable_clocale_flag=generic
+	;;
+    esac
+  fi
+
+  # Sanity check model, and test for special functionality.
+  if test $enable_clocale_flag = gnu; then
+    AC_EGREP_CPP([_GLIBCXX_ok], [
+    #include <features.h>
+    #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
+      _GLIBCXX_ok
+    #endif
+    ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
+
+    # Set it to scream when it hurts.
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS="-Wimplicit-function-declaration -Werror"
+
+    # Use strxfrm_l if available.
+    AC_TRY_COMPILE([#define _GNU_SOURCE 1
+     		    #include <string.h>
+		    #include <locale.h>],
+		    [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);],
+		    AC_DEFINE(HAVE_STRXFRM_L, 1,
+		    [Define if strxfrm_l is available in <string.h>.]),)
+
+    # Use strerror_l if available.
+    AC_TRY_COMPILE([#define _GNU_SOURCE 1
+		    #include <string.h>
+		    #include <locale.h>],
+		    [__locale_t loc; strerror_l(5, loc);],
+		    AC_DEFINE(HAVE_STRERROR_L, 1,
+		    [Define if strerror_l is available in <string.h>.]),)
+
+    CFLAGS="$ac_save_CFLAGS"
+  fi
+
+  # Perhaps use strerror_r if available, and strerror_l isn't.
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS="-Wimplicit-function-declaration -Werror"
+  AC_TRY_COMPILE([#define _GNU_SOURCE 1
+	     	  #include <string.h>
+		  #include <locale.h>],
+		  [char s[128]; strerror_r(5, s, 128);],
+		  AC_DEFINE(HAVE_STRERROR_R, 1,
+		  [Define if strerror_r is available in <string.h>.]),)
+  CFLAGS="$ac_save_CFLAGS"
+
+  # Set configure bits for specified locale package
+  AC_MSG_CHECKING([for C locale to use])
+  case ${enable_clocale_flag} in
+    generic)
+      AC_MSG_RESULT(generic)
+
+      CLOCALE_H=config/locale/generic/c_locale.h
+      CLOCALE_CC=config/locale/generic/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/generic/ctype_members.cc
+      CMESSAGES_H=config/locale/generic/messages_members.h
+      CMESSAGES_CC=config/locale/generic/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+    darwin)
+      AC_MSG_RESULT(darwin or freebsd)
+
+      CLOCALE_H=config/locale/generic/c_locale.h
+      CLOCALE_CC=config/locale/generic/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/darwin/ctype_members.cc
+      CMESSAGES_H=config/locale/generic/messages_members.h
+      CMESSAGES_CC=config/locale/generic/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+
+    gnu)
+      AC_MSG_RESULT(gnu)
+
+      # Declare intention to use gettext, and add support for specific
+      # languages.
+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
+      ALL_LINGUAS="de fr"
+
+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
+	USE_NLS=yes
+      fi
+      # Export the build objects.
+      for ling in $ALL_LINGUAS; do \
+	glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
+	glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
+      done
+      AC_SUBST(glibcxx_MOFILES)
+      AC_SUBST(glibcxx_POFILES)
+
+      CLOCALE_H=config/locale/gnu/c_locale.h
+      CLOCALE_CC=config/locale/gnu/c_locale.cc
+      CCODECVT_CC=config/locale/gnu/codecvt_members.cc
+      CCOLLATE_CC=config/locale/gnu/collate_members.cc
+      CCTYPE_CC=config/locale/gnu/ctype_members.cc
+      CMESSAGES_H=config/locale/gnu/messages_members.h
+      CMESSAGES_CC=config/locale/gnu/messages_members.cc
+      CMONEY_CC=config/locale/gnu/monetary_members.cc
+      CNUMERIC_CC=config/locale/gnu/numeric_members.cc
+      CTIME_H=config/locale/gnu/time_members.h
+      CTIME_CC=config/locale/gnu/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
+      ;;
+    ieee_1003.1-2001)
+      AC_MSG_RESULT(IEEE 1003.1)
+
+      CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
+      CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/generic/ctype_members.cc
+      CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
+      CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+  esac
+
+  # This is where the testsuite looks for locale catalogs, using the
+  # -DLOCALEDIR define during testsuite compilation.
+  glibcxx_localedir=${glibcxx_builddir}/po/share/locale
+  AC_SUBST(glibcxx_localedir)
+
+  # A standalone libintl (e.g., GNU libintl) may be in use.
+  if test $USE_NLS = yes; then
+    AC_CHECK_HEADERS([libintl.h], [], USE_NLS=no)
+    AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no)
+  fi
+  if test $USE_NLS = yes; then
+    AC_DEFINE(_GLIBCXX_USE_NLS, 1,
+	      [Define if NLS translations are to be used.])
+  fi
+
+  AC_SUBST(USE_NLS)
+  AC_SUBST(CLOCALE_H)
+  AC_SUBST(CMESSAGES_H)
+  AC_SUBST(CCODECVT_CC)
+  AC_SUBST(CCOLLATE_CC)
+  AC_SUBST(CCTYPE_CC)
+  AC_SUBST(CMESSAGES_CC)
+  AC_SUBST(CMONEY_CC)
+  AC_SUBST(CNUMERIC_CC)
+  AC_SUBST(CTIME_H)
+  AC_SUBST(CTIME_CC)
+  AC_SUBST(CLOCALE_CC)
+  AC_SUBST(CLOCALE_INTERNAL_H)
+])
+
+
+dnl
+dnl Check for which std::allocator base class to use.  The choice is
+dnl mapped from a subdirectory of include/ext.
+dnl
+dnl Default is new.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [
+  AC_MSG_CHECKING([for std::allocator base class])
+  GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]],
+    [use KIND for target std::allocator base],
+    [permit new|malloc|mt|bitmap|pool|yes|no|auto])
+
+  # If they didn't use this option switch, or if they specified --enable
+  # with no specific model, we'll have to look for one.  If they
+  # specified --disable (???), do likewise.
+  if test $enable_libstdcxx_allocator = no ||
+     test $enable_libstdcxx_allocator = yes;
+  then
+     enable_libstdcxx_allocator=auto
+  fi
+
+  # Either a known package, or "auto". Auto implies the default choice
+  # for a particular platform.
+  enable_libstdcxx_allocator_flag=$enable_libstdcxx_allocator
+
+  # Probe for host-specific support if no specific model is specified.
+  # Default to "new".
+  if test $enable_libstdcxx_allocator_flag = auto; then
+    case ${target_os} in
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+	enable_libstdcxx_allocator_flag=new
+	;;
+      *)
+	enable_libstdcxx_allocator_flag=new
+	;;
+    esac
+  fi
+  AC_MSG_RESULT($enable_libstdcxx_allocator_flag)
+
+
+  # Set configure bits for specified locale package
+  case ${enable_libstdcxx_allocator_flag} in
+    bitmap)
+      ALLOCATOR_H=config/allocator/bitmap_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::bitmap_allocator
+      ;;
+    malloc)
+      ALLOCATOR_H=config/allocator/malloc_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::malloc_allocator
+      ;;
+    mt)
+      ALLOCATOR_H=config/allocator/mt_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::__mt_alloc
+      ;;
+    new)
+      ALLOCATOR_H=config/allocator/new_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::new_allocator
+      ;;
+    pool)
+      ALLOCATOR_H=config/allocator/pool_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::__pool_alloc
+      ;;
+  esac
+
+  AC_SUBST(ALLOCATOR_H)
+  AC_SUBST(ALLOCATOR_NAME)
+])
+
+
+dnl
+dnl Check for whether the Boost-derived checks should be turned on.
+dnl
+dnl --enable-concept-checks turns them on.
+dnl --disable-concept-checks leaves them off.
+dnl  +  Usage:  GLIBCXX_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_CONCEPT_CHECKS], [
+  GLIBCXX_ENABLE(concept-checks,$1,,[use Boost-derived template checks])
+  if test $enable_concept_checks = yes; then
+    AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1,
+	      [Define to use concept checking code from the boost libraries.])
+  fi
+])
+
+dnl
+dnl Use extern templates.
+dnl
+dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1
+dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0
+
+dnl  +  Usage:  GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)]
+dnl       Where DEFAULT is `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [
+
+  GLIBCXX_ENABLE(extern-template,$1,,[enable extern template])
+
+  AC_MSG_CHECKING([for extern template support])
+  AC_MSG_RESULT([$enable_extern_template])
+
+  GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes)
+])
+
+dnl
+dnl Check for parallel mode pre-requisites, including OpenMP support.
+dnl
+dnl  +  Usage:  GLIBCXX_ENABLE_PARALLEL
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_PARALLEL], [
+
+  enable_parallel=no;
+
+  # See if configured libgomp/omp.h exists. (libgomp may be in
+  # noconfigdirs but not explicitly disabled.)
+  if echo " ${TARGET_CONFIGDIRS} " | grep " libgomp " > /dev/null 2>&1 ; then
+    enable_parallel=yes;
+  else
+    AC_MSG_NOTICE([target-libgomp not built])
+  fi
+
+  AC_MSG_CHECKING([for parallel mode support])
+  AC_MSG_RESULT([$enable_parallel])
+  GLIBCXX_CONDITIONAL(ENABLE_PARALLEL, test $enable_parallel = yes)
+])
+
+
+dnl
+dnl Check for which I/O library to use:  stdio, or something specific.
+dnl
+dnl Default is stdio.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_CSTDIO], [
+  AC_MSG_CHECKING([for underlying I/O to use])
+  GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]],
+    [use target-specific I/O package], [permit stdio])
+
+  # Now that libio has been removed, you can have any color you want as long
+  # as it's black.  This is one big no-op until other packages are added, but
+  # showing the framework never hurts.
+  case ${enable_cstdio} in
+    stdio)
+      CSTDIO_H=config/io/c_io_stdio.h
+      BASIC_FILE_H=config/io/basic_file_stdio.h
+      BASIC_FILE_CC=config/io/basic_file_stdio.cc
+      AC_MSG_RESULT(stdio)
+      ;;
+  esac
+
+  AC_SUBST(CSTDIO_H)
+  AC_SUBST(BASIC_FILE_H)
+  AC_SUBST(BASIC_FILE_CC)
+])
+
+
+dnl
+dnl Check for "unusual" flags to pass to the compiler while building.
+dnl
+dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
+dnl     experimental flags such as -fpch, -fIMI, -Dfloat=char, etc.
+dnl --disable-cxx-flags passes nothing.
+dnl  +  See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
+dnl         http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
+dnl         http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
+dnl  +  Usage:  GLIBCXX_ENABLE_CXX_FLAGS(default flags)
+dnl       If "default flags" is an empty string, the effect is the same
+dnl       as --disable or --enable=no.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_CXX_FLAGS], [dnl
+  AC_MSG_CHECKING([for extra compiler flags for building])
+  GLIBCXX_ENABLE(cxx-flags,$1,[=FLAGS],
+    [pass compiler FLAGS when building library],
+    [case "x$enable_cxx_flags" in
+      xno | x)   enable_cxx_flags= ;;
+      x-*)       ;;
+      *)         AC_MSG_ERROR(_g_switch needs compiler flags as arguments) ;;
+     esac])
+
+  # Run through flags (either default or command-line) and set anything
+  # extra (e.g., #defines) that must accompany particular g++ options.
+  if test -n "$enable_cxx_flags"; then
+    for f in $enable_cxx_flags; do
+      case "$f" in
+	-fhonor-std)  ;;
+	-*)  ;;
+	*)   # and we're trying to pass /what/ exactly?
+	     AC_MSG_ERROR([compiler flags start with a -]) ;;
+      esac
+    done
+  fi
+
+  EXTRA_CXX_FLAGS="$enable_cxx_flags"
+  AC_MSG_RESULT($EXTRA_CXX_FLAGS)
+  AC_SUBST(EXTRA_CXX_FLAGS)
+])
+
+
+dnl
+dnl Check to see if debugging libraries are to be built.
+dnl
+dnl --enable-libstdcxx-debug
+dnl builds a separate set of debugging libraries in addition to the
+dnl normal (shared, static) libstdc++ binaries.
+dnl
+dnl --disable-libstdcxx-debug
+dnl builds only one (non-debug) version of libstdc++.
+dnl
+dnl --enable-libstdcxx-debug-flags=FLAGS
+dnl iff --enable-debug == yes, then use FLAGS to build the debug library.
+dnl
+dnl  +  Usage:  GLIBCXX_ENABLE_DEBUG[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [
+  AC_MSG_CHECKING([for additional debug build])
+  GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library])
+  AC_MSG_RESULT($enable_libstdcxx_debug)
+  GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes)
+])
+
+
+dnl
+dnl Check for explicit debug flags.
+dnl
+dnl --enable-libstdcxx-debug-flags='-O1'
+dnl is a general method for passing flags to be used when
+dnl building debug libraries with --enable-debug.
+dnl
+dnl --disable-libstdcxx-debug-flags does nothing.
+dnl  +  Usage:  GLIBCXX_ENABLE_DEBUG_FLAGS(default flags)
+dnl       If "default flags" is an empty string, the effect is the same
+dnl       as --disable or --enable=no.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_DEBUG_FLAGS], [
+  GLIBCXX_ENABLE(libstdcxx-debug-flags,[$1],[=FLAGS],
+    [pass compiler FLAGS when building debug library],
+    [case "x$enable_libstdcxx_debug_flags" in
+      xno | x)    enable_libstdcxx_debug_flags= ;;
+      x-*)        ;;
+      *)          AC_MSG_ERROR(_g_switch needs compiler flags as arguments) ;;
+     esac])
+
+  # Option parsed, now set things appropriately
+  DEBUG_FLAGS="$enable_libstdcxx_debug_flags"
+  AC_SUBST(DEBUG_FLAGS)
+
+  AC_MSG_NOTICE([Debug build flags set to $DEBUG_FLAGS])
+])
+
+
+dnl
+dnl Check if the user only wants a freestanding library implementation.
+dnl
+dnl --disable-hosted-libstdcxx will turn off most of the library build,
+dnl installing only the headers required by [17.4.1.3] and the language
+dnl support library.  More than that will be built (to keep the Makefiles
+dnl conveniently clean), but not installed.
+dnl
+dnl Sets:
+dnl  is_hosted  (yes/no)
+dnl
+dnl Defines:
+dnl  _GLIBCXX_HOSTED   (always defined, either to 1 or 0)
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
+  AC_ARG_ENABLE([hosted-libstdcxx],
+    AC_HELP_STRING([--disable-hosted-libstdcxx],
+		   [only build freestanding C++ runtime support]),,
+    [case "$host" in
+	arm*-*-symbianelf*)
+	    enable_hosted_libstdcxx=no
+	    ;;
+	*)
+	    enable_hosted_libstdcxx=yes
+	    ;;
+     esac])
+  if test "$enable_hosted_libstdcxx" = no; then
+    AC_MSG_NOTICE([Only freestanding libraries will be built])
+    is_hosted=no
+    hosted_define=0
+    enable_abi_check=no
+    enable_libstdcxx_pch=no
+  else
+    is_hosted=yes
+    hosted_define=1
+  fi
+  GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes)
+  AC_DEFINE_UNQUOTED(_GLIBCXX_HOSTED, $hosted_define,
+    [Define to 1 if a full hosted library is built, or 0 if freestanding.])
+])
+
+
+dnl
+dnl Check for template specializations for the 'long long' type.
+dnl The result determines only whether 'long long' I/O is enabled; things
+dnl like numeric_limits<> specializations are always available.
+dnl
+dnl --enable-long-long defines _GLIBCXX_USE_LONG_LONG
+dnl --disable-long-long leaves _GLIBCXX_USE_LONG_LONG undefined
+dnl  +  Usage:  GLIBCXX_ENABLE_LONG_LONG[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_LONG_LONG], [
+  GLIBCXX_ENABLE(long-long,$1,,[enable template specializations for 'long long'])
+  if test $enable_long_long = yes; then
+    AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1,
+	      [Define if code specialized for long long should be used.])
+  fi
+  AC_MSG_CHECKING([for enabled long long specializations])
+  AC_MSG_RESULT([$enable_long_long])
+])
+
+
+dnl
+dnl Check for decimal floating point.
+dnl See:
+dnl http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html#Decimal-Float
+dnl
+dnl This checks to see if the host supports decimal floating point types.
+dnl
+dnl Defines:
+dnl  _GLIBCXX_USE_DECIMAL_FLOAT
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_DECIMAL_FLOAT], [
+
+  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # unnecessary for this test.
+
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+  _Decimal32 d1;
+  _Decimal64 d2;
+  _Decimal128 d3;
+  return 0;
+}
+EOF
+
+    AC_MSG_CHECKING([for ISO/IEC TR 24733 ])
+    if AC_TRY_EVAL(ac_compile); then
+      AC_DEFINE(_GLIBCXX_USE_DECIMAL_FLOAT, 1,
+      [Define if ISO/IEC TR 24733 decimal floating point types are supported on this host.])
+      enable_dfp=yes
+    else
+      enable_dfp=no
+    fi
+    AC_MSG_RESULT($enable_dfp)
+    rm -f conftest*
+])
+
+dnl
+dnl Check for template specializations for the 'wchar_t' type.
+dnl
+dnl --enable-wchar_t defines _GLIBCXX_USE_WCHAR_T
+dnl --disable-wchar_t leaves _GLIBCXX_USE_WCHAR_T undefined
+dnl  +  Usage:  GLIBCXX_ENABLE_WCHAR_T[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.
+dnl
+dnl Necessary support must also be present.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
+  GLIBCXX_ENABLE(wchar_t,$1,,[enable template specializations for 'wchar_t'])
+
+  # Test wchar.h for mbstate_t, which is needed for char_traits and fpos.
+  AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
+  AC_MSG_CHECKING([for mbstate_t])
+  AC_TRY_COMPILE([#include <wchar.h>],
+  [mbstate_t teststate;],
+  have_mbstate_t=yes, have_mbstate_t=no)
+  AC_MSG_RESULT($have_mbstate_t)
+  if test x"$have_mbstate_t" = xyes; then
+    AC_DEFINE(HAVE_MBSTATE_T,1,[Define if mbstate_t exists in wchar.h.])
+  fi
+
+  # Test it always, for use in GLIBCXX_ENABLE_C99, together with
+  # ac_has_wchar_h.
+  AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
+
+  if test x"$enable_wchar_t" = x"yes"; then
+
+    AC_LANG_SAVE
+    AC_LANG_CPLUSPLUS
+
+    if test x"$ac_has_wchar_h" = xyes &&
+       test x"$ac_has_wctype_h" = xyes; then
+      AC_TRY_COMPILE([#include <wchar.h>
+		      #include <stddef.h>
+		      wint_t i;
+		      long l = WEOF;
+		      long j = WCHAR_MIN;
+		      long k = WCHAR_MAX;
+		      namespace test
+		      {
+			using ::btowc;
+			using ::fgetwc;
+			using ::fgetws;
+			using ::fputwc;
+			using ::fputws;
+			using ::fwide;
+			using ::fwprintf;
+			using ::fwscanf;
+			using ::getwc;
+			using ::getwchar;
+ 			using ::mbrlen;
+			using ::mbrtowc;
+			using ::mbsinit;
+			using ::mbsrtowcs;
+			using ::putwc;
+			using ::putwchar;
+			using ::swprintf;
+			using ::swscanf;
+			using ::ungetwc;
+			using ::vfwprintf;
+			using ::vswprintf;
+			using ::vwprintf;
+			using ::wcrtomb;
+			using ::wcscat;
+			using ::wcschr;
+			using ::wcscmp;
+			using ::wcscoll;
+			using ::wcscpy;
+			using ::wcscspn;
+			using ::wcsftime;
+			using ::wcslen;
+			using ::wcsncat;
+			using ::wcsncmp;
+			using ::wcsncpy;
+			using ::wcspbrk;
+			using ::wcsrchr;
+			using ::wcsrtombs;
+			using ::wcsspn;
+			using ::wcsstr;
+			using ::wcstod;
+			using ::wcstok;
+			using ::wcstol;
+			using ::wcstoul;
+			using ::wcsxfrm;
+			using ::wctob;
+			using ::wmemchr;
+			using ::wmemcmp;
+			using ::wmemcpy;
+			using ::wmemmove;
+			using ::wmemset;
+			using ::wprintf;
+			using ::wscanf;
+		      }
+		     ],[],[], [enable_wchar_t=no])
+    else
+      enable_wchar_t=no
+    fi
+
+    AC_LANG_RESTORE
+  fi
+
+  if test x"$enable_wchar_t" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_USE_WCHAR_T, 1,
+	      [Define if code specialized for wchar_t should be used.])
+  fi
+
+  AC_MSG_CHECKING([for enabled wchar_t specializations])
+  AC_MSG_RESULT([$enable_wchar_t])
+])
+
+
+dnl
+dnl Check to see if building and using a C++ precompiled header can be done.
+dnl
+dnl --enable-libstdcxx-pch=yes
+dnl default, this shows intent to use stdc++.h.gch If it looks like it
+dnl may work, after some light-hearted attempts to puzzle out compiler
+dnl support, flip bits on in include/Makefile.am
+dnl
+dnl --disable-libstdcxx-pch
+dnl turns off attempts to use or build stdc++.h.gch.
+dnl
+dnl Substs:
+dnl  glibcxx_PCHFLAGS
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_PCH], [
+  GLIBCXX_ENABLE(libstdcxx-pch,$1,,[build pre-compiled libstdc++ headers])
+  if test $enable_libstdcxx_pch = yes; then
+    AC_CACHE_CHECK([for compiler with PCH support],
+      [glibcxx_cv_prog_CXX_pch],
+      [ac_save_CXXFLAGS="$CXXFLAGS"
+       CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated"
+       AC_LANG_SAVE
+       AC_LANG_CPLUSPLUS
+       echo '#include <math.h>' > conftest.h
+       if $CXX $CXXFLAGS $CPPFLAGS -x c++-header conftest.h \
+			  -o conftest.h.gch 1>&5 2>&1 &&
+		echo '#error "pch failed"' > conftest.h &&
+	  echo '#include "conftest.h"' > conftest.cc &&
+	       $CXX -c $CXXFLAGS $CPPFLAGS conftest.cc 1>&5 2>&1 ;
+       then
+	 glibcxx_cv_prog_CXX_pch=yes
+       else
+	 glibcxx_cv_prog_CXX_pch=no
+       fi
+       rm -f conftest*
+       CXXFLAGS=$ac_save_CXXFLAGS
+       AC_LANG_RESTORE
+      ])
+    enable_libstdcxx_pch=$glibcxx_cv_prog_CXX_pch
+  fi
+
+  AC_MSG_CHECKING([for enabled PCH])
+  AC_MSG_RESULT([$enable_libstdcxx_pch])
+
+  GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_PCH, test $enable_libstdcxx_pch = yes)
+  if test $enable_libstdcxx_pch = yes; then
+    glibcxx_PCHFLAGS="-include bits/stdc++.h"
+  else
+    glibcxx_PCHFLAGS=""
+  fi
+  AC_SUBST(glibcxx_PCHFLAGS)
+])
+
+
+dnl
+dnl Check for atomic builtins.
+dnl See:
+dnl http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins
+dnl
+dnl This checks to see if the host supports the compiler-generated
+dnl builtins for atomic operations for various integral sizes. Note, this
+dnl is intended to be an all-or-nothing switch, so all the atomic operations
+dnl that are used should be checked.
+dnl
+dnl Note:
+dnl libgomp and libgfortran use a link test, see CHECK_SYNC_FETCH_AND_ADD.
+dnl
+dnl Defines:
+dnl  _GLIBCXX_ATOMIC_BUILTINS_1
+dnl  _GLIBCXX_ATOMIC_BUILTINS_2
+dnl  _GLIBCXX_ATOMIC_BUILTINS_4
+dnl  _GLIBCXX_ATOMIC_BUILTINS_8
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  old_CXXFLAGS="$CXXFLAGS"
+
+  # Do link tests if possible, instead asm tests, limited to some platforms
+  # see discussion in PR target/40134, PR libstdc++/40133 and the thread
+  # starting at http://gcc.gnu.org/ml/gcc-patches/2009-07/msg00322.html
+  atomic_builtins_link_tests=no
+  if test x$gcc_no_link != xyes; then
+    # Can do link tests. Limit to some tested platforms
+    case "$host" in
+      *-*-linux* | *-*-uclinux* | *-*-kfreebsd*-gnu | *-*-gnu*)
+	atomic_builtins_link_tests=yes
+	;;
+    esac
+  fi
+
+  if test x$atomic_builtins_link_tests = xyes; then
+
+  # Do link tests.
+
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  AC_MSG_CHECKING([for atomic builtins for bool])
+  AC_CACHE_VAL(glibcxx_cv_atomic_bool, [
+    AC_TRY_LINK(
+      [ ],
+      [typedef bool atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();],
+      [glibcxx_cv_atomic_bool=yes],
+      [glibcxx_cv_atomic_bool=no])
+  ])
+  if test $glibcxx_cv_atomic_bool = yes; then
+    AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1,
+      [Define if builtin atomic operations for bool are supported on this host.])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_atomic_bool)
+
+  AC_MSG_CHECKING([for atomic builtins for short])
+  AC_CACHE_VAL(glibcxx_cv_atomic_short, [
+    AC_TRY_LINK(
+      [ ],
+      [typedef short atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();],
+      [glibcxx_cv_atomic_short=yes],
+      [glibcxx_cv_atomic_short=no])
+  ])
+  if test $glibcxx_cv_atomic_short = yes; then
+    AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1,
+      [Define if builtin atomic operations for short are supported on this host.])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_atomic_short)
+
+  AC_MSG_CHECKING([for atomic builtins for int])
+  AC_CACHE_VAL(glibcxx_cv_atomic_int, [
+    AC_TRY_LINK(
+      [ ],
+      [typedef int atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();],
+      [glibcxx_cv_atomic_int=yes],
+      [glibcxx_cv_atomic_int=no])
+  ])
+  if test $glibcxx_cv_atomic_int = yes; then
+    AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1,
+      [Define if builtin atomic operations for int are supported on this host.])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_atomic_int)
+
+  AC_MSG_CHECKING([for atomic builtins for long long])
+  AC_CACHE_VAL(glibcxx_cv_atomic_long_long, [
+    AC_TRY_LINK(
+      [ ],
+      [typedef long long atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();],
+      [glibcxx_cv_atomic_long_long=yes],
+      [glibcxx_cv_atomic_long_long=no])
+  ])
+  if test $glibcxx_cv_atomic_long_long = yes; then
+    AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1,
+      [Define if builtin atomic operations for long long are supported on this host.])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_atomic_long_long)
+
+  else
+
+  # Do asm tests.
+
+  # Compile unoptimized.
+  CXXFLAGS='-O0 -S'
+
+  # Fake what AC_TRY_COMPILE does.
+
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+  typedef bool atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    AC_MSG_CHECKING([for atomic builtins for bool])
+    if AC_TRY_EVAL(ac_compile); then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_bool=no
+      else
+      AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1,
+      [Define if builtin atomic operations for bool are supported on this host.])
+	glibcxx_cv_atomic_bool=yes
+      fi
+    fi
+    AC_MSG_RESULT($glibcxx_cv_atomic_bool)
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+  typedef short atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    AC_MSG_CHECKING([for atomic builtins for short])
+    if AC_TRY_EVAL(ac_compile); then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_short=no
+      else
+      AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1,
+      [Define if builtin atomic operations for short are supported on this host.])
+	glibcxx_cv_atomic_short=yes
+      fi
+    fi
+    AC_MSG_RESULT($glibcxx_cv_atomic_short)
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+  // NB: _Atomic_word not necessarily int.
+  typedef int atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    AC_MSG_CHECKING([for atomic builtins for int])
+    if AC_TRY_EVAL(ac_compile); then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_int=no
+      else
+      AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1,
+	[Define if builtin atomic operations for int are supported on this host.])
+	glibcxx_cv_atomic_int=yes
+      fi
+    fi
+    AC_MSG_RESULT($glibcxx_cv_atomic_int)
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+  typedef long long atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    AC_MSG_CHECKING([for atomic builtins for long long])
+    if AC_TRY_EVAL(ac_compile); then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_long_long=no
+      else
+      AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1,
+      [Define if builtin atomic operations for long long are supported on this host.])
+	glibcxx_cv_atomic_long_long=yes
+      fi
+    fi
+    AC_MSG_RESULT($glibcxx_cv_atomic_long_long)
+    rm -f conftest*
+
+  fi
+
+  CXXFLAGS="$old_CXXFLAGS"
+  AC_LANG_RESTORE
+
+  # Set atomicity_dir to builtins if either of above tests pass.
+  if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then
+    atomicity_dir=cpu/generic/atomicity_builtins
+  fi
+
+  # If still generic, set to mutex.
+  if test $atomicity_dir = "cpu/generic" ; then
+    atomicity_dir=cpu/generic/atomicity_mutex
+    AC_MSG_WARN([No native atomic operations are provided for this platform.])
+      if test "x$target_thread_file" = xsingle; then
+	AC_MSG_WARN([They cannot be faked when thread support is disabled.])
+	AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
+      else
+	AC_MSG_WARN([They will be faked using a mutex.])
+	AC_MSG_WARN([Performance of certain classes will degrade as a result.])
+      fi
+  fi
+
+])
+
+
+dnl
+dnl Check for exception handling support.  If an explicit enable/disable
+dnl sjlj exceptions is given, we don't have to detect.  Otherwise the
+dnl target may or may not support call frame exceptions.
+dnl
+dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
+dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
+dnl Neither one forces an attempt at detection.
+dnl
+dnl Defines:
+dnl  _GLIBCXX_SJLJ_EXCEPTIONS if the compiler is configured for it
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_SJLJ_EXCEPTIONS], [
+  AC_MSG_CHECKING([for exception model to use])
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  GLIBCXX_ENABLE(sjlj-exceptions,auto,,
+    [force use of builtin_setjmp for exceptions],
+    [permit yes|no|auto])
+
+  if test $enable_sjlj_exceptions = auto; then
+    # Botheration.  Now we've got to detect the exception model.  Link tests
+    # against libgcc.a are problematic since we've not been given proper -L
+    # bits for single-tree newlib and libgloss.
+    #
+    # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
+    cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+struct S { ~S(); };
+void bar();
+void foo()
+{
+  S s;
+  bar();
+}
+EOF
+    old_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS=-S
+    if AC_TRY_EVAL(ac_compile); then
+      if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=yes
+      elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=no
+      elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=no
+      fi
+    fi
+    CXXFLAGS="$old_CXXFLAGS"
+    rm -f conftest*
+  fi
+
+  # This is a tad weird, for hysterical raisins.  We have to map
+  # enable/disable to two different models.
+  case $enable_sjlj_exceptions in
+    yes)
+      AC_DEFINE(_GLIBCXX_SJLJ_EXCEPTIONS, 1,
+	[Define if the compiler is configured for setjmp/longjmp exceptions.])
+      ac_exception_model_name=sjlj
+      ;;
+    no)
+      ac_exception_model_name="call frame"
+      ;;
+    *)
+      AC_MSG_ERROR([unable to detect exception model])
+      ;;
+  esac
+ AC_LANG_RESTORE
+ AC_MSG_RESULT($ac_exception_model_name)
+])
+
+
+dnl
+dnl Allow visibility attributes to be used on namespaces, objects, etc.
+dnl
+dnl --enable-visibility enables attempt to use visibility attributes.
+dnl --disable-visibility turns off all use of visibility attributes.
+dnl  +  Usage:  GLIBCXX_ENABLE_VISIBILITY[(DEFAULT)]
+dnl       Where DEFAULT is 'yes'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_VISIBILITY], [
+GLIBCXX_ENABLE(visibility,$1,,[enables visibility safe usage])
+
+if test x$enable_visibility = xyes ; then
+  dnl all hail libgfortran
+  dnl Check whether the target supports hidden visibility.
+  AC_CACHE_CHECK([whether the target supports hidden visibility],
+		 glibcxx_cv_have_attribute_visibility, [
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror"
+  AC_TRY_COMPILE([void __attribute__((visibility("hidden"))) foo(void) { }],
+		 [], glibcxx_cv_have_attribute_visibility=yes,
+		 glibcxx_cv_have_attribute_visibility=no)
+  CFLAGS="$save_CFLAGS"])
+  if test $glibcxx_cv_have_attribute_visibility = no; then
+    enable_visibility=no
+  fi
+fi
+
+GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_visibility = yes)
+AC_MSG_NOTICE([visibility supported: $enable_visibility])
+])
+
+
+dnl
+dnl Add version tags to symbols in shared library (or not), additionally
+dnl marking other symbols as private/local (or not).
+dnl
+dnl --enable-symvers=style adds a version script to the linker call when
+dnl       creating the shared library.  The choice of version script is
+dnl       controlled by 'style'.
+dnl --disable-symvers does not.
+dnl  +  Usage:  GLIBCXX_ENABLE_SYMVERS[(DEFAULT)]
+dnl       Where DEFAULT is either 'yes' or 'no'.  Passing `yes' tries to
+dnl       choose a default style based on linker characteristics.  Passing
+dnl       'no' disables versioning.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_SYMVERS], [
+
+GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]],
+  [enables symbol versioning of the shared library],
+  [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun])
+
+# If we never went through the GLIBCXX_CHECK_LINKER_FEATURES macro, then we
+# don't know enough about $LD to do tricks...
+AC_REQUIRE([GLIBCXX_CHECK_LINKER_FEATURES])
+# Sun style symbol versions needs GNU c++filt for make_sunver.pl to work
+# with extern "C++" in version scripts.
+AC_REQUIRE([GCC_PROG_GNU_CXXFILT])
+
+# Turn a 'yes' into a suitable default.
+if test x$enable_symvers = xyes ; then
+  if test $enable_shared = no || test "x$LD" = x || test x$gcc_no_link = xyes; then
+    enable_symvers=no
+  else
+    if test $with_gnu_ld = yes ; then
+      case ${target_os} in
+	hpux*)
+	  enable_symvers=no ;;
+	*)
+	  enable_symvers=gnu ;;
+      esac
+    else
+      case ${target_os} in
+	darwin*)
+	  enable_symvers=darwin ;;
+	# Sun symbol versioning exists since Solaris 2.5.
+	solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
+	  # make_sunver.pl needs GNU c++filt to support extern "C++" in
+	  # version scripts, so disable symbol versioning if none can be
+	  # found.
+	  if test -z "$ac_cv_path_CXXFILT"; then
+	    AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
+	    AC_MSG_WARN([=== no GNU c++filt could  be found.])
+	    AC_MSG_WARN([=== Symbol versioning will be disabled.])
+	    enable_symvers=no
+	  else
+	    enable_symvers=sun
+	  fi
+	  ;;
+	*)
+	  enable_symvers=no ;;
+      esac
+    fi
+  fi
+fi
+
+# Check to see if 'darwin' or 'darwin-export' can win.
+if test x$enable_symvers = xdarwin-export ; then
+    enable_symvers=darwin
+fi
+
+# Check if 'sun' was requested on non-Solaris 2 platforms.
+if test x$enable_symvers = xsun ; then
+  case ${target_os} in
+    solaris2*)
+      # All fine.
+      ;;
+    *)
+      # Unlikely to work.
+      AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
+      AC_MSG_WARN([=== you are not targetting Solaris 2.])
+      AC_MSG_WARN([=== Symbol versioning will be disabled.])
+      enable_symvers=no
+      ;;
+  esac
+fi
+
+# Check to see if 'gnu' can win.
+if test $enable_symvers = gnu ||
+  test $enable_symvers = gnu-versioned-namespace ||
+  test $enable_symvers = sun; then
+  # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
+  AC_MSG_CHECKING([for shared libgcc])
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=' -lgcc_s'
+  AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes, glibcxx_shared_libgcc=no)
+  CFLAGS="$ac_save_CFLAGS"
+  if test $glibcxx_shared_libgcc = no; then
+    cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+changequote(,)dnl
+    glibcxx_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+			     -shared -shared-libgcc -o conftest.so \
+			     conftest.c -v 2>&1 >/dev/null \
+			     | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+changequote([,])dnl
+    rm -f conftest.c conftest.so
+    if test x${glibcxx_libgcc_s_suffix+set} = xset; then
+      CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix"
+      AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes)
+      CFLAGS="$ac_save_CFLAGS"
+    fi
+  fi
+  AC_MSG_RESULT($glibcxx_shared_libgcc)
+
+  # For GNU ld, we need at least this version.  The format is described in
+  # GLIBCXX_CHECK_LINKER_FEATURES above.
+  glibcxx_min_gnu_ld_version=21400
+
+  # If no shared libgcc, can't win.
+  if test $glibcxx_shared_libgcc != yes; then
+      AC_MSG_WARN([=== You have requested GNU symbol versioning, but])
+      AC_MSG_WARN([=== you are not building a shared libgcc_s.])
+      AC_MSG_WARN([=== Symbol versioning will be disabled.])
+      enable_symvers=no
+  elif test $with_gnu_ld != yes && test $enable_symvers = sun; then
+    : All interesting versions of Sun ld support sun style symbol versioning.
+  elif test $with_gnu_ld != yes ; then
+    # just fail for now
+    AC_MSG_WARN([=== You have requested GNU symbol versioning, but])
+    AC_MSG_WARN([=== you are not using the GNU linker.])
+    AC_MSG_WARN([=== Symbol versioning will be disabled.])
+    enable_symvers=no
+  elif test $glibcxx_ld_is_gold = yes ; then
+    : All versions of gold support symbol versioning.
+  elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
+    # The right tools, the right setup, but too old.  Fallbacks?
+    AC_MSG_WARN(=== Linker version $glibcxx_gnu_ld_version is too old for)
+    AC_MSG_WARN(=== full symbol versioning support in this release of GCC.)
+    AC_MSG_WARN(=== You would need to upgrade your binutils to version)
+    AC_MSG_WARN(=== $glibcxx_min_gnu_ld_version or later and rebuild GCC.)
+    AC_MSG_WARN([=== Symbol versioning will be disabled.])
+    enable_symvers=no
+  fi
+fi
+
+# Everything parsed; figure out what file to use.
+case $enable_symvers in
+  no)
+    SYMVER_FILE=config/abi/pre/none.ver
+    ;;
+  gnu)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+    AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1,
+	      [Define to use GNU versioning in the shared library.])
+    ;;
+  gnu-versioned-namespace)
+    SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver
+    AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1,
+	      [Define to use GNU namespace versioning in the shared library.])
+    ;;
+  darwin)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+    AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1,
+	      [Define to use darwin versioning in the shared library.])
+    ;;
+  sun)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+    AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1,
+	      [Define to use Sun versioning in the shared library.])
+    ;;
+esac
+
+if test x$enable_symvers != xno ; then
+  AC_DEFINE(_GLIBCXX_SYMVER, 1,
+	 [Define to use symbol versioning in the shared library.])
+fi
+
+AC_CACHE_CHECK([whether the target supports .symver directive],
+	       glibcxx_cv_have_as_symver_directive, [
+  AC_TRY_COMPILE([void foo (void); __asm (".symver foo, bar@SYMVER");],
+		 [], glibcxx_cv_have_as_symver_directive=yes,
+		 glibcxx_cv_have_as_symver_directive=no)])
+if test $glibcxx_cv_have_as_symver_directive = yes; then
+  AC_DEFINE(HAVE_AS_SYMVER_DIRECTIVE, 1,
+    [Define to 1 if the target assembler supports .symver directive.])
+fi
+
+AC_SUBST(SYMVER_FILE)
+AC_SUBST(port_specific_symbol_files)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS, test $enable_symvers != no)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU, test $enable_symvers = gnu)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU_NAMESPACE, test $enable_symvers = gnu-versioned-namespace)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_DARWIN, test $enable_symvers = darwin)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun)
+AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers)
+
+if test $enable_symvers != no ; then
+   case ${target_os} in
+     # The Solaris 2 runtime linker doesn't support the GNU extension of
+     # binding the same symbol to different versions
+     solaris2*)
+       symvers_renaming=no  ;;
+     # Other platforms with GNU symbol versioning (GNU/Linux, more?) do.
+     *)
+       AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1,
+	 [Define to 1 if the target runtime linker supports binding the same symbol to different versions.])
+       symvers_renaming=yes  ;;
+    esac
+else
+    symvers_renaming=no
+fi
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SOL2, test $symvers_renaming = no)
+
+# Now, set up compatibility support, if any.
+# In addition, need this to deal with std::size_t mangling in
+# src/compatibility.cc.  In a perfect world, could use
+# typeid(std::size_t).name()[0] to do direct substitution.
+AC_MSG_CHECKING([for size_t as unsigned int])
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="-Werror"
+AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;],
+		 [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no])
+CFLAGS=$ac_save_CFLAGS
+if test "$glibcxx_size_t_is_i" = yes; then
+  AC_DEFINE(_GLIBCXX_SIZE_T_IS_UINT, 1, [Define if size_t is unsigned int.])
+fi
+AC_MSG_RESULT([$glibcxx_size_t_is_i])
+
+AC_MSG_CHECKING([for ptrdiff_t as int])
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="-Werror"
+AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;],
+		 [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no])
+CFLAGS=$ac_save_CFLAGS
+if test "$glibcxx_ptrdiff_t_is_i" = yes; then
+  AC_DEFINE(_GLIBCXX_PTRDIFF_T_IS_INT, 1, [Define if ptrdiff_t is int.])
+fi
+AC_MSG_RESULT([$glibcxx_ptrdiff_t_is_i])
+])
+
+
+dnl
+dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
+dnl We must stage the required headers so that they will be installed
+dnl with the library (unlike libgcc, the STL implementation is provided
+dnl solely within headers).  Since we must not inject random user-space
+dnl macro names into user-provided C++ code, we first stage into <file>-in
+dnl and process to <file> with an output command.  The reason for a two-
+dnl stage process here is to correctly handle $srcdir!=$objdir without
+dnl having to write complex code (the sed commands to clean the macro
+dnl namespace are complex and fragile enough as it is).  We must also
+dnl add a relative path so that -I- is supported properly.
+dnl
+dnl Substs:
+dnl  glibcxx_thread_h
+dnl
+dnl Defines:
+dnl  HAVE_GTHR_DEFAULT
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_THREADS], [
+  AC_MSG_CHECKING([for thread model used by GCC])
+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
+  AC_MSG_RESULT([$target_thread_file])
+
+  if test $target_thread_file != single; then
+    AC_DEFINE(HAVE_GTHR_DEFAULT, 1,
+	      [Define if gthr-default.h exists
+	      (meaning that threading support is enabled).])
+  fi
+
+  glibcxx_thread_h=gthr-$target_thread_file.h
+
+  dnl Check for __GTHREADS define.
+  gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h}
+  if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then
+    enable_thread=yes
+  else
+   enable_thread=no
+  fi
+
+  AC_SUBST(glibcxx_thread_h)
+])
+
+
+dnl
+dnl Check if gthread implementation defines the types and functions
+dnl required by the c++0x thread library.  Conforming gthread
+dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
+  AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions -I${toplevel_srcdir}/gcc"
+
+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
+  case $target_thread_file in
+    posix)
+      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
+  esac
+
+  AC_MSG_CHECKING([for gthreads library])
+
+  AC_TRY_COMPILE([#include "gthr.h"],
+    [
+      #ifndef __GTHREADS_CXX0X
+      #error
+      #endif
+
+      // In case of POSIX threads check _POSIX_TIMEOUTS too.
+      #if (defined(_PTHREADS) \
+	   && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
+      #error
+      #endif
+    ], [ac_has_gthreads=yes], [ac_has_gthreads=no])
+
+  AC_MSG_RESULT([$ac_has_gthreads])
+
+  if test x"$ac_has_gthreads" = x"yes"; then
+    AC_DEFINE(_GLIBCXX_HAS_GTHREADS, 1,
+	      [Define if gthreads library is available.])
+  fi
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+])
+
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+#
+# This file file be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+AC_DEFUN([AC_LC_MESSAGES], [
+  AC_CHECK_HEADER(locale.h, [
+    AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
+      [AC_TRY_COMPILE([#include <locale.h>], [return LC_MESSAGES],
+       ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
+    if test $ac_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+		[Define if LC_MESSAGES is available in <locale.h>.])
+    fi
+  ])
+])
+
+# Macros from the top-level gcc directory.
+m4_include([../config/gc++filt.m4])
+m4_include([../config/tls.m4])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/aclocal.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/aclocal.m4
new file mode 100644
index 000000000..60b7ccb59
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/aclocal.m4
@@ -0,0 +1,678 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
+[m4_warning([this file was generated for autoconf 2.64.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES(CC)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../config/acx.m4])
+m4_include([../config/enable.m4])
+m4_include([../config/futex.m4])
+m4_include([../config/iconv.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/lthostflags.m4])
+m4_include([../config/multi.m4])
+m4_include([../config/no-executables.m4])
+m4_include([../config/override.m4])
+m4_include([../config/stdint.m4])
+m4_include([../config/unwind_ipinfo.m4])
+m4_include([../libtool.m4])
+m4_include([../ltoptions.m4])
+m4_include([../ltsugar.m4])
+m4_include([../ltversion.m4])
+m4_include([../lt~obsolete.m4])
+m4_include([crossconfig.m4])
+m4_include([linkage.m4])
+m4_include([acinclude.m4])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config.h.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config.h.in
new file mode 100644
index 000000000..6ab257fa3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config.h.in
@@ -0,0 +1,1135 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the `acosf' function. */
+#undef HAVE_ACOSF
+
+/* Define to 1 if you have the `acosl' function. */
+#undef HAVE_ACOSL
+
+/* Define to 1 if you have the `asinf' function. */
+#undef HAVE_ASINF
+
+/* Define to 1 if you have the `asinl' function. */
+#undef HAVE_ASINL
+
+/* Define to 1 if the target assembler supports .symver directive. */
+#undef HAVE_AS_SYMVER_DIRECTIVE
+
+/* Define to 1 if you have the `atan2f' function. */
+#undef HAVE_ATAN2F
+
+/* Define to 1 if you have the `atan2l' function. */
+#undef HAVE_ATAN2L
+
+/* Define to 1 if you have the `atanf' function. */
+#undef HAVE_ATANF
+
+/* Define to 1 if you have the `atanl' function. */
+#undef HAVE_ATANL
+
+/* Define to 1 if the target assembler supports thread-local storage. */
+#undef HAVE_CC_TLS
+
+/* Define to 1 if you have the `ceilf' function. */
+#undef HAVE_CEILF
+
+/* Define to 1 if you have the `ceill' function. */
+#undef HAVE_CEILL
+
+/* Define to 1 if you have the <complex.h> header file. */
+#undef HAVE_COMPLEX_H
+
+/* Define to 1 if you have the `cosf' function. */
+#undef HAVE_COSF
+
+/* Define to 1 if you have the `coshf' function. */
+#undef HAVE_COSHF
+
+/* Define to 1 if you have the `coshl' function. */
+#undef HAVE_COSHL
+
+/* Define to 1 if you have the `cosl' function. */
+#undef HAVE_COSL
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if EBADMSG exists. */
+#undef HAVE_EBADMSG
+
+/* Define if ECANCELED exists. */
+#undef HAVE_ECANCELED
+
+/* Define if EIDRM exists. */
+#undef HAVE_EIDRM
+
+/* Define to 1 if you have the <endian.h> header file. */
+#undef HAVE_ENDIAN_H
+
+/* Define if ENODATA exists. */
+#undef HAVE_ENODATA
+
+/* Define if ENOLINK exists. */
+#undef HAVE_ENOLINK
+
+/* Define if ENOSR exists. */
+#undef HAVE_ENOSR
+
+/* Define if ENOSTR exists. */
+#undef HAVE_ENOSTR
+
+/* Define if ENOTRECOVERABLE exists. */
+#undef HAVE_ENOTRECOVERABLE
+
+/* Define if ENOTSUP exists. */
+#undef HAVE_ENOTSUP
+
+/* Define if EOVERFLOW exists. */
+#undef HAVE_EOVERFLOW
+
+/* Define if EOWNERDEAD exists. */
+#undef HAVE_EOWNERDEAD
+
+/* Define if EPROTO exists. */
+#undef HAVE_EPROTO
+
+/* Define if ETIME exists. */
+#undef HAVE_ETIME
+
+/* Define if ETXTBSY exists. */
+#undef HAVE_ETXTBSY
+
+/* Define to 1 if you have the <execinfo.h> header file. */
+#undef HAVE_EXECINFO_H
+
+/* Define to 1 if you have the `expf' function. */
+#undef HAVE_EXPF
+
+/* Define to 1 if you have the `expl' function. */
+#undef HAVE_EXPL
+
+/* Define to 1 if you have the `fabsf' function. */
+#undef HAVE_FABSF
+
+/* Define to 1 if you have the `fabsl' function. */
+#undef HAVE_FABSL
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#undef HAVE_FENV_H
+
+/* Define to 1 if you have the `finite' function. */
+#undef HAVE_FINITE
+
+/* Define to 1 if you have the `finitef' function. */
+#undef HAVE_FINITEF
+
+/* Define to 1 if you have the `finitel' function. */
+#undef HAVE_FINITEL
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the `floorf' function. */
+#undef HAVE_FLOORF
+
+/* Define to 1 if you have the `floorl' function. */
+#undef HAVE_FLOORL
+
+/* Define to 1 if you have the `fmodf' function. */
+#undef HAVE_FMODF
+
+/* Define to 1 if you have the `fmodl' function. */
+#undef HAVE_FMODL
+
+/* Define to 1 if you have the `fpclass' function. */
+#undef HAVE_FPCLASS
+
+/* Define to 1 if you have the <fp.h> header file. */
+#undef HAVE_FP_H
+
+/* Define to 1 if you have the `frexpf' function. */
+#undef HAVE_FREXPF
+
+/* Define to 1 if you have the `frexpl' function. */
+#undef HAVE_FREXPL
+
+/* Define if _Unwind_GetIPInfo is available. */
+#undef HAVE_GETIPINFO
+
+/* Define if gthr-default.h exists (meaning that threading support is
+   enabled). */
+#undef HAVE_GTHR_DEFAULT
+
+/* Define to 1 if you have the `hypot' function. */
+#undef HAVE_HYPOT
+
+/* Define to 1 if you have the `hypotf' function. */
+#undef HAVE_HYPOTF
+
+/* Define to 1 if you have the `hypotl' function. */
+#undef HAVE_HYPOTL
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#undef HAVE_IEEEFP_H
+
+/* Define if int64_t is available in <stdint.h>. */
+#undef HAVE_INT64_T
+
+/* Define if int64_t is a long. */
+#undef HAVE_INT64_T_LONG
+
+/* Define if int64_t is a long long. */
+#undef HAVE_INT64_T_LONG_LONG
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isinf' function. */
+#undef HAVE_ISINF
+
+/* Define to 1 if you have the `isinff' function. */
+#undef HAVE_ISINFF
+
+/* Define to 1 if you have the `isinfl' function. */
+#undef HAVE_ISINFL
+
+/* Define to 1 if you have the `isnan' function. */
+#undef HAVE_ISNAN
+
+/* Define to 1 if you have the `isnanf' function. */
+#undef HAVE_ISNANF
+
+/* Define to 1 if you have the `isnanl' function. */
+#undef HAVE_ISNANL
+
+/* Defined if iswblank exists. */
+#undef HAVE_ISWBLANK
+
+/* Define if LC_MESSAGES is available in <locale.h>. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the `ldexpf' function. */
+#undef HAVE_LDEXPF
+
+/* Define to 1 if you have the `ldexpl' function. */
+#undef HAVE_LDEXPL
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
+/* Only used in build directory testsuite_hooks.h. */
+#undef HAVE_LIMIT_AS
+
+/* Only used in build directory testsuite_hooks.h. */
+#undef HAVE_LIMIT_DATA
+
+/* Only used in build directory testsuite_hooks.h. */
+#undef HAVE_LIMIT_FSIZE
+
+/* Only used in build directory testsuite_hooks.h. */
+#undef HAVE_LIMIT_RSS
+
+/* Only used in build directory testsuite_hooks.h. */
+#undef HAVE_LIMIT_VMEM
+
+/* Define if futex syscall is available. */
+#undef HAVE_LINUX_FUTEX
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the `log10f' function. */
+#undef HAVE_LOG10F
+
+/* Define to 1 if you have the `log10l' function. */
+#undef HAVE_LOG10L
+
+/* Define to 1 if you have the `logf' function. */
+#undef HAVE_LOGF
+
+/* Define to 1 if you have the `logl' function. */
+#undef HAVE_LOGL
+
+/* Define to 1 if you have the <machine/endian.h> header file. */
+#undef HAVE_MACHINE_ENDIAN_H
+
+/* Define to 1 if you have the <machine/param.h> header file. */
+#undef HAVE_MACHINE_PARAM_H
+
+/* Define if mbstate_t exists in wchar.h. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `modf' function. */
+#undef HAVE_MODF
+
+/* Define to 1 if you have the `modff' function. */
+#undef HAVE_MODFF
+
+/* Define to 1 if you have the `modfl' function. */
+#undef HAVE_MODFL
+
+/* Define to 1 if you have the <nan.h> header file. */
+#undef HAVE_NAN_H
+
+/* Define if poll is available in <poll.h>. */
+#undef HAVE_POLL
+
+/* Define to 1 if you have the `powf' function. */
+#undef HAVE_POWF
+
+/* Define to 1 if you have the `powl' function. */
+#undef HAVE_POWL
+
+/* Define to 1 if you have the `qfpclass' function. */
+#undef HAVE_QFPCLASS
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `sincos' function. */
+#undef HAVE_SINCOS
+
+/* Define to 1 if you have the `sincosf' function. */
+#undef HAVE_SINCOSF
+
+/* Define to 1 if you have the `sincosl' function. */
+#undef HAVE_SINCOSL
+
+/* Define to 1 if you have the `sinf' function. */
+#undef HAVE_SINF
+
+/* Define to 1 if you have the `sinhf' function. */
+#undef HAVE_SINHF
+
+/* Define to 1 if you have the `sinhl' function. */
+#undef HAVE_SINHL
+
+/* Define to 1 if you have the `sinl' function. */
+#undef HAVE_SINL
+
+/* Define to 1 if you have the `sqrtf' function. */
+#undef HAVE_SQRTF
+
+/* Define to 1 if you have the `sqrtl' function. */
+#undef HAVE_SQRTL
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define if strerror_l is available in <string.h>. */
+#undef HAVE_STRERROR_L
+
+/* Define if strerror_r is available in <string.h>. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtof' function. */
+#undef HAVE_STRTOF
+
+/* Define to 1 if you have the `strtold' function. */
+#undef HAVE_STRTOLD
+
+/* Define if strxfrm_l is available in <string.h>. */
+#undef HAVE_STRXFRM_L
+
+/* Define to 1 if the target runtime linker supports binding the same symbol
+   to different versions. */
+#undef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+#undef HAVE_SYS_FILIO_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#undef HAVE_SYS_IPC_H
+
+/* Define to 1 if you have the <sys/isa_defs.h> header file. */
+#undef HAVE_SYS_ISA_DEFS_H
+
+/* Define to 1 if you have the <sys/machine.h> header file. */
+#undef HAVE_SYS_MACHINE_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+#undef HAVE_SYS_SEM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+#undef HAVE_S_IFREG
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+#undef HAVE_S_ISREG
+
+/* Define to 1 if you have the `tanf' function. */
+#undef HAVE_TANF
+
+/* Define to 1 if you have the `tanhf' function. */
+#undef HAVE_TANHF
+
+/* Define to 1 if you have the `tanhl' function. */
+#undef HAVE_TANHL
+
+/* Define to 1 if you have the `tanl' function. */
+#undef HAVE_TANL
+
+/* Define to 1 if you have the <tgmath.h> header file. */
+#undef HAVE_TGMATH_H
+
+/* Define to 1 if the target supports thread-local storage. */
+#undef HAVE_TLS
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Defined if vfwscanf exists. */
+#undef HAVE_VFWSCANF
+
+/* Defined if vswscanf exists. */
+#undef HAVE_VSWSCANF
+
+/* Defined if vwscanf exists. */
+#undef HAVE_VWSCANF
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Defined if wcstof exists. */
+#undef HAVE_WCSTOF
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define if writev is available in <sys/uio.h>. */
+#undef HAVE_WRITEV
+
+/* Define to 1 if you have the `_acosf' function. */
+#undef HAVE__ACOSF
+
+/* Define to 1 if you have the `_acosl' function. */
+#undef HAVE__ACOSL
+
+/* Define to 1 if you have the `_asinf' function. */
+#undef HAVE__ASINF
+
+/* Define to 1 if you have the `_asinl' function. */
+#undef HAVE__ASINL
+
+/* Define to 1 if you have the `_atan2f' function. */
+#undef HAVE__ATAN2F
+
+/* Define to 1 if you have the `_atan2l' function. */
+#undef HAVE__ATAN2L
+
+/* Define to 1 if you have the `_atanf' function. */
+#undef HAVE__ATANF
+
+/* Define to 1 if you have the `_atanl' function. */
+#undef HAVE__ATANL
+
+/* Define to 1 if you have the `_ceilf' function. */
+#undef HAVE__CEILF
+
+/* Define to 1 if you have the `_ceill' function. */
+#undef HAVE__CEILL
+
+/* Define to 1 if you have the `_cosf' function. */
+#undef HAVE__COSF
+
+/* Define to 1 if you have the `_coshf' function. */
+#undef HAVE__COSHF
+
+/* Define to 1 if you have the `_coshl' function. */
+#undef HAVE__COSHL
+
+/* Define to 1 if you have the `_cosl' function. */
+#undef HAVE__COSL
+
+/* Define to 1 if you have the `_expf' function. */
+#undef HAVE__EXPF
+
+/* Define to 1 if you have the `_expl' function. */
+#undef HAVE__EXPL
+
+/* Define to 1 if you have the `_fabsf' function. */
+#undef HAVE__FABSF
+
+/* Define to 1 if you have the `_fabsl' function. */
+#undef HAVE__FABSL
+
+/* Define to 1 if you have the `_finite' function. */
+#undef HAVE__FINITE
+
+/* Define to 1 if you have the `_finitef' function. */
+#undef HAVE__FINITEF
+
+/* Define to 1 if you have the `_finitel' function. */
+#undef HAVE__FINITEL
+
+/* Define to 1 if you have the `_floorf' function. */
+#undef HAVE__FLOORF
+
+/* Define to 1 if you have the `_floorl' function. */
+#undef HAVE__FLOORL
+
+/* Define to 1 if you have the `_fmodf' function. */
+#undef HAVE__FMODF
+
+/* Define to 1 if you have the `_fmodl' function. */
+#undef HAVE__FMODL
+
+/* Define to 1 if you have the `_fpclass' function. */
+#undef HAVE__FPCLASS
+
+/* Define to 1 if you have the `_frexpf' function. */
+#undef HAVE__FREXPF
+
+/* Define to 1 if you have the `_frexpl' function. */
+#undef HAVE__FREXPL
+
+/* Define to 1 if you have the `_hypot' function. */
+#undef HAVE__HYPOT
+
+/* Define to 1 if you have the `_hypotf' function. */
+#undef HAVE__HYPOTF
+
+/* Define to 1 if you have the `_hypotl' function. */
+#undef HAVE__HYPOTL
+
+/* Define to 1 if you have the `_isinf' function. */
+#undef HAVE__ISINF
+
+/* Define to 1 if you have the `_isinff' function. */
+#undef HAVE__ISINFF
+
+/* Define to 1 if you have the `_isinfl' function. */
+#undef HAVE__ISINFL
+
+/* Define to 1 if you have the `_isnan' function. */
+#undef HAVE__ISNAN
+
+/* Define to 1 if you have the `_isnanf' function. */
+#undef HAVE__ISNANF
+
+/* Define to 1 if you have the `_isnanl' function. */
+#undef HAVE__ISNANL
+
+/* Define to 1 if you have the `_ldexpf' function. */
+#undef HAVE__LDEXPF
+
+/* Define to 1 if you have the `_ldexpl' function. */
+#undef HAVE__LDEXPL
+
+/* Define to 1 if you have the `_log10f' function. */
+#undef HAVE__LOG10F
+
+/* Define to 1 if you have the `_log10l' function. */
+#undef HAVE__LOG10L
+
+/* Define to 1 if you have the `_logf' function. */
+#undef HAVE__LOGF
+
+/* Define to 1 if you have the `_logl' function. */
+#undef HAVE__LOGL
+
+/* Define to 1 if you have the `_modf' function. */
+#undef HAVE__MODF
+
+/* Define to 1 if you have the `_modff' function. */
+#undef HAVE__MODFF
+
+/* Define to 1 if you have the `_modfl' function. */
+#undef HAVE__MODFL
+
+/* Define to 1 if you have the `_powf' function. */
+#undef HAVE__POWF
+
+/* Define to 1 if you have the `_powl' function. */
+#undef HAVE__POWL
+
+/* Define to 1 if you have the `_qfpclass' function. */
+#undef HAVE__QFPCLASS
+
+/* Define to 1 if you have the `_sincos' function. */
+#undef HAVE__SINCOS
+
+/* Define to 1 if you have the `_sincosf' function. */
+#undef HAVE__SINCOSF
+
+/* Define to 1 if you have the `_sincosl' function. */
+#undef HAVE__SINCOSL
+
+/* Define to 1 if you have the `_sinf' function. */
+#undef HAVE__SINF
+
+/* Define to 1 if you have the `_sinhf' function. */
+#undef HAVE__SINHF
+
+/* Define to 1 if you have the `_sinhl' function. */
+#undef HAVE__SINHL
+
+/* Define to 1 if you have the `_sinl' function. */
+#undef HAVE__SINL
+
+/* Define to 1 if you have the `_sqrtf' function. */
+#undef HAVE__SQRTF
+
+/* Define to 1 if you have the `_sqrtl' function. */
+#undef HAVE__SQRTL
+
+/* Define to 1 if you have the `_tanf' function. */
+#undef HAVE__TANF
+
+/* Define to 1 if you have the `_tanhf' function. */
+#undef HAVE__TANHF
+
+/* Define to 1 if you have the `_tanhl' function. */
+#undef HAVE__TANHL
+
+/* Define to 1 if you have the `_tanl' function. */
+#undef HAVE__TANL
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define if builtin atomic operations for bool are supported on this host. */
+#undef _GLIBCXX_ATOMIC_BUILTINS_1
+
+/* Define if builtin atomic operations for short are supported on this host.
+   */
+#undef _GLIBCXX_ATOMIC_BUILTINS_2
+
+/* Define if builtin atomic operations for int are supported on this host. */
+#undef _GLIBCXX_ATOMIC_BUILTINS_4
+
+/* Define if builtin atomic operations for long long are supported on this
+   host. */
+#undef _GLIBCXX_ATOMIC_BUILTINS_8
+
+/* Define to use concept checking code from the boost libraries. */
+#undef _GLIBCXX_CONCEPT_CHECKS
+
+/* Define if a fully dynamic basic_string is wanted. */
+#undef _GLIBCXX_FULLY_DYNAMIC_STRING
+
+/* Define if gthreads library is available. */
+#undef _GLIBCXX_HAS_GTHREADS
+
+/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
+#undef _GLIBCXX_HOSTED
+
+/* Define if compatibility should be provided for -mlong-double-64. */
+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+/* Define if ptrdiff_t is int. */
+#undef _GLIBCXX_PTRDIFF_T_IS_INT
+
+/* Define if using setrlimit to set resource limits during "make check" */
+#undef _GLIBCXX_RES_LIMITS
+
+/* Define if size_t is unsigned int. */
+#undef _GLIBCXX_SIZE_T_IS_UINT
+
+/* Define if the compiler is configured for setjmp/longjmp exceptions. */
+#undef _GLIBCXX_SJLJ_EXCEPTIONS
+
+/* Define to the value of the EOF integer constant. */
+#undef _GLIBCXX_STDIO_EOF
+
+/* Define to the value of the SEEK_CUR integer constant. */
+#undef _GLIBCXX_STDIO_SEEK_CUR
+
+/* Define to the value of the SEEK_END integer constant. */
+#undef _GLIBCXX_STDIO_SEEK_END
+
+/* Define to use symbol versioning in the shared library. */
+#undef _GLIBCXX_SYMVER
+
+/* Define to use darwin versioning in the shared library. */
+#undef _GLIBCXX_SYMVER_DARWIN
+
+/* Define to use GNU versioning in the shared library. */
+#undef _GLIBCXX_SYMVER_GNU
+
+/* Define to use GNU namespace versioning in the shared library. */
+#undef _GLIBCXX_SYMVER_GNU_NAMESPACE
+
+/* Define to use Sun versioning in the shared library. */
+#undef _GLIBCXX_SYMVER_SUN
+
+/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
+   <stdio.h>, and <stdlib.h> can be used or exposed. */
+#undef _GLIBCXX_USE_C99
+
+/* Define if C99 functions in <complex.h> should be used in <complex>. Using
+   compiler builtins for these functions requires corresponding C99 library
+   functions to be present. */
+#undef _GLIBCXX_USE_C99_COMPLEX
+
+/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
+   Using compiler builtins for these functions requires corresponding C99
+   library functions to be present. */
+#undef _GLIBCXX_USE_C99_COMPLEX_TR1
+
+/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
+   namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_CTYPE_TR1
+
+/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
+   namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_FENV_TR1
+
+/* Define if C99 functions in <inttypes.h> should be imported in
+   <tr1/cinttypes> in namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_INTTYPES_TR1
+
+/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
+   <tr1/cinttypes> in namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1
+
+/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
+   in namespace std. */
+#undef _GLIBCXX_USE_C99_MATH
+
+/* Define if C99 functions or macros in <math.h> should be imported in
+   <tr1/cmath> in namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_MATH_TR1
+
+/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
+   namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_STDINT_TR1
+
+/* Defined if clock_gettime has monotonic clock support. */
+#undef _GLIBCXX_USE_CLOCK_MONOTONIC
+
+/* Defined if clock_gettime has realtime clock support. */
+#undef _GLIBCXX_USE_CLOCK_REALTIME
+
+/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
+   this host. */
+#undef _GLIBCXX_USE_DECIMAL_FLOAT
+
+/* Defined if gettimeofday is available. */
+#undef _GLIBCXX_USE_GETTIMEOFDAY
+
+/* Define if LFS support is available. */
+#undef _GLIBCXX_USE_LFS
+
+/* Define if code specialized for long long should be used. */
+#undef _GLIBCXX_USE_LONG_LONG
+
+/* Defined if nanosleep is available. */
+#undef _GLIBCXX_USE_NANOSLEEP
+
+/* Define if NLS translations are to be used. */
+#undef _GLIBCXX_USE_NLS
+
+/* Define if /dev/random and /dev/urandom are available for the random_device
+   of TR1 (Chapter 5.1). */
+#undef _GLIBCXX_USE_RANDOM_TR1
+
+/* Defined if sched_yield is available. */
+#undef _GLIBCXX_USE_SCHED_YIELD
+
+/* Define if code specialized for wchar_t should be used. */
+#undef _GLIBCXX_USE_WCHAR_T
+
+#if defined (HAVE__ACOSF) && ! defined (HAVE_ACOSF)
+# define HAVE_ACOSF 1
+# define acosf _acosf
+#endif
+
+#if defined (HAVE__ACOSL) && ! defined (HAVE_ACOSL)
+# define HAVE_ACOSL 1
+# define acosl _acosl
+#endif
+
+#if defined (HAVE__ASINF) && ! defined (HAVE_ASINF)
+# define HAVE_ASINF 1
+# define asinf _asinf
+#endif
+
+#if defined (HAVE__ASINL) && ! defined (HAVE_ASINL)
+# define HAVE_ASINL 1
+# define asinl _asinl
+#endif
+
+#if defined (HAVE__ATAN2F) && ! defined (HAVE_ATAN2F)
+# define HAVE_ATAN2F 1
+# define atan2f _atan2f
+#endif
+
+#if defined (HAVE__ATAN2L) && ! defined (HAVE_ATAN2L)
+# define HAVE_ATAN2L 1
+# define atan2l _atan2l
+#endif
+
+#if defined (HAVE__ATANF) && ! defined (HAVE_ATANF)
+# define HAVE_ATANF 1
+# define atanf _atanf
+#endif
+
+#if defined (HAVE__ATANL) && ! defined (HAVE_ATANL)
+# define HAVE_ATANL 1
+# define atanl _atanl
+#endif
+
+#if defined (HAVE__CEILF) && ! defined (HAVE_CEILF)
+# define HAVE_CEILF 1
+# define ceilf _ceilf
+#endif
+
+#if defined (HAVE__CEILL) && ! defined (HAVE_CEILL)
+# define HAVE_CEILL 1
+# define ceill _ceill
+#endif
+
+#if defined (HAVE__COSF) && ! defined (HAVE_COSF)
+# define HAVE_COSF 1
+# define cosf _cosf
+#endif
+
+#if defined (HAVE__COSHF) && ! defined (HAVE_COSHF)
+# define HAVE_COSHF 1
+# define coshf _coshf
+#endif
+
+#if defined (HAVE__COSHL) && ! defined (HAVE_COSHL)
+# define HAVE_COSHL 1
+# define coshl _coshl
+#endif
+
+#if defined (HAVE__COSL) && ! defined (HAVE_COSL)
+# define HAVE_COSL 1
+# define cosl _cosl
+#endif
+
+#if defined (HAVE__EXPF) && ! defined (HAVE_EXPF)
+# define HAVE_EXPF 1
+# define expf _expf
+#endif
+
+#if defined (HAVE__EXPL) && ! defined (HAVE_EXPL)
+# define HAVE_EXPL 1
+# define expl _expl
+#endif
+
+#if defined (HAVE__FABSF) && ! defined (HAVE_FABSF)
+# define HAVE_FABSF 1
+# define fabsf _fabsf
+#endif
+
+#if defined (HAVE__FABSL) && ! defined (HAVE_FABSL)
+# define HAVE_FABSL 1
+# define fabsl _fabsl
+#endif
+
+#if defined (HAVE__FINITE) && ! defined (HAVE_FINITE)
+# define HAVE_FINITE 1
+# define finite _finite
+#endif
+
+#if defined (HAVE__FINITEF) && ! defined (HAVE_FINITEF)
+# define HAVE_FINITEF 1
+# define finitef _finitef
+#endif
+
+#if defined (HAVE__FINITEL) && ! defined (HAVE_FINITEL)
+# define HAVE_FINITEL 1
+# define finitel _finitel
+#endif
+
+#if defined (HAVE__FLOORF) && ! defined (HAVE_FLOORF)
+# define HAVE_FLOORF 1
+# define floorf _floorf
+#endif
+
+#if defined (HAVE__FLOORL) && ! defined (HAVE_FLOORL)
+# define HAVE_FLOORL 1
+# define floorl _floorl
+#endif
+
+#if defined (HAVE__FMODF) && ! defined (HAVE_FMODF)
+# define HAVE_FMODF 1
+# define fmodf _fmodf
+#endif
+
+#if defined (HAVE__FMODL) && ! defined (HAVE_FMODL)
+# define HAVE_FMODL 1
+# define fmodl _fmodl
+#endif
+
+#if defined (HAVE__FPCLASS) && ! defined (HAVE_FPCLASS)
+# define HAVE_FPCLASS 1
+# define fpclass _fpclass
+#endif
+
+#if defined (HAVE__FREXPF) && ! defined (HAVE_FREXPF)
+# define HAVE_FREXPF 1
+# define frexpf _frexpf
+#endif
+
+#if defined (HAVE__FREXPL) && ! defined (HAVE_FREXPL)
+# define HAVE_FREXPL 1
+# define frexpl _frexpl
+#endif
+
+#if defined (HAVE__HYPOT) && ! defined (HAVE_HYPOT)
+# define HAVE_HYPOT 1
+# define hypot _hypot
+#endif
+
+#if defined (HAVE__HYPOTF) && ! defined (HAVE_HYPOTF)
+# define HAVE_HYPOTF 1
+# define hypotf _hypotf
+#endif
+
+#if defined (HAVE__HYPOTL) && ! defined (HAVE_HYPOTL)
+# define HAVE_HYPOTL 1
+# define hypotl _hypotl
+#endif
+
+#if defined (HAVE__ISINF) && ! defined (HAVE_ISINF)
+# define HAVE_ISINF 1
+# define isinf _isinf
+#endif
+
+#if defined (HAVE__ISINFF) && ! defined (HAVE_ISINFF)
+# define HAVE_ISINFF 1
+# define isinff _isinff
+#endif
+
+#if defined (HAVE__ISINFL) && ! defined (HAVE_ISINFL)
+# define HAVE_ISINFL 1
+# define isinfl _isinfl
+#endif
+
+#if defined (HAVE__ISNAN) && ! defined (HAVE_ISNAN)
+# define HAVE_ISNAN 1
+# define isnan _isnan
+#endif
+
+#if defined (HAVE__ISNANF) && ! defined (HAVE_ISNANF)
+# define HAVE_ISNANF 1
+# define isnanf _isnanf
+#endif
+
+#if defined (HAVE__ISNANL) && ! defined (HAVE_ISNANL)
+# define HAVE_ISNANL 1
+# define isnanl _isnanl
+#endif
+
+#if defined (HAVE__LDEXPF) && ! defined (HAVE_LDEXPF)
+# define HAVE_LDEXPF 1
+# define ldexpf _ldexpf
+#endif
+
+#if defined (HAVE__LDEXPL) && ! defined (HAVE_LDEXPL)
+# define HAVE_LDEXPL 1
+# define ldexpl _ldexpl
+#endif
+
+#if defined (HAVE__LOG10F) && ! defined (HAVE_LOG10F)
+# define HAVE_LOG10F 1
+# define log10f _log10f
+#endif
+
+#if defined (HAVE__LOG10L) && ! defined (HAVE_LOG10L)
+# define HAVE_LOG10L 1
+# define log10l _log10l
+#endif
+
+#if defined (HAVE__LOGF) && ! defined (HAVE_LOGF)
+# define HAVE_LOGF 1
+# define logf _logf
+#endif
+
+#if defined (HAVE__LOGL) && ! defined (HAVE_LOGL)
+# define HAVE_LOGL 1
+# define logl _logl
+#endif
+
+#if defined (HAVE__MODF) && ! defined (HAVE_MODF)
+# define HAVE_MODF 1
+# define modf _modf
+#endif
+
+#if defined (HAVE__MODFF) && ! defined (HAVE_MODFF)
+# define HAVE_MODFF 1
+# define modff _modff
+#endif
+
+#if defined (HAVE__MODFL) && ! defined (HAVE_MODFL)
+# define HAVE_MODFL 1
+# define modfl _modfl
+#endif
+
+#if defined (HAVE__POWF) && ! defined (HAVE_POWF)
+# define HAVE_POWF 1
+# define powf _powf
+#endif
+
+#if defined (HAVE__POWL) && ! defined (HAVE_POWL)
+# define HAVE_POWL 1
+# define powl _powl
+#endif
+
+#if defined (HAVE__QFPCLASS) && ! defined (HAVE_QFPCLASS)
+# define HAVE_QFPCLASS 1
+# define qfpclass _qfpclass
+#endif
+
+#if defined (HAVE__SINCOS) && ! defined (HAVE_SINCOS)
+# define HAVE_SINCOS 1
+# define sincos _sincos
+#endif
+
+#if defined (HAVE__SINCOSF) && ! defined (HAVE_SINCOSF)
+# define HAVE_SINCOSF 1
+# define sincosf _sincosf
+#endif
+
+#if defined (HAVE__SINCOSL) && ! defined (HAVE_SINCOSL)
+# define HAVE_SINCOSL 1
+# define sincosl _sincosl
+#endif
+
+#if defined (HAVE__SINF) && ! defined (HAVE_SINF)
+# define HAVE_SINF 1
+# define sinf _sinf
+#endif
+
+#if defined (HAVE__SINHF) && ! defined (HAVE_SINHF)
+# define HAVE_SINHF 1
+# define sinhf _sinhf
+#endif
+
+#if defined (HAVE__SINHL) && ! defined (HAVE_SINHL)
+# define HAVE_SINHL 1
+# define sinhl _sinhl
+#endif
+
+#if defined (HAVE__SINL) && ! defined (HAVE_SINL)
+# define HAVE_SINL 1
+# define sinl _sinl
+#endif
+
+#if defined (HAVE__SQRTF) && ! defined (HAVE_SQRTF)
+# define HAVE_SQRTF 1
+# define sqrtf _sqrtf
+#endif
+
+#if defined (HAVE__SQRTL) && ! defined (HAVE_SQRTL)
+# define HAVE_SQRTL 1
+# define sqrtl _sqrtl
+#endif
+
+#if defined (HAVE__STRTOF) && ! defined (HAVE_STRTOF)
+# define HAVE_STRTOF 1
+# define strtof _strtof
+#endif
+
+#if defined (HAVE__STRTOLD) && ! defined (HAVE_STRTOLD)
+# define HAVE_STRTOLD 1
+# define strtold _strtold
+#endif
+
+#if defined (HAVE__TANF) && ! defined (HAVE_TANF)
+# define HAVE_TANF 1
+# define tanf _tanf
+#endif
+
+#if defined (HAVE__TANHF) && ! defined (HAVE_TANHF)
+# define HAVE_TANHF 1
+# define tanhf _tanhf
+#endif
+
+#if defined (HAVE__TANHL) && ! defined (HAVE_TANHL)
+# define HAVE_TANHL 1
+# define tanhl _tanhl
+#endif
+
+#if defined (HAVE__TANL) && ! defined (HAVE_TANL)
+# define HAVE_TANL 1
+# define tanl _tanl
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/compatibility.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/compatibility.h
new file mode 100644
index 000000000..65a630730
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/compatibility.h
@@ -0,0 +1,214 @@
+// Compatibility symbols for previous versions -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/compatibility.h
+ *  This is an internal header file, included by other library sources.
+ *  You should not attempt to use it directly.
+ */
+
+// Switch for symbol version macro.
+#ifndef _GLIBCXX_APPLY_SYMVER 
+#error must define _GLIBCXX_APPLY_SYMVER before including __FILE__
+#endif
+
+/* gcc-3.4.4
+_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv
+_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv
+ */
+namespace 
+{
+_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIcSt11char_traitsIcEEppEv,
+		      _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv)
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIwSt11char_traitsIwEEppEv,
+		      _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv)
+#endif
+} // anonymous namespace
+
+/* gcc-4.0.0
+_ZNSs4_Rep26_M_set_length_and_sharableEj
+_ZNSs7_M_copyEPcPKcj
+_ZNSs7_M_moveEPcPKcj
+_ZNSs9_M_assignEPcjc
+_ZNKSs11_M_disjunctEPKc
+_ZNKSs15_M_check_lengthEjjPKc
+_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj
+_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj
+_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj
+_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw
+_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw
+_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc
+
+_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv
+_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv
+_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv
+
+_ZNSi6ignoreEi
+_ZNSi6ignoreEv
+_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi
+_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv
+
+_ZNSt11char_traitsIcE2eqERKcS2_
+_ZNSt11char_traitsIwE2eqERKwS2_
+ */
+namespace 
+{
+_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIcE4eqXXERKcS2_,
+		      _ZNSt11char_traitsIcE2eqERKcS2_)
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcj,
+		      _ZNSs7_M_copyEPcPKcj)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcm,
+		      _ZNSs7_M_copyEPcPKcm)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcj,
+		      _ZNSs7_M_moveEPcPKcj)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcm,
+		      _ZNSs7_M_moveEPcPKcm)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcjc,
+		      _ZNSs9_M_assignEPcjc)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcmc,
+		      _ZNSs9_M_assignEPcmc)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSs13_M_disjunctXXEPKc,
+		      _ZNKSs11_M_disjunctEPKc)
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEjjPKc,
+		      _ZNKSs15_M_check_lengthEjjPKc)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEmmPKc,
+		      _ZNKSs15_M_check_lengthEmmPKc)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+  _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEj,
+			_ZNSs4_Rep26_M_set_length_and_sharableEj)
+#else
+  _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEm,
+			_ZNSs4_Rep26_M_set_length_and_sharableEm)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEv, _ZNSi6ignoreEv)
+
+#ifdef _GLIBCXX_PTRDIFF_T_IS_INT
+_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEi, _ZNSi6ignoreEi)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEl, _ZNSi6ignoreEl)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIcSt11char_traitsIcEE7is_openEv,
+		      _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv)
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIcSt11char_traitsIcEE7is_openEv,
+		      _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv)
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIcSt11char_traitsIcEE7is_openEv,
+		      _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv)
+
+  // Support for wchar_t.
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIwE4eqXXERKwS2_,
+		      _ZNSt11char_traitsIwE2eqERKwS2_)
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwj,
+		      _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj)
+#else
+  _GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwm,
+			_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwj,
+		      _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwm,
+		      _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwjw,
+		      _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwmw,
+		      _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE13_M_disjunctXXEPKw,
+		      _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw)
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEjjPKc,
+		      _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEmmPKc,
+		      _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc)
+#endif
+
+#ifdef _GLIBCXX_SIZE_T_IS_UINT
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEj,
+		      _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEm,
+		      _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEv,
+		      _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv)
+
+#ifdef _GLIBCXX_PTRDIFF_T_IS_INT
+_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEi,
+		      _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi)
+#else
+_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEl,
+		      _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl)
+#endif
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIwSt11char_traitsIwEE7is_openEv,
+		      _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv)
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIwSt11char_traitsIwEE7is_openEv,
+		      _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv)
+
+_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIwSt11char_traitsIwEE7is_openEv,
+		      _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv)
+#endif
+  } // anonymous namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/alpha-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..1f774af9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3915 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/hppa-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..c16b3b28f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3290 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:acosl@@GLIBCXX_3.4.3
+FUNC:asinl@@GLIBCXX_3.4.3
+FUNC:atan2l@@GLIBCXX_3.4
+FUNC:atanl@@GLIBCXX_3.4.3
+FUNC:ceill@@GLIBCXX_3.4.3
+FUNC:coshl@@GLIBCXX_3.4
+FUNC:cosl@@GLIBCXX_3.4
+FUNC:expl@@GLIBCXX_3.4
+FUNC:floorl@@GLIBCXX_3.4.3
+FUNC:fmodl@@GLIBCXX_3.4.3
+FUNC:frexpl@@GLIBCXX_3.4.3
+FUNC:hypotl@@GLIBCXX_3.4
+FUNC:ldexpl@@GLIBCXX_3.4.3
+FUNC:log10l@@GLIBCXX_3.4
+FUNC:logl@@GLIBCXX_3.4
+FUNC:modfl@@GLIBCXX_3.4.3
+FUNC:powl@@GLIBCXX_3.4
+FUNC:sinhl@@GLIBCXX_3.4
+FUNC:sinl@@GLIBCXX_3.4
+FUNC:sqrtl@@GLIBCXX_3.4
+FUNC:tanhl@@GLIBCXX_3.4
+FUNC:tanl@@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i386-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i386-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..d93d24131
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i386-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3604 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i486-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i486-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..d93d24131
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/i486-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3604 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/ia64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..91421b373
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3402 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:112:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:112:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:112:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:112:_ZTVSi@@GLIBCXX_3.4
+OBJECT:112:_ZTVSo@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:112:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:128:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:128:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:128:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:128:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:128:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:144:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:144:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:144:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:144:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:160:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:160:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:160:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:160:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:160:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:160:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:160:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:160:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:160:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSd@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:168:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:176:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:176:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:176:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:176:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:192:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:224:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:224:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:240:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:240:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:64:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:64:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt8messagesIwE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..c16b3b28f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3290 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:acosl@@GLIBCXX_3.4.3
+FUNC:asinl@@GLIBCXX_3.4.3
+FUNC:atan2l@@GLIBCXX_3.4
+FUNC:atanl@@GLIBCXX_3.4.3
+FUNC:ceill@@GLIBCXX_3.4.3
+FUNC:coshl@@GLIBCXX_3.4
+FUNC:cosl@@GLIBCXX_3.4
+FUNC:expl@@GLIBCXX_3.4
+FUNC:floorl@@GLIBCXX_3.4.3
+FUNC:fmodl@@GLIBCXX_3.4.3
+FUNC:frexpl@@GLIBCXX_3.4.3
+FUNC:hypotl@@GLIBCXX_3.4
+FUNC:ldexpl@@GLIBCXX_3.4.3
+FUNC:log10l@@GLIBCXX_3.4
+FUNC:logl@@GLIBCXX_3.4
+FUNC:modfl@@GLIBCXX_3.4.3
+FUNC:powl@@GLIBCXX_3.4
+FUNC:sinhl@@GLIBCXX_3.4
+FUNC:sinl@@GLIBCXX_3.4
+FUNC:sqrtl@@GLIBCXX_3.4
+FUNC:tanhl@@GLIBCXX_3.4
+FUNC:tanl@@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
new file mode 100644
index 000000000..5d259efa2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
@@ -0,0 +1,3402 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..8af21a5df
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3402 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..e025a2e79
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3909 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
new file mode 100644
index 000000000..e025a2e79
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
@@ -0,0 +1,3909 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..1f774af9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3915 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..36162218e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3909 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390x-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..1f774af9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3915 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/amd64/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
new file mode 100644
index 000000000..27ffeef91
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
@@ -0,0 +1,3577 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:_DYNAMIC
+OBJECT:0:_GLOBAL_OFFSET_TABLE_
+OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
+OBJECT:0:_edata
+OBJECT:0:_end
+OBJECT:0:_etext
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+TLS:8:_ZSt11__once_call@@GLIBCXX_3.4.11
+TLS:8:_ZSt15__once_callable@@GLIBCXX_3.4.11
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/baseline_symbols.txt
new file mode 100644
index 000000000..fca2a29d0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/baseline_symbols.txt
@@ -0,0 +1,3571 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEil@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPiPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPiPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:_DYNAMIC
+OBJECT:0:_GLOBAL_OFFSET_TABLE_
+OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
+OBJECT:0:_edata
+OBJECT:0:_end
+OBJECT:0:_etext
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+TLS:4:_ZSt11__once_call@@GLIBCXX_3.4.11
+TLS:4:_ZSt15__once_callable@@GLIBCXX_3.4.11
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
new file mode 100644
index 000000000..ae03a0919
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
@@ -0,0 +1,3577 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVli@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVli@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:_DYNAMIC
+OBJECT:0:_GLOBAL_OFFSET_TABLE_
+OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
+OBJECT:0:_edata
+OBJECT:0:_end
+OBJECT:0:_etext
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+TLS:8:_ZSt11__once_call@@GLIBCXX_3.4.11
+TLS:8:_ZSt15__once_callable@@GLIBCXX_3.4.11
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/baseline_symbols.txt
new file mode 100644
index 000000000..6e4db5da7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/baseline_symbols.txt
@@ -0,0 +1,3581 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEil@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPiPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPiPKjbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EPiPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPij@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:acosf@@GLIBCXX_3.4.3
+FUNC:acosl@@GLIBCXX_3.4.3
+FUNC:asinf@@GLIBCXX_3.4.3
+FUNC:asinl@@GLIBCXX_3.4.3
+FUNC:atan2f@@GLIBCXX_3.4
+FUNC:atan2l@@GLIBCXX_3.4
+FUNC:atanf@@GLIBCXX_3.4.3
+FUNC:atanl@@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceilf@@GLIBCXX_3.4.3
+FUNC:ceill@@GLIBCXX_3.4.3
+FUNC:cosf@@GLIBCXX_3.4
+FUNC:coshf@@GLIBCXX_3.4
+FUNC:coshl@@GLIBCXX_3.4
+FUNC:cosl@@GLIBCXX_3.4
+FUNC:expf@@GLIBCXX_3.4
+FUNC:expl@@GLIBCXX_3.4
+FUNC:floorf@@GLIBCXX_3.4.3
+FUNC:floorl@@GLIBCXX_3.4.3
+FUNC:fmodf@@GLIBCXX_3.4.3
+FUNC:fmodl@@GLIBCXX_3.4.3
+FUNC:frexpf@@GLIBCXX_3.4.3
+FUNC:frexpl@@GLIBCXX_3.4.3
+FUNC:hypotf@@GLIBCXX_3.4
+FUNC:hypotl@@GLIBCXX_3.4
+FUNC:ldexpf@@GLIBCXX_3.4.3
+FUNC:ldexpl@@GLIBCXX_3.4.3
+FUNC:log10f@@GLIBCXX_3.4
+FUNC:log10l@@GLIBCXX_3.4
+FUNC:logf@@GLIBCXX_3.4
+FUNC:logl@@GLIBCXX_3.4
+FUNC:modfl@@GLIBCXX_3.4.3
+FUNC:powf@@GLIBCXX_3.4
+FUNC:powl@@GLIBCXX_3.4
+FUNC:sinf@@GLIBCXX_3.4
+FUNC:sinhf@@GLIBCXX_3.4
+FUNC:sinhl@@GLIBCXX_3.4
+FUNC:sinl@@GLIBCXX_3.4
+FUNC:sqrtf@@GLIBCXX_3.4
+FUNC:sqrtl@@GLIBCXX_3.4
+FUNC:tanf@@GLIBCXX_3.4
+FUNC:tanhf@@GLIBCXX_3.4
+FUNC:tanhl@@GLIBCXX_3.4
+FUNC:tanl@@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:_DYNAMIC
+OBJECT:0:_GLOBAL_OFFSET_TABLE_
+OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
+OBJECT:0:_edata
+OBJECT:0:_end
+OBJECT:0:_etext
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt
new file mode 100644
index 000000000..a30c45eb2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt
@@ -0,0 +1,3587 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVli@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVli@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP6__FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEjPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pj@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEjw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP6__FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPiPKjbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EPiPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEPi@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPim@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:acosf@@GLIBCXX_3.4.3
+FUNC:acosl@@GLIBCXX_3.4.3
+FUNC:asinf@@GLIBCXX_3.4.3
+FUNC:asinl@@GLIBCXX_3.4.3
+FUNC:atan2f@@GLIBCXX_3.4
+FUNC:atan2l@@GLIBCXX_3.4
+FUNC:atanf@@GLIBCXX_3.4.3
+FUNC:atanl@@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceilf@@GLIBCXX_3.4.3
+FUNC:ceill@@GLIBCXX_3.4.3
+FUNC:cosf@@GLIBCXX_3.4
+FUNC:coshf@@GLIBCXX_3.4
+FUNC:coshl@@GLIBCXX_3.4
+FUNC:cosl@@GLIBCXX_3.4
+FUNC:expf@@GLIBCXX_3.4
+FUNC:expl@@GLIBCXX_3.4
+FUNC:floorf@@GLIBCXX_3.4.3
+FUNC:floorl@@GLIBCXX_3.4.3
+FUNC:fmodf@@GLIBCXX_3.4.3
+FUNC:fmodl@@GLIBCXX_3.4.3
+FUNC:frexpf@@GLIBCXX_3.4.3
+FUNC:frexpl@@GLIBCXX_3.4.3
+FUNC:hypotf@@GLIBCXX_3.4
+FUNC:hypotl@@GLIBCXX_3.4
+FUNC:ldexpf@@GLIBCXX_3.4.3
+FUNC:ldexpl@@GLIBCXX_3.4.3
+FUNC:log10f@@GLIBCXX_3.4
+FUNC:log10l@@GLIBCXX_3.4
+FUNC:logf@@GLIBCXX_3.4
+FUNC:logl@@GLIBCXX_3.4
+FUNC:modfl@@GLIBCXX_3.4.3
+FUNC:powf@@GLIBCXX_3.4
+FUNC:powl@@GLIBCXX_3.4
+FUNC:sinf@@GLIBCXX_3.4
+FUNC:sinhf@@GLIBCXX_3.4
+FUNC:sinhl@@GLIBCXX_3.4
+FUNC:sinl@@GLIBCXX_3.4
+FUNC:sqrtf@@GLIBCXX_3.4
+FUNC:sqrtl@@GLIBCXX_3.4
+FUNC:tanf@@GLIBCXX_3.4
+FUNC:tanhf@@GLIBCXX_3.4
+FUNC:tanhl@@GLIBCXX_3.4
+FUNC:tanl@@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:_DYNAMIC
+OBJECT:0:_GLOBAL_OFFSET_TABLE_
+OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
+OBJECT:0:_edata
+OBJECT:0:_end
+OBJECT:0:_etext
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/sparc-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..e025a2e79
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3909 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:CXXABI_LDBL_1.3
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPg@@CXXABI_LDBL_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIg@@CXXABI_LDBL_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
new file mode 100644
index 000000000..d93d24131
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
@@ -0,0 +1,3604 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcjj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsj@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcj@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEjPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwj@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPci@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPci@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEii@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPci@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcic@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPci@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEjj@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEjjc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEj@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEjc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcj@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjPKcj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEj@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPci@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2Ei@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcj@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znaj@@GLIBCXX_3.4
+FUNC:_ZnajRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwj@@GLIBCXX_3.4
+FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:12:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:12:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:12:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:12:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:140:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:140:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:144:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:144:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:148:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIPKa@@CXXABI_1.3
+OBJECT:16:_ZTIPKb@@CXXABI_1.3
+OBJECT:16:_ZTIPKc@@CXXABI_1.3
+OBJECT:16:_ZTIPKd@@CXXABI_1.3
+OBJECT:16:_ZTIPKe@@CXXABI_1.3
+OBJECT:16:_ZTIPKf@@CXXABI_1.3
+OBJECT:16:_ZTIPKh@@CXXABI_1.3
+OBJECT:16:_ZTIPKi@@CXXABI_1.3
+OBJECT:16:_ZTIPKj@@CXXABI_1.3
+OBJECT:16:_ZTIPKl@@CXXABI_1.3
+OBJECT:16:_ZTIPKm@@CXXABI_1.3
+OBJECT:16:_ZTIPKs@@CXXABI_1.3
+OBJECT:16:_ZTIPKt@@CXXABI_1.3
+OBJECT:16:_ZTIPKv@@CXXABI_1.3
+OBJECT:16:_ZTIPKw@@CXXABI_1.3
+OBJECT:16:_ZTIPKx@@CXXABI_1.3
+OBJECT:16:_ZTIPKy@@CXXABI_1.3
+OBJECT:16:_ZTIPa@@CXXABI_1.3
+OBJECT:16:_ZTIPb@@CXXABI_1.3
+OBJECT:16:_ZTIPc@@CXXABI_1.3
+OBJECT:16:_ZTIPd@@CXXABI_1.3
+OBJECT:16:_ZTIPe@@CXXABI_1.3
+OBJECT:16:_ZTIPf@@CXXABI_1.3
+OBJECT:16:_ZTIPh@@CXXABI_1.3
+OBJECT:16:_ZTIPi@@CXXABI_1.3
+OBJECT:16:_ZTIPj@@CXXABI_1.3
+OBJECT:16:_ZTIPl@@CXXABI_1.3
+OBJECT:16:_ZTIPm@@CXXABI_1.3
+OBJECT:16:_ZTIPs@@CXXABI_1.3
+OBJECT:16:_ZTIPt@@CXXABI_1.3
+OBJECT:16:_ZTIPv@@CXXABI_1.3
+OBJECT:16:_ZTIPw@@CXXABI_1.3
+OBJECT:16:_ZTIPx@@CXXABI_1.3
+OBJECT:16:_ZTIPy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:20:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:20:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISi@@GLIBCXX_3.4
+OBJECT:24:_ZTISo@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTTSd@@GLIBCXX_3.4
+OBJECT:28:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:28:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZTISd@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:32:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:36:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSi@@GLIBCXX_3.4
+OBJECT:40:_ZTVSo@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:4:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:52:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:56:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSd@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:64:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDd@@CXXABI_1.3.4
+OBJECT:8:_ZTIDe@@CXXABI_1.3.4
+OBJECT:8:_ZTIDf@@CXXABI_1.3.4
+OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+OBJECT:8:_ZTIDs@@CXXABI_1.3.3
+OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:8:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:8:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:8:_ZTIa@@CXXABI_1.3
+OBJECT:8:_ZTIb@@CXXABI_1.3
+OBJECT:8:_ZTIc@@CXXABI_1.3
+OBJECT:8:_ZTId@@CXXABI_1.3
+OBJECT:8:_ZTIe@@CXXABI_1.3
+OBJECT:8:_ZTIf@@CXXABI_1.3
+OBJECT:8:_ZTIh@@CXXABI_1.3
+OBJECT:8:_ZTIi@@CXXABI_1.3
+OBJECT:8:_ZTIj@@CXXABI_1.3
+OBJECT:8:_ZTIl@@CXXABI_1.3
+OBJECT:8:_ZTIm@@CXXABI_1.3
+OBJECT:8:_ZTIs@@CXXABI_1.3
+OBJECT:8:_ZTIt@@CXXABI_1.3
+OBJECT:8:_ZTIv@@CXXABI_1.3
+OBJECT:8:_ZTIw@@CXXABI_1.3
+OBJECT:8:_ZTIx@@CXXABI_1.3
+OBJECT:8:_ZTIy@@CXXABI_1.3
+OBJECT:8:_ZTTSi@@GLIBCXX_3.4
+OBJECT:8:_ZTTSo@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:8:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
new file mode 100644
index 000000000..d6708de9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
@@ -0,0 +1,3610 @@
+FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__array_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv117__pbase_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv119__pointer_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__function_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv120__si_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv121__vmi_class_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv123__fundamental_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
+FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
+FUNC:_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
+FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
+FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__function_type_info15__is_function_pEv@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@@CXXABI_1.3
+FUNC:_ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@@CXXABI_1.3
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
+FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs12find_last_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs13find_first_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs13get_allocatorEv@@GLIBCXX_3.4
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs16find_last_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs17find_first_not_ofEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNKSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs4cendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs4copyEPcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs4findEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5c_strEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5crendEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs5emptyEv@@GLIBCXX_3.4
+FUNC:_ZNKSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSs5rfindEPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEPKcmm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindERKSsm@@GLIBCXX_3.4
+FUNC:_ZNKSs5rfindEcm@@GLIBCXX_3.4
+FUNC:_ZNKSs6_M_repEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6cbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs6lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs6substrEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_dataEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7_M_iendEv@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSs7compareEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNKSs7crbeginEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSs8_M_checkEmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
+FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb0EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE10pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE11frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_negative_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_positive_signEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
+FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
+FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
+FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt6localeeqERKS_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4
+FUNC:_ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10_M_compareEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12_M_transformEPwPKwm@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE12do_transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE4hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7compareEPKwS2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE7do_hashEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7collateIwE9transformEPKwS2_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE20_M_convert_from_charEPc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE4openERKSsRKSt6localePKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE5closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE7do_openERKSsRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNKSt8messagesIwE8do_closeEi@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE11do_truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE12do_falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE13thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_decimal_pointEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE16do_thousands_sepEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8groupingEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE8truenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8numpunctIwE9falsenameEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
+FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9exception4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9strstream6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIcEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@@GLIBCXX_3.4.14
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
+FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCXX_3.4
+FUNC:_ZNSi3getERc@@GLIBCXX_3.4
+FUNC:_ZNSi3getEv@@GLIBCXX_3.4
+FUNC:_ZNSi4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSi4readEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSi5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSi5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEli@@GLIBCXX_3.4
+FUNC:_ZNSi6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSi6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC1ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi6sentryC2ERSib@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPcl@@GLIBCXX_3.4
+FUNC:_ZNSi7getlineEPclc@@GLIBCXX_3.4
+FUNC:_ZNSi7putbackEc@@GLIBCXX_3.4
+FUNC:_ZNSi8readsomeEPcl@@GLIBCXX_3.4
+FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSiC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSiD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSiS_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSirsERPv@@GLIBCXX_3.4
+FUNC:_ZNSirsERb@@GLIBCXX_3.4
+FUNC:_ZNSirsERd@@GLIBCXX_3.4
+FUNC:_ZNSirsERe@@GLIBCXX_3.4
+FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERi@@GLIBCXX_3.4
+FUNC:_ZNSirsERj@@GLIBCXX_3.4
+FUNC:_ZNSirsERl@@GLIBCXX_3.4
+FUNC:_ZNSirsERm@@GLIBCXX_3.4
+FUNC:_ZNSirsERs@@GLIBCXX_3.4
+FUNC:_ZNSirsERt@@GLIBCXX_3.4
+FUNC:_ZNSirsERx@@GLIBCXX_3.4
+FUNC:_ZNSirsERy@@GLIBCXX_3.4
+FUNC:_ZNSo3putEc@@GLIBCXX_3.4
+FUNC:_ZNSo5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSo5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSo5writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC1ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSoC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+FUNC:_ZNSolsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+FUNC:_ZNSolsEb@@GLIBCXX_3.4
+FUNC:_ZNSolsEd@@GLIBCXX_3.4
+FUNC:_ZNSolsEe@@GLIBCXX_3.4
+FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEi@@GLIBCXX_3.4
+FUNC:_ZNSolsEj@@GLIBCXX_3.4
+FUNC:_ZNSolsEl@@GLIBCXX_3.4
+FUNC:_ZNSolsEm@@GLIBCXX_3.4
+FUNC:_ZNSolsEs@@GLIBCXX_3.4
+FUNC:_ZNSolsEt@@GLIBCXX_3.4
+FUNC:_ZNSolsEx@@GLIBCXX_3.4
+FUNC:_ZNSolsEy@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructEmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCXX_3.4
+FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep12_S_empty_repEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
+FUNC:_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+FUNC:_ZNSs5clearEv@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCXX_3.4
+FUNC:_ZNSs5eraseEmm@@GLIBCXX_3.4
+FUNC:_ZNSs5frontEv@@GLIBCXX_3.4.15
+FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEmmc@@GLIBCXX_3.4
+FUNC:_ZNSs6rbeginEv@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEm@@GLIBCXX_3.4
+FUNC:_ZNSs6resizeEmc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7_M_dataEPc@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_leakEv@@GLIBCXX_3.4
+FUNC:_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
+FUNC:_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSs@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmRKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEmmmc@@GLIBCXX_3.4
+FUNC:_ZNSs7reserveEm@@GLIBCXX_3.4
+FUNC:_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
+FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
+FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
+FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsaSEOSs@@GLIBCXX_3.4.14
+FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
+FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSsaSEc@@GLIBCXX_3.4
+FUNC:_ZNSsixEm@@GLIBCXX_3.4
+FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
+FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
+FUNC:_ZNSspLEc@@GLIBCXX_3.4
+FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC1EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPc@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamC2EPcl@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10istrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10moneypunctIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11__timepunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12ctype_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12ctype_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12domain_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12future_errorD0Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD1Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12future_errorD2Ev@@GLIBCXX_3.4.14
+FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12length_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt12strstreambuf3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_allocEm@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_l@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC1El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPFPvmEPFvS0_E@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKal@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPKhl@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPalS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPclS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2EPhlS0_@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt13__future_base11_State_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@@GLIBCXX_3.4.15
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4.13
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14error_categoryC1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryC2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14error_categoryD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt14overflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base11_M_transferEPS_S0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base4hookEPS_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base7_M_hookEPS_@@GLIBCXX_3.4.14
+FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15messages_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15numpunct_bynameIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt15underflow_errorD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5
+FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5
+FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__timepunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17bad_function_callD0Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD1Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17bad_function_callD2Ev@@GLIBCXX_3.4.15
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17moneypunct_bynameIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIcLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb0EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18__moneypunct_cacheIwLb1EED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
+FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EP15__locale_structPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcEC2EPKtbm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwE19_M_initialize_ctypeEv@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
+FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2EPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facetD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale6globalERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6locale7classicEv@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPKc@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_PKci@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2ERKS_S1_i@@GLIBCXX_3.4
+FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7codecvtIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7collateIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
+FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base6xallocEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_baseD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2EP15__locale_structPKcm@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8messagesIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EP15__locale_structm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8numpunctIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2ERKS0_@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base10_M_reverseEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9exceptionD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
+FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
+FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5
+FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
+FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
+FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
+FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
+FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
+FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
+FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14
+FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4
+FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt5ctypeIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7collateIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8messagesIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8numpunctIwEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7collateIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCXX_3.4
+FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@@GLIBCXX_3.4
+FUNC:_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@@GLIBCXX_3.4
+FUNC:_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCXX_3.4
+FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCXX_3.4
+FUNC:_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZThn16_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSdD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSiD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSoD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10istrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt10ostrstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD0Ev@@GLIBCXX_3.4
+FUNC:_ZTv0_n24_NSt9strstreamD1Ev@@GLIBCXX_3.4
+FUNC:_ZdaPv@@GLIBCXX_3.4
+FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_ZdlPv@@GLIBCXX_3.4
+FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znam@@GLIBCXX_3.4
+FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:_Znwm@@GLIBCXX_3.4
+FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
+FUNC:__cxa_allocate_exception@@CXXABI_1.3
+FUNC:__cxa_bad_cast@@CXXABI_1.3
+FUNC:__cxa_bad_typeid@@CXXABI_1.3
+FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_unexpected@@CXXABI_1.3
+FUNC:__cxa_current_exception_type@@CXXABI_1.3
+FUNC:__cxa_demangle@@CXXABI_1.3
+FUNC:__cxa_end_catch@@CXXABI_1.3
+FUNC:__cxa_free_exception@@CXXABI_1.3
+FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+FUNC:__cxa_get_globals@@CXXABI_1.3
+FUNC:__cxa_get_globals_fast@@CXXABI_1.3
+FUNC:__cxa_guard_abort@@CXXABI_1.3
+FUNC:__cxa_guard_acquire@@CXXABI_1.3
+FUNC:__cxa_guard_release@@CXXABI_1.3
+FUNC:__cxa_pure_virtual@@CXXABI_1.3
+FUNC:__cxa_rethrow@@CXXABI_1.3
+FUNC:__cxa_throw@@CXXABI_1.3
+FUNC:__cxa_vec_cctor@@CXXABI_1.3
+FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+FUNC:__cxa_vec_ctor@@CXXABI_1.3
+FUNC:__cxa_vec_delete2@@CXXABI_1.3
+FUNC:__cxa_vec_delete3@@CXXABI_1.3
+FUNC:__cxa_vec_delete@@CXXABI_1.3
+FUNC:__cxa_vec_dtor@@CXXABI_1.3
+FUNC:__cxa_vec_new2@@CXXABI_1.3
+FUNC:__cxa_vec_new3@@CXXABI_1.3
+FUNC:__cxa_vec_new@@CXXABI_1.3
+FUNC:__dynamic_cast@@CXXABI_1.3
+FUNC:__gxx_personality_v0@@CXXABI_1.3
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+OBJECT:0:CXXABI_1.3
+OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_1.3.4
+OBJECT:0:CXXABI_1.3.5
+OBJECT:0:GLIBCXX_3.4
+OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
+OBJECT:0:GLIBCXX_3.4.12
+OBJECT:0:GLIBCXX_3.4.13
+OBJECT:0:GLIBCXX_3.4.14
+OBJECT:0:GLIBCXX_3.4.15
+OBJECT:0:GLIBCXX_3.4.2
+OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.4
+OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:104:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIcE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:112:_ZNSt17__timepunct_cacheIwE12_S_timezonesE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSd@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:128:_ZTVSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8bad_cast@@GLIBCXX_3.4
+OBJECT:12:_ZTSSt8ios_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9exception@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9strstream@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9time_base@@GLIBCXX_3.4
+OBJECT:13:_ZTSSt9type_info@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIcE@@GLIBCXX_3.4
+OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDd@@CXXABI_1.3.4
+OBJECT:16:_ZTIDe@@CXXABI_1.3.4
+OBJECT:16:_ZTIDf@@CXXABI_1.3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
+OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTISt16nested_exception@@CXXABI_1.3.5
+OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
+OBJECT:16:_ZTIa@@CXXABI_1.3
+OBJECT:16:_ZTIb@@CXXABI_1.3
+OBJECT:16:_ZTIc@@CXXABI_1.3
+OBJECT:16:_ZTId@@CXXABI_1.3
+OBJECT:16:_ZTIe@@CXXABI_1.3
+OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIh@@CXXABI_1.3
+OBJECT:16:_ZTIi@@CXXABI_1.3
+OBJECT:16:_ZTIj@@CXXABI_1.3
+OBJECT:16:_ZTIl@@CXXABI_1.3
+OBJECT:16:_ZTIm@@CXXABI_1.3
+OBJECT:16:_ZTIn@@CXXABI_1.3.5
+OBJECT:16:_ZTIo@@CXXABI_1.3.5
+OBJECT:16:_ZTIs@@CXXABI_1.3
+OBJECT:16:_ZTIt@@CXXABI_1.3
+OBJECT:16:_ZTIv@@CXXABI_1.3
+OBJECT:16:_ZTIw@@CXXABI_1.3
+OBJECT:16:_ZTIx@@CXXABI_1.3
+OBJECT:16:_ZTIy@@CXXABI_1.3
+OBJECT:16:_ZTSSt11logic_error@@GLIBCXX_3.4
+OBJECT:16:_ZTSSt11range_error@@GLIBCXX_3.4
+OBJECT:16:_ZTTSi@@GLIBCXX_3.4
+OBJECT:16:_ZTTSo@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:16:_ZTTSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12codecvt_base@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12future_error@@GLIBCXX_3.4.14
+OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
+OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
+OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
+OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
+OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt12placeholders2_1E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_2E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_3E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_4E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_5E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_6E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_7E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_8E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders2_9E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_10E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_11E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_12E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_13E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_14E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_15E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_16E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_17E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_18E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_19E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_20E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_21E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_22E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_23E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_24E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_25E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_26E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_27E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_28E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt12placeholders3_29E@@GLIBCXX_3.4.15
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIwE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb0EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt17moneypunct_bynameIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:22:_ZTSSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11logic_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11range_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt11regex_error@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12ctype_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12future_error@@GLIBCXX_3.4.14
+OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
+OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt13runtime_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt14overflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4
+OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7collateIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8bad_cast@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9bad_alloc@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt4clog@@GLIBCXX_3.4
+OBJECT:272:_ZSt4cout@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcerr@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wclog@@GLIBCXX_3.4
+OBJECT:272:_ZSt5wcout@@GLIBCXX_3.4
+OBJECT:280:_ZSt3cin@@GLIBCXX_3.4
+OBJECT:280:_ZSt4wcin@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:29:_ZTSSt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alnumE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5alphaE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5cntrlE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5digitE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5graphE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5lowerE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5printE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
+OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
+OBJECT:2:_ZTSa@@CXXABI_1.3
+OBJECT:2:_ZTSb@@CXXABI_1.3
+OBJECT:2:_ZTSc@@CXXABI_1.3
+OBJECT:2:_ZTSd@@CXXABI_1.3
+OBJECT:2:_ZTSe@@CXXABI_1.3
+OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSh@@CXXABI_1.3
+OBJECT:2:_ZTSi@@CXXABI_1.3
+OBJECT:2:_ZTSj@@CXXABI_1.3
+OBJECT:2:_ZTSl@@CXXABI_1.3
+OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSs@@CXXABI_1.3
+OBJECT:2:_ZTSt@@CXXABI_1.3
+OBJECT:2:_ZTSv@@CXXABI_1.3
+OBJECT:2:_ZTSw@@CXXABI_1.3
+OBJECT:2:_ZTSx@@CXXABI_1.3
+OBJECT:2:_ZTSy@@CXXABI_1.3
+OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKa@@CXXABI_1.3
+OBJECT:32:_ZTIPKb@@CXXABI_1.3
+OBJECT:32:_ZTIPKc@@CXXABI_1.3
+OBJECT:32:_ZTIPKd@@CXXABI_1.3
+OBJECT:32:_ZTIPKe@@CXXABI_1.3
+OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKh@@CXXABI_1.3
+OBJECT:32:_ZTIPKi@@CXXABI_1.3
+OBJECT:32:_ZTIPKj@@CXXABI_1.3
+OBJECT:32:_ZTIPKl@@CXXABI_1.3
+OBJECT:32:_ZTIPKm@@CXXABI_1.3
+OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPKs@@CXXABI_1.3
+OBJECT:32:_ZTIPKt@@CXXABI_1.3
+OBJECT:32:_ZTIPKv@@CXXABI_1.3
+OBJECT:32:_ZTIPKw@@CXXABI_1.3
+OBJECT:32:_ZTIPKx@@CXXABI_1.3
+OBJECT:32:_ZTIPKy@@CXXABI_1.3
+OBJECT:32:_ZTIPa@@CXXABI_1.3
+OBJECT:32:_ZTIPb@@CXXABI_1.3
+OBJECT:32:_ZTIPc@@CXXABI_1.3
+OBJECT:32:_ZTIPd@@CXXABI_1.3
+OBJECT:32:_ZTIPe@@CXXABI_1.3
+OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPh@@CXXABI_1.3
+OBJECT:32:_ZTIPi@@CXXABI_1.3
+OBJECT:32:_ZTIPj@@CXXABI_1.3
+OBJECT:32:_ZTIPl@@CXXABI_1.3
+OBJECT:32:_ZTIPm@@CXXABI_1.3
+OBJECT:32:_ZTIPn@@CXXABI_1.3.5
+OBJECT:32:_ZTIPo@@CXXABI_1.3.5
+OBJECT:32:_ZTIPs@@CXXABI_1.3
+OBJECT:32:_ZTIPt@@CXXABI_1.3
+OBJECT:32:_ZTIPv@@CXXABI_1.3
+OBJECT:32:_ZTIPw@@CXXABI_1.3
+OBJECT:32:_ZTIPx@@CXXABI_1.3
+OBJECT:32:_ZTIPy@@CXXABI_1.3
+OBJECT:32:_ZTTSt10istrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt10ostrstream@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVNSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIcE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt16nested_exception@@CXXABI_1.3.5
+OBJECT:32:_ZTVSt8ios_base@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:32:_ZTVSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:34:_ZTSSt9basic_iosIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:36:_ZTSSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:3:_ZTSPa@@CXXABI_1.3
+OBJECT:3:_ZTSPb@@CXXABI_1.3
+OBJECT:3:_ZTSPc@@CXXABI_1.3
+OBJECT:3:_ZTSPd@@CXXABI_1.3
+OBJECT:3:_ZTSPe@@CXXABI_1.3
+OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPh@@CXXABI_1.3
+OBJECT:3:_ZTSPi@@CXXABI_1.3
+OBJECT:3:_ZTSPj@@CXXABI_1.3
+OBJECT:3:_ZTSPl@@CXXABI_1.3
+OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPs@@CXXABI_1.3
+OBJECT:3:_ZTSPt@@CXXABI_1.3
+OBJECT:3:_ZTSPv@@CXXABI_1.3
+OBJECT:3:_ZTSPw@@CXXABI_1.3
+OBJECT:3:_ZTSPx@@CXXABI_1.3
+OBJECT:3:_ZTSPy@@CXXABI_1.3
+OBJECT:3:_ZTSSd@@GLIBCXX_3.4
+OBJECT:3:_ZTSSi@@GLIBCXX_3.4
+OBJECT:3:_ZTSSo@@GLIBCXX_3.4
+OBJECT:40:_ZTISi@@GLIBCXX_3.4
+OBJECT:40:_ZTISo@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTISt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt11regex_error@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12bad_weak_ptr@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12future_error@@GLIBCXX_3.4.14
+OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
+OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15
+OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9bad_alloc@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt9exception@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:45:_ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:46:_ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:48:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIwE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIwE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12max_digits10E@@GLIBCXX_3.4.14
+OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale3allE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4noneE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale4timeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7collateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale7numericE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8messagesE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base2inE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3appE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3begE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3curE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3decE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3endE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3octE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base3outE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
+OBJECT:4:_ZTSPKa@@CXXABI_1.3
+OBJECT:4:_ZTSPKb@@CXXABI_1.3
+OBJECT:4:_ZTSPKc@@CXXABI_1.3
+OBJECT:4:_ZTSPKd@@CXXABI_1.3
+OBJECT:4:_ZTSPKe@@CXXABI_1.3
+OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKh@@CXXABI_1.3
+OBJECT:4:_ZTSPKi@@CXXABI_1.3
+OBJECT:4:_ZTSPKj@@CXXABI_1.3
+OBJECT:4:_ZTSPKl@@CXXABI_1.3
+OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKs@@CXXABI_1.3
+OBJECT:4:_ZTSPKt@@CXXABI_1.3
+OBJECT:4:_ZTSPKv@@CXXABI_1.3
+OBJECT:4:_ZTSPKw@@CXXABI_1.3
+OBJECT:4:_ZTSPKx@@CXXABI_1.3
+OBJECT:4:_ZTSPKy@@CXXABI_1.3
+OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:54:_ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISd@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIcLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb0EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt10moneypunctIwLb1EE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt21__ctype_abstract_baseIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8messagesIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:56:_ZTTSd@@GLIBCXX_3.4
+OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt15messages_bynameIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt7collateIwE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIcE@@GLIBCXX_3.4
+OBJECT:56:_ZTVSt8messagesIwE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:58:_ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:59:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:64:_ZTVN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv120__function_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVN10__cxxabiv123__fundamental_type_infoE@@CXXABI_1.3
+OBJECT:64:_ZTVSt9type_info@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
+OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
+OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTTSt9strstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSi@@GLIBCXX_3.4
+OBJECT:80:_ZTVSo@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10istrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt10ostrstream@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
+OBJECT:88:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt14codecvt_bynameIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSbIwSt11char_traitsIwESaIwEE4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4_Rep11_S_max_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSs4nposE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base11_S_atoms_inE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10__num_base12_S_atoms_outE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10money_base8_S_atomsE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7collateIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8messagesIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIcE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8numpunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZSt15future_category@@GLIBCXX_3.4.14
+OBJECT:96:_ZTVSt12ctype_bynameIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt5ctypeIcE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+OBJECT:96:_ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu-versioned-namespace.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu-versioned-namespace.ver
new file mode 100644
index 000000000..ab9380c37
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu-versioned-namespace.ver
@@ -0,0 +1,304 @@
+## Linker script for GNU namespace versioning.
+##
+## Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009, 2011
+## Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+##
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+GLIBCXX_5.0 {
+
+  global:
+
+    # Names inside the 'extern' block are demangled names.
+    extern "C++"
+    {
+      std::_6::*;
+      std::*
+    };
+
+    # locale
+    _ZNSt2_69has_facetINS_*;
+
+    # hash 
+    _ZNSt8__detail2_612__prime_listE;
+    _ZNSt3tr18__detail2_612__prime_listE;
+
+    # thread/mutex/condition_variable/future
+    __once_proxy;
+
+    # operator new(size_t)
+    _Znw[jm];
+    # operator new(size_t, std::nothrow_t const&)
+    _Znw[jm]RKSt9nothrow_t;
+
+    # operator delete(void*)
+    _ZdlPv;
+    # operator delete(void*, std::nothrow_t const&)
+    _ZdlPvRKSt9nothrow_t;
+
+    # operator new[](size_t)
+    _Zna[jm];
+    # operator new[](size_t, std::nothrow_t const&)
+    _Zna[jm]RKSt9nothrow_t;
+
+    # operator delete[](void*)
+    _ZdaPv;
+    # operator delete[](void*, std::nothrow_t const&)
+    _ZdaPvRKSt9nothrow_t;
+
+    # function-scope static objects requires a guard variable.
+    _ZGVNSt*;
+
+    _ZTT*;
+    _ZTV*;
+
+    _ZTI*;
+    _ZTS*;
+
+    _ZTv0_n*;
+
+    # std::__detail::_List_node_base
+    _ZNSt8__detail2_615_List_node_base7_M_hook*;
+    _ZNSt8__detail2_615_List_node_base9_M_unhookEv;
+    _ZNSt8__detail2_615_List_node_base10_M_reverseEv;
+    _ZNSt8__detail2_615_List_node_base11_M_transfer*;
+    _ZNSt8__detail2_615_List_node_base4swapER*;
+
+    # std::__convert_to_v
+    _ZNSt2_614__convert_to_v*;
+
+    # std::__copy_streambufs
+    _ZNSt2_617__copy_streambufsI*;
+    _ZNSt2_621__copy_streambufs_eofI*;
+
+    # __gnu_cxx::__atomic_add
+    # __gnu_cxx::__exchange_and_add
+    _ZN9__gnu_cxx2_612__atomic_addEPV[il][il];
+    _ZN9__gnu_cxx2_618__exchange_and_addEPV[li][il];
+
+    # __gnu_cxx::__pool
+    _ZN9__gnu_cxx2_66__poolILb[01]EE13_M_initializeEv;
+    _ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reserve_blockE[jm][jm];
+    _ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reclaim_blockEPc[jm];
+    _ZN9__gnu_cxx2_66__poolILb[01]EE10_M_destroyEv;
+    _ZN9__gnu_cxx2_66__poolILb1EE16_M_get_thread_idEv;
+
+    _ZN9__gnu_cxx2_617__pool_alloc_base9_M_refillE[jm];    
+    _ZN9__gnu_cxx2_617__pool_alloc_base16_M_get_free_listE[jm];
+    _ZN9__gnu_cxx2_617__pool_alloc_base12_M_get_mutexEv;
+
+    _ZN9__gnu_cxx2_69free_list6_M_getE[jm];
+    _ZN9__gnu_cxx2_69free_list8_M_clearEv;
+
+    # __gnu_cxx::stdio_sync_filebuf
+    _ZTVN9__gnu_cxx2_618stdio_sync_filebufI[cw]St2_611char_traitsI[cw]EEE;
+    _ZN9__gnu_cxx2_618stdio_sync_filebufI[cw]NSt2_611char_traitsI[cw]EEE[5-9]*;
+
+    # debug mode
+    _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv;
+    _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
+    _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
+    _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
+    _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
+
+    _ZN11__gnu_debug19_Safe_iterator_base9_M_attach*;
+    _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_single*;
+    _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
+    _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv;
+    _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv;
+    _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
+    _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
+
+    _ZNK11__gnu_debug16_Error_formatter10_M_message*;
+    _ZNK11__gnu_debug16_Error_formatter10_Parameter*;
+    _ZNK11__gnu_debug16_Error_formatter13_M_print_word*;
+    _ZNK11__gnu_debug16_Error_formatter15_M_print_string*;
+    _ZNK11__gnu_debug16_Error_formatter8_M_error*;
+    _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv;
+
+    # parallel mode
+    _ZN14__gnu_parallel9_Settings3getEv;
+    _ZN14__gnu_parallel9_Settings3setERS0_;
+
+  local:
+    *;
+};
+
+
+# Symbols in the support library (libsupc++) have their own tag.
+CXXABI_2.0 {
+
+  global:
+    __cxa_allocate_exception;
+    __cxa_bad_cast;
+    __cxa_bad_typeid;
+    __cxa_begin_catch;
+    __cxa_begin_cleanup;
+    __cxa_call_unexpected;
+    __cxa_current_exception_type;
+    __cxa_demangle;
+    __cxa_end_catch;
+    __cxa_end_cleanup;
+    __cxa_free_exception;
+    __cxa_get_exception_ptr;
+    __cxa_get_globals;
+    __cxa_get_globals_fast;
+    __cxa_guard_abort;
+    __cxa_guard_acquire;
+    __cxa_guard_release;
+    __cxa_pure_virtual;
+    __cxa_rethrow;
+    __cxa_throw;
+    __cxa_type_match;
+    __cxa_vec_cctor;
+    __cxa_vec_cleanup;
+    __cxa_vec_ctor;
+    __cxa_vec_delete2;
+    __cxa_vec_delete3;
+    __cxa_vec_delete;
+    __cxa_vec_dtor;
+    __cxa_vec_new2;
+    __cxa_vec_new3;
+    __cxa_vec_new;
+    __gxx_personality_v0;
+    __gxx_personality_sj0;
+    __dynamic_cast;
+
+    # std::exception_ptr
+    _ZNSt15__exception_ptr13exception_ptrC1Ev;
+    _ZNSt15__exception_ptr13exception_ptrC2Ev;
+    _ZNSt15__exception_ptr13exception_ptrC1ERKS0_;
+    _ZNSt15__exception_ptr13exception_ptrC2ERKS0_;
+    _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE;
+    _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE;
+    _ZNSt15__exception_ptr13exception_ptrD1Ev;
+    _ZNSt15__exception_ptr13exception_ptrD2Ev;
+    _ZNSt15__exception_ptr13exception_ptraSERKS0_;
+    _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv;
+    _ZNKSt15__exception_ptr13exception_ptrntEv;
+    _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv;
+    _ZNSt15__exception_ptr13exception_ptr4swapERS0_;
+    _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_;
+    _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_;
+
+    _ZSt17current_exceptionv;
+    _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
+
+    # std::bad_function_call.
+    _ZNSt17bad_function_callD*;
+    _ZTISt17bad_function_call;
+    _ZTSSt17bad_function_call;
+    _ZTVSt17bad_function_call;
+
+    # Default function.
+    _ZSt11_Hash_bytesPKv*;
+
+    # FNV hash.
+    _ZSt15_Fnv_hash_bytesPKv*;
+
+    # __gnu_cxx::_verbose_terminate_handler()
+    _ZN9__gnu_cxx2_627__verbose_terminate_handlerEv;
+
+    # *_type_info classes, ctor and dtor
+    _ZN10__cxxabiv117__array_type_info*;
+    _ZN10__cxxabiv117__class_type_info*;
+    _ZN10__cxxabiv116__enum_type_info*;
+    _ZN10__cxxabiv120__function_type_info*;
+    _ZN10__cxxabiv123__fundamental_type_info*;
+    _ZN10__cxxabiv117__pbase_type_info*;
+    _ZN10__cxxabiv129__pointer_to_member_type_info*;
+    _ZN10__cxxabiv119__pointer_type_info*;
+    _ZN10__cxxabiv120__si_class_type_info*;
+    _ZN10__cxxabiv121__vmi_class_type_info*;
+
+    # *_type_info classes, member functions
+    _ZNK10__cxxabiv117__class_type_info*;
+    _ZNK10__cxxabiv120__function_type_info*;
+    _ZNK10__cxxabiv117__pbase_type_info*;
+    _ZNK10__cxxabiv129__pointer_to_member_type_info*;
+    _ZNK10__cxxabiv119__pointer_type_info*;
+    _ZNK10__cxxabiv120__si_class_type_info*;
+    _ZNK10__cxxabiv121__vmi_class_type_info*;
+
+    # typeinfo structure
+    _ZTI[a-z];
+    _ZTIP[a-z];
+    _ZTIPK[a-z];
+    _ZTIN10__cxxabiv117__array_type_infoE;
+    _ZTIN10__cxxabiv117__class_type_infoE;
+    _ZTIN10__cxxabiv116__enum_type_infoE;
+    _ZTIN10__cxxabiv120__function_type_infoE;
+    _ZTIN10__cxxabiv123__fundamental_type_infoE;
+    _ZTIN10__cxxabiv117__pbase_type_infoE;
+    _ZTIN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTIN10__cxxabiv119__pointer_type_infoE;
+    _ZTIN10__cxxabiv120__si_class_type_infoE;
+    _ZTIN10__cxxabiv121__vmi_class_type_infoE;
+    _ZTIN10__cxxabiv115__forced_unwindE;
+    _ZTIN10__cxxabiv119__foreign_exceptionE;
+    _ZTIN10__cxxabiv115__forced_unwindE;
+    _ZTIN10__cxxabiv119__foreign_exceptionE;
+
+    # typeinfo name
+    _ZTS[a-z];
+    _ZTSP[a-z];
+    _ZTSPK[a-z];
+    _ZTSN10__cxxabiv117__array_type_infoE;
+    _ZTSN10__cxxabiv117__class_type_infoE;
+    _ZTSN10__cxxabiv116__enum_type_infoE;
+    _ZTSN10__cxxabiv120__function_type_infoE;
+    _ZTSN10__cxxabiv123__fundamental_type_infoE;
+    _ZTSN10__cxxabiv117__pbase_type_infoE;
+    _ZTSN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTSN10__cxxabiv119__pointer_type_infoE;
+    _ZTSN10__cxxabiv120__si_class_type_infoE;
+    _ZTSN10__cxxabiv121__vmi_class_type_infoE;
+
+    # typeinfo for char16_t and char32_t
+    _ZTIDs;
+    _ZTIPDs;
+    _ZTIPKDs;
+    _ZTIDi;
+    _ZTIPDi;
+    _ZTIPKDi;
+
+    # typeinfo for decimal floating point types
+    _ZTID[fde];
+    _ZTIPD[fde];
+    _ZTIPKD[fde];
+
+    # typeinfo for decltype(nullptr)
+    _ZTIDn;
+    _ZTIPDn;
+    _ZTIPKDn;
+
+    # virtual table
+    _ZTVN10__cxxabiv117__array_type_infoE;
+    _ZTVN10__cxxabiv117__class_type_infoE;
+    _ZTVN10__cxxabiv116__enum_type_infoE;
+    _ZTVN10__cxxabiv120__function_type_infoE;
+    _ZTVN10__cxxabiv123__fundamental_type_infoE;
+    _ZTVN10__cxxabiv117__pbase_type_infoE;
+    _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTVN10__cxxabiv119__pointer_type_infoE;
+    _ZTVN10__cxxabiv120__si_class_type_infoE;
+    _ZTVN10__cxxabiv121__vmi_class_type_infoE;
+
+  local:
+    *;
+};
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu.ver
new file mode 100644
index 000000000..839f84669
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/gnu.ver
@@ -0,0 +1,1461 @@
+## Linker script for GNU versioning (GNU ld 2.13.91+ only.)
+##
+## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+## Free Software Foundation, Inc.
+##
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+GLIBCXX_3.4 {
+
+  global:
+
+    # Names inside the 'extern' block are demangled names.
+    extern "C++"
+    {
+      std::[A-Z]*;
+      std::a[a-c]*;
+      std::ad[a-n]*;
+      std::ad[p-z]*;
+      std::a[e-z]*;
+#     std::ba[a-r]*;
+      std::basic_[a-e]*;
+      std::basic_f[a-h]*;
+#     std::basic_filebuf;
+      std::basic_f[j-r]*;
+#     std::basic_fstream;
+      std::basic_f[t-z]*;
+      std::basic_[g-h]*;
+      std::basic_i[a-e]*;
+#     std::basic_ifstream;
+      std::basic_i[g-r]*;
+      std::basic_istr[a-d]*;
+#     std::basic_istream;
+      std::basic_istr[f-z]*;
+      std::basic_i[t-z]*;
+      std::basic_[j-n]*;
+      std::basic_o[a-e]*;
+#     std::basic_ofstream;
+#     std::basic_o[g-z]*;
+      std::basic_o[g-r]*;
+      std::basic_ostr[a-d]*;
+      std::basic_ostr[f-z]*;
+      std::basic_[p-r]*;
+#     std::basic_streambuf
+#     std::basic_string
+#     std::basic_stringbuf
+      std::basic_stringstream*;
+      std::basic_[t-z]*;
+      std::ba[t-z]*;
+      std::b[b-z]*;
+      std::c[a-g]*;
+#     std::char_traits;
+#     std::c[i-z]*;
+      std::c[i-n]*;
+#     std::condition_variable;
+      std::co[^n]*;
+      std::c[p-s]*;
+      std::cu[^r]*;
+#     std::current_exception
+      std::c[v-z]*;
+#     std::[d-g]*;
+      std::d[a-d]*;
+      std::d[f-n]*;
+      std::domain_error::d*;
+#     std::domain_error::~d*;
+      std::d[p-z]*;
+      std::e[a-q]*;
+      std::error[^_]*;
+      std::e[s-z]*;
+      std::gslice*;
+      std::h[^a]*;
+      std::i[a-m]*;
+      std::invalid_argument::i*;
+#     std::invalid_argument::~i*;
+#     std::ios_base::[A-Ha-z]*;
+      std::ios_base::[A-Ha-f]*;
+      std::ios_base::goodbit;
+      std::ios_base::[h-z]*;
+      std::ios_base::_M_grow_words*;
+      std::ios_base::_M_init*;
+      std::ios_base::Init::[A-Za-z]*;
+#     std::ios_base::[J-Za-z]*;
+      std::i[p-r]*;
+#     std::istream
+#     std::istreambuf_iterator
+      std::istringstream*;
+      std::istrstream*;
+      std::i[t-z]*;
+      std::[A-Zj-k]*;
+      std::length_error::l*;
+#     std::length_error::~l*;
+      std::logic_error*;
+      std::locale::[A-Za-e]*;
+      std::locale::facet::[A-Za-z]*;
+      std::locale::facet::_S_get_c_locale*;	
+      std::locale::facet::_S_clone_c_locale*;
+      std::locale::facet::_S_create_c_locale*;
+      std::locale::facet::_S_destroy_c_locale*;
+      std::locale::[A-Zg-h]*;
+      std::locale::id::[A-Za-z]*;
+      std::locale::id::_M_id*;
+      std::locale::[A-Zj-z]*;
+      std::locale::_[A-Ha-z]*;
+      std::locale::_Impl::[A-Za-z]*;
+#     std::locale::_Impl::_M_[A-Za-z]*;
+      std::locale::_[J-Ra-z]*;
+      std::locale::_S_normalize_category*;
+      std::locale::_[T-Za-z]*;
+#     std::[A-Zm-r]*;
+#     std::[A-Zm]*;
+      std::[A-Z]*;
+      std::messages*;
+      std::money*;
+#     std::n[^u]*;
+      std::n[^aue]*;
+      std::nu[^m]*;
+      std::num[^e]*;
+      std::ostrstream*;
+      std::out_of_range::o*;
+#     std::out_of_range::~o*;
+      std::overflow_error::o*;
+#     std::overflow_error::~o*;
+#     std::[p-q]*;
+      std::r[^ae]*;
+      std::range_error::r*;
+#     std::range_error::~r*;
+#     std::re[^t]*;
+#     std::rethrow_exception
+      std::set_new_handler*;
+      std::set_terminate*;
+      std::set_unexpected*;
+#     std::string
+      std::strstream*;
+      std::strstreambuf*;
+#     std::t[a-q]*;
+      std::t[a-g]*;      
+      std::th[a-h]*;
+      std::th[j-q]*;
+      std::th[s-z]*;
+#     std::t[i-n]*;
+      std::tr1::h[^a]*;
+      std::t[s-z]*;
+#     std::[A-Zu-z]*;
+      std::underflow_error::u*;
+#     std::underflow_error::~u*;
+      std::uncaught_exception*;
+      std::unexpected*;
+      std::[A-Zv-z]*;
+      std::_List_node_base::hook*;
+      std::_List_node_base::swap*;
+      std::_List_node_base::unhook*;
+      std::_List_node_base::reverse*;
+      std::_List_node_base::transfer*;
+      std::__timepunct*;
+#     std::__numeric_limits_base*;
+      std::__num_base::_S_format_float*;
+      std::__num_base::_S_format_int*;
+      std::__num_base::_S_atoms_in;
+      std::__num_base::_S_atoms_out;
+      std::__moneypunct_cache*;
+      std::__numpunct_cache*;
+      std::__timepunct_cache*
+#     __gnu_debug::_Error_formatter*
+    };
+
+    # Names not in an 'extern' block are mangled names.  Character classes
+    # are used in many of the regex patterns to compensate for minor differences
+    # among the standard integer types and sizes on different platforms and
+    # under different modes of 64-bit architecture (ILP64, LLP64, etc.)
+
+    # std::string
+    # 'y' here and below represents 'unsigned long long'
+    # where it is used for size_type on LLP64 platforms.
+    _ZNSsC[12][EI][PRjmvyN]*;
+    _ZNSsD*;
+    _ZNSs[0-58-9]a*;
+    _ZNSs5beginEv;
+    _ZNSs[0-58-9][c-e]*;
+    _ZNSs[0-58-9][g-z]*;
+#   _ZNSs[67][a-z]*E[PRcjmvy]*;
+    _ZNSs6appendE[PRcjmvy]*;
+    _ZNSs6assignE[PRcjmvy]*;
+    _ZNSs6insertE[PRcjmvy]*;
+    _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEE[PRcjmvy]*;
+    _ZNSs[67][j-z]*E[PRcjmvy]*;
+    _ZNSs7[a-z]*EES2_[NPRjmy]*;
+    _ZNSs7[a-z]*EES2_S[12]*;
+    _ZNSs12_Alloc_hiderC*;
+    _ZNSs12_M_leak_hardEv;
+    _ZNSs12_S_constructE[jmy]cRKSaIcE;
+    _ZNSs12_S_empty_repEv;
+    _ZNSs13_S_copy_chars*;
+    _ZNSs[0-9][0-9]_M_replace*;
+    _ZNSs4_Rep10_M_destroy*;
+    _ZNSs4_Rep10_M_dispose*;
+    _ZNSs4_Rep10_M_refcopyEv;
+    _ZNSs4_Rep10_M_refdataEv;
+    _ZNSs4_Rep12_S_empty_repEv;
+    _ZNSs4_Rep13_M_set_leakedEv;
+    _ZNSs4_Rep15_M_set_sharableEv;
+    _ZNSs4_Rep7_M_grab*;
+    _ZNSs4_Rep8_M_clone*;
+    _ZNSs4_Rep9_S_createE[jmy][jmy]*;
+    _ZNSs7_M_dataEPc;
+    _ZNSs7_M_leakEv;
+    _ZNSs9_M_mutateE[jmy][jmy][jmy];
+    _ZNSs4_Rep20_S_empty_rep_storageE;
+    _ZNSs4_Rep11_S_max_sizeE;
+    _ZNSs4_Rep11_S_terminalE;
+    _ZNSsaSE[PRc]*;
+    _ZNSsixE*;
+    _ZNSspLE[PRc]*;
+    _ZNKSs[0-3][a-b]*;
+    _ZNKSs[5-9][a-b]*;
+    _ZNKSs[0-9][d-e]*;
+    _ZNKSs[0-9][g-z]*;
+    _ZNKSs[0-9][0-9][a-z]*;
+    _ZNKSs4find*;
+    _ZNKSs[a-z]*;
+    _ZNKSs4_Rep12_M_is_leakedEv;
+    _ZNKSs4_Rep12_M_is_sharedEv;
+    _ZNKSs6_M_repEv;
+    _ZNKSs7_M_dataEv;
+    _ZNKSs7_M_iendEv;
+    _ZNKSs8_M_check*;
+    _ZNKSs8_M_limit*;
+    _ZNKSs9_M_ibeginEv;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_E*;
+    _ZNKSs7compare*; 
+    _ZNKSs5c_strEv;
+    _ZNKSs8capacityEv;
+    _ZNKSs4copyEPc[jmy][jmy];
+
+    # std::wstring
+    _ZNSbIwSt11char_traitsIwESaIwEEC[12][EI][PRjmvyN]*;
+    _ZNSbIwSt11char_traitsIwESaIwEED*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9]a*;
+    _ZNSbIwSt11char_traitsIwESaIwEE5beginEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9][c-e]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-58-9][g-z]*;
+#   _ZNSbIwSt11char_traitsIwESaIwEE[67][a-b]*E[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE6appendE[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE6assignE[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE6insertE[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EE[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[67][j-z]*E[PRwjmvy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE7[a-z]*EES6_[NPRjmy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE7[a-z]*EES6_S[56]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jmy]wRKS1_;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_M_replace*;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroy*;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_dispose*;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grab*;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_clone*;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createE[jmy][jmy]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw;
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateE[jmy][jmy][jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE;
+    _ZNSbIwSt11char_traitsIwESaIwEEaSE[PRw]*;
+    _ZNSbIwSt11char_traitsIwESaIwEEixE*;
+    _ZNSbIwSt11char_traitsIwESaIwEEpLE[PRw]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[0-3][a-b]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[5-9][a-b]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][d-e]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][g-z]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[a-z]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4find*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE8_M_check*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limit*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv;
+    _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_E*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE7compare*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPw[jmy][jmy];
+
+    # std::basic_streambuf
+    _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE[CD]*;
+    _ZNKSt15basic_streambufI[cw]St11char_traitsI[cw]EE[0-9]*;
+    _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE[0-9][a-z][^t]*;
+    _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE[0-9][0-9][a-z][^t]*;
+    _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EEaSERKS2_;
+
+    # std::basic_stringbuf
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EED[^2]*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][a-r]*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]seek*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]set*;
+    _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv;
+    _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv;
+    _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs;
+    _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][t-z]*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]_M_[a-o]*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]_M_[q-z]*;
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][0-9]_M_[a-z]*;
+
+    # std::basic_iostream constructors, destructors
+    _ZNSdC*;
+    _ZNSdD*;
+
+    # std::basic_filebuf
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EEC*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EED*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE0*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE13*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE15*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE16*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE19*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE2*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE3*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openEPKc*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4sync*;
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE[5-9]*;
+    _ZNKSt13basic_filebufI[cw]St11char_traitsI[cw]EE7is_openEv;
+
+    # std::basic_fstream
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EED*;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5closeEv;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
+    _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
+
+    # std::basic_ifstream
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EED*;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5closeEv;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
+    _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
+
+    # std::basic_ofstream
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EED*;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5closeEv;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
+    _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
+
+    # std::basic_istream<char>
+    _ZNSiC*;
+    _ZNSiD*;
+    _ZNKSi[0-9][a-z]*;
+    _ZNSi[0-9][a-h]*;
+    _ZNSi[0-9][j-z]*;
+    # 'x' here and below matches 'long long' where it
+    # is used for signed sizetypes on LLP64 platforms.
+    _ZNSi6ignoreE[ilx][ilx];
+    _ZNSirsE*[^g];
+
+    # std::basic_istream<wchar_t>
+    _ZNSt13basic_istreamIwSt11char_traitsIwEEC*;
+    _ZNSt13basic_istreamIwSt11char_traitsIwEED*;
+    _ZNKSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-z]*;
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*;
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*;
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilx][ijlmx];
+    _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g];
+
+    # std::istream operators and extractors
+    _ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
+    _ZSt2wsI[cw]St11char_traitsI[cw]EE*;
+    _ZStrsI[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+    _ZStrsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
+    _ZStrsISt11char_traitsI[cw]EERSt13basic_istream*;
+    _ZStrsId[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+    _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+    _ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+
+    # std::basic_ostream<char>
+    _ZNSoC*;
+    _ZNSoD*;
+    _ZNKSo6sentrycvbEv;
+    _ZNSo8_M_writeEPKc[ilx];
+    _ZNSo[0-9][a-z]*;
+    _ZNSolsE*[^g];
+
+    # std::basic_ostream<wchar_t>
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
+    _ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKw[ilx];
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g];
+
+    # std::ostream operators and inserters
+    _ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
+    _ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+    _ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
+
+    # std::locale destructors
+    _ZNSt6localeD*;
+	
+    # std::locale::facet destructors
+    _ZNSt6locale5facetD*;
+	 
+    # std::locale::_Impl constructors, destructors
+    _ZNSt6locale5_ImplC*;
+    _ZNSt6locale5_ImplD*;
+
+    # std::ios_base, std::ios_base::Init destructors
+    _ZNSt8ios_baseD*;
+    _ZNSt8ios_base4InitD*;
+
+    # bool std::has_facet 
+    _ZSt9has_facetIS*;
+
+    # std::use_facet
+    _ZSt9use_facetIS*;
+
+    # std::ctype
+    _ZNKSt5ctypeIcE8*;
+    _ZNKSt5ctypeIcE9*;
+    _ZNKSt5ctypeIcE10*;
+    _ZNKSt5ctypeIw*;
+    _ZNSt5ctypeI[cw]*;
+
+    # std::ctype_base
+    _ZNSt10ctype_base*;
+
+    # std::ctype_byname
+    _ZNSt12ctype_bynameI[cw]*;
+
+    # std::num_get
+    _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
+    # std::num_put
+    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
+    # std::money_get
+    _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
+    # std::money_put
+    _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
+    # std::time_get
+    _ZNSt8time_get*;
+    _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE1*;
+    _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8*;
+    _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE21*;
+
+    # std::time_get_byname
+    _ZNSt15time_get_byname*;
+    
+    # std::time_put
+    _ZNSt8time_put*;
+    _ZNKSt8time_put*;
+
+    # std::time_put_byname
+    _ZNSt15time_put_byname*;
+
+    # std::numeric_limits
+    _ZNSt21__numeric_limits_base[5-9]*;
+    _ZNSt21__numeric_limits_base1[0-7][hirt]*;
+    _ZNSt21__numeric_limits_base1[0-7]mi*;
+    _ZNSt21__numeric_limits_base1[0-7]max_e*;
+
+    _ZNSt14numeric_limitsI[^g]E[5-9]*;
+    _ZNSt14numeric_limitsI[^g]E1[0-7][hirt]*;
+    _ZNSt14numeric_limitsI[^g]E1[0-7]mi*;
+    _ZNSt14numeric_limitsI[^g]E1[0-7]max_e*;
+
+    # std::_Rb_tree
+    _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
+    _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
+    _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base;
+    _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base;
+    _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_;
+    _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_;
+    _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_;
+    _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_;
+    _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_;
+
+    # std::__basic_file
+    _ZNKSt12__basic_fileIcE7is_openEv;
+    _ZNSt12__basic_fileIcE2fdEv;
+    _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei;
+    _ZNSt12__basic_fileIcE4syncEv;
+    _ZNSt12__basic_fileIcE5closeEv;
+    _ZNSt12__basic_fileIcE6xsgetn*;
+    _ZNSt12__basic_fileIcE6xsputn*;
+    _ZNSt12__basic_fileIcE7seekoff*;
+    _ZNSt12__basic_fileIcE8sys_openE*St13_Ios_Openmode;
+    _ZNSt12__basic_fileIcE8xsputn_2*;
+    _ZNSt12__basic_fileIcE9showmanycEv;
+    _ZNSt12__basic_fileIcEC*;
+    _ZNSt12__basic_fileIcED*;
+
+    # std::__convert_to_v
+    _ZSt14__convert_to_vI[^g]*;
+
+    # __gnu_cxx::stdio_sync_filebuf
+    _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+
+    # __gnu_cxx::__atomic_add
+    # __gnu_cxx::__exchange_and_add
+    _ZN9__gnu_cxx12__atomic_addEPV[il]i;
+    _ZN9__gnu_cxx18__exchange_and_addEPV[il]i;
+
+    # debug mode
+    _ZN10__gnu_norm15_List_node_base4hook*;
+    _ZN10__gnu_norm15_List_node_base4swap*;
+    _ZN10__gnu_norm15_List_node_base6unhookEv;
+    _ZN10__gnu_norm15_List_node_base7reverseEv;
+    _ZN10__gnu_norm15_List_node_base8transfer*;
+
+    # __gnu_debug::_Safe_sequence_base and _Safe_iterator_base
+    _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
+    _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
+    _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
+    _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
+    _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
+    _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
+    _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
+    _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
+
+    # __gnu_debug::_Error_formatter
+    _ZNK11__gnu_debug16_Error_formatter10_M_message*;
+    _ZNK11__gnu_debug16_Error_formatter10_Parameter*;
+    _ZNK11__gnu_debug16_Error_formatter13_M_print_word*;
+    _ZNK11__gnu_debug16_Error_formatter15_M_print_string*;
+    _ZNK11__gnu_debug16_Error_formatter8_M_error*;
+    
+    # exceptions as functions
+    _ZSt16__throw_bad_castv;
+    _ZSt17__throw_bad_allocv;
+    _ZSt18__throw_bad_typeidv;
+    _ZSt19__throw_ios_failurePKc;
+    _ZSt19__throw_logic_errorPKc;
+    _ZSt19__throw_range_errorPKc;
+    _ZSt20__throw_domain_errorPKc;
+    _ZSt20__throw_length_errorPKc;
+    _ZSt20__throw_out_of_rangePKc;
+    _ZSt21__throw_bad_exceptionv;
+    _ZSt21__throw_runtime_errorPKc;
+    _ZSt22__throw_overflow_errorPKc;
+    _ZSt23__throw_underflow_errorPKc;
+    _ZSt24__throw_invalid_argumentPKc;
+
+    # operator new(size_t)
+    _Znw[jmy];
+    # operator new(size_t, std::nothrow_t const&)
+    _Znw[jmy]RKSt9nothrow_t;
+
+    # operator delete(void*)
+    _ZdlPv;
+    # operator delete(void*, std::nothrow_t const&)
+    _ZdlPvRKSt9nothrow_t;
+
+    # operator new[](size_t)
+    _Zna[jmy];
+    # operator new[](size_t, std::nothrow_t const&)
+    _Zna[jmy]RKSt9nothrow_t;
+
+    # operator delete[](void*)
+    _ZdaPv;
+    # operator delete[](void*, std::nothrow_t const&)
+    _ZdaPvRKSt9nothrow_t;
+
+    # virtual table
+    _ZTVNSt8ios_base7failureE;
+    _ZTVNSt6locale5facetE;
+    _ZTVS[a-z];
+    _ZTVSt[0-9][A-Za-z]*;
+#   _ZTVSt[0-9][0-9][A-Za-z]*;
+    _ZTVSt[0-9][0-9][A-Z]*;
+#   _ZTVSt[0-9][0-9][a-d]*;
+    _ZTVSt[0-9][0-9]a*;
+    _ZTVSt10bad_typeid;
+    _ZTVSt13bad_exception;
+    _ZTVSt[0-9][0-9]basic*;
+    _ZTVSt[0-9][0-9][c-d]*;
+    _ZTVSt[0-9][0-9][g-k]*;
+    _ZTVSt11logic_error;
+    _ZTVSt12length_error;
+#   _ZTVSt[0-9][0-9][m-q]*;
+    _ZTVSt[0-9][0-9][m]*;
+    _ZTVSt[0-9][0-9]n[^e]*;
+    _ZTVSt[0-9][0-9][o-q]*;
+    _ZTVSt11range_error;
+    _ZTVSt13runtime_error;
+    _ZTVSt[0-9][0-9][t-z]*;
+    _ZTVSt[0-9][0-9]e[^r]*;
+    _ZTVSt[0-9][0-9]s[^y]*;
+
+    _ZTVSt11__timepunctI[cw]E;
+    _ZTVSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
+    _ZTVSt21__ctype_abstract_baseI[cw]E;
+
+    # VTT structure
+    _ZTTS[a-z];
+    _ZTTSt[0-9][A-Za-z]*;
+    _ZTTSt[0-9][0-9][A-Za-z]*;
+
+    # typeinfo structure
+    _ZTIS[a-z];
+    _ZTISt[0-9][A-Za-z]*;
+#   _ZTISt[0-9][0-9][A-Za-z]*;
+    _ZTISt[0-9][0-9][A-Z]*;
+#   _ZTISt[0-9][0-9][a-d]*;
+    _ZTISt[0-9][0-9]a*;
+    _ZTISt10bad_typeid;
+    _ZTISt13bad_exception;
+    _ZTISt[0-9][0-9]basic*;
+    _ZTISt[0-9][0-9][c-d]*;
+    _ZTISt[0-9][0-9][g-k]*;
+    _ZTISt11logic_error;
+    _ZTISt12length_error;
+#   _ZTISt[0-9][0-9][m-q]*;
+    _ZTISt[0-9][0-9][m]*;
+    _ZTISt[0-9][0-9]n[^e]*;
+    _ZTISt[0-9][0-9][o-q]*;
+    _ZTISt11range_error;
+    _ZTISt13runtime_error;
+    _ZTISt[0-9][0-9][t-z]*;
+    _ZTISt[0-9][0-9]e[^r]*;
+    _ZTISt[0-9][0-9]s[^y]*;
+    _ZTISt11__timepunctI[cw]E;
+    _ZTISt10__num_base;
+    _ZTISt21__ctype_abstract_baseI[cw]E;
+    _ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
+#    _ZTISt16__numpunct_cacheI[cw]E;
+#    _ZTISt17__timepunct_cacheI[cw]E;
+#    _ZTISt18__moneypunct_cacheI[cw]Lb?EE;
+    _ZTINSt8ios_base7failureE;
+    _ZTINSt6locale5facetE;
+    _ZTIN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+    _ZTIN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
+
+    # typeinfo name
+    _ZTSNSt8ios_base7failureE;
+    _ZTSNSt6locale5facetE;
+    _ZTSS[a-z];
+    _ZTSSt[0-9][A-Za-z]*;
+#   _ZTSSt[0-9][0-9][A-Za-z]*;
+    _ZTSSt[0-9][0-9][A-Z]*;
+#   _ZTSSt[0-9][0-9][a-d]*;
+    _ZTSSt[0-9][0-9]a*;
+    _ZTSSt10bad_typeid;
+    _ZTSSt13bad_exception;
+    _ZTSSt[0-9][0-9]basic*;
+    _ZTSSt[0-9][0-9][c-d]*;
+    _ZTSSt[0-9][0-9][g-k]*;
+    _ZTSSt11logic_error;
+    _ZTSSt12length_error;
+#   _ZTSSt[0-9][0-9][m-q]*;
+    _ZTSSt[0-9][0-9][m]*;
+    _ZTSSt[0-9][0-9]n[^e]*;
+    _ZTSSt[0-9][0-9][o-q]*;
+    _ZTSSt11range_error;
+    _ZTSSt13runtime_error;
+    _ZTSSt[0-9][0-9][t-z]*;
+    _ZTSSt[0-9][0-9]e[^r]*;
+    _ZTSSt[0-9][0-9]s[^y]*;
+
+    _ZTSSt11__timepunctI[cw]E;
+    _ZTSSt10__num_base;
+    _ZTSSt21__ctype_abstract_baseI[cw]E;
+    _ZTSSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
+    _ZTSN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+    _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
+
+    # std::bad_alloc::~bad_alloc, std::bad_cast::~bad_cast,
+    # std::bad_typeid::~bad_typeid, std::bad_exception::~bad_exception
+    _ZNSt9bad_allocD*;
+    _ZNSt8bad_castD*;
+    _ZNSt10bad_typeidD*;
+    _ZNSt13bad_exceptionD*;
+
+    # function-scope static objects requires a guard variable.
+    _ZGVNSt[^1]*;
+    _ZGVNSt1[^7]*;
+
+    # complete and deleting destructors where base destructors should not
+    # be exported.
+    _ZNSt11range_errorD[01]Ev;
+    _ZNSt12domain_errorD[01]Ev;
+    _ZNSt12length_errorD[01]Ev;
+    _ZNSt12out_of_rangeD[01]Ev;
+    _ZNSt14overflow_errorD[01]Ev;
+    _ZNSt15underflow_errorD[01]Ev;
+    _ZNSt16invalid_argumentD[01]Ev;
+
+    # virtual function thunks
+    _ZThn8_NS*;
+    _ZThn16_NS*;
+    _ZTv0_n12_NS*;
+    _ZTv0_n24_NS*;
+
+    # stub functions from libmath
+    sinf;
+    sinl;
+    sinhf;
+    sinhl;
+    cosf;
+    cosl;
+    coshf;
+    coshl;
+    tanf;
+    tanl;
+    tanhf;
+    tanhl;
+    atan2f;
+    atan2l;
+    expf;
+    expl;
+    hypotf;
+    hypotl;
+    hypot;
+    logf;
+    logl;
+    log10f;
+    log10l;
+    powf;
+    powl;
+    sqrtf;
+    sqrtl;
+    copysignf;
+
+#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT
+   # GLIBCXX_ABI compatibility only.
+    # std::string
+    _ZNKSs11_M_disjunctEPKc;
+    _ZNKSs15_M_check_lengthE[jmy][jmy]PKc;
+    _ZNSs4_Rep26_M_set_length_and_sharableE*;
+    _ZNSs7_M_copyEPcPKc[jmy];
+    _ZNSs7_M_moveEPcPKc[jmy];
+    _ZNSs9_M_assignEPc[jmy]c;
+
+    # std::wstring
+    _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
+    _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jmy][jmy]PKc;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jmy]w;
+
+    _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+
+    _ZNSi6ignoreE[ilvx];
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilvx];
+
+    _ZNSt11char_traitsI[cw]E2eqERK[cw]S2_;
+
+    _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv;
+#endif
+
+    # std::locale::Impl _M_ members
+    _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE;
+    _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE;
+    _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE;
+    _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i;
+
+  # DO NOT DELETE THIS LINE.  Port-specific symbols, if any, will be here.
+
+  local:
+    *;
+};
+
+GLIBCXX_3.4.1 {
+ 
+    _ZNSt12__basic_fileIcE4fileEv;
+ 
+} GLIBCXX_3.4;
+ 
+GLIBCXX_3.4.2 {
+
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE4fileEv;
+
+    _ZN9__gnu_cxx17__pool_alloc_base9_M_refillE[jmy];
+    _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listE[jmy];
+    _ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv;
+
+} GLIBCXX_3.4.1;
+
+GLIBCXX_3.4.3 {
+ 
+    # stub functions from libmath
+    acosf;
+    acosl;
+    asinf;
+    asinl;
+    atanf;
+    atanl;
+    ceilf;
+    ceill;
+    floorf;
+    floorl;
+    fmodf;
+    fmodl;
+    frexpf;
+    frexpl;
+    ldexpf;
+    ldexpl;
+    modff;
+    modfl;
+
+} GLIBCXX_3.4.2;
+
+GLIBCXX_3.4.4 {
+
+    _ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv;
+    _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE;
+    _ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv;
+    _ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv;
+    _ZN9__gnu_cxx6__poolILb[01]EE16_M_reserve_blockE[jmy][jmy];
+    _ZN9__gnu_cxx6__poolILb[01]EE16_M_reclaim_blockEPc[jmy];
+    _ZN9__gnu_cxx6__poolILb[01]EE10_M_destroyEv;
+
+    _ZN9__gnu_cxx9free_list6_M_getE*;
+    _ZN9__gnu_cxx9free_list8_M_clearEv;
+
+} GLIBCXX_3.4.3;
+
+GLIBCXX_3.4.5 {
+
+    # std::string
+    _ZNKSs11_M_disjunctEPKc;
+    _ZNKSs15_M_check_lengthE[jmy][jmy]PKc;
+    _ZNSs4_Rep26_M_set_length_and_sharableE*;
+    _ZNSs7_M_copyEPcPKc[jmy];
+    _ZNSs7_M_moveEPcPKc[jmy];
+    _ZNSs9_M_assignEPc[jmy]c;
+
+    # std::wstring
+    _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
+    _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jmy][jmy]PKc;
+    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jmy]w;
+
+    _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+    _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
+
+    _ZNSi6ignoreE[ilvx];
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilvx];
+
+    _ZNSt11char_traitsI[cw]E2eqERK[cw]S2_;
+
+    _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv;
+
+} GLIBCXX_3.4.4;
+
+GLIBCXX_3.4.6 {
+
+    _ZSt17__copy_streambufsI[cw]St11char_traitsI[cw]EE[ix]PSt15basic_streambuf*;
+    _ZNSt8ios_base17_M_call_callbacksENS_5eventE;
+    _ZNSt8ios_base20_M_dispose_callbacksEv;
+    _ZNSt6locale5facet13_S_get_c_nameEv;
+
+    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE9showmanycEv;
+
+#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT
+    _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv;
+#endif
+
+    _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv;
+
+} GLIBCXX_3.4.5;
+
+GLIBCXX_3.4.7 {
+
+    _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetE[jmy];
+
+} GLIBCXX_3.4.6;
+
+GLIBCXX_3.4.8 {
+
+    _ZSt17__copy_streambufsI[cw]St11char_traitsI[cw]EElPSt15basic_streambuf*;
+
+} GLIBCXX_3.4.7;
+
+GLIBCXX_3.4.9 {
+
+    _ZNSt6__norm15_List_node_base4hook*;
+    _ZNSt6__norm15_List_node_base4swap*;
+    _ZNSt6__norm15_List_node_base6unhookEv;
+    _ZNSt6__norm15_List_node_base7reverseEv;
+    _ZNSt6__norm15_List_node_base8transfer*;
+
+    _ZNSo9_M_insertI[^g]*;
+    _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertI[^g]*;
+    _ZNSi10_M_extractI[^g]*;
+    _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractI[^g]*;
+
+    _ZSt21__copy_streambufs_eofI[cw]St11char_traitsI[cw]EE[ilx]PSt15basic_streambuf*;
+
+    _ZSt16__ostream_insert*;
+
+    _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv;
+    _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb;
+    _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv;
+    _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv;
+
+    _ZNKSt9bad_alloc4whatEv;
+    _ZNKSt8bad_cast4whatEv;
+    _ZNKSt10bad_typeid4whatEv;
+    _ZNKSt13bad_exception4whatEv;
+
+} GLIBCXX_3.4.8;
+
+GLIBCXX_3.4.10 {
+
+    _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv;
+
+    _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_;
+    _ZNKSt3tr14hashIRKSsEclES2_;
+    _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_;
+    _ZNKSt3tr14hashISsEclESs;
+    _ZNKSt3tr14hashIeEclEe;
+
+    _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_;
+    _ZNKSt4hashIRKSsEclES1_;
+    _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_;
+    _ZNKSt4hashISsEclESs;
+    _ZNKSt4hashIeEclEe;
+
+    _ZSt17__verify_grouping*;
+    
+    _ZNSt8__detail12__prime_listE;
+    _ZNSt3tr18__detail12__prime_listE;
+
+    # for parallel mode
+    _ZN14__gnu_parallel9_Settings3getEv;
+    _ZN14__gnu_parallel9_Settings3setERS0_;
+
+    _ZNSt9__cxx199815_List_node_base4hook*;
+    _ZNSt9__cxx199815_List_node_base4swap*;
+    _ZNSt9__cxx199815_List_node_base6unhookEv;
+    _ZNSt9__cxx199815_List_node_base7reverseEv;
+    _ZNSt9__cxx199815_List_node_base8transfer*;
+
+    _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE6stosscEv;
+
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE4syncEv;
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE[5-9C]*;
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EED[^2]*;
+
+} GLIBCXX_3.4.9;
+
+GLIBCXX_3.4.11 {
+	 
+    # atomic
+    __atomic_flag_for_address;
+    __atomic_flag_wait_explicit;
+    atomic_flag_clear_explicit;
+    atomic_flag_test_and_set_explicit;
+    _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order;
+    _ZNVSt9__atomic011atomic_flag5clearESt12memory_order;
+
+    # mutex
+    _ZSt10adopt_lock;
+    _ZSt10defer_lock;
+    _ZSt11try_to_lock;
+
+    _ZTISt10lock_error;
+    _ZTVSt10lock_error;
+    _ZTSSt10lock_error;
+    _ZNKSt10lock_error4whatEv;
+
+    _ZSt11__once_call;
+    _ZSt15__once_callable;
+    _ZSt14__once_functor;
+    _ZSt23__get_once_functor_lockv;
+    __once_proxy;
+
+    # condition_variable
+    _ZNSt18condition_variable10notify_allEv;
+    _ZNSt18condition_variable10notify_oneEv;
+    _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE;
+    _ZNSt18condition_variableC1Ev;
+    _ZNSt18condition_variableC2Ev;
+    _ZNSt18condition_variableD1Ev;
+    _ZNSt18condition_variableD2Ev;
+    _ZNSt22condition_variable_anyC1Ev;
+    _ZNSt22condition_variable_anyC2Ev;
+    _ZNSt22condition_variable_anyD1Ev;
+    _ZNSt22condition_variable_anyD2Ev;
+
+    # thread
+    _ZNSt6thread4joinEv;
+    _ZNSt6thread6detachEv;
+    _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE;
+
+    # system_error
+    _ZSt15system_categoryv;
+    _ZSt16generic_categoryv;
+
+    _ZNKSt10error_code23default_error_conditionEv;
+    _ZNKSt14error_category23default_error_conditionEi;
+
+    _ZNKSt14error_category10equivalentERKSt10error_codei;
+    _ZNKSt14error_category10equivalentEiRKSt15error_condition;
+
+    _ZTISt14error_category;
+    _ZTSSt14error_category;
+    _ZTVSt14error_category;
+
+    _ZTSSt12system_error;
+    _ZTISt12system_error;
+    _ZTVSt12system_error;
+    _ZNSt12system_errorD*Ev;
+    _ZNSt12system_errorC*;
+
+    _ZNKSt4hashISt10error_codeEclES0_;
+
+    _ZSt20__throw_system_errori;
+
+    # char16_t and char32_t
+    _ZNSt14numeric_limitsIDiE[5-9]*;
+    _ZNSt14numeric_limitsIDsE[5-9]*;
+    _ZNSt14numeric_limitsIDiE1[0-7][hirt]*;
+    _ZNSt14numeric_limitsIDsE1[0-7][hirt]*;
+    _ZNSt14numeric_limitsIDiE1[0-7]mi*;
+    _ZNSt14numeric_limitsIDsE1[0-7]mi*;
+    _ZNSt14numeric_limitsIDiE1[0-7]max_e*;
+    _ZNSt14numeric_limitsIDsE1[0-7]max_e*;
+
+    # chrono
+    _ZNSt6chrono12system_clock12is_monotonicE;
+    _ZNSt6chrono12system_clock3nowEv;
+    _ZNSt6chrono15monotonic_clock12is_monotonicE;
+    _ZNSt6chrono15monotonic_clock3nowEv;
+
+    # string/wstring initializer_list overloads
+    _ZNSs6appendESt16initializer_listIcE;
+    _ZNSs6assignESt16initializer_listIcE;
+    _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE;
+    _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE;
+    _ZNSsC1ESt16initializer_listIcERKSaIcE;
+    _ZNSsC2ESt16initializer_listIcERKSaIcE;
+    _ZNSsaSESt16initializer_listIcE;
+    _ZNSspLESt16initializer_listIcE;
+    _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE;
+    _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE;
+    _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE;
+    _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE;
+    _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_;
+    _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_;
+    _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE;
+    _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE;
+
+    # ctype<char>::_M_narrow_init and _M_widen_init
+    _ZNKSt5ctypeIcE14_M_narrow_initEv;
+    _ZNKSt5ctypeIcE13_M_widen_initEv;
+
+} GLIBCXX_3.4.10;
+
+GLIBCXX_3.4.12 {
+
+    # mutex
+    _ZSt27__set_once_functor_lock_ptrPSt11unique_lockISt5mutexE;
+    _ZSt16__get_once_mutexv;
+
+} GLIBCXX_3.4.11;
+
+GLIBCXX_3.4.13 {
+
+    # new fstream members
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
+    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
+    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
+    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
+
+} GLIBCXX_3.4.12;
+
+GLIBCXX_3.4.14 {
+
+    # atomic
+    _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order;
+    _ZNSt9__atomic011atomic_flag5clearESt12memory_order;
+
+    # future
+    _ZNSt12future_errorD*;
+    _ZNKSt12future_error4whatEv;
+    _ZTSSt12future_error;
+    _ZTVSt12future_error;
+    _ZTISt12future_error;
+    _ZSt20__throw_future_errori;
+
+    # GLIBCXX_ABI compatibility only.
+    _ZSt15future_category;
+
+    # string|wstring ::cbegin member functions
+    _ZNKSs6cbeginEv;
+    _ZNKSs4cendEv;
+    _ZNKSs7crbeginEv;
+    _ZNKSs5crendEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4cendEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv;
+
+    # string|wstring ::_S_construct<> and ::_S_construct_aux_2 helpers
+    _ZNSs12_S_constructI*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
+    _ZNSs18_S_construct_aux_2*;
+    _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2*;
+
+    # string|wstring shrink_to_fit member function
+    _ZNSs13shrink_to_fitEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv;
+
+    # string|wstring move contructor, move assignment operator and
+    # move assign.
+    _ZNSsC1EOSs;
+    _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_;
+    _ZNSsaSEOSs;
+    _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_;
+    _ZNSs6assignEOSs;
+    _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_;
+
+    _ZSt25__throw_bad_function_callv;
+
+    # std::time_get::_M_extract_wday_or_month
+    _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE24_M_extract_wday_or_month*;
+
+    # libstdc++/16896
+    _ZNSt15_List_node_base7_M_hook*;
+    _ZNSt15_List_node_base9_M_unhookEv;
+    _ZNSt15_List_node_base10_M_reverseEv;
+    _ZNSt15_List_node_base11_M_transfer*;
+
+    _ZNSt6__norm15_List_node_base7_M_hook*;
+    _ZNSt6__norm15_List_node_base9_M_unhookEv;
+    _ZNSt6__norm15_List_node_base10_M_reverseEv;
+    _ZNSt6__norm15_List_node_base11_M_transfer*;
+
+    _ZNSt9__cxx199815_List_node_base7_M_hook*;
+    _ZNSt9__cxx199815_List_node_base9_M_unhookEv;
+    _ZNSt9__cxx199815_List_node_base10_M_reverseEv;
+    _ZNSt9__cxx199815_List_node_base11_M_transfer*;
+
+    # std::numeric_limits::max_digits10
+    _ZNSt21__numeric_limits_base12max_digits10E;
+    _ZNSt14numeric_limitsI[^g]E12max_digits10E;
+    _ZNSt14numeric_limitsID[is]E12max_digits10E;
+
+} GLIBCXX_3.4.13;
+
+GLIBCXX_3.4.15 {
+
+    # string|wstring front and back member functions
+    _ZNSs5frontEv;
+    _ZNKSs5frontEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE5frontEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE5frontEv;
+    _ZNSs4backEv;
+    _ZNKSs4backEv;
+    _ZNSbIwSt11char_traitsIwESaIwEE4backEv;
+    _ZNKSbIwSt11char_traitsIwESaIwEE4backEv;
+
+    # string|wstring move contructor.
+    _ZNSsC2EOSs;
+    _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_;
+
+    # basic_filebuf::_M_get_ext_pos
+    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE14_M_get_ext_pos*;
+
+    # targets using emutls
+    __emutls_v._ZSt11__once_call;
+    __emutls_v._ZSt15__once_callable;
+
+    # std::future_category is now a function
+    _ZSt15future_categoryv;
+
+    # std::placeholders
+    _ZNSt12placeholders*;
+
+    _ZNSt8__detail15_List_node_base7_M_hook*;
+    _ZNSt8__detail15_List_node_base9_M_unhookEv;
+    _ZNSt8__detail15_List_node_base10_M_reverseEv;
+    _ZNSt8__detail15_List_node_base11_M_transfer*;
+    _ZNSt8__detail15_List_node_base4swapERS0_S1_;
+
+    _ZNSt11range_errorD2Ev;
+    _ZNSt12domain_errorD2Ev;
+    _ZNSt12length_errorD2Ev;
+    _ZNSt12out_of_rangeD2Ev;
+    _ZNSt14overflow_errorD2Ev;
+    _ZNSt15underflow_errorD2Ev;
+    _ZNSt16invalid_argumentD2Ev;
+
+    _ZNSt11regex_errorD*;
+    _ZNKSt11regex_error4whatEv;
+    _ZTVSt11regex_error;
+    _ZTISt11regex_error;
+    _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE;
+
+    # std::bad_weak_ptr
+    _ZNSt12bad_weak_ptrD*;
+    _ZNKSt12bad_weak_ptr4whatEv;
+    _ZTVSt12bad_weak_ptr;
+    _ZTISt12bad_weak_ptr;
+
+    # std::bad_function_call
+    _ZNSt17bad_function_callD*;
+    _ZTISt17bad_function_call;
+    _ZTVSt17bad_function_call;
+
+    _ZNSt14error_categoryC*;
+    _ZNSt14error_categoryD*;
+
+    _ZNSt13__future_base12_Result_baseC*;
+    _ZNSt13__future_base12_Result_baseD*;
+    _ZTINSt13__future_base12_Result_baseE;
+    _ZTVNSt13__future_base12_Result_baseE;
+
+    _ZNSt13__future_base11_State_baseD*;
+    _ZTINSt13__future_base11_State_baseE;
+    _ZTVNSt13__future_base11_State_baseE;
+
+} GLIBCXX_3.4.14;
+
+GLIBCXX_3.4.16 {
+
+    # libstdc++/48465
+    _ZNSs10_S_compareE[jmy][jmy];
+    _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareE[jmy][jmy];
+
+} GLIBCXX_3.4.15;
+
+# Symbols in the support library (libsupc++) have their own tag.
+CXXABI_1.3 {
+
+  global:
+    __cxa_allocate_exception;
+    __cxa_bad_cast;
+    __cxa_bad_typeid;
+    __cxa_begin_catch;
+    __cxa_begin_cleanup;
+    __cxa_call_unexpected;
+    __cxa_current_exception_type;
+    __cxa_demangle;
+    __cxa_end_catch;
+    __cxa_end_cleanup;
+    __cxa_free_exception;
+    __cxa_get_globals;
+    __cxa_get_globals_fast;
+    __cxa_guard_abort;
+    __cxa_guard_acquire;
+    __cxa_guard_release;
+    __cxa_pure_virtual;
+    __cxa_rethrow;
+    __cxa_throw;
+    __cxa_type_match;
+    __cxa_vec_cctor;
+    __cxa_vec_cleanup;
+    __cxa_vec_ctor;
+    __cxa_vec_delete2;
+    __cxa_vec_delete3;
+    __cxa_vec_delete;
+    __cxa_vec_dtor;
+    __cxa_vec_new2;
+    __cxa_vec_new3;
+    __cxa_vec_new;
+    __gxx_personality_v0;
+    __gxx_personality_sj0;
+    __dynamic_cast;
+
+    # *_type_info classes, ctor and dtor
+    _ZN10__cxxabiv117__array_type_info*;
+    _ZN10__cxxabiv117__class_type_info*;
+    _ZN10__cxxabiv116__enum_type_info*;
+    _ZN10__cxxabiv120__function_type_info*;
+    _ZN10__cxxabiv123__fundamental_type_info*;
+    _ZN10__cxxabiv117__pbase_type_info*;
+    _ZN10__cxxabiv129__pointer_to_member_type_info*;
+    _ZN10__cxxabiv119__pointer_type_info*;
+    _ZN10__cxxabiv120__si_class_type_info*;
+    _ZN10__cxxabiv121__vmi_class_type_info*;
+
+    # *_type_info classes, member functions
+    _ZNK10__cxxabiv117__class_type_info*;
+    _ZNK10__cxxabiv120__function_type_info*;
+    _ZNK10__cxxabiv117__pbase_type_info*;
+    _ZNK10__cxxabiv129__pointer_to_member_type_info*;
+    _ZNK10__cxxabiv119__pointer_type_info*;
+    _ZNK10__cxxabiv120__si_class_type_info*;
+    _ZNK10__cxxabiv121__vmi_class_type_info*;
+
+    # virtual table
+    _ZTVN10__cxxabiv117__array_type_infoE;
+    _ZTVN10__cxxabiv117__class_type_infoE;
+    _ZTVN10__cxxabiv116__enum_type_infoE;
+    _ZTVN10__cxxabiv120__function_type_infoE;
+    _ZTVN10__cxxabiv123__fundamental_type_infoE;
+    _ZTVN10__cxxabiv117__pbase_type_infoE;
+    _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTVN10__cxxabiv119__pointer_type_infoE;
+    _ZTVN10__cxxabiv120__si_class_type_infoE;
+    _ZTVN10__cxxabiv121__vmi_class_type_infoE;
+
+    # typeinfo structure (and some names)
+    _ZTI[a-fh-mp-z];
+    _ZTIP[a-fh-mp-z];
+    _ZTIPK[a-fh-mp-z];
+    _ZTIN10__cxxabiv117__array_type_infoE;
+    _ZTIN10__cxxabiv117__class_type_infoE;
+    _ZTIN10__cxxabiv116__enum_type_infoE;
+    _ZTIN10__cxxabiv120__function_type_infoE;
+    _ZTIN10__cxxabiv123__fundamental_type_infoE;
+    _ZTIN10__cxxabiv117__pbase_type_infoE;
+    _ZTIN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTIN10__cxxabiv119__pointer_type_infoE;
+    _ZTIN10__cxxabiv120__si_class_type_infoE;
+    _ZTIN10__cxxabiv121__vmi_class_type_infoE;
+
+    # typeinfo name
+    _ZTS[a-fh-mp-z];
+    _ZTSP[a-fh-mp-z];
+    _ZTSPK[a-fh-mp-z];
+    _ZTSN10__cxxabiv117__array_type_infoE;
+    _ZTSN10__cxxabiv117__class_type_infoE;
+    _ZTSN10__cxxabiv116__enum_type_infoE;
+    _ZTSN10__cxxabiv120__function_type_infoE;
+    _ZTSN10__cxxabiv123__fundamental_type_infoE;
+    _ZTSN10__cxxabiv117__pbase_type_infoE;
+    _ZTSN10__cxxabiv129__pointer_to_member_type_infoE;
+    _ZTSN10__cxxabiv119__pointer_type_infoE;
+    _ZTSN10__cxxabiv120__si_class_type_infoE;
+    _ZTSN10__cxxabiv121__vmi_class_type_infoE;
+
+    # __gnu_cxx::_verbose_terminate_handler()
+    _ZN9__gnu_cxx27__verbose_terminate_handlerEv;
+
+  local:
+    *;
+};
+
+CXXABI_1.3.1 {
+
+    __cxa_get_exception_ptr;
+
+} CXXABI_1.3;
+
+CXXABI_1.3.2 {
+
+    # typeinfo structures
+    _ZTIN10__cxxabiv115__forced_unwindE;
+    _ZTIN10__cxxabiv119__foreign_exceptionE;
+
+} CXXABI_1.3.1;
+
+CXXABI_1.3.3 {
+
+    # typeinfo for char16_t and char32_t
+    _ZTIDs;
+    _ZTIPDs;
+    _ZTIPKDs;
+    _ZTIDi;
+    _ZTIPDi;
+    _ZTIPKDi;
+
+    # exception_ptr
+    _ZNSt15__exception_ptr13exception_ptrC1Ev;
+    _ZNSt15__exception_ptr13exception_ptrC2Ev;
+    _ZNSt15__exception_ptr13exception_ptrC1ERKS0_;
+    _ZNSt15__exception_ptr13exception_ptrC2ERKS0_;
+    _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE;
+    _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE;
+    _ZNSt15__exception_ptr13exception_ptrD1Ev;
+    _ZNSt15__exception_ptr13exception_ptrD2Ev;
+    _ZNSt15__exception_ptr13exception_ptraSERKS0_;
+    _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv;
+    _ZNKSt15__exception_ptr13exception_ptrntEv;
+    _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv;
+    _ZNSt15__exception_ptr13exception_ptr4swapERS0_;
+    _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_;
+    _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_;
+
+    _ZSt17current_exceptionv;
+    _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
+
+} CXXABI_1.3.2;
+
+CXXABI_1.3.4 {
+
+    # typeinfo for decimal floating point types
+    _ZTID[fde];
+    _ZTIPD[fde];
+    _ZTIPKD[fde];
+
+} CXXABI_1.3.3;
+
+CXXABI_1.3.5 {
+
+    # typeinfo for decltype(nullptr)
+    _ZTIDn;
+    _ZTIPDn;
+    _ZTIPKDn;
+
+    # typeinfo for __int128 and unsigned __int128
+    _ZTI[no];
+    _ZTIP[no];
+    _ZTIPK[no];
+
+    # Default function.
+    _ZSt11_Hash_bytesPKv*;
+
+    # FNV hash.
+    _ZSt15_Fnv_hash_bytesPKv*;
+
+    # std::nested_exception
+    _ZNSt16nested_exceptionD*;
+    _ZTISt16nested_exception;
+    _ZTVSt16nested_exception;
+
+} CXXABI_1.3.4;
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/none.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/none.ver
new file mode 100644
index 000000000..39cb10d4d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/abi/pre/none.ver
@@ -0,0 +1,7 @@
+# 
+# This is a placeholder file.  It does nothing and is not used.
+# 
+# If you are seeing this file as your linker script (named
+# libstdc++-symbols.ver), then either 1) the configuration process
+# determined that symbol versioning should not be done, or 2) you
+# specifically turned it off. (ie, --disable-symvers).
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/bitmap_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/bitmap_allocator_base.h
new file mode 100644
index 000000000..3ae4cff6c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/bitmap_allocator_base.h
@@ -0,0 +1,37 @@
+// Base to std::allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _GLIBCXX_CXX_ALLOCATOR_H
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+// Define bitmap_allocator as the base class to std::allocator.
+#include <ext/bitmap_allocator.h>
+#define __glibcxx_base_allocator  __gnu_cxx::bitmap_allocator
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/malloc_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/malloc_allocator_base.h
new file mode 100644
index 000000000..1192b9559
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/malloc_allocator_base.h
@@ -0,0 +1,37 @@
+// Base to std::allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _GLIBCXX_CXX_ALLOCATOR_H
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+// Define new_allocator as the base class to std::allocator.
+#include <ext/malloc_allocator.h>
+#define __glibcxx_base_allocator  __gnu_cxx::malloc_allocator
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/mt_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/mt_allocator_base.h
new file mode 100644
index 000000000..9cd8f8a6f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/mt_allocator_base.h
@@ -0,0 +1,37 @@
+// Base to std::allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _GLIBCXX_CXX_ALLOCATOR_H
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+// Define mt_allocator as the base class to std::allocator.
+#include <ext/mt_allocator.h>
+#define __glibcxx_base_allocator  __gnu_cxx::__mt_alloc
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/new_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/new_allocator_base.h
new file mode 100644
index 000000000..6f8aef360
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/new_allocator_base.h
@@ -0,0 +1,37 @@
+// Base to std::allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _GLIBCXX_CXX_ALLOCATOR_H
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+// Define new_allocator as the base class to std::allocator.
+#include <ext/new_allocator.h>
+#define __glibcxx_base_allocator  __gnu_cxx::new_allocator
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/pool_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/pool_allocator_base.h
new file mode 100644
index 000000000..55aec79bc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/allocator/pool_allocator_base.h
@@ -0,0 +1,37 @@
+// Base to std::allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _GLIBCXX_CXX_ALLOCATOR_H
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+// Define new_allocator as the base class to std::allocator.
+#include <ext/pool_allocator.h>
+#define __glibcxx_base_allocator  __gnu_cxx::__pool_alloc
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/alpha/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/alpha/atomic_word.h
new file mode 100644
index 000000000..266b3855e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/alpha/atomic_word.h
@@ -0,0 +1,33 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+typedef int _Atomic_word;
+
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("mb":::"memory")
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("wmb":::"memory")
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/arm/cxxabi_tweaks.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/arm/cxxabi_tweaks.h
new file mode 100644
index 000000000..2ac349dfc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/arm/cxxabi_tweaks.h
@@ -0,0 +1,82 @@
+// Control various target specific ABI tweaks.  ARM version.
+
+// Copyright (C) 2004, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cxxabi_tweaks.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
+ */
+
+#ifndef _CXXABI_TWEAKS_H
+#define _CXXABI_TWEAKS_H 1
+
+#ifdef __cplusplus
+namespace __cxxabiv1
+{
+  extern "C" 
+  {
+#endif
+
+#ifdef __ARM_EABI__
+  // The ARM EABI uses the least significant bit of a 32-bit
+  // guard variable.  */
+#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
+#define _GLIBCXX_GUARD_SET(x) *(x) = 1
+#define _GLIBCXX_GUARD_BIT 1
+#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
+#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
+  typedef int __guard;
+
+  // We also want the element size in array cookies.
+#define _GLIBCXX_ELTSIZE_IN_COOKIE 1
+  
+  // __cxa_vec_ctor should return a pointer to the array.
+  typedef void * __cxa_vec_ctor_return_type;
+#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
+  // Constructors and destructors return the "this" pointer.
+  typedef void * __cxa_cdtor_return_type;
+
+#else // __ARM_EABI__
+
+  // The generic ABI uses the first byte of a 64-bit guard variable.
+#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
+#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
+#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1)
+#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
+#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
+  __extension__ typedef int __guard __attribute__((mode (__DI__)));
+
+  // __cxa_vec_ctor has void return type.
+  typedef void __cxa_vec_ctor_return_type;
+#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
+  // Constructors and destructors do not return a value.
+  typedef void __cxa_cdtor_return_type;
+
+#endif //!__ARM_EABI__
+
+#ifdef __cplusplus
+  }
+} // namespace __cxxabiv1
+#endif
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomic_word.h
new file mode 100644
index 000000000..369b7b0c5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomic_word.h
@@ -0,0 +1,31 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+// This entity must not cross a page boundary.
+typedef int _Atomic_word __attribute__ ((__aligned__ (4)));
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomicity.h
new file mode 100644
index 000000000..148a8b61c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/cris/atomicity.h
@@ -0,0 +1,89 @@
+// Low-level functions for atomic operations: CRIS version  -*- C++ -*-
+
+// Copyright (C) 2001, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    int __tmp;
+    _Atomic_word __result;
+
+#if (__CRIS_arch_version >= 32)
+  __asm__ __volatile__ (" clearf p	       \n"
+		       "0:		       \n"
+		       " move.d %4,%2	       \n"
+		       " move.d [%3],%0	       \n"
+		       " add.d %0,%2	       \n"
+		       " ax		       \n"
+		       " move.d %2,[%3]	       \n"
+		       " bcs 0b		       \n"
+		       " clearf p	       \n"
+		       :  "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
+		       : "r" (__mem), "g" (__val), "Q" (*__mem)
+		       : "memory");
+#elif (__CRIS_arch_version >= 10)
+    __asm__ __volatile__ (" clearf		\n"
+			"0:			\n"
+			" move.d %4,%2		\n"
+			" move.d [%3],%0	\n"
+			" add.d %0,%2		\n"
+			" ax			\n"
+			" move.d %2,[%3]	\n"
+			" bwf 0b		\n"
+			" clearf		\n"
+			:  "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
+			: "r" (__mem), "g" (__val), "Q" (*__mem)
+			/* The memory clobber must stay, regardless of
+			   current uses of this function.  */
+			: "memory");
+#else
+    __asm__ __volatile__ (" move $ccr,$r9	\n"
+			" di			\n"
+			" move.d %4,%2		\n"
+			" move.d [%3],%0	\n"
+			" add.d %0,%2		\n"
+			" move.d %2,[%3]	\n"
+			" move $r9,$ccr		\n"
+			:  "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
+			: "r" (__mem), "g" (__val), "Q" (*__mem)
+			: "r9",
+			  /* The memory clobber must stay, regardless of
+			     current uses of this function.  */
+			  "memory");
+#endif
+
+    return __result;
+  }
+
+  void
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __exchange_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomic_word.h
new file mode 100644
index 000000000..f2bdbbc96
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomic_word.h
@@ -0,0 +1,47 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file atomic_word.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+typedef int _Atomic_word;
+
+// Define these two macros using the appropriate memory barrier for the target.
+// The commented out versions below are the defaults.
+// See ia64/atomic_word.h for an alternative approach.
+
+// This one prevents loads from being hoisted across the barrier;
+// in other words, this is a Load-Load acquire barrier.
+// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.  
+// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
+
+// This one prevents stores from being sunk across the barrier; in other
+// words, a Store-Store release barrier.
+// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_builtins/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_builtins/atomicity.h
new file mode 100644
index 000000000..581c41fda
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_builtins/atomicity.h
@@ -0,0 +1,44 @@
+// Low-level functions for atomic operations: version for CPUs providing
+// atomic builtins -*- C++ -*-
+
+// Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <bits/atomic_word.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word 
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { return __sync_fetch_and_add(__mem, __val); }
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __sync_fetch_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_mutex/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_mutex/atomicity.h
new file mode 100644
index 000000000..dc0a5a065
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/atomicity_mutex/atomicity.h
@@ -0,0 +1,60 @@
+// Low-level functions for atomic operations: Generic version  -*- C++ -*-
+
+// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+#include <ext/concurrence.h>
+
+namespace 
+{
+  __gnu_cxx::__mutex&
+  get_atomic_mutex()
+  {
+    static __gnu_cxx::__mutex atomic_mutex;
+    return atomic_mutex;
+  }
+} // anonymous namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    __gnu_cxx::__scoped_lock sentry(get_atomic_mutex());
+    _Atomic_word __result;
+    __result = *__mem;
+    *__mem += __val;
+    return __result;
+  }
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __exchange_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cpu_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cpu_defines.h
new file mode 100644
index 000000000..c1b986337
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cpu_defines.h
@@ -0,0 +1,33 @@
+// Specific definitions for generic platforms  -*- C++ -*-
+
+// Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cpu_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_CPU_DEFINES
+#define _GLIBCXX_CPU_DEFINES 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cxxabi_tweaks.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cxxabi_tweaks.h
new file mode 100644
index 000000000..f48f73e00
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/generic/cxxabi_tweaks.h
@@ -0,0 +1,59 @@
+// Control various target specific ABI tweaks.  Generic version.
+
+// Copyright (C) 2004, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cxxabi_tweaks.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
+ */
+
+#ifndef _CXXABI_TWEAKS_H
+#define _CXXABI_TWEAKS_H 1
+
+#ifdef __cplusplus
+namespace __cxxabiv1
+{
+  extern "C" 
+  {
+#endif
+
+  // The generic ABI uses the first byte of a 64-bit guard variable.
+#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
+#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
+#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1)
+#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
+#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
+  __extension__ typedef int __guard __attribute__((mode (__DI__)));
+
+  // __cxa_vec_ctor has void return type.
+  typedef void __cxa_vec_ctor_return_type;
+#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
+  // Constructors and destructors do not return a value.
+  typedef void __cxa_cdtor_return_type;
+
+#ifdef __cplusplus
+  }
+} // namespace __cxxabiv1
+#endif
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/hppa/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/hppa/atomicity.h
new file mode 100644
index 000000000..a2ec4f2e9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/hppa/atomicity.h
@@ -0,0 +1,94 @@
+// Low-level functions for atomic operations: PA-RISC version  -*- C++ -*-
+
+// Copyright (C) 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<int _Inst>
+    struct _Atomicity_lock
+    {
+      static volatile int _S_atomicity_lock;
+    };
+  
+  template<int _Inst>
+  volatile int
+  _Atomicity_lock<_Inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1;
+
+  // Because of the lack of weak support when using the hpux som
+  // linker, we explicitly instantiate the atomicity lock.
+  template volatile int _Atomicity_lock<0>::_S_atomicity_lock;
+
+  int
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word result;
+    int tmp;
+    volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock;
+    
+    __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
+			  "cmpib,<>,n 0,%0,.+20\n\t"
+			  "ldw 0(%1),%0\n\t"
+			  "cmpib,= 0,%0,.-4\n\t"
+			  "nop\n\t"
+			  "b,n .-20"
+			  : "=&r" (tmp)
+			  : "r" (&lock)
+			  : "memory");
+    
+    result = *__mem;
+    *__mem = result + __val;
+    __asm__ __volatile__ ("stw %1,0(%0)"
+			  : : "r" (&lock), "r" (tmp) : "memory");
+    return result;
+  }
+  
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    int tmp;
+    volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock;
+    
+    __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
+			  "cmpib,<>,n 0,%0,.+20\n\t"
+			  "ldw 0(%1),%0\n\t"
+			  "cmpib,= 0,%0,.-4\n\t"
+			  "nop\n\t"
+			  "b,n .-20"
+			  : "=&r" (tmp)
+			  : "r" (&lock)
+			  : "memory");
+    
+    *__mem += __val;
+    __asm__ __volatile__ ("stw %1,0(%0)"
+			  : : "r" (&lock), "r" (tmp) : "memory");
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i386/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i386/atomicity.h
new file mode 100644
index 000000000..97205e42f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i386/atomicity.h
@@ -0,0 +1,73 @@
+// Low-level functions for atomic operations: x86, x >= 3 version  -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<int __inst>
+    struct _Atomicity_lock
+    {
+      static volatile _Atomic_word _S_atomicity_lock;
+    };
+
+  template<int __inst>
+  volatile _Atomic_word _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+
+  template volatile _Atomic_word _Atomicity_lock<0>::_S_atomicity_lock;
+  
+  _Atomic_word 
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    register _Atomic_word __result, __tmp = 1;
+    
+    // Obtain the atomic exchange/add spin lock.
+    do 
+      {
+	__asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}"
+			      : "=m" (_Atomicity_lock<0>::_S_atomicity_lock),
+			      "+r" (__tmp)
+			      : "m" (_Atomicity_lock<0>::_S_atomicity_lock));
+      } 
+    while (__tmp);
+    
+    __result = *__mem;
+    *__mem += __val;
+    
+    // Release spin lock.
+    _Atomicity_lock<0>::_S_atomicity_lock = 0;
+    
+    return __result;
+  }
+  
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __exchange_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i486/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i486/atomicity.h
new file mode 100644
index 000000000..602cbb711
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/i486/atomicity.h
@@ -0,0 +1,52 @@
+// Low-level functions for atomic operations: x86, x >= 4 version  -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word 
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    register _Atomic_word __result;
+    __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}"
+			  : "=r" (__result), "=m" (*__mem) 
+			  : "0" (__val), "m" (*__mem));
+    return __result;
+  }
+  
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}"
+			  : "=m" (*__mem) : "ir" (__val), "m" (*__mem));
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/ia64/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/ia64/atomic_word.h
new file mode 100644
index 000000000..9dfbf00ec
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/ia64/atomic_word.h
@@ -0,0 +1,64 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+#include <bits/cxxabi_tweaks.h>
+
+typedef int _Atomic_word;
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  // Test the first byte of __g and ensure that no loads are hoisted across
+  // the test.
+  inline bool
+  __test_and_acquire (__cxxabiv1::__guard *__g)
+  {
+    unsigned char __c;
+    unsigned char *__p = reinterpret_cast<unsigned char *>(__g);
+    // ldN.acq is a load with an implied hoist barrier.
+    // would ld8+mask be faster than just doing an ld1?
+    __asm __volatile ("ld1.acq %0 = %1" : "=r"(__c) : "m"(*__p) : "memory");
+    return __c != 0;
+  }
+
+  // Set the first byte of __g to 1 and ensure that no stores are sunk
+  // across the store.
+  inline void
+  __set_and_release (__cxxabiv1::__guard *__g)
+  {
+    unsigned char *__p = reinterpret_cast<unsigned char *>(__g);
+    // stN.rel is a store with an implied sink barrier.
+    // could load word, set flag, and CAS it back
+    __asm __volatile ("st1.rel %0 = %1" : "=m"(*__p) : "r"(1) : "memory");
+  }
+
+  // We don't define the _BARRIER macros on ia64 because the barriers are
+  // included in the test and set, above.
+#define _GLIBCXX_GUARD_TEST_AND_ACQUIRE(G) __gnu_cxx::__test_and_acquire (G)
+#define _GLIBCXX_GUARD_SET_AND_RELEASE(G) __gnu_cxx::__set_and_release (G)
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/m68k/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/m68k/atomicity.h
new file mode 100644
index 000000000..571125584
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/m68k/atomicity.h
@@ -0,0 +1,132 @@
+// Low-level functions for atomic operations: m68k version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if ( defined(__mc68020__) || defined(__mc68030__) \
+      || defined(__mc68040__) || defined(__mc68060__) ) \
+    && !defined(__mcpu32__)
+  // These variants support compare-and-swap.
+  _Atomic_word 
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    register _Atomic_word __result = *__mem;
+    register _Atomic_word __temp;
+    __asm__ __volatile__ ("1: move%.l %0,%1\n\t"
+			  "add%.l %3,%1\n\t"
+			  "cas%.l %0,%1,%2\n\t"
+			  "jne 1b"
+			  : "=d" (__result), "=&d" (__temp), "=m" (*__mem)
+			  : "d" (__val), "0" (__result), "m" (*__mem));
+    return __result;
+  }
+
+#elif defined(__rtems__)
+  // TAS/JBNE is unsafe on systems with strict priority-based scheduling.
+  // Disable interrupts, which we can do only from supervisor mode.
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __result;
+    short __level, __tmpsr;
+    __asm__ __volatile__ ("move%.w %%sr,%0\n\tor%.l %0,%1\n\tmove%.w %1,%%sr"
+			  : "=d"(__level), "=d"(__tmpsr) : "1"(0x700));
+    
+    __result = *__mem;
+    *__mem = __result + __val;    
+    __asm__ __volatile__ ("move%.w %0,%%sr" : : "d"(__level));
+    
+    return __result;
+  }
+
+#else
+  
+  template<int __inst>
+    struct _Atomicity_lock
+    {
+      static volatile unsigned char _S_atomicity_lock;
+    };
+
+  template<int __inst>
+  volatile unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+  
+  template volatile unsigned char _Atomicity_lock<0>::_S_atomicity_lock;
+  
+  _Atomic_word 
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __result;
+    
+    // bset with no immediate addressing (not SMP-safe)
+#if defined(__mcfisaa__) || defined(__mcfisaaplus__)
+    __asm__ __volatile__("1: bset.b #7,%0@\n\tjbne 1b"
+			 : /* no outputs */
+			 : "a"(&_Atomicity_lock<0>::_S_atomicity_lock)
+			 : "cc", "memory");
+    
+    // CPU32 and CF ISAs B & C support test-and-set (SMP-safe).
+#elif defined(__mcpu32__) || defined(__mcfisab__) || defined (__mcfisac__)
+    __asm__ __volatile__("1: tas %0\n\tjbne 1b"
+			 : "+m"(_Atomicity_lock<0>::_S_atomicity_lock)
+			 : /* none */
+			 : "cc");
+    
+    // Use bset with immediate addressing for 68000/68010 (not SMP-safe)
+    // NOTE: TAS is available on the 68000, but unsupported by some Amiga
+    // memory controllers.
+#else
+    __asm__ __volatile__("1: bset.b #7,%0\n\tjbne 1b"
+			 : "+m"(_Atomicity_lock<0>::_S_atomicity_lock)
+			 : /* none */
+			 : "cc");
+#endif
+    
+    __result = *__mem;
+    *__mem = __result + __val;
+    
+    _Atomicity_lock<0>::_S_atomicity_lock = 0;
+    
+    return __result;
+  }
+  
+#endif /* TAS / BSET */
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    // Careful: using add.l with a memory destination is not
+    // architecturally guaranteed to be atomic.
+    __exchange_and_add(__mem, __val);
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/microblaze/cpu_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/microblaze/cpu_defines.h
new file mode 100644
index 000000000..320e980bd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/microblaze/cpu_defines.h
@@ -0,0 +1,39 @@
+// Specific definitions for Xilinx MicroBlaze platforms  -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// Contributed by Michael Eager <eager@eagercon.com>.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cpu_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_CPU_DEFINES
+#define _GLIBCXX_CPU_DEFINES 1
+
+// Optimize memory size for embedded systems
+//   -- Use abort for eh terminate
+#define _GLIBCXX_NO_VERBOSE_TERMINATE 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/atomic_word.h
new file mode 100644
index 000000000..2c7bd8232
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/atomic_word.h
@@ -0,0 +1,37 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+typedef int _Atomic_word;
+
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory")
+#ifdef __NO_LWSYNC__
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory")
+#else
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory")
+#endif
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/cpu_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/cpu_defines.h
new file mode 100644
index 000000000..3985b6c10
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/powerpc/cpu_defines.h
@@ -0,0 +1,36 @@
+// Specific definitions for generic platforms  -*- C++ -*-
+
+// Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cpu_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_CPU_DEFINES
+#define _GLIBCXX_CPU_DEFINES 1
+
+// Integer divide instructions don't trap on PowerPC.
+#define __glibcxx_integral_traps false
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sh/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sh/atomicity.h
new file mode 100644
index 000000000..ece63ce2a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sh/atomicity.h
@@ -0,0 +1,109 @@
+// Low-level functions for atomic operations: sh version  -*- C++ -*-
+
+// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifdef __SH4A__
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef int _Atomic_word;
+
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add (volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __result;
+
+    __asm__ __volatile__
+      ("0:\n"
+       "\tmovli.l\t@%2,r0\n"
+       "\tmov\tr0,%1\n"
+       "\tadd\t%3,r0\n"
+       "\tmovco.l\tr0,@%2\n"
+       "\tbf\t0b"
+       : "+m" (*__mem), "=&r" (__result)
+       : "r" (__mem), "rI08" (__val)
+       : "r0");
+
+    return __result;
+  }
+
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add (volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    asm("0:\n"
+	"\tmovli.l\t@%1,r0\n"
+	"\tadd\t%2,r0\n"
+	"\tmovco.l\tr0,@%1\n"
+	"\tbf\t0b"
+	: "+m" (*__mem)
+	: "r" (__mem), "rI08" (__val)
+	: "r0");
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#else /* !__SH4A__ */
+
+/* This is generic/atomicity.h */
+
+#include <ext/atomicity.h>
+#include <ext/concurrence.h>
+
+namespace 
+{
+  __gnu_cxx::__mutex atomic_mutex;
+} // anonymous namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    __gnu_cxx::__scoped_lock sentry(atomic_mutex);
+    _Atomic_word __result;
+    __result = *__mem;
+    *__mem += __val;
+    return __result;
+  }
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __exchange_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* !__SH4A__ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomic_word.h
new file mode 100644
index 000000000..41e7bd4df
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomic_word.h
@@ -0,0 +1,48 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+#ifdef __arch64__
+  typedef long _Atomic_word;
+#else
+  typedef int _Atomic_word;
+#endif
+
+#if defined(__sparc_v9__)
+// These are necessary under the V9 RMO model, though it is almost never
+// used in userspace.
+#define _GLIBCXX_READ_MEM_BARRIER \
+  __asm __volatile ("membar #LoadLoad":::"memory")
+#define _GLIBCXX_WRITE_MEM_BARRIER \
+  __asm __volatile ("membar #StoreStore":::"memory")
+
+#elif defined(__sparc_v8__)
+// This is necessary under the PSO model.
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("stbar":::"memory")
+
+#endif
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomicity.h
new file mode 100644
index 000000000..c032e540e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/cpu/sparc/atomicity.h
@@ -0,0 +1,125 @@
+// Low-level functions for atomic operations: Sparc version  -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef __arch64__
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __tmp1, __tmp2;
+    _Atomic_word __val_extended = __val;
+
+    __asm__ __volatile__("1:	ldx	[%3], %0\n\t"
+			 "	add	%0, %4, %1\n\t"
+			 "	casx	[%3], %0, %1\n\t"
+			 "	sub	%0, %1, %0\n\t"
+			 "	brnz,pn	%0, 1b\n\t"
+			 "	 nop"
+			 : "=&r" (__tmp1), "=&r" (__tmp2), "=m" (*__mem)
+			 : "r" (__mem), "r" (__val_extended), "m" (*__mem));
+    return __tmp2;
+  }
+  
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __tmp1, __tmp2;
+    _Atomic_word __val_extended = __val;
+    
+    __asm__ __volatile__("1:	ldx	[%3], %0\n\t"
+			 "	add	%0, %4, %1\n\t"
+			 "	casx	[%3], %0, %1\n\t"
+			 "	sub	%0, %1, %0\n\t"
+			 "	brnz,pn	%0, 1b\n\t"
+			 "	 nop"
+			 : "=&r" (__tmp1), "=&r" (__tmp2), "=m" (*__mem)
+			 : "r" (__mem), "r" (__val_extended), "m" (*__mem));
+  }
+  
+#else /* __arch32__ */
+
+  template<int __inst>
+    struct _Atomicity_lock
+    {
+      static unsigned char _S_atomicity_lock;
+    };
+
+  template<int __inst>
+  unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+  
+  template unsigned char _Atomicity_lock<0>::_S_atomicity_lock;
+  
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __result, __tmp;
+    
+    __asm__ __volatile__("1:	ldstub	[%1], %0\n\t"
+			 "	cmp	%0, 0\n\t"
+			 "	bne	1b\n\t"
+			 "	 nop"
+			 : "=&r" (__tmp)
+			 : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
+			 : "memory");
+    __result = *__mem;
+    *__mem += __val;
+    __asm__ __volatile__("stb	%%g0, [%0]"
+			 : /* no outputs */
+			 : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
+			 : "memory");
+    return __result;
+  }
+  
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  {
+    _Atomic_word __tmp;
+    
+    __asm__ __volatile__("1:	ldstub	[%1], %0\n\t"
+			 "	cmp	%0, 0\n\t"
+			 "	bne	1b\n\t"
+			 "	 nop"
+			 : "=&r" (__tmp)
+			 : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
+			 : "memory");
+    *__mem += __val;
+    __asm__ __volatile__("stb	%%g0, [%0]"
+			 : /* no outputs */
+			 : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
+			 : "memory");
+  }  
+#endif /* __arch32__ */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.cc
new file mode 100644
index 000000000..1b7e1bba5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.cc
@@ -0,0 +1,385 @@
+// Wrapper of C-language FILE struct -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.8  File-based streams
+//
+
+#include <bits/basic_file.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#ifdef _GLIBCXX_HAVE_POLL
+#include <poll.h>
+#endif
+
+// Pick up ioctl on Solaris 2.8
+#ifdef _GLIBCXX_HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+// Pick up FIONREAD on Solaris 2
+#ifdef _GLIBCXX_HAVE_SYS_IOCTL_H
+#define BSD_COMP 
+#include <sys/ioctl.h>
+#endif
+
+// Pick up FIONREAD on Solaris 2.5.
+#ifdef _GLIBCXX_HAVE_SYS_FILIO_H
+#include <sys/filio.h>
+#endif
+
+#ifdef _GLIBCXX_HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#if defined(_GLIBCXX_HAVE_S_ISREG) || defined(_GLIBCXX_HAVE_S_IFREG)
+# include <sys/stat.h>
+# ifdef _GLIBCXX_HAVE_S_ISREG
+#  define _GLIBCXX_ISREG(x) S_ISREG(x)
+# else
+#  define _GLIBCXX_ISREG(x) (((x) & S_IFMT) == S_IFREG)
+# endif
+#endif
+
+#include <limits> // For <off_t>::max() and min() and <streamsize>::max()
+
+namespace 
+{
+  // Map ios_base::openmode flags to a string for use in fopen().
+  // Table of valid combinations as given in [lib.filebuf.members]/2.
+  static const char*
+  fopen_mode(std::ios_base::openmode mode)
+  {
+    enum 
+      {
+	in     = std::ios_base::in,
+	out    = std::ios_base::out,
+	trunc  = std::ios_base::trunc,
+	app    = std::ios_base::app,
+	binary = std::ios_base::binary
+      };
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 596. 27.8.1.3 Table 112 omits "a+" and "a+b" modes.
+    switch (mode & (in|out|trunc|app|binary))
+      {
+      case (   out                 ): return "w";
+      case (   out      |app       ): return "a";
+      case (             app       ): return "a";
+      case (   out|trunc           ): return "w";
+      case (in                     ): return "r";
+      case (in|out                 ): return "r+";
+      case (in|out|trunc           ): return "w+";
+      case (in|out      |app       ): return "a+";
+      case (in          |app       ): return "a+";
+
+      case (   out          |binary): return "wb";
+      case (   out      |app|binary): return "ab";
+      case (             app|binary): return "ab";
+      case (   out|trunc    |binary): return "wb";
+      case (in              |binary): return "rb";
+      case (in|out          |binary): return "r+b";
+      case (in|out|trunc    |binary): return "w+b";
+      case (in|out      |app|binary): return "a+b";
+      case (in          |app|binary): return "a+b";
+
+      default: return 0; // invalid
+      }
+  }
+
+  // Wrapper handling partial write.
+  static std::streamsize
+  xwrite(int __fd, const char* __s, std::streamsize __n)
+  {
+    std::streamsize __nleft = __n;
+
+    for (;;)
+      {
+	const std::streamsize __ret = write(__fd, __s, __nleft);
+	if (__ret == -1L && errno == EINTR)
+	  continue;
+	if (__ret == -1L)
+	  break;
+
+	__nleft -= __ret;
+	if (__nleft == 0)
+	  break;
+
+	__s += __ret;
+      }
+
+    return __n - __nleft;
+  }
+
+#ifdef _GLIBCXX_HAVE_WRITEV
+  // Wrapper handling partial writev.
+  static std::streamsize
+  xwritev(int __fd, const char* __s1, std::streamsize __n1,
+	  const char* __s2, std::streamsize __n2)
+  {
+    std::streamsize __nleft = __n1 + __n2;
+    std::streamsize __n1_left = __n1;
+
+    struct iovec __iov[2];
+    __iov[1].iov_base = const_cast<char*>(__s2);
+    __iov[1].iov_len = __n2;
+
+    for (;;)
+      {
+	__iov[0].iov_base = const_cast<char*>(__s1);
+	__iov[0].iov_len = __n1_left;
+
+	const std::streamsize __ret = writev(__fd, __iov, 2);
+	if (__ret == -1L && errno == EINTR)
+	  continue;
+	if (__ret == -1L)
+	  break;
+
+	__nleft -= __ret;
+	if (__nleft == 0)
+	  break;
+
+	const std::streamsize __off = __ret - __n1_left;
+	if (__off >= 0)
+	  {
+	    __nleft -= xwrite(__fd, __s2 + __off, __n2 - __off);
+	    break;
+	  }
+	
+	__s1 += __ret;
+	__n1_left -= __ret;
+      }
+
+    return __n1 + __n2 - __nleft;
+  }
+#endif
+} // anonymous namespace
+
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for __basic_file<char>.
+  __basic_file<char>::__basic_file(__c_lock* /*__lock*/) throw()
+  : _M_cfile(NULL), _M_cfile_created(false) { }
+
+  __basic_file<char>::~__basic_file()
+  { this->close(); }
+      
+  __basic_file<char>*
+  __basic_file<char>::sys_open(__c_file* __file, ios_base::openmode) 
+  {
+    __basic_file* __ret = NULL;
+    if (!this->is_open() && __file)
+      {
+	int __err;
+	errno = 0;	
+	do
+	  __err = this->sync();
+	while (__err && errno == EINTR);
+	if (!__err)
+	  {
+	    _M_cfile = __file;
+	    _M_cfile_created = false;
+	    __ret = this;
+	  }
+      }
+    return __ret;
+  }
+  
+  __basic_file<char>*
+  __basic_file<char>::sys_open(int __fd, ios_base::openmode __mode) throw ()
+  {
+    __basic_file* __ret = NULL;
+    const char* __c_mode = fopen_mode(__mode);
+    if (__c_mode && !this->is_open() && (_M_cfile = fdopen(__fd, __c_mode)))
+      {
+	char* __buf = NULL;
+	_M_cfile_created = true;
+	if (__fd == 0)
+	  setvbuf(_M_cfile, __buf, _IONBF, 0);
+	__ret = this;
+      }
+    return __ret;
+  }
+  
+  __basic_file<char>* 
+  __basic_file<char>::open(const char* __name, ios_base::openmode __mode, 
+			   int /*__prot*/)
+  {
+    __basic_file* __ret = NULL;
+    const char* __c_mode = fopen_mode(__mode);
+    if (__c_mode && !this->is_open())
+      {
+#ifdef _GLIBCXX_USE_LFS
+	if ((_M_cfile = fopen64(__name, __c_mode)))
+#else
+	if ((_M_cfile = fopen(__name, __c_mode)))
+#endif
+	  {
+	    _M_cfile_created = true;
+	    __ret = this;
+	  }
+      }
+    return __ret;
+  }
+  
+  bool 
+  __basic_file<char>::is_open() const throw ()
+  { return _M_cfile != 0; }
+  
+  int 
+  __basic_file<char>::fd() throw ()
+  { return fileno(_M_cfile); }
+  
+  __c_file*
+  __basic_file<char>::file() throw ()
+  { return _M_cfile; }
+  
+  __basic_file<char>* 
+  __basic_file<char>::close()
+  { 
+    __basic_file* __ret = static_cast<__basic_file*>(NULL);
+    if (this->is_open())
+      {
+	int __err = 0;
+	if (_M_cfile_created)
+	  {
+	    // In general, no need to zero errno in advance if checking
+	    // for error first. However, C89/C99 (at variance with IEEE
+	    // 1003.1, f.i.) do not mandate that fclose must set errno
+	    // upon error.
+	    errno = 0;
+	    do
+	      __err = fclose(_M_cfile);
+	    while (__err && errno == EINTR);
+	  }
+	_M_cfile = 0;
+	if (!__err)
+	  __ret = this;
+      }
+    return __ret;
+  }
+ 
+  streamsize 
+  __basic_file<char>::xsgetn(char* __s, streamsize __n)
+  {
+    streamsize __ret;
+    do
+      __ret = read(this->fd(), __s, __n);
+    while (__ret == -1L && errno == EINTR);
+    return __ret;
+  }
+
+  streamsize 
+  __basic_file<char>::xsputn(const char* __s, streamsize __n)
+  { return xwrite(this->fd(), __s, __n); }
+
+  streamsize 
+  __basic_file<char>::xsputn_2(const char* __s1, streamsize __n1,
+			       const char* __s2, streamsize __n2)
+  {
+    streamsize __ret = 0;
+#ifdef _GLIBCXX_HAVE_WRITEV
+    __ret = xwritev(this->fd(), __s1, __n1, __s2, __n2);
+#else
+    if (__n1)
+      __ret = xwrite(this->fd(), __s1, __n1);
+
+    if (__ret == __n1)
+      __ret += xwrite(this->fd(), __s2, __n2);
+#endif
+    return __ret;
+  }
+
+  streamoff
+  __basic_file<char>::seekoff(streamoff __off, ios_base::seekdir __way) throw ()
+  {
+#ifdef _GLIBCXX_USE_LFS
+    return lseek64(this->fd(), __off, __way);
+#else
+    if (__off > numeric_limits<off_t>::max()
+	|| __off < numeric_limits<off_t>::min())
+      return -1L;
+    return lseek(this->fd(), __off, __way);
+#endif
+  }
+
+  int 
+  __basic_file<char>::sync() 
+  { return fflush(_M_cfile); }
+
+  streamsize
+  __basic_file<char>::showmanyc()
+  {
+#ifndef _GLIBCXX_NO_IOCTL
+#ifdef FIONREAD
+    // Pipes and sockets.    
+#ifdef _GLIBCXX_FIONREAD_TAKES_OFF_T
+    off_t __num = 0;
+#else
+    int __num = 0;
+#endif
+    int __r = ioctl(this->fd(), FIONREAD, &__num);
+    if (!__r && __num >= 0)
+      return __num; 
+#endif
+#endif
+
+#ifdef _GLIBCXX_HAVE_POLL
+    // Cheap test.
+    struct pollfd __pfd[1];
+    __pfd[0].fd = this->fd();
+    __pfd[0].events = POLLIN;
+    if (poll(__pfd, 1, 0) <= 0)
+      return 0;
+#endif   
+
+#if defined(_GLIBCXX_HAVE_S_ISREG) || defined(_GLIBCXX_HAVE_S_IFREG)
+    // Regular files.
+#ifdef _GLIBCXX_USE_LFS
+    struct stat64 __buffer;
+    const int __err = fstat64(this->fd(), &__buffer);
+    if (!__err && _GLIBCXX_ISREG(__buffer.st_mode))
+      {
+	const streamoff __off = __buffer.st_size - lseek64(this->fd(), 0,
+							   ios_base::cur);
+	return std::min(__off, streamoff(numeric_limits<streamsize>::max()));
+      }
+#else
+    struct stat __buffer;
+    const int __err = fstat(this->fd(), &__buffer);
+    if (!__err && _GLIBCXX_ISREG(__buffer.st_mode))
+      return __buffer.st_size - lseek(this->fd(), 0, ios_base::cur);
+#endif
+#endif
+    return 0;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.h
new file mode 100644
index 000000000..f543a8976
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/basic_file_stdio.h
@@ -0,0 +1,111 @@
+// Wrapper of C-language FILE struct -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.8  File-based streams
+//
+
+/** @file bits/basic_file.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ios}
+ */
+
+#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
+#define _GLIBCXX_BASIC_FILE_STDIO_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/c++io.h>  // for __c_lock and __c_file
+#include <ios>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Generic declaration.
+  template<typename _CharT>
+    class __basic_file; 
+
+  // Specialization.
+  template<>
+    class __basic_file<char>
+    {
+      // Underlying data source/sink.
+      __c_file* 	_M_cfile;
+
+      // True iff we opened _M_cfile, and thus must close it ourselves.
+      bool 		_M_cfile_created;
+
+    public:
+      __basic_file(__c_lock* __lock = 0) throw ();
+
+      __basic_file* 
+      open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
+
+      __basic_file*
+      sys_open(__c_file* __file, ios_base::openmode);
+
+      __basic_file*
+      sys_open(int __fd, ios_base::openmode __mode) throw ();
+
+      __basic_file* 
+      close(); 
+
+      _GLIBCXX_PURE bool 
+      is_open() const throw ();
+
+      _GLIBCXX_PURE int 
+      fd() throw ();
+
+      _GLIBCXX_PURE __c_file*
+      file() throw ();
+
+      ~__basic_file();
+
+      streamsize 
+      xsputn(const char* __s, streamsize __n);
+
+      streamsize 
+      xsputn_2(const char* __s1, streamsize __n1,
+	       const char* __s2, streamsize __n2);
+
+      streamsize 
+      xsgetn(char* __s, streamsize __n);
+
+      streamoff
+      seekoff(streamoff __off, ios_base::seekdir __way) throw ();
+
+      int 
+      sync();
+
+      streamsize
+      showmanyc();
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif	
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/c_io_stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/c_io_stdio.h
new file mode 100644
index 000000000..0843df78d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/io/c_io_stdio.h
@@ -0,0 +1,51 @@
+// Underlying io library details -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++io.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ios}
+ */
+
+// c_io_stdio.h - Defines for using "C" stdio.h
+
+#ifndef _GLIBCXX_CXX_IO_H
+#define _GLIBCXX_CXX_IO_H 1
+
+#include <cstdio>
+#include <bits/gthr.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef __gthread_mutex_t __c_lock;
+
+  // for basic_file.h
+  typedef FILE __c_file;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/darwin/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/darwin/ctype_members.cc
new file mode 100644
index 000000000..4b42bc2c0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/darwin/ctype_members.cc
@@ -0,0 +1,173 @@
+// std::ctype implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  // NB: The other ctype<char> specializations are in src/locale.cc and
+  // various /config/os/* files.
+
+  ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
+  : ctype<char>(0, false, __refs) 
+  { 		
+    if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
+      {
+	this->_S_destroy_c_locale(this->_M_c_locale_ctype);
+	this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
+      }
+  }
+
+  ctype_byname<char>::~ctype_byname()
+  { }
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  ctype<wchar_t>::__wmask_type
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
+  {
+    // Darwin uses the same codes for 'char' as 'wchar_t', so this routine
+    // never gets called.
+    return __m;
+  };
+  
+  wchar_t
+  ctype<wchar_t>::do_toupper(wchar_t __c) const
+  { return towupper(__c); }
+
+  const wchar_t*
+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = towupper(*__lo);
+        ++__lo;
+      }
+    return __hi;
+  }
+  
+  wchar_t
+  ctype<wchar_t>::do_tolower(wchar_t __c) const
+  { return towlower(__c); }
+  
+  const wchar_t*
+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = towlower(*__lo);
+        ++__lo;
+      }
+    return __hi;
+  }
+
+  wchar_t
+  ctype<wchar_t>::
+  do_widen(char __c) const
+  { return _M_widen[static_cast<unsigned char>(__c)]; }
+
+  const char* 
+  ctype<wchar_t>::
+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
+  {
+    while (__lo < __hi)
+      {
+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
+	++__lo;
+	++__dest;
+      }
+    return __hi;
+  }
+
+  char
+  ctype<wchar_t>::
+  do_narrow(wchar_t __wc, char __dfault) const
+  { 
+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
+      return _M_narrow[__wc];
+    const int __c = wctob(__wc);
+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
+  }
+
+  const wchar_t*
+  ctype<wchar_t>::
+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
+	    char* __dest) const
+  {
+    if (_M_narrow_ok)
+      while (__lo < __hi)
+	{
+	  if (*__lo >= 0 && *__lo < 128)
+	    *__dest = _M_narrow[*__lo];
+	  else
+	    {
+	      const int __c = wctob(*__lo);
+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	    }
+	  ++__lo;
+	  ++__dest;
+	}
+    else
+      while (__lo < __hi)
+	{
+	  const int __c = wctob(*__lo);
+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	  ++__lo;
+	  ++__dest;
+	}
+    return __hi;
+  }
+
+  void
+  ctype<wchar_t>::_M_initialize_ctype() throw()
+  {
+    wint_t __i;
+    for (__i = 0; __i < 128; ++__i)
+      {
+	const int __c = wctob(__i);
+	if (__c == EOF)
+	  break;
+	else
+	  _M_narrow[__i] = static_cast<char>(__c);
+      }
+    if (__i == 128)
+      _M_narrow_ok = true;
+    else
+      _M_narrow_ok = false;
+    for (size_t __i = 0;
+	 __i < sizeof(_M_widen) / sizeof(wint_t); ++__i)
+      _M_widen[__i] = btowc(__i);
+  }
+#endif //  _GLIBCXX_USE_WCHAR_T
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c++locale_internal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c++locale_internal.h
new file mode 100644
index 000000000..32df26798
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c++locale_internal.h
@@ -0,0 +1,25 @@
+// Locale internal implementation header -*- C++ -*-
+
+// Copyright (C) 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// The generic locale code doesn't need to do anything here (yet)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.cc
new file mode 100644
index 000000000..fb9b425da
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.cc
@@ -0,0 +1,268 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <cerrno>  // For errno
+#include <cmath>  // For isinf, finite, finitef, fabs
+#include <cstdlib>  // For strof, strtold
+#include <cstring>
+#include <cstdio>
+#include <locale>
+#include <limits>
+
+#ifdef _GLIBCXX_HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    void
+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
+		   const __c_locale&) throw()
+    {
+      // Assumes __s formatted for "C" locale.
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __len = strlen(__old) + 1;
+      char* __sav = new char[__len];
+      memcpy(__sav, __old, __len);
+      setlocale(LC_ALL, "C");
+      char* __sanity;
+      bool __overflow = false;
+
+#if !__FLT_HAS_INFINITY__
+      errno = 0;
+#endif
+
+#ifdef _GLIBCXX_HAVE_STRTOF
+      __v = strtof(__s, &__sanity);
+#else
+      double __d = strtod(__s, &__sanity);
+      __v = static_cast<float>(__d);
+#ifdef _GLIBCXX_HAVE_FINITEF
+      if (!finitef (__v))
+	__overflow = true;
+#elif defined (_GLIBCXX_HAVE_FINITE)
+      if (!finite (static_cast<double> (__v)))
+	__overflow = true;
+#elif defined (_GLIBCXX_HAVE_ISINF)
+      if (isinf (static_cast<double> (__v)))
+	__overflow = true;
+#else
+      if (fabs(__d) > numeric_limits<float>::max())
+	__overflow = true;
+#endif
+#endif // _GLIBCXX_HAVE_STRTOF
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+	{
+	  __v = 0.0f;
+	  __err = ios_base::failbit;
+	}
+      else if (__overflow
+#if __FLT_HAS_INFINITY__
+	       || __v == numeric_limits<float>::infinity()
+	       || __v == -numeric_limits<float>::infinity()
+#else
+	       || ((__v > 1.0f || __v < -1.0f) && errno == ERANGE)
+#endif
+	      )
+	{
+	  if (__v > 0.0f)
+	    __v = numeric_limits<float>::max();
+	  else
+	    __v = -numeric_limits<float>::max();
+	  __err = ios_base::failbit;
+	}
+
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+    }
+
+  template<>
+    void
+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
+		   const __c_locale&) throw()
+    {
+      // Assumes __s formatted for "C" locale.
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __len = strlen(__old) + 1;
+      char* __sav = new char[__len];
+      memcpy(__sav, __old, __len);
+      setlocale(LC_ALL, "C");
+      char* __sanity;
+
+#if !__DBL_HAS_INFINITY__
+      errno = 0;
+#endif
+
+      __v = strtod(__s, &__sanity);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+	{
+	  __v = 0.0;
+	  __err = ios_base::failbit;
+	}
+      else if (
+#if __DBL_HAS_INFINITY__
+	       __v == numeric_limits<double>::infinity()
+	       || __v == -numeric_limits<double>::infinity())
+#else
+	       (__v > 1.0 || __v < -1.0) && errno == ERANGE)
+#endif
+	{
+	  if (__v > 0.0)
+	    __v = numeric_limits<double>::max();
+	  else
+	    __v = -numeric_limits<double>::max();
+	  __err = ios_base::failbit;
+	}
+
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+    }
+
+  template<>
+    void
+    __convert_to_v(const char* __s, long double& __v,
+		   ios_base::iostate& __err, const __c_locale&) throw()
+    {
+      // Assumes __s formatted for "C" locale.
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __len = strlen(__old) + 1;
+      char* __sav = new char[__len];
+      memcpy(__sav, __old, __len);
+      setlocale(LC_ALL, "C");
+
+#if !__LDBL_HAS_INFINITY__
+      errno = 0;
+#endif
+
+#if defined(_GLIBCXX_HAVE_STRTOLD) && !defined(_GLIBCXX_HAVE_BROKEN_STRTOLD)
+      char* __sanity;
+      __v = strtold(__s, &__sanity);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+#else
+      typedef char_traits<char>::int_type int_type;
+      int __p = sscanf(__s, "%Lf", &__v);
+
+      if (!__p || static_cast<int_type>(__p) == char_traits<char>::eof())
+#endif
+	{
+	  __v = 0.0l;
+	  __err = ios_base::failbit;
+	}
+       else if (
+#if __LDBL_HAS_INFINITY__
+		__v == numeric_limits<long double>::infinity()
+		|| __v == -numeric_limits<long double>::infinity())
+#else
+		(__v > 1.0l || __v < -1.0l) && errno == ERANGE)
+#endif
+	{
+	  if (__v > 0.0l)
+	    __v = numeric_limits<long double>::max();
+	  else
+	    __v = -numeric_limits<long double>::max();
+	  __err = ios_base::failbit;
+	}
+
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+    }
+
+  void
+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
+				    __c_locale)
+  {
+    // Currently, the generic model only supports the "C" locale.
+    // See http://gcc.gnu.org/ml/libstdc++/2003-02/msg00345.html
+    __cloc = 0;
+    if (strcmp(__s, "C"))
+      __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
+			    "name not valid"));
+  }
+
+  void
+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
+  { __cloc = 0; }
+
+  __c_locale
+  locale::facet::_S_clone_c_locale(__c_locale&) throw()
+  { return __c_locale(); }
+
+  __c_locale
+  locale::facet::_S_lc_ctype_c_locale(__c_locale, const char*)
+  { return __c_locale(); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
+    {
+      "LC_CTYPE",
+      "LC_NUMERIC",
+      "LC_TIME",
+      "LC_COLLATE",
+      "LC_MONETARY",
+      "LC_MESSAGES"
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.h
new file mode 100644
index 000000000..2c7600047
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/c_locale.h
@@ -0,0 +1,93 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++locale.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#ifndef _GLIBCXX_CXX_LOCALE_H
+#define _GLIBCXX_CXX_LOCALE_H 1
+
+#pragma GCC system_header
+
+#include <clocale>
+
+#define _GLIBCXX_NUM_CATEGORIES 0
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef int*			__c_locale;
+
+  // Convert numeric value of type double and long double to string and
+  // return length of string.  If vsnprintf is available use it, otherwise
+  // fall back to the unsafe vsprintf which, in general, can be dangerous
+  // and should be avoided.
+  inline int
+  __convert_from_v(const __c_locale&, char* __out, 
+		   const int __size __attribute__((__unused__)),
+		   const char* __fmt, ...)
+  {
+    char* __old = std::setlocale(LC_NUMERIC, 0);
+    char* __sav = 0;
+    if (__builtin_strcmp(__old, "C"))
+      {
+	const size_t __len = __builtin_strlen(__old) + 1;
+	__sav = new char[__len];
+	__builtin_memcpy(__sav, __old, __len);
+	std::setlocale(LC_NUMERIC, "C");
+      }
+
+    __builtin_va_list __args;
+    __builtin_va_start(__args, __fmt);
+
+#ifdef _GLIBCXX_USE_C99
+    const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
+#else
+    const int __ret = __builtin_vsprintf(__out, __fmt, __args);
+#endif
+
+    __builtin_va_end(__args);
+
+    if (__sav)
+      {
+	std::setlocale(LC_NUMERIC, __sav);
+	delete [] __sav;
+      }
+    return __ret;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/codecvt_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/codecvt_members.cc
new file mode 100644
index 000000000..f0de79e79
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/codecvt_members.cc
@@ -0,0 +1,220 @@
+// std::codecvt implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstdlib>  // For MB_CUR_MAX
+#include <climits>  // For MB_LEN_MAX
+#include <cstring>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specializations.
+#ifdef _GLIBCXX_USE_WCHAR_T
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_out(state_type& __state, const intern_type* __from, 
+	 const intern_type* __from_end, const intern_type*& __from_next,
+	 extern_type* __to, extern_type* __to_end,
+	 extern_type*& __to_next) const
+  {
+    result __ret = ok;
+    // The conversion must be done using a temporary destination buffer
+    // since it is not possible to pass the size of the buffer to wcrtomb
+    state_type __tmp_state(__state);
+
+    // The conversion must be done by calling wcrtomb in a loop rather
+    // than using wcsrtombs because wcsrtombs assumes that the input is
+    // zero-terminated.
+
+    // Either we can upper bound the total number of external characters to
+    // something smaller than __to_end - __to or the conversion must be done
+    // using a temporary destination buffer since it is not possible to
+    // pass the size of the buffer to wcrtomb
+    if (MB_CUR_MAX * (__from_end - __from) - (__to_end - __to) <= 0)
+      while (__from < __from_end)
+	{
+	  const size_t __conv = wcrtomb(__to, *__from, &__tmp_state);
+	  if (__conv == static_cast<size_t>(-1))
+	    {
+	      __ret = error;
+	      break;
+	    }
+	  __state = __tmp_state;
+	  __to += __conv;
+	  __from++;
+	}
+    else
+      {
+	extern_type __buf[MB_LEN_MAX];
+	while (__from < __from_end && __to < __to_end)
+	  {
+	    const size_t __conv = wcrtomb(__buf, *__from, &__tmp_state);
+	    if (__conv == static_cast<size_t>(-1))
+	      {
+		__ret = error;
+		break;
+	      }
+	    else if (__conv > static_cast<size_t>(__to_end - __to))
+	      {
+		__ret = partial;
+		break;
+	      }
+	    
+	    memcpy(__to, __buf, __conv);
+	    __state = __tmp_state;
+	    __to += __conv;
+	    __from++;
+	  }
+      }
+
+    if (__ret == ok && __from < __from_end)
+      __ret = partial;
+
+    __from_next = __from;
+    __to_next = __to;
+    return __ret; 
+  }
+  
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_in(state_type& __state, const extern_type* __from, 
+	const extern_type* __from_end, const extern_type*& __from_next,
+	intern_type* __to, intern_type* __to_end,
+	intern_type*& __to_next) const
+  {
+    result __ret = ok;
+    // This temporary state object is neccessary so __state won't be modified
+    // if [__from, __from_end) is a partial multibyte character.
+    state_type __tmp_state(__state);
+
+    // Conversion must be done by calling mbrtowc in a loop rather than
+    // by calling mbsrtowcs because mbsrtowcs assumes that the input
+    // sequence is zero-terminated.
+    while (__from < __from_end && __to < __to_end)
+      {
+	size_t __conv = mbrtowc(__to, __from, __from_end - __from,
+				&__tmp_state);
+	if (__conv == static_cast<size_t>(-1))
+	  {
+	    __ret = error;
+	    break;
+	  }
+	else if (__conv == static_cast<size_t>(-2))
+	  {
+	    // It is unclear what to return in this case (see DR 382).
+	    __ret = partial;
+	    break;
+	  }
+	else if (__conv == 0)
+	  {
+	    // XXX Probably wrong for stateful encodings
+	    __conv = 1;
+	    *__to = L'\0';
+	  }
+
+	__state = __tmp_state;
+	__to++;
+	__from += __conv;
+      }
+
+    // It is not clear that __from < __from_end implies __ret != ok
+    // (see DR 382).
+    if (__ret == ok && __from < __from_end)
+      __ret = partial;
+
+    __from_next = __from;
+    __to_next = __to;
+    return __ret; 
+  }
+
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_encoding() const throw()
+  {
+    // XXX This implementation assumes that the encoding is
+    // stateless and is either single-byte or variable-width.
+    int __ret = 0;
+    if (MB_CUR_MAX == 1)
+      __ret = 1;
+    return __ret;
+  }  
+
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_max_length() const throw()
+  {
+    // XXX Probably wrong for stateful encodings.
+    int __ret = MB_CUR_MAX;
+    return __ret;
+  }
+  
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_length(state_type& __state, const extern_type* __from,
+	    const extern_type* __end, size_t __max) const
+  {
+    int __ret = 0;
+    state_type __tmp_state(__state);
+
+    while (__from < __end && __max)
+      {
+	size_t __conv = mbrtowc(0, __from, __end - __from, &__tmp_state);
+	if (__conv == static_cast<size_t>(-1))
+	  {
+	    // Invalid source character
+	    break;
+	  }
+	else if (__conv == static_cast<size_t>(-2))
+	  {
+	    // Remainder of input does not form a complete destination
+	    // character.
+	    break;
+	  }
+	else if (__conv == 0)
+	  {
+	    // XXX Probably wrong for stateful encodings
+	    __conv = 1;
+	  }
+
+	__state = __tmp_state;
+	__from += __conv;
+	__ret += __conv;
+	__max--;
+      }
+
+    return __ret; 
+  }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/collate_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/collate_members.cc
new file mode 100644
index 000000000..da12ccd13
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/collate_members.cc
@@ -0,0 +1,74 @@
+// std::collate implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstring>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // These are basically extensions to char_traits, and perhaps should
+  // be put there instead of here.
+  template<>
+    int 
+    collate<char>::_M_compare(const char* __one, 
+			      const char* __two) const throw()
+    { 
+      int __cmp = strcoll(__one, __two);
+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+    }
+  
+  template<>
+    size_t
+    collate<char>::_M_transform(char* __to, const char* __from, 
+				size_t __n) const throw()
+    { return strxfrm(__to, __from, __n); }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    int 
+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
+				 const wchar_t* __two) const throw()
+    {
+      int __cmp = wcscoll(__one, __two);
+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+    }
+  
+  template<>
+    size_t
+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
+				   size_t __n) const throw()
+    { return wcsxfrm(__to, __from, __n); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/ctype_members.cc
new file mode 100644
index 000000000..e6ced3973
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/ctype_members.cc
@@ -0,0 +1,272 @@
+// std::ctype implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // NB: The other ctype<char> specializations are in src/locale.cc and
+  // various /config/os/* files.
+  ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
+  : ctype<char>(0, false, __refs) 
+  { 	
+    if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
+      {
+	this->_S_destroy_c_locale(this->_M_c_locale_ctype);
+	this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
+      }
+  }
+
+  ctype_byname<char>::~ctype_byname()
+  { }
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  ctype<wchar_t>::__wmask_type
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
+  {
+    __wmask_type __ret;
+    switch (__m)
+      {
+      case space:
+	__ret = wctype("space");
+	break;
+      case print:
+	__ret = wctype("print");
+	break;
+      case cntrl:
+	__ret = wctype("cntrl");
+	break;
+      case upper:
+	__ret = wctype("upper");
+	break;
+      case lower:
+	__ret = wctype("lower");
+	break;
+      case alpha:
+	__ret = wctype("alpha");
+	break;
+      case digit:
+	__ret = wctype("digit");
+	break;
+      case punct:
+	__ret = wctype("punct");
+	break;
+      case xdigit:
+	__ret = wctype("xdigit");
+	break;
+      case alnum:
+	__ret = wctype("alnum");
+	break;
+      case graph:
+	__ret = wctype("graph");
+	break;
+      default:
+	__ret = __wmask_type();
+      }
+    return __ret;
+  };
+  
+  wchar_t
+  ctype<wchar_t>::do_toupper(wchar_t __c) const
+  { return towupper(__c); }
+
+  const wchar_t*
+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = towupper(*__lo);
+        ++__lo;
+      }
+    return __hi;
+  }
+  
+  wchar_t
+  ctype<wchar_t>::do_tolower(wchar_t __c) const
+  { return towlower(__c); }
+  
+  const wchar_t*
+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = towlower(*__lo);
+        ++__lo;
+      }
+    return __hi;
+  }
+
+  bool
+  ctype<wchar_t>::
+  do_is(mask __m, char_type __c) const
+  { 
+    bool __ret = false;
+    // Generically, 15 (instead of 10) since we don't know the numerical
+    // encoding of the various categories in /usr/include/ctype.h.
+    const size_t __bitmasksize = 15; 
+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+      if (__m & _M_bit[__bitcur]
+	  && iswctype(__c, _M_wmask[__bitcur]))
+	{
+	  __ret = true;
+	  break;
+	}
+    return __ret;    
+  }
+  
+  const wchar_t* 
+  ctype<wchar_t>::
+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
+  {
+    for (;__lo < __hi; ++__vec, ++__lo)
+      {
+	// Generically, 15 (instead of 10) since we don't know the numerical
+	// encoding of the various categories in /usr/include/ctype.h.
+	const size_t __bitmasksize = 15; 
+	mask __m = 0;
+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+	  if (iswctype(*__lo, _M_wmask[__bitcur]))
+	    __m |= _M_bit[__bitcur];
+	*__vec = __m;
+      }
+    return __hi;
+  }
+  
+  const wchar_t* 
+  ctype<wchar_t>::
+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi && !this->do_is(__m, *__lo))
+      ++__lo;
+    return __lo;
+  }
+
+  const wchar_t*
+  ctype<wchar_t>::
+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+  {
+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
+      ++__lo;
+    return __lo;
+  }
+
+  wchar_t
+  ctype<wchar_t>::
+  do_widen(char __c) const
+  { return _M_widen[static_cast<unsigned char>(__c)]; }
+  
+  const char* 
+  ctype<wchar_t>::
+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
+  {
+    while (__lo < __hi)
+      {
+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
+	++__lo;
+	++__dest;
+      }
+    return __hi;
+  }
+
+  char
+  ctype<wchar_t>::
+  do_narrow(wchar_t __wc, char __dfault) const
+  { 
+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
+      return _M_narrow[__wc];
+    const int __c = wctob(__wc);
+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
+  }
+
+  const wchar_t*
+  ctype<wchar_t>::
+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
+	    char* __dest) const
+  {
+    if (_M_narrow_ok)
+      while (__lo < __hi)
+	{
+	  if (*__lo >= 0 && *__lo < 128)
+	    *__dest = _M_narrow[*__lo];
+	  else
+	    {
+	      const int __c = wctob(*__lo);
+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	    }
+	  ++__lo;
+	  ++__dest;
+	}
+    else
+      while (__lo < __hi)
+	{
+	  const int __c = wctob(*__lo);
+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	  ++__lo;
+	  ++__dest;
+	}
+    return __hi;
+  }
+
+  void
+  ctype<wchar_t>::_M_initialize_ctype() throw()
+  {
+    wint_t __i;
+    for (__i = 0; __i < 128; ++__i)
+      {
+	const int __c = wctob(__i);
+	if (__c == EOF)
+	  break;
+	else
+	  _M_narrow[__i] = static_cast<char>(__c);
+      }
+    if (__i == 128)
+      _M_narrow_ok = true;
+    else
+      _M_narrow_ok = false;
+    for (size_t __i = 0;
+	 __i < sizeof(_M_widen) / sizeof(wint_t); ++__i)
+      _M_widen[__i] = btowc(__i);
+
+    for (size_t __i = 0; __i <= 15; ++__i)
+      { 
+	_M_bit[__i] = static_cast<mask>(1 << __i);
+	_M_wmask[__i] = _M_convert_to_wmask(_M_bit[__i]);
+      }  
+  }
+#endif //  _GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.cc
new file mode 100644
index 000000000..b8610ddb3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.cc
@@ -0,0 +1,51 @@
+// std::messages implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specializations
+  template<>
+    string
+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
+    { return __dfault; }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    wstring
+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
+    { return __dfault; }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.h
new file mode 100644
index 000000000..f66d4be3b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/messages_members.h
@@ -0,0 +1,93 @@
+// std::messages implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/messages_members.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Non-virtual member functions.
+  template<typename _CharT>
+     messages<_CharT>::messages(size_t __refs)
+     : facet(__refs)
+     { _M_c_locale_messages = _S_get_c_locale(); }
+
+  template<typename _CharT>
+     messages<_CharT>::messages(__c_locale, const char*, size_t __refs) 
+     : facet(__refs)
+     { _M_c_locale_messages = _S_get_c_locale(); }
+
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
+			   const char*) const
+    { return this->do_open(__s, __loc); }
+
+  // Virtual member functions.
+  template<typename _CharT>
+    messages<_CharT>::~messages()
+    { _S_destroy_c_locale(_M_c_locale_messages); }
+
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::do_open(const basic_string<char>&, const locale&) const
+    { return 0; }
+
+  template<typename _CharT>
+    typename messages<_CharT>::string_type  
+    messages<_CharT>::do_get(catalog, int, int, 
+			     const string_type& __dfault) const
+    { return __dfault; }
+
+  template<typename _CharT>
+    void    
+    messages<_CharT>::do_close(catalog) const 
+    { }
+
+   // messages_byname
+   template<typename _CharT>
+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
+     : messages<_CharT>(__refs) 
+     { 
+	if (__builtin_strcmp(__s, "C") != 0
+	    && __builtin_strcmp(__s, "POSIX") != 0)
+	  {
+	    this->_S_destroy_c_locale(this->_M_c_locale_messages);
+	    this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
+	  }
+     }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/monetary_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/monetary_members.cc
new file mode 100644
index 000000000..91f014fee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/monetary_members.cc
@@ -0,0 +1,171 @@
+// std::moneypunct implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Construct and return valid pattern consisting of some combination of:
+  // space none symbol sign value
+  money_base::pattern
+  money_base::_S_construct_pattern(char, char, char) throw()
+  { return _S_default_pattern; }
+
+  template<>
+    void
+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*)
+    {
+      // "C" locale.
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<char, true>;
+
+      _M_data->_M_decimal_point = '.';
+      _M_data->_M_thousands_sep = ',';
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_curr_symbol = "";
+      _M_data->_M_curr_symbol_size = 0;
+      _M_data->_M_positive_sign = "";
+      _M_data->_M_positive_sign_size = 0;
+      _M_data->_M_negative_sign = "";
+      _M_data->_M_negative_sign_size = 0;
+      _M_data->_M_frac_digits = 0;
+      _M_data->_M_pos_format = money_base::_S_default_pattern;
+      _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	_M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
+    }
+
+  template<>
+    void
+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*)
+    {
+      // "C" locale.
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<char, false>;
+
+      _M_data->_M_decimal_point = '.';
+      _M_data->_M_thousands_sep = ',';
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_curr_symbol = "";
+      _M_data->_M_curr_symbol_size = 0;
+      _M_data->_M_positive_sign = "";
+      _M_data->_M_positive_sign_size = 0;
+      _M_data->_M_negative_sign = "";
+      _M_data->_M_negative_sign_size = 0;
+      _M_data->_M_frac_digits = 0;
+      _M_data->_M_pos_format = money_base::_S_default_pattern;
+      _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	_M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
+    }
+
+  template<>
+    moneypunct<char, true>::~moneypunct()
+    { delete _M_data; }
+
+  template<>
+    moneypunct<char, false>::~moneypunct()
+    { delete _M_data; }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    void
+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
+							const char*)
+    {
+      // "C" locale
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<wchar_t, true>;
+
+      _M_data->_M_decimal_point = L'.';
+      _M_data->_M_thousands_sep = L',';
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_curr_symbol = L"";
+      _M_data->_M_curr_symbol_size = 0;
+      _M_data->_M_positive_sign = L"";
+      _M_data->_M_positive_sign_size = 0;
+      _M_data->_M_negative_sign = L"";
+      _M_data->_M_negative_sign_size = 0;
+      _M_data->_M_frac_digits = 0;
+      _M_data->_M_pos_format = money_base::_S_default_pattern;
+      _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	_M_data->_M_atoms[__i] =
+	  static_cast<wchar_t>(money_base::_S_atoms[__i]);
+    }
+
+  template<>
+    void
+    moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
+							 const char*)
+    {
+      // "C" locale
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<wchar_t, false>;
+
+      _M_data->_M_decimal_point = L'.';
+      _M_data->_M_thousands_sep = L',';
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_curr_symbol = L"";
+      _M_data->_M_curr_symbol_size = 0;
+      _M_data->_M_positive_sign = L"";
+      _M_data->_M_positive_sign_size = 0;
+      _M_data->_M_negative_sign = L"";
+      _M_data->_M_negative_sign_size = 0;
+      _M_data->_M_frac_digits = 0;
+      _M_data->_M_pos_format = money_base::_S_default_pattern;
+      _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	_M_data->_M_atoms[__i] =
+	  static_cast<wchar_t>(money_base::_S_atoms[__i]);
+    }
+
+  template<>
+    moneypunct<wchar_t, true>::~moneypunct()
+    { delete _M_data; }
+
+  template<>
+    moneypunct<wchar_t, false>::~moneypunct()
+    { delete _M_data; }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/numeric_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/numeric_members.cc
new file mode 100644
index 000000000..d7d6647d5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/numeric_members.cc
@@ -0,0 +1,106 @@
+// std::numpunct implementation details, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<> 
+    void
+    numpunct<char>::_M_initialize_numpunct(__c_locale)
+    {
+      // "C" locale
+      if (!_M_data)
+	_M_data = new __numpunct_cache<char>;
+
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_use_grouping = false;
+
+      _M_data->_M_decimal_point = '.';
+      _M_data->_M_thousands_sep = ',';
+      
+      for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
+	_M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
+      
+      for (size_t __i = 0; __i < __num_base::_S_iend; ++__i)
+	_M_data->_M_atoms_in[__i] = __num_base::_S_atoms_in[__i];
+
+      _M_data->_M_truename = "true";
+      _M_data->_M_truename_size = 4;
+      _M_data->_M_falsename = "false";
+      _M_data->_M_falsename_size = 5;
+    }
+
+  template<> 
+    numpunct<char>::~numpunct()
+    { delete _M_data; }
+      
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    void
+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale)
+    {
+      // "C" locale
+      if (!_M_data)
+	_M_data = new __numpunct_cache<wchar_t>;
+
+      _M_data->_M_grouping = "";
+      _M_data->_M_grouping_size = 0;
+      _M_data->_M_use_grouping = false;
+      
+      _M_data->_M_decimal_point = L'.';
+      _M_data->_M_thousands_sep = L',';
+      
+      // Use ctype::widen code without the facet...
+      for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
+	_M_data->_M_atoms_out[__i] =
+	  static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
+      
+      for (size_t __i = 0; __i < __num_base::_S_iend; ++__i)
+	_M_data->_M_atoms_in[__i] =
+	  static_cast<wchar_t>(__num_base::_S_atoms_in[__i]);
+
+      _M_data->_M_truename = L"true";
+      _M_data->_M_truename_size = 4;
+      _M_data->_M_falsename = L"false";
+      _M_data->_M_falsename_size = 5;
+    }
+
+  template<> 
+    numpunct<wchar_t>::~numpunct()
+    { delete _M_data; }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.cc
new file mode 100644
index 000000000..30310752b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.cc
@@ -0,0 +1,212 @@
+// std::time_get, std::time_put implementation, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstdlib>
+#include <cstring>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    void
+    __timepunct<char>::
+    _M_put(char* __s, size_t __maxlen, const char* __format,
+	   const tm* __tm) const throw()
+    {
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __llen = strlen(__old) + 1;
+      char* __sav = new char[__llen];
+      memcpy(__sav, __old, __llen);
+      setlocale(LC_ALL, _M_name_timepunct);
+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+      // Make sure __s is null terminated.
+      if (__len == 0)
+	__s[0] = '\0';
+    }
+
+  template<>
+    void
+    __timepunct<char>::_M_initialize_timepunct(__c_locale)
+    {
+      // "C" locale.
+      if (!_M_data)
+	_M_data = new __timepunct_cache<char>;
+
+      _M_data->_M_date_format = "%m/%d/%y";
+      _M_data->_M_date_era_format = "%m/%d/%y";
+      _M_data->_M_time_format = "%H:%M:%S";
+      _M_data->_M_time_era_format = "%H:%M:%S";
+      _M_data->_M_date_time_format = "";
+      _M_data->_M_date_time_era_format = "";
+      _M_data->_M_am = "AM";
+      _M_data->_M_pm = "PM";
+      _M_data->_M_am_pm_format = "";
+
+      // Day names, starting with "C"'s Sunday.
+      _M_data->_M_day1 = "Sunday";
+      _M_data->_M_day2 = "Monday";
+      _M_data->_M_day3 = "Tuesday";
+      _M_data->_M_day4 = "Wednesday";
+      _M_data->_M_day5 = "Thursday";
+      _M_data->_M_day6 = "Friday";
+      _M_data->_M_day7 = "Saturday";
+
+      // Abbreviated day names, starting with "C"'s Sun.
+      _M_data->_M_aday1 = "Sun";
+      _M_data->_M_aday2 = "Mon";
+      _M_data->_M_aday3 = "Tue";
+      _M_data->_M_aday4 = "Wed";
+      _M_data->_M_aday5 = "Thu";
+      _M_data->_M_aday6 = "Fri";
+      _M_data->_M_aday7 = "Sat";
+
+      // Month names, starting with "C"'s January.
+      _M_data->_M_month01 = "January";
+      _M_data->_M_month02 = "February";
+      _M_data->_M_month03 = "March";
+      _M_data->_M_month04 = "April";
+      _M_data->_M_month05 = "May";
+      _M_data->_M_month06 = "June";
+      _M_data->_M_month07 = "July";
+      _M_data->_M_month08 = "August";
+      _M_data->_M_month09 = "September";
+      _M_data->_M_month10 = "October";
+      _M_data->_M_month11 = "November";
+      _M_data->_M_month12 = "December";
+
+      // Abbreviated month names, starting with "C"'s Jan.
+      _M_data->_M_amonth01 = "Jan";
+      _M_data->_M_amonth02 = "Feb";
+      _M_data->_M_amonth03 = "Mar";
+      _M_data->_M_amonth04 = "Apr";
+      _M_data->_M_amonth05 = "May";
+      _M_data->_M_amonth06 = "Jun";
+      _M_data->_M_amonth07 = "Jul";
+      _M_data->_M_amonth08 = "Aug";
+      _M_data->_M_amonth09 = "Sep";
+      _M_data->_M_amonth10 = "Oct";
+      _M_data->_M_amonth11 = "Nov";
+      _M_data->_M_amonth12 = "Dec";
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    void
+    __timepunct<wchar_t>::
+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
+	   const tm* __tm) const throw()
+    {
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __llen = strlen(__old) + 1;
+      char* __sav = new char[__llen];
+      memcpy(__sav, __old, __llen);
+      setlocale(LC_ALL, _M_name_timepunct);
+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+      // Make sure __s is null terminated.
+      if (__len == 0)
+	__s[0] = L'\0';
+    }
+
+  template<>
+    void
+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale)
+    {
+      // "C" locale.
+      if (!_M_data)
+	_M_data = new __timepunct_cache<wchar_t>;
+
+      _M_data->_M_date_format = L"%m/%d/%y";
+      _M_data->_M_date_era_format = L"%m/%d/%y";
+      _M_data->_M_time_format = L"%H:%M:%S";
+      _M_data->_M_time_era_format = L"%H:%M:%S";
+      _M_data->_M_date_time_format = L"";
+      _M_data->_M_date_time_era_format = L"";
+      _M_data->_M_am = L"AM";
+      _M_data->_M_pm = L"PM";
+      _M_data->_M_am_pm_format = L"";
+
+      // Day names, starting with "C"'s Sunday.
+      _M_data->_M_day1 = L"Sunday";
+      _M_data->_M_day2 = L"Monday";
+      _M_data->_M_day3 = L"Tuesday";
+      _M_data->_M_day4 = L"Wednesday";
+      _M_data->_M_day5 = L"Thursday";
+      _M_data->_M_day6 = L"Friday";
+      _M_data->_M_day7 = L"Saturday";
+
+      // Abbreviated day names, starting with "C"'s Sun.
+      _M_data->_M_aday1 = L"Sun";
+      _M_data->_M_aday2 = L"Mon";
+      _M_data->_M_aday3 = L"Tue";
+      _M_data->_M_aday4 = L"Wed";
+      _M_data->_M_aday5 = L"Thu";
+      _M_data->_M_aday6 = L"Fri";
+      _M_data->_M_aday7 = L"Sat";
+
+      // Month names, starting with "C"'s January.
+      _M_data->_M_month01 = L"January";
+      _M_data->_M_month02 = L"February";
+      _M_data->_M_month03 = L"March";
+      _M_data->_M_month04 = L"April";
+      _M_data->_M_month05 = L"May";
+      _M_data->_M_month06 = L"June";
+      _M_data->_M_month07 = L"July";
+      _M_data->_M_month08 = L"August";
+      _M_data->_M_month09 = L"September";
+      _M_data->_M_month10 = L"October";
+      _M_data->_M_month11 = L"November";
+      _M_data->_M_month12 = L"December";
+
+      // Abbreviated month names, starting with "C"'s Jan.
+      _M_data->_M_amonth01 = L"Jan";
+      _M_data->_M_amonth02 = L"Feb";
+      _M_data->_M_amonth03 = L"Mar";
+      _M_data->_M_amonth04 = L"Apr";
+      _M_data->_M_amonth05 = L"May";
+      _M_data->_M_amonth06 = L"Jun";
+      _M_data->_M_amonth07 = L"Jul";
+      _M_data->_M_amonth08 = L"Aug";
+      _M_data->_M_amonth09 = L"Sep";
+      _M_data->_M_amonth10 = L"Oct";
+      _M_data->_M_amonth11 = L"Nov";
+      _M_data->_M_amonth12 = L"Dec";
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.h
new file mode 100644
index 000000000..ff26bef23
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/generic/time_members.h
@@ -0,0 +1,94 @@
+// std::time_get, std::time_put implementation, generic version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/time_members.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(size_t __refs) 
+    : facet(__refs), _M_data(0)
+    { 
+      _M_name_timepunct = _S_get_c_name();
+      _M_initialize_timepunct(); 
+    }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
+    : facet(__refs), _M_data(__cache)
+    { 
+      _M_name_timepunct = _S_get_c_name();
+      _M_initialize_timepunct(); 
+    }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 
+				     size_t __refs) 
+    : facet(__refs), _M_data(0)
+    {
+      if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
+	{
+	  const size_t __len = __builtin_strlen(__s) + 1;
+	  char* __tmp = new char[__len];
+	  __builtin_memcpy(__tmp, __s, __len);
+	  _M_name_timepunct = __tmp;
+	}
+      else
+	_M_name_timepunct = _S_get_c_name();
+
+      __try
+	{ _M_initialize_timepunct(__cloc); }
+      __catch(...)
+	{
+	  if (_M_name_timepunct != _S_get_c_name())
+	    delete [] _M_name_timepunct;
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::~__timepunct()
+    { 
+      if (_M_name_timepunct != _S_get_c_name())
+	delete [] _M_name_timepunct;
+      delete _M_data;
+      _S_destroy_c_locale(_M_c_locale_timepunct); 
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c++locale_internal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c++locale_internal.h
new file mode 100644
index 000000000..8d18f3c77
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c++locale_internal.h
@@ -0,0 +1,64 @@
+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++locale_internal.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+// Written by Jakub Jelinek <jakub@redhat.com>
+
+#include <bits/c++config.h>
+#include <clocale>
+#include <cstdlib>
+#include <cstring>
+#include <cstddef>
+#include <langinfo.h>
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+                                                  
+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
+extern "C" __typeof(strcoll_l) __strcoll_l;
+extern "C" __typeof(strftime_l) __strftime_l;
+extern "C" __typeof(strtod_l) __strtod_l;
+extern "C" __typeof(strtof_l) __strtof_l;
+extern "C" __typeof(strtold_l) __strtold_l;
+extern "C" __typeof(strxfrm_l) __strxfrm_l;
+extern "C" __typeof(newlocale) __newlocale;
+extern "C" __typeof(freelocale) __freelocale;
+extern "C" __typeof(duplocale) __duplocale;
+extern "C" __typeof(uselocale) __uselocale;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+extern "C" __typeof(iswctype_l) __iswctype_l;
+extern "C" __typeof(towlower_l) __towlower_l;
+extern "C" __typeof(towupper_l) __towupper_l;
+extern "C" __typeof(wcscoll_l) __wcscoll_l;
+extern "C" __typeof(wcsftime_l) __wcsftime_l;
+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
+extern "C" __typeof(wctype_l) __wctype_l;
+#endif 
+
+#endif // GLIBC 2.3 and later
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.cc
new file mode 100644
index 000000000..adfeb6219
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.cc
@@ -0,0 +1,214 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <stdexcept>
+#include <limits>
+#include <langinfo.h>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    void
+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
+		   const __c_locale& __cloc) throw()
+    {
+      char* __sanity;
+      __v = __strtof_l(__s, &__sanity, __cloc);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+	{
+	  __v = 0.0f;
+	  __err = ios_base::failbit;
+	}
+      else if (__v == numeric_limits<float>::infinity())
+	{
+	  __v = numeric_limits<float>::max();
+	  __err = ios_base::failbit;
+	}
+      else if (__v == -numeric_limits<float>::infinity())
+	{
+	  __v = -numeric_limits<float>::max();
+	  __err = ios_base::failbit;
+	}
+    }
+
+  template<>
+    void
+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
+		   const __c_locale& __cloc) throw()
+    {
+      char* __sanity;
+      __v = __strtod_l(__s, &__sanity, __cloc);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+	{
+	  __v = 0.0;
+	  __err = ios_base::failbit;
+	}
+      else if (__v == numeric_limits<double>::infinity())
+	{
+	  __v = numeric_limits<double>::max();
+	  __err = ios_base::failbit;
+	}
+      else if (__v == -numeric_limits<double>::infinity())
+	{
+	  __v = -numeric_limits<double>::max();
+	  __err = ios_base::failbit;
+	}
+    }
+
+  template<>
+    void
+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
+		   const __c_locale& __cloc) throw()
+    {
+      char* __sanity;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+      // Prefer strtold_l, as __strtold_l isn't prototyped in more recent
+      // glibc versions.
+      __v = strtold_l(__s, &__sanity, __cloc);
+#else
+      __v = __strtold_l(__s, &__sanity, __cloc);
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 23. Num_get overflow result.
+      if (__sanity == __s || *__sanity != '\0')
+	{
+	  __v = 0.0l;
+	  __err = ios_base::failbit;
+	}
+      else if (__v == numeric_limits<long double>::infinity())
+	{
+	  __v = numeric_limits<long double>::max();
+	  __err = ios_base::failbit;
+	}
+      else if (__v == -numeric_limits<long double>::infinity())
+	{
+	  __v = -numeric_limits<long double>::max();
+	  __err = ios_base::failbit;
+	}
+    }
+
+  void
+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
+				    __c_locale __old)
+  {
+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
+    if (!__cloc)
+      {
+	// This named locale is not supported by the underlying OS.
+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
+				  "name not valid"));
+      }
+  }
+
+  void
+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
+  {
+    if (__cloc && _S_get_c_locale() != __cloc)
+      __freelocale(__cloc); 
+  }
+
+  __c_locale
+  locale::facet::_S_clone_c_locale(__c_locale& __cloc) throw()
+  { return __duplocale(__cloc); }
+
+  __c_locale
+  locale::facet::_S_lc_ctype_c_locale(__c_locale __cloc, const char* __s)
+  {
+    __c_locale __dup = __duplocale(__cloc);
+    if (__dup == __c_locale(0))
+      __throw_runtime_error(__N("locale::facet::_S_lc_ctype_c_locale "
+				"duplocale error"));
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __changed = __newlocale(LC_CTYPE_MASK, __s, __dup);
+#else
+    __c_locale __changed = __newlocale(1 << LC_CTYPE, __s, __dup);
+#endif
+    if (__changed == __c_locale(0))
+      {
+	__freelocale(__dup);
+	__throw_runtime_error(__N("locale::facet::_S_lc_ctype_c_locale "
+				  "newlocale error"));
+      }
+    return __changed;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
+    {
+      "LC_CTYPE", 
+      "LC_NUMERIC",
+      "LC_TIME", 
+      "LC_COLLATE", 
+      "LC_MONETARY",
+      "LC_MESSAGES", 
+      "LC_PAPER", 
+      "LC_NAME", 
+      "LC_ADDRESS",
+      "LC_TELEPHONE", 
+      "LC_MEASUREMENT", 
+      "LC_IDENTIFICATION" 
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.h
new file mode 100644
index 000000000..eb0d6714e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/c_locale.h
@@ -0,0 +1,115 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++locale.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#ifndef _GLIBCXX_CXX_LOCALE_H
+#define _GLIBCXX_CXX_LOCALE_H 1
+
+#pragma GCC system_header
+
+#include <clocale>
+
+#define _GLIBCXX_C_LOCALE_GNU 1
+
+#define _GLIBCXX_NUM_CATEGORIES 6
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  extern "C" __typeof(uselocale) __uselocale;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef __locale_t		__c_locale;
+
+  // Convert numeric value of type double and long double to string and
+  // return length of string.  If vsnprintf is available use it, otherwise
+  // fall back to the unsafe vsprintf which, in general, can be dangerous
+  // and should be avoided.
+  inline int
+  __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
+		   char* __out,
+		   const int __size __attribute__ ((__unused__)),
+		   const char* __fmt, ...)
+  {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __gnu_cxx::__uselocale(__cloc);
+#else
+    char* __old = std::setlocale(LC_NUMERIC, 0);
+    char* __sav = 0;
+    if (__builtin_strcmp(__old, "C"))
+      {
+	const size_t __len = __builtin_strlen(__old) + 1;
+	__sav = new char[__len];
+	__builtin_memcpy(__sav, __old, __len);
+	std::setlocale(LC_NUMERIC, "C");
+      }
+#endif
+
+    __builtin_va_list __args;
+    __builtin_va_start(__args, __fmt);
+
+#ifdef _GLIBCXX_USE_C99
+    const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
+#else
+    const int __ret = __builtin_vsprintf(__out, __fmt, __args);
+#endif
+
+    __builtin_va_end(__args);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __gnu_cxx::__uselocale(__old);
+#else
+    if (__sav)
+      {
+	std::setlocale(LC_NUMERIC, __sav);
+	delete [] __sav;
+      }
+#endif
+    return __ret;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/codecvt_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/codecvt_members.cc
new file mode 100644
index 000000000..a1029f09a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/codecvt_members.cc
@@ -0,0 +1,308 @@
+// std::codecvt implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstdlib>  // For MB_CUR_MAX
+#include <climits>  // For MB_LEN_MAX
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specializations.
+#ifdef _GLIBCXX_USE_WCHAR_T
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_out(state_type& __state, const intern_type* __from, 
+	 const intern_type* __from_end, const intern_type*& __from_next,
+	 extern_type* __to, extern_type* __to_end,
+	 extern_type*& __to_next) const
+  {
+    result __ret = ok;
+    state_type __tmp_state(__state);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
+#endif
+
+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
+    // in case we fall back to wcrtomb and then continue, in a loop.
+    // NB: wcsnrtombs is a GNU extension
+    for (__from_next = __from, __to_next = __to;
+	 __from_next < __from_end && __to_next < __to_end
+	 && __ret == ok;)
+      {
+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
+						      __from_end - __from_next);
+	if (!__from_chunk_end)
+	  __from_chunk_end = __from_end;
+
+	__from = __from_next;
+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
+					 __from_chunk_end - __from_next,
+					 __to_end - __to_next, &__state);
+	if (__conv == static_cast<size_t>(-1))
+	  {
+	    // In case of error, in order to stop at the exact place we
+	    // have to start again from the beginning with a series of
+	    // wcrtomb.
+	    for (; __from < __from_next; ++__from)
+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
+	    __state = __tmp_state;
+	    __ret = error;
+	  }
+	else if (__from_next && __from_next < __from_chunk_end)
+	  {
+	    __to_next += __conv;
+	    __ret = partial;
+	  }
+	else
+	  {
+	    __from_next = __from_chunk_end;
+	    __to_next += __conv;
+	  }
+
+	if (__from_next < __from_end && __ret == ok)
+	  {
+	    extern_type __buf[MB_LEN_MAX];
+	    __tmp_state = __state;
+	    const size_t __conv2 = wcrtomb(__buf, *__from_next, &__tmp_state);
+	    if (__conv2 > static_cast<size_t>(__to_end - __to_next))
+	      __ret = partial;
+	    else
+	      {
+		memcpy(__to_next, __buf, __conv2);
+		__state = __tmp_state;
+		__to_next += __conv2;
+		++__from_next;
+	      }
+	  }
+      }
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+
+    return __ret; 
+  }
+  
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_in(state_type& __state, const extern_type* __from, 
+	const extern_type* __from_end, const extern_type*& __from_next,
+	intern_type* __to, intern_type* __to_end,
+	intern_type*& __to_next) const
+  {
+    result __ret = ok;
+    state_type __tmp_state(__state);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
+#endif
+
+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
+    // in case we store a L'\0' and then continue, in a loop.
+    // NB: mbsnrtowcs is a GNU extension
+    for (__from_next = __from, __to_next = __to;
+	 __from_next < __from_end && __to_next < __to_end
+	 && __ret == ok;)
+      {
+	const extern_type* __from_chunk_end;
+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
+								  __from_end
+								  - __from_next));
+	if (!__from_chunk_end)
+	  __from_chunk_end = __from_end;
+
+	__from = __from_next;
+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
+				   __from_chunk_end - __from_next,
+				   __to_end - __to_next, &__state);
+	if (__conv == static_cast<size_t>(-1))
+	  {
+	    // In case of error, in order to stop at the exact place we
+	    // have to start again from the beginning with a series of
+	    // mbrtowc.
+	    for (;; ++__to_next, __from += __conv)
+	      {
+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
+				 &__tmp_state);
+		if (__conv == static_cast<size_t>(-1)
+		    || __conv == static_cast<size_t>(-2))
+		  break;
+	      }
+	    __from_next = __from;
+	    __state = __tmp_state;	    
+	    __ret = error;
+	  }
+	else if (__from_next && __from_next < __from_chunk_end)
+	  {
+	    // It is unclear what to return in this case (see DR 382). 
+	    __to_next += __conv;
+	    __ret = partial;
+	  }
+	else
+	  {
+	    __from_next = __from_chunk_end;
+	    __to_next += __conv;
+	  }
+
+	if (__from_next < __from_end && __ret == ok)
+	  {
+	    if (__to_next < __to_end)
+	      {
+		// XXX Probably wrong for stateful encodings
+		__tmp_state = __state;		
+		++__from_next;
+		*__to_next++ = L'\0';
+	      }
+	    else
+	      __ret = partial;
+	  }
+      }
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+
+    return __ret; 
+  }
+
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_encoding() const throw()
+  {
+    // XXX This implementation assumes that the encoding is
+    // stateless and is either single-byte or variable-width.
+    int __ret = 0;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
+#endif
+    if (MB_CUR_MAX == 1)
+      __ret = 1;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+    return __ret;
+  }  
+
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_max_length() const throw()
+  {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
+#endif
+    // XXX Probably wrong for stateful encodings.
+    int __ret = MB_CUR_MAX;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+    return __ret;
+  }
+  
+  int 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_length(state_type& __state, const extern_type* __from,
+	    const extern_type* __end, size_t __max) const
+  {
+    int __ret = 0;
+    state_type __tmp_state(__state);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
+#endif
+
+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
+    // in case we advance past it and then continue, in a loop.
+    // NB: mbsnrtowcs is a GNU extension
+  
+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
+    // its fourth parameter (it wouldn't with NULL as first parameter).
+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 
+							   * __max));
+    while (__from < __end && __max)
+      {
+	const extern_type* __from_chunk_end;
+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
+								  __end
+								  - __from));
+	if (!__from_chunk_end)
+	  __from_chunk_end = __end;
+
+	const extern_type* __tmp_from = __from;
+	size_t __conv = mbsnrtowcs(__to, &__from,
+				   __from_chunk_end - __from,
+				   __max, &__state);
+	if (__conv == static_cast<size_t>(-1))
+	  {
+	    // In case of error, in order to stop at the exact place we
+	    // have to start again from the beginning with a series of
+	    // mbrtowc.
+	    for (__from = __tmp_from;; __from += __conv)
+	      {
+		__conv = mbrtowc(0, __from, __end - __from,
+				 &__tmp_state);
+		if (__conv == static_cast<size_t>(-1)
+		    || __conv == static_cast<size_t>(-2))
+		  break;
+	      }
+	    __state = __tmp_state;
+	    __ret += __from - __tmp_from;
+	    break;
+	  }
+	if (!__from)
+	  __from = __from_chunk_end;
+	
+	__ret += __from - __tmp_from;
+	__max -= __conv;
+
+	if (__from < __end && __max)
+	  {
+	    // XXX Probably wrong for stateful encodings
+	    __tmp_state = __state;
+	    ++__from;
+	    ++__ret;
+	    --__max;
+	  }
+      }
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+
+    return __ret; 
+  }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/collate_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/collate_members.cc
new file mode 100644
index 000000000..00056ad5a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/collate_members.cc
@@ -0,0 +1,73 @@
+// std::collate implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // These are basically extensions to char_traits, and perhaps should
+  // be put there instead of here.
+  template<>
+    int 
+    collate<char>::_M_compare(const char* __one, 
+			      const char* __two) const throw()
+    { 
+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+    }
+  
+  template<>
+    size_t
+    collate<char>::_M_transform(char* __to, const char* __from, 
+				size_t __n) const throw()
+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    int 
+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
+				 const wchar_t* __two) const throw()
+    {
+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+    }
+  
+  template<>
+    size_t
+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
+				   size_t __n) const throw()
+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/ctype_members.cc
new file mode 100644
index 000000000..8a478e97a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/ctype_members.cc
@@ -0,0 +1,306 @@
+// std::ctype implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <cstdio>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // NB: The other ctype<char> specializations are in src/locale.cc and
+  // various /config/os/* files.
+  ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
+  : ctype<char>(0, false, __refs) 
+  { 		
+    if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
+      {
+	this->_S_destroy_c_locale(this->_M_c_locale_ctype);
+	this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
+	this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
+	this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
+	this->_M_table = this->_M_c_locale_ctype->__ctype_b;
+      }
+  }
+
+  ctype_byname<char>::~ctype_byname()
+  { }
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  ctype<wchar_t>::__wmask_type
+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const throw()
+  {
+    __wmask_type __ret;
+    switch (__m)
+      {
+      case space:
+	__ret = __wctype_l("space", _M_c_locale_ctype);
+	break;
+      case print:
+	__ret = __wctype_l("print", _M_c_locale_ctype);
+	break;
+      case cntrl:
+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
+	break;
+      case upper:
+	__ret = __wctype_l("upper", _M_c_locale_ctype);
+	break;
+      case lower:
+	__ret = __wctype_l("lower", _M_c_locale_ctype);
+	break;
+      case alpha:
+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
+	break;
+      case digit:
+	__ret = __wctype_l("digit", _M_c_locale_ctype);
+	break;
+      case punct:
+	__ret = __wctype_l("punct", _M_c_locale_ctype);
+	break;
+      case xdigit:
+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
+	break;
+      case alnum:
+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
+	break;
+      case graph:
+	__ret = __wctype_l("graph", _M_c_locale_ctype);
+	break;
+      default:
+	__ret = __wmask_type();
+      }
+    return __ret;
+  }
+  
+  wchar_t
+  ctype<wchar_t>::do_toupper(wchar_t __c) const
+  { return __towupper_l(__c, _M_c_locale_ctype); }
+
+  const wchar_t*
+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
+        ++__lo;
+      }
+    return __hi;
+  }
+  
+  wchar_t
+  ctype<wchar_t>::do_tolower(wchar_t __c) const
+  { return __towlower_l(__c, _M_c_locale_ctype); }
+  
+  const wchar_t*
+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi)
+      {
+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
+        ++__lo;
+      }
+    return __hi;
+  }
+
+  bool
+  ctype<wchar_t>::
+  do_is(mask __m, wchar_t __c) const
+  { 
+    // The case of __m == ctype_base::space is particularly important,
+    // due to its use in many istream functions.  Therefore we deal with
+    // it first, exploiting the knowledge that on GNU systems _M_bit[5]
+    // is the mask corresponding to ctype_base::space.  NB: an encoding
+    // change would not affect correctness!
+    bool __ret = false;
+    if (__m == _M_bit[5])
+      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
+    else
+      {
+	// Highest bitmask in ctype_base == 10, but extra in "C"
+	// library for blank.
+	const size_t __bitmasksize = 11;
+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+	  if (__m & _M_bit[__bitcur])
+	    {
+	      if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
+		{
+		  __ret = true;
+		  break;
+		}
+	      else if (__m == _M_bit[__bitcur])
+		break;
+	    }
+      }
+    return __ret;    
+  }
+
+  const wchar_t* 
+  ctype<wchar_t>::
+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
+  {
+    for (; __lo < __hi; ++__vec, ++__lo)
+      {
+	// Highest bitmask in ctype_base == 10, but extra in "C"
+	// library for blank.
+	const size_t __bitmasksize = 11; 
+	mask __m = 0;
+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
+	    __m |= _M_bit[__bitcur];
+	*__vec = __m;
+      }
+    return __hi;
+  }
+  
+  const wchar_t* 
+  ctype<wchar_t>::
+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi && !this->do_is(__m, *__lo))
+      ++__lo;
+    return __lo;
+  }
+
+  const wchar_t*
+  ctype<wchar_t>::
+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+  {
+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
+      ++__lo;
+    return __lo;
+  }
+
+  wchar_t
+  ctype<wchar_t>::
+  do_widen(char __c) const
+  { return _M_widen[static_cast<unsigned char>(__c)]; }
+
+  const char* 
+  ctype<wchar_t>::
+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
+  {
+    while (__lo < __hi)
+      {
+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
+	++__lo;
+	++__dest;
+      }
+    return __hi;
+  }
+
+  char
+  ctype<wchar_t>::
+  do_narrow(wchar_t __wc, char __dfault) const
+  {
+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
+      return _M_narrow[__wc];
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_ctype);
+#endif
+    const int __c = wctob(__wc);
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
+  }
+
+  const wchar_t*
+  ctype<wchar_t>::
+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
+	    char* __dest) const
+  {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_ctype);
+#endif
+    if (_M_narrow_ok)
+      while (__lo < __hi)
+	{
+	  if (*__lo >= 0 && *__lo < 128)
+	    *__dest = _M_narrow[*__lo];
+	  else
+	    {
+	      const int __c = wctob(*__lo);
+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	    }
+	  ++__lo;
+	  ++__dest;
+	}
+    else
+      while (__lo < __hi)
+	{
+	  const int __c = wctob(*__lo);
+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
+	  ++__lo;
+	  ++__dest;
+	}
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+    return __hi;
+  }
+
+  void
+  ctype<wchar_t>::_M_initialize_ctype() throw()
+  {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __c_locale __old = __uselocale(_M_c_locale_ctype);
+#endif
+    wint_t __i;
+    for (__i = 0; __i < 128; ++__i)
+      {
+	const int __c = wctob(__i);
+	if (__c == EOF)
+	  break;
+	else
+	  _M_narrow[__i] = static_cast<char>(__c);
+      }
+    if (__i == 128)
+      _M_narrow_ok = true;
+    else
+      _M_narrow_ok = false;
+    for (size_t __j = 0;
+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
+      _M_widen[__j] = btowc(__j);
+
+    for (size_t __k = 0; __k <= 11; ++__k)
+      { 
+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
+      }
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __uselocale(__old);
+#endif
+  }
+#endif //  _GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.cc
new file mode 100644
index 000000000..4154e8938
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.cc
@@ -0,0 +1,86 @@
+// std::messages implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specializations.
+  template<>
+    string
+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
+    {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+      __c_locale __old = __uselocale(_M_c_locale_messages);
+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
+      __uselocale(__old);
+      return string(__msg);
+#else
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __len = strlen(__old) + 1;
+      char* __sav = new char[__len];
+      memcpy(__sav, __old, __len);
+      setlocale(LC_ALL, _M_name_messages);
+      const char* __msg = gettext(__dfault.c_str());
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+      return string(__msg);
+#endif
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    wstring
+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
+    {
+# if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+      __c_locale __old = __uselocale(_M_c_locale_messages);
+      char* __msg = gettext(_M_convert_to_char(__dfault));
+      __uselocale(__old);
+      return _M_convert_from_char(__msg);
+# else
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __len = strlen(__old) + 1;
+      char* __sav = new char[__len];
+      memcpy(__sav, __old, __len);
+      setlocale(LC_ALL, _M_name_messages);
+      char* __msg = gettext(_M_convert_to_char(__dfault));
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+      return _M_convert_from_char(__msg);
+# endif
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.h
new file mode 100644
index 000000000..f81a19fc8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/messages_members.h
@@ -0,0 +1,131 @@
+// std::messages implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/messages_members.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <libintl.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Non-virtual member functions.
+  template<typename _CharT>
+     messages<_CharT>::messages(size_t __refs)
+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
+       _M_name_messages(_S_get_c_name())
+     { }
+
+  template<typename _CharT>
+     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
+				size_t __refs) 
+     : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0)
+     {
+       if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
+	 {
+	   const size_t __len = __builtin_strlen(__s) + 1;
+	   char* __tmp = new char[__len];
+	   __builtin_memcpy(__tmp, __s, __len);
+	   _M_name_messages = __tmp;
+	 }
+       else
+	 _M_name_messages = _S_get_c_name();
+
+       // Last to avoid leaking memory if new throws.
+       _M_c_locale_messages = _S_clone_c_locale(__cloc);
+     }
+
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
+			   const char* __dir) const
+    { 
+      bindtextdomain(__s.c_str(), __dir);
+      return this->do_open(__s, __loc); 
+    }
+
+  // Virtual member functions.
+  template<typename _CharT>
+    messages<_CharT>::~messages()
+    { 
+      if (_M_name_messages != _S_get_c_name())
+	delete [] _M_name_messages;
+      _S_destroy_c_locale(_M_c_locale_messages); 
+    }
+
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::do_open(const basic_string<char>& __s, 
+			      const locale&) const
+    { 
+      // No error checking is done, assume the catalog exists and can
+      // be used.
+      textdomain(__s.c_str());
+      return 0;
+    }
+
+  template<typename _CharT>
+    void    
+    messages<_CharT>::do_close(catalog) const 
+    { }
+
+   // messages_byname
+   template<typename _CharT>
+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
+     : messages<_CharT>(__refs) 
+     { 
+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
+	 {
+	   delete [] this->_M_name_messages;
+	   if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0)
+	     {
+	       const size_t __len = __builtin_strlen(__s) + 1;
+	       char* __tmp = new char[__len];
+	       __builtin_memcpy(__tmp, __s, __len);
+	       this->_M_name_messages = __tmp;
+	     }
+	   else
+	     this->_M_name_messages = locale::facet::_S_get_c_name();
+	 }
+
+       if (__builtin_strcmp(__s, "C") != 0
+	   && __builtin_strcmp(__s, "POSIX") != 0)
+	 {
+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
+	 }
+     }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/monetary_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/monetary_members.cc
new file mode 100644
index 000000000..214c4af7d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/monetary_members.cc
@@ -0,0 +1,935 @@
+// std::moneypunct implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Construct and return valid pattern consisting of some combination of:
+  // space none symbol sign value
+  money_base::pattern
+  money_base::_S_construct_pattern(char __precedes, char __space, 
+				   char __posn) throw()
+  { 
+    pattern __ret;
+
+    // This insanely complicated routine attempts to construct a valid
+    // pattern for use with monyepunct. A couple of invariants:
+
+    // if (__precedes) symbol -> value
+    // else value -> symbol
+    
+    // if (__space) space
+    // else none
+
+    // none == never first
+    // space never first or last
+
+    // Any elegant implementations of this are welcome.
+    switch (__posn)
+      {
+      case 0:
+      case 1:
+	// 1 The sign precedes the value and symbol.
+	__ret.field[0] = sign;
+	if (__space)
+	  {
+	    // Pattern starts with sign.
+	    if (__precedes)
+	      {
+		__ret.field[1] = symbol;
+		__ret.field[3] = value;
+	      }
+	    else
+	      {
+		__ret.field[1] = value;
+		__ret.field[3] = symbol;
+	      }
+	    __ret.field[2] = space;
+	  }
+	else
+	  {
+	    // Pattern starts with sign and ends with none.
+	    if (__precedes)
+	      {
+		__ret.field[1] = symbol;
+		__ret.field[2] = value;
+	      }
+	    else
+	      {
+		__ret.field[1] = value;
+		__ret.field[2] = symbol;
+	      }
+	    __ret.field[3] = none;
+	  }
+	break;
+      case 2:
+	// 2 The sign follows the value and symbol.
+	if (__space)
+	  {
+	    // Pattern either ends with sign.
+	    if (__precedes)
+	      {
+		__ret.field[0] = symbol;
+		__ret.field[2] = value;
+	      }
+	    else
+	      {
+		__ret.field[0] = value;
+		__ret.field[2] = symbol;
+	      }
+	    __ret.field[1] = space;
+	    __ret.field[3] = sign;
+	  }
+	else
+	  {
+	    // Pattern ends with sign then none.
+	    if (__precedes)
+	      {
+		__ret.field[0] = symbol;
+		__ret.field[1] = value;
+	      }
+	    else
+	      {
+		__ret.field[0] = value;
+		__ret.field[1] = symbol;
+	      }
+	    __ret.field[2] = sign;
+	    __ret.field[3] = none;
+	  }
+	break;
+      case 3:
+	// 3 The sign immediately precedes the symbol.
+	if (__precedes)
+	  {
+	    __ret.field[0] = sign;
+	    __ret.field[1] = symbol;	    
+	    if (__space)
+	      {
+		__ret.field[2] = space;
+		__ret.field[3] = value;
+	      }
+	    else
+	      {
+		__ret.field[2] = value;		
+		__ret.field[3] = none;
+	      }
+	  }
+	else
+	  {
+	    __ret.field[0] = value;
+	    if (__space)
+	      {
+		__ret.field[1] = space;
+		__ret.field[2] = sign;
+		__ret.field[3] = symbol;
+	      }
+	    else
+	      {
+		__ret.field[1] = sign;
+		__ret.field[2] = symbol;
+		__ret.field[3] = none;
+	      }
+	  }
+	break;
+      case 4:
+	// 4 The sign immediately follows the symbol.
+	if (__precedes)
+	  {
+	    __ret.field[0] = symbol;
+	    __ret.field[1] = sign;
+	    if (__space)
+	      {
+		__ret.field[2] = space;
+		__ret.field[3] = value;
+	      }
+	    else
+	      {
+		__ret.field[2] = value;
+		__ret.field[3] = none;
+	      }
+	  }
+	else
+	  {
+	    __ret.field[0] = value;
+	    if (__space)
+	      {
+		__ret.field[1] = space;
+		__ret.field[2] = symbol;
+		__ret.field[3] = sign;
+	      }
+	    else
+	      {
+		__ret.field[1] = symbol;
+		__ret.field[2] = sign;
+		__ret.field[3] = none;
+	      }
+	  }
+	break;
+      default:
+	__ret = pattern();
+      }
+    return __ret;
+  }
+
+  template<> 
+    void
+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 
+						     const char*)
+    {
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<char, true>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_decimal_point = '.';
+	  _M_data->_M_thousands_sep = ',';
+	  _M_data->_M_grouping = "";
+	  _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+	  _M_data->_M_curr_symbol = "";
+	  _M_data->_M_curr_symbol_size = 0;
+	  _M_data->_M_positive_sign = "";
+	  _M_data->_M_positive_sign_size = 0;
+	  _M_data->_M_negative_sign = "";
+	  _M_data->_M_negative_sign_size = 0;
+	  _M_data->_M_frac_digits = 0;
+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
+	}
+      else
+	{
+	  // Named locale.
+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
+							__cloc));
+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
+							__cloc));
+
+	  // Check for NULL, which implies no fractional digits.
+	  if (_M_data->_M_decimal_point == '\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_frac_digits = 0;
+	      _M_data->_M_decimal_point = '.';
+	    }
+	  else
+	    _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
+							__cloc));
+
+	  const char* __cgroup = __nl_langinfo_l(__MON_GROUPING, __cloc);
+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
+	  // _Intl == true
+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
+
+	  char* __group = 0;
+	  char* __ps = 0;
+	  char* __ns = 0;
+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));	  
+	  __try
+	    {
+	      size_t __len;
+	      
+	      // Check for NULL, which implies no grouping.
+	      if (_M_data->_M_thousands_sep == '\0')
+		{
+		  // Like in "C" locale.
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_grouping_size = 0;
+		  _M_data->_M_use_grouping = false;
+		  _M_data->_M_thousands_sep = ',';
+		}
+	      else
+		{
+		  __len = strlen(__cgroup);
+		  if (__len)
+		    {
+		      __group = new char[__len + 1];
+		      memcpy(__group, __cgroup, __len + 1);
+		      _M_data->_M_grouping = __group;
+		    }
+		  else
+		    {
+		      _M_data->_M_grouping = "";
+		      _M_data->_M_use_grouping = false;
+		    }
+		  _M_data->_M_grouping_size = __len;
+		}
+
+	      __len = strlen(__cpossign);
+	      if (__len)
+		{
+		  __ps = new char[__len + 1];
+		  memcpy(__ps, __cpossign, __len + 1);
+		  _M_data->_M_positive_sign = __ps;
+		}
+	      else
+		_M_data->_M_positive_sign = "";
+	      _M_data->_M_positive_sign_size = __len;
+
+	      if (!__nposn)
+		{
+		  _M_data->_M_negative_sign = "()";
+		  _M_data->_M_negative_sign_size = 2;
+		}
+	      else
+		{
+		  __len = strlen(__cnegsign);
+		  if (__len)
+		    {
+		      __ns = new char[__len + 1];
+		      memcpy(__ns, __cnegsign, __len + 1);
+		      _M_data->_M_negative_sign = __ns;
+		    }
+		  else
+		    _M_data->_M_negative_sign = "";
+		  _M_data->_M_negative_sign_size = __len;
+		}
+
+	      __len = strlen(__ccurr);
+	      if (__len)
+		{
+		  char* __curr = new char[__len + 1];
+		  memcpy(__curr, __ccurr, __len + 1);
+		  _M_data->_M_curr_symbol = __curr;
+		}
+	      else
+		_M_data->_M_curr_symbol = "";
+	      _M_data->_M_curr_symbol_size = __len;
+	    }
+	  __catch(...)
+	    {
+	      delete _M_data;
+	      _M_data = 0;
+	      delete [] __group;
+	      delete [] __ps;
+	      delete [] __ns;
+	    }
+
+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
+							__pposn);
+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
+							__nposn);
+	}
+    }
+
+  template<> 
+    void
+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 
+						      const char*)
+    {
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<char, false>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_decimal_point = '.';
+	  _M_data->_M_thousands_sep = ',';
+	  _M_data->_M_grouping = "";
+	  _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+	  _M_data->_M_curr_symbol = "";
+	  _M_data->_M_curr_symbol_size = 0;
+	  _M_data->_M_positive_sign = "";
+	  _M_data->_M_positive_sign_size = 0;
+	  _M_data->_M_negative_sign = "";
+	  _M_data->_M_negative_sign_size = 0;
+	  _M_data->_M_frac_digits = 0;
+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
+	}
+      else
+	{
+	  // Named locale.
+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
+							__cloc));
+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
+							__cloc));
+
+	  // Check for NULL, which implies no fractional digits.
+	  if (_M_data->_M_decimal_point == '\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_frac_digits = 0;
+	      _M_data->_M_decimal_point = '.';
+	    }
+	  else
+	    _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS,
+							__cloc));
+
+	  const char* __cgroup = __nl_langinfo_l(__MON_GROUPING, __cloc);
+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
+	  // _Intl == false
+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
+
+	  char* __group = 0;
+	  char* __ps = 0;
+	  char* __ns = 0;
+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
+	  __try
+	    {
+	      size_t __len;
+
+	      // Check for NULL, which implies no grouping.
+	      if (_M_data->_M_thousands_sep == '\0')
+		{
+		  // Like in "C" locale.
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_grouping_size = 0;
+		  _M_data->_M_use_grouping = false;
+		  _M_data->_M_thousands_sep = ',';
+		}
+	      else
+		{
+		  __len = strlen(__cgroup);
+		  if (__len)
+		    {
+		      __group = new char[__len + 1];
+		      memcpy(__group, __cgroup, __len + 1);
+		      _M_data->_M_grouping = __group;
+		    }
+		  else
+		    {
+		      _M_data->_M_grouping = "";
+		      _M_data->_M_use_grouping = false;
+		    }
+		  _M_data->_M_grouping_size = __len;
+		}
+
+	      __len = strlen(__cpossign);
+	      if (__len)
+		{
+		  __ps = new char[__len + 1];
+		  memcpy(__ps, __cpossign, __len + 1);
+		  _M_data->_M_positive_sign = __ps;
+		}
+	      else
+		_M_data->_M_positive_sign = "";
+	      _M_data->_M_positive_sign_size = __len;
+
+	      if (!__nposn)
+		{
+		  _M_data->_M_negative_sign = "()";
+		  _M_data->_M_negative_sign_size = 2;
+		}
+	      else
+		{
+		  __len = strlen(__cnegsign);
+		  if (__len)
+		    {
+		      __ns = new char[__len + 1];
+		      memcpy(__ns, __cnegsign, __len + 1);
+		      _M_data->_M_negative_sign = __ns;
+		    }
+		  else
+		    _M_data->_M_negative_sign = "";
+		  _M_data->_M_negative_sign_size = __len;
+		}
+
+	      __len = strlen(__ccurr);
+	      if (__len)
+		{
+		  char* __curr = new char[__len + 1];
+		  memcpy(__curr, __ccurr, __len + 1);
+		  _M_data->_M_curr_symbol = __curr;
+		}
+	      else
+		_M_data->_M_curr_symbol = "";
+	      _M_data->_M_curr_symbol_size = __len;
+	    }
+	  __catch(...)
+	    {
+	      delete _M_data;
+	      _M_data = 0;
+	      delete [] __group;
+	      delete [] __ps;
+	      delete [] __ns;
+	    }
+
+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
+							__pposn);
+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
+							__nposn);
+	}
+    }
+
+  template<> 
+    moneypunct<char, true>::~moneypunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      if (_M_data->_M_positive_sign_size)
+	delete [] _M_data->_M_positive_sign;
+      if (_M_data->_M_negative_sign_size
+          && strcmp(_M_data->_M_negative_sign, "()") != 0)
+	delete [] _M_data->_M_negative_sign;
+      if (_M_data->_M_curr_symbol_size)
+	delete [] _M_data->_M_curr_symbol;
+      delete _M_data;
+    }
+
+  template<> 
+    moneypunct<char, false>::~moneypunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      if (_M_data->_M_positive_sign_size)
+	delete [] _M_data->_M_positive_sign;
+      if (_M_data->_M_negative_sign_size
+          && strcmp(_M_data->_M_negative_sign, "()") != 0)
+	delete [] _M_data->_M_negative_sign;
+      if (_M_data->_M_curr_symbol_size)
+	delete [] _M_data->_M_curr_symbol;
+      delete _M_data;
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    void
+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+							const char*)
+#else
+							const char* __name)
+#endif
+    {
+      if (!_M_data)
+	_M_data = new __moneypunct_cache<wchar_t, true>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_decimal_point = L'.';
+	  _M_data->_M_thousands_sep = L',';
+	  _M_data->_M_grouping = "";
+	  _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+	  _M_data->_M_curr_symbol = L"";
+	  _M_data->_M_curr_symbol_size = 0;
+	  _M_data->_M_positive_sign = L"";
+	  _M_data->_M_positive_sign_size = 0;
+	  _M_data->_M_negative_sign = L"";
+	  _M_data->_M_negative_sign_size = 0;
+	  _M_data->_M_frac_digits = 0;
+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+	  // Use ctype::widen code without the facet...
+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	    _M_data->_M_atoms[__i] =
+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
+	}
+      else
+	{
+	  // Named locale.
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	  __c_locale __old = __uselocale(__cloc);
+#else
+	  // Switch to named locale so that mbsrtowcs will work.
+	  char* __old = setlocale(LC_ALL, 0);
+          const size_t __llen = strlen(__old) + 1;
+          char* __sav = new char[__llen];
+          memcpy(__sav, __old, __llen);
+	  setlocale(LC_ALL, __name);
+#endif
+
+	  union { char *__s; wchar_t __w; } __u;
+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
+	  _M_data->_M_decimal_point = __u.__w;
+
+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
+	  _M_data->_M_thousands_sep = __u.__w;
+
+	  // Check for NULL, which implies no fractional digits.
+	  if (_M_data->_M_decimal_point == L'\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_frac_digits = 0;
+	      _M_data->_M_decimal_point = L'.';
+	    }
+	  else
+	    _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
+							__cloc));
+
+	  const char* __cgroup = __nl_langinfo_l(__MON_GROUPING, __cloc);
+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
+
+	  char* __group = 0;
+	  wchar_t* __wcs_ps = 0;
+	  wchar_t* __wcs_ns = 0;
+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
+	  __try
+	    {
+	      size_t __len;
+
+	      // Check for NULL, which implies no grouping.
+	      if (_M_data->_M_thousands_sep == L'\0')
+		{
+		  // Like in "C" locale.
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_grouping_size = 0;
+		  _M_data->_M_use_grouping = false;
+		  _M_data->_M_thousands_sep = L',';
+		}
+	      else
+		{
+		  __len = strlen(__cgroup);
+		  if (__len)
+		    {
+		      __group = new char[__len + 1];
+		      memcpy(__group, __cgroup, __len + 1);
+		      _M_data->_M_grouping = __group;
+		    }
+		  else
+		    {
+		      _M_data->_M_grouping = "";
+		      _M_data->_M_use_grouping = false;
+		    }
+		  _M_data->_M_grouping_size = __len;
+		}
+
+	      mbstate_t __state;
+	      __len = strlen(__cpossign);
+	      if (__len)
+		{
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  __wcs_ps = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs_ps, &__cpossign, __len + 1, &__state);
+		  _M_data->_M_positive_sign = __wcs_ps;
+		}
+	      else
+		_M_data->_M_positive_sign = L"";
+	      _M_data->_M_positive_sign_size = 
+		wcslen(_M_data->_M_positive_sign);
+	      
+	      __len = strlen(__cnegsign);
+	      if (!__nposn)
+		_M_data->_M_negative_sign = L"()";
+	      else if (__len)
+		{
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  __wcs_ns = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len + 1, &__state);
+		  _M_data->_M_negative_sign = __wcs_ns;
+		}
+	      else
+		_M_data->_M_negative_sign = L"";
+	      _M_data->_M_negative_sign_size = 
+		wcslen(_M_data->_M_negative_sign);
+	      
+	      // _Intl == true.
+	      __len = strlen(__ccurr);
+	      if (__len)
+		{
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  wchar_t* __wcs = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs, &__ccurr, __len + 1, &__state);
+		  _M_data->_M_curr_symbol = __wcs;
+		}
+	      else
+		_M_data->_M_curr_symbol = L"";
+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
+	    }
+	  __catch(...)
+	    {
+	      delete _M_data;
+	      _M_data = 0;
+	      delete [] __group;
+	      delete [] __wcs_ps;
+	      delete [] __wcs_ns;	      
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	      __uselocale(__old);
+#else
+	      setlocale(LC_ALL, __sav);
+	      delete [] __sav;
+#endif
+	      __throw_exception_again;
+	    } 
+	  
+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
+							__pposn);
+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
+							__nposn);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	  __uselocale(__old);
+#else
+	  setlocale(LC_ALL, __sav);
+	  delete [] __sav;
+#endif
+	}
+    }
+
+  template<> 
+  void
+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+						       const char*)
+#else
+                                                       const char* __name)
+#endif
+  {
+    if (!_M_data)
+      _M_data = new __moneypunct_cache<wchar_t, false>;
+
+    if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_decimal_point = L'.';
+	  _M_data->_M_thousands_sep = L',';
+	  _M_data->_M_grouping = "";
+          _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+	  _M_data->_M_curr_symbol = L"";
+	  _M_data->_M_curr_symbol_size = 0;
+	  _M_data->_M_positive_sign = L"";
+	  _M_data->_M_positive_sign_size = 0;
+	  _M_data->_M_negative_sign = L"";
+	  _M_data->_M_negative_sign_size = 0;
+	  _M_data->_M_frac_digits = 0;
+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
+
+	  // Use ctype::widen code without the facet...
+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
+	    _M_data->_M_atoms[__i] =
+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
+	}
+      else
+	{
+	  // Named locale.
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	  __c_locale __old = __uselocale(__cloc);
+#else
+	  // Switch to named locale so that mbsrtowcs will work.
+	  char* __old = setlocale(LC_ALL, 0);
+          const size_t __llen = strlen(__old) + 1;
+          char* __sav = new char[__llen];
+          memcpy(__sav, __old, __llen);
+	  setlocale(LC_ALL, __name);
+#endif
+
+          union { char *__s; wchar_t __w; } __u;
+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
+	  _M_data->_M_decimal_point = __u.__w;
+
+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
+	  _M_data->_M_thousands_sep = __u.__w;
+
+	  // Check for NULL, which implies no fractional digits.
+	  if (_M_data->_M_decimal_point == L'\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_frac_digits = 0;
+	      _M_data->_M_decimal_point = L'.';
+	    }
+	  else
+	    _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS,
+							__cloc));
+
+	  const char* __cgroup = __nl_langinfo_l(__MON_GROUPING, __cloc);
+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
+
+	  char* __group = 0;
+	  wchar_t* __wcs_ps = 0;
+	  wchar_t* __wcs_ns = 0;
+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
+	  __try
+            {
+	      size_t __len;
+
+	      // Check for NULL, which implies no grouping.
+	      if (_M_data->_M_thousands_sep == L'\0')
+		{
+		  // Like in "C" locale.
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_grouping_size = 0;
+		  _M_data->_M_use_grouping = false;
+		  _M_data->_M_thousands_sep = L',';
+		}
+	      else
+		{
+		  __len = strlen(__cgroup);
+		  if (__len)
+		    {
+		      __group = new char[__len + 1];
+		      memcpy(__group, __cgroup, __len + 1);
+		      _M_data->_M_grouping = __group;
+		    }
+		  else
+		    {
+		      _M_data->_M_grouping = "";
+		      _M_data->_M_use_grouping = false;
+		    }
+		  _M_data->_M_grouping_size = __len;
+		}
+
+              mbstate_t __state;
+              __len = strlen(__cpossign);
+              if (__len)
+                {
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  __wcs_ps = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs_ps, &__cpossign, __len + 1, &__state);
+		  _M_data->_M_positive_sign = __wcs_ps;
+		}
+	      else
+		_M_data->_M_positive_sign = L"";
+              _M_data->_M_positive_sign_size = 
+		wcslen(_M_data->_M_positive_sign);
+
+	      __len = strlen(__cnegsign);
+	      if (!__nposn)
+		_M_data->_M_negative_sign = L"()";
+	      else if (__len)
+		{
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  __wcs_ns = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len + 1, &__state);
+		  _M_data->_M_negative_sign = __wcs_ns;
+		}
+	      else
+		_M_data->_M_negative_sign = L"";
+              _M_data->_M_negative_sign_size = 
+		wcslen(_M_data->_M_negative_sign);
+
+	      // _Intl == true.
+	      __len = strlen(__ccurr);
+	      if (__len)
+		{
+		  memset(&__state, 0, sizeof(mbstate_t));
+		  wchar_t* __wcs = new wchar_t[__len + 1];
+		  mbsrtowcs(__wcs, &__ccurr, __len + 1, &__state);
+		  _M_data->_M_curr_symbol = __wcs;
+		}
+	      else
+		_M_data->_M_curr_symbol = L"";
+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
+	    }
+          __catch(...)
+	    {
+	      delete _M_data;
+              _M_data = 0;
+	      delete [] __group;
+	      delete [] __wcs_ps;
+	      delete [] __wcs_ns;	      
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	      __uselocale(__old);
+#else
+	      setlocale(LC_ALL, __sav);
+	      delete [] __sav;
+#endif
+              __throw_exception_again;
+	    }
+
+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
+	                                                __pposn);
+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
+	                                                __nposn);
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+	  __uselocale(__old);
+#else
+	  setlocale(LC_ALL, __sav);
+	  delete [] __sav;
+#endif
+	}
+    }
+
+  template<> 
+    moneypunct<wchar_t, true>::~moneypunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      if (_M_data->_M_positive_sign_size)
+	delete [] _M_data->_M_positive_sign;
+      if (_M_data->_M_negative_sign_size
+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
+	delete [] _M_data->_M_negative_sign;
+      if (_M_data->_M_curr_symbol_size)
+	delete [] _M_data->_M_curr_symbol;
+      delete _M_data;
+    }
+
+  template<> 
+    moneypunct<wchar_t, false>::~moneypunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      if (_M_data->_M_positive_sign_size)
+	delete [] _M_data->_M_positive_sign;
+      if (_M_data->_M_negative_sign_size
+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
+	delete [] _M_data->_M_negative_sign;
+      if (_M_data->_M_curr_symbol_size)
+	delete [] _M_data->_M_curr_symbol;
+      delete _M_data;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/numeric_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/numeric_members.cc
new file mode 100644
index 000000000..934511acb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/numeric_members.cc
@@ -0,0 +1,218 @@
+// std::numpunct implementation details, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<> 
+    void
+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
+    {
+      if (!_M_data)
+	_M_data = new __numpunct_cache<char>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_grouping = "";
+	  _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+
+	  _M_data->_M_decimal_point = '.';
+	  _M_data->_M_thousands_sep = ',';
+
+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
+
+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
+	}
+      else
+	{
+	  // Named locale.
+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 
+							__cloc));
+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 
+							__cloc));
+
+	  // Check for NULL, which implies no grouping.
+	  if (_M_data->_M_thousands_sep == '\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_grouping = "";
+	      _M_data->_M_grouping_size = 0;
+	      _M_data->_M_use_grouping = false;
+	      _M_data->_M_thousands_sep = ',';
+	    }
+	  else
+	    {
+	      const char* __src = __nl_langinfo_l(GROUPING, __cloc);
+	      const size_t __len = strlen(__src);
+	      if (__len)
+		{
+		  __try
+		    {
+		      char* __dst = new char[__len + 1];
+		      memcpy(__dst, __src, __len + 1);
+		      _M_data->_M_grouping = __dst;
+		    }
+		  __catch(...)
+		    {
+		      delete _M_data;
+		      _M_data = 0;
+		      __throw_exception_again;
+		    }
+		}
+	      else
+		{
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_use_grouping = false;
+		}
+	      _M_data->_M_grouping_size = __len;
+	    }
+	}
+
+      // NB: There is no way to extact this info from posix locales.
+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
+      _M_data->_M_truename = "true";
+      _M_data->_M_truename_size = 4;
+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
+      _M_data->_M_falsename = "false";
+      _M_data->_M_falsename_size = 5;
+    }
+ 
+  template<> 
+    numpunct<char>::~numpunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      delete _M_data;
+    }
+   
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    void
+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
+    {
+      if (!_M_data)
+	_M_data = new __numpunct_cache<wchar_t>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_data->_M_grouping = "";
+	  _M_data->_M_grouping_size = 0;
+	  _M_data->_M_use_grouping = false;
+
+	  _M_data->_M_decimal_point = L'.';
+	  _M_data->_M_thousands_sep = L',';
+
+	  // Use ctype::widen code without the facet...
+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
+	    _M_data->_M_atoms_out[__i] =
+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
+
+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
+	    _M_data->_M_atoms_in[__j] =
+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
+	}
+      else
+	{
+	  // Named locale.
+	  // NB: In the GNU model wchar_t is always 32 bit wide.
+	  union { char *__s; wchar_t __w; } __u;
+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
+	  _M_data->_M_decimal_point = __u.__w;
+
+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
+	  _M_data->_M_thousands_sep = __u.__w;
+
+	  // Check for NULL, which implies no grouping.
+	  if (_M_data->_M_thousands_sep == L'\0')
+	    {
+	      // Like in "C" locale.
+	      _M_data->_M_grouping = "";
+	      _M_data->_M_grouping_size = 0;
+	      _M_data->_M_use_grouping = false;
+	      _M_data->_M_thousands_sep = L',';
+	    }
+	  else
+	    {
+	      const char* __src = __nl_langinfo_l(GROUPING, __cloc);
+	      const size_t __len = strlen(__src);
+	      if (__len)
+		{
+		  __try
+		    {
+		      char* __dst = new char[__len + 1];
+		      memcpy(__dst, __src, __len + 1);
+		      _M_data->_M_grouping = __dst;
+		    }
+		  __catch(...)
+		    {
+		      delete _M_data;
+		      _M_data = 0;
+		      __throw_exception_again;
+		    }
+		}
+	      else
+		{
+		  _M_data->_M_grouping = "";
+		  _M_data->_M_use_grouping = false;
+		}
+	      _M_data->_M_grouping_size = __len;
+	    }
+	}
+
+      // NB: There is no way to extact this info from posix locales.
+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
+      _M_data->_M_truename = L"true";
+      _M_data->_M_truename_size = 4;
+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
+      _M_data->_M_falsename = L"false";
+      _M_data->_M_falsename_size = 5;
+    }
+
+  template<> 
+    numpunct<wchar_t>::~numpunct()
+    {
+      if (_M_data->_M_grouping_size)
+	delete [] _M_data->_M_grouping;
+      delete _M_data;
+    }
+ #endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.cc
new file mode 100644
index 000000000..197474605
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.cc
@@ -0,0 +1,401 @@
+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+#include <bits/c++locale_internal.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    void
+    __timepunct<char>::
+    _M_put(char* __s, size_t __maxlen, const char* __format, 
+	   const tm* __tm) const throw()
+    {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
+					_M_c_locale_timepunct);
+#else
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __llen = strlen(__old) + 1;  
+      char* __sav = new char[__llen];
+      memcpy(__sav, __old, __llen);
+      setlocale(LC_ALL, _M_name_timepunct);
+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+#endif
+      // Make sure __s is null terminated.
+      if (__len == 0)
+	__s[0] = '\0';
+    }
+
+  template<> 
+    void
+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
+    {
+      if (!_M_data)
+	_M_data = new __timepunct_cache<char>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_c_locale_timepunct = _S_get_c_locale();
+
+	  _M_data->_M_date_format = "%m/%d/%y";
+	  _M_data->_M_date_era_format = "%m/%d/%y";
+	  _M_data->_M_time_format = "%H:%M:%S";
+	  _M_data->_M_time_era_format = "%H:%M:%S";
+	  _M_data->_M_date_time_format = "";
+	  _M_data->_M_date_time_era_format = "";
+	  _M_data->_M_am = "AM";
+	  _M_data->_M_pm = "PM";
+	  _M_data->_M_am_pm_format = "";
+
+	  // Day names, starting with "C"'s Sunday.
+	  _M_data->_M_day1 = "Sunday";
+	  _M_data->_M_day2 = "Monday";
+	  _M_data->_M_day3 = "Tuesday";
+	  _M_data->_M_day4 = "Wednesday";
+	  _M_data->_M_day5 = "Thursday";
+	  _M_data->_M_day6 = "Friday";
+	  _M_data->_M_day7 = "Saturday";
+
+	  // Abbreviated day names, starting with "C"'s Sun.
+	  _M_data->_M_aday1 = "Sun";
+	  _M_data->_M_aday2 = "Mon";
+	  _M_data->_M_aday3 = "Tue";
+	  _M_data->_M_aday4 = "Wed";
+	  _M_data->_M_aday5 = "Thu";
+	  _M_data->_M_aday6 = "Fri";
+	  _M_data->_M_aday7 = "Sat";
+
+	  // Month names, starting with "C"'s January.
+	  _M_data->_M_month01 = "January";
+	  _M_data->_M_month02 = "February";
+	  _M_data->_M_month03 = "March";
+	  _M_data->_M_month04 = "April";
+	  _M_data->_M_month05 = "May";
+	  _M_data->_M_month06 = "June";
+	  _M_data->_M_month07 = "July";
+	  _M_data->_M_month08 = "August";
+	  _M_data->_M_month09 = "September";
+	  _M_data->_M_month10 = "October";
+	  _M_data->_M_month11 = "November";
+	  _M_data->_M_month12 = "December";
+
+	  // Abbreviated month names, starting with "C"'s Jan.
+	  _M_data->_M_amonth01 = "Jan";
+	  _M_data->_M_amonth02 = "Feb";
+	  _M_data->_M_amonth03 = "Mar";
+	  _M_data->_M_amonth04 = "Apr";
+	  _M_data->_M_amonth05 = "May";
+	  _M_data->_M_amonth06 = "Jun";
+	  _M_data->_M_amonth07 = "Jul";
+	  _M_data->_M_amonth08 = "Aug";
+	  _M_data->_M_amonth09 = "Sep";
+	  _M_data->_M_amonth10 = "Oct";
+	  _M_data->_M_amonth11 = "Nov";
+	  _M_data->_M_amonth12 = "Dec";
+	}
+      else
+	{
+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
+
+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
+							     __cloc);
+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
+
+	  // Day names, starting with "C"'s Sunday.
+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
+
+	  // Abbreviated day names, starting with "C"'s Sun.
+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
+
+	  // Month names, starting with "C"'s January.
+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
+
+	  // Abbreviated month names, starting with "C"'s Jan.
+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
+	}
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    void
+    __timepunct<wchar_t>::
+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
+	   const tm* __tm) const throw()
+    {
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
+					_M_c_locale_timepunct);
+#else
+      char* __old = setlocale(LC_ALL, 0);
+      const size_t __llen = strlen(__old) + 1;
+      char* __sav = new char[__llen];
+      memcpy(__sav, __old, __llen);
+      setlocale(LC_ALL, _M_name_timepunct);
+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
+      setlocale(LC_ALL, __sav);
+      delete [] __sav;
+#endif
+      // Make sure __s is null terminated.
+      if (__len == 0)
+	__s[0] = L'\0';
+    }
+
+  template<> 
+    void
+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
+    {
+      if (!_M_data)
+	_M_data = new __timepunct_cache<wchar_t>;
+
+      if (!__cloc)
+	{
+	  // "C" locale
+	  _M_c_locale_timepunct = _S_get_c_locale();
+
+	  _M_data->_M_date_format = L"%m/%d/%y";
+	  _M_data->_M_date_era_format = L"%m/%d/%y";
+	  _M_data->_M_time_format = L"%H:%M:%S";
+	  _M_data->_M_time_era_format = L"%H:%M:%S";
+	  _M_data->_M_date_time_format = L"";
+	  _M_data->_M_date_time_era_format = L"";
+	  _M_data->_M_am = L"AM";
+	  _M_data->_M_pm = L"PM";
+	  _M_data->_M_am_pm_format = L"";
+
+	  // Day names, starting with "C"'s Sunday.
+	  _M_data->_M_day1 = L"Sunday";
+	  _M_data->_M_day2 = L"Monday";
+	  _M_data->_M_day3 = L"Tuesday";
+	  _M_data->_M_day4 = L"Wednesday";
+	  _M_data->_M_day5 = L"Thursday";
+	  _M_data->_M_day6 = L"Friday";
+	  _M_data->_M_day7 = L"Saturday";
+
+	  // Abbreviated day names, starting with "C"'s Sun.
+	  _M_data->_M_aday1 = L"Sun";
+	  _M_data->_M_aday2 = L"Mon";
+	  _M_data->_M_aday3 = L"Tue";
+	  _M_data->_M_aday4 = L"Wed";
+	  _M_data->_M_aday5 = L"Thu";
+	  _M_data->_M_aday6 = L"Fri";
+	  _M_data->_M_aday7 = L"Sat";
+
+	  // Month names, starting with "C"'s January.
+	  _M_data->_M_month01 = L"January";
+	  _M_data->_M_month02 = L"February";
+	  _M_data->_M_month03 = L"March";
+	  _M_data->_M_month04 = L"April";
+	  _M_data->_M_month05 = L"May";
+	  _M_data->_M_month06 = L"June";
+	  _M_data->_M_month07 = L"July";
+	  _M_data->_M_month08 = L"August";
+	  _M_data->_M_month09 = L"September";
+	  _M_data->_M_month10 = L"October";
+	  _M_data->_M_month11 = L"November";
+	  _M_data->_M_month12 = L"December";
+
+	  // Abbreviated month names, starting with "C"'s Jan.
+	  _M_data->_M_amonth01 = L"Jan";
+	  _M_data->_M_amonth02 = L"Feb";
+	  _M_data->_M_amonth03 = L"Mar";
+	  _M_data->_M_amonth04 = L"Apr";
+	  _M_data->_M_amonth05 = L"May";
+	  _M_data->_M_amonth06 = L"Jun";
+	  _M_data->_M_amonth07 = L"Jul";
+	  _M_data->_M_amonth08 = L"Aug";
+	  _M_data->_M_amonth09 = L"Sep";
+	  _M_data->_M_amonth10 = L"Oct";
+	  _M_data->_M_amonth11 = L"Nov";
+	  _M_data->_M_amonth12 = L"Dec";
+	}
+      else
+	{
+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
+
+	  union { char *__s; wchar_t *__w; } __u;
+
+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
+	  _M_data->_M_date_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
+	  _M_data->_M_date_era_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
+	  _M_data->_M_time_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
+	  _M_data->_M_time_era_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
+	  _M_data->_M_date_time_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
+	  _M_data->_M_date_time_era_format = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
+	  _M_data->_M_am = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
+	  _M_data->_M_pm = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
+	  _M_data->_M_am_pm_format = __u.__w;
+
+	  // Day names, starting with "C"'s Sunday.
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
+	  _M_data->_M_day1 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
+	  _M_data->_M_day2 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
+	  _M_data->_M_day3 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
+	  _M_data->_M_day4 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
+	  _M_data->_M_day5 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
+	  _M_data->_M_day6 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
+	  _M_data->_M_day7 = __u.__w;
+
+	  // Abbreviated day names, starting with "C"'s Sun.
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
+	  _M_data->_M_aday1 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
+	  _M_data->_M_aday2 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
+	  _M_data->_M_aday3 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
+	  _M_data->_M_aday4 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
+	  _M_data->_M_aday5 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
+	  _M_data->_M_aday6 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
+	  _M_data->_M_aday7 = __u.__w;
+
+	  // Month names, starting with "C"'s January.
+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
+	  _M_data->_M_month01 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
+	  _M_data->_M_month02 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
+	  _M_data->_M_month03 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
+	  _M_data->_M_month04 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
+	  _M_data->_M_month05 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
+	  _M_data->_M_month06 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
+	  _M_data->_M_month07 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
+	  _M_data->_M_month08 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
+	  _M_data->_M_month09 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
+	  _M_data->_M_month10 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
+	  _M_data->_M_month11 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
+	  _M_data->_M_month12 = __u.__w;
+
+	  // Abbreviated month names, starting with "C"'s Jan.
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
+	  _M_data->_M_amonth01 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
+	  _M_data->_M_amonth02 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
+	  _M_data->_M_amonth03 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
+	  _M_data->_M_amonth04 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
+	  _M_data->_M_amonth05 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
+	  _M_data->_M_amonth06 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
+	  _M_data->_M_amonth07 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
+	  _M_data->_M_amonth08 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
+	  _M_data->_M_amonth09 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
+	  _M_data->_M_amonth10 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
+	  _M_data->_M_amonth11 = __u.__w;
+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
+	  _M_data->_M_amonth12 = __u.__w;
+	}
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.h
new file mode 100644
index 000000000..3d8e0e91b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/gnu/time_members.h
@@ -0,0 +1,91 @@
+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/time_members.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(size_t __refs) 
+    : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 
+      _M_name_timepunct(_S_get_c_name())
+    { _M_initialize_timepunct(); }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0), 
+      _M_name_timepunct(_S_get_c_name())
+    { _M_initialize_timepunct(); }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
+				     size_t __refs) 
+    : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 
+      _M_name_timepunct(0)
+    {
+      if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
+	{
+	  const size_t __len = __builtin_strlen(__s) + 1;
+	  char* __tmp = new char[__len];
+	  __builtin_memcpy(__tmp, __s, __len);
+	  _M_name_timepunct = __tmp;
+	}
+      else
+	_M_name_timepunct = _S_get_c_name();
+
+      __try
+	{ _M_initialize_timepunct(__cloc); }
+      __catch(...)
+	{
+	  if (_M_name_timepunct != _S_get_c_name())
+	    delete [] _M_name_timepunct;
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _CharT>
+    __timepunct<_CharT>::~__timepunct()
+    { 
+      if (_M_name_timepunct != _S_get_c_name())
+	delete [] _M_name_timepunct;
+      delete _M_data; 
+      _S_destroy_c_locale(_M_c_locale_timepunct); 
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.cc
new file mode 100644
index 000000000..13af608d9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.cc
@@ -0,0 +1,107 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default) 
+{
+  void
+  locale::facet::_S_create_c_locale(__c_locale&, const char*, __c_locale*)
+  { }
+
+  void
+  locale::facet::_S_destroy_c_locale(__c_locale&)
+  { }
+
+  __c_locale
+  locale::facet::_S_clone_c_locale(__c_locale&) throw()
+  { return __c_locale(); }
+
+  template<> 
+    void
+    numpunct<char>::_M_initialize_numpunct(__c_locale)
+    {
+      // "C" locale
+      _M_decimal_point = '.';
+      _M_thousands_sep = ',';
+      _M_grouping = "";
+      _M_truename = "true";
+      _M_falsename = "false";
+    }
+      
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    void
+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale)
+    {
+      // "C" locale
+      _M_decimal_point = L'.';
+      _M_thousands_sep = L',';
+      _M_grouping = "";
+      _M_truename = L"true";
+      _M_falsename = L"false";
+    }
+#endif
+
+  template<> 
+    void
+    moneypunct<char>::_M_initialize_moneypunct(__c_locale)
+    {
+      // "C" locale
+      _M_decimal_point = '.';
+      _M_thousands_sep = ',';
+      _M_grouping = "";
+      _M_curr_symbol = string_type();
+      _M_positive_sign = string_type();
+      _M_negative_sign = string_type();
+      _M_frac_digits = 0;
+      _M_pos_format = money_base::_S_default_pattern;
+      _M_neg_format = money_base::_S_default_pattern;
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    void
+    moneypunct<wchar_t>::_M_initialize_moneypunct(__c_locale)
+    {
+      // "C" locale
+      _M_decimal_point = L'.';
+      _M_thousands_sep = L',';
+      _M_grouping = "";
+      _M_curr_symbol = string_type();
+      _M_positive_sign = string_type();
+      _M_negative_sign = string_type();
+      _M_frac_digits = 0;
+      _M_pos_format = money_base::_S_default_pattern;
+      _M_neg_format = money_base::_S_default_pattern;
+    }
+#endif
+}  // namespace std
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.h
new file mode 100644
index 000000000..027a52d93
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/c_locale.h
@@ -0,0 +1,49 @@
+// Wrapper for underlying C-language localization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++locale.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.8  Standard locale categories.
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <clocale>
+#include <langinfo.h>		// For codecvt
+#include <iconv.h>		// For codecvt using iconv, iconv_t
+#include <nl_types.h> 		// For messages
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef int*			__c_locale;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.cc
new file mode 100644
index 000000000..2b4ab2e49
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.cc
@@ -0,0 +1,56 @@
+// std::messages implementation details, IEEE 1003.1-200x version -*- C++ -*-
+
+// Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  // Specializations
+  template<>
+    string
+    messages<char>::do_get(catalog __c, int __setid, int __msgid, 
+			   const string& __dfault) const
+    {
+      nl_catd __nlc = reinterpret_cast<nl_catd>(__c);
+      return string(catgets(__nlc, __setid, __msgid, __dfault.c_str())); 
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    wstring
+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
+    {
+      nl_catd __nlc = reinterpret_cast<nl_catd>(__c);
+      char* __msg = catgets(__nlc, __setid, __msgid, 
+			    _M_convert_to_char(__dfault));
+      return _M_convert_from_char(__msg);
+    }
+#endif
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.h
new file mode 100644
index 000000000..8c658ab86
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/locale/ieee_1003.1-2001/messages_members.h
@@ -0,0 +1,75 @@
+// std::messages implementation details, IEEE 1003.1-200x version -*- C++ -*-
+
+// Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/messages_members.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Non-virtual member functions.
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
+			   const char*) const
+    { return this->do_open(__s, __loc); }
+
+  // Virtual member functions.
+  template<typename _CharT>
+    messages<_CharT>::~messages()
+    { }
+
+  template<typename _CharT>
+    typename messages<_CharT>::catalog 
+    messages<_CharT>::do_open(const basic_string<char>& __s, 
+			      const locale&) const
+    { return reinterpret_cast<catalog>(catopen(__s.c_str(), NL_CAT_LOCALE)); }
+
+  template<typename _CharT>
+    typename messages<_CharT>::string_type  
+    messages<_CharT>::do_get(catalog __c, int __setid, int __msgid, 
+			     const string_type& __dfault) const
+    {
+      nl_catd __nlc = reinterpret_cast<nl_catd>(__c);
+      char* __msg = catgets(__nlc, __setid, __msgid, 
+			    _M_convert_to_char(__dfault));
+      return _M_convert_from_char(__msg);
+    }
+
+  template<typename _CharT>
+    void    
+    messages<_CharT>::do_close(catalog __c) const 
+    { catclose(reinterpret_cast<nl_catd>(__c)); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomic_word.h
new file mode 100644
index 000000000..70d56da0e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomic_word.h
@@ -0,0 +1,43 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/atomic_word.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/atomicity.h}
+ */
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+typedef int _Atomic_word;
+
+#ifdef _ARCH_PPC
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory")
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory")
+#else
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomicity.h
new file mode 100644
index 000000000..1bd51f1c0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/atomicity.h
@@ -0,0 +1,56 @@
+// Low-level functions for atomic operations: AIX version  -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/atomicity.h>
+
+/* We cannot use the cpu/powerpc/bits/atomicity.h inline assembly
+   definitions for these operations since they depend on operations
+   that are not available on the original POWER architecture.  AIX
+   still runs on the POWER architecture, so it would be incorrect to
+   assume the existence of these instructions.
+
+   The definition of _Atomic_word must match the type pointed to by
+   atomic_p in <sys/atomic_op.h>.  */
+
+extern "C"
+{
+#include <sys/atomic_op.h>
+}
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add (volatile _Atomic_word* __mem, int __val) throw ()
+  { return ::fetch_and_add(const_cast<atomic_p>(__mem), __val); }
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add (volatile _Atomic_word* __mem, int __val) throw ()
+  { (void) ::fetch_and_add(const_cast<atomic_p>(__mem), __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_base.h
new file mode 100644
index 000000000..865105aec
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_base.h
@@ -0,0 +1,58 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned int 	mask;
+    static const mask upper    	= _ISUPPER;
+    static const mask lower 	= _ISLOWER;
+    static const mask alpha 	= _ISALPHA;
+    static const mask digit 	= _ISDIGIT;
+    static const mask xdigit 	= _ISXDIGIT;
+    static const mask space 	= _ISSPACE;
+    static const mask print 	= _ISPRINT;
+    static const mask graph 	= _ISALPHA | _ISDIGIT | _ISPUNCT;
+    static const mask cntrl 	= _ISCNTRL;
+    static const mask punct 	= _ISPUNCT;
+    static const mask alnum 	= _ISALPHA | _ISDIGIT;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_inline.h
new file mode 100644
index 000000000..14f22be1d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_inline.h
@@ -0,0 +1,83 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { 
+    if(_M_table)
+      return _M_table[static_cast<unsigned char>(__c)] & __m;
+    else
+      return __OBJ_DATA(__lc_ctype)->mask[__c] & __m;
+  }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    if(_M_table)
+      while (__low < __high)
+	*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    else
+      while (__low < __high)
+        *__vec++ = __OBJ_DATA(__lc_ctype)->mask[*__low++];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_noninline.h
new file mode 100644
index 000000000..71024bdcb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/ctype_noninline.h
@@ -0,0 +1,91 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/os_defines.h
new file mode 100644
index 000000000..c9320e883
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/aix/os_defines.h
@@ -0,0 +1,52 @@
+// Specific definitions for AIX  -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2005, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// off64_t
+#ifndef _LARGE_FILE_API
+#define _LARGE_FILE_API
+#endif
+
+// atomic types
+#ifndef _ALL_SOURCE
+#define _ALL_SOURCE
+#endif
+
+// C99 math
+#ifndef __COMPATMATH__
+#define __COMPATMATH__
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_base.h
new file mode 100644
index 000000000..926b23374
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_base.h
@@ -0,0 +1,60 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
+
+// Support for Solaris 2.5.1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef char 		mask;
+    static const mask upper    	= _U;
+    static const mask lower 	= _L;
+    static const mask alpha 	= _U | _L;
+    static const mask digit 	= _N;
+    static const mask xdigit 	= _X | _N;
+    static const mask space 	= _S;
+    static const mask print 	= _P | _U | _L | _N | _B;
+    static const mask graph 	= _P | _U | _L | _N;
+    static const mask cntrl 	= _C;
+    static const mask punct 	= _P;
+    static const mask alnum 	= _U | _L | _N;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_inline.h
new file mode 100644
index 000000000..e7b8d5c83
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_inline.h
@@ -0,0 +1,74 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_noninline.h
new file mode 100644
index 000000000..78bc29608
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/ctype_noninline.h
@@ -0,0 +1,98 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return _ctype_ + 1; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  {
+    int __x = __c;
+    return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
+  }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_toupper(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  {
+    int __x = __c;
+    return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
+  }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_tolower(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/os_defines.h
new file mode 100644
index 000000000..0c8f77d13
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bionic/os_defines.h
@@ -0,0 +1,36 @@
+// Specific definitions for Bionic  -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_base.h
new file mode 100644
index 000000000..36f71e065
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_base.h
@@ -0,0 +1,74 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h on FreeBSD 3.4,
+// 4.0 and all versions of the CVS managed file at:
+// :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs/src/include/ctype.h
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    typedef unsigned long 	mask;
+#ifdef _CTYPE_S
+    // FreeBSD 4.0 uses this style of define.
+    static const mask upper    	= _CTYPE_U;
+    static const mask lower 	= _CTYPE_L;
+    static const mask alpha 	= _CTYPE_A;
+    static const mask digit 	= _CTYPE_D;
+    static const mask xdigit 	= _CTYPE_X;
+    static const mask space 	= _CTYPE_S;
+    static const mask print 	= _CTYPE_R;
+    static const mask graph 	= _CTYPE_A | _CTYPE_D | _CTYPE_P;
+    static const mask cntrl 	= _CTYPE_C;
+    static const mask punct 	= _CTYPE_P;
+    static const mask alnum 	= _CTYPE_A | _CTYPE_D;
+#else
+    // Older versions, including Free BSD 3.4, use this style of define.
+    static const mask upper    	= _U;
+    static const mask lower 	= _L;
+    static const mask alpha 	= _A;
+    static const mask digit 	= _D;
+    static const mask xdigit 	= _X;
+    static const mask space 	= _S;
+    static const mask print 	= _R;
+    static const mask graph 	= _A | _D | _P;
+    static const mask cntrl 	= _C;
+    static const mask punct 	= _P;
+    static const mask alnum 	= _A | _D;
+#endif
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_inline.h
new file mode 100644
index 000000000..aa3a83ecf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_inline.h
@@ -0,0 +1,151 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2004, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { 
+    if (_M_table)
+      return _M_table[static_cast<unsigned char>(__c)] & __m;
+    else
+      return __istype(__c, __m);
+  }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    if (_M_table)
+      while (__low < __high)
+	*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    else
+      for (;__low < __high; ++__vec, ++__low)
+	{
+#if defined (_CTYPE_S) || defined (__istype)
+	  *__vec = __maskrune (*__low, upper | lower | alpha | digit | xdigit
+			       | space | print | graph | cntrl | punct | alnum);
+#else
+	  mask __m = 0;
+	  if (this->is(upper, *__low)) __m |= upper;
+	  if (this->is(lower, *__low)) __m |= lower;
+	  if (this->is(alpha, *__low)) __m |= alpha;
+	  if (this->is(digit, *__low)) __m |= digit;
+	  if (this->is(xdigit, *__low)) __m |= xdigit;
+	  if (this->is(space, *__low)) __m |= space;
+	  if (this->is(print, *__low)) __m |= print;
+	  if (this->is(graph, *__low)) __m |= graph;
+	  if (this->is(cntrl, *__low)) __m |= cntrl;
+	  if (this->is(punct, *__low)) __m |= punct;
+	  // Do not include explicit line for alnum mask since it is a
+	  // pure composite of masks on FreeBSD.
+	  *__vec = __m;
+#endif
+	}
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+	++__low;
+    else
+      while (__low < __high && !this->is(__m, *__low))
+	++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+	++__low;
+    else
+      while (__low < __high && this->is(__m, *__low) != 0)
+	++__low;
+    return __low;
+  }
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  inline bool
+  ctype<wchar_t>::
+  do_is(mask __m, wchar_t __c) const
+  {
+    return __istype (__c, __m);
+  }
+
+  inline const wchar_t* 
+  ctype<wchar_t>::
+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
+  {
+    for (; __lo < __hi; ++__vec, ++__lo)
+      *__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
+			   | space | print | graph | cntrl | punct | alnum);
+    return __hi;
+  }
+  
+  inline const wchar_t* 
+  ctype<wchar_t>::
+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi && ! __istype (*__lo, __m))
+      ++__lo;
+    return __lo;
+  }
+
+  inline const wchar_t*
+  ctype<wchar_t>::
+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+  {
+    while (__lo < __hi && __istype (*__lo, __m))
+      ++__lo;
+    return __lo;
+  }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_noninline.h
new file mode 100644
index 000000000..e8e22f628
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/os_defines.h
new file mode 100644
index 000000000..ccefeafa7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/os_defines.h
@@ -0,0 +1,42 @@
+// Specific definitions for Darwin -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+/* Darwin has the pthread routines in libSystem, which every program
+   links to, so there's no need for weak-ness for that.  */
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+
+// On Darwin, in order to enable overriding of operator new and delete,
+// GCC makes the definition of these functions weak, relies on the
+// loader to implement weak semantics properly, and uses
+// -flat_namespace to work around the way that it doesn't.
+#define _GLIBCXX_WEAK_DEFINITION __attribute__ ((weak))
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ppc-extra.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ppc-extra.ver
new file mode 100644
index 000000000..ffe32b656
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/darwin/ppc-extra.ver
@@ -0,0 +1 @@
+  __eprintf;
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_base.h
new file mode 100644
index 000000000..5d01ad6af
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_base.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h on FreeBSD 3.4,
+// 4.0 and all versions of the CVS managed file at:
+// :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs/src/include/ctype.h
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned long 	mask;
+#ifdef _CTYPE_S
+    // FreeBSD 4.0 uses this style of define.
+    static const mask upper    	= _CTYPE_U;
+    static const mask lower 	= _CTYPE_L;
+    static const mask alpha 	= _CTYPE_A;
+    static const mask digit 	= _CTYPE_D;
+    static const mask xdigit 	= _CTYPE_X;
+    static const mask space 	= _CTYPE_S;
+    static const mask print 	= _CTYPE_R;
+    static const mask graph 	= _CTYPE_A | _CTYPE_D | _CTYPE_P;
+    static const mask cntrl 	= _CTYPE_C;
+    static const mask punct 	= _CTYPE_P;
+    static const mask alnum 	= _CTYPE_A | _CTYPE_D;
+#else
+    // Older versions, including Free BSD 3.4, use this style of define.
+    static const mask upper    	= _U;
+    static const mask lower 	= _L;
+    static const mask alpha 	= _A;
+    static const mask digit 	= _D;
+    static const mask xdigit 	= _X;
+    static const mask space 	= _S;
+    static const mask print 	= _R;
+    static const mask graph 	= _A | _D | _P;
+    static const mask cntrl 	= _C;
+    static const mask punct 	= _P;
+    static const mask alnum 	= _A | _D;
+#endif
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_inline.h
new file mode 100644
index 000000000..de10c3fbc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_inline.h
@@ -0,0 +1,151 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  {
+    if (_M_table)
+      return _M_table[static_cast<unsigned char>(__c)] & __m;
+    else
+      return __istype(__c, __m);
+  }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    if (_M_table)
+      while (__low < __high)
+	*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    else
+      for (;__low < __high; ++__vec, ++__low)
+	{
+#if defined (_CTYPE_S) || defined (__istype)
+	  *__vec = __maskrune (*__low, upper | lower | alpha | digit | xdigit
+			       | space | print | graph | cntrl | punct | alnum);
+#else
+	  mask __m = 0;
+	  if (this->is(upper, *__low)) __m |= upper;
+	  if (this->is(lower, *__low)) __m |= lower;
+	  if (this->is(alpha, *__low)) __m |= alpha;
+	  if (this->is(digit, *__low)) __m |= digit;
+	  if (this->is(xdigit, *__low)) __m |= xdigit;
+	  if (this->is(space, *__low)) __m |= space;
+	  if (this->is(print, *__low)) __m |= print;
+	  if (this->is(graph, *__low)) __m |= graph;
+	  if (this->is(cntrl, *__low)) __m |= cntrl;
+	  if (this->is(punct, *__low)) __m |= punct;
+	  // Do not include explicit line for alnum mask since it is a
+	  // pure composite of masks on FreeBSD.
+	  *__vec = __m;
+#endif
+	}
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+	++__low;
+    else
+      while (__low < __high && !this->is(__m, *__low))
+	++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+	++__low;
+    else
+      while (__low < __high && this->is(__m, *__low) != 0)
+	++__low;
+    return __low;
+  }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  inline bool
+  ctype<wchar_t>::
+  do_is(mask __m, wchar_t __c) const
+  {
+    return __istype (__c, __m);
+  }
+
+  inline const wchar_t*
+  ctype<wchar_t>::
+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
+  {
+    for (; __lo < __hi; ++__vec, ++__lo)
+      *__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
+			   | space | print | graph | cntrl | punct | alnum);
+    return __hi;
+  }
+
+  inline const wchar_t*
+  ctype<wchar_t>::
+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
+  {
+    while (__lo < __hi && ! __istype (*__lo, __m))
+      ++__lo;
+    return __lo;
+  }
+
+  inline const wchar_t*
+  ctype<wchar_t>::
+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+  {
+    while (__lo < __hi && __istype (*__lo, __m))
+      ++__lo;
+    return __lo;
+  }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_noninline.h
new file mode 100644
index 000000000..e8e22f628
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/os_defines.h
new file mode 100644
index 000000000..e8ce85aee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/freebsd/os_defines.h
@@ -0,0 +1,39 @@
+// Specific definitions for BSD  -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#define _GLIBCXX_USE_C99_CHECK 1
+#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
+#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1
+#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED)
+#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
+#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_base.h
new file mode 100644
index 000000000..d75cb79aa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_base.h
@@ -0,0 +1,78 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h on NetBSD.
+// Full details can be found from the CVS files at:
+//   anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
+// See www.netbsd.org for details of access.
+  
+#include <sys/param.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const unsigned char*	__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned char      	mask;
+
+#if __NetBSD_Version__ < 599004100
+    static const mask upper    	= _U;
+    static const mask lower 	= _L;
+    static const mask alpha 	= _U | _L;
+    static const mask digit 	= _N;
+    static const mask xdigit 	= _N | _X;
+    static const mask space 	= _S;
+    static const mask print 	= _P | _U | _L | _N | _B;
+    static const mask graph 	= _P | _U | _L | _N;
+    static const mask cntrl 	= _C;
+    static const mask punct 	= _P;
+    static const mask alnum 	= _U | _L | _N;
+#else
+    static const mask upper    	= _CTYPE_U;
+    static const mask lower 	= _CTYPE_L;
+    static const mask alpha 	= _CTYPE_U | _CTYPE_L;
+    static const mask digit 	= _CTYPE_N;
+    static const mask xdigit 	= _CTYPE_N | _CTYPE_X;
+    static const mask space 	= _CTYPE_S;
+    static const mask print 	= _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B;
+    static const mask graph 	= _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
+    static const mask cntrl 	= _CTYPE_C;
+    static const mask punct 	= _CTYPE_P;
+    static const mask alnum 	= _CTYPE_U | _CTYPE_L | _CTYPE_N;
+#endif
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_inline.h
new file mode 100644
index 000000000..a08d4314f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_inline.h
@@ -0,0 +1,78 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[(unsigned char)(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[*__low++];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_noninline.h
new file mode 100644
index 000000000..724523f5a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/ctype_noninline.h
@@ -0,0 +1,94 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+
+  extern "C" const u_int8_t _C_ctype_[];
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return _C_ctype_ + 1; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table())
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table())
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/os_defines.h
new file mode 100644
index 000000000..b12577d6a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/bsd/netbsd/os_defines.h
@@ -0,0 +1,33 @@
+// Specific definitions for NetBSD  -*- C++ -*-
+
+// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#define __ssize_t ssize_t
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_base.h
new file mode 100644
index 000000000..aa156f8dd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_base.h
@@ -0,0 +1,57 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2001, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    typedef unsigned short 	mask;
+    
+    // Non-standard typedefs.
+    typedef unsigned char *     __to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    static const mask space = __dj_ISSPACE;	// Whitespace
+    static const mask print = __dj_ISPRINT;	// Printing
+    static const mask cntrl = __dj_ISCNTRL;	// Control character
+    static const mask upper = __dj_ISUPPER;	// UPPERCASE
+    static const mask lower = __dj_ISLOWER;	// lowercase
+    static const mask alpha = __dj_ISALPHA;	// Alphabetic
+    static const mask digit = __dj_ISDIGIT;	// Numeric
+    static const mask punct = __dj_ISPUNCT;     // Punctuation
+    static const mask xdigit = __dj_ISXDIGIT;   // Hexadecimal numeric
+    static const mask alnum = __dj_ISALPHA | __dj_ISDIGIT;  // Alphanumeric
+    static const mask graph = __dj_ISALPHA | __dj_ISDIGIT | __dj_ISPUNCT;  // Graphical
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_inline.h
new file mode 100644
index 000000000..217bbf875
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_inline.h
@@ -0,0 +1,77 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_noninline.h
new file mode 100644
index 000000000..7b14d38b6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from DJGPP <ctype.h>
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return __dj_ctype_flags+1; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(__dj_ctype_toupper), _M_tolower(__dj_ctype_tolower),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(__dj_ctype_toupper), _M_tolower(__dj_ctype_tolower),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/error_constants.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/error_constants.h
new file mode 100644
index 000000000..4e87208d8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/error_constants.h
@@ -0,0 +1,127 @@
+// Specific definitions for DJGPP platform  -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/error_constants.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{system_error}
+ */
+
+#ifndef _GLIBCXX_ERROR_CONSTANTS
+#define _GLIBCXX_ERROR_CONSTANTS 1
+
+#include <bits/c++config.h>
+#include <cerrno>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+// Most of the commented-out error codes are socket-related and could be
+// replaced by Winsock WSA-prefixed equivalents.
+  enum class errc
+    {
+//    address_family_not_supported = 		EAFNOSUPPORT,
+//    address_in_use = 				EADDRINUSE,
+//    address_not_available = 			EADDRNOTAVAIL,
+//    already_connected = 			EISCONN,
+      argument_list_too_long = 			E2BIG,
+      argument_out_of_domain = 			EDOM,
+      bad_address = 				EFAULT,
+      bad_file_descriptor = 			EBADF,
+//    bad_message = 				EBADMSG,
+      broken_pipe = 				EPIPE,
+//    connection_aborted = 			ECONNABORTED,
+//    connection_already_in_progress = 		EALREADY,
+//    connection_refused = 			ECONNREFUSED,
+//    connection_reset = 			ECONNRESET,
+//    cross_device_link = 			EXDEV,
+//    destination_address_required = 		EDESTADDRREQ,
+      device_or_resource_busy = 		EBUSY,
+      directory_not_empty = 			ENOTEMPTY,
+      executable_format_error = 		ENOEXEC,
+      file_exists = 	       			EEXIST,
+      file_too_large = 				EFBIG,
+      filename_too_long = 			ENAMETOOLONG,
+      function_not_supported = 			ENOSYS,
+//    host_unreachable = 			EHOSTUNREACH,
+//    identifier_removed = 			EIDRM,
+      illegal_byte_sequence = 			EILSEQ,
+      inappropriate_io_control_operation = 	ENOTTY,
+      interrupted = 				EINTR,
+      invalid_argument = 			EINVAL,
+      invalid_seek = 				ESPIPE,
+      io_error = 				EIO,
+      is_a_directory = 				EISDIR,
+//    message_size = 				EMSGSIZE,
+//    network_down = 				ENETDOWN,
+//    network_reset = 				ENETRESET,
+//    network_unreachable = 			ENETUNREACH,
+//    no_buffer_space = 			ENOBUFS,
+//    no_child_process = 			ECHILD,
+//    no_link = 				ENOLINK,
+      no_lock_available = 			ENOLCK,
+//    no_message_available = 			ENODATA, 
+//    no_message = 				ENOMSG, 
+//    no_protocol_option = 			ENOPROTOOPT,
+//    no_space_on_device = 			ENOSPC,
+//    no_stream_resources = 			ENOSR,
+      no_such_device_or_address = 		ENXIO,
+      no_such_device = 				ENODEV,
+      no_such_file_or_directory = 		ENOENT,
+      no_such_process = 			ESRCH,
+      not_a_directory = 			ENOTDIR,
+//    not_a_socket = 				ENOTSOCK,
+//    not_a_stream = 				ENOSTR,
+//    not_connected = 				ENOTCONN,
+      not_enough_memory = 			ENOMEM,
+//    not_supported = 				ENOTSUP,
+//    operation_canceled = 			ECANCELED,
+//    operation_in_progress = 			EINPROGRESS,
+//    operation_not_permitted = 		EPERM,
+//    operation_not_supported = 		EOPNOTSUPP,
+//    operation_would_block = 			EWOULDBLOCK,
+//    owner_dead = 				EOWNERDEAD,
+      permission_denied = 			EACCES,
+//    protocol_error = 				EPROTO,
+//    protocol_not_supported = 			EPROTONOSUPPORT,
+      read_only_file_system = 			EROFS,
+      resource_deadlock_would_occur = 		EDEADLK,
+      resource_unavailable_try_again = 		EAGAIN,
+      result_out_of_range = 			ERANGE,
+//    state_not_recoverable = 			ENOTRECOVERABLE,
+//    stream_timeout = 				ETIME,
+//    text_file_busy = 				ETXTBSY,
+//    timed_out = 				ETIMEDOUT,
+      too_many_files_open_in_system = 		ENFILE,
+      too_many_files_open = 			EMFILE,
+      too_many_links = 				EMLINK
+ //   too_many_symbolic_link_levels = 		ELOOP,
+ //   value_too_large = 			EOVERFLOW,
+ //   wrong_protocol_type = 			EPROTOTYPE
+   };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/os_defines.h
new file mode 100644
index 000000000..a26a8cd0c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/djgpp/os_defines.h
@@ -0,0 +1,40 @@
+// Specific definitions for DJGPP  -*- C++ -*-
+
+// Copyright (C) 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// FIXME: should there be '#undef POSIX_SOURCE'?
+
+#endif
+
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_base.h
new file mode 100644
index 000000000..72aa6f2cc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_base.h
@@ -0,0 +1,59 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2003, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Default information, may not be appropriate for specific host.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned int 	mask;
+    static const mask upper    	= 1 << 0;
+    static const mask lower 	= 1 << 1;
+    static const mask alpha 	= 1 << 2;
+    static const mask digit 	= 1 << 3;
+    static const mask xdigit 	= 1 << 4;
+    static const mask space 	= 1 << 5;
+    static const mask print 	= 1 << 6;
+    static const mask graph 	= (1 << 2) | (1 << 3) | (1 << 9); // alnum|punct
+    static const mask cntrl 	= 1 << 8;
+    static const mask punct 	= 1 << 9;
+    static const mask alnum 	= (1 << 2) | (1 << 3);  // alpha|digit
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_inline.h
new file mode 100644
index 000000000..ae54f2968
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_inline.h
@@ -0,0 +1,168 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+// The following definitions are portable, but insanely slow. If one
+// cares at all about performance, then specialized ctype
+// functionality should be added for the native os in question: see
+// the config/os/bits/ctype_*.h files.
+
+// Constructing a synthetic "C" table should be seriously considered...
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { 
+    if (_M_table)
+      return _M_table[static_cast<unsigned char>(__c)] & __m;
+    else
+      {
+	bool __ret = false;
+	const size_t __bitmasksize = 15; 
+	size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0
+	for (; __bitcur <= __bitmasksize; ++__bitcur)
+	  {
+	    const mask __bit = static_cast<mask>(1 << __bitcur);
+	    if (__m & __bit)
+	      {
+		bool __testis;
+		switch (__bit)
+		  {
+		  case space:
+		    __testis = isspace(__c);
+		    break;
+		  case print:
+		    __testis = isprint(__c);
+		    break;
+		  case cntrl:
+		    __testis = iscntrl(__c);
+		    break;
+		  case upper:
+		    __testis = isupper(__c);
+		    break;
+		  case lower:
+		    __testis = islower(__c);
+		    break;
+		  case alpha:
+		    __testis = isalpha(__c);
+		    break;
+		  case digit:
+		    __testis = isdigit(__c);
+		    break;
+		  case punct:
+		    __testis = ispunct(__c);
+		    break;
+		  case xdigit:
+		    __testis = isxdigit(__c);
+		    break;
+		  case alnum:
+		    __testis = isalnum(__c);
+		    break;
+		  case graph:
+		    __testis = isgraph(__c);
+		    break;
+		  default:
+		    __testis = false;
+		    break;
+		  }
+		__ret |= __testis;
+	      }
+	  }
+	return __ret;
+      }
+  }
+   
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    if (_M_table)
+      while (__low < __high)
+	*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    else
+      {
+	// Highest bitmask in ctype_base == 10.
+	const size_t __bitmasksize = 15; 
+	for (;__low < __high; ++__vec, ++__low)
+	  {
+	    mask __m = 0;
+	    // Lowest bitmask in ctype_base == 0
+	    size_t __i = 0; 
+	    for (;__i <= __bitmasksize; ++__i)
+	      {
+		const mask __bit = static_cast<mask>(1 << __i);
+		if (this->is(__bit, *__low))
+		  __m |= __bit;
+	      }
+	    *__vec = __m;
+	  }
+      }
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+	++__low;
+    else
+      while (__low < __high && !this->is(__m, *__low))
+	++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    if (_M_table)
+      while (__low < __high
+	     && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+	++__low;
+    else
+      while (__low < __high && this->is(__m, *__low) != 0)
+	++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_noninline.h
new file mode 100644
index 000000000..30045899f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2009, 2010
+//  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table())
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/error_constants.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/error_constants.h
new file mode 100644
index 000000000..88ea56506
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/error_constants.h
@@ -0,0 +1,178 @@
+// Specific definitions for generic platforms  -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/error_constants.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{system_error}
+ */
+
+#ifndef _GLIBCXX_ERROR_CONSTANTS
+#define _GLIBCXX_ERROR_CONSTANTS 1
+
+#include <bits/c++config.h>
+#include <cerrno>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  enum class errc
+    {
+      address_family_not_supported = 		EAFNOSUPPORT,
+      address_in_use = 				EADDRINUSE,
+      address_not_available = 			EADDRNOTAVAIL,
+      already_connected = 			EISCONN,
+      argument_list_too_long = 			E2BIG,
+      argument_out_of_domain = 			EDOM,
+      bad_address = 				EFAULT,
+      bad_file_descriptor = 			EBADF,
+
+#ifdef _GLIBCXX_HAVE_EBADMSG
+      bad_message = 				EBADMSG,
+#endif
+
+      broken_pipe = 				EPIPE,
+      connection_aborted = 			ECONNABORTED,
+      connection_already_in_progress = 		EALREADY,
+      connection_refused = 			ECONNREFUSED,
+      connection_reset = 			ECONNRESET,
+      cross_device_link = 			EXDEV,
+      destination_address_required = 		EDESTADDRREQ,
+      device_or_resource_busy = 		EBUSY,
+      directory_not_empty = 			ENOTEMPTY,
+      executable_format_error = 		ENOEXEC,
+      file_exists = 	       			EEXIST,
+      file_too_large = 				EFBIG,
+      filename_too_long = 			ENAMETOOLONG,
+      function_not_supported = 			ENOSYS,
+      host_unreachable = 			EHOSTUNREACH,
+
+#ifdef _GLIBCXX_HAVE_EIDRM
+      identifier_removed = 			EIDRM,
+#endif
+
+      illegal_byte_sequence = 			EILSEQ,
+      inappropriate_io_control_operation = 	ENOTTY,
+      interrupted = 				EINTR,
+      invalid_argument = 			EINVAL,
+      invalid_seek = 				ESPIPE,
+      io_error = 				EIO,
+      is_a_directory = 				EISDIR,
+      message_size = 				EMSGSIZE,
+      network_down = 				ENETDOWN,
+      network_reset = 				ENETRESET,
+      network_unreachable = 			ENETUNREACH,
+      no_buffer_space = 			ENOBUFS,
+      no_child_process = 			ECHILD,
+
+#ifdef _GLIBCXX_HAVE_ENOLINK
+      no_link = 				ENOLINK,
+#endif
+
+      no_lock_available = 			ENOLCK,
+
+#ifdef _GLIBCXX_HAVE_ENODATA
+      no_message_available = 			ENODATA, 
+#endif
+
+      no_message = 				ENOMSG, 
+      no_protocol_option = 			ENOPROTOOPT,
+      no_space_on_device = 			ENOSPC,
+
+#ifdef _GLIBCXX_HAVE_ENOSR
+      no_stream_resources = 			ENOSR,
+#endif
+
+      no_such_device_or_address = 		ENXIO,
+      no_such_device = 				ENODEV,
+      no_such_file_or_directory = 		ENOENT,
+      no_such_process = 			ESRCH,
+      not_a_directory = 			ENOTDIR,
+      not_a_socket = 				ENOTSOCK,
+
+#ifdef _GLIBCXX_HAVE_ENOSTR
+      not_a_stream = 				ENOSTR,
+#endif
+
+      not_connected = 				ENOTCONN,
+      not_enough_memory = 			ENOMEM,
+
+#ifdef _GLIBCXX_HAVE_ENOTSUP
+      not_supported = 				ENOTSUP,
+#endif
+
+#ifdef _GLIBCXX_HAVE_ECANCELED
+      operation_canceled = 			ECANCELED,
+#endif
+
+      operation_in_progress = 			EINPROGRESS,
+      operation_not_permitted = 		EPERM,
+      operation_not_supported = 		EOPNOTSUPP,
+      operation_would_block = 			EWOULDBLOCK,
+
+#ifdef _GLIBCXX_HAVE_EOWNERDEAD
+      owner_dead = 				EOWNERDEAD,
+#endif
+
+      permission_denied = 			EACCES,
+
+#ifdef _GLIBCXX_HAVE_EPROTO
+      protocol_error = 				EPROTO,
+#endif
+
+      protocol_not_supported = 			EPROTONOSUPPORT,
+      read_only_file_system = 			EROFS,
+      resource_deadlock_would_occur = 		EDEADLK,
+      resource_unavailable_try_again = 		EAGAIN,
+      result_out_of_range = 			ERANGE,
+
+#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
+      state_not_recoverable = 			ENOTRECOVERABLE,
+#endif
+
+#ifdef _GLIBCXX_HAVE_ETIME
+      stream_timeout = 				ETIME,
+#endif
+
+#ifdef _GLIBCXX_HAVE_ETXTBSY
+      text_file_busy = 				ETXTBSY,
+#endif
+
+      timed_out = 				ETIMEDOUT,
+      too_many_files_open_in_system = 		ENFILE,
+      too_many_files_open = 			EMFILE,
+      too_many_links = 				EMLINK,
+      too_many_symbolic_link_levels = 		ELOOP,
+
+#ifdef _GLIBCXX_HAVE_EOVERFLOW
+      value_too_large = 			EOVERFLOW,
+#endif
+
+      wrong_protocol_type = 			EPROTOTYPE
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/os_defines.h
new file mode 100644
index 000000000..3199bf30b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/generic/os_defines.h
@@ -0,0 +1,36 @@
+// Specific definitions for generic platforms  -*- C++ -*-
+
+// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/arm-eabi-extra.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/arm-eabi-extra.ver
new file mode 100644
index 000000000..5c7dc19e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/arm-eabi-extra.ver
@@ -0,0 +1,18 @@
+# Appended to version file.
+
+CXXABI_ARM_1.3.3 {
+   # ARM ABI helper functions provided in libsupc++.
+   __aeabi_atexit;
+   __aeabi_vec_ctor_nocookie_nodtor;
+   __aeabi_vec_ctor_cookie_nodtor;
+   __aeabi_vec_cctor_nocookie_nodtor;
+   __aeabi_vec_new_cookie_noctor;
+   __aeabi_vec_new_nocookie;
+   __aeabi_vec_new_cookie_nodtor;
+   __aeabi_vec_new_cookie;
+   __aeabi_vec_dtor;
+   __aeabi_vec_dtor_cookie;
+   __aeabi_vec_delete;
+   __aeabi_vec_delete3;
+   __aeabi_vec_delete3_nodtor;
+};
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_base.h
new file mode 100644
index 000000000..eb2b14c58
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_base.h
@@ -0,0 +1,64 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned short 	mask;
+    static const mask upper    	= _ISupper;
+    static const mask lower 	= _ISlower;
+    static const mask alpha 	= _ISalpha;
+    static const mask digit 	= _ISdigit;
+    static const mask xdigit 	= _ISxdigit;
+    static const mask space 	= _ISspace;
+    static const mask print 	= _ISprint;
+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
+    static const mask cntrl 	= _IScntrl;
+    static const mask punct 	= _ISpunct;
+    static const mask alnum 	= _ISalpha | _ISdigit;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_inline.h
new file mode 100644
index 000000000..7e83a9e75
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_inline.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_noninline.h
new file mode 100644
index 000000000..45785d4a5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ctype_noninline.h
@@ -0,0 +1,190 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+#if _GLIBCXX_C_LOCALE_GNU
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return _S_get_c_locale()->__ctype_b; }
+#else
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  {
+    const ctype_base::mask* __ret;
+    char* __old = setlocale(LC_CTYPE, NULL);
+    char* __sav = NULL;
+    if (__builtin_strcmp(__old, "C"))
+      {
+	const size_t __len = __builtin_strlen(__old) + 1;
+	__sav = new char[__len];
+	__builtin_memcpy(__sav, __old, __len);
+	setlocale(LC_CTYPE, "C");
+      }
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    __ret = *__ctype_b_loc();
+#else
+    __ret = __ctype_b;
+#endif
+    if (__sav)
+      {
+	setlocale(LC_CTYPE, __sav);
+	delete [] __sav;
+      }
+    return __ret;
+  }
+#endif
+
+#if _GLIBCXX_C_LOCALE_GNU
+  ctype<char>::ctype(__c_locale __cloc, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_c_locale_ctype(_S_clone_c_locale(__cloc)),
+  _M_del(__table != 0 && __del),
+  _M_toupper(_M_c_locale_ctype->__ctype_toupper),
+  _M_tolower(_M_c_locale_ctype->__ctype_tolower),
+  _M_table(__table ? __table : _M_c_locale_ctype->__ctype_b),
+  _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    __builtin_memset(_M_widen, 0, sizeof(_M_widen));
+    __builtin_memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+#else
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    char* __old = setlocale(LC_CTYPE, NULL);
+    char* __sav = NULL;
+    if (__builtin_strcmp(__old, "C"))
+      {
+	const size_t __len = __builtin_strlen(__old) + 1;
+	__sav = new char[__len];
+	__builtin_memcpy(__sav, __old, __len);
+	setlocale(LC_CTYPE, "C");
+      }
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    _M_toupper = *__ctype_toupper_loc();
+    _M_tolower = *__ctype_tolower_loc();
+    _M_table = __table ? __table : *__ctype_b_loc();
+#else
+    _M_toupper = __ctype_toupper;
+    _M_tolower = __ctype_tolower;
+    _M_table = __table ? __table : __ctype_b;
+#endif
+    if (__sav)
+      {
+	setlocale(LC_CTYPE, __sav);
+	delete [] __sav;
+      }
+    __builtin_memset(_M_widen, 0, sizeof(_M_widen));
+    __builtin_memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+#endif
+
+#if _GLIBCXX_C_LOCALE_GNU
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
+  _M_del(__table != 0 && __del),
+  _M_toupper(_M_c_locale_ctype->__ctype_toupper),
+  _M_tolower(_M_c_locale_ctype->__ctype_tolower),
+  _M_table(__table ? __table : _M_c_locale_ctype->__ctype_b),
+  _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    __builtin_memset(_M_widen, 0, sizeof(_M_widen));
+    __builtin_memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+#else
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    char* __old = setlocale(LC_CTYPE, NULL);
+    char* __sav = NULL;
+    if (__builtin_strcmp(__old, "C"))
+      {
+	const size_t __len = __builtin_strlen(__old) + 1;
+	__sav = new char[__len];
+	__builtin_memcpy(__sav, __old, __len);
+	setlocale(LC_CTYPE, "C");
+      }
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+    _M_toupper = *__ctype_toupper_loc();
+    _M_tolower = *__ctype_tolower_loc();
+    _M_table = __table ? __table : *__ctype_b_loc();
+#else
+    _M_toupper = __ctype_toupper;
+    _M_tolower = __ctype_tolower;
+    _M_table = __table ? __table : __ctype_b;
+#endif
+    if (__sav)
+      {
+	setlocale(LC_CTYPE, __sav);
+	delete [] __sav;
+      }
+    __builtin_memset(_M_widen, 0, sizeof(_M_widen));
+    __builtin_memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+#endif
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ldbl-extra.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ldbl-extra.ver
new file mode 100644
index 000000000..3dd033630
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/ldbl-extra.ver
@@ -0,0 +1,32 @@
+# Appended to version file.
+
+GLIBCXX_LDBL_3.4 {
+  _ZNSt14numeric_limitsIgE*;
+  _ZNSirsERg;
+  _ZNSolsEg;
+  _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
+  _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
+  _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
+  _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
+  _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
+  *__gnu_cxx_ldbl128*;
+};
+
+# Corresponding to exports in GLIBCXX_3.4.9, not GLIBCXX_3.4.7
+GLIBCXX_LDBL_3.4.7 {
+  _ZNSi10_M_extractIgEERSiRT_;
+  _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_;
+  _ZNSo9_M_insertIgEERSoT_;
+  _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_;
+} GLIBCXX_LDBL_3.4;
+
+GLIBCXX_LDBL_3.4.10 {
+  _ZNKSt3tr14hashIgEclEg;
+  _ZNKSt4hashIgEclEg;
+} GLIBCXX_LDBL_3.4.7;
+
+CXXABI_LDBL_1.3 {
+  _ZT[IS]g;
+  _ZT[IS]Pg;
+  _ZT[IS]PKg;
+};
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/os_defines.h
new file mode 100644
index 000000000..c788cb071
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/gnu-linux/os_defines.h
@@ -0,0 +1,42 @@
+// Specific definitions for GNU/Linux  -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// This keeps isanum, et al from being propagated as macros.
+#define __NO_CTYPE 1
+
+#include <features.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_base.h
new file mode 100644
index 000000000..8e2114f1f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_base.h
@@ -0,0 +1,58 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Default information, may not be appropriate for specific host.
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned int        mask;   
+    static const mask upper     = _ISUPPER;
+    static const mask lower     = _ISLOWER;
+    static const mask alpha     = _ISALPHA;
+    static const mask digit     = _ISDIGIT;
+    static const mask xdigit    = _ISXDIGIT;
+    static const mask space     = _ISSPACE;
+    static const mask print     = _ISPRINT;
+    static const mask graph     = _ISALPHA | _ISDIGIT | _ISPUNCT;
+    static const mask cntrl     = _ISCNTRL;
+    static const mask punct     = _ISPUNCT;
+    static const mask alnum     = _ISALPHA | _ISDIGIT;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_inline.h
new file mode 100644
index 000000000..d6b8df484
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_inline.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+  
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_noninline.h
new file mode 100644
index 000000000..9d178443e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return __SB_masks; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : (const mask *) __SB_masks) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : (const mask *) __SB_masks) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/os_defines.h
new file mode 100644
index 000000000..432e11697
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/hpux/os_defines.h
@@ -0,0 +1,110 @@
+// Specific definitions for HPUX  -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2004, 2005, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// Use macro form of ctype functions to ensure __SB_masks is defined.
+#define _SB_CTYPE_MACROS 1
+
+/* HP-UX, for reasons unknown choose to use a different name for
+   the string to [unsigned] long long conversion routines.
+
+   Furthermore, instead of having the prototypes in stdlib.h like
+   everyone else, they put them into a non-standard header
+   <inttypes.h>.  Ugh.
+
+   <inttypes.h> defines a variety of things, some of which we 
+   probably do not want.  So we don't want to include it here.
+
+   Luckily we can just declare strtoll and strtoull with the
+   __asm extension which effectively renames calls at the
+   source level without namespace pollution.
+
+   Also note that the compiler defines _INCLUDE_LONGLONG for C++
+   unconditionally, which makes intmax_t and uintmax_t long long
+   types.
+
+   We also force _GLIBCXX_USE_LONG_LONG here so that we don't have
+   to bastardize configure to deal with this sillyness.  */
+
+#ifdef __cplusplus
+namespace std
+{
+  extern "C" 
+  {
+#ifndef __LP64__
+  __extension__ long long strtoll (const char *, char **, int)
+    __asm  ("__strtoll");
+  __extension__ unsigned long long strtoull (const char *, char **, int)
+    __asm  ("__strtoull");
+#else
+  __extension__ long long strtoll (const char *, char **, int)
+    __asm  ("strtol");
+  __extension__ unsigned long long strtoull (const char *, char **, int)
+    __asm  ("strtoul");
+#endif
+  }
+} // namespace std
+#endif // __cplusplus
+
+#define _GLIBCXX_USE_LONG_LONG 1
+
+// HPUX on IA64 requires vtable to be 64 bit aligned even at 32 bit
+// mode.  We need to pad the vtable structure to achieve this.  
+#if !defined(_LP64) && defined (__ia64__)
+#define _GLIBCXX_VTABLE_PADDING 8
+typedef long int __padding_type;
+#endif
+
+// GCC on IA64 HP-UX uses the HP-UX system unwind library,
+// it does not have the _Unwind_Resume_or_Rethrow entry point
+// because that is not part of the standard IA64 Unwind ABI.
+#if defined (__ia64__)
+#define _LIBUNWIND_STD_ABI 1
+#endif
+
+/* Don't use pragma weak in gthread headers.  HP-UX rejects programs
+   with unsatisfied external references even if all of those references
+   are weak; gthread relies on such unsatisfied references being resolved
+   to null pointers when weak symbol support is on.  */
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+
+// The strtold function is obsolete and not C99 conformant on PA HP-UX.
+// It returns plus or minus _LDBL_MAX instead of plus or minus HUGE_VALL
+// if the correct value would cause overflow.  It doesn't handle "inf",
+// "infinity" and "nan".  It is not thread safe. 
+#if defined (__hppa__)
+#define _GLIBCXX_HAVE_BROKEN_STRTOLD 1
+#endif
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomic_word.h
new file mode 100644
index 000000000..891580042
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomic_word.h
@@ -0,0 +1,35 @@
+// Low-level type for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/atomic_word.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/atomicity.h}
+ */
+
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H	1
+
+typedef long _Atomic_word;
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomicity.h
new file mode 100644
index 000000000..0160a1616
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/atomicity.h
@@ -0,0 +1,41 @@
+// Low-level functions for atomic operations: IRIX version  -*- C++ -*-
+
+// Copyright (C) 2001, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <mutex.h>
+#include <ext/atomicity.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Atomic_word
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { return (_Atomic_word) test_then_add((unsigned long*) const_cast<_Atomic_word*>(__mem), __val); }
+
+  void
+  __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
+  { __exchange_and_add(__mem, __val); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_base.h
new file mode 100644
index 000000000..32a8716bc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_base.h
@@ -0,0 +1,64 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2003, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h on irix 6.5
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned int 	mask;
+    static const mask upper    	= _ISupper;
+    static const mask lower 	= _ISlower;
+    static const mask alpha 	= _ISalpha;
+    static const mask digit 	= _ISdigit;
+    static const mask xdigit 	= _ISxdigit;
+    static const mask space 	= _ISspace;
+    static const mask print 	= _ISprint;
+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
+    static const mask cntrl 	= _IScntrl;
+    static const mask punct 	= _ISpunct;
+    static const mask alnum 	= _ISalpha | _ISdigit;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_inline.h
new file mode 100644
index 000000000..f08eea812
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_inline.h
@@ -0,0 +1,74 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return (_M_table)[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = (_M_table)[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && ! this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_noninline.h
new file mode 100644
index 000000000..3f7af67e8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/ctype_noninline.h
@@ -0,0 +1,94 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(!__table ?
+	   (const mask*) (__libc_attr._ctype_tbl->_class + 1) : __table)
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(!__table ?
+	   (const mask*) (__libc_attr._ctype_tbl->_class + 1) : __table)
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _toupper(__c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = do_toupper(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _tolower(__c); }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = do_tolower(*__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/os_defines.h
new file mode 100644
index 000000000..0e75e70c1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/irix/irix6.5/os_defines.h
@@ -0,0 +1,54 @@
+// Specific definitions for IRIX  -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// We need large file support.  There are two ways to turn it on: by
+// defining either _LARGEFILE64_SOURCE or _SGI_SOURCE.  However, it
+// does not actually work to define only the former, as then
+// <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, but
+// then used as a field name.  So, we have to turn on _SGI_SOURCE.
+// That only works if _POSIX_SOURCE is turned off, so we have to
+// explicitly turn it off.  (Some of the libio C files explicitly try
+// to turn it on.)  _SGI_SOURCE is actually turned on implicitly via
+// the command-line.
+#undef _POSIX_SOURCE
+
+// GCC does not use thunks on IRIX. 
+#define _G_USING_THUNKS 0
+
+// FINOREAD takes an "off_t *" as argument.
+#define _GLIBCXX_FIONREAD_TAKES_OFF_T
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_base.h
new file mode 100644
index 000000000..5fbdff8e7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_base.h
@@ -0,0 +1,64 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+//  We don't use the C-locale masks defined in mingw/include/ctype.h
+//  because those masks do not conform to the requirements of 22.2.1.
+//  In particular, a separate 'print' bitmask does not exist (isprint(c)
+//  relies on a combination of flags) and the  '_ALPHA' mask is also a
+//  combination of simple bitmasks.  Thus, we define libstdc++-specific
+//  masks here, based on the generic masks, and the corresponding
+//  classic_table in ctype_noninline.h.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned short 	mask;   
+    static const mask upper	= 1 << 0;
+    static const mask lower	= 1 << 1;
+    static const mask alpha	= 1 << 2;
+    static const mask digit	= 1 << 3;
+    static const mask xdigit	= 1 << 4;
+    static const mask space	= 1 << 5;
+    static const mask print	= 1 << 6;
+    static const mask graph	= (1 << 2) | (1 << 3) | (1 << 9);  // alnum|punct
+    static const mask cntrl	= 1 << 8;
+    static const mask punct 	= 1 << 9;
+    static const mask alnum	= (1 << 2) | (1 << 3);  // alpha|digit
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_inline.h
new file mode 100644
index 000000000..f1b9f6c66
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_inline.h
@@ -0,0 +1,75 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return (_M_table[static_cast<unsigned char>(__c) ] & __m); }
+
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_noninline.h
new file mode 100644
index 000000000..10b1fbc49
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/ctype_noninline.h
@@ -0,0 +1,236 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// The classic table used in libstdc++ is *not* the C _ctype table
+// used by mscvrt, but is based on the ctype masks defined for libstdc++
+// in ctype_base.h.
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  {
+    static const ctype_base::mask _S_classic_table[256] =
+    {
+      cntrl /* null */,
+      cntrl /* ^A */,
+      cntrl /* ^B */,
+      cntrl /* ^C */,
+      cntrl /* ^D */,
+      cntrl /* ^E */,
+      cntrl /* ^F */,
+      cntrl /* ^G */,
+      cntrl /* ^H */,
+      ctype_base::mask(space | cntrl) /* tab */,
+      ctype_base::mask(space | cntrl) /* LF */,
+      ctype_base::mask(space | cntrl) /* ^K */,
+      ctype_base::mask(space | cntrl) /* FF */,
+      ctype_base::mask(space | cntrl) /* ^M */,
+      cntrl /* ^N */,
+      cntrl /* ^O */,
+      cntrl /* ^P */,
+      cntrl /* ^Q */,
+      cntrl /* ^R */,
+      cntrl /* ^S */,
+      cntrl /* ^T */,
+      cntrl /* ^U */,
+      cntrl /* ^V */,
+      cntrl /* ^W */,
+      cntrl /* ^X */,
+      cntrl /* ^Y */,
+      cntrl /* ^Z */,
+      cntrl /* esc */,
+      cntrl /* ^\ */,
+      cntrl /* ^] */,
+      cntrl /* ^^ */,
+      cntrl /* ^_ */,
+      ctype_base::mask(space | print) /*   */,
+      ctype_base::mask(punct | print) /* ! */,
+      ctype_base::mask(punct | print) /* " */,
+      ctype_base::mask(punct | print) /* # */,
+      ctype_base::mask(punct | print) /* $ */,
+      ctype_base::mask(punct | print) /* % */,
+      ctype_base::mask(punct | print) /* & */,
+      ctype_base::mask(punct | print) /* ' */,
+      ctype_base::mask(punct | print) /* ( */,
+      ctype_base::mask(punct | print) /* ) */,
+      ctype_base::mask(punct | print) /* * */,
+      ctype_base::mask(punct | print) /* + */,
+      ctype_base::mask(punct | print) /* , */,
+      ctype_base::mask(punct | print) /* - */,
+      ctype_base::mask(punct | print) /* . */,
+      ctype_base::mask(punct | print) /* / */,
+      ctype_base::mask(digit | xdigit | print) /* 0 */,
+      ctype_base::mask(digit | xdigit | print) /* 1 */,
+      ctype_base::mask(digit | xdigit | print) /* 2 */,
+      ctype_base::mask(digit | xdigit | print) /* 3 */,
+      ctype_base::mask(digit | xdigit | print) /* 4 */,
+      ctype_base::mask(digit | xdigit | print) /* 5 */,
+      ctype_base::mask(digit | xdigit | print) /* 6 */,
+      ctype_base::mask(digit | xdigit | print) /* 7 */,
+      ctype_base::mask(digit | xdigit | print) /* 8 */,
+      ctype_base::mask(digit | xdigit | print) /* 9 */,
+      ctype_base::mask(punct | print) /* : */,
+      ctype_base::mask(punct | print) /* ; */,
+      ctype_base::mask(punct | print) /* < */,
+      ctype_base::mask(punct | print) /* = */,
+      ctype_base::mask(punct | print) /* > */,
+      ctype_base::mask(punct | print) /* ? */,
+      ctype_base::mask(punct | print) /* ! */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* A */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* B */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* C */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* D */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* E */,
+      ctype_base::mask(alpha | upper | xdigit | print) /* F */,
+      ctype_base::mask(alpha | upper | print) /* G */,
+      ctype_base::mask(alpha | upper | print) /* H */,
+      ctype_base::mask(alpha | upper | print) /* I */,
+      ctype_base::mask(alpha | upper | print) /* J */,
+      ctype_base::mask(alpha | upper | print) /* K */,
+      ctype_base::mask(alpha | upper | print) /* L */,
+      ctype_base::mask(alpha | upper | print) /* M */,
+      ctype_base::mask(alpha | upper | print) /* N */,
+      ctype_base::mask(alpha | upper | print) /* O */,
+      ctype_base::mask(alpha | upper | print) /* P */,
+      ctype_base::mask(alpha | upper | print) /* Q */,
+      ctype_base::mask(alpha | upper | print) /* R */,
+      ctype_base::mask(alpha | upper | print) /* S */,
+      ctype_base::mask(alpha | upper | print) /* T */,
+      ctype_base::mask(alpha | upper | print) /* U */,
+      ctype_base::mask(alpha | upper | print) /* V */,
+      ctype_base::mask(alpha | upper | print) /* W */,
+      ctype_base::mask(alpha | upper | print) /* X */,
+      ctype_base::mask(alpha | upper | print) /* Y */,
+      ctype_base::mask(alpha | upper | print) /* Z */,
+      ctype_base::mask(punct | print) /* [ */,
+      ctype_base::mask(punct | print) /* \ */,
+      ctype_base::mask(punct | print) /* ] */,
+      ctype_base::mask(punct | print) /* ^ */,
+      ctype_base::mask(punct | print) /* _ */,
+      ctype_base::mask(punct | print) /* ` */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* a */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* b */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* c */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* d */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* e */,
+      ctype_base::mask(alpha | lower | xdigit | print) /* f */,
+      ctype_base::mask(alpha | lower | print) /* g */,
+      ctype_base::mask(alpha | lower | print) /* h */,
+      ctype_base::mask(alpha | lower | print) /* i */,
+      ctype_base::mask(alpha | lower | print) /* j */,
+      ctype_base::mask(alpha | lower | print) /* k */,
+      ctype_base::mask(alpha | lower | print) /* l */,
+      ctype_base::mask(alpha | lower | print) /* m */,
+      ctype_base::mask(alpha | lower | print) /* n */,
+      ctype_base::mask(alpha | lower | print) /* o */,
+      ctype_base::mask(alpha | lower | print) /* p */,
+      ctype_base::mask(alpha | lower | print) /* q */,
+      ctype_base::mask(alpha | lower | print) /* r */,
+      ctype_base::mask(alpha | lower | print) /* s */,
+      ctype_base::mask(alpha | lower | print) /* t */,
+      ctype_base::mask(alpha | lower | print) /* u */,
+      ctype_base::mask(alpha | lower | print) /* v */,
+      ctype_base::mask(alpha | lower | print) /* w */,
+      ctype_base::mask(alpha | lower | print) /* x */,
+      ctype_base::mask(alpha | lower | print) /* y */,
+      ctype_base::mask(alpha | lower | print) /* x */,
+      ctype_base::mask(punct | print) /* { */,
+      ctype_base::mask(punct | print) /* | */,
+      ctype_base::mask(punct | print) /* } */,
+      ctype_base::mask(punct | print) /* ~ */,
+      cntrl /* del (0x7f)*/,
+      /* The next 128 entries are all 0.   */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    };
+    return _S_classic_table;
+  }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return (this->is(ctype_base::lower, __c) ? (__c - 'a' + 'A') : __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_toupper(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return (this->is(ctype_base::upper, __c) ? (__c - 'A' + 'a') : __c); }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_tolower(*__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/error_constants.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/error_constants.h
new file mode 100644
index 000000000..f2a9116ba
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/error_constants.h
@@ -0,0 +1,128 @@
+// Specific definitions for mingw32 platform  -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/error_constants.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{system_error}
+ */
+
+#ifndef _GLIBCXX_ERROR_CONSTANTS
+#  define _GLIBCXX_ERROR_CONSTANTS
+
+#include <bits/c++config.h>
+#include <cerrno>
+
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+// Most of the commented-out error codes are socket-related and could be
+// replaced by Winsock WSA-prefixed equivalents.
+  enum class errc
+    {
+//    address_family_not_supported = 		EAFNOSUPPORT,
+//    address_in_use = 				EADDRINUSE,
+//    address_not_available = 			EADDRNOTAVAIL,
+//    already_connected = 			EISCONN,
+      argument_list_too_long = 			E2BIG,
+      argument_out_of_domain = 			EDOM,
+      bad_address = 				EFAULT,
+      bad_file_descriptor = 			EBADF,
+//    bad_message = 				EBADMSG,
+      broken_pipe = 				EPIPE,
+//    connection_aborted = 			ECONNABORTED,
+//    connection_already_in_progress = 		EALREADY,
+//    connection_refused = 			ECONNREFUSED,
+//    connection_reset = 			ECONNRESET,
+//    cross_device_link = 			EXDEV,
+//    destination_address_required = 		EDESTADDRREQ,
+      device_or_resource_busy = 		EBUSY,
+      directory_not_empty = 			ENOTEMPTY,
+      executable_format_error = 		ENOEXEC,
+      file_exists = 	       			EEXIST,
+      file_too_large = 				EFBIG,
+      filename_too_long = 			ENAMETOOLONG,
+      function_not_supported = 			ENOSYS,
+//    host_unreachable = 			EHOSTUNREACH,
+//    identifier_removed = 			EIDRM,
+      illegal_byte_sequence = 			EILSEQ,
+      inappropriate_io_control_operation = 	ENOTTY,
+      interrupted = 				EINTR,
+      invalid_argument = 			EINVAL,
+      invalid_seek = 				ESPIPE,
+      io_error = 				EIO,
+      is_a_directory = 				EISDIR,
+//    message_size = 				EMSGSIZE,
+//    network_down = 				ENETDOWN,
+//    network_reset = 				ENETRESET,
+//    network_unreachable = 			ENETUNREACH,
+//    no_buffer_space = 			ENOBUFS,
+//    no_child_process = 			ECHILD,
+//    no_link = 				ENOLINK,
+      no_lock_available = 			ENOLCK,
+//    no_message_available = 			ENODATA,
+//    no_message = 				ENOMSG,
+//    no_protocol_option = 			ENOPROTOOPT,
+//    no_space_on_device = 			ENOSPC,
+//    no_stream_resources = 			ENOSR,
+      no_such_device_or_address = 		ENXIO,
+      no_such_device = 				ENODEV,
+      no_such_file_or_directory = 		ENOENT,
+      no_such_process = 			ESRCH,
+      not_a_directory = 			ENOTDIR,
+//    not_a_socket = 				ENOTSOCK,
+//    not_a_stream = 				ENOSTR,
+//    not_connected = 				ENOTCONN,
+      not_enough_memory = 			ENOMEM,
+//    not_supported = 				ENOTSUP,
+//    operation_canceled = 			ECANCELED,
+//    operation_in_progress = 			EINPROGRESS,
+//    operation_not_permitted = 		EPERM,
+//    operation_not_supported = 		EOPNOTSUPP,
+//    operation_would_block = 			EWOULDBLOCK,
+//    owner_dead = 				EOWNERDEAD,
+      permission_denied = 			EACCES,
+//    protocol_error = 				EPROTO,
+//    protocol_not_supported = 			EPROTONOSUPPORT,
+      read_only_file_system = 			EROFS,
+      resource_deadlock_would_occur = 		EDEADLK,
+      resource_unavailable_try_again = 		EAGAIN,
+      result_out_of_range = 			ERANGE,
+//    state_not_recoverable = 			ENOTRECOVERABLE,
+//    stream_timeout = 				ETIME,
+//    text_file_busy = 				ETXTBSY,
+//    timed_out = 				ETIMEDOUT,
+      too_many_files_open_in_system = 		ENFILE,
+      too_many_files_open = 			EMFILE,
+      too_many_links = 				EMLINK
+ //   too_many_symbolic_link_levels = 		ELOOP,
+ //   value_too_large = 			EOVERFLOW,
+ //   wrong_protocol_type = 			EPROTOTYPE
+   };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/os_defines.h
new file mode 100644
index 000000000..c483a92e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/mingw32/os_defines.h
@@ -0,0 +1,68 @@
+// Specific definitions for generic platforms  -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#  define _GLIBCXX_OS_DEFINES
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+//  Define as 0, if you want, to enable inlining of gthread functions.
+//  By default, don't pollute libstdc++ with win32api names.
+#if !defined (__GTHREAD_HIDE_WIN32API)
+# define __GTHREAD_HIDE_WIN32API 1
+#endif
+
+// Don't let win32api windef.h define min and max as macros
+// if included after c++config.h.
+#undef NOMINMAX
+#define NOMINMAX 1
+
+#if defined (_GLIBCXX_DLL)
+#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__))
+#else
+#define _GLIBCXX_PSEUDO_VISIBILITY_default
+#endif
+#define _GLIBCXX_PSEUDO_VISIBILITY_hidden
+
+#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V
+
+// See libstdc++/20806.
+#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
+
+// See  libstdc++/37522.
+#define _GLIBCXX_HAVE_BROKEN_VSWPRINTF 1
+
+// See libstdc++/43738
+// On native windows targets there is no ioctl function. And the existing
+// ioctlsocket function doesn't work for normal file-descriptors.
+#define _GLIBCXX_NO_IOCTL 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_base.h
new file mode 100644
index 000000000..4dd150292
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_base.h
@@ -0,0 +1,60 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
+
+// Support for Solaris 2.5.1
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef char 		mask;
+    static const mask upper    	= _U;
+    static const mask lower 	= _L;
+    static const mask alpha 	= _U | _L;
+    static const mask digit 	= _N;
+    static const mask xdigit 	= _X | _N;
+    static const mask space 	= _S;
+    static const mask print 	= _P | _U | _L | _N | _B;
+    static const mask graph 	= _P | _U | _L | _N;
+    static const mask cntrl 	= _C;
+    static const mask punct 	= _P;
+    static const mask alnum 	= _U | _L | _N;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_inline.h
new file mode 100644
index 000000000..18726dbbd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_inline.h
@@ -0,0 +1,74 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_noninline.h
new file mode 100644
index 000000000..947bce589
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/ctype_noninline.h
@@ -0,0 +1,97 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return _ctype_ + 1; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del),
+  _M_toupper(NULL), _M_tolower(NULL),
+  _M_table(__table ? __table : classic_table())
+  {
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  {
+    int __x = __c;
+    return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
+  }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_toupper(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  {
+    int __x = __c;
+    return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
+  }
+
+  const char*
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = this->do_tolower(*__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/os_defines.h
new file mode 100644
index 000000000..e5a19d958
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/newlib/os_defines.h
@@ -0,0 +1,52 @@
+// Specific definitions for newlib  -*- C++ -*-
+
+// Copyright (C) 2000, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#ifdef __CYGWIN__
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+
+#if defined (_GLIBCXX_DLL)
+#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__))
+#else
+#define _GLIBCXX_PSEUDO_VISIBILITY_default
+#endif
+#define _GLIBCXX_PSEUDO_VISIBILITY_hidden
+
+#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V
+
+// See libstdc++/20806.
+#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_base.h
new file mode 100644
index 000000000..36aa07343
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_base.h
@@ -0,0 +1,63 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const unsigned char*	__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef short		mask;
+    static const mask upper    	= _UP;
+    static const mask lower 	= _LO;
+    static const mask alpha 	= _LO | _UP | _XA;
+    static const mask digit 	= _DI;
+    static const mask xdigit 	= _XD;
+    static const mask space 	= _CN | _SP | _XS;
+    static const mask print 	= _DI | _LO | _PU | _SP | _UP | _XA;
+    static const mask graph 	= _DI | _LO | _PU | _UP | _XA;
+    static const mask cntrl 	= _BB;
+    static const mask punct 	= _PU;
+    static const mask alnum 	= _DI | _LO | _UP | _XA;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_inline.h
new file mode 100644
index 000000000..b38bc827c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_inline.h
@@ -0,0 +1,74 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[(unsigned char)(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[*__low++];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && !this->is(__m, *__low))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high && this->is(__m, *__low) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_noninline.h
new file mode 100644
index 000000000..b74e07059
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/ctype_noninline.h
@@ -0,0 +1,89 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return 0; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), _M_table(__table ? __table : _Ctype)
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), _M_table(__table ? __table : _Ctype)
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return ::toupper((int) __c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::toupper((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return ::tolower((int) __c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = ::tolower((int) *__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/os_defines.h
new file mode 100644
index 000000000..d813b01fe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/qnx/qnx6.1/os_defines.h
@@ -0,0 +1,31 @@
+// Specific definitions for QNX 6.1  -*- C++ -*-
+
+// Copyright (C) 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_base.h
new file mode 100644
index 000000000..1ae3874a6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_base.h
@@ -0,0 +1,60 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h. Looks like this
+// only works with solaris2.7 and solaris2.8. Thanks for not changing
+// things, sun engineers!
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned int 	mask;   
+    static const mask upper    	= _ISUPPER;
+    static const mask lower 	= _ISLOWER;
+    static const mask alpha 	= _ISALPHA;
+    static const mask digit 	= _ISDIGIT;
+    static const mask xdigit 	= _ISXDIGIT;
+    static const mask space 	= _ISSPACE;
+    static const mask print 	= _ISPRINT;
+    static const mask graph 	= _ISALPHA | _ISDIGIT | _ISPUNCT;
+    static const mask cntrl 	= _ISCNTRL;
+    static const mask punct 	= _ISPUNCT;
+    static const mask alnum 	= _ISALPHA | _ISDIGIT;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_inline.h
new file mode 100644
index 000000000..d6b8df484
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_inline.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+  
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_noninline.h
new file mode 100644
index 000000000..4713c8726
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+  const ctype_base::mask* 
+  ctype<char>::classic_table() throw()
+  { return __ctype_mask; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(__trans_upper), _M_tolower(__trans_lower),
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(__trans_upper), _M_tolower(__trans_lower),
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/os_defines.h
new file mode 100644
index 000000000..2b7ba1840
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/solaris/solaris2.7/os_defines.h
@@ -0,0 +1,32 @@
+// Specific definitions for Solaris 7,8  -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_base.h
new file mode 100644
index 000000000..1c1d37ebc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_base.h
@@ -0,0 +1,58 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const int* 		__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned short 	mask;   
+    static const mask upper    	= _ISupper;
+    static const mask lower 	= _ISlower;
+    static const mask alpha 	= _ISalpha;
+    static const mask digit 	= _ISdigit;
+    static const mask xdigit 	= _ISxdigit;
+    static const mask space 	= _ISspace;
+    static const mask print 	= _ISprint;
+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
+    static const mask cntrl 	= _IScntrl;
+    static const mask punct 	= _ISpunct;
+    static const mask alnum 	= _ISalpha | _ISdigit;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_inline.h
new file mode 100644
index 000000000..1785f8cd9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_inline.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_noninline.h
new file mode 100644
index 000000000..251270344
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/ctype_noninline.h
@@ -0,0 +1,113 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  {
+    const ctype_base::mask* __ret;
+    char* __old = setlocale(LC_CTYPE, NULL);
+    const size_t __len = __builtin_strlen(__old) + 1;
+    char* __sav = new char[__len];
+    __builtin_memcpy(__sav, __old, __len);
+    setlocale(LC_CTYPE, "C");
+    __ret = *__ctype_b_loc();
+    setlocale(LC_CTYPE, __sav);
+    delete [] __sav;
+    return __ret;
+  }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del)
+  {
+    char* __old = setlocale(LC_CTYPE, NULL);
+    const size_t __len = __builtin_strlen(__old) + 1;
+    char* __sav = new char[__len];
+    __builtin_memcpy(__sav, __old, __len);
+    setlocale(LC_CTYPE, "C");
+    _M_toupper = *__ctype_toupper_loc();
+    _M_tolower = *__ctype_tolower_loc();
+    _M_table = __table ? __table : *__ctype_b_loc();
+    setlocale(LC_CTYPE, __sav);
+    delete [] __sav;
+    _M_c_locale_ctype = _S_get_c_locale();
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_del(__table != 0 && __del)
+  {
+    char* __old = setlocale(LC_CTYPE, NULL);
+    const size_t __len = __builtin_strlen(__old) + 1;
+    char* __sav = new char[__len];
+    __builtin_memcpy(__sav, __old, __len);
+    setlocale(LC_CTYPE, "C");
+    _M_toupper = *__ctype_toupper_loc();
+    _M_tolower = *__ctype_tolower_loc();
+    _M_table = __table ? __table : *__ctype_b_loc();
+    setlocale(LC_CTYPE, __sav);
+    delete [] __sav;
+    _M_c_locale_ctype = _S_get_c_locale();
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/os_defines.h
new file mode 100644
index 000000000..a0582dbbf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/tpf/os_defines.h
@@ -0,0 +1,45 @@
+// Specific definitions for TPF  -*- C++ -*-
+
+// Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// TPF is a big endian OS, let it be known here.
+#define _BIG_ENDIAN 1
+
+// This keeps isanum, et al from being propagated as macros.
+#define __NO_CTYPE 1
+
+// We must not see the optimized string functions GNU libc defines.
+#define __NO_STRING_INLINES
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_base.h
new file mode 100644
index 000000000..d6a742b73
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_base.h
@@ -0,0 +1,66 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Note: In uClibc, the following two types depend on configuration.
+
+    // Non-standard typedefs.
+    typedef const __ctype_touplow_t* __to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef __ctype_mask_t	mask;
+    static const mask upper    	= _ISupper;
+    static const mask lower 	= _ISlower;
+    static const mask alpha 	= _ISalpha;
+    static const mask digit 	= _ISdigit;
+    static const mask xdigit 	= _ISxdigit;
+    static const mask space 	= _ISspace;
+    static const mask print 	= _ISprint;
+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
+    static const mask cntrl 	= _IScntrl;
+    static const mask punct 	= _ISpunct;
+    static const mask alnum 	= _ISalpha | _ISdigit;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_inline.h
new file mode 100644
index 000000000..0f6406960
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_inline.h
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_noninline.h
new file mode 100644
index 000000000..389e76eb8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from /usr/include/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return __C_ctype_b; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    _M_toupper = __C_ctype_toupper;
+    _M_tolower = __C_ctype_tolower;
+    _M_table = __table ? __table : __C_ctype_b;
+    memset(_M_widen, 0, sizeof(_M_widen));
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
+  {
+    _M_toupper = __C_ctype_toupper;
+    _M_tolower = __C_ctype_tolower;
+    _M_table = __table ? __table : __C_ctype_b;
+    memset(_M_widen, 0, sizeof(_M_widen));
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/os_defines.h
new file mode 100644
index 000000000..95cb61f29
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/uclibc/os_defines.h
@@ -0,0 +1,45 @@
+// Specific definitions for GNU/Linux with uClibc  -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+// This keeps isanum, et al from being propagated as macros.
+#define __NO_CTYPE 1
+
+#include <features.h>
+
+// We must not see the optimized string functions GNU libc defines.
+#define __NO_STRING_INLINES
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_base.h
new file mode 100644
index 000000000..f1f92ae43
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_base.h
@@ -0,0 +1,59 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information extracted from target/h/ctype.h.
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// @brief  Base class for ctype.
+  struct ctype_base
+  {
+    // Non-standard typedefs.
+    typedef const unsigned char* 	__to_type;
+
+    // NB: Offsets into ctype<char>::_M_table force a particular size
+    // on the mask type. Because of this, we don't use an enum.
+    typedef unsigned char 	mask;   
+    static const mask upper    	= _C_UPPER;
+    static const mask lower 	= _C_LOWER;
+    static const mask alpha 	= _C_UPPER | _C_LOWER;
+    static const mask digit 	= _C_NUMBER;
+    static const mask xdigit 	= _C_HEX_NUMBER;
+    static const mask space 	= _C_WHITE_SPACE | _C_CONTROL;
+    static const mask print 	= (_C_UPPER | _C_LOWER | _C_NUMBER
+				   | _C_WHITE_SPACE | _C_PUNCT);
+    static const mask graph 	= _C_UPPER | _C_LOWER | _C_NUMBER | _C_PUNCT;
+    static const mask cntrl 	= _C_CONTROL;
+    static const mask punct 	= _C_PUNCT;
+    static const mask alnum 	= _C_UPPER | _C_LOWER | _C_NUMBER;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_inline.h
new file mode 100644
index 000000000..49092083c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_inline.h
@@ -0,0 +1,78 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_inline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+  
+// Information as gleaned from target/h/ctype.h
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  { return __ctype[static_cast<unsigned char>(__c)] & __m; }
+
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const
+  {
+    while (__low < __high)
+      *__vec++ = __ctype[static_cast<unsigned char>(*__low++)];
+    return __high;
+  }
+
+  const char*
+  ctype<char>::
+  scan_is(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high 
+	   && !(__ctype[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+  const char*
+  ctype<char>::
+  scan_not(mask __m, const char* __low, const char* __high) const
+  {
+    while (__low < __high
+	   && (__ctype[static_cast<unsigned char>(*__low)] & __m))
+      ++__low;
+    return __low;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_noninline.h
new file mode 100644
index 000000000..23521b76d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/ctype_noninline.h
@@ -0,0 +1,92 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ctype_noninline.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+// Information as gleaned from target/h/ctype.h
+
+  const ctype_base::mask*
+  ctype<char>::classic_table() throw()
+  { return __ctype; }
+
+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+		     size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table()) 
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
+  : facet(__refs), _M_del(__table != 0 && __del), 
+  _M_toupper(NULL), _M_tolower(NULL), 
+  _M_table(__table ? __table : classic_table())
+  { 
+    memset(_M_widen, 0, sizeof(_M_widen));
+    _M_widen_ok = 0;
+    memset(_M_narrow, 0, sizeof(_M_narrow));
+    _M_narrow_ok = 0;
+  }
+
+  char
+  ctype<char>::do_toupper(char __c) const
+  { return __toupper(__c); }
+
+  const char*
+  ctype<char>::do_toupper(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = __toupper(*__low);
+	++__low;
+      }
+    return __high;
+  }
+
+  char
+  ctype<char>::do_tolower(char __c) const
+  { return __tolower(__c); }
+
+  const char* 
+  ctype<char>::do_tolower(char* __low, const char* __high) const
+  {
+    while (__low < __high)
+      {
+	*__low = __tolower(*__low);
+	++__low;
+      }
+    return __high;
+  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/os_defines.h
new file mode 100644
index 000000000..c66063e53
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/config/os/vxworks/os_defines.h
@@ -0,0 +1,36 @@
+// Specific definitions for VxWorks  -*- C++ -*-
+
+// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/os_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure
new file mode 100755
index 000000000..c321e762c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure
@@ -0,0 +1,68815 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.64 for package-unused version-unused.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+# Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='package-unused'
+PACKAGE_TARNAME='libstdc++'
+PACKAGE_VERSION='version-unused'
+PACKAGE_STRING='package-unused version-unused'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="src/ios.cc"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+LIBSUPCXX_PICFLAGS
+WARN_FLAGS
+OPTIMIZE_CXXFLAGS
+TOPLEVEL_INCLUDES
+GLIBCXX_INCLUDES
+glibcxx_toolexeclibdir
+glibcxx_toolexecdir
+gxx_include_dir
+glibcxx_prefixdir
+ERROR_CONSTANTS_SRCDIR
+OS_INC_SRCDIR
+ABI_TWEAKS_SRCDIR
+CPU_DEFINES_SRCDIR
+ATOMIC_FLAGS
+ATOMIC_WORD_SRCDIR
+ATOMICITY_SRCDIR
+BUILD_EPUB_FALSE
+BUILD_EPUB_TRUE
+DBTOEPUB
+RUBY
+BUILD_PDF_FALSE
+BUILD_PDF_TRUE
+PDFLATEX
+DBLATEX
+BUILD_MAN_FALSE
+BUILD_MAN_TRUE
+BUILD_HTML_FALSE
+BUILD_HTML_TRUE
+BUILD_XML_FALSE
+BUILD_XML_TRUE
+XSL_STYLE_DIR
+XMLLINT
+XSLTPROC
+DOT
+DOXYGEN
+BUILD_INFO_FALSE
+BUILD_INFO_TRUE
+baseline_dir
+GLIBCXX_LDBL_COMPAT_FALSE
+GLIBCXX_LDBL_COMPAT_TRUE
+ENABLE_VISIBILITY_FALSE
+ENABLE_VISIBILITY_TRUE
+ENABLE_SYMVERS_SOL2_FALSE
+ENABLE_SYMVERS_SOL2_TRUE
+ENABLE_SYMVERS_SUN_FALSE
+ENABLE_SYMVERS_SUN_TRUE
+ENABLE_SYMVERS_DARWIN_FALSE
+ENABLE_SYMVERS_DARWIN_TRUE
+ENABLE_SYMVERS_GNU_NAMESPACE_FALSE
+ENABLE_SYMVERS_GNU_NAMESPACE_TRUE
+ENABLE_SYMVERS_GNU_FALSE
+ENABLE_SYMVERS_GNU_TRUE
+ENABLE_SYMVERS_FALSE
+ENABLE_SYMVERS_TRUE
+port_specific_symbol_files
+SYMVER_FILE
+CXXFILT
+LTLIBICONV
+LIBICONV
+OPT_LDFLAGS
+SECTION_LDFLAGS
+GLIBCXX_LIBS
+ENABLE_EXTERN_TEMPLATE_FALSE
+ENABLE_EXTERN_TEMPLATE_TRUE
+EXTRA_CXX_FLAGS
+ENABLE_PARALLEL_FALSE
+ENABLE_PARALLEL_TRUE
+GLIBCXX_BUILD_DEBUG_FALSE
+GLIBCXX_BUILD_DEBUG_TRUE
+DEBUG_FLAGS
+GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE
+GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE
+GLIBCXX_C_HEADERS_C_GLOBAL_FALSE
+GLIBCXX_C_HEADERS_C_GLOBAL_TRUE
+GLIBCXX_C_HEADERS_C_STD_FALSE
+GLIBCXX_C_HEADERS_C_STD_TRUE
+GLIBCXX_C_HEADERS_C_FALSE
+GLIBCXX_C_HEADERS_C_TRUE
+C_INCLUDE_DIR
+ALLOCATOR_NAME
+ALLOCATOR_H
+CLOCALE_INTERNAL_H
+CLOCALE_CC
+CTIME_CC
+CTIME_H
+CNUMERIC_CC
+CMONEY_CC
+CMESSAGES_CC
+CCTYPE_CC
+CCOLLATE_CC
+CCODECVT_CC
+CMESSAGES_H
+CLOCALE_H
+USE_NLS
+glibcxx_localedir
+glibcxx_POFILES
+glibcxx_MOFILES
+check_msgfmt
+BASIC_FILE_CC
+BASIC_FILE_H
+CSTDIO_H
+SECTION_FLAGS
+WERROR
+glibcxx_thread_h
+glibcxx_PCHFLAGS
+GLIBCXX_BUILD_PCH_FALSE
+GLIBCXX_BUILD_PCH_TRUE
+GLIBCXX_HOSTED_FALSE
+GLIBCXX_HOSTED_TRUE
+enable_static
+enable_shared
+lt_host_flags
+CXXCPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+OBJDUMP
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+EGREP
+GREP
+CPP
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+RANLIB
+AR
+AS
+LN_S
+toplevel_srcdir
+glibcxx_srcdir
+glibcxx_builddir
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+multi_basedir
+libtool_VERSION
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_multilib
+with_target_subdir
+with_cross_host
+with_newlib
+enable_maintainer_mode
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_hosted_libstdcxx
+enable_sjlj_exceptions
+enable_libstdcxx_pch
+enable_cstdio
+enable_clocale
+enable_nls
+enable_libstdcxx_allocator
+enable_cheaders
+enable_long_long
+enable_wchar_t
+enable_c99
+enable_concept_checks
+enable_libstdcxx_debug_flags
+enable_libstdcxx_debug
+enable_cxx_flags
+enable_fully_dynamic_string
+enable_extern_template
+enable_libstdcxx_time
+enable_tls
+enable_rpath
+with_libiconv_prefix
+with_system_libunwind
+enable_linux_futex
+enable_symvers
+enable_visibility
+with_gxx_include_dir
+enable_version_specific_runtime_libs
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+CXXCPP
+CXXFILT'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures package-unused version-unused to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/libstdc++]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of package-unused version-unused:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-multilib       build many library versions (default)
+  --enable-maintainer-mode  enable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-hosted-libstdcxx
+                          only build freestanding C++ runtime support
+  --enable-sjlj-exceptions
+                          force use of builtin_setjmp for exceptions
+                          [default=auto]
+  --enable-libstdcxx-pch  build pre-compiled libstdc++ headers
+                          [default=$is_hosted]
+  --enable-cstdio[=PACKAGE]
+                          use target-specific I/O package [default=stdio]
+  --enable-clocale[=MODEL]
+                          use MODEL for target locale package [default=auto]
+  --enable-nls            use Native Language Support (default)
+  --enable-libstdcxx-allocator[=KIND]
+                          use KIND for target std::allocator base
+                          [default=auto]
+  --enable-cheaders[=KIND]
+                          construct "C" headers for g++ [default=$c_model]
+  --enable-long-long      enable template specializations for 'long long'
+                          [default=yes]
+  --enable-wchar_t        enable template specializations for 'wchar_t'
+                          [default=yes]
+  --enable-c99            turns on ISO/IEC 9899:1999 support [default=yes]
+  --enable-concept-checks use Boost-derived template checks [default=no]
+  --enable-libstdcxx-debug-flags=FLAGS
+                          pass compiler FLAGS when building debug library
+                          [default="-g3 -O0"]
+  --enable-libstdcxx-debug
+                          build extra debug library [default=no]
+  --enable-cxx-flags=FLAGS
+                          pass compiler FLAGS when building library [default=]
+  --enable-fully-dynamic-string
+                          do not put empty strings in per-process static
+                          memory [default=no]
+  --enable-extern-template
+                          enable extern template [default=yes]
+  --enable-libstdcxx-time[=KIND]
+                          use KIND for check type [default=no]
+  --enable-tls            Use thread-local storage [default=yes]
+  --disable-rpath         do not hardcode runtime library paths
+  --enable-linux-futex    use the Linux futex system call [default=default]
+  --enable-symvers[=STYLE]
+                          enables symbol versioning of the shared library
+                          [default=yes]
+  --enable-visibility     enables visibility safe usage [default=yes]
+  --enable-version-specific-runtime-libs
+                          Specify that runtime libraries should be installed
+                          in a compiler-specific directory
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-target-subdir=SUBDIR
+                          configuring in a subdirectory
+  --with-cross-host=HOST  configuring with a cross compiler
+  --with-newlib           assume newlib as a system C library
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-system-libunwind use installed libunwind
+  --with-gxx-include-dir=DIR
+                          installation directory for include files
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+  CXXFILT     Location of GNU c++filt. Defaults to the first GNU version of
+              `c++filt', `gc++filt' on PATH.
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+package-unused configure version-unused
+generated by GNU Autoconf 2.64
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by package-unused $as_me version-unused, which was
+generated by GNU Autoconf 2.64.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+# This works around the fact that libtool configuration may change LD
+# for this particular configuration, but some shells, instead of
+# keeping the changes in LD private, export them just because LD is
+# exported.  Only used at the end of this file.
+### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
+
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:16:0
+
+
+# Find the rest of the source tree framework.
+# Default to --enable-multilib
+# Check whether --enable-multilib was given.
+if test "${enable_multilib+set}" = set; then :
+  enableval=$enable_multilib; case "$enableval" in
+  yes) multilib=yes ;;
+  no)  multilib=no ;;
+  *)   as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;;
+ esac
+else
+  multilib=yes
+fi
+
+
+# We may get other options which we leave undocumented:
+# --with-target-subdir, --with-multisrctop, --with-multisubdir
+# See config-ml.in if you want the gory details.
+
+if test "$srcdir" = "."; then
+  if test "$with_target_subdir" != "."; then
+    multi_basedir="$srcdir/$with_multisrctop../.."
+  else
+    multi_basedir="$srcdir/$with_multisrctop.."
+  fi
+else
+  multi_basedir="$srcdir/.."
+fi
+
+
+# Even if the default multilib is not a cross compilation,
+# it may be that some of the other multilibs are.
+if test $cross_compiling = no && test $multilib = yes \
+   && test "x${with_multisubdir}" != x ; then
+   cross_compiling=maybe
+fi
+
+ac_config_commands="$ac_config_commands default-1"
+
+
+# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
+#
+# You will slowly go insane if you do not grok the following fact:  when
+# building v3 as part of the compiler, the top-level /target/ becomes the
+# library's /host/.  configure then causes --target to default to --host,
+# exactly like any other package using autoconf.  Therefore, 'target' and
+# 'host' will always be the same.  This makes sense both for native and
+# cross compilers, just think about it for a little while.  :-)
+#
+# Also, if v3 is being configured as part of a cross compiler, the top-level
+# configure script will pass the "real" host as $with_cross_host.
+#
+# Do not delete or change the following two lines.  For why, see
+# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  for ac_t in install-sh install.sh shtool; do
+    if test -f "$ac_dir/$ac_t"; then
+      ac_aux_dir=$ac_dir
+      ac_install_sh="$ac_aux_dir/$ac_t -c"
+      break 2
+    fi
+  done
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+target_alias=${target_alias-$host_alias}
+
+# Handy for debugging:
+#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
+
+if test "$build" != "$host"; then
+  # We are being configured with some form of cross compiler.
+  GLIBCXX_IS_NATIVE=false
+  case "$host","$target" in
+    # Darwin crosses can use the host system's libraries and headers,
+    # because of the fat library support.  Of course, it must be the
+    # same version of Darwin on both sides.  Allow the user to
+    # just say --target=foo-darwin without a version number to mean
+    # "the version on this system".
+      *-*-darwin*,*-*-darwin*)
+	hostos=`echo $host | sed 's/.*-darwin/darwin/'`
+	targetos=`echo $target | sed 's/.*-darwin/darwin/'`
+	if test $hostos = $targetos -o $targetos = darwin ; then
+	  GLIBCXX_IS_NATIVE=true
+	fi
+	;;
+
+      *)
+
+	;;
+  esac
+else
+  GLIBCXX_IS_NATIVE=true
+fi
+
+# Sets up automake.  Must come after AC_CANONICAL_SYSTEM.  Each of the
+# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
+#  1.x:  minimum required version
+#  no-define:  PACKAGE and VERSION will not be #define'd in config.h (a bunch
+#              of other PACKAGE_* variables will, however, and there's nothing
+#              we can do about that; they come from AC_INIT).
+#  foreign:  we don't follow the normal rules for GNU packages (no COPYING
+#            file in the top srcdir, etc, etc), so stop complaining.
+#  no-dependencies:  turns off auto dependency generation (just for now)
+#  no-dist:  we don't want 'dist' and related rules.
+#  -Wall:  turns on all automake warnings...
+#  -Wno-portability:  ...except this one, since GNU make is now required.
+am__api_version='1.11'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='libstdc++'
+ VERSION='version-unused'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
+
+# -fno-builtin must be present here so that a non-conflicting form of
+# std::exit can be guessed by AC_PROG_CXX, and used in later tests.
+
+save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS -fno-builtin"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    rm -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# FIXME: Cleanup?
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  gcc_no_link=no
+else
+  gcc_no_link=yes
+fi
+if test x$gcc_no_link = xyes; then
+  # Setting cross_compile will disable run tests; it will
+  # also disable AC_CHECK_FILE but that's generally
+  # correct if we can't link.
+  cross_compiling=yes
+  EXEEXT=
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then :
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+fi
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    rm -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$save_CXXFLAGS"
+
+# Runs configure.host, and assorted other critical bits.  Sets
+# up critical shell variables.
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+
+  # Keep these sync'd with the list in Makefile.am.  The first provides an
+  # expandable list at autoconf time; the second provides an expandable list
+  # (i.e., shell variable) at configure time.
+
+  SUBDIRS='include libsupc++ python src doc po testsuite'
+
+  # These need to be absolute paths, yet at the same time need to
+  # canonicalize only relative paths, because then amd will not unmount
+  # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
+  glibcxx_builddir=`${PWDCMD-pwd}`
+  case $srcdir in
+    \\/$* | ?:\\/*) glibcxx_srcdir=${srcdir} ;;
+    *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
+  esac
+  toplevel_srcdir=${glibcxx_srcdir}/..
+
+
+
+
+  # We use these options to decide which functions to include.  They are
+  # set from the top level.
+
+# Check whether --with-target-subdir was given.
+if test "${with_target_subdir+set}" = set; then :
+  withval=$with_target_subdir;
+fi
+
+
+
+# Check whether --with-cross-host was given.
+if test "${with_cross_host+set}" = set; then :
+  withval=$with_cross_host;
+fi
+
+
+
+# Check whether --with-newlib was given.
+if test "${with_newlib+set}" = set; then :
+  withval=$with_newlib;
+fi
+
+
+  # Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't
+  # available).  Uncomment the next line to force a particular method.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+  #LN_S='cp -p'
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AS+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AS" = x; then
+    AS=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB="ranlib-not-found-in-path-error"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+  # Set up safe default values for all subsequent AM_CONDITIONAL tests
+  # which are themselves conditionally expanded.
+  ## (Right now, this only matters for enable_wchar_t, but nothing prevents
+  ## other macros from doing the same.  This should be automated.)  -pme
+
+  # Check for C library flavor since Linux platforms use different configuration
+  # directories depending on the C library in use.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <stdio.h>
+  #if __UCLIBC__
+    _using_uclibc
+  #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "_using_uclibc" >/dev/null 2>&1; then :
+  uclibc=yes
+else
+  uclibc=no
+fi
+rm -f conftest*
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <stdio.h>
+  #if __BIONIC__
+    _using_bionic
+  #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "_using_bionic" >/dev/null 2>&1; then :
+  bionic=yes
+else
+  bionic=no
+fi
+rm -f conftest*
+
+
+  # Find platform-specific directories containing configuration info.
+  # Also possibly modify flags used elsewhere, as needed by the platform.
+
+  . $glibcxx_srcdir/configure.host
+  { $as_echo "$as_me:${as_lineno-$LINENO}: CPU config directory is $cpu_include_dir" >&5
+$as_echo "$as_me: CPU config directory is $cpu_include_dir" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: OS config directory is $os_include_dir" >&5
+$as_echo "$as_me: OS config directory is $os_include_dir" >&6;}
+
+
+
+if test "x${with_newlib}" != "xyes"; then
+  enable_dlopen=yes
+
+
+
+fi
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.7a'
+macro_revision='1.3134'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if test "${lt_cv_ld_force_load+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[012]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+# Set options
+
+
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec=
+	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld='+b $libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if test "${lt_cv_prog_compiler__b+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LDFLAGS="$save_LDFLAGS"
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if test "${lt_cv_archive_cmds_need_lc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11491 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11597 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' ${wl}-bernotok'
+	    allow_undefined_flag_CXX=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+        # as there is no search path for DLLs.
+        hardcode_libdir_flag_spec_CXX='-L$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+        allow_undefined_flag_CXX=unsupported
+        always_export_symbols_CXX=no
+        enable_shared_with_static_runtimes_CXX=yes
+
+        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+          archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+          # If the export-symbols file already is a .def file (1st line
+          # is EXPORTS), use it as is; otherwise, prepend...
+          archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    cp $export_symbols $output_objdir/$soname.def;
+          else
+	    echo EXPORTS > $output_objdir/$soname.def;
+	    cat $export_symbols >> $output_objdir/$soname.def;
+          fi~
+          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        else
+          ld_shlibs_CXX=no
+        fi
+        ;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd[12]*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      compiler_needs_object_CXX=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	ld_shlibs_CXX=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='${wl}-E'
+	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='${wl}-z,text'
+	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+	      '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+	      '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw* | cegcc*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if test "${lt_cv_archive_cmds_need_lc_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+
+case $host in
+  *-cygwin* | *-mingw*)
+    # 'host' will be top-level target in the case of a target lib,
+    # we must compare to with_cross_host to decide if this is a native
+    # or cross-compiler and select where to install dlls appropriately.
+    if test -n "$with_cross_host" &&
+	test x"$with_cross_host" != x"no"; then
+      lt_host_flags='-no-undefined -bindir "$(toolexeclibdir)"';
+    else
+      lt_host_flags='-no-undefined -bindir "$(bindir)"';
+    fi
+    ;;
+  *)
+    lt_host_flags=
+    ;;
+esac
+
+
+
+
+
+
+# Eliminate -lstdc++ addition to postdeps for cross compiles.
+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
+
+# Possibly disable most of the library.
+## TODO: Consider skipping unncessary tests altogether in this case, rather
+## than just ignoring the results.  Faster /and/ more correct, win win.
+
+  # Check whether --enable-hosted-libstdcxx was given.
+if test "${enable_hosted_libstdcxx+set}" = set; then :
+  enableval=$enable_hosted_libstdcxx;
+else
+  case "$host" in
+	arm*-*-symbianelf*)
+	    enable_hosted_libstdcxx=no
+	    ;;
+	*)
+	    enable_hosted_libstdcxx=yes
+	    ;;
+     esac
+fi
+
+  if test "$enable_hosted_libstdcxx" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Only freestanding libraries will be built" >&5
+$as_echo "$as_me: Only freestanding libraries will be built" >&6;}
+    is_hosted=no
+    hosted_define=0
+    enable_abi_check=no
+    enable_libstdcxx_pch=no
+  else
+    is_hosted=yes
+    hosted_define=1
+  fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_HOSTED $hosted_define
+_ACEOF
+
+
+
+# Enable compiler support that doesn't require linking.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exception model to use" >&5
+$as_echo_n "checking for exception model to use... " >&6; }
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+   # Check whether --enable-sjlj-exceptions was given.
+if test "${enable_sjlj_exceptions+set}" = set; then :
+  enableval=$enable_sjlj_exceptions;
+      case "$enableval" in
+       yes|no|auto) ;;
+       *) as_fn_error "Unknown argument to enable/disable sjlj-exceptions" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_sjlj_exceptions=auto
+fi
+
+
+
+  if test $enable_sjlj_exceptions = auto; then
+    # Botheration.  Now we've got to detect the exception model.  Link tests
+    # against libgcc.a are problematic since we've not been given proper -L
+    # bits for single-tree newlib and libgloss.
+    #
+    # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
+    cat > conftest.$ac_ext << EOF
+#line 14955 "configure"
+struct S { ~S(); };
+void bar();
+void foo()
+{
+  S s;
+  bar();
+}
+EOF
+    old_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS=-S
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+      if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=yes
+      elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=no
+      elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then
+	enable_sjlj_exceptions=no
+      fi
+    fi
+    CXXFLAGS="$old_CXXFLAGS"
+    rm -f conftest*
+  fi
+
+  # This is a tad weird, for hysterical raisins.  We have to map
+  # enable/disable to two different models.
+  case $enable_sjlj_exceptions in
+    yes)
+
+$as_echo "#define _GLIBCXX_SJLJ_EXCEPTIONS 1" >>confdefs.h
+
+      ac_exception_model_name=sjlj
+      ;;
+    no)
+      ac_exception_model_name="call frame"
+      ;;
+    *)
+      as_fn_error "unable to detect exception model" "$LINENO" 5
+      ;;
+  esac
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_exception_model_name" >&5
+$as_echo "$ac_exception_model_name" >&6; }
+
+
+   # Check whether --enable-libstdcxx-pch was given.
+if test "${enable_libstdcxx_pch+set}" = set; then :
+  enableval=$enable_libstdcxx_pch;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable libstdcxx-pch must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_libstdcxx_pch=$is_hosted
+fi
+
+
+  if test $enable_libstdcxx_pch = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler with PCH support" >&5
+$as_echo_n "checking for compiler with PCH support... " >&6; }
+if test "${glibcxx_cv_prog_CXX_pch+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXXFLAGS="$CXXFLAGS"
+       CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated"
+
+       ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+       echo '#include <math.h>' > conftest.h
+       if $CXX $CXXFLAGS $CPPFLAGS -x c++-header conftest.h \
+			  -o conftest.h.gch 1>&5 2>&1 &&
+		echo '#error "pch failed"' > conftest.h &&
+	  echo '#include "conftest.h"' > conftest.cc &&
+	       $CXX -c $CXXFLAGS $CPPFLAGS conftest.cc 1>&5 2>&1 ;
+       then
+	 glibcxx_cv_prog_CXX_pch=yes
+       else
+	 glibcxx_cv_prog_CXX_pch=no
+       fi
+       rm -f conftest*
+       CXXFLAGS=$ac_save_CXXFLAGS
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_prog_CXX_pch" >&5
+$as_echo "$glibcxx_cv_prog_CXX_pch" >&6; }
+    enable_libstdcxx_pch=$glibcxx_cv_prog_CXX_pch
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enabled PCH" >&5
+$as_echo_n "checking for enabled PCH... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_pch" >&5
+$as_echo "$enable_libstdcxx_pch" >&6; }
+
+
+  if test $enable_libstdcxx_pch = yes; then
+    glibcxx_PCHFLAGS="-include bits/stdc++.h"
+  else
+    glibcxx_PCHFLAGS=""
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread model used by GCC" >&5
+$as_echo_n "checking for thread model used by GCC... " >&6; }
+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $target_thread_file" >&5
+$as_echo "$target_thread_file" >&6; }
+
+  if test $target_thread_file != single; then
+
+$as_echo "#define HAVE_GTHR_DEFAULT 1" >>confdefs.h
+
+  fi
+
+  glibcxx_thread_h=gthr-$target_thread_file.h
+
+    gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h}
+  if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then
+    enable_thread=yes
+  else
+   enable_thread=no
+  fi
+
+
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  old_CXXFLAGS="$CXXFLAGS"
+
+  # Do link tests if possible, instead asm tests, limited to some platforms
+  # see discussion in PR target/40134, PR libstdc++/40133 and the thread
+  # starting at http://gcc.gnu.org/ml/gcc-patches/2009-07/msg00322.html
+  atomic_builtins_link_tests=no
+  if test x$gcc_no_link != xyes; then
+    # Can do link tests. Limit to some tested platforms
+    case "$host" in
+      *-*-linux* | *-*-uclinux* | *-*-kfreebsd*-gnu | *-*-gnu*)
+	atomic_builtins_link_tests=yes
+	;;
+    esac
+  fi
+
+  if test x$atomic_builtins_link_tests = xyes; then
+
+  # Do link tests.
+
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for bool" >&5
+$as_echo_n "checking for atomic builtins for bool... " >&6; }
+  if test "${glibcxx_cv_atomic_bool+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+typedef bool atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_atomic_bool=yes
+else
+  glibcxx_cv_atomic_bool=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  if test $glibcxx_cv_atomic_bool = yes; then
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_1 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_bool" >&5
+$as_echo "$glibcxx_cv_atomic_bool" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for short" >&5
+$as_echo_n "checking for atomic builtins for short... " >&6; }
+  if test "${glibcxx_cv_atomic_short+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+typedef short atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_atomic_short=yes
+else
+  glibcxx_cv_atomic_short=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  if test $glibcxx_cv_atomic_short = yes; then
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_2 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_short" >&5
+$as_echo "$glibcxx_cv_atomic_short" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for int" >&5
+$as_echo_n "checking for atomic builtins for int... " >&6; }
+  if test "${glibcxx_cv_atomic_int+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+typedef int atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_atomic_int=yes
+else
+  glibcxx_cv_atomic_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  if test $glibcxx_cv_atomic_int = yes; then
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_4 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_int" >&5
+$as_echo "$glibcxx_cv_atomic_int" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for long long" >&5
+$as_echo_n "checking for atomic builtins for long long... " >&6; }
+  if test "${glibcxx_cv_atomic_long_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+typedef long long atomic_type;
+       atomic_type c1;
+       atomic_type c2;
+       const atomic_type c3(0);
+       __sync_fetch_and_add(&c1, c2);
+       __sync_val_compare_and_swap(&c1, c3, c2);
+       __sync_lock_test_and_set(&c1, c3);
+       __sync_lock_release(&c1);
+       __sync_synchronize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_atomic_long_long=yes
+else
+  glibcxx_cv_atomic_long_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  if test $glibcxx_cv_atomic_long_long = yes; then
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_8 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_long_long" >&5
+$as_echo "$glibcxx_cv_atomic_long_long" >&6; }
+
+  else
+
+  # Do asm tests.
+
+  # Compile unoptimized.
+  CXXFLAGS='-O0 -S'
+
+  # Fake what AC_TRY_COMPILE does.
+
+    cat > conftest.$ac_ext << EOF
+#line 15323 "configure"
+int main()
+{
+  typedef bool atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for bool" >&5
+$as_echo_n "checking for atomic builtins for bool... " >&6; }
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_bool=no
+      else
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_1 1" >>confdefs.h
+
+	glibcxx_cv_atomic_bool=yes
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_bool" >&5
+$as_echo "$glibcxx_cv_atomic_bool" >&6; }
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+#line 15360 "configure"
+int main()
+{
+  typedef short atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for short" >&5
+$as_echo_n "checking for atomic builtins for short... " >&6; }
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_short=no
+      else
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_2 1" >>confdefs.h
+
+	glibcxx_cv_atomic_short=yes
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_short" >&5
+$as_echo "$glibcxx_cv_atomic_short" >&6; }
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+#line 15397 "configure"
+int main()
+{
+  // NB: _Atomic_word not necessarily int.
+  typedef int atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for int" >&5
+$as_echo_n "checking for atomic builtins for int... " >&6; }
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_int=no
+      else
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_4 1" >>confdefs.h
+
+	glibcxx_cv_atomic_int=yes
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_int" >&5
+$as_echo "$glibcxx_cv_atomic_int" >&6; }
+    rm -f conftest*
+
+    cat > conftest.$ac_ext << EOF
+#line 15435 "configure"
+int main()
+{
+  typedef long long atomic_type;
+  atomic_type c1;
+  atomic_type c2;
+  const atomic_type c3(0);
+  __sync_fetch_and_add(&c1, c2);
+  __sync_val_compare_and_swap(&c1, c3, c2);
+  __sync_lock_test_and_set(&c1, c3);
+  __sync_lock_release(&c1);
+  __sync_synchronize();
+  return 0;
+}
+EOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atomic builtins for long long" >&5
+$as_echo_n "checking for atomic builtins for long long... " >&6; }
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+      if grep __sync_ conftest.s >/dev/null 2>&1 ; then
+	glibcxx_cv_atomic_long_long=no
+      else
+
+$as_echo "#define _GLIBCXX_ATOMIC_BUILTINS_8 1" >>confdefs.h
+
+	glibcxx_cv_atomic_long_long=yes
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_atomic_long_long" >&5
+$as_echo "$glibcxx_cv_atomic_long_long" >&6; }
+    rm -f conftest*
+
+  fi
+
+  CXXFLAGS="$old_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  # Set atomicity_dir to builtins if either of above tests pass.
+  if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then
+    atomicity_dir=cpu/generic/atomicity_builtins
+  fi
+
+  # If still generic, set to mutex.
+  if test $atomicity_dir = "cpu/generic" ; then
+    atomicity_dir=cpu/generic/atomicity_mutex
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No native atomic operations are provided for this platform." >&5
+$as_echo "$as_me: WARNING: No native atomic operations are provided for this platform." >&2;}
+      if test "x$target_thread_file" = xsingle; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: They cannot be faked when thread support is disabled." >&5
+$as_echo "$as_me: WARNING: They cannot be faked when thread support is disabled." >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Thread-safety of certain classes is not guaranteed." >&5
+$as_echo "$as_me: WARNING: Thread-safety of certain classes is not guaranteed." >&2;}
+      else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: They will be faked using a mutex." >&5
+$as_echo "$as_me: WARNING: They will be faked using a mutex." >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Performance of certain classes will degrade as a result." >&5
+$as_echo "$as_me: WARNING: Performance of certain classes will degrade as a result." >&2;}
+      fi
+  fi
+
+
+
+
+  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # unnecessary for this test.
+
+    cat > conftest.$ac_ext << EOF
+#line 15511 "configure"
+int main()
+{
+  _Decimal32 d1;
+  _Decimal64 d2;
+  _Decimal128 d3;
+  return 0;
+}
+EOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO/IEC TR 24733 " >&5
+$as_echo_n "checking for ISO/IEC TR 24733 ... " >&6; }
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+
+$as_echo "#define _GLIBCXX_USE_DECIMAL_FLOAT 1" >>confdefs.h
+
+      enable_dfp=yes
+    else
+      enable_dfp=no
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dfp" >&5
+$as_echo "$enable_dfp" >&6; }
+    rm -f conftest*
+
+
+# Checks for compiler support that doesn't require linking.
+
+  # All these tests are for C++; save the language and the compiler flags.
+  # The CXXFLAGS thing is suspicious, but based on similar bits previously
+  # found in GLIBCXX_CONFIGURE.
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+
+  # Check for maintainer-mode bits.
+  if test x"$USE_MAINTAINER_MODE" = xno; then
+    WERROR=''
+  else
+    WERROR='-Werror'
+  fi
+
+  # Check for -ffunction-sections -fdata-sections
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+$as_echo_n "checking for g++ that supports -ffunction-sections -fdata-sections... " >&6; }
+  CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo; void bar() { };
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_fdsections=yes
+else
+  ac_fdsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_test_CXXFLAGS" = set; then
+    CXXFLAGS="$ac_save_CXXFLAGS"
+  else
+    # this is the suspicious part
+    CXXFLAGS=''
+  fi
+  if test x"$ac_fdsections" = x"yes"; then
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
+$as_echo "$ac_fdsections" >&6; }
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+# Enable all the variable C++ runtime options that don't require linking.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for underlying I/O to use" >&5
+$as_echo_n "checking for underlying I/O to use... " >&6; }
+   # Check whether --enable-cstdio was given.
+if test "${enable_cstdio+set}" = set; then :
+  enableval=$enable_cstdio;
+      case "$enableval" in
+       stdio) ;;
+       *) as_fn_error "Unknown argument to enable/disable cstdio" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_cstdio=stdio
+fi
+
+
+
+  # Now that libio has been removed, you can have any color you want as long
+  # as it's black.  This is one big no-op until other packages are added, but
+  # showing the framework never hurts.
+  case ${enable_cstdio} in
+    stdio)
+      CSTDIO_H=config/io/c_io_stdio.h
+      BASIC_FILE_H=config/io/basic_file_stdio.h
+      BASIC_FILE_CC=config/io/basic_file_stdio.cc
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: stdio" >&5
+$as_echo "stdio" >&6; }
+      ;;
+  esac
+
+
+
+
+
+
+   # Check whether --enable-clocale was given.
+if test "${enable_clocale+set}" = set; then :
+  enableval=$enable_clocale;
+      case "$enableval" in
+       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
+       *) as_fn_error "Unknown argument to enable/disable clocale" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_clocale=auto
+fi
+
+
+
+  # Deal with gettext issues.  Default to not using it (=no) until we detect
+  # support for it later.  Let the user turn it off via --e/d, but let that
+  # default to on for easier handling.
+  USE_NLS=no
+  # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls;
+else
+  enable_nls=yes
+fi
+
+
+  # Either a known packaage, or "auto"
+  if test $enable_clocale = no || test $enable_clocale = yes; then
+     enable_clocale=auto
+  fi
+  enable_clocale_flag=$enable_clocale
+
+  # Probe for locale model to use if none specified.
+  # Default to "generic".
+  if test $enable_clocale_flag = auto; then
+    case ${target_os} in
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+	enable_clocale_flag=gnu
+	;;
+      darwin* | freebsd*)
+	enable_clocale_flag=darwin
+	;;
+      *)
+	enable_clocale_flag=generic
+	;;
+    esac
+  fi
+
+  # Sanity check model, and test for special functionality.
+  if test $enable_clocale_flag = gnu; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+    #include <features.h>
+    #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
+      _GLIBCXX_ok
+    #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "_GLIBCXX_ok" >/dev/null 2>&1; then :
+  enable_clocale_flag=gnu
+else
+  enable_clocale_flag=generic
+fi
+rm -f conftest*
+
+
+    # Set it to scream when it hurts.
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS="-Wimplicit-function-declaration -Werror"
+
+    # Use strxfrm_l if available.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _GNU_SOURCE 1
+     		    #include <string.h>
+		    #include <locale.h>
+int
+main ()
+{
+char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_STRXFRM_L 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    # Use strerror_l if available.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _GNU_SOURCE 1
+		    #include <string.h>
+		    #include <locale.h>
+int
+main ()
+{
+__locale_t loc; strerror_l(5, loc);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_STRERROR_L 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    CFLAGS="$ac_save_CFLAGS"
+  fi
+
+  # Perhaps use strerror_r if available, and strerror_l isn't.
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS="-Wimplicit-function-declaration -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _GNU_SOURCE 1
+	     	  #include <string.h>
+		  #include <locale.h>
+int
+main ()
+{
+char s[128]; strerror_r(5, s, 128);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_STRERROR_R 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$ac_save_CFLAGS"
+
+  # Set configure bits for specified locale package
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C locale to use" >&5
+$as_echo_n "checking for C locale to use... " >&6; }
+  case ${enable_clocale_flag} in
+    generic)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: generic" >&5
+$as_echo "generic" >&6; }
+
+      CLOCALE_H=config/locale/generic/c_locale.h
+      CLOCALE_CC=config/locale/generic/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/generic/ctype_members.cc
+      CMESSAGES_H=config/locale/generic/messages_members.h
+      CMESSAGES_CC=config/locale/generic/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+    darwin)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: darwin or freebsd" >&5
+$as_echo "darwin or freebsd" >&6; }
+
+      CLOCALE_H=config/locale/generic/c_locale.h
+      CLOCALE_CC=config/locale/generic/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/darwin/ctype_members.cc
+      CMESSAGES_H=config/locale/generic/messages_members.h
+      CMESSAGES_CC=config/locale/generic/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+
+    gnu)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: gnu" >&5
+$as_echo "gnu" >&6; }
+
+      # Declare intention to use gettext, and add support for specific
+      # languages.
+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
+      ALL_LINGUAS="de fr"
+
+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
+      # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_check_msgfmt+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$check_msgfmt"; then
+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_check_msgfmt="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
+fi
+fi
+check_msgfmt=$ac_cv_prog_check_msgfmt
+if test -n "$check_msgfmt"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $check_msgfmt" >&5
+$as_echo "$check_msgfmt" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
+	USE_NLS=yes
+      fi
+      # Export the build objects.
+      for ling in $ALL_LINGUAS; do \
+	glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
+	glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
+      done
+
+
+
+      CLOCALE_H=config/locale/gnu/c_locale.h
+      CLOCALE_CC=config/locale/gnu/c_locale.cc
+      CCODECVT_CC=config/locale/gnu/codecvt_members.cc
+      CCOLLATE_CC=config/locale/gnu/collate_members.cc
+      CCTYPE_CC=config/locale/gnu/ctype_members.cc
+      CMESSAGES_H=config/locale/gnu/messages_members.h
+      CMESSAGES_CC=config/locale/gnu/messages_members.cc
+      CMONEY_CC=config/locale/gnu/monetary_members.cc
+      CNUMERIC_CC=config/locale/gnu/numeric_members.cc
+      CTIME_H=config/locale/gnu/time_members.h
+      CTIME_CC=config/locale/gnu/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
+      ;;
+    ieee_1003.1-2001)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: IEEE 1003.1" >&5
+$as_echo "IEEE 1003.1" >&6; }
+
+      CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
+      CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
+      CCODECVT_CC=config/locale/generic/codecvt_members.cc
+      CCOLLATE_CC=config/locale/generic/collate_members.cc
+      CCTYPE_CC=config/locale/generic/ctype_members.cc
+      CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
+      CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
+      CMONEY_CC=config/locale/generic/monetary_members.cc
+      CNUMERIC_CC=config/locale/generic/numeric_members.cc
+      CTIME_H=config/locale/generic/time_members.h
+      CTIME_CC=config/locale/generic/time_members.cc
+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+      ;;
+  esac
+
+  # This is where the testsuite looks for locale catalogs, using the
+  # -DLOCALEDIR define during testsuite compilation.
+  glibcxx_localedir=${glibcxx_builddir}/po/share/locale
+
+
+  # A standalone libintl (e.g., GNU libintl) may be in use.
+  if test $USE_NLS = yes; then
+    for ac_header in libintl.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBINTL_H 1
+_ACEOF
+
+else
+  USE_NLS=no
+fi
+
+done
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gettext" >&5
+$as_echo_n "checking for library containing gettext... " >&6; }
+if test "${ac_cv_search_gettext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gettext ();
+int
+main ()
+{
+return gettext ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' intl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gettext=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_gettext+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_gettext+set}" = set; then :
+
+else
+  ac_cv_search_gettext=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gettext" >&5
+$as_echo "$ac_cv_search_gettext" >&6; }
+ac_res=$ac_cv_search_gettext
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  USE_NLS=no
+fi
+
+  fi
+  if test $USE_NLS = yes; then
+
+$as_echo "#define _GLIBCXX_USE_NLS 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for std::allocator base class" >&5
+$as_echo_n "checking for std::allocator base class... " >&6; }
+   # Check whether --enable-libstdcxx-allocator was given.
+if test "${enable_libstdcxx_allocator+set}" = set; then :
+  enableval=$enable_libstdcxx_allocator;
+      case "$enableval" in
+       new|malloc|mt|bitmap|pool|yes|no|auto) ;;
+       *) as_fn_error "Unknown argument to enable/disable libstdcxx-allocator" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_libstdcxx_allocator=auto
+fi
+
+
+
+  # If they didn't use this option switch, or if they specified --enable
+  # with no specific model, we'll have to look for one.  If they
+  # specified --disable (???), do likewise.
+  if test $enable_libstdcxx_allocator = no ||
+     test $enable_libstdcxx_allocator = yes;
+  then
+     enable_libstdcxx_allocator=auto
+  fi
+
+  # Either a known package, or "auto". Auto implies the default choice
+  # for a particular platform.
+  enable_libstdcxx_allocator_flag=$enable_libstdcxx_allocator
+
+  # Probe for host-specific support if no specific model is specified.
+  # Default to "new".
+  if test $enable_libstdcxx_allocator_flag = auto; then
+    case ${target_os} in
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+	enable_libstdcxx_allocator_flag=new
+	;;
+      *)
+	enable_libstdcxx_allocator_flag=new
+	;;
+    esac
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_allocator_flag" >&5
+$as_echo "$enable_libstdcxx_allocator_flag" >&6; }
+
+
+  # Set configure bits for specified locale package
+  case ${enable_libstdcxx_allocator_flag} in
+    bitmap)
+      ALLOCATOR_H=config/allocator/bitmap_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::bitmap_allocator
+      ;;
+    malloc)
+      ALLOCATOR_H=config/allocator/malloc_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::malloc_allocator
+      ;;
+    mt)
+      ALLOCATOR_H=config/allocator/mt_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::__mt_alloc
+      ;;
+    new)
+      ALLOCATOR_H=config/allocator/new_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::new_allocator
+      ;;
+    pool)
+      ALLOCATOR_H=config/allocator/pool_allocator_base.h
+      ALLOCATOR_NAME=__gnu_cxx::__pool_alloc
+      ;;
+  esac
+
+
+
+
+
+   # Check whether --enable-cheaders was given.
+if test "${enable_cheaders+set}" = set; then :
+  enableval=$enable_cheaders;
+      case "$enableval" in
+       c|c_std|c_global) ;;
+       *) as_fn_error "Unknown argument to enable/disable cheaders" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_cheaders=$c_model
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: \"C\" header strategy set to $enable_cheaders" >&5
+$as_echo "$as_me: \"C\" header strategy set to $enable_cheaders" >&6;}
+
+  C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders
+
+  # Allow overrides to configure.host here.
+  if test $enable_cheaders = c_global; then
+     c_compatibility=yes
+  fi
+
+
+
+
+
+
+
+   # Check whether --enable-long-long was given.
+if test "${enable_long_long+set}" = set; then :
+  enableval=$enable_long_long;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable long-long must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_long_long=yes
+fi
+
+
+  if test $enable_long_long = yes; then
+
+$as_echo "#define _GLIBCXX_USE_LONG_LONG 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enabled long long specializations" >&5
+$as_echo_n "checking for enabled long long specializations... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_long_long" >&5
+$as_echo "$enable_long_long" >&6; }
+
+
+   # Check whether --enable-wchar_t was given.
+if test "${enable_wchar_t+set}" = set; then :
+  enableval=$enable_wchar_t;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable wchar_t must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_wchar_t=yes
+fi
+
+
+
+  # Test wchar.h for mbstate_t, which is needed for char_traits and fpos.
+  for ac_header in wchar.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WCHAR_H 1
+_ACEOF
+ ac_has_wchar_h=yes
+else
+  ac_has_wchar_h=no
+fi
+
+done
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t teststate;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  have_mbstate_t=yes
+else
+  have_mbstate_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mbstate_t" >&5
+$as_echo "$have_mbstate_t" >&6; }
+  if test x"$have_mbstate_t" = xyes; then
+
+$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
+
+  fi
+
+  # Test it always, for use in GLIBCXX_ENABLE_C99, together with
+  # ac_has_wchar_h.
+  for ac_header in wctype.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WCTYPE_H 1
+_ACEOF
+ ac_has_wctype_h=yes
+else
+  ac_has_wctype_h=no
+fi
+
+done
+
+
+  if test x"$enable_wchar_t" = x"yes"; then
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+    if test x"$ac_has_wchar_h" = xyes &&
+       test x"$ac_has_wctype_h" = xyes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		      #include <stddef.h>
+		      wint_t i;
+		      long l = WEOF;
+		      long j = WCHAR_MIN;
+		      long k = WCHAR_MAX;
+		      namespace test
+		      {
+			using ::btowc;
+			using ::fgetwc;
+			using ::fgetws;
+			using ::fputwc;
+			using ::fputws;
+			using ::fwide;
+			using ::fwprintf;
+			using ::fwscanf;
+			using ::getwc;
+			using ::getwchar;
+ 			using ::mbrlen;
+			using ::mbrtowc;
+			using ::mbsinit;
+			using ::mbsrtowcs;
+			using ::putwc;
+			using ::putwchar;
+			using ::swprintf;
+			using ::swscanf;
+			using ::ungetwc;
+			using ::vfwprintf;
+			using ::vswprintf;
+			using ::vwprintf;
+			using ::wcrtomb;
+			using ::wcscat;
+			using ::wcschr;
+			using ::wcscmp;
+			using ::wcscoll;
+			using ::wcscpy;
+			using ::wcscspn;
+			using ::wcsftime;
+			using ::wcslen;
+			using ::wcsncat;
+			using ::wcsncmp;
+			using ::wcsncpy;
+			using ::wcspbrk;
+			using ::wcsrchr;
+			using ::wcsrtombs;
+			using ::wcsspn;
+			using ::wcsstr;
+			using ::wcstod;
+			using ::wcstok;
+			using ::wcstol;
+			using ::wcstoul;
+			using ::wcsxfrm;
+			using ::wctob;
+			using ::wmemchr;
+			using ::wmemcmp;
+			using ::wmemcpy;
+			using ::wmemmove;
+			using ::wmemset;
+			using ::wprintf;
+			using ::wscanf;
+		      }
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  enable_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      enable_wchar_t=no
+    fi
+
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  fi
+
+  if test x"$enable_wchar_t" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_WCHAR_T 1" >>confdefs.h
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enabled wchar_t specializations" >&5
+$as_echo_n "checking for enabled wchar_t specializations... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_wchar_t" >&5
+$as_echo "$enable_wchar_t" >&6; }
+
+
+
+   # Check whether --enable-c99 was given.
+if test "${enable_c99+set}" = set; then :
+  enableval=$enable_c99;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable c99 must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_c99=yes
+fi
+
+
+
+  if test x"$enable_c99" = x"yes"; then
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__
+  # undefined and fake C99 facilities - like pre-standard snprintf - may be
+  # spuriously enabled.
+  # Long term, -std=c++0x could be even better, could manage to explicitely
+  # request C99 facilities to the underlying C headers.
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++98"
+  ac_save_LIBS="$LIBS"
+  ac_save_gcc_no_link="$gcc_no_link"
+
+  if test x$gcc_no_link != xyes; then
+    # Use -fno-exceptions to that the C driver can link these tests without
+    # hitting undefined references to personality routines.
+    CXXFLAGS="$CXXFLAGS -fno-exceptions"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+
+      LIBS="$LIBS -lm"
+
+else
+
+      # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK
+      gcc_no_link=yes
+
+fi
+
+  fi
+
+  # Check for the existence of <math.h> functions used if C99 is enabled.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <math.h>" >&5
+$as_echo_n "checking for ISO C99 support in <math.h>... " >&6; }
+  if test "${glibcxx_cv_c99_math+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+      volatile double d1, d2;
+      volatile int i;
+int
+main ()
+{
+i = fpclassify(d1);
+      i = isfinite(d1);
+      i = isinf(d1);
+      i = isnan(d1);
+      i = isnormal(d1);
+      i = signbit(d1);
+      i = isgreater(d1, d2);
+      i = isgreaterequal(d1, d2);
+      i = isless(d1, d2);
+      i = islessequal(d1, d2);
+      i = islessgreater(d1, d2);
+      i = islessgreater(d1, d2);
+      i = isunordered(d1, d2);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_math=yes
+else
+  glibcxx_cv_c99_math=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+      volatile double d1, d2;
+      volatile int i;
+int
+main ()
+{
+i = fpclassify(d1);
+      i = isfinite(d1);
+      i = isinf(d1);
+      i = isnan(d1);
+      i = isnormal(d1);
+      i = signbit(d1);
+      i = isgreater(d1, d2);
+      i = isgreaterequal(d1, d2);
+      i = isless(d1, d2);
+      i = islessequal(d1, d2);
+      i = islessgreater(d1, d2);
+      i = islessgreater(d1, d2);
+      i = isunordered(d1, d2);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_c99_math=yes
+else
+  glibcxx_cv_c99_math=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_math" >&5
+$as_echo "$glibcxx_cv_c99_math" >&6; }
+  if test x"$glibcxx_cv_c99_math" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_MATH 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <complex.h> complex math functions.
+  # This is necessary even though libstdc++ uses the builtin versions
+  # of these functions, because if the builtin cannot be used, a reference
+  # to the library function is emitted.
+  for ac_header in tgmath.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "tgmath.h" "ac_cv_header_tgmath_h" "$ac_includes_default"
+if test "x$ac_cv_header_tgmath_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TGMATH_H 1
+_ACEOF
+ ac_has_tgmath_h=yes
+else
+  ac_has_tgmath_h=no
+fi
+
+done
+
+  for ac_header in complex.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default"
+if test "x$ac_cv_header_complex_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_COMPLEX_H 1
+_ACEOF
+ ac_has_complex_h=yes
+else
+  ac_has_complex_h=no
+fi
+
+done
+
+  glibcxx_cv_c99_complex=no;
+  if test x"$ac_has_complex_h" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <complex.h>" >&5
+$as_echo_n "checking for ISO C99 support in <complex.h>... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <complex.h>
+	typedef __complex__ float float_type;
+	typedef __complex__ double double_type;
+	typedef __complex__ long double ld_type;
+	volatile float_type tmpf;
+	volatile double_type tmpd;
+	volatile ld_type tmpld;
+	volatile float f;
+	volatile double d;
+	volatile long double ld;
+int
+main ()
+{
+f = cabsf(tmpf);
+	f = cargf(tmpf);
+	tmpf = ccosf(tmpf);
+	tmpf = ccoshf(tmpf);
+	tmpf = cexpf(tmpf);
+	tmpf = clogf(tmpf);
+	tmpf = csinf(tmpf);
+	tmpf = csinhf(tmpf);
+	tmpf = csqrtf(tmpf);
+	tmpf = ctanf(tmpf);
+	tmpf = ctanhf(tmpf);
+	tmpf = cpowf(tmpf, tmpf);
+	tmpf = cprojf(tmpf);
+	d = cabs(tmpd);
+	d = carg(tmpd);
+	tmpd = ccos(tmpd);
+	tmpd = ccosh(tmpd);
+	tmpd = cexp(tmpd);
+	tmpd = clog(tmpd);
+	tmpd = csin(tmpd);
+	tmpd = csinh(tmpd);
+	tmpd = csqrt(tmpd);
+	tmpd = ctan(tmpd);
+	tmpd = ctanh(tmpd);
+	tmpd = cpow(tmpd, tmpd);
+	tmpd = cproj(tmpd);
+	ld = cabsl(tmpld);
+	ld = cargl(tmpld);
+	tmpld = ccosl(tmpld);
+	tmpld = ccoshl(tmpld);
+	tmpld = cexpl(tmpld);
+	tmpld = clogl(tmpld);
+	tmpld = csinl(tmpld);
+	tmpld = csinhl(tmpld);
+	tmpld = csqrtl(tmpld);
+	tmpld = ctanl(tmpld);
+	tmpld = ctanhl(tmpld);
+	tmpld = cpowl(tmpld, tmpld);
+	tmpld = cprojl(tmpld);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_complex=yes
+else
+  glibcxx_cv_c99_complex=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <complex.h>
+	typedef __complex__ float float_type;
+	typedef __complex__ double double_type;
+	typedef __complex__ long double ld_type;
+	volatile float_type tmpf;
+	volatile double_type tmpd;
+	volatile ld_type tmpld;
+	volatile float f;
+	volatile double d;
+	volatile long double ld;
+int
+main ()
+{
+f = cabsf(tmpf);
+	f = cargf(tmpf);
+	tmpf = ccosf(tmpf);
+	tmpf = ccoshf(tmpf);
+	tmpf = cexpf(tmpf);
+	tmpf = clogf(tmpf);
+	tmpf = csinf(tmpf);
+	tmpf = csinhf(tmpf);
+	tmpf = csqrtf(tmpf);
+	tmpf = ctanf(tmpf);
+	tmpf = ctanhf(tmpf);
+	tmpf = cpowf(tmpf, tmpf);
+	tmpf = cprojf(tmpf);
+	d = cabs(tmpd);
+	d = carg(tmpd);
+	tmpd = ccos(tmpd);
+	tmpd = ccosh(tmpd);
+	tmpd = cexp(tmpd);
+	tmpd = clog(tmpd);
+	tmpd = csin(tmpd);
+	tmpd = csinh(tmpd);
+	tmpd = csqrt(tmpd);
+	tmpd = ctan(tmpd);
+	tmpd = ctanh(tmpd);
+	tmpd = cpow(tmpd, tmpd);
+	tmpd = cproj(tmpd);
+	ld = cabsl(tmpld);
+	ld = cargl(tmpld);
+	tmpld = ccosl(tmpld);
+	tmpld = ccoshl(tmpld);
+	tmpld = cexpl(tmpld);
+	tmpld = clogl(tmpld);
+	tmpld = csinl(tmpld);
+	tmpld = csinhl(tmpld);
+	tmpld = csqrtl(tmpld);
+	tmpld = ctanl(tmpld);
+	tmpld = ctanhl(tmpld);
+	tmpld = cpowl(tmpld, tmpld);
+	tmpld = cprojl(tmpld);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_c99_complex=yes
+else
+  glibcxx_cv_c99_complex=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_complex" >&5
+$as_echo "$glibcxx_cv_c99_complex" >&6; }
+  if test x"$glibcxx_cv_c99_complex" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_COMPLEX 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence in <stdio.h> of vscanf, et. al.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdio.h>" >&5
+$as_echo_n "checking for ISO C99 support in <stdio.h>... " >&6; }
+  if test "${glibcxx_cv_c99_stdio+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+      #include <stdarg.h>
+      void foo(char* fmt, ...)
+      {
+	va_list args; va_start(args, fmt);
+	vfscanf(stderr, "%i", args);
+	vscanf("%i", args);
+	vsnprintf(fmt, 0, "%i", args);
+	vsscanf(fmt, "%i", args);
+      }
+int
+main ()
+{
+snprintf("12", 0, "%i");
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_stdio=yes
+else
+  glibcxx_cv_c99_stdio=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+      #include <stdarg.h>
+      void foo(char* fmt, ...)
+      {
+	va_list args; va_start(args, fmt);
+	vfscanf(stderr, "%i", args);
+	vscanf("%i", args);
+	vsnprintf(fmt, 0, "%i", args);
+	vsscanf(fmt, "%i", args);
+      }
+int
+main ()
+{
+snprintf("12", 0, "%i");
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_c99_stdio=yes
+else
+  glibcxx_cv_c99_stdio=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdio" >&5
+$as_echo "$glibcxx_cv_c99_stdio" >&6; }
+
+  # Check for the existence in <stdlib.h> of lldiv_t, et. al.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdlib.h>" >&5
+$as_echo_n "checking for ISO C99 support in <stdlib.h>... " >&6; }
+  if test "${glibcxx_cv_c99_stdlib+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+      volatile float f;
+      volatile long double ld;
+      volatile unsigned long long ll;
+      lldiv_t mydivt;
+int
+main ()
+{
+char* tmp;
+      f = strtof("gnu", &tmp);
+      ld = strtold("gnu", &tmp);
+      ll = strtoll("gnu", &tmp, 10);
+      ll = strtoull("gnu", &tmp, 10);
+      ll = llabs(10);
+      mydivt = lldiv(10,1);
+      ll = mydivt.quot;
+      ll = mydivt.rem;
+      ll = atoll("10");
+      _Exit(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_stdlib=yes
+else
+  glibcxx_cv_c99_stdlib=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+      volatile float f;
+      volatile long double ld;
+      volatile unsigned long long ll;
+      lldiv_t mydivt;
+int
+main ()
+{
+char* tmp;
+      f = strtof("gnu", &tmp);
+      ld = strtold("gnu", &tmp);
+      ll = strtoll("gnu", &tmp, 10);
+      ll = strtoull("gnu", &tmp, 10);
+      ll = llabs(10);
+      mydivt = lldiv(10,1);
+      ll = mydivt.quot;
+      ll = mydivt.rem;
+      ll = atoll("10");
+      _Exit(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_c99_stdlib=yes
+else
+  glibcxx_cv_c99_stdlib=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdlib" >&5
+$as_echo "$glibcxx_cv_c99_stdlib" >&6; }
+
+  # Check for the existence in <wchar.h> of wcstold, etc.
+  glibcxx_cv_c99_wchar=no;
+  if test x"$ac_has_wchar_h" = xyes &&
+     test x"$ac_has_wctype_h" = xyes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <wchar.h>" >&5
+$as_echo_n "checking for ISO C99 support in <wchar.h>... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		    namespace test
+		    {
+		      using ::wcstold;
+		      using ::wcstoll;
+		      using ::wcstoull;
+		    }
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_wchar=yes
+else
+  glibcxx_cv_c99_wchar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    # Checks for wide character functions that may not be present.
+    # Injection of these is wrapped with guard macros.
+    # NB: only put functions here, instead of immediately above, if
+    # absolutely necessary.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		    namespace test { using ::vfwscanf; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_VFWSCANF 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		    namespace test { using ::vswscanf; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_VSWSCANF 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		    namespace test { using ::vwscanf; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_VWSCANF 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+		    namespace test { using ::wcstof; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_WCSTOF 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wctype.h>
+int
+main ()
+{
+ wint_t t; int i = iswblank(t);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_ISWBLANK 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_wchar" >&5
+$as_echo "$glibcxx_cv_c99_wchar" >&6; }
+  fi
+
+  # Option parsed, now set things appropriately.
+  if test x"$glibcxx_cv_c99_math" = x"no" ||
+     test x"$glibcxx_cv_c99_complex" = x"no" ||
+     test x"$glibcxx_cv_c99_stdio" = x"no" ||
+     test x"$glibcxx_cv_c99_stdlib" = x"no" ||
+     test x"$glibcxx_cv_c99_wchar" = x"no"; then
+    enable_c99=no;
+  else
+
+$as_echo "#define _GLIBCXX_USE_C99 1" >>confdefs.h
+
+  fi
+
+  gcc_no_link="$ac_save_gcc_no_link"
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fully enabled ISO C99 support" >&5
+$as_echo_n "checking for fully enabled ISO C99 support... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_c99" >&5
+$as_echo "$enable_c99" >&6; }
+
+
+   # Check whether --enable-concept-checks was given.
+if test "${enable_concept_checks+set}" = set; then :
+  enableval=$enable_concept_checks;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable concept-checks must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_concept_checks=no
+fi
+
+
+  if test $enable_concept_checks = yes; then
+
+$as_echo "#define _GLIBCXX_CONCEPT_CHECKS 1" >>confdefs.h
+
+  fi
+
+
+   # Check whether --enable-libstdcxx-debug-flags was given.
+if test "${enable_libstdcxx_debug_flags+set}" = set; then :
+  enableval=$enable_libstdcxx_debug_flags; case "x$enable_libstdcxx_debug_flags" in
+      xno | x)    enable_libstdcxx_debug_flags= ;;
+      x-*)        ;;
+      *)          as_fn_error "--enable-libstdcxx-debug-flags needs compiler flags as arguments" "$LINENO" 5 ;;
+     esac
+else
+  enable_libstdcxx_debug_flags="-g3 -O0"
+fi
+
+
+
+  # Option parsed, now set things appropriately
+  DEBUG_FLAGS="$enable_libstdcxx_debug_flags"
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Debug build flags set to $DEBUG_FLAGS" >&5
+$as_echo "$as_me: Debug build flags set to $DEBUG_FLAGS" >&6;}
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for additional debug build" >&5
+$as_echo_n "checking for additional debug build... " >&6; }
+   # Check whether --enable-libstdcxx-debug was given.
+if test "${enable_libstdcxx_debug+set}" = set; then :
+  enableval=$enable_libstdcxx_debug;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable libstdcxx-debug must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_libstdcxx_debug=no
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_debug" >&5
+$as_echo "$enable_libstdcxx_debug" >&6; }
+
+
+
+
+  enable_parallel=no;
+
+  # See if configured libgomp/omp.h exists. (libgomp may be in
+  # noconfigdirs but not explicitly disabled.)
+  if echo " ${TARGET_CONFIGDIRS} " | grep " libgomp " > /dev/null 2>&1 ; then
+    enable_parallel=yes;
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: target-libgomp not built" >&5
+$as_echo "$as_me: target-libgomp not built" >&6;}
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for parallel mode support" >&5
+$as_echo_n "checking for parallel mode support... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel" >&5
+$as_echo "$enable_parallel" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra compiler flags for building" >&5
+$as_echo_n "checking for extra compiler flags for building... " >&6; }
+   # Check whether --enable-cxx-flags was given.
+if test "${enable_cxx_flags+set}" = set; then :
+  enableval=$enable_cxx_flags; case "x$enable_cxx_flags" in
+      xno | x)   enable_cxx_flags= ;;
+      x-*)       ;;
+      *)         as_fn_error "--enable-cxx-flags needs compiler flags as arguments" "$LINENO" 5 ;;
+     esac
+else
+  enable_cxx_flags=
+fi
+
+
+
+  # Run through flags (either default or command-line) and set anything
+  # extra (e.g., #defines) that must accompany particular g++ options.
+  if test -n "$enable_cxx_flags"; then
+    for f in $enable_cxx_flags; do
+      case "$f" in
+	-fhonor-std)  ;;
+	-*)  ;;
+	*)   # and we're trying to pass /what/ exactly?
+	     as_fn_error "compiler flags start with a -" "$LINENO" 5 ;;
+      esac
+    done
+  fi
+
+  EXTRA_CXX_FLAGS="$enable_cxx_flags"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTRA_CXX_FLAGS" >&5
+$as_echo "$EXTRA_CXX_FLAGS" >&6; }
+
+
+
+   # Check whether --enable-fully-dynamic-string was given.
+if test "${enable_fully_dynamic_string+set}" = set; then :
+  enableval=$enable_fully_dynamic_string;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable fully-dynamic-string must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_fully_dynamic_string=no
+fi
+
+
+  if test $enable_fully_dynamic_string = yes; then
+
+$as_echo "#define _GLIBCXX_FULLY_DYNAMIC_STRING 1" >>confdefs.h
+
+  fi
+
+
+
+   # Check whether --enable-extern-template was given.
+if test "${enable_extern_template+set}" = set; then :
+  enableval=$enable_extern_template;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable extern-template must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_extern_template=yes
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extern template support" >&5
+$as_echo_n "checking for extern template support... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extern_template" >&5
+$as_echo "$enable_extern_template" >&6; }
+
+
+
+
+# Checks for operating systems support that doesn't require linking.
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOWNERDEAD" >&5
+$as_echo_n "checking for EOWNERDEAD... " >&6; }
+if test "${glibcxx_cv_system_error1+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EOWNERDEAD;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error1=yes
+else
+  glibcxx_cv_system_error1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error1" >&5
+$as_echo "$glibcxx_cv_system_error1" >&6; }
+if test x"$glibcxx_cv_system_error1" = x"yes"; then
+
+$as_echo "#define HAVE_EOWNERDEAD 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOTRECOVERABLE" >&5
+$as_echo_n "checking for ENOTRECOVERABLE... " >&6; }
+if test "${glibcxx_cv_system_error2+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOTRECOVERABLE;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error2=yes
+else
+  glibcxx_cv_system_error2=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error2" >&5
+$as_echo "$glibcxx_cv_system_error2" >&6; }
+if test x"$glibcxx_cv_system_error2" = x"yes"; then
+
+$as_echo "#define HAVE_ENOTRECOVERABLE 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK" >&5
+$as_echo_n "checking for ENOLINK... " >&6; }
+if test "${glibcxx_cv_system_error3+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOLINK;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error3=yes
+else
+  glibcxx_cv_system_error3=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error3" >&5
+$as_echo "$glibcxx_cv_system_error3" >&6; }
+if test x"$glibcxx_cv_system_error3" = x"yes"; then
+
+$as_echo "#define HAVE_ENOLINK 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EPROTO" >&5
+$as_echo_n "checking for EPROTO... " >&6; }
+if test "${glibcxx_cv_system_error4+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EPROTO;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error4=yes
+else
+  glibcxx_cv_system_error4=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error4" >&5
+$as_echo "$glibcxx_cv_system_error4" >&6; }
+if test x"$glibcxx_cv_system_error4" = x"yes"; then
+
+$as_echo "#define HAVE_EPROTO 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENODATA" >&5
+$as_echo_n "checking for ENODATA... " >&6; }
+if test "${glibcxx_cv_system_error5+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENODATA;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error5=yes
+else
+  glibcxx_cv_system_error5=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error5" >&5
+$as_echo "$glibcxx_cv_system_error5" >&6; }
+if test x"$glibcxx_cv_system_error5" = x"yes"; then
+
+$as_echo "#define HAVE_ENODATA 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOSR" >&5
+$as_echo_n "checking for ENOSR... " >&6; }
+if test "${glibcxx_cv_system_error6+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOSR;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error6=yes
+else
+  glibcxx_cv_system_error6=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error6" >&5
+$as_echo "$glibcxx_cv_system_error6" >&6; }
+if test x"$glibcxx_cv_system_error6" = x"yes"; then
+
+$as_echo "#define HAVE_ENOSR 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOSTR" >&5
+$as_echo_n "checking for ENOSTR... " >&6; }
+if test "${glibcxx_cv_system_error7+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOSTR;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error7=yes
+else
+  glibcxx_cv_system_error7=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error7" >&5
+$as_echo "$glibcxx_cv_system_error7" >&6; }
+if test x"$glibcxx_cv_system_error7" = x"yes"; then
+
+$as_echo "#define HAVE_ENOSTR 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ETIME" >&5
+$as_echo_n "checking for ETIME... " >&6; }
+if test "${glibcxx_cv_system_error8+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ETIME;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error8=yes
+else
+  glibcxx_cv_system_error8=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error8" >&5
+$as_echo "$glibcxx_cv_system_error8" >&6; }
+if test x"$glibcxx_cv_system_error8" = x"yes"; then
+
+$as_echo "#define HAVE_ETIME 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EBADMSG" >&5
+$as_echo_n "checking for EBADMSG... " >&6; }
+if test "${glibcxx_cv_system_error9+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EBADMSG;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error9=yes
+else
+  glibcxx_cv_system_error9=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error9" >&5
+$as_echo "$glibcxx_cv_system_error9" >&6; }
+if test x"$glibcxx_cv_system_error9" = x"yes"; then
+
+$as_echo "#define HAVE_EBADMSG 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECANCELED" >&5
+$as_echo_n "checking for ECANCELED... " >&6; }
+if test "${glibcxx_cv_system_error10+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ECANCELED;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error10=yes
+else
+  glibcxx_cv_system_error10=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error10" >&5
+$as_echo "$glibcxx_cv_system_error10" >&6; }
+if test x"$glibcxx_cv_system_error10" = x"yes"; then
+
+$as_echo "#define HAVE_ECANCELED 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW" >&5
+$as_echo_n "checking for EOVERFLOW... " >&6; }
+if test "${glibcxx_cv_system_error11+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EOVERFLOW;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error11=yes
+else
+  glibcxx_cv_system_error11=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error11" >&5
+$as_echo "$glibcxx_cv_system_error11" >&6; }
+if test x"$glibcxx_cv_system_error11" = x"yes"; then
+
+$as_echo "#define HAVE_EOVERFLOW 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOTSUP" >&5
+$as_echo_n "checking for ENOTSUP... " >&6; }
+if test "${glibcxx_cv_system_error12+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOTSUP;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error12=yes
+else
+  glibcxx_cv_system_error12=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error12" >&5
+$as_echo "$glibcxx_cv_system_error12" >&6; }
+if test x"$glibcxx_cv_system_error12" = x"yes"; then
+
+$as_echo "#define HAVE_ENOTSUP 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EIDRM" >&5
+$as_echo_n "checking for EIDRM... " >&6; }
+if test "${glibcxx_cv_system_error13+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EIDRM;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error13=yes
+else
+  glibcxx_cv_system_error13=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error13" >&5
+$as_echo "$glibcxx_cv_system_error13" >&6; }
+if test x"$glibcxx_cv_system_error13" = x"yes"; then
+
+$as_echo "#define HAVE_EIDRM 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ETXTBSY" >&5
+$as_echo_n "checking for ETXTBSY... " >&6; }
+if test "${glibcxx_cv_system_error14+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ETXTBSY;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error14=yes
+else
+  glibcxx_cv_system_error14=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error14" >&5
+$as_echo "$glibcxx_cv_system_error14" >&6; }
+if test x"$glibcxx_cv_system_error14" = x"yes"; then
+
+$as_echo "#define HAVE_ETXTBSY 1" >>confdefs.h
+
+fi
+
+
+
+# For the streamoff typedef.
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t" >&5
+$as_echo_n "checking for int64_t... " >&6; }
+  if test "${glibcxx_cv_INT64_T+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+int
+main ()
+{
+int64_t var;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_INT64_T=yes
+else
+  glibcxx_cv_INT64_T=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+
+  if test $glibcxx_cv_INT64_T = yes; then
+
+$as_echo "#define HAVE_INT64_T 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_INT64_T" >&5
+$as_echo "$glibcxx_cv_INT64_T" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t as long" >&5
+$as_echo_n "checking for int64_t as long... " >&6; }
+    if test "${glibcxx_cv_int64_t_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+	template<typename, typename> struct same { enum { value = -1 }; };
+	template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
+	int array[same<int64_t, long>::value];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_int64_t_long=yes
+else
+  glibcxx_cv_int64_t_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+
+    if test $glibcxx_cv_int64_t_long = yes; then
+
+$as_echo "#define HAVE_INT64_T_LONG 1" >>confdefs.h
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_int64_t_long" >&5
+$as_echo "$glibcxx_cv_int64_t_long" >&6; }
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t as long long" >&5
+$as_echo_n "checking for int64_t as long long... " >&6; }
+    if test "${glibcxx_cv_int64_t_long_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+	template<typename, typename> struct same { enum { value = -1 }; };
+	template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
+	int array[same<int64_t, long long>::value];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_int64_t_long_long=yes
+else
+  glibcxx_cv_int64_t_long_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+
+    if test $glibcxx_cv_int64_t_long_long = yes; then
+
+$as_echo "#define HAVE_INT64_T_LONG_LONG 1" >>confdefs.h
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_int64_t_long_long" >&5
+$as_echo "$glibcxx_cv_int64_t_long_long" >&6; }
+    fi
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For LFS support.
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5
+$as_echo_n "checking for LFS support... " >&6; }
+  if test "${glibcxx_cv_LFS+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+       #include <stdio.h>
+       #include <sys/stat.h>
+
+int
+main ()
+{
+FILE* fp;
+       fopen64("t", "w");
+       fseeko64(fp, 0, SEEK_CUR);
+       ftello64(fp);
+       lseek64(1, 0, SEEK_CUR);
+       struct stat64 buf;
+       fstat64(1, &buf);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_LFS=yes
+else
+  glibcxx_cv_LFS=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+       #include <stdio.h>
+       #include <sys/stat.h>
+
+int
+main ()
+{
+FILE* fp;
+       fopen64("t", "w");
+       fseeko64(fp, 0, SEEK_CUR);
+       ftello64(fp);
+       lseek64(1, 0, SEEK_CUR);
+       struct stat64 buf;
+       fstat64(1, &buf);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_LFS=yes
+else
+  glibcxx_cv_LFS=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  if test $glibcxx_cv_LFS = yes; then
+
+$as_echo "#define _GLIBCXX_USE_LFS 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_LFS" >&5
+$as_echo "$glibcxx_cv_LFS" >&6; }
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For showmanyc_helper().
+for ac_header in sys/ioctl.h sys/filio.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for poll" >&5
+$as_echo_n "checking for poll... " >&6; }
+  if test "${glibcxx_cv_POLL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <poll.h>
+int
+main ()
+{
+struct pollfd pfd[1];
+       pfd[0].events = POLLIN;
+       poll(pfd, 1, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_POLL=yes
+else
+  glibcxx_cv_POLL=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <poll.h>
+int
+main ()
+{
+struct pollfd pfd[1];
+       pfd[0].events = POLLIN;
+       poll(pfd, 1, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_POLL=yes
+else
+  glibcxx_cv_POLL=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  if test $glibcxx_cv_POLL = yes; then
+
+$as_echo "#define HAVE_POLL 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_POLL" >&5
+$as_echo "$glibcxx_cv_POLL" >&6; }
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for S_ISREG or S_IFREG" >&5
+$as_echo_n "checking for S_ISREG or S_IFREG... " >&6; }
+  if test "${glibcxx_cv_S_ISREG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+       fstat(0, &buffer);
+       S_ISREG(buffer.st_mode);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_S_ISREG=yes
+else
+  glibcxx_cv_S_ISREG=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+       fstat(0, &buffer);
+       S_ISREG(buffer.st_mode);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_S_ISREG=yes
+else
+  glibcxx_cv_S_ISREG=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  if test "${glibcxx_cv_S_IFREG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+       fstat(0, &buffer);
+       S_IFREG & buffer.st_mode;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_S_IFREG=yes
+else
+  glibcxx_cv_S_IFREG=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+       fstat(0, &buffer);
+       S_IFREG & buffer.st_mode;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_S_IFREG=yes
+else
+  glibcxx_cv_S_IFREG=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  res=no
+  if test $glibcxx_cv_S_ISREG = yes; then
+
+$as_echo "#define HAVE_S_ISREG 1" >>confdefs.h
+
+    res=S_ISREG
+  elif test $glibcxx_cv_S_IFREG = yes; then
+
+$as_echo "#define HAVE_S_IFREG 1" >>confdefs.h
+
+    res=S_IFREG
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For xsputn_2().
+for ac_header in sys/uio.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_uio_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_UIO_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for writev" >&5
+$as_echo_n "checking for writev... " >&6; }
+  if test "${glibcxx_cv_WRITEV+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/uio.h>
+int
+main ()
+{
+struct iovec iov[2];
+       writev(0, iov, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_WRITEV=yes
+else
+  glibcxx_cv_WRITEV=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/uio.h>
+int
+main ()
+{
+struct iovec iov[2];
+       writev(0, iov, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  glibcxx_cv_WRITEV=yes
+else
+  glibcxx_cv_WRITEV=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+
+  if test $glibcxx_cv_WRITEV = yes; then
+
+$as_echo "#define HAVE_WRITEV 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_WRITEV" >&5
+$as_echo "$glibcxx_cv_WRITEV" >&6; }
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For C99 support to TR1.
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__
+  # undefined and fake C99 facilities may be spuriously enabled.
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++98"
+
+  # Check for the existence of <complex.h> complex math functions used
+  # by tr1/complex.
+  for ac_header in complex.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default"
+if test "x$ac_cv_header_complex_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_COMPLEX_H 1
+_ACEOF
+ ac_has_complex_h=yes
+else
+  ac_has_complex_h=no
+fi
+
+done
+
+  ac_c99_complex_tr1=no;
+  if test x"$ac_has_complex_h" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <complex.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <complex.h>... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <complex.h>
+int
+main ()
+{
+typedef __complex__ float float_type; float_type tmpf;
+		    cacosf(tmpf);
+		    casinf(tmpf);
+		    catanf(tmpf);
+		    cacoshf(tmpf);
+		    casinhf(tmpf);
+		    catanhf(tmpf);
+		    typedef __complex__ double double_type; double_type tmpd;
+		    cacos(tmpd);
+		    casin(tmpd);
+		    catan(tmpd);
+		    cacosh(tmpd);
+		    casinh(tmpd);
+		    catanh(tmpd);
+		    typedef __complex__ long double ld_type; ld_type tmpld;
+		    cacosl(tmpld);
+		    casinl(tmpld);
+		    catanl(tmpld);
+		    cacoshl(tmpld);
+		    casinhl(tmpld);
+		    catanhl(tmpld);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_c99_complex_tr1=yes
+else
+  ac_c99_complex_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_c99_complex_tr1" >&5
+$as_echo "$ac_c99_complex_tr1" >&6; }
+  if test x"$ac_c99_complex_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_COMPLEX_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <ctype.h> functions.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <ctype.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <ctype.h>... " >&6; }
+  if test "${glibcxx_cv_c99_ctype_tr1+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+int
+main ()
+{
+int ch;
+		  int ret;
+		  ret = isblank(ch);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_ctype_tr1=yes
+else
+  glibcxx_cv_c99_ctype_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_ctype_tr1" >&5
+$as_echo "$glibcxx_cv_c99_ctype_tr1" >&6; }
+  if test x"$glibcxx_cv_c99_ctype_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_CTYPE_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <fenv.h> functions.
+  for ac_header in fenv.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "fenv.h" "ac_cv_header_fenv_h" "$ac_includes_default"
+if test "x$ac_cv_header_fenv_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FENV_H 1
+_ACEOF
+ ac_has_fenv_h=yes
+else
+  ac_has_fenv_h=no
+fi
+
+done
+
+  ac_c99_fenv_tr1=no;
+  if test x"$ac_has_fenv_h" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <fenv.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <fenv.h>... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <fenv.h>
+int
+main ()
+{
+int except, mode;
+		    fexcept_t* pflag;
+		    fenv_t* penv;
+		    int ret;
+		    ret = feclearexcept(except);
+		    ret = fegetexceptflag(pflag, except);
+		    ret = feraiseexcept(except);
+		    ret = fesetexceptflag(pflag, except);
+		    ret = fetestexcept(except);
+		    ret = fegetround();
+		    ret = fesetround(mode);
+		    ret = fegetenv(penv);
+		    ret = feholdexcept(penv);
+		    ret = fesetenv(penv);
+		    ret = feupdateenv(penv);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_c99_fenv_tr1=yes
+else
+  ac_c99_fenv_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_c99_fenv_tr1" >&5
+$as_echo "$ac_c99_fenv_tr1" >&6; }
+  if test x"$ac_c99_fenv_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_FENV_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <stdint.h> types.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <stdint.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <stdint.h>... " >&6; }
+  if test "${glibcxx_cv_c99_stdint_tr1+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define __STDC_LIMIT_MACROS
+		  #define __STDC_CONSTANT_MACROS
+		  #include <stdint.h>
+int
+main ()
+{
+typedef int8_t          my_int8_t;
+		  my_int8_t               i8 = INT8_MIN;
+		  i8 = INT8_MAX;
+		  typedef int16_t         my_int16_t;
+		  my_int16_t              i16 = INT16_MIN;
+		  i16 = INT16_MAX;
+		  typedef int32_t         my_int32_t;
+		  my_int32_t              i32 = INT32_MIN;
+		  i32 = INT32_MAX;
+		  typedef int64_t         my_int64_t;
+		  my_int64_t              i64 = INT64_MIN;
+		  i64 = INT64_MAX;
+		  typedef int_fast8_t     my_int_fast8_t;
+		  my_int_fast8_t          if8 = INT_FAST8_MIN;
+		  if8 = INT_FAST8_MAX;
+		  typedef int_fast16_t    my_int_fast16_t;
+		  my_int_fast16_t         if16 = INT_FAST16_MIN;
+		  if16 = INT_FAST16_MAX;
+		  typedef int_fast32_t    my_int_fast32_t;
+		  my_int_fast32_t         if32 = INT_FAST32_MIN;
+		  if32 = INT_FAST32_MAX;
+		  typedef int_fast64_t    my_int_fast64_t;
+		  my_int_fast64_t         if64 = INT_FAST64_MIN;
+		  if64 = INT_FAST64_MAX;
+		  typedef int_least8_t    my_int_least8_t;
+		  my_int_least8_t         il8 = INT_LEAST8_MIN;
+		  il8 = INT_LEAST8_MAX;
+		  typedef int_least16_t   my_int_least16_t;
+		  my_int_least16_t        il16 = INT_LEAST16_MIN;
+		  il16 = INT_LEAST16_MAX;
+		  typedef int_least32_t   my_int_least32_t;
+		  my_int_least32_t        il32 = INT_LEAST32_MIN;
+		  il32 = INT_LEAST32_MAX;
+		  typedef int_least64_t   my_int_least64_t;
+		  my_int_least64_t        il64 = INT_LEAST64_MIN;
+		  il64 = INT_LEAST64_MAX;
+		  typedef intmax_t        my_intmax_t;
+		  my_intmax_t             im = INTMAX_MAX;
+		  im = INTMAX_MIN;
+		  typedef intptr_t        my_intptr_t;
+		  my_intptr_t             ip = INTPTR_MAX;
+		  ip = INTPTR_MIN;
+		  typedef uint8_t         my_uint8_t;
+		  my_uint8_t              ui8 = UINT8_MAX;
+		  ui8 = UINT8_MAX;
+		  typedef uint16_t        my_uint16_t;
+		  my_uint16_t             ui16 = UINT16_MAX;
+		  ui16 = UINT16_MAX;
+		  typedef uint32_t        my_uint32_t;
+		  my_uint32_t             ui32 = UINT32_MAX;
+		  ui32 = UINT32_MAX;
+		  typedef uint64_t        my_uint64_t;
+		  my_uint64_t             ui64 = UINT64_MAX;
+		  ui64 = UINT64_MAX;
+		  typedef uint_fast8_t    my_uint_fast8_t;
+		  my_uint_fast8_t         uif8 = UINT_FAST8_MAX;
+		  uif8 = UINT_FAST8_MAX;
+		  typedef uint_fast16_t   my_uint_fast16_t;
+		  my_uint_fast16_t        uif16 = UINT_FAST16_MAX;
+		  uif16 = UINT_FAST16_MAX;
+		  typedef uint_fast32_t   my_uint_fast32_t;
+		  my_uint_fast32_t        uif32 = UINT_FAST32_MAX;
+		  uif32 = UINT_FAST32_MAX;
+		  typedef uint_fast64_t   my_uint_fast64_t;
+		  my_uint_fast64_t        uif64 = UINT_FAST64_MAX;
+		  uif64 = UINT_FAST64_MAX;
+		  typedef uint_least8_t   my_uint_least8_t;
+		  my_uint_least8_t        uil8 = UINT_LEAST8_MAX;
+		  uil8 = UINT_LEAST8_MAX;
+		  typedef uint_least16_t  my_uint_least16_t;
+		  my_uint_least16_t       uil16 = UINT_LEAST16_MAX;
+		  uil16 = UINT_LEAST16_MAX;
+		  typedef uint_least32_t  my_uint_least32_t;
+		  my_uint_least32_t       uil32 = UINT_LEAST32_MAX;
+		  uil32 = UINT_LEAST32_MAX;
+		  typedef uint_least64_t  my_uint_least64_t;
+		  my_uint_least64_t       uil64 = UINT_LEAST64_MAX;
+		  uil64 = UINT_LEAST64_MAX;
+		  typedef uintmax_t       my_uintmax_t;
+		  my_uintmax_t            uim = UINTMAX_MAX;
+		  uim = UINTMAX_MAX;
+		  typedef uintptr_t       my_uintptr_t;
+		  my_uintptr_t            uip = UINTPTR_MAX;
+		  uip = UINTPTR_MAX;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_stdint_tr1=yes
+else
+  glibcxx_cv_c99_stdint_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdint_tr1" >&5
+$as_echo "$glibcxx_cv_c99_stdint_tr1" >&6; }
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_STDINT_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <math.h> functions.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <math.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <math.h>... " >&6; }
+  if test "${glibcxx_cv_c99_math_tr1+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+typedef double_t  my_double_t;
+		  typedef float_t   my_float_t;
+		  acosh(0.0);
+		  acoshf(0.0f);
+		  acoshl(0.0l);
+		  asinh(0.0);
+		  asinhf(0.0f);
+		  asinhl(0.0l);
+		  atanh(0.0);
+		  atanhf(0.0f);
+		  atanhl(0.0l);
+		  cbrt(0.0);
+		  cbrtf(0.0f);
+		  cbrtl(0.0l);
+		  copysign(0.0, 0.0);
+		  copysignf(0.0f, 0.0f);
+		  copysignl(0.0l, 0.0l);
+		  erf(0.0);
+		  erff(0.0f);
+		  erfl(0.0l);
+		  erfc(0.0);
+		  erfcf(0.0f);
+		  erfcl(0.0l);
+		  exp2(0.0);
+		  exp2f(0.0f);
+		  exp2l(0.0l);
+		  expm1(0.0);
+		  expm1f(0.0f);
+		  expm1l(0.0l);
+		  fdim(0.0, 0.0);
+		  fdimf(0.0f, 0.0f);
+		  fdiml(0.0l, 0.0l);
+		  fma(0.0, 0.0, 0.0);
+		  fmaf(0.0f, 0.0f, 0.0f);
+		  fmal(0.0l, 0.0l, 0.0l);
+		  fmax(0.0, 0.0);
+		  fmaxf(0.0f, 0.0f);
+		  fmaxl(0.0l, 0.0l);
+		  fmin(0.0, 0.0);
+		  fminf(0.0f, 0.0f);
+		  fminl(0.0l, 0.0l);
+		  hypot(0.0, 0.0);
+		  hypotf(0.0f, 0.0f);
+		  hypotl(0.0l, 0.0l);
+		  ilogb(0.0);
+		  ilogbf(0.0f);
+		  ilogbl(0.0l);
+		  lgamma(0.0);
+		  lgammaf(0.0f);
+		  lgammal(0.0l);
+		  llrint(0.0);
+		  llrintf(0.0f);
+		  llrintl(0.0l);
+		  llround(0.0);
+		  llroundf(0.0f);
+		  llroundl(0.0l);
+		  log1p(0.0);
+		  log1pf(0.0f);
+		  log1pl(0.0l);
+		  log2(0.0);
+		  log2f(0.0f);
+		  log2l(0.0l);
+		  logb(0.0);
+		  logbf(0.0f);
+		  logbl(0.0l);
+		  lrint(0.0);
+		  lrintf(0.0f);
+		  lrintl(0.0l);
+		  lround(0.0);
+		  lroundf(0.0f);
+		  lroundl(0.0l);
+		  nan(0);
+		  nanf(0);
+		  nanl(0);
+		  nearbyint(0.0);
+		  nearbyintf(0.0f);
+		  nearbyintl(0.0l);
+		  nextafter(0.0, 0.0);
+		  nextafterf(0.0f, 0.0f);
+		  nextafterl(0.0l, 0.0l);
+		  nexttoward(0.0, 0.0);
+		  nexttowardf(0.0f, 0.0f);
+		  nexttowardl(0.0l, 0.0l);
+		  remainder(0.0, 0.0);
+		  remainderf(0.0f, 0.0f);
+		  remainderl(0.0l, 0.0l);
+		  remquo(0.0, 0.0, 0);
+		  remquof(0.0f, 0.0f, 0);
+		  remquol(0.0l, 0.0l, 0);
+		  rint(0.0);
+		  rintf(0.0f);
+		  rintl(0.0l);
+		  round(0.0);
+		  roundf(0.0f);
+		  roundl(0.0l);
+		  scalbln(0.0, 0l);
+		  scalblnf(0.0f, 0l);
+		  scalblnl(0.0l, 0l);
+		  scalbn(0.0, 0);
+		  scalbnf(0.0f, 0);
+		  scalbnl(0.0l, 0);
+		  tgamma(0.0);
+		  tgammaf(0.0f);
+		  tgammal(0.0l);
+		  trunc(0.0);
+		  truncf(0.0f);
+		  truncl(0.0l);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_c99_math_tr1=yes
+else
+  glibcxx_cv_c99_math_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_math_tr1" >&5
+$as_echo "$glibcxx_cv_c99_math_tr1" >&6; }
+  if test x"$glibcxx_cv_c99_math_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_MATH_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of <inttypes.h> functions (NB: doesn't make
+  # sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1).
+  ac_c99_inttypes_tr1=no;
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support to TR1 in <inttypes.h>" >&5
+$as_echo_n "checking for ISO C99 support to TR1 in <inttypes.h>... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <inttypes.h>
+int
+main ()
+{
+intmax_t i, numer, denom, base;
+		    const char* s;
+		    char** endptr;
+		    intmax_t ret = imaxabs(i);
+		    imaxdiv_t dret = imaxdiv(numer, denom);
+		    ret = strtoimax(s, endptr, base);
+		    uintmax_t uret = strtoumax(s, endptr, base);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_c99_inttypes_tr1=yes
+else
+  ac_c99_inttypes_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_c99_inttypes_tr1" >&5
+$as_echo "$ac_c99_inttypes_tr1" >&6; }
+  if test x"$ac_c99_inttypes_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_INTTYPES_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of whcar_t <inttypes.h> functions (NB: doesn't
+  # make sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1).
+  ac_c99_inttypes_wchar_t_tr1=no;
+  if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t ISO C99 support to TR1 in <inttypes.h>" >&5
+$as_echo_n "checking for wchar_t ISO C99 support to TR1 in <inttypes.h>... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <inttypes.h>
+int
+main ()
+{
+intmax_t base;
+		    const wchar_t* s;
+		    wchar_t** endptr;
+		    intmax_t ret = wcstoimax(s, endptr, base);
+		    uintmax_t uret = wcstoumax(s, endptr, base);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_c99_inttypes_wchar_t_tr1=yes
+else
+  ac_c99_inttypes_wchar_t_tr1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_c99_inttypes_wchar_t_tr1" >&5
+$as_echo "$ac_c99_inttypes_wchar_t_tr1" >&6; }
+  if test x"$ac_c99_inttypes_wchar_t_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1" >>confdefs.h
+
+  fi
+
+  # Check for the existence of the <stdbool.h> header.
+  for ac_header in stdbool.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdbool_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+fi
+
+done
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For the EOF, SEEK_CUR, and SEEK_END integer constants.
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the value of EOF" >&5
+$as_echo_n "checking for the value of EOF... " >&6; }
+if test "${glibcxx_cv_stdio_eof+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if ac_fn_c_compute_int "$LINENO" "EOF" "glibcxx_cv_stdio_eof"        "#include <stdio.h>"; then :
+
+else
+  as_fn_error "computing EOF failed" "$LINENO" 5
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_stdio_eof" >&5
+$as_echo "$glibcxx_cv_stdio_eof" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_STDIO_EOF $glibcxx_cv_stdio_eof
+_ACEOF
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the value of SEEK_CUR" >&5
+$as_echo_n "checking for the value of SEEK_CUR... " >&6; }
+if test "${glibcxx_cv_stdio_seek_cur+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if ac_fn_c_compute_int "$LINENO" "SEEK_CUR" "glibcxx_cv_stdio_seek_cur"        "#include <stdio.h>"; then :
+
+else
+  as_fn_error "computing SEEK_CUR failed" "$LINENO" 5
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_stdio_seek_cur" >&5
+$as_echo "$glibcxx_cv_stdio_seek_cur" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_STDIO_SEEK_CUR $glibcxx_cv_stdio_seek_cur
+_ACEOF
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the value of SEEK_END" >&5
+$as_echo_n "checking for the value of SEEK_END... " >&6; }
+if test "${glibcxx_cv_stdio_seek_end+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if ac_fn_c_compute_int "$LINENO" "SEEK_END" "glibcxx_cv_stdio_seek_end"        "#include <stdio.h>"; then :
+
+else
+  as_fn_error "computing SEEK_END failed" "$LINENO" 5
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_stdio_seek_end" >&5
+$as_echo "$glibcxx_cv_stdio_seek_end" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_STDIO_SEEK_END $glibcxx_cv_stdio_seek_end
+_ACEOF
+
+
+
+# For gettimeofday support.
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday" >&5
+$as_echo_n "checking for gettimeofday... " >&6; }
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+  ac_has_gettimeofday=no;
+  for ac_header in sys/time.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_TIME_H 1
+_ACEOF
+ ac_has_sys_time_h=yes
+else
+  ac_has_sys_time_h=no
+fi
+
+done
+
+  if test x"$ac_has_sys_time_h" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday" >&5
+$as_echo_n "checking for gettimeofday... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+int
+main ()
+{
+timeval tv; gettimeofday(&tv, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_has_gettimeofday=yes
+else
+  ac_has_gettimeofday=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/time.h>
+int
+main ()
+{
+timeval tv; gettimeofday(&tv, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_has_gettimeofday=yes
+else
+  ac_has_gettimeofday=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_gettimeofday" >&5
+$as_echo "$ac_has_gettimeofday" >&6; }
+  fi
+
+  if test x"$ac_has_gettimeofday" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_GETTIMEOFDAY 1" >>confdefs.h
+
+  fi
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For clock_gettime, nanosleep and sched_yield support.
+# NB: The default is [no], because otherwise it requires linking.
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime, nanosleep and sched_yield" >&5
+$as_echo_n "checking for clock_gettime, nanosleep and sched_yield... " >&6; }
+   # Check whether --enable-libstdcxx-time was given.
+if test "${enable_libstdcxx_time+set}" = set; then :
+  enableval=$enable_libstdcxx_time;
+      case "$enableval" in
+       yes|no|rt) ;;
+       *) as_fn_error "Unknown argument to enable/disable libstdcxx-time" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_libstdcxx_time=no
+fi
+
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions"
+  ac_save_LIBS="$LIBS"
+
+  ac_has_clock_monotonic=no
+  ac_has_clock_realtime=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_time" >&5
+$as_echo "$enable_libstdcxx_time" >&6; }
+
+  if test x"$enable_libstdcxx_time" != x"no"; then
+
+    if test x"$enable_libstdcxx_time" = x"rt"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_clock_gettime=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
+
+else
+  ac_cv_search_clock_gettime=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
+$as_echo_n "checking for library containing nanosleep... " >&6; }
+if test "${ac_cv_search_nanosleep+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+int
+main ()
+{
+return nanosleep ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_nanosleep=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_nanosleep+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_nanosleep+set}" = set; then :
+
+else
+  ac_cv_search_nanosleep=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
+$as_echo "$ac_cv_search_nanosleep" >&6; }
+ac_res=$ac_cv_search_nanosleep
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_clock_gettime=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
+
+else
+  ac_cv_search_clock_gettime=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
+$as_echo_n "checking for library containing nanosleep... " >&6; }
+if test "${ac_cv_search_nanosleep+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+int
+main ()
+{
+return nanosleep ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_nanosleep=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_nanosleep+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_nanosleep+set}" = set; then :
+
+else
+  ac_cv_search_nanosleep=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
+$as_echo "$ac_cv_search_nanosleep" >&6; }
+ac_res=$ac_cv_search_nanosleep
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+    fi
+
+    case "$ac_cv_search_clock_gettime" in
+      -l*) GLIBCXX_LIBS=$ac_cv_search_clock_gettime
+      ;;
+    esac
+    case "$ac_cv_search_nanosleep" in
+      -l*) GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_nanosleep"
+      ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sched_yield" >&5
+$as_echo_n "checking for library containing sched_yield... " >&6; }
+if test "${ac_cv_search_sched_yield+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main ()
+{
+return sched_yield ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_sched_yield=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_sched_yield+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_sched_yield+set}" = set; then :
+
+else
+  ac_cv_search_sched_yield=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sched_yield" >&5
+$as_echo "$ac_cv_search_sched_yield" >&6; }
+ac_res=$ac_cv_search_sched_yield
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+    case "$ac_cv_search_sched_yield" in
+      -lposix4*)
+      GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
+
+$as_echo "#define _GLIBCXX_USE_SCHED_YIELD 1" >>confdefs.h
+
+      ;;
+      -lrt*)
+      if test x"$enable_libstdcxx_time" = x"rt"; then
+	GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
+
+$as_echo "#define _GLIBCXX_USE_SCHED_YIELD 1" >>confdefs.h
+
+      fi
+      ;;
+      *)
+
+$as_echo "#define _GLIBCXX_USE_SCHED_YIELD 1" >>confdefs.h
+
+      ;;
+    esac
+
+    for ac_header in unistd.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_UNISTD_H 1
+_ACEOF
+ ac_has_unistd_h=yes
+else
+  ac_has_unistd_h=no
+fi
+
+done
+
+
+    if test x"$ac_has_unistd_h" = x"yes"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for monotonic clock" >&5
+$as_echo_n "checking for monotonic clock... " >&6; }
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+	 #include <time.h>
+
+int
+main ()
+{
+#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
+	  timespec tp;
+	 #endif
+	  clock_gettime(CLOCK_MONOTONIC, &tp);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_has_clock_monotonic=yes
+else
+  ac_has_clock_monotonic=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_clock_monotonic" >&5
+$as_echo "$ac_has_clock_monotonic" >&6; }
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for realtime clock" >&5
+$as_echo_n "checking for realtime clock... " >&6; }
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+	 #include <time.h>
+
+int
+main ()
+{
+#if _POSIX_TIMERS > 0
+	  timespec tp;
+	 #endif
+	  clock_gettime(CLOCK_REALTIME, &tp);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_has_clock_realtime=yes
+else
+  ac_has_clock_realtime=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_clock_realtime" >&5
+$as_echo "$ac_has_clock_realtime" >&6; }
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep" >&5
+$as_echo_n "checking for nanosleep... " >&6; }
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+	 #include <time.h>
+
+int
+main ()
+{
+#if _POSIX_TIMERS > 0
+	  timespec tp;
+	 #endif
+	  nanosleep(&tp, 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_has_nanosleep=yes
+else
+  ac_has_nanosleep=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_nanosleep" >&5
+$as_echo "$ac_has_nanosleep" >&6; }
+    fi
+  fi
+
+  if test x"$ac_has_clock_monotonic" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_CLOCK_MONOTONIC 1" >>confdefs.h
+
+  fi
+
+  if test x"$ac_has_clock_realtime" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_CLOCK_REALTIME 1" >>confdefs.h
+
+  fi
+
+  if test x"$ac_has_nanosleep" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_NANOSLEEP 1" >>confdefs.h
+
+  fi
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  LIBS="$ac_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# For gthread support
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -fno-exceptions -I${toplevel_srcdir}/gcc"
+
+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
+  case $target_thread_file in
+    posix)
+      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gthreads library" >&5
+$as_echo_n "checking for gthreads library... " >&6; }
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "gthr.h"
+int
+main ()
+{
+
+      #ifndef __GTHREADS_CXX0X
+      #error
+      #endif
+
+      // In case of POSIX threads check _POSIX_TIMEOUTS too.
+      #if (defined(_PTHREADS) \
+	   && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
+      #error
+      #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_has_gthreads=yes
+else
+  ac_has_gthreads=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_gthreads" >&5
+$as_echo "$ac_has_gthreads" >&6; }
+
+  if test x"$ac_has_gthreads" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_HAS_GTHREADS 1" >>confdefs.h
+
+  fi
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = x""yes; then :
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if test "${ac_cv_val_LC_MESSAGES+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_val_LC_MESSAGES=yes
+else
+  ac_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_val_LC_MESSAGES" >&5
+$as_echo "$ac_cv_val_LC_MESSAGES" >&6; }
+    if test $ac_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+    fi
+
+fi
+
+
+
+
+# Check for available headers.
+for ac_header in endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
+locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
+strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
+sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
+wchar.h wctype.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Only do link tests if native. Else, hardcode.
+if $GLIBCXX_IS_NATIVE; then
+
+  # We can do more elaborate tests that assume a working linker.
+  CANADIAN=no
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  # For /dev/random and /dev/urandom for TR1.
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/random\" and \"/dev/urandom\" for TR1 random_device" >&5
+$as_echo_n "checking for \"/dev/random\" and \"/dev/urandom\" for TR1 random_device... " >&6; }
+  if test "${glibcxx_cv_random_tr1+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test -r /dev/random && test -r /dev/urandom; then
+      glibcxx_cv_random_tr1=yes;
+    else
+      glibcxx_cv_random_tr1=no;
+    fi
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_random_tr1" >&5
+$as_echo "$glibcxx_cv_random_tr1" >&6; }
+
+  if test x"$glibcxx_cv_random_tr1" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h
+
+  fi
+
+
+
+  # For TLS support.
+
+
+   # Check whether --enable-tls was given.
+if test "${enable_tls+set}" = set; then :
+  enableval=$enable_tls;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable tls must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_tls=yes
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports thread-local storage" >&5
+$as_echo_n "checking whether the target supports thread-local storage... " >&6; }
+if test "${gcc_cv_have_tls+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test "$cross_compiling" = yes; then :
+                if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  chktls_save_LDFLAGS="$LDFLAGS"
+	  	  	  case $host in
+	    *-*-linux*)
+	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
+	      ;;
+	  esac
+	  chktls_save_CFLAGS="$CFLAGS"
+	  CFLAGS="-fPIC $CFLAGS"
+	  	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int f() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int f() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  CFLAGS="$chktls_save_CFLAGS"
+	  LDFLAGS="$chktls_save_LDFLAGS"
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+                      chktls_save_LDFLAGS="$LDFLAGS"
+      LDFLAGS="-static $LDFLAGS"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LDFLAGS="$chktls_save_LDFLAGS"
+      if test $gcc_cv_have_tls = yes; then
+						chktls_save_CFLAGS="$CFLAGS"
+	thread_CFLAGS=failed
+	for flag in '' '-pthread' '-lpthread'; do
+	  CFLAGS="$flag $chktls_save_CFLAGS"
+	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		void *g(void *d) { return NULL; }
+int
+main ()
+{
+pthread_t t; pthread_create(&t,NULL,g,NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  thread_CFLAGS="$flag"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  if test "X$thread_CFLAGS" != Xfailed; then
+	    break
+	  fi
+	done
+	CFLAGS="$chktls_save_CFLAGS"
+	if test "X$thread_CFLAGS" != Xfailed; then
+	  CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
+ 	  	  	  	  	  	  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		__thread int a;
+		static int *volatile a_in_other_thread;
+		static void *
+		thread_func (void *arg)
+		{
+		  a_in_other_thread = &a;
+		  return (void *)0;
+		}
+int
+main ()
+{
+pthread_t thread;
+		void *thread_retval;
+		int *volatile a_in_main_thread;
+		a_in_main_thread = &a;
+		if (pthread_create (&thread, (pthread_attr_t *)0,
+				    thread_func, (void *)0))
+		  return 0;
+		if (pthread_join (thread, &thread_retval))
+		  return 0;
+		return (a_in_other_thread == a_in_main_thread);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+	  CFLAGS="$chktls_save_CFLAGS"
+	fi
+      fi
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_have_tls" >&5
+$as_echo "$gcc_cv_have_tls" >&6; }
+  if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
+
+$as_echo "#define HAVE_TLS 1" >>confdefs.h
+
+  fi
+
+  # For iconv support.
+
+      if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	test "$with_gnu_ld" != no && break
+      else
+	test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  acl_cv_prog_gnu_ld=yes
+else
+  acl_cv_prog_gnu_ld=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+  wl="$acl_cv_wl"
+  libext="$acl_cv_libext"
+  shlibext="$acl_cv_shlibext"
+  hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  hardcode_direct="$acl_cv_hardcode_direct"
+  hardcode_minus_L="$acl_cv_hardcode_minus_L"
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+  withval=$with_libiconv_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/lib"
+      fi
+    fi
+
+fi
+
+      LIBICONV=
+  LTLIBICONV=
+  INCICONV=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          if test $use_additional = yes; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+              found_dir="$additional_libdir"
+              found_so="$additional_libdir/lib$name.$shlibext"
+              if test -f "$additional_libdir/lib$name.la"; then
+                found_la="$additional_libdir/lib$name.la"
+              fi
+            else
+              if test -f "$additional_libdir/lib$name.$libext"; then
+                found_dir="$additional_libdir"
+                found_a="$additional_libdir/lib$name.$libext"
+                if test -f "$additional_libdir/lib$name.la"; then
+                  found_la="$additional_libdir/lib$name.la"
+                fi
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                    found_dir="$dir"
+                    found_so="$dir/lib$name.$shlibext"
+                    if test -f "$dir/lib$name.la"; then
+                      found_la="$dir/lib$name.la"
+                    fi
+                  else
+                    if test -f "$dir/lib$name.$libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/lib$name.$libext"
+                      if test -f "$dir/lib$name.la"; then
+                        found_la="$dir/lib$name.la"
+                      fi
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$hardcode_direct" = yes; then
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+              else
+                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */lib | */lib/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux*) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux*) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+                    LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+            LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  am_cv_proto_iconv_arg1=""
+else
+  am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+
+else
+
+  # This lets us hard-code the functionality we know we'll have in the cross
+  # target environment.  "Let" is a sugar-coated word placed on an especially
+  # dull and tedious hack, actually.
+  #
+  # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros
+  # that involve linking, can't be used:
+  #    "cannot open sim-crt0.o"
+  #    "cannot open crt0.o"
+  # etc.  All this is because there currently exists no unified, consistent
+  # way for top level CC information to be passed down to target directories:
+  # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
+  # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
+  # crosses can be removed.
+
+  # If Canadian cross, then don't pick up tools from the build directory.
+  # Used only in GLIBCXX_EXPORT_INCLUDES.
+  if test -n "$with_cross_host" &&
+     test x"$build_alias" != x"$with_cross_host" &&
+     test x"$build" != x"$target";
+  then
+    CANADIAN=yes
+  else
+    CANADIAN=no
+  fi
+
+  # Construct crosses by hand, eliminating bits that need ld...
+  # GLIBCXX_CHECK_MATH_SUPPORT
+
+  # First, test for "known" system libraries.  We may be using newlib even
+  # on a hosted environment.
+  if test "x${with_newlib}" = "xyes"; then
+    os_include_dir="os/newlib"
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+
+    # GLIBCXX_CHECK_STDLIB_SUPPORT
+    $as_echo "#define HAVE_STRTOF 1" >>confdefs.h
+
+
+    $as_echo "#define HAVE_ACOSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ASINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATAN2F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_CEILF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_EXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FABSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FLOORF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FMODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LDEXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODFF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_POWF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANHF 1" >>confdefs.h
+
+
+    $as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  else
+
+# Base decisions on target environment.
+case "${host}" in
+  arm*-*-symbianelf*)
+    # This is a freestanding configuration; there is nothing to do here.
+    ;;
+
+  mips*-sde-elf*)
+    # These definitions are for the SDE C library rather than newlib.
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # All these tests are for C++; save the language and the compiler flags.
+  # The CXXFLAGS thing is suspicious, but based on similar bits previously
+  # found in GLIBCXX_CONFIGURE.
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+
+  # Check for maintainer-mode bits.
+  if test x"$USE_MAINTAINER_MODE" = xno; then
+    WERROR=''
+  else
+    WERROR='-Werror'
+  fi
+
+  # Check for -ffunction-sections -fdata-sections
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+$as_echo_n "checking for g++ that supports -ffunction-sections -fdata-sections... " >&6; }
+  CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo; void bar() { };
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_fdsections=yes
+else
+  ac_fdsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_test_CXXFLAGS" = set; then
+    CXXFLAGS="$ac_save_CXXFLAGS"
+  else
+    # this is the suspicious part
+    CXXFLAGS=''
+  fi
+  if test x"$ac_fdsections" = x"yes"; then
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
+$as_echo "$ac_fdsections" >&6; }
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+
+    $as_echo "#define HAVE_LDEXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
+
+    ;;
+
+  *-aix*)
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+    $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h
+
+    # We don't yet support AIX's TLS ABI.
+    #GCC_CHECK_TLS
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  am_cv_proto_iconv_arg1=""
+else
+  am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+    ;;
+
+  *-darwin*)
+    # Darwin versions vary, but the linker should work in a cross environment,
+    # so we just check for all the features here.
+    # Check for available headers.
+
+    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+    ;;
+
+  *djgpp)
+    # GLIBCXX_CHECK_MATH_SUPPORT
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINCOS 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    ;;
+
+  *-freebsd*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+    $as_echo "#define HAVE_SETENV 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FINITEF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
+
+
+    $as_echo "#define HAVE_ACOSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ASINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATAN2F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_CEILF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_EXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FABSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FLOORF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FMODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LDEXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODFF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_POWF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANHF 1" >>confdefs.h
+
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      $as_echo "#define HAVE_FINITEL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISINFL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISNANL 1" >>confdefs.h
+
+    fi
+    ;;
+  *-hpux*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+    # GLIBCXX_CHECK_MATH_SUPPORT
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ACOSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ASINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_EXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATAN2F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FABSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FMODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_POWF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
+
+
+    # GLIBCXX_CHECK_STDLIB_SUPPORT
+    $as_echo "#define HAVE_STRTOLD 1" >>confdefs.h
+
+
+
+
+   # Check whether --enable-tls was given.
+if test "${enable_tls+set}" = set; then :
+  enableval=$enable_tls;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable tls must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_tls=yes
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports thread-local storage" >&5
+$as_echo_n "checking whether the target supports thread-local storage... " >&6; }
+if test "${gcc_cv_have_tls+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test "$cross_compiling" = yes; then :
+                if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  chktls_save_LDFLAGS="$LDFLAGS"
+	  	  	  case $host in
+	    *-*-linux*)
+	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
+	      ;;
+	  esac
+	  chktls_save_CFLAGS="$CFLAGS"
+	  CFLAGS="-fPIC $CFLAGS"
+	  	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int f() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int f() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  CFLAGS="$chktls_save_CFLAGS"
+	  LDFLAGS="$chktls_save_LDFLAGS"
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+                      chktls_save_LDFLAGS="$LDFLAGS"
+      LDFLAGS="-static $LDFLAGS"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LDFLAGS="$chktls_save_LDFLAGS"
+      if test $gcc_cv_have_tls = yes; then
+						chktls_save_CFLAGS="$CFLAGS"
+	thread_CFLAGS=failed
+	for flag in '' '-pthread' '-lpthread'; do
+	  CFLAGS="$flag $chktls_save_CFLAGS"
+	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		void *g(void *d) { return NULL; }
+int
+main ()
+{
+pthread_t t; pthread_create(&t,NULL,g,NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  thread_CFLAGS="$flag"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  if test "X$thread_CFLAGS" != Xfailed; then
+	    break
+	  fi
+	done
+	CFLAGS="$chktls_save_CFLAGS"
+	if test "X$thread_CFLAGS" != Xfailed; then
+	  CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
+ 	  	  	  	  	  	  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		__thread int a;
+		static int *volatile a_in_other_thread;
+		static void *
+		thread_func (void *arg)
+		{
+		  a_in_other_thread = &a;
+		  return (void *)0;
+		}
+int
+main ()
+{
+pthread_t thread;
+		void *thread_retval;
+		int *volatile a_in_main_thread;
+		a_in_main_thread = &a;
+		if (pthread_create (&thread, (pthread_attr_t *)0,
+				    thread_func, (void *)0))
+		  return 0;
+		if (pthread_join (thread, &thread_retval))
+		  return 0;
+		return (a_in_other_thread == a_in_main_thread);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+	  CFLAGS="$chktls_save_CFLAGS"
+	fi
+      fi
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_have_tls" >&5
+$as_echo "$gcc_cv_have_tls" >&6; }
+  if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
+
+$as_echo "#define HAVE_TLS 1" >>confdefs.h
+
+  fi
+    case "$target" in
+      *-hpux10*)
+	$as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+	$as_echo "#define HAVE_ISINFF 1" >>confdefs.h
+
+	$as_echo "#define HAVE_ISNANF 1" >>confdefs.h
+
+	$as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+	$as_echo "#define HAVE_FINITEF 1" >>confdefs.h
+
+	;;
+    esac
+    ;;
+  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
+
+  # All these tests are for C++; save the language and the compiler flags.
+  # The CXXFLAGS thing is suspicious, but based on similar bits previously
+  # found in GLIBCXX_CONFIGURE.
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+
+  # Check for maintainer-mode bits.
+  if test x"$USE_MAINTAINER_MODE" = xno; then
+    WERROR=''
+  else
+    WERROR='-Werror'
+  fi
+
+  # Check for -ffunction-sections -fdata-sections
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+$as_echo_n "checking for g++ that supports -ffunction-sections -fdata-sections... " >&6; }
+  CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo; void bar() { };
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_fdsections=yes
+else
+  ac_fdsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_test_CXXFLAGS" = set; then
+    CXXFLAGS="$ac_save_CXXFLAGS"
+  else
+    # this is the suspicious part
+    CXXFLAGS=''
+  fi
+  if test x"$ac_fdsections" = x"yes"; then
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
+$as_echo "$ac_fdsections" >&6; }
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+    $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h
+
+
+
+   # Check whether --enable-tls was given.
+if test "${enable_tls+set}" = set; then :
+  enableval=$enable_tls;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable tls must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_tls=yes
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports thread-local storage" >&5
+$as_echo_n "checking whether the target supports thread-local storage... " >&6; }
+if test "${gcc_cv_have_tls+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    if test "$cross_compiling" = yes; then :
+                if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  chktls_save_LDFLAGS="$LDFLAGS"
+	  	  	  case $host in
+	    *-*-linux*)
+	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
+	      ;;
+	  esac
+	  chktls_save_CFLAGS="$CFLAGS"
+	  CFLAGS="-fPIC $CFLAGS"
+	  	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int f() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int f() { return a = b; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  CFLAGS="$chktls_save_CFLAGS"
+	  LDFLAGS="$chktls_save_LDFLAGS"
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+                      chktls_save_LDFLAGS="$LDFLAGS"
+      LDFLAGS="-static $LDFLAGS"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__thread int a; int b; int main() { return a = b; }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+  gcc_cv_have_tls=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LDFLAGS="$chktls_save_LDFLAGS"
+      if test $gcc_cv_have_tls = yes; then
+						chktls_save_CFLAGS="$CFLAGS"
+	thread_CFLAGS=failed
+	for flag in '' '-pthread' '-lpthread'; do
+	  CFLAGS="$flag $chktls_save_CFLAGS"
+	  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		void *g(void *d) { return NULL; }
+int
+main ()
+{
+pthread_t t; pthread_create(&t,NULL,g,NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  thread_CFLAGS="$flag"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	  if test "X$thread_CFLAGS" != Xfailed; then
+	    break
+	  fi
+	done
+	CFLAGS="$chktls_save_CFLAGS"
+	if test "X$thread_CFLAGS" != Xfailed; then
+	  CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
+ 	  	  	  	  	  	  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+		__thread int a;
+		static int *volatile a_in_other_thread;
+		static void *
+		thread_func (void *arg)
+		{
+		  a_in_other_thread = &a;
+		  return (void *)0;
+		}
+int
+main ()
+{
+pthread_t thread;
+		void *thread_retval;
+		int *volatile a_in_main_thread;
+		a_in_main_thread = &a;
+		if (pthread_create (&thread, (pthread_attr_t *)0,
+				    thread_func, (void *)0))
+		  return 0;
+		if (pthread_join (thread, &thread_retval))
+		  return 0;
+		return (a_in_other_thread == a_in_main_thread);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gcc_cv_have_tls=yes
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+	  CFLAGS="$chktls_save_CFLAGS"
+	fi
+      fi
+else
+  gcc_cv_have_tls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_have_tls" >&5
+$as_echo "$gcc_cv_have_tls" >&6; }
+  if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
+
+$as_echo "#define HAVE_TLS 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  am_cv_proto_iconv_arg1=""
+else
+  am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+    ;;
+  *-mingw32*)
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+    ;;
+  *-netbsd*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+    $as_echo "#define HAVE_FINITEF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINFF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
+
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      $as_echo "#define HAVE_FINITEL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISINFL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISNANL 1" >>confdefs.h
+
+    fi
+    ;;
+  *-netware)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    ;;
+  *-qnx6.1* | *-qnx6.2*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+    $as_echo "#define HAVE_COSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10L 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHL 1" >>confdefs.h
+
+    ;;
+  *-rtems*)
+
+  # All these tests are for C++; save the language and the compiler flags.
+  # The CXXFLAGS thing is suspicious, but based on similar bits previously
+  # found in GLIBCXX_CONFIGURE.
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+
+  # Check for maintainer-mode bits.
+  if test x"$USE_MAINTAINER_MODE" = xno; then
+    WERROR=''
+  else
+    WERROR='-Werror'
+  fi
+
+  # Check for -ffunction-sections -fdata-sections
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+$as_echo_n "checking for g++ that supports -ffunction-sections -fdata-sections... " >&6; }
+  CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo; void bar() { };
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_fdsections=yes
+else
+  ac_fdsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_test_CXXFLAGS" = set; then
+    CXXFLAGS="$ac_save_CXXFLAGS"
+  else
+    # this is the suspicious part
+    CXXFLAGS=''
+  fi
+  if test x"$ac_fdsections" = x"yes"; then
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
+$as_echo "$ac_fdsections" >&6; }
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  libm="-lm"
+fi
+
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf declaration" >&5
+$as_echo_n "checking for isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinf_use=yes
+else
+  glibcxx_cv_func_isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinf_use" >&5
+$as_echo "$glibcxx_cv_func_isinf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+    for ac_func in isinf
+do :
+  ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf"
+if test "x$ac_cv_func_isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinf declaration" >&5
+$as_echo_n "checking for _isinf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinf_use=yes
+else
+  glibcxx_cv_func__isinf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinf_use" >&5
+$as_echo "$glibcxx_cv_func__isinf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+      for ac_func in _isinf
+do :
+  ac_fn_c_check_func "$LINENO" "_isinf" "ac_cv_func__isinf"
+if test "x$ac_cv_func__isinf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan declaration" >&5
+$as_echo_n "checking for isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnan_use=yes
+else
+  glibcxx_cv_func_isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnan_use" >&5
+$as_echo "$glibcxx_cv_func_isnan_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+    for ac_func in isnan
+do :
+  ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan"
+if test "x$ac_cv_func_isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnan declaration" >&5
+$as_echo_n "checking for _isnan declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnan_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnan(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnan_use=yes
+else
+  glibcxx_cv_func__isnan_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnan_use" >&5
+$as_echo "$glibcxx_cv_func__isnan_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+      for ac_func in _isnan
+do :
+  ac_fn_c_check_func "$LINENO" "_isnan" "ac_cv_func__isnan"
+if test "x$ac_cv_func__isnan" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNAN 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite declaration" >&5
+$as_echo_n "checking for finite declaration... " >&6; }
+  if test x${glibcxx_cv_func_finite_use+set} != xset; then
+    if test "${glibcxx_cv_func_finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finite_use=yes
+else
+  glibcxx_cv_func_finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finite_use" >&5
+$as_echo "$glibcxx_cv_func_finite_use" >&6; }
+
+  if test x$glibcxx_cv_func_finite_use = x"yes"; then
+    for ac_func in finite
+do :
+  ac_fn_c_check_func "$LINENO" "finite" "ac_cv_func_finite"
+if test "x$ac_cv_func_finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finite declaration" >&5
+$as_echo_n "checking for _finite declaration... " >&6; }
+  if test x${glibcxx_cv_func__finite_use+set} != xset; then
+    if test "${glibcxx_cv_func__finite_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finite(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finite_use=yes
+else
+  glibcxx_cv_func__finite_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finite_use" >&5
+$as_echo "$glibcxx_cv_func__finite_use" >&6; }
+
+    if test x$glibcxx_cv_func__finite_use = x"yes"; then
+      for ac_func in _finite
+do :
+  ac_fn_c_check_func "$LINENO" "_finite" "ac_cv_func__finite"
+if test "x$ac_cv_func__finite" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITE 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincos declaration" >&5
+$as_echo_n "checking for sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincos_use=yes
+else
+  glibcxx_cv_func_sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincos_use" >&5
+$as_echo "$glibcxx_cv_func_sincos_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+    for ac_func in sincos
+do :
+  ac_fn_c_check_func "$LINENO" "sincos" "ac_cv_func_sincos"
+if test "x$ac_cv_func_sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincos declaration" >&5
+$as_echo_n "checking for _sincos declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincos_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincos_use=yes
+else
+  glibcxx_cv_func__sincos_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincos_use" >&5
+$as_echo "$glibcxx_cv_func__sincos_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+      for ac_func in _sincos
+do :
+  ac_fn_c_check_func "$LINENO" "_sincos" "ac_cv_func__sincos"
+if test "x$ac_cv_func__sincos" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass declaration" >&5
+$as_echo_n "checking for fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fpclass_use=yes
+else
+  glibcxx_cv_func_fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fpclass_use" >&5
+$as_echo "$glibcxx_cv_func_fpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+    for ac_func in fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "fpclass" "ac_cv_func_fpclass"
+if test "x$ac_cv_func_fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fpclass declaration" >&5
+$as_echo_n "checking for _fpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fpclass_use=yes
+else
+  glibcxx_cv_func__fpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fpclass_use" >&5
+$as_echo "$glibcxx_cv_func__fpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+      for ac_func in _fpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_fpclass" "ac_cv_func__fpclass"
+if test "x$ac_cv_func__fpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qfpclass declaration" >&5
+$as_echo_n "checking for qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_qfpclass_use=yes
+else
+  glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func_qfpclass_use" >&6; }
+
+  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+    for ac_func in qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "qfpclass" "ac_cv_func_qfpclass"
+if test "x$ac_cv_func_qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _qfpclass declaration" >&5
+$as_echo_n "checking for _qfpclass declaration... " >&6; }
+  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__qfpclass_use=yes
+else
+  glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__qfpclass_use" >&5
+$as_echo "$glibcxx_cv_func__qfpclass_use" >&6; }
+
+    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+      for ac_func in _qfpclass
+do :
+  ac_fn_c_check_func "$LINENO" "_qfpclass" "ac_cv_func__qfpclass"
+if test "x$ac_cv_func__qfpclass" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__QFPCLASS 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot declaration" >&5
+$as_echo_n "checking for hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypot_use=yes
+else
+  glibcxx_cv_func_hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypot_use" >&5
+$as_echo "$glibcxx_cv_func_hypot_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+    for ac_func in hypot
+do :
+  ac_fn_c_check_func "$LINENO" "hypot" "ac_cv_func_hypot"
+if test "x$ac_cv_func_hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOT 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypot declaration" >&5
+$as_echo_n "checking for _hypot declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypot_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypot_use=yes
+else
+  glibcxx_cv_func__hypot_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypot_use" >&5
+$as_echo "$glibcxx_cv_func__hypot_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+      for ac_func in _hypot
+do :
+  ac_fn_c_check_func "$LINENO" "_hypot" "ac_cv_func__hypot"
+if test "x$ac_cv_func__hypot" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOT 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float trig functions" >&5
+$as_echo_n "checking for float trig functions... " >&6; }
+  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_trig_use=yes
+else
+  glibcxx_cv_func_float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_trig_use" >&5
+$as_echo "$glibcxx_cv_func_float_trig_use" >&6; }
+  if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+    for ac_func in acosf asinf atanf cosf sinf tanf coshf sinhf tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float trig functions" >&5
+$as_echo_n "checking for _float trig functions... " >&6; }
+    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_trig_use=yes
+else
+  glibcxx_cv_func__float_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_trig_use" >&5
+$as_echo "$glibcxx_cv_func__float_trig_use" >&6; }
+    if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+      for ac_func in _acosf _asinf _atanf _cosf _sinf _tanf _coshf _sinhf _tanhf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float round functions" >&5
+$as_echo_n "checking for float round functions... " >&6; }
+  if test "${glibcxx_cv_func_float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceilf (0); floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_float_round_use=yes
+else
+  glibcxx_cv_func_float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_float_round_use" >&5
+$as_echo "$glibcxx_cv_func_float_round_use" >&6; }
+  if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+    for ac_func in ceilf floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _float round functions" >&5
+$as_echo_n "checking for _float round functions... " >&6; }
+    if test "${glibcxx_cv_func__float_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceilf (0); _floorf (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__float_round_use=yes
+else
+  glibcxx_cv_func__float_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__float_round_use" >&5
+$as_echo "$glibcxx_cv_func__float_round_use" >&6; }
+    if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+      for ac_func in _ceilf _floorf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expf declaration" >&5
+$as_echo_n "checking for expf declaration... " >&6; }
+  if test x${glibcxx_cv_func_expf_use+set} != xset; then
+    if test "${glibcxx_cv_func_expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expf_use=yes
+else
+  glibcxx_cv_func_expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expf_use" >&5
+$as_echo "$glibcxx_cv_func_expf_use" >&6; }
+
+  if test x$glibcxx_cv_func_expf_use = x"yes"; then
+    for ac_func in expf
+do :
+  ac_fn_c_check_func "$LINENO" "expf" "ac_cv_func_expf"
+if test "x$ac_cv_func_expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expf declaration" >&5
+$as_echo_n "checking for _expf declaration... " >&6; }
+  if test x${glibcxx_cv_func__expf_use+set} != xset; then
+    if test "${glibcxx_cv_func__expf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expf_use=yes
+else
+  glibcxx_cv_func__expf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expf_use" >&5
+$as_echo "$glibcxx_cv_func__expf_use" >&6; }
+
+    if test x$glibcxx_cv_func__expf_use = x"yes"; then
+      for ac_func in _expf
+do :
+  ac_fn_c_check_func "$LINENO" "_expf" "ac_cv_func__expf"
+if test "x$ac_cv_func__expf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanf declaration" >&5
+$as_echo_n "checking for isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanf_use=yes
+else
+  glibcxx_cv_func_isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanf_use" >&5
+$as_echo "$glibcxx_cv_func_isnanf_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+    for ac_func in isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "isnanf" "ac_cv_func_isnanf"
+if test "x$ac_cv_func_isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanf declaration" >&5
+$as_echo_n "checking for _isnanf declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanf_use=yes
+else
+  glibcxx_cv_func__isnanf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanf_use" >&5
+$as_echo "$glibcxx_cv_func__isnanf_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+      for ac_func in _isnanf
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanf" "ac_cv_func__isnanf"
+if test "x$ac_cv_func__isnanf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinff declaration" >&5
+$as_echo_n "checking for isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinff_use=yes
+else
+  glibcxx_cv_func_isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinff_use" >&5
+$as_echo "$glibcxx_cv_func_isinff_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+    for ac_func in isinff
+do :
+  ac_fn_c_check_func "$LINENO" "isinff" "ac_cv_func_isinff"
+if test "x$ac_cv_func_isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinff declaration" >&5
+$as_echo_n "checking for _isinff declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinff(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinff_use=yes
+else
+  glibcxx_cv_func__isinff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinff_use" >&5
+$as_echo "$glibcxx_cv_func__isinff_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+      for ac_func in _isinff
+do :
+  ac_fn_c_check_func "$LINENO" "_isinff" "ac_cv_func__isinff"
+if test "x$ac_cv_func__isinff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2f declaration" >&5
+$as_echo_n "checking for atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2f_use=yes
+else
+  glibcxx_cv_func_atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2f_use" >&5
+$as_echo "$glibcxx_cv_func_atan2f_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+    for ac_func in atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "atan2f" "ac_cv_func_atan2f"
+if test "x$ac_cv_func_atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2f declaration" >&5
+$as_echo_n "checking for _atan2f declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2f_use=yes
+else
+  glibcxx_cv_func__atan2f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2f_use" >&5
+$as_echo "$glibcxx_cv_func__atan2f_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+      for ac_func in _atan2f
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2f" "ac_cv_func__atan2f"
+if test "x$ac_cv_func__atan2f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsf declaration" >&5
+$as_echo_n "checking for fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsf_use=yes
+else
+  glibcxx_cv_func_fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsf_use" >&5
+$as_echo "$glibcxx_cv_func_fabsf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+    for ac_func in fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "fabsf" "ac_cv_func_fabsf"
+if test "x$ac_cv_func_fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsf declaration" >&5
+$as_echo_n "checking for _fabsf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsf_use=yes
+else
+  glibcxx_cv_func__fabsf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsf_use" >&5
+$as_echo "$glibcxx_cv_func__fabsf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+      for ac_func in _fabsf
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsf" "ac_cv_func__fabsf"
+if test "x$ac_cv_func__fabsf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodf declaration" >&5
+$as_echo_n "checking for fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodf_use=yes
+else
+  glibcxx_cv_func_fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodf_use" >&5
+$as_echo "$glibcxx_cv_func_fmodf_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+    for ac_func in fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "fmodf" "ac_cv_func_fmodf"
+if test "x$ac_cv_func_fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodf declaration" >&5
+$as_echo_n "checking for _fmodf declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodf_use=yes
+else
+  glibcxx_cv_func__fmodf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodf_use" >&5
+$as_echo "$glibcxx_cv_func__fmodf_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+      for ac_func in _fmodf
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodf" "ac_cv_func__fmodf"
+if test "x$ac_cv_func__fmodf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpf declaration" >&5
+$as_echo_n "checking for frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpf_use=yes
+else
+  glibcxx_cv_func_frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpf_use" >&5
+$as_echo "$glibcxx_cv_func_frexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+    for ac_func in frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "frexpf" "ac_cv_func_frexpf"
+if test "x$ac_cv_func_frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpf declaration" >&5
+$as_echo_n "checking for _frexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpf_use=yes
+else
+  glibcxx_cv_func__frexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpf_use" >&5
+$as_echo "$glibcxx_cv_func__frexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+      for ac_func in _frexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpf" "ac_cv_func__frexpf"
+if test "x$ac_cv_func__frexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotf declaration" >&5
+$as_echo_n "checking for hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotf_use=yes
+else
+  glibcxx_cv_func_hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotf_use" >&5
+$as_echo "$glibcxx_cv_func_hypotf_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+    for ac_func in hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "hypotf" "ac_cv_func_hypotf"
+if test "x$ac_cv_func_hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotf declaration" >&5
+$as_echo_n "checking for _hypotf declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotf_use=yes
+else
+  glibcxx_cv_func__hypotf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotf_use" >&5
+$as_echo "$glibcxx_cv_func__hypotf_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+      for ac_func in _hypotf
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotf" "ac_cv_func__hypotf"
+if test "x$ac_cv_func__hypotf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpf declaration" >&5
+$as_echo_n "checking for ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpf_use=yes
+else
+  glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpf_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+    for ac_func in ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpf" "ac_cv_func_ldexpf"
+if test "x$ac_cv_func_ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpf declaration" >&5
+$as_echo_n "checking for _ldexpf declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpf_use=yes
+else
+  glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpf_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpf_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+      for ac_func in _ldexpf
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpf" "ac_cv_func__ldexpf"
+if test "x$ac_cv_func__ldexpf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logf declaration" >&5
+$as_echo_n "checking for logf declaration... " >&6; }
+  if test x${glibcxx_cv_func_logf_use+set} != xset; then
+    if test "${glibcxx_cv_func_logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logf_use=yes
+else
+  glibcxx_cv_func_logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logf_use" >&5
+$as_echo "$glibcxx_cv_func_logf_use" >&6; }
+
+  if test x$glibcxx_cv_func_logf_use = x"yes"; then
+    for ac_func in logf
+do :
+  ac_fn_c_check_func "$LINENO" "logf" "ac_cv_func_logf"
+if test "x$ac_cv_func_logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logf declaration" >&5
+$as_echo_n "checking for _logf declaration... " >&6; }
+  if test x${glibcxx_cv_func__logf_use+set} != xset; then
+    if test "${glibcxx_cv_func__logf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logf_use=yes
+else
+  glibcxx_cv_func__logf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logf_use" >&5
+$as_echo "$glibcxx_cv_func__logf_use" >&6; }
+
+    if test x$glibcxx_cv_func__logf_use = x"yes"; then
+      for ac_func in _logf
+do :
+  ac_fn_c_check_func "$LINENO" "_logf" "ac_cv_func__logf"
+if test "x$ac_cv_func__logf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10f declaration" >&5
+$as_echo_n "checking for log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10f_use=yes
+else
+  glibcxx_cv_func_log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10f_use" >&5
+$as_echo "$glibcxx_cv_func_log10f_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+    for ac_func in log10f
+do :
+  ac_fn_c_check_func "$LINENO" "log10f" "ac_cv_func_log10f"
+if test "x$ac_cv_func_log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10F 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10f declaration" >&5
+$as_echo_n "checking for _log10f declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10f_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10f(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10f_use=yes
+else
+  glibcxx_cv_func__log10f_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10f_use" >&5
+$as_echo "$glibcxx_cv_func__log10f_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+      for ac_func in _log10f
+do :
+  ac_fn_c_check_func "$LINENO" "_log10f" "ac_cv_func__log10f"
+if test "x$ac_cv_func__log10f" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10F 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modff declaration" >&5
+$as_echo_n "checking for modff declaration... " >&6; }
+  if test x${glibcxx_cv_func_modff_use+set} != xset; then
+    if test "${glibcxx_cv_func_modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modff_use=yes
+else
+  glibcxx_cv_func_modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modff_use" >&5
+$as_echo "$glibcxx_cv_func_modff_use" >&6; }
+
+  if test x$glibcxx_cv_func_modff_use = x"yes"; then
+    for ac_func in modff
+do :
+  ac_fn_c_check_func "$LINENO" "modff" "ac_cv_func_modff"
+if test "x$ac_cv_func_modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modff declaration" >&5
+$as_echo_n "checking for _modff declaration... " >&6; }
+  if test x${glibcxx_cv_func__modff_use+set} != xset; then
+    if test "${glibcxx_cv_func__modff_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modff_use=yes
+else
+  glibcxx_cv_func__modff_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modff_use" >&5
+$as_echo "$glibcxx_cv_func__modff_use" >&6; }
+
+    if test x$glibcxx_cv_func__modff_use = x"yes"; then
+      for ac_func in _modff
+do :
+  ac_fn_c_check_func "$LINENO" "_modff" "ac_cv_func__modff"
+if test "x$ac_cv_func__modff" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modf declaration" >&5
+$as_echo_n "checking for modf declaration... " >&6; }
+  if test x${glibcxx_cv_func_modf_use+set} != xset; then
+    if test "${glibcxx_cv_func_modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modf_use=yes
+else
+  glibcxx_cv_func_modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modf_use" >&5
+$as_echo "$glibcxx_cv_func_modf_use" >&6; }
+
+  if test x$glibcxx_cv_func_modf_use = x"yes"; then
+    for ac_func in modf
+do :
+  ac_fn_c_check_func "$LINENO" "modf" "ac_cv_func_modf"
+if test "x$ac_cv_func_modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modf declaration" >&5
+$as_echo_n "checking for _modf declaration... " >&6; }
+  if test x${glibcxx_cv_func__modf_use+set} != xset; then
+    if test "${glibcxx_cv_func__modf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modf_use=yes
+else
+  glibcxx_cv_func__modf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modf_use" >&5
+$as_echo "$glibcxx_cv_func__modf_use" >&6; }
+
+    if test x$glibcxx_cv_func__modf_use = x"yes"; then
+      for ac_func in _modf
+do :
+  ac_fn_c_check_func "$LINENO" "_modf" "ac_cv_func__modf"
+if test "x$ac_cv_func__modf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powf declaration" >&5
+$as_echo_n "checking for powf declaration... " >&6; }
+  if test x${glibcxx_cv_func_powf_use+set} != xset; then
+    if test "${glibcxx_cv_func_powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powf_use=yes
+else
+  glibcxx_cv_func_powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powf_use" >&5
+$as_echo "$glibcxx_cv_func_powf_use" >&6; }
+
+  if test x$glibcxx_cv_func_powf_use = x"yes"; then
+    for ac_func in powf
+do :
+  ac_fn_c_check_func "$LINENO" "powf" "ac_cv_func_powf"
+if test "x$ac_cv_func_powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powf declaration" >&5
+$as_echo_n "checking for _powf declaration... " >&6; }
+  if test x${glibcxx_cv_func__powf_use+set} != xset; then
+    if test "${glibcxx_cv_func__powf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powf_use=yes
+else
+  glibcxx_cv_func__powf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powf_use" >&5
+$as_echo "$glibcxx_cv_func__powf_use" >&6; }
+
+    if test x$glibcxx_cv_func__powf_use = x"yes"; then
+      for ac_func in _powf
+do :
+  ac_fn_c_check_func "$LINENO" "_powf" "ac_cv_func__powf"
+if test "x$ac_cv_func__powf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtf declaration" >&5
+$as_echo_n "checking for sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtf_use=yes
+else
+  glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+    for ac_func in sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtf" "ac_cv_func_sqrtf"
+if test "x$ac_cv_func_sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtf declaration" >&5
+$as_echo_n "checking for _sqrtf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtf_use=yes
+else
+  glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtf_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+      for ac_func in _sqrtf
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtf" "ac_cv_func__sqrtf"
+if test "x$ac_cv_func__sqrtf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosf declaration" >&5
+$as_echo_n "checking for sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosf_use=yes
+else
+  glibcxx_cv_func_sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosf_use" >&5
+$as_echo "$glibcxx_cv_func_sincosf_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+    for ac_func in sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "sincosf" "ac_cv_func_sincosf"
+if test "x$ac_cv_func_sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosf declaration" >&5
+$as_echo_n "checking for _sincosf declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosf_use=yes
+else
+  glibcxx_cv_func__sincosf_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosf_use" >&5
+$as_echo "$glibcxx_cv_func__sincosf_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+      for ac_func in _sincosf
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosf" "ac_cv_func__sincosf"
+if test "x$ac_cv_func__sincosf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitef declaration" >&5
+$as_echo_n "checking for finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitef_use=yes
+else
+  glibcxx_cv_func_finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitef_use" >&5
+$as_echo "$glibcxx_cv_func_finitef_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+    for ac_func in finitef
+do :
+  ac_fn_c_check_func "$LINENO" "finitef" "ac_cv_func_finitef"
+if test "x$ac_cv_func_finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitef declaration" >&5
+$as_echo_n "checking for _finitef declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitef_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitef(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitef_use=yes
+else
+  glibcxx_cv_func__finitef_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitef_use" >&5
+$as_echo "$glibcxx_cv_func__finitef_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+      for ac_func in _finitef
+do :
+  ac_fn_c_check_func "$LINENO" "_finitef" "ac_cv_func__finitef"
+if test "x$ac_cv_func__finitef" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEF 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double trig functions" >&5
+$as_echo_n "checking for long double trig functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_trig_use=yes
+else
+  glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_trig_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+    for ac_func in acosl asinl atanl cosl sinl tanl coshl sinhl tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double trig functions" >&5
+$as_echo_n "checking for _long double trig functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_trig_use=yes
+else
+  glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_trig_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_trig_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+      for ac_func in _acosl _asinl _atanl _cosl _sinl _tanl _coshl _sinhl _tanhl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double round functions" >&5
+$as_echo_n "checking for long double round functions... " >&6; }
+  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ceill (0); floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_long_double_round_use=yes
+else
+  glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func_long_double_round_use" >&6; }
+  if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+    for ac_func in ceill floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _long double round functions" >&5
+$as_echo_n "checking for _long double round functions... " >&6; }
+    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+_ceill (0); _floorl (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__long_double_round_use=yes
+else
+  glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__long_double_round_use" >&5
+$as_echo "$glibcxx_cv_func__long_double_round_use" >&6; }
+    if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+      for ac_func in _ceill _floorl
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnanl declaration" >&5
+$as_echo_n "checking for isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isnanl_use=yes
+else
+  glibcxx_cv_func_isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isnanl_use" >&5
+$as_echo "$glibcxx_cv_func_isnanl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+    for ac_func in isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "isnanl" "ac_cv_func_isnanl"
+if test "x$ac_cv_func_isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isnanl declaration" >&5
+$as_echo_n "checking for _isnanl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isnanl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isnanl_use=yes
+else
+  glibcxx_cv_func__isnanl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isnanl_use" >&5
+$as_echo "$glibcxx_cv_func__isnanl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+      for ac_func in _isnanl
+do :
+  ac_fn_c_check_func "$LINENO" "_isnanl" "ac_cv_func__isnanl"
+if test "x$ac_cv_func__isnanl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISNANL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinfl declaration" >&5
+$as_echo_n "checking for isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_isinfl_use=yes
+else
+  glibcxx_cv_func_isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_isinfl_use" >&5
+$as_echo "$glibcxx_cv_func_isinfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+    for ac_func in isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "isinfl" "ac_cv_func_isinfl"
+if test "x$ac_cv_func_isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _isinfl declaration" >&5
+$as_echo_n "checking for _isinfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _isinfl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__isinfl_use=yes
+else
+  glibcxx_cv_func__isinfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__isinfl_use" >&5
+$as_echo "$glibcxx_cv_func__isinfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+      for ac_func in _isinfl
+do :
+  ac_fn_c_check_func "$LINENO" "_isinfl" "ac_cv_func__isinfl"
+if test "x$ac_cv_func__isinfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ISINFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2l declaration" >&5
+$as_echo_n "checking for atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_atan2l_use=yes
+else
+  glibcxx_cv_func_atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_atan2l_use" >&5
+$as_echo "$glibcxx_cv_func_atan2l_use" >&6; }
+
+  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+    for ac_func in atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "atan2l" "ac_cv_func_atan2l"
+if test "x$ac_cv_func_atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ATAN2L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _atan2l declaration" >&5
+$as_echo_n "checking for _atan2l declaration... " >&6; }
+  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__atan2l_use=yes
+else
+  glibcxx_cv_func__atan2l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__atan2l_use" >&5
+$as_echo "$glibcxx_cv_func__atan2l_use" >&6; }
+
+    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+      for ac_func in _atan2l
+do :
+  ac_fn_c_check_func "$LINENO" "_atan2l" "ac_cv_func__atan2l"
+if test "x$ac_cv_func__atan2l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__ATAN2L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for expl declaration" >&5
+$as_echo_n "checking for expl declaration... " >&6; }
+  if test x${glibcxx_cv_func_expl_use+set} != xset; then
+    if test "${glibcxx_cv_func_expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_expl_use=yes
+else
+  glibcxx_cv_func_expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_expl_use" >&5
+$as_echo "$glibcxx_cv_func_expl_use" >&6; }
+
+  if test x$glibcxx_cv_func_expl_use = x"yes"; then
+    for ac_func in expl
+do :
+  ac_fn_c_check_func "$LINENO" "expl" "ac_cv_func_expl"
+if test "x$ac_cv_func_expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _expl declaration" >&5
+$as_echo_n "checking for _expl declaration... " >&6; }
+  if test x${glibcxx_cv_func__expl_use+set} != xset; then
+    if test "${glibcxx_cv_func__expl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _expl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__expl_use=yes
+else
+  glibcxx_cv_func__expl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__expl_use" >&5
+$as_echo "$glibcxx_cv_func__expl_use" >&6; }
+
+    if test x$glibcxx_cv_func__expl_use = x"yes"; then
+      for ac_func in _expl
+do :
+  ac_fn_c_check_func "$LINENO" "_expl" "ac_cv_func__expl"
+if test "x$ac_cv_func__expl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__EXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fabsl declaration" >&5
+$as_echo_n "checking for fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fabsl_use=yes
+else
+  glibcxx_cv_func_fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fabsl_use" >&5
+$as_echo "$glibcxx_cv_func_fabsl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+    for ac_func in fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "fabsl" "ac_cv_func_fabsl"
+if test "x$ac_cv_func_fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FABSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fabsl declaration" >&5
+$as_echo_n "checking for _fabsl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _fabsl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fabsl_use=yes
+else
+  glibcxx_cv_func__fabsl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fabsl_use" >&5
+$as_echo "$glibcxx_cv_func__fabsl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+      for ac_func in _fabsl
+do :
+  ac_fn_c_check_func "$LINENO" "_fabsl" "ac_cv_func__fabsl"
+if test "x$ac_cv_func__fabsl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FABSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmodl declaration" >&5
+$as_echo_n "checking for fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_fmodl_use=yes
+else
+  glibcxx_cv_func_fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_fmodl_use" >&5
+$as_echo "$glibcxx_cv_func_fmodl_use" >&6; }
+
+  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+    for ac_func in fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "fmodl" "ac_cv_func_fmodl"
+if test "x$ac_cv_func_fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FMODL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _fmodl declaration" >&5
+$as_echo_n "checking for _fmodl declaration... " >&6; }
+  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__fmodl_use=yes
+else
+  glibcxx_cv_func__fmodl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__fmodl_use" >&5
+$as_echo "$glibcxx_cv_func__fmodl_use" >&6; }
+
+    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+      for ac_func in _fmodl
+do :
+  ac_fn_c_check_func "$LINENO" "_fmodl" "ac_cv_func__fmodl"
+if test "x$ac_cv_func__fmodl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FMODL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for frexpl declaration" >&5
+$as_echo_n "checking for frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_frexpl_use=yes
+else
+  glibcxx_cv_func_frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_frexpl_use" >&5
+$as_echo "$glibcxx_cv_func_frexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+    for ac_func in frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "frexpl" "ac_cv_func_frexpl"
+if test "x$ac_cv_func_frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FREXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _frexpl declaration" >&5
+$as_echo_n "checking for _frexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__frexpl_use=yes
+else
+  glibcxx_cv_func__frexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__frexpl_use" >&5
+$as_echo "$glibcxx_cv_func__frexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+      for ac_func in _frexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_frexpl" "ac_cv_func__frexpl"
+if test "x$ac_cv_func__frexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FREXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypotl declaration" >&5
+$as_echo_n "checking for hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_hypotl_use=yes
+else
+  glibcxx_cv_func_hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_hypotl_use" >&5
+$as_echo "$glibcxx_cv_func_hypotl_use" >&6; }
+
+  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+    for ac_func in hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "hypotl" "ac_cv_func_hypotl"
+if test "x$ac_cv_func_hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _hypotl declaration" >&5
+$as_echo_n "checking for _hypotl declaration... " >&6; }
+  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__hypotl_use=yes
+else
+  glibcxx_cv_func__hypotl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__hypotl_use" >&5
+$as_echo "$glibcxx_cv_func__hypotl_use" >&6; }
+
+    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+      for ac_func in _hypotl
+do :
+  ac_fn_c_check_func "$LINENO" "_hypotl" "ac_cv_func__hypotl"
+if test "x$ac_cv_func__hypotl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__HYPOTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldexpl declaration" >&5
+$as_echo_n "checking for ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_ldexpl_use=yes
+else
+  glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func_ldexpl_use" >&6; }
+
+  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+    for ac_func in ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "ldexpl" "ac_cv_func_ldexpl"
+if test "x$ac_cv_func_ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LDEXPL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ldexpl declaration" >&5
+$as_echo_n "checking for _ldexpl declaration... " >&6; }
+  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__ldexpl_use=yes
+else
+  glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__ldexpl_use" >&5
+$as_echo "$glibcxx_cv_func__ldexpl_use" >&6; }
+
+    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+      for ac_func in _ldexpl
+do :
+  ac_fn_c_check_func "$LINENO" "_ldexpl" "ac_cv_func__ldexpl"
+if test "x$ac_cv_func__ldexpl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LDEXPL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logl declaration" >&5
+$as_echo_n "checking for logl declaration... " >&6; }
+  if test x${glibcxx_cv_func_logl_use+set} != xset; then
+    if test "${glibcxx_cv_func_logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_logl_use=yes
+else
+  glibcxx_cv_func_logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_logl_use" >&5
+$as_echo "$glibcxx_cv_func_logl_use" >&6; }
+
+  if test x$glibcxx_cv_func_logl_use = x"yes"; then
+    for ac_func in logl
+do :
+  ac_fn_c_check_func "$LINENO" "logl" "ac_cv_func_logl"
+if test "x$ac_cv_func_logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOGL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _logl declaration" >&5
+$as_echo_n "checking for _logl declaration... " >&6; }
+  if test x${glibcxx_cv_func__logl_use+set} != xset; then
+    if test "${glibcxx_cv_func__logl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _logl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__logl_use=yes
+else
+  glibcxx_cv_func__logl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__logl_use" >&5
+$as_echo "$glibcxx_cv_func__logl_use" >&6; }
+
+    if test x$glibcxx_cv_func__logl_use = x"yes"; then
+      for ac_func in _logl
+do :
+  ac_fn_c_check_func "$LINENO" "_logl" "ac_cv_func__logl"
+if test "x$ac_cv_func__logl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOGL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10l declaration" >&5
+$as_echo_n "checking for log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func_log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_log10l_use=yes
+else
+  glibcxx_cv_func_log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_log10l_use" >&5
+$as_echo "$glibcxx_cv_func_log10l_use" >&6; }
+
+  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+    for ac_func in log10l
+do :
+  ac_fn_c_check_func "$LINENO" "log10l" "ac_cv_func_log10l"
+if test "x$ac_cv_func_log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOG10L 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _log10l declaration" >&5
+$as_echo_n "checking for _log10l declaration... " >&6; }
+  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+    if test "${glibcxx_cv_func__log10l_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _log10l(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__log10l_use=yes
+else
+  glibcxx_cv_func__log10l_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__log10l_use" >&5
+$as_echo "$glibcxx_cv_func__log10l_use" >&6; }
+
+    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+      for ac_func in _log10l
+do :
+  ac_fn_c_check_func "$LINENO" "_log10l" "ac_cv_func__log10l"
+if test "x$ac_cv_func__log10l" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__LOG10L 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modfl declaration" >&5
+$as_echo_n "checking for modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func_modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_modfl_use=yes
+else
+  glibcxx_cv_func_modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_modfl_use" >&5
+$as_echo "$glibcxx_cv_func_modfl_use" >&6; }
+
+  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+    for ac_func in modfl
+do :
+  ac_fn_c_check_func "$LINENO" "modfl" "ac_cv_func_modfl"
+if test "x$ac_cv_func_modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MODFL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _modfl declaration" >&5
+$as_echo_n "checking for _modfl declaration... " >&6; }
+  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+    if test "${glibcxx_cv_func__modfl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__modfl_use=yes
+else
+  glibcxx_cv_func__modfl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__modfl_use" >&5
+$as_echo "$glibcxx_cv_func__modfl_use" >&6; }
+
+    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+      for ac_func in _modfl
+do :
+  ac_fn_c_check_func "$LINENO" "_modfl" "ac_cv_func__modfl"
+if test "x$ac_cv_func__modfl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__MODFL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for powl declaration" >&5
+$as_echo_n "checking for powl declaration... " >&6; }
+  if test x${glibcxx_cv_func_powl_use+set} != xset; then
+    if test "${glibcxx_cv_func_powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_powl_use=yes
+else
+  glibcxx_cv_func_powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_powl_use" >&5
+$as_echo "$glibcxx_cv_func_powl_use" >&6; }
+
+  if test x$glibcxx_cv_func_powl_use = x"yes"; then
+    for ac_func in powl
+do :
+  ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl"
+if test "x$ac_cv_func_powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POWL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _powl declaration" >&5
+$as_echo_n "checking for _powl declaration... " >&6; }
+  if test x${glibcxx_cv_func__powl_use+set} != xset; then
+    if test "${glibcxx_cv_func__powl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__powl_use=yes
+else
+  glibcxx_cv_func__powl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__powl_use" >&5
+$as_echo "$glibcxx_cv_func__powl_use" >&6; }
+
+    if test x$glibcxx_cv_func__powl_use = x"yes"; then
+      for ac_func in _powl
+do :
+  ac_fn_c_check_func "$LINENO" "_powl" "ac_cv_func__powl"
+if test "x$ac_cv_func__powl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__POWL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrtl declaration" >&5
+$as_echo_n "checking for sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sqrtl_use=yes
+else
+  glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func_sqrtl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+    for ac_func in sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "sqrtl" "ac_cv_func_sqrtl"
+if test "x$ac_cv_func_sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SQRTL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sqrtl declaration" >&5
+$as_echo_n "checking for _sqrtl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sqrtl_use=yes
+else
+  glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sqrtl_use" >&5
+$as_echo "$glibcxx_cv_func__sqrtl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+      for ac_func in _sqrtl
+do :
+  ac_fn_c_check_func "$LINENO" "_sqrtl" "ac_cv_func__sqrtl"
+if test "x$ac_cv_func__sqrtl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SQRTL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sincosl declaration" >&5
+$as_echo_n "checking for sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_sincosl_use=yes
+else
+  glibcxx_cv_func_sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_sincosl_use" >&5
+$as_echo "$glibcxx_cv_func_sincosl_use" >&6; }
+
+  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+    for ac_func in sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "sincosl" "ac_cv_func_sincosl"
+if test "x$ac_cv_func_sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SINCOSL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sincosl declaration" >&5
+$as_echo_n "checking for _sincosl declaration... " >&6; }
+  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__sincosl_use=yes
+else
+  glibcxx_cv_func__sincosl_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__sincosl_use" >&5
+$as_echo "$glibcxx_cv_func__sincosl_use" >&6; }
+
+    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+      for ac_func in _sincosl
+do :
+  ac_fn_c_check_func "$LINENO" "_sincosl" "ac_cv_func__sincosl"
+if test "x$ac_cv_func__sincosl" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__SINCOSL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finitel declaration" >&5
+$as_echo_n "checking for finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func_finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_finitel_use=yes
+else
+  glibcxx_cv_func_finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_finitel_use" >&5
+$as_echo "$glibcxx_cv_func_finitel_use" >&6; }
+
+  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+    for ac_func in finitel
+do :
+  ac_fn_c_check_func "$LINENO" "finitel" "ac_cv_func_finitel"
+if test "x$ac_cv_func_finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+fi
+done
+
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _finitel declaration" >&5
+$as_echo_n "checking for _finitel declaration... " >&6; }
+  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+    if test "${glibcxx_cv_func__finitel_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+
+int
+main ()
+{
+ _finitel(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func__finitel_use=yes
+else
+  glibcxx_cv_func__finitel_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func__finitel_use" >&5
+$as_echo "$glibcxx_cv_func__finitel_use" >&6; }
+
+    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+      for ac_func in _finitel
+do :
+  ac_fn_c_check_func "$LINENO" "_finitel" "ac_cv_func__finitel"
+if test "x$ac_cv_func__finitel" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE__FINITEL 1
+_ACEOF
+
+fi
+done
+
+    fi
+  fi
+
+
+
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtold declaration" >&5
+$as_echo_n "checking for strtold declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtold_use=yes
+else
+  glibcxx_cv_func_strtold_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtold_use" >&5
+$as_echo "$glibcxx_cv_func_strtold_use" >&6; }
+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+    for ac_func in strtold
+do :
+  ac_fn_c_check_func "$LINENO" "strtold" "ac_cv_func_strtold"
+if test "x$ac_cv_func_strtold" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOLD 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtof declaration" >&5
+$as_echo_n "checking for strtof declaration... " >&6; }
+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_strtof_use=yes
+else
+  glibcxx_cv_func_strtof_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_strtof_use" >&5
+$as_echo "$glibcxx_cv_func_strtof_use" >&6; }
+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+    for ac_func in strtof
+do :
+  ac_fn_c_check_func "$LINENO" "strtof" "ac_cv_func_strtof"
+if test "x$ac_cv_func_strtof" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOF 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+
+
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+
+    ;;
+  *-solaris*)
+    case "$target" in
+      *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+         $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
+
+         $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+         $as_echo "#define HAVE_FPCLASS 1" >>confdefs.h
+
+         # All of the dependencies for wide character support are here, so
+         # turn it on.
+         $as_echo "#define _GLIBCXX_USE_WCHAR_T 1" >>confdefs.h
+
+        ;;
+    esac
+    case "$target" in
+      *-*-solaris2.10)
+      # These two C99 functions are present only in Solaris >= 10
+      $as_echo "#define HAVE_STRTOF 1" >>confdefs.h
+
+      $as_echo "#define HAVE_STRTOLD 1" >>confdefs.h
+
+     ;;
+    esac
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODFF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    ;;
+  *-tpf)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+  # If we're not using GNU ld, then there's no point in even trying these
+  # tests.  Check for that first.  We should have already tested for gld
+  # by now (in libtool), but require it now just to be safe...
+  test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+  test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+  # The name set by libtool depends on the version of libtool.  Shame on us
+  # for depending on an impl detail, but c'est la vie.  Older versions used
+  # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+  # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+  # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
+  # set (hence we're using an older libtool), then set it.
+  if test x${with_gnu_ld+set} != xset; then
+    if test x${ac_cv_prog_gnu_ld+set} != xset; then
+      # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
+      with_gnu_ld=no
+    else
+      with_gnu_ld=$ac_cv_prog_gnu_ld
+    fi
+  fi
+
+  # Start by getting the version number.  I think the libtool test already
+  # does some of this, but throws away the result.
+  glibcxx_ld_is_gold=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
+$as_echo_n "checking for ld version... " >&6; }
+
+    if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
+      glibcxx_ld_is_gold=yes
+    fi
+    ldver=`$LD --version 2>/dev/null |
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+
+    glibcxx_gnu_ld_version=`echo $ldver | \
+	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
+$as_echo "$glibcxx_gnu_ld_version" >&6; }
+  fi
+
+  # Set --gc-sections.
+  glibcxx_have_gc_sections=no
+  if test "$glibcxx_ld_is_gold" = "yes"; then
+    if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
+      glibcxx_have_gc_sections=yes
+    fi
+  else
+    glibcxx_gcsections_min_ld=21602
+    if test x"$with_gnu_ld" = x"yes" &&
+	test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
+      glibcxx_have_gc_sections=yes
+    fi
+  fi
+  if test "$glibcxx_have_gc_sections" = "yes"; then
+    # Sufficiently young GNU ld it is!  Joy and bunny rabbits!
+    # NB: This flag only works reliably after 2.16.1. Configure tests
+    # for this are difficult, so hard wire a value that should work.
+
+    ac_test_CFLAGS="${CFLAGS+set}"
+    ac_save_CFLAGS="$CFLAGS"
+    CFLAGS='-Wl,--gc-sections'
+
+    # Check for -Wl,--gc-sections
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
+$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
+    if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ int one(void) { return 1; }
+     int two(void) { return 2; }
+
+int
+main ()
+{
+ two();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_gcsections=yes
+else
+  ac_gcsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$ac_gcsections" = "yes"; then
+      rm -f conftest.c
+      touch conftest.c
+      if $CC -c conftest.c; then
+	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
+	   grep "Warning: gc-sections option ignored" > /dev/null; then
+	  ac_gcsections=no
+	fi
+      fi
+      rm -f conftest.c conftest.o conftest
+    fi
+    if test "$ac_gcsections" = "yes"; then
+      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
+$as_echo "$ac_gcsections" >&6; }
+
+    if test "$ac_test_CFLAGS" = set; then
+      CFLAGS="$ac_save_CFLAGS"
+    else
+      # this is the suspicious part
+      CFLAGS=''
+    fi
+  fi
+
+  # Set -z,relro.
+  # Note this is only for shared objects.
+  ac_ld_relro=no
+  if test x"$with_gnu_ld" = x"yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
+$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
+    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    if test -n "$cxx_z_relo"; then
+      OPT_LDFLAGS="-Wl,-z,relro"
+      ac_ld_relro=yes
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
+$as_echo "$ac_ld_relro" >&6; }
+  fi
+
+  # Set linker optimization flags.
+  if test x"$with_gnu_ld" = x"yes"; then
+    OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+  fi
+
+
+
+
+    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FINITEF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISINFF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINCOS 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINCOSF 1" >>confdefs.h
+
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      $as_echo "#define HAVE_FINITEL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_HYPOTL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISINFL 1" >>confdefs.h
+
+      $as_echo "#define HAVE_ISNANL 1" >>confdefs.h
+
+    fi
+    ;;
+  *-vxworks)
+    $as_echo "#define HAVE_ACOSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ASINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATAN2F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_CEILF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_EXPF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FABSF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FLOORF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FMODF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_POWF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANF 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANHF 1" >>confdefs.h
+
+    ;;
+  *)
+    as_fn_error "No support for this host/target combination." "$LINENO" 5
+   ;;
+esac
+
+  fi
+
+  # At some point, we should differentiate between architectures
+  # like x86, which have long double versions, and alpha/powerpc/etc.,
+  # which don't. For the time being, punt.
+  if test x"long_double_math_on_this_cpu" = x"yes"; then
+    $as_echo "#define HAVE_ACOSL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ASINL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATAN2L 1" >>confdefs.h
+
+    $as_echo "#define HAVE_ATANL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_CEILL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_COSHL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_EXPL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FABSL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FLOORL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FMODL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_FREXPL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LDEXPL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOG10L 1" >>confdefs.h
+
+    $as_echo "#define HAVE_LOGL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_MODFL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_POWL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINCOSL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SINHL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_SQRTL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANL 1" >>confdefs.h
+
+    $as_echo "#define HAVE_TANHL 1" >>confdefs.h
+
+  fi
+fi
+
+# Check for _Unwind_GetIPInfo.
+
+
+# Check whether --with-system-libunwind was given.
+if test "${with_system_libunwind+set}" = set; then :
+  withval=$with_system_libunwind;
+fi
+
+  # If system-libunwind was not specifically set, pick a default setting.
+  if test x$with_system_libunwind = x; then
+    case ${target} in
+      ia64-*-hpux*) with_system_libunwind=yes ;;
+      *) with_system_libunwind=no ;;
+    esac
+  fi
+  # Based on system-libunwind and target, do we have ipinfo?
+  if  test x$with_system_libunwind = xyes; then
+    case ${target} in
+      ia64-*-*) have_unwind_getipinfo=no ;;
+      *) have_unwind_getipinfo=yes ;;
+    esac
+  else
+    # Darwin before version 9 does not have _Unwind_GetIPInfo.
+
+    case ${target} in
+      *-*-darwin[3-8]|*-*-darwin[3-8].*) have_unwind_getipinfo=no ;;
+      *) have_unwind_getipinfo=yes ;;
+    esac
+
+  fi
+
+  if test x$have_unwind_getipinfo = xyes; then
+
+$as_echo "#define HAVE_GETIPINFO 1" >>confdefs.h
+
+  fi
+
+
+
+ # Check whether --enable-linux-futex was given.
+if test "${enable_linux_futex+set}" = set; then :
+  enableval=$enable_linux_futex;
+      case "$enableval" in
+       yes|no|default) ;;
+       *) as_fn_error "Unknown argument to enable/disable linux-futex" "$LINENO" 5 ;;
+                          esac
+
+else
+  enable_linux_futex=default
+fi
+
+
+case "$target" in
+  *-linux*)
+    case "$enable_linux_futex" in
+      default)
+	# If headers don't have gettid/futex syscalls definition, then
+	# default to no, otherwise there will be compile time failures.
+	# Otherwise, default to yes.  If we don't detect we are
+	# compiled/linked against NPTL and not cross-compiling, check
+	# if programs are run by default against NPTL and if not, issue
+	# a warning.
+	enable_linux_futex=no
+	if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/syscall.h>
+	   int lk;
+int
+main ()
+{
+syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  save_LIBS="$LIBS"
+	   LIBS="-lpthread $LIBS"
+	   if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef _GNU_SOURCE
+	     #define _GNU_SOURCE 1
+	     #endif
+	     #include <pthread.h>
+	     pthread_t th; void *status;
+int
+main ()
+{
+pthread_tryjoin_np (th, &status);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  enable_linux_futex=yes
+else
+  if test x$cross_compiling = xno; then
+	       if getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \
+		  | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then :; else
+		 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The kernel might not support futex or gettid syscalls.
+If so, please configure with --disable-linux-futex" >&5
+$as_echo "$as_me: WARNING: The kernel might not support futex or gettid syscalls.
+If so, please configure with --disable-linux-futex" >&2;}
+	       fi
+	     fi
+	     enable_linux_futex=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	   LIBS="$save_LIBS"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	;;
+      yes)
+	if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/syscall.h>
+	   int lk;
+int
+main ()
+{
+syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  as_fn_error "SYS_gettid and SYS_futex required for --enable-linux-futex" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	;;
+    esac
+    ;;
+  *)
+    enable_linux_futex=no
+    ;;
+esac
+if test x$enable_linux_futex = xyes; then
+
+$as_echo "#define HAVE_LINUX_FUTEX 1" >>confdefs.h
+
+fi
+
+
+
+
+inttype_headers=`echo inttypes.h sys/inttypes.h  | sed -e 's/,/ /g'`
+
+acx_cv_header_stdint=stddef.h
+acx_cv_header_stdint_kind="(already complete)"
+for i in stdint.h $inttype_headers; do
+  unset ac_cv_type_uintptr_t
+  unset ac_cv_type_uintmax_t
+  unset ac_cv_type_int_least32_t
+  unset ac_cv_type_int_fast32_t
+  unset ac_cv_type_uint64_t
+  $as_echo_n "looking for a compliant stdint.h in $i, " >&6
+  ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uintmax_t" = x""yes; then :
+  acx_cv_header_stdint=$i
+else
+  continue
+fi
+
+  ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uintptr_t" = x""yes; then :
+
+else
+  acx_cv_header_stdint_kind="(mostly complete)"
+fi
+
+  ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_int_least32_t" = x""yes; then :
+
+else
+  acx_cv_header_stdint_kind="(mostly complete)"
+fi
+
+  ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_int_fast32_t" = x""yes; then :
+
+else
+  acx_cv_header_stdint_kind="(mostly complete)"
+fi
+
+  ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uint64_t" = x""yes; then :
+
+else
+  acx_cv_header_stdint_kind="(lacks uint64_t)"
+fi
+
+  break
+done
+if test "$acx_cv_header_stdint" = stddef.h; then
+  acx_cv_header_stdint_kind="(lacks uintmax_t)"
+  for i in stdint.h $inttype_headers; do
+    unset ac_cv_type_uintptr_t
+    unset ac_cv_type_uint32_t
+    unset ac_cv_type_uint64_t
+    $as_echo_n "looking for an incomplete stdint.h in $i, " >&6
+    ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uint32_t" = x""yes; then :
+  acx_cv_header_stdint=$i
+else
+  continue
+fi
+
+    ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uint64_t" = x""yes; then :
+
+fi
+
+    ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_uintptr_t" = x""yes; then :
+
+fi
+
+    break
+  done
+fi
+if test "$acx_cv_header_stdint" = stddef.h; then
+  acx_cv_header_stdint_kind="(u_intXX_t style)"
+  for i in sys/types.h $inttype_headers; do
+    unset ac_cv_type_u_int32_t
+    unset ac_cv_type_u_int64_t
+    $as_echo_n "looking for u_intXX_t types in $i, " >&6
+    ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_u_int32_t" = x""yes; then :
+  acx_cv_header_stdint=$i
+else
+  continue
+fi
+
+    ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include <sys/types.h>
+#include <$i>
+"
+if test "x$ac_cv_type_u_int64_t" = x""yes; then :
+
+fi
+
+    break
+  done
+fi
+if test "$acx_cv_header_stdint" = stddef.h; then
+  acx_cv_header_stdint_kind="(using manual detection)"
+fi
+
+test -z "$ac_cv_type_uintptr_t" && ac_cv_type_uintptr_t=no
+test -z "$ac_cv_type_uint64_t" && ac_cv_type_uint64_t=no
+test -z "$ac_cv_type_u_int64_t" && ac_cv_type_u_int64_t=no
+test -z "$ac_cv_type_int_least32_t" && ac_cv_type_int_least32_t=no
+test -z "$ac_cv_type_int_fast32_t" && ac_cv_type_int_fast32_t=no
+
+# ----------------- Summarize what we found so far
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what to include in include/gstdint.h" >&5
+$as_echo_n "checking what to include in include/gstdint.h... " >&6; }
+
+case `$as_basename -- include/gstdint.h ||
+$as_expr X/include/gstdint.h : '.*/\([^/][^/]*\)/*$' \| \
+	 Xinclude/gstdint.h : 'X\(//\)$' \| \
+	 Xinclude/gstdint.h : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/include/gstdint.h |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'` in
+  stdint.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5
+$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;;
+  inttypes.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5
+$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;;
+  *) ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_header_stdint $acx_cv_header_stdint_kind" >&5
+$as_echo "$acx_cv_header_stdint $acx_cv_header_stdint_kind" >&6; }
+
+# ----------------- done included file, check C basic types --------
+
+# Lacking an uintptr_t?  Test size of void *
+case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in
+  stddef.h:* | *:no) # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if test "${ac_cv_sizeof_void_p+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (void *)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+ ;;
+esac
+
+# Lacking an uint64_t?  Test size of long
+case "$acx_cv_header_stdint:$ac_cv_type_uint64_t:$ac_cv_type_u_int64_t" in
+  stddef.h:*:* | *:no:no) # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (long)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+ ;;
+esac
+
+if test $acx_cv_header_stdint = stddef.h; then
+  # Lacking a good header?  Test size of everything and deduce all types.
+  # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if test "${ac_cv_sizeof_int+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (int)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+  # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if test "${ac_cv_sizeof_short+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (short)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+  # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
+$as_echo_n "checking size of char... " >&6; }
+if test "${ac_cv_sizeof_char+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_char" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (char)
+See \`config.log' for more details." "$LINENO" 5; }; }
+   else
+     ac_cv_sizeof_char=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
+$as_echo "$ac_cv_sizeof_char" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR $ac_cv_sizeof_char
+_ACEOF
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int8_t" >&5
+$as_echo_n "checking for type equivalent to int8_t... " >&6; }
+  case "$ac_cv_sizeof_char" in
+    1) acx_cv_type_int8_t=char ;;
+    *) as_fn_error "no 8-bit type, please report a bug" "$LINENO" 5
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int8_t" >&5
+$as_echo "$acx_cv_type_int8_t" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int16_t" >&5
+$as_echo_n "checking for type equivalent to int16_t... " >&6; }
+  case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in
+    2:*) acx_cv_type_int16_t=int ;;
+    *:2) acx_cv_type_int16_t=short ;;
+    *) as_fn_error "no 16-bit type, please report a bug" "$LINENO" 5
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int16_t" >&5
+$as_echo "$acx_cv_type_int16_t" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int32_t" >&5
+$as_echo_n "checking for type equivalent to int32_t... " >&6; }
+  case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in
+    4:*) acx_cv_type_int32_t=int ;;
+    *:4) acx_cv_type_int32_t=long ;;
+    *) as_fn_error "no 32-bit type, please report a bug" "$LINENO" 5
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int32_t" >&5
+$as_echo "$acx_cv_type_int32_t" >&6; }
+fi
+
+# These tests are here to make the output prettier
+
+if test "$ac_cv_type_uint64_t" != yes && test "$ac_cv_type_u_int64_t" != yes; then
+  case "$ac_cv_sizeof_long" in
+    8) acx_cv_type_int64_t=long ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int64_t" >&5
+$as_echo_n "checking for type equivalent to int64_t... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${acx_cv_type_int64_t-'using preprocessor symbols'}" >&5
+$as_echo "${acx_cv_type_int64_t-'using preprocessor symbols'}" >&6; }
+fi
+
+# Now we can use the above types
+
+if test "$ac_cv_type_uintptr_t" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to intptr_t" >&5
+$as_echo_n "checking for type equivalent to intptr_t... " >&6; }
+  case $ac_cv_sizeof_void_p in
+    2) acx_cv_type_intptr_t=int16_t ;;
+    4) acx_cv_type_intptr_t=int32_t ;;
+    8) acx_cv_type_intptr_t=int64_t ;;
+    *) as_fn_error "no equivalent for intptr_t, please report a bug" "$LINENO" 5
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_intptr_t" >&5
+$as_echo "$acx_cv_type_intptr_t" >&6; }
+fi
+
+# ----------------- done all checks, emit header -------------
+ac_config_commands="$ac_config_commands include/gstdint.h"
+
+
+
+
+# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU c++filt" >&5
+$as_echo_n "checking for GNU c++filt... " >&6; }
+if test "${ac_cv_path_CXXFILT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$CXXFILT"; then
+  ac_path_CXXFILT_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in c++filt gc++filt; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_CXXFILT="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_CXXFILT" && $as_test_x "$ac_path_CXXFILT"; } || continue
+# Check for GNU $ac_path_CXXFILT
+case `"$ac_path_CXXFILT" --version 2>&1` in
+*GNU*)
+  ac_cv_path_CXXFILT=$ac_path_CXXFILT && ac_path_CXXFILT_found=:;;
+esac
+
+      $ac_path_CXXFILT_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_CXXFILT"; then
+    :
+  fi
+else
+  ac_cv_path_CXXFILT=$CXXFILT
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_CXXFILT" >&5
+$as_echo "$ac_cv_path_CXXFILT" >&6; }
+  CXXFILT=$ac_cv_path_CXXFILT
+
+
+
+ # Check whether --enable-symvers was given.
+if test "${enable_symvers+set}" = set; then :
+  enableval=$enable_symvers;
+      case "$enableval" in
+       yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun) ;;
+       *) as_fn_error "Unknown argument to enable/disable symvers" "$LINENO" 5 ;;
+	  	        esac
+
+else
+  enable_symvers=yes
+fi
+
+
+
+# If we never went through the GLIBCXX_CHECK_LINKER_FEATURES macro, then we
+# don't know enough about $LD to do tricks...
+
+# Sun style symbol versions needs GNU c++filt for make_sunver.pl to work
+# with extern "C++" in version scripts.
+
+
+# Turn a 'yes' into a suitable default.
+if test x$enable_symvers = xyes ; then
+  if test $enable_shared = no || test "x$LD" = x || test x$gcc_no_link = xyes; then
+    enable_symvers=no
+  else
+    if test $with_gnu_ld = yes ; then
+      case ${target_os} in
+	hpux*)
+	  enable_symvers=no ;;
+	*)
+	  enable_symvers=gnu ;;
+      esac
+    else
+      case ${target_os} in
+	darwin*)
+	  enable_symvers=darwin ;;
+	# Sun symbol versioning exists since Solaris 2.5.
+	solaris2.[5-9]* | solaris2.1[0-9]*)
+	  # make_sunver.pl needs GNU c++filt to support extern "C++" in
+	  # version scripts, so disable symbol versioning if none can be
+	  # found.
+	  if test -z "$ac_cv_path_CXXFILT"; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
+$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === no GNU c++filt could  be found." >&5
+$as_echo "$as_me: WARNING: === no GNU c++filt could  be found." >&2;}
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
+$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
+	    enable_symvers=no
+	  else
+	    enable_symvers=sun
+	  fi
+	  ;;
+	*)
+	  enable_symvers=no ;;
+      esac
+    fi
+  fi
+fi
+
+# Check to see if 'darwin' or 'darwin-export' can win.
+if test x$enable_symvers = xdarwin-export ; then
+    enable_symvers=darwin
+fi
+
+# Check if 'sun' was requested on non-Solaris 2 platforms.
+if test x$enable_symvers = xsun ; then
+  case ${target_os} in
+    solaris2*)
+      # All fine.
+      ;;
+    *)
+      # Unlikely to work.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
+$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
+$as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
+$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
+      enable_symvers=no
+      ;;
+  esac
+fi
+
+# Check to see if 'gnu' can win.
+if test $enable_symvers = gnu ||
+  test $enable_symvers = gnu-versioned-namespace ||
+  test $enable_symvers = sun; then
+  # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared libgcc" >&5
+$as_echo_n "checking for shared libgcc... " >&6; }
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=' -lgcc_s'
+  if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  glibcxx_shared_libgcc=yes
+else
+  glibcxx_shared_libgcc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$ac_save_CFLAGS"
+  if test $glibcxx_shared_libgcc = no; then
+    cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+    glibcxx_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+			     -shared -shared-libgcc -o conftest.so \
+			     conftest.c -v 2>&1 >/dev/null \
+			     | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+    rm -f conftest.c conftest.so
+    if test x${glibcxx_libgcc_s_suffix+set} = xset; then
+      CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix"
+      if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  glibcxx_shared_libgcc=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      CFLAGS="$ac_save_CFLAGS"
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_shared_libgcc" >&5
+$as_echo "$glibcxx_shared_libgcc" >&6; }
+
+  # For GNU ld, we need at least this version.  The format is described in
+  # GLIBCXX_CHECK_LINKER_FEATURES above.
+  glibcxx_min_gnu_ld_version=21400
+
+  # If no shared libgcc, can't win.
+  if test $glibcxx_shared_libgcc != yes; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested GNU symbol versioning, but" >&5
+$as_echo "$as_me: WARNING: === You have requested GNU symbol versioning, but" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not building a shared libgcc_s." >&5
+$as_echo "$as_me: WARNING: === you are not building a shared libgcc_s." >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
+$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
+      enable_symvers=no
+  elif test $with_gnu_ld != yes && test $enable_symvers = sun; then
+    : All interesting versions of Sun ld support sun style symbol versioning.
+  elif test $with_gnu_ld != yes ; then
+    # just fail for now
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested GNU symbol versioning, but" >&5
+$as_echo "$as_me: WARNING: === You have requested GNU symbol versioning, but" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not using the GNU linker." >&5
+$as_echo "$as_me: WARNING: === you are not using the GNU linker." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
+$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
+    enable_symvers=no
+  elif test $glibcxx_ld_is_gold = yes ; then
+    : All versions of gold support symbol versioning.
+  elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
+    # The right tools, the right setup, but too old.  Fallbacks?
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $glibcxx_gnu_ld_version is too old for" >&5
+$as_echo "$as_me: WARNING: === Linker version $glibcxx_gnu_ld_version is too old for" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === full symbol versioning support in this release of GCC." >&5
+$as_echo "$as_me: WARNING: === full symbol versioning support in this release of GCC." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You would need to upgrade your binutils to version" >&5
+$as_echo "$as_me: WARNING: === You would need to upgrade your binutils to version" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === $glibcxx_min_gnu_ld_version or later and rebuild GCC." >&5
+$as_echo "$as_me: WARNING: === $glibcxx_min_gnu_ld_version or later and rebuild GCC." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
+$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
+    enable_symvers=no
+  fi
+fi
+
+# Everything parsed; figure out what file to use.
+case $enable_symvers in
+  no)
+    SYMVER_FILE=config/abi/pre/none.ver
+    ;;
+  gnu)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+
+$as_echo "#define _GLIBCXX_SYMVER_GNU 1" >>confdefs.h
+
+    ;;
+  gnu-versioned-namespace)
+    SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver
+
+$as_echo "#define _GLIBCXX_SYMVER_GNU_NAMESPACE 1" >>confdefs.h
+
+    ;;
+  darwin)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+
+$as_echo "#define _GLIBCXX_SYMVER_DARWIN 1" >>confdefs.h
+
+    ;;
+  sun)
+    SYMVER_FILE=config/abi/pre/gnu.ver
+
+$as_echo "#define _GLIBCXX_SYMVER_SUN 1" >>confdefs.h
+
+    ;;
+esac
+
+if test x$enable_symvers != xno ; then
+
+$as_echo "#define _GLIBCXX_SYMVER 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports .symver directive" >&5
+$as_echo_n "checking whether the target supports .symver directive... " >&6; }
+if test "${glibcxx_cv_have_as_symver_directive+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+void foo (void); __asm (".symver foo, bar@SYMVER");
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_have_as_symver_directive=yes
+else
+  glibcxx_cv_have_as_symver_directive=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_have_as_symver_directive" >&5
+$as_echo "$glibcxx_cv_have_as_symver_directive" >&6; }
+if test $glibcxx_cv_have_as_symver_directive = yes; then
+
+$as_echo "#define HAVE_AS_SYMVER_DIRECTIVE 1" >>confdefs.h
+
+fi
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: versioning on shared library symbols is $enable_symvers" >&5
+$as_echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;}
+
+if test $enable_symvers != no ; then
+   case ${target_os} in
+     # The Solaris 2 runtime linker doesn't support the GNU extension of
+     # binding the same symbol to different versions
+     solaris2*)
+       symvers_renaming=no  ;;
+     # Other platforms with GNU symbol versioning (GNU/Linux, more?) do.
+     *)
+
+$as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h
+
+       symvers_renaming=yes  ;;
+    esac
+else
+    symvers_renaming=no
+fi
+
+
+# Now, set up compatibility support, if any.
+# In addition, need this to deal with std::size_t mangling in
+# src/compatibility.cc.  In a perfect world, could use
+# typeid(std::size_t).name()[0] to do direct substitution.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size_t as unsigned int" >&5
+$as_echo_n "checking for size_t as unsigned int... " >&6; }
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="-Werror"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_size_t_is_i=yes
+else
+  glibcxx_size_t_is_i=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS=$ac_save_CFLAGS
+if test "$glibcxx_size_t_is_i" = yes; then
+
+$as_echo "#define _GLIBCXX_SIZE_T_IS_UINT 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_size_t_is_i" >&5
+$as_echo "$glibcxx_size_t_is_i" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ptrdiff_t as int" >&5
+$as_echo_n "checking for ptrdiff_t as int... " >&6; }
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="-Werror"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_ptrdiff_t_is_i=yes
+else
+  glibcxx_ptrdiff_t_is_i=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS=$ac_save_CFLAGS
+if test "$glibcxx_ptrdiff_t_is_i" = yes; then
+
+$as_echo "#define _GLIBCXX_PTRDIFF_T_IS_INT 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_ptrdiff_t_is_i" >&5
+$as_echo "$glibcxx_ptrdiff_t_is_i" >&6; }
+
+
+ # Check whether --enable-visibility was given.
+if test "${enable_visibility+set}" = set; then :
+  enableval=$enable_visibility;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error "Argument to enable/disable visibility must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_visibility=yes
+fi
+
+
+
+if test x$enable_visibility = xyes ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports hidden visibility" >&5
+$as_echo_n "checking whether the target supports hidden visibility... " >&6; }
+if test "${glibcxx_cv_have_attribute_visibility+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+void __attribute__((visibility("hidden"))) foo(void) { }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_have_attribute_visibility=yes
+else
+  glibcxx_cv_have_attribute_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_have_attribute_visibility" >&5
+$as_echo "$glibcxx_cv_have_attribute_visibility" >&6; }
+  if test $glibcxx_cv_have_attribute_visibility = no; then
+    enable_visibility=no
+  fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: visibility supported: $enable_visibility" >&5
+$as_echo "$as_me: visibility supported: $enable_visibility" >&6;}
+
+
+ac_ldbl_compat=no
+case "$target" in
+  powerpc*-*-linux* | \
+  powerpc*-*-gnu* | \
+  sparc*-*-linux* | \
+  s390*-*-linux* | \
+  alpha*-*-linux*)
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
+#error no need for long double compatibility
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_ldbl_compat=yes
+else
+  ac_ldbl_compat=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_ldbl_compat" = yes; then
+
+$as_echo "#define _GLIBCXX_LONG_DOUBLE_COMPAT 1" >>confdefs.h
+
+    port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
+  fi
+esac
+
+
+# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
+
+  if $GLIBCXX_IS_NATIVE ; then
+    # Do checks for resource limit functions.
+
+  setrlimit_have_headers=yes
+  for ac_header in unistd.h sys/time.h sys/resource.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  setrlimit_have_headers=no
+fi
+
+done
+
+  # If don't have the headers, then we can't run the tests now, and we
+  # won't be seeing any of these during testsuite compilation.
+  if test $setrlimit_have_headers = yes; then
+    # Can't do these in a loop, else the resulting syntax is wrong.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_DATA" >&5
+$as_echo_n "checking for RLIMIT_DATA... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+     #include <sys/time.h>
+     #include <sys/resource.h>
+
+int
+main ()
+{
+ int f = RLIMIT_DATA ;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_mresult=1
+else
+  glibcxx_mresult=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMIT_DATA $glibcxx_mresult
+_ACEOF
+
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_RSS" >&5
+$as_echo_n "checking for RLIMIT_RSS... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+     #include <sys/time.h>
+     #include <sys/resource.h>
+
+int
+main ()
+{
+ int f = RLIMIT_RSS ;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_mresult=1
+else
+  glibcxx_mresult=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMIT_RSS $glibcxx_mresult
+_ACEOF
+
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_VMEM" >&5
+$as_echo_n "checking for RLIMIT_VMEM... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+     #include <sys/time.h>
+     #include <sys/resource.h>
+
+int
+main ()
+{
+ int f = RLIMIT_VMEM ;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_mresult=1
+else
+  glibcxx_mresult=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMIT_VMEM $glibcxx_mresult
+_ACEOF
+
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_AS" >&5
+$as_echo_n "checking for RLIMIT_AS... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+     #include <sys/time.h>
+     #include <sys/resource.h>
+
+int
+main ()
+{
+ int f = RLIMIT_AS ;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_mresult=1
+else
+  glibcxx_mresult=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMIT_AS $glibcxx_mresult
+_ACEOF
+
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_FSIZE" >&5
+$as_echo_n "checking for RLIMIT_FSIZE... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+     #include <sys/time.h>
+     #include <sys/resource.h>
+
+int
+main ()
+{
+ int f = RLIMIT_FSIZE ;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_mresult=1
+else
+  glibcxx_mresult=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMIT_FSIZE $glibcxx_mresult
+_ACEOF
+
+  if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+    # Check for rlimit, setrlimit.
+    if test "${glibcxx_cv_setrlimit+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+	 #include <sys/time.h>
+	 #include <sys/resource.h>
+
+int
+main ()
+{
+struct rlimit r;
+	 setrlimit(0, &r);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_setrlimit=yes
+else
+  glibcxx_cv_setrlimit=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for testsuite resource limits support" >&5
+$as_echo_n "checking for testsuite resource limits support... " >&6; }
+  if test $setrlimit_have_headers = yes && test $glibcxx_cv_setrlimit = yes; then
+    ac_res_limits=yes
+
+$as_echo "#define _GLIBCXX_RES_LIMITS 1" >>confdefs.h
+
+  else
+    ac_res_limits=no
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res_limits" >&5
+$as_echo "$ac_res_limits" >&6; }
+
+
+    # Look for setenv, so that extended locale tests can be performed.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setenv declaration" >&5
+$as_echo_n "checking for setenv declaration... " >&6; }
+  if test x${glibcxx_cv_func_setenv_use+set} != xset; then
+    if test "${glibcxx_cv_func_setenv_use+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+      ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+ setenv(0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  glibcxx_cv_func_setenv_use=yes
+else
+  glibcxx_cv_func_setenv_use=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_func_setenv_use" >&5
+$as_echo "$glibcxx_cv_func_setenv_use" >&6; }
+  if test x$glibcxx_cv_func_setenv_use = x"yes"; then
+    for ac_func in setenv
+do :
+  ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SETENV 1
+_ACEOF
+
+fi
+done
+
+  fi
+
+  fi
+
+  if $GLIBCXX_IS_NATIVE && test $is_hosted = yes &&
+     test $enable_symvers != no; then
+    case "$host" in
+      *-*-cygwin*)
+	enable_abi_check=no ;;
+      *)
+	enable_abi_check=yes ;;
+    esac
+  else
+    # Only build this as native, since automake does not understand
+    # CXX_FOR_BUILD.
+    enable_abi_check=no
+  fi
+
+  # Export file names for ABI checking.
+  baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}"
+
+
+
+# Define documentation rules conditionally.
+
+# See if makeinfo has been installed and is modern enough
+# that we can use it.
+
+  # Extract the first word of "makeinfo", so it can be a program name with args.
+set dummy makeinfo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_MAKEINFO+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAKEINFO="makeinfo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
+$as_echo "$MAKEINFO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  if test -n "$MAKEINFO"; then
+    # Found it, now check the version.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modern makeinfo" >&5
+$as_echo_n "checking for modern makeinfo... " >&6; }
+if test "${gcc_cv_prog_makeinfo_modern+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_prog_version=`eval $MAKEINFO --version 2>&1 |
+                                     sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+
+                    case $ac_prog_version in
+                      '')  gcc_cv_prog_makeinfo_modern=no;;
+                      4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*)  gcc_cv_prog_makeinfo_modern=yes;;
+                      *)   gcc_cv_prog_makeinfo_modern=no;;
+                    esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_prog_makeinfo_modern" >&5
+$as_echo "$gcc_cv_prog_makeinfo_modern" >&6; }
+  else
+    gcc_cv_prog_makeinfo_modern=no
+  fi
+  if test $gcc_cv_prog_makeinfo_modern = no; then
+    MAKEINFO="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing makeinfo"
+  fi
+
+ if test $gcc_cv_prog_makeinfo_modern = "yes"; then
+  BUILD_INFO_TRUE=
+  BUILD_INFO_FALSE='#'
+else
+  BUILD_INFO_TRUE='#'
+  BUILD_INFO_FALSE=
+fi
+
+
+# Check for doxygen
+# Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DOXYGEN+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOXYGEN"; then
+  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DOXYGEN="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_DOXYGEN" && ac_cv_prog_DOXYGEN="no"
+fi
+fi
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "dot", so it can be a program name with args.
+set dummy dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DOT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOT"; then
+  ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DOT="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_DOT" && ac_cv_prog_DOT="no"
+fi
+fi
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Check for docbook
+# Extract the first word of "xsltproc", so it can be a program name with args.
+set dummy xsltproc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_XSLTPROC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$XSLTPROC"; then
+  ac_cv_prog_XSLTPROC="$XSLTPROC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_XSLTPROC="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_XSLTPROC" && ac_cv_prog_XSLTPROC="no"
+fi
+fi
+XSLTPROC=$ac_cv_prog_XSLTPROC
+if test -n "$XSLTPROC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
+$as_echo "$XSLTPROC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "xmllint", so it can be a program name with args.
+set dummy xmllint; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_XMLLINT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$XMLLINT"; then
+  ac_cv_prog_XMLLINT="$XMLLINT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_XMLLINT="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_XMLLINT" && ac_cv_prog_XMLLINT="no"
+fi
+fi
+XMLLINT=$ac_cv_prog_XMLLINT
+if test -n "$XMLLINT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5
+$as_echo "$XMLLINT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stylesheets used in generation of documentation" >&5
+$as_echo_n "checking for stylesheets used in generation of documentation... " >&6; }
+glibcxx_stylesheets=no
+if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
+  glibcxx_stylesheets=yes
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5
+$as_echo "$glibcxx_stylesheets" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5
+$as_echo_n "checking for local stylesheet directory... " >&6; }
+glibcxx_local_stylesheets=no
+if test x"$glibcxx_stylesheets" = x"yes"; then
+  if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
+    glibcxx_local_stylesheets=yes
+    XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
+  fi
+  if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
+    glibcxx_local_stylesheets=yes
+    XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5
+$as_echo "$glibcxx_local_stylesheets" >&6; }
+
+if test x"$glibcxx_local_stylesheets" = x"yes"; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $XSL_STYLE_DIR" >&5
+$as_echo "$as_me: $XSL_STYLE_DIR" >&6;}
+else
+  glibcxx_stylesheets=no
+fi
+
+
+# Check for xml/html dependencies.
+ if test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes" &&
+	       test $ac_cv_prog_XSLTPROC = "yes" &&
+	       test $ac_cv_prog_XMLLINT = "yes" &&
+	       test $glibcxx_stylesheets = "yes"; then
+  BUILD_XML_TRUE=
+  BUILD_XML_FALSE='#'
+else
+  BUILD_XML_TRUE='#'
+  BUILD_XML_FALSE=
+fi
+
+
+ if test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes" &&
+	       test $ac_cv_prog_XSLTPROC = "yes" &&
+	       test $ac_cv_prog_XMLLINT = "yes" &&
+	       test $glibcxx_stylesheets = "yes"; then
+  BUILD_HTML_TRUE=
+  BUILD_HTML_FALSE='#'
+else
+  BUILD_HTML_TRUE='#'
+  BUILD_HTML_FALSE=
+fi
+
+
+# Check for man dependencies.
+ if test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes"; then
+  BUILD_MAN_TRUE=
+  BUILD_MAN_FALSE='#'
+else
+  BUILD_MAN_TRUE='#'
+  BUILD_MAN_FALSE=
+fi
+
+
+# Check for pdf/epub dependencies.
+# Extract the first word of "dblatex", so it can be a program name with args.
+set dummy dblatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DBLATEX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DBLATEX"; then
+  ac_cv_prog_DBLATEX="$DBLATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DBLATEX="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_DBLATEX" && ac_cv_prog_DBLATEX="no"
+fi
+fi
+DBLATEX=$ac_cv_prog_DBLATEX
+if test -n "$DBLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBLATEX" >&5
+$as_echo "$DBLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "pdflatex", so it can be a program name with args.
+set dummy pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_PDFLATEX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PDFLATEX"; then
+  ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PDFLATEX="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_PDFLATEX" && ac_cv_prog_PDFLATEX="no"
+fi
+fi
+PDFLATEX=$ac_cv_prog_PDFLATEX
+if test -n "$PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5
+$as_echo "$PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test $ac_cv_prog_DBLATEX = "yes" &&
+	       test $ac_cv_prog_PDFLATEX = "yes"; then
+  BUILD_PDF_TRUE=
+  BUILD_PDF_FALSE='#'
+else
+  BUILD_PDF_TRUE='#'
+  BUILD_PDF_FALSE=
+fi
+
+
+# Extract the first word of "ruby", so it can be a program name with args.
+set dummy ruby; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RUBY+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RUBY"; then
+  ac_cv_prog_RUBY="$RUBY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RUBY="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_RUBY" && ac_cv_prog_RUBY="no"
+fi
+fi
+RUBY=$ac_cv_prog_RUBY
+if test -n "$RUBY"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY" >&5
+$as_echo "$RUBY" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "dbtoepub", so it can be a program name with args.
+set dummy dbtoepub; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DBTOEPUB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DBTOEPUB"; then
+  ac_cv_prog_DBTOEPUB="$DBTOEPUB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DBTOEPUB="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_DBTOEPUB" && ac_cv_prog_DBTOEPUB="no"
+fi
+fi
+DBTOEPUB=$ac_cv_prog_DBTOEPUB
+if test -n "$DBTOEPUB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBTOEPUB" >&5
+$as_echo "$DBTOEPUB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test $ac_cv_prog_RUBY = "yes" &&
+	       test $ac_cv_prog_DBTOEPUB = "yes"; then
+  BUILD_EPUB_TRUE=
+  BUILD_EPUB_FALSE='#'
+else
+  BUILD_EPUB_TRUE='#'
+  BUILD_EPUB_FALSE=
+fi
+
+
+
+# Propagate the target-specific source directories through the build chain.
+ATOMICITY_SRCDIR=config/${atomicity_dir}
+ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
+ATOMIC_FLAGS=${atomic_flags}
+CPU_DEFINES_SRCDIR=config/${cpu_defines_dir}
+OS_INC_SRCDIR=config/${os_include_dir}
+ERROR_CONSTANTS_SRCDIR=config/${error_constants_dir}
+ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
+
+
+
+
+
+
+
+
+
+# Determine cross-compile flags and AM_CONDITIONALs.
+#AC_SUBST(GLIBCXX_IS_NATIVE)
+#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
+    if test $is_hosted = yes; then
+  GLIBCXX_HOSTED_TRUE=
+  GLIBCXX_HOSTED_FALSE='#'
+else
+  GLIBCXX_HOSTED_TRUE='#'
+  GLIBCXX_HOSTED_FALSE=
+fi
+
+
+    if test $enable_libstdcxx_pch = yes; then
+  GLIBCXX_BUILD_PCH_TRUE=
+  GLIBCXX_BUILD_PCH_FALSE='#'
+else
+  GLIBCXX_BUILD_PCH_TRUE='#'
+  GLIBCXX_BUILD_PCH_FALSE=
+fi
+
+
+    if test $enable_cheaders = c; then
+  GLIBCXX_C_HEADERS_C_TRUE=
+  GLIBCXX_C_HEADERS_C_FALSE='#'
+else
+  GLIBCXX_C_HEADERS_C_TRUE='#'
+  GLIBCXX_C_HEADERS_C_FALSE=
+fi
+
+
+    if test $enable_cheaders = c_std; then
+  GLIBCXX_C_HEADERS_C_STD_TRUE=
+  GLIBCXX_C_HEADERS_C_STD_FALSE='#'
+else
+  GLIBCXX_C_HEADERS_C_STD_TRUE='#'
+  GLIBCXX_C_HEADERS_C_STD_FALSE=
+fi
+
+
+    if test $enable_cheaders = c_global; then
+  GLIBCXX_C_HEADERS_C_GLOBAL_TRUE=
+  GLIBCXX_C_HEADERS_C_GLOBAL_FALSE='#'
+else
+  GLIBCXX_C_HEADERS_C_GLOBAL_TRUE='#'
+  GLIBCXX_C_HEADERS_C_GLOBAL_FALSE=
+fi
+
+
+    if test $c_compatibility = yes; then
+  GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE=
+  GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE='#'
+else
+  GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE='#'
+  GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE=
+fi
+
+
+    if test $enable_libstdcxx_debug = yes; then
+  GLIBCXX_BUILD_DEBUG_TRUE=
+  GLIBCXX_BUILD_DEBUG_FALSE='#'
+else
+  GLIBCXX_BUILD_DEBUG_TRUE='#'
+  GLIBCXX_BUILD_DEBUG_FALSE=
+fi
+
+
+    if test $enable_parallel = yes; then
+  ENABLE_PARALLEL_TRUE=
+  ENABLE_PARALLEL_FALSE='#'
+else
+  ENABLE_PARALLEL_TRUE='#'
+  ENABLE_PARALLEL_FALSE=
+fi
+
+
+    if test $enable_extern_template = yes; then
+  ENABLE_EXTERN_TEMPLATE_TRUE=
+  ENABLE_EXTERN_TEMPLATE_FALSE='#'
+else
+  ENABLE_EXTERN_TEMPLATE_TRUE='#'
+  ENABLE_EXTERN_TEMPLATE_FALSE=
+fi
+
+
+    if test $enable_symvers != no; then
+  ENABLE_SYMVERS_TRUE=
+  ENABLE_SYMVERS_FALSE='#'
+else
+  ENABLE_SYMVERS_TRUE='#'
+  ENABLE_SYMVERS_FALSE=
+fi
+
+
+    if test $enable_symvers = gnu; then
+  ENABLE_SYMVERS_GNU_TRUE=
+  ENABLE_SYMVERS_GNU_FALSE='#'
+else
+  ENABLE_SYMVERS_GNU_TRUE='#'
+  ENABLE_SYMVERS_GNU_FALSE=
+fi
+
+
+    if test $enable_symvers = gnu-versioned-namespace; then
+  ENABLE_SYMVERS_GNU_NAMESPACE_TRUE=
+  ENABLE_SYMVERS_GNU_NAMESPACE_FALSE='#'
+else
+  ENABLE_SYMVERS_GNU_NAMESPACE_TRUE='#'
+  ENABLE_SYMVERS_GNU_NAMESPACE_FALSE=
+fi
+
+
+    if test $enable_symvers = darwin; then
+  ENABLE_SYMVERS_DARWIN_TRUE=
+  ENABLE_SYMVERS_DARWIN_FALSE='#'
+else
+  ENABLE_SYMVERS_DARWIN_TRUE='#'
+  ENABLE_SYMVERS_DARWIN_FALSE=
+fi
+
+
+    if test $enable_symvers = sun; then
+  ENABLE_SYMVERS_SUN_TRUE=
+  ENABLE_SYMVERS_SUN_FALSE='#'
+else
+  ENABLE_SYMVERS_SUN_TRUE='#'
+  ENABLE_SYMVERS_SUN_FALSE=
+fi
+
+
+    if test $symvers_renaming = no; then
+  ENABLE_SYMVERS_SOL2_TRUE=
+  ENABLE_SYMVERS_SOL2_FALSE='#'
+else
+  ENABLE_SYMVERS_SOL2_TRUE='#'
+  ENABLE_SYMVERS_SOL2_FALSE=
+fi
+
+
+    if test $enable_visibility = yes; then
+  ENABLE_VISIBILITY_TRUE=
+  ENABLE_VISIBILITY_FALSE='#'
+else
+  ENABLE_VISIBILITY_TRUE='#'
+  ENABLE_VISIBILITY_FALSE=
+fi
+
+
+    if test $ac_ldbl_compat = yes; then
+  GLIBCXX_LDBL_COMPAT_TRUE=
+  GLIBCXX_LDBL_COMPAT_FALSE='#'
+else
+  GLIBCXX_LDBL_COMPAT_TRUE='#'
+  GLIBCXX_LDBL_COMPAT_FALSE=
+fi
+
+
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+if test ${multilib} = yes; then
+  multilib_arg="--enable-multilib"
+else
+  multilib_arg=
+fi
+
+# Export all the install information.
+
+  glibcxx_toolexecdir=no
+  glibcxx_toolexeclibdir=no
+  glibcxx_prefixdir=$prefix
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gxx-include-dir" >&5
+$as_echo_n "checking for gxx-include-dir... " >&6; }
+
+# Check whether --with-gxx-include-dir was given.
+if test "${with_gxx_include_dir+set}" = set; then :
+  withval=$with_gxx_include_dir; case "$withval" in
+      yes) as_fn_error "Missing directory for --with-gxx-include-dir" "$LINENO" 5 ;;
+      no)  gxx_include_dir=no ;;
+      *)   gxx_include_dir=$withval ;;
+     esac
+else
+  gxx_include_dir=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gxx_include_dir" >&5
+$as_echo "$gxx_include_dir" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5
+$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; }
+  # Check whether --enable-version-specific-runtime-libs was given.
+if test "${enable_version_specific_runtime_libs+set}" = set; then :
+  enableval=$enable_version_specific_runtime_libs; case "$enableval" in
+      yes) version_specific_libs=yes ;;
+      no)  version_specific_libs=no ;;
+      *)   as_fn_error "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;;
+     esac
+else
+  version_specific_libs=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5
+$as_echo "$version_specific_libs" >&6; }
+
+  # Default case for install directory for include files.
+  if test $version_specific_libs = no && test $gxx_include_dir = no; then
+    gxx_include_dir='include/c++/${gcc_version}'
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      gxx_include_dir='${prefix}/${target_alias}/'"$gxx_include_dir"
+    else
+      gxx_include_dir='${prefix}/'"$gxx_include_dir"
+    fi
+  fi
+
+  # Version-specific runtime libs processing.
+  if test $version_specific_libs = yes; then
+    # Need the gcc compiler version to know where to install libraries
+    # and header files if --enable-version-specific-runtime-libs option
+    # is selected.  FIXME: these variables are misnamed, there are
+    # no executables installed in _toolexecdir or _toolexeclibdir.
+    if test x"$gxx_include_dir" = x"no"; then
+      gxx_include_dir='${libdir}/gcc/${host_alias}/${gcc_version}/include/c++'
+    fi
+    glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
+    glibcxx_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
+  fi
+
+  # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir
+  # Install a library built with a cross compiler in tooldir, not libdir.
+  if test x"$glibcxx_toolexecdir" = x"no"; then
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
+      glibcxx_toolexeclibdir='${toolexecdir}/lib'
+    else
+      glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
+      glibcxx_toolexeclibdir='${libdir}'
+    fi
+    multi_os_directory=`$CXX -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) glibcxx_toolexeclibdir=$glibcxx_toolexeclibdir/$multi_os_directory ;;
+    esac
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for install location" >&5
+$as_echo_n "checking for install location... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gxx_include_dir" >&5
+$as_echo "$gxx_include_dir" >&6; }
+
+
+
+
+
+
+
+# Export all the include and flag information to Makefiles.
+
+  # Used for every C++ compile we perform.
+  GLIBCXX_INCLUDES="\
+-I$glibcxx_builddir/include/$host_alias \
+-I$glibcxx_builddir/include \
+-I$glibcxx_srcdir/libsupc++"
+
+  # For Canadian crosses, pick this up too.
+  if test $CANADIAN = yes; then
+    GLIBCXX_INCLUDES="$GLIBCXX_INCLUDES -I\${includedir}"
+  fi
+
+  # Stuff in the actual top level.  Currently only used by libsupc++ to
+  # get unwind* headers from the gcc dir.
+  #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include'
+  TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc'
+
+  # Now, export this to all the little Makefiles....
+
+
+
+
+  # Optimization flags that are probably a good idea for thrill-seekers. Just
+  # uncomment the lines below and make, everything else is ready to go...
+  # Alternatively OPTIMIZE_CXXFLAGS can be set in configure.host.
+  # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
+
+
+  WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
+
+
+
+if test "$enable_shared" = yes; then
+  LIBSUPCXX_PICFLAGS="-prefer-pic"
+else
+  LIBSUPCXX_PICFLAGS=
+fi
+
+
+ac_config_files="$ac_config_files Makefile"
+
+ac_config_files="$ac_config_files scripts/testsuite_flags"
+
+ac_config_files="$ac_config_files scripts/extract_symvers"
+
+
+# Multilibs need MULTISUBDIR defined correctly in certain makefiles so
+# that multilib installs will end up installed in the correct place.
+# The testsuite needs it for multilib-aware ABI baseline files.
+# To work around this not being passed down from config-ml.in ->
+# srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
+# append it here.  Only modify Makefiles that have just been created.
+#
+# Also, get rid of this simulated-VPATH thing that automake does.
+ac_config_files="$ac_config_files include/Makefile libsupc++/Makefile python/Makefile src/Makefile doc/Makefile po/Makefile testsuite/Makefile"
+
+
+ac_config_commands="$ac_config_commands generate-headers"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_HOSTED_TRUE}" && test -z "${GLIBCXX_HOSTED_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_HOSTED\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_BUILD_PCH_TRUE}" && test -z "${GLIBCXX_BUILD_PCH_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_BUILD_PCH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_C_HEADERS_C_TRUE}" && test -z "${GLIBCXX_C_HEADERS_C_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_C_HEADERS_C\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_C_HEADERS_C_STD_TRUE}" && test -z "${GLIBCXX_C_HEADERS_C_STD_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_C_HEADERS_C_STD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_C_HEADERS_C_GLOBAL_TRUE}" && test -z "${GLIBCXX_C_HEADERS_C_GLOBAL_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_C_HEADERS_C_GLOBAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE}" && test -z "${GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_C_HEADERS_COMPATIBILITY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_BUILD_DEBUG_TRUE}" && test -z "${GLIBCXX_BUILD_DEBUG_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_BUILD_DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_PARALLEL_TRUE}" && test -z "${ENABLE_PARALLEL_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_PARALLEL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_EXTERN_TEMPLATE_TRUE}" && test -z "${ENABLE_EXTERN_TEMPLATE_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_EXTERN_TEMPLATE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_TRUE}" && test -z "${ENABLE_SYMVERS_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_GNU_TRUE}" && test -z "${ENABLE_SYMVERS_GNU_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS_GNU\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_GNU_NAMESPACE_TRUE}" && test -z "${ENABLE_SYMVERS_GNU_NAMESPACE_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS_GNU_NAMESPACE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_DARWIN_TRUE}" && test -z "${ENABLE_SYMVERS_DARWIN_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_SUN_TRUE}" && test -z "${ENABLE_SYMVERS_SUN_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS_SUN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SYMVERS_SOL2_TRUE}" && test -z "${ENABLE_SYMVERS_SOL2_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_SYMVERS_SOL2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_VISIBILITY_TRUE}" && test -z "${ENABLE_VISIBILITY_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_VISIBILITY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE}"; then
+  as_fn_error "conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_INFO_TRUE}" && test -z "${BUILD_INFO_FALSE}"; then
+  as_fn_error "conditional \"BUILD_INFO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_XML_TRUE}" && test -z "${BUILD_XML_FALSE}"; then
+  as_fn_error "conditional \"BUILD_XML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_HTML_TRUE}" && test -z "${BUILD_HTML_FALSE}"; then
+  as_fn_error "conditional \"BUILD_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MAN_TRUE}" && test -z "${BUILD_MAN_FALSE}"; then
+  as_fn_error "conditional \"BUILD_MAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_PDF_TRUE}" && test -z "${BUILD_PDF_FALSE}"; then
+  as_fn_error "conditional \"BUILD_PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EPUB_TRUE}" && test -z "${BUILD_EPUB_FALSE}"; then
+  as_fn_error "conditional \"BUILD_EPUB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by package-unused $as_me version-unused, which was
+generated by GNU Autoconf 2.64.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+package-unused config.status version-unused
+configured by $0, generated by GNU Autoconf 2.64,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+srcdir="$srcdir"
+host="$host"
+target="$target"
+with_multisubdir="$with_multisubdir"
+with_multisrctop="$with_multisrctop"
+with_target_subdir="$with_target_subdir"
+ac_configure_args="${multilib_arg} ${ac_configure_args}"
+multi_basedir="$multi_basedir"
+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+CC="$CC"
+CXX="$CXX"
+GFORTRAN="$GFORTRAN"
+GCJ="$GCJ"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_flag_spec_ld_CXX \
+hardcode_libdir_separator_CXX \
+fix_srcfile_path_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+
+GCC="$GCC"
+CC="$CC"
+acx_cv_header_stdint="$acx_cv_header_stdint"
+acx_cv_type_int8_t="$acx_cv_type_int8_t"
+acx_cv_type_int16_t="$acx_cv_type_int16_t"
+acx_cv_type_int32_t="$acx_cv_type_int32_t"
+acx_cv_type_int64_t="$acx_cv_type_int64_t"
+acx_cv_type_intptr_t="$acx_cv_type_intptr_t"
+ac_cv_type_uintmax_t="$ac_cv_type_uintmax_t"
+ac_cv_type_uintptr_t="$ac_cv_type_uintptr_t"
+ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
+ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
+ac_cv_type_u_int32_t="$ac_cv_type_u_int32_t"
+ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
+ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
+ac_cv_sizeof_void_p="$ac_cv_sizeof_void_p"
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "include/gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS include/gstdint.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "scripts/testsuite_flags") CONFIG_FILES="$CONFIG_FILES scripts/testsuite_flags" ;;
+    "scripts/extract_symvers") CONFIG_FILES="$CONFIG_FILES scripts/extract_symvers" ;;
+    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+    "libsupc++/Makefile") CONFIG_FILES="$CONFIG_FILES libsupc++/Makefile" ;;
+    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;;
+    "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
+    "generate-headers") CONFIG_COMMANDS="$CONFIG_COMMANDS generate-headers" ;;
+
+  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+	|| as_fn_error "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "default-1":C)
+# Only add multilib support code if we just rebuilt the top-level
+# Makefile.
+case " $CONFIG_FILES " in
+ *" Makefile "*)
+   ac_file=Makefile . ${multi_basedir}/config-ml.in
+   ;;
+esac ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1+=\$2"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+    ;;
+  esac
+
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+    "include/gstdint.h":C)
+if test "$GCC" = yes; then
+  echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
+else
+  echo "/* generated for $CC */" > tmp-stdint.h
+fi
+
+sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+  #ifndef GCC_GENERATED_STDINT_H
+  #define GCC_GENERATED_STDINT_H 1
+
+  #include <sys/types.h>
+EOF
+
+if test "$acx_cv_header_stdint" != stdint.h; then
+  echo "#include <stddef.h>" >> tmp-stdint.h
+fi
+if test "$acx_cv_header_stdint" != stddef.h; then
+  echo "#include <$acx_cv_header_stdint>" >> tmp-stdint.h
+fi
+
+sed 's/^ *//' >> tmp-stdint.h <<EOF
+  /* glibc uses these symbols as guards to prevent redefinitions.  */
+  #ifdef __int8_t_defined
+  #define _INT8_T
+  #define _INT16_T
+  #define _INT32_T
+  #endif
+  #ifdef __uint32_t_defined
+  #define _UINT32_T
+  #endif
+
+EOF
+
+# ----------------- done header, emit basic int types -------------
+if test "$acx_cv_header_stdint" = stddef.h; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    #ifndef _UINT8_T
+    #define _UINT8_T
+    #ifndef __uint8_t_defined
+    #define __uint8_t_defined
+    #ifndef uint8_t
+    typedef unsigned $acx_cv_type_int8_t uint8_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _UINT16_T
+    #define _UINT16_T
+    #ifndef __uint16_t_defined
+    #define __uint16_t_defined
+    #ifndef uint16_t
+    typedef unsigned $acx_cv_type_int16_t uint16_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _UINT32_T
+    #define _UINT32_T
+    #ifndef __uint32_t_defined
+    #define __uint32_t_defined
+    #ifndef uint32_t
+    typedef unsigned $acx_cv_type_int32_t uint32_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _INT8_T
+    #define _INT8_T
+    #ifndef __int8_t_defined
+    #define __int8_t_defined
+    #ifndef int8_t
+    typedef $acx_cv_type_int8_t int8_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _INT16_T
+    #define _INT16_T
+    #ifndef __int16_t_defined
+    #define __int16_t_defined
+    #ifndef int16_t
+    typedef $acx_cv_type_int16_t int16_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _INT32_T
+    #define _INT32_T
+    #ifndef __int32_t_defined
+    #define __int32_t_defined
+    #ifndef int32_t
+    typedef $acx_cv_type_int32_t int32_t;
+    #endif
+    #endif
+    #endif
+EOF
+elif test "$ac_cv_type_u_int32_t" = yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* int8_t int16_t int32_t defined by inet code, we do the u_intXX types */
+    #ifndef _INT8_T
+    #define _INT8_T
+    #endif
+    #ifndef _INT16_T
+    #define _INT16_T
+    #endif
+    #ifndef _INT32_T
+    #define _INT32_T
+    #endif
+
+    #ifndef _UINT8_T
+    #define _UINT8_T
+    #ifndef __uint8_t_defined
+    #define __uint8_t_defined
+    #ifndef uint8_t
+    typedef u_int8_t uint8_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _UINT16_T
+    #define _UINT16_T
+    #ifndef __uint16_t_defined
+    #define __uint16_t_defined
+    #ifndef uint16_t
+    typedef u_int16_t uint16_t;
+    #endif
+    #endif
+    #endif
+
+    #ifndef _UINT32_T
+    #define _UINT32_T
+    #ifndef __uint32_t_defined
+    #define __uint32_t_defined
+    #ifndef uint32_t
+    typedef u_int32_t uint32_t;
+    #endif
+    #endif
+    #endif
+EOF
+else
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* Some systems have guard macros to prevent redefinitions, define them.  */
+    #ifndef _INT8_T
+    #define _INT8_T
+    #endif
+    #ifndef _INT16_T
+    #define _INT16_T
+    #endif
+    #ifndef _INT32_T
+    #define _INT32_T
+    #endif
+    #ifndef _UINT8_T
+    #define _UINT8_T
+    #endif
+    #ifndef _UINT16_T
+    #define _UINT16_T
+    #endif
+    #ifndef _UINT32_T
+    #define _UINT32_T
+    #endif
+EOF
+fi
+
+# ------------- done basic int types, emit int64_t types ------------
+if test "$ac_cv_type_uint64_t" = yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* system headers have good uint64_t and int64_t */
+    #ifndef _INT64_T
+    #define _INT64_T
+    #endif
+    #ifndef _UINT64_T
+    #define _UINT64_T
+    #endif
+EOF
+elif test "$ac_cv_type_u_int64_t" = yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* system headers have an u_int64_t (and int64_t) */
+    #ifndef _INT64_T
+    #define _INT64_T
+    #endif
+    #ifndef _UINT64_T
+    #define _UINT64_T
+    #ifndef __uint64_t_defined
+    #define __uint64_t_defined
+    #ifndef uint64_t
+    typedef u_int64_t uint64_t;
+    #endif
+    #endif
+    #endif
+EOF
+elif test -n "$acx_cv_type_int64_t"; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* architecture has a 64-bit type, $acx_cv_type_int64_t */
+    #ifndef _INT64_T
+    #define _INT64_T
+    #ifndef int64_t
+    typedef $acx_cv_type_int64_t int64_t;
+    #endif
+    #endif
+    #ifndef _UINT64_T
+    #define _UINT64_T
+    #ifndef __uint64_t_defined
+    #define __uint64_t_defined
+    #ifndef uint64_t
+    typedef unsigned $acx_cv_type_int64_t uint64_t;
+    #endif
+    #endif
+    #endif
+EOF
+else
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* some common heuristics for int64_t, using compiler-specific tests */
+    #if defined __STDC_VERSION__ && (__STDC_VERSION__-0) >= 199901L
+    #ifndef _INT64_T
+    #define _INT64_T
+    #ifndef __int64_t_defined
+    #ifndef int64_t
+    typedef long long int64_t;
+    #endif
+    #endif
+    #endif
+    #ifndef _UINT64_T
+    #define _UINT64_T
+    #ifndef uint64_t
+    typedef unsigned long long uint64_t;
+    #endif
+    #endif
+
+    #elif defined __GNUC__ && defined (__STDC__) && __STDC__-0
+    /* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
+       does not implement __extension__.  But that compiler doesn't define
+       __GNUC_MINOR__.  */
+    # if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
+    # define __extension__
+    # endif
+
+    # ifndef _INT64_T
+    # define _INT64_T
+    # ifndef int64_t
+    __extension__ typedef long long int64_t;
+    # endif
+    # endif
+    # ifndef _UINT64_T
+    # define _UINT64_T
+    # ifndef uint64_t
+    __extension__ typedef unsigned long long uint64_t;
+    # endif
+    # endif
+
+    #elif !defined __STRICT_ANSI__
+    # if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
+
+    #  ifndef _INT64_T
+    #  define _INT64_T
+    #  ifndef int64_t
+    typedef __int64 int64_t;
+    #  endif
+    #  endif
+    #  ifndef _UINT64_T
+    #  define _UINT64_T
+    #  ifndef uint64_t
+    typedef unsigned __int64 uint64_t;
+    #  endif
+    #  endif
+    # endif /* compiler */
+
+    #endif /* ANSI version */
+EOF
+fi
+
+# ------------- done int64_t types, emit intptr types ------------
+if test "$ac_cv_type_uintptr_t" != yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* Define intptr_t based on sizeof(void*) = $ac_cv_sizeof_void_p */
+    #ifndef __uintptr_t_defined
+    #ifndef uintptr_t
+    typedef u$acx_cv_type_intptr_t uintptr_t;
+    #endif
+    #endif
+    #ifndef __intptr_t_defined
+    #ifndef intptr_t
+    typedef $acx_cv_type_intptr_t  intptr_t;
+    #endif
+    #endif
+EOF
+fi
+
+# ------------- done intptr types, emit int_least types ------------
+if test "$ac_cv_type_int_least32_t" != yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* Define int_least types */
+    typedef int8_t     int_least8_t;
+    typedef int16_t    int_least16_t;
+    typedef int32_t    int_least32_t;
+    #ifdef _INT64_T
+    typedef int64_t    int_least64_t;
+    #endif
+
+    typedef uint8_t    uint_least8_t;
+    typedef uint16_t   uint_least16_t;
+    typedef uint32_t   uint_least32_t;
+    #ifdef _UINT64_T
+    typedef uint64_t   uint_least64_t;
+    #endif
+EOF
+fi
+
+# ------------- done intptr types, emit int_fast types ------------
+if test "$ac_cv_type_int_fast32_t" != yes; then
+      sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* Define int_fast types.  short is often slow */
+    typedef int8_t       int_fast8_t;
+    typedef int          int_fast16_t;
+    typedef int32_t      int_fast32_t;
+    #ifdef _INT64_T
+    typedef int64_t      int_fast64_t;
+    #endif
+
+    typedef uint8_t      uint_fast8_t;
+    typedef unsigned int uint_fast16_t;
+    typedef uint32_t     uint_fast32_t;
+    #ifdef _UINT64_T
+    typedef uint64_t     uint_fast64_t;
+    #endif
+EOF
+fi
+
+if test "$ac_cv_type_uintmax_t" != yes; then
+  sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+    /* Define intmax based on what we found */
+    #ifndef intmax_t
+    #ifdef _INT64_T
+    typedef int64_t       intmax_t;
+    #else
+    typedef long          intmax_t;
+    #endif
+    #endif
+    #ifndef uintmax_t
+    #ifdef _UINT64_T
+    typedef uint64_t      uintmax_t;
+    #else
+    typedef unsigned long uintmax_t;
+    #endif
+    #endif
+EOF
+fi
+
+sed 's/^ *//' >> tmp-stdint.h <<EOF
+
+  #endif /* GCC_GENERATED_STDINT_H */
+EOF
+
+if test -r include/gstdint.h && cmp -s tmp-stdint.h include/gstdint.h; then
+  rm -f tmp-stdint.h
+else
+  mv -f tmp-stdint.h include/gstdint.h
+fi
+
+ ;;
+    "scripts/testsuite_flags":F) chmod +x scripts/testsuite_flags ;;
+    "scripts/extract_symvers":F) chmod +x scripts/extract_symvers ;;
+    "include/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "libsupc++/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "python/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "src/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "doc/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "po/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "testsuite/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "generate-headers":C) (cd include && ${MAKE-make} pch_build= ) ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.ac b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.ac
new file mode 100644
index 000000000..ccf12306d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.ac
@@ -0,0 +1,459 @@
+# Process this file with autoreconf to produce a configure script.
+
+AC_PREREQ(2.64)
+AC_INIT(package-unused, version-unused,, libstdc++)
+AC_CONFIG_SRCDIR(src/ios.cc)
+AC_CONFIG_HEADER(config.h)
+
+# This works around the fact that libtool configuration may change LD
+# for this particular configuration, but some shells, instead of
+# keeping the changes in LD private, export them just because LD is
+# exported.  Only used at the end of this file.
+### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
+
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:16:0
+AC_SUBST(libtool_VERSION)
+
+# Find the rest of the source tree framework.
+AM_ENABLE_MULTILIB(, ..)
+
+# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
+#
+# You will slowly go insane if you do not grok the following fact:  when
+# building v3 as part of the compiler, the top-level /target/ becomes the
+# library's /host/.  configure then causes --target to default to --host,
+# exactly like any other package using autoconf.  Therefore, 'target' and
+# 'host' will always be the same.  This makes sense both for native and
+# cross compilers, just think about it for a little while.  :-)
+#
+# Also, if v3 is being configured as part of a cross compiler, the top-level
+# configure script will pass the "real" host as $with_cross_host.
+#
+# Do not delete or change the following two lines.  For why, see
+# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
+AC_CANONICAL_SYSTEM
+target_alias=${target_alias-$host_alias}
+
+# Handy for debugging:
+#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
+
+if test "$build" != "$host"; then
+  # We are being configured with some form of cross compiler.
+  GLIBCXX_IS_NATIVE=false
+  case "$host","$target" in
+    # Darwin crosses can use the host system's libraries and headers,
+    # because of the fat library support.  Of course, it must be the
+    # same version of Darwin on both sides.  Allow the user to
+    # just say --target=foo-darwin without a version number to mean
+    # "the version on this system".
+      *-*-darwin*,*-*-darwin*)
+	hostos=`echo $host | sed 's/.*-darwin/darwin/'`
+	targetos=`echo $target | sed 's/.*-darwin/darwin/'`
+	if test $hostos = $targetos -o $targetos = darwin ; then
+	  GLIBCXX_IS_NATIVE=true
+	fi
+	;;
+
+      *)
+	GCC_NO_EXECUTABLES
+	;;
+  esac
+else
+  GLIBCXX_IS_NATIVE=true
+fi
+
+# Sets up automake.  Must come after AC_CANONICAL_SYSTEM.  Each of the
+# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
+#  1.x:  minimum required version
+#  no-define:  PACKAGE and VERSION will not be #define'd in config.h (a bunch
+#              of other PACKAGE_* variables will, however, and there's nothing
+#              we can do about that; they come from AC_INIT).
+#  foreign:  we don't follow the normal rules for GNU packages (no COPYING
+#            file in the top srcdir, etc, etc), so stop complaining.
+#  no-dependencies:  turns off auto dependency generation (just for now)
+#  no-dist:  we don't want 'dist' and related rules.
+#  -Wall:  turns on all automake warnings...
+#  -Wno-portability:  ...except this one, since GNU make is now required.
+AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dependencies no-dist -Wall -Wno-portability -Wno-override])
+AH_TEMPLATE(PACKAGE, [Name of package])
+AH_TEMPLATE(VERSION, [Version number of package])
+
+# -fno-builtin must be present here so that a non-conflicting form of
+# std::exit can be guessed by AC_PROG_CXX, and used in later tests.
+
+save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS -fno-builtin"
+AC_PROG_CC
+AC_PROG_CXX
+CXXFLAGS="$save_CXXFLAGS"
+
+# Runs configure.host, and assorted other critical bits.  Sets
+# up critical shell variables.
+GLIBCXX_CONFIGURE
+
+if test "x${with_newlib}" != "xyes"; then
+  AC_LIBTOOL_DLOPEN
+fi
+AM_PROG_LIBTOOL
+ACX_LT_HOST_FLAGS
+AC_SUBST(enable_shared)
+AC_SUBST(enable_static)
+
+# Eliminate -lstdc++ addition to postdeps for cross compiles.
+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
+
+# Possibly disable most of the library.
+## TODO: Consider skipping unncessary tests altogether in this case, rather
+## than just ignoring the results.  Faster /and/ more correct, win win.
+GLIBCXX_ENABLE_HOSTED
+
+# Enable compiler support that doesn't require linking.
+GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
+GLIBCXX_ENABLE_PCH($is_hosted)
+GLIBCXX_ENABLE_THREADS
+GLIBCXX_ENABLE_ATOMIC_BUILTINS
+GLIBCXX_ENABLE_DECIMAL_FLOAT
+
+# Checks for compiler support that doesn't require linking.
+GLIBCXX_CHECK_COMPILER_FEATURES
+
+# Enable all the variable C++ runtime options that don't require linking.
+GLIBCXX_ENABLE_CSTDIO
+GLIBCXX_ENABLE_CLOCALE
+GLIBCXX_ENABLE_ALLOCATOR
+GLIBCXX_ENABLE_CHEADERS($c_model)  dnl c_model from configure.host
+GLIBCXX_ENABLE_LONG_LONG([yes])
+GLIBCXX_ENABLE_WCHAR_T([yes])
+GLIBCXX_ENABLE_C99([yes])
+GLIBCXX_ENABLE_CONCEPT_CHECKS([no])
+GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"])
+GLIBCXX_ENABLE_DEBUG([no])
+GLIBCXX_ENABLE_PARALLEL([yes])
+GLIBCXX_ENABLE_CXX_FLAGS
+GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no])
+GLIBCXX_ENABLE_EXTERN_TEMPLATE([yes])
+
+# Checks for operating systems support that doesn't require linking.
+GLIBCXX_CHECK_SYSTEM_ERROR
+
+# For the streamoff typedef.
+GLIBCXX_CHECK_INT64_T
+
+# For LFS support.
+GLIBCXX_CHECK_LFS
+
+# For showmanyc_helper().
+AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
+GLIBCXX_CHECK_POLL
+GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
+
+# For xsputn_2().
+AC_CHECK_HEADERS(sys/uio.h)
+GLIBCXX_CHECK_WRITEV
+
+# For C99 support to TR1.
+GLIBCXX_CHECK_C99_TR1
+
+# For the EOF, SEEK_CUR, and SEEK_END integer constants.
+GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS
+
+# For gettimeofday support.
+GLIBCXX_CHECK_GETTIMEOFDAY
+
+# For clock_gettime, nanosleep and sched_yield support.
+# NB: The default is [no], because otherwise it requires linking.
+GLIBCXX_ENABLE_LIBSTDCXX_TIME([no])
+
+# For gthread support
+GLIBCXX_CHECK_GTHREADS
+
+AC_LC_MESSAGES
+
+# Check for available headers.
+AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
+locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
+strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
+sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
+wchar.h wctype.h])
+
+# Only do link tests if native. Else, hardcode.
+if $GLIBCXX_IS_NATIVE; then
+
+  # We can do more elaborate tests that assume a working linker.
+  CANADIAN=no
+
+  GLIBCXX_CHECK_LINKER_FEATURES
+  GLIBCXX_CHECK_MATH_SUPPORT
+  GLIBCXX_CHECK_STDLIB_SUPPORT
+
+  # For /dev/random and /dev/urandom for TR1.
+  GLIBCXX_CHECK_RANDOM_TR1
+
+  # For TLS support.
+  GCC_CHECK_TLS
+
+  # For iconv support.
+  AM_ICONV
+
+else
+
+  # This lets us hard-code the functionality we know we'll have in the cross
+  # target environment.  "Let" is a sugar-coated word placed on an especially
+  # dull and tedious hack, actually.
+  #
+  # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros
+  # that involve linking, can't be used:
+  #    "cannot open sim-crt0.o"
+  #    "cannot open crt0.o"
+  # etc.  All this is because there currently exists no unified, consistent
+  # way for top level CC information to be passed down to target directories:
+  # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
+  # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
+  # crosses can be removed.
+
+  # If Canadian cross, then don't pick up tools from the build directory.
+  # Used only in GLIBCXX_EXPORT_INCLUDES.
+  if test -n "$with_cross_host" &&
+     test x"$build_alias" != x"$with_cross_host" &&
+     test x"$build" != x"$target";
+  then
+    CANADIAN=yes
+  else
+    CANADIAN=no
+  fi
+
+  # Construct crosses by hand, eliminating bits that need ld...
+  # GLIBCXX_CHECK_MATH_SUPPORT
+
+  # First, test for "known" system libraries.  We may be using newlib even
+  # on a hosted environment.
+  if test "x${with_newlib}" = "xyes"; then
+    os_include_dir="os/newlib"
+    AC_DEFINE(HAVE_HYPOT)
+
+    # GLIBCXX_CHECK_STDLIB_SUPPORT
+    AC_DEFINE(HAVE_STRTOF)
+
+    AC_DEFINE(HAVE_ACOSF)
+    AC_DEFINE(HAVE_ASINF)
+    AC_DEFINE(HAVE_ATAN2F)
+    AC_DEFINE(HAVE_ATANF)
+    AC_DEFINE(HAVE_CEILF)
+    AC_DEFINE(HAVE_COSF)
+    AC_DEFINE(HAVE_COSHF)
+    AC_DEFINE(HAVE_EXPF)
+    AC_DEFINE(HAVE_FABSF)
+    AC_DEFINE(HAVE_FLOORF)
+    AC_DEFINE(HAVE_FMODF)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_LDEXPF)
+    AC_DEFINE(HAVE_LOG10F)
+    AC_DEFINE(HAVE_LOGF)
+    AC_DEFINE(HAVE_MODFF)
+    AC_DEFINE(HAVE_POWF)
+    AC_DEFINE(HAVE_SINF)
+    AC_DEFINE(HAVE_SINHF)
+    AC_DEFINE(HAVE_SQRTF)
+    AC_DEFINE(HAVE_TANF)
+    AC_DEFINE(HAVE_TANHF)
+
+    AC_DEFINE(HAVE_ICONV)
+  else
+    GLIBCXX_CROSSCONFIG
+  fi
+
+  # At some point, we should differentiate between architectures
+  # like x86, which have long double versions, and alpha/powerpc/etc.,
+  # which don't. For the time being, punt.
+  if test x"long_double_math_on_this_cpu" = x"yes"; then
+    AC_DEFINE(HAVE_ACOSL)
+    AC_DEFINE(HAVE_ASINL)
+    AC_DEFINE(HAVE_ATAN2L)
+    AC_DEFINE(HAVE_ATANL)
+    AC_DEFINE(HAVE_CEILL)
+    AC_DEFINE(HAVE_COSL)
+    AC_DEFINE(HAVE_COSHL)
+    AC_DEFINE(HAVE_EXPL)
+    AC_DEFINE(HAVE_FABSL)
+    AC_DEFINE(HAVE_FLOORL)
+    AC_DEFINE(HAVE_FMODL)
+    AC_DEFINE(HAVE_FREXPL)
+    AC_DEFINE(HAVE_LDEXPL)
+    AC_DEFINE(HAVE_LOG10L)
+    AC_DEFINE(HAVE_LOGL)
+    AC_DEFINE(HAVE_MODFL)
+    AC_DEFINE(HAVE_POWL)
+    AC_DEFINE(HAVE_SINCOSL)
+    AC_DEFINE(HAVE_SINL)
+    AC_DEFINE(HAVE_SINHL)
+    AC_DEFINE(HAVE_SQRTL)
+    AC_DEFINE(HAVE_TANL)
+    AC_DEFINE(HAVE_TANHL)
+  fi
+fi
+
+# Check for _Unwind_GetIPInfo.
+GCC_CHECK_UNWIND_GETIPINFO
+
+
+GCC_LINUX_FUTEX([AC_DEFINE(HAVE_LINUX_FUTEX, 1, [Define if futex syscall is available.])])
+
+GCC_HEADER_STDINT(include/gstdint.h)
+
+# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
+GLIBCXX_ENABLE_SYMVERS([yes])
+GLIBCXX_ENABLE_VISIBILITY([yes])
+
+ac_ldbl_compat=no
+case "$target" in
+  powerpc*-*-linux* | \
+  powerpc*-*-gnu* | \
+  sparc*-*-linux* | \
+  s390*-*-linux* | \
+  alpha*-*-linux*)
+  AC_TRY_COMPILE(, [
+#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
+#error no need for long double compatibility
+#endif
+  ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
+  if test "$ac_ldbl_compat" = yes; then
+    AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
+	      [Define if compatibility should be provided for -mlong-double-64.])
+    port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
+  fi
+esac
+GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
+
+# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
+GLIBCXX_CONFIGURE_TESTSUITE
+
+# Define documentation rules conditionally.
+
+# See if makeinfo has been installed and is modern enough
+# that we can use it.
+ACX_CHECK_PROG_VER([MAKEINFO], [makeinfo], [--version],
+		   [GNU texinfo.* \([0-9][0-9.]*\)],
+		   [4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
+AM_CONDITIONAL(BUILD_INFO, test $gcc_cv_prog_makeinfo_modern = "yes")
+
+# Check for doxygen
+AC_CHECK_PROG([DOXYGEN], doxygen, yes, no)
+AC_CHECK_PROG([DOT], dot, yes, no)
+
+# Check for docbook
+AC_CHECK_PROG([XSLTPROC], xsltproc, yes, no)
+AC_CHECK_PROG([XMLLINT], xmllint, yes, no)
+GLIBCXX_CONFIGURE_DOCBOOK
+
+# Check for xml/html dependencies.
+AM_CONDITIONAL(BUILD_XML,
+	       test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes" &&
+	       test $ac_cv_prog_XSLTPROC = "yes" &&
+	       test $ac_cv_prog_XMLLINT = "yes" &&
+	       test $glibcxx_stylesheets = "yes")
+
+AM_CONDITIONAL(BUILD_HTML,
+	       test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes" &&
+	       test $ac_cv_prog_XSLTPROC = "yes" &&
+	       test $ac_cv_prog_XMLLINT = "yes" &&
+	       test $glibcxx_stylesheets = "yes")
+
+# Check for man dependencies.
+AM_CONDITIONAL(BUILD_MAN,
+	       test $ac_cv_prog_DOXYGEN = "yes" &&
+	       test $ac_cv_prog_DOT = "yes")
+
+# Check for pdf/epub dependencies.
+AC_CHECK_PROG([DBLATEX], dblatex, yes, no)
+AC_CHECK_PROG([PDFLATEX], pdflatex, yes, no)
+AM_CONDITIONAL(BUILD_PDF,
+	       test $ac_cv_prog_DBLATEX = "yes" &&
+	       test $ac_cv_prog_PDFLATEX = "yes")
+
+AC_CHECK_PROG([RUBY], ruby, yes, no)
+AC_CHECK_PROG([DBTOEPUB], dbtoepub, yes, no)
+AM_CONDITIONAL(BUILD_EPUB,
+	       test $ac_cv_prog_RUBY = "yes" &&
+	       test $ac_cv_prog_DBTOEPUB = "yes")
+
+
+# Propagate the target-specific source directories through the build chain.
+ATOMICITY_SRCDIR=config/${atomicity_dir}
+ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
+ATOMIC_FLAGS=${atomic_flags}
+CPU_DEFINES_SRCDIR=config/${cpu_defines_dir}
+OS_INC_SRCDIR=config/${os_include_dir}
+ERROR_CONSTANTS_SRCDIR=config/${error_constants_dir}
+ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
+AC_SUBST(ATOMICITY_SRCDIR)
+AC_SUBST(ATOMIC_WORD_SRCDIR)
+AC_SUBST(ATOMIC_FLAGS)
+AC_SUBST(CPU_DEFINES_SRCDIR)
+AC_SUBST(ABI_TWEAKS_SRCDIR)
+AC_SUBST(OS_INC_SRCDIR)
+AC_SUBST(ERROR_CONSTANTS_SRCDIR)
+
+
+# Determine cross-compile flags and AM_CONDITIONALs.
+#AC_SUBST(GLIBCXX_IS_NATIVE)
+#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
+GLIBCXX_EVALUATE_CONDITIONALS
+
+AC_CACHE_SAVE
+
+if test ${multilib} = yes; then
+  multilib_arg="--enable-multilib"
+else
+  multilib_arg=
+fi
+
+# Export all the install information.
+GLIBCXX_EXPORT_INSTALL_INFO
+
+# Export all the include and flag information to Makefiles.
+GLIBCXX_EXPORT_INCLUDES
+GLIBCXX_EXPORT_FLAGS
+
+if test "$enable_shared" = yes; then
+  LIBSUPCXX_PICFLAGS="-prefer-pic"
+else
+  LIBSUPCXX_PICFLAGS=
+fi
+AC_SUBST(LIBSUPCXX_PICFLAGS)
+
+dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
+dnl which can all be called multiple times as needed, plus one (different)
+dnl AC_OUTPUT macro.  This one lists the files to be created:
+AC_CONFIG_FILES(Makefile)
+AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
+AC_CONFIG_FILES([scripts/extract_symvers],[chmod +x scripts/extract_symvers])
+
+# Multilibs need MULTISUBDIR defined correctly in certain makefiles so
+# that multilib installs will end up installed in the correct place.
+# The testsuite needs it for multilib-aware ABI baseline files.
+# To work around this not being passed down from config-ml.in ->
+# srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
+# append it here.  Only modify Makefiles that have just been created.
+#
+# Also, get rid of this simulated-VPATH thing that automake does.
+AC_CONFIG_FILES(AC_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ]),
+  [cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   AS_UNSET([ml_norecursion])
+])
+
+AC_CONFIG_COMMANDS([generate-headers],
+  [(cd include && ${MAKE-make} pch_build= )])
+
+dnl And this actually makes things happen:
+AC_OUTPUT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.host b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.host
new file mode 100644
index 000000000..e29404c02
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/configure.host
@@ -0,0 +1,339 @@
+# configure.host
+#
+# This shell script handles all host based configuration for libstdc++.
+# It sets various shell variables based on the the host and the
+# configuration options.  You can modify this shell script without needing
+# to rerun autoconf/aclocal/etc.  This file is "sourced" not executed.
+#
+# You should read docs/html/17_intro/porting.* to make sense of this file.
+#
+#
+# It uses the following shell variables as set by config.guess:
+#   host                The configuration host (full CPU-vendor-OS triplet)
+#   host_cpu            The configuration host CPU
+#   host_os             The configuration host OS
+#
+#
+# It sets the following shell variables:
+#
+#   cpu_include_dir        CPU-specific directory, defaults to cpu/generic
+#                          if cpu/host_cpu doesn't exist.  This is not used
+#                          directly, but sets the default for others.
+#
+#   os_include_dir         OS-specific directory, defaults to os/generic.
+#
+#   c_model                the "C" header model, defaults to c_global.
+#
+#   c_compatibility        if "C" compatibility headers are necessary,
+#                          defaults to no.
+#
+#   abi_baseline_pair      directory name for ABI compat testing,
+#                          defaults to host_cpu-host_os (as per config.guess)
+#
+#   abi_tweaks_dir         location of cxxabi_tweaks.h,
+#                          defaults to cpu_include_dir
+#
+#   atomicity_dir          location of atomicity.h,
+#                          defaults to cpu_include_dir
+#
+#   atomic_word_dir        location of atomic_word.h
+#                          defaults to generic.
+#
+#   atomic_flags           extra flags to pass to use atomic instructions
+#                          defaults to nothing.
+#
+#   cpu_defines_dir        location of cpu_defines.h
+#                          defaults to generic.
+#
+#
+#   error_constants_dir    location of error_constants.h
+#                          defaults to os/generic.
+#
+# It possibly modifies the following variables:
+#
+#   OPT_LDFLAGS            extra flags to pass when linking the library, of
+#                          the form '-Wl,blah'
+#                          (defaults to empty in acinclude.m4)
+#
+#   port_specific_symbol_files
+#                          whitespace-seperated list of files containing
+#                          additional symbols to export from the shared
+#                          library, when symbol versioning is in use
+#
+#
+# If the defaults will not work for your platform, you need only change the
+# variables that won't work, i.e., you do not need to explicitly set a
+# working variable to its default.  Most hosts only need to change the two
+# *_include_dir variables.
+
+
+# DEFAULTS
+# Try to guess a default cpu_include_dir based on the name of the CPU.  We
+# cannot do this for os_include_dir; there are too many portable operating
+# systems out there.  :-)
+c_model=c_global
+c_compatibility=no
+atomic_word_dir=cpu/generic
+atomic_flags=""
+atomicity_dir="cpu/generic"
+cpu_defines_dir="cpu/generic"
+try_cpu=generic
+abi_tweaks_dir="cpu/generic"
+error_constants_dir="os/generic"
+
+# HOST-SPECIFIC OVERRIDES
+# Set any CPU-dependent bits.
+
+# Provide a way to funnel exotic flavors and prefixed/postfixed chip
+# variants into the established source config/cpu/* sub-directories.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+case "${host_cpu}" in
+  alpha*)
+    try_cpu=alpha
+    ;;
+  arm*)
+    try_cpu=arm
+    ;;
+  crisv32)
+    try_cpu=cris
+    ;;
+  i[567]86 | x86_64)
+    try_cpu=i486
+    ;;
+  hppa*)
+    try_cpu=hppa
+    ;;
+  mep*)
+    EXTRA_CXX_FLAGS=-mm
+    try_cpu=generic
+    ;;
+  mips*)
+    try_cpu=mips
+    ;;
+  powerpc* | rs6000)
+    try_cpu=powerpc
+    ;;
+  sparc* | ultrasparc)
+    try_cpu=sparc
+    ;;
+  *)
+    if test -d ${glibcxx_srcdir}/config/cpu/${host_cpu}; then
+      try_cpu=${host_cpu}
+    fi
+esac
+
+
+# Now look for the file(s) usually tied to a CPU model, and make
+# default choices for those if they haven't been explicitly set
+# already.  
+cpu_include_dir=cpu/${try_cpu}
+
+
+# Set specific CPU overrides for cpu_defines_dir. Most can just use generic.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+case "${host_cpu}" in
+  powerpc* | rs6000)
+    cpu_defines_dir=cpu/powerpc
+    ;;
+esac
+
+
+# Set specific CPU overrides for atomic_word_dir and atomic_flags. 
+# Most can just use generic.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+case "${host_cpu}" in
+  alpha*)
+    atomic_word_dir=cpu/alpha
+    ;;
+  cris*)
+    atomic_word_dir=cpu/cris
+    ;;
+  ia64)
+    atomic_word_dir=cpu/ia64
+    ;;
+  i[4567]86 | x86_64)
+    atomic_flags="-march=native"
+    ;;
+  powerpc* | rs6000)
+    atomic_word_dir=cpu/powerpc
+    ;;
+  sparc* | ultrasparc)
+    atomic_word_dir=cpu/sparc
+    atomic_flags="-mcpu=v9"
+    ;;
+esac
+
+
+# Set specific CPU overrides for atomicity_dir.
+# This can be over-ridden in GLIBCXX_ENABLE_ATOMIC_BUILTINS.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/atomicity.h ; then
+  atomicity_dir=$cpu_include_dir
+fi
+
+
+if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/cxxabi_tweaks.h ; then
+  abi_tweaks_dir=$cpu_include_dir
+fi
+
+
+# Set any OS-dependent bits.
+# Set the os_include_dir.
+# Set the error_costants_dir.
+# Set c_model, c_compatibility here.
+# If atomic ops and/or numeric limits are OS-specific rather than
+# CPU-specifc, set those here too.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+case "${host_os}" in
+  aix4.[3456789]* | aix[56789]*)
+    # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
+    # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
+    # explicitly duplicate the directory for 4.[<3].
+    os_include_dir="os/aix"
+    atomicity_dir="os/aix"
+    atomic_word_dir="os/aix"
+    OPT_LDFLAGS="-Wl,-G"
+    ;;
+  aix4.*)
+    os_include_dir="os/generic"
+    atomicity_dir="os/aix"
+    atomic_word_dir="os/aix"
+    ;;
+  aix*)
+    os_include_dir="os/generic"
+    atomicity_dir="cpu/generic"
+    ;;
+  bsd*)
+    # Plain BSD attempts to share FreeBSD files.
+    os_include_dir="os/bsd/freebsd"
+    ;;
+  cygwin*)
+    os_include_dir="os/newlib"
+    OPT_LDFLAGS="${OPT_LDFLAGS} \$(lt_host_flags)"
+    ;;
+  darwin | darwin[1-7] | darwin[1-7].*)
+    # On Darwin, performance is improved if libstdc++ is single-module.
+    # Up to at least 10.3.7, -flat_namespace is required for proper
+    # treatment of coalesced symbols.
+    OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module -Wl,-flat_namespace"
+    os_include_dir="os/bsd/darwin"
+    ;;
+  darwin[89] | darwin[89].* | darwin[1-9][0-9]* )
+    # On Darwin, performance is improved if libstdc++ is single-module,
+    # and on 8+ compatibility is better if not -flat_namespace.
+    OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module"
+    case "${host_cpu}" in
+      i[34567]86 | x86_64)
+        OPTIMIZE_CXXFLAGS="${OPTIMIZE_CXXFLAGS} -fvisibility-inlines-hidden"
+        ;;
+    esac
+    os_include_dir="os/bsd/darwin"
+    ;;
+  *djgpp*)      # leading * picks up "msdosdjgpp"
+    os_include_dir="os/djgpp"
+    error_constants_dir="os/djgpp"
+    ;;
+  freebsd*)
+    os_include_dir="os/bsd/freebsd"
+    ;;
+  gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+    if [ "$uclibc" = "yes" ]; then
+      os_include_dir="os/uclibc"
+    elif [ "$bionic" = "yes" ]; then
+      os_include_dir="os/bionic"
+    else
+      os_include_dir="os/gnu-linux"
+    fi
+    ;;
+  hpux*)
+    os_include_dir="os/hpux"
+    ;;
+  irix6.5*)
+    os_include_dir="os/irix/irix6.5"
+    atomicity_dir=os/irix
+    atomic_word_dir=os/irix
+    ;;
+  mingw32*)
+    os_include_dir="os/mingw32"
+    error_constants_dir="os/mingw32"
+    OPT_LDFLAGS="${OPT_LDFLAGS} \$(lt_host_flags)"
+    ;;
+  netbsd*)
+    os_include_dir="os/bsd/netbsd"
+    ;;
+  osf*)
+    os_include_dir="os/generic"
+    # libstdc++.so relies on emutls on Tru64 UNIX, which only works with the
+    # real functions implemented in libpthread.so, not with the dummies in
+    # libgcc, so always pass -lpthread.
+    OPT_LDFLAGS="${OPT_LDFLAGS} -lpthread"
+    ;;
+  qnx6.[12]*)
+    os_include_dir="os/qnx/qnx6.1"
+    c_model=c
+    ;;
+  solaris2)
+    # This too-vague configuration does not provide enough information
+    # to select a ctype include, and thus os_include_dir is a crap shoot.
+    echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
+    exit 1
+    ;;
+  solaris2.[89] | solaris2.1[0-9])
+    os_include_dir="os/solaris/solaris2.7"
+    ;;
+  tpf)
+    os_include_dir="os/tpf"
+    ;;
+  vxworks)
+    os_include_dir="os/vxworks"
+    ;;
+  *)
+    os_include_dir="os/generic"
+    ;;
+esac
+
+
+# Set any OS-dependent and CPU-dependent bits.
+# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+case "${host}" in
+  *-*-linux*)
+    case "${host_cpu}" in
+      i[567]86)
+        abi_baseline_pair=i486-linux-gnu
+        ;;
+      mips64*)
+	abi_baseline_pair=mips64-linux-gnu
+	;;
+      powerpc64)
+        abi_baseline_pair=powerpc64-linux-gnu
+        ;;
+      s390)
+        abi_baseline_pair=s390-linux-gnu
+        ;;
+      s390x)
+        abi_baseline_pair=s390x-linux-gnu
+        ;;
+      x86_64)
+        abi_baseline_pair=x86_64-linux-gnu
+        ;;
+      *)
+        if test -d ${glibcxx_srcdir}/config/abi/post/${try_cpu}-linux-gnu; then
+          abi_baseline_pair=${try_cpu}-linux-gnu
+        fi
+    esac
+    case "${host}" in
+      arm*-*-linux-*eabi)
+	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
+	;;
+    esac
+    ;;
+  powerpc*-*-darwin*)
+    port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
+    ;;
+  *-*-solaris2.[89])
+    abi_baseline_pair=solaris2.8
+    ;;
+  *-*-solaris2.1[0-9])
+    abi_baseline_pair=solaris2.10
+    ;;
+esac
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/crossconfig.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/crossconfig.m4
new file mode 100644
index 000000000..2d0a4a83d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/crossconfig.m4
@@ -0,0 +1,278 @@
+dnl
+dnl This file contains details for non-native builds.
+dnl
+
+AC_DEFUN([GLIBCXX_CROSSCONFIG],[
+# Base decisions on target environment.
+case "${host}" in
+  arm*-*-symbianelf*)
+    # This is a freestanding configuration; there is nothing to do here.
+    ;;
+
+  mips*-sde-elf*)
+    # These definitions are for the SDE C library rather than newlib.
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS)
+    GLIBCXX_CHECK_COMPILER_FEATURES
+    GLIBCXX_CHECK_LINKER_FEATURES
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+
+    AC_DEFINE(HAVE_FINITE)
+    AC_DEFINE(HAVE_HYPOT)
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_ISINF)
+
+    AC_DEFINE(HAVE_LDEXPF)
+    AC_DEFINE(HAVE_MODF)
+    AC_DEFINE(HAVE_SQRTF)
+    ;;
+
+  *-aix*)
+    GLIBCXX_CHECK_LINKER_FEATURES
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
+    # We don't yet support AIX's TLS ABI.
+    #GCC_CHECK_TLS
+    AM_ICONV
+    ;;
+
+  *-darwin*)
+    # Darwin versions vary, but the linker should work in a cross environment,
+    # so we just check for all the features here.
+    # Check for available headers.
+
+    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+    ;;
+
+  *djgpp)
+    # GLIBCXX_CHECK_MATH_SUPPORT
+    AC_DEFINE(HAVE_ISINF)
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_FINITE)
+    AC_DEFINE(HAVE_SINCOS)
+    AC_DEFINE(HAVE_HYPOT)
+    ;;
+
+  *-freebsd*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS) 
+    GLIBCXX_CHECK_LINKER_FEATURES
+    AC_DEFINE(HAVE_SETENV)
+    AC_DEFINE(HAVE_FINITEF)
+    AC_DEFINE(HAVE_FINITE)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_HYPOT)
+    AC_DEFINE(HAVE_HYPOTF)
+    AC_DEFINE(HAVE_ISINF)
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_ISNANF)
+
+    AC_DEFINE(HAVE_ACOSF)
+    AC_DEFINE(HAVE_ASINF)
+    AC_DEFINE(HAVE_ATAN2F)
+    AC_DEFINE(HAVE_ATANF)
+    AC_DEFINE(HAVE_CEILF)
+    AC_DEFINE(HAVE_COSF)
+    AC_DEFINE(HAVE_COSHF)
+    AC_DEFINE(HAVE_EXPF)
+    AC_DEFINE(HAVE_FABSF)
+    AC_DEFINE(HAVE_FLOORF)
+    AC_DEFINE(HAVE_FMODF)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_LDEXPF)
+    AC_DEFINE(HAVE_LOG10F)
+    AC_DEFINE(HAVE_LOGF)
+    AC_DEFINE(HAVE_MODFF)
+    AC_DEFINE(HAVE_POWF)
+    AC_DEFINE(HAVE_SINF)
+    AC_DEFINE(HAVE_SINHF)
+    AC_DEFINE(HAVE_SQRTF)
+    AC_DEFINE(HAVE_TANF)
+    AC_DEFINE(HAVE_TANHF)
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      AC_DEFINE(HAVE_FINITEL)
+      AC_DEFINE(HAVE_ISINFL)
+      AC_DEFINE(HAVE_ISNANL)
+    fi
+    ;;
+  *-hpux*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS)
+    GLIBCXX_CHECK_LINKER_FEATURES
+
+    # GLIBCXX_CHECK_MATH_SUPPORT
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_HYPOT)
+    AC_DEFINE(HAVE_ACOSF)
+    AC_DEFINE(HAVE_ASINF)
+    AC_DEFINE(HAVE_ATANF)
+    AC_DEFINE(HAVE_COSF)
+    AC_DEFINE(HAVE_COSHF)
+    AC_DEFINE(HAVE_SINF)
+    AC_DEFINE(HAVE_SINHF)
+    AC_DEFINE(HAVE_TANF)
+    AC_DEFINE(HAVE_TANHF)
+    AC_DEFINE(HAVE_EXPF)
+    AC_DEFINE(HAVE_ATAN2F)
+    AC_DEFINE(HAVE_FABSF)
+    AC_DEFINE(HAVE_FMODF)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_LOGF)
+    AC_DEFINE(HAVE_LOG10F)
+    AC_DEFINE(HAVE_MODF)
+    AC_DEFINE(HAVE_POWF)
+    AC_DEFINE(HAVE_SQRTF)
+
+    # GLIBCXX_CHECK_STDLIB_SUPPORT
+    AC_DEFINE(HAVE_STRTOLD)
+
+    GCC_CHECK_TLS
+    case "$target" in
+      *-hpux10*)
+	AC_DEFINE(HAVE_ISINF)
+	AC_DEFINE(HAVE_ISINFF)
+	AC_DEFINE(HAVE_ISNANF)
+	AC_DEFINE(HAVE_FINITE)
+	AC_DEFINE(HAVE_FINITEF)
+	;;
+    esac
+    ;;
+  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
+    GLIBCXX_CHECK_COMPILER_FEATURES
+    GLIBCXX_CHECK_LINKER_FEATURES
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
+    GCC_CHECK_TLS
+    AM_ICONV
+    ;;
+  *-mingw32*)
+    GLIBCXX_CHECK_LINKER_FEATURES
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+    ;;
+  *-netbsd*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS) 
+    GLIBCXX_CHECK_LINKER_FEATURES
+    AC_DEFINE(HAVE_FINITEF)
+    AC_DEFINE(HAVE_FINITE)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_HYPOTF)
+    AC_DEFINE(HAVE_ISINF)
+    AC_DEFINE(HAVE_ISINFF)
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_ISNANF)
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      AC_DEFINE(HAVE_FINITEL)
+      AC_DEFINE(HAVE_ISINFL)
+      AC_DEFINE(HAVE_ISNANL)
+    fi
+    ;;
+  *-netware)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS)
+    GLIBCXX_CHECK_LINKER_FEATURES
+    AC_DEFINE(HAVE_HYPOT)
+    AC_DEFINE(HAVE_ISINF)
+    AC_DEFINE(HAVE_ISNAN)
+    ;;
+  *-qnx6.1* | *-qnx6.2*)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS) 
+    GLIBCXX_CHECK_LINKER_FEATURES
+    AC_DEFINE(HAVE_COSF)
+    AC_DEFINE(HAVE_COSL)
+    AC_DEFINE(HAVE_COSHF)
+    AC_DEFINE(HAVE_COSHL)
+    AC_DEFINE(HAVE_LOGF)
+    AC_DEFINE(HAVE_LOGL)
+    AC_DEFINE(HAVE_LOG10F)
+    AC_DEFINE(HAVE_LOG10L)
+    AC_DEFINE(HAVE_SINF)
+    AC_DEFINE(HAVE_SINL)
+    AC_DEFINE(HAVE_SINHF)
+    AC_DEFINE(HAVE_SINHL)
+    ;;
+  *-rtems*)
+    GLIBCXX_CHECK_COMPILER_FEATURES
+    GLIBCXX_CHECK_LINKER_FEATURES
+    GLIBCXX_CHECK_MATH_SUPPORT
+    GLIBCXX_CHECK_STDLIB_SUPPORT
+    ;;
+  *-solaris*)
+    case "$target" in
+      *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
+         GLIBCXX_CHECK_LINKER_FEATURES
+         AC_DEFINE(HAVE_MBSTATE_T)
+         AC_DEFINE(HAVE_FINITE)
+         AC_DEFINE(HAVE_FPCLASS)
+         # All of the dependencies for wide character support are here, so
+         # turn it on. 
+         AC_DEFINE(_GLIBCXX_USE_WCHAR_T) 
+        ;;
+    esac
+    case "$target" in
+      *-*-solaris2.10)
+      # These two C99 functions are present only in Solaris >= 10
+      AC_DEFINE(HAVE_STRTOF)
+      AC_DEFINE(HAVE_STRTOLD)
+     ;;
+    esac
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_ISNANF)
+    AC_DEFINE(HAVE_MODFF)
+    AC_DEFINE(HAVE_HYPOT)
+    ;;
+  *-tpf)
+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    AC_SUBST(SECTION_FLAGS)
+    GLIBCXX_CHECK_LINKER_FEATURES
+    AC_DEFINE(HAVE_FINITE)
+    AC_DEFINE(HAVE_FINITEF)
+    AC_DEFINE(HAVE_FREXPF)
+    AC_DEFINE(HAVE_HYPOTF)
+    AC_DEFINE(HAVE_ISINF)
+    AC_DEFINE(HAVE_ISINFF)
+    AC_DEFINE(HAVE_ISNAN)
+    AC_DEFINE(HAVE_ISNANF)
+    AC_DEFINE(HAVE_SINCOS)
+    AC_DEFINE(HAVE_SINCOSF)
+    if test x"long_double_math_on_this_cpu" = x"yes"; then
+      AC_DEFINE(HAVE_FINITEL)
+      AC_DEFINE(HAVE_HYPOTL)
+      AC_DEFINE(HAVE_ISINFL)
+      AC_DEFINE(HAVE_ISNANL)
+    fi
+    ;;
+  *-vxworks)
+    AC_DEFINE(HAVE_ACOSF)
+    AC_DEFINE(HAVE_ASINF)
+    AC_DEFINE(HAVE_ATAN2F)
+    AC_DEFINE(HAVE_ATANF)
+    AC_DEFINE(HAVE_CEILF)
+    AC_DEFINE(HAVE_COSF)
+    AC_DEFINE(HAVE_COSHF)
+    AC_DEFINE(HAVE_EXPF)
+    AC_DEFINE(HAVE_FABSF)
+    AC_DEFINE(HAVE_FLOORF)
+    AC_DEFINE(HAVE_FMODF)
+    AC_DEFINE(HAVE_HYPOT)
+    AC_DEFINE(HAVE_LOG10F)
+    AC_DEFINE(HAVE_LOGF)
+    AC_DEFINE(HAVE_POWF)
+    AC_DEFINE(HAVE_SINF)
+    AC_DEFINE(HAVE_SINHF)
+    AC_DEFINE(HAVE_SQRTF)
+    AC_DEFINE(HAVE_TANF)
+    AC_DEFINE(HAVE_TANHF)
+    ;;
+  *)
+    AC_MSG_ERROR([No support for this host/target combination.])
+   ;;
+esac
+])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/fragment.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/fragment.am
new file mode 100644
index 000000000..d2065dc7b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/fragment.am
@@ -0,0 +1,25 @@
+
+## This is used in all Makefile.am's.  Set defaults here.
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
+MAINT_CHARSET = latin1
+
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.am
new file mode 100644
index 000000000..27b0a4bb8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.am
@@ -0,0 +1,1311 @@
+## Makefile for the include subdirectory of the GNU C++ Standard library.
+##
+## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+## 2011
+## Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/fragment.am
+
+# Standard C++ includes.
+std_srcdir = ${glibcxx_srcdir}/include/std
+std_builddir = .
+std_headers = \
+	${std_srcdir}/algorithm \
+	${std_srcdir}/array \
+	${std_srcdir}/atomic \
+	${std_srcdir}/bitset \
+	${std_srcdir}/chrono \
+	${std_srcdir}/complex \
+	${std_srcdir}/condition_variable \
+	${std_srcdir}/deque \
+	${std_srcdir}/forward_list \
+	${std_srcdir}/fstream \
+	${std_srcdir}/functional \
+	${std_srcdir}/future \
+	${std_srcdir}/iomanip \
+	${std_srcdir}/ios \
+	${std_srcdir}/iosfwd \
+	${std_srcdir}/iostream \
+	${std_srcdir}/istream \
+	${std_srcdir}/iterator \
+	${std_srcdir}/limits \
+	${std_srcdir}/list \
+	${std_srcdir}/locale \
+	${std_srcdir}/map \
+	${std_srcdir}/memory \
+	${std_srcdir}/mutex \
+	${std_srcdir}/numeric \
+	${std_srcdir}/ostream \
+	${std_srcdir}/queue \
+	${std_srcdir}/random \
+	${std_srcdir}/ratio \
+	${std_srcdir}/regex \
+	${std_srcdir}/set \
+	${std_srcdir}/sstream \
+	${std_srcdir}/stack \
+	${std_srcdir}/stdexcept \
+	${std_srcdir}/streambuf \
+	${std_srcdir}/string \
+	${std_srcdir}/system_error \
+	${std_srcdir}/thread \
+	${std_srcdir}/tuple \
+	${std_srcdir}/typeindex \
+	${std_srcdir}/type_traits \
+	${std_srcdir}/unordered_map \
+	${std_srcdir}/unordered_set \
+	${std_srcdir}/utility \
+	${std_srcdir}/valarray \
+	${std_srcdir}/vector
+
+bits_srcdir = ${glibcxx_srcdir}/include/bits
+bits_builddir = ./bits
+bits_headers = \
+        ${bits_srcdir}/algorithmfwd.h \
+	${bits_srcdir}/allocator.h \
+	${bits_srcdir}/atomic_base.h \
+	${bits_srcdir}/atomic_0.h \
+	${bits_srcdir}/atomic_2.h \
+	${bits_srcdir}/basic_ios.h \
+	${bits_srcdir}/basic_ios.tcc \
+	${bits_srcdir}/basic_string.h \
+	${bits_srcdir}/basic_string.tcc \
+	${bits_srcdir}/boost_concept_check.h \
+	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/char_traits.h \
+	${bits_srcdir}/codecvt.h \
+	${bits_srcdir}/concept_check.h \
+	${bits_srcdir}/cpp_type_traits.h \
+	${bits_srcdir}/deque.tcc \
+	${bits_srcdir}/forward_list.h \
+	${bits_srcdir}/forward_list.tcc \
+	${bits_srcdir}/fstream.tcc \
+	${bits_srcdir}/functexcept.h \
+	${bits_srcdir}/functional_hash.h \
+	${bits_srcdir}/gslice.h \
+	${bits_srcdir}/gslice_array.h \
+	${bits_srcdir}/hashtable.h \
+	${bits_srcdir}/hashtable_policy.h \
+	${bits_srcdir}/indirect_array.h \
+	${bits_srcdir}/ios_base.h \
+	${bits_srcdir}/istream.tcc \
+	${bits_srcdir}/list.tcc \
+	${bits_srcdir}/locale_classes.h \
+	${bits_srcdir}/locale_classes.tcc \
+	${bits_srcdir}/locale_facets.h \
+	${bits_srcdir}/locale_facets.tcc \
+	${bits_srcdir}/locale_facets_nonio.h \
+	${bits_srcdir}/locale_facets_nonio.tcc \
+	${bits_srcdir}/localefwd.h \
+	${bits_srcdir}/mask_array.h \
+	${bits_srcdir}/move.h \
+	${bits_srcdir}/ostream.tcc \
+	${bits_srcdir}/ostream_insert.h \
+	${bits_srcdir}/postypes.h \
+	${bits_srcdir}/random.h \
+	${bits_srcdir}/random.tcc \
+	${bits_srcdir}/range_access.h \
+	${bits_srcdir}/regex.h \
+	${bits_srcdir}/regex_compiler.h \
+	${bits_srcdir}/regex_constants.h \
+	${bits_srcdir}/regex_cursor.h \
+	${bits_srcdir}/regex_error.h \
+	${bits_srcdir}/regex_grep_matcher.h \
+	${bits_srcdir}/regex_grep_matcher.tcc \
+	${bits_srcdir}/regex_nfa.h \
+	${bits_srcdir}/regex_nfa.tcc \
+	${bits_srcdir}/stream_iterator.h \
+	${bits_srcdir}/streambuf_iterator.h \
+	${bits_srcdir}/shared_ptr.h \
+	${bits_srcdir}/shared_ptr_base.h \
+	${bits_srcdir}/slice_array.h \
+	${bits_srcdir}/sstream.tcc \
+	${bits_srcdir}/stl_algo.h \
+	${bits_srcdir}/stl_algobase.h \
+	${bits_srcdir}/stl_bvector.h \
+	${bits_srcdir}/stl_construct.h \
+	${bits_srcdir}/stl_deque.h \
+	${bits_srcdir}/stl_function.h \
+	${bits_srcdir}/stl_heap.h \
+	${bits_srcdir}/stl_iterator.h \
+	${bits_srcdir}/stl_iterator_base_funcs.h \
+	${bits_srcdir}/stl_iterator_base_types.h \
+	${bits_srcdir}/stl_list.h \
+	${bits_srcdir}/stl_map.h \
+	${bits_srcdir}/stl_multimap.h \
+	${bits_srcdir}/stl_multiset.h \
+	${bits_srcdir}/stl_numeric.h \
+	${bits_srcdir}/stl_pair.h \
+	${bits_srcdir}/stl_queue.h \
+	${bits_srcdir}/stl_raw_storage_iter.h \
+	${bits_srcdir}/stl_relops.h \
+	${bits_srcdir}/stl_set.h \
+	${bits_srcdir}/stl_stack.h \
+	${bits_srcdir}/stl_tempbuf.h \
+	${bits_srcdir}/stl_tree.h \
+	${bits_srcdir}/stl_uninitialized.h \
+	${bits_srcdir}/stl_vector.h \
+	${bits_srcdir}/streambuf.tcc \
+	${bits_srcdir}/stringfwd.h \
+	${bits_srcdir}/unique_ptr.h \
+	${bits_srcdir}/unordered_map.h \
+	${bits_srcdir}/unordered_set.h \
+	${bits_srcdir}/valarray_array.h \
+	${bits_srcdir}/valarray_array.tcc \
+	${bits_srcdir}/valarray_before.h \
+	${bits_srcdir}/valarray_after.h \
+	${bits_srcdir}/vector.tcc
+
+bits_sup_srcdir = ${glibcxx_srcdir}/libsupc++
+bits_sup_headers = \
+        ${bits_sup_srcdir}/cxxabi_forced.h \
+        ${bits_sup_srcdir}/exception_defines.h \
+        ${bits_sup_srcdir}/exception_ptr.h \
+        ${bits_sup_srcdir}/hash_bytes.h \
+        ${bits_sup_srcdir}/nested_exception.h
+
+backward_srcdir = ${glibcxx_srcdir}/include/backward
+backward_builddir = ./backward
+backward_headers = \
+	${backward_srcdir}/auto_ptr.h \
+	${backward_srcdir}/backward_warning.h \
+	${backward_srcdir}/binders.h \
+	${backward_srcdir}/hash_map \
+	${backward_srcdir}/hash_set \
+	${backward_srcdir}/hash_fun.h \
+	${backward_srcdir}/hashtable.h \
+	${backward_srcdir}/strstream
+
+pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
+pb_builddir = ./ext/pb_ds
+
+pb_subdirs = \
+	${pb_builddir}/detail \
+	${pb_builddir}/detail/pairing_heap_ \
+	${pb_builddir}/detail/splay_tree_ \
+	${pb_builddir}/detail/list_update_map_ \
+	${pb_builddir}/detail/basic_tree_policy \
+	${pb_builddir}/detail/trie_policy \
+	${pb_builddir}/detail/gp_hash_table_map_ \
+	${pb_builddir}/detail/tree_policy \
+	${pb_builddir}/detail/binomial_heap_base_ \
+	${pb_builddir}/detail/resize_policy \
+	${pb_builddir}/detail/bin_search_tree_ \
+	${pb_builddir}/detail/binomial_heap_ \
+	${pb_builddir}/detail/thin_heap_ \
+	${pb_builddir}/detail/pat_trie_ \
+	${pb_builddir}/detail/cc_hash_table_map_ \
+	${pb_builddir}/detail/rc_binomial_heap_ \
+	${pb_builddir}/detail/left_child_next_sibling_heap_ \
+	${pb_builddir}/detail/unordered_iterator \
+	${pb_builddir}/detail/binary_heap_ \
+	${pb_builddir}/detail/ov_tree_map_ \
+	${pb_builddir}/detail/hash_fn \
+	${pb_builddir}/detail/eq_fn \
+	${pb_builddir}/detail/rb_tree_map_ \
+	${pb_builddir}/detail/list_update_policy
+
+# The ability for make and the underlying host to deal with this
+# unwieldy list as one entire entity is not a sure thing, and may
+# cause build errors. Thus, split one list into many smaller
+# mini-lists, with the maximum size per mini-list of no more than 42.
+
+pb_headers1 = \
+	${pb_srcdir}/assoc_container.hpp \
+	${pb_srcdir}/exception.hpp \
+	${pb_srcdir}/hash_policy.hpp \
+	${pb_srcdir}/list_update_policy.hpp \
+	${pb_srcdir}/priority_queue.hpp \
+	${pb_srcdir}/tag_and_trait.hpp \
+	${pb_srcdir}/tree_policy.hpp \
+	${pb_srcdir}/trie_policy.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/basic_tree_policy_base.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/null_node_metadata.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/traits.hpp \
+	${pb_srcdir}/detail/basic_types.hpp \
+	${pb_srcdir}/detail/binary_heap_/binary_heap_.hpp \
+	${pb_srcdir}/detail/binary_heap_/const_iterator.hpp \
+	${pb_srcdir}/detail/binary_heap_/const_point_iterator.hpp \
+	${pb_srcdir}/detail/binary_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/entry_cmp.hpp \
+	${pb_srcdir}/detail/binary_heap_/entry_pred.hpp \
+	${pb_srcdir}/detail/binary_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/resize_policy.hpp \
+	${pb_srcdir}/detail/binary_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/binomial_heap_base_.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_/binomial_heap_.hpp \
+	${pb_srcdir}/detail/binomial_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
+
+pb_headers2 = \
+	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/node_iterators.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/point_iterators.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/r_erase_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/rotate_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/traits.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cc_ht_map_.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cmp_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/entry_list_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp
+
+pb_headers3 = \
+	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/cond_dealtor.hpp \
+	${pb_srcdir}/detail/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/container_base_dispatch.hpp \
+	${pb_srcdir}/detail/eq_fn/eq_by_less.hpp \
+	${pb_srcdir}/detail/eq_fn/hash_eq_fn.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/gp_ht_map_.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/iterator_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/standard_policies.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/hash_fn/direct_mask_range_hashing_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/direct_mod_range_hashing_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/linear_probe_fn_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/mask_based_range_hashing.hpp \
+	${pb_srcdir}/detail/hash_fn/mod_based_range_hashing.hpp \
+	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
+	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp
+
+pb_headers4 = \
+	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_ranged_hash_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_ranged_probe_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_range_hashing.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/const_iterator.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/const_point_iterator.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/node.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/null_metadata.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/entry_metadata_base.hpp \
+	${pb_srcdir}/detail/list_update_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/lu_map_.hpp \
+	${pb_srcdir}/detail/list_update_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_policy/counter_lu_metadata.hpp \
+	${pb_srcdir}/detail/list_update_policy/counter_lu_policy_imp.hpp \
+	${pb_srcdir}/detail/list_update_policy/mtf_lu_policy_imp.hpp \
+	${pb_srcdir}/detail/list_update_policy/sample_update_policy.hpp \
+	${pb_srcdir}/detail/debug_map_base.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/cond_dtor.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp
+
+pb_headers5 = \
+	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/traits.hpp \
+	${pb_srcdir}/detail/pairing_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/pairing_heap_.hpp \
+	${pb_srcdir}/detail/pairing_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/child_iterator.hpp \
+	${pb_srcdir}/detail/pat_trie_/cond_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/pat_trie_/const_child_iterator.hpp \
+	${pb_srcdir}/detail/pat_trie_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/head.hpp \
+	${pb_srcdir}/detail/pat_trie_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/insert_join_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/internal_node.hpp \
+	${pb_srcdir}/detail/pat_trie_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/leaf.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_base.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_iterators.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_metadata_base.hpp \
+	${pb_srcdir}/detail/pat_trie_/pat_trie_.hpp \
+	${pb_srcdir}/detail/pat_trie_/point_iterators.hpp \
+	${pb_srcdir}/detail/pat_trie_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/r_erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/rotate_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/split_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/split_join_branch_bag.hpp \
+	${pb_srcdir}/detail/pat_trie_/synth_e_access_traits.hpp \
+	${pb_srcdir}/detail/pat_trie_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/traits.hpp \
+	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
+	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp
+
+pb_headers6 = \
+	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/node.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/rb_tree_.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/traits.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/rc_binomial_heap_.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/rc.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_exponential_size_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_prime_size_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_standard_resize_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_resize_policy.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_resize_trigger.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_size_policy.hpp \
+	${pb_srcdir}/detail/splay_tree_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/node.hpp \
+	${pb_srcdir}/detail/splay_tree_/splay_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/splay_tree_.hpp \
+	${pb_srcdir}/detail/splay_tree_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/traits.hpp \
+	${pb_srcdir}/detail/standard_policies.hpp \
+	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp
+
+pb_headers7 = \
+	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/thin_heap_.hpp \
+	${pb_srcdir}/detail/thin_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/tree_policy/node_metadata_selector.hpp \
+	${pb_srcdir}/detail/tree_policy/null_node_update_imp.hpp \
+	${pb_srcdir}/detail/tree_policy/order_statistics_imp.hpp \
+	${pb_srcdir}/detail/tree_policy/sample_tree_node_update.hpp \
+	${pb_srcdir}/detail/tree_trace_base.hpp \
+	${pb_srcdir}/detail/trie_policy/node_metadata_selector.hpp \
+	${pb_srcdir}/detail/trie_policy/null_node_update_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/order_statistics_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/prefix_search_node_update_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/sample_trie_e_access_traits.hpp \
+	${pb_srcdir}/detail/trie_policy/sample_trie_node_update.hpp \
+	${pb_srcdir}/detail/trie_policy/string_trie_e_access_traits_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/trie_policy_base.hpp \
+	${pb_srcdir}/detail/types_traits.hpp \
+	${pb_srcdir}/detail/type_utils.hpp \
+	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp
+
+
+ext_srcdir = ${glibcxx_srcdir}/include/ext
+ext_builddir = ./ext
+ext_headers = \
+	${ext_srcdir}/algorithm \
+	${ext_srcdir}/atomicity.h \
+	${ext_srcdir}/array_allocator.h \
+	${ext_srcdir}/bitmap_allocator.h \
+	${ext_srcdir}/cast.h \
+	${ext_srcdir}/codecvt_specializations.h \
+	${ext_srcdir}/concurrence.h \
+	${ext_srcdir}/debug_allocator.h \
+	${ext_srcdir}/enc_filebuf.h \
+	${ext_srcdir}/extptr_allocator.h \
+	${ext_srcdir}/stdio_filebuf.h \
+	${ext_srcdir}/stdio_sync_filebuf.h \
+	${ext_srcdir}/functional \
+	${ext_srcdir}/iterator \
+	${ext_srcdir}/malloc_allocator.h \
+	${ext_srcdir}/memory \
+	${ext_srcdir}/mt_allocator.h \
+	${ext_srcdir}/new_allocator.h \
+	${ext_srcdir}/numeric \
+	${ext_srcdir}/numeric_traits.h \
+	${ext_srcdir}/pod_char_traits.h \
+	${ext_srcdir}/pointer.h \
+	${ext_srcdir}/pool_allocator.h \
+	${ext_srcdir}/rb_tree \
+	${ext_srcdir}/rope \
+	${ext_srcdir}/ropeimpl.h \
+	${ext_srcdir}/slist \
+	${ext_srcdir}/string_conversions.h \
+	${ext_srcdir}/throw_allocator.h \
+	${ext_srcdir}/typelist.h \
+	${ext_srcdir}/type_traits.h \
+	${ext_srcdir}/rc_string_base.h \
+	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/vstring.h \
+	${ext_srcdir}/vstring.tcc \
+	${ext_srcdir}/vstring_fwd.h \
+	${ext_srcdir}/vstring_util.h \
+	${ext_compat_headers}
+
+ext_compat_headers = \
+	${backward_srcdir}/hash_set \
+	${backward_srcdir}/hash_map
+
+tr1_srcdir = ${glibcxx_srcdir}/include/tr1
+tr1_builddir = ./tr1
+tr1_headers = \
+	${tr1_srcdir}/array \
+	${tr1_srcdir}/bessel_function.tcc \
+	${tr1_srcdir}/beta_function.tcc \
+	${tr1_srcdir}/ccomplex \
+	${tr1_srcdir}/cctype \
+	${tr1_srcdir}/cfenv \
+	${tr1_srcdir}/cfloat \
+	${tr1_srcdir}/cinttypes \
+	${tr1_srcdir}/climits \
+	${tr1_srcdir}/cmath \
+	${tr1_srcdir}/complex \
+	${tr1_srcdir}/complex.h \
+	${tr1_srcdir}/cstdarg \
+	${tr1_srcdir}/cstdbool \
+	${tr1_srcdir}/cstdint \
+	${tr1_srcdir}/cstdio \
+	${tr1_srcdir}/cstdlib \
+	${tr1_srcdir}/ctgmath \
+	${tr1_srcdir}/ctime \
+	${tr1_srcdir}/ctype.h \
+	${tr1_srcdir}/cwchar \
+	${tr1_srcdir}/cwctype \
+	${tr1_srcdir}/ell_integral.tcc \
+	${tr1_srcdir}/exp_integral.tcc \
+	${tr1_srcdir}/fenv.h \
+	${tr1_srcdir}/float.h \
+	${tr1_srcdir}/functional \
+	${tr1_srcdir}/functional_hash.h \
+	${tr1_srcdir}/gamma.tcc \
+	${tr1_srcdir}/hypergeometric.tcc \
+	${tr1_srcdir}/hashtable.h \
+	${tr1_srcdir}/hashtable_policy.h \
+	${tr1_srcdir}/inttypes.h \
+	${tr1_srcdir}/limits.h \
+	${tr1_srcdir}/math.h \
+	${tr1_srcdir}/memory \
+	${tr1_srcdir}/modified_bessel_func.tcc \
+	${tr1_srcdir}/poly_hermite.tcc \
+	${tr1_srcdir}/poly_laguerre.tcc \
+	${tr1_srcdir}/legendre_function.tcc \
+	${tr1_srcdir}/random \
+	${tr1_srcdir}/random.h \
+	${tr1_srcdir}/random.tcc \
+	${tr1_srcdir}/regex \
+	${tr1_srcdir}/riemann_zeta.tcc \
+	${tr1_srcdir}/shared_ptr.h \
+	${tr1_srcdir}/special_function_util.h \
+	${tr1_srcdir}/stdarg.h \
+	${tr1_srcdir}/stdbool.h \
+	${tr1_srcdir}/stdint.h \
+	${tr1_srcdir}/stdio.h \
+	${tr1_srcdir}/stdlib.h \
+	${tr1_srcdir}/tgmath.h \
+	${tr1_srcdir}/tuple \
+	${tr1_srcdir}/type_traits \
+	${tr1_srcdir}/unordered_map \
+	${tr1_srcdir}/unordered_map.h \
+	${tr1_srcdir}/unordered_set \
+	${tr1_srcdir}/unordered_set.h \
+	${tr1_srcdir}/utility \
+	${tr1_srcdir}/wchar.h \
+	${tr1_srcdir}/wctype.h
+
+decimal_srcdir = ${glibcxx_srcdir}/include/decimal
+decimal_builddir = ./decimal
+decimal_headers = \
+	${decimal_srcdir}/decimal \
+	${decimal_srcdir}/decimal.h
+
+# This is the common subset of C++ files that all three "C" header models use.
+c_base_srcdir = $(C_INCLUDE_DIR)
+c_base_builddir = .
+c_base_headers = \
+	${c_base_srcdir}/cassert \
+	${c_base_srcdir}/ccomplex \
+	${c_base_srcdir}/cctype \
+	${c_base_srcdir}/cerrno \
+	${c_base_srcdir}/cfenv \
+	${c_base_srcdir}/cfloat \
+	${c_base_srcdir}/cinttypes \
+	${c_base_srcdir}/ciso646 \
+	${c_base_srcdir}/climits \
+	${c_base_srcdir}/clocale \
+	${c_base_srcdir}/cmath \
+	${c_base_srcdir}/csetjmp \
+	${c_base_srcdir}/csignal \
+	${c_base_srcdir}/cstdarg \
+	${c_base_srcdir}/cstdbool \
+	${c_base_srcdir}/cstddef \
+	${c_base_srcdir}/cstdint \
+	${c_base_srcdir}/cstdio \
+	${c_base_srcdir}/cstdlib \
+	${c_base_srcdir}/cstring \
+	${c_base_srcdir}/ctgmath \
+	${c_base_srcdir}/ctime \
+	${c_base_srcdir}/cwchar \
+	${c_base_srcdir}/cwctype
+
+# "C" compatibility headers.
+c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility
+c_compatibility_builddir = .
+
+if GLIBCXX_C_HEADERS_C_STD
+c_compatibility_headers =
+endif
+
+if GLIBCXX_C_HEADERS_C_GLOBAL
+c_compatibility_headers = \
+	${c_compatibility_srcdir}/complex.h \
+	${c_compatibility_srcdir}/fenv.h \
+	${c_compatibility_srcdir}/tgmath.h
+endif
+
+if GLIBCXX_C_HEADERS_C
+c_compatibility_headers = \
+	${c_compatibility_srcdir}/assert.h \
+	${c_compatibility_srcdir}/complex.h \
+	${c_compatibility_srcdir}/ctype.h \
+	${c_compatibility_srcdir}/errno.h \
+	${c_compatibility_srcdir}/fenv.h \
+	${c_compatibility_srcdir}/float.h \
+	${c_compatibility_srcdir}/inttypes.h \
+	${c_compatibility_srcdir}/iso646.h \
+	${c_compatibility_srcdir}/limits.h \
+	${c_compatibility_srcdir}/locale.h \
+	${c_compatibility_srcdir}/math.h \
+	${c_compatibility_srcdir}/setjmp.h \
+	${c_compatibility_srcdir}/signal.h \
+	${c_compatibility_srcdir}/stdarg.h \
+	${c_compatibility_srcdir}/stdbool.h \
+	${c_compatibility_srcdir}/stddef.h \
+	${c_compatibility_srcdir}/stdint.h \
+	${c_compatibility_srcdir}/stdio.h \
+	${c_compatibility_srcdir}/stdlib.h \
+	${c_compatibility_srcdir}/string.h \
+	${c_compatibility_srcdir}/tgmath.h \
+	${c_compatibility_srcdir}/time.h \
+	${c_compatibility_srcdir}/wchar.h \
+	${c_compatibility_srcdir}/wctype.h
+endif
+
+# Debug mode headers
+debug_srcdir = ${glibcxx_srcdir}/include/debug
+debug_builddir = ./debug
+debug_headers = \
+	${debug_srcdir}/bitset \
+	${debug_srcdir}/debug.h \
+	${debug_srcdir}/deque \
+	${debug_srcdir}/formatter.h \
+	${debug_srcdir}/forward_list \
+	${debug_srcdir}/functions.h \
+	${debug_srcdir}/list \
+	${debug_srcdir}/map \
+	${debug_srcdir}/macros.h \
+	${debug_srcdir}/map.h \
+	${debug_srcdir}/multimap.h \
+	${debug_srcdir}/multiset.h \
+	${debug_srcdir}/safe_base.h \
+	${debug_srcdir}/safe_iterator.h \
+	${debug_srcdir}/safe_iterator.tcc \
+	${debug_srcdir}/safe_sequence.h \
+	${debug_srcdir}/safe_sequence.tcc \
+	${debug_srcdir}/set \
+	${debug_srcdir}/set.h \
+	${debug_srcdir}/string \
+	${debug_srcdir}/unordered_map \
+	${debug_srcdir}/unordered_set \
+	${debug_srcdir}/vector
+
+# Parallel mode headers
+parallel_srcdir = ${glibcxx_srcdir}/include/parallel
+parallel_builddir = ./parallel
+if ENABLE_PARALLEL
+parallel_headers = \
+        ${parallel_srcdir}/algo.h \
+        ${parallel_srcdir}/algobase.h \
+        ${parallel_srcdir}/algorithm \
+        ${parallel_srcdir}/algorithmfwd.h \
+        ${parallel_srcdir}/balanced_quicksort.h \
+        ${parallel_srcdir}/base.h \
+        ${parallel_srcdir}/basic_iterator.h \
+        ${parallel_srcdir}/checkers.h \
+        ${parallel_srcdir}/compatibility.h \
+        ${parallel_srcdir}/compiletime_settings.h \
+        ${parallel_srcdir}/equally_split.h \
+        ${parallel_srcdir}/features.h \
+        ${parallel_srcdir}/find.h \
+        ${parallel_srcdir}/find_selectors.h \
+        ${parallel_srcdir}/for_each.h \
+        ${parallel_srcdir}/for_each_selectors.h \
+        ${parallel_srcdir}/iterator.h \
+        ${parallel_srcdir}/list_partition.h \
+        ${parallel_srcdir}/losertree.h \
+        ${parallel_srcdir}/merge.h \
+        ${parallel_srcdir}/multiseq_selection.h \
+        ${parallel_srcdir}/multiway_merge.h \
+        ${parallel_srcdir}/multiway_mergesort.h \
+        ${parallel_srcdir}/numeric \
+        ${parallel_srcdir}/numericfwd.h \
+        ${parallel_srcdir}/omp_loop.h \
+        ${parallel_srcdir}/omp_loop_static.h \
+        ${parallel_srcdir}/par_loop.h \
+        ${parallel_srcdir}/parallel.h \
+        ${parallel_srcdir}/partial_sum.h \
+        ${parallel_srcdir}/partition.h \
+        ${parallel_srcdir}/queue.h \
+        ${parallel_srcdir}/quicksort.h \
+        ${parallel_srcdir}/random_number.h \
+        ${parallel_srcdir}/random_shuffle.h \
+        ${parallel_srcdir}/search.h \
+        ${parallel_srcdir}/set_operations.h \
+        ${parallel_srcdir}/settings.h \
+        ${parallel_srcdir}/sort.h \
+        ${parallel_srcdir}/tags.h \
+        ${parallel_srcdir}/types.h \
+        ${parallel_srcdir}/unique_copy.h \
+        ${parallel_srcdir}/workstealing.h
+else
+parallel_headers =
+endif
+
+# Profile mode headers
+profile_srcdir = ${glibcxx_srcdir}/include/profile
+profile_builddir = ./profile
+profile_headers = \
+	${profile_srcdir}/base.h \
+	${profile_srcdir}/unordered_map \
+	${profile_srcdir}/unordered_set \
+	${profile_srcdir}/vector \
+	${profile_srcdir}/bitset \
+	${profile_srcdir}/deque \
+	${profile_srcdir}/forward_list \
+	${profile_srcdir}/list \
+	${profile_srcdir}/map \
+	${profile_srcdir}/map.h \
+	${profile_srcdir}/multimap.h \
+	${profile_srcdir}/multiset.h \
+	${profile_srcdir}/set \
+	${profile_srcdir}/set.h \
+	${profile_srcdir}/iterator_tracker.h
+profile_impl_srcdir = ${glibcxx_srcdir}/include/profile/impl
+profile_impl_builddir = ./profile/impl
+profile_impl_headers = \
+	${profile_impl_srcdir}/profiler.h \
+	${profile_impl_srcdir}/profiler_algos.h \
+	${profile_impl_srcdir}/profiler_container_size.h \
+	${profile_impl_srcdir}/profiler_hash_func.h \
+	${profile_impl_srcdir}/profiler_hashtable_size.h \
+	${profile_impl_srcdir}/profiler_map_to_unordered_map.h \
+	${profile_impl_srcdir}/profiler_node.h \
+	${profile_impl_srcdir}/profiler_state.h \
+	${profile_impl_srcdir}/profiler_trace.h \
+	${profile_impl_srcdir}/profiler_vector_size.h \
+	${profile_impl_srcdir}/profiler_vector_to_list.h \
+	${profile_impl_srcdir}/profiler_list_to_vector.h \
+	${profile_impl_srcdir}/profiler_list_to_slist.h
+
+# Some "C" header schemes require the "C" compatibility headers.
+# For --enable-cheaders=c_std
+if GLIBCXX_C_HEADERS_COMPATIBILITY
+c_compatibility_headers_extra = ${c_compatibility_headers}
+else
+c_compatibility_headers_extra =
+endif
+
+host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
+host_builddir = ./${host_alias}/bits
+host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
+host_headers = \
+	${host_srcdir}/ctype_base.h \
+	${host_srcdir}/ctype_inline.h \
+	${host_srcdir}/ctype_noninline.h \
+	${host_srcdir}/os_defines.h \
+	${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h \
+	${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
+	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
+	${glibcxx_srcdir}/$(ERROR_CONSTANTS_SRCDIR)/error_constants.h \
+	${glibcxx_srcdir}/include/precompiled/stdc++.h \
+	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
+	${glibcxx_srcdir}/include/precompiled/extc++.h
+
+# Non-installed host_header files.
+COMPATIBILITY_H = config/abi/compatibility.h
+host_headers_noinst = \
+	${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) \
+	${glibcxx_srcdir}/$(COMPATIBILITY_H)
+
+# These host_headers_extra files are all built with ad hoc naming rules.
+host_headers_extra = \
+	${host_builddir}/basic_file.h \
+	${host_builddir}/c++config.h \
+	${host_builddir}/c++allocator.h \
+	${host_builddir}/c++io.h \
+	${host_builddir}/c++locale.h \
+	${host_builddir}/messages_members.h \
+	${host_builddir}/time_members.h
+
+thread_host_headers = \
+	${host_builddir}/gthr.h \
+	${host_builddir}/gthr-single.h \
+	${host_builddir}/gthr-posix.h \
+	${host_builddir}/gthr-tpf.h \
+	${host_builddir}/gthr-default.h
+
+
+pch1_source = ${glibcxx_srcdir}/include/precompiled/stdc++.h
+pch1_output_builddir = ${host_builddir}/stdc++.h.gch
+pch1_output_anchor = ${host_builddir}/stdc++.h
+pch1_output_installdir = ${host_installdir}/stdc++.h.gch
+pch1a_output = ${pch1_output_builddir}/O2ggnu++0x.gch
+pch1b_output = ${pch1_output_builddir}/O2g.gch
+pch1_output = ${pch1a_output} ${pch1b_output}
+
+pch2_source = ${glibcxx_srcdir}/include/precompiled/stdtr1c++.h
+pch2_output_builddir = ${host_builddir}/stdtr1c++.h.gch
+pch2_output_anchor = ${host_builddir}/stdtr1c++.h
+pch2_output_installdir = ${host_installdir}/stdtr1c++.h.gch
+pch2_output = ${pch2_output_builddir}/O2g.gch
+
+pch3_source = ${glibcxx_srcdir}/include/precompiled/extc++.h
+pch3_output_builddir = ${host_builddir}/extc++.h.gch
+pch3_output_anchor = ${host_builddir}/extc++.h
+pch3_output_installdir = ${host_installdir}/extc++.h.gch
+pch3_output = ${pch3_output_builddir}/O2g.gch
+
+
+pch_output = ${pch1_output} ${pch2_output} ${pch3_output}
+pch_output_dirs = \
+	${pch1_output_builddir} ${pch2_output_builddir} ${pch3_output_builddir}
+pch_output_anchors = \
+	${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor}
+PCHFLAGS=-x c++-header -nostdinc++ $(CXXFLAGS)
+if GLIBCXX_BUILD_PCH
+pch_build = ${pch_output}
+else
+pch_build =
+endif
+
+# List of all timestamp files.  By keeping only one copy of this list, both
+# CLEANFILES and all-local are kept up-to-date.
+allstamped = \
+	stamp-std stamp-bits stamp-bits-sup stamp-c_base stamp-c_compatibility \
+	stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-decimal \
+	stamp-debug stamp-parallel stamp-profile stamp-profile-impl \
+	stamp-host 
+
+# List of all files that are created by explicit building, editing, or
+# catenation.
+allcreated = \
+	${host_builddir}/c++config.h \
+	${thread_host_headers} \
+	${pch_build}
+
+# Here are the rules for building the headers
+all-local: ${allstamped} ${allcreated}
+
+# Ignore errors from 'mkdir -p' to avoid parallel make failure on
+# systems with broken mkdir.  Call mkdir unconditionally because
+# it is just as cheap to avoid going through the shell.
+# Ignore errors from $(LN_S) because the links may already exist.
+stamp-std: ${std_headers}
+	@-mkdir -p ${std_builddir}
+	@-cd ${std_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-std
+
+stamp-bits: ${bits_headers}
+	@-mkdir -p ${bits_builddir}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-bits
+
+stamp-bits-sup: stamp-bits ${bits_sup_headers}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-bits-sup
+
+stamp-c_base: ${c_base_headers}
+	@-mkdir -p ${c_base_builddir}
+	@-cd ${c_base_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-c_base
+
+stamp-c_base_extra: ${c_base_headers_extra}
+	@-mkdir -p ${bits_builddir}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-c_base_extra
+
+stamp-c_compatibility: ${c_compatibility_headers_extra}
+	@-mkdir -p ${c_compatibility_builddir}
+	@-if [ ! -z "${c_compatibility_headers_extra}" ]; then \
+	  cd ${c_compatibility_builddir} && $(LN_S) $? . 2>/dev/null ;\
+	fi
+	@$(STAMP) stamp-c_compatibility
+
+stamp-backward: ${backward_headers}
+	@-mkdir -p ${backward_builddir}
+	@-cd ${backward_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-backward
+
+stamp-ext: ${ext_headers}
+	@-mkdir -p ${ext_builddir}
+	@-cd ${ext_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-ext
+
+# Have to deal with nested include directories, gah! Strip off source
+# directory before making the link.
+# XXX check  ${pb_headers}
+stamp-pb:
+	@if [ ! -d "${pb_builddir}" ]; then \
+	    mkdir -p ${pb_subdirs} ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers2}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers3}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers4}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers5}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers6}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers7}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	$(STAMP) stamp-pb
+
+stamp-tr1: ${tr1_headers}
+	@-mkdir -p ${tr1_builddir}
+	@-cd ${tr1_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-tr1
+
+stamp-decimal: ${decimal_headers}
+	@-mkdir -p ${decimal_builddir}
+	@-cd ${decimal_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-decimal
+
+stamp-debug: ${debug_headers}
+	@-mkdir -p ${debug_builddir}
+	@-cd ${debug_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-debug
+
+stamp-parallel: ${parallel_headers}
+	@-mkdir -p ${parallel_builddir}
+	@-cd ${parallel_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-parallel
+
+stamp-profile: ${profile_headers}
+	@-mkdir -p ${profile_builddir}
+	@-cd ${profile_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-profile
+
+stamp-profile-impl: ${profile_impl_headers}
+	@-mkdir -p ${profile_impl_builddir}
+	@-cd ${profile_impl_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-profile-impl
+
+stamp-${host_alias}:
+	@-mkdir -p ${host_builddir}
+	@$(STAMP) stamp-${host_alias}
+
+# Host includes static.
+# XXX Missing dependency info for {host_headers_extra}
+stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
+	@cd ${host_builddir} && {\
+	  $(LN_S) ${host_headers} . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_H) c++locale.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(COMPATIBILITY_H) . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
+	} 2>/dev/null
+	$(STAMP) stamp-host
+
+# Host includes dynamic.
+if ENABLE_SYMVERS_GNU_NAMESPACE
+stamp-namespace-version:
+	echo 1 > stamp-namespace-version
+else
+stamp-namespace-version:
+	echo 0 > stamp-namespace-version
+endif
+
+if ENABLE_EXTERN_TEMPLATE
+stamp-extern-template:
+	echo 1 > stamp-extern-template
+else
+stamp-extern-template:
+	echo 0 > stamp-extern-template
+endif
+
+if ENABLE_VISIBILITY
+stamp-visibility:
+	echo 1 > stamp-visibility
+else
+stamp-visibility:
+	echo 0 > stamp-visibility
+endif
+
+# NB: The non-empty default ldbl_compat works around an AIX sed
+# oddity, see libstdc++/31957 for details.
+${host_builddir}/c++config.h: ${CONFIG_HEADER} \
+			      ${glibcxx_srcdir}/include/bits/c++config \
+			      stamp-${host_alias} \
+			      ${toplevel_srcdir}/gcc/DATESTAMP \
+			      stamp-namespace-version \
+			      stamp-visibility \
+			      stamp-extern-template
+	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
+	ns_version=`cat stamp-namespace-version` ;\
+	visibility=`cat stamp-visibility` ;\
+	externtemplate=`cat stamp-extern-template` ;\
+	ldbl_compat='s,g,g,' ;\
+	grep "^[ 	]*#[ 	]*define[ 	][ 	]*_GLIBCXX_LONG_DOUBLE_COMPAT[ 	][ 	]*1[ 	]*$$" \
+	${CONFIG_HEADER} > /dev/null 2>&1 \
+	&& ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
+	sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
+	-e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
+	-e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
+	-e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
+	-e "$$ldbl_compat" \
+            < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
+	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
+	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
+	    -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \
+	    -e '/[ 	]_GLIBCXX_LONG_DOUBLE_COMPAT[ 	]/d' \
+	    < ${CONFIG_HEADER} >> $@ ;\
+	echo "" >> $@ ;\
+	echo "#endif // _GLIBCXX_CXX_CONFIG_H" >> $@
+
+# Host includes for threads
+uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+
+${host_builddir}/gthr.h: ${toplevel_srcdir}/gcc/gthr.h stamp-${host_alias}
+	sed -e '/^#pragma/b' \
+	    -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
+	    -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+	    < ${toplevel_srcdir}/gcc/gthr.h > $@
+
+${host_builddir}/gthr-single.h: ${toplevel_srcdir}/gcc/gthr-single.h \
+				  stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-single.h > $@
+
+${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/gcc/gthr-posix.h \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-posix.h > $@
+
+${host_builddir}/gthr-tpf.h: ${toplevel_srcdir}/gcc/gthr-tpf.h \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-tpf.h > $@
+
+${host_builddir}/gthr-default.h: ${toplevel_srcdir}/gcc/${glibcxx_thread_h} \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+	    < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@
+
+# Build two precompiled C++ includes, stdc++.h.gch/*.gch
+${pch1a_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source}
+	-mkdir -p ${pch1_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g -std=gnu++0x ${pch1_source} \
+	-o $@
+
+${pch1b_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source}
+	-mkdir -p ${pch1_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch1_source} -o $@
+
+# Build a precompiled TR1 include, stdtr1c++.h.gch/O2.gch
+${pch2_output}: ${pch2_source} ${pch1_output}
+	-mkdir -p ${pch2_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch2_source} -o $@
+
+# Build a precompiled extension include, extc++.h.gch/O2.gch
+${pch3_output}: ${pch3_source} ${pch2_output}
+	-mkdir -p ${pch3_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch3_source} -o $@
+
+# For robustness sake (in light of junk files or in-source
+# configuration), copy from the build or source tree to the install
+# tree using only the human-maintained file lists and directory
+# components.  Yes, with minor differences, this is sheer duplication
+# of the staging rules above using $(INSTALL_DATA) instead of LN_S and
+# `$(mkinstalldirs)' instead of `mkdir -p'.  In particular,
+# host_headers_extra are taken out of the build tree staging area;
+# the rest are taken from the original source tree.
+
+if GLIBCXX_HOSTED
+install-data-local: install-headers
+else
+install-data-local: install-freestanding-headers
+endif
+
+# This is a subset of the full install-headers rule.  We only need <cstddef>,
+# <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
+# files which they include (and which we provide).  The last three headers
+# are installed by libsupc++, so only the first four and the sub-includes
+# are copied here.
+install-freestanding-headers:
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+	for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \
+	  ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
+	  ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	$(INSTALL_DATA) ${std_builddir}/limits $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in cstddef cstdlib cstdarg; do \
+	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+
+# The real deal.
+install-headers:
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
+	for file in ${bits_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir}
+	for file in ${backward_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
+	for file in ${ext_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
+	for dir in ${pb_subdirs}; do \
+	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done
+	for file in ${pb_headers1}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers2}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers3}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers4}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers5}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers6}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers7}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr1_builddir}
+	for file in ${tr1_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${decimal_builddir}
+	for file in ${decimal_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${decimal_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+	c_base_headers_extra_install='$(c_base_headers_extra)';\
+	for file in $$c_base_headers_extra_install; do \
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
+	for file in $$c_compatibility_headers_install; do \
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	for file in ${std_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
+	for file in ${debug_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
+	parallel_headers_install='${parallel_headers}';\
+	test -z "$$parallel_headers_install" || \
+	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir};\
+	for file in $$parallel_headers_install; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${profile_builddir}
+	for file in ${profile_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}
+	for file in ${profile_impl_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+	for file in ${host_headers} ${host_headers_extra} \
+	 ${thread_host_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
+
+# By adding these files here, automake will remove them for 'make clean'
+CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
+
+# To remove directories.
+clean-local:
+	rm -rf ${pch_output_dirs}
+
+# Stop implicit '.o' make rules from ever stomping on extensionless
+# headers, in the improbable case where some foolish, crack-addled
+# developer tries to create them via make in the include build
+# directory. (This is more of an example of how this kind of rule can
+# be made.)
+.PRECIOUS: $(std_headers) $(c_base_headers) $(tr1_headers)
+	   $(decimal_headers) $(ext_headers)
+$(std_headers): ; @:
+$(c_base_headers): ; @:
+$(tr1_headers): ; @:
+$(decimal_headers): ; @:
+$(ext_headers): ; @:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.in
new file mode 100644
index 000000000..3f1abd3e1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/Makefile.in
@@ -0,0 +1,1696 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am
+subdir = include
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
+# Standard C++ includes.
+std_srcdir = ${glibcxx_srcdir}/include/std
+std_builddir = .
+std_headers = \
+	${std_srcdir}/algorithm \
+	${std_srcdir}/array \
+	${std_srcdir}/atomic \
+	${std_srcdir}/bitset \
+	${std_srcdir}/chrono \
+	${std_srcdir}/complex \
+	${std_srcdir}/condition_variable \
+	${std_srcdir}/deque \
+	${std_srcdir}/forward_list \
+	${std_srcdir}/fstream \
+	${std_srcdir}/functional \
+	${std_srcdir}/future \
+	${std_srcdir}/iomanip \
+	${std_srcdir}/ios \
+	${std_srcdir}/iosfwd \
+	${std_srcdir}/iostream \
+	${std_srcdir}/istream \
+	${std_srcdir}/iterator \
+	${std_srcdir}/limits \
+	${std_srcdir}/list \
+	${std_srcdir}/locale \
+	${std_srcdir}/map \
+	${std_srcdir}/memory \
+	${std_srcdir}/mutex \
+	${std_srcdir}/numeric \
+	${std_srcdir}/ostream \
+	${std_srcdir}/queue \
+	${std_srcdir}/random \
+	${std_srcdir}/ratio \
+	${std_srcdir}/regex \
+	${std_srcdir}/set \
+	${std_srcdir}/sstream \
+	${std_srcdir}/stack \
+	${std_srcdir}/stdexcept \
+	${std_srcdir}/streambuf \
+	${std_srcdir}/string \
+	${std_srcdir}/system_error \
+	${std_srcdir}/thread \
+	${std_srcdir}/tuple \
+	${std_srcdir}/typeindex \
+	${std_srcdir}/type_traits \
+	${std_srcdir}/unordered_map \
+	${std_srcdir}/unordered_set \
+	${std_srcdir}/utility \
+	${std_srcdir}/valarray \
+	${std_srcdir}/vector
+
+bits_srcdir = ${glibcxx_srcdir}/include/bits
+bits_builddir = ./bits
+bits_headers = \
+        ${bits_srcdir}/algorithmfwd.h \
+	${bits_srcdir}/allocator.h \
+	${bits_srcdir}/atomic_base.h \
+	${bits_srcdir}/atomic_0.h \
+	${bits_srcdir}/atomic_2.h \
+	${bits_srcdir}/basic_ios.h \
+	${bits_srcdir}/basic_ios.tcc \
+	${bits_srcdir}/basic_string.h \
+	${bits_srcdir}/basic_string.tcc \
+	${bits_srcdir}/boost_concept_check.h \
+	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/char_traits.h \
+	${bits_srcdir}/codecvt.h \
+	${bits_srcdir}/concept_check.h \
+	${bits_srcdir}/cpp_type_traits.h \
+	${bits_srcdir}/deque.tcc \
+	${bits_srcdir}/forward_list.h \
+	${bits_srcdir}/forward_list.tcc \
+	${bits_srcdir}/fstream.tcc \
+	${bits_srcdir}/functexcept.h \
+	${bits_srcdir}/functional_hash.h \
+	${bits_srcdir}/gslice.h \
+	${bits_srcdir}/gslice_array.h \
+	${bits_srcdir}/hashtable.h \
+	${bits_srcdir}/hashtable_policy.h \
+	${bits_srcdir}/indirect_array.h \
+	${bits_srcdir}/ios_base.h \
+	${bits_srcdir}/istream.tcc \
+	${bits_srcdir}/list.tcc \
+	${bits_srcdir}/locale_classes.h \
+	${bits_srcdir}/locale_classes.tcc \
+	${bits_srcdir}/locale_facets.h \
+	${bits_srcdir}/locale_facets.tcc \
+	${bits_srcdir}/locale_facets_nonio.h \
+	${bits_srcdir}/locale_facets_nonio.tcc \
+	${bits_srcdir}/localefwd.h \
+	${bits_srcdir}/mask_array.h \
+	${bits_srcdir}/move.h \
+	${bits_srcdir}/ostream.tcc \
+	${bits_srcdir}/ostream_insert.h \
+	${bits_srcdir}/postypes.h \
+	${bits_srcdir}/random.h \
+	${bits_srcdir}/random.tcc \
+	${bits_srcdir}/range_access.h \
+	${bits_srcdir}/regex.h \
+	${bits_srcdir}/regex_compiler.h \
+	${bits_srcdir}/regex_constants.h \
+	${bits_srcdir}/regex_cursor.h \
+	${bits_srcdir}/regex_error.h \
+	${bits_srcdir}/regex_grep_matcher.h \
+	${bits_srcdir}/regex_grep_matcher.tcc \
+	${bits_srcdir}/regex_nfa.h \
+	${bits_srcdir}/regex_nfa.tcc \
+	${bits_srcdir}/stream_iterator.h \
+	${bits_srcdir}/streambuf_iterator.h \
+	${bits_srcdir}/shared_ptr.h \
+	${bits_srcdir}/shared_ptr_base.h \
+	${bits_srcdir}/slice_array.h \
+	${bits_srcdir}/sstream.tcc \
+	${bits_srcdir}/stl_algo.h \
+	${bits_srcdir}/stl_algobase.h \
+	${bits_srcdir}/stl_bvector.h \
+	${bits_srcdir}/stl_construct.h \
+	${bits_srcdir}/stl_deque.h \
+	${bits_srcdir}/stl_function.h \
+	${bits_srcdir}/stl_heap.h \
+	${bits_srcdir}/stl_iterator.h \
+	${bits_srcdir}/stl_iterator_base_funcs.h \
+	${bits_srcdir}/stl_iterator_base_types.h \
+	${bits_srcdir}/stl_list.h \
+	${bits_srcdir}/stl_map.h \
+	${bits_srcdir}/stl_multimap.h \
+	${bits_srcdir}/stl_multiset.h \
+	${bits_srcdir}/stl_numeric.h \
+	${bits_srcdir}/stl_pair.h \
+	${bits_srcdir}/stl_queue.h \
+	${bits_srcdir}/stl_raw_storage_iter.h \
+	${bits_srcdir}/stl_relops.h \
+	${bits_srcdir}/stl_set.h \
+	${bits_srcdir}/stl_stack.h \
+	${bits_srcdir}/stl_tempbuf.h \
+	${bits_srcdir}/stl_tree.h \
+	${bits_srcdir}/stl_uninitialized.h \
+	${bits_srcdir}/stl_vector.h \
+	${bits_srcdir}/streambuf.tcc \
+	${bits_srcdir}/stringfwd.h \
+	${bits_srcdir}/unique_ptr.h \
+	${bits_srcdir}/unordered_map.h \
+	${bits_srcdir}/unordered_set.h \
+	${bits_srcdir}/valarray_array.h \
+	${bits_srcdir}/valarray_array.tcc \
+	${bits_srcdir}/valarray_before.h \
+	${bits_srcdir}/valarray_after.h \
+	${bits_srcdir}/vector.tcc
+
+bits_sup_srcdir = ${glibcxx_srcdir}/libsupc++
+bits_sup_headers = \
+        ${bits_sup_srcdir}/cxxabi_forced.h \
+        ${bits_sup_srcdir}/exception_defines.h \
+        ${bits_sup_srcdir}/exception_ptr.h \
+        ${bits_sup_srcdir}/hash_bytes.h \
+        ${bits_sup_srcdir}/nested_exception.h
+
+backward_srcdir = ${glibcxx_srcdir}/include/backward
+backward_builddir = ./backward
+backward_headers = \
+	${backward_srcdir}/auto_ptr.h \
+	${backward_srcdir}/backward_warning.h \
+	${backward_srcdir}/binders.h \
+	${backward_srcdir}/hash_map \
+	${backward_srcdir}/hash_set \
+	${backward_srcdir}/hash_fun.h \
+	${backward_srcdir}/hashtable.h \
+	${backward_srcdir}/strstream
+
+pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
+pb_builddir = ./ext/pb_ds
+pb_subdirs = \
+	${pb_builddir}/detail \
+	${pb_builddir}/detail/pairing_heap_ \
+	${pb_builddir}/detail/splay_tree_ \
+	${pb_builddir}/detail/list_update_map_ \
+	${pb_builddir}/detail/basic_tree_policy \
+	${pb_builddir}/detail/trie_policy \
+	${pb_builddir}/detail/gp_hash_table_map_ \
+	${pb_builddir}/detail/tree_policy \
+	${pb_builddir}/detail/binomial_heap_base_ \
+	${pb_builddir}/detail/resize_policy \
+	${pb_builddir}/detail/bin_search_tree_ \
+	${pb_builddir}/detail/binomial_heap_ \
+	${pb_builddir}/detail/thin_heap_ \
+	${pb_builddir}/detail/pat_trie_ \
+	${pb_builddir}/detail/cc_hash_table_map_ \
+	${pb_builddir}/detail/rc_binomial_heap_ \
+	${pb_builddir}/detail/left_child_next_sibling_heap_ \
+	${pb_builddir}/detail/unordered_iterator \
+	${pb_builddir}/detail/binary_heap_ \
+	${pb_builddir}/detail/ov_tree_map_ \
+	${pb_builddir}/detail/hash_fn \
+	${pb_builddir}/detail/eq_fn \
+	${pb_builddir}/detail/rb_tree_map_ \
+	${pb_builddir}/detail/list_update_policy
+
+
+# The ability for make and the underlying host to deal with this
+# unwieldy list as one entire entity is not a sure thing, and may
+# cause build errors. Thus, split one list into many smaller
+# mini-lists, with the maximum size per mini-list of no more than 42.
+pb_headers1 = \
+	${pb_srcdir}/assoc_container.hpp \
+	${pb_srcdir}/exception.hpp \
+	${pb_srcdir}/hash_policy.hpp \
+	${pb_srcdir}/list_update_policy.hpp \
+	${pb_srcdir}/priority_queue.hpp \
+	${pb_srcdir}/tag_and_trait.hpp \
+	${pb_srcdir}/tree_policy.hpp \
+	${pb_srcdir}/trie_policy.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/basic_tree_policy_base.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/null_node_metadata.hpp \
+	${pb_srcdir}/detail/basic_tree_policy/traits.hpp \
+	${pb_srcdir}/detail/basic_types.hpp \
+	${pb_srcdir}/detail/binary_heap_/binary_heap_.hpp \
+	${pb_srcdir}/detail/binary_heap_/const_iterator.hpp \
+	${pb_srcdir}/detail/binary_heap_/const_point_iterator.hpp \
+	${pb_srcdir}/detail/binary_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/entry_cmp.hpp \
+	${pb_srcdir}/detail/binary_heap_/entry_pred.hpp \
+	${pb_srcdir}/detail/binary_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/resize_policy.hpp \
+	${pb_srcdir}/detail/binary_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/binary_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/binomial_heap_base_.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_base_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_/binomial_heap_.hpp \
+	${pb_srcdir}/detail/binomial_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
+
+pb_headers2 = \
+	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/node_iterators.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/point_iterators.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/r_erase_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/rotate_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/bin_search_tree_/traits.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cc_ht_map_.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cmp_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/entry_list_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
+	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp
+
+pb_headers3 = \
+	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/cond_dealtor.hpp \
+	${pb_srcdir}/detail/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/container_base_dispatch.hpp \
+	${pb_srcdir}/detail/eq_fn/eq_by_less.hpp \
+	${pb_srcdir}/detail/eq_fn/hash_eq_fn.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/gp_ht_map_.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/iterator_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/standard_policies.hpp \
+	${pb_srcdir}/detail/gp_hash_table_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/hash_fn/direct_mask_range_hashing_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/direct_mod_range_hashing_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/linear_probe_fn_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/mask_based_range_hashing.hpp \
+	${pb_srcdir}/detail/hash_fn/mod_based_range_hashing.hpp \
+	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
+	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
+	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp
+
+pb_headers4 = \
+	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_ranged_hash_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_ranged_probe_fn.hpp \
+	${pb_srcdir}/detail/hash_fn/sample_range_hashing.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/const_iterator.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/const_point_iterator.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/node.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/null_metadata.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/constructor_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/entry_metadata_base.hpp \
+	${pb_srcdir}/detail/list_update_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_map_/lu_map_.hpp \
+	${pb_srcdir}/detail/list_update_map_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/list_update_policy/counter_lu_metadata.hpp \
+	${pb_srcdir}/detail/list_update_policy/counter_lu_policy_imp.hpp \
+	${pb_srcdir}/detail/list_update_policy/mtf_lu_policy_imp.hpp \
+	${pb_srcdir}/detail/list_update_policy/sample_update_policy.hpp \
+	${pb_srcdir}/detail/debug_map_base.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/cond_dtor.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp
+
+pb_headers5 = \
+	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/ov_tree_map_/traits.hpp \
+	${pb_srcdir}/detail/pairing_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/pairing_heap_/pairing_heap_.hpp \
+	${pb_srcdir}/detail/pairing_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/child_iterator.hpp \
+	${pb_srcdir}/detail/pat_trie_/cond_dtor_entry_dealtor.hpp \
+	${pb_srcdir}/detail/pat_trie_/const_child_iterator.hpp \
+	${pb_srcdir}/detail/pat_trie_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/head.hpp \
+	${pb_srcdir}/detail/pat_trie_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/insert_join_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/internal_node.hpp \
+	${pb_srcdir}/detail/pat_trie_/iterators_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/leaf.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_base.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_iterators.hpp \
+	${pb_srcdir}/detail/pat_trie_/node_metadata_base.hpp \
+	${pb_srcdir}/detail/pat_trie_/pat_trie_.hpp \
+	${pb_srcdir}/detail/pat_trie_/point_iterators.hpp \
+	${pb_srcdir}/detail/pat_trie_/policy_access_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/r_erase_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/rotate_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/split_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/split_join_branch_bag.hpp \
+	${pb_srcdir}/detail/pat_trie_/synth_e_access_traits.hpp \
+	${pb_srcdir}/detail/pat_trie_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/pat_trie_/traits.hpp \
+	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
+	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp
+
+pb_headers6 = \
+	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/node.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/rb_tree_.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/rb_tree_map_/traits.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/rc_binomial_heap_.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/rc.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/rc_binomial_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_exponential_size_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_prime_size_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/hash_standard_resize_policy_imp.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_resize_policy.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_resize_trigger.hpp \
+	${pb_srcdir}/detail/resize_policy/sample_size_policy.hpp \
+	${pb_srcdir}/detail/splay_tree_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/erase_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/info_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/node.hpp \
+	${pb_srcdir}/detail/splay_tree_/splay_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/splay_tree_.hpp \
+	${pb_srcdir}/detail/splay_tree_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/splay_tree_/traits.hpp \
+	${pb_srcdir}/detail/standard_policies.hpp \
+	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp
+
+pb_headers7 = \
+	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/insert_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/split_join_fn_imps.hpp \
+	${pb_srcdir}/detail/thin_heap_/thin_heap_.hpp \
+	${pb_srcdir}/detail/thin_heap_/trace_fn_imps.hpp \
+	${pb_srcdir}/detail/tree_policy/node_metadata_selector.hpp \
+	${pb_srcdir}/detail/tree_policy/null_node_update_imp.hpp \
+	${pb_srcdir}/detail/tree_policy/order_statistics_imp.hpp \
+	${pb_srcdir}/detail/tree_policy/sample_tree_node_update.hpp \
+	${pb_srcdir}/detail/tree_trace_base.hpp \
+	${pb_srcdir}/detail/trie_policy/node_metadata_selector.hpp \
+	${pb_srcdir}/detail/trie_policy/null_node_update_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/order_statistics_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/prefix_search_node_update_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/sample_trie_e_access_traits.hpp \
+	${pb_srcdir}/detail/trie_policy/sample_trie_node_update.hpp \
+	${pb_srcdir}/detail/trie_policy/string_trie_e_access_traits_imp.hpp \
+	${pb_srcdir}/detail/trie_policy/trie_policy_base.hpp \
+	${pb_srcdir}/detail/types_traits.hpp \
+	${pb_srcdir}/detail/type_utils.hpp \
+	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
+	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp
+
+ext_srcdir = ${glibcxx_srcdir}/include/ext
+ext_builddir = ./ext
+ext_headers = \
+	${ext_srcdir}/algorithm \
+	${ext_srcdir}/atomicity.h \
+	${ext_srcdir}/array_allocator.h \
+	${ext_srcdir}/bitmap_allocator.h \
+	${ext_srcdir}/cast.h \
+	${ext_srcdir}/codecvt_specializations.h \
+	${ext_srcdir}/concurrence.h \
+	${ext_srcdir}/debug_allocator.h \
+	${ext_srcdir}/enc_filebuf.h \
+	${ext_srcdir}/extptr_allocator.h \
+	${ext_srcdir}/stdio_filebuf.h \
+	${ext_srcdir}/stdio_sync_filebuf.h \
+	${ext_srcdir}/functional \
+	${ext_srcdir}/iterator \
+	${ext_srcdir}/malloc_allocator.h \
+	${ext_srcdir}/memory \
+	${ext_srcdir}/mt_allocator.h \
+	${ext_srcdir}/new_allocator.h \
+	${ext_srcdir}/numeric \
+	${ext_srcdir}/numeric_traits.h \
+	${ext_srcdir}/pod_char_traits.h \
+	${ext_srcdir}/pointer.h \
+	${ext_srcdir}/pool_allocator.h \
+	${ext_srcdir}/rb_tree \
+	${ext_srcdir}/rope \
+	${ext_srcdir}/ropeimpl.h \
+	${ext_srcdir}/slist \
+	${ext_srcdir}/string_conversions.h \
+	${ext_srcdir}/throw_allocator.h \
+	${ext_srcdir}/typelist.h \
+	${ext_srcdir}/type_traits.h \
+	${ext_srcdir}/rc_string_base.h \
+	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/vstring.h \
+	${ext_srcdir}/vstring.tcc \
+	${ext_srcdir}/vstring_fwd.h \
+	${ext_srcdir}/vstring_util.h \
+	${ext_compat_headers}
+
+ext_compat_headers = \
+	${backward_srcdir}/hash_set \
+	${backward_srcdir}/hash_map
+
+tr1_srcdir = ${glibcxx_srcdir}/include/tr1
+tr1_builddir = ./tr1
+tr1_headers = \
+	${tr1_srcdir}/array \
+	${tr1_srcdir}/bessel_function.tcc \
+	${tr1_srcdir}/beta_function.tcc \
+	${tr1_srcdir}/ccomplex \
+	${tr1_srcdir}/cctype \
+	${tr1_srcdir}/cfenv \
+	${tr1_srcdir}/cfloat \
+	${tr1_srcdir}/cinttypes \
+	${tr1_srcdir}/climits \
+	${tr1_srcdir}/cmath \
+	${tr1_srcdir}/complex \
+	${tr1_srcdir}/complex.h \
+	${tr1_srcdir}/cstdarg \
+	${tr1_srcdir}/cstdbool \
+	${tr1_srcdir}/cstdint \
+	${tr1_srcdir}/cstdio \
+	${tr1_srcdir}/cstdlib \
+	${tr1_srcdir}/ctgmath \
+	${tr1_srcdir}/ctime \
+	${tr1_srcdir}/ctype.h \
+	${tr1_srcdir}/cwchar \
+	${tr1_srcdir}/cwctype \
+	${tr1_srcdir}/ell_integral.tcc \
+	${tr1_srcdir}/exp_integral.tcc \
+	${tr1_srcdir}/fenv.h \
+	${tr1_srcdir}/float.h \
+	${tr1_srcdir}/functional \
+	${tr1_srcdir}/functional_hash.h \
+	${tr1_srcdir}/gamma.tcc \
+	${tr1_srcdir}/hypergeometric.tcc \
+	${tr1_srcdir}/hashtable.h \
+	${tr1_srcdir}/hashtable_policy.h \
+	${tr1_srcdir}/inttypes.h \
+	${tr1_srcdir}/limits.h \
+	${tr1_srcdir}/math.h \
+	${tr1_srcdir}/memory \
+	${tr1_srcdir}/modified_bessel_func.tcc \
+	${tr1_srcdir}/poly_hermite.tcc \
+	${tr1_srcdir}/poly_laguerre.tcc \
+	${tr1_srcdir}/legendre_function.tcc \
+	${tr1_srcdir}/random \
+	${tr1_srcdir}/random.h \
+	${tr1_srcdir}/random.tcc \
+	${tr1_srcdir}/regex \
+	${tr1_srcdir}/riemann_zeta.tcc \
+	${tr1_srcdir}/shared_ptr.h \
+	${tr1_srcdir}/special_function_util.h \
+	${tr1_srcdir}/stdarg.h \
+	${tr1_srcdir}/stdbool.h \
+	${tr1_srcdir}/stdint.h \
+	${tr1_srcdir}/stdio.h \
+	${tr1_srcdir}/stdlib.h \
+	${tr1_srcdir}/tgmath.h \
+	${tr1_srcdir}/tuple \
+	${tr1_srcdir}/type_traits \
+	${tr1_srcdir}/unordered_map \
+	${tr1_srcdir}/unordered_map.h \
+	${tr1_srcdir}/unordered_set \
+	${tr1_srcdir}/unordered_set.h \
+	${tr1_srcdir}/utility \
+	${tr1_srcdir}/wchar.h \
+	${tr1_srcdir}/wctype.h
+
+decimal_srcdir = ${glibcxx_srcdir}/include/decimal
+decimal_builddir = ./decimal
+decimal_headers = \
+	${decimal_srcdir}/decimal \
+	${decimal_srcdir}/decimal.h
+
+
+# This is the common subset of C++ files that all three "C" header models use.
+c_base_srcdir = $(C_INCLUDE_DIR)
+c_base_builddir = .
+c_base_headers = \
+	${c_base_srcdir}/cassert \
+	${c_base_srcdir}/ccomplex \
+	${c_base_srcdir}/cctype \
+	${c_base_srcdir}/cerrno \
+	${c_base_srcdir}/cfenv \
+	${c_base_srcdir}/cfloat \
+	${c_base_srcdir}/cinttypes \
+	${c_base_srcdir}/ciso646 \
+	${c_base_srcdir}/climits \
+	${c_base_srcdir}/clocale \
+	${c_base_srcdir}/cmath \
+	${c_base_srcdir}/csetjmp \
+	${c_base_srcdir}/csignal \
+	${c_base_srcdir}/cstdarg \
+	${c_base_srcdir}/cstdbool \
+	${c_base_srcdir}/cstddef \
+	${c_base_srcdir}/cstdint \
+	${c_base_srcdir}/cstdio \
+	${c_base_srcdir}/cstdlib \
+	${c_base_srcdir}/cstring \
+	${c_base_srcdir}/ctgmath \
+	${c_base_srcdir}/ctime \
+	${c_base_srcdir}/cwchar \
+	${c_base_srcdir}/cwctype
+
+
+# "C" compatibility headers.
+c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility
+c_compatibility_builddir = .
+@GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@c_compatibility_headers = \
+@GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/complex.h \
+@GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/fenv.h \
+@GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/tgmath.h
+
+@GLIBCXX_C_HEADERS_C_STD_TRUE@c_compatibility_headers = 
+@GLIBCXX_C_HEADERS_C_TRUE@c_compatibility_headers = \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/assert.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/complex.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/ctype.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/errno.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/fenv.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/float.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/inttypes.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/iso646.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/limits.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/locale.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/math.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/setjmp.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/signal.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stdarg.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stdbool.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stddef.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stdint.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stdio.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/stdlib.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/string.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/tgmath.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/time.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/wchar.h \
+@GLIBCXX_C_HEADERS_C_TRUE@	${c_compatibility_srcdir}/wctype.h
+
+
+# Debug mode headers
+debug_srcdir = ${glibcxx_srcdir}/include/debug
+debug_builddir = ./debug
+debug_headers = \
+	${debug_srcdir}/bitset \
+	${debug_srcdir}/debug.h \
+	${debug_srcdir}/deque \
+	${debug_srcdir}/formatter.h \
+	${debug_srcdir}/forward_list \
+	${debug_srcdir}/functions.h \
+	${debug_srcdir}/list \
+	${debug_srcdir}/map \
+	${debug_srcdir}/macros.h \
+	${debug_srcdir}/map.h \
+	${debug_srcdir}/multimap.h \
+	${debug_srcdir}/multiset.h \
+	${debug_srcdir}/safe_base.h \
+	${debug_srcdir}/safe_iterator.h \
+	${debug_srcdir}/safe_iterator.tcc \
+	${debug_srcdir}/safe_sequence.h \
+	${debug_srcdir}/safe_sequence.tcc \
+	${debug_srcdir}/set \
+	${debug_srcdir}/set.h \
+	${debug_srcdir}/string \
+	${debug_srcdir}/unordered_map \
+	${debug_srcdir}/unordered_set \
+	${debug_srcdir}/vector
+
+
+# Parallel mode headers
+parallel_srcdir = ${glibcxx_srcdir}/include/parallel
+parallel_builddir = ./parallel
+@ENABLE_PARALLEL_FALSE@parallel_headers = 
+@ENABLE_PARALLEL_TRUE@parallel_headers = \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/algo.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/algobase.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/algorithm \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/algorithmfwd.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/balanced_quicksort.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/base.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/basic_iterator.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/checkers.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/compatibility.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/compiletime_settings.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/equally_split.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/features.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/find.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/find_selectors.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/for_each.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/for_each_selectors.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/iterator.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/list_partition.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/losertree.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/merge.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/multiseq_selection.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/multiway_merge.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/multiway_mergesort.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/numeric \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/numericfwd.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/omp_loop.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/omp_loop_static.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/par_loop.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/parallel.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/partial_sum.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/partition.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/queue.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/quicksort.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/random_number.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/random_shuffle.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/search.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/set_operations.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/settings.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/sort.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/tags.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/types.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/unique_copy.h \
+@ENABLE_PARALLEL_TRUE@        ${parallel_srcdir}/workstealing.h
+
+
+# Profile mode headers
+profile_srcdir = ${glibcxx_srcdir}/include/profile
+profile_builddir = ./profile
+profile_headers = \
+	${profile_srcdir}/base.h \
+	${profile_srcdir}/unordered_map \
+	${profile_srcdir}/unordered_set \
+	${profile_srcdir}/vector \
+	${profile_srcdir}/bitset \
+	${profile_srcdir}/deque \
+	${profile_srcdir}/forward_list \
+	${profile_srcdir}/list \
+	${profile_srcdir}/map \
+	${profile_srcdir}/map.h \
+	${profile_srcdir}/multimap.h \
+	${profile_srcdir}/multiset.h \
+	${profile_srcdir}/set \
+	${profile_srcdir}/set.h \
+	${profile_srcdir}/iterator_tracker.h
+
+profile_impl_srcdir = ${glibcxx_srcdir}/include/profile/impl
+profile_impl_builddir = ./profile/impl
+profile_impl_headers = \
+	${profile_impl_srcdir}/profiler.h \
+	${profile_impl_srcdir}/profiler_algos.h \
+	${profile_impl_srcdir}/profiler_container_size.h \
+	${profile_impl_srcdir}/profiler_hash_func.h \
+	${profile_impl_srcdir}/profiler_hashtable_size.h \
+	${profile_impl_srcdir}/profiler_map_to_unordered_map.h \
+	${profile_impl_srcdir}/profiler_node.h \
+	${profile_impl_srcdir}/profiler_state.h \
+	${profile_impl_srcdir}/profiler_trace.h \
+	${profile_impl_srcdir}/profiler_vector_size.h \
+	${profile_impl_srcdir}/profiler_vector_to_list.h \
+	${profile_impl_srcdir}/profiler_list_to_vector.h \
+	${profile_impl_srcdir}/profiler_list_to_slist.h
+
+@GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@c_compatibility_headers_extra = 
+
+# Some "C" header schemes require the "C" compatibility headers.
+# For --enable-cheaders=c_std
+@GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers}
+host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
+host_builddir = ./${host_alias}/bits
+host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
+host_headers = \
+	${host_srcdir}/ctype_base.h \
+	${host_srcdir}/ctype_inline.h \
+	${host_srcdir}/ctype_noninline.h \
+	${host_srcdir}/os_defines.h \
+	${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h \
+	${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
+	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
+	${glibcxx_srcdir}/$(ERROR_CONSTANTS_SRCDIR)/error_constants.h \
+	${glibcxx_srcdir}/include/precompiled/stdc++.h \
+	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
+	${glibcxx_srcdir}/include/precompiled/extc++.h
+
+
+# Non-installed host_header files.
+COMPATIBILITY_H = config/abi/compatibility.h
+host_headers_noinst = \
+	${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) \
+	${glibcxx_srcdir}/$(COMPATIBILITY_H)
+
+
+# These host_headers_extra files are all built with ad hoc naming rules.
+host_headers_extra = \
+	${host_builddir}/basic_file.h \
+	${host_builddir}/c++config.h \
+	${host_builddir}/c++allocator.h \
+	${host_builddir}/c++io.h \
+	${host_builddir}/c++locale.h \
+	${host_builddir}/messages_members.h \
+	${host_builddir}/time_members.h
+
+thread_host_headers = \
+	${host_builddir}/gthr.h \
+	${host_builddir}/gthr-single.h \
+	${host_builddir}/gthr-posix.h \
+	${host_builddir}/gthr-tpf.h \
+	${host_builddir}/gthr-default.h
+
+pch1_source = ${glibcxx_srcdir}/include/precompiled/stdc++.h
+pch1_output_builddir = ${host_builddir}/stdc++.h.gch
+pch1_output_anchor = ${host_builddir}/stdc++.h
+pch1_output_installdir = ${host_installdir}/stdc++.h.gch
+pch1a_output = ${pch1_output_builddir}/O2ggnu++0x.gch
+pch1b_output = ${pch1_output_builddir}/O2g.gch
+pch1_output = ${pch1a_output} ${pch1b_output}
+pch2_source = ${glibcxx_srcdir}/include/precompiled/stdtr1c++.h
+pch2_output_builddir = ${host_builddir}/stdtr1c++.h.gch
+pch2_output_anchor = ${host_builddir}/stdtr1c++.h
+pch2_output_installdir = ${host_installdir}/stdtr1c++.h.gch
+pch2_output = ${pch2_output_builddir}/O2g.gch
+pch3_source = ${glibcxx_srcdir}/include/precompiled/extc++.h
+pch3_output_builddir = ${host_builddir}/extc++.h.gch
+pch3_output_anchor = ${host_builddir}/extc++.h
+pch3_output_installdir = ${host_installdir}/extc++.h.gch
+pch3_output = ${pch3_output_builddir}/O2g.gch
+pch_output = ${pch1_output} ${pch2_output} ${pch3_output}
+pch_output_dirs = \
+	${pch1_output_builddir} ${pch2_output_builddir} ${pch3_output_builddir}
+
+pch_output_anchors = \
+	${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor}
+
+PCHFLAGS = -x c++-header -nostdinc++ $(CXXFLAGS)
+@GLIBCXX_BUILD_PCH_FALSE@pch_build = 
+@GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_output}
+
+# List of all timestamp files.  By keeping only one copy of this list, both
+# CLEANFILES and all-local are kept up-to-date.
+allstamped = \
+	stamp-std stamp-bits stamp-bits-sup stamp-c_base stamp-c_compatibility \
+	stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-decimal \
+	stamp-debug stamp-parallel stamp-profile stamp-profile-impl \
+	stamp-host 
+
+
+# List of all files that are created by explicit building, editing, or
+# catenation.
+allcreated = \
+	${host_builddir}/c++config.h \
+	${thread_host_headers} \
+	${pch_build}
+
+
+# Host includes for threads
+uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+
+# By adding these files here, automake will remove them for 'make clean'
+CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps include/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps include/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+	clean-libtool clean-local distclean distclean-generic \
+	distclean-libtool dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-data-local \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am uninstall uninstall-am
+
+
+# Here are the rules for building the headers
+all-local: ${allstamped} ${allcreated}
+
+# Ignore errors from 'mkdir -p' to avoid parallel make failure on
+# systems with broken mkdir.  Call mkdir unconditionally because
+# it is just as cheap to avoid going through the shell.
+# Ignore errors from $(LN_S) because the links may already exist.
+stamp-std: ${std_headers}
+	@-mkdir -p ${std_builddir}
+	@-cd ${std_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-std
+
+stamp-bits: ${bits_headers}
+	@-mkdir -p ${bits_builddir}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-bits
+
+stamp-bits-sup: stamp-bits ${bits_sup_headers}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-bits-sup
+
+stamp-c_base: ${c_base_headers}
+	@-mkdir -p ${c_base_builddir}
+	@-cd ${c_base_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-c_base
+
+stamp-c_base_extra: ${c_base_headers_extra}
+	@-mkdir -p ${bits_builddir}
+	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-c_base_extra
+
+stamp-c_compatibility: ${c_compatibility_headers_extra}
+	@-mkdir -p ${c_compatibility_builddir}
+	@-if [ ! -z "${c_compatibility_headers_extra}" ]; then \
+	  cd ${c_compatibility_builddir} && $(LN_S) $? . 2>/dev/null ;\
+	fi
+	@$(STAMP) stamp-c_compatibility
+
+stamp-backward: ${backward_headers}
+	@-mkdir -p ${backward_builddir}
+	@-cd ${backward_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-backward
+
+stamp-ext: ${ext_headers}
+	@-mkdir -p ${ext_builddir}
+	@-cd ${ext_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-ext
+
+# Have to deal with nested include directories, gah! Strip off source
+# directory before making the link.
+# XXX check  ${pb_headers}
+stamp-pb:
+	@if [ ! -d "${pb_builddir}" ]; then \
+	    mkdir -p ${pb_subdirs} ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers2}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers3}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers4}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers5}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers6}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	@if [ ! -f stamp-pb ]; then \
+	    cd ${pb_builddir} && for h in ${pb_headers7}; do \
+		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
+		$(LN_S) $$h $${build_name} || true ;\
+	      done ;\
+	fi
+	$(STAMP) stamp-pb
+
+stamp-tr1: ${tr1_headers}
+	@-mkdir -p ${tr1_builddir}
+	@-cd ${tr1_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-tr1
+
+stamp-decimal: ${decimal_headers}
+	@-mkdir -p ${decimal_builddir}
+	@-cd ${decimal_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-decimal
+
+stamp-debug: ${debug_headers}
+	@-mkdir -p ${debug_builddir}
+	@-cd ${debug_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-debug
+
+stamp-parallel: ${parallel_headers}
+	@-mkdir -p ${parallel_builddir}
+	@-cd ${parallel_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-parallel
+
+stamp-profile: ${profile_headers}
+	@-mkdir -p ${profile_builddir}
+	@-cd ${profile_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-profile
+
+stamp-profile-impl: ${profile_impl_headers}
+	@-mkdir -p ${profile_impl_builddir}
+	@-cd ${profile_impl_builddir} && $(LN_S) $? . 2>/dev/null
+	@$(STAMP) stamp-profile-impl
+
+stamp-${host_alias}:
+	@-mkdir -p ${host_builddir}
+	@$(STAMP) stamp-${host_alias}
+
+# Host includes static.
+# XXX Missing dependency info for {host_headers_extra}
+stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
+	@cd ${host_builddir} && {\
+	  $(LN_S) ${host_headers} . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_H) c++locale.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_INTERNAL_H) . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(COMPATIBILITY_H) . || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
+	  $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
+	} 2>/dev/null
+	$(STAMP) stamp-host
+
+# Host includes dynamic.
+@ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@stamp-namespace-version:
+@ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@	echo 1 > stamp-namespace-version
+@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@stamp-namespace-version:
+@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@	echo 0 > stamp-namespace-version
+
+@ENABLE_EXTERN_TEMPLATE_TRUE@stamp-extern-template:
+@ENABLE_EXTERN_TEMPLATE_TRUE@	echo 1 > stamp-extern-template
+@ENABLE_EXTERN_TEMPLATE_FALSE@stamp-extern-template:
+@ENABLE_EXTERN_TEMPLATE_FALSE@	echo 0 > stamp-extern-template
+
+@ENABLE_VISIBILITY_TRUE@stamp-visibility:
+@ENABLE_VISIBILITY_TRUE@	echo 1 > stamp-visibility
+@ENABLE_VISIBILITY_FALSE@stamp-visibility:
+@ENABLE_VISIBILITY_FALSE@	echo 0 > stamp-visibility
+
+# NB: The non-empty default ldbl_compat works around an AIX sed
+# oddity, see libstdc++/31957 for details.
+${host_builddir}/c++config.h: ${CONFIG_HEADER} \
+			      ${glibcxx_srcdir}/include/bits/c++config \
+			      stamp-${host_alias} \
+			      ${toplevel_srcdir}/gcc/DATESTAMP \
+			      stamp-namespace-version \
+			      stamp-visibility \
+			      stamp-extern-template
+	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
+	ns_version=`cat stamp-namespace-version` ;\
+	visibility=`cat stamp-visibility` ;\
+	externtemplate=`cat stamp-extern-template` ;\
+	ldbl_compat='s,g,g,' ;\
+	grep "^[ 	]*#[ 	]*define[ 	][ 	]*_GLIBCXX_LONG_DOUBLE_COMPAT[ 	][ 	]*1[ 	]*$$" \
+	${CONFIG_HEADER} > /dev/null 2>&1 \
+	&& ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
+	sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
+	-e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
+	-e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
+	-e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
+	-e "$$ldbl_compat" \
+            < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
+	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
+	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
+	    -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \
+	    -e '/[ 	]_GLIBCXX_LONG_DOUBLE_COMPAT[ 	]/d' \
+	    < ${CONFIG_HEADER} >> $@ ;\
+	echo "" >> $@ ;\
+	echo "#endif // _GLIBCXX_CXX_CONFIG_H" >> $@
+
+${host_builddir}/gthr.h: ${toplevel_srcdir}/gcc/gthr.h stamp-${host_alias}
+	sed -e '/^#pragma/b' \
+	    -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
+	    -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+	    < ${toplevel_srcdir}/gcc/gthr.h > $@
+
+${host_builddir}/gthr-single.h: ${toplevel_srcdir}/gcc/gthr-single.h \
+				  stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-single.h > $@
+
+${host_builddir}/gthr-posix.h: ${toplevel_srcdir}/gcc/gthr-posix.h \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-posix.h > $@
+
+${host_builddir}/gthr-tpf.h: ${toplevel_srcdir}/gcc/gthr-tpf.h \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    < ${toplevel_srcdir}/gcc/gthr-tpf.h > $@
+
+${host_builddir}/gthr-default.h: ${toplevel_srcdir}/gcc/${glibcxx_thread_h} \
+				   stamp-${host_alias}
+	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
+	    -e 's/\(GCC${uppercase}*_H\)/_GLIBCXX_\1/g' \
+	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
+	    -e 's/\(${uppercase}*USE_WEAK\)/_GLIBCXX_\1/g' \
+	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
+	    < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@
+
+# Build two precompiled C++ includes, stdc++.h.gch/*.gch
+${pch1a_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source}
+	-mkdir -p ${pch1_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g -std=gnu++0x ${pch1_source} \
+	-o $@
+
+${pch1b_output}: ${allstamped} ${host_builddir}/c++config.h ${pch1_source}
+	-mkdir -p ${pch1_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch1_source} -o $@
+
+# Build a precompiled TR1 include, stdtr1c++.h.gch/O2.gch
+${pch2_output}: ${pch2_source} ${pch1_output}
+	-mkdir -p ${pch2_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch2_source} -o $@
+
+# Build a precompiled extension include, extc++.h.gch/O2.gch
+${pch3_output}: ${pch3_source} ${pch2_output}
+	-mkdir -p ${pch3_output_builddir}
+	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch3_source} -o $@
+
+# For robustness sake (in light of junk files or in-source
+# configuration), copy from the build or source tree to the install
+# tree using only the human-maintained file lists and directory
+# components.  Yes, with minor differences, this is sheer duplication
+# of the staging rules above using $(INSTALL_DATA) instead of LN_S and
+# `$(mkinstalldirs)' instead of `mkdir -p'.  In particular,
+# host_headers_extra are taken out of the build tree staging area;
+# the rest are taken from the original source tree.
+
+@GLIBCXX_HOSTED_TRUE@install-data-local: install-headers
+@GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers
+
+# This is a subset of the full install-headers rule.  We only need <cstddef>,
+# <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
+# files which they include (and which we provide).  The last three headers
+# are installed by libsupc++, so only the first four and the sub-includes
+# are copied here.
+install-freestanding-headers:
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+	for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \
+	  ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
+	  ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	$(INSTALL_DATA) ${std_builddir}/limits $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in cstddef cstdlib cstdarg; do \
+	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+
+# The real deal.
+install-headers:
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
+	for file in ${bits_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir}
+	for file in ${backward_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
+	for file in ${ext_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
+	for dir in ${pb_subdirs}; do \
+	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done
+	for file in ${pb_headers1}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers2}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers3}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers4}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers5}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers6}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	for file in ${pb_headers7}; do \
+	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr1_builddir}
+	for file in ${tr1_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${decimal_builddir}
+	for file in ${decimal_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${decimal_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+	c_base_headers_extra_install='$(c_base_headers_extra)';\
+	for file in $$c_base_headers_extra_install; do \
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
+	for file in $$c_compatibility_headers_install; do \
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	for file in ${std_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
+	for file in ${debug_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
+	parallel_headers_install='${parallel_headers}';\
+	test -z "$$parallel_headers_install" || \
+	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir};\
+	for file in $$parallel_headers_install; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${profile_builddir}
+	for file in ${profile_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}
+	for file in ${profile_impl_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+	for file in ${host_headers} ${host_headers_extra} \
+	 ${thread_host_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
+
+# To remove directories.
+clean-local:
+	rm -rf ${pch_output_dirs}
+
+# Stop implicit '.o' make rules from ever stomping on extensionless
+# headers, in the improbable case where some foolish, crack-addled
+# developer tries to create them via make in the include build
+# directory. (This is more of an example of how this kind of rule can
+# be made.)
+.PRECIOUS: $(std_headers) $(c_base_headers) $(tr1_headers)
+	   $(decimal_headers) $(ext_headers)
+$(std_headers): ; @:
+$(c_base_headers): ; @:
+$(tr1_headers): ; @:
+$(decimal_headers): ; @:
+$(ext_headers): ; @:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/auto_ptr.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/auto_ptr.h
new file mode 100644
index 000000000..e86876510
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/auto_ptr.h
@@ -0,0 +1,295 @@
+// auto_ptr implementation -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file backward/auto_ptr.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _BACKWARD_AUTO_PTR_H
+#define _BACKWARD_AUTO_PTR_H 1
+
+#include <bits/c++config.h>
+#include <debug/debug.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  A wrapper class to provide auto_ptr with reference semantics.
+   *  For example, an auto_ptr can be assigned (or constructed from)
+   *  the result of a function which returns an auto_ptr by value.
+   *
+   *  All the auto_ptr_ref stuff should happen behind the scenes.
+   */
+  template<typename _Tp1>
+    struct auto_ptr_ref
+    {
+      _Tp1* _M_ptr;
+      
+      explicit
+      auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
+    } _GLIBCXX_DEPRECATED;
+
+
+  /**
+   *  @brief  A simple smart pointer providing strict ownership semantics.
+   *
+   *  The Standard says:
+   *  <pre>
+   *  An @c auto_ptr owns the object it holds a pointer to.  Copying
+   *  an @c auto_ptr copies the pointer and transfers ownership to the
+   *  destination.  If more than one @c auto_ptr owns the same object
+   *  at the same time the behavior of the program is undefined.
+   *
+   *  The uses of @c auto_ptr include providing temporary
+   *  exception-safety for dynamically allocated memory, passing
+   *  ownership of dynamically allocated memory to a function, and
+   *  returning dynamically allocated memory from a function.  @c
+   *  auto_ptr does not meet the CopyConstructible and Assignable
+   *  requirements for Standard Library <a
+   *  href="tables.html#65">container</a> elements and thus
+   *  instantiating a Standard Library container with an @c auto_ptr
+   *  results in undefined behavior.
+   *  </pre>
+   *  Quoted from [20.4.5]/3.
+   *
+   *  Good examples of what can and cannot be done with auto_ptr can
+   *  be found in the libstdc++ testsuite.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  127.  auto_ptr<> conversion issues
+   *  These resolutions have all been incorporated.
+   */
+  template<typename _Tp>
+    class auto_ptr
+    {
+    private:
+      _Tp* _M_ptr;
+      
+    public:
+      /// The pointed-to type.
+      typedef _Tp element_type;
+      
+      /**
+       *  @brief  An %auto_ptr is usually constructed from a raw pointer.
+       *  @param  p  A pointer (defaults to NULL).
+       *
+       *  This object now @e owns the object pointed to by @a p.
+       */
+      explicit
+      auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
+
+      /**
+       *  @brief  An %auto_ptr can be constructed from another %auto_ptr.
+       *  @param  a  Another %auto_ptr of the same type.
+       *
+       *  This object now @e owns the object previously owned by @a a,
+       *  which has given up ownership.
+       */
+      auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
+
+      /**
+       *  @brief  An %auto_ptr can be constructed from another %auto_ptr.
+       *  @param  a  Another %auto_ptr of a different but related type.
+       *
+       *  A pointer-to-Tp1 must be convertible to a
+       *  pointer-to-Tp/element_type.
+       *
+       *  This object now @e owns the object previously owned by @a a,
+       *  which has given up ownership.
+       */
+      template<typename _Tp1>
+        auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
+
+      /**
+       *  @brief  %auto_ptr assignment operator.
+       *  @param  a  Another %auto_ptr of the same type.
+       *
+       *  This object now @e owns the object previously owned by @a a,
+       *  which has given up ownership.  The object that this one @e
+       *  used to own and track has been deleted.
+       */
+      auto_ptr&
+      operator=(auto_ptr& __a) throw()
+      {
+	reset(__a.release());
+	return *this;
+      }
+
+      /**
+       *  @brief  %auto_ptr assignment operator.
+       *  @param  a  Another %auto_ptr of a different but related type.
+       *
+       *  A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_type.
+       *
+       *  This object now @e owns the object previously owned by @a a,
+       *  which has given up ownership.  The object that this one @e
+       *  used to own and track has been deleted.
+       */
+      template<typename _Tp1>
+        auto_ptr&
+        operator=(auto_ptr<_Tp1>& __a) throw()
+        {
+	  reset(__a.release());
+	  return *this;
+	}
+
+      /**
+       *  When the %auto_ptr goes out of scope, the object it owns is
+       *  deleted.  If it no longer owns anything (i.e., @c get() is
+       *  @c NULL), then this has no effect.
+       *
+       *  The C++ standard says there is supposed to be an empty throw
+       *  specification here, but omitting it is standard conforming.  Its
+       *  presence can be detected only if _Tp::~_Tp() throws, but this is
+       *  prohibited.  [17.4.3.6]/2
+       */
+      ~auto_ptr() { delete _M_ptr; }
+      
+      /**
+       *  @brief  Smart pointer dereferencing.
+       *
+       *  If this %auto_ptr no longer owns anything, then this
+       *  operation will crash.  (For a smart pointer, <em>no longer owns
+       *  anything</em> is the same as being a null pointer, and you know
+       *  what happens when you dereference one of those...)
+       */
+      element_type&
+      operator*() const throw() 
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return *_M_ptr; 
+      }
+      
+      /**
+       *  @brief  Smart pointer dereferencing.
+       *
+       *  This returns the pointer itself, which the language then will
+       *  automatically cause to be dereferenced.
+       */
+      element_type*
+      operator->() const throw() 
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return _M_ptr; 
+      }
+      
+      /**
+       *  @brief  Bypassing the smart pointer.
+       *  @return  The raw pointer being managed.
+       *
+       *  You can get a copy of the pointer that this object owns, for
+       *  situations such as passing to a function which only accepts
+       *  a raw pointer.
+       *
+       *  @note  This %auto_ptr still owns the memory.
+       */
+      element_type*
+      get() const throw() { return _M_ptr; }
+      
+      /**
+       *  @brief  Bypassing the smart pointer.
+       *  @return  The raw pointer being managed.
+       *
+       *  You can get a copy of the pointer that this object owns, for
+       *  situations such as passing to a function which only accepts
+       *  a raw pointer.
+       *
+       *  @note  This %auto_ptr no longer owns the memory.  When this object
+       *  goes out of scope, nothing will happen.
+       */
+      element_type*
+      release() throw()
+      {
+	element_type* __tmp = _M_ptr;
+	_M_ptr = 0;
+	return __tmp;
+      }
+      
+      /**
+       *  @brief  Forcibly deletes the managed object.
+       *  @param  p  A pointer (defaults to NULL).
+       *
+       *  This object now @e owns the object pointed to by @a p.  The
+       *  previous object has been deleted.
+       */
+      void
+      reset(element_type* __p = 0) throw()
+      {
+	if (__p != _M_ptr)
+	  {
+	    delete _M_ptr;
+	    _M_ptr = __p;
+	  }
+      }
+      
+      /** 
+       *  @brief  Automatic conversions
+       *
+       *  These operations convert an %auto_ptr into and from an auto_ptr_ref
+       *  automatically as needed.  This allows constructs such as
+       *  @code
+       *    auto_ptr<Derived>  func_returning_auto_ptr(.....);
+       *    ...
+       *    auto_ptr<Base> ptr = func_returning_auto_ptr(.....);
+       *  @endcode
+       */
+      auto_ptr(auto_ptr_ref<element_type> __ref) throw()
+      : _M_ptr(__ref._M_ptr) { }
+      
+      auto_ptr&
+      operator=(auto_ptr_ref<element_type> __ref) throw()
+      {
+	if (__ref._M_ptr != this->get())
+	  {
+	    delete _M_ptr;
+	    _M_ptr = __ref._M_ptr;
+	  }
+	return *this;
+      }
+      
+      template<typename _Tp1>
+        operator auto_ptr_ref<_Tp1>() throw()
+        { return auto_ptr_ref<_Tp1>(this->release()); }
+
+      template<typename _Tp1>
+        operator auto_ptr<_Tp1>() throw()
+        { return auto_ptr<_Tp1>(this->release()); }
+    } _GLIBCXX_DEPRECATED;
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 541. shared_ptr template assignment and void
+  template<>
+    class auto_ptr<void>
+    {
+    public:
+      typedef void element_type;
+    } _GLIBCXX_DEPRECATED;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _BACKWARD_AUTO_PTR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/backward_warning.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/backward_warning.h
new file mode 100644
index 000000000..77dff054c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/backward_warning.h
@@ -0,0 +1,61 @@
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file backward/backward_warning.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _BACKWARD_BACKWARD_WARNING_H
+#define _BACKWARD_BACKWARD_WARNING_H 1
+
+#ifdef __DEPRECATED
+#warning \
+  This file includes at least one deprecated or antiquated header which \
+  may be removed without further notice at a future date. Please use a \
+  non-deprecated interface with equivalent functionality instead. For a \
+  listing of replacement headers and interfaces, consult the file \
+  backward_warning.h. To disable this warning use -Wno-deprecated.
+
+/*
+  A list of valid replacements is as follows:
+
+  Use:					Instead of:
+  <sstream>, basic_stringbuf	   	<strstream>, strstreambuf
+  <sstream>, basic_istringstream	<strstream>, istrstream
+  <sstream>, basic_ostringstream	<strstream>, ostrstream
+  <sstream>, basic_stringstream		<strstream>, strstream
+  <unordered_set>, unordered_set     	<ext/hash_set>, hash_set
+  <unordered_set>, unordered_multiset	<ext/hash_set>, hash_multiset
+  <unordered_map>, unordered_map	<ext/hash_map>, hash_map
+  <unordered_map>, unordered_multimap	<ext/hash_map>, hash_multimap
+  <functional>, bind			<functional>, binder1st
+  <functional>, bind			<functional>, binder2nd
+  <functional>, bind			<functional>, bind1st
+  <functional>, bind			<functional>, bind2nd
+  <memory>, unique_ptr       		<memory>, auto_ptr
+*/
+
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/binders.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/binders.h
new file mode 100644
index 000000000..f98b56aae
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/binders.h
@@ -0,0 +1,172 @@
+// Functor implementations -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file backward/binders.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _BACKWARD_BINDERS_H
+#define _BACKWARD_BINDERS_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 20.3.6 binders
+  /** @defgroup binders Binder Classes
+   * @ingroup functors
+   *
+   *  Binders turn functions/functors with two arguments into functors
+   *  with a single argument, storing an argument to be applied later.
+   *  For example, a variable @c B of type @c binder1st is constructed
+   *  from a functor @c f and an argument @c x. Later, B's @c
+   *  operator() is called with a single argument @c y. The return
+   *  value is the value of @c f(x,y). @c B can be @a called with
+   *  various arguments (y1, y2, ...) and will in turn call @c
+   *  f(x,y1), @c f(x,y2), ...
+   *
+   *  The function @c bind1st is provided to save some typing. It takes the
+   *  function and an argument as parameters, and returns an instance of
+   *  @c binder1st.
+   *
+   *  The type @c binder2nd and its creator function @c bind2nd do the same
+   *  thing, but the stored argument is passed as the second parameter instead
+   *  of the first, e.g., @c bind2nd(std::minus<float>,1.3) will create a
+   *  functor whose @c operator() accepts a floating-point number, subtracts
+   *  1.3 from it, and returns the result. (If @c bind1st had been used,
+   *  the functor would perform <em>1.3 - x</em> instead.
+   *
+   *  Creator-wrapper functions like @c bind1st are intended to be used in
+   *  calling algorithms. Their return values will be temporary objects.
+   *  (The goal is to not require you to type names like
+   *  @c std::binder1st<std::plus<int>> for declaring a variable to hold the
+   *  return value from @c bind1st(std::plus<int>,5).
+   *
+   *  These become more useful when combined with the composition functions.
+   *
+   *  @{
+   */
+  /// One of the @link binders binder functors@endlink.
+  template<typename _Operation>
+    class binder1st
+    : public unary_function<typename _Operation::second_argument_type,
+			    typename _Operation::result_type>
+    {
+    protected:
+      _Operation op;
+      typename _Operation::first_argument_type value;
+
+    public:
+      binder1st(const _Operation& __x,
+		const typename _Operation::first_argument_type& __y)
+      : op(__x), value(__y) { }
+
+      typename _Operation::result_type
+      operator()(const typename _Operation::second_argument_type& __x) const
+      { return op(value, __x); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 109.  Missing binders for non-const sequence elements
+      typename _Operation::result_type
+      operator()(typename _Operation::second_argument_type& __x) const
+      { return op(value, __x); }
+    } _GLIBCXX_DEPRECATED;
+
+  /// One of the @link binders binder functors@endlink.
+  template<typename _Operation, typename _Tp>
+    inline binder1st<_Operation>
+    bind1st(const _Operation& __fn, const _Tp& __x)
+    {
+      typedef typename _Operation::first_argument_type _Arg1_type;
+      return binder1st<_Operation>(__fn, _Arg1_type(__x));
+    }
+
+  /// One of the @link binders binder functors@endlink.
+  template<typename _Operation>
+    class binder2nd
+    : public unary_function<typename _Operation::first_argument_type,
+			    typename _Operation::result_type>
+    {
+    protected:
+      _Operation op;
+      typename _Operation::second_argument_type value;
+
+    public:
+      binder2nd(const _Operation& __x,
+		const typename _Operation::second_argument_type& __y)
+      : op(__x), value(__y) { }
+
+      typename _Operation::result_type
+      operator()(const typename _Operation::first_argument_type& __x) const
+      { return op(__x, value); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 109.  Missing binders for non-const sequence elements
+      typename _Operation::result_type
+      operator()(typename _Operation::first_argument_type& __x) const
+      { return op(__x, value); }
+    } _GLIBCXX_DEPRECATED;
+
+  /// One of the @link binders binder functors@endlink.
+  template<typename _Operation, typename _Tp>
+    inline binder2nd<_Operation>
+    bind2nd(const _Operation& __fn, const _Tp& __x)
+    {
+      typedef typename _Operation::second_argument_type _Arg2_type;
+      return binder2nd<_Operation>(__fn, _Arg2_type(__x));
+    } 
+  /** @}  */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _BACKWARD_BINDERS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_fun.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_fun.h
new file mode 100644
index 000000000..a76eb7301
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_fun.h
@@ -0,0 +1,171 @@
+// 'struct hash' from SGI -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file backward/hash_fun.h
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _BACKWARD_HASH_FUN_H
+#define _BACKWARD_HASH_FUN_H 1
+
+#include <bits/c++config.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+
+  template<class _Key>
+    struct hash { };
+
+  inline size_t
+  __stl_hash_string(const char* __s)
+  {
+    unsigned long __h = 0;
+    for ( ; *__s; ++__s)
+      __h = 5 * __h + *__s;
+    return size_t(__h);
+  }
+
+  template<>
+    struct hash<char*>
+    {
+      size_t
+      operator()(const char* __s) const
+      { return __stl_hash_string(__s); }
+    };
+
+  template<>
+    struct hash<const char*>
+    {
+      size_t
+      operator()(const char* __s) const
+      { return __stl_hash_string(__s); }
+    };
+
+  template<>
+    struct hash<char>
+    { 
+      size_t
+      operator()(char __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<unsigned char>
+    { 
+      size_t
+      operator()(unsigned char __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<signed char>
+    {
+      size_t
+      operator()(unsigned char __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<short>
+    {
+      size_t
+      operator()(short __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<unsigned short>
+    {
+      size_t
+      operator()(unsigned short __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<int>
+    { 
+      size_t 
+      operator()(int __x) const 
+      { return __x; }
+    };
+
+  template<>
+    struct hash<unsigned int>
+    { 
+      size_t
+      operator()(unsigned int __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<long>
+    {
+      size_t
+      operator()(long __x) const
+      { return __x; }
+    };
+
+  template<>
+    struct hash<unsigned long>
+    {
+      size_t
+      operator()(unsigned long __x) const
+      { return __x; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_map
new file mode 100644
index 000000000..24c439e04
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_map
@@ -0,0 +1,600 @@
+// Hashing map implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file backward/hash_map
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _BACKWARD_HASH_MAP
+#define _BACKWARD_HASH_MAP 1
+
+#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH
+#include "backward_warning.h"
+#endif
+
+#include <bits/c++config.h>
+#include <backward/hashtable.h>
+#include <bits/concept_check.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::equal_to;
+  using std::allocator;
+  using std::pair;
+  using std::_Select1st;
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template<class _Key, class _Tp, class _HashFn = hash<_Key>,
+	   class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> >
+    class hash_map
+    {
+    private:
+      typedef hashtable<pair<const _Key, _Tp>,_Key, _HashFn,
+			_Select1st<pair<const _Key, _Tp> >,
+			_EqualKey, _Alloc> _Ht;
+
+      _Ht _M_ht;
+
+    public:
+      typedef typename _Ht::key_type key_type;
+      typedef _Tp data_type;
+      typedef _Tp mapped_type;
+      typedef typename _Ht::value_type value_type;
+      typedef typename _Ht::hasher hasher;
+      typedef typename _Ht::key_equal key_equal;
+      
+      typedef typename _Ht::size_type size_type;
+      typedef typename _Ht::difference_type difference_type;
+      typedef typename _Ht::pointer pointer;
+      typedef typename _Ht::const_pointer const_pointer;
+      typedef typename _Ht::reference reference;
+      typedef typename _Ht::const_reference const_reference;
+      
+      typedef typename _Ht::iterator iterator;
+      typedef typename _Ht::const_iterator const_iterator;
+      
+      typedef typename _Ht::allocator_type allocator_type;
+      
+      hasher
+      hash_funct() const
+      { return _M_ht.hash_funct(); }
+
+      key_equal
+      key_eq() const
+      { return _M_ht.key_eq(); }
+
+      allocator_type
+      get_allocator() const
+      { return _M_ht.get_allocator(); }
+
+      hash_map()
+      : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+  
+      explicit
+      hash_map(size_type __n)
+      : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+
+      hash_map(size_type __n, const hasher& __hf)
+      : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+
+      hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
+	       const allocator_type& __a = allocator_type())
+      : _M_ht(__n, __hf, __eql, __a) {}
+
+      template<class _InputIterator>
+        hash_map(_InputIterator __f, _InputIterator __l)
+	: _M_ht(100, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
+	: _M_ht(__n, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
+		 const hasher& __hf)
+	: _M_ht(__n, __hf, key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
+		 const hasher& __hf, const key_equal& __eql,
+		 const allocator_type& __a = allocator_type())
+	: _M_ht(__n, __hf, __eql, __a)
+        { _M_ht.insert_unique(__f, __l); }
+
+      size_type
+      size() const
+      { return _M_ht.size(); }
+      
+      size_type
+      max_size() const
+      { return _M_ht.max_size(); }
+      
+      bool
+      empty() const
+      { return _M_ht.empty(); }
+  
+      void
+      swap(hash_map& __hs)
+      { _M_ht.swap(__hs._M_ht); }
+
+      template<class _K1, class _T1, class _HF, class _EqK, class _Al>
+        friend bool
+        operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&,
+		    const hash_map<_K1, _T1, _HF, _EqK, _Al>&);
+
+      iterator
+      begin()
+      { return _M_ht.begin(); }
+
+      iterator
+      end()
+      { return _M_ht.end(); }
+
+      const_iterator
+      begin() const
+      { return _M_ht.begin(); }
+
+      const_iterator
+      end() const
+      { return _M_ht.end(); }
+
+      pair<iterator, bool>
+      insert(const value_type& __obj)
+      { return _M_ht.insert_unique(__obj); }
+
+      template<class _InputIterator>
+        void
+        insert(_InputIterator __f, _InputIterator __l)
+        { _M_ht.insert_unique(__f, __l); }
+
+      pair<iterator, bool>
+      insert_noresize(const value_type& __obj)
+      { return _M_ht.insert_unique_noresize(__obj); }
+
+      iterator
+      find(const key_type& __key)
+      { return _M_ht.find(__key); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return _M_ht.find(__key); }
+
+      _Tp&
+      operator[](const key_type& __key)
+      { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; }
+
+      size_type
+      count(const key_type& __key) const
+      { return _M_ht.count(__key); }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      { return _M_ht.equal_range(__key); }
+
+      pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      { return _M_ht.equal_range(__key); }
+
+      size_type
+      erase(const key_type& __key)
+      {return _M_ht.erase(__key); }
+
+      void
+      erase(iterator __it)
+      { _M_ht.erase(__it); }
+
+      void
+      erase(iterator __f, iterator __l)
+      { _M_ht.erase(__f, __l); }
+
+      void
+      clear()
+      { _M_ht.clear(); }
+
+      void
+      resize(size_type __hint)
+      { _M_ht.resize(__hint); }
+
+      size_type
+      bucket_count() const
+      { return _M_ht.bucket_count(); }
+
+      size_type
+      max_bucket_count() const
+      { return _M_ht.max_bucket_count(); }
+
+      size_type
+      elems_in_bucket(size_type __n) const
+      { return _M_ht.elems_in_bucket(__n); }
+    };
+
+  template<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc>
+    inline bool
+    operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
+	       const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
+    { return __hm1._M_ht == __hm2._M_ht; }
+
+  template<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc>
+    inline bool
+    operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
+	       const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
+    { return !(__hm1 == __hm2); }
+
+  template<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc>
+    inline void
+    swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
+	 hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
+    { __hm1.swap(__hm2); }
+
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template<class _Key, class _Tp,
+	   class _HashFn = hash<_Key>,
+	   class _EqualKey = equal_to<_Key>,
+	   class _Alloc = allocator<_Tp> >
+    class hash_multimap
+    {
+      // concept requirements
+      __glibcxx_class_requires(_Key, _SGIAssignableConcept)
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept)
+      __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept)
+	
+    private:
+      typedef hashtable<pair<const _Key, _Tp>, _Key, _HashFn,
+			_Select1st<pair<const _Key, _Tp> >, _EqualKey, _Alloc>
+          _Ht;
+
+      _Ht _M_ht;
+
+    public:
+      typedef typename _Ht::key_type key_type;
+      typedef _Tp data_type;
+      typedef _Tp mapped_type;
+      typedef typename _Ht::value_type value_type;
+      typedef typename _Ht::hasher hasher;
+      typedef typename _Ht::key_equal key_equal;
+      
+      typedef typename _Ht::size_type size_type;
+      typedef typename _Ht::difference_type difference_type;
+      typedef typename _Ht::pointer pointer;
+      typedef typename _Ht::const_pointer const_pointer;
+      typedef typename _Ht::reference reference;
+      typedef typename _Ht::const_reference const_reference;
+      
+      typedef typename _Ht::iterator iterator;
+      typedef typename _Ht::const_iterator const_iterator;
+      
+      typedef typename _Ht::allocator_type allocator_type;
+      
+      hasher
+      hash_funct() const
+      { return _M_ht.hash_funct(); }
+
+      key_equal
+      key_eq() const
+      { return _M_ht.key_eq(); }
+
+      allocator_type
+      get_allocator() const
+      { return _M_ht.get_allocator(); }
+
+      hash_multimap()
+      : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+
+      explicit
+      hash_multimap(size_type __n)
+      : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+
+      hash_multimap(size_type __n, const hasher& __hf)
+      : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+
+      hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
+		    const allocator_type& __a = allocator_type())
+      : _M_ht(__n, __hf, __eql, __a) {}
+
+      template<class _InputIterator>
+        hash_multimap(_InputIterator __f, _InputIterator __l)
+	: _M_ht(100, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
+	: _M_ht(__n, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
+		      const hasher& __hf)
+	: _M_ht(__n, __hf, key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
+		      const hasher& __hf, const key_equal& __eql,
+		      const allocator_type& __a = allocator_type())
+	: _M_ht(__n, __hf, __eql, __a)
+        { _M_ht.insert_equal(__f, __l); }
+
+      size_type
+      size() const
+      { return _M_ht.size(); }
+
+      size_type
+      max_size() const
+      { return _M_ht.max_size(); }
+
+      bool
+      empty() const
+      { return _M_ht.empty(); }
+
+      void
+      swap(hash_multimap& __hs)
+      { _M_ht.swap(__hs._M_ht); }
+
+      template<class _K1, class _T1, class _HF, class _EqK, class _Al>
+        friend bool
+        operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&,
+		   const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&);
+
+      iterator
+      begin()
+      { return _M_ht.begin(); }
+
+      iterator
+      end()
+      { return _M_ht.end(); }
+
+      const_iterator
+      begin() const
+      { return _M_ht.begin(); }
+
+      const_iterator
+      end() const
+      { return _M_ht.end(); }
+
+      iterator
+      insert(const value_type& __obj)
+      { return _M_ht.insert_equal(__obj); }
+
+      template<class _InputIterator>
+        void
+        insert(_InputIterator __f, _InputIterator __l)
+        { _M_ht.insert_equal(__f,__l); }
+
+      iterator
+      insert_noresize(const value_type& __obj)
+      { return _M_ht.insert_equal_noresize(__obj); }
+
+      iterator
+      find(const key_type& __key)
+      { return _M_ht.find(__key); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return _M_ht.find(__key); }
+
+      size_type
+      count(const key_type& __key) const
+      { return _M_ht.count(__key); }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      { return _M_ht.equal_range(__key); }
+
+      pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      { return _M_ht.equal_range(__key); }
+
+      size_type
+      erase(const key_type& __key)
+      { return _M_ht.erase(__key); }
+
+      void
+      erase(iterator __it)
+      { _M_ht.erase(__it); }
+
+      void
+      erase(iterator __f, iterator __l)
+      { _M_ht.erase(__f, __l); }
+
+      void
+      clear()
+      { _M_ht.clear(); }
+
+      void
+      resize(size_type __hint)
+      { _M_ht.resize(__hint); }
+
+      size_type
+      bucket_count() const
+      { return _M_ht.bucket_count(); }
+
+      size_type
+      max_bucket_count() const
+      { return _M_ht.max_bucket_count(); }
+      
+      size_type
+      elems_in_bucket(size_type __n) const
+      { return _M_ht.elems_in_bucket(__n); }
+    };
+
+  template<class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
+    inline bool
+    operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+	       const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
+    { return __hm1._M_ht == __hm2._M_ht; }
+
+  template<class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
+    inline bool
+    operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+	       const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
+    { return !(__hm1 == __hm2); }
+
+  template<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc>
+    inline void
+    swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
+	 hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
+    { __hm1.swap(__hm2); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specialization of insert_iterator so that it will work for hash_map
+  // and hash_multimap.
+  template<class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
+    class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, 
+					      _EqKey, _Alloc> >
+    {
+    protected:
+      typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>
+        _Container;
+      _Container* container;
+
+    public:
+      typedef _Container          container_type;
+      typedef output_iterator_tag iterator_category;
+      typedef void                value_type;
+      typedef void                difference_type;
+      typedef void                pointer;
+      typedef void                reference;
+      
+      insert_iterator(_Container& __x)
+      : container(&__x) {}
+
+      insert_iterator(_Container& __x, typename _Container::iterator)
+      : container(&__x) {}
+
+      insert_iterator<_Container>&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->insert(__value);
+	return *this;
+      }
+
+      insert_iterator<_Container>&
+      operator*()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++() { return *this; }
+
+      insert_iterator<_Container>&
+      operator++(int)
+      { return *this; }
+    };
+
+  template<class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
+    class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn,
+						   _EqKey, _Alloc> >
+    {
+    protected:
+      typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc>
+        _Container;
+      _Container* container;
+      typename _Container::iterator iter;
+
+    public:
+      typedef _Container          container_type;
+      typedef output_iterator_tag iterator_category;
+      typedef void                value_type;
+      typedef void                difference_type;
+      typedef void                pointer;
+      typedef void                reference;
+
+      insert_iterator(_Container& __x)
+      : container(&__x) {}
+
+      insert_iterator(_Container& __x, typename _Container::iterator)
+      : container(&__x) {}
+
+      insert_iterator<_Container>&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->insert(__value);
+	return *this;
+      }
+
+      insert_iterator<_Container>&
+      operator*()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++(int)
+      { return *this; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_set
new file mode 100644
index 000000000..f110fec68
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hash_set
@@ -0,0 +1,568 @@
+// Hashing set implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file backward/hash_set
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _BACKWARD_HASH_SET
+#define _BACKWARD_HASH_SET 1
+
+#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH
+#include "backward_warning.h"
+#endif
+
+#include <bits/c++config.h>
+#include <backward/hashtable.h>
+#include <bits/concept_check.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::equal_to;
+  using std::allocator;
+  using std::pair;
+  using std::_Identity;
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template<class _Value, class _HashFcn  = hash<_Value>,
+	   class _EqualKey = equal_to<_Value>,
+	   class _Alloc = allocator<_Value> >
+    class hash_set
+    {
+      // concept requirements
+      __glibcxx_class_requires(_Value, _SGIAssignableConcept)
+      __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept)
+      __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept)
+
+    private:
+      typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
+			_EqualKey, _Alloc> _Ht;
+      _Ht _M_ht;
+
+    public:
+      typedef typename _Ht::key_type key_type;
+      typedef typename _Ht::value_type value_type;
+      typedef typename _Ht::hasher hasher;
+      typedef typename _Ht::key_equal key_equal;
+      
+      typedef typename _Ht::size_type size_type;
+      typedef typename _Ht::difference_type difference_type;
+      typedef typename _Alloc::pointer pointer;
+      typedef typename _Alloc::const_pointer const_pointer;
+      typedef typename _Alloc::reference reference;
+      typedef typename _Alloc::const_reference const_reference;
+      
+      typedef typename _Ht::const_iterator iterator;
+      typedef typename _Ht::const_iterator const_iterator;
+      
+      typedef typename _Ht::allocator_type allocator_type;
+      
+      hasher
+      hash_funct() const
+      { return _M_ht.hash_funct(); }
+
+      key_equal
+      key_eq() const
+      { return _M_ht.key_eq(); }
+
+      allocator_type
+      get_allocator() const
+      { return _M_ht.get_allocator(); }
+
+      hash_set()
+      : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+
+      explicit
+      hash_set(size_type __n)
+      : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+
+      hash_set(size_type __n, const hasher& __hf)
+      : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+
+      hash_set(size_type __n, const hasher& __hf, const key_equal& __eql,
+	       const allocator_type& __a = allocator_type())
+      : _M_ht(__n, __hf, __eql, __a) {}
+
+      template<class _InputIterator>
+        hash_set(_InputIterator __f, _InputIterator __l)
+	: _M_ht(100, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_set(_InputIterator __f, _InputIterator __l, size_type __n)
+	: _M_ht(__n, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
+		 const hasher& __hf)
+	: _M_ht(__n, __hf, key_equal(), allocator_type())
+        { _M_ht.insert_unique(__f, __l); }
+
+      template<class _InputIterator>
+        hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
+		 const hasher& __hf, const key_equal& __eql,
+		 const allocator_type& __a = allocator_type())
+	: _M_ht(__n, __hf, __eql, __a)
+        { _M_ht.insert_unique(__f, __l); }
+
+      size_type
+      size() const
+      { return _M_ht.size(); }
+
+      size_type
+      max_size() const
+      { return _M_ht.max_size(); }
+      
+      bool
+      empty() const
+      { return _M_ht.empty(); }
+      
+      void
+      swap(hash_set& __hs)
+      { _M_ht.swap(__hs._M_ht); }
+
+      template<class _Val, class _HF, class _EqK, class _Al>
+        friend bool
+        operator==(const hash_set<_Val, _HF, _EqK, _Al>&,
+		   const hash_set<_Val, _HF, _EqK, _Al>&);
+
+      iterator
+      begin() const
+      { return _M_ht.begin(); }
+      
+      iterator
+      end() const
+      { return _M_ht.end(); }
+
+      pair<iterator, bool>
+      insert(const value_type& __obj)
+      {
+	pair<typename _Ht::iterator, bool> __p = _M_ht.insert_unique(__obj);
+	return pair<iterator,bool>(__p.first, __p.second);
+      }
+
+      template<class _InputIterator>
+        void
+        insert(_InputIterator __f, _InputIterator __l)
+        { _M_ht.insert_unique(__f, __l); }
+
+      pair<iterator, bool>
+      insert_noresize(const value_type& __obj)
+      {
+	pair<typename _Ht::iterator, bool> __p
+	  = _M_ht.insert_unique_noresize(__obj);
+	return pair<iterator, bool>(__p.first, __p.second);
+      }
+
+      iterator
+      find(const key_type& __key) const
+      { return _M_ht.find(__key); }
+
+      size_type
+      count(const key_type& __key) const
+      { return _M_ht.count(__key); }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __key) const
+      { return _M_ht.equal_range(__key); }
+
+      size_type
+      erase(const key_type& __key)
+      {return _M_ht.erase(__key); }
+      
+      void
+      erase(iterator __it)
+      { _M_ht.erase(__it); }
+      
+      void
+      erase(iterator __f, iterator __l)
+      { _M_ht.erase(__f, __l); }
+      
+      void
+      clear()
+      { _M_ht.clear(); }
+
+      void
+      resize(size_type __hint)
+      { _M_ht.resize(__hint); }
+      
+      size_type
+      bucket_count() const
+      { return _M_ht.bucket_count(); }
+      
+      size_type
+      max_bucket_count() const
+      { return _M_ht.max_bucket_count(); }
+      
+      size_type
+      elems_in_bucket(size_type __n) const
+      { return _M_ht.elems_in_bucket(__n); }
+    };
+
+  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+    inline bool
+    operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	       const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { return __hs1._M_ht == __hs2._M_ht; }
+
+  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+    inline bool
+    operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	       const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { return !(__hs1 == __hs2); }
+
+  template<class _Val, class _HashFcn, class _EqualKey, class _Alloc>
+    inline void
+    swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	 hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { __hs1.swap(__hs2); }
+
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template<class _Value,
+	   class _HashFcn = hash<_Value>,
+	   class _EqualKey = equal_to<_Value>,
+	   class _Alloc = allocator<_Value> >
+    class hash_multiset
+    {
+      // concept requirements
+      __glibcxx_class_requires(_Value, _SGIAssignableConcept)
+      __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept)
+      __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept)
+
+    private:
+      typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
+			_EqualKey, _Alloc> _Ht;
+      _Ht _M_ht;
+
+    public:
+      typedef typename _Ht::key_type key_type;
+      typedef typename _Ht::value_type value_type;
+      typedef typename _Ht::hasher hasher;
+      typedef typename _Ht::key_equal key_equal;
+      
+      typedef typename _Ht::size_type size_type;
+      typedef typename _Ht::difference_type difference_type;
+      typedef typename _Alloc::pointer pointer;
+      typedef typename _Alloc::const_pointer const_pointer;
+      typedef typename _Alloc::reference reference;
+      typedef typename _Alloc::const_reference const_reference;
+
+      typedef typename _Ht::const_iterator iterator;
+      typedef typename _Ht::const_iterator const_iterator;
+      
+      typedef typename _Ht::allocator_type allocator_type;
+      
+      hasher
+      hash_funct() const
+      { return _M_ht.hash_funct(); }
+      
+      key_equal
+      key_eq() const
+      { return _M_ht.key_eq(); }
+      
+      allocator_type
+      get_allocator() const
+      { return _M_ht.get_allocator(); }
+
+      hash_multiset()
+      : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+
+      explicit
+      hash_multiset(size_type __n)
+      : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+
+      hash_multiset(size_type __n, const hasher& __hf)
+      : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+      
+      hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql,
+		    const allocator_type& __a = allocator_type())
+      : _M_ht(__n, __hf, __eql, __a) {}
+
+      template<class _InputIterator>
+        hash_multiset(_InputIterator __f, _InputIterator __l)
+	: _M_ht(100, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n)
+	: _M_ht(__n, hasher(), key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
+		      const hasher& __hf)
+	: _M_ht(__n, __hf, key_equal(), allocator_type())
+        { _M_ht.insert_equal(__f, __l); }
+
+      template<class _InputIterator>
+        hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
+		      const hasher& __hf, const key_equal& __eql,
+		      const allocator_type& __a = allocator_type())
+	: _M_ht(__n, __hf, __eql, __a)
+        { _M_ht.insert_equal(__f, __l); }
+
+      size_type
+      size() const
+      { return _M_ht.size(); }
+
+      size_type
+      max_size() const
+      { return _M_ht.max_size(); }
+
+      bool
+      empty() const
+      { return _M_ht.empty(); }
+
+      void
+      swap(hash_multiset& hs)
+      { _M_ht.swap(hs._M_ht); }
+
+      template<class _Val, class _HF, class _EqK, class _Al>
+        friend bool
+        operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&,
+		   const hash_multiset<_Val, _HF, _EqK, _Al>&);
+
+      iterator
+      begin() const
+      { return _M_ht.begin(); }
+      
+      iterator
+      end() const
+      { return _M_ht.end(); }
+
+      iterator
+      insert(const value_type& __obj)
+      { return _M_ht.insert_equal(__obj); }
+  
+      template<class _InputIterator>
+        void
+        insert(_InputIterator __f, _InputIterator __l)
+        { _M_ht.insert_equal(__f,__l); }
+  
+      iterator
+      insert_noresize(const value_type& __obj)
+      { return _M_ht.insert_equal_noresize(__obj); }
+
+      iterator
+      find(const key_type& __key) const
+      { return _M_ht.find(__key); }
+
+      size_type
+      count(const key_type& __key) const
+      { return _M_ht.count(__key); }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __key) const
+      { return _M_ht.equal_range(__key); }
+
+      size_type
+      erase(const key_type& __key)
+      { return _M_ht.erase(__key); }
+  
+      void
+      erase(iterator __it)
+      { _M_ht.erase(__it); }
+  
+      void
+      erase(iterator __f, iterator __l)
+      { _M_ht.erase(__f, __l); }
+  
+      void
+      clear()
+      { _M_ht.clear(); }
+
+      void
+      resize(size_type __hint)
+      { _M_ht.resize(__hint); }
+  
+      size_type
+      bucket_count() const
+      { return _M_ht.bucket_count(); }
+
+      size_type
+      max_bucket_count() const
+      { return _M_ht.max_bucket_count(); }
+
+      size_type
+      elems_in_bucket(size_type __n) const
+      { return _M_ht.elems_in_bucket(__n); }
+    };
+
+  template<class _Val, class _HashFcn, class _EqualKey, class _Alloc>
+    inline bool
+    operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	       const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { return __hs1._M_ht == __hs2._M_ht; }
+
+  template<class _Val, class _HashFcn, class _EqualKey, class _Alloc>
+    inline bool
+    operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	       const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { return !(__hs1 == __hs2); }
+
+  template<class _Val, class _HashFcn, class _EqualKey, class _Alloc>
+    inline void
+    swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+	 hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+    { __hs1.swap(__hs2); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specialization of insert_iterator so that it will work for hash_set
+  // and hash_multiset.
+  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+    class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn,
+					      _EqualKey, _Alloc> >
+    {
+    protected:
+      typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc>
+        _Container;
+      _Container* container;
+
+    public:
+      typedef _Container          container_type;
+      typedef output_iterator_tag iterator_category;
+      typedef void                value_type;
+      typedef void                difference_type;
+      typedef void                pointer;
+      typedef void                reference;
+
+      insert_iterator(_Container& __x)
+      : container(&__x) {}
+      
+      insert_iterator(_Container& __x, typename _Container::iterator)
+      : container(&__x) {}
+
+      insert_iterator<_Container>&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->insert(__value);
+	return *this;
+      }
+
+      insert_iterator<_Container>&
+      operator*()
+      { return *this; }
+      
+      insert_iterator<_Container>&
+      operator++()
+      { return *this; }
+      
+      insert_iterator<_Container>&
+      operator++(int)
+      { return *this; }
+    };
+
+  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+    class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn,
+						   _EqualKey, _Alloc> >
+    {
+    protected:
+      typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>
+        _Container;
+      _Container* container;
+      typename _Container::iterator iter;
+
+    public:
+      typedef _Container          container_type;
+      typedef output_iterator_tag iterator_category;
+      typedef void                value_type;
+      typedef void                difference_type;
+      typedef void                pointer;
+      typedef void                reference;
+      
+      insert_iterator(_Container& __x)
+      : container(&__x) {}
+      
+      insert_iterator(_Container& __x, typename _Container::iterator)
+      : container(&__x) {}
+
+      insert_iterator<_Container>&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->insert(__value);
+	return *this;
+      }
+
+      insert_iterator<_Container>&
+      operator*()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++(int) { return *this; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hashtable.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hashtable.h
new file mode 100644
index 000000000..0bcaec4fd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/hashtable.h
@@ -0,0 +1,1149 @@
+// Hashtable implementation used by containers -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file backward/hashtable.h
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _BACKWARD_HASHTABLE_H
+#define _BACKWARD_HASHTABLE_H 1
+
+// Hashtable class, used to implement the hashed associative containers
+// hash_set, hash_map, hash_multiset, and hash_multimap.
+
+#include <vector>
+#include <iterator>
+#include <algorithm>
+#include <bits/stl_function.h>
+#include <backward/hash_fun.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+  using std::forward_iterator_tag;
+  using std::input_iterator_tag;
+  using std::_Construct;
+  using std::_Destroy;
+  using std::distance;
+  using std::vector;
+  using std::pair;
+  using std::__iterator_category;
+
+  template<class _Val>
+    struct _Hashtable_node
+    {
+      _Hashtable_node* _M_next;
+      _Val _M_val;
+    };
+
+  template<class _Val, class _Key, class _HashFcn, class _ExtractKey, 
+	   class _EqualKey, class _Alloc = std::allocator<_Val> >
+    class hashtable;
+
+  template<class _Val, class _Key, class _HashFcn,
+	   class _ExtractKey, class _EqualKey, class _Alloc>
+    struct _Hashtable_iterator;
+
+  template<class _Val, class _Key, class _HashFcn,
+	   class _ExtractKey, class _EqualKey, class _Alloc>
+    struct _Hashtable_const_iterator;
+
+  template<class _Val, class _Key, class _HashFcn,
+	   class _ExtractKey, class _EqualKey, class _Alloc>
+    struct _Hashtable_iterator
+    {
+      typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>
+        _Hashtable;
+      typedef _Hashtable_iterator<_Val, _Key, _HashFcn,
+				  _ExtractKey, _EqualKey, _Alloc>
+        iterator;
+      typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
+					_ExtractKey, _EqualKey, _Alloc>
+        const_iterator;
+      typedef _Hashtable_node<_Val> _Node;
+      typedef forward_iterator_tag iterator_category;
+      typedef _Val value_type;
+      typedef ptrdiff_t difference_type;
+      typedef size_t size_type;
+      typedef _Val& reference;
+      typedef _Val* pointer;
+      
+      _Node* _M_cur;
+      _Hashtable* _M_ht;
+
+      _Hashtable_iterator(_Node* __n, _Hashtable* __tab)
+      : _M_cur(__n), _M_ht(__tab) { }
+
+      _Hashtable_iterator() { }
+
+      reference
+      operator*() const
+      { return _M_cur->_M_val; }
+
+      pointer
+      operator->() const
+      { return &(operator*()); }
+
+      iterator&
+      operator++();
+
+      iterator
+      operator++(int);
+
+      bool
+      operator==(const iterator& __it) const
+      { return _M_cur == __it._M_cur; }
+
+      bool
+      operator!=(const iterator& __it) const
+      { return _M_cur != __it._M_cur; }
+    };
+
+  template<class _Val, class _Key, class _HashFcn,
+	   class _ExtractKey, class _EqualKey, class _Alloc>
+    struct _Hashtable_const_iterator
+    {
+      typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>
+        _Hashtable;
+      typedef _Hashtable_iterator<_Val,_Key,_HashFcn,
+				  _ExtractKey,_EqualKey,_Alloc>
+        iterator;
+      typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
+					_ExtractKey, _EqualKey, _Alloc>
+        const_iterator;
+      typedef _Hashtable_node<_Val> _Node;
+
+      typedef forward_iterator_tag iterator_category;
+      typedef _Val value_type;
+      typedef ptrdiff_t difference_type;
+      typedef size_t size_type;
+      typedef const _Val& reference;
+      typedef const _Val* pointer;
+      
+      const _Node* _M_cur;
+      const _Hashtable* _M_ht;
+
+      _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab)
+      : _M_cur(__n), _M_ht(__tab) { }
+
+      _Hashtable_const_iterator() { }
+
+      _Hashtable_const_iterator(const iterator& __it)
+      : _M_cur(__it._M_cur), _M_ht(__it._M_ht) { }
+
+      reference
+      operator*() const
+      { return _M_cur->_M_val; }
+
+      pointer
+      operator->() const
+      { return &(operator*()); }
+
+      const_iterator&
+      operator++();
+
+      const_iterator
+      operator++(int);
+
+      bool
+      operator==(const const_iterator& __it) const
+      { return _M_cur == __it._M_cur; }
+
+      bool
+      operator!=(const const_iterator& __it) const
+      { return _M_cur != __it._M_cur; }
+    };
+
+  // Note: assumes long is at least 32 bits.
+  enum { _S_num_primes = 29 };
+
+  static const unsigned long __stl_prime_list[_S_num_primes] =
+    {
+      5ul,          53ul,         97ul,         193ul,       389ul,
+      769ul,        1543ul,       3079ul,       6151ul,      12289ul,
+      24593ul,      49157ul,      98317ul,      196613ul,    393241ul,
+      786433ul,     1572869ul,    3145739ul,    6291469ul,   12582917ul,
+      25165843ul,   50331653ul,   100663319ul,  201326611ul, 402653189ul,
+      805306457ul,  1610612741ul, 3221225473ul, 4294967291ul
+    };
+
+  inline unsigned long
+  __stl_next_prime(unsigned long __n)
+  {
+    const unsigned long* __first = __stl_prime_list;
+    const unsigned long* __last = __stl_prime_list + (int)_S_num_primes;
+    const unsigned long* pos = std::lower_bound(__first, __last, __n);
+    return pos == __last ? *(__last - 1) : *pos;
+  }
+
+  // Forward declaration of operator==.  
+  template<class _Val, class _Key, class _HF, class _Ex,
+	   class _Eq, class _All>
+    class hashtable;
+
+  template<class _Val, class _Key, class _HF, class _Ex,
+	   class _Eq, class _All>
+    bool
+    operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+	       const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2);
+
+  // Hashtables handle allocators a bit differently than other
+  // containers do.  If we're using standard-conforming allocators, then
+  // a hashtable unconditionally has a member variable to hold its
+  // allocator, even if it so happens that all instances of the
+  // allocator type are identical.  This is because, for hashtables,
+  // this extra storage is negligible.  Additionally, a base class
+  // wouldn't serve any other purposes; it wouldn't, for example,
+  // simplify the exception-handling code.  
+  template<class _Val, class _Key, class _HashFcn,
+	   class _ExtractKey, class _EqualKey, class _Alloc>
+    class hashtable
+    {
+    public:
+      typedef _Key key_type;
+      typedef _Val value_type;
+      typedef _HashFcn hasher;
+      typedef _EqualKey key_equal;
+
+      typedef size_t            size_type;
+      typedef ptrdiff_t         difference_type;
+      typedef value_type*       pointer;
+      typedef const value_type* const_pointer;
+      typedef value_type&       reference;
+      typedef const value_type& const_reference;
+
+      hasher
+      hash_funct() const
+      { return _M_hash; }
+
+      key_equal
+      key_eq() const
+      { return _M_equals; }
+
+    private:
+      typedef _Hashtable_node<_Val> _Node;
+
+    public:
+      typedef typename _Alloc::template rebind<value_type>::other allocator_type;
+      allocator_type
+      get_allocator() const
+      { return _M_node_allocator; }
+
+    private:
+      typedef typename _Alloc::template rebind<_Node>::other _Node_Alloc;
+      typedef typename _Alloc::template rebind<_Node*>::other _Nodeptr_Alloc;
+      typedef vector<_Node*, _Nodeptr_Alloc> _Vector_type;
+
+      _Node_Alloc _M_node_allocator;
+
+      _Node*
+      _M_get_node()
+      { return _M_node_allocator.allocate(1); }
+
+      void
+      _M_put_node(_Node* __p)
+      { _M_node_allocator.deallocate(__p, 1); }
+
+    private:
+      hasher                _M_hash;
+      key_equal             _M_equals;
+      _ExtractKey           _M_get_key;
+      _Vector_type          _M_buckets;
+      size_type             _M_num_elements;
+      
+    public:
+      typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+				  _EqualKey, _Alloc>
+        iterator;
+      typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+					_EqualKey, _Alloc>
+        const_iterator;
+
+      friend struct
+      _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>;
+
+      friend struct
+      _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+				_EqualKey, _Alloc>;
+
+    public:
+      hashtable(size_type __n, const _HashFcn& __hf,
+		const _EqualKey& __eql, const _ExtractKey& __ext,
+		const allocator_type& __a = allocator_type())
+      : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql),
+	_M_get_key(__ext), _M_buckets(__a), _M_num_elements(0)
+      { _M_initialize_buckets(__n); }
+
+      hashtable(size_type __n, const _HashFcn& __hf,
+		const _EqualKey& __eql,
+		const allocator_type& __a = allocator_type())
+      : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql),
+	_M_get_key(_ExtractKey()), _M_buckets(__a), _M_num_elements(0)
+      { _M_initialize_buckets(__n); }
+
+      hashtable(const hashtable& __ht)
+      : _M_node_allocator(__ht.get_allocator()), _M_hash(__ht._M_hash),
+      _M_equals(__ht._M_equals), _M_get_key(__ht._M_get_key),
+      _M_buckets(__ht.get_allocator()), _M_num_elements(0)
+      { _M_copy_from(__ht); }
+
+      hashtable&
+      operator= (const hashtable& __ht)
+      {
+	if (&__ht != this)
+	  {
+	    clear();
+	    _M_hash = __ht._M_hash;
+	    _M_equals = __ht._M_equals;
+	    _M_get_key = __ht._M_get_key;
+	    _M_copy_from(__ht);
+	  }
+	return *this;
+      }
+
+      ~hashtable()
+      { clear(); }
+
+      size_type
+      size() const
+      { return _M_num_elements; }
+
+      size_type
+      max_size() const
+      { return size_type(-1); }
+
+      bool
+      empty() const
+      { return size() == 0; }
+
+      void
+      swap(hashtable& __ht)
+      {
+	std::swap(_M_hash, __ht._M_hash);
+	std::swap(_M_equals, __ht._M_equals);
+	std::swap(_M_get_key, __ht._M_get_key);
+	_M_buckets.swap(__ht._M_buckets);
+	std::swap(_M_num_elements, __ht._M_num_elements);
+      }
+
+      iterator
+      begin()
+      {
+	for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
+	  if (_M_buckets[__n])
+	    return iterator(_M_buckets[__n], this);
+	return end();
+      }
+
+      iterator
+      end()
+      { return iterator(0, this); }
+
+      const_iterator
+      begin() const
+      {
+	for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
+	  if (_M_buckets[__n])
+	    return const_iterator(_M_buckets[__n], this);
+	return end();
+      }
+
+      const_iterator
+      end() const
+      { return const_iterator(0, this); }
+
+      template<class _Vl, class _Ky, class _HF, class _Ex, class _Eq,
+		class _Al>
+        friend bool
+        operator==(const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&,
+		   const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&);
+
+    public:
+      size_type
+      bucket_count() const
+      { return _M_buckets.size(); }
+
+      size_type
+      max_bucket_count() const
+      { return __stl_prime_list[(int)_S_num_primes - 1]; }
+
+      size_type
+      elems_in_bucket(size_type __bucket) const
+      {
+	size_type __result = 0;
+	for (_Node* __n = _M_buckets[__bucket]; __n; __n = __n->_M_next)
+	  __result += 1;
+	return __result;
+      }
+
+      pair<iterator, bool>
+      insert_unique(const value_type& __obj)
+      {
+	resize(_M_num_elements + 1);
+	return insert_unique_noresize(__obj);
+      }
+
+      iterator
+      insert_equal(const value_type& __obj)
+      {
+	resize(_M_num_elements + 1);
+	return insert_equal_noresize(__obj);
+      }
+
+      pair<iterator, bool>
+      insert_unique_noresize(const value_type& __obj);
+
+      iterator
+      insert_equal_noresize(const value_type& __obj);
+
+      template<class _InputIterator>
+        void
+        insert_unique(_InputIterator __f, _InputIterator __l)
+        { insert_unique(__f, __l, __iterator_category(__f)); }
+
+      template<class _InputIterator>
+        void
+        insert_equal(_InputIterator __f, _InputIterator __l)
+        { insert_equal(__f, __l, __iterator_category(__f)); }
+
+      template<class _InputIterator>
+        void
+        insert_unique(_InputIterator __f, _InputIterator __l,
+		      input_iterator_tag)
+        {
+	  for ( ; __f != __l; ++__f)
+	    insert_unique(*__f);
+	}
+
+      template<class _InputIterator>
+        void
+        insert_equal(_InputIterator __f, _InputIterator __l,
+		     input_iterator_tag)
+        {
+	  for ( ; __f != __l; ++__f)
+	    insert_equal(*__f);
+	}
+
+      template<class _ForwardIterator>
+        void
+        insert_unique(_ForwardIterator __f, _ForwardIterator __l,
+		      forward_iterator_tag)
+        {
+	  size_type __n = distance(__f, __l);
+	  resize(_M_num_elements + __n);
+	  for ( ; __n > 0; --__n, ++__f)
+	    insert_unique_noresize(*__f);
+	}
+
+      template<class _ForwardIterator>
+        void
+        insert_equal(_ForwardIterator __f, _ForwardIterator __l,
+		     forward_iterator_tag)
+        {
+	  size_type __n = distance(__f, __l);
+	  resize(_M_num_elements + __n);
+	  for ( ; __n > 0; --__n, ++__f)
+	    insert_equal_noresize(*__f);
+	}
+
+      reference
+      find_or_insert(const value_type& __obj);
+
+      iterator
+      find(const key_type& __key)
+      {
+	size_type __n = _M_bkt_num_key(__key);
+	_Node* __first;
+	for (__first = _M_buckets[__n];
+	     __first && !_M_equals(_M_get_key(__first->_M_val), __key);
+	     __first = __first->_M_next)
+	  { }
+	return iterator(__first, this);
+      }
+
+      const_iterator
+      find(const key_type& __key) const
+      {
+	size_type __n = _M_bkt_num_key(__key);
+	const _Node* __first;
+	for (__first = _M_buckets[__n];
+	     __first && !_M_equals(_M_get_key(__first->_M_val), __key);
+	     __first = __first->_M_next)
+	  { }
+	return const_iterator(__first, this);
+      }
+
+      size_type
+      count(const key_type& __key) const
+      {
+	const size_type __n = _M_bkt_num_key(__key);
+	size_type __result = 0;
+	
+	for (const _Node* __cur = _M_buckets[__n]; __cur;
+	     __cur = __cur->_M_next)
+	  if (_M_equals(_M_get_key(__cur->_M_val), __key))
+	    ++__result;
+	return __result;
+      }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __key);
+
+      pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const;
+
+      size_type
+      erase(const key_type& __key);
+      
+      void
+      erase(const iterator& __it);
+
+      void
+      erase(iterator __first, iterator __last);
+
+      void
+      erase(const const_iterator& __it);
+
+      void
+      erase(const_iterator __first, const_iterator __last);
+
+      void
+      resize(size_type __num_elements_hint);
+
+      void
+      clear();
+
+    private:
+      size_type
+      _M_next_size(size_type __n) const
+      { return __stl_next_prime(__n); }
+
+      void
+      _M_initialize_buckets(size_type __n)
+      {
+	const size_type __n_buckets = _M_next_size(__n);
+	_M_buckets.reserve(__n_buckets);
+	_M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0);
+	_M_num_elements = 0;
+      }
+
+      size_type
+      _M_bkt_num_key(const key_type& __key) const
+      { return _M_bkt_num_key(__key, _M_buckets.size()); }
+
+      size_type
+      _M_bkt_num(const value_type& __obj) const
+      { return _M_bkt_num_key(_M_get_key(__obj)); }
+
+      size_type
+      _M_bkt_num_key(const key_type& __key, size_t __n) const
+      { return _M_hash(__key) % __n; }
+
+      size_type
+      _M_bkt_num(const value_type& __obj, size_t __n) const
+      { return _M_bkt_num_key(_M_get_key(__obj), __n); }
+
+      _Node*
+      _M_new_node(const value_type& __obj)
+      {
+	_Node* __n = _M_get_node();
+	__n->_M_next = 0;
+	__try
+	  {
+	    this->get_allocator().construct(&__n->_M_val, __obj);
+	    return __n;
+	  }
+	__catch(...)
+	  {
+	    _M_put_node(__n);
+	    __throw_exception_again;
+	  }
+      }
+
+      void
+      _M_delete_node(_Node* __n)
+      {
+	this->get_allocator().destroy(&__n->_M_val);
+	_M_put_node(__n);
+      }
+      
+      void
+      _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last);
+
+      void
+      _M_erase_bucket(const size_type __n, _Node* __last);
+
+      void
+      _M_copy_from(const hashtable& __ht);
+    };
+
+  template<class _Val, class _Key, class _HF, class _ExK, class _EqK,
+	    class _All>
+    _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>&
+    _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::
+    operator++()
+    {
+      const _Node* __old = _M_cur;
+      _M_cur = _M_cur->_M_next;
+      if (!_M_cur)
+	{
+	  size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
+	  while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
+	    _M_cur = _M_ht->_M_buckets[__bucket];
+	}
+      return *this;
+    }
+
+  template<class _Val, class _Key, class _HF, class _ExK, class _EqK,
+	    class _All>
+    inline _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>
+    _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::
+    operator++(int)
+    {
+      iterator __tmp = *this;
+      ++*this;
+      return __tmp;
+    }
+
+  template<class _Val, class _Key, class _HF, class _ExK, class _EqK,
+	    class _All>
+    _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>&
+    _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::
+    operator++()
+    {
+      const _Node* __old = _M_cur;
+      _M_cur = _M_cur->_M_next;
+      if (!_M_cur)
+	{
+	  size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
+	  while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
+	    _M_cur = _M_ht->_M_buckets[__bucket];
+	}
+      return *this;
+    }
+
+  template<class _Val, class _Key, class _HF, class _ExK, class _EqK,
+	    class _All>
+    inline _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>
+    _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::
+    operator++(int)
+    {
+      const_iterator __tmp = *this;
+      ++*this;
+      return __tmp;
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    bool
+    operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+	       const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2)
+    {
+      typedef typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_Node _Node;
+
+      if (__ht1._M_buckets.size() != __ht2._M_buckets.size())
+	return false;
+
+      for (size_t __n = 0; __n < __ht1._M_buckets.size(); ++__n)
+	{
+	  _Node* __cur1 = __ht1._M_buckets[__n];
+	  _Node* __cur2 = __ht2._M_buckets[__n];
+	  // Check same length of lists
+	  for (; __cur1 && __cur2;
+	       __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
+	    { } 
+	  if (__cur1 || __cur2)
+	    return false;
+	  // Now check one's elements are in the other
+	  for (__cur1 = __ht1._M_buckets[__n] ; __cur1;
+	       __cur1 = __cur1->_M_next)
+	    {
+	      bool _found__cur1 = false;
+	      for (__cur2 = __ht2._M_buckets[__n];
+		   __cur2; __cur2 = __cur2->_M_next)
+		{
+		  if (__cur1->_M_val == __cur2->_M_val)
+		    {
+		      _found__cur1 = true;
+		      break;
+		    }
+		}
+	      if (!_found__cur1)
+		return false;
+	    }
+	}
+      return true;
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    inline bool
+    operator!=(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+	       const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2)
+    { return !(__ht1 == __ht2); }
+
+  template<class _Val, class _Key, class _HF, class _Extract, class _EqKey,
+	    class _All>
+    inline void
+    swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1,
+	 hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2)
+    { __ht1.swap(__ht2); }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator, bool>
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    insert_unique_noresize(const value_type& __obj)
+    {
+      const size_type __n = _M_bkt_num(__obj);
+      _Node* __first = _M_buckets[__n];
+      
+      for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
+	if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
+	  return pair<iterator, bool>(iterator(__cur, this), false);
+      
+      _Node* __tmp = _M_new_node(__obj);
+      __tmp->_M_next = __first;
+      _M_buckets[__n] = __tmp;
+      ++_M_num_elements;
+      return pair<iterator, bool>(iterator(__tmp, this), true);
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    insert_equal_noresize(const value_type& __obj)
+    {
+      const size_type __n = _M_bkt_num(__obj);
+      _Node* __first = _M_buckets[__n];
+      
+      for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
+	if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
+	  {
+	    _Node* __tmp = _M_new_node(__obj);
+	    __tmp->_M_next = __cur->_M_next;
+	    __cur->_M_next = __tmp;
+	    ++_M_num_elements;
+	    return iterator(__tmp, this);
+	  }
+
+      _Node* __tmp = _M_new_node(__obj);
+      __tmp->_M_next = __first;
+      _M_buckets[__n] = __tmp;
+      ++_M_num_elements;
+      return iterator(__tmp, this);
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::reference
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    find_or_insert(const value_type& __obj)
+    {
+      resize(_M_num_elements + 1);
+
+      size_type __n = _M_bkt_num(__obj);
+      _Node* __first = _M_buckets[__n];
+      
+      for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
+	if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
+	  return __cur->_M_val;
+      
+      _Node* __tmp = _M_new_node(__obj);
+      __tmp->_M_next = __first;
+      _M_buckets[__n] = __tmp;
+      ++_M_num_elements;
+      return __tmp->_M_val;
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator,
+	 typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator>
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    equal_range(const key_type& __key)
+    {
+      typedef pair<iterator, iterator> _Pii;
+      const size_type __n = _M_bkt_num_key(__key);
+
+      for (_Node* __first = _M_buckets[__n]; __first;
+	   __first = __first->_M_next)
+	if (_M_equals(_M_get_key(__first->_M_val), __key))
+	  {
+	    for (_Node* __cur = __first->_M_next; __cur;
+		 __cur = __cur->_M_next)
+	      if (!_M_equals(_M_get_key(__cur->_M_val), __key))
+		return _Pii(iterator(__first, this), iterator(__cur, this));
+	    for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
+	      if (_M_buckets[__m])
+		return _Pii(iterator(__first, this),
+			    iterator(_M_buckets[__m], this));
+	    return _Pii(iterator(__first, this), end());
+	  }
+      return _Pii(end(), end());
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator,
+	 typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator>
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    equal_range(const key_type& __key) const
+    {
+      typedef pair<const_iterator, const_iterator> _Pii;
+      const size_type __n = _M_bkt_num_key(__key);
+
+      for (const _Node* __first = _M_buckets[__n]; __first;
+	   __first = __first->_M_next)
+	{
+	  if (_M_equals(_M_get_key(__first->_M_val), __key))
+	    {
+	      for (const _Node* __cur = __first->_M_next; __cur;
+		   __cur = __cur->_M_next)
+		if (!_M_equals(_M_get_key(__cur->_M_val), __key))
+		  return _Pii(const_iterator(__first, this),
+			      const_iterator(__cur, this));
+	      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
+		if (_M_buckets[__m])
+		  return _Pii(const_iterator(__first, this),
+			      const_iterator(_M_buckets[__m], this));
+	      return _Pii(const_iterator(__first, this), end());
+	    }
+	}
+      return _Pii(end(), end());
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::size_type
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    erase(const key_type& __key)
+    {
+      const size_type __n = _M_bkt_num_key(__key);
+      _Node* __first = _M_buckets[__n];
+      _Node* __saved_slot = 0;
+      size_type __erased = 0;
+
+      if (__first)
+	{
+	  _Node* __cur = __first;
+	  _Node* __next = __cur->_M_next;
+	  while (__next)
+	    {
+	      if (_M_equals(_M_get_key(__next->_M_val), __key))
+		{
+		  if (&_M_get_key(__next->_M_val) != &__key)
+		    {
+		      __cur->_M_next = __next->_M_next;
+		      _M_delete_node(__next);
+		      __next = __cur->_M_next;
+		      ++__erased;
+		      --_M_num_elements;
+		    }
+		  else
+		    {
+		      __saved_slot = __cur;
+		      __cur = __next;
+		      __next = __cur->_M_next;
+		    }
+		}
+	      else
+		{
+		  __cur = __next;
+		  __next = __cur->_M_next;
+		}
+	    }
+	  if (_M_equals(_M_get_key(__first->_M_val), __key))
+	    {
+	      _M_buckets[__n] = __first->_M_next;
+	      _M_delete_node(__first);
+	      ++__erased;
+	      --_M_num_elements;
+	    }
+	  if (__saved_slot)
+	    {
+	      __next = __saved_slot->_M_next;
+	      __saved_slot->_M_next = __next->_M_next;
+	      _M_delete_node(__next);
+	      ++__erased;
+	      --_M_num_elements;
+	    }
+	}
+      return __erased;
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    erase(const iterator& __it)
+    {
+      _Node* __p = __it._M_cur;
+      if (__p)
+	{
+	  const size_type __n = _M_bkt_num(__p->_M_val);
+	  _Node* __cur = _M_buckets[__n];
+	  
+	  if (__cur == __p)
+	    {
+	      _M_buckets[__n] = __cur->_M_next;
+	      _M_delete_node(__cur);
+	      --_M_num_elements;
+	    }
+	  else
+	    {
+	      _Node* __next = __cur->_M_next;
+	      while (__next)
+		{
+		  if (__next == __p)
+		    {
+		      __cur->_M_next = __next->_M_next;
+		      _M_delete_node(__next);
+		      --_M_num_elements;
+		      break;
+		    }
+		  else
+		    {
+		      __cur = __next;
+		      __next = __cur->_M_next;
+		    }
+		}
+	    }
+	}
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    erase(iterator __first, iterator __last)
+    {
+      size_type __f_bucket = __first._M_cur ? _M_bkt_num(__first._M_cur->_M_val)
+	                                    : _M_buckets.size();
+
+      size_type __l_bucket = __last._M_cur ? _M_bkt_num(__last._M_cur->_M_val)
+	                                   : _M_buckets.size();
+
+      if (__first._M_cur == __last._M_cur)
+	return;
+      else if (__f_bucket == __l_bucket)
+	_M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur);
+      else
+	{
+	  _M_erase_bucket(__f_bucket, __first._M_cur, 0);
+	  for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n)
+	    _M_erase_bucket(__n, 0);
+	  if (__l_bucket != _M_buckets.size())
+	    _M_erase_bucket(__l_bucket, __last._M_cur);
+	}
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    inline void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    erase(const_iterator __first, const_iterator __last)
+    {
+      erase(iterator(const_cast<_Node*>(__first._M_cur),
+		     const_cast<hashtable*>(__first._M_ht)),
+	    iterator(const_cast<_Node*>(__last._M_cur),
+		     const_cast<hashtable*>(__last._M_ht)));
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    inline void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    erase(const const_iterator& __it)
+    { erase(iterator(const_cast<_Node*>(__it._M_cur),
+		     const_cast<hashtable*>(__it._M_ht))); }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    resize(size_type __num_elements_hint)
+    {
+      const size_type __old_n = _M_buckets.size();
+      if (__num_elements_hint > __old_n)
+	{
+	  const size_type __n = _M_next_size(__num_elements_hint);
+	  if (__n > __old_n)
+	    {
+	      _Vector_type __tmp(__n, (_Node*)(0), _M_buckets.get_allocator());
+	      __try
+		{
+		  for (size_type __bucket = 0; __bucket < __old_n; ++__bucket)
+		    {
+		      _Node* __first = _M_buckets[__bucket];
+		      while (__first)
+			{
+			  size_type __new_bucket = _M_bkt_num(__first->_M_val,
+							      __n);
+			  _M_buckets[__bucket] = __first->_M_next;
+			  __first->_M_next = __tmp[__new_bucket];
+			  __tmp[__new_bucket] = __first;
+			  __first = _M_buckets[__bucket];
+			}
+		    }
+		  _M_buckets.swap(__tmp);
+		}
+	      __catch(...)
+		{
+		  for (size_type __bucket = 0; __bucket < __tmp.size();
+		       ++__bucket)
+		    {
+		      while (__tmp[__bucket])
+			{
+			  _Node* __next = __tmp[__bucket]->_M_next;
+			  _M_delete_node(__tmp[__bucket]);
+			  __tmp[__bucket] = __next;
+			}
+		    }
+		  __throw_exception_again;
+		}
+	    }
+	}
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
+    {
+      _Node* __cur = _M_buckets[__n];
+      if (__cur == __first)
+	_M_erase_bucket(__n, __last);
+      else
+	{
+	  _Node* __next;
+	  for (__next = __cur->_M_next;
+	       __next != __first;
+	       __cur = __next, __next = __cur->_M_next)
+	    ;
+	  while (__next != __last)
+	    {
+	      __cur->_M_next = __next->_M_next;
+	      _M_delete_node(__next);
+	      __next = __cur->_M_next;
+	      --_M_num_elements;
+	    }
+	}
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    _M_erase_bucket(const size_type __n, _Node* __last)
+    {
+      _Node* __cur = _M_buckets[__n];
+      while (__cur != __last)
+	{
+	  _Node* __next = __cur->_M_next;
+	  _M_delete_node(__cur);
+	  __cur = __next;
+	  _M_buckets[__n] = __cur;
+	  --_M_num_elements;
+	}
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    clear()
+    {
+      if (_M_num_elements == 0)
+	return;
+
+      for (size_type __i = 0; __i < _M_buckets.size(); ++__i)
+	{
+	  _Node* __cur = _M_buckets[__i];
+	  while (__cur != 0)
+	    {
+	      _Node* __next = __cur->_M_next;
+	      _M_delete_node(__cur);
+	      __cur = __next;
+	    }
+	  _M_buckets[__i] = 0;
+	}
+      _M_num_elements = 0;
+    }
+
+  template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
+    void
+    hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::
+    _M_copy_from(const hashtable& __ht)
+    {
+      _M_buckets.clear();
+      _M_buckets.reserve(__ht._M_buckets.size());
+      _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0);
+      __try
+	{
+	  for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
+	    const _Node* __cur = __ht._M_buckets[__i];
+	    if (__cur)
+	      {
+		_Node* __local_copy = _M_new_node(__cur->_M_val);
+		_M_buckets[__i] = __local_copy;
+		
+		for (_Node* __next = __cur->_M_next;
+		     __next;
+		     __cur = __next, __next = __cur->_M_next)
+		  {
+		    __local_copy->_M_next = _M_new_node(__next->_M_val);
+		    __local_copy = __local_copy->_M_next;
+		  }
+	      }
+	  }
+	  _M_num_elements = __ht._M_num_elements;
+	}
+      __catch(...)
+	{
+	  clear();
+	  __throw_exception_again;
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/strstream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/strstream
new file mode 100644
index 000000000..7e18a359c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/backward/strstream
@@ -0,0 +1,185 @@
+// Backward-compat support -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+// WARNING: The classes defined in this header are DEPRECATED.  This
+// header is defined in section D.7.1 of the C++ standard, and it
+// MAY BE REMOVED in a future standard revision.  One should use the
+// header <sstream> instead.
+
+/** @file backward/strstream
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{sstream}
+ */
+
+#ifndef _BACKWARD_STRSTREAM
+#define _BACKWARD_STRSTREAM
+
+#include "backward_warning.h"
+#include <iosfwd>
+#include <ios>
+#include <istream>
+#include <ostream>
+#include <string>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Class strstreambuf, a streambuf class that manages an array of char.
+  // Note that this class is not a template.
+  class strstreambuf : public basic_streambuf<char, char_traits<char> >
+  {
+  public:
+    // Types.
+    typedef char_traits<char>              _Traits;
+    typedef basic_streambuf<char, _Traits> _Base;
+
+  public:
+    // Constructor, destructor
+    explicit strstreambuf(streamsize __initial_capacity = 0);
+    strstreambuf(void* (*__alloc)(size_t), void (*__free)(void*));
+
+    strstreambuf(char* __get, streamsize __n, char* __put = 0) throw ();
+    strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0) throw ();
+    strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0) throw ();
+
+    strstreambuf(const char* __get, streamsize __n) throw ();
+    strstreambuf(const signed char* __get, streamsize __n) throw ();
+    strstreambuf(const unsigned char* __get, streamsize __n) throw ();
+
+    virtual ~strstreambuf();
+
+  public:
+    void freeze(bool = true) throw ();
+    char* str() throw ();
+    _GLIBCXX_PURE int pcount() const throw ();
+
+  protected:
+    virtual int_type overflow(int_type __c  = _Traits::eof());
+    virtual int_type pbackfail(int_type __c = _Traits::eof());
+    virtual int_type underflow();
+    virtual _Base* setbuf(char* __buf, streamsize __n);
+    virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
+			     ios_base::openmode __mode
+			     = ios_base::in | ios_base::out);
+    virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode
+			     = ios_base::in | ios_base::out);
+
+  private:
+    strstreambuf&
+    operator=(const strstreambuf&);
+
+    strstreambuf(const strstreambuf&);
+
+    // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun.
+    char* _M_alloc(size_t);
+    void  _M_free(char*);
+
+    // Helper function used in constructors.
+    void _M_setup(char* __get, char* __put, streamsize __n) throw ();
+
+  private:
+    // Data members.
+    void* (*_M_alloc_fun)(size_t);
+    void  (*_M_free_fun)(void*);
+
+    bool _M_dynamic  : 1;
+    bool _M_frozen   : 1;
+    bool _M_constant : 1;
+  };
+
+  // Class istrstream, an istream that manages a strstreambuf.
+  class istrstream : public basic_istream<char>
+  {
+  public:
+    explicit istrstream(char*);
+    explicit istrstream(const char*);
+    istrstream(char* , streamsize);
+    istrstream(const char*, streamsize);
+    virtual ~istrstream();
+
+    _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+    char* str() throw ();
+
+  private:
+    strstreambuf _M_buf;
+  };
+
+  // Class ostrstream
+  class ostrstream : public basic_ostream<char>
+  {
+  public:
+    ostrstream();
+    ostrstream(char*, int, ios_base::openmode = ios_base::out);
+    virtual ~ostrstream();
+
+    _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+    void freeze(bool = true) throw();
+    char* str() throw ();
+    _GLIBCXX_PURE int pcount() const throw ();
+
+  private:
+    strstreambuf _M_buf;
+  };
+
+  // Class strstream
+  class strstream : public basic_iostream<char>
+  {
+  public:
+    typedef char                        char_type;
+    typedef char_traits<char>::int_type int_type;
+    typedef char_traits<char>::pos_type pos_type;
+    typedef char_traits<char>::off_type off_type;
+
+    strstream();
+    strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out);
+    virtual ~strstream();
+
+    _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+    void freeze(bool = true) throw ();
+    _GLIBCXX_PURE int pcount() const throw ();
+    char* str() throw ();
+
+  private:
+    strstreambuf _M_buf;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/algorithmfwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/algorithmfwd.h
new file mode 100644
index 000000000..8632bf5dd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/algorithmfwd.h
@@ -0,0 +1,815 @@
+// <algorithm> declarations  -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/algorithmfwd.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{algorithm}
+ */
+
+#ifndef _GLIBCXX_ALGORITHMFWD_H
+#define _GLIBCXX_ALGORITHMFWD_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_pair.h>
+#include <bits/stl_iterator_base_types.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /*
+    adjacent_find
+    all_of (C++0x)
+    any_of (C++0x)
+    binary_search
+    copy
+    copy_backward
+    copy_if (C++0x)
+    copy_n (C++0x)
+    count
+    count_if
+    equal
+    equal_range
+    fill
+    fill_n
+    find
+    find_end
+    find_first_of
+    find_if
+    find_if_not (C++0x)
+    for_each
+    generate
+    generate_n
+    includes
+    inplace_merge
+    is_heap (C++0x)
+    is_heap_until (C++0x)
+    is_partitioned (C++0x)
+    is_sorted (C++0x)
+    is_sorted_until (C++0x)
+    iter_swap
+    lexicographical_compare
+    lower_bound
+    make_heap
+    max
+    max_element
+    merge
+    min
+    min_element
+    minmax (C++0x)
+    minmax_element (C++0x)
+    mismatch
+    next_permutation
+    none_of (C++0x)
+    nth_element
+    partial_sort
+    partial_sort_copy
+    partition
+    partition_copy (C++0x)
+    partition_point (C++0x)
+    pop_heap
+    prev_permutation
+    push_heap
+    random_shuffle
+    remove
+    remove_copy
+    remove_copy_if
+    remove_if
+    replace
+    replace_copy
+    replace_copy_if
+    replace_if
+    reverse
+    reverse_copy
+    rotate
+    rotate_copy
+    search
+    search_n
+    set_difference
+    set_intersection
+    set_symmetric_difference
+    set_union
+    shuffle (C++0x)
+    sort
+    sort_heap
+    stable_partition
+    stable_sort
+    swap
+    swap_ranges
+    transform
+    unique
+    unique_copy
+    upper_bound
+  */
+
+  /**
+   * @defgroup algorithms Algorithms
+   *
+   * Components for performing algorithmic operations. Includes
+   * non-modifying sequence, modifying (mutating) sequence, sorting,
+   * searching, merge, partition, heap, set, minima, maxima, and
+   * permutation operations.
+   */
+
+  /**
+   * @defgroup mutating_algorithms Mutating
+   * @ingroup algorithms
+   */
+
+  /**
+   * @defgroup non_mutating_algorithms Non-Mutating
+   * @ingroup algorithms
+   */
+
+  /**
+   * @defgroup sorting_algorithms Sorting
+   * @ingroup algorithms
+   */
+
+  /**
+   * @defgroup set_algorithms Set Operation
+   * @ingroup sorting_algorithms
+   *
+   * These algorithms are common set operations performed on sequences
+   * that are already sorted. The number of comparisons will be
+   * linear.
+   */
+
+  /**
+   * @defgroup binary_search_algorithms Binary Search
+   * @ingroup sorting_algorithms
+   *
+   * These algorithms are variations of a classic binary search, and
+   * all assume that the sequence being searched is already sorted.
+   * 
+   * The number of comparisons will be logarithmic (and as few as
+   * possible).  The number of steps through the sequence will be
+   * logarithmic for random-access iterators (e.g., pointers), and
+   * linear otherwise.
+   * 
+   * The LWG has passed Defect Report 270, which notes: <em>The
+   * proposed resolution reinterprets binary search. Instead of
+   * thinking about searching for a value in a sorted range, we view
+   * that as an important special case of a more general algorithm:
+   * searching for the partition point in a partitioned range.  We
+   * also add a guarantee that the old wording did not: we ensure that
+   * the upper bound is no earlier than the lower bound, that the pair
+   * returned by equal_range is a valid range, and that the first part
+   * of that pair is the lower bound.</em>
+   *
+   * The actual effect of the first sentence is that a comparison
+   * functor passed by the user doesn't necessarily need to induce a
+   * strict weak ordering relation.  Rather, it partitions the range.
+   */
+
+  // adjacent_find
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _IIter, typename _Predicate>
+    bool
+    all_of(_IIter, _IIter, _Predicate);
+
+  template<typename _IIter, typename _Predicate>
+    bool
+    any_of(_IIter, _IIter, _Predicate);
+#endif
+
+  template<typename _FIter, typename _Tp>
+    bool 
+    binary_search(_FIter, _FIter, const _Tp&);
+
+  template<typename _FIter, typename _Tp, typename _Compare>
+    bool 
+    binary_search(_FIter, _FIter, const _Tp&, _Compare);
+
+  template<typename _IIter, typename _OIter>
+    _OIter 
+    copy(_IIter, _IIter, _OIter);
+
+  template<typename _BIter1, typename _BIter2>
+    _BIter2
+    copy_backward(_BIter1, _BIter1, _BIter2);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _IIter, typename _OIter, typename _Predicate>
+    _OIter
+    copy_if(_IIter, _IIter, _OIter, _Predicate);
+
+  template<typename _IIter, typename _Size, typename _OIter>
+    _OIter
+    copy_n(_IIter, _Size, _OIter);
+#endif
+
+  // count
+  // count_if
+
+  template<typename _FIter, typename _Tp>
+    pair<_FIter, _FIter>
+    equal_range(_FIter, _FIter, const _Tp&);
+
+  template<typename _FIter, typename _Tp, typename _Compare>
+    pair<_FIter, _FIter>
+    equal_range(_FIter, _FIter, const _Tp&, _Compare);
+
+  template<typename _FIter, typename _Tp>
+    void 
+    fill(_FIter, _FIter, const _Tp&);
+
+  template<typename _OIter, typename _Size, typename _Tp>
+    _OIter
+    fill_n(_OIter, _Size, const _Tp&);
+
+  // find
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter1
+    find_end(_FIter1, _FIter1, _FIter2, _FIter2);
+
+  template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
+    _FIter1
+    find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
+
+  // find_first_of
+  // find_if
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _IIter, typename _Predicate>
+    _IIter
+    find_if_not(_IIter, _IIter, _Predicate);
+#endif
+
+  // for_each
+  // generate
+  // generate_n
+
+  template<typename _IIter1, typename _IIter2>
+    bool 
+    includes(_IIter1, _IIter1, _IIter2, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _Compare>
+    bool 
+    includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
+
+  template<typename _BIter>
+    void 
+    inplace_merge(_BIter, _BIter, _BIter);
+
+  template<typename _BIter, typename _Compare>
+    void 
+    inplace_merge(_BIter, _BIter, _BIter, _Compare);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _RAIter>
+    bool 
+    is_heap(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    bool 
+    is_heap(_RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    _RAIter 
+    is_heap_until(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    _RAIter 
+    is_heap_until(_RAIter, _RAIter, _Compare);
+
+  template<typename _IIter, typename _Predicate>
+    bool
+    is_partitioned(_IIter, _IIter, _Predicate);
+
+  template<typename _FIter1, typename _FIter2>
+    bool
+    is_permutation(_FIter1, _FIter1, _FIter2);
+
+  template<typename _FIter1, typename _FIter2,
+	   typename _BinaryPredicate>
+    bool
+    is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate);
+
+  template<typename _FIter>
+    bool 
+    is_sorted(_FIter, _FIter);
+
+  template<typename _FIter, typename _Compare>
+    bool 
+    is_sorted(_FIter, _FIter, _Compare);
+
+  template<typename _FIter>
+    _FIter 
+    is_sorted_until(_FIter, _FIter);
+
+  template<typename _FIter, typename _Compare>
+    _FIter 
+    is_sorted_until(_FIter, _FIter, _Compare);
+#endif
+
+  template<typename _FIter1, typename _FIter2>
+    void 
+    iter_swap(_FIter1, _FIter2);
+
+  template<typename _FIter, typename _Tp>
+    _FIter 
+    lower_bound(_FIter, _FIter, const _Tp&);
+
+  template<typename _FIter, typename _Tp, typename _Compare>
+    _FIter 
+    lower_bound(_FIter, _FIter, const _Tp&, _Compare);
+
+  template<typename _RAIter>
+    void 
+    make_heap(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    make_heap(_RAIter, _RAIter, _Compare);
+
+  template<typename _Tp> 
+    const _Tp& 
+    max(const _Tp&, const _Tp&);
+
+  template<typename _Tp, typename _Compare>
+    const _Tp& 
+    max(const _Tp&, const _Tp&, _Compare);
+
+  // max_element
+  // merge
+
+  template<typename _Tp> 
+    const _Tp& 
+    min(const _Tp&, const _Tp&);
+
+  template<typename _Tp, typename _Compare>
+    const _Tp& 
+    min(const _Tp&, const _Tp&, _Compare);
+
+  // min_element
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    pair<const _Tp&, const _Tp&> 
+    minmax(const _Tp&, const _Tp&);
+
+  template<typename _Tp, typename _Compare>
+    pair<const _Tp&, const _Tp&>
+    minmax(const _Tp&, const _Tp&, _Compare);
+
+  template<typename _FIter>
+    pair<_FIter, _FIter>
+    minmax_element(_FIter, _FIter);
+
+  template<typename _FIter, typename _Compare>
+    pair<_FIter, _FIter>
+    minmax_element(_FIter, _FIter, _Compare);
+
+  template<typename _Tp>
+    _Tp
+    min(initializer_list<_Tp>);
+
+  template<typename _Tp, typename _Compare>
+    _Tp
+    min(initializer_list<_Tp>, _Compare);
+
+  template<typename _Tp>
+    _Tp
+    max(initializer_list<_Tp>);
+
+  template<typename _Tp, typename _Compare>
+    _Tp
+    max(initializer_list<_Tp>, _Compare);
+
+  template<typename _Tp>
+    pair<_Tp, _Tp>
+    minmax(initializer_list<_Tp>);
+
+  template<typename _Tp, typename _Compare>
+    pair<_Tp, _Tp>
+    minmax(initializer_list<_Tp>, _Compare);
+#endif
+
+  // mismatch
+
+  template<typename _BIter>
+    bool 
+    next_permutation(_BIter, _BIter);
+
+  template<typename _BIter, typename _Compare>
+    bool 
+    next_permutation(_BIter, _BIter, _Compare);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _IIter, typename _Predicate>
+    bool
+    none_of(_IIter, _IIter, _Predicate);
+#endif
+
+  // nth_element
+  // partial_sort
+
+  template<typename _IIter, typename _RAIter>
+    _RAIter
+    partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
+
+  template<typename _IIter, typename _RAIter, typename _Compare>
+    _RAIter
+    partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
+
+  // partition
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _IIter, typename _OIter1,
+	   typename _OIter2, typename _Predicate>
+    pair<_OIter1, _OIter2>
+    partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
+
+  template<typename _FIter, typename _Predicate>
+    _FIter
+    partition_point(_FIter, _FIter, _Predicate);
+#endif
+
+  template<typename _RAIter>
+    void 
+    pop_heap(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    pop_heap(_RAIter, _RAIter, _Compare);
+
+  template<typename _BIter>
+    bool 
+    prev_permutation(_BIter, _BIter);
+
+  template<typename _BIter, typename _Compare>
+    bool 
+    prev_permutation(_BIter, _BIter, _Compare);
+
+  template<typename _RAIter>
+    void 
+    push_heap(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    push_heap(_RAIter, _RAIter, _Compare);
+
+  // random_shuffle
+
+  template<typename _FIter, typename _Tp>
+    _FIter 
+    remove(_FIter, _FIter, const _Tp&);
+
+  template<typename _FIter, typename _Predicate>
+    _FIter 
+    remove_if(_FIter, _FIter, _Predicate);
+
+  template<typename _IIter, typename _OIter, typename _Tp>
+    _OIter 
+    remove_copy(_IIter, _IIter, _OIter, const _Tp&);
+
+  template<typename _IIter, typename _OIter, typename _Predicate>
+    _OIter 
+    remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
+
+  // replace
+
+  template<typename _IIter, typename _OIter, typename _Tp>
+    _OIter 
+    replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
+
+  template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
+    _OIter 
+    replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
+
+  // replace_if
+
+  template<typename _BIter>
+    void 
+    reverse(_BIter, _BIter);
+
+  template<typename _BIter, typename _OIter>
+    _OIter 
+    reverse_copy(_BIter, _BIter, _OIter);
+
+  template<typename _FIter>
+    void 
+    rotate(_FIter, _FIter, _FIter);
+
+  template<typename _FIter, typename _OIter>
+    _OIter 
+    rotate_copy(_FIter, _FIter, _FIter, _OIter);
+
+  // search
+  // search_n
+  // set_difference
+  // set_intersection
+  // set_symmetric_difference
+  // set_union
+
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+  template<typename _RAIter, typename _UGenerator>
+    void
+    shuffle(_RAIter, _RAIter, _UGenerator&&);
+#endif
+
+  template<typename _RAIter>
+    void 
+    sort_heap(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    sort_heap(_RAIter, _RAIter, _Compare);
+
+  template<typename _BIter, typename _Predicate>
+    _BIter 
+    stable_partition(_BIter, _BIter, _Predicate);
+
+  template<typename _Tp> 
+    void 
+    swap(_Tp&, _Tp&);
+
+  template<typename _Tp, size_t _Nm>
+    void
+    swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter2 
+    swap_ranges(_FIter1, _FIter1, _FIter2);
+
+  // transform
+
+  template<typename _FIter>
+    _FIter 
+    unique(_FIter, _FIter);
+
+  template<typename _FIter, typename _BinaryPredicate>
+    _FIter 
+    unique(_FIter, _FIter, _BinaryPredicate);
+
+  // unique_copy
+
+  template<typename _FIter, typename _Tp>
+    _FIter 
+    upper_bound(_FIter, _FIter, const _Tp&);
+
+  template<typename _FIter, typename _Tp, typename _Compare>
+    _FIter 
+    upper_bound(_FIter, _FIter, const _Tp&, _Compare);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+_GLIBCXX_BEGIN_NAMESPACE_ALGO
+
+  template<typename _FIter>
+    _FIter 
+    adjacent_find(_FIter, _FIter);
+
+  template<typename _FIter, typename _BinaryPredicate>
+    _FIter 
+    adjacent_find(_FIter, _FIter, _BinaryPredicate);
+
+  template<typename _IIter, typename _Tp>
+    typename iterator_traits<_IIter>::difference_type
+    count(_IIter, _IIter, const _Tp&);
+
+  template<typename _IIter, typename _Predicate>
+    typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter, _IIter, _Predicate);
+
+  template<typename _IIter1, typename _IIter2>
+    bool 
+    equal(_IIter1, _IIter1, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
+    bool 
+    equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
+
+  template<typename _IIter, typename _Tp>
+    _IIter 
+    find(_IIter, _IIter, const _Tp&);
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter1
+    find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
+
+  template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
+    _FIter1
+    find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
+
+  template<typename _IIter, typename _Predicate>
+    _IIter
+    find_if(_IIter, _IIter, _Predicate);
+
+  template<typename _IIter, typename _Funct>
+    _Funct 
+    for_each(_IIter, _IIter, _Funct);
+
+  template<typename _FIter, typename _Generator>
+    void 
+    generate(_FIter, _FIter, _Generator);
+
+  template<typename _OIter, typename _Size, typename _Generator>
+    _OIter
+    generate_n(_OIter, _Size, _Generator);
+
+  template<typename _IIter1, typename _IIter2>
+    bool 
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _Compare>
+    bool 
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
+
+  template<typename _FIter>
+    _FIter 
+    max_element(_FIter, _FIter);
+
+  template<typename _FIter, typename _Compare>
+    _FIter 
+    max_element(_FIter, _FIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter 
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter, 
+	   typename _Compare>
+    _OIter 
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
+
+  template<typename _FIter>
+    _FIter 
+    min_element(_FIter, _FIter);
+
+  template<typename _FIter, typename _Compare>
+    _FIter 
+    min_element(_FIter, _FIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
+
+  template<typename _RAIter>
+    void 
+    nth_element(_RAIter, _RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    nth_element(_RAIter, _RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    void 
+    partial_sort(_RAIter, _RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
+
+  template<typename _BIter, typename _Predicate>
+    _BIter 
+    partition(_BIter, _BIter, _Predicate);
+
+  template<typename _RAIter>
+    void 
+    random_shuffle(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Generator>
+    void 
+    random_shuffle(_RAIter, _RAIter,
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+		   _Generator&&);
+#else
+		   _Generator&);
+#endif
+
+  template<typename _FIter, typename _Tp>
+    void 
+    replace(_FIter, _FIter, const _Tp&, const _Tp&);
+
+  template<typename _FIter, typename _Predicate, typename _Tp>
+    void 
+    replace_if(_FIter, _FIter, _Predicate, const _Tp&);
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter1 
+    search(_FIter1, _FIter1, _FIter2, _FIter2);
+
+  template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
+    _FIter1 
+    search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
+
+  template<typename _FIter, typename _Size, typename _Tp>
+    _FIter 
+    search_n(_FIter, _FIter, _Size, const _Tp&);
+
+  template<typename _FIter, typename _Size, typename _Tp, 
+	   typename _BinaryPredicate>
+    _FIter 
+    search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter 
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter, 
+	   typename _Compare>
+    _OIter 
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter 
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+	   typename _Compare>
+    _OIter 
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter, 
+	   typename _Compare>
+    _OIter
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 
+			     _OIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter 
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+	   typename _Compare>
+    _OIter 
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
+
+  template<typename _RAIter>
+    void 
+    sort(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    sort(_RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    void 
+    stable_sort(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void 
+    stable_sort(_RAIter, _RAIter, _Compare);
+
+  template<typename _IIter, typename _OIter, typename _UnaryOperation>
+    _OIter 
+    transform(_IIter, _IIter, _OIter, _UnaryOperation);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter, 
+	   typename _BinaryOperation>
+    _OIter 
+    transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
+
+  template<typename _IIter, typename _OIter>
+    _OIter 
+    unique_copy(_IIter, _IIter, _OIter);
+
+  template<typename _IIter, typename _OIter, typename _BinaryPredicate>
+    _OIter 
+    unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
+
+_GLIBCXX_END_NAMESPACE_ALGO
+} // namespace std
+
+#ifdef _GLIBCXX_PARALLEL
+# include <parallel/algorithmfwd.h>
+#endif
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/allocator.h
new file mode 100644
index 000000000..9d01a602d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/allocator.h
@@ -0,0 +1,239 @@
+// Allocators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996-1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/allocator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _ALLOCATOR_H
+#define _ALLOCATOR_H 1
+
+// Define the base class to std::allocator.
+#include <bits/c++allocator.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <type_traits> // For _GLIBCXX_HAS_NESTED_TYPE
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup allocators Allocators
+   * @ingroup memory
+   *
+   * Classes encapsulating memory operations.
+   */
+
+  template<typename _Tp>
+    class allocator;
+
+  /// allocator<void> specialization.
+  template<>
+    class allocator<void>
+    {
+    public:
+      typedef size_t      size_type;
+      typedef ptrdiff_t   difference_type;
+      typedef void*       pointer;
+      typedef const void* const_pointer;
+      typedef void        value_type;
+
+      template<typename _Tp1>
+        struct rebind
+        { typedef allocator<_Tp1> other; };
+    };
+
+  /**
+   * @brief  The @a standard allocator, as per [20.4].
+   * @ingroup allocators
+   *
+   *  Further details:
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt04ch11.html
+   */
+  template<typename _Tp>
+    class allocator: public __glibcxx_base_allocator<_Tp>
+    {
+   public:
+      typedef size_t     size_type;
+      typedef ptrdiff_t  difference_type;
+      typedef _Tp*       pointer;
+      typedef const _Tp* const_pointer;
+      typedef _Tp&       reference;
+      typedef const _Tp& const_reference;
+      typedef _Tp        value_type;
+
+      template<typename _Tp1>
+        struct rebind
+        { typedef allocator<_Tp1> other; };
+
+      allocator() throw() { }
+
+      allocator(const allocator& __a) throw()
+      : __glibcxx_base_allocator<_Tp>(__a) { }
+
+      template<typename _Tp1>
+        allocator(const allocator<_Tp1>&) throw() { }
+
+      ~allocator() throw() { }
+
+      // Inherit everything else.
+    };
+
+  template<typename _T1, typename _T2>
+    inline bool
+    operator==(const allocator<_T1>&, const allocator<_T2>&)
+    { return true; }
+
+  template<typename _Tp>
+    inline bool
+    operator==(const allocator<_Tp>&, const allocator<_Tp>&)
+    { return true; }
+
+  template<typename _T1, typename _T2>
+    inline bool
+    operator!=(const allocator<_T1>&, const allocator<_T2>&)
+    { return false; }
+
+  template<typename _Tp>
+    inline bool
+    operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
+    { return false; }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class allocator<char>;
+  extern template class allocator<wchar_t>;
+#endif
+
+  // Undefine.
+#undef __glibcxx_base_allocator
+
+  // To implement Option 3 of DR 431.
+  template<typename _Alloc, bool = __is_empty(_Alloc)>
+    struct __alloc_swap
+    { static void _S_do_it(_Alloc&, _Alloc&) { } };
+
+  template<typename _Alloc>
+    struct __alloc_swap<_Alloc, false>
+    {
+      static void
+      _S_do_it(_Alloc& __one, _Alloc& __two)
+      {
+	// Precondition: swappable allocators.
+	if (__one != __two)
+	  swap(__one, __two);
+      }
+    };
+
+  // Optimize for stateless allocators.
+  template<typename _Alloc, bool = __is_empty(_Alloc)>
+    struct __alloc_neq
+    {
+      static bool
+      _S_do_it(const _Alloc&, const _Alloc&)
+      { return false; }
+    };
+
+  template<typename _Alloc>
+    struct __alloc_neq<_Alloc, false>
+    {
+      static bool
+      _S_do_it(const _Alloc& __one, const _Alloc& __two)
+      { return __one != __two; }
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // A very basic implementation for now.  In general we have to wait for
+  // the availability of the infrastructure described in N2983:  we should
+  // try when either T has a move constructor which cannot throw or T is
+  // CopyContructible.
+  // NB: This code doesn't properly belong here, we should find a more
+  // suited place common to std::vector and std::deque.
+  template<typename _Tp,
+	   bool = __has_trivial_copy(typename _Tp::value_type)>
+    struct __shrink_to_fit
+    { static void _S_do_it(_Tp&) { } };
+
+  template<typename _Tp>
+    struct __shrink_to_fit<_Tp, true>
+    {
+      static void
+      _S_do_it(_Tp& __v)
+      {
+	__try
+	  { _Tp(__v).swap(__v); }
+	__catch(...) { }
+      }
+    };
+
+
+  /// [allocator.tag]
+  struct allocator_arg_t { };
+
+  constexpr allocator_arg_t allocator_arg = allocator_arg_t();
+
+_GLIBCXX_HAS_NESTED_TYPE(allocator_type)
+
+  template<typename _Tp, typename _Alloc,
+	   bool = __has_allocator_type<_Tp>::value>
+    struct __uses_allocator_helper
+    : public false_type { };
+
+  template<typename _Tp, typename _Alloc>
+    struct __uses_allocator_helper<_Tp, _Alloc, true>
+    : public integral_constant<bool, is_convertible<_Alloc,
+				     typename _Tp::allocator_type>::value>
+    { };
+
+  /// [allocator.uses.trait]
+  template<typename _Tp, typename _Alloc>
+    struct uses_allocator
+    : public integral_constant<bool,
+			       __uses_allocator_helper<_Tp, _Alloc>::value>
+    { };
+
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_0.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_0.h
new file mode 100644
index 000000000..84ff779ef
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_0.h
@@ -0,0 +1,660 @@
+// -*- C++ -*- header.
+
+// Copyright (C) 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/atomic_0.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{atomic}
+ */
+
+#ifndef _GLIBCXX_ATOMIC_0_H
+#define _GLIBCXX_ATOMIC_0_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+// 0 == __atomic0 == Never lock-free
+namespace __atomic0
+{
+  _GLIBCXX_BEGIN_EXTERN_C
+
+  void
+  atomic_flag_clear_explicit(__atomic_flag_base*, memory_order)
+  _GLIBCXX_NOTHROW;
+
+  void
+  __atomic_flag_wait_explicit(__atomic_flag_base*, memory_order)
+  _GLIBCXX_NOTHROW;
+
+  _GLIBCXX_CONST __atomic_flag_base*
+  __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW;
+
+  _GLIBCXX_END_EXTERN_C
+
+  // Implementation specific defines.
+#define _ATOMIC_MEMBER_ _M_i
+
+  // Implementation specific defines.
+#define _ATOMIC_LOAD_(__a, __x)						   \
+  ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type;                          \
+    __i_type* __p = &_ATOMIC_MEMBER_;	   				   \
+    __atomic_flag_base* __g = __atomic_flag_for_address(__p);	  	   \
+    __atomic_flag_wait_explicit(__g, __x);				   \
+    __i_type __r = *__p;						   \
+    atomic_flag_clear_explicit(__g, __x);		       		   \
+    __r; })
+
+#define _ATOMIC_STORE_(__a, __n, __x)					   \
+  ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type;                          \
+    __i_type* __p = &_ATOMIC_MEMBER_;	   				   \
+    __typeof__(__n) __w = (__n);			       		   \
+    __atomic_flag_base* __g = __atomic_flag_for_address(__p);	  	   \
+    __atomic_flag_wait_explicit(__g, __x);				   \
+    *__p = __w;								   \
+    atomic_flag_clear_explicit(__g, __x);		       		   \
+    __w; })
+
+#define _ATOMIC_MODIFY_(__a, __o, __n, __x)				   \
+  ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type;                          \
+    __i_type* __p = &_ATOMIC_MEMBER_;	   				   \
+    __typeof__(__n) __w = (__n);			       		   \
+    __atomic_flag_base* __g = __atomic_flag_for_address(__p);	  	   \
+    __atomic_flag_wait_explicit(__g, __x);				   \
+    __i_type __r = *__p;		       				   \
+    *__p __o __w;					       		   \
+    atomic_flag_clear_explicit(__g, __x);		       		   \
+    __r; })
+
+#define _ATOMIC_CMPEXCHNG_(__a, __e, __n, __x)				   \
+  ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type;                          \
+    __i_type* __p = &_ATOMIC_MEMBER_;	   				   \
+    __typeof__(__e) __q = (__e);			       		   \
+    __typeof__(__n) __w = (__n);			       		   \
+    bool __r;						       		   \
+    __atomic_flag_base* __g = __atomic_flag_for_address(__p);	   	   \
+    __atomic_flag_wait_explicit(__g, __x);				   \
+    __i_type __t = *__p;		       				   \
+    if (*__q == __t) 							   \
+      {									   \
+	*__p = (__i_type)__w;						   \
+	__r = true;							   \
+      }									   \
+    else { *__q = __t; __r = false; }		       			   \
+    atomic_flag_clear_explicit(__g, __x);		       		   \
+    __r; })
+
+
+  /// atomic_flag
+  struct atomic_flag : public __atomic_flag_base
+  {
+    atomic_flag() = default;
+    ~atomic_flag() = default;
+    atomic_flag(const atomic_flag&) = delete;
+    atomic_flag& operator=(const atomic_flag&) = delete;
+    atomic_flag& operator=(const atomic_flag&) volatile = delete;
+
+    // Conversion to ATOMIC_FLAG_INIT.
+    atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
+
+    bool
+    test_and_set(memory_order __m = memory_order_seq_cst);
+
+    bool
+    test_and_set(memory_order __m = memory_order_seq_cst) volatile;
+
+    void
+    clear(memory_order __m = memory_order_seq_cst);
+
+    void
+    clear(memory_order __m = memory_order_seq_cst) volatile;
+  };
+
+
+  /// Base class for atomic integrals.
+  //
+  // For each of the integral types, define atomic_[integral type] struct
+  //
+  // atomic_bool     bool
+  // atomic_char     char
+  // atomic_schar    signed char
+  // atomic_uchar    unsigned char
+  // atomic_short    short
+  // atomic_ushort   unsigned short
+  // atomic_int      int
+  // atomic_uint     unsigned int
+  // atomic_long     long
+  // atomic_ulong    unsigned long
+  // atomic_llong    long long
+  // atomic_ullong   unsigned long long
+  // atomic_char16_t char16_t
+  // atomic_char32_t char32_t
+  // atomic_wchar_t  wchar_t
+
+  // Base type.
+  // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or 8 bytes,
+  // since that is what GCC built-in functions for atomic memory access work on.
+  template<typename _ITp>
+    struct __atomic_base
+    {
+    private:
+      typedef _ITp 	__int_type;
+
+      __int_type 	_M_i;
+
+    public:
+      __atomic_base() = default;
+      ~__atomic_base() = default;
+      __atomic_base(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) volatile = delete;
+
+      // Requires __int_type convertible to _M_base._M_i.
+      constexpr __atomic_base(__int_type __i): _M_i (__i) { }
+
+      operator __int_type() const
+      { return load(); }
+
+      operator __int_type() const volatile
+      { return load(); }
+
+      __int_type
+      operator=(__int_type __i)
+      {
+	store(__i);
+	return __i;
+      }
+
+      __int_type
+      operator=(__int_type __i) volatile
+      {
+	store(__i);
+	return __i;
+      }
+
+      __int_type
+      operator++(int)
+      { return fetch_add(1); }
+
+      __int_type
+      operator++(int) volatile
+      { return fetch_add(1); }
+
+      __int_type
+      operator--(int)
+      { return fetch_sub(1); }
+
+      __int_type
+      operator--(int) volatile
+      { return fetch_sub(1); }
+
+      __int_type
+      operator++()
+      { return fetch_add(1) + 1; }
+
+      __int_type
+      operator++() volatile
+      { return fetch_add(1) + 1; }
+
+      __int_type
+      operator--()
+      { return fetch_sub(1) - 1; }
+
+      __int_type
+      operator--() volatile
+      { return fetch_sub(1) - 1; }
+
+      __int_type
+      operator+=(__int_type __i)
+      { return fetch_add(__i) + __i; }
+
+      __int_type
+      operator+=(__int_type __i) volatile
+      { return fetch_add(__i) + __i; }
+
+      __int_type
+      operator-=(__int_type __i)
+      { return fetch_sub(__i) - __i; }
+
+      __int_type
+      operator-=(__int_type __i) volatile
+      { return fetch_sub(__i) - __i; }
+
+      __int_type
+      operator&=(__int_type __i)
+      { return fetch_and(__i) & __i; }
+
+      __int_type
+      operator&=(__int_type __i) volatile
+      { return fetch_and(__i) & __i; }
+
+      __int_type
+      operator|=(__int_type __i)
+      { return fetch_or(__i) | __i; }
+
+      __int_type
+      operator|=(__int_type __i) volatile
+      { return fetch_or(__i) | __i; }
+
+      __int_type
+      operator^=(__int_type __i)
+      { return fetch_xor(__i) ^ __i; }
+
+      __int_type
+      operator^=(__int_type __i) volatile
+      { return fetch_xor(__i) ^ __i; }
+
+      bool
+      is_lock_free() const
+      { return false; }
+
+      bool
+      is_lock_free() const volatile
+      { return false; }
+
+      void
+      store(__int_type __i, memory_order __m = memory_order_seq_cst)
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+	_ATOMIC_STORE_(this, __i, __m);
+      }
+
+      void
+      store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+	_ATOMIC_STORE_(this, __i, __m);
+      }
+
+      __int_type
+      load(memory_order __m = memory_order_seq_cst) const
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	return _ATOMIC_LOAD_(this, __m);
+      }
+
+      __int_type
+      load(memory_order __m = memory_order_seq_cst) const volatile
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	return _ATOMIC_LOAD_(this, __m);
+      }
+
+      __int_type
+      exchange(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, =, __i, __m); }
+
+      __int_type
+      exchange(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, =, __i, __m); }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m1, memory_order __m2)
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1);
+      }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m1, memory_order __m2) volatile
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1);
+      }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m = memory_order_seq_cst)
+      {
+	return compare_exchange_weak(__i1, __i2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m = memory_order_seq_cst) volatile
+      {
+	return compare_exchange_weak(__i1, __i2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m1, memory_order __m2)
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1);
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m1, memory_order __m2) volatile
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1);
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m = memory_order_seq_cst)
+      {
+	return compare_exchange_strong(__i1, __i2, __m,
+				       __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m = memory_order_seq_cst) volatile
+      {
+	return compare_exchange_strong(__i1, __i2, __m,
+				       __calculate_memory_order(__m));
+      }
+
+      __int_type
+      fetch_add(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, +=, __i, __m); }
+
+      __int_type
+      fetch_add(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, +=, __i, __m); }
+
+      __int_type
+      fetch_sub(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, -=, __i, __m); }
+
+      __int_type
+      fetch_sub(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, -=, __i, __m); }
+
+      __int_type
+      fetch_and(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, &=, __i, __m); }
+
+      __int_type
+      fetch_and(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, &=, __i, __m); }
+
+      __int_type
+      fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, |=, __i, __m); }
+
+      __int_type
+      fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, |=, __i, __m); }
+
+      __int_type
+      fetch_xor(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return _ATOMIC_MODIFY_(this, ^=, __i, __m); }
+
+      __int_type
+      fetch_xor(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _ATOMIC_MODIFY_(this, ^=, __i, __m); }
+    };
+
+
+  /// Partial specialization for pointer types.
+  template<typename _PTp>
+    struct __atomic_base<_PTp*>
+    {
+    private:
+      typedef _PTp* 	__return_pointer_type;
+      typedef void* 	__pointer_type;
+      __pointer_type 	_M_i;
+
+    public:
+      __atomic_base() = default;
+      ~__atomic_base() = default;
+      __atomic_base(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) volatile = delete;
+
+      // Requires __pointer_type convertible to _M_i.
+      constexpr __atomic_base(__return_pointer_type __p): _M_i (__p) { }
+
+      operator __return_pointer_type() const
+      { return reinterpret_cast<__return_pointer_type>(load()); }
+
+      operator __return_pointer_type() const volatile
+      { return reinterpret_cast<__return_pointer_type>(load()); }
+
+      __return_pointer_type
+      operator=(__pointer_type __p)
+      {
+	store(__p);
+	return reinterpret_cast<__return_pointer_type>(__p);
+      }
+
+      __return_pointer_type
+      operator=(__pointer_type __p) volatile
+      {
+	store(__p);
+	return reinterpret_cast<__return_pointer_type>(__p);
+      }
+
+      __return_pointer_type
+      operator++(int)
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(1)); }
+
+      __return_pointer_type
+      operator++(int) volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(1)); }
+
+      __return_pointer_type
+      operator--(int)
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); }
+
+      __return_pointer_type
+      operator--(int) volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); }
+
+      __return_pointer_type
+      operator++()
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); }
+
+      __return_pointer_type
+      operator++() volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); }
+
+      __return_pointer_type
+      operator--()
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); }
+
+      __return_pointer_type
+      operator--() volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); }
+
+      __return_pointer_type
+      operator+=(ptrdiff_t __d)
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); }
+
+      __return_pointer_type
+      operator+=(ptrdiff_t __d) volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); }
+
+      __return_pointer_type
+      operator-=(ptrdiff_t __d)
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); }
+
+      __return_pointer_type
+      operator-=(ptrdiff_t __d) volatile
+      { return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); }
+
+      bool
+      is_lock_free() const
+      { return true; }
+
+      bool
+      is_lock_free() const volatile
+      { return true; }
+
+      void
+      store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+	_ATOMIC_STORE_(this, __p, __m);
+      }
+
+      void
+      store(__pointer_type __p,
+	    memory_order __m = memory_order_seq_cst) volatile
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+	volatile __pointer_type* __p2 = &_M_i;
+	__typeof__(__p) __w = (__p);
+	__atomic_flag_base* __g = __atomic_flag_for_address(__p2);
+	__atomic_flag_wait_explicit(__g, __m);
+	*__p2 = reinterpret_cast<__pointer_type>(__w);
+	atomic_flag_clear_explicit(__g, __m);
+	__w;
+      }
+
+      __return_pointer_type
+      load(memory_order __m = memory_order_seq_cst) const
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	void* __v = _ATOMIC_LOAD_(this, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      load(memory_order __m = memory_order_seq_cst) const volatile
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	void* __v = _ATOMIC_LOAD_(this, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      {
+	void* __v = _ATOMIC_MODIFY_(this, =, __p, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      exchange(__pointer_type __p,
+	       memory_order __m = memory_order_seq_cst) volatile
+      {
+	volatile __pointer_type* __p2 = &_M_i;
+	__typeof__(__p) __w = (__p);
+	__atomic_flag_base* __g = __atomic_flag_for_address(__p2);
+	__atomic_flag_wait_explicit(__g, __m);
+	__pointer_type __r = *__p2;
+	*__p2 = __w;
+	atomic_flag_clear_explicit(__g, __m);
+	__r;
+	return reinterpret_cast<__return_pointer_type>(_M_i);
+      }
+
+      bool
+      compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2)
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	__pointer_type& __p1 = reinterpret_cast<void*&>(__rp1);
+	return _ATOMIC_CMPEXCHNG_(this, &__p1, __p2, __m1);
+      }
+
+      bool
+      compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2) volatile
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+	__pointer_type& __p1 = reinterpret_cast<void*&>(__rp1);
+	return _ATOMIC_CMPEXCHNG_(this, &__p1, __p2, __m1);
+      }
+
+      __return_pointer_type
+      fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      {
+	void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      fetch_add(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      {
+	void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      {
+	void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+
+      __return_pointer_type
+      fetch_sub(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      {
+	void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m);
+	return reinterpret_cast<__return_pointer_type>(__v);
+      }
+    };
+
+#undef _ATOMIC_LOAD_
+#undef _ATOMIC_STORE_
+#undef _ATOMIC_MODIFY_
+#undef _ATOMIC_CMPEXCHNG_
+} // namespace __atomic0
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_2.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_2.h
new file mode 100644
index 000000000..f95beca55
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_2.h
@@ -0,0 +1,669 @@
+// -*- C++ -*- header.
+
+// Copyright (C) 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/atomic_2.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{atomic}
+ */
+
+#ifndef _GLIBCXX_ATOMIC_2_H
+#define _GLIBCXX_ATOMIC_2_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+// 2 == __atomic2 == Always lock-free
+// Assumed:
+// _GLIBCXX_ATOMIC_BUILTINS_1
+// _GLIBCXX_ATOMIC_BUILTINS_2
+// _GLIBCXX_ATOMIC_BUILTINS_4
+// _GLIBCXX_ATOMIC_BUILTINS_8
+namespace __atomic2
+{
+  /// atomic_flag
+  struct atomic_flag : public __atomic_flag_base
+  {
+    atomic_flag() = default;
+    ~atomic_flag() = default;
+    atomic_flag(const atomic_flag&) = delete;
+    atomic_flag& operator=(const atomic_flag&) = delete;
+    atomic_flag& operator=(const atomic_flag&) volatile = delete;
+
+    // Conversion to ATOMIC_FLAG_INIT.
+    atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
+
+    bool
+    test_and_set(memory_order __m = memory_order_seq_cst)
+    {
+      // Redundant synchronize if built-in for lock is a full barrier.
+      if (__m != memory_order_acquire && __m != memory_order_acq_rel)
+	__sync_synchronize();
+      return __sync_lock_test_and_set(&_M_i, 1);
+    }
+
+    bool
+    test_and_set(memory_order __m = memory_order_seq_cst) volatile
+    {
+      // Redundant synchronize if built-in for lock is a full barrier.
+      if (__m != memory_order_acquire && __m != memory_order_acq_rel)
+	__sync_synchronize();
+      return __sync_lock_test_and_set(&_M_i, 1);
+    }
+
+    void
+    clear(memory_order __m = memory_order_seq_cst)
+    {
+      __glibcxx_assert(__m != memory_order_consume);
+      __glibcxx_assert(__m != memory_order_acquire);
+      __glibcxx_assert(__m != memory_order_acq_rel);
+
+      __sync_lock_release(&_M_i);
+      if (__m != memory_order_acquire && __m != memory_order_acq_rel)
+	__sync_synchronize();
+    }
+
+    void
+    clear(memory_order __m = memory_order_seq_cst) volatile
+    {
+      __glibcxx_assert(__m != memory_order_consume);
+      __glibcxx_assert(__m != memory_order_acquire);
+      __glibcxx_assert(__m != memory_order_acq_rel);
+
+      __sync_lock_release(&_M_i);
+      if (__m != memory_order_acquire && __m != memory_order_acq_rel)
+	__sync_synchronize();
+    }
+  };
+
+
+  /// Base class for atomic integrals.
+  //
+  // For each of the integral types, define atomic_[integral type] struct
+  //
+  // atomic_bool     bool
+  // atomic_char     char
+  // atomic_schar    signed char
+  // atomic_uchar    unsigned char
+  // atomic_short    short
+  // atomic_ushort   unsigned short
+  // atomic_int      int
+  // atomic_uint     unsigned int
+  // atomic_long     long
+  // atomic_ulong    unsigned long
+  // atomic_llong    long long
+  // atomic_ullong   unsigned long long
+  // atomic_char16_t char16_t
+  // atomic_char32_t char32_t
+  // atomic_wchar_t  wchar_t
+  //
+  // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or
+  // 8 bytes, since that is what GCC built-in functions for atomic
+  // memory access expect.
+  template<typename _ITp>
+    struct __atomic_base
+    {
+    private:
+      typedef _ITp 	__int_type;
+
+      __int_type 	_M_i;
+
+    public:
+      __atomic_base() = default;
+      ~__atomic_base() = default;
+      __atomic_base(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) volatile = delete;
+
+      // Requires __int_type convertible to _M_i.
+      constexpr __atomic_base(__int_type __i): _M_i (__i) { }
+
+      operator __int_type() const
+      { return load(); }
+
+      operator __int_type() const volatile
+      { return load(); }
+
+      __int_type
+      operator=(__int_type __i)
+      {
+	store(__i);
+	return __i;
+      }
+
+      __int_type
+      operator=(__int_type __i) volatile
+      {
+	store(__i);
+	return __i;
+      }
+
+      __int_type
+      operator++(int)
+      { return fetch_add(1); }
+
+      __int_type
+      operator++(int) volatile
+      { return fetch_add(1); }
+
+      __int_type
+      operator--(int)
+      { return fetch_sub(1); }
+
+      __int_type
+      operator--(int) volatile
+      { return fetch_sub(1); }
+
+      __int_type
+      operator++()
+      { return __sync_add_and_fetch(&_M_i, 1); }
+
+      __int_type
+      operator++() volatile
+      { return __sync_add_and_fetch(&_M_i, 1); }
+
+      __int_type
+      operator--()
+      { return __sync_sub_and_fetch(&_M_i, 1); }
+
+      __int_type
+      operator--() volatile
+      { return __sync_sub_and_fetch(&_M_i, 1); }
+
+      __int_type
+      operator+=(__int_type __i)
+      { return __sync_add_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator+=(__int_type __i) volatile
+      { return __sync_add_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator-=(__int_type __i)
+      { return __sync_sub_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator-=(__int_type __i) volatile
+      { return __sync_sub_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator&=(__int_type __i)
+      { return __sync_and_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator&=(__int_type __i) volatile
+      { return __sync_and_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator|=(__int_type __i)
+      { return __sync_or_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator|=(__int_type __i) volatile
+      { return __sync_or_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator^=(__int_type __i)
+      { return __sync_xor_and_fetch(&_M_i, __i); }
+
+      __int_type
+      operator^=(__int_type __i) volatile
+      { return __sync_xor_and_fetch(&_M_i, __i); }
+
+      bool
+      is_lock_free() const
+      { return true; }
+
+      bool
+      is_lock_free() const volatile
+      { return true; }
+
+      void
+      store(__int_type __i, memory_order __m = memory_order_seq_cst)
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+
+	if (__m == memory_order_relaxed)
+	  _M_i = __i;
+	else
+	  {
+	    // write_mem_barrier();
+	    _M_i = __i;
+	    if (__m == memory_order_seq_cst)
+	      __sync_synchronize();
+	  }
+      }
+
+      void
+      store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+
+	if (__m == memory_order_relaxed)
+	  _M_i = __i;
+	else
+	  {
+	    // write_mem_barrier();
+	    _M_i = __i;
+	    if (__m == memory_order_seq_cst)
+	      __sync_synchronize();
+	  }
+      }
+
+      __int_type
+      load(memory_order __m = memory_order_seq_cst) const
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+
+	__sync_synchronize();
+	__int_type __ret = _M_i;
+	__sync_synchronize();
+	return __ret;
+      }
+
+      __int_type
+      load(memory_order __m = memory_order_seq_cst) const volatile
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+
+	__sync_synchronize();
+	__int_type __ret = _M_i;
+	__sync_synchronize();
+	return __ret;
+      }
+
+      __int_type
+      exchange(__int_type __i, memory_order __m = memory_order_seq_cst)
+      {
+	// XXX built-in assumes memory_order_acquire.
+	return __sync_lock_test_and_set(&_M_i, __i);
+      }
+
+
+      __int_type
+      exchange(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+      {
+	// XXX built-in assumes memory_order_acquire.
+	return __sync_lock_test_and_set(&_M_i, __i);
+      }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m1, memory_order __m2)
+      { return compare_exchange_strong(__i1, __i2, __m1, __m2); }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m1, memory_order __m2) volatile
+      { return compare_exchange_strong(__i1, __i2, __m1, __m2); }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m = memory_order_seq_cst)
+      {
+	return compare_exchange_weak(__i1, __i2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_weak(__int_type& __i1, __int_type __i2,
+			    memory_order __m = memory_order_seq_cst) volatile
+      {
+	return compare_exchange_weak(__i1, __i2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m1, memory_order __m2)
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+
+	__int_type __i1o = __i1;
+	__int_type __i1n = __sync_val_compare_and_swap(&_M_i, __i1o, __i2);
+
+	// Assume extra stores (of same value) allowed in true case.
+	__i1 = __i1n;
+	return __i1o == __i1n;
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m1, memory_order __m2) volatile
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+
+	__int_type __i1o = __i1;
+	__int_type __i1n = __sync_val_compare_and_swap(&_M_i, __i1o, __i2);
+
+	// Assume extra stores (of same value) allowed in true case.
+	__i1 = __i1n;
+	return __i1o == __i1n;
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m = memory_order_seq_cst)
+      {
+	return compare_exchange_strong(__i1, __i2, __m,
+				       __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__int_type& __i1, __int_type __i2,
+			      memory_order __m = memory_order_seq_cst) volatile
+      {
+	return compare_exchange_strong(__i1, __i2, __m,
+				       __calculate_memory_order(__m));
+      }
+
+      __int_type
+      fetch_add(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_add(&_M_i, __i); }
+
+      __int_type
+      fetch_add(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_add(&_M_i, __i); }
+
+      __int_type
+      fetch_sub(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_sub(&_M_i, __i); }
+
+      __int_type
+      fetch_sub(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_sub(&_M_i, __i); }
+
+      __int_type
+      fetch_and(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_and(&_M_i, __i); }
+
+      __int_type
+      fetch_and(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_and(&_M_i, __i); }
+
+      __int_type
+      fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_or(&_M_i, __i); }
+
+      __int_type
+      fetch_or(__int_type __i,
+	       memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_or(&_M_i, __i); }
+
+      __int_type
+      fetch_xor(__int_type __i, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_xor(&_M_i, __i); }
+
+      __int_type
+      fetch_xor(__int_type __i,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_xor(&_M_i, __i); }
+    };
+
+
+  /// Partial specialization for pointer types.
+  template<typename _PTp>
+    struct __atomic_base<_PTp*>
+    {
+    private:
+      typedef _PTp* 	__pointer_type;
+
+      __pointer_type 	_M_p;
+
+    public:
+      __atomic_base() = default;
+      ~__atomic_base() = default;
+      __atomic_base(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) = delete;
+      __atomic_base& operator=(const __atomic_base&) volatile = delete;
+
+      // Requires __pointer_type convertible to _M_p.
+      constexpr __atomic_base(__pointer_type __p): _M_p (__p) { }
+
+      operator __pointer_type() const
+      { return load(); }
+
+      operator __pointer_type() const volatile
+      { return load(); }
+
+      __pointer_type
+      operator=(__pointer_type __p)
+      {
+	store(__p);
+	return __p;
+      }
+
+      __pointer_type
+      operator=(__pointer_type __p) volatile
+      {
+	store(__p);
+	return __p;
+      }
+
+      __pointer_type
+      operator++(int)
+      { return fetch_add(1); }
+
+      __pointer_type
+      operator++(int) volatile
+      { return fetch_add(1); }
+
+      __pointer_type
+      operator--(int)
+      { return fetch_sub(1); }
+
+      __pointer_type
+      operator--(int) volatile
+      { return fetch_sub(1); }
+
+      __pointer_type
+      operator++()
+      { return fetch_add(1) + 1; }
+
+      __pointer_type
+      operator++() volatile
+      { return fetch_add(1) + 1; }
+
+      __pointer_type
+      operator--()
+      { return fetch_sub(1) -1; }
+
+      __pointer_type
+      operator--() volatile
+      { return fetch_sub(1) -1; }
+
+      __pointer_type
+      operator+=(ptrdiff_t __d)
+      { return fetch_add(__d) + __d; }
+
+      __pointer_type
+      operator+=(ptrdiff_t __d) volatile
+      { return fetch_add(__d) + __d; }
+
+      __pointer_type
+      operator-=(ptrdiff_t __d)
+      { return fetch_sub(__d) - __d; }
+
+      __pointer_type
+      operator-=(ptrdiff_t __d) volatile
+      { return fetch_sub(__d) - __d; }
+
+      bool
+      is_lock_free() const
+      { return true; }
+
+      bool
+      is_lock_free() const volatile
+      { return true; }
+
+      void
+      store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+
+	if (__m == memory_order_relaxed)
+	  _M_p = __p;
+	else
+	  {
+	    // write_mem_barrier();
+	    _M_p = __p;
+	    if (__m == memory_order_seq_cst)
+	      __sync_synchronize();
+	  }
+      }
+
+      void
+      store(__pointer_type __p,
+	    memory_order __m = memory_order_seq_cst) volatile
+      {
+	__glibcxx_assert(__m != memory_order_acquire);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+	__glibcxx_assert(__m != memory_order_consume);
+
+	if (__m == memory_order_relaxed)
+	  _M_p = __p;
+	else
+	  {
+	    // write_mem_barrier();
+	    _M_p = __p;
+	    if (__m == memory_order_seq_cst)
+	      __sync_synchronize();
+	  }
+      }
+
+      __pointer_type
+      load(memory_order __m = memory_order_seq_cst) const
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+
+	__sync_synchronize();
+	__pointer_type __ret = _M_p;
+	__sync_synchronize();
+	return __ret;
+      }
+
+      __pointer_type
+      load(memory_order __m = memory_order_seq_cst) const volatile
+      {
+	__glibcxx_assert(__m != memory_order_release);
+	__glibcxx_assert(__m != memory_order_acq_rel);
+
+	__sync_synchronize();
+	__pointer_type __ret = _M_p;
+	__sync_synchronize();
+	return __ret;
+      }
+
+      __pointer_type
+      exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      {
+	// XXX built-in assumes memory_order_acquire.
+	return __sync_lock_test_and_set(&_M_p, __p);
+      }
+
+
+      __pointer_type
+      exchange(__pointer_type __p,
+	       memory_order __m = memory_order_seq_cst) volatile
+      {
+	// XXX built-in assumes memory_order_acquire.
+	return __sync_lock_test_and_set(&_M_p, __p);
+      }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2)
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+
+	__pointer_type __p1o = __p1;
+	__pointer_type __p1n = __sync_val_compare_and_swap(&_M_p, __p1o, __p2);
+
+	// Assume extra stores (of same value) allowed in true case.
+	__p1 = __p1n;
+	return __p1o == __p1n;
+      }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2) volatile
+      {
+	__glibcxx_assert(__m2 != memory_order_release);
+	__glibcxx_assert(__m2 != memory_order_acq_rel);
+	__glibcxx_assert(__m2 <= __m1);
+
+	__pointer_type __p1o = __p1;
+	__pointer_type __p1n = __sync_val_compare_and_swap(&_M_p, __p1o, __p2);
+
+	// Assume extra stores (of same value) allowed in true case.
+	__p1 = __p1n;
+	return __p1o == __p1n;
+      }
+
+      __pointer_type
+      fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_add(&_M_p, __d); }
+
+      __pointer_type
+      fetch_add(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_add(&_M_p, __d); }
+
+      __pointer_type
+      fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      { return __sync_fetch_and_sub(&_M_p, __d); }
+
+      __pointer_type
+      fetch_sub(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return __sync_fetch_and_sub(&_M_p, __d); }
+    };
+
+} // namespace __atomic2
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_base.h
new file mode 100644
index 000000000..272a4cd4c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/atomic_base.h
@@ -0,0 +1,295 @@
+// -*- C++ -*- header.
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/atomic_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{atomic}
+ */
+
+#ifndef _GLIBCXX_ATOMIC_BASE_H
+#define _GLIBCXX_ATOMIC_BASE_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup atomics Atomics
+   *
+   * Components for performing atomic operations.
+   * @{
+   */
+
+  /// Enumeration for memory_order
+  typedef enum memory_order
+    {
+      memory_order_relaxed,
+      memory_order_consume,
+      memory_order_acquire,
+      memory_order_release,
+      memory_order_acq_rel,
+      memory_order_seq_cst
+    } memory_order;
+
+  inline memory_order
+  __calculate_memory_order(memory_order __m)
+  {
+    const bool __cond1 = __m == memory_order_release;
+    const bool __cond2 = __m == memory_order_acq_rel;
+    memory_order __mo1(__cond1 ? memory_order_relaxed : __m);
+    memory_order __mo2(__cond2 ? memory_order_acquire : __mo1);
+    return __mo2;
+  }
+
+  void
+  atomic_thread_fence(memory_order);
+
+  void
+  atomic_signal_fence(memory_order);
+
+  /// kill_dependency
+  template<typename _Tp>
+    inline _Tp
+    kill_dependency(_Tp __y)
+    {
+      _Tp __ret(__y);
+      return __ret;
+    }
+
+  /**
+   *  @brief Base type for atomic_flag.
+   *
+   *  Base type is POD with data, allowing atomic_flag to derive from
+   *  it and meet the standard layout type requirement. In addition to
+   *  compatibilty with a C interface, this allows different
+   *  implementations of atomic_flag to use the same atomic operation
+   *  functions, via a standard conversion to the __atomic_flag_base
+   *  argument.
+  */
+  _GLIBCXX_BEGIN_EXTERN_C
+
+  struct __atomic_flag_base
+  {
+    bool _M_i;
+  };
+
+  _GLIBCXX_END_EXTERN_C
+
+#define ATOMIC_FLAG_INIT { false }
+
+
+  // Base types for atomics.
+  //
+  // Three nested namespaces for atomic implementation details.
+  //
+  // The nested namespace inlined into std:: is determined by the value
+  // of the _GLIBCXX_ATOMIC_PROPERTY macro and the resulting
+  // ATOMIC_*_LOCK_FREE macros.
+  //
+  // 0 == __atomic0 == Never lock-free
+  // 1 == __atomic1 == Best available, sometimes lock-free
+  // 2 == __atomic2 == Always lock-free
+
+  namespace __atomic0
+  {
+    struct atomic_flag;
+
+    template<typename _IntTp>
+      struct __atomic_base;
+  }
+
+  namespace __atomic2
+  {
+    struct atomic_flag;
+
+    template<typename _IntTp>
+      struct __atomic_base;
+  }
+
+  namespace __atomic1
+  {
+    using __atomic2::atomic_flag;
+    using __atomic0::__atomic_base;
+  }
+
+  /// Lock-free Property
+#if defined(_GLIBCXX_ATOMIC_BUILTINS_1) && defined(_GLIBCXX_ATOMIC_BUILTINS_2) \
+  && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_ATOMIC_BUILTINS_8)
+# define _GLIBCXX_ATOMIC_PROPERTY 2
+# define _GLIBCXX_ATOMIC_NAMESPACE __atomic2
+#elif defined(_GLIBCXX_ATOMIC_BUILTINS_1)
+# define _GLIBCXX_ATOMIC_PROPERTY 1
+# define _GLIBCXX_ATOMIC_NAMESPACE __atomic1
+#else
+# define _GLIBCXX_ATOMIC_PROPERTY 0
+# define _GLIBCXX_ATOMIC_NAMESPACE __atomic0
+#endif
+
+#define ATOMIC_CHAR_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_CHAR16_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_CHAR32_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_WCHAR_T_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_SHORT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_INT_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_LONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+#define ATOMIC_LLONG_LOCK_FREE _GLIBCXX_ATOMIC_PROPERTY
+
+  inline namespace _GLIBCXX_ATOMIC_NAMESPACE { }
+
+
+  /// atomic_char
+  typedef __atomic_base<char>  	       		atomic_char;
+
+  /// atomic_schar
+  typedef __atomic_base<signed char>	     	atomic_schar;
+
+  /// atomic_uchar
+  typedef __atomic_base<unsigned char>		atomic_uchar;
+
+  /// atomic_short
+  typedef __atomic_base<short>			atomic_short;
+
+  /// atomic_ushort
+  typedef __atomic_base<unsigned short>	 	atomic_ushort;
+
+  /// atomic_int
+  typedef __atomic_base<int>  	       		atomic_int;
+
+  /// atomic_uint
+  typedef __atomic_base<unsigned int>	     	atomic_uint;
+
+  /// atomic_long
+  typedef __atomic_base<long>  	       		atomic_long;
+
+  /// atomic_ulong
+  typedef __atomic_base<unsigned long>		atomic_ulong;
+
+  /// atomic_llong
+  typedef __atomic_base<long long>  		atomic_llong;
+
+  /// atomic_ullong
+  typedef __atomic_base<unsigned long long> 	atomic_ullong;
+
+  /// atomic_wchar_t
+  typedef __atomic_base<wchar_t>  		atomic_wchar_t;
+
+  /// atomic_char16_t
+  typedef __atomic_base<char16_t>  		atomic_char16_t;
+
+  /// atomic_char32_t
+  typedef __atomic_base<char32_t>  		atomic_char32_t;
+
+  /// atomic_char32_t
+  typedef __atomic_base<char32_t>  		atomic_char32_t;
+
+
+  /// atomic_int_least8_t
+  typedef __atomic_base<int_least8_t>  		atomic_int_least8_t;
+
+  /// atomic_uint_least8_t
+  typedef __atomic_base<uint_least8_t>	       	atomic_uint_least8_t;
+
+  /// atomic_int_least16_t
+  typedef __atomic_base<int_least16_t>	       	atomic_int_least16_t;
+
+  /// atomic_uint_least16_t
+  typedef __atomic_base<uint_least16_t>	       	atomic_uint_least16_t;
+
+  /// atomic_int_least32_t
+  typedef __atomic_base<int_least32_t>	       	atomic_int_least32_t;
+
+  /// atomic_uint_least32_t
+  typedef __atomic_base<uint_least32_t>	       	atomic_uint_least32_t;
+
+  /// atomic_int_least64_t
+  typedef __atomic_base<int_least64_t>	       	atomic_int_least64_t;
+
+  /// atomic_uint_least64_t
+  typedef __atomic_base<uint_least64_t>	       	atomic_uint_least64_t;
+
+
+  /// atomic_int_fast8_t
+  typedef __atomic_base<int_fast8_t>  		atomic_int_fast8_t;
+
+  /// atomic_uint_fast8_t
+  typedef __atomic_base<uint_fast8_t>	      	atomic_uint_fast8_t;
+
+  /// atomic_int_fast16_t
+  typedef __atomic_base<int_fast16_t>	      	atomic_int_fast16_t;
+
+  /// atomic_uint_fast16_t
+  typedef __atomic_base<uint_fast16_t>	      	atomic_uint_fast16_t;
+
+  /// atomic_int_fast32_t
+  typedef __atomic_base<int_fast32_t>	      	atomic_int_fast32_t;
+
+  /// atomic_uint_fast32_t
+  typedef __atomic_base<uint_fast32_t>	      	atomic_uint_fast32_t;
+
+  /// atomic_int_fast64_t
+  typedef __atomic_base<int_fast64_t>	      	atomic_int_fast64_t;
+
+  /// atomic_uint_fast64_t
+  typedef __atomic_base<uint_fast64_t>	      	atomic_uint_fast64_t;
+
+
+  /// atomic_intptr_t
+  typedef __atomic_base<intptr_t>  	       	atomic_intptr_t;
+
+  /// atomic_uintptr_t
+  typedef __atomic_base<uintptr_t>  	       	atomic_uintptr_t;
+
+  /// atomic_size_t
+  typedef __atomic_base<size_t>	 	       	atomic_size_t;
+
+  /// atomic_intmax_t
+  typedef __atomic_base<intmax_t>  	       	atomic_intmax_t;
+
+  /// atomic_uintmax_t
+  typedef __atomic_base<uintmax_t>  	       	atomic_uintmax_t;
+
+  /// atomic_ptrdiff_t
+  typedef __atomic_base<ptrdiff_t>  	       	atomic_ptrdiff_t;
+
+
+#define ATOMIC_VAR_INIT(_VI) { _VI }
+
+  template<typename _Tp>
+    struct atomic;
+
+  template<typename _Tp>
+    struct atomic<_Tp*>;
+
+  // @} group atomics
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.h
new file mode 100644
index 000000000..29d8ae5d3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.h
@@ -0,0 +1,475 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/basic_ios.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ios}
+ */
+
+#ifndef _BASIC_IOS_H
+#define _BASIC_IOS_H 1
+
+#pragma GCC system_header
+
+#include <bits/localefwd.h>
+#include <bits/locale_classes.h>
+#include <bits/locale_facets.h>
+#include <bits/streambuf_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Facet>
+    inline const _Facet&
+    __check_facet(const _Facet* __f)
+    {
+      if (!__f)
+	__throw_bad_cast();
+      return *__f;
+    }
+
+  // 27.4.5  Template class basic_ios
+  /**
+   *  @brief  Virtual base class for all stream classes.
+   *  @ingroup io
+   *
+   *  Most of the member functions called dispatched on stream objects
+   *  (e.g., @c std::cout.foo(bar);) are consolidated in this class.
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_ios : public ios_base
+    {
+    public:
+      //@{
+      /**
+       *  These are standard types.  They permit a standardized way of
+       *  referring to names of (or names dependant on) the template
+       *  parameters, which are specific to the implementation.
+      */
+      typedef _CharT                                 char_type;
+      typedef typename _Traits::int_type             int_type;
+      typedef typename _Traits::pos_type             pos_type;
+      typedef typename _Traits::off_type             off_type;
+      typedef _Traits                                traits_type;
+      //@}
+
+      //@{
+      /**
+       *  These are non-standard types.
+      */
+      typedef ctype<_CharT>                          __ctype_type;
+      typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
+						     __num_put_type;
+      typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
+						     __num_get_type;
+      //@}
+
+      // Data members:
+    protected:
+      basic_ostream<_CharT, _Traits>*                _M_tie;
+      mutable char_type                              _M_fill;
+      mutable bool                                   _M_fill_init;
+      basic_streambuf<_CharT, _Traits>*              _M_streambuf;
+
+      // Cached use_facet<ctype>, which is based on the current locale info.
+      const __ctype_type*                            _M_ctype;
+      // For ostream.
+      const __num_put_type*                          _M_num_put;
+      // For istream.
+      const __num_get_type*                          _M_num_get;
+
+    public:
+      //@{
+      /**
+       *  @brief  The quick-and-easy status check.
+       *
+       *  This allows you to write constructs such as
+       *  <code>if (!a_stream) ...</code> and <code>while (a_stream) ...</code>
+      */
+      operator void*() const
+      { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
+
+      bool
+      operator!() const
+      { return this->fail(); }
+      //@}
+
+      /**
+       *  @brief  Returns the error state of the stream buffer.
+       *  @return  A bit pattern (well, isn't everything?)
+       *
+       *  See std::ios_base::iostate for the possible bit values.  Most
+       *  users will call one of the interpreting wrappers, e.g., good().
+      */
+      iostate
+      rdstate() const
+      { return _M_streambuf_state; }
+
+      /**
+       *  @brief  [Re]sets the error state.
+       *  @param  state  The new state flag(s) to set.
+       *
+       *  See std::ios_base::iostate for the possible bit values.  Most
+       *  users will not need to pass an argument.
+      */
+      void
+      clear(iostate __state = goodbit);
+
+      /**
+       *  @brief  Sets additional flags in the error state.
+       *  @param  state  The additional state flag(s) to set.
+       *
+       *  See std::ios_base::iostate for the possible bit values.
+      */
+      void
+      setstate(iostate __state)
+      { this->clear(this->rdstate() | __state); }
+
+      // Flip the internal state on for the proper state bits, then re
+      // throws the propagated exception if bit also set in
+      // exceptions().
+      void
+      _M_setstate(iostate __state)
+      {
+	// 27.6.1.2.1 Common requirements.
+	// Turn this on without causing an ios::failure to be thrown.
+	_M_streambuf_state |= __state;
+	if (this->exceptions() & __state)
+	  __throw_exception_again;
+      }
+
+      /**
+       *  @brief  Fast error checking.
+       *  @return  True if no error flags are set.
+       *
+       *  A wrapper around rdstate.
+      */
+      bool
+      good() const
+      { return this->rdstate() == 0; }
+
+      /**
+       *  @brief  Fast error checking.
+       *  @return  True if the eofbit is set.
+       *
+       *  Note that other iostate flags may also be set.
+      */
+      bool
+      eof() const
+      { return (this->rdstate() & eofbit) != 0; }
+
+      /**
+       *  @brief  Fast error checking.
+       *  @return  True if either the badbit or the failbit is set.
+       *
+       *  Checking the badbit in fail() is historical practice.
+       *  Note that other iostate flags may also be set.
+      */
+      bool
+      fail() const
+      { return (this->rdstate() & (badbit | failbit)) != 0; }
+
+      /**
+       *  @brief  Fast error checking.
+       *  @return  True if the badbit is set.
+       *
+       *  Note that other iostate flags may also be set.
+      */
+      bool
+      bad() const
+      { return (this->rdstate() & badbit) != 0; }
+
+      /**
+       *  @brief  Throwing exceptions on errors.
+       *  @return  The current exceptions mask.
+       *
+       *  This changes nothing in the stream.  See the one-argument version
+       *  of exceptions(iostate) for the meaning of the return value.
+      */
+      iostate
+      exceptions() const
+      { return _M_exception; }
+
+      /**
+       *  @brief  Throwing exceptions on errors.
+       *  @param  except  The new exceptions mask.
+       *
+       *  By default, error flags are set silently.  You can set an
+       *  exceptions mask for each stream; if a bit in the mask becomes set
+       *  in the error flags, then an exception of type
+       *  std::ios_base::failure is thrown.
+       *
+       *  If the error flag is already set when the exceptions mask is
+       *  added, the exception is immediately thrown.  Try running the
+       *  following under GCC 3.1 or later:
+       *  @code
+       *  #include <iostream>
+       *  #include <fstream>
+       *  #include <exception>
+       *
+       *  int main()
+       *  {
+       *      std::set_terminate (__gnu_cxx::__verbose_terminate_handler);
+       *
+       *      std::ifstream f ("/etc/motd");
+       *
+       *      std::cerr << "Setting badbit\n";
+       *      f.setstate (std::ios_base::badbit);
+       *
+       *      std::cerr << "Setting exception mask\n";
+       *      f.exceptions (std::ios_base::badbit);
+       *  }
+       *  @endcode
+      */
+      void
+      exceptions(iostate __except)
+      {
+        _M_exception = __except;
+        this->clear(_M_streambuf_state);
+      }
+
+      // Constructor/destructor:
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  The parameter is passed by derived streams.
+      */
+      explicit
+      basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
+      : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
+	_M_ctype(0), _M_num_put(0), _M_num_get(0)
+      { this->init(__sb); }
+
+      /**
+       *  @brief  Empty.
+       *
+       *  The destructor does nothing.  More specifically, it does not
+       *  destroy the streambuf held by rdbuf().
+      */
+      virtual
+      ~basic_ios() { }
+
+      // Members:
+      /**
+       *  @brief  Fetches the current @e tied stream.
+       *  @return  A pointer to the tied stream, or NULL if the stream is
+       *           not tied.
+       *
+       *  A stream may be @e tied (or synchronized) to a second output
+       *  stream.  When this stream performs any I/O, the tied stream is
+       *  first flushed.  For example, @c std::cin is tied to @c std::cout.
+      */
+      basic_ostream<_CharT, _Traits>*
+      tie() const
+      { return _M_tie; }
+
+      /**
+       *  @brief  Ties this stream to an output stream.
+       *  @param  tiestr  The output stream.
+       *  @return  The previously tied output stream, or NULL if the stream
+       *           was not tied.
+       *
+       *  This sets up a new tie; see tie() for more.
+      */
+      basic_ostream<_CharT, _Traits>*
+      tie(basic_ostream<_CharT, _Traits>* __tiestr)
+      {
+        basic_ostream<_CharT, _Traits>* __old = _M_tie;
+        _M_tie = __tiestr;
+        return __old;
+      }
+
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current stream buffer.
+       *
+       *  This does not change the state of the stream.
+      */
+      basic_streambuf<_CharT, _Traits>*
+      rdbuf() const
+      { return _M_streambuf; }
+
+      /**
+       *  @brief  Changing the underlying buffer.
+       *  @param  sb  The new stream buffer.
+       *  @return  The previous stream buffer.
+       *
+       *  Associates a new buffer with the current stream, and clears the
+       *  error state.
+       *
+       *  Due to historical accidents which the LWG refuses to correct, the
+       *  I/O library suffers from a design error:  this function is hidden
+       *  in derived classes by overrides of the zero-argument @c rdbuf(),
+       *  which is non-virtual for hysterical raisins.  As a result, you
+       *  must use explicit qualifications to access this function via any
+       *  derived class.  For example:
+       *
+       *  @code
+       *  std::fstream     foo;         // or some other derived type
+       *  std::streambuf*  p = .....;
+       *
+       *  foo.ios::rdbuf(p);            // ios == basic_ios<char>
+       *  @endcode
+      */
+      basic_streambuf<_CharT, _Traits>*
+      rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
+
+      /**
+       *  @brief  Copies fields of __rhs into this.
+       *  @param  __rhs  The source values for the copies.
+       *  @return  Reference to this object.
+       *
+       *  All fields of __rhs are copied into this object except that rdbuf()
+       *  and rdstate() remain unchanged.  All values in the pword and iword
+       *  arrays are copied.  Before copying, each callback is invoked with
+       *  erase_event.  After copying, each (new) callback is invoked with
+       *  copyfmt_event.  The final step is to copy exceptions().
+      */
+      basic_ios&
+      copyfmt(const basic_ios& __rhs);
+
+      /**
+       *  @brief  Retrieves the @a empty character.
+       *  @return  The current fill character.
+       *
+       *  It defaults to a space (' ') in the current locale.
+      */
+      char_type
+      fill() const
+      {
+	if (!_M_fill_init)
+	  {
+	    _M_fill = this->widen(' ');
+	    _M_fill_init = true;
+	  }
+	return _M_fill;
+      }
+
+      /**
+       *  @brief  Sets a new @a empty character.
+       *  @param  ch  The new character.
+       *  @return  The previous fill character.
+       *
+       *  The fill character is used to fill out space when P+ characters
+       *  have been requested (e.g., via setw), Q characters are actually
+       *  used, and Q<P.  It defaults to a space (' ') in the current locale.
+      */
+      char_type
+      fill(char_type __ch)
+      {
+	char_type __old = this->fill();
+	_M_fill = __ch;
+	return __old;
+      }
+
+      // Locales:
+      /**
+       *  @brief  Moves to a new locale.
+       *  @param  loc  The new locale.
+       *  @return  The previous locale.
+       *
+       *  Calls @c ios_base::imbue(loc), and if a stream buffer is associated
+       *  with this stream, calls that buffer's @c pubimbue(loc).
+       *
+       *  Additional l10n notes are at
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
+      */
+      locale
+      imbue(const locale& __loc);
+
+      /**
+       *  @brief  Squeezes characters.
+       *  @param  c  The character to narrow.
+       *  @param  dfault  The character to narrow.
+       *  @return  The narrowed character.
+       *
+       *  Maps a character of @c char_type to a character of @c char,
+       *  if possible.
+       *
+       *  Returns the result of
+       *  @code
+       *    std::use_facet<ctype<char_type> >(getloc()).narrow(c,dfault)
+       *  @endcode
+       *
+       *  Additional l10n notes are at
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
+      */
+      char
+      narrow(char_type __c, char __dfault) const
+      { return __check_facet(_M_ctype).narrow(__c, __dfault); }
+
+      /**
+       *  @brief  Widens characters.
+       *  @param  c  The character to widen.
+       *  @return  The widened character.
+       *
+       *  Maps a character of @c char to a character of @c char_type.
+       *
+       *  Returns the result of
+       *  @code
+       *    std::use_facet<ctype<char_type> >(getloc()).widen(c)
+       *  @endcode
+       *
+       *  Additional l10n notes are at
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
+      */
+      char_type
+      widen(char __c) const
+      { return __check_facet(_M_ctype).widen(__c); }
+
+    protected:
+      // 27.4.5.1  basic_ios constructors
+      /**
+       *  @brief  Empty.
+       *
+       *  The default constructor does nothing and is not normally
+       *  accessible to users.
+      */
+      basic_ios()
+      : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 
+	_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
+      { }
+
+      /**
+       *  @brief  All setup is performed here.
+       *
+       *  This is called from the public constructor.  It is not virtual and
+       *  cannot be redefined.
+      */
+      void
+      init(basic_streambuf<_CharT, _Traits>* __sb);
+
+      void
+      _M_cache_locale(const locale& __loc);
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/basic_ios.tcc>
+
+#endif /* _BASIC_IOS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.tcc
new file mode 100644
index 000000000..8ac6bfdbe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_ios.tcc
@@ -0,0 +1,189 @@
+// basic_ios member functions -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+// 2009, 2010, 2011  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/basic_ios.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ios}
+ */
+
+#ifndef _BASIC_IOS_TCC
+#define _BASIC_IOS_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_ios<_CharT, _Traits>::clear(iostate __state)
+    {
+      if (this->rdbuf())
+	_M_streambuf_state = __state;
+      else
+	  _M_streambuf_state = __state | badbit;
+      if (this->exceptions() & this->rdstate())
+	__throw_ios_failure(__N("basic_ios::clear"));
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_streambuf<_CharT, _Traits>*
+    basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
+    {
+      basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
+      _M_streambuf = __sb;
+      this->clear();
+      return __old;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ios<_CharT, _Traits>&
+    basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 292. effects of a.copyfmt (a)
+      if (this != &__rhs)
+	{
+	  // Per 27.1.1, do not call imbue, yet must trash all caches
+	  // associated with imbue()
+
+	  // Alloc any new word array first, so if it fails we have "rollback".
+	  _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
+	                     _M_local_word : new _Words[__rhs._M_word_size];
+
+	  // Bump refs before doing callbacks, for safety.
+	  _Callback_list* __cb = __rhs._M_callbacks;
+	  if (__cb)
+	    __cb->_M_add_reference();
+	  _M_call_callbacks(erase_event);
+	  if (_M_word != _M_local_word)
+	    {
+	      delete [] _M_word;
+	      _M_word = 0;
+	    }
+	  _M_dispose_callbacks();
+
+	  // NB: Don't want any added during above.
+	  _M_callbacks = __cb;
+	  for (int __i = 0; __i < __rhs._M_word_size; ++__i)
+	    __words[__i] = __rhs._M_word[__i];
+	  _M_word = __words;
+	  _M_word_size = __rhs._M_word_size;
+
+	  this->flags(__rhs.flags());
+	  this->width(__rhs.width());
+	  this->precision(__rhs.precision());
+	  this->tie(__rhs.tie());
+	  this->fill(__rhs.fill());
+	  _M_ios_locale = __rhs.getloc();
+	  _M_cache_locale(_M_ios_locale);
+
+	  _M_call_callbacks(copyfmt_event);
+
+	  // The next is required to be the last assignment.
+	  this->exceptions(__rhs.exceptions());
+	}
+      return *this;
+    }
+
+  // Locales:
+  template<typename _CharT, typename _Traits>
+    locale
+    basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
+    {
+      locale __old(this->getloc());
+      ios_base::imbue(__loc);
+      _M_cache_locale(__loc);
+      if (this->rdbuf() != 0)
+	this->rdbuf()->pubimbue(__loc);
+      return __old;
+    }
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
+    {
+      // NB: This may be called more than once on the same object.
+      ios_base::_M_init();
+
+      // Cache locale data and specific facets used by iostreams.
+      _M_cache_locale(_M_ios_locale);
+
+      // NB: The 27.4.4.1 Postconditions Table specifies requirements
+      // after basic_ios::init() has been called. As part of this,
+      // fill() must return widen(' ') any time after init() has been
+      // called, which needs an imbued ctype facet of char_type to
+      // return without throwing an exception. Unfortunately,
+      // ctype<char_type> is not necessarily a required facet, so
+      // streams with char_type != [char, wchar_t] will not have it by
+      // default. Because of this, the correct value for _M_fill is
+      // constructed on the first call of fill(). That way,
+      // unformatted input and output with non-required basic_ios
+      // instantiations is possible even without imbuing the expected
+      // ctype<char_type> facet.
+      _M_fill = _CharT();
+      _M_fill_init = false;
+
+      _M_tie = 0;
+      _M_exception = goodbit;
+      _M_streambuf = __sb;
+      _M_streambuf_state = __sb ? goodbit : badbit;
+    }
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
+    {
+      if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
+	_M_ctype = &use_facet<__ctype_type>(__loc);
+      else
+	_M_ctype = 0;
+
+      if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
+	_M_num_put = &use_facet<__num_put_type>(__loc);
+      else
+	_M_num_put = 0;
+
+      if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
+	_M_num_get = &use_facet<__num_get_type>(__loc);
+      else
+	_M_num_get = 0;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_ios<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_ios<wchar_t>;
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.h
new file mode 100644
index 000000000..102ef77a6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.h
@@ -0,0 +1,3036 @@
+// Components for manipulating sequences of characters -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/basic_string.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{string}
+ */
+
+//
+// ISO C++ 14882: 21 Strings library
+//
+
+#ifndef _BASIC_STRING_H
+#define _BASIC_STRING_H 1
+
+#pragma GCC system_header
+
+#include <ext/atomicity.h>
+#include <debug/debug.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @class basic_string basic_string.h <string>
+   *  @brief  Managing sequences of characters and character-like objects.
+   *
+   *  @ingroup strings
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>.  Of the
+   *  <a href="tables.html#68">optional sequence requirements</a>, only
+   *  @c push_back, @c at, and @c %array access are supported.
+   *
+   *  @doctodo
+   *
+   *
+   *  Documentation?  What's that?
+   *  Nathan Myers <ncm@cantrip.org>.
+   *
+   *  A string looks like this:
+   *
+   *  @code
+   *                                        [_Rep]
+   *                                        _M_length
+   *   [basic_string<char_type>]            _M_capacity
+   *   _M_dataplus                          _M_refcount
+   *   _M_p ---------------->               unnamed array of char_type
+   *  @endcode
+   *
+   *  Where the _M_p points to the first character in the string, and
+   *  you cast it to a pointer-to-_Rep and subtract 1 to get a
+   *  pointer to the header.
+   *
+   *  This approach has the enormous advantage that a string object
+   *  requires only one allocation.  All the ugliness is confined
+   *  within a single %pair of inline functions, which each compile to
+   *  a single @a add instruction: _Rep::_M_data(), and
+   *  string::_M_rep(); and the allocation function which gets a
+   *  block of raw bytes and with room enough and constructs a _Rep
+   *  object at the front.
+   *
+   *  The reason you want _M_data pointing to the character %array and
+   *  not the _Rep is so that the debugger can see the string
+   *  contents. (Probably we should add a non-inline member to get
+   *  the _Rep for the debugger to use, so users can check the actual
+   *  string length.)
+   *
+   *  Note that the _Rep object is a POD so that you can have a
+   *  static <em>empty string</em> _Rep object already @a constructed before
+   *  static constructors have run.  The reference-count encoding is
+   *  chosen so that a 0 indicates one reference, so you never try to
+   *  destroy the empty-string _Rep object.
+   *
+   *  All but the last paragraph is considered pretty conventional
+   *  for a C++ string implementation.
+  */
+  // 21.3  Template class basic_string
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class basic_string
+    {
+      typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
+
+      // Types:
+    public:
+      typedef _Traits					    traits_type;
+      typedef typename _Traits::char_type		    value_type;
+      typedef _Alloc					    allocator_type;
+      typedef typename _CharT_alloc_type::size_type	    size_type;
+      typedef typename _CharT_alloc_type::difference_type   difference_type;
+      typedef typename _CharT_alloc_type::reference	    reference;
+      typedef typename _CharT_alloc_type::const_reference   const_reference;
+      typedef typename _CharT_alloc_type::pointer	    pointer;
+      typedef typename _CharT_alloc_type::const_pointer	    const_pointer;
+      typedef __gnu_cxx::__normal_iterator<pointer, basic_string>  iterator;
+      typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
+                                                            const_iterator;
+      typedef std::reverse_iterator<const_iterator>	const_reverse_iterator;
+      typedef std::reverse_iterator<iterator>		    reverse_iterator;
+
+    private:
+      // _Rep: string representation
+      //   Invariants:
+      //   1. String really contains _M_length + 1 characters: due to 21.3.4
+      //      must be kept null-terminated.
+      //   2. _M_capacity >= _M_length
+      //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
+      //   3. _M_refcount has three states:
+      //      -1: leaked, one reference, no ref-copies allowed, non-const.
+      //       0: one reference, non-const.
+      //     n>0: n + 1 references, operations require a lock, const.
+      //   4. All fields==0 is an empty string, given the extra storage
+      //      beyond-the-end for a null terminator; thus, the shared
+      //      empty string representation needs no constructor.
+
+      struct _Rep_base
+      {
+	size_type		_M_length;
+	size_type		_M_capacity;
+	_Atomic_word		_M_refcount;
+      };
+
+      struct _Rep : _Rep_base
+      {
+	// Types:
+	typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
+
+	// (Public) Data members:
+
+	// The maximum number of individual char_type elements of an
+	// individual string is determined by _S_max_size. This is the
+	// value that will be returned by max_size().  (Whereas npos
+	// is the maximum number of bytes the allocator can allocate.)
+	// If one was to divvy up the theoretical largest size string,
+	// with a terminating character and m _CharT elements, it'd
+	// look like this:
+	// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
+	// Solving for m:
+	// m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
+	// In addition, this implementation quarters this amount.
+	static const size_type	_S_max_size;
+	static const _CharT	_S_terminal;
+
+	// The following storage is init'd to 0 by the linker, resulting
+        // (carefully) in an empty string with one reference.
+        static size_type _S_empty_rep_storage[];
+
+        static _Rep&
+        _S_empty_rep()
+        { 
+	  // NB: Mild hack to avoid strict-aliasing warnings.  Note that
+	  // _S_empty_rep_storage is never modified and the punning should
+	  // be reasonably safe in this case.
+	  void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
+	  return *reinterpret_cast<_Rep*>(__p);
+	}
+
+        bool
+	_M_is_leaked() const
+        { return this->_M_refcount < 0; }
+
+        bool
+	_M_is_shared() const
+        { return this->_M_refcount > 0; }
+
+        void
+	_M_set_leaked()
+        { this->_M_refcount = -1; }
+
+        void
+	_M_set_sharable()
+        { this->_M_refcount = 0; }
+
+	void
+	_M_set_length_and_sharable(size_type __n)
+	{
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+	  if (__builtin_expect(this != &_S_empty_rep(), false))
+#endif
+	    {
+	      this->_M_set_sharable();  // One reference.
+	      this->_M_length = __n;
+	      traits_type::assign(this->_M_refdata()[__n], _S_terminal);
+	      // grrr. (per 21.3.4)
+	      // You cannot leave those LWG people alone for a second.
+	    }
+	}
+
+	_CharT*
+	_M_refdata() throw()
+	{ return reinterpret_cast<_CharT*>(this + 1); }
+
+	_CharT*
+	_M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
+	{
+	  return (!_M_is_leaked() && __alloc1 == __alloc2)
+	          ? _M_refcopy() : _M_clone(__alloc1);
+	}
+
+	// Create & Destroy
+	static _Rep*
+	_S_create(size_type, size_type, const _Alloc&);
+
+	void
+	_M_dispose(const _Alloc& __a)
+	{
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+	  if (__builtin_expect(this != &_S_empty_rep(), false))
+#endif
+	    {
+	      // Be race-detector-friendly.  For more info see bits/c++config.
+	      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
+	      if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
+							 -1) <= 0)
+		{
+		  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
+		  _M_destroy(__a);
+		}
+	    }
+	}  // XXX MT
+
+	void
+	_M_destroy(const _Alloc&) throw();
+
+	_CharT*
+	_M_refcopy() throw()
+	{
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+	  if (__builtin_expect(this != &_S_empty_rep(), false))
+#endif
+            __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
+	  return _M_refdata();
+	}  // XXX MT
+
+	_CharT*
+	_M_clone(const _Alloc&, size_type __res = 0);
+      };
+
+      // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
+      struct _Alloc_hider : _Alloc
+      {
+	_Alloc_hider(_CharT* __dat, const _Alloc& __a)
+	: _Alloc(__a), _M_p(__dat) { }
+
+	_CharT* _M_p; // The actual data.
+      };
+
+    public:
+      // Data Members (public):
+      // NB: This is an unsigned type, and thus represents the maximum
+      // size that the allocator can hold.
+      ///  Value returned by various member functions when they fail.
+      static const size_type	npos = static_cast<size_type>(-1);
+
+    private:
+      // Data Members (private):
+      mutable _Alloc_hider	_M_dataplus;
+
+      _CharT*
+      _M_data() const
+      { return  _M_dataplus._M_p; }
+
+      _CharT*
+      _M_data(_CharT* __p)
+      { return (_M_dataplus._M_p = __p); }
+
+      _Rep*
+      _M_rep() const
+      { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
+
+      // For the internal use we have functions similar to `begin'/`end'
+      // but they do not call _M_leak.
+      iterator
+      _M_ibegin() const
+      { return iterator(_M_data()); }
+
+      iterator
+      _M_iend() const
+      { return iterator(_M_data() + this->size()); }
+
+      void
+      _M_leak()    // for use in begin() & non-const op[]
+      {
+	if (!_M_rep()->_M_is_leaked())
+	  _M_leak_hard();
+      }
+
+      size_type
+      _M_check(size_type __pos, const char* __s) const
+      {
+	if (__pos > this->size())
+	  __throw_out_of_range(__N(__s));
+	return __pos;
+      }
+
+      void
+      _M_check_length(size_type __n1, size_type __n2, const char* __s) const
+      {
+	if (this->max_size() - (this->size() - __n1) < __n2)
+	  __throw_length_error(__N(__s));
+      }
+
+      // NB: _M_limit doesn't check for a bad __pos value.
+      size_type
+      _M_limit(size_type __pos, size_type __off) const
+      {
+	const bool __testoff =  __off < this->size() - __pos;
+	return __testoff ? __off : this->size() - __pos;
+      }
+
+      // True if _Rep and source do not overlap.
+      bool
+      _M_disjunct(const _CharT* __s) const
+      {
+	return (less<const _CharT*>()(__s, _M_data())
+		|| less<const _CharT*>()(_M_data() + this->size(), __s));
+      }
+
+      // When __n = 1 way faster than the general multichar
+      // traits_type::copy/move/assign.
+      static void
+      _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, *__s);
+	else
+	  traits_type::copy(__d, __s, __n);
+      }
+
+      static void
+      _M_move(_CharT* __d, const _CharT* __s, size_type __n)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, *__s);
+	else
+	  traits_type::move(__d, __s, __n);	  
+      }
+
+      static void
+      _M_assign(_CharT* __d, size_type __n, _CharT __c)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, __c);
+	else
+	  traits_type::assign(__d, __n, __c);	  
+      }
+
+      // _S_copy_chars is a separate template to permit specialization
+      // to optimize for the common case of pointers as iterators.
+      template<class _Iterator>
+        static void
+        _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
+        {
+	  for (; __k1 != __k2; ++__k1, ++__p)
+	    traits_type::assign(*__p, *__k1); // These types are off.
+	}
+
+      static void
+      _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
+      { _M_copy(__p, __k1, __k2 - __k1); }
+
+      static void
+      _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
+      { _M_copy(__p, __k1, __k2 - __k1); }
+
+      static int
+      _S_compare(size_type __n1, size_type __n2)
+      {
+	const difference_type __d = difference_type(__n1 - __n2);
+
+	if (__d > __gnu_cxx::__numeric_traits<int>::__max)
+	  return __gnu_cxx::__numeric_traits<int>::__max;
+	else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
+	  return __gnu_cxx::__numeric_traits<int>::__min;
+	else
+	  return int(__d);
+      }
+
+      void
+      _M_mutate(size_type __pos, size_type __len1, size_type __len2);
+
+      void
+      _M_leak_hard();
+
+      static _Rep&
+      _S_empty_rep()
+      { return _Rep::_S_empty_rep(); }
+
+    public:
+      // Construct/copy/destroy:
+      // NB: We overload ctors in some cases instead of using default
+      // arguments, per 17.4.4.4 para. 2 item 2.
+
+      /**
+       *  @brief  Default constructor creates an empty string.
+       */
+      basic_string()
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+      : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
+#else
+      : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()){ }
+#endif
+
+      /**
+       *  @brief  Construct an empty string using allocator @a a.
+       */
+      explicit
+      basic_string(const _Alloc& __a);
+
+      // NB: per LWG issue 42, semantics different from IS:
+      /**
+       *  @brief  Construct string with copy of value of @a str.
+       *  @param  str  Source string.
+       */
+      basic_string(const basic_string& __str);
+      /**
+       *  @brief  Construct string as copy of a substring.
+       *  @param  str  Source string.
+       *  @param  pos  Index of first character to copy from.
+       *  @param  n  Number of characters to copy (default remainder).
+       */
+      basic_string(const basic_string& __str, size_type __pos,
+		   size_type __n = npos);
+      /**
+       *  @brief  Construct string as copy of a substring.
+       *  @param  str  Source string.
+       *  @param  pos  Index of first character to copy from.
+       *  @param  n  Number of characters to copy.
+       *  @param  a  Allocator to use.
+       */
+      basic_string(const basic_string& __str, size_type __pos,
+		   size_type __n, const _Alloc& __a);
+
+      /**
+       *  @brief  Construct string initialized by a character %array.
+       *  @param  s  Source character %array.
+       *  @param  n  Number of characters to copy.
+       *  @param  a  Allocator to use (default is default allocator).
+       *
+       *  NB: @a s must have at least @a n characters, '\\0'
+       *  has no special meaning.
+       */
+      basic_string(const _CharT* __s, size_type __n,
+		   const _Alloc& __a = _Alloc());
+      /**
+       *  @brief  Construct string as copy of a C string.
+       *  @param  s  Source C string.
+       *  @param  a  Allocator to use (default is default allocator).
+       */
+      basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
+      /**
+       *  @brief  Construct string as multiple characters.
+       *  @param  n  Number of characters.
+       *  @param  c  Character to use.
+       *  @param  a  Allocator to use (default is default allocator).
+       */
+      basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Move construct string.
+       *  @param  str  Source string.
+       *
+       *  The newly-created string contains the exact contents of @a str.
+       *  @a str is a valid, but unspecified string.
+       **/
+      basic_string(basic_string&& __str)
+      : _M_dataplus(__str._M_dataplus)
+      {
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING	
+	__str._M_data(_S_empty_rep()._M_refdata());
+#else
+	__str._M_data(_S_construct(size_type(), _CharT(), get_allocator()));
+#endif
+      }
+
+      /**
+       *  @brief  Construct string from an initializer %list.
+       *  @param  l  std::initializer_list of characters.
+       *  @param  a  Allocator to use (default is default allocator).
+       */
+      basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc());
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Construct string as copy of a range.
+       *  @param  beg  Start of range.
+       *  @param  end  End of range.
+       *  @param  a  Allocator to use (default is default allocator).
+       */
+      template<class _InputIterator>
+        basic_string(_InputIterator __beg, _InputIterator __end,
+		     const _Alloc& __a = _Alloc());
+
+      /**
+       *  @brief  Destroy the string instance.
+       */
+      ~basic_string()
+      { _M_rep()->_M_dispose(this->get_allocator()); }
+
+      /**
+       *  @brief  Assign the value of @a str to this string.
+       *  @param  str  Source string.
+       */
+      basic_string&
+      operator=(const basic_string& __str) 
+      { return this->assign(__str); }
+
+      /**
+       *  @brief  Copy contents of @a s into this string.
+       *  @param  s  Source null-terminated string.
+       */
+      basic_string&
+      operator=(const _CharT* __s) 
+      { return this->assign(__s); }
+
+      /**
+       *  @brief  Set value to string of length 1.
+       *  @param  c  Source character.
+       *
+       *  Assigning to a character makes this string length 1 and
+       *  (*this)[0] == @a c.
+       */
+      basic_string&
+      operator=(_CharT __c) 
+      { 
+	this->assign(1, __c); 
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Move assign the value of @a str to this string.
+       *  @param  str  Source string.
+       *
+       *  The contents of @a str are moved into this string (without copying).
+       *  @a str is a valid, but unspecified string.
+       **/
+      basic_string&
+      operator=(basic_string&& __str)
+      {
+	// NB: DR 1204.
+	this->swap(__str);
+	return *this;
+      }
+
+      /**
+       *  @brief  Set value to string constructed from initializer %list.
+       *  @param  l  std::initializer_list.
+       */
+      basic_string&
+      operator=(initializer_list<_CharT> __l)
+      {
+	this->assign(__l.begin(), __l.size());
+	return *this;
+      }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      // Iterators:
+      /**
+       *  Returns a read/write iterator that points to the first character in
+       *  the %string.  Unshares the string.
+       */
+      iterator
+      begin()
+      {
+	_M_leak();
+	return iterator(_M_data());
+      }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  character in the %string.
+       */
+      const_iterator
+      begin() const
+      { return const_iterator(_M_data()); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  character in the %string.  Unshares the string.
+       */
+      iterator
+      end()
+      {
+	_M_leak();
+	return iterator(_M_data() + this->size());
+      }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the
+       *  last character in the %string.
+       */
+      const_iterator
+      end() const
+      { return const_iterator(_M_data() + this->size()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the last
+       *  character in the %string.  Iteration is done in reverse element
+       *  order.  Unshares the string.
+       */
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last character in the %string.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one before the
+       *  first character in the %string.  Iteration is done in reverse
+       *  element order.  Unshares the string.
+       */
+      reverse_iterator
+      rend()
+      { return reverse_iterator(this->begin()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first character in the %string.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(this->begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  character in the %string.
+       */
+      const_iterator
+      cbegin() const
+      { return const_iterator(this->_M_data()); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the
+       *  last character in the %string.
+       */
+      const_iterator
+      cend() const
+      { return const_iterator(this->_M_data() + this->size()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last character in the %string.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first character in the %string.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(this->begin()); }
+#endif
+
+    public:
+      // Capacity:
+      ///  Returns the number of characters in the string, not including any
+      ///  null-termination.
+      size_type
+      size() const
+      { return _M_rep()->_M_length; }
+
+      ///  Returns the number of characters in the string, not including any
+      ///  null-termination.
+      size_type
+      length() const
+      { return _M_rep()->_M_length; }
+
+      ///  Returns the size() of the largest possible %string.
+      size_type
+      max_size() const
+      { return _Rep::_S_max_size; }
+
+      /**
+       *  @brief  Resizes the %string to the specified number of characters.
+       *  @param  n  Number of characters the %string should contain.
+       *  @param  c  Character to fill any new elements.
+       *
+       *  This function will %resize the %string to the specified
+       *  number of characters.  If the number is smaller than the
+       *  %string's current size the %string is truncated, otherwise
+       *  the %string is extended and new elements are %set to @a c.
+       */
+      void
+      resize(size_type __n, _CharT __c);
+
+      /**
+       *  @brief  Resizes the %string to the specified number of characters.
+       *  @param  n  Number of characters the %string should contain.
+       *
+       *  This function will resize the %string to the specified length.  If
+       *  the new size is smaller than the %string's current size the %string
+       *  is truncated, otherwise the %string is extended and new characters
+       *  are default-constructed.  For basic types such as char, this means
+       *  setting them to 0.
+       */
+      void
+      resize(size_type __n)
+      { this->resize(__n, _CharT()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      ///  A non-binding request to reduce capacity() to size().
+      void
+      shrink_to_fit()
+      {
+	__try
+	  { reserve(0); }
+	__catch(...)
+	  { }
+      }
+#endif
+
+      /**
+       *  Returns the total number of characters that the %string can hold
+       *  before needing to allocate more memory.
+       */
+      size_type
+      capacity() const
+      { return _M_rep()->_M_capacity; }
+
+      /**
+       *  @brief  Attempt to preallocate enough memory for specified number of
+       *          characters.
+       *  @param  res_arg  Number of characters required.
+       *  @throw  std::length_error  If @a res_arg exceeds @c max_size().
+       *
+       *  This function attempts to reserve enough memory for the
+       *  %string to hold the specified number of characters.  If the
+       *  number requested is more than max_size(), length_error is
+       *  thrown.
+       *
+       *  The advantage of this function is that if optimal code is a
+       *  necessity and the user can determine the string length that will be
+       *  required, the user can reserve the memory in %advance, and thus
+       *  prevent a possible reallocation of memory and copying of %string
+       *  data.
+       */
+      void
+      reserve(size_type __res_arg = 0);
+
+      /**
+       *  Erases the string, making it empty.
+       */
+      void
+      clear()
+      { _M_mutate(0, this->size(), 0); }
+
+      /**
+       *  Returns true if the %string is empty.  Equivalent to 
+       *  <code>*this == ""</code>.
+       */
+      bool
+      empty() const
+      { return this->size() == 0; }
+
+      // Element access:
+      /**
+       *  @brief  Subscript access to the data contained in the %string.
+       *  @param  pos  The index of the character to access.
+       *  @return  Read-only (constant) reference to the character.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      const_reference
+      operator[] (size_type __pos) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
+	return _M_data()[__pos];
+      }
+
+      /**
+       *  @brief  Subscript access to the data contained in the %string.
+       *  @param  pos  The index of the character to access.
+       *  @return  Read/write reference to the character.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)  Unshares the string.
+       */
+      reference
+      operator[](size_type __pos)
+      {
+        // allow pos == size() as v3 extension:
+	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
+        // but be strict in pedantic mode:
+	_GLIBCXX_DEBUG_PEDASSERT(__pos < size());
+	_M_leak();
+	return _M_data()[__pos];
+      }
+
+      /**
+       *  @brief  Provides access to the data contained in the %string.
+       *  @param n The index of the character to access.
+       *  @return  Read-only (const) reference to the character.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter is
+       *  first checked that it is in the range of the string.  The function
+       *  throws out_of_range if the check fails.
+       */
+      const_reference
+      at(size_type __n) const
+      {
+	if (__n >= this->size())
+	  __throw_out_of_range(__N("basic_string::at"));
+	return _M_data()[__n];
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %string.
+       */
+      reference
+      front()
+      { return operator[](0); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %string.
+       */
+      const_reference
+      front() const
+      { return operator[](0); }
+
+      /**
+       *  Returns a read/write reference to the data at the last
+       *  element of the %string.
+       */
+      reference
+      back()
+      { return operator[](this->size() - 1); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the
+       *  last element of the %string.
+       */
+      const_reference
+      back() const
+      { return operator[](this->size() - 1); }
+#endif
+
+      /**
+       *  @brief  Provides access to the data contained in the %string.
+       *  @param n The index of the character to access.
+       *  @return  Read/write reference to the character.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter is
+       *  first checked that it is in the range of the string.  The function
+       *  throws out_of_range if the check fails.  Success results in
+       *  unsharing the string.
+       */
+      reference
+      at(size_type __n)
+      {
+	if (__n >= size())
+	  __throw_out_of_range(__N("basic_string::at"));
+	_M_leak();
+	return _M_data()[__n];
+      }
+
+      // Modifiers:
+      /**
+       *  @brief  Append a string to this string.
+       *  @param str  The string to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      operator+=(const basic_string& __str)
+      { return this->append(__str); }
+
+      /**
+       *  @brief  Append a C string.
+       *  @param s  The C string to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      operator+=(const _CharT* __s)
+      { return this->append(__s); }
+
+      /**
+       *  @brief  Append a character.
+       *  @param c  The character to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      operator+=(_CharT __c)
+      { 
+	this->push_back(__c);
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Append an initializer_list of characters.
+       *  @param l  The initializer_list of characters to be appended.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      operator+=(initializer_list<_CharT> __l)
+      { return this->append(__l.begin(), __l.size()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Append a string to this string.
+       *  @param str  The string to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      append(const basic_string& __str);
+
+      /**
+       *  @brief  Append a substring.
+       *  @param str  The string to append.
+       *  @param pos  Index of the first character of str to append.
+       *  @param n  The number of characters to append.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range if @a pos is not a valid index.
+       *
+       *  This function appends @a n characters from @a str starting at @a pos
+       *  to this string.  If @a n is is larger than the number of available
+       *  characters in @a str, the remainder of @a str is appended.
+       */
+      basic_string&
+      append(const basic_string& __str, size_type __pos, size_type __n);
+
+      /**
+       *  @brief  Append a C substring.
+       *  @param s  The C string to append.
+       *  @param n  The number of characters to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      append(const _CharT* __s, size_type __n);
+
+      /**
+       *  @brief  Append a C string.
+       *  @param s  The C string to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      append(const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->append(__s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Append multiple characters.
+       *  @param n  The number of characters to append.
+       *  @param c  The character to use.
+       *  @return  Reference to this string.
+       *
+       *  Appends n copies of c to this string.
+       */
+      basic_string&
+      append(size_type __n, _CharT __c);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Append an initializer_list of characters.
+       *  @param l  The initializer_list of characters to append.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      append(initializer_list<_CharT> __l)
+      { return this->append(__l.begin(), __l.size()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Append a range of characters.
+       *  @param first  Iterator referencing the first character to append.
+       *  @param last  Iterator marking the end of the range.
+       *  @return  Reference to this string.
+       *
+       *  Appends characters in the range [first,last) to this string.
+       */
+      template<class _InputIterator>
+        basic_string&
+        append(_InputIterator __first, _InputIterator __last)
+        { return this->replace(_M_iend(), _M_iend(), __first, __last); }
+
+      /**
+       *  @brief  Append a single character.
+       *  @param c  Character to append.
+       */
+      void
+      push_back(_CharT __c)
+      { 
+	const size_type __len = 1 + this->size();
+	if (__len > this->capacity() || _M_rep()->_M_is_shared())
+	  this->reserve(__len);
+	traits_type::assign(_M_data()[this->size()], __c);
+	_M_rep()->_M_set_length_and_sharable(__len);
+      }
+
+      /**
+       *  @brief  Set value to contents of another string.
+       *  @param  str  Source string to use.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      assign(const basic_string& __str);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Set value to contents of another string.
+       *  @param  str  Source string to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets this string to the exact contents of @a str.
+       *  @a str is a valid, but unspecified string.
+       */
+      basic_string&
+      assign(basic_string&& __str)
+      {
+	this->swap(__str);
+	return *this;
+      }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Set value to a substring of a string.
+       *  @param str  The string to use.
+       *  @param pos  Index of the first character of str.
+       *  @param n  Number of characters to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range if @a pos is not a valid index.
+       *
+       *  This function sets this string to the substring of @a str consisting
+       *  of @a n characters at @a pos.  If @a n is is larger than the number
+       *  of available characters in @a str, the remainder of @a str is used.
+       */
+      basic_string&
+      assign(const basic_string& __str, size_type __pos, size_type __n)
+      { return this->assign(__str._M_data()
+			    + __str._M_check(__pos, "basic_string::assign"),
+			    __str._M_limit(__pos, __n)); }
+
+      /**
+       *  @brief  Set value to a C substring.
+       *  @param s  The C string to use.
+       *  @param n  Number of characters to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to the first @a n
+       *  characters of @a s.  If @a n is is larger than the number of
+       *  available characters in @a s, the remainder of @a s is used.
+       */
+      basic_string&
+      assign(const _CharT* __s, size_type __n);
+
+      /**
+       *  @brief  Set value to contents of a C string.
+       *  @param s  The C string to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to the value of @a s.
+       *  The data is copied, so there is no dependence on @a s once the
+       *  function returns.
+       */
+      basic_string&
+      assign(const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->assign(__s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Set value to multiple characters.
+       *  @param n  Length of the resulting string.
+       *  @param c  The character to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to @a n copies of
+       *  character @a c.
+       */
+      basic_string&
+      assign(size_type __n, _CharT __c)
+      { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
+
+      /**
+       *  @brief  Set value to a range of characters.
+       *  @param first  Iterator referencing the first character to append.
+       *  @param last  Iterator marking the end of the range.
+       *  @return  Reference to this string.
+       *
+       *  Sets value of string to characters in the range [first,last).
+      */
+      template<class _InputIterator>
+        basic_string&
+        assign(_InputIterator __first, _InputIterator __last)
+        { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Set value to an initializer_list of characters.
+       *  @param l  The initializer_list of characters to assign.
+       *  @return  Reference to this string.
+       */
+      basic_string&
+      assign(initializer_list<_CharT> __l)
+      { return this->assign(__l.begin(), __l.size()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Insert multiple characters.
+       *  @param p  Iterator referencing location in string to insert at.
+       *  @param n  Number of characters to insert
+       *  @param c  The character to insert.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts @a n copies of character @a c starting at the position
+       *  referenced by iterator @a p.  If adding characters causes the length
+       *  to exceed max_size(), length_error is thrown.  The value of the
+       *  string doesn't change if an error is thrown.
+      */
+      void
+      insert(iterator __p, size_type __n, _CharT __c)
+      {	this->replace(__p, __p, __n, __c);  }
+
+      /**
+       *  @brief  Insert a range of characters.
+       *  @param p  Iterator referencing location in string to insert at.
+       *  @param beg  Start of range.
+       *  @param end  End of range.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts characters in range [beg,end).  If adding characters causes
+       *  the length to exceed max_size(), length_error is thrown.  The value
+       *  of the string doesn't change if an error is thrown.
+      */
+      template<class _InputIterator>
+        void
+        insert(iterator __p, _InputIterator __beg, _InputIterator __end)
+        { this->replace(__p, __p, __beg, __end); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Insert an initializer_list of characters.
+       *  @param p  Iterator referencing location in string to insert at.
+       *  @param l  The initializer_list of characters to insert.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       */
+      void
+      insert(iterator __p, initializer_list<_CharT> __l)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
+	this->insert(__p - _M_ibegin(), __l.begin(), __l.size());
+      }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Insert value of a string.
+       *  @param pos1  Iterator referencing location in string to insert at.
+       *  @param str  The string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts value of @a str starting at @a pos1.  If adding characters
+       *  causes the length to exceed max_size(), length_error is thrown.  The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      basic_string&
+      insert(size_type __pos1, const basic_string& __str)
+      { return this->insert(__pos1, __str, size_type(0), __str.size()); }
+
+      /**
+       *  @brief  Insert a substring.
+       *  @param pos1  Iterator referencing location in string to insert at.
+       *  @param str  The string to insert.
+       *  @param pos2  Start of characters in str to insert.
+       *  @param n  Number of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a pos1 > size() or
+       *  @a pos2 > @a str.size().
+       *
+       *  Starting at @a pos1, insert @a n character of @a str beginning with
+       *  @a pos2.  If adding characters causes the length to exceed
+       *  max_size(), length_error is thrown.  If @a pos1 is beyond the end of
+       *  this string or @a pos2 is beyond the end of @a str, out_of_range is
+       *  thrown.  The value of the string doesn't change if an error is
+       *  thrown.
+      */
+      basic_string&
+      insert(size_type __pos1, const basic_string& __str,
+	     size_type __pos2, size_type __n)
+      { return this->insert(__pos1, __str._M_data()
+			    + __str._M_check(__pos2, "basic_string::insert"),
+			    __str._M_limit(__pos2, __n)); }
+
+      /**
+       *  @brief  Insert a C substring.
+       *  @param pos  Iterator referencing location in string to insert at.
+       *  @param s  The C string to insert.
+       *  @param n  The number of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts the first @a n characters of @a s starting at @a pos.  If
+       *  adding characters causes the length to exceed max_size(),
+       *  length_error is thrown.  If @a pos is beyond end(), out_of_range is
+       *  thrown.  The value of the string doesn't change if an error is
+       *  thrown.
+      */
+      basic_string&
+      insert(size_type __pos, const _CharT* __s, size_type __n);
+
+      /**
+       *  @brief  Insert a C string.
+       *  @param pos  Iterator referencing location in string to insert at.
+       *  @param s  The C string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts the first @a n characters of @a s starting at @a pos.  If
+       *  adding characters causes the length to exceed max_size(),
+       *  length_error is thrown.  If @a pos is beyond end(), out_of_range is
+       *  thrown.  The value of the string doesn't change if an error is
+       *  thrown.
+      */
+      basic_string&
+      insert(size_type __pos, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->insert(__pos, __s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Insert multiple characters.
+       *  @param pos  Index in string to insert at.
+       *  @param n  Number of characters to insert
+       *  @param c  The character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts @a n copies of character @a c starting at index @a pos.  If
+       *  adding characters causes the length to exceed max_size(),
+       *  length_error is thrown.  If @a pos > length(), out_of_range is
+       *  thrown.  The value of the string doesn't change if an error is
+       *  thrown.
+      */
+      basic_string&
+      insert(size_type __pos, size_type __n, _CharT __c)
+      { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
+			      size_type(0), __n, __c); }
+
+      /**
+       *  @brief  Insert one character.
+       *  @param p  Iterator referencing position in string to insert at.
+       *  @param c  The character to insert.
+       *  @return  Iterator referencing newly inserted char.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts character @a c at position referenced by @a p.  If adding
+       *  character causes the length to exceed max_size(), length_error is
+       *  thrown.  If @a p is beyond end of string, out_of_range is thrown.
+       *  The value of the string doesn't change if an error is thrown.
+      */
+      iterator
+      insert(iterator __p, _CharT __c)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
+	const size_type __pos = __p - _M_ibegin();
+	_M_replace_aux(__pos, size_type(0), size_type(1), __c);
+	_M_rep()->_M_set_leaked();
+	return iterator(_M_data() + __pos);
+      }
+
+      /**
+       *  @brief  Remove characters.
+       *  @param pos  Index of first character to remove (default 0).
+       *  @param n  Number of characters to remove (default remainder).
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos is beyond the end of this
+       *  string.
+       *
+       *  Removes @a n characters from this string starting at @a pos.  The
+       *  length of the string is reduced by @a n.  If there are < @a n
+       *  characters to remove, the remainder of the string is truncated.  If
+       *  @a p is beyond end of string, out_of_range is thrown.  The value of
+       *  the string doesn't change if an error is thrown.
+      */
+      basic_string&
+      erase(size_type __pos = 0, size_type __n = npos)
+      { 
+	_M_mutate(_M_check(__pos, "basic_string::erase"),
+		  _M_limit(__pos, __n), size_type(0));
+	return *this;
+      }
+
+      /**
+       *  @brief  Remove one character.
+       *  @param position  Iterator referencing the character to remove.
+       *  @return  iterator referencing same location after removal.
+       *
+       *  Removes the character at @a position from this string. The value
+       *  of the string doesn't change if an error is thrown.
+      */
+      iterator
+      erase(iterator __position)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
+				 && __position < _M_iend());
+	const size_type __pos = __position - _M_ibegin();
+	_M_mutate(__pos, size_type(1), size_type(0));
+	_M_rep()->_M_set_leaked();
+	return iterator(_M_data() + __pos);
+      }
+
+      /**
+       *  @brief  Remove a range of characters.
+       *  @param first  Iterator referencing the first character to remove.
+       *  @param last  Iterator referencing the end of the range.
+       *  @return  Iterator referencing location of first after removal.
+       *
+       *  Removes the characters in the range [first,last) from this string.
+       *  The value of the string doesn't change if an error is thrown.
+      */
+      iterator
+      erase(iterator __first, iterator __last);
+ 
+      /**
+       *  @brief  Replace characters with value from another string.
+       *  @param pos  Index of first character to replace.
+       *  @param n  Number of characters to be replaced.
+       *  @param str  String to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos is beyond the end of this
+       *  string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos+n) from this string.
+       *  In place, the value of @a str is inserted.  If @a pos is beyond end
+       *  of string, out_of_range is thrown.  If the length of the result
+       *  exceeds max_size(), length_error is thrown.  The value of the string
+       *  doesn't change if an error is thrown.
+      */
+      basic_string&
+      replace(size_type __pos, size_type __n, const basic_string& __str)
+      { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Replace characters with value from another string.
+       *  @param pos1  Index of first character to replace.
+       *  @param n1  Number of characters to be replaced.
+       *  @param str  String to insert.
+       *  @param pos2  Index of first character of str to use.
+       *  @param n2  Number of characters from str to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos1 > size() or @a pos2 >
+       *  str.size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos1,pos1 + n) from this
+       *  string.  In place, the value of @a str is inserted.  If @a pos is
+       *  beyond end of string, out_of_range is thrown.  If the length of the
+       *  result exceeds max_size(), length_error is thrown.  The value of the
+       *  string doesn't change if an error is thrown.
+      */
+      basic_string&
+      replace(size_type __pos1, size_type __n1, const basic_string& __str,
+	      size_type __pos2, size_type __n2)
+      { return this->replace(__pos1, __n1, __str._M_data()
+			     + __str._M_check(__pos2, "basic_string::replace"),
+			     __str._M_limit(__pos2, __n2)); }
+
+      /**
+       *  @brief  Replace characters with value of a C substring.
+       *  @param pos  Index of first character to replace.
+       *  @param n1  Number of characters to be replaced.
+       *  @param s  C string to insert.
+       *  @param n2  Number of characters from @a s to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos1 > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this string.
+       *  In place, the first @a n2 characters of @a s are inserted, or all
+       *  of @a s if @a n2 is too large.  If @a pos is beyond end of string,
+       *  out_of_range is thrown.  If the length of result exceeds max_size(),
+       *  length_error is thrown.  The value of the string doesn't change if
+       *  an error is thrown.
+      */
+      basic_string&
+      replace(size_type __pos, size_type __n1, const _CharT* __s,
+	      size_type __n2);
+
+      /**
+       *  @brief  Replace characters with value of a C string.
+       *  @param pos  Index of first character to replace.
+       *  @param n1  Number of characters to be replaced.
+       *  @param s  C string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this string.
+       *  In place, the characters of @a s are inserted.  If @a pos is beyond
+       *  end of string, out_of_range is thrown.  If the length of result
+       *  exceeds max_size(), length_error is thrown.  The value of the string
+       *  doesn't change if an error is thrown.
+      */
+      basic_string&
+      replace(size_type __pos, size_type __n1, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->replace(__pos, __n1, __s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Replace characters with multiple characters.
+       *  @param pos  Index of first character to replace.
+       *  @param n1  Number of characters to be replaced.
+       *  @param n2  Number of characters to insert.
+       *  @param c  Character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a pos > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this string.
+       *  In place, @a n2 copies of @a c are inserted.  If @a pos is beyond
+       *  end of string, out_of_range is thrown.  If the length of result
+       *  exceeds max_size(), length_error is thrown.  The value of the string
+       *  doesn't change if an error is thrown.
+      */
+      basic_string&
+      replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
+      { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
+			      _M_limit(__pos, __n1), __n2, __c); }
+
+      /**
+       *  @brief  Replace range of characters with string.
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param str  String value to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the value of
+       *  @a str is inserted.  If the length of result exceeds max_size(),
+       *  length_error is thrown.  The value of the string doesn't change if
+       *  an error is thrown.
+      */
+      basic_string&
+      replace(iterator __i1, iterator __i2, const basic_string& __str)
+      { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Replace range of characters with C substring.
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param s  C string value to insert.
+       *  @param n  Number of characters from s to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the first @a
+       *  n characters of @a s are inserted.  If the length of result exceeds
+       *  max_size(), length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      basic_string&
+      replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
+      }
+
+      /**
+       *  @brief  Replace range of characters with C string.
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param s  C string value to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the
+       *  characters of @a s are inserted.  If the length of result exceeds
+       *  max_size(), length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      basic_string&
+      replace(iterator __i1, iterator __i2, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->replace(__i1, __i2, __s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Replace range of characters with multiple characters
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param n  Number of characters to insert.
+       *  @param c  Character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, @a n copies
+       *  of @a c are inserted.  If the length of result exceeds max_size(),
+       *  length_error is thrown.  The value of the string doesn't change if
+       *  an error is thrown.
+      */
+      basic_string&
+      replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
+      }
+
+      /**
+       *  @brief  Replace range of characters with range.
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param k1  Iterator referencing start of range to insert.
+       *  @param k2  Iterator referencing end of range to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, characters
+       *  in the range [k1,k2) are inserted.  If the length of result exceeds
+       *  max_size(), length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      template<class _InputIterator>
+        basic_string&
+        replace(iterator __i1, iterator __i2,
+		_InputIterator __k1, _InputIterator __k2)
+        {
+	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				   && __i2 <= _M_iend());
+	  __glibcxx_requires_valid_range(__k1, __k2);
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
+	}
+
+      // Specializations for the common case of pointer and iterator:
+      // useful to avoid the overhead of temporary buffering in _M_replace.
+      basic_string&
+      replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1, __k2 - __k1);
+      }
+
+      basic_string&
+      replace(iterator __i1, iterator __i2,
+	      const _CharT* __k1, const _CharT* __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1, __k2 - __k1);
+      }
+
+      basic_string&
+      replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1.base(), __k2 - __k1);
+      }
+
+      basic_string&
+      replace(iterator __i1, iterator __i2,
+	      const_iterator __k1, const_iterator __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1.base(), __k2 - __k1);
+      }
+      
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Replace range of characters with initializer_list.
+       *  @param i1  Iterator referencing start of range to replace.
+       *  @param i2  Iterator referencing end of range to replace.
+       *  @param l  The initializer_list of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, characters
+       *  in the range [k1,k2) are inserted.  If the length of result exceeds
+       *  max_size(), length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      basic_string& replace(iterator __i1, iterator __i2,
+			    initializer_list<_CharT> __l)
+      { return this->replace(__i1, __i2, __l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    private:
+      template<class _Integer>
+	basic_string&
+	_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
+			    _Integer __val, __true_type)
+        { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
+
+      template<class _InputIterator>
+	basic_string&
+	_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+			    _InputIterator __k2, __false_type);
+
+      basic_string&
+      _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+		     _CharT __c);
+
+      basic_string&
+      _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+		      size_type __n2);
+
+      // _S_construct_aux is used to implement the 21.3.1 para 15 which
+      // requires special behaviour if _InIter is an integral type
+      template<class _InIterator>
+        static _CharT*
+        _S_construct_aux(_InIterator __beg, _InIterator __end,
+			 const _Alloc& __a, __false_type)
+	{
+          typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
+          return _S_construct(__beg, __end, __a, _Tag());
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<class _Integer>
+        static _CharT*
+        _S_construct_aux(_Integer __beg, _Integer __end,
+			 const _Alloc& __a, __true_type)
+        { return _S_construct_aux_2(static_cast<size_type>(__beg),
+				    __end, __a); }
+
+      static _CharT*
+      _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
+      { return _S_construct(__req, __c, __a); }
+
+      template<class _InIterator>
+        static _CharT*
+        _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
+	{
+	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
+	  return _S_construct_aux(__beg, __end, __a, _Integral());
+        }
+
+      // For Input Iterators, used in istreambuf_iterators, etc.
+      template<class _InIterator>
+        static _CharT*
+         _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		      input_iterator_tag);
+
+      // For forward_iterators up to random_access_iterators, used for
+      // string::iterator, _CharT*, etc.
+      template<class _FwdIterator>
+        static _CharT*
+        _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
+		     forward_iterator_tag);
+
+      static _CharT*
+      _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
+
+    public:
+
+      /**
+       *  @brief  Copy substring into C string.
+       *  @param s  C string to copy value into.
+       *  @param n  Number of characters to copy.
+       *  @param pos  Index of first character to copy.
+       *  @return  Number of characters actually copied
+       *  @throw  std::out_of_range  If pos > size().
+       *
+       *  Copies up to @a n characters starting at @a pos into the C string @a
+       *  s.  If @a pos is %greater than size(), out_of_range is thrown.
+      */
+      size_type
+      copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Swap contents with another string.
+       *  @param s  String to swap with.
+       *
+       *  Exchanges the contents of this string with that of @a s in constant
+       *  time.
+      */
+      void
+      swap(basic_string& __s);
+
+      // String operations:
+      /**
+       *  @brief  Return const pointer to null-terminated contents.
+       *
+       *  This is a handle to internal data.  Do not modify or dire things may
+       *  happen.
+      */
+      const _CharT*
+      c_str() const
+      { return _M_data(); }
+
+      /**
+       *  @brief  Return const pointer to contents.
+       *
+       *  This is a handle to internal data.  Do not modify or dire things may
+       *  happen.
+      */
+      const _CharT*
+      data() const
+      { return _M_data(); }
+
+      /**
+       *  @brief  Return copy of allocator used to construct this string.
+      */
+      allocator_type
+      get_allocator() const
+      { return _M_dataplus; }
+
+      /**
+       *  @brief  Find position of a C substring.
+       *  @param s  C string to locate.
+       *  @param pos  Index of character to search from.
+       *  @param n  Number of characters from @a s to search for.
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for the first @a n characters
+       *  in @a s within this string.  If found, returns the index where it
+       *  begins.  If not found, returns npos.
+      */
+      size_type
+      find(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find position of a string.
+       *  @param str  String to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for value of @a str within
+       *  this string.  If found, returns the index where it begins.  If not
+       *  found, returns npos.
+      */
+      size_type
+      find(const basic_string& __str, size_type __pos = 0) const
+      { return this->find(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a C string.
+       *  @param s  C string to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for the value of @a s within
+       *  this string.  If found, returns the index where it begins.  If not
+       *  found, returns npos.
+      */
+      size_type
+      find(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a character.
+       *  @param c  Character to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for @a c within this string.
+       *  If found, returns the index where it was found.  If not found,
+       *  returns npos.
+      */
+      size_type
+      find(_CharT __c, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Find last position of a string.
+       *  @param str  String to locate.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of start of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for value of @a str within
+       *  this string.  If found, returns the index where it begins.  If not
+       *  found, returns npos.
+      */
+      size_type
+      rfind(const basic_string& __str, size_type __pos = npos) const
+      { return this->rfind(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a C substring.
+       *  @param s  C string to locate.
+       *  @param pos  Index of character to search back from.
+       *  @param n  Number of characters from s to search for.
+       *  @return  Index of start of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for the first @a n
+       *  characters in @a s within this string.  If found, returns the index
+       *  where it begins.  If not found, returns npos.
+      */
+      size_type
+      rfind(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find last position of a C string.
+       *  @param s  C string to locate.
+       *  @param pos  Index of character to start search at (default end).
+       *  @return  Index of start of  last occurrence.
+       *
+       *  Starting from @a pos, searches backward for the value of @a s within
+       *  this string.  If found, returns the index where it begins.  If not
+       *  found, returns npos.
+      */
+      size_type
+      rfind(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->rfind(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a character.
+       *  @param c  Character to locate.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for @a c within this string.
+       *  If found, returns the index where it was found.  If not found,
+       *  returns npos.
+      */
+      size_type
+      rfind(_CharT __c, size_type __pos = npos) const;
+
+      /**
+       *  @brief  Find position of a character of string.
+       *  @param str  String containing characters to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for one of the characters of
+       *  @a str within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_first_of(const basic_string& __str, size_type __pos = 0) const
+      { return this->find_first_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a character of C substring.
+       *  @param s  String containing characters to locate.
+       *  @param pos  Index of character to search from.
+       *  @param n  Number of characters from s to search for.
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for one of the first @a n
+       *  characters of @a s within this string.  If found, returns the index
+       *  where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find position of a character of C string.
+       *  @param s  String containing characters to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for one of the characters of
+       *  @a s within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_first_of(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_first_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a character.
+       *  @param c  Character to locate.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for the character @a c within
+       *  this string.  If found, returns the index where it was found.  If
+       *  not found, returns npos.
+       *
+       *  Note: equivalent to find(c, pos).
+      */
+      size_type
+      find_first_of(_CharT __c, size_type __pos = 0) const
+      { return this->find(__c, __pos); }
+
+      /**
+       *  @brief  Find last position of a character of string.
+       *  @param str  String containing characters to locate.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for one of the characters of
+       *  @a str within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_last_of(const basic_string& __str, size_type __pos = npos) const
+      { return this->find_last_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a character of C substring.
+       *  @param s  C string containing characters to locate.
+       *  @param pos  Index of character to search back from.
+       *  @param n  Number of characters from s to search for.
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for one of the first @a n
+       *  characters of @a s within this string.  If found, returns the index
+       *  where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find last position of a character of C string.
+       *  @param s  C string containing characters to locate.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for one of the characters of
+       *  @a s within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_last_of(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_last_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a character.
+       *  @param c  Character to locate.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for @a c within this string.
+       *  If found, returns the index where it was found.  If not found,
+       *  returns npos.
+       *
+       *  Note: equivalent to rfind(c, pos).
+      */
+      size_type
+      find_last_of(_CharT __c, size_type __pos = npos) const
+      { return this->rfind(__c, __pos); }
+
+      /**
+       *  @brief  Find position of a character not in string.
+       *  @param str  String containing characters to avoid.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for a character not contained
+       *  in @a str within this string.  If found, returns the index where it
+       *  was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const basic_string& __str, size_type __pos = 0) const
+      { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a character not in C substring.
+       *  @param s  C string containing characters to avoid.
+       *  @param pos  Index of character to search from.
+       *  @param n  Number of characters from s to consider.
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for a character not contained
+       *  in the first @a n characters of @a s within this string.  If found,
+       *  returns the index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const _CharT* __s, size_type __pos,
+			size_type __n) const;
+
+      /**
+       *  @brief  Find position of a character not in C string.
+       *  @param s  C string containing characters to avoid.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for a character not contained
+       *  in @a s within this string.  If found, returns the index where it
+       *  was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_first_not_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a different character.
+       *  @param c  Character to avoid.
+       *  @param pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a pos, searches forward for a character other than @a c
+       *  within this string.  If found, returns the index where it was found.
+       *  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(_CharT __c, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Find last position of a character not in string.
+       *  @param str  String containing characters to avoid.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for a character not
+       *  contained in @a str within this string.  If found, returns the index
+       *  where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_not_of(const basic_string& __str, size_type __pos = npos) const
+      { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a character not in C substring.
+       *  @param s  C string containing characters to avoid.
+       *  @param pos  Index of character to search back from.
+       *  @param n  Number of characters from s to consider.
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for a character not
+       *  contained in the first @a n characters of @a s within this string.
+       *  If found, returns the index where it was found.  If not found,
+       *  returns npos.
+      */
+      size_type
+      find_last_not_of(const _CharT* __s, size_type __pos,
+		       size_type __n) const;
+      /**
+       *  @brief  Find last position of a character not in C string.
+       *  @param s  C string containing characters to avoid.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for a character not
+       *  contained in @a s within this string.  If found, returns the index
+       *  where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_not_of(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_last_not_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a different character.
+       *  @param c  Character to avoid.
+       *  @param pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a pos, searches backward for a character other than
+       *  @a c within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_last_not_of(_CharT __c, size_type __pos = npos) const;
+
+      /**
+       *  @brief  Get a substring.
+       *  @param pos  Index of first character (default 0).
+       *  @param n  Number of characters in substring (default remainder).
+       *  @return  The new string.
+       *  @throw  std::out_of_range  If pos > size().
+       *
+       *  Construct and return a new string using the @a n characters starting
+       *  at @a pos.  If the string is too short, use the remainder of the
+       *  characters.  If @a pos is beyond the end of the string, out_of_range
+       *  is thrown.
+      */
+      basic_string
+      substr(size_type __pos = 0, size_type __n = npos) const
+      { return basic_string(*this,
+			    _M_check(__pos, "basic_string::substr"), __n); }
+
+      /**
+       *  @brief  Compare to a string.
+       *  @param str  String to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Returns an integer < 0 if this string is ordered before @a str, 0 if
+       *  their values are equivalent, or > 0 if this string is ordered after
+       *  @a str.  Determines the effective length rlen of the strings to
+       *  compare as the smallest of size() and str.size().  The function
+       *  then compares the two strings by calling traits::compare(data(),
+       *  str.data(),rlen).  If the result of the comparison is nonzero returns
+       *  it, otherwise the shorter one is ordered first.
+      */
+      int
+      compare(const basic_string& __str) const
+      {
+	const size_type __size = this->size();
+	const size_type __osize = __str.size();
+	const size_type __len = std::min(__size, __osize);
+
+	int __r = traits_type::compare(_M_data(), __str.data(), __len);
+	if (!__r)
+	  __r = _S_compare(__size, __osize);
+	return __r;
+      }
+
+      /**
+       *  @brief  Compare substring to a string.
+       *  @param pos  Index of first character of substring.
+       *  @param n  Number of characters in substring.
+       *  @param str  String to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a n characters starting
+       *  at @a pos.  Returns an integer < 0 if the substring is ordered
+       *  before @a str, 0 if their values are equivalent, or > 0 if the
+       *  substring is ordered after @a str.  Determines the effective length
+       *  rlen of the strings to compare as the smallest of the length of the
+       *  substring and @a str.size().  The function then compares the two
+       *  strings by calling traits::compare(substring.data(),str.data(),rlen).
+       *  If the result of the comparison is nonzero returns it, otherwise the
+       *  shorter one is ordered first.
+      */
+      int
+      compare(size_type __pos, size_type __n, const basic_string& __str) const;
+
+      /**
+       *  @brief  Compare substring to a substring.
+       *  @param pos1  Index of first character of substring.
+       *  @param n1  Number of characters in substring.
+       *  @param str  String to compare against.
+       *  @param pos2  Index of first character of substring of str.
+       *  @param n2  Number of characters in substring of str.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a n1 characters starting
+       *  at @a pos1.  Form the substring of @a str from the @a n2 characters
+       *  starting at @a pos2.  Returns an integer < 0 if this substring is
+       *  ordered before the substring of @a str, 0 if their values are
+       *  equivalent, or > 0 if this substring is ordered after the substring
+       *  of @a str.  Determines the effective length rlen of the strings
+       *  to compare as the smallest of the lengths of the substrings.  The
+       *  function then compares the two strings by calling
+       *  traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen).
+       *  If the result of the comparison is nonzero returns it, otherwise the
+       *  shorter one is ordered first.
+      */
+      int
+      compare(size_type __pos1, size_type __n1, const basic_string& __str,
+	      size_type __pos2, size_type __n2) const;
+
+      /**
+       *  @brief  Compare to a C string.
+       *  @param s  C string to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Returns an integer < 0 if this string is ordered before @a s, 0 if
+       *  their values are equivalent, or > 0 if this string is ordered after
+       *  @a s.  Determines the effective length rlen of the strings to
+       *  compare as the smallest of size() and the length of a string
+       *  constructed from @a s.  The function then compares the two strings
+       *  by calling traits::compare(data(),s,rlen).  If the result of the
+       *  comparison is nonzero returns it, otherwise the shorter one is
+       *  ordered first.
+      */
+      int
+      compare(const _CharT* __s) const;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 5 String::compare specification questionable
+      /**
+       *  @brief  Compare substring to a C string.
+       *  @param pos  Index of first character of substring.
+       *  @param n1  Number of characters in substring.
+       *  @param s  C string to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a n1 characters starting
+       *  at @a pos.  Returns an integer < 0 if the substring is ordered
+       *  before @a s, 0 if their values are equivalent, or > 0 if the
+       *  substring is ordered after @a s.  Determines the effective length
+       *  rlen of the strings to compare as the smallest of the length of the 
+       *  substring and the length of a string constructed from @a s.  The
+       *  function then compares the two string by calling
+       *  traits::compare(substring.data(),s,rlen).  If the result of the
+       *  comparison is nonzero returns it, otherwise the shorter one is
+       *  ordered first.
+      */
+      int
+      compare(size_type __pos, size_type __n1, const _CharT* __s) const;
+
+      /**
+       *  @brief  Compare substring against a character %array.
+       *  @param pos1  Index of first character of substring.
+       *  @param n1  Number of characters in substring.
+       *  @param s  character %array to compare against.
+       *  @param n2  Number of characters of s.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a n1 characters starting
+       *  at @a pos1.  Form a string from the first @a n2 characters of @a s.
+       *  Returns an integer < 0 if this substring is ordered before the string
+       *  from @a s, 0 if their values are equivalent, or > 0 if this substring
+       *  is ordered after the string from @a s.   Determines the effective
+       *  length rlen of the strings to compare as the smallest of the length
+       *  of the substring and @a n2.  The function then compares the two
+       *  strings by calling traits::compare(substring.data(),s,rlen).  If the
+       *  result of the comparison is nonzero returns it, otherwise the shorter
+       *  one is ordered first.
+       *
+       *  NB: s must have at least n2 characters, '\\0' has
+       *  no special meaning.
+      */
+      int
+      compare(size_type __pos, size_type __n1, const _CharT* __s,
+	      size_type __n2) const;
+  };
+
+  // operator+
+  /**
+   *  @brief  Concatenate two strings.
+   *  @param lhs  First string.
+   *  @param rhs  Last string.
+   *  @return  New string with value of @a lhs followed by @a rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>
+    operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    {
+      basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  /**
+   *  @brief  Concatenate C string and string.
+   *  @param lhs  First string.
+   *  @param rhs  Last string.
+   *  @return  New string with value of @a lhs followed by @a rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT,_Traits,_Alloc>
+    operator+(const _CharT* __lhs,
+	      const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+
+  /**
+   *  @brief  Concatenate character and string.
+   *  @param lhs  First string.
+   *  @param rhs  Last string.
+   *  @return  New string with @a lhs followed by @a rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT,_Traits,_Alloc>
+    operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+
+  /**
+   *  @brief  Concatenate string and C string.
+   *  @param lhs  First string.
+   *  @param rhs  Last string.
+   *  @return  New string with @a lhs followed by @a rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	     const _CharT* __rhs)
+    {
+      basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  /**
+   *  @brief  Concatenate string and character.
+   *  @param lhs  First string.
+   *  @param rhs  Last string.
+   *  @return  New string with @a lhs followed by @a rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
+    {
+      typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;
+      typedef typename __string_type::size_type		__size_type;
+      __string_type __str(__lhs);
+      __str.append(__size_type(1), __rhs);
+      return __str;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return std::move(__lhs.append(__rhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
+    { return std::move(__rhs.insert(0, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
+	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
+    {
+      const auto __size = __lhs.size() + __rhs.size();
+      const bool __cond = (__size > __lhs.capacity()
+			   && __size <= __rhs.capacity());
+      return __cond ? std::move(__rhs.insert(0, __lhs))
+	            : std::move(__lhs.append(__rhs));
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(const _CharT* __lhs,
+	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
+    { return std::move(__rhs.insert(0, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(_CharT __lhs,
+	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
+    { return std::move(__rhs.insert(0, 1, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
+	      const _CharT* __rhs)
+    { return std::move(__lhs.append(__rhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_string<_CharT, _Traits, _Alloc>
+    operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
+	      _CharT __rhs)
+    { return std::move(__lhs.append(1, __rhs)); }
+#endif
+
+  // operator ==
+  /**
+   *  @brief  Test equivalence of two strings.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs.compare(@a rhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  template<typename _CharT>
+    inline
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
+    operator==(const basic_string<_CharT>& __lhs,
+	       const basic_string<_CharT>& __rhs)
+    { return (__lhs.size() == __rhs.size()
+	      && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
+						    __lhs.size())); }
+
+  /**
+   *  @brief  Test equivalence of C string and string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a rhs.compare(@a lhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator==(const _CharT* __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __rhs.compare(__lhs) == 0; }
+
+  /**
+   *  @brief  Test equivalence of string and C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs.compare(@a rhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  // operator !=
+  /**
+   *  @brief  Test difference of two strings.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs.compare(@a rhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   *  @brief  Test difference of C string and string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a rhs.compare(@a lhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator!=(const _CharT* __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   *  @brief  Test difference of string and C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs.compare(@a rhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const _CharT* __rhs)
+    { return !(__lhs == __rhs); }
+
+  // operator <
+  /**
+   *  @brief  Test if string precedes string.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs precedes @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   *  @brief  Test if string precedes C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs precedes @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      const _CharT* __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   *  @brief  Test if C string precedes string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a lhs precedes @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<(const _CharT* __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __rhs.compare(__lhs) > 0; }
+
+  // operator >
+  /**
+   *  @brief  Test if string follows string.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs follows @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   *  @brief  Test if string follows C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs follows @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	      const _CharT* __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   *  @brief  Test if C string follows string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a lhs follows @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>(const _CharT* __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __rhs.compare(__lhs) < 0; }
+
+  // operator <=
+  /**
+   *  @brief  Test if string doesn't follow string.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs doesn't follow @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   *  @brief  Test if string doesn't follow C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs doesn't follow @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   *  @brief  Test if C string doesn't follow string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a lhs doesn't follow @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator<=(const _CharT* __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __rhs.compare(__lhs) >= 0; }
+
+  // operator >=
+  /**
+   *  @brief  Test if string doesn't precede string.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *  @return  True if @a lhs doesn't precede @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   *  @brief  Test if string doesn't precede C string.
+   *  @param lhs  String.
+   *  @param rhs  C string.
+   *  @return  True if @a lhs doesn't precede @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   *  @brief  Test if C string doesn't precede string.
+   *  @param lhs  C string.
+   *  @param rhs  String.
+   *  @return  True if @a lhs doesn't precede @a rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline bool
+    operator>=(const _CharT* __lhs,
+	     const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { return __rhs.compare(__lhs) <= 0; }
+
+  /**
+   *  @brief  Swap contents of two strings.
+   *  @param lhs  First string.
+   *  @param rhs  Second string.
+   *
+   *  Exchanges the contents of @a lhs and @a rhs in constant time.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline void
+    swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
+	 basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+  /**
+   *  @brief  Read stream into a string.
+   *  @param is  Input stream.
+   *  @param str  Buffer to store into.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from @a is into @a str until whitespace is found, the
+   *  end of the stream is encountered, or str.max_size() is reached.  If
+   *  is.width() is non-zero, that is the limit on the number of characters
+   *  stored into @a str.  Any previous contents of @a str are erased.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __is,
+	       basic_string<_CharT, _Traits, _Alloc>& __str);
+
+  template<>
+    basic_istream<char>&
+    operator>>(basic_istream<char>& __is, basic_string<char>& __str);
+
+  /**
+   *  @brief  Write string to a stream.
+   *  @param os  Output stream.
+   *  @param str  String to write out.
+   *  @return  Reference to the output stream.
+   *
+   *  Output characters of @a str into os following the same rules as for
+   *  writing a C string.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __os,
+	       const basic_string<_CharT, _Traits, _Alloc>& __str)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 586. string inserter not a formatted function
+      return __ostream_insert(__os, __str.data(), __str.size());
+    }
+
+  /**
+   *  @brief  Read a line from stream into a string.
+   *  @param is  Input stream.
+   *  @param str  Buffer to store into.
+   *  @param delim  Character marking end of line.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from @a is into @a str until @a delim is found, the
+   *  end of the stream is encountered, or str.max_size() is reached.  If
+   *  is.width() is non-zero, that is the limit on the number of characters
+   *  stored into @a str.  Any previous contents of @a str are erased.  If @a
+   *  delim was encountered, it is extracted but not stored into @a str.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __is,
+	    basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
+
+  /**
+   *  @brief  Read a line from stream into a string.
+   *  @param is  Input stream.
+   *  @param str  Buffer to store into.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from is into @a str until '\n' is
+   *  found, the end of the stream is encountered, or str.max_size()
+   *  is reached.  If is.width() is non-zero, that is the limit on the
+   *  number of characters stored into @a str.  Any previous contents
+   *  of @a str are erased.  If end of line was encountered, it is
+   *  extracted but not stored into @a str.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    inline basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __is,
+	    basic_string<_CharT, _Traits, _Alloc>& __str)
+    { return getline(__is, __str, __is.widen('\n')); }
+
+  template<>
+    basic_istream<char>&
+    getline(basic_istream<char>& __in, basic_string<char>& __str,
+	    char __delim);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    basic_istream<wchar_t>&
+    getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
+	    wchar_t __delim);
+#endif  
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99) \
+     && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
+
+#include <ext/string_conversions.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 21.4 Numeric Conversions [string.conversions].
+  inline int
+  stoi(const string& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
+					__idx, __base); }
+
+  inline long
+  stol(const string& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long
+  stoul(const string& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(),
+			     __idx, __base); }
+
+  inline long long
+  stoll(const string& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long long
+  stoull(const string& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(),
+			     __idx, __base); }
+
+  // NB: strtof vs strtod.
+  inline float
+  stof(const string& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); }
+
+  inline double
+  stod(const string& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); }
+
+  inline long double
+  stold(const string& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); }
+
+  // NB: (v)snprintf vs sprintf.
+
+  // DR 1261.
+  inline string
+  to_string(int __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(int),
+					   "%d", __val); }
+
+  inline string
+  to_string(unsigned __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
+					   4 * sizeof(unsigned),
+					   "%u", __val); }
+
+  inline string
+  to_string(long __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(long),
+					   "%ld", __val); }
+
+  inline string
+  to_string(unsigned long __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
+					   4 * sizeof(unsigned long),
+					   "%lu", __val); }
+
+  inline string
+  to_string(long long __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
+					   4 * sizeof(long long),
+					   "%lld", __val); }
+
+  inline string
+  to_string(unsigned long long __val)
+  { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
+					   4 * sizeof(unsigned long long),
+					   "%llu", __val); }
+
+  inline string
+  to_string(float __val)
+  {
+    const int __n = 
+      __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
+					   "%f", __val);
+  }
+
+  inline string
+  to_string(double __val)
+  {
+    const int __n = 
+      __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
+					   "%f", __val);
+  }
+
+  inline string
+  to_string(long double __val)
+  {
+    const int __n = 
+      __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
+					   "%Lf", __val);
+  }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  inline int 
+  stoi(const wstring& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(),
+					__idx, __base); }
+
+  inline long 
+  stol(const wstring& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long
+  stoul(const wstring& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(),
+			     __idx, __base); }
+
+  inline long long
+  stoll(const wstring& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long long
+  stoull(const wstring& __str, size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(),
+			     __idx, __base); }
+
+  // NB: wcstof vs wcstod.
+  inline float
+  stof(const wstring& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); }
+
+  inline double
+  stod(const wstring& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); }
+
+  inline long double
+  stold(const wstring& __str, size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); }
+
+  // DR 1261.
+  inline wstring
+  to_wstring(int __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(int),
+					    L"%d", __val); }
+
+  inline wstring
+  to_wstring(unsigned __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
+					    4 * sizeof(unsigned),
+					    L"%u", __val); }
+
+  inline wstring
+  to_wstring(long __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(long),
+					    L"%ld", __val); }
+
+  inline wstring
+  to_wstring(unsigned long __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
+					    4 * sizeof(unsigned long),
+					    L"%lu", __val); }
+
+  inline wstring
+  to_wstring(long long __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
+					    4 * sizeof(long long),
+					    L"%lld", __val); }
+
+  inline wstring
+  to_wstring(unsigned long long __val)
+  { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
+					    4 * sizeof(unsigned long long),
+					    L"%llu", __val); }
+
+  inline wstring
+  to_wstring(float __val)
+  {
+    const int __n =
+      __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
+					    L"%f", __val);
+  }
+
+  inline wstring
+  to_wstring(double __val)
+  {
+    const int __n =
+      __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
+					    L"%f", __val);
+  }
+
+  inline wstring
+  to_wstring(long double __val)
+  {
+    const int __n =
+      __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
+					    L"%Lf", __val);
+  }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* __GXX_EXPERIMENTAL_CXX0X__ && _GLIBCXX_USE_C99 ... */
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // DR 1182.
+
+#ifndef _GLIBCXX_COMPATIBILITY_CXX0X
+  /// std::hash specialization for string.
+  template<>
+    struct hash<string>
+    : public __hash_base<size_t, string>
+    {
+      size_t
+      operator()(const string& __s) const
+      { return std::_Hash_impl::hash(__s.data(), __s.length()); }
+    };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// std::hash specialization for wstring.
+  template<>
+    struct hash<wstring>
+    : public __hash_base<size_t, wstring>
+    {
+      size_t
+      operator()(const wstring& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(wchar_t)); }
+    };
+#endif
+#endif /* _GLIBCXX_COMPATIBILITY_CXX0X */
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+  /// std::hash specialization for u16string.
+  template<>
+    struct hash<u16string>
+    : public __hash_base<size_t, u16string>
+    {
+      size_t
+      operator()(const u16string& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(char16_t)); }
+    };
+
+  /// std::hash specialization for u32string.
+  template<>
+    struct hash<u32string>
+    : public __hash_base<size_t, u32string>
+    {
+      size_t
+      operator()(const u32string& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(char32_t)); }
+    };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* __GXX_EXPERIMENTAL_CXX0X__ */
+
+#endif /* _BASIC_STRING_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.tcc
new file mode 100644
index 000000000..d98833427
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/basic_string.tcc
@@ -0,0 +1,1168 @@
+// Components for manipulating sequences of characters -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/basic_string.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{string}
+ */
+
+//
+// ISO C++ 14882: 21  Strings library
+//
+
+// Written by Jason Merrill based upon the specification by Takanori Adachi
+// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers to ISO-14882.
+
+#ifndef _BASIC_STRING_TCC
+#define _BASIC_STRING_TCC 1
+
+#pragma GCC system_header
+
+#include <bits/cxxabi_forced.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    const _CharT
+    basic_string<_CharT, _Traits, _Alloc>::
+    _Rep::_S_terminal = _CharT();
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::npos;
+
+  // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string)
+  // at static init time (before static ctors are run).
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
+    (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
+      sizeof(size_type)];
+
+  // NB: This is the special case for Input Iterators, used in
+  // istreambuf_iterators, etc.
+  // Input Iterators have a cost structure very different from
+  // pointers, calling for a different coding style.
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InIterator>
+      _CharT*
+      basic_string<_CharT, _Traits, _Alloc>::
+      _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		   input_iterator_tag)
+      {
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+	if (__beg == __end && __a == _Alloc())
+	  return _S_empty_rep()._M_refdata();
+#endif
+	// Avoid reallocation for common case.
+	_CharT __buf[128];
+	size_type __len = 0;
+	while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
+	  {
+	    __buf[__len++] = *__beg;
+	    ++__beg;
+	  }
+	_Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
+	_M_copy(__r->_M_refdata(), __buf, __len);
+	__try
+	  {
+	    while (__beg != __end)
+	      {
+		if (__len == __r->_M_capacity)
+		  {
+		    // Allocate more space.
+		    _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
+		    _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
+		    __r->_M_destroy(__a);
+		    __r = __another;
+		  }
+		__r->_M_refdata()[__len++] = *__beg;
+		++__beg;
+	      }
+	  }
+	__catch(...)
+	  {
+	    __r->_M_destroy(__a);
+	    __throw_exception_again;
+	  }
+	__r->_M_set_length_and_sharable(__len);
+	return __r->_M_refdata();
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template <typename _InIterator>
+      _CharT*
+      basic_string<_CharT, _Traits, _Alloc>::
+      _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		   forward_iterator_tag)
+      {
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+	if (__beg == __end && __a == _Alloc())
+	  return _S_empty_rep()._M_refdata();
+#endif
+	// NB: Not required, but considered best practice.
+	if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
+	  __throw_logic_error(__N("basic_string::_S_construct null not valid"));
+
+	const size_type __dnew = static_cast<size_type>(std::distance(__beg,
+								      __end));
+	// Check for out_of_range and length_error exceptions.
+	_Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
+	__try
+	  { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
+	__catch(...)
+	  {
+	    __r->_M_destroy(__a);
+	    __throw_exception_again;
+	  }
+	__r->_M_set_length_and_sharable(__dnew);
+	return __r->_M_refdata();
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _CharT*
+    basic_string<_CharT, _Traits, _Alloc>::
+    _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
+    {
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+      if (__n == 0 && __a == _Alloc())
+	return _S_empty_rep()._M_refdata();
+#endif
+      // Check for out_of_range and length_error exceptions.
+      _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
+      if (__n)
+	_M_assign(__r->_M_refdata(), __n, __c);
+
+      __r->_M_set_length_and_sharable(__n);
+      return __r->_M_refdata();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const basic_string& __str)
+    : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
+					  __str.get_allocator()),
+		  __str.get_allocator())
+    { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const _Alloc& __a)
+    : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
+    { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const basic_string& __str, size_type __pos, size_type __n)
+    : _M_dataplus(_S_construct(__str._M_data()
+			       + __str._M_check(__pos,
+						"basic_string::basic_string"),
+			       __str._M_data() + __str._M_limit(__pos, __n)
+			       + __pos, _Alloc()), _Alloc())
+    { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const basic_string& __str, size_type __pos,
+		 size_type __n, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__str._M_data()
+			       + __str._M_check(__pos,
+						"basic_string::basic_string"),
+			       __str._M_data() + __str._M_limit(__pos, __n)
+			       + __pos, __a), __a)
+    { }
+
+  // TBD: DPG annotate
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
+    { }
+
+  // TBD: DPG annotate
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(const _CharT* __s, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
+			       __s + npos, __a), __a)
+    { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(size_type __n, _CharT __c, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__n, __c, __a), __a)
+    { }
+
+  // TBD: DPG annotate
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InputIterator>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__beg, __end, __a), __a)
+    { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>::
+    basic_string(initializer_list<_CharT> __l, const _Alloc& __a)
+    : _M_dataplus(_S_construct(__l.begin(), __l.end(), __a), __a)
+    { }
+#endif
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    assign(const basic_string& __str)
+    {
+      if (_M_rep() != __str._M_rep())
+	{
+	  // XXX MT
+	  const allocator_type __a = this->get_allocator();
+	  _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
+	  _M_rep()->_M_dispose(__a);
+	  _M_data(__tmp);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    assign(const _CharT* __s, size_type __n)
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      _M_check_length(this->size(), __n, "basic_string::assign");
+      if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+	return _M_replace_safe(size_type(0), this->size(), __s, __n);
+      else
+	{
+	  // Work in-place.
+	  const size_type __pos = __s - _M_data();
+	  if (__pos >= __n)
+	    _M_copy(_M_data(), __s, __n);
+	  else if (__pos)
+	    _M_move(_M_data(), __s, __n);
+	  _M_rep()->_M_set_length_and_sharable(__n);
+	  return *this;
+	}
+     }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    append(size_type __n, _CharT __c)
+    {
+      if (__n)
+	{
+	  _M_check_length(size_type(0), __n, "basic_string::append");	  
+	  const size_type __len = __n + this->size();
+	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
+	    this->reserve(__len);
+	  _M_assign(_M_data() + this->size(), __n, __c);
+	  _M_rep()->_M_set_length_and_sharable(__len);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    append(const _CharT* __s, size_type __n)
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      if (__n)
+	{
+	  _M_check_length(size_type(0), __n, "basic_string::append");
+	  const size_type __len = __n + this->size();
+	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
+	    {
+	      if (_M_disjunct(__s))
+		this->reserve(__len);
+	      else
+		{
+		  const size_type __off = __s - _M_data();
+		  this->reserve(__len);
+		  __s = _M_data() + __off;
+		}
+	    }
+	  _M_copy(_M_data() + this->size(), __s, __n);
+	  _M_rep()->_M_set_length_and_sharable(__len);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    append(const basic_string& __str)
+    {
+      const size_type __size = __str.size();
+      if (__size)
+	{
+	  const size_type __len = __size + this->size();
+	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
+	    this->reserve(__len);
+	  _M_copy(_M_data() + this->size(), __str._M_data(), __size);
+	  _M_rep()->_M_set_length_and_sharable(__len);
+	}
+      return *this;
+    }    
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    append(const basic_string& __str, size_type __pos, size_type __n)
+    {
+      __str._M_check(__pos, "basic_string::append");
+      __n = __str._M_limit(__pos, __n);
+      if (__n)
+	{
+	  const size_type __len = __n + this->size();
+	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
+	    this->reserve(__len);
+	  _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
+	  _M_rep()->_M_set_length_and_sharable(__len);	  
+	}
+      return *this;
+    }
+
+   template<typename _CharT, typename _Traits, typename _Alloc>
+     basic_string<_CharT, _Traits, _Alloc>&
+     basic_string<_CharT, _Traits, _Alloc>::
+     insert(size_type __pos, const _CharT* __s, size_type __n)
+     {
+       __glibcxx_requires_string_len(__s, __n);
+       _M_check(__pos, "basic_string::insert");
+       _M_check_length(size_type(0), __n, "basic_string::insert");
+       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+         return _M_replace_safe(__pos, size_type(0), __s, __n);
+       else
+         {
+           // Work in-place.
+           const size_type __off = __s - _M_data();
+           _M_mutate(__pos, 0, __n);
+           __s = _M_data() + __off;
+           _CharT* __p = _M_data() + __pos;
+           if (__s  + __n <= __p)
+             _M_copy(__p, __s, __n);
+           else if (__s >= __p)
+             _M_copy(__p, __s + __n, __n);
+           else
+             {
+	       const size_type __nleft = __p - __s;
+               _M_copy(__p, __s, __nleft);
+               _M_copy(__p + __nleft, __p + __n, __n - __nleft);
+             }
+           return *this;
+         }
+     }
+
+   template<typename _CharT, typename _Traits, typename _Alloc>
+     typename basic_string<_CharT, _Traits, _Alloc>::iterator
+     basic_string<_CharT, _Traits, _Alloc>::
+     erase(iterator __first, iterator __last)
+     {
+       _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
+				&& __last <= _M_iend());
+
+       // NB: This isn't just an optimization (bail out early when
+       // there is nothing to do, really), it's also a correctness
+       // issue vs MT, see libstdc++/40518.
+       const size_type __size = __last - __first;
+       if (__size)
+	 {
+	   const size_type __pos = __first - _M_ibegin();
+	   _M_mutate(__pos, __size, size_type(0));
+	   _M_rep()->_M_set_leaked();
+	   return iterator(_M_data() + __pos);
+	 }
+       else
+	 return __first;
+     }
+
+   template<typename _CharT, typename _Traits, typename _Alloc>
+     basic_string<_CharT, _Traits, _Alloc>&
+     basic_string<_CharT, _Traits, _Alloc>::
+     replace(size_type __pos, size_type __n1, const _CharT* __s,
+	     size_type __n2)
+     {
+       __glibcxx_requires_string_len(__s, __n2);
+       _M_check(__pos, "basic_string::replace");
+       __n1 = _M_limit(__pos, __n1);
+       _M_check_length(__n1, __n2, "basic_string::replace");
+       bool __left;
+       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+         return _M_replace_safe(__pos, __n1, __s, __n2);
+       else if ((__left = __s + __n2 <= _M_data() + __pos)
+		|| _M_data() + __pos + __n1 <= __s)
+	 {
+	   // Work in-place: non-overlapping case.
+	   size_type __off = __s - _M_data();
+	   __left ? __off : (__off += __n2 - __n1);
+	   _M_mutate(__pos, __n1, __n2);
+	   _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
+	   return *this;
+	 }
+       else
+	 {
+	   // Todo: overlapping case.
+	   const basic_string __tmp(__s, __n2);
+	   return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
+	 }
+     }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::_Rep::
+    _M_destroy(const _Alloc& __a) throw ()
+    {
+      const size_type __size = sizeof(_Rep_base) +
+	                       (this->_M_capacity + 1) * sizeof(_CharT);
+      _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::
+    _M_leak_hard()
+    {
+#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
+      if (_M_rep() == &_S_empty_rep())
+	return;
+#endif
+      if (_M_rep()->_M_is_shared())
+	_M_mutate(0, 0, 0);
+      _M_rep()->_M_set_leaked();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::
+    _M_mutate(size_type __pos, size_type __len1, size_type __len2)
+    {
+      const size_type __old_size = this->size();
+      const size_type __new_size = __old_size + __len2 - __len1;
+      const size_type __how_much = __old_size - __pos - __len1;
+
+      if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
+	{
+	  // Must reallocate.
+	  const allocator_type __a = get_allocator();
+	  _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
+
+	  if (__pos)
+	    _M_copy(__r->_M_refdata(), _M_data(), __pos);
+	  if (__how_much)
+	    _M_copy(__r->_M_refdata() + __pos + __len2,
+		    _M_data() + __pos + __len1, __how_much);
+
+	  _M_rep()->_M_dispose(__a);
+	  _M_data(__r->_M_refdata());
+	}
+      else if (__how_much && __len1 != __len2)
+	{
+	  // Work in-place.
+	  _M_move(_M_data() + __pos + __len2,
+		  _M_data() + __pos + __len1, __how_much);
+	}
+      _M_rep()->_M_set_length_and_sharable(__new_size);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::
+    reserve(size_type __res)
+    {
+      if (__res != this->capacity() || _M_rep()->_M_is_shared())
+        {
+	  // Make sure we don't shrink below the current size
+	  if (__res < this->size())
+	    __res = this->size();
+	  const allocator_type __a = get_allocator();
+	  _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
+	  _M_rep()->_M_dispose(__a);
+	  _M_data(__tmp);
+        }
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::
+    swap(basic_string& __s)
+    {
+      if (_M_rep()->_M_is_leaked())
+	_M_rep()->_M_set_sharable();
+      if (__s._M_rep()->_M_is_leaked())
+	__s._M_rep()->_M_set_sharable();
+      if (this->get_allocator() == __s.get_allocator())
+	{
+	  _CharT* __tmp = _M_data();
+	  _M_data(__s._M_data());
+	  __s._M_data(__tmp);
+	}
+      // The code below can usually be optimized away.
+      else
+	{
+	  const basic_string __tmp1(_M_ibegin(), _M_iend(),
+				    __s.get_allocator());
+	  const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
+				    this->get_allocator());
+	  *this = __tmp2;
+	  __s = __tmp1;
+	}
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
+    basic_string<_CharT, _Traits, _Alloc>::_Rep::
+    _S_create(size_type __capacity, size_type __old_capacity,
+	      const _Alloc& __alloc)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 83.  String::npos vs. string::max_size()
+      if (__capacity > _S_max_size)
+	__throw_length_error(__N("basic_string::_S_create"));
+
+      // The standard places no restriction on allocating more memory
+      // than is strictly needed within this layer at the moment or as
+      // requested by an explicit application call to reserve().
+
+      // Many malloc implementations perform quite poorly when an
+      // application attempts to allocate memory in a stepwise fashion
+      // growing each allocation size by only 1 char.  Additionally,
+      // it makes little sense to allocate less linear memory than the
+      // natural blocking size of the malloc implementation.
+      // Unfortunately, we would need a somewhat low-level calculation
+      // with tuned parameters to get this perfect for any particular
+      // malloc implementation.  Fortunately, generalizations about
+      // common features seen among implementations seems to suffice.
+
+      // __pagesize need not match the actual VM page size for good
+      // results in practice, thus we pick a common value on the low
+      // side.  __malloc_header_size is an estimate of the amount of
+      // overhead per memory allocation (in practice seen N * sizeof
+      // (void*) where N is 0, 2 or 4).  According to folklore,
+      // picking this value on the high side is better than
+      // low-balling it (especially when this algorithm is used with
+      // malloc implementations that allocate memory blocks rounded up
+      // to a size which is a power of 2).
+      const size_type __pagesize = 4096;
+      const size_type __malloc_header_size = 4 * sizeof(void*);
+
+      // The below implements an exponential growth policy, necessary to
+      // meet amortized linear time requirements of the library: see
+      // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
+      // It's active for allocations requiring an amount of memory above
+      // system pagesize. This is consistent with the requirements of the
+      // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html
+      if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
+	__capacity = 2 * __old_capacity;
+
+      // NB: Need an array of char_type[__capacity], plus a terminating
+      // null char_type() element, plus enough for the _Rep data structure.
+      // Whew. Seemingly so needy, yet so elemental.
+      size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+
+      const size_type __adj_size = __size + __malloc_header_size;
+      if (__adj_size > __pagesize && __capacity > __old_capacity)
+	{
+	  const size_type __extra = __pagesize - __adj_size % __pagesize;
+	  __capacity += __extra / sizeof(_CharT);
+	  // Never allocate a string bigger than _S_max_size.
+	  if (__capacity > _S_max_size)
+	    __capacity = _S_max_size;
+	  __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+	}
+
+      // NB: Might throw, but no worries about a leak, mate: _Rep()
+      // does not throw.
+      void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
+      _Rep *__p = new (__place) _Rep;
+      __p->_M_capacity = __capacity;
+      // ABI compatibility - 3.4.x set in _S_create both
+      // _M_refcount and _M_length.  All callers of _S_create
+      // in basic_string.tcc then set just _M_length.
+      // In 4.0.x and later both _M_refcount and _M_length
+      // are initialized in the callers, unfortunately we can
+      // have 3.4.x compiled code with _S_create callers inlined
+      // calling 4.0.x+ _S_create.
+      __p->_M_set_sharable();
+      return __p;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _CharT*
+    basic_string<_CharT, _Traits, _Alloc>::_Rep::
+    _M_clone(const _Alloc& __alloc, size_type __res)
+    {
+      // Requested capacity of the clone.
+      const size_type __requested_cap = this->_M_length + __res;
+      _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
+				  __alloc);
+      if (this->_M_length)
+	_M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
+
+      __r->_M_set_length_and_sharable(this->_M_length);
+      return __r->_M_refdata();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    basic_string<_CharT, _Traits, _Alloc>::
+    resize(size_type __n, _CharT __c)
+    {
+      const size_type __size = this->size();
+      _M_check_length(__size, __n, "basic_string::resize");
+      if (__size < __n)
+	this->append(__n - __size, __c);
+      else if (__n < __size)
+	this->erase(__n);
+      // else nothing (in particular, avoid calling _M_mutate() unnecessarily.)
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InputIterator>
+      basic_string<_CharT, _Traits, _Alloc>&
+      basic_string<_CharT, _Traits, _Alloc>::
+      _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+			  _InputIterator __k2, __false_type)
+      {
+	const basic_string __s(__k1, __k2);
+	const size_type __n1 = __i2 - __i1;
+	_M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
+	return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
+			       __s.size());
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+		   _CharT __c)
+    {
+      _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
+      _M_mutate(__pos1, __n1, __n2);
+      if (__n2)
+	_M_assign(_M_data() + __pos1, __n2, __c);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>&
+    basic_string<_CharT, _Traits, _Alloc>::
+    _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+		    size_type __n2)
+    {
+      _M_mutate(__pos1, __n1, __n2);
+      if (__n2)
+	_M_copy(_M_data() + __pos1, __s, __n2);
+      return *this;
+    }
+   
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>
+    operator+(const _CharT* __lhs,
+	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    {
+      __glibcxx_requires_string(__lhs);
+      typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+      typedef typename __string_type::size_type	  __size_type;
+      const __size_type __len = _Traits::length(__lhs);
+      __string_type __str;
+      __str.reserve(__len + __rhs.size());
+      __str.append(__lhs, __len);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_string<_CharT, _Traits, _Alloc>
+    operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+    {
+      typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+      typedef typename __string_type::size_type	  __size_type;
+      __string_type __str;
+      const __size_type __len = __rhs.size();
+      __str.reserve(__len + 1);
+      __str.append(__size_type(1), __lhs);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    copy(_CharT* __s, size_type __n, size_type __pos) const
+    {
+      _M_check(__pos, "basic_string::copy");
+      __n = _M_limit(__pos, __n);
+      __glibcxx_requires_string_len(__s, __n);
+      if (__n)
+	_M_copy(__s, _M_data() + __pos, __n);
+      // 21.3.5.7 par 3: do not append null.  (good.)
+      return __n;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      const size_type __size = this->size();
+      const _CharT* __data = _M_data();
+
+      if (__n == 0)
+	return __pos <= __size ? __pos : npos;
+
+      if (__n <= __size)
+	{
+	  for (; __pos <= __size - __n; ++__pos)
+	    if (traits_type::eq(__data[__pos], __s[0])
+		&& traits_type::compare(__data + __pos + 1,
+					__s + 1, __n - 1) == 0)
+	      return __pos;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find(_CharT __c, size_type __pos) const
+    {
+      size_type __ret = npos;
+      const size_type __size = this->size();
+      if (__pos < __size)
+	{
+	  const _CharT* __data = _M_data();
+	  const size_type __n = __size - __pos;
+	  const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
+	  if (__p)
+	    __ret = __p - __data;
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    rfind(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      const size_type __size = this->size();
+      if (__n <= __size)
+	{
+	  __pos = std::min(size_type(__size - __n), __pos);
+	  const _CharT* __data = _M_data();
+	  do
+	    {
+	      if (traits_type::compare(__data + __pos, __s, __n) == 0)
+		return __pos;
+	    }
+	  while (__pos-- > 0);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    rfind(_CharT __c, size_type __pos) const
+    {
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  for (++__size; __size-- > 0; )
+	    if (traits_type::eq(_M_data()[__size], __c))
+	      return __size;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      for (; __n && __pos < this->size(); ++__pos)
+	{
+	  const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
+	  if (__p)
+	    return __pos;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      size_type __size = this->size();
+      if (__size && __n)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (traits_type::find(__s, __n, _M_data()[__size]))
+		return __size;
+	    }
+	  while (__size-- != 0);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      for (; __pos < this->size(); ++__pos)
+	if (!traits_type::find(__s, __n, _M_data()[__pos]))
+	  return __pos;
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_first_not_of(_CharT __c, size_type __pos) const
+    {
+      for (; __pos < this->size(); ++__pos)
+	if (!traits_type::eq(_M_data()[__pos], __c))
+	  return __pos;
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (!traits_type::find(__s, __n, _M_data()[__size]))
+		return __size;
+	    }
+	  while (__size--);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename basic_string<_CharT, _Traits, _Alloc>::size_type
+    basic_string<_CharT, _Traits, _Alloc>::
+    find_last_not_of(_CharT __c, size_type __pos) const
+    {
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (!traits_type::eq(_M_data()[__size], __c))
+		return __size;
+	    }
+	  while (__size--);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    int
+    basic_string<_CharT, _Traits, _Alloc>::
+    compare(size_type __pos, size_type __n, const basic_string& __str) const
+    {
+      _M_check(__pos, "basic_string::compare");
+      __n = _M_limit(__pos, __n);
+      const size_type __osize = __str.size();
+      const size_type __len = std::min(__n, __osize);
+      int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
+      if (!__r)
+	__r = _S_compare(__n, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    int
+    basic_string<_CharT, _Traits, _Alloc>::
+    compare(size_type __pos1, size_type __n1, const basic_string& __str,
+	    size_type __pos2, size_type __n2) const
+    {
+      _M_check(__pos1, "basic_string::compare");
+      __str._M_check(__pos2, "basic_string::compare");
+      __n1 = _M_limit(__pos1, __n1);
+      __n2 = __str._M_limit(__pos2, __n2);
+      const size_type __len = std::min(__n1, __n2);
+      int __r = traits_type::compare(_M_data() + __pos1,
+				     __str.data() + __pos2, __len);
+      if (!__r)
+	__r = _S_compare(__n1, __n2);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    int
+    basic_string<_CharT, _Traits, _Alloc>::
+    compare(const _CharT* __s) const
+    {
+      __glibcxx_requires_string(__s);
+      const size_type __size = this->size();
+      const size_type __osize = traits_type::length(__s);
+      const size_type __len = std::min(__size, __osize);
+      int __r = traits_type::compare(_M_data(), __s, __len);
+      if (!__r)
+	__r = _S_compare(__size, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    int
+    basic_string <_CharT, _Traits, _Alloc>::
+    compare(size_type __pos, size_type __n1, const _CharT* __s) const
+    {
+      __glibcxx_requires_string(__s);
+      _M_check(__pos, "basic_string::compare");
+      __n1 = _M_limit(__pos, __n1);
+      const size_type __osize = traits_type::length(__s);
+      const size_type __len = std::min(__n1, __osize);
+      int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+      if (!__r)
+	__r = _S_compare(__n1, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    int
+    basic_string <_CharT, _Traits, _Alloc>::
+    compare(size_type __pos, size_type __n1, const _CharT* __s,
+	    size_type __n2) const
+    {
+      __glibcxx_requires_string_len(__s, __n2);
+      _M_check(__pos, "basic_string::compare");
+      __n1 = _M_limit(__pos, __n1);
+      const size_type __len = std::min(__n1, __n2);
+      int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+      if (!__r)
+	__r = _S_compare(__n1, __n2);
+      return __r;
+    }
+
+  // 21.3.7.9 basic_string::getline and operators
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in,
+	       basic_string<_CharT, _Traits, _Alloc>& __str)
+    {
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;
+      typedef typename __istream_type::ios_base         __ios_base;
+      typedef typename __istream_type::int_type		__int_type;
+      typedef typename __string_type::size_type		__size_type;
+      typedef ctype<_CharT>				__ctype_type;
+      typedef typename __ctype_type::ctype_base         __ctype_base;
+
+      __size_type __extracted = 0;
+      typename __ios_base::iostate __err = __ios_base::goodbit;
+      typename __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      // Avoid reallocation for common case.
+	      __str.erase();
+	      _CharT __buf[128];
+	      __size_type __len = 0;	      
+	      const streamsize __w = __in.width();
+	      const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
+		                              : __str.max_size();
+	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+	      const __int_type __eof = _Traits::eof();
+	      __int_type __c = __in.rdbuf()->sgetc();
+
+	      while (__extracted < __n
+		     && !_Traits::eq_int_type(__c, __eof)
+		     && !__ct.is(__ctype_base::space,
+				 _Traits::to_char_type(__c)))
+		{
+		  if (__len == sizeof(__buf) / sizeof(_CharT))
+		    {
+		      __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
+		      __len = 0;
+		    }
+		  __buf[__len++] = _Traits::to_char_type(__c);
+		  ++__extracted;
+		  __c = __in.rdbuf()->snextc();
+		}
+	      __str.append(__buf, __len);
+
+	      if (_Traits::eq_int_type(__c, __eof))
+		__err |= __ios_base::eofbit;
+	      __in.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(__ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(__ios_base::badbit);
+	    }
+	}
+      // 211.  operator>>(istream&, string&) doesn't set failbit
+      if (!__extracted)
+	__err |= __ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __in,
+	    basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
+    {
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;
+      typedef typename __istream_type::ios_base         __ios_base;
+      typedef typename __istream_type::int_type		__int_type;
+      typedef typename __string_type::size_type		__size_type;
+
+      __size_type __extracted = 0;
+      const __size_type __n = __str.max_size();
+      typename __ios_base::iostate __err = __ios_base::goodbit;
+      typename __istream_type::sentry __cerb(__in, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      __str.erase();
+	      const __int_type __idelim = _Traits::to_int_type(__delim);
+	      const __int_type __eof = _Traits::eof();
+	      __int_type __c = __in.rdbuf()->sgetc();
+
+	      while (__extracted < __n
+		     && !_Traits::eq_int_type(__c, __eof)
+		     && !_Traits::eq_int_type(__c, __idelim))
+		{
+		  __str += _Traits::to_char_type(__c);
+		  ++__extracted;
+		  __c = __in.rdbuf()->snextc();
+		}
+
+	      if (_Traits::eq_int_type(__c, __eof))
+		__err |= __ios_base::eofbit;
+	      else if (_Traits::eq_int_type(__c, __idelim))
+		{
+		  ++__extracted;		  
+		  __in.rdbuf()->sbumpc();
+		}
+	      else
+		__err |= __ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(__ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(__ios_base::badbit);
+	    }
+	}
+      if (!__extracted)
+	__err |= __ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE > 0
+  extern template class basic_string<char>;
+  extern template
+    basic_istream<char>&
+    operator>>(basic_istream<char>&, string&);
+  extern template
+    basic_ostream<char>&
+    operator<<(basic_ostream<char>&, const string&);
+  extern template
+    basic_istream<char>&
+    getline(basic_istream<char>&, string&, char);
+  extern template
+    basic_istream<char>&
+    getline(basic_istream<char>&, string&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_string<wchar_t>;
+  extern template
+    basic_istream<wchar_t>&
+    operator>>(basic_istream<wchar_t>&, wstring&);
+  extern template
+    basic_ostream<wchar_t>&
+    operator<<(basic_ostream<wchar_t>&, const wstring&);
+  extern template
+    basic_istream<wchar_t>&
+    getline(basic_istream<wchar_t>&, wstring&, wchar_t);
+  extern template
+    basic_istream<wchar_t>&
+    getline(basic_istream<wchar_t>&, wstring&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/boost_concept_check.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/boost_concept_check.h
new file mode 100644
index 000000000..f1bc16abc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/boost_concept_check.h
@@ -0,0 +1,791 @@
+// -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify,
+// sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided
+// "as is" without express or implied warranty, and with no claim as
+// to its suitability for any purpose.
+//
+
+/** @file bits/boost_concept_check.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ */
+
+// GCC Note:  based on version 1.12.0 of the Boost library.
+
+#ifndef _BOOST_CONCEPT_CHECK_H
+#define _BOOST_CONCEPT_CHECK_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_iterator_base_types.h>    // for traits and tags
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#define _IsUnused __attribute__ ((__unused__))
+
+// When the C-C code is in use, we would like this function to do as little
+// as possible at runtime, use as few resources as possible, and hopefully
+// be elided out of existence... hmmm.
+template <class _Concept>
+inline void __function_requires()
+{
+  void (_Concept::*__x)() _IsUnused = &_Concept::__constraints;
+}
+
+// No definition: if this is referenced, there's a problem with
+// the instantiating type not being one of the required integer types.
+// Unfortunately, this results in a link-time error, not a compile-time error.
+void __error_type_must_be_an_integer_type();
+void __error_type_must_be_an_unsigned_integer_type();
+void __error_type_must_be_a_signed_integer_type();
+
+// ??? Should the "concept_checking*" structs begin with more than _ ?
+#define _GLIBCXX_CLASS_REQUIRES(_type_var, _ns, _concept) \
+  typedef void (_ns::_concept <_type_var>::* _func##_type_var##_concept)(); \
+  template <_func##_type_var##_concept _Tp1> \
+  struct _concept_checking##_type_var##_concept { }; \
+  typedef _concept_checking##_type_var##_concept< \
+    &_ns::_concept <_type_var>::__constraints> \
+    _concept_checking_typedef##_type_var##_concept
+
+#define _GLIBCXX_CLASS_REQUIRES2(_type_var1, _type_var2, _ns, _concept) \
+  typedef void (_ns::_concept <_type_var1,_type_var2>::* _func##_type_var1##_type_var2##_concept)(); \
+  template <_func##_type_var1##_type_var2##_concept _Tp1> \
+  struct _concept_checking##_type_var1##_type_var2##_concept { }; \
+  typedef _concept_checking##_type_var1##_type_var2##_concept< \
+    &_ns::_concept <_type_var1,_type_var2>::__constraints> \
+    _concept_checking_typedef##_type_var1##_type_var2##_concept
+
+#define _GLIBCXX_CLASS_REQUIRES3(_type_var1, _type_var2, _type_var3, _ns, _concept) \
+  typedef void (_ns::_concept <_type_var1,_type_var2,_type_var3>::* _func##_type_var1##_type_var2##_type_var3##_concept)(); \
+  template <_func##_type_var1##_type_var2##_type_var3##_concept _Tp1> \
+  struct _concept_checking##_type_var1##_type_var2##_type_var3##_concept { }; \
+  typedef _concept_checking##_type_var1##_type_var2##_type_var3##_concept< \
+    &_ns::_concept <_type_var1,_type_var2,_type_var3>::__constraints>  \
+  _concept_checking_typedef##_type_var1##_type_var2##_type_var3##_concept
+
+#define _GLIBCXX_CLASS_REQUIRES4(_type_var1, _type_var2, _type_var3, _type_var4, _ns, _concept) \
+  typedef void (_ns::_concept <_type_var1,_type_var2,_type_var3,_type_var4>::* _func##_type_var1##_type_var2##_type_var3##_type_var4##_concept)(); \
+  template <_func##_type_var1##_type_var2##_type_var3##_type_var4##_concept _Tp1> \
+  struct _concept_checking##_type_var1##_type_var2##_type_var3##_type_var4##_concept { }; \
+  typedef _concept_checking##_type_var1##_type_var2##_type_var3##_type_var4##_concept< \
+  &_ns::_concept <_type_var1,_type_var2,_type_var3,_type_var4>::__constraints> \
+    _concept_checking_typedef##_type_var1##_type_var2##_type_var3##_type_var4##_concept
+
+
+template <class _Tp1, class _Tp2>
+struct _Aux_require_same { };
+
+template <class _Tp>
+struct _Aux_require_same<_Tp,_Tp> { typedef _Tp _Type; };
+
+  template <class _Tp1, class _Tp2>
+  struct _SameTypeConcept
+  {
+    void __constraints() {
+      typedef typename _Aux_require_same<_Tp1, _Tp2>::_Type _Required;
+    }
+  };
+
+  template <class _Tp>
+  struct _IntegerConcept {
+    void __constraints() {
+      __error_type_must_be_an_integer_type();
+    }
+  };
+  template <> struct _IntegerConcept<short> { void __constraints() {} };
+  template <> struct _IntegerConcept<unsigned short> { void __constraints(){} };
+  template <> struct _IntegerConcept<int> { void __constraints() {} };
+  template <> struct _IntegerConcept<unsigned int> { void __constraints() {} };
+  template <> struct _IntegerConcept<long> { void __constraints() {} };
+  template <> struct _IntegerConcept<unsigned long> { void __constraints() {} };
+  template <> struct _IntegerConcept<long long> { void __constraints() {} };
+  template <> struct _IntegerConcept<unsigned long long>
+                                                { void __constraints() {} };
+
+  template <class _Tp>
+  struct _SignedIntegerConcept {
+    void __constraints() {
+      __error_type_must_be_a_signed_integer_type();
+    }
+  };
+  template <> struct _SignedIntegerConcept<short> { void __constraints() {} };
+  template <> struct _SignedIntegerConcept<int> { void __constraints() {} };
+  template <> struct _SignedIntegerConcept<long> { void __constraints() {} };
+  template <> struct _SignedIntegerConcept<long long> { void __constraints(){}};
+
+  template <class _Tp>
+  struct _UnsignedIntegerConcept {
+    void __constraints() {
+      __error_type_must_be_an_unsigned_integer_type();
+    }
+  };
+  template <> struct _UnsignedIntegerConcept<unsigned short>
+    { void __constraints() {} };
+  template <> struct _UnsignedIntegerConcept<unsigned int>
+    { void __constraints() {} };
+  template <> struct _UnsignedIntegerConcept<unsigned long>
+    { void __constraints() {} };
+  template <> struct _UnsignedIntegerConcept<unsigned long long>
+    { void __constraints() {} };
+
+  //===========================================================================
+  // Basic Concepts
+
+  template <class _Tp>
+  struct _DefaultConstructibleConcept
+  {
+    void __constraints() {
+      _Tp __a _IsUnused;                // require default constructor
+    }
+  };
+
+  template <class _Tp>
+  struct _AssignableConcept
+  {
+    void __constraints() {
+      __a = __a;                        // require assignment operator
+      __const_constraints(__a);
+    }
+    void __const_constraints(const _Tp& __b) {
+      __a = __b;                   // const required for argument to assignment
+    }
+    _Tp __a;
+    // possibly should be "Tp* a;" and then dereference "a" in constraint
+    // functions?  present way would require a default ctor, i think...
+  };
+
+  template <class _Tp>
+  struct _CopyConstructibleConcept
+  {
+    void __constraints() {
+      _Tp __a(__b);                     // require copy constructor
+      _Tp* __ptr _IsUnused = &__a;      // require address of operator
+      __const_constraints(__a);
+    }
+    void __const_constraints(const _Tp& __a) {
+      _Tp __c _IsUnused(__a);           // require const copy constructor
+      const _Tp* __ptr _IsUnused = &__a; // require const address of operator
+    }
+    _Tp __b;
+  };
+
+  // The SGI STL version of Assignable requires copy constructor and operator=
+  template <class _Tp>
+  struct _SGIAssignableConcept
+  {
+    void __constraints() {
+      _Tp __b _IsUnused(__a);
+      __a = __a;                        // require assignment operator
+      __const_constraints(__a);
+    }
+    void __const_constraints(const _Tp& __b) {
+      _Tp __c _IsUnused(__b);
+      __a = __b;              // const required for argument to assignment
+    }
+    _Tp __a;
+  };
+
+  template <class _From, class _To>
+  struct _ConvertibleConcept
+  {
+    void __constraints() {
+      _To __y _IsUnused = __x;
+    }
+    _From __x;
+  };
+
+  // The C++ standard requirements for many concepts talk about return
+  // types that must be "convertible to bool".  The problem with this
+  // requirement is that it leaves the door open for evil proxies that
+  // define things like operator|| with strange return types.  Two
+  // possible solutions are:
+  // 1) require the return type to be exactly bool
+  // 2) stay with convertible to bool, and also
+  //    specify stuff about all the logical operators.
+  // For now we just test for convertible to bool.
+  template <class _Tp>
+  void __aux_require_boolean_expr(const _Tp& __t) {
+    bool __x _IsUnused = __t;
+  }
+
+// FIXME
+  template <class _Tp>
+  struct _EqualityComparableConcept
+  {
+    void __constraints() {
+      __aux_require_boolean_expr(__a == __b);
+    }
+    _Tp __a, __b;
+  };
+
+  template <class _Tp>
+  struct _LessThanComparableConcept
+  {
+    void __constraints() {
+      __aux_require_boolean_expr(__a < __b);
+    }
+    _Tp __a, __b;
+  };
+
+  // This is equivalent to SGI STL's LessThanComparable.
+  template <class _Tp>
+  struct _ComparableConcept
+  {
+    void __constraints() {
+      __aux_require_boolean_expr(__a < __b);
+      __aux_require_boolean_expr(__a > __b);
+      __aux_require_boolean_expr(__a <= __b);
+      __aux_require_boolean_expr(__a >= __b);
+    }
+    _Tp __a, __b;
+  };
+
+#define _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(_OP,_NAME) \
+  template <class _First, class _Second> \
+  struct _NAME { \
+    void __constraints() { (void)__constraints_(); } \
+    bool __constraints_() {  \
+      return  __a _OP __b; \
+    } \
+    _First __a; \
+    _Second __b; \
+  }
+
+#define _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(_OP,_NAME) \
+  template <class _Ret, class _First, class _Second> \
+  struct _NAME { \
+    void __constraints() { (void)__constraints_(); } \
+    _Ret __constraints_() {  \
+      return __a _OP __b; \
+    } \
+    _First __a; \
+    _Second __b; \
+  }
+
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, _EqualOpConcept);
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, _NotEqualOpConcept);
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, _LessThanOpConcept);
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, _LessEqualOpConcept);
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, _GreaterThanOpConcept);
+  _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, _GreaterEqualOpConcept);
+
+  _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, _PlusOpConcept);
+  _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, _TimesOpConcept);
+  _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, _DivideOpConcept);
+  _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, _SubtractOpConcept);
+  _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, _ModOpConcept);
+
+#undef _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT
+#undef _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT
+
+  //===========================================================================
+  // Function Object Concepts
+
+  template <class _Func, class _Return>
+  struct _GeneratorConcept
+  {
+    void __constraints() {
+      const _Return& __r _IsUnused = __f();// require operator() member function
+    }
+    _Func __f;
+  };
+
+
+  template <class _Func>
+  struct _GeneratorConcept<_Func,void>
+  {
+    void __constraints() {
+      __f();                            // require operator() member function
+    }
+    _Func __f;
+  };
+
+  template <class _Func, class _Return, class _Arg>
+  struct _UnaryFunctionConcept
+  {
+    void __constraints() {
+      __r = __f(__arg);                  // require operator()
+    }
+    _Func __f;
+    _Arg __arg;
+    _Return __r;
+  };
+
+  template <class _Func, class _Arg>
+  struct _UnaryFunctionConcept<_Func, void, _Arg> {
+    void __constraints() {
+      __f(__arg);                       // require operator()
+    }
+    _Func __f;
+    _Arg __arg;
+  };
+
+  template <class _Func, class _Return, class _First, class _Second>
+  struct _BinaryFunctionConcept
+  {
+    void __constraints() {
+      __r = __f(__first, __second);     // require operator()
+    }
+    _Func __f;
+    _First __first;
+    _Second __second;
+    _Return __r;
+  };
+
+  template <class _Func, class _First, class _Second>
+  struct _BinaryFunctionConcept<_Func, void, _First, _Second>
+  {
+    void __constraints() {
+      __f(__first, __second);           // require operator()
+    }
+    _Func __f;
+    _First __first;
+    _Second __second;
+  };
+
+  template <class _Func, class _Arg>
+  struct _UnaryPredicateConcept
+  {
+    void __constraints() {
+      __aux_require_boolean_expr(__f(__arg)); // require op() returning bool
+    }
+    _Func __f;
+    _Arg __arg;
+  };
+
+  template <class _Func, class _First, class _Second>
+  struct _BinaryPredicateConcept
+  {
+    void __constraints() {
+      __aux_require_boolean_expr(__f(__a, __b)); // require op() returning bool
+    }
+    _Func __f;
+    _First __a;
+    _Second __b;
+  };
+
+  // use this when functor is used inside a container class like std::set
+  template <class _Func, class _First, class _Second>
+  struct _Const_BinaryPredicateConcept {
+    void __constraints() {
+      __const_constraints(__f);
+    }
+    void __const_constraints(const _Func& __fun) {
+      __function_requires<_BinaryPredicateConcept<_Func, _First, _Second> >();
+      // operator() must be a const member function
+      __aux_require_boolean_expr(__fun(__a, __b));
+    }
+    _Func __f;
+    _First __a;
+    _Second __b;
+  };
+
+  //===========================================================================
+  // Iterator Concepts
+
+  template <class _Tp>
+  struct _TrivialIteratorConcept
+  {
+    void __constraints() {
+//    __function_requires< _DefaultConstructibleConcept<_Tp> >();
+      __function_requires< _AssignableConcept<_Tp> >();
+      __function_requires< _EqualityComparableConcept<_Tp> >();
+//      typedef typename std::iterator_traits<_Tp>::value_type _V;
+      (void)*__i;                       // require dereference operator
+    }
+    _Tp __i;
+  };
+
+  template <class _Tp>
+  struct _Mutable_TrivialIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _TrivialIteratorConcept<_Tp> >();
+      *__i = *__j;                      // require dereference and assignment
+    }
+    _Tp __i, __j;
+  };
+
+  template <class _Tp>
+  struct _InputIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _TrivialIteratorConcept<_Tp> >();
+      // require iterator_traits typedef's
+      typedef typename std::iterator_traits<_Tp>::difference_type _Diff;
+//      __function_requires< _SignedIntegerConcept<_Diff> >();
+      typedef typename std::iterator_traits<_Tp>::reference _Ref;
+      typedef typename std::iterator_traits<_Tp>::pointer _Pt;
+      typedef typename std::iterator_traits<_Tp>::iterator_category _Cat;
+      __function_requires< _ConvertibleConcept<
+        typename std::iterator_traits<_Tp>::iterator_category,
+        std::input_iterator_tag> >();
+      ++__i;                            // require preincrement operator
+      __i++;                            // require postincrement operator
+    }
+    _Tp __i;
+  };
+
+  template <class _Tp, class _ValueT>
+  struct _OutputIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _AssignableConcept<_Tp> >();
+      ++__i;                            // require preincrement operator
+      __i++;                            // require postincrement operator
+      *__i++ = __t;                     // require postincrement and assignment
+    }
+    _Tp __i;
+    _ValueT __t;
+  };
+
+  template <class _Tp>
+  struct _ForwardIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _InputIteratorConcept<_Tp> >();
+      __function_requires< _DefaultConstructibleConcept<_Tp> >();
+      __function_requires< _ConvertibleConcept<
+        typename std::iterator_traits<_Tp>::iterator_category,
+        std::forward_iterator_tag> >();
+      typedef typename std::iterator_traits<_Tp>::reference _Ref;
+      _Ref __r _IsUnused = *__i;
+    }
+    _Tp __i;
+  };
+
+  template <class _Tp>
+  struct _Mutable_ForwardIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _ForwardIteratorConcept<_Tp> >();
+      *__i++ = *__i;                    // require postincrement and assignment
+    }
+    _Tp __i;
+  };
+
+  template <class _Tp>
+  struct _BidirectionalIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _ForwardIteratorConcept<_Tp> >();
+      __function_requires< _ConvertibleConcept<
+        typename std::iterator_traits<_Tp>::iterator_category,
+        std::bidirectional_iterator_tag> >();
+      --__i;                            // require predecrement operator
+      __i--;                            // require postdecrement operator
+    }
+    _Tp __i;
+  };
+
+  template <class _Tp>
+  struct _Mutable_BidirectionalIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _BidirectionalIteratorConcept<_Tp> >();
+      __function_requires< _Mutable_ForwardIteratorConcept<_Tp> >();
+      *__i-- = *__i;                    // require postdecrement and assignment
+    }
+    _Tp __i;
+  };
+
+
+  template <class _Tp>
+  struct _RandomAccessIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _BidirectionalIteratorConcept<_Tp> >();
+      __function_requires< _ComparableConcept<_Tp> >();
+      __function_requires< _ConvertibleConcept<
+        typename std::iterator_traits<_Tp>::iterator_category,
+        std::random_access_iterator_tag> >();
+      // ??? We don't use _Ref, are we just checking for "referenceability"?
+      typedef typename std::iterator_traits<_Tp>::reference _Ref;
+
+      __i += __n;                       // require assignment addition operator
+      __i = __i + __n; __i = __n + __i; // require addition with difference type
+      __i -= __n;                       // require assignment subtraction op
+      __i = __i - __n;                  // require subtraction with
+                                        //            difference type
+      __n = __i - __j;                  // require difference operator
+      (void)__i[__n];                   // require element access operator
+    }
+    _Tp __a, __b;
+    _Tp __i, __j;
+    typename std::iterator_traits<_Tp>::difference_type __n;
+  };
+
+  template <class _Tp>
+  struct _Mutable_RandomAccessIteratorConcept
+  {
+    void __constraints() {
+      __function_requires< _RandomAccessIteratorConcept<_Tp> >();
+      __function_requires< _Mutable_BidirectionalIteratorConcept<_Tp> >();
+      __i[__n] = *__i;                  // require element access and assignment
+    }
+    _Tp __i;
+    typename std::iterator_traits<_Tp>::difference_type __n;
+  };
+
+  //===========================================================================
+  // Container Concepts
+
+  template <class _Container>
+  struct _ContainerConcept
+  {
+    typedef typename _Container::value_type _Value_type;
+    typedef typename _Container::difference_type _Difference_type;
+    typedef typename _Container::size_type _Size_type;
+    typedef typename _Container::const_reference _Const_reference;
+    typedef typename _Container::const_pointer _Const_pointer;
+    typedef typename _Container::const_iterator _Const_iterator;
+
+    void __constraints() {
+      __function_requires< _InputIteratorConcept<_Const_iterator> >();
+      __function_requires< _AssignableConcept<_Container> >();
+      const _Container __c;
+      __i = __c.begin();
+      __i = __c.end();
+      __n = __c.size();
+      __n = __c.max_size();
+      __b = __c.empty();
+    }
+    bool __b;
+    _Const_iterator __i;
+    _Size_type __n;
+  };
+
+  template <class _Container>
+  struct _Mutable_ContainerConcept
+  {
+    typedef typename _Container::value_type _Value_type;
+    typedef typename _Container::reference _Reference;
+    typedef typename _Container::iterator _Iterator;
+    typedef typename _Container::pointer _Pointer;
+
+    void __constraints() {
+      __function_requires< _ContainerConcept<_Container> >();
+      __function_requires< _AssignableConcept<_Value_type> >();
+      __function_requires< _InputIteratorConcept<_Iterator> >();
+
+      __i = __c.begin();
+      __i = __c.end();
+      __c.swap(__c2);
+    }
+    _Iterator __i;
+    _Container __c, __c2;
+  };
+
+  template <class _ForwardContainer>
+  struct _ForwardContainerConcept
+  {
+    void __constraints() {
+      __function_requires< _ContainerConcept<_ForwardContainer> >();
+      typedef typename _ForwardContainer::const_iterator _Const_iterator;
+      __function_requires< _ForwardIteratorConcept<_Const_iterator> >();
+    }
+  };
+
+  template <class _ForwardContainer>
+  struct _Mutable_ForwardContainerConcept
+  {
+    void __constraints() {
+      __function_requires< _ForwardContainerConcept<_ForwardContainer> >();
+      __function_requires< _Mutable_ContainerConcept<_ForwardContainer> >();
+      typedef typename _ForwardContainer::iterator _Iterator;
+      __function_requires< _Mutable_ForwardIteratorConcept<_Iterator> >();
+    }
+  };
+
+  template <class _ReversibleContainer>
+  struct _ReversibleContainerConcept
+  {
+    typedef typename _ReversibleContainer::const_iterator _Const_iterator;
+    typedef typename _ReversibleContainer::const_reverse_iterator
+      _Const_reverse_iterator;
+
+    void __constraints() {
+      __function_requires< _ForwardContainerConcept<_ReversibleContainer> >();
+      __function_requires< _BidirectionalIteratorConcept<_Const_iterator> >();
+      __function_requires<
+        _BidirectionalIteratorConcept<_Const_reverse_iterator> >();
+
+      const _ReversibleContainer __c;
+      _Const_reverse_iterator __i = __c.rbegin();
+      __i = __c.rend();
+    }
+  };
+
+  template <class _ReversibleContainer>
+  struct _Mutable_ReversibleContainerConcept
+  {
+    typedef typename _ReversibleContainer::iterator _Iterator;
+    typedef typename _ReversibleContainer::reverse_iterator _Reverse_iterator;
+
+    void __constraints() {
+      __function_requires<_ReversibleContainerConcept<_ReversibleContainer> >();
+      __function_requires<
+        _Mutable_ForwardContainerConcept<_ReversibleContainer> >();
+      __function_requires<_Mutable_BidirectionalIteratorConcept<_Iterator> >();
+      __function_requires<
+        _Mutable_BidirectionalIteratorConcept<_Reverse_iterator> >();
+
+      _Reverse_iterator __i = __c.rbegin();
+      __i = __c.rend();
+    }
+    _ReversibleContainer __c;
+  };
+
+  template <class _RandomAccessContainer>
+  struct _RandomAccessContainerConcept
+  {
+    typedef typename _RandomAccessContainer::size_type _Size_type;
+    typedef typename _RandomAccessContainer::const_reference _Const_reference;
+    typedef typename _RandomAccessContainer::const_iterator _Const_iterator;
+    typedef typename _RandomAccessContainer::const_reverse_iterator
+      _Const_reverse_iterator;
+
+    void __constraints() {
+      __function_requires<
+        _ReversibleContainerConcept<_RandomAccessContainer> >();
+      __function_requires< _RandomAccessIteratorConcept<_Const_iterator> >();
+      __function_requires<
+        _RandomAccessIteratorConcept<_Const_reverse_iterator> >();
+
+      const _RandomAccessContainer __c;
+      _Const_reference __r _IsUnused = __c[__n];
+    }
+    _Size_type __n;
+  };
+
+  template <class _RandomAccessContainer>
+  struct _Mutable_RandomAccessContainerConcept
+  {
+    typedef typename _RandomAccessContainer::size_type _Size_type;
+    typedef typename _RandomAccessContainer::reference _Reference;
+    typedef typename _RandomAccessContainer::iterator _Iterator;
+    typedef typename _RandomAccessContainer::reverse_iterator _Reverse_iterator;
+
+    void __constraints() {
+      __function_requires<
+        _RandomAccessContainerConcept<_RandomAccessContainer> >();
+      __function_requires<
+        _Mutable_ReversibleContainerConcept<_RandomAccessContainer> >();
+      __function_requires< _Mutable_RandomAccessIteratorConcept<_Iterator> >();
+      __function_requires<
+        _Mutable_RandomAccessIteratorConcept<_Reverse_iterator> >();
+
+      _Reference __r _IsUnused = __c[__i];
+    }
+    _Size_type __i;
+    _RandomAccessContainer __c;
+  };
+
+  // A Sequence is inherently mutable
+  template <class _Sequence>
+  struct _SequenceConcept
+  {
+    typedef typename _Sequence::reference _Reference;
+    typedef typename _Sequence::const_reference _Const_reference;
+
+    void __constraints() {
+      // Matt Austern's book puts DefaultConstructible here, the C++
+      // standard places it in Container
+      //    function_requires< DefaultConstructible<Sequence> >();
+      __function_requires< _Mutable_ForwardContainerConcept<_Sequence> >();
+      __function_requires< _DefaultConstructibleConcept<_Sequence> >();
+
+      _Sequence
+	__c _IsUnused(__n, __t),
+        __c2 _IsUnused(__first, __last);
+
+      __c.insert(__p, __t);
+      __c.insert(__p, __n, __t);
+      __c.insert(__p, __first, __last);
+
+      __c.erase(__p);
+      __c.erase(__p, __q);
+
+      _Reference __r _IsUnused = __c.front();
+
+      __const_constraints(__c);
+    }
+    void __const_constraints(const _Sequence& __c) {
+      _Const_reference __r _IsUnused = __c.front();
+    }
+    typename _Sequence::value_type __t;
+    typename _Sequence::size_type __n;
+    typename _Sequence::value_type *__first, *__last;
+    typename _Sequence::iterator __p, __q;
+  };
+
+  template <class _FrontInsertionSequence>
+  struct _FrontInsertionSequenceConcept
+  {
+    void __constraints() {
+      __function_requires< _SequenceConcept<_FrontInsertionSequence> >();
+
+      __c.push_front(__t);
+      __c.pop_front();
+    }
+    _FrontInsertionSequence __c;
+    typename _FrontInsertionSequence::value_type __t;
+  };
+
+  template <class _BackInsertionSequence>
+  struct _BackInsertionSequenceConcept
+  {
+    typedef typename _BackInsertionSequence::reference _Reference;
+    typedef typename _BackInsertionSequence::const_reference _Const_reference;
+
+    void __constraints() {
+      __function_requires< _SequenceConcept<_BackInsertionSequence> >();
+
+      __c.push_back(__t);
+      __c.pop_back();
+      _Reference __r _IsUnused = __c.back();
+    }
+    void __const_constraints(const _BackInsertionSequence& __c) {
+      _Const_reference __r _IsUnused = __c.back();
+    };
+    _BackInsertionSequence __c;
+    typename _BackInsertionSequence::value_type __t;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#undef _IsUnused
+
+#endif // _GLIBCXX_BOOST_CONCEPT_CHECK
+
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++0x_warning.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++0x_warning.h
new file mode 100644
index 000000000..0685a50e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++0x_warning.h
@@ -0,0 +1,37 @@
+// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++0x_warning.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _CXX0X_WARNING_H
+#define _CXX0X_WARNING_H 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+#error This file requires compiler and library support for the upcoming \
+ISO C++ standard, C++0x. This support is currently experimental, and must be \
+enabled with the -std=c++0x or -std=gnu++0x compiler options.
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++config b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++config
new file mode 100644
index 000000000..8ac3c159d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/c++config
@@ -0,0 +1,431 @@
+// Predefined symbols and macros -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/c++config.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_CXX_CONFIG_H
+#define _GLIBCXX_CXX_CONFIG_H 1
+
+// The current version of the C++ library in compressed ISO date format.
+#define __GLIBCXX__
+
+// Macros for various attributes.
+//   _GLIBCXX_PURE
+//   _GLIBCXX_CONST
+//   _GLIBCXX_NORETURN
+//   _GLIBCXX_NOTHROW
+//   _GLIBCXX_VISIBILITY
+#ifndef _GLIBCXX_PURE
+# define _GLIBCXX_PURE __attribute__ ((__pure__))
+#endif
+
+#ifndef _GLIBCXX_CONST
+# define _GLIBCXX_CONST __attribute__ ((__const__))
+#endif
+
+#ifndef _GLIBCXX_NORETURN
+# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
+#endif
+
+#ifndef _GLIBCXX_NOTHROW
+# ifdef __cplusplus
+#  define _GLIBCXX_NOTHROW throw()
+# else
+#  define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
+# endif
+#endif
+
+// Macros for visibility attributes.
+//   _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
+//   _GLIBCXX_VISIBILITY
+#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
+
+#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
+# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
+#else
+// If this is not supplied by the OS-specific or CPU-specific
+// headers included below, it will be defined to an empty default.
+# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
+#endif
+
+// Macros for deprecated attributes.
+//   _GLIBCXX_USE_DEPRECATED
+//   _GLIBCXX_DEPRECATED
+#ifndef _GLIBCXX_USE_DEPRECATED
+# define _GLIBCXX_USE_DEPRECATED 1
+#endif
+
+#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
+#else
+# define _GLIBCXX_DEPRECATED
+#endif
+
+#if __cplusplus
+
+// Macro for constexpr, to support in mixed 03/0x mode.
+#ifndef _GLIBCXX_CONSTEXPR
+# ifdef __GXX_EXPERIMENTAL_CXX0X__
+#  define _GLIBCXX_CONSTEXPR constexpr
+#  define _GLIBCXX_USE_CONSTEXPR constexpr
+# else
+#  define _GLIBCXX_CONSTEXPR
+#  define _GLIBCXX_USE_CONSTEXPR const
+# endif
+#endif
+
+// Macro for extern template, ie controling template linkage via use
+// of extern keyword on template declaration. As documented in the g++
+// manual, it inhibits all implicit instantiations and is used
+// throughout the library to avoid multiple weak definitions for
+// required types that are already explicitly instantiated in the
+// library binary. This substantially reduces the binary size of
+// resulting executables.
+// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
+// templates only in basic_string, thus activating its debug-mode
+// checks even at -O0.
+#define _GLIBCXX_EXTERN_TEMPLATE
+
+/*
+  Outline of libstdc++ namespaces.
+
+  namespace std
+  {
+    namespace __debug { }
+    namespace __parallel { }
+    namespace __profile { }
+    namespace __cxx1998 { }
+
+    namespace __detail { }
+
+    namespace rel_ops { }
+
+    namespace tr1
+    {
+      namespace placeholders { }
+      namespace regex_constants { }
+      namespace __detail { }
+    }
+
+    namespace decimal { }
+
+    namespace chrono { }
+    namespace placeholders { }
+    namespace regex_constants { }
+    namespace this_thread { }
+  }
+
+  namespace abi { }
+
+  namespace __gnu_cxx
+  {
+    namespace __detail { }
+  }
+
+  For full details see:
+  http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html
+*/
+namespace std
+{
+  typedef __SIZE_TYPE__ 	size_t;
+  typedef __PTRDIFF_TYPE__	ptrdiff_t;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  typedef decltype(nullptr)	nullptr_t;
+#endif
+}
+
+
+// Defined if inline namespaces are used for versioning.
+#define _GLIBCXX_INLINE_VERSION
+
+// Inline namespace for symbol versioning.
+#if _GLIBCXX_INLINE_VERSION
+namespace std
+{
+  inline namespace _6 { }
+
+  namespace rel_ops { inline namespace _6 { } }
+
+  namespace tr1
+  {
+    inline namespace _6 { }
+    namespace placeholders { inline namespace _6 { } }
+    namespace regex_constants { inline namespace _6 { } }
+    namespace __detail { inline namespace _6 { } }
+  }
+
+  namespace decimal { inline namespace _6 { } }
+
+  namespace chrono { inline namespace _6 { } }
+  namespace placeholders { inline namespace _6 { } }
+  namespace regex_constants { inline namespace _6 { } }
+  namespace this_thread { inline namespace _6 { } }
+
+  namespace __detail { inline namespace _6 { } }
+  namespace __regex { inline namespace _6 { } }
+}
+
+namespace __gnu_cxx
+{
+  inline namespace _6 { }
+  namespace __detail { inline namespace _6 { } }
+}
+# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace _6 {
+# define _GLIBCXX_END_NAMESPACE_VERSION }
+#else
+# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
+# define _GLIBCXX_END_NAMESPACE_VERSION
+#endif
+
+
+// Inline namespaces for special modes: debug, parallel, profile.
+#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \
+    || defined(_GLIBCXX_PROFILE)
+namespace std
+{
+  // Non-inline namespace for components replaced by alternates in active mode.
+  namespace __cxx1998
+  {
+#if _GLIBCXX_INLINE_VERSION
+ inline namespace _6 { }
+#endif
+  }
+
+  // Inline namespace for debug mode.
+# ifdef _GLIBCXX_DEBUG
+  inline namespace __debug { }
+# endif
+
+  // Inline namespaces for parallel mode.
+# ifdef _GLIBCXX_PARALLEL
+  inline namespace __parallel { }
+# endif
+
+  // Inline namespaces for profile mode
+# ifdef _GLIBCXX_PROFILE
+  inline namespace __profile { }
+# endif
+}
+
+// Check for invalid usage and unsupported mixed-mode use.
+# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL)
+#  error illegal use of multiple inlined namespaces
+# endif
+# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG)
+#  error illegal use of multiple inlined namespaces
+# endif
+# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL)
+#  error illegal use of multiple inlined namespaces
+# endif
+
+// Check for invalid use due to lack for weak symbols.
+# if __NO_INLINE__ && !__GXX_WEAK__
+#  warning currently using inlined namespace mode which may fail \
+   without inlining due to lack of weak symbols
+# endif
+#endif
+
+// Macros for namespace scope. Either namespace std:: or the name
+// of some nested namespace within it corresponding to the active mode.
+// _GLIBCXX_STD_A
+// _GLIBCXX_STD_C
+//
+// Macros for opening/closing conditional namespaces.
+// _GLIBCXX_BEGIN_NAMESPACE_ALGO
+// _GLIBCXX_END_NAMESPACE_ALGO
+// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+// _GLIBCXX_END_NAMESPACE_CONTAINER
+#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE)
+# define _GLIBCXX_STD_C __cxx1998
+# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \
+	 namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION
+# define _GLIBCXX_END_NAMESPACE_CONTAINER \
+	 } _GLIBCXX_END_NAMESPACE_VERSION
+# undef _GLIBCXX_EXTERN_TEMPLATE
+# define _GLIBCXX_EXTERN_TEMPLATE -1
+#endif
+
+#ifdef _GLIBCXX_PARALLEL
+# define _GLIBCXX_STD_A __cxx1998
+# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \
+	 namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION
+# define _GLIBCXX_END_NAMESPACE_ALGO \
+	 } _GLIBCXX_END_NAMESPACE_VERSION
+#endif
+
+#ifndef _GLIBCXX_STD_A
+# define _GLIBCXX_STD_A std
+#endif
+
+#ifndef _GLIBCXX_STD_C
+# define _GLIBCXX_STD_C std
+#endif
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO
+# define _GLIBCXX_BEGIN_NAMESPACE_ALGO
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_ALGO
+# define _GLIBCXX_END_NAMESPACE_ALGO
+#endif
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER
+# define _GLIBCXX_END_NAMESPACE_CONTAINER
+#endif
+
+// GLIBCXX_ABI Deprecated
+// Define if compatibility should be provided for -mlong-double-64.
+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+// Inline namespace for long double 128 mode.
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+namespace std
+{
+  inline namespace __gnu_cxx_ldbl128 { }
+}
+# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128::
+# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 {
+# define _GLIBCXX_END_NAMESPACE_LDBL }
+#else
+# define _GLIBCXX_NAMESPACE_LDBL
+# define _GLIBCXX_BEGIN_NAMESPACE_LDBL
+# define _GLIBCXX_END_NAMESPACE_LDBL
+#endif
+
+// Assert.
+#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
+# define __glibcxx_assert(_Condition)
+#else
+namespace std
+{
+  // Avoid the use of assert, because we're trying to keep the <cassert>
+  // include out of the mix.
+  inline void
+  __replacement_assert(const char* __file, int __line,
+		       const char* __function, const char* __condition)
+  {
+    __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
+		     __function, __condition);
+    __builtin_abort();
+  }
+}
+#define __glibcxx_assert(_Condition)				   	 \
+  do 									 \
+  {							      		 \
+    if (! (_Condition))                                                  \
+      std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \
+				#_Condition);				 \
+  } while (false)
+#endif
+
+// Macros for race detectors.
+// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and
+// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain
+// atomic (lock-free) synchronization to race detectors:
+// the race detector will infer a happens-before arc from the former to the
+// latter when they share the same argument pointer.
+//
+// The most frequent use case for these macros (and the only case in the
+// current implementation of the library) is atomic reference counting:
+//   void _M_remove_reference()
+//   {
+//     _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
+//     if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0)
+//       {
+//         _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
+//         _M_destroy(__a);
+//       }
+//   }
+// The annotations in this example tell the race detector that all memory
+// accesses occurred when the refcount was positive do not race with
+// memory accesses which occurred after the refcount became zero.
+#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE
+# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A)
+#endif
+#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER
+# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A)
+#endif
+
+// Macros for C linkage: define extern "C" linkage only when using C++.
+# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
+# define _GLIBCXX_END_EXTERN_C }
+
+#else // !__cplusplus
+# define _GLIBCXX_BEGIN_EXTERN_C
+# define _GLIBCXX_END_EXTERN_C
+#endif
+
+
+// First includes.
+
+// Pick up any OS-specific definitions.
+#include <bits/os_defines.h>
+
+// Pick up any CPU-specific definitions.
+#include <bits/cpu_defines.h>
+
+// If platform uses neither visibility nor psuedo-visibility,
+// specify empty default for namespace annotation macros.
+#ifndef _GLIBCXX_PSEUDO_VISIBILITY
+# define _GLIBCXX_PSEUDO_VISIBILITY(V)
+#endif
+
+// Certain function definitions that are meant to be overridable from
+// user code are decorated with this macro.  For some targets, this
+// macro causes these definitions to be weak.
+#ifndef _GLIBCXX_WEAK_DEFINITION
+# define _GLIBCXX_WEAK_DEFINITION
+#endif
+
+
+// The remainder of the prewritten config is automatic; all the
+// user hooks are listed above.
+
+// Create a boolean flag to be used to determine if --fast-math is set.
+#ifdef __FAST_MATH__
+# define _GLIBCXX_FAST_MATH 1
+#else
+# define _GLIBCXX_FAST_MATH 0
+#endif
+
+// This marks string literals in header files to be extracted for eventual
+// translation.  It is primarily used for messages in thrown exceptions; see
+// src/functexcept.cc.  We use __N because the more traditional _N is used
+// for something else under certain OSes (see BADNAMES).
+#define __N(msgid)     (msgid)
+
+// For example, <windows.h> is known to #define min and max as macros...
+#undef min
+#undef max
+
+// End of prewritten config; the settings discovered at configure time follow.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/char_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/char_traits.h
new file mode 100644
index 000000000..07251df0f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/char_traits.h
@@ -0,0 +1,575 @@
+// Character Traits for use by standard string and iostream -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/char_traits.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{string}
+ */
+
+//
+// ISO C++ 14882: 21  Strings library
+//
+
+#ifndef _CHAR_TRAITS_H
+#define _CHAR_TRAITS_H 1
+
+#pragma GCC system_header
+
+#include <bits/stl_algobase.h>  // std::copy, std::fill_n
+#include <bits/postypes.h>      // For streampos
+#include <cwchar>               // For WEOF, wmemmove, wmemset, etc.
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Mapping from character type to associated types.
+   *
+   *  @note This is an implementation class for the generic version
+   *  of char_traits.  It defines int_type, off_type, pos_type, and
+   *  state_type.  By default these are unsigned long, streamoff,
+   *  streampos, and mbstate_t.  Users who need a different set of
+   *  types, but who don't need to change the definitions of any function
+   *  defined in char_traits, can specialize __gnu_cxx::_Char_types
+   *  while leaving __gnu_cxx::char_traits alone. */
+  template<typename _CharT>
+    struct _Char_types
+    {
+      typedef unsigned long   int_type;
+      typedef std::streampos  pos_type;
+      typedef std::streamoff  off_type;
+      typedef std::mbstate_t  state_type;
+    };
+
+
+  /**
+   *  @brief  Base class used to implement std::char_traits.
+   *
+   *  @note For any given actual character type, this definition is
+   *  probably wrong.  (Most of the member functions are likely to be
+   *  right, but the int_type and state_type typedefs, and the eof()
+   *  member function, are likely to be wrong.)  The reason this class
+   *  exists is so users can specialize it.  Classes in namespace std
+   *  may not be specialized for fundamental types, but classes in
+   *  namespace __gnu_cxx may be.
+   *
+   *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
+   *  for advice on how to make use of this class for @a unusual character
+   *  types. Also, check out include/ext/pod_char_traits.h.  
+   */
+  template<typename _CharT>
+    struct char_traits
+    {
+      typedef _CharT                                    char_type;
+      typedef typename _Char_types<_CharT>::int_type    int_type;
+      typedef typename _Char_types<_CharT>::pos_type    pos_type;
+      typedef typename _Char_types<_CharT>::off_type    off_type;
+      typedef typename _Char_types<_CharT>::state_type  state_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
+
+      static std::size_t
+      length(const char_type* __s);
+
+      static const char_type*
+      find(const char_type* __s, std::size_t __n, const char_type& __a);
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, std::size_t __n);
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, std::size_t __n);
+
+      static char_type*
+      assign(char_type* __s, std::size_t __n, char_type __a);
+
+      static _GLIBCXX_CONSTEXPR char_type
+      to_char_type(const int_type& __c)
+      { return static_cast<char_type>(__c); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      to_int_type(const char_type& __c)
+      { return static_cast<int_type>(__c); }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      eof()
+      { return static_cast<int_type>(_GLIBCXX_STDIO_EOF); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      not_eof(const int_type& __c)
+      { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
+    };
+
+  template<typename _CharT>
+    int
+    char_traits<_CharT>::
+    compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
+    {
+      for (std::size_t __i = 0; __i < __n; ++__i)
+	if (lt(__s1[__i], __s2[__i]))
+	  return -1;
+	else if (lt(__s2[__i], __s1[__i]))
+	  return 1;
+      return 0;
+    }
+
+  template<typename _CharT>
+    std::size_t
+    char_traits<_CharT>::
+    length(const char_type* __p)
+    {
+      std::size_t __i = 0;
+      while (!eq(__p[__i], char_type()))
+        ++__i;
+      return __i;
+    }
+
+  template<typename _CharT>
+    const typename char_traits<_CharT>::char_type*
+    char_traits<_CharT>::
+    find(const char_type* __s, std::size_t __n, const char_type& __a)
+    {
+      for (std::size_t __i = 0; __i < __n; ++__i)
+        if (eq(__s[__i], __a))
+          return __s + __i;
+      return 0;
+    }
+
+  template<typename _CharT>
+    typename char_traits<_CharT>::char_type*
+    char_traits<_CharT>::
+    move(char_type* __s1, const char_type* __s2, std::size_t __n)
+    {
+      return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
+						    __n * sizeof(char_type)));
+    }
+
+  template<typename _CharT>
+    typename char_traits<_CharT>::char_type*
+    char_traits<_CharT>::
+    copy(char_type* __s1, const char_type* __s2, std::size_t __n)
+    {
+      // NB: Inline std::copy so no recursive dependencies.
+      std::copy(__s2, __s2 + __n, __s1);
+      return __s1;
+    }
+
+  template<typename _CharT>
+    typename char_traits<_CharT>::char_type*
+    char_traits<_CharT>::
+    assign(char_type* __s, std::size_t __n, char_type __a)
+    {
+      // NB: Inline std::fill_n so no recursive dependencies.
+      std::fill_n(__s, __n, __a);
+      return __s;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 21.1
+  /**
+   *  @brief  Basis for explicit traits specializations.
+   *
+   *  @note  For any given actual character type, this definition is
+   *  probably wrong.  Since this is just a thin wrapper around
+   *  __gnu_cxx::char_traits, it is possible to achieve a more
+   *  appropriate definition by specializing __gnu_cxx::char_traits.
+   *
+   *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
+   *  for advice on how to make use of this class for @a unusual character
+   *  types. Also, check out include/ext/pod_char_traits.h.
+  */
+  template<class _CharT>
+    struct char_traits : public __gnu_cxx::char_traits<_CharT>
+    { };
+
+
+  /// 21.1.3.1  char_traits specializations
+  template<>
+    struct char_traits<char>
+    {
+      typedef char              char_type;
+      typedef int               int_type;
+      typedef streampos         pos_type;
+      typedef streamoff         off_type;
+      typedef mbstate_t         state_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, size_t __n)
+      { return __builtin_memcmp(__s1, __s2, __n); }
+
+      static size_t
+      length(const char_type* __s)
+      { return __builtin_strlen(__s); }
+
+      static const char_type*
+      find(const char_type* __s, size_t __n, const char_type& __a)
+      { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); }
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, size_t __n)
+      { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); }
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, size_t __n)
+      { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); }
+
+      static char_type*
+      assign(char_type* __s, size_t __n, char_type __a)
+      { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); }
+
+      static _GLIBCXX_CONSTEXPR char_type
+      to_char_type(const int_type& __c)
+      { return static_cast<char_type>(__c); }
+
+      // To keep both the byte 0xff and the eof symbol 0xffffffff
+      // from ending up as 0xffffffff.
+      static _GLIBCXX_CONSTEXPR int_type
+      to_int_type(const char_type& __c)
+      { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      eof()
+      { return static_cast<int_type>(_GLIBCXX_STDIO_EOF); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      not_eof(const int_type& __c)
+      { return (__c == eof()) ? 0 : __c; }
+  };
+
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// 21.1.3.2  char_traits specializations
+  template<>
+    struct char_traits<wchar_t>
+    {
+      typedef wchar_t           char_type;
+      typedef wint_t            int_type;
+      typedef streamoff         off_type;
+      typedef wstreampos        pos_type;
+      typedef mbstate_t         state_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, size_t __n)
+      { return wmemcmp(__s1, __s2, __n); }
+
+      static size_t
+      length(const char_type* __s)
+      { return wcslen(__s); }
+
+      static const char_type*
+      find(const char_type* __s, size_t __n, const char_type& __a)
+      { return wmemchr(__s, __a, __n); }
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, size_t __n)
+      { return wmemmove(__s1, __s2, __n); }
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, size_t __n)
+      { return wmemcpy(__s1, __s2, __n); }
+
+      static char_type*
+      assign(char_type* __s, size_t __n, char_type __a)
+      { return wmemset(__s, __a, __n); }
+
+      static _GLIBCXX_CONSTEXPR char_type
+      to_char_type(const int_type& __c)
+      { return char_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      to_int_type(const char_type& __c)
+      { return int_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      eof()
+      { return static_cast<int_type>(WEOF); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      not_eof(const int_type& __c)
+      { return eq_int_type(__c, eof()) ? 0 : __c; }
+  };
+#endif //_GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
+     && defined(_GLIBCXX_USE_C99_STDINT_TR1))
+
+#include <cstdint>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    struct char_traits<char16_t>
+    {
+      typedef char16_t          char_type;
+      typedef uint_least16_t    int_type;
+      typedef streamoff         off_type;
+      typedef u16streampos      pos_type;
+      typedef mbstate_t         state_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  if (lt(__s1[__i], __s2[__i]))
+	    return -1;
+	  else if (lt(__s2[__i], __s1[__i]))
+	    return 1;
+	return 0;
+      }
+
+      static size_t
+      length(const char_type* __s)
+      {
+	size_t __i = 0;
+	while (!eq(__s[__i], char_type()))
+	  ++__i;
+	return __i;
+      }
+
+      static const char_type*
+      find(const char_type* __s, size_t __n, const char_type& __a)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  if (eq(__s[__i], __a))
+	    return __s + __i;
+	return 0;
+      }
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	return (static_cast<char_type*>
+		(__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
+      }
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	return (static_cast<char_type*>
+		(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
+      }
+
+      static char_type*
+      assign(char_type* __s, size_t __n, char_type __a)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  assign(__s[__i], __a);
+	return __s;
+      }
+
+      static _GLIBCXX_CONSTEXPR char_type
+      to_char_type(const int_type& __c)
+      { return char_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      to_int_type(const char_type& __c)
+      { return int_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      eof()
+      { return static_cast<int_type>(-1); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      not_eof(const int_type& __c)
+      { return eq_int_type(__c, eof()) ? 0 : __c; }
+    };
+
+  template<>
+    struct char_traits<char32_t>
+    {
+      typedef char32_t          char_type;
+      typedef uint_least32_t    int_type;
+      typedef streamoff         off_type;
+      typedef u32streampos      pos_type;
+      typedef mbstate_t         state_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  if (lt(__s1[__i], __s2[__i]))
+	    return -1;
+	  else if (lt(__s2[__i], __s1[__i]))
+	    return 1;
+	return 0;
+      }
+
+      static size_t
+      length(const char_type* __s)
+      {
+	size_t __i = 0;
+	while (!eq(__s[__i], char_type()))
+	  ++__i;
+	return __i;
+      }
+
+      static const char_type*
+      find(const char_type* __s, size_t __n, const char_type& __a)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  if (eq(__s[__i], __a))
+	    return __s + __i;
+	return 0;
+      }
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	return (static_cast<char_type*>
+		(__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
+      }
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, size_t __n)
+      { 
+	return (static_cast<char_type*>
+		(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
+      }
+
+      static char_type*
+      assign(char_type* __s, size_t __n, char_type __a)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  assign(__s[__i], __a);
+	return __s;
+      }
+
+      static _GLIBCXX_CONSTEXPR char_type
+      to_char_type(const int_type& __c)
+      { return char_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      to_int_type(const char_type& __c)
+      { return int_type(__c); }
+
+      static _GLIBCXX_CONSTEXPR bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      eof()
+      { return static_cast<int_type>(-1); }
+
+      static _GLIBCXX_CONSTEXPR int_type
+      not_eof(const int_type& __c)
+      { return eq_int_type(__c, eof()) ? 0 : __c; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif 
+
+#endif // _CHAR_TRAITS_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/codecvt.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/codecvt.h
new file mode 100644
index 000000000..6ae9bbe26
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/codecvt.h
@@ -0,0 +1,506 @@
+// Locale support (codecvt) -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/codecvt.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.2.1.5 Template class codecvt
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#ifndef _CODECVT_H
+#define _CODECVT_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// Empty base class for codecvt facet [22.2.1.5].
+  class codecvt_base
+  {
+  public:
+    enum result
+    {
+      ok,
+      partial,
+      error,
+      noconv
+    };
+  };
+
+  /**
+   *  @brief  Common base for codecvt functions.
+   *
+   *  This template class provides implementations of the public functions
+   *  that forward to the protected virtual functions.
+   *
+   *  This template also provides abstract stubs for the protected virtual
+   *  functions.
+  */
+  template<typename _InternT, typename _ExternT, typename _StateT>
+    class __codecvt_abstract_base
+    : public locale::facet, public codecvt_base
+    {
+    public:
+      // Types:
+      typedef codecvt_base::result	result;
+      typedef _InternT			intern_type;
+      typedef _ExternT			extern_type;
+      typedef _StateT			state_type;
+
+      // 22.2.1.5.1 codecvt members
+      /**
+       *  @brief  Convert from internal to external character set.
+       *
+       *  Converts input string of intern_type to output string of
+       *  extern_type.  This is analogous to wcsrtombs.  It does this by
+       *  calling codecvt::do_out.
+       *
+       *  The source and destination character sets are determined by the
+       *  facet's locale, internal and external types.
+       *
+       *  The characters in [from,from_end) are converted and written to
+       *  [to,to_end).  from_next and to_next are set to point to the
+       *  character following the last successfully converted character,
+       *  respectively.  If the result needed no conversion, from_next and
+       *  to_next are not affected.
+       *
+       *  The @a state argument should be initialized if the input is at the
+       *  beginning and carried from a previous call if continuing
+       *  conversion.  There are no guarantees about how @a state is used.
+       *
+       *  The result returned is a member of codecvt_base::result.  If
+       *  all the input is converted, returns codecvt_base::ok.  If no
+       *  conversion is necessary, returns codecvt_base::noconv.  If
+       *  the input ends early or there is insufficient space in the
+       *  output, returns codecvt_base::partial.  Otherwise the
+       *  conversion failed and codecvt_base::error is returned.
+       *
+       *  @param  state  Persistent conversion state data.
+       *  @param  from  Start of input.
+       *  @param  from_end  End of input.
+       *  @param  from_next  Returns start of unconverted data.
+       *  @param  to  Start of output buffer.
+       *  @param  to_end  End of output buffer.
+       *  @param  to_next  Returns start of unused output area.
+       *  @return  codecvt_base::result.
+      */
+      result
+      out(state_type& __state, const intern_type* __from,
+	  const intern_type* __from_end, const intern_type*& __from_next,
+	  extern_type* __to, extern_type* __to_end,
+	  extern_type*& __to_next) const
+      {
+	return this->do_out(__state, __from, __from_end, __from_next,
+			    __to, __to_end, __to_next);
+      }
+
+      /**
+       *  @brief  Reset conversion state.
+       *
+       *  Writes characters to output that would restore @a state to initial
+       *  conditions.  The idea is that if a partial conversion occurs, then
+       *  the converting the characters written by this function would leave
+       *  the state in initial conditions, rather than partial conversion
+       *  state.  It does this by calling codecvt::do_unshift().
+       *
+       *  For example, if 4 external characters always converted to 1 internal
+       *  character, and input to in() had 6 external characters with state
+       *  saved, this function would write two characters to the output and
+       *  set the state to initialized conditions.
+       *
+       *  The source and destination character sets are determined by the
+       *  facet's locale, internal and external types.
+       *
+       *  The result returned is a member of codecvt_base::result.  If the
+       *  state could be reset and data written, returns codecvt_base::ok.  If
+       *  no conversion is necessary, returns codecvt_base::noconv.  If the
+       *  output has insufficient space, returns codecvt_base::partial.
+       *  Otherwise the reset failed and codecvt_base::error is returned.
+       *
+       *  @param  state  Persistent conversion state data.
+       *  @param  to  Start of output buffer.
+       *  @param  to_end  End of output buffer.
+       *  @param  to_next  Returns start of unused output area.
+       *  @return  codecvt_base::result.
+      */
+      result
+      unshift(state_type& __state, extern_type* __to, extern_type* __to_end,
+	      extern_type*& __to_next) const
+      { return this->do_unshift(__state, __to,__to_end,__to_next); }
+
+      /**
+       *  @brief  Convert from external to internal character set.
+       *
+       *  Converts input string of extern_type to output string of
+       *  intern_type.  This is analogous to mbsrtowcs.  It does this by
+       *  calling codecvt::do_in.
+       *
+       *  The source and destination character sets are determined by the
+       *  facet's locale, internal and external types.
+       *
+       *  The characters in [from,from_end) are converted and written to
+       *  [to,to_end).  from_next and to_next are set to point to the
+       *  character following the last successfully converted character,
+       *  respectively.  If the result needed no conversion, from_next and
+       *  to_next are not affected.
+       *
+       *  The @a state argument should be initialized if the input is at the
+       *  beginning and carried from a previous call if continuing
+       *  conversion.  There are no guarantees about how @a state is used.
+       *
+       *  The result returned is a member of codecvt_base::result.  If
+       *  all the input is converted, returns codecvt_base::ok.  If no
+       *  conversion is necessary, returns codecvt_base::noconv.  If
+       *  the input ends early or there is insufficient space in the
+       *  output, returns codecvt_base::partial.  Otherwise the
+       *  conversion failed and codecvt_base::error is returned.
+       *
+       *  @param  state  Persistent conversion state data.
+       *  @param  from  Start of input.
+       *  @param  from_end  End of input.
+       *  @param  from_next  Returns start of unconverted data.
+       *  @param  to  Start of output buffer.
+       *  @param  to_end  End of output buffer.
+       *  @param  to_next  Returns start of unused output area.
+       *  @return  codecvt_base::result.
+      */
+      result
+      in(state_type& __state, const extern_type* __from,
+	 const extern_type* __from_end, const extern_type*& __from_next,
+	 intern_type* __to, intern_type* __to_end,
+	 intern_type*& __to_next) const
+      {
+	return this->do_in(__state, __from, __from_end, __from_next,
+			   __to, __to_end, __to_next);
+      }
+
+      int
+      encoding() const throw()
+      { return this->do_encoding(); }
+
+      bool
+      always_noconv() const throw()
+      { return this->do_always_noconv(); }
+
+      int
+      length(state_type& __state, const extern_type* __from,
+	     const extern_type* __end, size_t __max) const
+      { return this->do_length(__state, __from, __end, __max); }
+
+      int
+      max_length() const throw()
+      { return this->do_max_length(); }
+
+    protected:
+      explicit
+      __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { }
+
+      virtual
+      ~__codecvt_abstract_base() { }
+
+      /**
+       *  @brief  Convert from internal to external character set.
+       *
+       *  Converts input string of intern_type to output string of
+       *  extern_type.  This function is a hook for derived classes to change
+       *  the value returned.  @see out for more information.
+      */
+      virtual result
+      do_out(state_type& __state, const intern_type* __from,
+	     const intern_type* __from_end, const intern_type*& __from_next,
+	     extern_type* __to, extern_type* __to_end,
+	     extern_type*& __to_next) const = 0;
+
+      virtual result
+      do_unshift(state_type& __state, extern_type* __to,
+		 extern_type* __to_end, extern_type*& __to_next) const = 0;
+
+      virtual result
+      do_in(state_type& __state, const extern_type* __from,
+	    const extern_type* __from_end, const extern_type*& __from_next,
+	    intern_type* __to, intern_type* __to_end,
+	    intern_type*& __to_next) const = 0;
+
+      virtual int
+      do_encoding() const throw() = 0;
+
+      virtual bool
+      do_always_noconv() const throw() = 0;
+
+      virtual int
+      do_length(state_type&, const extern_type* __from,
+		const extern_type* __end, size_t __max) const = 0;
+
+      virtual int
+      do_max_length() const throw() = 0;
+    };
+
+
+
+  /**
+   *  @brief  Primary class template codecvt.
+   *  @ingroup locales
+   *
+   *  NB: Generic, mostly useless implementation.
+   *
+  */
+   template<typename _InternT, typename _ExternT, typename _StateT>
+    class codecvt
+    : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
+    {
+    public:
+      // Types:
+      typedef codecvt_base::result	result;
+      typedef _InternT			intern_type;
+      typedef _ExternT			extern_type;
+      typedef _StateT			state_type;
+
+    protected:
+      __c_locale			_M_c_locale_codecvt;
+
+    public:
+      static locale::id			id;
+
+      explicit
+      codecvt(size_t __refs = 0)
+      : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { }
+
+      explicit
+      codecvt(__c_locale __cloc, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~codecvt() { }
+
+      virtual result
+      do_out(state_type& __state, const intern_type* __from,
+	     const intern_type* __from_end, const intern_type*& __from_next,
+	     extern_type* __to, extern_type* __to_end,
+	     extern_type*& __to_next) const;
+
+      virtual result
+      do_unshift(state_type& __state, extern_type* __to,
+		 extern_type* __to_end, extern_type*& __to_next) const;
+
+      virtual result
+      do_in(state_type& __state, const extern_type* __from,
+	    const extern_type* __from_end, const extern_type*& __from_next,
+	    intern_type* __to, intern_type* __to_end,
+	    intern_type*& __to_next) const;
+
+      virtual int
+      do_encoding() const throw();
+
+      virtual bool
+      do_always_noconv() const throw();
+
+      virtual int
+      do_length(state_type&, const extern_type* __from,
+		const extern_type* __end, size_t __max) const;
+
+      virtual int
+      do_max_length() const throw();
+    };
+
+  template<typename _InternT, typename _ExternT, typename _StateT>
+    locale::id codecvt<_InternT, _ExternT, _StateT>::id;
+
+  /// class codecvt<char, char, mbstate_t> specialization.
+  template<>
+    class codecvt<char, char, mbstate_t>
+    : public __codecvt_abstract_base<char, char, mbstate_t>
+    {
+    public:
+      // Types:
+      typedef char			intern_type;
+      typedef char			extern_type;
+      typedef mbstate_t			state_type;
+
+    protected:
+      __c_locale			_M_c_locale_codecvt;
+
+    public:
+      static locale::id id;
+
+      explicit
+      codecvt(size_t __refs = 0);
+
+      explicit
+      codecvt(__c_locale __cloc, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~codecvt();
+
+      virtual result
+      do_out(state_type& __state, const intern_type* __from,
+	     const intern_type* __from_end, const intern_type*& __from_next,
+	     extern_type* __to, extern_type* __to_end,
+	     extern_type*& __to_next) const;
+
+      virtual result
+      do_unshift(state_type& __state, extern_type* __to,
+		 extern_type* __to_end, extern_type*& __to_next) const;
+
+      virtual result
+      do_in(state_type& __state, const extern_type* __from,
+	    const extern_type* __from_end, const extern_type*& __from_next,
+	    intern_type* __to, intern_type* __to_end,
+	    intern_type*& __to_next) const;
+
+      virtual int
+      do_encoding() const throw();
+
+      virtual bool
+      do_always_noconv() const throw();
+
+      virtual int
+      do_length(state_type&, const extern_type* __from,
+		const extern_type* __end, size_t __max) const;
+
+      virtual int
+      do_max_length() const throw();
+  };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// class codecvt<wchar_t, char, mbstate_t> specialization.
+  template<>
+    class codecvt<wchar_t, char, mbstate_t>
+    : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
+    {
+    public:
+      // Types:
+      typedef wchar_t			intern_type;
+      typedef char			extern_type;
+      typedef mbstate_t			state_type;
+
+    protected:
+      __c_locale			_M_c_locale_codecvt;
+
+    public:
+      static locale::id			id;
+
+      explicit
+      codecvt(size_t __refs = 0);
+
+      explicit
+      codecvt(__c_locale __cloc, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~codecvt();
+
+      virtual result
+      do_out(state_type& __state, const intern_type* __from,
+	     const intern_type* __from_end, const intern_type*& __from_next,
+	     extern_type* __to, extern_type* __to_end,
+	     extern_type*& __to_next) const;
+
+      virtual result
+      do_unshift(state_type& __state,
+		 extern_type* __to, extern_type* __to_end,
+		 extern_type*& __to_next) const;
+
+      virtual result
+      do_in(state_type& __state,
+	     const extern_type* __from, const extern_type* __from_end,
+	     const extern_type*& __from_next,
+	     intern_type* __to, intern_type* __to_end,
+	     intern_type*& __to_next) const;
+
+      virtual
+      int do_encoding() const throw();
+
+      virtual
+      bool do_always_noconv() const throw();
+
+      virtual
+      int do_length(state_type&, const extern_type* __from,
+		    const extern_type* __end, size_t __max) const;
+
+      virtual int
+      do_max_length() const throw();
+    };
+#endif //_GLIBCXX_USE_WCHAR_T
+
+  /// class codecvt_byname [22.2.1.6].
+  template<typename _InternT, typename _ExternT, typename _StateT>
+    class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
+    {
+    public:
+      explicit
+      codecvt_byname(const char* __s, size_t __refs = 0)
+      : codecvt<_InternT, _ExternT, _StateT>(__refs)
+      {
+	if (__builtin_strcmp(__s, "C") != 0
+	    && __builtin_strcmp(__s, "POSIX") != 0)
+	  {
+	    this->_S_destroy_c_locale(this->_M_c_locale_codecvt);
+	    this->_S_create_c_locale(this->_M_c_locale_codecvt, __s);
+	  }
+      }
+
+    protected:
+      virtual
+      ~codecvt_byname() { }
+    };
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class codecvt_byname<char, char, mbstate_t>;
+
+  extern template
+    const codecvt<char, char, mbstate_t>&
+    use_facet<codecvt<char, char, mbstate_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<codecvt<char, char, mbstate_t> >(const locale&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class codecvt_byname<wchar_t, char, mbstate_t>;
+
+  extern template
+    const codecvt<wchar_t, char, mbstate_t>&
+    use_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // _CODECVT_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/concept_check.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/concept_check.h
new file mode 100644
index 000000000..9517e5cd7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/concept_check.h
@@ -0,0 +1,80 @@
+// Concept-checking control -*- C++ -*-
+
+// Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/concept_check.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ */
+
+#ifndef _CONCEPT_CHECK_H
+#define _CONCEPT_CHECK_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+// All places in libstdc++-v3 where these are used, or /might/ be used, or
+// don't need to be used, or perhaps /should/ be used, are commented with
+// "concept requirements" (and maybe some more text).  So grep like crazy
+// if you're looking for additional places to use these.
+
+// Concept-checking code is off by default unless users turn it on via
+// configure options or editing c++config.h.
+
+#ifndef _GLIBCXX_CONCEPT_CHECKS
+
+#define __glibcxx_function_requires(...)
+#define __glibcxx_class_requires(_a,_b)
+#define __glibcxx_class_requires2(_a,_b,_c)
+#define __glibcxx_class_requires3(_a,_b,_c,_d)
+#define __glibcxx_class_requires4(_a,_b,_c,_d,_e)
+
+#else // the checks are on
+
+#include <bits/boost_concept_check.h>
+
+// Note that the obvious and elegant approach of
+//
+//#define glibcxx_function_requires(C) boost::function_requires< boost::C >()
+//
+// won't work due to concept templates with more than one parameter, e.g.,
+// BinaryPredicateConcept.  The preprocessor tries to split things up on
+// the commas in the template argument list.  We can't use an inner pair of
+// parenthesis to hide the commas, because "boost::(Temp<Foo,Bar>)" isn't
+// a valid instantiation pattern.  Thus, we steal a feature from C99.
+
+#define __glibcxx_function_requires(...)                                 \
+            __gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >();
+#define __glibcxx_class_requires(_a,_C)                                  \
+            _GLIBCXX_CLASS_REQUIRES(_a, __gnu_cxx, _C);
+#define __glibcxx_class_requires2(_a,_b,_C)                              \
+            _GLIBCXX_CLASS_REQUIRES2(_a, _b, __gnu_cxx, _C);
+#define __glibcxx_class_requires3(_a,_b,_c,_C)                           \
+            _GLIBCXX_CLASS_REQUIRES3(_a, _b, _c, __gnu_cxx, _C);
+#define __glibcxx_class_requires4(_a,_b,_c,_d,_C)                        \
+            _GLIBCXX_CLASS_REQUIRES4(_a, _b, _c, _d, __gnu_cxx, _C);
+
+#endif // enable/disable
+
+#endif // _GLIBCXX_CONCEPT_CHECK
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/cpp_type_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/cpp_type_traits.h
new file mode 100644
index 000000000..166890fb8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/cpp_type_traits.h
@@ -0,0 +1,425 @@
+// The  -*- C++ -*- type traits classes for internal use in libstdc++
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cpp_type_traits.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/type_traits}
+ */
+
+// Written by Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
+
+#ifndef _CPP_TYPE_TRAITS_H
+#define _CPP_TYPE_TRAITS_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+//
+// This file provides some compile-time information about various types.
+// These representations were designed, on purpose, to be constant-expressions
+// and not types as found in <bits/type_traits.h>.  In particular, they
+// can be used in control structures and the optimizer hopefully will do
+// the obvious thing.
+//
+// Why integral expressions, and not functions nor types?
+// Firstly, these compile-time entities are used as template-arguments
+// so function return values won't work:  We need compile-time entities.
+// We're left with types and constant  integral expressions.
+// Secondly, from the point of view of ease of use, type-based compile-time
+// information is -not- *that* convenient.  On has to write lots of
+// overloaded functions and to hope that the compiler will select the right
+// one. As a net effect, the overall structure isn't very clear at first
+// glance.
+// Thirdly, partial ordering and overload resolution (of function templates)
+// is highly costly in terms of compiler-resource.  It is a Good Thing to
+// keep these resource consumption as least as possible.
+//
+// See valarray_array.h for a case use.
+//
+// -- Gaby (dosreis@cmla.ens-cachan.fr) 2000-03-06.
+//
+// Update 2005: types are also provided and <bits/type_traits.h> has been
+// removed.
+//
+
+// Forward declaration hack, should really include this from somewhere.
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Iterator, typename _Container>
+    class __normal_iterator;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  struct __true_type { };
+  struct __false_type { };
+
+  template<bool>
+    struct __truth_type
+    { typedef __false_type __type; };
+
+  template<>
+    struct __truth_type<true>
+    { typedef __true_type __type; };
+
+  // N.B. The conversions to bool are needed due to the issue
+  // explained in c++/19404.
+  template<class _Sp, class _Tp>
+    struct __traitor
+    {
+      enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
+      typedef typename __truth_type<__value>::__type __type;
+    };
+
+  // Compare for equality of types.
+  template<typename, typename>
+    struct __are_same
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<typename _Tp>
+    struct __are_same<_Tp, _Tp>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  // Holds if the template-argument is a void type.
+  template<typename _Tp>
+    struct __is_void
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<>
+    struct __is_void<void>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // Integer types
+  //
+  template<typename _Tp>
+    struct __is_integer
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  // Thirteen specializations (yes there are eleven standard integer
+  // types; <em>long long</em> and <em>unsigned long long</em> are
+  // supported as extensions)
+  template<>
+    struct __is_integer<bool>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<signed char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<unsigned char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+# ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    struct __is_integer<wchar_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+# endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<>
+    struct __is_integer<char16_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<char32_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+#endif
+
+  template<>
+    struct __is_integer<short>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<unsigned short>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<int>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<unsigned int>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<long>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<unsigned long>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<long long>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<unsigned long long>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // Floating point types
+  //
+  template<typename _Tp>
+    struct __is_floating
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  // three specializations (float, double and 'long double')
+  template<>
+    struct __is_floating<float>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_floating<double>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_floating<long double>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // Pointer types
+  //
+  template<typename _Tp>
+    struct __is_pointer
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<typename _Tp>
+    struct __is_pointer<_Tp*>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // Normal iterator type
+  //
+  template<typename _Tp>
+    struct __is_normal_iterator
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<typename _Iterator, typename _Container>
+    struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
+							      _Container> >
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // An arithmetic type is an integer type or a floating point type
+  //
+  template<typename _Tp>
+    struct __is_arithmetic
+    : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
+    { };
+
+  //
+  // A fundamental type is `void' or and arithmetic type
+  //
+  template<typename _Tp>
+    struct __is_fundamental
+    : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
+    { };
+
+  //
+  // A scalar type is an arithmetic type or a pointer type
+  // 
+  template<typename _Tp>
+    struct __is_scalar
+    : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
+    { };
+
+  //
+  // For use in std::copy and std::find overloads for streambuf iterators.
+  //
+  template<typename _Tp>
+    struct __is_char
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<>
+    struct __is_char<char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    struct __is_char<wchar_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+#endif
+
+  template<typename _Tp>
+    struct __is_byte
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+  template<>
+    struct __is_byte<char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_byte<signed char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_byte<unsigned char>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  //
+  // Move iterator type
+  //
+  template<typename _Tp>
+    struct __is_move_iterator
+    {
+      enum { __value = 0 };
+      typedef __false_type __type;
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Iterator>
+    class move_iterator;
+
+  template<typename _Iterator>
+    struct __is_move_iterator< move_iterator<_Iterator> >
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif //_CPP_TYPE_TRAITS_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/deque.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/deque.tcc
new file mode 100644
index 000000000..389fc80d9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/deque.tcc
@@ -0,0 +1,1046 @@
+// Deque implementation (out of line) -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/deque.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{deque}
+ */
+
+#ifndef _DEQUE_TCC
+#define _DEQUE_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_default_initialize()
+    {
+      _Map_pointer __cur;
+      __try
+        {
+          for (__cur = this->_M_impl._M_start._M_node;
+	       __cur < this->_M_impl._M_finish._M_node;
+	       ++__cur)
+            std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(),
+					   _M_get_Tp_allocator());
+          std::__uninitialized_default_a(this->_M_impl._M_finish._M_first,
+					 this->_M_impl._M_finish._M_cur,
+					 _M_get_Tp_allocator());
+        }
+      __catch(...)
+        {
+          std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
+			_M_get_Tp_allocator());
+          __throw_exception_again;
+        }
+    }
+#endif
+
+  template <typename _Tp, typename _Alloc>
+    deque<_Tp, _Alloc>&
+    deque<_Tp, _Alloc>::
+    operator=(const deque& __x)
+    {
+      const size_type __len = size();
+      if (&__x != this)
+	{
+	  if (__len >= __x.size())
+	    _M_erase_at_end(std::copy(__x.begin(), __x.end(),
+				      this->_M_impl._M_start));
+	  else
+	    {
+	      const_iterator __mid = __x.begin() + difference_type(__len);
+	      std::copy(__x.begin(), __mid, this->_M_impl._M_start);
+	      insert(this->_M_impl._M_finish, __mid, __x.end());
+	    }
+	}
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      void
+      deque<_Tp, _Alloc>::
+      emplace_front(_Args&&... __args)
+      {
+	if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1,
+				    std::forward<_Args>(__args)...);
+	    --this->_M_impl._M_start._M_cur;
+	  }
+	else
+	  _M_push_front_aux(std::forward<_Args>(__args)...);
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      void
+      deque<_Tp, _Alloc>::
+      emplace_back(_Args&&... __args)
+      {
+	if (this->_M_impl._M_finish._M_cur
+	    != this->_M_impl._M_finish._M_last - 1)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_finish._M_cur,
+				    std::forward<_Args>(__args)...);
+	    ++this->_M_impl._M_finish._M_cur;
+	  }
+	else
+	  _M_push_back_aux(std::forward<_Args>(__args)...);
+      }
+#endif
+
+  template <typename _Tp, typename _Alloc>
+    typename deque<_Tp, _Alloc>::iterator
+    deque<_Tp, _Alloc>::
+    insert(iterator __position, const value_type& __x)
+    {
+      if (__position._M_cur == this->_M_impl._M_start._M_cur)
+	{
+	  push_front(__x);
+	  return this->_M_impl._M_start;
+	}
+      else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
+	{
+	  push_back(__x);
+	  iterator __tmp = this->_M_impl._M_finish;
+	  --__tmp;
+	  return __tmp;
+	}
+      else
+        return _M_insert_aux(__position, __x);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      typename deque<_Tp, _Alloc>::iterator
+      deque<_Tp, _Alloc>::
+      emplace(iterator __position, _Args&&... __args)
+      {
+	if (__position._M_cur == this->_M_impl._M_start._M_cur)
+	  {
+	    push_front(std::forward<_Args>(__args)...);
+	    return this->_M_impl._M_start;
+	  }
+	else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
+	  {
+	    push_back(std::forward<_Args>(__args)...);
+	    iterator __tmp = this->_M_impl._M_finish;
+	    --__tmp;
+	    return __tmp;
+	  }
+	else
+	  return _M_insert_aux(__position, std::forward<_Args>(__args)...);
+      }
+#endif
+
+  template <typename _Tp, typename _Alloc>
+    typename deque<_Tp, _Alloc>::iterator
+    deque<_Tp, _Alloc>::
+    erase(iterator __position)
+    {
+      iterator __next = __position;
+      ++__next;
+      const difference_type __index = __position - begin();
+      if (static_cast<size_type>(__index) < (size() >> 1))
+	{
+	  if (__position != begin())
+	    _GLIBCXX_MOVE_BACKWARD3(begin(), __position, __next);
+	  pop_front();
+	}
+      else
+	{
+	  if (__next != end())
+	    _GLIBCXX_MOVE3(__next, end(), __position);
+	  pop_back();
+	}
+      return begin() + __index;
+    }
+
+  template <typename _Tp, typename _Alloc>
+    typename deque<_Tp, _Alloc>::iterator
+    deque<_Tp, _Alloc>::
+    erase(iterator __first, iterator __last)
+    {
+      if (__first == begin() && __last == end())
+	{
+	  clear();
+	  return end();
+	}
+      else
+	{
+	  const difference_type __n = __last - __first;
+	  const difference_type __elems_before = __first - begin();
+	  if (static_cast<size_type>(__elems_before) <= (size() - __n) / 2)
+	    {
+	      if (__first != begin())
+		_GLIBCXX_MOVE_BACKWARD3(begin(), __first, __last);
+	      _M_erase_at_begin(begin() + __n);
+	    }
+	  else
+	    {
+	      if (__last != end())
+		_GLIBCXX_MOVE3(__last, end(), __first);
+	      _M_erase_at_end(end() - __n);
+	    }
+	  return begin() + __elems_before;
+	}
+    }
+
+  template <typename _Tp, class _Alloc>
+    template <typename _InputIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_assign_aux(_InputIterator __first, _InputIterator __last,
+		    std::input_iterator_tag)
+      {
+        iterator __cur = begin();
+        for (; __first != __last && __cur != end(); ++__cur, ++__first)
+          *__cur = *__first;
+        if (__first == __last)
+          _M_erase_at_end(__cur);
+        else
+          insert(end(), __first, __last);
+      }
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
+    {
+      if (__pos._M_cur == this->_M_impl._M_start._M_cur)
+	{
+	  iterator __new_start = _M_reserve_elements_at_front(__n);
+	  __try
+	    {
+	      std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start,
+					  __x, _M_get_Tp_allocator());
+	      this->_M_impl._M_start = __new_start;
+	    }
+	  __catch(...)
+	    {
+	      _M_destroy_nodes(__new_start._M_node,
+			       this->_M_impl._M_start._M_node);
+	      __throw_exception_again;
+	    }
+	}
+      else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
+	{
+	  iterator __new_finish = _M_reserve_elements_at_back(__n);
+	  __try
+	    {
+	      std::__uninitialized_fill_a(this->_M_impl._M_finish,
+					  __new_finish, __x,
+					  _M_get_Tp_allocator());
+	      this->_M_impl._M_finish = __new_finish;
+	    }
+	  __catch(...)
+	    {
+	      _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
+			       __new_finish._M_node + 1);
+	      __throw_exception_again;
+	    }
+	}
+      else
+        _M_insert_aux(__pos, __n, __x);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_default_append(size_type __n)
+    {
+      if (__n)
+	{
+	  iterator __new_finish = _M_reserve_elements_at_back(__n);
+	  __try
+	    {
+	      std::__uninitialized_default_a(this->_M_impl._M_finish,
+					     __new_finish,
+					     _M_get_Tp_allocator());
+	      this->_M_impl._M_finish = __new_finish;
+	    }
+	  __catch(...)
+	    {
+	      _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
+			       __new_finish._M_node + 1);
+	      __throw_exception_again;
+	    }
+	}
+    }
+#endif
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_fill_initialize(const value_type& __value)
+    {
+      _Map_pointer __cur;
+      __try
+        {
+          for (__cur = this->_M_impl._M_start._M_node;
+	       __cur < this->_M_impl._M_finish._M_node;
+	       ++__cur)
+            std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(),
+					__value, _M_get_Tp_allocator());
+          std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first,
+				      this->_M_impl._M_finish._M_cur,
+				      __value, _M_get_Tp_allocator());
+        }
+      __catch(...)
+        {
+          std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
+			_M_get_Tp_allocator());
+          __throw_exception_again;
+        }
+    }
+
+  template <typename _Tp, typename _Alloc>
+    template <typename _InputIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_range_initialize(_InputIterator __first, _InputIterator __last,
+                          std::input_iterator_tag)
+      {
+        this->_M_initialize_map(0);
+        __try
+          {
+            for (; __first != __last; ++__first)
+              push_back(*__first);
+          }
+        __catch(...)
+          {
+            clear();
+            __throw_exception_again;
+          }
+      }
+
+  template <typename _Tp, typename _Alloc>
+    template <typename _ForwardIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
+                          std::forward_iterator_tag)
+      {
+        const size_type __n = std::distance(__first, __last);
+        this->_M_initialize_map(__n);
+
+        _Map_pointer __cur_node;
+        __try
+          {
+            for (__cur_node = this->_M_impl._M_start._M_node;
+                 __cur_node < this->_M_impl._M_finish._M_node;
+                 ++__cur_node)
+	      {
+		_ForwardIterator __mid = __first;
+		std::advance(__mid, _S_buffer_size());
+		std::__uninitialized_copy_a(__first, __mid, *__cur_node,
+					    _M_get_Tp_allocator());
+		__first = __mid;
+	      }
+            std::__uninitialized_copy_a(__first, __last,
+					this->_M_impl._M_finish._M_first,
+					_M_get_Tp_allocator());
+          }
+        __catch(...)
+          {
+            std::_Destroy(this->_M_impl._M_start,
+			  iterator(*__cur_node, __cur_node),
+			  _M_get_Tp_allocator());
+            __throw_exception_again;
+          }
+      }
+
+  // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_last - 1.
+  template<typename _Tp, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename... _Args>
+      void
+      deque<_Tp, _Alloc>::
+      _M_push_back_aux(_Args&&... __args)
+#else
+      void
+      deque<_Tp, _Alloc>::
+      _M_push_back_aux(const value_type& __t)
+#endif
+      {
+	_M_reserve_map_at_back();
+	*(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node();
+	__try
+	  {
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+	    this->_M_impl.construct(this->_M_impl._M_finish._M_cur,
+				    std::forward<_Args>(__args)...);
+#else
+	    this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t);
+#endif
+	    this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node
+						+ 1);
+	    this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first;
+	  }
+	__catch(...)
+	  {
+	    _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1));
+	    __throw_exception_again;
+	  }
+      }
+
+  // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_first.
+  template<typename _Tp, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename... _Args>
+      void
+      deque<_Tp, _Alloc>::
+      _M_push_front_aux(_Args&&... __args)
+#else
+      void
+      deque<_Tp, _Alloc>::
+      _M_push_front_aux(const value_type& __t)
+#endif
+      {
+	_M_reserve_map_at_front();
+	*(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node();
+	__try
+	  {
+	    this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node
+					       - 1);
+	    this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+	    this->_M_impl.construct(this->_M_impl._M_start._M_cur,
+				    std::forward<_Args>(__args)...);
+#else
+	    this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t);
+#endif
+	  }
+	__catch(...)
+	  {
+	    ++this->_M_impl._M_start;
+	    _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1));
+	    __throw_exception_again;
+	  }
+      }
+
+  // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first.
+  template <typename _Tp, typename _Alloc>
+    void deque<_Tp, _Alloc>::
+    _M_pop_back_aux()
+    {
+      _M_deallocate_node(this->_M_impl._M_finish._M_first);
+      this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1);
+      this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1;
+      this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
+    }
+
+  // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_last - 1.
+  // Note that if the deque has at least one element (a precondition for this
+  // member function), and if
+  //   _M_impl._M_start._M_cur == _M_impl._M_start._M_last,
+  // then the deque must have at least two nodes.
+  template <typename _Tp, typename _Alloc>
+    void deque<_Tp, _Alloc>::
+    _M_pop_front_aux()
+    {
+      this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
+      _M_deallocate_node(this->_M_impl._M_start._M_first);
+      this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1);
+      this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first;
+    }
+
+  template <typename _Tp, typename _Alloc>
+    template <typename _InputIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_range_insert_aux(iterator __pos,
+                          _InputIterator __first, _InputIterator __last,
+                          std::input_iterator_tag)
+      { std::copy(__first, __last, std::inserter(*this, __pos)); }
+
+  template <typename _Tp, typename _Alloc>
+    template <typename _ForwardIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_range_insert_aux(iterator __pos,
+                          _ForwardIterator __first, _ForwardIterator __last,
+                          std::forward_iterator_tag)
+      {
+        const size_type __n = std::distance(__first, __last);
+        if (__pos._M_cur == this->_M_impl._M_start._M_cur)
+	  {
+	    iterator __new_start = _M_reserve_elements_at_front(__n);
+	    __try
+	      {
+		std::__uninitialized_copy_a(__first, __last, __new_start,
+					    _M_get_Tp_allocator());
+		this->_M_impl._M_start = __new_start;
+	      }
+	    __catch(...)
+	      {
+		_M_destroy_nodes(__new_start._M_node,
+				 this->_M_impl._M_start._M_node);
+		__throw_exception_again;
+	      }
+	  }
+        else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
+	  {
+	    iterator __new_finish = _M_reserve_elements_at_back(__n);
+	    __try
+	      {
+		std::__uninitialized_copy_a(__first, __last,
+					    this->_M_impl._M_finish,
+					    _M_get_Tp_allocator());
+		this->_M_impl._M_finish = __new_finish;
+	      }
+	    __catch(...)
+	      {
+		_M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
+				 __new_finish._M_node + 1);
+		__throw_exception_again;
+	      }
+	  }
+        else
+          _M_insert_aux(__pos, __first, __last, __n);
+      }
+
+  template<typename _Tp, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename... _Args>
+      typename deque<_Tp, _Alloc>::iterator
+      deque<_Tp, _Alloc>::
+      _M_insert_aux(iterator __pos, _Args&&... __args)
+      {
+	value_type __x_copy(std::forward<_Args>(__args)...); // XXX copy
+#else
+    typename deque<_Tp, _Alloc>::iterator
+      deque<_Tp, _Alloc>::
+      _M_insert_aux(iterator __pos, const value_type& __x)
+      {
+	value_type __x_copy = __x; // XXX copy
+#endif
+	difference_type __index = __pos - this->_M_impl._M_start;
+	if (static_cast<size_type>(__index) < size() / 2)
+	  {
+	    push_front(_GLIBCXX_MOVE(front()));
+	    iterator __front1 = this->_M_impl._M_start;
+	    ++__front1;
+	    iterator __front2 = __front1;
+	    ++__front2;
+	    __pos = this->_M_impl._M_start + __index;
+	    iterator __pos1 = __pos;
+	    ++__pos1;
+	    _GLIBCXX_MOVE3(__front2, __pos1, __front1);
+	  }
+	else
+	  {
+	    push_back(_GLIBCXX_MOVE(back()));
+	    iterator __back1 = this->_M_impl._M_finish;
+	    --__back1;
+	    iterator __back2 = __back1;
+	    --__back2;
+	    __pos = this->_M_impl._M_start + __index;
+	    _GLIBCXX_MOVE_BACKWARD3(__pos, __back2, __back1);
+	  }
+	*__pos = _GLIBCXX_MOVE(__x_copy);
+	return __pos;
+      }
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
+    {
+      const difference_type __elems_before = __pos - this->_M_impl._M_start;
+      const size_type __length = this->size();
+      value_type __x_copy = __x;
+      if (__elems_before < difference_type(__length / 2))
+	{
+	  iterator __new_start = _M_reserve_elements_at_front(__n);
+	  iterator __old_start = this->_M_impl._M_start;
+	  __pos = this->_M_impl._M_start + __elems_before;
+	  __try
+	    {
+	      if (__elems_before >= difference_type(__n))
+		{
+		  iterator __start_n = (this->_M_impl._M_start
+					+ difference_type(__n));
+		  std::__uninitialized_move_a(this->_M_impl._M_start,
+					      __start_n, __new_start,
+					      _M_get_Tp_allocator());
+		  this->_M_impl._M_start = __new_start;
+		  _GLIBCXX_MOVE3(__start_n, __pos, __old_start);
+		  std::fill(__pos - difference_type(__n), __pos, __x_copy);
+		}
+	      else
+		{
+		  std::__uninitialized_move_fill(this->_M_impl._M_start,
+						 __pos, __new_start,
+						 this->_M_impl._M_start,
+						 __x_copy,
+						 _M_get_Tp_allocator());
+		  this->_M_impl._M_start = __new_start;
+		  std::fill(__old_start, __pos, __x_copy);
+		}
+	    }
+	  __catch(...)
+	    {
+	      _M_destroy_nodes(__new_start._M_node,
+			       this->_M_impl._M_start._M_node);
+	      __throw_exception_again;
+	    }
+	}
+      else
+	{
+	  iterator __new_finish = _M_reserve_elements_at_back(__n);
+	  iterator __old_finish = this->_M_impl._M_finish;
+	  const difference_type __elems_after =
+	    difference_type(__length) - __elems_before;
+	  __pos = this->_M_impl._M_finish - __elems_after;
+	  __try
+	    {
+	      if (__elems_after > difference_type(__n))
+		{
+		  iterator __finish_n = (this->_M_impl._M_finish
+					 - difference_type(__n));
+		  std::__uninitialized_move_a(__finish_n,
+					      this->_M_impl._M_finish,
+					      this->_M_impl._M_finish,
+					      _M_get_Tp_allocator());
+		  this->_M_impl._M_finish = __new_finish;
+		  _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish);
+		  std::fill(__pos, __pos + difference_type(__n), __x_copy);
+		}
+	      else
+		{
+		  std::__uninitialized_fill_move(this->_M_impl._M_finish,
+						 __pos + difference_type(__n),
+						 __x_copy, __pos,
+						 this->_M_impl._M_finish,
+						 _M_get_Tp_allocator());
+		  this->_M_impl._M_finish = __new_finish;
+		  std::fill(__pos, __old_finish, __x_copy);
+		}
+	    }
+	  __catch(...)
+	    {
+	      _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
+			       __new_finish._M_node + 1);
+	      __throw_exception_again;
+	    }
+	}
+    }
+
+  template <typename _Tp, typename _Alloc>
+    template <typename _ForwardIterator>
+      void
+      deque<_Tp, _Alloc>::
+      _M_insert_aux(iterator __pos,
+                    _ForwardIterator __first, _ForwardIterator __last,
+                    size_type __n)
+      {
+        const difference_type __elemsbefore = __pos - this->_M_impl._M_start;
+        const size_type __length = size();
+        if (static_cast<size_type>(__elemsbefore) < __length / 2)
+	  {
+	    iterator __new_start = _M_reserve_elements_at_front(__n);
+	    iterator __old_start = this->_M_impl._M_start;
+	    __pos = this->_M_impl._M_start + __elemsbefore;
+	    __try
+	      {
+		if (__elemsbefore >= difference_type(__n))
+		  {
+		    iterator __start_n = (this->_M_impl._M_start
+					  + difference_type(__n));
+		    std::__uninitialized_move_a(this->_M_impl._M_start,
+						__start_n, __new_start,
+						_M_get_Tp_allocator());
+		    this->_M_impl._M_start = __new_start;
+		    _GLIBCXX_MOVE3(__start_n, __pos, __old_start);
+		    std::copy(__first, __last, __pos - difference_type(__n));
+		  }
+		else
+		  {
+		    _ForwardIterator __mid = __first;
+		    std::advance(__mid, difference_type(__n) - __elemsbefore);
+		    std::__uninitialized_move_copy(this->_M_impl._M_start,
+						   __pos, __first, __mid,
+						   __new_start,
+						   _M_get_Tp_allocator());
+		    this->_M_impl._M_start = __new_start;
+		    std::copy(__mid, __last, __old_start);
+		  }
+	      }
+	    __catch(...)
+	      {
+		_M_destroy_nodes(__new_start._M_node,
+				 this->_M_impl._M_start._M_node);
+		__throw_exception_again;
+	      }
+	  }
+        else
+        {
+          iterator __new_finish = _M_reserve_elements_at_back(__n);
+          iterator __old_finish = this->_M_impl._M_finish;
+          const difference_type __elemsafter =
+            difference_type(__length) - __elemsbefore;
+          __pos = this->_M_impl._M_finish - __elemsafter;
+          __try
+            {
+              if (__elemsafter > difference_type(__n))
+		{
+		  iterator __finish_n = (this->_M_impl._M_finish
+					 - difference_type(__n));
+		  std::__uninitialized_move_a(__finish_n,
+					      this->_M_impl._M_finish,
+					      this->_M_impl._M_finish,
+					      _M_get_Tp_allocator());
+		  this->_M_impl._M_finish = __new_finish;
+		  _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish);
+		  std::copy(__first, __last, __pos);
+		}
+              else
+		{
+		  _ForwardIterator __mid = __first;
+		  std::advance(__mid, __elemsafter);
+		  std::__uninitialized_copy_move(__mid, __last, __pos,
+						 this->_M_impl._M_finish,
+						 this->_M_impl._M_finish,
+						 _M_get_Tp_allocator());
+		  this->_M_impl._M_finish = __new_finish;
+		  std::copy(__first, __mid, __pos);
+		}
+            }
+          __catch(...)
+            {
+              _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
+			       __new_finish._M_node + 1);
+              __throw_exception_again;
+            }
+        }
+      }
+
+   template<typename _Tp, typename _Alloc>
+     void
+     deque<_Tp, _Alloc>::
+     _M_destroy_data_aux(iterator __first, iterator __last)
+     {
+       for (_Map_pointer __node = __first._M_node + 1;
+	    __node < __last._M_node; ++__node)
+	 std::_Destroy(*__node, *__node + _S_buffer_size(),
+		       _M_get_Tp_allocator());
+
+       if (__first._M_node != __last._M_node)
+	 {
+	   std::_Destroy(__first._M_cur, __first._M_last,
+			 _M_get_Tp_allocator());
+	   std::_Destroy(__last._M_first, __last._M_cur,
+			 _M_get_Tp_allocator());
+	 }
+       else
+	 std::_Destroy(__first._M_cur, __last._M_cur,
+		       _M_get_Tp_allocator());
+     }
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_new_elements_at_front(size_type __new_elems)
+    {
+      if (this->max_size() - this->size() < __new_elems)
+	__throw_length_error(__N("deque::_M_new_elements_at_front"));
+
+      const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
+				     / _S_buffer_size());
+      _M_reserve_map_at_front(__new_nodes);
+      size_type __i;
+      __try
+        {
+          for (__i = 1; __i <= __new_nodes; ++__i)
+            *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node();
+        }
+      __catch(...)
+        {
+          for (size_type __j = 1; __j < __i; ++__j)
+            _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j));
+          __throw_exception_again;
+        }
+    }
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_new_elements_at_back(size_type __new_elems)
+    {
+      if (this->max_size() - this->size() < __new_elems)
+	__throw_length_error(__N("deque::_M_new_elements_at_back"));
+
+      const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
+				     / _S_buffer_size());
+      _M_reserve_map_at_back(__new_nodes);
+      size_type __i;
+      __try
+        {
+          for (__i = 1; __i <= __new_nodes; ++__i)
+            *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node();
+        }
+      __catch(...)
+        {
+          for (size_type __j = 1; __j < __i; ++__j)
+            _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j));
+          __throw_exception_again;
+        }
+    }
+
+  template <typename _Tp, typename _Alloc>
+    void
+    deque<_Tp, _Alloc>::
+    _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
+    {
+      const size_type __old_num_nodes
+	= this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1;
+      const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
+
+      _Map_pointer __new_nstart;
+      if (this->_M_impl._M_map_size > 2 * __new_num_nodes)
+	{
+	  __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size
+					 - __new_num_nodes) / 2
+	                 + (__add_at_front ? __nodes_to_add : 0);
+	  if (__new_nstart < this->_M_impl._M_start._M_node)
+	    std::copy(this->_M_impl._M_start._M_node,
+		      this->_M_impl._M_finish._M_node + 1,
+		      __new_nstart);
+	  else
+	    std::copy_backward(this->_M_impl._M_start._M_node,
+			       this->_M_impl._M_finish._M_node + 1,
+			       __new_nstart + __old_num_nodes);
+	}
+      else
+	{
+	  size_type __new_map_size = this->_M_impl._M_map_size
+	                             + std::max(this->_M_impl._M_map_size,
+						__nodes_to_add) + 2;
+
+	  _Map_pointer __new_map = this->_M_allocate_map(__new_map_size);
+	  __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
+	                 + (__add_at_front ? __nodes_to_add : 0);
+	  std::copy(this->_M_impl._M_start._M_node,
+		    this->_M_impl._M_finish._M_node + 1,
+		    __new_nstart);
+	  _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
+
+	  this->_M_impl._M_map = __new_map;
+	  this->_M_impl._M_map_size = __new_map_size;
+	}
+
+      this->_M_impl._M_start._M_set_node(__new_nstart);
+      this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
+    }
+
+  // Overload for deque::iterators, exploiting the "segmented-iterator
+  // optimization".
+  template<typename _Tp>
+    void
+    fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first,
+	 const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value)
+    {
+      typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
+
+      for (typename _Self::_Map_pointer __node = __first._M_node + 1;
+           __node < __last._M_node; ++__node)
+	std::fill(*__node, *__node + _Self::_S_buffer_size(), __value);
+
+      if (__first._M_node != __last._M_node)
+	{
+	  std::fill(__first._M_cur, __first._M_last, __value);
+	  std::fill(__last._M_first, __last._M_cur, __value);
+	}
+      else
+	std::fill(__first._M_cur, __last._M_cur, __value);
+    }
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
+	 _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    {
+      typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
+      typedef typename _Self::difference_type difference_type;
+
+      difference_type __len = __last - __first;
+      while (__len > 0)
+	{
+	  const difference_type __clen
+	    = std::min(__len, std::min(__first._M_last - __first._M_cur,
+				       __result._M_last - __result._M_cur));
+	  std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur);
+	  __first += __clen;
+	  __result += __clen;
+	  __len -= __clen;
+	}
+      return __result;
+    }
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
+		  _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    {
+      typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
+      typedef typename _Self::difference_type difference_type;
+
+      difference_type __len = __last - __first;
+      while (__len > 0)
+	{
+	  difference_type __llen = __last._M_cur - __last._M_first;
+	  _Tp* __lend = __last._M_cur;
+
+	  difference_type __rlen = __result._M_cur - __result._M_first;
+	  _Tp* __rend = __result._M_cur;
+
+	  if (!__llen)
+	    {
+	      __llen = _Self::_S_buffer_size();
+	      __lend = *(__last._M_node - 1) + __llen;
+	    }
+	  if (!__rlen)
+	    {
+	      __rlen = _Self::_S_buffer_size();
+	      __rend = *(__result._M_node - 1) + __rlen;
+	    }
+
+	  const difference_type __clen = std::min(__len,
+						  std::min(__llen, __rlen));
+	  std::copy_backward(__lend - __clen, __lend, __rend);
+	  __last -= __clen;
+	  __result -= __clen;
+	  __len -= __clen;
+	}
+      return __result;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
+	 _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    {
+      typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
+      typedef typename _Self::difference_type difference_type;
+
+      difference_type __len = __last - __first;
+      while (__len > 0)
+	{
+	  const difference_type __clen
+	    = std::min(__len, std::min(__first._M_last - __first._M_cur,
+				       __result._M_last - __result._M_cur));
+	  std::move(__first._M_cur, __first._M_cur + __clen, __result._M_cur);
+	  __first += __clen;
+	  __result += __clen;
+	  __len -= __clen;
+	}
+      return __result;
+    }
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
+		  _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    {
+      typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
+      typedef typename _Self::difference_type difference_type;
+
+      difference_type __len = __last - __first;
+      while (__len > 0)
+	{
+	  difference_type __llen = __last._M_cur - __last._M_first;
+	  _Tp* __lend = __last._M_cur;
+
+	  difference_type __rlen = __result._M_cur - __result._M_first;
+	  _Tp* __rend = __result._M_cur;
+
+	  if (!__llen)
+	    {
+	      __llen = _Self::_S_buffer_size();
+	      __lend = *(__last._M_node - 1) + __llen;
+	    }
+	  if (!__rlen)
+	    {
+	      __rlen = _Self::_S_buffer_size();
+	      __rend = *(__result._M_node - 1) + __rlen;
+	    }
+
+	  const difference_type __clen = std::min(__len,
+						  std::min(__llen, __rlen));
+	  std::move_backward(__lend - __clen, __lend, __rend);
+	  __last -= __clen;
+	  __result -= __clen;
+	  __len -= __clen;
+	}
+      return __result;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.h
new file mode 100644
index 000000000..39c253228
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.h
@@ -0,0 +1,1303 @@
+// <forward_list.h> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/forward_list.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{forward_list}
+ */
+
+#ifndef _FORWARD_LIST_H
+#define _FORWARD_LIST_H 1
+
+#pragma GCC system_header
+
+#include <memory>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief  A helper basic node class for %forward_list.
+   *          This is just a linked list with nothing inside it.
+   *          There are purely list shuffling utility methods here.
+   */
+  struct _Fwd_list_node_base
+  {
+    _Fwd_list_node_base() : _M_next(0) { }
+
+    _Fwd_list_node_base* _M_next;
+
+    _Fwd_list_node_base*
+    _M_transfer_after(_Fwd_list_node_base* __begin)
+    {
+      _Fwd_list_node_base* __end = __begin;
+      while (__end && __end->_M_next)
+	__end = __end->_M_next;
+      return _M_transfer_after(__begin, __end);
+    }
+
+    _Fwd_list_node_base*
+    _M_transfer_after(_Fwd_list_node_base* __begin,
+		      _Fwd_list_node_base* __end)
+    {
+      _Fwd_list_node_base* __keep = __begin->_M_next;
+      if (__end)
+	{
+	  __begin->_M_next = __end->_M_next;
+	  __end->_M_next = _M_next;
+	}
+      else
+	__begin->_M_next = 0;
+      _M_next = __keep;
+      return __end;
+    }
+
+    void
+    _M_reverse_after()
+    {
+      _Fwd_list_node_base* __tail = _M_next;
+      if (!__tail)
+	return;
+      while (_Fwd_list_node_base* __temp = __tail->_M_next)
+	{
+	  _Fwd_list_node_base* __keep = _M_next;
+	  _M_next = __temp;
+	  __tail->_M_next = __temp->_M_next;
+	  _M_next->_M_next = __keep;
+	}
+    }
+  };
+
+  /**
+   *  @brief  A helper node class for %forward_list.
+   *          This is just a linked list with a data value in each node.
+   *          There is a sorting utility method.
+   */
+  template<typename _Tp>
+    struct _Fwd_list_node
+    : public _Fwd_list_node_base
+    {
+      template<typename... _Args>
+        _Fwd_list_node(_Args&&... __args)
+        : _Fwd_list_node_base(), 
+          _M_value(std::forward<_Args>(__args)...) { }
+
+      _Tp _M_value;
+    };
+
+  /**
+   *   @brief A forward_list::iterator.
+   * 
+   *   All the functions are op overloads.
+   */
+  template<typename _Tp>
+    struct _Fwd_list_iterator
+    {
+      typedef _Fwd_list_iterator<_Tp>            _Self;
+      typedef _Fwd_list_node<_Tp>                _Node;
+
+      typedef _Tp                                value_type;
+      typedef _Tp*                               pointer;
+      typedef _Tp&                               reference;
+      typedef ptrdiff_t                          difference_type;
+      typedef std::forward_iterator_tag          iterator_category;
+
+      _Fwd_list_iterator()
+      : _M_node() { }
+
+      explicit
+      _Fwd_list_iterator(_Fwd_list_node_base* __n) 
+      : _M_node(__n) { }
+
+      reference
+      operator*() const
+      { return static_cast<_Node*>(this->_M_node)->_M_value; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Node*>
+				(this->_M_node)->_M_value); }
+
+      _Self&
+      operator++()
+      {
+        _M_node = _M_node->_M_next;
+        return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+        _Self __tmp(*this);
+        _M_node = _M_node->_M_next;
+        return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      _Self
+      _M_next() const
+      {
+        if (_M_node)
+          return _Fwd_list_iterator(_M_node->_M_next);
+        else
+          return _Fwd_list_iterator(0);
+      }
+
+      _Fwd_list_node_base* _M_node;
+    };
+
+  /**
+   *   @brief A forward_list::const_iterator.
+   * 
+   *   All the functions are op overloads.
+   */
+  template<typename _Tp>
+    struct _Fwd_list_const_iterator
+    {
+      typedef _Fwd_list_const_iterator<_Tp>      _Self;
+      typedef const _Fwd_list_node<_Tp>          _Node;
+      typedef _Fwd_list_iterator<_Tp>            iterator;
+
+      typedef _Tp                                value_type;
+      typedef const _Tp*                         pointer;
+      typedef const _Tp&                         reference;
+      typedef ptrdiff_t                          difference_type;
+      typedef std::forward_iterator_tag          iterator_category;
+
+      _Fwd_list_const_iterator()
+      : _M_node() { }
+
+      explicit
+      _Fwd_list_const_iterator(const _Fwd_list_node_base* __n) 
+      : _M_node(__n) { }
+
+      _Fwd_list_const_iterator(const iterator& __iter)
+      : _M_node(__iter._M_node) { }
+
+      reference
+      operator*() const
+      { return static_cast<_Node*>(this->_M_node)->_M_value; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Node*>
+				(this->_M_node)->_M_value); }
+
+      _Self&
+      operator++()
+      {
+        _M_node = _M_node->_M_next;
+        return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+        _Self __tmp(*this);
+        _M_node = _M_node->_M_next;
+        return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      _Self
+      _M_next() const
+      {
+        if (this->_M_node)
+          return _Fwd_list_const_iterator(_M_node->_M_next);
+        else
+          return _Fwd_list_const_iterator(0);
+      }
+
+      const _Fwd_list_node_base* _M_node;
+    };
+
+  /**
+   *  @brief  Forward list iterator equality comparison.
+   */
+  template<typename _Tp>
+    inline bool
+    operator==(const _Fwd_list_iterator<_Tp>& __x,
+               const _Fwd_list_const_iterator<_Tp>& __y)
+    { return __x._M_node == __y._M_node; }
+
+  /**
+   *  @brief  Forward list iterator inequality comparison.
+   */
+  template<typename _Tp>
+    inline bool
+    operator!=(const _Fwd_list_iterator<_Tp>& __x,
+               const _Fwd_list_const_iterator<_Tp>& __y)
+    { return __x._M_node != __y._M_node; }
+
+  /**
+   *  @brief  Base class for %forward_list.
+   */
+  template<typename _Tp, typename _Alloc>
+    struct _Fwd_list_base
+    {
+    protected:
+      typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+      typedef typename _Alloc::template 
+        rebind<_Fwd_list_node<_Tp>>::other _Node_alloc_type;
+
+      struct _Fwd_list_impl 
+      : public _Node_alloc_type
+      {
+        _Fwd_list_node_base _M_head;
+
+        _Fwd_list_impl()
+        : _Node_alloc_type(), _M_head()
+        { }
+
+        _Fwd_list_impl(const _Node_alloc_type& __a)
+        : _Node_alloc_type(__a), _M_head()
+        { }
+      };
+
+      _Fwd_list_impl _M_impl;
+
+    public:
+      typedef _Fwd_list_iterator<_Tp>                 iterator;
+      typedef _Fwd_list_const_iterator<_Tp>           const_iterator;
+      typedef _Fwd_list_node<_Tp>                     _Node;
+
+      _Node_alloc_type&
+      _M_get_Node_allocator()
+      { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
+
+      const _Node_alloc_type&
+      _M_get_Node_allocator() const
+      { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
+
+      _Fwd_list_base()
+      : _M_impl() { }
+
+      _Fwd_list_base(const _Alloc& __a)
+      : _M_impl(__a) { }
+
+      _Fwd_list_base(const _Fwd_list_base& __lst, const _Alloc& __a);
+
+      _Fwd_list_base(_Fwd_list_base&& __lst, const _Alloc& __a)
+      : _M_impl(__a)
+      {
+	this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next;
+	__lst._M_impl._M_head._M_next = 0;
+      }
+
+      _Fwd_list_base(_Fwd_list_base&& __lst)
+      : _M_impl(__lst._M_get_Node_allocator())
+      {
+	this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next;
+	__lst._M_impl._M_head._M_next = 0;
+      }
+
+      ~_Fwd_list_base()
+      { _M_erase_after(&_M_impl._M_head, 0); }
+
+    protected:
+
+      _Node*
+      _M_get_node()
+      { return _M_get_Node_allocator().allocate(1); }
+
+      template<typename... _Args>
+        _Node*
+        _M_create_node(_Args&&... __args)
+        {
+          _Node* __node = this->_M_get_node();
+          __try
+            {
+              _M_get_Node_allocator().construct(__node,
+                                              std::forward<_Args>(__args)...);
+              __node->_M_next = 0;
+            }
+          __catch(...)
+            {
+              this->_M_put_node(__node);
+              __throw_exception_again;
+            }
+          return __node;
+        }
+
+      template<typename... _Args>
+        _Fwd_list_node_base*
+        _M_insert_after(const_iterator __pos, _Args&&... __args);
+
+      void
+      _M_put_node(_Node* __p)
+      { _M_get_Node_allocator().deallocate(__p, 1); }
+
+      _Fwd_list_node_base*
+      _M_erase_after(_Fwd_list_node_base* __pos);
+
+      _Fwd_list_node_base*
+      _M_erase_after(_Fwd_list_node_base* __pos, 
+                     _Fwd_list_node_base* __last);
+    };
+
+  /**
+   *  @brief A standard container with linear time access to elements,
+   *  and fixed time insertion/deletion at any point in the sequence.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#67">sequence</a>, including the
+   *  <a href="tables.html#68">optional sequence requirements</a> with the
+   *  %exception of @c at and @c operator[].
+   *
+   *  This is a @e singly @e linked %list.  Traversal up the
+   *  %list requires linear time, but adding and removing elements (or
+   *  @e nodes) is done in constant time, regardless of where the
+   *  change takes place.  Unlike std::vector and std::deque,
+   *  random-access iterators are not provided, so subscripting ( @c
+   *  [] ) access is not allowed.  For algorithms which only need
+   *  sequential access, this lack makes no difference.
+   *
+   *  Also unlike the other standard containers, std::forward_list provides
+   *  specialized algorithms %unique to linked lists, such as
+   *  splicing, sorting, and in-place reversal.
+   *
+   *  A couple points on memory allocation for forward_list<Tp>:
+   *
+   *  First, we never actually allocate a Tp, we allocate
+   *  Fwd_list_node<Tp>'s and trust [20.1.5]/4 to DTRT.  This is to ensure
+   *  that after elements from %forward_list<X,Alloc1> are spliced into
+   *  %forward_list<X,Alloc2>, destroying the memory of the second %list is a
+   *  valid operation, i.e., Alloc1 giveth and Alloc2 taketh away.
+   */
+  template<typename _Tp, typename _Alloc = allocator<_Tp> >
+    class forward_list : private _Fwd_list_base<_Tp, _Alloc>
+    {
+    private:
+      typedef _Fwd_list_base<_Tp, _Alloc>                  _Base;
+      typedef _Fwd_list_node<_Tp>                          _Node;
+      typedef _Fwd_list_node_base                          _Node_base;
+      typedef typename _Base::_Tp_alloc_type               _Tp_alloc_type;
+
+    public:
+      // types:
+      typedef _Tp                                          value_type;
+      typedef typename _Tp_alloc_type::pointer             pointer;
+      typedef typename _Tp_alloc_type::const_pointer       const_pointer;
+      typedef typename _Tp_alloc_type::reference           reference;
+      typedef typename _Tp_alloc_type::const_reference     const_reference;
+ 
+      typedef _Fwd_list_iterator<_Tp>                      iterator;
+      typedef _Fwd_list_const_iterator<_Tp>                const_iterator;
+      typedef std::size_t                                  size_type;
+      typedef std::ptrdiff_t                               difference_type;
+      typedef _Alloc                                       allocator_type;
+
+      // 23.2.3.1 construct/copy/destroy:
+
+      /**
+       *  @brief  Creates a %forward_list with no elements.
+       *  @param  al  An allocator object.
+       */
+      explicit
+      forward_list(const _Alloc& __al = _Alloc())
+      : _Base(__al)
+      { }
+
+      /**
+       *  @brief  Copy constructor with allocator argument.
+       *  @param  list  Input list to copy.
+       *  @param  al    An allocator object.
+       */
+      forward_list(const forward_list& __list, const _Alloc& __al)
+      : _Base(__list, __al)
+      { }
+
+      /**
+       *  @brief  Move constructor with allocator argument.
+       *  @param  list  Input list to move.
+       *  @param  al    An allocator object.
+       */
+      forward_list(forward_list&& __list, const _Alloc& __al)
+      : _Base(std::move(__list), __al)
+      { }
+
+      /**
+       *  @brief  Creates a %forward_list with default constructed elements.
+       *  @param  n  The number of elements to initially create.
+       *
+       *  This constructor creates the %forward_list with @a n default
+       *  constructed elements.
+       */
+      explicit
+      forward_list(size_type __n)
+      : _Base()
+      { _M_default_initialize(__n); }
+
+      /**
+       *  @brief  Creates a %forward_list with copies of an exemplar element.
+       *  @param  n      The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  al     An allocator object.
+       *
+       *  This constructor fills the %forward_list with @a n copies of @a
+       *  value.
+       */
+      forward_list(size_type __n, const _Tp& __value,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__al)
+      { _M_fill_initialize(__n, __value); }
+
+      /**
+       *  @brief  Builds a %forward_list from a range.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *  @param  al     An allocator object.
+       *
+       *  Create a %forward_list consisting of copies of the elements from
+       *  [@a first,@a last).  This is linear in N (where N is
+       *  distance(@a first,@a last)).
+       */
+      template<typename _InputIterator>
+        forward_list(_InputIterator __first, _InputIterator __last,
+                     const _Alloc& __al = _Alloc())
+        : _Base(__al)
+        {
+          // Check whether it's an integral type.  If so, it's not an iterator.
+          typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+          _M_initialize_dispatch(__first, __last, _Integral());
+        }
+
+      /**
+       *  @brief  The %forward_list copy constructor.
+       *  @param  list  A %forward_list of identical element and allocator
+       *                types.
+       *
+       *  The newly-created %forward_list uses a copy of the allocation
+       *  object used by @a list.
+       */
+      forward_list(const forward_list& __list)
+      : _Base(__list._M_get_Node_allocator())
+      { _M_initialize_dispatch(__list.begin(), __list.end(), __false_type()); }
+
+      /**
+       *  @brief  The %forward_list move constructor.
+       *  @param  list  A %forward_list of identical element and allocator
+       *                types.
+       *
+       *  The newly-created %forward_list contains the exact contents of @a
+       *  forward_list. The contents of @a list are a valid, but unspecified
+       *  %forward_list.
+       */
+      forward_list(forward_list&& __list)
+      : _Base(std::move(__list)) { }
+
+      /**
+       *  @brief  Builds a %forward_list from an initializer_list
+       *  @param  il  An initializer_list of value_type.
+       *  @param  al  An allocator object.
+       *
+       *  Create a %forward_list consisting of copies of the elements
+       *  in the initializer_list @a il.  This is linear in il.size().
+       */
+      forward_list(std::initializer_list<_Tp> __il,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__al)
+      { _M_initialize_dispatch(__il.begin(), __il.end(), __false_type()); }
+
+      /**
+       *  @brief  The forward_list dtor.
+       */
+      ~forward_list()
+      { }
+
+      /**
+       *  @brief  The %forward_list assignment operator.
+       *  @param  list  A %forward_list of identical element and allocator
+       *                types.
+       *
+       *  All the elements of @a list are copied, but unlike the copy
+       *  constructor, the allocator object is not copied.
+       */
+      forward_list&
+      operator=(const forward_list& __list);
+
+      /**
+       *  @brief  The %forward_list move assignment operator.
+       *  @param  list  A %forward_list of identical element and allocator
+       *                types.
+       *
+       *  The contents of @a list are moved into this %forward_list
+       *  (without copying). @a list is a valid, but unspecified
+       *  %forward_list
+       */
+      forward_list&
+      operator=(forward_list&& __list)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__list);
+	return *this;
+      }
+
+      /**
+       *  @brief  The %forward_list initializer list assignment operator.
+       *  @param  il  An initializer_list of value_type.
+       *
+       *  Replace the contents of the %forward_list with copies of the
+       *  elements in the initializer_list @a il.  This is linear in
+       *  il.size().
+       */
+      forward_list&
+      operator=(std::initializer_list<_Tp> __il)
+      {
+        assign(__il);
+        return *this;
+      }
+
+      /**
+       *  @brief  Assigns a range to a %forward_list.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function fills a %forward_list with copies of the elements
+       *  in the range [@a first,@a last).
+       *
+       *  Note that the assignment completely changes the %forward_list and
+       *  that the resulting %forward_list's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+          clear();
+          insert_after(cbefore_begin(), __first, __last);
+        }
+
+      /**
+       *  @brief  Assigns a given value to a %forward_list.
+       *  @param  n  Number of elements to be assigned.
+       *  @param  val  Value to be assigned.
+       *
+       *  This function fills a %forward_list with @a n copies of the given
+       *  value.  Note that the assignment completely changes the
+       *  %forward_list and that the resulting %forward_list's size is the
+       *  same as the number of elements assigned.  Old data may be lost.
+       */
+      void
+      assign(size_type __n, const _Tp& __val)
+      {
+        clear();
+        insert_after(cbefore_begin(), __n, __val);
+      }
+
+      /**
+       *  @brief  Assigns an initializer_list to a %forward_list.
+       *  @param  il  An initializer_list of value_type.
+       *
+       *  Replace the contents of the %forward_list with copies of the
+       *  elements in the initializer_list @a il.  This is linear in
+       *  il.size().
+       */
+      void
+      assign(std::initializer_list<_Tp> __il)
+      {
+        clear();
+        insert_after(cbefore_begin(), __il);
+      }
+
+      /// Get a copy of the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return this->_M_get_Node_allocator(); }
+
+      // 23.2.3.2 iterators:
+
+      /**
+       *  Returns a read/write iterator that points before the first element
+       *  in the %forward_list.  Iteration is done in ordinary element order.
+       */
+      iterator
+      before_begin()
+      { return iterator(&this->_M_impl._M_head); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points before the
+       *  first element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      before_begin() const
+      { return const_iterator(&this->_M_impl._M_head); }
+
+      /**
+       *  Returns a read/write iterator that points to the first element
+       *  in the %forward_list.  Iteration is done in ordinary element order.
+       */
+      iterator
+      begin()
+      { return iterator(this->_M_impl._M_head._M_next); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      begin() const
+      { return const_iterator(this->_M_impl._M_head._M_next); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      iterator
+      end()
+      { return iterator(0); }
+
+      /**
+       *  Returns a read-only iterator that points one past the last
+       *  element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      end() const
+      { return const_iterator(0); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the
+       *  first element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      cbegin() const
+      { return const_iterator(this->_M_impl._M_head._M_next); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points before the
+       *  first element in the %forward_list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      cbefore_begin() const
+      { return const_iterator(&this->_M_impl._M_head); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %forward_list.  Iteration is done in
+       *  ordinary element order.
+       */
+      const_iterator
+      cend() const
+      { return const_iterator(0); }
+
+      /**
+       *  Returns true if the %forward_list is empty.  (Thus begin() would
+       *  equal end().)
+       */
+      bool
+      empty() const
+      { return this->_M_impl._M_head._M_next == 0; }
+
+      /**
+       *  Returns the largest possible size of %forward_list.
+       */
+      size_type
+      max_size() const
+      { return this->_M_get_Node_allocator().max_size(); }
+
+      // 23.2.3.3 element access:
+
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %forward_list.
+       */
+      reference
+      front()
+      {
+        _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next);
+        return __front->_M_value;
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %forward_list.
+       */
+      const_reference
+      front() const
+      {
+        _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next);
+        return __front->_M_value;
+      }
+
+      // 23.2.3.4 modifiers:
+
+      /**
+       *  @brief  Constructs object in %forward_list at the front of the
+       *          list.
+       *  @param  args  Arguments.
+       *
+       *  This function will insert an object of type Tp constructed
+       *  with Tp(std::forward<Args>(args)...) at the front of the list
+       *  Due to the nature of a %forward_list this operation can
+       *  be done in constant time, and does not invalidate iterators
+       *  and references.
+       */
+      template<typename... _Args>
+        void
+        emplace_front(_Args&&... __args)
+        { this->_M_insert_after(cbefore_begin(),
+                                std::forward<_Args>(__args)...); }
+
+      /**
+       *  @brief  Add data to the front of the %forward_list.
+       *  @param  val  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the front of the %forward_list and assigns the given
+       *  data to it.  Due to the nature of a %forward_list this operation
+       *  can be done in constant time, and does not invalidate iterators
+       *  and references.
+       */
+      void
+      push_front(const _Tp& __val)
+      { this->_M_insert_after(cbefore_begin(), __val); }
+
+      /**
+       *
+       */
+      void
+      push_front(_Tp&& __val)
+      { this->_M_insert_after(cbefore_begin(), std::move(__val)); }
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical stack operation.  It shrinks the %forward_list
+       *  by one.  Due to the nature of a %forward_list this operation can
+       *  be done in constant time, and only invalidates iterators/references
+       *  to the element being removed.
+       *
+       *  Note that no data is returned, and if the first element's data
+       *  is needed, it should be retrieved before pop_front() is
+       *  called.
+       */
+      void
+      pop_front()
+      { this->_M_erase_after(&this->_M_impl._M_head); }
+
+      /**
+       *  @brief  Constructs object in %forward_list after the specified
+       *          iterator.
+       *  @param  pos  A const_iterator into the %forward_list.
+       *  @param  args  Arguments.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert an object of type T constructed
+       *  with T(std::forward<Args>(args)...) after the specified
+       *  location.  Due to the nature of a %forward_list this operation can
+       *  be done in constant time, and does not invalidate iterators
+       *  and references.
+       */
+      template<typename... _Args>
+        iterator
+        emplace_after(const_iterator __pos, _Args&&... __args)
+        { return iterator(this->_M_insert_after(__pos,
+                                          std::forward<_Args>(__args)...)); }
+
+      /**
+       *  @brief  Inserts given value into %forward_list after specified
+       *          iterator.
+       *  @param  pos  An iterator into the %forward_list.
+       *  @param  val  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given value after
+       *  the specified location.  Due to the nature of a %forward_list this
+       *  operation can be done in constant time, and does not
+       *  invalidate iterators and references.
+       */
+      iterator
+      insert_after(const_iterator __pos, const _Tp& __val)
+      { return iterator(this->_M_insert_after(__pos, __val)); }
+
+      /**
+       *
+       */
+      iterator
+      insert_after(const_iterator __pos, _Tp&& __val)
+      { return iterator(this->_M_insert_after(__pos, std::move(__val))); }
+
+      /**
+       *  @brief  Inserts a number of copies of given data into the
+       *          %forward_list.
+       *  @param  pos  An iterator into the %forward_list.
+       *  @param  n  Number of elements to be inserted.
+       *  @param  val  Data to be inserted.
+       *  @return  An iterator pointing to the last inserted copy of
+       *           @a val or @a pos if @a n == 0.
+       *
+       *  This function will insert a specified number of copies of the
+       *  given data after the location specified by @a pos.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      iterator
+      insert_after(const_iterator __pos, size_type __n, const _Tp& __val);
+
+      /**
+       *  @brief  Inserts a range into the %forward_list.
+       *  @param  position  An iterator into the %forward_list.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *  @return  An iterator pointing to the last inserted element or
+       *           @a pos if @a first == @a last.
+       *
+       *  This function will insert copies of the data in the range [@a
+       *  first,@a last) into the %forward_list after the location specified
+       *  by @a pos.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      template<typename _InputIterator>
+        iterator
+        insert_after(const_iterator __pos,
+                     _InputIterator __first, _InputIterator __last);
+
+      /**
+       *  @brief  Inserts the contents of an initializer_list into
+       *          %forward_list after the specified iterator.
+       *  @param  pos  An iterator into the %forward_list.
+       *  @param  il  An initializer_list of value_type.
+       *  @return  An iterator pointing to the last inserted element
+       *           or @a pos if @a il is empty.
+       *
+       *  This function will insert copies of the data in the
+       *  initializer_list @a il into the %forward_list before the location
+       *  specified by @a pos.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      iterator
+      insert_after(const_iterator __pos, std::initializer_list<_Tp> __il);
+
+      /**
+       *  @brief  Removes the element pointed to by the iterator following
+       *          @c pos.
+       *  @param  pos  Iterator pointing before element to be erased.
+       *  @return  An iterator pointing to the element following the one
+       *           that was erased, or end() if no such element exists.
+       *
+       *  This function will erase the element at the given position and
+       *  thus shorten the %forward_list by one.
+       *
+       *  Due to the nature of a %forward_list this operation can be done
+       *  in constant time, and only invalidates iterators/references to
+       *  the element being removed.  The user is also cautioned that
+       *  this function only erases the element, and that if the element
+       *  is itself a pointer, the pointed-to memory is not touched in
+       *  any way.  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase_after(const_iterator __pos)
+      { return iterator(this->_M_erase_after(const_cast<_Node_base*>
+					     (__pos._M_node))); }
+
+      /**
+       *  @brief  Remove a range of elements.
+       *  @param  pos  Iterator pointing before the first element to be
+       *               erased.
+       *  @param  last  Iterator pointing to one past the last element to be
+       *                erased.
+       *  @return  @last.
+       *
+       *  This function will erase the elements in the range @a
+       *  (pos,last) and shorten the %forward_list accordingly.
+       *
+       *  This operation is linear time in the size of the range and only
+       *  invalidates iterators/references to the element being removed.
+       *  The user is also cautioned that this function only erases the
+       *  elements, and that if the elements themselves are pointers, the
+       *  pointed-to memory is not touched in any way.  Managing the pointer
+       *  is the user's responsibility.
+       */
+      iterator
+      erase_after(const_iterator __pos, const_iterator __last)
+      { return iterator(this->_M_erase_after(const_cast<_Node_base*>
+					     (__pos._M_node),
+					     const_cast<_Node_base*>
+					     (__last._M_node))); }
+
+      /**
+       *  @brief  Swaps data with another %forward_list.
+       *  @param  list  A %forward_list of the same element and allocator
+       *                types.
+       *
+       *  This exchanges the elements between two lists in constant
+       *  time.  Note that the global std::swap() function is
+       *  specialized such that std::swap(l1,l2) will feed to this
+       *  function.
+       */
+      void
+      swap(forward_list& __list)
+      { std::swap(this->_M_impl._M_head._M_next,
+		  __list._M_impl._M_head._M_next); }
+
+      /**
+       *  @brief Resizes the %forward_list to the specified number of
+       *         elements.
+       *  @param sz Number of elements the %forward_list should contain.
+       *
+       *  This function will %resize the %forward_list to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %forward_list's current size the %forward_list is truncated,
+       *  otherwise the %forward_list is extended and the new elements
+       *  are default constructed.
+       */
+      void
+      resize(size_type __sz);
+
+      /**
+       *  @brief Resizes the %forward_list to the specified number of
+       *         elements.
+       *  @param sz Number of elements the %forward_list should contain.
+       *  @param val Data with which new elements should be populated.
+       *
+       *  This function will %resize the %forward_list to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %forward_list's current size the %forward_list is truncated,
+       *  otherwise the %forward_list is extended and new elements are
+       *  populated with given data.
+       */
+      void
+      resize(size_type __sz, const value_type& __val);
+
+      /**
+       *  @brief  Erases all the elements.
+       *
+       *  Note that this function only erases
+       *  the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      void
+      clear()
+      { this->_M_erase_after(&this->_M_impl._M_head, 0); }
+
+      // 23.2.3.5 forward_list operations:
+
+      /**
+       *  @brief  Insert contents of another %forward_list.
+       *  @param  pos  Iterator referencing the element to insert after.
+       *  @param  list  Source list.
+       *
+       *  The elements of @a list are inserted in constant time after
+       *  the element referenced by @a pos.  @a list becomes an empty
+       *  list.
+       *
+       *  Requires this != @a x.
+       */
+      void
+      splice_after(const_iterator __pos, forward_list&& __list)
+      {
+	if (!__list.empty())
+	  _M_splice_after(__pos, std::move(__list));
+      }
+
+      /**
+       *  @brief  Insert element from another %forward_list.
+       *  @param  pos  Iterator referencing the element to insert after.
+       *  @param  list  Source list.
+       *  @param  i   Iterator referencing the element before the element
+       *              to move.
+       *
+       *  Removes the element in list @a list referenced by @a i and
+       *  inserts it into the current list after @a pos.
+       */
+      void
+      splice_after(const_iterator __pos, forward_list&& __list,
+                   const_iterator __i)
+      {
+	const_iterator __j = __i;
+	++__j;
+	if (__pos == __i || __pos == __j)
+	  return;
+
+	splice_after(__pos, std::move(__list), __i, __j);
+      }
+
+      /**
+       *  @brief  Insert range from another %forward_list.
+       *  @param  pos  Iterator referencing the element to insert after.
+       *  @param  list  Source list.
+       *  @param  before  Iterator referencing before the start of range
+       *                  in list.
+       *  @param  last  Iterator referencing the end of range in list.
+       *
+       *  Removes elements in the range (before,last) and inserts them
+       *  after @a pos in constant time.
+       *
+       *  Undefined if @a pos is in (before,last).
+       */
+      void
+      splice_after(const_iterator __pos, forward_list&& __list,
+                   const_iterator __before, const_iterator __last);
+
+      /**
+       *  @brief  Remove all elements equal to value.
+       *  @param  val  The value to remove.
+       *
+       *  Removes every element in the list equal to @a value.
+       *  Remaining elements stay in list order.  Note that this
+       *  function only erases the elements, and that if the elements
+       *  themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      remove(const _Tp& __val);
+
+      /**
+       *  @brief  Remove all elements satisfying a predicate.
+       *  @param  pred  Unary predicate function or object.
+       *
+       *  Removes every element in the list for which the predicate
+       *  returns true.  Remaining elements stay in list order.  Note
+       *  that this function only erases the elements, and that if the
+       *  elements themselves are pointers, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      template<typename _Pred>
+        void
+        remove_if(_Pred __pred);
+
+      /**
+       *  @brief  Remove consecutive duplicate elements.
+       *
+       *  For each consecutive set of elements with the same value,
+       *  remove all but the first one.  Remaining elements stay in
+       *  list order.  Note that this function only erases the
+       *  elements, and that if the elements themselves are pointers,
+       *  the pointed-to memory is not touched in any way.  Managing
+       *  the pointer is the user's responsibility.
+       */
+      void
+      unique()
+      { this->unique(std::equal_to<_Tp>()); }
+
+      /**
+       *  @brief  Remove consecutive elements satisfying a predicate.
+       *  @param  binary_pred  Binary predicate function or object.
+       *
+       *  For each consecutive set of elements [first,last) that
+       *  satisfy predicate(first,i) where i is an iterator in
+       *  [first,last), remove all but the first one.  Remaining
+       *  elements stay in list order.  Note that this function only
+       *  erases the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      template<typename _BinPred>
+        void
+        unique(_BinPred __binary_pred);
+
+      /**
+       *  @brief  Merge sorted lists.
+       *  @param  list  Sorted list to merge.
+       *
+       *  Assumes that both @a list and this list are sorted according to
+       *  operator<().  Merges elements of @a list into this list in
+       *  sorted order, leaving @a list empty when complete.  Elements in
+       *  this list precede elements in @a list that are equal.
+       */
+      void
+      merge(forward_list&& __list)
+      { this->merge(std::move(__list), std::less<_Tp>()); }
+
+      /**
+       *  @brief  Merge sorted lists according to comparison function.
+       *  @param  list  Sorted list to merge.
+       *  @param  comp Comparison function defining sort order.
+       *
+       *  Assumes that both @a list and this list are sorted according to
+       *  comp.  Merges elements of @a list into this list
+       *  in sorted order, leaving @a list empty when complete.  Elements
+       *  in this list precede elements in @a list that are equivalent
+       *  according to comp().
+       */
+      template<typename _Comp>
+        void
+        merge(forward_list&& __list, _Comp __comp);
+
+      /**
+       *  @brief  Sort the elements of the list.
+       *
+       *  Sorts the elements of this list in NlogN time.  Equivalent
+       *  elements remain in list order.
+       */
+      void
+      sort()
+      { this->sort(std::less<_Tp>()); }
+
+      /**
+       *  @brief  Sort the forward_list using a comparison function.
+       *
+       *  Sorts the elements of this list in NlogN time.  Equivalent
+       *  elements remain in list order.
+       */
+      template<typename _Comp>
+        void
+        sort(_Comp __comp);
+
+      /**
+       *  @brief  Reverse the elements in list.
+       *
+       *  Reverse the order of elements in the list in linear time.
+       */
+      void
+      reverse()
+      { this->_M_impl._M_head._M_reverse_after(); }
+
+    private:
+      template<typename _Integer>
+        void
+        _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+        { _M_fill_initialize(static_cast<size_type>(__n), __x); }
+
+      // Called by the range constructor to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+                               __false_type);
+
+      // Called by forward_list(n,v,a), and the range constructor when it
+      // turns out to be the same thing.
+      void
+      _M_fill_initialize(size_type __n, const value_type& __value);
+
+      // Called by splice_after and insert_after.
+      iterator
+      _M_splice_after(const_iterator __pos, forward_list&& __list);
+
+      // Called by forward_list(n).
+      void
+      _M_default_initialize(size_type __n);
+
+      // Called by resize(sz).
+      void
+      _M_default_insert_after(const_iterator __pos, size_type __n);
+    };
+
+  /**
+   *  @brief  Forward list equality comparison.
+   *  @param  lx  A %forward_list
+   *  @param  ly  A %forward_list of the same type as @a lx.
+   *  @return  True iff the size and elements of the forward lists are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  forward lists.  Deques are considered equivalent if corresponding
+   *  elements compare equal.
+   */
+  template<typename _Tp, typename _Alloc>
+    bool
+    operator==(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly);
+
+  /**
+   *  @brief  Forward list ordering relation.
+   *  @param  lx  A %forward_list.
+   *  @param  ly  A %forward_list of the same type as @a lx.
+   *  @return  True iff @a lx is lexicographically less than @a ly.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  forward lists.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+   */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return std::lexicographical_compare(__lx.cbegin(), __lx.cend(),
+					  __ly.cbegin(), __ly.cend()); }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx == __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return (__ly < __lx); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx < __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__ly < __lx); }
+
+  /// See std::forward_list::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(forward_list<_Tp, _Alloc>& __lx,
+	 forward_list<_Tp, _Alloc>& __ly)
+    { __lx.swap(__ly); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif // _FORWARD_LIST_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.tcc
new file mode 100644
index 000000000..2c319db7c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/forward_list.tcc
@@ -0,0 +1,503 @@
+// <forward_list.tcc> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/forward_list.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{forward_list}
+ */
+
+#ifndef _FORWARD_LIST_TCC
+#define _FORWARD_LIST_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  template<typename _Tp, typename _Alloc>
+    _Fwd_list_base<_Tp, _Alloc>::
+    _Fwd_list_base(const _Fwd_list_base& __lst, const _Alloc& __a)
+    : _M_impl(__a)
+    {
+      this->_M_impl._M_head._M_next = 0;
+      _Fwd_list_node_base* __to = &this->_M_impl._M_head;
+      _Node* __curr = static_cast<_Node*>(__lst._M_impl._M_head._M_next);
+
+      while (__curr)
+        {
+          __to->_M_next = _M_create_node(__curr->_M_value);
+          __to = __to->_M_next;
+          __curr = static_cast<_Node*>(__curr->_M_next);
+        }
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      _Fwd_list_node_base*
+      _Fwd_list_base<_Tp, _Alloc>::
+      _M_insert_after(const_iterator __pos, _Args&&... __args)
+      {
+        _Fwd_list_node_base* __to
+	  = const_cast<_Fwd_list_node_base*>(__pos._M_node);
+	_Node* __thing = _M_create_node(std::forward<_Args>(__args)...);
+        __thing->_M_next = __to->_M_next;
+        __to->_M_next = __thing;
+        return __to->_M_next;
+      }
+
+  template<typename _Tp, typename _Alloc>
+    _Fwd_list_node_base*
+    _Fwd_list_base<_Tp, _Alloc>::
+    _M_erase_after(_Fwd_list_node_base* __pos)
+    {
+      _Node* __curr = static_cast<_Node*>(__pos->_M_next);
+      __pos->_M_next = __curr->_M_next;
+      _M_get_Node_allocator().destroy(__curr);
+      _M_put_node(__curr);
+      return __pos->_M_next;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    _Fwd_list_node_base*
+    _Fwd_list_base<_Tp, _Alloc>::
+    _M_erase_after(_Fwd_list_node_base* __pos, 
+                   _Fwd_list_node_base* __last)
+    {
+      _Node* __curr = static_cast<_Node*>(__pos->_M_next);
+      while (__curr != __last)
+        {
+          _Node* __temp = __curr;
+          __curr = static_cast<_Node*>(__curr->_M_next);
+          _M_get_Node_allocator().destroy(__temp);
+          _M_put_node(__temp);
+        }
+      __pos->_M_next = __last;
+      return __last;
+    }
+
+  // Called by the range constructor to implement [23.1.1]/9
+  template<typename _Tp, typename _Alloc>
+    template<typename _InputIterator>
+      void
+      forward_list<_Tp, _Alloc>::
+      _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+                             __false_type)
+      {
+        _Node_base* __to = &this->_M_impl._M_head;
+        for (; __first != __last; ++__first)
+          {
+            __to->_M_next = this->_M_create_node(*__first);
+            __to = __to->_M_next;
+          }
+      }
+
+  // Called by forward_list(n,v,a), and the range constructor
+  // when it turns out to be the same thing.
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    _M_fill_initialize(size_type __n, const value_type& __value)
+    {
+      _Node_base* __to = &this->_M_impl._M_head;
+      for (; __n; --__n)
+        {
+          __to->_M_next = this->_M_create_node(__value);
+          __to = __to->_M_next;
+        }
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    _M_default_initialize(size_type __n)
+    {
+      _Node_base* __to = &this->_M_impl._M_head;
+      for (; __n; --__n)
+        {
+          __to->_M_next = this->_M_create_node();
+          __to = __to->_M_next;
+        }
+    }
+
+  template<typename _Tp, typename _Alloc>
+    forward_list<_Tp, _Alloc>&
+    forward_list<_Tp, _Alloc>::
+    operator=(const forward_list& __list)
+    {
+      if (&__list != this)
+        {
+          iterator __prev1 = before_begin();
+          iterator __curr1 = begin();
+          iterator __last1 = end();
+          const_iterator __first2 = __list.cbegin();
+          const_iterator __last2 = __list.cend();
+          while (__curr1 != __last1 && __first2 != __last2)
+            {
+              *__curr1 = *__first2;
+              ++__prev1;
+              ++__curr1;
+              ++__first2;
+            }
+          if (__first2 == __last2)
+            erase_after(__prev1, __last1);
+          else
+            insert_after(__prev1, __first2, __last2);
+        }
+      return *this;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    _M_default_insert_after(const_iterator __pos, size_type __n)
+    {
+      const_iterator __saved_pos = __pos;
+      __try
+	{
+	  for (; __n; --__n)
+	    __pos = emplace_after(__pos);
+	}
+      __catch(...)
+	{
+	  erase_after(__saved_pos, ++__pos);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    resize(size_type __sz)
+    {
+      iterator __k = before_begin();
+
+      size_type __len = 0;
+      while (__k._M_next() != end() && __len < __sz)
+        {
+          ++__k;
+          ++__len;
+        }
+      if (__len == __sz)
+        erase_after(__k, end());
+      else
+	_M_default_insert_after(__k, __sz - __len);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    resize(size_type __sz, const value_type& __val)
+    {
+      iterator __k = before_begin();
+
+      size_type __len = 0;
+      while (__k._M_next() != end() && __len < __sz)
+        {
+          ++__k;
+          ++__len;
+        }
+      if (__len == __sz)
+        erase_after(__k, end());
+      else
+        insert_after(__k, __sz - __len, __val);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    typename forward_list<_Tp, _Alloc>::iterator
+    forward_list<_Tp, _Alloc>::
+    _M_splice_after(const_iterator __pos, forward_list&& __list)
+    {
+      _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node);
+      iterator __before = __list.before_begin();
+      return iterator(__tmp->_M_transfer_after(__before._M_node));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    splice_after(const_iterator __pos, forward_list&&,
+                 const_iterator __before, const_iterator __last)
+    {
+      _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node);
+      __tmp->_M_transfer_after(const_cast<_Node_base*>(__before._M_node),
+                               const_cast<_Node_base*>(__last._M_node));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    typename forward_list<_Tp, _Alloc>::iterator
+    forward_list<_Tp, _Alloc>::
+    insert_after(const_iterator __pos, size_type __n, const _Tp& __val)
+    {
+      if (__n)
+	{
+	  forward_list __tmp(__n, __val, this->_M_get_Node_allocator());
+	  return _M_splice_after(__pos, std::move(__tmp));
+	}
+      else
+	return iterator(const_cast<_Node_base*>(__pos._M_node));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _InputIterator>
+      typename forward_list<_Tp, _Alloc>::iterator
+      forward_list<_Tp, _Alloc>::
+      insert_after(const_iterator __pos,
+		   _InputIterator __first, _InputIterator __last)
+      {
+	forward_list __tmp(__first, __last, this->_M_get_Node_allocator());
+	if (!__tmp.empty())
+	  return _M_splice_after(__pos, std::move(__tmp));
+	else
+	  return iterator(const_cast<_Node_base*>(__pos._M_node));
+      }
+
+  template<typename _Tp, typename _Alloc>
+    typename forward_list<_Tp, _Alloc>::iterator
+    forward_list<_Tp, _Alloc>::
+    insert_after(const_iterator __pos, std::initializer_list<_Tp> __il)
+    {
+      if (__il.size())
+	{
+	  forward_list __tmp(__il, this->_M_get_Node_allocator());
+	  return _M_splice_after(__pos, std::move(__tmp));
+	}
+      else
+	return iterator(const_cast<_Node_base*>(__pos._M_node));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    remove(const _Tp& __val)
+    {
+      _Node* __curr = static_cast<_Node*>(&this->_M_impl._M_head);
+      _Node* __extra = 0;
+
+      while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next))
+        {
+          if (__tmp->_M_value == __val)
+	    {
+	      if (std::__addressof(__tmp->_M_value)
+		  != std::__addressof(__val))
+		{
+		  this->_M_erase_after(__curr);
+		  continue;
+		}
+	      else
+		__extra = __curr;
+	    }
+	  __curr = static_cast<_Node*>(__curr->_M_next);
+        }
+
+      if (__extra)
+	this->_M_erase_after(__extra);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _Pred>
+      void
+      forward_list<_Tp, _Alloc>::
+      remove_if(_Pred __pred)
+      {
+	_Node* __curr = static_cast<_Node*>(&this->_M_impl._M_head);
+        while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next))
+          {
+            if (__pred(__tmp->_M_value))
+              this->_M_erase_after(__curr);
+            else
+              __curr = static_cast<_Node*>(__curr->_M_next);
+          }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _BinPred>
+      void
+      forward_list<_Tp, _Alloc>::
+      unique(_BinPred __binary_pred)
+      {
+        iterator __first = begin();
+        iterator __last = end();
+        if (__first == __last)
+          return;
+        iterator __next = __first;
+        while (++__next != __last)
+        {
+          if (__binary_pred(*__first, *__next))
+            erase_after(__first);
+          else
+            __first = __next;
+          __next = __first;
+        }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _Comp>
+      void
+      forward_list<_Tp, _Alloc>::
+      merge(forward_list&& __list, _Comp __comp)
+      {
+        _Node_base* __node = &this->_M_impl._M_head;
+        while (__node->_M_next && __list._M_impl._M_head._M_next)
+          {
+            if (__comp(static_cast<_Node*>
+                       (__list._M_impl._M_head._M_next)->_M_value,
+                       static_cast<_Node*>
+                       (__node->_M_next)->_M_value))
+              __node->_M_transfer_after(&__list._M_impl._M_head,
+                                        __list._M_impl._M_head._M_next);
+            __node = __node->_M_next;
+          }
+        if (__list._M_impl._M_head._M_next)
+          {
+            __node->_M_next = __list._M_impl._M_head._M_next;
+            __list._M_impl._M_head._M_next = 0;
+          }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    bool
+    operator==(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    {
+      //  We don't have size() so we need to walk through both lists
+      //  making sure both iterators are valid.
+      auto __ix = __lx.cbegin();
+      auto __iy = __ly.cbegin();
+      while (__ix != __lx.cend() && __iy != __ly.cend())
+        {
+          if (*__ix != *__iy)
+            return false;
+          ++__ix;
+          ++__iy;
+        }
+      if (__ix == __lx.cend() && __iy == __ly.cend())
+        return true;
+      else
+        return false;
+    }
+
+  template<typename _Tp, class _Alloc>
+    template<typename _Comp>
+      void
+      forward_list<_Tp, _Alloc>::
+      sort(_Comp __comp)
+      {
+        // If `next' is 0, return immediately.
+        _Node* __list = static_cast<_Node*>(this->_M_impl._M_head._M_next);
+        if (!__list)
+          return;
+
+        unsigned long __insize = 1;
+
+        while (1)
+          {
+            _Node* __p = __list;
+            __list = 0;
+            _Node* __tail = 0;
+
+            // Count number of merges we do in this pass.
+            unsigned long __nmerges = 0;
+
+            while (__p)
+              {
+                ++__nmerges;
+                // There exists a merge to be done.
+                // Step `insize' places along from p.
+                _Node* __q = __p;
+                unsigned long __psize = 0;
+                for (unsigned long __i = 0; __i < __insize; ++__i)
+                  {
+                    ++__psize;
+                    __q = static_cast<_Node*>(__q->_M_next);
+                    if (!__q)
+                      break;
+                  }
+
+                // If q hasn't fallen off end, we have two lists to merge.
+                unsigned long __qsize = __insize;
+
+                // Now we have two lists; merge them.
+                while (__psize > 0 || (__qsize > 0 && __q))
+                  {
+                    // Decide whether next node of merge comes from p or q.
+                    _Node* __e;
+                    if (__psize == 0)
+                      {
+                        // p is empty; e must come from q.
+                        __e = __q;
+                        __q = static_cast<_Node*>(__q->_M_next);
+                        --__qsize;
+                      }
+                    else if (__qsize == 0 || !__q)
+                      {
+                        // q is empty; e must come from p.
+                        __e = __p;
+                        __p = static_cast<_Node*>(__p->_M_next);
+                        --__psize;
+                      }
+                    else if (__comp(__p->_M_value, __q->_M_value))
+                      {
+                        // First node of p is lower; e must come from p.
+                        __e = __p;
+                        __p = static_cast<_Node*>(__p->_M_next);
+                        --__psize;
+                      }
+                    else
+                      {
+                        // First node of q is lower; e must come from q.
+                        __e = __q;
+                        __q = static_cast<_Node*>(__q->_M_next);
+                        --__qsize;
+                      }
+
+                    // Add the next node to the merged list.
+                    if (__tail)
+                      __tail->_M_next = __e;
+                    else
+                      __list = __e;
+                    __tail = __e;
+                  }
+
+                // Now p has stepped `insize' places along, and q has too.
+                __p = __q;
+              }
+            __tail->_M_next = 0;
+
+            // If we have done only one merge, we're finished.
+            // Allow for nmerges == 0, the empty list case.
+            if (__nmerges <= 1)
+              {
+                this->_M_impl._M_head._M_next = __list;
+                return;
+              }
+
+            // Otherwise repeat, merging lists twice the size.
+            __insize *= 2;
+          }
+      }
+ 
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _FORWARD_LIST_TCC */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/fstream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/fstream.tcc
new file mode 100644
index 000000000..3d5ca62ad
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/fstream.tcc
@@ -0,0 +1,984 @@
+// File based streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+// 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/fstream.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{fstream}
+ */
+
+//
+// ISO C++ 14882: 27.8  File-based streams
+//
+
+#ifndef _FSTREAM_TCC
+#define _FSTREAM_TCC 1
+
+#pragma GCC system_header
+
+#include <bits/cxxabi_forced.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_filebuf<_CharT, _Traits>::
+    _M_allocate_internal_buffer()
+    {
+      // Allocate internal buffer only if one doesn't already exist
+      // (either allocated or provided by the user via setbuf).
+      if (!_M_buf_allocated && !_M_buf)
+	{
+	  _M_buf = new char_type[_M_buf_size];
+	  _M_buf_allocated = true;
+	}
+    }
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_filebuf<_CharT, _Traits>::
+    _M_destroy_internal_buffer() throw()
+    {
+      if (_M_buf_allocated)
+	{
+	  delete [] _M_buf;
+	  _M_buf = 0;
+	  _M_buf_allocated = false;
+	}
+      delete [] _M_ext_buf;
+      _M_ext_buf = 0;
+      _M_ext_buf_size = 0;
+      _M_ext_next = 0;
+      _M_ext_end = 0;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_filebuf<_CharT, _Traits>::
+    basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock),
+    _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(),
+    _M_state_last(), _M_buf(0), _M_buf_size(BUFSIZ),
+    _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), 
+    _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false),
+    _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0),
+    _M_ext_end(0)
+    {
+      if (has_facet<__codecvt_type>(this->_M_buf_locale))
+	_M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale);
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
+    basic_filebuf<_CharT, _Traits>::
+    open(const char* __s, ios_base::openmode __mode)
+    {
+      __filebuf_type *__ret = 0;
+      if (!this->is_open())
+	{
+	  _M_file.open(__s, __mode);
+	  if (this->is_open())
+	    {
+	      _M_allocate_internal_buffer();
+	      _M_mode = __mode;
+
+	      // Setup initial buffer to 'uncommitted' mode.
+	      _M_reading = false;
+	      _M_writing = false;
+	      _M_set_buffer(-1);
+
+	      // Reset to initial state.
+	      _M_state_last = _M_state_cur = _M_state_beg;
+
+	      // 27.8.1.3,4
+	      if ((__mode & ios_base::ate)
+		  && this->seekoff(0, ios_base::end, __mode)
+		  == pos_type(off_type(-1)))
+		this->close();
+	      else
+		__ret = this;
+	    }
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
+    basic_filebuf<_CharT, _Traits>::
+    close()
+    {
+      if (!this->is_open())
+	return 0;
+
+      bool __testfail = false;
+      {
+	// NB: Do this here so that re-opened filebufs will be cool...
+	struct __close_sentry
+	{
+	  basic_filebuf *__fb;
+	  __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { }
+	  ~__close_sentry ()
+	  {
+	    __fb->_M_mode = ios_base::openmode(0);
+	    __fb->_M_pback_init = false;
+	    __fb->_M_destroy_internal_buffer();
+	    __fb->_M_reading = false;
+	    __fb->_M_writing = false;
+	    __fb->_M_set_buffer(-1);
+	    __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg;
+	  }
+	} __cs (this);
+
+	__try
+	  {
+	    if (!_M_terminate_output())
+	      __testfail = true;
+	  }
+	__catch(__cxxabiv1::__forced_unwind&)
+	  {
+	    _M_file.close();
+	    __throw_exception_again;
+	  }
+	__catch(...)
+	  { __testfail = true; }
+      }
+
+      if (!_M_file.close())
+	__testfail = true;
+
+      if (__testfail)
+	return 0;
+      else
+	return this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_filebuf<_CharT, _Traits>::
+    showmanyc()
+    {
+      streamsize __ret = -1;
+      const bool __testin = _M_mode & ios_base::in;
+      if (__testin && this->is_open())
+	{
+	  // For a stateful encoding (-1) the pending sequence might be just
+	  // shift and unshift prefixes with no actual character.
+	  __ret = this->egptr() - this->gptr();
+
+#if _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM
+	  // About this workaround, see libstdc++/20806.
+	  const bool __testbinary = _M_mode & ios_base::binary;
+	  if (__check_facet(_M_codecvt).encoding() >= 0
+	      && __testbinary)
+#else
+	  if (__check_facet(_M_codecvt).encoding() >= 0)
+#endif
+	    __ret += _M_file.showmanyc() / _M_codecvt->max_length();
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::int_type
+    basic_filebuf<_CharT, _Traits>::
+    underflow()
+    {
+      int_type __ret = traits_type::eof();
+      const bool __testin = _M_mode & ios_base::in;
+      if (__testin)
+	{
+	  if (_M_writing)
+	    {
+	      if (overflow() == traits_type::eof())
+		return __ret;
+	      _M_set_buffer(-1);
+	      _M_writing = false;
+	    }
+	  // Check for pback madness, and if so switch back to the
+	  // normal buffers and jet outta here before expensive
+	  // fileops happen...
+	  _M_destroy_pback();
+
+	  if (this->gptr() < this->egptr())
+	    return traits_type::to_int_type(*this->gptr());
+
+	  // Get and convert input sequence.
+	  const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
+
+	  // Will be set to true if ::read() returns 0 indicating EOF.
+	  bool __got_eof = false;
+	  // Number of internal characters produced.
+	  streamsize __ilen = 0;
+	  codecvt_base::result __r = codecvt_base::ok;
+	  if (__check_facet(_M_codecvt).always_noconv())
+	    {
+	      __ilen = _M_file.xsgetn(reinterpret_cast<char*>(this->eback()),
+				      __buflen);
+	      if (__ilen == 0)
+		__got_eof = true;
+	    }
+	  else
+	    {
+              // Worst-case number of external bytes.
+	      // XXX Not done encoding() == -1.
+	      const int __enc = _M_codecvt->encoding();
+	      streamsize __blen; // Minimum buffer size.
+	      streamsize __rlen; // Number of chars to read.
+	      if (__enc > 0)
+		__blen = __rlen = __buflen * __enc;
+	      else
+		{
+		  __blen = __buflen + _M_codecvt->max_length() - 1;
+		  __rlen = __buflen;
+		}
+	      const streamsize __remainder = _M_ext_end - _M_ext_next;
+	      __rlen = __rlen > __remainder ? __rlen - __remainder : 0;
+
+	      // An imbue in 'read' mode implies first converting the external
+	      // chars already present.
+	      if (_M_reading && this->egptr() == this->eback() && __remainder)
+		__rlen = 0;
+
+	      // Allocate buffer if necessary and move unconverted
+	      // bytes to front.
+	      if (_M_ext_buf_size < __blen)
+		{
+		  char* __buf = new char[__blen];
+		  if (__remainder)
+		    __builtin_memcpy(__buf, _M_ext_next, __remainder);
+
+		  delete [] _M_ext_buf;
+		  _M_ext_buf = __buf;
+		  _M_ext_buf_size = __blen;
+		}
+	      else if (__remainder)
+		__builtin_memmove(_M_ext_buf, _M_ext_next, __remainder);
+
+	      _M_ext_next = _M_ext_buf;
+	      _M_ext_end = _M_ext_buf + __remainder;
+	      _M_state_last = _M_state_cur;
+
+	      do
+		{
+		  if (__rlen > 0)
+		    {
+		      // Sanity check!
+		      // This may fail if the return value of
+		      // codecvt::max_length() is bogus.
+		      if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size)
+			{
+			  __throw_ios_failure(__N("basic_filebuf::underflow "
+					      "codecvt::max_length() "
+					      "is not valid"));
+			}
+		      streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen);
+		      if (__elen == 0)
+			__got_eof = true;
+		      else if (__elen == -1)
+			break;
+		      _M_ext_end += __elen;
+		    }
+
+		  char_type* __iend = this->eback();
+		  if (_M_ext_next < _M_ext_end)
+		    __r = _M_codecvt->in(_M_state_cur, _M_ext_next,
+					 _M_ext_end, _M_ext_next,
+					 this->eback(),
+					 this->eback() + __buflen, __iend);
+		  if (__r == codecvt_base::noconv)
+		    {
+		      size_t __avail = _M_ext_end - _M_ext_buf;
+		      __ilen = std::min(__avail, __buflen);
+		      traits_type::copy(this->eback(),
+					reinterpret_cast<char_type*>
+					(_M_ext_buf), __ilen);
+		      _M_ext_next = _M_ext_buf + __ilen;
+		    }
+		  else
+		    __ilen = __iend - this->eback();
+
+		  // _M_codecvt->in may return error while __ilen > 0: this is
+		  // ok, and actually occurs in case of mixed encodings (e.g.,
+		  // XML files).
+		  if (__r == codecvt_base::error)
+		    break;
+
+		  __rlen = 1;
+		}
+	      while (__ilen == 0 && !__got_eof);
+	    }
+
+	  if (__ilen > 0)
+	    {
+	      _M_set_buffer(__ilen);
+	      _M_reading = true;
+	      __ret = traits_type::to_int_type(*this->gptr());
+	    }
+	  else if (__got_eof)
+	    {
+	      // If the actual end of file is reached, set 'uncommitted'
+	      // mode, thus allowing an immediate write without an
+	      // intervening seek.
+	      _M_set_buffer(-1);
+	      _M_reading = false;
+	      // However, reaching it while looping on partial means that
+	      // the file has got an incomplete character.
+	      if (__r == codecvt_base::partial)
+		__throw_ios_failure(__N("basic_filebuf::underflow "
+				    "incomplete character in file"));
+	    }
+	  else if (__r == codecvt_base::error)
+	    __throw_ios_failure(__N("basic_filebuf::underflow "
+				"invalid byte sequence in file"));
+	  else
+	    __throw_ios_failure(__N("basic_filebuf::underflow "
+				"error reading the file"));
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::int_type
+    basic_filebuf<_CharT, _Traits>::
+    pbackfail(int_type __i)
+    {
+      int_type __ret = traits_type::eof();
+      const bool __testin = _M_mode & ios_base::in;
+      if (__testin)
+	{
+	  if (_M_writing)
+	    {
+	      if (overflow() == traits_type::eof())
+		return __ret;
+	      _M_set_buffer(-1);
+	      _M_writing = false;
+	    }
+	  // Remember whether the pback buffer is active, otherwise below
+	  // we may try to store in it a second char (libstdc++/9761).
+	  const bool __testpb = _M_pback_init;
+	  const bool __testeof = traits_type::eq_int_type(__i, __ret);
+	  int_type __tmp;
+	  if (this->eback() < this->gptr())
+	    {
+	      this->gbump(-1);
+	      __tmp = traits_type::to_int_type(*this->gptr());
+	    }
+	  else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1)))
+	    {
+	      __tmp = this->underflow();
+	      if (traits_type::eq_int_type(__tmp, __ret))
+		return __ret;
+	    }
+	  else
+	    {
+	      // At the beginning of the buffer, need to make a
+	      // putback position available.  But the seek may fail
+	      // (f.i., at the beginning of a file, see
+	      // libstdc++/9439) and in that case we return
+	      // traits_type::eof().
+	      return __ret;
+	    }
+
+	  // Try to put back __i into input sequence in one of three ways.
+	  // Order these tests done in is unspecified by the standard.
+	  if (!__testeof && traits_type::eq_int_type(__i, __tmp))
+	    __ret = __i;
+	  else if (__testeof)
+	    __ret = traits_type::not_eof(__i);
+	  else if (!__testpb)
+	    {
+	      _M_create_pback();
+	      _M_reading = true;
+	      *this->gptr() = traits_type::to_char_type(__i);
+	      __ret = __i;
+	    }
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::int_type
+    basic_filebuf<_CharT, _Traits>::
+    overflow(int_type __c)
+    {
+      int_type __ret = traits_type::eof();
+      const bool __testeof = traits_type::eq_int_type(__c, __ret);
+      const bool __testout = _M_mode & ios_base::out;
+      if (__testout)
+	{
+          if (_M_reading)
+            {
+              _M_destroy_pback();
+              const int __gptr_off = _M_get_ext_pos(_M_state_last);
+              if (_M_seek(__gptr_off, ios_base::cur, _M_state_last)
+                  == pos_type(off_type(-1)))
+                return __ret;
+            }
+	  if (this->pbase() < this->pptr())
+	    {
+	      // If appropriate, append the overflow char.
+	      if (!__testeof)
+		{
+		  *this->pptr() = traits_type::to_char_type(__c);
+		  this->pbump(1);
+		}
+
+	      // Convert pending sequence to external representation,
+	      // and output.
+	      if (_M_convert_to_external(this->pbase(),
+					 this->pptr() - this->pbase()))
+		{
+		  _M_set_buffer(0);
+		  __ret = traits_type::not_eof(__c);
+		}
+	    }
+	  else if (_M_buf_size > 1)
+	    {
+	      // Overflow in 'uncommitted' mode: set _M_writing, set
+	      // the buffer to the initial 'write' mode, and put __c
+	      // into the buffer.
+	      _M_set_buffer(0);
+	      _M_writing = true;
+	      if (!__testeof)
+		{
+		  *this->pptr() = traits_type::to_char_type(__c);
+		  this->pbump(1);
+		}
+	      __ret = traits_type::not_eof(__c);
+	    }
+	  else
+	    {
+	      // Unbuffered.
+	      char_type __conv = traits_type::to_char_type(__c);
+	      if (__testeof || _M_convert_to_external(&__conv, 1))
+		{
+		  _M_writing = true;
+		  __ret = traits_type::not_eof(__c);
+		}
+	    }
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    bool
+    basic_filebuf<_CharT, _Traits>::
+    _M_convert_to_external(_CharT* __ibuf, streamsize __ilen)
+    {
+      // Sizes of external and pending output.
+      streamsize __elen;
+      streamsize __plen;
+      if (__check_facet(_M_codecvt).always_noconv())
+	{
+	  __elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);
+	  __plen = __ilen;
+	}
+      else
+	{
+	  // Worst-case number of external bytes needed.
+	  // XXX Not done encoding() == -1.
+	  streamsize __blen = __ilen * _M_codecvt->max_length();
+	  char* __buf = static_cast<char*>(__builtin_alloca(__blen));
+
+	  char* __bend;
+	  const char_type* __iend;
+	  codecvt_base::result __r;
+	  __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen,
+				__iend, __buf, __buf + __blen, __bend);
+
+	  if (__r == codecvt_base::ok || __r == codecvt_base::partial)
+	    __blen = __bend - __buf;
+	  else if (__r == codecvt_base::noconv)
+	    {
+	      // Same as the always_noconv case above.
+	      __buf = reinterpret_cast<char*>(__ibuf);
+	      __blen = __ilen;
+	    }
+	  else
+	    __throw_ios_failure(__N("basic_filebuf::_M_convert_to_external "
+				    "conversion error"));
+  
+	  __elen = _M_file.xsputn(__buf, __blen);
+	  __plen = __blen;
+
+	  // Try once more for partial conversions.
+	  if (__r == codecvt_base::partial && __elen == __plen)
+	    {
+	      const char_type* __iresume = __iend;
+	      streamsize __rlen = this->pptr() - __iend;
+	      __r = _M_codecvt->out(_M_state_cur, __iresume,
+				    __iresume + __rlen, __iend, __buf,
+				    __buf + __blen, __bend);
+	      if (__r != codecvt_base::error)
+		{
+		  __rlen = __bend - __buf;
+		  __elen = _M_file.xsputn(__buf, __rlen);
+		  __plen = __rlen;
+		}
+	      else
+		__throw_ios_failure(__N("basic_filebuf::_M_convert_to_external "
+					"conversion error"));
+	    }
+	}
+      return __elen == __plen;
+    }
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_filebuf<_CharT, _Traits>::
+    xsgetn(_CharT* __s, streamsize __n)
+    {
+      // Clear out pback buffer before going on to the real deal...
+      streamsize __ret = 0;
+      if (_M_pback_init)
+	{
+	  if (__n > 0 && this->gptr() == this->eback())
+	    {
+	      *__s++ = *this->gptr(); // emulate non-underflowing sbumpc
+	      this->gbump(1);
+	      __ret = 1;
+	      --__n;
+	    }
+	  _M_destroy_pback();
+	}
+      else if (_M_writing)
+	{
+ 	  if (overflow() == traits_type::eof())
+ 	    return __ret;
+ 	  _M_set_buffer(-1);
+ 	  _M_writing = false;
+ 	}
+ 
+      // Optimization in the always_noconv() case, to be generalized in the
+      // future: when __n > __buflen we read directly instead of using the
+      // buffer repeatedly.
+      const bool __testin = _M_mode & ios_base::in;
+      const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
+ 
+      if (__n > __buflen && __check_facet(_M_codecvt).always_noconv()
+ 	   && __testin)
+ 	 {
+ 	   // First, copy the chars already present in the buffer.
+ 	   const streamsize __avail = this->egptr() - this->gptr();
+ 	   if (__avail != 0)
+ 	     {
+	       traits_type::copy(__s, this->gptr(), __avail);
+ 	       __s += __avail;
+	       this->setg(this->eback(), this->gptr() + __avail,
+			  this->egptr());
+	       __ret += __avail;
+	       __n -= __avail;
+ 	     }
+ 
+ 	   // Need to loop in case of short reads (relatively common
+ 	   // with pipes).
+ 	   streamsize __len;
+ 	   for (;;)
+ 	     {
+ 	       __len = _M_file.xsgetn(reinterpret_cast<char*>(__s),
+ 				      __n);
+ 	       if (__len == -1)
+ 		 __throw_ios_failure(__N("basic_filebuf::xsgetn "
+ 					 "error reading the file"));
+ 	       if (__len == 0)
+ 		 break;
+ 
+ 	       __n -= __len;
+ 	       __ret += __len;
+ 	       if (__n == 0)
+ 		 break;
+ 
+ 	       __s += __len;
+ 	     }
+ 
+ 	   if (__n == 0)
+ 	     {
+ 	       _M_set_buffer(0);
+ 	       _M_reading = true;
+ 	     }
+ 	   else if (__len == 0)
+ 	     {
+ 	       // If end of file is reached, set 'uncommitted'
+ 	       // mode, thus allowing an immediate write without
+ 	       // an intervening seek.
+ 	       _M_set_buffer(-1);
+ 	       _M_reading = false;
+ 	     }
+ 	 }
+      else
+ 	 __ret += __streambuf_type::xsgetn(__s, __n);
+ 
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_filebuf<_CharT, _Traits>::
+    xsputn(const _CharT* __s, streamsize __n)
+    {
+      streamsize __ret = 0;
+      // Optimization in the always_noconv() case, to be generalized in the
+      // future: when __n is sufficiently large we write directly instead of
+      // using the buffer.
+      const bool __testout = _M_mode & ios_base::out;
+      if (__check_facet(_M_codecvt).always_noconv()
+ 	   && __testout && !_M_reading)
+	{
+	  // Measurement would reveal the best choice.
+	  const streamsize __chunk = 1ul << 10;
+	  streamsize __bufavail = this->epptr() - this->pptr();
+
+	  // Don't mistake 'uncommitted' mode buffered with unbuffered.
+	  if (!_M_writing && _M_buf_size > 1)
+	    __bufavail = _M_buf_size - 1;
+
+	  const streamsize __limit = std::min(__chunk, __bufavail);
+	  if (__n >= __limit)
+	    {
+	      const streamsize __buffill = this->pptr() - this->pbase();
+	      const char* __buf = reinterpret_cast<const char*>(this->pbase());
+	      __ret = _M_file.xsputn_2(__buf, __buffill,
+				       reinterpret_cast<const char*>(__s),
+				       __n);
+	      if (__ret == __buffill + __n)
+		{
+		  _M_set_buffer(0);
+		  _M_writing = true;
+		}
+	      if (__ret > __buffill)
+		__ret -= __buffill;
+	      else
+		__ret = 0;
+	    }
+	  else
+	    __ret = __streambuf_type::xsputn(__s, __n);
+	}
+       else
+	 __ret = __streambuf_type::xsputn(__s, __n);
+       return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
+    basic_filebuf<_CharT, _Traits>::
+    setbuf(char_type* __s, streamsize __n)
+    {
+      if (!this->is_open())
+	{
+	  if (__s == 0 && __n == 0)
+	    _M_buf_size = 1;
+	  else if (__s && __n > 0)
+	    {
+	      // This is implementation-defined behavior, and assumes that
+	      // an external char_type array of length __n exists and has
+	      // been pre-allocated. If this is not the case, things will
+	      // quickly blow up. When __n > 1, __n - 1 positions will be
+	      // used for the get area, __n - 1 for the put area and 1
+	      // position to host the overflow char of a full put area.
+	      // When __n == 1, 1 position will be used for the get area
+	      // and 0 for the put area, as in the unbuffered case above.
+	      _M_buf = __s;
+	      _M_buf_size = __n;
+	    }
+	}
+      return this;
+    }
+
+
+  // According to 27.8.1.4 p11 - 13, seekoff should ignore the last
+  // argument (of type openmode).
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::pos_type
+    basic_filebuf<_CharT, _Traits>::
+    seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode)
+    {
+      int __width = 0;
+      if (_M_codecvt)
+	__width = _M_codecvt->encoding();
+      if (__width < 0)
+	__width = 0;
+
+      pos_type __ret = pos_type(off_type(-1));
+      const bool __testfail = __off != 0 && __width <= 0;
+      if (this->is_open() && !__testfail)
+	{
+	  // tellg and tellp queries do not affect any state, unless
+	  // ! always_noconv and the put sequence is not empty.
+	  // In that case, determining the position requires converting the
+	  // put sequence. That doesn't use ext_buf, so requires a flush.
+	  bool __no_movement = __way == ios_base::cur && __off == 0
+	    && (!_M_writing || _M_codecvt->always_noconv());
+
+	  // Ditch any pback buffers to avoid confusion.
+	  if (!__no_movement)
+	    _M_destroy_pback();
+
+	  // Correct state at destination. Note that this is the correct
+	  // state for the current position during output, because
+	  // codecvt::unshift() returns the state to the initial state.
+	  // This is also the correct state at the end of the file because
+	  // an unshift sequence should have been written at the end.
+	  __state_type __state = _M_state_beg;
+	  off_type __computed_off = __off * __width;
+	  if (_M_reading && __way == ios_base::cur)
+	    {
+	      __state = _M_state_last;
+	      __computed_off += _M_get_ext_pos(__state);
+	    }
+	  if (!__no_movement)
+	    __ret = _M_seek(__computed_off, __way, __state);
+	  else
+	    {
+	      if (_M_writing)
+		__computed_off = this->pptr() - this->pbase();
+	      
+ 	      off_type __file_off = _M_file.seekoff(0, ios_base::cur);
+ 	      if (__file_off != off_type(-1))
+		{
+		  __ret = __file_off + __computed_off;
+		  __ret.state(__state);
+		}
+	    }
+	}
+      return __ret;
+    }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 171. Strange seekpos() semantics due to joint position
+  // According to the resolution of DR 171, seekpos should ignore the last
+  // argument (of type openmode).
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::pos_type
+    basic_filebuf<_CharT, _Traits>::
+    seekpos(pos_type __pos, ios_base::openmode)
+    {
+      pos_type __ret =  pos_type(off_type(-1));
+      if (this->is_open())
+	{
+	  // Ditch any pback buffers to avoid confusion.
+	  _M_destroy_pback();
+	  __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state());
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_filebuf<_CharT, _Traits>::pos_type
+    basic_filebuf<_CharT, _Traits>::
+    _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state)
+    {
+      pos_type __ret = pos_type(off_type(-1));
+      if (_M_terminate_output())
+	{
+	  off_type __file_off = _M_file.seekoff(__off, __way);
+	  if (__file_off != off_type(-1))
+	    {
+	      _M_reading = false;
+	      _M_writing = false;
+	      _M_ext_next = _M_ext_end = _M_ext_buf;
+	      _M_set_buffer(-1);
+	      _M_state_cur = __state;
+	      __ret = __file_off;
+	      __ret.state(_M_state_cur);
+	    }
+	}
+      return __ret;
+    }
+
+  // Returns the distance from the end of the ext buffer to the point
+  // corresponding to gptr(). This is a negative value. Updates __state
+  // from eback() correspondence to gptr().
+  template<typename _CharT, typename _Traits>
+    int basic_filebuf<_CharT, _Traits>::
+    _M_get_ext_pos(__state_type& __state)
+    {
+      if (_M_codecvt->always_noconv())
+        return this->gptr() - this->egptr();
+      else
+        {
+          // Calculate offset from _M_ext_buf that corresponds to
+          // gptr(). Precondition: __state == _M_state_last, which
+          // corresponds to eback().
+          const int __gptr_off =
+            _M_codecvt->length(__state, _M_ext_buf, _M_ext_next,
+                               this->gptr() - this->eback());
+          return _M_ext_buf + __gptr_off - _M_ext_end;
+        }
+    }
+    
+  template<typename _CharT, typename _Traits>
+    bool
+    basic_filebuf<_CharT, _Traits>::
+    _M_terminate_output()
+    {
+      // Part one: update the output sequence.
+      bool __testvalid = true;
+      if (this->pbase() < this->pptr())
+	{
+	  const int_type __tmp = this->overflow();
+	  if (traits_type::eq_int_type(__tmp, traits_type::eof()))
+	    __testvalid = false;
+	}
+
+      // Part two: output unshift sequence.
+      if (_M_writing && !__check_facet(_M_codecvt).always_noconv()
+	  && __testvalid)
+	{
+	  // Note: this value is arbitrary, since there is no way to
+	  // get the length of the unshift sequence from codecvt,
+	  // without calling unshift.
+	  const size_t __blen = 128;
+	  char __buf[__blen];
+	  codecvt_base::result __r;
+	  streamsize __ilen = 0;
+
+	  do
+	    {
+	      char* __next;
+	      __r = _M_codecvt->unshift(_M_state_cur, __buf,
+					__buf + __blen, __next);
+	      if (__r == codecvt_base::error)
+		__testvalid = false;
+	      else if (__r == codecvt_base::ok ||
+		       __r == codecvt_base::partial)
+		{
+		  __ilen = __next - __buf;
+		  if (__ilen > 0)
+		    {
+		      const streamsize __elen = _M_file.xsputn(__buf, __ilen);
+		      if (__elen != __ilen)
+			__testvalid = false;
+		    }
+		}
+	    }
+	  while (__r == codecvt_base::partial && __ilen > 0 && __testvalid);
+
+	  if (__testvalid)
+	    {
+	      // This second call to overflow() is required by the standard,
+	      // but it's not clear why it's needed, since the output buffer
+	      // should be empty by this point (it should have been emptied
+	      // in the first call to overflow()).
+	      const int_type __tmp = this->overflow();
+	      if (traits_type::eq_int_type(__tmp, traits_type::eof()))
+		__testvalid = false;
+	    }
+	}
+      return __testvalid;
+    }
+
+  template<typename _CharT, typename _Traits>
+    int
+    basic_filebuf<_CharT, _Traits>::
+    sync()
+    {
+      // Make sure that the internal buffer resyncs its idea of
+      // the file position with the external file.
+      int __ret = 0;
+      if (this->pbase() < this->pptr())
+	{
+	  const int_type __tmp = this->overflow();
+	  if (traits_type::eq_int_type(__tmp, traits_type::eof()))
+	    __ret = -1;
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    void
+    basic_filebuf<_CharT, _Traits>::
+    imbue(const locale& __loc)
+    {
+      bool __testvalid = true;
+
+      const __codecvt_type* _M_codecvt_tmp = 0;
+      if (__builtin_expect(has_facet<__codecvt_type>(__loc), true))
+	_M_codecvt_tmp = &use_facet<__codecvt_type>(__loc);
+
+      if (this->is_open())
+	{
+	  // encoding() == -1 is ok only at the beginning.
+	  if ((_M_reading || _M_writing)
+	      && __check_facet(_M_codecvt).encoding() == -1)
+	    __testvalid = false;
+	  else
+	    {
+	      if (_M_reading)
+		{
+		  if (__check_facet(_M_codecvt).always_noconv())
+		    {
+		      if (_M_codecvt_tmp
+			  && !__check_facet(_M_codecvt_tmp).always_noconv())
+			__testvalid = this->seekoff(0, ios_base::cur, _M_mode)
+			              != pos_type(off_type(-1));
+		    }
+		  else
+		    {
+		      // External position corresponding to gptr().
+		      _M_ext_next = _M_ext_buf
+			+ _M_codecvt->length(_M_state_last, _M_ext_buf,
+					     _M_ext_next,
+					     this->gptr() - this->eback());
+		      const streamsize __remainder = _M_ext_end - _M_ext_next;
+		      if (__remainder)
+			__builtin_memmove(_M_ext_buf, _M_ext_next, __remainder);
+
+		      _M_ext_next = _M_ext_buf;
+		      _M_ext_end = _M_ext_buf + __remainder;
+		      _M_set_buffer(-1);
+		      _M_state_last = _M_state_cur = _M_state_beg;
+		    }
+		}
+	      else if (_M_writing && (__testvalid = _M_terminate_output()))
+		_M_set_buffer(-1);
+	    }
+	}
+
+      if (__testvalid)
+	_M_codecvt = _M_codecvt_tmp;
+      else
+	_M_codecvt = 0;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_filebuf<char>;
+  extern template class basic_ifstream<char>;
+  extern template class basic_ofstream<char>;
+  extern template class basic_fstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_filebuf<wchar_t>;
+  extern template class basic_ifstream<wchar_t>;
+  extern template class basic_ofstream<wchar_t>;
+  extern template class basic_fstream<wchar_t>;
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functexcept.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functexcept.h
new file mode 100644
index 000000000..d8e6ae76d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functexcept.h
@@ -0,0 +1,107 @@
+// Function-Based Exception Support -*- C++ -*-
+
+// Copyright (C) 2001, 2004, 2005, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/functexcept.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{exception}
+ *
+ *  This header provides support for -fno-exceptions.
+ */
+
+//
+// ISO C++ 14882: 19.1  Exception classes
+//
+
+#ifndef _FUNCTEXCEPT_H
+#define _FUNCTEXCEPT_H 1
+
+#include <bits/c++config.h>
+#include <bits/exception_defines.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Helper for exception objects in <except>
+  void
+  __throw_bad_exception(void) __attribute__((__noreturn__));
+
+  // Helper for exception objects in <new>
+  void
+  __throw_bad_alloc(void) __attribute__((__noreturn__));
+
+  // Helper for exception objects in <typeinfo>
+  void
+  __throw_bad_cast(void) __attribute__((__noreturn__));
+
+  void
+  __throw_bad_typeid(void) __attribute__((__noreturn__));
+
+  // Helpers for exception objects in <stdexcept>
+  void
+  __throw_logic_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_domain_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_invalid_argument(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_length_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_out_of_range(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_runtime_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_range_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_overflow_error(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_underflow_error(const char*) __attribute__((__noreturn__));
+
+  // Helpers for exception objects in <ios>
+  void
+  __throw_ios_failure(const char*) __attribute__((__noreturn__));
+
+  void
+  __throw_system_error(int) __attribute__((__noreturn__));
+
+  void
+  __throw_future_error(int) __attribute__((__noreturn__));
+
+  // Helpers for exception objects in <functional>
+  void
+  __throw_bad_function_call() __attribute__((__noreturn__));
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functional_hash.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functional_hash.h
new file mode 100644
index 000000000..e77cb4e17
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/functional_hash.h
@@ -0,0 +1,191 @@
+// functional_hash.h header -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/functional_hash.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _FUNCTIONAL_HASH_H
+#define _FUNCTIONAL_HASH_H 1
+
+#pragma GCC system_header
+
+#include <bits/hash_bytes.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /** @defgroup hashes Hashes
+   *  @ingroup functors
+   *
+   *   Hashing functors taking a variable type and returning a @c std::size_t.
+   *
+   *  @{
+   */
+
+  template<typename _Result, typename _Arg>
+    struct __hash_base
+    {
+      typedef _Result     result_type;
+      typedef _Arg      argument_type;
+    };
+
+  /// Primary class template hash.
+  template<typename _Tp>
+    struct hash : public __hash_base<size_t, _Tp>
+    {
+      size_t
+      operator()(_Tp __val) const;
+    };
+
+  /// Partial specializations for pointer types.
+  template<typename _Tp>
+    struct hash<_Tp*> : public __hash_base<size_t, _Tp*>
+    {
+      size_t
+      operator()(_Tp* __p) const
+      { return reinterpret_cast<size_t>(__p); }
+    };
+
+  // Explicit specializations for integer types.
+#define _Cxx_hashtable_define_trivial_hash(_Tp) 	\
+  template<>						\
+    inline size_t					\
+    hash<_Tp>::operator()(_Tp __val) const		\
+    { return static_cast<size_t>(__val); }
+
+  /// Explicit specialization for bool.
+  _Cxx_hashtable_define_trivial_hash(bool);
+
+  /// Explicit specialization for char.
+  _Cxx_hashtable_define_trivial_hash(char);
+
+  /// Explicit specialization for signed char.
+  _Cxx_hashtable_define_trivial_hash(signed char);
+
+  /// Explicit specialization for unsigned char.
+  _Cxx_hashtable_define_trivial_hash(unsigned char);
+
+  /// Explicit specialization for wchar_t.
+  _Cxx_hashtable_define_trivial_hash(wchar_t);
+
+  /// Explicit specialization for char16_t.
+  _Cxx_hashtable_define_trivial_hash(char16_t);
+
+  /// Explicit specialization for char32_t.
+  _Cxx_hashtable_define_trivial_hash(char32_t);
+
+  /// Explicit specialization for short.
+  _Cxx_hashtable_define_trivial_hash(short);
+
+  /// Explicit specialization for int.
+  _Cxx_hashtable_define_trivial_hash(int);
+
+  /// Explicit specialization for long.
+  _Cxx_hashtable_define_trivial_hash(long);
+
+  /// Explicit specialization for long long.
+  _Cxx_hashtable_define_trivial_hash(long long);
+
+  /// Explicit specialization for unsigned short.
+  _Cxx_hashtable_define_trivial_hash(unsigned short);
+
+  /// Explicit specialization for unsigned int.
+  _Cxx_hashtable_define_trivial_hash(unsigned int);
+
+  /// Explicit specialization for unsigned long.
+  _Cxx_hashtable_define_trivial_hash(unsigned long);
+
+  /// Explicit specialization for unsigned long long.
+  _Cxx_hashtable_define_trivial_hash(unsigned long long);
+
+#undef _Cxx_hashtable_define_trivial_hash
+
+  struct _Hash_impl
+  {
+    static size_t
+    hash(const void* __ptr, size_t __clength,
+	 size_t __seed = static_cast<size_t>(0xc70f6907UL))
+    { return _Hash_bytes(__ptr, __clength, __seed); }
+
+    template<typename _Tp>
+      static size_t
+      hash(const _Tp& __val)
+      { return hash(&__val, sizeof(__val)); }
+
+    template<typename _Tp>
+      static size_t
+      __hash_combine(const _Tp& __val, size_t __hash)
+      { return hash(&__val, sizeof(__val), __hash); }
+  };
+
+  struct _Fnv_hash_impl
+  {
+    static size_t
+    hash(const void* __ptr, size_t __clength,
+	 size_t __seed = static_cast<size_t>(2166136261UL))
+    { return _Fnv_hash_bytes(__ptr, __clength, __seed); }
+
+    template<typename _Tp>
+      static size_t
+      hash(const _Tp& __val)
+      { return hash(&__val, sizeof(__val)); }
+
+    template<typename _Tp>
+      static size_t
+      __hash_combine(const _Tp& __val, size_t __hash)
+      { return hash(&__val, sizeof(__val), __hash); }
+  };
+
+  /// Specialization for float.
+  template<>
+    inline size_t
+    hash<float>::operator()(float __val) const
+    {
+      // 0 and -0 both hash to zero.
+      return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0;
+    }
+
+  /// Specialization for double.
+  template<>
+    inline size_t
+    hash<double>::operator()(double __val) const
+    {
+      // 0 and -0 both hash to zero.
+      return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0;
+    }
+
+  /// Specialization for long double.
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<long double>::operator()(long double __val) const;
+
+  // @} group hashes
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _FUNCTIONAL_HASH_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice.h
new file mode 100644
index 000000000..47d177510
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice.h
@@ -0,0 +1,185 @@
+// The template and inlines for the -*- C++ -*- gslice class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/gslice.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _GSLICE_H
+#define _GSLICE_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  /**
+   *  @brief  Class defining multi-dimensional subset of an array.
+   *
+   *  The slice class represents a multi-dimensional subset of an array,
+   *  specified by three parameter sets: start offset, size array, and stride
+   *  array.  The start offset is the index of the first element of the array
+   *  that is part of the subset.  The size and stride array describe each
+   *  dimension of the slice.  Size is the number of elements in that
+   *  dimension, and stride is the distance in the array between successive
+   *  elements in that dimension.  Each dimension's size and stride is taken
+   *  to begin at an array element described by the previous dimension.  The
+   *  size array and stride array must be the same size.
+   *
+   *  For example, if you have offset==3, stride[0]==11, size[1]==3,
+   *  stride[1]==3, then slice[0,0]==array[3], slice[0,1]==array[6],
+   *  slice[0,2]==array[9], slice[1,0]==array[14], slice[1,1]==array[17],
+   *  slice[1,2]==array[20].
+   */
+  class gslice
+  {
+  public:
+    ///  Construct an empty slice.
+    gslice();
+
+    /**
+     *  @brief  Construct a slice.
+     *
+     *  Constructs a slice with as many dimensions as the length of the @a l
+     *  and @a s arrays.
+     *
+     *  @param  o  Offset in array of first element.
+     *  @param  l  Array of dimension lengths.
+     *  @param  s  Array of dimension strides between array elements.
+     */
+    gslice(size_t, const valarray<size_t>&, const valarray<size_t>&);
+
+    // XXX: the IS says the copy-ctor and copy-assignment operators are
+    //      synthesized by the compiler but they are just unsuitable
+    //      for a ref-counted semantic
+    ///  Copy constructor.
+    gslice(const gslice&);
+
+    ///  Destructor.
+    ~gslice();
+
+    // XXX: See the note above.
+    ///  Assignment operator.
+    gslice& operator=(const gslice&);
+
+    ///  Return array offset of first slice element.
+    size_t           start() const;
+
+    ///  Return array of sizes of slice dimensions.
+    valarray<size_t> size() const;
+    
+    ///  Return array of array strides for each dimension.
+    valarray<size_t> stride() const;
+
+  private:
+    struct _Indexer
+    {
+      size_t _M_count;
+      size_t _M_start;
+      valarray<size_t> _M_size;
+      valarray<size_t> _M_stride;
+      valarray<size_t> _M_index; // Linear array of referenced indices
+
+      _Indexer()
+      : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {}
+
+      _Indexer(size_t, const valarray<size_t>&,
+	       const valarray<size_t>&);
+
+      void
+      _M_increment_use()
+      { ++_M_count; }
+      
+      size_t
+      _M_decrement_use()
+      { return --_M_count; }
+    };
+
+    _Indexer* _M_index;
+
+    template<typename _Tp> friend class valarray;
+  };
+
+  inline size_t
+  gslice::start() const
+  { return _M_index ? _M_index->_M_start : 0; }
+
+  inline valarray<size_t>
+  gslice::size() const
+  { return _M_index ? _M_index->_M_size : valarray<size_t>(); }
+
+  inline valarray<size_t>
+  gslice::stride() const
+  { return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 543. valarray slice default constructor
+  inline
+  gslice::gslice()
+  : _M_index(new gslice::_Indexer()) {}
+
+  inline
+  gslice::gslice(size_t __o, const valarray<size_t>& __l,
+		 const valarray<size_t>& __s)
+  : _M_index(new gslice::_Indexer(__o, __l, __s)) {}
+
+  inline
+  gslice::gslice(const gslice& __g)
+  : _M_index(__g._M_index)
+  { if (_M_index) _M_index->_M_increment_use(); }
+
+  inline
+  gslice::~gslice()
+  {
+    if (_M_index && _M_index->_M_decrement_use() == 0)
+      delete _M_index;
+  }
+
+  inline gslice&
+  gslice::operator=(const gslice& __g)
+  {
+    if (__g._M_index)
+      __g._M_index->_M_increment_use();
+    if (_M_index && _M_index->_M_decrement_use() == 0)
+      delete _M_index;
+    _M_index = __g._M_index;
+    return *this;
+  }
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GSLICE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice_array.h
new file mode 100644
index 000000000..1ae047df2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/gslice_array.h
@@ -0,0 +1,219 @@
+// The template and inlines for the -*- C++ -*- gslice_array class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/gslice_array.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _GSLICE_ARRAY_H
+#define _GSLICE_ARRAY_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  /**
+   *  @brief  Reference to multi-dimensional subset of an array.
+   *
+   *  A gslice_array is a reference to the actual elements of an array
+   *  specified by a gslice.  The way to get a gslice_array is to call
+   *  operator[](gslice) on a valarray.  The returned gslice_array then
+   *  permits carrying operations out on the referenced subset of elements in
+   *  the original valarray.  For example, operator+=(valarray) will add
+   *  values to the subset of elements in the underlying valarray this
+   *  gslice_array refers to.
+   *
+   *  @param  Tp  Element type.
+   */
+  template<typename _Tp>
+    class gslice_array
+    {
+    public:
+      typedef _Tp value_type;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 253. valarray helper functions are almost entirely useless
+
+      ///  Copy constructor.  Both slices refer to the same underlying array.
+      gslice_array(const gslice_array&);
+
+      ///  Assignment operator.  Assigns slice elements to corresponding
+      ///  elements of @a a.
+      gslice_array& operator=(const gslice_array&);
+
+      ///  Assign slice elements to corresponding elements of @a v.
+      void operator=(const valarray<_Tp>&) const;
+      ///  Multiply slice elements by corresponding elements of @a v.
+      void operator*=(const valarray<_Tp>&) const;
+      ///  Divide slice elements by corresponding elements of @a v.
+      void operator/=(const valarray<_Tp>&) const;
+      ///  Modulo slice elements by corresponding elements of @a v.
+      void operator%=(const valarray<_Tp>&) const;
+      ///  Add corresponding elements of @a v to slice elements.
+      void operator+=(const valarray<_Tp>&) const;
+      ///  Subtract corresponding elements of @a v from slice elements.
+      void operator-=(const valarray<_Tp>&) const;
+      ///  Logical xor slice elements with corresponding elements of @a v.
+      void operator^=(const valarray<_Tp>&) const;
+      ///  Logical and slice elements with corresponding elements of @a v.
+      void operator&=(const valarray<_Tp>&) const;
+      ///  Logical or slice elements with corresponding elements of @a v.
+      void operator|=(const valarray<_Tp>&) const;
+      ///  Left shift slice elements by corresponding elements of @a v.
+      void operator<<=(const valarray<_Tp>&) const;
+      ///  Right shift slice elements by corresponding elements of @a v.
+      void operator>>=(const valarray<_Tp>&) const;
+      ///  Assign all slice elements to @a t.
+      void operator=(const _Tp&) const;
+
+      template<class _Dom>
+        void operator=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator*=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator/=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator%=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator+=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator-=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator^=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator&=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator|=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator<<=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+        void operator>>=(const _Expr<_Dom, _Tp>&) const;
+
+    private:
+      _Array<_Tp>    _M_array;
+      const valarray<size_t>& _M_index;
+
+      friend class valarray<_Tp>;
+
+      gslice_array(_Array<_Tp>, const valarray<size_t>&);
+
+      // not implemented
+      gslice_array();
+    };
+
+  template<typename _Tp>
+    inline
+    gslice_array<_Tp>::gslice_array(_Array<_Tp> __a,
+				    const valarray<size_t>& __i)
+    : _M_array(__a), _M_index(__i) {}
+
+  template<typename _Tp>
+    inline
+    gslice_array<_Tp>::gslice_array(const gslice_array<_Tp>& __a)
+    : _M_array(__a._M_array), _M_index(__a._M_index) {}
+
+  template<typename _Tp>
+    inline gslice_array<_Tp>&
+    gslice_array<_Tp>::operator=(const gslice_array<_Tp>& __a)
+    {
+      std::__valarray_copy(_Array<_Tp>(__a._M_array),
+			   _Array<size_t>(__a._M_index), _M_index.size(),
+			   _M_array, _Array<size_t>(_M_index));
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline void
+    gslice_array<_Tp>::operator=(const _Tp& __t) const
+    {
+      std::__valarray_fill(_M_array, _Array<size_t>(_M_index),
+			   _M_index.size(), __t);
+    }
+
+  template<typename _Tp>
+    inline void
+    gslice_array<_Tp>::operator=(const valarray<_Tp>& __v) const
+    {
+      std::__valarray_copy(_Array<_Tp>(__v), __v.size(),
+			   _M_array, _Array<size_t>(_M_index));
+    }
+
+  template<typename _Tp>
+    template<class _Dom>
+      inline void
+      gslice_array<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e) const
+      {
+	std::__valarray_copy (__e, _M_index.size(), _M_array,
+			      _Array<size_t>(_M_index));
+      }
+
+#undef _DEFINE_VALARRAY_OPERATOR
+#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name)				\
+  template<typename _Tp>						\
+    inline void								\
+    gslice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const	\
+    {									\
+      _Array_augmented_##_Name(_M_array, _Array<size_t>(_M_index),	\
+			       _Array<_Tp>(__v), __v.size());		\
+    }									\
+									\
+  template<typename _Tp>                                                \
+    template<class _Dom>				                \
+      inline void							\
+      gslice_array<_Tp>::operator _Op##= (const _Expr<_Dom, _Tp>& __e) const\
+      {									\
+	_Array_augmented_##_Name(_M_array, _Array<size_t>(_M_index), __e,\
+				 _M_index.size());			\
+      }
+
+_DEFINE_VALARRAY_OPERATOR(*, __multiplies)
+_DEFINE_VALARRAY_OPERATOR(/, __divides)
+_DEFINE_VALARRAY_OPERATOR(%, __modulus)
+_DEFINE_VALARRAY_OPERATOR(+, __plus)
+_DEFINE_VALARRAY_OPERATOR(-, __minus)
+_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor)
+_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and)
+_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or)
+_DEFINE_VALARRAY_OPERATOR(<<, __shift_left)
+_DEFINE_VALARRAY_OPERATOR(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_OPERATOR
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GSLICE_ARRAY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable.h
new file mode 100644
index 000000000..f284126e2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable.h
@@ -0,0 +1,1236 @@
+// hashtable.h header -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/hashtable.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{unordered_map, unordered_set}
+ */
+
+#ifndef _HASHTABLE_H
+#define _HASHTABLE_H 1
+
+#pragma GCC system_header
+
+#include <bits/hashtable_policy.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Class template _Hashtable, class definition.
+
+  // Meaning of class template _Hashtable's template parameters
+
+  // _Key and _Value: arbitrary CopyConstructible types.
+
+  // _Allocator: an allocator type ([lib.allocator.requirements]) whose
+  // value type is Value.  As a conforming extension, we allow for
+  // value type != Value.
+
+  // _ExtractKey: function object that takes a object of type Value
+  // and returns a value of type _Key.
+
+  // _Equal: function object that takes two objects of type k and returns
+  // a bool-like value that is true if the two objects are considered equal.
+
+  // _H1: the hash function.  A unary function object with argument type
+  // Key and result type size_t.  Return values should be distributed
+  // over the entire range [0, numeric_limits<size_t>:::max()].
+
+  // _H2: the range-hashing function (in the terminology of Tavori and
+  // Dreizin).  A binary function object whose argument types and result
+  // type are all size_t.  Given arguments r and N, the return value is
+  // in the range [0, N).
+
+  // _Hash: the ranged hash function (Tavori and Dreizin). A binary function
+  // whose argument types are _Key and size_t and whose result type is
+  // size_t.  Given arguments k and N, the return value is in the range
+  // [0, N).  Default: hash(k, N) = h2(h1(k), N).  If _Hash is anything other
+  // than the default, _H1 and _H2 are ignored.
+
+  // _RehashPolicy: Policy class with three members, all of which govern
+  // the bucket count. _M_next_bkt(n) returns a bucket count no smaller
+  // than n.  _M_bkt_for_elements(n) returns a bucket count appropriate
+  // for an element count of n.  _M_need_rehash(n_bkt, n_elt, n_ins)
+  // determines whether, if the current bucket count is n_bkt and the
+  // current element count is n_elt, we need to increase the bucket
+  // count.  If so, returns make_pair(true, n), where n is the new
+  // bucket count.  If not, returns make_pair(false, <anything>).
+
+  // ??? Right now it is hard-wired that the number of buckets never
+  // shrinks.  Should we allow _RehashPolicy to change that?
+
+  // __cache_hash_code: bool.  true if we store the value of the hash
+  // function along with the value.  This is a time-space tradeoff.
+  // Storing it may improve lookup speed by reducing the number of times
+  // we need to call the Equal function.
+
+  // __constant_iterators: bool.  true if iterator and const_iterator are
+  // both constant iterator types.  This is true for unordered_set and
+  // unordered_multiset, false for unordered_map and unordered_multimap.
+
+  // __unique_keys: bool.  true if the return value of _Hashtable::count(k)
+  // is always at most one, false if it may be an arbitrary number.  This
+  // true for unordered_set and unordered_map, false for unordered_multiset
+  // and unordered_multimap.
+
+  template<typename _Key, typename _Value, typename _Allocator,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash,
+	   typename _RehashPolicy,
+	   bool __cache_hash_code,
+	   bool __constant_iterators,
+	   bool __unique_keys>
+    class _Hashtable
+    : public __detail::_Rehash_base<_RehashPolicy,
+				    _Hashtable<_Key, _Value, _Allocator,
+					       _ExtractKey,
+					       _Equal, _H1, _H2, _Hash,
+					       _RehashPolicy,
+					       __cache_hash_code,
+					       __constant_iterators,
+					       __unique_keys> >,
+      public __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				       _H1, _H2, _Hash, __cache_hash_code>,
+      public __detail::_Map_base<_Key, _Value, _ExtractKey, __unique_keys,
+				 _Hashtable<_Key, _Value, _Allocator,
+					    _ExtractKey,
+					    _Equal, _H1, _H2, _Hash,
+					    _RehashPolicy,
+					    __cache_hash_code,
+					    __constant_iterators,
+					    __unique_keys> >,
+      public __detail::_Equality_base<_ExtractKey, __unique_keys,
+				      _Hashtable<_Key, _Value, _Allocator,
+						 _ExtractKey,
+						 _Equal, _H1, _H2, _Hash,
+						 _RehashPolicy,
+						 __cache_hash_code,
+						 __constant_iterators,
+						 __unique_keys> >
+    {
+    public:
+      typedef _Allocator                                  allocator_type;
+      typedef _Value                                      value_type;
+      typedef _Key                                        key_type;
+      typedef _Equal                                      key_equal;
+      // mapped_type, if present, comes from _Map_base.
+      // hasher, if present, comes from _Hash_code_base.
+      typedef typename _Allocator::pointer                pointer;
+      typedef typename _Allocator::const_pointer          const_pointer;
+      typedef typename _Allocator::reference              reference;
+      typedef typename _Allocator::const_reference        const_reference;
+
+      typedef std::size_t                                 size_type;
+      typedef std::ptrdiff_t                              difference_type;
+      typedef __detail::_Node_iterator<value_type, __constant_iterators,
+				       __cache_hash_code>
+							  local_iterator;
+      typedef __detail::_Node_const_iterator<value_type,
+					     __constant_iterators,
+					     __cache_hash_code>
+							  const_local_iterator;
+
+      typedef __detail::_Hashtable_iterator<value_type, __constant_iterators,
+					    __cache_hash_code>
+							  iterator;
+      typedef __detail::_Hashtable_const_iterator<value_type,
+						  __constant_iterators,
+						  __cache_hash_code>
+							  const_iterator;
+
+      template<typename _Key2, typename _Value2, typename _Ex2, bool __unique2,
+	       typename _Hashtable2>
+	friend struct __detail::_Map_base;
+
+    private:
+      typedef __detail::_Hash_node<_Value, __cache_hash_code> _Node;
+      typedef typename _Allocator::template rebind<_Node>::other
+							_Node_allocator_type;
+      typedef typename _Allocator::template rebind<_Node*>::other
+							_Bucket_allocator_type;
+
+      typedef typename _Allocator::template rebind<_Value>::other
+							_Value_allocator_type;
+
+      _Node_allocator_type   _M_node_allocator;
+      _Node**                _M_buckets;
+      size_type              _M_bucket_count;
+      size_type              _M_begin_bucket_index; // First non-empty bucket.
+      size_type              _M_element_count;
+      _RehashPolicy          _M_rehash_policy;
+
+      template<typename... _Args>
+	_Node*
+	_M_allocate_node(_Args&&... __args);
+
+      void
+      _M_deallocate_node(_Node* __n);
+
+      void
+      _M_deallocate_nodes(_Node**, size_type);
+
+      _Node**
+      _M_allocate_buckets(size_type __n);
+
+      void
+      _M_deallocate_buckets(_Node**, size_type __n);
+
+    public:
+      // Constructor, destructor, assignment, swap
+      _Hashtable(size_type __bucket_hint,
+		 const _H1&, const _H2&, const _Hash&,
+		 const _Equal&, const _ExtractKey&,
+		 const allocator_type&);
+
+      template<typename _InputIterator>
+	_Hashtable(_InputIterator __first, _InputIterator __last,
+		   size_type __bucket_hint,
+		   const _H1&, const _H2&, const _Hash&,
+		   const _Equal&, const _ExtractKey&,
+		   const allocator_type&);
+
+      _Hashtable(const _Hashtable&);
+
+      _Hashtable(_Hashtable&&);
+
+      _Hashtable&
+      operator=(const _Hashtable& __ht)
+      {
+	_Hashtable __tmp(__ht);
+	this->swap(__tmp);
+	return *this;
+      }
+
+      _Hashtable&
+      operator=(_Hashtable&& __ht)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__ht);
+	return *this;
+      }
+
+      ~_Hashtable();
+
+      void swap(_Hashtable&);
+
+      // Basic container operations
+      iterator
+      begin()
+      { return iterator(_M_buckets + _M_begin_bucket_index); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_M_buckets + _M_begin_bucket_index); }
+
+      iterator
+      end()
+      { return iterator(_M_buckets + _M_bucket_count); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_M_buckets + _M_bucket_count); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_M_buckets + _M_begin_bucket_index); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_M_buckets + _M_bucket_count); }
+
+      size_type
+      size() const
+      { return _M_element_count; }
+
+      bool
+      empty() const
+      { return size() == 0; }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_node_allocator); }
+
+      size_type
+      max_size() const
+      { return _M_node_allocator.max_size(); }
+
+      // Observers
+      key_equal
+      key_eq() const
+      { return this->_M_eq; }
+
+      // hash_function, if present, comes from _Hash_code_base.
+
+      // Bucket operations
+      size_type
+      bucket_count() const
+      { return _M_bucket_count; }
+
+      size_type
+      max_bucket_count() const
+      { return max_size(); }
+
+      size_type
+      bucket_size(size_type __n) const
+      { return std::distance(begin(__n), end(__n)); }
+
+      size_type
+      bucket(const key_type& __k) const
+      {
+	return this->_M_bucket_index(__k, this->_M_hash_code(__k),
+				     bucket_count());
+      }
+
+      local_iterator
+      begin(size_type __n)
+      { return local_iterator(_M_buckets[__n]); }
+
+      local_iterator
+      end(size_type)
+      { return local_iterator(0); }
+
+      const_local_iterator
+      begin(size_type __n) const
+      { return const_local_iterator(_M_buckets[__n]); }
+
+      const_local_iterator
+      end(size_type) const
+      { return const_local_iterator(0); }
+
+      // DR 691.
+      const_local_iterator
+      cbegin(size_type __n) const
+      { return const_local_iterator(_M_buckets[__n]); }
+
+      const_local_iterator
+      cend(size_type) const
+      { return const_local_iterator(0); }
+
+      float
+      load_factor() const
+      {
+	return static_cast<float>(size()) / static_cast<float>(bucket_count());
+      }
+
+      // max_load_factor, if present, comes from _Rehash_base.
+
+      // Generalization of max_load_factor.  Extension, not found in TR1.  Only
+      // useful if _RehashPolicy is something other than the default.
+      const _RehashPolicy&
+      __rehash_policy() const
+      { return _M_rehash_policy; }
+
+      void
+      __rehash_policy(const _RehashPolicy&);
+
+      // Lookup.
+      iterator
+      find(const key_type& __k);
+
+      const_iterator
+      find(const key_type& __k) const;
+
+      size_type
+      count(const key_type& __k) const;
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __k);
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __k) const;
+
+    private:
+      // Find and insert helper functions and types
+      _Node*
+      _M_find_node(_Node*, const key_type&,
+		   typename _Hashtable::_Hash_code_type) const;
+
+      template<typename _Arg>
+	iterator
+	_M_insert_bucket(_Arg&&, size_type,
+			 typename _Hashtable::_Hash_code_type);
+
+      template<typename _Arg>
+	std::pair<iterator, bool>
+	_M_insert(_Arg&&, std::true_type);
+
+      template<typename _Arg>
+	iterator
+	_M_insert(_Arg&&, std::false_type);
+
+      typedef typename std::conditional<__unique_keys,
+					std::pair<iterator, bool>,
+					iterator>::type
+	_Insert_Return_Type;
+
+      typedef typename std::conditional<__unique_keys,
+					std::_Select1st<_Insert_Return_Type>,
+					std::_Identity<_Insert_Return_Type>
+				   >::type
+	_Insert_Conv_Type;
+
+    public:
+      // Insert and erase
+      _Insert_Return_Type
+      insert(const value_type& __v)
+      { return _M_insert(__v, std::integral_constant<bool, __unique_keys>()); }
+
+      iterator
+      insert(const_iterator, const value_type& __v)
+      { return _Insert_Conv_Type()(insert(__v)); }
+
+      _Insert_Return_Type
+      insert(value_type&& __v)
+      { return _M_insert(std::move(__v),
+			 std::integral_constant<bool, __unique_keys>()); }
+
+      iterator
+      insert(const_iterator, value_type&& __v)
+      { return _Insert_Conv_Type()(insert(std::move(__v))); }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<!__constant_iterators
+			      && std::is_convertible<_Pair,
+						     value_type>::value>::type>
+	_Insert_Return_Type
+	insert(_Pair&& __v)
+	{ return _M_insert(std::forward<_Pair>(__v),
+			   std::integral_constant<bool, __unique_keys>()); }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<!__constant_iterators
+			      && std::is_convertible<_Pair,
+						     value_type>::value>::type>
+	iterator
+	insert(const_iterator, _Pair&& __v)
+	{ return _Insert_Conv_Type()(insert(std::forward<_Pair>(__v))); }
+
+      template<typename _InputIterator>
+	void
+	insert(_InputIterator __first, _InputIterator __last);
+
+      void
+      insert(initializer_list<value_type> __l)
+      { this->insert(__l.begin(), __l.end()); }
+
+      iterator
+      erase(const_iterator);
+
+      size_type
+      erase(const key_type&);
+
+      iterator
+      erase(const_iterator, const_iterator);
+
+      void
+      clear();
+
+      // Set number of buckets to be appropriate for container of n element.
+      void rehash(size_type __n);
+
+      // DR 1189.
+      // reserve, if present, comes from _Rehash_base.
+
+    private:
+      // Unconditionally change size of bucket array to n.
+      void _M_rehash(size_type __n);
+    };
+
+
+  // Definitions of class template _Hashtable's out-of-line member functions.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename... _Args>
+      typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			  _H1, _H2, _Hash, _RehashPolicy,
+			  __chc, __cit, __uk>::_Node*
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _M_allocate_node(_Args&&... __args)
+      {
+	_Node* __n = _M_node_allocator.allocate(1);
+	__try
+	  {
+	    _M_node_allocator.construct(__n, std::forward<_Args>(__args)...);
+	    __n->_M_next = 0;
+	    return __n;
+	  }
+	__catch(...)
+	  {
+	    _M_node_allocator.deallocate(__n, 1);
+	    __throw_exception_again;
+	  }
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_node(_Node* __n)
+    {
+      _M_node_allocator.destroy(__n);
+      _M_node_allocator.deallocate(__n, 1);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_nodes(_Node** __array, size_type __n)
+    {
+      for (size_type __i = 0; __i < __n; ++__i)
+	{
+	  _Node* __p = __array[__i];
+	  while (__p)
+	    {
+	      _Node* __tmp = __p;
+	      __p = __p->_M_next;
+	      _M_deallocate_node(__tmp);
+	    }
+	  __array[__i] = 0;
+	}
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::_Node**
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_allocate_buckets(size_type __n)
+    {
+      _Bucket_allocator_type __alloc(_M_node_allocator);
+
+      // We allocate one extra bucket to hold a sentinel, an arbitrary
+      // non-null pointer.  Iterator increment relies on this.
+      _Node** __p = __alloc.allocate(__n + 1);
+      std::fill(__p, __p + __n, (_Node*) 0);
+      __p[__n] = reinterpret_cast<_Node*>(0x1000);
+      return __p;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_buckets(_Node** __p, size_type __n)
+    {
+      _Bucket_allocator_type __alloc(_M_node_allocator);
+      __alloc.deallocate(__p, __n + 1);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _Hashtable(size_type __bucket_hint,
+	       const _H1& __h1, const _H2& __h2, const _Hash& __h,
+	       const _Equal& __eq, const _ExtractKey& __exk,
+	       const allocator_type& __a)
+    : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(),
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				_H1, _H2, _Hash, __chc>(__exk, __eq,
+							__h1, __h2, __h),
+      __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(),
+      _M_node_allocator(__a),
+      _M_bucket_count(0),
+      _M_element_count(0),
+      _M_rehash_policy()
+    {
+      _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint);
+      _M_buckets = _M_allocate_buckets(_M_bucket_count);
+      _M_begin_bucket_index = _M_bucket_count;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _InputIterator>
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _Hashtable(_InputIterator __f, _InputIterator __l,
+		 size_type __bucket_hint,
+		 const _H1& __h1, const _H2& __h2, const _Hash& __h,
+		 const _Equal& __eq, const _ExtractKey& __exk,
+		 const allocator_type& __a)
+      : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(),
+	__detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				  _H1, _H2, _Hash, __chc>(__exk, __eq,
+							  __h1, __h2, __h),
+	__detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(),
+	_M_node_allocator(__a),
+	_M_bucket_count(0),
+	_M_element_count(0),
+	_M_rehash_policy()
+      {
+	_M_bucket_count = std::max(_M_rehash_policy._M_next_bkt(__bucket_hint),
+				   _M_rehash_policy.
+				   _M_bkt_for_elements(__detail::
+						       __distance_fw(__f,
+								     __l)));
+	_M_buckets = _M_allocate_buckets(_M_bucket_count);
+	_M_begin_bucket_index = _M_bucket_count;
+	__try
+	  {
+	    for (; __f != __l; ++__f)
+	      this->insert(*__f);
+	  }
+	__catch(...)
+	  {
+	    clear();
+	    _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	    __throw_exception_again;
+	  }
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _Hashtable(const _Hashtable& __ht)
+    : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(__ht),
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				_H1, _H2, _Hash, __chc>(__ht),
+      __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(__ht),
+      _M_node_allocator(__ht._M_node_allocator),
+      _M_bucket_count(__ht._M_bucket_count),
+      _M_begin_bucket_index(__ht._M_begin_bucket_index),
+      _M_element_count(__ht._M_element_count),
+      _M_rehash_policy(__ht._M_rehash_policy)
+    {
+      _M_buckets = _M_allocate_buckets(_M_bucket_count);
+      __try
+	{
+	  for (size_type __i = 0; __i < __ht._M_bucket_count; ++__i)
+	    {
+	      _Node* __n = __ht._M_buckets[__i];
+	      _Node** __tail = _M_buckets + __i;
+	      while (__n)
+		{
+		  *__tail = _M_allocate_node(__n->_M_v);
+		  this->_M_copy_code(*__tail, __n);
+		  __tail = &((*__tail)->_M_next);
+		  __n = __n->_M_next;
+		}
+	    }
+	}
+      __catch(...)
+	{
+	  clear();
+	  _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _Hashtable(_Hashtable&& __ht)
+    : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(__ht),
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				_H1, _H2, _Hash, __chc>(__ht),
+      __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(__ht),
+      _M_node_allocator(__ht._M_node_allocator),
+      _M_buckets(__ht._M_buckets),
+      _M_bucket_count(__ht._M_bucket_count),
+      _M_begin_bucket_index(__ht._M_begin_bucket_index),
+      _M_element_count(__ht._M_element_count),
+      _M_rehash_policy(__ht._M_rehash_policy)
+    {
+      size_type __n_bkt = __ht._M_rehash_policy._M_next_bkt(0);
+      __ht._M_buckets = __ht._M_allocate_buckets(__n_bkt);
+      __ht._M_bucket_count = __n_bkt;
+      __ht._M_begin_bucket_index = __ht._M_bucket_count;
+      __ht._M_element_count = 0;
+      __ht._M_rehash_policy = _RehashPolicy();
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    ~_Hashtable()
+    {
+      clear();
+      _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    swap(_Hashtable& __x)
+    {
+      // The only base class with member variables is hash_code_base.  We
+      // define _Hash_code_base::_M_swap because different specializations
+      // have different members.
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+	_H1, _H2, _Hash, __chc>::_M_swap(__x);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<_Node_allocator_type>::_S_do_it(_M_node_allocator,
+							__x._M_node_allocator);
+
+      std::swap(_M_rehash_policy, __x._M_rehash_policy);
+      std::swap(_M_buckets, __x._M_buckets);
+      std::swap(_M_bucket_count, __x._M_bucket_count);
+      std::swap(_M_begin_bucket_index, __x._M_begin_bucket_index);
+      std::swap(_M_element_count, __x._M_element_count);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    __rehash_policy(const _RehashPolicy& __pol)
+    {
+      _M_rehash_policy = __pol;
+      size_type __n_bkt = __pol._M_bkt_for_elements(_M_element_count);
+      if (__n_bkt > _M_bucket_count)
+	_M_rehash(__n_bkt);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    find(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node* __p = _M_find_node(_M_buckets[__n], __k, __code);
+      return __p ? iterator(__p, _M_buckets + __n) : this->end();
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::const_iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    find(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node* __p = _M_find_node(_M_buckets[__n], __k, __code);
+      return __p ? const_iterator(__p, _M_buckets + __n) : this->end();
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::size_type
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    count(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      std::size_t __result = 0;
+      for (_Node* __p = _M_buckets[__n]; __p; __p = __p->_M_next)
+	if (this->_M_compare(__k, __code, __p))
+	  ++__result;
+      return __result;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::iterator,
+	      typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::iterator>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    equal_range(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node** __head = _M_buckets + __n;
+      _Node* __p = _M_find_node(*__head, __k, __code);
+
+      if (__p)
+	{
+	  _Node* __p1 = __p->_M_next;
+	  for (; __p1; __p1 = __p1->_M_next)
+	    if (!this->_M_compare(__k, __code, __p1))
+	      break;
+
+	  iterator __first(__p, __head);
+	  iterator __last(__p1, __head);
+	  if (!__p1)
+	    __last._M_incr_bucket();
+	  return std::make_pair(__first, __last);
+	}
+      else
+	return std::make_pair(this->end(), this->end());
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::const_iterator,
+	      typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::const_iterator>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    equal_range(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node** __head = _M_buckets + __n;
+      _Node* __p = _M_find_node(*__head, __k, __code);
+
+      if (__p)
+	{
+	  _Node* __p1 = __p->_M_next;
+	  for (; __p1; __p1 = __p1->_M_next)
+	    if (!this->_M_compare(__k, __code, __p1))
+	      break;
+
+	  const_iterator __first(__p, __head);
+	  const_iterator __last(__p1, __head);
+	  if (!__p1)
+	    __last._M_incr_bucket();
+	  return std::make_pair(__first, __last);
+	}
+      else
+	return std::make_pair(this->end(), this->end());
+    }
+
+  // Find the node whose key compares equal to k, beginning the search
+  // at p (usually the head of a bucket).  Return nil if no node is found.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey,
+			_Equal, _H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::_Node*
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_find_node(_Node* __p, const key_type& __k,
+		typename _Hashtable::_Hash_code_type __code) const
+    {
+      for (; __p; __p = __p->_M_next)
+	if (this->_M_compare(__k, __code, __p))
+	  return __p;
+      return false;
+    }
+
+  // Insert v in bucket n (assumes no element with its key already present).
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _Arg>
+      typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			  _H1, _H2, _Hash, _RehashPolicy,
+			  __chc, __cit, __uk>::iterator
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _M_insert_bucket(_Arg&& __v, size_type __n,
+		       typename _Hashtable::_Hash_code_type __code)
+      {
+	std::pair<bool, std::size_t> __do_rehash
+	  = _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					    _M_element_count, 1);
+
+	if (__do_rehash.first)
+	  {
+	    const key_type& __k = this->_M_extract(__v);
+	    __n = this->_M_bucket_index(__k, __code, __do_rehash.second);
+	  }
+
+	// Allocate the new node before doing the rehash so that we don't
+	// do a rehash if the allocation throws.
+	_Node* __new_node = _M_allocate_node(std::forward<_Arg>(__v));
+
+	__try
+	  {
+	    if (__do_rehash.first)
+	      _M_rehash(__do_rehash.second);
+
+	    __new_node->_M_next = _M_buckets[__n];
+	    this->_M_store_code(__new_node, __code);
+	    _M_buckets[__n] = __new_node;
+	    ++_M_element_count;
+	    if (__n < _M_begin_bucket_index)
+	      _M_begin_bucket_index = __n;
+	    return iterator(__new_node, _M_buckets + __n);
+	  }
+	__catch(...)
+	  {
+	    _M_deallocate_node(__new_node);
+	    __throw_exception_again;
+	  }
+      }
+
+  // Insert v if no element with its key is already present.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _Arg>
+      std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				    _ExtractKey, _Equal, _H1,
+				    _H2, _Hash, _RehashPolicy,
+				    __chc, __cit, __uk>::iterator, bool>
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _M_insert(_Arg&& __v, std::true_type)
+      {
+	const key_type& __k = this->_M_extract(__v);
+	typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+	size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+
+	if (_Node* __p = _M_find_node(_M_buckets[__n], __k, __code))
+	  return std::make_pair(iterator(__p, _M_buckets + __n), false);
+	return std::make_pair(_M_insert_bucket(std::forward<_Arg>(__v),
+			      __n, __code), true);
+      }
+
+  // Insert v unconditionally.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _Arg>
+      typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			  _H1, _H2, _Hash, _RehashPolicy,
+			  __chc, __cit, __uk>::iterator
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _M_insert(_Arg&& __v, std::false_type)
+      {
+	std::pair<bool, std::size_t> __do_rehash
+	  = _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					    _M_element_count, 1);
+	if (__do_rehash.first)
+	  _M_rehash(__do_rehash.second);
+
+	const key_type& __k = this->_M_extract(__v);
+	typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+	size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+
+	// First find the node, avoid leaking new_node if compare throws.
+	_Node* __prev = _M_find_node(_M_buckets[__n], __k, __code);
+	_Node* __new_node = _M_allocate_node(std::forward<_Arg>(__v));
+
+	if (__prev)
+	  {
+	    __new_node->_M_next = __prev->_M_next;
+	    __prev->_M_next = __new_node;
+	  }
+	else
+	  {
+	    __new_node->_M_next = _M_buckets[__n];
+	    _M_buckets[__n] = __new_node;
+	    if (__n < _M_begin_bucket_index)
+	      _M_begin_bucket_index = __n;
+	  }
+	this->_M_store_code(__new_node, __code);
+
+	++_M_element_count;
+	return iterator(__new_node, _M_buckets + __n);
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _InputIterator>
+      void
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      insert(_InputIterator __first, _InputIterator __last)
+      {
+	size_type __n_elt = __detail::__distance_fw(__first, __last);
+	std::pair<bool, std::size_t> __do_rehash
+	  = _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					    _M_element_count, __n_elt);
+	if (__do_rehash.first)
+	  _M_rehash(__do_rehash.second);
+
+	for (; __first != __last; ++__first)
+	  this->insert(*__first);
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const_iterator __it)
+    {
+      iterator __result(__it._M_cur_node, __it._M_cur_bucket);
+      ++__result;
+
+      _Node* __cur = *__it._M_cur_bucket;
+      if (__cur == __it._M_cur_node)
+	{
+	  *__it._M_cur_bucket = __cur->_M_next;
+
+	  // If _M_begin_bucket_index no longer indexes the first non-empty
+	  // bucket - its single node is being erased - update it.
+	  if (!_M_buckets[_M_begin_bucket_index])
+	    _M_begin_bucket_index = __result._M_cur_bucket - _M_buckets;
+	}
+      else
+	{
+	  _Node* __next = __cur->_M_next;
+	  while (__next != __it._M_cur_node)
+	    {
+	      __cur = __next;
+	      __next = __cur->_M_next;
+	    }
+	  __cur->_M_next = __next->_M_next;
+	}
+
+      _M_deallocate_node(__it._M_cur_node);
+      --_M_element_count;
+
+      return __result;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::size_type
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      size_type __result = 0;
+
+      _Node** __slot = _M_buckets + __n;
+      while (*__slot && !this->_M_compare(__k, __code, *__slot))
+	__slot = &((*__slot)->_M_next);
+
+      _Node** __saved_slot = 0;
+      while (*__slot && this->_M_compare(__k, __code, *__slot))
+	{
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 526. Is it undefined if a function in the standard changes
+	  // in parameters?
+	  if (std::__addressof(this->_M_extract((*__slot)->_M_v))
+	      != std::__addressof(__k))
+	    {
+	      _Node* __p = *__slot;
+	      *__slot = __p->_M_next;
+	      _M_deallocate_node(__p);
+	      --_M_element_count;
+	      ++__result;
+	    }
+	  else
+	    {
+	      __saved_slot = __slot;
+	      __slot = &((*__slot)->_M_next);
+	    }
+	}
+
+      if (__saved_slot)
+	{
+	  _Node* __p = *__saved_slot;
+	  *__saved_slot = __p->_M_next;
+	  _M_deallocate_node(__p);
+	  --_M_element_count;
+	  ++__result;
+	}
+
+      // If the entire bucket indexed by _M_begin_bucket_index has been
+      // erased look forward for the first non-empty bucket.
+      if (!_M_buckets[_M_begin_bucket_index])
+	{
+	  if (!_M_element_count)
+	    _M_begin_bucket_index = _M_bucket_count;
+	  else
+	    {
+	      ++_M_begin_bucket_index;
+	      while (!_M_buckets[_M_begin_bucket_index])
+		++_M_begin_bucket_index;
+	    }
+	}
+
+      return __result;
+    }
+
+  // ??? This could be optimized by taking advantage of the bucket
+  // structure, but it's not clear that it's worth doing.  It probably
+  // wouldn't even be an optimization unless the load factor is large.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const_iterator __first, const_iterator __last)
+    {
+       while (__first != __last)
+	 __first = this->erase(__first);
+      return iterator(__last._M_cur_node, __last._M_cur_bucket);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    clear()
+    {
+      _M_deallocate_nodes(_M_buckets, _M_bucket_count);
+      _M_element_count = 0;
+      _M_begin_bucket_index = _M_bucket_count;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    rehash(size_type __n)
+    {
+      _M_rehash(std::max(_M_rehash_policy._M_next_bkt(__n),
+			 _M_rehash_policy._M_bkt_for_elements(_M_element_count
+							      + 1)));
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_rehash(size_type __n)
+    {
+      _Node** __new_array = _M_allocate_buckets(__n);
+      __try
+	{
+	  _M_begin_bucket_index = __n;
+	  for (size_type __i = 0; __i < _M_bucket_count; ++__i)
+	    while (_Node* __p = _M_buckets[__i])
+	      {
+		std::size_t __new_index = this->_M_bucket_index(__p, __n);
+		_M_buckets[__i] = __p->_M_next;
+		__p->_M_next = __new_array[__new_index];
+		__new_array[__new_index] = __p;
+		if (__new_index < _M_begin_bucket_index)
+		  _M_begin_bucket_index = __new_index;
+	      }
+	  _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	  _M_bucket_count = __n;
+	  _M_buckets = __new_array;
+	}
+      __catch(...)
+	{
+	  // A failure here means that a hash function threw an exception.
+	  // We can't restore the previous state without calling the hash
+	  // function again, so the only sensible recovery is to delete
+	  // everything.
+	  _M_deallocate_nodes(__new_array, __n);
+	  _M_deallocate_buckets(__new_array, __n);
+	  _M_deallocate_nodes(_M_buckets, _M_bucket_count);
+	  _M_element_count = 0;
+	  _M_begin_bucket_index = _M_bucket_count;
+	  __throw_exception_again;
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // _HASHTABLE_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable_policy.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable_policy.h
new file mode 100644
index 000000000..f6e187616
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/hashtable_policy.h
@@ -0,0 +1,987 @@
+// Internal policy header for unordered_set and unordered_map -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/hashtable_policy.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly.
+ *  @headername{unordered_map,unordered_set}
+ */
+
+#ifndef _HASHTABLE_POLICY_H
+#define _HASHTABLE_POLICY_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __detail
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Helper function: return distance(first, last) for forward
+  // iterators, or 0 for input iterators.
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last,
+		  std::input_iterator_tag)
+    { return 0; }
+
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last,
+		  std::forward_iterator_tag)
+    { return std::distance(__first, __last); }
+
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last)
+    {
+      typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag;
+      return __distance_fw(__first, __last, _Tag());
+    }
+
+  // Auxiliary types used for all instantiations of _Hashtable: nodes
+  // and iterators.
+
+  // Nodes, used to wrap elements stored in the hash table.  A policy
+  // template parameter of class template _Hashtable controls whether
+  // nodes also store a hash code. In some cases (e.g. strings) this
+  // may be a performance win.
+  template<typename _Value, bool __cache_hash_code>
+    struct _Hash_node;
+
+  template<typename _Value>
+    struct _Hash_node<_Value, true>
+    {
+      _Value       _M_v;
+      std::size_t  _M_hash_code;
+      _Hash_node*  _M_next;
+
+      template<typename... _Args>
+	_Hash_node(_Args&&... __args)
+	: _M_v(std::forward<_Args>(__args)...),
+	  _M_hash_code(), _M_next() { }
+    };
+
+  template<typename _Value>
+    struct _Hash_node<_Value, false>
+    {
+      _Value       _M_v;
+      _Hash_node*  _M_next;
+
+      template<typename... _Args>
+	_Hash_node(_Args&&... __args)
+	: _M_v(std::forward<_Args>(__args)...),
+	  _M_next() { }
+    };
+
+  // Local iterators, used to iterate within a bucket but not between
+  // buckets.
+  template<typename _Value, bool __cache>
+    struct _Node_iterator_base
+    {
+      _Node_iterator_base(_Hash_node<_Value, __cache>* __p)
+      : _M_cur(__p) { }
+
+      void
+      _M_incr()
+      { _M_cur = _M_cur->_M_next; }
+
+      _Hash_node<_Value, __cache>*  _M_cur;
+    };
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator==(const _Node_iterator_base<_Value, __cache>& __x,
+	       const _Node_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur == __y._M_cur; }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator!=(const _Node_iterator_base<_Value, __cache>& __x,
+	       const _Node_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur != __y._M_cur; }
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Node_iterator
+    : public _Node_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef typename std::conditional<__constant_iterators,
+					const _Value*, _Value*>::type
+						       pointer;
+      typedef typename std::conditional<__constant_iterators,
+					const _Value&, _Value&>::type
+						       reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Node_iterator()
+      : _Node_iterator_base<_Value, __cache>(0) { }
+
+      explicit
+      _Node_iterator(_Hash_node<_Value, __cache>* __p)
+      : _Node_iterator_base<_Value, __cache>(__p) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur->_M_v; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur->_M_v); }
+
+      _Node_iterator&
+      operator++()
+      {
+	this->_M_incr();
+	return *this;
+      }
+
+      _Node_iterator
+      operator++(int)
+      {
+	_Node_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Node_const_iterator
+    : public _Node_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef const _Value*                            pointer;
+      typedef const _Value&                            reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Node_const_iterator()
+      : _Node_iterator_base<_Value, __cache>(0) { }
+
+      explicit
+      _Node_const_iterator(_Hash_node<_Value, __cache>* __p)
+      : _Node_iterator_base<_Value, __cache>(__p) { }
+
+      _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators,
+			   __cache>& __x)
+      : _Node_iterator_base<_Value, __cache>(__x._M_cur) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur->_M_v; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur->_M_v); }
+
+      _Node_const_iterator&
+      operator++()
+      {
+	this->_M_incr();
+	return *this;
+      }
+
+      _Node_const_iterator
+      operator++(int)
+      {
+	_Node_const_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __cache>
+    struct _Hashtable_iterator_base
+    {
+      _Hashtable_iterator_base(_Hash_node<_Value, __cache>* __node,
+			       _Hash_node<_Value, __cache>** __bucket)
+      : _M_cur_node(__node), _M_cur_bucket(__bucket) { }
+
+      void
+      _M_incr()
+      {
+	_M_cur_node = _M_cur_node->_M_next;
+	if (!_M_cur_node)
+	  _M_incr_bucket();
+      }
+
+      void
+      _M_incr_bucket();
+
+      _Hash_node<_Value, __cache>*   _M_cur_node;
+      _Hash_node<_Value, __cache>**  _M_cur_bucket;
+    };
+
+  // Global iterators, used for arbitrary iteration within a hash
+  // table.  Larger and more expensive than local iterators.
+  template<typename _Value, bool __cache>
+    void
+    _Hashtable_iterator_base<_Value, __cache>::
+    _M_incr_bucket()
+    {
+      ++_M_cur_bucket;
+
+      // This loop requires the bucket array to have a non-null sentinel.
+      while (!*_M_cur_bucket)
+	++_M_cur_bucket;
+      _M_cur_node = *_M_cur_bucket;
+    }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator==(const _Hashtable_iterator_base<_Value, __cache>& __x,
+	       const _Hashtable_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur_node == __y._M_cur_node; }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator!=(const _Hashtable_iterator_base<_Value, __cache>& __x,
+	       const _Hashtable_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur_node != __y._M_cur_node; }
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Hashtable_iterator
+    : public _Hashtable_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef typename std::conditional<__constant_iterators,
+					const _Value*, _Value*>::type
+						       pointer;
+      typedef typename std::conditional<__constant_iterators,
+					const _Value&, _Value&>::type
+						       reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Hashtable_iterator()
+      : _Hashtable_iterator_base<_Value, __cache>(0, 0) { }
+
+      _Hashtable_iterator(_Hash_node<_Value, __cache>* __p,
+			  _Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { }
+
+      explicit
+      _Hashtable_iterator(_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur_node->_M_v; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur_node->_M_v); }
+
+      _Hashtable_iterator&
+      operator++()
+      {
+	this->_M_incr();
+	return *this;
+      }
+
+      _Hashtable_iterator
+      operator++(int)
+      {
+	_Hashtable_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Hashtable_const_iterator
+    : public _Hashtable_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef const _Value*                            pointer;
+      typedef const _Value&                            reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Hashtable_const_iterator()
+      : _Hashtable_iterator_base<_Value, __cache>(0, 0) { }
+
+      _Hashtable_const_iterator(_Hash_node<_Value, __cache>* __p,
+				_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { }
+
+      explicit
+      _Hashtable_const_iterator(_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { }
+
+      _Hashtable_const_iterator(const _Hashtable_iterator<_Value,
+				__constant_iterators, __cache>& __x)
+      : _Hashtable_iterator_base<_Value, __cache>(__x._M_cur_node,
+						  __x._M_cur_bucket) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur_node->_M_v; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur_node->_M_v); }
+
+      _Hashtable_const_iterator&
+      operator++()
+      {
+	this->_M_incr();
+	return *this;
+      }
+
+      _Hashtable_const_iterator
+      operator++(int)
+      {
+	_Hashtable_const_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+
+  // Many of class template _Hashtable's template parameters are policy
+  // classes.  These are defaults for the policies.
+
+  // Default range hashing function: use division to fold a large number
+  // into the range [0, N).
+  struct _Mod_range_hashing
+  {
+    typedef std::size_t first_argument_type;
+    typedef std::size_t second_argument_type;
+    typedef std::size_t result_type;
+
+    result_type
+    operator()(first_argument_type __num, second_argument_type __den) const
+    { return __num % __den; }
+  };
+
+  // Default ranged hash function H.  In principle it should be a
+  // function object composed from objects of type H1 and H2 such that
+  // h(k, N) = h2(h1(k), N), but that would mean making extra copies of
+  // h1 and h2.  So instead we'll just use a tag to tell class template
+  // hashtable to do that composition.
+  struct _Default_ranged_hash { };
+
+  // Default value for rehash policy.  Bucket size is (usually) the
+  // smallest prime that keeps the load factor small enough.
+  struct _Prime_rehash_policy
+  {
+    _Prime_rehash_policy(float __z = 1.0)
+    : _M_max_load_factor(__z), _M_growth_factor(2.f), _M_next_resize(0) { }
+
+    float
+    max_load_factor() const
+    { return _M_max_load_factor; }
+
+    // Return a bucket size no smaller than n.
+    std::size_t
+    _M_next_bkt(std::size_t __n) const;
+
+    // Return a bucket count appropriate for n elements
+    std::size_t
+    _M_bkt_for_elements(std::size_t __n) const;
+
+    // __n_bkt is current bucket count, __n_elt is current element count,
+    // and __n_ins is number of elements to be inserted.  Do we need to
+    // increase bucket count?  If so, return make_pair(true, n), where n
+    // is the new bucket count.  If not, return make_pair(false, 0).
+    std::pair<bool, std::size_t>
+    _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
+		   std::size_t __n_ins) const;
+
+    enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 };
+
+    float                _M_max_load_factor;
+    float                _M_growth_factor;
+    mutable std::size_t  _M_next_resize;
+  };
+
+  extern const unsigned long __prime_list[];
+
+  // XXX This is a hack.  There's no good reason for any of
+  // _Prime_rehash_policy's member functions to be inline.
+
+  // Return a prime no smaller than n.
+  inline std::size_t
+  _Prime_rehash_policy::
+  _M_next_bkt(std::size_t __n) const
+  {
+    const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
+						+ _S_n_primes, __n);
+    _M_next_resize =
+      static_cast<std::size_t>(__builtin_ceil(*__p * _M_max_load_factor));
+    return *__p;
+  }
+
+  // Return the smallest prime p such that alpha p >= n, where alpha
+  // is the load factor.
+  inline std::size_t
+  _Prime_rehash_policy::
+  _M_bkt_for_elements(std::size_t __n) const
+  {
+    const float __min_bkts = __n / _M_max_load_factor;
+    const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
+						+ _S_n_primes, __min_bkts);
+    _M_next_resize =
+      static_cast<std::size_t>(__builtin_ceil(*__p * _M_max_load_factor));
+    return *__p;
+  }
+
+  // Finds the smallest prime p such that alpha p > __n_elt + __n_ins.
+  // If p > __n_bkt, return make_pair(true, p); otherwise return
+  // make_pair(false, 0).  In principle this isn't very different from
+  // _M_bkt_for_elements.
+
+  // The only tricky part is that we're caching the element count at
+  // which we need to rehash, so we don't have to do a floating-point
+  // multiply for every insertion.
+
+  inline std::pair<bool, std::size_t>
+  _Prime_rehash_policy::
+  _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
+		 std::size_t __n_ins) const
+  {
+    if (__n_elt + __n_ins > _M_next_resize)
+      {
+	float __min_bkts = ((float(__n_ins) + float(__n_elt))
+			    / _M_max_load_factor);
+	if (__min_bkts > __n_bkt)
+	  {
+	    __min_bkts = std::max(__min_bkts, _M_growth_factor * __n_bkt);
+	    const unsigned long* __p =
+	      std::lower_bound(__prime_list, __prime_list + _S_n_primes,
+			       __min_bkts);
+	    _M_next_resize = static_cast<std::size_t>
+	      (__builtin_ceil(*__p * _M_max_load_factor));
+	    return std::make_pair(true, *__p);
+	  }
+	else
+	  {
+	    _M_next_resize = static_cast<std::size_t>
+	      (__builtin_ceil(__n_bkt * _M_max_load_factor));
+	    return std::make_pair(false, 0);
+	  }
+      }
+    else
+      return std::make_pair(false, 0);
+  }
+
+  // Base classes for std::_Hashtable.  We define these base classes
+  // because in some cases we want to do different things depending
+  // on the value of a policy class.  In some cases the policy class
+  // affects which member functions and nested typedefs are defined;
+  // we handle that by specializing base class templates.  Several of
+  // the base class templates need to access other members of class
+  // template _Hashtable, so we use the "curiously recurring template
+  // pattern" for them.
+
+  // class template _Map_base.  If the hashtable has a value type of
+  // the form pair<T1, T2> and a key extraction policy that returns the
+  // first part of the pair, the hashtable gets a mapped_type typedef.
+  // If it satisfies those criteria and also has unique keys, then it
+  // also gets an operator[].
+  template<typename _Key, typename _Value, typename _Ex, bool __unique,
+	   typename _Hashtable>
+    struct _Map_base { };
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, false, _Hashtable>
+    {
+      typedef typename _Pair::second_type mapped_type;
+    };
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>
+    {
+      typedef typename _Pair::second_type mapped_type;
+
+      mapped_type&
+      operator[](const _Key& __k);
+
+      mapped_type&
+      operator[](_Key&& __k);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 761. unordered_map needs an at() member function.
+      mapped_type&
+      at(const _Key& __k);
+
+      const mapped_type&
+      at(const _Key& __k) const;
+    };
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>,
+		       true, _Hashtable>::mapped_type&
+    _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::
+    operator[](const _Key& __k)
+    {
+      _Hashtable* __h = static_cast<_Hashtable*>(this);
+      typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k);
+      std::size_t __n = __h->_M_bucket_index(__k, __code,
+					     __h->_M_bucket_count);
+
+      typename _Hashtable::_Node* __p =
+	__h->_M_find_node(__h->_M_buckets[__n], __k, __code);
+      if (!__p)
+	return __h->_M_insert_bucket(std::make_pair(__k, mapped_type()),
+				     __n, __code)->second;
+      return (__p->_M_v).second;
+    }
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>,
+		       true, _Hashtable>::mapped_type&
+    _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::
+    operator[](_Key&& __k)
+    {
+      _Hashtable* __h = static_cast<_Hashtable*>(this);
+      typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k);
+      std::size_t __n = __h->_M_bucket_index(__k, __code,
+					     __h->_M_bucket_count);
+
+      typename _Hashtable::_Node* __p =
+	__h->_M_find_node(__h->_M_buckets[__n], __k, __code);
+      if (!__p)
+	return __h->_M_insert_bucket(std::make_pair(std::move(__k),
+						    mapped_type()),
+				     __n, __code)->second;
+      return (__p->_M_v).second;
+    }
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>,
+		       true, _Hashtable>::mapped_type&
+    _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::
+    at(const _Key& __k)
+    {
+      _Hashtable* __h = static_cast<_Hashtable*>(this);
+      typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k);
+      std::size_t __n = __h->_M_bucket_index(__k, __code,
+					     __h->_M_bucket_count);
+
+      typename _Hashtable::_Node* __p =
+	__h->_M_find_node(__h->_M_buckets[__n], __k, __code);
+      if (!__p)
+	__throw_out_of_range(__N("_Map_base::at"));
+      return (__p->_M_v).second;
+    }
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    const typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>,
+			     true, _Hashtable>::mapped_type&
+    _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::
+    at(const _Key& __k) const
+    {
+      const _Hashtable* __h = static_cast<const _Hashtable*>(this);
+      typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k);
+      std::size_t __n = __h->_M_bucket_index(__k, __code,
+					     __h->_M_bucket_count);
+
+      typename _Hashtable::_Node* __p =
+	__h->_M_find_node(__h->_M_buckets[__n], __k, __code);
+      if (!__p)
+	__throw_out_of_range(__N("_Map_base::at"));
+      return (__p->_M_v).second;
+    }
+
+  // class template _Rehash_base.  Give hashtable the max_load_factor
+  // functions and reserve iff the rehash policy is _Prime_rehash_policy.
+  template<typename _RehashPolicy, typename _Hashtable>
+    struct _Rehash_base { };
+
+  template<typename _Hashtable>
+    struct _Rehash_base<_Prime_rehash_policy, _Hashtable>
+    {
+      float
+      max_load_factor() const
+      {
+	const _Hashtable* __this = static_cast<const _Hashtable*>(this);
+	return __this->__rehash_policy().max_load_factor();
+      }
+
+      void
+      max_load_factor(float __z)
+      {
+	_Hashtable* __this = static_cast<_Hashtable*>(this);
+	__this->__rehash_policy(_Prime_rehash_policy(__z));
+      }
+
+      void
+      reserve(std::size_t __n)
+      {
+	_Hashtable* __this = static_cast<_Hashtable*>(this);
+	__this->rehash(__builtin_ceil(__n / max_load_factor()));
+      }
+    };
+
+  // Class template _Hash_code_base.  Encapsulates two policy issues that
+  // aren't quite orthogonal.
+  //   (1) the difference between using a ranged hash function and using
+  //       the combination of a hash function and a range-hashing function.
+  //       In the former case we don't have such things as hash codes, so
+  //       we have a dummy type as placeholder.
+  //   (2) Whether or not we cache hash codes.  Caching hash codes is
+  //       meaningless if we have a ranged hash function.
+  // We also put the key extraction and equality comparison function
+  // objects here, for convenience.
+
+  // Primary template: unused except as a hook for specializations.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash,
+	   bool __cache_hash_code>
+    struct _Hash_code_base;
+
+  // Specialization: ranged hash function, no caching hash codes.  H1
+  // and H2 are provided but ignored.  We define a dummy hash code type.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Hash, false>
+    {
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1&, const _H2&, const _Hash& __h)
+      : _M_extract(__ex), _M_eq(__eq), _M_ranged_hash(__h) { }
+
+      typedef void* _Hash_code_type;
+
+      _Hash_code_type
+      _M_hash_code(const _Key& __key) const
+      { return 0; }
+
+      std::size_t
+      _M_bucket_index(const _Key& __k, _Hash_code_type,
+		      std::size_t __n) const
+      { return _M_ranged_hash(__k, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, false>* __p,
+		      std::size_t __n) const
+      { return _M_ranged_hash(_M_extract(__p->_M_v), __n); }
+
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type,
+		 _Hash_node<_Value, false>* __n) const
+      { return _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const
+      { }
+
+      void
+      _M_copy_code(_Hash_node<_Value, false>*,
+		   const _Hash_node<_Value, false>*) const
+      { }
+
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_ranged_hash, __x._M_ranged_hash);
+      }
+
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _Hash        _M_ranged_hash;
+    };
+
+
+  // No specialization for ranged hash function while caching hash codes.
+  // That combination is meaningless, and trying to do it is an error.
+
+
+  // Specialization: ranged hash function, cache hash codes.  This
+  // combination is meaningless, so we provide only a declaration
+  // and no definition.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Hash, true>;
+
+  // Specialization: hash function and range-hashing function, no
+  // caching of hash codes.  H is provided but ignored.  Provides
+  // typedef and accessor required by TR1.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Default_ranged_hash, false>
+    {
+      typedef _H1 hasher;
+
+      hasher
+      hash_function() const
+      { return _M_h1; }
+
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1& __h1, const _H2& __h2,
+		      const _Default_ranged_hash&)
+      : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { }
+
+      typedef std::size_t _Hash_code_type;
+
+      _Hash_code_type
+      _M_hash_code(const _Key& __k) const
+      { return _M_h1(__k); }
+
+      std::size_t
+      _M_bucket_index(const _Key&, _Hash_code_type __c,
+		      std::size_t __n) const
+      { return _M_h2(__c, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, false>* __p,
+		      std::size_t __n) const
+      { return _M_h2(_M_h1(_M_extract(__p->_M_v)), __n); }
+
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type,
+		 _Hash_node<_Value, false>* __n) const
+      { return _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const
+      { }
+
+      void
+      _M_copy_code(_Hash_node<_Value, false>*,
+		   const _Hash_node<_Value, false>*) const
+      { }
+
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_h1, __x._M_h1);
+	std::swap(_M_h2, __x._M_h2);
+      }
+
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _H1          _M_h1;
+      _H2          _M_h2;
+    };
+
+  // Specialization: hash function and range-hashing function,
+  // caching hash codes.  H is provided but ignored.  Provides
+  // typedef and accessor required by TR1.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Default_ranged_hash, true>
+    {
+      typedef _H1 hasher;
+
+      hasher
+      hash_function() const
+      { return _M_h1; }
+
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1& __h1, const _H2& __h2,
+		      const _Default_ranged_hash&)
+      : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { }
+
+      typedef std::size_t _Hash_code_type;
+
+      _Hash_code_type
+      _M_hash_code(const _Key& __k) const
+      { return _M_h1(__k); }
+
+      std::size_t
+      _M_bucket_index(const _Key&, _Hash_code_type __c,
+		      std::size_t __n) const
+      { return _M_h2(__c, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, true>* __p,
+		      std::size_t __n) const
+      { return _M_h2(__p->_M_hash_code, __n); }
+
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type __c,
+		 _Hash_node<_Value, true>* __n) const
+      { return __c == __n->_M_hash_code && _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, true>* __n, _Hash_code_type __c) const
+      { __n->_M_hash_code = __c; }
+
+      void
+      _M_copy_code(_Hash_node<_Value, true>* __to,
+		   const _Hash_node<_Value, true>* __from) const
+      { __to->_M_hash_code = __from->_M_hash_code; }
+
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_h1, __x._M_h1);
+	std::swap(_M_h2, __x._M_h2);
+      }
+
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _H1          _M_h1;
+      _H2          _M_h2;
+    };
+
+
+  // Class template _Equality_base.  This is for implementing equality
+  // comparison for unordered containers, per N3068, by John Lakos and
+  // Pablo Halpern.  Algorithmically, we follow closely the reference
+  // implementations therein.
+  template<typename _ExtractKey, bool __unique_keys,
+	   typename _Hashtable>
+    struct _Equality_base;
+
+  template<typename _ExtractKey, typename _Hashtable>
+    struct _Equality_base<_ExtractKey, true, _Hashtable>
+    {
+      bool _M_equal(const _Hashtable&) const;
+    };
+
+  template<typename _ExtractKey, typename _Hashtable>
+    bool
+    _Equality_base<_ExtractKey, true, _Hashtable>::
+    _M_equal(const _Hashtable& __other) const
+    {
+      const _Hashtable* __this = static_cast<const _Hashtable*>(this);
+
+      if (__this->size() != __other.size())
+	return false;
+
+      for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx)
+	{
+	  const auto __ity = __other.find(_ExtractKey()(*__itx));
+	  if (__ity == __other.end() || *__ity != *__itx)
+	    return false;
+	}
+      return true;
+    }
+
+  template<typename _ExtractKey, typename _Hashtable>
+    struct _Equality_base<_ExtractKey, false, _Hashtable>
+    {
+      bool _M_equal(const _Hashtable&) const;
+
+    private:
+      template<typename _Uiterator>
+	static bool
+	_S_is_permutation(_Uiterator, _Uiterator, _Uiterator);
+    };
+
+  // See std::is_permutation in N3068.
+  template<typename _ExtractKey, typename _Hashtable>
+    template<typename _Uiterator>
+      bool
+      _Equality_base<_ExtractKey, false, _Hashtable>::
+      _S_is_permutation(_Uiterator __first1, _Uiterator __last1,
+			_Uiterator __first2)
+      {
+	for (; __first1 != __last1; ++__first1, ++__first2)
+	  if (!(*__first1 == *__first2))
+	    break;
+
+	if (__first1 == __last1)
+	  return true;
+
+	_Uiterator __last2 = __first2;
+	std::advance(__last2, std::distance(__first1, __last1));
+
+	for (_Uiterator __it1 = __first1; __it1 != __last1; ++__it1)
+	  {
+	    _Uiterator __tmp =  __first1;
+	    while (__tmp != __it1 && !(*__tmp == *__it1))
+	      ++__tmp;
+
+	    // We've seen this one before.
+	    if (__tmp != __it1)
+	      continue;
+
+	    std::ptrdiff_t __n2 = 0;
+	    for (__tmp = __first2; __tmp != __last2; ++__tmp)
+	      if (*__tmp == *__it1)
+		++__n2;
+
+	    if (!__n2)
+	      return false;
+
+	    std::ptrdiff_t __n1 = 0;
+	    for (__tmp = __it1; __tmp != __last1; ++__tmp)
+	      if (*__tmp == *__it1)
+		++__n1;
+
+	    if (__n1 != __n2)
+	      return false;
+	  }
+	return true;
+      }
+
+  template<typename _ExtractKey, typename _Hashtable>
+    bool
+    _Equality_base<_ExtractKey, false, _Hashtable>::
+    _M_equal(const _Hashtable& __other) const
+    {
+      const _Hashtable* __this = static_cast<const _Hashtable*>(this);
+
+      if (__this->size() != __other.size())
+	return false;
+
+      for (auto __itx = __this->begin(); __itx != __this->end();)
+	{
+	  const auto __xrange = __this->equal_range(_ExtractKey()(*__itx));
+	  const auto __yrange = __other.equal_range(_ExtractKey()(*__itx));
+
+	  if (std::distance(__xrange.first, __xrange.second)
+	      != std::distance(__yrange.first, __yrange.second))
+	    return false;
+
+	  if (!_S_is_permutation(__xrange.first,
+				 __xrange.second,
+				 __yrange.first))
+	    return false;
+
+	  __itx = __xrange.second;
+	}
+      return true;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __detail
+} // namespace std
+
+#endif // _HASHTABLE_POLICY_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/indirect_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/indirect_array.h
new file mode 100644
index 000000000..d7b7b0827
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/indirect_array.h
@@ -0,0 +1,213 @@
+// The template and inlines for the -*- C++ -*- indirect_array class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2009, 2010
+//  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/indirect_array.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _INDIRECT_ARRAY_H
+#define _INDIRECT_ARRAY_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  /**
+   *  @brief  Reference to arbitrary subset of an array.
+   *
+   *  An indirect_array is a reference to the actual elements of an array
+   *  specified by an ordered array of indices.  The way to get an
+   *  indirect_array is to call operator[](valarray<size_t>) on a valarray.
+   *  The returned indirect_array then permits carrying operations out on the
+   *  referenced subset of elements in the original valarray.
+   *
+   *  For example, if an indirect_array is obtained using the array (4,2,0) as
+   *  an argument, and then assigned to an array containing (1,2,3), then the
+   *  underlying array will have array[0]==3, array[2]==2, and array[4]==1.
+   *
+   *  @param  Tp  Element type.
+   */
+  template <class _Tp>
+    class indirect_array
+    {
+    public:
+      typedef _Tp value_type;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 253. valarray helper functions are almost entirely useless
+
+      ///  Copy constructor.  Both slices refer to the same underlying array.
+      indirect_array(const indirect_array&);
+
+      ///  Assignment operator.  Assigns elements to corresponding elements
+      ///  of @a a.
+      indirect_array& operator=(const indirect_array&);
+
+      ///  Assign slice elements to corresponding elements of @a v.
+      void operator=(const valarray<_Tp>&) const;
+      ///  Multiply slice elements by corresponding elements of @a v.
+      void operator*=(const valarray<_Tp>&) const;
+      ///  Divide slice elements by corresponding elements of @a v.
+      void operator/=(const valarray<_Tp>&) const;
+      ///  Modulo slice elements by corresponding elements of @a v.
+      void operator%=(const valarray<_Tp>&) const;
+      ///  Add corresponding elements of @a v to slice elements.
+      void operator+=(const valarray<_Tp>&) const;
+      ///  Subtract corresponding elements of @a v from slice elements.
+      void operator-=(const valarray<_Tp>&) const;
+      ///  Logical xor slice elements with corresponding elements of @a v.
+      void operator^=(const valarray<_Tp>&) const;
+      ///  Logical and slice elements with corresponding elements of @a v.
+      void operator&=(const valarray<_Tp>&) const;
+      ///  Logical or slice elements with corresponding elements of @a v.
+      void operator|=(const valarray<_Tp>&) const;
+      ///  Left shift slice elements by corresponding elements of @a v.
+      void operator<<=(const valarray<_Tp>&) const;
+      ///  Right shift slice elements by corresponding elements of @a v.
+      void operator>>=(const valarray<_Tp>&) const;
+      ///  Assign all slice elements to @a t.
+      void operator= (const _Tp&) const;
+      //    ~indirect_array();
+
+      template<class _Dom>
+      void operator=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator*=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator/=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator%=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator+=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator-=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator^=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator&=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator|=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator<<=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+      void operator>>=(const _Expr<_Dom, _Tp>&) const;
+
+    private:
+      ///  Copy constructor.  Both slices refer to the same underlying array.
+      indirect_array(_Array<_Tp>, size_t, _Array<size_t>);
+
+      friend class valarray<_Tp>;
+      friend class gslice_array<_Tp>;
+
+      const size_t	 _M_sz;
+      const _Array<size_t> _M_index;
+      const _Array<_Tp>	 _M_array;
+
+      // not implemented
+      indirect_array();
+    };
+
+  template<typename _Tp>
+    inline
+    indirect_array<_Tp>::indirect_array(const indirect_array<_Tp>& __a)
+    : _M_sz(__a._M_sz), _M_index(__a._M_index), _M_array(__a._M_array) {}
+
+  template<typename _Tp>
+    inline
+    indirect_array<_Tp>::indirect_array(_Array<_Tp> __a, size_t __s,
+					_Array<size_t> __i)
+    : _M_sz(__s), _M_index(__i), _M_array(__a) {}
+
+  template<typename _Tp>
+    inline indirect_array<_Tp>&
+    indirect_array<_Tp>::operator=(const indirect_array<_Tp>& __a)
+    {
+      std::__valarray_copy(__a._M_array, _M_sz, __a._M_index, _M_array,
+			   _M_index);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline void
+    indirect_array<_Tp>::operator=(const _Tp& __t) const
+    { std::__valarray_fill(_M_array, _M_index, _M_sz, __t); }
+
+  template<typename _Tp>
+    inline void
+    indirect_array<_Tp>::operator=(const valarray<_Tp>& __v) const
+    { std::__valarray_copy(_Array<_Tp>(__v), _M_sz, _M_array, _M_index); }
+
+  template<typename _Tp>
+    template<class _Dom>
+      inline void
+      indirect_array<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e) const
+      { std::__valarray_copy(__e, _M_sz, _M_array, _M_index); }
+
+#undef _DEFINE_VALARRAY_OPERATOR
+#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name)				\
+  template<typename _Tp>						\
+    inline void								\
+    indirect_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const\
+    {									\
+      _Array_augmented_##_Name(_M_array, _M_index, _Array<_Tp>(__v), _M_sz); \
+    }									\
+									\
+  template<typename _Tp>                                                \
+    template<class _Dom>				                \
+      inline void							\
+      indirect_array<_Tp>::operator _Op##=(const _Expr<_Dom,_Tp>& __e) const\
+      {									\
+	_Array_augmented_##_Name(_M_array, _M_index, __e, _M_sz);	\
+      }
+
+_DEFINE_VALARRAY_OPERATOR(*, __multiplies)
+_DEFINE_VALARRAY_OPERATOR(/, __divides)
+_DEFINE_VALARRAY_OPERATOR(%, __modulus)
+_DEFINE_VALARRAY_OPERATOR(+, __plus)
+_DEFINE_VALARRAY_OPERATOR(-, __minus)
+_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor)
+_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and)
+_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or)
+_DEFINE_VALARRAY_OPERATOR(<<, __shift_left)
+_DEFINE_VALARRAY_OPERATOR(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_OPERATOR
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _INDIRECT_ARRAY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ios_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ios_base.h
new file mode 100644
index 000000000..8825657a2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ios_base.h
@@ -0,0 +1,977 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ios_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ios}
+ */
+
+//
+// ISO C++ 14882: 27.4  Iostreams base classes
+//
+
+#ifndef _IOS_BASE_H
+#define _IOS_BASE_H 1
+
+#pragma GCC system_header
+
+#include <ext/atomicity.h>
+#include <bits/localefwd.h>
+#include <bits/locale_classes.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // The following definitions of bitmask types are enums, not ints,
+  // as permitted (but not required) in the standard, in order to provide
+  // better type safety in iostream calls.  A side effect is that
+  // expressions involving them are no longer compile-time constants.
+  enum _Ios_Fmtflags 
+    { 
+      _S_boolalpha 	= 1L << 0,
+      _S_dec 		= 1L << 1,
+      _S_fixed 		= 1L << 2,
+      _S_hex 		= 1L << 3,
+      _S_internal 	= 1L << 4,
+      _S_left 		= 1L << 5,
+      _S_oct 		= 1L << 6,
+      _S_right 		= 1L << 7,
+      _S_scientific 	= 1L << 8,
+      _S_showbase 	= 1L << 9,
+      _S_showpoint 	= 1L << 10,
+      _S_showpos 	= 1L << 11,
+      _S_skipws 	= 1L << 12,
+      _S_unitbuf 	= 1L << 13,
+      _S_uppercase 	= 1L << 14,
+      _S_adjustfield 	= _S_left | _S_right | _S_internal,
+      _S_basefield 	= _S_dec | _S_oct | _S_hex,
+      _S_floatfield 	= _S_scientific | _S_fixed,
+      _S_ios_fmtflags_end = 1L << 16 
+    };
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
+  operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+  { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
+  operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+  { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
+  operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+  { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
+  operator~(_Ios_Fmtflags __a)
+  { return _Ios_Fmtflags(~static_cast<int>(__a)); }
+
+  inline const _Ios_Fmtflags&
+  operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+  { return __a = __a | __b; }
+
+  inline const _Ios_Fmtflags&
+  operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+  { return __a = __a & __b; }
+
+  inline const _Ios_Fmtflags&
+  operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+  { return __a = __a ^ __b; }
+
+
+  enum _Ios_Openmode 
+    { 
+      _S_app 		= 1L << 0,
+      _S_ate 		= 1L << 1,
+      _S_bin 		= 1L << 2,
+      _S_in 		= 1L << 3,
+      _S_out 		= 1L << 4,
+      _S_trunc 		= 1L << 5,
+      _S_ios_openmode_end = 1L << 16 
+    };
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Openmode
+  operator&(_Ios_Openmode __a, _Ios_Openmode __b)
+  { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Openmode
+  operator|(_Ios_Openmode __a, _Ios_Openmode __b)
+  { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Openmode
+  operator^(_Ios_Openmode __a, _Ios_Openmode __b)
+  { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Openmode
+  operator~(_Ios_Openmode __a)
+  { return _Ios_Openmode(~static_cast<int>(__a)); }
+
+  inline const _Ios_Openmode&
+  operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
+  { return __a = __a | __b; }
+
+  inline const _Ios_Openmode&
+  operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
+  { return __a = __a & __b; }
+
+  inline const _Ios_Openmode&
+  operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
+  { return __a = __a ^ __b; }
+
+
+  enum _Ios_Iostate
+    { 
+      _S_goodbit 		= 0,
+      _S_badbit 		= 1L << 0,
+      _S_eofbit 		= 1L << 1,
+      _S_failbit		= 1L << 2,
+      _S_ios_iostate_end = 1L << 16 
+    };
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Iostate
+  operator&(_Ios_Iostate __a, _Ios_Iostate __b)
+  { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Iostate
+  operator|(_Ios_Iostate __a, _Ios_Iostate __b)
+  { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Iostate
+  operator^(_Ios_Iostate __a, _Ios_Iostate __b)
+  { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+  inline _GLIBCXX_CONSTEXPR _Ios_Iostate
+  operator~(_Ios_Iostate __a)
+  { return _Ios_Iostate(~static_cast<int>(__a)); }
+
+  inline const _Ios_Iostate&
+  operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
+  { return __a = __a | __b; }
+
+  inline const _Ios_Iostate&
+  operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
+  { return __a = __a & __b; }
+
+  inline const  _Ios_Iostate&
+  operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
+  { return __a = __a ^ __b; }
+
+
+  enum _Ios_Seekdir 
+    { 
+      _S_beg = 0,
+      _S_cur = _GLIBCXX_STDIO_SEEK_CUR,
+      _S_end = _GLIBCXX_STDIO_SEEK_END,
+      _S_ios_seekdir_end = 1L << 16 
+    };
+
+  // 27.4.2  Class ios_base
+  /**
+   *  @brief  The base of the I/O class hierarchy.
+   *  @ingroup io
+   *
+   *  This class defines everything that can be defined about I/O that does
+   *  not depend on the type of characters being input or output.  Most
+   *  people will only see @c ios_base when they need to specify the full
+   *  name of the various I/O flags (e.g., the openmodes).
+  */
+  class ios_base
+  {
+  public:
+
+    /** 
+     *  @brief These are thrown to indicate problems with io.
+     *  @ingroup exceptions
+     *
+     *  27.4.2.1.1  Class ios_base::failure
+     */
+    class failure : public exception
+    {
+    public:
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 48.  Use of non-existent exception constructor
+      explicit
+      failure(const string& __str) throw();
+
+      // This declaration is not useless:
+      // http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Vague-Linkage.html
+      virtual
+      ~failure() throw();
+
+      virtual const char*
+      what() const throw();
+
+    private:
+      string _M_msg;
+    };
+
+    // 27.4.2.1.2  Type ios_base::fmtflags
+    /**
+     *  @brief This is a bitmask type.
+     *
+     *  @c @a _Ios_Fmtflags is implementation-defined, but it is valid to
+     *  perform bitwise operations on these values and expect the Right
+     *  Thing to happen.  Defined objects of type fmtflags are:
+     *  - boolalpha
+     *  - dec
+     *  - fixed
+     *  - hex
+     *  - internal
+     *  - left
+     *  - oct
+     *  - right
+     *  - scientific
+     *  - showbase
+     *  - showpoint
+     *  - showpos
+     *  - skipws
+     *  - unitbuf
+     *  - uppercase
+     *  - adjustfield
+     *  - basefield
+     *  - floatfield
+    */
+    typedef _Ios_Fmtflags fmtflags;
+
+    /// Insert/extract @c bool in alphabetic rather than numeric format.
+    static const fmtflags boolalpha =   _S_boolalpha;
+
+    /// Converts integer input or generates integer output in decimal base.
+    static const fmtflags dec =         _S_dec;
+
+    /// Generate floating-point output in fixed-point notation.
+    static const fmtflags fixed =       _S_fixed;
+
+    /// Converts integer input or generates integer output in hexadecimal base.
+    static const fmtflags hex =         _S_hex;
+
+    /// Adds fill characters at a designated internal point in certain
+    /// generated output, or identical to @c right if no such point is
+    /// designated.
+    static const fmtflags internal =    _S_internal;
+
+    /// Adds fill characters on the right (final positions) of certain
+    /// generated output.  (I.e., the thing you print is flush left.)
+    static const fmtflags left =        _S_left;
+
+    /// Converts integer input or generates integer output in octal base.
+    static const fmtflags oct =         _S_oct;
+
+    /// Adds fill characters on the left (initial positions) of certain
+    /// generated output.  (I.e., the thing you print is flush right.)
+    static const fmtflags right =       _S_right;
+
+    /// Generates floating-point output in scientific notation.
+    static const fmtflags scientific =  _S_scientific;
+
+    /// Generates a prefix indicating the numeric base of generated integer
+    /// output.
+    static const fmtflags showbase =    _S_showbase;
+
+    /// Generates a decimal-point character unconditionally in generated
+    /// floating-point output.
+    static const fmtflags showpoint =   _S_showpoint;
+
+    /// Generates a + sign in non-negative generated numeric output.
+    static const fmtflags showpos =     _S_showpos;
+
+    /// Skips leading white space before certain input operations.
+    static const fmtflags skipws =      _S_skipws;
+
+    /// Flushes output after each output operation.
+    static const fmtflags unitbuf =     _S_unitbuf;
+
+    /// Replaces certain lowercase letters with their uppercase equivalents
+    /// in generated output.
+    static const fmtflags uppercase =   _S_uppercase;
+
+    /// A mask of left|right|internal.  Useful for the 2-arg form of @c setf.
+    static const fmtflags adjustfield = _S_adjustfield;
+
+    /// A mask of dec|oct|hex.  Useful for the 2-arg form of @c setf.
+    static const fmtflags basefield =   _S_basefield;
+
+    /// A mask of scientific|fixed.  Useful for the 2-arg form of @c setf.
+    static const fmtflags floatfield =  _S_floatfield;
+
+    // 27.4.2.1.3  Type ios_base::iostate
+    /**
+     *  @brief This is a bitmask type.
+     *
+     *  @c @a _Ios_Iostate is implementation-defined, but it is valid to
+     *  perform bitwise operations on these values and expect the Right
+     *  Thing to happen.  Defined objects of type iostate are:
+     *  - badbit
+     *  - eofbit
+     *  - failbit
+     *  - goodbit
+    */
+    typedef _Ios_Iostate iostate;
+
+    /// Indicates a loss of integrity in an input or output sequence (such
+    /// as an irrecoverable read error from a file).
+    static const iostate badbit =	_S_badbit;
+
+    /// Indicates that an input operation reached the end of an input sequence.
+    static const iostate eofbit =	_S_eofbit;
+
+    /// Indicates that an input operation failed to read the expected
+    /// characters, or that an output operation failed to generate the
+    /// desired characters.
+    static const iostate failbit =	_S_failbit;
+
+    /// Indicates all is well.
+    static const iostate goodbit =	_S_goodbit;
+
+    // 27.4.2.1.4  Type ios_base::openmode
+    /**
+     *  @brief This is a bitmask type.
+     *
+     *  @c @a _Ios_Openmode is implementation-defined, but it is valid to
+     *  perform bitwise operations on these values and expect the Right
+     *  Thing to happen.  Defined objects of type openmode are:
+     *  - app
+     *  - ate
+     *  - binary
+     *  - in
+     *  - out
+     *  - trunc
+    */
+    typedef _Ios_Openmode openmode;
+
+    /// Seek to end before each write.
+    static const openmode app =		_S_app;
+
+    /// Open and seek to end immediately after opening.
+    static const openmode ate =		_S_ate;
+
+    /// Perform input and output in binary mode (as opposed to text mode).
+    /// This is probably not what you think it is; see
+    /// http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch27s02.html
+    static const openmode binary =	_S_bin;
+
+    /// Open for input.  Default for @c ifstream and fstream.
+    static const openmode in =		_S_in;
+
+    /// Open for output.  Default for @c ofstream and fstream.
+    static const openmode out =		_S_out;
+
+    /// Open for input.  Default for @c ofstream.
+    static const openmode trunc =	_S_trunc;
+
+    // 27.4.2.1.5  Type ios_base::seekdir
+    /**
+     *  @brief This is an enumerated type.
+     *
+     *  @c @a _Ios_Seekdir is implementation-defined.  Defined values
+     *  of type seekdir are:
+     *  - beg
+     *  - cur, equivalent to @c SEEK_CUR in the C standard library.
+     *  - end, equivalent to @c SEEK_END in the C standard library.
+    */
+    typedef _Ios_Seekdir seekdir;
+
+    /// Request a seek relative to the beginning of the stream.
+    static const seekdir beg =		_S_beg;
+
+    /// Request a seek relative to the current position within the sequence.
+    static const seekdir cur =		_S_cur;
+
+    /// Request a seek relative to the current end of the sequence.
+    static const seekdir end =		_S_end;
+
+    // Annex D.6
+    typedef int io_state;
+    typedef int open_mode;
+    typedef int seek_dir;
+
+    typedef std::streampos streampos;
+    typedef std::streamoff streamoff;
+
+    // Callbacks;
+    /**
+     *  @brief  The set of events that may be passed to an event callback.
+     *
+     *  erase_event is used during ~ios() and copyfmt().  imbue_event is used
+     *  during imbue().  copyfmt_event is used during copyfmt().
+    */
+    enum event
+    {
+      erase_event,
+      imbue_event,
+      copyfmt_event
+    };
+
+    /**
+     *  @brief  The type of an event callback function.
+     *  @param  event  One of the members of the event enum.
+     *  @param  ios_base  Reference to the ios_base object.
+     *  @param  int  The integer provided when the callback was registered.
+     *
+     *  Event callbacks are user defined functions that get called during
+     *  several ios_base and basic_ios functions, specifically imbue(),
+     *  copyfmt(), and ~ios().
+    */
+    typedef void (*event_callback) (event, ios_base&, int);
+
+    /**
+     *  @brief  Add the callback __fn with parameter __index.
+     *  @param  __fn  The function to add.
+     *  @param  __index  The integer to pass to the function when invoked.
+     *
+     *  Registers a function as an event callback with an integer parameter to
+     *  be passed to the function when invoked.  Multiple copies of the
+     *  function are allowed.  If there are multiple callbacks, they are
+     *  invoked in the order they were registered.
+    */
+    void
+    register_callback(event_callback __fn, int __index);
+
+  protected:
+    streamsize		_M_precision;
+    streamsize		_M_width;
+    fmtflags		_M_flags;
+    iostate		_M_exception;
+    iostate		_M_streambuf_state;
+
+    // 27.4.2.6  Members for callbacks
+    // 27.4.2.6  ios_base callbacks
+    struct _Callback_list
+    {
+      // Data Members
+      _Callback_list*		_M_next;
+      ios_base::event_callback	_M_fn;
+      int			_M_index;
+      _Atomic_word		_M_refcount;  // 0 means one reference.
+
+      _Callback_list(ios_base::event_callback __fn, int __index,
+		     _Callback_list* __cb)
+      : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
+
+      void
+      _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+      // 0 => OK to delete.
+      int
+      _M_remove_reference() 
+      {
+        // Be race-detector-friendly.  For more info see bits/c++config.
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
+        int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1);
+        if (__res == 0)
+          {
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
+          }
+        return __res;
+      }
+    };
+
+     _Callback_list*	_M_callbacks;
+
+    void
+    _M_call_callbacks(event __ev) throw();
+
+    void
+    _M_dispose_callbacks(void) throw();
+
+    // 27.4.2.5  Members for iword/pword storage
+    struct _Words
+    {
+      void*	_M_pword;
+      long	_M_iword;
+      _Words() : _M_pword(0), _M_iword(0) { }
+    };
+
+    // Only for failed iword/pword calls.
+    _Words		_M_word_zero;
+
+    // Guaranteed storage.
+    // The first 5 iword and pword slots are reserved for internal use.
+    enum { _S_local_word_size = 8 };
+    _Words		_M_local_word[_S_local_word_size];
+
+    // Allocated storage.
+    int			_M_word_size;
+    _Words*		_M_word;
+
+    _Words&
+    _M_grow_words(int __index, bool __iword);
+
+    // Members for locale and locale caching.
+    locale		_M_ios_locale;
+
+    void
+    _M_init() throw();
+
+  public:
+
+    // 27.4.2.1.6  Class ios_base::Init
+    // Used to initialize standard streams. In theory, g++ could use
+    // -finit-priority to order this stuff correctly without going
+    // through these machinations.
+    class Init
+    {
+      friend class ios_base;
+    public:
+      Init();
+      ~Init();
+
+    private:
+      static _Atomic_word	_S_refcount;
+      static bool		_S_synced_with_stdio;
+    };
+
+    // [27.4.2.2] fmtflags state functions
+    /**
+     *  @brief  Access to format flags.
+     *  @return  The format control flags for both input and output.
+    */
+    fmtflags
+    flags() const
+    { return _M_flags; }
+
+    /**
+     *  @brief  Setting new format flags all at once.
+     *  @param  fmtfl  The new flags to set.
+     *  @return  The previous format control flags.
+     *
+     *  This function overwrites all the format flags with @a fmtfl.
+    */
+    fmtflags
+    flags(fmtflags __fmtfl)
+    {
+      fmtflags __old = _M_flags;
+      _M_flags = __fmtfl;
+      return __old;
+    }
+
+    /**
+     *  @brief  Setting new format flags.
+     *  @param  fmtfl  Additional flags to set.
+     *  @return  The previous format control flags.
+     *
+     *  This function sets additional flags in format control.  Flags that
+     *  were previously set remain set.
+    */
+    fmtflags
+    setf(fmtflags __fmtfl)
+    {
+      fmtflags __old = _M_flags;
+      _M_flags |= __fmtfl;
+      return __old;
+    }
+
+    /**
+     *  @brief  Setting new format flags.
+     *  @param  fmtfl  Additional flags to set.
+     *  @param  mask  The flags mask for @a fmtfl.
+     *  @return  The previous format control flags.
+     *
+     *  This function clears @a mask in the format flags, then sets
+     *  @a fmtfl @c & @a mask.  An example mask is @c ios_base::adjustfield.
+    */
+    fmtflags
+    setf(fmtflags __fmtfl, fmtflags __mask)
+    {
+      fmtflags __old = _M_flags;
+      _M_flags &= ~__mask;
+      _M_flags |= (__fmtfl & __mask);
+      return __old;
+    }
+
+    /**
+     *  @brief  Clearing format flags.
+     *  @param  mask  The flags to unset.
+     *
+     *  This function clears @a mask in the format flags.
+    */
+    void
+    unsetf(fmtflags __mask)
+    { _M_flags &= ~__mask; }
+
+    /**
+     *  @brief  Flags access.
+     *  @return  The precision to generate on certain output operations.
+     *
+     *  Be careful if you try to give a definition of @a precision here; see
+     *  DR 189.
+    */
+    streamsize
+    precision() const
+    { return _M_precision; }
+
+    /**
+     *  @brief  Changing flags.
+     *  @param  prec  The new precision value.
+     *  @return  The previous value of precision().
+    */
+    streamsize
+    precision(streamsize __prec)
+    {
+      streamsize __old = _M_precision;
+      _M_precision = __prec;
+      return __old;
+    }
+
+    /**
+     *  @brief  Flags access.
+     *  @return  The minimum field width to generate on output operations.
+     *
+     *  <em>Minimum field width</em> refers to the number of characters.
+    */
+    streamsize
+    width() const
+    { return _M_width; }
+
+    /**
+     *  @brief  Changing flags.
+     *  @param  wide  The new width value.
+     *  @return  The previous value of width().
+    */
+    streamsize
+    width(streamsize __wide)
+    {
+      streamsize __old = _M_width;
+      _M_width = __wide;
+      return __old;
+    }
+
+    // [27.4.2.4] ios_base static members
+    /**
+     *  @brief  Interaction with the standard C I/O objects.
+     *  @param  sync  Whether to synchronize or not.
+     *  @return  True if the standard streams were previously synchronized.
+     *
+     *  The synchronization referred to is @e only that between the standard
+     *  C facilities (e.g., stdout) and the standard C++ objects (e.g.,
+     *  cout).  User-declared streams are unaffected.  See
+     *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch28s02.html
+    */
+    static bool
+    sync_with_stdio(bool __sync = true);
+
+    // [27.4.2.3] ios_base locale functions
+    /**
+     *  @brief  Setting a new locale.
+     *  @param  loc  The new locale.
+     *  @return  The previous locale.
+     *
+     *  Sets the new locale for this stream, and then invokes each callback
+     *  with imbue_event.
+    */
+    locale
+    imbue(const locale& __loc) throw();
+
+    /**
+     *  @brief  Locale access
+     *  @return  A copy of the current locale.
+     *
+     *  If @c imbue(loc) has previously been called, then this function
+     *  returns @c loc.  Otherwise, it returns a copy of @c std::locale(),
+     *  the global C++ locale.
+    */
+    locale
+    getloc() const
+    { return _M_ios_locale; }
+
+    /**
+     *  @brief  Locale access
+     *  @return  A reference to the current locale.
+     *
+     *  Like getloc above, but returns a reference instead of
+     *  generating a copy.
+    */
+    const locale&
+    _M_getloc() const
+    { return _M_ios_locale; }
+
+    // [27.4.2.5] ios_base storage functions
+    /**
+     *  @brief  Access to unique indices.
+     *  @return  An integer different from all previous calls.
+     *
+     *  This function returns a unique integer every time it is called.  It
+     *  can be used for any purpose, but is primarily intended to be a unique
+     *  index for the iword and pword functions.  The expectation is that an
+     *  application calls xalloc in order to obtain an index in the iword and
+     *  pword arrays that can be used without fear of conflict.
+     *
+     *  The implementation maintains a static variable that is incremented and
+     *  returned on each invocation.  xalloc is guaranteed to return an index
+     *  that is safe to use in the iword and pword arrays.
+    */
+    static int
+    xalloc() throw();
+
+    /**
+     *  @brief  Access to integer array.
+     *  @param  __ix  Index into the array.
+     *  @return  A reference to an integer associated with the index.
+     *
+     *  The iword function provides access to an array of integers that can be
+     *  used for any purpose.  The array grows as required to hold the
+     *  supplied index.  All integers in the array are initialized to 0.
+     *
+     *  The implementation reserves several indices.  You should use xalloc to
+     *  obtain an index that is safe to use.  Also note that since the array
+     *  can grow dynamically, it is not safe to hold onto the reference.
+    */
+    long&
+    iword(int __ix)
+    {
+      _Words& __word = (__ix < _M_word_size)
+			? _M_word[__ix] : _M_grow_words(__ix, true);
+      return __word._M_iword;
+    }
+
+    /**
+     *  @brief  Access to void pointer array.
+     *  @param  __ix  Index into the array.
+     *  @return  A reference to a void* associated with the index.
+     *
+     *  The pword function provides access to an array of pointers that can be
+     *  used for any purpose.  The array grows as required to hold the
+     *  supplied index.  All pointers in the array are initialized to 0.
+     *
+     *  The implementation reserves several indices.  You should use xalloc to
+     *  obtain an index that is safe to use.  Also note that since the array
+     *  can grow dynamically, it is not safe to hold onto the reference.
+    */
+    void*&
+    pword(int __ix)
+    {
+      _Words& __word = (__ix < _M_word_size)
+			? _M_word[__ix] : _M_grow_words(__ix, false);
+      return __word._M_pword;
+    }
+
+    // Destructor
+    /**
+     *  Invokes each callback with erase_event.  Destroys local storage.
+     *
+     *  Note that the ios_base object for the standard streams never gets
+     *  destroyed.  As a result, any callbacks registered with the standard
+     *  streams will not get invoked with erase_event (unless copyfmt is
+     *  used).
+    */
+    virtual ~ios_base();
+
+  protected:
+    ios_base() throw ();
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 50.  Copy constructor and assignment operator of ios_base
+  private:
+    ios_base(const ios_base&);
+
+    ios_base&
+    operator=(const ios_base&);
+  };
+
+  // [27.4.5.1] fmtflags manipulators
+  /// Calls base.setf(ios_base::boolalpha).
+  inline ios_base&
+  boolalpha(ios_base& __base)
+  {
+    __base.setf(ios_base::boolalpha);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::boolalpha).
+  inline ios_base&
+  noboolalpha(ios_base& __base)
+  {
+    __base.unsetf(ios_base::boolalpha);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::showbase).
+  inline ios_base&
+  showbase(ios_base& __base)
+  {
+    __base.setf(ios_base::showbase);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::showbase).
+  inline ios_base&
+  noshowbase(ios_base& __base)
+  {
+    __base.unsetf(ios_base::showbase);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::showpoint).
+  inline ios_base&
+  showpoint(ios_base& __base)
+  {
+    __base.setf(ios_base::showpoint);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::showpoint).
+  inline ios_base&
+  noshowpoint(ios_base& __base)
+  {
+    __base.unsetf(ios_base::showpoint);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::showpos).
+  inline ios_base&
+  showpos(ios_base& __base)
+  {
+    __base.setf(ios_base::showpos);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::showpos).
+  inline ios_base&
+  noshowpos(ios_base& __base)
+  {
+    __base.unsetf(ios_base::showpos);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::skipws).
+  inline ios_base&
+  skipws(ios_base& __base)
+  {
+    __base.setf(ios_base::skipws);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::skipws).
+  inline ios_base&
+  noskipws(ios_base& __base)
+  {
+    __base.unsetf(ios_base::skipws);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::uppercase).
+  inline ios_base&
+  uppercase(ios_base& __base)
+  {
+    __base.setf(ios_base::uppercase);
+    return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::uppercase).
+  inline ios_base&
+  nouppercase(ios_base& __base)
+  {
+    __base.unsetf(ios_base::uppercase);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::unitbuf).
+  inline ios_base&
+  unitbuf(ios_base& __base)
+  {
+     __base.setf(ios_base::unitbuf);
+     return __base;
+  }
+
+  /// Calls base.unsetf(ios_base::unitbuf).
+  inline ios_base&
+  nounitbuf(ios_base& __base)
+  {
+     __base.unsetf(ios_base::unitbuf);
+     return __base;
+  }
+
+  // [27.4.5.2] adjustfield manipulators
+  /// Calls base.setf(ios_base::internal, ios_base::adjustfield).
+  inline ios_base&
+  internal(ios_base& __base)
+  {
+     __base.setf(ios_base::internal, ios_base::adjustfield);
+     return __base;
+  }
+
+  /// Calls base.setf(ios_base::left, ios_base::adjustfield).
+  inline ios_base&
+  left(ios_base& __base)
+  {
+    __base.setf(ios_base::left, ios_base::adjustfield);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::right, ios_base::adjustfield).
+  inline ios_base&
+  right(ios_base& __base)
+  {
+    __base.setf(ios_base::right, ios_base::adjustfield);
+    return __base;
+  }
+
+  // [27.4.5.3] basefield manipulators
+  /// Calls base.setf(ios_base::dec, ios_base::basefield).
+  inline ios_base&
+  dec(ios_base& __base)
+  {
+    __base.setf(ios_base::dec, ios_base::basefield);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::hex, ios_base::basefield).
+  inline ios_base&
+  hex(ios_base& __base)
+  {
+    __base.setf(ios_base::hex, ios_base::basefield);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::oct, ios_base::basefield).
+  inline ios_base&
+  oct(ios_base& __base)
+  {
+    __base.setf(ios_base::oct, ios_base::basefield);
+    return __base;
+  }
+
+  // [27.4.5.4] floatfield manipulators
+  /// Calls base.setf(ios_base::fixed, ios_base::floatfield).
+  inline ios_base&
+  fixed(ios_base& __base)
+  {
+    __base.setf(ios_base::fixed, ios_base::floatfield);
+    return __base;
+  }
+
+  /// Calls base.setf(ios_base::scientific, ios_base::floatfield).
+  inline ios_base&
+  scientific(ios_base& __base)
+  {
+    __base.setf(ios_base::scientific, ios_base::floatfield);
+    return __base;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _IOS_BASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/istream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/istream.tcc
new file mode 100644
index 000000000..9055c31ce
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/istream.tcc
@@ -0,0 +1,1094 @@
+// istream classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/istream.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{istream}
+ */
+
+//
+// ISO C++ 14882: 27.6.1  Input streams
+//
+
+#ifndef _ISTREAM_TCC
+#define _ISTREAM_TCC 1
+
+#pragma GCC system_header
+
+#include <bits/cxxabi_forced.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>::sentry::
+    sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
+    {
+      ios_base::iostate __err = ios_base::goodbit;
+      if (__in.good())
+	{
+	  if (__in.tie())
+	    __in.tie()->flush();
+	  if (!__noskip && bool(__in.flags() & ios_base::skipws))
+	    {
+	      const __int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      __int_type __c = __sb->sgetc();
+
+	      const __ctype_type& __ct = __check_facet(__in._M_ctype);
+	      while (!traits_type::eq_int_type(__c, __eof)
+		     && __ct.is(ctype_base::space, 
+				traits_type::to_char_type(__c)))
+		__c = __sb->snextc();
+
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 195. Should basic_istream::sentry's constructor ever
+	      // set eofbit?
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	    }
+	}
+
+      if (__in.good() && __err == ios_base::goodbit)
+	_M_ok = true;
+      else
+	{
+	  __err |= ios_base::failbit;
+	  __in.setstate(__err);
+	}
+    }
+
+  template<typename _CharT, typename _Traits>
+    template<typename _ValueT>
+      basic_istream<_CharT, _Traits>&
+      basic_istream<_CharT, _Traits>::
+      _M_extract(_ValueT& __v)
+      {
+	sentry __cerb(*this, false);
+	if (__cerb)
+	  {
+	    ios_base::iostate __err = ios_base::goodbit;
+	    __try
+	      {
+		const __num_get_type& __ng = __check_facet(this->_M_num_get);
+		__ng.get(*this, 0, *this, __err, __v);
+	      }
+	    __catch(__cxxabiv1::__forced_unwind&)
+	      {
+		this->_M_setstate(ios_base::badbit);
+		__throw_exception_again;
+	      }
+	    __catch(...)
+	      { this->_M_setstate(ios_base::badbit); }
+	    if (__err)
+	      this->setstate(__err);
+	  }
+	return *this;
+      }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    operator>>(short& __n)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 118. basic_istream uses nonexistent num_get member functions.
+      sentry __cerb(*this, false);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      long __l;
+	      const __num_get_type& __ng = __check_facet(this->_M_num_get);
+	      __ng.get(*this, 0, *this, __err, __l);
+
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 696. istream::operator>>(int&) broken.
+	      if (__l < __gnu_cxx::__numeric_traits<short>::__min)
+		{
+		  __err |= ios_base::failbit;
+		  __n = __gnu_cxx::__numeric_traits<short>::__min;
+		}
+	      else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
+		{
+		  __err |= ios_base::failbit;
+		  __n = __gnu_cxx::__numeric_traits<short>::__max;
+		}
+	      else
+		__n = short(__l);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    operator>>(int& __n)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 118. basic_istream uses nonexistent num_get member functions.
+      sentry __cerb(*this, false);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      long __l;
+	      const __num_get_type& __ng = __check_facet(this->_M_num_get);
+	      __ng.get(*this, 0, *this, __err, __l);
+
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 696. istream::operator>>(int&) broken.
+	      if (__l < __gnu_cxx::__numeric_traits<int>::__min)
+		{
+		  __err |= ios_base::failbit;
+		  __n = __gnu_cxx::__numeric_traits<int>::__min;
+		}
+	      else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
+		{
+		  __err |= ios_base::failbit;	      
+		  __n = __gnu_cxx::__numeric_traits<int>::__max;
+		}
+	      else
+		__n = int(__l);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    operator>>(__streambuf_type* __sbout)
+    {
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, false);
+      if (__cerb && __sbout)
+	{
+	  __try
+	    {
+	      bool __ineof;
+	      if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
+		__err |= ios_base::failbit;
+	      if (__ineof)
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::failbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::failbit); }
+	}
+      else if (!__sbout)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_istream<_CharT, _Traits>::int_type
+    basic_istream<_CharT, _Traits>::
+    get(void)
+    {
+      const int_type __eof = traits_type::eof();
+      int_type __c = __eof;
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      __c = this->rdbuf()->sbumpc();
+	      // 27.6.1.1 paragraph 3
+	      if (!traits_type::eq_int_type(__c, __eof))
+		_M_gcount = 1;
+	      else
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return __c;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    get(char_type& __c)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      const int_type __cb = this->rdbuf()->sbumpc();
+	      // 27.6.1.1 paragraph 3
+	      if (!traits_type::eq_int_type(__cb, traits_type::eof()))
+		{
+		  _M_gcount = 1;
+		  __c = traits_type::to_char_type(__cb);
+		}
+	      else
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    get(char_type* __s, streamsize __n, char_type __delim)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      const int_type __idelim = traits_type::to_int_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      while (_M_gcount + 1 < __n
+		     && !traits_type::eq_int_type(__c, __eof)
+		     && !traits_type::eq_int_type(__c, __idelim))
+		{
+		  *__s++ = traits_type::to_char_type(__c);
+		  ++_M_gcount;
+		  __c = __sb->snextc();
+		}
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 243. get and getline when sentry reports failure.
+      if (__n > 0)
+	*__s = char_type();
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    get(__streambuf_type& __sb, char_type __delim)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      const int_type __idelim = traits_type::to_int_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __this_sb = this->rdbuf();
+	      int_type __c = __this_sb->sgetc();
+	      char_type __c2 = traits_type::to_char_type(__c);
+
+	      while (!traits_type::eq_int_type(__c, __eof)
+		     && !traits_type::eq_int_type(__c, __idelim)
+		     && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
+		{
+		  ++_M_gcount;
+		  __c = __this_sb->snextc();
+		  __c2 = traits_type::to_char_type(__c);
+		}
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    getline(char_type* __s, streamsize __n, char_type __delim)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+        {
+          __try
+            {
+              const int_type __idelim = traits_type::to_int_type(__delim);
+              const int_type __eof = traits_type::eof();
+              __streambuf_type* __sb = this->rdbuf();
+              int_type __c = __sb->sgetc();
+
+              while (_M_gcount + 1 < __n
+                     && !traits_type::eq_int_type(__c, __eof)
+                     && !traits_type::eq_int_type(__c, __idelim))
+                {
+                  *__s++ = traits_type::to_char_type(__c);
+                  __c = __sb->snextc();
+                  ++_M_gcount;
+                }
+              if (traits_type::eq_int_type(__c, __eof))
+                __err |= ios_base::eofbit;
+              else
+                {
+                  if (traits_type::eq_int_type(__c, __idelim))
+                    {
+                      __sb->sbumpc();
+                      ++_M_gcount;
+                    }
+                  else
+                    __err |= ios_base::failbit;
+                }
+            }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+          __catch(...)
+            { this->_M_setstate(ios_base::badbit); }
+        }
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 243. get and getline when sentry reports failure.
+      if (__n > 0)
+	*__s = char_type();
+      if (!_M_gcount)
+        __err |= ios_base::failbit;
+      if (__err)
+        this->setstate(__err);
+      return *this;
+    }
+
+  // We provide three overloads, since the first two are much simpler
+  // than the general case. Also, the latter two can thus adopt the
+  // same "batchy" strategy used by getline above.
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    ignore(void)
+    {
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+
+	      if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
+		__err |= ios_base::eofbit;
+	      else
+		_M_gcount = 1;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    ignore(streamsize __n)
+    {
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb && __n > 0)
+        {
+          ios_base::iostate __err = ios_base::goodbit;
+          __try
+            {
+              const int_type __eof = traits_type::eof();
+              __streambuf_type* __sb = this->rdbuf();
+              int_type __c = __sb->sgetc();
+
+	      // N.B. On LFS-enabled platforms streamsize is still 32 bits
+	      // wide: if we want to implement the standard mandated behavior
+	      // for n == max() (see 27.6.1.3/24) we are at risk of signed
+	      // integer overflow: thus these contortions. Also note that,
+	      // by definition, when more than 2G chars are actually ignored,
+	      // _M_gcount (the return value of gcount, that is) cannot be
+	      // really correct, being unavoidably too small.
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      ++_M_gcount;
+		      __c = __sb->snextc();
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      if (traits_type::eq_int_type(__c, __eof))
+                __err |= ios_base::eofbit;
+            }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+          __catch(...)
+            { this->_M_setstate(ios_base::badbit); }
+          if (__err)
+            this->setstate(__err);
+        }
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    ignore(streamsize __n, int_type __delim)
+    {
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb && __n > 0)
+        {
+          ios_base::iostate __err = ios_base::goodbit;
+          __try
+            {
+              const int_type __eof = traits_type::eof();
+              __streambuf_type* __sb = this->rdbuf();
+              int_type __c = __sb->sgetc();
+
+	      // See comment above.
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof)
+			 && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      ++_M_gcount;
+		      __c = __sb->snextc();
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof)
+		      && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+              if (traits_type::eq_int_type(__c, __eof))
+                __err |= ios_base::eofbit;
+	      else if (traits_type::eq_int_type(__c, __delim))
+		{
+		  if (_M_gcount
+		      < __gnu_cxx::__numeric_traits<streamsize>::__max)
+		    ++_M_gcount;
+		  __sb->sbumpc();
+		}
+            }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+          __catch(...)
+            { this->_M_setstate(ios_base::badbit); }
+          if (__err)
+            this->setstate(__err);
+        }
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_istream<_CharT, _Traits>::int_type
+    basic_istream<_CharT, _Traits>::
+    peek(void)
+    {
+      int_type __c = traits_type::eof();
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      __c = this->rdbuf()->sgetc();
+	      if (traits_type::eq_int_type(__c, traits_type::eof()))
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return __c;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    read(char_type* __s, streamsize __n)
+    {
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      _M_gcount = this->rdbuf()->sgetn(__s, __n);
+	      if (_M_gcount != __n)
+		__err |= (ios_base::eofbit | ios_base::failbit);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_istream<_CharT, _Traits>::
+    readsome(char_type* __s, streamsize __n)
+    {
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      // Cannot compare int_type with streamsize generically.
+	      const streamsize __num = this->rdbuf()->in_avail();
+	      if (__num > 0)
+		_M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
+	      else if (__num == -1)
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return _M_gcount;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    putback(char_type __c)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 60. What is a formatted input function?
+      _M_gcount = 0;
+      // Clear eofbit per N3168.
+      this->clear(this->rdstate() & ~ios_base::eofbit);
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      if (!__sb
+		  || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
+		__err |= ios_base::badbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    unget(void)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 60. What is a formatted input function?
+      _M_gcount = 0;
+      // Clear eofbit per N3168.
+      this->clear(this->rdstate() & ~ios_base::eofbit);
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      if (!__sb
+		  || traits_type::eq_int_type(__sb->sungetc(), __eof))
+		__err |= ios_base::badbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    int
+    basic_istream<_CharT, _Traits>::
+    sync(void)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR60.  Do not change _M_gcount.
+      int __ret = -1;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      __streambuf_type* __sb = this->rdbuf();
+	      if (__sb)
+		{
+		  if (__sb->pubsync() == -1)
+		    __err |= ios_base::badbit;
+		  else
+		    __ret = 0;
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_istream<_CharT, _Traits>::pos_type
+    basic_istream<_CharT, _Traits>::
+    tellg(void)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR60.  Do not change _M_gcount.
+      pos_type __ret = pos_type(-1);
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      if (!this->fail())
+		__ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
+						  ios_base::in);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    seekg(pos_type __pos)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR60.  Do not change _M_gcount.
+      // Clear eofbit per N3168.
+      this->clear(this->rdstate() & ~ios_base::eofbit);
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      if (!this->fail())
+		{
+		  // 136.  seekp, seekg setting wrong streams?
+		  const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+								 ios_base::in);
+		  
+		  // 129.  Need error indication from seekp() and seekg()
+		  if (__p == pos_type(off_type(-1)))
+		    __err |= ios_base::failbit;
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    basic_istream<_CharT, _Traits>::
+    seekg(off_type __off, ios_base::seekdir __dir)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR60.  Do not change _M_gcount.
+      // Clear eofbit per N3168.
+      this->clear(this->rdstate() & ~ios_base::eofbit);
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      if (!this->fail())
+		{
+		  // 136.  seekp, seekg setting wrong streams?
+		  const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+								 ios_base::in);
+	      
+		  // 129.  Need error indication from seekp() and seekg()
+		  if (__p == pos_type(off_type(-1)))
+		    __err |= ios_base::failbit;
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  // 27.6.1.2.3 Character extraction templates
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
+    {
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef typename __istream_type::int_type         __int_type;
+
+      typename __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const __int_type __cb = __in.rdbuf()->sbumpc();
+	      if (!_Traits::eq_int_type(__cb, _Traits::eof()))
+		__c = _Traits::to_char_type(__cb);
+	      else
+		__err |= (ios_base::eofbit | ios_base::failbit);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __in._M_setstate(ios_base::badbit); }
+	  if (__err)
+	    __in.setstate(__err);
+	}
+      return __in;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
+    {
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef basic_streambuf<_CharT, _Traits>          __streambuf_type;
+      typedef typename _Traits::int_type		int_type;
+      typedef _CharT					char_type;
+      typedef ctype<_CharT>				__ctype_type;
+
+      streamsize __extracted = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      typename __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      // Figure out how many characters to extract.
+	      streamsize __num = __in.width();
+	      if (__num <= 0)
+		__num = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+
+	      const int_type __eof = _Traits::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      while (__extracted < __num - 1
+		     && !_Traits::eq_int_type(__c, __eof)
+		     && !__ct.is(ctype_base::space,
+				 _Traits::to_char_type(__c)))
+		{
+		  *__s++ = _Traits::to_char_type(__c);
+		  ++__extracted;
+		  __c = __sb->snextc();
+		}
+	      if (_Traits::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 68.  Extractors for char* should store null at end
+	      *__s = char_type();
+	      __in.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __in._M_setstate(ios_base::badbit); }
+	}
+      if (!__extracted)
+	__err |= ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+  // 27.6.1.4 Standard basic_istream manipulators
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    ws(basic_istream<_CharT, _Traits>& __in)
+    {
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef basic_streambuf<_CharT, _Traits>          __streambuf_type;
+      typedef typename __istream_type::int_type		__int_type;
+      typedef ctype<_CharT>				__ctype_type;
+
+      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+      const __int_type __eof = _Traits::eof();
+      __streambuf_type* __sb = __in.rdbuf();
+      __int_type __c = __sb->sgetc();
+
+      while (!_Traits::eq_int_type(__c, __eof)
+	     && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
+	__c = __sb->snextc();
+
+       if (_Traits::eq_int_type(__c, __eof))
+	 __in.setstate(ios_base::eofbit);
+      return __in;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_istream<char>;
+  extern template istream& ws(istream&);
+  extern template istream& operator>>(istream&, char&);
+  extern template istream& operator>>(istream&, char*);
+  extern template istream& operator>>(istream&, unsigned char&);
+  extern template istream& operator>>(istream&, signed char&);
+  extern template istream& operator>>(istream&, unsigned char*);
+  extern template istream& operator>>(istream&, signed char*);
+
+  extern template istream& istream::_M_extract(unsigned short&);
+  extern template istream& istream::_M_extract(unsigned int&);  
+  extern template istream& istream::_M_extract(long&);
+  extern template istream& istream::_M_extract(unsigned long&);
+  extern template istream& istream::_M_extract(bool&);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  extern template istream& istream::_M_extract(long long&);
+  extern template istream& istream::_M_extract(unsigned long long&);
+#endif
+  extern template istream& istream::_M_extract(float&);
+  extern template istream& istream::_M_extract(double&);
+  extern template istream& istream::_M_extract(long double&);
+  extern template istream& istream::_M_extract(void*&);
+
+  extern template class basic_iostream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_istream<wchar_t>;
+  extern template wistream& ws(wistream&);
+  extern template wistream& operator>>(wistream&, wchar_t&);
+  extern template wistream& operator>>(wistream&, wchar_t*);
+
+  extern template wistream& wistream::_M_extract(unsigned short&);
+  extern template wistream& wistream::_M_extract(unsigned int&);  
+  extern template wistream& wistream::_M_extract(long&);
+  extern template wistream& wistream::_M_extract(unsigned long&);
+  extern template wistream& wistream::_M_extract(bool&);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  extern template wistream& wistream::_M_extract(long long&);
+  extern template wistream& wistream::_M_extract(unsigned long long&);
+#endif
+  extern template wistream& wistream::_M_extract(float&);
+  extern template wistream& wistream::_M_extract(double&);
+  extern template wistream& wistream::_M_extract(long double&);
+  extern template wistream& wistream::_M_extract(void*&);
+
+  extern template class basic_iostream<wchar_t>;
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/list.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/list.tcc
new file mode 100644
index 000000000..01c1bc644
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/list.tcc
@@ -0,0 +1,470 @@
+// List implementation (out of line) -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/list.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{list}
+ */
+
+#ifndef _LIST_TCC
+#define _LIST_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  template<typename _Tp, typename _Alloc>
+    void
+    _List_base<_Tp, _Alloc>::
+    _M_clear()
+    {
+      typedef _List_node<_Tp>  _Node;
+      _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
+      while (__cur != &this->_M_impl._M_node)
+	{
+	  _Node* __tmp = __cur;
+	  __cur = static_cast<_Node*>(__cur->_M_next);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+	  _M_get_Node_allocator().destroy(__tmp);
+#else
+	  _M_get_Tp_allocator().destroy(std::__addressof(__tmp->_M_data));
+#endif
+	  _M_put_node(__tmp);
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      typename list<_Tp, _Alloc>::iterator
+      list<_Tp, _Alloc>::
+      emplace(iterator __position, _Args&&... __args)
+      {
+	_Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
+	__tmp->_M_hook(__position._M_node);
+	return iterator(__tmp);
+      }
+#endif
+
+  template<typename _Tp, typename _Alloc>
+    typename list<_Tp, _Alloc>::iterator
+    list<_Tp, _Alloc>::
+    insert(iterator __position, const value_type& __x)
+    {
+      _Node* __tmp = _M_create_node(__x);
+      __tmp->_M_hook(__position._M_node);
+      return iterator(__tmp);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    typename list<_Tp, _Alloc>::iterator
+    list<_Tp, _Alloc>::
+    erase(iterator __position)
+    {
+      iterator __ret = iterator(__position._M_node->_M_next);
+      _M_erase(__position);
+      return __ret;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    _M_default_append(size_type __n)
+    {
+      size_type __i = 0;
+      __try
+	{
+	  for (; __i < __n; ++__i)
+	    emplace_back();
+	}
+      __catch(...)
+	{
+	  for (; __i; --__i)
+	    pop_back();
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    resize(size_type __new_size)
+    {
+      iterator __i = begin();
+      size_type __len = 0;
+      for (; __i != end() && __len < __new_size; ++__i, ++__len)
+        ;
+      if (__len == __new_size)
+        erase(__i, end());
+      else                          // __i == end()
+	_M_default_append(__new_size - __len);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    resize(size_type __new_size, const value_type& __x)
+    {
+      iterator __i = begin();
+      size_type __len = 0;
+      for (; __i != end() && __len < __new_size; ++__i, ++__len)
+        ;
+      if (__len == __new_size)
+        erase(__i, end());
+      else                          // __i == end()
+        insert(end(), __new_size - __len, __x);
+    }
+#else
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    resize(size_type __new_size, value_type __x)
+    {
+      iterator __i = begin();
+      size_type __len = 0;
+      for (; __i != end() && __len < __new_size; ++__i, ++__len)
+        ;
+      if (__len == __new_size)
+        erase(__i, end());
+      else                          // __i == end()
+        insert(end(), __new_size - __len, __x);
+    }
+#endif
+
+  template<typename _Tp, typename _Alloc>
+    list<_Tp, _Alloc>&
+    list<_Tp, _Alloc>::
+    operator=(const list& __x)
+    {
+      if (this != &__x)
+	{
+	  iterator __first1 = begin();
+	  iterator __last1 = end();
+	  const_iterator __first2 = __x.begin();
+	  const_iterator __last2 = __x.end();
+	  for (; __first1 != __last1 && __first2 != __last2;
+	       ++__first1, ++__first2)
+	    *__first1 = *__first2;
+	  if (__first2 == __last2)
+	    erase(__first1, __last1);
+	  else
+	    insert(__last1, __first2, __last2);
+	}
+      return *this;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    _M_fill_assign(size_type __n, const value_type& __val)
+    {
+      iterator __i = begin();
+      for (; __i != end() && __n > 0; ++__i, --__n)
+        *__i = __val;
+      if (__n > 0)
+        insert(end(), __n, __val);
+      else
+        erase(__i, end());
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template <typename _InputIterator>
+      void
+      list<_Tp, _Alloc>::
+      _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
+			 __false_type)
+      {
+        iterator __first1 = begin();
+        iterator __last1 = end();
+        for (; __first1 != __last1 && __first2 != __last2;
+	     ++__first1, ++__first2)
+          *__first1 = *__first2;
+        if (__first2 == __last2)
+          erase(__first1, __last1);
+        else
+          insert(__last1, __first2, __last2);
+      }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    remove(const value_type& __value)
+    {
+      iterator __first = begin();
+      iterator __last = end();
+      iterator __extra = __last;
+      while (__first != __last)
+	{
+	  iterator __next = __first;
+	  ++__next;
+	  if (*__first == __value)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 526. Is it undefined if a function in the standard changes
+	      // in parameters?
+	      if (std::__addressof(*__first) != std::__addressof(__value))
+		_M_erase(__first);
+	      else
+		__extra = __first;
+	    }
+	  __first = __next;
+	}
+      if (__extra != __last)
+	_M_erase(__extra);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    unique()
+    {
+      iterator __first = begin();
+      iterator __last = end();
+      if (__first == __last)
+	return;
+      iterator __next = __first;
+      while (++__next != __last)
+	{
+	  if (*__first == *__next)
+	    _M_erase(__next);
+	  else
+	    __first = __next;
+	  __next = __first;
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    merge(list&& __x)
+#else
+    merge(list& __x)
+#endif
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 300. list::merge() specification incomplete
+      if (this != &__x)
+	{
+	  _M_check_equal_allocators(__x); 
+
+	  iterator __first1 = begin();
+	  iterator __last1 = end();
+	  iterator __first2 = __x.begin();
+	  iterator __last2 = __x.end();
+	  while (__first1 != __last1 && __first2 != __last2)
+	    if (*__first2 < *__first1)
+	      {
+		iterator __next = __first2;
+		_M_transfer(__first1, __first2, ++__next);
+		__first2 = __next;
+	      }
+	    else
+	      ++__first1;
+	  if (__first2 != __last2)
+	    _M_transfer(__last1, __first2, __last2);
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template <typename _StrictWeakOrdering>
+      void
+      list<_Tp, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      merge(list&& __x, _StrictWeakOrdering __comp)
+#else
+      merge(list& __x, _StrictWeakOrdering __comp)
+#endif
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 300. list::merge() specification incomplete
+	if (this != &__x)
+	  {
+	    _M_check_equal_allocators(__x);
+
+	    iterator __first1 = begin();
+	    iterator __last1 = end();
+	    iterator __first2 = __x.begin();
+	    iterator __last2 = __x.end();
+	    while (__first1 != __last1 && __first2 != __last2)
+	      if (__comp(*__first2, *__first1))
+		{
+		  iterator __next = __first2;
+		  _M_transfer(__first1, __first2, ++__next);
+		  __first2 = __next;
+		}
+	      else
+		++__first1;
+	    if (__first2 != __last2)
+	      _M_transfer(__last1, __first2, __last2);
+	  }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    list<_Tp, _Alloc>::
+    sort()
+    {
+      // Do nothing if the list has length 0 or 1.
+      if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+	  && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+      {
+        list __carry;
+        list __tmp[64];
+        list * __fill = &__tmp[0];
+        list * __counter;
+
+        do
+	  {
+	    __carry.splice(__carry.begin(), *this, begin());
+
+	    for(__counter = &__tmp[0];
+		__counter != __fill && !__counter->empty();
+		++__counter)
+	      {
+		__counter->merge(__carry);
+		__carry.swap(*__counter);
+	      }
+	    __carry.swap(*__counter);
+	    if (__counter == __fill)
+	      ++__fill;
+	  }
+	while ( !empty() );
+
+        for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+          __counter->merge(*(__counter - 1));
+        swap( *(__fill - 1) );
+      }
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template <typename _Predicate>
+      void
+      list<_Tp, _Alloc>::
+      remove_if(_Predicate __pred)
+      {
+        iterator __first = begin();
+        iterator __last = end();
+        while (__first != __last)
+	  {
+	    iterator __next = __first;
+	    ++__next;
+	    if (__pred(*__first))
+	      _M_erase(__first);
+	    __first = __next;
+	  }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template <typename _BinaryPredicate>
+      void
+      list<_Tp, _Alloc>::
+      unique(_BinaryPredicate __binary_pred)
+      {
+        iterator __first = begin();
+        iterator __last = end();
+        if (__first == __last)
+	  return;
+        iterator __next = __first;
+        while (++__next != __last)
+	  {
+	    if (__binary_pred(*__first, *__next))
+	      _M_erase(__next);
+	    else
+	      __first = __next;
+	    __next = __first;
+	  }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template <typename _StrictWeakOrdering>
+      void
+      list<_Tp, _Alloc>::
+      sort(_StrictWeakOrdering __comp)
+      {
+	// Do nothing if the list has length 0 or 1.
+	if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+	    && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+	  {
+	    list __carry;
+	    list __tmp[64];
+	    list * __fill = &__tmp[0];
+	    list * __counter;
+
+	    do
+	      {
+		__carry.splice(__carry.begin(), *this, begin());
+
+		for(__counter = &__tmp[0];
+		    __counter != __fill && !__counter->empty();
+		    ++__counter)
+		  {
+		    __counter->merge(__carry, __comp);
+		    __carry.swap(*__counter);
+		  }
+		__carry.swap(*__counter);
+		if (__counter == __fill)
+		  ++__fill;
+	      }
+	    while ( !empty() );
+
+	    for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+	      __counter->merge(*(__counter - 1), __comp);
+	    swap(*(__fill - 1));
+	  }
+      }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _LIST_TCC */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.h
new file mode 100644
index 000000000..80ba73526
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.h
@@ -0,0 +1,825 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_classes.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#ifndef _LOCALE_CLASSES_H
+#define _LOCALE_CLASSES_H 1
+
+#pragma GCC system_header
+
+#include <bits/localefwd.h>
+#include <string>
+#include <ext/atomicity.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 22.1.1 Class locale
+  /**
+   *  @brief  Container class for localization functionality.
+   *  @ingroup locales
+   *
+   *  The locale class is first a class wrapper for C library locales.  It is
+   *  also an extensible container for user-defined localization.  A locale is
+   *  a collection of facets that implement various localization features such
+   *  as money, time, and number printing.
+   *
+   *  Constructing C++ locales does not change the C library locale.
+   *
+   *  This library supports efficient construction and copying of locales
+   *  through a reference counting implementation of the locale class.
+  */
+  class locale
+  {
+  public:
+    // Types:
+    /// Definition of locale::category.
+    typedef int	category;
+
+    // Forward decls and friends:
+    class facet;
+    class id;
+    class _Impl;
+
+    friend class facet;
+    friend class _Impl;
+
+    template<typename _Facet>
+      friend bool
+      has_facet(const locale&) throw();
+
+    template<typename _Facet>
+      friend const _Facet&
+      use_facet(const locale&);
+
+    template<typename _Cache>
+      friend struct __use_cache;
+
+    //@{
+    /**
+     *  @brief  Category values.
+     *
+     *  The standard category values are none, ctype, numeric, collate, time,
+     *  monetary, and messages.  They form a bitmask that supports union and
+     *  intersection.  The category all is the union of these values.
+     *
+     *  NB: Order must match _S_facet_categories definition in locale.cc
+    */
+    static const category none		= 0;
+    static const category ctype		= 1L << 0;
+    static const category numeric	= 1L << 1;
+    static const category collate	= 1L << 2;
+    static const category time		= 1L << 3;
+    static const category monetary	= 1L << 4;
+    static const category messages	= 1L << 5;
+    static const category all		= (ctype | numeric | collate |
+					   time  | monetary | messages);
+    //@}
+
+    // Construct/copy/destroy:
+
+    /**
+     *  @brief  Default constructor.
+     *
+     *  Constructs a copy of the global locale.  If no locale has been
+     *  explicitly set, this is the C locale.
+    */
+    locale() throw();
+
+    /**
+     *  @brief  Copy constructor.
+     *
+     *  Constructs a copy of @a other.
+     *
+     *  @param  other  The locale to copy.
+    */
+    locale(const locale& __other) throw();
+
+    /**
+     *  @brief  Named locale constructor.
+     *
+     *  Constructs a copy of the named C library locale.
+     *
+     *  @param  s  Name of the locale to construct.
+     *  @throw  std::runtime_error if s is null or an undefined locale.
+    */
+    explicit
+    locale(const char* __s);
+
+    /**
+     *  @brief  Construct locale with facets from another locale.
+     *
+     *  Constructs a copy of the locale @a base.  The facets specified by @a
+     *  cat are replaced with those from the locale named by @a s.  If base is
+     *  named, this locale instance will also be named.
+     *
+     *  @param  base  The locale to copy.
+     *  @param  s  Name of the locale to use facets from.
+     *  @param  cat  Set of categories defining the facets to use from s.
+     *  @throw  std::runtime_error if s is null or an undefined locale.
+    */
+    locale(const locale& __base, const char* __s, category __cat);
+
+    /**
+     *  @brief  Construct locale with facets from another locale.
+     *
+     *  Constructs a copy of the locale @a base.  The facets specified by @a
+     *  cat are replaced with those from the locale @a add.  If @a base and @a
+     *  add are named, this locale instance will also be named.
+     *
+     *  @param  base  The locale to copy.
+     *  @param  add  The locale to use facets from.
+     *  @param  cat  Set of categories defining the facets to use from add.
+    */
+    locale(const locale& __base, const locale& __add, category __cat);
+
+    /**
+     *  @brief  Construct locale with another facet.
+     *
+     *  Constructs a copy of the locale @a other.  The facet @f is added to
+     *  @other, replacing an existing facet of type Facet if there is one.  If
+     *  @f is null, this locale is a copy of @a other.
+     *
+     *  @param  other  The locale to copy.
+     *  @param  f  The facet to add in.
+    */
+    template<typename _Facet>
+      locale(const locale& __other, _Facet* __f);
+
+    /// Locale destructor.
+    ~locale() throw();
+
+    /**
+     *  @brief  Assignment operator.
+     *
+     *  Set this locale to be a copy of @a other.
+     *
+     *  @param  other  The locale to copy.
+     *  @return  A reference to this locale.
+    */
+    const locale&
+    operator=(const locale& __other) throw();
+
+    /**
+     *  @brief  Construct locale with another facet.
+     *
+     *  Constructs and returns a new copy of this locale.  Adds or replaces an
+     *  existing facet of type Facet from the locale @a other into the new
+     *  locale.
+     *
+     *  @param  Facet  The facet type to copy from other
+     *  @param  other  The locale to copy from.
+     *  @return  Newly constructed locale.
+     *  @throw  std::runtime_error if other has no facet of type Facet.
+    */
+    template<typename _Facet>
+      locale
+      combine(const locale& __other) const;
+
+    // Locale operations:
+    /**
+     *  @brief  Return locale name.
+     *  @return  Locale name or "*" if unnamed.
+    */
+    string
+    name() const;
+
+    /**
+     *  @brief  Locale equality.
+     *
+     *  @param  other  The locale to compare against.
+     *  @return  True if other and this refer to the same locale instance, are
+     *		 copies, or have the same name.  False otherwise.
+    */
+    bool
+    operator==(const locale& __other) const throw();
+
+    /**
+     *  @brief  Locale inequality.
+     *
+     *  @param  other  The locale to compare against.
+     *  @return  ! (*this == other)
+    */
+    bool
+    operator!=(const locale& __other) const throw()
+    { return !(this->operator==(__other)); }
+
+    /**
+     *  @brief  Compare two strings according to collate.
+     *
+     *  Template operator to compare two strings using the compare function of
+     *  the collate facet in this locale.  One use is to provide the locale to
+     *  the sort function.  For example, a vector v of strings could be sorted
+     *  according to locale loc by doing:
+     *  @code
+     *  std::sort(v.begin(), v.end(), loc);
+     *  @endcode
+     *
+     *  @param  s1  First string to compare.
+     *  @param  s2  Second string to compare.
+     *  @return  True if collate<Char> facet compares s1 < s2, else false.
+    */
+    template<typename _Char, typename _Traits, typename _Alloc>
+      bool
+      operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
+		 const basic_string<_Char, _Traits, _Alloc>& __s2) const;
+
+    // Global locale objects:
+    /**
+     *  @brief  Set global locale
+     *
+     *  This function sets the global locale to the argument and returns a
+     *  copy of the previous global locale.  If the argument has a name, it
+     *  will also call std::setlocale(LC_ALL, loc.name()).
+     *
+     *  @param  locale  The new locale to make global.
+     *  @return  Copy of the old global locale.
+    */
+    static locale
+    global(const locale&);
+
+    /**
+     *  @brief  Return reference to the C locale.
+    */
+    static const locale&
+    classic();
+
+  private:
+    // The (shared) implementation
+    _Impl*		_M_impl;
+
+    // The "C" reference locale
+    static _Impl*       _S_classic;
+
+    // Current global locale
+    static _Impl*	_S_global;
+
+    // Names of underlying locale categories.
+    // NB: locale::global() has to know how to modify all the
+    // underlying categories, not just the ones required by the C++
+    // standard.
+    static const char* const* const _S_categories;
+
+    // Number of standard categories. For C++, these categories are
+    // collate, ctype, monetary, numeric, time, and messages. These
+    // directly correspond to ISO C99 macros LC_COLLATE, LC_CTYPE,
+    // LC_MONETARY, LC_NUMERIC, and LC_TIME. In addition, POSIX (IEEE
+    // 1003.1-2001) specifies LC_MESSAGES.
+    // In addition to the standard categories, the underlying
+    // operating system is allowed to define extra LC_*
+    // macros. For GNU systems, the following are also valid:
+    // LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT,
+    // and LC_IDENTIFICATION.
+    enum { _S_categories_size = 6 + _GLIBCXX_NUM_CATEGORIES };
+
+#ifdef __GTHREADS
+    static __gthread_once_t _S_once;
+#endif
+
+    explicit
+    locale(_Impl*) throw();
+
+    static void
+    _S_initialize();
+
+    static void
+    _S_initialize_once() throw();
+
+    static category
+    _S_normalize_category(category);
+
+    void
+    _M_coalesce(const locale& __base, const locale& __add, category __cat);
+  };
+
+
+  // 22.1.1.1.2  Class locale::facet
+  /**
+   *  @brief  Localization functionality base class.
+   *  @ingroup locales
+   *
+   *  The facet class is the base class for a localization feature, such as
+   *  money, time, and number printing.  It provides common support for facets
+   *  and reference management.
+   *
+   *  Facets may not be copied or assigned.
+  */
+  class locale::facet
+  {
+  private:
+    friend class locale;
+    friend class locale::_Impl;
+
+    mutable _Atomic_word		_M_refcount;
+
+    // Contains data from the underlying "C" library for the classic locale.
+    static __c_locale                   _S_c_locale;
+
+    // String literal for the name of the classic locale.
+    static const char			_S_c_name[2];
+
+#ifdef __GTHREADS
+    static __gthread_once_t		_S_once;
+#endif
+
+    static void
+    _S_initialize_once();
+
+  protected:
+    /**
+     *  @brief  Facet constructor.
+     *
+     *  This is the constructor provided by the standard.  If refs is 0, the
+     *  facet is destroyed when the last referencing locale is destroyed.
+     *  Otherwise the facet will never be destroyed.
+     *
+     *  @param refs  The initial value for reference count.
+    */
+    explicit
+    facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
+    { }
+
+    /// Facet destructor.
+    virtual
+    ~facet();
+
+    static void
+    _S_create_c_locale(__c_locale& __cloc, const char* __s,
+		       __c_locale __old = 0);
+
+    static __c_locale
+    _S_clone_c_locale(__c_locale& __cloc) throw();
+
+    static void
+    _S_destroy_c_locale(__c_locale& __cloc);
+
+    static __c_locale
+    _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s);
+
+    // Returns data from the underlying "C" library data for the
+    // classic locale.
+    static __c_locale
+    _S_get_c_locale();
+
+    _GLIBCXX_CONST static const char*
+    _S_get_c_name() throw();
+
+  private:
+    void
+    _M_add_reference() const throw()
+    { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+    void
+    _M_remove_reference() const throw()
+    {
+      // Be race-detector-friendly.  For more info see bits/c++config.
+      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+	{
+          _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
+	  __try
+	    { delete this; }
+	  __catch(...)
+	    { }
+	}
+    }
+
+    facet(const facet&);  // Not defined.
+
+    facet&
+    operator=(const facet&);  // Not defined.
+  };
+
+
+  // 22.1.1.1.3 Class locale::id
+  /**
+   *  @brief  Facet ID class.
+   *  @ingroup locales
+   *
+   *  The ID class provides facets with an index used to identify them.
+   *  Every facet class must define a public static member locale::id, or be
+   *  derived from a facet that provides this member, otherwise the facet
+   *  cannot be used in a locale.  The locale::id ensures that each class
+   *  type gets a unique identifier.
+  */
+  class locale::id
+  {
+  private:
+    friend class locale;
+    friend class locale::_Impl;
+
+    template<typename _Facet>
+      friend const _Facet&
+      use_facet(const locale&);
+
+    template<typename _Facet>
+      friend bool
+      has_facet(const locale&) throw();
+
+    // NB: There is no accessor for _M_index because it may be used
+    // before the constructor is run; the effect of calling a member
+    // function (even an inline) would be undefined.
+    mutable size_t		_M_index;
+
+    // Last id number assigned.
+    static _Atomic_word		_S_refcount;
+
+    void
+    operator=(const id&);  // Not defined.
+
+    id(const id&);  // Not defined.
+
+  public:
+    // NB: This class is always a static data member, and thus can be
+    // counted on to be zero-initialized.
+    /// Constructor.
+    id() { }
+
+    size_t
+    _M_id() const throw();
+  };
+
+
+  // Implementation object for locale.
+  class locale::_Impl
+  {
+  public:
+    // Friends.
+    friend class locale;
+    friend class locale::facet;
+
+    template<typename _Facet>
+      friend bool
+      has_facet(const locale&) throw();
+
+    template<typename _Facet>
+      friend const _Facet&
+      use_facet(const locale&);
+
+    template<typename _Cache>
+      friend struct __use_cache;
+
+  private:
+    // Data Members.
+    _Atomic_word			_M_refcount;
+    const facet**			_M_facets;
+    size_t				_M_facets_size;
+    const facet**			_M_caches;
+    char**				_M_names;
+    static const locale::id* const	_S_id_ctype[];
+    static const locale::id* const	_S_id_numeric[];
+    static const locale::id* const	_S_id_collate[];
+    static const locale::id* const	_S_id_time[];
+    static const locale::id* const	_S_id_monetary[];
+    static const locale::id* const	_S_id_messages[];
+    static const locale::id* const* const _S_facet_categories[];
+
+    void
+    _M_add_reference() throw()
+    { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+    void
+    _M_remove_reference() throw()
+    {
+      // Be race-detector-friendly.  For more info see bits/c++config.
+      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+	{
+          _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
+	  __try
+	    { delete this; }
+	  __catch(...)
+	    { }
+	}
+    }
+
+    _Impl(const _Impl&, size_t);
+    _Impl(const char*, size_t);
+    _Impl(size_t) throw();
+
+   ~_Impl() throw();
+
+    _Impl(const _Impl&);  // Not defined.
+
+    void
+    operator=(const _Impl&);  // Not defined.
+
+    bool
+    _M_check_same_name()
+    {
+      bool __ret = true;
+      if (_M_names[1])
+	// We must actually compare all the _M_names: can be all equal!
+	for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
+	  __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
+      return __ret;
+    }
+
+    void
+    _M_replace_categories(const _Impl*, category);
+
+    void
+    _M_replace_category(const _Impl*, const locale::id* const*);
+
+    void
+    _M_replace_facet(const _Impl*, const locale::id*);
+
+    void
+    _M_install_facet(const locale::id*, const facet*);
+
+    template<typename _Facet>
+      void
+      _M_init_facet(_Facet* __facet)
+      { _M_install_facet(&_Facet::id, __facet); }
+
+    void
+    _M_install_cache(const facet*, size_t);
+  };
+
+
+  /**
+   *  @brief  Test for the presence of a facet.
+   *
+   *  has_facet tests the locale argument for the presence of the facet type
+   *  provided as the template parameter.  Facets derived from the facet
+   *  parameter will also return true.
+   *
+   *  @param  Facet  The facet type to test the presence of.
+   *  @param  locale  The locale to test.
+   *  @return  true if locale contains a facet of type Facet, else false.
+  */
+  template<typename _Facet>
+    bool
+    has_facet(const locale& __loc) throw();
+
+  /**
+   *  @brief  Return a facet.
+   *
+   *  use_facet looks for and returns a reference to a facet of type Facet
+   *  where Facet is the template parameter.  If has_facet(locale) is true,
+   *  there is a suitable facet to return.  It throws std::bad_cast if the
+   *  locale doesn't contain a facet of type Facet.
+   *
+   *  @param  Facet  The facet type to access.
+   *  @param  locale  The locale to use.
+   *  @return  Reference to facet of type Facet.
+   *  @throw  std::bad_cast if locale doesn't contain a facet of type Facet.
+  */
+  template<typename _Facet>
+    const _Facet&
+    use_facet(const locale& __loc);
+
+
+  /**
+   *  @brief  Facet for localized string comparison.
+   *
+   *  This facet encapsulates the code to compare strings in a localized
+   *  manner.
+   *
+   *  The collate template uses protected virtual functions to provide
+   *  the actual results.  The public accessors forward the call to
+   *  the virtual functions.  These virtual functions are hooks for
+   *  developers to implement the behavior they require from the
+   *  collate facet.
+  */
+  template<typename _CharT>
+    class collate : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+
+    protected:
+      // Underlying "C" library locale information saved from
+      // initialization, needed by collate_byname as well.
+      __c_locale			_M_c_locale_collate;
+
+    public:
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      collate(size_t __refs = 0)
+      : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
+      { }
+
+      /**
+       *  @brief  Internal constructor. Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up new
+       *  locales.
+       *
+       *  @param cloc  The C locale.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      collate(__c_locale __cloc, size_t __refs = 0)
+      : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
+      { }
+
+      /**
+       *  @brief  Compare two strings.
+       *
+       *  This function compares two strings and returns the result by calling
+       *  collate::do_compare().
+       *
+       *  @param lo1  Start of string 1.
+       *  @param hi1  End of string 1.
+       *  @param lo2  Start of string 2.
+       *  @param hi2  End of string 2.
+       *  @return  1 if string1 > string2, -1 if string1 < string2, else 0.
+      */
+      int
+      compare(const _CharT* __lo1, const _CharT* __hi1,
+	      const _CharT* __lo2, const _CharT* __hi2) const
+      { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
+
+      /**
+       *  @brief  Transform string to comparable form.
+       *
+       *  This function is a wrapper for strxfrm functionality.  It takes the
+       *  input string and returns a modified string that can be directly
+       *  compared to other transformed strings.  In the C locale, this
+       *  function just returns a copy of the input string.  In some other
+       *  locales, it may replace two chars with one, change a char for
+       *  another, etc.  It does so by returning collate::do_transform().
+       *
+       *  @param lo  Start of string.
+       *  @param hi  End of string.
+       *  @return  Transformed string_type.
+      */
+      string_type
+      transform(const _CharT* __lo, const _CharT* __hi) const
+      { return this->do_transform(__lo, __hi); }
+
+      /**
+       *  @brief  Return hash of a string.
+       *
+       *  This function computes and returns a hash on the input string.  It
+       *  does so by returning collate::do_hash().
+       *
+       *  @param lo  Start of string.
+       *  @param hi  End of string.
+       *  @return  Hash value.
+      */
+      long
+      hash(const _CharT* __lo, const _CharT* __hi) const
+      { return this->do_hash(__lo, __hi); }
+
+      // Used to abstract out _CharT bits in virtual member functions, below.
+      int
+      _M_compare(const _CharT*, const _CharT*) const throw();
+
+      size_t
+      _M_transform(_CharT*, const _CharT*, size_t) const throw();
+
+  protected:
+      /// Destructor.
+      virtual
+      ~collate()
+      { _S_destroy_c_locale(_M_c_locale_collate); }
+
+      /**
+       *  @brief  Compare two strings.
+       *
+       *  This function is a hook for derived classes to change the value
+       *  returned.  @see compare().
+       *
+       *  @param lo1  Start of string 1.
+       *  @param hi1  End of string 1.
+       *  @param lo2  Start of string 2.
+       *  @param hi2  End of string 2.
+       *  @return  1 if string1 > string2, -1 if string1 < string2, else 0.
+      */
+      virtual int
+      do_compare(const _CharT* __lo1, const _CharT* __hi1,
+		 const _CharT* __lo2, const _CharT* __hi2) const;
+
+      /**
+       *  @brief  Transform string to comparable form.
+       *
+       *  This function is a hook for derived classes to change the value
+       *  returned.
+       *
+       *  @param lo1  Start of string 1.
+       *  @param hi1  End of string 1.
+       *  @param lo2  Start of string 2.
+       *  @param hi2  End of string 2.
+       *  @return  1 if string1 > string2, -1 if string1 < string2, else 0.
+      */
+      virtual string_type
+      do_transform(const _CharT* __lo, const _CharT* __hi) const;
+
+      /**
+       *  @brief  Return hash of a string.
+       *
+       *  This function computes and returns a hash on the input string.  This
+       *  function is a hook for derived classes to change the value returned.
+       *
+       *  @param lo  Start of string.
+       *  @param hi  End of string.
+       *  @return  Hash value.
+      */
+      virtual long
+      do_hash(const _CharT* __lo, const _CharT* __hi) const;
+    };
+
+  template<typename _CharT>
+    locale::id collate<_CharT>::id;
+
+  // Specializations.
+  template<>
+    int
+    collate<char>::_M_compare(const char*, const char*) const throw();
+
+  template<>
+    size_t
+    collate<char>::_M_transform(char*, const char*, size_t) const throw();
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    int
+    collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
+
+  template<>
+    size_t
+    collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
+#endif
+
+  /// class collate_byname [22.2.4.2].
+  template<typename _CharT>
+    class collate_byname : public collate<_CharT>
+    {
+    public:
+      //@{
+      /// Public typedefs
+      typedef _CharT               char_type;
+      typedef basic_string<_CharT> string_type;
+      //@}
+
+      explicit
+      collate_byname(const char* __s, size_t __refs = 0)
+      : collate<_CharT>(__refs)
+      {
+	if (__builtin_strcmp(__s, "C") != 0
+	    && __builtin_strcmp(__s, "POSIX") != 0)
+	  {
+	    this->_S_destroy_c_locale(this->_M_c_locale_collate);
+	    this->_S_create_c_locale(this->_M_c_locale_collate, __s);
+	  }
+      }
+
+    protected:
+      virtual
+      ~collate_byname() { }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+# include <bits/locale_classes.tcc>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.tcc
new file mode 100644
index 000000000..5b2901aea
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_classes.tcc
@@ -0,0 +1,273 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_classes.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#ifndef _LOCALE_CLASSES_TCC
+#define _LOCALE_CLASSES_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Facet>
+    locale::
+    locale(const locale& __other, _Facet* __f)
+    {
+      _M_impl = new _Impl(*__other._M_impl, 1);
+
+      __try
+	{ _M_impl->_M_install_facet(&_Facet::id, __f); }
+      __catch(...)
+	{
+	  _M_impl->_M_remove_reference();
+	  __throw_exception_again;
+	}
+      delete [] _M_impl->_M_names[0];
+      _M_impl->_M_names[0] = 0;   // Unnamed.
+    }
+
+  template<typename _Facet>
+    locale
+    locale::
+    combine(const locale& __other) const
+    {
+      _Impl* __tmp = new _Impl(*_M_impl, 1);
+      __try
+	{
+	  __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
+	}
+      __catch(...)
+	{
+	  __tmp->_M_remove_reference();
+	  __throw_exception_again;
+	}
+      return locale(__tmp);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    bool
+    locale::
+    operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
+	       const basic_string<_CharT, _Traits, _Alloc>& __s2) const
+    {
+      typedef std::collate<_CharT> __collate_type;
+      const __collate_type& __collate = use_facet<__collate_type>(*this);
+      return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
+				__s2.data(), __s2.data() + __s2.length()) < 0);
+    }
+
+
+  template<typename _Facet>
+    bool
+    has_facet(const locale& __loc) throw()
+    {
+      const size_t __i = _Facet::id._M_id();
+      const locale::facet** __facets = __loc._M_impl->_M_facets;
+      return (__i < __loc._M_impl->_M_facets_size
+#ifdef __GXX_RTTI
+	      && dynamic_cast<const _Facet*>(__facets[__i]));
+#else
+              && static_cast<const _Facet*>(__facets[__i]));
+#endif
+    }
+
+  template<typename _Facet>
+    const _Facet&
+    use_facet(const locale& __loc)
+    {
+      const size_t __i = _Facet::id._M_id();
+      const locale::facet** __facets = __loc._M_impl->_M_facets;
+      if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
+        __throw_bad_cast();
+#ifdef __GXX_RTTI
+      return dynamic_cast<const _Facet&>(*__facets[__i]);
+#else
+      return static_cast<const _Facet&>(*__facets[__i]);
+#endif
+    }
+
+
+  // Generic version does nothing.
+  template<typename _CharT>
+    int
+    collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
+    { return 0; }
+
+  // Generic version does nothing.
+  template<typename _CharT>
+    size_t
+    collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
+    { return 0; }
+
+  template<typename _CharT>
+    int
+    collate<_CharT>::
+    do_compare(const _CharT* __lo1, const _CharT* __hi1,
+	       const _CharT* __lo2, const _CharT* __hi2) const
+    {
+      // strcoll assumes zero-terminated strings so we make a copy
+      // and then put a zero at the end.
+      const string_type __one(__lo1, __hi1);
+      const string_type __two(__lo2, __hi2);
+
+      const _CharT* __p = __one.c_str();
+      const _CharT* __pend = __one.data() + __one.length();
+      const _CharT* __q = __two.c_str();
+      const _CharT* __qend = __two.data() + __two.length();
+
+      // strcoll stops when it sees a nul character so we break
+      // the strings into zero-terminated substrings and pass those
+      // to strcoll.
+      for (;;)
+	{
+	  const int __res = _M_compare(__p, __q);
+	  if (__res)
+	    return __res;
+
+	  __p += char_traits<_CharT>::length(__p);
+	  __q += char_traits<_CharT>::length(__q);
+	  if (__p == __pend && __q == __qend)
+	    return 0;
+	  else if (__p == __pend)
+	    return -1;
+	  else if (__q == __qend)
+	    return 1;
+
+	  __p++;
+	  __q++;
+	}
+    }
+
+  template<typename _CharT>
+    typename collate<_CharT>::string_type
+    collate<_CharT>::
+    do_transform(const _CharT* __lo, const _CharT* __hi) const
+    {
+      string_type __ret;
+
+      // strxfrm assumes zero-terminated strings so we make a copy
+      const string_type __str(__lo, __hi);
+
+      const _CharT* __p = __str.c_str();
+      const _CharT* __pend = __str.data() + __str.length();
+
+      size_t __len = (__hi - __lo) * 2;
+
+      _CharT* __c = new _CharT[__len];
+
+      __try
+	{
+	  // strxfrm stops when it sees a nul character so we break
+	  // the string into zero-terminated substrings and pass those
+	  // to strxfrm.
+	  for (;;)
+	    {
+	      // First try a buffer perhaps big enough.
+	      size_t __res = _M_transform(__c, __p, __len);
+	      // If the buffer was not large enough, try again with the
+	      // correct size.
+	      if (__res >= __len)
+		{
+		  __len = __res + 1;
+		  delete [] __c, __c = 0;
+		  __c = new _CharT[__len];
+		  __res = _M_transform(__c, __p, __len);
+		}
+
+	      __ret.append(__c, __res);
+	      __p += char_traits<_CharT>::length(__p);
+	      if (__p == __pend)
+		break;
+
+	      __p++;
+	      __ret.push_back(_CharT());
+	    }
+	}
+      __catch(...)
+	{
+	  delete [] __c;
+	  __throw_exception_again;
+	}
+
+      delete [] __c;
+
+      return __ret;
+    }
+
+  template<typename _CharT>
+    long
+    collate<_CharT>::
+    do_hash(const _CharT* __lo, const _CharT* __hi) const
+    {
+      unsigned long __val = 0;
+      for (; __lo < __hi; ++__lo)
+	__val =
+	  *__lo + ((__val << 7)
+		   | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
+				__digits - 7)));
+      return static_cast<long>(__val);
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class collate<char>;
+  extern template class collate_byname<char>;
+
+  extern template
+    const collate<char>&
+    use_facet<collate<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<collate<char> >(const locale&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class collate<wchar_t>;
+  extern template class collate_byname<wchar_t>;
+
+  extern template
+    const collate<wchar_t>&
+    use_facet<collate<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<collate<wchar_t> >(const locale&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.h
new file mode 100644
index 000000000..41732f3c4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.h
@@ -0,0 +1,2610 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_facets.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#ifndef _LOCALE_FACETS_H
+#define _LOCALE_FACETS_H 1
+
+#pragma GCC system_header
+
+#include <cwctype>	// For wctype_t
+#include <cctype>
+#include <bits/ctype_base.h>	
+#include <iosfwd>
+#include <bits/ios_base.h>  // For ios_base, ios_base::iostate
+#include <streambuf>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+#include <ext/numeric_traits.h>
+#include <bits/streambuf_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // NB: Don't instantiate required wchar_t facets if no wchar_t support.
+#ifdef _GLIBCXX_USE_WCHAR_T
+# define  _GLIBCXX_NUM_FACETS 28
+#else
+# define  _GLIBCXX_NUM_FACETS 14
+#endif
+
+  // Convert string to numeric value of type _Tp and store results.
+  // NB: This is specialized for all required types, there is no
+  // generic definition.
+  template<typename _Tp>
+    void
+    __convert_to_v(const char*, _Tp&, ios_base::iostate&,
+		   const __c_locale&) throw();
+
+  // Explicit specializations for required types.
+  template<>
+    void
+    __convert_to_v(const char*, float&, ios_base::iostate&,
+		   const __c_locale&) throw();
+
+  template<>
+    void
+    __convert_to_v(const char*, double&, ios_base::iostate&,
+		   const __c_locale&) throw();
+
+  template<>
+    void
+    __convert_to_v(const char*, long double&, ios_base::iostate&,
+		   const __c_locale&) throw();
+
+  // NB: __pad is a struct, rather than a function, so it can be
+  // partially-specialized.
+  template<typename _CharT, typename _Traits>
+    struct __pad
+    {
+      static void
+      _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
+	     const _CharT* __olds, streamsize __newlen, streamsize __oldlen);
+    };
+
+  // Used by both numeric and monetary facets.
+  // Inserts "group separator" characters into an array of characters.
+  // It's recursive, one iteration per group.  It moves the characters
+  // in the buffer this way: "xxxx12345" -> "12,345xxx".  Call this
+  // only with __gsize != 0.
+  template<typename _CharT>
+    _CharT*
+    __add_grouping(_CharT* __s, _CharT __sep,
+		   const char* __gbeg, size_t __gsize,
+		   const _CharT* __first, const _CharT* __last);
+
+  // This template permits specializing facet output code for
+  // ostreambuf_iterator.  For ostreambuf_iterator, sputn is
+  // significantly more efficient than incrementing iterators.
+  template<typename _CharT>
+    inline
+    ostreambuf_iterator<_CharT>
+    __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
+    {
+      __s._M_put(__ws, __len);
+      return __s;
+    }
+
+  // This is the unspecialized form of the template.
+  template<typename _CharT, typename _OutIter>
+    inline
+    _OutIter
+    __write(_OutIter __s, const _CharT* __ws, int __len)
+    {
+      for (int __j = 0; __j < __len; __j++, ++__s)
+	*__s = __ws[__j];
+      return __s;
+    }
+
+
+  // 22.2.1.1  Template class ctype
+  // Include host and configuration specific ctype enums for ctype_base.
+
+  /**
+   *  @brief  Common base for ctype facet
+   *
+   *  This template class provides implementations of the public functions
+   *  that forward to the protected virtual functions.
+   *
+   *  This template also provides abstract stubs for the protected virtual
+   *  functions.
+  */
+  template<typename _CharT>
+    class __ctype_abstract_base : public locale::facet, public ctype_base
+    {
+    public:
+      // Types:
+      /// Typedef for the template parameter
+      typedef _CharT char_type;
+
+      /**
+       *  @brief  Test char_type classification.
+       *
+       *  This function finds a mask M for @a c and compares it to mask @a m.
+       *  It does so by returning the value of ctype<char_type>::do_is().
+       *
+       *  @param c  The char_type to compare the mask of.
+       *  @param m  The mask to compare against.
+       *  @return  (M & m) != 0.
+      */
+      bool
+      is(mask __m, char_type __c) const
+      { return this->do_is(__m, __c); }
+
+      /**
+       *  @brief  Return a mask array.
+       *
+       *  This function finds the mask for each char_type in the range [lo,hi)
+       *  and successively writes it to vec.  vec must have as many elements
+       *  as the char array.  It does so by returning the value of
+       *  ctype<char_type>::do_is().
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param vec  Pointer to an array of mask storage.
+       *  @return  @a hi.
+      */
+      const char_type*
+      is(const char_type *__lo, const char_type *__hi, mask *__vec) const
+      { return this->do_is(__lo, __hi, __vec); }
+
+      /**
+       *  @brief  Find char_type matching a mask
+       *
+       *  This function searches for and returns the first char_type c in
+       *  [lo,hi) for which is(m,c) is true.  It does so by returning
+       *  ctype<char_type>::do_scan_is().
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to matching char_type if found, else @a hi.
+      */
+      const char_type*
+      scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
+      { return this->do_scan_is(__m, __lo, __hi); }
+
+      /**
+       *  @brief  Find char_type not matching a mask
+       *
+       *  This function searches for and returns the first char_type c in
+       *  [lo,hi) for which is(m,c) is false.  It does so by returning
+       *  ctype<char_type>::do_scan_not().
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to first char in range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to non-matching char if found, else @a hi.
+      */
+      const char_type*
+      scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+      { return this->do_scan_not(__m, __lo, __hi); }
+
+      /**
+       *  @brief  Convert to uppercase.
+       *
+       *  This function converts the argument to uppercase if possible.
+       *  If not possible (for example, '2'), returns the argument.  It does
+       *  so by returning ctype<char_type>::do_toupper().
+       *
+       *  @param c  The char_type to convert.
+       *  @return  The uppercase char_type if convertible, else @a c.
+      */
+      char_type
+      toupper(char_type __c) const
+      { return this->do_toupper(__c); }
+
+      /**
+       *  @brief  Convert array to uppercase.
+       *
+       *  This function converts each char_type in the range [lo,hi) to
+       *  uppercase if possible.  Other elements remain untouched.  It does so
+       *  by returning ctype<char_type>:: do_toupper(lo, hi).
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      const char_type*
+      toupper(char_type *__lo, const char_type* __hi) const
+      { return this->do_toupper(__lo, __hi); }
+
+      /**
+       *  @brief  Convert to lowercase.
+       *
+       *  This function converts the argument to lowercase if possible.  If
+       *  not possible (for example, '2'), returns the argument.  It does so
+       *  by returning ctype<char_type>::do_tolower(c).
+       *
+       *  @param c  The char_type to convert.
+       *  @return  The lowercase char_type if convertible, else @a c.
+      */
+      char_type
+      tolower(char_type __c) const
+      { return this->do_tolower(__c); }
+
+      /**
+       *  @brief  Convert array to lowercase.
+       *
+       *  This function converts each char_type in the range [lo,hi) to
+       *  lowercase if possible.  Other elements remain untouched.  It does so
+       *  by returning ctype<char_type>:: do_tolower(lo, hi).
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      const char_type*
+      tolower(char_type* __lo, const char_type* __hi) const
+      { return this->do_tolower(__lo, __hi); }
+
+      /**
+       *  @brief  Widen char to char_type
+       *
+       *  This function converts the char argument to char_type using the
+       *  simplest reasonable transformation.  It does so by returning
+       *  ctype<char_type>::do_widen(c).
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @return  The converted char_type.
+      */
+      char_type
+      widen(char __c) const
+      { return this->do_widen(__c); }
+
+      /**
+       *  @brief  Widen array to char_type
+       *
+       *  This function converts each char in the input to char_type using the
+       *  simplest reasonable transformation.  It does so by returning
+       *  ctype<char_type>::do_widen(c).
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      const char*
+      widen(const char* __lo, const char* __hi, char_type* __to) const
+      { return this->do_widen(__lo, __hi, __to); }
+
+      /**
+       *  @brief  Narrow char_type to char
+       *
+       *  This function converts the char_type to char using the simplest
+       *  reasonable transformation.  If the conversion fails, dfault is
+       *  returned instead.  It does so by returning
+       *  ctype<char_type>::do_narrow(c).
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char_type to convert.
+       *  @param dfault  Char to return if conversion fails.
+       *  @return  The converted char.
+      */
+      char
+      narrow(char_type __c, char __dfault) const
+      { return this->do_narrow(__c, __dfault); }
+
+      /**
+       *  @brief  Narrow array to char array
+       *
+       *  This function converts each char_type in the input to char using the
+       *  simplest reasonable transformation and writes the results to the
+       *  destination array.  For any char_type in the input that cannot be
+       *  converted, @a dfault is used instead.  It does so by returning
+       *  ctype<char_type>::do_narrow(lo, hi, dfault, to).
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param dfault  Char to use if conversion fails.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      const char_type*
+      narrow(const char_type* __lo, const char_type* __hi,
+	      char __dfault, char *__to) const
+      { return this->do_narrow(__lo, __hi, __dfault, __to); }
+
+    protected:
+      explicit
+      __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
+
+      virtual
+      ~__ctype_abstract_base() { }
+
+      /**
+       *  @brief  Test char_type classification.
+       *
+       *  This function finds a mask M for @a c and compares it to mask @a m.
+       *
+       *  do_is() is a hook for a derived facet to change the behavior of
+       *  classifying.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param c  The char_type to find the mask of.
+       *  @param m  The mask to compare against.
+       *  @return  (M & m) != 0.
+      */
+      virtual bool
+      do_is(mask __m, char_type __c) const = 0;
+
+      /**
+       *  @brief  Return a mask array.
+       *
+       *  This function finds the mask for each char_type in the range [lo,hi)
+       *  and successively writes it to vec.  vec must have as many elements
+       *  as the input.
+       *
+       *  do_is() is a hook for a derived facet to change the behavior of
+       *  classifying.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param vec  Pointer to an array of mask storage.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_is(const char_type* __lo, const char_type* __hi,
+	    mask* __vec) const = 0;
+
+      /**
+       *  @brief  Find char_type matching mask
+       *
+       *  This function searches for and returns the first char_type c in
+       *  [lo,hi) for which is(m,c) is true.
+       *
+       *  do_scan_is() is a hook for a derived facet to change the behavior of
+       *  match searching.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a matching char_type if found, else @a hi.
+      */
+      virtual const char_type*
+      do_scan_is(mask __m, const char_type* __lo,
+		 const char_type* __hi) const = 0;
+
+      /**
+       *  @brief  Find char_type not matching mask
+       *
+       *  This function searches for and returns a pointer to the first
+       *  char_type c of [lo,hi) for which is(m,c) is false.
+       *
+       *  do_scan_is() is a hook for a derived facet to change the behavior of
+       *  match searching.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a non-matching char_type if found, else @a hi.
+      */
+      virtual const char_type*
+      do_scan_not(mask __m, const char_type* __lo,
+		  const char_type* __hi) const = 0;
+
+      /**
+       *  @brief  Convert to uppercase.
+       *
+       *  This virtual function converts the char_type argument to uppercase
+       *  if possible.  If not possible (for example, '2'), returns the
+       *  argument.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The char_type to convert.
+       *  @return  The uppercase char_type if convertible, else @a c.
+      */
+      virtual char_type
+      do_toupper(char_type) const = 0;
+
+      /**
+       *  @brief  Convert array to uppercase.
+       *
+       *  This virtual function converts each char_type in the range [lo,hi)
+       *  to uppercase if possible.  Other elements remain untouched.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_toupper(char_type* __lo, const char_type* __hi) const = 0;
+
+      /**
+       *  @brief  Convert to lowercase.
+       *
+       *  This virtual function converts the argument to lowercase if
+       *  possible.  If not possible (for example, '2'), returns the argument.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The char_type to convert.
+       *  @return  The lowercase char_type if convertible, else @a c.
+      */
+      virtual char_type
+      do_tolower(char_type) const = 0;
+
+      /**
+       *  @brief  Convert array to lowercase.
+       *
+       *  This virtual function converts each char_type in the range [lo,hi)
+       *  to lowercase if possible.  Other elements remain untouched.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_tolower(char_type* __lo, const char_type* __hi) const = 0;
+
+      /**
+       *  @brief  Widen char
+       *
+       *  This virtual function converts the char to char_type using the
+       *  simplest reasonable transformation.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @return  The converted char_type
+      */
+      virtual char_type
+      do_widen(char) const = 0;
+
+      /**
+       *  @brief  Widen char array
+       *
+       *  This function converts each char in the input to char_type using the
+       *  simplest reasonable transformation.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start range.
+       *  @param hi  Pointer to end of range.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char*
+      do_widen(const char* __lo, const char* __hi,
+	       char_type* __dest) const = 0;
+
+      /**
+       *  @brief  Narrow char_type to char
+       *
+       *  This virtual function converts the argument to char using the
+       *  simplest reasonable transformation.  If the conversion fails, dfault
+       *  is returned instead.
+       *
+       *  do_narrow() is a hook for a derived facet to change the behavior of
+       *  narrowing.  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char_type to convert.
+       *  @param dfault  Char to return if conversion fails.
+       *  @return  The converted char.
+      */
+      virtual char
+      do_narrow(char_type, char __dfault) const = 0;
+
+      /**
+       *  @brief  Narrow char_type array to char
+       *
+       *  This virtual function converts each char_type in the range [lo,hi) to
+       *  char using the simplest reasonable transformation and writes the
+       *  results to the destination array.  For any element in the input that
+       *  cannot be converted, @a dfault is used instead.
+       *
+       *  do_narrow() is a hook for a derived facet to change the behavior of
+       *  narrowing.  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param dfault  Char to use if conversion fails.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_narrow(const char_type* __lo, const char_type* __hi,
+		char __dfault, char* __dest) const = 0;
+    };
+
+  /**
+   *  @brief  Primary class template ctype facet.
+   *  @ingroup locales
+   *
+   *  This template class defines classification and conversion functions for
+   *  character sets.  It wraps cctype functionality.  Ctype gets used by
+   *  streams for many I/O operations.
+   *
+   *  This template provides the protected virtual functions the developer
+   *  will have to replace in a derived class or specialization to make a
+   *  working facet.  The public functions that access them are defined in
+   *  __ctype_abstract_base, to allow for implementation flexibility.  See
+   *  ctype<wchar_t> for an example.  The functions are documented in
+   *  __ctype_abstract_base.
+   *
+   *  Note: implementations are provided for all the protected virtual
+   *  functions, but will likely not be useful.
+  */
+  template<typename _CharT>
+    class ctype : public __ctype_abstract_base<_CharT>
+    {
+    public:
+      // Types:
+      typedef _CharT			char_type;
+      typedef typename __ctype_abstract_base<_CharT>::mask mask;
+
+      /// The facet id for ctype<char_type>
+      static locale::id			id;
+
+      explicit
+      ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
+
+   protected:
+      virtual
+      ~ctype();
+
+      virtual bool
+      do_is(mask __m, char_type __c) const;
+
+      virtual const char_type*
+      do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
+
+      virtual const char_type*
+      do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
+
+      virtual const char_type*
+      do_scan_not(mask __m, const char_type* __lo,
+		  const char_type* __hi) const;
+
+      virtual char_type
+      do_toupper(char_type __c) const;
+
+      virtual const char_type*
+      do_toupper(char_type* __lo, const char_type* __hi) const;
+
+      virtual char_type
+      do_tolower(char_type __c) const;
+
+      virtual const char_type*
+      do_tolower(char_type* __lo, const char_type* __hi) const;
+
+      virtual char_type
+      do_widen(char __c) const;
+
+      virtual const char*
+      do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
+
+      virtual char
+      do_narrow(char_type, char __dfault) const;
+
+      virtual const char_type*
+      do_narrow(const char_type* __lo, const char_type* __hi,
+		char __dfault, char* __dest) const;
+    };
+
+  template<typename _CharT>
+    locale::id ctype<_CharT>::id;
+
+  /**
+   *  @brief  The ctype<char> specialization.
+   *  @ingroup locales
+   *
+   *  This class defines classification and conversion functions for
+   *  the char type.  It gets used by char streams for many I/O
+   *  operations.  The char specialization provides a number of
+   *  optimizations as well.
+  */
+  template<>
+    class ctype<char> : public locale::facet, public ctype_base
+    {
+    public:
+      // Types:
+      /// Typedef for the template parameter char.
+      typedef char		char_type;
+
+    protected:
+      // Data Members:
+      __c_locale		_M_c_locale_ctype;
+      bool			_M_del;
+      __to_type			_M_toupper;
+      __to_type			_M_tolower;
+      const mask*		_M_table;
+      mutable char		_M_widen_ok;
+      mutable char		_M_widen[1 + static_cast<unsigned char>(-1)];
+      mutable char		_M_narrow[1 + static_cast<unsigned char>(-1)];
+      mutable char		_M_narrow_ok;	// 0 uninitialized, 1 init,
+						// 2 memcpy can't be used
+
+    public:
+      /// The facet id for ctype<char>
+      static locale::id        id;
+      /// The size of the mask table.  It is SCHAR_MAX + 1.
+      static const size_t      table_size = 1 + static_cast<unsigned char>(-1);
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param table If non-zero, table is used as the per-char mask.
+       *               Else classic_table() is used.
+       *  @param del   If true, passes ownership of table to this facet.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
+
+      /**
+       *  @brief  Constructor performs static initialization.
+       *
+       *  This constructor is used to construct the initial C locale facet.
+       *
+       *  @param cloc  Handle to C locale data.
+       *  @param table If non-zero, table is used as the per-char mask.
+       *  @param del   If true, passes ownership of table to this facet.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
+	    size_t __refs = 0);
+
+      /**
+       *  @brief  Test char classification.
+       *
+       *  This function compares the mask table[c] to @a m.
+       *
+       *  @param c  The char to compare the mask of.
+       *  @param m  The mask to compare against.
+       *  @return  True if m & table[c] is true, false otherwise.
+      */
+      inline bool
+      is(mask __m, char __c) const;
+
+      /**
+       *  @brief  Return a mask array.
+       *
+       *  This function finds the mask for each char in the range [lo, hi) and
+       *  successively writes it to vec.  vec must have as many elements as
+       *  the char array.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param vec  Pointer to an array of mask storage.
+       *  @return  @a hi.
+      */
+      inline const char*
+      is(const char* __lo, const char* __hi, mask* __vec) const;
+
+      /**
+       *  @brief  Find char matching a mask
+       *
+       *  This function searches for and returns the first char in [lo,hi) for
+       *  which is(m,char) is true.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a matching char if found, else @a hi.
+      */
+      inline const char*
+      scan_is(mask __m, const char* __lo, const char* __hi) const;
+
+      /**
+       *  @brief  Find char not matching a mask
+       *
+       *  This function searches for and returns a pointer to the first char
+       *  in [lo,hi) for which is(m,char) is false.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a non-matching char if found, else @a hi.
+      */
+      inline const char*
+      scan_not(mask __m, const char* __lo, const char* __hi) const;
+
+      /**
+       *  @brief  Convert to uppercase.
+       *
+       *  This function converts the char argument to uppercase if possible.
+       *  If not possible (for example, '2'), returns the argument.
+       *
+       *  toupper() acts as if it returns ctype<char>::do_toupper(c).
+       *  do_toupper() must always return the same result for the same input.
+       *
+       *  @param c  The char to convert.
+       *  @return  The uppercase char if convertible, else @a c.
+      */
+      char_type
+      toupper(char_type __c) const
+      { return this->do_toupper(__c); }
+
+      /**
+       *  @brief  Convert array to uppercase.
+       *
+       *  This function converts each char in the range [lo,hi) to uppercase
+       *  if possible.  Other chars remain untouched.
+       *
+       *  toupper() acts as if it returns ctype<char>:: do_toupper(lo, hi).
+       *  do_toupper() must always return the same result for the same input.
+       *
+       *  @param lo  Pointer to first char in range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      const char_type*
+      toupper(char_type *__lo, const char_type* __hi) const
+      { return this->do_toupper(__lo, __hi); }
+
+      /**
+       *  @brief  Convert to lowercase.
+       *
+       *  This function converts the char argument to lowercase if possible.
+       *  If not possible (for example, '2'), returns the argument.
+       *
+       *  tolower() acts as if it returns ctype<char>::do_tolower(c).
+       *  do_tolower() must always return the same result for the same input.
+       *
+       *  @param c  The char to convert.
+       *  @return  The lowercase char if convertible, else @a c.
+      */
+      char_type
+      tolower(char_type __c) const
+      { return this->do_tolower(__c); }
+
+      /**
+       *  @brief  Convert array to lowercase.
+       *
+       *  This function converts each char in the range [lo,hi) to lowercase
+       *  if possible.  Other chars remain untouched.
+       *
+       *  tolower() acts as if it returns ctype<char>:: do_tolower(lo, hi).
+       *  do_tolower() must always return the same result for the same input.
+       *
+       *  @param lo  Pointer to first char in range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      const char_type*
+      tolower(char_type* __lo, const char_type* __hi) const
+      { return this->do_tolower(__lo, __hi); }
+
+      /**
+       *  @brief  Widen char
+       *
+       *  This function converts the char to char_type using the simplest
+       *  reasonable transformation.  For an underived ctype<char> facet, the
+       *  argument will be returned unchanged.
+       *
+       *  This function works as if it returns ctype<char>::do_widen(c).
+       *  do_widen() must always return the same result for the same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @return  The converted character.
+      */
+      char_type
+      widen(char __c) const
+      {
+	if (_M_widen_ok)
+	  return _M_widen[static_cast<unsigned char>(__c)];
+	this->_M_widen_init();
+	return this->do_widen(__c);
+      }
+
+      /**
+       *  @brief  Widen char array
+       *
+       *  This function converts each char in the input to char using the
+       *  simplest reasonable transformation.  For an underived ctype<char>
+       *  facet, the argument will be copied unchanged.
+       *
+       *  This function works as if it returns ctype<char>::do_widen(c).
+       *  do_widen() must always return the same result for the same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to first char in range.
+       *  @param hi  Pointer to end of range.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      const char*
+      widen(const char* __lo, const char* __hi, char_type* __to) const
+      {
+	if (_M_widen_ok == 1)
+	  {
+	    __builtin_memcpy(__to, __lo, __hi - __lo);
+	    return __hi;
+	  }
+	if (!_M_widen_ok)
+	  _M_widen_init();
+	return this->do_widen(__lo, __hi, __to);
+      }
+
+      /**
+       *  @brief  Narrow char
+       *
+       *  This function converts the char to char using the simplest
+       *  reasonable transformation.  If the conversion fails, dfault is
+       *  returned instead.  For an underived ctype<char> facet, @a c
+       *  will be returned unchanged.
+       *
+       *  This function works as if it returns ctype<char>::do_narrow(c).
+       *  do_narrow() must always return the same result for the same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @param dfault  Char to return if conversion fails.
+       *  @return  The converted character.
+      */
+      char
+      narrow(char_type __c, char __dfault) const
+      {
+	if (_M_narrow[static_cast<unsigned char>(__c)])
+	  return _M_narrow[static_cast<unsigned char>(__c)];
+	const char __t = do_narrow(__c, __dfault);
+	if (__t != __dfault)
+	  _M_narrow[static_cast<unsigned char>(__c)] = __t;
+	return __t;
+      }
+
+      /**
+       *  @brief  Narrow char array
+       *
+       *  This function converts each char in the input to char using the
+       *  simplest reasonable transformation and writes the results to the
+       *  destination array.  For any char in the input that cannot be
+       *  converted, @a dfault is used instead.  For an underived ctype<char>
+       *  facet, the argument will be copied unchanged.
+       *
+       *  This function works as if it returns ctype<char>::do_narrow(lo, hi,
+       *  dfault, to).  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param dfault  Char to use if conversion fails.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      const char_type*
+      narrow(const char_type* __lo, const char_type* __hi,
+	     char __dfault, char *__to) const
+      {
+	if (__builtin_expect(_M_narrow_ok == 1, true))
+	  {
+	    __builtin_memcpy(__to, __lo, __hi - __lo);
+	    return __hi;
+	  }
+	if (!_M_narrow_ok)
+	  _M_narrow_init();
+	return this->do_narrow(__lo, __hi, __dfault, __to);
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 695. ctype<char>::classic_table() not accessible.
+      /// Returns a pointer to the mask table provided to the constructor, or
+      /// the default from classic_table() if none was provided.
+      const mask*
+      table() const throw()
+      { return _M_table; }
+
+      /// Returns a pointer to the C locale mask table.
+      static const mask*
+      classic_table() throw();
+    protected:
+
+      /**
+       *  @brief  Destructor.
+       *
+       *  This function deletes table() if @a del was true in the
+       *  constructor.
+      */
+      virtual
+      ~ctype();
+
+      /**
+       *  @brief  Convert to uppercase.
+       *
+       *  This virtual function converts the char argument to uppercase if
+       *  possible.  If not possible (for example, '2'), returns the argument.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The char to convert.
+       *  @return  The uppercase char if convertible, else @a c.
+      */
+      virtual char_type
+      do_toupper(char_type) const;
+
+      /**
+       *  @brief  Convert array to uppercase.
+       *
+       *  This virtual function converts each char in the range [lo,hi) to
+       *  uppercase if possible.  Other chars remain untouched.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_toupper(char_type* __lo, const char_type* __hi) const;
+
+      /**
+       *  @brief  Convert to lowercase.
+       *
+       *  This virtual function converts the char argument to lowercase if
+       *  possible.  If not possible (for example, '2'), returns the argument.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The char to convert.
+       *  @return  The lowercase char if convertible, else @a c.
+      */
+      virtual char_type
+      do_tolower(char_type) const;
+
+      /**
+       *  @brief  Convert array to lowercase.
+       *
+       *  This virtual function converts each char in the range [lo,hi) to
+       *  lowercase if possible.  Other chars remain untouched.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to first char in range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_tolower(char_type* __lo, const char_type* __hi) const;
+
+      /**
+       *  @brief  Widen char
+       *
+       *  This virtual function converts the char to char using the simplest
+       *  reasonable transformation.  For an underived ctype<char> facet, the
+       *  argument will be returned unchanged.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @return  The converted character.
+      */
+      virtual char_type
+      do_widen(char __c) const
+      { return __c; }
+
+      /**
+       *  @brief  Widen char array
+       *
+       *  This function converts each char in the range [lo,hi) to char using
+       *  the simplest reasonable transformation.  For an underived
+       *  ctype<char> facet, the argument will be copied unchanged.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char*
+      do_widen(const char* __lo, const char* __hi, char_type* __dest) const
+      {
+	__builtin_memcpy(__dest, __lo, __hi - __lo);
+	return __hi;
+      }
+
+      /**
+       *  @brief  Narrow char
+       *
+       *  This virtual function converts the char to char using the simplest
+       *  reasonable transformation.  If the conversion fails, dfault is
+       *  returned instead.  For an underived ctype<char> facet, @a c will be
+       *  returned unchanged.
+       *
+       *  do_narrow() is a hook for a derived facet to change the behavior of
+       *  narrowing.  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @param dfault  Char to return if conversion fails.
+       *  @return  The converted char.
+      */
+      virtual char
+      do_narrow(char_type __c, char) const
+      { return __c; }
+
+      /**
+       *  @brief  Narrow char array to char array
+       *
+       *  This virtual function converts each char in the range [lo,hi) to
+       *  char using the simplest reasonable transformation and writes the
+       *  results to the destination array.  For any char in the input that
+       *  cannot be converted, @a dfault is used instead.  For an underived
+       *  ctype<char> facet, the argument will be copied unchanged.
+       *
+       *  do_narrow() is a hook for a derived facet to change the behavior of
+       *  narrowing.  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param dfault  Char to use if conversion fails.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_narrow(const char_type* __lo, const char_type* __hi,
+		char, char* __dest) const
+      {
+	__builtin_memcpy(__dest, __lo, __hi - __lo);
+	return __hi;
+      }
+
+    private:
+      void _M_narrow_init() const;
+      void _M_widen_init() const;
+    };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /**
+   *  @brief  The ctype<wchar_t> specialization.
+   *  @ingroup locales
+   *
+   *  This class defines classification and conversion functions for the
+   *  wchar_t type.  It gets used by wchar_t streams for many I/O operations.
+   *  The wchar_t specialization provides a number of optimizations as well.
+   *
+   *  ctype<wchar_t> inherits its public methods from
+   *  __ctype_abstract_base<wchar_t>.
+  */
+  template<>
+    class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
+    {
+    public:
+      // Types:
+      /// Typedef for the template parameter wchar_t.
+      typedef wchar_t		char_type;
+      typedef wctype_t		__wmask_type;
+
+    protected:
+      __c_locale		_M_c_locale_ctype;
+
+      // Pre-computed narrowed and widened chars.
+      bool                      _M_narrow_ok;
+      char                      _M_narrow[128];
+      wint_t                    _M_widen[1 + static_cast<unsigned char>(-1)];
+
+      // Pre-computed elements for do_is.
+      mask                      _M_bit[16];
+      __wmask_type              _M_wmask[16];
+
+    public:
+      // Data Members:
+      /// The facet id for ctype<wchar_t>
+      static locale::id		id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      ctype(size_t __refs = 0);
+
+      /**
+       *  @brief  Constructor performs static initialization.
+       *
+       *  This constructor is used to construct the initial C locale facet.
+       *
+       *  @param cloc  Handle to C locale data.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      ctype(__c_locale __cloc, size_t __refs = 0);
+
+    protected:
+      __wmask_type
+      _M_convert_to_wmask(const mask __m) const throw();
+
+      /// Destructor
+      virtual
+      ~ctype();
+
+      /**
+       *  @brief  Test wchar_t classification.
+       *
+       *  This function finds a mask M for @a c and compares it to mask @a m.
+       *
+       *  do_is() is a hook for a derived facet to change the behavior of
+       *  classifying.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param c  The wchar_t to find the mask of.
+       *  @param m  The mask to compare against.
+       *  @return  (M & m) != 0.
+      */
+      virtual bool
+      do_is(mask __m, char_type __c) const;
+
+      /**
+       *  @brief  Return a mask array.
+       *
+       *  This function finds the mask for each wchar_t in the range [lo,hi)
+       *  and successively writes it to vec.  vec must have as many elements
+       *  as the input.
+       *
+       *  do_is() is a hook for a derived facet to change the behavior of
+       *  classifying.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param vec  Pointer to an array of mask storage.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
+
+      /**
+       *  @brief  Find wchar_t matching mask
+       *
+       *  This function searches for and returns the first wchar_t c in
+       *  [lo,hi) for which is(m,c) is true.
+       *
+       *  do_scan_is() is a hook for a derived facet to change the behavior of
+       *  match searching.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a matching wchar_t if found, else @a hi.
+      */
+      virtual const char_type*
+      do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
+
+      /**
+       *  @brief  Find wchar_t not matching mask
+       *
+       *  This function searches for and returns a pointer to the first
+       *  wchar_t c of [lo,hi) for which is(m,c) is false.
+       *
+       *  do_scan_is() is a hook for a derived facet to change the behavior of
+       *  match searching.  do_is() must always return the same result for the
+       *  same input.
+       *
+       *  @param m  The mask to compare against.
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  Pointer to a non-matching wchar_t if found, else @a hi.
+      */
+      virtual const char_type*
+      do_scan_not(mask __m, const char_type* __lo,
+		  const char_type* __hi) const;
+
+      /**
+       *  @brief  Convert to uppercase.
+       *
+       *  This virtual function converts the wchar_t argument to uppercase if
+       *  possible.  If not possible (for example, '2'), returns the argument.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The wchar_t to convert.
+       *  @return  The uppercase wchar_t if convertible, else @a c.
+      */
+      virtual char_type
+      do_toupper(char_type) const;
+
+      /**
+       *  @brief  Convert array to uppercase.
+       *
+       *  This virtual function converts each wchar_t in the range [lo,hi) to
+       *  uppercase if possible.  Other elements remain untouched.
+       *
+       *  do_toupper() is a hook for a derived facet to change the behavior of
+       *  uppercasing.  do_toupper() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_toupper(char_type* __lo, const char_type* __hi) const;
+
+      /**
+       *  @brief  Convert to lowercase.
+       *
+       *  This virtual function converts the argument to lowercase if
+       *  possible.  If not possible (for example, '2'), returns the argument.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param c  The wchar_t to convert.
+       *  @return  The lowercase wchar_t if convertible, else @a c.
+      */
+      virtual char_type
+      do_tolower(char_type) const;
+
+      /**
+       *  @brief  Convert array to lowercase.
+       *
+       *  This virtual function converts each wchar_t in the range [lo,hi) to
+       *  lowercase if possible.  Other elements remain untouched.
+       *
+       *  do_tolower() is a hook for a derived facet to change the behavior of
+       *  lowercasing.  do_tolower() must always return the same result for
+       *  the same input.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_tolower(char_type* __lo, const char_type* __hi) const;
+
+      /**
+       *  @brief  Widen char to wchar_t
+       *
+       *  This virtual function converts the char to wchar_t using the
+       *  simplest reasonable transformation.  For an underived ctype<wchar_t>
+       *  facet, the argument will be cast to wchar_t.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The char to convert.
+       *  @return  The converted wchar_t.
+      */
+      virtual char_type
+      do_widen(char) const;
+
+      /**
+       *  @brief  Widen char array to wchar_t array
+       *
+       *  This function converts each char in the input to wchar_t using the
+       *  simplest reasonable transformation.  For an underived ctype<wchar_t>
+       *  facet, the argument will be copied, casting each element to wchar_t.
+       *
+       *  do_widen() is a hook for a derived facet to change the behavior of
+       *  widening.  do_widen() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start range.
+       *  @param hi  Pointer to end of range.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char*
+      do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
+
+      /**
+       *  @brief  Narrow wchar_t to char
+       *
+       *  This virtual function converts the argument to char using
+       *  the simplest reasonable transformation.  If the conversion
+       *  fails, dfault is returned instead.  For an underived
+       *  ctype<wchar_t> facet, @a c will be cast to char and
+       *  returned.
+       *
+       *  do_narrow() is a hook for a derived facet to change the
+       *  behavior of narrowing.  do_narrow() must always return the
+       *  same result for the same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param c  The wchar_t to convert.
+       *  @param dfault  Char to return if conversion fails.
+       *  @return  The converted char.
+      */
+      virtual char
+      do_narrow(char_type, char __dfault) const;
+
+      /**
+       *  @brief  Narrow wchar_t array to char array
+       *
+       *  This virtual function converts each wchar_t in the range [lo,hi) to
+       *  char using the simplest reasonable transformation and writes the
+       *  results to the destination array.  For any wchar_t in the input that
+       *  cannot be converted, @a dfault is used instead.  For an underived
+       *  ctype<wchar_t> facet, the argument will be copied, casting each
+       *  element to char.
+       *
+       *  do_narrow() is a hook for a derived facet to change the behavior of
+       *  narrowing.  do_narrow() must always return the same result for the
+       *  same input.
+       *
+       *  Note: this is not what you want for codepage conversions.  See
+       *  codecvt for that.
+       *
+       *  @param lo  Pointer to start of range.
+       *  @param hi  Pointer to end of range.
+       *  @param dfault  Char to use if conversion fails.
+       *  @param to  Pointer to the destination array.
+       *  @return  @a hi.
+      */
+      virtual const char_type*
+      do_narrow(const char_type* __lo, const char_type* __hi,
+		char __dfault, char* __dest) const;
+
+      // For use at construction time only.
+      void
+      _M_initialize_ctype() throw();
+    };
+#endif //_GLIBCXX_USE_WCHAR_T
+
+  /// class ctype_byname [22.2.1.2].
+  template<typename _CharT>
+    class ctype_byname : public ctype<_CharT>
+    {
+    public:
+      typedef typename ctype<_CharT>::mask  mask;
+
+      explicit
+      ctype_byname(const char* __s, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~ctype_byname() { };
+    };
+
+  /// 22.2.1.4  Class ctype_byname specializations.
+  template<>
+    class ctype_byname<char> : public ctype<char>
+    {
+    public:
+      explicit
+      ctype_byname(const char* __s, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~ctype_byname();
+    };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    class ctype_byname<wchar_t> : public ctype<wchar_t>
+    {
+    public:
+      explicit
+      ctype_byname(const char* __s, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~ctype_byname();
+    };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// Include host and configuration specific ctype inlines.
+#include <bits/ctype_inline.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 22.2.2  The numeric category.
+  class __num_base
+  {
+  public:
+    // NB: Code depends on the order of _S_atoms_out elements.
+    // Below are the indices into _S_atoms_out.
+    enum
+      {
+        _S_ominus,
+        _S_oplus,
+        _S_ox,
+        _S_oX,
+        _S_odigits,
+        _S_odigits_end = _S_odigits + 16,
+        _S_oudigits = _S_odigits_end,
+        _S_oudigits_end = _S_oudigits + 16,
+        _S_oe = _S_odigits + 14,  // For scientific notation, 'e'
+        _S_oE = _S_oudigits + 14, // For scientific notation, 'E'
+	_S_oend = _S_oudigits_end
+      };
+
+    // A list of valid numeric literals for output.  This array
+    // contains chars that will be passed through the current locale's
+    // ctype<_CharT>.widen() and then used to render numbers.
+    // For the standard "C" locale, this is
+    // "-+xX0123456789abcdef0123456789ABCDEF".
+    static const char* _S_atoms_out;
+
+    // String literal of acceptable (narrow) input, for num_get.
+    // "-+xX0123456789abcdefABCDEF"
+    static const char* _S_atoms_in;
+
+    enum
+    {
+      _S_iminus,
+      _S_iplus,
+      _S_ix,
+      _S_iX,
+      _S_izero,
+      _S_ie = _S_izero + 14,
+      _S_iE = _S_izero + 20,
+      _S_iend = 26
+    };
+
+    // num_put
+    // Construct and return valid scanf format for floating point types.
+    static void
+    _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
+  };
+
+  template<typename _CharT>
+    struct __numpunct_cache : public locale::facet
+    {
+      const char*			_M_grouping;
+      size_t                            _M_grouping_size;
+      bool				_M_use_grouping;
+      const _CharT*			_M_truename;
+      size_t                            _M_truename_size;
+      const _CharT*			_M_falsename;
+      size_t                            _M_falsename_size;
+      _CharT				_M_decimal_point;
+      _CharT				_M_thousands_sep;
+
+      // A list of valid numeric literals for output: in the standard
+      // "C" locale, this is "-+xX0123456789abcdef0123456789ABCDEF".
+      // This array contains the chars after having been passed
+      // through the current locale's ctype<_CharT>.widen().
+      _CharT				_M_atoms_out[__num_base::_S_oend];
+
+      // A list of valid numeric literals for input: in the standard
+      // "C" locale, this is "-+xX0123456789abcdefABCDEF"
+      // This array contains the chars after having been passed
+      // through the current locale's ctype<_CharT>.widen().
+      _CharT				_M_atoms_in[__num_base::_S_iend];
+
+      bool				_M_allocated;
+
+      __numpunct_cache(size_t __refs = 0)
+      : facet(__refs), _M_grouping(0), _M_grouping_size(0),
+	_M_use_grouping(false),
+	_M_truename(0), _M_truename_size(0), _M_falsename(0),
+	_M_falsename_size(0), _M_decimal_point(_CharT()),
+	_M_thousands_sep(_CharT()), _M_allocated(false)
+        { }
+
+      ~__numpunct_cache();
+
+      void
+      _M_cache(const locale& __loc);
+
+    private:
+      __numpunct_cache&
+      operator=(const __numpunct_cache&);
+      
+      explicit
+      __numpunct_cache(const __numpunct_cache&);
+    };
+
+  template<typename _CharT>
+    __numpunct_cache<_CharT>::~__numpunct_cache()
+    {
+      if (_M_allocated)
+	{
+	  delete [] _M_grouping;
+	  delete [] _M_truename;
+	  delete [] _M_falsename;
+	}
+    }
+
+  /**
+   *  @brief  Primary class template numpunct.
+   *  @ingroup locales
+   *
+   *  This facet stores several pieces of information related to printing and
+   *  scanning numbers, such as the decimal point character.  It takes a
+   *  template parameter specifying the char type.  The numpunct facet is
+   *  used by streams for many I/O operations involving numbers.
+   *
+   *  The numpunct template uses protected virtual functions to provide the
+   *  actual results.  The public accessors forward the call to the virtual
+   *  functions.  These virtual functions are hooks for developers to
+   *  implement the behavior they require from a numpunct facet.
+  */
+  template<typename _CharT>
+    class numpunct : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+      typedef __numpunct_cache<_CharT>  __cache_type;
+
+    protected:
+      __cache_type*			_M_data;
+
+    public:
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Numpunct constructor.
+       *
+       *  @param  refs  Refcount to pass to the base class.
+       */
+      explicit
+      numpunct(size_t __refs = 0)
+      : facet(__refs), _M_data(0)
+      { _M_initialize_numpunct(); }
+
+      /**
+       *  @brief  Internal constructor.  Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up the
+       *  predefined locale facets.
+       *
+       *  @param  cache  __numpunct_cache object.
+       *  @param  refs  Refcount to pass to the base class.
+       */
+      explicit
+      numpunct(__cache_type* __cache, size_t __refs = 0)
+      : facet(__refs), _M_data(__cache)
+      { _M_initialize_numpunct(); }
+
+      /**
+       *  @brief  Internal constructor.  Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up new
+       *  locales.
+       *
+       *  @param  cloc  The C locale.
+       *  @param  refs  Refcount to pass to the base class.
+       */
+      explicit
+      numpunct(__c_locale __cloc, size_t __refs = 0)
+      : facet(__refs), _M_data(0)
+      { _M_initialize_numpunct(__cloc); }
+
+      /**
+       *  @brief  Return decimal point character.
+       *
+       *  This function returns a char_type to use as a decimal point.  It
+       *  does so by returning returning
+       *  numpunct<char_type>::do_decimal_point().
+       *
+       *  @return  @a char_type representing a decimal point.
+      */
+      char_type
+      decimal_point() const
+      { return this->do_decimal_point(); }
+
+      /**
+       *  @brief  Return thousands separator character.
+       *
+       *  This function returns a char_type to use as a thousands
+       *  separator.  It does so by returning returning
+       *  numpunct<char_type>::do_thousands_sep().
+       *
+       *  @return  char_type representing a thousands separator.
+      */
+      char_type
+      thousands_sep() const
+      { return this->do_thousands_sep(); }
+
+      /**
+       *  @brief  Return grouping specification.
+       *
+       *  This function returns a string representing groupings for the
+       *  integer part of a number.  Groupings indicate where thousands
+       *  separators should be inserted in the integer part of a number.
+       *
+       *  Each char in the return string is interpret as an integer
+       *  rather than a character.  These numbers represent the number
+       *  of digits in a group.  The first char in the string
+       *  represents the number of digits in the least significant
+       *  group.  If a char is negative, it indicates an unlimited
+       *  number of digits for the group.  If more chars from the
+       *  string are required to group a number, the last char is used
+       *  repeatedly.
+       *
+       *  For example, if the grouping() returns "\003\002" and is
+       *  applied to the number 123456789, this corresponds to
+       *  12,34,56,789.  Note that if the string was "32", this would
+       *  put more than 50 digits into the least significant group if
+       *  the character set is ASCII.
+       *
+       *  The string is returned by calling
+       *  numpunct<char_type>::do_grouping().
+       *
+       *  @return  string representing grouping specification.
+      */
+      string
+      grouping() const
+      { return this->do_grouping(); }
+
+      /**
+       *  @brief  Return string representation of bool true.
+       *
+       *  This function returns a string_type containing the text
+       *  representation for true bool variables.  It does so by calling
+       *  numpunct<char_type>::do_truename().
+       *
+       *  @return  string_type representing printed form of true.
+      */
+      string_type
+      truename() const
+      { return this->do_truename(); }
+
+      /**
+       *  @brief  Return string representation of bool false.
+       *
+       *  This function returns a string_type containing the text
+       *  representation for false bool variables.  It does so by calling
+       *  numpunct<char_type>::do_falsename().
+       *
+       *  @return  string_type representing printed form of false.
+      */
+      string_type
+      falsename() const
+      { return this->do_falsename(); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~numpunct();
+
+      /**
+       *  @brief  Return decimal point character.
+       *
+       *  Returns a char_type to use as a decimal point.  This function is a
+       *  hook for derived classes to change the value returned.
+       *
+       *  @return  @a char_type representing a decimal point.
+      */
+      virtual char_type
+      do_decimal_point() const
+      { return _M_data->_M_decimal_point; }
+
+      /**
+       *  @brief  Return thousands separator character.
+       *
+       *  Returns a char_type to use as a thousands separator.  This function
+       *  is a hook for derived classes to change the value returned.
+       *
+       *  @return  @a char_type representing a thousands separator.
+      */
+      virtual char_type
+      do_thousands_sep() const
+      { return _M_data->_M_thousands_sep; }
+
+      /**
+       *  @brief  Return grouping specification.
+       *
+       *  Returns a string representing groupings for the integer part of a
+       *  number.  This function is a hook for derived classes to change the
+       *  value returned.  @see grouping() for details.
+       *
+       *  @return  String representing grouping specification.
+      */
+      virtual string
+      do_grouping() const
+      { return _M_data->_M_grouping; }
+
+      /**
+       *  @brief  Return string representation of bool true.
+       *
+       *  Returns a string_type containing the text representation for true
+       *  bool variables.  This function is a hook for derived classes to
+       *  change the value returned.
+       *
+       *  @return  string_type representing printed form of true.
+      */
+      virtual string_type
+      do_truename() const
+      { return _M_data->_M_truename; }
+
+      /**
+       *  @brief  Return string representation of bool false.
+       *
+       *  Returns a string_type containing the text representation for false
+       *  bool variables.  This function is a hook for derived classes to
+       *  change the value returned.
+       *
+       *  @return  string_type representing printed form of false.
+      */
+      virtual string_type
+      do_falsename() const
+      { return _M_data->_M_falsename; }
+
+      // For use at construction time only.
+      void
+      _M_initialize_numpunct(__c_locale __cloc = 0);
+    };
+
+  template<typename _CharT>
+    locale::id numpunct<_CharT>::id;
+
+  template<>
+    numpunct<char>::~numpunct();
+
+  template<>
+    void
+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    numpunct<wchar_t>::~numpunct();
+
+  template<>
+    void
+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
+#endif
+
+  /// class numpunct_byname [22.2.3.2].
+  template<typename _CharT>
+    class numpunct_byname : public numpunct<_CharT>
+    {
+    public:
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+
+      explicit
+      numpunct_byname(const char* __s, size_t __refs = 0)
+      : numpunct<_CharT>(__refs)
+      {
+	if (__builtin_strcmp(__s, "C") != 0
+	    && __builtin_strcmp(__s, "POSIX") != 0)
+	  {
+	    __c_locale __tmp;
+	    this->_S_create_c_locale(__tmp, __s);
+	    this->_M_initialize_numpunct(__tmp);
+	    this->_S_destroy_c_locale(__tmp);
+	  }
+      }
+
+    protected:
+      virtual
+      ~numpunct_byname() { }
+    };
+
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+
+  /**
+   *  @brief  Primary class template num_get.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to parse and return a number
+   *  from a string.  It is used by the istream numeric extraction
+   *  operators.
+   *
+   *  The num_get template uses protected virtual functions to provide the
+   *  actual results.  The public accessors forward the call to the virtual
+   *  functions.  These virtual functions are hooks for developers to
+   *  implement the behavior they require from the num_get facet.
+  */
+  template<typename _CharT, typename _InIter>
+    class num_get : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef _InIter			iter_type;
+      //@}
+
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      num_get(size_t __refs = 0) : facet(__refs) { }
+
+      /**
+       *  @brief  Numeric parsing.
+       *
+       *  Parses the input stream into the bool @a v.  It does so by calling
+       *  num_get::do_get().
+       *
+       *  If ios_base::boolalpha is set, attempts to read
+       *  ctype<CharT>::truename() or ctype<CharT>::falsename().  Sets
+       *  @a v to true or false if successful.  Sets err to
+       *  ios_base::failbit if reading the string fails.  Sets err to
+       *  ios_base::eofbit if the stream is emptied.
+       *
+       *  If ios_base::boolalpha is not set, proceeds as with reading a long,
+       *  except if the value is 1, sets @a v to true, if the value is 0, sets
+       *  @a v to false, and otherwise set err to ios_base::failbit.
+       *
+       *  @param  in  Start of input stream.
+       *  @param  end  End of input stream.
+       *  @param  io  Source of locale and flags.
+       *  @param  err  Error flags to set.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after reading.
+      */
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, bool& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      //@{
+      /**
+       *  @brief  Numeric parsing.
+       *
+       *  Parses the input stream into the integral variable @a v.  It does so
+       *  by calling num_get::do_get().
+       *
+       *  Parsing is affected by the flag settings in @a io.
+       *
+       *  The basic parse is affected by the value of io.flags() &
+       *  ios_base::basefield.  If equal to ios_base::oct, parses like the
+       *  scanf %o specifier.  Else if equal to ios_base::hex, parses like %X
+       *  specifier.  Else if basefield equal to 0, parses like the %i
+       *  specifier.  Otherwise, parses like %d for signed and %u for unsigned
+       *  types.  The matching type length modifier is also used.
+       *
+       *  Digit grouping is interpreted according to numpunct::grouping() and
+       *  numpunct::thousands_sep().  If the pattern of digit groups isn't
+       *  consistent, sets err to ios_base::failbit.
+       *
+       *  If parsing the string yields a valid value for @a v, @a v is set.
+       *  Otherwise, sets err to ios_base::failbit and leaves @a v unaltered.
+       *  Sets err to ios_base::eofbit if the stream is emptied.
+       *
+       *  @param  in  Start of input stream.
+       *  @param  end  End of input stream.
+       *  @param  io  Source of locale and flags.
+       *  @param  err  Error flags to set.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after reading.
+      */
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, long& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, unsigned short& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, unsigned int& __v)   const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, unsigned long& __v)  const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, long long& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, unsigned long long& __v)  const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+#endif
+      //@}
+
+      //@{
+      /**
+       *  @brief  Numeric parsing.
+       *
+       *  Parses the input stream into the integral variable @a v.  It does so
+       *  by calling num_get::do_get().
+       *
+       *  The input characters are parsed like the scanf %g specifier.  The
+       *  matching type length modifier is also used.
+       *
+       *  The decimal point character used is numpunct::decimal_point().
+       *  Digit grouping is interpreted according to numpunct::grouping() and
+       *  numpunct::thousands_sep().  If the pattern of digit groups isn't
+       *  consistent, sets err to ios_base::failbit.
+       *
+       *  If parsing the string yields a valid value for @a v, @a v is set.
+       *  Otherwise, sets err to ios_base::failbit and leaves @a v unaltered.
+       *  Sets err to ios_base::eofbit if the stream is emptied.
+       *
+       *  @param  in  Start of input stream.
+       *  @param  end  End of input stream.
+       *  @param  io  Source of locale and flags.
+       *  @param  err  Error flags to set.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after reading.
+      */
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, float& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, double& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, long double& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+      //@}
+
+      /**
+       *  @brief  Numeric parsing.
+       *
+       *  Parses the input stream into the pointer variable @a v.  It does so
+       *  by calling num_get::do_get().
+       *
+       *  The input characters are parsed like the scanf %p specifier.
+       *
+       *  Digit grouping is interpreted according to numpunct::grouping() and
+       *  numpunct::thousands_sep().  If the pattern of digit groups isn't
+       *  consistent, sets err to ios_base::failbit.
+       *
+       *  Note that the digit grouping effect for pointers is a bit ambiguous
+       *  in the standard and shouldn't be relied on.  See DR 344.
+       *
+       *  If parsing the string yields a valid value for @a v, @a v is set.
+       *  Otherwise, sets err to ios_base::failbit and leaves @a v unaltered.
+       *  Sets err to ios_base::eofbit if the stream is emptied.
+       *
+       *  @param  in  Start of input stream.
+       *  @param  end  End of input stream.
+       *  @param  io  Source of locale and flags.
+       *  @param  err  Error flags to set.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after reading.
+      */
+      iter_type
+      get(iter_type __in, iter_type __end, ios_base& __io,
+	  ios_base::iostate& __err, void*& __v) const
+      { return this->do_get(__in, __end, __io, __err, __v); }
+
+    protected:
+      /// Destructor.
+      virtual ~num_get() { }
+
+      iter_type
+      _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
+		       string&) const;
+
+      template<typename _ValueT>
+        iter_type
+        _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
+		       _ValueT&) const;
+
+      template<typename _CharT2>
+      typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
+        _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
+        {
+	  int __ret = -1;
+	  if (__len <= 10)
+	    {
+	      if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
+		__ret = __c - _CharT2('0');
+	    }
+	  else
+	    {
+	      if (__c >= _CharT2('0') && __c <= _CharT2('9'))
+		__ret = __c - _CharT2('0');
+	      else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
+		__ret = 10 + (__c - _CharT2('a'));
+	      else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
+		__ret = 10 + (__c - _CharT2('A'));
+	    }
+	  return __ret;
+	}
+
+      template<typename _CharT2>
+      typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value, 
+				      int>::__type
+        _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
+        {
+	  int __ret = -1;
+	  const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
+	  if (__q)
+	    {
+	      __ret = __q - __zero;
+	      if (__ret > 15)
+		__ret -= 6;
+	    }
+	  return __ret;
+	}
+
+      //@{
+      /**
+       *  @brief  Numeric parsing.
+       *
+       *  Parses the input stream into the variable @a v.  This function is a
+       *  hook for derived classes to change the value returned.  @see get()
+       *  for more details.
+       *
+       *  @param  in  Start of input stream.
+       *  @param  end  End of input stream.
+       *  @param  io  Source of locale and flags.
+       *  @param  err  Error flags to set.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after reading.
+      */
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
+
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, long& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, unsigned short& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, unsigned int& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, unsigned long& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, long long& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }	
+
+      virtual iter_type
+      do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, unsigned long long& __v) const
+      { return _M_extract_int(__beg, __end, __io, __err, __v); }
+#endif
+
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	     float&) const;
+
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	     double&) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	       double&) const;
+#else
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	     long double&) const;
+#endif
+
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	     void*&) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+	     long double&) const;
+#endif
+      //@}
+    };
+
+  template<typename _CharT, typename _InIter>
+    locale::id num_get<_CharT, _InIter>::id;
+
+
+  /**
+   *  @brief  Primary class template num_put.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to convert a number to a string.  It is
+   *  used by the ostream numeric insertion operators.
+   *
+   *  The num_put template uses protected virtual functions to provide the
+   *  actual results.  The public accessors forward the call to the virtual
+   *  functions.  These virtual functions are hooks for developers to
+   *  implement the behavior they require from the num_put facet.
+  */
+  template<typename _CharT, typename _OutIter>
+    class num_put : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT		char_type;
+      typedef _OutIter		iter_type;
+      //@}
+
+      /// Numpunct facet id.
+      static locale::id		id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      num_put(size_t __refs = 0) : facet(__refs) { }
+
+      /**
+       *  @brief  Numeric formatting.
+       *
+       *  Formats the boolean @a v and inserts it into a stream.  It does so
+       *  by calling num_put::do_put().
+       *
+       *  If ios_base::boolalpha is set, writes ctype<CharT>::truename() or
+       *  ctype<CharT>::falsename().  Otherwise formats @a v as an int.
+       *
+       *  @param  s  Stream to write to.
+       *  @param  io  Source of locale and flags.
+       *  @param  fill  Char_type to use for filling.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after writing.
+      */
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+      //@{
+      /**
+       *  @brief  Numeric formatting.
+       *
+       *  Formats the integral value @a v and inserts it into a
+       *  stream.  It does so by calling num_put::do_put().
+       *
+       *  Formatting is affected by the flag settings in @a io.
+       *
+       *  The basic format is affected by the value of io.flags() &
+       *  ios_base::basefield.  If equal to ios_base::oct, formats like the
+       *  printf %o specifier.  Else if equal to ios_base::hex, formats like
+       *  %x or %X with ios_base::uppercase unset or set respectively.
+       *  Otherwise, formats like %d, %ld, %lld for signed and %u, %lu, %llu
+       *  for unsigned values.  Note that if both oct and hex are set, neither
+       *  will take effect.
+       *
+       *  If ios_base::showpos is set, '+' is output before positive values.
+       *  If ios_base::showbase is set, '0' precedes octal values (except 0)
+       *  and '0[xX]' precedes hex values.
+       *
+       *  Thousands separators are inserted according to numpunct::grouping()
+       *  and numpunct::thousands_sep().  The decimal point character used is
+       *  numpunct::decimal_point().
+       *
+       *  If io.width() is non-zero, enough @a fill characters are inserted to
+       *  make the result at least that wide.  If
+       *  (io.flags() & ios_base::adjustfield) == ios_base::left, result is
+       *  padded at the end.  If ios_base::internal, then padding occurs
+       *  immediately after either a '+' or '-' or after '0x' or '0X'.
+       *  Otherwise, padding occurs at the beginning.
+       *
+       *  @param  s  Stream to write to.
+       *  @param  io  Source of locale and flags.
+       *  @param  fill  Char_type to use for filling.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after writing.
+      */
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill, long __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill,
+	  unsigned long __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill,
+	  unsigned long long __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+#endif
+      //@}
+
+      //@{
+      /**
+       *  @brief  Numeric formatting.
+       *
+       *  Formats the floating point value @a v and inserts it into a stream.
+       *  It does so by calling num_put::do_put().
+       *
+       *  Formatting is affected by the flag settings in @a io.
+       *
+       *  The basic format is affected by the value of io.flags() &
+       *  ios_base::floatfield.  If equal to ios_base::fixed, formats like the
+       *  printf %f specifier.  Else if equal to ios_base::scientific, formats
+       *  like %e or %E with ios_base::uppercase unset or set respectively.
+       *  Otherwise, formats like %g or %G depending on uppercase.  Note that
+       *  if both fixed and scientific are set, the effect will also be like
+       *  %g or %G.
+       *
+       *  The output precision is given by io.precision().  This precision is
+       *  capped at numeric_limits::digits10 + 2 (different for double and
+       *  long double).  The default precision is 6.
+       *
+       *  If ios_base::showpos is set, '+' is output before positive values.
+       *  If ios_base::showpoint is set, a decimal point will always be
+       *  output.
+       *
+       *  Thousands separators are inserted according to numpunct::grouping()
+       *  and numpunct::thousands_sep().  The decimal point character used is
+       *  numpunct::decimal_point().
+       *
+       *  If io.width() is non-zero, enough @a fill characters are inserted to
+       *  make the result at least that wide.  If
+       *  (io.flags() & ios_base::adjustfield) == ios_base::left, result is
+       *  padded at the end.  If ios_base::internal, then padding occurs
+       *  immediately after either a '+' or '-' or after '0x' or '0X'.
+       *  Otherwise, padding occurs at the beginning.
+       *
+       *  @param  s  Stream to write to.
+       *  @param  io  Source of locale and flags.
+       *  @param  fill  Char_type to use for filling.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after writing.
+      */
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill,
+	  long double __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+      //@}
+
+      /**
+       *  @brief  Numeric formatting.
+       *
+       *  Formats the pointer value @a v and inserts it into a stream.  It
+       *  does so by calling num_put::do_put().
+       *
+       *  This function formats @a v as an unsigned long with ios_base::hex
+       *  and ios_base::showbase set.
+       *
+       *  @param  s  Stream to write to.
+       *  @param  io  Source of locale and flags.
+       *  @param  fill  Char_type to use for filling.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after writing.
+      */
+      iter_type
+      put(iter_type __s, ios_base& __f, char_type __fill,
+	  const void* __v) const
+      { return this->do_put(__s, __f, __fill, __v); }
+
+    protected:
+      template<typename _ValueT>
+        iter_type
+        _M_insert_float(iter_type, ios_base& __io, char_type __fill,
+			char __mod, _ValueT __v) const;
+
+      void
+      _M_group_float(const char* __grouping, size_t __grouping_size,
+		     char_type __sep, const char_type* __p, char_type* __new,
+		     char_type* __cs, int& __len) const;
+
+      template<typename _ValueT>
+        iter_type
+        _M_insert_int(iter_type, ios_base& __io, char_type __fill,
+		      _ValueT __v) const;
+
+      void
+      _M_group_int(const char* __grouping, size_t __grouping_size,
+		   char_type __sep, ios_base& __io, char_type* __new,
+		   char_type* __cs, int& __len) const;
+
+      void
+      _M_pad(char_type __fill, streamsize __w, ios_base& __io,
+	     char_type* __new, const char_type* __cs, int& __len) const;
+
+      /// Destructor.
+      virtual
+      ~num_put() { };
+
+      //@{
+      /**
+       *  @brief  Numeric formatting.
+       *
+       *  These functions do the work of formatting numeric values and
+       *  inserting them into a stream. This function is a hook for derived
+       *  classes to change the value returned.
+       *
+       *  @param  s  Stream to write to.
+       *  @param  io  Source of locale and flags.
+       *  @param  fill  Char_type to use for filling.
+       *  @param  v  Value to format and insert.
+       *  @return  Iterator after writing.
+      */
+      virtual iter_type
+      do_put(iter_type, ios_base&, char_type __fill, bool __v) const;
+
+      virtual iter_type
+      do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
+      { return _M_insert_int(__s, __io, __fill, __v); }	
+
+      virtual iter_type
+      do_put(iter_type __s, ios_base& __io, char_type __fill,
+	     unsigned long __v) const
+      { return _M_insert_int(__s, __io, __fill, __v); }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      virtual iter_type
+      do_put(iter_type __s, ios_base& __io, char_type __fill,
+	     long long __v) const
+      { return _M_insert_int(__s, __io, __fill, __v); }
+
+      virtual iter_type
+      do_put(iter_type __s, ios_base& __io, char_type __fill,
+	     unsigned long long __v) const
+      { return _M_insert_int(__s, __io, __fill, __v); }
+#endif
+
+      virtual iter_type
+      do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      __do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+#else
+      virtual iter_type
+      do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+#endif
+
+      virtual iter_type
+      do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+#endif
+      //@}
+    };
+
+  template <typename _CharT, typename _OutIter>
+    locale::id num_put<_CharT, _OutIter>::id;
+
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  // Subclause convenience interfaces, inlines.
+  // NB: These are inline because, when used in a loop, some compilers
+  // can hoist the body out of the loop; then it's just as fast as the
+  // C is*() function.
+
+  /// Convenience interface to ctype.is(ctype_base::space, __c).
+  template<typename _CharT>
+    inline bool
+    isspace(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::print, __c).
+  template<typename _CharT>
+    inline bool
+    isprint(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::cntrl, __c).
+  template<typename _CharT>
+    inline bool
+    iscntrl(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::upper, __c).
+  template<typename _CharT>
+    inline bool
+    isupper(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::lower, __c).
+  template<typename _CharT>
+    inline bool 
+    islower(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::alpha, __c).
+  template<typename _CharT>
+    inline bool
+    isalpha(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::digit, __c).
+  template<typename _CharT>
+    inline bool
+    isdigit(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::punct, __c).
+  template<typename _CharT>
+    inline bool
+    ispunct(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::xdigit, __c).
+  template<typename _CharT>
+    inline bool
+    isxdigit(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::alnum, __c).
+  template<typename _CharT>
+    inline bool
+    isalnum(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
+
+  /// Convenience interface to ctype.is(ctype_base::graph, __c).
+  template<typename _CharT>
+    inline bool
+    isgraph(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
+
+  /// Convenience interface to ctype.toupper(__c).
+  template<typename _CharT>
+    inline _CharT
+    toupper(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
+
+  /// Convenience interface to ctype.tolower(__c).
+  template<typename _CharT>
+    inline _CharT
+    tolower(_CharT __c, const locale& __loc)
+    { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+# include <bits/locale_facets.tcc>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.tcc
new file mode 100644
index 000000000..80bda15ac
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets.tcc
@@ -0,0 +1,1362 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_facets.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+#ifndef _LOCALE_FACETS_TCC
+#define _LOCALE_FACETS_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Routine to access a cache for the facet.  If the cache didn't
+  // exist before, it gets constructed on the fly.
+  template<typename _Facet>
+    struct __use_cache
+    {
+      const _Facet*
+      operator() (const locale& __loc) const;
+    };
+
+  // Specializations.
+  template<typename _CharT>
+    struct __use_cache<__numpunct_cache<_CharT> >
+    {
+      const __numpunct_cache<_CharT>*
+      operator() (const locale& __loc) const
+      {
+	const size_t __i = numpunct<_CharT>::id._M_id();
+	const locale::facet** __caches = __loc._M_impl->_M_caches;
+	if (!__caches[__i])
+	  {
+	    __numpunct_cache<_CharT>* __tmp = 0;
+	    __try
+	      {
+		__tmp = new __numpunct_cache<_CharT>;
+		__tmp->_M_cache(__loc);
+	      }
+	    __catch(...)
+	      {
+		delete __tmp;
+		__throw_exception_again;
+	      }
+	    __loc._M_impl->_M_install_cache(__tmp, __i);
+	  }
+	return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
+      }
+    };
+
+  template<typename _CharT>
+    void
+    __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
+    {
+      _M_allocated = true;
+
+      const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
+
+      char* __grouping = 0;
+      _CharT* __truename = 0;
+      _CharT* __falsename = 0;
+      __try
+	{
+	  _M_grouping_size = __np.grouping().size();
+	  __grouping = new char[_M_grouping_size];
+	  __np.grouping().copy(__grouping, _M_grouping_size);
+	  _M_grouping = __grouping;
+	  _M_use_grouping = (_M_grouping_size
+			     && static_cast<signed char>(_M_grouping[0]) > 0
+			     && (_M_grouping[0]
+				 != __gnu_cxx::__numeric_traits<char>::__max));
+
+	  _M_truename_size = __np.truename().size();
+	  __truename = new _CharT[_M_truename_size];
+	  __np.truename().copy(__truename, _M_truename_size);
+	  _M_truename = __truename;
+
+	  _M_falsename_size = __np.falsename().size();
+	  __falsename = new _CharT[_M_falsename_size];
+	  __np.falsename().copy(__falsename, _M_falsename_size);
+	  _M_falsename = __falsename;
+
+	  _M_decimal_point = __np.decimal_point();
+	  _M_thousands_sep = __np.thousands_sep();
+
+	  const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
+	  __ct.widen(__num_base::_S_atoms_out,
+		     __num_base::_S_atoms_out
+		     + __num_base::_S_oend, _M_atoms_out);
+	  __ct.widen(__num_base::_S_atoms_in,
+		     __num_base::_S_atoms_in
+		     + __num_base::_S_iend, _M_atoms_in);
+	}
+      __catch(...)
+	{
+	  delete [] __grouping;
+	  delete [] __truename;
+	  delete [] __falsename;
+	  __throw_exception_again;
+	}
+    }
+
+  // Used by both numeric and monetary facets.
+  // Check to make sure that the __grouping_tmp string constructed in
+  // money_get or num_get matches the canonical grouping for a given
+  // locale.
+  // __grouping_tmp is parsed L to R
+  // 1,222,444 == __grouping_tmp of "\1\3\3"
+  // __grouping is parsed R to L
+  // 1,222,444 == __grouping of "\3" == "\3\3\3"
+  _GLIBCXX_PURE bool
+  __verify_grouping(const char* __grouping, size_t __grouping_size,
+		    const string& __grouping_tmp) throw ();
+
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
+		     ios_base::iostate& __err, string& __xtrc) const
+    {
+      typedef char_traits<_CharT>			__traits_type;
+      typedef __numpunct_cache<_CharT>                  __cache_type;
+      __use_cache<__cache_type> __uc;
+      const locale& __loc = __io._M_getloc();
+      const __cache_type* __lc = __uc(__loc);
+      const _CharT* __lit = __lc->_M_atoms_in;
+      char_type __c = char_type();
+
+      // True if __beg becomes equal to __end.
+      bool __testeof = __beg == __end;
+
+      // First check for sign.
+      if (!__testeof)
+	{
+	  __c = *__beg;
+	  const bool __plus = __c == __lit[__num_base::_S_iplus];
+	  if ((__plus || __c == __lit[__num_base::_S_iminus])
+	      && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+	      && !(__c == __lc->_M_decimal_point))
+	    {
+	      __xtrc += __plus ? '+' : '-';
+	      if (++__beg != __end)
+		__c = *__beg;
+	      else
+		__testeof = true;
+	    }
+	}
+
+      // Next, look for leading zeros.
+      bool __found_mantissa = false;
+      int __sep_pos = 0;
+      while (!__testeof)
+	{
+	  if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+	      || __c == __lc->_M_decimal_point)
+	    break;
+	  else if (__c == __lit[__num_base::_S_izero])
+	    {
+	      if (!__found_mantissa)
+		{
+		  __xtrc += '0';
+		  __found_mantissa = true;
+		}
+	      ++__sep_pos;
+
+	      if (++__beg != __end)
+		__c = *__beg;
+	      else
+		__testeof = true;
+	    }
+	  else
+	    break;
+	}
+
+      // Only need acceptable digits for floating point numbers.
+      bool __found_dec = false;
+      bool __found_sci = false;
+      string __found_grouping;
+      if (__lc->_M_use_grouping)
+	__found_grouping.reserve(32);
+      const char_type* __lit_zero = __lit + __num_base::_S_izero;
+
+      if (!__lc->_M_allocated)
+	// "C" locale
+	while (!__testeof)
+	  {
+	    const int __digit = _M_find(__lit_zero, 10, __c);
+	    if (__digit != -1)
+	      {
+		__xtrc += '0' + __digit;
+		__found_mantissa = true;
+	      }
+	    else if (__c == __lc->_M_decimal_point
+		     && !__found_dec && !__found_sci)
+	      {
+		__xtrc += '.';
+		__found_dec = true;
+	      }
+	    else if ((__c == __lit[__num_base::_S_ie] 
+		      || __c == __lit[__num_base::_S_iE])
+		     && !__found_sci && __found_mantissa)
+	      {
+		// Scientific notation.
+		__xtrc += 'e';
+		__found_sci = true;
+		
+		// Remove optional plus or minus sign, if they exist.
+		if (++__beg != __end)
+		  {
+		    __c = *__beg;
+		    const bool __plus = __c == __lit[__num_base::_S_iplus];
+		    if (__plus || __c == __lit[__num_base::_S_iminus])
+		      __xtrc += __plus ? '+' : '-';
+		    else
+		      continue;
+		  }
+		else
+		  {
+		    __testeof = true;
+		    break;
+		  }
+	      }
+	    else
+	      break;
+
+	    if (++__beg != __end)
+	      __c = *__beg;
+	    else
+	      __testeof = true;
+	  }
+      else
+	while (!__testeof)
+	  {
+	    // According to 22.2.2.1.2, p8-9, first look for thousands_sep
+	    // and decimal_point.
+	    if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+	      {
+		if (!__found_dec && !__found_sci)
+		  {
+		    // NB: Thousands separator at the beginning of a string
+		    // is a no-no, as is two consecutive thousands separators.
+		    if (__sep_pos)
+		      {
+			__found_grouping += static_cast<char>(__sep_pos);
+			__sep_pos = 0;
+		      }
+		    else
+		      {
+			// NB: __convert_to_v will not assign __v and will
+			// set the failbit.
+			__xtrc.clear();
+			break;
+		      }
+		  }
+		else
+		  break;
+	      }
+	    else if (__c == __lc->_M_decimal_point)
+	      {
+		if (!__found_dec && !__found_sci)
+		  {
+		    // If no grouping chars are seen, no grouping check
+		    // is applied. Therefore __found_grouping is adjusted
+		    // only if decimal_point comes after some thousands_sep.
+		    if (__found_grouping.size())
+		      __found_grouping += static_cast<char>(__sep_pos);
+		    __xtrc += '.';
+		    __found_dec = true;
+		  }
+		else
+		  break;
+	      }
+	    else
+	      {
+		const char_type* __q =
+		  __traits_type::find(__lit_zero, 10, __c);
+		if (__q)
+		  {
+		    __xtrc += '0' + (__q - __lit_zero);
+		    __found_mantissa = true;
+		    ++__sep_pos;
+		  }
+		else if ((__c == __lit[__num_base::_S_ie] 
+			  || __c == __lit[__num_base::_S_iE])
+			 && !__found_sci && __found_mantissa)
+		  {
+		    // Scientific notation.
+		    if (__found_grouping.size() && !__found_dec)
+		      __found_grouping += static_cast<char>(__sep_pos);
+		    __xtrc += 'e';
+		    __found_sci = true;
+		    
+		    // Remove optional plus or minus sign, if they exist.
+		    if (++__beg != __end)
+		      {
+			__c = *__beg;
+			const bool __plus = __c == __lit[__num_base::_S_iplus];
+			if ((__plus || __c == __lit[__num_base::_S_iminus])
+			    && !(__lc->_M_use_grouping
+				 && __c == __lc->_M_thousands_sep)
+			    && !(__c == __lc->_M_decimal_point))
+		      __xtrc += __plus ? '+' : '-';
+			else
+			  continue;
+		      }
+		    else
+		      {
+			__testeof = true;
+			break;
+		      }
+		  }
+		else
+		  break;
+	      }
+	    
+	    if (++__beg != __end)
+	      __c = *__beg;
+	    else
+	      __testeof = true;
+	  }
+
+      // Digit grouping is checked. If grouping and found_grouping don't
+      // match, then get very very upset, and set failbit.
+      if (__found_grouping.size())
+        {
+          // Add the ending grouping if a decimal or 'e'/'E' wasn't found.
+	  if (!__found_dec && !__found_sci)
+	    __found_grouping += static_cast<char>(__sep_pos);
+
+          if (!std::__verify_grouping(__lc->_M_grouping, 
+				      __lc->_M_grouping_size,
+				      __found_grouping))
+	    __err = ios_base::failbit;
+        }
+
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    template<typename _ValueT>
+      _InIter
+      num_get<_CharT, _InIter>::
+      _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
+		     ios_base::iostate& __err, _ValueT& __v) const
+      {
+        typedef char_traits<_CharT>			     __traits_type;
+	using __gnu_cxx::__add_unsigned;
+	typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+	typedef __numpunct_cache<_CharT>                     __cache_type;
+	__use_cache<__cache_type> __uc;
+	const locale& __loc = __io._M_getloc();
+	const __cache_type* __lc = __uc(__loc);
+	const _CharT* __lit = __lc->_M_atoms_in;
+	char_type __c = char_type();
+
+	// NB: Iff __basefield == 0, __base can change based on contents.
+	const ios_base::fmtflags __basefield = __io.flags()
+	                                       & ios_base::basefield;
+	const bool __oct = __basefield == ios_base::oct;
+	int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
+
+	// True if __beg becomes equal to __end.
+	bool __testeof = __beg == __end;
+
+	// First check for sign.
+	bool __negative = false;
+	if (!__testeof)
+	  {
+	    __c = *__beg;
+	    __negative = __c == __lit[__num_base::_S_iminus];
+	    if ((__negative || __c == __lit[__num_base::_S_iplus])
+		&& !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+		&& !(__c == __lc->_M_decimal_point))
+	      {
+		if (++__beg != __end)
+		  __c = *__beg;
+		else
+		  __testeof = true;
+	      }
+	  }
+
+	// Next, look for leading zeros and check required digits
+	// for base formats.
+	bool __found_zero = false;
+	int __sep_pos = 0;
+	while (!__testeof)
+	  {
+	    if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+		|| __c == __lc->_M_decimal_point)
+	      break;
+	    else if (__c == __lit[__num_base::_S_izero] 
+		     && (!__found_zero || __base == 10))
+	      {
+		__found_zero = true;
+		++__sep_pos;
+		if (__basefield == 0)
+		  __base = 8;
+		if (__base == 8)
+		  __sep_pos = 0;
+	      }
+	    else if (__found_zero
+		     && (__c == __lit[__num_base::_S_ix]
+			 || __c == __lit[__num_base::_S_iX]))
+	      {
+		if (__basefield == 0)
+		  __base = 16;
+		if (__base == 16)
+		  {
+		    __found_zero = false;
+		    __sep_pos = 0;
+		  }
+		else
+		  break;
+	      }
+	    else
+	      break;
+
+	    if (++__beg != __end)
+	      {
+		__c = *__beg;
+		if (!__found_zero)
+		  break;
+	      }
+	    else
+	      __testeof = true;
+	  }
+	
+	// At this point, base is determined. If not hex, only allow
+	// base digits as valid input.
+	const size_t __len = (__base == 16 ? __num_base::_S_iend
+			      - __num_base::_S_izero : __base);
+
+	// Extract.
+	string __found_grouping;
+	if (__lc->_M_use_grouping)
+	  __found_grouping.reserve(32);
+	bool __testfail = false;
+	bool __testoverflow = false;
+	const __unsigned_type __max =
+	  (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+	  ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
+	  : __gnu_cxx::__numeric_traits<_ValueT>::__max;
+	const __unsigned_type __smax = __max / __base;
+	__unsigned_type __result = 0;
+	int __digit = 0;
+	const char_type* __lit_zero = __lit + __num_base::_S_izero;
+
+	if (!__lc->_M_allocated)
+	  // "C" locale
+	  while (!__testeof)
+	    {
+	      __digit = _M_find(__lit_zero, __len, __c);
+	      if (__digit == -1)
+		break;
+	      
+	      if (__result > __smax)
+		__testoverflow = true;
+	      else
+		{
+		  __result *= __base;
+		  __testoverflow |= __result > __max - __digit;
+		  __result += __digit;
+		  ++__sep_pos;
+		}
+	      
+	      if (++__beg != __end)
+		__c = *__beg;
+	      else
+		__testeof = true;
+	    }
+	else
+	  while (!__testeof)
+	    {
+	      // According to 22.2.2.1.2, p8-9, first look for thousands_sep
+	      // and decimal_point.
+	      if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+		{
+		  // NB: Thousands separator at the beginning of a string
+		  // is a no-no, as is two consecutive thousands separators.
+		  if (__sep_pos)
+		    {
+		      __found_grouping += static_cast<char>(__sep_pos);
+		      __sep_pos = 0;
+		    }
+		  else
+		    {
+		      __testfail = true;
+		      break;
+		    }
+		}
+	      else if (__c == __lc->_M_decimal_point)
+		break;
+	      else
+		{
+		  const char_type* __q =
+		    __traits_type::find(__lit_zero, __len, __c);
+		  if (!__q)
+		    break;
+		  
+		  __digit = __q - __lit_zero;
+		  if (__digit > 15)
+		    __digit -= 6;
+		  if (__result > __smax)
+		    __testoverflow = true;
+		  else
+		    {
+		      __result *= __base;
+		      __testoverflow |= __result > __max - __digit;
+		      __result += __digit;
+		      ++__sep_pos;
+		    }
+		}
+	      
+	      if (++__beg != __end)
+		__c = *__beg;
+	      else
+		__testeof = true;
+	    }
+	
+	// Digit grouping is checked. If grouping and found_grouping don't
+	// match, then get very very upset, and set failbit.
+	if (__found_grouping.size())
+	  {
+	    // Add the ending grouping.
+	    __found_grouping += static_cast<char>(__sep_pos);
+
+	    if (!std::__verify_grouping(__lc->_M_grouping,
+					__lc->_M_grouping_size,
+					__found_grouping))
+	      __err = ios_base::failbit;
+	  }
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 23. Num_get overflow result.
+	if ((!__sep_pos && !__found_zero && !__found_grouping.size())
+	    || __testfail)
+	  {
+	    __v = 0;
+	    __err = ios_base::failbit;
+	  }
+	else if (__testoverflow)
+	  {
+	    if (__negative
+		&& __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+	      __v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
+	    else
+	      __v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
+	    __err = ios_base::failbit;
+	  }
+	else
+	  __v = __negative ? -__result : __result;
+
+	if (__testeof)
+	  __err |= ios_base::eofbit;
+	return __beg;
+      }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 17.  Bad bool parsing
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, ios_base& __io,
+           ios_base::iostate& __err, bool& __v) const
+    {
+      if (!(__io.flags() & ios_base::boolalpha))
+        {
+	  // Parse bool values as long.
+          // NB: We can't just call do_get(long) here, as it might
+          // refer to a derived class.
+	  long __l = -1;
+          __beg = _M_extract_int(__beg, __end, __io, __err, __l);
+	  if (__l == 0 || __l == 1)
+	    __v = bool(__l);
+	  else
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 23. Num_get overflow result.
+	      __v = true;
+	      __err = ios_base::failbit;
+	      if (__beg == __end)
+		__err |= ios_base::eofbit;
+	    }
+        }
+      else
+        {
+	  // Parse bool values as alphanumeric.
+	  typedef __numpunct_cache<_CharT>  __cache_type;
+	  __use_cache<__cache_type> __uc;
+	  const locale& __loc = __io._M_getloc();
+	  const __cache_type* __lc = __uc(__loc);
+
+	  bool __testf = true;
+	  bool __testt = true;
+	  bool __donef = __lc->_M_falsename_size == 0;
+	  bool __donet = __lc->_M_truename_size == 0;
+	  bool __testeof = false;
+	  size_t __n = 0;
+	  while (!__donef || !__donet)
+	    {
+	      if (__beg == __end)
+		{
+		  __testeof = true;
+		  break;
+		}
+
+	      const char_type __c = *__beg;
+
+	      if (!__donef)
+		__testf = __c == __lc->_M_falsename[__n];
+
+	      if (!__testf && __donet)
+		break;
+
+	      if (!__donet)
+		__testt = __c == __lc->_M_truename[__n];
+
+	      if (!__testt && __donef)
+		break;
+
+	      if (!__testt && !__testf)
+		break;
+
+	      ++__n;
+	      ++__beg;
+
+	      __donef = !__testf || __n >= __lc->_M_falsename_size;
+	      __donet = !__testt || __n >= __lc->_M_truename_size;
+	    }
+	  if (__testf && __n == __lc->_M_falsename_size && __n)
+	    {
+	      __v = false;
+	      if (__testt && __n == __lc->_M_truename_size)
+		__err = ios_base::failbit;
+	      else
+		__err = __testeof ? ios_base::eofbit : ios_base::goodbit;
+	    }
+	  else if (__testt && __n == __lc->_M_truename_size && __n)
+	    {
+	      __v = true;
+	      __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
+	    }
+	  else
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 23. Num_get overflow result.
+	      __v = false;
+	      __err = ios_base::failbit;
+	      if (__testeof)
+		__err |= ios_base::eofbit;
+	    }
+	}
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	   ios_base::iostate& __err, float& __v) const
+    {
+      string __xtrc;
+      __xtrc.reserve(32);
+      __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+      std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, ios_base& __io,
+           ios_base::iostate& __err, double& __v) const
+    {
+      string __xtrc;
+      __xtrc.reserve(32);
+      __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+      std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    __do_get(iter_type __beg, iter_type __end, ios_base& __io,
+	     ios_base::iostate& __err, double& __v) const
+    {
+      string __xtrc;
+      __xtrc.reserve(32);
+      __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+      std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+#endif
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, ios_base& __io,
+           ios_base::iostate& __err, long double& __v) const
+    {
+      string __xtrc;
+      __xtrc.reserve(32);
+      __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+      std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    num_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, ios_base& __io,
+           ios_base::iostate& __err, void*& __v) const
+    {
+      // Prepare for hex formatted input.
+      typedef ios_base::fmtflags        fmtflags;
+      const fmtflags __fmt = __io.flags();
+      __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
+
+      typedef __gnu_cxx::__conditional_type<(sizeof(void*)
+					     <= sizeof(unsigned long)),
+	unsigned long, unsigned long long>::__type _UIntPtrType;       
+
+      _UIntPtrType __ul;
+      __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
+
+      // Reset from hex formatted input.
+      __io.flags(__fmt);
+
+      __v = reinterpret_cast<void*>(__ul);
+      return __beg;
+    }
+
+  // For use by integer and floating-point types after they have been
+  // converted into a char_type string.
+  template<typename _CharT, typename _OutIter>
+    void
+    num_put<_CharT, _OutIter>::
+    _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
+	   _CharT* __new, const _CharT* __cs, int& __len) const
+    {
+      // [22.2.2.2.2] Stage 3.
+      // If necessary, pad.
+      __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
+						  __cs, __w, __len);
+      __len = static_cast<int>(__w);
+    }
+
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  template<typename _CharT, typename _ValueT>
+    int
+    __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
+		  ios_base::fmtflags __flags, bool __dec)
+    {
+      _CharT* __buf = __bufend;
+      if (__builtin_expect(__dec, true))
+	{
+	  // Decimal.
+	  do
+	    {
+	      *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
+	      __v /= 10;
+	    }
+	  while (__v != 0);
+	}
+      else if ((__flags & ios_base::basefield) == ios_base::oct)
+	{
+	  // Octal.
+	  do
+	    {
+	      *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
+	      __v >>= 3;
+	    }
+	  while (__v != 0);
+	}
+      else
+	{
+	  // Hex.
+	  const bool __uppercase = __flags & ios_base::uppercase;
+	  const int __case_offset = __uppercase ? __num_base::_S_oudigits
+	                                        : __num_base::_S_odigits;
+	  do
+	    {
+	      *--__buf = __lit[(__v & 0xf) + __case_offset];
+	      __v >>= 4;
+	    }
+	  while (__v != 0);
+	}
+      return __bufend - __buf;
+    }
+
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+
+  template<typename _CharT, typename _OutIter>
+    void
+    num_put<_CharT, _OutIter>::
+    _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
+		 ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
+    {
+      _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
+					__grouping_size, __cs, __cs + __len);
+      __len = __p - __new;
+    }
+  
+  template<typename _CharT, typename _OutIter>
+    template<typename _ValueT>
+      _OutIter
+      num_put<_CharT, _OutIter>::
+      _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
+		    _ValueT __v) const
+      {
+	using __gnu_cxx::__add_unsigned;
+	typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+	typedef __numpunct_cache<_CharT>	             __cache_type;
+	__use_cache<__cache_type> __uc;
+	const locale& __loc = __io._M_getloc();
+	const __cache_type* __lc = __uc(__loc);
+	const _CharT* __lit = __lc->_M_atoms_out;
+	const ios_base::fmtflags __flags = __io.flags();
+
+	// Long enough to hold hex, dec, and octal representations.
+	const int __ilen = 5 * sizeof(_ValueT);
+	_CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+							     * __ilen));
+
+	// [22.2.2.2.2] Stage 1, numeric conversion to character.
+	// Result is returned right-justified in the buffer.
+	const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
+	const bool __dec = (__basefield != ios_base::oct
+			    && __basefield != ios_base::hex);
+	const __unsigned_type __u = ((__v > 0 || !__dec)
+				     ? __unsigned_type(__v)
+				     : -__unsigned_type(__v));
+ 	int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
+	__cs += __ilen - __len;
+
+	// Add grouping, if necessary.
+	if (__lc->_M_use_grouping)
+	  {
+	    // Grouping can add (almost) as many separators as the number
+	    // of digits + space is reserved for numeric base or sign.
+	    _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+								  * (__len + 1)
+								  * 2));
+	    _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
+			 __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
+	    __cs = __cs2 + 2;
+	  }
+
+	// Complete Stage 1, prepend numeric base or sign.
+	if (__builtin_expect(__dec, true))
+	  {
+	    // Decimal.
+	    if (__v >= 0)
+	      {
+		if (bool(__flags & ios_base::showpos)
+		    && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+		  *--__cs = __lit[__num_base::_S_oplus], ++__len;
+	      }
+	    else
+	      *--__cs = __lit[__num_base::_S_ominus], ++__len;
+	  }
+	else if (bool(__flags & ios_base::showbase) && __v)
+	  {
+	    if (__basefield == ios_base::oct)
+	      *--__cs = __lit[__num_base::_S_odigits], ++__len;
+	    else
+	      {
+		// 'x' or 'X'
+		const bool __uppercase = __flags & ios_base::uppercase;
+		*--__cs = __lit[__num_base::_S_ox + __uppercase];
+		// '0'
+		*--__cs = __lit[__num_base::_S_odigits];
+		__len += 2;
+	      }
+	  }
+
+	// Pad.
+	const streamsize __w = __io.width();
+	if (__w > static_cast<streamsize>(__len))
+	  {
+	    _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+								  * __w));
+	    _M_pad(__fill, __w, __io, __cs3, __cs, __len);
+	    __cs = __cs3;
+	  }
+	__io.width(0);
+
+	// [22.2.2.2.2] Stage 4.
+	// Write resulting, fully-formatted string to output iterator.
+	return std::__write(__s, __cs, __len);
+      }
+
+  template<typename _CharT, typename _OutIter>
+    void
+    num_put<_CharT, _OutIter>::
+    _M_group_float(const char* __grouping, size_t __grouping_size,
+		   _CharT __sep, const _CharT* __p, _CharT* __new,
+		   _CharT* __cs, int& __len) const
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 282. What types does numpunct grouping refer to?
+      // Add grouping, if necessary.
+      const int __declen = __p ? __p - __cs : __len;
+      _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
+					 __grouping_size,
+					 __cs, __cs + __declen);
+
+      // Tack on decimal part.
+      int __newlen = __p2 - __new;
+      if (__p)
+	{
+	  char_traits<_CharT>::copy(__p2, __p, __len - __declen);
+	  __newlen += __len - __declen;
+	}
+      __len = __newlen;
+    }
+
+  // The following code uses vsnprintf (or vsprintf(), when
+  // _GLIBCXX_USE_C99 is not defined) to convert floating point values
+  // for insertion into a stream.  An optimization would be to replace
+  // them with code that works directly on a wide buffer and then use
+  // __pad to do the padding.  It would be good to replace them anyway
+  // to gain back the efficiency that C++ provides by knowing up front
+  // the type of the values to insert.  Also, sprintf is dangerous
+  // since may lead to accidental buffer overruns.  This
+  // implementation follows the C++ standard fairly directly as
+  // outlined in 22.2.2.2 [lib.locale.num.put]
+  template<typename _CharT, typename _OutIter>
+    template<typename _ValueT>
+      _OutIter
+      num_put<_CharT, _OutIter>::
+      _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
+		       _ValueT __v) const
+      {
+	typedef __numpunct_cache<_CharT>                __cache_type;
+	__use_cache<__cache_type> __uc;
+	const locale& __loc = __io._M_getloc();
+	const __cache_type* __lc = __uc(__loc);
+
+	// Use default precision if out of range.
+	const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
+
+	const int __max_digits =
+	  __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
+
+	// [22.2.2.2.2] Stage 1, numeric conversion to character.
+	int __len;
+	// Long enough for the max format spec.
+	char __fbuf[16];
+	__num_base::_S_format_float(__io, __fbuf, __mod);
+
+#ifdef _GLIBCXX_USE_C99
+	// First try a buffer perhaps big enough (most probably sufficient
+	// for non-ios_base::fixed outputs)
+	int __cs_size = __max_digits * 3;
+	char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+	__len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
+				      __fbuf, __prec, __v);
+
+	// If the buffer was not large enough, try again with the correct size.
+	if (__len >= __cs_size)
+	  {
+	    __cs_size = __len + 1;
+	    __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+	    __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
+					  __fbuf, __prec, __v);
+	  }
+#else
+	// Consider the possibility of long ios_base::fixed outputs
+	const bool __fixed = __io.flags() & ios_base::fixed;
+	const int __max_exp =
+	  __gnu_cxx::__numeric_traits<_ValueT>::__max_exponent10;
+
+	// The size of the output string is computed as follows.
+	// ios_base::fixed outputs may need up to __max_exp + 1 chars
+	// for the integer part + __prec chars for the fractional part
+	// + 3 chars for sign, decimal point, '\0'. On the other hand,
+	// for non-fixed outputs __max_digits * 2 + __prec chars are
+	// largely sufficient.
+	const int __cs_size = __fixed ? __max_exp + __prec + 4
+	                              : __max_digits * 2 + __prec;
+	char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+	__len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf, 
+				      __prec, __v);
+#endif
+
+	// [22.2.2.2.2] Stage 2, convert to char_type, using correct
+	// numpunct.decimal_point() values for '.' and adding grouping.
+	const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+	
+	_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+							     * __len));
+	__ctype.widen(__cs, __cs + __len, __ws);
+	
+	// Replace decimal point.
+	_CharT* __wp = 0;
+	const char* __p = char_traits<char>::find(__cs, __len, '.');
+	if (__p)
+	  {
+	    __wp = __ws + (__p - __cs);
+	    *__wp = __lc->_M_decimal_point;
+	  }
+	
+	// Add grouping, if necessary.
+	// N.B. Make sure to not group things like 2e20, i.e., no decimal
+	// point, scientific notation.
+	if (__lc->_M_use_grouping
+	    && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
+				      && __cs[1] >= '0' && __cs[2] >= '0')))
+	  {
+	    // Grouping can add (almost) as many separators as the
+	    // number of digits, but no more.
+	    _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+								  * __len * 2));
+	    
+	    streamsize __off = 0;
+	    if (__cs[0] == '-' || __cs[0] == '+')
+	      {
+		__off = 1;
+		__ws2[0] = __ws[0];
+		__len -= 1;
+	      }
+	    
+	    _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
+			   __lc->_M_thousands_sep, __wp, __ws2 + __off,
+			   __ws + __off, __len);
+	    __len += __off;
+	    
+	    __ws = __ws2;
+	  }
+
+	// Pad.
+	const streamsize __w = __io.width();
+	if (__w > static_cast<streamsize>(__len))
+	  {
+	    _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+								  * __w));
+	    _M_pad(__fill, __w, __io, __ws3, __ws, __len);
+	    __ws = __ws3;
+	  }
+	__io.width(0);
+	
+	// [22.2.2.2.2] Stage 4.
+	// Write resulting, fully-formatted string to output iterator.
+	return std::__write(__s, __ws, __len);
+      }
+  
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    num_put<_CharT, _OutIter>::
+    do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
+    {
+      const ios_base::fmtflags __flags = __io.flags();
+      if ((__flags & ios_base::boolalpha) == 0)
+        {
+          const long __l = __v;
+          __s = _M_insert_int(__s, __io, __fill, __l);
+        }
+      else
+        {
+	  typedef __numpunct_cache<_CharT>              __cache_type;
+	  __use_cache<__cache_type> __uc;
+	  const locale& __loc = __io._M_getloc();
+	  const __cache_type* __lc = __uc(__loc);
+
+	  const _CharT* __name = __v ? __lc->_M_truename
+	                             : __lc->_M_falsename;
+	  int __len = __v ? __lc->_M_truename_size
+	                  : __lc->_M_falsename_size;
+
+	  const streamsize __w = __io.width();
+	  if (__w > static_cast<streamsize>(__len))
+	    {
+	      const streamsize __plen = __w - __len;
+	      _CharT* __ps
+		= static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+							* __plen));
+
+	      char_traits<_CharT>::assign(__ps, __plen, __fill);
+	      __io.width(0);
+
+	      if ((__flags & ios_base::adjustfield) == ios_base::left)
+		{
+		  __s = std::__write(__s, __name, __len);
+		  __s = std::__write(__s, __ps, __plen);
+		}
+	      else
+		{
+		  __s = std::__write(__s, __ps, __plen);
+		  __s = std::__write(__s, __name, __len);
+		}
+	      return __s;
+	    }
+	  __io.width(0);
+	  __s = std::__write(__s, __name, __len);
+	}
+      return __s;
+    }
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    num_put<_CharT, _OutIter>::
+    do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+    { return _M_insert_float(__s, __io, __fill, char(), __v); }
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    num_put<_CharT, _OutIter>::
+    __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+    { return _M_insert_float(__s, __io, __fill, char(), __v); }
+#endif
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    num_put<_CharT, _OutIter>::
+    do_put(iter_type __s, ios_base& __io, char_type __fill,
+	   long double __v) const
+    { return _M_insert_float(__s, __io, __fill, 'L', __v); }
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    num_put<_CharT, _OutIter>::
+    do_put(iter_type __s, ios_base& __io, char_type __fill,
+           const void* __v) const
+    {
+      const ios_base::fmtflags __flags = __io.flags();
+      const ios_base::fmtflags __fmt = ~(ios_base::basefield
+					 | ios_base::uppercase);
+      __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
+
+      typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
+					     <= sizeof(unsigned long)),
+	unsigned long, unsigned long long>::__type _UIntPtrType;       
+
+      __s = _M_insert_int(__s, __io, __fill,
+			  reinterpret_cast<_UIntPtrType>(__v));
+      __io.flags(__flags);
+      return __s;
+    }
+
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  // Construct correctly padded string, as per 22.2.2.2.2
+  // Assumes
+  // __newlen > __oldlen
+  // __news is allocated for __newlen size
+
+  // NB: Of the two parameters, _CharT can be deduced from the
+  // function arguments. The other (_Traits) has to be explicitly specified.
+  template<typename _CharT, typename _Traits>
+    void
+    __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
+				   _CharT* __news, const _CharT* __olds,
+				   streamsize __newlen, streamsize __oldlen)
+    {
+      const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
+      const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
+
+      // Padding last.
+      if (__adjust == ios_base::left)
+	{
+	  _Traits::copy(__news, __olds, __oldlen);
+	  _Traits::assign(__news + __oldlen, __plen, __fill);
+	  return;
+	}
+
+      size_t __mod = 0;
+      if (__adjust == ios_base::internal)
+	{
+	  // Pad after the sign, if there is one.
+	  // Pad after 0[xX], if there is one.
+	  // Who came up with these rules, anyway? Jeeze.
+          const locale& __loc = __io._M_getloc();
+	  const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+	  if (__ctype.widen('-') == __olds[0]
+	      || __ctype.widen('+') == __olds[0])
+	    {
+	      __news[0] = __olds[0];
+	      __mod = 1;
+	      ++__news;
+	    }
+	  else if (__ctype.widen('0') == __olds[0]
+		   && __oldlen > 1
+		   && (__ctype.widen('x') == __olds[1]
+		       || __ctype.widen('X') == __olds[1]))
+	    {
+	      __news[0] = __olds[0];
+	      __news[1] = __olds[1];
+	      __mod = 2;
+	      __news += 2;
+	    }
+	  // else Padding first.
+	}
+      _Traits::assign(__news, __plen, __fill);
+      _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
+    }
+
+  template<typename _CharT>
+    _CharT*
+    __add_grouping(_CharT* __s, _CharT __sep,
+		   const char* __gbeg, size_t __gsize,
+		   const _CharT* __first, const _CharT* __last)
+    {
+      size_t __idx = 0;
+      size_t __ctr = 0;
+
+      while (__last - __first > __gbeg[__idx]
+	     && static_cast<signed char>(__gbeg[__idx]) > 0
+	     && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
+	{
+	  __last -= __gbeg[__idx];
+	  __idx < __gsize - 1 ? ++__idx : ++__ctr;
+	}
+
+      while (__first != __last)
+	*__s++ = *__first++;
+
+      while (__ctr--)
+	{
+	  *__s++ = __sep;	  
+	  for (char __i = __gbeg[__idx]; __i > 0; --__i)
+	    *__s++ = *__first++;
+	}
+
+      while (__idx--)
+	{
+	  *__s++ = __sep;	  
+	  for (char __i = __gbeg[__idx]; __i > 0; --__i)
+	    *__s++ = *__first++;
+	}
+
+      return __s;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class numpunct<char>;
+  extern template class numpunct_byname<char>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL num_get<char>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL num_put<char>;
+  extern template class ctype_byname<char>;
+
+  extern template
+    const ctype<char>&
+    use_facet<ctype<char> >(const locale&);
+
+  extern template
+    const numpunct<char>&
+    use_facet<numpunct<char> >(const locale&);
+
+  extern template
+    const num_put<char>&
+    use_facet<num_put<char> >(const locale&);
+
+  extern template
+    const num_get<char>&
+    use_facet<num_get<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<ctype<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<numpunct<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<num_put<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<num_get<char> >(const locale&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class numpunct<wchar_t>;
+  extern template class numpunct_byname<wchar_t>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL num_get<wchar_t>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL num_put<wchar_t>;
+  extern template class ctype_byname<wchar_t>;
+
+  extern template
+    const ctype<wchar_t>&
+    use_facet<ctype<wchar_t> >(const locale&);
+
+  extern template
+    const numpunct<wchar_t>&
+    use_facet<numpunct<wchar_t> >(const locale&);
+
+  extern template
+    const num_put<wchar_t>&
+    use_facet<num_put<wchar_t> >(const locale&);
+
+  extern template
+    const num_get<wchar_t>&
+    use_facet<num_get<wchar_t> >(const locale&);
+
+ extern template
+    bool
+    has_facet<ctype<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<numpunct<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<num_put<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<num_get<wchar_t> >(const locale&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.h
new file mode 100644
index 000000000..be7c1a42f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.h
@@ -0,0 +1,1938 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_facets_nonio.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#ifndef _LOCALE_FACETS_NONIO_H
+#define _LOCALE_FACETS_NONIO_H 1
+
+#pragma GCC system_header
+
+#include <ctime>	// For struct tm
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Time format ordering data.
+   *  @ingroup locales
+   *
+   *  This class provides an enum representing different orderings of
+   *  time: day, month, and year.
+  */
+  class time_base
+  {
+  public:
+    enum dateorder { no_order, dmy, mdy, ymd, ydm };
+  };
+
+  template<typename _CharT>
+    struct __timepunct_cache : public locale::facet
+    {
+      // List of all known timezones, with GMT first.
+      static const _CharT*		_S_timezones[14];
+
+      const _CharT*			_M_date_format;
+      const _CharT*			_M_date_era_format;
+      const _CharT*			_M_time_format;
+      const _CharT*			_M_time_era_format;
+      const _CharT*			_M_date_time_format;
+      const _CharT*			_M_date_time_era_format;
+      const _CharT*			_M_am;
+      const _CharT*			_M_pm;
+      const _CharT*			_M_am_pm_format;
+
+      // Day names, starting with "C"'s Sunday.
+      const _CharT*			_M_day1;
+      const _CharT*			_M_day2;
+      const _CharT*			_M_day3;
+      const _CharT*			_M_day4;
+      const _CharT*			_M_day5;
+      const _CharT*			_M_day6;
+      const _CharT*			_M_day7;
+
+      // Abbreviated day names, starting with "C"'s Sun.
+      const _CharT*			_M_aday1;
+      const _CharT*			_M_aday2;
+      const _CharT*			_M_aday3;
+      const _CharT*			_M_aday4;
+      const _CharT*			_M_aday5;
+      const _CharT*			_M_aday6;
+      const _CharT*			_M_aday7;
+
+      // Month names, starting with "C"'s January.
+      const _CharT*			_M_month01;
+      const _CharT*			_M_month02;
+      const _CharT*			_M_month03;
+      const _CharT*			_M_month04;
+      const _CharT*			_M_month05;
+      const _CharT*			_M_month06;
+      const _CharT*			_M_month07;
+      const _CharT*			_M_month08;
+      const _CharT*			_M_month09;
+      const _CharT*			_M_month10;
+      const _CharT*			_M_month11;
+      const _CharT*			_M_month12;
+
+      // Abbreviated month names, starting with "C"'s Jan.
+      const _CharT*			_M_amonth01;
+      const _CharT*			_M_amonth02;
+      const _CharT*			_M_amonth03;
+      const _CharT*			_M_amonth04;
+      const _CharT*			_M_amonth05;
+      const _CharT*			_M_amonth06;
+      const _CharT*			_M_amonth07;
+      const _CharT*			_M_amonth08;
+      const _CharT*			_M_amonth09;
+      const _CharT*			_M_amonth10;
+      const _CharT*			_M_amonth11;
+      const _CharT*			_M_amonth12;
+
+      bool				_M_allocated;
+
+      __timepunct_cache(size_t __refs = 0) : facet(__refs),
+      _M_date_format(0), _M_date_era_format(0), _M_time_format(0),
+      _M_time_era_format(0), _M_date_time_format(0),
+      _M_date_time_era_format(0), _M_am(0), _M_pm(0),
+      _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0),
+      _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0),
+      _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0),
+      _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0),
+      _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0),
+      _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0),
+      _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0),
+      _M_amonth02(0), _M_amonth03(0), _M_amonth04(0),
+      _M_amonth05(0), _M_amonth06(0), _M_amonth07(0),
+      _M_amonth08(0), _M_amonth09(0), _M_amonth10(0),
+      _M_amonth11(0), _M_amonth12(0), _M_allocated(false)
+      { }
+
+      ~__timepunct_cache();
+
+      void
+      _M_cache(const locale& __loc);
+
+    private:
+      __timepunct_cache&
+      operator=(const __timepunct_cache&);
+      
+      explicit
+      __timepunct_cache(const __timepunct_cache&);
+    };
+
+  template<typename _CharT>
+    __timepunct_cache<_CharT>::~__timepunct_cache()
+    {
+      if (_M_allocated)
+	{
+	  // Unused.
+	}
+    }
+
+  // Specializations.
+  template<>
+    const char*
+    __timepunct_cache<char>::_S_timezones[14];
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    const wchar_t*
+    __timepunct_cache<wchar_t>::_S_timezones[14];
+#endif
+
+  // Generic.
+  template<typename _CharT>
+    const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
+
+  template<typename _CharT>
+    class __timepunct : public locale::facet
+    {
+    public:
+      // Types:
+      typedef _CharT			__char_type;
+      typedef basic_string<_CharT>	__string_type;
+      typedef __timepunct_cache<_CharT>	__cache_type;
+
+    protected:
+      __cache_type*			_M_data;
+      __c_locale			_M_c_locale_timepunct;
+      const char*			_M_name_timepunct;
+
+    public:
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      explicit
+      __timepunct(size_t __refs = 0);
+
+      explicit
+      __timepunct(__cache_type* __cache, size_t __refs = 0);
+
+      /**
+       *  @brief  Internal constructor. Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up new
+       *  locales.
+       *
+       *  @param cloc  The C locale.
+       *  @param s  The name of a locale.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);
+
+      // FIXME: for error checking purposes _M_put should return the return
+      // value of strftime/wcsftime.
+      void
+      _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
+	     const tm* __tm) const throw ();
+
+      void
+      _M_date_formats(const _CharT** __date) const
+      {
+	// Always have default first.
+	__date[0] = _M_data->_M_date_format;
+	__date[1] = _M_data->_M_date_era_format;
+      }
+
+      void
+      _M_time_formats(const _CharT** __time) const
+      {
+	// Always have default first.
+	__time[0] = _M_data->_M_time_format;
+	__time[1] = _M_data->_M_time_era_format;
+      }
+
+      void
+      _M_date_time_formats(const _CharT** __dt) const
+      {
+	// Always have default first.
+	__dt[0] = _M_data->_M_date_time_format;
+	__dt[1] = _M_data->_M_date_time_era_format;
+      }
+
+      void
+      _M_am_pm_format(const _CharT* __ampm) const
+      { __ampm = _M_data->_M_am_pm_format; }
+
+      void
+      _M_am_pm(const _CharT** __ampm) const
+      {
+	__ampm[0] = _M_data->_M_am;
+	__ampm[1] = _M_data->_M_pm;
+      }
+
+      void
+      _M_days(const _CharT** __days) const
+      {
+	__days[0] = _M_data->_M_day1;
+	__days[1] = _M_data->_M_day2;
+	__days[2] = _M_data->_M_day3;
+	__days[3] = _M_data->_M_day4;
+	__days[4] = _M_data->_M_day5;
+	__days[5] = _M_data->_M_day6;
+	__days[6] = _M_data->_M_day7;
+      }
+
+      void
+      _M_days_abbreviated(const _CharT** __days) const
+      {
+	__days[0] = _M_data->_M_aday1;
+	__days[1] = _M_data->_M_aday2;
+	__days[2] = _M_data->_M_aday3;
+	__days[3] = _M_data->_M_aday4;
+	__days[4] = _M_data->_M_aday5;
+	__days[5] = _M_data->_M_aday6;
+	__days[6] = _M_data->_M_aday7;
+      }
+
+      void
+      _M_months(const _CharT** __months) const
+      {
+	__months[0] = _M_data->_M_month01;
+	__months[1] = _M_data->_M_month02;
+	__months[2] = _M_data->_M_month03;
+	__months[3] = _M_data->_M_month04;
+	__months[4] = _M_data->_M_month05;
+	__months[5] = _M_data->_M_month06;
+	__months[6] = _M_data->_M_month07;
+	__months[7] = _M_data->_M_month08;
+	__months[8] = _M_data->_M_month09;
+	__months[9] = _M_data->_M_month10;
+	__months[10] = _M_data->_M_month11;
+	__months[11] = _M_data->_M_month12;
+      }
+
+      void
+      _M_months_abbreviated(const _CharT** __months) const
+      {
+	__months[0] = _M_data->_M_amonth01;
+	__months[1] = _M_data->_M_amonth02;
+	__months[2] = _M_data->_M_amonth03;
+	__months[3] = _M_data->_M_amonth04;
+	__months[4] = _M_data->_M_amonth05;
+	__months[5] = _M_data->_M_amonth06;
+	__months[6] = _M_data->_M_amonth07;
+	__months[7] = _M_data->_M_amonth08;
+	__months[8] = _M_data->_M_amonth09;
+	__months[9] = _M_data->_M_amonth10;
+	__months[10] = _M_data->_M_amonth11;
+	__months[11] = _M_data->_M_amonth12;
+      }
+
+    protected:
+      virtual
+      ~__timepunct();
+
+      // For use at construction time only.
+      void
+      _M_initialize_timepunct(__c_locale __cloc = 0);
+    };
+
+  template<typename _CharT>
+    locale::id __timepunct<_CharT>::id;
+
+  // Specializations.
+  template<>
+    void
+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
+
+  template<>
+    void
+    __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    void
+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
+
+  template<>
+    void
+    __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
+				 const tm*) const throw ();
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+  // Include host and configuration specific timepunct functions.
+  #include <bits/time_members.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Primary class template time_get.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to parse and return a date or
+   *  time from a string.  It is used by the istream numeric
+   *  extraction operators.
+   *
+   *  The time_get template uses protected virtual functions to provide the
+   *  actual results.  The public accessors forward the call to the virtual
+   *  functions.  These virtual functions are hooks for developers to
+   *  implement the behavior they require from the time_get facet.
+  */
+  template<typename _CharT, typename _InIter>
+    class time_get : public locale::facet, public time_base
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef _InIter			iter_type;
+      //@}
+      typedef basic_string<_CharT>	__string_type;
+
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      time_get(size_t __refs = 0)
+      : facet (__refs) { }
+
+      /**
+       *  @brief  Return preferred order of month, day, and year.
+       *
+       *  This function returns an enum from timebase::dateorder giving the
+       *  preferred ordering if the format @a x given to time_put::put() only
+       *  uses month, day, and year.  If the format @a x for the associated
+       *  locale uses other fields, this function returns
+       *  timebase::dateorder::noorder.
+       *
+       *  NOTE: The library always returns noorder at the moment.
+       *
+       *  @return  A member of timebase::dateorder.
+      */
+      dateorder
+      date_order()  const
+      { return this->do_date_order(); }
+
+      /**
+       *  @brief  Parse input time string.
+       *
+       *  This function parses a time according to the format @a X and puts the
+       *  results into a user-supplied struct tm.  The result is returned by
+       *  calling time_get::do_get_time().
+       *
+       *  If there is a valid time string according to format @a X, @a tm will
+       *  be filled in accordingly and the returned iterator will point to the
+       *  first character beyond the time string.  If an error occurs before
+       *  the end, err |= ios_base::failbit.  If parsing reads all the
+       *  characters, err |= ios_base::eofbit.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond time string.
+      */
+      iter_type
+      get_time(iter_type __beg, iter_type __end, ios_base& __io,
+	       ios_base::iostate& __err, tm* __tm)  const
+      { return this->do_get_time(__beg, __end, __io, __err, __tm); }
+
+      /**
+       *  @brief  Parse input date string.
+       *
+       *  This function parses a date according to the format @a x and puts the
+       *  results into a user-supplied struct tm.  The result is returned by
+       *  calling time_get::do_get_date().
+       *
+       *  If there is a valid date string according to format @a x, @a tm will
+       *  be filled in accordingly and the returned iterator will point to the
+       *  first character beyond the date string.  If an error occurs before
+       *  the end, err |= ios_base::failbit.  If parsing reads all the
+       *  characters, err |= ios_base::eofbit.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond date string.
+      */
+      iter_type
+      get_date(iter_type __beg, iter_type __end, ios_base& __io,
+	       ios_base::iostate& __err, tm* __tm)  const
+      { return this->do_get_date(__beg, __end, __io, __err, __tm); }
+
+      /**
+       *  @brief  Parse input weekday string.
+       *
+       *  This function parses a weekday name and puts the results into a
+       *  user-supplied struct tm.  The result is returned by calling
+       *  time_get::do_get_weekday().
+       *
+       *  Parsing starts by parsing an abbreviated weekday name.  If a valid
+       *  abbreviation is followed by a character that would lead to the full
+       *  weekday name, parsing continues until the full name is found or an
+       *  error occurs.  Otherwise parsing finishes at the end of the
+       *  abbreviated name.
+       *
+       *  If an error occurs before the end, err |= ios_base::failbit.  If
+       *  parsing reads all the characters, err |= ios_base::eofbit.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond weekday name.
+      */
+      iter_type
+      get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
+		  ios_base::iostate& __err, tm* __tm) const
+      { return this->do_get_weekday(__beg, __end, __io, __err, __tm); }
+
+      /**
+       *  @brief  Parse input month string.
+       *
+       *  This function parses a month name and puts the results into a
+       *  user-supplied struct tm.  The result is returned by calling
+       *  time_get::do_get_monthname().
+       *
+       *  Parsing starts by parsing an abbreviated month name.  If a valid
+       *  abbreviation is followed by a character that would lead to the full
+       *  month name, parsing continues until the full name is found or an
+       *  error occurs.  Otherwise parsing finishes at the end of the
+       *  abbreviated name.
+       *
+       *  If an error occurs before the end, err |= ios_base::failbit.  If
+       *  parsing reads all the characters, err |=
+       *  ios_base::eofbit.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond month name.
+      */
+      iter_type
+      get_monthname(iter_type __beg, iter_type __end, ios_base& __io,
+		    ios_base::iostate& __err, tm* __tm) const
+      { return this->do_get_monthname(__beg, __end, __io, __err, __tm); }
+
+      /**
+       *  @brief  Parse input year string.
+       *
+       *  This function reads up to 4 characters to parse a year string and
+       *  puts the results into a user-supplied struct tm.  The result is
+       *  returned by calling time_get::do_get_year().
+       *
+       *  4 consecutive digits are interpreted as a full year.  If there are
+       *  exactly 2 consecutive digits, the library interprets this as the
+       *  number of years since 1900.
+       *
+       *  If an error occurs before the end, err |= ios_base::failbit.  If
+       *  parsing reads all the characters, err |= ios_base::eofbit.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond year.
+      */
+      iter_type
+      get_year(iter_type __beg, iter_type __end, ios_base& __io,
+	       ios_base::iostate& __err, tm* __tm) const
+      { return this->do_get_year(__beg, __end, __io, __err, __tm); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~time_get() { }
+
+      /**
+       *  @brief  Return preferred order of month, day, and year.
+       *
+       *  This function returns an enum from timebase::dateorder giving the
+       *  preferred ordering if the format @a x given to time_put::put() only
+       *  uses month, day, and year.  This function is a hook for derived
+       *  classes to change the value returned.
+       *
+       *  @return  A member of timebase::dateorder.
+      */
+      virtual dateorder
+      do_date_order() const;
+
+      /**
+       *  @brief  Parse input time string.
+       *
+       *  This function parses a time according to the format @a x and puts the
+       *  results into a user-supplied struct tm.  This function is a hook for
+       *  derived classes to change the value returned.  @see get_time() for
+       *  details.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond time string.
+      */
+      virtual iter_type
+      do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
+		  ios_base::iostate& __err, tm* __tm) const;
+
+      /**
+       *  @brief  Parse input date string.
+       *
+       *  This function parses a date according to the format @a X and puts the
+       *  results into a user-supplied struct tm.  This function is a hook for
+       *  derived classes to change the value returned.  @see get_date() for
+       *  details.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond date string.
+      */
+      virtual iter_type
+      do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
+		  ios_base::iostate& __err, tm* __tm) const;
+
+      /**
+       *  @brief  Parse input weekday string.
+       *
+       *  This function parses a weekday name and puts the results into a
+       *  user-supplied struct tm.  This function is a hook for derived
+       *  classes to change the value returned.  @see get_weekday() for
+       *  details.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond weekday name.
+      */
+      virtual iter_type
+      do_get_weekday(iter_type __beg, iter_type __end, ios_base&,
+		     ios_base::iostate& __err, tm* __tm) const;
+
+      /**
+       *  @brief  Parse input month string.
+       *
+       *  This function parses a month name and puts the results into a
+       *  user-supplied struct tm.  This function is a hook for derived
+       *  classes to change the value returned.  @see get_monthname() for
+       *  details.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond month name.
+      */
+      virtual iter_type
+      do_get_monthname(iter_type __beg, iter_type __end, ios_base&,
+		       ios_base::iostate& __err, tm* __tm) const;
+
+      /**
+       *  @brief  Parse input year string.
+       *
+       *  This function reads up to 4 characters to parse a year string and
+       *  puts the results into a user-supplied struct tm.  This function is a
+       *  hook for derived classes to change the value returned.  @see
+       *  get_year() for details.
+       *
+       *  @param  beg  Start of string to parse.
+       *  @param  end  End of string to parse.
+       *  @param  io  Source of the locale.
+       *  @param  err  Error flags to set.
+       *  @param  tm  Pointer to struct tm to fill in.
+       *  @return  Iterator to first char beyond year.
+      */
+      virtual iter_type
+      do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
+		  ios_base::iostate& __err, tm* __tm) const;
+
+      // Extract numeric component of length __len.
+      iter_type
+      _M_extract_num(iter_type __beg, iter_type __end, int& __member,
+		     int __min, int __max, size_t __len,
+		     ios_base& __io, ios_base::iostate& __err) const;
+
+      // Extract any unique array of string literals in a const _CharT* array.
+      iter_type
+      _M_extract_name(iter_type __beg, iter_type __end, int& __member,
+		      const _CharT** __names, size_t __indexlen,
+		      ios_base& __io, ios_base::iostate& __err) const;
+
+      // Extract day or month name in a const _CharT* array.
+      iter_type
+      _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
+			       const _CharT** __names, size_t __indexlen,
+			       ios_base& __io, ios_base::iostate& __err) const;
+
+      // Extract on a component-by-component basis, via __format argument.
+      iter_type
+      _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
+			    ios_base::iostate& __err, tm* __tm,
+			    const _CharT* __format) const;
+    };
+
+  template<typename _CharT, typename _InIter>
+    locale::id time_get<_CharT, _InIter>::id;
+
+  /// class time_get_byname [22.2.5.2].
+  template<typename _CharT, typename _InIter>
+    class time_get_byname : public time_get<_CharT, _InIter>
+    {
+    public:
+      // Types:
+      typedef _CharT			char_type;
+      typedef _InIter			iter_type;
+
+      explicit
+      time_get_byname(const char*, size_t __refs = 0)
+      : time_get<_CharT, _InIter>(__refs) { }
+
+    protected:
+      virtual
+      ~time_get_byname() { }
+    };
+
+  /**
+   *  @brief  Primary class template time_put.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to format and output dates and times
+   *  according to formats used by strftime().
+   *
+   *  The time_put template uses protected virtual functions to provide the
+   *  actual results.  The public accessors forward the call to the virtual
+   *  functions.  These virtual functions are hooks for developers to
+   *  implement the behavior they require from the time_put facet.
+  */
+  template<typename _CharT, typename _OutIter>
+    class time_put : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef _OutIter			iter_type;
+      //@}
+
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      time_put(size_t __refs = 0)
+      : facet(__refs) { }
+
+      /**
+       *  @brief  Format and output a time or date.
+       *
+       *  This function formats the data in struct tm according to the
+       *  provided format string.  The format string is interpreted as by
+       *  strftime().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  io  Source of locale.
+       *  @param  fill  char_type to use for padding.
+       *  @param  tm  Struct tm with date and time info to format.
+       *  @param  beg  Start of format string.
+       *  @param  end  End of format string.
+       *  @return  Iterator after writing.
+       */
+      iter_type
+      put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
+	  const _CharT* __beg, const _CharT* __end) const;
+
+      /**
+       *  @brief  Format and output a time or date.
+       *
+       *  This function formats the data in struct tm according to the
+       *  provided format char and optional modifier.  The format and modifier
+       *  are interpreted as by strftime().  It does so by returning
+       *  time_put::do_put().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  io  Source of locale.
+       *  @param  fill  char_type to use for padding.
+       *  @param  tm  Struct tm with date and time info to format.
+       *  @param  format  Format char.
+       *  @param  mod  Optional modifier char.
+       *  @return  Iterator after writing.
+       */
+      iter_type
+      put(iter_type __s, ios_base& __io, char_type __fill,
+	  const tm* __tm, char __format, char __mod = 0) const
+      { return this->do_put(__s, __io, __fill, __tm, __format, __mod); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~time_put()
+      { }
+
+      /**
+       *  @brief  Format and output a time or date.
+       *
+       *  This function formats the data in struct tm according to the
+       *  provided format char and optional modifier.  This function is a hook
+       *  for derived classes to change the value returned.  @see put() for
+       *  more details.
+       *
+       *  @param  s  The stream to write to.
+       *  @param  io  Source of locale.
+       *  @param  fill  char_type to use for padding.
+       *  @param  tm  Struct tm with date and time info to format.
+       *  @param  format  Format char.
+       *  @param  mod  Optional modifier char.
+       *  @return  Iterator after writing.
+       */
+      virtual iter_type
+      do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
+	     char __format, char __mod) const;
+    };
+
+  template<typename _CharT, typename _OutIter>
+    locale::id time_put<_CharT, _OutIter>::id;
+
+  /// class time_put_byname [22.2.5.4].
+  template<typename _CharT, typename _OutIter>
+    class time_put_byname : public time_put<_CharT, _OutIter>
+    {
+    public:
+      // Types:
+      typedef _CharT			char_type;
+      typedef _OutIter			iter_type;
+
+      explicit
+      time_put_byname(const char*, size_t __refs = 0)
+      : time_put<_CharT, _OutIter>(__refs)
+      { };
+
+    protected:
+      virtual
+      ~time_put_byname() { }
+    };
+
+
+  /**
+   *  @brief  Money format ordering data.
+   *  @ingroup locales
+   *
+   *  This class contains an ordered array of 4 fields to represent the
+   *  pattern for formatting a money amount.  Each field may contain one entry
+   *  from the part enum.  symbol, sign, and value must be present and the
+   *  remaining field must contain either none or space.  @see
+   *  moneypunct::pos_format() and moneypunct::neg_format() for details of how
+   *  these fields are interpreted.
+  */
+  class money_base
+  {
+  public:
+    enum part { none, space, symbol, sign, value };
+    struct pattern { char field[4]; };
+
+    static const pattern _S_default_pattern;
+
+    enum
+    {
+      _S_minus,
+      _S_zero,
+      _S_end = 11
+    };
+
+    // String literal of acceptable (narrow) input/output, for
+    // money_get/money_put. "-0123456789"
+    static const char* _S_atoms;
+
+    // Construct and return valid pattern consisting of some combination of:
+    // space none symbol sign value
+    _GLIBCXX_CONST static pattern
+    _S_construct_pattern(char __precedes, char __space, char __posn) throw ();
+  };
+
+  template<typename _CharT, bool _Intl>
+    struct __moneypunct_cache : public locale::facet
+    {
+      const char*			_M_grouping;
+      size_t                            _M_grouping_size;
+      bool				_M_use_grouping;
+      _CharT				_M_decimal_point;
+      _CharT				_M_thousands_sep;
+      const _CharT*			_M_curr_symbol;
+      size_t                            _M_curr_symbol_size;
+      const _CharT*			_M_positive_sign;
+      size_t                            _M_positive_sign_size;
+      const _CharT*			_M_negative_sign;
+      size_t                            _M_negative_sign_size;
+      int				_M_frac_digits;
+      money_base::pattern		_M_pos_format;
+      money_base::pattern	        _M_neg_format;
+
+      // A list of valid numeric literals for input and output: in the standard
+      // "C" locale, this is "-0123456789". This array contains the chars after
+      // having been passed through the current locale's ctype<_CharT>.widen().
+      _CharT				_M_atoms[money_base::_S_end];
+
+      bool				_M_allocated;
+
+      __moneypunct_cache(size_t __refs = 0) : facet(__refs),
+      _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false),
+      _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),
+      _M_curr_symbol(0), _M_curr_symbol_size(0),
+      _M_positive_sign(0), _M_positive_sign_size(0),
+      _M_negative_sign(0), _M_negative_sign_size(0),
+      _M_frac_digits(0),
+      _M_pos_format(money_base::pattern()),
+      _M_neg_format(money_base::pattern()), _M_allocated(false)
+      { }
+
+      ~__moneypunct_cache();
+
+      void
+      _M_cache(const locale& __loc);
+
+    private:
+      __moneypunct_cache&
+      operator=(const __moneypunct_cache&);
+      
+      explicit
+      __moneypunct_cache(const __moneypunct_cache&);
+    };
+
+  template<typename _CharT, bool _Intl>
+    __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
+    {
+      if (_M_allocated)
+	{
+	  delete [] _M_grouping;
+	  delete [] _M_curr_symbol;
+	  delete [] _M_positive_sign;
+	  delete [] _M_negative_sign;
+	}
+    }
+
+  /**
+   *  @brief  Primary class template moneypunct.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the punctuation, grouping and other formatting
+   *  features of money amount string representations.
+  */
+  template<typename _CharT, bool _Intl>
+    class moneypunct : public locale::facet, public money_base
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+      typedef __moneypunct_cache<_CharT, _Intl>     __cache_type;
+
+    private:
+      __cache_type*			_M_data;
+
+    public:
+      /// This value is provided by the standard, but no reason for its
+      /// existence.
+      static const bool			intl = _Intl;
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      moneypunct(size_t __refs = 0)
+      : facet(__refs), _M_data(0)
+      { _M_initialize_moneypunct(); }
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is an internal constructor.
+       *
+       *  @param cache  Cache for optimization.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      moneypunct(__cache_type* __cache, size_t __refs = 0)
+      : facet(__refs), _M_data(__cache)
+      { _M_initialize_moneypunct(); }
+
+      /**
+       *  @brief  Internal constructor. Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up new
+       *  locales.
+       *
+       *  @param cloc  The C locale.
+       *  @param s  The name of a locale.
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
+      : facet(__refs), _M_data(0)
+      { _M_initialize_moneypunct(__cloc, __s); }
+
+      /**
+       *  @brief  Return decimal point character.
+       *
+       *  This function returns a char_type to use as a decimal point.  It
+       *  does so by returning returning
+       *  moneypunct<char_type>::do_decimal_point().
+       *
+       *  @return  @a char_type representing a decimal point.
+      */
+      char_type
+      decimal_point() const
+      { return this->do_decimal_point(); }
+
+      /**
+       *  @brief  Return thousands separator character.
+       *
+       *  This function returns a char_type to use as a thousands
+       *  separator.  It does so by returning returning
+       *  moneypunct<char_type>::do_thousands_sep().
+       *
+       *  @return  char_type representing a thousands separator.
+      */
+      char_type
+      thousands_sep() const
+      { return this->do_thousands_sep(); }
+
+      /**
+       *  @brief  Return grouping specification.
+       *
+       *  This function returns a string representing groupings for the
+       *  integer part of an amount.  Groupings indicate where thousands
+       *  separators should be inserted.
+       *
+       *  Each char in the return string is interpret as an integer rather
+       *  than a character.  These numbers represent the number of digits in a
+       *  group.  The first char in the string represents the number of digits
+       *  in the least significant group.  If a char is negative, it indicates
+       *  an unlimited number of digits for the group.  If more chars from the
+       *  string are required to group a number, the last char is used
+       *  repeatedly.
+       *
+       *  For example, if the grouping() returns <code>\003\002</code>
+       *  and is applied to the number 123456789, this corresponds to
+       *  12,34,56,789.  Note that if the string was <code>32</code>, this would
+       *  put more than 50 digits into the least significant group if
+       *  the character set is ASCII.
+       *
+       *  The string is returned by calling
+       *  moneypunct<char_type>::do_grouping().
+       *
+       *  @return  string representing grouping specification.
+      */
+      string
+      grouping() const
+      { return this->do_grouping(); }
+
+      /**
+       *  @brief  Return currency symbol string.
+       *
+       *  This function returns a string_type to use as a currency symbol.  It
+       *  does so by returning returning
+       *  moneypunct<char_type>::do_curr_symbol().
+       *
+       *  @return  @a string_type representing a currency symbol.
+      */
+      string_type
+      curr_symbol() const
+      { return this->do_curr_symbol(); }
+
+      /**
+       *  @brief  Return positive sign string.
+       *
+       *  This function returns a string_type to use as a sign for positive
+       *  amounts.  It does so by returning returning
+       *  moneypunct<char_type>::do_positive_sign().
+       *
+       *  If the return value contains more than one character, the first
+       *  character appears in the position indicated by pos_format() and the
+       *  remainder appear at the end of the formatted string.
+       *
+       *  @return  @a string_type representing a positive sign.
+      */
+      string_type
+      positive_sign() const
+      { return this->do_positive_sign(); }
+
+      /**
+       *  @brief  Return negative sign string.
+       *
+       *  This function returns a string_type to use as a sign for negative
+       *  amounts.  It does so by returning returning
+       *  moneypunct<char_type>::do_negative_sign().
+       *
+       *  If the return value contains more than one character, the first
+       *  character appears in the position indicated by neg_format() and the
+       *  remainder appear at the end of the formatted string.
+       *
+       *  @return  @a string_type representing a negative sign.
+      */
+      string_type
+      negative_sign() const
+      { return this->do_negative_sign(); }
+
+      /**
+       *  @brief  Return number of digits in fraction.
+       *
+       *  This function returns the exact number of digits that make up the
+       *  fractional part of a money amount.  It does so by returning
+       *  returning moneypunct<char_type>::do_frac_digits().
+       *
+       *  The fractional part of a money amount is optional.  But if it is
+       *  present, there must be frac_digits() digits.
+       *
+       *  @return  Number of digits in amount fraction.
+      */
+      int
+      frac_digits() const
+      { return this->do_frac_digits(); }
+
+      //@{
+      /**
+       *  @brief  Return pattern for money values.
+       *
+       *  This function returns a pattern describing the formatting of a
+       *  positive or negative valued money amount.  It does so by returning
+       *  returning moneypunct<char_type>::do_pos_format() or
+       *  moneypunct<char_type>::do_neg_format().
+       *
+       *  The pattern has 4 fields describing the ordering of symbol, sign,
+       *  value, and none or space.  There must be one of each in the pattern.
+       *  The none and space enums may not appear in the first field and space
+       *  may not appear in the final field.
+       *
+       *  The parts of a money string must appear in the order indicated by
+       *  the fields of the pattern.  The symbol field indicates that the
+       *  value of curr_symbol() may be present.  The sign field indicates
+       *  that the value of positive_sign() or negative_sign() must be
+       *  present.  The value field indicates that the absolute value of the
+       *  money amount is present.  none indicates 0 or more whitespace
+       *  characters, except at the end, where it permits no whitespace.
+       *  space indicates that 1 or more whitespace characters must be
+       *  present.
+       *
+       *  For example, for the US locale and pos_format() pattern
+       *  {symbol,sign,value,none}, curr_symbol() == '$'
+       *  positive_sign() == '+', and value 10.01, and
+       *  options set to force the symbol, the corresponding string is
+       *  <code>$+10.01</code>.
+       *
+       *  @return  Pattern for money values.
+      */
+      pattern
+      pos_format() const
+      { return this->do_pos_format(); }
+
+      pattern
+      neg_format() const
+      { return this->do_neg_format(); }
+      //@}
+
+    protected:
+      /// Destructor.
+      virtual
+      ~moneypunct();
+
+      /**
+       *  @brief  Return decimal point character.
+       *
+       *  Returns a char_type to use as a decimal point.  This function is a
+       *  hook for derived classes to change the value returned.
+       *
+       *  @return  @a char_type representing a decimal point.
+      */
+      virtual char_type
+      do_decimal_point() const
+      { return _M_data->_M_decimal_point; }
+
+      /**
+       *  @brief  Return thousands separator character.
+       *
+       *  Returns a char_type to use as a thousands separator.  This function
+       *  is a hook for derived classes to change the value returned.
+       *
+       *  @return  @a char_type representing a thousands separator.
+      */
+      virtual char_type
+      do_thousands_sep() const
+      { return _M_data->_M_thousands_sep; }
+
+      /**
+       *  @brief  Return grouping specification.
+       *
+       *  Returns a string representing groupings for the integer part of a
+       *  number.  This function is a hook for derived classes to change the
+       *  value returned.  @see grouping() for details.
+       *
+       *  @return  String representing grouping specification.
+      */
+      virtual string
+      do_grouping() const
+      { return _M_data->_M_grouping; }
+
+      /**
+       *  @brief  Return currency symbol string.
+       *
+       *  This function returns a string_type to use as a currency symbol.
+       *  This function is a hook for derived classes to change the value
+       *  returned.  @see curr_symbol() for details.
+       *
+       *  @return  @a string_type representing a currency symbol.
+      */
+      virtual string_type
+      do_curr_symbol()   const
+      { return _M_data->_M_curr_symbol; }
+
+      /**
+       *  @brief  Return positive sign string.
+       *
+       *  This function returns a string_type to use as a sign for positive
+       *  amounts.  This function is a hook for derived classes to change the
+       *  value returned.  @see positive_sign() for details.
+       *
+       *  @return  @a string_type representing a positive sign.
+      */
+      virtual string_type
+      do_positive_sign() const
+      { return _M_data->_M_positive_sign; }
+
+      /**
+       *  @brief  Return negative sign string.
+       *
+       *  This function returns a string_type to use as a sign for negative
+       *  amounts.  This function is a hook for derived classes to change the
+       *  value returned.  @see negative_sign() for details.
+       *
+       *  @return  @a string_type representing a negative sign.
+      */
+      virtual string_type
+      do_negative_sign() const
+      { return _M_data->_M_negative_sign; }
+
+      /**
+       *  @brief  Return number of digits in fraction.
+       *
+       *  This function returns the exact number of digits that make up the
+       *  fractional part of a money amount.  This function is a hook for
+       *  derived classes to change the value returned.  @see frac_digits()
+       *  for details.
+       *
+       *  @return  Number of digits in amount fraction.
+      */
+      virtual int
+      do_frac_digits() const
+      { return _M_data->_M_frac_digits; }
+
+      /**
+       *  @brief  Return pattern for money values.
+       *
+       *  This function returns a pattern describing the formatting of a
+       *  positive valued money amount.  This function is a hook for derived
+       *  classes to change the value returned.  @see pos_format() for
+       *  details.
+       *
+       *  @return  Pattern for money values.
+      */
+      virtual pattern
+      do_pos_format() const
+      { return _M_data->_M_pos_format; }
+
+      /**
+       *  @brief  Return pattern for money values.
+       *
+       *  This function returns a pattern describing the formatting of a
+       *  negative valued money amount.  This function is a hook for derived
+       *  classes to change the value returned.  @see neg_format() for
+       *  details.
+       *
+       *  @return  Pattern for money values.
+      */
+      virtual pattern
+      do_neg_format() const
+      { return _M_data->_M_neg_format; }
+
+      // For use at construction time only.
+       void
+       _M_initialize_moneypunct(__c_locale __cloc = 0,
+				const char* __name = 0);
+    };
+
+  template<typename _CharT, bool _Intl>
+    locale::id moneypunct<_CharT, _Intl>::id;
+
+  template<typename _CharT, bool _Intl>
+    const bool moneypunct<_CharT, _Intl>::intl;
+
+  template<>
+    moneypunct<char, true>::~moneypunct();
+
+  template<>
+    moneypunct<char, false>::~moneypunct();
+
+  template<>
+    void
+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
+
+  template<>
+    void
+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    moneypunct<wchar_t, true>::~moneypunct();
+
+  template<>
+    moneypunct<wchar_t, false>::~moneypunct();
+
+  template<>
+    void
+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
+							const char*);
+
+  template<>
+    void
+    moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
+							 const char*);
+#endif
+
+  /// class moneypunct_byname [22.2.6.4].
+  template<typename _CharT, bool _Intl>
+    class moneypunct_byname : public moneypunct<_CharT, _Intl>
+    {
+    public:
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+
+      static const bool intl = _Intl;
+
+      explicit
+      moneypunct_byname(const char* __s, size_t __refs = 0)
+      : moneypunct<_CharT, _Intl>(__refs)
+      {
+	if (__builtin_strcmp(__s, "C") != 0
+	    && __builtin_strcmp(__s, "POSIX") != 0)
+	  {
+	    __c_locale __tmp;
+	    this->_S_create_c_locale(__tmp, __s);
+	    this->_M_initialize_moneypunct(__tmp);
+	    this->_S_destroy_c_locale(__tmp);
+	  }
+      }
+
+    protected:
+      virtual
+      ~moneypunct_byname() { }
+    };
+
+  template<typename _CharT, bool _Intl>
+    const bool moneypunct_byname<_CharT, _Intl>::intl;
+
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+
+  /**
+   *  @brief  Primary class template money_get.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to parse and return a monetary
+   *  amount from a string.
+   *
+   *  The money_get template uses protected virtual functions to
+   *  provide the actual results.  The public accessors forward the
+   *  call to the virtual functions.  These virtual functions are
+   *  hooks for developers to implement the behavior they require from
+   *  the money_get facet.
+  */
+  template<typename _CharT, typename _InIter>
+    class money_get : public locale::facet
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef _InIter			iter_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      money_get(size_t __refs = 0) : facet(__refs) { }
+
+      /**
+       *  @brief  Read and parse a monetary value.
+       *
+       *  This function reads characters from @a s, interprets them as a
+       *  monetary value according to moneypunct and ctype facets retrieved
+       *  from io.getloc(), and returns the result in @a units as an integral
+       *  value moneypunct::frac_digits() * the actual amount.  For example,
+       *  the string $10.01 in a US locale would store 1001 in @a units.
+       *
+       *  Any characters not part of a valid money amount are not consumed.
+       *
+       *  If a money value cannot be parsed from the input stream, sets
+       *  err=(err|io.failbit).  If the stream is consumed before finishing
+       *  parsing,  sets err=(err|io.failbit|io.eofbit).  @a units is
+       *  unchanged if parsing fails.
+       *
+       *  This function works by returning the result of do_get().
+       *
+       *  @param  s  Start of characters to parse.
+       *  @param  end  End of characters to parse.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  err  Error field to set if parsing fails.
+       *  @param  units  Place to store result of parsing.
+       *  @return  Iterator referencing first character beyond valid money
+       *	   amount.
+       */
+      iter_type
+      get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	  ios_base::iostate& __err, long double& __units) const
+      { return this->do_get(__s, __end, __intl, __io, __err, __units); }
+
+      /**
+       *  @brief  Read and parse a monetary value.
+       *
+       *  This function reads characters from @a s, interprets them as
+       *  a monetary value according to moneypunct and ctype facets
+       *  retrieved from io.getloc(), and returns the result in @a
+       *  digits.  For example, the string $10.01 in a US locale would
+       *  store <code>1001</code> in @a digits.
+       *
+       *  Any characters not part of a valid money amount are not consumed.
+       *
+       *  If a money value cannot be parsed from the input stream, sets
+       *  err=(err|io.failbit).  If the stream is consumed before finishing
+       *  parsing,  sets err=(err|io.failbit|io.eofbit).
+       *
+       *  This function works by returning the result of do_get().
+       *
+       *  @param  s  Start of characters to parse.
+       *  @param  end  End of characters to parse.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  err  Error field to set if parsing fails.
+       *  @param  digits  Place to store result of parsing.
+       *  @return  Iterator referencing first character beyond valid money
+       *	   amount.
+       */
+      iter_type
+      get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	  ios_base::iostate& __err, string_type& __digits) const
+      { return this->do_get(__s, __end, __intl, __io, __err, __digits); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~money_get() { }
+
+      /**
+       *  @brief  Read and parse a monetary value.
+       *
+       *  This function reads and parses characters representing a monetary
+       *  value.  This function is a hook for derived classes to change the
+       *  value returned.  @see get() for details.
+       */
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	       ios_base::iostate& __err, double& __units) const;
+#else
+      virtual iter_type
+      do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	     ios_base::iostate& __err, long double& __units) const;
+#endif
+
+      /**
+       *  @brief  Read and parse a monetary value.
+       *
+       *  This function reads and parses characters representing a monetary
+       *  value.  This function is a hook for derived classes to change the
+       *  value returned.  @see get() for details.
+       */
+      virtual iter_type
+      do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	     ios_base::iostate& __err, string_type& __digits) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+	     ios_base::iostate& __err, long double& __units) const;
+#endif
+
+      template<bool _Intl>
+        iter_type
+        _M_extract(iter_type __s, iter_type __end, ios_base& __io,
+		   ios_base::iostate& __err, string& __digits) const;     
+    };
+
+  template<typename _CharT, typename _InIter>
+    locale::id money_get<_CharT, _InIter>::id;
+
+  /**
+   *  @brief  Primary class template money_put.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to format and output a monetary
+   *  amount.
+   *
+   *  The money_put template uses protected virtual functions to
+   *  provide the actual results.  The public accessors forward the
+   *  call to the virtual functions.  These virtual functions are
+   *  hooks for developers to implement the behavior they require from
+   *  the money_put facet.
+  */
+  template<typename _CharT, typename _OutIter>
+    class money_put : public locale::facet
+    {
+    public:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef _OutIter			iter_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      money_put(size_t __refs = 0) : facet(__refs) { }
+
+      /**
+       *  @brief  Format and output a monetary value.
+       *
+       *  This function formats @a units as a monetary value according to
+       *  moneypunct and ctype facets retrieved from io.getloc(), and writes
+       *  the resulting characters to @a s.  For example, the value 1001 in a
+       *  US locale would write <code>$10.01</code> to @a s.
+       *
+       *  This function works by returning the result of do_put().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  fill  char_type to use for padding.
+       *  @param  units  Place to store result of parsing.
+       *  @return  Iterator after writing.
+       */
+      iter_type
+      put(iter_type __s, bool __intl, ios_base& __io,
+	  char_type __fill, long double __units) const
+      { return this->do_put(__s, __intl, __io, __fill, __units); }
+
+      /**
+       *  @brief  Format and output a monetary value.
+       *
+       *  This function formats @a digits as a monetary value
+       *  according to moneypunct and ctype facets retrieved from
+       *  io.getloc(), and writes the resulting characters to @a s.
+       *  For example, the string <code>1001</code> in a US locale
+       *  would write <code>$10.01</code> to @a s.
+       *
+       *  This function works by returning the result of do_put().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  fill  char_type to use for padding.
+       *  @param  units  Place to store result of parsing.
+       *  @return  Iterator after writing.
+       */
+      iter_type
+      put(iter_type __s, bool __intl, ios_base& __io,
+	  char_type __fill, const string_type& __digits) const
+      { return this->do_put(__s, __intl, __io, __fill, __digits); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~money_put() { }
+
+      /**
+       *  @brief  Format and output a monetary value.
+       *
+       *  This function formats @a units as a monetary value according to
+       *  moneypunct and ctype facets retrieved from io.getloc(), and writes
+       *  the resulting characters to @a s.  For example, the value 1001 in a
+       *  US locale would write <code>$10.01</code> to @a s.
+       *
+       *  This function is a hook for derived classes to change the value
+       *  returned.  @see put().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  fill  char_type to use for padding.
+       *  @param  units  Place to store result of parsing.
+       *  @return  Iterator after writing.
+       */
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	       double __units) const;
+#else
+      virtual iter_type
+      do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	     long double __units) const;
+#endif
+
+      /**
+       *  @brief  Format and output a monetary value.
+       *
+       *  This function formats @a digits as a monetary value
+       *  according to moneypunct and ctype facets retrieved from
+       *  io.getloc(), and writes the resulting characters to @a s.
+       *  For example, the string <code>1001</code> in a US locale
+       *  would write <code>$10.01</code> to @a s.
+       *
+       *  This function is a hook for derived classes to change the value
+       *  returned.  @see put().
+       *
+       *  @param  s  The stream to write to.
+       *  @param  intl  Parameter to use_facet<moneypunct<CharT,intl> >.
+       *  @param  io  Source of facets and io state.
+       *  @param  fill  char_type to use for padding.
+       *  @param  units  Place to store result of parsing.
+       *  @return  Iterator after writing.
+       */
+      virtual iter_type
+      do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	     const string_type& __digits) const;
+
+      // XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+      virtual iter_type
+      do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	     long double __units) const;
+#endif
+
+      template<bool _Intl>
+        iter_type
+        _M_insert(iter_type __s, ios_base& __io, char_type __fill,
+		  const string_type& __digits) const;
+    };
+
+  template<typename _CharT, typename _OutIter>
+    locale::id money_put<_CharT, _OutIter>::id;
+
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  /**
+   *  @brief  Messages facet base class providing catalog typedef.
+   *  @ingroup locales
+   */
+  struct messages_base
+  {
+    typedef int catalog;
+  };
+
+  /**
+   *  @brief  Primary class template messages.
+   *  @ingroup locales
+   *
+   *  This facet encapsulates the code to retrieve messages from
+   *  message catalogs.  The only thing defined by the standard for this facet
+   *  is the interface.  All underlying functionality is
+   *  implementation-defined.
+   *
+   *  This library currently implements 3 versions of the message facet.  The
+   *  first version (gnu) is a wrapper around gettext, provided by libintl.
+   *  The second version (ieee) is a wrapper around catgets.  The final
+   *  version (default) does no actual translation.  These implementations are
+   *  only provided for char and wchar_t instantiations.
+   *
+   *  The messages template uses protected virtual functions to
+   *  provide the actual results.  The public accessors forward the
+   *  call to the virtual functions.  These virtual functions are
+   *  hooks for developers to implement the behavior they require from
+   *  the messages facet.
+  */
+  template<typename _CharT>
+    class messages : public locale::facet, public messages_base
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+      //@}
+
+    protected:
+      // Underlying "C" library locale information saved from
+      // initialization, needed by messages_byname as well.
+      __c_locale			_M_c_locale_messages;
+      const char*			_M_name_messages;
+
+    public:
+      /// Numpunct facet id.
+      static locale::id			id;
+
+      /**
+       *  @brief  Constructor performs initialization.
+       *
+       *  This is the constructor provided by the standard.
+       *
+       *  @param refs  Passed to the base facet class.
+      */
+      explicit
+      messages(size_t __refs = 0);
+
+      // Non-standard.
+      /**
+       *  @brief  Internal constructor.  Not for general use.
+       *
+       *  This is a constructor for use by the library itself to set up new
+       *  locales.
+       *
+       *  @param  cloc  The C locale.
+       *  @param  s  The name of a locale.
+       *  @param  refs  Refcount to pass to the base class.
+       */
+      explicit
+      messages(__c_locale __cloc, const char* __s, size_t __refs = 0);
+
+      /*
+       *  @brief  Open a message catalog.
+       *
+       *  This function opens and returns a handle to a message catalog by
+       *  returning do_open(s, loc).
+       *
+       *  @param  s  The catalog to open.
+       *  @param  loc  Locale to use for character set conversions.
+       *  @return  Handle to the catalog or value < 0 if open fails.
+      */
+      catalog
+      open(const basic_string<char>& __s, const locale& __loc) const
+      { return this->do_open(__s, __loc); }
+
+      // Non-standard and unorthodox, yet effective.
+      /*
+       *  @brief  Open a message catalog.
+       *
+       *  This non-standard function opens and returns a handle to a message
+       *  catalog by returning do_open(s, loc).  The third argument provides a
+       *  message catalog root directory for gnu gettext and is ignored
+       *  otherwise.
+       *
+       *  @param  s  The catalog to open.
+       *  @param  loc  Locale to use for character set conversions.
+       *  @param  dir  Message catalog root directory.
+       *  @return  Handle to the catalog or value < 0 if open fails.
+      */
+      catalog
+      open(const basic_string<char>&, const locale&, const char*) const;
+
+      /*
+       *  @brief  Look up a string in a message catalog.
+       *
+       *  This function retrieves and returns a message from a catalog by
+       *  returning do_get(c, set, msgid, s).
+       *
+       *  For gnu, @a set and @a msgid are ignored.  Returns gettext(s).
+       *  For default, returns s. For ieee, returns catgets(c,set,msgid,s).
+       *
+       *  @param  c  The catalog to access.
+       *  @param  set  Implementation-defined.
+       *  @param  msgid  Implementation-defined.
+       *  @param  s  Default return value if retrieval fails.
+       *  @return  Retrieved message or @a s if get fails.
+      */
+      string_type
+      get(catalog __c, int __set, int __msgid, const string_type& __s) const
+      { return this->do_get(__c, __set, __msgid, __s); }
+
+      /*
+       *  @brief  Close a message catalog.
+       *
+       *  Closes catalog @a c by calling do_close(c).
+       *
+       *  @param  c  The catalog to close.
+      */
+      void
+      close(catalog __c) const
+      { return this->do_close(__c); }
+
+    protected:
+      /// Destructor.
+      virtual
+      ~messages();
+
+      /*
+       *  @brief  Open a message catalog.
+       *
+       *  This function opens and returns a handle to a message catalog in an
+       *  implementation-defined manner.  This function is a hook for derived
+       *  classes to change the value returned.
+       *
+       *  @param  s  The catalog to open.
+       *  @param  loc  Locale to use for character set conversions.
+       *  @return  Handle to the opened catalog, value < 0 if open failed.
+      */
+      virtual catalog
+      do_open(const basic_string<char>&, const locale&) const;
+
+      /*
+       *  @brief  Look up a string in a message catalog.
+       *
+       *  This function retrieves and returns a message from a catalog in an
+       *  implementation-defined manner.  This function is a hook for derived
+       *  classes to change the value returned.
+       *
+       *  For gnu, @a set and @a msgid are ignored.  Returns gettext(s).
+       *  For default, returns s. For ieee, returns catgets(c,set,msgid,s).
+       *
+       *  @param  c  The catalog to access.
+       *  @param  set  Implementation-defined.
+       *  @param  msgid  Implementation-defined.
+       *  @param  s  Default return value if retrieval fails.
+       *  @return  Retrieved message or @a s if get fails.
+      */
+      virtual string_type
+      do_get(catalog, int, int, const string_type& __dfault) const;
+
+      /*
+       *  @brief  Close a message catalog.
+       *
+       *  @param  c  The catalog to close.
+      */
+      virtual void
+      do_close(catalog) const;
+
+      // Returns a locale and codeset-converted string, given a char* message.
+      char*
+      _M_convert_to_char(const string_type& __msg) const
+      {
+	// XXX
+	return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));
+      }
+
+      // Returns a locale and codeset-converted string, given a char* message.
+      string_type
+      _M_convert_from_char(char*) const
+      {
+#if 0
+	// Length of message string without terminating null.
+	size_t __len = char_traits<char>::length(__msg) - 1;
+
+	// "everybody can easily convert the string using
+	// mbsrtowcs/wcsrtombs or with iconv()"
+
+	// Convert char* to _CharT in locale used to open catalog.
+	// XXX need additional template parameter on messages class for this..
+	// typedef typename codecvt<char, _CharT, _StateT> __codecvt_type;
+	typedef typename codecvt<char, _CharT, mbstate_t> __codecvt_type;
+
+	__codecvt_type::state_type __state;
+	// XXX may need to initialize state.
+	//initialize_state(__state._M_init());
+
+	char* __from_next;
+	// XXX what size for this string?
+	_CharT* __to = static_cast<_CharT*>(__builtin_alloca(__len + 1));
+	const __codecvt_type& __cvt = use_facet<__codecvt_type>(_M_locale_conv);
+	__cvt.out(__state, __msg, __msg + __len, __from_next,
+		  __to, __to + __len + 1, __to_next);
+	return string_type(__to);
+#endif
+#if 0
+	typedef ctype<_CharT> __ctype_type;
+	// const __ctype_type& __cvt = use_facet<__ctype_type>(_M_locale_msg);
+	const __ctype_type& __cvt = use_facet<__ctype_type>(locale());
+	// XXX Again, proper length of converted string an issue here.
+	// For now, assume the converted length is not larger.
+	_CharT* __dest = static_cast<_CharT*>(__builtin_alloca(__len + 1));
+	__cvt.widen(__msg, __msg + __len, __dest);
+	return basic_string<_CharT>(__dest);
+#endif
+	return string_type();
+      }
+     };
+
+  template<typename _CharT>
+    locale::id messages<_CharT>::id;
+
+  /// Specializations for required instantiations.
+  template<>
+    string
+    messages<char>::do_get(catalog, int, int, const string&) const;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    wstring
+    messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
+#endif
+
+   /// class messages_byname [22.2.7.2].
+   template<typename _CharT>
+    class messages_byname : public messages<_CharT>
+    {
+    public:
+      typedef _CharT			char_type;
+      typedef basic_string<_CharT>	string_type;
+
+      explicit
+      messages_byname(const char* __s, size_t __refs = 0);
+
+    protected:
+      virtual
+      ~messages_byname()
+      { }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// Include host and configuration specific messages functions.
+#include <bits/messages_members.h>
+
+// 22.2.1.5  Template class codecvt
+#include <bits/codecvt.h>
+
+#include <bits/locale_facets_nonio.tcc>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.tcc
new file mode 100644
index 000000000..fbf700535
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/locale_facets_nonio.tcc
@@ -0,0 +1,1373 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/locale_facets_nonio.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+#ifndef _LOCALE_FACETS_NONIO_TCC
+#define _LOCALE_FACETS_NONIO_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, bool _Intl>
+    struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
+    {
+      const __moneypunct_cache<_CharT, _Intl>*
+      operator() (const locale& __loc) const
+      {
+	const size_t __i = moneypunct<_CharT, _Intl>::id._M_id();
+	const locale::facet** __caches = __loc._M_impl->_M_caches;
+	if (!__caches[__i])
+	  {
+	    __moneypunct_cache<_CharT, _Intl>* __tmp = 0;
+	    __try
+	      {
+		__tmp = new __moneypunct_cache<_CharT, _Intl>;
+		__tmp->_M_cache(__loc);
+	      }
+	    __catch(...)
+	      {
+		delete __tmp;
+		__throw_exception_again;
+	      }
+	    __loc._M_impl->_M_install_cache(__tmp, __i);
+	  }
+	return static_cast<
+	  const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]);
+      }
+    };
+
+  template<typename _CharT, bool _Intl>
+    void
+    __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
+    {
+      _M_allocated = true;
+
+      const moneypunct<_CharT, _Intl>& __mp =
+	use_facet<moneypunct<_CharT, _Intl> >(__loc);
+
+      _M_decimal_point = __mp.decimal_point();
+      _M_thousands_sep = __mp.thousands_sep();
+      _M_frac_digits = __mp.frac_digits();
+
+      char* __grouping = 0;
+      _CharT* __curr_symbol = 0;
+      _CharT* __positive_sign = 0;
+      _CharT* __negative_sign = 0;     
+      __try
+	{
+	  _M_grouping_size = __mp.grouping().size();
+	  __grouping = new char[_M_grouping_size];
+	  __mp.grouping().copy(__grouping, _M_grouping_size);
+	  _M_grouping = __grouping;
+	  _M_use_grouping = (_M_grouping_size
+			     && static_cast<signed char>(_M_grouping[0]) > 0
+			     && (_M_grouping[0]
+				 != __gnu_cxx::__numeric_traits<char>::__max));
+
+	  _M_curr_symbol_size = __mp.curr_symbol().size();
+	  __curr_symbol = new _CharT[_M_curr_symbol_size];
+	  __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size);
+	  _M_curr_symbol = __curr_symbol;
+
+	  _M_positive_sign_size = __mp.positive_sign().size();
+	  __positive_sign = new _CharT[_M_positive_sign_size];
+	  __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size);
+	  _M_positive_sign = __positive_sign;
+
+	  _M_negative_sign_size = __mp.negative_sign().size();
+	  __negative_sign = new _CharT[_M_negative_sign_size];
+	  __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size);
+	  _M_negative_sign = __negative_sign;
+
+	  _M_pos_format = __mp.pos_format();
+	  _M_neg_format = __mp.neg_format();
+
+	  const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
+	  __ct.widen(money_base::_S_atoms,
+		     money_base::_S_atoms + money_base::_S_end, _M_atoms);
+	}
+      __catch(...)
+	{
+	  delete [] __grouping;
+	  delete [] __curr_symbol;
+	  delete [] __positive_sign;
+	  delete [] __negative_sign;
+	  __throw_exception_again;
+	}
+    }
+
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+
+  template<typename _CharT, typename _InIter>
+    template<bool _Intl>
+      _InIter
+      money_get<_CharT, _InIter>::
+      _M_extract(iter_type __beg, iter_type __end, ios_base& __io,
+		 ios_base::iostate& __err, string& __units) const
+      {
+	typedef char_traits<_CharT>			  __traits_type;
+	typedef typename string_type::size_type	          size_type;	
+	typedef money_base::part			  part;
+	typedef __moneypunct_cache<_CharT, _Intl>         __cache_type;
+	
+	const locale& __loc = __io._M_getloc();
+	const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+	__use_cache<__cache_type> __uc;
+	const __cache_type* __lc = __uc(__loc);
+	const char_type* __lit = __lc->_M_atoms;
+
+	// Deduced sign.
+	bool __negative = false;
+	// Sign size.
+	size_type __sign_size = 0;
+	// True if sign is mandatory.
+	const bool __mandatory_sign = (__lc->_M_positive_sign_size
+				       && __lc->_M_negative_sign_size);
+	// String of grouping info from thousands_sep plucked from __units.
+	string __grouping_tmp;
+	if (__lc->_M_use_grouping)
+	  __grouping_tmp.reserve(32);
+	// Last position before the decimal point.
+	int __last_pos = 0;
+	// Separator positions, then, possibly, fractional digits.
+	int __n = 0;
+	// If input iterator is in a valid state.
+	bool __testvalid = true;
+	// Flag marking when a decimal point is found.
+	bool __testdecfound = false;
+
+	// The tentative returned string is stored here.
+	string __res;
+	__res.reserve(32);
+
+	const char_type* __lit_zero = __lit + money_base::_S_zero;
+	const money_base::pattern __p = __lc->_M_neg_format;
+	for (int __i = 0; __i < 4 && __testvalid; ++__i)
+	  {
+	    const part __which = static_cast<part>(__p.field[__i]);
+	    switch (__which)
+	      {
+	      case money_base::symbol:
+		// According to 22.2.6.1.2, p2, symbol is required
+		// if (__io.flags() & ios_base::showbase), otherwise
+		// is optional and consumed only if other characters
+		// are needed to complete the format.
+		if (__io.flags() & ios_base::showbase || __sign_size > 1
+		    || __i == 0
+		    || (__i == 1 && (__mandatory_sign
+				     || (static_cast<part>(__p.field[0])
+					 == money_base::sign)
+				     || (static_cast<part>(__p.field[2])
+					 == money_base::space)))
+		    || (__i == 2 && ((static_cast<part>(__p.field[3])
+				      == money_base::value)
+				     || (__mandatory_sign
+					 && (static_cast<part>(__p.field[3])
+					     == money_base::sign)))))
+		  {
+		    const size_type __len = __lc->_M_curr_symbol_size;
+		    size_type __j = 0;
+		    for (; __beg != __end && __j < __len
+			   && *__beg == __lc->_M_curr_symbol[__j];
+			 ++__beg, ++__j);
+		    if (__j != __len
+			&& (__j || __io.flags() & ios_base::showbase))
+		      __testvalid = false;
+		  }
+		break;
+	      case money_base::sign:
+		// Sign might not exist, or be more than one character long.
+		if (__lc->_M_positive_sign_size && __beg != __end
+		    && *__beg == __lc->_M_positive_sign[0])
+		  {
+		    __sign_size = __lc->_M_positive_sign_size;
+		    ++__beg;
+		  }
+		else if (__lc->_M_negative_sign_size && __beg != __end
+			 && *__beg == __lc->_M_negative_sign[0])
+		  {
+		    __negative = true;
+		    __sign_size = __lc->_M_negative_sign_size;
+		    ++__beg;
+		  }
+		else if (__lc->_M_positive_sign_size
+			 && !__lc->_M_negative_sign_size)
+		  // "... if no sign is detected, the result is given the sign
+		  // that corresponds to the source of the empty string"
+		  __negative = true;
+		else if (__mandatory_sign)
+		  __testvalid = false;
+		break;
+	      case money_base::value:
+		// Extract digits, remove and stash away the
+		// grouping of found thousands separators.
+		for (; __beg != __end; ++__beg)
+		  {
+		    const char_type __c = *__beg;
+		    const char_type* __q = __traits_type::find(__lit_zero, 
+							       10, __c);
+		    if (__q != 0)
+		      {
+			__res += money_base::_S_atoms[__q - __lit];
+			++__n;
+		      }
+		    else if (__c == __lc->_M_decimal_point 
+			     && !__testdecfound)
+		      {
+			if (__lc->_M_frac_digits <= 0)
+			  break;
+
+			__last_pos = __n;
+			__n = 0;
+			__testdecfound = true;
+		      }
+		    else if (__lc->_M_use_grouping
+			     && __c == __lc->_M_thousands_sep
+			     && !__testdecfound)
+		      {
+			if (__n)
+			  {
+			    // Mark position for later analysis.
+			    __grouping_tmp += static_cast<char>(__n);
+			    __n = 0;
+			  }
+			else
+			  {
+			    __testvalid = false;
+			    break;
+			  }
+		      }
+		    else
+		      break;
+		  }
+		if (__res.empty())
+		  __testvalid = false;
+		break;
+	      case money_base::space:
+		// At least one space is required.
+		if (__beg != __end && __ctype.is(ctype_base::space, *__beg))
+		  ++__beg;
+		else
+		  __testvalid = false;
+	      case money_base::none:
+		// Only if not at the end of the pattern.
+		if (__i != 3)
+		  for (; __beg != __end
+			 && __ctype.is(ctype_base::space, *__beg); ++__beg);
+		break;
+	      }
+	  }
+
+	// Need to get the rest of the sign characters, if they exist.
+	if (__sign_size > 1 && __testvalid)
+	  {
+	    const char_type* __sign = __negative ? __lc->_M_negative_sign
+	                                         : __lc->_M_positive_sign;
+	    size_type __i = 1;
+	    for (; __beg != __end && __i < __sign_size
+		   && *__beg == __sign[__i]; ++__beg, ++__i);
+	    
+	    if (__i != __sign_size)
+	      __testvalid = false;
+	  }
+
+	if (__testvalid)
+	  {
+	    // Strip leading zeros.
+	    if (__res.size() > 1)
+	      {
+		const size_type __first = __res.find_first_not_of('0');
+		const bool __only_zeros = __first == string::npos;
+		if (__first)
+		  __res.erase(0, __only_zeros ? __res.size() - 1 : __first);
+	      }
+
+	    // 22.2.6.1.2, p4
+	    if (__negative && __res[0] != '0')
+	      __res.insert(__res.begin(), '-');
+	    
+	    // Test for grouping fidelity.
+	    if (__grouping_tmp.size())
+	      {
+		// Add the ending grouping.
+		__grouping_tmp += static_cast<char>(__testdecfound ? __last_pos
+						                   : __n);
+		if (!std::__verify_grouping(__lc->_M_grouping,
+					    __lc->_M_grouping_size,
+					    __grouping_tmp))
+		  __err |= ios_base::failbit;
+	      }
+	    
+	    // Iff not enough digits were supplied after the decimal-point.
+	    if (__testdecfound && __n != __lc->_M_frac_digits)
+	      __testvalid = false;
+	  }
+
+	// Iff valid sequence is not recognized.
+	if (!__testvalid)
+	  __err |= ios_base::failbit;
+	else
+	  __units.swap(__res);
+	
+	// Iff no more characters are available.
+	if (__beg == __end)
+	  __err |= ios_base::eofbit;
+	return __beg;
+      }
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+  template<typename _CharT, typename _InIter>
+    _InIter
+    money_get<_CharT, _InIter>::
+    __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
+	     ios_base::iostate& __err, double& __units) const
+    {
+      string __str;
+      __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
+                     : _M_extract<false>(__beg, __end, __io, __err, __str);
+      std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
+      return __beg;
+    }
+#endif
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    money_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
+	   ios_base::iostate& __err, long double& __units) const
+    {
+      string __str;
+      __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
+	             : _M_extract<false>(__beg, __end, __io, __err, __str);
+      std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    money_get<_CharT, _InIter>::
+    do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
+	   ios_base::iostate& __err, string_type& __digits) const
+    {
+      typedef typename string::size_type                  size_type;
+
+      const locale& __loc = __io._M_getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+      string __str;
+      __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
+	             : _M_extract<false>(__beg, __end, __io, __err, __str);
+      const size_type __len = __str.size();
+      if (__len)
+	{
+	  __digits.resize(__len);
+	  __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]);
+	}
+      return __beg;
+    }
+
+  template<typename _CharT, typename _OutIter>
+    template<bool _Intl>
+      _OutIter
+      money_put<_CharT, _OutIter>::
+      _M_insert(iter_type __s, ios_base& __io, char_type __fill,
+		const string_type& __digits) const
+      {
+	typedef typename string_type::size_type	          size_type;
+	typedef money_base::part                          part;
+	typedef __moneypunct_cache<_CharT, _Intl>         __cache_type;
+      
+	const locale& __loc = __io._M_getloc();
+	const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+	__use_cache<__cache_type> __uc;
+	const __cache_type* __lc = __uc(__loc);
+	const char_type* __lit = __lc->_M_atoms;
+
+	// Determine if negative or positive formats are to be used, and
+	// discard leading negative_sign if it is present.
+	const char_type* __beg = __digits.data();
+
+	money_base::pattern __p;
+	const char_type* __sign;
+	size_type __sign_size;
+	if (!(*__beg == __lit[money_base::_S_minus]))
+	  {
+	    __p = __lc->_M_pos_format;
+	    __sign = __lc->_M_positive_sign;
+	    __sign_size = __lc->_M_positive_sign_size;
+	  }
+	else
+	  {
+	    __p = __lc->_M_neg_format;
+	    __sign = __lc->_M_negative_sign;
+	    __sign_size = __lc->_M_negative_sign_size;
+	    if (__digits.size())
+	      ++__beg;
+	  }
+       
+	// Look for valid numbers in the ctype facet within input digits.
+	size_type __len = __ctype.scan_not(ctype_base::digit, __beg,
+					   __beg + __digits.size()) - __beg;
+	if (__len)
+	  {
+	    // Assume valid input, and attempt to format.
+	    // Break down input numbers into base components, as follows:
+	    //   final_value = grouped units + (decimal point) + (digits)
+	    string_type __value;
+	    __value.reserve(2 * __len);
+
+	    // Add thousands separators to non-decimal digits, per
+	    // grouping rules.
+	    long __paddec = __len - __lc->_M_frac_digits;
+	    if (__paddec > 0)
+  	      {
+		if (__lc->_M_frac_digits < 0)
+		  __paddec = __len;
+  		if (__lc->_M_grouping_size)
+  		  {
+		    __value.assign(2 * __paddec, char_type());
+ 		    _CharT* __vend = 
+		      std::__add_grouping(&__value[0], __lc->_M_thousands_sep,
+					  __lc->_M_grouping,
+					  __lc->_M_grouping_size,
+					  __beg, __beg + __paddec);
+		    __value.erase(__vend - &__value[0]);
+  		  }
+  		else
+		  __value.assign(__beg, __paddec);
+	      }
+
+	    // Deal with decimal point, decimal digits.
+	    if (__lc->_M_frac_digits > 0)
+	      {
+		__value += __lc->_M_decimal_point;
+		if (__paddec >= 0)
+		  __value.append(__beg + __paddec, __lc->_M_frac_digits);
+		else
+		  {
+		    // Have to pad zeros in the decimal position.
+		    __value.append(-__paddec, __lit[money_base::_S_zero]);
+		    __value.append(__beg, __len);
+		  }
+  	      }
+  
+	    // Calculate length of resulting string.
+	    const ios_base::fmtflags __f = __io.flags() 
+	                                   & ios_base::adjustfield;
+	    __len = __value.size() + __sign_size;
+	    __len += ((__io.flags() & ios_base::showbase)
+		      ? __lc->_M_curr_symbol_size : 0);
+
+	    string_type __res;
+	    __res.reserve(2 * __len);
+	    
+	    const size_type __width = static_cast<size_type>(__io.width());  
+	    const bool __testipad = (__f == ios_base::internal
+				     && __len < __width);
+	    // Fit formatted digits into the required pattern.
+	    for (int __i = 0; __i < 4; ++__i)
+	      {
+		const part __which = static_cast<part>(__p.field[__i]);
+		switch (__which)
+		  {
+		  case money_base::symbol:
+		    if (__io.flags() & ios_base::showbase)
+		      __res.append(__lc->_M_curr_symbol,
+				   __lc->_M_curr_symbol_size);
+		    break;
+		  case money_base::sign:
+		    // Sign might not exist, or be more than one
+		    // character long. In that case, add in the rest
+		    // below.
+		    if (__sign_size)
+		      __res += __sign[0];
+		    break;
+		  case money_base::value:
+		    __res += __value;
+		    break;
+		  case money_base::space:
+		    // At least one space is required, but if internal
+		    // formatting is required, an arbitrary number of
+		    // fill spaces will be necessary.
+		    if (__testipad)
+		      __res.append(__width - __len, __fill);
+		    else
+		      __res += __fill;
+		    break;
+		  case money_base::none:
+		    if (__testipad)
+		      __res.append(__width - __len, __fill);
+		    break;
+		  }
+	      }
+	    
+	    // Special case of multi-part sign parts.
+	    if (__sign_size > 1)
+	      __res.append(__sign + 1, __sign_size - 1);
+	    
+	    // Pad, if still necessary.
+	    __len = __res.size();
+	    if (__width > __len)
+	      {
+		if (__f == ios_base::left)
+		  // After.
+		  __res.append(__width - __len, __fill);
+		else
+		  // Before.
+		  __res.insert(0, __width - __len, __fill);
+		__len = __width;
+	      }
+	    
+	    // Write resulting, fully-formatted string to output iterator.
+	    __s = std::__write(__s, __res.data(), __len);
+	  }
+	__io.width(0);
+	return __s;    
+      }
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    money_put<_CharT, _OutIter>::
+    __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	     double __units) const
+    { return this->do_put(__s, __intl, __io, __fill, (long double) __units); }
+#endif
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    money_put<_CharT, _OutIter>::
+    do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	   long double __units) const
+    {
+      const locale __loc = __io.getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+#ifdef _GLIBCXX_USE_C99
+      // First try a buffer perhaps big enough.
+      int __cs_size = 64;
+      char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 328. Bad sprintf format modifier in money_put<>::do_put()
+      int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
+					"%.*Lf", 0, __units);
+      // If the buffer was not large enough, try again with the correct size.
+      if (__len >= __cs_size)
+	{
+	  __cs_size = __len + 1;
+	  __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+	  __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
+					"%.*Lf", 0, __units);
+	}
+#else
+      // max_exponent10 + 1 for the integer part, + 2 for sign and '\0'.
+      const int __cs_size =
+	__gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 3;
+      char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+      int __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, "%.*Lf", 
+					0, __units);
+#endif
+      string_type __digits(__len, char_type());
+      __ctype.widen(__cs, __cs + __len, &__digits[0]);
+      return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
+	            : _M_insert<false>(__s, __io, __fill, __digits);
+    }
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    money_put<_CharT, _OutIter>::
+    do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+	   const string_type& __digits) const
+    { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
+	            : _M_insert<false>(__s, __io, __fill, __digits); }
+
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  // NB: Not especially useful. Without an ios_base object or some
+  // kind of locale reference, we are left clawing at the air where
+  // the side of the mountain used to be...
+  template<typename _CharT, typename _InIter>
+    time_base::dateorder
+    time_get<_CharT, _InIter>::do_date_order() const
+    { return time_base::no_order; }
+
+  // Expand a strftime format string and parse it.  E.g., do_get_date() may
+  // pass %m/%d/%Y => extracted characters.
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
+			  ios_base::iostate& __err, tm* __tm,
+			  const _CharT* __format) const
+    {
+      const locale& __loc = __io._M_getloc();
+      const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+      const size_t __len = char_traits<_CharT>::length(__format);
+
+      ios_base::iostate __tmperr = ios_base::goodbit;
+      size_t __i = 0;
+      for (; __beg != __end && __i < __len && !__tmperr; ++__i)
+	{
+	  if (__ctype.narrow(__format[__i], 0) == '%')
+	    {
+	      // Verify valid formatting code, attempt to extract.
+	      char __c = __ctype.narrow(__format[++__i], 0);
+	      int __mem = 0;
+	      if (__c == 'E' || __c == 'O')
+		__c = __ctype.narrow(__format[++__i], 0);
+	      switch (__c)
+		{
+		  const char* __cs;
+		  _CharT __wcs[10];
+		case 'a':
+		  // Abbreviated weekday name [tm_wday]
+		  const char_type*  __days1[7];
+		  __tp._M_days_abbreviated(__days1);
+		  __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days1,
+					  7, __io, __tmperr);
+		  break;
+		case 'A':
+		  // Weekday name [tm_wday].
+		  const char_type*  __days2[7];
+		  __tp._M_days(__days2);
+		  __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days2,
+					  7, __io, __tmperr);
+		  break;
+		case 'h':
+		case 'b':
+		  // Abbreviated month name [tm_mon]
+		  const char_type*  __months1[12];
+		  __tp._M_months_abbreviated(__months1);
+		  __beg = _M_extract_name(__beg, __end, __tm->tm_mon, 
+					  __months1, 12, __io, __tmperr);
+		  break;
+		case 'B':
+		  // Month name [tm_mon].
+		  const char_type*  __months2[12];
+		  __tp._M_months(__months2);
+		  __beg = _M_extract_name(__beg, __end, __tm->tm_mon, 
+					  __months2, 12, __io, __tmperr);
+		  break;
+		case 'c':
+		  // Default time and date representation.
+		  const char_type*  __dt[2];
+		  __tp._M_date_time_formats(__dt);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __dt[0]);
+		  break;
+		case 'd':
+		  // Day [01, 31]. [tm_mday]
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2,
+					 __io, __tmperr);
+		  break;
+		case 'e':
+		  // Day [1, 31], with single digits preceded by
+		  // space. [tm_mday]
+		  if (__ctype.is(ctype_base::space, *__beg))
+		    __beg = _M_extract_num(++__beg, __end, __tm->tm_mday, 1, 9,
+					   1, __io, __tmperr);
+		  else
+		    __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31,
+					   2, __io, __tmperr);
+		  break;
+		case 'D':
+		  // Equivalent to %m/%d/%y.[tm_mon, tm_mday, tm_year]
+		  __cs = "%m/%d/%y";
+		  __ctype.widen(__cs, __cs + 9, __wcs);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __wcs);
+		  break;
+		case 'H':
+		  // Hour [00, 23]. [tm_hour]
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2,
+					 __io, __tmperr);
+		  break;
+		case 'I':
+		  // Hour [01, 12]. [tm_hour]
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2,
+					 __io, __tmperr);
+		  break;
+		case 'm':
+		  // Month [01, 12]. [tm_mon]
+		  __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 
+					 __io, __tmperr);
+		  if (!__tmperr)
+		    __tm->tm_mon = __mem - 1;
+		  break;
+		case 'M':
+		  // Minute [00, 59]. [tm_min]
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2,
+					 __io, __tmperr);
+		  break;
+		case 'n':
+		  if (__ctype.narrow(*__beg, 0) == '\n')
+		    ++__beg;
+		  else
+		    __tmperr |= ios_base::failbit;
+		  break;
+		case 'R':
+		  // Equivalent to (%H:%M).
+		  __cs = "%H:%M";
+		  __ctype.widen(__cs, __cs + 6, __wcs);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __wcs);
+		  break;
+		case 'S':
+		  // Seconds. [tm_sec]
+		  // [00, 60] in C99 (one leap-second), [00, 61] in C89.
+#ifdef _GLIBCXX_USE_C99
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2,
+#else
+		  __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 61, 2,
+#endif
+					 __io, __tmperr);
+		  break;
+		case 't':
+		  if (__ctype.narrow(*__beg, 0) == '\t')
+		    ++__beg;
+		  else
+		    __tmperr |= ios_base::failbit;
+		  break;
+		case 'T':
+		  // Equivalent to (%H:%M:%S).
+		  __cs = "%H:%M:%S";
+		  __ctype.widen(__cs, __cs + 9, __wcs);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __wcs);
+		  break;
+		case 'x':
+		  // Locale's date.
+		  const char_type*  __dates[2];
+		  __tp._M_date_formats(__dates);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __dates[0]);
+		  break;
+		case 'X':
+		  // Locale's time.
+		  const char_type*  __times[2];
+		  __tp._M_time_formats(__times);
+		  __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 
+						__tm, __times[0]);
+		  break;
+		case 'y':
+		case 'C': // C99
+		  // Two digit year.
+		case 'Y':
+		  // Year [1900).
+		  // NB: We parse either two digits, implicitly years since
+		  // 1900, or 4 digits, full year.  In both cases we can 
+		  // reconstruct [tm_year].  See also libstdc++/26701.
+		  __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4,
+					 __io, __tmperr);
+		  if (!__tmperr)
+		    __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900;
+		  break;
+		case 'Z':
+		  // Timezone info.
+		  if (__ctype.is(ctype_base::upper, *__beg))
+		    {
+		      int __tmp;
+		      __beg = _M_extract_name(__beg, __end, __tmp,
+				       __timepunct_cache<_CharT>::_S_timezones,
+					      14, __io, __tmperr);
+
+		      // GMT requires special effort.
+		      if (__beg != __end && !__tmperr && __tmp == 0
+			  && (*__beg == __ctype.widen('-')
+			      || *__beg == __ctype.widen('+')))
+			{
+			  __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2,
+						 __io, __tmperr);
+			  __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2,
+						 __io, __tmperr);
+			}
+		    }
+		  else
+		    __tmperr |= ios_base::failbit;
+		  break;
+		default:
+		  // Not recognized.
+		  __tmperr |= ios_base::failbit;
+		}
+	    }
+	  else
+	    {
+	      // Verify format and input match, extract and discard.
+	      if (__format[__i] == *__beg)
+		++__beg;
+	      else
+		__tmperr |= ios_base::failbit;
+	    }
+	}
+
+      if (__tmperr || __i != __len)
+	__err |= ios_base::failbit;
+  
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    _M_extract_num(iter_type __beg, iter_type __end, int& __member,
+		   int __min, int __max, size_t __len,
+		   ios_base& __io, ios_base::iostate& __err) const
+    {
+      const locale& __loc = __io._M_getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+      // As-is works for __len = 1, 2, 4, the values actually used.
+      int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1);
+
+      ++__min;
+      size_t __i = 0;
+      int __value = 0;
+      for (; __beg != __end && __i < __len; ++__beg, ++__i)
+	{
+	  const char __c = __ctype.narrow(*__beg, '*');
+	  if (__c >= '0' && __c <= '9')
+	    {
+	      __value = __value * 10 + (__c - '0');
+	      const int __valuec = __value * __mult;
+	      if (__valuec > __max || __valuec + __mult < __min)
+		break;
+	      __mult /= 10;
+	    }
+	  else
+	    break;
+	}
+      if (__i == __len)
+	__member = __value;
+      // Special encoding for do_get_year, 'y', and 'Y' above.
+      else if (__len == 4 && __i == 2)
+	__member = __value - 100;
+      else
+	__err |= ios_base::failbit;
+
+      return __beg;
+    }
+
+  // Assumptions:
+  // All elements in __names are unique.
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    _M_extract_name(iter_type __beg, iter_type __end, int& __member,
+		    const _CharT** __names, size_t __indexlen,
+		    ios_base& __io, ios_base::iostate& __err) const
+    {
+      typedef char_traits<_CharT>		__traits_type;
+      const locale& __loc = __io._M_getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+      int* __matches = static_cast<int*>(__builtin_alloca(sizeof(int)
+							  * __indexlen));
+      size_t __nmatches = 0;
+      size_t __pos = 0;
+      bool __testvalid = true;
+      const char_type* __name;
+
+      // Look for initial matches.
+      // NB: Some of the locale data is in the form of all lowercase
+      // names, and some is in the form of initially-capitalized
+      // names. Look for both.
+      if (__beg != __end)
+	{
+	  const char_type __c = *__beg;
+	  for (size_t __i1 = 0; __i1 < __indexlen; ++__i1)
+	    if (__c == __names[__i1][0]
+		|| __c == __ctype.toupper(__names[__i1][0]))
+	      __matches[__nmatches++] = __i1;
+	}
+
+      while (__nmatches > 1)
+	{
+	  // Find smallest matching string.
+	  size_t __minlen = __traits_type::length(__names[__matches[0]]);
+	  for (size_t __i2 = 1; __i2 < __nmatches; ++__i2)
+	    __minlen = std::min(__minlen,
+			      __traits_type::length(__names[__matches[__i2]]));
+	  ++__beg, ++__pos;
+	  if (__pos < __minlen && __beg != __end)
+	    for (size_t __i3 = 0; __i3 < __nmatches;)
+	      {
+		__name = __names[__matches[__i3]];
+		if (!(__name[__pos] == *__beg))
+		  __matches[__i3] = __matches[--__nmatches];
+		else
+		  ++__i3;
+	      }
+	  else
+	    break;
+	}
+
+      if (__nmatches == 1)
+	{
+	  // Make sure found name is completely extracted.
+	  ++__beg, ++__pos;
+	  __name = __names[__matches[0]];
+	  const size_t __len = __traits_type::length(__name);
+	  while (__pos < __len && __beg != __end && __name[__pos] == *__beg)
+	    ++__beg, ++__pos;
+
+	  if (__len == __pos)
+	    __member = __matches[0];
+	  else
+	    __testvalid = false;
+	}
+      else
+	__testvalid = false;
+      if (!__testvalid)
+	__err |= ios_base::failbit;
+
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
+			     const _CharT** __names, size_t __indexlen,
+			     ios_base& __io, ios_base::iostate& __err) const
+    {
+      typedef char_traits<_CharT>		__traits_type;
+      const locale& __loc = __io._M_getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+      int* __matches = static_cast<int*>(__builtin_alloca(2 * sizeof(int)
+							  * __indexlen));
+      size_t __nmatches = 0;
+      size_t* __matches_lengths = 0;
+      size_t __pos = 0;
+
+      if (__beg != __end)
+	{
+	  const char_type __c = *__beg;
+	  for (size_t __i = 0; __i < 2 * __indexlen; ++__i)
+	    if (__c == __names[__i][0]
+		|| __c == __ctype.toupper(__names[__i][0]))
+	      __matches[__nmatches++] = __i;
+	}
+
+      if (__nmatches)
+	{
+	  ++__beg, ++__pos;
+
+	  __matches_lengths
+	    = static_cast<size_t*>(__builtin_alloca(sizeof(size_t)
+						    * __nmatches));
+	  for (size_t __i = 0; __i < __nmatches; ++__i)
+	    __matches_lengths[__i]
+	      = __traits_type::length(__names[__matches[__i]]);
+	}
+
+      for (; __beg != __end; ++__beg, ++__pos)
+	{
+	  size_t __nskipped = 0;
+	  const char_type __c = *__beg;
+	  for (size_t __i = 0; __i < __nmatches;)
+	    {
+	      const char_type* __name = __names[__matches[__i]];
+	      if (__pos >= __matches_lengths[__i])
+		++__nskipped, ++__i;
+	      else if (!(__name[__pos] == __c))
+		{
+		  --__nmatches;
+		  __matches[__i] = __matches[__nmatches];
+		  __matches_lengths[__i] = __matches_lengths[__nmatches];
+		}
+	      else
+		++__i;
+	    }
+	  if (__nskipped == __nmatches)
+	    break;
+	}
+
+      if ((__nmatches == 1 && __matches_lengths[0] == __pos)
+	  || (__nmatches == 2 && (__matches_lengths[0] == __pos
+				  || __matches_lengths[1] == __pos)))
+	__member = (__matches[0] >= __indexlen
+		    ? __matches[0] - __indexlen : __matches[0]);
+      else
+	__err |= ios_base::failbit;
+
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
+		ios_base::iostate& __err, tm* __tm) const
+    {
+      const locale& __loc = __io._M_getloc();
+      const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
+      const char_type*  __times[2];
+      __tp._M_time_formats(__times);
+      __beg = _M_extract_via_format(__beg, __end, __io, __err, 
+				    __tm, __times[0]);
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
+		ios_base::iostate& __err, tm* __tm) const
+    {
+      const locale& __loc = __io._M_getloc();
+      const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
+      const char_type*  __dates[2];
+      __tp._M_date_formats(__dates);
+      __beg = _M_extract_via_format(__beg, __end, __io, __err, 
+				    __tm, __dates[0]);
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
+		   ios_base::iostate& __err, tm* __tm) const
+    {
+      typedef char_traits<_CharT>		__traits_type;
+      const locale& __loc = __io._M_getloc();
+      const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+      const char_type* __days[14];
+      __tp._M_days_abbreviated(__days);
+      __tp._M_days(__days + 7);
+      int __tmpwday;
+      ios_base::iostate __tmperr = ios_base::goodbit;
+
+      __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7,
+				       __io, __tmperr);
+      if (!__tmperr)
+	__tm->tm_wday = __tmpwday;
+      else
+	__err |= ios_base::failbit;
+
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+     }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    do_get_monthname(iter_type __beg, iter_type __end,
+                     ios_base& __io, ios_base::iostate& __err, tm* __tm) const
+    {
+      typedef char_traits<_CharT>		__traits_type;
+      const locale& __loc = __io._M_getloc();
+      const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+      const char_type*  __months[24];
+      __tp._M_months_abbreviated(__months);
+      __tp._M_months(__months + 12);
+      int __tmpmon;
+      ios_base::iostate __tmperr = ios_base::goodbit;
+
+      __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12,
+				       __io, __tmperr);
+      if (!__tmperr)
+	__tm->tm_mon = __tmpmon;
+      else
+	__err |= ios_base::failbit;
+
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _InIter>
+    _InIter
+    time_get<_CharT, _InIter>::
+    do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
+		ios_base::iostate& __err, tm* __tm) const
+    {
+      const locale& __loc = __io._M_getloc();
+      const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+      int __tmpyear;
+      ios_base::iostate __tmperr = ios_base::goodbit;
+
+      __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4,
+			     __io, __tmperr);
+      if (!__tmperr)
+	__tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900;
+      else
+	__err |= ios_base::failbit;
+
+      if (__beg == __end)
+	__err |= ios_base::eofbit;
+      return __beg;
+    }
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    time_put<_CharT, _OutIter>::
+    put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
+	const _CharT* __beg, const _CharT* __end) const
+    {
+      const locale& __loc = __io._M_getloc();
+      ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
+      for (; __beg != __end; ++__beg)
+	if (__ctype.narrow(*__beg, 0) != '%')
+	  {
+	    *__s = *__beg;
+	    ++__s;
+	  }
+	else if (++__beg != __end)
+	  {
+	    char __format;
+	    char __mod = 0;
+	    const char __c = __ctype.narrow(*__beg, 0);
+	    if (__c != 'E' && __c != 'O')
+	      __format = __c;
+	    else if (++__beg != __end)
+	      {
+		__mod = __c;
+		__format = __ctype.narrow(*__beg, 0);
+	      }
+	    else
+	      break;
+	    __s = this->do_put(__s, __io, __fill, __tm, __format, __mod);
+	  }
+	else
+	  break;
+      return __s;
+    }
+
+  template<typename _CharT, typename _OutIter>
+    _OutIter
+    time_put<_CharT, _OutIter>::
+    do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm,
+	   char __format, char __mod) const
+    {
+      const locale& __loc = __io._M_getloc();
+      ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
+      __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
+
+      // NB: This size is arbitrary. Should this be a data member,
+      // initialized at construction?
+      const size_t __maxlen = 128;
+      char_type __res[__maxlen];
+
+      // NB: In IEE 1003.1-200x, and perhaps other locale models, it
+      // is possible that the format character will be longer than one
+      // character. Possibilities include 'E' or 'O' followed by a
+      // format character: if __mod is not the default argument, assume
+      // it's a valid modifier.
+      char_type __fmt[4];
+      __fmt[0] = __ctype.widen('%');
+      if (!__mod)
+	{
+	  __fmt[1] = __format;
+	  __fmt[2] = char_type();
+	}
+      else
+	{
+	  __fmt[1] = __mod;
+	  __fmt[2] = __format;
+	  __fmt[3] = char_type();
+	}
+
+      __tp._M_put(__res, __maxlen, __fmt, __tm);
+
+      // Write resulting, fully-formatted string to output iterator.
+      return std::__write(__s, __res, char_traits<char_type>::length(__res));
+    }
+
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class moneypunct<char, false>;
+  extern template class moneypunct<char, true>;
+  extern template class moneypunct_byname<char, false>;
+  extern template class moneypunct_byname<char, true>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL money_get<char>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL money_put<char>;
+  extern template class __timepunct<char>;
+  extern template class time_put<char>;
+  extern template class time_put_byname<char>;
+  extern template class time_get<char>;
+  extern template class time_get_byname<char>;
+  extern template class messages<char>;
+  extern template class messages_byname<char>;
+
+  extern template
+    const moneypunct<char, true>&
+    use_facet<moneypunct<char, true> >(const locale&);
+
+  extern template
+    const moneypunct<char, false>&
+    use_facet<moneypunct<char, false> >(const locale&);
+
+  extern template
+    const money_put<char>&
+    use_facet<money_put<char> >(const locale&);
+
+  extern template
+    const money_get<char>&
+    use_facet<money_get<char> >(const locale&);
+
+  extern template
+    const __timepunct<char>&
+    use_facet<__timepunct<char> >(const locale&);
+
+  extern template
+    const time_put<char>&
+    use_facet<time_put<char> >(const locale&);
+
+  extern template
+    const time_get<char>&
+    use_facet<time_get<char> >(const locale&);
+
+  extern template
+    const messages<char>&
+    use_facet<messages<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<moneypunct<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<money_put<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<money_get<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<__timepunct<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<time_put<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<time_get<char> >(const locale&);
+
+  extern template
+    bool
+    has_facet<messages<char> >(const locale&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class moneypunct<wchar_t, false>;
+  extern template class moneypunct<wchar_t, true>;
+  extern template class moneypunct_byname<wchar_t, false>;
+  extern template class moneypunct_byname<wchar_t, true>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL money_get<wchar_t>;
+  extern template class _GLIBCXX_NAMESPACE_LDBL money_put<wchar_t>;
+  extern template class __timepunct<wchar_t>;
+  extern template class time_put<wchar_t>;
+  extern template class time_put_byname<wchar_t>;
+  extern template class time_get<wchar_t>;
+  extern template class time_get_byname<wchar_t>;
+  extern template class messages<wchar_t>;
+  extern template class messages_byname<wchar_t>;
+
+  extern template
+    const moneypunct<wchar_t, true>&
+    use_facet<moneypunct<wchar_t, true> >(const locale&);
+
+  extern template
+    const moneypunct<wchar_t, false>&
+    use_facet<moneypunct<wchar_t, false> >(const locale&);
+
+  extern template
+    const money_put<wchar_t>&
+    use_facet<money_put<wchar_t> >(const locale&);
+
+  extern template
+    const money_get<wchar_t>&
+    use_facet<money_get<wchar_t> >(const locale&);
+
+  extern template
+    const __timepunct<wchar_t>&
+    use_facet<__timepunct<wchar_t> >(const locale&);
+
+  extern template
+    const time_put<wchar_t>&
+    use_facet<time_put<wchar_t> >(const locale&);
+
+  extern template
+    const time_get<wchar_t>&
+    use_facet<time_get<wchar_t> >(const locale&);
+
+  extern template
+    const messages<wchar_t>&
+    use_facet<messages<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<moneypunct<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<money_put<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<money_get<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<__timepunct<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<time_put<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<time_get<wchar_t> >(const locale&);
+
+  extern template
+    bool
+    has_facet<messages<wchar_t> >(const locale&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/localefwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/localefwd.h
new file mode 100644
index 000000000..38e7dd314
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/localefwd.h
@@ -0,0 +1,192 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/localefwd.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{locale}
+ */
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#ifndef _LOCALE_FWD_H
+#define _LOCALE_FWD_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/c++locale.h>  // Defines __c_locale, config-specific include
+#include <iosfwd>            // For ostreambuf_iterator, istreambuf_iterator
+#include <cctype>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /** 
+   *  @defgroup locales Locales
+   *
+   *  Classes and functions for internationalization and localization.
+   */
+
+  // 22.1.1 Locale
+  class locale;
+
+  template<typename _Facet>
+    bool
+    has_facet(const locale&) throw();
+
+  template<typename _Facet>
+    const _Facet&
+    use_facet(const locale&);
+
+  // 22.1.3 Convenience interfaces
+  template<typename _CharT>
+    bool
+    isspace(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isprint(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    iscntrl(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isupper(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    islower(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isalpha(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isdigit(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    ispunct(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isxdigit(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isalnum(_CharT, const locale&);
+
+  template<typename _CharT>
+    bool
+    isgraph(_CharT, const locale&);
+
+  template<typename _CharT>
+    _CharT
+    toupper(_CharT, const locale&);
+
+  template<typename _CharT>
+    _CharT
+    tolower(_CharT, const locale&);
+
+  // 22.2.1 and 22.2.1.3 ctype
+  class ctype_base;
+  template<typename _CharT>
+    class ctype;
+  template<> class ctype<char>;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> class ctype<wchar_t>;
+#endif
+  template<typename _CharT>
+    class ctype_byname;
+  // NB: Specialized for char and wchar_t in locale_facets.h.
+
+  class codecvt_base;
+  template<typename _InternT, typename _ExternT, typename _StateT>
+    class codecvt;
+  template<> class codecvt<char, char, mbstate_t>;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> class codecvt<wchar_t, char, mbstate_t>;
+#endif
+  template<typename _InternT, typename _ExternT, typename _StateT>
+    class codecvt_byname;
+
+  // 22.2.2 and 22.2.3 numeric
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+  template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+    class num_get;
+  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+    class num_put;
+_GLIBCXX_END_NAMESPACE_LDBL
+  template<typename _CharT> class numpunct;
+  template<typename _CharT> class numpunct_byname;
+
+  // 22.2.4 collation
+  template<typename _CharT>
+    class collate;
+  template<typename _CharT> class
+    collate_byname;
+
+  // 22.2.5 date and time
+  class time_base;
+  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
+    class time_get;
+  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
+    class time_get_byname;
+  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+    class time_put;
+  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+    class time_put_byname;
+
+  // 22.2.6 money
+  class money_base;
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
+    class money_get;
+  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+    class money_put;
+_GLIBCXX_END_NAMESPACE_LDBL
+  template<typename _CharT, bool _Intl = false>
+    class moneypunct;
+  template<typename _CharT, bool _Intl = false>
+    class moneypunct_byname;
+
+  // 22.2.7 message retrieval
+  class messages_base;
+  template<typename _CharT>
+    class messages;
+  template<typename _CharT>
+    class messages_byname;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/mask_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/mask_array.h
new file mode 100644
index 000000000..8b652a838
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/mask_array.h
@@ -0,0 +1,209 @@
+// The template and inlines for the -*- C++ -*- mask_array class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2009, 2010
+//  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/mask_array.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _MASK_ARRAY_H
+#define _MASK_ARRAY_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  /**
+   *  @brief  Reference to selected subset of an array.
+   *
+   *  A mask_array is a reference to the actual elements of an array specified
+   *  by a bitmask in the form of an array of bool.  The way to get a
+   *  mask_array is to call operator[](valarray<bool>) on a valarray.  The
+   *  returned mask_array then permits carrying operations out on the
+   *  referenced subset of elements in the original valarray.
+   *
+   *  For example, if a mask_array is obtained using the array (false, true,
+   *  false, true) as an argument, the mask array has two elements referring
+   *  to array[1] and array[3] in the underlying array.
+   *
+   *  @param  Tp  Element type.
+   */
+  template <class _Tp>
+    class mask_array
+    {
+    public:
+      typedef _Tp value_type;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 253. valarray helper functions are almost entirely useless
+
+      ///  Copy constructor.  Both slices refer to the same underlying array.
+      mask_array (const mask_array&);
+      
+      ///  Assignment operator.  Assigns elements to corresponding elements
+      ///  of @a a.
+      mask_array& operator=(const mask_array&);
+
+      void operator=(const valarray<_Tp>&) const;
+      ///  Multiply slice elements by corresponding elements of @a v.
+      void operator*=(const valarray<_Tp>&) const;
+      ///  Divide slice elements by corresponding elements of @a v.
+      void operator/=(const valarray<_Tp>&) const;
+      ///  Modulo slice elements by corresponding elements of @a v.
+      void operator%=(const valarray<_Tp>&) const;
+      ///  Add corresponding elements of @a v to slice elements.
+      void operator+=(const valarray<_Tp>&) const;
+      ///  Subtract corresponding elements of @a v from slice elements.
+      void operator-=(const valarray<_Tp>&) const;
+      ///  Logical xor slice elements with corresponding elements of @a v.
+      void operator^=(const valarray<_Tp>&) const;
+      ///  Logical and slice elements with corresponding elements of @a v.
+      void operator&=(const valarray<_Tp>&) const;
+      ///  Logical or slice elements with corresponding elements of @a v.
+      void operator|=(const valarray<_Tp>&) const;
+      ///  Left shift slice elements by corresponding elements of @a v.
+      void operator<<=(const valarray<_Tp>&) const;
+      ///  Right shift slice elements by corresponding elements of @a v.
+      void operator>>=(const valarray<_Tp>&) const;
+      ///  Assign all slice elements to @a t.
+      void operator=(const _Tp&) const;
+
+        //        ~mask_array ();
+
+      template<class _Dom>
+        void operator=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator*=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator/=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator%=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator+=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator-=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator^=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator&=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator|=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator<<=(const _Expr<_Dom,_Tp>&) const;
+      template<class _Dom>
+        void operator>>=(const _Expr<_Dom,_Tp>&) const;
+
+    private:
+      mask_array(_Array<_Tp>, size_t, _Array<bool>);
+      friend class valarray<_Tp>;
+
+      const size_t       _M_sz;
+      const _Array<bool> _M_mask;
+      const _Array<_Tp>  _M_array;
+
+      // not implemented
+      mask_array();
+    };
+
+  template<typename _Tp>
+    inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& a)
+    : _M_sz(a._M_sz), _M_mask(a._M_mask), _M_array(a._M_array) {}
+
+  template<typename _Tp>
+    inline
+    mask_array<_Tp>::mask_array(_Array<_Tp> __a, size_t __s, _Array<bool> __m)
+    : _M_sz(__s), _M_mask(__m), _M_array(__a) {}
+
+  template<typename _Tp>
+    inline mask_array<_Tp>&
+    mask_array<_Tp>::operator=(const mask_array<_Tp>& __a)
+    {
+      std::__valarray_copy(__a._M_array, __a._M_mask,
+			   _M_sz, _M_array, _M_mask);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline void
+    mask_array<_Tp>::operator=(const _Tp& __t) const
+    { std::__valarray_fill(_M_array, _M_sz, _M_mask, __t); }
+
+  template<typename _Tp>
+    inline void
+    mask_array<_Tp>::operator=(const valarray<_Tp>& __v) const
+    { std::__valarray_copy(_Array<_Tp>(__v), __v.size(), _M_array, _M_mask); }
+
+  template<typename _Tp>
+    template<class _Ex>
+      inline void
+      mask_array<_Tp>::operator=(const _Expr<_Ex, _Tp>& __e) const
+      { std::__valarray_copy(__e, __e.size(), _M_array, _M_mask); }
+
+#undef _DEFINE_VALARRAY_OPERATOR
+#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name)				\
+  template<typename _Tp>						\
+    inline void								\
+    mask_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const	\
+    {									\
+      _Array_augmented_##_Name(_M_array, _M_mask,			\
+			       _Array<_Tp>(__v), __v.size());		\
+    }									\
+									\
+  template<typename _Tp>                                                \
+    template<class _Dom>			                        \
+      inline void							\
+      mask_array<_Tp>::operator _Op##=(const _Expr<_Dom, _Tp>& __e) const\
+      {									\
+	_Array_augmented_##_Name(_M_array, _M_mask, __e, __e.size());   \
+      }
+
+_DEFINE_VALARRAY_OPERATOR(*, __multiplies)
+_DEFINE_VALARRAY_OPERATOR(/, __divides)
+_DEFINE_VALARRAY_OPERATOR(%, __modulus)
+_DEFINE_VALARRAY_OPERATOR(+, __plus)
+_DEFINE_VALARRAY_OPERATOR(-, __minus)
+_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor)
+_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and)
+_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or)
+_DEFINE_VALARRAY_OPERATOR(<<, __shift_left)
+_DEFINE_VALARRAY_OPERATOR(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_OPERATOR
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _MASK_ARRAY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/move.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/move.h
new file mode 100644
index 000000000..f5918999c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/move.h
@@ -0,0 +1,145 @@
+// Move, forward and identity for C++0x + swap -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/move.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{utility}
+ */
+
+#ifndef _MOVE_H
+#define _MOVE_H 1
+
+#include <bits/c++config.h>
+#include <bits/concept_check.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Used, in C++03 mode too, by allocators, etc.
+  template<typename _Tp>
+    inline _Tp*
+    __addressof(_Tp& __r)
+    {
+      return reinterpret_cast<_Tp*>
+	(&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <type_traits> // Brings in std::declval too.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+  
+  /// forward (as per N3143)
+  template<typename _Tp>
+    inline _Tp&&
+    forward(typename std::remove_reference<_Tp>::type& __t) 
+    { return static_cast<_Tp&&>(__t); }
+
+  template<typename _Tp>
+    inline _Tp&&
+    forward(typename std::remove_reference<_Tp>::type&& __t) 
+    {
+      static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
+		    " substituting _Tp is an lvalue reference type");
+      return static_cast<_Tp&&>(__t);
+    }
+
+  /**
+   *  @brief Move a value.
+   *  @ingroup mutating_algorithms
+   *  @param  __t  A thing of arbitrary type.
+   *  @return Same, moved.
+  */
+  template<typename _Tp>
+    inline typename std::remove_reference<_Tp>::type&&
+    move(_Tp&& __t)
+    { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
+
+  /// declval, from type_traits.
+
+  /**
+   *  @brief Returns the actual address of the object or function
+   *         referenced by r, even in the presence of an overloaded
+   *         operator&.
+   *  @param  __r  Reference to an object or function.
+   *  @return   The actual address.
+  */
+  template<typename _Tp>
+    inline _Tp*
+    addressof(_Tp& __r)
+    { return std::__addressof(__r); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#define _GLIBCXX_MOVE(__val) std::move(__val)
+#define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val)
+#else
+#define _GLIBCXX_MOVE(__val) (__val)
+#define _GLIBCXX_FORWARD(_Tp, __val) (__val)
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Swaps two values.
+   *  @ingroup mutating_algorithms
+   *  @param  __a  A thing of arbitrary type.
+   *  @param  __b  Another thing of arbitrary type.
+   *  @return   Nothing.
+  */
+  template<typename _Tp>
+    inline void
+    swap(_Tp& __a, _Tp& __b)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_SGIAssignableConcept<_Tp>)
+
+      _Tp __tmp = _GLIBCXX_MOVE(__a);
+      __a = _GLIBCXX_MOVE(__b);
+      __b = _GLIBCXX_MOVE(__tmp);
+    }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 809. std::swap should be overloaded for array types.
+  template<typename _Tp, size_t _Nm>
+    inline void
+    swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
+    {
+      for (size_t __n = 0; __n < _Nm; ++__n)
+	swap(__a[__n], __b[__n]);
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _MOVE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream.tcc
new file mode 100644
index 000000000..c0dce6a23
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream.tcc
@@ -0,0 +1,409 @@
+// ostream classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ostream.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ostream}
+ */
+
+//
+// ISO C++ 14882: 27.6.2  Output streams
+//
+
+#ifndef _OSTREAM_TCC
+#define _OSTREAM_TCC 1
+
+#pragma GCC system_header
+
+#include <bits/cxxabi_forced.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>::sentry::
+    sentry(basic_ostream<_CharT, _Traits>& __os)
+    : _M_ok(false), _M_os(__os)
+    {
+      // XXX MT
+      if (__os.tie() && __os.good())
+	__os.tie()->flush();
+
+      if (__os.good())
+	_M_ok = true;
+      else
+	__os.setstate(ios_base::failbit);
+    }
+
+  template<typename _CharT, typename _Traits>
+    template<typename _ValueT>
+      basic_ostream<_CharT, _Traits>&
+      basic_ostream<_CharT, _Traits>::
+      _M_insert(_ValueT __v)
+      {
+	sentry __cerb(*this);
+	if (__cerb)
+	  {
+	    ios_base::iostate __err = ios_base::goodbit;
+	    __try
+	      {
+		const __num_put_type& __np = __check_facet(this->_M_num_put);
+		if (__np.put(*this, *this, this->fill(), __v).failed())
+		  __err |= ios_base::badbit;
+	      }
+	    __catch(__cxxabiv1::__forced_unwind&)
+	      {
+		this->_M_setstate(ios_base::badbit);		
+		__throw_exception_again;
+	      }
+	    __catch(...)
+	      { this->_M_setstate(ios_base::badbit); }
+	    if (__err)
+	      this->setstate(__err);
+	  }
+	return *this;
+      }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    operator<<(short __n)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 117. basic_ostream uses nonexistent num_put member functions.
+      const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+      if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+	return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
+      else
+	return _M_insert(static_cast<long>(__n));
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    operator<<(int __n)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 117. basic_ostream uses nonexistent num_put member functions.
+      const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+      if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+	return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
+      else
+	return _M_insert(static_cast<long>(__n));
+    }
+  
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    operator<<(__streambuf_type* __sbin)
+    {
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this);
+      if (__cerb && __sbin)
+	{
+	  __try
+	    {
+	      if (!__copy_streambufs(__sbin, this->rdbuf()))
+		__err |= ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);		
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::failbit); }
+	}
+      else if (!__sbin)
+	__err |= ios_base::badbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    put(char_type __c)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 60. What is a formatted input function?
+      // basic_ostream::put(char_type) is an unformatted output function.
+      // DR 63. Exception-handling policy for unformatted output.
+      // Unformatted output functions should catch exceptions thrown
+      // from streambuf members.
+      sentry __cerb(*this);
+      if (__cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __put = this->rdbuf()->sputc(__c);
+	      if (traits_type::eq_int_type(__put, traits_type::eof()))
+		__err |= ios_base::badbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);		
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    write(const _CharT* __s, streamsize __n)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 60. What is a formatted input function?
+      // basic_ostream::write(const char_type*, streamsize) is an
+      // unformatted output function.
+      // DR 63. Exception-handling policy for unformatted output.
+      // Unformatted output functions should catch exceptions thrown
+      // from streambuf members.
+      sentry __cerb(*this);
+      if (__cerb)
+	{
+	  __try
+	    { _M_write(__s, __n); }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);		
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    flush()
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 60. What is a formatted input function?
+      // basic_ostream::flush() is *not* an unformatted output function.
+      ios_base::iostate __err = ios_base::goodbit;
+      __try
+	{
+	  if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
+	    __err |= ios_base::badbit;
+	}
+      __catch(__cxxabiv1::__forced_unwind&)
+	{
+	  this->_M_setstate(ios_base::badbit);		
+	  __throw_exception_again;
+	}
+      __catch(...)
+	{ this->_M_setstate(ios_base::badbit); }
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    typename basic_ostream<_CharT, _Traits>::pos_type
+    basic_ostream<_CharT, _Traits>::
+    tellp()
+    {
+      pos_type __ret = pos_type(-1);
+      __try
+	{
+	  if (!this->fail())
+	    __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
+	}
+      __catch(__cxxabiv1::__forced_unwind&)
+	{
+	  this->_M_setstate(ios_base::badbit);		
+	  __throw_exception_again;
+	}
+      __catch(...)
+	{ this->_M_setstate(ios_base::badbit); }
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    seekp(pos_type __pos)
+    {
+      ios_base::iostate __err = ios_base::goodbit;
+      __try
+	{
+	  if (!this->fail())
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 136.  seekp, seekg setting wrong streams?
+	      const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+							     ios_base::out);
+
+	      // 129. Need error indication from seekp() and seekg()
+	      if (__p == pos_type(off_type(-1)))
+		__err |= ios_base::failbit;
+	    }
+	}
+      __catch(__cxxabiv1::__forced_unwind&)
+	{
+	  this->_M_setstate(ios_base::badbit);		
+	  __throw_exception_again;
+	}
+      __catch(...)
+	{ this->_M_setstate(ios_base::badbit); }
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    basic_ostream<_CharT, _Traits>::
+    seekp(off_type __off, ios_base::seekdir __dir)
+    {
+      ios_base::iostate __err = ios_base::goodbit;
+      __try
+	{
+	  if (!this->fail())
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 136.  seekp, seekg setting wrong streams?
+	      const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+							     ios_base::out);
+
+	      // 129. Need error indication from seekp() and seekg()
+	      if (__p == pos_type(off_type(-1)))
+		__err |= ios_base::failbit;
+	    }
+	}
+      __catch(__cxxabiv1::__forced_unwind&)
+	{
+	  this->_M_setstate(ios_base::badbit);		
+	  __throw_exception_again;
+	}
+      __catch(...)
+	{ this->_M_setstate(ios_base::badbit); }
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
+    {
+      if (!__s)
+	__out.setstate(ios_base::badbit);
+      else
+	{
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 167.  Improper use of traits_type::length()
+	  const size_t __clen = char_traits<char>::length(__s);
+	  __try
+	    {
+	      struct __ptr_guard
+	      {
+		_CharT *__p;
+		__ptr_guard (_CharT *__ip): __p(__ip) { }
+		~__ptr_guard() { delete[] __p; }
+		_CharT* __get() { return __p; }
+	      } __pg (new _CharT[__clen]);
+
+	      _CharT *__ws = __pg.__get();
+	      for (size_t  __i = 0; __i < __clen; ++__i)
+		__ws[__i] = __out.widen(__s[__i]);
+	      __ostream_insert(__out, __ws, __clen);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __out._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __out._M_setstate(ios_base::badbit); }
+	}
+      return __out;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_ostream<char>;
+  extern template ostream& endl(ostream&);
+  extern template ostream& ends(ostream&);
+  extern template ostream& flush(ostream&);
+  extern template ostream& operator<<(ostream&, char);
+  extern template ostream& operator<<(ostream&, unsigned char);
+  extern template ostream& operator<<(ostream&, signed char);
+  extern template ostream& operator<<(ostream&, const char*);
+  extern template ostream& operator<<(ostream&, const unsigned char*);
+  extern template ostream& operator<<(ostream&, const signed char*);
+
+  extern template ostream& ostream::_M_insert(long);
+  extern template ostream& ostream::_M_insert(unsigned long);
+  extern template ostream& ostream::_M_insert(bool);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  extern template ostream& ostream::_M_insert(long long);
+  extern template ostream& ostream::_M_insert(unsigned long long);
+#endif
+  extern template ostream& ostream::_M_insert(double);
+  extern template ostream& ostream::_M_insert(long double);
+  extern template ostream& ostream::_M_insert(const void*);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_ostream<wchar_t>;
+  extern template wostream& endl(wostream&);
+  extern template wostream& ends(wostream&);
+  extern template wostream& flush(wostream&);
+  extern template wostream& operator<<(wostream&, wchar_t);
+  extern template wostream& operator<<(wostream&, char);
+  extern template wostream& operator<<(wostream&, const wchar_t*);
+  extern template wostream& operator<<(wostream&, const char*);
+
+  extern template wostream& wostream::_M_insert(long);
+  extern template wostream& wostream::_M_insert(unsigned long);
+  extern template wostream& wostream::_M_insert(bool);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  extern template wostream& wostream::_M_insert(long long);
+  extern template wostream& wostream::_M_insert(unsigned long long);
+#endif
+  extern template wostream& wostream::_M_insert(double);
+  extern template wostream& wostream::_M_insert(long double);
+  extern template wostream& wostream::_M_insert(const void*);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream_insert.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream_insert.h
new file mode 100644
index 000000000..f4228657d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/ostream_insert.h
@@ -0,0 +1,129 @@
+// Helpers for ostream inserters -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/ostream_insert.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ostream}
+ */
+
+#ifndef _OSTREAM_INSERT_H
+#define _OSTREAM_INSERT_H 1
+
+#pragma GCC system_header
+
+#include <iosfwd>
+#include <bits/cxxabi_forced.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    inline void
+    __ostream_write(basic_ostream<_CharT, _Traits>& __out,
+		    const _CharT* __s, streamsize __n)
+    {
+      typedef basic_ostream<_CharT, _Traits>       __ostream_type;      
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const streamsize __put = __out.rdbuf()->sputn(__s, __n);
+      if (__put != __n)
+	__out.setstate(__ios_base::badbit);
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline void
+    __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
+    {
+      typedef basic_ostream<_CharT, _Traits>       __ostream_type;      
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const _CharT __c = __out.fill();
+      for (; __n > 0; --__n)
+	{
+	  const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
+	  if (_Traits::eq_int_type(__put, _Traits::eof()))
+	    {
+	      __out.setstate(__ios_base::badbit);
+	      break;
+	    }
+	}
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
+		     const _CharT* __s, streamsize __n)
+    {
+      typedef basic_ostream<_CharT, _Traits>       __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      typename __ostream_type::sentry __cerb(__out);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      const streamsize __w = __out.width();
+	      if (__w > __n)
+		{
+		  const bool __left = ((__out.flags()
+					& __ios_base::adjustfield)
+				       == __ios_base::left);
+		  if (!__left)
+		    __ostream_fill(__out, __w - __n);
+		  if (__out.good())
+		    __ostream_write(__out, __s, __n);
+		  if (__left && __out.good())
+		    __ostream_fill(__out, __w - __n);
+		}
+	      else
+		__ostream_write(__out, __s, __n);
+	      __out.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __out._M_setstate(__ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __out._M_setstate(__ios_base::badbit); }
+	}
+      return __out;
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template wostream& __ostream_insert(wostream&, const wchar_t*,
+					     streamsize);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif /* _OSTREAM_INSERT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/postypes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/postypes.h
new file mode 100644
index 000000000..69235d9a0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/postypes.h
@@ -0,0 +1,244 @@
+// Position types -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/postypes.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+//
+// ISO C++ 14882: 27.4.1 - Types
+// ISO C++ 14882: 27.4.3 - Template class fpos
+//
+
+#ifndef _GLIBCXX_POSTYPES_H
+#define _GLIBCXX_POSTYPES_H 1
+
+#pragma GCC system_header
+
+#include <cwchar> // For mbstate_t
+
+// XXX If <stdint.h> is really needed, make sure to define the macros
+// before including it, in order not to break <tr1/cstdint> (and <cstdint>
+// in C++0x).  Reconsider all this as soon as possible...
+#if (defined(_GLIBCXX_HAVE_INT64_T) && !defined(_GLIBCXX_HAVE_INT64_T_LONG) \
+     && !defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG))
+
+#ifndef __STDC_LIMIT_MACROS
+# define _UNDEF__STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define _UNDEF__STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h> // For int64_t
+#ifdef _UNDEF__STDC_LIMIT_MACROS
+# undef __STDC_LIMIT_MACROS
+# undef _UNDEF__STDC_LIMIT_MACROS
+#endif
+#ifdef _UNDEF__STDC_CONSTANT_MACROS
+# undef __STDC_CONSTANT_MACROS
+# undef _UNDEF__STDC_CONSTANT_MACROS
+#endif
+
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // The types streamoff, streampos and wstreampos and the class
+  // template fpos<> are described in clauses 21.1.2, 21.1.3, 27.1.2,
+  // 27.2, 27.4.1, 27.4.3 and D.6. Despite all this verbiage, the
+  // behaviour of these types is mostly implementation defined or
+  // unspecified. The behaviour in this implementation is as noted
+  // below.
+
+  /**
+   *  @brief  Type used by fpos, char_traits<char>, and char_traits<wchar_t>.
+   *
+   *  In clauses 21.1.3.1 and 27.4.1 streamoff is described as an
+   *  implementation defined type.
+   *  Note: In versions of GCC up to and including GCC 3.3, streamoff
+   *  was typedef long.
+  */  
+#ifdef _GLIBCXX_HAVE_INT64_T_LONG
+  typedef long          streamoff;
+#elif defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG)
+  typedef long long     streamoff;
+#elif defined(_GLIBCXX_HAVE_INT64_T) 
+  typedef int64_t       streamoff;
+#else
+  typedef long long     streamoff;
+#endif
+
+  /// Integral type for I/O operation counts and buffer sizes.
+  typedef ptrdiff_t	streamsize; // Signed integral type
+
+  /**
+   *  @brief  Class representing stream positions.
+   *
+   *  The standard places no requirements upon the template parameter StateT.
+   *  In this implementation StateT must be DefaultConstructible,
+   *  CopyConstructible and Assignable.  The standard only requires that fpos
+   *  should contain a member of type StateT. In this implementation it also
+   *  contains an offset stored as a signed integer.
+   *
+   *  @param  StateT  Type passed to and returned from state().
+   */
+  template<typename _StateT>
+    class fpos
+    {
+    private:
+      streamoff	                _M_off;
+      _StateT			_M_state;
+
+    public:
+      // The standard doesn't require that fpos objects can be default
+      // constructed. This implementation provides a default
+      // constructor that initializes the offset to 0 and default
+      // constructs the state.
+      fpos()
+      : _M_off(0), _M_state() { }
+
+      // The standard requires that fpos objects can be constructed
+      // from streamoff objects using the constructor syntax, and
+      // fails to give any meaningful semantics. In this
+      // implementation implicit conversion is also allowed, and this
+      // constructor stores the streamoff as the offset and default
+      // constructs the state.
+      /// Construct position from offset.
+      fpos(streamoff __off)
+      : _M_off(__off), _M_state() { }
+
+      /// Convert to streamoff.
+      operator streamoff() const { return _M_off; }
+
+      /// Remember the value of @a st.
+      void
+      state(_StateT __st)
+      { _M_state = __st; }
+
+      /// Return the last set value of @a st.
+      _StateT
+      state() const
+      { return _M_state; }
+
+      // The standard requires that this operator must be defined, but
+      // gives no semantics. In this implementation it just adds its
+      // argument to the stored offset and returns *this.
+      /// Add offset to this position.
+      fpos&
+      operator+=(streamoff __off)
+      {
+	_M_off += __off;
+	return *this;
+      }
+
+      // The standard requires that this operator must be defined, but
+      // gives no semantics. In this implementation it just subtracts
+      // its argument from the stored offset and returns *this.
+      /// Subtract offset from this position.
+      fpos&
+      operator-=(streamoff __off)
+      {
+	_M_off -= __off;
+	return *this;
+      }
+
+      // The standard requires that this operator must be defined, but
+      // defines its semantics only in terms of operator-. In this
+      // implementation it constructs a copy of *this, adds the
+      // argument to that copy using operator+= and then returns the
+      // copy.
+      /// Add position and offset.
+      fpos
+      operator+(streamoff __off) const
+      {
+	fpos __pos(*this);
+	__pos += __off;
+	return __pos;
+      }
+
+      // The standard requires that this operator must be defined, but
+      // defines its semantics only in terms of operator+. In this
+      // implementation it constructs a copy of *this, subtracts the
+      // argument from that copy using operator-= and then returns the
+      // copy.
+      /// Subtract offset from position.
+      fpos
+      operator-(streamoff __off) const
+      {
+	fpos __pos(*this);
+	__pos -= __off;
+	return __pos;
+      }
+
+      // The standard requires that this operator must be defined, but
+      // defines its semantics only in terms of operator+. In this
+      // implementation it returns the difference between the offset
+      // stored in *this and in the argument.
+      /// Subtract position to return offset.
+      streamoff
+      operator-(const fpos& __other) const
+      { return _M_off - __other._M_off; }
+    };
+
+  // The standard only requires that operator== must be an
+  // equivalence relation. In this implementation two fpos<StateT>
+  // objects belong to the same equivalence class if the contained
+  // offsets compare equal.
+  /// Test if equivalent to another position.
+  template<typename _StateT>
+    inline bool
+    operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+    { return streamoff(__lhs) == streamoff(__rhs); }
+
+  template<typename _StateT>
+    inline bool
+    operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+    { return streamoff(__lhs) != streamoff(__rhs); }
+
+  // Clauses 21.1.3.1 and 21.1.3.2 describe streampos and wstreampos
+  // as implementation defined types, but clause 27.2 requires that
+  // they must both be typedefs for fpos<mbstate_t>
+  /// File position for char streams.
+  typedef fpos<mbstate_t> streampos;
+  /// File position for wchar_t streams.
+  typedef fpos<mbstate_t> wstreampos;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /// File position for char16_t streams.
+  typedef fpos<mbstate_t> u16streampos;
+  /// File position for char32_t streams.
+  typedef fpos<mbstate_t> u32streampos;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.h
new file mode 100644
index 000000000..988ee61ca
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.h
@@ -0,0 +1,5395 @@
+// random number generation -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file bits/random.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{random}
+ */
+
+#ifndef _RANDOM_H
+#define _RANDOM_H 1
+
+#include <vector>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [26.4] Random number generation
+
+  /**
+   * @defgroup random Random Number Generation
+   * @ingroup numerics
+   *
+   * A facility for generating random numbers on selected distributions.
+   * @{
+   */
+
+  /**
+   * @brief A function template for converting the output of a (integral)
+   * uniform random number generator to a floatng point result in the range
+   * [0-1).
+   */
+  template<typename _RealType, size_t __bits,
+	   typename _UniformRandomNumberGenerator>
+    _RealType
+    generate_canonical(_UniformRandomNumberGenerator& __g);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+  /*
+   * Implementation-space details.
+   */
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    template<typename _UIntType, size_t __w,
+	     bool = __w < static_cast<size_t>
+			  (std::numeric_limits<_UIntType>::digits)>
+      struct _Shift
+      { static const _UIntType __value = 0; };
+
+    template<typename _UIntType, size_t __w>
+      struct _Shift<_UIntType, __w, true>
+      { static const _UIntType __value = _UIntType(1) << __w; };
+
+    template<typename _Tp, _Tp __m, _Tp __a, _Tp __c, bool>
+      struct _Mod;
+
+    // Dispatch based on modulus value to prevent divide-by-zero compile-time
+    // errors when m == 0.
+    template<typename _Tp, _Tp __m, _Tp __a = 1, _Tp __c = 0>
+      inline _Tp
+      __mod(_Tp __x)
+      { return _Mod<_Tp, __m, __a, __c, __m == 0>::__calc(__x); }
+
+    /*
+     * An adaptor class for converting the output of any Generator into
+     * the input for a specific Distribution.
+     */
+    template<typename _Engine, typename _DInputType>
+      struct _Adaptor
+      {
+
+      public:
+	_Adaptor(_Engine& __g)
+	: _M_g(__g) { }
+
+	_DInputType
+	min() const
+	{ return _DInputType(0); }
+
+	_DInputType
+	max() const
+	{ return _DInputType(1); }
+
+	/*
+	 * Converts a value generated by the adapted random number generator
+	 * into a value in the input domain for the dependent random number
+	 * distribution.
+	 */
+	_DInputType
+	operator()()
+	{
+	  return std::generate_canonical<_DInputType,
+	                            std::numeric_limits<_DInputType>::digits,
+	                            _Engine>(_M_g);
+	}
+
+      private:
+	_Engine& _M_g;
+      };
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup random_generators Random Number Generators
+   * @ingroup random
+   *
+   * These classes define objects which provide random or pseudorandom
+   * numbers, either from a discrete or a continuous interval.  The
+   * random number generator supplied as a part of this library are
+   * all uniform random number generators which provide a sequence of
+   * random number uniformly distributed over their range.
+   *
+   * A number generator is a function object with an operator() that
+   * takes zero arguments and returns a number.
+   *
+   * A compliant random number generator must satisfy the following
+   * requirements.  <table border=1 cellpadding=10 cellspacing=0>
+   * <caption align=top>Random Number Generator Requirements</caption>
+   * <tr><td>To be documented.</td></tr> </table>
+   *
+   * @{
+   */
+
+  /**
+   * @brief A model of a linear congruential random number generator.
+   *
+   * A random number generator that produces pseudorandom numbers via
+   * linear function:
+   * @f[
+   *     x_{i+1}\leftarrow(ax_{i} + c) \bmod m 
+   * @f]
+   *
+   * The template parameter @p _UIntType must be an unsigned integral type
+   * large enough to store values up to (__m-1). If the template parameter
+   * @p __m is 0, the modulus @p __m used is
+   * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template
+   * parameters @p __a and @p __c must be less than @p __m.
+   *
+   * The size of the state is @f$1@f$.
+   */
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    class linear_congruential_engine
+    {
+      static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+		    "substituting _UIntType not an unsigned integral type");
+      static_assert(__m == 0u || (__a < __m && __c < __m),
+		    "template argument substituting __m out of bounds");
+
+    public:
+      /** The type of the generated random value. */
+      typedef _UIntType result_type;
+
+      /** The multiplier. */
+      static constexpr result_type multiplier   = __a;
+      /** An increment. */
+      static constexpr result_type increment    = __c;
+      /** The modulus. */
+      static constexpr result_type modulus      = __m;
+      static constexpr result_type default_seed = 1u;
+
+      /**
+       * @brief Constructs a %linear_congruential_engine random number
+       *        generator engine with seed @p __s.  The default seed value
+       *        is 1.
+       *
+       * @param __s The initial seed value.
+       */
+      explicit
+      linear_congruential_engine(result_type __s = default_seed)
+      { seed(__s); }
+
+      /**
+       * @brief Constructs a %linear_congruential_engine random number
+       *        generator engine seeded from the seed sequence @p __q.
+       *
+       * @param __q the seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+	std::enable_if<!std::is_same<_Sseq, linear_congruential_engine>::value>
+	       ::type>
+        explicit
+        linear_congruential_engine(_Sseq& __q)
+        { seed(__q); }
+
+      /**
+       * @brief Reseeds the %linear_congruential_engine random number generator
+       *        engine sequence to the seed @p __s.
+       *
+       * @param __s The new seed.
+       */
+      void
+      seed(result_type __s = default_seed);
+
+      /**
+       * @brief Reseeds the %linear_congruential_engine random number generator
+       *        engine
+       * sequence using values from the seed sequence @p __q.
+       *
+       * @param __q the seed sequence.
+       */
+      template<typename _Sseq>
+        typename std::enable_if<std::is_class<_Sseq>::value>::type
+        seed(_Sseq& __q);
+
+      /**
+       * @brief Gets the smallest possible value in the output range.
+       *
+       * The minimum depends on the @p __c parameter: if it is zero, the
+       * minimum generated must be > 0, otherwise 0 is allowed.
+       */
+      static constexpr result_type
+      min()
+      { return __c == 0u ? 1u : 0u; }
+
+      /**
+       * @brief Gets the largest possible value in the output range.
+       */
+      static constexpr result_type
+      max()
+      { return __m - 1u; }
+
+      /**
+       * @brief Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      /**
+       * @brief Gets the next random number in the sequence.
+       */
+      result_type
+      operator()()
+      {
+	_M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x);
+	return _M_x;
+      }
+
+      /**
+       * @brief Compares two linear congruential random number generator
+       * objects of the same type for equality.
+       *
+       * @param __lhs A linear congruential random number generator object.
+       * @param __rhs Another linear congruential random number generator
+       *              object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+       */
+      friend bool
+      operator==(const linear_congruential_engine& __lhs,
+		 const linear_congruential_engine& __rhs)
+      { return __lhs._M_x == __rhs._M_x; }
+
+      /**
+       * @brief Writes the textual representation of the state x(i) of x to
+       *        @p __os.
+       *
+       * @param __os  The output stream.
+       * @param __lcr A % linear_congruential_engine random number generator.
+       * @returns __os.
+       */
+      template<typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
+	       _UIntType1 __m1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::linear_congruential_engine<_UIntType1,
+		   __a1, __c1, __m1>&);
+
+      /**
+       * @brief Sets the state of the engine by reading its textual
+       *        representation from @p __is.
+       *
+       * The textual representation must have been previously written using
+       * an output stream whose imbued locale and whose type's template
+       * specialization arguments _CharT and _Traits were the same as those
+       * of @p __is.
+       *
+       * @param __is  The input stream.
+       * @param __lcr A % linear_congruential_engine random number generator.
+       * @returns __is.
+       */
+      template<typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
+	       _UIntType1 __m1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::linear_congruential_engine<_UIntType1, __a1,
+		   __c1, __m1>&);
+
+    private:
+      _UIntType _M_x;
+    };
+
+  /**
+   * @brief Compares two linear congruential random number generator
+   * objects of the same type for inequality.
+   *
+   * @param __lhs A linear congruential random number generator object.
+   * @param __rhs Another linear congruential random number generator
+   *              object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    inline bool
+    operator!=(const std::linear_congruential_engine<_UIntType, __a,
+	       __c, __m>& __lhs,
+	       const std::linear_congruential_engine<_UIntType, __a,
+	       __c, __m>& __rhs)
+    { return !(__lhs == __rhs); }
+
+
+  /**
+   * A generalized feedback shift register discrete random number generator.
+   *
+   * This algorithm avoids multiplication and division and is designed to be
+   * friendly to a pipelined architecture.  If the parameters are chosen
+   * correctly, this generator will produce numbers with a very long period and
+   * fairly good apparent entropy, although still not cryptographically strong.
+   *
+   * The best way to use this generator is with the predefined mt19937 class.
+   *
+   * This algorithm was originally invented by Makoto Matsumoto and
+   * Takuji Nishimura.
+   *
+   * @var word_size   The number of bits in each element of the state vector.
+   * @var state_size  The degree of recursion.
+   * @var shift_size  The period parameter.
+   * @var mask_bits   The separation point bit index.
+   * @var parameter_a The last row of the twist matrix.
+   * @var output_u    The first right-shift tempering matrix parameter.
+   * @var output_s    The first left-shift tempering matrix parameter.
+   * @var output_b    The first left-shift tempering matrix mask.
+   * @var output_t    The second left-shift tempering matrix parameter.
+   * @var output_c    The second left-shift tempering matrix mask.
+   * @var output_l    The second right-shift tempering matrix parameter.
+   */
+  template<typename _UIntType, size_t __w,
+	   size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t,
+	   _UIntType __c, size_t __l, _UIntType __f>
+    class mersenne_twister_engine
+    {
+      static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+		    "substituting _UIntType not an unsigned integral type");
+      static_assert(1u <= __m && __m <= __n,
+		    "template argument substituting __m out of bounds");
+      static_assert(__r <= __w, "template argument substituting "
+		    "__r out of bound");
+      static_assert(__u <= __w, "template argument substituting "
+		    "__u out of bound");
+      static_assert(__s <= __w, "template argument substituting "
+		    "__s out of bound");
+      static_assert(__t <= __w, "template argument substituting "
+		    "__t out of bound");
+      static_assert(__l <= __w, "template argument substituting "
+		    "__l out of bound");
+      static_assert(__w <= std::numeric_limits<_UIntType>::digits,
+		    "template argument substituting __w out of bound");
+      static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1),
+		    "template argument substituting __a out of bound");
+      static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1),
+		    "template argument substituting __b out of bound");
+      static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1),
+		    "template argument substituting __c out of bound");
+      static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1),
+		    "template argument substituting __d out of bound");
+      static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1),
+		    "template argument substituting __f out of bound");
+
+    public:
+      /** The type of the generated random value. */
+      typedef _UIntType result_type;
+
+      // parameter values
+      static constexpr size_t      word_size                 = __w;
+      static constexpr size_t      state_size                = __n;
+      static constexpr size_t      shift_size                = __m;
+      static constexpr size_t      mask_bits                 = __r;
+      static constexpr result_type xor_mask                  = __a;
+      static constexpr size_t      tempering_u               = __u;
+      static constexpr result_type tempering_d               = __d;
+      static constexpr size_t      tempering_s               = __s;
+      static constexpr result_type tempering_b               = __b;
+      static constexpr size_t      tempering_t               = __t;
+      static constexpr result_type tempering_c               = __c;
+      static constexpr size_t      tempering_l               = __l;
+      static constexpr result_type initialization_multiplier = __f;
+      static constexpr result_type default_seed = 5489u;
+
+      // constructors and member function
+      explicit
+      mersenne_twister_engine(result_type __sd = default_seed)
+      { seed(__sd); }
+
+      /**
+       * @brief Constructs a %mersenne_twister_engine random number generator
+       *        engine seeded from the seed sequence @p __q.
+       *
+       * @param __q the seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+        std::enable_if<!std::is_same<_Sseq, mersenne_twister_engine>::value>
+	       ::type>
+        explicit
+        mersenne_twister_engine(_Sseq& __q)
+        { seed(__q); }
+
+      void
+      seed(result_type __sd = default_seed);
+
+      template<typename _Sseq>
+	typename std::enable_if<std::is_class<_Sseq>::value>::type
+        seed(_Sseq& __q);
+
+      /**
+       * @brief Gets the smallest possible value in the output range.
+       */
+      static constexpr result_type
+      min()
+      { return 0; };
+
+      /**
+       * @brief Gets the largest possible value in the output range.
+       */
+      static constexpr result_type
+      max()
+      { return __detail::_Shift<_UIntType, __w>::__value - 1; }
+
+      /**
+       * @brief Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      result_type
+      operator()();
+
+      /**
+       * @brief Compares two % mersenne_twister_engine random number generator
+       *        objects of the same type for equality.
+       *
+       * @param __lhs A % mersenne_twister_engine random number generator
+       *              object.
+       * @param __rhs Another % mersenne_twister_engine random number
+       *              generator object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+       */
+      friend bool
+      operator==(const mersenne_twister_engine& __lhs,
+		 const mersenne_twister_engine& __rhs)
+      { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); }
+
+      /**
+       * @brief Inserts the current state of a % mersenne_twister_engine
+       *        random number generator engine @p __x into the output stream
+       *        @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A % mersenne_twister_engine random number generator
+       *             engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _UIntType1,
+	       size_t __w1, size_t __n1,
+	       size_t __m1, size_t __r1,
+	       _UIntType1 __a1, size_t __u1,
+	       _UIntType1 __d1, size_t __s1,
+	       _UIntType1 __b1, size_t __t1,
+	       _UIntType1 __c1, size_t __l1, _UIntType1 __f1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::mersenne_twister_engine<_UIntType1, __w1, __n1,
+		   __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1,
+		   __l1, __f1>&);
+
+      /**
+       * @brief Extracts the current state of a % mersenne_twister_engine
+       *        random number generator engine @p __x from the input stream
+       *        @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A % mersenne_twister_engine random number generator
+       *             engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _UIntType1,
+	       size_t __w1, size_t __n1,
+	       size_t __m1, size_t __r1,
+	       _UIntType1 __a1, size_t __u1,
+	       _UIntType1 __d1, size_t __s1,
+	       _UIntType1 __b1, size_t __t1,
+	       _UIntType1 __c1, size_t __l1, _UIntType1 __f1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1,
+		   __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1,
+		   __l1, __f1>&);
+
+    private:
+      _UIntType _M_x[state_size];
+      size_t    _M_p;
+    };
+
+  /**
+   * @brief Compares two % mersenne_twister_engine random number generator
+   *        objects of the same type for inequality.
+   *
+   * @param __lhs A % mersenne_twister_engine random number generator
+   *              object.
+   * @param __rhs Another % mersenne_twister_engine random number
+   *              generator object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _UIntType, size_t __w,
+	   size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t,
+	   _UIntType __c, size_t __l, _UIntType __f>
+    inline bool
+    operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs,
+	       const std::mersenne_twister_engine<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs)
+    { return !(__lhs == __rhs); }
+
+
+  /**
+   * @brief The Marsaglia-Zaman generator.
+   *
+   * This is a model of a Generalized Fibonacci discrete random number
+   * generator, sometimes referred to as the SWC generator.
+   *
+   * A discrete random number generator that produces pseudorandom
+   * numbers using:
+   * @f[
+   *     x_{i}\leftarrow(x_{i - s} - x_{i - r} - carry_{i-1}) \bmod m 
+   * @f]
+   *
+   * The size of the state is @f$r@f$
+   * and the maximum period of the generator is @f$(m^r - m^s - 1)@f$.
+   *
+   * @var _M_x     The state of the generator.  This is a ring buffer.
+   * @var _M_carry The carry.
+   * @var _M_p     Current index of x(i - r).
+   */
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    class subtract_with_carry_engine
+    {
+      static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+		    "substituting _UIntType not an unsigned integral type");
+      static_assert(0u < __s && __s < __r,
+		    "template argument substituting __s out of bounds");
+      static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits,
+		    "template argument substituting __w out of bounds");
+
+    public:
+      /** The type of the generated random value. */
+      typedef _UIntType result_type;
+
+      // parameter values
+      static constexpr size_t      word_size    = __w;
+      static constexpr size_t      short_lag    = __s;
+      static constexpr size_t      long_lag     = __r;
+      static constexpr result_type default_seed = 19780503u;
+
+      /**
+       * @brief Constructs an explicitly seeded % subtract_with_carry_engine
+       *        random number generator.
+       */
+      explicit
+      subtract_with_carry_engine(result_type __sd = default_seed)
+      { seed(__sd); }
+
+      /**
+       * @brief Constructs a %subtract_with_carry_engine random number engine
+       *        seeded from the seed sequence @p __q.
+       *
+       * @param __q the seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+        std::enable_if<!std::is_same<_Sseq, subtract_with_carry_engine>::value>
+	       ::type>
+        explicit
+        subtract_with_carry_engine(_Sseq& __q)
+        { seed(__q); }
+
+      /**
+       * @brief Seeds the initial state @f$x_0@f$ of the random number
+       *        generator.
+       *
+       * N1688[4.19] modifies this as follows.  If @p __value == 0,
+       * sets value to 19780503.  In any case, with a linear
+       * congruential generator lcg(i) having parameters @f$ m_{lcg} =
+       * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value
+       * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m
+       * \dots lcg(r) \bmod m @f$ respectively.  If @f$ x_{-1} = 0 @f$
+       * set carry to 1, otherwise sets carry to 0.
+       */
+      void
+      seed(result_type __sd = default_seed);
+
+      /**
+       * @brief Seeds the initial state @f$x_0@f$ of the
+       * % subtract_with_carry_engine random number generator.
+       */
+      template<typename _Sseq>
+	typename std::enable_if<std::is_class<_Sseq>::value>::type
+        seed(_Sseq& __q);
+
+      /**
+       * @brief Gets the inclusive minimum value of the range of random
+       * integers returned by this generator.
+       */
+      static constexpr result_type
+      min()
+      { return 0; }
+
+      /**
+       * @brief Gets the inclusive maximum value of the range of random
+       * integers returned by this generator.
+       */
+      static constexpr result_type
+      max()
+      { return __detail::_Shift<_UIntType, __w>::__value - 1; }
+
+      /**
+       * @brief Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      /**
+       * @brief Gets the next random number in the sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * @brief Compares two % subtract_with_carry_engine random number
+       *        generator objects of the same type for equality.
+       *
+       * @param __lhs A % subtract_with_carry_engine random number generator
+       *              object.
+       * @param __rhs Another % subtract_with_carry_engine random number
+       *              generator object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+      */
+      friend bool
+      operator==(const subtract_with_carry_engine& __lhs,
+		 const subtract_with_carry_engine& __rhs)
+      { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); }
+
+      /**
+       * @brief Inserts the current state of a % subtract_with_carry_engine
+       *        random number generator engine @p __x into the output stream
+       *        @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A % subtract_with_carry_engine random number generator
+       *             engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _UIntType1, size_t __w1, size_t __s1, size_t __r1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::subtract_with_carry_engine<_UIntType1, __w1,
+		   __s1, __r1>&);
+
+      /**
+       * @brief Extracts the current state of a % subtract_with_carry_engine
+       *        random number generator engine @p __x from the input stream
+       *        @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A % subtract_with_carry_engine random number generator
+       *             engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _UIntType1, size_t __w1, size_t __s1, size_t __r1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::subtract_with_carry_engine<_UIntType1, __w1,
+		   __s1, __r1>&);
+
+    private:
+      _UIntType  _M_x[long_lag];
+      _UIntType  _M_carry;
+      size_t     _M_p;
+    };
+
+  /**
+   * @brief Compares two % subtract_with_carry_engine random number
+   *        generator objects of the same type for inequality.
+   *
+   * @param __lhs A % subtract_with_carry_engine random number generator
+   *              object.
+   * @param __rhs Another % subtract_with_carry_engine random number
+   *              generator object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    inline bool
+    operator!=(const std::subtract_with_carry_engine<_UIntType, __w,
+	       __s, __r>& __lhs,
+	       const std::subtract_with_carry_engine<_UIntType, __w,
+	       __s, __r>& __rhs)
+    { return !(__lhs == __rhs); }
+
+
+  /**
+   * Produces random numbers from some base engine by discarding blocks of
+   * data.
+   *
+   * 0 <= @p __r <= @p __p
+   */
+  template<typename _RandomNumberEngine, size_t __p, size_t __r>
+    class discard_block_engine
+    {
+      static_assert(1 <= __r && __r <= __p,
+		    "template argument substituting __r out of bounds");
+
+    public:
+      /** The type of the generated random value. */
+      typedef typename _RandomNumberEngine::result_type result_type;
+
+      // parameter values
+      static constexpr size_t block_size = __p;
+      static constexpr size_t used_block = __r;
+
+      /**
+       * @brief Constructs a default %discard_block_engine engine.
+       *
+       * The underlying engine is default constructed as well.
+       */
+      discard_block_engine()
+      : _M_b(), _M_n(0) { }
+
+      /**
+       * @brief Copy constructs a %discard_block_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      discard_block_engine(const _RandomNumberEngine& __rne)
+      : _M_b(__rne), _M_n(0) { }
+
+      /**
+       * @brief Move constructs a %discard_block_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      discard_block_engine(_RandomNumberEngine&& __rne)
+      : _M_b(std::move(__rne)), _M_n(0) { }
+
+      /**
+       * @brief Seed constructs a %discard_block_engine engine.
+       *
+       * Constructs the underlying generator engine seeded with @p __s.
+       * @param __s A seed value for the base class engine.
+       */
+      explicit
+      discard_block_engine(result_type __s)
+      : _M_b(__s), _M_n(0) { }
+
+      /**
+       * @brief Generator construct a %discard_block_engine engine.
+       *
+       * @param __q A seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+	std::enable_if<!std::is_same<_Sseq, discard_block_engine>::value
+		       && !std::is_same<_Sseq, _RandomNumberEngine>::value>
+	       ::type>
+        explicit
+        discard_block_engine(_Sseq& __q)
+	: _M_b(__q), _M_n(0)
+        { }
+
+      /**
+       * @brief Reseeds the %discard_block_engine object with the default
+       *        seed for the underlying base class generator engine.
+       */
+      void
+      seed()
+      {
+	_M_b.seed();
+	_M_n = 0;
+      }
+
+      /**
+       * @brief Reseeds the %discard_block_engine object with the default
+       *        seed for the underlying base class generator engine.
+       */
+      void
+      seed(result_type __s)
+      {
+	_M_b.seed(__s);
+	_M_n = 0;
+      }
+
+      /**
+       * @brief Reseeds the %discard_block_engine object with the given seed
+       *        sequence.
+       * @param __q A seed generator function.
+       */
+      template<typename _Sseq>
+        void
+        seed(_Sseq& __q)
+        {
+	  _M_b.seed(__q);
+	  _M_n = 0;
+	}
+
+      /**
+       * @brief Gets a const reference to the underlying generator engine
+       *        object.
+       */
+      const _RandomNumberEngine&
+      base() const
+      { return _M_b; }
+
+      /**
+       * @brief Gets the minimum value in the generated random number range.
+       */
+      static constexpr result_type
+      min()
+      { return _RandomNumberEngine::min(); }
+
+      /**
+       * @brief Gets the maximum value in the generated random number range.
+       */
+      static constexpr result_type
+      max()
+      { return _RandomNumberEngine::max(); }
+
+      /**
+       * @brief Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      /**
+       * @brief Gets the next value in the generated random number sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * @brief Compares two %discard_block_engine random number generator
+       *        objects of the same type for equality.
+       *
+       * @param __lhs A %discard_block_engine random number generator object.
+       * @param __rhs Another %discard_block_engine random number generator
+       *              object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+       */
+      friend bool
+      operator==(const discard_block_engine& __lhs,
+		 const discard_block_engine& __rhs)
+      { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; }
+
+      /**
+       * @brief Inserts the current state of a %discard_block_engine random
+       *        number generator engine @p __x into the output stream
+       *        @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %discard_block_engine random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RandomNumberEngine1, size_t __p1, size_t __r1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::discard_block_engine<_RandomNumberEngine1,
+		   __p1, __r1>&);
+
+      /**
+       * @brief Extracts the current state of a % subtract_with_carry_engine
+       *        random number generator engine @p __x from the input stream
+       *        @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %discard_block_engine random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _RandomNumberEngine1, size_t __p1, size_t __r1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::discard_block_engine<_RandomNumberEngine1,
+		   __p1, __r1>&);
+
+    private:
+      _RandomNumberEngine _M_b;
+      size_t _M_n;
+    };
+
+  /**
+   * @brief Compares two %discard_block_engine random number generator
+   *        objects of the same type for inequality.
+   *
+   * @param __lhs A %discard_block_engine random number generator object.
+   * @param __rhs Another %discard_block_engine random number generator
+   *              object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _RandomNumberEngine, size_t __p, size_t __r>
+    inline bool
+    operator!=(const std::discard_block_engine<_RandomNumberEngine, __p,
+	       __r>& __lhs,
+	       const std::discard_block_engine<_RandomNumberEngine, __p,
+	       __r>& __rhs)
+    { return !(__lhs == __rhs); }
+
+
+  /**
+   * Produces random numbers by combining random numbers from some base
+   * engine to produce random numbers with a specifies number of bits @p __w.
+   */
+  template<typename _RandomNumberEngine, size_t __w, typename _UIntType>
+    class independent_bits_engine
+    {
+      static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+		    "substituting _UIntType not an unsigned integral type");
+      static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits,
+		    "template argument substituting __w out of bounds");
+
+    public:
+      /** The type of the generated random value. */
+      typedef _UIntType result_type;
+
+      /**
+       * @brief Constructs a default %independent_bits_engine engine.
+       *
+       * The underlying engine is default constructed as well.
+       */
+      independent_bits_engine()
+      : _M_b() { }
+
+      /**
+       * @brief Copy constructs a %independent_bits_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      independent_bits_engine(const _RandomNumberEngine& __rne)
+      : _M_b(__rne) { }
+
+      /**
+       * @brief Move constructs a %independent_bits_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      independent_bits_engine(_RandomNumberEngine&& __rne)
+      : _M_b(std::move(__rne)) { }
+
+      /**
+       * @brief Seed constructs a %independent_bits_engine engine.
+       *
+       * Constructs the underlying generator engine seeded with @p __s.
+       * @param __s A seed value for the base class engine.
+       */
+      explicit
+      independent_bits_engine(result_type __s)
+      : _M_b(__s) { }
+
+      /**
+       * @brief Generator construct a %independent_bits_engine engine.
+       *
+       * @param __q A seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+	std::enable_if<!std::is_same<_Sseq, independent_bits_engine>::value
+		       && !std::is_same<_Sseq, _RandomNumberEngine>::value>
+               ::type>
+        explicit
+        independent_bits_engine(_Sseq& __q)
+        : _M_b(__q)
+        { }
+
+      /**
+       * @brief Reseeds the %independent_bits_engine object with the default
+       *        seed for the underlying base class generator engine.
+       */
+      void
+      seed()
+      { _M_b.seed(); }
+
+      /**
+       * @brief Reseeds the %independent_bits_engine object with the default
+       *        seed for the underlying base class generator engine.
+       */
+      void
+      seed(result_type __s)
+      { _M_b.seed(__s); }
+
+      /**
+       * @brief Reseeds the %independent_bits_engine object with the given
+       *        seed sequence.
+       * @param __q A seed generator function.
+       */
+      template<typename _Sseq>
+        void
+        seed(_Sseq& __q)
+        { _M_b.seed(__q); }
+
+      /**
+       * @brief Gets a const reference to the underlying generator engine
+       *        object.
+       */
+      const _RandomNumberEngine&
+      base() const
+      { return _M_b; }
+
+      /**
+       * @brief Gets the minimum value in the generated random number range.
+       */
+      static constexpr result_type
+      min()
+      { return 0U; }
+
+      /**
+       * @brief Gets the maximum value in the generated random number range.
+       */
+      static constexpr result_type
+      max()
+      { return __detail::_Shift<_UIntType, __w>::__value - 1; }
+
+      /**
+       * @brief Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      /**
+       * @brief Gets the next value in the generated random number sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * @brief Compares two %independent_bits_engine random number generator
+       * objects of the same type for equality.
+       *
+       * @param __lhs A %independent_bits_engine random number generator
+       *              object.
+       * @param __rhs Another %independent_bits_engine random number generator
+       *              object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+       */
+      friend bool
+      operator==(const independent_bits_engine& __lhs,
+		 const independent_bits_engine& __rhs)
+      { return __lhs._M_b == __rhs._M_b; }
+
+      /**
+       * @brief Extracts the current state of a % subtract_with_carry_engine
+       *        random number generator engine @p __x from the input stream
+       *        @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %independent_bits_engine random number generator
+       *             engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       *          an error state.
+       */
+      template<typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   std::independent_bits_engine<_RandomNumberEngine,
+		   __w, _UIntType>& __x)
+	{
+	  __is >> __x._M_b;
+	  return __is;
+	}
+
+    private:
+      _RandomNumberEngine _M_b;
+    };
+
+  /**
+   * @brief Compares two %independent_bits_engine random number generator
+   * objects of the same type for inequality.
+   *
+   * @param __lhs A %independent_bits_engine random number generator
+   *              object.
+   * @param __rhs Another %independent_bits_engine random number generator
+   *              object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _RandomNumberEngine, size_t __w, typename _UIntType>
+    inline bool
+    operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w,
+	       _UIntType>& __lhs,
+	       const std::independent_bits_engine<_RandomNumberEngine, __w,
+	       _UIntType>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Inserts the current state of a %independent_bits_engine random
+   *        number generator engine @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %independent_bits_engine random number generator engine.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   *          an error state.
+   */
+  template<typename _RandomNumberEngine, size_t __w, typename _UIntType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const std::independent_bits_engine<_RandomNumberEngine,
+	       __w, _UIntType>& __x)
+    {
+      __os << __x.base();
+      return __os;
+    }
+
+
+  /**
+   * @brief Produces random numbers by combining random numbers from some
+   * base engine to produce random numbers with a specifies number of bits
+   * @p __w.
+   */
+  template<typename _RandomNumberEngine, size_t __k>
+    class shuffle_order_engine
+    {
+      static_assert(1u <= __k, "template argument substituting "
+		    "__k out of bound");
+
+    public:
+      /** The type of the generated random value. */
+      typedef typename _RandomNumberEngine::result_type result_type;
+
+      static constexpr size_t table_size = __k;
+
+      /**
+       * @brief Constructs a default %shuffle_order_engine engine.
+       *
+       * The underlying engine is default constructed as well.
+       */
+      shuffle_order_engine()
+      : _M_b()
+      { _M_initialize(); }
+
+      /**
+       * @brief Copy constructs a %shuffle_order_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      shuffle_order_engine(const _RandomNumberEngine& __rne)
+      : _M_b(__rne)
+      { _M_initialize(); }
+
+      /**
+       * @brief Move constructs a %shuffle_order_engine engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      shuffle_order_engine(_RandomNumberEngine&& __rne)
+      : _M_b(std::move(__rne))
+      { _M_initialize(); }
+
+      /**
+       * @brief Seed constructs a %shuffle_order_engine engine.
+       *
+       * Constructs the underlying generator engine seeded with @p __s.
+       * @param __s A seed value for the base class engine.
+       */
+      explicit
+      shuffle_order_engine(result_type __s)
+      : _M_b(__s)
+      { _M_initialize(); }
+
+      /**
+       * @brief Generator construct a %shuffle_order_engine engine.
+       *
+       * @param __q A seed sequence.
+       */
+      template<typename _Sseq, typename = typename
+	std::enable_if<!std::is_same<_Sseq, shuffle_order_engine>::value
+		       && !std::is_same<_Sseq, _RandomNumberEngine>::value>
+	       ::type>
+        explicit
+        shuffle_order_engine(_Sseq& __q)
+        : _M_b(__q)
+        { _M_initialize(); }
+
+      /**
+       * @brief Reseeds the %shuffle_order_engine object with the default seed
+                for the underlying base class generator engine.
+       */
+      void
+      seed()
+      {
+	_M_b.seed();
+	_M_initialize();
+      }
+
+      /**
+       * @brief Reseeds the %shuffle_order_engine object with the default seed
+       *        for the underlying base class generator engine.
+       */
+      void
+      seed(result_type __s)
+      {
+	_M_b.seed(__s);
+	_M_initialize();
+      }
+
+      /**
+       * @brief Reseeds the %shuffle_order_engine object with the given seed
+       *        sequence.
+       * @param __q A seed generator function.
+       */
+      template<typename _Sseq>
+        void
+        seed(_Sseq& __q)
+        {
+	  _M_b.seed(__q);
+	  _M_initialize();
+	}
+
+      /**
+       * Gets a const reference to the underlying generator engine object.
+       */
+      const _RandomNumberEngine&
+      base() const
+      { return _M_b; }
+
+      /**
+       * Gets the minimum value in the generated random number range.
+       */
+      static constexpr result_type
+      min()
+      { return _RandomNumberEngine::min(); }
+
+      /**
+       * Gets the maximum value in the generated random number range.
+       */
+      static constexpr result_type
+      max()
+      { return _RandomNumberEngine::max(); }
+
+      /**
+       * Discard a sequence of random numbers.
+       */
+      void
+      discard(unsigned long long __z)
+      {
+	for (; __z != 0ULL; --__z)
+	  (*this)();
+      }
+
+      /**
+       * Gets the next value in the generated random number sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * Compares two %shuffle_order_engine random number generator objects
+       * of the same type for equality.
+       *
+       * @param __lhs A %shuffle_order_engine random number generator object.
+       * @param __rhs Another %shuffle_order_engine random number generator
+       *              object.
+       *
+       * @returns true if the infinite sequences of generated values
+       *          would be equal, false otherwise.
+      */
+      friend bool
+      operator==(const shuffle_order_engine& __lhs,
+		 const shuffle_order_engine& __rhs)
+      { return __lhs._M_b == __rhs._M_b; }
+
+      /**
+       * @brief Inserts the current state of a %shuffle_order_engine random
+       *        number generator engine @p __x into the output stream
+	@p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %shuffle_order_engine random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RandomNumberEngine1, size_t __k1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::shuffle_order_engine<_RandomNumberEngine1,
+		   __k1>&);
+
+      /**
+       * @brief Extracts the current state of a % subtract_with_carry_engine
+       *        random number generator engine @p __x from the input stream
+       *        @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %shuffle_order_engine random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _RandomNumberEngine1, size_t __k1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::shuffle_order_engine<_RandomNumberEngine1, __k1>&);
+
+    private:
+      void _M_initialize()
+      {
+	for (size_t __i = 0; __i < __k; ++__i)
+	  _M_v[__i] = _M_b();
+	_M_y = _M_b();
+      }
+
+      _RandomNumberEngine _M_b;
+      result_type _M_v[__k];
+      result_type _M_y;
+    };
+
+  /**
+   * Compares two %shuffle_order_engine random number generator objects
+   * of the same type for inequality.
+   *
+   * @param __lhs A %shuffle_order_engine random number generator object.
+   * @param __rhs Another %shuffle_order_engine random number generator
+   *              object.
+   *
+   * @returns true if the infinite sequences of generated values
+   *          would be different, false otherwise.
+   */
+  template<typename _RandomNumberEngine, size_t __k>
+    inline bool
+    operator!=(const std::shuffle_order_engine<_RandomNumberEngine,
+	       __k>& __lhs,
+	       const std::shuffle_order_engine<_RandomNumberEngine,
+	       __k>& __rhs)
+    { return !(__lhs == __rhs); }
+
+
+  /**
+   * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.
+   */
+  typedef linear_congruential_engine<uint_fast32_t, 16807UL, 0UL, 2147483647UL>
+  minstd_rand0;
+
+  /**
+   * An alternative LCR (Lehmer Generator function).
+   */
+  typedef linear_congruential_engine<uint_fast32_t, 48271UL, 0UL, 2147483647UL>
+  minstd_rand;
+
+  /**
+   * The classic Mersenne Twister.
+   *
+   * Reference:
+   * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally
+   * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions
+   * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
+   */
+  typedef mersenne_twister_engine<
+    uint_fast32_t,
+    32, 624, 397, 31,
+    0x9908b0dfUL, 11,
+    0xffffffffUL, 7,
+    0x9d2c5680UL, 15,
+    0xefc60000UL, 18, 1812433253UL> mt19937;
+
+  /**
+   * An alternative Mersenne Twister.
+   */
+  typedef mersenne_twister_engine<
+    uint_fast64_t,
+    64, 312, 156, 31,
+    0xb5026f5aa96619e9ULL, 29,
+    0x5555555555555555ULL, 17,
+    0x71d67fffeda60000ULL, 37,
+    0xfff7eee000000000ULL, 43,
+    6364136223846793005ULL> mt19937_64;
+
+  typedef subtract_with_carry_engine<uint_fast32_t, 24, 10, 24>
+    ranlux24_base;
+
+  typedef subtract_with_carry_engine<uint_fast64_t, 48, 5, 12>
+    ranlux48_base;
+
+  typedef discard_block_engine<ranlux24_base, 223, 23> ranlux24;
+
+  typedef discard_block_engine<ranlux48_base, 389, 11> ranlux48;
+
+  typedef shuffle_order_engine<minstd_rand0, 256> knuth_b;
+
+  typedef minstd_rand0 default_random_engine;
+
+  /**
+   * A standard interface to a platform-specific non-deterministic
+   * random number generator (if any are available).
+   */
+  class random_device
+  {
+  public:
+    /** The type of the generated random value. */
+    typedef unsigned int result_type;
+
+    // constructors, destructors and member functions
+
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+
+    explicit
+    random_device(const std::string& __token = "/dev/urandom")
+    {
+      if ((__token != "/dev/urandom" && __token != "/dev/random")
+	  || !(_M_file = std::fopen(__token.c_str(), "rb")))
+	std::__throw_runtime_error(__N("random_device::"
+				       "random_device(const std::string&)"));
+    }
+
+    ~random_device()
+    { std::fclose(_M_file); }
+
+#else
+
+    explicit
+    random_device(const std::string& __token = "mt19937")
+    : _M_mt(_M_strtoul(__token)) { }
+
+  private:
+    static unsigned long
+    _M_strtoul(const std::string& __str)
+    {
+      unsigned long __ret = 5489UL;
+      if (__str != "mt19937")
+	{
+	  const char* __nptr = __str.c_str();
+	  char* __endptr;
+	  __ret = std::strtoul(__nptr, &__endptr, 0);
+	  if (*__nptr == '\0' || *__endptr != '\0')
+	    std::__throw_runtime_error(__N("random_device::_M_strtoul"
+					   "(const std::string&)"));
+	}
+      return __ret;
+    }
+
+  public:
+
+#endif
+
+    result_type
+    min() const
+    { return std::numeric_limits<result_type>::min(); }
+
+    result_type
+    max() const
+    { return std::numeric_limits<result_type>::max(); }
+
+    double
+    entropy() const
+    { return 0.0; }
+
+    result_type
+    operator()()
+    {
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+      result_type __ret;
+      std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
+		 1, _M_file);
+      return __ret;
+#else
+      return _M_mt();
+#endif
+    }
+
+    // No copy functions.
+    random_device(const random_device&) = delete;
+    void operator=(const random_device&) = delete;
+
+  private:
+
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+    FILE*        _M_file;
+#else
+    mt19937      _M_mt;
+#endif
+  };
+
+  /* @} */ // group random_generators
+
+  /**
+   * @addtogroup random_distributions Random Number Distributions
+   * @ingroup random
+   * @{
+   */
+
+  /**
+   * @addtogroup random_distributions_uniform Uniform Distributions
+   * @ingroup random_distributions
+   * @{
+   */
+
+  /**
+   * @brief Uniform discrete distribution for random numbers.
+   * A discrete random distribution on the range @f$[min, max]@f$ with equal
+   * probability throughout the range.
+   */
+  template<typename _IntType = int>
+    class uniform_int_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef uniform_int_distribution<_IntType> distribution_type;
+
+	explicit
+	param_type(_IntType __a = 0,
+		   _IntType __b = std::numeric_limits<_IntType>::max())
+	: _M_a(__a), _M_b(__b)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b);
+	}
+
+	result_type
+	a() const
+	{ return _M_a; }
+
+	result_type
+	b() const
+	{ return _M_b; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
+
+      private:
+	_IntType _M_a;
+	_IntType _M_b;
+      };
+
+    public:
+      /**
+       * @brief Constructs a uniform distribution object.
+       */
+      explicit
+      uniform_int_distribution(_IntType __a = 0,
+			   _IntType __b = std::numeric_limits<_IntType>::max())
+      : _M_param(__a, __b)
+      { }
+
+      explicit
+      uniform_int_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       *
+       * Does nothing for the uniform integer distribution.
+       */
+      void
+      reset() { }
+
+      result_type
+      a() const
+      { return _M_param.a(); }
+
+      result_type
+      b() const
+      { return _M_param.b(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the inclusive lower bound of the distribution range.
+       */
+      result_type
+      min() const
+      { return this->a(); }
+
+      /**
+       * @brief Returns the inclusive upper bound of the distribution range.
+       */
+      result_type
+      max() const
+      { return this->b(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+        { return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      param_type _M_param;
+    };
+
+  /**
+   * @brief Return true if two uniform integer distributions have
+   *        the same parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator==(const std::uniform_int_distribution<_IntType>& __d1,
+	       const std::uniform_int_distribution<_IntType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two uniform integer distributions have
+   *        different parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::uniform_int_distribution<_IntType>& __d1,
+	       const std::uniform_int_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %uniform_int_distribution random number
+   *        distribution @p __x into the output stream @p os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %uniform_int_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::uniform_int_distribution<_IntType>&);
+
+  /**
+   * @brief Extracts a %uniform_int_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x  A %uniform_int_distribution random number generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::uniform_int_distribution<_IntType>&);
+
+
+  /**
+   * @brief Uniform continuous distribution for random numbers.
+   *
+   * A continuous random distribution on the range [min, max) with equal
+   * probability throughout the range.  The URNG should be real-valued and
+   * deliver number in the range [0, 1).
+   */
+  template<typename _RealType = double>
+    class uniform_real_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef uniform_real_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __a = _RealType(0),
+		   _RealType __b = _RealType(1))
+	: _M_a(__a), _M_b(__b)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b);
+	}
+
+	result_type
+	a() const
+	{ return _M_a; }
+
+	result_type
+	b() const
+	{ return _M_b; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
+
+      private:
+	_RealType _M_a;
+	_RealType _M_b;
+      };
+
+    public:
+      /**
+       * @brief Constructs a uniform_real_distribution object.
+       *
+       * @param __min [IN]  The lower bound of the distribution.
+       * @param __max [IN]  The upper bound of the distribution.
+       */
+      explicit
+      uniform_real_distribution(_RealType __a = _RealType(0),
+				_RealType __b = _RealType(1))
+      : _M_param(__a, __b)
+      { }
+
+      explicit
+      uniform_real_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       *
+       * Does nothing for the uniform real distribution.
+       */
+      void
+      reset() { }
+
+      result_type
+      a() const
+      { return _M_param.a(); }
+
+      result_type
+      b() const
+      { return _M_param.b(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the inclusive lower bound of the distribution range.
+       */
+      result_type
+      min() const
+      { return this->a(); }
+
+      /**
+       * @brief Returns the inclusive upper bound of the distribution range.
+       */
+      result_type
+      max() const
+      { return this->b(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+        { return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+	{
+	  __detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	    __aurng(__urng);
+	  return (__aurng() * (__p.b() - __p.a())) + __p.a();
+	}
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+   * @brief Return true if two uniform real distributions have
+   *        the same parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator==(const std::uniform_real_distribution<_IntType>& __d1,
+	       const std::uniform_real_distribution<_IntType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two uniform real distributions have
+   *        different parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::uniform_real_distribution<_IntType>& __d1,
+	       const std::uniform_real_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %uniform_real_distribution random number
+   *        distribution @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %uniform_real_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   *          an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::uniform_real_distribution<_RealType>&);
+
+  /**
+   * @brief Extracts a %uniform_real_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x  A %uniform_real_distribution random number generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::uniform_real_distribution<_RealType>&);
+
+  /* @} */ // group random_distributions_uniform
+
+  /**
+   * @addtogroup random_distributions_normal Normal Distributions
+   * @ingroup random_distributions
+   * @{
+   */
+
+  /**
+   * @brief A normal continuous distribution for random numbers.
+   *
+   * The formula for the normal probability density function is
+   * @f[
+   *     p(x|\mu,\sigma) = \frac{1}{\sigma \sqrt{2 \pi}}
+   *            e^{- \frac{{x - \mu}^ {2}}{2 \sigma ^ {2}} } 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class normal_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef normal_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __mean = _RealType(0),
+		   _RealType __stddev = _RealType(1))
+	: _M_mean(__mean), _M_stddev(__stddev)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_stddev > _RealType(0));
+	}
+
+	_RealType
+	mean() const
+	{ return _M_mean; }
+
+	_RealType
+	stddev() const
+	{ return _M_stddev; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return (__p1._M_mean == __p2._M_mean
+		  && __p1._M_stddev == __p2._M_stddev); }
+
+      private:
+	_RealType _M_mean;
+	_RealType _M_stddev;
+      };
+
+    public:
+      /**
+       * Constructs a normal distribution with parameters @f$mean@f$ and
+       * standard deviation.
+       */
+      explicit
+      normal_distribution(result_type __mean = result_type(0),
+			  result_type __stddev = result_type(1))
+      : _M_param(__mean, __stddev), _M_saved_available(false)
+      { }
+
+      explicit
+      normal_distribution(const param_type& __p)
+      : _M_param(__p), _M_saved_available(false)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_saved_available = false; }
+
+      /**
+       * @brief Returns the mean of the distribution.
+       */
+      _RealType
+      mean() const
+      { return _M_param.mean(); }
+
+      /**
+       * @brief Returns the standard deviation of the distribution.
+       */
+      _RealType
+      stddev() const
+      { return _M_param.stddev(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return std::numeric_limits<result_type>::min(); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Return true if two normal distributions have
+       *        the same parameters and the sequences that would
+       *        be generated are equal.
+       */
+      template<typename _RealType1>
+	friend bool
+        operator==(const std::normal_distribution<_RealType1>& __d1,
+		   const std::normal_distribution<_RealType1>& __d2);
+
+      /**
+       * @brief Inserts a %normal_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %normal_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::normal_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %normal_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %normal_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::normal_distribution<_RealType1>&);
+
+    private:
+      param_type  _M_param;
+      result_type _M_saved;
+      bool        _M_saved_available;
+    };
+
+  /**
+   * @brief Return true if two normal distributions are different.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::normal_distribution<_RealType>& __d1,
+	       const std::normal_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A lognormal_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is
+   * @f[
+   *     p(x|m,s) = \frac{1}{sx\sqrt{2\pi}}
+   *                \exp{-\frac{(\ln{x} - m)^2}{2s^2}} 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class lognormal_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef lognormal_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __m = _RealType(0),
+		   _RealType __s = _RealType(1))
+	: _M_m(__m), _M_s(__s)
+	{ }
+
+	_RealType
+	m() const
+	{ return _M_m; }
+
+	_RealType
+	s() const
+	{ return _M_s; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; }
+
+      private:
+	_RealType _M_m;
+	_RealType _M_s;
+      };
+
+      explicit
+      lognormal_distribution(_RealType __m = _RealType(0),
+			     _RealType __s = _RealType(1))
+      : _M_param(__m, __s), _M_nd()
+      { }
+
+      explicit
+      lognormal_distribution(const param_type& __p)
+      : _M_param(__p), _M_nd()
+      { }
+
+      /**
+       * Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      /**
+       *
+       */
+      _RealType
+      m() const
+      { return _M_param.m(); }
+
+      _RealType
+      s() const
+      { return _M_param.s(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+        { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); }
+
+      /**
+       * @brief Return true if two lognormal distributions have
+       *        the same parameters and the sequences that would
+       *        be generated are equal.
+       */
+      template<typename _RealType1>
+        friend bool
+        operator==(const std::lognormal_distribution<_RealType1>& __d1,
+		   const std::lognormal_distribution<_RealType1>& __d2)
+        { return (__d1.param() == __d2.param()
+		  && __d1._M_nd == __d2._M_nd); }
+
+      /**
+       * @brief Inserts a %lognormal_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %lognormal_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::lognormal_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %lognormal_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %lognormal_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::lognormal_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::normal_distribution<result_type> _M_nd;
+    };
+
+  /**
+   * @brief Return true if two lognormal distributions are different.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::lognormal_distribution<_RealType>& __d1,
+	       const std::lognormal_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A gamma continuous distribution for random numbers.
+   *
+   * The formula for the gamma probability density function is:
+   * @f[
+   *     p(x|\alpha,\beta) = \frac{1}{\beta\Gamma(\alpha)}
+   *                         (x/\beta)^{\alpha - 1} e^{-x/\beta} 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class gamma_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef gamma_distribution<_RealType> distribution_type;
+	friend class gamma_distribution<_RealType>;
+
+	explicit
+	param_type(_RealType __alpha_val = _RealType(1),
+		   _RealType __beta_val = _RealType(1))
+	: _M_alpha(__alpha_val), _M_beta(__beta_val)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_alpha > _RealType(0));
+	  _M_initialize();
+	}
+
+	_RealType
+	alpha() const
+	{ return _M_alpha; }
+
+	_RealType
+	beta() const
+	{ return _M_beta; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return (__p1._M_alpha == __p2._M_alpha
+		  && __p1._M_beta == __p2._M_beta); }
+
+      private:
+	void
+	_M_initialize();
+
+	_RealType _M_alpha;
+	_RealType _M_beta;
+
+	_RealType _M_malpha, _M_a2;
+      };
+
+    public:
+      /**
+       * @brief Constructs a gamma distribution with parameters
+       * @f$\alpha@f$ and @f$\beta@f$.
+       */
+      explicit
+      gamma_distribution(_RealType __alpha_val = _RealType(1),
+			 _RealType __beta_val = _RealType(1))
+      : _M_param(__alpha_val, __beta_val), _M_nd()
+      { }
+
+      explicit
+      gamma_distribution(const param_type& __p)
+      : _M_param(__p), _M_nd()
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      /**
+       * @brief Returns the @f$\alpha@f$ of the distribution.
+       */
+      _RealType
+      alpha() const
+      { return _M_param.alpha(); }
+
+      /**
+       * @brief Returns the @f$\beta@f$ of the distribution.
+       */
+      _RealType
+      beta() const
+      { return _M_param.beta(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Return true if two gamma distributions have the same
+       *        parameters and the sequences that would be generated
+       *        are equal.
+       */
+      template<typename _RealType1>
+        friend bool
+        operator==(const std::gamma_distribution<_RealType1>& __d1,
+		   const std::gamma_distribution<_RealType1>& __d2)
+        { return (__d1.param() == __d2.param()
+		  && __d1._M_nd == __d2._M_nd); }
+
+      /**
+       * @brief Inserts a %gamma_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %gamma_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::gamma_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %gamma_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %gamma_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::gamma_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::normal_distribution<result_type> _M_nd;
+    };
+
+  /**
+   * @brief Return true if two gamma distributions are different.
+   */
+   template<typename _RealType>
+    inline bool
+     operator!=(const std::gamma_distribution<_RealType>& __d1,
+		const std::gamma_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A chi_squared_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is
+   * @f$p(x|n) = \frac{x^{(n/2) - 1}e^{-x/2}}{\Gamma(n/2) 2^{n/2}}@f$
+   */
+  template<typename _RealType = double>
+    class chi_squared_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef chi_squared_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __n = _RealType(1))
+	: _M_n(__n)
+	{ }
+
+	_RealType
+	n() const
+	{ return _M_n; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_n == __p2._M_n; }
+
+      private:
+	_RealType _M_n;
+      };
+
+      explicit
+      chi_squared_distribution(_RealType __n = _RealType(1))
+      : _M_param(__n), _M_gd(__n / 2)
+      { }
+
+      explicit
+      chi_squared_distribution(const param_type& __p)
+      : _M_param(__p), _M_gd(__p.n() / 2)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_gd.reset(); }
+
+      /**
+       *
+       */
+      _RealType
+      n() const
+      { return _M_param.n(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return 2 * _M_gd(__urng); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+        {
+	  typedef typename std::gamma_distribution<result_type>::param_type
+	    param_type;
+	  return 2 * _M_gd(__urng, param_type(__p.n() / 2));
+	}
+
+      /**
+       * @brief Return true if two Chi-squared distributions have
+       *        the same parameters and the sequences that would be
+       *        generated are equal.
+       */
+      template<typename _RealType1>
+        friend bool
+        operator==(const std::chi_squared_distribution<_RealType1>& __d1,
+		   const std::chi_squared_distribution<_RealType1>& __d2)
+        { return __d1.param() == __d2.param() && __d1._M_gd == __d2._M_gd; }
+
+      /**
+       * @brief Inserts a %chi_squared_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %chi_squared_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::chi_squared_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %chi_squared_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %chi_squared_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::chi_squared_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::gamma_distribution<result_type> _M_gd;
+    };
+
+  /**
+   * @brief Return true if two Chi-squared distributions are different.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::chi_squared_distribution<_RealType>& __d1,
+	       const std::chi_squared_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A cauchy_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is
+   * @f$p(x|a,b) = (\pi b (1 + (\frac{x-a}{b})^2))^{-1}@f$
+   */
+  template<typename _RealType = double>
+    class cauchy_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef cauchy_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __a = _RealType(0),
+		   _RealType __b = _RealType(1))
+	: _M_a(__a), _M_b(__b)
+	{ }
+
+	_RealType
+	a() const
+	{ return _M_a; }
+
+	_RealType
+	b() const
+	{ return _M_b; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
+
+      private:
+	_RealType _M_a;
+	_RealType _M_b;
+      };
+
+      explicit
+      cauchy_distribution(_RealType __a = _RealType(0),
+			  _RealType __b = _RealType(1))
+      : _M_param(__a, __b)
+      { }
+
+      explicit
+      cauchy_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       *
+       */
+      _RealType
+      a() const
+      { return _M_param.a(); }
+
+      _RealType
+      b() const
+      { return _M_param.b(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return std::numeric_limits<result_type>::min(); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+   * @brief Return true if two Cauchy distributions have
+   *        the same parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::cauchy_distribution<_RealType>& __d1,
+	       const std::cauchy_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two Cauchy distributions have
+   *        different parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::cauchy_distribution<_RealType>& __d1,
+	       const std::cauchy_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %cauchy_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %cauchy_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::cauchy_distribution<_RealType>&);
+
+  /**
+   * @brief Extracts a %cauchy_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x A %cauchy_distribution random number
+   *            generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::cauchy_distribution<_RealType>&);
+
+
+  /**
+   * @brief A fisher_f_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is
+   * @f[
+   *     p(x|m,n) = \frac{\Gamma((m+n)/2)}{\Gamma(m/2)\Gamma(n/2)}
+   *                (\frac{m}{n})^{m/2} x^{(m/2)-1}
+   *                (1 + \frac{mx}{n})^{-(m+n)/2} 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class fisher_f_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef fisher_f_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __m = _RealType(1),
+		   _RealType __n = _RealType(1))
+	: _M_m(__m), _M_n(__n)
+	{ }
+
+	_RealType
+	m() const
+	{ return _M_m; }
+
+	_RealType
+	n() const
+	{ return _M_n; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; }
+
+      private:
+	_RealType _M_m;
+	_RealType _M_n;
+      };
+
+      explicit
+      fisher_f_distribution(_RealType __m = _RealType(1),
+			    _RealType __n = _RealType(1))
+      : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2)
+      { }
+
+      explicit
+      fisher_f_distribution(const param_type& __p)
+      : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      {
+	_M_gd_x.reset();
+	_M_gd_y.reset();
+      }
+
+      /**
+       *
+       */
+      _RealType
+      m() const
+      { return _M_param.m(); }
+
+      _RealType
+      n() const
+      { return _M_param.n(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+        {
+	  typedef typename std::gamma_distribution<result_type>::param_type
+	    param_type;
+	  return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n())
+		  / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m()));
+	}
+
+      /**
+       * @brief Return true if two Fisher f distributions have
+       *        the same parameters and the sequences that would
+       *        be generated are equal.
+       */
+      template<typename _RealType1>
+        friend bool
+        operator==(const std::fisher_f_distribution<_RealType1>& __d1,
+		   const std::fisher_f_distribution<_RealType1>& __d2)
+        { return (__d1.param() == __d2.param()
+		  && __d1._M_gd_x == __d2._M_gd_x
+		  && __d1._M_gd_y == __d2._M_gd_y); }
+
+      /**
+       * @brief Inserts a %fisher_f_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %fisher_f_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::fisher_f_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %fisher_f_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %fisher_f_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::fisher_f_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::gamma_distribution<result_type> _M_gd_x, _M_gd_y;
+    };
+
+  /**
+   * @brief Return true if two Fisher f distributions are diferent.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::fisher_f_distribution<_RealType>& __d1,
+	       const std::fisher_f_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief A student_t_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is:
+   * @f[
+   *     p(x|n) = \frac{1}{\sqrt(n\pi)} \frac{\Gamma((n+1)/2)}{\Gamma(n/2)}
+   *              (1 + \frac{x^2}{n}) ^{-(n+1)/2} 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class student_t_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef student_t_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __n = _RealType(1))
+	: _M_n(__n)
+	{ }
+
+	_RealType
+	n() const
+	{ return _M_n; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_n == __p2._M_n; }
+
+      private:
+	_RealType _M_n;
+      };
+
+      explicit
+      student_t_distribution(_RealType __n = _RealType(1))
+      : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2)
+      { }
+
+      explicit
+      student_t_distribution(const param_type& __p)
+      : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      {
+	_M_nd.reset();
+	_M_gd.reset();
+      }
+
+      /**
+       *
+       */
+      _RealType
+      n() const
+      { return _M_param.n(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return std::numeric_limits<result_type>::min(); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+        operator()(_UniformRandomNumberGenerator& __urng)
+        { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+        {
+	  typedef typename std::gamma_distribution<result_type>::param_type
+	    param_type;
+	
+	  const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2));
+	  return _M_nd(__urng) * std::sqrt(__p.n() / __g);
+        }
+
+      /**
+       * @brief Return true if two Student t distributions have
+       *        the same parameters and the sequences that would
+       *        be generated are equal.
+       */
+      template<typename _RealType1>
+        friend bool
+        operator==(const std::student_t_distribution<_RealType1>& __d1,
+		   const std::student_t_distribution<_RealType1>& __d2)
+        { return (__d1.param() == __d2.param()
+		  && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); }
+
+      /**
+       * @brief Inserts a %student_t_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %student_t_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::student_t_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %student_t_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %student_t_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::student_t_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::normal_distribution<result_type> _M_nd;
+      std::gamma_distribution<result_type> _M_gd;
+    };
+
+  /**
+   * @brief Return true if two Student t distributions are different.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::student_t_distribution<_RealType>& __d1,
+	       const std::student_t_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /* @} */ // group random_distributions_normal
+
+  /**
+   * @addtogroup random_distributions_bernoulli Bernoulli Distributions
+   * @ingroup random_distributions
+   * @{
+   */
+
+  /**
+   * @brief A Bernoulli random number distribution.
+   *
+   * Generates a sequence of true and false values with likelihood @f$p@f$
+   * that true will come up and @f$(1 - p)@f$ that false will appear.
+   */
+  class bernoulli_distribution
+  {
+  public:
+    /** The type of the range of the distribution. */
+    typedef bool result_type;
+    /** Parameter type. */
+    struct param_type
+    {
+      typedef bernoulli_distribution distribution_type;
+
+      explicit
+      param_type(double __p = 0.5)
+      : _M_p(__p)
+      {
+	_GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0));
+      }
+
+      double
+      p() const
+      { return _M_p; }
+
+      friend bool
+      operator==(const param_type& __p1, const param_type& __p2)
+      { return __p1._M_p == __p2._M_p; }
+
+    private:
+      double _M_p;
+    };
+
+  public:
+    /**
+     * @brief Constructs a Bernoulli distribution with likelihood @p p.
+     *
+     * @param __p  [IN]  The likelihood of a true result being returned.
+     *                   Must be in the interval @f$[0, 1]@f$.
+     */
+    explicit
+    bernoulli_distribution(double __p = 0.5)
+    : _M_param(__p)
+    { }
+
+    explicit
+    bernoulli_distribution(const param_type& __p)
+    : _M_param(__p)
+    { }
+
+    /**
+     * @brief Resets the distribution state.
+     *
+     * Does nothing for a Bernoulli distribution.
+     */
+    void
+    reset() { }
+
+    /**
+     * @brief Returns the @p p parameter of the distribution.
+     */
+    double
+    p() const
+    { return _M_param.p(); }
+
+    /**
+     * @brief Returns the parameter set of the distribution.
+     */
+    param_type
+    param() const
+    { return _M_param; }
+
+    /**
+     * @brief Sets the parameter set of the distribution.
+     * @param __param The new parameter set of the distribution.
+     */
+    void
+    param(const param_type& __param)
+    { _M_param = __param; }
+
+    /**
+     * @brief Returns the greatest lower bound value of the distribution.
+     */
+    result_type
+    min() const
+    { return std::numeric_limits<result_type>::min(); }
+
+    /**
+     * @brief Returns the least upper bound value of the distribution.
+     */
+    result_type
+    max() const
+    { return std::numeric_limits<result_type>::max(); }
+
+    /**
+     * @brief Generating functions.
+     */
+    template<typename _UniformRandomNumberGenerator>
+      result_type
+      operator()(_UniformRandomNumberGenerator& __urng)
+      { return this->operator()(__urng, this->param()); }
+
+    template<typename _UniformRandomNumberGenerator>
+      result_type
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __p)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+	if ((__aurng() - __aurng.min())
+	     < __p.p() * (__aurng.max() - __aurng.min()))
+	  return true;
+	return false;
+      }
+
+  private:
+    param_type _M_param;
+  };
+
+  /**
+   * @brief Return true if two Bernoulli distributions have
+   *        the same parameters.
+   */
+  inline bool
+  operator==(const std::bernoulli_distribution& __d1,
+	     const std::bernoulli_distribution& __d2)
+  { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two Bernoulli distributions have
+   *        different parameters.
+   */
+  inline bool
+  operator!=(const std::bernoulli_distribution& __d1,
+	     const std::bernoulli_distribution& __d2)
+  { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %bernoulli_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %bernoulli_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::bernoulli_distribution&);
+
+  /**
+   * @brief Extracts a %bernoulli_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x  A %bernoulli_distribution random number generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       std::bernoulli_distribution& __x)
+    {
+      double __p;
+      __is >> __p;
+      __x.param(bernoulli_distribution::param_type(__p));
+      return __is;
+    }
+
+
+  /**
+   * @brief A discrete binomial random number distribution.
+   *
+   * The formula for the binomial probability density function is
+   * @f$p(i|t,p) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$
+   * and @f$p@f$ are the parameters of the distribution.
+   */
+  template<typename _IntType = int>
+    class binomial_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef binomial_distribution<_IntType> distribution_type;
+	friend class binomial_distribution<_IntType>;
+
+	explicit
+	param_type(_IntType __t = _IntType(1), double __p = 0.5)
+	: _M_t(__t), _M_p(__p)
+	{
+	  _GLIBCXX_DEBUG_ASSERT((_M_t >= _IntType(0))
+				&& (_M_p >= 0.0)
+				&& (_M_p <= 1.0));
+	  _M_initialize();
+	}
+
+	_IntType
+	t() const
+	{ return _M_t; }
+
+	double
+	p() const
+	{ return _M_p; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; }
+
+      private:
+	void
+	_M_initialize();
+
+	_IntType _M_t;
+	double _M_p;
+
+	double _M_q;
+#if _GLIBCXX_USE_C99_MATH_TR1
+	double _M_d1, _M_d2, _M_s1, _M_s2, _M_c,
+	       _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p;
+#endif
+	bool   _M_easy;
+      };
+
+      // constructors and member function
+      explicit
+      binomial_distribution(_IntType __t = _IntType(1),
+			    double __p = 0.5)
+      : _M_param(__t, __p), _M_nd()
+      { }
+
+      explicit
+      binomial_distribution(const param_type& __p)
+      : _M_param(__p), _M_nd()
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      /**
+       * @brief Returns the distribution @p t parameter.
+       */
+      _IntType
+      t() const
+      { return _M_param.t(); }
+
+      /**
+       * @brief Returns the distribution @p p parameter.
+       */
+      double
+      p() const
+      { return _M_param.p(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return 0; }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return _M_param.t(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Return true if two binomial distributions have
+       *        the same parameters and the sequences that would
+       *        be generated are equal.
+       */
+      template<typename _IntType1>
+	friend bool
+        operator==(const std::binomial_distribution<_IntType1>& __d1,
+		   const std::binomial_distribution<_IntType1>& __d2)
+#ifdef _GLIBCXX_USE_C99_MATH_TR1
+	{ return __d1.param() == __d2.param() && __d1._M_nd == __d2._M_nd; }
+#else
+        { return __d1.param() == __d2.param(); }
+#endif
+
+      /**
+       * @brief Inserts a %binomial_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %binomial_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::binomial_distribution<_IntType1>&);
+
+      /**
+       * @brief Extracts a %binomial_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %binomial_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _IntType1,
+	       typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::binomial_distribution<_IntType1>&);
+
+    private:
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	_M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t);
+
+      param_type _M_param;
+
+      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
+      std::normal_distribution<double> _M_nd;
+    };
+
+  /**
+   * @brief Return true if two binomial distributions are different.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::binomial_distribution<_IntType>& __d1,
+	       const std::binomial_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A discrete geometric random number distribution.
+   *
+   * The formula for the geometric probability density function is
+   * @f$p(i|p) = p(1 - p)^{i}@f$ where @f$p@f$ is the parameter of the
+   * distribution.
+   */
+  template<typename _IntType = int>
+    class geometric_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType  result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef geometric_distribution<_IntType> distribution_type;
+	friend class geometric_distribution<_IntType>;
+
+	explicit
+	param_type(double __p = 0.5)
+	: _M_p(__p)
+	{
+	  _GLIBCXX_DEBUG_ASSERT((_M_p > 0.0)
+			     && (_M_p < 1.0));
+	  _M_initialize();
+	}
+
+	double
+	p() const
+	{ return _M_p; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_p == __p2._M_p; }
+
+      private:
+	void
+	_M_initialize()
+	{ _M_log_1_p = std::log(1.0 - _M_p); }
+
+	double _M_p;
+
+	double _M_log_1_p;
+      };
+
+      // constructors and member function
+      explicit
+      geometric_distribution(double __p = 0.5)
+      : _M_param(__p)
+      { }
+
+      explicit
+      geometric_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       *
+       * Does nothing for the geometric distribution.
+       */
+      void
+      reset() { }
+
+      /**
+       * @brief Returns the distribution parameter @p p.
+       */
+      double
+      p() const
+      { return _M_param.p(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return 0; }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+   * @brief Return true if two geometric distributions have
+   *        the same parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator==(const std::geometric_distribution<_IntType>& __d1,
+	       const std::geometric_distribution<_IntType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two geometric distributions have
+   *        different parameters.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::geometric_distribution<_IntType>& __d1,
+	       const std::geometric_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %geometric_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %geometric_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::geometric_distribution<_IntType>&);
+
+  /**
+   * @brief Extracts a %geometric_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x  A %geometric_distribution random number generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::geometric_distribution<_IntType>&);
+
+
+  /**
+   * @brief A negative_binomial_distribution random number distribution.
+   *
+   * The formula for the negative binomial probability mass function is
+   * @f$p(i) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$
+   * and @f$p@f$ are the parameters of the distribution.
+   */
+  template<typename _IntType = int>
+    class negative_binomial_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef negative_binomial_distribution<_IntType> distribution_type;
+
+	explicit
+	param_type(_IntType __k = 1, double __p = 0.5)
+	: _M_k(__k), _M_p(__p)
+	{
+	  _GLIBCXX_DEBUG_ASSERT((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0));
+	}
+
+	_IntType
+	k() const
+	{ return _M_k; }
+
+	double
+	p() const
+	{ return _M_p; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; }
+
+      private:
+	_IntType _M_k;
+	double _M_p;
+      };
+
+      explicit
+      negative_binomial_distribution(_IntType __k = 1, double __p = 0.5)
+      : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p)
+      { }
+
+      explicit
+      negative_binomial_distribution(const param_type& __p)
+      : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p())
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_gd.reset(); }
+
+      /**
+       * @brief Return the @f$k@f$ parameter of the distribution.
+       */
+      _IntType
+      k() const
+      { return _M_param.k(); }
+
+      /**
+       * @brief Return the @f$p@f$ parameter of the distribution.
+       */
+      double
+      p() const
+      { return _M_param.p(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Return true if two negative binomial distributions have
+       *        the same parameters and the sequences that would be
+       *        generated are equal.
+       */
+      template<typename _IntType1>
+        friend bool
+        operator==(const std::negative_binomial_distribution<_IntType1>& __d1,
+		   const std::negative_binomial_distribution<_IntType1>& __d2)
+        { return __d1.param() == __d2.param() && __d1._M_gd == __d2._M_gd; }
+
+      /**
+       * @brief Inserts a %negative_binomial_distribution random
+       *        number distribution @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %negative_binomial_distribution random number
+       *             distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       *          an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::negative_binomial_distribution<_IntType1>&);
+
+      /**
+       * @brief Extracts a %negative_binomial_distribution random number
+       *        distribution @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %negative_binomial_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::negative_binomial_distribution<_IntType1>&);
+
+    private:
+      param_type _M_param;
+
+      std::gamma_distribution<double> _M_gd;
+    };
+
+  /**
+   * @brief Return true if two negative binomial distributions are different.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::negative_binomial_distribution<_IntType>& __d1,
+	       const std::negative_binomial_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /* @} */ // group random_distributions_bernoulli
+
+  /**
+   * @addtogroup random_distributions_poisson Poisson Distributions
+   * @ingroup random_distributions
+   * @{
+   */
+
+  /**
+   * @brief A discrete Poisson random number distribution.
+   *
+   * The formula for the Poisson probability density function is
+   * @f$p(i|\mu) = \frac{\mu^i}{i!} e^{-\mu}@f$ where @f$\mu@f$ is the
+   * parameter of the distribution.
+   */
+  template<typename _IntType = int>
+    class poisson_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType  result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef poisson_distribution<_IntType> distribution_type;
+	friend class poisson_distribution<_IntType>;
+
+	explicit
+	param_type(double __mean = 1.0)
+	: _M_mean(__mean)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0);
+	  _M_initialize();
+	}
+
+	double
+	mean() const
+	{ return _M_mean; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_mean == __p2._M_mean; }
+
+      private:
+	// Hosts either log(mean) or the threshold of the simple method.
+	void
+	_M_initialize();
+
+	double _M_mean;
+
+	double _M_lm_thr;
+#if _GLIBCXX_USE_C99_MATH_TR1
+	double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb;
+#endif
+      };
+
+      // constructors and member function
+      explicit
+      poisson_distribution(double __mean = 1.0)
+      : _M_param(__mean), _M_nd()
+      { }
+
+      explicit
+      poisson_distribution(const param_type& __p)
+      : _M_param(__p), _M_nd()
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      /**
+       * @brief Returns the distribution parameter @p mean.
+       */
+      double
+      mean() const
+      { return _M_param.mean(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return 0; }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+       /**
+	* @brief Return true if two Poisson distributions have the same
+	*        parameters and the sequences that would be generated
+	*        are equal.
+	*/
+      template<typename _IntType1>
+        friend bool
+        operator==(const std::poisson_distribution<_IntType1>& __d1,
+		   const std::poisson_distribution<_IntType1>& __d2)
+#ifdef _GLIBCXX_USE_C99_MATH_TR1
+        { return __d1.param() == __d2.param() && __d1._M_nd == __d2._M_nd; }
+#else
+        { return __d1.param() == __d2.param(); }
+#endif
+
+      /**
+       * @brief Inserts a %poisson_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %poisson_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::poisson_distribution<_IntType1>&);
+
+      /**
+       * @brief Extracts a %poisson_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %poisson_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::poisson_distribution<_IntType1>&);
+
+    private:
+      param_type _M_param;
+
+      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
+      std::normal_distribution<double> _M_nd;
+    };
+
+  /**
+   * @brief Return true if two Poisson distributions are different.
+   */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::poisson_distribution<_IntType>& __d1,
+	       const std::poisson_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief An exponential continuous distribution for random numbers.
+   *
+   * The formula for the exponential probability density function is
+   * @f$p(x|\lambda) = \lambda e^{-\lambda x}@f$.
+   *
+   * <table border=1 cellpadding=10 cellspacing=0>
+   * <caption align=top>Distribution Statistics</caption>
+   * <tr><td>Mean</td><td>@f$\frac{1}{\lambda}@f$</td></tr>
+   * <tr><td>Median</td><td>@f$\frac{\ln 2}{\lambda}@f$</td></tr>
+   * <tr><td>Mode</td><td>@f$zero@f$</td></tr>
+   * <tr><td>Range</td><td>@f$[0, \infty]@f$</td></tr>
+   * <tr><td>Standard Deviation</td><td>@f$\frac{1}{\lambda}@f$</td></tr>
+   * </table>
+   */
+  template<typename _RealType = double>
+    class exponential_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef exponential_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __lambda = _RealType(1))
+	: _M_lambda(__lambda)
+	{
+	  _GLIBCXX_DEBUG_ASSERT(_M_lambda > _RealType(0));
+	}
+
+	_RealType
+	lambda() const
+	{ return _M_lambda; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_lambda == __p2._M_lambda; }
+
+      private:
+	_RealType _M_lambda;
+      };
+
+    public:
+      /**
+       * @brief Constructs an exponential distribution with inverse scale
+       *        parameter @f$\lambda@f$.
+       */
+      explicit
+      exponential_distribution(const result_type& __lambda = result_type(1))
+      : _M_param(__lambda)
+      { }
+
+      explicit
+      exponential_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       *
+       * Has no effect on exponential distributions.
+       */
+      void
+      reset() { }
+
+      /**
+       * @brief Returns the inverse scale parameter of the distribution.
+       */
+      _RealType
+      lambda() const
+      { return _M_param.lambda(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+        { return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p)
+	{
+	  __detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	    __aurng(__urng);
+	  return -std::log(__aurng()) / __p.lambda();
+	}
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+   * @brief Return true if two exponential distributions have the same
+   *        parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::exponential_distribution<_RealType>& __d1,
+	       const std::exponential_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+   * @brief Return true if two exponential distributions have different
+   *        parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::exponential_distribution<_RealType>& __d1,
+	       const std::exponential_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %exponential_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %exponential_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::exponential_distribution<_RealType>&);
+
+  /**
+   * @brief Extracts a %exponential_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x A %exponential_distribution random number
+   *            generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::exponential_distribution<_RealType>&);
+
+
+  /**
+   * @brief A weibull_distribution random number distribution.
+   *
+   * The formula for the normal probability density function is:
+   * @f[
+   *     p(x|\alpha,\beta) = \frac{\alpha}{\beta} (\frac{x}{\beta})^{\alpha-1}
+   *                         \exp{(-(\frac{x}{\beta})^\alpha)} 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class weibull_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef weibull_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __a = _RealType(1),
+		   _RealType __b = _RealType(1))
+	: _M_a(__a), _M_b(__b)
+	{ }
+
+	_RealType
+	a() const
+	{ return _M_a; }
+
+	_RealType
+	b() const
+	{ return _M_b; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
+
+      private:
+	_RealType _M_a;
+	_RealType _M_b;
+      };
+
+      explicit
+      weibull_distribution(_RealType __a = _RealType(1),
+			   _RealType __b = _RealType(1))
+      : _M_param(__a, __b)
+      { }
+
+      explicit
+      weibull_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       * @brief Return the @f$a@f$ parameter of the distribution.
+       */
+      _RealType
+      a() const
+      { return _M_param.a(); }
+
+      /**
+       * @brief Return the @f$b@f$ parameter of the distribution.
+       */
+      _RealType
+      b() const
+      { return _M_param.b(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+    private:
+      param_type _M_param;
+    };
+
+   /**
+    * @brief Return true if two Weibull distributions have the same
+    *        parameters.
+    */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::weibull_distribution<_RealType>& __d1,
+	       const std::weibull_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+   /**
+    * @brief Return true if two Weibull distributions have different
+    *        parameters.
+    */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::weibull_distribution<_RealType>& __d1,
+	       const std::weibull_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %weibull_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %weibull_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::weibull_distribution<_RealType>&);
+
+  /**
+   * @brief Extracts a %weibull_distribution random number distribution
+   * @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x A %weibull_distribution random number
+   *            generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::weibull_distribution<_RealType>&);
+
+
+  /**
+   * @brief A extreme_value_distribution random number distribution.
+   *
+   * The formula for the normal probability mass function is
+   * @f[
+   *     p(x|a,b) = \frac{1}{b}
+   *                \exp( \frac{a-x}{b} - \exp(\frac{a-x}{b})) 
+   * @f]
+   */
+  template<typename _RealType = double>
+    class extreme_value_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef extreme_value_distribution<_RealType> distribution_type;
+
+	explicit
+	param_type(_RealType __a = _RealType(0),
+		   _RealType __b = _RealType(1))
+	: _M_a(__a), _M_b(__b)
+	{ }
+
+	_RealType
+	a() const
+	{ return _M_a; }
+
+	_RealType
+	b() const
+	{ return _M_b; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
+
+      private:
+	_RealType _M_a;
+	_RealType _M_b;
+      };
+
+      explicit
+      extreme_value_distribution(_RealType __a = _RealType(0),
+				 _RealType __b = _RealType(1))
+      : _M_param(__a, __b)
+      { }
+
+      explicit
+      extreme_value_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       * @brief Return the @f$a@f$ parameter of the distribution.
+       */
+      _RealType
+      a() const
+      { return _M_param.a(); }
+
+      /**
+       * @brief Return the @f$b@f$ parameter of the distribution.
+       */
+      _RealType
+      b() const
+      { return _M_param.b(); }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return std::numeric_limits<result_type>::min(); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      { return std::numeric_limits<result_type>::max(); }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+    * @brief Return true if two extreme value distributions have the same
+    *        parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::extreme_value_distribution<_RealType>& __d1,
+	       const std::extreme_value_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+    * @brief Return true if two extreme value distributions have different
+    *        parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::extreme_value_distribution<_RealType>& __d1,
+	       const std::extreme_value_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+  /**
+   * @brief Inserts a %extreme_value_distribution random number distribution
+   * @p __x into the output stream @p __os.
+   *
+   * @param __os An output stream.
+   * @param __x  A %extreme_value_distribution random number distribution.
+   *
+   * @returns The output stream with the state of @p __x inserted or in
+   * an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>&,
+	       const std::extreme_value_distribution<_RealType>&);
+
+  /**
+   * @brief Extracts a %extreme_value_distribution random number
+   *        distribution @p __x from the input stream @p __is.
+   *
+   * @param __is An input stream.
+   * @param __x A %extreme_value_distribution random number
+   *            generator engine.
+   *
+   * @returns The input stream with @p __x extracted or in an error state.
+   */
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>&,
+	       std::extreme_value_distribution<_RealType>&);
+
+
+  /**
+   * @brief A discrete_distribution random number distribution.
+   *
+   * The formula for the discrete probability mass function is
+   *
+   */
+  template<typename _IntType = int>
+    class discrete_distribution
+    {
+      static_assert(std::is_integral<_IntType>::value,
+		    "template argument not an integral type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _IntType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef discrete_distribution<_IntType> distribution_type;
+	friend class discrete_distribution<_IntType>;
+
+	param_type()
+	: _M_prob(), _M_cp()
+	{ }
+
+	template<typename _InputIterator>
+	  param_type(_InputIterator __wbegin,
+		     _InputIterator __wend)
+	  : _M_prob(__wbegin, __wend), _M_cp()
+	  { _M_initialize(); }
+
+	param_type(initializer_list<double> __wil)
+	: _M_prob(__wil.begin(), __wil.end()), _M_cp()
+	{ _M_initialize(); }
+
+	template<typename _Func>
+	  param_type(size_t __nw, double __xmin, double __xmax,
+		     _Func __fw);
+
+	// See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/
+	param_type(const param_type&) = default;
+	param_type& operator=(const param_type&) = default;
+
+	std::vector<double>
+	probabilities() const
+	{ return _M_prob.empty() ? std::vector<double>(1, 1.0) : _M_prob; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_prob == __p2._M_prob; }
+
+      private:
+	void
+	_M_initialize();
+
+	std::vector<double> _M_prob;
+	std::vector<double> _M_cp;
+      };
+
+      discrete_distribution()
+      : _M_param()
+      { }
+
+      template<typename _InputIterator>
+	discrete_distribution(_InputIterator __wbegin,
+			      _InputIterator __wend)
+	: _M_param(__wbegin, __wend)
+	{ }
+
+      discrete_distribution(initializer_list<double> __wl)
+      : _M_param(__wl)
+      { }
+
+      template<typename _Func>
+	discrete_distribution(size_t __nw, double __xmin, double __xmax,
+			      _Func __fw)
+	: _M_param(__nw, __xmin, __xmax, __fw)
+	{ }
+
+      explicit
+      discrete_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       * @brief Returns the probabilities of the distribution.
+       */
+      std::vector<double>
+      probabilities() const
+      {
+	return _M_param._M_prob.empty()
+	  ? std::vector<double>(1, 1.0) : _M_param._M_prob;
+      }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      { return result_type(0); }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      {
+	return _M_param._M_prob.empty()
+	  ? result_type(0) : result_type(_M_param._M_prob.size() - 1);
+      }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Inserts a %discrete_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %discrete_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::discrete_distribution<_IntType1>&);
+
+      /**
+       * @brief Extracts a %discrete_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %discrete_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::discrete_distribution<_IntType1>&);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+    * @brief Return true if two discrete distributions have the same
+    *        parameters.
+    */
+  template<typename _IntType>
+    inline bool
+    operator==(const std::discrete_distribution<_IntType>& __d1,
+	       const std::discrete_distribution<_IntType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+    * @brief Return true if two discrete distributions have different
+    *        parameters.
+    */
+  template<typename _IntType>
+    inline bool
+    operator!=(const std::discrete_distribution<_IntType>& __d1,
+	       const std::discrete_distribution<_IntType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A piecewise_constant_distribution random number distribution.
+   *
+   * The formula for the piecewise constant probability mass function is
+   *
+   */
+  template<typename _RealType = double>
+    class piecewise_constant_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef piecewise_constant_distribution<_RealType> distribution_type;
+	friend class piecewise_constant_distribution<_RealType>;
+
+	param_type()
+	: _M_int(), _M_den(), _M_cp()
+	{ }
+
+	template<typename _InputIteratorB, typename _InputIteratorW>
+	  param_type(_InputIteratorB __bfirst,
+		     _InputIteratorB __bend,
+		     _InputIteratorW __wbegin);
+
+	template<typename _Func>
+	  param_type(initializer_list<_RealType> __bi, _Func __fw);
+
+	template<typename _Func>
+	  param_type(size_t __nw, _RealType __xmin, _RealType __xmax,
+		     _Func __fw);
+
+	// See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/
+	param_type(const param_type&) = default;
+	param_type& operator=(const param_type&) = default;
+
+	std::vector<_RealType>
+	intervals() const
+	{
+	  if (_M_int.empty())
+	    {
+	      std::vector<_RealType> __tmp(2);
+	      __tmp[1] = _RealType(1);
+	      return __tmp;
+	    }
+	  else
+	    return _M_int;
+	}
+
+	std::vector<double>
+	densities() const
+	{ return _M_den.empty() ? std::vector<double>(1, 1.0) : _M_den; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; }
+
+      private:
+	void
+	_M_initialize();
+
+	std::vector<_RealType> _M_int;
+	std::vector<double> _M_den;
+	std::vector<double> _M_cp;
+      };
+
+      explicit
+      piecewise_constant_distribution()
+      : _M_param()
+      { }
+
+      template<typename _InputIteratorB, typename _InputIteratorW>
+	piecewise_constant_distribution(_InputIteratorB __bfirst,
+					_InputIteratorB __bend,
+					_InputIteratorW __wbegin)
+	: _M_param(__bfirst, __bend, __wbegin)
+	{ }
+
+      template<typename _Func>
+	piecewise_constant_distribution(initializer_list<_RealType> __bl,
+					_Func __fw)
+	: _M_param(__bl, __fw)
+	{ }
+
+      template<typename _Func>
+	piecewise_constant_distribution(size_t __nw,
+					_RealType __xmin, _RealType __xmax,
+					_Func __fw)
+	: _M_param(__nw, __xmin, __xmax, __fw)
+	{ }
+
+      explicit
+      piecewise_constant_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * @brief Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       * @brief Returns a vector of the intervals.
+       */
+      std::vector<_RealType>
+      intervals() const
+      {
+	if (_M_param._M_int.empty())
+	  {
+	    std::vector<_RealType> __tmp(2);
+	    __tmp[1] = _RealType(1);
+	    return __tmp;
+	  }
+	else
+	  return _M_param._M_int;
+      }
+
+      /**
+       * @brief Returns a vector of the probability densities.
+       */
+      std::vector<double>
+      densities() const
+      {
+	return _M_param._M_den.empty()
+	  ? std::vector<double>(1, 1.0) : _M_param._M_den;
+      }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      {
+	return _M_param._M_int.empty()
+	  ? result_type(0) : _M_param._M_int.front();
+      }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      {
+	return _M_param._M_int.empty()
+	  ? result_type(1) : _M_param._M_int.back();
+      }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Inserts a %piecewise_constan_distribution random
+       *        number distribution @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %piecewise_constan_distribution random number
+       *             distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::piecewise_constant_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %piecewise_constan_distribution random
+       *        number distribution @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %piecewise_constan_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::piecewise_constant_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+    * @brief Return true if two piecewise constant distributions have the
+    *        same parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::piecewise_constant_distribution<_RealType>& __d1,
+	       const std::piecewise_constant_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+    * @brief Return true if two piecewise constant distributions have 
+    *        different parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::piecewise_constant_distribution<_RealType>& __d1,
+	       const std::piecewise_constant_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /**
+   * @brief A piecewise_linear_distribution random number distribution.
+   *
+   * The formula for the piecewise linear probability mass function is
+   *
+   */
+  template<typename _RealType = double>
+    class piecewise_linear_distribution
+    {
+      static_assert(std::is_floating_point<_RealType>::value,
+		    "template argument not a floating point type");
+
+    public:
+      /** The type of the range of the distribution. */
+      typedef _RealType result_type;
+      /** Parameter type. */
+      struct param_type
+      {
+	typedef piecewise_linear_distribution<_RealType> distribution_type;
+	friend class piecewise_linear_distribution<_RealType>;
+
+	param_type()
+	: _M_int(), _M_den(), _M_cp(), _M_m()
+	{ }
+
+	template<typename _InputIteratorB, typename _InputIteratorW>
+	  param_type(_InputIteratorB __bfirst,
+		     _InputIteratorB __bend,
+		     _InputIteratorW __wbegin);
+
+	template<typename _Func>
+	  param_type(initializer_list<_RealType> __bl, _Func __fw);
+
+	template<typename _Func>
+	  param_type(size_t __nw, _RealType __xmin, _RealType __xmax,
+		     _Func __fw);
+
+	// See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/
+	param_type(const param_type&) = default;
+	param_type& operator=(const param_type&) = default;
+
+	std::vector<_RealType>
+	intervals() const
+	{
+	  if (_M_int.empty())
+	    {
+	      std::vector<_RealType> __tmp(2);
+	      __tmp[1] = _RealType(1);
+	      return __tmp;
+	    }
+	  else
+	    return _M_int;
+	}
+
+	std::vector<double>
+	densities() const
+	{ return _M_den.empty() ? std::vector<double>(2, 1.0) : _M_den; }
+
+	friend bool
+	operator==(const param_type& __p1, const param_type& __p2)
+	{ return (__p1._M_int == __p2._M_int
+		  && __p1._M_den == __p2._M_den); }
+
+      private:
+	void
+	_M_initialize();
+
+	std::vector<_RealType> _M_int;
+	std::vector<double> _M_den;
+	std::vector<double> _M_cp;
+	std::vector<double> _M_m;
+      };
+
+      explicit
+      piecewise_linear_distribution()
+      : _M_param()
+      { }
+
+      template<typename _InputIteratorB, typename _InputIteratorW>
+	piecewise_linear_distribution(_InputIteratorB __bfirst,
+				      _InputIteratorB __bend,
+				      _InputIteratorW __wbegin)
+	: _M_param(__bfirst, __bend, __wbegin)
+	{ }
+
+      template<typename _Func>
+	piecewise_linear_distribution(initializer_list<_RealType> __bl,
+				      _Func __fw)
+	: _M_param(__bl, __fw)
+	{ }
+
+      template<typename _Func>
+	piecewise_linear_distribution(size_t __nw,
+				      _RealType __xmin, _RealType __xmax,
+				      _Func __fw)
+	: _M_param(__nw, __xmin, __xmax, __fw)
+	{ }
+
+      explicit
+      piecewise_linear_distribution(const param_type& __p)
+      : _M_param(__p)
+      { }
+
+      /**
+       * Resets the distribution state.
+       */
+      void
+      reset()
+      { }
+
+      /**
+       * @brief Return the intervals of the distribution.
+       */
+      std::vector<_RealType>
+      intervals() const
+      {
+	if (_M_param._M_int.empty())
+	  {
+	    std::vector<_RealType> __tmp(2);
+	    __tmp[1] = _RealType(1);
+	    return __tmp;
+	  }
+	else
+	  return _M_param._M_int;
+      }
+
+      /**
+       * @brief Return a vector of the probability densities of the
+       *        distribution.
+       */
+      std::vector<double>
+      densities() const
+      {
+	return _M_param._M_den.empty()
+	  ? std::vector<double>(2, 1.0) : _M_param._M_den;
+      }
+
+      /**
+       * @brief Returns the parameter set of the distribution.
+       */
+      param_type
+      param() const
+      { return _M_param; }
+
+      /**
+       * @brief Sets the parameter set of the distribution.
+       * @param __param The new parameter set of the distribution.
+       */
+      void
+      param(const param_type& __param)
+      { _M_param = __param; }
+
+      /**
+       * @brief Returns the greatest lower bound value of the distribution.
+       */
+      result_type
+      min() const
+      {
+	return _M_param._M_int.empty()
+	  ? result_type(0) : _M_param._M_int.front();
+      }
+
+      /**
+       * @brief Returns the least upper bound value of the distribution.
+       */
+      result_type
+      max() const
+      {
+	return _M_param._M_int.empty()
+	  ? result_type(1) : _M_param._M_int.back();
+      }
+
+      /**
+       * @brief Generating functions.
+       */
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng)
+	{ return this->operator()(__urng, this->param()); }
+
+      template<typename _UniformRandomNumberGenerator>
+	result_type
+	operator()(_UniformRandomNumberGenerator& __urng,
+		   const param_type& __p);
+
+      /**
+       * @brief Inserts a %piecewise_linear_distribution random number
+       *        distribution @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %piecewise_linear_distribution random number
+       *             distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       *          an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_ostream<_CharT, _Traits>&
+	operator<<(std::basic_ostream<_CharT, _Traits>&,
+		   const std::piecewise_linear_distribution<_RealType1>&);
+
+      /**
+       * @brief Extracts a %piecewise_linear_distribution random number
+       *        distribution @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %piecewise_linear_distribution random number
+       *             generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error
+       *          state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+	friend std::basic_istream<_CharT, _Traits>&
+	operator>>(std::basic_istream<_CharT, _Traits>&,
+		   std::piecewise_linear_distribution<_RealType1>&);
+
+    private:
+      param_type _M_param;
+    };
+
+  /**
+    * @brief Return true if two piecewise linear distributions have the
+    *        same parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator==(const std::piecewise_linear_distribution<_RealType>& __d1,
+	       const std::piecewise_linear_distribution<_RealType>& __d2)
+    { return __d1.param() == __d2.param(); }
+
+  /**
+    * @brief Return true if two piecewise linear distributions have
+    *        different parameters.
+   */
+  template<typename _RealType>
+    inline bool
+    operator!=(const std::piecewise_linear_distribution<_RealType>& __d1,
+	       const std::piecewise_linear_distribution<_RealType>& __d2)
+    { return !(__d1 == __d2); }
+
+
+  /* @} */ // group random_distributions_poisson
+
+  /* @} */ // group random_distributions
+
+  /**
+   * @addtogroup random_utilities Random Number Utilities
+   * @ingroup random
+   * @{
+   */
+
+  /**
+   * @brief The seed_seq class generates sequences of seeds for random
+   *        number generators.
+   */
+  class seed_seq
+  {
+
+  public:
+    /** The type of the seed vales. */
+    typedef uint_least32_t result_type;
+
+    /** Default constructor. */
+    seed_seq()
+    : _M_v()
+    { }
+
+    template<typename _IntType>
+      seed_seq(std::initializer_list<_IntType> il);
+
+    template<typename _InputIterator>
+      seed_seq(_InputIterator __begin, _InputIterator __end);
+
+    // generating functions
+    template<typename _RandomAccessIterator>
+      void
+      generate(_RandomAccessIterator __begin, _RandomAccessIterator __end);
+
+    // property functions
+    size_t size() const
+    { return _M_v.size(); }
+
+    template<typename OutputIterator>
+      void
+      param(OutputIterator __dest) const
+      { std::copy(_M_v.begin(), _M_v.end(), __dest); }
+
+  private:
+    ///
+    std::vector<result_type> _M_v;
+  };
+
+  /* @} */ // group random_utilities
+
+  /* @} */ // group random
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.tcc
new file mode 100644
index 000000000..e81392fa5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/random.tcc
@@ -0,0 +1,2830 @@
+// random number generation (out of line) -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/random.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{random}
+ */
+
+#ifndef _RANDOM_TCC
+#define _RANDOM_TCC 1
+
+#include <numeric> // std::accumulate and std::partial_sum
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  /*
+   * (Further) implementation-space details.
+   */
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    // General case for x = (ax + c) mod m -- use Schrage's algorithm to
+    // avoid integer overflow.
+    //
+    // Because a and c are compile-time integral constants the compiler
+    // kindly elides any unreachable paths.
+    //
+    // Preconditions:  a > 0, m > 0.
+    //
+    template<typename _Tp, _Tp __m, _Tp __a, _Tp __c, bool>
+      struct _Mod
+      {
+	static _Tp
+	__calc(_Tp __x)
+	{
+	  if (__a == 1)
+	    __x %= __m;
+	  else
+	    {
+	      static const _Tp __q = __m / __a;
+	      static const _Tp __r = __m % __a;
+
+	      _Tp __t1 = __a * (__x % __q);
+	      _Tp __t2 = __r * (__x / __q);
+	      if (__t1 >= __t2)
+		__x = __t1 - __t2;
+	      else
+		__x = __m - __t2 + __t1;
+	    }
+
+	  if (__c != 0)
+	    {
+	      const _Tp __d = __m - __x;
+	      if (__d > __c)
+		__x += __c;
+	      else
+		__x = __c - __d;
+	    }
+	  return __x;
+	}
+      };
+
+    // Special case for m == 0 -- use unsigned integer overflow as modulo
+    // operator.
+    template<typename _Tp, _Tp __m, _Tp __a, _Tp __c>
+      struct _Mod<_Tp, __m, __a, __c, true>
+      {
+	static _Tp
+	__calc(_Tp __x)
+	{ return __a * __x + __c; }
+      };
+
+    template<typename _InputIterator, typename _OutputIterator,
+	     typename _UnaryOperation>
+      _OutputIterator
+      __transform(_InputIterator __first, _InputIterator __last,
+		  _OutputIterator __result, _UnaryOperation __unary_op)
+      {
+	for (; __first != __last; ++__first, ++__result)
+	  *__result = __unary_op(*__first);
+	return __result;
+      }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    constexpr _UIntType
+    linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier;
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    constexpr _UIntType
+    linear_congruential_engine<_UIntType, __a, __c, __m>::increment;
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    constexpr _UIntType
+    linear_congruential_engine<_UIntType, __a, __c, __m>::modulus;
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    constexpr _UIntType
+    linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed;
+
+  /**
+   * Seeds the LCR with integral value @p __s, adjusted so that the
+   * ring identity is never a member of the convergence set.
+   */
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    void
+    linear_congruential_engine<_UIntType, __a, __c, __m>::
+    seed(result_type __s)
+    {
+      if ((__detail::__mod<_UIntType, __m>(__c) == 0)
+	  && (__detail::__mod<_UIntType, __m>(__s) == 0))
+	_M_x = 1;
+      else
+	_M_x = __detail::__mod<_UIntType, __m>(__s);
+    }
+
+  /**
+   * Seeds the LCR engine with a value generated by @p __q.
+   */
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    template<typename _Sseq>
+      typename std::enable_if<std::is_class<_Sseq>::value>::type
+      linear_congruential_engine<_UIntType, __a, __c, __m>::
+      seed(_Sseq& __q)
+      {
+	const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits
+	                                : std::__lg(__m);
+	const _UIntType __k = (__k0 + 31) / 32;
+	uint_least32_t __arr[__k + 3];
+	__q.generate(__arr + 0, __arr + __k + 3);
+	_UIntType __factor = 1u;
+	_UIntType __sum = 0u;
+	for (size_t __j = 0; __j < __k; ++__j)
+	  {
+	    __sum += __arr[__j + 3] * __factor;
+	    __factor *= __detail::_Shift<_UIntType, 32>::__value;
+	  }
+	seed(__sum);
+      }
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const linear_congruential_engine<_UIntType,
+						__a, __c, __m>& __lcr)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__os.widen(' '));
+
+      __os << __lcr._M_x;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec);
+
+      __is >> __lcr._M_x;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::word_size;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::state_size;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::shift_size;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::mask_bits;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::xor_mask;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_u;
+   
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_d;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_s;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_b;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_t;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_c;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr size_t
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::tempering_l;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::
+                                              initialization_multiplier;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    constexpr _UIntType
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::default_seed;
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    void
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::
+    seed(result_type __sd)
+    {
+      _M_x[0] = __detail::__mod<_UIntType,
+	__detail::_Shift<_UIntType, __w>::__value>(__sd);
+
+      for (size_t __i = 1; __i < state_size; ++__i)
+	{
+	  _UIntType __x = _M_x[__i - 1];
+	  __x ^= __x >> (__w - 2);
+	  __x *= __f;
+	  __x += __detail::__mod<_UIntType, __n>(__i);
+	  _M_x[__i] = __detail::__mod<_UIntType,
+	    __detail::_Shift<_UIntType, __w>::__value>(__x);
+	}
+      _M_p = state_size;
+    }
+
+  template<typename _UIntType,
+	   size_t __w, size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    template<typename _Sseq>
+      typename std::enable_if<std::is_class<_Sseq>::value>::type
+      mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			      __s, __b, __t, __c, __l, __f>::
+      seed(_Sseq& __q)
+      {
+	const _UIntType __upper_mask = (~_UIntType()) << __r;
+	const size_t __k = (__w + 31) / 32;
+	uint_least32_t __arr[__n * __k];
+	__q.generate(__arr + 0, __arr + __n * __k);
+
+	bool __zero = true;
+	for (size_t __i = 0; __i < state_size; ++__i)
+	  {
+	    _UIntType __factor = 1u;
+	    _UIntType __sum = 0u;
+	    for (size_t __j = 0; __j < __k; ++__j)
+	      {
+		__sum += __arr[__k * __i + __j] * __factor;
+		__factor *= __detail::_Shift<_UIntType, 32>::__value;
+	      }
+	    _M_x[__i] = __detail::__mod<_UIntType,
+	      __detail::_Shift<_UIntType, __w>::__value>(__sum);
+
+	    if (__zero)
+	      {
+		if (__i == 0)
+		  {
+		    if ((_M_x[0] & __upper_mask) != 0u)
+		      __zero = false;
+		  }
+		else if (_M_x[__i] != 0u)
+		  __zero = false;
+	      }
+	  }
+        if (__zero)
+          _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value;
+      }
+
+  template<typename _UIntType, size_t __w,
+	   size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f>
+    typename
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::result_type
+    mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d,
+			    __s, __b, __t, __c, __l, __f>::
+    operator()()
+    {
+      // Reload the vector - cost is O(n) amortized over n calls.
+      if (_M_p >= state_size)
+	{
+	  const _UIntType __upper_mask = (~_UIntType()) << __r;
+	  const _UIntType __lower_mask = ~__upper_mask;
+
+	  for (size_t __k = 0; __k < (__n - __m); ++__k)
+	    {
+	      _UIntType __y = ((_M_x[__k] & __upper_mask)
+			       | (_M_x[__k + 1] & __lower_mask));
+	      _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	    }
+
+	  for (size_t __k = (__n - __m); __k < (__n - 1); ++__k)
+	    {
+	      _UIntType __y = ((_M_x[__k] & __upper_mask)
+			       | (_M_x[__k + 1] & __lower_mask));
+	      _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	    }
+
+	  _UIntType __y = ((_M_x[__n - 1] & __upper_mask)
+			   | (_M_x[0] & __lower_mask));
+	  _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	  _M_p = 0;
+	}
+
+      // Calculate o(x(i)).
+      result_type __z = _M_x[_M_p++];
+      __z ^= (__z >> __u) & __d;
+      __z ^= (__z << __s) & __b;
+      __z ^= (__z << __t) & __c;
+      __z ^= (__z >> __l);
+
+      return __z;
+    }
+
+  template<typename _UIntType, size_t __w,
+	   size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const mersenne_twister_engine<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      for (size_t __i = 0; __i < __n - 1; ++__i)
+	__os << __x._M_x[__i] << __space;
+      __os << __x._M_x[__n - 1];
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _UIntType, size_t __w,
+	   size_t __n, size_t __m, size_t __r,
+	   _UIntType __a, size_t __u, _UIntType __d, size_t __s,
+	   _UIntType __b, size_t __t, _UIntType __c, size_t __l,
+	   _UIntType __f, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       mersenne_twister_engine<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      for (size_t __i = 0; __i < __n; ++__i)
+	__is >> __x._M_x[__i];
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    constexpr size_t
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size;
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    constexpr size_t
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag;
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    constexpr size_t
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag;
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    constexpr _UIntType
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed;
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    void
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::
+    seed(result_type __value)
+    {
+      std::linear_congruential_engine<result_type, 40014u, 0u, 2147483563u>
+	__lcg(__value == 0u ? default_seed : __value);
+
+      const size_t __n = (__w + 31) / 32;
+
+      for (size_t __i = 0; __i < long_lag; ++__i)
+	{
+	  _UIntType __sum = 0u;
+	  _UIntType __factor = 1u;
+	  for (size_t __j = 0; __j < __n; ++__j)
+	    {
+	      __sum += __detail::__mod<uint_least32_t,
+		       __detail::_Shift<uint_least32_t, 32>::__value>
+			 (__lcg()) * __factor;
+	      __factor *= __detail::_Shift<_UIntType, 32>::__value;
+	    }
+	  _M_x[__i] = __detail::__mod<_UIntType,
+	    __detail::_Shift<_UIntType, __w>::__value>(__sum);
+	}
+      _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0;
+      _M_p = 0;
+    }
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    template<typename _Sseq>
+      typename std::enable_if<std::is_class<_Sseq>::value>::type
+      subtract_with_carry_engine<_UIntType, __w, __s, __r>::
+      seed(_Sseq& __q)
+      {
+	const size_t __k = (__w + 31) / 32;
+	uint_least32_t __arr[__r * __k];
+	__q.generate(__arr + 0, __arr + __r * __k);
+
+	for (size_t __i = 0; __i < long_lag; ++__i)
+	  {
+	    _UIntType __sum = 0u;
+	    _UIntType __factor = 1u;
+	    for (size_t __j = 0; __j < __k; ++__j)
+	      {
+		__sum += __arr[__k * __i + __j] * __factor;
+		__factor *= __detail::_Shift<_UIntType, 32>::__value;
+	      }
+	    _M_x[__i] = __detail::__mod<_UIntType,
+	      __detail::_Shift<_UIntType, __w>::__value>(__sum);
+	  }
+	_M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0;
+	_M_p = 0;
+      }
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r>
+    typename subtract_with_carry_engine<_UIntType, __w, __s, __r>::
+	     result_type
+    subtract_with_carry_engine<_UIntType, __w, __s, __r>::
+    operator()()
+    {
+      // Derive short lag index from current index.
+      long __ps = _M_p - short_lag;
+      if (__ps < 0)
+	__ps += long_lag;
+
+      // Calculate new x(i) without overflow or division.
+      // NB: Thanks to the requirements for _UIntType, _M_x[_M_p] + _M_carry
+      // cannot overflow.
+      _UIntType __xi;
+      if (_M_x[__ps] >= _M_x[_M_p] + _M_carry)
+	{
+	  __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry;
+	  _M_carry = 0;
+	}
+      else
+	{
+	  __xi = (__detail::_Shift<_UIntType, __w>::__value
+		  - _M_x[_M_p] - _M_carry + _M_x[__ps]);
+	  _M_carry = 1;
+	}
+      _M_x[_M_p] = __xi;
+
+      // Adjust current index to loop around in ring buffer.
+      if (++_M_p >= long_lag)
+	_M_p = 0;
+
+      return __xi;
+    }
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const subtract_with_carry_engine<_UIntType,
+						__w, __s, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      for (size_t __i = 0; __i < __r; ++__i)
+	__os << __x._M_x[__i] << __space;
+      __os << __x._M_carry;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _UIntType, size_t __w, size_t __s, size_t __r,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      for (size_t __i = 0; __i < __r; ++__i)
+	__is >> __x._M_x[__i];
+      __is >> __x._M_carry;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RandomNumberEngine, size_t __p, size_t __r>
+    constexpr size_t
+    discard_block_engine<_RandomNumberEngine, __p, __r>::block_size;
+
+  template<typename _RandomNumberEngine, size_t __p, size_t __r>
+    constexpr size_t
+    discard_block_engine<_RandomNumberEngine, __p, __r>::used_block;
+
+  template<typename _RandomNumberEngine, size_t __p, size_t __r>
+    typename discard_block_engine<_RandomNumberEngine,
+			   __p, __r>::result_type
+    discard_block_engine<_RandomNumberEngine, __p, __r>::
+    operator()()
+    {
+      if (_M_n >= used_block)
+	{
+	  _M_b.discard(block_size - _M_n);
+	  _M_n = 0;
+	}
+      ++_M_n;
+      return _M_b();
+    }
+
+  template<typename _RandomNumberEngine, size_t __p, size_t __r,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const discard_block_engine<_RandomNumberEngine,
+	       __p, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x.base() << __space << __x._M_n;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _RandomNumberEngine, size_t __p, size_t __r,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       discard_block_engine<_RandomNumberEngine, __p, __r>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_b >> __x._M_n;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RandomNumberEngine, size_t __w, typename _UIntType>
+    typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>::
+      result_type
+    independent_bits_engine<_RandomNumberEngine, __w, _UIntType>::
+    operator()()
+    {
+      const long double __r = static_cast<long double>(_M_b.max())
+			    - static_cast<long double>(_M_b.min()) + 1.0L;
+      const result_type __m = std::log(__r) / std::log(2.0L);
+      result_type __n, __n0, __y0, __y1, __s0, __s1;
+      for (size_t __i = 0; __i < 2; ++__i)
+	{
+	  __n = (__w + __m - 1) / __m + __i;
+	  __n0 = __n - __w % __n;
+	  const result_type __w0 = __w / __n;
+	  const result_type __w1 = __w0 + 1;
+	  __s0 = result_type(1) << __w0;
+	  __s1 = result_type(1) << __w1;
+	  __y0 = __s0 * (__r / __s0);
+	  __y1 = __s1 * (__r / __s1);
+	  if (__r - __y0 <= __y0 / __n)
+	    break;
+	}
+
+      result_type __sum = 0;
+      for (size_t __k = 0; __k < __n0; ++__k)
+	{
+	  result_type __u;
+	  do
+	    __u = _M_b() - _M_b.min();
+	  while (__u >= __y0);
+	  __sum = __s0 * __sum + __u % __s0;
+	}
+      for (size_t __k = __n0; __k < __n; ++__k)
+	{
+	  result_type __u;
+	  do
+	    __u = _M_b() - _M_b.min();
+	  while (__u >= __y1);
+	  __sum = __s1 * __sum + __u % __s1;
+	}
+      return __sum;
+    }
+
+
+  template<typename _RandomNumberEngine, size_t __k>
+    constexpr size_t
+    shuffle_order_engine<_RandomNumberEngine, __k>::table_size;
+
+  template<typename _RandomNumberEngine, size_t __k>
+    typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type
+    shuffle_order_engine<_RandomNumberEngine, __k>::
+    operator()()
+    {
+      size_t __j = __k * ((_M_y - _M_b.min())
+			  / (_M_b.max() - _M_b.min() + 1.0L));
+      _M_y = _M_v[__j];
+      _M_v[__j] = _M_b();
+
+      return _M_y;
+    }
+
+  template<typename _RandomNumberEngine, size_t __k,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const shuffle_order_engine<_RandomNumberEngine, __k>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x.base();
+      for (size_t __i = 0; __i < __k; ++__i)
+	__os << __space << __x._M_v[__i];
+      __os << __space << __x._M_y;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _RandomNumberEngine, size_t __k,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       shuffle_order_engine<_RandomNumberEngine, __k>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_b;
+      for (size_t __i = 0; __i < __k; ++__i)
+	__is >> __x._M_v[__i];
+      __is >> __x._M_y;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename uniform_int_distribution<_IntType>::result_type
+      uniform_int_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	typedef typename std::make_unsigned<typename
+	  _UniformRandomNumberGenerator::result_type>::type __urngtype;
+	typedef typename std::make_unsigned<result_type>::type __utype;
+	typedef typename std::conditional<(sizeof(__urngtype)
+					   > sizeof(__utype)),
+	  __urngtype, __utype>::type __uctype;
+
+	const __uctype __urngmin = __urng.min();
+	const __uctype __urngmax = __urng.max();
+	const __uctype __urngrange = __urngmax - __urngmin;
+	const __uctype __urange
+	  = __uctype(__param.b()) - __uctype(__param.a());
+
+	__uctype __ret;
+
+	if (__urngrange > __urange)
+	  {
+	    // downscaling
+	    const __uctype __uerange = __urange + 1; // __urange can be zero
+	    const __uctype __scaling = __urngrange / __uerange;
+	    const __uctype __past = __uerange * __scaling;
+	    do
+	      __ret = __uctype(__urng()) - __urngmin;
+	    while (__ret >= __past);
+	    __ret /= __scaling;
+	  }
+	else if (__urngrange < __urange)
+	  {
+	    // upscaling
+	    /*
+	      Note that every value in [0, urange]
+	      can be written uniquely as
+
+	      (urngrange + 1) * high + low
+
+	      where
+
+	      high in [0, urange / (urngrange + 1)]
+
+	      and
+	
+	      low in [0, urngrange].
+	    */
+	    __uctype __tmp; // wraparound control
+	    do
+	      {
+		const __uctype __uerngrange = __urngrange + 1;
+		__tmp = (__uerngrange * operator()
+			 (__urng, param_type(0, __urange / __uerngrange)));
+		__ret = __tmp + (__uctype(__urng()) - __urngmin);
+	      }
+	    while (__ret > __urange || __ret < __tmp);
+	  }
+	else
+	  __ret = __uctype(__urng()) - __urngmin;
+
+	return __ret + __param.a();
+      }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const uniform_int_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x.a() << __space << __x.b();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       uniform_int_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _IntType __a, __b;
+      __is >> __a >> __b;
+      __x.param(typename uniform_int_distribution<_IntType>::
+		param_type(__a, __b));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const uniform_real_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.a() << __space << __x.b();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       uniform_real_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      _RealType __a, __b;
+      __is >> __a >> __b;
+      __x.param(typename uniform_real_distribution<_RealType>::
+		param_type(__a, __b));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const bernoulli_distribution& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      __os << __x.p();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename geometric_distribution<_IntType>::result_type
+      geometric_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	// About the epsilon thing see this thread:
+	// http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html
+	const double __naf =
+	  (1 - std::numeric_limits<double>::epsilon()) / 2;
+	// The largest _RealType convertible to _IntType.
+	const double __thr =
+	  std::numeric_limits<_IntType>::max() + __naf;
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+	double __cand;
+	do
+	  __cand = std::floor(std::log(__aurng()) / __param._M_log_1_p);
+	while (__cand >= __thr);
+
+	return result_type(__cand + __naf);
+      }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const geometric_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      __os << __x.p();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       geometric_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      double __p;
+      __is >> __p;
+      __x.param(typename geometric_distribution<_IntType>::param_type(__p));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename negative_binomial_distribution<_IntType>::result_type
+      negative_binomial_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	const double __y = _M_gd(__urng);
+
+	// XXX Is the constructor too slow?
+	std::poisson_distribution<result_type> __poisson(__y);
+	return __poisson(__urng);
+      }
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename negative_binomial_distribution<_IntType>::result_type
+      negative_binomial_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __p)
+      {
+	typedef typename std::gamma_distribution<result_type>::param_type
+	  param_type;
+	
+	const double __y =
+	  _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p()));
+
+	std::poisson_distribution<result_type> __poisson(__y);
+	return __poisson(__urng);
+      }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const negative_binomial_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      __os << __x.k() << __space << __x.p()
+	   << __space << __x._M_gd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       negative_binomial_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      _IntType __k;
+      double __p;
+      __is >> __k >> __p >> __x._M_gd;
+      __x.param(typename negative_binomial_distribution<_IntType>::
+		param_type(__k, __p));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    void
+    poisson_distribution<_IntType>::param_type::
+    _M_initialize()
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      if (_M_mean >= 12)
+	{
+	  const double __m = std::floor(_M_mean);
+	  _M_lm_thr = std::log(_M_mean);
+	  _M_lfm = std::lgamma(__m + 1);
+	  _M_sm = std::sqrt(__m);
+
+	  const double __pi_4 = 0.7853981633974483096156608458198757L;
+	  const double __dx = std::sqrt(2 * __m * std::log(32 * __m
+							      / __pi_4));
+	  _M_d = std::round(std::max(6.0, std::min(__m, __dx)));
+	  const double __cx = 2 * __m + _M_d;
+	  _M_scx = std::sqrt(__cx / 2);
+	  _M_1cx = 1 / __cx;
+
+	  _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx);
+	  _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2))
+		/ _M_d;
+	}
+      else
+#endif
+	_M_lm_thr = std::exp(-_M_mean);
+      }
+
+  /**
+   * A rejection algorithm when mean >= 12 and a simple method based
+   * upon the multiplication of uniform random variates otherwise.
+   * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1
+   * is defined.
+   *
+   * Reference:
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!).
+   */
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename poisson_distribution<_IntType>::result_type
+      poisson_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+#if _GLIBCXX_USE_C99_MATH_TR1
+	if (__param.mean() >= 12)
+	  {
+	    double __x;
+
+	    // See comments above...
+	    const double __naf =
+	      (1 - std::numeric_limits<double>::epsilon()) / 2;
+	    const double __thr =
+	      std::numeric_limits<_IntType>::max() + __naf;
+
+	    const double __m = std::floor(__param.mean());
+	    // sqrt(pi / 2)
+	    const double __spi_2 = 1.2533141373155002512078826424055226L;
+	    const double __c1 = __param._M_sm * __spi_2;
+	    const double __c2 = __param._M_c2b + __c1;
+	    const double __c3 = __c2 + 1;
+	    const double __c4 = __c3 + 1;
+	    // e^(1 / 78)
+	    const double __e178 = 1.0129030479320018583185514777512983L;
+	    const double __c5 = __c4 + __e178;
+	    const double __c = __param._M_cb + __c5;
+	    const double __2cx = 2 * (2 * __m + __param._M_d);
+
+	    bool __reject = true;
+	    do
+	      {
+		const double __u = __c * __aurng();
+		const double __e = -std::log(__aurng());
+
+		double __w = 0.0;
+
+		if (__u <= __c1)
+		  {
+		    const double __n = _M_nd(__urng);
+		    const double __y = -std::abs(__n) * __param._M_sm - 1;
+		    __x = std::floor(__y);
+		    __w = -__n * __n / 2;
+		    if (__x < -__m)
+		      continue;
+		  }
+		else if (__u <= __c2)
+		  {
+		    const double __n = _M_nd(__urng);
+		    const double __y = 1 + std::abs(__n) * __param._M_scx;
+		    __x = std::ceil(__y);
+		    __w = __y * (2 - __y) * __param._M_1cx;
+		    if (__x > __param._M_d)
+		      continue;
+		  }
+		else if (__u <= __c3)
+		  // NB: This case not in the book, nor in the Errata,
+		  // but should be ok...
+		  __x = -1;
+		else if (__u <= __c4)
+		  __x = 0;
+		else if (__u <= __c5)
+		  __x = 1;
+		else
+		  {
+		    const double __v = -std::log(__aurng());
+		    const double __y = __param._M_d
+				     + __v * __2cx / __param._M_d;
+		    __x = std::ceil(__y);
+		    __w = -__param._M_d * __param._M_1cx * (1 + __y / 2);
+		  }
+
+		__reject = (__w - __e - __x * __param._M_lm_thr
+			    > __param._M_lfm - std::lgamma(__x + __m + 1));
+
+		__reject |= __x + __m >= __thr;
+
+	      } while (__reject);
+
+	    return result_type(__x + __m + __naf);
+	  }
+	else
+#endif
+	  {
+	    _IntType     __x = 0;
+	    double __prod = 1.0;
+
+	    do
+	      {
+		__prod *= __aurng();
+		__x += 1;
+	      }
+	    while (__prod > __param._M_lm_thr);
+
+	    return __x - 1;
+	  }
+      }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const poisson_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      __os << __x.mean() << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       poisson_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      double __mean;
+      __is >> __mean >> __x._M_nd;
+      __x.param(typename poisson_distribution<_IntType>::param_type(__mean));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    void
+    binomial_distribution<_IntType>::param_type::
+    _M_initialize()
+    {
+      const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p;
+
+      _M_easy = true;
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+      if (_M_t * __p12 >= 8)
+	{
+	  _M_easy = false;
+	  const double __np = std::floor(_M_t * __p12);
+	  const double __pa = __np / _M_t;
+	  const double __1p = 1 - __pa;
+
+	  const double __pi_4 = 0.7853981633974483096156608458198757L;
+	  const double __d1x =
+	    std::sqrt(__np * __1p * std::log(32 * __np
+					     / (81 * __pi_4 * __1p)));
+	  _M_d1 = std::round(std::max(1.0, __d1x));
+	  const double __d2x =
+	    std::sqrt(__np * __1p * std::log(32 * _M_t * __1p
+					     / (__pi_4 * __pa)));
+	  _M_d2 = std::round(std::max(1.0, __d2x));
+
+	  // sqrt(pi / 2)
+	  const double __spi_2 = 1.2533141373155002512078826424055226L;
+	  _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np));
+	  _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p));
+	  _M_c = 2 * _M_d1 / __np;
+	  _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2;
+	  const double __a12 = _M_a1 + _M_s2 * __spi_2;
+	  const double __s1s = _M_s1 * _M_s1;
+	  _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p))
+			     * 2 * __s1s / _M_d1
+			     * std::exp(-_M_d1 * _M_d1 / (2 * __s1s)));
+	  const double __s2s = _M_s2 * _M_s2;
+	  _M_s = (_M_a123 + 2 * __s2s / _M_d2
+		  * std::exp(-_M_d2 * _M_d2 / (2 * __s2s)));
+	  _M_lf = (std::lgamma(__np + 1)
+		   + std::lgamma(_M_t - __np + 1));
+	  _M_lp1p = std::log(__pa / __1p);
+
+	  _M_q = -std::log(1 - (__p12 - __pa) / __1p);
+	}
+      else
+#endif
+	_M_q = -std::log(1 - __p12);
+    }
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename binomial_distribution<_IntType>::result_type
+      binomial_distribution<_IntType>::
+      _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t)
+      {
+	_IntType __x = 0;
+	double __sum = 0.0;
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+	do
+	  {
+	    const double __e = -std::log(__aurng());
+	    __sum += __e / (__t - __x);
+	    __x += 1;
+	  }
+	while (__sum <= _M_param._M_q);
+
+	return __x - 1;
+      }
+
+  /**
+   * A rejection algorithm when t * p >= 8 and a simple waiting time
+   * method - the second in the referenced book - otherwise.
+   * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1
+   * is defined.
+   *
+   * Reference:
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. X, Sect. 4 (+ Errata!).
+   */
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename binomial_distribution<_IntType>::result_type
+      binomial_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	result_type __ret;
+	const _IntType __t = __param.t();
+	const double __p = __param.p();
+	const double __p12 = __p <= 0.5 ? __p : 1.0 - __p;
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+	if (!__param._M_easy)
+	  {
+	    double __x;
+
+	    // See comments above...
+	    const double __naf =
+	      (1 - std::numeric_limits<double>::epsilon()) / 2;
+	    const double __thr =
+	      std::numeric_limits<_IntType>::max() + __naf;
+
+	    const double __np = std::floor(__t * __p12);
+
+	    // sqrt(pi / 2)
+	    const double __spi_2 = 1.2533141373155002512078826424055226L;
+	    const double __a1 = __param._M_a1;
+	    const double __a12 = __a1 + __param._M_s2 * __spi_2;
+	    const double __a123 = __param._M_a123;
+	    const double __s1s = __param._M_s1 * __param._M_s1;
+	    const double __s2s = __param._M_s2 * __param._M_s2;
+
+	    bool __reject;
+	    do
+	      {
+		const double __u = __param._M_s * __aurng();
+
+		double __v;
+
+		if (__u <= __a1)
+		  {
+		    const double __n = _M_nd(__urng);
+		    const double __y = __param._M_s1 * std::abs(__n);
+		    __reject = __y >= __param._M_d1;
+		    if (!__reject)
+		      {
+			const double __e = -std::log(__aurng());
+			__x = std::floor(__y);
+			__v = -__e - __n * __n / 2 + __param._M_c;
+		      }
+		  }
+		else if (__u <= __a12)
+		  {
+		    const double __n = _M_nd(__urng);
+		    const double __y = __param._M_s2 * std::abs(__n);
+		    __reject = __y >= __param._M_d2;
+		    if (!__reject)
+		      {
+			const double __e = -std::log(__aurng());
+			__x = std::floor(-__y);
+			__v = -__e - __n * __n / 2;
+		      }
+		  }
+		else if (__u <= __a123)
+		  {
+		    const double __e1 = -std::log(__aurng());
+		    const double __e2 = -std::log(__aurng());
+
+		    const double __y = __param._M_d1
+				     + 2 * __s1s * __e1 / __param._M_d1;
+		    __x = std::floor(__y);
+		    __v = (-__e2 + __param._M_d1 * (1 / (__t - __np)
+						    -__y / (2 * __s1s)));
+		    __reject = false;
+		  }
+		else
+		  {
+		    const double __e1 = -std::log(__aurng());
+		    const double __e2 = -std::log(__aurng());
+
+		    const double __y = __param._M_d2
+				     + 2 * __s2s * __e1 / __param._M_d2;
+		    __x = std::floor(-__y);
+		    __v = -__e2 - __param._M_d2 * __y / (2 * __s2s);
+		    __reject = false;
+		  }
+
+		__reject = __reject || __x < -__np || __x > __t - __np;
+		if (!__reject)
+		  {
+		    const double __lfx =
+		      std::lgamma(__np + __x + 1)
+		      + std::lgamma(__t - (__np + __x) + 1);
+		    __reject = __v > __param._M_lf - __lfx
+			     + __x * __param._M_lp1p;
+		  }
+
+		__reject |= __x + __np >= __thr;
+	      }
+	    while (__reject);
+
+	    __x += __np + __naf;
+
+	    const _IntType __z = _M_waiting(__urng, __t - _IntType(__x));
+	    __ret = _IntType(__x) + __z;
+	  }
+	else
+#endif
+	  __ret = _M_waiting(__urng, __t);
+
+	if (__p12 != __p)
+	  __ret = __t - __ret;
+	return __ret;
+      }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const binomial_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      __os << __x.t() << __space << __x.p()
+	   << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       binomial_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _IntType __t;
+      double __p;
+      __is >> __t >> __p >> __x._M_nd;
+      __x.param(typename binomial_distribution<_IntType>::
+		param_type(__t, __p));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const exponential_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.lambda();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       exponential_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __lambda;
+      __is >> __lambda;
+      __x.param(typename exponential_distribution<_RealType>::
+		param_type(__lambda));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  /**
+   * Polar method due to Marsaglia.
+   *
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. V, Sect. 4.4.
+   */
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename normal_distribution<_RealType>::result_type
+      normal_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	result_type __ret;
+	__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	  __aurng(__urng);
+
+	if (_M_saved_available)
+	  {
+	    _M_saved_available = false;
+	    __ret = _M_saved;
+	  }
+	else
+	  {
+	    result_type __x, __y, __r2;
+	    do
+	      {
+		__x = result_type(2.0) * __aurng() - 1.0;
+		__y = result_type(2.0) * __aurng() - 1.0;
+		__r2 = __x * __x + __y * __y;
+	      }
+	    while (__r2 > 1.0 || __r2 == 0.0);
+
+	    const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2);
+	    _M_saved = __x * __mult;
+	    _M_saved_available = true;
+	    __ret = __y * __mult;
+	  }
+
+	__ret = __ret * __param.stddev() + __param.mean();
+	return __ret;
+      }
+
+  template<typename _RealType>
+    bool
+    operator==(const std::normal_distribution<_RealType>& __d1,
+	       const std::normal_distribution<_RealType>& __d2)
+    {
+      if (__d1._M_param == __d2._M_param
+	  && __d1._M_saved_available == __d2._M_saved_available)
+	{
+	  if (__d1._M_saved_available
+	      && __d1._M_saved == __d2._M_saved)
+	    return true;
+	  else if(!__d1._M_saved_available)
+	    return true;
+	  else
+	    return false;
+	}
+      else
+	return false;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const normal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.mean() << __space << __x.stddev()
+	   << __space << __x._M_saved_available;
+      if (__x._M_saved_available)
+	__os << __space << __x._M_saved;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       normal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      double __mean, __stddev;
+      __is >> __mean >> __stddev
+	   >> __x._M_saved_available;
+      if (__x._M_saved_available)
+	__is >> __x._M_saved;
+      __x.param(typename normal_distribution<_RealType>::
+		param_type(__mean, __stddev));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const lognormal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.m() << __space << __x.s()
+	   << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       lognormal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __m, __s;
+      __is >> __m >> __s >> __x._M_nd;
+      __x.param(typename lognormal_distribution<_RealType>::
+		param_type(__m, __s));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const chi_squared_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.n() << __space << __x._M_gd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       chi_squared_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __n;
+      __is >> __n >> __x._M_gd;
+      __x.param(typename chi_squared_distribution<_RealType>::
+		param_type(__n));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename cauchy_distribution<_RealType>::result_type
+      cauchy_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __p)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	  __aurng(__urng);
+	_RealType __u;
+	do
+	  __u = __aurng();
+	while (__u == 0.5);
+
+	const _RealType __pi = 3.1415926535897932384626433832795029L;
+	return __p.a() + __p.b() * std::tan(__pi * __u);
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const cauchy_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.a() << __space << __x.b();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       cauchy_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __a, __b;
+      __is >> __a >> __b;
+      __x.param(typename cauchy_distribution<_RealType>::
+		param_type(__a, __b));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const fisher_f_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.m() << __space << __x.n()
+	   << __space << __x._M_gd_x << __space << __x._M_gd_y;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       fisher_f_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __m, __n;
+      __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y;
+      __x.param(typename fisher_f_distribution<_RealType>::
+		param_type(__m, __n));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const student_t_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       student_t_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __n;
+      __is >> __n >> __x._M_nd >> __x._M_gd;
+      __x.param(typename student_t_distribution<_RealType>::param_type(__n));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    void
+    gamma_distribution<_RealType>::param_type::
+    _M_initialize()
+    {
+      _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha;
+
+      const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0);
+      _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1);
+    }
+
+  /**
+   * Marsaglia, G. and Tsang, W. W.
+   * "A Simple Method for Generating Gamma Variables"
+   * ACM Transactions on Mathematical Software, 26, 3, 363-372, 2000.
+   */
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename gamma_distribution<_RealType>::result_type
+      gamma_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	  __aurng(__urng);
+
+	result_type __u, __v, __n;
+	const result_type __a1 = (__param._M_malpha
+				  - _RealType(1.0) / _RealType(3.0));
+
+	do
+	  {
+	    do
+	      {
+		__n = _M_nd(__urng);
+		__v = result_type(1.0) + __param._M_a2 * __n; 
+	      }
+	    while (__v <= 0.0);
+
+	    __v = __v * __v * __v;
+	    __u = __aurng();
+	  }
+	while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n
+	       && (std::log(__u) > (0.5 * __n * __n + __a1
+				    * (1.0 - __v + std::log(__v)))));
+
+	if (__param.alpha() == __param._M_malpha)
+	  return __a1 * __v * __param.beta();
+	else
+	  {
+	    do
+	      __u = __aurng();
+	    while (__u == 0.0);
+	    
+	    return (std::pow(__u, result_type(1.0) / __param.alpha())
+		    * __a1 * __v * __param.beta());
+	  }
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const gamma_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.alpha() << __space << __x.beta()
+	   << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       gamma_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __alpha_val, __beta_val;
+      __is >> __alpha_val >> __beta_val >> __x._M_nd;
+      __x.param(typename gamma_distribution<_RealType>::
+		param_type(__alpha_val, __beta_val));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename weibull_distribution<_RealType>::result_type
+      weibull_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __p)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	  __aurng(__urng);
+	return __p.b() * std::pow(-std::log(__aurng()),
+				  result_type(1) / __p.a());
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const weibull_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.a() << __space << __x.b();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       weibull_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __a, __b;
+      __is >> __a >> __b;
+      __x.param(typename weibull_distribution<_RealType>::
+		param_type(__a, __b));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename extreme_value_distribution<_RealType>::result_type
+      extreme_value_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __p)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
+	  __aurng(__urng);
+	return __p.a() - __p.b() * std::log(-std::log(__aurng()));
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const extreme_value_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      __os << __x.a() << __space << __x.b();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       extreme_value_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      _RealType __a, __b;
+      __is >> __a >> __b;
+      __x.param(typename extreme_value_distribution<_RealType>::
+		param_type(__a, __b));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    void
+    discrete_distribution<_IntType>::param_type::
+    _M_initialize()
+    {
+      if (_M_prob.size() < 2)
+	{
+	  _M_prob.clear();
+	  return;
+	}
+
+      const double __sum = std::accumulate(_M_prob.begin(),
+					   _M_prob.end(), 0.0);
+      // Now normalize the probabilites.
+      __detail::__transform(_M_prob.begin(), _M_prob.end(), _M_prob.begin(),
+			  std::bind2nd(std::divides<double>(), __sum));
+      // Accumulate partial sums.
+      _M_cp.reserve(_M_prob.size());
+      std::partial_sum(_M_prob.begin(), _M_prob.end(),
+		       std::back_inserter(_M_cp));
+      // Make sure the last cumulative probability is one.
+      _M_cp[_M_cp.size() - 1] = 1.0;
+    }
+
+  template<typename _IntType>
+    template<typename _Func>
+      discrete_distribution<_IntType>::param_type::
+      param_type(size_t __nw, double __xmin, double __xmax, _Func __fw)
+      : _M_prob(), _M_cp()
+      {
+	const size_t __n = __nw == 0 ? 1 : __nw;
+	const double __delta = (__xmax - __xmin) / __n;
+
+	_M_prob.reserve(__n);
+	for (size_t __k = 0; __k < __nw; ++__k)
+	  _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta));
+
+	_M_initialize();
+      }
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename discrete_distribution<_IntType>::result_type
+      discrete_distribution<_IntType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	if (__param._M_cp.empty())
+	  return result_type(0);
+
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+	const double __p = __aurng();
+	auto __pos = std::lower_bound(__param._M_cp.begin(),
+				      __param._M_cp.end(), __p);
+
+	return __pos - __param._M_cp.begin();
+      }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const discrete_distribution<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<double>::max_digits10);
+
+      std::vector<double> __prob = __x.probabilities();
+      __os << __prob.size();
+      for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit)
+	__os << __space << *__dit;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       discrete_distribution<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      size_t __n;
+      __is >> __n;
+
+      std::vector<double> __prob_vec;
+      __prob_vec.reserve(__n);
+      for (; __n != 0; --__n)
+	{
+	  double __prob;
+	  __is >> __prob;
+	  __prob_vec.push_back(__prob);
+	}
+
+      __x.param(typename discrete_distribution<_IntType>::
+		param_type(__prob_vec.begin(), __prob_vec.end()));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    void
+    piecewise_constant_distribution<_RealType>::param_type::
+    _M_initialize()
+    {
+      if (_M_int.size() < 2
+	  || (_M_int.size() == 2
+	      && _M_int[0] == _RealType(0)
+	      && _M_int[1] == _RealType(1)))
+	{
+	  _M_int.clear();
+	  _M_den.clear();
+	  return;
+	}
+
+      const double __sum = std::accumulate(_M_den.begin(),
+					   _M_den.end(), 0.0);
+
+      __detail::__transform(_M_den.begin(), _M_den.end(), _M_den.begin(),
+			    std::bind2nd(std::divides<double>(), __sum));
+
+      _M_cp.reserve(_M_den.size());
+      std::partial_sum(_M_den.begin(), _M_den.end(),
+		       std::back_inserter(_M_cp));
+
+      // Make sure the last cumulative probability is one.
+      _M_cp[_M_cp.size() - 1] = 1.0;
+
+      for (size_t __k = 0; __k < _M_den.size(); ++__k)
+	_M_den[__k] /= _M_int[__k + 1] - _M_int[__k];
+    }
+
+  template<typename _RealType>
+    template<typename _InputIteratorB, typename _InputIteratorW>
+      piecewise_constant_distribution<_RealType>::param_type::
+      param_type(_InputIteratorB __bbegin,
+		 _InputIteratorB __bend,
+		 _InputIteratorW __wbegin)
+      : _M_int(), _M_den(), _M_cp()
+      {
+	if (__bbegin != __bend)
+	  {
+	    for (;;)
+	      {
+		_M_int.push_back(*__bbegin);
+		++__bbegin;
+		if (__bbegin == __bend)
+		  break;
+
+		_M_den.push_back(*__wbegin);
+		++__wbegin;
+	      }
+	  }
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _Func>
+      piecewise_constant_distribution<_RealType>::param_type::
+      param_type(initializer_list<_RealType> __bl, _Func __fw)
+      : _M_int(), _M_den(), _M_cp()
+      {
+	_M_int.reserve(__bl.size());
+	for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter)
+	  _M_int.push_back(*__biter);
+
+	_M_den.reserve(_M_int.size() - 1);
+	for (size_t __k = 0; __k < _M_int.size() - 1; ++__k)
+	  _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k])));
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _Func>
+      piecewise_constant_distribution<_RealType>::param_type::
+      param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw)
+      : _M_int(), _M_den(), _M_cp()
+      {
+	const size_t __n = __nw == 0 ? 1 : __nw;
+	const _RealType __delta = (__xmax - __xmin) / __n;
+
+	_M_int.reserve(__n + 1);
+	for (size_t __k = 0; __k <= __nw; ++__k)
+	  _M_int.push_back(__xmin + __k * __delta);
+
+	_M_den.reserve(__n);
+	for (size_t __k = 0; __k < __nw; ++__k)
+	  _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta));
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename piecewise_constant_distribution<_RealType>::result_type
+      piecewise_constant_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+	const double __p = __aurng();
+	if (__param._M_cp.empty())
+	  return __p;
+
+	auto __pos = std::lower_bound(__param._M_cp.begin(),
+				      __param._M_cp.end(), __p);
+	const size_t __i = __pos - __param._M_cp.begin();
+
+	const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0;
+
+	return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i];
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const piecewise_constant_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      std::vector<_RealType> __int = __x.intervals();
+      __os << __int.size() - 1;
+
+      for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
+	__os << __space << *__xit;
+
+      std::vector<double> __den = __x.densities();
+      for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
+	__os << __space << *__dit;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       piecewise_constant_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      size_t __n;
+      __is >> __n;
+
+      std::vector<_RealType> __int_vec;
+      __int_vec.reserve(__n + 1);
+      for (size_t __i = 0; __i <= __n; ++__i)
+	{
+	  _RealType __int;
+	  __is >> __int;
+	  __int_vec.push_back(__int);
+	}
+
+      std::vector<double> __den_vec;
+      __den_vec.reserve(__n);
+      for (size_t __i = 0; __i < __n; ++__i)
+	{
+	  double __den;
+	  __is >> __den;
+	  __den_vec.push_back(__den);
+	}
+
+      __x.param(typename piecewise_constant_distribution<_RealType>::
+	  param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    void
+    piecewise_linear_distribution<_RealType>::param_type::
+    _M_initialize()
+    {
+      if (_M_int.size() < 2
+	  || (_M_int.size() == 2
+	      && _M_int[0] == _RealType(0)
+	      && _M_int[1] == _RealType(1)
+	      && _M_den[0] == _M_den[1]))
+	{
+	  _M_int.clear();
+	  _M_den.clear();
+	  return;
+	}
+
+      double __sum = 0.0;
+      _M_cp.reserve(_M_int.size() - 1);
+      _M_m.reserve(_M_int.size() - 1);
+      for (size_t __k = 0; __k < _M_int.size() - 1; ++__k)
+	{
+	  const _RealType __delta = _M_int[__k + 1] - _M_int[__k];
+	  __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta;
+	  _M_cp.push_back(__sum);
+	  _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta);
+	}
+
+      //  Now normalize the densities...
+      __detail::__transform(_M_den.begin(), _M_den.end(), _M_den.begin(),
+			  std::bind2nd(std::divides<double>(), __sum));
+      //  ... and partial sums... 
+      __detail::__transform(_M_cp.begin(), _M_cp.end(), _M_cp.begin(),
+			    std::bind2nd(std::divides<double>(), __sum));
+      //  ... and slopes.
+      __detail::__transform(_M_m.begin(), _M_m.end(), _M_m.begin(),
+			    std::bind2nd(std::divides<double>(), __sum));
+      //  Make sure the last cumulative probablility is one.
+      _M_cp[_M_cp.size() - 1] = 1.0;
+     }
+
+  template<typename _RealType>
+    template<typename _InputIteratorB, typename _InputIteratorW>
+      piecewise_linear_distribution<_RealType>::param_type::
+      param_type(_InputIteratorB __bbegin,
+		 _InputIteratorB __bend,
+		 _InputIteratorW __wbegin)
+      : _M_int(), _M_den(), _M_cp(), _M_m()
+      {
+	for (; __bbegin != __bend; ++__bbegin, ++__wbegin)
+	  {
+	    _M_int.push_back(*__bbegin);
+	    _M_den.push_back(*__wbegin);
+	  }
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _Func>
+      piecewise_linear_distribution<_RealType>::param_type::
+      param_type(initializer_list<_RealType> __bl, _Func __fw)
+      : _M_int(), _M_den(), _M_cp(), _M_m()
+      {
+	_M_int.reserve(__bl.size());
+	_M_den.reserve(__bl.size());
+	for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter)
+	  {
+	    _M_int.push_back(*__biter);
+	    _M_den.push_back(__fw(*__biter));
+	  }
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _Func>
+      piecewise_linear_distribution<_RealType>::param_type::
+      param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw)
+      : _M_int(), _M_den(), _M_cp(), _M_m()
+      {
+	const size_t __n = __nw == 0 ? 1 : __nw;
+	const _RealType __delta = (__xmax - __xmin) / __n;
+
+	_M_int.reserve(__n + 1);
+	_M_den.reserve(__n + 1);
+	for (size_t __k = 0; __k <= __nw; ++__k)
+	  {
+	    _M_int.push_back(__xmin + __k * __delta);
+	    _M_den.push_back(__fw(_M_int[__k] + __delta));
+	  }
+
+	_M_initialize();
+      }
+
+  template<typename _RealType>
+    template<typename _UniformRandomNumberGenerator>
+      typename piecewise_linear_distribution<_RealType>::result_type
+      piecewise_linear_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng,
+		 const param_type& __param)
+      {
+	__detail::_Adaptor<_UniformRandomNumberGenerator, double>
+	  __aurng(__urng);
+
+	const double __p = __aurng();
+	if (__param._M_cp.empty())
+	  return __p;
+
+	auto __pos = std::lower_bound(__param._M_cp.begin(),
+				      __param._M_cp.end(), __p);
+	const size_t __i = __pos - __param._M_cp.begin();
+
+	const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0;
+
+	const double __a = 0.5 * __param._M_m[__i];
+	const double __b = __param._M_den[__i];
+	const double __cm = __p - __pref;
+
+	_RealType __x = __param._M_int[__i];
+	if (__a == 0)
+	  __x += __cm / __b;
+	else
+	  {
+	    const double __d = __b * __b + 4.0 * __a * __cm;
+	    __x += 0.5 * (std::sqrt(__d) - __b) / __a;
+          }
+
+        return __x;
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const piecewise_linear_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+      std::vector<_RealType> __int = __x.intervals();
+      __os << __int.size() - 1;
+
+      for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
+	__os << __space << *__xit;
+
+      std::vector<double> __den = __x.densities();
+      for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
+	__os << __space << *__dit;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       piecewise_linear_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      size_t __n;
+      __is >> __n;
+
+      std::vector<_RealType> __int_vec;
+      __int_vec.reserve(__n + 1);
+      for (size_t __i = 0; __i <= __n; ++__i)
+	{
+	  _RealType __int;
+	  __is >> __int;
+	  __int_vec.push_back(__int);
+	}
+
+      std::vector<double> __den_vec;
+      __den_vec.reserve(__n + 1);
+      for (size_t __i = 0; __i <= __n; ++__i)
+	{
+	  double __den;
+	  __is >> __den;
+	  __den_vec.push_back(__den);
+	}
+
+      __x.param(typename piecewise_linear_distribution<_RealType>::
+	  param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    seed_seq::seed_seq(std::initializer_list<_IntType> __il)
+    {
+      for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter)
+	_M_v.push_back(__detail::__mod<result_type,
+		       __detail::_Shift<result_type, 32>::__value>(*__iter));
+    }
+
+  template<typename _InputIterator>
+    seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end)
+    {
+      for (_InputIterator __iter = __begin; __iter != __end; ++__iter)
+	_M_v.push_back(__detail::__mod<result_type,
+		       __detail::_Shift<result_type, 32>::__value>(*__iter));
+    }
+
+  template<typename _RandomAccessIterator>
+    void
+    seed_seq::generate(_RandomAccessIterator __begin,
+		       _RandomAccessIterator __end)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+        _Type;
+
+      if (__begin == __end)
+	return;
+
+      std::fill(__begin, __end, _Type(0x8b8b8b8bu));
+
+      const size_t __n = __end - __begin;
+      const size_t __s = _M_v.size();
+      const size_t __t = (__n >= 623) ? 11
+		       : (__n >=  68) ? 7
+		       : (__n >=  39) ? 5
+		       : (__n >=   7) ? 3
+		       : (__n - 1) / 2;
+      const size_t __p = (__n - __t) / 2;
+      const size_t __q = __p + __t;
+      const size_t __m = std::max(__s + 1, __n);
+
+      for (size_t __k = 0; __k < __m; ++__k)
+	{
+	  _Type __arg = (__begin[__k % __n]
+			 ^ __begin[(__k + __p) % __n]
+			 ^ __begin[(__k - 1) % __n]);
+	  _Type __r1 = __arg ^ (__arg << 27);
+	  __r1 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
+	                         1664525u, 0u>(__r1);
+	  _Type __r2 = __r1;
+	  if (__k == 0)
+	    __r2 += __s;
+	  else if (__k <= __s)
+	    __r2 += __k % __n + _M_v[__k - 1];
+	  else
+	    __r2 += __k % __n;
+	  __r2 = __detail::__mod<_Type,
+	           __detail::_Shift<_Type, 32>::__value>(__r2);
+	  __begin[(__k + __p) % __n] += __r1;
+	  __begin[(__k + __q) % __n] += __r2;
+	  __begin[__k % __n] = __r2;
+	}
+
+      for (size_t __k = __m; __k < __m + __n; ++__k)
+	{
+	  _Type __arg = (__begin[__k % __n]
+			 + __begin[(__k + __p) % __n]
+			 + __begin[(__k - 1) % __n]);
+	  _Type __r3 = __arg ^ (__arg << 27);
+	  __r3 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
+	                         1566083941u, 0u>(__r3);
+	  _Type __r4 = __r3 - __k % __n;
+	  __r4 = __detail::__mod<_Type,
+	           __detail::_Shift<_Type, 32>::__value>(__r4);
+	  __begin[(__k + __p) % __n] ^= __r4;
+	  __begin[(__k + __q) % __n] ^= __r3;
+	  __begin[__k % __n] = __r4;
+	}
+    }
+
+  template<typename _RealType, size_t __bits,
+	   typename _UniformRandomNumberGenerator>
+    _RealType
+    generate_canonical(_UniformRandomNumberGenerator& __urng)
+    {
+      const size_t __b
+	= std::min(static_cast<size_t>(std::numeric_limits<_RealType>::digits),
+                   __bits);
+      const long double __r = static_cast<long double>(__urng.max())
+			    - static_cast<long double>(__urng.min()) + 1.0L;
+      const size_t __log2r = std::log(__r) / std::log(2.0L);
+      size_t __k = std::max<size_t>(1UL, (__b + __log2r - 1UL) / __log2r);
+      _RealType __sum = _RealType(0);
+      _RealType __tmp = _RealType(1);
+      for (; __k != 0; --__k)
+	{
+	  __sum += _RealType(__urng() - __urng.min()) * __tmp;
+	  __tmp *= __r;
+	}
+      return __sum / __tmp;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/range_access.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/range_access.h
new file mode 100644
index 000000000..0463791b7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/range_access.h
@@ -0,0 +1,105 @@
+// <range_access.h> -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/range_access.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ */
+
+#ifndef _GLIBCXX_RANGE_ACCESS_H
+#define _GLIBCXX_RANGE_ACCESS_H 1
+
+#pragma GCC system_header
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Return an iterator pointing to the first element of
+   *          the container.
+   *  @param  cont  Container.
+   */
+  template<class _Container>
+    inline auto
+    begin(_Container& __cont) -> decltype(__cont.begin())
+    { return __cont.begin(); }
+
+  /**
+   *  @brief  Return an iterator pointing to the first element of
+   *          the const container.
+   *  @param  cont  Container.
+   */
+  template<class _Container>
+    inline auto
+    begin(const _Container& __cont) -> decltype(__cont.begin())
+    { return __cont.begin(); }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element of
+   *          the container.
+   *  @param  cont  Container.
+   */
+  template<class _Container>
+    inline auto
+    end(_Container& __cont) -> decltype(__cont.end())
+    { return __cont.end(); }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element of
+   *          the const container.
+   *  @param  cont  Container.
+   */
+  template<class _Container>
+    inline auto
+    end(const _Container& __cont) -> decltype(__cont.end())
+    { return __cont.end(); }
+
+  /**
+   *  @brief  Return an iterator pointing to the first element of the array.
+   *  @param  arr  Array.
+   */
+  template<class _Tp, size_t _Nm>
+    inline _Tp*
+    begin(_Tp (&__arr)[_Nm])
+    { return __arr; }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element
+   *          of the array.
+   *  @param  arr  Array.
+   */
+  template<class _Tp, size_t _Nm>
+    inline _Tp*
+    end(_Tp (&__arr)[_Nm])
+    { return __arr + _Nm; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_RANGE_ACCESS_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex.h
new file mode 100644
index 000000000..f29ee9139
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex.h
@@ -0,0 +1,2517 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+/**
+ * @defgroup regex Regular Expressions
+ * A facility for performing regular expression pattern matching.
+ */
+ //@{
+
+  // [7.7] Class regex_traits
+  /**
+   * @brief Describes aspects of a regular expression.
+   *
+   * A regular expression traits class that satisfies the requirements of 
+   * section [28.7].
+   *
+   * The class %regex is parameterized around a set of related types and
+   * functions used to complete the definition of its semantics.  This class
+   * satisfies the requirements of such a traits class.
+   */
+  template<typename _Ch_type>
+    struct regex_traits
+    {
+    public:
+      typedef _Ch_type                     char_type;
+      typedef std::basic_string<char_type> string_type;
+      typedef std::locale                  locale_type;
+      typedef std::ctype_base::mask        char_class_type;
+
+    public:
+      /**
+       * @brief Constructs a default traits object.
+       */
+      regex_traits()
+      { }
+      
+      /**
+       * @brief Gives the length of a C-style string starting at @p __p.
+       *
+       * @param __p a pointer to the start of a character sequence.
+       *
+       * @returns the number of characters between @p *__p and the first
+       * default-initialized value of type @p char_type.  In other words, uses
+       * the C-string algorithm for determining the length of a sequence of
+       * characters.
+       */
+      static std::size_t
+      length(const char_type* __p)
+      { return string_type::traits_type::length(__p); }
+
+      /**
+       * @brief Performs the identity translation.
+       *
+       * @param c A character to the locale-specific character set.
+       *
+       * @returns c.
+       */
+      char_type
+      translate(char_type __c) const
+      { return __c; }
+      
+      /**
+       * @brief Translates a character into a case-insensitive equivalent.
+       *
+       * @param c A character to the locale-specific character set.
+       *
+       * @returns the locale-specific lower-case equivalent of c.
+       * @throws std::bad_cast if the imbued locale does not support the ctype
+       *         facet.
+       */
+      char_type
+      translate_nocase(char_type __c) const
+      {
+	using std::ctype;
+	using std::use_facet;
+	return use_facet<ctype<char_type> >(_M_locale).tolower(__c);
+      }
+      
+      /**
+       * @brief Gets a sort key for a character sequence.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       *
+       * Returns a sort key for the character sequence designated by the
+       * iterator range [F1, F2) such that if the character sequence [G1, G2)
+       * sorts before the character sequence [H1, H2) then
+       * v.transform(G1, G2) < v.transform(H1, H2).
+       *
+       * What this really does is provide a more efficient way to compare a
+       * string to multiple other strings in locales with fancy collation
+       * rules and equivalence classes.
+       *
+       * @returns a locale-specific sort key equivalent to the input range.
+       *
+       * @throws std::bad_cast if the current locale does not have a collate
+       *         facet.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        transform(_Fwd_iter __first, _Fwd_iter __last) const
+        {
+	  using std::collate;
+	  using std::use_facet;
+	  const collate<_Ch_type>& __c(use_facet<
+				       collate<_Ch_type> >(_M_locale));
+	  string_type __s(__first, __last);
+	  return __c.transform(__s.data(), __s.data() + __s.size());
+	}
+
+      /**
+       * @brief Gets a sort key for a character sequence, independant of case.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       *
+       * Effects: if typeid(use_facet<collate<_Ch_type> >) ==
+       * typeid(collate_byname<_Ch_type>) and the form of the sort key
+       * returned by collate_byname<_Ch_type>::transform(first, last) is known
+       * and can be converted into a primary sort key then returns that key,
+       * otherwise returns an empty string.
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        transform_primary(_Fwd_iter __first, _Fwd_iter __last) const
+        { return string_type(); }
+
+      /**
+       * @brief Gets a collation element by name.
+       *
+       * @param first beginning of the collation element name.
+       * @param last  one-past-the-end of the collation element name.
+       * 
+       * @returns a sequence of one or more characters that represents the
+       * collating element consisting of the character sequence designated by
+       * the iterator range [first, last). Returns an empty string if the
+       * character sequence is not a valid collating element.
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const
+        { return string_type(); }
+
+      /**
+       * @brief Maps one or more characters to a named character
+       *        classification.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       * @param icase ignores the case of the classification name.
+       *
+       * @returns an unspecified value that represents the character
+       * classification named by the character sequence designated by the
+       * iterator range [first, last). If @p icase is true, the returned mask
+       * identifies the classification regardless of the case of the characters
+       * to be matched (for example, [[:lower:]] is the same as [[:alpha:]]),
+       * otherwise a case-dependant classification is returned.  The value
+       * returned shall be independent of the case of the characters in the
+       * character sequence. If the name is not recognized then returns a value
+       * that compares equal to 0.
+       *
+       * At least the following names (or their wide-character equivalent) are
+       * supported.
+       * - d
+       * - w
+       * - s
+       * - alnum
+       * - alpha
+       * - blank
+       * - cntrl
+       * - digit
+       * - graph
+       * - lower
+       * - print
+       * - punct
+       * - space
+       * - upper
+       * - xdigit
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        char_class_type
+        lookup_classname(_Fwd_iter __first, _Fwd_iter __last,
+	                 bool __icase = false) const
+	{ return 0; }
+
+      /**
+       * @brief Determines if @p c is a member of an identified class.
+       *
+       * @param c a character.
+       * @param f a class type (as returned from lookup_classname).
+       *
+       * @returns true if the character @p c is a member of the classification
+       * represented by @p f, false otherwise.
+       *
+       * @throws std::bad_cast if the current locale does not have a ctype
+       *         facet.
+       */
+      bool
+      isctype(_Ch_type __c, char_class_type __f) const;
+
+      /**
+       * @brief Converts a digit to an int.
+       *
+       * @param ch    a character representing a digit.
+       * @param radix the radix if the numeric conversion (limited to 8, 10,
+       *              or 16).
+       * 
+       * @returns the value represented by the digit ch in base radix if the
+       * character ch is a valid digit in base radix; otherwise returns -1.
+       */
+      int
+      value(_Ch_type __ch, int __radix) const;
+      
+      /**
+       * @brief Imbues the regex_traits object with a copy of a new locale.
+       *
+       * @param loc A locale.
+       *
+       * @returns a copy of the previous locale in use by the regex_traits
+       *          object.
+       *
+       * @note Calling imbue with a different locale than the one currently in
+       *       use invalidates all cached data held by *this.
+       */
+      locale_type
+      imbue(locale_type __loc)
+      {
+	std::swap(_M_locale, __loc);
+	return __loc;
+      }
+      
+      /**
+       * @brief Gets a copy of the current locale in use by the regex_traits
+       * object.
+       */
+      locale_type
+      getloc() const
+      { return _M_locale; }
+      
+    protected:
+      locale_type _M_locale;
+    };
+
+  template<typename _Ch_type>
+    bool
+    regex_traits<_Ch_type>::
+    isctype(_Ch_type __c, char_class_type __f) const
+    {
+      using std::ctype;
+      using std::use_facet;
+      const ctype<_Ch_type>& __ctype(use_facet<
+				     ctype<_Ch_type> >(_M_locale));
+      
+      if (__ctype.is(__f, __c))
+	return true;
+      
+      // special case of underscore in [[:w:]]
+      if (__c == __ctype.widen('_'))
+	{
+	  const char __wb[] = "w";
+	  char_class_type __wt = this->lookup_classname(__wb,
+							__wb + sizeof(__wb));
+	  if (__f | __wt)
+	    return true;
+	}
+    
+      // special case of [[:space:]] in [[:blank:]]
+      if (__ctype.is(std::ctype_base::space, __c))
+	{
+	  const char __bb[] = "blank";
+	  char_class_type __bt = this->lookup_classname(__bb,
+							__bb + sizeof(__bb));
+	  if (__f | __bt)
+	    return true;
+	}
+      
+      return false;
+    }
+
+  template<typename _Ch_type>
+    int
+    regex_traits<_Ch_type>::
+    value(_Ch_type __ch, int __radix) const
+    {
+      std::basic_istringstream<_Ch_type> __is(string_type(1, __ch));
+      int __v;
+      if (__radix == 8)
+	__is >> std::oct;
+      else if (__radix == 16)
+	__is >> std::hex;
+      __is >> __v;
+      return __is.fail() ? -1 : __v;
+    }
+
+  // [7.8] Class basic_regex
+  /**
+   * Objects of specializations of this class represent regular expressions
+   * constructed from sequences of character type @p _Ch_type.
+   *
+   * Storage for the regular expression is allocated and deallocated as
+   * necessary by the member functions of this class.
+   */
+  template<typename _Ch_type, typename _Rx_traits = regex_traits<_Ch_type> >
+    class basic_regex
+    {
+    public:
+      // types:
+      typedef _Ch_type                            value_type;
+      typedef _Rx_traits                          traits_type;
+      typedef typename traits_type::string_type   string_type;
+      typedef regex_constants::syntax_option_type flag_type;
+      typedef typename traits_type::locale_type   locale_type;
+
+      /**
+       * @name Constants
+       * std [28.8.1](1)
+       */
+      //@{
+      static constexpr regex_constants::syntax_option_type icase
+        = regex_constants::icase;
+      static constexpr regex_constants::syntax_option_type nosubs
+        = regex_constants::nosubs;
+      static constexpr regex_constants::syntax_option_type optimize
+        = regex_constants::optimize;
+      static constexpr regex_constants::syntax_option_type collate
+        = regex_constants::collate;
+      static constexpr regex_constants::syntax_option_type ECMAScript
+        = regex_constants::ECMAScript;
+      static constexpr regex_constants::syntax_option_type basic
+        = regex_constants::basic;
+      static constexpr regex_constants::syntax_option_type extended
+        = regex_constants::extended;
+      static constexpr regex_constants::syntax_option_type awk
+        = regex_constants::awk;
+      static constexpr regex_constants::syntax_option_type grep
+        = regex_constants::grep;
+      static constexpr regex_constants::syntax_option_type egrep
+        = regex_constants::egrep;
+      //@}
+
+      // [7.8.2] construct/copy/destroy
+      /**
+       * Constructs a basic regular expression that does not match any
+       * character sequence.
+       */
+      basic_regex()
+      : _M_flags(regex_constants::ECMAScript),
+        _M_automaton(__regex::__compile<const _Ch_type*, _Rx_traits>(0, 0,
+                     _M_traits, _M_flags))
+      { }
+
+      /**
+       * @brief Constructs a basic regular expression from the sequence
+       * [p, p + char_traits<_Ch_type>::length(p)) interpreted according to the
+       * flags in @p f.
+       *
+       * @param p A pointer to the start of a C-style null-terminated string
+       *          containing a regular expression.
+       * @param f Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p p is not a valid regular expression.
+       */
+      explicit
+      basic_regex(const _Ch_type* __p,
+		  flag_type __f = regex_constants::ECMAScript)
+      : _M_flags(__f),
+        _M_automaton(__regex::__compile(__p, __p + _Rx_traits::length(__p),
+        				_M_traits, _M_flags))
+      { }
+
+      /**
+       * @brief Constructs a basic regular expression from the sequence
+       * [p, p + len) interpreted according to the flags in @p f.
+       *
+       * @param p   A pointer to the start of a string containing a regular
+       *            expression.
+       * @param len The length of the string containing the regular expression.
+       * @param f   Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p p is not a valid regular expression.
+       */
+      basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f)
+      : _M_flags(__f),
+        _M_automaton(__regex::__compile(__p, __p + __len, _M_traits, _M_flags))
+      { }
+
+      /**
+       * @brief Copy-constructs a basic regular expression.
+       *
+       * @param rhs A @p regex object.
+       */
+      basic_regex(const basic_regex& __rhs)
+      : _M_flags(__rhs._M_flags), _M_traits(__rhs._M_traits),
+        _M_automaton(__rhs._M_automaton)
+      { }
+
+      /**
+       * @brief Move-constructs a basic regular expression.
+       *
+       * @param rhs A @p regex object.
+       */
+      basic_regex(const basic_regex&& __rhs) noexcept
+      : _M_flags(__rhs._M_flags), _M_traits(__rhs._M_traits),
+        _M_automaton(std::move(__rhs._M_automaton))
+      { }
+
+      /**
+       * @brief Constructs a basic regular expression from the string
+       * @p s interpreted according to the flags in @p f.
+       *
+       * @param s A string containing a regular expression.
+       * @param f Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p s is not a valid regular expression.
+       */
+      template<typename _Ch_traits, typename _Ch_alloc>
+        explicit
+        basic_regex(const std::basic_string<_Ch_type, _Ch_traits,
+		    _Ch_alloc>& __s,
+		    flag_type __f = regex_constants::ECMAScript)
+	: _M_flags(__f),
+	  _M_automaton(__regex::__compile(__s.begin(), __s.end(),
+	  				  _M_traits, _M_flags))
+        { }
+
+      /**
+       * @brief Constructs a basic regular expression from the range
+       * [first, last) interpreted according to the flags in @p f.
+       *
+       * @param first The start of a range containing a valid regular
+       *              expression.
+       * @param last  The end of a range containing a valid regular
+       *              expression.
+       * @param f     The format flags of the regular expression.
+       *
+       * @throws regex_error if @p [first, last) is not a valid regular
+       *         expression.
+       */
+      template<typename _InputIterator>
+        basic_regex(_InputIterator __first, _InputIterator __last, 
+		    flag_type __f = regex_constants::ECMAScript)
+	: _M_flags(__f),
+	  _M_automaton(__regex::__compile(__first, __last, _M_traits, _M_flags))
+        { }
+
+      /**
+       * @brief Constructs a basic regular expression from an initializer list.
+       *
+       * @param l  The initializer list.
+       * @param f  The format flags of the regular expression.
+       *
+       * @throws regex_error if @p l is not a valid regular expression.
+       */
+      basic_regex(initializer_list<_Ch_type> __l,
+		  flag_type __f = regex_constants::ECMAScript)
+      : _M_flags(__f),
+        _M_automaton(__regex::__compile(__l.begin(), __l.end(),
+        				_M_traits, _M_flags))
+      { }
+
+      /**
+       * @brief Destroys a basic regular expression.
+       */
+      ~basic_regex()
+      { }
+      
+      /**
+       * @brief Assigns one regular expression to another.
+       */
+      basic_regex&
+      operator=(const basic_regex& __rhs)
+      { return this->assign(__rhs); }
+
+      /**
+       * @brief Move-assigns one regular expression to another.
+       */
+      basic_regex&
+      operator=(basic_regex&& __rhs) noexcept
+      { return this->assign(std::move(__rhs)); }
+
+      /**
+       * @brief Replaces a regular expression with a new one constructed from
+       * a C-style null-terminated string.
+       *
+       * @param A pointer to the start of a null-terminated C-style string
+       *        containing a regular expression.
+       */
+      basic_regex&
+      operator=(const _Ch_type* __p)
+      { return this->assign(__p, flags()); }
+      
+      /**
+       * @brief Replaces a regular expression with a new one constructed from
+       * a string.
+       *
+       * @param A pointer to a string containing a regular expression.
+       */
+      template<typename _Ch_typeraits, typename _Allocator>
+        basic_regex&
+        operator=(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s)
+        { return this->assign(__s, flags()); }
+
+      // [7.8.3] assign
+      /**
+       * @brief the real assignment operator.
+       *
+       * @param rhs Another regular expression object.
+       */
+      basic_regex&
+      assign(const basic_regex& __rhs)
+      {
+	basic_regex __tmp(__rhs);
+	this->swap(__tmp);
+	return *this;
+      }
+      
+      /**
+       * @brief The move-assignment operator.
+       *
+       * @param rhs Another regular expression object.
+       */
+      basic_regex&
+      assign(basic_regex&& __rhs) noexcept
+      {
+	basic_regex __tmp(std::move(__rhs));
+	this->swap(__tmp);
+	return *this;
+      }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object from a
+       * C-style null-terminated string containing a regular expression
+       * pattern.
+       *
+       * @param p     A pointer to a C-style null-terminated string containing
+       *              a regular expression pattern.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      basic_regex&
+      assign(const _Ch_type* __p,
+	     flag_type __flags = regex_constants::ECMAScript)
+      { return this->assign(string_type(__p), __flags); }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object from a
+       * C-style string containing a regular expression pattern.
+       *
+       * @param p     A pointer to a C-style string containing a
+       *              regular expression pattern.
+       * @param len   The length of the regular expression pattern string.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      basic_regex&
+      assign(const _Ch_type* __p, std::size_t __len, flag_type __flags)
+      { return this->assign(string_type(__p, __len), __flags); }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object from a 
+       * string containing a regular expression pattern.
+       *
+       * @param s     A string containing a regular expression pattern.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      template<typename _Ch_typeraits, typename _Allocator>
+        basic_regex&
+        assign(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s,
+	       flag_type __f = regex_constants::ECMAScript)
+        { 
+	  basic_regex __tmp(__s, __f);
+	  this->swap(__tmp);
+	  return *this;
+	}
+
+      /**
+       * @brief Assigns a new regular expression to a regex object.
+       *
+       * @param first The start of a range containing a valid regular
+       *              expression.
+       * @param last  The end of a range containing a valid regular
+       *              expression.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * the object remains unchanged.
+       */
+      template<typename _InputIterator>
+        basic_regex&
+        assign(_InputIterator __first, _InputIterator __last,
+	       flag_type __flags = regex_constants::ECMAScript)
+        { return this->assign(string_type(__first, __last), __flags); }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object.
+       *
+       * @param l     An initializer list representing a regular expression.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if @p l does not contain a valid regular
+       * expression pattern interpreted according to @p flags.  If regex_error
+       * is thrown, the object remains unchanged.
+       */
+      basic_regex&
+      assign(initializer_list<_Ch_type> __l,
+	     flag_type __f = regex_constants::ECMAScript)
+      { return this->assign(__l.begin(), __l.end(), __f); }
+
+      // [7.8.4] const operations
+      /**
+       * @brief Gets the number of marked subexpressions within the regular
+       * expression.
+       */
+      unsigned int
+      mark_count() const
+      { return _M_automaton->_M_sub_count() - 1; }
+      
+      /**
+       * @brief Gets the flags used to construct the regular expression
+       * or in the last call to assign().
+       */
+      flag_type
+      flags() const
+      { return _M_flags; }
+      
+      // [7.8.5] locale
+      /**
+       * @brief Imbues the regular expression object with the given locale.
+       *
+       * @param loc A locale.
+       */
+      locale_type
+      imbue(locale_type __loc)
+      { return _M_traits.imbue(__loc); }
+      
+      /**
+       * @brief Gets the locale currently imbued in the regular expression
+       *        object.
+       */
+      locale_type
+      getloc() const
+      { return _M_traits.getloc(); }
+      
+      // [7.8.6] swap
+      /**
+       * @brief Swaps the contents of two regular expression objects.
+       *
+       * @param rhs Another regular expression object.
+       */
+      void
+      swap(basic_regex& __rhs)
+      {
+	std::swap(_M_flags,     __rhs._M_flags);
+	std::swap(_M_traits,    __rhs._M_traits);
+	std::swap(_M_automaton, __rhs._M_automaton);
+      }
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      _M_dot(std::ostream& __ostr)
+      { _M_automaton->_M_dot(__ostr); }
+#endif
+      
+      const __regex::_AutomatonPtr&
+      _M_get_automaton() const
+      { return _M_automaton; }
+
+    protected:
+      flag_type              _M_flags;
+      _Rx_traits             _M_traits;
+      __regex::_AutomatonPtr _M_automaton;
+    };
+  
+  /** @brief Standard regular expressions. */
+  typedef basic_regex<char>    regex;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Standard wide-character regular expressions. */
+  typedef basic_regex<wchar_t> wregex;
+#endif
+
+
+  // [7.8.6] basic_regex swap
+  /**
+   * @brief Swaps the contents of two regular expression objects.
+   * @param lhs First regular expression.
+   * @param rhs Second regular expression.
+   */
+  template<typename _Ch_type, typename _Rx_traits>
+    inline void
+    swap(basic_regex<_Ch_type, _Rx_traits>& __lhs,
+	 basic_regex<_Ch_type, _Rx_traits>& __rhs)
+    { __lhs.swap(__rhs); }
+
+
+  // [7.9] Class template sub_match
+  /**
+   * A sequence of characters matched by a particular marked sub-expression.
+   *
+   * An object of this class is essentially a pair of iterators marking a
+   * matched subexpression within a regular expression pattern match. Such
+   * objects can be converted to and compared with std::basic_string objects
+   * of a similar base character type as the pattern matched by the regular
+   * expression.
+   *
+   * The iterators that make up the pair are the usual half-open interval
+   * referencing the actual original pattern matched.
+   */
+  template<typename _BiIter>
+    class sub_match : public std::pair<_BiIter, _BiIter>
+    {
+    public:
+      typedef typename iterator_traits<_BiIter>::value_type      value_type;
+      typedef typename iterator_traits<_BiIter>::difference_type
+                                                            difference_type;
+      typedef _BiIter                                              iterator;
+      typedef std::basic_string<value_type>                     string_type;
+
+    public:
+      bool matched;
+      
+      constexpr sub_match() : matched() { }
+
+      /**
+       * Gets the length of the matching sequence.
+       */
+      difference_type
+      length() const
+      { return this->matched ? std::distance(this->first, this->second) : 0; }
+
+      /**
+       * @brief Gets the matching sequence as a string.
+       *
+       * @returns the matching sequence as a string.
+       *
+       * This is the implicit conversion operator.  It is identical to the
+       * str() member function except that it will want to pop up in
+       * unexpected places and cause a great deal of confusion and cursing
+       * from the unwary.
+       */
+      operator string_type() const
+      {
+	return this->matched
+	  ? string_type(this->first, this->second)
+	  : string_type();
+      }
+      
+      /**
+       * @brief Gets the matching sequence as a string.
+       *
+       * @returns the matching sequence as a string.
+       */
+      string_type
+      str() const
+      {
+	return this->matched
+	  ? string_type(this->first, this->second)
+	  : string_type();
+      }
+      
+      /**
+       * @brief Compares this and another matched sequence.
+       *
+       * @param s Another matched sequence to compare to this one.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const sub_match& __s) const
+      { return this->str().compare(__s.str()); }
+
+      /**
+       * @brief Compares this sub_match to a string.
+       *
+       * @param s A string to compare to this sub_match.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const string_type& __s) const
+      { return this->str().compare(__s); }
+      
+      /**
+       * @brief Compares this sub_match to a C-style string.
+       *
+       * @param s A C-style string to compare to this sub_match.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const value_type* __s) const
+      { return this->str().compare(__s); }
+    };
+  
+  
+  /** @brief Standard regex submatch over a C-style null-terminated string. */
+  typedef sub_match<const char*>             csub_match;
+  /** @brief Standard regex submatch over a standard string. */
+  typedef sub_match<string::const_iterator>  ssub_match;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Regex submatch over a C-style null-terminated wide string. */
+  typedef sub_match<const wchar_t*>          wcsub_match;
+  /** @brief Regex submatch over a standard wide string. */
+  typedef sub_match<wstring::const_iterator> wssub_match;
+#endif
+
+  // [7.9.2] sub_match non-member operators
+  
+  /**
+   * @brief Tests the equivalence of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator==(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator!=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) != 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator<(const sub_match<_BiIter>& __lhs,
+	      const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator<=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator>=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator>(const sub_match<_BiIter>& __lhs,
+	      const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   * @brief Tests the equivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator==(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __rhs.compare(__lhs.c_str()) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator!=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator<(const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+     { return __rhs.compare(__lhs.c_str()) > 0; }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator>(const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type, 
+	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator>=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator<=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.compare(__rhs.c_str()) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.compare(__rhs.c_str()) < 0; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Tests the equivalence of a C string and a regular expression
+   *        submatch.
+   * @param lhs A C string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __rhs.compare(__lhs) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of an iterator value and a regular
+   *        expression submatch.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __rhs.compare(__lhs) > 0; }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A pointer to a string?
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A pointer to a string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Tests the equivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    {
+      return __rhs.compare(typename sub_match<_Bi_iter>::string_type(1, __lhs))
+             == 0;
+    }
+
+  /**
+   * @brief Tests the inequivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    {
+      return __rhs.compare(typename sub_match<_Bi_iter>::string_type(1, __lhs))
+             > 0;
+    }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    {
+      return __lhs.compare(typename sub_match<_Bi_iter>::string_type(1, __rhs))
+             == 0;
+    }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    {
+      return __lhs.compare(typename sub_match<_Bi_iter>::string_type(1, __rhs))
+             < 0;
+    }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __rhs < __lhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return !(__lhs < __rhs); }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return !(__rhs < __lhs); }
+
+  /**
+   * @brief Inserts a matched string into an output stream.
+   *
+   * @param os The output stream.
+   * @param m  A submatch string.
+   *
+   * @returns the output stream with the submatch string inserted.
+   */
+  template<typename _Ch_type, typename _Ch_traits, typename _Bi_iter>
+    inline
+    basic_ostream<_Ch_type, _Ch_traits>&
+    operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os,
+	       const sub_match<_Bi_iter>& __m)
+    { return __os << __m.str(); }
+
+  // [7.10] Class template match_results
+
+  /*
+   * Special sub_match object representing an unmatched sub-expression.
+   */
+  template<typename _Bi_iter>
+    inline const sub_match<_Bi_iter>&
+    __unmatched_sub()
+    {
+      static const sub_match<_Bi_iter> __unmatched = sub_match<_Bi_iter>();
+      return __unmatched;
+    }
+
+  /**
+   * @brief The results of a match or search operation.
+   *
+   * A collection of character sequences representing the result of a regular
+   * expression match.  Storage for the collection is allocated and freed as
+   * necessary by the member functions of class template match_results.
+   *
+   * This class satisfies the Sequence requirements, with the exception that
+   * only the operations defined for a const-qualified Sequence are supported.
+   *
+   * The sub_match object stored at index 0 represents sub-expression 0, i.e.
+   * the whole match. In this case the %sub_match member matched is always true.
+   * The sub_match object stored at index n denotes what matched the marked
+   * sub-expression n within the matched expression. If the sub-expression n
+   * participated in a regular expression match then the %sub_match member
+   * matched evaluates to true, and members first and second denote the range
+   * of characters [first, second) which formed that match. Otherwise matched
+   * is false, and members first and second point to the end of the sequence
+   * that was searched.
+   *
+   * @nosubgrouping
+   */
+  template<typename _Bi_iter,
+	   typename _Allocator = allocator<sub_match<_Bi_iter> > >
+    class match_results
+    : private std::vector<sub_match<_Bi_iter>, _Allocator>
+    {
+    private:
+      /*
+       * The vector base is empty if this does not represent a successful match.
+       * Otherwise it contains n+3 elements where n is the number of marked
+       * sub-expressions:
+       * [0] entire match
+       * [1] 1st marked subexpression
+       * ...
+       * [n] nth marked subexpression
+       * [n+1] prefix
+       * [n+2] suffix
+       */
+      typedef std::vector<sub_match<_Bi_iter>, _Allocator>    _Base_type;
+
+    public:
+      /**
+       * @name 10.? Public Types
+       */
+      //@{
+      typedef sub_match<_Bi_iter>                             value_type;
+      typedef const value_type&                               const_reference;
+      typedef const_reference                                 reference;
+      typedef typename _Base_type::const_iterator             const_iterator;
+      typedef const_iterator                                  iterator;
+      typedef typename std::iterator_traits<_Bi_iter>::difference_type
+                                                              difference_type;
+      /* TODO: needs allocator_traits */
+      typedef typename _Allocator::size_type                  size_type;
+      typedef _Allocator                                      allocator_type;
+      typedef typename std::iterator_traits<_Bi_iter>::value_type
+                                                              char_type;
+      typedef std::basic_string<char_type>                    string_type;
+      //@}
+  
+    public:
+      /**
+       * @name 28.10.1 Construction, Copying, and Destruction
+       */
+      //@{
+
+      /**
+       * @brief Constructs a default %match_results container.
+       * @post size() returns 0 and str() returns an empty string.
+       */
+      explicit
+      match_results(const _Allocator& __a = _Allocator())
+      : _Base_type(__a)
+      { }
+
+      /**
+       * @brief Copy constructs a %match_results.
+       */
+      match_results(const match_results& __rhs)
+      : _Base_type(__rhs)
+      { }
+
+      /**
+       * @brief Move constructs a %match_results.
+       */
+      match_results(match_results&& __rhs) noexcept
+      : _Base_type(std::move(__rhs))
+      { }
+
+      /**
+       * @brief Assigns rhs to *this.
+       */
+      match_results&
+      operator=(const match_results& __rhs)
+      {
+	match_results(__rhs).swap(*this);
+	return *this;
+      }
+
+      /**
+       * @brief Move-assigns rhs to *this.
+       */
+      match_results&
+      operator=(match_results&& __rhs)
+      {
+	match_results(std::move(__rhs)).swap(*this);
+	return *this;
+      }
+
+      /**
+       * @brief Destroys a %match_results object.
+       */
+      ~match_results()
+      { }
+      
+      //@}
+
+      // 28.10.2, state:
+      /**
+       * @brief Indicates if the %match_results is ready.
+       * @retval true   The object has a fully-established result state.
+       * @retval false  The object is not ready.
+       */
+      bool ready() const { return !_Base_type::empty(); }
+
+      /**
+       * @name 28.10.2 Size
+       */
+      //@{
+
+      /**
+       * @brief Gets the number of matches and submatches.
+       *
+       * The number of matches for a given regular expression will be either 0
+       * if there was no match or mark_count() + 1 if a match was successful.
+       * Some matches may be empty.
+       *
+       * @returns the number of matches found.
+       */
+      size_type
+      size() const
+      {
+      	size_type __size = _Base_type::size();
+      	return (__size && _Base_type::operator[](0).matched) ? __size - 2 : 0;
+      }
+      
+      size_type
+      max_size() const
+      { return _Base_type::max_size(); }
+
+      /**
+       * @brief Indicates if the %match_results contains no results.
+       * @retval true The %match_results object is empty.
+       * @retval false The %match_results object is not empty.
+       */
+      bool
+      empty() const
+      { return size() == 0; }
+      
+      //@}
+
+      /**
+       * @name 10.3 Element Access
+       */
+      //@{
+
+      /**
+       * @brief Gets the length of the indicated submatch.
+       * @param sub indicates the submatch.
+       * @pre   ready() == true
+       *
+       * This function returns the length of the indicated submatch, or the
+       * length of the entire match if @p sub is zero (the default).
+       */
+      difference_type
+      length(size_type __sub = 0) const
+      { return (*this)[__sub].length(); }
+
+      /**
+       * @brief Gets the offset of the beginning of the indicated submatch.
+       * @param sub indicates the submatch.
+       * @pre   ready() == true
+       *
+       * This function returns the offset from the beginning of the target
+       * sequence to the beginning of the submatch, unless the value of @p sub
+       * is zero (the default), in which case this function returns the offset
+       * from the beginning of the target sequence to the beginning of the
+       * match.
+       *
+       * Returns -1 if @p sub is out of range.
+       */
+      difference_type
+      position(size_type __sub = 0) const
+      {
+	return __sub < size() ? std::distance(this->prefix().first,
+					      (*this)[__sub].first) : -1;
+      }
+
+      /**
+       * @brief Gets the match or submatch converted to a string type.
+       * @param sub indicates the submatch.
+       * @pre   ready() == true
+       *
+       * This function gets the submatch (or match, if @p sub is zero) extracted
+       * from the target range and converted to the associated string type.
+       */
+      string_type
+      str(size_type __sub = 0) const
+      { return (*this)[__sub].str(); }
+      
+      /**
+       * @brief Gets a %sub_match reference for the match or submatch.
+       * @param sub indicates the submatch.
+       * @pre   ready() == true
+       *
+       * This function gets a reference to the indicated submatch, or the entire
+       * match if @p sub is zero.
+       *
+       * If @p sub >= size() then this function returns a %sub_match with a
+       * special value indicating no submatch.
+       */
+      const_reference
+      operator[](size_type __sub) const
+      { 
+      	_GLIBCXX_DEBUG_ASSERT( ready() );
+      	return __sub < size()
+	       ?  _Base_type::operator[](__sub)
+	       : __unmatched_sub<_Bi_iter>();
+      }
+
+      /**
+       * @brief Gets a %sub_match representing the match prefix.
+       * @pre   ready() == true
+       *
+       * This function gets a reference to a %sub_match object representing the
+       * part of the target range between the start of the target range and the
+       * start of the match.
+       */
+      const_reference
+      prefix() const
+      {
+      	_GLIBCXX_DEBUG_ASSERT( ready() );
+      	return !empty()
+      	       ? _Base_type::operator[](_Base_type::size() - 2)
+	       : __unmatched_sub<_Bi_iter>();
+      }
+
+      /**
+       * @brief Gets a %sub_match representing the match suffix.
+       * @pre   ready() == true
+       *
+       * This function gets a reference to a %sub_match object representing the
+       * part of the target range between the end of the match and the end of
+       * the target range.
+       */
+      const_reference
+      suffix() const
+      {
+	_GLIBCXX_DEBUG_ASSERT( ready() );
+	return !empty()
+	       ? _Base_type::operator[](_Base_type::size() - 1)
+	       : __unmatched_sub<_Bi_iter>();
+      }
+
+      /**
+       * @brief Gets an iterator to the start of the %sub_match collection.
+       */
+      const_iterator
+      begin() const
+      { return _Base_type::begin(); }
+      
+      /**
+       * @brief Gets an iterator to the start of the %sub_match collection.
+       */
+      const_iterator
+      cbegin() const
+      { return _Base_type::cbegin(); }
+
+      /**
+       * @brief Gets an iterator to one-past-the-end of the collection.
+       */
+      const_iterator
+      end() const
+      { return !empty() ? _Base_type::end() - 2 : _Base_type::end(); }
+      
+      /**
+       * @brief Gets an iterator to one-past-the-end of the collection.
+       */
+      const_iterator
+      cend() const
+      { return end(); }
+
+      //@}
+
+      /**
+       * @name 10.4 Formatting
+       *
+       * These functions perform formatted substitution of the matched
+       * character sequences into their target.  The format specifiers and
+       * escape sequences accepted by these functions are determined by
+       * their @p flags parameter as documented above.
+       */
+       //@{
+
+      /**
+       * @pre   ready() == true
+       * @todo Implement this function.
+       */
+      template<typename _Out_iter>
+        _Out_iter
+        format(_Out_iter __out, const char_type* __fmt_first,
+	       const char_type* __fmt_last,
+	       regex_constants::match_flag_type __flags
+	       = regex_constants::format_default) const
+        { return __out; }
+
+      /**
+       * @pre   ready() == true
+       */
+      template<typename _Out_iter, typename _St, typename _Sa>
+        _Out_iter
+        format(_Out_iter __out, const basic_string<char_type, _St, _Sa>& __fmt,
+	       regex_constants::match_flag_type __flags
+	       = regex_constants::format_default) const
+        {
+          return format(__out, __fmt.data(), __fmt.data() + __fmt.size(),
+                        __flags);
+        }
+
+      /**
+       * @pre   ready() == true
+       */
+      template<typename _Out_iter, typename _St, typename _Sa>
+        basic_string<char_type, _St, _Sa>
+        format(const basic_string<char_type, _St, _Sa>& __fmt,
+	       regex_constants::match_flag_type __flags
+	       = regex_constants::format_default) const
+        {
+          basic_string<char_type, _St, _Sa> __result;
+          format(std::back_inserter(__result), __fmt, __flags);
+          return __result;
+        }
+
+      /**
+       * @pre   ready() == true
+       */
+      string_type
+      format(const char_type* __fmt,
+	     regex_constants::match_flag_type __flags
+	     = regex_constants::format_default) const
+      {
+        string_type __result;
+        format(std::back_inserter(__result),
+               __fmt + char_traits<char_type>::length(__fmt),
+               __flags);
+        return __result;
+      }
+
+      //@} 
+
+      /**
+       * @name 10.5 Allocator
+       */
+      //@{ 
+
+      /**
+       * @brief Gets a copy of the allocator.
+       */
+      allocator_type
+      get_allocator() const
+      { return _Base_type::get_allocator(); }
+      
+      //@} 
+
+      /**
+       * @name 10.6 Swap
+       */
+       //@{ 
+
+      /**
+       * @brief Swaps the contents of two match_results.
+       */
+      void
+      swap(match_results& __that)
+      { _Base_type::swap(__that); }
+      //@} 
+      
+    private:
+      friend class __regex::_SpecializedResults<_Bi_iter, _Allocator>;
+    };
+  
+  typedef match_results<const char*>             cmatch;
+  typedef match_results<string::const_iterator>  smatch;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef match_results<const wchar_t*>          wcmatch;
+  typedef match_results<wstring::const_iterator> wsmatch;
+#endif
+
+  // match_results comparisons
+  /**
+   * @brief Compares two match_results for equality.
+   * @returns true if the two objects refer to the same match,
+   * false otherwise.
+   */
+  template<typename _Bi_iter, typename _Allocator>
+    inline bool
+    operator==(const match_results<_Bi_iter, _Allocator>& __m1,
+	       const match_results<_Bi_iter, _Allocator>& __m2)
+    {
+      if (__m1.ready() != __m2.ready())
+        return false;
+      if (!__m1.ready())  // both are not ready
+        return true;
+      if (__m1.empty() != __m2.empty())
+        return false;
+      if (__m1.empty())   // both are empty
+        return true;
+      return __m1.prefix() == __m2.prefix()
+        && __m1.size() == __m2.size()
+        && std::equal(__m1.begin(), __m1.end(), __m2.begin())
+        && __m1.suffix() == __m2.suffix();
+    }
+
+  /**
+   * @brief Compares two match_results for inequality.
+   * @returns true if the two objects do not refer to the same match,
+   * false otherwise.
+   */
+  template<typename _Bi_iter, class _Allocator>
+    inline bool
+    operator!=(const match_results<_Bi_iter, _Allocator>& __m1,
+	       const match_results<_Bi_iter, _Allocator>& __m2)
+    { return !(__m1 == __m2); }
+
+  // [7.10.6] match_results swap
+  /**
+   * @brief Swaps two match results.
+   * @param lhs A match result.
+   * @param rhs A match result.
+   *
+   * The contents of the two match_results objects are swapped.
+   */
+  template<typename _Bi_iter, typename _Allocator>
+    inline void
+    swap(match_results<_Bi_iter, _Allocator>& __lhs,
+	 match_results<_Bi_iter, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+  // [7.11.2] Function template regex_match
+  /**
+   * @name Matching, Searching, and Replacing
+   */
+  //@{
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and all of the character sequence [first, last).
+   *
+   * @param s     Start of the character sequence to match.
+   * @param e     One-past-the-end of the character sequence to match.
+   * @param m     The match results.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Bi_iter, typename _Allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    bool
+    regex_match(_Bi_iter                                 __s,
+                _Bi_iter                                 __e,
+                match_results<_Bi_iter, _Allocator>&     __m,
+                const basic_regex<_Ch_type, _Rx_traits>& __re,
+                regex_constants::match_flag_type         __flags
+                               = regex_constants::match_default)
+    {
+      __regex::_AutomatonPtr __a = __re._M_get_automaton();
+      __regex::_Automaton::_SizeT __sz = __a->_M_sub_count();
+      __regex::_SpecializedCursor<_Bi_iter> __cs(__s, __e);
+      __regex::_SpecializedResults<_Bi_iter, _Allocator> __r(__sz, __cs, __m);
+      __regex::_Grep_matcher __matcher(__cs, __r, __a, __flags);
+      return __m[0].matched;
+    }
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and all of the character sequence [first, last).
+   *
+   * @param first Beginning of the character sequence to match.
+   * @param last  One-past-the-end of the character sequence to match.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
+    bool
+    regex_match(_Bi_iter __first, _Bi_iter __last,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { 
+      match_results<_Bi_iter> __what;
+      return regex_match(__first, __last, __what, __re, __flags);
+    }
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and a C-style null-terminated string.
+   *
+   * @param s  The C-style null-terminated string to match.
+   * @param m  The match results.
+   * @param re The regular expression.
+   * @param f  Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, typename _Allocator, typename _Rx_traits>
+    inline bool
+    regex_match(const _Ch_type* __s,
+		match_results<const _Ch_type*, _Allocator>& __m,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __f
+		= regex_constants::match_default)
+    { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); }
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and a string.
+   *
+   * @param s     The string to match.
+   * @param m     The match results.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Ch_alloc,
+	   typename _Allocator, typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
+		match_results<typename basic_string<_Ch_type, 
+		_Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); }
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and a C-style null-terminated string.
+   *
+   * @param s  The C-style null-terminated string to match.
+   * @param re The regular expression.
+   * @param f  Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, class _Rx_traits>
+    inline bool
+    regex_match(const _Ch_type* __s,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __f
+		= regex_constants::match_default)
+    { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); }
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and a string.
+   *
+   * @param s     [IN] The string to match.
+   * @param re    [IN] The regular expression.
+   * @param flags [IN] Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Str_allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { return regex_match(__s.begin(), __s.end(), __re, __flags); }
+
+  // [7.11.3] Function template regex_search
+  /**
+   * Searches for a regular expression within a range.
+   * @param first [IN]  The start of the string to search.
+   * @param last  [IN]  One-past-the-end of the string to search.
+   * @param m     [OUT] The match results.
+   * @param re    [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   *
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Bi_iter, typename _Allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(_Bi_iter __first, _Bi_iter __last,
+		 match_results<_Bi_iter, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __re,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default)
+    { return false; }
+
+  /**
+   * Searches for a regular expression within a range.
+   * @param first [IN]  The start of the string to search.
+   * @param last  [IN]  One-past-the-end of the string to search.
+   * @param re    [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(_Bi_iter __first, _Bi_iter __last,
+		 const basic_regex<_Ch_type, _Rx_traits>& __re,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default)
+    {
+      match_results<_Bi_iter> __what;
+      return regex_search(__first, __last, __what, __re, __flags);
+    }
+
+  /**
+   * @brief Searches for a regular expression within a C-string.
+   * @param s [IN]  A C-string to search for the regex.
+   * @param m [OUT] The set of regex matches.
+   * @param e [IN]  The regex to search for in @p s.
+   * @param f [IN]  The search flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, class _Allocator, class _Rx_traits>
+    inline bool
+    regex_search(const _Ch_type* __s,
+		 match_results<const _Ch_type*, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); }
+
+  /**
+   * @brief Searches for a regular expression within a C-string.
+   * @param s [IN]  The C-string to search.
+   * @param e [IN]  The regular expression to search for.
+   * @param f [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(const _Ch_type* __s,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); }
+
+  /**
+   * @brief Searches for a regular expression within a string.
+   * @param s     [IN]  The string to search.
+   * @param e     [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _String_allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(const basic_string<_Ch_type, _Ch_traits,
+		 _String_allocator>& __s,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default)
+    { return regex_search(__s.begin(), __s.end(), __e, __flags); }
+
+  /**
+   * @brief Searches for a regular expression within a string.
+   * @param s [IN]  A C++ string to search for the regex.
+   * @param m [OUT] The set of regex matches.
+   * @param e [IN]  The regex to search for in @p s.
+   * @param f [IN]  The search flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Ch_alloc,
+	   typename _Allocator, typename _Ch_type,
+	   typename _Rx_traits>
+    inline bool
+    regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
+		 match_results<typename basic_string<_Ch_type,
+		 _Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s.begin(), __s.end(), __m, __e, __f); }
+
+  // std [28.11.4] Function template regex_replace
+  /**
+   * @doctodo
+   * @param out
+   * @param first
+   * @param last
+   * @param e
+   * @param fmt
+   * @param flags
+   *
+   * @returns out
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Out_iter, typename _Bi_iter,
+	   typename _Rx_traits, typename _Ch_type>
+    inline _Out_iter
+    regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last,
+		  const basic_regex<_Ch_type, _Rx_traits>& __e,
+		  const basic_string<_Ch_type>& __fmt,
+		  regex_constants::match_flag_type __flags
+		  = regex_constants::match_default)
+    { return __out; }
+
+  /**
+   * @doctodo
+   * @param s
+   * @param e
+   * @param fmt
+   * @param flags
+   *
+   * @returns a copy of string @p s with replacements.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Rx_traits, typename _Ch_type>
+    inline basic_string<_Ch_type>
+    regex_replace(const basic_string<_Ch_type>& __s,
+		  const basic_regex<_Ch_type, _Rx_traits>& __e,
+		  const basic_string<_Ch_type>& __fmt,
+		  regex_constants::match_flag_type __flags
+		  = regex_constants::match_default)
+    {
+      std::string __result;
+      regex_replace(std::back_inserter(__result),
+		    __s.begin(), __s.end(), __e, __fmt, __flags);
+      return __result;
+    }
+
+  //@}
+
+  // std [28.12] Class template regex_iterator
+  /**
+   * An iterator adaptor that will provide repeated calls of regex_search over 
+   * a range until no more matches remain.
+   */
+  template<typename _Bi_iter,
+	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
+	   typename _Rx_traits = regex_traits<_Ch_type> >
+    class regex_iterator
+    {
+    public:
+      typedef basic_regex<_Ch_type, _Rx_traits>  regex_type;
+      typedef match_results<_Bi_iter>            value_type;
+      typedef std::ptrdiff_t                     difference_type;
+      typedef const value_type*                  pointer;
+      typedef const value_type&                  reference;
+      typedef std::forward_iterator_tag          iterator_category;
+
+    public:
+      /**
+       * @brief Provides a singular iterator, useful for indicating
+       * one-past-the-end of a range.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator();
+      
+      /**
+       * Constructs a %regex_iterator...
+       * @param a  [IN] The start of a text range to search.
+       * @param b  [IN] One-past-the-end of the text range to search.
+       * @param re [IN] The regular expression to match.
+       * @param m  [IN] Policy flags for match rules.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
+		     regex_constants::match_flag_type __m
+		     = regex_constants::match_default);
+
+      /**
+       * Copy constructs a %regex_iterator.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator&
+      operator=(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      bool
+      operator==(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      bool
+      operator!=(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      const value_type&
+      operator*();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      const value_type*
+      operator->();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator&
+      operator++();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator
+      operator++(int);
+      
+    private:
+      // these members are shown for exposition only:
+      _Bi_iter                         begin;
+      _Bi_iter                         end;
+      const regex_type*                pregex;
+      regex_constants::match_flag_type flags;
+      match_results<_Bi_iter>          match;
+    };
+  
+  typedef regex_iterator<const char*>             cregex_iterator;
+  typedef regex_iterator<string::const_iterator>  sregex_iterator;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef regex_iterator<const wchar_t*>          wcregex_iterator;
+  typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
+#endif
+
+  // [7.12.2] Class template regex_token_iterator
+  /**
+   * Iterates over submatches in a range (or @a splits a text string).
+   *
+   * The purpose of this iterator is to enumerate all, or all specified,
+   * matches of a regular expression within a text range.  The dereferenced
+   * value of an iterator of this class is a std::sub_match object.
+   */
+  template<typename _Bi_iter,
+	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
+	   typename _Rx_traits = regex_traits<_Ch_type> >
+    class regex_token_iterator
+    {
+    public:
+      typedef basic_regex<_Ch_type, _Rx_traits> regex_type;
+      typedef sub_match<_Bi_iter>               value_type;
+      typedef std::ptrdiff_t                    difference_type;
+      typedef const value_type*                 pointer;
+      typedef const value_type&                 reference;
+      typedef std::forward_iterator_tag         iterator_category;
+      
+    public:
+      /**
+       * @brief Default constructs a %regex_token_iterator.
+       * @todo Implement this function.
+       * 
+       * A default-constructed %regex_token_iterator is a singular iterator
+       * that will compare equal to the one-past-the-end value for any
+       * iterator of the same type.
+       */
+      regex_token_iterator();
+      
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatch   [IN] Which submatch to return.  There are some
+       *                        special values for this parameter:
+       *                        - -1 each enumerated subexpression does NOT
+       *                          match the regular expression (aka field
+       *                          splitting)
+       *                        - 0 the entire string matching the
+       *                          subexpression is returned for each match
+       *                          within the text.
+       *                        - >0 enumerates only the indicated
+       *                          subexpression from a match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       *
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
+			   int __submatch = 0,
+			   regex_constants::match_flag_type __m
+			   = regex_constants::match_default);
+
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatches [IN] A list of subexpressions to return for each
+       *                        regular expression match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       *
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
+			   const regex_type& __re,
+			   const std::vector<int>& __submatches,
+			   regex_constants::match_flag_type __m
+			     = regex_constants::match_default);
+
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatches [IN] A list of subexpressions to return for each
+       *                        regular expression match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       
+       * @todo Implement this function.
+       * @doctodo
+       */
+      template<std::size_t _Nm>
+        regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
+			     const regex_type& __re,
+			     const int (&__submatches)[_Nm],
+			     regex_constants::match_flag_type __m
+			     = regex_constants::match_default);
+
+      /**
+       * @brief Copy constructs a %regex_token_iterator.
+       * @param rhs [IN] A %regex_token_iterator to copy.
+       * @todo Implement this function.
+       */
+      regex_token_iterator(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Assigns a %regex_token_iterator to another.
+       * @param rhs [IN] A %regex_token_iterator to copy.
+       * @todo Implement this function.
+       */
+      regex_token_iterator&
+      operator=(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Compares a %regex_token_iterator to another for equality.
+       * @todo Implement this function.
+       */
+      bool
+      operator==(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Compares a %regex_token_iterator to another for inequality.
+       * @todo Implement this function.
+       */
+      bool
+      operator!=(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Dereferences a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      const value_type&
+      operator*();
+      
+      /**
+       * @brief Selects a %regex_token_iterator member.
+       * @todo Implement this function.
+       */
+      const value_type*
+      operator->();
+      
+      /**
+       * @brief Increments a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      regex_token_iterator&
+      operator++();
+      
+      /**
+       * @brief Postincrements a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      regex_token_iterator
+      operator++(int);
+      
+    private: // data members for exposition only:
+      typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator;
+
+      position_iterator __position;
+      const value_type* __result;
+      value_type        __suffix;
+      std::size_t       __n;
+      std::vector<int>  __subs;
+    };
+
+  /** @brief Token iterator for C-style NULL-terminated strings. */
+  typedef regex_token_iterator<const char*>             cregex_token_iterator;
+  /** @brief Token iterator for standard strings. */
+  typedef regex_token_iterator<string::const_iterator>  sregex_token_iterator;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Token iterator for C-style NULL-terminated wide strings. */
+  typedef regex_token_iterator<const wchar_t*>          wcregex_token_iterator;
+  /** @brief Token iterator for standard wide-character strings. */
+  typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
+#endif
+  
+  //@} // group regex
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_compiler.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_compiler.h
new file mode 100644
index 000000000..025c4fa70
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_compiler.h
@@ -0,0 +1,1109 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_compiler.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  struct _Scanner_base
+  {
+    typedef unsigned int _StateT;
+
+    static constexpr _StateT _S_state_at_start    = 1 << 0;
+    static constexpr _StateT _S_state_in_brace    = 1 << 2;
+    static constexpr _StateT _S_state_in_bracket  = 1 << 3;
+
+    virtual ~_Scanner_base() { };
+  };
+
+  //
+  // @brief Scans an input range for regex tokens.
+  //
+  // The %_Scanner class interprets the regular expression pattern in the input
+  // range passed to its constructor as a sequence of parse tokens passed to
+  // the regular expression compiler.  The sequence of tokens provided depends
+  // on the flag settings passed to the constructor:  different regular
+  // expression grammars will interpret the same input pattern in
+  // syntactically different ways.
+  //
+  template<typename _InputIterator>
+    class _Scanner: public _Scanner_base
+    {
+    public:
+      typedef _InputIterator                                        _IteratorT;
+      typedef typename std::iterator_traits<_IteratorT>::value_type _CharT;
+      typedef std::basic_string<_CharT>                             _StringT;
+      typedef regex_constants::syntax_option_type                   _FlagT;
+      typedef const std::ctype<_CharT>                              _CtypeT;
+
+      // Token types returned from the scanner.
+      enum _TokenT
+      {
+	_S_token_anychar,
+	_S_token_backref,
+	_S_token_bracket_begin,
+	_S_token_bracket_end,
+	_S_token_inverse_class,
+	_S_token_char_class_name,
+	_S_token_closure0,
+	_S_token_closure1,
+	_S_token_collelem_multi,
+	_S_token_collelem_single,
+	_S_token_collsymbol,
+	_S_token_comma,
+	_S_token_dash,
+	_S_token_dup_count,
+	_S_token_eof,
+	_S_token_equiv_class_name,
+	_S_token_interval_begin,
+	_S_token_interval_end,
+	_S_token_line_begin,
+	_S_token_line_end,
+	_S_token_opt,
+	_S_token_or,
+	_S_token_ord_char,
+	_S_token_quoted_char,
+	_S_token_subexpr_begin,
+	_S_token_subexpr_end,
+	_S_token_word_begin,
+	_S_token_word_end,
+	_S_token_unknown
+      };
+
+    public:
+      _Scanner(_IteratorT __begin, _IteratorT __end, _FlagT __flags,
+	       std::locale __loc)
+      : _M_current(__begin) , _M_end(__end) , _M_flags(__flags),
+        _M_ctype(std::use_facet<_CtypeT>(__loc)), _M_state(_S_state_at_start)
+      { _M_advance(); }
+
+      void
+      _M_advance();
+
+      _TokenT
+      _M_token() const
+      { return _M_curToken; }
+
+      const _StringT&
+      _M_value() const
+      { return _M_curValue; }
+
+#ifdef _GLIBCXX_DEBUG
+      std::ostream&
+      _M_print(std::ostream&);
+#endif
+
+    private:
+      void
+      _M_eat_escape();
+
+      void
+      _M_scan_in_brace();
+
+      void
+      _M_scan_in_bracket();
+
+      void
+      _M_eat_charclass();
+
+      void
+      _M_eat_equivclass();
+
+      void
+      _M_eat_collsymbol();
+
+    private:
+      _IteratorT  _M_current;
+      _IteratorT  _M_end;
+      _FlagT      _M_flags;
+      _CtypeT&    _M_ctype;
+      _TokenT     _M_curToken;
+      _StringT    _M_curValue;
+      _StateT     _M_state;
+    };
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_advance()
+    {
+      if (_M_current == _M_end)
+	{
+	  _M_curToken = _S_token_eof;
+	  return;
+	}
+
+      _CharT __c = *_M_current;
+      if (_M_state & _S_state_in_bracket)
+	{
+	  _M_scan_in_bracket();
+	  return;
+	}
+      if (_M_state & _S_state_in_brace)
+	{
+	  _M_scan_in_brace();
+	  return;
+	}
+#if 0
+      // TODO: re-enable line anchors when _M_assertion is implemented.
+      // See PR libstdc++/47724
+      else if (_M_state & _S_state_at_start && __c == _M_ctype.widen('^'))
+	{
+	  _M_curToken = _S_token_line_begin;
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('$'))
+	{
+	  _M_curToken = _S_token_line_end;
+	  ++_M_current;
+	  return;
+	}
+#endif
+      else if (__c == _M_ctype.widen('.'))
+	{
+	  _M_curToken = _S_token_anychar;
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('*'))
+	{
+	  _M_curToken = _S_token_closure0;
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('+'))
+	{
+	  _M_curToken = _S_token_closure1;
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('|'))
+	{
+	  _M_curToken = _S_token_or;
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('['))
+	{
+	  _M_curToken = _S_token_bracket_begin;
+	  _M_state |= (_S_state_in_bracket | _S_state_at_start);
+	  ++_M_current;
+	  return;
+	}
+      else if (__c == _M_ctype.widen('\\'))
+	{
+	  _M_eat_escape();
+	  return;
+	}
+      else if (!(_M_flags & (regex_constants::basic | regex_constants::grep)))
+	{
+	  if (__c == _M_ctype.widen('('))
+	    {
+	      _M_curToken = _S_token_subexpr_begin;
+	      ++_M_current;
+	      return;
+	    }
+	  else if (__c == _M_ctype.widen(')'))
+	    {
+	      _M_curToken = _S_token_subexpr_end;
+	      ++_M_current;
+	      return;
+	    }
+	  else if (__c == _M_ctype.widen('{'))
+	    {
+	      _M_curToken = _S_token_interval_begin;
+	      _M_state |= _S_state_in_brace;
+	      ++_M_current;
+	      return;
+	    }
+	}
+
+      _M_curToken = _S_token_ord_char;
+      _M_curValue.assign(1, __c);
+      ++_M_current;
+    }
+
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_scan_in_brace()
+    {
+      if (_M_ctype.is(_CtypeT::digit, *_M_current))
+	{
+	  _M_curToken = _S_token_dup_count;
+	  _M_curValue.assign(1, *_M_current);
+	  ++_M_current;
+	  while (_M_current != _M_end
+		 && _M_ctype.is(_CtypeT::digit, *_M_current))
+	    {
+	      _M_curValue += *_M_current;
+	      ++_M_current;
+	    }
+	  return;
+	}
+      else if (*_M_current == _M_ctype.widen(','))
+	{
+	  _M_curToken = _S_token_comma;
+	  ++_M_current;
+	  return;
+	}
+      if (_M_flags & (regex_constants::basic | regex_constants::grep))
+	{
+	  if (*_M_current == _M_ctype.widen('\\'))
+	    _M_eat_escape();
+	}
+      else 
+	{
+	  if (*_M_current == _M_ctype.widen('}'))
+	    {
+	      _M_curToken = _S_token_interval_end;
+	      _M_state &= ~_S_state_in_brace;
+	      ++_M_current;
+	      return;
+	    }
+	}
+    }
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_scan_in_bracket()
+    {
+      if (_M_state & _S_state_at_start && *_M_current == _M_ctype.widen('^'))
+	{
+	  _M_curToken = _S_token_inverse_class;
+	  _M_state &= ~_S_state_at_start;
+	  ++_M_current;
+	  return;
+	}
+      else if (*_M_current == _M_ctype.widen('['))
+	{
+	  ++_M_current;
+	  if (_M_current == _M_end)
+	    {
+	      _M_curToken = _S_token_eof;
+	      return;
+	    }
+
+	  if (*_M_current == _M_ctype.widen('.'))
+	    {
+	      _M_curToken = _S_token_collsymbol;
+	      _M_eat_collsymbol();
+	      return;
+	    }
+	  else if (*_M_current == _M_ctype.widen(':'))
+	    {
+	      _M_curToken = _S_token_char_class_name;
+	      _M_eat_charclass();
+	      return;
+	    }
+	  else if (*_M_current == _M_ctype.widen('='))
+	    {
+	      _M_curToken = _S_token_equiv_class_name;
+	      _M_eat_equivclass();
+	      return;
+	    }
+	}
+      else if (*_M_current == _M_ctype.widen('-'))
+	{
+	  _M_curToken = _S_token_dash;
+	  ++_M_current;
+	  return;
+	}
+      else if (*_M_current == _M_ctype.widen(']'))
+	{
+	  if (!(_M_flags & regex_constants::ECMAScript)
+	      || !(_M_state & _S_state_at_start))
+	    {
+	      // special case: only if  _not_ chr first after
+	      // '[' or '[^' and if not ECMAscript
+	      _M_curToken = _S_token_bracket_end;
+	      ++_M_current;
+	      return;
+	    }
+	}
+      _M_curToken = _S_token_collelem_single;
+      _M_curValue.assign(1, *_M_current);
+      ++_M_current;
+    }
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_eat_escape()
+    {
+      ++_M_current;
+      if (_M_current == _M_end)
+	{
+	  _M_curToken = _S_token_eof;
+	  return;
+	}
+      _CharT __c = *_M_current;
+      ++_M_current;
+
+      if (__c == _M_ctype.widen('('))
+	{
+	  if (!(_M_flags & (regex_constants::basic | regex_constants::grep)))
+	    {
+	      _M_curToken = _S_token_ord_char;
+	      _M_curValue.assign(1, __c);
+	    }
+	  else
+	    _M_curToken = _S_token_subexpr_begin;
+	}
+      else if (__c == _M_ctype.widen(')'))
+	{
+	  if (!(_M_flags & (regex_constants::basic | regex_constants::grep)))
+	    {
+	      _M_curToken = _S_token_ord_char;
+	      _M_curValue.assign(1, __c);
+	    }
+	  else
+	    _M_curToken = _S_token_subexpr_end;
+	}
+      else if (__c == _M_ctype.widen('{'))
+	{
+	  if (!(_M_flags & (regex_constants::basic | regex_constants::grep)))
+	    {
+	      _M_curToken = _S_token_ord_char;
+	      _M_curValue.assign(1, __c);
+	    }
+	  else
+	    {
+	      _M_curToken = _S_token_interval_begin;
+	      _M_state |= _S_state_in_brace;
+	    }
+	}
+      else if (__c == _M_ctype.widen('}'))
+	{
+	  if (!(_M_flags & (regex_constants::basic | regex_constants::grep)))
+	    {
+	      _M_curToken = _S_token_ord_char;
+	      _M_curValue.assign(1, __c);
+	    }
+	  else
+	    {
+	      if (!(_M_state && _S_state_in_brace))
+		__throw_regex_error(regex_constants::error_badbrace);
+	      _M_state &= ~_S_state_in_brace;
+	      _M_curToken = _S_token_interval_end;
+	    }
+	}
+      else if (__c == _M_ctype.widen('x'))
+	{
+	  ++_M_current;
+	  if (_M_current == _M_end)
+	    {
+	      _M_curToken = _S_token_eof;
+	      return;
+	    }
+	  if (_M_ctype.is(_CtypeT::digit, *_M_current))
+	    {
+	      _M_curValue.assign(1, *_M_current);
+	      ++_M_current;
+	      if (_M_current == _M_end)
+		{
+		  _M_curToken = _S_token_eof;
+		  return;
+		}
+	      if (_M_ctype.is(_CtypeT::digit, *_M_current))
+		{
+		  _M_curValue += *_M_current;
+		  ++_M_current;
+		  return;
+		}
+	    }
+	}
+      else if (__c == _M_ctype.widen('^')
+	       || __c == _M_ctype.widen('.')
+	       || __c == _M_ctype.widen('*')
+	       || __c == _M_ctype.widen('$')
+	       || __c == _M_ctype.widen('\\'))
+	{
+	  _M_curToken = _S_token_ord_char;
+	  _M_curValue.assign(1, __c);
+	}
+      else if (_M_ctype.is(_CtypeT::digit, __c))
+	{
+	  _M_curToken = _S_token_backref;
+	  _M_curValue.assign(1, __c);
+	}
+      else
+	__throw_regex_error(regex_constants::error_escape);
+    }
+
+
+  // Eats a character class or throwns an exception.
+  // current point to ':' delimiter on entry, char after ']' on return
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_eat_charclass()
+    {
+      ++_M_current; // skip ':'
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_ctype);
+      for (_M_curValue.clear();
+	   _M_current != _M_end && *_M_current != _M_ctype.widen(':');
+	   ++_M_current)
+	_M_curValue += *_M_current;
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_ctype);
+      ++_M_current; // skip ':'
+      if (*_M_current != _M_ctype.widen(']'))
+	__throw_regex_error(regex_constants::error_ctype);
+      ++_M_current; // skip ']'
+    }
+
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_eat_equivclass()
+    {
+      ++_M_current; // skip '='
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_collate);
+      for (_M_curValue.clear();
+	   _M_current != _M_end && *_M_current != _M_ctype.widen('=');
+	   ++_M_current)
+	_M_curValue += *_M_current;
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_collate);
+      ++_M_current; // skip '='
+      if (*_M_current != _M_ctype.widen(']'))
+	__throw_regex_error(regex_constants::error_collate);
+      ++_M_current; // skip ']'
+    }
+
+
+  template<typename _InputIterator>
+    void
+    _Scanner<_InputIterator>::
+    _M_eat_collsymbol()
+    {
+      ++_M_current; // skip '.'
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_collate);
+      for (_M_curValue.clear();
+	   _M_current != _M_end && *_M_current != _M_ctype.widen('.');
+	   ++_M_current)
+	_M_curValue += *_M_current;
+      if (_M_current == _M_end)
+	__throw_regex_error(regex_constants::error_collate);
+      ++_M_current; // skip '.'
+      if (*_M_current != _M_ctype.widen(']'))
+	__throw_regex_error(regex_constants::error_collate);
+      ++_M_current; // skip ']'
+    }
+
+#ifdef _GLIBCXX_DEBUG
+  template<typename _InputIterator>
+    std::ostream&
+    _Scanner<_InputIterator>::
+    _M_print(std::ostream& ostr)
+    {
+      switch (_M_curToken)
+      {
+	case _S_token_anychar:
+	  ostr << "any-character\n";
+	  break;
+	case _S_token_backref:
+	  ostr << "backref\n";
+	  break;
+	case _S_token_bracket_begin:
+	  ostr << "bracket-begin\n";
+	  break;
+	case _S_token_bracket_end:
+	  ostr << "bracket-end\n";
+	  break;
+	case _S_token_char_class_name:
+	  ostr << "char-class-name \"" << _M_curValue << "\"\n";
+	  break;
+	case _S_token_closure0:
+	  ostr << "closure0\n";
+	  break;
+	case _S_token_closure1:
+	  ostr << "closure1\n";
+	  break;
+	case _S_token_collelem_multi:
+	  ostr << "coll-elem-multi \"" << _M_curValue << "\"\n";
+	  break;
+	case _S_token_collelem_single:
+	  ostr << "coll-elem-single \"" << _M_curValue << "\"\n";
+	  break;
+	case _S_token_collsymbol:
+	  ostr << "collsymbol \"" << _M_curValue << "\"\n";
+	  break;
+	case _S_token_comma:
+	  ostr << "comma\n";
+	  break;
+	case _S_token_dash:
+	  ostr << "dash\n";
+	  break;
+	case _S_token_dup_count:
+	  ostr << "dup count: " << _M_curValue << "\n";
+	  break;
+	case _S_token_eof:
+	  ostr << "EOF\n";
+	  break;
+	case _S_token_equiv_class_name:
+	  ostr << "equiv-class-name \"" << _M_curValue << "\"\n";
+	  break;
+	case _S_token_interval_begin:
+	  ostr << "interval begin\n";
+	  break;
+	case _S_token_interval_end:
+	  ostr << "interval end\n";
+	  break;
+	case _S_token_line_begin:
+	  ostr << "line begin\n";
+	  break;
+	case _S_token_line_end:
+	  ostr << "line end\n";
+	  break;
+	case _S_token_opt:
+	  ostr << "opt\n";
+	  break;
+	case _S_token_or:
+	  ostr << "or\n";
+	  break;
+	case _S_token_ord_char:
+	  ostr << "ordinary character: \"" << _M_value() << "\"\n";
+	  break;
+	case _S_token_quoted_char:
+	  ostr << "quoted char\n";
+	  break;
+	case _S_token_subexpr_begin:
+	  ostr << "subexpr begin\n";
+	  break;
+	case _S_token_subexpr_end:
+	  ostr << "subexpr end\n";
+	  break;
+	case _S_token_word_begin:
+	  ostr << "word begin\n";
+	  break;
+	case _S_token_word_end:
+	  ostr << "word end\n";
+	  break;
+	case _S_token_unknown:
+	  ostr << "-- unknown token --\n";
+	  break;
+      }
+      return ostr;
+    }
+#endif
+
+  // Builds an NFA from an input iterator interval.
+  template<typename _InIter, typename _TraitsT>
+    class _Compiler
+    {
+    public:
+      typedef _InIter                                            _IterT;
+      typedef typename std::iterator_traits<_InIter>::value_type _CharT;
+      typedef std::basic_string<_CharT>                          _StringT;
+      typedef regex_constants::syntax_option_type                _FlagT;
+
+    public:
+      _Compiler(const _InIter& __b, const _InIter& __e,
+		_TraitsT& __traits, _FlagT __flags);
+
+      const _Nfa&
+      _M_nfa() const
+      { return _M_state_store; }
+
+    private:
+      typedef _Scanner<_InIter>                              _ScannerT;
+      typedef typename _ScannerT::_TokenT                    _TokenT;
+      typedef std::stack<_StateSeq, std::vector<_StateSeq> > _StackT;
+      typedef _RangeMatcher<_InIter, _TraitsT>               _RMatcherT;
+
+      // accepts a specific token or returns false.
+      bool
+      _M_match_token(_TokenT __token);
+
+      void
+      _M_disjunction();
+
+      bool
+      _M_alternative();
+
+      bool
+      _M_term();
+
+      bool
+      _M_assertion();
+
+      bool
+      _M_quantifier();
+
+      bool
+      _M_atom();
+
+      bool
+      _M_bracket_expression();
+
+      bool
+      _M_bracket_list(_RMatcherT& __matcher);
+
+      bool
+      _M_follow_list(_RMatcherT& __matcher);
+
+      bool
+      _M_follow_list2(_RMatcherT& __matcher);
+
+      bool
+      _M_expression_term(_RMatcherT& __matcher);
+
+      bool
+      _M_range_expression(_RMatcherT& __matcher);
+
+      bool
+      _M_start_range(_RMatcherT& __matcher);
+
+      bool
+      _M_collating_symbol(_RMatcherT& __matcher);
+
+      bool
+      _M_equivalence_class(_RMatcherT& __matcher);
+
+      bool
+      _M_character_class(_RMatcherT& __matcher);
+
+      int
+      _M_cur_int_value(int __radix);
+
+    private:
+      _TraitsT&      _M_traits;
+      _ScannerT      _M_scanner;
+      _StringT       _M_cur_value;
+      _Nfa           _M_state_store;
+      _StackT        _M_stack;
+    };
+
+  template<typename _InIter, typename _TraitsT>
+    _Compiler<_InIter, _TraitsT>::
+    _Compiler(const _InIter& __b, const _InIter& __e, _TraitsT& __traits,
+	      _Compiler<_InIter, _TraitsT>::_FlagT __flags)
+    : _M_traits(__traits), _M_scanner(__b, __e, __flags, _M_traits.getloc()),
+      _M_state_store(__flags)
+    {
+      typedef _StartTagger<_InIter, _TraitsT> _Start;
+      typedef _EndTagger<_InIter, _TraitsT> _End;
+
+      _StateSeq __r(_M_state_store,
+      		    _M_state_store._M_insert_subexpr_begin(_Start(0)));
+      _M_disjunction();
+      if (!_M_stack.empty())
+	{
+	  __r._M_append(_M_stack.top());
+	  _M_stack.pop();
+	}
+      __r._M_append(_M_state_store._M_insert_subexpr_end(0, _End(0)));
+      __r._M_append(_M_state_store._M_insert_accept());
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_match_token(_Compiler<_InIter, _TraitsT>::_TokenT token)
+    { 
+      if (token == _M_scanner._M_token())
+	{
+	  _M_cur_value = _M_scanner._M_value();
+	  _M_scanner._M_advance();
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    void
+    _Compiler<_InIter, _TraitsT>::
+    _M_disjunction()
+    {
+      this->_M_alternative();
+      if (_M_match_token(_ScannerT::_S_token_or))
+	{
+	  _StateSeq __alt1 = _M_stack.top(); _M_stack.pop();
+	  this->_M_disjunction();
+	  _StateSeq __alt2 = _M_stack.top(); _M_stack.pop();
+	  _M_stack.push(_StateSeq(__alt1, __alt2));
+	}
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_alternative()
+    {
+      if (this->_M_term())
+	{
+	  _StateSeq __re = _M_stack.top(); _M_stack.pop();
+	  this->_M_alternative();
+	  if (!_M_stack.empty())
+	    {
+	      __re._M_append(_M_stack.top());
+	      _M_stack.pop();
+	    }
+	  _M_stack.push(__re);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_term()
+    {
+      if (this->_M_assertion())
+	return true;
+      if (this->_M_atom())
+	{
+	  this->_M_quantifier();
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_assertion()
+    {
+      if (_M_match_token(_ScannerT::_S_token_line_begin))
+	{
+	  // __m.push(_Matcher::_S_opcode_line_begin);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_line_end))
+	{
+	  // __m.push(_Matcher::_S_opcode_line_end);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_word_begin))
+	{
+	  // __m.push(_Matcher::_S_opcode_word_begin);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_word_end))
+	{
+	  // __m.push(_Matcher::_S_opcode_word_end);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_quantifier()
+    {
+      if (_M_match_token(_ScannerT::_S_token_closure0))
+	{
+	  if (_M_stack.empty())
+	    __throw_regex_error(regex_constants::error_badrepeat);
+	  _StateSeq __r(_M_stack.top(), -1);
+	  __r._M_append(__r._M_front());
+	  _M_stack.pop();
+	  _M_stack.push(__r);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_closure1))
+	{
+	  if (_M_stack.empty())
+	    __throw_regex_error(regex_constants::error_badrepeat);
+	  _StateSeq __r(_M_state_store,
+			_M_state_store.
+			_M_insert_alt(_S_invalid_state_id,
+				      _M_stack.top()._M_front()));
+	  _M_stack.top()._M_append(__r);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_opt))
+	{
+	  if (_M_stack.empty())
+	  __throw_regex_error(regex_constants::error_badrepeat);
+	  _StateSeq __r(_M_stack.top(), -1);
+	  _M_stack.pop();
+	  _M_stack.push(__r);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_interval_begin))
+	{
+	  if (_M_stack.empty())
+	    __throw_regex_error(regex_constants::error_badrepeat);
+	  if (!_M_match_token(_ScannerT::_S_token_dup_count))
+	    __throw_regex_error(regex_constants::error_badbrace);
+	  _StateSeq __r(_M_stack.top());
+	  int __min_rep = _M_cur_int_value(10);
+	  for (int __i = 1; __i < __min_rep; ++__i)
+	    _M_stack.top()._M_append(__r._M_clone()); 
+	  if (_M_match_token(_ScannerT::_S_token_comma))
+	    if (_M_match_token(_ScannerT::_S_token_dup_count))
+	      {
+		int __n = _M_cur_int_value(10) - __min_rep;
+		if (__n < 0)
+		  __throw_regex_error(regex_constants::error_badbrace);
+		for (int __i = 0; __i < __n; ++__i)
+		  {
+		    _StateSeq __r(_M_state_store,
+				  _M_state_store.
+				  _M_insert_alt(_S_invalid_state_id,
+						_M_stack.top()._M_front()));
+		    _M_stack.top()._M_append(__r);
+		  }
+	      }
+	    else
+	      {
+		_StateSeq __r(_M_stack.top(), -1);
+		__r._M_push_back(__r._M_front());
+		_M_stack.pop();
+		_M_stack.push(__r);
+	      }
+	  if (!_M_match_token(_ScannerT::_S_token_interval_end))
+	    __throw_regex_error(regex_constants::error_brace);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_atom()
+    {
+      typedef _CharMatcher<_InIter, _TraitsT> _CMatcher;
+      typedef _StartTagger<_InIter, _TraitsT> _Start;
+      typedef _EndTagger<_InIter, _TraitsT> _End;
+
+      if (_M_match_token(_ScannerT::_S_token_anychar))
+	{
+	  _M_stack.push(_StateSeq(_M_state_store,
+                                  _M_state_store._M_insert_matcher
+                                  (_AnyMatcher)));
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_ord_char))
+	{
+	  _M_stack.push(_StateSeq(_M_state_store,
+                                  _M_state_store._M_insert_matcher
+                                  (_CMatcher(_M_cur_value[0], _M_traits))));
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_quoted_char))
+	{
+	  // note that in the ECMA grammar, this case covers backrefs.
+	  _M_stack.push(_StateSeq(_M_state_store,
+				  _M_state_store._M_insert_matcher
+				  (_CMatcher(_M_cur_value[0], _M_traits))));
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_backref))
+	{
+	  // __m.push(_Matcher::_S_opcode_ordchar, _M_cur_value);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_subexpr_begin))
+	{
+	  int __mark = _M_state_store._M_sub_count();
+	  _StateSeq __r(_M_state_store,
+			_M_state_store.
+			_M_insert_subexpr_begin(_Start(__mark)));
+	  this->_M_disjunction();
+	  if (!_M_match_token(_ScannerT::_S_token_subexpr_end))
+	    __throw_regex_error(regex_constants::error_paren);
+	  if (!_M_stack.empty())
+	    {
+	      __r._M_append(_M_stack.top());
+	      _M_stack.pop();
+	    }
+	  __r._M_append(_M_state_store._M_insert_subexpr_end
+			(__mark, _End(__mark)));
+	  _M_stack.push(__r);
+	  return true;
+	}
+      return _M_bracket_expression();
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_bracket_expression()
+    {
+      if (_M_match_token(_ScannerT::_S_token_bracket_begin))
+	{
+	  _RMatcherT __matcher(_M_match_token(_ScannerT::_S_token_line_begin),
+			       _M_traits);
+	  if (!_M_bracket_list(__matcher)
+	      || !_M_match_token(_ScannerT::_S_token_bracket_end))
+	    __throw_regex_error(regex_constants::error_brack);
+	  _M_stack.push(_StateSeq(_M_state_store,
+				  _M_state_store._M_insert_matcher(__matcher)));
+	  return true;
+	}
+      return false;
+    }
+
+  // If the dash is the last character in the bracket expression, it is not
+  // special.
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_bracket_list(_RMatcherT& __matcher)
+    {
+      if (_M_follow_list(__matcher))
+	{
+	  if (_M_match_token(_ScannerT::_S_token_dash))
+	    __matcher._M_add_char(_M_cur_value[0]);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_follow_list(_RMatcherT& __matcher)
+    { return _M_expression_term(__matcher) && _M_follow_list2(__matcher); }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_follow_list2(_RMatcherT& __matcher)
+    {
+      if (_M_expression_term(__matcher))
+	return _M_follow_list2(__matcher);
+      return true;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_expression_term(_RMatcherT& __matcher)
+    {
+      return (_M_collating_symbol(__matcher)
+	      || _M_character_class(__matcher)
+	      || _M_equivalence_class(__matcher)
+	      || (_M_start_range(__matcher)
+		  && _M_range_expression(__matcher)));
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_range_expression(_RMatcherT& __matcher)
+    {
+      if (!_M_collating_symbol(__matcher))
+	if (!_M_match_token(_ScannerT::_S_token_dash))
+	  __throw_regex_error(regex_constants::error_range);
+      __matcher._M_make_range();
+      return true;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_start_range(_RMatcherT& __matcher)
+    { return _M_match_token(_ScannerT::_S_token_dash); }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_collating_symbol(_RMatcherT& __matcher)
+    {
+      if (_M_match_token(_ScannerT::_S_token_collelem_single))
+	{
+	  __matcher._M_add_char(_M_cur_value[0]);
+	  return true;
+	}
+      if (_M_match_token(_ScannerT::_S_token_collsymbol))
+	{
+	  __matcher._M_add_collating_element(_M_cur_value);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_equivalence_class(_RMatcherT& __matcher)
+    {
+      if (_M_match_token(_ScannerT::_S_token_equiv_class_name))
+	{
+	  __matcher._M_add_equivalence_class(_M_cur_value);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    bool
+    _Compiler<_InIter, _TraitsT>::
+    _M_character_class(_RMatcherT& __matcher)
+    {
+      if (_M_match_token(_ScannerT::_S_token_char_class_name))
+	{
+	  __matcher._M_add_character_class(_M_cur_value);
+	  return true;
+	}
+      return false;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    int
+    _Compiler<_InIter, _TraitsT>::
+    _M_cur_int_value(int __radix)
+    {
+      int __v = 0;
+      for (typename _StringT::size_type __i = 0;
+	   __i < _M_cur_value.length(); ++__i)
+	__v =__v * __radix + _M_traits.value(_M_cur_value[__i], __radix);
+      return __v;
+    }
+
+  template<typename _InIter, typename _TraitsT>
+    _AutomatonPtr
+    __compile(const _InIter& __b, const _InIter& __e, _TraitsT& __t,
+	      regex_constants::syntax_option_type __f)
+    { return _AutomatonPtr(new _Nfa(_Compiler<_InIter, _TraitsT>(__b, __e, __t,
+                                        __f)._M_nfa())); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace std
+
+/* vim: set ts=8 sw=2 sts=2: */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_constants.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_constants.h
new file mode 100644
index 000000000..bddef3a26
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_constants.h
@@ -0,0 +1,301 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_constants.h
+ *  @brief Constant definitions for the std regex library.
+ *
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+/**
+ * @namespace std::regex_constants
+ * @brief ISO C++-0x entities sub namespace for regex.
+ */
+namespace regex_constants
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @name 5.1 Regular Expression Syntax Options
+   */
+  //@{
+  enum __syntax_option
+    {
+      _S_icase,
+      _S_nosubs,
+      _S_optimize,
+      _S_collate,
+      _S_ECMAScript,
+      _S_basic,
+      _S_extended,
+      _S_awk,
+      _S_grep,
+      _S_egrep,
+      _S_syntax_last
+    };
+
+  /**
+   * @brief This is a bitmask type indicating how to interpret the regex.
+   *
+   * The @c syntax_option_type is implementation defined but it is valid to
+   * perform bitwise operations on these values and expect the right thing to
+   * happen.
+   *
+   * A valid value of type syntax_option_type shall have exactly one of the
+   * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep
+   * %set.
+   */
+  typedef unsigned int syntax_option_type;
+
+  /** 
+   * Specifies that the matching of regular expressions against a character
+   * sequence shall be performed without regard to case.
+   */
+  static constexpr syntax_option_type icase      = 1 << _S_icase;
+
+  /**
+   * Specifies that when a regular expression is matched against a character
+   * container sequence, no sub-expression matches are to be stored in the
+   * supplied match_results structure.
+   */
+  static constexpr syntax_option_type nosubs     = 1 << _S_nosubs;
+
+  /**
+   * Specifies that the regular expression engine should pay more attention to
+   * the speed with which regular expressions are matched, and less to the
+   * speed with which regular expression objects are constructed. Otherwise
+   * it has no detectable effect on the program output.
+   */
+  static constexpr syntax_option_type optimize   = 1 << _S_optimize;
+
+  /**
+   * Specifies that character ranges of the form [a-b] should be locale
+   * sensitive.
+   */
+  static constexpr syntax_option_type collate    = 1 << _S_collate;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript
+   * Language Specification, Standard Ecma-262, third edition, 1999], as
+   * modified in section [28.13].  This grammar is similar to that defined
+   * in the PERL scripting language but extended with elements found in the
+   * POSIX regular expression grammar.
+   */
+  static constexpr syntax_option_type ECMAScript = 1 << _S_ECMAScript;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001,
+   * Portable Operating System Interface (POSIX), Base Definitions and
+   * Headers, Section 9, Regular Expressions [IEEE, Information Technology --
+   * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
+   */
+  static constexpr syntax_option_type basic      = 1 << _S_basic;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001,
+   * Portable Operating System Interface (POSIX), Base Definitions and Headers,
+   * Section 9, Regular Expressions.
+   */
+  static constexpr syntax_option_type extended   = 1 << _S_extended;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility awk in IEEE Std 1003.1-2001.  This option is
+   * identical to syntax_option_type extended, except that C-style escape
+   * sequences are supported.  These sequences are:
+   * \\\\, \\a, \\b, \\f, \\n, \\r, \\t , \\v, \\', ',
+   * and \\ddd (where ddd is one, two, or three octal digits).  
+   */
+  static constexpr syntax_option_type awk        = 1 << _S_awk;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility grep in IEEE Std 1003.1-2001.  This option is
+   * identical to syntax_option_type basic, except that newlines are treated
+   * as whitespace.
+   */
+  static constexpr syntax_option_type grep       = 1 << _S_grep;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility grep when given the -E option in
+   * IEEE Std 1003.1-2001.  This option is identical to syntax_option_type 
+   * extended, except that newlines are treated as whitespace.
+   */
+  static constexpr syntax_option_type egrep      = 1 << _S_egrep;
+
+  //@}
+
+  /**
+   * @name 5.2 Matching Rules
+   *
+   * Matching a regular expression against a sequence of characters [first,
+   * last) proceeds according to the rules of the grammar specified for the
+   * regular expression object, modified according to the effects listed
+   * below for any bitmask elements set.
+   *
+   */
+  //@{
+
+  enum __match_flag
+    {
+      _S_not_bol,
+      _S_not_eol,
+      _S_not_bow,
+      _S_not_eow,
+      _S_any,
+      _S_not_null,
+      _S_continuous,
+      _S_prev_avail,
+      _S_sed,
+      _S_no_copy,
+      _S_first_only,
+      _S_match_flag_last
+    };
+
+  /**
+   * @brief This is a bitmask type indicating regex matching rules.
+   *
+   * The @c match_flag_type is implementation defined but it is valid to
+   * perform bitwise operations on these values and expect the right thing to
+   * happen.
+   */
+  typedef std::bitset<_S_match_flag_last> match_flag_type;
+
+  /**
+   * The default matching rules.
+   */
+  static constexpr match_flag_type match_default     = 0;
+
+  /**
+   * The first character in the sequence [first, last) is treated as though it
+   * is not at the beginning of a line, so the character (^) in the regular
+   * expression shall not match [first, first).
+   */
+  static constexpr match_flag_type match_not_bol     = 1 << _S_not_bol;
+
+  /**
+   * The last character in the sequence [first, last) is treated as though it
+   * is not at the end of a line, so the character ($) in the regular
+   * expression shall not match [last, last).
+   */
+  static constexpr match_flag_type match_not_eol     = 1 << _S_not_eol;
+   
+  /**
+   * The expression \\b is not matched against the sub-sequence
+   * [first,first).
+   */
+  static constexpr match_flag_type match_not_bow     = 1 << _S_not_bow;
+   
+  /**
+   * The expression \\b should not be matched against the sub-sequence
+   * [last,last).
+   */
+  static constexpr match_flag_type match_not_eow     = 1 << _S_not_eow;
+   
+  /**
+   * If more than one match is possible then any match is an acceptable
+   * result.
+   */
+  static constexpr match_flag_type match_any         = 1 << _S_any;
+   
+  /**
+   * The expression does not match an empty sequence.
+   */
+  static constexpr match_flag_type match_not_null    = 1 << _S_not_null;
+   
+  /**
+   * The expression only matches a sub-sequence that begins at first .
+   */
+  static constexpr match_flag_type match_continuous  = 1 << _S_continuous;
+   
+  /**
+   * --first is a valid iterator position.  When this flag is set then the
+   * flags match_not_bol and match_not_bow are ignored by the regular
+   * expression algorithms 28.11 and iterators 28.12.
+   */
+  static constexpr match_flag_type match_prev_avail  = 1 << _S_prev_avail;
+
+  /**
+   * When a regular expression match is to be replaced by a new string, the
+   * new string is constructed using the rules used by the ECMAScript replace
+   * function in ECMA- 262 [Ecma International, ECMAScript Language
+   * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11
+   * String.prototype.replace. In addition, during search and replace
+   * operations all non-overlapping occurrences of the regular expression
+   * are located and replaced, and sections of the input that did not match
+   * the expression are copied unchanged to the output string.
+   * 
+   * Format strings (from ECMA-262 [15.5.4.11]):
+   * @li $$  The dollar-sign itself ($)
+   * @li $&  The matched substring.
+   * @li $`  The portion of @a string that precedes the matched substring.
+   *         This would be match_results::prefix().
+   * @li $'  The portion of @a string that follows the matched substring.
+   *         This would be match_results::suffix().
+   * @li $n  The nth capture, where n is in [1,9] and $n is not followed by a
+   *         decimal digit.  If n <= match_results::size() and the nth capture
+   *         is undefined, use the empty string instead.  If n >
+   *         match_results::size(), the result is implementation-defined.
+   * @li $nn The nnth capture, where nn is a two-digit decimal number on
+   *         [01, 99].  If nn <= match_results::size() and the nth capture is
+   *         undefined, use the empty string instead. If
+   *         nn > match_results::size(), the result is implementation-defined.
+   */
+  static constexpr match_flag_type format_default    = 0;
+
+  /**
+   * When a regular expression match is to be replaced by a new string, the
+   * new string is constructed using the rules used by the POSIX sed utility
+   * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable
+   * Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
+   */
+  static constexpr match_flag_type format_sed        = 1 << _S_sed;
+
+  /**
+   * During a search and replace operation, sections of the character
+   * container sequence being searched that do not match the regular
+   * expression shall not be copied to the output string.
+   */
+  static constexpr match_flag_type format_no_copy    = 1 << _S_no_copy;
+
+  /**
+   * When specified during a search and replace operation, only the first
+   * occurrence of the regular expression shall be replaced.
+   */
+  static constexpr match_flag_type format_first_only = 1 << _S_first_only;
+
+  //@}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace regex_constants
+} // namespace
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_cursor.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_cursor.h
new file mode 100644
index 000000000..9feac1d0a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_cursor.h
@@ -0,0 +1,93 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_cursor.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // ABC for pattern matching
+  struct _PatternCursor
+  {
+    virtual ~_PatternCursor() { };
+    virtual void _M_next() = 0;
+    virtual bool _M_at_end() const = 0;
+  };
+
+  // Provides a cursor into the specific target string.
+  template<typename _FwdIterT>
+    class _SpecializedCursor
+    : public _PatternCursor
+    {
+    public:
+      _SpecializedCursor(const _FwdIterT& __b, const _FwdIterT __e)
+      : _M_b(__b), _M_c(__b), _M_e(__e)
+      { }
+
+      typename std::iterator_traits<_FwdIterT>::value_type
+      _M_current() const
+      { return *_M_c; }
+
+      void
+      _M_next()
+      { ++_M_c; }
+
+      _FwdIterT
+      _M_pos() const
+      { return _M_c; }
+
+      const _FwdIterT&
+      _M_begin() const
+      { return _M_b; }
+
+      const _FwdIterT&
+      _M_end() const
+      { return _M_e; }
+
+      bool
+      _M_at_end() const
+      { return _M_c == _M_e; }
+
+    private:
+      _FwdIterT _M_b;
+      _FwdIterT _M_c;
+      _FwdIterT _M_e;
+    };
+
+  // Helper function to create a cursor specialized for an iterator class.
+  template<typename _FwdIterT>
+    inline _SpecializedCursor<_FwdIterT>
+    __cursor(const _FwdIterT& __b, const _FwdIterT __e)
+    { return _SpecializedCursor<_FwdIterT>(__b, __e); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_error.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_error.h
new file mode 100644
index 000000000..c37a0fac6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_error.h
@@ -0,0 +1,161 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file bits/regex_error.h
+ * @brief Error and exception objects for the std regex library.
+ *
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace regex_constants
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @name 5.3 Error Types
+   */
+  //@{
+ 
+  enum error_type
+    {
+      _S_error_collate,
+      _S_error_ctype,
+      _S_error_escape,
+      _S_error_backref,
+      _S_error_brack,
+      _S_error_paren,
+      _S_error_brace,
+      _S_error_badbrace,
+      _S_error_range,
+      _S_error_space,
+      _S_error_badrepeat,
+      _S_error_complexity,
+      _S_error_stack,
+      _S_error_last
+    };
+
+  /** The expression contained an invalid collating element name. */
+  static constexpr error_type error_collate(_S_error_collate);
+
+  /** The expression contained an invalid character class name. */
+  static constexpr error_type error_ctype(_S_error_ctype);
+
+  /**
+   * The expression contained an invalid escaped character, or a trailing
+   * escape.
+   */
+  static constexpr error_type error_escape(_S_error_escape);
+
+  /** The expression contained an invalid back reference. */
+  static constexpr error_type error_backref(_S_error_backref);
+
+  /** The expression contained mismatched [ and ]. */
+  static constexpr error_type error_brack(_S_error_brack);
+
+  /** The expression contained mismatched ( and ). */
+  static constexpr error_type error_paren(_S_error_paren);
+
+  /** The expression contained mismatched { and } */
+  static constexpr error_type error_brace(_S_error_brace);
+
+  /** The expression contained an invalid range in a {} expression. */
+  static constexpr error_type error_badbrace(_S_error_badbrace);
+
+  /**
+   * The expression contained an invalid character range,
+   * such as [b-a] in most encodings.
+   */
+  static constexpr error_type error_range(_S_error_range);
+
+  /**
+   * There was insufficient memory to convert the expression into a
+   * finite state machine.
+   */
+  static constexpr error_type error_space(_S_error_space);
+
+  /**
+   * One of <em>*?+{<em> was not preceded by a valid regular expression.
+   */
+  static constexpr error_type error_badrepeat(_S_error_badrepeat);
+
+  /**
+   * The complexity of an attempted match against a regular expression
+   * exceeded a pre-set level.
+   */
+  static constexpr error_type error_complexity(_S_error_complexity);
+
+  /**
+   * There was insufficient memory to determine whether the
+   * regular expression could match the specified character sequence.
+   */
+  static constexpr error_type error_stack(_S_error_stack);
+
+  //@}
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace regex_constants
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [7.8] Class regex_error
+  /**
+   * @brief A regular expression exception class.
+   * @ingroup exceptions
+   *
+   * The regular expression library throws objects of this class on error.
+   */
+  class regex_error : public std::runtime_error
+  {
+    regex_constants::error_type _M_code;
+
+  public:
+    /**
+     * @brief Constructs a regex_error object.
+     *
+     * @param ecode the regex error code.
+     */
+    explicit
+    regex_error(regex_constants::error_type __ecode);
+
+    virtual ~regex_error() throw();
+
+    /**
+     * @brief Gets the regex error code.
+     *
+     * @returns the regex error code.
+     */
+    regex_constants::error_type
+    code() const
+    { return _M_code; }
+  };
+
+
+  void
+  __throw_regex_error(regex_constants::error_type __ecode);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.h
new file mode 100644
index 000000000..9312bb368
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.h
@@ -0,0 +1,132 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_grep_matcher.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _BiIter>
+    class sub_match;
+
+  template<typename _Bi_iter, typename _Allocator>
+    class match_results;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+  
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // A _Results facade specialized for wrapping a templated match_results.
+  template<typename _FwdIterT, typename _Alloc>
+    class _SpecializedResults
+    : public _Results
+    {
+    public:
+      _SpecializedResults(const _Automaton::_SizeT __size,
+			  const _SpecializedCursor<_FwdIterT>& __cursor,
+			  match_results<_FwdIterT, _Alloc>& __m);
+
+      void
+      _M_set_pos(int __i, int __j, const _PatternCursor& __pc);
+
+      void
+      _M_set_matched(int __i, bool __is_matched)
+      { _M_results.at(__i).matched = __is_matched; }
+
+    private:
+      match_results<_FwdIterT, _Alloc>& _M_results;
+    };
+
+  template<typename _FwdIterT, typename _Alloc>
+    _SpecializedResults<_FwdIterT, _Alloc>::
+    _SpecializedResults(const _Automaton::_SizeT __size,
+    			const _SpecializedCursor<_FwdIterT>& __cursor,
+                        match_results<_FwdIterT, _Alloc>& __m)
+    : _M_results(__m)
+    {
+      _M_results.clear();
+      _M_results.reserve(__size + 2);
+      _M_results.resize(__size);
+      typename match_results<_FwdIterT, _Alloc>::value_type __sm;
+      __sm.first = __sm.second = __cursor._M_begin();
+      _M_results.push_back(__sm);
+      __sm.first = __sm.second = __cursor._M_end();
+      _M_results.push_back(__sm);
+    }
+
+  template<typename _FwdIterT, typename _Alloc>
+    void
+    _SpecializedResults<_FwdIterT, _Alloc>::
+    _M_set_pos(int __i, int __j, const _PatternCursor& __pc)
+    { 
+      typedef const _SpecializedCursor<_FwdIterT>& _CursorT;
+      _CursorT __c = static_cast<_CursorT>(__pc);
+      if (__j == 0)
+	_M_results.at(__i).first = __c._M_pos();
+      else
+	_M_results.at(__i).second = __c._M_pos()+1;
+    }
+
+  // A stack of states used in evaluating the NFA.
+  typedef std::stack<_StateIdT, std::vector<_StateIdT> > _StateStack;
+
+  // Executes a regular expression NFA/DFA over a range using a variant of
+  // the parallel execution algorithm featured in the grep utility, modified
+  // to use Laurikari tags.
+  class _Grep_matcher
+  {
+  public:
+    _Grep_matcher(_PatternCursor&                   __p,
+		  _Results&                         __r,
+		  const _AutomatonPtr&              __automaton,
+		  regex_constants::match_flag_type  __flags);
+
+  private:
+    _StateSet
+    _M_e_closure(_StateIdT __i);
+
+    _StateSet
+    _M_e_closure(const _StateSet& __s);
+
+    _StateSet
+    _M_e_closure(_StateStack& __stack, const _StateSet& __s);
+
+  private:
+    const std::shared_ptr<_Nfa>        _M_nfa;
+    _PatternCursor&                    _M_pattern;
+    _Results&                          _M_results;
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace
+
+#include <bits/regex_grep_matcher.tcc>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.tcc
new file mode 100644
index 000000000..ae28f6fa1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_grep_matcher.tcc
@@ -0,0 +1,179 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_grep_matcher.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+#include <regex>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace
+{
+  // A stack of states used in evaluating the NFA.
+  typedef std::stack<std::__regex::_StateIdT,
+                     std::vector<std::__regex::_StateIdT>
+		     > _StateStack;
+
+  // Obtains the next state set given the current state set __s and the current
+  // input character.
+  inline std::__regex::_StateSet
+  __move(const std::__regex::_PatternCursor& __p,
+         const std::__regex::_Nfa& __nfa,
+         const std::__regex::_StateSet& __s)
+  {
+    std::__regex::_StateSet __m;
+    for (std::__regex::_StateSet::const_iterator __i = __s.begin();
+	 __i != __s.end(); ++__i)
+      {
+	if (*__i == std::__regex::_S_invalid_state_id)
+	  continue;
+
+	const std::__regex::_State& __state = __nfa[*__i];
+	if (__state._M_opcode == std::__regex::_S_opcode_match
+	    && __state._M_matches(__p))
+	  __m.insert(__state._M_next);
+      }
+    return __m;
+  }
+
+  // returns true if (__s intersect __t) is not empty
+  inline bool
+  __includes_some(const std::__regex::_StateSet& __s,
+                  const std::__regex::_StateSet& __t)
+  {
+    if (__s.size() > 0 && __t.size() > 0)
+      {
+	std::__regex::_StateSet::const_iterator __first = __s.begin();
+	std::__regex::_StateSet::const_iterator __second = __t.begin();
+	while (__first != __s.end() && __second != __t.end())
+	  {
+	    if (*__first < *__second)
+	      ++__first;
+	    else if (*__second < *__first)
+	      ++__second;
+	    else
+	      return true;
+	  }
+      }
+    return false;
+  }
+
+  // If an identified state __u is not already in the current state set __e,
+  // insert it and push it on the current state stack __s.
+  inline void
+  __add_visited_state(const std::__regex::_StateIdT __u,
+                      _StateStack&                  __s,
+                      std::__regex::_StateSet&      __e)
+  {
+    if (__e.count(__u) == 0)
+      {
+	__e.insert(__u);
+	__s.push(__u);
+      }
+  }
+
+} // anonymous namespace
+
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  inline _Grep_matcher::
+  _Grep_matcher(_PatternCursor& __p, _Results& __r,
+		const _AutomatonPtr& __nfa,
+		regex_constants::match_flag_type __flags)
+  : _M_nfa(static_pointer_cast<_Nfa>(__nfa)), _M_pattern(__p), _M_results(__r)
+  {
+    __regex::_StateSet __t = this->_M_e_closure(_M_nfa->_M_start());
+    for (; !_M_pattern._M_at_end(); _M_pattern._M_next())
+      __t = this->_M_e_closure(__move(_M_pattern, *_M_nfa, __t));
+
+    _M_results._M_set_matched(0,
+                              __includes_some(_M_nfa->_M_final_states(), __t));
+  }
+
+  // Creates the e-closure set for the initial state __i.
+  inline _StateSet _Grep_matcher::
+  _M_e_closure(_StateIdT __i)
+  {
+    _StateSet __s;
+    __s.insert(__i);
+    _StateStack __stack;
+    __stack.push(__i);
+    return this->_M_e_closure(__stack, __s);
+  }
+
+  // Creates the e-closure set for an arbitrary state set __s.
+  inline _StateSet _Grep_matcher::
+  _M_e_closure(const _StateSet& __s)
+  {
+    _StateStack __stack;
+    for (_StateSet::const_iterator __i = __s.begin(); __i != __s.end(); ++__i)
+      __stack.push(*__i);
+    return this->_M_e_closure(__stack, __s);
+  }
+
+  inline _StateSet _Grep_matcher::
+  _M_e_closure(_StateStack& __stack, const _StateSet& __s)
+  {
+    _StateSet __e = __s;
+    while (!__stack.empty())
+      {
+	_StateIdT __t = __stack.top(); __stack.pop();
+	if (__t == _S_invalid_state_id)
+	  continue;
+	// for each __u with edge from __t to __u labeled e do ...
+	const _State& __state = _M_nfa->operator[](__t);
+	switch (__state._M_opcode)
+	  {
+	  case _S_opcode_alternative:
+	    __add_visited_state(__state._M_next, __stack, __e);
+	    __add_visited_state(__state._M_alt, __stack, __e);
+	    break;
+	  case _S_opcode_subexpr_begin:
+	    __add_visited_state(__state._M_next, __stack, __e);
+	    __state._M_tagger(_M_pattern, _M_results);
+	    break;
+	  case _S_opcode_subexpr_end:
+	    __add_visited_state(__state._M_next, __stack, __e);
+	    __state._M_tagger(_M_pattern, _M_results);
+	    _M_results._M_set_matched(__state._M_subexpr, true);
+	    break;
+	  case _S_opcode_accept:
+	    __add_visited_state(__state._M_next, __stack, __e);
+	    break;
+	  default:
+	    break;
+	  }
+      }
+    return __e;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.h
new file mode 100644
index 000000000..c4a65e672
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.h
@@ -0,0 +1,400 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file bits/regex_nfa.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Base class for, um, automata.  Could be an NFA or a DFA.  Your choice.
+  class _Automaton
+  {
+  public:
+    typedef unsigned int _SizeT;
+
+  public:
+    virtual
+    ~_Automaton() { }
+
+    virtual _SizeT
+    _M_sub_count() const = 0;
+
+#ifdef _GLIBCXX_DEBUG
+    virtual std::ostream&
+    _M_dot(std::ostream& __ostr) const = 0;
+#endif
+  };
+
+  // Generic shared pointer to an automaton.  
+  typedef std::shared_ptr<_Automaton> _AutomatonPtr;
+
+  // Operation codes that define the type of transitions within the base NFA
+  // that represents the regular expression.
+  enum _Opcode
+  {
+      _S_opcode_unknown       =   0,
+      _S_opcode_alternative   =   1,
+      _S_opcode_subexpr_begin =   4,
+      _S_opcode_subexpr_end   =   5,
+      _S_opcode_match         = 100,
+      _S_opcode_accept        = 255
+  };
+
+  // Provides a generic facade for a templated match_results.
+  struct _Results
+  {
+    virtual void _M_set_pos(int __i, int __j, const _PatternCursor& __p) = 0;
+    virtual void _M_set_matched(int __i, bool __is_matched) = 0;
+  };
+
+  // Tags current state (for subexpr begin/end).
+  typedef std::function<void (const _PatternCursor&, _Results&)> _Tagger;
+
+  template<typename _FwdIterT, typename _TraitsT>
+    struct _StartTagger
+    {
+      explicit
+      _StartTagger(int __i)
+      : _M_index(__i)
+      { }
+
+      void
+      operator()(const _PatternCursor& __pc, _Results& __r)
+      { __r._M_set_pos(_M_index, 0, __pc); }
+
+      int       _M_index;
+    };
+
+  template<typename _FwdIterT, typename _TraitsT>
+    struct _EndTagger
+    {
+      explicit
+      _EndTagger(int __i)
+      : _M_index(__i)
+      { }
+
+      void
+      operator()(const _PatternCursor& __pc, _Results& __r)
+      { __r._M_set_pos(_M_index, 1, __pc); }
+
+      int       _M_index;
+      _FwdIterT _M_pos;
+    };
+  // Indicates if current state matches cursor current.
+  typedef std::function<bool (const _PatternCursor&)> _Matcher;
+
+  // Matches any character
+  inline bool
+  _AnyMatcher(const _PatternCursor&)
+  { return true; }
+
+  // Matches a single character
+  template<typename _InIterT, typename _TraitsT>
+    struct _CharMatcher
+    {
+      typedef typename _TraitsT::char_type char_type;
+
+      explicit
+      _CharMatcher(char_type __c, const _TraitsT& __t = _TraitsT())
+      : _M_traits(__t), _M_c(_M_traits.translate(__c))
+      { }
+
+      bool
+      operator()(const _PatternCursor& __pc) const
+      {
+	typedef const _SpecializedCursor<_InIterT>& _CursorT;
+	_CursorT __c = static_cast<_CursorT>(__pc);
+	return _M_traits.translate(__c._M_current()) == _M_c;
+      }
+
+      const _TraitsT& _M_traits;
+      char_type       _M_c;
+    };
+
+  // Matches a character range (bracket expression)
+  template<typename _InIterT, typename _TraitsT>
+    struct _RangeMatcher
+    {
+      typedef typename _TraitsT::char_type _CharT;
+      typedef std::basic_string<_CharT>    _StringT;
+
+      explicit
+      _RangeMatcher(bool __is_non_matching, const _TraitsT& __t = _TraitsT())
+      : _M_traits(__t), _M_is_non_matching(__is_non_matching)
+      { }
+
+      bool
+      operator()(const _PatternCursor& __pc) const
+      {
+	typedef const _SpecializedCursor<_InIterT>& _CursorT;
+	_CursorT __c = static_cast<_CursorT>(__pc);
+	return true;
+      }
+
+      void
+      _M_add_char(_CharT __c)
+      { }
+
+      void
+      _M_add_collating_element(const _StringT& __s)
+      { }
+
+      void
+      _M_add_equivalence_class(const _StringT& __s)
+      { }
+
+      void
+      _M_add_character_class(const _StringT& __s)
+      { }
+
+      void
+      _M_make_range()
+      { }
+
+      const _TraitsT& _M_traits;
+      bool            _M_is_non_matching;
+    };
+
+  // Identifies a state in the NFA.
+  typedef int _StateIdT;
+
+  // The special case in which a state identifier is not an index.
+  static const _StateIdT _S_invalid_state_id  = -1;
+
+
+  // An individual state in an NFA
+  //
+  // In this case a "state" is an entry in the NFA definition coupled with its
+  // outgoing transition(s).  All states have a single outgoing transition,
+  // except for accepting states (which have no outgoing transitions) and alt
+  // states, which have two outgoing transitions.
+  //
+  struct _State
+  {
+    typedef int  _OpcodeT;
+
+    _OpcodeT     _M_opcode;    // type of outgoing transition
+    _StateIdT    _M_next;      // outgoing transition
+    _StateIdT    _M_alt;       // for _S_opcode_alternative
+    unsigned int _M_subexpr;   // for _S_opcode_subexpr_*
+    _Tagger      _M_tagger;    // for _S_opcode_subexpr_*
+    _Matcher     _M_matches;   // for _S_opcode_match
+
+    explicit _State(_OpcodeT __opcode)
+    : _M_opcode(__opcode), _M_next(_S_invalid_state_id)
+    { }
+
+    _State(const _Matcher& __m)
+    : _M_opcode(_S_opcode_match), _M_next(_S_invalid_state_id), _M_matches(__m)
+    { }
+
+    _State(_OpcodeT __opcode, unsigned int __s, const _Tagger& __t)
+    : _M_opcode(__opcode), _M_next(_S_invalid_state_id), _M_subexpr(__s),
+      _M_tagger(__t)
+    { }
+
+    _State(_StateIdT __next, _StateIdT __alt)
+    : _M_opcode(_S_opcode_alternative), _M_next(__next), _M_alt(__alt)
+    { }
+
+#ifdef _GLIBCXX_DEBUG
+    std::ostream&
+    _M_print(std::ostream& ostr) const;
+
+    // Prints graphviz dot commands for state.
+    std::ostream&
+    _M_dot(std::ostream& __ostr, _StateIdT __id) const;
+#endif
+  };
+
+  
+  // The Grep Matcher works on sets of states.  Here are sets of states.
+  typedef std::set<_StateIdT> _StateSet;
+
+ // A collection of all states making up an NFA
+  //
+  // An NFA is a 4-tuple M = (K, S, s, F), where
+  //    K is a finite set of states,
+  //    S is the alphabet of the NFA,
+  //    s is the initial state,
+  //    F is a set of final (accepting) states.
+  //
+  // This NFA class is templated on S, a type that will hold values of the
+  // underlying alphabet (without regard to semantics of that alphabet).  The
+  // other elements of the tuple are generated during construction of the NFA
+  // and are available through accessor member functions.
+  //
+  class _Nfa
+  : public _Automaton, public std::vector<_State>
+  {
+  public:
+    typedef _State                              _StateT;
+    typedef unsigned int                        _SizeT;
+    typedef regex_constants::syntax_option_type _FlagT;
+
+  public:
+    _Nfa(_FlagT __f)
+    : _M_flags(__f), _M_start_state(0), _M_subexpr_count(0)
+    { }
+
+    ~_Nfa()
+    { }
+
+    _FlagT
+    _M_options() const
+    { return _M_flags; }
+
+    _StateIdT
+    _M_start() const
+    { return _M_start_state; }
+
+    const _StateSet&
+    _M_final_states() const
+    { return _M_accepting_states; }
+
+    _SizeT
+    _M_sub_count() const
+    { return _M_subexpr_count; }
+
+    _StateIdT
+    _M_insert_accept()
+    {
+      this->push_back(_StateT(_S_opcode_accept));
+      _M_accepting_states.insert(this->size()-1);
+      return this->size()-1;
+    }
+
+    _StateIdT
+    _M_insert_alt(_StateIdT __next, _StateIdT __alt)
+    {
+      this->push_back(_StateT(__next, __alt));
+      return this->size()-1;
+    }
+
+    _StateIdT
+    _M_insert_matcher(_Matcher __m)
+    {
+      this->push_back(_StateT(__m));
+      return this->size()-1;
+    }
+
+    _StateIdT
+    _M_insert_subexpr_begin(const _Tagger& __t)
+    {
+      this->push_back(_StateT(_S_opcode_subexpr_begin, _M_subexpr_count++, __t));
+      return this->size()-1;
+    }
+
+    _StateIdT 
+    _M_insert_subexpr_end(unsigned int __i, const _Tagger& __t)
+    {
+      this->push_back(_StateT(_S_opcode_subexpr_end, __i, __t));
+      return this->size()-1;
+    }
+
+#ifdef _GLIBCXX_DEBUG
+    std::ostream&
+    _M_dot(std::ostream& __ostr) const;
+#endif
+
+  private:
+    _FlagT     _M_flags;
+    _StateIdT  _M_start_state;
+    _StateSet  _M_accepting_states;
+    _SizeT     _M_subexpr_count;
+  };
+
+  // Describes a sequence of one or more %_State, its current start and end(s).
+  //
+  // This structure contains fragments of an NFA during construction.
+  class _StateSeq
+  {
+  public:
+    // Constructs a single-node sequence
+    _StateSeq(_Nfa& __ss, _StateIdT __s, _StateIdT __e = _S_invalid_state_id)
+    : _M_nfa(__ss), _M_start(__s), _M_end1(__s), _M_end2(__e)
+    { }
+    // Constructs a split sequence from two other sequencces
+    _StateSeq(const _StateSeq& __e1, const _StateSeq& __e2)
+    : _M_nfa(__e1._M_nfa),
+      _M_start(_M_nfa._M_insert_alt(__e1._M_start, __e2._M_start)),
+      _M_end1(__e1._M_end1), _M_end2(__e2._M_end1)
+    { }
+
+    // Constructs a split sequence from a single sequence
+    _StateSeq(const _StateSeq& __e, _StateIdT __id)
+    : _M_nfa(__e._M_nfa),
+      _M_start(_M_nfa._M_insert_alt(__id, __e._M_start)),
+      _M_end1(__id), _M_end2(__e._M_end1)
+    { }
+
+    // Constructs a copy of a %_StateSeq
+    _StateSeq(const _StateSeq& __rhs)
+    : _M_nfa(__rhs._M_nfa), _M_start(__rhs._M_start),
+      _M_end1(__rhs._M_end1), _M_end2(__rhs._M_end2)
+    { }
+
+
+    _StateSeq& operator=(const _StateSeq& __rhs);
+
+    _StateIdT
+    _M_front() const
+    { return _M_start; }
+
+    // Extends a sequence by one.
+    void
+    _M_push_back(_StateIdT __id);
+
+    // Extends and maybe joins a sequence.
+    void
+    _M_append(_StateIdT __id);
+
+    void
+    _M_append(_StateSeq& __rhs);
+
+    // Clones an entire sequence.
+    _StateIdT
+    _M_clone();
+
+  private:
+    _Nfa&     _M_nfa;
+    _StateIdT _M_start;
+    _StateIdT _M_end1;
+    _StateIdT _M_end2;
+
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace std
+
+#include <bits/regex_nfa.tcc>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.tcc
new file mode 100644
index 000000000..9e4a6cee7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/regex_nfa.tcc
@@ -0,0 +1,174 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file bits/regex_nfa.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{regex}
+ */
+#include <regex>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __regex
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef _GLIBCXX_DEBUG
+inline std::ostream& _State::
+_M_print(std::ostream& ostr) const
+{
+  switch (_M_opcode)
+  {
+    case _S_opcode_alternative:
+      ostr << "alt next=" << _M_next << " alt=" << _M_alt;
+      break;
+    case _S_opcode_subexpr_begin:
+      ostr << "subexpr begin next=" << _M_next << " index=" << _M_subexpr;
+      break;
+    case _S_opcode_subexpr_end:
+      ostr << "subexpr end next=" << _M_next << " index=" << _M_subexpr;
+      break;
+    case _S_opcode_match:
+      ostr << "match next=" << _M_next;
+      break;
+    case _S_opcode_accept:
+      ostr << "accept next=" << _M_next;
+      break;
+    default:
+      ostr << "unknown next=" << _M_next;
+      break;
+  }
+  return ostr;
+}
+
+// Prints graphviz dot commands for state.
+inline std::ostream& _State::
+_M_dot(std::ostream& __ostr, _StateIdT __id) const
+{
+  switch (_M_opcode)
+  {
+    case _S_opcode_alternative:
+      __ostr << __id << " [label=\"" << __id << "\\nALT\"];\n" 
+             << __id << " -> " << _M_next
+             << " [label=\"epsilon\", tailport=\"s\"];\n"
+             << __id << " -> " << _M_alt 
+             << " [label=\"epsilon\", tailport=\"n\"];\n";
+      break;
+    case _S_opcode_subexpr_begin:
+      __ostr << __id << " [label=\"" << __id << "\\nSBEGIN "
+             << _M_subexpr << "\"];\n" 
+             << __id << " -> " << _M_next << " [label=\"epsilon\"];\n";
+      break;
+    case _S_opcode_subexpr_end:
+      __ostr << __id << " [label=\"" << __id << "\\nSEND "
+             << _M_subexpr << "\"];\n" 
+             << __id << " -> " << _M_next << " [label=\"epsilon\"];\n";
+      break;
+    case _S_opcode_match:
+      __ostr << __id << " [label=\"" << __id << "\\nMATCH\"];\n" 
+             << __id << " -> " << _M_next << " [label=\"<match>\"];\n";
+      break;
+    case _S_opcode_accept:
+      __ostr << __id << " [label=\"" << __id << "\\nACC\"];\n" ;
+      break;
+    default:
+      __ostr << __id << " [label=\"" << __id << "\\nUNK\"];\n" 
+             << __id << " -> " << _M_next << " [label=\"?\"];\n";
+      break;
+  }
+  return __ostr;
+}
+
+inline std::ostream& _Nfa::
+_M_dot(std::ostream& __ostr) const
+{
+  __ostr << "digraph _Nfa {\n"
+   << "  rankdir=LR;\n";
+  for (unsigned int __i = 0; __i < this->size(); ++__i)
+  { this->at(__i)._M_dot(__ostr, __i); }
+  __ostr << "}\n";
+  return __ostr;
+}
+#endif
+
+inline _StateSeq& _StateSeq::
+operator=(const _StateSeq& __rhs)
+{
+  _M_start = __rhs._M_start;
+  _M_end1  = __rhs._M_end1;
+  _M_end2  = __rhs._M_end2;
+  return *this;
+}
+
+inline void _StateSeq::
+_M_push_back(_StateIdT __id)
+{
+  if (_M_end1 != _S_invalid_state_id)
+    _M_nfa[_M_end1]._M_next = __id;
+  _M_end1 = __id;
+}
+
+inline void _StateSeq::
+_M_append(_StateIdT __id)
+{
+  if (_M_end2 != _S_invalid_state_id)
+  {
+    if (_M_end2 == _M_end1)
+      _M_nfa[_M_end2]._M_alt = __id;
+    else
+      _M_nfa[_M_end2]._M_next = __id;
+    _M_end2 = _S_invalid_state_id;
+  }
+  if (_M_end1 != _S_invalid_state_id)
+    _M_nfa[_M_end1]._M_next = __id;
+  _M_end1 = __id;
+}
+
+inline void _StateSeq::
+_M_append(_StateSeq& __rhs)
+{
+  if (_M_end2 != _S_invalid_state_id)
+  {
+    if (_M_end2 == _M_end1)
+      _M_nfa[_M_end2]._M_alt = __rhs._M_start;
+    else
+      _M_nfa[_M_end2]._M_next = __rhs._M_start;
+    _M_end2 = _S_invalid_state_id;
+  }
+  if (__rhs._M_end2 != _S_invalid_state_id)
+    _M_end2 = __rhs._M_end2;
+  if (_M_end1 != _S_invalid_state_id)
+    _M_nfa[_M_end1]._M_next = __rhs._M_start;
+  _M_end1 = __rhs._M_end1;
+}
+
+// @todo implement this function.
+inline _StateIdT _StateSeq::
+_M_clone()
+{ return 0; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __regex
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr.h
new file mode 100644
index 000000000..97d123f94
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr.h
@@ -0,0 +1,565 @@
+// shared_ptr and weak_ptr implementation -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// GCC Note: Based on files from version 1.32.0 of the Boost library.
+
+//  shared_count.hpp
+//  Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+
+//  shared_ptr.hpp
+//  Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes.
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  weak_ptr.hpp
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  enable_shared_from_this.hpp
+//  Copyright (C) 2002 Peter Dimov
+
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+/** @file bits/shared_ptr.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _SHARED_PTR_H
+#define _SHARED_PTR_H 1
+
+#include <bits/shared_ptr_base.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup pointer_abstractions
+   * @{
+   */
+
+  /// 2.2.3.7 shared_ptr I/O
+  template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
+    inline std::basic_ostream<_Ch, _Tr>&
+    operator<<(std::basic_ostream<_Ch, _Tr>& __os,
+	       const __shared_ptr<_Tp, _Lp>& __p)
+    {
+      __os << __p.get();
+      return __os;
+    }
+
+  /// 2.2.3.10 shared_ptr get_deleter (experimental)
+  template<typename _Del, typename _Tp, _Lock_policy _Lp>
+    inline _Del*
+    get_deleter(const __shared_ptr<_Tp, _Lp>& __p)
+    {
+#ifdef __GXX_RTTI
+      return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del)));
+#else
+      return 0;
+#endif
+    }
+
+
+  /**
+   *  @brief  A smart pointer with reference-counted copy semantics.
+   *
+   *  The object pointed to is deleted when the last shared_ptr pointing to
+   *  it is destroyed or reset.
+  */
+  template<typename _Tp>
+    class shared_ptr : public __shared_ptr<_Tp>
+    {
+    public:
+      /**
+       *  @brief  Construct an empty %shared_ptr.
+       *  @post   use_count()==0 && get()==0
+       */
+      constexpr shared_ptr()
+      : __shared_ptr<_Tp>() { }
+
+      /**
+       *  @brief  Construct a %shared_ptr that owns the pointer @a __p.
+       *  @param  __p  A pointer that is convertible to element_type*.
+       *  @post   use_count() == 1 && get() == __p
+       *  @throw  std::bad_alloc, in which case @c delete @a __p is called.
+       */
+      template<typename _Tp1>
+	explicit shared_ptr(_Tp1* __p)
+        : __shared_ptr<_Tp>(__p) { }
+
+      /**
+       *  @brief  Construct a %shared_ptr that owns the pointer @a __p
+       *          and the deleter @a __d.
+       *  @param  __p  A pointer.
+       *  @param  __d  A deleter.
+       *  @post   use_count() == 1 && get() == __p
+       *  @throw  std::bad_alloc, in which case @a __d(__p) is called.
+       *
+       *  Requirements: _Deleter's copy constructor and destructor must
+       *  not throw
+       *
+       *  __shared_ptr will release __p by calling __d(__p)
+       */
+      template<typename _Tp1, typename _Deleter>
+	shared_ptr(_Tp1* __p, _Deleter __d)
+        : __shared_ptr<_Tp>(__p, __d) { }
+
+      /**
+       *  @brief  Construct a %shared_ptr that owns a null pointer
+       *          and the deleter @a __d.
+       *  @param  __p  A null pointer constant.
+       *  @param  __d  A deleter.
+       *  @post   use_count() == 1 && get() == __p
+       *  @throw  std::bad_alloc, in which case @a __d(__p) is called.
+       *
+       *  Requirements: _Deleter's copy constructor and destructor must
+       *  not throw
+       *
+       *  The last owner will call __d(__p)
+       */
+      template<typename _Deleter>
+	shared_ptr(nullptr_t __p, _Deleter __d)
+        : __shared_ptr<_Tp>(__p, __d) { }
+
+      /**
+       *  @brief  Construct a %shared_ptr that owns the pointer @a __p
+       *          and the deleter @a __d.
+       *  @param  __p  A pointer.
+       *  @param  __d  A deleter.
+       *  @param  __a  An allocator.
+       *  @post   use_count() == 1 && get() == __p
+       *  @throw  std::bad_alloc, in which case @a __d(__p) is called.
+       *
+       *  Requirements: _Deleter's copy constructor and destructor must
+       *  not throw _Alloc's copy constructor and destructor must not
+       *  throw.
+       *
+       *  __shared_ptr will release __p by calling __d(__p)
+       */
+      template<typename _Tp1, typename _Deleter, typename _Alloc>
+	shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
+	: __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
+
+      /**
+       *  @brief  Construct a %shared_ptr that owns a null pointer
+       *          and the deleter @a __d.
+       *  @param  __p  A null pointer constant.
+       *  @param  __d  A deleter.
+       *  @param  __a  An allocator.
+       *  @post   use_count() == 1 && get() == __p
+       *  @throw  std::bad_alloc, in which case @a __d(__p) is called.
+       *
+       *  Requirements: _Deleter's copy constructor and destructor must
+       *  not throw _Alloc's copy constructor and destructor must not
+       *  throw.
+       *
+       *  The last owner will call __d(__p)
+       */
+      template<typename _Deleter, typename _Alloc>
+	shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
+	: __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
+
+      // Aliasing constructor
+
+      /**
+       *  @brief  Constructs a %shared_ptr instance that stores @a __p
+       *          and shares ownership with @a __r.
+       *  @param  __r  A %shared_ptr.
+       *  @param  __p  A pointer that will remain valid while @a *__r is valid.
+       *  @post   get() == __p && use_count() == __r.use_count()
+       *
+       *  This can be used to construct a @c shared_ptr to a sub-object
+       *  of an object managed by an existing @c shared_ptr.
+       *
+       * @code
+       * shared_ptr< pair<int,int> > pii(new pair<int,int>());
+       * shared_ptr<int> pi(pii, &pii->first);
+       * assert(pii.use_count() == 2);
+       * @endcode
+       */
+      template<typename _Tp1>
+	shared_ptr(const shared_ptr<_Tp1>& __r, _Tp* __p)
+	: __shared_ptr<_Tp>(__r, __p) { }
+
+      /**
+       *  @brief  If @a __r is empty, constructs an empty %shared_ptr;
+       *          otherwise construct a %shared_ptr that shares ownership
+       *          with @a __r.
+       *  @param  __r  A %shared_ptr.
+       *  @post   get() == __r.get() && use_count() == __r.use_count()
+       */
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	shared_ptr(const shared_ptr<_Tp1>& __r)
+        : __shared_ptr<_Tp>(__r) { }
+
+      /**
+       *  @brief  Move-constructs a %shared_ptr instance from @a __r.
+       *  @param  __r  A %shared_ptr rvalue.
+       *  @post   *this contains the old value of @a __r, @a __r is empty.
+       */
+      shared_ptr(shared_ptr&& __r)
+      : __shared_ptr<_Tp>(std::move(__r)) { }
+
+      /**
+       *  @brief  Move-constructs a %shared_ptr instance from @a __r.
+       *  @param  __r  A %shared_ptr rvalue.
+       *  @post   *this contains the old value of @a __r, @a __r is empty.
+       */
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	shared_ptr(shared_ptr<_Tp1>&& __r)
+	: __shared_ptr<_Tp>(std::move(__r)) { }
+
+      /**
+       *  @brief  Constructs a %shared_ptr that shares ownership with @a __r
+       *          and stores a copy of the pointer stored in @a __r.
+       *  @param  __r  A weak_ptr.
+       *  @post   use_count() == __r.use_count()
+       *  @throw  bad_weak_ptr when __r.expired(),
+       *          in which case the constructor has no effect.
+       */
+      template<typename _Tp1>
+	explicit shared_ptr(const weak_ptr<_Tp1>& __r)
+	: __shared_ptr<_Tp>(__r) { }
+
+#if _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+	shared_ptr(std::auto_ptr<_Tp1>&& __r)
+	: __shared_ptr<_Tp>(std::move(__r)) { }
+#endif
+
+      template<typename _Tp1, typename _Del>
+	shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
+	: __shared_ptr<_Tp>(std::move(__r)) { }
+
+      /**
+       *  @brief  Construct an empty %shared_ptr.
+       *  @param  __p  A null pointer constant.
+       *  @post   use_count() == 0 && get() == nullptr
+       */
+      constexpr shared_ptr(nullptr_t __p)
+      : __shared_ptr<_Tp>(__p) { }
+
+      template<typename _Tp1>
+	shared_ptr&
+	operator=(const shared_ptr<_Tp1>& __r) // never throws
+	{
+	  this->__shared_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+#if _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+	shared_ptr&
+	operator=(std::auto_ptr<_Tp1>&& __r)
+	{
+	  this->__shared_ptr<_Tp>::operator=(std::move(__r));
+	  return *this;
+	}
+#endif
+
+      shared_ptr&
+      operator=(shared_ptr&& __r)
+      {
+	this->__shared_ptr<_Tp>::operator=(std::move(__r));
+	return *this;
+      }
+
+      template<class _Tp1>
+	shared_ptr&
+	operator=(shared_ptr<_Tp1>&& __r)
+	{
+	  this->__shared_ptr<_Tp>::operator=(std::move(__r));
+	  return *this;
+	}
+
+      template<typename _Tp1, typename _Del>
+	shared_ptr&
+	operator=(std::unique_ptr<_Tp1, _Del>&& __r)
+	{
+	  this->__shared_ptr<_Tp>::operator=(std::move(__r));
+	  return *this;
+	}
+
+    private:
+      // This constructor is non-standard, it is used by allocate_shared.
+      template<typename _Alloc, typename... _Args>
+	shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+		   _Args&&... __args)
+	: __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...)
+	{ }
+
+      template<typename _Tp1, typename _Alloc, typename... _Args>
+	friend shared_ptr<_Tp1>
+	allocate_shared(const _Alloc& __a, _Args&&... __args);
+    };
+
+  // 20.8.13.2.7 shared_ptr comparisons
+  template<typename _Tp1, typename _Tp2>
+    inline bool
+    operator==(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b)
+    { return __a.get() == __b.get(); }
+
+  template<typename _Tp>
+    inline bool
+    operator==(const shared_ptr<_Tp>& __a, nullptr_t)
+    { return __a.get() == nullptr; }
+
+  template<typename _Tp>
+    inline bool
+    operator==(nullptr_t, const shared_ptr<_Tp>& __b)
+    { return nullptr == __b.get(); }
+
+  template<typename _Tp1, typename _Tp2>
+    inline bool
+    operator!=(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b)
+    { return __a.get() != __b.get(); }
+
+  template<typename _Tp>
+    inline bool
+    operator!=(const shared_ptr<_Tp>& __a, nullptr_t)
+    { return __a.get() != nullptr; }
+
+  template<typename _Tp>
+    inline bool
+    operator!=(nullptr_t, const shared_ptr<_Tp>& __b)
+    { return nullptr != __b.get(); }
+
+  template<typename _Tp1, typename _Tp2>
+    inline bool
+    operator<(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b)
+    { return __a.get() < __b.get(); }
+
+  template<typename _Tp>
+    struct less<shared_ptr<_Tp>> : public _Sp_less<shared_ptr<_Tp>>
+    { };
+
+  // 20.8.13.2.9 shared_ptr specialized algorithms.
+  template<typename _Tp>
+    inline void
+    swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b)
+    { __a.swap(__b); }
+
+  // 20.8.13.2.10 shared_ptr casts.
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    static_pointer_cast(const shared_ptr<_Tp1>& __r)
+    { return shared_ptr<_Tp>(__r, static_cast<_Tp*>(__r.get())); }
+
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    const_pointer_cast(const shared_ptr<_Tp1>& __r)
+    { return shared_ptr<_Tp>(__r, const_cast<_Tp*>(__r.get())); }
+
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    dynamic_pointer_cast(const shared_ptr<_Tp1>& __r)
+    {
+      if (_Tp* __p = dynamic_cast<_Tp*>(__r.get()))
+	return shared_ptr<_Tp>(__r, __p);
+      return shared_ptr<_Tp>();
+    }
+
+
+  /**
+   *  @brief  A smart pointer with weak semantics.
+   *
+   *  With forwarding constructors and assignment operators.
+   */
+  template<typename _Tp>
+    class weak_ptr : public __weak_ptr<_Tp>
+    {
+    public:
+      constexpr weak_ptr()
+      : __weak_ptr<_Tp>() { }
+
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	weak_ptr(const weak_ptr<_Tp1>& __r)
+	: __weak_ptr<_Tp>(__r) { }
+
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	weak_ptr(const shared_ptr<_Tp1>& __r)
+	: __weak_ptr<_Tp>(__r) { }
+
+      template<typename _Tp1>
+	weak_ptr&
+	operator=(const weak_ptr<_Tp1>& __r) // never throws
+	{
+	  this->__weak_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+      template<typename _Tp1>
+	weak_ptr&
+	operator=(const shared_ptr<_Tp1>& __r) // never throws
+	{
+	  this->__weak_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+      shared_ptr<_Tp>
+      lock() const // never throws
+      {
+#ifdef __GTHREADS
+	if (this->expired())
+	  return shared_ptr<_Tp>();
+
+	__try
+	  {
+	    return shared_ptr<_Tp>(*this);
+	  }
+	__catch(const bad_weak_ptr&)
+	  {
+	    return shared_ptr<_Tp>();
+	  }
+#else
+	return this->expired() ? shared_ptr<_Tp>() : shared_ptr<_Tp>(*this);
+#endif
+      }
+    };
+
+  // 20.8.13.3.7 weak_ptr specialized algorithms.
+  template<typename _Tp>
+    inline void
+    swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b)
+    { __a.swap(__b); }
+
+
+  /// Primary template owner_less
+  template<typename _Tp>
+    struct owner_less;
+
+  /// Partial specialization of owner_less for shared_ptr.
+  template<typename _Tp>
+    struct owner_less<shared_ptr<_Tp>>
+    : public _Sp_owner_less<shared_ptr<_Tp>, weak_ptr<_Tp>>
+    { };
+
+  /// Partial specialization of owner_less for weak_ptr.
+  template<typename _Tp>
+    struct owner_less<weak_ptr<_Tp>>
+    : public _Sp_owner_less<weak_ptr<_Tp>, shared_ptr<_Tp>>
+    { };
+
+  /**
+   *  @brief Base class allowing use of member function shared_from_this.
+   */
+  template<typename _Tp>
+    class enable_shared_from_this
+    {
+    protected:
+      constexpr enable_shared_from_this() { }
+
+      enable_shared_from_this(const enable_shared_from_this&) { }
+
+      enable_shared_from_this&
+      operator=(const enable_shared_from_this&)
+      { return *this; }
+
+      ~enable_shared_from_this() { }
+
+    public:
+      shared_ptr<_Tp>
+      shared_from_this()
+      { return shared_ptr<_Tp>(this->_M_weak_this); }
+
+      shared_ptr<const _Tp>
+      shared_from_this() const
+      { return shared_ptr<const _Tp>(this->_M_weak_this); }
+
+    private:
+      template<typename _Tp1>
+	void
+	_M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const
+	{ _M_weak_this._M_assign(__p, __n); }
+
+      template<typename _Tp1>
+	friend void
+	__enable_shared_from_this_helper(const __shared_count<>& __pn,
+					 const enable_shared_from_this* __pe,
+					 const _Tp1* __px)
+	{
+	  if (__pe != 0)
+	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+	}
+
+      mutable weak_ptr<_Tp>  _M_weak_this;
+    };
+
+  /**
+   *  @brief  Create an object that is owned by a shared_ptr.
+   *  @param  __a     An allocator.
+   *  @param  __args  Arguments for the @a _Tp object's constructor.
+   *  @return A shared_ptr that owns the newly created object.
+   *  @throw  An exception thrown from @a _Alloc::allocate or from the
+   *          constructor of @a _Tp.
+   *
+   *  A copy of @a __a will be used to allocate memory for the shared_ptr
+   *  and the new object.
+   */
+  template<typename _Tp, typename _Alloc, typename... _Args>
+    inline shared_ptr<_Tp>
+    allocate_shared(const _Alloc& __a, _Args&&... __args)
+    {
+      return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a,
+			     std::forward<_Args>(__args)...);
+    }
+
+  /**
+   *  @brief  Create an object that is owned by a shared_ptr.
+   *  @param  __args  Arguments for the @a _Tp object's constructor.
+   *  @return A shared_ptr that owns the newly created object.
+   *  @throw  std::bad_alloc, or an exception thrown from the
+   *          constructor of @a _Tp.
+   */
+  template<typename _Tp, typename... _Args>
+    inline shared_ptr<_Tp>
+    make_shared(_Args&&... __args)
+    {
+      typedef typename std::remove_const<_Tp>::type _Tp_nc;
+      return allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
+				  std::forward<_Args>(__args)...);
+    }
+
+  /// std::hash specialization for shared_ptr.
+  template<typename _Tp>
+    struct hash<shared_ptr<_Tp>>
+    : public std::unary_function<shared_ptr<_Tp>, size_t>
+    {
+      size_t
+      operator()(const shared_ptr<_Tp>& __s) const
+      { return std::hash<_Tp*>()(__s.get()); }
+    };
+
+  // @} group pointer_abstractions
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _SHARED_PTR_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr_base.h
new file mode 100644
index 000000000..72bc4f046
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/shared_ptr_base.h
@@ -0,0 +1,1385 @@
+// shared_ptr and weak_ptr implementation details -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// GCC Note: Based on files from version 1.32.0 of the Boost library.
+
+//  shared_count.hpp
+//  Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+
+//  shared_ptr.hpp
+//  Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes.
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  weak_ptr.hpp
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  enable_shared_from_this.hpp
+//  Copyright (C) 2002 Peter Dimov
+
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+/** @file bits/shared_ptr_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _SHARED_PTR_BASE_H
+#define _SHARED_PTR_BASE_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /**
+   *  @brief  Exception possibly thrown by @c shared_ptr.
+   *  @ingroup exceptions
+   */
+  class bad_weak_ptr : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw();
+
+    virtual ~bad_weak_ptr() throw();    
+  };
+
+  // Substitute for bad_weak_ptr object in the case of -fno-exceptions.
+  inline void
+  __throw_bad_weak_ptr()
+  {
+#if __EXCEPTIONS
+    throw bad_weak_ptr();
+#else
+    __builtin_abort();
+#endif
+  }
+
+  using __gnu_cxx::_Lock_policy;
+  using __gnu_cxx::__default_lock_policy;
+  using __gnu_cxx::_S_single;
+  using __gnu_cxx::_S_mutex;
+  using __gnu_cxx::_S_atomic;
+
+  // Empty helper class except when the template argument is _S_mutex.
+  template<_Lock_policy _Lp>
+    class _Mutex_base
+    {
+    protected:
+      // The atomic policy uses fully-fenced builtins, single doesn't care.
+      enum { _S_need_barriers = 0 };
+    };
+
+  template<>
+    class _Mutex_base<_S_mutex>
+    : public __gnu_cxx::__mutex
+    {
+    protected:
+      // This policy is used when atomic builtins are not available.
+      // The replacement atomic operations might not have the necessary
+      // memory barriers.
+      enum { _S_need_barriers = 1 };
+    };
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class _Sp_counted_base
+    : public _Mutex_base<_Lp>
+    {
+    public:  
+      _Sp_counted_base()
+      : _M_use_count(1), _M_weak_count(1) { }
+      
+      virtual
+      ~_Sp_counted_base() // nothrow 
+      { }
+  
+      // Called when _M_use_count drops to zero, to release the resources
+      // managed by *this.
+      virtual void
+      _M_dispose() = 0; // nothrow
+      
+      // Called when _M_weak_count drops to zero.
+      virtual void
+      _M_destroy() // nothrow
+      { delete this; }
+      
+      virtual void*
+      _M_get_deleter(const std::type_info&) = 0;
+
+      void
+      _M_add_ref_copy()
+      { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); }
+  
+      void
+      _M_add_ref_lock();
+      
+      void
+      _M_release() // nothrow
+      {
+        // Be race-detector-friendly.  For more info see bits/c++config.
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_use_count);
+	if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1)
+	  {
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count);
+	    _M_dispose();
+	    // There must be a memory barrier between dispose() and destroy()
+	    // to ensure that the effects of dispose() are observed in the
+	    // thread that runs destroy().
+	    // See http://gcc.gnu.org/ml/libstdc++/2005-11/msg00136.html
+	    if (_Mutex_base<_Lp>::_S_need_barriers)
+	      {
+	        _GLIBCXX_READ_MEM_BARRIER;
+	        _GLIBCXX_WRITE_MEM_BARRIER;
+	      }
+
+            // Be race-detector-friendly.  For more info see bits/c++config.
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count);
+	    if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count,
+						       -1) == 1)
+              {
+                _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count);
+	        _M_destroy();
+              }
+	  }
+      }
+  
+      void
+      _M_weak_add_ref() // nothrow
+      { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
+
+      void
+      _M_weak_release() // nothrow
+      {
+        // Be race-detector-friendly. For more info see bits/c++config.
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count);
+	if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1)
+	  {
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count);
+	    if (_Mutex_base<_Lp>::_S_need_barriers)
+	      {
+	        // See _M_release(),
+	        // destroy() must observe results of dispose()
+	        _GLIBCXX_READ_MEM_BARRIER;
+	        _GLIBCXX_WRITE_MEM_BARRIER;
+	      }
+	    _M_destroy();
+	  }
+      }
+  
+      long
+      _M_get_use_count() const // nothrow
+      {
+        // No memory barrier is used here so there is no synchronization
+        // with other threads.
+        return const_cast<const volatile _Atomic_word&>(_M_use_count);
+      }
+
+    private:  
+      _Sp_counted_base(_Sp_counted_base const&);
+      _Sp_counted_base& operator=(_Sp_counted_base const&);
+
+      _Atomic_word  _M_use_count;     // #shared
+      _Atomic_word  _M_weak_count;    // #weak + (#shared != 0)
+    };
+
+  template<>
+    inline void
+    _Sp_counted_base<_S_single>::
+    _M_add_ref_lock()
+    {
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
+	{
+	  _M_use_count = 0;
+	  __throw_bad_weak_ptr();
+	}
+    }
+
+  template<>
+    inline void
+    _Sp_counted_base<_S_mutex>::
+    _M_add_ref_lock()
+    {
+      __gnu_cxx::__scoped_lock sentry(*this);
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
+	{
+	  _M_use_count = 0;
+	  __throw_bad_weak_ptr();
+	}
+    }
+
+  template<> 
+    inline void
+    _Sp_counted_base<_S_atomic>::
+    _M_add_ref_lock()
+    {
+      // Perform lock-free add-if-not-zero operation.
+      _Atomic_word __count;
+      do
+	{
+	  __count = _M_use_count;
+	  if (__count == 0)
+	    __throw_bad_weak_ptr();
+	  
+	  // Replace the current counter value with the old value + 1, as
+	  // long as it's not changed meanwhile. 
+	}
+      while (!__sync_bool_compare_and_swap(&_M_use_count, __count,
+					   __count + 1));
+    }
+
+
+  // Forward declarations.
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __shared_ptr;
+
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __weak_ptr;
+
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __enable_shared_from_this;
+
+  template<typename _Tp>
+    class shared_ptr;
+
+  template<typename _Tp>
+    class weak_ptr;
+
+  template<typename _Tp>
+    struct owner_less;
+
+  template<typename _Tp>
+    class enable_shared_from_this;
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class __weak_count;
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class __shared_count;
+
+
+  // Counted ptr with no deleter or allocator support
+  template<typename _Ptr, _Lock_policy _Lp>
+    class _Sp_counted_ptr : public _Sp_counted_base<_Lp>
+    {
+    public:
+      explicit
+      _Sp_counted_ptr(_Ptr __p)
+      : _M_ptr(__p) { }
+
+      virtual void
+      _M_dispose() // nothrow
+      { delete _M_ptr; }
+
+      virtual void
+      _M_destroy() // nothrow
+      { delete this; }
+
+      virtual void*
+      _M_get_deleter(const std::type_info&)
+      { return 0; }
+
+      _Sp_counted_ptr(const _Sp_counted_ptr&) = delete;
+      _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete;
+
+    protected:
+      _Ptr             _M_ptr;  // copy constructor must not throw
+    };
+
+  template<>
+    inline void
+    _Sp_counted_ptr<nullptr_t, _S_single>::_M_dispose() { }
+
+  template<>
+    inline void
+    _Sp_counted_ptr<nullptr_t, _S_mutex>::_M_dispose() { }
+
+  template<>
+    inline void
+    _Sp_counted_ptr<nullptr_t, _S_atomic>::_M_dispose() { }
+
+  // Support for custom deleter and/or allocator
+  template<typename _Ptr, typename _Deleter, typename _Alloc, _Lock_policy _Lp>
+    class _Sp_counted_deleter : public _Sp_counted_base<_Lp>
+    {
+      typedef typename _Alloc::template
+	  rebind<_Sp_counted_deleter>::other _My_alloc_type;
+
+      // Helper class that stores the Deleter and also acts as an allocator.
+      // Used to dispose of the owned pointer and the internal refcount
+      // Requires that copies of _Alloc can free each other's memory.
+      struct _My_Deleter
+      : public _My_alloc_type    // copy constructor must not throw
+      {
+	_Deleter _M_del;         // copy constructor must not throw
+	_My_Deleter(_Deleter __d, const _Alloc& __a)
+	: _My_alloc_type(__a), _M_del(__d) { }
+      };
+
+    public:
+      // __d(__p) must not throw.
+      _Sp_counted_deleter(_Ptr __p, _Deleter __d)
+      : _M_ptr(__p), _M_del(__d, _Alloc()) { }
+
+      // __d(__p) must not throw.
+      _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a)
+      : _M_ptr(__p), _M_del(__d, __a) { }
+
+      virtual void
+      _M_dispose() // nothrow
+      { _M_del._M_del(_M_ptr); }
+
+      virtual void
+      _M_destroy() // nothrow
+      {
+	_My_alloc_type __a(_M_del);
+	this->~_Sp_counted_deleter();
+	__a.deallocate(this, 1);
+      }
+
+      virtual void*
+      _M_get_deleter(const std::type_info& __ti)
+      {
+#ifdef __GXX_RTTI
+        return __ti == typeid(_Deleter) ? &_M_del._M_del : 0;
+#else
+        return 0;
+#endif
+      }
+
+    protected:
+      _Ptr             _M_ptr;  // copy constructor must not throw
+      _My_Deleter      _M_del;  // copy constructor must not throw
+    };
+
+  // helpers for make_shared / allocate_shared
+
+  template<typename _Tp>
+    struct _Sp_destroy_inplace
+    {
+      void operator()(_Tp* __p) const { if (__p) __p->~_Tp(); }
+    };
+
+  struct _Sp_make_shared_tag { };
+
+  template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
+    class _Sp_counted_ptr_inplace
+    : public _Sp_counted_deleter<_Tp*, _Sp_destroy_inplace<_Tp>, _Alloc, _Lp>
+    {
+      typedef _Sp_counted_deleter<_Tp*, _Sp_destroy_inplace<_Tp>, _Alloc, _Lp>
+	_Base_type;
+
+    public:
+      explicit
+      _Sp_counted_ptr_inplace(_Alloc __a)
+      : _Base_type(static_cast<_Tp*>(0), _Sp_destroy_inplace<_Tp>(), __a)
+      , _M_storage()
+      {
+	void* __p = &_M_storage;
+	::new (__p) _Tp();  // might throw
+	_Base_type::_M_ptr = static_cast<_Tp*>(__p);
+      }
+
+      template<typename... _Args>
+	_Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
+	: _Base_type(static_cast<_Tp*>(0), _Sp_destroy_inplace<_Tp>(), __a)
+	, _M_storage()
+	{
+	  void* __p = &_M_storage;
+	  ::new (__p) _Tp(std::forward<_Args>(__args)...);  // might throw
+	  _Base_type::_M_ptr = static_cast<_Tp*>(__p);
+	}
+
+      // Override because the allocator needs to know the dynamic type
+      virtual void
+      _M_destroy() // nothrow
+      {
+	typedef typename _Alloc::template
+	    rebind<_Sp_counted_ptr_inplace>::other _My_alloc_type;
+	_My_alloc_type __a(_Base_type::_M_del);
+	this->~_Sp_counted_ptr_inplace();
+	__a.deallocate(this, 1);
+      }
+
+      // Sneaky trick so __shared_ptr can get the managed pointer
+      virtual void*
+      _M_get_deleter(const std::type_info& __ti)
+      {
+#ifdef __GXX_RTTI
+	return __ti == typeid(_Sp_make_shared_tag)
+	       ? static_cast<void*>(&_M_storage)
+	       : _Base_type::_M_get_deleter(__ti);
+#else
+        return 0;
+#endif
+      }
+
+    private:
+      typename aligned_storage<sizeof(_Tp), alignment_of<_Tp>::value>::type
+	_M_storage;
+    };
+
+  template<_Lock_policy _Lp>
+    class __shared_count
+    {
+    public:
+      constexpr __shared_count() : _M_pi(0) // nothrow
+      { }
+
+      template<typename _Ptr>
+        explicit
+	__shared_count(_Ptr __p) : _M_pi(0)
+	{
+	  __try
+	    {
+	      _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p);
+	    }
+	  __catch(...)
+	    {
+	      delete __p;
+	      __throw_exception_again;
+	    }
+	}
+
+      template<typename _Ptr, typename _Deleter>
+	__shared_count(_Ptr __p, _Deleter __d) : _M_pi(0)
+	{
+	  // The allocator's value_type doesn't matter, will rebind it anyway.
+	  typedef std::allocator<int> _Alloc;
+	  typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type;
+	  typedef std::allocator<_Sp_cd_type> _Alloc2;
+	  _Alloc2 __a2;
+	  __try
+	    {
+	      _M_pi = __a2.allocate(1);
+	      ::new(static_cast<void*>(_M_pi)) _Sp_cd_type(__p, __d);
+	    }
+	  __catch(...)
+	    {
+	      __d(__p); // Call _Deleter on __p.
+	      if (_M_pi)
+		__a2.deallocate(static_cast<_Sp_cd_type*>(_M_pi), 1);
+	      __throw_exception_again;
+	    }
+	}
+
+      template<typename _Ptr, typename _Deleter, typename _Alloc>
+	__shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0)
+	{
+	  typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type;
+	  typedef typename _Alloc::template rebind<_Sp_cd_type>::other _Alloc2;
+	  _Alloc2 __a2(__a);
+	  __try
+	    {
+	      _M_pi = __a2.allocate(1);
+	      ::new(static_cast<void*>(_M_pi)) _Sp_cd_type(__p, __d, __a);
+	    }
+	  __catch(...)
+	    {
+	      __d(__p); // Call _Deleter on __p.
+	      if (_M_pi)
+		__a2.deallocate(static_cast<_Sp_cd_type*>(_M_pi), 1);
+	      __throw_exception_again;
+	    }
+	}
+
+      template<typename _Tp, typename _Alloc, typename... _Args>
+	__shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a,
+		       _Args&&... __args)
+	: _M_pi(0)
+	{
+	  typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type;
+	  typedef typename _Alloc::template rebind<_Sp_cp_type>::other _Alloc2;
+	  _Alloc2 __a2(__a);
+	  __try
+	    {
+	      _M_pi = __a2.allocate(1);
+	      ::new(static_cast<void*>(_M_pi)) _Sp_cp_type(__a,
+		    std::forward<_Args>(__args)...);
+	    }
+	  __catch(...)
+	    {
+	      if (_M_pi)
+		__a2.deallocate(static_cast<_Sp_cp_type*>(_M_pi), 1);
+	      __throw_exception_again;
+	    }
+	}
+
+#if _GLIBCXX_USE_DEPRECATED
+      // Special case for auto_ptr<_Tp> to provide the strong guarantee.
+      template<typename _Tp>
+        explicit
+	__shared_count(std::auto_ptr<_Tp>&& __r)
+	: _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
+	{ __r.release(); }
+#endif
+
+      // Special case for unique_ptr<_Tp,_Del> to provide the strong guarantee.
+      template<typename _Tp, typename _Del>
+        explicit
+	__shared_count(std::unique_ptr<_Tp, _Del>&& __r)
+	: _M_pi(_S_create_from_up(std::move(__r)))
+	{ __r.release(); }
+
+      // Throw bad_weak_ptr when __r._M_get_use_count() == 0.
+      explicit __shared_count(const __weak_count<_Lp>& __r);
+
+      ~__shared_count() // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_release();
+      }
+
+      __shared_count(const __shared_count& __r)
+      : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_add_ref_copy();
+      }
+
+      __shared_count&
+      operator=(const __shared_count& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != _M_pi)
+	  {
+	    if (__tmp != 0)
+	      __tmp->_M_add_ref_copy();
+	    if (_M_pi != 0)
+	      _M_pi->_M_release();
+	    _M_pi = __tmp;
+	  }
+	return *this;
+      }
+
+      void
+      _M_swap(__shared_count& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	__r._M_pi = _M_pi;
+	_M_pi = __tmp;
+      }
+
+      long
+      _M_get_use_count() const // nothrow
+      { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
+
+      bool
+      _M_unique() const // nothrow
+      { return this->_M_get_use_count() == 1; }
+
+      void*
+      _M_get_deleter(const std::type_info& __ti) const
+      { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; }
+
+      bool
+      _M_less(const __shared_count& __rhs) const
+      { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
+
+      bool
+      _M_less(const __weak_count<_Lp>& __rhs) const
+      { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
+
+      // Friend function injected into enclosing namespace and found by ADL
+      friend inline bool
+      operator==(const __shared_count& __a, const __shared_count& __b)
+      { return __a._M_pi == __b._M_pi; }
+
+    private:
+      friend class __weak_count<_Lp>;
+
+      template<typename _Tp, typename _Del>
+	static _Sp_counted_base<_Lp>*
+	_S_create_from_up(std::unique_ptr<_Tp, _Del>&& __r,
+	  typename std::enable_if<!std::is_reference<_Del>::value>::type* = 0)
+	{
+	  return new _Sp_counted_deleter<_Tp*, _Del, std::allocator<_Tp>,
+	    _Lp>(__r.get(), __r.get_deleter());
+	}
+
+      template<typename _Tp, typename _Del>
+	static _Sp_counted_base<_Lp>*
+	_S_create_from_up(std::unique_ptr<_Tp, _Del>&& __r,
+	  typename std::enable_if<std::is_reference<_Del>::value>::type* = 0)
+	{
+	  typedef typename std::remove_reference<_Del>::type _Del1;
+	  typedef std::reference_wrapper<_Del1> _Del2;
+	  return new _Sp_counted_deleter<_Tp*, _Del2, std::allocator<_Tp>,
+	    _Lp>(__r.get(), std::ref(__r.get_deleter()));
+	}
+
+      _Sp_counted_base<_Lp>*  _M_pi;
+    };
+
+
+  template<_Lock_policy _Lp>
+    class __weak_count
+    {
+    public:
+      constexpr __weak_count() : _M_pi(0) // nothrow
+      { }
+
+      __weak_count(const __shared_count<_Lp>& __r) : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_add_ref();
+      }
+
+      __weak_count(const __weak_count<_Lp>& __r) : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_add_ref();
+      }
+
+      ~__weak_count() // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+      }
+
+      __weak_count<_Lp>&
+      operator=(const __shared_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != 0)
+	  __tmp->_M_weak_add_ref();
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+	_M_pi = __tmp;
+	return *this;
+      }
+
+      __weak_count<_Lp>&
+      operator=(const __weak_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != 0)
+	  __tmp->_M_weak_add_ref();
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+	_M_pi = __tmp;
+	return *this;
+      }
+
+      void
+      _M_swap(__weak_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	__r._M_pi = _M_pi;
+	_M_pi = __tmp;
+      }
+
+      long
+      _M_get_use_count() const // nothrow
+      { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
+
+      bool
+      _M_less(const __weak_count& __rhs) const
+      { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
+
+      bool
+      _M_less(const __shared_count<_Lp>& __rhs) const
+      { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
+
+      // Friend function injected into enclosing namespace and found by ADL
+      friend inline bool
+      operator==(const __weak_count& __a, const __weak_count& __b)
+      { return __a._M_pi == __b._M_pi; }
+
+    private:
+      friend class __shared_count<_Lp>;
+
+      _Sp_counted_base<_Lp>*  _M_pi;
+    };
+
+  // Now that __weak_count is defined we can define this constructor:
+  template<_Lock_policy _Lp>
+    inline __shared_count<_Lp>:: __shared_count(const __weak_count<_Lp>& __r)
+    : _M_pi(__r._M_pi)
+    {
+      if (_M_pi != 0)
+	_M_pi->_M_add_ref_lock();
+      else
+	__throw_bad_weak_ptr();
+    }
+
+
+  // Support for enable_shared_from_this.
+
+  // Friend of __enable_shared_from_this.
+  template<_Lock_policy _Lp, typename _Tp1, typename _Tp2>
+    void
+    __enable_shared_from_this_helper(const __shared_count<_Lp>&,
+				     const __enable_shared_from_this<_Tp1,
+				     _Lp>*, const _Tp2*);
+
+  // Friend of enable_shared_from_this.
+  template<typename _Tp1, typename _Tp2>
+    void
+    __enable_shared_from_this_helper(const __shared_count<>&,
+				     const enable_shared_from_this<_Tp1>*,
+				     const _Tp2*);
+
+  template<_Lock_policy _Lp>
+    inline void
+    __enable_shared_from_this_helper(const __shared_count<_Lp>&, ...)
+    { }
+
+
+  template<typename _Tp, _Lock_policy _Lp>
+    class __shared_ptr
+    {
+    public:
+      typedef _Tp   element_type;
+
+      constexpr __shared_ptr()
+      : _M_ptr(0), _M_refcount() // never throws
+      { }
+
+      template<typename _Tp1>
+	explicit __shared_ptr(_Tp1* __p)
+        : _M_ptr(__p), _M_refcount(__p)
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  static_assert( sizeof(_Tp1) > 0, "incomplete type" );
+	  __enable_shared_from_this_helper(_M_refcount, __p, __p);
+	}
+
+      template<typename _Tp1, typename _Deleter>
+	__shared_ptr(_Tp1* __p, _Deleter __d)
+	: _M_ptr(__p), _M_refcount(__p, __d)
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  // TODO requires _Deleter CopyConstructible and __d(__p) well-formed
+	  __enable_shared_from_this_helper(_M_refcount, __p, __p);
+	}
+
+      template<typename _Tp1, typename _Deleter, typename _Alloc>
+	__shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
+	: _M_ptr(__p), _M_refcount(__p, __d, std::move(__a))
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  // TODO requires _Deleter CopyConstructible and __d(__p) well-formed
+	  __enable_shared_from_this_helper(_M_refcount, __p, __p);
+	}
+
+      template<typename _Deleter>
+	__shared_ptr(nullptr_t __p, _Deleter __d)
+	: _M_ptr(0), _M_refcount(__p, __d)
+	{ }
+
+      template<typename _Deleter, typename _Alloc>
+        __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
+	: _M_ptr(0), _M_refcount(__p, __d, std::move(__a))
+	{ }
+
+      template<typename _Tp1>
+	__shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, _Tp* __p)
+	: _M_ptr(__p), _M_refcount(__r._M_refcount) // never throws
+	{ }
+
+      //  generated copy constructor, assignment, destructor are fine.
+
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	__shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r)
+	: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+	{ }
+
+      __shared_ptr(__shared_ptr&& __r)
+      : _M_ptr(__r._M_ptr), _M_refcount() // never throws
+      {
+	_M_refcount._M_swap(__r._M_refcount);
+	__r._M_ptr = 0;
+      }
+
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	__shared_ptr(__shared_ptr<_Tp1, _Lp>&& __r)
+	: _M_ptr(__r._M_ptr), _M_refcount() // never throws
+	{
+	  _M_refcount._M_swap(__r._M_refcount);
+	  __r._M_ptr = 0;
+	}
+
+      template<typename _Tp1>
+	explicit __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+	: _M_refcount(__r._M_refcount) // may throw
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+
+	  // It is now safe to copy __r._M_ptr, as
+	  // _M_refcount(__r._M_refcount) did not throw.
+	  _M_ptr = __r._M_ptr;
+	}
+
+      // If an exception is thrown this constructor has no effect.
+      template<typename _Tp1, typename _Del>
+	__shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
+	: _M_ptr(__r.get()), _M_refcount()
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  _Tp1* __tmp = __r.get();
+	  _M_refcount = __shared_count<_Lp>(std::move(__r));
+	  __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
+	}
+
+#if _GLIBCXX_USE_DEPRECATED
+      // Postcondition: use_count() == 1 and __r.get() == 0
+      template<typename _Tp1>
+	__shared_ptr(std::auto_ptr<_Tp1>&& __r)
+	: _M_ptr(__r.get()), _M_refcount()
+	{
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  static_assert( sizeof(_Tp1) > 0, "incomplete type" );
+	  _Tp1* __tmp = __r.get();
+	  _M_refcount = __shared_count<_Lp>(std::move(__r));
+	  __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
+	}
+#endif
+
+      /* TODO: use delegating constructor */
+      constexpr __shared_ptr(nullptr_t)
+      : _M_ptr(0), _M_refcount() // never throws
+      { }
+
+      template<typename _Tp1>
+	__shared_ptr&
+	operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws
+	{
+	  _M_ptr = __r._M_ptr;
+	  _M_refcount = __r._M_refcount; // __shared_count::op= doesn't throw
+	  return *this;
+	}
+
+#if _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+	__shared_ptr&
+	operator=(std::auto_ptr<_Tp1>&& __r)
+	{
+	  __shared_ptr(std::move(__r)).swap(*this);
+	  return *this;
+	}
+#endif
+
+      __shared_ptr&
+      operator=(__shared_ptr&& __r)
+      {
+	__shared_ptr(std::move(__r)).swap(*this);
+	return *this;
+      }
+
+      template<class _Tp1>
+	__shared_ptr&
+	operator=(__shared_ptr<_Tp1, _Lp>&& __r)
+	{
+	  __shared_ptr(std::move(__r)).swap(*this);
+	  return *this;
+	}
+
+      template<typename _Tp1, typename _Del>
+	__shared_ptr&
+	operator=(std::unique_ptr<_Tp1, _Del>&& __r)
+	{
+	  __shared_ptr(std::move(__r)).swap(*this);
+	  return *this;
+	}
+
+      void
+      reset() // never throws
+      { __shared_ptr().swap(*this); }
+
+      template<typename _Tp1>
+	void
+	reset(_Tp1* __p) // _Tp1 must be complete.
+	{
+	  // Catch self-reset errors.
+	  _GLIBCXX_DEBUG_ASSERT(__p == 0 || __p != _M_ptr);
+	  __shared_ptr(__p).swap(*this);
+	}
+
+      template<typename _Tp1, typename _Deleter>
+	void
+	reset(_Tp1* __p, _Deleter __d)
+	{ __shared_ptr(__p, __d).swap(*this); }
+
+      template<typename _Tp1, typename _Deleter, typename _Alloc>
+	void
+        reset(_Tp1* __p, _Deleter __d, _Alloc __a)
+        { __shared_ptr(__p, __d, std::move(__a)).swap(*this); }
+
+      // Allow class instantiation when _Tp is [cv-qual] void.
+      typename std::add_lvalue_reference<_Tp>::type
+      operator*() const // never throws
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return *_M_ptr;
+      }
+
+      _Tp*
+      operator->() const // never throws
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return _M_ptr;
+      }
+
+      _Tp*
+      get() const // never throws
+      { return _M_ptr; }
+
+      explicit operator bool() const // never throws
+      { return _M_ptr == 0 ? false : true; }
+
+      bool
+      unique() const // never throws
+      { return _M_refcount._M_unique(); }
+
+      long
+      use_count() const // never throws
+      { return _M_refcount._M_get_use_count(); }
+
+      void
+      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
+      {
+	std::swap(_M_ptr, __other._M_ptr);
+	_M_refcount._M_swap(__other._M_refcount);
+      }
+
+      template<typename _Tp1>
+	bool
+	owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const
+	{ return _M_refcount._M_less(__rhs._M_refcount); }
+
+      template<typename _Tp1>
+	bool
+	owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const
+	{ return _M_refcount._M_less(__rhs._M_refcount); }
+
+#ifdef __GXX_RTTI
+    protected:
+      // This constructor is non-standard, it is used by allocate_shared.
+      template<typename _Alloc, typename... _Args>
+	__shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+		     _Args&&... __args)
+	: _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a,
+				std::forward<_Args>(__args)...)
+	{
+	  // _M_ptr needs to point to the newly constructed object.
+	  // This relies on _Sp_counted_ptr_inplace::_M_get_deleter.
+	  void* __p = _M_refcount._M_get_deleter(typeid(__tag));
+	  _M_ptr = static_cast<_Tp*>(__p);
+	  __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr);
+	}
+#else
+      template<typename _Alloc>
+        struct _Deleter
+        {
+          void operator()(_Tp* __ptr)
+          {
+            _M_alloc.destroy(__ptr);
+            _M_alloc.deallocate(__ptr, 1);
+          }
+          _Alloc _M_alloc;
+        };
+
+      template<typename _Alloc, typename... _Args>
+	__shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
+		     _Args&&... __args)
+	: _M_ptr(), _M_refcount()
+        {
+	  typedef typename _Alloc::template rebind<_Tp>::other _Alloc2;
+          _Deleter<_Alloc2> __del = { _Alloc2(__a) };
+          _M_ptr = __del._M_alloc.allocate(1);
+	  __try
+	    {
+              __del._M_alloc.construct(_M_ptr, std::forward<_Args>(__args)...);
+	    }
+	  __catch(...)
+	    {
+              __del._M_alloc.deallocate(_M_ptr, 1);
+	      __throw_exception_again;
+	    }
+          __shared_count<_Lp> __count(_M_ptr, __del, __del._M_alloc);
+          _M_refcount._M_swap(__count);
+	  __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr);
+        }
+#endif
+
+      template<typename _Tp1, _Lock_policy _Lp1, typename _Alloc,
+	       typename... _Args>
+	friend __shared_ptr<_Tp1, _Lp1>
+	__allocate_shared(const _Alloc& __a, _Args&&... __args);
+
+    private:
+      void*
+      _M_get_deleter(const std::type_info& __ti) const
+      { return _M_refcount._M_get_deleter(__ti); }
+
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
+
+      template<typename _Del, typename _Tp1, _Lock_policy _Lp1>
+	friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&);
+
+      _Tp*	   	   _M_ptr;         // Contained pointer.
+      __shared_count<_Lp>  _M_refcount;    // Reference counter.
+    };
+
+
+  // 20.8.13.2.7 shared_ptr comparisons
+  template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
+    inline bool
+    operator==(const __shared_ptr<_Tp1, _Lp>& __a,
+	       const __shared_ptr<_Tp2, _Lp>& __b)
+    { return __a.get() == __b.get(); }
+
+  template<typename _Tp, _Lock_policy _Lp>
+    inline bool
+    operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t)
+    { return __a.get() == nullptr; }
+
+  template<typename _Tp, _Lock_policy _Lp>
+    inline bool
+    operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __b)
+    { return nullptr == __b.get(); }
+
+  template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
+    inline bool
+    operator!=(const __shared_ptr<_Tp1, _Lp>& __a,
+	       const __shared_ptr<_Tp2, _Lp>& __b)
+    { return __a.get() != __b.get(); }
+
+  template<typename _Tp, _Lock_policy _Lp>
+    inline bool
+    operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t)
+    { return __a.get() != nullptr; }
+
+  template<typename _Tp, _Lock_policy _Lp>
+    inline bool
+    operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __b)
+    { return nullptr != __b.get(); }
+
+  template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
+    inline bool
+    operator<(const __shared_ptr<_Tp1, _Lp>& __a,
+	      const __shared_ptr<_Tp2, _Lp>& __b)
+    { return __a.get() < __b.get(); }
+
+  template<typename _Sp>
+    struct _Sp_less : public binary_function<_Sp, _Sp, bool>
+    {
+      bool
+      operator()(const _Sp& __lhs, const _Sp& __rhs) const
+      {
+	typedef typename _Sp::element_type element_type;
+	return std::less<element_type*>()(__lhs.get(), __rhs.get());
+      }
+    };
+
+  template<typename _Tp, _Lock_policy _Lp>
+    struct less<__shared_ptr<_Tp, _Lp>>
+    : public _Sp_less<__shared_ptr<_Tp, _Lp>>
+    { };
+
+  // 2.2.3.8 shared_ptr specialized algorithms.
+  template<typename _Tp, _Lock_policy _Lp>
+    inline void
+    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
+    { __a.swap(__b); }
+
+  // 2.2.3.9 shared_ptr casts
+
+  // The seemingly equivalent code:
+  // shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))
+  // will eventually result in undefined behaviour, attempting to
+  // delete the same object twice.
+  /// static_pointer_cast
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    { return __shared_ptr<_Tp, _Lp>(__r, static_cast<_Tp*>(__r.get())); }
+
+  // The seemingly equivalent code:
+  // shared_ptr<_Tp, _Lp>(const_cast<_Tp*>(__r.get()))
+  // will eventually result in undefined behaviour, attempting to
+  // delete the same object twice.
+  /// const_pointer_cast
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    { return __shared_ptr<_Tp, _Lp>(__r, const_cast<_Tp*>(__r.get())); }
+
+  // The seemingly equivalent code:
+  // shared_ptr<_Tp, _Lp>(dynamic_cast<_Tp*>(__r.get()))
+  // will eventually result in undefined behaviour, attempting to
+  // delete the same object twice.
+  /// dynamic_pointer_cast
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    {
+      if (_Tp* __p = dynamic_cast<_Tp*>(__r.get()))
+	return __shared_ptr<_Tp, _Lp>(__r, __p);
+      return __shared_ptr<_Tp, _Lp>();
+    }
+
+
+  template<typename _Tp, _Lock_policy _Lp>
+    class __weak_ptr
+    {
+    public:
+      typedef _Tp element_type;
+
+      constexpr __weak_ptr()
+      : _M_ptr(0), _M_refcount() // never throws
+      { }
+
+      // Generated copy constructor, assignment, destructor are fine.
+
+      // The "obvious" converting constructor implementation:
+      //
+      //  template<typename _Tp1>
+      //    __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+      //    : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+      //    { }
+      //
+      // has a serious problem.
+      //
+      //  __r._M_ptr may already have been invalidated. The _M_ptr(__r._M_ptr)
+      //  conversion may require access to *__r._M_ptr (virtual inheritance).
+      //
+      // It is not possible to avoid spurious access violations since
+      // in multithreaded programs __r._M_ptr may be invalidated at any point.
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	__weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+	: _M_refcount(__r._M_refcount) // never throws
+        { _M_ptr = __r.lock().get(); }
+
+      template<typename _Tp1, typename = typename
+	       std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
+	__weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r)
+	: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+	{ }
+
+      template<typename _Tp1>
+	__weak_ptr&
+	operator=(const __weak_ptr<_Tp1, _Lp>& __r) // never throws
+	{
+	  _M_ptr = __r.lock().get();
+	  _M_refcount = __r._M_refcount;
+	  return *this;
+	}
+
+      template<typename _Tp1>
+	__weak_ptr&
+	operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws
+	{
+	  _M_ptr = __r._M_ptr;
+	  _M_refcount = __r._M_refcount;
+	  return *this;
+	}
+
+      __shared_ptr<_Tp, _Lp>
+      lock() const // never throws
+      {
+#ifdef __GTHREADS
+	// Optimization: avoid throw overhead.
+	if (expired())
+	  return __shared_ptr<element_type, _Lp>();
+
+	__try
+	  {
+	    return __shared_ptr<element_type, _Lp>(*this);
+	  }
+	__catch(const bad_weak_ptr&)
+	  {
+	    // Q: How can we get here?
+	    // A: Another thread may have invalidated r after the
+	    //    use_count test above.
+	    return __shared_ptr<element_type, _Lp>();
+	  }
+
+#else
+	// Optimization: avoid try/catch overhead when single threaded.
+	return expired() ? __shared_ptr<element_type, _Lp>()
+			 : __shared_ptr<element_type, _Lp>(*this);
+
+#endif
+      } // XXX MT
+
+      long
+      use_count() const // never throws
+      { return _M_refcount._M_get_use_count(); }
+
+      bool
+      expired() const // never throws
+      { return _M_refcount._M_get_use_count() == 0; }
+
+      template<typename _Tp1>
+	bool
+	owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const
+	{ return _M_refcount._M_less(__rhs._M_refcount); }
+
+      template<typename _Tp1>
+	bool
+	owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const
+	{ return _M_refcount._M_less(__rhs._M_refcount); }
+
+      void
+      reset() // never throws
+      { __weak_ptr().swap(*this); }
+
+      void
+      swap(__weak_ptr& __s) // never throws
+      {
+	std::swap(_M_ptr, __s._M_ptr);
+	_M_refcount._M_swap(__s._M_refcount);
+      }
+
+    private:
+      // Used by __enable_shared_from_this.
+      void
+      _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount)
+      {
+	_M_ptr = __ptr;
+	_M_refcount = __refcount;
+      }
+
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
+      friend class __enable_shared_from_this<_Tp, _Lp>;
+      friend class enable_shared_from_this<_Tp>;
+
+      _Tp*	 	 _M_ptr;         // Contained pointer.
+      __weak_count<_Lp>  _M_refcount;    // Reference counter.
+    };
+
+  // 20.8.13.3.7 weak_ptr specialized algorithms.
+  template<typename _Tp, _Lock_policy _Lp>
+    inline void
+    swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b)
+    { __a.swap(__b); }
+
+  template<typename _Tp, typename _Tp1>
+    struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __lhs, const _Tp& __rhs) const
+      { return __lhs.owner_before(__rhs); }
+
+      bool
+      operator()(const _Tp& __lhs, const _Tp1& __rhs) const
+      { return __lhs.owner_before(__rhs); }
+
+      bool
+      operator()(const _Tp1& __lhs, const _Tp& __rhs) const
+      { return __lhs.owner_before(__rhs); }
+    };
+
+  template<typename _Tp, _Lock_policy _Lp>
+    struct owner_less<__shared_ptr<_Tp, _Lp>>
+    : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>>
+    { };
+
+  template<typename _Tp, _Lock_policy _Lp>
+    struct owner_less<__weak_ptr<_Tp, _Lp>>
+    : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>>
+    { };
+
+
+  template<typename _Tp, _Lock_policy _Lp>
+    class __enable_shared_from_this
+    {
+    protected:
+      constexpr __enable_shared_from_this() { }
+
+      __enable_shared_from_this(const __enable_shared_from_this&) { }
+
+      __enable_shared_from_this&
+      operator=(const __enable_shared_from_this&)
+      { return *this; }
+
+      ~__enable_shared_from_this() { }
+
+    public:
+      __shared_ptr<_Tp, _Lp>
+      shared_from_this()
+      { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); }
+
+      __shared_ptr<const _Tp, _Lp>
+      shared_from_this() const
+      { return __shared_ptr<const _Tp, _Lp>(this->_M_weak_this); }
+
+    private:
+      template<typename _Tp1>
+	void
+	_M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const
+	{ _M_weak_this._M_assign(__p, __n); }
+
+      template<typename _Tp1>
+	friend void
+	__enable_shared_from_this_helper(const __shared_count<_Lp>& __pn,
+					 const __enable_shared_from_this* __pe,
+					 const _Tp1* __px)
+	{
+	  if (__pe != 0)
+	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+	}
+
+      mutable __weak_ptr<_Tp, _Lp>  _M_weak_this;
+    };
+
+
+  template<typename _Tp, _Lock_policy _Lp, typename _Alloc, typename... _Args>
+    inline __shared_ptr<_Tp, _Lp>
+    __allocate_shared(const _Alloc& __a, _Args&&... __args)
+    {
+      return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a,
+				    std::forward<_Args>(__args)...);
+    }
+
+  template<typename _Tp, _Lock_policy _Lp, typename... _Args>
+    inline __shared_ptr<_Tp, _Lp>
+    __make_shared(_Args&&... __args)
+    {
+      typedef typename std::remove_const<_Tp>::type _Tp_nc;
+      return __allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(),
+					 std::forward<_Args>(__args)...);
+    }
+
+  /// std::hash specialization for __shared_ptr.
+  template<typename _Tp, _Lock_policy _Lp>
+    struct hash<__shared_ptr<_Tp, _Lp>>
+    : public std::unary_function<__shared_ptr<_Tp, _Lp>, size_t>
+    {
+      size_t
+      operator()(const __shared_ptr<_Tp, _Lp>& __s) const
+      { return std::hash<_Tp*>()(__s.get()); }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _SHARED_PTR_BASE_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/slice_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/slice_array.h
new file mode 100644
index 000000000..3afae22d6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/slice_array.h
@@ -0,0 +1,275 @@
+// The template and inlines for the -*- C++ -*- slice_array class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2009,
+// 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/slice_array.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _SLICE_ARRAY_H
+#define _SLICE_ARRAY_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  /**
+   *  @brief  Class defining one-dimensional subset of an array.
+   *
+   *  The slice class represents a one-dimensional subset of an array,
+   *  specified by three parameters: start offset, size, and stride.  The
+   *  start offset is the index of the first element of the array that is part
+   *  of the subset.  The size is the total number of elements in the subset.
+   *  Stride is the distance between each successive array element to include
+   *  in the subset.
+   *
+   *  For example, with an array of size 10, and a slice with offset 1, size 3
+   *  and stride 2, the subset consists of array elements 1, 3, and 5.
+   */
+  class slice
+  {
+  public:
+    ///  Construct an empty slice.
+    slice();
+
+    /**
+     *  @brief  Construct a slice.
+     *
+     *  @param  o  Offset in array of first element.
+     *  @param  d  Number of elements in slice.
+     *  @param  s  Stride between array elements.
+     */
+    slice(size_t, size_t, size_t);
+
+    ///  Return array offset of first slice element.
+    size_t start() const;
+    ///  Return size of slice.
+    size_t size() const;
+    ///  Return array stride of slice.
+    size_t stride() const;
+
+  private:
+    size_t _M_off;                      // offset
+    size_t _M_sz;			// size
+    size_t _M_st;			// stride unit
+  };
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 543. valarray slice default constructor
+  inline
+  slice::slice() 
+  : _M_off(0), _M_sz(0), _M_st(0) {}
+
+  inline
+  slice::slice(size_t __o, size_t __d, size_t __s)
+  : _M_off(__o), _M_sz(__d), _M_st(__s) {}
+
+  inline size_t
+  slice::start() const
+  { return _M_off; }
+
+  inline size_t
+  slice::size() const
+  { return _M_sz; }
+
+  inline size_t
+  slice::stride() const
+  { return _M_st; }
+
+  /**
+   *  @brief  Reference to one-dimensional subset of an array.
+   *
+   *  A slice_array is a reference to the actual elements of an array
+   *  specified by a slice.  The way to get a slice_array is to call
+   *  operator[](slice) on a valarray.  The returned slice_array then permits
+   *  carrying operations out on the referenced subset of elements in the
+   *  original valarray.  For example, operator+=(valarray) will add values
+   *  to the subset of elements in the underlying valarray this slice_array
+   *  refers to.
+   *
+   *  @param  Tp  Element type.
+   */
+  template<typename _Tp>
+    class slice_array
+    {
+    public:
+      typedef _Tp value_type;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 253. valarray helper functions are almost entirely useless
+
+      ///  Copy constructor.  Both slices refer to the same underlying array.
+      slice_array(const slice_array&);
+
+      ///  Assignment operator.  Assigns slice elements to corresponding
+      ///  elements of @a a.
+      slice_array& operator=(const slice_array&);
+
+      ///  Assign slice elements to corresponding elements of @a v.
+      void operator=(const valarray<_Tp>&) const;
+      ///  Multiply slice elements by corresponding elements of @a v.
+      void operator*=(const valarray<_Tp>&) const;
+      ///  Divide slice elements by corresponding elements of @a v.
+      void operator/=(const valarray<_Tp>&) const;
+      ///  Modulo slice elements by corresponding elements of @a v.
+      void operator%=(const valarray<_Tp>&) const;
+      ///  Add corresponding elements of @a v to slice elements.
+      void operator+=(const valarray<_Tp>&) const;
+      ///  Subtract corresponding elements of @a v from slice elements.
+      void operator-=(const valarray<_Tp>&) const;
+      ///  Logical xor slice elements with corresponding elements of @a v.
+      void operator^=(const valarray<_Tp>&) const;
+      ///  Logical and slice elements with corresponding elements of @a v.
+      void operator&=(const valarray<_Tp>&) const;
+      ///  Logical or slice elements with corresponding elements of @a v.
+      void operator|=(const valarray<_Tp>&) const;
+      ///  Left shift slice elements by corresponding elements of @a v.
+      void operator<<=(const valarray<_Tp>&) const;
+      ///  Right shift slice elements by corresponding elements of @a v.
+      void operator>>=(const valarray<_Tp>&) const;
+      ///  Assign all slice elements to @a t.
+      void operator=(const _Tp &) const;
+      //        ~slice_array ();
+
+      template<class _Dom>
+        void operator=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator*=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator/=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator%=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator+=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator-=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator^=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator&=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator|=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator<<=(const _Expr<_Dom, _Tp>&) const;
+      template<class _Dom>
+	void operator>>=(const _Expr<_Dom, _Tp>&) const;
+
+    private:
+      friend class valarray<_Tp>;
+      slice_array(_Array<_Tp>, const slice&);
+
+      const size_t      _M_sz;
+      const size_t      _M_stride;
+      const _Array<_Tp> _M_array;
+
+      // not implemented
+      slice_array();
+    };
+
+  template<typename _Tp>
+    inline
+    slice_array<_Tp>::slice_array(_Array<_Tp> __a, const slice& __s)
+    : _M_sz(__s.size()), _M_stride(__s.stride()),
+      _M_array(__a.begin() + __s.start()) {}
+
+  template<typename _Tp>
+    inline
+    slice_array<_Tp>::slice_array(const slice_array<_Tp>& a)
+    : _M_sz(a._M_sz), _M_stride(a._M_stride), _M_array(a._M_array) {}
+
+  //    template<typename _Tp>
+  //    inline slice_array<_Tp>::~slice_array () {}
+
+  template<typename _Tp>
+    inline slice_array<_Tp>&
+    slice_array<_Tp>::operator=(const slice_array<_Tp>& __a)
+    {
+      std::__valarray_copy(__a._M_array, __a._M_sz, __a._M_stride,
+			   _M_array, _M_stride);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline void
+    slice_array<_Tp>::operator=(const _Tp& __t) const
+    { std::__valarray_fill(_M_array, _M_sz, _M_stride, __t); }
+
+  template<typename _Tp>
+    inline void
+    slice_array<_Tp>::operator=(const valarray<_Tp>& __v) const
+    { std::__valarray_copy(_Array<_Tp>(__v), _M_array, _M_sz, _M_stride); }
+
+  template<typename _Tp>
+  template<class _Dom>
+    inline void
+    slice_array<_Tp>::operator=(const _Expr<_Dom,_Tp>& __e) const
+    { std::__valarray_copy(__e, _M_sz, _M_array, _M_stride); }
+
+#undef _DEFINE_VALARRAY_OPERATOR
+#define _DEFINE_VALARRAY_OPERATOR(_Op,_Name)				\
+  template<typename _Tp>						\
+    inline void								\
+    slice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const	\
+    {									\
+      _Array_augmented_##_Name(_M_array, _M_sz, _M_stride, _Array<_Tp>(__v));\
+    }									\
+									\
+  template<typename _Tp>                                                \
+    template<class _Dom>				                \
+      inline void							\
+      slice_array<_Tp>::operator _Op##=(const _Expr<_Dom,_Tp>& __e) const\
+      {									\
+	  _Array_augmented_##_Name(_M_array, _M_stride, __e, _M_sz);	\
+      }
+
+
+_DEFINE_VALARRAY_OPERATOR(*, __multiplies)
+_DEFINE_VALARRAY_OPERATOR(/, __divides)
+_DEFINE_VALARRAY_OPERATOR(%, __modulus)
+_DEFINE_VALARRAY_OPERATOR(+, __plus)
+_DEFINE_VALARRAY_OPERATOR(-, __minus)
+_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor)
+_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and)
+_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or)
+_DEFINE_VALARRAY_OPERATOR(<<, __shift_left)
+_DEFINE_VALARRAY_OPERATOR(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_OPERATOR
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _SLICE_ARRAY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/sstream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/sstream.tcc
new file mode 100644
index 000000000..89b9a547c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/sstream.tcc
@@ -0,0 +1,290 @@
+// String based streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/sstream.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{sstream}
+ */
+
+//
+// ISO C++ 14882: 27.7  String-based streams
+//
+
+#ifndef _SSTREAM_TCC
+#define _SSTREAM_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template <class _CharT, class _Traits, class _Alloc>
+    typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    pbackfail(int_type __c)
+    {
+      int_type __ret = traits_type::eof();
+      if (this->eback() < this->gptr())
+	{
+	  // Try to put back __c into input sequence in one of three ways.
+	  // Order these tests done in is unspecified by the standard.
+	  const bool __testeof = traits_type::eq_int_type(__c, __ret);
+	  if (!__testeof)
+	    {
+	      const bool __testeq = traits_type::eq(traits_type::
+						    to_char_type(__c),
+						    this->gptr()[-1]);	  
+	      const bool __testout = this->_M_mode & ios_base::out;
+	      if (__testeq || __testout)
+		{
+		  this->gbump(-1);
+		  if (!__testeq)
+		    *this->gptr() = traits_type::to_char_type(__c);
+		  __ret = __c;
+		}
+	    }
+	  else
+	    {
+	      this->gbump(-1);
+	      __ret = traits_type::not_eof(__c);
+	    }
+	}
+      return __ret;
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    overflow(int_type __c)
+    {
+      const bool __testout = this->_M_mode & ios_base::out;
+      if (__builtin_expect(!__testout, false))
+	return traits_type::eof();
+
+      const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
+      if (__builtin_expect(__testeof, false))
+	return traits_type::not_eof(__c);
+
+      const __size_type __capacity = _M_string.capacity();
+      const __size_type __max_size = _M_string.max_size();
+      const bool __testput = this->pptr() < this->epptr();
+      if (__builtin_expect(!__testput && __capacity == __max_size, false))
+	return traits_type::eof();
+
+      // Try to append __c into output sequence in one of two ways.
+      // Order these tests done in is unspecified by the standard.
+      const char_type __conv = traits_type::to_char_type(__c);
+      if (!__testput)
+	{
+	  // NB: Start ostringstream buffers at 512 chars.  This is an
+	  // experimental value (pronounced "arbitrary" in some of the
+	  // hipper English-speaking countries), and can be changed to
+	  // suit particular needs.
+	  //
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 169. Bad efficiency of overflow() mandated
+	  // 432. stringbuf::overflow() makes only one write position
+	  //      available
+	  const __size_type __opt_len = std::max(__size_type(2 * __capacity),
+						 __size_type(512));
+	  const __size_type __len = std::min(__opt_len, __max_size);
+	  __string_type __tmp;
+	  __tmp.reserve(__len);
+	  if (this->pbase())
+	    __tmp.assign(this->pbase(), this->epptr() - this->pbase());
+	  __tmp.push_back(__conv);
+	  _M_string.swap(__tmp);
+	  _M_sync(const_cast<char_type*>(_M_string.data()),
+		  this->gptr() - this->eback(), this->pptr() - this->pbase());
+	}
+      else
+	*this->pptr() = __conv;
+      this->pbump(1);
+      return __c;
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    underflow()
+    {
+      int_type __ret = traits_type::eof();
+      const bool __testin = this->_M_mode & ios_base::in;
+      if (__testin)
+	{
+	  // Update egptr() to match the actual string end.
+	  _M_update_egptr();
+
+	  if (this->gptr() < this->egptr())
+	    __ret = traits_type::to_int_type(*this->gptr());
+	}
+      return __ret;
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode)
+    {
+      pos_type __ret =  pos_type(off_type(-1));
+      bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
+      bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
+      const bool __testboth = __testin && __testout && __way != ios_base::cur;
+      __testin &= !(__mode & ios_base::out);
+      __testout &= !(__mode & ios_base::in);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 453. basic_stringbuf::seekoff need not always fail for an empty stream.
+      const char_type* __beg = __testin ? this->eback() : this->pbase();
+      if ((__beg || !__off) && (__testin || __testout || __testboth))
+	{
+	  _M_update_egptr();
+
+	  off_type __newoffi = __off;
+	  off_type __newoffo = __newoffi;
+	  if (__way == ios_base::cur)
+	    {
+	      __newoffi += this->gptr() - __beg;
+	      __newoffo += this->pptr() - __beg;
+	    }
+	  else if (__way == ios_base::end)
+	    __newoffo = __newoffi += this->egptr() - __beg;
+
+	  if ((__testin || __testboth)
+	      && __newoffi >= 0
+	      && this->egptr() - __beg >= __newoffi)
+	    {
+	      this->setg(this->eback(), this->eback() + __newoffi,
+			 this->egptr());
+	      __ret = pos_type(__newoffi);
+	    }
+	  if ((__testout || __testboth)
+	      && __newoffo >= 0
+	      && this->egptr() - __beg >= __newoffo)
+	    {
+	      _M_pbump(this->pbase(), this->epptr(), __newoffo);
+	      __ret = pos_type(__newoffo);
+	    }
+	}
+      return __ret;
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    seekpos(pos_type __sp, ios_base::openmode __mode)
+    {
+      pos_type __ret =  pos_type(off_type(-1));
+      const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
+      const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
+
+      const char_type* __beg = __testin ? this->eback() : this->pbase();
+      if ((__beg || !off_type(__sp)) && (__testin || __testout))
+	{
+	  _M_update_egptr();
+
+	  const off_type __pos(__sp);
+	  const bool __testpos = (0 <= __pos
+				  && __pos <= this->egptr() - __beg);
+	  if (__testpos)
+	    {
+	      if (__testin)
+		this->setg(this->eback(), this->eback() + __pos,
+			   this->egptr());
+	      if (__testout)
+		_M_pbump(this->pbase(), this->epptr(), __pos);
+	      __ret = __sp;
+	    }
+	}
+      return __ret;
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    void
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    _M_sync(char_type* __base, __size_type __i, __size_type __o)
+    {
+      const bool __testin = _M_mode & ios_base::in;
+      const bool __testout = _M_mode & ios_base::out;
+      char_type* __endg = __base + _M_string.size();
+      char_type* __endp = __base + _M_string.capacity();
+
+      if (__base != _M_string.data())
+	{
+	  // setbuf: __i == size of buffer area (_M_string.size() == 0).
+	  __endg += __i;
+	  __i = 0;
+	  __endp = __endg;
+	}
+
+      if (__testin)
+	this->setg(__base, __base + __i, __endg);
+      if (__testout)
+	{
+	  _M_pbump(__base, __endp, __o);
+	  // egptr() always tracks the string end.  When !__testin,
+	  // for the correct functioning of the streambuf inlines
+	  // the other get area pointers are identical.
+	  if (!__testin)
+	    this->setg(__endg, __endg, __endg);
+	}
+    }
+
+  template <class _CharT, class _Traits, class _Alloc>
+    void
+    basic_stringbuf<_CharT, _Traits, _Alloc>::
+    _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off)
+    {
+      this->setp(__pbeg, __pend);
+      while (__off > __gnu_cxx::__numeric_traits<int>::__max)
+	{
+	  this->pbump(__gnu_cxx::__numeric_traits<int>::__max);
+	  __off -= __gnu_cxx::__numeric_traits<int>::__max;
+	}
+      this->pbump(__off);
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_stringbuf<char>;
+  extern template class basic_istringstream<char>;
+  extern template class basic_ostringstream<char>;
+  extern template class basic_stringstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_stringbuf<wchar_t>;
+  extern template class basic_istringstream<wchar_t>;
+  extern template class basic_ostringstream<wchar_t>;
+  extern template class basic_stringstream<wchar_t>;
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algo.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algo.h
new file mode 100644
index 000000000..5fc561e25
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algo.h
@@ -0,0 +1,6201 @@
+// Algorithm implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_algo.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{algorithm}
+ */
+
+#ifndef _STL_ALGO_H
+#define _STL_ALGO_H 1
+
+#include <cstdlib>             // for rand
+#include <bits/algorithmfwd.h>
+#include <bits/stl_heap.h>
+#include <bits/stl_tempbuf.h>  // for _Temporary_buffer
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <random>     // for std::uniform_int_distribution
+#include <functional> // for std::bind
+#endif
+
+// See concept_check.h for the __glibcxx_*_requires macros.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// Swaps the median value of *__a, *__b and *__c to *__a
+  template<typename _Iterator>
+    void
+    __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_Iterator>::value_type>)
+
+      if (*__a < *__b)
+	{
+	  if (*__b < *__c)
+	    std::iter_swap(__a, __b);
+	  else if (*__a < *__c)
+	    std::iter_swap(__a, __c);
+	}
+      else if (*__a < *__c)
+	return;
+      else if (*__b < *__c)
+	std::iter_swap(__a, __c);
+      else
+	std::iter_swap(__a, __b);
+    }
+
+  /// Swaps the median value of *__a, *__b and *__c under __comp to *__a
+  template<typename _Iterator, typename _Compare>
+    void
+    __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c,
+			_Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool,
+	    typename iterator_traits<_Iterator>::value_type,
+	    typename iterator_traits<_Iterator>::value_type>)
+
+      if (__comp(*__a, *__b))
+	{
+	  if (__comp(*__b, *__c))
+	    std::iter_swap(__a, __b);
+	  else if (__comp(*__a, *__c))
+	    std::iter_swap(__a, __c);
+	}
+      else if (__comp(*__a, *__c))
+	return;
+      else if (__comp(*__b, *__c))
+	std::iter_swap(__a, __c);
+      else
+	std::iter_swap(__a, __b);
+    }
+
+  // for_each
+
+  /// This is an overload used by find() for the Input Iterator case.
+  template<typename _InputIterator, typename _Tp>
+    inline _InputIterator
+    __find(_InputIterator __first, _InputIterator __last,
+	   const _Tp& __val, input_iterator_tag)
+    {
+      while (__first != __last && !(*__first == __val))
+	++__first;
+      return __first;
+    }
+
+  /// This is an overload used by find_if() for the Input Iterator case.
+  template<typename _InputIterator, typename _Predicate>
+    inline _InputIterator
+    __find_if(_InputIterator __first, _InputIterator __last,
+	      _Predicate __pred, input_iterator_tag)
+    {
+      while (__first != __last && !bool(__pred(*__first)))
+	++__first;
+      return __first;
+    }
+
+  /// This is an overload used by find() for the RAI case.
+  template<typename _RandomAccessIterator, typename _Tp>
+    _RandomAccessIterator
+    __find(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	   const _Tp& __val, random_access_iterator_tag)
+    {
+      typename iterator_traits<_RandomAccessIterator>::difference_type
+	__trip_count = (__last - __first) >> 2;
+
+      for (; __trip_count > 0; --__trip_count)
+	{
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+	}
+
+      switch (__last - __first)
+	{
+	case 3:
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+	case 2:
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+	case 1:
+	  if (*__first == __val)
+	    return __first;
+	  ++__first;
+	case 0:
+	default:
+	  return __last;
+	}
+    }
+
+  /// This is an overload used by find_if() for the RAI case.
+  template<typename _RandomAccessIterator, typename _Predicate>
+    _RandomAccessIterator
+    __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      _Predicate __pred, random_access_iterator_tag)
+    {
+      typename iterator_traits<_RandomAccessIterator>::difference_type
+	__trip_count = (__last - __first) >> 2;
+
+      for (; __trip_count > 0; --__trip_count)
+	{
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+	}
+
+      switch (__last - __first)
+	{
+	case 3:
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+	case 2:
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+	case 1:
+	  if (__pred(*__first))
+	    return __first;
+	  ++__first;
+	case 0:
+	default:
+	  return __last;
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /// This is an overload used by find_if_not() for the Input Iterator case.
+  template<typename _InputIterator, typename _Predicate>
+    inline _InputIterator
+    __find_if_not(_InputIterator __first, _InputIterator __last,
+		  _Predicate __pred, input_iterator_tag)
+    {
+      while (__first != __last && bool(__pred(*__first)))
+	++__first;
+      return __first;
+    }
+
+  /// This is an overload used by find_if_not() for the RAI case.
+  template<typename _RandomAccessIterator, typename _Predicate>
+    _RandomAccessIterator
+    __find_if_not(_RandomAccessIterator __first, _RandomAccessIterator __last,
+		  _Predicate __pred, random_access_iterator_tag)
+    {
+      typename iterator_traits<_RandomAccessIterator>::difference_type
+	__trip_count = (__last - __first) >> 2;
+
+      for (; __trip_count > 0; --__trip_count)
+	{
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+	}
+
+      switch (__last - __first)
+	{
+	case 3:
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+	case 2:
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+	case 1:
+	  if (!bool(__pred(*__first)))
+	    return __first;
+	  ++__first;
+	case 0:
+	default:
+	  return __last;
+	}
+    }
+#endif
+
+  // set_difference
+  // set_intersection
+  // set_symmetric_difference
+  // set_union
+  // for_each
+  // find
+  // find_if
+  // find_first_of
+  // adjacent_find
+  // count
+  // count_if
+  // search
+
+  /**
+   *  This is an uglified
+   *  search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&)
+   *  overloaded for forward iterators.
+  */
+  template<typename _ForwardIterator, typename _Integer, typename _Tp>
+    _ForwardIterator
+    __search_n(_ForwardIterator __first, _ForwardIterator __last,
+	       _Integer __count, const _Tp& __val,
+	       std::forward_iterator_tag)
+    {
+      __first = _GLIBCXX_STD_A::find(__first, __last, __val);
+      while (__first != __last)
+	{
+	  typename iterator_traits<_ForwardIterator>::difference_type
+	    __n = __count;
+	  _ForwardIterator __i = __first;
+	  ++__i;
+	  while (__i != __last && __n != 1 && *__i == __val)
+	    {
+	      ++__i;
+	      --__n;
+	    }
+	  if (__n == 1)
+	    return __first;
+	  if (__i == __last)
+	    return __last;
+	  __first = _GLIBCXX_STD_A::find(++__i, __last, __val);
+	}
+      return __last;
+    }
+
+  /**
+   *  This is an uglified
+   *  search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&)
+   *  overloaded for random access iterators.
+  */
+  template<typename _RandomAccessIter, typename _Integer, typename _Tp>
+    _RandomAccessIter
+    __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
+	       _Integer __count, const _Tp& __val, 
+	       std::random_access_iterator_tag)
+    {
+      
+      typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
+	_DistanceType;
+
+      _DistanceType __tailSize = __last - __first;
+      const _DistanceType __pattSize = __count;
+
+      if (__tailSize < __pattSize)
+        return __last;
+
+      const _DistanceType __skipOffset = __pattSize - 1;
+      _RandomAccessIter __lookAhead = __first + __skipOffset;
+      __tailSize -= __pattSize;
+
+      while (1) // the main loop...
+	{
+	  // __lookAhead here is always pointing to the last element of next 
+	  // possible match.
+	  while (!(*__lookAhead == __val)) // the skip loop...
+	    {
+	      if (__tailSize < __pattSize)
+		return __last;  // Failure
+	      __lookAhead += __pattSize;
+	      __tailSize -= __pattSize;
+	    }
+	  _DistanceType __remainder = __skipOffset;
+	  for (_RandomAccessIter __backTrack = __lookAhead - 1; 
+	       *__backTrack == __val; --__backTrack)
+	    {
+	      if (--__remainder == 0)
+		return (__lookAhead - __skipOffset); // Success
+	    }
+	  if (__remainder > __tailSize)
+	    return __last; // Failure
+	  __lookAhead += __remainder;
+	  __tailSize -= __remainder;
+	}
+    }
+
+  // search_n
+
+  /**
+   *  This is an uglified
+   *  search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&,
+   *	       _BinaryPredicate)
+   *  overloaded for forward iterators.
+  */
+  template<typename _ForwardIterator, typename _Integer, typename _Tp,
+           typename _BinaryPredicate>
+    _ForwardIterator
+    __search_n(_ForwardIterator __first, _ForwardIterator __last,
+	       _Integer __count, const _Tp& __val,
+	       _BinaryPredicate __binary_pred, std::forward_iterator_tag)
+    {
+      while (__first != __last && !bool(__binary_pred(*__first, __val)))
+        ++__first;
+
+      while (__first != __last)
+	{
+	  typename iterator_traits<_ForwardIterator>::difference_type
+	    __n = __count;
+	  _ForwardIterator __i = __first;
+	  ++__i;
+	  while (__i != __last && __n != 1 && bool(__binary_pred(*__i, __val)))
+	    {
+	      ++__i;
+	      --__n;
+	    }
+	  if (__n == 1)
+	    return __first;
+	  if (__i == __last)
+	    return __last;
+	  __first = ++__i;
+	  while (__first != __last
+		 && !bool(__binary_pred(*__first, __val)))
+	    ++__first;
+	}
+      return __last;
+    }
+
+  /**
+   *  This is an uglified
+   *  search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&,
+   *	       _BinaryPredicate)
+   *  overloaded for random access iterators.
+  */
+  template<typename _RandomAccessIter, typename _Integer, typename _Tp,
+	   typename _BinaryPredicate>
+    _RandomAccessIter
+    __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
+	       _Integer __count, const _Tp& __val,
+	       _BinaryPredicate __binary_pred, std::random_access_iterator_tag)
+    {
+      
+      typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
+	_DistanceType;
+
+      _DistanceType __tailSize = __last - __first;
+      const _DistanceType __pattSize = __count;
+
+      if (__tailSize < __pattSize)
+        return __last;
+
+      const _DistanceType __skipOffset = __pattSize - 1;
+      _RandomAccessIter __lookAhead = __first + __skipOffset;
+      __tailSize -= __pattSize;
+
+      while (1) // the main loop...
+	{
+	  // __lookAhead here is always pointing to the last element of next 
+	  // possible match.
+	  while (!bool(__binary_pred(*__lookAhead, __val))) // the skip loop...
+	    {
+	      if (__tailSize < __pattSize)
+		return __last;  // Failure
+	      __lookAhead += __pattSize;
+	      __tailSize -= __pattSize;
+	    }
+	  _DistanceType __remainder = __skipOffset;
+	  for (_RandomAccessIter __backTrack = __lookAhead - 1; 
+	       __binary_pred(*__backTrack, __val); --__backTrack)
+	    {
+	      if (--__remainder == 0)
+		return (__lookAhead - __skipOffset); // Success
+	    }
+	  if (__remainder > __tailSize)
+	    return __last; // Failure
+	  __lookAhead += __remainder;
+	  __tailSize -= __remainder;
+	}
+    }
+
+  // find_end for forward iterators.
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    _ForwardIterator1
+    __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	       _ForwardIterator2 __first2, _ForwardIterator2 __last2,
+	       forward_iterator_tag, forward_iterator_tag)
+    {
+      if (__first2 == __last2)
+	return __last1;
+      else
+	{
+	  _ForwardIterator1 __result = __last1;
+	  while (1)
+	    {
+	      _ForwardIterator1 __new_result
+		= _GLIBCXX_STD_A::search(__first1, __last1, __first2, __last2);
+	      if (__new_result == __last1)
+		return __result;
+	      else
+		{
+		  __result = __new_result;
+		  __first1 = __new_result;
+		  ++__first1;
+		}
+	    }
+	}
+    }
+
+  template<typename _ForwardIterator1, typename _ForwardIterator2,
+	   typename _BinaryPredicate>
+    _ForwardIterator1
+    __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	       _ForwardIterator2 __first2, _ForwardIterator2 __last2,
+	       forward_iterator_tag, forward_iterator_tag,
+	       _BinaryPredicate __comp)
+    {
+      if (__first2 == __last2)
+	return __last1;
+      else
+	{
+	  _ForwardIterator1 __result = __last1;
+	  while (1)
+	    {
+	      _ForwardIterator1 __new_result
+		= _GLIBCXX_STD_A::search(__first1, __last1, __first2,
+					 __last2, __comp);
+	      if (__new_result == __last1)
+		return __result;
+	      else
+		{
+		  __result = __new_result;
+		  __first1 = __new_result;
+		  ++__first1;
+		}
+	    }
+	}
+    }
+
+  // find_end for bidirectional iterators (much faster).
+  template<typename _BidirectionalIterator1, typename _BidirectionalIterator2>
+    _BidirectionalIterator1
+    __find_end(_BidirectionalIterator1 __first1,
+	       _BidirectionalIterator1 __last1,
+	       _BidirectionalIterator2 __first2,
+	       _BidirectionalIterator2 __last2,
+	       bidirectional_iterator_tag, bidirectional_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator1>)
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator2>)
+
+      typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
+      typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
+
+      _RevIterator1 __rlast1(__first1);
+      _RevIterator2 __rlast2(__first2);
+      _RevIterator1 __rresult = _GLIBCXX_STD_A::search(_RevIterator1(__last1),
+						       __rlast1,
+						       _RevIterator2(__last2),
+						       __rlast2);
+
+      if (__rresult == __rlast1)
+	return __last1;
+      else
+	{
+	  _BidirectionalIterator1 __result = __rresult.base();
+	  std::advance(__result, -std::distance(__first2, __last2));
+	  return __result;
+	}
+    }
+
+  template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
+	   typename _BinaryPredicate>
+    _BidirectionalIterator1
+    __find_end(_BidirectionalIterator1 __first1,
+	       _BidirectionalIterator1 __last1,
+	       _BidirectionalIterator2 __first2,
+	       _BidirectionalIterator2 __last2,
+	       bidirectional_iterator_tag, bidirectional_iterator_tag,
+	       _BinaryPredicate __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator1>)
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator2>)
+
+      typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
+      typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
+
+      _RevIterator1 __rlast1(__first1);
+      _RevIterator2 __rlast2(__first2);
+      _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,
+					    _RevIterator2(__last2), __rlast2,
+					    __comp);
+
+      if (__rresult == __rlast1)
+	return __last1;
+      else
+	{
+	  _BidirectionalIterator1 __result = __rresult.base();
+	  std::advance(__result, -std::distance(__first2, __last2));
+	  return __result;
+	}
+    }
+
+  /**
+   *  @brief  Find last matching subsequence in a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of range to search.
+   *  @param  last1   End of range to search.
+   *  @param  first2  Start of sequence to match.
+   *  @param  last2   End of sequence to match.
+   *  @return   The last iterator @c i in the range
+   *  @p [first1,last1-(last2-first2)) such that @c *(i+N) == @p *(first2+N)
+   *  for each @c N in the range @p [0,last2-first2), or @p last1 if no
+   *  such iterator exists.
+   *
+   *  Searches the range @p [first1,last1) for a sub-sequence that compares
+   *  equal value-by-value with the sequence given by @p [first2,last2) and
+   *  returns an iterator to the first element of the sub-sequence, or
+   *  @p last1 if the sub-sequence is not found.  The sub-sequence will be the
+   *  last such subsequence contained in [first,last1).
+   *
+   *  Because the sub-sequence must lie completely within the range
+   *  @p [first1,last1) it must start at a position less than
+   *  @p last1-(last2-first2) where @p last2-first2 is the length of the
+   *  sub-sequence.
+   *  This means that the returned iterator @c i will be in the range
+   *  @p [first1,last1-(last2-first2))
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    inline _ForwardIterator1
+    find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	     _ForwardIterator2 __first2, _ForwardIterator2 __last2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_ForwardIterator1>::value_type,
+	    typename iterator_traits<_ForwardIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      return std::__find_end(__first1, __last1, __first2, __last2,
+			     std::__iterator_category(__first1),
+			     std::__iterator_category(__first2));
+    }
+
+  /**
+   *  @brief  Find last matching subsequence in a sequence using a predicate.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of range to search.
+   *  @param  last1   End of range to search.
+   *  @param  first2  Start of sequence to match.
+   *  @param  last2   End of sequence to match.
+   *  @param  comp    The predicate to use.
+   *  @return   The last iterator @c i in the range
+   *  @p [first1,last1-(last2-first2)) such that @c predicate(*(i+N), @p
+   *  (first2+N)) is true for each @c N in the range @p [0,last2-first2), or
+   *  @p last1 if no such iterator exists.
+   *
+   *  Searches the range @p [first1,last1) for a sub-sequence that compares
+   *  equal value-by-value with the sequence given by @p [first2,last2) using
+   *  comp as a predicate and returns an iterator to the first element of the
+   *  sub-sequence, or @p last1 if the sub-sequence is not found.  The
+   *  sub-sequence will be the last such subsequence contained in
+   *  [first,last1).
+   *
+   *  Because the sub-sequence must lie completely within the range
+   *  @p [first1,last1) it must start at a position less than
+   *  @p last1-(last2-first2) where @p last2-first2 is the length of the
+   *  sub-sequence.
+   *  This means that the returned iterator @c i will be in the range
+   *  @p [first1,last1-(last2-first2))
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2,
+	   typename _BinaryPredicate>
+    inline _ForwardIterator1
+    find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	     _ForwardIterator2 __first2, _ForwardIterator2 __last2,
+	     _BinaryPredicate __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	    typename iterator_traits<_ForwardIterator1>::value_type,
+	    typename iterator_traits<_ForwardIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      return std::__find_end(__first1, __last1, __first2, __last2,
+			     std::__iterator_category(__first1),
+			     std::__iterator_category(__first2),
+			     __comp);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief  Checks that a predicate is true for all the elements
+   *          of a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  pred    A predicate.
+   *  @return  True if the check is true, false otherwise.
+   *
+   *  Returns true if @p pred is true for each element in the range
+   *  @p [first,last), and false otherwise.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
+    { return __last == std::find_if_not(__first, __last, __pred); }
+
+  /**
+   *  @brief  Checks that a predicate is false for all the elements
+   *          of a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  pred    A predicate.
+   *  @return  True if the check is true, false otherwise.
+   *
+   *  Returns true if @p pred is false for each element in the range
+   *  @p [first,last), and false otherwise.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
+    { return __last == _GLIBCXX_STD_A::find_if(__first, __last, __pred); }
+
+  /**
+   *  @brief  Checks that a predicate is false for at least an element
+   *          of a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  pred    A predicate.
+   *  @return  True if the check is true, false otherwise.
+   *
+   *  Returns true if an element exists in the range @p [first,last) such that
+   *  @p pred is true, and false otherwise.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
+    { return !std::none_of(__first, __last, __pred); }
+
+  /**
+   *  @brief  Find the first element in a sequence for which a
+   *          predicate is false.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  pred   A predicate.
+   *  @return   The first iterator @c i in the range @p [first,last)
+   *  such that @p pred(*i) is false, or @p last if no such iterator exists.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline _InputIterator
+    find_if_not(_InputIterator __first, _InputIterator __last,
+		_Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	      typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      return std::__find_if_not(__first, __last, __pred,
+				std::__iterator_category(__first));
+    }
+
+  /**
+   *  @brief  Checks whether the sequence is partitioned.
+   *  @ingroup mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  pred   A predicate.
+   *  @return  True if the range @p [first,last) is partioned by @p pred,
+   *  i.e. if all elements that satisfy @p pred appear before those that
+   *  do not.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    is_partitioned(_InputIterator __first, _InputIterator __last,
+		   _Predicate __pred)
+    {
+      __first = std::find_if_not(__first, __last, __pred);
+      return std::none_of(__first, __last, __pred);
+    }
+
+  /**
+   *  @brief  Find the partition point of a partitioned range.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  pred    A predicate.
+   *  @return  An iterator @p mid such that @p all_of(first, mid, pred)
+   *           and @p none_of(mid, last, pred) are both true.
+  */
+  template<typename _ForwardIterator, typename _Predicate>
+    _ForwardIterator
+    partition_point(_ForwardIterator __first, _ForwardIterator __last,
+		    _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	      typename iterator_traits<_ForwardIterator>::value_type>)
+
+      // A specific debug-mode test will be necessary...
+      __glibcxx_requires_valid_range(__first, __last);
+
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      _DistanceType __len = std::distance(__first, __last);
+      _DistanceType __half;
+      _ForwardIterator __middle;
+
+      while (__len > 0)
+	{
+	  __half = __len >> 1;
+	  __middle = __first;
+	  std::advance(__middle, __half);
+	  if (__pred(*__middle))
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	  else
+	    __len = __half;
+	}
+      return __first;
+    }
+#endif
+
+
+  /**
+   *  @brief Copy a sequence, removing elements of a given value.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  result  An output iterator.
+   *  @param  value   The value to be removed.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies each element in the range @p [first,last) not equal to @p value
+   *  to the range beginning at @p result.
+   *  remove_copy() is stable, so the relative order of elements that are
+   *  copied is unchanged.
+  */
+  template<typename _InputIterator, typename _OutputIterator, typename _Tp>
+    _OutputIterator
+    remove_copy(_InputIterator __first, _InputIterator __last,
+		_OutputIterator __result, const _Tp& __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_InputIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	if (!(*__first == __value))
+	  {
+	    *__result = *__first;
+	    ++__result;
+	  }
+      return __result;
+    }
+
+  /**
+   *  @brief Copy a sequence, removing elements for which a predicate is true.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  result  An output iterator.
+   *  @param  pred    A predicate.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies each element in the range @p [first,last) for which
+   *  @p pred returns false to the range beginning at @p result.
+   *
+   *  remove_copy_if() is stable, so the relative order of elements that are
+   *  copied is unchanged.
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _Predicate>
+    _OutputIterator
+    remove_copy_if(_InputIterator __first, _InputIterator __last,
+		   _OutputIterator __result, _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	if (!bool(__pred(*__first)))
+	  {
+	    *__result = *__first;
+	    ++__result;
+	  }
+      return __result;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief Copy the elements of a sequence for which a predicate is true.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  result  An output iterator.
+   *  @param  pred    A predicate.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies each element in the range @p [first,last) for which
+   *  @p pred returns true to the range beginning at @p result.
+   *
+   *  copy_if() is stable, so the relative order of elements that are
+   *  copied is unchanged.
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _Predicate>
+    _OutputIterator
+    copy_if(_InputIterator __first, _InputIterator __last,
+	    _OutputIterator __result, _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	if (__pred(*__first))
+	  {
+	    *__result = *__first;
+	    ++__result;
+	  }
+      return __result;
+    }
+
+
+  template<typename _InputIterator, typename _Size, typename _OutputIterator>
+    _OutputIterator
+    __copy_n(_InputIterator __first, _Size __n,
+	     _OutputIterator __result, input_iterator_tag)
+    {
+      for (; __n > 0; --__n)
+	{
+	  *__result = *__first;
+	  ++__first;
+	  ++__result;
+	}
+      return __result;
+    }
+
+  template<typename _RandomAccessIterator, typename _Size,
+	   typename _OutputIterator>
+    inline _OutputIterator
+    __copy_n(_RandomAccessIterator __first, _Size __n,
+	     _OutputIterator __result, random_access_iterator_tag)
+    { return std::copy(__first, __first + __n, __result); }
+
+  /**
+   *  @brief Copies the range [first,first+n) into [result,result+n).
+   *  @ingroup mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  n      The number of elements to copy.
+   *  @param  result An output iterator.
+   *  @return  result+n.
+   *
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).
+  */
+  template<typename _InputIterator, typename _Size, typename _OutputIterator>
+    inline _OutputIterator
+    copy_n(_InputIterator __first, _Size __n, _OutputIterator __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+
+      return std::__copy_n(__first, __n, __result,
+			   std::__iterator_category(__first));
+    }
+
+  /**
+   *  @brief Copy the elements of a sequence to separate output sequences
+   *         depending on the truth value of a predicate.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  out_true   An output iterator.
+   *  @param  out_false  An output iterator.
+   *  @param  pred    A predicate.
+   *  @return   A pair designating the ends of the resulting sequences.
+   *
+   *  Copies each element in the range @p [first,last) for which
+   *  @p pred returns true to the range beginning at @p out_true
+   *  and each element for which @p pred returns false to @p out_false.
+  */
+  template<typename _InputIterator, typename _OutputIterator1,
+	   typename _OutputIterator2, typename _Predicate>
+    pair<_OutputIterator1, _OutputIterator2>
+    partition_copy(_InputIterator __first, _InputIterator __last,
+		   _OutputIterator1 __out_true, _OutputIterator2 __out_false,
+		   _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator1,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator2,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      
+      for (; __first != __last; ++__first)
+	if (__pred(*__first))
+	  {
+	    *__out_true = *__first;
+	    ++__out_true;
+	  }
+	else
+	  {
+	    *__out_false = *__first;
+	    ++__out_false;
+	  }
+
+      return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false);
+    }
+#endif
+
+  /**
+   *  @brief Remove elements from a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  value  The value to be removed.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  All elements equal to @p value are removed from the range
+   *  @p [first,last).
+   *
+   *  remove() is stable, so the relative order of elements that are
+   *  not removed is unchanged.
+   *
+   *  Elements between the end of the resulting sequence and @p last
+   *  are still present, but their value is unspecified.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    _ForwardIterator
+    remove(_ForwardIterator __first, _ForwardIterator __last,
+	   const _Tp& __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      __first = _GLIBCXX_STD_A::find(__first, __last, __value);
+      if(__first == __last)
+        return __first;
+      _ForwardIterator __result = __first;
+      ++__first;
+      for(; __first != __last; ++__first)
+        if(!(*__first == __value))
+          {
+            *__result = _GLIBCXX_MOVE(*__first);
+            ++__result;
+          }
+      return __result;
+    }
+
+  /**
+   *  @brief Remove elements from a sequence using a predicate.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @param  pred   A predicate.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  All elements for which @p pred returns true are removed from the range
+   *  @p [first,last).
+   *
+   *  remove_if() is stable, so the relative order of elements that are
+   *  not removed is unchanged.
+   *
+   *  Elements between the end of the resulting sequence and @p last
+   *  are still present, but their value is unspecified.
+  */
+  template<typename _ForwardIterator, typename _Predicate>
+    _ForwardIterator
+    remove_if(_ForwardIterator __first, _ForwardIterator __last,
+	      _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      __first = _GLIBCXX_STD_A::find_if(__first, __last, __pred);
+      if(__first == __last)
+        return __first;
+      _ForwardIterator __result = __first;
+      ++__first;
+      for(; __first != __last; ++__first)
+        if(!bool(__pred(*__first)))
+          {
+            *__result = _GLIBCXX_MOVE(*__first);
+            ++__result;
+          }
+      return __result;
+    }
+
+  /**
+   *  @brief Remove consecutive duplicate values from a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @return  An iterator designating the end of the resulting sequence.
+   *
+   *  Removes all but the first element from each group of consecutive
+   *  values that compare equal.
+   *  unique() is stable, so the relative order of elements that are
+   *  not removed is unchanged.
+   *  Elements between the end of the resulting sequence and @p last
+   *  are still present, but their value is unspecified.
+  */
+  template<typename _ForwardIterator>
+    _ForwardIterator
+    unique(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_EqualityComparableConcept<
+		     typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      // Skip the beginning, if already unique.
+      __first = _GLIBCXX_STD_A::adjacent_find(__first, __last);
+      if (__first == __last)
+	return __last;
+
+      // Do the real copy work.
+      _ForwardIterator __dest = __first;
+      ++__first;
+      while (++__first != __last)
+	if (!(*__dest == *__first))
+	  *++__dest = _GLIBCXX_MOVE(*__first);
+      return ++__dest;
+    }
+
+  /**
+   *  @brief Remove consecutive values from a sequence using a predicate.
+   *  @ingroup mutating_algorithms
+   *  @param  first        A forward iterator.
+   *  @param  last         A forward iterator.
+   *  @param  binary_pred  A binary predicate.
+   *  @return  An iterator designating the end of the resulting sequence.
+   *
+   *  Removes all but the first element from each group of consecutive
+   *  values for which @p binary_pred returns true.
+   *  unique() is stable, so the relative order of elements that are
+   *  not removed is unchanged.
+   *  Elements between the end of the resulting sequence and @p last
+   *  are still present, but their value is unspecified.
+  */
+  template<typename _ForwardIterator, typename _BinaryPredicate>
+    _ForwardIterator
+    unique(_ForwardIterator __first, _ForwardIterator __last,
+           _BinaryPredicate __binary_pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+		typename iterator_traits<_ForwardIterator>::value_type,
+		typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      // Skip the beginning, if already unique.
+      __first = _GLIBCXX_STD_A::adjacent_find(__first, __last, __binary_pred);
+      if (__first == __last)
+	return __last;
+
+      // Do the real copy work.
+      _ForwardIterator __dest = __first;
+      ++__first;
+      while (++__first != __last)
+	if (!bool(__binary_pred(*__dest, *__first)))
+	  *++__dest = _GLIBCXX_MOVE(*__first);
+      return ++__dest;
+    }
+
+  /**
+   *  This is an uglified unique_copy(_InputIterator, _InputIterator,
+   *                                  _OutputIterator)
+   *  overloaded for forward iterators and output iterator as result.
+  */
+  template<typename _ForwardIterator, typename _OutputIterator>
+    _OutputIterator
+    __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
+		  _OutputIterator __result,
+		  forward_iterator_tag, output_iterator_tag)
+    {
+      // concept requirements -- taken care of in dispatching function
+      _ForwardIterator __next = __first;
+      *__result = *__first;
+      while (++__next != __last)
+	if (!(*__first == *__next))
+	  {
+	    __first = __next;
+	    *++__result = *__first;
+	  }
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified unique_copy(_InputIterator, _InputIterator,
+   *                                  _OutputIterator)
+   *  overloaded for input iterators and output iterator as result.
+  */
+  template<typename _InputIterator, typename _OutputIterator>
+    _OutputIterator
+    __unique_copy(_InputIterator __first, _InputIterator __last,
+		  _OutputIterator __result,
+		  input_iterator_tag, output_iterator_tag)
+    {
+      // concept requirements -- taken care of in dispatching function
+      typename iterator_traits<_InputIterator>::value_type __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	if (!(__value == *__first))
+	  {
+	    __value = *__first;
+	    *++__result = __value;
+	  }
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified unique_copy(_InputIterator, _InputIterator,
+   *                                  _OutputIterator)
+   *  overloaded for input iterators and forward iterator as result.
+  */
+  template<typename _InputIterator, typename _ForwardIterator>
+    _ForwardIterator
+    __unique_copy(_InputIterator __first, _InputIterator __last,
+		  _ForwardIterator __result,
+		  input_iterator_tag, forward_iterator_tag)
+    {
+      // concept requirements -- taken care of in dispatching function
+      *__result = *__first;
+      while (++__first != __last)
+	if (!(*__result == *__first))
+	  *++__result = *__first;
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified
+   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
+   *              _BinaryPredicate)
+   *  overloaded for forward iterators and output iterator as result.
+  */
+  template<typename _ForwardIterator, typename _OutputIterator,
+	   typename _BinaryPredicate>
+    _OutputIterator
+    __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
+		  _OutputIterator __result, _BinaryPredicate __binary_pred,
+		  forward_iterator_tag, output_iterator_tag)
+    {
+      // concept requirements -- iterators already checked
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	  typename iterator_traits<_ForwardIterator>::value_type,
+	  typename iterator_traits<_ForwardIterator>::value_type>)
+
+      _ForwardIterator __next = __first;
+      *__result = *__first;
+      while (++__next != __last)
+	if (!bool(__binary_pred(*__first, *__next)))
+	  {
+	    __first = __next;
+	    *++__result = *__first;
+	  }
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified
+   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
+   *              _BinaryPredicate)
+   *  overloaded for input iterators and output iterator as result.
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _BinaryPredicate>
+    _OutputIterator
+    __unique_copy(_InputIterator __first, _InputIterator __last,
+		  _OutputIterator __result, _BinaryPredicate __binary_pred,
+		  input_iterator_tag, output_iterator_tag)
+    {
+      // concept requirements -- iterators already checked
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	  typename iterator_traits<_InputIterator>::value_type,
+	  typename iterator_traits<_InputIterator>::value_type>)
+
+      typename iterator_traits<_InputIterator>::value_type __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	if (!bool(__binary_pred(__value, *__first)))
+	  {
+	    __value = *__first;
+	    *++__result = __value;
+	  }
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified
+   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
+   *              _BinaryPredicate)
+   *  overloaded for input iterators and forward iterator as result.
+  */
+  template<typename _InputIterator, typename _ForwardIterator,
+	   typename _BinaryPredicate>
+    _ForwardIterator
+    __unique_copy(_InputIterator __first, _InputIterator __last,
+		  _ForwardIterator __result, _BinaryPredicate __binary_pred,
+		  input_iterator_tag, forward_iterator_tag)
+    {
+      // concept requirements -- iterators already checked
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	  typename iterator_traits<_ForwardIterator>::value_type,
+	  typename iterator_traits<_InputIterator>::value_type>)
+
+      *__result = *__first;
+      while (++__first != __last)
+	if (!bool(__binary_pred(*__result, *__first)))
+	  *++__result = *__first;
+      return ++__result;
+    }
+
+  /**
+   *  This is an uglified reverse(_BidirectionalIterator,
+   *                              _BidirectionalIterator)
+   *  overloaded for bidirectional iterators.
+  */
+  template<typename _BidirectionalIterator>
+    void
+    __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
+	      bidirectional_iterator_tag)
+    {
+      while (true)
+	if (__first == __last || __first == --__last)
+	  return;
+	else
+	  {
+	    std::iter_swap(__first, __last);
+	    ++__first;
+	  }
+    }
+
+  /**
+   *  This is an uglified reverse(_BidirectionalIterator,
+   *                              _BidirectionalIterator)
+   *  overloaded for random access iterators.
+  */
+  template<typename _RandomAccessIterator>
+    void
+    __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      random_access_iterator_tag)
+    {
+      if (__first == __last)
+	return;
+      --__last;
+      while (__first < __last)
+	{
+	  std::iter_swap(__first, __last);
+	  ++__first;
+	  --__last;
+	}
+    }
+
+  /**
+   *  @brief Reverse a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A bidirectional iterator.
+   *  @param  last   A bidirectional iterator.
+   *  @return   reverse() returns no value.
+   *
+   *  Reverses the order of the elements in the range @p [first,last),
+   *  so that the first element becomes the last etc.
+   *  For every @c i such that @p 0<=i<=(last-first)/2), @p reverse()
+   *  swaps @p *(first+i) and @p *(last-(i+1))
+  */
+  template<typename _BidirectionalIterator>
+    inline void
+    reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      std::__reverse(__first, __last, std::__iterator_category(__first));
+    }
+
+  /**
+   *  @brief Copy a sequence, reversing its elements.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A bidirectional iterator.
+   *  @param  last    A bidirectional iterator.
+   *  @param  result  An output iterator.
+   *  @return  An iterator designating the end of the resulting sequence.
+   *
+   *  Copies the elements in the range @p [first,last) to the range
+   *  @p [result,result+(last-first)) such that the order of the
+   *  elements is reversed.
+   *  For every @c i such that @p 0<=i<=(last-first), @p reverse_copy()
+   *  performs the assignment @p *(result+(last-first)-i) = *(first+i).
+   *  The ranges @p [first,last) and @p [result,result+(last-first))
+   *  must not overlap.
+  */
+  template<typename _BidirectionalIterator, typename _OutputIterator>
+    _OutputIterator
+    reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last,
+		 _OutputIterator __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+		typename iterator_traits<_BidirectionalIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      while (__first != __last)
+	{
+	  --__last;
+	  *__result = *__last;
+	  ++__result;
+	}
+      return __result;
+    }
+
+  /**
+   *  This is a helper function for the rotate algorithm specialized on RAIs.
+   *  It returns the greatest common divisor of two integer values.
+  */
+  template<typename _EuclideanRingElement>
+    _EuclideanRingElement
+    __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
+    {
+      while (__n != 0)
+	{
+	  _EuclideanRingElement __t = __m % __n;
+	  __m = __n;
+	  __n = __t;
+	}
+      return __m;
+    }
+
+  /// This is a helper function for the rotate algorithm.
+  template<typename _ForwardIterator>
+    void
+    __rotate(_ForwardIterator __first,
+	     _ForwardIterator __middle,
+	     _ForwardIterator __last,
+	     forward_iterator_tag)
+    {
+      if (__first == __middle || __last  == __middle)
+	return;
+
+      _ForwardIterator __first2 = __middle;
+      do
+	{
+	  std::iter_swap(__first, __first2);
+	  ++__first;
+	  ++__first2;
+	  if (__first == __middle)
+	    __middle = __first2;
+	}
+      while (__first2 != __last);
+
+      __first2 = __middle;
+
+      while (__first2 != __last)
+	{
+	  std::iter_swap(__first, __first2);
+	  ++__first;
+	  ++__first2;
+	  if (__first == __middle)
+	    __middle = __first2;
+	  else if (__first2 == __last)
+	    __first2 = __middle;
+	}
+    }
+
+   /// This is a helper function for the rotate algorithm.
+  template<typename _BidirectionalIterator>
+    void
+    __rotate(_BidirectionalIterator __first,
+	     _BidirectionalIterator __middle,
+	     _BidirectionalIterator __last,
+	      bidirectional_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+
+      if (__first == __middle || __last  == __middle)
+	return;
+
+      std::__reverse(__first,  __middle, bidirectional_iterator_tag());
+      std::__reverse(__middle, __last,   bidirectional_iterator_tag());
+
+      while (__first != __middle && __middle != __last)
+	{
+	  std::iter_swap(__first, --__last);
+	  ++__first;
+	}
+
+      if (__first == __middle)
+	std::__reverse(__middle, __last,   bidirectional_iterator_tag());
+      else
+	std::__reverse(__first,  __middle, bidirectional_iterator_tag());
+    }
+
+  /// This is a helper function for the rotate algorithm.
+  template<typename _RandomAccessIterator>
+    void
+    __rotate(_RandomAccessIterator __first,
+	     _RandomAccessIterator __middle,
+	     _RandomAccessIterator __last,
+	     random_access_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+
+      if (__first == __middle || __last  == __middle)
+	return;
+
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_Distance;
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      _Distance __n = __last   - __first;
+      _Distance __k = __middle - __first;
+
+      if (__k == __n - __k)
+	{
+	  std::swap_ranges(__first, __middle, __middle);
+	  return;
+	}
+
+      _RandomAccessIterator __p = __first;
+
+      for (;;)
+	{
+	  if (__k < __n - __k)
+	    {
+	      if (__is_pod(_ValueType) && __k == 1)
+		{
+		  _ValueType __t = _GLIBCXX_MOVE(*__p);
+		  _GLIBCXX_MOVE3(__p + 1, __p + __n, __p);
+		  *(__p + __n - 1) = _GLIBCXX_MOVE(__t);
+		  return;
+		}
+	      _RandomAccessIterator __q = __p + __k;
+	      for (_Distance __i = 0; __i < __n - __k; ++ __i)
+		{
+		  std::iter_swap(__p, __q);
+		  ++__p;
+		  ++__q;
+		}
+	      __n %= __k;
+	      if (__n == 0)
+		return;
+	      std::swap(__n, __k);
+	      __k = __n - __k;
+	    }
+	  else
+	    {
+	      __k = __n - __k;
+	      if (__is_pod(_ValueType) && __k == 1)
+		{
+		  _ValueType __t = _GLIBCXX_MOVE(*(__p + __n - 1));
+		  _GLIBCXX_MOVE_BACKWARD3(__p, __p + __n - 1, __p + __n);
+		  *__p = _GLIBCXX_MOVE(__t);
+		  return;
+		}
+	      _RandomAccessIterator __q = __p + __n;
+	      __p = __q - __k;
+	      for (_Distance __i = 0; __i < __n - __k; ++ __i)
+		{
+		  --__p;
+		  --__q;
+		  std::iter_swap(__p, __q);
+		}
+	      __n %= __k;
+	      if (__n == 0)
+		return;
+	      std::swap(__n, __k);
+	    }
+	}
+    }
+
+  /**
+   *  @brief Rotate the elements of a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  middle  A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @return  Nothing.
+   *
+   *  Rotates the elements of the range @p [first,last) by @p (middle-first)
+   *  positions so that the element at @p middle is moved to @p first, the
+   *  element at @p middle+1 is moved to @first+1 and so on for each element
+   *  in the range @p [first,last).
+   *
+   *  This effectively swaps the ranges @p [first,middle) and
+   *  @p [middle,last).
+   *
+   *  Performs @p *(first+(n+(last-middle))%(last-first))=*(first+n) for
+   *  each @p n in the range @p [0,last-first).
+  */
+  template<typename _ForwardIterator>
+    inline void
+    rotate(_ForwardIterator __first, _ForwardIterator __middle,
+	   _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_requires_valid_range(__first, __middle);
+      __glibcxx_requires_valid_range(__middle, __last);
+
+      typedef typename iterator_traits<_ForwardIterator>::iterator_category
+	_IterType;
+      std::__rotate(__first, __middle, __last, _IterType());
+    }
+
+  /**
+   *  @brief Copy a sequence, rotating its elements.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  middle  A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @param  result  An output iterator.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies the elements of the range @p [first,last) to the range
+   *  beginning at @result, rotating the copied elements by @p (middle-first)
+   *  positions so that the element at @p middle is moved to @p result, the
+   *  element at @p middle+1 is moved to @result+1 and so on for each element
+   *  in the range @p [first,last).
+   *
+   *  Performs @p *(result+(n+(last-middle))%(last-first))=*(first+n) for
+   *  each @p n in the range @p [0,last-first).
+  */
+  template<typename _ForwardIterator, typename _OutputIterator>
+    _OutputIterator
+    rotate_copy(_ForwardIterator __first, _ForwardIterator __middle,
+                _ForwardIterator __last, _OutputIterator __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+		typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __middle);
+      __glibcxx_requires_valid_range(__middle, __last);
+
+      return std::copy(__first, __middle,
+                       std::copy(__middle, __last, __result));
+    }
+
+  /// This is a helper function...
+  template<typename _ForwardIterator, typename _Predicate>
+    _ForwardIterator
+    __partition(_ForwardIterator __first, _ForwardIterator __last,
+		_Predicate __pred, forward_iterator_tag)
+    {
+      if (__first == __last)
+	return __first;
+
+      while (__pred(*__first))
+	if (++__first == __last)
+	  return __first;
+
+      _ForwardIterator __next = __first;
+
+      while (++__next != __last)
+	if (__pred(*__next))
+	  {
+	    std::iter_swap(__first, __next);
+	    ++__first;
+	  }
+
+      return __first;
+    }
+
+  /// This is a helper function...
+  template<typename _BidirectionalIterator, typename _Predicate>
+    _BidirectionalIterator
+    __partition(_BidirectionalIterator __first, _BidirectionalIterator __last,
+		_Predicate __pred, bidirectional_iterator_tag)
+    {
+      while (true)
+	{
+	  while (true)
+	    if (__first == __last)
+	      return __first;
+	    else if (__pred(*__first))
+	      ++__first;
+	    else
+	      break;
+	  --__last;
+	  while (true)
+	    if (__first == __last)
+	      return __first;
+	    else if (!bool(__pred(*__last)))
+	      --__last;
+	    else
+	      break;
+	  std::iter_swap(__first, __last);
+	  ++__first;
+	}
+    }
+
+  // partition
+
+  /// This is a helper function...
+  template<typename _ForwardIterator, typename _Predicate, typename _Distance>
+    _ForwardIterator
+    __inplace_stable_partition(_ForwardIterator __first,
+			       _ForwardIterator __last,
+			       _Predicate __pred, _Distance __len)
+    {
+      if (__len == 1)
+	return __pred(*__first) ? __last : __first;
+      _ForwardIterator __middle = __first;
+      std::advance(__middle, __len / 2);
+      _ForwardIterator __begin = std::__inplace_stable_partition(__first,
+								 __middle,
+								 __pred,
+								 __len / 2);
+      _ForwardIterator __end = std::__inplace_stable_partition(__middle, __last,
+							       __pred,
+							       __len
+							       - __len / 2);
+      std::rotate(__begin, __middle, __end);
+      std::advance(__begin, std::distance(__middle, __end));
+      return __begin;
+    }
+
+  /// This is a helper function...
+  template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
+	   typename _Distance>
+    _ForwardIterator
+    __stable_partition_adaptive(_ForwardIterator __first,
+				_ForwardIterator __last,
+				_Predicate __pred, _Distance __len,
+				_Pointer __buffer,
+				_Distance __buffer_size)
+    {
+      if (__len <= __buffer_size)
+	{
+	  _ForwardIterator __result1 = __first;
+	  _Pointer __result2 = __buffer;
+	  for (; __first != __last; ++__first)
+	    if (__pred(*__first))
+	      {
+		*__result1 = _GLIBCXX_MOVE(*__first);
+		++__result1;
+	      }
+	    else
+	      {
+		*__result2 = _GLIBCXX_MOVE(*__first);
+		++__result2;
+	      }
+	  _GLIBCXX_MOVE3(__buffer, __result2, __result1);
+	  return __result1;
+	}
+      else
+	{
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __len / 2);
+	  _ForwardIterator __begin =
+	    std::__stable_partition_adaptive(__first, __middle, __pred,
+					     __len / 2, __buffer,
+					     __buffer_size);
+	  _ForwardIterator __end =
+	    std::__stable_partition_adaptive(__middle, __last, __pred,
+					     __len - __len / 2,
+					     __buffer, __buffer_size);
+	  std::rotate(__begin, __middle, __end);
+	  std::advance(__begin, std::distance(__middle, __end));
+	  return __begin;
+	}
+    }
+
+  /**
+   *  @brief Move elements for which a predicate is true to the beginning
+   *         of a sequence, preserving relative ordering.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @param  pred    A predicate functor.
+   *  @return  An iterator @p middle such that @p pred(i) is true for each
+   *  iterator @p i in the range @p [first,middle) and false for each @p i
+   *  in the range @p [middle,last).
+   *
+   *  Performs the same function as @p partition() with the additional
+   *  guarantee that the relative ordering of elements in each group is
+   *  preserved, so any two elements @p x and @p y in the range
+   *  @p [first,last) such that @p pred(x)==pred(y) will have the same
+   *  relative ordering after calling @p stable_partition().
+  */
+  template<typename _ForwardIterator, typename _Predicate>
+    _ForwardIterator
+    stable_partition(_ForwardIterator __first, _ForwardIterator __last,
+		     _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __first;
+      else
+	{
+	  typedef typename iterator_traits<_ForwardIterator>::value_type
+	    _ValueType;
+	  typedef typename iterator_traits<_ForwardIterator>::difference_type
+	    _DistanceType;
+
+	  _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first,
+								__last);
+	if (__buf.size() > 0)
+	  return
+	    std::__stable_partition_adaptive(__first, __last, __pred,
+					  _DistanceType(__buf.requested_size()),
+					  __buf.begin(),
+					  _DistanceType(__buf.size()));
+	else
+	  return
+	    std::__inplace_stable_partition(__first, __last, __pred,
+					 _DistanceType(__buf.requested_size()));
+	}
+    }
+
+  /// This is a helper function for the sort routines.
+  template<typename _RandomAccessIterator>
+    void
+    __heap_select(_RandomAccessIterator __first,
+		  _RandomAccessIterator __middle,
+		  _RandomAccessIterator __last)
+    {
+      std::make_heap(__first, __middle);
+      for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
+	if (*__i < *__first)
+	  std::__pop_heap(__first, __middle, __i);
+    }
+
+  /// This is a helper function for the sort routines.
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    __heap_select(_RandomAccessIterator __first,
+		  _RandomAccessIterator __middle,
+		  _RandomAccessIterator __last, _Compare __comp)
+    {
+      std::make_heap(__first, __middle, __comp);
+      for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
+	if (__comp(*__i, *__first))
+	  std::__pop_heap(__first, __middle, __i, __comp);
+    }
+
+  // partial_sort
+
+  /**
+   *  @brief Copy the smallest elements of a sequence.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  result_first   A random-access iterator.
+   *  @param  result_last    Another random-access iterator.
+   *  @return   An iterator indicating the end of the resulting sequence.
+   *
+   *  Copies and sorts the smallest N values from the range @p [first,last)
+   *  to the range beginning at @p result_first, where the number of
+   *  elements to be copied, @p N, is the smaller of @p (last-first) and
+   *  @p (result_last-result_first).
+   *  After the sort if @p i and @j are iterators in the range
+   *  @p [result_first,result_first+N) such that @i precedes @j then
+   *  @p *j<*i is false.
+   *  The value returned is @p result_first+N.
+  */
+  template<typename _InputIterator, typename _RandomAccessIterator>
+    _RandomAccessIterator
+    partial_sort_copy(_InputIterator __first, _InputIterator __last,
+		      _RandomAccessIterator __result_first,
+		      _RandomAccessIterator __result_last)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type
+	_InputValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_OutputValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_ConvertibleConcept<_InputValueType,
+				  _OutputValueType>)
+      __glibcxx_function_requires(_LessThanOpConcept<_InputValueType,
+				                     _OutputValueType>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_valid_range(__result_first, __result_last);
+
+      if (__result_first == __result_last)
+	return __result_last;
+      _RandomAccessIterator __result_real_last = __result_first;
+      while(__first != __last && __result_real_last != __result_last)
+	{
+	  *__result_real_last = *__first;
+	  ++__result_real_last;
+	  ++__first;
+	}
+      std::make_heap(__result_first, __result_real_last);
+      while (__first != __last)
+	{
+	  if (*__first < *__result_first)
+	    std::__adjust_heap(__result_first, _DistanceType(0),
+			       _DistanceType(__result_real_last
+					     - __result_first),
+			       _InputValueType(*__first));
+	  ++__first;
+	}
+      std::sort_heap(__result_first, __result_real_last);
+      return __result_real_last;
+    }
+
+  /**
+   *  @brief Copy the smallest elements of a sequence using a predicate for
+   *         comparison.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    Another input iterator.
+   *  @param  result_first   A random-access iterator.
+   *  @param  result_last    Another random-access iterator.
+   *  @param  comp    A comparison functor.
+   *  @return   An iterator indicating the end of the resulting sequence.
+   *
+   *  Copies and sorts the smallest N values from the range @p [first,last)
+   *  to the range beginning at @p result_first, where the number of
+   *  elements to be copied, @p N, is the smaller of @p (last-first) and
+   *  @p (result_last-result_first).
+   *  After the sort if @p i and @j are iterators in the range
+   *  @p [result_first,result_first+N) such that @i precedes @j then
+   *  @p comp(*j,*i) is false.
+   *  The value returned is @p result_first+N.
+  */
+  template<typename _InputIterator, typename _RandomAccessIterator, typename _Compare>
+    _RandomAccessIterator
+    partial_sort_copy(_InputIterator __first, _InputIterator __last,
+		      _RandomAccessIterator __result_first,
+		      _RandomAccessIterator __result_last,
+		      _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type
+	_InputValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_OutputValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __glibcxx_function_requires(_ConvertibleConcept<_InputValueType,
+				  _OutputValueType>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _InputValueType, _OutputValueType>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _OutputValueType, _OutputValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_valid_range(__result_first, __result_last);
+
+      if (__result_first == __result_last)
+	return __result_last;
+      _RandomAccessIterator __result_real_last = __result_first;
+      while(__first != __last && __result_real_last != __result_last)
+	{
+	  *__result_real_last = *__first;
+	  ++__result_real_last;
+	  ++__first;
+	}
+      std::make_heap(__result_first, __result_real_last, __comp);
+      while (__first != __last)
+	{
+	  if (__comp(*__first, *__result_first))
+	    std::__adjust_heap(__result_first, _DistanceType(0),
+			       _DistanceType(__result_real_last
+					     - __result_first),
+			       _InputValueType(*__first),
+			       __comp);
+	  ++__first;
+	}
+      std::sort_heap(__result_first, __result_real_last, __comp);
+      return __result_real_last;
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator>
+    void
+    __unguarded_linear_insert(_RandomAccessIterator __last)
+    {
+      typename iterator_traits<_RandomAccessIterator>::value_type
+	__val = _GLIBCXX_MOVE(*__last);
+      _RandomAccessIterator __next = __last;
+      --__next;
+      while (__val < *__next)
+	{
+	  *__last = _GLIBCXX_MOVE(*__next);
+	  __last = __next;
+	  --__next;
+	}
+      *__last = _GLIBCXX_MOVE(__val);
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    __unguarded_linear_insert(_RandomAccessIterator __last,
+			      _Compare __comp)
+    {
+      typename iterator_traits<_RandomAccessIterator>::value_type
+	__val = _GLIBCXX_MOVE(*__last);
+      _RandomAccessIterator __next = __last;
+      --__next;
+      while (__comp(__val, *__next))
+	{
+	  *__last = _GLIBCXX_MOVE(*__next);
+	  __last = __next;
+	  --__next;
+	}
+      *__last = _GLIBCXX_MOVE(__val);
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator>
+    void
+    __insertion_sort(_RandomAccessIterator __first,
+		     _RandomAccessIterator __last)
+    {
+      if (__first == __last)
+	return;
+
+      for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+	{
+	  if (*__i < *__first)
+	    {
+	      typename iterator_traits<_RandomAccessIterator>::value_type
+		__val = _GLIBCXX_MOVE(*__i);
+	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1);
+	      *__first = _GLIBCXX_MOVE(__val);
+	    }
+	  else
+	    std::__unguarded_linear_insert(__i);
+	}
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    __insertion_sort(_RandomAccessIterator __first,
+		     _RandomAccessIterator __last, _Compare __comp)
+    {
+      if (__first == __last) return;
+
+      for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+	{
+	  if (__comp(*__i, *__first))
+	    {
+	      typename iterator_traits<_RandomAccessIterator>::value_type
+		__val = _GLIBCXX_MOVE(*__i);
+	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1);
+	      *__first = _GLIBCXX_MOVE(__val);
+	    }
+	  else
+	    std::__unguarded_linear_insert(__i, __comp);
+	}
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator>
+    inline void
+    __unguarded_insertion_sort(_RandomAccessIterator __first,
+			       _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
+	std::__unguarded_linear_insert(__i);
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    __unguarded_insertion_sort(_RandomAccessIterator __first,
+			       _RandomAccessIterator __last, _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
+	std::__unguarded_linear_insert(__i, __comp);
+    }
+
+  /**
+   *  @doctodo
+   *  This controls some aspect of the sort routines.
+  */
+  enum { _S_threshold = 16 };
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator>
+    void
+    __final_insertion_sort(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last)
+    {
+      if (__last - __first > int(_S_threshold))
+	{
+	  std::__insertion_sort(__first, __first + int(_S_threshold));
+	  std::__unguarded_insertion_sort(__first + int(_S_threshold), __last);
+	}
+      else
+	std::__insertion_sort(__first, __last);
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    __final_insertion_sort(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last, _Compare __comp)
+    {
+      if (__last - __first > int(_S_threshold))
+	{
+	  std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
+	  std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
+					  __comp);
+	}
+      else
+	std::__insertion_sort(__first, __last, __comp);
+    }
+
+  /// This is a helper function...
+  template<typename _RandomAccessIterator, typename _Tp>
+    _RandomAccessIterator
+    __unguarded_partition(_RandomAccessIterator __first,
+			  _RandomAccessIterator __last, const _Tp& __pivot)
+    {
+      while (true)
+	{
+	  while (*__first < __pivot)
+	    ++__first;
+	  --__last;
+	  while (__pivot < *__last)
+	    --__last;
+	  if (!(__first < __last))
+	    return __first;
+	  std::iter_swap(__first, __last);
+	  ++__first;
+	}
+    }
+
+  /// This is a helper function...
+  template<typename _RandomAccessIterator, typename _Tp, typename _Compare>
+    _RandomAccessIterator
+    __unguarded_partition(_RandomAccessIterator __first,
+			  _RandomAccessIterator __last,
+			  const _Tp& __pivot, _Compare __comp)
+    {
+      while (true)
+	{
+	  while (__comp(*__first, __pivot))
+	    ++__first;
+	  --__last;
+	  while (__comp(__pivot, *__last))
+	    --__last;
+	  if (!(__first < __last))
+	    return __first;
+	  std::iter_swap(__first, __last);
+	  ++__first;
+	}
+    }
+
+  /// This is a helper function...
+  template<typename _RandomAccessIterator>
+    inline _RandomAccessIterator
+    __unguarded_partition_pivot(_RandomAccessIterator __first,
+				_RandomAccessIterator __last)
+    {
+      _RandomAccessIterator __mid = __first + (__last - __first) / 2;
+      std::__move_median_first(__first, __mid, (__last - 1));
+      return std::__unguarded_partition(__first + 1, __last, *__first);
+    }
+
+
+  /// This is a helper function...
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline _RandomAccessIterator
+    __unguarded_partition_pivot(_RandomAccessIterator __first,
+				_RandomAccessIterator __last, _Compare __comp)
+    {
+      _RandomAccessIterator __mid = __first + (__last - __first) / 2;
+      std::__move_median_first(__first, __mid, (__last - 1), __comp);
+      return std::__unguarded_partition(__first + 1, __last, *__first, __comp);
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Size>
+    void
+    __introsort_loop(_RandomAccessIterator __first,
+		     _RandomAccessIterator __last,
+		     _Size __depth_limit)
+    {
+      while (__last - __first > int(_S_threshold))
+	{
+	  if (__depth_limit == 0)
+	    {
+	      _GLIBCXX_STD_A::partial_sort(__first, __last, __last);
+	      return;
+	    }
+	  --__depth_limit;
+	  _RandomAccessIterator __cut =
+	    std::__unguarded_partition_pivot(__first, __last);
+	  std::__introsort_loop(__cut, __last, __depth_limit);
+	  __last = __cut;
+	}
+    }
+
+  /// This is a helper function for the sort routine.
+  template<typename _RandomAccessIterator, typename _Size, typename _Compare>
+    void
+    __introsort_loop(_RandomAccessIterator __first,
+		     _RandomAccessIterator __last,
+		     _Size __depth_limit, _Compare __comp)
+    {
+      while (__last - __first > int(_S_threshold))
+	{
+	  if (__depth_limit == 0)
+	    {
+	      _GLIBCXX_STD_A::partial_sort(__first, __last, __last, __comp);
+	      return;
+	    }
+	  --__depth_limit;
+	  _RandomAccessIterator __cut =
+	    std::__unguarded_partition_pivot(__first, __last, __comp);
+	  std::__introsort_loop(__cut, __last, __depth_limit, __comp);
+	  __last = __cut;
+	}
+    }
+
+  // sort
+
+  template<typename _RandomAccessIterator, typename _Size>
+    void
+    __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
+		  _RandomAccessIterator __last, _Size __depth_limit)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      while (__last - __first > 3)
+	{
+	  if (__depth_limit == 0)
+	    {
+	      std::__heap_select(__first, __nth + 1, __last);
+
+	      // Place the nth largest element in its final position.
+	      std::iter_swap(__first, __nth);
+	      return;
+	    }
+	  --__depth_limit;
+	  _RandomAccessIterator __cut =
+	    std::__unguarded_partition_pivot(__first, __last);
+	  if (__cut <= __nth)
+	    __first = __cut;
+	  else
+	    __last = __cut;
+	}
+      std::__insertion_sort(__first, __last);
+    }
+
+  template<typename _RandomAccessIterator, typename _Size, typename _Compare>
+    void
+    __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
+		  _RandomAccessIterator __last, _Size __depth_limit,
+		  _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      while (__last - __first > 3)
+	{
+	  if (__depth_limit == 0)
+	    {
+	      std::__heap_select(__first, __nth + 1, __last, __comp);
+	      // Place the nth largest element in its final position.
+	      std::iter_swap(__first, __nth);
+	      return;
+	    }
+	  --__depth_limit;
+	  _RandomAccessIterator __cut =
+	    std::__unguarded_partition_pivot(__first, __last, __comp);
+	  if (__cut <= __nth)
+	    __first = __cut;
+	  else
+	    __last = __cut;
+	}
+      std::__insertion_sort(__first, __last, __comp);
+    }
+
+  // nth_element
+
+  // lower_bound moved to stl_algobase.h
+
+  /**
+   *  @brief Finds the first position in which @a val could be inserted
+   *         without changing the ordering.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return An iterator pointing to the first element <em>not less
+   *           than</em> @a val, or end() if every element is less
+   *           than @a val.
+   *  @ingroup binary_search_algorithms
+   *
+   *  The comparison function should have the same effects on ordering as
+   *  the function used for the initial sort.
+  */
+  template<typename _ForwardIterator, typename _Tp, typename _Compare>
+    _ForwardIterator
+    lower_bound(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val, _Compare __comp)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType, _Tp>)
+      __glibcxx_requires_partitioned_lower_pred(__first, __last,
+						__val, __comp);
+
+      _DistanceType __len = std::distance(__first, __last);
+
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (__comp(*__middle, __val))
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	  else
+	    __len = __half;
+	}
+      return __first;
+    }
+
+  /**
+   *  @brief Finds the last position in which @a val could be inserted
+   *         without changing the ordering.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @return  An iterator pointing to the first element greater than @a val,
+   *           or end() if no elements are greater than @a val.
+   *  @ingroup binary_search_algorithms
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    _ForwardIterator
+    upper_bound(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
+      __glibcxx_requires_partitioned_upper(__first, __last, __val);
+
+      _DistanceType __len = std::distance(__first, __last);
+
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (__val < *__middle)
+	    __len = __half;
+	  else
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	}
+      return __first;
+    }
+
+  /**
+   *  @brief Finds the last position in which @a val could be inserted
+   *         without changing the ordering.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return  An iterator pointing to the first element greater than @a val,
+   *           or end() if no elements are greater than @a val.
+   *  @ingroup binary_search_algorithms
+   *
+   *  The comparison function should have the same effects on ordering as
+   *  the function used for the initial sort.
+  */
+  template<typename _ForwardIterator, typename _Tp, typename _Compare>
+    _ForwardIterator
+    upper_bound(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val, _Compare __comp)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _Tp, _ValueType>)
+      __glibcxx_requires_partitioned_upper_pred(__first, __last,
+						__val, __comp);
+
+      _DistanceType __len = std::distance(__first, __last);
+
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (__comp(__val, *__middle))
+	    __len = __half;
+	  else
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	}
+      return __first;
+    }
+
+  /**
+   *  @brief Finds the largest subrange in which @a val could be inserted
+   *         at any place in it without changing the ordering.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @return  An pair of iterators defining the subrange.
+   *  @ingroup binary_search_algorithms
+   *
+   *  This is equivalent to
+   *  @code
+   *    std::make_pair(lower_bound(first, last, val),
+   *                   upper_bound(first, last, val))
+   *  @endcode
+   *  but does not actually call those functions.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    pair<_ForwardIterator, _ForwardIterator>
+    equal_range(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>)
+      __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)	
+      __glibcxx_requires_partitioned_lower(__first, __last, __val);
+      __glibcxx_requires_partitioned_upper(__first, __last, __val);      
+
+      _DistanceType __len = std::distance(__first, __last);
+ 
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (*__middle < __val)
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	  else if (__val < *__middle)
+	    __len = __half;
+	  else
+	    {
+	      _ForwardIterator __left = std::lower_bound(__first, __middle,
+							 __val);
+	      std::advance(__first, __len);
+	      _ForwardIterator __right = std::upper_bound(++__middle, __first,
+							  __val);
+	      return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
+	    }
+	}
+      return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
+    }
+
+  /**
+   *  @brief Finds the largest subrange in which @a val could be inserted
+   *         at any place in it without changing the ordering.
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return  An pair of iterators defining the subrange.
+   *  @ingroup binary_search_algorithms
+   *
+   *  This is equivalent to
+   *  @code
+   *    std::make_pair(lower_bound(first, last, val, comp),
+   *                   upper_bound(first, last, val, comp))
+   *  @endcode
+   *  but does not actually call those functions.
+  */
+  template<typename _ForwardIterator, typename _Tp, typename _Compare>
+    pair<_ForwardIterator, _ForwardIterator>
+    equal_range(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val, _Compare __comp)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType, _Tp>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _Tp, _ValueType>)
+      __glibcxx_requires_partitioned_lower_pred(__first, __last,
+						__val, __comp);
+      __glibcxx_requires_partitioned_upper_pred(__first, __last,
+						__val, __comp);
+
+      _DistanceType __len = std::distance(__first, __last);
+
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (__comp(*__middle, __val))
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	  else if (__comp(__val, *__middle))
+	    __len = __half;
+	  else
+	    {
+	      _ForwardIterator __left = std::lower_bound(__first, __middle,
+							 __val, __comp);
+	      std::advance(__first, __len);
+	      _ForwardIterator __right = std::upper_bound(++__middle, __first,
+							  __val, __comp);
+	      return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
+	    }
+	}
+      return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
+    }
+
+  /**
+   *  @brief Determines whether an element exists in a range.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @return  True if @a val (or its equivalent) is in [@a first,@a last ].
+   *
+   *  Note that this does not actually return an iterator to @a val.  For
+   *  that, use std::find or a container's specialized find member functions.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    bool
+    binary_search(_ForwardIterator __first, _ForwardIterator __last,
+                  const _Tp& __val)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
+      __glibcxx_requires_partitioned_lower(__first, __last, __val);
+      __glibcxx_requires_partitioned_upper(__first, __last, __val);
+
+      _ForwardIterator __i = std::lower_bound(__first, __last, __val);
+      return __i != __last && !(__val < *__i);
+    }
+
+  /**
+   *  @brief Determines whether an element exists in a range.
+   *  @ingroup binary_search_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return  True if @a val (or its equivalent) is in [@a first,@a last ].
+   *
+   *  Note that this does not actually return an iterator to @a val.  For
+   *  that, use std::find or a container's specialized find member functions.
+   *
+   *  The comparison function should have the same effects on ordering as
+   *  the function used for the initial sort.
+  */
+  template<typename _ForwardIterator, typename _Tp, typename _Compare>
+    bool
+    binary_search(_ForwardIterator __first, _ForwardIterator __last,
+                  const _Tp& __val, _Compare __comp)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _Tp, _ValueType>)
+      __glibcxx_requires_partitioned_lower_pred(__first, __last,
+						__val, __comp);
+      __glibcxx_requires_partitioned_upper_pred(__first, __last,
+						__val, __comp);
+
+      _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp);
+      return __i != __last && !bool(__comp(__val, *__i));
+    }
+
+  // merge
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
+	   typename _BidirectionalIterator3>
+    _BidirectionalIterator3
+    __move_merge_backward(_BidirectionalIterator1 __first1,
+			  _BidirectionalIterator1 __last1,
+			  _BidirectionalIterator2 __first2,
+			  _BidirectionalIterator2 __last2,
+			  _BidirectionalIterator3 __result)
+    {
+      if (__first1 == __last1)
+	return _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
+      if (__first2 == __last2)
+	return _GLIBCXX_MOVE_BACKWARD3(__first1, __last1, __result);
+      --__last1;
+      --__last2;
+      while (true)
+	{
+	  if (*__last2 < *__last1)
+	    {
+	      *--__result = _GLIBCXX_MOVE(*__last1);
+	      if (__first1 == __last1)
+		return _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+	      --__last1;
+	    }
+	  else
+	    {
+	      *--__result = _GLIBCXX_MOVE(*__last2);
+	      if (__first2 == __last2)
+		return _GLIBCXX_MOVE_BACKWARD3(__first1, ++__last1, __result);
+	      --__last2;
+	    }
+	}
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
+	   typename _BidirectionalIterator3, typename _Compare>
+    _BidirectionalIterator3
+    __move_merge_backward(_BidirectionalIterator1 __first1,
+			  _BidirectionalIterator1 __last1,
+			  _BidirectionalIterator2 __first2,
+			  _BidirectionalIterator2 __last2,
+			  _BidirectionalIterator3 __result,
+			  _Compare __comp)
+    {
+      if (__first1 == __last1)
+	return _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
+      if (__first2 == __last2)
+	return _GLIBCXX_MOVE_BACKWARD3(__first1, __last1, __result);
+      --__last1;
+      --__last2;
+      while (true)
+	{
+	  if (__comp(*__last2, *__last1))
+	    {
+	      *--__result = _GLIBCXX_MOVE(*__last1);
+	      if (__first1 == __last1)
+		return _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+	      --__last1;
+	    }
+	  else
+	    {
+	      *--__result = _GLIBCXX_MOVE(*__last2);
+	      if (__first2 == __last2)
+		return _GLIBCXX_MOVE_BACKWARD3(__first1, ++__last1, __result);
+	      --__last2;
+	    }
+	}
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
+		 _InputIterator2 __first2, _InputIterator2 __last2,
+		 _OutputIterator __result)
+    {
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (*__first2 < *__first1)
+	    {
+	      *__result = _GLIBCXX_MOVE(*__first2);
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = _GLIBCXX_MOVE(*__first1);
+	      ++__first1;
+	    }
+	  ++__result;
+	}
+      return _GLIBCXX_MOVE3(__first2, __last2,
+			    _GLIBCXX_MOVE3(__first1, __last1,
+					   __result));
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
+		 _InputIterator2 __first2, _InputIterator2 __last2,
+		 _OutputIterator __result, _Compare __comp)
+    {
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (__comp(*__first2, *__first1))
+	    {
+	      *__result = _GLIBCXX_MOVE(*__first2);
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = _GLIBCXX_MOVE(*__first1);
+	      ++__first1;
+	    }
+	  ++__result;
+	}
+      return _GLIBCXX_MOVE3(__first2, __last2,
+			    _GLIBCXX_MOVE3(__first1, __last1,
+					   __result));
+    }
+
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
+	   typename _Distance>
+    _BidirectionalIterator1
+    __rotate_adaptive(_BidirectionalIterator1 __first,
+		      _BidirectionalIterator1 __middle,
+		      _BidirectionalIterator1 __last,
+		      _Distance __len1, _Distance __len2,
+		      _BidirectionalIterator2 __buffer,
+		      _Distance __buffer_size)
+    {
+      _BidirectionalIterator2 __buffer_end;
+      if (__len1 > __len2 && __len2 <= __buffer_size)
+	{
+	  __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
+	  _GLIBCXX_MOVE_BACKWARD3(__first, __middle, __last);
+	  return _GLIBCXX_MOVE3(__buffer, __buffer_end, __first);
+	}
+      else if (__len1 <= __buffer_size)
+	{
+	  __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
+	  _GLIBCXX_MOVE3(__middle, __last, __first);
+	  return _GLIBCXX_MOVE_BACKWARD3(__buffer, __buffer_end, __last);
+	}
+      else
+	{
+	  std::rotate(__first, __middle, __last);
+	  std::advance(__first, std::distance(__middle, __last));
+	  return __first;
+	}
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator, typename _Distance,
+	   typename _Pointer>
+    void
+    __merge_adaptive(_BidirectionalIterator __first,
+                     _BidirectionalIterator __middle,
+		     _BidirectionalIterator __last,
+		     _Distance __len1, _Distance __len2,
+		     _Pointer __buffer, _Distance __buffer_size)
+    {
+      if (__len1 <= __len2 && __len1 <= __buffer_size)
+	{
+	  _Pointer __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
+	  std::__move_merge(__buffer, __buffer_end, __middle, __last, __first);
+	}
+      else if (__len2 <= __buffer_size)
+	{
+	  _Pointer __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
+	  std::__move_merge_backward(__first, __middle, __buffer,
+				    __buffer_end, __last);
+	}
+      else
+	{
+	  _BidirectionalIterator __first_cut = __first;
+	  _BidirectionalIterator __second_cut = __middle;
+	  _Distance __len11 = 0;
+	  _Distance __len22 = 0;
+	  if (__len1 > __len2)
+	    {
+	      __len11 = __len1 / 2;
+	      std::advance(__first_cut, __len11);
+	      __second_cut = std::lower_bound(__middle, __last,
+					      *__first_cut);
+	      __len22 = std::distance(__middle, __second_cut);
+	    }
+	  else
+	    {
+	      __len22 = __len2 / 2;
+	      std::advance(__second_cut, __len22);
+	      __first_cut = std::upper_bound(__first, __middle,
+					     *__second_cut);
+	      __len11 = std::distance(__first, __first_cut);
+	    }
+	  _BidirectionalIterator __new_middle =
+	    std::__rotate_adaptive(__first_cut, __middle, __second_cut,
+				   __len1 - __len11, __len22, __buffer,
+				   __buffer_size);
+	  std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
+				__len22, __buffer, __buffer_size);
+	  std::__merge_adaptive(__new_middle, __second_cut, __last,
+				__len1 - __len11,
+				__len2 - __len22, __buffer, __buffer_size);
+	}
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator, typename _Distance, 
+	   typename _Pointer, typename _Compare>
+    void
+    __merge_adaptive(_BidirectionalIterator __first,
+                     _BidirectionalIterator __middle,
+		     _BidirectionalIterator __last,
+		     _Distance __len1, _Distance __len2,
+		     _Pointer __buffer, _Distance __buffer_size,
+		     _Compare __comp)
+    {
+      if (__len1 <= __len2 && __len1 <= __buffer_size)
+	{
+	  _Pointer __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
+	  std::__move_merge(__buffer, __buffer_end, __middle, __last,
+			    __first, __comp);
+	}
+      else if (__len2 <= __buffer_size)
+	{
+	  _Pointer __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
+	  std::__move_merge_backward(__first, __middle, __buffer, __buffer_end,
+				     __last, __comp);
+	}
+      else
+	{
+	  _BidirectionalIterator __first_cut = __first;
+	  _BidirectionalIterator __second_cut = __middle;
+	  _Distance __len11 = 0;
+	  _Distance __len22 = 0;
+	  if (__len1 > __len2)
+	    {
+	      __len11 = __len1 / 2;
+	      std::advance(__first_cut, __len11);
+	      __second_cut = std::lower_bound(__middle, __last, *__first_cut,
+					      __comp);
+	      __len22 = std::distance(__middle, __second_cut);
+	    }
+	  else
+	    {
+	      __len22 = __len2 / 2;
+	      std::advance(__second_cut, __len22);
+	      __first_cut = std::upper_bound(__first, __middle, *__second_cut,
+					     __comp);
+	      __len11 = std::distance(__first, __first_cut);
+	    }
+	  _BidirectionalIterator __new_middle =
+	    std::__rotate_adaptive(__first_cut, __middle, __second_cut,
+				   __len1 - __len11, __len22, __buffer,
+				   __buffer_size);
+	  std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
+				__len22, __buffer, __buffer_size, __comp);
+	  std::__merge_adaptive(__new_middle, __second_cut, __last,
+				__len1 - __len11,
+				__len2 - __len22, __buffer,
+				__buffer_size, __comp);
+	}
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator, typename _Distance>
+    void
+    __merge_without_buffer(_BidirectionalIterator __first,
+			   _BidirectionalIterator __middle,
+			   _BidirectionalIterator __last,
+			   _Distance __len1, _Distance __len2)
+    {
+      if (__len1 == 0 || __len2 == 0)
+	return;
+      if (__len1 + __len2 == 2)
+	{
+	  if (*__middle < *__first)
+	    std::iter_swap(__first, __middle);
+	  return;
+	}
+      _BidirectionalIterator __first_cut = __first;
+      _BidirectionalIterator __second_cut = __middle;
+      _Distance __len11 = 0;
+      _Distance __len22 = 0;
+      if (__len1 > __len2)
+	{
+	  __len11 = __len1 / 2;
+	  std::advance(__first_cut, __len11);
+	  __second_cut = std::lower_bound(__middle, __last, *__first_cut);
+	  __len22 = std::distance(__middle, __second_cut);
+	}
+      else
+	{
+	  __len22 = __len2 / 2;
+	  std::advance(__second_cut, __len22);
+	  __first_cut = std::upper_bound(__first, __middle, *__second_cut);
+	  __len11 = std::distance(__first, __first_cut);
+	}
+      std::rotate(__first_cut, __middle, __second_cut);
+      _BidirectionalIterator __new_middle = __first_cut;
+      std::advance(__new_middle, std::distance(__middle, __second_cut));
+      std::__merge_without_buffer(__first, __first_cut, __new_middle,
+				  __len11, __len22);
+      std::__merge_without_buffer(__new_middle, __second_cut, __last,
+				  __len1 - __len11, __len2 - __len22);
+    }
+
+  /// This is a helper function for the merge routines.
+  template<typename _BidirectionalIterator, typename _Distance,
+	   typename _Compare>
+    void
+    __merge_without_buffer(_BidirectionalIterator __first,
+                           _BidirectionalIterator __middle,
+			   _BidirectionalIterator __last,
+			   _Distance __len1, _Distance __len2,
+			   _Compare __comp)
+    {
+      if (__len1 == 0 || __len2 == 0)
+	return;
+      if (__len1 + __len2 == 2)
+	{
+	  if (__comp(*__middle, *__first))
+	    std::iter_swap(__first, __middle);
+	  return;
+	}
+      _BidirectionalIterator __first_cut = __first;
+      _BidirectionalIterator __second_cut = __middle;
+      _Distance __len11 = 0;
+      _Distance __len22 = 0;
+      if (__len1 > __len2)
+	{
+	  __len11 = __len1 / 2;
+	  std::advance(__first_cut, __len11);
+	  __second_cut = std::lower_bound(__middle, __last, *__first_cut,
+					  __comp);
+	  __len22 = std::distance(__middle, __second_cut);
+	}
+      else
+	{
+	  __len22 = __len2 / 2;
+	  std::advance(__second_cut, __len22);
+	  __first_cut = std::upper_bound(__first, __middle, *__second_cut,
+					 __comp);
+	  __len11 = std::distance(__first, __first_cut);
+	}
+      std::rotate(__first_cut, __middle, __second_cut);
+      _BidirectionalIterator __new_middle = __first_cut;
+      std::advance(__new_middle, std::distance(__middle, __second_cut));
+      std::__merge_without_buffer(__first, __first_cut, __new_middle,
+				  __len11, __len22, __comp);
+      std::__merge_without_buffer(__new_middle, __second_cut, __last,
+				  __len1 - __len11, __len2 - __len22, __comp);
+    }
+
+  /**
+   *  @brief Merges two sorted ranges in place.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  middle  Another iterator.
+   *  @param  last    Another iterator.
+   *  @return  Nothing.
+   *
+   *  Merges two sorted and consecutive ranges, [first,middle) and
+   *  [middle,last), and puts the result in [first,last).  The output will
+   *  be sorted.  The sort is @e stable, that is, for equivalent
+   *  elements in the two ranges, elements from the first range will always
+   *  come before elements from the second.
+   *
+   *  If enough additional memory is available, this takes (last-first)-1
+   *  comparisons.  Otherwise an NlogN algorithm is used, where N is
+   *  distance(first,last).
+  */
+  template<typename _BidirectionalIterator>
+    void
+    inplace_merge(_BidirectionalIterator __first,
+		  _BidirectionalIterator __middle,
+		  _BidirectionalIterator __last)
+    {
+      typedef typename iterator_traits<_BidirectionalIterator>::value_type
+          _ValueType;
+      typedef typename iterator_traits<_BidirectionalIterator>::difference_type
+          _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<
+	    _BidirectionalIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_sorted(__first, __middle);
+      __glibcxx_requires_sorted(__middle, __last);
+
+      if (__first == __middle || __middle == __last)
+	return;
+
+      _DistanceType __len1 = std::distance(__first, __middle);
+      _DistanceType __len2 = std::distance(__middle, __last);
+
+      _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
+								  __last);
+      if (__buf.begin() == 0)
+	std::__merge_without_buffer(__first, __middle, __last, __len1, __len2);
+      else
+	std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
+			      __buf.begin(), _DistanceType(__buf.size()));
+    }
+
+  /**
+   *  @brief Merges two sorted ranges in place.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  middle  Another iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return  Nothing.
+   *
+   *  Merges two sorted and consecutive ranges, [first,middle) and
+   *  [middle,last), and puts the result in [first,last).  The output will
+   *  be sorted.  The sort is @e stable, that is, for equivalent
+   *  elements in the two ranges, elements from the first range will always
+   *  come before elements from the second.
+   *
+   *  If enough additional memory is available, this takes (last-first)-1
+   *  comparisons.  Otherwise an NlogN algorithm is used, where N is
+   *  distance(first,last).
+   *
+   *  The comparison function should have the same effects on ordering as
+   *  the function used for the initial sort.
+  */
+  template<typename _BidirectionalIterator, typename _Compare>
+    void
+    inplace_merge(_BidirectionalIterator __first,
+		  _BidirectionalIterator __middle,
+		  _BidirectionalIterator __last,
+		  _Compare __comp)
+    {
+      typedef typename iterator_traits<_BidirectionalIterator>::value_type
+          _ValueType;
+      typedef typename iterator_traits<_BidirectionalIterator>::difference_type
+          _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<
+	    _BidirectionalIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    _ValueType, _ValueType>)
+      __glibcxx_requires_sorted_pred(__first, __middle, __comp);
+      __glibcxx_requires_sorted_pred(__middle, __last, __comp);
+
+      if (__first == __middle || __middle == __last)
+	return;
+
+      const _DistanceType __len1 = std::distance(__first, __middle);
+      const _DistanceType __len2 = std::distance(__middle, __last);
+
+      _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
+								  __last);
+      if (__buf.begin() == 0)
+	std::__merge_without_buffer(__first, __middle, __last, __len1,
+				    __len2, __comp);
+      else
+	std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
+			      __buf.begin(), _DistanceType(__buf.size()),
+			      __comp);
+    }
+
+  template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
+	   typename _Distance>
+    void
+    __merge_sort_loop(_RandomAccessIterator1 __first,
+		      _RandomAccessIterator1 __last,
+		      _RandomAccessIterator2 __result,
+		      _Distance __step_size)
+    {
+      const _Distance __two_step = 2 * __step_size;
+
+      while (__last - __first >= __two_step)
+	{
+	  __result = std::__move_merge(__first, __first + __step_size,
+				       __first + __step_size,
+				       __first + __two_step, __result);
+	  __first += __two_step;
+	}
+
+      __step_size = std::min(_Distance(__last - __first), __step_size);
+      std::__move_merge(__first, __first + __step_size,
+			__first + __step_size, __last, __result);
+    }
+
+  template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
+	   typename _Distance, typename _Compare>
+    void
+    __merge_sort_loop(_RandomAccessIterator1 __first,
+		      _RandomAccessIterator1 __last,
+		      _RandomAccessIterator2 __result, _Distance __step_size,
+		      _Compare __comp)
+    {
+      const _Distance __two_step = 2 * __step_size;
+
+      while (__last - __first >= __two_step)
+	{
+	  __result = std::__move_merge(__first, __first + __step_size,
+				       __first + __step_size,
+				       __first + __two_step,
+				       __result, __comp);
+	  __first += __two_step;
+	}
+      __step_size = std::min(_Distance(__last - __first), __step_size);
+
+      std::__move_merge(__first,__first + __step_size,
+			__first + __step_size, __last, __result, __comp);
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance>
+    void
+    __chunk_insertion_sort(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last,
+			   _Distance __chunk_size)
+    {
+      while (__last - __first >= __chunk_size)
+	{
+	  std::__insertion_sort(__first, __first + __chunk_size);
+	  __first += __chunk_size;
+	}
+      std::__insertion_sort(__first, __last);
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance,
+	   typename _Compare>
+    void
+    __chunk_insertion_sort(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last,
+			   _Distance __chunk_size, _Compare __comp)
+    {
+      while (__last - __first >= __chunk_size)
+	{
+	  std::__insertion_sort(__first, __first + __chunk_size, __comp);
+	  __first += __chunk_size;
+	}
+      std::__insertion_sort(__first, __last, __comp);
+    }
+
+  enum { _S_chunk_size = 7 };
+
+  template<typename _RandomAccessIterator, typename _Pointer>
+    void
+    __merge_sort_with_buffer(_RandomAccessIterator __first,
+			     _RandomAccessIterator __last,
+                             _Pointer __buffer)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_Distance;
+
+      const _Distance __len = __last - __first;
+      const _Pointer __buffer_last = __buffer + __len;
+
+      _Distance __step_size = _S_chunk_size;
+      std::__chunk_insertion_sort(__first, __last, __step_size);
+
+      while (__step_size < __len)
+	{
+	  std::__merge_sort_loop(__first, __last, __buffer, __step_size);
+	  __step_size *= 2;
+	  std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size);
+	  __step_size *= 2;
+	}
+    }
+
+  template<typename _RandomAccessIterator, typename _Pointer, typename _Compare>
+    void
+    __merge_sort_with_buffer(_RandomAccessIterator __first,
+			     _RandomAccessIterator __last,
+                             _Pointer __buffer, _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_Distance;
+
+      const _Distance __len = __last - __first;
+      const _Pointer __buffer_last = __buffer + __len;
+
+      _Distance __step_size = _S_chunk_size;
+      std::__chunk_insertion_sort(__first, __last, __step_size, __comp);
+
+      while (__step_size < __len)
+	{
+	  std::__merge_sort_loop(__first, __last, __buffer,
+				 __step_size, __comp);
+	  __step_size *= 2;
+	  std::__merge_sort_loop(__buffer, __buffer_last, __first,
+				 __step_size, __comp);
+	  __step_size *= 2;
+	}
+    }
+
+  template<typename _RandomAccessIterator, typename _Pointer,
+	   typename _Distance>
+    void
+    __stable_sort_adaptive(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last,
+                           _Pointer __buffer, _Distance __buffer_size)
+    {
+      const _Distance __len = (__last - __first + 1) / 2;
+      const _RandomAccessIterator __middle = __first + __len;
+      if (__len > __buffer_size)
+	{
+	  std::__stable_sort_adaptive(__first, __middle,
+				      __buffer, __buffer_size);
+	  std::__stable_sort_adaptive(__middle, __last,
+				      __buffer, __buffer_size);
+	}
+      else
+	{
+	  std::__merge_sort_with_buffer(__first, __middle, __buffer);
+	  std::__merge_sort_with_buffer(__middle, __last, __buffer);
+	}
+      std::__merge_adaptive(__first, __middle, __last,
+			    _Distance(__middle - __first),
+			    _Distance(__last - __middle),
+			    __buffer, __buffer_size);
+    }
+
+  template<typename _RandomAccessIterator, typename _Pointer,
+	   typename _Distance, typename _Compare>
+    void
+    __stable_sort_adaptive(_RandomAccessIterator __first,
+			   _RandomAccessIterator __last,
+                           _Pointer __buffer, _Distance __buffer_size,
+                           _Compare __comp)
+    {
+      const _Distance __len = (__last - __first + 1) / 2;
+      const _RandomAccessIterator __middle = __first + __len;
+      if (__len > __buffer_size)
+	{
+	  std::__stable_sort_adaptive(__first, __middle, __buffer,
+				      __buffer_size, __comp);
+	  std::__stable_sort_adaptive(__middle, __last, __buffer,
+				      __buffer_size, __comp);
+	}
+      else
+	{
+	  std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp);
+	  std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp);
+	}
+      std::__merge_adaptive(__first, __middle, __last,
+			    _Distance(__middle - __first),
+			    _Distance(__last - __middle),
+			    __buffer, __buffer_size,
+			    __comp);
+    }
+
+  /// This is a helper function for the stable sorting routines.
+  template<typename _RandomAccessIterator>
+    void
+    __inplace_stable_sort(_RandomAccessIterator __first,
+			  _RandomAccessIterator __last)
+    {
+      if (__last - __first < 15)
+	{
+	  std::__insertion_sort(__first, __last);
+	  return;
+	}
+      _RandomAccessIterator __middle = __first + (__last - __first) / 2;
+      std::__inplace_stable_sort(__first, __middle);
+      std::__inplace_stable_sort(__middle, __last);
+      std::__merge_without_buffer(__first, __middle, __last,
+				  __middle - __first,
+				  __last - __middle);
+    }
+
+  /// This is a helper function for the stable sorting routines.
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    __inplace_stable_sort(_RandomAccessIterator __first,
+			  _RandomAccessIterator __last, _Compare __comp)
+    {
+      if (__last - __first < 15)
+	{
+	  std::__insertion_sort(__first, __last, __comp);
+	  return;
+	}
+      _RandomAccessIterator __middle = __first + (__last - __first) / 2;
+      std::__inplace_stable_sort(__first, __middle, __comp);
+      std::__inplace_stable_sort(__middle, __last, __comp);
+      std::__merge_without_buffer(__first, __middle, __last,
+				  __middle - __first,
+				  __last - __middle,
+				  __comp);
+    }
+
+  // stable_sort
+
+  // Set algorithms: includes, set_union, set_intersection, set_difference,
+  // set_symmetric_difference.  All of these algorithms have the precondition
+  // that their input ranges are sorted and the postcondition that their output
+  // ranges are sorted.
+
+  /**
+   *  @brief Determines whether all elements of a sequence exists in a range.
+   *  @param  first1  Start of search range.
+   *  @param  last1   End of search range.
+   *  @param  first2  Start of sequence
+   *  @param  last2   End of sequence.
+   *  @return  True if each element in [first2,last2) is contained in order
+   *  within [first1,last1).  False otherwise.
+   *  @ingroup set_algorithms
+   *
+   *  This operation expects both [first1,last1) and [first2,last2) to be
+   *  sorted.  Searches for the presence of each element in [first2,last2)
+   *  within [first1,last1).  The iterators over each range only move forward,
+   *  so this is a linear algorithm.  If an element in [first2,last2) is not
+   *  found before the search iterator reaches @a last2, false is returned.
+  */
+  template<typename _InputIterator1, typename _InputIterator2>
+    bool
+    includes(_InputIterator1 __first1, _InputIterator1 __last1,
+	     _InputIterator2 __first2, _InputIterator2 __last2)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (*__first2 < *__first1)
+	  return false;
+	else if(*__first1 < *__first2)
+	  ++__first1;
+	else
+	  ++__first1, ++__first2;
+
+      return __first2 == __last2;
+    }
+
+  /**
+   *  @brief Determines whether all elements of a sequence exists in a range
+   *  using comparison.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of search range.
+   *  @param  last1   End of search range.
+   *  @param  first2  Start of sequence
+   *  @param  last2   End of sequence.
+   *  @param  comp    Comparison function to use.
+   *  @return  True if each element in [first2,last2) is contained in order
+   *  within [first1,last1) according to comp.  False otherwise.
+   *  @ingroup set_algorithms
+   *
+   *  This operation expects both [first1,last1) and [first2,last2) to be
+   *  sorted.  Searches for the presence of each element in [first2,last2)
+   *  within [first1,last1), using comp to decide.  The iterators over each
+   *  range only move forward, so this is a linear algorithm.  If an element
+   *  in [first2,last2) is not found before the search iterator reaches @a
+   *  last2, false is returned.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _Compare>
+    bool
+    includes(_InputIterator1 __first1, _InputIterator1 __last1,
+	     _InputIterator2 __first2, _InputIterator2 __last2,
+	     _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (__comp(*__first2, *__first1))
+	  return false;
+	else if(__comp(*__first1, *__first2))
+	  ++__first1;
+	else
+	  ++__first1, ++__first2;
+
+      return __first2 == __last2;
+    }
+
+  // nth_element
+  // merge
+  // set_difference
+  // set_intersection
+  // set_union
+  // stable_sort
+  // set_symmetric_difference
+  // min_element
+  // max_element
+
+  /**
+   *  @brief  Permute range into the next @a dictionary ordering.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  False if wrapped to first permutation, true otherwise.
+   *
+   *  Treats all permutations of the range as a set of @a dictionary sorted
+   *  sequences.  Permutes the current sequence into the next one of this set.
+   *  Returns true if there are more sequences to generate.  If the sequence
+   *  is the largest of the set, the smallest is generated and false returned.
+  */
+  template<typename _BidirectionalIterator>
+    bool
+    next_permutation(_BidirectionalIterator __first,
+		     _BidirectionalIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_BidirectionalIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return false;
+      _BidirectionalIterator __i = __first;
+      ++__i;
+      if (__i == __last)
+	return false;
+      __i = __last;
+      --__i;
+
+      for(;;)
+	{
+	  _BidirectionalIterator __ii = __i;
+	  --__i;
+	  if (*__i < *__ii)
+	    {
+	      _BidirectionalIterator __j = __last;
+	      while (!(*__i < *--__j))
+		{}
+	      std::iter_swap(__i, __j);
+	      std::reverse(__ii, __last);
+	      return true;
+	    }
+	  if (__i == __first)
+	    {
+	      std::reverse(__first, __last);
+	      return false;
+	    }
+	}
+    }
+
+  /**
+   *  @brief  Permute range into the next @a dictionary ordering using
+   *          comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   A comparison functor.
+   *  @return  False if wrapped to first permutation, true otherwise.
+   *
+   *  Treats all permutations of the range [first,last) as a set of
+   *  @a dictionary sorted sequences ordered by @a comp.  Permutes the current
+   *  sequence into the next one of this set.  Returns true if there are more
+   *  sequences to generate.  If the sequence is the largest of the set, the
+   *  smallest is generated and false returned.
+  */
+  template<typename _BidirectionalIterator, typename _Compare>
+    bool
+    next_permutation(_BidirectionalIterator __first,
+		     _BidirectionalIterator __last, _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_BidirectionalIterator>::value_type,
+	    typename iterator_traits<_BidirectionalIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return false;
+      _BidirectionalIterator __i = __first;
+      ++__i;
+      if (__i == __last)
+	return false;
+      __i = __last;
+      --__i;
+
+      for(;;)
+	{
+	  _BidirectionalIterator __ii = __i;
+	  --__i;
+	  if (__comp(*__i, *__ii))
+	    {
+	      _BidirectionalIterator __j = __last;
+	      while (!bool(__comp(*__i, *--__j)))
+		{}
+	      std::iter_swap(__i, __j);
+	      std::reverse(__ii, __last);
+	      return true;
+	    }
+	  if (__i == __first)
+	    {
+	      std::reverse(__first, __last);
+	      return false;
+	    }
+	}
+    }
+
+  /**
+   *  @brief  Permute range into the previous @a dictionary ordering.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  False if wrapped to last permutation, true otherwise.
+   *
+   *  Treats all permutations of the range as a set of @a dictionary sorted
+   *  sequences.  Permutes the current sequence into the previous one of this
+   *  set.  Returns true if there are more sequences to generate.  If the
+   *  sequence is the smallest of the set, the largest is generated and false
+   *  returned.
+  */
+  template<typename _BidirectionalIterator>
+    bool
+    prev_permutation(_BidirectionalIterator __first,
+		     _BidirectionalIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_BidirectionalIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return false;
+      _BidirectionalIterator __i = __first;
+      ++__i;
+      if (__i == __last)
+	return false;
+      __i = __last;
+      --__i;
+
+      for(;;)
+	{
+	  _BidirectionalIterator __ii = __i;
+	  --__i;
+	  if (*__ii < *__i)
+	    {
+	      _BidirectionalIterator __j = __last;
+	      while (!(*--__j < *__i))
+		{}
+	      std::iter_swap(__i, __j);
+	      std::reverse(__ii, __last);
+	      return true;
+	    }
+	  if (__i == __first)
+	    {
+	      std::reverse(__first, __last);
+	      return false;
+	    }
+	}
+    }
+
+  /**
+   *  @brief  Permute range into the previous @a dictionary ordering using
+   *          comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   A comparison functor.
+   *  @return  False if wrapped to last permutation, true otherwise.
+   *
+   *  Treats all permutations of the range [first,last) as a set of
+   *  @a dictionary sorted sequences ordered by @a comp.  Permutes the current
+   *  sequence into the previous one of this set.  Returns true if there are
+   *  more sequences to generate.  If the sequence is the smallest of the set,
+   *  the largest is generated and false returned.
+  */
+  template<typename _BidirectionalIterator, typename _Compare>
+    bool
+    prev_permutation(_BidirectionalIterator __first,
+		     _BidirectionalIterator __last, _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_BidirectionalIterator>::value_type,
+	    typename iterator_traits<_BidirectionalIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return false;
+      _BidirectionalIterator __i = __first;
+      ++__i;
+      if (__i == __last)
+	return false;
+      __i = __last;
+      --__i;
+
+      for(;;)
+	{
+	  _BidirectionalIterator __ii = __i;
+	  --__i;
+	  if (__comp(*__ii, *__i))
+	    {
+	      _BidirectionalIterator __j = __last;
+	      while (!bool(__comp(*--__j, *__i)))
+		{}
+	      std::iter_swap(__i, __j);
+	      std::reverse(__ii, __last);
+	      return true;
+	    }
+	  if (__i == __first)
+	    {
+	      std::reverse(__first, __last);
+	      return false;
+	    }
+	}
+    }
+
+  // replace
+  // replace_if
+
+  /**
+   *  @brief Copy a sequence, replacing each element of one value with another
+   *         value.
+   *  @param  first      An input iterator.
+   *  @param  last       An input iterator.
+   *  @param  result     An output iterator.
+   *  @param  old_value  The value to be replaced.
+   *  @param  new_value  The replacement value.
+   *  @return   The end of the output sequence, @p result+(last-first).
+   *
+   *  Copies each element in the input range @p [first,last) to the
+   *  output range @p [result,result+(last-first)) replacing elements
+   *  equal to @p old_value with @p new_value.
+  */
+  template<typename _InputIterator, typename _OutputIterator, typename _Tp>
+    _OutputIterator
+    replace_copy(_InputIterator __first, _InputIterator __last,
+		 _OutputIterator __result,
+		 const _Tp& __old_value, const _Tp& __new_value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_InputIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first, ++__result)
+	if (*__first == __old_value)
+	  *__result = __new_value;
+	else
+	  *__result = *__first;
+      return __result;
+    }
+
+  /**
+   *  @brief Copy a sequence, replacing each value for which a predicate
+   *         returns true with another value.
+   *  @ingroup mutating_algorithms
+   *  @param  first      An input iterator.
+   *  @param  last       An input iterator.
+   *  @param  result     An output iterator.
+   *  @param  pred       A predicate.
+   *  @param  new_value  The replacement value.
+   *  @return   The end of the output sequence, @p result+(last-first).
+   *
+   *  Copies each element in the range @p [first,last) to the range
+   *  @p [result,result+(last-first)) replacing elements for which
+   *  @p pred returns true with @p new_value.
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _Predicate, typename _Tp>
+    _OutputIterator
+    replace_copy_if(_InputIterator __first, _InputIterator __last,
+		    _OutputIterator __result,
+		    _Predicate __pred, const _Tp& __new_value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first, ++__result)
+	if (__pred(*__first))
+	  *__result = __new_value;
+	else
+	  *__result = *__first;
+      return __result;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief  Determines whether the elements of a sequence are sorted.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @return  True if the elements are sorted, false otherwise.
+  */
+  template<typename _ForwardIterator>
+    inline bool
+    is_sorted(_ForwardIterator __first, _ForwardIterator __last)
+    { return std::is_sorted_until(__first, __last) == __last; }
+
+  /**
+   *  @brief  Determines whether the elements of a sequence are sorted
+   *          according to a comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  True if the elements are sorted, false otherwise.
+  */
+  template<typename _ForwardIterator, typename _Compare>
+    inline bool
+    is_sorted(_ForwardIterator __first, _ForwardIterator __last,
+	      _Compare __comp)
+    { return std::is_sorted_until(__first, __last, __comp) == __last; }
+
+  /**
+   *  @brief  Determines the end of a sorted sequence.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @return  An iterator pointing to the last iterator i in [first, last)
+   *           for which the range [first, i) is sorted.
+  */
+  template<typename _ForwardIterator>
+    _ForwardIterator
+    is_sorted_until(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __last;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+	if (*__next < *__first)
+	  return __next;
+      return __next;
+    }
+
+  /**
+   *  @brief  Determines the end of a sorted sequence using comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  An iterator pointing to the last iterator i in [first, last)
+   *           for which the range [first, i) is sorted.
+  */
+  template<typename _ForwardIterator, typename _Compare>
+    _ForwardIterator
+    is_sorted_until(_ForwardIterator __first, _ForwardIterator __last,
+		    _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __last;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+	if (__comp(*__next, *__first))
+	  return __next;
+      return __next;
+    }
+
+  /**
+   *  @brief  Determines min and max at once as an ordered pair.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @return  A pair(b, a) if b is smaller than a, pair(a, b) otherwise.
+  */
+  template<typename _Tp>
+    inline pair<const _Tp&, const _Tp&>
+    minmax(const _Tp& __a, const _Tp& __b)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
+
+      return __b < __a ? pair<const _Tp&, const _Tp&>(__b, __a)
+	               : pair<const _Tp&, const _Tp&>(__a, __b);
+    }
+
+  /**
+   *  @brief  Determines min and max at once as an ordered pair.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @param  comp  A @link comparison_functor comparison functor@endlink.
+   *  @return  A pair(b, a) if b is smaller than a, pair(a, b) otherwise.
+  */
+  template<typename _Tp, typename _Compare>
+    inline pair<const _Tp&, const _Tp&>
+    minmax(const _Tp& __a, const _Tp& __b, _Compare __comp)
+    {
+      return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a)
+	                      : pair<const _Tp&, const _Tp&>(__a, __b);
+    }
+
+  /**
+   *  @brief  Return a pair of iterators pointing to the minimum and maximum
+   *          elements in a range.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  make_pair(m, M), where m is the first iterator i in 
+   *           [first, last) such that no other element in the range is
+   *           smaller, and where M is the last iterator i in [first, last)
+   *           such that no other element in the range is larger.
+  */
+  template<typename _ForwardIterator>
+    pair<_ForwardIterator, _ForwardIterator>
+    minmax_element(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _ForwardIterator __next = __first;
+      if (__first == __last
+	  || ++__next == __last)
+	return std::make_pair(__first, __first);
+
+      _ForwardIterator __min, __max;
+      if (*__next < *__first)
+	{
+	  __min = __next;
+	  __max = __first;
+	}
+      else
+	{
+	  __min = __first;
+	  __max = __next;
+	}
+
+      __first = __next;
+      ++__first;
+
+      while (__first != __last)
+	{
+	  __next = __first;
+	  if (++__next == __last)
+	    {
+	      if (*__first < *__min)
+		__min = __first;
+	      else if (!(*__first < *__max))
+		__max = __first;
+	      break;
+	    }
+
+	  if (*__next < *__first)
+	    {
+	      if (*__next < *__min)
+		__min = __next;
+	      if (!(*__first < *__max))
+		__max = __first;
+	    }
+	  else
+	    {
+	      if (*__first < *__min)
+		__min = __first;
+	      if (!(*__next < *__max))
+		__max = __next;
+	    }
+
+	  __first = __next;
+	  ++__first;
+	}
+
+      return std::make_pair(__min, __max);
+    }
+
+  /**
+   *  @brief  Return a pair of iterators pointing to the minimum and maximum
+   *          elements in a range.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   Comparison functor.
+   *  @return  make_pair(m, M), where m is the first iterator i in 
+   *           [first, last) such that no other element in the range is
+   *           smaller, and where M is the last iterator i in [first, last)
+   *           such that no other element in the range is larger.
+  */
+  template<typename _ForwardIterator, typename _Compare>
+    pair<_ForwardIterator, _ForwardIterator>
+    minmax_element(_ForwardIterator __first, _ForwardIterator __last,
+		   _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _ForwardIterator __next = __first;
+      if (__first == __last
+	  || ++__next == __last)
+	return std::make_pair(__first, __first);
+
+      _ForwardIterator __min, __max;
+      if (__comp(*__next, *__first))
+	{
+	  __min = __next;
+	  __max = __first;
+	}
+      else
+	{
+	  __min = __first;
+	  __max = __next;
+	}
+
+      __first = __next;
+      ++__first;
+
+      while (__first != __last)
+	{
+	  __next = __first;
+	  if (++__next == __last)
+	    {
+	      if (__comp(*__first, *__min))
+		__min = __first;
+	      else if (!__comp(*__first, *__max))
+		__max = __first;
+	      break;
+	    }
+
+	  if (__comp(*__next, *__first))
+	    {
+	      if (__comp(*__next, *__min))
+		__min = __next;
+	      if (!__comp(*__first, *__max))
+		__max = __first;
+	    }
+	  else
+	    {
+	      if (__comp(*__first, *__min))
+		__min = __first;
+	      if (!__comp(*__next, *__max))
+		__max = __next;
+	    }
+
+	  __first = __next;
+	  ++__first;
+	}
+
+      return std::make_pair(__min, __max);
+    }
+
+  // N2722 + DR 915.
+  template<typename _Tp>
+    inline _Tp
+    min(initializer_list<_Tp> __l)
+    { return *std::min_element(__l.begin(), __l.end()); }
+
+  template<typename _Tp, typename _Compare>
+    inline _Tp
+    min(initializer_list<_Tp> __l, _Compare __comp)
+    { return *std::min_element(__l.begin(), __l.end(), __comp); }
+
+  template<typename _Tp>
+    inline _Tp
+    max(initializer_list<_Tp> __l)
+    { return *std::max_element(__l.begin(), __l.end()); }
+
+  template<typename _Tp, typename _Compare>
+    inline _Tp
+    max(initializer_list<_Tp> __l, _Compare __comp)
+    { return *std::max_element(__l.begin(), __l.end(), __comp); }
+
+  template<typename _Tp>
+    inline pair<_Tp, _Tp>
+    minmax(initializer_list<_Tp> __l)
+    {
+      pair<const _Tp*, const _Tp*> __p =
+	std::minmax_element(__l.begin(), __l.end());
+      return std::make_pair(*__p.first, *__p.second);
+    }
+
+  template<typename _Tp, typename _Compare>
+    inline pair<_Tp, _Tp>
+    minmax(initializer_list<_Tp> __l, _Compare __comp)
+    {
+      pair<const _Tp*, const _Tp*> __p =
+	std::minmax_element(__l.begin(), __l.end(), __comp);
+      return std::make_pair(*__p.first, *__p.second);
+    }
+
+  /**
+   *  @brief  Checks whether a permutaion of the second sequence is equal
+   *          to the first sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @return true if there exists a permutation of the elements in the range
+   *          [first2, first2 + (last1 - first1)), beginning with 
+   *          ForwardIterator2 begin, such that equal(first1, last1, begin)
+   *          returns true; otherwise, returns false.
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    bool
+    is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+		   _ForwardIterator2 __first2)
+    {
+      // Efficiently compare identical prefixes:  O(N) if sequences
+      // have the same elements in the same order.
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	if (!(*__first1 == *__first2))
+	  break;
+
+      if (__first1 == __last1)
+	return true;
+
+      // Establish __last2 assuming equal ranges by iterating over the
+      // rest of the list.
+      _ForwardIterator2 __last2 = __first2;
+      std::advance(__last2, std::distance(__first1, __last1));
+      for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
+	{
+	  if (__scan != _GLIBCXX_STD_A::find(__first1, __scan, *__scan))
+	    continue; // We've seen this one before.
+
+	  auto __matches = std::count(__first2, __last2, *__scan);
+	  if (0 == __matches
+	      || std::count(__scan, __last1, *__scan) != __matches)
+	    return false;
+	}
+      return true;
+    }
+
+  /**
+   *  @brief  Checks whether a permutation of the second sequence is equal
+   *          to the first sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  pred    A binary predicate.
+   *  @return true if there exists a permutation of the elements in the range
+   *          [first2, first2 + (last1 - first1)), beginning with 
+   *          ForwardIterator2 begin, such that equal(first1, last1, begin,
+   *          pred) returns true; otherwise, returns false.
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2,
+	   typename _BinaryPredicate>
+    bool
+    is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+		   _ForwardIterator2 __first2, _BinaryPredicate __pred)
+    {
+      // Efficiently compare identical prefixes:  O(N) if sequences
+      // have the same elements in the same order.
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	if (!bool(__pred(*__first1, *__first2)))
+	  break;
+
+      if (__first1 == __last1)
+	return true;
+
+      // Establish __last2 assuming equal ranges by iterating over the
+      // rest of the list.
+      _ForwardIterator2 __last2 = __first2;
+      std::advance(__last2, std::distance(__first1, __last1));
+      for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
+	{
+	  using std::placeholders::_1;
+
+	  if (__scan != _GLIBCXX_STD_A::find_if(__first1, __scan,
+						std::bind(__pred, _1, *__scan)))
+	    continue; // We've seen this one before.
+	  
+	  auto __matches = std::count_if(__first2, __last2,
+					 std::bind(__pred, _1, *__scan));
+	  if (0 == __matches
+	      || std::count_if(__scan, __last1,
+			       std::bind(__pred, _1, *__scan)) != __matches)
+	    return false;
+	}
+      return true;
+    }
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+  /**
+   *  @brief Shuffle the elements of a sequence using a uniform random
+   *         number generator.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @param  g       A UniformRandomNumberGenerator (26.5.1.3).
+   *  @return  Nothing.
+   *
+   *  Reorders the elements in the range @p [first,last) using @p g to
+   *  provide random numbers.
+  */
+  template<typename _RandomAccessIterator,
+	   typename _UniformRandomNumberGenerator>
+    void
+    shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	    _UniformRandomNumberGenerator&& __g)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return;
+
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      typedef typename std::make_unsigned<_DistanceType>::type __ud_type;
+      typedef typename std::uniform_int_distribution<__ud_type> __distr_type;
+      typedef typename __distr_type::param_type __p_type;
+      __distr_type __d;
+
+      for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+	std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first)));
+    }
+#endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+_GLIBCXX_BEGIN_NAMESPACE_ALGO
+
+  /**
+   *  @brief Apply a function to every element of a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  f      A unary function object.
+   *  @return   @p f (std::move(@p f) in C++0x).
+   *
+   *  Applies the function object @p f to each element in the range
+   *  @p [first,last).  @p f must not modify the order of the sequence.
+   *  If @p f has a return value it is ignored.
+  */
+  template<typename _InputIterator, typename _Function>
+    _Function
+    for_each(_InputIterator __first, _InputIterator __last, _Function __f)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      for (; __first != __last; ++__first)
+	__f(*__first);
+      return _GLIBCXX_MOVE(__f);
+    }
+
+  /**
+   *  @brief Find the first occurrence of a value in a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  val    The value to find.
+   *  @return   The first iterator @c i in the range @p [first,last)
+   *  such that @c *i == @p val, or @p last if no such iterator exists.
+  */
+  template<typename _InputIterator, typename _Tp>
+    inline _InputIterator
+    find(_InputIterator __first, _InputIterator __last,
+	 const _Tp& __val)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+		typename iterator_traits<_InputIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+      return std::__find(__first, __last, __val,
+		         std::__iterator_category(__first));
+    }
+
+  /**
+   *  @brief Find the first element in a sequence for which a
+   *         predicate is true.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  pred   A predicate.
+   *  @return   The first iterator @c i in the range @p [first,last)
+   *  such that @p pred(*i) is true, or @p last if no such iterator exists.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    inline _InputIterator
+    find_if(_InputIterator __first, _InputIterator __last,
+	    _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	      typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      return std::__find_if(__first, __last, __pred,
+			    std::__iterator_category(__first));
+    }
+
+  /**
+   *  @brief  Find element from a set in a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of range to search.
+   *  @param  last1   End of range to search.
+   *  @param  first2  Start of match candidates.
+   *  @param  last2   End of match candidates.
+   *  @return   The first iterator @c i in the range
+   *  @p [first1,last1) such that @c *i == @p *(i2) such that i2 is an
+   *  iterator in [first2,last2), or @p last1 if no such iterator exists.
+   *
+   *  Searches the range @p [first1,last1) for an element that is equal to
+   *  some element in the range [first2,last2).  If found, returns an iterator
+   *  in the range [first1,last1), otherwise returns @p last1.
+  */
+  template<typename _InputIterator, typename _ForwardIterator>
+    _InputIterator
+    find_first_of(_InputIterator __first1, _InputIterator __last1,
+		  _ForwardIterator __first2, _ForwardIterator __last2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_InputIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      for (; __first1 != __last1; ++__first1)
+	for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
+	  if (*__first1 == *__iter)
+	    return __first1;
+      return __last1;
+    }
+
+  /**
+   *  @brief  Find element from a set in a sequence using a predicate.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  Start of range to search.
+   *  @param  last1   End of range to search.
+   *  @param  first2  Start of match candidates.
+   *  @param  last2   End of match candidates.
+   *  @param  comp    Predicate to use.
+   *  @return   The first iterator @c i in the range
+   *  @p [first1,last1) such that @c comp(*i, @p *(i2)) is true and i2 is an
+   *  iterator in [first2,last2), or @p last1 if no such iterator exists.
+   *
+
+   *  Searches the range @p [first1,last1) for an element that is
+   *  equal to some element in the range [first2,last2).  If found,
+   *  returns an iterator in the range [first1,last1), otherwise
+   *  returns @p last1.
+  */
+  template<typename _InputIterator, typename _ForwardIterator,
+	   typename _BinaryPredicate>
+    _InputIterator
+    find_first_of(_InputIterator __first1, _InputIterator __last1,
+		  _ForwardIterator __first2, _ForwardIterator __last2,
+		  _BinaryPredicate __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	    typename iterator_traits<_InputIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      for (; __first1 != __last1; ++__first1)
+	for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
+	  if (__comp(*__first1, *__iter))
+	    return __first1;
+      return __last1;
+    }
+
+  /**
+   *  @brief Find two adjacent values in a sequence that are equal.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @return   The first iterator @c i such that @c i and @c i+1 are both
+   *  valid iterators in @p [first,last) and such that @c *i == @c *(i+1),
+   *  or @p last if no such iterator exists.
+  */
+  template<typename _ForwardIterator>
+    _ForwardIterator
+    adjacent_find(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_EqualityComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      if (__first == __last)
+	return __last;
+      _ForwardIterator __next = __first;
+      while(++__next != __last)
+	{
+	  if (*__first == *__next)
+	    return __first;
+	  __first = __next;
+	}
+      return __last;
+    }
+
+  /**
+   *  @brief Find two adjacent values in a sequence using a predicate.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first         A forward iterator.
+   *  @param  last          A forward iterator.
+   *  @param  binary_pred   A binary predicate.
+   *  @return   The first iterator @c i such that @c i and @c i+1 are both
+   *  valid iterators in @p [first,last) and such that
+   *  @p binary_pred(*i,*(i+1)) is true, or @p last if no such iterator
+   *  exists.
+  */
+  template<typename _ForwardIterator, typename _BinaryPredicate>
+    _ForwardIterator
+    adjacent_find(_ForwardIterator __first, _ForwardIterator __last,
+		  _BinaryPredicate __binary_pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      if (__first == __last)
+	return __last;
+      _ForwardIterator __next = __first;
+      while(++__next != __last)
+	{
+	  if (__binary_pred(*__first, *__next))
+	    return __first;
+	  __first = __next;
+	}
+      return __last;
+    }
+
+  /**
+   *  @brief Count the number of copies of a value in a sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  value  The value to be counted.
+   *  @return   The number of iterators @c i in the range @p [first,last)
+   *  for which @c *i == @p value
+  */
+  template<typename _InputIterator, typename _Tp>
+    typename iterator_traits<_InputIterator>::difference_type
+    count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	typename iterator_traits<_InputIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+      typename iterator_traits<_InputIterator>::difference_type __n = 0;
+      for (; __first != __last; ++__first)
+	if (*__first == __value)
+	  ++__n;
+      return __n;
+    }
+
+  /**
+   *  @brief Count the elements of a sequence for which a predicate is true.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  pred   A predicate.
+   *  @return   The number of iterators @c i in the range @p [first,last)
+   *  for which @p pred(*i) is true.
+  */
+  template<typename _InputIterator, typename _Predicate>
+    typename iterator_traits<_InputIterator>::difference_type
+    count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      typename iterator_traits<_InputIterator>::difference_type __n = 0;
+      for (; __first != __last; ++__first)
+	if (__pred(*__first))
+	  ++__n;
+      return __n;
+    }
+
+  /**
+   *  @brief Search a sequence for a matching sub-sequence.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  A forward iterator.
+   *  @param  last1   A forward iterator.
+   *  @param  first2  A forward iterator.
+   *  @param  last2   A forward iterator.
+   *  @return   The first iterator @c i in the range
+   *  @p [first1,last1-(last2-first2)) such that @c *(i+N) == @p *(first2+N)
+   *  for each @c N in the range @p [0,last2-first2), or @p last1 if no
+   *  such iterator exists.
+   *
+   *  Searches the range @p [first1,last1) for a sub-sequence that compares
+   *  equal value-by-value with the sequence given by @p [first2,last2) and
+   *  returns an iterator to the first element of the sub-sequence, or
+   *  @p last1 if the sub-sequence is not found.
+   *
+   *  Because the sub-sequence must lie completely within the range
+   *  @p [first1,last1) it must start at a position less than
+   *  @p last1-(last2-first2) where @p last2-first2 is the length of the
+   *  sub-sequence.
+   *  This means that the returned iterator @c i will be in the range
+   *  @p [first1,last1-(last2-first2))
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    _ForwardIterator1
+    search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	   _ForwardIterator2 __first2, _ForwardIterator2 __last2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_ForwardIterator1>::value_type,
+	    typename iterator_traits<_ForwardIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      // Test for empty ranges
+      if (__first1 == __last1 || __first2 == __last2)
+	return __first1;
+
+      // Test for a pattern of length 1.
+      _ForwardIterator2 __p1(__first2);
+      if (++__p1 == __last2)
+	return _GLIBCXX_STD_A::find(__first1, __last1, *__first2);
+
+      // General case.
+      _ForwardIterator2 __p;
+      _ForwardIterator1 __current = __first1;
+
+      for (;;)
+	{
+	  __first1 = _GLIBCXX_STD_A::find(__first1, __last1, *__first2);
+	  if (__first1 == __last1)
+	    return __last1;
+
+	  __p = __p1;
+	  __current = __first1;
+	  if (++__current == __last1)
+	    return __last1;
+
+	  while (*__current == *__p)
+	    {
+	      if (++__p == __last2)
+		return __first1;
+	      if (++__current == __last1)
+		return __last1;
+	    }
+	  ++__first1;
+	}
+      return __first1;
+    }
+
+  /**
+   *  @brief Search a sequence for a matching sub-sequence using a predicate.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1     A forward iterator.
+   *  @param  last1      A forward iterator.
+   *  @param  first2     A forward iterator.
+   *  @param  last2      A forward iterator.
+   *  @param  predicate  A binary predicate.
+   *  @return   The first iterator @c i in the range
+   *  @p [first1,last1-(last2-first2)) such that
+   *  @p predicate(*(i+N),*(first2+N)) is true for each @c N in the range
+   *  @p [0,last2-first2), or @p last1 if no such iterator exists.
+   *
+   *  Searches the range @p [first1,last1) for a sub-sequence that compares
+   *  equal value-by-value with the sequence given by @p [first2,last2),
+   *  using @p predicate to determine equality, and returns an iterator
+   *  to the first element of the sub-sequence, or @p last1 if no such
+   *  iterator exists.
+   *
+   *  @see search(_ForwardIter1, _ForwardIter1, _ForwardIter2, _ForwardIter2)
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2,
+	   typename _BinaryPredicate>
+    _ForwardIterator1
+    search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+	   _ForwardIterator2 __first2, _ForwardIterator2 __last2,
+	   _BinaryPredicate  __predicate)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>)
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	    typename iterator_traits<_ForwardIterator1>::value_type,
+	    typename iterator_traits<_ForwardIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      // Test for empty ranges
+      if (__first1 == __last1 || __first2 == __last2)
+	return __first1;
+
+      // Test for a pattern of length 1.
+      _ForwardIterator2 __p1(__first2);
+      if (++__p1 == __last2)
+	{
+	  while (__first1 != __last1
+		 && !bool(__predicate(*__first1, *__first2)))
+	    ++__first1;
+	  return __first1;
+	}
+
+      // General case.
+      _ForwardIterator2 __p;
+      _ForwardIterator1 __current = __first1;
+
+      for (;;)
+	{
+	  while (__first1 != __last1
+		 && !bool(__predicate(*__first1, *__first2)))
+	    ++__first1;
+	  if (__first1 == __last1)
+	    return __last1;
+
+	  __p = __p1;
+	  __current = __first1;
+	  if (++__current == __last1)
+	    return __last1;
+
+	  while (__predicate(*__current, *__p))
+	    {
+	      if (++__p == __last2)
+		return __first1;
+	      if (++__current == __last1)
+		return __last1;
+	    }
+	  ++__first1;
+	}
+      return __first1;
+    }
+
+
+  /**
+   *  @brief Search a sequence for a number of consecutive values.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @param  count  The number of consecutive values.
+   *  @param  val    The value to find.
+   *  @return   The first iterator @c i in the range @p [first,last-count)
+   *  such that @c *(i+N) == @p val for each @c N in the range @p [0,count),
+   *  or @p last if no such iterator exists.
+   *
+   *  Searches the range @p [first,last) for @p count consecutive elements
+   *  equal to @p val.
+  */
+  template<typename _ForwardIterator, typename _Integer, typename _Tp>
+    _ForwardIterator
+    search_n(_ForwardIterator __first, _ForwardIterator __last,
+	     _Integer __count, const _Tp& __val)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	typename iterator_traits<_ForwardIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__count <= 0)
+	return __first;
+      if (__count == 1)
+	return _GLIBCXX_STD_A::find(__first, __last, __val);
+      return std::__search_n(__first, __last, __count, __val,
+			     std::__iterator_category(__first));
+    }
+
+
+  /**
+   *  @brief Search a sequence for a number of consecutive values using a
+   *         predicate.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first        A forward iterator.
+   *  @param  last         A forward iterator.
+   *  @param  count        The number of consecutive values.
+   *  @param  val          The value to find.
+   *  @param  binary_pred  A binary predicate.
+   *  @return   The first iterator @c i in the range @p [first,last-count)
+   *  such that @p binary_pred(*(i+N),val) is true for each @c N in the
+   *  range @p [0,count), or @p last if no such iterator exists.
+   *
+   *  Searches the range @p [first,last) for @p count consecutive elements
+   *  for which the predicate returns true.
+  */
+  template<typename _ForwardIterator, typename _Integer, typename _Tp,
+           typename _BinaryPredicate>
+    _ForwardIterator
+    search_n(_ForwardIterator __first, _ForwardIterator __last,
+	     _Integer __count, const _Tp& __val,
+	     _BinaryPredicate __binary_pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	    typename iterator_traits<_ForwardIterator>::value_type, _Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__count <= 0)
+	return __first;
+      if (__count == 1)
+	{
+	  while (__first != __last && !bool(__binary_pred(*__first, __val)))
+	    ++__first;
+	  return __first;
+	}
+      return std::__search_n(__first, __last, __count, __val, __binary_pred,
+			     std::__iterator_category(__first));
+    }
+
+
+  /**
+   *  @brief Perform an operation on a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first     An input iterator.
+   *  @param  last      An input iterator.
+   *  @param  result    An output iterator.
+   *  @param  unary_op  A unary operator.
+   *  @return   An output iterator equal to @p result+(last-first).
+   *
+   *  Applies the operator to each element in the input range and assigns
+   *  the results to successive elements of the output sequence.
+   *  Evaluates @p *(result+N)=unary_op(*(first+N)) for each @c N in the
+   *  range @p [0,last-first).
+   *
+   *  @p unary_op must not alter its argument.
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _UnaryOperation>
+    _OutputIterator
+    transform(_InputIterator __first, _InputIterator __last,
+	      _OutputIterator __result, _UnaryOperation __unary_op)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+            // "the type returned by a _UnaryOperation"
+            __typeof__(__unary_op(*__first))>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first, ++__result)
+	*__result = __unary_op(*__first);
+      return __result;
+    }
+
+  /**
+   *  @brief Perform an operation on corresponding elements of two sequences.
+   *  @ingroup mutating_algorithms
+   *  @param  first1     An input iterator.
+   *  @param  last1      An input iterator.
+   *  @param  first2     An input iterator.
+   *  @param  result     An output iterator.
+   *  @param  binary_op  A binary operator.
+   *  @return   An output iterator equal to @p result+(last-first).
+   *
+   *  Applies the operator to the corresponding elements in the two
+   *  input ranges and assigns the results to successive elements of the
+   *  output sequence.
+   *  Evaluates @p *(result+N)=binary_op(*(first1+N),*(first2+N)) for each
+   *  @c N in the range @p [0,last1-first1).
+   *
+   *  @p binary_op must not alter either of its arguments.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _BinaryOperation>
+    _OutputIterator
+    transform(_InputIterator1 __first1, _InputIterator1 __last1,
+	      _InputIterator2 __first2, _OutputIterator __result,
+	      _BinaryOperation __binary_op)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+            // "the type returned by a _BinaryOperation"
+            __typeof__(__binary_op(*__first1,*__first2))>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      for (; __first1 != __last1; ++__first1, ++__first2, ++__result)
+	*__result = __binary_op(*__first1, *__first2);
+      return __result;
+    }
+
+  /**
+   *  @brief Replace each occurrence of one value in a sequence with another
+   *         value.
+   *  @ingroup mutating_algorithms
+   *  @param  first      A forward iterator.
+   *  @param  last       A forward iterator.
+   *  @param  old_value  The value to be replaced.
+   *  @param  new_value  The replacement value.
+   *  @return   replace() returns no value.
+   *
+   *  For each iterator @c i in the range @p [first,last) if @c *i ==
+   *  @p old_value then the assignment @c *i = @p new_value is performed.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    void
+    replace(_ForwardIterator __first, _ForwardIterator __last,
+	    const _Tp& __old_value, const _Tp& __new_value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type, _Tp>)
+      __glibcxx_function_requires(_ConvertibleConcept<_Tp,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	if (*__first == __old_value)
+	  *__first = __new_value;
+    }
+
+  /**
+   *  @brief Replace each value in a sequence for which a predicate returns
+   *         true with another value.
+   *  @ingroup mutating_algorithms
+   *  @param  first      A forward iterator.
+   *  @param  last       A forward iterator.
+   *  @param  pred       A predicate.
+   *  @param  new_value  The replacement value.
+   *  @return   replace_if() returns no value.
+   *
+   *  For each iterator @c i in the range @p [first,last) if @p pred(*i)
+   *  is true then the assignment @c *i = @p new_value is performed.
+  */
+  template<typename _ForwardIterator, typename _Predicate, typename _Tp>
+    void
+    replace_if(_ForwardIterator __first, _ForwardIterator __last,
+	       _Predicate __pred, const _Tp& __new_value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_ConvertibleConcept<_Tp,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	if (__pred(*__first))
+	  *__first = __new_value;
+    }
+
+  /**
+   *  @brief Assign the result of a function object to each value in a
+   *         sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @param  gen    A function object taking no arguments and returning
+   *                 std::iterator_traits<_ForwardIterator>::value_type
+   *  @return   generate() returns no value.
+   *
+   *  Performs the assignment @c *i = @p gen() for each @c i in the range
+   *  @p [first,last).
+  */
+  template<typename _ForwardIterator, typename _Generator>
+    void
+    generate(_ForwardIterator __first, _ForwardIterator __last,
+	     _Generator __gen)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_GeneratorConcept<_Generator,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	*__first = __gen();
+    }
+
+  /**
+   *  @brief Assign the result of a function object to each value in a
+   *         sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  n      The length of the sequence.
+   *  @param  gen    A function object taking no arguments and returning
+   *                 std::iterator_traits<_ForwardIterator>::value_type
+   *  @return   The end of the sequence, @p first+n
+   *
+   *  Performs the assignment @c *i = @p gen() for each @c i in the range
+   *  @p [first,first+n).
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 865. More algorithms that throw away information
+  */
+  template<typename _OutputIterator, typename _Size, typename _Generator>
+    _OutputIterator
+    generate_n(_OutputIterator __first, _Size __n, _Generator __gen)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+            // "the type returned by a _Generator"
+            __typeof__(__gen())>)
+
+      for (__decltype(__n + 0) __niter = __n;
+	   __niter > 0; --__niter, ++__first)
+	*__first = __gen();
+      return __first;
+    }
+
+
+  /**
+   *  @brief Copy a sequence, removing consecutive duplicate values.
+   *  @ingroup mutating_algorithms
+   *  @param  first   An input iterator.
+   *  @param  last    An input iterator.
+   *  @param  result  An output iterator.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies each element in the range @p [first,last) to the range
+   *  beginning at @p result, except that only the first element is copied
+   *  from groups of consecutive elements that compare equal.
+   *  unique_copy() is stable, so the relative order of elements that are
+   *  copied is unchanged.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 241. Does unique_copy() require CopyConstructible and Assignable?
+   *  
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 538. 241 again: Does unique_copy() require CopyConstructible and 
+   *  Assignable?
+  */
+  template<typename _InputIterator, typename _OutputIterator>
+    inline _OutputIterator
+    unique_copy(_InputIterator __first, _InputIterator __last,
+		_OutputIterator __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_function_requires(_EqualityComparableConcept<
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      return std::__unique_copy(__first, __last, __result,
+				std::__iterator_category(__first),
+				std::__iterator_category(__result));
+    }
+
+  /**
+   *  @brief Copy a sequence, removing consecutive values using a predicate.
+   *  @ingroup mutating_algorithms
+   *  @param  first        An input iterator.
+   *  @param  last         An input iterator.
+   *  @param  result       An output iterator.
+   *  @param  binary_pred  A binary predicate.
+   *  @return   An iterator designating the end of the resulting sequence.
+   *
+   *  Copies each element in the range @p [first,last) to the range
+   *  beginning at @p result, except that only the first element is copied
+   *  from groups of consecutive elements for which @p binary_pred returns
+   *  true.
+   *  unique_copy() is stable, so the relative order of elements that are
+   *  copied is unchanged.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 241. Does unique_copy() require CopyConstructible and Assignable?
+  */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _BinaryPredicate>
+    inline _OutputIterator
+    unique_copy(_InputIterator __first, _InputIterator __last,
+		_OutputIterator __result,
+		_BinaryPredicate __binary_pred)
+    {
+      // concept requirements -- predicates checked later
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      return std::__unique_copy(__first, __last, __result, __binary_pred,
+				std::__iterator_category(__first),
+				std::__iterator_category(__result));
+    }
+
+
+  /**
+   *  @brief Randomly shuffle the elements of a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @return  Nothing.
+   *
+   *  Reorder the elements in the range @p [first,last) using a random
+   *  distribution, so that every possible ordering of the sequence is
+   *  equally likely.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first != __last)
+	for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+	  std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1)));
+    }
+
+  /**
+   *  @brief Shuffle the elements of a sequence using a random number
+   *         generator.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @param  rand    The RNG functor or function.
+   *  @return  Nothing.
+   *
+   *  Reorders the elements in the range @p [first,last) using @p rand to
+   *  provide a random distribution. Calling @p rand(N) for a positive
+   *  integer @p N should return a randomly chosen integer from the
+   *  range [0,N).
+  */
+  template<typename _RandomAccessIterator, typename _RandomNumberGenerator>
+    void
+    random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+		   _RandomNumberGenerator&& __rand)
+#else
+		   _RandomNumberGenerator& __rand)
+#endif
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return;
+      for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+	std::iter_swap(__i, __first + __rand((__i - __first) + 1));
+    }
+
+
+  /**
+   *  @brief Move elements for which a predicate is true to the beginning
+   *         of a sequence.
+   *  @ingroup mutating_algorithms
+   *  @param  first   A forward iterator.
+   *  @param  last    A forward iterator.
+   *  @param  pred    A predicate functor.
+   *  @return  An iterator @p middle such that @p pred(i) is true for each
+   *  iterator @p i in the range @p [first,middle) and false for each @p i
+   *  in the range @p [middle,last).
+   *
+   *  @p pred must not modify its operand. @p partition() does not preserve
+   *  the relative ordering of elements in each group, use
+   *  @p stable_partition() if this is needed.
+  */
+  template<typename _ForwardIterator, typename _Predicate>
+    inline _ForwardIterator
+    partition(_ForwardIterator __first, _ForwardIterator __last,
+	      _Predicate   __pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return std::__partition(__first, __last, __pred,
+			      std::__iterator_category(__first));
+    }
+
+
+
+  /**
+   *  @brief Sort the smallest elements of a sequence.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  middle  Another iterator.
+   *  @param  last    Another iterator.
+   *  @return  Nothing.
+   *
+   *  Sorts the smallest @p (middle-first) elements in the range
+   *  @p [first,last) and moves them to the range @p [first,middle). The
+   *  order of the remaining elements in the range @p [middle,last) is
+   *  undefined.
+   *  After the sort if @p i and @j are iterators in the range
+   *  @p [first,middle) such that @i precedes @j and @k is an iterator in
+   *  the range @p [middle,last) then @p *j<*i and @p *k<*i are both false.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    partial_sort(_RandomAccessIterator __first,
+		 _RandomAccessIterator __middle,
+		 _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __middle);
+      __glibcxx_requires_valid_range(__middle, __last);
+
+      std::__heap_select(__first, __middle, __last);
+      std::sort_heap(__first, __middle);
+    }
+
+  /**
+   *  @brief Sort the smallest elements of a sequence using a predicate
+   *         for comparison.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  middle  Another iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  Nothing.
+   *
+   *  Sorts the smallest @p (middle-first) elements in the range
+   *  @p [first,last) and moves them to the range @p [first,middle). The
+   *  order of the remaining elements in the range @p [middle,last) is
+   *  undefined.
+   *  After the sort if @p i and @j are iterators in the range
+   *  @p [first,middle) such that @i precedes @j and @k is an iterator in
+   *  the range @p [middle,last) then @p *comp(j,*i) and @p comp(*k,*i)
+   *  are both false.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    partial_sort(_RandomAccessIterator __first,
+		 _RandomAccessIterator __middle,
+		 _RandomAccessIterator __last,
+		 _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType, _ValueType>)
+      __glibcxx_requires_valid_range(__first, __middle);
+      __glibcxx_requires_valid_range(__middle, __last);
+
+      std::__heap_select(__first, __middle, __last, __comp);
+      std::sort_heap(__first, __middle, __comp);
+    }
+
+  /**
+   *  @brief Sort a sequence just enough to find a particular position.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  nth     Another iterator.
+   *  @param  last    Another iterator.
+   *  @return  Nothing.
+   *
+   *  Rearranges the elements in the range @p [first,last) so that @p *nth
+   *  is the same element that would have been in that position had the
+   *  whole sequence been sorted.
+   *  whole sequence been sorted. The elements either side of @p *nth are
+   *  not completely sorted, but for any iterator @i in the range
+   *  @p [first,nth) and any iterator @j in the range @p [nth,last) it
+   *  holds that @p *j<*i is false.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
+		_RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __nth);
+      __glibcxx_requires_valid_range(__nth, __last);
+
+      if (__first == __last || __nth == __last)
+	return;
+
+      std::__introselect(__first, __nth, __last,
+			 std::__lg(__last - __first) * 2);
+    }
+
+  /**
+   *  @brief Sort a sequence just enough to find a particular position
+   *         using a predicate for comparison.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  nth     Another iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  Nothing.
+   *
+   *  Rearranges the elements in the range @p [first,last) so that @p *nth
+   *  is the same element that would have been in that position had the
+   *  whole sequence been sorted. The elements either side of @p *nth are
+   *  not completely sorted, but for any iterator @i in the range
+   *  @p [first,nth) and any iterator @j in the range @p [nth,last) it
+   *  holds that @p comp(*j,*i) is false.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
+		_RandomAccessIterator __last, _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType, _ValueType>)
+      __glibcxx_requires_valid_range(__first, __nth);
+      __glibcxx_requires_valid_range(__nth, __last);
+
+      if (__first == __last || __nth == __last)
+	return;
+
+      std::__introselect(__first, __nth, __last,
+			 std::__lg(__last - __first) * 2, __comp);
+    }
+
+
+  /**
+   *  @brief Sort the elements of a sequence.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @return  Nothing.
+   *
+   *  Sorts the elements in the range @p [first,last) in ascending order,
+   *  such that @p *(i+1)<*i is false for each iterator @p i in the range
+   *  @p [first,last-1).
+   *
+   *  The relative ordering of equivalent elements is not preserved, use
+   *  @p stable_sort() if this is needed.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first != __last)
+	{
+	  std::__introsort_loop(__first, __last,
+				std::__lg(__last - __first) * 2);
+	  std::__final_insertion_sort(__first, __last);
+	}
+    }
+
+  /**
+   *  @brief Sort the elements of a sequence using a predicate for comparison.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  Nothing.
+   *
+   *  Sorts the elements in the range @p [first,last) in ascending order,
+   *  such that @p comp(*(i+1),*i) is false for every iterator @p i in the
+   *  range @p [first,last-1).
+   *
+   *  The relative ordering of equivalent elements is not preserved, use
+   *  @p stable_sort() if this is needed.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	 _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, _ValueType,
+				  _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first != __last)
+	{
+	  std::__introsort_loop(__first, __last,
+				std::__lg(__last - __first) * 2, __comp);
+	  std::__final_insertion_sort(__first, __last, __comp);
+	}
+    }
+
+  /**
+   *  @brief Merges two sorted ranges.
+   *  @ingroup sorting_algorithms
+   *  @param  first1  An iterator.
+   *  @param  first2  Another iterator.
+   *  @param  last1   Another iterator.
+   *  @param  last2   Another iterator.
+   *  @param  result  An iterator pointing to the end of the merged range.
+   *  @return         An iterator pointing to the first element <em>not less
+   *                  than</em> @a val.
+   *
+   *  Merges the ranges [first1,last1) and [first2,last2) into the sorted range
+   *  [result, result + (last1-first1) + (last2-first2)).  Both input ranges
+   *  must be sorted, and the output range must not overlap with either of
+   *  the input ranges.  The sort is @e stable, that is, for equivalent
+   *  elements in the two ranges, elements from the first range will always
+   *  come before elements from the second.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    merge(_InputIterator1 __first1, _InputIterator1 __last1,
+	  _InputIterator2 __first2, _InputIterator2 __last2,
+	  _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)	
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (*__first2 < *__first1)
+	    {
+	      *__result = *__first2;
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	    }
+	  ++__result;
+	}
+      return std::copy(__first2, __last2, std::copy(__first1, __last1,
+						    __result));
+    }
+
+  /**
+   *  @brief Merges two sorted ranges.
+   *  @ingroup sorting_algorithms
+   *  @param  first1  An iterator.
+   *  @param  first2  Another iterator.
+   *  @param  last1   Another iterator.
+   *  @param  last2   Another iterator.
+   *  @param  result  An iterator pointing to the end of the merged range.
+   *  @param  comp    A functor to use for comparisons.
+   *  @return         An iterator pointing to the first element "not less
+   *                  than" @a val.
+   *
+   *  Merges the ranges [first1,last1) and [first2,last2) into the sorted range
+   *  [result, result + (last1-first1) + (last2-first2)).  Both input ranges
+   *  must be sorted, and the output range must not overlap with either of
+   *  the input ranges.  The sort is @e stable, that is, for equivalent
+   *  elements in the two ranges, elements from the first range will always
+   *  come before elements from the second.
+   *
+   *  The comparison function should have the same effects on ordering as
+   *  the function used for the initial sort.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    merge(_InputIterator1 __first1, _InputIterator1 __last1,
+	  _InputIterator2 __first2, _InputIterator2 __last2,
+	  _OutputIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (__comp(*__first2, *__first1))
+	    {
+	      *__result = *__first2;
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	    }
+	  ++__result;
+	}
+      return std::copy(__first2, __last2, std::copy(__first1, __last1,
+						    __result));
+    }
+
+
+  /**
+   *  @brief Sort the elements of a sequence, preserving the relative order
+   *         of equivalent elements.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @return  Nothing.
+   *
+   *  Sorts the elements in the range @p [first,last) in ascending order,
+   *  such that @p *(i+1)<*i is false for each iterator @p i in the range
+   *  @p [first,last-1).
+   *
+   *  The relative ordering of equivalent elements is preserved, so any two
+   *  elements @p x and @p y in the range @p [first,last) such that
+   *  @p x<y is false and @p y<x is false will have the same relative
+   *  ordering after calling @p stable_sort().
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
+								 __last);
+      if (__buf.begin() == 0)
+	std::__inplace_stable_sort(__first, __last);
+      else
+	std::__stable_sort_adaptive(__first, __last, __buf.begin(),
+				    _DistanceType(__buf.size()));
+    }
+
+  /**
+   *  @brief Sort the elements of a sequence using a predicate for comparison,
+   *         preserving the relative order of equivalent elements.
+   *  @ingroup sorting_algorithms
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  comp    A comparison functor.
+   *  @return  Nothing.
+   *
+   *  Sorts the elements in the range @p [first,last) in ascending order,
+   *  such that @p comp(*(i+1),*i) is false for each iterator @p i in the
+   *  range @p [first,last-1).
+   *
+   *  The relative ordering of equivalent elements is preserved, so any two
+   *  elements @p x and @p y in the range @p [first,last) such that
+   *  @p comp(x,y) is false and @p comp(y,x) is false will have the same
+   *  relative ordering after calling @p stable_sort().
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
+		_Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType,
+				  _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
+								 __last);
+      if (__buf.begin() == 0)
+	std::__inplace_stable_sort(__first, __last, __comp);
+      else
+	std::__stable_sort_adaptive(__first, __last, __buf.begin(),
+				    _DistanceType(__buf.size()), __comp);
+    }
+
+
+  /**
+   *  @brief Return the union of two sorted ranges.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  each range in order to the output range.  Iterators increment for each
+   *  range.  When the current element of one range is less than the other,
+   *  that element is copied and the iterator advanced.  If an element is
+   *  contained in both ranges, the element from the first range is copied and
+   *  both ranges advance.  The output range may not overlap either input
+   *  range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    set_union(_InputIterator1 __first1, _InputIterator1 __last1,
+	      _InputIterator2 __first2, _InputIterator2 __last2,
+	      _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (*__first1 < *__first2)
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	    }
+	  else if (*__first2 < *__first1)
+	    {
+	      *__result = *__first2;
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	      ++__first2;
+	    }
+	  ++__result;
+	}
+      return std::copy(__first2, __last2, std::copy(__first1, __last1,
+						    __result));
+    }
+
+  /**
+   *  @brief Return the union of two sorted ranges using a comparison functor.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @param  comp    The comparison functor.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  each range in order to the output range.  Iterators increment for each
+   *  range.  When the current element of one range is less than the other
+   *  according to @a comp, that element is copied and the iterator advanced.
+   *  If an equivalent element according to @a comp is contained in both
+   *  ranges, the element from the first range is copied and both ranges
+   *  advance.  The output range may not overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    set_union(_InputIterator1 __first1, _InputIterator1 __last1,
+	      _InputIterator2 __first2, _InputIterator2 __last2,
+	      _OutputIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (__comp(*__first1, *__first2))
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	    }
+	  else if (__comp(*__first2, *__first1))
+	    {
+	      *__result = *__first2;
+	      ++__first2;
+	    }
+	  else
+	    {
+	      *__result = *__first1;
+	      ++__first1;
+	      ++__first2;
+	    }
+	  ++__result;
+	}
+      return std::copy(__first2, __last2, std::copy(__first1, __last1,
+						    __result));
+    }
+
+  /**
+   *  @brief Return the intersection of two sorted ranges.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  both ranges in order to the output range.  Iterators increment for each
+   *  range.  When the current element of one range is less than the other,
+   *  that iterator advances.  If an element is contained in both ranges, the
+   *  element from the first range is copied and both ranges advance.  The
+   *  output range may not overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
+		     _InputIterator2 __first2, _InputIterator2 __last2,
+		     _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (*__first1 < *__first2)
+	  ++__first1;
+	else if (*__first2 < *__first1)
+	  ++__first2;
+	else
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__first2;
+	    ++__result;
+	  }
+      return __result;
+    }
+
+  /**
+   *  @brief Return the intersection of two sorted ranges using comparison
+   *  functor.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @param  comp    The comparison functor.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  both ranges in order to the output range.  Iterators increment for each
+   *  range.  When the current element of one range is less than the other
+   *  according to @a comp, that iterator advances.  If an element is
+   *  contained in both ranges according to @a comp, the element from the
+   *  first range is copied and both ranges advance.  The output range may not
+   *  overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
+		     _InputIterator2 __first2, _InputIterator2 __last2,
+		     _OutputIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (__comp(*__first1, *__first2))
+	  ++__first1;
+	else if (__comp(*__first2, *__first1))
+	  ++__first2;
+	else
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__first2;
+	    ++__result;
+	  }
+      return __result;
+    }
+
+  /**
+   *  @brief Return the difference of two sorted ranges.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  the first range but not the second in order to the output range.
+   *  Iterators increment for each range.  When the current element of the
+   *  first range is less than the second, that element is copied and the
+   *  iterator advances.  If the current element of the second range is less,
+   *  the iterator advances, but no element is copied.  If an element is
+   *  contained in both ranges, no elements are copied and both ranges
+   *  advance.  The output range may not overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
+		   _InputIterator2 __first2, _InputIterator2 __last2,
+		   _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)	
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (*__first1 < *__first2)
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__result;
+	  }
+	else if (*__first2 < *__first1)
+	  ++__first2;
+	else
+	  {
+	    ++__first1;
+	    ++__first2;
+	  }
+      return std::copy(__first1, __last1, __result);
+    }
+
+  /**
+   *  @brief  Return the difference of two sorted ranges using comparison
+   *  functor.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @param  comp    The comparison functor.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  the first range but not the second in order to the output range.
+   *  Iterators increment for each range.  When the current element of the
+   *  first range is less than the second according to @a comp, that element
+   *  is copied and the iterator advances.  If the current element of the
+   *  second range is less, no element is copied and the iterator advances.
+   *  If an element is contained in both ranges according to @a comp, no
+   *  elements are copied and both ranges advance.  The output range may not
+   *  overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
+		   _InputIterator2 __first2, _InputIterator2 __last2,
+		   _OutputIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (__comp(*__first1, *__first2))
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__result;
+	  }
+	else if (__comp(*__first2, *__first1))
+	  ++__first2;
+	else
+	  {
+	    ++__first1;
+	    ++__first2;
+	  }
+      return std::copy(__first1, __last1, __result);
+    }
+
+  /**
+   *  @brief  Return the symmetric difference of two sorted ranges.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  one range but not the other in order to the output range.  Iterators
+   *  increment for each range.  When the current element of one range is less
+   *  than the other, that element is copied and the iterator advances.  If an
+   *  element is contained in both ranges, no elements are copied and both
+   *  ranges advance.  The output range may not overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator>
+    _OutputIterator
+    set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
+			     _InputIterator2 __first2, _InputIterator2 __last2,
+			     _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)	
+      __glibcxx_requires_sorted_set(__first1, __last1, __first2);
+      __glibcxx_requires_sorted_set(__first2, __last2, __first1);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (*__first1 < *__first2)
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__result;
+	  }
+	else if (*__first2 < *__first1)
+	  {
+	    *__result = *__first2;
+	    ++__first2;
+	    ++__result;
+	  }
+	else
+	  {
+	    ++__first1;
+	    ++__first2;
+	  }
+      return std::copy(__first2, __last2, std::copy(__first1,
+						    __last1, __result));
+    }
+
+  /**
+   *  @brief  Return the symmetric difference of two sorted ranges using
+   *  comparison functor.
+   *  @ingroup set_algorithms
+   *  @param  first1  Start of first range.
+   *  @param  last1   End of first range.
+   *  @param  first2  Start of second range.
+   *  @param  last2   End of second range.
+   *  @param  comp    The comparison functor.
+   *  @return  End of the output range.
+   *  @ingroup set_algorithms
+   *
+   *  This operation iterates over both ranges, copying elements present in
+   *  one range but not the other in order to the output range.  Iterators
+   *  increment for each range.  When the current element of one range is less
+   *  than the other according to @a comp, that element is copied and the
+   *  iterator advances.  If an element is contained in both ranges according
+   *  to @a comp, no elements are copied and both ranges advance.  The output
+   *  range may not overlap either input range.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
+			     _InputIterator2 __first2, _InputIterator2 __last2,
+			     _OutputIterator __result,
+			     _Compare __comp)
+    {
+      typedef typename iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType1>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				  _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+				  _ValueType2, _ValueType1>)
+      __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
+      __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
+
+      while (__first1 != __last1 && __first2 != __last2)
+	if (__comp(*__first1, *__first2))
+	  {
+	    *__result = *__first1;
+	    ++__first1;
+	    ++__result;
+	  }
+	else if (__comp(*__first2, *__first1))
+	  {
+	    *__result = *__first2;
+	    ++__first2;
+	    ++__result;
+	  }
+	else
+	  {
+	    ++__first1;
+	    ++__first2;
+	  }
+      return std::copy(__first2, __last2, 
+		       std::copy(__first1, __last1, __result));
+    }
+
+
+  /**
+   *  @brief  Return the minimum element in a range.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  Iterator referencing the first instance of the smallest value.
+  */
+  template<typename _ForwardIterator>
+    _ForwardIterator
+    min_element(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __first;
+      _ForwardIterator __result = __first;
+      while (++__first != __last)
+	if (*__first < *__result)
+	  __result = __first;
+      return __result;
+    }
+
+  /**
+   *  @brief  Return the minimum element in a range using comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   Comparison functor.
+   *  @return  Iterator referencing the first instance of the smallest value
+   *  according to comp.
+  */
+  template<typename _ForwardIterator, typename _Compare>
+    _ForwardIterator
+    min_element(_ForwardIterator __first, _ForwardIterator __last,
+		_Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __first;
+      _ForwardIterator __result = __first;
+      while (++__first != __last)
+	if (__comp(*__first, *__result))
+	  __result = __first;
+      return __result;
+    }
+
+  /**
+   *  @brief  Return the maximum element in a range.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  Iterator referencing the first instance of the largest value.
+  */
+  template<typename _ForwardIterator>
+    _ForwardIterator
+    max_element(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __first;
+      _ForwardIterator __result = __first;
+      while (++__first != __last)
+	if (*__result < *__first)
+	  __result = __first;
+      return __result;
+    }
+
+  /**
+   *  @brief  Return the maximum element in a range using comparison functor.
+   *  @ingroup sorting_algorithms
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   Comparison functor.
+   *  @return  Iterator referencing the first instance of the largest value
+   *  according to comp.
+  */
+  template<typename _ForwardIterator, typename _Compare>
+    _ForwardIterator
+    max_element(_ForwardIterator __first, _ForwardIterator __last,
+		_Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last) return __first;
+      _ForwardIterator __result = __first;
+      while (++__first != __last)
+	if (__comp(*__result, *__first))
+	  __result = __first;
+      return __result;
+    }
+
+_GLIBCXX_END_NAMESPACE_ALGO
+} // namespace std
+
+#endif /* _STL_ALGO_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algobase.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algobase.h
new file mode 100644
index 000000000..626d5bf1c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_algobase.h
@@ -0,0 +1,1211 @@
+// Core algorithmic facilities -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_algobase.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{algorithm}
+ */
+
+#ifndef _STL_ALGOBASE_H
+#define _STL_ALGOBASE_H 1
+
+#include <bits/c++config.h>
+#include <bits/functexcept.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+#include <ext/numeric_traits.h>
+#include <bits/stl_pair.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/stl_iterator.h>
+#include <bits/concept_check.h>
+#include <debug/debug.h>
+#include <bits/move.h> // For std::swap and _GLIBCXX_MOVE
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a
+  // nutshell, we are partially implementing the resolution of DR 187,
+  // when it's safe, i.e., the value_types are equal.
+  template<bool _BoolType>
+    struct __iter_swap
+    {
+      template<typename _ForwardIterator1, typename _ForwardIterator2>
+        static void
+        iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+        {
+          typedef typename iterator_traits<_ForwardIterator1>::value_type
+            _ValueType1;
+          _ValueType1 __tmp = _GLIBCXX_MOVE(*__a);
+          *__a = _GLIBCXX_MOVE(*__b);
+          *__b = _GLIBCXX_MOVE(__tmp);
+	}
+    };
+
+  template<>
+    struct __iter_swap<true>
+    {
+      template<typename _ForwardIterator1, typename _ForwardIterator2>
+        static void 
+        iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+        {
+          swap(*__a, *__b);
+        }
+    };
+
+  /**
+   *  @brief Swaps the contents of two iterators.
+   *  @ingroup mutating_algorithms
+   *  @param  a  An iterator.
+   *  @param  b  Another iterator.
+   *  @return   Nothing.
+   *
+   *  This function swaps the values pointed to by two iterators, not the
+   *  iterators themselves.
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    inline void
+    iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+    {
+      typedef typename iterator_traits<_ForwardIterator1>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_ForwardIterator2>::value_type
+	_ValueType2;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator1>)
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator2>)
+      __glibcxx_function_requires(_ConvertibleConcept<_ValueType1,
+				  _ValueType2>)
+      __glibcxx_function_requires(_ConvertibleConcept<_ValueType2,
+				  _ValueType1>)
+
+      typedef typename iterator_traits<_ForwardIterator1>::reference
+	_ReferenceType1;
+      typedef typename iterator_traits<_ForwardIterator2>::reference
+	_ReferenceType2;
+      std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
+	&& __are_same<_ValueType1&, _ReferenceType1>::__value
+	&& __are_same<_ValueType2&, _ReferenceType2>::__value>::
+	iter_swap(__a, __b);
+    }
+
+  /**
+   *  @brief Swap the elements of two sequences.
+   *  @ingroup mutating_algorithms
+   *  @param  first1  A forward iterator.
+   *  @param  last1   A forward iterator.
+   *  @param  first2  A forward iterator.
+   *  @return   An iterator equal to @p first2+(last1-first1).
+   *
+   *  Swaps each element in the range @p [first1,last1) with the
+   *  corresponding element in the range @p [first2,(last1-first1)).
+   *  The ranges must not overlap.
+  */
+  template<typename _ForwardIterator1, typename _ForwardIterator2>
+    _ForwardIterator2
+    swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+		_ForwardIterator2 __first2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator1>)
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	std::iter_swap(__first1, __first2);
+      return __first2;
+    }
+
+  /**
+   *  @brief This does what you think it does.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @return   The lesser of the parameters.
+   *
+   *  This is the simple classic generic implementation.  It will work on
+   *  temporary expressions, since they are only evaluated once, unlike a
+   *  preprocessor macro.
+  */
+  template<typename _Tp>
+    inline const _Tp&
+    min(const _Tp& __a, const _Tp& __b)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
+      //return __b < __a ? __b : __a;
+      if (__b < __a)
+	return __b;
+      return __a;
+    }
+
+  /**
+   *  @brief This does what you think it does.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @return   The greater of the parameters.
+   *
+   *  This is the simple classic generic implementation.  It will work on
+   *  temporary expressions, since they are only evaluated once, unlike a
+   *  preprocessor macro.
+  */
+  template<typename _Tp>
+    inline const _Tp&
+    max(const _Tp& __a, const _Tp& __b)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
+      //return  __a < __b ? __b : __a;
+      if (__a < __b)
+	return __b;
+      return __a;
+    }
+
+  /**
+   *  @brief This does what you think it does.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @param  comp  A @link comparison_functors comparison functor@endlink.
+   *  @return   The lesser of the parameters.
+   *
+   *  This will work on temporary expressions, since they are only evaluated
+   *  once, unlike a preprocessor macro.
+  */
+  template<typename _Tp, typename _Compare>
+    inline const _Tp&
+    min(const _Tp& __a, const _Tp& __b, _Compare __comp)
+    {
+      //return __comp(__b, __a) ? __b : __a;
+      if (__comp(__b, __a))
+	return __b;
+      return __a;
+    }
+
+  /**
+   *  @brief This does what you think it does.
+   *  @ingroup sorting_algorithms
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @param  comp  A @link comparison_functors comparison functor@endlink.
+   *  @return   The greater of the parameters.
+   *
+   *  This will work on temporary expressions, since they are only evaluated
+   *  once, unlike a preprocessor macro.
+  */
+  template<typename _Tp, typename _Compare>
+    inline const _Tp&
+    max(const _Tp& __a, const _Tp& __b, _Compare __comp)
+    {
+      //return __comp(__a, __b) ? __b : __a;
+      if (__comp(__a, __b))
+	return __b;
+      return __a;
+    }
+
+  // If _Iterator is a __normal_iterator return its base (a plain pointer,
+  // normally) otherwise return it untouched.  See copy, fill, ... 
+  template<typename _Iterator>
+    struct _Niter_base
+    : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value>
+    { };
+
+  template<typename _Iterator>
+    inline typename _Niter_base<_Iterator>::iterator_type
+    __niter_base(_Iterator __it)
+    { return std::_Niter_base<_Iterator>::_S_base(__it); }
+
+  // Likewise, for move_iterator.
+  template<typename _Iterator>
+    struct _Miter_base
+    : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value>
+    { };
+
+  template<typename _Iterator>
+    inline typename _Miter_base<_Iterator>::iterator_type
+    __miter_base(_Iterator __it)
+    { return std::_Miter_base<_Iterator>::_S_base(__it); }
+
+  // All of these auxiliary structs serve two purposes.  (1) Replace
+  // calls to copy with memmove whenever possible.  (Memmove, not memcpy,
+  // because the input and output ranges are permitted to overlap.)
+  // (2) If we're using random access iterators, then write the loop as
+  // a for loop with an explicit count.
+
+  template<bool, bool, typename>
+    struct __copy_move
+    {
+      template<typename _II, typename _OI>
+        static _OI
+        __copy_m(_II __first, _II __last, _OI __result)
+        {
+	  for (; __first != __last; ++__result, ++__first)
+	    *__result = *__first;
+	  return __result;
+	}
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Category>
+    struct __copy_move<true, false, _Category>
+    {
+      template<typename _II, typename _OI>
+        static _OI
+        __copy_m(_II __first, _II __last, _OI __result)
+        {
+	  for (; __first != __last; ++__result, ++__first)
+	    *__result = std::move(*__first);
+	  return __result;
+	}
+    };
+#endif
+
+  template<>
+    struct __copy_move<false, false, random_access_iterator_tag>
+    {
+      template<typename _II, typename _OI>
+        static _OI
+        __copy_m(_II __first, _II __last, _OI __result)
+        { 
+	  typedef typename iterator_traits<_II>::difference_type _Distance;
+	  for(_Distance __n = __last - __first; __n > 0; --__n)
+	    {
+	      *__result = *__first;
+	      ++__first;
+	      ++__result;
+	    }
+	  return __result;
+	}
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<>
+    struct __copy_move<true, false, random_access_iterator_tag>
+    {
+      template<typename _II, typename _OI>
+        static _OI
+        __copy_m(_II __first, _II __last, _OI __result)
+        { 
+	  typedef typename iterator_traits<_II>::difference_type _Distance;
+	  for(_Distance __n = __last - __first; __n > 0; --__n)
+	    {
+	      *__result = std::move(*__first);
+	      ++__first;
+	      ++__result;
+	    }
+	  return __result;
+	}
+    };
+#endif
+
+  template<bool _IsMove>
+    struct __copy_move<_IsMove, true, random_access_iterator_tag>
+    {
+      template<typename _Tp>
+        static _Tp*
+        __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
+        {
+	  const ptrdiff_t _Num = __last - __first;
+	  if (_Num)
+	    __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
+	  return __result + _Num;
+	}
+    };
+
+  template<bool _IsMove, typename _II, typename _OI>
+    inline _OI
+    __copy_move_a(_II __first, _II __last, _OI __result)
+    {
+      typedef typename iterator_traits<_II>::value_type _ValueTypeI;
+      typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
+      typedef typename iterator_traits<_II>::iterator_category _Category;
+      const bool __simple = (__is_trivial(_ValueTypeI)
+	                     && __is_pointer<_II>::__value
+	                     && __is_pointer<_OI>::__value
+			     && __are_same<_ValueTypeI, _ValueTypeO>::__value);
+
+      return std::__copy_move<_IsMove, __simple,
+	                      _Category>::__copy_m(__first, __last, __result);
+    }
+
+  // Helpers for streambuf iterators (either istream or ostream).
+  // NB: avoid including <iosfwd>, relatively large.
+  template<typename _CharT>
+    struct char_traits;
+
+  template<typename _CharT, typename _Traits>
+    class istreambuf_iterator;
+
+  template<typename _CharT, typename _Traits>
+    class ostreambuf_iterator;
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
+	     ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+    __copy_move_a2(_CharT*, _CharT*,
+		   ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
+	     ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+    __copy_move_a2(const _CharT*, const _CharT*,
+		   ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+				    _CharT*>::__type
+    __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
+		   istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
+
+  template<bool _IsMove, typename _II, typename _OI>
+    inline _OI
+    __copy_move_a2(_II __first, _II __last, _OI __result)
+    {
+      return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first),
+					     std::__niter_base(__last),
+					     std::__niter_base(__result)));
+    }
+
+  /**
+   *  @brief Copies the range [first,last) into result.
+   *  @ingroup mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  result An output iterator.
+   *  @return   result + (first - last)
+   *
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).  Result may not be contained within
+   *  [first,last); the copy_backward function should be used instead.
+   *
+   *  Note that the end of the output range is permitted to be contained
+   *  within [first,last).
+  */
+  template<typename _II, typename _OI>
+    inline _OI
+    copy(_II __first, _II __last, _OI __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_II>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OI,
+	    typename iterator_traits<_II>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
+	      (std::__miter_base(__first), std::__miter_base(__last),
+	       __result));
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief Moves the range [first,last) into result.
+   *  @ingroup mutating_algorithms
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  result An output iterator.
+   *  @return   result + (first - last)
+   *
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).  Result may not be contained within
+   *  [first,last); the move_backward function should be used instead.
+   *
+   *  Note that the end of the output range is permitted to be contained
+   *  within [first,last).
+  */
+  template<typename _II, typename _OI>
+    inline _OI
+    move(_II __first, _II __last, _OI __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_II>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OI,
+	    typename iterator_traits<_II>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return std::__copy_move_a2<true>(std::__miter_base(__first),
+				       std::__miter_base(__last), __result);
+    }
+
+#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::move(_Tp, _Up, _Vp)
+#else
+#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::copy(_Tp, _Up, _Vp)
+#endif
+
+  template<bool, bool, typename>
+    struct __copy_move_backward
+    {
+      template<typename _BI1, typename _BI2>
+        static _BI2
+        __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+        {
+	  while (__first != __last)
+	    *--__result = *--__last;
+	  return __result;
+	}
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Category>
+    struct __copy_move_backward<true, false, _Category>
+    {
+      template<typename _BI1, typename _BI2>
+        static _BI2
+        __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+        {
+	  while (__first != __last)
+	    *--__result = std::move(*--__last);
+	  return __result;
+	}
+    };
+#endif
+
+  template<>
+    struct __copy_move_backward<false, false, random_access_iterator_tag>
+    {
+      template<typename _BI1, typename _BI2>
+        static _BI2
+        __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+        {
+	  typename iterator_traits<_BI1>::difference_type __n;
+	  for (__n = __last - __first; __n > 0; --__n)
+	    *--__result = *--__last;
+	  return __result;
+	}
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<>
+    struct __copy_move_backward<true, false, random_access_iterator_tag>
+    {
+      template<typename _BI1, typename _BI2>
+        static _BI2
+        __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+        {
+	  typename iterator_traits<_BI1>::difference_type __n;
+	  for (__n = __last - __first; __n > 0; --__n)
+	    *--__result = std::move(*--__last);
+	  return __result;
+	}
+    };
+#endif
+
+  template<bool _IsMove>
+    struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
+    {
+      template<typename _Tp>
+        static _Tp*
+        __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
+        {
+	  const ptrdiff_t _Num = __last - __first;
+	  if (_Num)
+	    __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
+	  return __result - _Num;
+	}
+    };
+
+  template<bool _IsMove, typename _BI1, typename _BI2>
+    inline _BI2
+    __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
+    {
+      typedef typename iterator_traits<_BI1>::value_type _ValueType1;
+      typedef typename iterator_traits<_BI2>::value_type _ValueType2;
+      typedef typename iterator_traits<_BI1>::iterator_category _Category;
+      const bool __simple = (__is_trivial(_ValueType1)
+	                     && __is_pointer<_BI1>::__value
+	                     && __is_pointer<_BI2>::__value
+			     && __are_same<_ValueType1, _ValueType2>::__value);
+
+      return std::__copy_move_backward<_IsMove, __simple,
+	                               _Category>::__copy_move_b(__first,
+								 __last,
+								 __result);
+    }
+
+  template<bool _IsMove, typename _BI1, typename _BI2>
+    inline _BI2
+    __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
+    {
+      return _BI2(std::__copy_move_backward_a<_IsMove>
+		  (std::__niter_base(__first), std::__niter_base(__last),
+		   std::__niter_base(__result)));
+    }
+
+  /**
+   *  @brief Copies the range [first,last) into result.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A bidirectional iterator.
+   *  @param  last   A bidirectional iterator.
+   *  @param  result A bidirectional iterator.
+   *  @return   result - (first - last)
+   *
+   *  The function has the same effect as copy, but starts at the end of the
+   *  range and works its way to the start, returning the start of the result.
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).
+   *
+   *  Result may not be in the range [first,last).  Use copy instead.  Note
+   *  that the start of the output range may overlap [first,last).
+  */
+  template<typename _BI1, typename _BI2>
+    inline _BI2
+    copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>)
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>)
+      __glibcxx_function_requires(_ConvertibleConcept<
+	    typename iterator_traits<_BI1>::value_type,
+	    typename iterator_traits<_BI2>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
+	      (std::__miter_base(__first), std::__miter_base(__last),
+	       __result));
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief Moves the range [first,last) into result.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A bidirectional iterator.
+   *  @param  last   A bidirectional iterator.
+   *  @param  result A bidirectional iterator.
+   *  @return   result - (first - last)
+   *
+   *  The function has the same effect as move, but starts at the end of the
+   *  range and works its way to the start, returning the start of the result.
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).
+   *
+   *  Result may not be in the range [first,last).  Use move instead.  Note
+   *  that the start of the output range may overlap [first,last).
+  */
+  template<typename _BI1, typename _BI2>
+    inline _BI2
+    move_backward(_BI1 __first, _BI1 __last, _BI2 __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>)
+      __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>)
+      __glibcxx_function_requires(_ConvertibleConcept<
+	    typename iterator_traits<_BI1>::value_type,
+	    typename iterator_traits<_BI2>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return std::__copy_move_backward_a2<true>(std::__miter_base(__first),
+						std::__miter_base(__last),
+						__result);
+    }
+
+#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::move_backward(_Tp, _Up, _Vp)
+#else
+#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::copy_backward(_Tp, _Up, _Vp)
+#endif
+
+  template<typename _ForwardIterator, typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
+    __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ 	     const _Tp& __value)
+    {
+      for (; __first != __last; ++__first)
+	*__first = __value;
+    }
+    
+  template<typename _ForwardIterator, typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
+    __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+	     const _Tp& __value)
+    {
+      const _Tp __tmp = __value;
+      for (; __first != __last; ++__first)
+	*__first = __tmp;
+    }
+
+  // Specialization: for char types we can use memset.
+  template<typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
+    __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
+    {
+      const _Tp __tmp = __c;
+      __builtin_memset(__first, static_cast<unsigned char>(__tmp),
+		       __last - __first);
+    }
+
+  /**
+   *  @brief Fills the range [first,last) with copies of value.
+   *  @ingroup mutating_algorithms
+   *  @param  first  A forward iterator.
+   *  @param  last   A forward iterator.
+   *  @param  value  A reference-to-const of arbitrary type.
+   *  @return   Nothing.
+   *
+   *  This function fills a range with copies of the same value.  For char
+   *  types filling contiguous areas of memory, this becomes an inline call
+   *  to @c memset or @c wmemset.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
+		    __value);
+    }
+
+  template<typename _OutputIterator, typename _Size, typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
+    __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+    {
+      for (__decltype(__n + 0) __niter = __n;
+	   __niter > 0; --__niter, ++__first)
+	*__first = __value;
+      return __first;
+    }
+
+  template<typename _OutputIterator, typename _Size, typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
+    __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+    {
+      const _Tp __tmp = __value;
+      for (__decltype(__n + 0) __niter = __n;
+	   __niter > 0; --__niter, ++__first)
+	*__first = __tmp;
+      return __first;
+    }
+
+  template<typename _Size, typename _Tp>
+    inline typename
+    __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
+    __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
+    {
+      std::__fill_a(__first, __first + __n, __c);
+      return __first + __n;
+    }
+
+  /**
+   *  @brief Fills the range [first,first+n) with copies of value.
+   *  @ingroup mutating_algorithms
+   *  @param  first  An output iterator.
+   *  @param  n      The count of copies to perform.
+   *  @param  value  A reference-to-const of arbitrary type.
+   *  @return   The iterator at first+n.
+   *
+   *  This function fills a range with copies of the same value.  For char
+   *  types filling contiguous areas of memory, this becomes an inline call
+   *  to @c memset or @ wmemset.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 865. More algorithms that throw away information
+  */
+  template<typename _OI, typename _Size, typename _Tp>
+    inline _OI
+    fill_n(_OI __first, _Size __n, const _Tp& __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_OutputIteratorConcept<_OI, _Tp>)
+
+      return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value));
+    }
+
+  template<bool _BoolType>
+    struct __equal
+    {
+      template<typename _II1, typename _II2>
+        static bool
+        equal(_II1 __first1, _II1 __last1, _II2 __first2)
+        {
+	  for (; __first1 != __last1; ++__first1, ++__first2)
+	    if (!(*__first1 == *__first2))
+	      return false;
+	  return true;
+	}
+    };
+
+  template<>
+    struct __equal<true>
+    {
+      template<typename _Tp>
+        static bool
+        equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
+        {
+	  return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
+				   * (__last1 - __first1));
+	}
+    };
+
+  template<typename _II1, typename _II2>
+    inline bool
+    __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
+    {
+      typedef typename iterator_traits<_II1>::value_type _ValueType1;
+      typedef typename iterator_traits<_II2>::value_type _ValueType2;
+      const bool __simple = (__is_integer<_ValueType1>::__value
+	                     && __is_pointer<_II1>::__value
+	                     && __is_pointer<_II2>::__value
+			     && __are_same<_ValueType1, _ValueType2>::__value);
+
+      return std::__equal<__simple>::equal(__first1, __last1, __first2);
+    }
+
+
+  template<typename, typename>
+    struct __lc_rai
+    {
+      template<typename _II1, typename _II2>
+        static _II1
+        __newlast1(_II1, _II1 __last1, _II2, _II2)
+        { return __last1; }
+
+      template<typename _II>
+        static bool
+        __cnd2(_II __first, _II __last)
+        { return __first != __last; }
+    };
+
+  template<>
+    struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
+    {
+      template<typename _RAI1, typename _RAI2>
+        static _RAI1
+        __newlast1(_RAI1 __first1, _RAI1 __last1,
+		   _RAI2 __first2, _RAI2 __last2)
+        {
+	  const typename iterator_traits<_RAI1>::difference_type
+	    __diff1 = __last1 - __first1;
+	  const typename iterator_traits<_RAI2>::difference_type
+	    __diff2 = __last2 - __first2;
+	  return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
+	}
+
+      template<typename _RAI>
+        static bool
+        __cnd2(_RAI, _RAI)
+        { return true; }
+    };
+
+  template<bool _BoolType>
+    struct __lexicographical_compare
+    {
+      template<typename _II1, typename _II2>
+        static bool __lc(_II1, _II1, _II2, _II2);
+    };
+
+  template<bool _BoolType>
+    template<typename _II1, typename _II2>
+      bool
+      __lexicographical_compare<_BoolType>::
+      __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
+      {
+	typedef typename iterator_traits<_II1>::iterator_category _Category1;
+	typedef typename iterator_traits<_II2>::iterator_category _Category2;
+	typedef std::__lc_rai<_Category1, _Category2> 	__rai_type;
+	
+	__last1 = __rai_type::__newlast1(__first1, __last1,
+					 __first2, __last2);
+	for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+	     ++__first1, ++__first2)
+	  {
+	    if (*__first1 < *__first2)
+	      return true;
+	    if (*__first2 < *__first1)
+	      return false;
+	  }
+	return __first1 == __last1 && __first2 != __last2;
+      }
+
+  template<>
+    struct __lexicographical_compare<true>
+    {
+      template<typename _Tp, typename _Up>
+        static bool
+        __lc(const _Tp* __first1, const _Tp* __last1,
+	     const _Up* __first2, const _Up* __last2)
+	{
+	  const size_t __len1 = __last1 - __first1;
+	  const size_t __len2 = __last2 - __first2;
+	  const int __result = __builtin_memcmp(__first1, __first2,
+						std::min(__len1, __len2));
+	  return __result != 0 ? __result < 0 : __len1 < __len2;
+	}
+    };
+
+  template<typename _II1, typename _II2>
+    inline bool
+    __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
+				  _II2 __first2, _II2 __last2)
+    {
+      typedef typename iterator_traits<_II1>::value_type _ValueType1;
+      typedef typename iterator_traits<_II2>::value_type _ValueType2;
+      const bool __simple =
+	(__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
+	 && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
+	 && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
+	 && __is_pointer<_II1>::__value
+	 && __is_pointer<_II2>::__value);
+
+      return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
+							    __first2, __last2);
+    }
+
+  /**
+   *  @brief Finds the first position in which @a val could be inserted
+   *         without changing the ordering.
+   *  @param  first   An iterator.
+   *  @param  last    Another iterator.
+   *  @param  val     The search term.
+   *  @return         An iterator pointing to the first element <em>not less
+   *                  than</em> @a val, or end() if every element is less than 
+   *                  @a val.
+   *  @ingroup binary_search_algorithms
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    _ForwardIterator
+    lower_bound(_ForwardIterator __first, _ForwardIterator __last,
+		const _Tp& __val)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_ForwardIterator>::difference_type
+	_DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>)
+      __glibcxx_requires_partitioned_lower(__first, __last, __val);
+
+      _DistanceType __len = std::distance(__first, __last);
+
+      while (__len > 0)
+	{
+	  _DistanceType __half = __len >> 1;
+	  _ForwardIterator __middle = __first;
+	  std::advance(__middle, __half);
+	  if (*__middle < __val)
+	    {
+	      __first = __middle;
+	      ++__first;
+	      __len = __len - __half - 1;
+	    }
+	  else
+	    __len = __half;
+	}
+      return __first;
+    }
+
+  /// This is a helper function for the sort routines and for random.tcc.
+  //  Precondition: __n > 0.
+  template<typename _Size>
+    inline _Size
+    __lg(_Size __n)
+    {
+      _Size __k;
+      for (__k = 0; __n != 0; __n >>= 1)
+	++__k;
+      return __k - 1;
+    }
+
+  inline int
+  __lg(int __n)
+  { return sizeof(int) * __CHAR_BIT__  - 1 - __builtin_clz(__n); }
+
+  inline long
+  __lg(long __n)
+  { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }
+
+  inline long long
+  __lg(long long __n)
+  { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+_GLIBCXX_BEGIN_NAMESPACE_ALGO
+
+  /**
+   *  @brief Tests a range for element-wise equality.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @return   A boolean true or false.
+   *
+   *  This compares the elements of two ranges using @c == and returns true or
+   *  false depending on whether all of the corresponding elements of the
+   *  ranges are equal.
+  */
+  template<typename _II1, typename _II2>
+    inline bool
+    equal(_II1 __first1, _II1 __last1, _II2 __first2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_II1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_II2>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_II1>::value_type,
+	    typename iterator_traits<_II2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      return std::__equal_aux(std::__niter_base(__first1),
+			      std::__niter_base(__last1),
+			      std::__niter_base(__first2));
+    }
+
+  /**
+   *  @brief Tests a range for element-wise equality.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @param binary_pred A binary predicate @link functors
+   *                  functor@endlink.
+   *  @return         A boolean true or false.
+   *
+   *  This compares the elements of two ranges using the binary_pred
+   *  parameter, and returns true or
+   *  false depending on whether all of the corresponding elements of the
+   *  ranges are equal.
+  */
+  template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
+    inline bool
+    equal(_IIter1 __first1, _IIter1 __last1,
+	  _IIter2 __first2, _BinaryPredicate __binary_pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_IIter1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_IIter2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	if (!bool(__binary_pred(*__first1, *__first2)))
+	  return false;
+      return true;
+    }
+
+  /**
+   *  @brief Performs @b dictionary comparison on ranges.
+   *  @ingroup sorting_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @param  last2   An input iterator.
+   *  @return   A boolean true or false.
+   *
+   *  <em>Returns true if the sequence of elements defined by the range
+   *  [first1,last1) is lexicographically less than the sequence of elements
+   *  defined by the range [first2,last2).  Returns false otherwise.</em>
+   *  (Quoted from [25.3.8]/1.)  If the iterators are all character pointers,
+   *  then this is an inline call to @c memcmp.
+  */
+  template<typename _II1, typename _II2>
+    inline bool
+    lexicographical_compare(_II1 __first1, _II1 __last1,
+			    _II2 __first2, _II2 __last2)
+    {
+      // concept requirements
+      typedef typename iterator_traits<_II1>::value_type _ValueType1;
+      typedef typename iterator_traits<_II2>::value_type _ValueType2;
+      __glibcxx_function_requires(_InputIteratorConcept<_II1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_II2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
+      __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      return std::__lexicographical_compare_aux(std::__niter_base(__first1),
+						std::__niter_base(__last1),
+						std::__niter_base(__first2),
+						std::__niter_base(__last2));
+    }
+
+  /**
+   *  @brief Performs @b dictionary comparison on ranges.
+   *  @ingroup sorting_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @param  last2   An input iterator.
+   *  @param  comp  A @link comparison_functors comparison functor@endlink.
+   *  @return   A boolean true or false.
+   *
+   *  The same as the four-parameter @c lexicographical_compare, but uses the
+   *  comp parameter instead of @c <.
+  */
+  template<typename _II1, typename _II2, typename _Compare>
+    bool
+    lexicographical_compare(_II1 __first1, _II1 __last1,
+			    _II2 __first2, _II2 __last2, _Compare __comp)
+    {
+      typedef typename iterator_traits<_II1>::iterator_category _Category1;
+      typedef typename iterator_traits<_II2>::iterator_category _Category2;
+      typedef std::__lc_rai<_Category1, _Category2> 	__rai_type;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_II1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_II2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
+      for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+	   ++__first1, ++__first2)
+	{
+	  if (__comp(*__first1, *__first2))
+	    return true;
+	  if (__comp(*__first2, *__first1))
+	    return false;
+	}
+      return __first1 == __last1 && __first2 != __last2;
+    }
+
+  /**
+   *  @brief Finds the places in ranges which don't match.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @return   A pair of iterators pointing to the first mismatch.
+   *
+   *  This compares the elements of two ranges using @c == and returns a pair
+   *  of iterators.  The first iterator points into the first range, the
+   *  second iterator points into the second range, and the elements pointed
+   *  to by the iterators are not equal.
+  */
+  template<typename _InputIterator1, typename _InputIterator2>
+    pair<_InputIterator1, _InputIterator2>
+    mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+	     _InputIterator2 __first2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_EqualOpConcept<
+	    typename iterator_traits<_InputIterator1>::value_type,
+	    typename iterator_traits<_InputIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      while (__first1 != __last1 && *__first1 == *__first2)
+        {
+	  ++__first1;
+	  ++__first2;
+        }
+      return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+    }
+
+  /**
+   *  @brief Finds the places in ranges which don't match.
+   *  @ingroup non_mutating_algorithms
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @param binary_pred A binary predicate @link functors
+   *         functor@endlink.
+   *  @return   A pair of iterators pointing to the first mismatch.
+   *
+   *  This compares the elements of two ranges using the binary_pred
+   *  parameter, and returns a pair
+   *  of iterators.  The first iterator points into the first range, the
+   *  second iterator points into the second range, and the elements pointed
+   *  to by the iterators are not equal.
+  */
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _BinaryPredicate>
+    pair<_InputIterator1, _InputIterator2>
+    mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+	     _InputIterator2 __first2, _BinaryPredicate __binary_pred)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
+        {
+	  ++__first1;
+	  ++__first2;
+        }
+      return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+    }
+
+_GLIBCXX_END_NAMESPACE_ALGO
+} // namespace std
+
+// NB: This file is included within many other C++ includes, as a way
+// of getting the base algorithms. So, make sure that parallel bits
+// come in too if requested. 
+#ifdef _GLIBCXX_PARALLEL
+# include <parallel/algobase.h>
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_bvector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_bvector.h
new file mode 100644
index 000000000..3cd53e7fa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_bvector.h
@@ -0,0 +1,1060 @@
+// vector<bool> specialization -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1999
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_bvector.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{vector}
+ */
+
+#ifndef _STL_BVECTOR_H
+#define _STL_BVECTOR_H 1
+
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  typedef unsigned long _Bit_type;
+  enum { _S_word_bit = int(__CHAR_BIT__ * sizeof(_Bit_type)) };
+
+  struct _Bit_reference
+  {
+    _Bit_type * _M_p;
+    _Bit_type _M_mask;
+
+    _Bit_reference(_Bit_type * __x, _Bit_type __y)
+    : _M_p(__x), _M_mask(__y) { }
+
+    _Bit_reference() : _M_p(0), _M_mask(0) { }
+
+    operator bool() const
+    { return !!(*_M_p & _M_mask); }
+
+    _Bit_reference&
+    operator=(bool __x)
+    {
+      if (__x)
+	*_M_p |= _M_mask;
+      else
+	*_M_p &= ~_M_mask;
+      return *this;
+    }
+
+    _Bit_reference&
+    operator=(const _Bit_reference& __x)
+    { return *this = bool(__x); }
+
+    bool
+    operator==(const _Bit_reference& __x) const
+    { return bool(*this) == bool(__x); }
+
+    bool
+    operator<(const _Bit_reference& __x) const
+    { return !bool(*this) && bool(__x); }
+
+    void
+    flip()
+    { *_M_p ^= _M_mask; }
+  };
+
+  struct _Bit_iterator_base
+  : public std::iterator<std::random_access_iterator_tag, bool>
+  {
+    _Bit_type * _M_p;
+    unsigned int _M_offset;
+
+    _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
+    : _M_p(__x), _M_offset(__y) { }
+
+    void
+    _M_bump_up()
+    {
+      if (_M_offset++ == int(_S_word_bit) - 1)
+	{
+	  _M_offset = 0;
+	  ++_M_p;
+	}
+    }
+
+    void
+    _M_bump_down()
+    {
+      if (_M_offset-- == 0)
+	{
+	  _M_offset = int(_S_word_bit) - 1;
+	  --_M_p;
+	}
+    }
+
+    void
+    _M_incr(ptrdiff_t __i)
+    {
+      difference_type __n = __i + _M_offset;
+      _M_p += __n / int(_S_word_bit);
+      __n = __n % int(_S_word_bit);
+      if (__n < 0)
+	{
+	  __n += int(_S_word_bit);
+	  --_M_p;
+	}
+      _M_offset = static_cast<unsigned int>(__n);
+    }
+
+    bool
+    operator==(const _Bit_iterator_base& __i) const
+    { return _M_p == __i._M_p && _M_offset == __i._M_offset; }
+
+    bool
+    operator<(const _Bit_iterator_base& __i) const
+    {
+      return _M_p < __i._M_p
+	     || (_M_p == __i._M_p && _M_offset < __i._M_offset);
+    }
+
+    bool
+    operator!=(const _Bit_iterator_base& __i) const
+    { return !(*this == __i); }
+
+    bool
+    operator>(const _Bit_iterator_base& __i) const
+    { return __i < *this; }
+
+    bool
+    operator<=(const _Bit_iterator_base& __i) const
+    { return !(__i < *this); }
+
+    bool
+    operator>=(const _Bit_iterator_base& __i) const
+    { return !(*this < __i); }
+  };
+
+  inline ptrdiff_t
+  operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
+  {
+    return (int(_S_word_bit) * (__x._M_p - __y._M_p)
+	    + __x._M_offset - __y._M_offset);
+  }
+
+  struct _Bit_iterator : public _Bit_iterator_base
+  {
+    typedef _Bit_reference  reference;
+    typedef _Bit_reference* pointer;
+    typedef _Bit_iterator   iterator;
+
+    _Bit_iterator() : _Bit_iterator_base(0, 0) { }
+
+    _Bit_iterator(_Bit_type * __x, unsigned int __y)
+    : _Bit_iterator_base(__x, __y) { }
+
+    reference
+    operator*() const
+    { return reference(_M_p, 1UL << _M_offset); }
+
+    iterator&
+    operator++()
+    {
+      _M_bump_up();
+      return *this;
+    }
+
+    iterator
+    operator++(int)
+    {
+      iterator __tmp = *this;
+      _M_bump_up();
+      return __tmp;
+    }
+
+    iterator&
+    operator--()
+    {
+      _M_bump_down();
+      return *this;
+    }
+
+    iterator
+    operator--(int)
+    {
+      iterator __tmp = *this;
+      _M_bump_down();
+      return __tmp;
+    }
+
+    iterator&
+    operator+=(difference_type __i)
+    {
+      _M_incr(__i);
+      return *this;
+    }
+
+    iterator&
+    operator-=(difference_type __i)
+    {
+      *this += -__i;
+      return *this;
+    }
+
+    iterator
+    operator+(difference_type __i) const
+    {
+      iterator __tmp = *this;
+      return __tmp += __i;
+    }
+
+    iterator
+    operator-(difference_type __i) const
+    {
+      iterator __tmp = *this;
+      return __tmp -= __i;
+    }
+
+    reference
+    operator[](difference_type __i) const
+    { return *(*this + __i); }
+  };
+
+  inline _Bit_iterator
+  operator+(ptrdiff_t __n, const _Bit_iterator& __x)
+  { return __x + __n; }
+
+  struct _Bit_const_iterator : public _Bit_iterator_base
+  {
+    typedef bool                 reference;
+    typedef bool                 const_reference;
+    typedef const bool*          pointer;
+    typedef _Bit_const_iterator  const_iterator;
+
+    _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
+
+    _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
+    : _Bit_iterator_base(__x, __y) { }
+
+    _Bit_const_iterator(const _Bit_iterator& __x)
+    : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
+
+    const_reference
+    operator*() const
+    { return _Bit_reference(_M_p, 1UL << _M_offset); }
+
+    const_iterator&
+    operator++()
+    {
+      _M_bump_up();
+      return *this;
+    }
+
+    const_iterator
+    operator++(int)
+    {
+      const_iterator __tmp = *this;
+      _M_bump_up();
+      return __tmp;
+    }
+
+    const_iterator&
+    operator--()
+    {
+      _M_bump_down();
+      return *this;
+    }
+
+    const_iterator
+    operator--(int)
+    {
+      const_iterator __tmp = *this;
+      _M_bump_down();
+      return __tmp;
+    }
+
+    const_iterator&
+    operator+=(difference_type __i)
+    {
+      _M_incr(__i);
+      return *this;
+    }
+
+    const_iterator&
+    operator-=(difference_type __i)
+    {
+      *this += -__i;
+      return *this;
+    }
+
+    const_iterator 
+    operator+(difference_type __i) const
+    {
+      const_iterator __tmp = *this;
+      return __tmp += __i;
+    }
+
+    const_iterator
+    operator-(difference_type __i) const
+    {
+      const_iterator __tmp = *this;
+      return __tmp -= __i;
+    }
+
+    const_reference
+    operator[](difference_type __i) const
+    { return *(*this + __i); }
+  };
+
+  inline _Bit_const_iterator
+  operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
+  { return __x + __n; }
+
+  inline void
+  __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x)
+  {
+    for (; __first != __last; ++__first)
+      *__first = __x;
+  }
+
+  inline void
+  fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
+  {
+    if (__first._M_p != __last._M_p)
+      {
+	std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0);
+	__fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x);
+	__fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x);
+      }
+    else
+      __fill_bvector(__first, __last, __x);
+  }
+
+  template<typename _Alloc>
+    struct _Bvector_base
+    {
+      typedef typename _Alloc::template rebind<_Bit_type>::other
+        _Bit_alloc_type;
+      
+      struct _Bvector_impl
+      : public _Bit_alloc_type
+      {
+	_Bit_iterator 	_M_start;
+	_Bit_iterator 	_M_finish;
+	_Bit_type* 	_M_end_of_storage;
+
+	_Bvector_impl()
+	: _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0)
+	{ }
+ 
+	_Bvector_impl(const _Bit_alloc_type& __a)
+	: _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
+	{ }
+      };
+
+    public:
+      typedef _Alloc allocator_type;
+
+      _Bit_alloc_type&
+      _M_get_Bit_allocator()
+      { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
+
+      const _Bit_alloc_type&
+      _M_get_Bit_allocator() const
+      { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_get_Bit_allocator()); }
+
+      _Bvector_base()
+      : _M_impl() { }
+      
+      _Bvector_base(const allocator_type& __a)
+      : _M_impl(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _Bvector_base(_Bvector_base&& __x)
+      : _M_impl(__x._M_get_Bit_allocator())
+      {
+	this->_M_impl._M_start = __x._M_impl._M_start;
+	this->_M_impl._M_finish = __x._M_impl._M_finish;
+	this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
+	__x._M_impl._M_start = _Bit_iterator();
+	__x._M_impl._M_finish = _Bit_iterator();
+	__x._M_impl._M_end_of_storage = 0;
+      }
+#endif
+
+      ~_Bvector_base()
+      { this->_M_deallocate(); }
+
+    protected:
+      _Bvector_impl _M_impl;
+
+      _Bit_type*
+      _M_allocate(size_t __n)
+      { return _M_impl.allocate((__n + int(_S_word_bit) - 1)
+				/ int(_S_word_bit)); }
+
+      void
+      _M_deallocate()
+      {
+	if (_M_impl._M_start._M_p)
+	  _M_impl.deallocate(_M_impl._M_start._M_p,
+			     _M_impl._M_end_of_storage - _M_impl._M_start._M_p);
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+// Declare a partial specialization of vector<T, Alloc>.
+#include <bits/stl_vector.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief  A specialization of vector for booleans which offers fixed time
+   *  access to individual elements in any order.
+   *
+   *  Note that vector<bool> does not actually meet the requirements for being
+   *  a container.  This is because the reference and pointer types are not
+   *  really references and pointers to bool.  See DR96 for details.  @see
+   *  vector for function documentation.
+   *
+   *  @ingroup sequences
+   *
+   *  In some terminology a %vector can be described as a dynamic
+   *  C-style array, it offers fast and efficient access to individual
+   *  elements in any order and saves the user from worrying about
+   *  memory and size allocation.  Subscripting ( @c [] ) access is
+   *  also provided as with C-style arrays.
+  */
+template<typename _Alloc>
+  class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
+  {
+    typedef _Bvector_base<_Alloc>			 _Base;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename> friend class hash;
+#endif
+
+  public:
+    typedef bool                                         value_type;
+    typedef size_t                                       size_type;
+    typedef ptrdiff_t                                    difference_type;
+    typedef _Bit_reference                               reference;
+    typedef bool                                         const_reference;
+    typedef _Bit_reference*                              pointer;
+    typedef const bool*                                  const_pointer;
+    typedef _Bit_iterator                                iterator;
+    typedef _Bit_const_iterator                          const_iterator;
+    typedef std::reverse_iterator<const_iterator>        const_reverse_iterator;
+    typedef std::reverse_iterator<iterator>              reverse_iterator;
+    typedef _Alloc                        		 allocator_type;
+
+    allocator_type get_allocator() const
+    { return _Base::get_allocator(); }
+
+  protected:
+    using _Base::_M_allocate;
+    using _Base::_M_deallocate;
+    using _Base::_M_get_Bit_allocator;
+
+  public:
+    vector()
+    : _Base() { }
+
+    explicit
+    vector(const allocator_type& __a)
+    : _Base(__a) { }
+
+    explicit
+    vector(size_type __n, const bool& __value = bool(), 
+	   const allocator_type& __a = allocator_type())
+    : _Base(__a)
+    {
+      _M_initialize(__n);
+      std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, 
+		__value ? ~0 : 0);
+    }
+
+    vector(const vector& __x)
+    : _Base(__x._M_get_Bit_allocator())
+    {
+      _M_initialize(__x.size());
+      _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    vector(vector&& __x)
+    : _Base(std::move(__x)) { }
+
+    vector(initializer_list<bool> __l,
+	   const allocator_type& __a = allocator_type())
+    : _Base(__a)
+    {
+      _M_initialize_range(__l.begin(), __l.end(),
+			  random_access_iterator_tag());
+    }
+#endif
+
+    template<typename _InputIterator>
+      vector(_InputIterator __first, _InputIterator __last,
+	     const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	_M_initialize_dispatch(__first, __last, _Integral());
+      }
+
+    ~vector() { }
+
+    vector&
+    operator=(const vector& __x)
+    {
+      if (&__x == this)
+	return *this;
+      if (__x.size() > capacity())
+	{
+	  this->_M_deallocate();
+	  _M_initialize(__x.size());
+	}
+      this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
+						begin());
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    vector&
+    operator=(vector&& __x)
+    {
+      // NB: DR 1204.
+      // NB: DR 675.
+      this->clear();
+      this->swap(__x); 
+      return *this;
+    }
+
+    vector&
+    operator=(initializer_list<bool> __l)
+    {
+      this->assign (__l.begin(), __l.end());
+      return *this;
+    }
+#endif
+
+    // assign(), a generalized assignment member function.  Two
+    // versions: one that takes a count, and one that takes a range.
+    // The range version is a member template, so we dispatch on whether
+    // or not the type is an integer.
+    void
+    assign(size_type __n, const bool& __x)
+    { _M_fill_assign(__n, __x); }
+
+    template<typename _InputIterator>
+      void
+      assign(_InputIterator __first, _InputIterator __last)
+      {
+	typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	_M_assign_dispatch(__first, __last, _Integral());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    void
+    assign(initializer_list<bool> __l)
+    { this->assign(__l.begin(), __l.end()); }
+#endif
+
+    iterator
+    begin()
+    { return this->_M_impl._M_start; }
+
+    const_iterator
+    begin() const
+    { return this->_M_impl._M_start; }
+
+    iterator
+    end()
+    { return this->_M_impl._M_finish; }
+
+    const_iterator
+    end() const
+    { return this->_M_impl._M_finish; }
+
+    reverse_iterator
+    rbegin()
+    { return reverse_iterator(end()); }
+
+    const_reverse_iterator
+    rbegin() const
+    { return const_reverse_iterator(end()); }
+
+    reverse_iterator
+    rend()
+    { return reverse_iterator(begin()); }
+
+    const_reverse_iterator
+    rend() const
+    { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    const_iterator
+    cbegin() const
+    { return this->_M_impl._M_start; }
+
+    const_iterator
+    cend() const
+    { return this->_M_impl._M_finish; }
+
+    const_reverse_iterator
+    crbegin() const
+    { return const_reverse_iterator(end()); }
+
+    const_reverse_iterator
+    crend() const
+    { return const_reverse_iterator(begin()); }
+#endif
+
+    size_type
+    size() const
+    { return size_type(end() - begin()); }
+
+    size_type
+    max_size() const
+    {
+      const size_type __isize =
+	__gnu_cxx::__numeric_traits<difference_type>::__max
+	- int(_S_word_bit) + 1;
+      const size_type __asize = _M_get_Bit_allocator().max_size();
+      return (__asize <= __isize / int(_S_word_bit)
+	      ? __asize * int(_S_word_bit) : __isize);
+    }
+
+    size_type
+    capacity() const
+    { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0)
+		       - begin()); }
+
+    bool
+    empty() const
+    { return begin() == end(); }
+
+    reference
+    operator[](size_type __n)
+    {
+      return *iterator(this->_M_impl._M_start._M_p
+		       + __n / int(_S_word_bit), __n % int(_S_word_bit));
+    }
+
+    const_reference
+    operator[](size_type __n) const
+    {
+      return *const_iterator(this->_M_impl._M_start._M_p
+			     + __n / int(_S_word_bit), __n % int(_S_word_bit));
+    }
+
+  protected:
+    void
+    _M_range_check(size_type __n) const
+    {
+      if (__n >= this->size())
+        __throw_out_of_range(__N("vector<bool>::_M_range_check"));
+    }
+
+  public:
+    reference
+    at(size_type __n)
+    { _M_range_check(__n); return (*this)[__n]; }
+
+    const_reference
+    at(size_type __n) const
+    { _M_range_check(__n); return (*this)[__n]; }
+
+    void
+    reserve(size_type __n);
+
+    reference
+    front()
+    { return *begin(); }
+
+    const_reference
+    front() const
+    { return *begin(); }
+
+    reference
+    back()
+    { return *(end() - 1); }
+
+    const_reference
+    back() const
+    { return *(end() - 1); }
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // DR 464. Suggestion for new member functions in standard containers.
+    // N.B. DR 464 says nothing about vector<bool> but we need something
+    // here due to the way we are implementing DR 464 in the debug-mode
+    // vector class.
+    void
+    data() { }
+
+    void
+    push_back(bool __x)
+    {
+      if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+        *this->_M_impl._M_finish++ = __x;
+      else
+        _M_insert_aux(end(), __x);
+    }
+
+    void
+    swap(vector& __x)
+    {
+      std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+      std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+      std::swap(this->_M_impl._M_end_of_storage, 
+		__x._M_impl._M_end_of_storage);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<typename _Base::_Bit_alloc_type>::
+	_S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator());
+    }
+
+    // [23.2.5]/1, third-to-last entry in synopsis listing
+    static void
+    swap(reference __x, reference __y)
+    {
+      bool __tmp = __x;
+      __x = __y;
+      __y = __tmp;
+    }
+
+    iterator
+    insert(iterator __position, const bool& __x = bool())
+    {
+      const difference_type __n = __position - begin();
+      if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage
+	  && __position == end())
+        *this->_M_impl._M_finish++ = __x;
+      else
+        _M_insert_aux(__position, __x);
+      return begin() + __n;
+    }
+
+    template<typename _InputIterator>
+      void
+      insert(iterator __position,
+	     _InputIterator __first, _InputIterator __last)
+      {
+	typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	_M_insert_dispatch(__position, __first, __last, _Integral());
+      }
+
+    void
+    insert(iterator __position, size_type __n, const bool& __x)
+    { _M_fill_insert(__position, __n, __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    void insert(iterator __p, initializer_list<bool> __l)
+    { this->insert(__p, __l.begin(), __l.end()); }
+#endif
+
+    void
+    pop_back()
+    { --this->_M_impl._M_finish; }
+
+    iterator
+    erase(iterator __position)
+    {
+      if (__position + 1 != end())
+        std::copy(__position + 1, end(), __position);
+      --this->_M_impl._M_finish;
+      return __position;
+    }
+
+    iterator
+    erase(iterator __first, iterator __last)
+    {
+      _M_erase_at_end(std::copy(__last, end(), __first));
+      return __first;
+    }
+
+    void
+    resize(size_type __new_size, bool __x = bool())
+    {
+      if (__new_size < size())
+        _M_erase_at_end(begin() + difference_type(__new_size));
+      else
+        insert(end(), __new_size - size(), __x);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    void
+    shrink_to_fit()
+    { std::__shrink_to_fit<vector>::_S_do_it(*this); }
+#endif
+
+    void
+    flip()
+    {
+      for (_Bit_type * __p = this->_M_impl._M_start._M_p;
+	   __p != this->_M_impl._M_end_of_storage; ++__p)
+        *__p = ~*__p;
+    }
+
+    void
+    clear()
+    { _M_erase_at_end(begin()); }
+
+   
+  protected:
+    // Precondition: __first._M_offset == 0 && __result._M_offset == 0.
+    iterator
+    _M_copy_aligned(const_iterator __first, const_iterator __last,
+		    iterator __result)
+    {
+      _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
+      return std::copy(const_iterator(__last._M_p, 0), __last,
+		       iterator(__q, 0));
+    }
+
+    void
+    _M_initialize(size_type __n)
+    {
+      _Bit_type* __q = this->_M_allocate(__n);
+      this->_M_impl._M_end_of_storage = (__q
+					 + ((__n + int(_S_word_bit) - 1)
+					    / int(_S_word_bit)));
+      this->_M_impl._M_start = iterator(__q, 0);
+      this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
+    }
+
+    // Check whether it's an integral type.  If so, it's not an iterator.
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 438. Ambiguity in the "do the right thing" clause
+    template<typename _Integer>
+      void
+      _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+      {
+	_M_initialize(static_cast<size_type>(__n));
+	std::fill(this->_M_impl._M_start._M_p, 
+		  this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+      }
+
+    template<typename _InputIterator>
+      void 
+      _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+			     __false_type)
+      { _M_initialize_range(__first, __last, 
+			    std::__iterator_category(__first)); }
+
+    template<typename _InputIterator>
+      void
+      _M_initialize_range(_InputIterator __first, _InputIterator __last,
+			  std::input_iterator_tag)
+      {
+	for (; __first != __last; ++__first)
+	  push_back(*__first);
+      }
+
+    template<typename _ForwardIterator>
+      void
+      _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
+			  std::forward_iterator_tag)
+      {
+	const size_type __n = std::distance(__first, __last);
+	_M_initialize(__n);
+	std::copy(__first, __last, this->_M_impl._M_start);
+      }
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 438. Ambiguity in the "do the right thing" clause
+    template<typename _Integer>
+      void
+      _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+      { _M_fill_assign(__n, __val); }
+
+    template<class _InputIterator>
+      void
+      _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+			 __false_type)
+      { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
+
+    void
+    _M_fill_assign(size_t __n, bool __x)
+    {
+      if (__n > size())
+	{
+	  std::fill(this->_M_impl._M_start._M_p, 
+		    this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+	  insert(end(), __n - size(), __x);
+	}
+      else
+	{
+	  _M_erase_at_end(begin() + __n);
+	  std::fill(this->_M_impl._M_start._M_p, 
+		    this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+	}
+    }
+
+    template<typename _InputIterator>
+      void
+      _M_assign_aux(_InputIterator __first, _InputIterator __last,
+		    std::input_iterator_tag)
+      {
+	iterator __cur = begin();
+	for (; __first != __last && __cur != end(); ++__cur, ++__first)
+	  *__cur = *__first;
+	if (__first == __last)
+	  _M_erase_at_end(__cur);
+	else
+	  insert(end(), __first, __last);
+      }
+    
+    template<typename _ForwardIterator>
+      void
+      _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+		    std::forward_iterator_tag)
+      {
+	const size_type __len = std::distance(__first, __last);
+	if (__len < size())
+	  _M_erase_at_end(std::copy(__first, __last, begin()));
+	else
+	  {
+	    _ForwardIterator __mid = __first;
+	    std::advance(__mid, size());
+	    std::copy(__first, __mid, begin());
+	    insert(end(), __mid, __last);
+	  }
+      }
+
+    // Check whether it's an integral type.  If so, it's not an iterator.
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 438. Ambiguity in the "do the right thing" clause
+    template<typename _Integer>
+      void
+      _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
+			 __true_type)
+      { _M_fill_insert(__pos, __n, __x); }
+
+    template<typename _InputIterator>
+      void
+      _M_insert_dispatch(iterator __pos,
+			 _InputIterator __first, _InputIterator __last,
+			 __false_type)
+      { _M_insert_range(__pos, __first, __last,
+			std::__iterator_category(__first)); }
+
+    void
+    _M_fill_insert(iterator __position, size_type __n, bool __x);
+
+    template<typename _InputIterator>
+      void
+      _M_insert_range(iterator __pos, _InputIterator __first, 
+		      _InputIterator __last, std::input_iterator_tag)
+      {
+	for (; __first != __last; ++__first)
+	  {
+	    __pos = insert(__pos, *__first);
+	    ++__pos;
+	  }
+      }
+
+    template<typename _ForwardIterator>
+      void
+      _M_insert_range(iterator __position, _ForwardIterator __first, 
+		      _ForwardIterator __last, std::forward_iterator_tag);
+
+    void
+    _M_insert_aux(iterator __position, bool __x);
+
+    size_type
+    _M_check_len(size_type __n, const char* __s) const
+    {
+      if (max_size() - size() < __n)
+	__throw_length_error(__N(__s));
+
+      const size_type __len = size() + std::max(size(), __n);
+      return (__len < size() || __len > max_size()) ? max_size() : __len;
+    }
+
+    void
+    _M_erase_at_end(iterator __pos)
+    { this->_M_impl._M_finish = __pos; }
+  };
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // DR 1182.
+  /// std::hash specialization for vector<bool>.
+  template<typename _Alloc>
+    struct hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>
+    : public __hash_base<size_t, _GLIBCXX_STD_C::vector<bool, _Alloc>>
+    {
+      size_t
+      operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>& __b) const;
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}// namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_construct.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_construct.h
new file mode 100644
index 000000000..2efba9378
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_construct.h
@@ -0,0 +1,160 @@
+// nonstandard construct and destroy functions -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_construct.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _STL_CONSTRUCT_H
+#define _STL_CONSTRUCT_H 1
+
+#include <new>
+#include <bits/move.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * Constructs an object in existing memory by invoking an allocated
+   * object's constructor with an initializer.
+   */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _T1, typename... _Args>
+    inline void
+    _Construct(_T1* __p, _Args&&... __args)
+    { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
+#else
+  template<typename _T1, typename _T2>
+    inline void
+    _Construct(_T1* __p, const _T2& __value)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_]allocator::construct
+      ::new(static_cast<void*>(__p)) _T1(__value);
+    }
+#endif
+
+  /**
+   * Destroy the object pointed to by a pointer type.
+   */
+  template<typename _Tp>
+    inline void
+    _Destroy(_Tp* __pointer)
+    { __pointer->~_Tp(); }
+
+  template<bool>
+    struct _Destroy_aux
+    {
+      template<typename _ForwardIterator>
+        static void
+        __destroy(_ForwardIterator __first, _ForwardIterator __last)
+	{
+	  for (; __first != __last; ++__first)
+	    std::_Destroy(std::__addressof(*__first));
+	}
+    };
+
+  template<>
+    struct _Destroy_aux<true>
+    {
+      template<typename _ForwardIterator>
+        static void
+        __destroy(_ForwardIterator, _ForwardIterator) { }
+    };
+
+  /**
+   * Destroy a range of objects.  If the value_type of the object has
+   * a trivial destructor, the compiler should optimize all of this
+   * away, otherwise the objects' destructors must be invoked.
+   */
+  template<typename _ForwardIterator>
+    inline void
+    _Destroy(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+                       _Value_type;
+      std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
+	__destroy(__first, __last);
+    }
+
+  /**
+   * Destroy a range of objects using the supplied allocator.  For
+   * nondefault allocators we do not optimize away invocation of 
+   * destroy() even if _Tp has a trivial destructor.
+   */
+
+  template <typename _Tp> class allocator;
+
+  template<typename _ForwardIterator, typename _Allocator>
+    void
+    _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+	     _Allocator& __alloc)
+    {
+      for (; __first != __last; ++__first)
+	__alloc.destroy(std::__addressof(*__first));
+    }
+
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+	     allocator<_Tp>&)
+    {
+      _Destroy(__first, __last);
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_CONSTRUCT_H */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_deque.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_deque.h
new file mode 100644
index 000000000..0d9b5b44c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_deque.h
@@ -0,0 +1,1979 @@
+// Deque implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_deque.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{deque}
+ */
+
+#ifndef _STL_DEQUE_H
+#define _STL_DEQUE_H 1
+
+#include <bits/concept_check.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief This function controls the size of memory nodes.
+   *  @param  size  The size of an element.
+   *  @return   The number (not byte size) of elements per node.
+   *
+   *  This function started off as a compiler kludge from SGI, but
+   *  seems to be a useful wrapper around a repeated constant
+   *  expression.  The @b 512 is tunable (and no other code needs to
+   *  change), but no investigation has been done since inheriting the
+   *  SGI code.  Touch _GLIBCXX_DEQUE_BUF_SIZE only if you know what
+   *  you are doing, however: changing it breaks the binary
+   *  compatibility!!
+  */
+
+#ifndef _GLIBCXX_DEQUE_BUF_SIZE
+#define _GLIBCXX_DEQUE_BUF_SIZE 512
+#endif
+
+  inline size_t
+  __deque_buf_size(size_t __size)
+  { return (__size < _GLIBCXX_DEQUE_BUF_SIZE
+	    ? size_t(_GLIBCXX_DEQUE_BUF_SIZE / __size) : size_t(1)); }
+
+
+  /**
+   *  @brief A deque::iterator.
+   *
+   *  Quite a bit of intelligence here.  Much of the functionality of
+   *  deque is actually passed off to this class.  A deque holds two
+   *  of these internally, marking its valid range.  Access to
+   *  elements is done as offsets of either of those two, relying on
+   *  operator overloading in this class.
+   *
+   *  All the functions are op overloads except for _M_set_node.
+  */
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    struct _Deque_iterator
+    {
+      typedef _Deque_iterator<_Tp, _Tp&, _Tp*>             iterator;
+      typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
+
+      static size_t _S_buffer_size()
+      { return __deque_buf_size(sizeof(_Tp)); }
+
+      typedef std::random_access_iterator_tag iterator_category;
+      typedef _Tp                             value_type;
+      typedef _Ptr                            pointer;
+      typedef _Ref                            reference;
+      typedef size_t                          size_type;
+      typedef ptrdiff_t                       difference_type;
+      typedef _Tp**                           _Map_pointer;
+      typedef _Deque_iterator                 _Self;
+
+      _Tp* _M_cur;
+      _Tp* _M_first;
+      _Tp* _M_last;
+      _Map_pointer _M_node;
+
+      _Deque_iterator(_Tp* __x, _Map_pointer __y)
+      : _M_cur(__x), _M_first(*__y),
+        _M_last(*__y + _S_buffer_size()), _M_node(__y) { }
+
+      _Deque_iterator()
+      : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) { }
+
+      _Deque_iterator(const iterator& __x)
+      : _M_cur(__x._M_cur), _M_first(__x._M_first),
+        _M_last(__x._M_last), _M_node(__x._M_node) { }
+
+      reference
+      operator*() const
+      { return *_M_cur; }
+
+      pointer
+      operator->() const
+      { return _M_cur; }
+
+      _Self&
+      operator++()
+      {
+	++_M_cur;
+	if (_M_cur == _M_last)
+	  {
+	    _M_set_node(_M_node + 1);
+	    _M_cur = _M_first;
+	  }
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	++*this;
+	return __tmp;
+      }
+
+      _Self&
+      operator--()
+      {
+	if (_M_cur == _M_first)
+	  {
+	    _M_set_node(_M_node - 1);
+	    _M_cur = _M_last;
+	  }
+	--_M_cur;
+	return *this;
+      }
+
+      _Self
+      operator--(int)
+      {
+	_Self __tmp = *this;
+	--*this;
+	return __tmp;
+      }
+
+      _Self&
+      operator+=(difference_type __n)
+      {
+	const difference_type __offset = __n + (_M_cur - _M_first);
+	if (__offset >= 0 && __offset < difference_type(_S_buffer_size()))
+	  _M_cur += __n;
+	else
+	  {
+	    const difference_type __node_offset =
+	      __offset > 0 ? __offset / difference_type(_S_buffer_size())
+	                   : -difference_type((-__offset - 1)
+					      / _S_buffer_size()) - 1;
+	    _M_set_node(_M_node + __node_offset);
+	    _M_cur = _M_first + (__offset - __node_offset
+				 * difference_type(_S_buffer_size()));
+	  }
+	return *this;
+      }
+
+      _Self
+      operator+(difference_type __n) const
+      {
+	_Self __tmp = *this;
+	return __tmp += __n;
+      }
+
+      _Self&
+      operator-=(difference_type __n)
+      { return *this += -__n; }
+
+      _Self
+      operator-(difference_type __n) const
+      {
+	_Self __tmp = *this;
+	return __tmp -= __n;
+      }
+
+      reference
+      operator[](difference_type __n) const
+      { return *(*this + __n); }
+
+      /** 
+       *  Prepares to traverse new_node.  Sets everything except
+       *  _M_cur, which should therefore be set by the caller
+       *  immediately afterwards, based on _M_first and _M_last.
+       */
+      void
+      _M_set_node(_Map_pointer __new_node)
+      {
+	_M_node = __new_node;
+	_M_first = *__new_node;
+	_M_last = _M_first + difference_type(_S_buffer_size());
+      }
+    };
+
+  // Note: we also provide overloads whose operands are of the same type in
+  // order to avoid ambiguous overload resolution when std::rel_ops operators
+  // are in scope (for additional details, see libstdc++/3628)
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	       const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return __x._M_cur == __y._M_cur; }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	       const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return __x._M_cur == __y._M_cur; }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	       const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return !(__x == __y); }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	       const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return !(__x == __y); }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	      const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur)
+                                          : (__x._M_node < __y._M_node); }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	      const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur)
+	                                  : (__x._M_node < __y._M_node); }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	      const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return __y < __x; }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	      const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return __y < __x; }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	       const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return !(__y < __x); }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	       const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return !(__y < __x); }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline bool
+    operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	       const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    { return !(__x < __y); }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline bool
+    operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	       const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    { return !(__x < __y); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // According to the resolution of DR179 not only the various comparison
+  // operators but also operator- must accept mixed iterator/const_iterator
+  // parameters.
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type
+    operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+	      const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+    {
+      return typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type
+	(_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size())
+	* (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
+	+ (__y._M_last - __y._M_cur);
+    }
+
+  template<typename _Tp, typename _RefL, typename _PtrL,
+	   typename _RefR, typename _PtrR>
+    inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
+    operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+	      const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+    {
+      return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
+	(_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size())
+	* (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
+	+ (__y._M_last - __y._M_cur);
+    }
+
+  template<typename _Tp, typename _Ref, typename _Ptr>
+    inline _Deque_iterator<_Tp, _Ref, _Ptr>
+    operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x)
+    { return __x + __n; }
+
+  template<typename _Tp>
+    void
+    fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>&,
+	 const _Deque_iterator<_Tp, _Tp&, _Tp*>&, const _Tp&);
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+	 _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*>);
+
+  template<typename _Tp>
+    inline _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    { return std::copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first),
+		       _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last),
+		       __result); }
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+		  _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*>);
+
+  template<typename _Tp>
+    inline _Deque_iterator<_Tp, _Tp&, _Tp*>
+    copy_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    { return std::copy_backward(_Deque_iterator<_Tp,
+				const _Tp&, const _Tp*>(__first),
+				_Deque_iterator<_Tp,
+				const _Tp&, const _Tp*>(__last),
+				__result); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+	 _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*>);
+
+  template<typename _Tp>
+    inline _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
+	 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    { return std::move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first),
+		       _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last),
+		       __result); }
+
+  template<typename _Tp>
+    _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+		  _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*>);
+
+  template<typename _Tp>
+    inline _Deque_iterator<_Tp, _Tp&, _Tp*>
+    move_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
+		  _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
+    { return std::move_backward(_Deque_iterator<_Tp,
+				const _Tp&, const _Tp*>(__first),
+				_Deque_iterator<_Tp,
+				const _Tp&, const _Tp*>(__last),
+				__result); }
+#endif
+
+  /**
+   *  Deque base class.  This class provides the unified face for %deque's
+   *  allocation.  This class's constructor and destructor allocate and
+   *  deallocate (but do not initialize) storage.  This makes %exception
+   *  safety easier.
+   *
+   *  Nothing in this class ever constructs or destroys an actual Tp element.
+   *  (Deque handles that itself.)  Only/All memory management is performed
+   *  here.
+  */
+  template<typename _Tp, typename _Alloc>
+    class _Deque_base
+    {
+    public:
+      typedef _Alloc                  allocator_type;
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_get_Tp_allocator()); }
+
+      typedef _Deque_iterator<_Tp, _Tp&, _Tp*>             iterator;
+      typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
+
+      _Deque_base()
+      : _M_impl()
+      { _M_initialize_map(0); }
+
+      _Deque_base(size_t __num_elements)
+      : _M_impl()
+      { _M_initialize_map(__num_elements); }
+
+      _Deque_base(const allocator_type& __a, size_t __num_elements)
+      : _M_impl(__a)
+      { _M_initialize_map(__num_elements); }
+
+      _Deque_base(const allocator_type& __a)
+      : _M_impl(__a)
+      { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _Deque_base(_Deque_base&& __x)
+      : _M_impl(__x._M_get_Tp_allocator())
+      {
+	_M_initialize_map(0);
+	if (__x._M_impl._M_map)
+	  {
+	    std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+	    std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+	    std::swap(this->_M_impl._M_map, __x._M_impl._M_map);
+	    std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size);
+	  }
+      }
+#endif
+
+      ~_Deque_base();
+
+    protected:
+      //This struct encapsulates the implementation of the std::deque
+      //standard container and at the same time makes use of the EBO
+      //for empty allocators.
+      typedef typename _Alloc::template rebind<_Tp*>::other _Map_alloc_type;
+
+      typedef typename _Alloc::template rebind<_Tp>::other  _Tp_alloc_type;
+
+      struct _Deque_impl
+      : public _Tp_alloc_type
+      {
+	_Tp** _M_map;
+	size_t _M_map_size;
+	iterator _M_start;
+	iterator _M_finish;
+
+	_Deque_impl()
+	: _Tp_alloc_type(), _M_map(0), _M_map_size(0),
+	  _M_start(), _M_finish()
+	{ }
+
+	_Deque_impl(const _Tp_alloc_type& __a)
+	: _Tp_alloc_type(__a), _M_map(0), _M_map_size(0),
+	  _M_start(), _M_finish()
+	{ }
+      };
+
+      _Tp_alloc_type&
+      _M_get_Tp_allocator()
+      { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
+
+      const _Tp_alloc_type&
+      _M_get_Tp_allocator() const
+      { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
+
+      _Map_alloc_type
+      _M_get_map_allocator() const
+      { return _Map_alloc_type(_M_get_Tp_allocator()); }
+
+      _Tp*
+      _M_allocate_node()
+      { 
+	return _M_impl._Tp_alloc_type::allocate(__deque_buf_size(sizeof(_Tp)));
+      }
+
+      void
+      _M_deallocate_node(_Tp* __p)
+      {
+	_M_impl._Tp_alloc_type::deallocate(__p, __deque_buf_size(sizeof(_Tp)));
+      }
+
+      _Tp**
+      _M_allocate_map(size_t __n)
+      { return _M_get_map_allocator().allocate(__n); }
+
+      void
+      _M_deallocate_map(_Tp** __p, size_t __n)
+      { _M_get_map_allocator().deallocate(__p, __n); }
+
+    protected:
+      void _M_initialize_map(size_t);
+      void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish);
+      void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish);
+      enum { _S_initial_map_size = 8 };
+
+      _Deque_impl _M_impl;
+    };
+
+  template<typename _Tp, typename _Alloc>
+    _Deque_base<_Tp, _Alloc>::
+    ~_Deque_base()
+    {
+      if (this->_M_impl._M_map)
+	{
+	  _M_destroy_nodes(this->_M_impl._M_start._M_node,
+			   this->_M_impl._M_finish._M_node + 1);
+	  _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
+	}
+    }
+
+  /**
+   *  @brief Layout storage.
+   *  @param  num_elements  The count of T's for which to allocate space
+   *                        at first.
+   *  @return   Nothing.
+   *
+   *  The initial underlying memory layout is a bit complicated...
+  */
+  template<typename _Tp, typename _Alloc>
+    void
+    _Deque_base<_Tp, _Alloc>::
+    _M_initialize_map(size_t __num_elements)
+    {
+      const size_t __num_nodes = (__num_elements/ __deque_buf_size(sizeof(_Tp))
+				  + 1);
+
+      this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size,
+					   size_t(__num_nodes + 2));
+      this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size);
+
+      // For "small" maps (needing less than _M_map_size nodes), allocation
+      // starts in the middle elements and grows outwards.  So nstart may be
+      // the beginning of _M_map, but for small maps it may be as far in as
+      // _M_map+3.
+
+      _Tp** __nstart = (this->_M_impl._M_map
+			+ (this->_M_impl._M_map_size - __num_nodes) / 2);
+      _Tp** __nfinish = __nstart + __num_nodes;
+
+      __try
+	{ _M_create_nodes(__nstart, __nfinish); }
+      __catch(...)
+	{
+	  _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
+	  this->_M_impl._M_map = 0;
+	  this->_M_impl._M_map_size = 0;
+	  __throw_exception_again;
+	}
+
+      this->_M_impl._M_start._M_set_node(__nstart);
+      this->_M_impl._M_finish._M_set_node(__nfinish - 1);
+      this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first;
+      this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first
+					+ __num_elements
+					% __deque_buf_size(sizeof(_Tp)));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    _Deque_base<_Tp, _Alloc>::
+    _M_create_nodes(_Tp** __nstart, _Tp** __nfinish)
+    {
+      _Tp** __cur;
+      __try
+	{
+	  for (__cur = __nstart; __cur < __nfinish; ++__cur)
+	    *__cur = this->_M_allocate_node();
+	}
+      __catch(...)
+	{
+	  _M_destroy_nodes(__nstart, __cur);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    _Deque_base<_Tp, _Alloc>::
+    _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
+    {
+      for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
+	_M_deallocate_node(*__n);
+    }
+
+  /**
+   *  @brief  A standard container using fixed-size memory allocation and
+   *  constant-time manipulation of elements at either end.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>, including the
+   *  <a href="tables.html#68">optional sequence requirements</a>.
+   *
+   *  In previous HP/SGI versions of deque, there was an extra template
+   *  parameter so users could control the node size.  This extension turned
+   *  out to violate the C++ standard (it can be detected using template
+   *  template parameters), and it was removed.
+   *
+   *  Here's how a deque<Tp> manages memory.  Each deque has 4 members:
+   *
+   *  - Tp**        _M_map
+   *  - size_t      _M_map_size
+   *  - iterator    _M_start, _M_finish
+   *
+   *  map_size is at least 8.  %map is an array of map_size
+   *  pointers-to-@anodes.  (The name %map has nothing to do with the
+   *  std::map class, and @b nodes should not be confused with
+   *  std::list's usage of @a node.)
+   *
+   *  A @a node has no specific type name as such, but it is referred
+   *  to as @a node in this file.  It is a simple array-of-Tp.  If Tp
+   *  is very large, there will be one Tp element per node (i.e., an
+   *  @a array of one).  For non-huge Tp's, node size is inversely
+   *  related to Tp size: the larger the Tp, the fewer Tp's will fit
+   *  in a node.  The goal here is to keep the total size of a node
+   *  relatively small and constant over different Tp's, to improve
+   *  allocator efficiency.
+   *
+   *  Not every pointer in the %map array will point to a node.  If
+   *  the initial number of elements in the deque is small, the
+   *  /middle/ %map pointers will be valid, and the ones at the edges
+   *  will be unused.  This same situation will arise as the %map
+   *  grows: available %map pointers, if any, will be on the ends.  As
+   *  new nodes are created, only a subset of the %map's pointers need
+   *  to be copied @a outward.
+   *
+   *  Class invariants:
+   * - For any nonsingular iterator i:
+   *    - i.node points to a member of the %map array.  (Yes, you read that
+   *      correctly:  i.node does not actually point to a node.)  The member of
+   *      the %map array is what actually points to the node.
+   *    - i.first == *(i.node)    (This points to the node (first Tp element).)
+   *    - i.last  == i.first + node_size
+   *    - i.cur is a pointer in the range [i.first, i.last).  NOTE:
+   *      the implication of this is that i.cur is always a dereferenceable
+   *      pointer, even if i is a past-the-end iterator.
+   * - Start and Finish are always nonsingular iterators.  NOTE: this
+   * means that an empty deque must have one node, a deque with <N
+   * elements (where N is the node buffer size) must have one node, a
+   * deque with N through (2N-1) elements must have two nodes, etc.
+   * - For every node other than start.node and finish.node, every
+   * element in the node is an initialized object.  If start.node ==
+   * finish.node, then [start.cur, finish.cur) are initialized
+   * objects, and the elements outside that range are uninitialized
+   * storage.  Otherwise, [start.cur, start.last) and [finish.first,
+   * finish.cur) are initialized objects, and [start.first, start.cur)
+   * and [finish.cur, finish.last) are uninitialized storage.
+   * - [%map, %map + map_size) is a valid, non-empty range.
+   * - [start.node, finish.node] is a valid range contained within
+   *   [%map, %map + map_size).
+   * - A pointer in the range [%map, %map + map_size) points to an allocated
+   *   node if and only if the pointer is in the range
+   *   [start.node, finish.node].
+   *
+   *  Here's the magic:  nothing in deque is @b aware of the discontiguous
+   *  storage!
+   *
+   *  The memory setup and layout occurs in the parent, _Base, and the iterator
+   *  class is entirely responsible for @a leaping from one node to the next.
+   *  All the implementation routines for deque itself work only through the
+   *  start and finish iterators.  This keeps the routines simple and sane,
+   *  and we can use other standard algorithms as well.
+  */
+  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+    class deque : protected _Deque_base<_Tp, _Alloc>
+    {
+      // concept requirements
+      typedef typename _Alloc::value_type        _Alloc_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
+
+      typedef _Deque_base<_Tp, _Alloc>           _Base;
+      typedef typename _Base::_Tp_alloc_type	 _Tp_alloc_type;
+
+    public:
+      typedef _Tp                                        value_type;
+      typedef typename _Tp_alloc_type::pointer           pointer;
+      typedef typename _Tp_alloc_type::const_pointer     const_pointer;
+      typedef typename _Tp_alloc_type::reference         reference;
+      typedef typename _Tp_alloc_type::const_reference   const_reference;
+      typedef typename _Base::iterator                   iterator;
+      typedef typename _Base::const_iterator             const_iterator;
+      typedef std::reverse_iterator<const_iterator>      const_reverse_iterator;
+      typedef std::reverse_iterator<iterator>            reverse_iterator;
+      typedef size_t                             size_type;
+      typedef ptrdiff_t                          difference_type;
+      typedef _Alloc                             allocator_type;
+
+    protected:
+      typedef pointer*                           _Map_pointer;
+
+      static size_t _S_buffer_size()
+      { return __deque_buf_size(sizeof(_Tp)); }
+
+      // Functions controlling memory layout, and nothing else.
+      using _Base::_M_initialize_map;
+      using _Base::_M_create_nodes;
+      using _Base::_M_destroy_nodes;
+      using _Base::_M_allocate_node;
+      using _Base::_M_deallocate_node;
+      using _Base::_M_allocate_map;
+      using _Base::_M_deallocate_map;
+      using _Base::_M_get_Tp_allocator;
+
+      /** 
+       *  A total of four data members accumulated down the hierarchy.
+       *  May be accessed via _M_impl.*
+       */
+      using _Base::_M_impl;
+
+    public:
+      // [23.2.1.1] construct/copy/destroy
+      // (assign() and get_allocator() are also listed in this section)
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      deque()
+      : _Base() { }
+
+      /**
+       *  @brief  Creates a %deque with no elements.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      deque(const allocator_type& __a)
+      : _Base(__a, 0) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Creates a %deque with default constructed elements.
+       *  @param  n  The number of elements to initially create.
+       *
+       *  This constructor fills the %deque with @a n default
+       *  constructed elements.
+       */
+      explicit
+      deque(size_type __n)
+      : _Base(__n)
+      { _M_default_initialize(); }
+
+      /**
+       *  @brief  Creates a %deque with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator.
+       *
+       *  This constructor fills the %deque with @a n copies of @a value.
+       */
+      deque(size_type __n, const value_type& __value,
+	    const allocator_type& __a = allocator_type())
+      : _Base(__a, __n)
+      { _M_fill_initialize(__value); }
+#else
+      /**
+       *  @brief  Creates a %deque with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator.
+       *
+       *  This constructor fills the %deque with @a n copies of @a value.
+       */
+      explicit
+      deque(size_type __n, const value_type& __value = value_type(),
+	    const allocator_type& __a = allocator_type())
+      : _Base(__a, __n)
+      { _M_fill_initialize(__value); }
+#endif
+
+      /**
+       *  @brief  %Deque copy constructor.
+       *  @param  x  A %deque of identical element and allocator types.
+       *
+       *  The newly-created %deque uses a copy of the allocation object used
+       *  by @a x.
+       */
+      deque(const deque& __x)
+      : _Base(__x._M_get_Tp_allocator(), __x.size())
+      { std::__uninitialized_copy_a(__x.begin(), __x.end(), 
+				    this->_M_impl._M_start,
+				    _M_get_Tp_allocator()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Deque move constructor.
+       *  @param  x  A %deque of identical element and allocator types.
+       *
+       *  The newly-created %deque contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %deque.
+       */
+      deque(deque&& __x)
+      : _Base(std::move(__x)) { }
+
+      /**
+       *  @brief  Builds a %deque from an initializer list.
+       *  @param  l  An initializer_list.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %deque consisting of copies of the elements in the
+       *  initializer_list @a l.
+       *
+       *  This will call the element type's copy constructor N times
+       *  (where N is l.size()) and do no memory reallocation.
+       */
+      deque(initializer_list<value_type> __l,
+	    const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	_M_range_initialize(__l.begin(), __l.end(),
+			    random_access_iterator_tag());
+      }
+#endif
+
+      /**
+       *  @brief  Builds a %deque from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %deque consisting of copies of the elements from [first,
+       *  last).
+       *
+       *  If the iterators are forward, bidirectional, or random-access, then
+       *  this will call the elements' copy constructor N times (where N is
+       *  distance(first,last)) and do no memory reallocation.  But if only
+       *  input iterators are used, then this will do at most 2N calls to the
+       *  copy constructor, and logN memory reallocations.
+       */
+      template<typename _InputIterator>
+        deque(_InputIterator __first, _InputIterator __last,
+	      const allocator_type& __a = allocator_type())
+	: _Base(__a)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_initialize_dispatch(__first, __last, _Integral());
+	}
+
+      /**
+       *  The dtor only erases the elements, and note that if the elements
+       *  themselves are pointers, the pointed-to memory is not touched in any
+       *  way.  Managing the pointer is the user's responsibility.
+       */
+      ~deque()
+      { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); }
+
+      /**
+       *  @brief  %Deque assignment operator.
+       *  @param  x  A %deque of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy constructor,
+       *  the allocator object is not copied.
+       */
+      deque&
+      operator=(const deque& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Deque move assignment operator.
+       *  @param  x  A %deque of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this deque (without copying).
+       *  @a x is a valid, but unspecified %deque.
+       */
+      deque&
+      operator=(deque&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  Assigns an initializer list to a %deque.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %deque with copies of the elements in the
+       *  initializer_list @a l.
+       *
+       *  Note that the assignment completely changes the %deque and that the
+       *  resulting %deque's size is the same as the number of elements
+       *  assigned.  Old data may be lost.
+       */
+      deque&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->assign(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /**
+       *  @brief  Assigns a given value to a %deque.
+       *  @param  n  Number of elements to be assigned.
+       *  @param  val  Value to be assigned.
+       *
+       *  This function fills a %deque with @a n copies of the given
+       *  value.  Note that the assignment completely changes the
+       *  %deque and that the resulting %deque's size is the same as
+       *  the number of elements assigned.  Old data may be lost.
+       */
+      void
+      assign(size_type __n, const value_type& __val)
+      { _M_fill_assign(__n, __val); }
+
+      /**
+       *  @brief  Assigns a range to a %deque.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function fills a %deque with copies of the elements in the
+       *  range [first,last).
+       *
+       *  Note that the assignment completely changes the %deque and that the
+       *  resulting %deque's size is the same as the number of elements
+       *  assigned.  Old data may be lost.
+       */
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_assign_dispatch(__first, __last, _Integral());
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Assigns an initializer list to a %deque.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %deque with copies of the elements in the
+       *  initializer_list @a l.
+       *
+       *  Note that the assignment completely changes the %deque and that the
+       *  resulting %deque's size is the same as the number of elements
+       *  assigned.  Old data may be lost.
+       */
+      void
+      assign(initializer_list<value_type> __l)
+      { this->assign(__l.begin(), __l.end()); }
+#endif
+
+      /// Get a copy of the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return _Base::get_allocator(); }
+
+      // iterators
+      /**
+       *  Returns a read/write iterator that points to the first element in the
+       *  %deque.  Iteration is done in ordinary element order.
+       */
+      iterator
+      begin()
+      { return this->_M_impl._M_start; }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %deque.  Iteration is done in ordinary element order.
+       */
+      const_iterator
+      begin() const
+      { return this->_M_impl._M_start; }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  element in the %deque.  Iteration is done in ordinary
+       *  element order.
+       */
+      iterator
+      end()
+      { return this->_M_impl._M_finish; }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %deque.  Iteration is done in
+       *  ordinary element order.
+       */
+      const_iterator
+      end() const
+      { return this->_M_impl._M_finish; }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the
+       *  last element in the %deque.  Iteration is done in reverse
+       *  element order.
+       */
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last element in the %deque.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one
+       *  before the first element in the %deque.  Iteration is done
+       *  in reverse element order.
+       */
+      reverse_iterator
+      rend()
+      { return reverse_iterator(this->_M_impl._M_start); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first element in the %deque.  Iteration is
+       *  done in reverse element order.
+       */
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(this->_M_impl._M_start); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %deque.  Iteration is done in ordinary element order.
+       */
+      const_iterator
+      cbegin() const
+      { return this->_M_impl._M_start; }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %deque.  Iteration is done in
+       *  ordinary element order.
+       */
+      const_iterator
+      cend() const
+      { return this->_M_impl._M_finish; }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last element in the %deque.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first element in the %deque.  Iteration is
+       *  done in reverse element order.
+       */
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(this->_M_impl._M_start); }
+#endif
+
+      // [23.2.1.2] capacity
+      /**  Returns the number of elements in the %deque.  */
+      size_type
+      size() const
+      { return this->_M_impl._M_finish - this->_M_impl._M_start; }
+
+      /**  Returns the size() of the largest possible %deque.  */
+      size_type
+      max_size() const
+      { return _M_get_Tp_allocator().max_size(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Resizes the %deque to the specified number of elements.
+       *  @param  new_size  Number of elements the %deque should contain.
+       *
+       *  This function will %resize the %deque to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %deque's current size the %deque is truncated, otherwise
+       *  default constructed elements are appended.
+       */
+      void
+      resize(size_type __new_size)
+      {
+	const size_type __len = size();
+	if (__new_size > __len)
+	  _M_default_append(__new_size - __len);
+	else if (__new_size < __len)
+	  _M_erase_at_end(this->_M_impl._M_start
+			  + difference_type(__new_size));
+      }
+
+      /**
+       *  @brief  Resizes the %deque to the specified number of elements.
+       *  @param  new_size  Number of elements the %deque should contain.
+       *  @param  x  Data with which new elements should be populated.
+       *
+       *  This function will %resize the %deque to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %deque's current size the %deque is truncated, otherwise the
+       *  %deque is extended and new elements are populated with given
+       *  data.
+       */
+      void
+      resize(size_type __new_size, const value_type& __x)
+      {
+	const size_type __len = size();
+	if (__new_size > __len)
+	  insert(this->_M_impl._M_finish, __new_size - __len, __x);
+	else if (__new_size < __len)
+	  _M_erase_at_end(this->_M_impl._M_start
+			  + difference_type(__new_size));
+      }
+#else
+      /**
+       *  @brief  Resizes the %deque to the specified number of elements.
+       *  @param  new_size  Number of elements the %deque should contain.
+       *  @param  x  Data with which new elements should be populated.
+       *
+       *  This function will %resize the %deque to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %deque's current size the %deque is truncated, otherwise the
+       *  %deque is extended and new elements are populated with given
+       *  data.
+       */
+      void
+      resize(size_type __new_size, value_type __x = value_type())
+      {
+	const size_type __len = size();
+	if (__new_size > __len)
+	  insert(this->_M_impl._M_finish, __new_size - __len, __x);
+	else if (__new_size < __len)
+	  _M_erase_at_end(this->_M_impl._M_start
+			  + difference_type(__new_size));
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**  A non-binding request to reduce memory use.  */
+      void
+      shrink_to_fit()
+      { std::__shrink_to_fit<deque>::_S_do_it(*this); }
+#endif
+
+      /**
+       *  Returns true if the %deque is empty.  (Thus begin() would
+       *  equal end().)
+       */
+      bool
+      empty() const
+      { return this->_M_impl._M_finish == this->_M_impl._M_start; }
+
+      // element access
+      /**
+       *  @brief Subscript access to the data contained in the %deque.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read/write reference to data.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      reference
+      operator[](size_type __n)
+      { return this->_M_impl._M_start[difference_type(__n)]; }
+
+      /**
+       *  @brief Subscript access to the data contained in the %deque.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read-only (constant) reference to data.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      const_reference
+      operator[](size_type __n) const
+      { return this->_M_impl._M_start[difference_type(__n)]; }
+
+    protected:
+      /// Safety check used only from at().
+      void
+      _M_range_check(size_type __n) const
+      {
+	if (__n >= this->size())
+	  __throw_out_of_range(__N("deque::_M_range_check"));
+      }
+
+    public:
+      /**
+       *  @brief  Provides access to the data contained in the %deque.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read/write reference to data.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter
+       *  is first checked that it is in the range of the deque.  The
+       *  function throws out_of_range if the check fails.
+       */
+      reference
+      at(size_type __n)
+      {
+	_M_range_check(__n);
+	return (*this)[__n];
+      }
+
+      /**
+       *  @brief  Provides access to the data contained in the %deque.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read-only (constant) reference to data.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter is first
+       *  checked that it is in the range of the deque.  The function throws
+       *  out_of_range if the check fails.
+       */
+      const_reference
+      at(size_type __n) const
+      {
+	_M_range_check(__n);
+	return (*this)[__n];
+      }
+
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %deque.
+       */
+      reference
+      front()
+      { return *begin(); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %deque.
+       */
+      const_reference
+      front() const
+      { return *begin(); }
+
+      /**
+       *  Returns a read/write reference to the data at the last element of the
+       *  %deque.
+       */
+      reference
+      back()
+      {
+	iterator __tmp = end();
+	--__tmp;
+	return *__tmp;
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the last
+       *  element of the %deque.
+       */
+      const_reference
+      back() const
+      {
+	const_iterator __tmp = end();
+	--__tmp;
+	return *__tmp;
+      }
+
+      // [23.2.1.2] modifiers
+      /**
+       *  @brief  Add data to the front of the %deque.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the front of the %deque and assigns the given
+       *  data to it.  Due to the nature of a %deque this operation
+       *  can be done in constant time.
+       */
+      void
+      push_front(const value_type& __x)
+      {
+	if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, __x);
+	    --this->_M_impl._M_start._M_cur;
+	  }
+	else
+	  _M_push_front_aux(__x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_front(value_type&& __x)
+      { emplace_front(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_front(_Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Add data to the end of the %deque.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the end of the %deque and assigns the given data
+       *  to it.  Due to the nature of a %deque this operation can be
+       *  done in constant time.
+       */
+      void
+      push_back(const value_type& __x)
+      {
+	if (this->_M_impl._M_finish._M_cur
+	    != this->_M_impl._M_finish._M_last - 1)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __x);
+	    ++this->_M_impl._M_finish._M_cur;
+	  }
+	else
+	  _M_push_back_aux(__x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_back(value_type&& __x)
+      { emplace_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical stack operation.  It shrinks the %deque by one.
+       *
+       *  Note that no data is returned, and if the first element's data is
+       *  needed, it should be retrieved before pop_front() is called.
+       */
+      void
+      pop_front()
+      {
+	if (this->_M_impl._M_start._M_cur
+	    != this->_M_impl._M_start._M_last - 1)
+	  {
+	    this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
+	    ++this->_M_impl._M_start._M_cur;
+	  }
+	else
+	  _M_pop_front_aux();
+      }
+
+      /**
+       *  @brief  Removes last element.
+       *
+       *  This is a typical stack operation.  It shrinks the %deque by one.
+       *
+       *  Note that no data is returned, and if the last element's data is
+       *  needed, it should be retrieved before pop_back() is called.
+       */
+      void
+      pop_back()
+      {
+	if (this->_M_impl._M_finish._M_cur
+	    != this->_M_impl._M_finish._M_first)
+	  {
+	    --this->_M_impl._M_finish._M_cur;
+	    this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
+	  }
+	else
+	  _M_pop_back_aux();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Inserts an object in %deque before specified iterator.
+       *  @param  position  An iterator into the %deque.
+       *  @param  args  Arguments.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert an object of type T constructed
+       *  with T(std::forward<Args>(args)...) before the specified location.
+       */
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Inserts given value into %deque before specified iterator.
+       *  @param  position  An iterator into the %deque.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given value before the
+       *  specified location.
+       */
+      iterator
+      insert(iterator __position, const value_type& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Inserts given rvalue into %deque before specified iterator.
+       *  @param  position  An iterator into the %deque.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given rvalue before the
+       *  specified location.
+       */
+      iterator
+      insert(iterator __position, value_type&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      /**
+       *  @brief  Inserts an initializer list into the %deque.
+       *  @param  p  An iterator into the %deque.
+       *  @param  l  An initializer_list.
+       *
+       *  This function will insert copies of the data in the
+       *  initializer_list @a l into the %deque before the location
+       *  specified by @a p.  This is known as <em>list insert</em>.
+       */
+      void
+      insert(iterator __p, initializer_list<value_type> __l)
+      { this->insert(__p, __l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  Inserts a number of copies of given data into the %deque.
+       *  @param  position  An iterator into the %deque.
+       *  @param  n  Number of elements to be inserted.
+       *  @param  x  Data to be inserted.
+       *
+       *  This function will insert a specified number of copies of the given
+       *  data before the location specified by @a position.
+       */
+      void
+      insert(iterator __position, size_type __n, const value_type& __x)
+      { _M_fill_insert(__position, __n, __x); }
+
+      /**
+       *  @brief  Inserts a range into the %deque.
+       *  @param  position  An iterator into the %deque.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function will insert copies of the data in the range
+       *  [first,last) into the %deque before the location specified
+       *  by @a pos.  This is known as <em>range insert</em>.
+       */
+      template<typename _InputIterator>
+        void
+        insert(iterator __position, _InputIterator __first,
+	       _InputIterator __last)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_insert_dispatch(__position, __first, __last, _Integral());
+	}
+
+      /**
+       *  @brief  Remove element at given position.
+       *  @param  position  Iterator pointing to element to be erased.
+       *  @return  An iterator pointing to the next element (or end()).
+       *
+       *  This function will erase the element at the given position and thus
+       *  shorten the %deque by one.
+       *
+       *  The user is cautioned that
+       *  this function only erases the element, and that if the element is
+       *  itself a pointer, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(iterator __position);
+
+      /**
+       *  @brief  Remove a range of elements.
+       *  @param  first  Iterator pointing to the first element to be erased.
+       *  @param  last  Iterator pointing to one past the last element to be
+       *                erased.
+       *  @return  An iterator pointing to the element pointed to by @a last
+       *           prior to erasing (or end()).
+       *
+       *  This function will erase the elements in the range [first,last) and
+       *  shorten the %deque accordingly.
+       *
+       *  The user is cautioned that
+       *  this function only erases the elements, and that if the elements
+       *  themselves are pointers, the pointed-to memory is not touched in any
+       *  way.  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(iterator __first, iterator __last);
+
+      /**
+       *  @brief  Swaps data with another %deque.
+       *  @param  x  A %deque of the same element and allocator types.
+       *
+       *  This exchanges the elements between two deques in constant time.
+       *  (Four pointers, so it should be quite fast.)
+       *  Note that the global std::swap() function is specialized such that
+       *  std::swap(d1,d2) will feed to this function.
+       */
+      void
+      swap(deque& __x)
+      {
+	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+	std::swap(this->_M_impl._M_map, __x._M_impl._M_map);
+	std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size);
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 431. Swapping containers with unequal allocators.
+	std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
+						    __x._M_get_Tp_allocator());
+      }
+
+      /**
+       *  Erases all the elements.  Note that this function only erases the
+       *  elements, and that if the elements themselves are pointers, the
+       *  pointed-to memory is not touched in any way.  Managing the pointer is
+       *  the user's responsibility.
+       */
+      void
+      clear()
+      { _M_erase_at_end(begin()); }
+
+    protected:
+      // Internal constructor functions follow.
+
+      // called by the range constructor to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+        {
+	  _M_initialize_map(static_cast<size_type>(__n));
+	  _M_fill_initialize(__x);
+	}
+
+      // called by the range constructor to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+			       __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+	  _M_range_initialize(__first, __last, _IterCategory());
+	}
+
+      // called by the second initialize_dispatch above
+      //@{
+      /**
+       *  @brief Fills the deque with whatever is in [first,last).
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @return   Nothing.
+       *
+       *  If the iterators are actually forward iterators (or better), then the
+       *  memory layout can be done all at once.  Else we move forward using
+       *  push_back on each value from the iterator.
+       */
+      template<typename _InputIterator>
+        void
+        _M_range_initialize(_InputIterator __first, _InputIterator __last,
+			    std::input_iterator_tag);
+
+      // called by the second initialize_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
+			    std::forward_iterator_tag);
+      //@}
+
+      /**
+       *  @brief Fills the %deque with copies of value.
+       *  @param  value  Initial value.
+       *  @return   Nothing.
+       *  @pre _M_start and _M_finish have already been initialized,
+       *  but none of the %deque's elements have yet been constructed.
+       *
+       *  This function is called only when the user provides an explicit size
+       *  (with or without an explicit exemplar value).
+       */
+      void
+      _M_fill_initialize(const value_type& __value);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // called by deque(n).
+      void
+      _M_default_initialize();
+#endif
+
+      // Internal assign functions follow.  The *_aux functions do the actual
+      // assignment work for the range versions.
+
+      // called by the range assign to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+        { _M_fill_assign(__n, __val); }
+
+      // called by the range assign to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+			   __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+	  _M_assign_aux(__first, __last, _IterCategory());
+	}
+
+      // called by the second assign_dispatch above
+      template<typename _InputIterator>
+        void
+        _M_assign_aux(_InputIterator __first, _InputIterator __last,
+		      std::input_iterator_tag);
+
+      // called by the second assign_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+		      std::forward_iterator_tag)
+        {
+	  const size_type __len = std::distance(__first, __last);
+	  if (__len > size())
+	    {
+	      _ForwardIterator __mid = __first;
+	      std::advance(__mid, size());
+	      std::copy(__first, __mid, begin());
+	      insert(end(), __mid, __last);
+	    }
+	  else
+	    _M_erase_at_end(std::copy(__first, __last, begin()));
+	}
+
+      // Called by assign(n,t), and the range assign when it turns out
+      // to be the same thing.
+      void
+      _M_fill_assign(size_type __n, const value_type& __val)
+      {
+	if (__n > size())
+	  {
+	    std::fill(begin(), end(), __val);
+	    insert(end(), __n - size(), __val);
+	  }
+	else
+	  {
+	    _M_erase_at_end(begin() + difference_type(__n));
+	    std::fill(begin(), end(), __val);
+	  }
+      }
+
+      //@{
+      /// Helper functions for push_* and pop_*.
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      void _M_push_back_aux(const value_type&);
+
+      void _M_push_front_aux(const value_type&);
+#else
+      template<typename... _Args>
+        void _M_push_back_aux(_Args&&... __args);
+
+      template<typename... _Args>
+        void _M_push_front_aux(_Args&&... __args);
+#endif
+
+      void _M_pop_back_aux();
+
+      void _M_pop_front_aux();
+      //@}
+
+      // Internal insert functions follow.  The *_aux functions do the actual
+      // insertion work when all shortcuts fail.
+
+      // called by the range insert to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_insert_dispatch(iterator __pos,
+			   _Integer __n, _Integer __x, __true_type)
+        { _M_fill_insert(__pos, __n, __x); }
+
+      // called by the range insert to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_insert_dispatch(iterator __pos,
+			   _InputIterator __first, _InputIterator __last,
+			   __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+          _M_range_insert_aux(__pos, __first, __last, _IterCategory());
+	}
+
+      // called by the second insert_dispatch above
+      template<typename _InputIterator>
+        void
+        _M_range_insert_aux(iterator __pos, _InputIterator __first,
+			    _InputIterator __last, std::input_iterator_tag);
+
+      // called by the second insert_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_range_insert_aux(iterator __pos, _ForwardIterator __first,
+			    _ForwardIterator __last, std::forward_iterator_tag);
+
+      // Called by insert(p,n,x), and the range insert when it turns out to be
+      // the same thing.  Can use fill functions in optimal situations,
+      // otherwise passes off to insert_aux(p,n,x).
+      void
+      _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
+
+      // called by insert(p,x)
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      _M_insert_aux(iterator __pos, const value_type& __x);
+#else
+      template<typename... _Args>
+        iterator
+        _M_insert_aux(iterator __pos, _Args&&... __args);
+#endif
+
+      // called by insert(p,n,x) via fill_insert
+      void
+      _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
+
+      // called by range_insert_aux for forward iterators
+      template<typename _ForwardIterator>
+        void
+        _M_insert_aux(iterator __pos,
+		      _ForwardIterator __first, _ForwardIterator __last,
+		      size_type __n);
+
+
+      // Internal erase functions follow.
+
+      void
+      _M_destroy_data_aux(iterator __first, iterator __last);
+
+      // Called by ~deque().
+      // NB: Doesn't deallocate the nodes.
+      template<typename _Alloc1>
+        void
+        _M_destroy_data(iterator __first, iterator __last, const _Alloc1&)
+        { _M_destroy_data_aux(__first, __last); }
+
+      void
+      _M_destroy_data(iterator __first, iterator __last,
+		      const std::allocator<_Tp>&)
+      {
+	if (!__has_trivial_destructor(value_type))
+	  _M_destroy_data_aux(__first, __last);
+      }
+
+      // Called by erase(q1, q2).
+      void
+      _M_erase_at_begin(iterator __pos)
+      {
+	_M_destroy_data(begin(), __pos, _M_get_Tp_allocator());
+	_M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node);
+	this->_M_impl._M_start = __pos;
+      }
+
+      // Called by erase(q1, q2), resize(), clear(), _M_assign_aux,
+      // _M_fill_assign, operator=.
+      void
+      _M_erase_at_end(iterator __pos)
+      {
+	_M_destroy_data(__pos, end(), _M_get_Tp_allocator());
+	_M_destroy_nodes(__pos._M_node + 1,
+			 this->_M_impl._M_finish._M_node + 1);
+	this->_M_impl._M_finish = __pos;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // Called by resize(sz).
+      void
+      _M_default_append(size_type __n);
+#endif
+
+      //@{
+      /// Memory-handling helpers for the previous internal insert functions.
+      iterator
+      _M_reserve_elements_at_front(size_type __n)
+      {
+	const size_type __vacancies = this->_M_impl._M_start._M_cur
+	                              - this->_M_impl._M_start._M_first;
+	if (__n > __vacancies)
+	  _M_new_elements_at_front(__n - __vacancies);
+	return this->_M_impl._M_start - difference_type(__n);
+      }
+
+      iterator
+      _M_reserve_elements_at_back(size_type __n)
+      {
+	const size_type __vacancies = (this->_M_impl._M_finish._M_last
+				       - this->_M_impl._M_finish._M_cur) - 1;
+	if (__n > __vacancies)
+	  _M_new_elements_at_back(__n - __vacancies);
+	return this->_M_impl._M_finish + difference_type(__n);
+      }
+
+      void
+      _M_new_elements_at_front(size_type __new_elements);
+
+      void
+      _M_new_elements_at_back(size_type __new_elements);
+      //@}
+
+
+      //@{
+      /**
+       *  @brief Memory-handling helpers for the major %map.
+       *
+       *  Makes sure the _M_map has space for new nodes.  Does not
+       *  actually add the nodes.  Can invalidate _M_map pointers.
+       *  (And consequently, %deque iterators.)
+       */
+      void
+      _M_reserve_map_at_back(size_type __nodes_to_add = 1)
+      {
+	if (__nodes_to_add + 1 > this->_M_impl._M_map_size
+	    - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map))
+	  _M_reallocate_map(__nodes_to_add, false);
+      }
+
+      void
+      _M_reserve_map_at_front(size_type __nodes_to_add = 1)
+      {
+	if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node
+				       - this->_M_impl._M_map))
+	  _M_reallocate_map(__nodes_to_add, true);
+      }
+
+      void
+      _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
+      //@}
+    };
+
+
+  /**
+   *  @brief  Deque equality comparison.
+   *  @param  x  A %deque.
+   *  @param  y  A %deque of the same type as @a x.
+   *  @return  True iff the size and elements of the deques are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  deques.  Deques are considered equivalent if their sizes are equal,
+   *  and if corresponding elements compare equal.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const deque<_Tp, _Alloc>& __x,
+                         const deque<_Tp, _Alloc>& __y)
+    { return __x.size() == __y.size()
+             && std::equal(__x.begin(), __x.end(), __y.begin()); }
+
+  /**
+   *  @brief  Deque ordering relation.
+   *  @param  x  A %deque.
+   *  @param  y  A %deque of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  deques.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const deque<_Tp, _Alloc>& __x,
+	      const deque<_Tp, _Alloc>& __y)
+    { return std::lexicographical_compare(__x.begin(), __x.end(),
+					  __y.begin(), __y.end()); }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const deque<_Tp, _Alloc>& __x,
+	       const deque<_Tp, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const deque<_Tp, _Alloc>& __x,
+	      const deque<_Tp, _Alloc>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const deque<_Tp, _Alloc>& __x,
+	       const deque<_Tp, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const deque<_Tp, _Alloc>& __x,
+	       const deque<_Tp, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::deque::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y)
+    { __x.swap(__y); }
+
+#undef _GLIBCXX_DEQUE_BUF_SIZE
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_DEQUE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_function.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_function.h
new file mode 100644
index 000000000..88655fc55
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_function.h
@@ -0,0 +1,734 @@
+// Functor implementations -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_function.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _STL_FUNCTION_H
+#define _STL_FUNCTION_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 20.3.1 base classes
+  /** @defgroup functors Function Objects
+   * @ingroup utilities
+   *
+   *  Function objects, or @e functors, are objects with an @c operator()
+   *  defined and accessible.  They can be passed as arguments to algorithm
+   *  templates and used in place of a function pointer.  Not only is the
+   *  resulting expressiveness of the library increased, but the generated
+   *  code can be more efficient than what you might write by hand.  When we
+   *  refer to @a functors, then, generally we include function pointers in
+   *  the description as well.
+   *
+   *  Often, functors are only created as temporaries passed to algorithm
+   *  calls, rather than being created as named variables.
+   *
+   *  Two examples taken from the standard itself follow.  To perform a
+   *  by-element addition of two vectors @c a and @c b containing @c double,
+   *  and put the result in @c a, use
+   *  \code
+   *  transform (a.begin(), a.end(), b.begin(), a.begin(), plus<double>());
+   *  \endcode
+   *  To negate every element in @c a, use
+   *  \code
+   *  transform(a.begin(), a.end(), a.begin(), negate<double>());
+   *  \endcode
+   *  The addition and negation functions will be inlined directly.
+   *
+   *  The standard functors are derived from structs named @c unary_function
+   *  and @c binary_function.  These two classes contain nothing but typedefs,
+   *  to aid in generic (template) programming.  If you write your own
+   *  functors, you might consider doing the same.
+   *
+   *  @{
+   */
+  /**
+   *  This is one of the @link functors functor base classes@endlink.
+   */
+  template<typename _Arg, typename _Result>
+    struct unary_function
+    {
+      /// @c argument_type is the type of the argument
+      typedef _Arg 	argument_type;   
+
+      /// @c result_type is the return type
+      typedef _Result 	result_type;  
+    };
+
+  /**
+   *  This is one of the @link functors functor base classes@endlink.
+   */
+  template<typename _Arg1, typename _Arg2, typename _Result>
+    struct binary_function
+    {
+      /// @c first_argument_type is the type of the first argument
+      typedef _Arg1 	first_argument_type; 
+
+      /// @c second_argument_type is the type of the second argument
+      typedef _Arg2 	second_argument_type;
+
+      /// @c result_type is the return type
+      typedef _Result 	result_type;
+    };
+  /** @}  */
+
+  // 20.3.2 arithmetic
+  /** @defgroup arithmetic_functors Arithmetic Classes
+   * @ingroup functors
+   *
+   *  Because basic math often needs to be done during an algorithm,
+   *  the library provides functors for those operations.  See the
+   *  documentation for @link functors the base classes@endlink
+   *  for examples of their use.
+   *
+   *  @{
+   */
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct plus : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x + __y; }
+    };
+
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct minus : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x - __y; }
+    };
+
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct multiplies : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x * __y; }
+    };
+
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct divides : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x / __y; }
+    };
+
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct modulus : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x % __y; }
+    };
+
+  /// One of the @link arithmetic_functors math functors@endlink.
+  template<typename _Tp>
+    struct negate : public unary_function<_Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x) const
+      { return -__x; }
+    };
+  /** @}  */
+
+  // 20.3.3 comparisons
+  /** @defgroup comparison_functors Comparison Classes
+   * @ingroup functors
+   *
+   *  The library provides six wrapper functors for all the basic comparisons
+   *  in C++, like @c <.
+   *
+   *  @{
+   */
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct equal_to : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x == __y; }
+    };
+
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct not_equal_to : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x != __y; }
+    };
+
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct greater : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x > __y; }
+    };
+
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct less : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x < __y; }
+    };
+
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct greater_equal : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x >= __y; }
+    };
+
+  /// One of the @link comparison_functors comparison functors@endlink.
+  template<typename _Tp>
+    struct less_equal : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x <= __y; }
+    };
+  /** @}  */
+
+  // 20.3.4 logical operations
+  /** @defgroup logical_functors Boolean Operations Classes
+   * @ingroup functors
+   *
+   *  Here are wrapper functors for Boolean operations: @c &&, @c ||,
+   *  and @c !.
+   *
+   *  @{
+   */
+  /// One of the @link logical_functors Boolean operations functors@endlink.
+  template<typename _Tp>
+    struct logical_and : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x && __y; }
+    };
+
+  /// One of the @link logical_functors Boolean operations functors@endlink.
+  template<typename _Tp>
+    struct logical_or : public binary_function<_Tp, _Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x || __y; }
+    };
+
+  /// One of the @link logical_functors Boolean operations functors@endlink.
+  template<typename _Tp>
+    struct logical_not : public unary_function<_Tp, bool>
+    {
+      bool
+      operator()(const _Tp& __x) const
+      { return !__x; }
+    };
+  /** @}  */
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 660. Missing Bitwise Operations.
+  template<typename _Tp>
+    struct bit_and : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x & __y; }
+    };
+
+  template<typename _Tp>
+    struct bit_or : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x | __y; }
+    };
+
+  template<typename _Tp>
+    struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
+    {
+      _Tp
+      operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x ^ __y; }
+    };
+
+  // 20.3.5 negators
+  /** @defgroup negators Negators
+   * @ingroup functors
+   *
+   *  The functions @c not1 and @c not2 each take a predicate functor
+   *  and return an instance of @c unary_negate or
+   *  @c binary_negate, respectively.  These classes are functors whose
+   *  @c operator() performs the stored predicate function and then returns
+   *  the negation of the result.
+   *
+   *  For example, given a vector of integers and a trivial predicate,
+   *  \code
+   *  struct IntGreaterThanThree
+   *    : public std::unary_function<int, bool>
+   *  {
+   *      bool operator() (int x) { return x > 3; }
+   *  };
+   *
+   *  std::find_if (v.begin(), v.end(), not1(IntGreaterThanThree()));
+   *  \endcode
+   *  The call to @c find_if will locate the first index (i) of @c v for which
+   *  <code>!(v[i] > 3)</code> is true.
+   *
+   *  The not1/unary_negate combination works on predicates taking a single
+   *  argument.  The not2/binary_negate combination works on predicates which
+   *  take two arguments.
+   *
+   *  @{
+   */
+  /// One of the @link negators negation functors@endlink.
+  template<typename _Predicate>
+    class unary_negate
+    : public unary_function<typename _Predicate::argument_type, bool>
+    {
+    protected:
+      _Predicate _M_pred;
+
+    public:
+      explicit
+      unary_negate(const _Predicate& __x) : _M_pred(__x) { }
+
+      bool
+      operator()(const typename _Predicate::argument_type& __x) const
+      { return !_M_pred(__x); }
+    };
+
+  /// One of the @link negators negation functors@endlink.
+  template<typename _Predicate>
+    inline unary_negate<_Predicate>
+    not1(const _Predicate& __pred)
+    { return unary_negate<_Predicate>(__pred); }
+
+  /// One of the @link negators negation functors@endlink.
+  template<typename _Predicate>
+    class binary_negate
+    : public binary_function<typename _Predicate::first_argument_type,
+			     typename _Predicate::second_argument_type, bool>
+    {
+    protected:
+      _Predicate _M_pred;
+
+    public:
+      explicit
+      binary_negate(const _Predicate& __x) : _M_pred(__x) { }
+
+      bool
+      operator()(const typename _Predicate::first_argument_type& __x,
+		 const typename _Predicate::second_argument_type& __y) const
+      { return !_M_pred(__x, __y); }
+    };
+
+  /// One of the @link negators negation functors@endlink.
+  template<typename _Predicate>
+    inline binary_negate<_Predicate>
+    not2(const _Predicate& __pred)
+    { return binary_negate<_Predicate>(__pred); }
+  /** @}  */
+
+  // 20.3.7 adaptors pointers functions
+  /** @defgroup pointer_adaptors Adaptors for pointers to functions
+   * @ingroup functors
+   *
+   *  The advantage of function objects over pointers to functions is that
+   *  the objects in the standard library declare nested typedefs describing
+   *  their argument and result types with uniform names (e.g., @c result_type
+   *  from the base classes @c unary_function and @c binary_function).
+   *  Sometimes those typedefs are required, not just optional.
+   *
+   *  Adaptors are provided to turn pointers to unary (single-argument) and
+   *  binary (double-argument) functions into function objects.  The
+   *  long-winded functor @c pointer_to_unary_function is constructed with a
+   *  function pointer @c f, and its @c operator() called with argument @c x
+   *  returns @c f(x).  The functor @c pointer_to_binary_function does the same
+   *  thing, but with a double-argument @c f and @c operator().
+   *
+   *  The function @c ptr_fun takes a pointer-to-function @c f and constructs
+   *  an instance of the appropriate functor.
+   *
+   *  @{
+   */
+  /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
+  template<typename _Arg, typename _Result>
+    class pointer_to_unary_function : public unary_function<_Arg, _Result>
+    {
+    protected:
+      _Result (*_M_ptr)(_Arg);
+
+    public:
+      pointer_to_unary_function() { }
+
+      explicit
+      pointer_to_unary_function(_Result (*__x)(_Arg))
+      : _M_ptr(__x) { }
+
+      _Result
+      operator()(_Arg __x) const
+      { return _M_ptr(__x); }
+    };
+
+  /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
+  template<typename _Arg, typename _Result>
+    inline pointer_to_unary_function<_Arg, _Result>
+    ptr_fun(_Result (*__x)(_Arg))
+    { return pointer_to_unary_function<_Arg, _Result>(__x); }
+
+  /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
+  template<typename _Arg1, typename _Arg2, typename _Result>
+    class pointer_to_binary_function
+    : public binary_function<_Arg1, _Arg2, _Result>
+    {
+    protected:
+      _Result (*_M_ptr)(_Arg1, _Arg2);
+
+    public:
+      pointer_to_binary_function() { }
+
+      explicit
+      pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
+      : _M_ptr(__x) { }
+
+      _Result
+      operator()(_Arg1 __x, _Arg2 __y) const
+      { return _M_ptr(__x, __y); }
+    };
+
+  /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
+  template<typename _Arg1, typename _Arg2, typename _Result>
+    inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
+    ptr_fun(_Result (*__x)(_Arg1, _Arg2))
+    { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
+  /** @}  */
+
+  template<typename _Tp>
+    struct _Identity : public unary_function<_Tp,_Tp>
+    {
+      _Tp&
+      operator()(_Tp& __x) const
+      { return __x; }
+
+      const _Tp&
+      operator()(const _Tp& __x) const
+      { return __x; }
+    };
+
+  template<typename _Pair>
+    struct _Select1st : public unary_function<_Pair,
+					      typename _Pair::first_type>
+    {
+      typename _Pair::first_type&
+      operator()(_Pair& __x) const
+      { return __x.first; }
+
+      const typename _Pair::first_type&
+      operator()(const _Pair& __x) const
+      { return __x.first; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair2>
+        typename _Pair2::first_type&
+        operator()(_Pair2& __x) const
+        { return __x.first; }
+
+      template<typename _Pair2>
+        const typename _Pair2::first_type&
+        operator()(const _Pair2& __x) const
+        { return __x.first; }
+#endif
+    };
+
+  template<typename _Pair>
+    struct _Select2nd : public unary_function<_Pair,
+					      typename _Pair::second_type>
+    {
+      typename _Pair::second_type&
+      operator()(_Pair& __x) const
+      { return __x.second; }
+
+      const typename _Pair::second_type&
+      operator()(const _Pair& __x) const
+      { return __x.second; }
+    };
+
+  // 20.3.8 adaptors pointers members
+  /** @defgroup memory_adaptors Adaptors for pointers to members
+   * @ingroup functors
+   *
+   *  There are a total of 8 = 2^3 function objects in this family.
+   *   (1) Member functions taking no arguments vs member functions taking
+   *        one argument.
+   *   (2) Call through pointer vs call through reference.
+   *   (3) Const vs non-const member function.
+   *
+   *  All of this complexity is in the function objects themselves.  You can
+   *   ignore it by using the helper function mem_fun and mem_fun_ref,
+   *   which create whichever type of adaptor is appropriate.
+   *
+   *  @{
+   */
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp>
+    class mem_fun_t : public unary_function<_Tp*, _Ret>
+    {
+    public:
+      explicit
+      mem_fun_t(_Ret (_Tp::*__pf)())
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(_Tp* __p) const
+      { return (__p->*_M_f)(); }
+
+    private:
+      _Ret (_Tp::*_M_f)();
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp>
+    class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
+    {
+    public:
+      explicit
+      const_mem_fun_t(_Ret (_Tp::*__pf)() const)
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(const _Tp* __p) const
+      { return (__p->*_M_f)(); }
+
+    private:
+      _Ret (_Tp::*_M_f)() const;
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp>
+    class mem_fun_ref_t : public unary_function<_Tp, _Ret>
+    {
+    public:
+      explicit
+      mem_fun_ref_t(_Ret (_Tp::*__pf)())
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(_Tp& __r) const
+      { return (__r.*_M_f)(); }
+
+    private:
+      _Ret (_Tp::*_M_f)();
+  };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp>
+    class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
+    {
+    public:
+      explicit
+      const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(const _Tp& __r) const
+      { return (__r.*_M_f)(); }
+
+    private:
+      _Ret (_Tp::*_M_f)() const;
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp, typename _Arg>
+    class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
+    {
+    public:
+      explicit
+      mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(_Tp* __p, _Arg __x) const
+      { return (__p->*_M_f)(__x); }
+
+    private:
+      _Ret (_Tp::*_M_f)(_Arg);
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp, typename _Arg>
+    class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
+    {
+    public:
+      explicit
+      const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(const _Tp* __p, _Arg __x) const
+      { return (__p->*_M_f)(__x); }
+
+    private:
+      _Ret (_Tp::*_M_f)(_Arg) const;
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp, typename _Arg>
+    class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+    {
+    public:
+      explicit
+      mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(_Tp& __r, _Arg __x) const
+      { return (__r.*_M_f)(__x); }
+
+    private:
+      _Ret (_Tp::*_M_f)(_Arg);
+    };
+
+  /// One of the @link memory_adaptors adaptors for member
+  /// pointers@endlink.
+  template<typename _Ret, typename _Tp, typename _Arg>
+    class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+    {
+    public:
+      explicit
+      const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
+      : _M_f(__pf) { }
+
+      _Ret
+      operator()(const _Tp& __r, _Arg __x) const
+      { return (__r.*_M_f)(__x); }
+
+    private:
+      _Ret (_Tp::*_M_f)(_Arg) const;
+    };
+
+  // Mem_fun adaptor helper functions.  There are only two:
+  // mem_fun and mem_fun_ref.
+  template<typename _Ret, typename _Tp>
+    inline mem_fun_t<_Ret, _Tp>
+    mem_fun(_Ret (_Tp::*__f)())
+    { return mem_fun_t<_Ret, _Tp>(__f); }
+
+  template<typename _Ret, typename _Tp>
+    inline const_mem_fun_t<_Ret, _Tp>
+    mem_fun(_Ret (_Tp::*__f)() const)
+    { return const_mem_fun_t<_Ret, _Tp>(__f); }
+
+  template<typename _Ret, typename _Tp>
+    inline mem_fun_ref_t<_Ret, _Tp>
+    mem_fun_ref(_Ret (_Tp::*__f)())
+    { return mem_fun_ref_t<_Ret, _Tp>(__f); }
+
+  template<typename _Ret, typename _Tp>
+    inline const_mem_fun_ref_t<_Ret, _Tp>
+    mem_fun_ref(_Ret (_Tp::*__f)() const)
+    { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
+
+  template<typename _Ret, typename _Tp, typename _Arg>
+    inline mem_fun1_t<_Ret, _Tp, _Arg>
+    mem_fun(_Ret (_Tp::*__f)(_Arg))
+    { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+  template<typename _Ret, typename _Tp, typename _Arg>
+    inline const_mem_fun1_t<_Ret, _Tp, _Arg>
+    mem_fun(_Ret (_Tp::*__f)(_Arg) const)
+    { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+  template<typename _Ret, typename _Tp, typename _Arg>
+    inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
+    mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
+    { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+  template<typename _Ret, typename _Tp, typename _Arg>
+    inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
+    mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
+    { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+  /** @}  */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED
+# include <backward/binders.h>
+#endif
+
+#endif /* _STL_FUNCTION_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_heap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_heap.h
new file mode 100644
index 000000000..b00fc69fc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_heap.h
@@ -0,0 +1,581 @@
+// Heap implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_heap.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{queue}
+ */
+
+#ifndef _STL_HEAP_H
+#define _STL_HEAP_H 1
+
+#include <debug/debug.h>
+#include <bits/move.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup heap_algorithms Heap
+   * @ingroup sorting_algorithms
+   */
+
+  template<typename _RandomAccessIterator, typename _Distance>
+    _Distance
+    __is_heap_until(_RandomAccessIterator __first, _Distance __n)
+    {
+      _Distance __parent = 0;
+      for (_Distance __child = 1; __child < __n; ++__child)
+	{
+	  if (__first[__parent] < __first[__child])
+	    return __child;
+	  if ((__child & 1) == 0)
+	    ++__parent;
+	}
+      return __n;
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance,
+	   typename _Compare>
+    _Distance
+    __is_heap_until(_RandomAccessIterator __first, _Distance __n,
+		    _Compare __comp)
+    {
+      _Distance __parent = 0;
+      for (_Distance __child = 1; __child < __n; ++__child)
+	{
+	  if (__comp(__first[__parent], __first[__child]))
+	    return __child;
+	  if ((__child & 1) == 0)
+	    ++__parent;
+	}
+      return __n;
+    }
+
+  // __is_heap, a predicate testing whether or not a range is a heap.
+  // This function is an extension, not part of the C++ standard.
+  template<typename _RandomAccessIterator, typename _Distance>
+    inline bool
+    __is_heap(_RandomAccessIterator __first, _Distance __n)
+    { return std::__is_heap_until(__first, __n) == __n; }
+
+  template<typename _RandomAccessIterator, typename _Compare,
+	   typename _Distance>
+    inline bool
+    __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
+    { return std::__is_heap_until(__first, __n, __comp) == __n; }
+
+  template<typename _RandomAccessIterator>
+    inline bool
+    __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    { return std::__is_heap(__first, std::distance(__first, __last)); }
+
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline bool
+    __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      _Compare __comp)
+    { return std::__is_heap(__first, __comp, std::distance(__first, __last)); }
+
+  // Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap,
+  // + is_heap and is_heap_until in C++0x.
+
+  template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
+    void
+    __push_heap(_RandomAccessIterator __first,
+		_Distance __holeIndex, _Distance __topIndex, _Tp __value)
+    {
+      _Distance __parent = (__holeIndex - 1) / 2;
+      while (__holeIndex > __topIndex && *(__first + __parent) < __value)
+	{
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __parent));
+	  __holeIndex = __parent;
+	  __parent = (__holeIndex - 1) / 2;
+	}
+      *(__first + __holeIndex) = _GLIBCXX_MOVE(__value);
+    }
+
+  /**
+   *  @brief  Push an element onto a heap.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap + element.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation pushes the element at last-1 onto the valid heap over the
+   *  range [first,last-1).  After completion, [first,last) is a valid heap.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	  _ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	  _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap(__first, __last - 1);
+
+      _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
+      std::__push_heap(__first, _DistanceType((__last - __first) - 1),
+		       _DistanceType(0), _GLIBCXX_MOVE(__value));
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance, typename _Tp,
+	   typename _Compare>
+    void
+    __push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
+		_Distance __topIndex, _Tp __value, _Compare __comp)
+    {
+      _Distance __parent = (__holeIndex - 1) / 2;
+      while (__holeIndex > __topIndex
+	     && __comp(*(__first + __parent), __value))
+	{
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __parent));
+	  __holeIndex = __parent;
+	  __parent = (__holeIndex - 1) / 2;
+	}
+      *(__first + __holeIndex) = _GLIBCXX_MOVE(__value);
+    }
+
+  /**
+   *  @brief  Push an element onto a heap using comparison functor.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap + element.
+   *  @param  comp   Comparison functor.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation pushes the element at last-1 onto the valid heap over the
+   *  range [first,last-1).  After completion, [first,last) is a valid heap.
+   *  Compare operations are performed using comp.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	  _ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	  _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap_pred(__first, __last - 1, __comp);
+
+      _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
+      std::__push_heap(__first, _DistanceType((__last - __first) - 1),
+		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
+    void
+    __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
+		  _Distance __len, _Tp __value)
+    {
+      const _Distance __topIndex = __holeIndex;
+      _Distance __secondChild = __holeIndex;
+      while (__secondChild < (__len - 1) / 2)
+	{
+	  __secondChild = 2 * (__secondChild + 1);
+	  if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
+	    __secondChild--;
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild));
+	  __holeIndex = __secondChild;
+	}
+      if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2)
+	{
+	  __secondChild = 2 * (__secondChild + 1);
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first
+						     + (__secondChild - 1)));
+	  __holeIndex = __secondChild - 1;
+	}
+      std::__push_heap(__first, __holeIndex, __topIndex,
+		       _GLIBCXX_MOVE(__value));
+    }
+
+  template<typename _RandomAccessIterator>
+    inline void
+    __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	       _RandomAccessIterator __result)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      _ValueType __value = _GLIBCXX_MOVE(*__result);
+      *__result = _GLIBCXX_MOVE(*__first);
+      std::__adjust_heap(__first, _DistanceType(0),
+			 _DistanceType(__last - __first),
+			 _GLIBCXX_MOVE(__value));
+    }
+
+  /**
+   *  @brief  Pop an element off a heap.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation pops the top of the heap.  The elements first and last-1
+   *  are swapped and [first,last-1) is made into a heap.
+  */
+  template<typename _RandomAccessIterator>
+    inline void
+    pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap(__first, __last);
+
+      --__last;
+      std::__pop_heap(__first, __last, __last);
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance,
+	   typename _Tp, typename _Compare>
+    void
+    __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
+		  _Distance __len, _Tp __value, _Compare __comp)
+    {
+      const _Distance __topIndex = __holeIndex;
+      _Distance __secondChild = __holeIndex;
+      while (__secondChild < (__len - 1) / 2)
+	{
+	  __secondChild = 2 * (__secondChild + 1);
+	  if (__comp(*(__first + __secondChild),
+		     *(__first + (__secondChild - 1))))
+	    __secondChild--;
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild));
+	  __holeIndex = __secondChild;
+	}
+      if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2)
+	{
+	  __secondChild = 2 * (__secondChild + 1);
+	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first
+						     + (__secondChild - 1)));
+	  __holeIndex = __secondChild - 1;
+	}
+      std::__push_heap(__first, __holeIndex, __topIndex, 
+		       _GLIBCXX_MOVE(__value), __comp);      
+    }
+
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	       _RandomAccessIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	_ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	_DistanceType;
+
+      _ValueType __value = _GLIBCXX_MOVE(*__result);
+      *__result = _GLIBCXX_MOVE(*__first);
+      std::__adjust_heap(__first, _DistanceType(0),
+			 _DistanceType(__last - __first),
+			 _GLIBCXX_MOVE(__value), __comp);
+    }
+
+  /**
+   *  @brief  Pop an element off a heap using comparison functor.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @param  comp   Comparison functor to use.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation pops the top of the heap.  The elements first and last-1
+   *  are swapped and [first,last-1) is made into a heap.  Comparisons are
+   *  made using comp.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline void
+    pop_heap(_RandomAccessIterator __first,
+	     _RandomAccessIterator __last, _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap_pred(__first, __last, __comp);
+
+      --__last;
+      std::__pop_heap(__first, __last, __last, __comp);
+    }
+
+  /**
+   *  @brief  Construct a heap over a range.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation makes the elements in [first,last) into a heap.
+  */
+  template<typename _RandomAccessIterator>
+    void
+    make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	  _ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	  _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__last - __first < 2)
+	return;
+
+      const _DistanceType __len = __last - __first;
+      _DistanceType __parent = (__len - 2) / 2;
+      while (true)
+	{
+	  _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent));
+	  std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value));
+	  if (__parent == 0)
+	    return;
+	  __parent--;
+	}
+    }
+
+  /**
+   *  @brief  Construct a heap over a range using comparison functor.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @param  comp   Comparison functor to use.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation makes the elements in [first,last) into a heap.
+   *  Comparisons are made using comp.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      _Compare __comp)
+    {
+      typedef typename iterator_traits<_RandomAccessIterator>::value_type
+	  _ValueType;
+      typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+	  _DistanceType;
+
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__last - __first < 2)
+	return;
+
+      const _DistanceType __len = __last - __first;
+      _DistanceType __parent = (__len - 2) / 2;
+      while (true)
+	{
+	  _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent));
+	  std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value),
+			     __comp);
+	  if (__parent == 0)
+	    return;
+	  __parent--;
+	}
+    }
+
+  /**
+   *  @brief  Sort a heap.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation sorts the valid heap in the range [first,last).
+  */
+  template<typename _RandomAccessIterator>
+    void
+    sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_RandomAccessIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap(__first, __last);
+
+      while (__last - __first > 1)
+	{
+	  --__last;
+	  std::__pop_heap(__first, __last, __last);
+	}
+    }
+
+  /**
+   *  @brief  Sort a heap using comparison functor.
+   *  @param  first  Start of heap.
+   *  @param  last   End of heap.
+   *  @param  comp   Comparison functor to use.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation sorts the valid heap in the range [first,last).
+   *  Comparisons are made using comp.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    void
+    sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	      _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_heap_pred(__first, __last, __comp);
+
+      while (__last - __first > 1)
+	{
+	  --__last;
+	  std::__pop_heap(__first, __last, __last, __comp);
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief  Search the end of a heap.
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  An iterator pointing to the first element not in the heap.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation returns the last iterator i in [first, last) for which
+   *  the range [first, i) is a heap.
+  */
+  template<typename _RandomAccessIterator>
+    inline _RandomAccessIterator
+    is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_RandomAccessIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return __first + std::__is_heap_until(__first, std::distance(__first,
+								   __last));
+    }
+
+  /**
+   *  @brief  Search the end of a heap using comparison functor.
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   Comparison functor to use.
+   *  @return  An iterator pointing to the first element not in the heap.
+   *  @ingroup heap_algorithms
+   *
+   *  This operation returns the last iterator i in [first, last) for which
+   *  the range [first, i) is a heap.  Comparisons are made using comp.
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline _RandomAccessIterator
+    is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last,
+		  _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return __first + std::__is_heap_until(__first, std::distance(__first,
+								   __last),
+					    __comp);
+    }
+
+  /**
+   *  @brief  Determines whether a range is a heap.
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @return  True if range is a heap, false otherwise.
+   *  @ingroup heap_algorithms
+  */
+  template<typename _RandomAccessIterator>
+    inline bool
+    is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    { return std::is_heap_until(__first, __last) == __last; }
+
+  /**
+   *  @brief  Determines whether a range is a heap using comparison functor.
+   *  @param  first  Start of range.
+   *  @param  last   End of range.
+   *  @param  comp   Comparison functor to use.
+   *  @return  True if range is a heap, false otherwise.
+   *  @ingroup heap_algorithms
+  */
+  template<typename _RandomAccessIterator, typename _Compare>
+    inline bool
+    is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	    _Compare __comp)
+    { return std::is_heap_until(__first, __last, __comp) == __last; }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_HEAP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator.h
new file mode 100644
index 000000000..b23107d35
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator.h
@@ -0,0 +1,1131 @@
+// Iterators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_iterator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ *
+ *  This file implements reverse_iterator, back_insert_iterator,
+ *  front_insert_iterator, insert_iterator, __normal_iterator, and their
+ *  supporting functions and overloaded operators.
+ */
+
+#ifndef _STL_ITERATOR_H
+#define _STL_ITERATOR_H 1
+
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+#include <bits/move.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup iterators
+   * @{
+   */
+
+  // 24.4.1 Reverse iterators
+  /**
+   *  Bidirectional and random access iterators have corresponding reverse
+   *  %iterator adaptors that iterate through the data structure in the
+   *  opposite direction.  They have the same signatures as the corresponding
+   *  iterators.  The fundamental relation between a reverse %iterator and its
+   *  corresponding %iterator @c i is established by the identity:
+   *  @code
+   *      &*(reverse_iterator(i)) == &*(i - 1)
+   *  @endcode
+   *
+   *  <em>This mapping is dictated by the fact that while there is always a
+   *  pointer past the end of an array, there might not be a valid pointer
+   *  before the beginning of an array.</em> [24.4.1]/1,2
+   *
+   *  Reverse iterators can be tricky and surprising at first.  Their
+   *  semantics make sense, however, and the trickiness is a side effect of
+   *  the requirement that the iterators must be safe.
+  */
+  template<typename _Iterator>
+    class reverse_iterator
+    : public iterator<typename iterator_traits<_Iterator>::iterator_category,
+		      typename iterator_traits<_Iterator>::value_type,
+		      typename iterator_traits<_Iterator>::difference_type,
+		      typename iterator_traits<_Iterator>::pointer,
+                      typename iterator_traits<_Iterator>::reference>
+    {
+    protected:
+      _Iterator current;
+
+      typedef iterator_traits<_Iterator>		__traits_type;
+
+    public:
+      typedef _Iterator					iterator_type;
+      typedef typename __traits_type::difference_type	difference_type;
+      typedef typename __traits_type::pointer		pointer;
+      typedef typename __traits_type::reference		reference;
+
+      /**
+       *  The default constructor default-initializes member @p current.
+       *  If it is a pointer, that means it is zero-initialized.
+      */
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 235 No specification of default ctor for reverse_iterator
+      reverse_iterator() : current() { }
+
+      /**
+       *  This %iterator will move in the opposite direction that @p x does.
+      */
+      explicit
+      reverse_iterator(iterator_type __x) : current(__x) { }
+
+      /**
+       *  The copy constructor is normal.
+      */
+      reverse_iterator(const reverse_iterator& __x)
+      : current(__x.current) { }
+
+      /**
+       *  A reverse_iterator across other types can be copied in the normal
+       *  fashion.
+      */
+      template<typename _Iter>
+        reverse_iterator(const reverse_iterator<_Iter>& __x)
+	: current(__x.base()) { }
+
+      /**
+       *  @return  @c current, the %iterator used for underlying work.
+      */
+      iterator_type
+      base() const
+      { return current; }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reference
+      operator*() const
+      {
+	_Iterator __tmp = current;
+	return *--__tmp;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      pointer
+      operator->() const
+      { return &(operator*()); }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator&
+      operator++()
+      {
+	--current;
+	return *this;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator
+      operator++(int)
+      {
+	reverse_iterator __tmp = *this;
+	--current;
+	return __tmp;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator&
+      operator--()
+      {
+	++current;
+	return *this;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator
+      operator--(int)
+      {
+	reverse_iterator __tmp = *this;
+	++current;
+	return __tmp;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator
+      operator+(difference_type __n) const
+      { return reverse_iterator(current - __n); }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator&
+      operator+=(difference_type __n)
+      {
+	current -= __n;
+	return *this;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator
+      operator-(difference_type __n) const
+      { return reverse_iterator(current + __n); }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reverse_iterator&
+      operator-=(difference_type __n)
+      {
+	current += __n;
+	return *this;
+      }
+
+      /**
+       *  @return  TODO
+       *
+       *  @doctodo
+      */
+      reference
+      operator[](difference_type __n) const
+      { return *(*this + __n); }
+    };
+
+  //@{
+  /**
+   *  @param  x  A %reverse_iterator.
+   *  @param  y  A %reverse_iterator.
+   *  @return  A simple bool.
+   *
+   *  Reverse iterators forward many operations to their underlying base()
+   *  iterators.  Others are implemented in terms of one another.
+   *
+  */
+  template<typename _Iterator>
+    inline bool
+    operator==(const reverse_iterator<_Iterator>& __x,
+	       const reverse_iterator<_Iterator>& __y)
+    { return __x.base() == __y.base(); }
+
+  template<typename _Iterator>
+    inline bool
+    operator<(const reverse_iterator<_Iterator>& __x,
+	      const reverse_iterator<_Iterator>& __y)
+    { return __y.base() < __x.base(); }
+
+  template<typename _Iterator>
+    inline bool
+    operator!=(const reverse_iterator<_Iterator>& __x,
+	       const reverse_iterator<_Iterator>& __y)
+    { return !(__x == __y); }
+
+  template<typename _Iterator>
+    inline bool
+    operator>(const reverse_iterator<_Iterator>& __x,
+	      const reverse_iterator<_Iterator>& __y)
+    { return __y < __x; }
+
+  template<typename _Iterator>
+    inline bool
+    operator<=(const reverse_iterator<_Iterator>& __x,
+	       const reverse_iterator<_Iterator>& __y)
+    { return !(__y < __x); }
+
+  template<typename _Iterator>
+    inline bool
+    operator>=(const reverse_iterator<_Iterator>& __x,
+	       const reverse_iterator<_Iterator>& __y)
+    { return !(__x < __y); }
+
+  template<typename _Iterator>
+    inline typename reverse_iterator<_Iterator>::difference_type
+    operator-(const reverse_iterator<_Iterator>& __x,
+	      const reverse_iterator<_Iterator>& __y)
+    { return __y.base() - __x.base(); }
+
+  template<typename _Iterator>
+    inline reverse_iterator<_Iterator>
+    operator+(typename reverse_iterator<_Iterator>::difference_type __n,
+	      const reverse_iterator<_Iterator>& __x)
+    { return reverse_iterator<_Iterator>(__x.base() - __n); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 280. Comparison of reverse_iterator to const reverse_iterator.
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator==(const reverse_iterator<_IteratorL>& __x,
+	       const reverse_iterator<_IteratorR>& __y)
+    { return __x.base() == __y.base(); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator<(const reverse_iterator<_IteratorL>& __x,
+	      const reverse_iterator<_IteratorR>& __y)
+    { return __y.base() < __x.base(); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator!=(const reverse_iterator<_IteratorL>& __x,
+	       const reverse_iterator<_IteratorR>& __y)
+    { return !(__x == __y); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator>(const reverse_iterator<_IteratorL>& __x,
+	      const reverse_iterator<_IteratorR>& __y)
+    { return __y < __x; }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator<=(const reverse_iterator<_IteratorL>& __x,
+	       const reverse_iterator<_IteratorR>& __y)
+    { return !(__y < __x); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator>=(const reverse_iterator<_IteratorL>& __x,
+	       const reverse_iterator<_IteratorR>& __y)
+    { return !(__x < __y); }
+
+  template<typename _IteratorL, typename _IteratorR>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    // DR 685.
+    inline auto
+    operator-(const reverse_iterator<_IteratorL>& __x,
+	      const reverse_iterator<_IteratorR>& __y)
+    -> decltype(__y.base() - __x.base())
+#else
+    inline typename reverse_iterator<_IteratorL>::difference_type
+    operator-(const reverse_iterator<_IteratorL>& __x,
+	      const reverse_iterator<_IteratorR>& __y)
+#endif
+    { return __y.base() - __x.base(); }
+  //@}
+
+  // 24.4.2.2.1 back_insert_iterator
+  /**
+   *  @brief  Turns assignment into insertion.
+   *
+   *  These are output iterators, constructed from a container-of-T.
+   *  Assigning a T to the iterator appends it to the container using
+   *  push_back.
+   *
+   *  Tip:  Using the back_inserter function to create these iterators can
+   *  save typing.
+  */
+  template<typename _Container>
+    class back_insert_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    protected:
+      _Container* container;
+
+    public:
+      /// A nested typedef for the type of whatever container you used.
+      typedef _Container          container_type;
+
+      /// The only way to create this %iterator is with a container.
+      explicit
+      back_insert_iterator(_Container& __x) : container(&__x) { }
+
+      /**
+       *  @param  value  An instance of whatever type
+       *                 container_type::const_reference is; presumably a
+       *                 reference-to-const T for container<T>.
+       *  @return  This %iterator, for chained operations.
+       *
+       *  This kind of %iterator doesn't really have a @a position in the
+       *  container (you can think of the position as being permanently at
+       *  the end, if you like).  Assigning a value to the %iterator will
+       *  always append the value to the end of the container.
+      */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      back_insert_iterator&
+      operator=(typename _Container::const_reference __value)
+      {
+	container->push_back(__value);
+	return *this;
+      }
+#else
+      back_insert_iterator&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->push_back(__value);
+	return *this;
+      }
+
+      back_insert_iterator&
+      operator=(typename _Container::value_type&& __value)
+      {
+	container->push_back(std::move(__value));
+	return *this;
+      }
+#endif
+
+      /// Simply returns *this.
+      back_insert_iterator&
+      operator*()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      back_insert_iterator&
+      operator++()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      back_insert_iterator
+      operator++(int)
+      { return *this; }
+    };
+
+  /**
+   *  @param  x  A container of arbitrary type.
+   *  @return  An instance of back_insert_iterator working on @p x.
+   *
+   *  This wrapper function helps in creating back_insert_iterator instances.
+   *  Typing the name of the %iterator requires knowing the precise full
+   *  type of the container, which can be tedious and impedes generic
+   *  programming.  Using this function lets you take advantage of automatic
+   *  template parameter deduction, making the compiler match the correct
+   *  types for you.
+  */
+  template<typename _Container>
+    inline back_insert_iterator<_Container>
+    back_inserter(_Container& __x)
+    { return back_insert_iterator<_Container>(__x); }
+
+  /**
+   *  @brief  Turns assignment into insertion.
+   *
+   *  These are output iterators, constructed from a container-of-T.
+   *  Assigning a T to the iterator prepends it to the container using
+   *  push_front.
+   *
+   *  Tip:  Using the front_inserter function to create these iterators can
+   *  save typing.
+  */
+  template<typename _Container>
+    class front_insert_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    protected:
+      _Container* container;
+
+    public:
+      /// A nested typedef for the type of whatever container you used.
+      typedef _Container          container_type;
+
+      /// The only way to create this %iterator is with a container.
+      explicit front_insert_iterator(_Container& __x) : container(&__x) { }
+
+      /**
+       *  @param  value  An instance of whatever type
+       *                 container_type::const_reference is; presumably a
+       *                 reference-to-const T for container<T>.
+       *  @return  This %iterator, for chained operations.
+       *
+       *  This kind of %iterator doesn't really have a @a position in the
+       *  container (you can think of the position as being permanently at
+       *  the front, if you like).  Assigning a value to the %iterator will
+       *  always prepend the value to the front of the container.
+      */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      front_insert_iterator&
+      operator=(typename _Container::const_reference __value)
+      {
+	container->push_front(__value);
+	return *this;
+      }
+#else
+      front_insert_iterator&
+      operator=(const typename _Container::value_type& __value)
+      {
+	container->push_front(__value);
+	return *this;
+      }
+
+      front_insert_iterator&
+      operator=(typename _Container::value_type&& __value)
+      {
+	container->push_front(std::move(__value));
+	return *this;
+      }
+#endif
+
+      /// Simply returns *this.
+      front_insert_iterator&
+      operator*()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      front_insert_iterator&
+      operator++()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      front_insert_iterator
+      operator++(int)
+      { return *this; }
+    };
+
+  /**
+   *  @param  x  A container of arbitrary type.
+   *  @return  An instance of front_insert_iterator working on @p x.
+   *
+   *  This wrapper function helps in creating front_insert_iterator instances.
+   *  Typing the name of the %iterator requires knowing the precise full
+   *  type of the container, which can be tedious and impedes generic
+   *  programming.  Using this function lets you take advantage of automatic
+   *  template parameter deduction, making the compiler match the correct
+   *  types for you.
+  */
+  template<typename _Container>
+    inline front_insert_iterator<_Container>
+    front_inserter(_Container& __x)
+    { return front_insert_iterator<_Container>(__x); }
+
+  /**
+   *  @brief  Turns assignment into insertion.
+   *
+   *  These are output iterators, constructed from a container-of-T.
+   *  Assigning a T to the iterator inserts it in the container at the
+   *  %iterator's position, rather than overwriting the value at that
+   *  position.
+   *
+   *  (Sequences will actually insert a @e copy of the value before the
+   *  %iterator's position.)
+   *
+   *  Tip:  Using the inserter function to create these iterators can
+   *  save typing.
+  */
+  template<typename _Container>
+    class insert_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    protected:
+      _Container* container;
+      typename _Container::iterator iter;
+
+    public:
+      /// A nested typedef for the type of whatever container you used.
+      typedef _Container          container_type;
+
+      /**
+       *  The only way to create this %iterator is with a container and an
+       *  initial position (a normal %iterator into the container).
+      */
+      insert_iterator(_Container& __x, typename _Container::iterator __i)
+      : container(&__x), iter(__i) {}
+
+      /**
+       *  @param  value  An instance of whatever type
+       *                 container_type::const_reference is; presumably a
+       *                 reference-to-const T for container<T>.
+       *  @return  This %iterator, for chained operations.
+       *
+       *  This kind of %iterator maintains its own position in the
+       *  container.  Assigning a value to the %iterator will insert the
+       *  value into the container at the place before the %iterator.
+       *
+       *  The position is maintained such that subsequent assignments will
+       *  insert values immediately after one another.  For example,
+       *  @code
+       *     // vector v contains A and Z
+       *
+       *     insert_iterator i (v, ++v.begin());
+       *     i = 1;
+       *     i = 2;
+       *     i = 3;
+       *
+       *     // vector v contains A, 1, 2, 3, and Z
+       *  @endcode
+      */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      insert_iterator&
+      operator=(typename _Container::const_reference __value)
+      {
+	iter = container->insert(iter, __value);
+	++iter;
+	return *this;
+      }
+#else
+      insert_iterator&
+      operator=(const typename _Container::value_type& __value)
+      {
+	iter = container->insert(iter, __value);
+	++iter;
+	return *this;
+      }
+
+      insert_iterator&
+      operator=(typename _Container::value_type&& __value)
+      {
+	iter = container->insert(iter, std::move(__value));
+	++iter;
+	return *this;
+      }
+#endif
+
+      /// Simply returns *this.
+      insert_iterator&
+      operator*()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      insert_iterator&
+      operator++()
+      { return *this; }
+
+      /// Simply returns *this.  (This %iterator does not @a move.)
+      insert_iterator&
+      operator++(int)
+      { return *this; }
+    };
+
+  /**
+   *  @param  x  A container of arbitrary type.
+   *  @return  An instance of insert_iterator working on @p x.
+   *
+   *  This wrapper function helps in creating insert_iterator instances.
+   *  Typing the name of the %iterator requires knowing the precise full
+   *  type of the container, which can be tedious and impedes generic
+   *  programming.  Using this function lets you take advantage of automatic
+   *  template parameter deduction, making the compiler match the correct
+   *  types for you.
+  */
+  template<typename _Container, typename _Iterator>
+    inline insert_iterator<_Container>
+    inserter(_Container& __x, _Iterator __i)
+    {
+      return insert_iterator<_Container>(__x,
+					 typename _Container::iterator(__i));
+    }
+
+  // @} group iterators
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // This iterator adapter is @a normal in the sense that it does not
+  // change the semantics of any of the operators of its iterator
+  // parameter.  Its primary purpose is to convert an iterator that is
+  // not a class, e.g. a pointer, into an iterator that is a class.
+  // The _Container parameter exists solely so that different containers
+  // using this template can instantiate different types, even if the
+  // _Iterator parameter is the same.
+  using std::iterator_traits;
+  using std::iterator;
+  template<typename _Iterator, typename _Container>
+    class __normal_iterator
+    {
+    protected:
+      _Iterator _M_current;
+
+      typedef iterator_traits<_Iterator>		__traits_type;
+
+    public:
+      typedef _Iterator					iterator_type;
+      typedef typename __traits_type::iterator_category iterator_category;
+      typedef typename __traits_type::value_type  	value_type;
+      typedef typename __traits_type::difference_type 	difference_type;
+      typedef typename __traits_type::reference 	reference;
+      typedef typename __traits_type::pointer   	pointer;
+
+      _GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { }
+
+      explicit
+      __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+
+      // Allow iterator to const_iterator conversion
+      template<typename _Iter>
+        __normal_iterator(const __normal_iterator<_Iter,
+			  typename __enable_if<
+      	       (std::__are_same<_Iter, typename _Container::pointer>::__value),
+		      _Container>::__type>& __i)
+        : _M_current(__i.base()) { }
+
+      // Forward iterator requirements
+      reference
+      operator*() const
+      { return *_M_current; }
+
+      pointer
+      operator->() const
+      { return _M_current; }
+
+      __normal_iterator&
+      operator++()
+      {
+	++_M_current;
+	return *this;
+      }
+
+      __normal_iterator
+      operator++(int)
+      { return __normal_iterator(_M_current++); }
+
+      // Bidirectional iterator requirements
+      __normal_iterator&
+      operator--()
+      {
+	--_M_current;
+	return *this;
+      }
+
+      __normal_iterator
+      operator--(int)
+      { return __normal_iterator(_M_current--); }
+
+      // Random access iterator requirements
+      reference
+      operator[](const difference_type& __n) const
+      { return _M_current[__n]; }
+
+      __normal_iterator&
+      operator+=(const difference_type& __n)
+      { _M_current += __n; return *this; }
+
+      __normal_iterator
+      operator+(const difference_type& __n) const
+      { return __normal_iterator(_M_current + __n); }
+
+      __normal_iterator&
+      operator-=(const difference_type& __n)
+      { _M_current -= __n; return *this; }
+
+      __normal_iterator
+      operator-(const difference_type& __n) const
+      { return __normal_iterator(_M_current - __n); }
+
+      const _Iterator&
+      base() const
+      { return _M_current; }
+    };
+
+  // Note: In what follows, the left- and right-hand-side iterators are
+  // allowed to vary in types (conceptually in cv-qualification) so that
+  // comparison between cv-qualified and non-cv-qualified iterators be
+  // valid.  However, the greedy and unfriendly operators in std::rel_ops
+  // will make overload resolution ambiguous (when in scope) if we don't
+  // provide overloads whose operands are of the same type.  Can someone
+  // remind me what generic programming is about? -- Gaby
+
+  // Forward iterator requirements
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	       const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() == __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
+	       const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() == __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	       const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() != __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
+	       const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() != __rhs.base(); }
+
+  // Random access iterator requirements
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	      const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() < __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
+	      const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() < __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	      const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() > __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
+	      const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() > __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	       const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() <= __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
+	       const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() <= __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+    inline bool
+    operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	       const __normal_iterator<_IteratorR, _Container>& __rhs)
+    { return __lhs.base() >= __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline bool
+    operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
+	       const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() >= __rhs.base(); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // According to the resolution of DR179 not only the various comparison
+  // operators but also operator- must accept mixed iterator/const_iterator
+  // parameters.
+  template<typename _IteratorL, typename _IteratorR, typename _Container>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    // DR 685.
+    inline auto
+    operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	      const __normal_iterator<_IteratorR, _Container>& __rhs)
+    -> decltype(__lhs.base() - __rhs.base())
+#else
+    inline typename __normal_iterator<_IteratorL, _Container>::difference_type
+    operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
+	      const __normal_iterator<_IteratorR, _Container>& __rhs)
+#endif
+    { return __lhs.base() - __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline typename __normal_iterator<_Iterator, _Container>::difference_type
+    operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
+	      const __normal_iterator<_Iterator, _Container>& __rhs)
+    { return __lhs.base() - __rhs.base(); }
+
+  template<typename _Iterator, typename _Container>
+    inline __normal_iterator<_Iterator, _Container>
+    operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
+	      __n, const __normal_iterator<_Iterator, _Container>& __i)
+    { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup iterators
+   * @{
+   */
+
+  // 24.4.3  Move iterators
+  /**
+   *  Class template move_iterator is an iterator adapter with the same
+   *  behavior as the underlying iterator except that its dereference
+   *  operator implicitly converts the value returned by the underlying
+   *  iterator's dereference operator to an rvalue reference.  Some
+   *  generic algorithms can be called with move iterators to replace
+   *  copying with moving.
+   */
+  template<typename _Iterator>
+    class move_iterator
+    {
+    protected:
+      _Iterator _M_current;
+
+      typedef iterator_traits<_Iterator>		__traits_type;
+
+    public:
+      typedef _Iterator					iterator_type;
+      typedef typename __traits_type::iterator_category iterator_category;
+      typedef typename __traits_type::value_type  	value_type;
+      typedef typename __traits_type::difference_type	difference_type;
+      // NB: DR 680.
+      typedef _Iterator					pointer;
+      typedef value_type&&				reference;
+
+      move_iterator()
+      : _M_current() { }
+
+      explicit
+      move_iterator(iterator_type __i)
+      : _M_current(__i) { }
+
+      template<typename _Iter>
+	move_iterator(const move_iterator<_Iter>& __i)
+	: _M_current(__i.base()) { }
+
+      iterator_type
+      base() const
+      { return _M_current; }
+
+      reference
+      operator*() const
+      { return std::move(*_M_current); }
+
+      pointer
+      operator->() const
+      { return _M_current; }
+
+      move_iterator&
+      operator++()
+      {
+	++_M_current;
+	return *this;
+      }
+
+      move_iterator
+      operator++(int)
+      {
+	move_iterator __tmp = *this;
+	++_M_current;
+	return __tmp;
+      }
+
+      move_iterator&
+      operator--()
+      {
+	--_M_current;
+	return *this;
+      }
+
+      move_iterator
+      operator--(int)
+      {
+	move_iterator __tmp = *this;
+	--_M_current;
+	return __tmp;
+      }
+
+      move_iterator
+      operator+(difference_type __n) const
+      { return move_iterator(_M_current + __n); }
+
+      move_iterator&
+      operator+=(difference_type __n)
+      {
+	_M_current += __n;
+	return *this;
+      }
+
+      move_iterator
+      operator-(difference_type __n) const
+      { return move_iterator(_M_current - __n); }
+    
+      move_iterator&
+      operator-=(difference_type __n)
+      { 
+	_M_current -= __n;
+	return *this;
+      }
+
+      reference
+      operator[](difference_type __n) const
+      { return std::move(_M_current[__n]); }
+    };
+
+  // Note: See __normal_iterator operators note from Gaby to understand
+  // why there are always 2 versions for most of the move_iterator
+  // operators.
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator==(const move_iterator<_IteratorL>& __x,
+	       const move_iterator<_IteratorR>& __y)
+    { return __x.base() == __y.base(); }
+
+  template<typename _Iterator>
+    inline bool
+    operator==(const move_iterator<_Iterator>& __x,
+	       const move_iterator<_Iterator>& __y)
+    { return __x.base() == __y.base(); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator!=(const move_iterator<_IteratorL>& __x,
+	       const move_iterator<_IteratorR>& __y)
+    { return !(__x == __y); }
+
+  template<typename _Iterator>
+    inline bool
+    operator!=(const move_iterator<_Iterator>& __x,
+	       const move_iterator<_Iterator>& __y)
+    { return !(__x == __y); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator<(const move_iterator<_IteratorL>& __x,
+	      const move_iterator<_IteratorR>& __y)
+    { return __x.base() < __y.base(); }
+
+  template<typename _Iterator>
+    inline bool
+    operator<(const move_iterator<_Iterator>& __x,
+	      const move_iterator<_Iterator>& __y)
+    { return __x.base() < __y.base(); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator<=(const move_iterator<_IteratorL>& __x,
+	       const move_iterator<_IteratorR>& __y)
+    { return !(__y < __x); }
+
+  template<typename _Iterator>
+    inline bool
+    operator<=(const move_iterator<_Iterator>& __x,
+	       const move_iterator<_Iterator>& __y)
+    { return !(__y < __x); }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator>(const move_iterator<_IteratorL>& __x,
+	      const move_iterator<_IteratorR>& __y)
+    { return __y < __x; }
+
+  template<typename _Iterator>
+    inline bool
+    operator>(const move_iterator<_Iterator>& __x,
+	      const move_iterator<_Iterator>& __y)
+    { return __y < __x; }
+
+  template<typename _IteratorL, typename _IteratorR>
+    inline bool
+    operator>=(const move_iterator<_IteratorL>& __x,
+	       const move_iterator<_IteratorR>& __y)
+    { return !(__x < __y); }
+
+  template<typename _Iterator>
+    inline bool
+    operator>=(const move_iterator<_Iterator>& __x,
+	       const move_iterator<_Iterator>& __y)
+    { return !(__x < __y); }
+
+  // DR 685.
+  template<typename _IteratorL, typename _IteratorR>
+    inline auto
+    operator-(const move_iterator<_IteratorL>& __x,
+	      const move_iterator<_IteratorR>& __y)
+    -> decltype(__x.base() - __y.base())
+    { return __x.base() - __y.base(); }
+
+  template<typename _Iterator>
+    inline auto
+    operator-(const move_iterator<_Iterator>& __x,
+	      const move_iterator<_Iterator>& __y)
+    -> decltype(__x.base() - __y.base())
+    { return __x.base() - __y.base(); }
+
+  template<typename _Iterator>
+    inline move_iterator<_Iterator>
+    operator+(typename move_iterator<_Iterator>::difference_type __n,
+	      const move_iterator<_Iterator>& __x)
+    { return __x + __n; }
+
+  template<typename _Iterator>
+    inline move_iterator<_Iterator>
+    make_move_iterator(const _Iterator& __i)
+    { return move_iterator<_Iterator>(__i); }
+
+  // @} group iterators
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter)
+#else
+#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter)
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_funcs.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_funcs.h
new file mode 100644
index 000000000..836aa9223
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_funcs.h
@@ -0,0 +1,203 @@
+// Functions used by iterators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_iterator_base_funcs.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ *
+ *  This file contains all of the general iterator-related utility
+ *  functions, such as distance() and advance().
+ */
+
+#ifndef _STL_ITERATOR_BASE_FUNCS_H
+#define _STL_ITERATOR_BASE_FUNCS_H 1
+
+#pragma GCC system_header
+
+#include <bits/concept_check.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _InputIterator>
+    inline typename iterator_traits<_InputIterator>::difference_type
+    __distance(_InputIterator __first, _InputIterator __last,
+               input_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+
+      typename iterator_traits<_InputIterator>::difference_type __n = 0;
+      while (__first != __last)
+	{
+	  ++__first;
+	  ++__n;
+	}
+      return __n;
+    }
+
+  template<typename _RandomAccessIterator>
+    inline typename iterator_traits<_RandomAccessIterator>::difference_type
+    __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
+               random_access_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      return __last - __first;
+    }
+
+  /**
+   *  @brief A generalization of pointer arithmetic.
+   *  @param  first  An input iterator.
+   *  @param  last  An input iterator.
+   *  @return  The distance between them.
+   *
+   *  Returns @c n such that first + n == last.  This requires that @p last
+   *  must be reachable from @p first.  Note that @c n may be negative.
+   *
+   *  For random access iterators, this uses their @c + and @c - operations
+   *  and are constant time.  For other %iterator classes they are linear time.
+  */
+  template<typename _InputIterator>
+    inline typename iterator_traits<_InputIterator>::difference_type
+    distance(_InputIterator __first, _InputIterator __last)
+    {
+      // concept requirements -- taken care of in __distance
+      return std::__distance(__first, __last,
+			     std::__iterator_category(__first));
+    }
+
+  template<typename _InputIterator, typename _Distance>
+    inline void
+    __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      while (__n--)
+	++__i;
+    }
+
+  template<typename _BidirectionalIterator, typename _Distance>
+    inline void
+    __advance(_BidirectionalIterator& __i, _Distance __n,
+	      bidirectional_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BidirectionalIteratorConcept<
+				  _BidirectionalIterator>)
+      if (__n > 0)
+        while (__n--)
+	  ++__i;
+      else
+        while (__n++)
+	  --__i;
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance>
+    inline void
+    __advance(_RandomAccessIterator& __i, _Distance __n,
+              random_access_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __i += __n;
+    }
+
+  /**
+   *  @brief A generalization of pointer arithmetic.
+   *  @param  i  An input iterator.
+   *  @param  n  The @a delta by which to change @p i.
+   *  @return  Nothing.
+   *
+   *  This increments @p i by @p n.  For bidirectional and random access
+   *  iterators, @p n may be negative, in which case @p i is decremented.
+   *
+   *  For random access iterators, this uses their @c + and @c - operations
+   *  and are constant time.  For other %iterator classes they are linear time.
+  */
+  template<typename _InputIterator, typename _Distance>
+    inline void
+    advance(_InputIterator& __i, _Distance __n)
+    {
+      // concept requirements -- taken care of in __advance
+      typename iterator_traits<_InputIterator>::difference_type __d = __n;
+      std::__advance(__i, __d, std::__iterator_category(__i));
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+  template<typename _ForwardIterator>
+    inline _ForwardIterator
+    next(_ForwardIterator __x, typename
+	 iterator_traits<_ForwardIterator>::difference_type __n = 1)
+    {
+      std::advance(__x, __n);
+      return __x;
+    }
+
+  template<typename _BidirectionalIterator>
+    inline _BidirectionalIterator
+    prev(_BidirectionalIterator __x, typename
+	 iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 
+    {
+      std::advance(__x, -__n);
+      return __x;
+    }
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_ITERATOR_BASE_FUNCS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_types.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_types.h
new file mode 100644
index 000000000..9944dc441
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_iterator_base_types.h
@@ -0,0 +1,229 @@
+// Types used in iterator implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_iterator_base_types.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ *
+ *  This file contains all of the general iterator-related utility types,
+ *  such as iterator_traits and struct iterator.
+ */
+
+#ifndef _STL_ITERATOR_BASE_TYPES_H
+#define _STL_ITERATOR_BASE_TYPES_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <type_traits>  // For _GLIBCXX_HAS_NESTED_TYPE
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @defgroup iterators Iterators
+   *  Abstractions for uniform iterating through various underlying types.
+  */
+  //@{ 
+
+  /**
+   *  @defgroup iterator_tags Iterator Tags
+   *  These are empty types, used to distinguish different iterators.  The
+   *  distinction is not made by what they contain, but simply by what they
+   *  are.  Different underlying algorithms can then be used based on the
+   *  different operations supported by different iterator types.
+  */
+  //@{ 
+  ///  Marking input iterators.
+  struct input_iterator_tag { };
+
+  ///  Marking output iterators.
+  struct output_iterator_tag { };
+
+  /// Forward iterators support a superset of input iterator operations.
+  struct forward_iterator_tag : public input_iterator_tag { };
+
+  /// Bidirectional iterators support a superset of forward iterator
+  /// operations.
+  struct bidirectional_iterator_tag : public forward_iterator_tag { };
+
+  /// Random-access iterators support a superset of bidirectional
+  /// iterator operations.
+  struct random_access_iterator_tag : public bidirectional_iterator_tag { };
+  //@}
+
+  /**
+   *  @brief  Common %iterator class.
+   *
+   *  This class does nothing but define nested typedefs.  %Iterator classes
+   *  can inherit from this class to save some work.  The typedefs are then
+   *  used in specializations and overloading.
+   *
+   *  In particular, there are no default implementations of requirements
+   *  such as @c operator++ and the like.  (How could there be?)
+  */
+  template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
+           typename _Pointer = _Tp*, typename _Reference = _Tp&>
+    struct iterator
+    {
+      /// One of the @link iterator_tags tag types@endlink.
+      typedef _Category  iterator_category;
+      /// The type "pointed to" by the iterator.
+      typedef _Tp        value_type;
+      /// Distance between iterators is represented as this type.
+      typedef _Distance  difference_type;
+      /// This type represents a pointer-to-value_type.
+      typedef _Pointer   pointer;
+      /// This type represents a reference-to-value_type.
+      typedef _Reference reference;
+    };
+
+  /**
+   *  @brief  Traits class for iterators.
+   *
+   *  This class does nothing but define nested typedefs.  The general
+   *  version simply @a forwards the nested typedefs from the Iterator
+   *  argument.  Specialized versions for pointers and pointers-to-const
+   *  provide tighter, more correct semantics.
+  */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_HAS_NESTED_TYPE(iterator_category)
+
+  template<typename _Iterator,
+	   bool = __has_iterator_category<_Iterator>::value>
+    struct __iterator_traits { };
+
+  template<typename _Iterator>
+    struct __iterator_traits<_Iterator, true>
+    {
+      typedef typename _Iterator::iterator_category iterator_category;
+      typedef typename _Iterator::value_type        value_type;
+      typedef typename _Iterator::difference_type   difference_type;
+      typedef typename _Iterator::pointer           pointer;
+      typedef typename _Iterator::reference         reference;
+    };
+
+  template<typename _Iterator>
+    struct iterator_traits
+    : public __iterator_traits<_Iterator> { };
+#else
+  template<typename _Iterator>
+    struct iterator_traits
+    {
+      typedef typename _Iterator::iterator_category iterator_category;
+      typedef typename _Iterator::value_type        value_type;
+      typedef typename _Iterator::difference_type   difference_type;
+      typedef typename _Iterator::pointer           pointer;
+      typedef typename _Iterator::reference         reference;
+    };
+#endif
+
+  /// Partial specialization for pointer types.
+  template<typename _Tp>
+    struct iterator_traits<_Tp*>
+    {
+      typedef random_access_iterator_tag iterator_category;
+      typedef _Tp                         value_type;
+      typedef ptrdiff_t                   difference_type;
+      typedef _Tp*                        pointer;
+      typedef _Tp&                        reference;
+    };
+
+  /// Partial specialization for const pointer types.
+  template<typename _Tp>
+    struct iterator_traits<const _Tp*>
+    {
+      typedef random_access_iterator_tag iterator_category;
+      typedef _Tp                         value_type;
+      typedef ptrdiff_t                   difference_type;
+      typedef const _Tp*                  pointer;
+      typedef const _Tp&                  reference;
+    };
+
+  /**
+   *  This function is not a part of the C++ standard but is syntactic
+   *  sugar for internal library use only.
+  */
+  template<typename _Iter>
+    inline typename iterator_traits<_Iter>::iterator_category
+    __iterator_category(const _Iter&)
+    { return typename iterator_traits<_Iter>::iterator_category(); }
+
+  //@}
+
+  // If _Iterator has a base returns it otherwise _Iterator is returned
+  // untouched
+  template<typename _Iterator, bool _HasBase>
+    struct _Iter_base
+    {
+      typedef _Iterator iterator_type;
+      static iterator_type _S_base(_Iterator __it)
+      { return __it; }
+    };
+
+  template<typename _Iterator>
+    struct _Iter_base<_Iterator, true>
+    {
+      typedef typename _Iterator::iterator_type iterator_type;
+      static iterator_type _S_base(_Iterator __it)
+      { return __it.base(); }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_ITERATOR_BASE_TYPES_H */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_list.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_list.h
new file mode 100644
index 000000000..126de00b3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_list.h
@@ -0,0 +1,1630 @@
+// List implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_list.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{list}
+ */
+
+#ifndef _STL_LIST_H
+#define _STL_LIST_H 1
+
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    // Supporting structures are split into common and templated
+    // types; the latter publicly inherits from the former in an
+    // effort to reduce code duplication.  This results in some
+    // "needless" static_cast'ing later on, but it's all safe
+    // downcasting.
+
+    /// Common part of a node in the %list. 
+    struct _List_node_base
+    {
+      _List_node_base* _M_next;
+      _List_node_base* _M_prev;
+      
+      static void
+      swap(_List_node_base& __x, _List_node_base& __y) throw ();
+      
+      void
+      _M_transfer(_List_node_base* const __first,
+		  _List_node_base* const __last) throw ();
+      
+      void
+      _M_reverse() throw ();
+      
+      void
+      _M_hook(_List_node_base* const __position) throw ();
+      
+      void
+      _M_unhook() throw ();
+    };
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace detail
+
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /// An actual node in the %list.
+  template<typename _Tp>
+    struct _List_node : public __detail::_List_node_base
+    {
+      ///< User's data.
+      _Tp _M_data;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        _List_node(_Args&&... __args)
+	: __detail::_List_node_base(), _M_data(std::forward<_Args>(__args)...) 
+        { }
+#endif
+    };
+
+  /**
+   *  @brief A list::iterator.
+   *
+   *  All the functions are op overloads.
+  */
+  template<typename _Tp>
+    struct _List_iterator
+    {
+      typedef _List_iterator<_Tp>                _Self;
+      typedef _List_node<_Tp>                    _Node;
+
+      typedef ptrdiff_t                          difference_type;
+      typedef std::bidirectional_iterator_tag    iterator_category;
+      typedef _Tp                                value_type;
+      typedef _Tp*                               pointer;
+      typedef _Tp&                               reference;
+
+      _List_iterator()
+      : _M_node() { }
+
+      explicit
+      _List_iterator(__detail::_List_node_base* __x)
+      : _M_node(__x) { }
+
+      // Must downcast from _List_node_base to _List_node to get to _M_data.
+      reference
+      operator*() const
+      { return static_cast<_Node*>(_M_node)->_M_data; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); }
+
+      _Self&
+      operator++()
+      {
+	_M_node = _M_node->_M_next;
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _M_node->_M_next;
+	return __tmp;
+      }
+
+      _Self&
+      operator--()
+      {
+	_M_node = _M_node->_M_prev;
+	return *this;
+      }
+
+      _Self
+      operator--(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _M_node->_M_prev;
+	return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      // The only member points to the %list element.
+      __detail::_List_node_base* _M_node;
+    };
+
+  /**
+   *  @brief A list::const_iterator.
+   *
+   *  All the functions are op overloads.
+  */
+  template<typename _Tp>
+    struct _List_const_iterator
+    {
+      typedef _List_const_iterator<_Tp>          _Self;
+      typedef const _List_node<_Tp>              _Node;
+      typedef _List_iterator<_Tp>                iterator;
+
+      typedef ptrdiff_t                          difference_type;
+      typedef std::bidirectional_iterator_tag    iterator_category;
+      typedef _Tp                                value_type;
+      typedef const _Tp*                         pointer;
+      typedef const _Tp&                         reference;
+
+      _List_const_iterator()
+      : _M_node() { }
+
+      explicit
+      _List_const_iterator(const __detail::_List_node_base* __x)
+      : _M_node(__x) { }
+
+      _List_const_iterator(const iterator& __x)
+      : _M_node(__x._M_node) { }
+
+      // Must downcast from List_node_base to _List_node to get to
+      // _M_data.
+      reference
+      operator*() const
+      { return static_cast<_Node*>(_M_node)->_M_data; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); }
+
+      _Self&
+      operator++()
+      {
+	_M_node = _M_node->_M_next;
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _M_node->_M_next;
+	return __tmp;
+      }
+
+      _Self&
+      operator--()
+      {
+	_M_node = _M_node->_M_prev;
+	return *this;
+      }
+
+      _Self
+      operator--(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _M_node->_M_prev;
+	return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      // The only member points to the %list element.
+      const __detail::_List_node_base* _M_node;
+    };
+
+  template<typename _Val>
+    inline bool
+    operator==(const _List_iterator<_Val>& __x,
+	       const _List_const_iterator<_Val>& __y)
+    { return __x._M_node == __y._M_node; }
+
+  template<typename _Val>
+    inline bool
+    operator!=(const _List_iterator<_Val>& __x,
+               const _List_const_iterator<_Val>& __y)
+    { return __x._M_node != __y._M_node; }
+
+
+  /// See bits/stl_deque.h's _Deque_base for an explanation.
+  template<typename _Tp, typename _Alloc>
+    class _List_base
+    {
+    protected:
+      // NOTA BENE
+      // The stored instance is not actually of "allocator_type"'s
+      // type.  Instead we rebind the type to
+      // Allocator<List_node<Tp>>, which according to [20.1.5]/4
+      // should probably be the same.  List_node<Tp> is not the same
+      // size as Tp (it's two pointers larger), and specializations on
+      // Tp may go unused because List_node<Tp> is being bound
+      // instead.
+      //
+      // We put this to the test in the constructors and in
+      // get_allocator, where we use conversions between
+      // allocator_type and _Node_alloc_type. The conversion is
+      // required by table 32 in [20.1.5].
+      typedef typename _Alloc::template rebind<_List_node<_Tp> >::other
+        _Node_alloc_type;
+
+      typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+      struct _List_impl 
+      : public _Node_alloc_type
+      {
+	__detail::_List_node_base _M_node;
+
+	_List_impl()
+	: _Node_alloc_type(), _M_node()
+	{ }
+
+	_List_impl(const _Node_alloc_type& __a)
+	: _Node_alloc_type(__a), _M_node()
+	{ }
+      };
+
+      _List_impl _M_impl;
+
+      _List_node<_Tp>*
+      _M_get_node()
+      { return _M_impl._Node_alloc_type::allocate(1); }
+      
+      void
+      _M_put_node(_List_node<_Tp>* __p)
+      { _M_impl._Node_alloc_type::deallocate(__p, 1); }
+      
+  public:
+      typedef _Alloc allocator_type;
+
+      _Node_alloc_type&
+      _M_get_Node_allocator()
+      { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
+
+      const _Node_alloc_type&
+      _M_get_Node_allocator() const
+      { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
+
+      _Tp_alloc_type
+      _M_get_Tp_allocator() const
+      { return _Tp_alloc_type(_M_get_Node_allocator()); }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_get_Node_allocator()); }
+
+      _List_base()
+      : _M_impl()
+      { _M_init(); }
+
+      _List_base(const allocator_type& __a)
+      : _M_impl(__a)
+      { _M_init(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _List_base(_List_base&& __x)
+      : _M_impl(__x._M_get_Node_allocator())
+      {
+	_M_init();
+	__detail::_List_node_base::swap(this->_M_impl._M_node, 
+					__x._M_impl._M_node);	
+      }
+#endif
+
+      // This is what actually destroys the list.
+      ~_List_base()
+      { _M_clear(); }
+
+      void
+      _M_clear();
+
+      void
+      _M_init()
+      {
+        this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
+        this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
+      }
+    };
+
+  /**
+   *  @brief A standard container with linear time access to elements,
+   *  and fixed time insertion/deletion at any point in the sequence.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>, including the
+   *  <a href="tables.html#68">optional sequence requirements</a> with the
+   *  %exception of @c at and @c operator[].
+   *
+   *  This is a @e doubly @e linked %list.  Traversal up and down the
+   *  %list requires linear time, but adding and removing elements (or
+   *  @e nodes) is done in constant time, regardless of where the
+   *  change takes place.  Unlike std::vector and std::deque,
+   *  random-access iterators are not provided, so subscripting ( @c
+   *  [] ) access is not allowed.  For algorithms which only need
+   *  sequential access, this lack makes no difference.
+   *
+   *  Also unlike the other standard containers, std::list provides
+   *  specialized algorithms %unique to linked lists, such as
+   *  splicing, sorting, and in-place reversal.
+   *
+   *  A couple points on memory allocation for list<Tp>:
+   *
+   *  First, we never actually allocate a Tp, we allocate
+   *  List_node<Tp>'s and trust [20.1.5]/4 to DTRT.  This is to ensure
+   *  that after elements from %list<X,Alloc1> are spliced into
+   *  %list<X,Alloc2>, destroying the memory of the second %list is a
+   *  valid operation, i.e., Alloc1 giveth and Alloc2 taketh away.
+   *
+   *  Second, a %list conceptually represented as
+   *  @code
+   *    A <---> B <---> C <---> D
+   *  @endcode
+   *  is actually circular; a link exists between A and D.  The %list
+   *  class holds (as its only data member) a private list::iterator
+   *  pointing to @e D, not to @e A!  To get to the head of the %list,
+   *  we start at the tail and move forward by one.  When this member
+   *  iterator's next/previous pointers refer to itself, the %list is
+   *  %empty. 
+  */
+  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+    class list : protected _List_base<_Tp, _Alloc>
+    {
+      // concept requirements
+      typedef typename _Alloc::value_type                _Alloc_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
+
+      typedef _List_base<_Tp, _Alloc>                    _Base;
+      typedef typename _Base::_Tp_alloc_type		 _Tp_alloc_type;
+
+    public:
+      typedef _Tp                                        value_type;
+      typedef typename _Tp_alloc_type::pointer           pointer;
+      typedef typename _Tp_alloc_type::const_pointer     const_pointer;
+      typedef typename _Tp_alloc_type::reference         reference;
+      typedef typename _Tp_alloc_type::const_reference   const_reference;
+      typedef _List_iterator<_Tp>                        iterator;
+      typedef _List_const_iterator<_Tp>                  const_iterator;
+      typedef std::reverse_iterator<const_iterator>      const_reverse_iterator;
+      typedef std::reverse_iterator<iterator>            reverse_iterator;
+      typedef size_t                                     size_type;
+      typedef ptrdiff_t                                  difference_type;
+      typedef _Alloc                                     allocator_type;
+
+    protected:
+      // Note that pointers-to-_Node's can be ctor-converted to
+      // iterator types.
+      typedef _List_node<_Tp>				 _Node;
+
+      using _Base::_M_impl;
+      using _Base::_M_put_node;
+      using _Base::_M_get_node;
+      using _Base::_M_get_Tp_allocator;
+      using _Base::_M_get_Node_allocator;
+
+      /**
+       *  @param  x  An instance of user data.
+       *
+       *  Allocates space for a new node and constructs a copy of @a x in it.
+       */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      _Node*
+      _M_create_node(const value_type& __x)
+      {
+	_Node* __p = this->_M_get_node();
+	__try
+	  {
+	    _M_get_Tp_allocator().construct
+	      (std::__addressof(__p->_M_data), __x);
+	  }
+	__catch(...)
+	  {
+	    _M_put_node(__p);
+	    __throw_exception_again;
+	  }
+	return __p;
+      }
+#else
+      template<typename... _Args>
+        _Node*
+        _M_create_node(_Args&&... __args)
+	{
+	  _Node* __p = this->_M_get_node();
+	  __try
+	    {
+	      _M_get_Node_allocator().construct(__p,
+						std::forward<_Args>(__args)...);
+	    }
+	  __catch(...)
+	    {
+	      _M_put_node(__p);
+	      __throw_exception_again;
+	    }
+	  return __p;
+	}
+#endif
+
+    public:
+      // [23.2.2.1] construct/copy/destroy
+      // (assign() and get_allocator() are also listed in this section)
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      list()
+      : _Base() { }
+
+      /**
+       *  @brief  Creates a %list with no elements.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      list(const allocator_type& __a)
+      : _Base(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Creates a %list with default constructed elements.
+       *  @param  n  The number of elements to initially create.
+       *
+       *  This constructor fills the %list with @a n default
+       *  constructed elements.
+       */
+      explicit
+      list(size_type __n)
+      : _Base()
+      { _M_default_initialize(__n); }
+
+      /**
+       *  @brief  Creates a %list with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator object.
+       *
+       *  This constructor fills the %list with @a n copies of @a value.
+       */
+      list(size_type __n, const value_type& __value,
+	   const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      { _M_fill_initialize(__n, __value); }
+#else
+      /**
+       *  @brief  Creates a %list with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator object.
+       *
+       *  This constructor fills the %list with @a n copies of @a value.
+       */
+      explicit
+      list(size_type __n, const value_type& __value = value_type(),
+	   const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      { _M_fill_initialize(__n, __value); }
+#endif
+
+      /**
+       *  @brief  %List copy constructor.
+       *  @param  x  A %list of identical element and allocator types.
+       *
+       *  The newly-created %list uses a copy of the allocation object used
+       *  by @a x.
+       */
+      list(const list& __x)
+      : _Base(__x._M_get_Node_allocator())
+      { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %List move constructor.
+       *  @param  x  A %list of identical element and allocator types.
+       *
+       *  The newly-created %list contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %list.
+       */
+      list(list&& __x)
+      : _Base(std::move(__x)) { }
+
+      /**
+       *  @brief  Builds a %list from an initializer_list
+       *  @param  l  An initializer_list of value_type.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %list consisting of copies of the elements in the
+       *  initializer_list @a l.  This is linear in l.size().
+       */
+      list(initializer_list<value_type> __l,
+           const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); }
+#endif
+
+      /**
+       *  @brief  Builds a %list from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %list consisting of copies of the elements from
+       *  [@a first,@a last).  This is linear in N (where N is
+       *  distance(@a first,@a last)).
+       */
+      template<typename _InputIterator>
+        list(_InputIterator __first, _InputIterator __last,
+	     const allocator_type& __a = allocator_type())
+        : _Base(__a)
+        { 
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_initialize_dispatch(__first, __last, _Integral());
+	}
+
+      /**
+       *  No explicit dtor needed as the _Base dtor takes care of
+       *  things.  The _Base dtor only erases the elements, and note
+       *  that if the elements themselves are pointers, the pointed-to
+       *  memory is not touched in any way.  Managing the pointer is
+       *  the user's responsibility.
+       */
+
+      /**
+       *  @brief  %List assignment operator.
+       *  @param  x  A %list of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy
+       *  constructor, the allocator object is not copied.
+       */
+      list&
+      operator=(const list& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %List move assignment operator.
+       *  @param  x  A %list of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this %list (without copying).
+       *  @a x is a valid, but unspecified %list
+       */
+      list&
+      operator=(list&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  %List initializer list assignment operator.
+       *  @param  l  An initializer_list of value_type.
+       *
+       *  Replace the contents of the %list with copies of the elements
+       *  in the initializer_list @a l.  This is linear in l.size().
+       */
+      list&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->assign(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /**
+       *  @brief  Assigns a given value to a %list.
+       *  @param  n  Number of elements to be assigned.
+       *  @param  val  Value to be assigned.
+       *
+       *  This function fills a %list with @a n copies of the given
+       *  value.  Note that the assignment completely changes the %list
+       *  and that the resulting %list's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      void
+      assign(size_type __n, const value_type& __val)
+      { _M_fill_assign(__n, __val); }
+
+      /**
+       *  @brief  Assigns a range to a %list.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function fills a %list with copies of the elements in the
+       *  range [@a first,@a last).
+       *
+       *  Note that the assignment completely changes the %list and
+       *  that the resulting %list's size is the same as the number of
+       *  elements assigned.  Old data may be lost.
+       */
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_assign_dispatch(__first, __last, _Integral());
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Assigns an initializer_list to a %list.
+       *  @param  l  An initializer_list of value_type.
+       *
+       *  Replace the contents of the %list with copies of the elements
+       *  in the initializer_list @a l.  This is linear in l.size().
+       */
+      void
+      assign(initializer_list<value_type> __l)
+      { this->assign(__l.begin(), __l.end()); }
+#endif
+
+      /// Get a copy of the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return _Base::get_allocator(); }
+
+      // iterators
+      /**
+       *  Returns a read/write iterator that points to the first element in the
+       *  %list.  Iteration is done in ordinary element order.
+       */
+      iterator
+      begin()
+      { return iterator(this->_M_impl._M_node._M_next); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the
+       *  first element in the %list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      begin() const
+      { return const_iterator(this->_M_impl._M_node._M_next); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  element in the %list.  Iteration is done in ordinary element
+       *  order.
+       */
+      iterator
+      end()
+      { return iterator(&this->_M_impl._M_node); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      end() const
+      { return const_iterator(&this->_M_impl._M_node); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the last
+       *  element in the %list.  Iteration is done in reverse element
+       *  order.
+       */
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to
+       *  the last element in the %list.  Iteration is done in reverse
+       *  element order.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one
+       *  before the first element in the %list.  Iteration is done in
+       *  reverse element order.
+       */
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first element in the %list.  Iteration is done in reverse
+       *  element order.
+       */
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the
+       *  first element in the %list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      cbegin() const
+      { return const_iterator(this->_M_impl._M_node._M_next); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %list.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      cend() const
+      { return const_iterator(&this->_M_impl._M_node); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to
+       *  the last element in the %list.  Iteration is done in reverse
+       *  element order.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first element in the %list.  Iteration is done in reverse
+       *  element order.
+       */
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // [23.2.2.2] capacity
+      /**
+       *  Returns true if the %list is empty.  (Thus begin() would equal
+       *  end().)
+       */
+      bool
+      empty() const
+      { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
+
+      /**  Returns the number of elements in the %list.  */
+      size_type
+      size() const
+      { return std::distance(begin(), end()); }
+
+      /**  Returns the size() of the largest possible %list.  */
+      size_type
+      max_size() const
+      { return _M_get_Node_allocator().max_size(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief Resizes the %list to the specified number of elements.
+       *  @param new_size Number of elements the %list should contain.
+       *
+       *  This function will %resize the %list to the specified number
+       *  of elements.  If the number is smaller than the %list's
+       *  current size the %list is truncated, otherwise default
+       *  constructed elements are appended.
+       */
+      void
+      resize(size_type __new_size);
+
+      /**
+       *  @brief Resizes the %list to the specified number of elements.
+       *  @param new_size Number of elements the %list should contain.
+       *  @param x Data with which new elements should be populated.
+       *
+       *  This function will %resize the %list to the specified number
+       *  of elements.  If the number is smaller than the %list's
+       *  current size the %list is truncated, otherwise the %list is
+       *  extended and new elements are populated with given data.
+       */
+      void
+      resize(size_type __new_size, const value_type& __x);
+#else
+      /**
+       *  @brief Resizes the %list to the specified number of elements.
+       *  @param new_size Number of elements the %list should contain.
+       *  @param x Data with which new elements should be populated.
+       *
+       *  This function will %resize the %list to the specified number
+       *  of elements.  If the number is smaller than the %list's
+       *  current size the %list is truncated, otherwise the %list is
+       *  extended and new elements are populated with given data.
+       */
+      void
+      resize(size_type __new_size, value_type __x = value_type());
+#endif
+
+      // element access
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %list.
+       */
+      reference
+      front()
+      { return *begin(); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %list.
+       */
+      const_reference
+      front() const
+      { return *begin(); }
+
+      /**
+       *  Returns a read/write reference to the data at the last element
+       *  of the %list.
+       */
+      reference
+      back()
+      { 
+	iterator __tmp = end();
+	--__tmp;
+	return *__tmp;
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the last
+       *  element of the %list.
+       */
+      const_reference
+      back() const
+      { 
+	const_iterator __tmp = end();
+	--__tmp;
+	return *__tmp;
+      }
+
+      // [23.2.2.3] modifiers
+      /**
+       *  @brief  Add data to the front of the %list.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the front of the %list and assigns the given data
+       *  to it.  Due to the nature of a %list this operation can be
+       *  done in constant time, and does not invalidate iterators and
+       *  references.
+       */
+      void
+      push_front(const value_type& __x)
+      { this->_M_insert(begin(), __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_front(value_type&& __x)
+      { this->_M_insert(begin(), std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_front(_Args&&... __args)
+        { this->_M_insert(begin(), std::forward<_Args>(__args)...); }
+#endif
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical stack operation.  It shrinks the %list by
+       *  one.  Due to the nature of a %list this operation can be done
+       *  in constant time, and only invalidates iterators/references to
+       *  the element being removed.
+       *
+       *  Note that no data is returned, and if the first element's data
+       *  is needed, it should be retrieved before pop_front() is
+       *  called.
+       */
+      void
+      pop_front()
+      { this->_M_erase(begin()); }
+
+      /**
+       *  @brief  Add data to the end of the %list.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the end of the %list and assigns the given data to
+       *  it.  Due to the nature of a %list this operation can be done
+       *  in constant time, and does not invalidate iterators and
+       *  references.
+       */
+      void
+      push_back(const value_type& __x)
+      { this->_M_insert(end(), __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_back(value_type&& __x)
+      { this->_M_insert(end(), std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args)
+        { this->_M_insert(end(), std::forward<_Args>(__args)...); }
+#endif
+
+      /**
+       *  @brief  Removes last element.
+       *
+       *  This is a typical stack operation.  It shrinks the %list by
+       *  one.  Due to the nature of a %list this operation can be done
+       *  in constant time, and only invalidates iterators/references to
+       *  the element being removed.
+       *
+       *  Note that no data is returned, and if the last element's data
+       *  is needed, it should be retrieved before pop_back() is called.
+       */
+      void
+      pop_back()
+      { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Constructs object in %list before specified iterator.
+       *  @param  position  A const_iterator into the %list.
+       *  @param  args  Arguments.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert an object of type T constructed
+       *  with T(std::forward<Args>(args)...) before the specified
+       *  location.  Due to the nature of a %list this operation can
+       *  be done in constant time, and does not invalidate iterators
+       *  and references.
+       */
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Inserts given value into %list before specified iterator.
+       *  @param  position  An iterator into the %list.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given value before
+       *  the specified location.  Due to the nature of a %list this
+       *  operation can be done in constant time, and does not
+       *  invalidate iterators and references.
+       */
+      iterator
+      insert(iterator __position, const value_type& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Inserts given rvalue into %list before specified iterator.
+       *  @param  position  An iterator into the %list.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given rvalue before
+       *  the specified location.  Due to the nature of a %list this
+       *  operation can be done in constant time, and does not
+       *  invalidate iterators and references.
+        */
+      iterator
+      insert(iterator __position, value_type&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      /**
+       *  @brief  Inserts the contents of an initializer_list into %list
+       *          before specified iterator.
+       *  @param  p  An iterator into the %list.
+       *  @param  l  An initializer_list of value_type.
+       *
+       *  This function will insert copies of the data in the
+       *  initializer_list @a l into the %list before the location
+       *  specified by @a p.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      void
+      insert(iterator __p, initializer_list<value_type> __l)
+      { this->insert(__p, __l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  Inserts a number of copies of given data into the %list.
+       *  @param  position  An iterator into the %list.
+       *  @param  n  Number of elements to be inserted.
+       *  @param  x  Data to be inserted.
+       *
+       *  This function will insert a specified number of copies of the
+       *  given data before the location specified by @a position.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      void
+      insert(iterator __position, size_type __n, const value_type& __x)
+      {  
+	list __tmp(__n, __x, _M_get_Node_allocator());
+	splice(__position, __tmp);
+      }
+
+      /**
+       *  @brief  Inserts a range into the %list.
+       *  @param  position  An iterator into the %list.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function will insert copies of the data in the range [@a
+       *  first,@a last) into the %list before the location specified by
+       *  @a position.
+       *
+       *  This operation is linear in the number of elements inserted and
+       *  does not invalidate iterators and references.
+       */
+      template<typename _InputIterator>
+        void
+        insert(iterator __position, _InputIterator __first,
+	       _InputIterator __last)
+        {
+	  list __tmp(__first, __last, _M_get_Node_allocator());
+	  splice(__position, __tmp);
+	}
+
+      /**
+       *  @brief  Remove element at given position.
+       *  @param  position  Iterator pointing to element to be erased.
+       *  @return  An iterator pointing to the next element (or end()).
+       *
+       *  This function will erase the element at the given position and thus
+       *  shorten the %list by one.
+       *
+       *  Due to the nature of a %list this operation can be done in
+       *  constant time, and only invalidates iterators/references to
+       *  the element being removed.  The user is also cautioned that
+       *  this function only erases the element, and that if the element
+       *  is itself a pointer, the pointed-to memory is not touched in
+       *  any way.  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(iterator __position);
+
+      /**
+       *  @brief  Remove a range of elements.
+       *  @param  first  Iterator pointing to the first element to be erased.
+       *  @param  last  Iterator pointing to one past the last element to be
+       *                erased.
+       *  @return  An iterator pointing to the element pointed to by @a last
+       *           prior to erasing (or end()).
+       *
+       *  This function will erase the elements in the range @a
+       *  [first,last) and shorten the %list accordingly.
+       *
+       *  This operation is linear time in the size of the range and only
+       *  invalidates iterators/references to the element being removed.
+       *  The user is also cautioned that this function only erases the
+       *  elements, and that if the elements themselves are pointers, the
+       *  pointed-to memory is not touched in any way.  Managing the pointer
+       *  is the user's responsibility.
+       */
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	while (__first != __last)
+	  __first = erase(__first);
+	return __last;
+      }
+
+      /**
+       *  @brief  Swaps data with another %list.
+       *  @param  x  A %list of the same element and allocator types.
+       *
+       *  This exchanges the elements between two lists in constant
+       *  time.  Note that the global std::swap() function is
+       *  specialized such that std::swap(l1,l2) will feed to this
+       *  function.
+       */
+      void
+      swap(list& __x)
+      {
+	__detail::_List_node_base::swap(this->_M_impl._M_node, 
+					__x._M_impl._M_node);
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 431. Swapping containers with unequal allocators.
+	std::__alloc_swap<typename _Base::_Node_alloc_type>::
+	  _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator());
+      }
+
+      /**
+       *  Erases all the elements.  Note that this function only erases
+       *  the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      void
+      clear()
+      {
+        _Base::_M_clear();
+        _Base::_M_init();
+      }
+
+      // [23.2.2.4] list operations
+      /**
+       *  @brief  Insert contents of another %list.
+       *  @param  position  Iterator referencing the element to insert before.
+       *  @param  x  Source list.
+       *
+       *  The elements of @a x are inserted in constant time in front of
+       *  the element referenced by @a position.  @a x becomes an empty
+       *  list.
+       *
+       *  Requires this != @a x.
+       */
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x)
+#else
+      splice(iterator __position, list& __x)
+#endif
+      {
+	if (!__x.empty())
+	  {
+	    _M_check_equal_allocators(__x);
+
+	    this->_M_transfer(__position, __x.begin(), __x.end());
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x)
+      { splice(__position, std::move(__x)); }
+#endif
+
+      /**
+       *  @brief  Insert element from another %list.
+       *  @param  position  Iterator referencing the element to insert before.
+       *  @param  x  Source list.
+       *  @param  i  Iterator referencing the element to move.
+       *
+       *  Removes the element in list @a x referenced by @a i and
+       *  inserts it into the current list before @a position.
+       */
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __i)
+#else
+      splice(iterator __position, list& __x, iterator __i)
+#endif
+      {
+	iterator __j = __i;
+	++__j;
+	if (__position == __i || __position == __j)
+	  return;
+
+	if (this != &__x)
+	  _M_check_equal_allocators(__x);
+
+	this->_M_transfer(__position, __i, __j);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __i)
+      { splice(__position, std::move(__x), __i); }
+#endif
+
+      /**
+       *  @brief  Insert range from another %list.
+       *  @param  position  Iterator referencing the element to insert before.
+       *  @param  x  Source list.
+       *  @param  first  Iterator referencing the start of range in x.
+       *  @param  last  Iterator referencing the end of range in x.
+       *
+       *  Removes elements in the range [first,last) and inserts them
+       *  before @a position in constant time.
+       *
+       *  Undefined if @a position is in [first,last).
+       */
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __first,
+	     iterator __last)
+#else
+      splice(iterator __position, list& __x, iterator __first,
+	     iterator __last)
+#endif
+      {
+	if (__first != __last)
+	  {
+	    if (this != &__x)
+	      _M_check_equal_allocators(__x);
+
+	    this->_M_transfer(__position, __first, __last);
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __first, iterator __last)
+      { splice(__position, std::move(__x), __first, __last); }
+#endif
+
+      /**
+       *  @brief  Remove all elements equal to value.
+       *  @param  value  The value to remove.
+       *
+       *  Removes every element in the list equal to @a value.
+       *  Remaining elements stay in list order.  Note that this
+       *  function only erases the elements, and that if the elements
+       *  themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      remove(const _Tp& __value);
+
+      /**
+       *  @brief  Remove all elements satisfying a predicate.
+       *  @param  Predicate  Unary predicate function or object.
+       *
+       *  Removes every element in the list for which the predicate
+       *  returns true.  Remaining elements stay in list order.  Note
+       *  that this function only erases the elements, and that if the
+       *  elements themselves are pointers, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      template<typename _Predicate>
+        void
+        remove_if(_Predicate);
+
+      /**
+       *  @brief  Remove consecutive duplicate elements.
+       *
+       *  For each consecutive set of elements with the same value,
+       *  remove all but the first one.  Remaining elements stay in
+       *  list order.  Note that this function only erases the
+       *  elements, and that if the elements themselves are pointers,
+       *  the pointed-to memory is not touched in any way.  Managing
+       *  the pointer is the user's responsibility.
+       */
+      void
+      unique();
+
+      /**
+       *  @brief  Remove consecutive elements satisfying a predicate.
+       *  @param  BinaryPredicate  Binary predicate function or object.
+       *
+       *  For each consecutive set of elements [first,last) that
+       *  satisfy predicate(first,i) where i is an iterator in
+       *  [first,last), remove all but the first one.  Remaining
+       *  elements stay in list order.  Note that this function only
+       *  erases the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      template<typename _BinaryPredicate>
+        void
+        unique(_BinaryPredicate);
+
+      /**
+       *  @brief  Merge sorted lists.
+       *  @param  x  Sorted list to merge.
+       *
+       *  Assumes that both @a x and this list are sorted according to
+       *  operator<().  Merges elements of @a x into this list in
+       *  sorted order, leaving @a x empty when complete.  Elements in
+       *  this list precede elements in @a x that are equal.
+       */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      merge(list&& __x);
+
+      void
+      merge(list& __x)
+      { merge(std::move(__x)); }
+#else
+      void
+      merge(list& __x);
+#endif
+
+      /**
+       *  @brief  Merge sorted lists according to comparison function.
+       *  @param  x  Sorted list to merge.
+       *  @param StrictWeakOrdering Comparison function defining
+       *  sort order.
+       *
+       *  Assumes that both @a x and this list are sorted according to
+       *  StrictWeakOrdering.  Merges elements of @a x into this list
+       *  in sorted order, leaving @a x empty when complete.  Elements
+       *  in this list precede elements in @a x that are equivalent
+       *  according to StrictWeakOrdering().
+       */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _StrictWeakOrdering>
+        void
+        merge(list&&, _StrictWeakOrdering);
+
+      template<typename _StrictWeakOrdering>
+        void
+        merge(list& __x, _StrictWeakOrdering __comp)
+        { merge(std::move(__x), __comp); }
+#else
+      template<typename _StrictWeakOrdering>
+        void
+        merge(list&, _StrictWeakOrdering);
+#endif
+
+      /**
+       *  @brief  Reverse the elements in list.
+       *
+       *  Reverse the order of elements in the list in linear time.
+       */
+      void
+      reverse()
+      { this->_M_impl._M_node._M_reverse(); }
+
+      /**
+       *  @brief  Sort the elements.
+       *
+       *  Sorts the elements of this list in NlogN time.  Equivalent
+       *  elements remain in list order.
+       */
+      void
+      sort();
+
+      /**
+       *  @brief  Sort the elements according to comparison function.
+       *
+       *  Sorts the elements of this list in NlogN time.  Equivalent
+       *  elements remain in list order.
+       */
+      template<typename _StrictWeakOrdering>
+        void
+        sort(_StrictWeakOrdering);
+
+    protected:
+      // Internal constructor functions follow.
+
+      // Called by the range constructor to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+        { _M_fill_initialize(static_cast<size_type>(__n), __x); }
+
+      // Called by the range constructor to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+			       __false_type)
+        {
+	  for (; __first != __last; ++__first)
+	    push_back(*__first);
+	}
+
+      // Called by list(n,v,a), and the range constructor when it turns out
+      // to be the same thing.
+      void
+      _M_fill_initialize(size_type __n, const value_type& __x)
+      {
+	for (; __n; --__n)
+	  push_back(__x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // Called by list(n).
+      void
+      _M_default_initialize(size_type __n)
+      {
+	for (; __n; --__n)
+	  emplace_back();
+      }
+
+      // Called by resize(sz).
+      void
+      _M_default_append(size_type __n);
+#endif
+
+      // Internal assign functions follow.
+
+      // Called by the range assign to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+        { _M_fill_assign(__n, __val); }
+
+      // Called by the range assign to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+			   __false_type);
+
+      // Called by assign(n,t), and the range assign when it turns out
+      // to be the same thing.
+      void
+      _M_fill_assign(size_type __n, const value_type& __val);
+
+
+      // Moves the elements from [first,last) before position.
+      void
+      _M_transfer(iterator __position, iterator __first, iterator __last)
+      { __position._M_node->_M_transfer(__first._M_node, __last._M_node); }
+
+      // Inserts new element at position given and with value given.
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      _M_insert(iterator __position, const value_type& __x)
+      {
+        _Node* __tmp = _M_create_node(__x);
+        __tmp->_M_hook(__position._M_node);
+      }
+#else
+     template<typename... _Args>
+       void
+       _M_insert(iterator __position, _Args&&... __args)
+       {
+	 _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
+	 __tmp->_M_hook(__position._M_node);
+       }
+#endif
+
+      // Erases element at position given.
+      void
+      _M_erase(iterator __position)
+      {
+        __position._M_node->_M_unhook();
+        _Node* __n = static_cast<_Node*>(__position._M_node);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+        _M_get_Node_allocator().destroy(__n);
+#else
+	_M_get_Tp_allocator().destroy(std::__addressof(__n->_M_data));
+#endif
+        _M_put_node(__n);
+      }
+
+      // To implement the splice (and merge) bits of N1599.
+      void
+      _M_check_equal_allocators(list& __x)
+      {
+	if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
+	    _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
+	  __throw_runtime_error(__N("list::_M_check_equal_allocators"));
+      }
+    };
+
+  /**
+   *  @brief  List equality comparison.
+   *  @param  x  A %list.
+   *  @param  y  A %list of the same type as @a x.
+   *  @return  True iff the size and elements of the lists are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of
+   *  the lists.  Lists are considered equivalent if their sizes are
+   *  equal, and if corresponding elements compare equal.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    {
+      typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
+      const_iterator __end1 = __x.end();
+      const_iterator __end2 = __y.end();
+
+      const_iterator __i1 = __x.begin();
+      const_iterator __i2 = __y.begin();
+      while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
+	{
+	  ++__i1;
+	  ++__i2;
+	}
+      return __i1 == __end1 && __i2 == __end2;
+    }
+
+  /**
+   *  @brief  List ordering relation.
+   *  @param  x  A %list.
+   *  @param  y  A %list of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  lists.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    { return std::lexicographical_compare(__x.begin(), __x.end(),
+					  __y.begin(), __y.end()); }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::list::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_LIST_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_map.h
new file mode 100644
index 000000000..a84b4b61d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_map.h
@@ -0,0 +1,936 @@
+// Map implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_map.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{map}
+ */
+
+#ifndef _STL_MAP_H
+#define _STL_MAP_H 1
+
+#include <bits/functexcept.h>
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief A standard container made up of (key,value) pairs, which can be
+   *  retrieved based on a key, in logarithmic time.
+   *
+   *  @ingroup associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and an
+   *  <a href="tables.html#69">associative container</a> (using unique keys).
+   *  For a @c map<Key,T> the key_type is Key, the mapped_type is T, and the
+   *  value_type is std::pair<const Key,T>.
+   *
+   *  Maps support bidirectional iterators.
+   *
+   *  The private tree data is declared exactly the same way for map and
+   *  multimap; the distinction is made entirely in how the tree functions are
+   *  called (*_unique versus *_equal, same as the standard).
+  */
+  template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+            typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class map
+    {
+    public:
+      typedef _Key                                          key_type;
+      typedef _Tp                                           mapped_type;
+      typedef std::pair<const _Key, _Tp>                    value_type;
+      typedef _Compare                                      key_compare;
+      typedef _Alloc                                        allocator_type;
+
+    private:
+      // concept requirements
+      typedef typename _Alloc::value_type                   _Alloc_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
+				_BinaryFunctionConcept)
+      __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
+
+    public:
+      class value_compare
+      : public std::binary_function<value_type, value_type, bool>
+      {
+	friend class map<_Key, _Tp, _Compare, _Alloc>;
+      protected:
+	_Compare comp;
+
+	value_compare(_Compare __c)
+	: comp(__c) { }
+
+      public:
+	bool operator()(const value_type& __x, const value_type& __y) const
+	{ return comp(__x.first, __y.first); }
+      };
+
+    private:
+      /// This turns a red-black tree into a [multi]map. 
+      typedef typename _Alloc::template rebind<value_type>::other 
+        _Pair_alloc_type;
+
+      typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+		       key_compare, _Pair_alloc_type> _Rep_type;
+
+      /// The actual tree structure.
+      _Rep_type _M_t;
+
+    public:
+      // many of these are specified differently in ISO, but the following are
+      // "functionally equivalent"
+      typedef typename _Pair_alloc_type::pointer         pointer;
+      typedef typename _Pair_alloc_type::const_pointer   const_pointer;
+      typedef typename _Pair_alloc_type::reference       reference;
+      typedef typename _Pair_alloc_type::const_reference const_reference;
+      typedef typename _Rep_type::iterator               iterator;
+      typedef typename _Rep_type::const_iterator         const_iterator;
+      typedef typename _Rep_type::size_type              size_type;
+      typedef typename _Rep_type::difference_type        difference_type;
+      typedef typename _Rep_type::reverse_iterator       reverse_iterator;
+      typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+
+      // [23.3.1.1] construct/copy/destroy
+      // (get_allocator() is normally listed in this section, but seems to have
+      // been accidentally omitted in the printed standard)
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      map()
+      : _M_t() { }
+
+      /**
+       *  @brief  Creates a %map with no elements.
+       *  @param  comp  A comparison object.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      map(const _Compare& __comp,
+	  const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a) { }
+
+      /**
+       *  @brief  %Map copy constructor.
+       *  @param  x  A %map of identical element and allocator types.
+       *
+       *  The newly-created %map uses a copy of the allocation object
+       *  used by @a x.
+       */
+      map(const map& __x)
+      : _M_t(__x._M_t) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Map move constructor.
+       *  @param  x  A %map of identical element and allocator types.
+       *
+       *  The newly-created %map contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %map.
+       */
+      map(map&& __x)
+      : _M_t(std::move(__x._M_t)) { }
+
+      /**
+       *  @brief  Builds a %map from an initializer_list.
+       *  @param  l  An initializer_list.
+       *  @param  comp  A comparison object.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %map consisting of copies of the elements in the
+       *  initializer_list @a l.
+       *  This is linear in N if the range is already sorted, and NlogN
+       *  otherwise (where N is @a l.size()).
+       */
+      map(initializer_list<value_type> __l,
+	  const _Compare& __c = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _M_t(__c, __a)
+      { _M_t._M_insert_unique(__l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  Builds a %map from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *
+       *  Create a %map consisting of copies of the elements from [first,last).
+       *  This is linear in N if the range is already sorted, and NlogN
+       *  otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        map(_InputIterator __first, _InputIterator __last)
+	: _M_t()
+        { _M_t._M_insert_unique(__first, __last); }
+
+      /**
+       *  @brief  Builds a %map from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %map consisting of copies of the elements from [first,last).
+       *  This is linear in N if the range is already sorted, and NlogN
+       *  otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        map(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp,
+	    const allocator_type& __a = allocator_type())
+	: _M_t(__comp, __a)
+        { _M_t._M_insert_unique(__first, __last); }
+
+      // FIXME There is no dtor declared, but we should have something
+      // generated by Doxygen.  I don't know what tags to add to this
+      // paragraph to make that happen:
+      /**
+       *  The dtor only erases the elements, and note that if the elements
+       *  themselves are pointers, the pointed-to memory is not touched in any
+       *  way.  Managing the pointer is the user's responsibility.
+       */
+
+      /**
+       *  @brief  %Map assignment operator.
+       *  @param  x  A %map of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy constructor,
+       *  the allocator object is not copied.
+       */
+      map&
+      operator=(const map& __x)
+      {
+	_M_t = __x._M_t;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Map move assignment operator.
+       *  @param  x  A %map of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this map (without copying).
+       *  @a x is a valid, but unspecified %map.
+       */
+      map&
+      operator=(map&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  %Map list assignment operator.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %map with copies of the elements in the
+       *  initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %map and
+       *  that the resulting %map's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /// Get a copy of the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return _M_t.get_allocator(); }
+
+      // iterators
+      /**
+       *  Returns a read/write iterator that points to the first pair in the
+       *  %map.
+       *  Iteration is done in ascending order according to the keys.
+       */
+      iterator
+      begin()
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first pair
+       *  in the %map.  Iteration is done in ascending order according to the
+       *  keys.
+       */
+      const_iterator
+      begin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  pair in the %map.  Iteration is done in ascending order
+       *  according to the keys.
+       */
+      iterator
+      end()
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  pair in the %map.  Iteration is done in ascending order according to
+       *  the keys.
+       */
+      const_iterator
+      end() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the last pair in
+       *  the %map.  Iteration is done in descending order according to the
+       *  keys.
+       */
+      reverse_iterator
+      rbegin()
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %map.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one before the
+       *  first pair in the %map.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      rend()
+      { return _M_t.rend(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first pair in the %map.  Iteration is done in descending
+       *  order according to the keys.
+       */
+      const_reverse_iterator
+      rend() const
+      { return _M_t.rend(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first pair
+       *  in the %map.  Iteration is done in ascending order according to the
+       *  keys.
+       */
+      const_iterator
+      cbegin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  pair in the %map.  Iteration is done in ascending order according to
+       *  the keys.
+       */
+      const_iterator
+      cend() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %map.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first pair in the %map.  Iteration is done in descending
+       *  order according to the keys.
+       */
+      const_reverse_iterator
+      crend() const
+      { return _M_t.rend(); }
+#endif
+
+      // capacity
+      /** Returns true if the %map is empty.  (Thus begin() would equal
+       *  end().)
+      */
+      bool
+      empty() const
+      { return _M_t.empty(); }
+
+      /** Returns the size of the %map.  */
+      size_type
+      size() const
+      { return _M_t.size(); }
+
+      /** Returns the maximum size of the %map.  */
+      size_type
+      max_size() const
+      { return _M_t.max_size(); }
+
+      // [23.3.1.2] element access
+      /**
+       *  @brief  Subscript ( @c [] ) access to %map data.
+       *  @param  k  The key for which data should be retrieved.
+       *  @return  A reference to the data of the (key,data) %pair.
+       *
+       *  Allows for easy lookup with the subscript ( @c [] )
+       *  operator.  Returns data associated with the key specified in
+       *  subscript.  If the key does not exist, a pair with that key
+       *  is created using default values, which is then returned.
+       *
+       *  Lookup requires logarithmic time.
+       */
+      mapped_type&
+      operator[](const key_type& __k)
+      {
+	// concept requirements
+	__glibcxx_function_requires(_DefaultConstructibleConcept<mapped_type>)
+
+	iterator __i = lower_bound(__k);
+	// __i->first is greater than or equivalent to __k.
+	if (__i == end() || key_comp()(__k, (*__i).first))
+          __i = insert(__i, value_type(__k, mapped_type()));
+	return (*__i).second;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      mapped_type&
+      operator[](key_type&& __k)
+      {
+	// concept requirements
+	__glibcxx_function_requires(_DefaultConstructibleConcept<mapped_type>)
+
+	iterator __i = lower_bound(__k);
+	// __i->first is greater than or equivalent to __k.
+	if (__i == end() || key_comp()(__k, (*__i).first))
+          __i = insert(__i, std::make_pair(std::move(__k), mapped_type()));
+	return (*__i).second;
+      }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 464. Suggestion for new member functions in standard containers.
+      /**
+       *  @brief  Access to %map data.
+       *  @param  k  The key for which data should be retrieved.
+       *  @return  A reference to the data whose key is equivalent to @a k, if
+       *           such a data is present in the %map.
+       *  @throw  std::out_of_range  If no such data is present.
+       */
+      mapped_type&
+      at(const key_type& __k)
+      {
+	iterator __i = lower_bound(__k);
+	if (__i == end() || key_comp()(__k, (*__i).first))
+	  __throw_out_of_range(__N("map::at"));
+	return (*__i).second;
+      }
+
+      const mapped_type&
+      at(const key_type& __k) const
+      {
+	const_iterator __i = lower_bound(__k);
+	if (__i == end() || key_comp()(__k, (*__i).first))
+	  __throw_out_of_range(__N("map::at"));
+	return (*__i).second;
+      }
+
+      // modifiers
+      /**
+       *  @brief Attempts to insert a std::pair into the %map.
+
+       *  @param  x  Pair to be inserted (see std::make_pair for easy creation 
+       *	     of pairs).
+
+       *  @return  A pair, of which the first element is an iterator that 
+       *           points to the possibly inserted pair, and the second is 
+       *           a bool that is true if the pair was actually inserted.
+       *
+       *  This function attempts to insert a (key, value) %pair into the %map.
+       *  A %map relies on unique keys and thus a %pair is only inserted if its
+       *  first element (the key) is not already present in the %map.
+       *
+       *  Insertion requires logarithmic time.
+       */
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      { return _M_t._M_insert_unique(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        std::pair<iterator, bool>
+        insert(_Pair&& __x)
+        { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief Attempts to insert a list of std::pairs into the %map.
+       *  @param  list  A std::initializer_list<value_type> of pairs to be
+       *                inserted.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      void
+      insert(std::initializer_list<value_type> __list)
+      { insert(__list.begin(), __list.end()); }
+#endif
+
+      /**
+       *  @brief Attempts to insert a std::pair into the %map.
+       *  @param  position  An iterator that serves as a hint as to where the
+       *                    pair should be inserted.
+       *  @param  x  Pair to be inserted (see std::make_pair for easy creation
+       *             of pairs).
+       *  @return  An iterator that points to the element with key of @a x (may
+       *           or may not be the %pair passed in).
+       *
+
+       *  This function is not concerned about whether the insertion
+       *  took place, and thus does not return a boolean like the
+       *  single-argument insert() does.  Note that the first
+       *  parameter is only a hint and can potentially improve the
+       *  performance of the insertion process.  A bad hint would
+       *  cause no gains in efficiency.
+       *
+       *  See
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html
+       *  for more on @a hinting.
+       *
+       *  Insertion requires logarithmic time (if the hint is not taken).
+       */
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      { return _M_t._M_insert_unique_(__position, __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        { return _M_t._M_insert_unique_(__position,
+					std::forward<_Pair>(__x)); }
+#endif
+
+      /**
+       *  @brief Template function that attempts to insert a range of elements.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 inserted.
+       *  @param  last  Iterator pointing to the end of the range.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _M_t._M_insert_unique(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases an element from a %map.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *  @return An iterator pointing to the element immediately following
+       *          @a position prior to the element being erased. If no such 
+       *          element exists, end() is returned.
+       *
+       *  This function erases an element, pointed to by the given
+       *  iterator, from a %map.  Note that this function only erases
+       *  the element, and that if the element is itself a pointer,
+       *  the pointed-to memory is not touched in any way.  Managing
+       *  the pointer is the user's responsibility.
+       */
+      iterator
+      erase(const_iterator __position)
+      { return _M_t.erase(__position); }
+#else
+      /**
+       *  @brief Erases an element from a %map.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *
+       *  This function erases an element, pointed to by the given
+       *  iterator, from a %map.  Note that this function only erases
+       *  the element, and that if the element is itself a pointer,
+       *  the pointed-to memory is not touched in any way.  Managing
+       *  the pointer is the user's responsibility.
+       */
+      void
+      erase(iterator __position)
+      { _M_t.erase(__position); }
+#endif
+
+      /**
+       *  @brief Erases elements according to the provided key.
+       *  @param  x  Key of element to be erased.
+       *  @return  The number of elements erased.
+       *
+       *  This function erases all the elements located by the given key from
+       *  a %map.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      size_type
+      erase(const key_type& __x)
+      { return _M_t.erase(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases a [first,last) range of elements from a %map.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *  @return The iterator @a last.
+       *
+       *  This function erases a sequence of elements from a %map.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return _M_t.erase(__first, __last); }
+#else
+      /**
+       *  @brief Erases a [first,last) range of elements from a %map.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *
+       *  This function erases a sequence of elements from a %map.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      void
+      erase(iterator __first, iterator __last)
+      { _M_t.erase(__first, __last); }
+#endif
+
+      /**
+       *  @brief  Swaps data with another %map.
+       *  @param  x  A %map of the same element and allocator types.
+       *
+       *  This exchanges the elements between two maps in constant
+       *  time.  (It is only swapping a pointer, an integer, and an
+       *  instance of the @c Compare type (which itself is often
+       *  stateless and empty), so it should be quite fast.)  Note
+       *  that the global std::swap() function is specialized such
+       *  that std::swap(m1,m2) will feed to this function.
+       */
+      void
+      swap(map& __x)
+      { _M_t.swap(__x._M_t); }
+
+      /**
+       *  Erases all elements in a %map.  Note that this function only
+       *  erases the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      void
+      clear()
+      { _M_t.clear(); }
+
+      // observers
+      /**
+       *  Returns the key comparison object out of which the %map was
+       *  constructed.
+       */
+      key_compare
+      key_comp() const
+      { return _M_t.key_comp(); }
+
+      /**
+       *  Returns a value comparison object, built from the key comparison
+       *  object out of which the %map was constructed.
+       */
+      value_compare
+      value_comp() const
+      { return value_compare(_M_t.key_comp()); }
+
+      // [23.3.1.3] map operations
+      /**
+       *  @brief Tries to locate an element in a %map.
+       *  @param  x  Key of (key, value) %pair to be located.
+       *  @return  Iterator pointing to sought-after element, or end() if not
+       *           found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns an iterator
+       *  pointing to the sought after %pair.  If unsuccessful it returns the
+       *  past-the-end ( @c end() ) iterator.
+       */
+      iterator
+      find(const key_type& __x)
+      { return _M_t.find(__x); }
+
+      /**
+       *  @brief Tries to locate an element in a %map.
+       *  @param  x  Key of (key, value) %pair to be located.
+       *  @return  Read-only (constant) iterator pointing to sought-after
+       *           element, or end() if not found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns a constant
+       *  iterator pointing to the sought after %pair. If unsuccessful it
+       *  returns the past-the-end ( @c end() ) iterator.
+       */
+      const_iterator
+      find(const key_type& __x) const
+      { return _M_t.find(__x); }
+
+      /**
+       *  @brief  Finds the number of elements with given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return  Number of elements with specified key.
+       *
+       *  This function only makes sense for multimaps; for map the result will
+       *  either be 0 (not present) or 1 (present).
+       */
+      size_type
+      count(const key_type& __x) const
+      { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
+
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Iterator pointing to first element equal to or greater
+       *           than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful it returns an iterator
+       *  pointing to the first element that has a greater value than given key
+       *  or end() if no such element exists.
+       */
+      iterator
+      lower_bound(const key_type& __x)
+      { return _M_t.lower_bound(__x); }
+
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Read-only (constant) iterator pointing to first element
+       *           equal to or greater than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful it returns an iterator
+       *  pointing to the first element that has a greater value than given key
+       *  or end() if no such element exists.
+       */
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return _M_t.lower_bound(__x); }
+
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return Iterator pointing to the first element
+       *          greater than key, or end().
+       */
+      iterator
+      upper_bound(const key_type& __x)
+      { return _M_t.upper_bound(__x); }
+
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Read-only (constant) iterator pointing to first iterator
+       *           greater than key, or end().
+       */
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return _M_t.upper_bound(__x); }
+
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return  Pair of iterators that possibly points to the subsequence
+       *           matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       *
+       *  This function probably only makes sense for multimaps.
+       */
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __x)
+      { return _M_t.equal_range(__x); }
+
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return  Pair of read-only (constant) iterators that possibly points
+       *           to the subsequence matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       *
+       *  This function probably only makes sense for multimaps.
+       */
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __x) const
+      { return _M_t.equal_range(__x); }
+
+      template<typename _K1, typename _T1, typename _C1, typename _A1>
+        friend bool
+        operator==(const map<_K1, _T1, _C1, _A1>&,
+		   const map<_K1, _T1, _C1, _A1>&);
+
+      template<typename _K1, typename _T1, typename _C1, typename _A1>
+        friend bool
+        operator<(const map<_K1, _T1, _C1, _A1>&,
+		  const map<_K1, _T1, _C1, _A1>&);
+    };
+
+  /**
+   *  @brief  Map equality comparison.
+   *  @param  x  A %map.
+   *  @param  y  A %map of the same type as @a x.
+   *  @return  True iff the size and elements of the maps are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  maps.  Maps are considered equivalent if their sizes are equal,
+   *  and if corresponding elements compare equal.
+  */
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+               const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __x._M_t == __y._M_t; }
+
+  /**
+   *  @brief  Map ordering relation.
+   *  @param  x  A %map.
+   *  @param  y  A %map of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  maps.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+              const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __x._M_t < __y._M_t; }
+
+  /// Based on operator==
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+               const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+              const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+               const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+               const map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::map::swap().
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline void
+    swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
+	 map<_Key, _Tp, _Compare, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_MAP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multimap.h
new file mode 100644
index 000000000..ca37f359e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multimap.h
@@ -0,0 +1,854 @@
+// Multimap implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_multimap.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{map}
+ */
+
+#ifndef _STL_MULTIMAP_H
+#define _STL_MULTIMAP_H 1
+
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief A standard container made up of (key,value) pairs, which can be
+   *  retrieved based on a key, in logarithmic time.
+   *
+   *  @ingroup associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and an
+   *  <a href="tables.html#69">associative container</a> (using equivalent
+   *  keys).  For a @c multimap<Key,T> the key_type is Key, the mapped_type
+   *  is T, and the value_type is std::pair<const Key,T>.
+   *
+   *  Multimaps support bidirectional iterators.
+   *
+   *  The private tree data is declared exactly the same way for map and
+   *  multimap; the distinction is made entirely in how the tree functions are
+   *  called (*_unique versus *_equal, same as the standard).
+  */
+  template <typename _Key, typename _Tp,
+	    typename _Compare = std::less<_Key>,
+	    typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class multimap
+    {
+    public:
+      typedef _Key                                          key_type;
+      typedef _Tp                                           mapped_type;
+      typedef std::pair<const _Key, _Tp>                    value_type;
+      typedef _Compare                                      key_compare;
+      typedef _Alloc                                        allocator_type;
+
+    private:
+      // concept requirements
+      typedef typename _Alloc::value_type                   _Alloc_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
+				_BinaryFunctionConcept)
+      __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)	
+
+    public:
+      class value_compare
+      : public std::binary_function<value_type, value_type, bool>
+      {
+	friend class multimap<_Key, _Tp, _Compare, _Alloc>;
+      protected:
+	_Compare comp;
+
+	value_compare(_Compare __c)
+	: comp(__c) { }
+
+      public:
+	bool operator()(const value_type& __x, const value_type& __y) const
+	{ return comp(__x.first, __y.first); }
+      };
+
+    private:
+      /// This turns a red-black tree into a [multi]map.
+      typedef typename _Alloc::template rebind<value_type>::other 
+        _Pair_alloc_type;
+
+      typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+		       key_compare, _Pair_alloc_type> _Rep_type;
+      /// The actual tree structure.
+      _Rep_type _M_t;
+
+    public:
+      // many of these are specified differently in ISO, but the following are
+      // "functionally equivalent"
+      typedef typename _Pair_alloc_type::pointer         pointer;
+      typedef typename _Pair_alloc_type::const_pointer   const_pointer;
+      typedef typename _Pair_alloc_type::reference       reference;
+      typedef typename _Pair_alloc_type::const_reference const_reference;
+      typedef typename _Rep_type::iterator               iterator;
+      typedef typename _Rep_type::const_iterator         const_iterator;
+      typedef typename _Rep_type::size_type              size_type;
+      typedef typename _Rep_type::difference_type        difference_type;
+      typedef typename _Rep_type::reverse_iterator       reverse_iterator;
+      typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+
+      // [23.3.2] construct/copy/destroy
+      // (get_allocator() is also listed in this section)
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      multimap()
+      : _M_t() { }
+
+      /**
+       *  @brief  Creates a %multimap with no elements.
+       *  @param  comp  A comparison object.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      multimap(const _Compare& __comp,
+	       const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a) { }
+
+      /**
+       *  @brief  %Multimap copy constructor.
+       *  @param  x  A %multimap of identical element and allocator types.
+       *
+       *  The newly-created %multimap uses a copy of the allocation object
+       *  used by @a x.
+       */
+      multimap(const multimap& __x)
+      : _M_t(__x._M_t) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Multimap move constructor.
+       *  @param   x  A %multimap of identical element and allocator types.
+       *
+       *  The newly-created %multimap contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %multimap.
+       */
+      multimap(multimap&& __x)
+      : _M_t(std::move(__x._M_t)) { }
+
+      /**
+       *  @brief  Builds a %multimap from an initializer_list.
+       *  @param  l  An initializer_list.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %multimap consisting of copies of the elements from
+       *  the initializer_list.  This is linear in N if the list is already
+       *  sorted, and NlogN otherwise (where N is @a __l.size()).
+       */
+      multimap(initializer_list<value_type> __l,
+	       const _Compare& __comp = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a)
+      { _M_t._M_insert_equal(__l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  Builds a %multimap from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *
+       *  Create a %multimap consisting of copies of the elements from
+       *  [first,last).  This is linear in N if the range is already sorted,
+       *  and NlogN otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        multimap(_InputIterator __first, _InputIterator __last)
+	: _M_t()
+        { _M_t._M_insert_equal(__first, __last); }
+
+      /**
+       *  @brief  Builds a %multimap from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %multimap consisting of copies of the elements from
+       *  [first,last).  This is linear in N if the range is already sorted,
+       *  and NlogN otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        multimap(_InputIterator __first, _InputIterator __last,
+		 const _Compare& __comp,
+		 const allocator_type& __a = allocator_type())
+        : _M_t(__comp, __a)
+        { _M_t._M_insert_equal(__first, __last); }
+
+      // FIXME There is no dtor declared, but we should have something generated
+      // by Doxygen.  I don't know what tags to add to this paragraph to make
+      // that happen:
+      /**
+       *  The dtor only erases the elements, and note that if the elements
+       *  themselves are pointers, the pointed-to memory is not touched in any
+       *  way.  Managing the pointer is the user's responsibility.
+       */
+
+      /**
+       *  @brief  %Multimap assignment operator.
+       *  @param  x  A %multimap of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy constructor,
+       *  the allocator object is not copied.
+       */
+      multimap&
+      operator=(const multimap& __x)
+      {
+	_M_t = __x._M_t;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Multimap move assignment operator.
+       *  @param  x  A %multimap of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this multimap (without copying).
+       *  @a x is a valid, but unspecified multimap.
+       */
+      multimap&
+      operator=(multimap&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  %Multimap list assignment operator.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %multimap with copies of the elements
+       *  in the initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %multimap and
+       *  that the resulting %multimap's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /// Get a copy of the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return _M_t.get_allocator(); }
+
+      // iterators
+      /**
+       *  Returns a read/write iterator that points to the first pair in the
+       *  %multimap.  Iteration is done in ascending order according to the
+       *  keys.
+       */
+      iterator
+      begin()
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first pair
+       *  in the %multimap.  Iteration is done in ascending order according to
+       *  the keys.
+       */
+      const_iterator
+      begin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last pair in
+       *  the %multimap.  Iteration is done in ascending order according to the
+       *  keys.
+       */
+      iterator
+      end()
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  pair in the %multimap.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      const_iterator
+      end() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the last pair in
+       *  the %multimap.  Iteration is done in descending order according to the
+       *  keys.
+       */
+      reverse_iterator
+      rbegin()
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %multimap.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one before the
+       *  first pair in the %multimap.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      rend()
+      { return _M_t.rend(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first pair in the %multimap.  Iteration is done in
+       *  descending order according to the keys.
+       */
+      const_reverse_iterator
+      rend() const
+      { return _M_t.rend(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first pair
+       *  in the %multimap.  Iteration is done in ascending order according to
+       *  the keys.
+       */
+      const_iterator
+      cbegin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  pair in the %multimap.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      const_iterator
+      cend() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %multimap.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to one
+       *  before the first pair in the %multimap.  Iteration is done in
+       *  descending order according to the keys.
+       */
+      const_reverse_iterator
+      crend() const
+      { return _M_t.rend(); }
+#endif
+
+      // capacity
+      /** Returns true if the %multimap is empty.  */
+      bool
+      empty() const
+      { return _M_t.empty(); }
+
+      /** Returns the size of the %multimap.  */
+      size_type
+      size() const
+      { return _M_t.size(); }
+
+      /** Returns the maximum size of the %multimap.  */
+      size_type
+      max_size() const
+      { return _M_t.max_size(); }
+
+      // modifiers
+      /**
+       *  @brief Inserts a std::pair into the %multimap.
+       *  @param  x  Pair to be inserted (see std::make_pair for easy creation
+       *             of pairs).
+       *  @return An iterator that points to the inserted (key,value) pair.
+       *
+       *  This function inserts a (key, value) pair into the %multimap.
+       *  Contrary to a std::map the %multimap does not rely on unique keys and
+       *  thus multiple pairs with the same key can be inserted.
+       *
+       *  Insertion requires logarithmic time.
+       */
+      iterator
+      insert(const value_type& __x)
+      { return _M_t._M_insert_equal(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(_Pair&& __x)
+        { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); }
+#endif
+
+      /**
+       *  @brief Inserts a std::pair into the %multimap.
+       *  @param  position  An iterator that serves as a hint as to where the
+       *                    pair should be inserted.
+       *  @param  x  Pair to be inserted (see std::make_pair for easy creation
+       *             of pairs).
+       *  @return An iterator that points to the inserted (key,value) pair.
+       *
+       *  This function inserts a (key, value) pair into the %multimap.
+       *  Contrary to a std::map the %multimap does not rely on unique keys and
+       *  thus multiple pairs with the same key can be inserted.
+       *  Note that the first parameter is only a hint and can potentially
+       *  improve the performance of the insertion process.  A bad hint would
+       *  cause no gains in efficiency.
+       *
+       *  For more on @a hinting, see:
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html
+       *
+       *  Insertion requires logarithmic time (if the hint is not taken).
+       */
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      { return _M_t._M_insert_equal_(__position, __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        { return _M_t._M_insert_equal_(__position,
+				       std::forward<_Pair>(__x)); }
+#endif
+
+      /**
+       *  @brief A template function that attempts to insert a range
+       *  of elements.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 inserted.
+       *  @param  last  Iterator pointing to the end of the range.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _M_t._M_insert_equal(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief Attempts to insert a list of std::pairs into the %multimap.
+       *  @param  list  A std::initializer_list<value_type> of pairs to be
+       *                inserted.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      void
+      insert(initializer_list<value_type> __l)
+      { this->insert(__l.begin(), __l.end()); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases an element from a %multimap.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *  @return An iterator pointing to the element immediately following
+       *          @a position prior to the element being erased. If no such 
+       *          element exists, end() is returned.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %multimap.  Note that this function only erases the element,
+       *  and that if the element is itself a pointer, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      iterator
+      erase(const_iterator __position)
+      { return _M_t.erase(__position); }
+#else
+      /**
+       *  @brief Erases an element from a %multimap.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %multimap.  Note that this function only erases the element,
+       *  and that if the element is itself a pointer, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      erase(iterator __position)
+      { _M_t.erase(__position); }
+#endif
+
+      /**
+       *  @brief Erases elements according to the provided key.
+       *  @param  x  Key of element to be erased.
+       *  @return  The number of elements erased.
+       *
+       *  This function erases all elements located by the given key from a
+       *  %multimap.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      size_type
+      erase(const key_type& __x)
+      { return _M_t.erase(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases a [first,last) range of elements from a %multimap.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *  @return The iterator @a last.
+       *
+       *  This function erases a sequence of elements from a %multimap.
+       *  Note that this function only erases the elements, and that if
+       *  the elements themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return _M_t.erase(__first, __last); }
+#else
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases a [first,last) range of elements from a %multimap.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *
+       *  This function erases a sequence of elements from a %multimap.
+       *  Note that this function only erases the elements, and that if
+       *  the elements themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      erase(iterator __first, iterator __last)
+      { _M_t.erase(__first, __last); }
+#endif
+
+      /**
+       *  @brief  Swaps data with another %multimap.
+       *  @param  x  A %multimap of the same element and allocator types.
+       *
+       *  This exchanges the elements between two multimaps in constant time.
+       *  (It is only swapping a pointer, an integer, and an instance of
+       *  the @c Compare type (which itself is often stateless and empty), so it
+       *  should be quite fast.)
+       *  Note that the global std::swap() function is specialized such that
+       *  std::swap(m1,m2) will feed to this function.
+       */
+      void
+      swap(multimap& __x)
+      { _M_t.swap(__x._M_t); }
+
+      /**
+       *  Erases all elements in a %multimap.  Note that this function only
+       *  erases the elements, and that if the elements themselves are pointers,
+       *  the pointed-to memory is not touched in any way.  Managing the pointer
+       *  is the user's responsibility.
+       */
+      void
+      clear()
+      { _M_t.clear(); }
+
+      // observers
+      /**
+       *  Returns the key comparison object out of which the %multimap
+       *  was constructed.
+       */
+      key_compare
+      key_comp() const
+      { return _M_t.key_comp(); }
+
+      /**
+       *  Returns a value comparison object, built from the key comparison
+       *  object out of which the %multimap was constructed.
+       */
+      value_compare
+      value_comp() const
+      { return value_compare(_M_t.key_comp()); }
+
+      // multimap operations
+      /**
+       *  @brief Tries to locate an element in a %multimap.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Iterator pointing to sought-after element,
+       *           or end() if not found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns an iterator
+       *  pointing to the sought after %pair.  If unsuccessful it returns the
+       *  past-the-end ( @c end() ) iterator.
+       */
+      iterator
+      find(const key_type& __x)
+      { return _M_t.find(__x); }
+
+      /**
+       *  @brief Tries to locate an element in a %multimap.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Read-only (constant) iterator pointing to sought-after
+       *           element, or end() if not found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns a constant
+       *  iterator pointing to the sought after %pair.  If unsuccessful it
+       *  returns the past-the-end ( @c end() ) iterator.
+       */
+      const_iterator
+      find(const key_type& __x) const
+      { return _M_t.find(__x); }
+
+      /**
+       *  @brief Finds the number of elements with given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return Number of elements with specified key.
+       */
+      size_type
+      count(const key_type& __x) const
+      { return _M_t.count(__x); }
+
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Iterator pointing to first element equal to or greater
+       *           than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful it returns an iterator
+       *  pointing to the first element that has a greater value than given key
+       *  or end() if no such element exists.
+       */
+      iterator
+      lower_bound(const key_type& __x)
+      { return _M_t.lower_bound(__x); }
+
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Read-only (constant) iterator pointing to first element
+       *           equal to or greater than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful the iterator will point
+       *  to the next greatest element or, if no such greater element exists, to
+       *  end().
+       */
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return _M_t.lower_bound(__x); }
+
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return Iterator pointing to the first element
+       *          greater than key, or end().
+       */
+      iterator
+      upper_bound(const key_type& __x)
+      { return _M_t.upper_bound(__x); }
+
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key of (key, value) pair to be located.
+       *  @return  Read-only (constant) iterator pointing to first iterator
+       *           greater than key, or end().
+       */
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return _M_t.upper_bound(__x); }
+
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return  Pair of iterators that possibly points to the subsequence
+       *           matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       */
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __x)
+      { return _M_t.equal_range(__x); }
+
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key of (key, value) pairs to be located.
+       *  @return  Pair of read-only (constant) iterators that possibly points
+       *           to the subsequence matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       */
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __x) const
+      { return _M_t.equal_range(__x); }
+
+      template<typename _K1, typename _T1, typename _C1, typename _A1>
+        friend bool
+        operator==(const multimap<_K1, _T1, _C1, _A1>&,
+		   const multimap<_K1, _T1, _C1, _A1>&);
+
+      template<typename _K1, typename _T1, typename _C1, typename _A1>
+        friend bool
+        operator<(const multimap<_K1, _T1, _C1, _A1>&,
+		  const multimap<_K1, _T1, _C1, _A1>&);
+  };
+
+  /**
+   *  @brief  Multimap equality comparison.
+   *  @param  x  A %multimap.
+   *  @param  y  A %multimap of the same type as @a x.
+   *  @return  True iff the size and elements of the maps are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  multimaps.  Multimaps are considered equivalent if their sizes are equal,
+   *  and if corresponding elements compare equal.
+  */
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __x._M_t == __y._M_t; }
+
+  /**
+   *  @brief  Multimap ordering relation.
+   *  @param  x  A %multimap.
+   *  @param  y  A %multimap of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  multimaps.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+              const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __x._M_t < __y._M_t; }
+
+  /// Based on operator==
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+              const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline bool
+    operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::multimap::swap().
+  template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+    inline void
+    swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+         multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_MULTIMAP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multiset.h
new file mode 100644
index 000000000..9a48916c3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_multiset.h
@@ -0,0 +1,738 @@
+// Multiset implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_multiset.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{set}
+ */
+
+#ifndef _STL_MULTISET_H
+#define _STL_MULTISET_H 1
+
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief A standard container made up of elements, which can be retrieved
+   *  in logarithmic time.
+   *
+   *  @ingroup associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and an
+   *  <a href="tables.html#69">associative container</a> (using equivalent
+   *  keys).  For a @c multiset<Key> the key_type and value_type are Key.
+   *
+   *  Multisets support bidirectional iterators.
+   *
+   *  The private tree data is declared exactly the same way for set and
+   *  multiset; the distinction is made entirely in how the tree functions are
+   *  called (*_unique versus *_equal, same as the standard).
+  */
+  template <typename _Key, typename _Compare = std::less<_Key>,
+	    typename _Alloc = std::allocator<_Key> >
+    class multiset
+    {
+      // concept requirements
+      typedef typename _Alloc::value_type                   _Alloc_value_type;
+      __glibcxx_class_requires(_Key, _SGIAssignableConcept)
+      __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
+				_BinaryFunctionConcept)
+      __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)	
+
+    public:
+      // typedefs:
+      typedef _Key     key_type;
+      typedef _Key     value_type;
+      typedef _Compare key_compare;
+      typedef _Compare value_compare;
+      typedef _Alloc   allocator_type;
+
+    private:
+      /// This turns a red-black tree into a [multi]set.
+      typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
+
+      typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
+		       key_compare, _Key_alloc_type> _Rep_type;
+      /// The actual tree structure.
+      _Rep_type _M_t;
+
+    public:
+      typedef typename _Key_alloc_type::pointer             pointer;
+      typedef typename _Key_alloc_type::const_pointer       const_pointer;
+      typedef typename _Key_alloc_type::reference           reference;
+      typedef typename _Key_alloc_type::const_reference     const_reference;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 103. set::iterator is required to be modifiable,
+      // but this allows modification of keys.
+      typedef typename _Rep_type::const_iterator            iterator;
+      typedef typename _Rep_type::const_iterator            const_iterator;
+      typedef typename _Rep_type::const_reverse_iterator    reverse_iterator;
+      typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+      typedef typename _Rep_type::size_type                 size_type;
+      typedef typename _Rep_type::difference_type           difference_type;
+
+      // allocation/deallocation
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      multiset()
+      : _M_t() { }
+
+      /**
+       *  @brief  Creates a %multiset with no elements.
+       *  @param  comp  Comparator to use.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      multiset(const _Compare& __comp,
+	       const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a) { }
+
+      /**
+       *  @brief  Builds a %multiset from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *
+       *  Create a %multiset consisting of copies of the elements from
+       *  [first,last).  This is linear in N if the range is already sorted,
+       *  and NlogN otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        multiset(_InputIterator __first, _InputIterator __last)
+	: _M_t()
+        { _M_t._M_insert_equal(__first, __last); }
+
+      /**
+       *  @brief  Builds a %multiset from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %multiset consisting of copies of the elements from
+       *  [first,last).  This is linear in N if the range is already sorted,
+       *  and NlogN otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+        multiset(_InputIterator __first, _InputIterator __last,
+		 const _Compare& __comp,
+		 const allocator_type& __a = allocator_type())
+	: _M_t(__comp, __a)
+        { _M_t._M_insert_equal(__first, __last); }
+
+      /**
+       *  @brief  %Multiset copy constructor.
+       *  @param  x  A %multiset of identical element and allocator types.
+       *
+       *  The newly-created %multiset uses a copy of the allocation object used
+       *  by @a x.
+       */
+      multiset(const multiset& __x)
+      : _M_t(__x._M_t) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+     /**
+       *  @brief  %Multiset move constructor.
+       *  @param  x  A %multiset of identical element and allocator types.
+       *
+       *  The newly-created %multiset contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %multiset.
+       */
+      multiset(multiset&& __x)
+      : _M_t(std::move(__x._M_t)) { }
+
+      /**
+       *  @brief  Builds a %multiset from an initializer_list.
+       *  @param  l  An initializer_list.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %multiset consisting of copies of the elements from
+       *  the list.  This is linear in N if the list is already sorted,
+       *  and NlogN otherwise (where N is @a l.size()).
+       */
+      multiset(initializer_list<value_type> __l,
+	       const _Compare& __comp = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a)
+      { _M_t._M_insert_equal(__l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  %Multiset assignment operator.
+       *  @param  x  A %multiset of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy constructor,
+       *  the allocator object is not copied.
+       */
+      multiset&
+      operator=(const multiset& __x)
+      {
+	_M_t = __x._M_t;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Multiset move assignment operator.
+       *  @param  x  A %multiset of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this %multiset (without copying).
+       *  @a x is a valid, but unspecified %multiset.
+       */
+      multiset&
+      operator=(multiset&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  %Multiset list assignment operator.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %multiset with copies of the elements in the
+       *  initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %multiset and
+       *  that the resulting %multiset's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      // accessors:
+
+      ///  Returns the comparison object.
+      key_compare
+      key_comp() const
+      { return _M_t.key_comp(); }
+      ///  Returns the comparison object.
+      value_compare
+      value_comp() const
+      { return _M_t.key_comp(); }
+      ///  Returns the memory allocation object.
+      allocator_type
+      get_allocator() const
+      { return _M_t.get_allocator(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %multiset.  Iteration is done in ascending order
+       *  according to the keys.
+       */
+      iterator
+      begin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  element in the %multiset.  Iteration is done in ascending order
+       *  according to the keys.
+       */
+      iterator
+      end() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last element in the %multiset.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      rbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last element in the %multiset.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      rend() const
+      { return _M_t.rend(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %multiset.  Iteration is done in ascending order
+       *  according to the keys.
+       */
+      iterator
+      cbegin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  element in the %multiset.  Iteration is done in ascending order
+       *  according to the keys.
+       */
+      iterator
+      cend() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last element in the %multiset.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      crbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last element in the %multiset.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      crend() const
+      { return _M_t.rend(); }
+#endif
+
+      ///  Returns true if the %set is empty.
+      bool
+      empty() const
+      { return _M_t.empty(); }
+
+      ///  Returns the size of the %set.
+      size_type
+      size() const
+      { return _M_t.size(); }
+
+      ///  Returns the maximum size of the %set.
+      size_type
+      max_size() const
+      { return _M_t.max_size(); }
+
+      /**
+       *  @brief  Swaps data with another %multiset.
+       *  @param  x  A %multiset of the same element and allocator types.
+       *
+       *  This exchanges the elements between two multisets in constant time.
+       *  (It is only swapping a pointer, an integer, and an instance of the @c
+       *  Compare type (which itself is often stateless and empty), so it should
+       *  be quite fast.)
+       *  Note that the global std::swap() function is specialized such that
+       *  std::swap(s1,s2) will feed to this function.
+       */
+      void
+      swap(multiset& __x)
+      { _M_t.swap(__x._M_t); }
+
+      // insert/erase
+      /**
+       *  @brief Inserts an element into the %multiset.
+       *  @param  x  Element to be inserted.
+       *  @return An iterator that points to the inserted element.
+       *
+       *  This function inserts an element into the %multiset.  Contrary
+       *  to a std::set the %multiset does not rely on unique keys and thus
+       *  multiple copies of the same element can be inserted.
+       *
+       *  Insertion requires logarithmic time.
+       */
+      iterator
+      insert(const value_type& __x)
+      { return _M_t._M_insert_equal(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(value_type&& __x)
+      { return _M_t._M_insert_equal(std::move(__x)); }
+#endif
+
+      /**
+       *  @brief Inserts an element into the %multiset.
+       *  @param  position  An iterator that serves as a hint as to where the
+       *                    element should be inserted.
+       *  @param  x  Element to be inserted.
+       *  @return An iterator that points to the inserted element.
+       *
+       *  This function inserts an element into the %multiset.  Contrary
+       *  to a std::set the %multiset does not rely on unique keys and thus
+       *  multiple copies of the same element can be inserted.
+       *
+       *  Note that the first parameter is only a hint and can potentially
+       *  improve the performance of the insertion process.  A bad hint would
+       *  cause no gains in efficiency.
+       *
+       *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html
+       *  for more on @a hinting.
+       *
+       *  Insertion requires logarithmic time (if the hint is not taken).
+       */
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      { return _M_t._M_insert_equal_(__position, __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      { return _M_t._M_insert_equal_(__position, std::move(__x)); }
+#endif
+
+      /**
+       *  @brief A template function that tries to insert a range of elements.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 inserted.
+       *  @param  last  Iterator pointing to the end of the range.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _M_t._M_insert_equal(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief Attempts to insert a list of elements into the %multiset.
+       *  @param  list  A std::initializer_list<value_type> of elements
+       *                to be inserted.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      void
+      insert(initializer_list<value_type> __l)
+      { this->insert(__l.begin(), __l.end()); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases an element from a %multiset.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *  @return An iterator pointing to the element immediately following
+       *          @a position prior to the element being erased. If no such 
+       *          element exists, end() is returned.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %multiset.  Note that this function only erases the element,
+       *  and that if the element is itself a pointer, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      iterator
+      erase(const_iterator __position)
+      { return _M_t.erase(__position); }
+#else
+      /**
+       *  @brief Erases an element from a %multiset.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %multiset.  Note that this function only erases the element,
+       *  and that if the element is itself a pointer, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      erase(iterator __position)
+      { _M_t.erase(__position); }
+#endif
+
+      /**
+       *  @brief Erases elements according to the provided key.
+       *  @param  x  Key of element to be erased.
+       *  @return  The number of elements erased.
+       *
+       *  This function erases all elements located by the given key from a
+       *  %multiset.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      size_type
+      erase(const key_type& __x)
+      { return _M_t.erase(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases a [first,last) range of elements from a %multiset.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *  @return The iterator @a last.
+       *
+       *  This function erases a sequence of elements from a %multiset.
+       *  Note that this function only erases the elements, and that if
+       *  the elements themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return _M_t.erase(__first, __last); }
+#else
+      /**
+       *  @brief Erases a [first,last) range of elements from a %multiset.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *
+       *  This function erases a sequence of elements from a %multiset.
+       *  Note that this function only erases the elements, and that if
+       *  the elements themselves are pointers, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      erase(iterator __first, iterator __last)
+      { _M_t.erase(__first, __last); }
+#endif
+
+      /**
+       *  Erases all elements in a %multiset.  Note that this function only
+       *  erases the elements, and that if the elements themselves are pointers,
+       *  the pointed-to memory is not touched in any way.  Managing the pointer
+       *  is the user's responsibility.
+       */
+      void
+      clear()
+      { _M_t.clear(); }
+
+      // multiset operations:
+
+      /**
+       *  @brief Finds the number of elements with given key.
+       *  @param  x  Key of elements to be located.
+       *  @return Number of elements with specified key.
+       */
+      size_type
+      count(const key_type& __x) const
+      { return _M_t.count(__x); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214.  set::find() missing const overload
+      //@{
+      /**
+       *  @brief Tries to locate an element in a %set.
+       *  @param  x  Element to be located.
+       *  @return  Iterator pointing to sought-after element, or end() if not
+       *           found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns an iterator
+       *  pointing to the sought after element.  If unsuccessful it returns the
+       *  past-the-end ( @c end() ) iterator.
+       */
+      iterator
+      find(const key_type& __x)
+      { return _M_t.find(__x); }
+
+      const_iterator
+      find(const key_type& __x) const
+      { return _M_t.find(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return  Iterator pointing to first element equal to or greater
+       *           than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful it returns an iterator
+       *  pointing to the first element that has a greater value than given key
+       *  or end() if no such element exists.
+       */
+      iterator
+      lower_bound(const key_type& __x)
+      { return _M_t.lower_bound(__x); }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return _M_t.lower_bound(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return Iterator pointing to the first element
+       *          greater than key, or end().
+       */
+      iterator
+      upper_bound(const key_type& __x)
+      { return _M_t.upper_bound(__x); }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return _M_t.upper_bound(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return  Pair of iterators that possibly points to the subsequence
+       *           matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       *
+       *  This function probably only makes sense for multisets.
+       */
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __x)
+      { return _M_t.equal_range(__x); }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __x) const
+      { return _M_t.equal_range(__x); }
+
+      template<typename _K1, typename _C1, typename _A1>
+        friend bool
+        operator==(const multiset<_K1, _C1, _A1>&,
+		   const multiset<_K1, _C1, _A1>&);
+
+      template<typename _K1, typename _C1, typename _A1>
+        friend bool
+        operator< (const multiset<_K1, _C1, _A1>&,
+		   const multiset<_K1, _C1, _A1>&);
+    };
+
+  /**
+   *  @brief  Multiset equality comparison.
+   *  @param  x  A %multiset.
+   *  @param  y  A %multiset of the same type as @a x.
+   *  @return  True iff the size and elements of the multisets are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  multisets.
+   *  Multisets are considered equivalent if their sizes are equal, and if
+   *  corresponding elements compare equal.
+  */
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator==(const multiset<_Key, _Compare, _Alloc>& __x,
+	       const multiset<_Key, _Compare, _Alloc>& __y)
+    { return __x._M_t == __y._M_t; }
+
+  /**
+   *  @brief  Multiset ordering relation.
+   *  @param  x  A %multiset.
+   *  @param  y  A %multiset of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  maps.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator<(const multiset<_Key, _Compare, _Alloc>& __x,
+	      const multiset<_Key, _Compare, _Alloc>& __y)
+    { return __x._M_t < __y._M_t; }
+
+  ///  Returns !(x == y).
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator!=(const multiset<_Key, _Compare, _Alloc>& __x,
+	       const multiset<_Key, _Compare, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  ///  Returns y < x.
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator>(const multiset<_Key,_Compare,_Alloc>& __x,
+	      const multiset<_Key,_Compare,_Alloc>& __y)
+    { return __y < __x; }
+
+  ///  Returns !(y < x)
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator<=(const multiset<_Key, _Compare, _Alloc>& __x,
+	       const multiset<_Key, _Compare, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  ///  Returns !(x < y)
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator>=(const multiset<_Key, _Compare, _Alloc>& __x,
+	       const multiset<_Key, _Compare, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::multiset::swap().
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline void
+    swap(multiset<_Key, _Compare, _Alloc>& __x,
+	 multiset<_Key, _Compare, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_MULTISET_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_numeric.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_numeric.h
new file mode 100644
index 000000000..1b6998d97
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_numeric.h
@@ -0,0 +1,386 @@
+// Numeric functions implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_numeric.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{numeric}
+ */
+
+#ifndef _STL_NUMERIC_H
+#define _STL_NUMERIC_H 1
+
+#include <bits/concept_check.h>
+#include <debug/debug.h>
+#include <bits/move.h> // For _GLIBCXX_MOVE
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Create a range of sequentially increasing values.
+   *
+   *  For each element in the range @p [first,last) assigns @p value and
+   *  increments @p value as if by @p ++value.
+   *
+   *  @param  first  Start of range.
+   *  @param  last  End of range.
+   *  @param  value  Starting value.
+   *  @return  Nothing.
+   */
+  template<typename _ForwardIterator, typename _Tp>
+    void
+    iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
+				  _ForwardIterator>)
+      __glibcxx_function_requires(_ConvertibleConcept<_Tp,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	{
+	  *__first = __value;
+	  ++__value;
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_ALGO
+
+  /**
+   *  @brief  Accumulate values in a range.
+   *
+   *  Accumulates the values in the range [first,last) using operator+().  The
+   *  initial value is @a init.  The values are processed in order.
+   *
+   *  @param  first  Start of range.
+   *  @param  last  End of range.
+   *  @param  init  Starting value to add other values to.
+   *  @return  The final sum.
+   */
+  template<typename _InputIterator, typename _Tp>
+    inline _Tp
+    accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	__init = __init + *__first;
+      return __init;
+    }
+
+  /**
+   *  @brief  Accumulate values in a range with operation.
+   *
+   *  Accumulates the values in the range [first,last) using the function
+   *  object @a binary_op.  The initial value is @a init.  The values are
+   *  processed in order.
+   *
+   *  @param  first  Start of range.
+   *  @param  last  End of range.
+   *  @param  init  Starting value to add other values to.
+   *  @param  binary_op  Function object to accumulate with.
+   *  @return  The final sum.
+   */
+  template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
+    inline _Tp
+    accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
+	       _BinaryOperation __binary_op)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for (; __first != __last; ++__first)
+	__init = __binary_op(__init, *__first);
+      return __init;
+    }
+
+  /**
+   *  @brief  Compute inner product of two ranges.
+   *
+   *  Starting with an initial value of @a init, multiplies successive
+   *  elements from the two ranges and adds each product into the accumulated
+   *  value using operator+().  The values in the ranges are processed in
+   *  order.
+   *
+   *  @param  first1  Start of range 1.
+   *  @param  last1  End of range 1.
+   *  @param  first2  Start of range 2.
+   *  @param  init  Starting value to add other values to.
+   *  @return  The final inner product.
+   */
+  template<typename _InputIterator1, typename _InputIterator2, typename _Tp>
+    inline _Tp
+    inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
+		  _InputIterator2 __first2, _Tp __init)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	__init = __init + (*__first1 * *__first2);
+      return __init;
+    }
+
+  /**
+   *  @brief  Compute inner product of two ranges.
+   *
+   *  Starting with an initial value of @a init, applies @a binary_op2 to
+   *  successive elements from the two ranges and accumulates each result into
+   *  the accumulated value using @a binary_op1.  The values in the ranges are
+   *  processed in order.
+   *
+   *  @param  first1  Start of range 1.
+   *  @param  last1  End of range 1.
+   *  @param  first2  Start of range 2.
+   *  @param  init  Starting value to add other values to.
+   *  @param  binary_op1  Function object to accumulate with.
+   *  @param  binary_op2  Function object to apply to pairs of input values.
+   *  @return  The final inner product.
+   */
+  template<typename _InputIterator1, typename _InputIterator2, typename _Tp,
+	   typename _BinaryOperation1, typename _BinaryOperation2>
+    inline _Tp
+    inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
+		  _InputIterator2 __first2, _Tp __init,
+		  _BinaryOperation1 __binary_op1,
+		  _BinaryOperation2 __binary_op2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+
+      for (; __first1 != __last1; ++__first1, ++__first2)
+	__init = __binary_op1(__init, __binary_op2(*__first1, *__first2));
+      return __init;
+    }
+
+  /**
+   *  @brief  Return list of partial sums
+   *
+   *  Accumulates the values in the range [first,last) using operator+().
+   *  As each successive input value is added into the total, that partial sum
+   *  is written to @a result.  Therefore, the first value in result is the
+   *  first value of the input, the second value in result is the sum of the
+   *  first and second input values, and so on.
+   *
+   *  @param  first  Start of input range.
+   *  @param  last  End of input range.
+   *  @param  result  Output to write sums to.
+   *  @return  Iterator pointing just beyond the values written to result.
+   */
+  template<typename _InputIterator, typename _OutputIterator>
+    _OutputIterator
+    partial_sum(_InputIterator __first, _InputIterator __last,
+		_OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				                         _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      _ValueType __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	{
+	  __value = __value + *__first;
+	  *++__result = __value;
+	}
+      return ++__result;
+    }
+
+  /**
+   *  @brief  Return list of partial sums
+   *
+   *  Accumulates the values in the range [first,last) using operator+().
+   *  As each successive input value is added into the total, that partial sum
+   *  is written to @a result.  Therefore, the first value in result is the
+   *  first value of the input, the second value in result is the sum of the
+   *  first and second input values, and so on.
+   *
+   *  @param  first  Start of input range.
+   *  @param  last  End of input range.
+   *  @param  result  Output to write sums to.
+   *  @return  Iterator pointing just beyond the values written to result.
+   */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _BinaryOperation>
+    _OutputIterator
+    partial_sum(_InputIterator __first, _InputIterator __last,
+		_OutputIterator __result, _BinaryOperation __binary_op)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				                         _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      _ValueType __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	{
+	  __value = __binary_op(__value, *__first);
+	  *++__result = __value;
+	}
+      return ++__result;
+    }
+
+  /**
+   *  @brief  Return differences between adjacent values.
+   *
+   *  Computes the difference between adjacent values in the range
+   *  [first,last) using operator-() and writes the result to @a result.
+   *
+   *  @param  first  Start of input range.
+   *  @param  last  End of input range.
+   *  @param  result  Output to write sums to.
+   *  @return  Iterator pointing just beyond the values written to result.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 539. partial_sum and adjacent_difference should mention requirements
+   */
+  template<typename _InputIterator, typename _OutputIterator>
+    _OutputIterator
+    adjacent_difference(_InputIterator __first,
+			_InputIterator __last, _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				                         _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      _ValueType __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	{
+	  _ValueType __tmp = *__first;
+	  *++__result = __tmp - __value;
+	  __value = _GLIBCXX_MOVE(__tmp);
+	}
+      return ++__result;
+    }
+
+  /**
+   *  @brief  Return differences between adjacent values.
+   *
+   *  Computes the difference between adjacent values in the range
+   *  [first,last) using the function object @a binary_op and writes the
+   *  result to @a result.
+   *
+   *  @param  first  Start of input range.
+   *  @param  last  End of input range.
+   *  @param  result  Output to write sums to.
+   *  @return  Iterator pointing just beyond the values written to result.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 539. partial_sum and adjacent_difference should mention requirements
+   */
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _BinaryOperation>
+    _OutputIterator
+    adjacent_difference(_InputIterator __first, _InputIterator __last,
+			_OutputIterator __result, _BinaryOperation __binary_op)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
+
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+				                         _ValueType>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return __result;
+      _ValueType __value = *__first;
+      *__result = __value;
+      while (++__first != __last)
+	{
+	  _ValueType __tmp = *__first;
+	  *++__result = __binary_op(__tmp, __value);
+	  __value = _GLIBCXX_MOVE(__tmp);
+	}
+      return ++__result;
+    }
+
+_GLIBCXX_END_NAMESPACE_ALGO
+} // namespace std
+
+#endif /* _STL_NUMERIC_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_pair.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_pair.h
new file mode 100644
index 000000000..8d137b29a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_pair.h
@@ -0,0 +1,279 @@
+// Pair implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_pair.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{utility}
+ */
+
+#ifndef _STL_PAIR_H
+#define _STL_PAIR_H 1
+
+#include <bits/move.h> // for std::move / std::forward, and std::swap
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <type_traits> // for std::__decay_and_strip too
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /// piecewise_construct_t
+  struct piecewise_construct_t { };
+
+  /// piecewise_construct
+  constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
+
+  // Forward declarations.
+  template<typename...>
+    class tuple;
+
+  template<int...>
+    struct _Index_tuple;
+#endif
+
+  /// Struct holding two objects of arbitrary type.
+  template<class _T1, class _T2>
+    struct pair
+    {
+      typedef _T1 first_type;    /// @c first_type is the first bound type
+      typedef _T2 second_type;   /// @c second_type is the second bound type
+
+      _T1 first;                 /// @c first is a copy of the first object
+      _T2 second;                /// @c second is a copy of the second object
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 265.  std::pair::pair() effects overly restrictive
+      /** The default constructor creates @c first and @c second using their
+       *  respective default constructors.  */
+      _GLIBCXX_CONSTEXPR pair()
+      : first(), second() { }
+
+      /** Two objects may be passed to a @c pair constructor to be copied.  */
+      _GLIBCXX_CONSTEXPR pair(const _T1& __a, const _T2& __b)
+      : first(__a), second(__b) { }
+
+      /** There is also a templated copy ctor for the @c pair class itself.  */
+      template<class _U1, class _U2>
+	_GLIBCXX_CONSTEXPR pair(const pair<_U1, _U2>& __p)
+	: first(__p.first), second(__p.second) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr pair(const pair&) = default;
+
+      // Implicit.
+      // pair(pair&&) = default;
+
+      // DR 811.
+      template<class _U1, class = typename
+	       std::enable_if<std::is_convertible<_U1, _T1>::value>::type>
+	pair(_U1&& __x, const _T2& __y)
+	: first(std::forward<_U1>(__x)), second(__y) { }
+
+      template<class _U2, class = typename
+	       std::enable_if<std::is_convertible<_U2, _T2>::value>::type>
+	pair(const _T1& __x, _U2&& __y)
+	: first(__x), second(std::forward<_U2>(__y)) { }
+
+      template<class _U1, class _U2, class = typename
+	       std::enable_if<std::is_convertible<_U1, _T1>::value
+			      && std::is_convertible<_U2, _T2>::value>::type>
+	pair(_U1&& __x, _U2&& __y)
+	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
+
+      template<class _U1, class _U2>
+	pair(pair<_U1, _U2>&& __p)
+	: first(std::forward<_U1>(__p.first)),
+	  second(std::forward<_U2>(__p.second)) { }
+
+      template<class... _Args1, class... _Args2>
+	pair(piecewise_construct_t,
+	     tuple<_Args1...> __first, tuple<_Args2...> __second)
+	: first(__cons<first_type>(std::move(__first))),
+	  second(__cons<second_type>(std::move(__second))) { }
+
+      pair&
+      operator=(const pair& __p)
+      {
+	first = __p.first;
+	second = __p.second;
+	return *this;
+      }
+
+      pair&
+      operator=(pair&& __p)
+      {
+	first = std::move(__p.first);
+	second = std::move(__p.second);
+	return *this;
+      }
+
+      template<class _U1, class _U2>
+	pair&
+	operator=(const pair<_U1, _U2>& __p)
+	{
+	  first = __p.first;
+	  second = __p.second;
+	  return *this;
+	}
+
+      template<class _U1, class _U2>
+	pair&
+	operator=(pair<_U1, _U2>&& __p)
+	{
+	  first = std::move(__p.first);
+	  second = std::move(__p.second);
+	  return *this;
+	}
+
+      void
+      swap(pair& __p)
+      {
+	using std::swap;
+	swap(first, __p.first);
+	swap(second, __p.second);
+      }
+
+    private:
+      template<typename _Tp, typename... _Args>
+	static _Tp
+	__cons(tuple<_Args...>&&);
+
+      template<typename _Tp, typename... _Args, int... _Indexes>
+	static _Tp
+	__do_cons(tuple<_Args...>&&, const _Index_tuple<_Indexes...>&);
+#endif
+    };
+
+  /// Two pairs of the same type are equal iff their members are equal.
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return __x.first == __y.first && __x.second == __y.second; }
+
+  /// <http://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html>
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return __x.first < __y.first
+	     || (!(__y.first < __x.first) && __x.second < __y.second); }
+
+  /// Uses @c operator== to find the result.
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return !(__x == __y); }
+
+  /// Uses @c operator< to find the result.
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return __y < __x; }
+
+  /// Uses @c operator< to find the result.
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return !(__y < __x); }
+
+  /// Uses @c operator< to find the result.
+  template<class _T1, class _T2>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+    { return !(__x < __y); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /// See std::pair::swap().
+  // Note:  no std::swap overloads in C++03 mode, this has performance
+  //        implications, see, eg, libstdc++/38466.
+  template<class _T1, class _T2>
+    inline void
+    swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
+    { __x.swap(__y); }
+#endif
+
+  /**
+   *  @brief A convenience wrapper for creating a pair from two objects.
+   *  @param  x  The first object.
+   *  @param  y  The second object.
+   *  @return   A newly-constructed pair<> object of the appropriate type.
+   *
+   *  The standard requires that the objects be passed by reference-to-const,
+   *  but LWG issue #181 says they should be passed by const value.  We follow
+   *  the LWG by default.
+   */
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 181.  make_pair() unintended behavior
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // NB: DR 706.
+  template<class _T1, class _T2>
+    inline pair<typename __decay_and_strip<_T1>::__type,
+		typename __decay_and_strip<_T2>::__type>
+    make_pair(_T1&& __x, _T2&& __y)
+    {
+      typedef typename __decay_and_strip<_T1>::__type __ds_type1;
+      typedef typename __decay_and_strip<_T2>::__type __ds_type2;
+      typedef pair<__ds_type1, __ds_type2> 	      __pair_type;
+      return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
+    }
+#else
+  template<class _T1, class _T2>
+    inline pair<_T1, _T2>
+    make_pair(_T1 __x, _T2 __y)
+    { return pair<_T1, _T2>(__x, __y); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_PAIR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_queue.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_queue.h
new file mode 100644
index 000000000..5f20072b6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_queue.h
@@ -0,0 +1,559 @@
+// Queue implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_queue.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{queue}
+ */
+
+#ifndef _STL_QUEUE_H
+#define _STL_QUEUE_H 1
+
+#include <bits/concept_check.h>
+#include <debug/debug.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  A standard container giving FIFO behavior.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets many of the requirements of a
+   *  <a href="tables.html#65">container</a>,
+   *  but does not define anything to do with iterators.  Very few of the
+   *  other standard container interfaces are defined.
+   *
+   *  This is not a true container, but an @e adaptor.  It holds another
+   *  container, and provides a wrapper interface to that container.  The
+   *  wrapper is what enforces strict first-in-first-out %queue behavior.
+   *
+   *  The second template parameter defines the type of the underlying
+   *  sequence/container.  It defaults to std::deque, but it can be any type
+   *  that supports @c front, @c back, @c push_back, and @c pop_front,
+   *  such as std::list or an appropriate user-defined type.
+   *
+   *  Members not found in @a normal containers are @c container_type,
+   *  which is a typedef for the second Sequence parameter, and @c push and
+   *  @c pop, which are standard %queue/FIFO operations.
+  */
+  template<typename _Tp, typename _Sequence = deque<_Tp> >
+    class queue
+    {
+      // concept requirements
+      typedef typename _Sequence::value_type _Sequence_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires(_Sequence, _FrontInsertionSequenceConcept)
+      __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
+      __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
+
+      template<typename _Tp1, typename _Seq1>
+        friend bool
+        operator==(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
+
+      template<typename _Tp1, typename _Seq1>
+        friend bool
+        operator<(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
+
+    public:
+      typedef typename _Sequence::value_type                value_type;
+      typedef typename _Sequence::reference                 reference;
+      typedef typename _Sequence::const_reference           const_reference;
+      typedef typename _Sequence::size_type                 size_type;
+      typedef          _Sequence                            container_type;
+
+    protected:
+      /**
+       *  'c' is the underlying container.  Maintainers wondering why
+       *  this isn't uglified as per style guidelines should note that
+       *  this name is specified in the standard, [23.2.3.1].  (Why?
+       *  Presumably for the same reason that it's protected instead
+       *  of private: to allow derivation.  But none of the other
+       *  containers allow for derivation.  Odd.)
+       */
+      _Sequence c;
+
+    public:
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      queue(const _Sequence& __c = _Sequence())
+      : c(__c) { }
+#else
+      explicit
+      queue(const _Sequence& __c)
+      : c(__c) { }
+
+      explicit
+      queue(_Sequence&& __c = _Sequence())
+      : c(std::move(__c)) { }
+#endif
+
+      /**
+       *  Returns true if the %queue is empty.
+       */
+      bool
+      empty() const
+      { return c.empty(); }
+
+      /**  Returns the number of elements in the %queue.  */
+      size_type
+      size() const
+      { return c.size(); }
+
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %queue.
+       */
+      reference
+      front()
+      {
+	__glibcxx_requires_nonempty();
+	return c.front();
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %queue.
+       */
+      const_reference
+      front() const
+      {
+	__glibcxx_requires_nonempty();
+	return c.front();
+      }
+
+      /**
+       *  Returns a read/write reference to the data at the last
+       *  element of the %queue.
+       */
+      reference
+      back()
+      {
+	__glibcxx_requires_nonempty();
+	return c.back();
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the last
+       *  element of the %queue.
+       */
+      const_reference
+      back() const
+      {
+	__glibcxx_requires_nonempty();
+	return c.back();
+      }
+
+      /**
+       *  @brief  Add data to the end of the %queue.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical %queue operation.  The function creates an
+       *  element at the end of the %queue and assigns the given data
+       *  to it.  The time complexity of the operation depends on the
+       *  underlying sequence.
+       */
+      void
+      push(const value_type& __x)
+      { c.push_back(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push(value_type&& __x)
+      { c.push_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace(_Args&&... __args)
+	{ c.emplace_back(std::forward<_Args>(__args)...); }
+#endif
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical %queue operation.  It shrinks the %queue by one.
+       *  The time complexity of the operation depends on the underlying
+       *  sequence.
+       *
+       *  Note that no data is returned, and if the first element's
+       *  data is needed, it should be retrieved before pop() is
+       *  called.
+       */
+      void
+      pop()
+      {
+	__glibcxx_requires_nonempty();
+	c.pop_front();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      swap(queue& __q)
+      {
+	using std::swap;
+	swap(c, __q.c);
+      }
+#endif
+    };
+
+  /**
+   *  @brief  Queue equality comparison.
+   *  @param  x  A %queue.
+   *  @param  y  A %queue of the same type as @a x.
+   *  @return  True iff the size and elements of the queues are equal.
+   *
+   *  This is an equivalence relation.  Complexity and semantics depend on the
+   *  underlying sequence type, but the expected rules are:  this relation is
+   *  linear in the size of the sequences, and queues are considered equivalent
+   *  if their sequences compare equal.
+  */
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator==(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return __x.c == __y.c; }
+
+  /**
+   *  @brief  Queue ordering relation.
+   *  @param  x  A %queue.
+   *  @param  y  A %queue of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is an total ordering relation.  Complexity and semantics
+   *  depend on the underlying sequence type, but the expected rules
+   *  are: this relation is linear in the size of the sequences, the
+   *  elements must be comparable with @c <, and
+   *  std::lexicographical_compare() is usually used to make the
+   *  determination.
+  */
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator<(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return __x.c < __y.c; }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator!=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator<=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator>=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
+    { return !(__x < __y); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Seq>
+    inline void
+    swap(queue<_Tp, _Seq>& __x, queue<_Tp, _Seq>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Tp, typename _Seq, typename _Alloc>
+    struct uses_allocator<queue<_Tp, _Seq>, _Alloc>
+    : public uses_allocator<_Seq, _Alloc>::type { };
+#endif
+
+  /**
+   *  @brief  A standard container automatically sorting its contents.
+   *
+   *  @ingroup sequences
+   *
+   *  This is not a true container, but an @e adaptor.  It holds
+   *  another container, and provides a wrapper interface to that
+   *  container.  The wrapper is what enforces priority-based sorting 
+   *  and %queue behavior.  Very few of the standard container/sequence
+   *  interface requirements are met (e.g., iterators).
+   *
+   *  The second template parameter defines the type of the underlying
+   *  sequence/container.  It defaults to std::vector, but it can be
+   *  any type that supports @c front(), @c push_back, @c pop_back,
+   *  and random-access iterators, such as std::deque or an
+   *  appropriate user-defined type.
+   *
+   *  The third template parameter supplies the means of making
+   *  priority comparisons.  It defaults to @c less<value_type> but
+   *  can be anything defining a strict weak ordering.
+   *
+   *  Members not found in @a normal containers are @c container_type,
+   *  which is a typedef for the second Sequence parameter, and @c
+   *  push, @c pop, and @c top, which are standard %queue operations.
+   *
+   *  @note No equality/comparison operators are provided for
+   *  %priority_queue.
+   *
+   *  @note Sorting of the elements takes place as they are added to,
+   *  and removed from, the %priority_queue using the
+   *  %priority_queue's member functions.  If you access the elements
+   *  by other means, and change their data such that the sorting
+   *  order would be different, the %priority_queue will not re-sort
+   *  the elements for you.  (How could it know to do so?)
+  */
+  template<typename _Tp, typename _Sequence = vector<_Tp>,
+	   typename _Compare  = less<typename _Sequence::value_type> >
+    class priority_queue
+    {
+      // concept requirements
+      typedef typename _Sequence::value_type _Sequence_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires(_Sequence, _SequenceConcept)
+      __glibcxx_class_requires(_Sequence, _RandomAccessContainerConcept)
+      __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
+      __glibcxx_class_requires4(_Compare, bool, _Tp, _Tp,
+				_BinaryFunctionConcept)
+
+    public:
+      typedef typename _Sequence::value_type                value_type;
+      typedef typename _Sequence::reference                 reference;
+      typedef typename _Sequence::const_reference           const_reference;
+      typedef typename _Sequence::size_type                 size_type;
+      typedef          _Sequence                            container_type;
+
+    protected:
+      //  See queue::c for notes on these names.
+      _Sequence  c;
+      _Compare   comp;
+
+    public:
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      priority_queue(const _Compare& __x = _Compare(),
+		     const _Sequence& __s = _Sequence())
+      : c(__s), comp(__x)
+      { std::make_heap(c.begin(), c.end(), comp); }
+#else
+      explicit
+      priority_queue(const _Compare& __x,
+		     const _Sequence& __s)
+      : c(__s), comp(__x)
+      { std::make_heap(c.begin(), c.end(), comp); }
+
+      explicit
+      priority_queue(const _Compare& __x = _Compare(),
+		     _Sequence&& __s = _Sequence())
+      : c(std::move(__s)), comp(__x)
+      { std::make_heap(c.begin(), c.end(), comp); }
+#endif
+
+      /**
+       *  @brief  Builds a %queue from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  x  A comparison functor describing a strict weak ordering.
+       *  @param  s  An initial sequence with which to start.
+       *
+       *  Begins by copying @a s, inserting a copy of the elements
+       *  from @a [first,last) into the copy of @a s, then ordering
+       *  the copy according to @a x.
+       *
+       *  For more information on function objects, see the
+       *  documentation on @link functors functor base
+       *  classes@endlink.
+       */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator>
+        priority_queue(_InputIterator __first, _InputIterator __last,
+		       const _Compare& __x = _Compare(),
+		       const _Sequence& __s = _Sequence())
+	: c(__s), comp(__x)
+        {
+	  __glibcxx_requires_valid_range(__first, __last);
+	  c.insert(c.end(), __first, __last);
+	  std::make_heap(c.begin(), c.end(), comp);
+	}
+#else
+      template<typename _InputIterator>
+        priority_queue(_InputIterator __first, _InputIterator __last,
+		       const _Compare& __x,
+		       const _Sequence& __s)
+	: c(__s), comp(__x)
+        {
+	  __glibcxx_requires_valid_range(__first, __last);
+	  c.insert(c.end(), __first, __last);
+	  std::make_heap(c.begin(), c.end(), comp);
+	}
+
+      template<typename _InputIterator>
+        priority_queue(_InputIterator __first, _InputIterator __last,
+		       const _Compare& __x = _Compare(),
+		       _Sequence&& __s = _Sequence())
+	: c(std::move(__s)), comp(__x)
+        {
+	  __glibcxx_requires_valid_range(__first, __last);
+	  c.insert(c.end(), __first, __last);
+	  std::make_heap(c.begin(), c.end(), comp);
+	}
+#endif
+
+      /**
+       *  Returns true if the %queue is empty.
+       */
+      bool
+      empty() const
+      { return c.empty(); }
+
+      /**  Returns the number of elements in the %queue.  */
+      size_type
+      size() const
+      { return c.size(); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %queue.
+       */
+      const_reference
+      top() const
+      {
+	__glibcxx_requires_nonempty();
+	return c.front();
+      }
+
+      /**
+       *  @brief  Add data to the %queue.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical %queue operation.
+       *  The time complexity of the operation depends on the underlying
+       *  sequence.
+       */
+      void
+      push(const value_type& __x)
+      {
+	c.push_back(__x);
+	std::push_heap(c.begin(), c.end(), comp);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push(value_type&& __x)
+      {
+	c.push_back(std::move(__x));
+	std::push_heap(c.begin(), c.end(), comp);
+      }
+
+      template<typename... _Args>
+        void
+        emplace(_Args&&... __args)
+	{
+	  c.emplace_back(std::forward<_Args>(__args)...);
+	  std::push_heap(c.begin(), c.end(), comp);
+	}
+#endif
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical %queue operation.  It shrinks the %queue
+       *  by one.  The time complexity of the operation depends on the
+       *  underlying sequence.
+       *
+       *  Note that no data is returned, and if the first element's
+       *  data is needed, it should be retrieved before pop() is
+       *  called.
+       */
+      void
+      pop()
+      {
+	__glibcxx_requires_nonempty();
+	std::pop_heap(c.begin(), c.end(), comp);
+	c.pop_back();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      swap(priority_queue& __pq)
+      {
+	using std::swap;
+	swap(c, __pq.c);
+	swap(comp, __pq.comp);
+      }
+#endif
+    };
+
+  // No equality/comparison operators are provided for priority_queue.
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Sequence, typename _Compare>
+    inline void
+    swap(priority_queue<_Tp, _Sequence, _Compare>& __x,
+	 priority_queue<_Tp, _Sequence, _Compare>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Tp, typename _Sequence, typename _Compare,
+	   typename _Alloc>
+    struct uses_allocator<priority_queue<_Tp, _Sequence, _Compare>, _Alloc>
+    : public uses_allocator<_Sequence, _Alloc>::type { };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_QUEUE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_raw_storage_iter.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_raw_storage_iter.h
new file mode 100644
index 000000000..87c9a660b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_raw_storage_iter.h
@@ -0,0 +1,109 @@
+// -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_raw_storage_iter.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _STL_RAW_STORAGE_ITERATOR_H
+#define _STL_RAW_STORAGE_ITERATOR_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  This iterator class lets algorithms store their results into
+   *  uninitialized memory.
+  */
+  template <class _OutputIterator, class _Tp>
+    class raw_storage_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    protected:
+      _OutputIterator _M_iter;
+
+    public:
+      explicit
+      raw_storage_iterator(_OutputIterator __x)
+      : _M_iter(__x) {}
+
+      raw_storage_iterator&
+      operator*() { return *this; }
+
+      raw_storage_iterator&
+      operator=(const _Tp& __element)
+      {
+	std::_Construct(std::__addressof(*_M_iter), __element);
+	return *this;
+      }
+
+      raw_storage_iterator<_OutputIterator, _Tp>&
+      operator++()
+      {
+	++_M_iter;
+	return *this;
+      }
+
+      raw_storage_iterator<_OutputIterator, _Tp>
+      operator++(int)
+      {
+	raw_storage_iterator<_OutputIterator, _Tp> __tmp = *this;
+	++_M_iter;
+	return __tmp;
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_relops.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_relops.h
new file mode 100644
index 000000000..4e79e54b3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_relops.h
@@ -0,0 +1,135 @@
+// std::rel_ops implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2008, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the, 2009 Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file bits/stl_relops.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{utility}
+ *
+ *  Inclusion of this file has been removed from
+ *  all of the other STL headers for safety reasons, except std_utility.h.
+ *  For more information, see the thread of about twenty messages starting
+ *  with http://gcc.gnu.org/ml/libstdc++/2001-01/msg00223.html, or
+ *  http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.ambiguous_overloads
+ *
+ *  Short summary: the rel_ops operators should be avoided for the present.
+ */
+
+#ifndef _STL_RELOPS_H
+#define _STL_RELOPS_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace rel_ops
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /** @namespace std::rel_ops
+     *  @brief  The generated relational operators are sequestered here.
+     */
+
+    /**
+     *  @brief Defines @c != for arbitrary types, in terms of @c ==.
+     *  @param  x  A thing.
+     *  @param  y  Another thing.
+     *  @return   x != y
+     *
+     *  This function uses @c == to determine its result.
+     */
+    template <class _Tp>
+      inline bool
+      operator!=(const _Tp& __x, const _Tp& __y)
+      { return !(__x == __y); }
+
+    /**
+     *  @brief Defines @c > for arbitrary types, in terms of @c <.
+     *  @param  x  A thing.
+     *  @param  y  Another thing.
+     *  @return   x > y
+     *
+     *  This function uses @c < to determine its result.
+     */
+    template <class _Tp>
+      inline bool
+      operator>(const _Tp& __x, const _Tp& __y)
+      { return __y < __x; }
+
+    /**
+     *  @brief Defines @c <= for arbitrary types, in terms of @c <.
+     *  @param  x  A thing.
+     *  @param  y  Another thing.
+     *  @return   x <= y
+     *
+     *  This function uses @c < to determine its result.
+     */
+    template <class _Tp>
+      inline bool
+      operator<=(const _Tp& __x, const _Tp& __y)
+      { return !(__y < __x); }
+
+    /**
+     *  @brief Defines @c >= for arbitrary types, in terms of @c <.
+     *  @param  x  A thing.
+     *  @param  y  Another thing.
+     *  @return   x >= y
+     *
+     *  This function uses @c < to determine its result.
+     */
+    template <class _Tp>
+      inline bool
+      operator>=(const _Tp& __x, const _Tp& __y)
+      { return !(__x < __y); }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace rel_ops
+
+} // namespace std
+
+#endif /* _STL_RELOPS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_set.h
new file mode 100644
index 000000000..77d0f8022
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_set.h
@@ -0,0 +1,753 @@
+// Set implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_set.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{set}
+ */
+
+#ifndef _STL_SET_H
+#define _STL_SET_H 1
+
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  @brief A standard container made up of unique keys, which can be
+   *  retrieved in logarithmic time.
+   *
+   *  @ingroup associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and an
+   *  <a href="tables.html#69">associative container</a> (using unique keys).
+   *
+   *  Sets support bidirectional iterators.
+   *
+   *  @param  Key  Type of key objects.
+   *  @param  Compare  Comparison function object type, defaults to less<Key>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   *
+   *  The private tree data is declared exactly the same way for set and
+   *  multiset; the distinction is made entirely in how the tree functions are
+   *  called (*_unique versus *_equal, same as the standard).
+  */
+  template<typename _Key, typename _Compare = std::less<_Key>,
+	   typename _Alloc = std::allocator<_Key> >
+    class set
+    {
+      // concept requirements
+      typedef typename _Alloc::value_type                   _Alloc_value_type;
+      __glibcxx_class_requires(_Key, _SGIAssignableConcept)
+      __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
+				_BinaryFunctionConcept)
+      __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)
+
+    public:
+      // typedefs:
+      //@{
+      /// Public typedefs.
+      typedef _Key     key_type;
+      typedef _Key     value_type;
+      typedef _Compare key_compare;
+      typedef _Compare value_compare;
+      typedef _Alloc   allocator_type;
+      //@}
+
+    private:
+      typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
+
+      typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
+		       key_compare, _Key_alloc_type> _Rep_type;
+      _Rep_type _M_t;  // Red-black tree representing set.
+
+    public:
+      //@{
+      ///  Iterator-related typedefs.
+      typedef typename _Key_alloc_type::pointer             pointer;
+      typedef typename _Key_alloc_type::const_pointer       const_pointer;
+      typedef typename _Key_alloc_type::reference           reference;
+      typedef typename _Key_alloc_type::const_reference     const_reference;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 103. set::iterator is required to be modifiable,
+      // but this allows modification of keys.
+      typedef typename _Rep_type::const_iterator            iterator;
+      typedef typename _Rep_type::const_iterator            const_iterator;
+      typedef typename _Rep_type::const_reverse_iterator    reverse_iterator;
+      typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+      typedef typename _Rep_type::size_type                 size_type;
+      typedef typename _Rep_type::difference_type           difference_type;
+      //@}
+
+      // allocation/deallocation
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      set()
+      : _M_t() { }
+
+      /**
+       *  @brief  Creates a %set with no elements.
+       *  @param  comp  Comparator to use.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      set(const _Compare& __comp,
+	  const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a) { }
+
+      /**
+       *  @brief  Builds a %set from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *
+       *  Create a %set consisting of copies of the elements from [first,last).
+       *  This is linear in N if the range is already sorted, and NlogN
+       *  otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+	set(_InputIterator __first, _InputIterator __last)
+	: _M_t()
+	{ _M_t._M_insert_unique(__first, __last); }
+
+      /**
+       *  @brief  Builds a %set from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %set consisting of copies of the elements from [first,last).
+       *  This is linear in N if the range is already sorted, and NlogN
+       *  otherwise (where N is distance(first,last)).
+       */
+      template<typename _InputIterator>
+	set(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp,
+	    const allocator_type& __a = allocator_type())
+	: _M_t(__comp, __a)
+	{ _M_t._M_insert_unique(__first, __last); }
+
+      /**
+       *  @brief  %Set copy constructor.
+       *  @param  x  A %set of identical element and allocator types.
+       *
+       *  The newly-created %set uses a copy of the allocation object used
+       *  by @a x.
+       */
+      set(const set& __x)
+      : _M_t(__x._M_t) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+     /**
+       *  @brief %Set move constructor
+       *  @param x  A %set of identical element and allocator types.
+       *
+       *  The newly-created %set contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %set.
+       */
+      set(set&& __x)
+      : _M_t(std::move(__x._M_t)) { }
+
+      /**
+       *  @brief  Builds a %set from an initializer_list.
+       *  @param  l  An initializer_list.
+       *  @param  comp  A comparison functor.
+       *  @param  a  An allocator object.
+       *
+       *  Create a %set consisting of copies of the elements in the list.
+       *  This is linear in N if the list is already sorted, and NlogN
+       *  otherwise (where N is @a l.size()).
+       */
+      set(initializer_list<value_type> __l,
+	  const _Compare& __comp = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _M_t(__comp, __a)
+      { _M_t._M_insert_unique(__l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  %Set assignment operator.
+       *  @param  x  A %set of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but unlike the copy constructor,
+       *  the allocator object is not copied.
+       */
+      set&
+      operator=(const set& __x)
+      {
+	_M_t = __x._M_t;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief %Set move assignment operator.
+       *  @param x  A %set of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this %set (without copying).
+       *  @a x is a valid, but unspecified %set.
+       */
+      set&
+      operator=(set&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+      	return *this;
+      }
+
+      /**
+       *  @brief  %Set list assignment operator.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %set with copies of the elements in the
+       *  initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %set and
+       *  that the resulting %set's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      // accessors:
+
+      ///  Returns the comparison object with which the %set was constructed.
+      key_compare
+      key_comp() const
+      { return _M_t.key_comp(); }
+      ///  Returns the comparison object with which the %set was constructed.
+      value_compare
+      value_comp() const
+      { return _M_t.key_comp(); }
+      ///  Returns the allocator object with which the %set was constructed.
+      allocator_type
+      get_allocator() const
+      { return _M_t.get_allocator(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %set.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      iterator
+      begin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  element in the %set.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      iterator
+      end() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the last
+       *  element in the %set.  Iteration is done in descending order according
+       *  to the keys.
+       */
+      reverse_iterator
+      rbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %set.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      rend() const
+      { return _M_t.rend(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  element in the %set.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      iterator
+      cbegin() const
+      { return _M_t.begin(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the last
+       *  element in the %set.  Iteration is done in ascending order according
+       *  to the keys.
+       */
+      iterator
+      cend() const
+      { return _M_t.end(); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the last
+       *  element in the %set.  Iteration is done in descending order according
+       *  to the keys.
+       */
+      reverse_iterator
+      crbegin() const
+      { return _M_t.rbegin(); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points to the
+       *  last pair in the %set.  Iteration is done in descending order
+       *  according to the keys.
+       */
+      reverse_iterator
+      crend() const
+      { return _M_t.rend(); }
+#endif
+
+      ///  Returns true if the %set is empty.
+      bool
+      empty() const
+      { return _M_t.empty(); }
+
+      ///  Returns the size of the %set.
+      size_type
+      size() const
+      { return _M_t.size(); }
+
+      ///  Returns the maximum size of the %set.
+      size_type
+      max_size() const
+      { return _M_t.max_size(); }
+
+      /**
+       *  @brief  Swaps data with another %set.
+       *  @param  x  A %set of the same element and allocator types.
+       *
+       *  This exchanges the elements between two sets in constant time.
+       *  (It is only swapping a pointer, an integer, and an instance of
+       *  the @c Compare type (which itself is often stateless and empty), so it
+       *  should be quite fast.)
+       *  Note that the global std::swap() function is specialized such that
+       *  std::swap(s1,s2) will feed to this function.
+       */
+      void
+      swap(set& __x)
+      { _M_t.swap(__x._M_t); }
+
+      // insert/erase
+      /**
+       *  @brief Attempts to insert an element into the %set.
+       *  @param  x  Element to be inserted.
+       *  @return  A pair, of which the first element is an iterator that points
+       *           to the possibly inserted element, and the second is a bool
+       *           that is true if the element was actually inserted.
+       *
+       *  This function attempts to insert an element into the %set.  A %set
+       *  relies on unique keys and thus an element is only inserted if it is
+       *  not already present in the %set.
+       *
+       *  Insertion requires logarithmic time.
+       */
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      {
+	std::pair<typename _Rep_type::iterator, bool> __p =
+	  _M_t._M_insert_unique(__x);
+	return std::pair<iterator, bool>(__p.first, __p.second);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      std::pair<iterator, bool>
+      insert(value_type&& __x)
+      {
+	std::pair<typename _Rep_type::iterator, bool> __p =
+	  _M_t._M_insert_unique(std::move(__x));
+	return std::pair<iterator, bool>(__p.first, __p.second);
+      }
+#endif
+
+      /**
+       *  @brief Attempts to insert an element into the %set.
+       *  @param  position  An iterator that serves as a hint as to where the
+       *                    element should be inserted.
+       *  @param  x  Element to be inserted.
+       *  @return  An iterator that points to the element with key of @a x (may
+       *           or may not be the element passed in).
+       *
+       *  This function is not concerned about whether the insertion took place,
+       *  and thus does not return a boolean like the single-argument insert()
+       *  does.  Note that the first parameter is only a hint and can
+       *  potentially improve the performance of the insertion process.  A bad
+       *  hint would cause no gains in efficiency.
+       *
+       *  For more on @a hinting, see:
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html
+       *
+       *  Insertion requires logarithmic time (if the hint is not taken).
+       */
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      { return _M_t._M_insert_unique_(__position, __x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      { return _M_t._M_insert_unique_(__position, std::move(__x)); }
+#endif
+
+      /**
+       *  @brief A template function that attempts to insert a range
+       *  of elements.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 inserted.
+       *  @param  last  Iterator pointing to the end of the range.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      template<typename _InputIterator>
+	void
+	insert(_InputIterator __first, _InputIterator __last)
+	{ _M_t._M_insert_unique(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief Attempts to insert a list of elements into the %set.
+       *  @param  list  A std::initializer_list<value_type> of elements
+       *                to be inserted.
+       *
+       *  Complexity similar to that of the range constructor.
+       */
+      void
+      insert(initializer_list<value_type> __l)
+      { this->insert(__l.begin(), __l.end()); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases an element from a %set.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *  @return An iterator pointing to the element immediately following
+       *          @a position prior to the element being erased. If no such
+       *          element exists, end() is returned.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %set.  Note that this function only erases the element, and
+       *  that if the element is itself a pointer, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      iterator
+      erase(const_iterator __position)
+      { return _M_t.erase(__position); }
+#else
+      /**
+       *  @brief Erases an element from a %set.
+       *  @param  position  An iterator pointing to the element to be erased.
+       *
+       *  This function erases an element, pointed to by the given iterator,
+       *  from a %set.  Note that this function only erases the element, and
+       *  that if the element is itself a pointer, the pointed-to memory is not
+       *  touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      void
+      erase(iterator __position)
+      { _M_t.erase(__position); }
+#endif
+
+      /**
+       *  @brief Erases elements according to the provided key.
+       *  @param  x  Key of element to be erased.
+       *  @return  The number of elements erased.
+       *
+       *  This function erases all the elements located by the given key from
+       *  a %set.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      size_type
+      erase(const key_type& __x)
+      { return _M_t.erase(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      /**
+       *  @brief Erases a [first,last) range of elements from a %set.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *  @return The iterator @a last.
+       *
+       *  This function erases a sequence of elements from a %set.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return _M_t.erase(__first, __last); }
+#else
+      /**
+       *  @brief Erases a [first,last) range of elements from a %set.
+       *  @param  first  Iterator pointing to the start of the range to be
+       *                 erased.
+       *  @param  last  Iterator pointing to the end of the range to be erased.
+       *
+       *  This function erases a sequence of elements from a %set.
+       *  Note that this function only erases the element, and that if
+       *  the element is itself a pointer, the pointed-to memory is not touched
+       *  in any way.  Managing the pointer is the user's responsibility.
+       */
+      void
+      erase(iterator __first, iterator __last)
+      { _M_t.erase(__first, __last); }
+#endif
+
+      /**
+       *  Erases all elements in a %set.  Note that this function only erases
+       *  the elements, and that if the elements themselves are pointers, the
+       *  pointed-to memory is not touched in any way.  Managing the pointer is
+       *  the user's responsibility.
+       */
+      void
+      clear()
+      { _M_t.clear(); }
+
+      // set operations:
+
+      /**
+       *  @brief  Finds the number of elements.
+       *  @param  x  Element to located.
+       *  @return  Number of elements with specified key.
+       *
+       *  This function only makes sense for multisets; for set the result will
+       *  either be 0 (not present) or 1 (present).
+       */
+      size_type
+      count(const key_type& __x) const
+      { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214.  set::find() missing const overload
+      //@{
+      /**
+       *  @brief Tries to locate an element in a %set.
+       *  @param  x  Element to be located.
+       *  @return  Iterator pointing to sought-after element, or end() if not
+       *           found.
+       *
+       *  This function takes a key and tries to locate the element with which
+       *  the key matches.  If successful the function returns an iterator
+       *  pointing to the sought after element.  If unsuccessful it returns the
+       *  past-the-end ( @c end() ) iterator.
+       */
+      iterator
+      find(const key_type& __x)
+      { return _M_t.find(__x); }
+
+      const_iterator
+      find(const key_type& __x) const
+      { return _M_t.find(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds the beginning of a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return  Iterator pointing to first element equal to or greater
+       *           than key, or end().
+       *
+       *  This function returns the first element of a subsequence of elements
+       *  that matches the given key.  If unsuccessful it returns an iterator
+       *  pointing to the first element that has a greater value than given key
+       *  or end() if no such element exists.
+       */
+      iterator
+      lower_bound(const key_type& __x)
+      { return _M_t.lower_bound(__x); }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return _M_t.lower_bound(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds the end of a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return Iterator pointing to the first element
+       *          greater than key, or end().
+       */
+      iterator
+      upper_bound(const key_type& __x)
+      { return _M_t.upper_bound(__x); }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return _M_t.upper_bound(__x); }
+      //@}
+
+      //@{
+      /**
+       *  @brief Finds a subsequence matching given key.
+       *  @param  x  Key to be located.
+       *  @return  Pair of iterators that possibly points to the subsequence
+       *           matching given key.
+       *
+       *  This function is equivalent to
+       *  @code
+       *    std::make_pair(c.lower_bound(val),
+       *                   c.upper_bound(val))
+       *  @endcode
+       *  (but is faster than making the calls separately).
+       *
+       *  This function probably only makes sense for multisets.
+       */
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __x)
+      { return _M_t.equal_range(__x); }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __x) const
+      { return _M_t.equal_range(__x); }
+      //@}
+
+      template<typename _K1, typename _C1, typename _A1>
+	friend bool
+	operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
+
+      template<typename _K1, typename _C1, typename _A1>
+	friend bool
+	operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
+    };
+
+
+  /**
+   *  @brief  Set equality comparison.
+   *  @param  x  A %set.
+   *  @param  y  A %set of the same type as @a x.
+   *  @return  True iff the size and elements of the sets are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the sets.
+   *  Sets are considered equivalent if their sizes are equal, and if
+   *  corresponding elements compare equal.
+  */
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator==(const set<_Key, _Compare, _Alloc>& __x,
+	       const set<_Key, _Compare, _Alloc>& __y)
+    { return __x._M_t == __y._M_t; }
+
+  /**
+   *  @brief  Set ordering relation.
+   *  @param  x  A %set.
+   *  @param  y  A %set of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  maps.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator<(const set<_Key, _Compare, _Alloc>& __x,
+	      const set<_Key, _Compare, _Alloc>& __y)
+    { return __x._M_t < __y._M_t; }
+
+  ///  Returns !(x == y).
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator!=(const set<_Key, _Compare, _Alloc>& __x,
+	       const set<_Key, _Compare, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  ///  Returns y < x.
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator>(const set<_Key, _Compare, _Alloc>& __x,
+	      const set<_Key, _Compare, _Alloc>& __y)
+    { return __y < __x; }
+
+  ///  Returns !(y < x)
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator<=(const set<_Key, _Compare, _Alloc>& __x,
+	       const set<_Key, _Compare, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  ///  Returns !(x < y)
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline bool
+    operator>=(const set<_Key, _Compare, _Alloc>& __x,
+	       const set<_Key, _Compare, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::set::swap().
+  template<typename _Key, typename _Compare, typename _Alloc>
+    inline void
+    swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} //namespace std
+#endif /* _STL_SET_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_stack.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_stack.h
new file mode 100644
index 000000000..73c8bbd5d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_stack.h
@@ -0,0 +1,300 @@
+// Stack implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_stack.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{stack}
+ */
+
+#ifndef _STL_STACK_H
+#define _STL_STACK_H 1
+
+#include <bits/concept_check.h>
+#include <debug/debug.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  A standard container giving FILO behavior.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets many of the requirements of a
+   *  <a href="tables.html#65">container</a>,
+   *  but does not define anything to do with iterators.  Very few of the
+   *  other standard container interfaces are defined.
+   *
+   *  This is not a true container, but an @e adaptor.  It holds
+   *  another container, and provides a wrapper interface to that
+   *  container.  The wrapper is what enforces strict
+   *  first-in-last-out %stack behavior.
+   *
+   *  The second template parameter defines the type of the underlying
+   *  sequence/container.  It defaults to std::deque, but it can be
+   *  any type that supports @c back, @c push_back, and @c pop_front,
+   *  such as std::list, std::vector, or an appropriate user-defined
+   *  type.
+   *
+   *  Members not found in @a normal containers are @c container_type,
+   *  which is a typedef for the second Sequence parameter, and @c
+   *  push, @c pop, and @c top, which are standard %stack/FILO
+   *  operations.
+  */
+  template<typename _Tp, typename _Sequence = deque<_Tp> >
+    class stack
+    {
+      // concept requirements
+      typedef typename _Sequence::value_type _Sequence_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
+      __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
+
+      template<typename _Tp1, typename _Seq1>
+        friend bool
+        operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
+
+      template<typename _Tp1, typename _Seq1>
+        friend bool
+        operator<(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
+
+    public:
+      typedef typename _Sequence::value_type                value_type;
+      typedef typename _Sequence::reference                 reference;
+      typedef typename _Sequence::const_reference           const_reference;
+      typedef typename _Sequence::size_type                 size_type;
+      typedef          _Sequence                            container_type;
+
+    protected:
+      //  See queue::c for notes on this name.
+      _Sequence c;
+
+    public:
+      // XXX removed old def ctor, added def arg to this one to match 14882
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      stack(const _Sequence& __c = _Sequence())
+      : c(__c) { }
+#else
+      explicit
+      stack(const _Sequence& __c)
+      : c(__c) { }
+
+      explicit
+      stack(_Sequence&& __c = _Sequence())
+      : c(std::move(__c)) { }
+#endif
+
+      /**
+       *  Returns true if the %stack is empty.
+       */
+      bool
+      empty() const
+      { return c.empty(); }
+
+      /**  Returns the number of elements in the %stack.  */
+      size_type
+      size() const
+      { return c.size(); }
+
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %stack.
+       */
+      reference
+      top()
+      {
+	__glibcxx_requires_nonempty();
+	return c.back();
+      }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %stack.
+       */
+      const_reference
+      top() const
+      {
+	__glibcxx_requires_nonempty();
+	return c.back();
+      }
+
+      /**
+       *  @brief  Add data to the top of the %stack.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical %stack operation.  The function creates an
+       *  element at the top of the %stack and assigns the given data
+       *  to it.  The time complexity of the operation depends on the
+       *  underlying sequence.
+       */
+      void
+      push(const value_type& __x)
+      { c.push_back(__x); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push(value_type&& __x)
+      { c.push_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace(_Args&&... __args)
+	{ c.emplace_back(std::forward<_Args>(__args)...); }
+#endif
+
+      /**
+       *  @brief  Removes first element.
+       *
+       *  This is a typical %stack operation.  It shrinks the %stack
+       *  by one.  The time complexity of the operation depends on the
+       *  underlying sequence.
+       *
+       *  Note that no data is returned, and if the first element's
+       *  data is needed, it should be retrieved before pop() is
+       *  called.
+       */
+      void
+      pop()
+      {
+	__glibcxx_requires_nonempty();
+	c.pop_back();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      swap(stack& __s)
+      {
+	using std::swap;
+	swap(c, __s.c);
+      }
+#endif
+    };
+
+  /**
+   *  @brief  Stack equality comparison.
+   *  @param  x  A %stack.
+   *  @param  y  A %stack of the same type as @a x.
+   *  @return  True iff the size and elements of the stacks are equal.
+   *
+   *  This is an equivalence relation.  Complexity and semantics
+   *  depend on the underlying sequence type, but the expected rules
+   *  are: this relation is linear in the size of the sequences, and
+   *  stacks are considered equivalent if their sequences compare
+   *  equal.
+  */
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return __x.c == __y.c; }
+
+  /**
+   *  @brief  Stack ordering relation.
+   *  @param  x  A %stack.
+   *  @param  y  A %stack of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is an total ordering relation.  Complexity and semantics
+   *  depend on the underlying sequence type, but the expected rules
+   *  are: this relation is linear in the size of the sequences, the
+   *  elements must be comparable with @c <, and
+   *  std::lexicographical_compare() is usually used to make the
+   *  determination.
+  */
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return __x.c < __y.c; }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator!=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator<=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Seq>
+    inline bool
+    operator>=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
+    { return !(__x < __y); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Seq>
+    inline void
+    swap(stack<_Tp, _Seq>& __x, stack<_Tp, _Seq>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Tp, typename _Seq, typename _Alloc>
+    struct uses_allocator<stack<_Tp, _Seq>, _Alloc>
+    : public uses_allocator<_Seq, _Alloc>::type { };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_STACK_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tempbuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tempbuf.h
new file mode 100644
index 000000000..a99dac930
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tempbuf.h
@@ -0,0 +1,273 @@
+// Temporary buffer implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_tempbuf.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _STL_TEMPBUF_H
+#define _STL_TEMPBUF_H 1
+
+#include <bits/stl_algobase.h>
+#include <bits/stl_construct.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Allocates a temporary buffer.
+   *  @param  len  The number of objects of type Tp.
+   *  @return See full description.
+   *
+   *  Reinventing the wheel, but this time with prettier spokes!
+   *
+   *  This function tries to obtain storage for @c len adjacent Tp
+   *  objects.  The objects themselves are not constructed, of course.
+   *  A pair<> is returned containing <em>the buffer s address and
+   *  capacity (in the units of sizeof(Tp)), or a pair of 0 values if
+   *  no storage can be obtained.</em>  Note that the capacity obtained
+   *  may be less than that requested if the memory is unavailable;
+   *  you should compare len with the .second return value.
+   *
+   * Provides the nothrow exception guarantee.
+   */
+  template<typename _Tp>
+    pair<_Tp*, ptrdiff_t>
+    get_temporary_buffer(ptrdiff_t __len)
+    {
+      const ptrdiff_t __max =
+	__gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
+      if (__len > __max)
+	__len = __max;
+      
+      while (__len > 0) 
+	{
+	  _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 
+							std::nothrow));
+	  if (__tmp != 0)
+	    return std::pair<_Tp*, ptrdiff_t>(__tmp, __len);
+	  __len /= 2;
+	}
+      return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
+    }
+
+  /**
+   *  @brief The companion to get_temporary_buffer().
+   *  @param  p  A buffer previously allocated by get_temporary_buffer.
+   *  @return   None.
+   *
+   *  Frees the memory pointed to by p.
+   */
+  template<typename _Tp>
+    inline void
+    return_temporary_buffer(_Tp* __p)
+    { ::operator delete(__p, std::nothrow); }
+
+
+  /**
+   *  This class is used in two places: stl_algo.h and ext/memory,
+   *  where it is wrapped as the temporary_buffer class.  See
+   *  temporary_buffer docs for more notes.
+   */
+  template<typename _ForwardIterator, typename _Tp>
+    class _Temporary_buffer
+    {
+      // concept requirements
+      __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept)
+
+    public:
+      typedef _Tp         value_type;
+      typedef value_type* pointer;
+      typedef pointer     iterator;
+      typedef ptrdiff_t   size_type;
+
+    protected:
+      size_type  _M_original_len;
+      size_type  _M_len;
+      pointer    _M_buffer;
+
+    public:
+      /// As per Table mumble.
+      size_type
+      size() const
+      { return _M_len; }
+
+      /// Returns the size requested by the constructor; may be >size().
+      size_type
+      requested_size() const
+      { return _M_original_len; }
+
+      /// As per Table mumble.
+      iterator
+      begin()
+      { return _M_buffer; }
+
+      /// As per Table mumble.
+      iterator
+      end()
+      { return _M_buffer + _M_len; }
+
+      /**
+       * Constructs a temporary buffer of a size somewhere between
+       * zero and the size of the given range.
+       */
+      _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last);
+
+      ~_Temporary_buffer()
+      {
+	std::_Destroy(_M_buffer, _M_buffer + _M_len);
+	std::return_temporary_buffer(_M_buffer);
+      }
+
+    private:
+      // Disable copy constructor and assignment operator.
+      _Temporary_buffer(const _Temporary_buffer&);
+
+      void
+      operator=(const _Temporary_buffer&);
+    };
+
+
+  template<bool>
+    struct __uninitialized_construct_buf_dispatch
+    {
+      template<typename _ForwardIterator, typename _Tp>
+        static void
+        __ucr(_ForwardIterator __first, _ForwardIterator __last,
+	      _Tp& __value)
+        {
+	  if(__first == __last)
+	    return;
+
+	  _ForwardIterator __cur = __first;
+	  __try
+	    {
+	      std::_Construct(std::__addressof(*__first),
+			      _GLIBCXX_MOVE(__value));
+	      _ForwardIterator __prev = __cur;
+	      ++__cur;
+	      for(; __cur != __last; ++__cur, ++__prev)
+		std::_Construct(std::__addressof(*__cur),
+				_GLIBCXX_MOVE(*__prev));
+	      __value = _GLIBCXX_MOVE(*__prev);
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__first, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_construct_buf_dispatch<true>
+    {
+      template<typename _ForwardIterator, typename _Tp>
+        static void
+        __ucr(_ForwardIterator, _ForwardIterator, _Tp&) { }
+    };
+
+  // Constructs objects in the range [first, last).
+  // Note that while these new objects will take valid values,
+  // their exact value is not defined. In particular they may
+  // be 'moved from'.
+  //
+  // While __value may altered during this algorithm, it will have
+  // the same value when the algorithm finishes, unless one of the
+  // constructions throws.
+  //
+  // Requirements: _ForwardIterator::value_type(_Tp&&) is valid.
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    __uninitialized_construct_buf(_ForwardIterator __first,
+				  _ForwardIterator __last,
+				  _Tp& __value)
+    {
+      typedef typename std::iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      std::__uninitialized_construct_buf_dispatch<
+        __has_trivial_constructor(_ValueType)>::
+	  __ucr(__first, __last, __value);
+    }
+
+  template<typename _ForwardIterator, typename _Tp>
+    _Temporary_buffer<_ForwardIterator, _Tp>::
+    _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
+    : _M_original_len(std::distance(__first, __last)),
+      _M_len(0), _M_buffer(0)
+    {
+      __try
+	{
+	  std::pair<pointer, size_type> __p(std::get_temporary_buffer<
+					    value_type>(_M_original_len));
+	  _M_buffer = __p.first;
+	  _M_len = __p.second;
+	  if(_M_buffer)
+	    std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len,
+					       *__first);
+	}
+      __catch(...)
+	{
+	  std::return_temporary_buffer(_M_buffer);
+	  _M_buffer = 0;
+	  _M_len = 0;
+	  __throw_exception_again;
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_TEMPBUF_H */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tree.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tree.h
new file mode 100644
index 000000000..85681d2da
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_tree.h
@@ -0,0 +1,1601 @@
+// RB tree implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ */
+
+/** @file bits/stl_tree.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{map or set}
+ */
+
+#ifndef _STL_TREE_H
+#define _STL_TREE_H 1
+
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_function.h>
+#include <bits/cpp_type_traits.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Red-black tree class, designed for use in implementing STL
+  // associative containers (set, multiset, map, and multimap). The
+  // insertion and deletion algorithms are based on those in Cormen,
+  // Leiserson, and Rivest, Introduction to Algorithms (MIT Press,
+  // 1990), except that
+  //
+  // (1) the header cell is maintained with links not only to the root
+  // but also to the leftmost node of the tree, to enable constant
+  // time begin(), and to the rightmost node of the tree, to enable
+  // linear time performance when used with the generic set algorithms
+  // (set_union, etc.)
+  // 
+  // (2) when a node being deleted has two children its successor node
+  // is relinked into its place, rather than copied, so that the only
+  // iterators invalidated are those referring to the deleted node.
+
+  enum _Rb_tree_color { _S_red = false, _S_black = true };
+
+  struct _Rb_tree_node_base
+  {
+    typedef _Rb_tree_node_base* _Base_ptr;
+    typedef const _Rb_tree_node_base* _Const_Base_ptr;
+
+    _Rb_tree_color	_M_color;
+    _Base_ptr		_M_parent;
+    _Base_ptr		_M_left;
+    _Base_ptr		_M_right;
+
+    static _Base_ptr
+    _S_minimum(_Base_ptr __x)
+    {
+      while (__x->_M_left != 0) __x = __x->_M_left;
+      return __x;
+    }
+
+    static _Const_Base_ptr
+    _S_minimum(_Const_Base_ptr __x)
+    {
+      while (__x->_M_left != 0) __x = __x->_M_left;
+      return __x;
+    }
+
+    static _Base_ptr
+    _S_maximum(_Base_ptr __x)
+    {
+      while (__x->_M_right != 0) __x = __x->_M_right;
+      return __x;
+    }
+
+    static _Const_Base_ptr
+    _S_maximum(_Const_Base_ptr __x)
+    {
+      while (__x->_M_right != 0) __x = __x->_M_right;
+      return __x;
+    }
+  };
+
+  template<typename _Val>
+    struct _Rb_tree_node : public _Rb_tree_node_base
+    {
+      typedef _Rb_tree_node<_Val>* _Link_type;
+      _Val _M_value_field;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        _Rb_tree_node(_Args&&... __args)
+	: _Rb_tree_node_base(),
+	  _M_value_field(std::forward<_Args>(__args)...) { }
+#endif
+    };
+
+  _GLIBCXX_PURE _Rb_tree_node_base*
+  _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
+
+  _GLIBCXX_PURE const _Rb_tree_node_base*
+  _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
+
+  _GLIBCXX_PURE _Rb_tree_node_base*
+  _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
+
+  _GLIBCXX_PURE const _Rb_tree_node_base*
+  _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
+
+  template<typename _Tp>
+    struct _Rb_tree_iterator
+    {
+      typedef _Tp  value_type;
+      typedef _Tp& reference;
+      typedef _Tp* pointer;
+
+      typedef bidirectional_iterator_tag iterator_category;
+      typedef ptrdiff_t                  difference_type;
+
+      typedef _Rb_tree_iterator<_Tp>        _Self;
+      typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
+      typedef _Rb_tree_node<_Tp>*           _Link_type;
+
+      _Rb_tree_iterator()
+      : _M_node() { }
+
+      explicit
+      _Rb_tree_iterator(_Link_type __x)
+      : _M_node(__x) { }
+
+      reference
+      operator*() const
+      { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Link_type>
+				(_M_node)->_M_value_field); }
+
+      _Self&
+      operator++()
+      {
+	_M_node = _Rb_tree_increment(_M_node);
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _Rb_tree_increment(_M_node);
+	return __tmp;
+      }
+
+      _Self&
+      operator--()
+      {
+	_M_node = _Rb_tree_decrement(_M_node);
+	return *this;
+      }
+
+      _Self
+      operator--(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _Rb_tree_decrement(_M_node);
+	return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      _Base_ptr _M_node;
+  };
+
+  template<typename _Tp>
+    struct _Rb_tree_const_iterator
+    {
+      typedef _Tp        value_type;
+      typedef const _Tp& reference;
+      typedef const _Tp* pointer;
+
+      typedef _Rb_tree_iterator<_Tp> iterator;
+
+      typedef bidirectional_iterator_tag iterator_category;
+      typedef ptrdiff_t                  difference_type;
+
+      typedef _Rb_tree_const_iterator<_Tp>        _Self;
+      typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
+      typedef const _Rb_tree_node<_Tp>*           _Link_type;
+
+      _Rb_tree_const_iterator()
+      : _M_node() { }
+
+      explicit
+      _Rb_tree_const_iterator(_Link_type __x)
+      : _M_node(__x) { }
+
+      _Rb_tree_const_iterator(const iterator& __it)
+      : _M_node(__it._M_node) { }
+
+      iterator
+      _M_const_cast() const
+      { return iterator(static_cast<typename iterator::_Link_type>
+			(const_cast<typename iterator::_Base_ptr>(_M_node))); }
+
+      reference
+      operator*() const
+      { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+      pointer
+      operator->() const
+      { return std::__addressof(static_cast<_Link_type>
+				(_M_node)->_M_value_field); }
+
+      _Self&
+      operator++()
+      {
+	_M_node = _Rb_tree_increment(_M_node);
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _Rb_tree_increment(_M_node);
+	return __tmp;
+      }
+
+      _Self&
+      operator--()
+      {
+	_M_node = _Rb_tree_decrement(_M_node);
+	return *this;
+      }
+
+      _Self
+      operator--(int)
+      {
+	_Self __tmp = *this;
+	_M_node = _Rb_tree_decrement(_M_node);
+	return __tmp;
+      }
+
+      bool
+      operator==(const _Self& __x) const
+      { return _M_node == __x._M_node; }
+
+      bool
+      operator!=(const _Self& __x) const
+      { return _M_node != __x._M_node; }
+
+      _Base_ptr _M_node;
+    };
+
+  template<typename _Val>
+    inline bool
+    operator==(const _Rb_tree_iterator<_Val>& __x,
+               const _Rb_tree_const_iterator<_Val>& __y)
+    { return __x._M_node == __y._M_node; }
+
+  template<typename _Val>
+    inline bool
+    operator!=(const _Rb_tree_iterator<_Val>& __x,
+               const _Rb_tree_const_iterator<_Val>& __y)
+    { return __x._M_node != __y._M_node; }
+
+  void
+  _Rb_tree_insert_and_rebalance(const bool __insert_left,
+                                _Rb_tree_node_base* __x,
+                                _Rb_tree_node_base* __p,
+                                _Rb_tree_node_base& __header) throw ();
+
+  _Rb_tree_node_base*
+  _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
+			       _Rb_tree_node_base& __header) throw ();
+
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc = allocator<_Val> >
+    class _Rb_tree
+    {
+      typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
+              _Node_allocator;
+
+    protected:
+      typedef _Rb_tree_node_base* _Base_ptr;
+      typedef const _Rb_tree_node_base* _Const_Base_ptr;
+
+    public:
+      typedef _Key key_type;
+      typedef _Val value_type;
+      typedef value_type* pointer;
+      typedef const value_type* const_pointer;
+      typedef value_type& reference;
+      typedef const value_type& const_reference;
+      typedef _Rb_tree_node<_Val>* _Link_type;
+      typedef const _Rb_tree_node<_Val>* _Const_Link_type;
+      typedef size_t size_type;
+      typedef ptrdiff_t difference_type;
+      typedef _Alloc allocator_type;
+
+      _Node_allocator&
+      _M_get_Node_allocator()
+      { return *static_cast<_Node_allocator*>(&this->_M_impl); }
+      
+      const _Node_allocator&
+      _M_get_Node_allocator() const
+      { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_get_Node_allocator()); }
+
+    protected:
+      _Link_type
+      _M_get_node()
+      { return _M_impl._Node_allocator::allocate(1); }
+
+      void
+      _M_put_node(_Link_type __p)
+      { _M_impl._Node_allocator::deallocate(__p, 1); }
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      _Link_type
+      _M_create_node(const value_type& __x)
+      {
+	_Link_type __tmp = _M_get_node();
+	__try
+	  { get_allocator().construct
+	      (std::__addressof(__tmp->_M_value_field), __x); }
+	__catch(...)
+	  {
+	    _M_put_node(__tmp);
+	    __throw_exception_again;
+	  }
+	return __tmp;
+      }
+
+      void
+      _M_destroy_node(_Link_type __p)
+      {
+	get_allocator().destroy(std::__addressof(__p->_M_value_field));
+	_M_put_node(__p);
+      }
+#else
+      template<typename... _Args>
+        _Link_type
+        _M_create_node(_Args&&... __args)
+	{
+	  _Link_type __tmp = _M_get_node();
+	  __try
+	    {
+	      _M_get_Node_allocator().construct(__tmp,
+					     std::forward<_Args>(__args)...);
+	    }
+	  __catch(...)
+	    {
+	      _M_put_node(__tmp);
+	      __throw_exception_again;
+	    }
+	  return __tmp;
+	}
+
+      void
+      _M_destroy_node(_Link_type __p)
+      {
+	_M_get_Node_allocator().destroy(__p);
+	_M_put_node(__p);
+      }
+#endif
+
+      _Link_type
+      _M_clone_node(_Const_Link_type __x)
+      {
+	_Link_type __tmp = _M_create_node(__x->_M_value_field);
+	__tmp->_M_color = __x->_M_color;
+	__tmp->_M_left = 0;
+	__tmp->_M_right = 0;
+	return __tmp;
+      }
+
+    protected:
+      template<typename _Key_compare, 
+	       bool _Is_pod_comparator = __is_pod(_Key_compare)>
+        struct _Rb_tree_impl : public _Node_allocator
+        {
+	  _Key_compare		_M_key_compare;
+	  _Rb_tree_node_base 	_M_header;
+	  size_type 		_M_node_count; // Keeps track of size of tree.
+
+	  _Rb_tree_impl()
+	  : _Node_allocator(), _M_key_compare(), _M_header(),
+	    _M_node_count(0)
+	  { _M_initialize(); }
+
+	  _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
+	  : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
+	    _M_node_count(0)
+	  { _M_initialize(); }
+
+	private:
+	  void
+	  _M_initialize()
+	  {
+	    this->_M_header._M_color = _S_red;
+	    this->_M_header._M_parent = 0;
+	    this->_M_header._M_left = &this->_M_header;
+	    this->_M_header._M_right = &this->_M_header;
+	  }	    
+	};
+
+      _Rb_tree_impl<_Compare> _M_impl;
+
+    protected:
+      _Base_ptr&
+      _M_root()
+      { return this->_M_impl._M_header._M_parent; }
+
+      _Const_Base_ptr
+      _M_root() const
+      { return this->_M_impl._M_header._M_parent; }
+
+      _Base_ptr&
+      _M_leftmost()
+      { return this->_M_impl._M_header._M_left; }
+
+      _Const_Base_ptr
+      _M_leftmost() const
+      { return this->_M_impl._M_header._M_left; }
+
+      _Base_ptr&
+      _M_rightmost()
+      { return this->_M_impl._M_header._M_right; }
+
+      _Const_Base_ptr
+      _M_rightmost() const
+      { return this->_M_impl._M_header._M_right; }
+
+      _Link_type
+      _M_begin()
+      { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
+
+      _Const_Link_type
+      _M_begin() const
+      {
+	return static_cast<_Const_Link_type>
+	  (this->_M_impl._M_header._M_parent);
+      }
+
+      _Link_type
+      _M_end()
+      { return static_cast<_Link_type>(&this->_M_impl._M_header); }
+
+      _Const_Link_type
+      _M_end() const
+      { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
+
+      static const_reference
+      _S_value(_Const_Link_type __x)
+      { return __x->_M_value_field; }
+
+      static const _Key&
+      _S_key(_Const_Link_type __x)
+      { return _KeyOfValue()(_S_value(__x)); }
+
+      static _Link_type
+      _S_left(_Base_ptr __x)
+      { return static_cast<_Link_type>(__x->_M_left); }
+
+      static _Const_Link_type
+      _S_left(_Const_Base_ptr __x)
+      { return static_cast<_Const_Link_type>(__x->_M_left); }
+
+      static _Link_type
+      _S_right(_Base_ptr __x)
+      { return static_cast<_Link_type>(__x->_M_right); }
+
+      static _Const_Link_type
+      _S_right(_Const_Base_ptr __x)
+      { return static_cast<_Const_Link_type>(__x->_M_right); }
+
+      static const_reference
+      _S_value(_Const_Base_ptr __x)
+      { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
+
+      static const _Key&
+      _S_key(_Const_Base_ptr __x)
+      { return _KeyOfValue()(_S_value(__x)); }
+
+      static _Base_ptr
+      _S_minimum(_Base_ptr __x)
+      { return _Rb_tree_node_base::_S_minimum(__x); }
+
+      static _Const_Base_ptr
+      _S_minimum(_Const_Base_ptr __x)
+      { return _Rb_tree_node_base::_S_minimum(__x); }
+
+      static _Base_ptr
+      _S_maximum(_Base_ptr __x)
+      { return _Rb_tree_node_base::_S_maximum(__x); }
+
+      static _Const_Base_ptr
+      _S_maximum(_Const_Base_ptr __x)
+      { return _Rb_tree_node_base::_S_maximum(__x); }
+
+    public:
+      typedef _Rb_tree_iterator<value_type>       iterator;
+      typedef _Rb_tree_const_iterator<value_type> const_iterator;
+
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+    private:
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Arg>
+        iterator
+        _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y, _Arg&& __v);
+
+      template<typename _Arg>
+        iterator
+        _M_insert_lower(_Base_ptr __x, _Base_ptr __y, _Arg&& __v);
+
+      template<typename _Arg>
+        iterator
+        _M_insert_equal_lower(_Arg&& __x);
+#else
+      iterator
+      _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y,
+		 const value_type& __v);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 233. Insertion hints in associative containers.
+      iterator
+      _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
+
+      iterator
+      _M_insert_equal_lower(const value_type& __x);
+#endif
+
+      _Link_type
+      _M_copy(_Const_Link_type __x, _Link_type __p);
+
+      void
+      _M_erase(_Link_type __x);
+
+      iterator
+      _M_lower_bound(_Link_type __x, _Link_type __y,
+		     const _Key& __k);
+
+      const_iterator
+      _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+		     const _Key& __k) const;
+
+      iterator
+      _M_upper_bound(_Link_type __x, _Link_type __y,
+		     const _Key& __k);
+
+      const_iterator
+      _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+		     const _Key& __k) const;
+
+    public:
+      // allocation/deallocation
+      _Rb_tree() { }
+
+      _Rb_tree(const _Compare& __comp,
+	       const allocator_type& __a = allocator_type())
+      : _M_impl(__comp, __a) { }
+
+      _Rb_tree(const _Rb_tree& __x)
+      : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
+      {
+	if (__x._M_root() != 0)
+	  {
+	    _M_root() = _M_copy(__x._M_begin(), _M_end());
+	    _M_leftmost() = _S_minimum(_M_root());
+	    _M_rightmost() = _S_maximum(_M_root());
+	    _M_impl._M_node_count = __x._M_impl._M_node_count;
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _Rb_tree(_Rb_tree&& __x);
+#endif
+
+      ~_Rb_tree()
+      { _M_erase(_M_begin()); }
+
+      _Rb_tree&
+      operator=(const _Rb_tree& __x);
+
+      // Accessors.
+      _Compare
+      key_comp() const
+      { return _M_impl._M_key_compare; }
+
+      iterator
+      begin()
+      { 
+	return iterator(static_cast<_Link_type>
+			(this->_M_impl._M_header._M_left));
+      }
+
+      const_iterator
+      begin() const
+      { 
+	return const_iterator(static_cast<_Const_Link_type>
+			      (this->_M_impl._M_header._M_left));
+      }
+
+      iterator
+      end()
+      { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
+
+      const_iterator
+      end() const
+      { 
+	return const_iterator(static_cast<_Const_Link_type>
+			      (&this->_M_impl._M_header));
+      }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+      bool
+      empty() const
+      { return _M_impl._M_node_count == 0; }
+
+      size_type
+      size() const
+      { return _M_impl._M_node_count; }
+
+      size_type
+      max_size() const
+      { return _M_get_Node_allocator().max_size(); }
+
+      void
+      swap(_Rb_tree& __t);      
+
+      // Insert/erase.
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Arg>
+        pair<iterator, bool>
+        _M_insert_unique(_Arg&& __x);
+
+      template<typename _Arg>
+        iterator
+        _M_insert_equal(_Arg&& __x);
+
+      template<typename _Arg>
+        iterator
+        _M_insert_unique_(const_iterator __position, _Arg&& __x);
+
+      template<typename _Arg>
+        iterator
+        _M_insert_equal_(const_iterator __position, _Arg&& __x);
+#else
+      pair<iterator, bool>
+      _M_insert_unique(const value_type& __x);
+
+      iterator
+      _M_insert_equal(const value_type& __x);
+
+      iterator
+      _M_insert_unique_(const_iterator __position, const value_type& __x);
+
+      iterator
+      _M_insert_equal_(const_iterator __position, const value_type& __x);
+#endif
+
+      template<typename _InputIterator>
+        void
+        _M_insert_unique(_InputIterator __first, _InputIterator __last);
+
+      template<typename _InputIterator>
+        void
+        _M_insert_equal(_InputIterator __first, _InputIterator __last);
+
+    private:
+      void
+      _M_erase_aux(const_iterator __position);
+
+      void
+      _M_erase_aux(const_iterator __first, const_iterator __last);
+
+    public:
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      iterator
+      erase(const_iterator __position)
+      {
+	const_iterator __result = __position;
+	++__result;
+	_M_erase_aux(__position);
+	return __result._M_const_cast();
+      }
+#else
+      void
+      erase(iterator __position)
+      { _M_erase_aux(__position); }
+
+      void
+      erase(const_iterator __position)
+      { _M_erase_aux(__position); }
+#endif
+      size_type
+      erase(const key_type& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 130. Associative erase should return an iterator.
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	_M_erase_aux(__first, __last);
+	return __last._M_const_cast();
+      }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      { _M_erase_aux(__first, __last); }
+
+      void
+      erase(const_iterator __first, const_iterator __last)
+      { _M_erase_aux(__first, __last); }
+#endif
+      void
+      erase(const key_type* __first, const key_type* __last);
+
+      void
+      clear()
+      {
+        _M_erase(_M_begin());
+        _M_leftmost() = _M_end();
+        _M_root() = 0;
+        _M_rightmost() = _M_end();
+        _M_impl._M_node_count = 0;
+      }
+
+      // Set operations.
+      iterator
+      find(const key_type& __k);
+
+      const_iterator
+      find(const key_type& __k) const;
+
+      size_type
+      count(const key_type& __k) const;
+
+      iterator
+      lower_bound(const key_type& __k)
+      { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+
+      const_iterator
+      lower_bound(const key_type& __k) const
+      { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+
+      iterator
+      upper_bound(const key_type& __k)
+      { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+
+      const_iterator
+      upper_bound(const key_type& __k) const
+      { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+
+      pair<iterator, iterator>
+      equal_range(const key_type& __k);
+
+      pair<const_iterator, const_iterator>
+      equal_range(const key_type& __k) const;
+
+      // Debugging.
+      bool
+      __rb_verify() const;
+    };
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	       const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    {
+      return __x.size() == __y.size()
+	     && std::equal(__x.begin(), __x.end(), __y.begin());
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	      const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    {
+      return std::lexicographical_compare(__x.begin(), __x.end(), 
+					  __y.begin(), __y.end());
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	       const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	      const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    { return __y < __x; }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	       const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline bool
+    operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	       const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    inline void
+    swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+	 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+    { __x.swap(__y); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _Rb_tree(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&& __x)
+    : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
+    {
+      if (__x._M_root() != 0)
+	{
+	  _M_root() = __x._M_root();
+	  _M_leftmost() = __x._M_leftmost();
+	  _M_rightmost() = __x._M_rightmost();
+	  _M_root()->_M_parent = _M_end();
+
+	  __x._M_root() = 0;
+	  __x._M_leftmost() = __x._M_end();
+	  __x._M_rightmost() = __x._M_end();
+
+	  this->_M_impl._M_node_count = __x._M_impl._M_node_count;
+	  __x._M_impl._M_node_count = 0;
+	}
+    }
+#endif
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
+    {
+      if (this != &__x)
+	{
+	  // Note that _Key may be a constant type.
+	  clear();
+	  _M_impl._M_key_compare = __x._M_impl._M_key_compare;
+	  if (__x._M_root() != 0)
+	    {
+	      _M_root() = _M_copy(__x._M_begin(), _M_end());
+	      _M_leftmost() = _S_minimum(_M_root());
+	      _M_rightmost() = _S_maximum(_M_root());
+	      _M_impl._M_node_count = __x._M_impl._M_node_count;
+	    }
+	}
+      return *this;
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, _Arg&& __v)
+#else
+    _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
+#endif
+    {
+      bool __insert_left = (__x != 0 || __p == _M_end()
+			    || _M_impl._M_key_compare(_KeyOfValue()(__v), 
+						      _S_key(__p)));
+
+      _Link_type __z = _M_create_node(_GLIBCXX_FORWARD(_Arg, __v));
+
+      _Rb_tree_insert_and_rebalance(__insert_left, __z,
+				    const_cast<_Base_ptr>(__p),  
+				    this->_M_impl._M_header);
+      ++_M_impl._M_node_count;
+      return iterator(__z);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_lower(_Base_ptr __x, _Base_ptr __p, _Arg&& __v)
+#else
+    _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
+#endif
+    {
+      bool __insert_left = (__x != 0 || __p == _M_end()
+			    || !_M_impl._M_key_compare(_S_key(__p),
+						       _KeyOfValue()(__v)));
+
+      _Link_type __z = _M_create_node(_GLIBCXX_FORWARD(_Arg, __v));
+
+      _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,  
+				    this->_M_impl._M_header);
+      ++_M_impl._M_node_count;
+      return iterator(__z);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_equal_lower(_Arg&& __v)
+#else
+    _M_insert_equal_lower(const _Val& __v)
+#endif
+    {
+      _Link_type __x = _M_begin();
+      _Link_type __y = _M_end();
+      while (__x != 0)
+	{
+	  __y = __x;
+	  __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
+	        _S_left(__x) : _S_right(__x);
+	}
+      return _M_insert_lower(__x, __y, _GLIBCXX_FORWARD(_Arg, __v));
+    }
+
+  template<typename _Key, typename _Val, typename _KoV,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
+    _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
+    _M_copy(_Const_Link_type __x, _Link_type __p)
+    {
+      // Structural copy.  __x and __p must be non-null.
+      _Link_type __top = _M_clone_node(__x);
+      __top->_M_parent = __p;
+
+      __try
+	{
+	  if (__x->_M_right)
+	    __top->_M_right = _M_copy(_S_right(__x), __top);
+	  __p = __top;
+	  __x = _S_left(__x);
+
+	  while (__x != 0)
+	    {
+	      _Link_type __y = _M_clone_node(__x);
+	      __p->_M_left = __y;
+	      __y->_M_parent = __p;
+	      if (__x->_M_right)
+		__y->_M_right = _M_copy(_S_right(__x), __y);
+	      __p = __y;
+	      __x = _S_left(__x);
+	    }
+	}
+      __catch(...)
+	{
+	  _M_erase(__top);
+	  __throw_exception_again;
+	}
+      return __top;
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    void
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_erase(_Link_type __x)
+    {
+      // Erase without rebalancing.
+      while (__x != 0)
+	{
+	  _M_erase(_S_right(__x));
+	  _Link_type __y = _S_left(__x);
+	  _M_destroy_node(__x);
+	  __x = __y;
+	}
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_lower_bound(_Link_type __x, _Link_type __y,
+		   const _Key& __k)
+    {
+      while (__x != 0)
+	if (!_M_impl._M_key_compare(_S_key(__x), __k))
+	  __y = __x, __x = _S_left(__x);
+	else
+	  __x = _S_right(__x);
+      return iterator(__y);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::const_iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+		   const _Key& __k) const
+    {
+      while (__x != 0)
+	if (!_M_impl._M_key_compare(_S_key(__x), __k))
+	  __y = __x, __x = _S_left(__x);
+	else
+	  __x = _S_right(__x);
+      return const_iterator(__y);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_upper_bound(_Link_type __x, _Link_type __y,
+		   const _Key& __k)
+    {
+      while (__x != 0)
+	if (_M_impl._M_key_compare(__k, _S_key(__x)))
+	  __y = __x, __x = _S_left(__x);
+	else
+	  __x = _S_right(__x);
+      return iterator(__y);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::const_iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+		   const _Key& __k) const
+    {
+      while (__x != 0)
+	if (_M_impl._M_key_compare(__k, _S_key(__x)))
+	  __y = __x, __x = _S_left(__x);
+	else
+	  __x = _S_right(__x);
+      return const_iterator(__y);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+			   _Compare, _Alloc>::iterator,
+	 typename _Rb_tree<_Key, _Val, _KeyOfValue,
+			   _Compare, _Alloc>::iterator>
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    equal_range(const _Key& __k)
+    {
+      _Link_type __x = _M_begin();
+      _Link_type __y = _M_end();
+      while (__x != 0)
+	{
+	  if (_M_impl._M_key_compare(_S_key(__x), __k))
+	    __x = _S_right(__x);
+	  else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+	    __y = __x, __x = _S_left(__x);
+	  else
+	    {
+	      _Link_type __xu(__x), __yu(__y);
+	      __y = __x, __x = _S_left(__x);
+	      __xu = _S_right(__xu);
+	      return pair<iterator,
+		          iterator>(_M_lower_bound(__x, __y, __k),
+				    _M_upper_bound(__xu, __yu, __k));
+	    }
+	}
+      return pair<iterator, iterator>(iterator(__y),
+				      iterator(__y));
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+			   _Compare, _Alloc>::const_iterator,
+	 typename _Rb_tree<_Key, _Val, _KeyOfValue,
+			   _Compare, _Alloc>::const_iterator>
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    equal_range(const _Key& __k) const
+    {
+      _Const_Link_type __x = _M_begin();
+      _Const_Link_type __y = _M_end();
+      while (__x != 0)
+	{
+	  if (_M_impl._M_key_compare(_S_key(__x), __k))
+	    __x = _S_right(__x);
+	  else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+	    __y = __x, __x = _S_left(__x);
+	  else
+	    {
+	      _Const_Link_type __xu(__x), __yu(__y);
+	      __y = __x, __x = _S_left(__x);
+	      __xu = _S_right(__xu);
+	      return pair<const_iterator,
+		          const_iterator>(_M_lower_bound(__x, __y, __k),
+					  _M_upper_bound(__xu, __yu, __k));
+	    }
+	}
+      return pair<const_iterator, const_iterator>(const_iterator(__y),
+						  const_iterator(__y));
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    void
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
+    {
+      if (_M_root() == 0)
+	{
+	  if (__t._M_root() != 0)
+	    {
+	      _M_root() = __t._M_root();
+	      _M_leftmost() = __t._M_leftmost();
+	      _M_rightmost() = __t._M_rightmost();
+	      _M_root()->_M_parent = _M_end();
+	      
+	      __t._M_root() = 0;
+	      __t._M_leftmost() = __t._M_end();
+	      __t._M_rightmost() = __t._M_end();
+	    }
+	}
+      else if (__t._M_root() == 0)
+	{
+	  __t._M_root() = _M_root();
+	  __t._M_leftmost() = _M_leftmost();
+	  __t._M_rightmost() = _M_rightmost();
+	  __t._M_root()->_M_parent = __t._M_end();
+	  
+	  _M_root() = 0;
+	  _M_leftmost() = _M_end();
+	  _M_rightmost() = _M_end();
+	}
+      else
+	{
+	  std::swap(_M_root(),__t._M_root());
+	  std::swap(_M_leftmost(),__t._M_leftmost());
+	  std::swap(_M_rightmost(),__t._M_rightmost());
+	  
+	  _M_root()->_M_parent = _M_end();
+	  __t._M_root()->_M_parent = __t._M_end();
+	}
+      // No need to swap header's color as it does not change.
+      std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
+      std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
+      
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<_Node_allocator>::
+	_S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+			   _Compare, _Alloc>::iterator, bool>
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_unique(_Arg&& __v)
+#else
+    _M_insert_unique(const _Val& __v)
+#endif
+    {
+      _Link_type __x = _M_begin();
+      _Link_type __y = _M_end();
+      bool __comp = true;
+      while (__x != 0)
+	{
+	  __y = __x;
+	  __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));
+	  __x = __comp ? _S_left(__x) : _S_right(__x);
+	}
+      iterator __j = iterator(__y);
+      if (__comp)
+	{
+	  if (__j == begin())
+	    return pair<iterator, bool>
+	      (_M_insert_(__x, __y, _GLIBCXX_FORWARD(_Arg, __v)), true);
+	  else
+	    --__j;
+	}
+      if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
+	return pair<iterator, bool>
+	  (_M_insert_(__x, __y, _GLIBCXX_FORWARD(_Arg, __v)), true);
+      return pair<iterator, bool>(__j, false);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_equal(_Arg&& __v)
+#else
+    _M_insert_equal(const _Val& __v)
+#endif
+    {
+      _Link_type __x = _M_begin();
+      _Link_type __y = _M_end();
+      while (__x != 0)
+	{
+	  __y = __x;
+	  __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
+	        _S_left(__x) : _S_right(__x);
+	}
+      return _M_insert_(__x, __y, _GLIBCXX_FORWARD(_Arg, __v));
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_unique_(const_iterator __position, _Arg&& __v)
+#else
+    _M_insert_unique_(const_iterator __position, const _Val& __v)
+#endif
+    {
+      // end()
+      if (__position._M_node == _M_end())
+	{
+	  if (size() > 0
+	      && _M_impl._M_key_compare(_S_key(_M_rightmost()), 
+					_KeyOfValue()(__v)))
+	    return _M_insert_(0, _M_rightmost(), _GLIBCXX_FORWARD(_Arg, __v));
+	  else
+	    return _M_insert_unique(_GLIBCXX_FORWARD(_Arg, __v)).first;
+	}
+      else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+				      _S_key(__position._M_node)))
+	{
+	  // First, try before...
+	  const_iterator __before = __position;
+	  if (__position._M_node == _M_leftmost()) // begin()
+	    return _M_insert_(_M_leftmost(), _M_leftmost(),
+			      _GLIBCXX_FORWARD(_Arg, __v));
+	  else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), 
+					  _KeyOfValue()(__v)))
+	    {
+	      if (_S_right(__before._M_node) == 0)
+		return _M_insert_(0, __before._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	      else
+		return _M_insert_(__position._M_node,
+				  __position._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	    }
+	  else
+	    return _M_insert_unique(_GLIBCXX_FORWARD(_Arg, __v)).first;
+	}
+      else if (_M_impl._M_key_compare(_S_key(__position._M_node),
+				      _KeyOfValue()(__v)))
+	{
+	  // ... then try after.
+	  const_iterator __after = __position;
+	  if (__position._M_node == _M_rightmost())
+	    return _M_insert_(0, _M_rightmost(),
+			      _GLIBCXX_FORWARD(_Arg, __v));
+	  else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+					  _S_key((++__after)._M_node)))
+	    {
+	      if (_S_right(__position._M_node) == 0)
+		return _M_insert_(0, __position._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	      else
+		return _M_insert_(__after._M_node, __after._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	    }
+	  else
+	    return _M_insert_unique(_GLIBCXX_FORWARD(_Arg, __v)).first;
+	}
+      else
+	// Equivalent keys.
+	return __position._M_const_cast();
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename _Arg>
+#endif
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    _M_insert_equal_(const_iterator __position, _Arg&& __v)
+#else
+    _M_insert_equal_(const_iterator __position, const _Val& __v)
+#endif
+    {
+      // end()
+      if (__position._M_node == _M_end())
+	{
+	  if (size() > 0
+	      && !_M_impl._M_key_compare(_KeyOfValue()(__v),
+					 _S_key(_M_rightmost())))
+	    return _M_insert_(0, _M_rightmost(),
+			      _GLIBCXX_FORWARD(_Arg, __v));
+	  else
+	    return _M_insert_equal(_GLIBCXX_FORWARD(_Arg, __v));
+	}
+      else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
+				       _KeyOfValue()(__v)))
+	{
+	  // First, try before...
+	  const_iterator __before = __position;
+	  if (__position._M_node == _M_leftmost()) // begin()
+	    return _M_insert_(_M_leftmost(), _M_leftmost(),
+			      _GLIBCXX_FORWARD(_Arg, __v));
+	  else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
+					   _S_key((--__before)._M_node)))
+	    {
+	      if (_S_right(__before._M_node) == 0)
+		return _M_insert_(0, __before._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	      else
+		return _M_insert_(__position._M_node,
+				  __position._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	    }
+	  else
+	    return _M_insert_equal(_GLIBCXX_FORWARD(_Arg, __v));
+	}
+      else
+	{
+	  // ... then try after.  
+	  const_iterator __after = __position;
+	  if (__position._M_node == _M_rightmost())
+	    return _M_insert_(0, _M_rightmost(),
+			      _GLIBCXX_FORWARD(_Arg, __v));
+	  else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
+					   _KeyOfValue()(__v)))
+	    {
+	      if (_S_right(__position._M_node) == 0)
+		return _M_insert_(0, __position._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	      else
+		return _M_insert_(__after._M_node, __after._M_node,
+				  _GLIBCXX_FORWARD(_Arg, __v));
+	    }
+	  else
+	    return _M_insert_equal_lower(_GLIBCXX_FORWARD(_Arg, __v));
+	}
+    }
+
+  template<typename _Key, typename _Val, typename _KoV,
+           typename _Cmp, typename _Alloc>
+    template<class _II>
+      void
+      _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+      _M_insert_unique(_II __first, _II __last)
+      {
+	for (; __first != __last; ++__first)
+	  _M_insert_unique_(end(), *__first);
+      }
+
+  template<typename _Key, typename _Val, typename _KoV,
+           typename _Cmp, typename _Alloc>
+    template<class _II>
+      void
+      _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+      _M_insert_equal(_II __first, _II __last)
+      {
+	for (; __first != __last; ++__first)
+	  _M_insert_equal_(end(), *__first);
+      }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    void
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_erase_aux(const_iterator __position)
+    {
+      _Link_type __y =
+	static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
+				(const_cast<_Base_ptr>(__position._M_node),
+				 this->_M_impl._M_header));
+      _M_destroy_node(__y);
+      --_M_impl._M_node_count;
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    void
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    _M_erase_aux(const_iterator __first, const_iterator __last)
+    {
+      if (__first == begin() && __last == end())
+	clear();
+      else
+	while (__first != __last)
+	  erase(__first++);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    erase(const _Key& __x)
+    {
+      pair<iterator, iterator> __p = equal_range(__x);
+      const size_type __old_size = size();
+      erase(__p.first, __p.second);
+      return __old_size - size();
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    void
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    erase(const _Key* __first, const _Key* __last)
+    {
+      while (__first != __last)
+	erase(*__first++);
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    find(const _Key& __k)
+    {
+      iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+      return (__j == end()
+	      || _M_impl._M_key_compare(__k,
+					_S_key(__j._M_node))) ? end() : __j;
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue,
+		      _Compare, _Alloc>::const_iterator
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    find(const _Key& __k) const
+    {
+      const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+      return (__j == end()
+	      || _M_impl._M_key_compare(__k, 
+					_S_key(__j._M_node))) ? end() : __j;
+    }
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+    _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+    count(const _Key& __k) const
+    {
+      pair<const_iterator, const_iterator> __p = equal_range(__k);
+      const size_type __n = std::distance(__p.first, __p.second);
+      return __n;
+    }
+
+  _GLIBCXX_PURE unsigned int
+  _Rb_tree_black_count(const _Rb_tree_node_base* __node,
+                       const _Rb_tree_node_base* __root) throw ();
+
+  template<typename _Key, typename _Val, typename _KeyOfValue,
+           typename _Compare, typename _Alloc>
+    bool
+    _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
+    {
+      if (_M_impl._M_node_count == 0 || begin() == end())
+	return _M_impl._M_node_count == 0 && begin() == end()
+	       && this->_M_impl._M_header._M_left == _M_end()
+	       && this->_M_impl._M_header._M_right == _M_end();
+
+      unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
+      for (const_iterator __it = begin(); __it != end(); ++__it)
+	{
+	  _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
+	  _Const_Link_type __L = _S_left(__x);
+	  _Const_Link_type __R = _S_right(__x);
+
+	  if (__x->_M_color == _S_red)
+	    if ((__L && __L->_M_color == _S_red)
+		|| (__R && __R->_M_color == _S_red))
+	      return false;
+
+	  if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
+	    return false;
+	  if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
+	    return false;
+
+	  if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
+	    return false;
+	}
+
+      if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
+	return false;
+      if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
+	return false;
+      return true;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_uninitialized.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_uninitialized.h
new file mode 100644
index 000000000..f15be3aee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_uninitialized.h
@@ -0,0 +1,640 @@
+// Raw memory manipulators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_uninitialized.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _STL_UNINITIALIZED_H
+#define _STL_UNINITIALIZED_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<bool _TrivialValueTypes>
+    struct __uninitialized_copy
+    {
+      template<typename _InputIterator, typename _ForwardIterator>
+        static _ForwardIterator
+        __uninit_copy(_InputIterator __first, _InputIterator __last,
+		      _ForwardIterator __result)
+        {
+	  _ForwardIterator __cur = __result;
+	  __try
+	    {
+	      for (; __first != __last; ++__first, ++__cur)
+		std::_Construct(std::__addressof(*__cur), *__first);
+	      return __cur;
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__result, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_copy<true>
+    {
+      template<typename _InputIterator, typename _ForwardIterator>
+        static _ForwardIterator
+        __uninit_copy(_InputIterator __first, _InputIterator __last,
+		      _ForwardIterator __result)
+        { return std::copy(__first, __last, __result); }
+    };
+
+  /**
+   *  @brief Copies the range [first,last) into result.
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  result An output iterator.
+   *  @return   result + (first - last)
+   *
+   *  Like copy(), but does not require an initialized output range.
+  */
+  template<typename _InputIterator, typename _ForwardIterator>
+    inline _ForwardIterator
+    uninitialized_copy(_InputIterator __first, _InputIterator __last,
+		       _ForwardIterator __result)
+    {
+      typedef typename iterator_traits<_InputIterator>::value_type
+	_ValueType1;
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType2;
+
+      return std::__uninitialized_copy<(__is_trivial(_ValueType1)
+					&& __is_trivial(_ValueType2))>::
+	__uninit_copy(__first, __last, __result);
+    }
+
+
+  template<bool _TrivialValueType>
+    struct __uninitialized_fill
+    {
+      template<typename _ForwardIterator, typename _Tp>
+        static void
+        __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
+		      const _Tp& __x)
+        {
+	  _ForwardIterator __cur = __first;
+	  __try
+	    {
+	      for (; __cur != __last; ++__cur)
+		std::_Construct(std::__addressof(*__cur), __x);
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__first, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_fill<true>
+    {
+      template<typename _ForwardIterator, typename _Tp>
+        static void
+        __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
+		      const _Tp& __x)
+        { std::fill(__first, __last, __x); }
+    };
+
+  /**
+   *  @brief Copies the value x into the range [first,last).
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  x      The source value.
+   *  @return   Nothing.
+   *
+   *  Like fill(), but does not require an initialized output range.
+  */
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
+		       const _Tp& __x)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      std::__uninitialized_fill<__is_trivial(_ValueType)>::
+	__uninit_fill(__first, __last, __x);
+    }
+
+
+  template<bool _TrivialValueType>
+    struct __uninitialized_fill_n
+    {
+      template<typename _ForwardIterator, typename _Size, typename _Tp>
+        static void
+        __uninit_fill_n(_ForwardIterator __first, _Size __n,
+			const _Tp& __x)
+        {
+	  _ForwardIterator __cur = __first;
+	  __try
+	    {
+	      for (; __n > 0; --__n, ++__cur)
+		std::_Construct(std::__addressof(*__cur), __x);
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__first, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_fill_n<true>
+    {
+      template<typename _ForwardIterator, typename _Size, typename _Tp>
+        static void
+        __uninit_fill_n(_ForwardIterator __first, _Size __n,
+			const _Tp& __x)
+        { std::fill_n(__first, __n, __x); }
+    };
+
+  /**
+   *  @brief Copies the value x into the range [first,first+n).
+   *  @param  first  An input iterator.
+   *  @param  n      The number of copies to make.
+   *  @param  x      The source value.
+   *  @return   Nothing.
+   *
+   *  Like fill_n(), but does not require an initialized output range.
+  */
+  template<typename _ForwardIterator, typename _Size, typename _Tp>
+    inline void
+    uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      std::__uninitialized_fill_n<__is_trivial(_ValueType)>::
+	__uninit_fill_n(__first, __n, __x);
+    }
+
+  // Extensions: versions of uninitialized_copy, uninitialized_fill,
+  //  and uninitialized_fill_n that take an allocator parameter.
+  //  We dispatch back to the standard versions when we're given the
+  //  default allocator.  For nondefault allocators we do not use 
+  //  any of the POD optimizations.
+
+  template<typename _InputIterator, typename _ForwardIterator,
+	   typename _Allocator>
+    _ForwardIterator
+    __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+			   _ForwardIterator __result, _Allocator& __alloc)
+    {
+      _ForwardIterator __cur = __result;
+      __try
+	{
+	  for (; __first != __last; ++__first, ++__cur)
+	    __alloc.construct(std::__addressof(*__cur), *__first);
+	  return __cur;
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
+    inline _ForwardIterator
+    __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+			   _ForwardIterator __result, allocator<_Tp>&)
+    { return std::uninitialized_copy(__first, __last, __result); }
+
+  template<typename _InputIterator, typename _ForwardIterator,
+	   typename _Allocator>
+    inline _ForwardIterator
+    __uninitialized_move_a(_InputIterator __first, _InputIterator __last,
+			   _ForwardIterator __result, _Allocator& __alloc)
+    {
+      return std::__uninitialized_copy_a(_GLIBCXX_MAKE_MOVE_ITERATOR(__first),
+					 _GLIBCXX_MAKE_MOVE_ITERATOR(__last),
+					 __result, __alloc);
+    }
+
+  template<typename _ForwardIterator, typename _Tp, typename _Allocator>
+    void
+    __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+			   const _Tp& __x, _Allocator& __alloc)
+    {
+      _ForwardIterator __cur = __first;
+      __try
+	{
+	  for (; __cur != __last; ++__cur)
+	    __alloc.construct(std::__addressof(*__cur), __x);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__first, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _ForwardIterator, typename _Tp, typename _Tp2>
+    inline void
+    __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+			   const _Tp& __x, allocator<_Tp2>&)
+    { std::uninitialized_fill(__first, __last, __x); }
+
+  template<typename _ForwardIterator, typename _Size, typename _Tp,
+	   typename _Allocator>
+    void
+    __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 
+			     const _Tp& __x, _Allocator& __alloc)
+    {
+      _ForwardIterator __cur = __first;
+      __try
+	{
+	  for (; __n > 0; --__n, ++__cur)
+	    __alloc.construct(std::__addressof(*__cur), __x);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__first, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _ForwardIterator, typename _Size, typename _Tp,
+	   typename _Tp2>
+    inline void
+    __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 
+			     const _Tp& __x, allocator<_Tp2>&)
+    { std::uninitialized_fill_n(__first, __n, __x); }
+
+
+  // Extensions: __uninitialized_copy_move, __uninitialized_move_copy,
+  // __uninitialized_fill_move, __uninitialized_move_fill.
+  // All of these algorithms take a user-supplied allocator, which is used
+  // for construction and destruction.
+
+  // __uninitialized_copy_move
+  // Copies [first1, last1) into [result, result + (last1 - first1)), and
+  //  move [first2, last2) into
+  //  [result, result + (last1 - first1) + (last2 - first2)).
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _ForwardIterator, typename _Allocator>
+    inline _ForwardIterator
+    __uninitialized_copy_move(_InputIterator1 __first1,
+			      _InputIterator1 __last1,
+			      _InputIterator2 __first2,
+			      _InputIterator2 __last2,
+			      _ForwardIterator __result,
+			      _Allocator& __alloc)
+    {
+      _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
+							   __result,
+							   __alloc);
+      __try
+	{
+	  return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __mid, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  // __uninitialized_move_copy
+  // Moves [first1, last1) into [result, result + (last1 - first1)), and
+  //  copies [first2, last2) into
+  //  [result, result + (last1 - first1) + (last2 - first2)).
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _ForwardIterator, typename _Allocator>
+    inline _ForwardIterator
+    __uninitialized_move_copy(_InputIterator1 __first1,
+			      _InputIterator1 __last1,
+			      _InputIterator2 __first2,
+			      _InputIterator2 __last2,
+			      _ForwardIterator __result,
+			      _Allocator& __alloc)
+    {
+      _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1,
+							   __result,
+							   __alloc);
+      __try
+	{
+	  return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __mid, __alloc);
+	  __throw_exception_again;
+	}
+    }
+  
+  // __uninitialized_fill_move
+  // Fills [result, mid) with x, and moves [first, last) into
+  //  [mid, mid + (last - first)).
+  template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
+	   typename _Allocator>
+    inline _ForwardIterator
+    __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid,
+			      const _Tp& __x, _InputIterator __first,
+			      _InputIterator __last, _Allocator& __alloc)
+    {
+      std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
+      __try
+	{
+	  return std::__uninitialized_move_a(__first, __last, __mid, __alloc);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __mid, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  // __uninitialized_move_fill
+  // Moves [first1, last1) into [first2, first2 + (last1 - first1)), and
+  //  fills [first2 + (last1 - first1), last2) with x.
+  template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
+	   typename _Allocator>
+    inline void
+    __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1,
+			      _ForwardIterator __first2,
+			      _ForwardIterator __last2, const _Tp& __x,
+			      _Allocator& __alloc)
+    {
+      _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1,
+							    __first2,
+							    __alloc);
+      __try
+	{
+	  std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__first2, __mid2, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // Extensions: __uninitialized_default, __uninitialized_default_n,
+  // __uninitialized_default_a, __uninitialized_default_n_a.
+
+  template<bool _TrivialValueType>
+    struct __uninitialized_default_1
+    {
+      template<typename _ForwardIterator>
+        static void
+        __uninit_default(_ForwardIterator __first, _ForwardIterator __last)
+        {
+	  _ForwardIterator __cur = __first;
+	  __try
+	    {
+	      for (; __cur != __last; ++__cur)
+		std::_Construct(std::__addressof(*__cur));
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__first, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_default_1<true>
+    {
+      template<typename _ForwardIterator>
+        static void
+        __uninit_default(_ForwardIterator __first, _ForwardIterator __last)
+        {
+	  typedef typename iterator_traits<_ForwardIterator>::value_type
+	    _ValueType;
+
+	  std::fill(__first, __last, _ValueType());
+	}
+    };
+
+  template<bool _TrivialValueType>
+    struct __uninitialized_default_n_1
+    {
+      template<typename _ForwardIterator, typename _Size>
+        static void
+        __uninit_default_n(_ForwardIterator __first, _Size __n)
+        {
+	  _ForwardIterator __cur = __first;
+	  __try
+	    {
+	      for (; __n > 0; --__n, ++__cur)
+		std::_Construct(std::__addressof(*__cur));
+	    }
+	  __catch(...)
+	    {
+	      std::_Destroy(__first, __cur);
+	      __throw_exception_again;
+	    }
+	}
+    };
+
+  template<>
+    struct __uninitialized_default_n_1<true>
+    {
+      template<typename _ForwardIterator, typename _Size>
+        static void
+        __uninit_default_n(_ForwardIterator __first, _Size __n)
+        {
+	  typedef typename iterator_traits<_ForwardIterator>::value_type
+	    _ValueType;
+
+	  std::fill_n(__first, __n, _ValueType());
+	}
+    };
+
+  // __uninitialized_default
+  // Fills [first, last) with std::distance(first, last) default
+  // constructed value_types(s).
+  template<typename _ForwardIterator>
+    inline void
+    __uninitialized_default(_ForwardIterator __first,
+			    _ForwardIterator __last)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      std::__uninitialized_default_1<__is_trivial(_ValueType)>::
+	__uninit_default(__first, __last);
+    }
+
+  // __uninitialized_default_n
+  // Fills [first, first + n) with n default constructed value_type(s).
+  template<typename _ForwardIterator, typename _Size>
+    inline void
+    __uninitialized_default_n(_ForwardIterator __first, _Size __n)
+    {
+      typedef typename iterator_traits<_ForwardIterator>::value_type
+	_ValueType;
+
+      std::__uninitialized_default_n_1<__is_trivial(_ValueType)>::
+	__uninit_default_n(__first, __n);
+    }
+
+
+  // __uninitialized_default_a
+  // Fills [first, last) with std::distance(first, last) default
+  // constructed value_types(s), constructed with the allocator alloc.
+  template<typename _ForwardIterator, typename _Allocator>
+    void
+    __uninitialized_default_a(_ForwardIterator __first,
+			      _ForwardIterator __last,
+			      _Allocator& __alloc)
+    {
+      _ForwardIterator __cur = __first;
+      __try
+	{
+	  for (; __cur != __last; ++__cur)
+	    __alloc.construct(std::__addressof(*__cur));
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__first, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    __uninitialized_default_a(_ForwardIterator __first,
+			      _ForwardIterator __last,
+			      allocator<_Tp>&)
+    { std::__uninitialized_default(__first, __last); }
+
+
+  // __uninitialized_default_n_a
+  // Fills [first, first + n) with n default constructed value_types(s),
+  // constructed with the allocator alloc.
+  template<typename _ForwardIterator, typename _Size, typename _Allocator>
+    void
+    __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 
+				_Allocator& __alloc)
+    {
+      _ForwardIterator __cur = __first;
+      __try
+	{
+	  for (; __n > 0; --__n, ++__cur)
+	    __alloc.construct(std::__addressof(*__cur));
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__first, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _ForwardIterator, typename _Size, typename _Tp>
+    inline void
+    __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 
+				allocator<_Tp>&)
+    { std::__uninitialized_default_n(__first, __n); }
+
+
+  template<typename _InputIterator, typename _Size,
+	   typename _ForwardIterator>
+    _ForwardIterator
+    __uninitialized_copy_n(_InputIterator __first, _Size __n,
+			   _ForwardIterator __result, input_iterator_tag)
+    {
+      _ForwardIterator __cur = __result;
+      __try
+	{
+	  for (; __n > 0; --__n, ++__first, ++__cur)
+	    std::_Construct(std::__addressof(*__cur), *__first);
+	  return __cur;
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __cur);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _RandomAccessIterator, typename _Size,
+	   typename _ForwardIterator>
+    inline _ForwardIterator
+    __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n,
+			   _ForwardIterator __result,
+			   random_access_iterator_tag)
+    { return std::uninitialized_copy(__first, __first + __n, __result); }
+
+  /**
+   *  @brief Copies the range [first,first+n) into result.
+   *  @param  first  An input iterator.
+   *  @param  n      The number of elements to copy.
+   *  @param  result An output iterator.
+   *  @return  result + n
+   *
+   *  Like copy_n(), but does not require an initialized output range.
+  */
+  template<typename _InputIterator, typename _Size, typename _ForwardIterator>
+    inline _ForwardIterator
+    uninitialized_copy_n(_InputIterator __first, _Size __n,
+			 _ForwardIterator __result)
+    { return std::__uninitialized_copy_n(__first, __n, __result,
+					 std::__iterator_category(__first)); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _STL_UNINITIALIZED_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_vector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_vector.h
new file mode 100644
index 000000000..5f71aa5cd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stl_vector.h
@@ -0,0 +1,1327 @@
+// Vector implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this  software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/stl_vector.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{vector}
+ */
+
+#ifndef _STL_VECTOR_H
+#define _STL_VECTOR_H 1
+
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/functexcept.h>
+#include <bits/concept_check.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /// See bits/stl_deque.h's _Deque_base for an explanation.
+  template<typename _Tp, typename _Alloc>
+    struct _Vector_base
+    {
+      typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+      struct _Vector_impl 
+      : public _Tp_alloc_type
+      {
+	typename _Tp_alloc_type::pointer _M_start;
+	typename _Tp_alloc_type::pointer _M_finish;
+	typename _Tp_alloc_type::pointer _M_end_of_storage;
+
+	_Vector_impl()
+	: _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+	{ }
+
+	_Vector_impl(_Tp_alloc_type const& __a)
+	: _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+	{ }
+      };
+      
+    public:
+      typedef _Alloc allocator_type;
+
+      _Tp_alloc_type&
+      _M_get_Tp_allocator()
+      { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
+
+      const _Tp_alloc_type&
+      _M_get_Tp_allocator() const
+      { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_get_Tp_allocator()); }
+
+      _Vector_base()
+      : _M_impl() { }
+
+      _Vector_base(const allocator_type& __a)
+      : _M_impl(__a) { }
+
+      _Vector_base(size_t __n)
+      : _M_impl()
+      {
+	this->_M_impl._M_start = this->_M_allocate(__n);
+	this->_M_impl._M_finish = this->_M_impl._M_start;
+	this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+      }
+
+      _Vector_base(size_t __n, const allocator_type& __a)
+      : _M_impl(__a)
+      {
+	this->_M_impl._M_start = this->_M_allocate(__n);
+	this->_M_impl._M_finish = this->_M_impl._M_start;
+	this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _Vector_base(_Vector_base&& __x)
+      : _M_impl(__x._M_get_Tp_allocator())
+      {
+	this->_M_impl._M_start = __x._M_impl._M_start;
+	this->_M_impl._M_finish = __x._M_impl._M_finish;
+	this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
+	__x._M_impl._M_start = 0;
+	__x._M_impl._M_finish = 0;
+	__x._M_impl._M_end_of_storage = 0;
+      }
+#endif
+
+      ~_Vector_base()
+      { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
+		      - this->_M_impl._M_start); }
+
+    public:
+      _Vector_impl _M_impl;
+
+      typename _Tp_alloc_type::pointer
+      _M_allocate(size_t __n)
+      { return __n != 0 ? _M_impl.allocate(__n) : 0; }
+
+      void
+      _M_deallocate(typename _Tp_alloc_type::pointer __p, size_t __n)
+      {
+	if (__p)
+	  _M_impl.deallocate(__p, __n);
+      }
+    };
+
+
+  /**
+   *  @brief A standard container which offers fixed time access to
+   *  individual elements in any order.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>, including the
+   *  <a href="tables.html#68">optional sequence requirements</a> with the
+   *  %exception of @c push_front and @c pop_front.
+   *
+   *  In some terminology a %vector can be described as a dynamic
+   *  C-style array, it offers fast and efficient access to individual
+   *  elements in any order and saves the user from worrying about
+   *  memory and size allocation.  Subscripting ( @c [] ) access is
+   *  also provided as with C-style arrays.
+  */
+  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+    class vector : protected _Vector_base<_Tp, _Alloc>
+    {
+      // Concept requirements.
+      typedef typename _Alloc::value_type                _Alloc_value_type;
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+      __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
+      
+      typedef _Vector_base<_Tp, _Alloc>			 _Base;
+      typedef typename _Base::_Tp_alloc_type		 _Tp_alloc_type;
+
+    public:
+      typedef _Tp					 value_type;
+      typedef typename _Tp_alloc_type::pointer           pointer;
+      typedef typename _Tp_alloc_type::const_pointer     const_pointer;
+      typedef typename _Tp_alloc_type::reference         reference;
+      typedef typename _Tp_alloc_type::const_reference   const_reference;
+      typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
+      typedef __gnu_cxx::__normal_iterator<const_pointer, vector>
+      const_iterator;
+      typedef std::reverse_iterator<const_iterator>  const_reverse_iterator;
+      typedef std::reverse_iterator<iterator>		 reverse_iterator;
+      typedef size_t					 size_type;
+      typedef ptrdiff_t					 difference_type;
+      typedef _Alloc                        		 allocator_type;
+
+    protected:
+      using _Base::_M_allocate;
+      using _Base::_M_deallocate;
+      using _Base::_M_impl;
+      using _Base::_M_get_Tp_allocator;
+
+    public:
+      // [23.2.4.1] construct/copy/destroy
+      // (assign() and get_allocator() are also listed in this section)
+      /**
+       *  @brief  Default constructor creates no elements.
+       */
+      vector()
+      : _Base() { }
+
+      /**
+       *  @brief  Creates a %vector with no elements.
+       *  @param  a  An allocator object.
+       */
+      explicit
+      vector(const allocator_type& __a)
+      : _Base(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Creates a %vector with default constructed elements.
+       *  @param  n  The number of elements to initially create.
+       *
+       *  This constructor fills the %vector with @a n default
+       *  constructed elements.
+       */
+      explicit
+      vector(size_type __n)
+      : _Base(__n)
+      { _M_default_initialize(__n); }
+
+      /**
+       *  @brief  Creates a %vector with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator.
+       *
+       *  This constructor fills the %vector with @a n copies of @a value.
+       */
+      vector(size_type __n, const value_type& __value,
+	     const allocator_type& __a = allocator_type())
+      : _Base(__n, __a)
+      { _M_fill_initialize(__n, __value); }
+#else
+      /**
+       *  @brief  Creates a %vector with copies of an exemplar element.
+       *  @param  n  The number of elements to initially create.
+       *  @param  value  An element to copy.
+       *  @param  a  An allocator.
+       *
+       *  This constructor fills the %vector with @a n copies of @a value.
+       */
+      explicit
+      vector(size_type __n, const value_type& __value = value_type(),
+	     const allocator_type& __a = allocator_type())
+      : _Base(__n, __a)
+      { _M_fill_initialize(__n, __value); }
+#endif
+
+      /**
+       *  @brief  %Vector copy constructor.
+       *  @param  x  A %vector of identical element and allocator types.
+       *
+       *  The newly-created %vector uses a copy of the allocation
+       *  object used by @a x.  All the elements of @a x are copied,
+       *  but any extra memory in
+       *  @a x (for fast expansion) will not be copied.
+       */
+      vector(const vector& __x)
+      : _Base(__x.size(), __x._M_get_Tp_allocator())
+      { this->_M_impl._M_finish =
+	  std::__uninitialized_copy_a(__x.begin(), __x.end(),
+				      this->_M_impl._M_start,
+				      _M_get_Tp_allocator());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Vector move constructor.
+       *  @param  x  A %vector of identical element and allocator types.
+       *
+       *  The newly-created %vector contains the exact contents of @a x.
+       *  The contents of @a x are a valid, but unspecified %vector.
+       */
+      vector(vector&& __x)
+      : _Base(std::move(__x)) { }
+
+      /**
+       *  @brief  Builds a %vector from an initializer list.
+       *  @param  l  An initializer_list.
+       *  @param  a  An allocator.
+       *
+       *  Create a %vector consisting of copies of the elements in the
+       *  initializer_list @a l.
+       *
+       *  This will call the element type's copy constructor N times
+       *  (where N is @a l.size()) and do no memory reallocation.
+       */
+      vector(initializer_list<value_type> __l,
+	     const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	_M_range_initialize(__l.begin(), __l.end(),
+			    random_access_iterator_tag());
+      }
+#endif
+
+      /**
+       *  @brief  Builds a %vector from a range.
+       *  @param  first  An input iterator.
+       *  @param  last  An input iterator.
+       *  @param  a  An allocator.
+       *
+       *  Create a %vector consisting of copies of the elements from
+       *  [first,last).
+       *
+       *  If the iterators are forward, bidirectional, or
+       *  random-access, then this will call the elements' copy
+       *  constructor N times (where N is distance(first,last)) and do
+       *  no memory reallocation.  But if only input iterators are
+       *  used, then this will do at most 2N calls to the copy
+       *  constructor, and logN memory reallocations.
+       */
+      template<typename _InputIterator>
+        vector(_InputIterator __first, _InputIterator __last,
+	       const allocator_type& __a = allocator_type())
+	: _Base(__a)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_initialize_dispatch(__first, __last, _Integral());
+	}
+
+      /**
+       *  The dtor only erases the elements, and note that if the
+       *  elements themselves are pointers, the pointed-to memory is
+       *  not touched in any way.  Managing the pointer is the user's
+       *  responsibility.
+       */
+      ~vector()
+      { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+		      _M_get_Tp_allocator()); }
+
+      /**
+       *  @brief  %Vector assignment operator.
+       *  @param  x  A %vector of identical element and allocator types.
+       *
+       *  All the elements of @a x are copied, but any extra memory in
+       *  @a x (for fast expansion) will not be copied.  Unlike the
+       *  copy constructor, the allocator object is not copied.
+       */
+      vector&
+      operator=(const vector& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  %Vector move assignment operator.
+       *  @param  x  A %vector of identical element and allocator types.
+       *
+       *  The contents of @a x are moved into this %vector (without copying).
+       *  @a x is a valid, but unspecified %vector.
+       */
+      vector&
+      operator=(vector&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      /**
+       *  @brief  %Vector list assignment operator.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %vector with copies of the elements in the
+       *  initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %vector and
+       *  that the resulting %vector's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      vector&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->assign(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /**
+       *  @brief  Assigns a given value to a %vector.
+       *  @param  n  Number of elements to be assigned.
+       *  @param  val  Value to be assigned.
+       *
+       *  This function fills a %vector with @a n copies of the given
+       *  value.  Note that the assignment completely changes the
+       *  %vector and that the resulting %vector's size is the same as
+       *  the number of elements assigned.  Old data may be lost.
+       */
+      void
+      assign(size_type __n, const value_type& __val)
+      { _M_fill_assign(__n, __val); }
+
+      /**
+       *  @brief  Assigns a range to a %vector.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function fills a %vector with copies of the elements in the
+       *  range [first,last).
+       *
+       *  Note that the assignment completely changes the %vector and
+       *  that the resulting %vector's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_assign_dispatch(__first, __last, _Integral());
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Assigns an initializer list to a %vector.
+       *  @param  l  An initializer_list.
+       *
+       *  This function fills a %vector with copies of the elements in the
+       *  initializer list @a l.
+       *
+       *  Note that the assignment completely changes the %vector and
+       *  that the resulting %vector's size is the same as the number
+       *  of elements assigned.  Old data may be lost.
+       */
+      void
+      assign(initializer_list<value_type> __l)
+      { this->assign(__l.begin(), __l.end()); }
+#endif
+
+      /// Get a copy of the memory allocation object.
+      using _Base::get_allocator;
+
+      // iterators
+      /**
+       *  Returns a read/write iterator that points to the first
+       *  element in the %vector.  Iteration is done in ordinary
+       *  element order.
+       */
+      iterator
+      begin()
+      { return iterator(this->_M_impl._M_start); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the
+       *  first element in the %vector.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      begin() const
+      { return const_iterator(this->_M_impl._M_start); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  element in the %vector.  Iteration is done in ordinary
+       *  element order.
+       */
+      iterator
+      end()
+      { return iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %vector.  Iteration is done in
+       *  ordinary element order.
+       */
+      const_iterator
+      end() const
+      { return const_iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the
+       *  last element in the %vector.  Iteration is done in reverse
+       *  element order.
+       */
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last element in the %vector.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one
+       *  before the first element in the %vector.  Iteration is done
+       *  in reverse element order.
+       */
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first element in the %vector.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the
+       *  first element in the %vector.  Iteration is done in ordinary
+       *  element order.
+       */
+      const_iterator
+      cbegin() const
+      { return const_iterator(this->_M_impl._M_start); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past
+       *  the last element in the %vector.  Iteration is done in
+       *  ordinary element order.
+       */
+      const_iterator
+      cend() const
+      { return const_iterator(this->_M_impl._M_finish); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last element in the %vector.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first element in the %vector.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // [23.2.4.2] capacity
+      /**  Returns the number of elements in the %vector.  */
+      size_type
+      size() const
+      { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
+
+      /**  Returns the size() of the largest possible %vector.  */
+      size_type
+      max_size() const
+      { return _M_get_Tp_allocator().max_size(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Resizes the %vector to the specified number of elements.
+       *  @param  new_size  Number of elements the %vector should contain.
+       *
+       *  This function will %resize the %vector to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %vector's current size the %vector is truncated, otherwise
+       *  default constructed elements are appended.
+       */
+      void
+      resize(size_type __new_size)
+      {
+	if (__new_size > size())
+	  _M_default_append(__new_size - size());
+	else if (__new_size < size())
+	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
+      }
+
+      /**
+       *  @brief  Resizes the %vector to the specified number of elements.
+       *  @param  new_size  Number of elements the %vector should contain.
+       *  @param  x  Data with which new elements should be populated.
+       *
+       *  This function will %resize the %vector to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %vector's current size the %vector is truncated, otherwise
+       *  the %vector is extended and new elements are populated with
+       *  given data.
+       */
+      void
+      resize(size_type __new_size, const value_type& __x)
+      {
+	if (__new_size > size())
+	  insert(end(), __new_size - size(), __x);
+	else if (__new_size < size())
+	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
+      }
+#else
+      /**
+       *  @brief  Resizes the %vector to the specified number of elements.
+       *  @param  new_size  Number of elements the %vector should contain.
+       *  @param  x  Data with which new elements should be populated.
+       *
+       *  This function will %resize the %vector to the specified
+       *  number of elements.  If the number is smaller than the
+       *  %vector's current size the %vector is truncated, otherwise
+       *  the %vector is extended and new elements are populated with
+       *  given data.
+       */
+      void
+      resize(size_type __new_size, value_type __x = value_type())
+      {
+	if (__new_size > size())
+	  insert(end(), __new_size - size(), __x);
+	else if (__new_size < size())
+	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**  A non-binding request to reduce capacity() to size().  */
+      void
+      shrink_to_fit()
+      { std::__shrink_to_fit<vector>::_S_do_it(*this); }
+#endif
+
+      /**
+       *  Returns the total number of elements that the %vector can
+       *  hold before needing to allocate more memory.
+       */
+      size_type
+      capacity() const
+      { return size_type(this->_M_impl._M_end_of_storage
+			 - this->_M_impl._M_start); }
+
+      /**
+       *  Returns true if the %vector is empty.  (Thus begin() would
+       *  equal end().)
+       */
+      bool
+      empty() const
+      { return begin() == end(); }
+
+      /**
+       *  @brief  Attempt to preallocate enough memory for specified number of
+       *          elements.
+       *  @param  n  Number of elements required.
+       *  @throw  std::length_error  If @a n exceeds @c max_size().
+       *
+       *  This function attempts to reserve enough memory for the
+       *  %vector to hold the specified number of elements.  If the
+       *  number requested is more than max_size(), length_error is
+       *  thrown.
+       *
+       *  The advantage of this function is that if optimal code is a
+       *  necessity and the user can determine the number of elements
+       *  that will be required, the user can reserve the memory in
+       *  %advance, and thus prevent a possible reallocation of memory
+       *  and copying of %vector data.
+       */
+      void
+      reserve(size_type __n);
+
+      // element access
+      /**
+       *  @brief  Subscript access to the data contained in the %vector.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read/write reference to data.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      reference
+      operator[](size_type __n)
+      { return *(this->_M_impl._M_start + __n); }
+
+      /**
+       *  @brief  Subscript access to the data contained in the %vector.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read-only (constant) reference to data.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      const_reference
+      operator[](size_type __n) const
+      { return *(this->_M_impl._M_start + __n); }
+
+    protected:
+      /// Safety check used only from at().
+      void
+      _M_range_check(size_type __n) const
+      {
+	if (__n >= this->size())
+	  __throw_out_of_range(__N("vector::_M_range_check"));
+      }
+
+    public:
+      /**
+       *  @brief  Provides access to the data contained in the %vector.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read/write reference to data.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter
+       *  is first checked that it is in the range of the vector.  The
+       *  function throws out_of_range if the check fails.
+       */
+      reference
+      at(size_type __n)
+      {
+	_M_range_check(__n);
+	return (*this)[__n]; 
+      }
+
+      /**
+       *  @brief  Provides access to the data contained in the %vector.
+       *  @param n The index of the element for which data should be
+       *  accessed.
+       *  @return  Read-only (constant) reference to data.
+       *  @throw  std::out_of_range  If @a n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter
+       *  is first checked that it is in the range of the vector.  The
+       *  function throws out_of_range if the check fails.
+       */
+      const_reference
+      at(size_type __n) const
+      {
+	_M_range_check(__n);
+	return (*this)[__n];
+      }
+
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %vector.
+       */
+      reference
+      front()
+      { return *begin(); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %vector.
+       */
+      const_reference
+      front() const
+      { return *begin(); }
+
+      /**
+       *  Returns a read/write reference to the data at the last
+       *  element of the %vector.
+       */
+      reference
+      back()
+      { return *(end() - 1); }
+      
+      /**
+       *  Returns a read-only (constant) reference to the data at the
+       *  last element of the %vector.
+       */
+      const_reference
+      back() const
+      { return *(end() - 1); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 464. Suggestion for new member functions in standard containers.
+      // data access
+      /**
+       *   Returns a pointer such that [data(), data() + size()) is a valid
+       *   range.  For a non-empty %vector, data() == &front().
+       */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      _Tp*
+#else
+      pointer
+#endif
+      data()
+      { return std::__addressof(front()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const _Tp*
+#else
+      const_pointer
+#endif
+      data() const
+      { return std::__addressof(front()); }
+
+      // [23.2.4.3] modifiers
+      /**
+       *  @brief  Add data to the end of the %vector.
+       *  @param  x  Data to be added.
+       *
+       *  This is a typical stack operation.  The function creates an
+       *  element at the end of the %vector and assigns the given data
+       *  to it.  Due to the nature of a %vector this operation can be
+       *  done in constant time if the %vector has preallocated space
+       *  available.
+       */
+      void
+      push_back(const value_type& __x)
+      {
+	if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_finish, __x);
+	    ++this->_M_impl._M_finish;
+	  }
+	else
+	  _M_insert_aux(end(), __x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_back(value_type&& __x)
+      { emplace_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Removes last element.
+       *
+       *  This is a typical stack operation. It shrinks the %vector by one.
+       *
+       *  Note that no data is returned, and if the last element's
+       *  data is needed, it should be retrieved before pop_back() is
+       *  called.
+       */
+      void
+      pop_back()
+      {
+	--this->_M_impl._M_finish;
+	this->_M_impl.destroy(this->_M_impl._M_finish);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Inserts an object in %vector before specified iterator.
+       *  @param  position  An iterator into the %vector.
+       *  @param  args  Arguments.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert an object of type T constructed
+       *  with T(std::forward<Args>(args)...) before the specified location.
+       *  Note that this kind of operation could be expensive for a %vector
+       *  and if it is frequently used the user should consider using
+       *  std::list.
+       */
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args);
+#endif
+
+      /**
+       *  @brief  Inserts given value into %vector before specified iterator.
+       *  @param  position  An iterator into the %vector.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given value before
+       *  the specified location.  Note that this kind of operation
+       *  could be expensive for a %vector and if it is frequently
+       *  used the user should consider using std::list.
+       */
+      iterator
+      insert(iterator __position, const value_type& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Inserts given rvalue into %vector before specified iterator.
+       *  @param  position  An iterator into the %vector.
+       *  @param  x  Data to be inserted.
+       *  @return  An iterator that points to the inserted data.
+       *
+       *  This function will insert a copy of the given rvalue before
+       *  the specified location.  Note that this kind of operation
+       *  could be expensive for a %vector and if it is frequently
+       *  used the user should consider using std::list.
+       */
+      iterator
+      insert(iterator __position, value_type&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      /**
+       *  @brief  Inserts an initializer_list into the %vector.
+       *  @param  position  An iterator into the %vector.
+       *  @param  l  An initializer_list.
+       *
+       *  This function will insert copies of the data in the 
+       *  initializer_list @a l into the %vector before the location
+       *  specified by @a position.
+       *
+       *  Note that this kind of operation could be expensive for a
+       *  %vector and if it is frequently used the user should
+       *  consider using std::list.
+       */
+      void
+      insert(iterator __position, initializer_list<value_type> __l)
+      { this->insert(__position, __l.begin(), __l.end()); }
+#endif
+
+      /**
+       *  @brief  Inserts a number of copies of given data into the %vector.
+       *  @param  position  An iterator into the %vector.
+       *  @param  n  Number of elements to be inserted.
+       *  @param  x  Data to be inserted.
+       *
+       *  This function will insert a specified number of copies of
+       *  the given data before the location specified by @a position.
+       *
+       *  Note that this kind of operation could be expensive for a
+       *  %vector and if it is frequently used the user should
+       *  consider using std::list.
+       */
+      void
+      insert(iterator __position, size_type __n, const value_type& __x)
+      { _M_fill_insert(__position, __n, __x); }
+
+      /**
+       *  @brief  Inserts a range into the %vector.
+       *  @param  position  An iterator into the %vector.
+       *  @param  first  An input iterator.
+       *  @param  last   An input iterator.
+       *
+       *  This function will insert copies of the data in the range
+       *  [first,last) into the %vector before the location specified
+       *  by @a pos.
+       *
+       *  Note that this kind of operation could be expensive for a
+       *  %vector and if it is frequently used the user should
+       *  consider using std::list.
+       */
+      template<typename _InputIterator>
+        void
+        insert(iterator __position, _InputIterator __first,
+	       _InputIterator __last)
+        {
+	  // Check whether it's an integral type.  If so, it's not an iterator.
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_insert_dispatch(__position, __first, __last, _Integral());
+	}
+
+      /**
+       *  @brief  Remove element at given position.
+       *  @param  position  Iterator pointing to element to be erased.
+       *  @return  An iterator pointing to the next element (or end()).
+       *
+       *  This function will erase the element at the given position and thus
+       *  shorten the %vector by one.
+       *
+       *  Note This operation could be expensive and if it is
+       *  frequently used the user should consider using std::list.
+       *  The user is also cautioned that this function only erases
+       *  the element, and that if the element is itself a pointer,
+       *  the pointed-to memory is not touched in any way.  Managing
+       *  the pointer is the user's responsibility.
+       */
+      iterator
+      erase(iterator __position);
+
+      /**
+       *  @brief  Remove a range of elements.
+       *  @param  first  Iterator pointing to the first element to be erased.
+       *  @param  last  Iterator pointing to one past the last element to be
+       *                erased.
+       *  @return  An iterator pointing to the element pointed to by @a last
+       *           prior to erasing (or end()).
+       *
+       *  This function will erase the elements in the range [first,last) and
+       *  shorten the %vector accordingly.
+       *
+       *  Note This operation could be expensive and if it is
+       *  frequently used the user should consider using std::list.
+       *  The user is also cautioned that this function only erases
+       *  the elements, and that if the elements themselves are
+       *  pointers, the pointed-to memory is not touched in any way.
+       *  Managing the pointer is the user's responsibility.
+       */
+      iterator
+      erase(iterator __first, iterator __last);
+
+      /**
+       *  @brief  Swaps data with another %vector.
+       *  @param  x  A %vector of the same element and allocator types.
+       *
+       *  This exchanges the elements between two vectors in constant time.
+       *  (Three pointers, so it should be quite fast.)
+       *  Note that the global std::swap() function is specialized such that
+       *  std::swap(v1,v2) will feed to this function.
+       */
+      void
+      swap(vector& __x)
+      {
+	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+	std::swap(this->_M_impl._M_end_of_storage,
+		  __x._M_impl._M_end_of_storage);
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 431. Swapping containers with unequal allocators.
+	std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
+						    __x._M_get_Tp_allocator());
+      }
+
+      /**
+       *  Erases all the elements.  Note that this function only erases the
+       *  elements, and that if the elements themselves are pointers, the
+       *  pointed-to memory is not touched in any way.  Managing the pointer is
+       *  the user's responsibility.
+       */
+      void
+      clear()
+      { _M_erase_at_end(this->_M_impl._M_start); }
+
+    protected:
+      /**
+       *  Memory expansion handler.  Uses the member allocation function to
+       *  obtain @a n bytes of memory, and then copies [first,last) into it.
+       */
+      template<typename _ForwardIterator>
+        pointer
+        _M_allocate_and_copy(size_type __n,
+			     _ForwardIterator __first, _ForwardIterator __last)
+        {
+	  pointer __result = this->_M_allocate(__n);
+	  __try
+	    {
+	      std::__uninitialized_copy_a(__first, __last, __result,
+					  _M_get_Tp_allocator());
+	      return __result;
+	    }
+	  __catch(...)
+	    {
+	      _M_deallocate(__result, __n);
+	      __throw_exception_again;
+	    }
+	}
+
+
+      // Internal constructor functions follow.
+
+      // Called by the range constructor to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
+        {
+	  this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n));
+	  this->_M_impl._M_end_of_storage =
+	    this->_M_impl._M_start + static_cast<size_type>(__n);
+	  _M_fill_initialize(static_cast<size_type>(__n), __value);
+	}
+
+      // Called by the range constructor to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+			       __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+	  _M_range_initialize(__first, __last, _IterCategory());
+	}
+
+      // Called by the second initialize_dispatch above
+      template<typename _InputIterator>
+        void
+        _M_range_initialize(_InputIterator __first,
+			    _InputIterator __last, std::input_iterator_tag)
+        {
+	  for (; __first != __last; ++__first)
+	    push_back(*__first);
+	}
+
+      // Called by the second initialize_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_range_initialize(_ForwardIterator __first,
+			    _ForwardIterator __last, std::forward_iterator_tag)
+        {
+	  const size_type __n = std::distance(__first, __last);
+	  this->_M_impl._M_start = this->_M_allocate(__n);
+	  this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+	  this->_M_impl._M_finish =
+	    std::__uninitialized_copy_a(__first, __last,
+					this->_M_impl._M_start,
+					_M_get_Tp_allocator());
+	}
+
+      // Called by the first initialize_dispatch above and by the
+      // vector(n,value,a) constructor.
+      void
+      _M_fill_initialize(size_type __n, const value_type& __value)
+      {
+	std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 
+				      _M_get_Tp_allocator());
+	this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // Called by the vector(n) constructor.
+      void
+      _M_default_initialize(size_type __n)
+      {
+	std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 
+					 _M_get_Tp_allocator());
+	this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+      }
+#endif
+
+      // Internal assign functions follow.  The *_aux functions do the actual
+      // assignment work for the range versions.
+
+      // Called by the range assign to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+        { _M_fill_assign(__n, __val); }
+
+      // Called by the range assign to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+			   __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+	  _M_assign_aux(__first, __last, _IterCategory());
+	}
+
+      // Called by the second assign_dispatch above
+      template<typename _InputIterator>
+        void
+        _M_assign_aux(_InputIterator __first, _InputIterator __last,
+		      std::input_iterator_tag);
+
+      // Called by the second assign_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+		      std::forward_iterator_tag);
+
+      // Called by assign(n,t), and the range assign when it turns out
+      // to be the same thing.
+      void
+      _M_fill_assign(size_type __n, const value_type& __val);
+
+
+      // Internal insert functions follow.
+
+      // Called by the range insert to implement [23.1.1]/9
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
+			   __true_type)
+        { _M_fill_insert(__pos, __n, __val); }
+
+      // Called by the range insert to implement [23.1.1]/9
+      template<typename _InputIterator>
+        void
+        _M_insert_dispatch(iterator __pos, _InputIterator __first,
+			   _InputIterator __last, __false_type)
+        {
+	  typedef typename std::iterator_traits<_InputIterator>::
+	    iterator_category _IterCategory;
+	  _M_range_insert(__pos, __first, __last, _IterCategory());
+	}
+
+      // Called by the second insert_dispatch above
+      template<typename _InputIterator>
+        void
+        _M_range_insert(iterator __pos, _InputIterator __first,
+			_InputIterator __last, std::input_iterator_tag);
+
+      // Called by the second insert_dispatch above
+      template<typename _ForwardIterator>
+        void
+        _M_range_insert(iterator __pos, _ForwardIterator __first,
+			_ForwardIterator __last, std::forward_iterator_tag);
+
+      // Called by insert(p,n,x), and the range insert when it turns out to be
+      // the same thing.
+      void
+      _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // Called by resize(n).
+      void
+      _M_default_append(size_type __n);
+#endif
+
+      // Called by insert(p,x)
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      _M_insert_aux(iterator __position, const value_type& __x);
+#else
+      template<typename... _Args>
+        void
+        _M_insert_aux(iterator __position, _Args&&... __args);
+#endif
+
+      // Called by the latter.
+      size_type
+      _M_check_len(size_type __n, const char* __s) const
+      {
+	if (max_size() - size() < __n)
+	  __throw_length_error(__N(__s));
+
+	const size_type __len = size() + std::max(size(), __n);
+	return (__len < size() || __len > max_size()) ? max_size() : __len;
+      }
+
+      // Internal erase functions follow.
+
+      // Called by erase(q1,q2), clear(), resize(), _M_fill_assign,
+      // _M_assign_aux.
+      void
+      _M_erase_at_end(pointer __pos)
+      {
+	std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
+	this->_M_impl._M_finish = __pos;
+      }
+    };
+
+
+  /**
+   *  @brief  Vector equality comparison.
+   *  @param  x  A %vector.
+   *  @param  y  A %vector of the same type as @a x.
+   *  @return  True iff the size and elements of the vectors are equal.
+   *
+   *  This is an equivalence relation.  It is linear in the size of the
+   *  vectors.  Vectors are considered equivalent if their sizes are equal,
+   *  and if corresponding elements compare equal.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return (__x.size() == __y.size()
+	      && std::equal(__x.begin(), __x.end(), __y.begin())); }
+
+  /**
+   *  @brief  Vector ordering relation.
+   *  @param  x  A %vector.
+   *  @param  y  A %vector of the same type as @a x.
+   *  @return  True iff @a x is lexicographically less than @a y.
+   *
+   *  This is a total ordering relation.  It is linear in the size of the
+   *  vectors.  The elements must be comparable with @c <.
+   *
+   *  See std::lexicographical_compare() for how the determination is made.
+  */
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return std::lexicographical_compare(__x.begin(), __x.end(),
+					  __y.begin(), __y.end()); }
+
+  /// Based on operator==
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return __y < __x; }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  /// See std::vector::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _STL_VECTOR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stream_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stream_iterator.h
new file mode 100644
index 000000000..57ca96111
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stream_iterator.h
@@ -0,0 +1,221 @@
+// Stream iterators
+
+// Copyright (C) 2001, 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/stream_iterator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ */
+
+#ifndef _STREAM_ITERATOR_H
+#define _STREAM_ITERATOR_H 1
+
+#pragma GCC system_header
+
+#include <debug/debug.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup iterators
+   * @{
+   */
+
+  /// Provides input iterator semantics for streams.
+  template<typename _Tp, typename _CharT = char,
+           typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
+    class istream_iterator
+    : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
+    {
+    public:
+      typedef _CharT                         char_type;
+      typedef _Traits                        traits_type;
+      typedef basic_istream<_CharT, _Traits> istream_type;
+
+    private:
+      istream_type*	_M_stream;
+      _Tp		_M_value;
+      bool		_M_ok;
+
+    public:
+      ///  Construct end of input stream iterator.
+      _GLIBCXX_CONSTEXPR istream_iterator()
+      : _M_stream(0), _M_value(), _M_ok(false) {}
+
+      ///  Construct start of input stream iterator.
+      istream_iterator(istream_type& __s)
+      : _M_stream(&__s)
+      { _M_read(); }
+
+      istream_iterator(const istream_iterator& __obj)
+      : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
+        _M_ok(__obj._M_ok)
+      { }
+
+      const _Tp&
+      operator*() const
+      {
+	__glibcxx_requires_cond(_M_ok,
+				_M_message(__gnu_debug::__msg_deref_istream)
+				._M_iterator(*this));
+	return _M_value;
+      }
+
+      const _Tp*
+      operator->() const { return &(operator*()); }
+
+      istream_iterator&
+      operator++()
+      {
+	__glibcxx_requires_cond(_M_ok,
+				_M_message(__gnu_debug::__msg_inc_istream)
+				._M_iterator(*this));
+	_M_read();
+	return *this;
+      }
+
+      istream_iterator
+      operator++(int)
+      {
+	__glibcxx_requires_cond(_M_ok,
+				_M_message(__gnu_debug::__msg_inc_istream)
+				._M_iterator(*this));
+	istream_iterator __tmp = *this;
+	_M_read();
+	return __tmp;
+      }
+
+      bool
+      _M_equal(const istream_iterator& __x) const
+      { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
+
+    private:
+      void
+      _M_read()
+      {
+	_M_ok = (_M_stream && *_M_stream) ? true : false;
+	if (_M_ok)
+	  {
+	    *_M_stream >> _M_value;
+	    _M_ok = *_M_stream ? true : false;
+	  }
+      }
+    };
+
+  ///  Return true if x and y are both end or not end, or x and y are the same.
+  template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
+    inline bool
+    operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+	       const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+    { return __x._M_equal(__y); }
+
+  ///  Return false if x and y are both end or not end, or x and y are the same.
+  template <class _Tp, class _CharT, class _Traits, class _Dist>
+    inline bool
+    operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+	       const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+    { return !__x._M_equal(__y); }
+
+  /**
+   *  @brief  Provides output iterator semantics for streams.
+   *
+   *  This class provides an iterator to write to an ostream.  The type Tp is
+   *  the only type written by this iterator and there must be an
+   *  operator<<(Tp) defined.
+   *
+   *  @param  Tp  The type to write to the ostream.
+   *  @param  CharT  The ostream char_type.
+   *  @param  Traits  The ostream char_traits.
+  */
+  template<typename _Tp, typename _CharT = char,
+           typename _Traits = char_traits<_CharT> >
+    class ostream_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    public:
+      //@{
+      /// Public typedef
+      typedef _CharT                         char_type;
+      typedef _Traits                        traits_type;
+      typedef basic_ostream<_CharT, _Traits> ostream_type;
+      //@}
+
+    private:
+      ostream_type*	_M_stream;
+      const _CharT*	_M_string;
+
+    public:
+      /// Construct from an ostream.
+      ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
+
+      /**
+       *  Construct from an ostream.
+       *
+       *  The delimiter string @a c is written to the stream after every Tp
+       *  written to the stream.  The delimiter is not copied, and thus must
+       *  not be destroyed while this iterator is in use.
+       *
+       *  @param  s  Underlying ostream to write to.
+       *  @param  c  CharT delimiter string to insert.
+      */
+      ostream_iterator(ostream_type& __s, const _CharT* __c)
+      : _M_stream(&__s), _M_string(__c)  { }
+
+      /// Copy constructor.
+      ostream_iterator(const ostream_iterator& __obj)
+      : _M_stream(__obj._M_stream), _M_string(__obj._M_string)  { }
+
+      /// Writes @a value to underlying ostream using operator<<.  If
+      /// constructed with delimiter string, writes delimiter to ostream.
+      ostream_iterator&
+      operator=(const _Tp& __value)
+      {
+	__glibcxx_requires_cond(_M_stream != 0,
+				_M_message(__gnu_debug::__msg_output_ostream)
+				._M_iterator(*this));
+	*_M_stream << __value;
+	if (_M_string) *_M_stream << _M_string;
+	return *this;
+      }
+
+      ostream_iterator&
+      operator*()
+      { return *this; }
+
+      ostream_iterator&
+      operator++()
+      { return *this; }
+
+      ostream_iterator&
+      operator++(int)
+      { return *this; }
+    };
+
+  // @} group iterators
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf.tcc
new file mode 100644
index 000000000..6cb85fc18
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf.tcc
@@ -0,0 +1,176 @@
+// Stream buffer classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/streambuf.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{streambuf}
+ */
+
+//
+// ISO C++ 14882: 27.5  Stream buffers
+//
+
+#ifndef _STREAMBUF_TCC
+#define _STREAMBUF_TCC 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_streambuf<_CharT, _Traits>::
+    xsgetn(char_type* __s, streamsize __n)
+    {
+      streamsize __ret = 0;
+      while (__ret < __n)
+	{
+	  const streamsize __buf_len = this->egptr() - this->gptr();
+	  if (__buf_len)
+	    {
+	      const streamsize __remaining = __n - __ret;
+	      const streamsize __len = std::min(__buf_len, __remaining);
+	      traits_type::copy(__s, this->gptr(), __len);
+	      __ret += __len;
+	      __s += __len;
+	      this->__safe_gbump(__len);
+	    }
+
+	  if (__ret < __n)
+	    {
+	      const int_type __c = this->uflow();
+	      if (!traits_type::eq_int_type(__c, traits_type::eof()))
+		{
+		  traits_type::assign(*__s++, traits_type::to_char_type(__c));
+		  ++__ret;
+		}
+	      else
+		break;
+	    }
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    basic_streambuf<_CharT, _Traits>::
+    xsputn(const char_type* __s, streamsize __n)
+    {
+      streamsize __ret = 0;
+      while (__ret < __n)
+	{
+	  const streamsize __buf_len = this->epptr() - this->pptr();
+	  if (__buf_len)
+	    {
+	      const streamsize __remaining = __n - __ret;
+	      const streamsize __len = std::min(__buf_len, __remaining);
+	      traits_type::copy(this->pptr(), __s, __len);
+	      __ret += __len;
+	      __s += __len;
+	      this->__safe_pbump(__len);
+	    }
+
+	  if (__ret < __n)
+	    {
+	      int_type __c = this->overflow(traits_type::to_int_type(*__s));
+	      if (!traits_type::eq_int_type(__c, traits_type::eof()))
+		{
+		  ++__ret;
+		  ++__s;
+		}
+	      else
+		break;
+	    }
+	}
+      return __ret;
+    }
+
+  // Conceivably, this could be used to implement buffer-to-buffer
+  // copies, if this was ever desired in an un-ambiguous way by the
+  // standard.
+  template<typename _CharT, typename _Traits>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
+			  basic_streambuf<_CharT, _Traits>* __sbout,
+			  bool& __ineof)
+    {
+      streamsize __ret = 0;
+      __ineof = true;
+      typename _Traits::int_type __c = __sbin->sgetc();
+      while (!_Traits::eq_int_type(__c, _Traits::eof()))
+	{
+	  __c = __sbout->sputc(_Traits::to_char_type(__c));
+	  if (_Traits::eq_int_type(__c, _Traits::eof()))
+	    {
+	      __ineof = false;
+	      break;
+	    }
+	  ++__ret;
+	  __c = __sbin->snextc();
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline streamsize
+    __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
+		      basic_streambuf<_CharT, _Traits>* __sbout)
+    {
+      bool __ineof;
+      return __copy_streambufs_eof(__sbin, __sbout, __ineof);
+    }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class basic_streambuf<char>;
+  extern template
+    streamsize
+    __copy_streambufs(basic_streambuf<char>*,
+		      basic_streambuf<char>*);
+  extern template
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<char>*,
+			  basic_streambuf<char>*, bool&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class basic_streambuf<wchar_t>;
+  extern template
+    streamsize
+    __copy_streambufs(basic_streambuf<wchar_t>*,
+		      basic_streambuf<wchar_t>*);
+  extern template
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<wchar_t>*,
+			  basic_streambuf<wchar_t>*, bool&);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf_iterator.h
new file mode 100644
index 000000000..83ae6785c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/streambuf_iterator.h
@@ -0,0 +1,402 @@
+// Streambuf iterators
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/streambuf_iterator.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iterator}
+ */
+
+#ifndef _STREAMBUF_ITERATOR_H
+#define _STREAMBUF_ITERATOR_H 1
+
+#pragma GCC system_header
+
+#include <streambuf>
+#include <debug/debug.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+     
+  /**
+   * @addtogroup iterators
+   * @{
+   */
+
+  // 24.5.3 Template class istreambuf_iterator
+  /// Provides input iterator semantics for streambufs.
+  template<typename _CharT, typename _Traits>
+    class istreambuf_iterator
+    : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
+		      _CharT*, _CharT&>
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT					char_type;
+      typedef _Traits					traits_type;
+      typedef typename _Traits::int_type		int_type;
+      typedef basic_streambuf<_CharT, _Traits>		streambuf_type;
+      typedef basic_istream<_CharT, _Traits>		istream_type;
+      //@}
+
+      template<typename _CharT2>
+	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+		                    ostreambuf_iterator<_CharT2> >::__type
+	copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+	     ostreambuf_iterator<_CharT2>);
+
+      template<bool _IsMove, typename _CharT2>
+	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 
+					       _CharT2*>::__type
+	__copy_move_a2(istreambuf_iterator<_CharT2>,
+		       istreambuf_iterator<_CharT2>, _CharT2*);
+
+      template<typename _CharT2>
+	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+			            istreambuf_iterator<_CharT2> >::__type
+	find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+	     const _CharT2&);
+
+    private:
+      // 24.5.3 istreambuf_iterator
+      // p 1
+      // If the end of stream is reached (streambuf_type::sgetc()
+      // returns traits_type::eof()), the iterator becomes equal to
+      // the "end of stream" iterator value.
+      // NB: This implementation assumes the "end of stream" value
+      // is EOF, or -1.
+      mutable streambuf_type*	_M_sbuf;
+      mutable int_type		_M_c;
+
+    public:
+      ///  Construct end of input stream iterator.
+      _GLIBCXX_CONSTEXPR istreambuf_iterator() throw()
+      : _M_sbuf(0), _M_c(traits_type::eof()) { }
+
+      ///  Construct start of input stream iterator.
+      istreambuf_iterator(istream_type& __s) throw()
+      : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
+
+      ///  Construct start of streambuf iterator.
+      istreambuf_iterator(streambuf_type* __s) throw()
+      : _M_sbuf(__s), _M_c(traits_type::eof()) { }
+
+      ///  Return the current character pointed to by iterator.  This returns
+      ///  streambuf.sgetc().  It cannot be assigned.  NB: The result of
+      ///  operator*() on an end of stream is undefined.
+      char_type
+      operator*() const
+      {
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+	// Dereferencing a past-the-end istreambuf_iterator is a
+	// libstdc++ extension
+	__glibcxx_requires_cond(!_M_at_eof(),
+				_M_message(__gnu_debug::__msg_deref_istreambuf)
+				._M_iterator(*this));
+#endif
+	return traits_type::to_char_type(_M_get());
+      }
+
+      /// Advance the iterator.  Calls streambuf.sbumpc().
+      istreambuf_iterator&
+      operator++()
+      {
+	__glibcxx_requires_cond(!_M_at_eof(),
+				_M_message(__gnu_debug::__msg_inc_istreambuf)
+				._M_iterator(*this));
+	if (_M_sbuf)
+	  {
+	    _M_sbuf->sbumpc();
+	    _M_c = traits_type::eof();
+	  }
+	return *this;
+      }
+
+      /// Advance the iterator.  Calls streambuf.sbumpc().
+      istreambuf_iterator
+      operator++(int)
+      {
+	__glibcxx_requires_cond(!_M_at_eof(),
+				_M_message(__gnu_debug::__msg_inc_istreambuf)
+				._M_iterator(*this));
+
+	istreambuf_iterator __old = *this;
+	if (_M_sbuf)
+	  {
+	    __old._M_c = _M_sbuf->sbumpc();
+	    _M_c = traits_type::eof();
+	  }
+	return __old;
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 110 istreambuf_iterator::equal not const
+      // NB: there is also number 111 (NAD, Future) pending on this function.
+      /// Return true both iterators are end or both are not end.
+      bool
+      equal(const istreambuf_iterator& __b) const
+      { return _M_at_eof() == __b._M_at_eof(); }
+
+    private:
+      int_type
+      _M_get() const
+      {
+	const int_type __eof = traits_type::eof();
+	int_type __ret = __eof;
+	if (_M_sbuf)
+	  {
+	    if (!traits_type::eq_int_type(_M_c, __eof))
+	      __ret = _M_c;
+	    else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
+					       __eof))
+	      _M_c = __ret;
+	    else
+	      _M_sbuf = 0;
+	  }
+	return __ret;
+      }
+
+      bool
+      _M_at_eof() const
+      {
+	const int_type __eof = traits_type::eof();
+	return traits_type::eq_int_type(_M_get(), __eof);
+      }
+    };
+
+  template<typename _CharT, typename _Traits>
+    inline bool
+    operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
+	       const istreambuf_iterator<_CharT, _Traits>& __b)
+    { return __a.equal(__b); }
+
+  template<typename _CharT, typename _Traits>
+    inline bool
+    operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
+	       const istreambuf_iterator<_CharT, _Traits>& __b)
+    { return !__a.equal(__b); }
+
+  /// Provides output iterator semantics for streambufs.
+  template<typename _CharT, typename _Traits>
+    class ostreambuf_iterator
+    : public iterator<output_iterator_tag, void, void, void, void>
+    {
+    public:
+      // Types:
+      //@{
+      /// Public typedefs
+      typedef _CharT                           char_type;
+      typedef _Traits                          traits_type;
+      typedef basic_streambuf<_CharT, _Traits> streambuf_type;
+      typedef basic_ostream<_CharT, _Traits>   ostream_type;
+      //@}
+
+      template<typename _CharT2>
+	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+		                    ostreambuf_iterator<_CharT2> >::__type
+	copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+	     ostreambuf_iterator<_CharT2>);
+
+    private:
+      streambuf_type*	_M_sbuf;
+      bool		_M_failed;
+
+    public:
+      ///  Construct output iterator from ostream.
+      ostreambuf_iterator(ostream_type& __s) throw ()
+      : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
+
+      ///  Construct output iterator from streambuf.
+      ostreambuf_iterator(streambuf_type* __s) throw ()
+      : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
+
+      ///  Write character to streambuf.  Calls streambuf.sputc().
+      ostreambuf_iterator&
+      operator=(_CharT __c)
+      {
+	if (!_M_failed &&
+	    _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
+	  _M_failed = true;
+	return *this;
+      }
+
+      /// Return *this.
+      ostreambuf_iterator&
+      operator*()
+      { return *this; }
+
+      /// Return *this.
+      ostreambuf_iterator&
+      operator++(int)
+      { return *this; }
+
+      /// Return *this.
+      ostreambuf_iterator&
+      operator++()
+      { return *this; }
+
+      /// Return true if previous operator=() failed.
+      bool
+      failed() const throw()
+      { return _M_failed; }
+
+      ostreambuf_iterator&
+      _M_put(const _CharT* __ws, streamsize __len)
+      {
+	if (__builtin_expect(!_M_failed, true)
+	    && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
+				false))
+	  _M_failed = true;
+	return *this;
+      }
+    };
+
+  // Overloads for streambuf iterators.
+  template<typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+    	                 	    ostreambuf_iterator<_CharT> >::__type
+    copy(istreambuf_iterator<_CharT> __first,
+	 istreambuf_iterator<_CharT> __last,
+	 ostreambuf_iterator<_CharT> __result)
+    {
+      if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
+	{
+	  bool __ineof;
+	  __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
+	  if (!__ineof)
+	    __result._M_failed = true;
+	}
+      return __result;
+    }
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
+    				    ostreambuf_iterator<_CharT> >::__type
+    __copy_move_a2(_CharT* __first, _CharT* __last,
+		   ostreambuf_iterator<_CharT> __result)
+    {
+      const streamsize __num = __last - __first;
+      if (__num > 0)
+	__result._M_put(__first, __num);
+      return __result;
+    }
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+				    ostreambuf_iterator<_CharT> >::__type
+    __copy_move_a2(const _CharT* __first, const _CharT* __last,
+		   ostreambuf_iterator<_CharT> __result)
+    {
+      const streamsize __num = __last - __first;
+      if (__num > 0)
+	__result._M_put(__first, __num);
+      return __result;
+    }
+
+  template<bool _IsMove, typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
+    				    _CharT*>::__type
+    __copy_move_a2(istreambuf_iterator<_CharT> __first,
+		   istreambuf_iterator<_CharT> __last, _CharT* __result)
+    {
+      typedef istreambuf_iterator<_CharT>                  __is_iterator_type;
+      typedef typename __is_iterator_type::traits_type     traits_type;
+      typedef typename __is_iterator_type::streambuf_type  streambuf_type;
+      typedef typename traits_type::int_type               int_type;
+
+      if (__first._M_sbuf && !__last._M_sbuf)
+	{
+	  streambuf_type* __sb = __first._M_sbuf;
+	  int_type __c = __sb->sgetc();
+	  while (!traits_type::eq_int_type(__c, traits_type::eof()))
+	    {
+	      const streamsize __n = __sb->egptr() - __sb->gptr();
+	      if (__n > 1)
+		{
+		  traits_type::copy(__result, __sb->gptr(), __n);
+		  __sb->__safe_gbump(__n);
+		  __result += __n;
+		  __c = __sb->underflow();
+		}
+	      else
+		{
+		  *__result++ = traits_type::to_char_type(__c);
+		  __c = __sb->snextc();
+		}
+	    }
+	}
+      return __result;
+    }
+
+  template<typename _CharT>
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+		  		    istreambuf_iterator<_CharT> >::__type
+    find(istreambuf_iterator<_CharT> __first,
+	 istreambuf_iterator<_CharT> __last, const _CharT& __val)
+    {
+      typedef istreambuf_iterator<_CharT>                  __is_iterator_type;
+      typedef typename __is_iterator_type::traits_type     traits_type;
+      typedef typename __is_iterator_type::streambuf_type  streambuf_type;
+      typedef typename traits_type::int_type               int_type;
+
+      if (__first._M_sbuf && !__last._M_sbuf)
+	{
+	  const int_type __ival = traits_type::to_int_type(__val);
+	  streambuf_type* __sb = __first._M_sbuf;
+	  int_type __c = __sb->sgetc();
+	  while (!traits_type::eq_int_type(__c, traits_type::eof())
+		 && !traits_type::eq_int_type(__c, __ival))
+	    {
+	      streamsize __n = __sb->egptr() - __sb->gptr();
+	      if (__n > 1)
+		{
+		  const _CharT* __p = traits_type::find(__sb->gptr(),
+							__n, __val);
+		  if (__p)
+		    __n = __p - __sb->gptr();
+		  __sb->__safe_gbump(__n);
+		  __c = __sb->sgetc();
+		}
+	      else
+		__c = __sb->snextc();
+	    }
+
+	  if (!traits_type::eq_int_type(__c, traits_type::eof()))
+	    __first._M_c = __c;
+	  else
+	    __first._M_sbuf = 0;
+	}
+      return __first;
+    }
+
+// @} group iterators
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stringfwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stringfwd.h
new file mode 100644
index 000000000..5f2d49c55
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/stringfwd.h
@@ -0,0 +1,88 @@
+// String support -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/stringfwd.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{string}
+ */
+
+//
+// ISO C++ 14882: 21 Strings library
+//
+
+#ifndef _STRINGFWD_H
+#define _STRINGFWD_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Alloc>
+    class allocator;
+
+  /**
+   *  @defgroup strings Strings
+   *
+   *  @{
+  */
+
+  template<class _CharT>
+    struct char_traits;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+           typename _Alloc = allocator<_CharT> >
+    class basic_string;
+
+  template<> struct char_traits<char>;
+
+  typedef basic_string<char>    string;   /// A string of @c char
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> struct char_traits<wchar_t>;
+
+  typedef basic_string<wchar_t> wstring;   /// A string of @c wchar_t
+#endif
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
+     && defined(_GLIBCXX_USE_C99_STDINT_TR1))
+
+  template<> struct char_traits<char16_t>;
+  template<> struct char_traits<char32_t>;
+
+  typedef basic_string<char16_t> u16string; /// A string of @c char16_t
+  typedef basic_string<char32_t> u32string; /// A string of @c char32_t
+
+#endif
+  /** @}  */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif	// _STRINGFWD_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unique_ptr.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unique_ptr.h
new file mode 100644
index 000000000..9d5d206bb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unique_ptr.h
@@ -0,0 +1,511 @@
+// unique_ptr implementation -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/unique_ptr.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _UNIQUE_PTR_H
+#define _UNIQUE_PTR_H 1
+
+#include <bits/c++config.h>
+#include <debug/debug.h>
+#include <type_traits>
+#include <utility>
+#include <tuple>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup pointer_abstractions
+   * @{
+   */
+
+  /// Primary template, default_delete.
+  template<typename _Tp>
+    struct default_delete
+    {
+      constexpr default_delete() = default;
+
+      template<typename _Up, typename = typename
+	       std::enable_if<std::is_convertible<_Up*, _Tp*>::value>::type>
+        default_delete(const default_delete<_Up>&) { }
+
+      void
+      operator()(_Tp* __ptr) const
+      {
+	static_assert(sizeof(_Tp)>0,
+		      "can't delete pointer to incomplete type");
+	delete __ptr;
+      }
+    };
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 740 - omit specialization for array objects with a compile time length
+  /// Specialization, default_delete.
+  template<typename _Tp>
+    struct default_delete<_Tp[]>
+    {
+      constexpr default_delete() = default;
+
+      void
+      operator()(_Tp* __ptr) const
+      {
+	static_assert(sizeof(_Tp)>0,
+		      "can't delete pointer to incomplete type");
+	delete [] __ptr;
+      }
+
+      template<typename _Up> void operator()(_Up*) const = delete;
+    };
+
+  /// 20.7.12.2 unique_ptr for single objects.
+  template <typename _Tp, typename _Dp = default_delete<_Tp> >
+    class unique_ptr
+    {
+      // use SFINAE to determine whether _Del::pointer exists
+      class _Pointer
+      {
+	template<typename _Up>
+	  static typename _Up::pointer __test(typename _Up::pointer*);
+
+	template<typename _Up>
+	  static _Tp* __test(...);
+
+	typedef typename remove_reference<_Dp>::type _Del;
+
+      public:
+	typedef decltype( __test<_Del>(0)) type;
+      };
+
+      typedef std::tuple<typename _Pointer::type, _Dp>  __tuple_type;
+      __tuple_type                                      _M_t;
+
+    public:
+      typedef typename _Pointer::type   pointer;
+      typedef _Tp                       element_type;
+      typedef _Dp                       deleter_type;
+
+      // Constructors.
+      constexpr unique_ptr()
+      : _M_t()
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      explicit
+      unique_ptr(pointer __p)
+      : _M_t(__p, deleter_type())
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      unique_ptr(pointer __p,
+	  typename std::conditional<std::is_reference<deleter_type>::value,
+	    deleter_type, const deleter_type&>::type __d)
+      : _M_t(__p, __d) { }
+
+      unique_ptr(pointer __p,
+	  typename std::remove_reference<deleter_type>::type&& __d)
+      : _M_t(std::move(__p), std::move(__d))
+      { static_assert(!std::is_reference<deleter_type>::value,
+		      "rvalue deleter bound to reference"); }
+
+      constexpr unique_ptr(nullptr_t)
+      : _M_t()
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      // Move constructors.
+      unique_ptr(unique_ptr&& __u)
+      : _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
+
+      template<typename _Up, typename _Ep, typename = typename
+	std::enable_if
+	  <std::is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
+			       pointer>::value
+	   && !std::is_array<_Up>::value
+	   && ((std::is_reference<_Dp>::value
+		&& std::is_same<_Ep, _Dp>::value)
+	       || (!std::is_reference<_Dp>::value
+		   && std::is_convertible<_Ep, _Dp>::value))>
+	     ::type>
+	unique_ptr(unique_ptr<_Up, _Ep>&& __u)
+	: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
+	{ }
+
+#if _GLIBCXX_USE_DEPRECATED
+      template<typename _Up, typename = typename
+	std::enable_if<std::is_convertible<_Up*, _Tp*>::value
+		       && std::is_same<_Dp,
+				       default_delete<_Tp>>::value>::type>
+	unique_ptr(auto_ptr<_Up>&& __u)
+	: _M_t(__u.release(), deleter_type()) { }
+#endif
+
+      // Destructor.
+      ~unique_ptr() { reset(); }
+
+      // Assignment.
+      unique_ptr&
+      operator=(unique_ptr&& __u)
+      {
+	reset(__u.release());
+	get_deleter() = std::forward<deleter_type>(__u.get_deleter());
+	return *this;
+      }
+
+      template<typename _Up, typename _Ep, typename = typename
+	std::enable_if
+	  <std::is_convertible<typename unique_ptr<_Up, _Ep>::pointer,
+			       pointer>::value
+	   && !std::is_array<_Up>::value>::type>
+	unique_ptr&
+	operator=(unique_ptr<_Up, _Ep>&& __u)
+	{
+	  reset(__u.release());
+	  get_deleter() = std::forward<_Ep>(__u.get_deleter());
+	  return *this;
+	}
+
+      unique_ptr&
+      operator=(nullptr_t)
+      {
+	reset();
+	return *this;
+      }
+
+      // Observers.
+      typename std::add_lvalue_reference<element_type>::type
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(get() != pointer());
+	return *get();
+      }
+
+      pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(get() != pointer());
+	return get();
+      }
+
+      pointer
+      get() const
+      { return std::get<0>(_M_t); }
+
+      deleter_type&
+      get_deleter()
+      { return std::get<1>(_M_t); }
+
+      const deleter_type&
+      get_deleter() const
+      { return std::get<1>(_M_t); }
+
+      explicit operator bool() const
+      { return get() == pointer() ? false : true; }
+
+      // Modifiers.
+      pointer
+      release()
+      {
+	pointer __p = get();
+	std::get<0>(_M_t) = pointer();
+	return __p;
+      }
+
+      void
+      reset(pointer __p = pointer())
+      {
+	using std::swap;
+	swap(std::get<0>(_M_t), __p);
+	if (__p != pointer())
+	  get_deleter()(__p);
+      }
+
+      void
+      swap(unique_ptr& __u)
+      {
+	using std::swap;
+	swap(_M_t, __u._M_t);
+      }
+
+      // Disable copy from lvalue.
+      unique_ptr(const unique_ptr&) = delete;
+      unique_ptr& operator=(const unique_ptr&) = delete;
+  };
+
+  /// 20.7.12.3 unique_ptr for array objects with a runtime length
+  // [unique.ptr.runtime]
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 740 - omit specialization for array objects with a compile time length
+  template<typename _Tp, typename _Dp>
+    class unique_ptr<_Tp[], _Dp>
+    {
+      typedef std::tuple<_Tp*, _Dp>  	__tuple_type;
+      __tuple_type 			_M_t;
+
+    public:
+      typedef _Tp*		 	pointer;
+      typedef _Tp		 	element_type;
+      typedef _Dp                       deleter_type;
+
+      // Constructors.
+      constexpr unique_ptr()
+      : _M_t()
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      explicit
+      unique_ptr(pointer __p)
+      : _M_t(__p, deleter_type())
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      unique_ptr(pointer __p,
+	  typename std::conditional<std::is_reference<deleter_type>::value,
+	      deleter_type, const deleter_type&>::type __d)
+      : _M_t(__p, __d) { }
+
+      unique_ptr(pointer __p,
+		 typename std::remove_reference<deleter_type>::type && __d)
+      : _M_t(std::move(__p), std::move(__d))
+      { static_assert(!std::is_reference<deleter_type>::value,
+		      "rvalue deleter bound to reference"); }
+
+      constexpr unique_ptr(nullptr_t)
+      : _M_t()
+      { static_assert(!std::is_pointer<deleter_type>::value,
+		     "constructed with null function pointer deleter"); }
+
+      // Move constructors.
+      unique_ptr(unique_ptr&& __u)
+      : _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
+
+      template<typename _Up, typename _Ep>
+	unique_ptr(unique_ptr<_Up, _Ep>&& __u)
+	: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
+	{ }
+
+      // Destructor.
+      ~unique_ptr() { reset(); }
+
+      // Assignment.
+      unique_ptr&
+      operator=(unique_ptr&& __u)
+      {
+	reset(__u.release());
+	get_deleter() = std::forward<deleter_type>(__u.get_deleter());
+	return *this;
+      }
+
+      template<typename _Up, typename _Ep>
+	unique_ptr&
+	operator=(unique_ptr<_Up, _Ep>&& __u)
+	{
+	  reset(__u.release());
+	  get_deleter() = std::forward<_Ep>(__u.get_deleter());
+	  return *this;
+	}
+
+      unique_ptr&
+      operator=(nullptr_t)
+      {
+	reset();
+	return *this;
+      }
+
+      // Observers.
+      typename std::add_lvalue_reference<element_type>::type
+      operator[](size_t __i) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(get() != pointer());
+	return get()[__i];
+      }
+
+      pointer
+      get() const
+      { return std::get<0>(_M_t); }
+
+      deleter_type&
+      get_deleter()
+      { return std::get<1>(_M_t); }
+
+      const deleter_type&
+      get_deleter() const
+      { return std::get<1>(_M_t); }
+
+      explicit operator bool() const
+      { return get() == pointer() ? false : true; }
+
+      // Modifiers.
+      pointer
+      release()
+      {
+	pointer __p = get();
+	std::get<0>(_M_t) = pointer();
+	return __p;
+      }
+
+      void
+      reset(pointer __p = pointer())
+      {
+	using std::swap;
+	swap(std::get<0>(_M_t), __p);
+	if (__p != nullptr)
+	  get_deleter()(__p);
+      }
+
+      void
+      reset(nullptr_t)
+      {
+	pointer __p = get();
+	std::get<0>(_M_t) = pointer();
+	if (__p != nullptr)
+	  get_deleter()(__p);
+      }
+
+      // DR 821.
+      template<typename _Up>
+	void reset(_Up) = delete;
+
+      void
+      swap(unique_ptr& __u)
+      {
+	using std::swap;
+	swap(_M_t, __u._M_t);
+      }
+
+      // Disable copy from lvalue.
+      unique_ptr(const unique_ptr&) = delete;
+      unique_ptr& operator=(const unique_ptr&) = delete;
+
+      // Disable construction from convertible pointer types.
+      // (N2315 - 20.6.5.3.1)
+      template<typename _Up>
+	unique_ptr(_Up*, typename
+		   std::conditional<std::is_reference<deleter_type>::value,
+		   deleter_type, const deleter_type&>::type,
+		   typename std::enable_if<std::is_convertible<_Up*,
+		   pointer>::value>::type* = 0) = delete;
+
+      template<typename _Up>
+	unique_ptr(_Up*, typename std::remove_reference<deleter_type>::type&&,
+		   typename std::enable_if<std::is_convertible<_Up*,
+		   pointer>::value>::type* = 0) = delete;
+
+      template<typename _Up>
+	explicit
+	unique_ptr(_Up*, typename std::enable_if<std::is_convertible<_Up*,
+		   pointer>::value>::type* = 0) = delete;
+  };
+
+  template<typename _Tp, typename _Dp>
+    inline void
+    swap(unique_ptr<_Tp, _Dp>& __x,
+	 unique_ptr<_Tp, _Dp>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator==(const unique_ptr<_Tp, _Dp>& __x,
+	       const unique_ptr<_Up, _Ep>& __y)
+    { return __x.get() == __y.get(); }
+
+  template<typename _Tp, typename _Dp>
+    inline bool
+    operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
+    { return __x.get() == nullptr; }
+
+  template<typename _Tp, typename _Dp>
+    inline bool
+    operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __y)
+    { return nullptr == __y.get(); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator!=(const unique_ptr<_Tp, _Dp>& __x,
+	       const unique_ptr<_Up, _Ep>& __y)
+    { return !(__x.get() == __y.get()); }
+
+  template<typename _Tp, typename _Dp>
+    inline bool
+    operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
+    { return __x.get() != nullptr; }
+
+  template<typename _Tp, typename _Dp>
+    inline bool
+    operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __y)
+    { return nullptr != __y.get(); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator<(const unique_ptr<_Tp, _Dp>& __x,
+	      const unique_ptr<_Up, _Ep>& __y)
+    { return __x.get() < __y.get(); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator<=(const unique_ptr<_Tp, _Dp>& __x,
+	       const unique_ptr<_Up, _Ep>& __y)
+    { return !(__y.get() < __x.get()); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator>(const unique_ptr<_Tp, _Dp>& __x,
+	      const unique_ptr<_Up, _Ep>& __y)
+    { return __y.get() < __x.get(); }
+
+  template<typename _Tp, typename _Dp,
+	   typename _Up, typename _Ep>
+    inline bool
+    operator>=(const unique_ptr<_Tp, _Dp>& __x,
+	       const unique_ptr<_Up, _Ep>& __y)
+    { return !(__x.get() < __y.get()); }
+
+  /// std::hash specialization for unique_ptr.
+  template<typename _Tp, typename _Dp>
+    struct hash<unique_ptr<_Tp, _Dp>>
+    : public std::unary_function<unique_ptr<_Tp, _Dp>, size_t>
+    {
+      size_t
+      operator()(const unique_ptr<_Tp, _Dp>& __u) const
+      {
+	typedef unique_ptr<_Tp, _Dp> _UP;
+	return std::hash<typename _UP::pointer>()(__u.get());
+      }
+    };
+
+  // @} group pointer_abstractions
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _UNIQUE_PTR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_map.h
new file mode 100644
index 000000000..c77bab12f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_map.h
@@ -0,0 +1,409 @@
+// unordered_map implementation -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/unordered_map.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{unordered_map}
+ */
+
+#ifndef _UNORDERED_MAP_H
+#define _UNORDERED_MAP_H
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  // NB: When we get typedef templates these class definitions
+  // will be unnecessary.
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
+	   bool __cache_hash_code = false>
+    class __unordered_map
+    : public _Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
+			std::_Select1st<std::pair<const _Key, _Tp> >, _Pred, 
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, false, true>
+    {
+      typedef _Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
+			 std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, false, true>
+        _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      __unordered_map(size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+      template<typename _InputIterator>
+        __unordered_map(_InputIterator __f, _InputIterator __l, 
+			size_type __n = 0,
+			const hasher& __hf = hasher(), 
+			const key_equal& __eql = key_equal(), 
+			const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(),
+		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+	{ }
+
+      __unordered_map(initializer_list<value_type> __l,
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf,
+	      __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+      __unordered_map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+  
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
+	   bool __cache_hash_code = false>
+    class __unordered_multimap
+    : public _Hashtable<_Key, std::pair<const _Key, _Tp>,
+			_Alloc,
+			std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, false, false>
+    {
+      typedef _Hashtable<_Key, std::pair<const _Key, _Tp>,
+			 _Alloc,
+			 std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, false, false>
+        _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      __unordered_multimap(size_type __n = 10,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+
+      template<typename _InputIterator>
+        __unordered_multimap(_InputIterator __f, _InputIterator __l, 
+			     size_type __n = 0,
+			     const hasher& __hf = hasher(), 
+			     const key_equal& __eql = key_equal(), 
+			     const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(),
+		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+        { }
+
+      __unordered_multimap(initializer_list<value_type> __l,
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf,
+	      __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+      __unordered_multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_map<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_map<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_multimap<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_multimap<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator==(const __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator!=(const __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return !(__x == __y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator==(const __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator!=(const __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return !(__x == __y); }
+
+  /**
+   *  @brief A standard container composed of unique keys (containing
+   *  at most one of each key value) that associates values of another type
+   *  with the keys.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Key  Type of key objects.
+   *  @param  Tp  Type of mapped objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   *
+   * The resulting value type of the container is std::pair<const Key, Tp>.
+   */
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class unordered_map
+    : public __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      unordered_map(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+      template<typename _InputIterator>
+        unordered_map(_InputIterator __f, _InputIterator __l, 
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(), 
+		      const key_equal& __eql = key_equal(), 
+		      const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+        { }
+
+      unordered_map(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+      { }
+
+      unordered_map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+  
+  /**
+   *  @brief A standard container composed of equivalent keys
+   *  (possibly containing multiple of each key value) that associates
+   *  values of another type with the keys.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Key  Type of key objects.
+   *  @param  Tp  Type of mapped objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   *
+   * The resulting value type of the container is std::pair<const Key, Tp>.
+   */
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class unordered_multimap
+    : public __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      unordered_multimap(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+      template<typename _InputIterator>
+        unordered_multimap(_InputIterator __f, _InputIterator __l, 
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(), 
+			   const key_equal& __eql = key_equal(), 
+			   const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+        { }
+
+      unordered_multimap(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+      { }
+
+      unordered_multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _UNORDERED_MAP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_set.h
new file mode 100644
index 000000000..38350bc39
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/unordered_set.h
@@ -0,0 +1,401 @@
+// unordered_set implementation -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/unordered_set.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{unordered_set}
+ */
+
+#ifndef _UNORDERED_SET_H
+#define _UNORDERED_SET_H
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  // NB: When we get typedef templates these class definitions
+  // will be unnecessary.
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value>,
+	   bool __cache_hash_code = false>
+    class __unordered_set
+    : public _Hashtable<_Value, _Value, _Alloc,
+			std::_Identity<_Value>, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, true, true>
+    {
+      typedef _Hashtable<_Value, _Value, _Alloc,
+			 std::_Identity<_Value>, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, true, true>
+        _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      __unordered_set(size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<value_type>(), __a)
+      { }
+
+      template<typename _InputIterator>
+        __unordered_set(_InputIterator __f, _InputIterator __l, 
+			size_type __n = 0,
+			const hasher& __hf = hasher(), 
+			const key_equal& __eql = key_equal(), 
+			const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(), __eql,
+		std::_Identity<value_type>(), __a)
+        { }
+
+      __unordered_set(initializer_list<value_type> __l,
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf,
+	      __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<value_type>(), __a)
+      { }
+
+      __unordered_set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value>,
+	   bool __cache_hash_code = false>
+    class __unordered_multiset
+    : public _Hashtable<_Value, _Value, _Alloc,
+			std::_Identity<_Value>, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, true, false>
+    {
+      typedef _Hashtable<_Value, _Value, _Alloc,
+			 std::_Identity<_Value>, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, true, false>
+        _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      __unordered_multiset(size_type __n = 10,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<value_type>(), __a)
+      { }
+
+
+      template<typename _InputIterator>
+        __unordered_multiset(_InputIterator __f, _InputIterator __l, 
+			     size_type __n = 0,
+			     const hasher& __hf = hasher(), 
+			     const key_equal& __eql = key_equal(), 
+			     const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(), __eql,
+		std::_Identity<value_type>(), __a)
+        { }
+
+      __unordered_multiset(initializer_list<value_type> __l,
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf,
+	      __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<value_type>(), __a)
+      { }
+
+      __unordered_multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __x,
+	 __unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_multiset<_Value, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_multiset<_Value, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator==(const __unordered_set<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_set<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator!=(const __unordered_set<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_set<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return !(__x == __y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator==(const __unordered_multiset<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_multiset<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline bool
+    operator!=(const __unordered_multiset<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __x,
+	       const __unordered_multiset<_Value, _Hash, _Pred, _Alloc,
+	       __cache_hash_code>& __y)
+    { return !(__x == __y); }
+
+  /**
+   *  @brief A standard container composed of unique keys (containing
+   *  at most one of each key value) in which the elements' keys are
+   *  the elements themselves.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Value  Type of key objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   */
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value> >
+    class unordered_set
+    : public __unordered_set<_Value, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_set<_Value, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      unordered_set(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+      template<typename _InputIterator>
+        unordered_set(_InputIterator __f, _InputIterator __l, 
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(), 
+		      const key_equal& __eql = key_equal(), 
+		      const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+        { }
+
+      unordered_set(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+      { }
+
+      unordered_set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  /**
+   *  @brief A standard container composed of equivalent keys
+   *  (possibly containing multiple of each key value) in which the
+   *  elements' keys are the elements themselves.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Value  Type of key objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   */
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value> >
+    class unordered_multiset
+    : public __unordered_multiset<_Value, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_multiset<_Value, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      
+      explicit
+      unordered_multiset(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+
+      template<typename _InputIterator>
+        unordered_multiset(_InputIterator __f, _InputIterator __l, 
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(), 
+			   const key_equal& __eql = key_equal(), 
+			   const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+        { }
+
+      unordered_multiset(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+      { }
+
+      unordered_multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l.begin(), __l.end());
+	return *this;
+      }
+    };
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline bool
+    operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#endif /* _UNORDERED_SET_H */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_after.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_after.h
new file mode 100644
index 000000000..6440fae43
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_after.h
@@ -0,0 +1,552 @@
+// The template and inlines for the -*- C++ -*- internal _Meta class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/valarray_after.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
+
+#ifndef _VALARRAY_AFTER_H
+#define _VALARRAY_AFTER_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  //
+  // gslice_array closure.
+  //
+  template<class _Dom>
+    class _GBase
+    {
+    public:
+      typedef typename _Dom::value_type value_type;
+      
+      _GBase (const _Dom& __e, const valarray<size_t>& __i)
+      : _M_expr (__e), _M_index(__i) {}
+      
+      value_type
+      operator[] (size_t __i) const
+      { return _M_expr[_M_index[__i]]; }
+      
+      size_t
+      size () const
+      { return _M_index.size(); }
+
+    private:
+      const _Dom&	      _M_expr;
+      const valarray<size_t>& _M_index;
+    };
+
+  template<typename _Tp>
+    class _GBase<_Array<_Tp> >
+    {
+    public:
+      typedef _Tp value_type;
+      
+      _GBase (_Array<_Tp> __a, const valarray<size_t>& __i)
+      : _M_array (__a), _M_index(__i) {}
+      
+      value_type
+      operator[] (size_t __i) const
+      { return _M_array._M_data[_M_index[__i]]; }
+      
+      size_t
+      size () const
+      { return _M_index.size(); }
+
+    private:
+      const _Array<_Tp>       _M_array;
+      const valarray<size_t>& _M_index;
+    };
+
+  template<class _Dom>
+    struct _GClos<_Expr, _Dom>
+    : _GBase<_Dom>
+    {
+      typedef _GBase<_Dom> _Base;
+      typedef typename _Base::value_type value_type;
+      
+      _GClos (const _Dom& __e, const valarray<size_t>& __i)
+      : _Base (__e, __i) {}
+    };
+
+  template<typename _Tp>
+    struct _GClos<_ValArray, _Tp>
+    : _GBase<_Array<_Tp> >
+    {
+      typedef _GBase<_Array<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+      
+      _GClos (_Array<_Tp> __a, const valarray<size_t>& __i)
+      : _Base (__a, __i) {}
+    };
+
+  //
+  // indirect_array closure
+  //
+  template<class _Dom>
+    class _IBase
+    {
+    public:
+      typedef typename _Dom::value_type value_type;
+
+      _IBase (const _Dom& __e, const valarray<size_t>& __i)
+      : _M_expr (__e), _M_index (__i) {}
+      
+      value_type
+      operator[] (size_t __i) const
+      { return _M_expr[_M_index[__i]]; }
+      
+      size_t
+      size() const
+      { return _M_index.size(); }
+
+    private:
+      const _Dom&	      _M_expr;
+      const valarray<size_t>& _M_index;
+    };
+
+  template<class _Dom>
+    struct _IClos<_Expr, _Dom>
+    : _IBase<_Dom>
+    {
+      typedef _IBase<_Dom> _Base;
+      typedef typename _Base::value_type value_type;
+      
+      _IClos (const _Dom& __e, const valarray<size_t>& __i)
+      : _Base (__e, __i) {}
+    };
+
+  template<typename _Tp>
+    struct _IClos<_ValArray, _Tp>
+    : _IBase<valarray<_Tp> >
+    {
+      typedef _IBase<valarray<_Tp> > _Base;
+      typedef _Tp value_type;
+      
+      _IClos (const valarray<_Tp>& __a, const valarray<size_t>& __i)
+      : _Base (__a, __i) {}
+    };
+  
+  //
+  // class _Expr
+  //
+  template<class _Clos, typename _Tp>
+    class _Expr
+    {
+    public:
+      typedef _Tp value_type;
+
+      _Expr(const _Clos&);
+
+      const _Clos& operator()() const;
+
+      value_type operator[](size_t) const;
+      valarray<value_type> operator[](slice) const;
+      valarray<value_type> operator[](const gslice&) const;
+      valarray<value_type> operator[](const valarray<bool>&) const;
+      valarray<value_type> operator[](const valarray<size_t>&) const;
+
+      _Expr<_UnClos<__unary_plus, std::_Expr, _Clos>, value_type>
+      operator+() const;
+
+      _Expr<_UnClos<__negate, std::_Expr, _Clos>, value_type>
+      operator-() const;
+
+      _Expr<_UnClos<__bitwise_not, std::_Expr, _Clos>, value_type>
+      operator~() const;
+
+      _Expr<_UnClos<__logical_not, std::_Expr, _Clos>, bool>
+      operator!() const;
+
+      size_t size() const;
+      value_type sum() const;
+
+      valarray<value_type> shift(int) const;
+      valarray<value_type> cshift(int) const;
+
+      value_type min() const;
+      value_type max() const;
+
+      valarray<value_type> apply(value_type (*)(const value_type&)) const;
+      valarray<value_type> apply(value_type (*)(value_type)) const;
+
+    private:
+      const _Clos _M_closure;
+    };
+
+  template<class _Clos, typename _Tp>
+    inline
+    _Expr<_Clos, _Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {}
+
+  template<class _Clos, typename _Tp>
+    inline const _Clos&
+    _Expr<_Clos, _Tp>::operator()() const
+    { return _M_closure; }
+
+  template<class _Clos, typename _Tp>
+    inline _Tp
+    _Expr<_Clos, _Tp>::operator[](size_t __i) const
+    { return _M_closure[__i]; }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::operator[](slice __s) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this)[__s];
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::operator[](const gslice& __gs) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this)[__gs];
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::operator[](const valarray<bool>& __m) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this)[__m];
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::operator[](const valarray<size_t>& __i) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this)[__i];
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline size_t
+    _Expr<_Clos, _Tp>::size() const
+    { return _M_closure.size(); }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::shift(int __n) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this).shift(__n);
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::cshift(int __n) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this).cshift(__n);
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f);
+      return __v;
+    }
+
+  template<class _Clos, typename _Tp>
+    inline valarray<_Tp>
+    _Expr<_Clos, _Tp>::apply(_Tp __f(_Tp)) const
+    {
+      valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f);
+      return __v;
+    }
+
+  // XXX: replace this with a more robust summation algorithm.
+  template<class _Clos, typename _Tp>
+    inline _Tp
+    _Expr<_Clos, _Tp>::sum() const
+    {
+      size_t __n = _M_closure.size();
+      if (__n == 0)
+	return _Tp();
+      else
+	{
+	  _Tp __s = _M_closure[--__n];
+	  while (__n != 0)
+	    __s += _M_closure[--__n];
+	  return __s;
+        }
+    }
+
+  template<class _Clos, typename _Tp>
+    inline _Tp
+    _Expr<_Clos, _Tp>::min() const
+    { return __valarray_min(_M_closure); }
+
+  template<class _Clos, typename _Tp>
+    inline _Tp
+    _Expr<_Clos, _Tp>::max() const
+    { return __valarray_max(_M_closure); }
+
+  template<class _Dom, typename _Tp>
+    inline _Expr<_UnClos<__logical_not, _Expr, _Dom>, bool>
+    _Expr<_Dom, _Tp>::operator!() const
+    {
+      typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure;
+      return _Expr<_Closure, bool>(_Closure(this->_M_closure));
+    }
+
+#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name)                           \
+  template<class _Dom, typename _Tp>                                      \
+    inline _Expr<_UnClos<_Name, std::_Expr, _Dom>, _Tp>                   \
+    _Expr<_Dom, _Tp>::operator _Op() const                                \
+    {                                                                     \
+      typedef _UnClos<_Name, std::_Expr, _Dom> _Closure;                  \
+      return _Expr<_Closure, _Tp>(_Closure(this->_M_closure));            \
+    }
+
+    _DEFINE_EXPR_UNARY_OPERATOR(+, __unary_plus)
+    _DEFINE_EXPR_UNARY_OPERATOR(-, __negate)
+    _DEFINE_EXPR_UNARY_OPERATOR(~, __bitwise_not)
+
+#undef _DEFINE_EXPR_UNARY_OPERATOR
+
+#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name)                        \
+  template<class _Dom1, class _Dom2>					\
+    inline _Expr<_BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2>,           \
+           typename __fun<_Name, typename _Dom1::value_type>::result_type> \
+    operator _Op(const _Expr<_Dom1, typename _Dom1::value_type>& __v,   \
+	         const _Expr<_Dom2, typename _Dom2::value_type>& __w)   \
+    {                                                                   \
+      typedef typename _Dom1::value_type _Arg;                          \
+      typedef typename __fun<_Name, _Arg>::result_type _Value;          \
+      typedef _BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2> _Closure;     \
+      return _Expr<_Closure, _Value>(_Closure(__v(), __w()));           \
+    }                                                                   \
+                                                                        \
+  template<class _Dom>                                                  \
+    inline _Expr<_BinClos<_Name, _Expr, _Constant, _Dom,                \
+                          typename _Dom::value_type>,                   \
+             typename __fun<_Name, typename _Dom::value_type>::result_type> \
+    operator _Op(const _Expr<_Dom, typename _Dom::value_type>& __v,     \
+                 const typename _Dom::value_type& __t)                  \
+    {                                                                   \
+      typedef typename _Dom::value_type _Arg;                           \
+      typedef typename __fun<_Name, _Arg>::result_type _Value;          \
+      typedef _BinClos<_Name, _Expr, _Constant, _Dom, _Arg> _Closure;   \
+      return _Expr<_Closure, _Value>(_Closure(__v(), __t));             \
+    }                                                                   \
+                                                                        \
+  template<class _Dom>                                                  \
+    inline _Expr<_BinClos<_Name, _Constant, _Expr,                      \
+                          typename _Dom::value_type, _Dom>,             \
+             typename __fun<_Name, typename _Dom::value_type>::result_type> \
+    operator _Op(const typename _Dom::value_type& __t,                  \
+                 const _Expr<_Dom, typename _Dom::value_type>& __v)     \
+    {                                                                   \
+      typedef typename _Dom::value_type _Arg;                           \
+      typedef typename __fun<_Name, _Arg>::result_type _Value;          \
+      typedef _BinClos<_Name, _Constant, _Expr, _Arg, _Dom> _Closure;   \
+      return _Expr<_Closure, _Value>(_Closure(__t, __v()));             \
+    }                                                                   \
+                                                                        \
+  template<class _Dom>                                                  \
+    inline _Expr<_BinClos<_Name, _Expr, _ValArray,                      \
+                          _Dom, typename _Dom::value_type>,             \
+             typename __fun<_Name, typename _Dom::value_type>::result_type> \
+    operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e,      \
+                 const valarray<typename _Dom::value_type>& __v)        \
+    {                                                                   \
+      typedef typename _Dom::value_type _Arg;                           \
+      typedef typename __fun<_Name, _Arg>::result_type _Value;          \
+      typedef _BinClos<_Name, _Expr, _ValArray, _Dom, _Arg> _Closure;   \
+      return _Expr<_Closure, _Value>(_Closure(__e(), __v));             \
+    }                                                                   \
+                                                                        \
+  template<class _Dom>                                                  \
+    inline _Expr<_BinClos<_Name, _ValArray, _Expr,                      \
+                 typename _Dom::value_type, _Dom>,                      \
+             typename __fun<_Name, typename _Dom::value_type>::result_type> \
+    operator _Op(const valarray<typename _Dom::value_type>& __v,        \
+                 const _Expr<_Dom, typename _Dom::value_type>& __e)     \
+    {                                                                   \
+      typedef typename _Dom::value_type _Tp;                            \
+      typedef typename __fun<_Name, _Tp>::result_type _Value;           \
+      typedef _BinClos<_Name, _ValArray, _Expr, _Tp, _Dom> _Closure;    \
+      return _Expr<_Closure, _Value>(_Closure(__v, __e ()));            \
+    }
+
+    _DEFINE_EXPR_BINARY_OPERATOR(+, __plus)
+    _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
+    _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
+    _DEFINE_EXPR_BINARY_OPERATOR(/, __divides)
+    _DEFINE_EXPR_BINARY_OPERATOR(%, __modulus)
+    _DEFINE_EXPR_BINARY_OPERATOR(^, __bitwise_xor)
+    _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
+    _DEFINE_EXPR_BINARY_OPERATOR(|, __bitwise_or)
+    _DEFINE_EXPR_BINARY_OPERATOR(<<, __shift_left)
+    _DEFINE_EXPR_BINARY_OPERATOR(>>, __shift_right)
+    _DEFINE_EXPR_BINARY_OPERATOR(&&, __logical_and)
+    _DEFINE_EXPR_BINARY_OPERATOR(||, __logical_or)
+    _DEFINE_EXPR_BINARY_OPERATOR(==, __equal_to)
+    _DEFINE_EXPR_BINARY_OPERATOR(!=, __not_equal_to)
+    _DEFINE_EXPR_BINARY_OPERATOR(<, __less)
+    _DEFINE_EXPR_BINARY_OPERATOR(>, __greater)
+    _DEFINE_EXPR_BINARY_OPERATOR(<=, __less_equal)
+    _DEFINE_EXPR_BINARY_OPERATOR(>=, __greater_equal)
+
+#undef _DEFINE_EXPR_BINARY_OPERATOR
+
+#define _DEFINE_EXPR_UNARY_FUNCTION(_Name, _UName)                       \
+  template<class _Dom>                                                   \
+    inline _Expr<_UnClos<_UName, _Expr, _Dom>,                           \
+                 typename _Dom::value_type>                              \
+    _Name(const _Expr<_Dom, typename _Dom::value_type>& __e)             \
+    {                                                                    \
+      typedef typename _Dom::value_type _Tp;                             \
+      typedef _UnClos<_UName, _Expr, _Dom> _Closure;                     \
+      return _Expr<_Closure, _Tp>(_Closure(__e()));                      \
+    }                                                                    \
+                                                                         \
+  template<typename _Tp>                                                 \
+    inline _Expr<_UnClos<_UName, _ValArray, _Tp>, _Tp>                   \
+    _Name(const valarray<_Tp>& __v)                                      \
+    {                                                                    \
+      typedef _UnClos<_UName, _ValArray, _Tp> _Closure;                  \
+      return _Expr<_Closure, _Tp>(_Closure(__v));                        \
+    }
+
+    _DEFINE_EXPR_UNARY_FUNCTION(abs, _Abs)
+    _DEFINE_EXPR_UNARY_FUNCTION(cos, _Cos)
+    _DEFINE_EXPR_UNARY_FUNCTION(acos, _Acos)
+    _DEFINE_EXPR_UNARY_FUNCTION(cosh, _Cosh)
+    _DEFINE_EXPR_UNARY_FUNCTION(sin, _Sin)
+    _DEFINE_EXPR_UNARY_FUNCTION(asin, _Asin)
+    _DEFINE_EXPR_UNARY_FUNCTION(sinh, _Sinh)
+    _DEFINE_EXPR_UNARY_FUNCTION(tan, _Tan)
+    _DEFINE_EXPR_UNARY_FUNCTION(tanh, _Tanh)
+    _DEFINE_EXPR_UNARY_FUNCTION(atan, _Atan)
+    _DEFINE_EXPR_UNARY_FUNCTION(exp, _Exp)
+    _DEFINE_EXPR_UNARY_FUNCTION(log, _Log)
+    _DEFINE_EXPR_UNARY_FUNCTION(log10, _Log10)
+    _DEFINE_EXPR_UNARY_FUNCTION(sqrt, _Sqrt)
+
+#undef _DEFINE_EXPR_UNARY_FUNCTION
+
+#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun, _UFun)		       \
+  template<class _Dom1, class _Dom2>                                   \
+    inline _Expr<_BinClos<_UFun, _Expr, _Expr, _Dom1, _Dom2>,          \
+		 typename _Dom1::value_type>                           \
+    _Fun(const _Expr<_Dom1, typename _Dom1::value_type>& __e1,         \
+	 const _Expr<_Dom2, typename _Dom2::value_type>& __e2)	       \
+    {                                                                  \
+      typedef typename _Dom1::value_type _Tp;                          \
+      typedef _BinClos<_UFun, _Expr, _Expr, _Dom1, _Dom2> _Closure;    \
+      return _Expr<_Closure, _Tp>(_Closure(__e1(), __e2()));           \
+    }                                                                  \
+                                                                       \
+  template<class _Dom>                                                 \
+    inline _Expr<_BinClos<_UFun, _Expr, _ValArray, _Dom,               \
+			  typename _Dom::value_type>,                  \
+		 typename _Dom::value_type>                            \
+    _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e,            \
+	 const valarray<typename _Dom::value_type>& __v)               \
+    {                                                                  \
+      typedef typename _Dom::value_type _Tp;                           \
+      typedef _BinClos<_UFun, _Expr, _ValArray, _Dom, _Tp> _Closure;   \
+      return _Expr<_Closure, _Tp>(_Closure(__e(), __v));               \
+    }                                                                  \
+                                                                       \
+  template<class _Dom>                                                 \
+    inline _Expr<_BinClos<_UFun, _ValArray, _Expr,                     \
+			  typename _Dom::value_type, _Dom>,            \
+		 typename _Dom::value_type>                            \
+    _Fun(const valarray<typename _Dom::valarray>& __v,                 \
+	 const _Expr<_Dom, typename _Dom::value_type>& __e)            \
+    {                                                                  \
+      typedef typename _Dom::value_type _Tp;                           \
+      typedef _BinClos<_UFun, _ValArray, _Expr, _Tp, _Dom> _Closure;   \
+      return _Expr<_Closure, _Tp>(_Closure(__v, __e()));               \
+    }                                                                  \
+                                                                       \
+  template<class _Dom>                                                 \
+    inline _Expr<_BinClos<_UFun, _Expr, _Constant, _Dom,               \
+			  typename _Dom::value_type>,                  \
+		 typename _Dom::value_type>                            \
+    _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e,            \
+	 const typename _Dom::value_type& __t)                         \
+    {                                                                  \
+      typedef typename _Dom::value_type _Tp;                           \
+      typedef _BinClos<_UFun, _Expr, _Constant, _Dom, _Tp> _Closure;   \
+      return _Expr<_Closure, _Tp>(_Closure(__e(), __t));               \
+    }                                                                  \
+                                                                       \
+  template<class _Dom>                                                 \
+    inline _Expr<_BinClos<_UFun, _Constant, _Expr,                     \
+			  typename _Dom::value_type, _Dom>,            \
+		 typename _Dom::value_type>                            \
+    _Fun(const typename _Dom::value_type& __t,                         \
+	 const _Expr<_Dom, typename _Dom::value_type>& __e)            \
+    {                                                                  \
+      typedef typename _Dom::value_type _Tp;                           \
+      typedef _BinClos<_UFun, _Constant, _Expr, _Tp, _Dom> _Closure;   \
+      return _Expr<_Closure, _Tp>(_Closure(__t, __e()));               \
+    }                                                                  \
+                                                                       \
+  template<typename _Tp>                                               \
+    inline _Expr<_BinClos<_UFun, _ValArray, _ValArray, _Tp, _Tp>, _Tp> \
+    _Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w)           \
+    {                                                                  \
+      typedef _BinClos<_UFun, _ValArray, _ValArray, _Tp, _Tp> _Closure;\
+      return _Expr<_Closure, _Tp>(_Closure(__v, __w));                 \
+    }                                                                  \
+                                                                       \
+  template<typename _Tp>                                               \
+    inline _Expr<_BinClos<_UFun, _ValArray, _Constant, _Tp, _Tp>, _Tp> \
+    _Fun(const valarray<_Tp>& __v, const _Tp& __t)                     \
+    {                                                                  \
+      typedef _BinClos<_UFun, _ValArray, _Constant, _Tp, _Tp> _Closure;\
+      return _Expr<_Closure, _Tp>(_Closure(__v, __t));                 \
+    }                                                                  \
+								       \
+  template<typename _Tp>                                               \
+    inline _Expr<_BinClos<_UFun, _Constant, _ValArray, _Tp, _Tp>, _Tp> \
+    _Fun(const _Tp& __t, const valarray<_Tp>& __v)                     \
+    {                                                                  \
+      typedef _BinClos<_UFun, _Constant, _ValArray, _Tp, _Tp> _Closure;\
+      return _Expr<_Closure, _Tp>(_Closure(__t, __v));                 \
+    }
+
+_DEFINE_EXPR_BINARY_FUNCTION(atan2, _Atan2)
+_DEFINE_EXPR_BINARY_FUNCTION(pow, _Pow)
+
+#undef _DEFINE_EXPR_BINARY_FUNCTION
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _CPP_VALARRAY_AFTER_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.h
new file mode 100644
index 000000000..cba9f3fbd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.h
@@ -0,0 +1,695 @@
+// The template and inlines for the -*- C++ -*- internal _Array helper class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/valarray_array.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _VALARRAY_ARRAY_H
+#define _VALARRAY_ARRAY_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+#include <cstdlib>
+#include <new>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  //
+  // Helper functions on raw pointers
+  //
+
+  // We get memory by the old fashion way
+  inline void*
+  __valarray_get_memory(size_t __n)
+  { return operator new(__n); }
+
+  template<typename _Tp>
+    inline _Tp*__restrict__
+    __valarray_get_storage(size_t __n)
+    {
+      return static_cast<_Tp*__restrict__>
+	(std::__valarray_get_memory(__n * sizeof(_Tp)));
+    }
+
+  // Return memory to the system
+  inline void
+  __valarray_release_memory(void* __p)
+  { operator delete(__p); }
+
+  // Turn a raw-memory into an array of _Tp filled with _Tp()
+  // This is required in 'valarray<T> v(n);'
+  template<typename _Tp, bool>
+    struct _Array_default_ctor
+    {
+      // Please note that this isn't exception safe.  But
+      // valarrays aren't required to be exception safe.
+      inline static void
+      _S_do_it(_Tp* __b, _Tp* __e)
+      {
+	while (__b != __e)
+	  new(__b++) _Tp();
+      }
+    };
+
+  template<typename _Tp>
+    struct _Array_default_ctor<_Tp, true>
+    {
+      // For fundamental types, it suffices to say 'memset()'
+      inline static void
+      _S_do_it(_Tp* __b, _Tp* __e)
+      { __builtin_memset(__b, 0, (__e - __b) * sizeof(_Tp)); }
+    };
+
+  template<typename _Tp>
+    inline void
+    __valarray_default_construct(_Tp* __b, _Tp* __e)
+    {
+      _Array_default_ctor<_Tp, __is_scalar<_Tp>::__value>::_S_do_it(__b, __e);
+    }
+
+  // Turn a raw-memory into an array of _Tp filled with __t
+  // This is the required in valarray<T> v(n, t).  Also
+  // used in valarray<>::resize().
+  template<typename _Tp, bool>
+    struct _Array_init_ctor
+    {
+      // Please note that this isn't exception safe.  But
+      // valarrays aren't required to be exception safe.
+      inline static void
+      _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t)
+      {
+	while (__b != __e)
+	  new(__b++) _Tp(__t);
+      }
+    };
+
+  template<typename _Tp>
+    struct _Array_init_ctor<_Tp, true>
+    {
+      inline static void
+      _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t)
+      {
+	while (__b != __e)
+	  *__b++ = __t;
+      }
+    };
+
+  template<typename _Tp>
+    inline void
+    __valarray_fill_construct(_Tp* __b, _Tp* __e, const _Tp __t)
+    {
+      _Array_init_ctor<_Tp, __is_trivial(_Tp)>::_S_do_it(__b, __e, __t);
+    }
+
+  //
+  // copy-construct raw array [__o, *) from plain array [__b, __e)
+  // We can't just say 'memcpy()'
+  //
+  template<typename _Tp, bool>
+    struct _Array_copy_ctor
+    {
+      // Please note that this isn't exception safe.  But
+      // valarrays aren't required to be exception safe.
+      inline static void
+      _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
+      {
+	while (__b != __e)
+	  new(__o++) _Tp(*__b++);
+      }
+    };
+
+  template<typename _Tp>
+    struct _Array_copy_ctor<_Tp, true>
+    {
+      inline static void
+      _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
+      { __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); }
+    };
+
+  template<typename _Tp>
+    inline void
+    __valarray_copy_construct(const _Tp* __b, const _Tp* __e,
+			      _Tp* __restrict__ __o)
+    {
+      _Array_copy_ctor<_Tp, __is_trivial(_Tp)>::_S_do_it(__b, __e, __o);
+    }
+
+  // copy-construct raw array [__o, *) from strided array __a[<__n : __s>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy_construct (const _Tp* __restrict__ __a, size_t __n,
+			       size_t __s, _Tp* __restrict__ __o)
+    {
+      if (__is_trivial(_Tp))
+	while (__n--)
+	  {
+	    *__o++ = *__a;
+	    __a += __s;
+	  }
+      else
+	while (__n--)
+	  {
+	    new(__o++) _Tp(*__a);
+	    __a += __s;
+	  }
+    }
+
+  // copy-construct raw array [__o, *) from indexed array __a[__i[<__n>]]
+  template<typename _Tp>
+    inline void
+    __valarray_copy_construct (const _Tp* __restrict__ __a,
+			       const size_t* __restrict__ __i,
+			       _Tp* __restrict__ __o, size_t __n)
+    {
+      if (__is_trivial(_Tp))
+	while (__n--)
+	  *__o++ = __a[*__i++];
+      else
+	while (__n--)
+	  new (__o++) _Tp(__a[*__i++]);
+    }
+
+  // Do the necessary cleanup when we're done with arrays.
+  template<typename _Tp>
+    inline void
+    __valarray_destroy_elements(_Tp* __b, _Tp* __e)
+    {
+      if (!__is_trivial(_Tp))
+	while (__b != __e)
+	  {
+	    __b->~_Tp();
+	    ++__b;
+	  }
+    }
+
+  // Fill a plain array __a[<__n>] with __t
+  template<typename _Tp>
+    inline void
+    __valarray_fill(_Tp* __restrict__ __a, size_t __n, const _Tp& __t)
+    {
+      while (__n--)
+	*__a++ = __t;
+    }
+  
+  // fill strided array __a[<__n-1 : __s>] with __t
+  template<typename _Tp>
+    inline void
+    __valarray_fill(_Tp* __restrict__ __a, size_t __n,
+		    size_t __s, const _Tp& __t)
+    { 
+      for (size_t __i = 0; __i < __n; ++__i, __a += __s)
+	*__a = __t;
+    }
+
+  // fill indirect array __a[__i[<__n>]] with __i
+  template<typename _Tp>
+    inline void
+    __valarray_fill(_Tp* __restrict__ __a, const size_t* __restrict__ __i,
+		    size_t __n, const _Tp& __t)
+    {
+      for (size_t __j = 0; __j < __n; ++__j, ++__i)
+	__a[*__i] = __t;
+    }
+  
+  // copy plain array __a[<__n>] in __b[<__n>]
+  // For non-fundamental types, it is wrong to say 'memcpy()'
+  template<typename _Tp, bool>
+    struct _Array_copier
+    {
+      inline static void
+      _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
+      {
+	while(__n--)
+	  *__b++ = *__a++;
+      }
+    };
+
+  template<typename _Tp>
+    struct _Array_copier<_Tp, true>
+    {
+      inline static void
+      _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
+      { __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); }
+    };
+
+  // Copy a plain array __a[<__n>] into a play array __b[<>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __a, size_t __n,
+		    _Tp* __restrict__ __b)
+    {
+      _Array_copier<_Tp, __is_trivial(_Tp)>::_S_do_it(__a, __n, __b);
+    }
+
+  // Copy strided array __a[<__n : __s>] in plain __b[<__n>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __a, size_t __n, size_t __s,
+		    _Tp* __restrict__ __b)
+    {
+      for (size_t __i = 0; __i < __n; ++__i, ++__b, __a += __s)
+	*__b = *__a;
+    }
+
+  // Copy a plain array  __a[<__n>] into a strided array __b[<__n : __s>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __a, _Tp* __restrict__ __b,
+		    size_t __n, size_t __s)
+    {
+      for (size_t __i = 0; __i < __n; ++__i, ++__a, __b += __s)
+	*__b = *__a;
+    }
+
+  // Copy strided array __src[<__n : __s1>] into another
+  // strided array __dst[< : __s2>].  Their sizes must match.
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __src, size_t __n, size_t __s1,
+		    _Tp* __restrict__ __dst, size_t __s2)
+    {
+      for (size_t __i = 0; __i < __n; ++__i)
+	__dst[__i * __s2] = __src[__i * __s1];
+    }
+
+  // Copy an indexed array __a[__i[<__n>]] in plain array __b[<__n>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __a,
+		    const size_t* __restrict__ __i,
+		    _Tp* __restrict__ __b, size_t __n)
+    {
+      for (size_t __j = 0; __j < __n; ++__j, ++__b, ++__i)
+	*__b = __a[*__i];
+    }
+
+  // Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __a, size_t __n,
+		    _Tp* __restrict__ __b, const size_t* __restrict__ __i)
+    {
+      for (size_t __j = 0; __j < __n; ++__j, ++__a, ++__i)
+	__b[*__i] = *__a;
+    }
+
+  // Copy the __n first elements of an indexed array __src[<__i>] into
+  // another indexed array __dst[<__j>].
+  template<typename _Tp>
+    inline void
+    __valarray_copy(const _Tp* __restrict__ __src, size_t __n,
+		    const size_t* __restrict__ __i,
+		    _Tp* __restrict__ __dst, const size_t* __restrict__ __j)
+    {
+      for (size_t __k = 0; __k < __n; ++__k)
+	__dst[*__j++] = __src[*__i++];
+    }
+
+  //
+  // Compute the sum of elements in range [__f, __l)
+  // This is a naive algorithm.  It suffers from cancelling.
+  // In the future try to specialize
+  // for _Tp = float, double, long double using a more accurate
+  // algorithm.
+  //
+  template<typename _Tp>
+    inline _Tp
+    __valarray_sum(const _Tp* __f, const _Tp* __l)
+    {
+      _Tp __r = _Tp();
+      while (__f != __l)
+	__r += *__f++;
+      return __r;
+    }
+
+  // Compute the product of all elements in range [__f, __l)
+  template<typename _Tp>
+    inline _Tp
+    __valarray_product(const _Tp* __f, const _Tp* __l)
+    {
+      _Tp __r = _Tp(1);
+      while (__f != __l)
+	__r = __r * *__f++;
+      return __r;
+    }
+
+  // Compute the min/max of an array-expression
+  template<typename _Ta>
+    inline typename _Ta::value_type
+    __valarray_min(const _Ta& __a)
+    {
+      size_t __s = __a.size();
+      typedef typename _Ta::value_type _Value_type;
+      _Value_type __r = __s == 0 ? _Value_type() : __a[0];
+      for (size_t __i = 1; __i < __s; ++__i)
+	{
+	  _Value_type __t = __a[__i];
+	  if (__t < __r)
+	    __r = __t;
+	}
+      return __r;
+    }
+
+  template<typename _Ta>
+    inline typename _Ta::value_type
+    __valarray_max(const _Ta& __a)
+    {
+      size_t __s = __a.size();
+      typedef typename _Ta::value_type _Value_type;
+      _Value_type __r = __s == 0 ? _Value_type() : __a[0];
+      for (size_t __i = 1; __i < __s; ++__i)
+	{
+	  _Value_type __t = __a[__i];
+	  if (__t > __r)
+	    __r = __t;
+	}
+      return __r;
+    }
+
+  //
+  // Helper class _Array, first layer of valarray abstraction.
+  // All operations on valarray should be forwarded to this class
+  // whenever possible. -- gdr
+  //
+
+  template<typename _Tp>
+    struct _Array
+    {
+      explicit _Array(size_t);
+      explicit _Array(_Tp* const __restrict__);
+      explicit _Array(const valarray<_Tp>&);
+      _Array(const _Tp* __restrict__, size_t);
+      
+      _Tp* begin() const;
+      
+      _Tp* const __restrict__ _M_data;
+    };
+
+
+  // Copy-construct plain array __b[<__n>] from indexed array __a[__i[<__n>]]
+  template<typename _Tp>
+    inline void
+    __valarray_copy_construct(_Array<_Tp> __a, _Array<size_t> __i,
+			      _Array<_Tp> __b, size_t __n)
+    { std::__valarray_copy_construct(__a._M_data, __i._M_data,
+				     __b._M_data, __n); }
+
+  // Copy-construct plain array __b[<__n>] from strided array __a[<__n : __s>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy_construct(_Array<_Tp> __a, size_t __n, size_t __s,
+			      _Array<_Tp> __b)
+    { std::__valarray_copy_construct(__a._M_data, __n, __s, __b._M_data); }
+
+  template<typename _Tp>
+    inline void
+    __valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
+    { std::__valarray_fill(__a._M_data, __n, __t); }
+
+  template<typename _Tp>
+    inline void
+    __valarray_fill(_Array<_Tp> __a, size_t __n, size_t __s, const _Tp& __t)
+    { std::__valarray_fill(__a._M_data, __n, __s, __t); }
+
+  template<typename _Tp>
+    inline void
+    __valarray_fill(_Array<_Tp> __a, _Array<size_t> __i,
+		    size_t __n, const _Tp& __t)
+    { std::__valarray_fill(__a._M_data, __i._M_data, __n, __t); }
+
+  // Copy a plain array __a[<__n>] into a play array __b[<>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b)
+    { std::__valarray_copy(__a._M_data, __n, __b._M_data); }
+
+  // Copy strided array __a[<__n : __s>] in plain __b[<__n>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, size_t __n, size_t __s, _Array<_Tp> __b)
+    { std::__valarray_copy(__a._M_data, __n, __s, __b._M_data); }
+
+  // Copy a plain array  __a[<__n>] into a strided array __b[<__n : __s>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, _Array<_Tp> __b, size_t __n, size_t __s)
+    { __valarray_copy(__a._M_data, __b._M_data, __n, __s); }
+
+  // Copy strided array __src[<__n : __s1>] into another
+  // strided array __dst[< : __s2>].  Their sizes must match.
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, size_t __n, size_t __s1,
+                    _Array<_Tp> __b, size_t __s2)
+    { std::__valarray_copy(__a._M_data, __n, __s1, __b._M_data, __s2); }
+
+  // Copy an indexed array __a[__i[<__n>]] in plain array __b[<__n>]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, _Array<size_t> __i,
+		    _Array<_Tp> __b, size_t __n)
+    { std::__valarray_copy(__a._M_data, __i._M_data, __b._M_data, __n); }
+
+  // Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]]
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b,
+		    _Array<size_t> __i)
+    { std::__valarray_copy(__a._M_data, __n, __b._M_data, __i._M_data); }
+
+  // Copy the __n first elements of an indexed array __src[<__i>] into
+  // another indexed array __dst[<__j>].
+  template<typename _Tp>
+    inline void
+    __valarray_copy(_Array<_Tp> __src, size_t __n, _Array<size_t> __i,
+                    _Array<_Tp> __dst, _Array<size_t> __j)
+    {
+      std::__valarray_copy(__src._M_data, __n, __i._M_data,
+		    __dst._M_data, __j._M_data);
+    }
+
+  template<typename _Tp>
+    inline
+    _Array<_Tp>::_Array(size_t __n)
+    : _M_data(__valarray_get_storage<_Tp>(__n))
+    { std::__valarray_default_construct(_M_data, _M_data + __n); }
+
+  template<typename _Tp>
+    inline
+    _Array<_Tp>::_Array(_Tp* const __restrict__ __p)
+    : _M_data (__p) {}
+
+  template<typename _Tp>
+    inline
+    _Array<_Tp>::_Array(const valarray<_Tp>& __v)
+    : _M_data (__v._M_data) {}
+
+  template<typename _Tp>
+    inline
+    _Array<_Tp>::_Array(const _Tp* __restrict__ __b, size_t __s)
+    : _M_data(__valarray_get_storage<_Tp>(__s))
+    { std::__valarray_copy_construct(__b, __s, _M_data); }
+
+  template<typename _Tp>
+    inline _Tp*
+    _Array<_Tp>::begin () const
+    { return _M_data; }
+
+#define _DEFINE_ARRAY_FUNCTION(_Op, _Name)				\
+  template<typename _Tp>		        			\
+    inline void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, const _Tp& __t) \
+    {									\
+      for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; ++__p)	\
+        *__p _Op##= __t;						\
+    }									\
+									\
+  template<typename _Tp>						\
+    inline void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \
+    {									\
+      _Tp* __p = __a._M_data;						\
+      for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; ++__p, ++__q) \
+        *__p _Op##= *__q;						\
+    }									\
+									\
+  template<typename _Tp, class _Dom>					\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a,	        		\
+                             const _Expr<_Dom, _Tp>& __e, size_t __n)	\
+    {									\
+      _Tp* __p(__a._M_data);						\
+      for (size_t __i = 0; __i < __n; ++__i, ++__p)                     \
+        *__p _Op##= __e[__i];                                          	\
+    }									\
+									\
+  template<typename _Tp>						\
+    inline void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, size_t __s,	\
+	                     _Array<_Tp> __b)				\
+    {									\
+      _Tp* __q(__b._M_data);						\
+      for (_Tp* __p = __a._M_data; __p < __a._M_data + __s * __n;       \
+	   __p += __s, ++__q)                                           \
+        *__p _Op##= *__q;						\
+    }									\
+									\
+  template<typename _Tp>						\
+    inline void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, _Array<_Tp> __b,		\
+		             size_t __n, size_t __s)			\
+    {									\
+      _Tp* __q(__b._M_data);						\
+      for (_Tp* __p = __a._M_data; __p < __a._M_data + __n;             \
+	   ++__p, __q += __s)                                           \
+        *__p _Op##= *__q;						\
+    }									\
+									\
+  template<typename _Tp, class _Dom>					\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __s,		\
+                             const _Expr<_Dom, _Tp>& __e, size_t __n)	\
+    {									\
+      _Tp* __p(__a._M_data);						\
+      for (size_t __i = 0; __i < __n; ++__i, __p += __s)                \
+        *__p _Op##= __e[__i];                                          	\
+    }									\
+									\
+  template<typename _Tp>						\
+    inline void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, _Array<size_t> __i,	\
+                             _Array<_Tp> __b, size_t __n)		\
+    {									\
+      _Tp* __q(__b._M_data);						\
+      for (size_t* __j = __i._M_data; __j < __i._M_data + __n;          \
+           ++__j, ++__q)                                                \
+        __a._M_data[*__j] _Op##= *__q;					\
+    }									\
+									\
+  template<typename _Tp>						\
+    inline void					        		\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n,		\
+                             _Array<_Tp> __b, _Array<size_t> __i)	\
+    {									\
+      _Tp* __p(__a._M_data);						\
+      for (size_t* __j = __i._M_data; __j<__i._M_data + __n;            \
+	   ++__j, ++__p)                                                \
+        *__p _Op##= __b._M_data[*__j];					\
+    }									\
+									\
+  template<typename _Tp, class _Dom>					\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, _Array<size_t> __i,	\
+                             const _Expr<_Dom, _Tp>& __e, size_t __n)	\
+    {									\
+      size_t* __j(__i._M_data);	        				\
+      for (size_t __k = 0; __k<__n; ++__k, ++__j)			\
+        __a._M_data[*__j] _Op##= __e[__k];				\
+    }									\
+									\
+  template<typename _Tp>						\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, _Array<bool> __m,         \
+                             _Array<_Tp> __b, size_t __n)		\
+    {									\
+      bool* __ok(__m._M_data);						\
+      _Tp* __p(__a._M_data);						\
+      for (_Tp* __q = __b._M_data; __q < __b._M_data + __n;             \
+	   ++__q, ++__ok, ++__p)                                        \
+        {                                                               \
+          while (! *__ok)                                               \
+            {						        	\
+              ++__ok;							\
+              ++__p;							\
+            }								\
+          *__p _Op##= *__q;						\
+        }								\
+    }									\
+									\
+  template<typename _Tp>						\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n,		\
+                             _Array<_Tp> __b, _Array<bool> __m)   	\
+    {									\
+      bool* __ok(__m._M_data);						\
+      _Tp* __q(__b._M_data);						\
+      for (_Tp* __p = __a._M_data; __p < __a._M_data + __n;             \
+	   ++__p, ++__ok, ++__q)                                        \
+        {                                                               \
+          while (! *__ok)                                               \
+            {					        		\
+              ++__ok;							\
+              ++__q;							\
+            }								\
+          *__p _Op##= *__q;						\
+        }								\
+    }									\
+									\
+  template<typename _Tp, class _Dom>					\
+    void								\
+    _Array_augmented_##_Name(_Array<_Tp> __a, _Array<bool> __m,  	\
+                             const _Expr<_Dom, _Tp>& __e, size_t __n)	\
+    {									\
+      bool* __ok(__m._M_data);						\
+      _Tp* __p(__a._M_data);						\
+      for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p)             \
+        {	                                           		\
+          while (! *__ok)                                               \
+            {		         					\
+	      ++__ok;							\
+              ++__p;							\
+            }								\
+          *__p _Op##= __e[__i];						\
+        }								\
+    }
+
+   _DEFINE_ARRAY_FUNCTION(+, __plus)
+   _DEFINE_ARRAY_FUNCTION(-, __minus)
+   _DEFINE_ARRAY_FUNCTION(*, __multiplies)
+   _DEFINE_ARRAY_FUNCTION(/, __divides)
+   _DEFINE_ARRAY_FUNCTION(%, __modulus)
+   _DEFINE_ARRAY_FUNCTION(^, __bitwise_xor)
+   _DEFINE_ARRAY_FUNCTION(|, __bitwise_or)
+   _DEFINE_ARRAY_FUNCTION(&, __bitwise_and)
+   _DEFINE_ARRAY_FUNCTION(<<, __shift_left)
+   _DEFINE_ARRAY_FUNCTION(>>, __shift_right)
+
+#undef _DEFINE_ARRAY_FUNCTION
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+# include <bits/valarray_array.tcc>
+
+#endif /* _ARRAY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.tcc
new file mode 100644
index 000000000..772070765
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_array.tcc
@@ -0,0 +1,245 @@
+// The template and inlines for the -*- C++ -*- internal _Array helper class.
+
+// Copyright (C) 1997, 1998, 1999, 2003, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/valarray_array.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _VALARRAY_ARRAY_TCC
+#define _VALARRAY_ARRAY_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Tp>
+    void
+    __valarray_fill(_Array<_Tp> __a, size_t __n, _Array<bool> __m,
+		    const _Tp& __t)
+    {
+      _Tp* __p = __a._M_data;
+      bool* __ok (__m._M_data);
+      for (size_t __i=0; __i < __n; ++__i, ++__ok, ++__p)
+	{
+	  while (!*__ok)
+	  {
+	    ++__ok;
+	    ++__p;
+	  }
+	  *__p = __t;
+	}
+    }
+
+  // Copy n elements of a into consecutive elements of b.  When m is
+  // false, the corresponding element of a is skipped.  m must contain
+  // at least n true elements.  a must contain at least n elements and
+  // enough elements to match up with m through the nth true element
+  // of m.  I.e.  if n is 10, m has 15 elements with 5 false followed
+  // by 10 true, a must have 15 elements.
+  template<typename _Tp>
+    void
+    __valarray_copy(_Array<_Tp> __a, _Array<bool> __m, _Array<_Tp> __b,
+		    size_t __n)
+    {
+      _Tp* __p (__a._M_data);
+      bool* __ok (__m._M_data);
+      for (_Tp* __q = __b._M_data; __q < __b._M_data + __n;
+	   ++__q, ++__ok, ++__p)
+	{
+	  while (! *__ok)
+	    {
+	      ++__ok;
+	      ++__p;
+	    }
+	  *__q = *__p;
+	}
+    }
+
+  // Copy n consecutive elements from a into elements of b.  Elements
+  // of b are skipped if the corresponding element of m is false.  m
+  // must contain at least n true elements.  b must have at least as
+  // many elements as the index of the nth true element of m.  I.e. if
+  // m has 15 elements with 5 false followed by 10 true, b must have
+  // at least 15 elements.
+  template<typename _Tp>
+    void
+    __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b,
+		    _Array<bool> __m)
+    {
+      _Tp* __q (__b._M_data);
+      bool* __ok (__m._M_data);
+      for (_Tp* __p = __a._M_data; __p < __a._M_data+__n;
+	   ++__p, ++__ok, ++__q)
+	{
+	  while (! *__ok)
+	    {
+	      ++__ok;
+	      ++__q;
+	    }
+	  *__q = *__p;
+	}
+    }
+
+  // Copy n elements from a into elements of b.  Elements of a are
+  // skipped if the corresponding element of m is false.  Elements of
+  // b are skipped if the corresponding element of k is false.  m and
+  // k must contain at least n true elements.  a and b must have at
+  // least as many elements as the index of the nth true element of m.
+  template<typename _Tp>
+    void
+    __valarray_copy(_Array<_Tp> __a, _Array<bool> __m, size_t __n,
+		    _Array<_Tp> __b, _Array<bool> __k)
+    {
+      _Tp* __p (__a._M_data);
+      _Tp* __q (__b._M_data);
+      bool* __srcok (__m._M_data);
+      bool* __dstok (__k._M_data);
+      for (size_t __i = 0; __i < __n;
+	   ++__srcok, ++__p, ++__dstok, ++__q, ++__i)
+	{
+	  while (! *__srcok)
+	    {
+	      ++__srcok;
+	      ++__p;
+	    }
+	  while (! *__dstok) 
+	    {
+	      ++__dstok;
+	      ++__q;
+	    }
+	  *__q = *__p;
+	}
+    }
+
+  // Copy n consecutive elements of e into consecutive elements of a.
+  // I.e. a[i] = e[i].
+  template<typename _Tp, class _Dom>
+    void
+    __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, _Array<_Tp> __a)
+    {
+      _Tp* __p (__a._M_data);
+      for (size_t __i = 0; __i < __n; ++__i, ++__p)
+	*__p = __e[__i];
+    }
+
+  // Copy n consecutive elements of e into elements of a using stride
+  // s.  I.e., a[0] = e[0], a[s] = e[1], a[2*s] = e[2].
+  template<typename _Tp, class _Dom>
+    void
+    __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n,
+		     _Array<_Tp> __a, size_t __s)
+    {
+      _Tp* __p (__a._M_data);
+      for (size_t __i = 0; __i < __n; ++__i, __p += __s)
+	*__p = __e[__i];
+    }
+
+  // Copy n consecutive elements of e into elements of a indexed by
+  // contents of i.  I.e., a[i[0]] = e[0].
+  template<typename _Tp, class _Dom>
+    void
+    __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n,
+		    _Array<_Tp> __a, _Array<size_t> __i)
+    {
+      size_t* __j (__i._M_data);
+      for (size_t __k = 0; __k < __n; ++__k, ++__j)
+	__a._M_data[*__j] = __e[__k];
+    }
+
+  // Copy n elements of e indexed by contents of f into elements of a
+  // indexed by contents of i.  I.e., a[i[0]] = e[f[0]].
+  template<typename _Tp>
+    void
+    __valarray_copy(_Array<_Tp> __e, _Array<size_t> __f,
+		    size_t __n, 
+		    _Array<_Tp> __a, _Array<size_t> __i)
+    {
+      size_t* __g (__f._M_data);
+      size_t* __j (__i._M_data);
+      for (size_t __k = 0; __k < __n; ++__k, ++__j, ++__g) 
+	__a._M_data[*__j] = __e._M_data[*__g];
+    }
+
+  // Copy n consecutive elements of e into elements of a.  Elements of
+  // a are skipped if the corresponding element of m is false.  m must
+  // have at least n true elements and a must have at least as many
+  // elements as the index of the nth true element of m.  I.e. if m
+  // has 5 false followed by 10 true elements and n == 10, a must have
+  // at least 15 elements.
+  template<typename _Tp, class _Dom>
+    void
+    __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n,
+		    _Array<_Tp> __a, _Array<bool> __m)
+    {
+      bool* __ok (__m._M_data);
+      _Tp* __p (__a._M_data);
+      for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p)
+	{
+	  while (! *__ok)
+	    {
+	      ++__ok;
+	      ++__p;
+	    }
+	  *__p = __e[__i];
+	}
+    }
+
+
+  template<typename _Tp, class _Dom>
+    void
+    __valarray_copy_construct(const _Expr<_Dom, _Tp>& __e, size_t __n,
+			      _Array<_Tp> __a)
+    {
+      _Tp* __p (__a._M_data);
+      for (size_t __i = 0; __i < __n; ++__i, ++__p)
+	new (__p) _Tp(__e[__i]);
+    }
+
+
+  template<typename _Tp>
+    void
+    __valarray_copy_construct(_Array<_Tp> __a, _Array<bool> __m,
+			      _Array<_Tp> __b, size_t __n)
+    {
+      _Tp* __p (__a._M_data);
+      bool* __ok (__m._M_data);
+      for (_Tp* __q = __b._M_data; __q < __b._M_data+__n; ++__q, ++__ok, ++__p)
+	{
+	  while (! *__ok)
+	    {
+	      ++__ok;
+	      ++__p;
+	    }
+	  new (__q) _Tp(*__p);
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _VALARRAY_ARRAY_TCC */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_before.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_before.h
new file mode 100644
index 000000000..0755f768b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/valarray_before.h
@@ -0,0 +1,734 @@
+// The template and inlines for the -*- C++ -*- internal _Meta class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/valarray_before.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{valarray}
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
+
+#ifndef _VALARRAY_BEFORE_H
+#define _VALARRAY_BEFORE_H 1
+
+#pragma GCC system_header
+
+#include <bits/slice_array.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  //
+  // Implementing a loosened valarray return value is tricky.
+  // First we need to meet 26.3.1/3: we should not add more than
+  // two levels of template nesting. Therefore we resort to template
+  // template to "flatten" loosened return value types.
+  // At some point we use partial specialization to remove one level
+  // template nesting due to _Expr<>
+  //
+
+  // This class is NOT defined. It doesn't need to.
+  template<typename _Tp1, typename _Tp2> class _Constant;
+
+  // Implementations of unary functions applied to valarray<>s.
+  // I use hard-coded object functions here instead of a generic
+  // approach like pointers to function:
+  //    1) correctness: some functions take references, others values.
+  //       we can't deduce the correct type afterwards.
+  //    2) efficiency -- object functions can be easily inlined
+  //    3) be Koenig-lookup-friendly
+
+  struct _Abs
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return abs(__t); }
+  };
+
+  struct _Cos
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return cos(__t); }
+  };
+
+  struct _Acos
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return acos(__t); }
+  };
+
+  struct _Cosh
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return cosh(__t); }
+  };
+
+  struct _Sin
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return sin(__t); }
+  };
+
+  struct _Asin
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return asin(__t); }
+  };
+
+  struct _Sinh
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return sinh(__t); }
+  };
+
+  struct _Tan
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return tan(__t); }
+  };
+
+  struct _Atan
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return atan(__t); }
+  };
+
+  struct _Tanh
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return tanh(__t); }
+  };
+
+  struct _Exp
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return exp(__t); }
+  };
+
+  struct _Log
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return log(__t); }
+  };
+
+  struct _Log10
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return log10(__t); }
+  };
+
+  struct _Sqrt
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return sqrt(__t); }
+  };
+
+  // In the past, we used to tailor operator applications semantics
+  // to the specialization of standard function objects (i.e. plus<>, etc.)
+  // That is incorrect.  Therefore we provide our own surrogates.
+
+  struct __unary_plus
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return +__t; }
+  };
+
+  struct __negate
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return -__t; }
+  };
+
+  struct __bitwise_not
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __t) const
+      { return ~__t; }
+  };
+
+  struct __plus
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x + __y; }
+  };
+
+  struct __minus
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x - __y; }
+  };
+
+  struct __multiplies
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x * __y; }
+  };
+
+  struct __divides
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x / __y; }
+  };
+
+  struct __modulus
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x % __y; }
+  };
+
+  struct __bitwise_xor
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x ^ __y; }
+  };
+
+  struct __bitwise_and
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x & __y; }
+  };
+
+  struct __bitwise_or
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x | __y; }
+  };
+
+  struct __shift_left
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x << __y; }
+  };
+
+  struct __shift_right
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x >> __y; }
+  };
+
+  struct __logical_and
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x && __y; }
+  };
+
+  struct __logical_or
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x || __y; }
+  };
+
+  struct __logical_not
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x) const
+      { return !__x; }
+  };
+
+  struct __equal_to
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x == __y; }
+  };
+
+  struct __not_equal_to
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x != __y; }
+  };
+
+  struct __less
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x < __y; }
+  };
+
+  struct __greater
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x > __y; }
+  };
+
+  struct __less_equal
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x <= __y; }
+  };
+
+  struct __greater_equal
+  {
+    template<typename _Tp>
+      bool operator()(const _Tp& __x, const _Tp& __y) const
+      { return __x >= __y; }
+  };
+
+  // The few binary functions we miss.
+  struct _Atan2
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return atan2(__x, __y); }
+  };
+
+  struct _Pow
+  {
+    template<typename _Tp>
+      _Tp operator()(const _Tp& __x, const _Tp& __y) const
+      { return pow(__x, __y); }
+  };
+
+
+  // We need these bits in order to recover the return type of
+  // some functions/operators now that we're no longer using
+  // function templates.
+  template<typename, typename _Tp>
+    struct __fun
+    {
+      typedef _Tp result_type;
+    };
+
+  // several specializations for relational operators.
+  template<typename _Tp>
+    struct __fun<__logical_not, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__logical_and, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__logical_or, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__less, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__greater, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__less_equal, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__greater_equal, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__equal_to, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  template<typename _Tp>
+    struct __fun<__not_equal_to, _Tp>
+    {
+      typedef bool result_type;
+    };
+
+  //
+  // Apply function taking a value/const reference closure
+  //
+
+  template<typename _Dom, typename _Arg>
+    class _FunBase
+    {
+    public:
+      typedef typename _Dom::value_type value_type;
+
+      _FunBase(const _Dom& __e, value_type __f(_Arg))
+      : _M_expr(__e), _M_func(__f) {}
+
+      value_type operator[](size_t __i) const
+      { return _M_func (_M_expr[__i]); }
+
+      size_t size() const { return _M_expr.size ();}
+
+    private:
+      const _Dom& _M_expr;
+      value_type (*_M_func)(_Arg);
+    };
+
+  template<class _Dom>
+    struct _ValFunClos<_Expr,_Dom> : _FunBase<_Dom, typename _Dom::value_type>
+    {
+      typedef _FunBase<_Dom, typename _Dom::value_type> _Base;
+      typedef typename _Base::value_type value_type;
+      typedef value_type _Tp;
+
+      _ValFunClos(const _Dom& __e, _Tp __f(_Tp)) : _Base(__e, __f) {}
+    };
+
+  template<typename _Tp>
+    struct _ValFunClos<_ValArray,_Tp> : _FunBase<valarray<_Tp>, _Tp>
+    {
+      typedef _FunBase<valarray<_Tp>, _Tp> _Base;
+      typedef _Tp value_type;
+
+      _ValFunClos(const valarray<_Tp>& __v, _Tp __f(_Tp)) : _Base(__v, __f) {}
+    };
+
+  template<class _Dom>
+    struct _RefFunClos<_Expr, _Dom>
+    : _FunBase<_Dom, const typename _Dom::value_type&>
+    {
+      typedef _FunBase<_Dom, const typename _Dom::value_type&> _Base;
+      typedef typename _Base::value_type value_type;
+      typedef value_type _Tp;
+
+      _RefFunClos(const _Dom& __e, _Tp __f(const _Tp&))
+      : _Base(__e, __f) {}
+    };
+
+  template<typename _Tp>
+    struct _RefFunClos<_ValArray, _Tp>
+    : _FunBase<valarray<_Tp>, const _Tp&>
+    {
+      typedef _FunBase<valarray<_Tp>, const _Tp&> _Base;
+      typedef _Tp value_type;
+
+      _RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&))
+      : _Base(__v, __f) {}
+    };
+
+  //
+  // Unary expression closure.
+  //
+
+  template<class _Oper, class _Arg>
+    class _UnBase
+    {
+    public:
+      typedef typename _Arg::value_type _Vt;
+      typedef typename __fun<_Oper, _Vt>::result_type value_type;
+
+      _UnBase(const _Arg& __e) : _M_expr(__e) {}
+
+      value_type operator[](size_t __i) const
+      { return _Oper()(_M_expr[__i]); }
+
+      size_t size() const { return _M_expr.size(); }
+      
+    private:
+      const _Arg& _M_expr;
+    };
+
+  template<class _Oper, class _Dom>
+    struct _UnClos<_Oper, _Expr, _Dom>
+    : _UnBase<_Oper, _Dom>
+    {
+      typedef _Dom _Arg;
+      typedef _UnBase<_Oper, _Dom> _Base;
+      typedef typename _Base::value_type value_type;
+
+      _UnClos(const _Arg& __e) : _Base(__e) {}
+    };
+
+  template<class _Oper, typename _Tp>
+    struct _UnClos<_Oper, _ValArray, _Tp>
+    : _UnBase<_Oper, valarray<_Tp> >
+    {
+      typedef valarray<_Tp> _Arg;
+      typedef _UnBase<_Oper, valarray<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+
+      _UnClos(const _Arg& __e) : _Base(__e) {}
+    };
+
+
+  //
+  // Binary expression closure.
+  //
+
+  template<class _Oper, class _FirstArg, class _SecondArg>
+    class _BinBase
+    {
+    public:
+      typedef typename _FirstArg::value_type _Vt;
+      typedef typename __fun<_Oper, _Vt>::result_type value_type;
+
+      _BinBase(const _FirstArg& __e1, const _SecondArg& __e2)
+      : _M_expr1(__e1), _M_expr2(__e2) {}
+
+      value_type operator[](size_t __i) const
+      { return _Oper()(_M_expr1[__i], _M_expr2[__i]); }
+
+      size_t size() const { return _M_expr1.size(); }
+
+    private:
+      const _FirstArg& _M_expr1;
+      const _SecondArg& _M_expr2;
+    };
+
+
+  template<class _Oper, class _Clos>
+    class _BinBase2
+    {
+    public:
+      typedef typename _Clos::value_type _Vt;
+      typedef typename __fun<_Oper, _Vt>::result_type value_type;
+
+      _BinBase2(const _Clos& __e, const _Vt& __t)
+      : _M_expr1(__e), _M_expr2(__t) {}
+
+      value_type operator[](size_t __i) const
+      { return _Oper()(_M_expr1[__i], _M_expr2); }
+
+      size_t size() const { return _M_expr1.size(); }
+
+    private:
+      const _Clos& _M_expr1;
+      const _Vt& _M_expr2;
+    };
+
+  template<class _Oper, class _Clos>
+    class _BinBase1
+    {
+    public:
+      typedef typename _Clos::value_type _Vt;
+      typedef typename __fun<_Oper, _Vt>::result_type value_type;
+
+      _BinBase1(const _Vt& __t, const _Clos& __e)
+      : _M_expr1(__t), _M_expr2(__e) {}
+
+      value_type operator[](size_t __i) const
+      { return _Oper()(_M_expr1, _M_expr2[__i]); }
+
+      size_t size() const { return _M_expr2.size(); }
+
+    private:
+      const _Vt& _M_expr1;
+      const _Clos& _M_expr2;
+    };
+
+  template<class _Oper, class _Dom1, class _Dom2>
+    struct _BinClos<_Oper, _Expr, _Expr, _Dom1, _Dom2>
+    : _BinBase<_Oper, _Dom1, _Dom2>
+    {
+      typedef _BinBase<_Oper, _Dom1, _Dom2> _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const _Dom1& __e1, const _Dom2& __e2) : _Base(__e1, __e2) {}
+    };
+
+  template<class _Oper, typename _Tp>
+    struct _BinClos<_Oper,_ValArray, _ValArray, _Tp, _Tp>
+    : _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> >
+    {
+      typedef _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const valarray<_Tp>& __v, const valarray<_Tp>& __w)
+      : _Base(__v, __w) {}
+    };
+
+  template<class _Oper, class _Dom>
+    struct _BinClos<_Oper, _Expr, _ValArray, _Dom, typename _Dom::value_type>
+    : _BinBase<_Oper, _Dom, valarray<typename _Dom::value_type> >
+    {
+      typedef typename _Dom::value_type _Tp;
+      typedef _BinBase<_Oper,_Dom,valarray<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const _Dom& __e1, const valarray<_Tp>& __e2)
+      : _Base(__e1, __e2) {}
+    };
+
+  template<class _Oper, class _Dom>
+    struct _BinClos<_Oper, _ValArray, _Expr, typename _Dom::value_type, _Dom>
+    : _BinBase<_Oper, valarray<typename _Dom::value_type>,_Dom>
+    {
+      typedef typename _Dom::value_type _Tp;
+      typedef _BinBase<_Oper, valarray<_Tp>, _Dom> _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const valarray<_Tp>& __e1, const _Dom& __e2)
+      : _Base(__e1, __e2) {}
+    };
+
+  template<class _Oper, class _Dom>
+    struct _BinClos<_Oper, _Expr, _Constant, _Dom, typename _Dom::value_type>
+    : _BinBase2<_Oper, _Dom>
+    {
+      typedef typename _Dom::value_type _Tp;
+      typedef _BinBase2<_Oper,_Dom> _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const _Dom& __e1, const _Tp& __e2) : _Base(__e1, __e2) {}
+    };
+
+  template<class _Oper, class _Dom>
+    struct _BinClos<_Oper, _Constant, _Expr, typename _Dom::value_type, _Dom>
+    : _BinBase1<_Oper, _Dom>
+    {
+      typedef typename _Dom::value_type _Tp;
+      typedef _BinBase1<_Oper, _Dom> _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const _Tp& __e1, const _Dom& __e2) : _Base(__e1, __e2) {}
+    };
+
+  template<class _Oper, typename _Tp>
+    struct _BinClos<_Oper, _ValArray, _Constant, _Tp, _Tp>
+    : _BinBase2<_Oper, valarray<_Tp> >
+    {
+      typedef _BinBase2<_Oper,valarray<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const valarray<_Tp>& __v, const _Tp& __t) : _Base(__v, __t) {}
+    };
+
+  template<class _Oper, typename _Tp>
+    struct _BinClos<_Oper, _Constant, _ValArray, _Tp, _Tp>
+    : _BinBase1<_Oper, valarray<_Tp> >
+    {
+      typedef _BinBase1<_Oper, valarray<_Tp> > _Base;
+      typedef typename _Base::value_type value_type;
+
+      _BinClos(const _Tp& __t, const valarray<_Tp>& __v) : _Base(__t, __v) {}
+    };
+
+    //
+    // slice_array closure.
+    //
+  template<typename _Dom> 
+    class _SBase
+    {
+    public:
+      typedef typename _Dom::value_type value_type;
+      
+      _SBase (const _Dom& __e, const slice& __s)
+      : _M_expr (__e), _M_slice (__s) {}
+        
+      value_type
+      operator[] (size_t __i) const
+      { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; }
+        
+      size_t
+      size() const
+      { return _M_slice.size (); }
+
+    private:
+      const _Dom& _M_expr;
+      const slice& _M_slice;
+    };
+
+  template<typename _Tp>
+    class _SBase<_Array<_Tp> >
+    {
+    public:
+      typedef _Tp value_type;
+      
+      _SBase (_Array<_Tp> __a, const slice& __s)
+      : _M_array (__a._M_data+__s.start()), _M_size (__s.size()),
+	_M_stride (__s.stride()) {}
+        
+      value_type
+      operator[] (size_t __i) const
+      { return _M_array._M_data[__i * _M_stride]; }
+      
+      size_t
+      size() const
+      { return _M_size; }
+
+    private:
+      const _Array<_Tp> _M_array;
+      const size_t _M_size;
+      const size_t _M_stride;
+    };
+
+  template<class _Dom>
+    struct _SClos<_Expr, _Dom>
+    : _SBase<_Dom>
+    {
+      typedef _SBase<_Dom> _Base;
+      typedef typename _Base::value_type value_type;
+      
+      _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {}
+    };
+
+  template<typename _Tp>
+    struct _SClos<_ValArray, _Tp>
+    : _SBase<_Array<_Tp> >
+    {
+      typedef  _SBase<_Array<_Tp> > _Base;
+      typedef _Tp value_type;
+      
+      _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {}
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _CPP_VALARRAY_BEFORE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/vector.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/vector.tcc
new file mode 100644
index 000000000..3aaee392e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/bits/vector.tcc
@@ -0,0 +1,781 @@
+// Vector implementation (out of line) -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this  software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file bits/vector.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{vector}
+ */
+
+#ifndef _VECTOR_TCC
+#define _VECTOR_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  template<typename _Tp, typename _Alloc>
+    void
+    vector<_Tp, _Alloc>::
+    reserve(size_type __n)
+    {
+      if (__n > this->max_size())
+	__throw_length_error(__N("vector::reserve"));
+      if (this->capacity() < __n)
+	{
+	  const size_type __old_size = size();
+	  pointer __tmp = _M_allocate_and_copy(__n,
+		 _GLIBCXX_MAKE_MOVE_ITERATOR(this->_M_impl._M_start),
+		 _GLIBCXX_MAKE_MOVE_ITERATOR(this->_M_impl._M_finish));
+	  std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			_M_get_Tp_allocator());
+	  _M_deallocate(this->_M_impl._M_start,
+			this->_M_impl._M_end_of_storage
+			- this->_M_impl._M_start);
+	  this->_M_impl._M_start = __tmp;
+	  this->_M_impl._M_finish = __tmp + __old_size;
+	  this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      void
+      vector<_Tp, _Alloc>::
+      emplace_back(_Args&&... __args)
+      {
+	if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_finish,
+				    std::forward<_Args>(__args)...);
+	    ++this->_M_impl._M_finish;
+	  }
+	else
+	  _M_insert_aux(end(), std::forward<_Args>(__args)...);
+      }
+#endif
+
+  template<typename _Tp, typename _Alloc>
+    typename vector<_Tp, _Alloc>::iterator
+    vector<_Tp, _Alloc>::
+    insert(iterator __position, const value_type& __x)
+    {
+      const size_type __n = __position - begin();
+      if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
+	  && __position == end())
+	{
+	  this->_M_impl.construct(this->_M_impl._M_finish, __x);
+	  ++this->_M_impl._M_finish;
+	}
+      else
+	{
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+	  if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+	    {
+	      _Tp __x_copy = __x;
+	      _M_insert_aux(__position, std::move(__x_copy));
+	    }
+	  else
+#endif
+	    _M_insert_aux(__position, __x);
+	}
+      return iterator(this->_M_impl._M_start + __n);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    typename vector<_Tp, _Alloc>::iterator
+    vector<_Tp, _Alloc>::
+    erase(iterator __position)
+    {
+      if (__position + 1 != end())
+	_GLIBCXX_MOVE3(__position + 1, end(), __position);
+      --this->_M_impl._M_finish;
+      this->_M_impl.destroy(this->_M_impl._M_finish);
+      return __position;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    typename vector<_Tp, _Alloc>::iterator
+    vector<_Tp, _Alloc>::
+    erase(iterator __first, iterator __last)
+    {
+      if (__last != end())
+	_GLIBCXX_MOVE3(__last, end(), __first);
+      _M_erase_at_end(__first.base() + (end() - __last));
+      return __first;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    vector<_Tp, _Alloc>&
+    vector<_Tp, _Alloc>::
+    operator=(const vector<_Tp, _Alloc>& __x)
+    {
+      if (&__x != this)
+	{
+	  const size_type __xlen = __x.size();
+	  if (__xlen > capacity())
+	    {
+	      pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
+						   __x.end());
+	      std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			    _M_get_Tp_allocator());
+	      _M_deallocate(this->_M_impl._M_start,
+			    this->_M_impl._M_end_of_storage
+			    - this->_M_impl._M_start);
+	      this->_M_impl._M_start = __tmp;
+	      this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
+	    }
+	  else if (size() >= __xlen)
+	    {
+	      std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
+			    end(), _M_get_Tp_allocator());
+	    }
+	  else
+	    {
+	      std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
+			this->_M_impl._M_start);
+	      std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
+					  __x._M_impl._M_finish,
+					  this->_M_impl._M_finish,
+					  _M_get_Tp_allocator());
+	    }
+	  this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
+	}
+      return *this;
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    vector<_Tp, _Alloc>::
+    _M_fill_assign(size_t __n, const value_type& __val)
+    {
+      if (__n > capacity())
+	{
+	  vector __tmp(__n, __val, _M_get_Tp_allocator());
+	  __tmp.swap(*this);
+	}
+      else if (__n > size())
+	{
+	  std::fill(begin(), end(), __val);
+	  std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+					__n - size(), __val,
+					_M_get_Tp_allocator());
+	  this->_M_impl._M_finish += __n - size();
+	}
+      else
+        _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
+    }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _InputIterator>
+      void
+      vector<_Tp, _Alloc>::
+      _M_assign_aux(_InputIterator __first, _InputIterator __last,
+		    std::input_iterator_tag)
+      {
+	pointer __cur(this->_M_impl._M_start);
+	for (; __first != __last && __cur != this->_M_impl._M_finish;
+	     ++__cur, ++__first)
+	  *__cur = *__first;
+	if (__first == __last)
+	  _M_erase_at_end(__cur);
+	else
+	  insert(end(), __first, __last);
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _ForwardIterator>
+      void
+      vector<_Tp, _Alloc>::
+      _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+		    std::forward_iterator_tag)
+      {
+	const size_type __len = std::distance(__first, __last);
+
+	if (__len > capacity())
+	  {
+	    pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
+	    std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			  _M_get_Tp_allocator());
+	    _M_deallocate(this->_M_impl._M_start,
+			  this->_M_impl._M_end_of_storage
+			  - this->_M_impl._M_start);
+	    this->_M_impl._M_start = __tmp;
+	    this->_M_impl._M_finish = this->_M_impl._M_start + __len;
+	    this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
+	  }
+	else if (size() >= __len)
+	  _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
+	else
+	  {
+	    _ForwardIterator __mid = __first;
+	    std::advance(__mid, size());
+	    std::copy(__first, __mid, this->_M_impl._M_start);
+	    this->_M_impl._M_finish =
+	      std::__uninitialized_copy_a(__mid, __last,
+					  this->_M_impl._M_finish,
+					  _M_get_Tp_allocator());
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      typename vector<_Tp, _Alloc>::iterator
+      vector<_Tp, _Alloc>::
+      emplace(iterator __position, _Args&&... __args)
+      {
+	const size_type __n = __position - begin();
+	if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
+	    && __position == end())
+	  {
+	    this->_M_impl.construct(this->_M_impl._M_finish,
+				    std::forward<_Args>(__args)...);
+	    ++this->_M_impl._M_finish;
+	  }
+	else
+	  _M_insert_aux(__position, std::forward<_Args>(__args)...);
+	return iterator(this->_M_impl._M_start + __n);
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename... _Args>
+      void
+      vector<_Tp, _Alloc>::
+      _M_insert_aux(iterator __position, _Args&&... __args)
+#else
+  template<typename _Tp, typename _Alloc>
+    void
+    vector<_Tp, _Alloc>::
+    _M_insert_aux(iterator __position, const _Tp& __x)
+#endif
+    {
+      if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+	{
+	  this->_M_impl.construct(this->_M_impl._M_finish,
+				  _GLIBCXX_MOVE(*(this->_M_impl._M_finish
+						  - 1)));
+	  ++this->_M_impl._M_finish;
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+	  _Tp __x_copy = __x;
+#endif
+	  _GLIBCXX_MOVE_BACKWARD3(__position.base(),
+				  this->_M_impl._M_finish - 2,
+				  this->_M_impl._M_finish - 1);
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+	  *__position = __x_copy;
+#else
+	  *__position = _Tp(std::forward<_Args>(__args)...);
+#endif
+	}
+      else
+	{
+	  const size_type __len =
+	    _M_check_len(size_type(1), "vector::_M_insert_aux");
+	  const size_type __elems_before = __position - begin();
+	  pointer __new_start(this->_M_allocate(__len));
+	  pointer __new_finish(__new_start);
+	  __try
+	    {
+	      // The order of the three operations is dictated by the C++0x
+	      // case, where the moves could alter a new element belonging
+	      // to the existing vector.  This is an issue only for callers
+	      // taking the element by const lvalue ref (see 23.1/13).
+	      this->_M_impl.construct(__new_start + __elems_before,
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+				      std::forward<_Args>(__args)...);
+#else
+	                              __x);
+#endif
+	      __new_finish = 0;
+
+	      __new_finish =
+		std::__uninitialized_move_a(this->_M_impl._M_start,
+					    __position.base(), __new_start,
+					    _M_get_Tp_allocator());
+	      ++__new_finish;
+
+	      __new_finish =
+		std::__uninitialized_move_a(__position.base(),
+					    this->_M_impl._M_finish,
+					    __new_finish,
+					    _M_get_Tp_allocator());
+	    }
+          __catch(...)
+	    {
+	      if (!__new_finish)
+		this->_M_impl.destroy(__new_start + __elems_before);
+	      else
+		std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
+	      _M_deallocate(__new_start, __len);
+	      __throw_exception_again;
+	    }
+	  std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			_M_get_Tp_allocator());
+	  _M_deallocate(this->_M_impl._M_start,
+			this->_M_impl._M_end_of_storage
+			- this->_M_impl._M_start);
+	  this->_M_impl._M_start = __new_start;
+	  this->_M_impl._M_finish = __new_finish;
+	  this->_M_impl._M_end_of_storage = __new_start + __len;
+	}
+    }
+
+  template<typename _Tp, typename _Alloc>
+    void
+    vector<_Tp, _Alloc>::
+    _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
+    {
+      if (__n != 0)
+	{
+	  if (size_type(this->_M_impl._M_end_of_storage
+			- this->_M_impl._M_finish) >= __n)
+	    {
+	      value_type __x_copy = __x;
+	      const size_type __elems_after = end() - __position;
+	      pointer __old_finish(this->_M_impl._M_finish);
+	      if (__elems_after > __n)
+		{
+		  std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+					      this->_M_impl._M_finish,
+					      this->_M_impl._M_finish,
+					      _M_get_Tp_allocator());
+		  this->_M_impl._M_finish += __n;
+		  _GLIBCXX_MOVE_BACKWARD3(__position.base(),
+					  __old_finish - __n, __old_finish);
+		  std::fill(__position.base(), __position.base() + __n,
+			    __x_copy);
+		}
+	      else
+		{
+		  std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+						__n - __elems_after,
+						__x_copy,
+						_M_get_Tp_allocator());
+		  this->_M_impl._M_finish += __n - __elems_after;
+		  std::__uninitialized_move_a(__position.base(), __old_finish,
+					      this->_M_impl._M_finish,
+					      _M_get_Tp_allocator());
+		  this->_M_impl._M_finish += __elems_after;
+		  std::fill(__position.base(), __old_finish, __x_copy);
+		}
+	    }
+	  else
+	    {
+	      const size_type __len =
+		_M_check_len(__n, "vector::_M_fill_insert");
+	      const size_type __elems_before = __position - begin();
+	      pointer __new_start(this->_M_allocate(__len));
+	      pointer __new_finish(__new_start);
+	      __try
+		{
+		  // See _M_insert_aux above.
+		  std::__uninitialized_fill_n_a(__new_start + __elems_before,
+						__n, __x,
+						_M_get_Tp_allocator());
+		  __new_finish = 0;
+
+		  __new_finish =
+		    std::__uninitialized_move_a(this->_M_impl._M_start,
+						__position.base(),
+						__new_start,
+						_M_get_Tp_allocator());
+		  __new_finish += __n;
+
+		  __new_finish =
+		    std::__uninitialized_move_a(__position.base(),
+						this->_M_impl._M_finish,
+						__new_finish,
+						_M_get_Tp_allocator());
+		}
+	      __catch(...)
+		{
+		  if (!__new_finish)
+		    std::_Destroy(__new_start + __elems_before,
+				  __new_start + __elems_before + __n,
+				  _M_get_Tp_allocator());
+		  else
+		    std::_Destroy(__new_start, __new_finish,
+				  _M_get_Tp_allocator());
+		  _M_deallocate(__new_start, __len);
+		  __throw_exception_again;
+		}
+	      std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			    _M_get_Tp_allocator());
+	      _M_deallocate(this->_M_impl._M_start,
+			    this->_M_impl._M_end_of_storage
+			    - this->_M_impl._M_start);
+	      this->_M_impl._M_start = __new_start;
+	      this->_M_impl._M_finish = __new_finish;
+	      this->_M_impl._M_end_of_storage = __new_start + __len;
+	    }
+	}
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    void
+    vector<_Tp, _Alloc>::
+    _M_default_append(size_type __n)
+    {
+      if (__n != 0)
+	{
+	  if (size_type(this->_M_impl._M_end_of_storage
+			- this->_M_impl._M_finish) >= __n)
+	    {
+	      std::__uninitialized_default_n_a(this->_M_impl._M_finish,
+					       __n, _M_get_Tp_allocator());
+	      this->_M_impl._M_finish += __n;
+	    }
+	  else
+	    {
+	      const size_type __len =
+		_M_check_len(__n, "vector::_M_default_append");
+	      const size_type __old_size = this->size();
+	      pointer __new_start(this->_M_allocate(__len));
+	      pointer __new_finish(__new_start);
+	      __try
+		{
+		  __new_finish =
+		    std::__uninitialized_move_a(this->_M_impl._M_start,
+						this->_M_impl._M_finish,
+						__new_start,
+						_M_get_Tp_allocator());
+		  std::__uninitialized_default_n_a(__new_finish, __n,
+						   _M_get_Tp_allocator());
+		  __new_finish += __n;
+		}
+	      __catch(...)
+		{
+		  std::_Destroy(__new_start, __new_finish,
+				_M_get_Tp_allocator());
+		  _M_deallocate(__new_start, __len);
+		  __throw_exception_again;
+		}
+	      std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			    _M_get_Tp_allocator());
+	      _M_deallocate(this->_M_impl._M_start,
+			    this->_M_impl._M_end_of_storage
+			    - this->_M_impl._M_start);
+	      this->_M_impl._M_start = __new_start;
+	      this->_M_impl._M_finish = __new_finish;
+	      this->_M_impl._M_end_of_storage = __new_start + __len;
+	    }
+	}
+    }
+#endif
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _InputIterator>
+      void
+      vector<_Tp, _Alloc>::
+      _M_range_insert(iterator __pos, _InputIterator __first,
+		      _InputIterator __last, std::input_iterator_tag)
+      {
+	for (; __first != __last; ++__first)
+	  {
+	    __pos = insert(__pos, *__first);
+	    ++__pos;
+	  }
+      }
+
+  template<typename _Tp, typename _Alloc>
+    template<typename _ForwardIterator>
+      void
+      vector<_Tp, _Alloc>::
+      _M_range_insert(iterator __position, _ForwardIterator __first,
+		      _ForwardIterator __last, std::forward_iterator_tag)
+      {
+	if (__first != __last)
+	  {
+	    const size_type __n = std::distance(__first, __last);
+	    if (size_type(this->_M_impl._M_end_of_storage
+			  - this->_M_impl._M_finish) >= __n)
+	      {
+		const size_type __elems_after = end() - __position;
+		pointer __old_finish(this->_M_impl._M_finish);
+		if (__elems_after > __n)
+		  {
+		    std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+						this->_M_impl._M_finish,
+						this->_M_impl._M_finish,
+						_M_get_Tp_allocator());
+		    this->_M_impl._M_finish += __n;
+		    _GLIBCXX_MOVE_BACKWARD3(__position.base(),
+					    __old_finish - __n, __old_finish);
+		    std::copy(__first, __last, __position);
+		  }
+		else
+		  {
+		    _ForwardIterator __mid = __first;
+		    std::advance(__mid, __elems_after);
+		    std::__uninitialized_copy_a(__mid, __last,
+						this->_M_impl._M_finish,
+						_M_get_Tp_allocator());
+		    this->_M_impl._M_finish += __n - __elems_after;
+		    std::__uninitialized_move_a(__position.base(),
+						__old_finish,
+						this->_M_impl._M_finish,
+						_M_get_Tp_allocator());
+		    this->_M_impl._M_finish += __elems_after;
+		    std::copy(__first, __mid, __position);
+		  }
+	      }
+	    else
+	      {
+		const size_type __len =
+		  _M_check_len(__n, "vector::_M_range_insert");
+		pointer __new_start(this->_M_allocate(__len));
+		pointer __new_finish(__new_start);
+		__try
+		  {
+		    __new_finish =
+		      std::__uninitialized_move_a(this->_M_impl._M_start,
+						  __position.base(),
+						  __new_start,
+						  _M_get_Tp_allocator());
+		    __new_finish =
+		      std::__uninitialized_copy_a(__first, __last,
+						  __new_finish,
+						  _M_get_Tp_allocator());
+		    __new_finish =
+		      std::__uninitialized_move_a(__position.base(),
+						  this->_M_impl._M_finish,
+						  __new_finish,
+						  _M_get_Tp_allocator());
+		  }
+		__catch(...)
+		  {
+		    std::_Destroy(__new_start, __new_finish,
+				  _M_get_Tp_allocator());
+		    _M_deallocate(__new_start, __len);
+		    __throw_exception_again;
+		  }
+		std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+			      _M_get_Tp_allocator());
+		_M_deallocate(this->_M_impl._M_start,
+			      this->_M_impl._M_end_of_storage
+			      - this->_M_impl._M_start);
+		this->_M_impl._M_start = __new_start;
+		this->_M_impl._M_finish = __new_finish;
+		this->_M_impl._M_end_of_storage = __new_start + __len;
+	      }
+	  }
+      }
+
+
+  // vector<bool>
+
+  template<typename _Alloc>
+    void
+    vector<bool, _Alloc>::
+    reserve(size_type __n)
+    {
+      if (__n > this->max_size())
+	__throw_length_error(__N("vector::reserve"));
+      if (this->capacity() < __n)
+	{
+	  _Bit_type* __q = this->_M_allocate(__n);
+	  this->_M_impl._M_finish = _M_copy_aligned(begin(), end(),
+						    iterator(__q, 0));
+	  this->_M_deallocate();
+	  this->_M_impl._M_start = iterator(__q, 0);
+	  this->_M_impl._M_end_of_storage = (__q + (__n + int(_S_word_bit) - 1)
+					     / int(_S_word_bit));
+	}
+    }
+
+  template<typename _Alloc>
+    void
+    vector<bool, _Alloc>::
+    _M_fill_insert(iterator __position, size_type __n, bool __x)
+    {
+      if (__n == 0)
+	return;
+      if (capacity() - size() >= __n)
+	{
+	  std::copy_backward(__position, end(),
+			     this->_M_impl._M_finish + difference_type(__n));
+	  std::fill(__position, __position + difference_type(__n), __x);
+	  this->_M_impl._M_finish += difference_type(__n);
+	}
+      else
+	{
+	  const size_type __len = 
+	    _M_check_len(__n, "vector<bool>::_M_fill_insert");
+	  _Bit_type * __q = this->_M_allocate(__len);
+	  iterator __i = _M_copy_aligned(begin(), __position,
+					 iterator(__q, 0));
+	  std::fill(__i, __i + difference_type(__n), __x);
+	  this->_M_impl._M_finish = std::copy(__position, end(),
+					      __i + difference_type(__n));
+	  this->_M_deallocate();
+	  this->_M_impl._M_end_of_storage = (__q + ((__len
+						     + int(_S_word_bit) - 1)
+						    / int(_S_word_bit)));
+	  this->_M_impl._M_start = iterator(__q, 0);
+	}
+    }
+
+  template<typename _Alloc>
+    template<typename _ForwardIterator>
+      void
+      vector<bool, _Alloc>::
+      _M_insert_range(iterator __position, _ForwardIterator __first, 
+		      _ForwardIterator __last, std::forward_iterator_tag)
+      {
+	if (__first != __last)
+	  {
+	    size_type __n = std::distance(__first, __last);
+	    if (capacity() - size() >= __n)
+	      {
+		std::copy_backward(__position, end(),
+				   this->_M_impl._M_finish
+				   + difference_type(__n));
+		std::copy(__first, __last, __position);
+		this->_M_impl._M_finish += difference_type(__n);
+	      }
+	    else
+	      {
+		const size_type __len =
+		  _M_check_len(__n, "vector<bool>::_M_insert_range");
+		_Bit_type * __q = this->_M_allocate(__len);
+		iterator __i = _M_copy_aligned(begin(), __position,
+					       iterator(__q, 0));
+		__i = std::copy(__first, __last, __i);
+		this->_M_impl._M_finish = std::copy(__position, end(), __i);
+		this->_M_deallocate();
+		this->_M_impl._M_end_of_storage = (__q
+						   + ((__len
+						       + int(_S_word_bit) - 1)
+						      / int(_S_word_bit)));
+		this->_M_impl._M_start = iterator(__q, 0);
+	      }
+	  }
+      }
+
+  template<typename _Alloc>
+    void
+    vector<bool, _Alloc>::
+    _M_insert_aux(iterator __position, bool __x)
+    {
+      if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+	{
+	  std::copy_backward(__position, this->_M_impl._M_finish, 
+			     this->_M_impl._M_finish + 1);
+	  *__position = __x;
+	  ++this->_M_impl._M_finish;
+	}
+      else
+	{
+	  const size_type __len =
+	    _M_check_len(size_type(1), "vector<bool>::_M_insert_aux");
+	  _Bit_type * __q = this->_M_allocate(__len);
+	  iterator __i = _M_copy_aligned(begin(), __position,
+					 iterator(__q, 0));
+	  *__i++ = __x;
+	  this->_M_impl._M_finish = std::copy(__position, end(), __i);
+	  this->_M_deallocate();
+	  this->_M_impl._M_end_of_storage = (__q + ((__len
+						     + int(_S_word_bit) - 1)
+						    / int(_S_word_bit)));
+	  this->_M_impl._M_start = iterator(__q, 0);
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Alloc>
+    size_t
+    hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>::
+    operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>& __b) const
+    {
+      size_t __hash = 0;
+      using _GLIBCXX_STD_C::_S_word_bit;
+      using _GLIBCXX_STD_C::_Bit_type;
+
+      const size_t __words = __b.size() / _S_word_bit;
+      if (__words)
+	{
+	  const size_t __clength = __words * sizeof(_Bit_type);
+	  __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength);
+	}
+
+      const size_t __extrabits = __b.size() % _S_word_bit;
+      if (__extrabits)
+	{
+	  _Bit_type __hiword = *__b._M_impl._M_finish._M_p;
+	  __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits);
+
+	  const size_t __clength
+	    = (__extrabits + __CHAR_BIT__ - 1) / __CHAR_BIT__;
+	  if (__words)
+	    __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash);
+	  else
+	    __hash = std::_Hash_impl::hash(&__hiword, __clength);
+	}
+
+      return __hash;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif /* _VECTOR_TCC */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cassert b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cassert
new file mode 100644
index 000000000..4f481ae10
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cassert
@@ -0,0 +1,33 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 19.2  Assertions
+//
+
+// No include guards on this header...
+
+#pragma GCC system_header
+
+#include_next <assert.h>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cctype
new file mode 100644
index 000000000..1ac473de7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cctype
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: <ccytpe>
+//
+
+#ifndef _GLIBCXX_CCTYPE
+#define _GLIBCXX_CCTYPE 1
+
+#pragma GCC system_header
+
+#include_next <ctype.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cerrno b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cerrno
new file mode 100644
index 000000000..b8e44df3c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cerrno
@@ -0,0 +1,50 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cerrno
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the "*.h" implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c errno.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std.
+ */
+
+//
+// ISO C++ 14882: 19.3  Error numbers
+//
+
+#ifndef _GLIBCXX_CERRNO
+#define _GLIBCXX_CERRNO 1
+
+#pragma GCC system_header
+
+#include_next <errno.h>
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef errno
+#define errno errno
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cfloat b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cfloat
new file mode 100644
index 000000000..97359c068
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cfloat
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CFLOAT
+#define _GLIBCXX_CFLOAT 1
+
+#pragma GCC system_header
+
+#include_next <float.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ciso646 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ciso646
new file mode 100644
index 000000000..12ad3b99c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ciso646
@@ -0,0 +1,32 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ciso646
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the "*.h" implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c iso646.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std.
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/climits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/climits
new file mode 100644
index 000000000..e338b6f32
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/climits
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CLIMITS
+#define _GLIBCXX_CLIMITS 1
+
+#pragma GCC system_header
+
+#include_next <limits.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/clocale b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/clocale
new file mode 100644
index 000000000..7ea60f0e8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/clocale
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CLOCALE
+#define _GLIBCXX_CLOCALE 1
+
+#pragma GCC system_header
+
+#include_next <locale.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cmath
new file mode 100644
index 000000000..1e9ade9f0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cmath
@@ -0,0 +1,119 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 26.5  C library
+//
+
+#ifndef _GLIBCXX_CMATH
+#define _GLIBCXX_CMATH 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#include_next <math.h>
+
+// Get rid of those macros defined in <math.h> in lieu of real functions.
+#undef abs
+#undef div
+#undef acos
+#undef asin
+#undef atan
+#undef atan2
+#undef ceil
+#undef cos
+#undef cosh
+#undef exp
+#undef fabs
+#undef floor
+#undef fmod
+#undef frexp
+#undef ldexp
+#undef log
+#undef log10
+#undef modf
+#undef pow
+#undef sin
+#undef sinh
+#undef sqrt
+#undef tan
+#undef tanh
+
+#undef fpclassify
+#undef isfinite
+#undef isinf
+#undef isnan
+#undef isnormal
+#undef signbit
+#undef isgreater
+#undef isgreaterequal
+#undef isless
+#undef islessequal
+#undef islessgreater
+#undef isunordered
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  inline double
+  abs(double __x)
+  { return __builtin_fabs(__x); }
+
+  inline float
+  abs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  abs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+#if _GLIBCXX_HAVE_MODFF
+  inline float
+  modf(float __x, float* __iptr) { return modff(__x, __iptr); }
+#else
+  inline float
+  modf(float __x, float* __iptr)
+  {
+    double __tmp;
+    double __res = modf(static_cast<double>(__x), &__tmp);
+    *__iptr = static_cast<float>(__tmp);
+    return __res;
+  }
+#endif
+
+#if _GLIBCXX_HAVE_MODFL
+  inline long double
+  modf(long double __x, long double* __iptr) { return modfl(__x, __iptr); }
+#else
+  inline long double
+  modf(long double __x, long double* __iptr)
+  {
+    double __tmp;
+    double __res = modf(static_cast<double>(__x), &__tmp);
+    * __iptr = static_cast<long double>(__tmp);
+    return __res;
+  }
+#endif
+}
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csetjmp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csetjmp
new file mode 100644
index 000000000..1da475850
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csetjmp
@@ -0,0 +1,44 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSETJMP
+#define _GLIBCXX_CSETJMP 1
+
+#pragma GCC system_header
+
+#include_next <setjmp.h>
+
+// Get rid of those macros defined in <setjmp.h> in lieu of real functions.
+#undef longjmp
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef setjmp
+#define setjmp(env) std::setjmp (env)
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csignal b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csignal
new file mode 100644
index 000000000..60243f03e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/csignal
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSIGNAL
+#define _GLIBCXX_CSIGNAL 1
+
+#pragma GCC system_header
+
+#include_next <signal.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdarg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdarg
new file mode 100644
index 000000000..78b73027c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdarg
@@ -0,0 +1,37 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTDARG
+#define _GLIBCXX_CSTDARG 1
+
+#pragma GCC system_header
+
+#undef __need___va_list
+#include_next <stdarg.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstddef b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstddef
new file mode 100644
index 000000000..36d18adec
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstddef
@@ -0,0 +1,40 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 18.1  Types
+//
+
+#ifndef _GLIBCXX_CSTDDEF
+#define _GLIBCXX_CSTDDEF 1
+
+#pragma GCC system_header
+
+#define __need_size_t
+#define __need_ptrdiff_t
+#define __need_NULL
+#define __need_offsetof
+#include_next <stddef.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdio b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdio
new file mode 100644
index 000000000..6245566d6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdio
@@ -0,0 +1,79 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.8.2  C Library files
+//
+
+#ifndef _GLIBCXX_CSTDIO
+#define _GLIBCXX_CSTDIO 1
+
+#pragma GCC system_header
+
+#include_next <stdio.h>
+
+// Get rid of those macros defined in <stdio.h> in lieu of real functions.
+#undef clearerr
+#undef fclose
+#undef feof
+#undef ferror
+#undef fflush
+#undef fgetc
+#undef fgetpos
+#undef fgets
+#undef fopen
+#undef fprintf
+#undef fputc
+#undef fputs
+#undef fread
+#undef freopen
+#undef fscanf
+#undef fseek
+#undef fsetpos
+#undef ftell
+#undef fwrite
+#undef getc
+#undef getchar
+#undef gets
+#undef perror
+#undef printf
+#undef putc
+#undef putchar
+#undef puts
+#undef remove
+#undef rename
+#undef rewind
+#undef scanf
+#undef setbuf
+#undef setvbuf
+#undef sprintf
+#undef sscanf
+#undef tmpfile
+#undef tmpnam
+#undef ungetc
+#undef vfprintf
+#undef vprintf
+#undef vsprintf
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdlib b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdlib
new file mode 100644
index 000000000..93dd5da11
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstdlib
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTDLIB
+#define _GLIBCXX_CSTDLIB 1
+
+#pragma GCC system_header
+
+#include_next <stdlib.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstring b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstring
new file mode 100644
index 000000000..27471691d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cstring
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTRING
+#define _GLIBCXX_CSTRING 1
+
+#pragma GCC system_header
+
+#include_next <string.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ctime b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ctime
new file mode 100644
index 000000000..3d1371baf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/ctime
@@ -0,0 +1,36 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 20.5  Date and time
+//
+
+#ifndef _GLIBCXX_CTIME
+#define _GLIBCXX_CTIME 1
+
+#pragma GCC system_header
+
+#include_next <time.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwchar b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwchar
new file mode 100644
index 000000000..2324b5b96
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwchar
@@ -0,0 +1,57 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 21.4
+//
+
+#ifndef _GLIBCXX_CWCHAR
+#define _GLIBCXX_CWCHAR 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <cstddef>
+#include <ctime>
+
+#if _GLIBCXX_HAVE_WCHAR_H
+#include_next <wchar.h>
+#endif
+
+// Need to do a bit of trickery here with mbstate_t as char_traits
+// assumes it is in wchar.h, regardless of wchar_t specializations.
+#ifndef _GLIBCXX_HAVE_MBSTATE_T
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  extern "C"
+  {
+    typedef struct
+    {
+      int __fill[6];
+    } mbstate_t;
+  }
+}
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwctype
new file mode 100644
index 000000000..48f64f99b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c/cwctype
@@ -0,0 +1,40 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2000, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: <cwctype>
+//
+
+#ifndef _GLIBCXX_CWCTYPE
+#define _GLIBCXX_CWCTYPE 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_WCTYPE_H
+#include_next <wctype.h>
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/assert.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/assert.h
new file mode 100644
index 000000000..d5697eb60
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/assert.h
@@ -0,0 +1,29 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file assert.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cassert>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/complex.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/complex.h
new file mode 100644
index 000000000..7dc5926f1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/complex.h
@@ -0,0 +1,42 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file complex.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <ccomplex>
+#else
+# if _GLIBCXX_HAVE_COMPLEX_H
+#  include_next <complex.h>
+# endif
+#endif
+
+#ifndef _GLIBCXX_COMPLEX_H
+#define _GLIBCXX_COMPLEX_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/ctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/ctype.h
new file mode 100644
index 000000000..49ee9fd14
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/ctype.h
@@ -0,0 +1,50 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ctype.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cctype>
+
+#ifndef _GLIBCXX_CTYPE_H
+#define _GLIBCXX_CTYPE_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::isalnum;
+using std::isalpha;
+using std::iscntrl;
+using std::isdigit;
+using std::isgraph;
+using std::islower;
+using std::isprint;
+using std::ispunct;
+using std::isspace;
+using std::isupper;
+using std::isxdigit;
+using std::tolower;
+using std::toupper;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/errno.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/errno.h
new file mode 100644
index 000000000..1dbf49416
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/errno.h
@@ -0,0 +1,34 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file errno.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cerrno>
+
+#ifndef _GLIBCXX_ERRNO_H
+#define _GLIBCXX_ERRNO_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/fenv.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/fenv.h
new file mode 100644
index 000000000..2096e393c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/fenv.h
@@ -0,0 +1,81 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file fenv.h
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_FENV_H
+#define _GLIBCXX_FENV_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#if _GLIBCXX_HAVE_FENV_H
+# include_next <fenv.h>
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#if _GLIBCXX_USE_C99_FENV_TR1
+
+#undef feclearexcept
+#undef fegetexceptflag
+#undef feraiseexcept
+#undef fesetexceptflag
+#undef fetestexcept
+#undef fegetround
+#undef fesetround
+#undef fegetenv
+#undef feholdexcept
+#undef fesetenv
+#undef feupdateenv
+
+namespace std
+{
+  // types
+  using ::fenv_t;
+  using ::fexcept_t;
+
+  // functions
+  using ::feclearexcept;
+  using ::fegetexceptflag;
+  using ::feraiseexcept;
+  using ::fesetexceptflag;
+  using ::fetestexcept;
+
+  using ::fegetround;
+  using ::fesetround;
+
+  using ::fegetenv;
+  using ::feholdexcept;
+  using ::fesetenv;
+  using ::feupdateenv;
+} // namespace
+
+#endif // _GLIBCXX_USE_C99_FENV_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_FENV_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/float.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/float.h
new file mode 100644
index 000000000..e65386fe6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/float.h
@@ -0,0 +1,34 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file float.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cfloat>
+
+#ifndef _GLIBCXX_FLOAT_H
+#define _GLIBCXX_FLOAT_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/inttypes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/inttypes.h
new file mode 100644
index 000000000..54c220c2f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/inttypes.h
@@ -0,0 +1,91 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file inttypes.h
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_INTTYPES_H
+#define _GLIBCXX_INTTYPES_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+// For 8.11.1/1 (see C99, Note 184)
+# if _GLIBCXX_HAVE_INTTYPES_H
+#  ifndef __STDC_FORMAT_MACROS
+#   define _UNDEF__STDC_FORMAT_MACROS
+#   define __STDC_FORMAT_MACROS
+#  endif
+#  include_next <inttypes.h>
+#  ifdef _UNDEF__STDC_FORMAT_MACROS
+#   undef __STDC_FORMAT_MACROS
+#   undef _UNDEF__STDC_FORMAT_MACROS
+#  endif
+# endif
+
+#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1
+
+namespace std
+{
+  // types
+  using ::imaxdiv_t;
+
+  // functions
+  using ::imaxabs;
+
+  // May collide with _Longlong abs(_Longlong), and is not described
+  // anywhere outside the synopsis.  Likely, a defect.
+  //
+  // intmax_t abs(intmax_t)
+
+  using ::imaxdiv;
+
+  // Likewise, with lldiv_t div(_Longlong, _Longlong).
+  //
+  // imaxdiv_t div(intmax_t, intmax_t)
+
+  using ::strtoimax;
+  using ::strtoumax;
+
+#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1
+  using ::wcstoimax;
+  using ::wcstoumax;
+#endif
+} // namespace
+
+#endif _GLIBCXX_USE_C99_INTTYPES_TR1
+
+#else
+
+# if _GLIBCXX_HAVE_INTTYPES_H
+#  include_next <inttypes.h>
+# endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_INTTYPES_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/iso646.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/iso646.h
new file mode 100644
index 000000000..c2ad80689
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/iso646.h
@@ -0,0 +1,34 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file iso646.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <ciso646>
+
+#ifndef _GLIBCXX_ISO646_H
+#define _GLIBCXX_ISO646_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/limits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/limits.h
new file mode 100644
index 000000000..95d91f0e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/limits.h
@@ -0,0 +1,34 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file limits.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <climits>
+
+#ifndef _GLIBCXX_LIMITS_H
+#define _GLIBCXX_LIMITS_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/locale.h
new file mode 100644
index 000000000..c0d4ae1cf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/locale.h
@@ -0,0 +1,40 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file locale.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <clocale>
+
+#ifndef _GLIBCXX_LOCALE_H
+#define _GLIBCXX_LOCALE_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::lconv;
+using std::setlocale;
+using std::localeconv;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/math.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/math.h
new file mode 100644
index 000000000..a7518d240
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/math.h
@@ -0,0 +1,77 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file math.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cmath>
+
+#ifndef _GLIBCXX_MATH_H
+#define _GLIBCXX_MATH_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::abs;
+using std::acos;
+using std::asin;
+using std::atan;
+using std::atan2;
+using std::cos;
+using std::sin;
+using std::tan;
+using std::cosh;
+using std::sinh;
+using std::tanh;
+using std::exp;
+using std::frexp;
+using std::ldexp;
+using std::log;
+using std::log10;
+using std::modf;
+using std::pow;
+using std::sqrt;
+using std::ceil;
+using std::fabs;
+using std::floor;
+using std::fmod;
+
+#if _GLIBCXX_USE_C99
+using std::fpclassify;
+using std::isfinite;
+using std::isinf;
+using std::isnan;
+using std::isnormal;
+using std::signbit;
+using std::isgreater;
+using std::isgreaterequal;
+using std::isless;
+using std::islessequal;
+using std::islessgreater;
+using std::isunordered;
+#endif
+
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/setjmp.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/setjmp.h
new file mode 100644
index 000000000..9293551f1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/setjmp.h
@@ -0,0 +1,39 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file setjmp.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <csetjmp>
+
+#ifndef _GLIBCXX_SETJMP_H
+#define _GLIBCXX_SETJMP_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::jmp_buf;
+using std::longjmp;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/signal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/signal.h
new file mode 100644
index 000000000..47697ca38
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/signal.h
@@ -0,0 +1,40 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file signal.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <csignal>
+
+#ifndef _GLIBCXX_SIGNAL_H
+#define _GLIBCXX_SIGNAL_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::sig_atomic_t;
+using std::raise;
+using std::signal;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdarg.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdarg.h
new file mode 100644
index 000000000..dc5e9d4e2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdarg.h
@@ -0,0 +1,38 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdarg.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cstdarg>
+
+#ifndef _GLIBCXX_STDARG_H
+#define _GLIBCXX_STDARG_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::va_list;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdbool.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdbool.h
new file mode 100644
index 000000000..27485d99d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdbool.h
@@ -0,0 +1,42 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdbool.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <cstdbool>
+#else
+# if _GLIBCXX_HAVE_STDBOOL_H
+#  include_next <stdbool.h>
+# endif
+#endif
+
+#ifndef _GLIBCXX_STDBOOL_H
+#define _GLIBCXX_STDBOOL_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stddef.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stddef.h
new file mode 100644
index 000000000..589f1e2dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stddef.h
@@ -0,0 +1,39 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stddef.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cstddef>
+
+#ifndef _GLIBCXX_STDDEF_H
+#define _GLIBCXX_STDDEF_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::size_t;
+using std::ptrdiff_t;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdint.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdint.h
new file mode 100644
index 000000000..32538c6c8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdint.h
@@ -0,0 +1,110 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdint.h
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_STDINT_H
+#define _GLIBCXX_STDINT_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+// For 8.22.1/1 (see C99, Notes 219, 220, 222)
+# if _GLIBCXX_HAVE_STDINT_H
+#  ifndef __STDC_LIMIT_MACROS
+#   define _UNDEF__STDC_LIMIT_MACROS
+#   define __STDC_LIMIT_MACROS
+#  endif
+#  ifndef __STDC_CONSTANT_MACROS
+#   define _UNDEF__STDC_CONSTANT_MACROS
+#   define __STDC_CONSTANT_MACROS
+#  endif
+#  include_next <stdint.h>
+#  ifdef _UNDEF__STDC_LIMIT_MACROS
+#   undef __STDC_LIMIT_MACROS
+#   undef _UNDEF__STDC_LIMIT_MACROS
+#  endif
+#  ifdef _UNDEF__STDC_CONSTANT_MACROS
+#   undef __STDC_CONSTANT_MACROS
+#   undef _UNDEF__STDC_CONSTANT_MACROS
+#  endif
+# endif
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std
+{
+  using ::int8_t;
+  using ::int16_t;
+  using ::int32_t;
+  using ::int64_t;
+
+  using ::int_fast8_t;
+  using ::int_fast16_t;
+  using ::int_fast32_t;
+  using ::int_fast64_t;
+
+  using ::int_least8_t;
+  using ::int_least16_t;
+  using ::int_least32_t;
+  using ::int_least64_t;
+
+  using ::intmax_t;
+  using ::intptr_t;
+  
+  using ::uint8_t;
+  using ::uint16_t;
+  using ::uint32_t;
+  using ::uint64_t;
+
+  using ::uint_fast8_t;
+  using ::uint_fast16_t;
+  using ::uint_fast32_t;
+  using ::uint_fast64_t;
+
+  using ::uint_least8_t;
+  using ::uint_least16_t;
+  using ::uint_least32_t;
+  using ::uint_least64_t;
+
+  using ::uintmax_t;
+  using ::uintptr_t;
+} // namespace
+
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
+
+#else
+
+# if _GLIBCXX_HAVE_STDINT_H
+#  include_next <stdint.h>
+# endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_STDINT_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdio.h
new file mode 100644
index 000000000..51a447457
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdio.h
@@ -0,0 +1,86 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdio.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cstdio>
+
+#ifndef _GLIBCXX_STDIO_H
+#define _GLIBCXX_STDIO_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::FILE;
+using std::fpos_t;
+
+using std::remove;
+using std::rename;
+using std::tmpfile;
+using std::tmpnam;
+using std::fclose;
+using std::fflush;
+using std::fopen;
+using std::freopen;
+using std::setbuf;
+using std::setvbuf;
+using std::fprintf;
+using std::fscanf;
+using std::printf;
+using std::scanf;
+using std::snprintf;
+using std::sprintf;
+using std::sscanf;
+using std::vfprintf;
+using std::vfscanf;
+using std::vprintf;
+using std::vscanf;
+using std::vsnprintf;
+using std::vsprintf;
+using std::vsscanf;
+using std::fgetc;
+using std::fgets;
+using std::fputc;
+using std::fputs;
+using std::getc;
+using std::getchar;
+using std::gets;
+using std::putc;
+using std::putchar;
+using std::puts;
+using std::ungetc;
+using std::fread;
+using std::fwrite;
+using std::fgetpos;
+using std::fseek;
+using std::fsetpos;
+using std::ftell;
+using std::rewind;
+using std::clearerr;
+using std::feof;
+using std::ferror;
+using std::perror;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdlib.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdlib.h
new file mode 100644
index 000000000..a8c788ac2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/stdlib.h
@@ -0,0 +1,68 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdlib.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cstdlib>
+
+#ifndef _GLIBCXX_STDLIB_H
+#define _GLIBCXX_STDLIB_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::div_t;
+using std::ldiv_t;
+
+using std::abort;
+using std::abs;
+using std::atexit;
+using std::atof;
+using std::atoi;
+using std::atol;
+using std::bsearch;
+using std::calloc;
+using std::div;
+using std::exit;
+using std::free;
+using std::getenv;
+using std::labs;
+using std::ldiv;
+using std::malloc;
+using std::mblen;
+using std::mbstowcs;
+using std::mbtowc;
+using std::qsort;
+using std::rand;
+using std::realloc;
+using std::srand;
+using std::strtod;
+using std::strtol;
+using std::strtoul;
+using std::system;
+using std::wcstombs;
+using std::wctomb;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/string.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/string.h
new file mode 100644
index 000000000..fdb92a8b0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/string.h
@@ -0,0 +1,59 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file string.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cstring>
+
+#ifndef _GLIBCXX_STRING_H
+#define _GLIBCXX_STRING_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::memcpy;
+using std::memmove;
+using std::strcpy;
+using std::strncpy;
+using std::strcat;
+using std::strncat;
+using std::memcmp;
+using std::strcmp;
+using std::strcoll;
+using std::strncmp;
+using std::strxfrm;
+using std::memchr;
+using std::strchr;
+using std::strcspn;
+using std::strpbrk;
+using std::strrchr;
+using std::strspn;
+using std::strstr;
+using std::strtok;
+using std::memset;
+using std::strerror;
+using std::strlen;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/tgmath.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/tgmath.h
new file mode 100644
index 000000000..3d84d37a9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/tgmath.h
@@ -0,0 +1,42 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tgmath.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <bits/c++config.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <ctgmath>
+#else
+# if _GLIBCXX_HAVE_TGMATH_H
+#  include_next <tgmath.h>
+# endif
+#endif
+
+#ifndef _GLIBCXX_TGMATH_H
+#define _GLIBCXX_TGMATH_H 1
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/time.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/time.h
new file mode 100644
index 000000000..96390df78
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/time.h
@@ -0,0 +1,61 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file time.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <ctime>
+
+#ifndef _GLIBCXX_TIME_H
+#define _GLIBCXX_TIME_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+// Get rid of those macros defined in <time.h> in lieu of real functions.
+#undef clock
+#undef difftime
+#undef mktime
+#undef time
+#undef asctime
+#undef ctime
+#undef gmtime
+#undef localtime
+#undef strftime
+
+using std::clock_t;
+using std::time_t;
+using std::tm;
+
+using std::clock;
+using std::difftime;
+using std::mktime;
+using std::time;
+using std::asctime;
+using std::ctime;
+using std::gmtime;
+using std::localtime;
+using std::strftime;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wchar.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wchar.h
new file mode 100644
index 000000000..c4c05a121
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wchar.h
@@ -0,0 +1,116 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2003, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file wchar.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cwchar>
+
+#ifndef _GLIBCXX_WCHAR_H
+#define _GLIBCXX_WCHAR_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::mbstate_t;
+
+#if _GLIBCXX_USE_WCHAR_T
+using std::wint_t;
+
+using std::btowc;
+using std::wctob;
+using std::fgetwc;
+using std::fgetwc;
+using std::fgetws;
+using std::fputwc;
+using std::fputws;
+using std::fwide;
+using std::fwprintf;
+using std::fwscanf;
+using std::swprintf;
+using std::swscanf;
+using std::vfwprintf;
+#if _GLIBCXX_HAVE_VFWSCANF
+using std::vfwscanf;
+#endif
+using std::vswprintf;
+#if _GLIBCXX_HAVE_VSWSCANF
+using std::vswscanf;
+#endif
+using std::vwprintf;
+#if _GLIBCXX_HAVE_VWSCANF
+using std::vwscanf;
+#endif
+using std::wprintf;
+using std::wscanf;
+using std::getwc;
+using std::getwchar;
+using std::mbsinit;
+using std::mbrlen;
+using std::mbrtowc;
+using std::mbsrtowcs;
+using std::wcsrtombs;
+using std::putwc;
+using std::putwchar;
+using std::ungetwc;
+using std::wcrtomb;
+using std::wcstod;
+#if _GLIBCXX_HAVE_WCSTOF
+using std::wcstof;
+#endif
+using std::wcstol;
+using std::wcstoul;
+using std::wcscpy;
+using std::wcsncpy;
+using std::wcscat;
+using std::wcsncat;
+using std::wcscmp;
+using std::wcscoll;
+using std::wcsncmmp;
+using std::wcsxfrm;
+using std::wcschr;
+using std::wcscspn;
+using std::wcslen;
+using std::wcspbrk;
+using std::wcsrchr;
+using std::wcsspn;
+using std::wcsstr;
+using std::wcstok;
+using std::wmemchr;
+using std::wmemcmp;
+using std::wmemcpy;
+using std::wmemmove;
+using std::wmemset;
+using std::wcsftime;
+
+#if _GLIBCXX_USE_C99
+using std::wcstold;
+using std::wcstoll;
+using std::wcstoull;
+#endif
+
+#endif  //_GLIBCXX_USE_WCHAR_T
+
+#endif 
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wctype.h
new file mode 100644
index 000000000..33ae5b62f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_compatibility/wctype.h
@@ -0,0 +1,56 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file wctype.h
+ *  This is a Standard C++ Library header.
+ */
+
+#include <cwctype>
+
+#ifndef _GLIBCXX_CWCTYPE_H
+#define _GLIBCXX_CWCTYPE_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+using std::wctype_t;
+using std::wctrans_t;
+using std::iswalpha;
+using std::iswupper;
+using std::iswlower;
+using std::iswdigit;
+using std::iswxdigit;
+using std::iswalnum;
+using std::iswspace;
+using std::iswpunct;
+using std::iswprint;
+using std::iswgraph;
+using std::iswcntrl;
+using std::iswctype;
+using std::towctrans;
+using std::towlower;
+using std::towupper;
+using std::wctrans;
+using std::wctype;
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cassert b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cassert
new file mode 100644
index 000000000..dc8af688d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cassert
@@ -0,0 +1,45 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cassert
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c assert.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 19.2  Assertions
+//
+
+// No include guards on this header...
+
+#pragma GCC system_header
+
+#include <assert.h>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ccomplex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ccomplex
new file mode 100644
index 000000000..b1117e8d4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ccomplex
@@ -0,0 +1,44 @@
+// <ccomplex> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ccomplex
+ *  This is a Standard C++ Library header.
+ */
+
+#pragma GCC system_header
+
+#ifndef _GLIBCXX_CCOMPLEX
+#define _GLIBCXX_CCOMPLEX 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#endif
+
+#if defined(_GLIBCXX_INCLUDE_AS_TR1)
+#  error C++0x header cannot be included from TR1 header
+#endif
+
+#include <complex>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cctype
new file mode 100644
index 000000000..0fed691ec
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cctype
@@ -0,0 +1,96 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cctype
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c ctype.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: <ccytpe>
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <ctype.h>
+
+#ifndef _GLIBCXX_CCTYPE
+#define _GLIBCXX_CCTYPE 1
+
+// Get rid of those macros defined in <ctype.h> in lieu of real functions.
+#undef isalnum
+#undef isalpha
+#undef iscntrl
+#undef isdigit
+#undef isgraph
+#undef islower
+#undef isprint
+#undef ispunct
+#undef isspace
+#undef isupper
+#undef isxdigit
+#undef tolower
+#undef toupper
+
+namespace std
+{
+  using ::isalnum;
+  using ::isalpha;
+  using ::iscntrl;
+  using ::isdigit;
+  using ::isgraph;
+  using ::islower;
+  using ::isprint;
+  using ::ispunct;
+  using ::isspace;
+  using ::isupper;
+  using ::isxdigit;
+  using ::tolower;
+  using ::toupper;
+} // namespace std
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#ifdef _GLIBCXX_USE_C99_CTYPE_TR1
+
+#undef isblank
+
+namespace std
+{
+  using ::isblank;
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99_CTYPE_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cerrno b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cerrno
new file mode 100644
index 000000000..0451cd9aa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cerrno
@@ -0,0 +1,53 @@
+// The -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cerrno
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c errno.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 19.3  Error numbers
+//
+
+#pragma GCC system_header
+
+#include <errno.h>
+
+#ifndef _GLIBCXX_CERRNO
+#define _GLIBCXX_CERRNO 1
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef errno
+#define errno errno
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfenv b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfenv
new file mode 100644
index 000000000..35010a0ba
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfenv
@@ -0,0 +1,84 @@
+// <cfenv> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cfenv
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_CFENV
+#define _GLIBCXX_CFENV 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_FENV_H
+# include <fenv.h>
+#endif
+
+#ifdef _GLIBCXX_USE_C99_FENV_TR1
+
+#undef feclearexcept
+#undef fegetexceptflag
+#undef feraiseexcept
+#undef fesetexceptflag
+#undef fetestexcept
+#undef fegetround
+#undef fesetround
+#undef fegetenv
+#undef feholdexcept
+#undef fesetenv
+#undef feupdateenv
+
+namespace std
+{
+  // types
+  using ::fenv_t;
+  using ::fexcept_t;
+
+  // functions
+  using ::feclearexcept;
+  using ::fegetexceptflag;
+  using ::feraiseexcept;
+  using ::fesetexceptflag;
+  using ::fetestexcept;
+
+  using ::fegetround;
+  using ::fesetround;
+
+  using ::fegetenv;
+  using ::feholdexcept;
+  using ::fesetenv;
+  using ::feupdateenv;
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99_FENV_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_CFENV
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfloat b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfloat
new file mode 100644
index 000000000..1be81d34d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cfloat
@@ -0,0 +1,60 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cfloat
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c float.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#pragma GCC system_header
+
+#include <float.h>
+
+#ifndef _GLIBCXX_CFLOAT
+#define _GLIBCXX_CFLOAT 1
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#  if defined(_GLIBCXX_INCLUDE_AS_TR1)
+#    error C++0x header cannot be included from TR1 header
+#  endif
+#  ifndef DECIMAL_DIG
+#    define DECIMAL_DIG __DECIMAL_DIG__
+#  endif
+#  ifndef FLT_EVAL_METHOD
+#    define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#  endif
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cinttypes b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cinttypes
new file mode 100644
index 000000000..df733407b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cinttypes
@@ -0,0 +1,87 @@
+// <cinttypes> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cinttypes
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_CINTTYPES
+#define _GLIBCXX_CINTTYPES 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <cstdint>
+
+// For 8.11.1/1 (see C99, Note 184)
+#if _GLIBCXX_HAVE_INTTYPES_H
+# ifndef __STDC_FORMAT_MACROS
+#  define _UNDEF__STDC_FORMAT_MACROS
+#  define __STDC_FORMAT_MACROS
+# endif
+# include <inttypes.h>
+# ifdef _UNDEF__STDC_FORMAT_MACROS
+#  undef __STDC_FORMAT_MACROS
+#  undef _UNDEF__STDC_FORMAT_MACROS
+# endif
+#endif
+
+#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1
+
+namespace std
+{
+  // types
+  using ::imaxdiv_t;
+
+  // functions
+  using ::imaxabs;
+
+  // May collide with _Longlong abs(_Longlong), and is not described
+  // anywhere outside the synopsis.  Likely, a defect.
+  //
+  // intmax_t abs(intmax_t)
+
+  using ::imaxdiv;
+
+  // Likewise, with lldiv_t div(_Longlong, _Longlong).
+  //
+  // imaxdiv_t div(intmax_t, intmax_t)
+
+  using ::strtoimax;
+  using ::strtoumax;
+
+#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1
+  using ::wcstoimax;
+  using ::wcstoumax;
+#endif
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99_INTTYPES_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_CINTTYPES
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ciso646 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ciso646
new file mode 100644
index 000000000..55594aed8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ciso646
@@ -0,0 +1,34 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ciso646
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c iso646.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/climits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/climits
new file mode 100644
index 000000000..f080fcbcb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/climits
@@ -0,0 +1,60 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/climits
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c limits.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#pragma GCC system_header
+
+#include <limits.h>
+
+#ifndef _GLIBCXX_CLIMITS
+#define _GLIBCXX_CLIMITS 1
+
+#ifndef LLONG_MIN
+#define LLONG_MIN (-__LONG_LONG_MAX__ - 1)
+#endif
+
+#ifndef LLONG_MAX
+#define LLONG_MAX __LONG_LONG_MAX__
+#endif
+
+#ifndef ULLONG_MAX
+#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1)
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/clocale b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/clocale
new file mode 100644
index 000000000..3f16bffe6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/clocale
@@ -0,0 +1,60 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file clocale
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c locale.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <locale.h>
+
+#ifndef _GLIBCXX_CLOCALE
+#define _GLIBCXX_CLOCALE 1
+
+// Get rid of those macros defined in <locale.h> in lieu of real functions.
+#undef setlocale
+#undef localeconv
+
+namespace std
+{
+  using ::lconv;
+  using ::setlocale;
+  using ::localeconv;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cmath
new file mode 100644
index 000000000..a333eb583
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cmath
@@ -0,0 +1,1666 @@
+// -*- C++ -*- C forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cmath
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c math.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 26.5  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+#include <math.h>
+
+#ifndef _GLIBCXX_CMATH
+#define _GLIBCXX_CMATH 1
+
+// Get rid of those macros defined in <math.h> in lieu of real functions.
+#undef abs
+#undef div
+#undef acos
+#undef asin
+#undef atan
+#undef atan2
+#undef ceil
+#undef cos
+#undef cosh
+#undef exp
+#undef fabs
+#undef floor
+#undef fmod
+#undef frexp
+#undef ldexp
+#undef log
+#undef log10
+#undef modf
+#undef pow
+#undef sin
+#undef sinh
+#undef sqrt
+#undef tan
+#undef tanh
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  inline double
+  abs(double __x)
+  { return __builtin_fabs(__x); }
+
+  inline float
+  abs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  abs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    abs(_Tp __x)
+    { return __builtin_fabs(__x); }
+
+  using ::acos;
+
+  inline float
+  acos(float __x)
+  { return __builtin_acosf(__x); }
+
+  inline long double
+  acos(long double __x)
+  { return __builtin_acosl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    acos(_Tp __x)
+    { return __builtin_acos(__x); }
+
+  using ::asin;
+
+  inline float
+  asin(float __x)
+  { return __builtin_asinf(__x); }
+
+  inline long double
+  asin(long double __x)
+  { return __builtin_asinl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   double>::__type
+    asin(_Tp __x)
+    { return __builtin_asin(__x); }
+
+  using ::atan;
+
+  inline float
+  atan(float __x)
+  { return __builtin_atanf(__x); }
+
+  inline long double
+  atan(long double __x)
+  { return __builtin_atanl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    atan(_Tp __x)
+    { return __builtin_atan(__x); }
+
+  using ::atan2;
+
+  inline float
+  atan2(float __y, float __x)
+  { return __builtin_atan2f(__y, __x); }
+
+  inline long double
+  atan2(long double __y, long double __x)
+  { return __builtin_atan2l(__y, __x); }
+
+  template<typename _Tp, typename _Up>
+    inline
+    typename __gnu_cxx::__promote_2<
+    typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
+				    && __is_arithmetic<_Up>::__value,
+				    _Tp>::__type, _Up>::__type
+    atan2(_Tp __y, _Up __x)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return atan2(__type(__y), __type(__x));
+    }
+
+  using ::ceil;
+
+  inline float
+  ceil(float __x)
+  { return __builtin_ceilf(__x); }
+
+  inline long double
+  ceil(long double __x)
+  { return __builtin_ceill(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    ceil(_Tp __x)
+    { return __builtin_ceil(__x); }
+
+  using ::cos;
+
+  inline float
+  cos(float __x)
+  { return __builtin_cosf(__x); }
+
+  inline long double
+  cos(long double __x)
+  { return __builtin_cosl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    cos(_Tp __x)
+    { return __builtin_cos(__x); }
+
+  using ::cosh;
+
+  inline float
+  cosh(float __x)
+  { return __builtin_coshf(__x); }
+
+  inline long double
+  cosh(long double __x)
+  { return __builtin_coshl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    cosh(_Tp __x)
+    { return __builtin_cosh(__x); }
+
+  using ::exp;
+
+  inline float
+  exp(float __x)
+  { return __builtin_expf(__x); }
+
+  inline long double
+  exp(long double __x)
+  { return __builtin_expl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    exp(_Tp __x)
+    { return __builtin_exp(__x); }
+
+  using ::fabs;
+
+  inline float
+  fabs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  fabs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    fabs(_Tp __x)
+    { return __builtin_fabs(__x); }
+
+  using ::floor;
+
+  inline float
+  floor(float __x)
+  { return __builtin_floorf(__x); }
+
+  inline long double
+  floor(long double __x)
+  { return __builtin_floorl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    floor(_Tp __x)
+    { return __builtin_floor(__x); }
+
+  using ::fmod;
+
+  inline float
+  fmod(float __x, float __y)
+  { return __builtin_fmodf(__x, __y); }
+
+  inline long double
+  fmod(long double __x, long double __y)
+  { return __builtin_fmodl(__x, __y); }
+
+  using ::frexp;
+
+  inline float
+  frexp(float __x, int* __exp)
+  { return __builtin_frexpf(__x, __exp); }
+
+  inline long double
+  frexp(long double __x, int* __exp)
+  { return __builtin_frexpl(__x, __exp); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    frexp(_Tp __x, int* __exp)
+    { return __builtin_frexp(__x, __exp); }
+
+  using ::ldexp;
+
+  inline float
+  ldexp(float __x, int __exp)
+  { return __builtin_ldexpf(__x, __exp); }
+
+  inline long double
+  ldexp(long double __x, int __exp)
+  { return __builtin_ldexpl(__x, __exp); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+  ldexp(_Tp __x, int __exp)
+  { return __builtin_ldexp(__x, __exp); }
+
+  using ::log;
+
+  inline float
+  log(float __x)
+  { return __builtin_logf(__x); }
+
+  inline long double
+  log(long double __x)
+  { return __builtin_logl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    log(_Tp __x)
+    { return __builtin_log(__x); }
+
+  using ::log10;
+
+  inline float
+  log10(float __x)
+  { return __builtin_log10f(__x); }
+
+  inline long double
+  log10(long double __x)
+  { return __builtin_log10l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    log10(_Tp __x)
+    { return __builtin_log10(__x); }
+
+  using ::modf;
+
+  inline float
+  modf(float __x, float* __iptr)
+  { return __builtin_modff(__x, __iptr); }
+
+  inline long double
+  modf(long double __x, long double* __iptr)
+  { return __builtin_modfl(__x, __iptr); }
+
+  using ::pow;
+
+  inline float
+  pow(float __x, float __y)
+  { return __builtin_powf(__x, __y); }
+
+  inline long double
+  pow(long double __x, long double __y)
+  { return __builtin_powl(__x, __y); }
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 550. What should the return type of pow(float,int) be?
+  inline double
+  pow(double __x, int __i)
+  { return __builtin_powi(__x, __i); }
+
+  inline float
+  pow(float __x, int __n)
+  { return __builtin_powif(__x, __n); }
+
+  inline long double
+  pow(long double __x, int __n)
+  { return __builtin_powil(__x, __n); }
+#endif
+
+  template<typename _Tp, typename _Up>
+    inline
+    typename __gnu_cxx::__promote_2<
+    typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
+				    && __is_arithmetic<_Up>::__value,
+				    _Tp>::__type, _Up>::__type
+    pow(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return pow(__type(__x), __type(__y));
+    }
+
+  using ::sin;
+
+  inline float
+  sin(float __x)
+  { return __builtin_sinf(__x); }
+
+  inline long double
+  sin(long double __x)
+  { return __builtin_sinl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sin(_Tp __x)
+    { return __builtin_sin(__x); }
+
+  using ::sinh;
+
+  inline float
+  sinh(float __x)
+  { return __builtin_sinhf(__x); }
+
+  inline long double
+  sinh(long double __x)
+  { return __builtin_sinhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sinh(_Tp __x)
+    { return __builtin_sinh(__x); }
+
+  using ::sqrt;
+
+  inline float
+  sqrt(float __x)
+  { return __builtin_sqrtf(__x); }
+
+  inline long double
+  sqrt(long double __x)
+  { return __builtin_sqrtl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sqrt(_Tp __x)
+    { return __builtin_sqrt(__x); }
+
+  using ::tan;
+
+  inline float
+  tan(float __x)
+  { return __builtin_tanf(__x); }
+
+  inline long double
+  tan(long double __x)
+  { return __builtin_tanl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    tan(_Tp __x)
+    { return __builtin_tan(__x); }
+
+  using ::tanh;
+
+  inline float
+  tanh(float __x)
+  { return __builtin_tanhf(__x); }
+
+  inline long double
+  tanh(long double __x)
+  { return __builtin_tanhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    tanh(_Tp __x)
+    { return __builtin_tanh(__x); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99_MATH
+#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+
+// These are possible macros imported from C99-land.
+#undef fpclassify
+#undef isfinite
+#undef isinf
+#undef isnan
+#undef isnormal
+#undef signbit
+#undef isgreater
+#undef isgreaterequal
+#undef isless
+#undef islessequal
+#undef islessgreater
+#undef isunordered
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  inline int
+  fpclassify(float __x)
+  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				FP_SUBNORMAL, FP_ZERO, __x); }
+
+  inline int
+  fpclassify(double __x)
+  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				FP_SUBNORMAL, FP_ZERO, __x); }
+
+  inline int
+  fpclassify(long double __x)
+  { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				FP_SUBNORMAL, FP_ZERO, __x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   int>::__type
+    fpclassify(_Tp __x)
+    { return __x != 0 ? FP_NORMAL : FP_ZERO; }
+
+  inline bool
+  isfinite(float __x)
+  { return __builtin_isfinite(__x); }
+
+  inline bool
+  isfinite(double __x)
+  { return __builtin_isfinite(__x); }
+
+  inline bool
+  isfinite(long double __x)
+  { return __builtin_isfinite(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   bool>::__type
+    isfinite(_Tp __x)
+    { return true; }
+
+  inline bool
+  isinf(float __x)
+  { return __builtin_isinf(__x); }
+
+  inline bool
+  isinf(double __x)
+  { return __builtin_isinf(__x); }
+
+  inline bool
+  isinf(long double __x)
+  { return __builtin_isinf(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   bool>::__type
+    isinf(_Tp __x)
+    { return false; }
+
+  inline bool
+  isnan(float __x)
+  { return __builtin_isnan(__x); }
+
+  inline bool
+  isnan(double __x)
+  { return __builtin_isnan(__x); }
+
+  inline bool
+  isnan(long double __x)
+  { return __builtin_isnan(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   bool>::__type
+    isnan(_Tp __x)
+    { return false; }
+
+  inline bool
+  isnormal(float __x)
+  { return __builtin_isnormal(__x); }
+
+  inline bool
+  isnormal(double __x)
+  { return __builtin_isnormal(__x); }
+
+  inline bool
+  isnormal(long double __x)
+  { return __builtin_isnormal(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   bool>::__type
+    isnormal(_Tp __x)
+    { return __x != 0 ? true : false; }
+
+  inline bool
+  signbit(float __x)
+  { return __builtin_signbit(__x); }
+
+  inline bool
+  signbit(double __x)
+  { return __builtin_signbit(__x); }
+
+  inline bool
+  signbit(long double __x)
+  { return __builtin_signbit(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   bool>::__type
+    signbit(_Tp __x)
+    { return __x < 0 ? true : false; }
+
+  inline bool
+  isgreater(float __x, float __y)
+  { return __builtin_isgreater(__x, __y); }
+
+  inline bool
+  isgreater(double __x, double __y)
+  { return __builtin_isgreater(__x, __y); }
+
+  inline bool
+  isgreater(long double __x, long double __y)
+  { return __builtin_isgreater(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    isgreater(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_isgreater(__type(__x), __type(__y));
+    }
+
+  inline bool
+  isgreaterequal(float __x, float __y)
+  { return __builtin_isgreaterequal(__x, __y); }
+
+  inline bool
+  isgreaterequal(double __x, double __y)
+  { return __builtin_isgreaterequal(__x, __y); }
+
+  inline bool
+  isgreaterequal(long double __x, long double __y)
+  { return __builtin_isgreaterequal(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    isgreaterequal(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_isgreaterequal(__type(__x), __type(__y));
+    }
+
+  inline bool
+  isless(float __x, float __y)
+  { return __builtin_isless(__x, __y); }
+
+  inline bool
+  isless(double __x, double __y)
+  { return __builtin_isless(__x, __y); }
+
+  inline bool
+  isless(long double __x, long double __y)
+  { return __builtin_isless(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    isless(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_isless(__type(__x), __type(__y));
+    }
+
+  inline bool
+  islessequal(float __x, float __y)
+  { return __builtin_islessequal(__x, __y); }
+
+  inline bool
+  islessequal(double __x, double __y)
+  { return __builtin_islessequal(__x, __y); }
+
+  inline bool
+  islessequal(long double __x, long double __y)
+  { return __builtin_islessequal(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    islessequal(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_islessequal(__type(__x), __type(__y));
+    }
+
+  inline bool
+  islessgreater(float __x, float __y)
+  { return __builtin_islessgreater(__x, __y); }
+
+  inline bool
+  islessgreater(double __x, double __y)
+  { return __builtin_islessgreater(__x, __y); }
+
+  inline bool
+  islessgreater(long double __x, long double __y)
+  { return __builtin_islessgreater(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    islessgreater(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_islessgreater(__type(__x), __type(__y));
+    }
+
+  inline bool
+  isunordered(float __x, float __y)
+  { return __builtin_isunordered(__x, __y); }
+
+  inline bool
+  isunordered(double __x, double __y)
+  { return __builtin_isunordered(__x, __y); }
+
+  inline bool
+  isunordered(long double __x, long double __y)
+  { return __builtin_isunordered(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename
+    __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
+			    && __is_arithmetic<_Up>::__value), bool>::__type
+    isunordered(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return __builtin_isunordered(__type(__x), __type(__y));
+    }
+
+#else
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    fpclassify(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				  FP_SUBNORMAL, FP_ZERO, __type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isfinite(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isfinite(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isinf(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isinf(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnan(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnan(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnormal(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnormal(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    signbit(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_signbit(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreaterequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreaterequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isless(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isless(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    islessequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    islessgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isunordered(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isunordered(__type(__f1), __type(__f2));
+    }
+
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#ifdef _GLIBCXX_USE_C99_MATH_TR1
+
+#undef acosh
+#undef acoshf
+#undef acoshl
+#undef asinh
+#undef asinhf
+#undef asinhl
+#undef atanh
+#undef atanhf
+#undef atanhl
+#undef cbrt
+#undef cbrtf
+#undef cbrtl
+#undef copysign
+#undef copysignf
+#undef copysignl
+#undef erf
+#undef erff
+#undef erfl
+#undef erfc
+#undef erfcf
+#undef erfcl
+#undef exp2
+#undef exp2f
+#undef exp2l
+#undef expm1
+#undef expm1f
+#undef expm1l
+#undef fdim
+#undef fdimf
+#undef fdiml
+#undef fma
+#undef fmaf
+#undef fmal
+#undef fmax
+#undef fmaxf
+#undef fmaxl
+#undef fmin
+#undef fminf
+#undef fminl
+#undef hypot
+#undef hypotf
+#undef hypotl
+#undef ilogb
+#undef ilogbf
+#undef ilogbl
+#undef lgamma
+#undef lgammaf
+#undef lgammal
+#undef llrint
+#undef llrintf
+#undef llrintl
+#undef llround
+#undef llroundf
+#undef llroundl
+#undef log1p
+#undef log1pf
+#undef log1pl
+#undef log2
+#undef log2f
+#undef log2l
+#undef logb
+#undef logbf
+#undef logbl
+#undef lrint
+#undef lrintf
+#undef lrintl
+#undef lround
+#undef lroundf
+#undef lroundl
+#undef nan
+#undef nanf
+#undef nanl
+#undef nearbyint
+#undef nearbyintf
+#undef nearbyintl
+#undef nextafter
+#undef nextafterf
+#undef nextafterl
+#undef nexttoward
+#undef nexttowardf
+#undef nexttowardl
+#undef remainder
+#undef remainderf
+#undef remainderl
+#undef remquo
+#undef remquof
+#undef remquol
+#undef rint
+#undef rintf
+#undef rintl
+#undef round
+#undef roundf
+#undef roundl
+#undef scalbln
+#undef scalblnf
+#undef scalblnl
+#undef scalbn
+#undef scalbnf
+#undef scalbnl
+#undef tgamma
+#undef tgammaf
+#undef tgammal
+#undef trunc
+#undef truncf
+#undef truncl
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // types
+  using ::double_t;
+  using ::float_t;
+
+  // functions
+  using ::acosh;
+  using ::acoshf;
+  using ::acoshl;
+
+  using ::asinh;
+  using ::asinhf;
+  using ::asinhl;
+
+  using ::atanh;
+  using ::atanhf;
+  using ::atanhl;
+
+  using ::cbrt;
+  using ::cbrtf;
+  using ::cbrtl;
+
+  using ::copysign;
+  using ::copysignf;
+  using ::copysignl;
+
+  using ::erf;
+  using ::erff;
+  using ::erfl;
+
+  using ::erfc;
+  using ::erfcf;
+  using ::erfcl;
+
+  using ::exp2;
+  using ::exp2f;
+  using ::exp2l;
+
+  using ::expm1;
+  using ::expm1f;
+  using ::expm1l;
+
+  using ::fdim;
+  using ::fdimf;
+  using ::fdiml;
+
+  using ::fma;
+  using ::fmaf;
+  using ::fmal;
+
+  using ::fmax;
+  using ::fmaxf;
+  using ::fmaxl;
+
+  using ::fmin;
+  using ::fminf;
+  using ::fminl;
+
+  using ::hypot;
+  using ::hypotf;
+  using ::hypotl;
+
+  using ::ilogb;
+  using ::ilogbf;
+  using ::ilogbl;
+
+  using ::lgamma;
+  using ::lgammaf;
+  using ::lgammal;
+
+  using ::llrint;
+  using ::llrintf;
+  using ::llrintl;
+
+  using ::llround;
+  using ::llroundf;
+  using ::llroundl;
+
+  using ::log1p;
+  using ::log1pf;
+  using ::log1pl;
+
+  using ::log2;
+  using ::log2f;
+  using ::log2l;
+
+  using ::logb;
+  using ::logbf;
+  using ::logbl;
+
+  using ::lrint;
+  using ::lrintf;
+  using ::lrintl;
+
+  using ::lround;
+  using ::lroundf;
+  using ::lroundl;
+
+  using ::nan;
+  using ::nanf;
+  using ::nanl;
+
+  using ::nearbyint;
+  using ::nearbyintf;
+  using ::nearbyintl;
+
+  using ::nextafter;
+  using ::nextafterf;
+  using ::nextafterl;
+
+  using ::nexttoward;
+  using ::nexttowardf;
+  using ::nexttowardl;
+
+  using ::remainder;
+  using ::remainderf;
+  using ::remainderl;
+
+  using ::remquo;
+  using ::remquof;
+  using ::remquol;
+
+  using ::rint;
+  using ::rintf;
+  using ::rintl;
+
+  using ::round;
+  using ::roundf;
+  using ::roundl;
+
+  using ::scalbln;
+  using ::scalblnf;
+  using ::scalblnl;
+
+  using ::scalbn;
+  using ::scalbnf;
+  using ::scalbnl;
+
+  using ::tgamma;
+  using ::tgammaf;
+  using ::tgammal;
+
+  using ::trunc;
+  using ::truncf;
+  using ::truncl;
+
+  /// Additional overloads.
+  inline float
+  acosh(float __x)
+  { return __builtin_acoshf(__x); }
+
+  inline long double
+  acosh(long double __x)
+  { return __builtin_acoshl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    acosh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return acosh(__type(__x));
+    }
+
+  inline float
+  asinh(float __x)
+  { return __builtin_asinhf(__x); }
+
+  inline long double
+  asinh(long double __x)
+  { return __builtin_asinhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    asinh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return asinh(__type(__x));
+    }
+
+  inline float
+  atanh(float __x)
+  { return __builtin_atanhf(__x); }
+
+  inline long double
+  atanh(long double __x)
+  { return __builtin_atanhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    atanh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return atanh(__type(__x));
+    }
+
+  inline float
+  cbrt(float __x)
+  { return __builtin_cbrtf(__x); }
+
+  inline long double
+  cbrt(long double __x)
+  { return __builtin_cbrtl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    cbrt(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return cbrt(__type(__x));
+    }
+
+  inline float
+  copysign(float __x, float __y)
+  { return __builtin_copysignf(__x, __y); }
+
+  inline long double
+  copysign(long double __x, long double __y)
+  { return __builtin_copysignl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    copysign(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return copysign(__type(__x), __type(__y));
+    }
+
+  inline float
+  erf(float __x)
+  { return __builtin_erff(__x); }
+
+  inline long double
+  erf(long double __x)
+  { return __builtin_erfl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    erf(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return erf(__type(__x));
+    }
+
+  inline float
+  erfc(float __x)
+  { return __builtin_erfcf(__x); }
+
+  inline long double
+  erfc(long double __x)
+  { return __builtin_erfcl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    erfc(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return erfc(__type(__x));
+    }
+
+  inline float
+  exp2(float __x)
+  { return __builtin_exp2f(__x); }
+
+  inline long double
+  exp2(long double __x)
+  { return __builtin_exp2l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    exp2(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return exp2(__type(__x));
+    }
+
+  inline float
+  expm1(float __x)
+  { return __builtin_expm1f(__x); }
+
+  inline long double
+  expm1(long double __x)
+  { return __builtin_expm1l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    expm1(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return expm1(__type(__x));
+    }
+
+  inline float
+  fdim(float __x, float __y)
+  { return __builtin_fdimf(__x, __y); }
+
+  inline long double
+  fdim(long double __x, long double __y)
+  { return __builtin_fdiml(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fdim(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fdim(__type(__x), __type(__y));
+    }
+
+  inline float
+  fma(float __x, float __y, float __z)
+  { return __builtin_fmaf(__x, __y, __z); }
+
+  inline long double
+  fma(long double __x, long double __y, long double __z)
+  { return __builtin_fmal(__x, __y, __z); }
+
+  template<typename _Tp, typename _Up, typename _Vp>
+    inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
+    fma(_Tp __x, _Up __y, _Vp __z)
+    {
+      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
+      return fma(__type(__x), __type(__y), __type(__z));
+    }
+
+  inline float
+  fmax(float __x, float __y)
+  { return __builtin_fmaxf(__x, __y); }
+
+  inline long double
+  fmax(long double __x, long double __y)
+  { return __builtin_fmaxl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fmax(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fmax(__type(__x), __type(__y));
+    }
+
+  inline float
+  fmin(float __x, float __y)
+  { return __builtin_fminf(__x, __y); }
+
+  inline long double
+  fmin(long double __x, long double __y)
+  { return __builtin_fminl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fmin(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fmin(__type(__x), __type(__y));
+    }
+
+  inline float
+  hypot(float __x, float __y)
+  { return __builtin_hypotf(__x, __y); }
+
+  inline long double
+  hypot(long double __x, long double __y)
+  { return __builtin_hypotl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    hypot(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return hypot(__type(__x), __type(__y));
+    }
+
+  inline int
+  ilogb(float __x)
+  { return __builtin_ilogbf(__x); }
+
+  inline int
+  ilogb(long double __x)
+  { return __builtin_ilogbl(__x); }
+
+  template<typename _Tp>
+    inline int
+    ilogb(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return ilogb(__type(__x));
+    }
+
+  inline float
+  lgamma(float __x)
+  { return __builtin_lgammaf(__x); }
+
+  inline long double
+  lgamma(long double __x)
+  { return __builtin_lgammal(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    lgamma(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lgamma(__type(__x));
+    }
+
+  inline long long
+  llrint(float __x)
+  { return __builtin_llrintf(__x); }
+
+  inline long long
+  llrint(long double __x)
+  { return __builtin_llrintl(__x); }
+
+  template<typename _Tp>
+    inline long long
+    llrint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return llrint(__type(__x));
+    }
+
+  inline long long
+  llround(float __x)
+  { return __builtin_llroundf(__x); }
+
+  inline long long
+  llround(long double __x)
+  { return __builtin_llroundl(__x); }
+
+  template<typename _Tp>
+    inline long long
+    llround(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return llround(__type(__x));
+    }
+
+  inline float
+  log1p(float __x)
+  { return __builtin_log1pf(__x); }
+
+  inline long double
+  log1p(long double __x)
+  { return __builtin_log1pl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    log1p(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return log1p(__type(__x));
+    }
+
+  // DR 568.
+  inline float
+  log2(float __x)
+  { return __builtin_log2f(__x); }
+
+  inline long double
+  log2(long double __x)
+  { return __builtin_log2l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    log2(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return log2(__type(__x));
+    }
+
+  inline float
+  logb(float __x)
+  { return __builtin_logbf(__x); }
+
+  inline long double
+  logb(long double __x)
+  { return __builtin_logbl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    logb(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return logb(__type(__x));
+    }
+
+  inline long
+  lrint(float __x)
+  { return __builtin_lrintf(__x); }
+
+  inline long
+  lrint(long double __x)
+  { return __builtin_lrintl(__x); }
+
+  template<typename _Tp>
+    inline long
+    lrint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lrint(__type(__x));
+    }
+
+  inline long
+  lround(float __x)
+  { return __builtin_lroundf(__x); }
+
+  inline long
+  lround(long double __x)
+  { return __builtin_lroundl(__x); }
+
+  template<typename _Tp>
+    inline long
+    lround(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lround(__type(__x));
+    }
+
+  inline float
+  nearbyint(float __x)
+  { return __builtin_nearbyintf(__x); }
+
+  inline long double
+  nearbyint(long double __x)
+  { return __builtin_nearbyintl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    nearbyint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return nearbyint(__type(__x));
+    }
+
+  inline float
+  nextafter(float __x, float __y)
+  { return __builtin_nextafterf(__x, __y); }
+
+  inline long double
+  nextafter(long double __x, long double __y)
+  { return __builtin_nextafterl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    nextafter(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return nextafter(__type(__x), __type(__y));
+    }
+
+  inline float
+  nexttoward(float __x, long double __y)
+  { return __builtin_nexttowardf(__x, __y); }
+
+  inline long double
+  nexttoward(long double __x, long double __y)
+  { return __builtin_nexttowardl(__x, __y); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    nexttoward(_Tp __x, long double __y)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return nexttoward(__type(__x), __y);
+    }
+
+  inline float
+  remainder(float __x, float __y)
+  { return __builtin_remainderf(__x, __y); }
+
+  inline long double
+  remainder(long double __x, long double __y)
+  { return __builtin_remainderl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    remainder(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return remainder(__type(__x), __type(__y));
+    }
+
+  inline float
+  remquo(float __x, float __y, int* __pquo)
+  { return __builtin_remquof(__x, __y, __pquo); }
+
+  inline long double
+  remquo(long double __x, long double __y, int* __pquo)
+  { return __builtin_remquol(__x, __y, __pquo); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    remquo(_Tp __x, _Up __y, int* __pquo)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return remquo(__type(__x), __type(__y), __pquo);
+    }
+
+  inline float
+  rint(float __x)
+  { return __builtin_rintf(__x); }
+
+  inline long double
+  rint(long double __x)
+  { return __builtin_rintl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    rint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return rint(__type(__x));
+    }
+
+  inline float
+  round(float __x)
+  { return __builtin_roundf(__x); }
+
+  inline long double
+  round(long double __x)
+  { return __builtin_roundl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    round(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return round(__type(__x));
+    }
+
+  inline float
+  scalbln(float __x, long __ex)
+  { return __builtin_scalblnf(__x, __ex); }
+
+  inline long double
+  scalbln(long double __x, long __ex)
+  { return __builtin_scalblnl(__x, __ex); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    scalbln(_Tp __x, long __ex)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return scalbln(__type(__x), __ex);
+    }
+ 
+  inline float
+  scalbn(float __x, int __ex)
+  { return __builtin_scalbnf(__x, __ex); }
+
+  inline long double
+  scalbn(long double __x, int __ex)
+  { return __builtin_scalbnl(__x, __ex); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    scalbn(_Tp __x, int __ex)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return scalbn(__type(__x), __ex);
+    }
+
+  inline float
+  tgamma(float __x)
+  { return __builtin_tgammaf(__x); }
+
+  inline long double
+  tgamma(long double __x)
+  { return __builtin_tgammal(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    tgamma(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return tgamma(__type(__x));
+    }
+ 
+  inline float
+  trunc(float __x)
+  { return __builtin_truncf(__x); }
+
+  inline long double
+  trunc(long double __x)
+  { return __builtin_truncl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    trunc(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return trunc(__type(__x));
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _GLIBCXX_USE_C99_MATH_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csetjmp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csetjmp
new file mode 100644
index 000000000..2832801e4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csetjmp
@@ -0,0 +1,63 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file csetjmp
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c setjmp.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <setjmp.h>
+
+#ifndef _GLIBCXX_CSETJMP
+#define _GLIBCXX_CSETJMP 1
+
+// Get rid of those macros defined in <setjmp.h> in lieu of real functions.
+#undef longjmp
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef setjmp
+#define setjmp(env) setjmp (env)
+#endif
+
+namespace std
+{
+  using ::jmp_buf;
+  using ::longjmp;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csignal b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csignal
new file mode 100644
index 000000000..98f0d6652
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/csignal
@@ -0,0 +1,59 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file csignal
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c signal.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <signal.h>
+
+#ifndef _GLIBCXX_CSIGNAL
+#define _GLIBCXX_CSIGNAL 1
+
+// Get rid of those macros defined in <signal.h> in lieu of real functions.
+#undef raise
+
+namespace std
+{
+  using ::sig_atomic_t;
+  using ::signal;
+  using ::raise;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdarg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdarg
new file mode 100644
index 000000000..fb27389bc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdarg
@@ -0,0 +1,59 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdarg
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdarg.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stdarg.h>
+
+#ifndef _GLIBCXX_CSTDARG
+#define _GLIBCXX_CSTDARG 1
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef va_end
+#define va_end(ap) va_end (ap)
+#endif
+
+namespace std
+{
+  using ::va_list;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdbool b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdbool
new file mode 100644
index 000000000..dd428f2d2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdbool
@@ -0,0 +1,44 @@
+// <cstdbool> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdbool
+ *  This is a Standard C++ Library header.
+ */
+
+#pragma GCC system_header
+
+#ifndef _GLIBCXX_CSTDBOOL
+#define _GLIBCXX_CSTDBOOL 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+#  include <bits/c++0x_warning.h>
+#else
+#  include <bits/c++config.h>
+#  if _GLIBCXX_HAVE_STDBOOL_H
+#    include <stdbool.h>
+#  endif
+#endif
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstddef b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstddef
new file mode 100644
index 000000000..d9a7383e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstddef
@@ -0,0 +1,44 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cstddef
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stddef.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.1  Types
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stddef.h>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdint b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdint
new file mode 100644
index 000000000..ce8143ea2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdint
@@ -0,0 +1,106 @@
+// <cstdint> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdint
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_CSTDINT
+#define _GLIBCXX_CSTDINT 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+
+// For 8.22.1/1 (see C99, Notes 219, 220, 222)
+#if _GLIBCXX_HAVE_STDINT_H
+# ifndef __STDC_LIMIT_MACROS
+#  define _UNDEF__STDC_LIMIT_MACROS
+#  define __STDC_LIMIT_MACROS
+# endif
+# ifndef __STDC_CONSTANT_MACROS
+#  define _UNDEF__STDC_CONSTANT_MACROS
+#  define __STDC_CONSTANT_MACROS
+# endif
+# include <stdint.h>
+# ifdef _UNDEF__STDC_LIMIT_MACROS
+#  undef __STDC_LIMIT_MACROS
+#  undef _UNDEF__STDC_LIMIT_MACROS
+# endif
+# ifdef _UNDEF__STDC_CONSTANT_MACROS
+#  undef __STDC_CONSTANT_MACROS
+#  undef _UNDEF__STDC_CONSTANT_MACROS
+# endif
+#endif
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std
+{
+  using ::int8_t;
+  using ::int16_t;
+  using ::int32_t;
+  using ::int64_t;
+
+  using ::int_fast8_t;
+  using ::int_fast16_t;
+  using ::int_fast32_t;
+  using ::int_fast64_t;
+
+  using ::int_least8_t;
+  using ::int_least16_t;
+  using ::int_least32_t;
+  using ::int_least64_t;
+
+  using ::intmax_t;
+  using ::intptr_t;
+  
+  using ::uint8_t;
+  using ::uint16_t;
+  using ::uint32_t;
+  using ::uint64_t;
+
+  using ::uint_fast8_t;
+  using ::uint_fast16_t;
+  using ::uint_fast32_t;
+  using ::uint_fast64_t;
+
+  using ::uint_least8_t;
+  using ::uint_least16_t;
+  using ::uint_least32_t;
+  using ::uint_least64_t;
+
+  using ::uintmax_t;
+  using ::uintptr_t;
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_CSTDINT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdio b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdio
new file mode 100644
index 000000000..049704d83
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdio
@@ -0,0 +1,185 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdio
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdio.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 27.8.2  C Library files
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stdio.h>
+
+#ifndef _GLIBCXX_CSTDIO
+#define _GLIBCXX_CSTDIO 1
+
+// Get rid of those macros defined in <stdio.h> in lieu of real functions.
+#undef clearerr
+#undef fclose
+#undef feof
+#undef ferror
+#undef fflush
+#undef fgetc
+#undef fgetpos
+#undef fgets
+#undef fopen
+#undef fprintf
+#undef fputc
+#undef fputs
+#undef fread
+#undef freopen
+#undef fscanf
+#undef fseek
+#undef fsetpos
+#undef ftell
+#undef fwrite
+#undef getc
+#undef getchar
+#undef gets
+#undef perror
+#undef printf
+#undef putc
+#undef putchar
+#undef puts
+#undef remove
+#undef rename
+#undef rewind
+#undef scanf
+#undef setbuf
+#undef setvbuf
+#undef sprintf
+#undef sscanf
+#undef tmpfile
+#undef tmpnam
+#undef ungetc
+#undef vfprintf
+#undef vprintf
+#undef vsprintf
+
+namespace std
+{
+  using ::FILE;
+  using ::fpos_t;
+
+  using ::clearerr;
+  using ::fclose;
+  using ::feof;
+  using ::ferror;
+  using ::fflush;
+  using ::fgetc;
+  using ::fgetpos;
+  using ::fgets;
+  using ::fopen;
+  using ::fprintf;
+  using ::fputc;
+  using ::fputs;
+  using ::fread;
+  using ::freopen;
+  using ::fscanf;
+  using ::fseek;
+  using ::fsetpos;
+  using ::ftell;
+  using ::fwrite;
+  using ::getc;
+  using ::getchar;
+  using ::gets;
+  using ::perror;
+  using ::printf;
+  using ::putc;
+  using ::putchar;
+  using ::puts;
+  using ::remove;
+  using ::rename;
+  using ::rewind;
+  using ::scanf;
+  using ::setbuf;
+  using ::setvbuf;
+  using ::sprintf;
+  using ::sscanf;
+  using ::tmpfile;
+  using ::tmpnam;
+  using ::ungetc;
+  using ::vfprintf;
+  using ::vprintf;
+  using ::vsprintf;
+} // namespace
+
+#if _GLIBCXX_USE_C99
+
+#undef snprintf
+#undef vfscanf
+#undef vscanf
+#undef vsnprintf
+#undef vsscanf
+
+namespace __gnu_cxx
+{
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" int
+  (snprintf)(char * __restrict, std::size_t, const char * __restrict, ...)
+  throw ();
+  extern "C" int
+  (vfscanf)(FILE * __restrict, const char * __restrict, __gnuc_va_list);
+  extern "C" int (vscanf)(const char * __restrict, __gnuc_va_list);
+  extern "C" int
+  (vsnprintf)(char * __restrict, std::size_t, const char * __restrict,
+	      __gnuc_va_list) throw ();
+  extern "C" int
+  (vsscanf)(const char * __restrict, const char * __restrict, __gnuc_va_list)
+  throw ();
+#endif
+
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::snprintf;
+  using ::vfscanf;
+  using ::vscanf;
+  using ::vsnprintf;
+  using ::vsscanf;
+#endif
+} // namespace __gnu_cxx
+
+namespace std
+{
+  using ::__gnu_cxx::snprintf;
+  using ::__gnu_cxx::vfscanf;
+  using ::__gnu_cxx::vscanf;
+  using ::__gnu_cxx::vsnprintf;
+  using ::__gnu_cxx::vsscanf;
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdlib b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdlib
new file mode 100644
index 000000000..aa7530d38
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstdlib
@@ -0,0 +1,255 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdlib
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdlib.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#ifndef _GLIBCXX_CSTDLIB
+#define _GLIBCXX_CSTDLIB 1
+
+#if !_GLIBCXX_HOSTED
+// The C standard does not require a freestanding implementation to
+// provide <stdlib.h>.  However, the C++ standard does still require
+// <cstdlib> -- but only the functionality mentioned in
+// [lib.support.start.term].
+
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+
+namespace std
+{
+  extern "C" void abort(void) throw () _GLIBCXX_NORETURN;
+  extern "C" int atexit(void (*)()) throw ();
+  extern "C" void exit(int) throw () _GLIBCXX_NORETURN;
+} // namespace std
+
+#else
+
+#include <stdlib.h>
+
+// Get rid of those macros defined in <stdlib.h> in lieu of real functions.
+#undef abort
+#undef abs
+#undef atexit
+#undef atof
+#undef atoi
+#undef atol
+#undef bsearch
+#undef calloc
+#undef div
+#undef exit
+#undef free
+#undef getenv
+#undef labs
+#undef ldiv
+#undef malloc
+#undef mblen
+#undef mbstowcs
+#undef mbtowc
+#undef qsort
+#undef rand
+#undef realloc
+#undef srand
+#undef strtod
+#undef strtol
+#undef strtoul
+#undef system
+#undef wcstombs
+#undef wctomb
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using ::div_t;
+  using ::ldiv_t;
+
+  using ::abort;
+  using ::abs;
+  using ::atexit;
+  using ::atof;
+  using ::atoi;
+  using ::atol;
+  using ::bsearch;
+  using ::calloc;
+  using ::div;
+  using ::exit;
+  using ::free;
+  using ::getenv;
+  using ::labs;
+  using ::ldiv;
+  using ::malloc;
+#ifdef _GLIBCXX_HAVE_MBSTATE_T
+  using ::mblen;
+  using ::mbstowcs;
+  using ::mbtowc;
+#endif // _GLIBCXX_HAVE_MBSTATE_T
+  using ::qsort;
+  using ::rand;
+  using ::realloc;
+  using ::srand;
+  using ::strtod;
+  using ::strtol;
+  using ::strtoul;
+  using ::system;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  using ::wcstombs;
+  using ::wctomb;
+#endif // _GLIBCXX_USE_WCHAR_T
+
+  inline long
+  abs(long __i) { return labs(__i); }
+
+  inline ldiv_t
+  div(long __i, long __j) { return ldiv(__i, __j); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99
+
+#undef _Exit
+#undef llabs
+#undef lldiv
+#undef atoll
+#undef strtoll
+#undef strtoull
+#undef strtof
+#undef strtold
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::lldiv_t;
+#endif
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN;
+#endif
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::_Exit;
+#endif
+
+  inline long long
+  abs(long long __x) { return __x >= 0 ? __x : -__x; }
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::llabs;
+
+  inline lldiv_t
+  div(long long __n, long long __d)
+  { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
+
+  using ::lldiv;
+#endif
+
+#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  extern "C" long long int (atoll)(const char *) throw ();
+  extern "C" long long int
+    (strtoll)(const char * __restrict, char ** __restrict, int) throw ();
+  extern "C" unsigned long long int
+    (strtoull)(const char * __restrict, char ** __restrict, int) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::atoll;
+  using ::strtoll;
+  using ::strtoull;
+#endif
+  using ::strtof;
+  using ::strtold;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __gnu_cxx
+
+namespace std
+{
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::__gnu_cxx::lldiv_t;
+#endif
+  using ::__gnu_cxx::_Exit;
+  using ::__gnu_cxx::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::__gnu_cxx::llabs;
+  using ::__gnu_cxx::div;
+  using ::__gnu_cxx::lldiv;
+#endif
+  using ::__gnu_cxx::atoll;
+  using ::__gnu_cxx::strtof;
+  using ::__gnu_cxx::strtoll;
+  using ::__gnu_cxx::strtoull;
+  using ::__gnu_cxx::strtold;
+} // namespace std
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std
+{
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  // types
+  using std::lldiv_t;
+
+  // functions
+  using std::llabs;
+  using std::lldiv;
+#endif
+
+  using std::atoll;
+  using std::strtoll;
+  using std::strtoull;
+
+  using std::strtof;
+  using std::strtold;
+
+  // overloads
+  using std::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using std::div;
+#endif
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_USE_C99
+
+#endif // !_GLIBCXX_HOSTED
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstring b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstring
new file mode 100644
index 000000000..ea33fa122
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cstring
@@ -0,0 +1,125 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cstring
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c string.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <string.h>
+
+#ifndef _GLIBCXX_CSTRING
+#define _GLIBCXX_CSTRING 1
+
+// Get rid of those macros defined in <string.h> in lieu of real functions.
+#undef memchr
+#undef memcmp
+#undef memcpy
+#undef memmove
+#undef memset
+#undef strcat
+#undef strchr
+#undef strcmp
+#undef strcoll
+#undef strcpy
+#undef strcspn
+#undef strerror
+#undef strlen
+#undef strncat
+#undef strncmp
+#undef strncpy
+#undef strpbrk
+#undef strrchr
+#undef strspn
+#undef strstr
+#undef strtok
+#undef strxfrm
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using ::memchr;
+  using ::memcmp;
+  using ::memcpy;
+  using ::memmove;
+  using ::memset;
+  using ::strcat;
+  using ::strcmp;
+  using ::strcoll;
+  using ::strcpy;
+  using ::strcspn;
+  using ::strerror;
+  using ::strlen;
+  using ::strncat;
+  using ::strncmp;
+  using ::strncpy;
+  using ::strspn;
+  using ::strtok;
+  using ::strxfrm;
+  using ::strchr;
+  using ::strpbrk;
+  using ::strrchr;
+  using ::strstr;
+
+#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
+  inline void*
+  memchr(void* __s, int __c, size_t __n)
+  { return __builtin_memchr(__s, __c, __n); }
+
+  inline char*
+  strchr(char* __s, int __n)
+  { return __builtin_strchr(__s, __n); }
+
+  inline char*
+  strpbrk(char* __s1, const char* __s2)
+  { return __builtin_strpbrk(__s1, __s2); }
+
+  inline char*
+  strrchr(char* __s, int __n)
+  { return __builtin_strrchr(__s, __n); }
+
+  inline char*
+  strstr(char* __s1, const char* __s2)
+  { return __builtin_strstr(__s1, __s2); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctgmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctgmath
new file mode 100644
index 000000000..6b51005cc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctgmath
@@ -0,0 +1,41 @@
+// <ctgmath> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ctgmath
+ *  This is a Standard C++ Library header.
+ */
+
+#pragma GCC system_header
+
+#ifndef _GLIBCXX_CTGMATH
+#define _GLIBCXX_CTGMATH 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+#  include <bits/c++0x_warning.h>
+#else
+#  include <cmath>
+#endif
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctime b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctime
new file mode 100644
index 000000000..085e792c8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/ctime
@@ -0,0 +1,77 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ctime
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c time.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.5  Date and time
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <time.h>
+
+#ifndef _GLIBCXX_CTIME
+#define _GLIBCXX_CTIME 1
+
+// Get rid of those macros defined in <time.h> in lieu of real functions.
+#undef clock
+#undef difftime
+#undef mktime
+#undef time
+#undef asctime
+#undef ctime
+#undef gmtime
+#undef localtime
+#undef strftime
+
+namespace std
+{
+  using ::clock_t;
+  using ::time_t;
+  using ::tm;
+
+  using ::clock;
+  using ::difftime;
+  using ::mktime;
+  using ::time;
+  using ::asctime;
+  using ::ctime;
+  using ::gmtime;
+  using ::localtime;
+  using ::strftime;
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwchar b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwchar
new file mode 100644
index 000000000..5a3396577
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwchar
@@ -0,0 +1,305 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cwchar
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c wchar.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 21.4
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+
+#ifndef _GLIBCXX_CWCHAR
+#define _GLIBCXX_CWCHAR 1
+
+// Need to do a bit of trickery here with mbstate_t as char_traits
+// assumes it is in wchar.h, regardless of wchar_t specializations.
+#ifndef _GLIBCXX_HAVE_MBSTATE_T
+extern "C"
+{
+  typedef struct
+  {
+    int __fill[6];
+  } mbstate_t;
+}
+#endif
+
+namespace std
+{
+  using ::mbstate_t;
+} // namespace std
+
+// Get rid of those macros defined in <wchar.h> in lieu of real functions.
+#undef btowc
+#undef fgetwc
+#undef fgetws
+#undef fputwc
+#undef fputws
+#undef fwide
+#undef fwprintf
+#undef fwscanf
+#undef getwc
+#undef getwchar
+#undef mbrlen
+#undef mbrtowc
+#undef mbsinit
+#undef mbsrtowcs
+#undef putwc
+#undef putwchar
+#undef swprintf
+#undef swscanf
+#undef ungetwc
+#undef vfwprintf
+#if _GLIBCXX_HAVE_VFWSCANF
+# undef vfwscanf
+#endif
+#undef vswprintf
+#if _GLIBCXX_HAVE_VSWSCANF
+# undef vswscanf
+#endif
+#undef vwprintf
+#if _GLIBCXX_HAVE_VWSCANF
+# undef vwscanf
+#endif
+#undef wcrtomb
+#undef wcscat
+#undef wcschr
+#undef wcscmp
+#undef wcscoll
+#undef wcscpy
+#undef wcscspn
+#undef wcsftime
+#undef wcslen
+#undef wcsncat
+#undef wcsncmp
+#undef wcsncpy
+#undef wcspbrk
+#undef wcsrchr
+#undef wcsrtombs
+#undef wcsspn
+#undef wcsstr
+#undef wcstod
+#if _GLIBCXX_HAVE_WCSTOF
+# undef wcstof
+#endif
+#undef wcstok
+#undef wcstol
+#undef wcstoul
+#undef wcsxfrm
+#undef wctob
+#undef wmemchr
+#undef wmemcmp
+#undef wmemcpy
+#undef wmemmove
+#undef wmemset
+#undef wprintf
+#undef wscanf
+
+#if _GLIBCXX_USE_WCHAR_T
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  using ::wint_t;
+
+  using ::btowc;
+  using ::fgetwc;
+  using ::fgetws;
+  using ::fputwc;
+  using ::fputws;
+  using ::fwide;
+  using ::fwprintf;
+  using ::fwscanf;
+  using ::getwc;
+  using ::getwchar;
+  using ::mbrlen;
+  using ::mbrtowc;
+  using ::mbsinit;
+  using ::mbsrtowcs;
+  using ::putwc;
+  using ::putwchar;
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+  using ::swprintf;
+#endif
+  using ::swscanf;
+  using ::ungetwc;
+  using ::vfwprintf;
+#if _GLIBCXX_HAVE_VFWSCANF
+  using ::vfwscanf;
+#endif
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+  using ::vswprintf;
+#endif
+#if _GLIBCXX_HAVE_VSWSCANF
+  using ::vswscanf;
+#endif
+  using ::vwprintf;
+#if _GLIBCXX_HAVE_VWSCANF
+  using ::vwscanf;
+#endif
+  using ::wcrtomb;
+  using ::wcscat;
+  using ::wcscmp;
+  using ::wcscoll;
+  using ::wcscpy;
+  using ::wcscspn;
+  using ::wcsftime;
+  using ::wcslen;
+  using ::wcsncat;
+  using ::wcsncmp;
+  using ::wcsncpy;
+  using ::wcsrtombs;
+  using ::wcsspn;
+  using ::wcstod;
+#if _GLIBCXX_HAVE_WCSTOF
+  using ::wcstof;
+#endif
+  using ::wcstok;
+  using ::wcstol;
+  using ::wcstoul;
+  using ::wcsxfrm;
+  using ::wctob;
+  using ::wmemcmp;
+  using ::wmemcpy;
+  using ::wmemmove;
+  using ::wmemset;
+  using ::wprintf;
+  using ::wscanf;
+  using ::wcschr;
+  using ::wcspbrk;
+  using ::wcsrchr;
+  using ::wcsstr;
+  using ::wmemchr;
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+  inline wchar_t*
+  wcschr(wchar_t* __p, wchar_t __c)
+  { return wcschr(const_cast<const wchar_t*>(__p), __c); }
+
+  inline wchar_t*
+  wcspbrk(wchar_t* __s1, const wchar_t* __s2)
+  { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
+
+  inline wchar_t*
+  wcsrchr(wchar_t* __p, wchar_t __c)
+  { return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
+
+  inline wchar_t*
+  wcsstr(wchar_t* __s1, const wchar_t* __s2)
+  { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
+
+  inline wchar_t*
+  wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
+  { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99
+
+#undef wcstold
+#undef wcstoll
+#undef wcstoull
+
+namespace __gnu_cxx
+{
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" long double
+    (wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::wcstold;
+#endif
+#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  extern "C" long long int
+    (wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw ();
+  extern "C" unsigned long long int
+    (wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::wcstoll;
+  using ::wcstoull;
+#endif
+} // namespace __gnu_cxx
+
+namespace std
+{
+  using ::__gnu_cxx::wcstold;
+  using ::__gnu_cxx::wcstoll;
+  using ::__gnu_cxx::wcstoull;
+} // namespace
+
+#endif
+
+#endif //_GLIBCXX_USE_WCHAR_T
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+
+namespace std
+{
+#if _GLIBCXX_HAVE_WCSTOF
+  using std::wcstof;
+#endif
+#if _GLIBCXX_HAVE_VFWSCANF
+  using std::vfwscanf;
+#endif
+#if _GLIBCXX_HAVE_VSWSCANF
+  using std::vswscanf;
+#endif
+#if _GLIBCXX_HAVE_VWSCANF
+  using std::vwscanf;
+#endif
+
+#if _GLIBCXX_USE_C99
+  using std::wcstold;
+  using std::wcstoll;
+  using std::wcstoull;
+#endif
+} // namespace
+
+#endif // _GLIBCXX_USE_WCHAR_T
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwctype
new file mode 100644
index 000000000..e417b6874
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_global/cwctype
@@ -0,0 +1,127 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cwctype
+ *  This is a Standard C++ Library file.  You should @c \#include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c wctype.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: <cwctype>
+//
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_WCTYPE_H
+
+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10
+// Work around glibc BZ 9694
+#include <stddef.h>
+#endif
+
+#include <wctype.h>
+#endif // _GLIBCXX_HAVE_WCTYPE_H
+
+#ifndef _GLIBCXX_CWCTYPE
+#define _GLIBCXX_CWCTYPE 1
+
+// Get rid of those macros defined in <wctype.h> in lieu of real functions.
+#undef iswalnum
+#undef iswalpha
+#if _GLIBCXX_HAVE_ISWBLANK
+# undef iswblank
+#endif
+#undef iswcntrl
+#undef iswctype
+#undef iswdigit
+#undef iswgraph
+#undef iswlower
+#undef iswprint
+#undef iswpunct
+#undef iswspace
+#undef iswupper
+#undef iswxdigit
+#undef towctrans
+#undef towlower
+#undef towupper
+#undef wctrans
+#undef wctype
+
+#if _GLIBCXX_USE_WCHAR_T
+
+namespace std
+{
+  using ::wctrans_t;
+  using ::wctype_t;
+  using ::wint_t;
+
+  using ::iswalnum;
+  using ::iswalpha;
+#if _GLIBCXX_HAVE_ISWBLANK
+  using ::iswblank;
+#endif
+  using ::iswcntrl;
+  using ::iswctype;
+  using ::iswdigit;
+  using ::iswgraph;
+  using ::iswlower;
+  using ::iswprint;
+  using ::iswpunct;
+  using ::iswspace;
+  using ::iswupper;
+  using ::iswxdigit;
+  using ::towctrans;
+  using ::towlower;
+  using ::towupper;
+  using ::wctrans;
+  using ::wctype;
+} // namespace
+
+#endif //_GLIBCXX_USE_WCHAR_T
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+
+namespace std
+{
+#if _GLIBCXX_HAVE_ISWBLANK
+  using std::iswblank;
+#endif  
+} // namespace
+
+#endif // _GLIBCXX_USE_WCHAR_T
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_CWCTYPE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cassert b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cassert
new file mode 100644
index 000000000..4ea0adc37
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cassert
@@ -0,0 +1,44 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cassert
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c assert.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 19.2  Assertions
+//
+
+// No include guards on this header...
+
+#pragma GCC system_header
+
+#include <assert.h>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cctype
new file mode 100644
index 000000000..7aa4b3108
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cctype
@@ -0,0 +1,80 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cctype
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c ctype.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: <ccytpe>
+//
+
+#ifndef _GLIBCXX_CCTYPE
+#define _GLIBCXX_CCTYPE 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <ctype.h>
+
+// Get rid of those macros defined in <ctype.h> in lieu of real functions.
+#undef isalnum
+#undef isalpha
+#undef iscntrl
+#undef isdigit
+#undef isgraph
+#undef islower
+#undef isprint
+#undef ispunct
+#undef isspace
+#undef isupper
+#undef isxdigit
+#undef tolower
+#undef toupper
+
+namespace std
+{
+  using ::isalnum;
+  using ::isalpha;
+  using ::iscntrl;
+  using ::isdigit;
+  using ::isgraph;
+  using ::islower;
+  using ::isprint;
+  using ::ispunct;
+  using ::isspace;
+  using ::isupper;
+  using ::isxdigit;
+  using ::tolower;
+  using ::toupper;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cerrno b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cerrno
new file mode 100644
index 000000000..d9d832fe6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cerrno
@@ -0,0 +1,52 @@
+// The -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cerrno
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c errno.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 19.3  Error numbers
+//
+
+#ifndef _GLIBCXX_CERRNO
+#define _GLIBCXX_CERRNO 1
+
+#pragma GCC system_header
+
+#include <errno.h>
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef errno
+#define errno errno
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cfloat b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cfloat
new file mode 100644
index 000000000..a9072b727
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cfloat
@@ -0,0 +1,47 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cfloat
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c float.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CFLOAT
+#define _GLIBCXX_CFLOAT 1
+
+#pragma GCC system_header
+
+#include <float.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ciso646 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ciso646
new file mode 100644
index 000000000..0eaad86a3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ciso646
@@ -0,0 +1,34 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ciso646
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c iso646.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/climits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/climits
new file mode 100644
index 000000000..91f52d2c8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/climits
@@ -0,0 +1,47 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/climits
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c limits.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CLIMITS
+#define _GLIBCXX_CLIMITS 1
+
+#pragma GCC system_header
+
+#include <limits.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/clocale b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/clocale
new file mode 100644
index 000000000..c37631369
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/clocale
@@ -0,0 +1,59 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file clocale
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c locale.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.2.2  Implementation properties: C library
+//
+
+#ifndef _GLIBCXX_CLOCALE
+#define _GLIBCXX_CLOCALE 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <locale.h>
+
+// Get rid of those macros defined in <locale.h> in lieu of real functions.
+#undef setlocale
+#undef localeconv
+
+namespace std
+{
+  using ::lconv;
+  using ::setlocale;
+  using ::localeconv;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cmath
new file mode 100644
index 000000000..13eef4084
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cmath
@@ -0,0 +1,586 @@
+// -*- C++ -*- C forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cmath
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c math.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 26.5  C library
+//
+
+#ifndef _GLIBCXX_CMATH
+#define _GLIBCXX_CMATH 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+
+#include <math.h>
+
+// Get rid of those macros defined in <math.h> in lieu of real functions.
+#undef abs
+#undef div
+#undef acos
+#undef asin
+#undef atan
+#undef atan2
+#undef ceil
+#undef cos
+#undef cosh
+#undef exp
+#undef fabs
+#undef floor
+#undef fmod
+#undef frexp
+#undef ldexp
+#undef log
+#undef log10
+#undef modf
+#undef pow
+#undef sin
+#undef sinh
+#undef sqrt
+#undef tan
+#undef tanh
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  inline double
+  abs(double __x)
+  { return __builtin_fabs(__x); }
+
+  inline float
+  abs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  abs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    abs(_Tp __x)
+    { return __builtin_fabs(__x); }
+
+  using ::acos;
+
+  inline float
+  acos(float __x)
+  { return __builtin_acosf(__x); }
+
+  inline long double
+  acos(long double __x)
+  { return __builtin_acosl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    acos(_Tp __x)
+    { return __builtin_acos(__x); }
+
+  using ::asin;
+
+  inline float
+  asin(float __x)
+  { return __builtin_asinf(__x); }
+
+  inline long double
+  asin(long double __x)
+  { return __builtin_asinl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
+					   double>::__type
+    asin(_Tp __x)
+    { return __builtin_asin(__x); }
+
+  using ::atan;
+
+  inline float
+  atan(float __x)
+  { return __builtin_atanf(__x); }
+
+  inline long double
+  atan(long double __x)
+  { return __builtin_atanl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    atan(_Tp __x)
+    { return __builtin_atan(__x); }
+
+  using ::atan2;
+
+  inline float
+  atan2(float __y, float __x)
+  { return __builtin_atan2f(__y, __x); }
+
+  inline long double
+  atan2(long double __y, long double __x)
+  { return __builtin_atan2l(__y, __x); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value
+    					   && __is_integer<_Up>::__value, 
+					   double>::__type
+    atan2(_Tp __y, _Up __x)
+    { return __builtin_atan2(__y, __x); }
+
+  using ::ceil;
+
+  inline float
+  ceil(float __x)
+  { return __builtin_ceilf(__x); }
+
+  inline long double
+  ceil(long double __x)
+  { return __builtin_ceill(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    ceil(_Tp __x)
+    { return __builtin_ceil(__x); }
+
+  using ::cos;
+
+  inline float
+  cos(float __x)
+  { return __builtin_cosf(__x); }
+
+  inline long double
+  cos(long double __x)
+  { return __builtin_cosl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    cos(_Tp __x)
+    { return __builtin_cos(__x); }
+
+  using ::cosh;
+
+  inline float
+  cosh(float __x)
+  { return __builtin_coshf(__x); }
+
+  inline long double
+  cosh(long double __x)
+  { return __builtin_coshl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    cosh(_Tp __x)
+    { return __builtin_cosh(__x); }
+
+  using ::exp;
+
+  inline float
+  exp(float __x)
+  { return __builtin_expf(__x); }
+
+  inline long double
+  exp(long double __x)
+  { return __builtin_expl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    exp(_Tp __x)
+    { return __builtin_exp(__x); }
+
+  using ::fabs;
+
+  inline float
+  fabs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  fabs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    fabs(_Tp __x)
+    { return __builtin_fabs(__x); }
+
+  using ::floor;
+
+  inline float
+  floor(float __x)
+  { return __builtin_floorf(__x); }
+
+  inline long double
+  floor(long double __x)
+  { return __builtin_floorl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    floor(_Tp __x)
+    { return __builtin_floor(__x); }
+
+  using ::fmod;
+
+  inline float
+  fmod(float __x, float __y)
+  { return __builtin_fmodf(__x, __y); }
+
+  inline long double
+  fmod(long double __x, long double __y)
+  { return __builtin_fmodl(__x, __y); }
+
+  using ::frexp;
+
+  inline float
+  frexp(float __x, int* __exp)
+  { return __builtin_frexpf(__x, __exp); }
+
+  inline long double
+  frexp(long double __x, int* __exp)
+  { return __builtin_frexpl(__x, __exp); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    frexp(_Tp __x, int* __exp)
+    { return __builtin_frexp(__x, __exp); }
+
+  using ::ldexp;
+
+  inline float
+  ldexp(float __x, int __exp)
+  { return __builtin_ldexpf(__x, __exp); }
+
+  inline long double
+  ldexp(long double __x, int __exp)
+  { return __builtin_ldexpl(__x, __exp); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    ldexp(_Tp __x, int __exp)
+    { return __builtin_ldexp(__x, __exp); }
+
+  using ::log;
+
+  inline float
+  log(float __x)
+  { return __builtin_logf(__x); }
+
+  inline long double
+  log(long double __x)
+  { return __builtin_logl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    log(_Tp __x)
+    { return __builtin_log(__x); }
+
+  using ::log10;
+
+  inline float
+  log10(float __x)
+  { return __builtin_log10f(__x); }
+
+  inline long double
+  log10(long double __x)
+  { return __builtin_log10l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    log10(_Tp __x)
+    { return __builtin_log10(__x); }
+
+  using ::modf;
+
+  inline float
+  modf(float __x, float* __iptr)
+  { return __builtin_modff(__x, __iptr); }
+
+  inline long double
+  modf(long double __x, long double* __iptr)
+  { return __builtin_modfl(__x, __iptr); }
+
+  using ::pow;
+
+  inline float
+  pow(float __x, float __y)
+  { return __builtin_powf(__x, __y); }
+
+  inline long double
+  pow(long double __x, long double __y)
+  { return __builtin_powl(__x, __y); }
+
+  inline double
+  pow(double __x, int __i)
+  { return __builtin_powi(__x, __i); }
+
+  inline float
+  pow(float __x, int __n)
+  { return __builtin_powif(__x, __n); }
+
+  inline long double
+  pow(long double __x, int __n)
+  { return __builtin_powil(__x, __n); }
+
+  using ::sin;
+
+  inline float
+  sin(float __x)
+  { return __builtin_sinf(__x); }
+
+  inline long double
+  sin(long double __x)
+  { return __builtin_sinl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sin(_Tp __x)
+    { return __builtin_sin(__x); }
+
+  using ::sinh;
+
+  inline float
+  sinh(float __x)
+  { return __builtin_sinhf(__x); }
+
+  inline long double
+  sinh(long double __x)
+  { return __builtin_sinhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sinh(_Tp __x)
+    { return __builtin_sinh(__x); }
+
+  using ::sqrt;
+
+  inline float
+  sqrt(float __x)
+  { return __builtin_sqrtf(__x); }
+
+  inline long double
+  sqrt(long double __x)
+  { return __builtin_sqrtl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    sqrt(_Tp __x)
+    { return __builtin_sqrt(__x); }
+
+  using ::tan;
+
+  inline float
+  tan(float __x)
+  { return __builtin_tanf(__x); }
+
+  inline long double
+  tan(long double __x)
+  { return __builtin_tanl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    tan(_Tp __x)
+    { return __builtin_tan(__x); }
+
+  using ::tanh;
+
+  inline float
+  tanh(float __x)
+  { return __builtin_tanhf(__x); }
+
+  inline long double
+  tanh(long double __x)
+  { return __builtin_tanhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    tanh(_Tp __x)
+    { return __builtin_tanh(__x); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99_MATH
+#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+
+// These are possible macros imported from C99-land.
+#undef fpclassify
+#undef isfinite
+#undef isinf
+#undef isnan
+#undef isnormal
+#undef signbit
+#undef isgreater
+#undef isgreaterequal
+#undef isless
+#undef islessequal
+#undef islessgreater
+#undef isunordered
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    fpclassify(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				  FP_SUBNORMAL, FP_ZERO, __type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isfinite(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isfinite(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isinf(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isinf(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnan(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnan(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnormal(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnormal(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    signbit(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_signbit(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreaterequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreaterequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isless(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isless(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, 
+					   int>::__type
+    islessequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    islessgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isunordered(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isunordered(__type(__f1), __type(__f2));
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csetjmp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csetjmp
new file mode 100644
index 000000000..e2cb38840
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csetjmp
@@ -0,0 +1,62 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file csetjmp
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c setjmp.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSETJMP
+#define _GLIBCXX_CSETJMP 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <setjmp.h>
+
+// Get rid of those macros defined in <setjmp.h> in lieu of real functions.
+#undef longjmp
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef setjmp
+#define setjmp(env) setjmp (env)
+#endif
+
+namespace std
+{
+  using ::jmp_buf;
+  using ::longjmp;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csignal b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csignal
new file mode 100644
index 000000000..c1cff8e36
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/csignal
@@ -0,0 +1,58 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file csignal
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c signal.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSIGNAL
+#define _GLIBCXX_CSIGNAL 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <signal.h>
+
+// Get rid of those macros defined in <signal.h> in lieu of real functions.
+#undef raise
+
+namespace std
+{
+  using ::sig_atomic_t;
+  using ::signal;
+  using ::raise;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdarg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdarg
new file mode 100644
index 000000000..5053e4f80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdarg
@@ -0,0 +1,58 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdarg
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdarg.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTDARG
+#define _GLIBCXX_CSTDARG 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stdarg.h>
+
+// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
+#ifndef va_end
+#define va_end(ap) va_end (ap)
+#endif
+
+namespace std
+{
+  using ::va_list;
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstddef b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstddef
new file mode 100644
index 000000000..006c432d7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstddef
@@ -0,0 +1,48 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cstddef
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stddef.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 18.1  Types
+//
+
+#ifndef _GLIBCXX_CSTDDEF
+#define _GLIBCXX_CSTDDEF 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stddef.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdio b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdio
new file mode 100644
index 000000000..510f599d8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdio
@@ -0,0 +1,184 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdio
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdio.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 27.8.2  C Library files
+//
+
+#ifndef _GLIBCXX_CSTDIO
+#define _GLIBCXX_CSTDIO 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <stdio.h>
+
+// Get rid of those macros defined in <stdio.h> in lieu of real functions.
+#undef clearerr
+#undef fclose
+#undef feof
+#undef ferror
+#undef fflush
+#undef fgetc
+#undef fgetpos
+#undef fgets
+#undef fopen
+#undef fprintf
+#undef fputc
+#undef fputs
+#undef fread
+#undef freopen
+#undef fscanf
+#undef fseek
+#undef fsetpos
+#undef ftell
+#undef fwrite
+#undef getc
+#undef getchar
+#undef gets
+#undef perror
+#undef printf
+#undef putc
+#undef putchar
+#undef puts
+#undef remove
+#undef rename
+#undef rewind
+#undef scanf
+#undef setbuf
+#undef setvbuf
+#undef sprintf
+#undef sscanf
+#undef tmpfile
+#undef tmpnam
+#undef ungetc
+#undef vfprintf
+#undef vprintf
+#undef vsprintf
+
+namespace std
+{
+  using ::FILE;
+  using ::fpos_t;
+
+  using ::clearerr;
+  using ::fclose;
+  using ::feof;
+  using ::ferror;
+  using ::fflush;
+  using ::fgetc;
+  using ::fgetpos;
+  using ::fgets;
+  using ::fopen;
+  using ::fprintf;
+  using ::fputc;
+  using ::fputs;
+  using ::fread;
+  using ::freopen;
+  using ::fscanf;
+  using ::fseek;
+  using ::fsetpos;
+  using ::ftell;
+  using ::fwrite;
+  using ::getc;
+  using ::getchar;
+  using ::gets;
+  using ::perror;
+  using ::printf;
+  using ::putc;
+  using ::putchar;
+  using ::puts;
+  using ::remove;
+  using ::rename;
+  using ::rewind;
+  using ::scanf;
+  using ::setbuf;
+  using ::setvbuf;
+  using ::sprintf;
+  using ::sscanf;
+  using ::tmpfile;
+  using ::tmpnam;
+  using ::ungetc;
+  using ::vfprintf;
+  using ::vprintf;
+  using ::vsprintf;
+} // namespace std
+
+#if _GLIBCXX_USE_C99
+
+#undef snprintf
+#undef vfscanf
+#undef vscanf
+#undef vsnprintf
+#undef vsscanf
+
+namespace __gnu_cxx
+{
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" int
+  (snprintf)(char * __restrict, std::size_t, const char * __restrict, ...)
+  throw ();
+  extern "C" int
+  (vfscanf)(FILE * __restrict, const char * __restrict, __gnuc_va_list);
+  extern "C" int (vscanf)(const char * __restrict, __gnuc_va_list);
+  extern "C" int
+  (vsnprintf)(char * __restrict, std::size_t, const char * __restrict,
+	      __gnuc_va_list) throw ();
+  extern "C" int
+  (vsscanf)(const char * __restrict, const char * __restrict, __gnuc_va_list)
+  throw ();
+#endif
+
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::snprintf;
+  using ::vfscanf;
+  using ::vscanf;
+  using ::vsnprintf;
+  using ::vsscanf;
+#endif
+} // namespace __gnu_cxx
+
+namespace std
+{
+  using ::__gnu_cxx::snprintf;
+  using ::__gnu_cxx::vfscanf;
+  using ::__gnu_cxx::vscanf;
+  using ::__gnu_cxx::vsnprintf;
+  using ::__gnu_cxx::vsscanf;
+} // namespace std
+
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdlib b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdlib
new file mode 100644
index 000000000..c3fe8aa45
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstdlib
@@ -0,0 +1,225 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cstdlib
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c stdlib.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTDLIB
+#define _GLIBCXX_CSTDLIB 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if !_GLIBCXX_HOSTED
+// The C standard does not require a freestanding implementation to
+// provide <stdlib.h>.  However, the C++ standard does still require
+// <cstdlib> -- but only the functionality mentioned in
+// [lib.support.start.term].
+
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+
+namespace std
+{
+  extern "C" void abort(void) throw () _GLIBCXX_NORETURN;
+  extern "C" int atexit(void (*)()) throw ();
+  extern "C" void exit(int) throw () _GLIBCXX_NORETURN;
+} // namespace
+
+#else
+
+#include <stdlib.h>
+
+// Get rid of those macros defined in <stdlib.h> in lieu of real functions.
+#undef abort
+#undef abs
+#undef atexit
+#undef atof
+#undef atoi
+#undef atol
+#undef bsearch
+#undef calloc
+#undef div
+#undef exit
+#undef free
+#undef getenv
+#undef labs
+#undef ldiv
+#undef malloc
+#undef mblen
+#undef mbstowcs
+#undef mbtowc
+#undef qsort
+#undef rand
+#undef realloc
+#undef srand
+#undef strtod
+#undef strtol
+#undef strtoul
+#undef system
+#undef wcstombs
+#undef wctomb
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using ::div_t;
+  using ::ldiv_t;
+
+  using ::abort;
+  using ::abs;
+  using ::atexit;
+  using ::atof;
+  using ::atoi;
+  using ::atol;
+  using ::bsearch;
+  using ::calloc;
+  using ::div;
+  using ::exit;
+  using ::free;
+  using ::getenv;
+  using ::labs;
+  using ::ldiv;
+  using ::malloc;
+#ifdef _GLIBCXX_HAVE_MBSTATE_T
+  using ::mblen;
+  using ::mbstowcs;
+  using ::mbtowc;
+#endif // _GLIBCXX_HAVE_MBSTATE_T
+  using ::qsort;
+  using ::rand;
+  using ::realloc;
+  using ::srand;
+  using ::strtod;
+  using ::strtol;
+  using ::strtoul;
+  using ::system;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  using ::wcstombs;
+  using ::wctomb;
+#endif // _GLIBCXX_USE_WCHAR_T
+
+  inline long
+  abs(long __i) { return labs(__i); }
+
+  inline ldiv_t
+  div(long __i, long __j) { return ldiv(__i, __j); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99
+
+#undef _Exit
+#undef llabs
+#undef lldiv
+#undef atoll
+#undef strtoll
+#undef strtoull
+#undef strtof
+#undef strtold
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::lldiv_t;
+#endif
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN;
+#endif
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::_Exit;
+#endif
+
+  inline long long
+  abs(long long __x) { return __x >= 0 ? __x : -__x; }
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::llabs;
+
+  inline lldiv_t
+  div(long long __n, long long __d)
+  { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
+
+  using ::lldiv;
+#endif
+
+#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  extern "C" long long int (atoll)(const char *) throw ();
+  extern "C" long long int
+    (strtoll)(const char * __restrict, char ** __restrict, int) throw ();
+  extern "C" unsigned long long int
+    (strtoull)(const char * __restrict, char ** __restrict, int) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::atoll;
+  using ::strtoll;
+  using ::strtoull;
+#endif
+  using ::strtof;
+  using ::strtold;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __gnu_cxx
+
+namespace std
+{
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::__gnu_cxx::lldiv_t;
+#endif
+  using ::__gnu_cxx::_Exit;
+  using ::__gnu_cxx::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::__gnu_cxx::llabs;
+  using ::__gnu_cxx::div;
+  using ::__gnu_cxx::lldiv;
+#endif
+  using ::__gnu_cxx::atoll;
+  using ::__gnu_cxx::strtof;
+  using ::__gnu_cxx::strtoll;
+  using ::__gnu_cxx::strtoull;
+  using ::__gnu_cxx::strtold;
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99
+
+#endif // !_GLIBCXX_HOSTED
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstring b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstring
new file mode 100644
index 000000000..6dd8ab6c2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cstring
@@ -0,0 +1,125 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file cstring
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c string.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.4.6  C library
+//
+
+#ifndef _GLIBCXX_CSTRING
+#define _GLIBCXX_CSTRING 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <string.h>
+
+// Get rid of those macros defined in <string.h> in lieu of real functions.
+#undef memcpy
+#undef memmove
+#undef strcpy
+#undef strncpy
+#undef strcat
+#undef strncat
+#undef memcmp
+#undef strcmp
+#undef strcoll
+#undef strncmp
+#undef strxfrm
+#undef memchr
+#undef strchr
+#undef strcspn
+#undef strpbrk
+#undef strrchr
+#undef strspn
+#undef strstr
+#undef strtok
+#undef memset
+#undef strerror
+#undef strlen
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using ::memcpy;
+  using ::memmove;
+  using ::strcpy;
+  using ::strncpy;
+  using ::strcat;
+  using ::strncat;
+  using ::memcmp;
+  using ::strcmp;
+  using ::strcoll;
+  using ::strncmp;
+  using ::strxfrm;
+  using ::strcspn;
+  using ::strspn;
+  using ::strtok;
+  using ::memset;
+  using ::strerror;
+  using ::strlen;
+  using ::memchr;
+  using ::strchr;
+  using ::strpbrk;
+  using ::strrchr;
+  using ::strstr;
+
+#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
+  inline void*
+  memchr(void* __s, int __c, size_t __n)
+  { return __builtin_memchr(__s, __c, __n); }
+
+  inline char*
+  strchr(char* __s, int __n)
+  { return __builtin_strchr(__s, __n); }
+
+  inline char*
+  strpbrk(char* __s1, const char* __s2)
+  { return __builtin_strpbrk(__s1, __s2); }
+
+  inline char*
+  strrchr(char* __s, int __n)
+  { return __builtin_strrchr(__s, __n); }
+
+  inline char*
+  strstr(char* __s1, const char* __s2)
+  { return __builtin_strstr(__s1, __s2); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ctime b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ctime
new file mode 100644
index 000000000..766d0929b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/ctime
@@ -0,0 +1,76 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ctime
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c time.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 20.5  Date and time
+//
+
+#ifndef _GLIBCXX_CTIME
+#define _GLIBCXX_CTIME 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <time.h>
+
+// Get rid of those macros defined in <time.h> in lieu of real functions.
+#undef clock
+#undef difftime
+#undef mktime
+#undef time
+#undef asctime
+#undef ctime
+#undef gmtime
+#undef localtime
+#undef strftime
+
+namespace std
+{
+  using ::clock_t;
+  using ::time_t;
+  using ::tm;
+
+  using ::clock;
+  using ::difftime;
+  using ::mktime;
+  using ::time;
+  using ::asctime;
+  using ::ctime;
+  using ::gmtime;
+  using ::localtime;
+  using ::strftime;
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwchar b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwchar
new file mode 100644
index 000000000..8480dac46
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwchar
@@ -0,0 +1,271 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cwchar
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c wchar.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: 21.4
+//
+
+#ifndef _GLIBCXX_CWCHAR
+#define _GLIBCXX_CWCHAR 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+
+// Need to do a bit of trickery here with mbstate_t as char_traits
+// assumes it is in wchar.h, regardless of wchar_t specializations.
+#ifndef _GLIBCXX_HAVE_MBSTATE_T
+extern "C"
+{
+  typedef struct
+  {
+    int __fill[6];
+  } mbstate_t;
+}
+#endif
+
+namespace std
+{
+  using ::mbstate_t;
+} // namespace std
+
+// Get rid of those macros defined in <wchar.h> in lieu of real functions.
+#undef btowc
+#undef fgetwc
+#undef fgetws
+#undef fputwc
+#undef fputws
+#undef fwide
+#undef fwprintf
+#undef fwscanf
+#undef getwc
+#undef getwchar
+#undef mbrlen
+#undef mbrtowc
+#undef mbsinit
+#undef mbsrtowcs
+#undef putwc
+#undef putwchar
+#undef swprintf
+#undef swscanf
+#undef ungetwc
+#undef vfwprintf
+#if _GLIBCXX_HAVE_VFWSCANF
+# undef vfwscanf
+#endif
+#undef vswprintf
+#if _GLIBCXX_HAVE_VSWSCANF
+# undef vswscanf
+#endif
+#undef vwprintf
+#if _GLIBCXX_HAVE_VWSCANF
+# undef vwscanf
+#endif
+#undef wcrtomb
+#undef wcscat
+#undef wcschr
+#undef wcscmp
+#undef wcscoll
+#undef wcscpy
+#undef wcscspn
+#undef wcsftime
+#undef wcslen
+#undef wcsncat
+#undef wcsncmp
+#undef wcsncpy
+#undef wcspbrk
+#undef wcsrchr
+#undef wcsrtombs
+#undef wcsspn
+#undef wcsstr
+#undef wcstod
+#if _GLIBCXX_HAVE_WCSTOF
+# undef wcstof
+#endif
+#undef wcstok
+#undef wcstol
+#undef wcstoul
+#undef wcsxfrm
+#undef wctob
+#undef wmemchr
+#undef wmemcmp
+#undef wmemcpy
+#undef wmemmove
+#undef wmemset
+#undef wprintf
+#undef wscanf
+
+#if _GLIBCXX_USE_WCHAR_T
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using ::wint_t;
+
+  using ::btowc;
+  using ::fgetwc;
+  using ::fgetws;
+  using ::fputwc;
+  using ::fputws;
+  using ::fwide;
+  using ::fwprintf;
+  using ::fwscanf;
+  using ::getwc;
+  using ::getwchar;
+  using ::mbrlen;
+  using ::mbrtowc;
+  using ::mbsinit;
+  using ::mbsrtowcs;
+  using ::putwc;
+  using ::putwchar;
+  using ::swprintf;
+  using ::swscanf;
+  using ::ungetwc;
+  using ::vfwprintf;
+#if _GLIBCXX_HAVE_VFWSCANF
+  using ::vfwscanf;
+#endif
+  using ::vswprintf;
+#if _GLIBCXX_HAVE_VSWSCANF
+  using ::vswscanf;
+#endif
+  using ::vwprintf;
+#if _GLIBCXX_HAVE_VWSCANF
+  using ::vwscanf;
+#endif
+  using ::wcrtomb;
+  using ::wcscat;
+  using ::wcscmp;
+  using ::wcscoll;
+  using ::wcscpy;
+  using ::wcscspn;
+  using ::wcsftime;
+  using ::wcslen;
+  using ::wcsncat;
+  using ::wcsncmp;
+  using ::wcsncpy;
+  using ::wcsrtombs;
+  using ::wcsspn;
+  using ::wcstod;
+#if _GLIBCXX_HAVE_WCSTOF
+  using ::wcstof;
+#endif
+  using ::wcstok;
+  using ::wcstol;
+  using ::wcstoul;
+  using ::wcsxfrm;
+  using ::wctob;
+  using ::wmemcmp;
+  using ::wmemcpy;
+  using ::wmemmove;
+  using ::wmemset;
+  using ::wprintf;
+  using ::wscanf;
+  using ::wcschr;
+  using ::wcspbrk;
+  using ::wcsrchr;
+  using ::wcsstr;
+  using ::wmemchr;
+
+#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+  inline wchar_t*
+  wcschr(wchar_t* __p, wchar_t __c)
+  { return wcschr(const_cast<const wchar_t*>(__p), __c); }
+
+  inline wchar_t*
+  wcspbrk(wchar_t* __s1, const wchar_t* __s2)
+  { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
+
+  inline wchar_t*
+  wcsrchr(wchar_t* __p, wchar_t __c)
+  { return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
+
+  inline wchar_t*
+  wcsstr(wchar_t* __s1, const wchar_t* __s2)
+  { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
+
+  inline wchar_t*
+  wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
+  { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if _GLIBCXX_USE_C99
+
+#undef wcstold
+#undef wcstoll
+#undef wcstoull
+
+namespace __gnu_cxx
+{
+#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
+  extern "C" long double
+    (wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_DYNAMIC
+  using ::wcstold;
+#endif
+#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  extern "C" long long int
+    (wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw ();
+  extern "C" unsigned long long int
+    (wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw ();
+#endif
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using ::wcstoll;
+  using ::wcstoull;
+#endif
+} // namespace __gnu_cxx
+
+namespace std
+{
+  using ::__gnu_cxx::wcstold;
+  using ::__gnu_cxx::wcstoll;
+  using ::__gnu_cxx::wcstoull;
+} // namespace std
+
+#endif
+
+#endif //_GLIBCXX_USE_WCHAR_T
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwctype
new file mode 100644
index 000000000..efaa338b9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/c_std/cwctype
@@ -0,0 +1,112 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cwctype
+ *  This is a Standard C++ Library file.  You should @c #include this file
+ *  in your programs, rather than any of the @a *.h implementation files.
+ *
+ *  This is the C++ version of the Standard C Library header @c wctype.h,
+ *  and its contents are (mostly) the same as that header, but are all
+ *  contained in the namespace @c std (except for names which are defined
+ *  as macros in C).
+ */
+
+//
+// ISO C++ 14882: <cwctype>
+//
+
+#ifndef _GLIBCXX_CWCTYPE
+#define _GLIBCXX_CWCTYPE 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_WCTYPE_H
+
+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10
+// Work around glibc BZ 9694
+#include <stddef.h>
+#endif
+
+#include <wctype.h>
+#endif // _GLIBCXX_HAVE_WCTYPE_H
+
+// Get rid of those macros defined in <wctype.h> in lieu of real functions.
+#undef iswalnum
+#undef iswalpha
+#if _GLIBCXX_HAVE_ISWBLANK
+# undef iswblank
+#endif
+#undef iswcntrl
+#undef iswctype
+#undef iswdigit
+#undef iswgraph
+#undef iswlower
+#undef iswprint
+#undef iswpunct
+#undef iswspace
+#undef iswupper
+#undef iswxdigit
+#undef towctrans
+#undef towlower
+#undef towupper
+#undef wctrans
+#undef wctype
+
+#if _GLIBCXX_USE_WCHAR_T
+
+namespace std
+{
+  using ::wint_t;	  // cwchar
+
+  using ::wctype_t;
+  using ::wctrans_t;
+
+  using ::iswalnum;
+  using ::iswalpha;
+#if _GLIBCXX_HAVE_ISWBLANK
+  using ::iswblank;
+#endif
+  using ::iswcntrl;
+  using ::iswctype;
+  using ::iswdigit;
+  using ::iswgraph;
+  using ::iswlower;
+  using ::iswprint;
+  using ::iswpunct;
+  using ::iswspace;
+  using ::iswupper;
+  using ::iswxdigit;
+  using ::towctrans;
+  using ::towlower;
+  using ::towupper;
+  using ::wctrans;
+  using ::wctype;
+} // namespace std
+
+#endif //_GLIBCXX_USE_WCHAR_T
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/bitset b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/bitset
new file mode 100644
index 000000000..c18754542
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/bitset
@@ -0,0 +1,419 @@
+// Debugging bitset implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/bitset
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_BITSET
+#define _GLIBCXX_DEBUG_BITSET
+
+#include <bitset>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::bitset with additional safety/checking/debug instrumentation.
+  template<size_t _Nb>
+    class bitset
+    : public _GLIBCXX_STD_C::bitset<_Nb>
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+    , public __gnu_debug::_Safe_sequence_base
+#endif
+    {
+      typedef _GLIBCXX_STD_C::bitset<_Nb> _Base;
+
+    public:
+      // In C++0x we rely on normal reference type to preserve the property
+      // of bitset to be use as a literal.
+      // TODO: Find an other solution.
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      typedef typename _Base::reference reference;
+#else
+      // bit reference:
+      class reference
+      : private _Base::reference
+        , public __gnu_debug::_Safe_iterator_base
+      {
+	typedef typename _Base::reference _Base_ref;
+
+	friend class bitset;
+	reference();
+
+	reference(const _Base_ref& __base,
+		  bitset* __seq __attribute__((__unused__)))
+	: _Base_ref(__base)
+	, _Safe_iterator_base(__seq, false)
+	{ }
+
+      public:
+	reference(const reference& __x)
+	: _Base_ref(__x)
+	, _Safe_iterator_base(__x, false)
+	{ }
+
+	reference&
+	operator=(bool __x)
+	{
+	  _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			      _M_message(__gnu_debug::__msg_bad_bitset_write)
+				._M_iterator(*this));
+	  *static_cast<_Base_ref*>(this) = __x;
+	  return *this;
+	}
+
+	reference&
+	operator=(const reference& __x)
+	{
+	  _GLIBCXX_DEBUG_VERIFY(! __x._M_singular(),
+			       _M_message(__gnu_debug::__msg_bad_bitset_read)
+				._M_iterator(__x));
+	  _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			      _M_message(__gnu_debug::__msg_bad_bitset_write)
+				._M_iterator(*this));
+	  *static_cast<_Base_ref*>(this) = __x;
+	  return *this;
+	}
+
+	bool
+	operator~() const
+	{
+	  _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			       _M_message(__gnu_debug::__msg_bad_bitset_read)
+				._M_iterator(*this));
+	  return ~(*static_cast<const _Base_ref*>(this));
+	}
+
+	operator bool() const
+	{
+	  _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			      _M_message(__gnu_debug::__msg_bad_bitset_read)
+				._M_iterator(*this));
+	  return *static_cast<const _Base_ref*>(this);
+	}
+
+	reference&
+	flip()
+	{
+	  _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			      _M_message(__gnu_debug::__msg_bad_bitset_flip)
+				._M_iterator(*this));
+	  _Base_ref::flip();
+	  return *this;
+	}
+      };
+#endif
+
+      // 23.3.5.1 constructors:
+      _GLIBCXX_CONSTEXPR bitset() : _Base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr bitset(unsigned long long __val)
+#else
+      bitset(unsigned long __val)
+#endif
+      : _Base(__val) { }
+
+      template<typename _CharT, typename _Traits, typename _Alloc>
+        explicit
+        bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __pos = 0,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos))
+	: _Base(__str, __pos, __n) { }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __pos,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __n,
+	       _CharT __zero, _CharT __one = _CharT('1'))
+	: _Base(__str, __pos, __n, __zero, __one) { }
+
+      bitset(const _Base& __x) : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _CharT>
+        explicit
+        bitset(const _CharT* __str,
+	       typename std::basic_string<_CharT>::size_type __n
+	       = std::basic_string<_CharT>::npos,
+	       _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
+	: _Base(__str, __n, __zero, __one) { }
+#endif
+
+      // 23.3.5.2 bitset operations:
+      bitset<_Nb>&
+      operator&=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() &= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator|=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() |= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator^=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() ^= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator<<=(size_t __pos)
+      {
+	_M_base() <<= __pos;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator>>=(size_t __pos)
+      {
+	_M_base() >>= __pos;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      set()
+      {
+	_Base::set();
+	return *this;
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 186. bitset::set() second parameter should be bool
+      bitset<_Nb>&
+      set(size_t __pos, bool __val = true)
+      {
+	_Base::set(__pos, __val);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      reset()
+      {
+	_Base::reset();
+	return *this;
+      }
+
+      bitset<_Nb>&
+      reset(size_t __pos)
+      {
+	_Base::reset(__pos);
+	return *this;
+      }
+
+      bitset<_Nb> operator~() const { return bitset(~_M_base()); }
+
+      bitset<_Nb>&
+      flip()
+      {
+	_Base::flip();
+	return *this;
+      }
+
+      bitset<_Nb>&
+      flip(size_t __pos)
+      {
+	_Base::flip(__pos);
+	return *this;
+      }
+
+      // element access:
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 11. Bitset minor problems
+      reference
+      operator[](size_t __pos)
+      {
+	__glibcxx_check_subscript(__pos);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+	return _M_base()[__pos];
+#else
+	return reference(_M_base()[__pos], this);
+#endif
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 11. Bitset minor problems
+      bool
+      operator[](size_t __pos) const
+      {
+	__glibcxx_check_subscript(__pos);
+	return _M_base()[__pos];
+      }
+
+      using _Base::to_ulong;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::to_ullong;
+#endif
+
+      template <typename _CharT, typename _Traits, typename _Alloc>
+        std::basic_string<_CharT, _Traits, _Alloc>
+        to_string() const
+        { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	std::basic_string<_CharT, _Traits, _Alloc>
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  return _M_base().template
+	    to_string<_CharT, _Traits, _Alloc>(__zero, __one);
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 434. bitset::to_string() hard to use.
+      template<typename _CharT, typename _Traits>
+        std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+        to_string() const
+        { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 853. to_string needs updating with zero and one.
+      template<class _CharT, class _Traits>
+	std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{ return to_string<_CharT, _Traits,
+	                   std::allocator<_CharT> >(__zero, __one); }
+
+      template<typename _CharT>
+        std::basic_string<_CharT, std::char_traits<_CharT>,
+                          std::allocator<_CharT> >
+        to_string() const
+        {
+          return to_string<_CharT, std::char_traits<_CharT>,
+                           std::allocator<_CharT> >();
+        }
+
+      template<class _CharT>
+	std::basic_string<_CharT, std::char_traits<_CharT>,
+	                  std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  return to_string<_CharT, std::char_traits<_CharT>,
+	                   std::allocator<_CharT> >(__zero, __one);
+	}
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string() const
+      {
+	return to_string<char,std::char_traits<char>,std::allocator<char> >();
+      }
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string(char __zero, char __one = '1') const
+      {
+	return to_string<char, std::char_traits<char>,
+	                 std::allocator<char> >(__zero, __one);
+      }
+
+      using _Base::count;
+      using _Base::size;
+
+      bool
+      operator==(const bitset<_Nb>& __rhs) const
+      { return _M_base() == __rhs; }
+
+      bool
+      operator!=(const bitset<_Nb>& __rhs) const
+      { return _M_base() != __rhs; }
+
+      using _Base::test;
+      using _Base::all;
+      using _Base::any;
+      using _Base::none;
+
+      bitset<_Nb>
+      operator<<(size_t __pos) const
+      { return bitset<_Nb>(_M_base() << __pos); }
+
+      bitset<_Nb>
+      operator>>(size_t __pos) const
+      { return bitset<_Nb>(_M_base() >> __pos); }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) &= __y; }
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) |= __y; }
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) ^= __y; }
+
+  template<typename _CharT, typename _Traits, size_t _Nb>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
+    { return __is >> __x._M_base(); }
+
+  template<typename _CharT, typename _Traits, size_t _Nb>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const bitset<_Nb>& __x)
+    { return __os << __x._M_base(); }
+
+} // namespace __debug
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // DR 1182.
+  /// std::hash specialization for bitset.
+  template<size_t _Nb>
+    struct hash<__debug::bitset<_Nb>>
+    : public __hash_base<size_t, __debug::bitset<_Nb>>
+    {
+      size_t
+      operator()(const __debug::bitset<_Nb>& __b) const
+      { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); }
+    };
+#endif
+
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/debug.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/debug.h
new file mode 100644
index 000000000..6ea8e2add
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/debug.h
@@ -0,0 +1,129 @@
+// Debugging support implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/debug.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MACRO_SWITCH_H
+#define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1
+
+/** Macros and namespaces used by the implementation outside of debug
+ *  wrappers to verify certain properties. The __glibcxx_requires_xxx
+ *  macros are merely wrappers around the __glibcxx_check_xxx wrappers
+ *  when we are compiling with debug mode, but disappear when we are
+ *  in release mode so that there is no checking performed in, e.g.,
+ *  the standard library algorithms.
+*/
+
+// Debug mode namespaces.
+
+/**
+ * @namespace std::__debug
+ * @brief GNU debug code, replaces standard behavior with debug behavior.
+ */
+namespace std
+{ 
+  namespace __debug { } 
+}
+
+/** @namespace __gnu_debug
+ *  @brief GNU debug classes for public use.
+*/
+namespace __gnu_debug
+{
+  using namespace std::__debug;
+}
+
+#ifndef _GLIBCXX_DEBUG
+
+# define _GLIBCXX_DEBUG_ASSERT(_Condition)
+# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
+# define _GLIBCXX_DEBUG_ONLY(_Statement) ;
+# define __glibcxx_requires_cond(_Cond,_Msg)
+# define __glibcxx_requires_valid_range(_First,_Last)
+# define __glibcxx_requires_sorted(_First,_Last)
+# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred)
+# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2)
+# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred)
+# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)
+# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)
+# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred)
+# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred)
+# define __glibcxx_requires_heap(_First,_Last)
+# define __glibcxx_requires_heap_pred(_First,_Last,_Pred)
+# define __glibcxx_requires_nonempty()
+# define __glibcxx_requires_string(_String)
+# define __glibcxx_requires_string_len(_String,_Len)
+# define __glibcxx_requires_subscript(_N)
+
+#else
+
+# include <debug/macros.h>
+
+#define _GLIBCXX_DEBUG_ASSERT(_Condition) __glibcxx_assert(_Condition)
+
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition)
+#else
+# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
+#endif
+
+# define _GLIBCXX_DEBUG_ONLY(_Statement) _Statement
+
+# define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg)
+# define __glibcxx_requires_valid_range(_First,_Last) \
+     __glibcxx_check_valid_range(_First,_Last)
+# define __glibcxx_requires_sorted(_First,_Last) \
+     __glibcxx_check_sorted(_First,_Last)
+# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \
+     __glibcxx_check_sorted_pred(_First,_Last,_Pred)
+# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \
+     __glibcxx_check_sorted_set(_First1,_Last1,_First2)
+# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \
+     __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred)
+# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)	\
+     __glibcxx_check_partitioned_lower(_First,_Last,_Value)
+# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)	\
+     __glibcxx_check_partitioned_upper(_First,_Last,_Value)
+# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
+     __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred)
+# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
+     __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred)
+# define __glibcxx_requires_heap(_First,_Last) \
+     __glibcxx_check_heap(_First,_Last)
+# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \
+     __glibcxx_check_heap_pred(_First,_Last,_Pred)
+# define __glibcxx_requires_nonempty() __glibcxx_check_nonempty()
+# define __glibcxx_requires_string(_String) __glibcxx_check_string(_String)
+# define __glibcxx_requires_string_len(_String,_Len)	\
+     __glibcxx_check_string_len(_String,_Len)
+# define __glibcxx_requires_subscript(_N) __glibcxx_check_subscript(_N)
+
+# include <debug/functions.h>
+
+#endif
+
+#endif // _GLIBCXX_DEBUG_MACRO_SWITCH_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/deque b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/deque
new file mode 100644
index 000000000..ee17f2041
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/deque
@@ -0,0 +1,556 @@
+// Debugging deque implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/deque
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_DEQUE
+#define _GLIBCXX_DEBUG_DEQUE 1
+
+#include <deque>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::deque with safety/checking/debug instrumentation.
+  template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
+    class deque
+    : public _GLIBCXX_STD_C::deque<_Tp, _Allocator>,
+      public __gnu_debug::_Safe_sequence<deque<_Tp, _Allocator> >
+    {
+      typedef  _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<deque> _Safe_base;
+
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,deque>
+						    iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,deque>
+						    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.2.1.1 construct/copy/destroy:
+      explicit
+      deque(const _Allocator& __a = _Allocator())
+      : _Base(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      deque(size_type __n)
+      : _Base(__n) { }
+
+      deque(size_type __n, const _Tp& __value,
+	    const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#else
+      explicit
+      deque(size_type __n, const _Tp& __value = _Tp(),
+	    const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#endif
+
+      template<class _InputIterator>
+        deque(_InputIterator __first, _InputIterator __last,
+	      const _Allocator& __a = _Allocator())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __a)
+        { }
+
+      deque(const deque& __x)
+      : _Base(__x), _Safe_base() { }
+
+      deque(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      deque(deque&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      deque(initializer_list<value_type> __l,
+	    const allocator_type& __a = allocator_type())
+      : _Base(__l, __a), _Safe_base() { }
+#endif
+
+      ~deque() { }
+
+      deque&
+      operator=(const deque& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      deque&
+      operator=(deque&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      deque&
+      operator=(initializer_list<value_type> __l)
+      {
+	*static_cast<_Base*>(this) = __l;
+	this->_M_invalidate_all();
+	return *this;
+      }
+#endif
+
+      template<class _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::assign(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	  this->_M_invalidate_all();
+	}
+
+      void
+      assign(size_type __n, const _Tp& __t)
+      {
+	_Base::assign(__n, __t);
+	this->_M_invalidate_all();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      assign(initializer_list<value_type> __l)
+      {
+	_Base::assign(__l);
+	this->_M_invalidate_all();
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+    private:
+      void
+      _M_invalidate_after_nth(difference_type __n)
+      {
+	typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
+	this->_M_invalidate_if(_After_nth(__n, _Base::begin()));
+      }
+      
+    public:
+      // 23.2.1.2 capacity:
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      {
+	bool __invalidate_all = __sz > this->size();
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+
+	_Base::resize(__sz);
+
+	if (__invalidate_all)
+	  this->_M_invalidate_all();
+      }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      {
+	bool __invalidate_all = __sz > this->size();
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+
+	_Base::resize(__sz, __c);
+
+	if (__invalidate_all)
+	  this->_M_invalidate_all();
+      }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      {
+	bool __invalidate_all = __sz > this->size();
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+
+	_Base::resize(__sz, __c);
+
+	if (__invalidate_all)
+	  this->_M_invalidate_all();
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::shrink_to_fit;
+#endif
+
+      using _Base::empty;
+
+      // element access:
+      reference
+      operator[](size_type __n)
+      {
+	__glibcxx_check_subscript(__n);
+	return _M_base()[__n];
+      }
+
+      const_reference
+      operator[](size_type __n) const
+      {
+	__glibcxx_check_subscript(__n);
+	return _M_base()[__n];
+      }
+
+      using _Base::at;
+
+      reference
+      front()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      reference
+      back()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      // 23.2.1.3 modifiers:
+      void
+      push_front(const _Tp& __x)
+      {
+	_Base::push_front(__x);
+	this->_M_invalidate_all();
+      }
+
+      void
+      push_back(const _Tp& __x)
+      {
+	_Base::push_back(__x);
+	this->_M_invalidate_all();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_front(_Tp&& __x)
+      { emplace_front(std::move(__x)); }
+
+      void
+      push_back(_Tp&& __x)
+      { emplace_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_front(_Args&&... __args)
+	{
+	  _Base::emplace_front(std::forward<_Args>(__args)...);
+	  this->_M_invalidate_all();
+	}
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args)
+	{
+	  _Base::emplace_back(std::forward<_Args>(__args)...);
+	  this->_M_invalidate_all();
+	}
+
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args)
+	{
+	  __glibcxx_check_insert(__position);
+	  _Base_iterator __res = _Base::emplace(__position.base(),
+						std::forward<_Args>(__args)...);
+	  this->_M_invalidate_all();
+	  return iterator(__res, this);
+	}
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	_Base_iterator __res = _Base::insert(__position.base(), __x);
+	this->_M_invalidate_all();
+	return iterator(__res, this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(iterator __position, _Tp&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      void
+      insert(iterator __p, initializer_list<value_type> __l)
+      {
+	_Base::insert(__p, __l);
+	this->_M_invalidate_all();
+      }
+#endif
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	_Base::insert(__position.base(), __n, __x);
+	this->_M_invalidate_all();
+      }
+
+      template<class _InputIterator>
+        void
+        insert(iterator __position,
+	       _InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_insert_range(__position, __first, __last);
+	  _Base::insert(__position.base(), __gnu_debug::__base(__first),
+					   __gnu_debug::__base(__last));
+	  this->_M_invalidate_all();
+	}
+
+      void
+      pop_front()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if(_Equal(_Base::begin()));
+	_Base::pop_front();
+      }
+
+      void
+      pop_back()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if(_Equal(--_Base::end()));
+	_Base::pop_back();
+      }
+
+      iterator
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	_Base_iterator __victim = __position.base();
+	if (__victim == _Base::begin() || __victim == _Base::end()-1)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    return iterator(_Base::erase(__victim), this);
+	  }
+	else
+	  {
+	    _Base_iterator __res = _Base::erase(__victim);
+	    this->_M_invalidate_all();
+	    return iterator(__res, this);
+	  }
+      }
+
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+        if (__first.base() == _Base::begin() || __last.base() == _Base::end())
+	  {
+	    this->_M_detach_singular();
+	    for (_Base_iterator __position = __first.base();
+		 __position != __last.base(); ++__position)
+	      {
+		this->_M_invalidate_if(_Equal(__position));
+	      }
+	    __try
+	      {
+		return iterator(_Base::erase(__first.base(), __last.base()),
+				this);
+	      }
+	    __catch(...)
+	      {
+		this->_M_revalidate_singular();
+		__throw_exception_again;
+	      }
+	  }
+	else
+	  {
+	    _Base_iterator __res = _Base::erase(__first.base(),
+						__last.base());
+	    this->_M_invalidate_all();
+	    return iterator(__res, this);
+	  }
+      }
+
+      void
+      swap(deque& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const deque<_Tp, _Alloc>& __lhs,
+	      const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const deque<_Tp, _Alloc>& __lhs,
+	      const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/formatter.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/formatter.h
new file mode 100644
index 000000000..065a50274
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/formatter.h
@@ -0,0 +1,415 @@
+// Debug-mode error formatting implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/formatter.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_FORMATTER_H
+#define _GLIBCXX_DEBUG_FORMATTER_H 1
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+#include <typeinfo>
+
+namespace __gnu_debug
+{
+  using std::type_info;
+
+  template<typename _Iterator>
+    bool __check_singular(_Iterator&);
+
+  class _Safe_sequence_base;
+
+  template<typename _Iterator, typename _Sequence>
+    class _Safe_iterator;
+
+  template<typename _Sequence>
+    class _Safe_sequence;
+
+  enum _Debug_msg_id
+  {
+    // General checks
+    __msg_valid_range,
+    __msg_insert_singular,
+    __msg_insert_different,
+    __msg_erase_bad,
+    __msg_erase_different,
+    __msg_subscript_oob,
+    __msg_empty,
+    __msg_unpartitioned,
+    __msg_unpartitioned_pred,
+    __msg_unsorted,
+    __msg_unsorted_pred,
+    __msg_not_heap,
+    __msg_not_heap_pred,
+    // std::bitset checks
+    __msg_bad_bitset_write,
+    __msg_bad_bitset_read,
+    __msg_bad_bitset_flip,
+    // std::list checks
+    __msg_self_splice,
+    __msg_splice_alloc,
+    __msg_splice_bad,
+    __msg_splice_other,
+    __msg_splice_overlap,
+    // iterator checks
+    __msg_init_singular,
+    __msg_init_copy_singular,
+    __msg_init_const_singular,
+    __msg_copy_singular,
+    __msg_bad_deref,
+    __msg_bad_inc,
+    __msg_bad_dec,
+    __msg_iter_subscript_oob,
+    __msg_advance_oob,
+    __msg_retreat_oob,
+    __msg_iter_compare_bad,
+    __msg_compare_different,
+    __msg_iter_order_bad,
+    __msg_order_different,
+    __msg_distance_bad,
+    __msg_distance_different,
+    // istream_iterator
+    __msg_deref_istream,
+    __msg_inc_istream,
+    // ostream_iterator
+    __msg_output_ostream,
+    // istreambuf_iterator
+    __msg_deref_istreambuf,
+    __msg_inc_istreambuf,
+    // forward_list
+    __msg_insert_after_end,
+    __msg_erase_after_bad,
+    __msg_valid_range2
+  };
+
+  class _Error_formatter
+  {
+    /// Whether an iterator is constant, mutable, or unknown
+    enum _Constness
+    {
+      __unknown_constness,
+      __const_iterator,
+      __mutable_iterator,
+      __last_constness
+    };
+
+    // The state of the iterator (fine-grained), if we know it.
+    enum _Iterator_state
+    {
+      __unknown_state,
+      __singular,      // singular, may still be attached to a sequence
+      __begin,         // dereferenceable, and at the beginning
+      __middle,        // dereferenceable, not at the beginning
+      __end,           // past-the-end, may be at beginning if sequence empty
+      __before_begin,  // before begin
+      __last_state
+    };
+
+    // Tags denoting the type of parameter for construction
+    struct _Is_iterator { };
+    struct _Is_sequence { };
+
+    // A parameter that may be referenced by an error message
+    struct _Parameter
+    {
+      enum
+      {
+	__unused_param,
+	__iterator,
+	__sequence,
+	__integer,
+	__string
+      } _M_kind;
+
+      union
+      {
+	// When _M_kind == __iterator
+	struct
+	{
+	  const char*      _M_name;
+	  const void*      _M_address;
+	  const type_info* _M_type;
+	  _Constness       _M_constness;
+	  _Iterator_state  _M_state;
+	  const void*      _M_sequence;
+	  const type_info* _M_seq_type;
+	} _M_iterator;
+
+	// When _M_kind == __sequence
+	struct
+	{
+	  const char*      _M_name;
+	  const void*      _M_address;
+	  const type_info* _M_type;
+	} _M_sequence;
+
+	// When _M_kind == __integer
+	struct
+	{
+	  const char* _M_name;
+	  long        _M_value;
+	} _M_integer;
+
+	// When _M_kind == __string
+	struct
+	{
+	  const char* _M_name;
+	  const char* _M_value;
+	} _M_string;
+      } _M_variant;
+
+      _Parameter() : _M_kind(__unused_param), _M_variant() { }
+
+      _Parameter(long __value, const char* __name) 
+      : _M_kind(__integer), _M_variant()
+      {
+	_M_variant._M_integer._M_name = __name;
+	_M_variant._M_integer._M_value = __value;
+      }
+
+      _Parameter(const char* __value, const char* __name) 
+      : _M_kind(__string), _M_variant()
+      {
+	_M_variant._M_string._M_name = __name;
+	_M_variant._M_string._M_value = __value;
+      }
+
+      template<typename _Iterator, typename _Sequence>
+        _Parameter(const _Safe_iterator<_Iterator, _Sequence>& __it,
+		   const char* __name, _Is_iterator)
+	: _M_kind(__iterator),  _M_variant()
+        {
+	  _M_variant._M_iterator._M_name = __name;
+	  _M_variant._M_iterator._M_address = &__it;
+#ifdef __GXX_RTTI
+	  _M_variant._M_iterator._M_type = &typeid(__it);
+#else
+	  _M_variant._M_iterator._M_type = 0;
+#endif
+	  _M_variant._M_iterator._M_constness =
+	    std::__are_same<_Safe_iterator<_Iterator, _Sequence>,
+	                    typename _Sequence::iterator>::
+	      __value ? __mutable_iterator : __const_iterator;
+	  _M_variant._M_iterator._M_sequence = __it._M_get_sequence();
+#ifdef __GXX_RTTI
+	  _M_variant._M_iterator._M_seq_type = &typeid(_Sequence);
+#else
+	  _M_variant._M_iterator._M_seq_type = 0;
+#endif
+
+	  if (__it._M_singular())
+	    _M_variant._M_iterator._M_state = __singular;
+	  else
+	    {
+	      if (__it._M_is_before_begin())
+		_M_variant._M_iterator._M_state = __before_begin;
+	      else if (__it._M_is_end())
+		_M_variant._M_iterator._M_state = __end;
+	      else if (__it._M_is_begin())
+		_M_variant._M_iterator._M_state = __begin;
+	      else
+		_M_variant._M_iterator._M_state = __middle;
+	    }
+	}
+
+      template<typename _Type>
+        _Parameter(const _Type*& __it, const char* __name, _Is_iterator)
+        : _M_kind(__iterator), _M_variant()
+        {
+	  _M_variant._M_iterator._M_name = __name;
+	  _M_variant._M_iterator._M_address = &__it;
+#ifdef __GXX_RTTI
+	  _M_variant._M_iterator._M_type = &typeid(__it);
+#else
+	  _M_variant._M_iterator._M_type = 0;
+#endif
+	  _M_variant._M_iterator._M_constness = __mutable_iterator;
+	  _M_variant._M_iterator._M_state = __it? __unknown_state : __singular;
+	  _M_variant._M_iterator._M_sequence = 0;
+	  _M_variant._M_iterator._M_seq_type = 0;
+	}
+
+      template<typename _Type>
+        _Parameter(_Type*& __it, const char* __name, _Is_iterator)
+        : _M_kind(__iterator), _M_variant()
+        {
+	  _M_variant._M_iterator._M_name = __name;
+	  _M_variant._M_iterator._M_address = &__it;
+#ifdef __GXX_RTTI
+	  _M_variant._M_iterator._M_type = &typeid(__it);
+#else
+	  _M_variant._M_iterator._M_type = 0;
+#endif
+	  _M_variant._M_iterator._M_constness = __const_iterator;
+	  _M_variant._M_iterator._M_state = __it? __unknown_state : __singular;
+	  _M_variant._M_iterator._M_sequence = 0;
+	  _M_variant._M_iterator._M_seq_type = 0;
+	}
+
+      template<typename _Iterator>
+        _Parameter(const _Iterator& __it, const char* __name, _Is_iterator)
+        : _M_kind(__iterator), _M_variant()
+        {
+	  _M_variant._M_iterator._M_name = __name;
+	  _M_variant._M_iterator._M_address = &__it;
+#ifdef __GXX_RTTI
+	  _M_variant._M_iterator._M_type = &typeid(__it);
+#else
+	  _M_variant._M_iterator._M_type = 0;
+#endif
+	  _M_variant._M_iterator._M_constness = __unknown_constness;
+	  _M_variant._M_iterator._M_state =
+	    __gnu_debug::__check_singular(__it)? __singular : __unknown_state;
+	  _M_variant._M_iterator._M_sequence = 0;
+	  _M_variant._M_iterator._M_seq_type = 0;
+	}
+
+      template<typename _Sequence>
+        _Parameter(const _Safe_sequence<_Sequence>& __seq,
+		   const char* __name, _Is_sequence)
+        : _M_kind(__sequence), _M_variant()
+        {
+	  _M_variant._M_sequence._M_name = __name;
+	  _M_variant._M_sequence._M_address =
+	    static_cast<const _Sequence*>(&__seq);
+#ifdef __GXX_RTTI
+	  _M_variant._M_sequence._M_type = &typeid(_Sequence);
+#else
+	  _M_variant._M_sequence._M_type = 0;
+#endif
+	}
+
+      template<typename _Sequence>
+        _Parameter(const _Sequence& __seq, const char* __name, _Is_sequence)
+        : _M_kind(__sequence), _M_variant()
+        {
+	  _M_variant._M_sequence._M_name = __name;
+	  _M_variant._M_sequence._M_address = &__seq;
+#ifdef __GXX_RTTI
+	  _M_variant._M_sequence._M_type = &typeid(_Sequence);
+#else
+	  _M_variant._M_sequence._M_type = 0;
+#endif
+	}
+
+      void
+      _M_print_field(const _Error_formatter* __formatter,
+		     const char* __name) const;
+
+      void
+      _M_print_description(const _Error_formatter* __formatter) const;
+    };
+
+    friend struct _Parameter;
+
+  public:
+    template<typename _Iterator>
+      const _Error_formatter&
+      _M_iterator(const _Iterator& __it, const char* __name = 0)  const
+      {
+	if (_M_num_parameters < std::size_t(__max_parameters))
+	  _M_parameters[_M_num_parameters++] = _Parameter(__it, __name,
+							  _Is_iterator());
+	return *this;
+      }
+
+    const _Error_formatter&
+    _M_integer(long __value, const char* __name = 0) const
+    {
+      if (_M_num_parameters < std::size_t(__max_parameters))
+	_M_parameters[_M_num_parameters++] = _Parameter(__value, __name);
+      return *this;
+    }
+
+    const _Error_formatter&
+    _M_string(const char* __value, const char* __name = 0) const
+    {
+      if (_M_num_parameters < std::size_t(__max_parameters))
+	_M_parameters[_M_num_parameters++] = _Parameter(__value, __name);
+      return *this;
+    }
+
+    template<typename _Sequence>
+      const _Error_formatter&
+      _M_sequence(const _Sequence& __seq, const char* __name = 0) const
+      {
+	if (_M_num_parameters < std::size_t(__max_parameters))
+	  _M_parameters[_M_num_parameters++] = _Parameter(__seq, __name,
+							  _Is_sequence());
+	return *this;
+      }
+
+    const _Error_formatter&
+    _M_message(const char* __text) const
+    { _M_text = __text; return *this; }
+
+    const _Error_formatter&
+    _M_message(_Debug_msg_id __id) const throw ();
+
+    _GLIBCXX_NORETURN void
+    _M_error() const;
+
+  private:
+    _Error_formatter(const char* __file, std::size_t __line)
+    : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0),
+      _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
+    { _M_get_max_length(); }
+
+    template<typename _Tp>
+      void
+      _M_format_word(char*, int, const char*, _Tp) const throw ();
+
+    void
+    _M_print_word(const char* __word) const;
+
+    void
+    _M_print_string(const char* __string) const;
+
+    void
+    _M_get_max_length() const throw ();
+
+    enum { __max_parameters = 9 };
+
+    const char*         _M_file;
+    std::size_t         _M_line;
+    mutable _Parameter  _M_parameters[__max_parameters];
+    mutable std::size_t _M_num_parameters;
+    mutable const char* _M_text;
+    mutable std::size_t _M_max_length;
+    enum { _M_indent = 4 } ;
+    mutable std::size_t _M_column;
+    mutable bool        _M_first_line;
+    mutable bool        _M_wordwrap;
+
+  public:
+    static _Error_formatter
+    _M_at(const char* __file, std::size_t __line)
+    { return _Error_formatter(__file, __line); }
+  };
+} // namespace __gnu_debug
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/forward_list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/forward_list
new file mode 100644
index 000000000..70bd75a86
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/forward_list
@@ -0,0 +1,741 @@
+// <forward_list> -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/forward_list
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_FORWARD_LIST
+#define _GLIBCXX_DEBUG_FORWARD_LIST 1
+
+#pragma GCC system_header
+
+#include <forward_list>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::forward_list with safety/checking/debug instrumentation.
+  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+    class forward_list
+    : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>,
+      public __gnu_debug::_Safe_sequence<forward_list<_Tp, _Alloc> >
+    {
+      typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base;
+      typedef __gnu_debug::_Safe_sequence<forward_list> _Safe_base;
+
+      typedef typename _Base::iterator       _Base_iterator;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,
+					  forward_list> iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  forward_list> const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp                                   value_type;
+      typedef _Alloc                                allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+
+      // 23.2.3.1 construct/copy/destroy:
+      explicit
+      forward_list(const _Alloc& __al = _Alloc())
+      : _Base(__al) { }
+
+      forward_list(const forward_list& __list, const _Alloc& __al)
+      : _Base(__list, __al)
+      { }
+
+      forward_list(forward_list&& __list, const _Alloc& __al)
+      : _Base(std::move(__list._M_base()), __al)
+      {
+	this->_M_swap(__list);
+      }
+
+      explicit
+      forward_list(size_type __n)
+      : _Base(__n)
+      { }
+
+      forward_list(size_type __n, const _Tp& __value,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__n, __value, __al)
+      { }
+
+      template<typename _InputIterator>
+        forward_list(_InputIterator __first, _InputIterator __last,
+                     const _Alloc& __al = _Alloc())
+        : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __al)
+        { }
+
+      forward_list(const forward_list& __list)
+      : _Base(__list)
+      { }
+
+      forward_list(forward_list&& __list)
+      : _Base(std::move(__list._M_base()))
+      {
+	this->_M_swap(__list);
+      }
+
+      forward_list(std::initializer_list<_Tp> __il,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__il, __al)
+      { }
+
+      ~forward_list()
+      { }
+
+      forward_list&
+      operator=(const forward_list& __list)
+      {
+	static_cast<_Base&>(*this) = __list;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      forward_list&
+      operator=(forward_list&& __list)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__list);
+	return *this;
+      }
+
+      forward_list&
+      operator=(std::initializer_list<_Tp> __il)
+      {
+	static_cast<_Base&>(*this) = __il;
+	this->_M_invalidate_all();
+        return *this;
+      }
+
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::assign(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	  this->_M_invalidate_all();
+        }
+
+      void
+      assign(size_type __n, const _Tp& __val)
+      {
+	_Base::assign(__n, __val);
+	this->_M_invalidate_all();
+      }
+
+      void
+      assign(std::initializer_list<_Tp> __il)
+      {
+	_Base::assign(__il);
+	this->_M_invalidate_all();
+      }
+
+      using _Base::get_allocator;
+
+      // iterators:
+
+      iterator
+      before_begin()
+      { return iterator(_Base::before_begin(), this); }
+
+      const_iterator
+      before_begin() const
+      { return const_iterator(_Base::before_begin(), this); }
+
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::cbegin(), this); }
+
+      const_iterator
+      cbefore_begin() const
+      { return const_iterator(_Base::cbefore_begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::cend(), this); }
+
+      using _Base::empty;
+      using _Base::max_size;
+
+      // element access:
+
+      reference
+      front()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      // modifiers:
+
+      using _Base::emplace_front;
+      using _Base::push_front;
+
+      void
+      pop_front()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if([this](_Base_const_iterator __it)
+	  { return __it == this->_M_base().cbegin(); });
+	_Base::pop_front();
+      }
+
+      template<typename... _Args>
+	iterator
+	emplace_after(const_iterator __pos, _Args&&... __args)
+	{
+	  __glibcxx_check_insert_after(__pos);
+	  return iterator(_Base::emplace_after(__pos.base(),
+					std::forward<_Args>(__args)...),
+			  this);
+       	}
+
+      iterator
+      insert_after(const_iterator __pos, const _Tp& __val)
+      {
+	__glibcxx_check_insert_after(__pos);
+	return iterator(_Base::insert_after(__pos.base(), __val), this);
+      }
+
+      iterator
+      insert_after(const_iterator __pos, _Tp&& __val)
+      {
+	__glibcxx_check_insert_after(__pos);
+	return iterator(_Base::insert_after(__pos.base(), std::move(__val)),
+		       	this);
+      }
+
+      iterator
+      insert_after(const_iterator __pos, size_type __n, const _Tp& __val)
+      {
+	__glibcxx_check_insert_after(__pos);
+	return iterator(_Base::insert_after(__pos.base(), __n, __val),
+		       	this);
+      }
+
+      template<typename _InputIterator>
+        iterator
+        insert_after(const_iterator __pos,
+                     _InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_insert_range_after(__pos, __first, __last);
+	  return iterator(_Base::insert_after(__pos.base(),
+					      __gnu_debug::__base(__first),
+					      __gnu_debug::__base(__last)),
+			  this);
+        }
+
+      iterator
+      insert_after(const_iterator __pos, std::initializer_list<_Tp> __il)
+      {
+	__glibcxx_check_insert_after(__pos);
+	return iterator(_Base::insert_after(__pos.base(), __il), this);
+      }
+
+    private:
+      _Base_iterator
+      _M_erase_after(_Base_const_iterator __pos)
+      {
+	_Base_const_iterator __next = std::next(__pos);
+	this->_M_invalidate_if([__next](_Base_const_iterator __it)
+	  { return __it == __next; });
+	return _Base::erase_after(__pos);
+      }
+    public:
+      iterator
+      erase_after(const_iterator __pos)
+      {
+	__glibcxx_check_erase_after(__pos);
+	return iterator(_M_erase_after(__pos.base()), this);
+      }
+
+      iterator
+      erase_after(const_iterator __pos, const_iterator __last)
+      {
+	__glibcxx_check_erase_range_after(__pos, __last);
+	for (_Base_const_iterator __victim = std::next(__pos.base());
+	    __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range2)
+				  ._M_sequence(*this, "this")
+				  ._M_iterator(__pos, "pos")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if([__victim](_Base_const_iterator __it)
+	      { return __it == __victim; });
+	  }
+	return iterator(_Base::erase_after(__pos.base(), __last.base()), this);
+      }
+
+      void
+      swap(forward_list& __list)
+      {
+	_Base::swap(__list);
+	this->_M_swap(__list);
+      }
+
+      void
+      resize(size_type __sz)
+      {
+	this->_M_detach_singular();
+
+	// if __sz < size(), invalidate all iterators in [begin+__sz, end()
+	_Base_iterator __victim = _Base::begin();
+	_Base_iterator __end = _Base::end();
+	for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
+	  ++__victim;
+
+	for (; __victim != __end; ++__victim)
+	  {
+	    this->_M_invalidate_if([__victim](_Base_const_iterator __it)
+	      { return __it == __victim; });
+	  }
+
+	__try
+	  {
+	    _Base::resize(__sz);
+	  }
+	__catch(...)
+	  {
+	    this->_M_revalidate_singular();
+	    __throw_exception_again;
+          }
+      }
+
+      void
+      resize(size_type __sz, const value_type& __val)
+      {
+	this->_M_detach_singular();
+
+	// if __sz < size(), invalidate all iterators in [begin+__sz, end())
+	_Base_iterator __victim = _Base::begin();
+	_Base_iterator __end = _Base::end();
+	for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
+	  ++__victim;
+
+	for (; __victim != __end; ++__victim)
+	  {
+	    this->_M_invalidate_if([__victim](_Base_const_iterator __it)
+	      { return __it == __victim; });
+	  }
+
+	__try
+	  {
+	    _Base::resize(__sz, __val);
+	  }
+	__catch(...)
+	  {
+	    this->_M_revalidate_singular();
+	    __throw_exception_again;
+          }
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      // 23.2.3.5 forward_list operations:
+      void
+      splice_after(const_iterator __pos, forward_list&& __list)
+      {
+        __glibcxx_check_insert_after(__pos);
+	_GLIBCXX_DEBUG_VERIFY(&__list != this,
+			      _M_message(__gnu_debug::__msg_self_splice)
+			      ._M_sequence(*this, "this"));
+	this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it)
+	  {
+	    return __it != __list._M_base().cbefore_begin()
+		   && __it != __list._M_base().end();
+	  });
+	_Base::splice_after(__pos.base(), std::move(__list._M_base()));
+      }
+
+      void
+      splice_after(const_iterator __pos, forward_list&& __list,
+		   const_iterator __i)
+      {
+	__glibcxx_check_insert_after(__pos);
+	_GLIBCXX_DEBUG_VERIFY(__i._M_before_dereferenceable(),
+			      _M_message(__gnu_debug::__msg_splice_bad)
+			      ._M_iterator(__i, "__i"));
+	_GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__list),
+			      _M_message(__gnu_debug::__msg_splice_other)
+			      ._M_iterator(__i, "__i")
+			      ._M_sequence(__list, "__list"));
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 250. splicing invalidates iterators
+	_Base_const_iterator __next = std::next(__i.base());
+	this->_M_transfer_from_if(__list, [__next](_Base_const_iterator __it)
+	  { return __it == __next; });
+	_Base::splice_after(__pos.base(), std::move(__list._M_base()),
+			    __i.base());
+      }
+
+      void
+      splice_after(const_iterator __pos, forward_list&& __list,
+		   const_iterator __before, const_iterator __last)
+      {
+        __glibcxx_check_insert_after(__pos);
+	__glibcxx_check_valid_range(__before, __last);
+	_GLIBCXX_DEBUG_VERIFY(__before._M_attached_to(&__list),
+			      _M_message(__gnu_debug::__msg_splice_other)
+			      ._M_sequence(__list, "list")
+			      ._M_iterator(__before, "before"));
+	_GLIBCXX_DEBUG_VERIFY(__before._M_dereferenceable()
+			      || __before._M_is_before_begin(),
+			      _M_message(__gnu_debug::__msg_valid_range2)
+			      ._M_sequence(__list, "list")
+			      ._M_iterator(__before, "before")
+			      ._M_iterator(__last, "last"));
+	_GLIBCXX_DEBUG_VERIFY(__before != __last,
+			      _M_message(__gnu_debug::__msg_valid_range2)
+			      ._M_sequence(__list, "list")
+			      ._M_iterator(__before, "before")
+			      ._M_iterator(__last, "last"));
+
+	for (_Base_const_iterator __tmp = std::next(__before.base());
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != __list._M_base().end(),
+				  _M_message(__gnu_debug::__msg_valid_range2)
+				  ._M_sequence(__list, "list")
+				  ._M_iterator(__before, "before")
+				  ._M_iterator(__last, "last"));
+	    _GLIBCXX_DEBUG_VERIFY(&__list != this || __tmp != __pos.base(),
+                                  _M_message(__gnu_debug::__msg_splice_overlap)
+                                  ._M_iterator(__tmp, "position")
+				  ._M_iterator(__before, "before")
+				  ._M_iterator(__last, "last"));
+	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	    // 250. splicing invalidates iterators
+	    this->_M_transfer_from_if(__list, [__tmp](_Base_const_iterator __it)
+	      { return __it == __tmp; });
+	  }
+
+	_Base::splice_after(__pos.base(), std::move(__list._M_base()),
+			    __before.base(), __last.base());
+      }
+
+      void
+      remove(const _Tp& __val)
+      {
+	_Base_iterator __x = _Base::before_begin();
+	_Base_iterator __old = __x++;
+	while (__x != _Base::end())
+	  {
+	    if (*__x == __val)
+	      __x = _M_erase_after(__old);
+	    else
+	      __old = __x++;
+	  }
+      }
+
+      template<typename _Pred>
+        void
+        remove_if(_Pred __pred)
+	{
+	  _Base_iterator __x = _Base::before_begin();
+	  _Base_iterator __old = __x++;
+	  while (__x != _Base::end())
+	    {
+	      if (__pred(*__x))
+		__x = _M_erase_after(__old);
+	      else
+		__old = __x++;
+	    }
+	}
+
+      void
+      unique()
+      {
+	_Base_iterator __first = _Base::begin();
+	_Base_iterator __last = _Base::end();
+	if (__first == __last)
+	  return;
+	_Base_iterator __next = std::next(__first);
+	while (__next != __last)
+	  {
+	    if (*__first == *__next)
+	      __next = _M_erase_after(__first);
+	    else
+	      __first = __next++;
+	  }
+      }
+
+      template<typename _BinPred>
+        void
+        unique(_BinPred __binary_pred)
+	{
+	  _Base_iterator __first = _Base::begin();
+	  _Base_iterator __last = _Base::end();
+	  if (__first == __last)
+	    return;
+	  _Base_iterator __next = std::next(__first);
+	  while (__next != __last)
+	    {
+	      if (__binary_pred(*__first, *__next))
+		__next = _M_erase_after(__first);
+	      else
+		__first = __next++;
+	    }
+	}
+
+      void
+      merge(forward_list&& __list)
+      {
+	if (this != &__list)
+	{
+	  __glibcxx_check_sorted(_Base::begin(), _Base::end());
+	  __glibcxx_check_sorted(__list._M_base().begin(),
+				 __list._M_base().end());
+	  this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it)
+	    {
+	      return __it != __list._M_base().cbefore_begin()
+		     && __it != __list._M_base().cend();
+	    });
+	  _Base::merge(std::move(__list._M_base()));
+	}
+      }
+
+      template<typename _Comp>
+        void
+        merge(forward_list&& __list, _Comp __comp)
+	{
+	  if (this != &__list)
+	  {
+	    __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp);
+	    __glibcxx_check_sorted_pred(__list._M_base().begin(),
+					__list._M_base().end(), __comp);
+	    this->_M_transfer_from_if(__list,
+				      [&__list](_Base_const_iterator __it)
+	      {
+	        return __it != __list._M_base().cbefore_begin()
+		       && __it != __list._M_base().cend();
+	      });
+	    _Base::merge(std::move(__list._M_base()), __comp);
+	  }
+	}
+
+      using _Base::sort;
+      using _Base::reverse;
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	this->_M_invalidate_if([this](_Base_const_iterator __it)
+	  {
+	    return __it != this->_M_base().cbefore_begin()
+		   && __it != this->_M_base().cend();
+	  });
+      }
+      typedef __gnu_debug::_Safe_iterator_base _Safe_iterator_base;
+      static void
+      _M_swap_aux(forward_list& __lhs,
+		  _Safe_iterator_base*& __lhs_iterators,
+		  forward_list& __rhs,
+		  _Safe_iterator_base*& __rhs_iterators);
+      void _M_swap(forward_list& __list);
+    };
+
+   template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    _M_swap_aux(forward_list<_Tp, _Alloc>& __lhs,
+		__gnu_debug::_Safe_iterator_base*& __lhs_iterators,
+		forward_list<_Tp, _Alloc>& __rhs,
+		__gnu_debug::_Safe_iterator_base*& __rhs_iterators)
+    {
+      using __gnu_debug::_Safe_iterator_base;
+      _Safe_iterator_base* __bbegin_its = 0;
+      _Safe_iterator_base* __last_bbegin = 0;
+      for (_Safe_iterator_base* __iter = __lhs_iterators; __iter;)
+	{
+	  // Even iterator are casted to const_iterator, not a problem.
+	  const_iterator* __victim = static_cast<const_iterator*>(__iter);
+	  __iter = __iter->_M_next;
+	  if (__victim->base() == __rhs._M_base().cbefore_begin())
+	    {
+	      __victim->_M_unlink();
+	      if (__lhs_iterators == __victim)
+		__lhs_iterators = __victim->_M_next;
+	      if (__bbegin_its)
+		{
+		  __victim->_M_next = __bbegin_its;
+		  __bbegin_its->_M_prior = __victim;
+		}
+	      else
+		__last_bbegin = __victim;
+	      __bbegin_its = __victim;
+	    }
+	  else
+	    __victim->_M_sequence = &__lhs;
+	}
+
+      if (__bbegin_its)
+	{
+	  if (__rhs_iterators)
+	    {
+	      __rhs_iterators->_M_prior = __last_bbegin;
+	      __last_bbegin->_M_next = __rhs_iterators;
+	    }
+	  __rhs_iterators = __bbegin_its;
+	}
+    }
+
+  /* Special forward_list _M_swap version that do not swap the
+   * before-begin ownership.*/
+  template<typename _Tp, typename _Alloc>
+    void
+    forward_list<_Tp, _Alloc>::
+    _M_swap(forward_list<_Tp, _Alloc>& __list)
+    {
+      __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
+      std::swap(this->_M_iterators, __list._M_iterators);
+      std::swap(this->_M_const_iterators, __list._M_const_iterators);
+      // Useless, always 1 on forward_list
+      //std::swap(this->_M_version, __list._M_version);
+      _Safe_iterator_base* __this_its = this->_M_iterators;
+      _M_swap_aux(__list, __list._M_iterators, *this, this->_M_iterators);
+      _Safe_iterator_base* __this_const_its = this->_M_const_iterators;
+      _M_swap_aux(__list, __list._M_const_iterators, *this, this->_M_const_iterators);
+      _M_swap_aux(*this, __this_its, __list, __list._M_iterators);
+      _M_swap_aux(*this, __this_const_its, __list, __list._M_const_iterators);
+    }
+
+  template<typename _Tp, typename _Alloc>
+    bool
+    operator==(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return __lx._M_base() == __ly._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return __lx._M_base() < __ly._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx == __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return (__ly < __lx); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx < __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__ly < __lx); }
+
+  /// See std::forward_list::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(forward_list<_Tp, _Alloc>& __lx,
+	 forward_list<_Tp, _Alloc>& __ly)
+    { __lx.swap(__ly); }
+
+} // namespace __debug
+} // namespace std
+
+namespace __gnu_debug
+{
+  template<class _Tp, class _Alloc>
+    struct _BeforeBeginHelper<std::__debug::forward_list<_Tp, _Alloc> >
+    {
+      typedef std::__debug::forward_list<_Tp, _Alloc> _Sequence;
+      typedef typename _Sequence::const_iterator _It;
+      typedef typename _It::iterator_type _BaseIt;
+
+      static bool
+      _M_Is(_BaseIt __it, const _Sequence* __seq)
+      { return __it == __seq->_M_base().cbefore_begin(); }
+    };
+}
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/functions.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/functions.h
new file mode 100644
index 000000000..75ed9ef05
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/functions.h
@@ -0,0 +1,383 @@
+// Debugging support implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/functions.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_FUNCTIONS_H
+#define _GLIBCXX_DEBUG_FUNCTIONS_H 1
+
+#include <bits/c++config.h>
+#include <bits/stl_iterator_base_types.h> // for iterator_traits, categories
+#include <bits/cpp_type_traits.h>         // for __is_integer
+#include <debug/formatter.h>
+
+namespace __gnu_debug
+{
+  template<typename _Iterator, typename _Sequence>
+    class _Safe_iterator;
+
+  // An arbitrary iterator pointer is not singular.
+  inline bool
+  __check_singular_aux(const void*) { return false; }
+
+  // We may have an iterator that derives from _Safe_iterator_base but isn't
+  // a _Safe_iterator.
+  template<typename _Iterator>
+    inline bool
+    __check_singular(_Iterator& __x)
+    { return __check_singular_aux(&__x); }
+
+  /** Non-NULL pointers are nonsingular. */
+  template<typename _Tp>
+    inline bool
+    __check_singular(const _Tp* __ptr)
+    { return __ptr == 0; }
+
+  /** Safe iterators know if they are singular. */
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    __check_singular(const _Safe_iterator<_Iterator, _Sequence>& __x)
+    { return __x._M_singular(); }
+
+  /** Assume that some arbitrary iterator is dereferenceable, because we
+      can't prove that it isn't. */
+  template<typename _Iterator>
+    inline bool
+    __check_dereferenceable(_Iterator&)
+    { return true; }
+
+  /** Non-NULL pointers are dereferenceable. */
+  template<typename _Tp>
+    inline bool
+    __check_dereferenceable(const _Tp* __ptr)
+    { return __ptr; }
+
+  /** Safe iterators know if they are singular. */
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    __check_dereferenceable(const _Safe_iterator<_Iterator, _Sequence>& __x)
+    { return __x._M_dereferenceable(); }
+
+  /** If the distance between two random access iterators is
+   *  nonnegative, assume the range is valid.
+  */
+  template<typename _RandomAccessIterator>
+    inline bool
+    __valid_range_aux2(const _RandomAccessIterator& __first,
+		       const _RandomAccessIterator& __last,
+		       std::random_access_iterator_tag)
+    { return __last - __first >= 0; }
+
+  /** Can't test for a valid range with input iterators, because
+   *  iteration may be destructive. So we just assume that the range
+   *  is valid.
+  */
+  template<typename _InputIterator>
+    inline bool
+    __valid_range_aux2(const _InputIterator&, const _InputIterator&,
+		       std::input_iterator_tag)
+    { return true; }
+
+  /** We say that integral types for a valid range, and defer to other
+   *  routines to realize what to do with integral types instead of
+   *  iterators.
+  */
+  template<typename _Integral>
+    inline bool
+    __valid_range_aux(const _Integral&, const _Integral&, std::__true_type)
+    { return true; }
+
+  /** We have iterators, so figure out what kind of iterators that are
+   *  to see if we can check the range ahead of time.
+  */
+  template<typename _InputIterator>
+    inline bool
+    __valid_range_aux(const _InputIterator& __first,
+		      const _InputIterator& __last, std::__false_type)
+  {
+    typedef typename std::iterator_traits<_InputIterator>::iterator_category
+      _Category;
+    return __valid_range_aux2(__first, __last, _Category());
+  }
+
+  /** Don't know what these iterators are, or if they are even
+   *  iterators (we may get an integral type for InputIterator), so
+   *  see if they are integral and pass them on to the next phase
+   *  otherwise.
+  */
+  template<typename _InputIterator>
+    inline bool
+    __valid_range(const _InputIterator& __first, const _InputIterator& __last)
+    {
+      typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+      return __valid_range_aux(__first, __last, _Integral());
+    }
+
+  /** Safe iterators know how to check if they form a valid range. */
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    __valid_range(const _Safe_iterator<_Iterator, _Sequence>& __first,
+		  const _Safe_iterator<_Iterator, _Sequence>& __last)
+    { return __first._M_valid_range(__last); }
+
+  /* Checks that [first, last) is a valid range, and then returns
+   * __first. This routine is useful when we can't use a separate
+   * assertion statement because, e.g., we are in a constructor.
+  */
+  template<typename _InputIterator>
+    inline _InputIterator
+    __check_valid_range(const _InputIterator& __first,
+			const _InputIterator& __last
+			__attribute__((__unused__)))
+    {
+      __glibcxx_check_valid_range(__first, __last);
+      return __first;
+    }
+
+  /** Checks that __s is non-NULL or __n == 0, and then returns __s. */
+  template<typename _CharT, typename _Integer>
+    inline const _CharT*
+    __check_string(const _CharT* __s,
+		   const _Integer& __n __attribute__((__unused__)))
+    {
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+      __glibcxx_assert(__s != 0 || __n == 0);
+#endif
+      return __s;
+    }
+
+  /** Checks that __s is non-NULL and then returns __s. */
+  template<typename _CharT>
+    inline const _CharT*
+    __check_string(const _CharT* __s)
+    {
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+      __glibcxx_assert(__s != 0);
+#endif
+      return __s;
+    }
+
+  // Can't check if an input iterator sequence is sorted, because we
+  // can't step through the sequence.
+  template<typename _InputIterator>
+    inline bool
+    __check_sorted_aux(const _InputIterator&, const _InputIterator&,
+                       std::input_iterator_tag)
+    { return true; }
+
+  // Can verify if a forward iterator sequence is in fact sorted using
+  // std::__is_sorted
+  template<typename _ForwardIterator>
+    inline bool
+    __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last,
+                       std::forward_iterator_tag)
+    {
+      if (__first == __last)
+        return true;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+        if (*__next < *__first)
+          return false;
+
+      return true;
+    }
+
+  // Can't check if an input iterator sequence is sorted, because we can't step
+  // through the sequence.
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    __check_sorted_aux(const _InputIterator&, const _InputIterator&,
+                       _Predicate, std::input_iterator_tag)
+    { return true; }
+
+  // Can verify if a forward iterator sequence is in fact sorted using
+  // std::__is_sorted
+  template<typename _ForwardIterator, typename _Predicate>
+    inline bool
+    __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last,
+                       _Predicate __pred, std::forward_iterator_tag)
+    {
+      if (__first == __last)
+        return true;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+        if (__pred(*__next, *__first))
+          return false;
+
+      return true;
+    }
+
+  // Determine if a sequence is sorted.
+  template<typename _InputIterator>
+    inline bool
+    __check_sorted(const _InputIterator& __first, const _InputIterator& __last)
+    {
+      typedef typename std::iterator_traits<_InputIterator>::iterator_category
+        _Category;
+
+      // Verify that the < operator for elements in the sequence is a
+      // StrictWeakOrdering by checking that it is irreflexive.
+      __glibcxx_assert(__first == __last || !(*__first < *__first));
+
+      return __check_sorted_aux(__first, __last, _Category());
+    }
+
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    __check_sorted(const _InputIterator& __first, const _InputIterator& __last,
+                   _Predicate __pred)
+    {
+      typedef typename std::iterator_traits<_InputIterator>::iterator_category
+        _Category;
+
+      // Verify that the predicate is StrictWeakOrdering by checking that it
+      // is irreflexive.
+      __glibcxx_assert(__first == __last || !__pred(*__first, *__first));
+
+      return __check_sorted_aux(__first, __last, __pred, _Category());
+    }
+
+  template<typename _InputIterator>
+    inline bool
+    __check_sorted_set_aux(const _InputIterator& __first,
+			   const _InputIterator& __last,
+			   std::__true_type)
+    { return __check_sorted(__first, __last); }
+
+  template<typename _InputIterator>
+    inline bool
+    __check_sorted_set_aux(const _InputIterator&,
+			   const _InputIterator&,
+			   std::__false_type)
+    { return true; }
+
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    __check_sorted_set_aux(const _InputIterator& __first,
+			   const _InputIterator& __last,
+			   _Predicate __pred, std::__true_type)
+    { return __check_sorted(__first, __last, __pred); }
+
+  template<typename _InputIterator, typename _Predicate>
+    inline bool
+    __check_sorted_set_aux(const _InputIterator&,
+			   const _InputIterator&, _Predicate,
+			   std::__false_type)
+    { return true; }
+
+  // ... special variant used in std::merge, std::includes, std::set_*.
+  template<typename _InputIterator1, typename _InputIterator2>
+    inline bool
+    __check_sorted_set(const _InputIterator1& __first,
+		       const _InputIterator1& __last,
+		       const _InputIterator2&)
+    {
+      typedef typename std::iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename std::iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      typedef typename std::__are_same<_ValueType1, _ValueType2>::__type
+	_SameType;
+      return __check_sorted_set_aux(__first, __last, _SameType());
+    }
+
+  template<typename _InputIterator1, typename _InputIterator2,
+	   typename _Predicate>
+    inline bool
+    __check_sorted_set(const _InputIterator1& __first,
+		       const _InputIterator1& __last,
+		       const _InputIterator2&, _Predicate __pred)
+    {
+      typedef typename std::iterator_traits<_InputIterator1>::value_type
+	_ValueType1;
+      typedef typename std::iterator_traits<_InputIterator2>::value_type
+	_ValueType2;
+
+      typedef typename std::__are_same<_ValueType1, _ValueType2>::__type
+	_SameType;
+      return __check_sorted_set_aux(__first, __last, __pred, _SameType());
+   }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 270. Binary search requirements overly strict
+  // Determine if a sequence is partitioned w.r.t. this element.
+  template<typename _ForwardIterator, typename _Tp>
+    inline bool
+    __check_partitioned_lower(_ForwardIterator __first,
+			      _ForwardIterator __last, const _Tp& __value)
+    {
+      while (__first != __last && *__first < __value)
+	++__first;
+      while (__first != __last && !(*__first < __value))
+	++__first;
+      return __first == __last;
+    }
+
+  template<typename _ForwardIterator, typename _Tp>
+    inline bool
+    __check_partitioned_upper(_ForwardIterator __first,
+			      _ForwardIterator __last, const _Tp& __value)
+    {
+      while (__first != __last && !(__value < *__first))
+	++__first;
+      while (__first != __last && __value < *__first)
+	++__first;
+      return __first == __last;
+    }
+
+  // Determine if a sequence is partitioned w.r.t. this element.
+  template<typename _ForwardIterator, typename _Tp, typename _Pred>
+    inline bool
+    __check_partitioned_lower(_ForwardIterator __first,
+			      _ForwardIterator __last, const _Tp& __value,
+			      _Pred __pred)
+    {
+      while (__first != __last && bool(__pred(*__first, __value)))
+	++__first;
+      while (__first != __last && !bool(__pred(*__first, __value)))
+	++__first;
+      return __first == __last;
+    }
+
+  template<typename _ForwardIterator, typename _Tp, typename _Pred>
+    inline bool
+    __check_partitioned_upper(_ForwardIterator __first,
+			      _ForwardIterator __last, const _Tp& __value,
+			      _Pred __pred)
+    {
+      while (__first != __last && !bool(__pred(__value, *__first)))
+	++__first;
+      while (__first != __last && bool(__pred(__value, *__first)))
+	++__first;
+      return __first == __last;
+    }
+} // namespace __gnu_debug
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/list
new file mode 100644
index 000000000..a7a2c5499
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/list
@@ -0,0 +1,744 @@
+// Debugging list implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/list
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_LIST
+#define _GLIBCXX_DEBUG_LIST 1
+
+#include <list>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::list with safety/checking/debug instrumentation.
+  template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
+    class list
+    : public _GLIBCXX_STD_C::list<_Tp, _Allocator>,
+      public __gnu_debug::_Safe_sequence<list<_Tp, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<list>  _Safe_base;
+
+      typedef typename _Base::iterator       _Base_iterator;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+      typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator, list>
+						    iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list>
+						    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.2.2.1 construct/copy/destroy:
+      explicit
+      list(const _Allocator& __a = _Allocator())
+      : _Base(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      list(size_type __n)
+      : _Base(__n) { }
+
+      list(size_type __n, const _Tp& __value,
+	   const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#else
+      explicit
+      list(size_type __n, const _Tp& __value = _Tp(),
+	   const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#endif
+
+      template<class _InputIterator>
+      list(_InputIterator __first, _InputIterator __last,
+	   const _Allocator& __a = _Allocator())
+      : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								   __last)),
+              __gnu_debug::__base(__last), __a)
+      { }
+
+
+      list(const list& __x)
+      : _Base(__x), _Safe_base() { }
+
+      list(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      list(list&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      list(initializer_list<value_type> __l,
+           const allocator_type& __a = allocator_type())
+        : _Base(__l, __a), _Safe_base() { }
+#endif
+
+      ~list() { }
+
+      list&
+      operator=(const list& __x)
+      {
+	static_cast<_Base&>(*this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      list&
+      operator=(list&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+      	return *this;
+      }
+
+      list&
+      operator=(initializer_list<value_type> __l)
+      {
+	static_cast<_Base&>(*this) = __l;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      void
+      assign(initializer_list<value_type> __l)
+      {
+	_Base::assign(__l);
+	this->_M_invalidate_all();
+      }
+#endif
+
+      template<class _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::assign(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	  this->_M_invalidate_all();
+	}
+
+      void
+      assign(size_type __n, const _Tp& __t)
+      {
+	_Base::assign(__n, __t);
+	this->_M_invalidate_all();
+      }
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // 23.2.2.2 capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      {
+	this->_M_detach_singular();
+
+	// if __sz < size(), invalidate all iterators in [begin+__sz, end())
+	_Base_iterator __victim = _Base::begin();
+	_Base_iterator __end = _Base::end();
+	for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
+	  ++__victim;
+
+	for (; __victim != __end; ++__victim)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+
+	__try
+	  {
+	    _Base::resize(__sz);
+	  }
+	__catch(...)
+	  {
+	    this->_M_revalidate_singular();
+	    __throw_exception_again;
+	  }
+      }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      {
+	this->_M_detach_singular();
+
+	// if __sz < size(), invalidate all iterators in [begin+__sz, end())
+	_Base_iterator __victim = _Base::begin();
+	_Base_iterator __end = _Base::end();
+	for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
+	  ++__victim;
+
+	for (; __victim != __end; ++__victim)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+
+	__try
+	  {
+	    _Base::resize(__sz, __c);
+	  }
+	__catch(...)
+	  {
+	    this->_M_revalidate_singular();
+	    __throw_exception_again;
+	  }
+      }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      {
+	this->_M_detach_singular();
+
+	// if __sz < size(), invalidate all iterators in [begin+__sz, end())
+	_Base_iterator __victim = _Base::begin();
+	_Base_iterator __end = _Base::end();
+	for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
+	  ++__victim;
+
+	for (; __victim != __end; ++__victim)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+
+	__try
+	  {
+	    _Base::resize(__sz, __c);
+	  }
+	__catch(...)
+	  {
+	    this->_M_revalidate_singular();
+	    __throw_exception_again;
+	  }
+      }
+#endif
+
+      // element access:
+      reference
+      front()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      reference
+      back()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      // 23.2.2.3 modifiers:
+      using _Base::push_front;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::emplace_front;
+#endif
+
+      void
+      pop_front()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if(_Equal(_Base::begin()));
+	_Base::pop_front();
+      }
+
+      using _Base::push_back;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::emplace_back;
+#endif
+
+      void
+      pop_back()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if(_Equal(--_Base::end()));
+	_Base::pop_back();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args)
+	{
+	  __glibcxx_check_insert(__position);
+	  return iterator(_Base::emplace(__position.base(),
+					std::forward<_Args>(__args)...), this);
+	}
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(iterator __position, _Tp&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      void
+      insert(iterator __p, initializer_list<value_type> __l)
+      {
+	__glibcxx_check_insert(__p);
+	_Base::insert(__p, __l);
+      }
+#endif
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	_Base::insert(__position.base(), __n, __x);
+      }
+
+      template<class _InputIterator>
+        void
+        insert(iterator __position, _InputIterator __first,
+	       _InputIterator __last)
+        {
+	  __glibcxx_check_insert_range(__position, __first, __last);
+	  _Base::insert(__position.base(), __gnu_debug::__base(__first),
+					   __gnu_debug::__base(__last));
+	}
+
+    private:
+      _Base_iterator
+      _M_erase(_Base_iterator __position)
+      {
+	this->_M_invalidate_if(_Equal(__position));
+	return _Base::erase(__position);
+      }
+    public:
+      iterator
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	return iterator(_M_erase(__position.base()), this);
+      }
+
+      iterator
+      erase(iterator __position, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__position, __last);
+	for (_Base_iterator __victim = __position.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+			          _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__position, "position")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	return iterator(_Base::erase(__position.base(), __last.base()), this);
+      }
+
+      void
+      swap(list& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      // 23.2.2.4 list operations:
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x)
+#else
+      splice(iterator __position, list& __x)
+#endif
+      {
+	_GLIBCXX_DEBUG_VERIFY(&__x != this,
+			      _M_message(__gnu_debug::__msg_self_splice)
+			      ._M_sequence(*this, "this"));
+	this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
+	_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()));
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x)
+      { splice(__position, std::move(__x)); }
+#endif
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __i)
+#else
+      splice(iterator __position, list& __x, iterator __i)
+#endif
+      {
+	__glibcxx_check_insert(__position);
+
+	// We used to perform the splice_alloc check:  not anymore, redundant
+	// after implementing the relevant bits of N1599.
+
+	_GLIBCXX_DEBUG_VERIFY(__i._M_dereferenceable(),
+			      _M_message(__gnu_debug::__msg_splice_bad)
+			      ._M_iterator(__i, "__i"));
+	_GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__x),
+			      _M_message(__gnu_debug::__msg_splice_other)
+			     ._M_iterator(__i, "__i")._M_sequence(__x, "__x"));
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 250. splicing invalidates iterators
+	this->_M_transfer_from_if(__x, _Equal(__i.base()));
+	_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
+		      __i.base());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __i)
+      { splice(__position, std::move(__x), __i); }
+#endif
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __first,
+	     iterator __last)
+#else
+      splice(iterator __position, list& __x, iterator __first,
+	     iterator __last)
+#endif
+      {
+	__glibcxx_check_insert(__position);
+	__glibcxx_check_valid_range(__first, __last);
+	_GLIBCXX_DEBUG_VERIFY(__first._M_attached_to(&__x),
+			      _M_message(__gnu_debug::__msg_splice_other)
+			      ._M_sequence(__x, "x")
+			      ._M_iterator(__first, "first"));
+
+	// We used to perform the splice_alloc check:  not anymore, redundant
+	// after implementing the relevant bits of N1599.
+
+	for (_Base_iterator __tmp = __first.base();
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    _GLIBCXX_DEBUG_VERIFY(&__x != this || __tmp != __position,
+				_M_message(__gnu_debug::__msg_splice_overlap)
+				  ._M_iterator(__tmp, "position")
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	    // 250. splicing invalidates iterators
+	    this->_M_transfer_from_if(__x, _Equal(__tmp));
+	  }
+
+	_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
+		      __first.base(), __last.base());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __first, iterator __last)
+      { splice(__position, std::move(__x), __first, __last); }
+#endif
+
+      void
+      remove(const _Tp& __value)
+      {
+	for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); )
+	  {
+	    if (*__x == __value)
+	      __x = _M_erase(__x);
+	    else
+	      ++__x;
+	  }
+      }
+
+      template<class _Predicate>
+        void
+        remove_if(_Predicate __pred)
+        {
+	  for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); )
+	    {
+	      if (__pred(*__x))
+		__x = _M_erase(__x);
+	      else
+		++__x;
+	    }
+	}
+
+      void
+      unique()
+      {
+	_Base_iterator __first = _Base::begin();
+	_Base_iterator __last = _Base::end();
+	if (__first == __last)
+	  return;
+	_Base_iterator __next = __first; ++__next;
+	while (__next != __last)
+	  {
+	    if (*__first == *__next)
+	      __next = _M_erase(__next);
+	    else
+	      __first = __next++;
+	  }
+      }
+
+      template<class _BinaryPredicate>
+        void
+        unique(_BinaryPredicate __binary_pred)
+        {
+	  _Base_iterator __first = _Base::begin();
+	  _Base_iterator __last = _Base::end();
+	  if (__first == __last)
+	    return;
+	  _Base_iterator __next = __first; ++__next;
+	  while (__next != __last)
+	    {
+	      if (__binary_pred(*__first, *__next))
+		__next = _M_erase(__next);
+	      else
+		__first = __next++;
+	    }
+	}
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      merge(list&& __x)
+#else
+      merge(list& __x)
+#endif
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 300. list::merge() specification incomplete
+	if (this != &__x)
+	  {
+	    __glibcxx_check_sorted(_Base::begin(), _Base::end());
+	    __glibcxx_check_sorted(__x.begin().base(), __x.end().base());
+	    this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
+	    _Base::merge(_GLIBCXX_MOVE(__x._M_base()));
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      merge(list& __x)
+      { merge(std::move(__x)); }
+#endif
+
+      template<class _Compare>
+        void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+        merge(list&& __x, _Compare __comp)
+#else
+        merge(list& __x, _Compare __comp)
+#endif
+        {
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 300. list::merge() specification incomplete
+	  if (this != &__x)
+	    {
+	      __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(),
+					  __comp);
+	      __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(),
+					  __comp);
+	      this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
+	      _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp);
+	    }
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Compare>
+        void
+        merge(list& __x, _Compare __comp)
+        { merge(std::move(__x), __comp); }
+#endif
+
+      void
+      sort() { _Base::sort(); }
+
+      template<typename _StrictWeakOrdering>
+        void
+        sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); }
+
+      using _Base::reverse;
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const list<_Tp, _Alloc>& __lhs,
+	      const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const list<_Tp, _Alloc>& __lhs,
+	      const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/macros.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/macros.h
new file mode 100644
index 000000000..c90bec5cf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/macros.h
@@ -0,0 +1,312 @@
+// Debugging support implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/macros.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MACROS_H
+#define _GLIBCXX_DEBUG_MACROS_H 1
+
+/**
+ * Macros used by the implementation to verify certain
+ * properties. These macros may only be used directly by the debug
+ * wrappers. Note that these are macros (instead of the more obviously
+ * @a correct choice of making them functions) because we need line and
+ * file information at the call site, to minimize the distance between
+ * the user error and where the error is reported.
+ *
+ */
+#define _GLIBCXX_DEBUG_VERIFY(_Condition,_ErrorMessage)		        \
+  do 									\
+  {									\
+    if (! (_Condition))							\
+      __gnu_debug::_Error_formatter::_M_at(__FILE__, __LINE__)	        \
+	  ._ErrorMessage._M_error();					\
+  } while (false)
+
+// Verify that [_First, _Last) forms a valid iterator range.
+#define __glibcxx_check_valid_range(_First,_Last)			\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last),	\
+		      _M_message(__gnu_debug::__msg_valid_range)	\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last))
+
+/** Verify that we can insert into *this with the iterator _Position.
+ *  Insertion into a container at a specific position requires that
+ *  the iterator be nonsingular, either dereferenceable or past-the-end,
+ *  and that it reference the sequence we are inserting into. Note that
+ *  this macro is only valid when the container is a_Safe_sequence and
+ *  the iterator is a _Safe_iterator.
+*/
+#define __glibcxx_check_insert(_Position)				\
+_GLIBCXX_DEBUG_VERIFY(!_Position._M_singular(),				\
+		      _M_message(__gnu_debug::__msg_insert_singular) \
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position));		\
+_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this),			\
+		      _M_message(__gnu_debug::__msg_insert_different) \
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position))
+
+/** Verify that we can insert into *this after the iterator _Position.
+ *  Insertion into a container after a specific position requires that
+ *  the iterator be nonsingular, either dereferenceable or before-begin,
+ *  and that it reference the sequence we are inserting into. Note that
+ *  this macro is only valid when the container is a_Safe_sequence and
+ *  the iterator is a _Safe_iterator.
+*/
+#define __glibcxx_check_insert_after(_Position)				\
+__glibcxx_check_insert(_Position);					\
+_GLIBCXX_DEBUG_VERIFY(!_Position._M_is_end(),				\
+		      _M_message(__gnu_debug::__msg_insert_after_end)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position))
+
+/** Verify that we can insert the values in the iterator range
+ *  [_First, _Last) into *this with the iterator _Position.  Insertion
+ *  into a container at a specific position requires that the iterator
+ *  be nonsingular (i.e., either dereferenceable or past-the-end),
+ *  that it reference the sequence we are inserting into, and that the
+ *  iterator range [_First, Last) is a valid (possibly empty)
+ *  range. Note that this macro is only valid when the container is a
+ *  _Safe_sequence and the iterator is a _Safe_iterator.
+ *
+ *  @todo We would like to be able to check for noninterference of
+ *  _Position and the range [_First, _Last), but that can't (in
+ *  general) be done.
+*/
+#define __glibcxx_check_insert_range(_Position,_First,_Last)		\
+__glibcxx_check_valid_range(_First,_Last);				\
+__glibcxx_check_insert(_Position)
+
+/** Verify that we can insert the values in the iterator range
+ *  [_First, _Last) into *this after the iterator _Position.  Insertion
+ *  into a container after a specific position requires that the iterator
+ *  be nonsingular (i.e., either dereferenceable or past-the-end),
+ *  that it reference the sequence we are inserting into, and that the
+ *  iterator range [_First, Last) is a valid (possibly empty)
+ *  range. Note that this macro is only valid when the container is a
+ *  _Safe_sequence and the iterator is a _Safe_iterator.
+ *
+ *  @todo We would like to be able to check for noninterference of
+ *  _Position and the range [_First, _Last), but that can't (in
+ *  general) be done.
+*/
+#define __glibcxx_check_insert_range_after(_Position,_First,_Last)	\
+__glibcxx_check_valid_range(_First,_Last);				\
+__glibcxx_check_insert_after(_Position)
+
+/** Verify that we can erase the element referenced by the iterator
+ * _Position. We can erase the element if the _Position iterator is
+ * dereferenceable and references this sequence.
+*/
+#define __glibcxx_check_erase(_Position)				\
+_GLIBCXX_DEBUG_VERIFY(_Position._M_dereferenceable(),			\
+		      _M_message(__gnu_debug::__msg_erase_bad)	        \
+                      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position));		\
+_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this),			\
+		      _M_message(__gnu_debug::__msg_erase_different)    \
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position))
+
+/** Verify that we can erase the element after the iterator
+ * _Position. We can erase the element if the _Position iterator is
+ * before a dereferenceable one and references this sequence.
+*/
+#define __glibcxx_check_erase_after(_Position)				\
+_GLIBCXX_DEBUG_VERIFY(_Position._M_before_dereferenceable(),		\
+		      _M_message(__gnu_debug::__msg_erase_after_bad)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position));		\
+_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this),			\
+		      _M_message(__gnu_debug::__msg_erase_different)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_Position, #_Position))
+
+/** Verify that we can erase the elements in the iterator range
+ *  [_First, _Last). We can erase the elements if [_First, _Last) is a
+ *  valid iterator range within this sequence.
+*/
+#define __glibcxx_check_erase_range(_First,_Last)			\
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this),			\
+		      _M_message(__gnu_debug::__msg_erase_different)    \
+                      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last))
+
+/** Verify that we can erase the elements in the iterator range
+ *  (_First, _Last). We can erase the elements if (_First, _Last) is a
+ *  valid iterator range within this sequence.
+*/
+#define __glibcxx_check_erase_range_after(_First,_Last)			\
+_GLIBCXX_DEBUG_VERIFY(_First._M_can_compare(_Last),			\
+		      _M_message(__gnu_debug::__msg_erase_different)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last));			\
+_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this),			\
+		      _M_message(__gnu_debug::__msg_erase_different)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First));			\
+_GLIBCXX_DEBUG_VERIFY(_First != _Last,					\
+		      _M_message(__gnu_debug::__msg_valid_range2)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last));			\
+_GLIBCXX_DEBUG_VERIFY(_First._M_incrementable(),			\
+		      _M_message(__gnu_debug::__msg_valid_range2)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last));			\
+_GLIBCXX_DEBUG_VERIFY(!_Last._M_is_before_begin(),			\
+		      _M_message(__gnu_debug::__msg_valid_range2)	\
+		      ._M_sequence(*this, "this")			\
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last))			\
+
+// Verify that the subscript _N is less than the container's size.
+#define __glibcxx_check_subscript(_N)					\
+_GLIBCXX_DEBUG_VERIFY(_N < this->size(),				\
+		      _M_message(__gnu_debug::__msg_subscript_oob)      \
+                      ._M_sequence(*this, "this")			\
+		      ._M_integer(_N, #_N)				\
+		      ._M_integer(this->size(), "size"))
+
+// Verify that the container is nonempty
+#define __glibcxx_check_nonempty()					\
+_GLIBCXX_DEBUG_VERIFY(! this->empty(),					\
+		      _M_message(__gnu_debug::__msg_empty)	        \
+                      ._M_sequence(*this, "this"))
+
+// Verify that the iterator range [_First, _Last) is sorted
+#define __glibcxx_check_sorted(_First,_Last)				\
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last),	\
+		      _M_message(__gnu_debug::__msg_unsorted)	        \
+                      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last))
+
+/** Verify that the iterator range [_First, _Last) is sorted by the
+    predicate _Pred. */
+#define __glibcxx_check_sorted_pred(_First,_Last,_Pred)			\
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last, _Pred), \
+		      _M_message(__gnu_debug::__msg_unsorted_pred)      \
+                      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Pred))
+
+// Special variant for std::merge, std::includes, std::set_*
+#define __glibcxx_check_sorted_set(_First1,_Last1,_First2)		\
+__glibcxx_check_valid_range(_First1,_Last1);				\
+_GLIBCXX_DEBUG_VERIFY(                                                  \
+  __gnu_debug::__check_sorted_set(_First1, _Last1, _First2),		\
+  _M_message(__gnu_debug::__msg_unsorted)				\
+  ._M_iterator(_First1, #_First1)					\
+  ._M_iterator(_Last1, #_Last1))
+
+// Likewise with a _Pred.
+#define __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred)	\
+__glibcxx_check_valid_range(_First1,_Last1);        			\
+_GLIBCXX_DEBUG_VERIFY(							\
+  __gnu_debug::__check_sorted_set(_First1, _Last1, _First2, _Pred),	\
+  _M_message(__gnu_debug::__msg_unsorted_pred)				\
+  ._M_iterator(_First1, #_First1)					\
+  ._M_iterator(_Last1, #_Last1)						\
+  ._M_string(#_Pred))
+
+/** Verify that the iterator range [_First, _Last) is partitioned
+    w.r.t. the value _Value. */
+#define __glibcxx_check_partitioned_lower(_First,_Last,_Value)		\
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
+							    _Value),	\
+		      _M_message(__gnu_debug::__msg_unpartitioned)      \
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Value))
+
+#define __glibcxx_check_partitioned_upper(_First,_Last,_Value)		\
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
+							    _Value),	\
+		      _M_message(__gnu_debug::__msg_unpartitioned)      \
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Value))
+
+/** Verify that the iterator range [_First, _Last) is partitioned
+    w.r.t. the value _Value and predicate _Pred. */
+#define __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
+							 _Value, _Pred), \
+		      _M_message(__gnu_debug::__msg_unpartitioned_pred) \
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Pred)				\
+                      ._M_string(#_Value))
+
+/** Verify that the iterator range [_First, _Last) is partitioned
+    w.r.t. the value _Value and predicate _Pred. */
+#define __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
+__glibcxx_check_valid_range(_First,_Last);				\
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
+							 _Value, _Pred), \
+		      _M_message(__gnu_debug::__msg_unpartitioned_pred) \
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Pred)				\
+                      ._M_string(#_Value))
+
+// Verify that the iterator range [_First, _Last) is a heap
+#define __glibcxx_check_heap(_First,_Last)				\
+_GLIBCXX_DEBUG_VERIFY(std::__is_heap(_First, _Last),		        \
+		      _M_message(__gnu_debug::__msg_not_heap)	        \
+		      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last))
+
+/** Verify that the iterator range [_First, _Last) is a heap
+    w.r.t. the predicate _Pred. */
+#define __glibcxx_check_heap_pred(_First,_Last,_Pred)			\
+_GLIBCXX_DEBUG_VERIFY(std::__is_heap(_First, _Last, _Pred),		\
+		      _M_message(__gnu_debug::__msg_not_heap_pred)      \
+                      ._M_iterator(_First, #_First)			\
+		      ._M_iterator(_Last, #_Last)			\
+		      ._M_string(#_Pred))
+
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+#  define __glibcxx_check_string(_String) _GLIBCXX_DEBUG_ASSERT(_String != 0)
+#  define __glibcxx_check_string_len(_String,_Len) \
+       _GLIBCXX_DEBUG_ASSERT(_String != 0 || _Len == 0)
+#else
+#  define __glibcxx_check_string(_String)
+#  define __glibcxx_check_string_len(_String,_Len)
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map
new file mode 100644
index 000000000..2d16b71d3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map
@@ -0,0 +1,37 @@
+// Debugging map/multimap implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/map
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MAP
+#define _GLIBCXX_DEBUG_MAP 1
+
+#include <map>
+#include <debug/map.h>
+#include <debug/multimap.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map.h
new file mode 100644
index 000000000..31085197f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/map.h
@@ -0,0 +1,471 @@
+// Debugging map implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/map.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MAP_H
+#define _GLIBCXX_DEBUG_MAP_H 1
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::map with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
+    class map
+    : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>,
+      public __gnu_debug::_Safe_sequence<map<_Key, _Tp, _Compare, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<map> _Safe_base;
+
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+    public:
+      // types:
+      typedef _Key                                  key_type;
+      typedef _Tp                                   mapped_type;
+      typedef std::pair<const _Key, _Tp>            value_type;
+      typedef _Compare                              key_compare;
+      typedef _Allocator                            allocator_type;
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<typename _Base::iterator, map>
+                                                    iterator;
+      typedef __gnu_debug::_Safe_iterator<typename _Base::const_iterator, map>
+                                                    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.3.1.1 construct/copy/destroy:
+      explicit map(const _Compare& __comp = _Compare(),
+		   const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+        map(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp = _Compare(),
+	    const _Allocator& __a = _Allocator())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last),
+		__comp, __a), _Safe_base() { }
+
+      map(const map& __x)
+      : _Base(__x), _Safe_base() { }
+
+      map(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      map(map&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      map(initializer_list<value_type> __l,
+	  const _Compare& __c = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _Base(__l, __c, __a), _Safe_base() { }
+#endif
+
+      ~map() { }
+
+      map&
+      operator=(const map& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      map&
+      operator=(map&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 133. map missing get_allocator()
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator 
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // 23.3.1.2 element access:
+      using _Base::operator[];
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 464. Suggestion for new member functions in standard containers.
+      using _Base::at;
+
+      // modifiers:
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
+	return std::pair<iterator, bool>(iterator(__res.first, this),
+					 __res.second);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        std::pair<iterator, bool>
+        insert(_Pair&& __x)
+        {
+	  typedef typename _Base::iterator _Base_iterator;
+	  std::pair<_Base_iterator, bool> __res
+	    = _Base::insert(std::forward<_Pair>(__x));
+	  return std::pair<iterator, bool>(iterator(__res.first, this),
+					   __res.second);
+	}
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(std::initializer_list<value_type> __list)
+      { _Base::insert(__list); }
+#endif
+
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        {
+	  __glibcxx_check_insert(__position);
+	  return iterator(_Base::insert(__position.base(),
+					std::forward<_Pair>(__x)), this);
+	}
+#endif
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	return iterator(_Base::erase(__position.base()), this);
+      }
+#else
+      void
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	_Base::erase(__position.base());
+      }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	_Base_iterator __victim = _Base::find(__x);
+	if (__victim == _Base::end())
+	  return 0;
+	else
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim);
+	    return 1;
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	return iterator(_Base::erase(__first.base(), __last.base()), this);
+      }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	_Base::erase(__first.base(), __last.base());
+      }
+#endif
+
+      void
+      swap(map& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	this->_M_invalidate_all();
+	_Base::clear();
+      }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // 23.3.1.3 map operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x), this); }
+
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x), this); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x), this); }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x), this); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x), this); }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x), this); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	typedef typename _Base::const_iterator _Base_const_iterator;
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      _Base& 
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef typename _Base::const_iterator _Base_const_iterator;
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_M_base().end()));
+      }
+    };
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline void
+    swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	 map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multimap.h
new file mode 100644
index 000000000..3c22517b2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multimap.h
@@ -0,0 +1,451 @@
+// Debugging multimap implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/multimap.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MULTIMAP_H
+#define _GLIBCXX_DEBUG_MULTIMAP_H 1
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::multimap with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
+    class multimap
+    : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>,
+      public __gnu_debug::_Safe_sequence<multimap<_Key, _Tp,
+						  _Compare, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<multimap> _Safe_base;
+
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+    public:
+      // types:
+      typedef _Key				     key_type;
+      typedef _Tp				     mapped_type;
+      typedef std::pair<const _Key, _Tp>             value_type;
+      typedef _Compare                               key_compare;
+      typedef _Allocator                             allocator_type;
+      typedef typename _Base::reference              reference;
+      typedef typename _Base::const_reference        const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator, multimap>
+                                                     iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+                                           multimap> const_iterator;
+
+      typedef typename _Base::size_type              size_type;
+      typedef typename _Base::difference_type        difference_type;
+      typedef typename _Base::pointer                pointer;
+      typedef typename _Base::const_pointer          const_pointer;
+      typedef std::reverse_iterator<iterator>        reverse_iterator;
+      typedef std::reverse_iterator<const_iterator>  const_reverse_iterator;
+
+      // 23.3.1.1 construct/copy/destroy:
+      explicit multimap(const _Compare& __comp = _Compare(),
+			const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+      multimap(_InputIterator __first, _InputIterator __last,
+	       const _Compare& __comp = _Compare(),
+	       const _Allocator& __a = _Allocator())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last),
+	      __comp, __a) { }
+
+      multimap(const multimap& __x)
+      : _Base(__x), _Safe_base() { }
+
+      multimap(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multimap(multimap&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      multimap(initializer_list<value_type> __l,
+	       const _Compare& __c = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _Base(__l, __c, __a), _Safe_base() { }
+#endif
+
+      ~multimap() { }
+
+      multimap&
+      operator=(const multimap& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multimap&
+      operator=(multimap&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      iterator
+      insert(const value_type& __x)
+      { return iterator(_Base::insert(__x), this); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(_Pair&& __x)
+        { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(std::initializer_list<value_type> __list)
+      { _Base::insert(__list); }
+#endif
+
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        {
+	  __glibcxx_check_insert(__position);
+	  return iterator(_Base::insert(__position.base(),
+					std::forward<_Pair>(__x)), this);
+	}
+#endif
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	return iterator(_Base::erase(__position.base()), this);
+      }
+#else
+      void
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	_Base::erase(__position.base());
+      }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __victims =
+	  _Base::equal_range(__x);
+	size_type __count = 0;
+	_Base_iterator __victim = __victims.first;
+	while (__victim !=  __victims.second)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim++);
+	    ++__count;
+	  }
+	return __count;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	return iterator(_Base::erase(__first.base(), __last.base()), this);
+      }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	_Base::erase(__first.base(), __last.base());
+      }
+#endif
+
+      void
+      swap(multimap& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	this->_M_invalidate_all();
+	_Base::clear();
+      }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // 23.3.1.3 multimap operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x), this); }
+
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x), this); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x), this); }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x), this); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x), this); }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x), this); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	  _Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline void
+    swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	 multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multiset.h
new file mode 100644
index 000000000..6808fb804
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/multiset.h
@@ -0,0 +1,441 @@
+// Debugging multiset implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/multiset.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_MULTISET_H
+#define _GLIBCXX_DEBUG_MULTISET_H 1
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::multiset with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<_Key> >
+    class multiset
+    : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>,
+      public __gnu_debug::_Safe_sequence<multiset<_Key, _Compare, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<multiset> _Safe_base;
+
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+    public:
+      // types:
+      typedef _Key				     key_type;
+      typedef _Key				     value_type;
+      typedef _Compare				     key_compare;
+      typedef _Compare				     value_compare;
+      typedef _Allocator			     allocator_type;
+      typedef typename _Base::reference	             reference;
+      typedef typename _Base::const_reference        const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator, multiset>
+      iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  multiset> const_iterator;
+
+      typedef typename _Base::size_type              size_type;
+      typedef typename _Base::difference_type        difference_type;
+      typedef typename _Base::pointer                pointer;
+      typedef typename _Base::const_pointer          const_pointer;
+      typedef std::reverse_iterator<iterator>        reverse_iterator;
+      typedef std::reverse_iterator<const_iterator>  const_reverse_iterator;
+
+      // 23.3.3.1 construct/copy/destroy:
+      explicit multiset(const _Compare& __comp = _Compare(),
+			const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+        multiset(_InputIterator __first, _InputIterator __last,
+		 const _Compare& __comp = _Compare(),
+		 const _Allocator& __a = _Allocator())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last),
+		__comp, __a) { }
+
+      multiset(const multiset& __x)
+      : _Base(__x), _Safe_base() { }
+
+      multiset(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multiset(multiset&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      multiset(initializer_list<value_type> __l,
+	       const _Compare& __comp = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _Base(__l, __comp, __a), _Safe_base() { }
+#endif
+
+      ~multiset() { }
+
+      multiset&
+      operator=(const multiset& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multiset&
+      operator=(multiset&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      iterator
+      insert(const value_type& __x)
+      { return iterator(_Base::insert(__x), this); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(value_type&& __x)
+      { return iterator(_Base::insert(std::move(__x)), this); }
+#endif
+
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), std::move(__x)),
+			this);
+      }
+#endif
+
+      template<typename _InputIterator>
+	void
+	insert(_InputIterator __first, _InputIterator __last)
+	{
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	return iterator(_Base::erase(__position.base()), this);
+      }
+#else
+      void
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	_Base::erase(__position.base());
+      }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __victims =
+	  _Base::equal_range(__x);
+	size_type __count = 0;
+	_Base_iterator __victim = __victims.first;
+	while (__victim != __victims.second)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim++);
+	    ++__count;
+	  }
+	return __count;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	return iterator(_Base::erase(__first.base(), __last.base()), this);
+      }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	_Base::erase(__first.base(), __last.base());
+      }
+#endif
+
+      void
+      swap(multiset& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	this->_M_invalidate_all();
+	_Base::clear();
+      }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // multiset operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x), this); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x), this); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x), this); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	  _Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	  _Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	      const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	      const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    void
+    swap(multiset<_Key, _Compare, _Allocator>& __x,
+	 multiset<_Key, _Compare, _Allocator>& __y)
+    { return __x.swap(__y); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_base.h
new file mode 100644
index 000000000..1348004cb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_base.h
@@ -0,0 +1,255 @@
+// Safe sequence/iterator base implementation  -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/safe_base.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SAFE_BASE_H
+#define _GLIBCXX_DEBUG_SAFE_BASE_H 1
+
+#include <ext/concurrence.h>
+
+namespace __gnu_debug
+{
+  class _Safe_sequence_base;
+
+  /** \brief Basic functionality for a @a safe iterator.
+   *
+   *  The %_Safe_iterator_base base class implements the functionality
+   *  of a safe iterator that is not specific to a particular iterator
+   *  type. It contains a pointer back to the sequence it references
+   *  along with iterator version information and pointers to form a
+   *  doubly-linked list of iterators referenced by the container.
+   *
+   *  This class must not perform any operations that can throw an
+   *  exception, or the exception guarantees of derived iterators will
+   *  be broken.
+   */
+  class _Safe_iterator_base
+  {
+  public:
+    /** The sequence this iterator references; may be NULL to indicate
+	a singular iterator. */
+    _Safe_sequence_base* _M_sequence;
+
+    /** The version number of this iterator. The sentinel value 0 is
+     *  used to indicate an invalidated iterator (i.e., one that is
+     *  singular because of an operation on the container). This
+     *  version number must equal the version number in the sequence
+     *  referenced by _M_sequence for the iterator to be
+     *  non-singular.
+     */
+    unsigned int         _M_version;
+
+    /** Pointer to the previous iterator in the sequence's list of
+	iterators. Only valid when _M_sequence != NULL. */
+    _Safe_iterator_base* _M_prior;
+
+    /** Pointer to the next iterator in the sequence's list of
+	iterators. Only valid when _M_sequence != NULL. */
+    _Safe_iterator_base* _M_next;
+
+  protected:
+    /** Initializes the iterator and makes it singular. */
+    _Safe_iterator_base()
+    : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
+    { }
+
+    /** Initialize the iterator to reference the sequence pointed to
+     *  by @p__seq. @p __constant is true when we are initializing a
+     *  constant iterator, and false if it is a mutable iterator. Note
+     *  that @p __seq may be NULL, in which case the iterator will be
+     *  singular. Otherwise, the iterator will reference @p __seq and
+     *  be nonsingular.
+     */
+    _Safe_iterator_base(const _Safe_sequence_base* __seq, bool __constant)
+    : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
+    { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); }
+
+    /** Initializes the iterator to reference the same sequence that
+	@p __x does. @p __constant is true if this is a constant
+	iterator, and false if it is mutable. */
+    _Safe_iterator_base(const _Safe_iterator_base& __x, bool __constant)
+    : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
+    { this->_M_attach(__x._M_sequence, __constant); }
+
+    _Safe_iterator_base&
+    operator=(const _Safe_iterator_base&);
+
+    explicit
+    _Safe_iterator_base(const _Safe_iterator_base&);
+
+    ~_Safe_iterator_base() { this->_M_detach(); }
+
+    /** For use in _Safe_iterator. */
+    __gnu_cxx::__mutex& _M_get_mutex() throw ();
+
+  public:
+    /** Attaches this iterator to the given sequence, detaching it
+     *	from whatever sequence it was attached to originally. If the
+     *	new sequence is the NULL pointer, the iterator is left
+     *	unattached.
+     */
+    void _M_attach(_Safe_sequence_base* __seq, bool __constant);
+
+    /** Likewise, but not thread-safe. */
+    void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ();
+
+    /** Detach the iterator for whatever sequence it is attached to,
+     *	if any.
+    */
+    void _M_detach();
+
+    /** Likewise, but not thread-safe. */
+    void _M_detach_single() throw ();
+
+    /** Determines if we are attached to the given sequence. */
+    bool _M_attached_to(const _Safe_sequence_base* __seq) const
+    { return _M_sequence == __seq; }
+
+    /** Is this iterator singular? */
+    _GLIBCXX_PURE bool _M_singular() const throw ();
+
+    /** Can we compare this iterator to the given iterator @p __x?
+	Returns true if both iterators are nonsingular and reference
+	the same sequence. */
+    _GLIBCXX_PURE bool _M_can_compare(const _Safe_iterator_base& __x) const throw ();
+
+    /** Invalidate the iterator, making it singular. */
+    void
+    _M_invalidate()
+    { _M_version = 0; }
+
+    /** Reset all member variables */
+    void
+    _M_reset() throw ();
+
+    /** Unlink itself */
+    void
+    _M_unlink() throw ()
+    {
+      if (_M_prior)
+	_M_prior->_M_next = _M_next;
+      if (_M_next)
+	_M_next->_M_prior = _M_prior;
+    }
+  };
+
+  /**
+   * @brief Base class that supports tracking of iterators that
+   * reference a sequence.
+   *
+   * The %_Safe_sequence_base class provides basic support for
+   * tracking iterators into a sequence. Sequences that track
+   * iterators must derived from %_Safe_sequence_base publicly, so
+   * that safe iterators (which inherit _Safe_iterator_base) can
+   * attach to them. This class contains two linked lists of
+   * iterators, one for constant iterators and one for mutable
+   * iterators, and a version number that allows very fast
+   * invalidation of all iterators that reference the container.
+   *
+   * This class must ensure that no operation on it may throw an
+   * exception, otherwise @a safe sequences may fail to provide the
+   * exception-safety guarantees required by the C++ standard.
+   */
+  class _Safe_sequence_base
+  {
+  public:
+    /// The list of mutable iterators that reference this container
+    _Safe_iterator_base* _M_iterators;
+
+    /// The list of constant iterators that reference this container
+    _Safe_iterator_base* _M_const_iterators;
+
+    /// The container version number. This number may never be 0.
+    mutable unsigned int _M_version;
+
+  protected:
+    // Initialize with a version number of 1 and no iterators
+    _Safe_sequence_base()
+    : _M_iterators(0), _M_const_iterators(0), _M_version(1)
+    { }
+
+    /** Notify all iterators that reference this sequence that the
+	sequence is being destroyed. */
+    ~_Safe_sequence_base()
+    { this->_M_detach_all(); }
+
+    /** Detach all iterators, leaving them singular. */
+    void
+    _M_detach_all();
+
+    /** Detach all singular iterators.
+     *  @post for all iterators i attached to this sequence,
+     *   i->_M_version == _M_version.
+     */
+    void
+    _M_detach_singular();
+
+    /** Revalidates all attached singular iterators.  This method may
+     *  be used to validate iterators that were invalidated before
+     *  (but for some reason, such as an exception, need to become
+     *  valid again).
+     */
+    void
+    _M_revalidate_singular();
+
+    /** Swap this sequence with the given sequence. This operation
+     *  also swaps ownership of the iterators, so that when the
+     *  operation is complete all iterators that originally referenced
+     *  one container now reference the other container.
+     */
+    void
+    _M_swap(_Safe_sequence_base& __x);
+
+    /** For use in _Safe_sequence. */
+    __gnu_cxx::__mutex& _M_get_mutex() throw ();
+
+  public:
+    /** Invalidates all iterators. */
+    void
+    _M_invalidate_all() const
+    { if (++_M_version == 0) _M_version = 1; }
+
+    /** Attach an iterator to this sequence. */
+    void
+    _M_attach(_Safe_iterator_base* __it, bool __constant);
+
+    /** Likewise but not thread safe. */
+    void
+    _M_attach_single(_Safe_iterator_base* __it, bool __constant) throw ();
+
+    /** Detach an iterator from this sequence */
+    void
+    _M_detach(_Safe_iterator_base* __it);
+
+    /** Likewise but not thread safe. */
+    void
+    _M_detach_single(_Safe_iterator_base* __it) throw ();
+  };
+} // namespace __gnu_debug
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.h
new file mode 100644
index 000000000..127c3ba72
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.h
@@ -0,0 +1,689 @@
+// Safe iterator implementation  -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/safe_iterator.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_H
+#define _GLIBCXX_DEBUG_SAFE_ITERATOR_H 1
+
+#include <debug/debug.h>
+#include <debug/macros.h>
+#include <debug/functions.h>
+#include <debug/safe_base.h>
+#include <bits/stl_pair.h>
+#include <bits/stl_iterator_base_types.h> // for _Iter_base
+#include <ext/type_traits.h>
+
+namespace __gnu_debug
+{
+  /** Helper struct to deal with sequence offering a before_begin
+   *  iterator.
+   **/
+  template <typename _Sequence>
+    struct _BeforeBeginHelper
+    {
+      typedef typename _Sequence::const_iterator _It;
+      typedef typename _It::iterator_type _BaseIt;
+
+      static bool
+      _M_Is(_BaseIt __it, const _Sequence* __seq)
+      { return false; }
+    };
+
+  /** Iterators that derive from _Safe_iterator_base but that aren't
+   *  _Safe_iterators can be determined singular or non-singular via
+   *  _Safe_iterator_base.
+   */
+  inline bool 
+  __check_singular_aux(const _Safe_iterator_base* __x)
+  { return __x->_M_singular(); }
+
+  /** \brief Safe iterator wrapper.
+   *
+   *  The class template %_Safe_iterator is a wrapper around an
+   *  iterator that tracks the iterator's movement among sequences and
+   *  checks that operations performed on the "safe" iterator are
+   *  legal. In additional to the basic iterator operations (which are
+   *  validated, and then passed to the underlying iterator),
+   *  %_Safe_iterator has member functions for iterator invalidation,
+   *  attaching/detaching the iterator from sequences, and querying
+   *  the iterator's state.
+   */
+  template<typename _Iterator, typename _Sequence>
+    class _Safe_iterator : public _Safe_iterator_base
+    {
+      typedef _Safe_iterator _Self;
+
+      /** The precision to which we can calculate the distance between
+       *  two iterators.
+       */
+      enum _Distance_precision
+	{
+	  __dp_equality, //< Can compare iterator equality, only
+	  __dp_sign,     //< Can determine equality and ordering
+	  __dp_exact     //< Can determine distance precisely
+	};
+
+      /// The underlying iterator
+      _Iterator _M_current;
+
+      /// Determine if this is a constant iterator.
+      bool
+      _M_constant() const
+      {
+	typedef typename _Sequence::const_iterator const_iterator;
+	return std::__are_same<const_iterator, _Safe_iterator>::__value;
+      }
+
+      typedef std::iterator_traits<_Iterator> _Traits;
+
+    public:
+      typedef _Iterator                           iterator_type;
+      typedef typename _Traits::iterator_category iterator_category;
+      typedef typename _Traits::value_type        value_type;
+      typedef typename _Traits::difference_type   difference_type;
+      typedef typename _Traits::reference         reference;
+      typedef typename _Traits::pointer           pointer;
+
+      /// @post the iterator is singular and unattached
+      _Safe_iterator() : _M_current() { }
+
+      /**
+       * @brief Safe iterator construction from an unsafe iterator and
+       * its sequence.
+       *
+       * @pre @p seq is not NULL
+       * @post this is not singular
+       */
+      _Safe_iterator(const _Iterator& __i, const _Sequence* __seq)
+      : _Safe_iterator_base(__seq, _M_constant()), _M_current(__i)
+      {
+	_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
+			      _M_message(__msg_init_singular)
+			      ._M_iterator(*this, "this"));
+      }
+
+      /**
+       * @brief Copy construction.
+       */
+      _Safe_iterator(const _Safe_iterator& __x)
+      : _Safe_iterator_base(__x, _M_constant()), _M_current(__x._M_current)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// DR 408. Is vector<reverse_iterator<char*> > forbidden?
+	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
+			      || __x._M_current == _Iterator(),
+			      _M_message(__msg_init_copy_singular)
+			      ._M_iterator(*this, "this")
+			      ._M_iterator(__x, "other"));
+      }
+
+      /**
+       *  @brief Converting constructor from a mutable iterator to a
+       *  constant iterator.
+      */
+      template<typename _MutableIterator>
+        _Safe_iterator(
+          const _Safe_iterator<_MutableIterator,
+          typename __gnu_cxx::__enable_if<(std::__are_same<_MutableIterator,
+                      typename _Sequence::iterator::iterator_type>::__value),
+                   _Sequence>::__type>& __x)
+	: _Safe_iterator_base(__x, _M_constant()), _M_current(__x.base())
+        {
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // DR 408. Is vector<reverse_iterator<char*> > forbidden?
+	  _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
+				|| __x.base() == _Iterator(),
+				_M_message(__msg_init_const_singular)
+				._M_iterator(*this, "this")
+				._M_iterator(__x, "other"));
+	}
+
+      /**
+       * @brief Copy assignment.
+       */
+      _Safe_iterator&
+      operator=(const _Safe_iterator& __x)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// DR 408. Is vector<reverse_iterator<char*> > forbidden?
+	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
+			      || __x._M_current == _Iterator(),
+			      _M_message(__msg_copy_singular)
+			      ._M_iterator(*this, "this")
+			      ._M_iterator(__x, "other"));
+	_M_current = __x._M_current;
+	this->_M_attach(__x._M_sequence);
+	return *this;
+      }
+
+      /**
+       *  @brief Iterator dereference.
+       *  @pre iterator is dereferenceable
+       */
+      reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
+			      _M_message(__msg_bad_deref)
+			      ._M_iterator(*this, "this"));
+	return *_M_current;
+      }
+
+      /**
+       *  @brief Iterator dereference.
+       *  @pre iterator is dereferenceable
+       *  @todo Make this correct w.r.t. iterators that return proxies
+       *  @todo Use addressof() instead of & operator
+       */
+      pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
+			      _M_message(__msg_bad_deref)
+			      ._M_iterator(*this, "this"));
+	return &*_M_current;
+      }
+
+      // ------ Input iterator requirements ------
+      /**
+       *  @brief Iterator preincrement
+       *  @pre iterator is incrementable
+       */
+      _Safe_iterator&
+      operator++()
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
+			      _M_message(__msg_bad_inc)
+			      ._M_iterator(*this, "this"));
+	++_M_current;
+	return *this;
+      }
+
+      /**
+       *  @brief Iterator postincrement
+       *  @pre iterator is incrementable
+       */
+      _Safe_iterator
+      operator++(int)
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
+			      _M_message(__msg_bad_inc)
+			      ._M_iterator(*this, "this"));
+	_Safe_iterator __tmp(*this);
+	++_M_current;
+	return __tmp;
+      }
+
+      // ------ Bidirectional iterator requirements ------
+      /**
+       *  @brief Iterator predecrement
+       *  @pre iterator is decrementable
+       */
+      _Safe_iterator&
+      operator--()
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(),
+			      _M_message(__msg_bad_dec)
+			      ._M_iterator(*this, "this"));
+	--_M_current;
+	return *this;
+      }
+
+      /**
+       *  @brief Iterator postdecrement
+       *  @pre iterator is decrementable
+       */
+      _Safe_iterator
+      operator--(int)
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(),
+			      _M_message(__msg_bad_dec)
+			      ._M_iterator(*this, "this"));
+	_Safe_iterator __tmp(*this);
+	--_M_current;
+	return __tmp;
+      }
+
+      // ------ Random access iterator requirements ------
+      reference
+      operator[](const difference_type& __n) const
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n)
+			      && this->_M_can_advance(__n+1),
+			      _M_message(__msg_iter_subscript_oob)
+			      ._M_iterator(*this)._M_integer(__n));
+
+	return _M_current[__n];
+      }
+
+      _Safe_iterator&
+      operator+=(const difference_type& __n)
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n),
+			      _M_message(__msg_advance_oob)
+			      ._M_iterator(*this)._M_integer(__n));
+	_M_current += __n;
+	return *this;
+      }
+
+      _Safe_iterator
+      operator+(const difference_type& __n) const
+      {
+	_Safe_iterator __tmp(*this);
+	__tmp += __n;
+	return __tmp;
+      }
+
+      _Safe_iterator&
+      operator-=(const difference_type& __n)
+      {
+	_GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(-__n),
+			      _M_message(__msg_retreat_oob)
+			      ._M_iterator(*this)._M_integer(__n));
+	_M_current += -__n;
+	return *this;
+      }
+
+      _Safe_iterator
+      operator-(const difference_type& __n) const
+      {
+	_Safe_iterator __tmp(*this);
+	__tmp -= __n;
+	return __tmp;
+      }
+
+      // ------ Utilities ------
+      /**
+       * @brief Return the underlying iterator
+       */
+      _Iterator
+      base() const { return _M_current; }
+
+      /**
+       * @brief Conversion to underlying non-debug iterator to allow
+       * better interaction with non-debug containers.
+       */
+      operator _Iterator() const { return _M_current; }
+
+      /** Attach iterator to the given sequence. */
+      void
+      _M_attach(_Safe_sequence_base* __seq)
+      {
+	_Safe_iterator_base::_M_attach(__seq, _M_constant());
+      }
+
+      /** Likewise, but not thread-safe. */
+      void
+      _M_attach_single(_Safe_sequence_base* __seq)
+      {
+	_Safe_iterator_base::_M_attach_single(__seq, _M_constant());
+      }
+
+      /// Is the iterator dereferenceable?
+      bool
+      _M_dereferenceable() const
+      { return !this->_M_singular() && !_M_is_end() && !_M_is_before_begin(); }
+
+      /// Is the iterator before a dereferenceable one?
+      bool
+      _M_before_dereferenceable() const
+      {
+	_Self __it = *this;
+	return __it._M_incrementable() && (++__it)._M_dereferenceable();
+      }
+
+      /// Is the iterator incrementable?
+      bool
+      _M_incrementable() const
+      { return !this->_M_singular() && !_M_is_end(); }
+
+      // Is the iterator decrementable?
+      bool
+      _M_decrementable() const { return !_M_singular() && !_M_is_begin(); }
+
+      // Can we advance the iterator @p __n steps (@p __n may be negative)
+      bool
+      _M_can_advance(const difference_type& __n) const;
+
+      // Is the iterator range [*this, __rhs) valid?
+      template<typename _Other>
+        bool
+        _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const;
+
+      // The sequence this iterator references.
+      const _Sequence*
+      _M_get_sequence() const
+      { return static_cast<const _Sequence*>(_M_sequence); }
+
+    /** Determine the distance between two iterators with some known
+     *	precision.
+    */
+    template<typename _Iterator1, typename _Iterator2>
+      static std::pair<difference_type, _Distance_precision>
+      _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs)
+      {
+        typedef typename std::iterator_traits<_Iterator1>::iterator_category
+	  _Category;
+        return _M_get_distance(__lhs, __rhs, _Category());
+      }
+
+    template<typename _Iterator1, typename _Iterator2>
+      static std::pair<difference_type, _Distance_precision>
+      _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs,
+		      std::random_access_iterator_tag)
+      { return std::make_pair(__rhs - __lhs, __dp_exact); }
+
+    template<typename _Iterator1, typename _Iterator2>
+      static std::pair<difference_type, _Distance_precision>
+      _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs,
+		    std::forward_iterator_tag)
+      { return std::make_pair(__lhs == __rhs? 0 : 1, __dp_equality); }
+
+      /// Is this iterator equal to the sequence's begin() iterator?
+      bool _M_is_begin() const
+      { return base() == _M_get_sequence()->_M_base().begin(); }
+
+      /// Is this iterator equal to the sequence's end() iterator?
+      bool _M_is_end() const
+      { return base() == _M_get_sequence()->_M_base().end(); }
+
+      /// Is this iterator equal to the sequence's before_begin() iterator if
+      /// any?
+      bool _M_is_before_begin() const
+      { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); }
+    };
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator==(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	       const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_compare_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_compare_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() == __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator==(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+               const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_compare_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_compare_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() == __rhs.base();
+    }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator!=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	       const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_compare_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_compare_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() != __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator!=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+               const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_compare_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_compare_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() != __rhs.base();
+    }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator<(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	      const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() < __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator<(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+	      const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() < __rhs.base();
+    }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator<=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	       const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() <= __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator<=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+               const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() <= __rhs.base();
+    }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator>(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	      const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() > __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator>(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+	      const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() > __rhs.base();
+    }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator>=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	       const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() >= __rhs.base();
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator>=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+               const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_iter_order_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_order_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() >= __rhs.base();
+    }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // According to the resolution of DR179 not only the various comparison
+  // operators but also operator- must accept mixed iterator/const_iterator
+  // parameters.
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline typename _Safe_iterator<_IteratorL, _Sequence>::difference_type
+    operator-(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
+	      const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
+    {
+      _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			    _M_message(__msg_distance_bad)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			    _M_message(__msg_distance_different)
+			    ._M_iterator(__lhs, "lhs")
+			    ._M_iterator(__rhs, "rhs"));
+      return __lhs.base() - __rhs.base();
+    }
+
+   template<typename _Iterator, typename _Sequence>
+     inline typename _Safe_iterator<_Iterator, _Sequence>::difference_type
+     operator-(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
+	       const _Safe_iterator<_Iterator, _Sequence>& __rhs)
+     {
+       _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
+			     _M_message(__msg_distance_bad)
+			     ._M_iterator(__lhs, "lhs")
+			     ._M_iterator(__rhs, "rhs"));
+       _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
+			     _M_message(__msg_distance_different)
+			     ._M_iterator(__lhs, "lhs")
+			     ._M_iterator(__rhs, "rhs"));
+       return __lhs.base() - __rhs.base();
+     }
+
+  template<typename _Iterator, typename _Sequence>
+    inline _Safe_iterator<_Iterator, _Sequence>
+    operator+(typename _Safe_iterator<_Iterator,_Sequence>::difference_type __n,
+	      const _Safe_iterator<_Iterator, _Sequence>& __i)
+    { return __i + __n; }
+
+  // Helper struct to detect random access safe iterators.
+  template<typename _Iterator>
+    struct __is_safe_random_iterator
+    {
+      enum { __value = 0 };
+      typedef std::__false_type __type;
+    };
+
+  template<typename _Iterator, typename _Sequence>
+    struct __is_safe_random_iterator<_Safe_iterator<_Iterator, _Sequence> >
+    : std::__are_same<std::random_access_iterator_tag,
+                      typename std::iterator_traits<_Iterator>::
+		      iterator_category>
+    { };
+
+  template<typename _Iterator>
+    struct _Siter_base
+    : std::_Iter_base<_Iterator, __is_safe_random_iterator<_Iterator>::__value>
+    { };
+
+  /** Helper function to extract base iterator of random access safe iterator
+      in order to reduce performance impact of debug mode.  Limited to random
+      access iterator because it is the only category for which it is possible
+      to check for correct iterators order in the __valid_range function
+      thanks to the < operator.
+  */
+  template<typename _Iterator>
+    inline typename _Siter_base<_Iterator>::iterator_type
+    __base(_Iterator __it)
+    { return _Siter_base<_Iterator>::_S_base(__it); }
+} // namespace __gnu_debug
+
+#include <debug/safe_iterator.tcc>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.tcc
new file mode 100644
index 000000000..942640c65
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_iterator.tcc
@@ -0,0 +1,106 @@
+// Debugging iterator implementation (out of line) -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/safe_iterator.tcc
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC
+#define _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC 1
+
+namespace __gnu_debug
+{
+  template<typename _Iterator, typename _Sequence>
+    bool
+    _Safe_iterator<_Iterator, _Sequence>::
+    _M_can_advance(const difference_type& __n) const
+    {
+      typedef typename _Sequence::const_iterator const_debug_iterator;
+      typedef typename const_debug_iterator::iterator_type const_iterator;
+
+      if (this->_M_singular())
+	return false;
+      if (__n == 0)
+	return true;
+      if (__n < 0)
+	{
+	  const_iterator __begin = _M_get_sequence()->_M_base().begin();
+	  std::pair<difference_type, _Distance_precision> __dist =
+	    this->_M_get_distance(__begin, base());
+	  bool __ok =  ((__dist.second == __dp_exact && __dist.first >= -__n)
+			|| (__dist.second != __dp_exact && __dist.first > 0));
+	  return __ok;
+	}
+      else
+	{
+	  const_iterator __end = _M_get_sequence()->_M_base().end();
+	  std::pair<difference_type, _Distance_precision> __dist =
+	    this->_M_get_distance(base(), __end);
+	  bool __ok = ((__dist.second == __dp_exact && __dist.first >= __n)
+		       || (__dist.second != __dp_exact && __dist.first > 0));
+	  return __ok;
+	}
+    }
+
+  template<typename _Iterator, typename _Sequence>
+    template<typename _Other>
+      bool
+      _Safe_iterator<_Iterator, _Sequence>::
+      _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const
+      {
+	if (!_M_can_compare(__rhs))
+	  return false;
+
+	/* Determine if we can order the iterators without the help of
+	   the container */
+	std::pair<difference_type, _Distance_precision> __dist =
+	  this->_M_get_distance(base(), __rhs.base());
+	switch (__dist.second) {
+	case __dp_equality:
+	  if (__dist.first == 0)
+	    return true;
+	  break;
+
+	case __dp_sign:
+	case __dp_exact:
+	  return __dist.first >= 0;
+	}
+
+	/* We can only test for equality, but check if one of the
+	   iterators is at an extreme. */
+	/* Optim for classic [begin, it) or [it, end) ranges, limit checks
+	 * when code is valid. */
+	if (_M_is_begin() || __rhs._M_is_end())
+	  return true;
+	if (_M_is_end() || __rhs._M_is_begin())
+	  return false;
+
+	// Assume that this is a valid range; we can't check anything else
+	return true;
+      }
+} // namespace __gnu_debug
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.h
new file mode 100644
index 000000000..cc1f4c10d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.h
@@ -0,0 +1,135 @@
+// Safe sequence implementation  -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/safe_sequence.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_H
+#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_H 1
+
+#include <debug/debug.h>
+#include <debug/macros.h>
+#include <debug/functions.h>
+#include <debug/safe_base.h>
+
+namespace __gnu_debug
+{
+  template<typename _Iterator, typename _Sequence>
+    class _Safe_iterator;
+
+  /** A simple function object that returns true if the passed-in
+   *  value is not equal to the stored value. It saves typing over
+   *  using both bind1st and not_equal.
+   */
+  template<typename _Type>
+    class _Not_equal_to
+    {
+      _Type __value;
+
+    public:
+      explicit _Not_equal_to(const _Type& __v) : __value(__v) { }
+
+      bool
+      operator()(const _Type& __x) const
+      { return __value != __x; }
+    };
+
+  /** A simple function object that returns true if the passed-in
+   *  value is equal to the stored value. */
+  template <typename _Type>
+    class _Equal_to
+    {
+      _Type __value;
+
+    public:
+      explicit _Equal_to(const _Type& __v) : __value(__v) { }
+
+      bool
+      operator()(const _Type& __x) const
+      { return __value == __x; }
+    };
+
+  /** A function object that returns true when the given random access
+      iterator is at least @c n steps away from the given iterator. */
+  template<typename _Iterator>
+    class _After_nth_from
+    {
+      typedef typename std::iterator_traits<_Iterator>::difference_type
+      difference_type;
+
+      _Iterator _M_base;
+      difference_type _M_n;
+
+    public:
+      _After_nth_from(const difference_type& __n, const _Iterator& __base)
+      : _M_base(__base), _M_n(__n) { }
+
+      bool
+      operator()(const _Iterator& __x) const
+      { return __x - _M_base >= _M_n; }
+    };
+
+  /**
+   * @brief Base class for constructing a @a safe sequence type that
+   * tracks iterators that reference it.
+   *
+   * The class template %_Safe_sequence simplifies the construction of
+   * @a safe sequences that track the iterators that reference the
+   * sequence, so that the iterators are notified of changes in the
+   * sequence that may affect their operation, e.g., if the container
+   * invalidates its iterators or is destructed. This class template
+   * may only be used by deriving from it and passing the name of the
+   * derived class as its template parameter via the curiously
+   * recurring template pattern. The derived class must have @c
+   * iterator and @const_iterator types that are instantiations of
+   * class template _Safe_iterator for this sequence. Iterators will
+   * then be tracked automatically.
+   */
+  template<typename _Sequence>
+    class _Safe_sequence : public _Safe_sequence_base
+    {
+    public:
+      /** Invalidates all iterators @c x that reference this sequence,
+	  are not singular, and for which @c pred(x) returns @c
+	  true. @c pred will be invoked with the normal iterators nested
+	  in the safe ones. */
+      template<typename _Predicate>
+        void
+        _M_invalidate_if(_Predicate __pred);
+
+      /** Transfers all iterators @c x that reference @c from sequence,
+	  are not singular, and for which @c pred(x) returns @c
+	  true. @c pred will be invoked with the normal iterators nested
+	  in the safe ones. */
+      template<typename _Predicate>
+        void
+        _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred);
+    };
+} // namespace __gnu_debug
+
+#include <debug/safe_sequence.tcc>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.tcc
new file mode 100644
index 000000000..bf0295cfd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/safe_sequence.tcc
@@ -0,0 +1,150 @@
+// Safe sequence implementation  -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/safe_sequence.tcc
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC
+#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC 1
+
+namespace __gnu_debug
+{
+  template<typename _Sequence>
+    template<typename _Predicate>
+      void
+      _Safe_sequence<_Sequence>::
+      _M_invalidate_if(_Predicate __pred)
+      {
+        typedef typename _Sequence::iterator iterator;
+        typedef typename _Sequence::const_iterator const_iterator;
+
+	__gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
+        for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
+	  {
+	    iterator* __victim = static_cast<iterator*>(__iter);
+	    __iter = __iter->_M_next;
+	    if (!__victim->_M_singular() && __pred(__victim->base()))
+	      {
+		__victim->_M_invalidate();
+	      }
+	  }
+
+        for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;)
+	  {
+	    const_iterator* __victim = static_cast<const_iterator*>(__iter2);
+	    __iter2 = __iter2->_M_next;
+	    if (!__victim->_M_singular() && __pred(__victim->base()))
+	      {
+		__victim->_M_invalidate();
+	      }
+	  }
+      }
+
+  template<typename _Sequence>
+    template<typename _Predicate>
+      void
+      _Safe_sequence<_Sequence>::
+      _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred)
+      {
+        typedef typename _Sequence::iterator iterator;
+        typedef typename _Sequence::const_iterator const_iterator;
+
+	_Safe_iterator_base* __transfered_iterators = 0;
+	_Safe_iterator_base* __transfered_const_iterators = 0;
+	_Safe_iterator_base* __last_iterator = 0;
+	_Safe_iterator_base* __last_const_iterator = 0;
+	{
+	  // We lock __from first and detach iterator(s) to transfer
+	  __gnu_cxx::__scoped_lock sentry(__from._M_get_mutex());
+
+          for (_Safe_iterator_base* __iter = __from._M_iterators; __iter;)
+	    {
+	      iterator* __victim = static_cast<iterator*>(__iter);
+	      __iter = __iter->_M_next;
+	      if (!__victim->_M_singular() && __pred(__victim->base()))
+		{
+		  __victim->_M_detach_single();
+		  if (__transfered_iterators)
+		    {
+		      __victim->_M_next = __transfered_iterators;
+		      __transfered_iterators->_M_prior = __victim;
+		    }
+		  else
+		    __last_iterator = __victim;
+		  __victim->_M_sequence = this;
+		  __victim->_M_version = this->_M_version;
+		  __transfered_iterators = __victim;
+		}
+	    }
+
+	  for (_Safe_iterator_base* __iter2 = __from._M_const_iterators;
+		 __iter2;)
+	    {
+	      const_iterator* __victim = static_cast<const_iterator*>(__iter2);
+	      __iter2 = __iter2->_M_next;
+	      if (!__victim->_M_singular() && __pred(__victim->base()))
+		{
+		  __victim->_M_detach_single();
+		  if (__transfered_const_iterators)
+		    {
+		      __victim->_M_next = __transfered_const_iterators;
+		      __transfered_const_iterators->_M_prior = __victim;
+		    }
+		  else
+		    __last_const_iterator = __victim;
+		  __victim->_M_sequence = this;
+		  __victim->_M_version = this->_M_version;
+		  __transfered_const_iterators = __victim;
+		}
+	    }
+	}
+
+	// Now we can lock *this and add the transfered iterators if any
+	if (__last_iterator || __last_const_iterator)
+	  {
+	    __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
+	    if (__last_iterator)
+	      {
+		if (this->_M_iterators)
+		  {
+		    this->_M_iterators->_M_prior = __last_iterator;
+		    __last_iterator->_M_next = this->_M_iterators;
+		  }
+		this->_M_iterators = __transfered_iterators;
+	      }
+	    if (__last_const_iterator)
+	      {
+		if (this->_M_const_iterators)
+		  {
+		    this->_M_const_iterators->_M_prior = __last_const_iterator;
+		    __last_const_iterator->_M_next = this->_M_const_iterators;
+		  }
+		this->_M_const_iterators = __transfered_const_iterators;
+	      }
+	  }
+      }
+} // namespace __gnu_debug
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set
new file mode 100644
index 000000000..34f3ea5e4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set
@@ -0,0 +1,37 @@
+// Debugging set/multiset implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/set
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SET
+#define _GLIBCXX_DEBUG_SET 1
+
+#include <set>
+#include <debug/set.h>
+#include <debug/multiset.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set.h
new file mode 100644
index 000000000..7ca4c7788
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/set.h
@@ -0,0 +1,449 @@
+// Debugging set implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/set.h
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_SET_H
+#define _GLIBCXX_DEBUG_SET_H 1
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default) 
+{
+namespace __debug
+{
+  /// Class std::set with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<_Key> >
+    class set
+    : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>,
+      public __gnu_debug::_Safe_sequence<set<_Key, _Compare, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<set> _Safe_base;
+
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+    public:
+      // types:
+      typedef _Key				    key_type;
+      typedef _Key				    value_type;
+      typedef _Compare				    key_compare;
+      typedef _Compare				    value_compare;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator, set>
+                                                    iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, set>
+                                                    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.3.3.1 construct/copy/destroy:
+      explicit set(const _Compare& __comp = _Compare(),
+		   const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+        set(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp = _Compare(),
+	    const _Allocator& __a = _Allocator())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last),
+		__comp, __a) { }
+
+      set(const set& __x)
+      : _Base(__x), _Safe_base() { }
+
+      set(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      set(set&& __x)
+      : _Base(std::move(__x)), _Safe_base()
+      { this->_M_swap(__x); }
+
+      set(initializer_list<value_type> __l,
+	  const _Compare& __comp = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _Base(__l, __comp, __a), _Safe_base() { }
+#endif
+
+      ~set() { }
+
+      set&
+      operator=(const set& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      set&
+      operator=(set&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      {
+	std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
+	return std::pair<iterator, bool>(iterator(__res.first, this),
+					 __res.second);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      std::pair<iterator, bool>
+      insert(value_type&& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, bool> __res
+	  = _Base::insert(std::move(__x));
+	return std::pair<iterator, bool>(iterator(__res.first, this),
+					 __res.second);
+      }
+#endif
+
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      {
+	__glibcxx_check_insert(__position);
+	return iterator(_Base::insert(__position.base(), std::move(__x)),
+			this);
+      }
+#endif
+
+      template <typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	return iterator(_Base::erase(__position.base()), this);
+      }
+#else
+      void
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	this->_M_invalidate_if(_Equal(__position.base()));
+	_Base::erase(__position.base());
+      }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	_Base_iterator __victim = _Base::find(__x);
+	if (__victim == _Base::end())
+          return 0;
+	else
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim);
+	    return 1;
+	  }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	return iterator(_Base::erase(__first.base(), __last.base()), this);
+      }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_iterator __victim = __first.base();
+	     __victim != __last.base(); ++__victim)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__victim));
+	  }
+	_Base::erase(__first.base(), __last.base());
+      }
+#endif
+
+      void
+      swap(set& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	this->_M_invalidate_all();
+	_Base::clear();
+      }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // set operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x), this); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x), this); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x), this); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x), this); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_M_base().end()));
+      }
+    };
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const set<_Key, _Compare, _Allocator>& __lhs,
+	      const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const set<_Key, _Compare, _Allocator>& __lhs,
+	      const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    void
+    swap(set<_Key, _Compare, _Allocator>& __x,
+	 set<_Key, _Compare, _Allocator>& __y)
+    { return __x.swap(__y); }
+
+} // namespace __debug
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/string b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/string
new file mode 100644
index 000000000..fe073f21c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/string
@@ -0,0 +1,1113 @@
+// Debugging string implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/string
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_STRING
+#define _GLIBCXX_DEBUG_STRING 1
+
+#include <string>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace __gnu_debug
+{
+  /// Class std::basic_string with safety/checking/debug instrumentation.
+  template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
+            typename _Allocator = std::allocator<_CharT> >
+    class basic_string
+    : public std::basic_string<_CharT, _Traits, _Allocator>,
+      public __gnu_debug::_Safe_sequence<basic_string<_CharT, _Traits,
+						      _Allocator> >
+    {
+      typedef std::basic_string<_CharT, _Traits, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<basic_string>     _Safe_base;
+
+  public:
+    // types:
+    typedef _Traits				       traits_type;
+    typedef typename _Traits::char_type		       value_type;
+    typedef _Allocator				       allocator_type;
+    typedef typename _Base::size_type                  size_type;
+    typedef typename _Base::difference_type            difference_type;
+    typedef typename _Base::reference                  reference;
+    typedef typename _Base::const_reference            const_reference;
+    typedef typename _Base::pointer                    pointer;
+    typedef typename _Base::const_pointer              const_pointer;
+
+    typedef __gnu_debug::_Safe_iterator<typename _Base::iterator, basic_string>
+                                                       iterator;
+    typedef __gnu_debug::_Safe_iterator<typename _Base::const_iterator,
+                                         basic_string> const_iterator;
+
+    typedef std::reverse_iterator<iterator>            reverse_iterator;
+    typedef std::reverse_iterator<const_iterator>      const_reverse_iterator;
+
+    using _Base::npos;
+
+    // 21.3.1 construct/copy/destroy:
+    explicit basic_string(const _Allocator& __a = _Allocator())
+    : _Base(__a)
+    { }
+
+    // Provides conversion from a release-mode string to a debug-mode string
+    basic_string(const _Base& __base) : _Base(__base), _Safe_base() { }
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 42. string ctors specify wrong default allocator
+    basic_string(const basic_string& __str)
+    : _Base(__str, 0, _Base::npos, __str.get_allocator()), _Safe_base()
+    { }
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 42. string ctors specify wrong default allocator
+    basic_string(const basic_string& __str, size_type __pos,
+		   size_type __n = _Base::npos,
+		   const _Allocator& __a = _Allocator())
+    : _Base(__str, __pos, __n, __a)
+    { }
+
+    basic_string(const _CharT* __s, size_type __n,
+		   const _Allocator& __a = _Allocator())
+    : _Base(__gnu_debug::__check_string(__s, __n), __n, __a)
+    { }
+
+    basic_string(const _CharT* __s, const _Allocator& __a = _Allocator())
+    : _Base(__gnu_debug::__check_string(__s), __a)
+    { this->assign(__s); }
+
+    basic_string(size_type __n, _CharT __c,
+		   const _Allocator& __a = _Allocator())
+    : _Base(__n, __c, __a)
+    { }
+
+    template<typename _InputIterator>
+      basic_string(_InputIterator __begin, _InputIterator __end,
+		   const _Allocator& __a = _Allocator())
+      : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin,
+								   __end)),
+	      __gnu_debug::__base(__end), __a)
+      { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    basic_string(basic_string&& __str)
+    : _Base(std::move(__str))
+    { }
+
+    basic_string(std::initializer_list<_CharT> __l,
+		 const _Allocator& __a = _Allocator())
+    : _Base(__l, __a)
+    { }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    ~basic_string() { }
+
+    basic_string&
+    operator=(const basic_string& __str)
+    {
+      *static_cast<_Base*>(this) = __str;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    operator=(const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      *static_cast<_Base*>(this) = __s;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    operator=(_CharT __c)
+    {
+      *static_cast<_Base*>(this) = __c;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    basic_string&
+    operator=(basic_string&& __str)
+    {
+      *static_cast<_Base*>(this) = std::move(__str);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    operator=(std::initializer_list<_CharT> __l)
+    {
+      *static_cast<_Base*>(this) = __l;
+      this->_M_invalidate_all();
+      return *this;
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    // 21.3.2 iterators:
+    iterator
+    begin()
+    { return iterator(_Base::begin(), this); }
+
+    const_iterator
+    begin() const
+    { return const_iterator(_Base::begin(), this); }
+
+    iterator
+    end()
+    { return iterator(_Base::end(), this); }
+
+    const_iterator
+    end() const
+    { return const_iterator(_Base::end(), this); }
+
+    reverse_iterator
+    rbegin()
+    { return reverse_iterator(end()); }
+
+    const_reverse_iterator
+    rbegin() const
+    { return const_reverse_iterator(end()); }
+
+    reverse_iterator
+    rend()
+    { return reverse_iterator(begin()); }
+
+    const_reverse_iterator
+    rend() const
+    { return const_reverse_iterator(begin()); }
+
+    // 21.3.3 capacity:
+    using _Base::size;
+    using _Base::length;
+    using _Base::max_size;
+
+    void
+    resize(size_type __n, _CharT __c)
+    {
+      _Base::resize(__n, __c);
+      this->_M_invalidate_all();
+    }
+
+    void
+    resize(size_type __n)
+    { this->resize(__n, _CharT()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    using _Base::shrink_to_fit;
+#endif
+
+    using _Base::capacity;
+    using _Base::reserve;
+
+    void
+    clear()
+    {
+      _Base::clear();
+      this->_M_invalidate_all();
+    }
+
+    using _Base::empty;
+
+    // 21.3.4 element access:
+    const_reference
+    operator[](size_type __pos) const
+    {
+      _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(),
+			    _M_message(__gnu_debug::__msg_subscript_oob)
+			    ._M_sequence(*this, "this")
+			    ._M_integer(__pos, "__pos")
+			    ._M_integer(this->size(), "size"));
+      return _M_base()[__pos];
+    }
+
+    reference
+    operator[](size_type __pos)
+    {
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+      __glibcxx_check_subscript(__pos);
+#else
+      // as an extension v3 allows s[s.size()] when s is non-const.
+      _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(),
+			    _M_message(__gnu_debug::__msg_subscript_oob)
+			    ._M_sequence(*this, "this")
+			    ._M_integer(__pos, "__pos")
+			    ._M_integer(this->size(), "size"));
+#endif
+      return _M_base()[__pos];
+    }
+
+    using _Base::at;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    using _Base::front;
+    using _Base::back;
+#endif
+
+    // 21.3.5 modifiers:
+    basic_string&
+    operator+=(const basic_string& __str)
+    {
+      _M_base() += __str;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    operator+=(const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      _M_base() += __s;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    operator+=(_CharT __c)
+    {
+      _M_base() += __c;
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    basic_string&
+    operator+=(std::initializer_list<_CharT> __l)
+    {
+      _M_base() += __l;
+      this->_M_invalidate_all();
+      return *this;
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    basic_string&
+    append(const basic_string& __str)
+    {
+      _Base::append(__str);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    append(const basic_string& __str, size_type __pos, size_type __n)
+    {
+      _Base::append(__str, __pos, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    append(const _CharT* __s, size_type __n)
+    {
+      __glibcxx_check_string_len(__s, __n);
+      _Base::append(__s, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    append(const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      _Base::append(__s);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    append(size_type __n, _CharT __c)
+    {
+      _Base::append(__n, __c);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    template<typename _InputIterator>
+      basic_string&
+      append(_InputIterator __first, _InputIterator __last)
+      {
+	__glibcxx_check_valid_range(__first, __last);
+	_Base::append(__gnu_debug::__base(__first),
+		      __gnu_debug::__base(__last));
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 7. string clause minor problems
+    void
+    push_back(_CharT __c)
+    {
+      _Base::push_back(__c);
+      this->_M_invalidate_all();
+    }
+
+    basic_string&
+    assign(const basic_string& __x)
+    {
+      _Base::assign(__x);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    basic_string&
+    assign(basic_string&& __x)
+    {
+      _Base::assign(std::move(__x));
+      this->_M_invalidate_all();
+      return *this;
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    basic_string&
+    assign(const basic_string& __str, size_type __pos, size_type __n)
+    {
+      _Base::assign(__str, __pos, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    assign(const _CharT* __s, size_type __n)
+    {
+      __glibcxx_check_string_len(__s, __n);
+      _Base::assign(__s, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    assign(const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      _Base::assign(__s);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    assign(size_type __n, _CharT __c)
+    {
+      _Base::assign(__n, __c);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    template<typename _InputIterator>
+      basic_string&
+      assign(_InputIterator __first, _InputIterator __last)
+      {
+	__glibcxx_check_valid_range(__first, __last);
+	_Base::assign(__gnu_debug::__base(__first),
+		      __gnu_debug::__base(__last));
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    basic_string&
+    assign(std::initializer_list<_CharT> __l)
+    {
+      _Base::assign(__l);
+      this->_M_invalidate_all();
+      return *this;
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    basic_string&
+    insert(size_type __pos1, const basic_string& __str)
+    {
+      _Base::insert(__pos1, __str);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    insert(size_type __pos1, const basic_string& __str,
+	   size_type __pos2, size_type __n)
+    {
+      _Base::insert(__pos1, __str, __pos2, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    insert(size_type __pos, const _CharT* __s, size_type __n)
+    {
+      __glibcxx_check_string(__s);
+      _Base::insert(__pos, __s, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    insert(size_type __pos, const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      _Base::insert(__pos, __s);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    insert(size_type __pos, size_type __n, _CharT __c)
+    {
+      _Base::insert(__pos, __n, __c);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    iterator
+    insert(iterator __p, _CharT __c)
+    {
+      __glibcxx_check_insert(__p);
+      typename _Base::iterator __res = _Base::insert(__p.base(), __c);
+      this->_M_invalidate_all();
+      return iterator(__res, this);
+    }
+
+    void
+    insert(iterator __p, size_type __n, _CharT __c)
+    {
+      __glibcxx_check_insert(__p);
+      _Base::insert(__p.base(), __n, __c);
+      this->_M_invalidate_all();
+    }
+
+    template<typename _InputIterator>
+      void
+      insert(iterator __p, _InputIterator __first, _InputIterator __last)
+      {
+	__glibcxx_check_insert_range(__p, __first, __last);
+	_Base::insert(__p.base(), __gnu_debug::__base(__first),
+				  __gnu_debug::__base(__last));
+	this->_M_invalidate_all();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    void
+    insert(iterator __p, std::initializer_list<_CharT> __l)
+    {
+      __glibcxx_check_insert(__p);
+      _Base::insert(__p.base(), __l);
+      this->_M_invalidate_all();
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    basic_string&
+    erase(size_type __pos = 0, size_type __n = _Base::npos)
+    {
+      _Base::erase(__pos, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    iterator
+    erase(iterator __position)
+    {
+      __glibcxx_check_erase(__position);
+      typename _Base::iterator __res = _Base::erase(__position.base());
+      this->_M_invalidate_all();
+      return iterator(__res, this);
+    }
+
+    iterator
+    erase(iterator __first, iterator __last)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 151. can't currently clear() empty container
+      __glibcxx_check_erase_range(__first, __last);
+      typename _Base::iterator __res = _Base::erase(__first.base(),
+						       __last.base());
+      this->_M_invalidate_all();
+      return iterator(__res, this);
+    }
+
+    basic_string&
+    replace(size_type __pos1, size_type __n1, const basic_string& __str)
+    {
+      _Base::replace(__pos1, __n1, __str);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(size_type __pos1, size_type __n1, const basic_string& __str,
+	    size_type __pos2, size_type __n2)
+    {
+      _Base::replace(__pos1, __n1, __str, __pos2, __n2);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(size_type __pos, size_type __n1, const _CharT* __s,
+	    size_type __n2)
+    {
+      __glibcxx_check_string_len(__s, __n2);
+      _Base::replace(__pos, __n1, __s, __n2);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(size_type __pos, size_type __n1, const _CharT* __s)
+    {
+      __glibcxx_check_string(__s);
+      _Base::replace(__pos, __n1, __s);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
+    {
+      _Base::replace(__pos, __n1, __n2, __c);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(iterator __i1, iterator __i2, const basic_string& __str)
+    {
+      __glibcxx_check_erase_range(__i1, __i2);
+      _Base::replace(__i1.base(), __i2.base(), __str);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+    {
+      __glibcxx_check_erase_range(__i1, __i2);
+      __glibcxx_check_string_len(__s, __n);
+      _Base::replace(__i1.base(), __i2.base(), __s, __n);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(iterator __i1, iterator __i2, const _CharT* __s)
+    {
+      __glibcxx_check_erase_range(__i1, __i2);
+      __glibcxx_check_string(__s);
+      _Base::replace(__i1.base(), __i2.base(), __s);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    basic_string&
+    replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
+    {
+      __glibcxx_check_erase_range(__i1, __i2);
+      _Base::replace(__i1.base(), __i2.base(), __n, __c);
+      this->_M_invalidate_all();
+      return *this;
+    }
+
+    template<typename _InputIterator>
+      basic_string&
+      replace(iterator __i1, iterator __i2,
+	      _InputIterator __j1, _InputIterator __j2)
+      {
+	__glibcxx_check_erase_range(__i1, __i2);
+	__glibcxx_check_valid_range(__j1, __j2);
+	_Base::replace(__i1.base(), __i2.base(), __j1, __j2);
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      basic_string& replace(iterator __i1, iterator __i2,
+			    std::initializer_list<_CharT> __l)
+      {
+	__glibcxx_check_erase_range(__i1, __i2);
+	_Base::replace(__i1.base(), __i2.base(), __l);
+	this->_M_invalidate_all();
+	return *this;
+      }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    size_type
+    copy(_CharT* __s, size_type __n, size_type __pos = 0) const
+    {
+      __glibcxx_check_string_len(__s, __n);
+      return _Base::copy(__s, __n, __pos);
+    }
+
+    void
+    swap(basic_string<_CharT,_Traits,_Allocator>& __x)
+    {
+      _Base::swap(__x);
+      this->_M_swap(__x);
+      this->_M_invalidate_all();
+      __x._M_invalidate_all();
+    }
+
+    // 21.3.6 string operations:
+    const _CharT*
+    c_str() const
+    {
+      const _CharT* __res = _Base::c_str();
+      this->_M_invalidate_all();
+      return __res;
+    }
+
+    const _CharT*
+    data() const
+    {
+      const _CharT* __res = _Base::data();
+      this->_M_invalidate_all();
+      return __res;
+    }
+
+    using _Base::get_allocator;
+
+    size_type
+    find(const basic_string& __str, size_type __pos = 0) const
+    { return _Base::find(__str, __pos); }
+
+    size_type
+    find(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find(__s, __pos, __n);
+    }
+
+    size_type
+    find(const _CharT* __s, size_type __pos = 0) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find(__s, __pos);
+    }
+
+    size_type
+    find(_CharT __c, size_type __pos = 0) const
+    { return _Base::find(__c, __pos); }
+
+    size_type
+    rfind(const basic_string& __str, size_type __pos = _Base::npos) const
+    { return _Base::rfind(__str, __pos); }
+
+    size_type
+    rfind(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string_len(__s, __n);
+      return _Base::rfind(__s, __pos, __n);
+    }
+
+    size_type
+    rfind(const _CharT* __s, size_type __pos = _Base::npos) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::rfind(__s, __pos);
+    }
+
+    size_type
+    rfind(_CharT __c, size_type __pos = _Base::npos) const
+    { return _Base::rfind(__c, __pos); }
+
+    size_type
+    find_first_of(const basic_string& __str, size_type __pos = 0) const
+    { return _Base::find_first_of(__str, __pos); }
+
+    size_type
+    find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_first_of(__s, __pos, __n);
+    }
+
+    size_type
+    find_first_of(const _CharT* __s, size_type __pos = 0) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_first_of(__s, __pos);
+    }
+
+    size_type
+    find_first_of(_CharT __c, size_type __pos = 0) const
+    { return _Base::find_first_of(__c, __pos); }
+
+    size_type
+    find_last_of(const basic_string& __str, 
+		 size_type __pos = _Base::npos) const
+    { return _Base::find_last_of(__str, __pos); }
+
+    size_type
+    find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_last_of(__s, __pos, __n);
+    }
+
+    size_type
+    find_last_of(const _CharT* __s, size_type __pos = _Base::npos) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_last_of(__s, __pos);
+    }
+
+    size_type
+    find_last_of(_CharT __c, size_type __pos = _Base::npos) const
+    { return _Base::find_last_of(__c, __pos); }
+
+    size_type
+    find_first_not_of(const basic_string& __str, size_type __pos = 0) const
+    { return _Base::find_first_not_of(__str, __pos); }
+
+    size_type
+    find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string_len(__s, __n);
+      return _Base::find_first_not_of(__s, __pos, __n);
+    }
+
+    size_type
+    find_first_not_of(const _CharT* __s, size_type __pos = 0) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_first_not_of(__s, __pos);
+    }
+
+    size_type
+    find_first_not_of(_CharT __c, size_type __pos = 0) const
+    { return _Base::find_first_not_of(__c, __pos); }
+
+    size_type
+    find_last_not_of(const basic_string& __str,
+				  size_type __pos = _Base::npos) const
+    { return _Base::find_last_not_of(__str, __pos); }
+
+    size_type
+    find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_last_not_of(__s, __pos, __n);
+    }
+
+    size_type
+    find_last_not_of(const _CharT* __s, size_type __pos = _Base::npos) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::find_last_not_of(__s, __pos);
+    }
+
+    size_type
+    find_last_not_of(_CharT __c, size_type __pos = _Base::npos) const
+    { return _Base::find_last_not_of(__c, __pos); }
+
+    basic_string
+    substr(size_type __pos = 0, size_type __n = _Base::npos) const
+    { return basic_string(_Base::substr(__pos, __n)); }
+
+    int
+    compare(const basic_string& __str) const
+    { return _Base::compare(__str); }
+
+    int
+    compare(size_type __pos1, size_type __n1,
+		  const basic_string& __str) const
+    { return _Base::compare(__pos1, __n1, __str); }
+
+    int
+    compare(size_type __pos1, size_type __n1, const basic_string& __str,
+	      size_type __pos2, size_type __n2) const
+    { return _Base::compare(__pos1, __n1, __str, __pos2, __n2); }
+
+    int
+    compare(const _CharT* __s) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::compare(__s);
+    }
+
+    //  _GLIBCXX_RESOLVE_LIB_DEFECTS
+    //  5. string::compare specification questionable
+    int
+    compare(size_type __pos1, size_type __n1, const _CharT* __s) const
+    {
+      __glibcxx_check_string(__s);
+      return _Base::compare(__pos1, __n1, __s);
+    }
+
+    //  _GLIBCXX_RESOLVE_LIB_DEFECTS
+    //  5. string::compare specification questionable
+    int
+    compare(size_type __pos1, size_type __n1,const _CharT* __s,
+	      size_type __n2) const
+    {
+      __glibcxx_check_string_len(__s, __n2);
+      return _Base::compare(__pos1, __n1, __s, __n2);
+    }
+
+    _Base&
+    _M_base() { return *this; }
+
+    const _Base&
+    _M_base() const { return *this; }
+
+    using _Safe_base::_M_invalidate_all;
+  };
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline basic_string<_CharT,_Traits,_Allocator>
+    operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline basic_string<_CharT,_Traits,_Allocator>
+    operator+(const _CharT* __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline basic_string<_CharT,_Traits,_Allocator>
+    operator+(_CharT __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return basic_string<_CharT,_Traits,_Allocator>(1, __lhs) += __rhs; }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline basic_string<_CharT,_Traits,_Allocator>
+    operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline basic_string<_CharT,_Traits,_Allocator>
+    operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      _CharT __rhs)
+    { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator==(const _CharT* __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs == __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() == __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator!=(const _CharT* __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs != __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() != __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<(const _CharT* __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs < __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() < __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<=(const _CharT* __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs <= __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() <= __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>=(const _CharT* __lhs,
+	       const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs >= __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	       const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() >= __rhs;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>(const _CharT* __lhs,
+	      const basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    {
+      __glibcxx_check_string(__lhs);
+      return __lhs > __rhs._M_base();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline bool
+    operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	      const _CharT* __rhs)
+    {
+      __glibcxx_check_string(__rhs);
+      return __lhs._M_base() > __rhs;
+    }
+
+  // 21.3.7.8:
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    inline void
+    swap(basic_string<_CharT,_Traits,_Allocator>& __lhs,
+	 basic_string<_CharT,_Traits,_Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const basic_string<_CharT, _Traits, _Allocator>& __str)
+    { return __os << __str._M_base(); }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    std::basic_istream<_CharT,_Traits>&
+    operator>>(std::basic_istream<_CharT,_Traits>& __is,
+	       basic_string<_CharT,_Traits,_Allocator>& __str)
+    {
+      std::basic_istream<_CharT,_Traits>& __res = __is >> __str._M_base();
+      __str._M_invalidate_all();
+      return __res;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    std::basic_istream<_CharT,_Traits>&
+    getline(std::basic_istream<_CharT,_Traits>& __is,
+	    basic_string<_CharT,_Traits,_Allocator>& __str, _CharT __delim)
+    {
+      std::basic_istream<_CharT,_Traits>& __res = getline(__is,
+							  __str._M_base(),
+							__delim);
+      __str._M_invalidate_all();
+      return __res;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Allocator>
+    std::basic_istream<_CharT,_Traits>&
+    getline(std::basic_istream<_CharT,_Traits>& __is,
+	    basic_string<_CharT,_Traits,_Allocator>& __str)
+    {
+      std::basic_istream<_CharT,_Traits>& __res = getline(__is,
+							  __str._M_base());
+      __str._M_invalidate_all();
+      return __res;
+    }
+
+  typedef basic_string<char>    string;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef basic_string<wchar_t> wstring;
+#endif
+
+} // namespace __gnu_debug
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_map
new file mode 100644
index 000000000..2d7e100c4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_map
@@ -0,0 +1,618 @@
+// Debugging unordered_map/unordered_multimap implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/unordered_map
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_UNORDERED_MAP
+#define _GLIBCXX_DEBUG_UNORDERED_MAP 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+# include <unordered_map>
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::unordered_map with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Tp,
+	   typename _Hash = std::hash<_Key>,
+	   typename _Pred = std::equal_to<_Key>,
+	   typename _Alloc = std::allocator<_Key> >
+    class unordered_map
+    : public _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>,
+      public __gnu_debug::_Safe_sequence<unordered_map<_Key, _Tp, _Hash,
+						       _Pred, _Alloc> >
+    {
+      typedef _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash,
+					    _Pred, _Alloc> _Base;
+      typedef __gnu_debug::_Safe_sequence<unordered_map> _Safe_base;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,
+					  unordered_map> iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  unordered_map> const_iterator;
+
+      explicit
+      unordered_map(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a) { }
+
+      template<typename _InputIterator>
+        unordered_map(_InputIterator __first, _InputIterator __last, 
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(), 
+		      const key_equal& __eql = key_equal(), 
+		      const allocator_type& __a = allocator_type())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __n,
+		__hf, __eql, __a), _Safe_base() { }
+
+      unordered_map(const unordered_map& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_map(const _Base& __x)
+      : _Base(__x), _Safe_base() { }
+
+      unordered_map(unordered_map&& __x)
+      : _Base(std::move(__x)), _Safe_base() { }
+
+      unordered_map(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a), _Safe_base() { }
+
+      unordered_map&
+      operator=(const unordered_map& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      unordered_map&
+      operator=(unordered_map&& __x)
+      {
+   	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      unordered_map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      void
+      swap(unordered_map& __x)
+      {
+	_Base::swap(__x);
+	_Safe_base::_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      iterator 
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      // local versions
+      using _Base::begin;
+      using _Base::end;
+      using _Base::cbegin;
+      using _Base::cend;
+
+      std::pair<iterator, bool>
+      insert(const value_type& __obj)
+      {
+	std::pair<_Base_iterator, bool> __res = _Base::insert(__obj);
+	return std::make_pair(iterator(__res.first, this), __res.second);
+      }
+
+      iterator
+      insert(const_iterator __hint, const value_type& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), __obj), this);
+      }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        std::pair<iterator, bool>
+        insert(_Pair&& __obj)
+        {
+	  std::pair<_Base_iterator, bool> __res =
+	    _Base::insert(std::forward<_Pair>(__obj));
+	  return std::make_pair(iterator(__res.first, this), __res.second);
+	}
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __hint, _Pair&& __obj)
+        {
+	  __glibcxx_check_insert(__hint);
+	  return iterator(_Base::insert(__hint.base(),
+					std::forward<_Pair>(__obj)),
+			  this);
+	}
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+      iterator
+      find(const key_type& __key)
+      { return iterator(_Base::find(__key), this); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return const_iterator(_Base::find(__key), this); }
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	  _Base::equal_range(__key);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	  _Base::equal_range(__key);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      size_type
+      erase(const key_type& __key)
+      {
+	size_type __ret(0);
+	_Base_iterator __victim(_Base::find(__key));
+	if (__victim != _Base::end())
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim);
+	    __ret = 1;
+	  }
+	return __ret;
+      }
+
+      iterator
+      erase(const_iterator __it)
+      {
+	__glibcxx_check_erase(__it);
+	this->_M_invalidate_if(_Equal(__it.base()));
+	return iterator(_Base::erase(__it.base()), this);
+      }
+
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __tmp = __first.base();
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__tmp));
+	  }
+	return iterator(_Base::erase(__first.base(),
+				     __last.base()), this);
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+
+  /// Class std::unordered_multimap with safety/checking/debug instrumentation.
+  template<typename _Key, typename _Tp,
+	   typename _Hash = std::hash<_Key>,
+	   typename _Pred = std::equal_to<_Key>,
+	   typename _Alloc = std::allocator<_Key> >
+    class unordered_multimap
+    : public _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash,
+						_Pred, _Alloc>,
+      public __gnu_debug::_Safe_sequence<unordered_multimap<_Key, _Tp, _Hash,
+							    _Pred, _Alloc> >
+    {
+      typedef _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash,
+						 _Pred, _Alloc> _Base;
+      typedef __gnu_debug::_Safe_sequence<unordered_multimap> _Safe_base;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,
+					  unordered_multimap> iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  unordered_multimap> const_iterator;
+
+      explicit
+      unordered_multimap(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a) { }
+
+      template<typename _InputIterator>
+        unordered_multimap(_InputIterator __first, _InputIterator __last, 
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(), 
+			   const key_equal& __eql = key_equal(), 
+			   const allocator_type& __a = allocator_type())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __n,
+		__hf, __eql, __a), _Safe_base() { }
+
+      unordered_multimap(const unordered_multimap& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_multimap(const _Base& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_multimap(unordered_multimap&& __x) 
+      : _Base(std::move(__x)), _Safe_base() { }
+
+      unordered_multimap(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a), _Safe_base() { }
+
+      unordered_multimap&
+      operator=(const unordered_multimap& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      unordered_multimap&
+      operator=(unordered_multimap&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      unordered_multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      void
+      swap(unordered_multimap& __x)
+      {
+	_Base::swap(__x);
+	_Safe_base::_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      iterator 
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      // local versions
+      using _Base::begin;
+      using _Base::end;
+      using _Base::cbegin;
+      using _Base::cend;
+
+      iterator
+      insert(const value_type& __obj)
+      { return iterator(_Base::insert(__obj), this); }
+
+      iterator
+      insert(const_iterator __hint, const value_type& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), __obj), this);
+      }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(_Pair&& __obj)
+        { return iterator(_Base::insert(std::forward<_Pair>(__obj)), this); }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+	iterator
+	insert(const_iterator __hint, _Pair&& __obj)
+	{
+	  __glibcxx_check_insert(__hint);
+	  return iterator(_Base::insert(__hint.base(),
+					std::forward<_Pair>(__obj)),
+			  this);
+	}
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+      iterator
+      find(const key_type& __key)
+      { return iterator(_Base::find(__key), this); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return const_iterator(_Base::find(__key), this); }
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      {
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	  _Base::equal_range(__key);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	  _Base::equal_range(__key);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      size_type
+      erase(const key_type& __key)
+      {
+	size_type __ret(0);
+	std::pair<_Base_iterator, _Base_iterator> __pair =
+	  _Base::equal_range(__key);
+	for (_Base_iterator __victim = __pair.first; __victim != __pair.second;)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim++);
+	    ++__ret;
+	  }
+	return __ret;
+      }
+
+      iterator
+      erase(const_iterator __it)
+      {
+	__glibcxx_check_erase(__it);
+	this->_M_invalidate_if(_Equal(__it.base()));
+	return iterator(_Base::erase(__it.base()), this);
+      }
+
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __tmp = __first.base();
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__tmp));
+	  }
+	return iterator(_Base::erase(__first.base(),
+				     __last.base()), this);
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+} // namespace __debug
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_set
new file mode 100644
index 000000000..e30f976d3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/unordered_set
@@ -0,0 +1,596 @@
+// Debugging unordered_set/unordered_multiset implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/unordered_set
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_UNORDERED_SET
+#define _GLIBCXX_DEBUG_UNORDERED_SET 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+# include <unordered_set>
+
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::unordered_set with safety/checking/debug instrumentation.
+  template<typename _Value,
+	   typename _Hash = std::hash<_Value>,
+	   typename _Pred = std::equal_to<_Value>,
+	   typename _Alloc = std::allocator<_Value> >
+    class unordered_set
+    : public _GLIBCXX_STD_C::unordered_set<_Value, _Hash, _Pred, _Alloc>,
+      public __gnu_debug::_Safe_sequence<unordered_set<_Value, _Hash,
+						       _Pred, _Alloc> >
+    {
+      typedef _GLIBCXX_STD_C::unordered_set<_Value, _Hash,
+					    _Pred, _Alloc> _Base;
+      typedef __gnu_debug::_Safe_sequence<unordered_set> _Safe_base;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,
+					  unordered_set> iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  unordered_set> const_iterator;
+
+      explicit
+      unordered_set(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a) { }
+
+      template<typename _InputIterator>
+        unordered_set(_InputIterator __first, _InputIterator __last, 
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(), 
+		      const key_equal& __eql = key_equal(), 
+		      const allocator_type& __a = allocator_type())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __n,
+		__hf, __eql, __a), _Safe_base() { }
+
+      unordered_set(const unordered_set& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_set(const _Base& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_set(unordered_set&& __x) 
+      : _Base(std::move(__x)), _Safe_base() { }
+
+      unordered_set(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a), _Safe_base() { }
+
+      unordered_set&
+      operator=(const unordered_set& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      unordered_set&
+      operator=(unordered_set&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      unordered_set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      void
+      swap(unordered_set& __x)
+      {
+	_Base::swap(__x);
+	_Safe_base::_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      iterator 
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      // local versions
+      using _Base::begin;
+      using _Base::end;
+      using _Base::cbegin;
+      using _Base::cend;
+
+      std::pair<iterator, bool>
+      insert(const value_type& __obj)
+      {
+	typedef std::pair<_Base_iterator, bool> __pair_type;
+	__pair_type __res = _Base::insert(__obj);
+	return std::make_pair(iterator(__res.first, this), __res.second);
+      }
+
+      iterator
+      insert(const_iterator __hint, const value_type& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), __obj), this);
+      }
+
+      std::pair<iterator, bool>
+      insert(value_type&& __obj)
+      {
+	typedef std::pair<typename _Base::iterator, bool> __pair_type;
+	__pair_type __res = _Base::insert(std::move(__obj));
+	return std::make_pair(iterator(__res.first, this), __res.second);
+      }
+
+      iterator
+      insert(const_iterator __hint, value_type&& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), std::move(__obj)), this);
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+      iterator
+      find(const key_type& __key)
+      { return iterator(_Base::find(__key), this); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return const_iterator(_Base::find(__key), this); }
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      {
+	typedef std::pair<_Base_iterator, _Base_iterator> __pair_type;
+	__pair_type __res = _Base::equal_range(__key);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator>
+	  __res = _Base::equal_range(__key);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      size_type
+      erase(const key_type& __key)
+      {
+	size_type __ret(0);
+	_Base_iterator __victim(_Base::find(__key));
+	if (__victim != _Base::end())
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim);
+	    __ret = 1;
+	  }
+	return __ret;
+      }
+
+      iterator
+      erase(const_iterator __it)
+      {
+	__glibcxx_check_erase(__it);
+	this->_M_invalidate_if(_Equal(__it.base()));
+	return iterator(_Base::erase(__it.base()), this);
+      }
+
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __tmp = __first.base();
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__tmp));
+	  }
+	return iterator(_Base::erase(__first.base(),
+				     __last.base()), this);
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+
+  /// Class std::unordered_multiset with safety/checking/debug instrumentation.
+  template<typename _Value,
+	   typename _Hash = std::hash<_Value>,
+	   typename _Pred = std::equal_to<_Value>,
+	   typename _Alloc = std::allocator<_Value> >
+    class unordered_multiset
+    : public _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, _Pred, _Alloc>,
+      public __gnu_debug::_Safe_sequence<unordered_multiset<_Value, _Hash,
+							    _Pred, _Alloc> >
+    {
+      typedef _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash,
+						 _Pred, _Alloc> _Base;
+      typedef __gnu_debug::_Safe_sequence<unordered_multiset> _Safe_base;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef typename _Base::iterator _Base_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,
+					  unordered_multiset> iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
+					  unordered_multiset> const_iterator;
+
+      explicit
+      unordered_multiset(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a) { }
+
+      template<typename _InputIterator>
+        unordered_multiset(_InputIterator __first, _InputIterator __last, 
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(), 
+			   const key_equal& __eql = key_equal(), 
+			   const allocator_type& __a = allocator_type())
+	: _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __n,
+		__hf, __eql, __a), _Safe_base() { }
+
+      unordered_multiset(const unordered_multiset& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_multiset(const _Base& __x) 
+      : _Base(__x), _Safe_base() { }
+
+      unordered_multiset(unordered_multiset&& __x) 
+      : _Base(std::move(__x)), _Safe_base() { }
+
+      unordered_multiset(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a), _Safe_base() { }
+
+      unordered_multiset&
+      operator=(const unordered_multiset& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	this->_M_invalidate_all();
+	return *this;
+      }
+
+      unordered_multiset&
+      operator=(unordered_multiset&& __x)
+      {
+	// NB: DR 1204.
+        // NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      unordered_multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      void
+      swap(unordered_multiset& __x)
+      {
+	_Base::swap(__x);
+	_Safe_base::_M_swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+      }
+
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      // local versions
+      using _Base::begin;
+      using _Base::end;
+      using _Base::cbegin;
+      using _Base::cend;
+
+      iterator
+      insert(const value_type& __obj)
+      { return iterator(_Base::insert(__obj), this); }
+
+      iterator
+      insert(const_iterator __hint, const value_type& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), __obj), this);
+      }
+
+      iterator
+      insert(value_type&& __obj)
+      { return iterator(_Base::insert(std::move(__obj)), this); }
+
+      iterator
+      insert(const_iterator __hint, value_type&& __obj)
+      {
+	__glibcxx_check_insert(__hint);
+	return iterator(_Base::insert(__hint.base(), std::move(__obj)), this);
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::insert(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	}
+
+      iterator
+      find(const key_type& __key)
+      { return iterator(_Base::find(__key), this); }
+
+      const_iterator
+      find(const key_type& __key) const
+      { return const_iterator(_Base::find(__key), this); }
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __key)
+      {
+	typedef std::pair<_Base_iterator, _Base_iterator> __pair_type;
+	__pair_type __res = _Base::equal_range(__key);
+	return std::make_pair(iterator(__res.first, this),
+			      iterator(__res.second, this));
+      }
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __key) const
+      {
+	std::pair<_Base_const_iterator, _Base_const_iterator>
+	  __res = _Base::equal_range(__key);
+	return std::make_pair(const_iterator(__res.first, this),
+			      const_iterator(__res.second, this));
+      }
+
+      size_type
+      erase(const key_type& __key)
+      {
+	size_type __ret(0);
+	std::pair<_Base_iterator, _Base_iterator> __pair =
+	  _Base::equal_range(__key);
+	for (_Base_iterator __victim = __pair.first; __victim != __pair.second;)
+	  {
+	    this->_M_invalidate_if(_Equal(__victim));
+	    _Base::erase(__victim++);
+	    ++__ret;
+	  }
+	return __ret;
+      }
+
+      iterator
+      erase(const_iterator __it)
+      {
+	__glibcxx_check_erase(__it);
+	this->_M_invalidate_if(_Equal(__it.base()));
+	return iterator(_Base::erase(__it.base()), this);
+      }
+
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      {
+	__glibcxx_check_erase_range(__first, __last);
+	for (_Base_const_iterator __tmp = __first.base();
+	     __tmp != __last.base(); ++__tmp)
+	  {
+	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
+				  _M_message(__gnu_debug::__msg_valid_range)
+				  ._M_iterator(__first, "first")
+				  ._M_iterator(__last, "last"));
+	    this->_M_invalidate_if(_Equal(__tmp));
+	  }
+	return iterator(_Base::erase(__first.base(),
+				     __last.base()), this);
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      void
+      _M_invalidate_all()
+      {
+	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
+	this->_M_invalidate_if(_Not_equal(_Base::end()));
+      }
+    };
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+} // namespace __debug
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/vector b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/vector
new file mode 100644
index 000000000..e2dd71a7e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/debug/vector
@@ -0,0 +1,605 @@
+// Debugging vector implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file debug/vector
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_DEBUG_VECTOR
+#define _GLIBCXX_DEBUG_VECTOR 1
+
+#include <vector>
+#include <utility>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __debug
+{
+  /// Class std::vector with safety/checking/debug instrumentation.
+  template<typename _Tp,
+	   typename _Allocator = std::allocator<_Tp> >
+    class vector
+    : public _GLIBCXX_STD_C::vector<_Tp, _Allocator>,
+      public __gnu_debug::_Safe_sequence<vector<_Tp, _Allocator> >
+    {
+      typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base;
+      typedef __gnu_debug::_Safe_sequence<vector>              _Safe_base;
+
+      typedef typename _Base::iterator _Base_iterator;
+      typedef typename _Base::const_iterator _Base_const_iterator;
+      typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
+
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __gnu_debug::_Safe_iterator<_Base_iterator,vector>
+      iterator;
+      typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,vector>
+      const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.2.4.1 construct/copy/destroy:
+      explicit
+      vector(const _Allocator& __a = _Allocator())
+      : _Base(__a), _M_guaranteed_capacity(0) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      vector(size_type __n)
+      : _Base(__n), _M_guaranteed_capacity(__n) { }
+
+      vector(size_type __n, const _Tp& __value,
+	     const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { }
+#else
+      explicit
+      vector(size_type __n, const _Tp& __value = _Tp(),
+	     const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { }
+#endif
+
+      template<class _InputIterator>
+        vector(_InputIterator __first, _InputIterator __last,
+	       const _Allocator& __a = _Allocator())
+        : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
+								     __last)),
+		__gnu_debug::__base(__last), __a),
+	  _M_guaranteed_capacity(0)
+        { _M_update_guaranteed_capacity(); }
+
+      vector(const vector& __x)
+      : _Base(__x), _Safe_base(), _M_guaranteed_capacity(__x.size()) { }
+
+      /// Construction from a release-mode vector
+      vector(const _Base& __x)
+      : _Base(__x), _Safe_base(), _M_guaranteed_capacity(__x.size()) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      vector(vector&& __x)
+      : _Base(std::move(__x)), _Safe_base(),
+	_M_guaranteed_capacity(this->size())
+      {
+	this->_M_swap(__x);
+	__x._M_guaranteed_capacity = 0;
+      }
+
+      vector(initializer_list<value_type> __l,
+	     const allocator_type& __a = allocator_type())
+      : _Base(__l, __a), _Safe_base(),
+	_M_guaranteed_capacity(__l.size()) { }
+#endif
+
+      ~vector() { }
+
+      vector&
+      operator=(const vector& __x)
+      {
+	static_cast<_Base&>(*this) = __x;
+	this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      vector&
+      operator=(vector&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	clear();
+	swap(__x);
+	return *this;
+      }
+
+      vector&
+      operator=(initializer_list<value_type> __l)
+      {
+	static_cast<_Base&>(*this) = __l;
+	this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+	return *this;
+      }
+#endif
+
+      template<typename _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_valid_range(__first, __last);
+	  _Base::assign(__gnu_debug::__base(__first),
+			__gnu_debug::__base(__last));
+	  this->_M_invalidate_all();
+	  _M_update_guaranteed_capacity();
+	}
+
+      void
+      assign(size_type __n, const _Tp& __u)
+      {
+	_Base::assign(__n, __u);
+	this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      assign(initializer_list<value_type> __l)
+      {
+	_Base::assign(__l);
+	this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // 23.2.4.2 capacity:
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      {
+	bool __realloc = _M_requires_reallocation(__sz);
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+	_Base::resize(__sz);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      {
+	bool __realloc = _M_requires_reallocation(__sz);
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+	_Base::resize(__sz, __c);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      {
+	bool __realloc = _M_requires_reallocation(__sz);
+	if (__sz < this->size())
+	  this->_M_invalidate_after_nth(__sz);
+	_Base::resize(__sz, __c);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::shrink_to_fit;
+#endif
+
+      size_type
+      capacity() const
+      {
+#ifdef _GLIBCXX_DEBUG_PEDANTIC
+	return _M_guaranteed_capacity;
+#else
+	return _Base::capacity();
+#endif
+      }
+
+      using _Base::empty;
+
+      void
+      reserve(size_type __n)
+      {
+	bool __realloc = _M_requires_reallocation(__n);
+	_Base::reserve(__n);
+	if (__n > _M_guaranteed_capacity)
+	  _M_guaranteed_capacity = __n;
+	if (__realloc)
+	  this->_M_invalidate_all();
+      }
+
+      // element access:
+      reference
+      operator[](size_type __n)
+      {
+	__glibcxx_check_subscript(__n);
+	return _M_base()[__n];
+      }
+
+      const_reference
+      operator[](size_type __n) const
+      {
+	__glibcxx_check_subscript(__n);
+	return _M_base()[__n];
+      }
+
+      using _Base::at;
+
+      reference
+      front()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::front();
+      }
+
+      reference
+      back()
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+	__glibcxx_check_nonempty();
+	return _Base::back();
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 464. Suggestion for new member functions in standard containers.
+      using _Base::data;
+
+      // 23.2.4.3 modifiers:
+      void
+      push_back(const _Tp& __x)
+      {
+	bool __realloc = _M_requires_reallocation(this->size() + 1);
+	_Base::push_back(__x);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	_M_update_guaranteed_capacity();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Up = _Tp>
+        typename __gnu_cxx::__enable_if<!std::__are_same<_Up, bool>::__value,
+					void>::__type
+        push_back(_Tp&& __x)
+	{ emplace_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args)
+	{
+	  bool __realloc = _M_requires_reallocation(this->size() + 1);
+	  _Base::emplace_back(std::forward<_Args>(__args)...);
+	  if (__realloc)
+	    this->_M_invalidate_all();
+	  _M_update_guaranteed_capacity();
+	}
+#endif
+
+      void
+      pop_back()
+      {
+	__glibcxx_check_nonempty();
+	this->_M_invalidate_if(_Equal(--_Base::end()));
+	_Base::pop_back();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args)
+	{
+	  __glibcxx_check_insert(__position);
+	  bool __realloc = _M_requires_reallocation(this->size() + 1);
+	  difference_type __offset = __position.base() - _Base::begin();
+	  _Base_iterator __res = _Base::emplace(__position.base(),
+						std::forward<_Args>(__args)...);
+	  if (__realloc)
+	    this->_M_invalidate_all();
+	  else
+	    this->_M_invalidate_after_nth(__offset);
+	  _M_update_guaranteed_capacity();
+	  return iterator(__res, this);
+	}
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	bool __realloc = _M_requires_reallocation(this->size() + 1);
+	difference_type __offset = __position.base() - _Base::begin();
+	_Base_iterator __res = _Base::insert(__position.base(), __x);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	else
+	  this->_M_invalidate_after_nth(__offset);
+	_M_update_guaranteed_capacity();
+	return iterator(__res, this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Up = _Tp>
+        typename __gnu_cxx::__enable_if<!std::__are_same<_Up, bool>::__value,
+					iterator>::__type
+        insert(iterator __position, _Tp&& __x)
+        { return emplace(__position, std::move(__x)); }
+
+      void
+      insert(iterator __position, initializer_list<value_type> __l)
+      { this->insert(__position, __l.begin(), __l.end()); }
+#endif
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+	__glibcxx_check_insert(__position);
+	bool __realloc = _M_requires_reallocation(this->size() + __n);
+	difference_type __offset = __position.base() - _Base::begin();
+	_Base::insert(__position.base(), __n, __x);
+	if (__realloc)
+	  this->_M_invalidate_all();
+	else
+	  this->_M_invalidate_after_nth(__offset);
+	_M_update_guaranteed_capacity();
+      }
+
+      template<class _InputIterator>
+        void
+        insert(iterator __position,
+	       _InputIterator __first, _InputIterator __last)
+        {
+	  __glibcxx_check_insert_range(__position, __first, __last);
+
+	  /* Hard to guess if invalidation will occur, because __last
+	     - __first can't be calculated in all cases, so we just
+	     punt here by checking if it did occur. */
+	  _Base_iterator __old_begin = _M_base().begin();
+	  difference_type __offset = __position.base() - _Base::begin();
+	  _Base::insert(__position.base(), __gnu_debug::__base(__first),
+					   __gnu_debug::__base(__last));
+
+	  if (_M_base().begin() != __old_begin)
+	    this->_M_invalidate_all();
+	  else
+	    this->_M_invalidate_after_nth(__offset);
+	  _M_update_guaranteed_capacity();
+	}
+
+      iterator
+      erase(iterator __position)
+      {
+	__glibcxx_check_erase(__position);
+	difference_type __offset = __position.base() - _Base::begin();
+	_Base_iterator __res = _Base::erase(__position.base());
+	this->_M_invalidate_after_nth(__offset);
+	return iterator(__res, this);
+      }
+
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	__glibcxx_check_erase_range(__first, __last);
+
+	difference_type __offset = __first.base() - _Base::begin();
+	_Base_iterator __res = _Base::erase(__first.base(),
+						      __last.base());
+	this->_M_invalidate_after_nth(__offset);
+	return iterator(__res, this);
+      }
+
+      void
+      swap(vector& __x)
+      {
+	_Base::swap(__x);
+	this->_M_swap(__x);
+        std::swap(_M_guaranteed_capacity, __x._M_guaranteed_capacity);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+	this->_M_invalidate_all();
+        _M_guaranteed_capacity = 0;
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    private:
+      size_type _M_guaranteed_capacity;
+
+      bool
+      _M_requires_reallocation(size_type __elements)
+      { return __elements > this->capacity(); }
+
+      void
+      _M_update_guaranteed_capacity()
+      {
+	if (this->size() > _M_guaranteed_capacity)
+	  _M_guaranteed_capacity = this->size();
+      }
+
+      void
+      _M_invalidate_after_nth(difference_type __n)
+      {
+	typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
+	this->_M_invalidate_if(_After_nth(__n, _Base::begin()));
+      }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const vector<_Tp, _Alloc>& __lhs,
+	       const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const vector<_Tp, _Alloc>& __lhs,
+	       const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const vector<_Tp, _Alloc>& __lhs,
+	      const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const vector<_Tp, _Alloc>& __lhs,
+	       const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const vector<_Tp, _Alloc>& __lhs,
+	       const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const vector<_Tp, _Alloc>& __lhs,
+	      const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __debug
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // DR 1182.
+  /// std::hash specialization for vector<bool>.
+  template<typename _Alloc>
+    struct hash<__debug::vector<bool, _Alloc>>
+    : public __hash_base<size_t, __debug::vector<bool, _Alloc>>
+    {
+      size_t
+      operator()(const __debug::vector<bool, _Alloc>& __b) const
+      { return std::hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>()
+	  (__b._M_base()); }
+    };
+#endif
+
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal
new file mode 100644
index 000000000..d65b814ea
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal
@@ -0,0 +1,485 @@
+// <decimal> -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file decimal/decimal
+ *  This is a Standard C++ Library header.
+ */
+
+// ISO/IEC TR 24733 
+// Written by Janis Johnson <janis187@us.ibm.com>
+
+#ifndef _GLIBCXX_DECIMAL
+#define _GLIBCXX_DECIMAL 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#ifndef _GLIBCXX_USE_DECIMAL_FLOAT
+#error This file requires compiler and library support for ISO/IEC TR 24733 \
+that is currently not available.
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  /**
+    * @defgroup decimal Decimal Floating-Point Arithmetic
+    * @ingroup numerics
+    *
+    * Classes and functions for decimal floating-point arithmetic.
+    * @{
+    */
+
+  /** @namespace std::decimal
+    * @brief ISO/IEC TR 24733 Decimal floating-point arithmetic.
+    */
+namespace decimal
+{
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  class decimal32;
+  class decimal64;
+  class decimal128;
+
+  // 3.2.5  Initialization from coefficient and exponent.
+  static decimal32 make_decimal32(long long __coeff, int __exp);
+  static decimal32 make_decimal32(unsigned long long __coeff, int __exp);
+  static decimal64 make_decimal64(long long __coeff, int __exp);
+  static decimal64 make_decimal64(unsigned long long __coeff, int __exp);
+  static decimal128 make_decimal128(long long __coeff, int __exp);
+  static decimal128 make_decimal128(unsigned long long __coeff, int __exp);
+
+  /// Non-conforming extension: Conversion to integral type.
+  long long decimal32_to_long_long(decimal32 __d);
+  long long decimal64_to_long_long(decimal64 __d);
+  long long decimal128_to_long_long(decimal128 __d);
+  long long decimal_to_long_long(decimal32 __d);
+  long long decimal_to_long_long(decimal64 __d);
+  long long decimal_to_long_long(decimal128 __d);
+
+  // 3.2.6  Conversion to generic floating-point type.
+  float decimal32_to_float(decimal32 __d);
+  float decimal64_to_float(decimal64 __d);
+  float decimal128_to_float(decimal128 __d);
+  float decimal_to_float(decimal32 __d);
+  float decimal_to_float(decimal64 __d);
+  float decimal_to_float(decimal128 __d);
+
+  double decimal32_to_double(decimal32 __d);
+  double decimal64_to_double(decimal64 __d);
+  double decimal128_to_double(decimal128 __d);
+  double decimal_to_double(decimal32 __d);
+  double decimal_to_double(decimal64 __d);
+  double decimal_to_double(decimal128 __d);
+
+  long double decimal32_to_long_double(decimal32 __d);
+  long double decimal64_to_long_double(decimal64 __d);
+  long double decimal128_to_long_double(decimal128 __d);
+  long double decimal_to_long_double(decimal32 __d);
+  long double decimal_to_long_double(decimal64 __d);
+  long double decimal_to_long_double(decimal128 __d);
+
+  // 3.2.7  Unary arithmetic operators.
+  decimal32  operator+(decimal32 __rhs);
+  decimal64  operator+(decimal64 __rhs);
+  decimal128 operator+(decimal128 __rhs);
+  decimal32  operator-(decimal32 __rhs);
+  decimal64  operator-(decimal64 __rhs);
+  decimal128 operator-(decimal128 __rhs);
+
+  // 3.2.8  Binary arithmetic operators.
+#define _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(_Op, _T1, _T2, _T3)	\
+  _T1 operator _Op(_T2 __lhs, _T3 __rhs);
+#define _DECLARE_DECIMAL_BINARY_OP_WITH_INT(_Op, _Tp)		\
+  _Tp operator _Op(_Tp __lhs, int __rhs);			\
+  _Tp operator _Op(_Tp __lhs, unsigned int __rhs);		\
+  _Tp operator _Op(_Tp __lhs, long __rhs);			\
+  _Tp operator _Op(_Tp __lhs, unsigned long __rhs);		\
+  _Tp operator _Op(_Tp __lhs, long long __rhs);			\
+  _Tp operator _Op(_Tp __lhs, unsigned long long __rhs);	\
+  _Tp operator _Op(int __lhs, _Tp __rhs);			\
+  _Tp operator _Op(unsigned int __lhs, _Tp __rhs);		\
+  _Tp operator _Op(long __lhs, _Tp __rhs);			\
+  _Tp operator _Op(unsigned long __lhs, _Tp __rhs);		\
+  _Tp operator _Op(long long __lhs, _Tp __rhs);			\
+  _Tp operator _Op(unsigned long long __lhs, _Tp __rhs);
+
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal32, decimal32, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal32, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal32, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal64, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal128)
+
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal32, decimal32, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal32, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal32, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal64, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal128)
+
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal32, decimal32, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal32, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal32, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal64, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal128)
+
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal32, decimal32, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal32, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal32, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal64, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal32)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal64)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal128)
+  _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal128)
+
+#undef _DECLARE_DECIMAL_BINARY_OP_WITH_DEC
+#undef _DECLARE_DECIMAL_BINARY_OP_WITH_INT
+
+  // 3.2.9  Comparison operators.
+#define _DECLARE_DECIMAL_COMPARISON(_Op, _Tp)				\
+  bool operator _Op(_Tp __lhs, decimal32 __rhs);			\
+  bool operator _Op(_Tp __lhs, decimal64 __rhs);			\
+  bool operator _Op(_Tp __lhs, decimal128 __rhs);			\
+  bool operator _Op(_Tp __lhs, int __rhs);				\
+  bool operator _Op(_Tp __lhs, unsigned int __rhs);			\
+  bool operator _Op(_Tp __lhs, long __rhs);				\
+  bool operator _Op(_Tp __lhs, unsigned long __rhs);			\
+  bool operator _Op(_Tp __lhs, long long __rhs);			\
+  bool operator _Op(_Tp __lhs, unsigned long long __rhs);		\
+  bool operator _Op(int __lhs, _Tp __rhs);				\
+  bool operator _Op(unsigned int __lhs, _Tp __rhs);			\
+  bool operator _Op(long __lhs, _Tp __rhs);				\
+  bool operator _Op(unsigned long __lhs, _Tp __rhs);			\
+  bool operator _Op(long long __lhs, _Tp __rhs);			\
+  bool operator _Op(unsigned long long __lhs, _Tp __rhs);
+
+  _DECLARE_DECIMAL_COMPARISON(==, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(==, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(==, decimal128)
+
+  _DECLARE_DECIMAL_COMPARISON(!=, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(!=, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(!=, decimal128)
+
+  _DECLARE_DECIMAL_COMPARISON(<, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(<, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(<, decimal128)
+
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal128)
+
+  _DECLARE_DECIMAL_COMPARISON(>, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(>, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(>, decimal128)
+
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal32)
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal64)
+  _DECLARE_DECIMAL_COMPARISON(>=, decimal128)
+
+#undef _DECLARE_DECIMAL_COMPARISON
+
+  /// 3.2.2  Class decimal32.
+  class decimal32
+  {
+  public:
+    typedef float __decfloat32 __attribute__((mode(SD)));
+
+    // 3.2.2.2  Construct/copy/destroy.
+    decimal32()					: __val(0.e-101DF) {}
+
+    // 3.2.2.3  Conversion from floating-point type.
+    explicit decimal32(decimal64 __d64);
+    explicit decimal32(decimal128 __d128);
+    explicit decimal32(float __r)		: __val(__r) {}
+    explicit decimal32(double __r)		: __val(__r) {}
+    explicit decimal32(long double __r)		: __val(__r) {}
+
+    // 3.2.2.4  Conversion from integral type.
+    decimal32(int __z)				: __val(__z) {}
+    decimal32(unsigned int __z)			: __val(__z) {}
+    decimal32(long __z)				: __val(__z) {}
+    decimal32(unsigned long __z)		: __val(__z) {}
+    decimal32(long long __z)			: __val(__z) {}
+    decimal32(unsigned long long __z)		: __val(__z) {}
+
+    /// Conforming extension: Conversion from scalar decimal type.
+    decimal32(__decfloat32 __z)			: __val(__z) {}
+
+    // 3.2.2.5  Conversion to integral type. (DISABLED)
+    //operator long long() const { return (long long)__val; }
+
+    // 3.2.2.6  Increment and decrement operators.
+    decimal32& operator++()
+    {
+      __val += 1;
+      return *this;
+    }
+
+    decimal32 operator++(int)
+    {
+      decimal32 __tmp = *this;
+      __val += 1;
+      return __tmp;
+    }
+
+    decimal32& operator--()
+    {
+      __val -= 1;
+      return *this;
+    }
+
+    decimal32   operator--(int)
+    {
+      decimal32 __tmp = *this;
+      __val -= 1;
+      return __tmp;
+    }
+
+    // 3.2.2.7  Compound assignment.
+#define _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(_Op)	\
+    decimal32& operator _Op(decimal32 __rhs);		\
+    decimal32& operator _Op(decimal64 __rhs);		\
+    decimal32& operator _Op(decimal128 __rhs);		\
+    decimal32& operator _Op(int __rhs);			\
+    decimal32& operator _Op(unsigned int __rhs);	\
+    decimal32& operator _Op(long __rhs);		\
+    decimal32& operator _Op(unsigned long __rhs);	\
+    decimal32& operator _Op(long long __rhs);		\
+    decimal32& operator _Op(unsigned long long __rhs);
+
+    _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(+=)
+    _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(-=)
+    _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(*=)
+    _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(/=)
+#undef _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT
+
+  private:
+    __decfloat32 __val;
+
+  public:
+    __decfloat32 __getval(void) { return __val; }
+    void __setval(__decfloat32 __x) { __val = __x; }
+  };
+
+  /// 3.2.3  Class decimal64.
+  class decimal64
+  {
+  public:
+    typedef float __decfloat64 __attribute__((mode(DD)));
+
+    // 3.2.3.2  Construct/copy/destroy.
+    decimal64()					: __val(0.e-398dd) {}
+
+    // 3.2.3.3  Conversion from floating-point type.
+	     decimal64(decimal32 d32);
+    explicit decimal64(decimal128 d128);
+    explicit decimal64(float __r)		: __val(__r) {}
+    explicit decimal64(double __r)		: __val(__r) {}
+    explicit decimal64(long double __r)		: __val(__r) {}
+
+    // 3.2.3.4  Conversion from integral type.
+    decimal64(int __z)				: __val(__z) {}
+    decimal64(unsigned int __z)			: __val(__z) {}
+    decimal64(long __z)				: __val(__z) {}
+    decimal64(unsigned long __z)		: __val(__z) {}
+    decimal64(long long __z)			: __val(__z) {}
+    decimal64(unsigned long long __z)		: __val(__z) {}
+
+    /// Conforming extension: Conversion from scalar decimal type.
+    decimal64(__decfloat64 __z)			: __val(__z) {}
+
+    // 3.2.3.5  Conversion to integral type. (DISABLED)
+    //operator long long() const { return (long long)__val; }
+
+    // 3.2.3.6  Increment and decrement operators.
+    decimal64& operator++()
+    {
+      __val += 1;
+      return *this;
+    }
+
+    decimal64 operator++(int)
+    {
+      decimal64 __tmp = *this;
+      __val += 1;
+      return __tmp;
+    }
+
+    decimal64& operator--()
+    {
+      __val -= 1;
+      return *this;
+    }
+
+    decimal64 operator--(int)
+    {
+      decimal64 __tmp = *this;
+      __val -= 1;
+      return __tmp;
+    }
+
+    // 3.2.3.7  Compound assignment.
+#define _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(_Op)	\
+    decimal64& operator _Op(decimal32 __rhs);		\
+    decimal64& operator _Op(decimal64 __rhs);		\
+    decimal64& operator _Op(decimal128 __rhs);		\
+    decimal64& operator _Op(int __rhs);			\
+    decimal64& operator _Op(unsigned int __rhs);	\
+    decimal64& operator _Op(long __rhs);		\
+    decimal64& operator _Op(unsigned long __rhs);	\
+    decimal64& operator _Op(long long __rhs);		\
+    decimal64& operator _Op(unsigned long long __rhs);
+
+    _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(+=)
+    _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(-=)
+    _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(*=)
+    _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(/=)
+#undef _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT
+
+  private:
+    __decfloat64 __val;
+
+  public:
+    __decfloat64 __getval(void) { return __val; }
+    void __setval(__decfloat64 __x) { __val = __x; }
+  };
+
+  /// 3.2.4  Class decimal128.
+  class decimal128
+  {
+  public:
+    typedef float __decfloat128 __attribute__((mode(TD)));
+
+    // 3.2.4.2  Construct/copy/destroy.
+    decimal128()				: __val(0.e-6176DL) {}
+
+    // 3.2.4.3  Conversion from floating-point type.
+	     decimal128(decimal32 d32);
+	     decimal128(decimal64 d64);
+    explicit decimal128(float __r)		: __val(__r) {}
+    explicit decimal128(double __r)		: __val(__r) {}
+    explicit decimal128(long double __r)	: __val(__r) {}
+
+
+    // 3.2.4.4  Conversion from integral type.
+    decimal128(int __z)				: __val(__z) {}
+    decimal128(unsigned int __z)		: __val(__z) {}
+    decimal128(long __z)			: __val(__z) {}
+    decimal128(unsigned long __z)		: __val(__z) {}
+    decimal128(long long __z)			: __val(__z) {}
+    decimal128(unsigned long long __z)		: __val(__z) {}
+
+    /// Conforming extension: Conversion from scalar decimal type.
+    decimal128(__decfloat128 __z)		: __val(__z) {}
+
+    // 3.2.4.5  Conversion to integral type. (DISABLED)
+    //operator long long() const { return (long long)__val; }
+
+    // 3.2.4.6  Increment and decrement operators.
+    decimal128& operator++()
+    {
+      __val += 1;
+      return *this;
+    }
+
+    decimal128 operator++(int)
+    {
+      decimal128 __tmp = *this;
+      __val += 1;
+      return __tmp;
+    }
+
+    decimal128& operator--()
+    {
+      __val -= 1;
+      return *this;
+    }
+
+    decimal128   operator--(int)
+    {
+      decimal128 __tmp = *this;
+      __val -= 1;
+      return __tmp;
+    }
+
+    // 3.2.4.7  Compound assignment.
+#define _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(_Op)	\
+    decimal128& operator _Op(decimal32 __rhs);		\
+    decimal128& operator _Op(decimal64 __rhs);		\
+    decimal128& operator _Op(decimal128 __rhs);		\
+    decimal128& operator _Op(int __rhs);		\
+    decimal128& operator _Op(unsigned int __rhs);	\
+    decimal128& operator _Op(long __rhs);		\
+    decimal128& operator _Op(unsigned long __rhs);	\
+    decimal128& operator _Op(long long __rhs);		\
+    decimal128& operator _Op(unsigned long long __rhs);
+
+    _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(+=)
+    _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(-=)
+    _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(*=)
+    _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(/=)
+#undef _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT
+
+  private:
+    __decfloat128 __val;
+
+  public:
+    __decfloat128 __getval(void) { return __val; }
+    void __setval(__decfloat128 __x) { __val = __x; }
+  };
+
+#define _GLIBCXX_USE_DECIMAL_ 1
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+} // namespace decimal
+  // @} group decimal
+} // namespace std
+
+#include <decimal/decimal.h>
+
+#endif /* _GLIBCXX_DECIMAL */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal.h
new file mode 100644
index 000000000..f8f05734b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/decimal/decimal.h
@@ -0,0 +1,468 @@
+// decimal classes -*- C++ -*-
+
+// Copyright (C) 2009, 2011 Free Software Foundation, Inc.
+
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file decimal/decimal.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{decimal}
+ */
+
+// ISO/IEC TR 24733
+// Written by Janis Johnson <janis187@us.ibm.com>
+
+#ifndef _GLIBCXX_DECIMAL_IMPL
+#define _GLIBCXX_DECIMAL_IMPL 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace decimal
+{
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // ISO/IEC TR 24733  3.2.[234].1  Construct/copy/destroy.
+
+  inline decimal32::decimal32(decimal64 __r)	: __val(__r.__getval()) {}
+  inline decimal32::decimal32(decimal128 __r)	: __val(__r.__getval()) {}
+  inline decimal64::decimal64(decimal32 __r)	: __val(__r.__getval()) {}
+  inline decimal64::decimal64(decimal128 __r)	: __val(__r.__getval()) {}
+  inline decimal128::decimal128(decimal32 __r)	: __val(__r.__getval()) {}
+  inline decimal128::decimal128(decimal64 __r)	: __val(__r.__getval()) {}
+
+  // ISO/IEC TR 24733  3.2.[234].6  Compound assignment.
+
+#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, _T2)	 \
+  inline _T1& _T1::operator _Op1(_T2 __rhs)				 \
+  {									 \
+    __setval(__getval() _Op2 __rhs.__getval());				 \
+    return *this;							 \
+  }
+
+#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, _T2)	 \
+  inline _T1& _T1::operator _Op1(_T2 __rhs)				 \
+  {									 \
+    __setval(__getval() _Op2 __rhs);					 \
+    return *this;							 \
+  }
+
+#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(_Op1, _Op2, _T1)		 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal32)	 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal64)	 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal128)	 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, int)		 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned int) \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, long)	 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned long)\
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, long long)	 \
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned long long)
+
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal32)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal32)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal32)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal32)
+
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal64)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal64)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal64)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal64)
+
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal128)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal128)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal128)
+  _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal128)
+
+#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC
+#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT
+#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS
+
+  // Extension: Conversion to integral type.
+
+  inline long long decimal32_to_long_long(decimal32 __d)
+  { return (long long)__d.__getval(); }
+
+  inline long long decimal64_to_long_long(decimal64 __d)
+  { return (long long)__d.__getval(); }
+
+  inline long long decimal128_to_long_long(decimal128 __d)
+  { return (long long)__d.__getval(); }
+
+  inline long long decimal_to_long_long(decimal32 __d)
+  { return (long long)__d.__getval(); }
+
+  inline long long decimal_to_long_long(decimal64 __d)
+  { return (long long)__d.__getval(); }
+
+  inline long long decimal_to_long_long(decimal128 __d)
+  { return (long long)__d.__getval(); }
+
+  // ISO/IEC TR 24733  3.2.5  Initialization from coefficient and exponent.
+
+  static decimal32 make_decimal32(long long __coeff, int __exponent)
+  {
+    decimal32 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DF;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DF;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  static decimal32 make_decimal32(unsigned long long __coeff, int __exponent)
+  {
+    decimal32 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DF;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DF;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  static decimal64 make_decimal64(long long __coeff, int __exponent)
+  {
+    decimal64 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DD;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DD;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  static decimal64 make_decimal64(unsigned long long __coeff, int __exponent)
+  {
+    decimal64 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DD;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DD;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  static decimal128 make_decimal128(long long __coeff, int __exponent)
+  {
+    decimal128 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DL;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DL;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  static decimal128 make_decimal128(unsigned long long __coeff, int __exponent)
+  {
+    decimal128 __decexp = 1, __multiplier;
+
+    if (__exponent < 0)
+      {
+	__multiplier = 1.E-1DL;
+	__exponent = -__exponent;
+      }
+    else
+      __multiplier = 1.E1DL;
+
+    for (int __i = 0; __i < __exponent; ++__i)
+      __decexp *= __multiplier;
+
+    return __coeff * __decexp;
+  }
+
+  // ISO/IEC TR 24733  3.2.6  Conversion to generic floating-point type.
+
+  inline float decimal32_to_float(decimal32 __d)
+  { return (float)__d.__getval(); }
+
+  inline float decimal64_to_float(decimal64 __d)
+  { return (float)__d.__getval(); }
+
+  inline float decimal128_to_float(decimal128 __d)
+  { return (float)__d.__getval(); }
+
+  inline float decimal_to_float(decimal32 __d)
+  { return (float)__d.__getval(); }
+
+  inline float decimal_to_float(decimal64 __d)
+  { return (float)__d.__getval(); }
+
+  inline float decimal_to_float(decimal128 __d)
+  { return (float)__d.__getval(); }
+
+  inline double decimal32_to_double(decimal32 __d)
+  { return (double)__d.__getval(); }
+
+  inline double decimal64_to_double(decimal64 __d)
+  { return (double)__d.__getval(); }
+
+  inline double decimal128_to_double(decimal128 __d)
+  { return (double)__d.__getval(); }
+
+  inline double decimal_to_double(decimal32 __d)
+  { return (double)__d.__getval(); }
+
+  inline double decimal_to_double(decimal64 __d)
+  { return (double)__d.__getval(); }
+
+  inline double decimal_to_double(decimal128 __d)
+  { return (double)__d.__getval(); }
+
+  inline long double decimal32_to_long_double(decimal32 __d)
+  { return (long double)__d.__getval(); }
+
+  inline long double decimal64_to_long_double(decimal64 __d)
+  { return (long double)__d.__getval(); }
+
+  inline long double decimal128_to_long_double(decimal128 __d)
+  { return (long double)__d.__getval(); }
+
+  inline long double decimal_to_long_double(decimal32 __d)
+  { return (long double)__d.__getval(); }
+
+  inline long double decimal_to_long_double(decimal64 __d)
+  { return (long double)__d.__getval(); }
+
+  inline long double decimal_to_long_double(decimal128 __d)
+  { return (long double)__d.__getval(); }
+
+  // ISO/IEC TR 24733  3.2.7  Unary arithmetic operators.
+
+#define _DEFINE_DECIMAL_UNARY_OP(_Op, _Tp)	\
+  inline _Tp operator _Op(_Tp __rhs)		\
+  {						\
+    _Tp __tmp;					\
+    __tmp.__setval(0 _Op __rhs.__getval());	\
+    return __tmp;				\
+  }
+
+  _DEFINE_DECIMAL_UNARY_OP(+, decimal32)
+  _DEFINE_DECIMAL_UNARY_OP(+, decimal64)
+  _DEFINE_DECIMAL_UNARY_OP(+, decimal128)
+  _DEFINE_DECIMAL_UNARY_OP(-, decimal32)
+  _DEFINE_DECIMAL_UNARY_OP(-, decimal64)
+  _DEFINE_DECIMAL_UNARY_OP(-, decimal128)
+
+#undef _DEFINE_DECIMAL_UNARY_OP
+
+  // ISO/IEC TR 24733  3.2.8  Binary arithmetic operators.
+
+#define _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(_Op, _T1, _T2, _T3)	\
+  inline _T1 operator _Op(_T2 __lhs, _T3 __rhs)			\
+  {								\
+    _T1 __retval;						\
+    __retval.__setval(__lhs.__getval() _Op __rhs.__getval());	\
+    return __retval;						\
+  }
+
+#define _DEFINE_DECIMAL_BINARY_OP_BOTH(_Op, _T1, _T2, _T3)	\
+  inline _T1 operator _Op(_T2 __lhs, _T3 __rhs)			\
+  {								\
+    _T1 __retval;						\
+    __retval.__setval(__lhs.__getval() _Op __rhs.__getval());	\
+    return __retval;						\
+  }
+
+#define _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, _T2)		\
+  inline _T1 operator _Op(_T1 __lhs, _T2 __rhs)			\
+  {								\
+    _T1 __retval;						\
+    __retval.__setval(__lhs.__getval() _Op __rhs);		\
+    return __retval;						\
+  }
+
+#define _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, _T2)		\
+  inline _T1 operator _Op(_T2 __lhs, _T1 __rhs)			\
+  {								\
+    _T1 __retval;						\
+    __retval.__setval(__lhs _Op __rhs.__getval());		\
+    return __retval;						\
+  }
+
+#define _DEFINE_DECIMAL_BINARY_OP_WITH_INT(_Op, _T1)		\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, int);			\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned int);	\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, long);		\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned long);	\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, long long);		\
+  _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned long long);	\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, int);			\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned int);	\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, long);		\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned long);	\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, long long);		\
+  _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned long long);	\
+
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal32, decimal32, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal32, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal32, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal64, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal128)
+
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal32, decimal32, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal32, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal32, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal64, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal128)
+
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal32, decimal32, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal32, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal32, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal64, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal128)
+
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal32, decimal32, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal32, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal32, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal64, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal32)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal64)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal128)
+  _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal128)
+
+#undef _DEFINE_DECIMAL_BINARY_OP_WITH_DEC
+#undef _DEFINE_DECIMAL_BINARY_OP_BOTH
+#undef _DEFINE_DECIMAL_BINARY_OP_LHS
+#undef _DEFINE_DECIMAL_BINARY_OP_RHS
+#undef _DEFINE_DECIMAL_BINARY_OP_WITH_INT
+
+  // ISO/IEC TR 24733  3.2.9  Comparison operators.
+
+#define _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _T1, _T2)	\
+  inline bool operator _Op(_T1 __lhs, _T2 __rhs)	\
+  { return __lhs.__getval() _Op __rhs.__getval(); }
+
+#define _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _T1, _T2)	\
+  inline bool operator _Op(_T1 __lhs, _T2 __rhs)	\
+  { return __lhs.__getval() _Op __rhs; }
+
+#define _DEFINE_DECIMAL_COMPARISON_RHS(_Op, _T1, _T2)	\
+  inline bool operator _Op(_T1 __lhs, _T2 __rhs)	\
+  { return __lhs _Op __rhs.__getval(); }
+
+#define _DEFINE_DECIMAL_COMPARISONS(_Op, _Tp)			\
+  _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal32)		\
+  _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal64)		\
+  _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal128)		\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, int)			\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned int)	\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, long)		\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned long)	\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, long long)		\
+  _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned long long)	\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, int, _Tp)			\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned int, _Tp)	\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, long, _Tp)		\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned long, _Tp)	\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, long long, _Tp)		\
+  _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned long long, _Tp)
+
+  _DEFINE_DECIMAL_COMPARISONS(==, decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(==, decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(==, decimal128)
+  _DEFINE_DECIMAL_COMPARISONS(!=, decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(!=, decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(!=, decimal128)
+  _DEFINE_DECIMAL_COMPARISONS(<,  decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(<,  decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(<,  decimal128)
+  _DEFINE_DECIMAL_COMPARISONS(<=, decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(<=, decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(<=, decimal128)
+  _DEFINE_DECIMAL_COMPARISONS(>,  decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(>,  decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(>,  decimal128)
+  _DEFINE_DECIMAL_COMPARISONS(>=, decimal32)
+  _DEFINE_DECIMAL_COMPARISONS(>=, decimal64)
+  _DEFINE_DECIMAL_COMPARISONS(>=, decimal128)
+
+#undef _DEFINE_DECIMAL_COMPARISON_BOTH
+#undef _DEFINE_DECIMAL_COMPARISON_LHS
+#undef _DEFINE_DECIMAL_COMPARISON_RHS
+#undef _DEFINE_DECIMAL_COMPARISONS
+  _GLIBCXX_END_NAMESPACE_VERSION
+} // namespace decimal
+} // namespace std
+
+#endif /* _GLIBCXX_DECIMAL_IMPL */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/algorithm b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/algorithm
new file mode 100644
index 000000000..417a03ab9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/algorithm
@@ -0,0 +1,605 @@
+// Algorithm extensions -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/algorithm
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _EXT_ALGORITHM
+#define _EXT_ALGORITHM 1
+
+#pragma GCC system_header
+
+#include <algorithm>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::ptrdiff_t;
+  using std::min;
+  using std::pair;
+  using std::input_iterator_tag;
+  using std::random_access_iterator_tag;
+  using std::iterator_traits;
+
+  //--------------------------------------------------
+  // copy_n (not part of the C++ standard)
+
+  template<typename _InputIterator, typename _Size, typename _OutputIterator>
+    pair<_InputIterator, _OutputIterator>
+    __copy_n(_InputIterator __first, _Size __count,
+	     _OutputIterator __result,
+	     input_iterator_tag)
+    {
+      for ( ; __count > 0; --__count)
+	{
+	  *__result = *__first;
+	  ++__first;
+	  ++__result;
+	}
+      return pair<_InputIterator, _OutputIterator>(__first, __result);
+    }
+
+  template<typename _RAIterator, typename _Size, typename _OutputIterator>
+    inline pair<_RAIterator, _OutputIterator>
+    __copy_n(_RAIterator __first, _Size __count,
+	     _OutputIterator __result,
+	     random_access_iterator_tag)
+    {
+      _RAIterator __last = __first + __count;
+      return pair<_RAIterator, _OutputIterator>(__last, std::copy(__first,
+								  __last,
+								  __result));
+    }
+
+  /**
+   *  @brief Copies the range [first,first+count) into [result,result+count).
+   *  @param  first  An input iterator.
+   *  @param  count  The number of elements to copy.
+   *  @param  result An output iterator.
+   *  @return   A std::pair composed of first+count and result+count.
+   *
+   *  This is an SGI extension.
+   *  This inline function will boil down to a call to @c memmove whenever
+   *  possible.  Failing that, if random access iterators are passed, then the
+   *  loop count will be known (and therefore a candidate for compiler
+   *  optimizations such as unrolling).
+   *  @ingroup SGIextensions
+  */
+  template<typename _InputIterator, typename _Size, typename _OutputIterator>
+    inline pair<_InputIterator, _OutputIterator>
+    copy_n(_InputIterator __first, _Size __count, _OutputIterator __result)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+	    typename iterator_traits<_InputIterator>::value_type>)
+
+      return __gnu_cxx::__copy_n(__first, __count, __result,
+				 std::__iterator_category(__first));
+    }
+
+  template<typename _InputIterator1, typename _InputIterator2>
+    int
+    __lexicographical_compare_3way(_InputIterator1 __first1,
+				   _InputIterator1 __last1,
+				   _InputIterator2 __first2,
+				   _InputIterator2 __last2)
+    {
+      while (__first1 != __last1 && __first2 != __last2)
+	{
+	  if (*__first1 < *__first2)
+	    return -1;
+	  if (*__first2 < *__first1)
+	    return 1;
+	  ++__first1;
+	  ++__first2;
+	}
+      if (__first2 == __last2)
+	return !(__first1 == __last1);
+      else
+	return -1;
+    }
+
+  inline int
+  __lexicographical_compare_3way(const unsigned char* __first1,
+				 const unsigned char* __last1,
+				 const unsigned char* __first2,
+				 const unsigned char* __last2)
+  {
+    const ptrdiff_t __len1 = __last1 - __first1;
+    const ptrdiff_t __len2 = __last2 - __first2;
+    const int __result = __builtin_memcmp(__first1, __first2,
+					  min(__len1, __len2));
+    return __result != 0 ? __result
+			 : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
+  }
+
+  inline int
+  __lexicographical_compare_3way(const char* __first1, const char* __last1,
+				 const char* __first2, const char* __last2)
+  {
+#if CHAR_MAX == SCHAR_MAX
+    return __lexicographical_compare_3way((const signed char*) __first1,
+					  (const signed char*) __last1,
+					  (const signed char*) __first2,
+					  (const signed char*) __last2);
+#else
+    return __lexicographical_compare_3way((const unsigned char*) __first1,
+					  (const unsigned char*) __last1,
+					  (const unsigned char*) __first2,
+					  (const unsigned char*) __last2);
+#endif
+  }
+
+  /**
+   *  @brief @c memcmp on steroids.
+   *  @param  first1  An input iterator.
+   *  @param  last1   An input iterator.
+   *  @param  first2  An input iterator.
+   *  @param  last2   An input iterator.
+   *  @return   An int, as with @c memcmp.
+   *
+   *  The return value will be less than zero if the first range is
+   *  <em>lexigraphically less than</em> the second, greater than zero
+   *  if the second range is <em>lexigraphically less than</em> the
+   *  first, and zero otherwise.
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+  */
+  template<typename _InputIterator1, typename _InputIterator2>
+    int
+    lexicographical_compare_3way(_InputIterator1 __first1,
+				 _InputIterator1 __last1,
+				 _InputIterator2 __first2,
+				 _InputIterator2 __last2)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_InputIterator1>::value_type>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_InputIterator2>::value_type>)
+      __glibcxx_requires_valid_range(__first1, __last1);
+      __glibcxx_requires_valid_range(__first2, __last2);
+
+      return __lexicographical_compare_3way(__first1, __last1, __first2,
+					    __last2);
+    }
+
+  // count and count_if: this version, whose return type is void, was present
+  // in the HP STL, and is retained as an extension for backward compatibility.
+  template<typename _InputIterator, typename _Tp, typename _Size>
+    void
+    count(_InputIterator __first, _InputIterator __last,
+	  const _Tp& __value,
+	  _Size& __n)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_EqualityComparableConcept<
+	    typename iterator_traits<_InputIterator>::value_type >)
+      __glibcxx_function_requires(_EqualityComparableConcept<_Tp>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for ( ; __first != __last; ++__first)
+	if (*__first == __value)
+	  ++__n;
+    }
+
+  template<typename _InputIterator, typename _Predicate, typename _Size>
+    void
+    count_if(_InputIterator __first, _InputIterator __last,
+	     _Predicate __pred,
+	     _Size& __n)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
+	    typename iterator_traits<_InputIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      for ( ; __first != __last; ++__first)
+	if (__pred(*__first))
+	  ++__n;
+    }
+
+  // random_sample and random_sample_n (extensions, not part of the standard).
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _ForwardIterator, typename _OutputIterator,
+	   typename _Distance>
+    _OutputIterator
+    random_sample_n(_ForwardIterator __first, _ForwardIterator __last,
+                    _OutputIterator __out, const _Distance __n)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+		typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _Distance __remaining = std::distance(__first, __last);
+      _Distance __m = min(__n, __remaining);
+
+      while (__m > 0)
+	{
+	  if ((std::rand() % __remaining) < __m)
+	    {
+	      *__out = *__first;
+	      ++__out;
+	      --__m;
+	    }
+	  --__remaining;
+	  ++__first;
+	}
+      return __out;
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _ForwardIterator, typename _OutputIterator,
+	   typename _Distance, typename _RandomNumberGenerator>
+    _OutputIterator
+    random_sample_n(_ForwardIterator __first, _ForwardIterator __last,
+                   _OutputIterator __out, const _Distance __n,
+		   _RandomNumberGenerator& __rand)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
+		typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_function_requires(_UnaryFunctionConcept<
+		_RandomNumberGenerator, _Distance, _Distance>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      _Distance __remaining = std::distance(__first, __last);
+      _Distance __m = min(__n, __remaining);
+
+      while (__m > 0)
+	{
+	  if (__rand(__remaining) < __m)
+	    {
+	      *__out = *__first;
+	      ++__out;
+	      --__m;
+	    }
+	  --__remaining;
+	  ++__first;
+	}
+      return __out;
+    }
+
+  template<typename _InputIterator, typename _RandomAccessIterator,
+	   typename _Distance>
+    _RandomAccessIterator
+    __random_sample(_InputIterator __first, _InputIterator __last,
+		    _RandomAccessIterator __out,
+		    const _Distance __n)
+    {
+      _Distance __m = 0;
+      _Distance __t = __n;
+      for ( ; __first != __last && __m < __n; ++__m, ++__first)
+	__out[__m] = *__first;
+
+      while (__first != __last)
+	{
+	  ++__t;
+	  _Distance __M = std::rand() % (__t);
+	  if (__M < __n)
+	    __out[__M] = *__first;
+	  ++__first;
+	}
+      return __out + __m;
+    }
+
+  template<typename _InputIterator, typename _RandomAccessIterator,
+	   typename _RandomNumberGenerator, typename _Distance>
+    _RandomAccessIterator
+    __random_sample(_InputIterator __first, _InputIterator __last,
+		    _RandomAccessIterator __out,
+		    _RandomNumberGenerator& __rand,
+		    const _Distance __n)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_UnaryFunctionConcept<
+	    _RandomNumberGenerator, _Distance, _Distance>)
+
+      _Distance __m = 0;
+      _Distance __t = __n;
+      for ( ; __first != __last && __m < __n; ++__m, ++__first)
+	__out[__m] = *__first;
+
+      while (__first != __last)
+	{
+	  ++__t;
+	  _Distance __M = __rand(__t);
+	  if (__M < __n)
+	    __out[__M] = *__first;
+	  ++__first;
+	}
+      return __out + __m;
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _InputIterator, typename _RandomAccessIterator>
+    inline _RandomAccessIterator
+    random_sample(_InputIterator __first, _InputIterator __last,
+		  _RandomAccessIterator __out_first,
+		  _RandomAccessIterator __out_last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_valid_range(__out_first, __out_last);
+
+      return __random_sample(__first, __last,
+			     __out_first, __out_last - __out_first);
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _InputIterator, typename _RandomAccessIterator,
+	   typename _RandomNumberGenerator>
+    inline _RandomAccessIterator
+    random_sample(_InputIterator __first, _InputIterator __last,
+		  _RandomAccessIterator __out_first,
+		  _RandomAccessIterator __out_last,
+		  _RandomNumberGenerator& __rand)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
+	    _RandomAccessIterator>)
+      __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_requires_valid_range(__out_first, __out_last);
+
+      return __random_sample(__first, __last,
+			     __out_first, __rand,
+			     __out_last - __out_first);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::is_heap;
+#else
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _RandomAccessIterator>
+    inline bool
+    is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_RandomAccessIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return std::__is_heap(__first, __last - __first);
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _RandomAccessIterator, typename _StrictWeakOrdering>
+    inline bool
+    is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	    _StrictWeakOrdering __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
+	    typename iterator_traits<_RandomAccessIterator>::value_type,
+	    typename iterator_traits<_RandomAccessIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      return std::__is_heap(__first, __comp, __last - __first);
+    }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::is_sorted;
+#else
+  // is_sorted, a predicated testing whether a range is sorted in
+  // nondescending order.  This is an extension, not part of the C++
+  // standard.
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _ForwardIterator>
+    bool
+    is_sorted(_ForwardIterator __first, _ForwardIterator __last)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_LessThanComparableConcept<
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return true;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+	if (*__next < *__first)
+	  return false;
+      return true;
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _ForwardIterator, typename _StrictWeakOrdering>
+    bool
+    is_sorted(_ForwardIterator __first, _ForwardIterator __last,
+	      _StrictWeakOrdering __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
+      __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
+	    typename iterator_traits<_ForwardIterator>::value_type,
+	    typename iterator_traits<_ForwardIterator>::value_type>)
+      __glibcxx_requires_valid_range(__first, __last);
+
+      if (__first == __last)
+	return true;
+
+      _ForwardIterator __next = __first;
+      for (++__next; __next != __last; __first = __next, ++__next)
+	if (__comp(*__next, *__first))
+	  return false;
+      return true;
+    }
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
+
+  /**
+   *  @brief Find the median of three values.
+   *  @param  a  A value.
+   *  @param  b  A value.
+   *  @param  c  A value.
+   *  @return One of @p a, @p b or @p c.
+   *
+   *  If @c {l,m,n} is some convolution of @p {a,b,c} such that @c l<=m<=n
+   *  then the value returned will be @c m.
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+  */
+  template<typename _Tp>
+    const _Tp&
+    __median(const _Tp& __a, const _Tp& __b, const _Tp& __c)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
+      if (__a < __b)
+	if (__b < __c)
+	  return __b;
+	else if (__a < __c)
+	  return __c;
+	else
+	  return __a;
+      else if (__a < __c)
+	return __a;
+      else if (__b < __c)
+	return __c;
+      else
+	return __b;
+    }
+
+  /**
+   *  @brief Find the median of three values using a predicate for comparison.
+   *  @param  a     A value.
+   *  @param  b     A value.
+   *  @param  c     A value.
+   *  @param  comp  A binary predicate.
+   *  @return One of @p a, @p b or @p c.
+   *
+   *  If @c {l,m,n} is some convolution of @p {a,b,c} such that @p comp(l,m)
+   *  and @p comp(m,n) are both true then the value returned will be @c m.
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+  */
+  template<typename _Tp, typename _Compare>
+    const _Tp&
+    __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool,
+				                         _Tp, _Tp>)
+      if (__comp(__a, __b))
+	if (__comp(__b, __c))
+	  return __b;
+	else if (__comp(__a, __c))
+	  return __c;
+	else
+	  return __a;
+      else if (__comp(__a, __c))
+	return __a;
+      else if (__comp(__b, __c))
+	return __c;
+      else
+	return __b;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _EXT_ALGORITHM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/array_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/array_allocator.h
new file mode 100644
index 000000000..9c61d7431
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/array_allocator.h
@@ -0,0 +1,157 @@
+// array allocator -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/array_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _ARRAY_ALLOCATOR_H
+#define _ARRAY_ALLOCATOR_H 1
+
+#include <bits/c++config.h>
+#include <new>
+#include <bits/functexcept.h>
+#include <tr1/array>
+#include <bits/move.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ using std::size_t;
+ using std::ptrdiff_t;
+
+  /// Base class.
+ template<typename _Tp>
+    class array_allocator_base
+    {
+    public:
+      typedef size_t     	size_type;
+      typedef ptrdiff_t  	difference_type;
+      typedef _Tp*       	pointer;
+      typedef const _Tp* 	const_pointer;
+      typedef _Tp&       	reference;
+      typedef const _Tp&	const_reference;
+      typedef _Tp        	value_type;
+
+      pointer
+      address(reference __x) const { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const { return std::__addressof(__x); }
+
+      void
+      deallocate(pointer, size_type)
+      { 
+	// Does nothing.
+      }
+
+      size_type
+      max_size() const throw() 
+      { return size_t(-1) / sizeof(_Tp); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_] allocator::construct
+      void 
+      construct(pointer __p, const _Tp& __val) 
+      { ::new((void *)__p) value_type(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p) { __p->~_Tp(); }
+    };  
+
+  /**
+   *  @brief  An allocator that uses previously allocated memory.
+   *  This memory can be externally, globally, or otherwise allocated.
+   *  @ingroup allocators
+   */
+  template<typename _Tp, typename _Array = std::tr1::array<_Tp, 1> >
+    class array_allocator : public array_allocator_base<_Tp>
+    {
+    public:
+      typedef size_t     	size_type;
+      typedef ptrdiff_t  	difference_type;
+      typedef _Tp*       	pointer;
+      typedef const _Tp* 	const_pointer;
+      typedef _Tp&       	reference;
+      typedef const _Tp& 	const_reference;
+      typedef _Tp        	value_type;
+      typedef _Array		array_type;
+
+    private:
+      array_type* 	_M_array;
+      size_type 	_M_used;
+
+    public:
+     template<typename _Tp1, typename _Array1 = _Array>
+        struct rebind
+        { typedef array_allocator<_Tp1, _Array1> other; };
+
+      array_allocator(array_type* __array = 0) throw() 
+      : _M_array(__array), _M_used(size_type()) { }
+
+      array_allocator(const array_allocator& __o)  throw() 
+      : _M_array(__o._M_array), _M_used(__o._M_used) { }
+
+      template<typename _Tp1, typename _Array1>
+        array_allocator(const array_allocator<_Tp1, _Array1>&) throw()
+	: _M_array(0), _M_used(size_type()) { }
+
+      ~array_allocator() throw() { }
+
+      pointer
+      allocate(size_type __n, const void* = 0)
+      {
+	if (_M_array == 0 || _M_used + __n > _M_array->size())
+	  std::__throw_bad_alloc();
+	pointer __ret = _M_array->begin() + _M_used;
+	_M_used += __n;
+	return __ret;
+      }
+    };
+
+  template<typename _Tp, typename _Array>
+    inline bool
+    operator==(const array_allocator<_Tp, _Array>&,
+	       const array_allocator<_Tp, _Array>&)
+    { return true; }
+  
+  template<typename _Tp, typename _Array>
+    inline bool
+    operator!=(const array_allocator<_Tp, _Array>&, 
+	       const array_allocator<_Tp, _Array>&)
+    { return false; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/atomicity.h
new file mode 100644
index 000000000..f0c775216
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/atomicity.h
@@ -0,0 +1,116 @@
+// Support for atomic operations -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/atomicity.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_ATOMICITY_H
+#define _GLIBCXX_ATOMICITY_H	1
+
+#include <bits/c++config.h>
+#include <bits/gthr.h>
+#include <bits/atomic_word.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Functions for portable atomic access.
+  // To abstract locking primitives across all thread policies, use:
+  // __exchange_and_add_dispatch
+  // __atomic_add_dispatch
+#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
+  static inline _Atomic_word 
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
+  { return __sync_fetch_and_add(__mem, __val); }
+
+  static inline void
+  __atomic_add(volatile _Atomic_word* __mem, int __val)
+  { __sync_fetch_and_add(__mem, __val); }
+#else
+  _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add(volatile _Atomic_word*, int) throw ();
+
+  void
+  __attribute__ ((__unused__))
+  __atomic_add(volatile _Atomic_word*, int) throw ();
+#endif
+
+  static inline _Atomic_word
+  __exchange_and_add_single(_Atomic_word* __mem, int __val)
+  {
+    _Atomic_word __result = *__mem;
+    *__mem += __val;
+    return __result;
+  }
+
+  static inline void
+  __atomic_add_single(_Atomic_word* __mem, int __val)
+  { *__mem += __val; }
+
+  static inline _Atomic_word
+  __attribute__ ((__unused__))
+  __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
+  {
+#ifdef __GTHREADS
+    if (__gthread_active_p())
+      return __exchange_and_add(__mem, __val);
+    else
+      return __exchange_and_add_single(__mem, __val);
+#else
+    return __exchange_and_add_single(__mem, __val);
+#endif
+  }
+
+  static inline void
+  __attribute__ ((__unused__))
+  __atomic_add_dispatch(_Atomic_word* __mem, int __val)
+  {
+#ifdef __GTHREADS
+    if (__gthread_active_p())
+      __atomic_add(__mem, __val);
+    else
+      __atomic_add_single(__mem, __val);
+#else
+    __atomic_add_single(__mem, __val);
+#endif
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// Even if the CPU doesn't need a memory barrier, we need to ensure
+// that the compiler doesn't reorder memory accesses across the
+// barriers.
+#ifndef _GLIBCXX_READ_MEM_BARRIER
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
+#endif
+#ifndef _GLIBCXX_WRITE_MEM_BARRIER
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
+#endif
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/bitmap_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/bitmap_allocator.h
new file mode 100644
index 000000000..4993c2c57
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/bitmap_allocator.h
@@ -0,0 +1,1112 @@
+// Bitmap Allocator. -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/bitmap_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _BITMAP_ALLOCATOR_H
+#define _BITMAP_ALLOCATOR_H 1
+
+#include <utility> // For std::pair.
+#include <bits/functexcept.h> // For __throw_bad_alloc().
+#include <functional> // For greater_equal, and less_equal.
+#include <new> // For operator new.
+#include <debug/debug.h> // _GLIBCXX_DEBUG_ASSERT
+#include <ext/concurrence.h>
+#include <bits/move.h>
+
+/** @brief The constant in the expression below is the alignment
+ * required in bytes.
+ */
+#define _BALLOC_ALIGN_BYTES 8
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  using std::size_t;
+  using std::ptrdiff_t;
+
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+    /** @class  __mini_vector bitmap_allocator.h bitmap_allocator.h
+     *
+     *  @brief  __mini_vector<> is a stripped down version of the
+     *  full-fledged std::vector<>.
+     *
+     *  It is to be used only for built-in types or PODs. Notable
+     *  differences are:
+     * 
+     *  @detail
+     *  1. Not all accessor functions are present.
+     *  2. Used ONLY for PODs.
+     *  3. No Allocator template argument. Uses ::operator new() to get
+     *  memory, and ::operator delete() to free it.
+     *  Caveat: The dtor does NOT free the memory allocated, so this a
+     *  memory-leaking vector!
+     */
+    template<typename _Tp>
+      class __mini_vector
+      {
+	__mini_vector(const __mini_vector&);
+	__mini_vector& operator=(const __mini_vector&);
+
+      public:
+	typedef _Tp value_type;
+	typedef _Tp* pointer;
+	typedef _Tp& reference;
+	typedef const _Tp& const_reference;
+	typedef size_t size_type;
+	typedef ptrdiff_t difference_type;
+	typedef pointer iterator;
+
+      private:
+	pointer _M_start;
+	pointer _M_finish;
+	pointer _M_end_of_storage;
+
+	size_type
+	_M_space_left() const throw()
+	{ return _M_end_of_storage - _M_finish; }
+
+	pointer
+	allocate(size_type __n)
+	{ return static_cast<pointer>(::operator new(__n * sizeof(_Tp))); }
+
+	void
+	deallocate(pointer __p, size_type)
+	{ ::operator delete(__p); }
+
+      public:
+	// Members used: size(), push_back(), pop_back(),
+	// insert(iterator, const_reference), erase(iterator),
+	// begin(), end(), back(), operator[].
+
+	__mini_vector()
+        : _M_start(0), _M_finish(0), _M_end_of_storage(0) { }
+
+	size_type
+	size() const throw()
+	{ return _M_finish - _M_start; }
+
+	iterator
+	begin() const throw()
+	{ return this->_M_start; }
+
+	iterator
+	end() const throw()
+	{ return this->_M_finish; }
+
+	reference
+	back() const throw()
+	{ return *(this->end() - 1); }
+
+	reference
+	operator[](const size_type __pos) const throw()
+	{ return this->_M_start[__pos]; }
+
+	void
+	insert(iterator __pos, const_reference __x);
+
+	void
+	push_back(const_reference __x)
+	{
+	  if (this->_M_space_left())
+	    {
+	      *this->end() = __x;
+	      ++this->_M_finish;
+	    }
+	  else
+	    this->insert(this->end(), __x);
+	}
+
+	void
+	pop_back() throw()
+	{ --this->_M_finish; }
+
+	void
+	erase(iterator __pos) throw();
+
+	void
+	clear() throw()
+	{ this->_M_finish = this->_M_start; }
+      };
+
+    // Out of line function definitions.
+    template<typename _Tp>
+      void __mini_vector<_Tp>::
+      insert(iterator __pos, const_reference __x)
+      {
+	if (this->_M_space_left())
+	  {
+	    size_type __to_move = this->_M_finish - __pos;
+	    iterator __dest = this->end();
+	    iterator __src = this->end() - 1;
+
+	    ++this->_M_finish;
+	    while (__to_move)
+	      {
+		*__dest = *__src;
+		--__dest; --__src; --__to_move;
+	      }
+	    *__pos = __x;
+	  }
+	else
+	  {
+	    size_type __new_size = this->size() ? this->size() * 2 : 1;
+	    iterator __new_start = this->allocate(__new_size);
+	    iterator __first = this->begin();
+	    iterator __start = __new_start;
+	    while (__first != __pos)
+	      {
+		*__start = *__first;
+		++__start; ++__first;
+	      }
+	    *__start = __x;
+	    ++__start;
+	    while (__first != this->end())
+	      {
+		*__start = *__first;
+		++__start; ++__first;
+	      }
+	    if (this->_M_start)
+	      this->deallocate(this->_M_start, this->size());
+
+	    this->_M_start = __new_start;
+	    this->_M_finish = __start;
+	    this->_M_end_of_storage = this->_M_start + __new_size;
+	  }
+      }
+
+    template<typename _Tp>
+      void __mini_vector<_Tp>::
+      erase(iterator __pos) throw()
+      {
+	while (__pos + 1 != this->end())
+	  {
+	    *__pos = __pos[1];
+	    ++__pos;
+	  }
+	--this->_M_finish;
+      }
+
+
+    template<typename _Tp>
+      struct __mv_iter_traits
+      {
+	typedef typename _Tp::value_type value_type;
+	typedef typename _Tp::difference_type difference_type;
+      };
+
+    template<typename _Tp>
+      struct __mv_iter_traits<_Tp*>
+      {
+	typedef _Tp value_type;
+	typedef ptrdiff_t difference_type;
+      };
+
+    enum 
+      { 
+	bits_per_byte = 8,
+	bits_per_block = sizeof(size_t) * size_t(bits_per_byte) 
+      };
+
+    template<typename _ForwardIterator, typename _Tp, typename _Compare>
+      _ForwardIterator
+      __lower_bound(_ForwardIterator __first, _ForwardIterator __last,
+		    const _Tp& __val, _Compare __comp)
+      {
+	typedef typename __mv_iter_traits<_ForwardIterator>::value_type
+	  _ValueType;
+	typedef typename __mv_iter_traits<_ForwardIterator>::difference_type
+	  _DistanceType;
+
+	_DistanceType __len = __last - __first;
+	_DistanceType __half;
+	_ForwardIterator __middle;
+
+	while (__len > 0)
+	  {
+	    __half = __len >> 1;
+	    __middle = __first;
+	    __middle += __half;
+	    if (__comp(*__middle, __val))
+	      {
+		__first = __middle;
+		++__first;
+		__len = __len - __half - 1;
+	      }
+	    else
+	      __len = __half;
+	  }
+	return __first;
+      }
+
+    /** @brief The number of Blocks pointed to by the address pair
+     *  passed to the function.
+     */
+    template<typename _AddrPair>
+      inline size_t
+      __num_blocks(_AddrPair __ap)
+      { return (__ap.second - __ap.first) + 1; }
+
+    /** @brief The number of Bit-maps pointed to by the address pair
+     *  passed to the function.
+     */
+    template<typename _AddrPair>
+      inline size_t
+      __num_bitmaps(_AddrPair __ap)
+      { return __num_blocks(__ap) / size_t(bits_per_block); }
+
+    // _Tp should be a pointer type.
+    template<typename _Tp>
+      class _Inclusive_between 
+      : public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
+      {
+	typedef _Tp pointer;
+	pointer _M_ptr_value;
+	typedef typename std::pair<_Tp, _Tp> _Block_pair;
+	
+      public:
+	_Inclusive_between(pointer __ptr) : _M_ptr_value(__ptr) 
+	{ }
+	
+	bool 
+	operator()(_Block_pair __bp) const throw()
+	{
+	  if (std::less_equal<pointer>()(_M_ptr_value, __bp.second) 
+	      && std::greater_equal<pointer>()(_M_ptr_value, __bp.first))
+	    return true;
+	  else
+	    return false;
+	}
+      };
+  
+    // Used to pass a Functor to functions by reference.
+    template<typename _Functor>
+      class _Functor_Ref 
+      : public std::unary_function<typename _Functor::argument_type, 
+				   typename _Functor::result_type>
+      {
+	_Functor& _M_fref;
+	
+      public:
+	typedef typename _Functor::argument_type argument_type;
+	typedef typename _Functor::result_type result_type;
+
+	_Functor_Ref(_Functor& __fref) : _M_fref(__fref) 
+	{ }
+
+	result_type 
+	operator()(argument_type __arg) 
+	{ return _M_fref(__arg); }
+      };
+
+    /** @class  _Ffit_finder bitmap_allocator.h bitmap_allocator.h
+     *
+     *  @brief  The class which acts as a predicate for applying the
+     *  first-fit memory allocation policy for the bitmap allocator.
+     */
+    // _Tp should be a pointer type, and _Alloc is the Allocator for
+    // the vector.
+    template<typename _Tp>
+      class _Ffit_finder 
+      : public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
+      {
+	typedef typename std::pair<_Tp, _Tp> _Block_pair;
+	typedef typename __detail::__mini_vector<_Block_pair> _BPVector;
+	typedef typename _BPVector::difference_type _Counter_type;
+
+	size_t* _M_pbitmap;
+	_Counter_type _M_data_offset;
+
+      public:
+	_Ffit_finder() : _M_pbitmap(0), _M_data_offset(0)
+	{ }
+
+	bool 
+	operator()(_Block_pair __bp) throw()
+	{
+	  // Set the _rover to the last physical location bitmap,
+	  // which is the bitmap which belongs to the first free
+	  // block. Thus, the bitmaps are in exact reverse order of
+	  // the actual memory layout. So, we count down the bitmaps,
+	  // which is the same as moving up the memory.
+
+	  // If the used count stored at the start of the Bit Map headers
+	  // is equal to the number of Objects that the current Block can
+	  // store, then there is definitely no space for another single
+	  // object, so just return false.
+	  _Counter_type __diff = __detail::__num_bitmaps(__bp);
+
+	  if (*(reinterpret_cast<size_t*>
+		(__bp.first) - (__diff + 1)) == __detail::__num_blocks(__bp))
+	    return false;
+
+	  size_t* __rover = reinterpret_cast<size_t*>(__bp.first) - 1;
+
+	  for (_Counter_type __i = 0; __i < __diff; ++__i)
+	    {
+	      _M_data_offset = __i;
+	      if (*__rover)
+		{
+		  _M_pbitmap = __rover;
+		  return true;
+		}
+	      --__rover;
+	    }
+	  return false;
+	}
+    
+	size_t*
+	_M_get() const throw()
+	{ return _M_pbitmap; }
+
+	_Counter_type
+	_M_offset() const throw()
+	{ return _M_data_offset * size_t(bits_per_block); }
+      };
+
+    /** @class  _Bitmap_counter bitmap_allocator.h bitmap_allocator.h
+     *
+     *  @brief  The bitmap counter which acts as the bitmap
+     *  manipulator, and manages the bit-manipulation functions and
+     *  the searching and identification functions on the bit-map.
+     */
+    // _Tp should be a pointer type.
+    template<typename _Tp>
+      class _Bitmap_counter
+      {
+	typedef typename
+	__detail::__mini_vector<typename std::pair<_Tp, _Tp> > _BPVector;
+	typedef typename _BPVector::size_type _Index_type;
+	typedef _Tp pointer;
+
+	_BPVector& _M_vbp;
+	size_t* _M_curr_bmap;
+	size_t* _M_last_bmap_in_block;
+	_Index_type _M_curr_index;
+    
+      public:
+	// Use the 2nd parameter with care. Make sure that such an
+	// entry exists in the vector before passing that particular
+	// index to this ctor.
+	_Bitmap_counter(_BPVector& Rvbp, long __index = -1) : _M_vbp(Rvbp)
+	{ this->_M_reset(__index); }
+    
+	void 
+	_M_reset(long __index = -1) throw()
+	{
+	  if (__index == -1)
+	    {
+	      _M_curr_bmap = 0;
+	      _M_curr_index = static_cast<_Index_type>(-1);
+	      return;
+	    }
+
+	  _M_curr_index = __index;
+	  _M_curr_bmap = reinterpret_cast<size_t*>
+	    (_M_vbp[_M_curr_index].first) - 1;
+	  
+	  _GLIBCXX_DEBUG_ASSERT(__index <= (long)_M_vbp.size() - 1);
+	
+	  _M_last_bmap_in_block = _M_curr_bmap
+	    - ((_M_vbp[_M_curr_index].second 
+		- _M_vbp[_M_curr_index].first + 1) 
+	       / size_t(bits_per_block) - 1);
+	}
+    
+	// Dangerous Function! Use with extreme care. Pass to this
+	// function ONLY those values that are known to be correct,
+	// otherwise this will mess up big time.
+	void
+	_M_set_internal_bitmap(size_t* __new_internal_marker) throw()
+	{ _M_curr_bmap = __new_internal_marker; }
+    
+	bool
+	_M_finished() const throw()
+	{ return(_M_curr_bmap == 0); }
+    
+	_Bitmap_counter&
+	operator++() throw()
+	{
+	  if (_M_curr_bmap == _M_last_bmap_in_block)
+	    {
+	      if (++_M_curr_index == _M_vbp.size())
+		_M_curr_bmap = 0;
+	      else
+		this->_M_reset(_M_curr_index);
+	    }
+	  else
+	    --_M_curr_bmap;
+	  return *this;
+	}
+    
+	size_t*
+	_M_get() const throw()
+	{ return _M_curr_bmap; }
+    
+	pointer 
+	_M_base() const throw()
+	{ return _M_vbp[_M_curr_index].first; }
+
+	_Index_type
+	_M_offset() const throw()
+	{
+	  return size_t(bits_per_block)
+	    * ((reinterpret_cast<size_t*>(this->_M_base()) 
+		- _M_curr_bmap) - 1);
+	}
+    
+	_Index_type
+	_M_where() const throw()
+	{ return _M_curr_index; }
+      };
+
+    /** @brief  Mark a memory address as allocated by re-setting the
+     *  corresponding bit in the bit-map.
+     */
+    inline void 
+    __bit_allocate(size_t* __pbmap, size_t __pos) throw()
+    {
+      size_t __mask = 1 << __pos;
+      __mask = ~__mask;
+      *__pbmap &= __mask;
+    }
+  
+    /** @brief  Mark a memory address as free by setting the
+     *  corresponding bit in the bit-map.
+     */
+    inline void 
+    __bit_free(size_t* __pbmap, size_t __pos) throw()
+    {
+      size_t __mask = 1 << __pos;
+      *__pbmap |= __mask;
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /** @brief  Generic Version of the bsf instruction.
+   */
+  inline size_t 
+  _Bit_scan_forward(size_t __num)
+  { return static_cast<size_t>(__builtin_ctzl(__num)); }
+
+  /** @class  free_list bitmap_allocator.h bitmap_allocator.h
+   *
+   *  @brief  The free list class for managing chunks of memory to be
+   *  given to and returned by the bitmap_allocator.
+   */
+  class free_list
+  {
+  public:
+    typedef size_t* 				value_type;
+    typedef __detail::__mini_vector<value_type> vector_type;
+    typedef vector_type::iterator 		iterator;
+    typedef __mutex				__mutex_type;
+
+  private:
+    struct _LT_pointer_compare
+    {
+      bool
+      operator()(const size_t* __pui, 
+		 const size_t __cui) const throw()
+      { return *__pui < __cui; }
+    };
+
+#if defined __GTHREADS
+    __mutex_type&
+    _M_get_mutex()
+    {
+      static __mutex_type _S_mutex;
+      return _S_mutex;
+    }
+#endif
+
+    vector_type&
+    _M_get_free_list()
+    {
+      static vector_type _S_free_list;
+      return _S_free_list;
+    }
+
+    /** @brief  Performs validation of memory based on their size.
+     *
+     *  @param  __addr The pointer to the memory block to be
+     *  validated.
+     *
+     *  @detail  Validates the memory block passed to this function and
+     *  appropriately performs the action of managing the free list of
+     *  blocks by adding this block to the free list or deleting this
+     *  or larger blocks from the free list.
+     */
+    void
+    _M_validate(size_t* __addr) throw()
+    {
+      vector_type& __free_list = _M_get_free_list();
+      const vector_type::size_type __max_size = 64;
+      if (__free_list.size() >= __max_size)
+	{
+	  // Ok, the threshold value has been reached.  We determine
+	  // which block to remove from the list of free blocks.
+	  if (*__addr >= *__free_list.back())
+	    {
+	      // Ok, the new block is greater than or equal to the
+	      // last block in the list of free blocks. We just free
+	      // the new block.
+	      ::operator delete(static_cast<void*>(__addr));
+	      return;
+	    }
+	  else
+	    {
+	      // Deallocate the last block in the list of free lists,
+	      // and insert the new one in its correct position.
+	      ::operator delete(static_cast<void*>(__free_list.back()));
+	      __free_list.pop_back();
+	    }
+	}
+	  
+      // Just add the block to the list of free lists unconditionally.
+      iterator __temp = __detail::__lower_bound
+	(__free_list.begin(), __free_list.end(), 
+	 *__addr, _LT_pointer_compare());
+
+      // We may insert the new free list before _temp;
+      __free_list.insert(__temp, __addr);
+    }
+
+    /** @brief  Decides whether the wastage of memory is acceptable for
+     *  the current memory request and returns accordingly.
+     *
+     *  @param __block_size The size of the block available in the free
+     *  list.
+     *
+     *  @param __required_size The required size of the memory block.
+     *
+     *  @return true if the wastage incurred is acceptable, else returns
+     *  false.
+     */
+    bool 
+    _M_should_i_give(size_t __block_size, 
+		     size_t __required_size) throw()
+    {
+      const size_t __max_wastage_percentage = 36;
+      if (__block_size >= __required_size && 
+	  (((__block_size - __required_size) * 100 / __block_size)
+	   < __max_wastage_percentage))
+	return true;
+      else
+	return false;
+    }
+
+  public:
+    /** @brief This function returns the block of memory to the
+     *  internal free list.
+     *
+     *  @param  __addr The pointer to the memory block that was given
+     *  by a call to the _M_get function.
+     */
+    inline void 
+    _M_insert(size_t* __addr) throw()
+    {
+#if defined __GTHREADS
+      __scoped_lock __bfl_lock(_M_get_mutex());
+#endif
+      // Call _M_validate to decide what should be done with
+      // this particular free list.
+      this->_M_validate(reinterpret_cast<size_t*>(__addr) - 1);
+      // See discussion as to why this is 1!
+    }
+    
+    /** @brief  This function gets a block of memory of the specified
+     *  size from the free list.
+     *
+     *  @param  __sz The size in bytes of the memory required.
+     *
+     *  @return  A pointer to the new memory block of size at least
+     *  equal to that requested.
+     */
+    size_t*
+    _M_get(size_t __sz) throw(std::bad_alloc);
+
+    /** @brief  This function just clears the internal Free List, and
+     *  gives back all the memory to the OS.
+     */
+    void 
+    _M_clear();
+  };
+
+
+  // Forward declare the class.
+  template<typename _Tp> 
+    class bitmap_allocator;
+
+  // Specialize for void:
+  template<>
+    class bitmap_allocator<void>
+    {
+    public:
+      typedef void*       pointer;
+      typedef const void* const_pointer;
+
+      // Reference-to-void members are impossible.
+      typedef void  value_type;
+      template<typename _Tp1>
+        struct rebind
+	{
+	  typedef bitmap_allocator<_Tp1> other;
+	};
+    };
+
+  /**
+   * @brief Bitmap Allocator, primary template.
+   * @ingroup allocators
+   */
+  template<typename _Tp>
+    class bitmap_allocator : private free_list
+    {
+    public:
+      typedef size_t    		size_type;
+      typedef ptrdiff_t 		difference_type;
+      typedef _Tp*        		pointer;
+      typedef const _Tp*  		const_pointer;
+      typedef _Tp&        		reference;
+      typedef const _Tp&  		const_reference;
+      typedef _Tp         		value_type;
+      typedef free_list::__mutex_type 	__mutex_type;
+
+      template<typename _Tp1>
+        struct rebind
+	{
+	  typedef bitmap_allocator<_Tp1> other;
+	};
+
+    private:
+      template<size_t _BSize, size_t _AlignSize>
+        struct aligned_size
+	{
+	  enum
+	    { 
+	      modulus = _BSize % _AlignSize,
+	      value = _BSize + (modulus ? _AlignSize - (modulus) : 0)
+	    };
+	};
+
+      struct _Alloc_block
+      {
+	char __M_unused[aligned_size<sizeof(value_type),
+			_BALLOC_ALIGN_BYTES>::value];
+      };
+
+
+      typedef typename std::pair<_Alloc_block*, _Alloc_block*> _Block_pair;
+
+      typedef typename __detail::__mini_vector<_Block_pair> _BPVector;
+      typedef typename _BPVector::iterator _BPiter;
+
+      template<typename _Predicate>
+        static _BPiter
+        _S_find(_Predicate __p)
+        {
+	  _BPiter __first = _S_mem_blocks.begin();
+	  while (__first != _S_mem_blocks.end() && !__p(*__first))
+	    ++__first;
+	  return __first;
+	}
+
+#if defined _GLIBCXX_DEBUG
+      // Complexity: O(lg(N)). Where, N is the number of block of size
+      // sizeof(value_type).
+      void 
+      _S_check_for_free_blocks() throw()
+      {
+	typedef typename __detail::_Ffit_finder<_Alloc_block*> _FFF;
+	_BPiter __bpi = _S_find(_FFF());
+
+	_GLIBCXX_DEBUG_ASSERT(__bpi == _S_mem_blocks.end());
+      }
+#endif
+
+      /** @brief  Responsible for exponentially growing the internal
+       *  memory pool.
+       *
+       *  @throw  std::bad_alloc. If memory can not be allocated.
+       *
+       *  @detail  Complexity: O(1), but internally depends upon the
+       *  complexity of the function free_list::_M_get. The part where
+       *  the bitmap headers are written has complexity: O(X),where X
+       *  is the number of blocks of size sizeof(value_type) within
+       *  the newly acquired block. Having a tight bound.
+       */
+      void 
+      _S_refill_pool() throw(std::bad_alloc)
+      {
+#if defined _GLIBCXX_DEBUG
+	_S_check_for_free_blocks();
+#endif
+
+	const size_t __num_bitmaps = (_S_block_size
+				      / size_t(__detail::bits_per_block));
+	const size_t __size_to_allocate = sizeof(size_t) 
+	  + _S_block_size * sizeof(_Alloc_block) 
+	  + __num_bitmaps * sizeof(size_t);
+
+	size_t* __temp =
+	  reinterpret_cast<size_t*>(this->_M_get(__size_to_allocate));
+	*__temp = 0;
+	++__temp;
+
+	// The Header information goes at the Beginning of the Block.
+	_Block_pair __bp = 
+	  std::make_pair(reinterpret_cast<_Alloc_block*>
+			 (__temp + __num_bitmaps), 
+			 reinterpret_cast<_Alloc_block*>
+			 (__temp + __num_bitmaps) 
+			 + _S_block_size - 1);
+	
+	// Fill the Vector with this information.
+	_S_mem_blocks.push_back(__bp);
+
+	for (size_t __i = 0; __i < __num_bitmaps; ++__i)
+	  __temp[__i] = ~static_cast<size_t>(0); // 1 Indicates all Free.
+
+	_S_block_size *= 2;
+      }
+
+      static _BPVector _S_mem_blocks;
+      static size_t _S_block_size;
+      static __detail::_Bitmap_counter<_Alloc_block*> _S_last_request;
+      static typename _BPVector::size_type _S_last_dealloc_index;
+#if defined __GTHREADS
+      static __mutex_type _S_mut;
+#endif
+
+    public:
+
+      /** @brief  Allocates memory for a single object of size
+       *  sizeof(_Tp).
+       *
+       *  @throw  std::bad_alloc. If memory can not be allocated.
+       *
+       *  @detail  Complexity: Worst case complexity is O(N), but that
+       *  is hardly ever hit. If and when this particular case is
+       *  encountered, the next few cases are guaranteed to have a
+       *  worst case complexity of O(1)!  That's why this function
+       *  performs very well on average. You can consider this
+       *  function to have a complexity referred to commonly as:
+       *  Amortized Constant time.
+       */
+      pointer 
+      _M_allocate_single_object() throw(std::bad_alloc)
+      {
+#if defined __GTHREADS
+	__scoped_lock __bit_lock(_S_mut);
+#endif
+
+	// The algorithm is something like this: The last_request
+	// variable points to the last accessed Bit Map. When such a
+	// condition occurs, we try to find a free block in the
+	// current bitmap, or succeeding bitmaps until the last bitmap
+	// is reached. If no free block turns up, we resort to First
+	// Fit method.
+
+	// WARNING: Do not re-order the condition in the while
+	// statement below, because it relies on C++'s short-circuit
+	// evaluation. The return from _S_last_request->_M_get() will
+	// NOT be dereference able if _S_last_request->_M_finished()
+	// returns true. This would inevitably lead to a NULL pointer
+	// dereference if tinkered with.
+	while (_S_last_request._M_finished() == false
+	       && (*(_S_last_request._M_get()) == 0))
+	  _S_last_request.operator++();
+
+	if (__builtin_expect(_S_last_request._M_finished() == true, false))
+	  {
+	    // Fall Back to First Fit algorithm.
+	    typedef typename __detail::_Ffit_finder<_Alloc_block*> _FFF;
+	    _FFF __fff;
+	    _BPiter __bpi = _S_find(__detail::_Functor_Ref<_FFF>(__fff));
+
+	    if (__bpi != _S_mem_blocks.end())
+	      {
+		// Search was successful. Ok, now mark the first bit from
+		// the right as 0, meaning Allocated. This bit is obtained
+		// by calling _M_get() on __fff.
+		size_t __nz_bit = _Bit_scan_forward(*__fff._M_get());
+		__detail::__bit_allocate(__fff._M_get(), __nz_bit);
+
+		_S_last_request._M_reset(__bpi - _S_mem_blocks.begin());
+
+		// Now, get the address of the bit we marked as allocated.
+		pointer __ret = reinterpret_cast<pointer>
+		  (__bpi->first + __fff._M_offset() + __nz_bit);
+		size_t* __puse_count = 
+		  reinterpret_cast<size_t*>
+		  (__bpi->first) - (__detail::__num_bitmaps(*__bpi) + 1);
+		
+		++(*__puse_count);
+		return __ret;
+	      }
+	    else
+	      {
+		// Search was unsuccessful. We Add more memory to the
+		// pool by calling _S_refill_pool().
+		_S_refill_pool();
+
+		// _M_Reset the _S_last_request structure to the first
+		// free block's bit map.
+		_S_last_request._M_reset(_S_mem_blocks.size() - 1);
+
+		// Now, mark that bit as allocated.
+	      }
+	  }
+
+	// _S_last_request holds a pointer to a valid bit map, that
+	// points to a free block in memory.
+	size_t __nz_bit = _Bit_scan_forward(*_S_last_request._M_get());
+	__detail::__bit_allocate(_S_last_request._M_get(), __nz_bit);
+
+	pointer __ret = reinterpret_cast<pointer>
+	  (_S_last_request._M_base() + _S_last_request._M_offset() + __nz_bit);
+
+	size_t* __puse_count = reinterpret_cast<size_t*>
+	  (_S_mem_blocks[_S_last_request._M_where()].first)
+	  - (__detail::
+	     __num_bitmaps(_S_mem_blocks[_S_last_request._M_where()]) + 1);
+
+	++(*__puse_count);
+	return __ret;
+      }
+
+      /** @brief  Deallocates memory that belongs to a single object of
+       *  size sizeof(_Tp).
+       *
+       *  @detail  Complexity: O(lg(N)), but the worst case is not hit
+       *  often!  This is because containers usually deallocate memory
+       *  close to each other and this case is handled in O(1) time by
+       *  the deallocate function.
+       */
+      void 
+      _M_deallocate_single_object(pointer __p) throw()
+      {
+#if defined __GTHREADS
+	__scoped_lock __bit_lock(_S_mut);
+#endif
+	_Alloc_block* __real_p = reinterpret_cast<_Alloc_block*>(__p);
+
+	typedef typename _BPVector::iterator _Iterator;
+	typedef typename _BPVector::difference_type _Difference_type;
+
+	_Difference_type __diff;
+	long __displacement;
+
+	_GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0);
+
+	__detail::_Inclusive_between<_Alloc_block*> __ibt(__real_p);
+	if (__ibt(_S_mem_blocks[_S_last_dealloc_index]))
+	  {
+	    _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index
+				  <= _S_mem_blocks.size() - 1);
+
+	    // Initial Assumption was correct!
+	    __diff = _S_last_dealloc_index;
+	    __displacement = __real_p - _S_mem_blocks[__diff].first;
+	  }
+	else
+	  {
+	    _Iterator _iter = _S_find(__ibt);
+
+	    _GLIBCXX_DEBUG_ASSERT(_iter != _S_mem_blocks.end());
+
+	    __diff = _iter - _S_mem_blocks.begin();
+	    __displacement = __real_p - _S_mem_blocks[__diff].first;
+	    _S_last_dealloc_index = __diff;
+	  }
+
+	// Get the position of the iterator that has been found.
+	const size_t __rotate = (__displacement
+				 % size_t(__detail::bits_per_block));
+	size_t* __bitmapC = 
+	  reinterpret_cast<size_t*>
+	  (_S_mem_blocks[__diff].first) - 1;
+	__bitmapC -= (__displacement / size_t(__detail::bits_per_block));
+      
+	__detail::__bit_free(__bitmapC, __rotate);
+	size_t* __puse_count = reinterpret_cast<size_t*>
+	  (_S_mem_blocks[__diff].first)
+	  - (__detail::__num_bitmaps(_S_mem_blocks[__diff]) + 1);
+	
+	_GLIBCXX_DEBUG_ASSERT(*__puse_count != 0);
+
+	--(*__puse_count);
+
+	if (__builtin_expect(*__puse_count == 0, false))
+	  {
+	    _S_block_size /= 2;
+	  
+	    // We can safely remove this block.
+	    // _Block_pair __bp = _S_mem_blocks[__diff];
+	    this->_M_insert(__puse_count);
+	    _S_mem_blocks.erase(_S_mem_blocks.begin() + __diff);
+
+	    // Reset the _S_last_request variable to reflect the
+	    // erased block. We do this to protect future requests
+	    // after the last block has been removed from a particular
+	    // memory Chunk, which in turn has been returned to the
+	    // free list, and hence had been erased from the vector,
+	    // so the size of the vector gets reduced by 1.
+	    if ((_Difference_type)_S_last_request._M_where() >= __diff--)
+	      _S_last_request._M_reset(__diff); 
+
+	    // If the Index into the vector of the region of memory
+	    // that might hold the next address that will be passed to
+	    // deallocated may have been invalidated due to the above
+	    // erase procedure being called on the vector, hence we
+	    // try to restore this invariant too.
+	    if (_S_last_dealloc_index >= _S_mem_blocks.size())
+	      {
+		_S_last_dealloc_index =(__diff != -1 ? __diff : 0);
+		_GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0);
+	      }
+	  }
+      }
+
+    public:
+      bitmap_allocator() throw()
+      { }
+
+      bitmap_allocator(const bitmap_allocator&)
+      { }
+
+      template<typename _Tp1>
+        bitmap_allocator(const bitmap_allocator<_Tp1>&) throw()
+        { }
+
+      ~bitmap_allocator() throw()
+      { }
+
+      pointer 
+      allocate(size_type __n)
+      {
+	if (__n > this->max_size())
+	  std::__throw_bad_alloc();
+
+	if (__builtin_expect(__n == 1, true))
+	  return this->_M_allocate_single_object();
+	else
+	  { 
+	    const size_type __b = __n * sizeof(value_type);
+	    return reinterpret_cast<pointer>(::operator new(__b));
+	  }
+      }
+
+      pointer 
+      allocate(size_type __n, typename bitmap_allocator<void>::const_pointer)
+      { return allocate(__n); }
+
+      void 
+      deallocate(pointer __p, size_type __n) throw()
+      {
+	if (__builtin_expect(__p != 0, true))
+	  {
+	    if (__builtin_expect(__n == 1, true))
+	      this->_M_deallocate_single_object(__p);
+	    else
+	      ::operator delete(__p);
+	  }
+      }
+
+      pointer 
+      address(reference __r) const
+      { return std::__addressof(__r); }
+
+      const_pointer 
+      address(const_reference __r) const
+      { return std::__addressof(__r); }
+
+      size_type 
+      max_size() const throw()
+      { return size_type(-1) / sizeof(value_type); }
+
+      void 
+      construct(pointer __p, const_reference __data)
+      { ::new((void *)__p) value_type(__data); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p)
+      { __p->~value_type(); }
+    };
+
+  template<typename _Tp1, typename _Tp2>
+    bool 
+    operator==(const bitmap_allocator<_Tp1>&, 
+	       const bitmap_allocator<_Tp2>&) throw()
+    { return true; }
+  
+  template<typename _Tp1, typename _Tp2>
+    bool 
+    operator!=(const bitmap_allocator<_Tp1>&, 
+	       const bitmap_allocator<_Tp2>&) throw() 
+  { return false; }
+
+  // Static member definitions.
+  template<typename _Tp>
+    typename bitmap_allocator<_Tp>::_BPVector
+    bitmap_allocator<_Tp>::_S_mem_blocks;
+
+  template<typename _Tp>
+    size_t bitmap_allocator<_Tp>::_S_block_size = 
+    2 * size_t(__detail::bits_per_block);
+
+  template<typename _Tp>
+    typename bitmap_allocator<_Tp>::_BPVector::size_type 
+    bitmap_allocator<_Tp>::_S_last_dealloc_index = 0;
+
+  template<typename _Tp>
+    __detail::_Bitmap_counter
+      <typename bitmap_allocator<_Tp>::_Alloc_block*>
+    bitmap_allocator<_Tp>::_S_last_request(_S_mem_blocks);
+
+#if defined __GTHREADS
+  template<typename _Tp>
+    typename bitmap_allocator<_Tp>::__mutex_type
+    bitmap_allocator<_Tp>::_S_mut;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __gnu_cxx
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/cast.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/cast.h
new file mode 100644
index 000000000..f3384f9a5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/cast.h
@@ -0,0 +1,121 @@
+// <cast.h> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/cast.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/pointer.h}
+ */
+
+#ifndef _GLIBCXX_CAST_H
+#define _GLIBCXX_CAST_H 1
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * These functions are here to allow containers to support non standard
+   * pointer types.  For normal pointers, these resolve to the use of the
+   * standard cast operation.  For other types the functions will perform
+   * the apprpriate cast to/from the custom pointer class so long as that
+   * class meets the following conditions:
+   * 1) has a typedef element_type which names tehe type it points to.
+   * 2) has a get() const method which returns element_type*.
+   * 3) has a constructor which can take one element_type* argument.
+   */
+
+  /**
+   * This type supports the semantics of the pointer cast operators (below.)
+   */
+  template<typename _ToType>
+    struct _Caster
+    { typedef typename _ToType::element_type*  type; };
+
+  template<typename _ToType>
+    struct _Caster<_ToType*>
+    { typedef _ToType*  type; };
+
+  /**
+   * Casting operations for cases where _FromType is not a standard pointer.
+   * _ToType can be a standard or non-standard pointer.  Given that _FromType
+   * is not a pointer, it must have a get() method that returns the standard
+   * pointer equivalent of the address it points to, and must have an
+   * element_type typedef which names the type it points to.
+   */
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __static_pointer_cast(const _FromType& __arg)
+    { return _ToType(static_cast<typename _Caster<_ToType>::
+		     type>(__arg.get())); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __dynamic_pointer_cast(const _FromType& __arg)
+    { return _ToType(dynamic_cast<typename _Caster<_ToType>::
+		     type>(__arg.get())); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __const_pointer_cast(const _FromType& __arg)
+    { return _ToType(const_cast<typename _Caster<_ToType>::
+		     type>(__arg.get())); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __reinterpret_pointer_cast(const _FromType& __arg)
+    { return _ToType(reinterpret_cast<typename _Caster<_ToType>::
+		     type>(__arg.get())); }
+
+  /**
+   * Casting operations for cases where _FromType is a standard pointer.
+   * _ToType can be a standard or non-standard pointer.
+   */
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __static_pointer_cast(_FromType* __arg)
+    { return _ToType(static_cast<typename _Caster<_ToType>::
+		     type>(__arg)); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __dynamic_pointer_cast(_FromType* __arg)
+    { return _ToType(dynamic_cast<typename _Caster<_ToType>::
+		     type>(__arg)); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __const_pointer_cast(_FromType* __arg)
+    { return _ToType(const_cast<typename _Caster<_ToType>::
+		     type>(__arg)); }
+
+  template<typename _ToType, typename _FromType>
+    inline _ToType
+    __reinterpret_pointer_cast(_FromType* __arg)
+    { return _ToType(reinterpret_cast<typename _Caster<_ToType>::
+		     type>(__arg)); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GLIBCXX_CAST_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/codecvt_specializations.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/codecvt_specializations.h
new file mode 100644
index 000000000..38b95efc1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/codecvt_specializations.h
@@ -0,0 +1,514 @@
+// Locale support (codecvt) -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+// 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.2.1.5 Template class codecvt
+//
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+/** @file ext/codecvt_specializations.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _EXT_CODECVT_SPECIALIZATIONS_H
+#define _EXT_CODECVT_SPECIALIZATIONS_H 1
+
+#include <bits/c++config.h>
+#include <locale>
+#include <iconv.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// Extension to use iconv for dealing with character encodings.
+  // This includes conversions and comparisons between various character
+  // sets.  This object encapsulates data that may need to be shared between
+  // char_traits, codecvt and ctype.
+  class encoding_state
+  {
+  public:
+    // Types: 
+    // NB: A conversion descriptor subsumes and enhances the
+    // functionality of a simple state type such as mbstate_t.
+    typedef iconv_t	descriptor_type;
+    
+  protected:
+    // Name of internal character set encoding.
+    std::string	       	_M_int_enc;
+
+    // Name of external character set encoding.
+    std::string  	_M_ext_enc;
+
+    // Conversion descriptor between external encoding to internal encoding.
+    descriptor_type	_M_in_desc;
+
+    // Conversion descriptor between internal encoding to external encoding.
+    descriptor_type	_M_out_desc;
+
+    // The byte-order marker for the external encoding, if necessary.
+    int			_M_ext_bom;
+
+    // The byte-order marker for the internal encoding, if necessary.
+    int			_M_int_bom;
+
+    // Number of external bytes needed to construct one complete
+    // character in the internal encoding.
+    // NB: -1 indicates variable, or stateful, encodings.
+    int 		_M_bytes;
+
+  public:
+    explicit 
+    encoding_state() 
+    : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0), _M_bytes(0)
+    { }
+
+    explicit 
+    encoding_state(const char* __int, const char* __ext, 
+		   int __ibom = 0, int __ebom = 0, int __bytes = 1)
+    : _M_int_enc(__int), _M_ext_enc(__ext), _M_in_desc(0), _M_out_desc(0), 
+      _M_ext_bom(__ebom), _M_int_bom(__ibom), _M_bytes(__bytes)
+    { init(); }
+
+    // 21.1.2 traits typedefs
+    // p4
+    // typedef STATE_T state_type
+    // requires: state_type shall meet the requirements of
+    // CopyConstructible types (20.1.3)
+    // NB: This does not preserve the actual state of the conversion
+    // descriptor member, but it does duplicate the encoding
+    // information.
+    encoding_state(const encoding_state& __obj) : _M_in_desc(0), _M_out_desc(0)
+    { construct(__obj); }
+
+    // Need assignment operator as well.
+    encoding_state&
+    operator=(const encoding_state& __obj)
+    {
+      construct(__obj);
+      return *this;
+    }
+
+    ~encoding_state()
+    { destroy(); } 
+
+    bool
+    good() const throw()
+    { 
+      const descriptor_type __err = (iconv_t)(-1);
+      bool __test = _M_in_desc && _M_in_desc != __err; 
+      __test &=  _M_out_desc && _M_out_desc != __err;
+      return __test;
+    }
+    
+    int
+    character_ratio() const
+    { return _M_bytes; }
+
+    const std::string
+    internal_encoding() const
+    { return _M_int_enc; }
+
+    int 
+    internal_bom() const
+    { return _M_int_bom; }
+
+    const std::string
+    external_encoding() const
+    { return _M_ext_enc; }
+
+    int 
+    external_bom() const
+    { return _M_ext_bom; }
+
+    const descriptor_type&
+    in_descriptor() const
+    { return _M_in_desc; }
+
+    const descriptor_type&
+    out_descriptor() const
+    { return _M_out_desc; }
+
+  protected:
+    void
+    init()
+    {
+      const descriptor_type __err = (iconv_t)(-1);
+      const bool __have_encodings = _M_int_enc.size() && _M_ext_enc.size();
+      if (!_M_in_desc && __have_encodings)
+	{
+	  _M_in_desc = iconv_open(_M_int_enc.c_str(), _M_ext_enc.c_str());
+	  if (_M_in_desc == __err)
+	    std::__throw_runtime_error(__N("encoding_state::_M_init "
+				    "creating iconv input descriptor failed"));
+	}
+      if (!_M_out_desc && __have_encodings)
+	{
+	  _M_out_desc = iconv_open(_M_ext_enc.c_str(), _M_int_enc.c_str());
+	  if (_M_out_desc == __err)
+	    std::__throw_runtime_error(__N("encoding_state::_M_init "
+				  "creating iconv output descriptor failed"));
+	}
+    }
+
+    void
+    construct(const encoding_state& __obj)
+    {
+      destroy();
+      _M_int_enc = __obj._M_int_enc;
+      _M_ext_enc = __obj._M_ext_enc;
+      _M_ext_bom = __obj._M_ext_bom;
+      _M_int_bom = __obj._M_int_bom;
+      _M_bytes = __obj._M_bytes;
+      init();
+    }
+
+    void
+    destroy() throw()
+    {
+      const descriptor_type __err = (iconv_t)(-1);
+      if (_M_in_desc && _M_in_desc != __err) 
+	{
+	  iconv_close(_M_in_desc);
+	  _M_in_desc = 0;
+	}
+      if (_M_out_desc && _M_out_desc != __err) 
+	{
+	  iconv_close(_M_out_desc);
+	  _M_out_desc = 0;
+	}
+    }
+  };
+
+  /// encoding_char_traits
+  // Custom traits type with encoding_state for the state type, and the
+  // associated fpos<encoding_state> for the position type, all other
+  // bits equivalent to the required char_traits instantiations.
+  template<typename _CharT>
+    struct encoding_char_traits : public std::char_traits<_CharT>
+    {
+      typedef encoding_state				state_type;
+      typedef typename std::fpos<state_type>		pos_type;
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using __gnu_cxx::encoding_state;
+
+  /// codecvt<InternT, _ExternT, encoding_state> specialization.
+  // This partial specialization takes advantage of iconv to provide
+  // code conversions between a large number of character encodings.
+  template<typename _InternT, typename _ExternT>
+    class codecvt<_InternT, _ExternT, encoding_state>
+    : public __codecvt_abstract_base<_InternT, _ExternT, encoding_state>
+    {
+    public:      
+      // Types:
+      typedef codecvt_base::result			result;
+      typedef _InternT 					intern_type;
+      typedef _ExternT 					extern_type;
+      typedef __gnu_cxx::encoding_state 		state_type;
+      typedef state_type::descriptor_type 		descriptor_type;
+
+      // Data Members:
+      static locale::id 		id;
+
+      explicit 
+      codecvt(size_t __refs = 0)
+      : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs)
+      { }
+
+      explicit 
+      codecvt(state_type& __enc, size_t __refs = 0)
+      : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs)
+      { }
+
+     protected:
+      virtual 
+      ~codecvt() { }
+
+      virtual result
+      do_out(state_type& __state, const intern_type* __from, 
+	     const intern_type* __from_end, const intern_type*& __from_next,
+	     extern_type* __to, extern_type* __to_end,
+	     extern_type*& __to_next) const;
+
+      virtual result
+      do_unshift(state_type& __state, extern_type* __to, 
+		 extern_type* __to_end, extern_type*& __to_next) const;
+
+      virtual result
+      do_in(state_type& __state, const extern_type* __from, 
+	    const extern_type* __from_end, const extern_type*& __from_next,
+	    intern_type* __to, intern_type* __to_end, 
+	    intern_type*& __to_next) const;
+
+      virtual int 
+      do_encoding() const throw();
+
+      virtual bool 
+      do_always_noconv() const throw();
+
+      virtual int 
+      do_length(state_type&, const extern_type* __from, 
+		const extern_type* __end, size_t __max) const;
+
+      virtual int 
+      do_max_length() const throw();
+    };
+
+  template<typename _InternT, typename _ExternT>
+    locale::id 
+    codecvt<_InternT, _ExternT, encoding_state>::id;
+
+  // This adaptor works around the signature problems of the second
+  // argument to iconv():  SUSv2 and others use 'const char**', but glibc 2.2
+  // uses 'char**', which matches the POSIX 1003.1-2001 standard.
+  // Using this adaptor, g++ will do the work for us.
+  template<typename _Tp>
+    inline size_t
+    __iconv_adaptor(size_t(*__func)(iconv_t, _Tp, size_t*, char**, size_t*),
+                    iconv_t __cd, char** __inbuf, size_t* __inbytes,
+                    char** __outbuf, size_t* __outbytes)
+    { return __func(__cd, (_Tp)__inbuf, __inbytes, __outbuf, __outbytes); }
+
+  template<typename _InternT, typename _ExternT>
+    codecvt_base::result
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_out(state_type& __state, const intern_type* __from, 
+	   const intern_type* __from_end, const intern_type*& __from_next,
+	   extern_type* __to, extern_type* __to_end,
+	   extern_type*& __to_next) const
+    {
+      result __ret = codecvt_base::error;
+      if (__state.good())
+	{
+	  const descriptor_type& __desc = __state.out_descriptor();
+	  const size_t __fmultiple = sizeof(intern_type);
+	  size_t __fbytes = __fmultiple * (__from_end - __from);
+	  const size_t __tmultiple = sizeof(extern_type);
+	  size_t __tbytes = __tmultiple * (__to_end - __to); 
+	  
+	  // Argument list for iconv specifies a byte sequence. Thus,
+	  // all to/from arrays must be brutally casted to char*.
+	  char* __cto = reinterpret_cast<char*>(__to);
+	  char* __cfrom;
+	  size_t __conv;
+
+	  // Some encodings need a byte order marker as the first item
+	  // in the byte stream, to designate endian-ness. The default
+	  // value for the byte order marker is NULL, so if this is
+	  // the case, it's not necessary and we can just go on our
+	  // merry way.
+	  int __int_bom = __state.internal_bom();
+	  if (__int_bom)
+	    {	  
+	      size_t __size = __from_end - __from;
+	      intern_type* __cfixed = static_cast<intern_type*>
+		(__builtin_alloca(sizeof(intern_type) * (__size + 1)));
+	      __cfixed[0] = static_cast<intern_type>(__int_bom);
+	      char_traits<intern_type>::copy(__cfixed + 1, __from, __size);
+	      __cfrom = reinterpret_cast<char*>(__cfixed);
+	      __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
+                                        &__fbytes, &__cto, &__tbytes); 
+	    }
+	  else
+	    {
+	      intern_type* __cfixed = const_cast<intern_type*>(__from);
+	      __cfrom = reinterpret_cast<char*>(__cfixed);
+	      __conv = __iconv_adaptor(iconv, __desc, &__cfrom, &__fbytes, 
+				       &__cto, &__tbytes); 
+	    }
+
+	  if (__conv != size_t(-1))
+	    {
+	      __from_next = reinterpret_cast<const intern_type*>(__cfrom);
+	      __to_next = reinterpret_cast<extern_type*>(__cto);
+	      __ret = codecvt_base::ok;
+	    }
+	  else 
+	    {
+	      if (__fbytes < __fmultiple * (__from_end - __from))
+		{
+		  __from_next = reinterpret_cast<const intern_type*>(__cfrom);
+		  __to_next = reinterpret_cast<extern_type*>(__cto);
+		  __ret = codecvt_base::partial;
+		}
+	      else
+		__ret = codecvt_base::error;
+	    }
+	}
+      return __ret; 
+    }
+
+  template<typename _InternT, typename _ExternT>
+    codecvt_base::result
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_unshift(state_type& __state, extern_type* __to, 
+	       extern_type* __to_end, extern_type*& __to_next) const
+    {
+      result __ret = codecvt_base::error;
+      if (__state.good())
+	{
+	  const descriptor_type& __desc = __state.in_descriptor();
+	  const size_t __tmultiple = sizeof(intern_type);
+	  size_t __tlen = __tmultiple * (__to_end - __to); 
+	  
+	  // Argument list for iconv specifies a byte sequence. Thus,
+	  // all to/from arrays must be brutally casted to char*.
+	  char* __cto = reinterpret_cast<char*>(__to);
+	  size_t __conv = __iconv_adaptor(iconv,__desc, 0, 0,
+                                          &__cto, &__tlen); 
+	  
+	  if (__conv != size_t(-1))
+	    {
+	      __to_next = reinterpret_cast<extern_type*>(__cto);
+	      if (__tlen == __tmultiple * (__to_end - __to))
+		__ret = codecvt_base::noconv;
+	      else if (__tlen == 0)
+		__ret = codecvt_base::ok;
+	      else
+		__ret = codecvt_base::partial;
+	    }
+	  else 
+	    __ret = codecvt_base::error;
+	}
+      return __ret; 
+    }
+   
+  template<typename _InternT, typename _ExternT>
+    codecvt_base::result
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_in(state_type& __state, const extern_type* __from, 
+	  const extern_type* __from_end, const extern_type*& __from_next,
+	  intern_type* __to, intern_type* __to_end, 
+	  intern_type*& __to_next) const
+    { 
+      result __ret = codecvt_base::error;
+      if (__state.good())
+	{
+	  const descriptor_type& __desc = __state.in_descriptor();
+	  const size_t __fmultiple = sizeof(extern_type);
+	  size_t __flen = __fmultiple * (__from_end - __from);
+	  const size_t __tmultiple = sizeof(intern_type);
+	  size_t __tlen = __tmultiple * (__to_end - __to); 
+	  
+	  // Argument list for iconv specifies a byte sequence. Thus,
+	  // all to/from arrays must be brutally casted to char*.
+	  char* __cto = reinterpret_cast<char*>(__to);
+	  char* __cfrom;
+	  size_t __conv;
+
+	  // Some encodings need a byte order marker as the first item
+	  // in the byte stream, to designate endian-ness. The default
+	  // value for the byte order marker is NULL, so if this is
+	  // the case, it's not necessary and we can just go on our
+	  // merry way.
+	  int __ext_bom = __state.external_bom();
+	  if (__ext_bom)
+	    {	  
+	      size_t __size = __from_end - __from;
+	      extern_type* __cfixed =  static_cast<extern_type*>
+		(__builtin_alloca(sizeof(extern_type) * (__size + 1)));
+	      __cfixed[0] = static_cast<extern_type>(__ext_bom);
+	      char_traits<extern_type>::copy(__cfixed + 1, __from, __size);
+	      __cfrom = reinterpret_cast<char*>(__cfixed);
+	      __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
+                                       &__flen, &__cto, &__tlen); 
+	    }
+	  else
+	    {
+	      extern_type* __cfixed = const_cast<extern_type*>(__from);
+	      __cfrom = reinterpret_cast<char*>(__cfixed);
+	      __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
+                                       &__flen, &__cto, &__tlen); 
+	    }
+
+	  
+	  if (__conv != size_t(-1))
+	    {
+	      __from_next = reinterpret_cast<const extern_type*>(__cfrom);
+	      __to_next = reinterpret_cast<intern_type*>(__cto);
+	      __ret = codecvt_base::ok;
+	    }
+	  else 
+	    {
+	      if (__flen < static_cast<size_t>(__from_end - __from))
+		{
+		  __from_next = reinterpret_cast<const extern_type*>(__cfrom);
+		  __to_next = reinterpret_cast<intern_type*>(__cto);
+		  __ret = codecvt_base::partial;
+		}
+	      else
+		__ret = codecvt_base::error;
+	    }
+	}
+      return __ret; 
+    }
+  
+  template<typename _InternT, typename _ExternT>
+    int 
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_encoding() const throw()
+    {
+      int __ret = 0;
+      if (sizeof(_ExternT) <= sizeof(_InternT))
+	__ret = sizeof(_InternT) / sizeof(_ExternT);
+      return __ret; 
+    }
+  
+  template<typename _InternT, typename _ExternT>
+    bool 
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_always_noconv() const throw()
+    { return false; }
+  
+  template<typename _InternT, typename _ExternT>
+    int 
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_length(state_type&, const extern_type* __from, 
+	      const extern_type* __end, size_t __max) const
+    { return std::min(__max, static_cast<size_t>(__end - __from)); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 74.  Garbled text for codecvt::do_max_length
+  template<typename _InternT, typename _ExternT>
+    int 
+    codecvt<_InternT, _ExternT, encoding_state>::
+    do_max_length() const throw()
+    { return 1; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/concurrence.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/concurrence.h
new file mode 100644
index 000000000..fc8f63f82
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/concurrence.h
@@ -0,0 +1,389 @@
+// Support for concurrent programing -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/concurrence.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _CONCURRENCE_H
+#define _CONCURRENCE_H 1
+
+#pragma GCC system_header
+
+#include <exception>
+#include <bits/gthr.h> 
+#include <bits/functexcept.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Available locking policies:
+  // _S_single    single-threaded code that doesn't need to be locked.
+  // _S_mutex     multi-threaded code that requires additional support
+  //              from gthr.h or abstraction layers in concurrence.h.
+  // _S_atomic    multi-threaded code using atomic operations.
+  enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 
+
+  // Compile time constant that indicates prefered locking policy in
+  // the current configuration.
+  static const _Lock_policy __default_lock_policy = 
+#ifdef __GTHREADS
+#if (defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) \
+     && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4))
+  _S_atomic;
+#else
+  _S_mutex;
+#endif
+#else
+  _S_single;
+#endif
+
+  // NB: As this is used in libsupc++, need to only depend on
+  // exception. No stdexception classes, no use of std::string.
+  class __concurrence_lock_error : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw()
+    { return "__gnu_cxx::__concurrence_lock_error"; }
+  };
+
+  class __concurrence_unlock_error : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw()
+    { return "__gnu_cxx::__concurrence_unlock_error"; }
+  };
+
+  class __concurrence_broadcast_error : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw()
+    { return "__gnu_cxx::__concurrence_broadcast_error"; }
+  };
+
+  class __concurrence_wait_error : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw()
+    { return "__gnu_cxx::__concurrence_wait_error"; }
+  };
+
+  // Substitute for concurrence_error object in the case of -fno-exceptions.
+  inline void
+  __throw_concurrence_lock_error()
+  {
+#if __EXCEPTIONS
+    throw __concurrence_lock_error();
+#else
+    __builtin_abort();
+#endif
+  }
+
+  inline void
+  __throw_concurrence_unlock_error()
+  {
+#if __EXCEPTIONS
+    throw __concurrence_unlock_error();
+#else
+    __builtin_abort();
+#endif
+  }
+
+#ifdef __GTHREAD_HAS_COND
+  inline void
+  __throw_concurrence_broadcast_error()
+  {
+#if __EXCEPTIONS
+    throw __concurrence_broadcast_error();
+#else
+    __builtin_abort();
+#endif
+  }
+
+  inline void
+  __throw_concurrence_wait_error()
+  {
+#if __EXCEPTIONS
+    throw __concurrence_wait_error();
+#else
+    __builtin_abort();
+#endif
+  }
+#endif
+ 
+  class __mutex 
+  {
+  private:
+    __gthread_mutex_t _M_mutex;
+
+    __mutex(const __mutex&);
+    __mutex& operator=(const __mutex&);
+
+  public:
+    __mutex() 
+    { 
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+#if defined __GTHREAD_MUTEX_INIT
+	  __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+	  _M_mutex = __tmp;
+#else
+	  __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex); 
+#endif
+	}
+#endif 
+    }
+
+#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT
+    ~__mutex() 
+    { 
+      if (__gthread_active_p())
+	__gthread_mutex_destroy(&_M_mutex); 
+    }
+#endif 
+
+    void lock()
+    {
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+	  if (__gthread_mutex_lock(&_M_mutex) != 0)
+	    __throw_concurrence_lock_error();
+	}
+#endif
+    }
+    
+    void unlock()
+    {
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+	  if (__gthread_mutex_unlock(&_M_mutex) != 0)
+	    __throw_concurrence_unlock_error();
+	}
+#endif
+    }
+
+    __gthread_mutex_t* gthread_mutex(void)
+      { return &_M_mutex; }
+  };
+
+  class __recursive_mutex 
+  {
+  private:
+    __gthread_recursive_mutex_t _M_mutex;
+
+    __recursive_mutex(const __recursive_mutex&);
+    __recursive_mutex& operator=(const __recursive_mutex&);
+
+  public:
+    __recursive_mutex() 
+    { 
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+#if defined __GTHREAD_RECURSIVE_MUTEX_INIT
+	  __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
+	  _M_mutex = __tmp;
+#else
+	  __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); 
+#endif
+	}
+#endif 
+    }
+
+#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
+    ~__recursive_mutex()
+    {
+      if (__gthread_active_p())
+	_S_destroy(&_M_mutex);
+    }
+#endif
+
+    void lock()
+    { 
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+	  if (__gthread_recursive_mutex_lock(&_M_mutex) != 0)
+	    __throw_concurrence_lock_error();
+	}
+#endif
+    }
+    
+    void unlock()
+    { 
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+	  if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0)
+	    __throw_concurrence_unlock_error();
+	}
+#endif
+    }
+
+    __gthread_recursive_mutex_t* gthread_recursive_mutex(void)
+    { return &_M_mutex; }
+
+#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
+    // FIXME: gthreads doesn't define __gthread_recursive_mutex_destroy
+    // so we need to obtain a __gthread_mutex_t to destroy
+  private:
+    template<typename _Mx, typename _Rm>
+      static void
+      _S_destroy_win32(_Mx* __mx, _Rm const* __rmx)
+      {
+        __mx->counter = __rmx->counter;
+        __mx->sema = __rmx->sema;
+        __gthread_mutex_destroy(__mx);
+      }
+
+    // matches a gthr-win32.h recursive mutex
+    template<typename _Rm>
+      static typename __enable_if<sizeof(&_Rm::sema), void>::__type
+      _S_destroy(_Rm* __mx)
+      {
+        __gthread_mutex_t __tmp;
+        _S_destroy_win32(&__tmp, __mx);
+      }
+
+    // matches a recursive mutex with a member 'actual'
+    template<typename _Rm>
+      static typename __enable_if<sizeof(&_Rm::actual), void>::__type
+      _S_destroy(_Rm* __mx)
+      { __gthread_mutex_destroy(&__mx->actual); }
+
+    // matches when there's only one mutex type
+    template<typename _Rm>
+      static typename
+      __enable_if<std::__are_same<_Rm, __gthread_mutex_t>::__value,
+        void>::__type
+      _S_destroy(_Rm* __mx)
+      { __gthread_mutex_destroy(__mx); }
+#endif
+  };
+
+  /// Scoped lock idiom.
+  // Acquire the mutex here with a constructor call, then release with
+  // the destructor call in accordance with RAII style.
+  class __scoped_lock
+  {
+  public:
+    typedef __mutex __mutex_type;
+
+  private:
+    __mutex_type& _M_device;
+
+    __scoped_lock(const __scoped_lock&);
+    __scoped_lock& operator=(const __scoped_lock&);
+
+  public:
+    explicit __scoped_lock(__mutex_type& __name) : _M_device(__name)
+    { _M_device.lock(); }
+
+    ~__scoped_lock() throw()
+    { _M_device.unlock(); }
+  };
+
+#ifdef __GTHREAD_HAS_COND
+  class __cond
+  {
+  private:
+    __gthread_cond_t _M_cond;
+
+    __cond(const __cond&);
+    __cond& operator=(const __cond&);
+
+  public:
+    __cond() 
+    { 
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+#if defined __GTHREAD_COND_INIT
+	  __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
+	  _M_cond = __tmp;
+#else
+	  __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
+#endif
+	}
+#endif 
+    }
+
+#if __GTHREADS && ! defined __GTHREAD_COND_INIT
+    ~__cond() 
+    { 
+      if (__gthread_active_p())
+	__gthread_cond_destroy(&_M_cond); 
+    }
+#endif 
+
+    void broadcast()
+    {
+#if __GTHREADS
+      if (__gthread_active_p())
+	{
+	  if (__gthread_cond_broadcast(&_M_cond) != 0)
+	    __throw_concurrence_broadcast_error();
+	}
+#endif
+    }
+
+    void wait(__mutex *mutex)
+    {
+#if __GTHREADS
+      {
+	  if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0)
+	    __throw_concurrence_wait_error();
+      }
+#endif
+    }
+
+    void wait_recursive(__recursive_mutex *mutex)
+    {
+#if __GTHREADS
+      {
+	  if (__gthread_cond_wait_recursive(&_M_cond,
+					    mutex->gthread_recursive_mutex())
+	      != 0)
+	    __throw_concurrence_wait_error();
+      }
+#endif
+    }
+  };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/debug_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/debug_allocator.h
new file mode 100644
index 000000000..12a5ea6ba
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/debug_allocator.h
@@ -0,0 +1,127 @@
+// Allocators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996-1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/debug_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _DEBUG_ALLOCATOR_H
+#define _DEBUG_ALLOCATOR_H 1
+
+#include <stdexcept>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+
+  /**
+   *  @brief  A meta-allocator with debugging bits, as per [20.4].
+   *  @ingroup allocators
+   *
+   *  This is precisely the allocator defined in the C++ Standard. 
+   *    - all allocation calls operator new
+   *    - all deallocation calls operator delete
+   */
+  template<typename _Alloc>
+    class debug_allocator
+    {
+    public:
+      typedef typename _Alloc::size_type       	size_type;
+      typedef typename _Alloc::difference_type	difference_type;
+      typedef typename _Alloc::pointer       	pointer;
+      typedef typename _Alloc::const_pointer    const_pointer;
+      typedef typename _Alloc::reference       	reference;
+      typedef typename _Alloc::const_reference  const_reference;
+      typedef typename _Alloc::value_type       value_type;
+
+    private:
+      // _M_extra is the number of objects that correspond to the
+      // extra space where debug information is stored.
+      size_type 		_M_extra;
+      
+      _Alloc			_M_allocator;
+
+    public:
+      debug_allocator()
+      {
+	const size_t __obj_size = sizeof(value_type);
+	_M_extra = (sizeof(size_type) + __obj_size - 1) / __obj_size; 
+      }
+      
+      pointer
+      allocate(size_type __n)
+      {
+        pointer __res = _M_allocator.allocate(__n + _M_extra);      
+	size_type* __ps = reinterpret_cast<size_type*>(__res);
+	*__ps = __n;
+        return __res + _M_extra;
+      }
+
+      pointer
+      allocate(size_type __n, const void* __hint)
+      {
+        pointer __res = _M_allocator.allocate(__n + _M_extra, __hint);
+	size_type* __ps = reinterpret_cast<size_type*>(__res);
+	*__ps = __n;
+        return __res + _M_extra;
+      }
+
+      void
+      deallocate(pointer __p, size_type __n)
+      {
+	if (__p)
+	  {
+	    pointer __real_p = __p - _M_extra;
+	    if (*reinterpret_cast<size_type*>(__real_p) != __n)
+	      {
+		throw std::runtime_error("debug_allocator::deallocate"
+					 " wrong size");
+	      }
+	    _M_allocator.deallocate(__real_p, __n + _M_extra);
+	  }
+	else
+	  throw std::runtime_error("debug_allocator::deallocate null pointer");
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/enc_filebuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/enc_filebuf.h
new file mode 100644
index 000000000..058d330c1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/enc_filebuf.h
@@ -0,0 +1,65 @@
+// filebuf with encoding state type -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/enc_filebuf.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _EXT_ENC_FILEBUF_H
+#define _EXT_ENC_FILEBUF_H 1
+
+#include <fstream>
+#include <locale>
+#include <ext/codecvt_specializations.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// class enc_filebuf.
+  template<typename _CharT>
+    class enc_filebuf
+    : public std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >
+    {
+    public:
+      typedef encoding_char_traits<_CharT>     	traits_type;
+      typedef typename traits_type::state_type	state_type;
+      typedef typename traits_type::pos_type	pos_type;
+
+      enc_filebuf(state_type& __state)
+      : std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >()
+      { this->_M_state_beg = __state; }
+
+    private:
+      // concept requirements:
+      // Set state type to something useful.
+      // Something more than copyconstructible is needed here, so
+      // require default and copy constructible + assignment operator.
+      __glibcxx_class_requires(state_type, _SGIAssignableConcept)
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/extptr_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/extptr_allocator.h
new file mode 100644
index 000000000..dfb76ac09
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/extptr_allocator.h
@@ -0,0 +1,181 @@
+// <extptr_allocator.h> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file ext/extptr_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ *
+ *  @author Bob Walters
+ *
+ * An example allocator which uses an alternative pointer type from
+ * bits/pointer.h.  Supports test cases which confirm container support
+ * for alternative pointers.
+ */
+
+#ifndef _EXTPTR_ALLOCATOR_H
+#define _EXTPTR_ALLOCATOR_H 1
+
+#include <memory>
+#include <limits>
+#include <ext/pointer.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @brief An example allocator which uses a non-standard pointer type.
+   * @ingroup allocators
+   *
+   * This allocator specifies that containers use a 'relative pointer' as it's
+   * pointer type.  (See ext/pointer.h)  Memory allocation in this example
+   * is still performed using std::allocator.
+   */
+  template<typename _Tp>
+    class _ExtPtr_allocator
+    {
+    public:
+      typedef std::size_t     size_type;
+      typedef std::ptrdiff_t  difference_type;
+
+      // Note the non-standard pointer types.
+      typedef _Pointer_adapter<_Relative_pointer_impl<_Tp> >       pointer;
+      typedef _Pointer_adapter<_Relative_pointer_impl<const _Tp> > 
+                                                             const_pointer;
+
+      typedef _Tp&       reference;
+      typedef const _Tp& const_reference;
+      typedef _Tp        value_type;
+
+      template<typename _Up>
+        struct rebind
+        { typedef _ExtPtr_allocator<_Up> other; };
+
+      _ExtPtr_allocator() throw() 
+      : _M_real_alloc() { }
+
+      _ExtPtr_allocator(const _ExtPtr_allocator &__rarg) throw()
+      : _M_real_alloc(__rarg._M_real_alloc) { }
+
+      template<typename _Up>
+        _ExtPtr_allocator(const _ExtPtr_allocator<_Up>& __rarg) throw()
+        : _M_real_alloc(__rarg._M_getUnderlyingImp()) { }
+
+      ~_ExtPtr_allocator() throw()
+      { }
+
+      pointer address(reference __x) const
+      { return std::__addressof(__x); }
+
+      const_pointer address(const_reference __x) const
+      { return std::__addressof(__x); }
+
+      pointer allocate(size_type __n, void* __hint = 0)
+      { return _M_real_alloc.allocate(__n,__hint); }
+
+      void deallocate(pointer __p, size_type __n)
+      { _M_real_alloc.deallocate(__p.get(), __n); }
+
+      size_type max_size() const throw()
+      { return std::numeric_limits<size_type>::max() / sizeof(_Tp); }
+
+      void construct(pointer __p, const _Tp& __val)
+      { ::new(__p.get()) _Tp(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+        { ::new(__p.get()) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void destroy(pointer __p)
+      { __p->~_Tp(); }
+
+      template<typename _Up>
+        inline bool
+        operator==(const _ExtPtr_allocator<_Up>& __rarg)
+        { return _M_real_alloc == __rarg._M_getUnderlyingImp(); }
+
+      inline bool
+      operator==(const _ExtPtr_allocator& __rarg)
+      { return _M_real_alloc == __rarg._M_real_alloc; }
+
+      template<typename _Up>
+        inline bool
+        operator!=(const _ExtPtr_allocator<_Up>& __rarg)
+        { return _M_real_alloc != __rarg._M_getUnderlyingImp(); }
+
+      inline bool
+      operator!=(const _ExtPtr_allocator& __rarg)
+      { return _M_real_alloc != __rarg._M_real_alloc; }
+
+      template<typename _Up>
+        inline friend void
+        swap(_ExtPtr_allocator<_Up>&, _ExtPtr_allocator<_Up>&);
+
+      // A method specific to this implementation.
+      const std::allocator<_Tp>&
+      _M_getUnderlyingImp() const
+      { return _M_real_alloc; }
+
+    private:
+      std::allocator<_Tp>  _M_real_alloc;
+    };
+
+  // _ExtPtr_allocator<void> specialization.
+  template<>
+    class _ExtPtr_allocator<void>
+    {
+    public:
+      typedef std::size_t      size_type;
+      typedef std::ptrdiff_t   difference_type;
+      typedef void             value_type;
+
+      // Note the non-standard pointer types
+      typedef _Pointer_adapter<_Relative_pointer_impl<void> >       pointer;
+      typedef _Pointer_adapter<_Relative_pointer_impl<const void> >
+                                                              const_pointer;
+
+      template<typename _Up>
+        struct rebind
+        { typedef _ExtPtr_allocator<_Up> other; };
+
+    private:
+      std::allocator<void>  _M_real_alloc;
+    };
+
+  template<typename _Tp>
+    inline void
+    swap(_ExtPtr_allocator<_Tp>& __larg, _ExtPtr_allocator<_Tp>& __rarg)
+    {
+      std::allocator<_Tp> __tmp( __rarg._M_real_alloc );
+      __rarg._M_real_alloc = __larg._M_real_alloc;
+      __larg._M_real_alloc = __tmp;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _EXTPTR_ALLOCATOR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/functional b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/functional
new file mode 100644
index 000000000..7e8acdfb4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/functional
@@ -0,0 +1,427 @@
+// Functional extensions -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/functional
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _EXT_FUNCTIONAL
+#define _EXT_FUNCTIONAL 1
+
+#pragma GCC system_header
+
+#include <functional>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::unary_function;
+  using std::binary_function;
+  using std::mem_fun1_t;
+  using std::const_mem_fun1_t;
+  using std::mem_fun1_ref_t;
+  using std::const_mem_fun1_ref_t;
+
+  /** The @c identity_element functions are not part of the C++
+   *  standard; SGI provided them as an extension.  Its argument is an
+   *  operation, and its return value is the identity element for that
+   *  operation.  It is overloaded for addition and multiplication,
+   *  and you can overload it for your own nefarious operations.
+   *
+   *  @addtogroup SGIextensions
+   *  @{
+   */
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Tp>
+    inline _Tp
+    identity_element(std::plus<_Tp>)
+    { return _Tp(0); }
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Tp>
+    inline _Tp
+    identity_element(std::multiplies<_Tp>)
+    { return _Tp(1); }
+  /** @}  */
+  
+  /** As an extension to the binders, SGI provided composition functors and
+   *  wrapper functions to aid in their creation.  The @c unary_compose
+   *  functor is constructed from two functions/functors, @c f and @c g.
+   *  Calling @c operator() with a single argument @c x returns @c f(g(x)).
+   *  The function @c compose1 takes the two functions and constructs a
+   *  @c unary_compose variable for you.
+   *
+   *  @c binary_compose is constructed from three functors, @c f, @c g1,
+   *  and @c g2.  Its @c operator() returns @c f(g1(x),g2(x)).  The function
+   *  @compose2 takes f, g1, and g2, and constructs the @c binary_compose
+   *  instance for you.  For example, if @c f returns an int, then
+   *  \code
+   *  int answer = (compose2(f,g1,g2))(x);
+   *  \endcode
+   *  is equivalent to
+   *  \code
+   *  int temp1 = g1(x);
+   *  int temp2 = g2(x);
+   *  int answer = f(temp1,temp2);
+   *  \endcode
+   *  But the first form is more compact, and can be passed around as a
+   *  functor to other algorithms.
+   *
+   *  @addtogroup SGIextensions
+   *  @{
+   */
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Operation1, class _Operation2>
+    class unary_compose
+    : public unary_function<typename _Operation2::argument_type,
+			    typename _Operation1::result_type>
+    {
+    protected:
+      _Operation1 _M_fn1;
+      _Operation2 _M_fn2;
+
+    public:
+      unary_compose(const _Operation1& __x, const _Operation2& __y)
+      : _M_fn1(__x), _M_fn2(__y) {}
+
+      typename _Operation1::result_type
+      operator()(const typename _Operation2::argument_type& __x) const
+      { return _M_fn1(_M_fn2(__x)); }
+    };
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Operation1, class _Operation2>
+    inline unary_compose<_Operation1, _Operation2>
+    compose1(const _Operation1& __fn1, const _Operation2& __fn2)
+    { return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); }
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Operation1, class _Operation2, class _Operation3>
+    class binary_compose
+    : public unary_function<typename _Operation2::argument_type,
+			    typename _Operation1::result_type>
+    {
+    protected:
+      _Operation1 _M_fn1;
+      _Operation2 _M_fn2;
+      _Operation3 _M_fn3;
+      
+    public:
+      binary_compose(const _Operation1& __x, const _Operation2& __y,
+		     const _Operation3& __z)
+      : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
+
+      typename _Operation1::result_type
+      operator()(const typename _Operation2::argument_type& __x) const
+      { return _M_fn1(_M_fn2(__x), _M_fn3(__x)); }
+    };
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Operation1, class _Operation2, class _Operation3>
+    inline binary_compose<_Operation1, _Operation2, _Operation3>
+    compose2(const _Operation1& __fn1, const _Operation2& __fn2,
+	     const _Operation3& __fn3)
+    { return binary_compose<_Operation1, _Operation2, _Operation3>
+	(__fn1, __fn2, __fn3); }
+  /** @}  */
+
+  /** As an extension, SGI provided a functor called @c identity.  When a
+   *  functor is required but no operations are desired, this can be used as a
+   *  pass-through.  Its @c operator() returns its argument unchanged.
+   *
+   *  @addtogroup SGIextensions
+   */
+  template <class _Tp>
+    struct identity : public std::_Identity<_Tp> {};
+
+  /** @c select1st and @c select2nd are extensions provided by SGI.  Their
+   *  @c operator()s
+   *  take a @c std::pair as an argument, and return either the first member
+   *  or the second member, respectively.  They can be used (especially with
+   *  the composition functors) to @a strip data from a sequence before
+   *  performing the remainder of an algorithm.
+   *
+   *  @addtogroup SGIextensions
+   *  @{
+   */
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Pair>
+    struct select1st : public std::_Select1st<_Pair> {};
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Pair>
+    struct select2nd : public std::_Select2nd<_Pair> {};
+  /** @}  */
+
+  // extension documented next
+  template <class _Arg1, class _Arg2>
+    struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1>
+    {
+      _Arg1
+      operator()(const _Arg1& __x, const _Arg2&) const
+      { return __x; }
+    };
+
+  template <class _Arg1, class _Arg2>
+    struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2>
+    {
+      _Arg2
+      operator()(const _Arg1&, const _Arg2& __y) const
+      { return __y; }
+    };
+
+  /** The @c operator() of the @c project1st functor takes two arbitrary
+   *  arguments and returns the first one, while @c project2nd returns the
+   *  second one.  They are extensions provided by SGI.
+   *
+   *  @addtogroup SGIextensions
+   *  @{
+   */
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Arg1, class _Arg2>
+    struct project1st : public _Project1st<_Arg1, _Arg2> {};
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Arg1, class _Arg2>
+    struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
+  /** @}  */
+
+  // extension documented next
+  template <class _Result>
+    struct _Constant_void_fun
+    {
+      typedef _Result result_type;
+      result_type _M_val;
+
+      _Constant_void_fun(const result_type& __v) : _M_val(__v) {}
+
+      const result_type&
+      operator()() const
+      { return _M_val; }
+    };
+
+  template <class _Result, class _Argument>
+    struct _Constant_unary_fun
+    {
+      typedef _Argument argument_type;
+      typedef  _Result  result_type;
+      result_type _M_val;
+      
+      _Constant_unary_fun(const result_type& __v) : _M_val(__v) {}
+
+      const result_type&
+      operator()(const _Argument&) const
+      { return _M_val; }
+    };
+
+  template <class _Result, class _Arg1, class _Arg2>
+    struct _Constant_binary_fun
+    {
+      typedef  _Arg1   first_argument_type;
+      typedef  _Arg2   second_argument_type;
+      typedef  _Result result_type;
+      _Result _M_val;
+
+      _Constant_binary_fun(const _Result& __v) : _M_val(__v) {}
+      
+      const result_type&
+      operator()(const _Arg1&, const _Arg2&) const
+      { return _M_val; }
+    };
+
+  /** These three functors are each constructed from a single arbitrary
+   *  variable/value.  Later, their @c operator()s completely ignore any
+   *  arguments passed, and return the stored value.
+   *  - @c constant_void_fun's @c operator() takes no arguments
+   *  - @c constant_unary_fun's @c operator() takes one argument (ignored)
+   *  - @c constant_binary_fun's @c operator() takes two arguments (ignored)
+   *
+   *  The helper creator functions @c constant0, @c constant1, and
+   *  @c constant2 each take a @a result argument and construct variables of
+   *  the appropriate functor type.
+   *
+   *  @addtogroup SGIextensions
+   *  @{
+   */
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result>
+    struct constant_void_fun
+    : public _Constant_void_fun<_Result>
+    {
+      constant_void_fun(const _Result& __v)
+      : _Constant_void_fun<_Result>(__v) {}
+    };
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result, class _Argument = _Result>
+    struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument>
+    {
+      constant_unary_fun(const _Result& __v)
+      : _Constant_unary_fun<_Result, _Argument>(__v) {}
+    };
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result, class _Arg1 = _Result, class _Arg2 = _Arg1>
+    struct constant_binary_fun
+    : public _Constant_binary_fun<_Result, _Arg1, _Arg2>
+    {
+      constant_binary_fun(const _Result& __v)
+      : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {}
+    };
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result>
+    inline constant_void_fun<_Result>
+    constant0(const _Result& __val)
+    { return constant_void_fun<_Result>(__val); }
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result>
+    inline constant_unary_fun<_Result, _Result>
+    constant1(const _Result& __val)
+    { return constant_unary_fun<_Result, _Result>(__val); }
+
+  /// An \link SGIextensions SGI extension \endlink.
+  template <class _Result>
+    inline constant_binary_fun<_Result,_Result,_Result>
+    constant2(const _Result& __val)
+    { return constant_binary_fun<_Result, _Result, _Result>(__val); }
+  /** @}  */
+
+  /** The @c subtractive_rng class is documented on
+   *  <a href="http://www.sgi.com/tech/stl/">SGI's site</a>.
+   *  Note that this code assumes that @c int is 32 bits.
+   *
+   *  @ingroup SGIextensions
+   */
+  class subtractive_rng
+  : public unary_function<unsigned int, unsigned int>
+  {
+  private:
+    unsigned int _M_table[55];
+    size_t _M_index1;
+    size_t _M_index2;
+
+  public:
+    /// Returns a number less than the argument.
+    unsigned int
+    operator()(unsigned int __limit)
+    {
+      _M_index1 = (_M_index1 + 1) % 55;
+      _M_index2 = (_M_index2 + 1) % 55;
+      _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
+      return _M_table[_M_index1] % __limit;
+    }
+
+    void
+    _M_initialize(unsigned int __seed)
+    {
+      unsigned int __k = 1;
+      _M_table[54] = __seed;
+      size_t __i;
+      for (__i = 0; __i < 54; __i++)
+	{
+	  size_t __ii = (21 * (__i + 1) % 55) - 1;
+	  _M_table[__ii] = __k;
+	  __k = __seed - __k;
+	  __seed = _M_table[__ii];
+	}
+      for (int __loop = 0; __loop < 4; __loop++)
+	{
+	  for (__i = 0; __i < 55; __i++)
+            _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
+	}
+      _M_index1 = 0;
+      _M_index2 = 31;
+    }
+
+    /// Ctor allowing you to initialize the seed.
+    subtractive_rng(unsigned int __seed)
+    { _M_initialize(__seed); }
+
+    /// Default ctor; initializes its state with some number you don't see.
+    subtractive_rng()
+    { _M_initialize(161803398u); }
+  };
+
+  // Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref,
+  // provided for backward compatibility, they are no longer part of
+  // the C++ standard.
+  
+  template <class _Ret, class _Tp, class _Arg>
+    inline mem_fun1_t<_Ret, _Tp, _Arg>
+    mem_fun1(_Ret (_Tp::*__f)(_Arg))
+    { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+  template <class _Ret, class _Tp, class _Arg>
+    inline const_mem_fun1_t<_Ret, _Tp, _Arg>
+    mem_fun1(_Ret (_Tp::*__f)(_Arg) const)
+    { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+  template <class _Ret, class _Tp, class _Arg>
+    inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
+    mem_fun1_ref(_Ret (_Tp::*__f)(_Arg))
+    { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+  template <class _Ret, class _Tp, class _Arg>
+    inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
+    mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const)
+    { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/iterator b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/iterator
new file mode 100644
index 000000000..3e8f438ad
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/iterator
@@ -0,0 +1,116 @@
+// HP/SGI iterator extensions -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/iterator
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _EXT_ITERATOR
+#define _EXT_ITERATOR 1
+
+#pragma GCC system_header
+
+#include <bits/concept_check.h>
+#include <iterator>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // There are two signatures for distance.  In addition to the one
+  // taking two iterators and returning a result, there is another
+  // taking two iterators and a reference-to-result variable, and
+  // returning nothing.  The latter seems to be an SGI extension.
+  // -- pedwards
+  template<typename _InputIterator, typename _Distance>
+    inline void
+    __distance(_InputIterator __first, _InputIterator __last,
+	       _Distance& __n, std::input_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
+      while (__first != __last)
+	{
+	  ++__first;
+	  ++__n;
+	}
+    }
+
+  template<typename _RandomAccessIterator, typename _Distance>
+    inline void
+    __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
+	       _Distance& __n, std::random_access_iterator_tag)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_RandomAccessIteratorConcept<
+				  _RandomAccessIterator>)
+      __n += __last - __first;
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _InputIterator, typename _Distance>
+    inline void
+    distance(_InputIterator __first, _InputIterator __last,
+             _Distance& __n)
+    {
+      // concept requirements -- taken care of in __distance
+      __distance(__first, __last, __n, std::__iterator_category(__first));
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/malloc_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/malloc_allocator.h
new file mode 100644
index 000000000..3aa994d9f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/malloc_allocator.h
@@ -0,0 +1,137 @@
+// Allocator that wraps "C" malloc -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/malloc_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _MALLOC_ALLOCATOR_H
+#define _MALLOC_ALLOCATOR_H 1
+
+#include <cstdlib>
+#include <new>
+#include <bits/functexcept.h>
+#include <bits/move.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+
+  /**
+   *  @brief  An allocator that uses malloc.
+   *  @ingroup allocators
+   *
+   *  This is precisely the allocator defined in the C++ Standard. 
+   *    - all allocation calls malloc
+   *    - all deallocation calls free
+   */
+  template<typename _Tp>
+    class malloc_allocator
+    {
+    public:
+      typedef size_t     size_type;
+      typedef ptrdiff_t  difference_type;
+      typedef _Tp*       pointer;
+      typedef const _Tp* const_pointer;
+      typedef _Tp&       reference;
+      typedef const _Tp& const_reference;
+      typedef _Tp        value_type;
+
+      template<typename _Tp1>
+        struct rebind
+        { typedef malloc_allocator<_Tp1> other; };
+
+      malloc_allocator() throw() { }
+
+      malloc_allocator(const malloc_allocator&) throw() { }
+
+      template<typename _Tp1>
+        malloc_allocator(const malloc_allocator<_Tp1>&) throw() { }
+
+      ~malloc_allocator() throw() { }
+
+      pointer
+      address(reference __x) const { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const { return std::__addressof(__x); }
+
+      // NB: __n is permitted to be 0.  The C++ standard says nothing
+      // about what the return value is when __n == 0.
+      pointer
+      allocate(size_type __n, const void* = 0)
+      {
+	if (__n > this->max_size())
+	  std::__throw_bad_alloc();
+
+	pointer __ret = static_cast<_Tp*>(std::malloc(__n * sizeof(_Tp)));
+	if (!__ret)
+	  std::__throw_bad_alloc();
+	return __ret;
+      }
+
+      // __p is not permitted to be a null pointer.
+      void
+      deallocate(pointer __p, size_type)
+      { std::free(static_cast<void*>(__p)); }
+
+      size_type
+      max_size() const throw() 
+      { return size_t(-1) / sizeof(_Tp); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_] allocator::construct
+      void 
+      construct(pointer __p, const _Tp& __val) 
+      { ::new((void *)__p) value_type(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args) 
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p) { __p->~_Tp(); }
+    };
+
+  template<typename _Tp>
+    inline bool
+    operator==(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&)
+    { return true; }
+  
+  template<typename _Tp>
+    inline bool
+    operator!=(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&)
+    { return false; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/memory b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/memory
new file mode 100644
index 000000000..ddcfe22b5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/memory
@@ -0,0 +1,198 @@
+// Memory extensions -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/memory
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset).
+ */
+
+#ifndef _EXT_MEMORY
+#define _EXT_MEMORY 1
+
+#pragma GCC system_header
+
+#include <memory>
+#include <bits/stl_tempbuf.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::ptrdiff_t;
+  using std::pair;
+  using std::__iterator_category;
+  using std::_Temporary_buffer;
+
+  template<typename _InputIter, typename _Size, typename _ForwardIter>
+    pair<_InputIter, _ForwardIter>
+    __uninitialized_copy_n(_InputIter __first, _Size __count,
+			   _ForwardIter __result, std::input_iterator_tag)
+    {
+      _ForwardIter __cur = __result;
+      __try
+	{
+	  for (; __count > 0 ; --__count, ++__first, ++__cur)
+	    std::_Construct(&*__cur, *__first);
+	  return pair<_InputIter, _ForwardIter>(__first, __cur);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __cur);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _RandomAccessIter, typename _Size, typename _ForwardIter>
+    inline pair<_RandomAccessIter, _ForwardIter>
+    __uninitialized_copy_n(_RandomAccessIter __first, _Size __count,
+			   _ForwardIter __result,
+			   std::random_access_iterator_tag)
+    {
+      _RandomAccessIter __last = __first + __count;
+      return (pair<_RandomAccessIter, _ForwardIter>
+	      (__last, std::uninitialized_copy(__first, __last, __result)));
+    }
+
+  template<typename _InputIter, typename _Size, typename _ForwardIter>
+    inline pair<_InputIter, _ForwardIter>
+    __uninitialized_copy_n(_InputIter __first, _Size __count,
+			   _ForwardIter __result)
+    { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result,
+					       __iterator_category(__first)); }
+
+  /**
+   *  @brief Copies the range [first,last) into result.
+   *  @param  first  An input iterator.
+   *  @param  last   An input iterator.
+   *  @param  result An output iterator.
+   *  @return   result + (first - last)
+   *  @ingroup SGIextensions
+   *
+   *  Like copy(), but does not require an initialized output range.
+  */
+  template<typename _InputIter, typename _Size, typename _ForwardIter>
+    inline pair<_InputIter, _ForwardIter>
+    uninitialized_copy_n(_InputIter __first, _Size __count,
+			 _ForwardIter __result)
+    { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result,
+					       __iterator_category(__first)); }
+
+
+  // An alternative version of uninitialized_copy_n that constructs
+  // and destroys objects with a user-provided allocator.
+  template<typename _InputIter, typename _Size, typename _ForwardIter,
+           typename _Allocator>
+    pair<_InputIter, _ForwardIter>
+    __uninitialized_copy_n_a(_InputIter __first, _Size __count,
+			     _ForwardIter __result,
+			     _Allocator __alloc)
+    {
+      _ForwardIter __cur = __result;
+      __try
+	{
+	  for (; __count > 0 ; --__count, ++__first, ++__cur)
+	    __alloc.construct(&*__cur, *__first);
+	  return pair<_InputIter, _ForwardIter>(__first, __cur);
+	}
+      __catch(...)
+	{
+	  std::_Destroy(__result, __cur, __alloc);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _InputIter, typename _Size, typename _ForwardIter,
+           typename _Tp>
+    inline pair<_InputIter, _ForwardIter>
+    __uninitialized_copy_n_a(_InputIter __first, _Size __count,
+			     _ForwardIter __result,
+			     std::allocator<_Tp>)
+    {
+      return __gnu_cxx::uninitialized_copy_n(__first, __count, __result);
+    }
+
+  /**
+   *  This class provides similar behavior and semantics of the standard
+   *  functions get_temporary_buffer() and return_temporary_buffer(), but
+   *  encapsulated in a type vaguely resembling a standard container.
+   *
+   *  By default, a temporary_buffer<Iter> stores space for objects of
+   *  whatever type the Iter iterator points to.  It is constructed from a
+   *  typical [first,last) range, and provides the begin(), end(), size()
+   *  functions, as well as requested_size().  For non-trivial types, copies
+   *  of *first will be used to initialize the storage.
+   *
+   *  @c malloc is used to obtain underlying storage.
+   *
+   *  Like get_temporary_buffer(), not all the requested memory may be
+   *  available.  Ideally, the created buffer will be large enough to hold a
+   *  copy of [first,last), but if size() is less than requested_size(),
+   *  then this didn't happen.
+   *
+   *  @ingroup SGIextensions
+  */
+  template <class _ForwardIterator, class _Tp
+	    = typename std::iterator_traits<_ForwardIterator>::value_type >
+    struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp>
+    {
+      /// Requests storage large enough to hold a copy of [first,last).
+      temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
+      : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) { }
+      
+      /// Destroys objects and frees storage.
+      ~temporary_buffer() { }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/mt_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/mt_allocator.h
new file mode 100644
index 000000000..91eac24f2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/mt_allocator.h
@@ -0,0 +1,754 @@
+// MT-optimized allocator -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/mt_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _MT_ALLOCATOR_H
+#define _MT_ALLOCATOR_H 1
+
+#include <new>
+#include <cstdlib>
+#include <bits/functexcept.h>
+#include <ext/atomicity.h>
+#include <bits/move.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+
+  typedef void (*__destroy_handler)(void*);
+
+  /// Base class for pool object.
+  struct __pool_base
+  {
+    // Using short int as type for the binmap implies we are never
+    // caching blocks larger than 32768 with this allocator.
+    typedef unsigned short int _Binmap_type;
+
+    // Variables used to configure the behavior of the allocator,
+    // assigned and explained in detail below.
+    struct _Tune
+     {
+      // Compile time constants for the default _Tune values.
+      enum { _S_align = 8 };
+      enum { _S_max_bytes = 128 };
+      enum { _S_min_bin = 8 };
+      enum { _S_chunk_size = 4096 - 4 * sizeof(void*) };
+      enum { _S_max_threads = 4096 };
+      enum { _S_freelist_headroom = 10 };
+
+      // Alignment needed.
+      // NB: In any case must be >= sizeof(_Block_record), that
+      // is 4 on 32 bit machines and 8 on 64 bit machines.
+      size_t	_M_align;
+      
+      // Allocation requests (after round-up to power of 2) below
+      // this value will be handled by the allocator. A raw new/
+      // call will be used for requests larger than this value.
+      // NB: Must be much smaller than _M_chunk_size and in any
+      // case <= 32768.
+      size_t	_M_max_bytes; 
+
+      // Size in bytes of the smallest bin.
+      // NB: Must be a power of 2 and >= _M_align (and of course
+      // much smaller than _M_max_bytes).
+      size_t	_M_min_bin;
+
+      // In order to avoid fragmenting and minimize the number of
+      // new() calls we always request new memory using this
+      // value. Based on previous discussions on the libstdc++
+      // mailing list we have chosen the value below.
+      // See http://gcc.gnu.org/ml/libstdc++/2001-07/msg00077.html
+      // NB: At least one order of magnitude > _M_max_bytes. 
+      size_t	_M_chunk_size;
+
+      // The maximum number of supported threads. For
+      // single-threaded operation, use one. Maximum values will
+      // vary depending on details of the underlying system. (For
+      // instance, Linux 2.4.18 reports 4070 in
+      // /proc/sys/kernel/threads-max, while Linux 2.6.6 reports
+      // 65534)
+      size_t 	_M_max_threads;
+
+      // Each time a deallocation occurs in a threaded application
+      // we make sure that there are no more than
+      // _M_freelist_headroom % of used memory on the freelist. If
+      // the number of additional records is more than
+      // _M_freelist_headroom % of the freelist, we move these
+      // records back to the global pool.
+      size_t 	_M_freelist_headroom;
+      
+      // Set to true forces all allocations to use new().
+      bool 	_M_force_new; 
+      
+      explicit
+      _Tune()
+      : _M_align(_S_align), _M_max_bytes(_S_max_bytes), _M_min_bin(_S_min_bin),
+      _M_chunk_size(_S_chunk_size), _M_max_threads(_S_max_threads), 
+      _M_freelist_headroom(_S_freelist_headroom), 
+      _M_force_new(std::getenv("GLIBCXX_FORCE_NEW") ? true : false)
+      { }
+
+      explicit
+      _Tune(size_t __align, size_t __maxb, size_t __minbin, size_t __chunk, 
+	    size_t __maxthreads, size_t __headroom, bool __force) 
+      : _M_align(__align), _M_max_bytes(__maxb), _M_min_bin(__minbin),
+      _M_chunk_size(__chunk), _M_max_threads(__maxthreads),
+      _M_freelist_headroom(__headroom), _M_force_new(__force)
+      { }
+    };
+    
+    struct _Block_address
+    {
+      void* 			_M_initial;
+      _Block_address* 		_M_next;
+    };
+    
+    const _Tune&
+    _M_get_options() const
+    { return _M_options; }
+
+    void
+    _M_set_options(_Tune __t)
+    { 
+      if (!_M_init)
+	_M_options = __t;
+    }
+
+    bool
+    _M_check_threshold(size_t __bytes)
+    { return __bytes > _M_options._M_max_bytes || _M_options._M_force_new; }
+
+    size_t
+    _M_get_binmap(size_t __bytes)
+    { return _M_binmap[__bytes]; }
+
+    size_t
+    _M_get_align()
+    { return _M_options._M_align; }
+
+    explicit 
+    __pool_base() 
+    : _M_options(_Tune()), _M_binmap(0), _M_init(false) { }
+
+    explicit 
+    __pool_base(const _Tune& __options)
+    : _M_options(__options), _M_binmap(0), _M_init(false) { }
+
+  private:
+    explicit 
+    __pool_base(const __pool_base&);
+
+    __pool_base&
+    operator=(const __pool_base&);
+
+  protected:
+    // Configuration options.
+    _Tune 	       		_M_options;
+    
+    _Binmap_type* 		_M_binmap;
+
+    // Configuration of the pool object via _M_options can happen
+    // after construction but before initialization. After
+    // initialization is complete, this variable is set to true.
+    bool 			_M_init;
+  };
+
+
+  /**
+   *  @brief  Data describing the underlying memory pool, parameterized on
+   *  threading support.
+   */
+  template<bool _Thread>
+    class __pool;
+
+  /// Specialization for single thread.
+  template<>
+    class __pool<false> : public __pool_base
+    {
+    public:
+      union _Block_record
+      {
+	// Points to the block_record of the next free block.
+	_Block_record* 			_M_next;
+      };
+
+      struct _Bin_record
+      {
+	// An "array" of pointers to the first free block.
+	_Block_record**			_M_first;
+
+	// A list of the initial addresses of all allocated blocks.
+	_Block_address*		     	_M_address;
+      };
+      
+      void
+      _M_initialize_once()
+      {
+	if (__builtin_expect(_M_init == false, false))
+	  _M_initialize();
+      }
+
+      void
+      _M_destroy() throw();
+
+      char* 
+      _M_reserve_block(size_t __bytes, const size_t __thread_id);
+    
+      void
+      _M_reclaim_block(char* __p, size_t __bytes) throw ();
+    
+      size_t 
+      _M_get_thread_id() { return 0; }
+      
+      const _Bin_record&
+      _M_get_bin(size_t __which)
+      { return _M_bin[__which]; }
+      
+      void
+      _M_adjust_freelist(const _Bin_record&, _Block_record*, size_t)
+      { }
+
+      explicit __pool() 
+      : _M_bin(0), _M_bin_size(1) { }
+
+      explicit __pool(const __pool_base::_Tune& __tune) 
+      : __pool_base(__tune), _M_bin(0), _M_bin_size(1) { }
+
+    private:
+      // An "array" of bin_records each of which represents a specific
+      // power of 2 size. Memory to this "array" is allocated in
+      // _M_initialize().
+      _Bin_record*		 _M_bin;
+      
+      // Actual value calculated in _M_initialize().
+      size_t 	       	     	_M_bin_size;     
+
+      void
+      _M_initialize();
+  };
+ 
+#ifdef __GTHREADS
+  /// Specialization for thread enabled, via gthreads.h.
+  template<>
+    class __pool<true> : public __pool_base
+    {
+    public:
+      // Each requesting thread is assigned an id ranging from 1 to
+      // _S_max_threads. Thread id 0 is used as a global memory pool.
+      // In order to get constant performance on the thread assignment
+      // routine, we keep a list of free ids. When a thread first
+      // requests memory we remove the first record in this list and
+      // stores the address in a __gthread_key. When initializing the
+      // __gthread_key we specify a destructor. When this destructor
+      // (i.e. the thread dies) is called, we return the thread id to
+      // the front of this list.
+      struct _Thread_record
+      {
+	// Points to next free thread id record. NULL if last record in list.
+	_Thread_record*			_M_next;
+	
+	// Thread id ranging from 1 to _S_max_threads.
+	size_t                          _M_id;
+      };
+      
+      union _Block_record
+      {
+	// Points to the block_record of the next free block.
+	_Block_record*			_M_next;
+	
+	// The thread id of the thread which has requested this block.
+	size_t                          _M_thread_id;
+      };
+      
+      struct _Bin_record
+      {
+	// An "array" of pointers to the first free block for each
+	// thread id. Memory to this "array" is allocated in
+	// _S_initialize() for _S_max_threads + global pool 0.
+	_Block_record**			_M_first;
+	
+	// A list of the initial addresses of all allocated blocks.
+	_Block_address*		     	_M_address;
+
+	// An "array" of counters used to keep track of the amount of
+	// blocks that are on the freelist/used for each thread id.
+	// - Note that the second part of the allocated _M_used "array"
+	//   actually hosts (atomic) counters of reclaimed blocks:  in
+	//   _M_reserve_block and in _M_reclaim_block those numbers are
+	//   subtracted from the first ones to obtain the actual size
+	//   of the "working set" of the given thread.
+	// - Memory to these "arrays" is allocated in _S_initialize()
+	//   for _S_max_threads + global pool 0.
+	size_t*				_M_free;
+	size_t*			        _M_used;
+	
+	// Each bin has its own mutex which is used to ensure data
+	// integrity while changing "ownership" on a block.  The mutex
+	// is initialized in _S_initialize().
+	__gthread_mutex_t*              _M_mutex;
+      };
+      
+      // XXX GLIBCXX_ABI Deprecated
+      void
+      _M_initialize(__destroy_handler);
+
+      void
+      _M_initialize_once()
+      {
+	if (__builtin_expect(_M_init == false, false))
+	  _M_initialize();
+      }
+
+      void
+      _M_destroy() throw();
+
+      char* 
+      _M_reserve_block(size_t __bytes, const size_t __thread_id);
+    
+      void
+      _M_reclaim_block(char* __p, size_t __bytes) throw ();
+    
+      const _Bin_record&
+      _M_get_bin(size_t __which)
+      { return _M_bin[__which]; }
+      
+      void
+      _M_adjust_freelist(const _Bin_record& __bin, _Block_record* __block, 
+			 size_t __thread_id)
+      {
+	if (__gthread_active_p())
+	  {
+	    __block->_M_thread_id = __thread_id;
+	    --__bin._M_free[__thread_id];
+	    ++__bin._M_used[__thread_id];
+	  }
+      }
+
+      // XXX GLIBCXX_ABI Deprecated
+      _GLIBCXX_CONST void 
+      _M_destroy_thread_key(void*) throw ();
+
+      size_t 
+      _M_get_thread_id();
+
+      explicit __pool() 
+      : _M_bin(0), _M_bin_size(1), _M_thread_freelist(0) 
+      { }
+
+      explicit __pool(const __pool_base::_Tune& __tune) 
+      : __pool_base(__tune), _M_bin(0), _M_bin_size(1), 
+	_M_thread_freelist(0) 
+      { }
+
+    private:
+      // An "array" of bin_records each of which represents a specific
+      // power of 2 size. Memory to this "array" is allocated in
+      // _M_initialize().
+      _Bin_record*		_M_bin;
+
+      // Actual value calculated in _M_initialize().
+      size_t 	       	     	_M_bin_size;
+
+      _Thread_record* 		_M_thread_freelist;
+      void*			_M_thread_freelist_initial;
+
+      void
+      _M_initialize();
+    };
+#endif
+
+  template<template <bool> class _PoolTp, bool _Thread>
+    struct __common_pool
+    {
+      typedef _PoolTp<_Thread> 		pool_type;
+      
+      static pool_type&
+      _S_get_pool()
+      { 
+	static pool_type _S_pool;
+	return _S_pool;
+      }
+    };
+
+  template<template <bool> class _PoolTp, bool _Thread>
+    struct __common_pool_base;
+
+  template<template <bool> class _PoolTp>
+    struct __common_pool_base<_PoolTp, false> 
+    : public __common_pool<_PoolTp, false>
+    {
+      using  __common_pool<_PoolTp, false>::_S_get_pool;
+
+      static void
+      _S_initialize_once()
+      {
+	static bool __init;
+	if (__builtin_expect(__init == false, false))
+	  {
+	    _S_get_pool()._M_initialize_once(); 
+	    __init = true;
+	  }
+      }
+    };
+
+#ifdef __GTHREADS
+  template<template <bool> class _PoolTp>
+    struct __common_pool_base<_PoolTp, true>
+    : public __common_pool<_PoolTp, true>
+    {
+      using  __common_pool<_PoolTp, true>::_S_get_pool;
+      
+      static void
+      _S_initialize() 
+      { _S_get_pool()._M_initialize_once(); }
+
+      static void
+      _S_initialize_once()
+      { 
+	static bool __init;
+	if (__builtin_expect(__init == false, false))
+	  {
+	    if (__gthread_active_p())
+	      {
+		// On some platforms, __gthread_once_t is an aggregate.
+		static __gthread_once_t __once = __GTHREAD_ONCE_INIT;
+		__gthread_once(&__once, _S_initialize);
+	      }
+
+	    // Double check initialization. May be necessary on some
+	    // systems for proper construction when not compiling with
+	    // thread flags.
+	    _S_get_pool()._M_initialize_once(); 
+	    __init = true;
+	  }
+      }
+    };
+#endif
+
+  /// Policy for shared __pool objects.
+  template<template <bool> class _PoolTp, bool _Thread>
+    struct __common_pool_policy : public __common_pool_base<_PoolTp, _Thread>
+    {
+      template<typename _Tp1, template <bool> class _PoolTp1 = _PoolTp, 
+	       bool _Thread1 = _Thread>
+        struct _M_rebind
+        { typedef __common_pool_policy<_PoolTp1, _Thread1> other; };
+
+      using  __common_pool_base<_PoolTp, _Thread>::_S_get_pool;
+      using  __common_pool_base<_PoolTp, _Thread>::_S_initialize_once;
+  };
+ 
+
+  template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
+    struct __per_type_pool
+    {
+      typedef _Tp 			value_type;
+      typedef _PoolTp<_Thread> 		pool_type;
+      
+      static pool_type&
+      _S_get_pool()
+      { 
+	// Sane defaults for the _PoolTp.
+	typedef typename pool_type::_Block_record _Block_record;
+	const static size_t __a = (__alignof__(_Tp) >= sizeof(_Block_record)
+				   ? __alignof__(_Tp) : sizeof(_Block_record));
+
+	typedef typename __pool_base::_Tune _Tune;
+	static _Tune _S_tune(__a, sizeof(_Tp) * 64,
+			     sizeof(_Tp) * 2 >= __a ? sizeof(_Tp) * 2 : __a,
+			     sizeof(_Tp) * size_t(_Tune::_S_chunk_size),
+			     _Tune::_S_max_threads,
+			     _Tune::_S_freelist_headroom,
+			     std::getenv("GLIBCXX_FORCE_NEW") ? true : false);
+	static pool_type _S_pool(_S_tune);
+	return _S_pool;
+      }
+    };
+
+  template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
+    struct __per_type_pool_base;
+
+  template<typename _Tp, template <bool> class _PoolTp>
+    struct __per_type_pool_base<_Tp, _PoolTp, false> 
+    : public __per_type_pool<_Tp, _PoolTp, false> 
+    {
+      using  __per_type_pool<_Tp, _PoolTp, false>::_S_get_pool;
+
+      static void
+      _S_initialize_once()
+      {
+	static bool __init;
+	if (__builtin_expect(__init == false, false))
+	  {
+	    _S_get_pool()._M_initialize_once(); 
+	    __init = true;
+	  }
+      }
+    };
+
+ #ifdef __GTHREADS
+ template<typename _Tp, template <bool> class _PoolTp>
+    struct __per_type_pool_base<_Tp, _PoolTp, true> 
+    : public __per_type_pool<_Tp, _PoolTp, true> 
+    {
+      using  __per_type_pool<_Tp, _PoolTp, true>::_S_get_pool;
+
+      static void
+      _S_initialize() 
+      { _S_get_pool()._M_initialize_once(); }
+
+      static void
+      _S_initialize_once()
+      { 
+	static bool __init;
+	if (__builtin_expect(__init == false, false))
+	  {
+	    if (__gthread_active_p())
+	      {
+		// On some platforms, __gthread_once_t is an aggregate.
+		static __gthread_once_t __once = __GTHREAD_ONCE_INIT;
+		__gthread_once(&__once, _S_initialize);
+	      }
+
+	    // Double check initialization. May be necessary on some
+	    // systems for proper construction when not compiling with
+	    // thread flags.
+	    _S_get_pool()._M_initialize_once(); 
+	    __init = true;
+	  }
+      }
+    };
+#endif
+
+  /// Policy for individual __pool objects.
+  template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
+    struct __per_type_pool_policy 
+    : public __per_type_pool_base<_Tp, _PoolTp, _Thread>
+    {
+      template<typename _Tp1, template <bool> class _PoolTp1 = _PoolTp, 
+	       bool _Thread1 = _Thread>
+        struct _M_rebind
+        { typedef __per_type_pool_policy<_Tp1, _PoolTp1, _Thread1> other; };
+
+      using  __per_type_pool_base<_Tp, _PoolTp, _Thread>::_S_get_pool;
+      using  __per_type_pool_base<_Tp, _PoolTp, _Thread>::_S_initialize_once;
+  };
+
+
+  /// Base class for _Tp dependent member functions.
+  template<typename _Tp>
+    class __mt_alloc_base 
+    {
+    public:
+      typedef size_t                    size_type;
+      typedef ptrdiff_t                 difference_type;
+      typedef _Tp*                      pointer;
+      typedef const _Tp*                const_pointer;
+      typedef _Tp&                      reference;
+      typedef const _Tp&                const_reference;
+      typedef _Tp                       value_type;
+
+      pointer
+      address(reference __x) const
+      { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const
+      { return std::__addressof(__x); }
+
+      size_type
+      max_size() const throw() 
+      { return size_t(-1) / sizeof(_Tp); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_] allocator::construct
+      void 
+      construct(pointer __p, const _Tp& __val) 
+      { ::new((void *)__p) _Tp(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p) { __p->~_Tp(); }
+    };
+
+#ifdef __GTHREADS
+#define __thread_default true
+#else
+#define __thread_default false
+#endif
+
+  /**
+   *  @brief  This is a fixed size (power of 2) allocator which - when
+   *  compiled with thread support - will maintain one freelist per
+   *  size per thread plus a @a global one. Steps are taken to limit
+   *  the per thread freelist sizes (by returning excess back to
+   *  the @a global list).
+   *  @ingroup allocators
+   *
+   *  Further details:
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch32.html
+   */
+  template<typename _Tp, 
+	   typename _Poolp = __common_pool_policy<__pool, __thread_default> >
+    class __mt_alloc : public __mt_alloc_base<_Tp>
+    {
+    public:
+      typedef size_t                    	size_type;
+      typedef ptrdiff_t                 	difference_type;
+      typedef _Tp*                      	pointer;
+      typedef const _Tp*                	const_pointer;
+      typedef _Tp&                      	reference;
+      typedef const _Tp&                	const_reference;
+      typedef _Tp                       	value_type;
+      typedef _Poolp      			__policy_type;
+      typedef typename _Poolp::pool_type	__pool_type;
+
+      template<typename _Tp1, typename _Poolp1 = _Poolp>
+        struct rebind
+        { 
+	  typedef typename _Poolp1::template _M_rebind<_Tp1>::other pol_type;
+	  typedef __mt_alloc<_Tp1, pol_type> other;
+	};
+
+      __mt_alloc() throw() { }
+
+      __mt_alloc(const __mt_alloc&) throw() { }
+
+      template<typename _Tp1, typename _Poolp1>
+        __mt_alloc(const __mt_alloc<_Tp1, _Poolp1>&) throw() { }
+
+      ~__mt_alloc() throw() { }
+
+      pointer
+      allocate(size_type __n, const void* = 0);
+
+      void
+      deallocate(pointer __p, size_type __n);
+
+      const __pool_base::_Tune
+      _M_get_options()
+      { 
+	// Return a copy, not a reference, for external consumption.
+	return __policy_type::_S_get_pool()._M_get_options();
+      }
+      
+      void
+      _M_set_options(__pool_base::_Tune __t)
+      { __policy_type::_S_get_pool()._M_set_options(__t); }
+    };
+
+  template<typename _Tp, typename _Poolp>
+    typename __mt_alloc<_Tp, _Poolp>::pointer
+    __mt_alloc<_Tp, _Poolp>::
+    allocate(size_type __n, const void*)
+    {
+      if (__n > this->max_size())
+	std::__throw_bad_alloc();
+
+      __policy_type::_S_initialize_once();
+
+      // Requests larger than _M_max_bytes are handled by operator
+      // new/delete directly.
+      __pool_type& __pool = __policy_type::_S_get_pool();
+      const size_t __bytes = __n * sizeof(_Tp);
+      if (__pool._M_check_threshold(__bytes))
+	{
+	  void* __ret = ::operator new(__bytes);
+	  return static_cast<_Tp*>(__ret);
+	}
+      
+      // Round up to power of 2 and figure out which bin to use.
+      const size_t __which = __pool._M_get_binmap(__bytes);
+      const size_t __thread_id = __pool._M_get_thread_id();
+      
+      // Find out if we have blocks on our freelist.  If so, go ahead
+      // and use them directly without having to lock anything.
+      char* __c;
+      typedef typename __pool_type::_Bin_record _Bin_record;
+      const _Bin_record& __bin = __pool._M_get_bin(__which);
+      if (__bin._M_first[__thread_id])
+	{
+	  // Already reserved.
+	  typedef typename __pool_type::_Block_record _Block_record;
+	  _Block_record* __block = __bin._M_first[__thread_id];
+	  __bin._M_first[__thread_id] = __block->_M_next;
+	  
+	  __pool._M_adjust_freelist(__bin, __block, __thread_id);
+	  __c = reinterpret_cast<char*>(__block) + __pool._M_get_align();
+	}
+      else
+	{
+	  // Null, reserve.
+	  __c = __pool._M_reserve_block(__bytes, __thread_id);
+	}
+      return static_cast<_Tp*>(static_cast<void*>(__c));
+    }
+  
+  template<typename _Tp, typename _Poolp>
+    void
+    __mt_alloc<_Tp, _Poolp>::
+    deallocate(pointer __p, size_type __n)
+    {
+      if (__builtin_expect(__p != 0, true))
+	{
+	  // Requests larger than _M_max_bytes are handled by
+	  // operators new/delete directly.
+	  __pool_type& __pool = __policy_type::_S_get_pool();
+	  const size_t __bytes = __n * sizeof(_Tp);
+	  if (__pool._M_check_threshold(__bytes))
+	    ::operator delete(__p);
+	  else
+	    __pool._M_reclaim_block(reinterpret_cast<char*>(__p), __bytes);
+	}
+    }
+  
+  template<typename _Tp, typename _Poolp>
+    inline bool
+    operator==(const __mt_alloc<_Tp, _Poolp>&, const __mt_alloc<_Tp, _Poolp>&)
+    { return true; }
+  
+  template<typename _Tp, typename _Poolp>
+    inline bool
+    operator!=(const __mt_alloc<_Tp, _Poolp>&, const __mt_alloc<_Tp, _Poolp>&)
+    { return false; }
+
+#undef __thread_default
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/new_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/new_allocator.h
new file mode 100644
index 000000000..35d5cdccd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/new_allocator.h
@@ -0,0 +1,134 @@
+// Allocator that wraps operator new -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/new_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _NEW_ALLOCATOR_H
+#define _NEW_ALLOCATOR_H 1
+
+#include <bits/c++config.h>
+#include <new>
+#include <bits/functexcept.h>
+#include <bits/move.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+
+  /**
+   *  @brief  An allocator that uses global new, as per [20.4].
+   *  @ingroup allocators
+   *
+   *  This is precisely the allocator defined in the C++ Standard. 
+   *    - all allocation calls operator new
+   *    - all deallocation calls operator delete
+   */
+  template<typename _Tp>
+    class new_allocator
+    {
+    public:
+      typedef size_t     size_type;
+      typedef ptrdiff_t  difference_type;
+      typedef _Tp*       pointer;
+      typedef const _Tp* const_pointer;
+      typedef _Tp&       reference;
+      typedef const _Tp& const_reference;
+      typedef _Tp        value_type;
+
+      template<typename _Tp1>
+        struct rebind
+        { typedef new_allocator<_Tp1> other; };
+
+      new_allocator() throw() { }
+
+      new_allocator(const new_allocator&) throw() { }
+
+      template<typename _Tp1>
+        new_allocator(const new_allocator<_Tp1>&) throw() { }
+
+      ~new_allocator() throw() { }
+
+      pointer
+      address(reference __x) const { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const { return std::__addressof(__x); }
+
+      // NB: __n is permitted to be 0.  The C++ standard says nothing
+      // about what the return value is when __n == 0.
+      pointer
+      allocate(size_type __n, const void* = 0)
+      { 
+	if (__n > this->max_size())
+	  std::__throw_bad_alloc();
+
+	return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
+      }
+
+      // __p is not permitted to be a null pointer.
+      void
+      deallocate(pointer __p, size_type)
+      { ::operator delete(__p); }
+
+      size_type
+      max_size() const throw() 
+      { return size_t(-1) / sizeof(_Tp); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_] allocator::construct
+      void 
+      construct(pointer __p, const _Tp& __val) 
+      { ::new((void *)__p) _Tp(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p) { __p->~_Tp(); }
+    };
+
+  template<typename _Tp>
+    inline bool
+    operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+    { return true; }
+  
+  template<typename _Tp>
+    inline bool
+    operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+    { return false; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric
new file mode 100644
index 000000000..b389177f3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric
@@ -0,0 +1,152 @@
+// Numeric extensions -*- C++ -*-
+
+// Copyright (C) 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/numeric
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset). 
+ */
+
+#ifndef _EXT_NUMERIC
+#define _EXT_NUMERIC 1
+
+#pragma GCC system_header
+
+#include <bits/concept_check.h>
+#include <numeric>
+
+#include <ext/functional> // For identity_element
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Returns __x ** __n, where __n >= 0.  _Note that "multiplication"
+  // is required to be associative, but not necessarily commutative.
+  template<typename _Tp, typename _Integer, typename _MonoidOperation>
+    _Tp
+    __power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op)
+    {
+      if (__n == 0)
+	return identity_element(__monoid_op);
+      else
+	{
+	  while ((__n & 1) == 0)
+	    {
+	      __n >>= 1;
+	      __x = __monoid_op(__x, __x);
+	    }
+
+	  _Tp __result = __x;
+	  __n >>= 1;
+	  while (__n != 0)
+	    {
+	      __x = __monoid_op(__x, __x);
+	      if ((__n & 1) != 0)
+		__result = __monoid_op(__result, __x);
+	      __n >>= 1;
+	    }
+	  return __result;
+	}
+    }
+
+  template<typename _Tp, typename _Integer>
+    inline _Tp
+    __power(_Tp __x, _Integer __n)
+    { return __power(__x, __n, std::multiplies<_Tp>()); }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  // Alias for the internal name __power.  Note that power is an extension,
+  // not part of the C++ standard.
+  template<typename _Tp, typename _Integer, typename _MonoidOperation>
+    inline _Tp
+    power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op)
+    { return __power(__x, __n, __monoid_op); }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  template<typename _Tp, typename _Integer>
+    inline _Tp
+    power(_Tp __x, _Integer __n)
+    { return __power(__x, __n); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::iota;
+#else
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+  */
+  // iota is not part of the C++ standard.  It is an extension.
+  template<typename _ForwardIter, typename _Tp>
+    void
+    iota(_ForwardIter __first, _ForwardIter __last, _Tp __value)
+    {
+      // concept requirements
+      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
+      __glibcxx_function_requires(_ConvertibleConcept<_Tp,
+	    typename std::iterator_traits<_ForwardIter>::value_type>)
+
+      while (__first != __last)
+	*__first++ = __value++;
+    }
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric_traits.h
new file mode 100644
index 000000000..e84e29821
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/numeric_traits.h
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/numeric_traits.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _EXT_NUMERIC_TRAITS
+#define _EXT_NUMERIC_TRAITS 1
+
+#pragma GCC system_header
+
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Compile time constants for builtin types.
+  // Sadly std::numeric_limits member functions cannot be used for this.
+#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
+#define __glibcxx_digits(_Tp) \
+  (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
+
+#define __glibcxx_min(_Tp) \
+  (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
+
+#define __glibcxx_max(_Tp) \
+  (__glibcxx_signed(_Tp) ? \
+   (((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0)
+
+  template<typename _Value>
+    struct __numeric_traits_integer
+    {
+      // Only integers for initialization of member constant.
+      static const _Value __min = __glibcxx_min(_Value);
+      static const _Value __max = __glibcxx_max(_Value);
+
+      // NB: these two also available in std::numeric_limits as compile
+      // time constants, but <limits> is big and we avoid including it.
+      static const bool __is_signed = __glibcxx_signed(_Value);
+      static const int __digits = __glibcxx_digits(_Value);      
+    };
+
+  template<typename _Value>
+    const _Value __numeric_traits_integer<_Value>::__min;
+
+  template<typename _Value>
+    const _Value __numeric_traits_integer<_Value>::__max;
+
+  template<typename _Value>
+    const bool __numeric_traits_integer<_Value>::__is_signed;
+
+  template<typename _Value>
+    const int __numeric_traits_integer<_Value>::__digits;
+
+#undef __glibcxx_signed
+#undef __glibcxx_digits
+#undef __glibcxx_min
+#undef __glibcxx_max
+
+#define __glibcxx_floating(_Tp, _Fval, _Dval, _LDval) \
+  (std::__are_same<_Tp, float>::__value ? _Fval \
+   : std::__are_same<_Tp, double>::__value ? _Dval : _LDval)
+
+#define __glibcxx_max_digits10(_Tp) \
+  (2 + __glibcxx_floating(_Tp, __FLT_MANT_DIG__, __DBL_MANT_DIG__, \
+			  __LDBL_MANT_DIG__) * 643L / 2136)
+
+#define __glibcxx_digits10(_Tp) \
+  __glibcxx_floating(_Tp, __FLT_DIG__, __DBL_DIG__, __LDBL_DIG__)
+
+#define __glibcxx_max_exponent10(_Tp) \
+  __glibcxx_floating(_Tp, __FLT_MAX_10_EXP__, __DBL_MAX_10_EXP__, \
+		     __LDBL_MAX_10_EXP__)
+
+  template<typename _Value>
+    struct __numeric_traits_floating
+    {
+      // Only floating point types. See N1822. 
+      static const int __max_digits10 = __glibcxx_max_digits10(_Value);
+
+      // See above comment...
+      static const bool __is_signed = true;
+      static const int __digits10 = __glibcxx_digits10(_Value);
+      static const int __max_exponent10 = __glibcxx_max_exponent10(_Value);
+    };
+
+  template<typename _Value>
+    const int __numeric_traits_floating<_Value>::__max_digits10;
+
+  template<typename _Value>
+    const bool __numeric_traits_floating<_Value>::__is_signed;
+
+  template<typename _Value>
+    const int __numeric_traits_floating<_Value>::__digits10;
+
+  template<typename _Value>
+    const int __numeric_traits_floating<_Value>::__max_exponent10;
+
+  template<typename _Value>
+    struct __numeric_traits
+    : public __conditional_type<std::__is_integer<_Value>::__value,
+				__numeric_traits_integer<_Value>,
+				__numeric_traits_floating<_Value> >::__type
+    { };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#undef __glibcxx_floating
+#undef __glibcxx_max_digits10
+#undef __glibcxx_digits10
+#undef __glibcxx_max_exponent10
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/assoc_container.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/assoc_container.hpp
new file mode 100644
index 000000000..9cec3b72c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/assoc_container.hpp
@@ -0,0 +1,700 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file assoc_container.hpp
+ * Contains associative containers.
+ */
+
+#ifndef PB_DS_ASSOC_CNTNR_HPP
+#define PB_DS_ASSOC_CNTNR_HPP
+
+#include <bits/c++config.h>
+#include <ext/typelist.h>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/standard_policies.hpp>
+#include <ext/pb_ds/detail/container_base_dispatch.hpp>
+#include <ext/pb_ds/detail/basic_tree_policy/traits.hpp>
+
+namespace __gnu_pbds
+{
+  /** @defgroup pbds Policy-Based Data Structures
+   *  @ingroup extensions
+   *
+   *  This is a library of policy-based elementary data structures:
+   *  associative containers and priority queues. It is designed for
+   *  high-performance, flexibility, semantic safety, and conformance
+   *  to the corresponding containers in std (except for some points
+   *  where it differs by design).
+   *
+   *  For details, see: 
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
+   *
+   *  @{
+   */
+ 
+#define PB_DS_BASE_C_DEC \
+  detail::container_base_dispatch<Key, Mapped, Tag, Policy_Tl, Allocator>::type
+
+  /// An abstract basic associative container.
+  template<typename Key, 
+	   typename Mapped, 
+	   typename Tag, 
+	   typename Policy_Tl, 
+	   typename Allocator>
+  class container_base : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef typename PB_DS_BASE_C_DEC 			base_type;
+
+  public:
+    typedef Tag 					container_category;
+    typedef Allocator 					allocator_type;
+    typedef typename allocator_type::size_type 		size_type;
+    typedef typename allocator_type::difference_type 	difference_type;
+
+    // key_type
+    typedef typename allocator_type::template rebind<Key>::other::value_type key_type;
+    typedef typename allocator_type::template rebind<key_type>::other key_rebind;
+    typedef typename key_rebind::reference 		key_reference;
+    typedef typename key_rebind::const_reference 	const_key_reference;
+    typedef typename key_rebind::pointer 		key_pointer;
+    typedef typename key_rebind::const_pointer 		const_key_pointer;
+
+    // mapped_type
+    typedef Mapped 					mapped_type;
+    typedef typename allocator_type::template rebind<mapped_type>::other mapped_rebind;
+    typedef typename mapped_rebind::reference 		mapped_reference;
+    typedef typename mapped_rebind::const_reference	const_mapped_reference;
+    typedef typename mapped_rebind::pointer 		mapped_pointer;
+    typedef typename mapped_rebind::const_pointer 	const_mapped_pointer;
+
+    // value_type
+    typedef typename base_type::value_type 		value_type;
+    typedef typename allocator_type::template rebind<value_type>::other value_rebind;
+    typedef typename value_rebind::reference		reference;
+    typedef typename value_rebind::const_reference 	const_reference;
+    typedef typename value_rebind::pointer 		pointer;
+    typedef typename value_rebind::const_pointer 	const_pointer;
+
+    // iterators
+    typedef typename base_type::iterator 		iterator;
+    typedef typename base_type::const_iterator 		const_iterator;
+    typedef typename base_type::point_iterator 		point_iterator;
+    typedef typename base_type::const_point_iterator 	const_point_iterator;
+
+    virtual
+    ~container_base() { }
+
+  protected:
+#define PB_DS_CLASS_NAME 		container_base
+#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
+#undef PB_DS_CLASS_NAME
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+
+#define PB_DS_BASE_C_DEC \
+  container_base<Key, Mapped, Tag, typename __gnu_cxx::typelist::append< \
+  typename __gnu_cxx::typelist::create4<Hash_Fn, Eq_Fn, Resize_Policy, detail::integral_constant<int, Store_Hash> >::type, Policy_TL>::type, Allocator>
+
+  /// An abstract basic hash-based associative container.
+  template<typename Key,
+	   typename Mapped,
+	   typename Hash_Fn,
+	   typename Eq_Fn,
+	   typename Resize_Policy,
+	   bool Store_Hash,
+	   typename Tag,
+	   typename Policy_TL,
+	   typename Allocator>
+  class basic_hash_table : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC base_type;
+
+  public:
+    virtual
+    ~basic_hash_table() { }
+
+  protected:
+#define PB_DS_CLASS_NAME basic_hash_table
+#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
+#undef PB_DS_CLASS_NAME
+
+  private:
+    basic_hash_table& 
+    operator=(const base_type&);
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+
+#define PB_DS_BASE_C_DEC \
+  basic_hash_table<Key, Mapped,	Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
+		   cc_hash_tag,	\
+	  typename __gnu_cxx::typelist::create1<Comb_Hash_Fn>::type, Allocator>
+
+  /// A concrete collision-chaining hash-based associative container.
+  template<typename Key,
+	   typename Mapped,
+	   typename Hash_Fn = typename detail::default_hash_fn<Key>::type,
+	   typename Eq_Fn = typename detail::default_eq_fn<Key>::type,
+	   typename Comb_Hash_Fn = detail::default_comb_hash_fn::type,
+	   typename Resize_Policy = typename detail::default_resize_policy<Comb_Hash_Fn>::type,
+	   bool Store_Hash = detail::default_store_hash,
+	   typename Allocator = std::allocator<char> >
+  class cc_hash_table :  public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC 	base_type;
+
+  public:
+    typedef Hash_Fn 		hash_fn;
+    typedef Eq_Fn 		eq_fn;
+    typedef Resize_Policy 	resize_policy;
+    typedef Comb_Hash_Fn 	comb_hash_fn;
+
+    // Default constructor.
+    cc_hash_table() { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the Hash_Fn object of the container object.
+    cc_hash_table(const hash_fn& h) 
+    : base_type(h) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, and
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object.
+    cc_hash_table(const hash_fn& h, const eq_fn& e)
+    : base_type(h, e) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, r_eq_fn
+    // will be copied by the eq_fn object of the container object, and
+    // r_comb_hash_fn will be copied by the comb_hash_fn object of the
+    // container object.
+    cc_hash_table(const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch)
+    : base_type(h, e, ch) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, r_eq_fn
+    // will be copied by the eq_fn object of the container object,
+    // r_comb_hash_fn will be copied by the comb_hash_fn object of the
+    // container object, and r_resize_policy will be copied by the
+    // resize_policy object of the container object.
+    cc_hash_table(const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch, 
+		  const resize_policy& rp)    
+    : base_type(h, e, ch, rp) { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    cc_hash_table(It first, It last)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object.
+    template<typename It>
+    cc_hash_table(It first, It last, const hash_fn& h)
+    : base_type(h)
+    { copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // and r_eq_fn will be copied by the eq_fn object of the container
+    // object.
+    template<typename It>
+    cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e)
+    : base_type(h, e)
+    { copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object, and r_comb_hash_fn will be copied by the comb_hash_fn
+    // object of the container object.
+    template<typename It>
+    cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
+		  const comb_hash_fn& ch)
+    : base_type(h, e, ch)
+    { copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object, r_comb_hash_fn will be copied by the comb_hash_fn
+    // object of the container object, and r_resize_policy will be
+    // copied by the resize_policy object of the container object.
+    template<typename It>
+    cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, 
+		  const comb_hash_fn& ch, const resize_policy& rp)
+    : base_type(h, e, ch, rp)
+    { copy_from_range(first, last); }
+
+    cc_hash_table(const cc_hash_table& other)
+    : base_type((const base_type&)other)
+    { }
+
+    virtual
+    ~cc_hash_table() { }
+
+    cc_hash_table& 
+    operator=(const cc_hash_table& other)
+    {
+      if (this != &other)
+	{
+	  cc_hash_table tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(cc_hash_table& other)
+    { base_type::swap(other); }
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+
+#define PB_DS_BASE_C_DEC \
+  basic_hash_table<Key, Mapped,	Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
+		   gp_hash_tag, \
+		   typename __gnu_cxx::typelist::create2<Comb_Probe_Fn, Probe_Fn>::type, Allocator>
+
+  /// A concrete general-probing hash-based associative container.
+  template<typename Key,
+	   typename Mapped,
+	   typename Hash_Fn = typename detail::default_hash_fn<Key>::type,
+	   typename Eq_Fn = typename detail::default_eq_fn<Key>::type,
+	   typename Comb_Probe_Fn = detail::default_comb_hash_fn::type,
+	   typename Probe_Fn = typename detail::default_probe_fn<Comb_Probe_Fn>::type,
+	   typename Resize_Policy = typename detail::default_resize_policy<Comb_Probe_Fn>::type,
+	   bool Store_Hash = detail::default_store_hash,
+	   typename Allocator = std::allocator<char> >
+  class gp_hash_table : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC 	base_type;
+
+  public:
+    typedef Hash_Fn 		hash_fn;
+    typedef Eq_Fn 		eq_fn;
+    typedef Comb_Probe_Fn	comb_probe_fn;
+    typedef Probe_Fn 		probe_fn;
+    typedef Resize_Policy 	resize_policy;
+
+    // Default constructor.
+    gp_hash_table() { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object.
+    gp_hash_table(const hash_fn& h)
+    : base_type(h) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, and
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object.
+    gp_hash_table(const hash_fn& h, const eq_fn& e)
+    : base_type(h, e) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, r_eq_fn
+    // will be copied by the eq_fn object of the container object, and
+    // r_comb_probe_fn will be copied by the comb_probe_fn object of
+    // the container object.
+    gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp)
+    : base_type(h, e, cp) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, r_eq_fn
+    // will be copied by the eq_fn object of the container object,
+    // r_comb_probe_fn will be copied by the comb_probe_fn object of
+    // the container object, and r_probe_fn will be copied by the
+    // probe_fn object of the container object.
+    gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp, 
+		  const probe_fn& p)
+    : base_type(h, e, cp, p) { }
+
+    // Constructor taking some policy objects. r_hash_fn will be
+    // copied by the hash_fn object of the container object, r_eq_fn
+    // will be copied by the eq_fn object of the container object,
+    // r_comb_probe_fn will be copied by the comb_probe_fn object of
+    // the container object, r_probe_fn will be copied by the probe_fn
+    // object of the container object, and r_resize_policy will be
+    // copied by the Resize_Policy object of the container object.
+    gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp, 
+		  const probe_fn& p, const resize_policy& rp)
+    : base_type(h, e, cp, p, rp) { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    gp_hash_table(It first, It last)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object.
+    template<typename It>
+    gp_hash_table(It first, It last, const hash_fn& h)
+    : base_type(h)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // and r_eq_fn will be copied by the eq_fn object of the container
+    // object.
+    template<typename It>
+    gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e)
+    : base_type(h, e)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object, and r_comb_probe_fn will be copied by the comb_probe_fn
+    // object of the container object.
+    template<typename It>
+    gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, 
+		  const comb_probe_fn& cp)
+    : base_type(h, e, cp)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object, r_comb_probe_fn will be copied by the comb_probe_fn
+    // object of the container object, and r_probe_fn will be copied
+    // by the probe_fn object of the container object.
+    template<typename It>
+    gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, 
+		  const comb_probe_fn& cp, const probe_fn& p)
+    : base_type(h, e, cp, p)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object. r_hash_fn
+    // will be copied by the hash_fn object of the container object,
+    // r_eq_fn will be copied by the eq_fn object of the container
+    // object, r_comb_probe_fn will be copied by the comb_probe_fn
+    // object of the container object, r_probe_fn will be copied by
+    // the probe_fn object of the container object, and
+    // r_resize_policy will be copied by the resize_policy object of
+    // the container object.
+    template<typename It>
+    gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, 
+		  const comb_probe_fn& cp, const probe_fn& p, 
+		  const resize_policy& rp)
+    : base_type(h, e, cp, p, rp)
+    { base_type::copy_from_range(first, last); }
+
+    gp_hash_table(const gp_hash_table& other)
+    : base_type((const base_type&)other)
+    { }
+
+    virtual
+    ~gp_hash_table() { }
+
+    gp_hash_table& 
+    operator=(const gp_hash_table& other)
+    {
+      if (this != &other)
+	{
+	  gp_hash_table tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(gp_hash_table& other)
+    { base_type::swap(other); }
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+
+#define PB_DS_BASE_C_DEC \
+  container_base<Key, Mapped, Tag, Policy_Tl, Allocator>
+
+  /// An abstract basic tree-like (tree, trie) associative container.
+  template<typename Key, typename Mapped, typename Tag, 
+	   typename Node_Update, typename Policy_Tl, typename Allocator>
+  class basic_tree : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC 	base_type;
+
+  public:
+    typedef Node_Update 	node_update;
+
+    virtual
+    ~basic_tree() { }
+
+  protected:
+#define PB_DS_CLASS_NAME 		basic_tree
+#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
+#undef PB_DS_CLASS_NAME
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+
+#define PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC \
+  detail::tree_traits<Key, Mapped,Cmp_Fn,Node_Update,Tag, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+  basic_tree<Key,Mapped,Tag,typename PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC::node_update, \
+	     typename __gnu_cxx::typelist::create2<Cmp_Fn, PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC >::type, Allocator>
+
+  /// A concrete basic tree-based associative container.
+  template<typename Key, typename Mapped, typename Cmp_Fn = std::less<Key>,
+	   typename Tag = rb_tree_tag,
+	   template<typename Const_Node_Iterator, typename Node_Iterator, typename Cmp_Fn_, typename Allocator_>
+  class Node_Update = __gnu_pbds::null_tree_node_update,
+	   typename Allocator = std::allocator<char> >
+  class tree : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC 	base_type;
+
+  public:
+    // Comparison functor type.
+    typedef Cmp_Fn 		cmp_fn;
+
+    tree() { }
+
+    // Constructor taking some policy objects. r_cmp_fn will be copied
+    // by the Cmp_Fn object of the container object.
+    tree(const cmp_fn& c)
+    : base_type(c) { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    tree(It first, It last)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects The value_types between first_it and
+    // last_it will be inserted into the container object. r_cmp_fn
+    // will be copied by the cmp_fn object of the container object.
+    template<typename It>
+    tree(It first, It last, const cmp_fn& c)
+      : base_type(c)
+    { base_type::copy_from_range(first, last); }
+
+    tree(const tree& other)
+    : base_type((const base_type&)other) { }
+
+    virtual
+    ~tree() { }
+
+    tree& 
+    operator=(const tree& other)
+    {
+      if (this != &other)
+	{
+	  tree tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(tree& other)
+    { base_type::swap(other); }
+  };
+
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC
+
+
+#define PB_DS_TRIE_NODE_AND_ITS_TRAITS \
+  detail::trie_traits<Key,Mapped,E_Access_Traits,Node_Update,Tag,Allocator>
+
+#define PB_DS_BASE_C_DEC \
+  basic_tree<Key,Mapped,Tag, typename PB_DS_TRIE_NODE_AND_ITS_TRAITS::node_update, \
+	     typename __gnu_cxx::typelist::create2<E_Access_Traits, PB_DS_TRIE_NODE_AND_ITS_TRAITS >::type, Allocator>
+
+  /// A concrete basic trie-based associative container.
+  template<typename Key,
+	   typename Mapped,
+	   typename E_Access_Traits = typename detail::default_trie_e_access_traits<Key>::type,
+	   typename Tag = pat_trie_tag,
+	   template<typename Const_Node_Iterator,
+		    typename Node_Iterator,
+		    typename E_Access_Traits_,
+		    typename Allocator_>
+  class Node_Update = null_trie_node_update,
+	   typename Allocator = std::allocator<char> >
+  class trie : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC base_type;
+
+  public:
+    // Element access traits type.
+    typedef E_Access_Traits e_access_traits;
+
+    trie() { }
+
+    // Constructor taking some policy objects. r_e_access_traits will
+    // be copied by the E_Access_Traits object of the container
+    // object.
+    trie(const e_access_traits& t)
+    : base_type(t) { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    trie(It first, It last)
+    { base_type::copy_from_range(first, last); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects. The value_types between first_it and
+    // last_it will be inserted into the container object.
+    template<typename It>
+    trie(It first, It last, const e_access_traits& t)
+    : base_type(t)
+    { base_type::copy_from_range(first, last); }
+
+    trie(const trie& other)
+    : base_type((const base_type&)other) { }
+
+    virtual
+    ~trie() { }
+
+    trie& 
+    operator=(const trie& other)
+    {
+      if (this != &other)
+	{
+	  trie tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(trie& other)
+    { base_type::swap(other); }
+  };
+
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_TRIE_NODE_AND_ITS_TRAITS
+
+
+#define PB_DS_BASE_C_DEC \
+  container_base<Key, Mapped, list_update_tag, \
+		 typename __gnu_cxx::typelist::create2<Eq_Fn, Update_Policy>::type, Allocator>
+
+  /// A list-update based associative container.
+  template<typename Key,
+	   typename Mapped,
+	   class Eq_Fn = typename detail::default_eq_fn<Key>::type,
+	   class Update_Policy = detail::default_update_policy::type,
+	   class Allocator = std::allocator<char> >
+  class list_update : public PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC 	base_type;
+
+  public:
+    typedef Eq_Fn 		eq_fn;
+    typedef Update_Policy 	update_policy;
+    typedef Allocator 		allocator;
+
+    list_update() { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    list_update(It first, It last)
+    { base_type::copy_from_range(first, last); }
+
+    list_update(const list_update& other)
+    : base_type((const base_type&)other) { }
+
+    virtual
+    ~list_update() { }
+
+    list_update& 
+    operator=(const list_update& other)
+    {
+      if (this !=& other)
+	{
+	  list_update tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(list_update& other)
+    { base_type::swap(other); }
+  };
+
+#undef PB_DS_BASE_C_DEC
+
+  // @} group pbds
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
new file mode 100644
index 000000000..0ca90dbc7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
@@ -0,0 +1,173 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file basic_tree_policy_base.hpp
+ * Contains a base class for tree_like policies.
+ */
+
+#ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP
+#define PB_DS_TREE_LIKE_POLICY_BASE_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_C_DEC						\
+    basic_tree_policy_base<						\
+							Const_Node_Iterator, \
+							Node_Iterator,	\
+							Allocator>
+
+    template<typename Const_Node_Iterator,
+	     typename Node_Iterator,
+	     typename Allocator>
+    struct basic_tree_policy_base
+    {
+    protected:
+      typedef typename Node_Iterator::value_type it_type;
+
+      typedef typename std::iterator_traits< it_type>::value_type value_type;
+
+      typedef typename value_type::first_type key_type;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	key_type>::type>::other::const_reference
+      const_key_reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::const_reference
+      const_reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::const_pointer
+      const_pointer;
+
+      static inline const_key_reference
+      extract_key(const_reference r_val)
+      {
+	return (r_val.first);
+      }
+
+      virtual it_type
+      end() = 0;
+
+      it_type
+      end_iterator() const
+      {
+	return (const_cast<PB_DS_CLASS_C_DEC* >(this)->end());
+      }
+
+      virtual
+      ~basic_tree_policy_base()
+      { }
+    };
+
+    template<typename Const_Node_Iterator, typename Allocator>
+    struct basic_tree_policy_base<
+      Const_Node_Iterator,
+      Const_Node_Iterator,
+      Allocator>
+    {
+    protected:
+      typedef typename Const_Node_Iterator::value_type it_type;
+
+      typedef typename std::iterator_traits< it_type>::value_type value_type;
+
+      typedef value_type key_type;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	key_type>::type>::other::const_reference
+      const_key_reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::const_reference
+      const_reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	value_type>::type>::other::const_pointer
+      const_pointer;
+
+      static inline const_key_reference
+      extract_key(const_reference r_val)
+      {
+	return (r_val);
+      }
+
+      virtual it_type
+      end() const = 0;
+
+      it_type
+      end_iterator() const
+      {
+	return (end());
+      }
+
+      virtual
+      ~basic_tree_policy_base()
+      { }
+    };
+
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
new file mode 100644
index 000000000..e600f2ca3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
@@ -0,0 +1,67 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file null_node_metadata.hpp
+ * Contains an implementation class for tree-like classes.
+ */
+
+#ifndef PB_DS_0_NODE_METADATA_HPP
+#define PB_DS_0_NODE_METADATA_HPP
+
+#include <ext/pb_ds/detail/types_traits.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, class Data, class Allocator>
+    struct dumconst_node_iterator
+    {
+    private:
+      typedef typename types_traits<Key, Data, Allocator, false>::pointer const_iterator;
+
+    public:
+      typedef const_iterator value_type;
+      typedef const_iterator const_reference;
+      typedef const_reference reference;
+    };
+
+    struct null_node_metadata
+    { };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp
new file mode 100644
index 000000000..b30829a81
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation class for tree-like classes.
+ */
+
+#ifndef PB_DS_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/traits.hpp>
+#include <ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp>
+#include <ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {    
+    template<typename Key,
+	     typename Data,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator>
+    class Node_Update,
+	     class Tag,
+	     class Allocator>
+    struct tree_traits;
+
+    template<typename Key,
+	     typename Data,
+	     class E_Access_Traits,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class E_Access_Traits_,
+		      class Allocator>
+    class Node_Update,
+	     class Tag,
+	     class Allocator>
+    struct trie_traits;
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#include <ext/pb_ds/detail/rb_tree_map_/traits.hpp>
+#include <ext/pb_ds/detail/splay_tree_/traits.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/traits.hpp>
+#include <ext/pb_ds/detail/pat_trie_/traits.hpp>
+
+#endif // #ifndef PB_DS_NODE_AND_IT_TRAITS_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_types.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_types.hpp
new file mode 100644
index 000000000..aac1397dd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/basic_types.hpp
@@ -0,0 +1,211 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file basic_types.hpp
+ * Contains basic types used by containers.
+ */
+
+#ifndef PB_DS_BASIC_TYPES_HPP
+#define PB_DS_BASIC_TYPES_HPP
+
+#include <algorithm>
+#include <utility>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, typename Mapped, typename Allocator, bool Store_Hash>
+    struct value_type_base;
+
+    /**
+     * Specialization of value_type_base for the case where the hash value
+     * is not stored alongside each value.
+     **/
+    template<typename Key, typename Mapped, typename Allocator>
+    struct value_type_base<Key, Mapped, Allocator, false>
+    {
+      typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator;
+      typedef typename mapped_type_allocator::value_type mapped_type;
+      typedef typename mapped_type_allocator::pointer mapped_pointer;
+      typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
+      typedef typename mapped_type_allocator::reference mapped_reference;
+      typedef typename mapped_type_allocator::const_reference const_mapped_reference;
+
+      typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator;
+      typedef typename value_type_allocator::value_type value_type;
+      typedef typename value_type_allocator::pointer pointer;
+      typedef typename value_type_allocator::const_pointer const_pointer;
+      typedef typename value_type_allocator::reference reference;
+      typedef typename value_type_allocator::const_reference const_reference;
+
+      struct stored_value_type
+      {
+	value_type m_value;
+      };
+    };
+
+    /**
+     * Specialization of value_type_base for the case where the hash value
+     * is stored alongside each value.
+     **/
+    template<typename Key, typename Mapped, typename Allocator>
+    struct value_type_base<Key, Mapped, Allocator, true>
+    {
+      typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator;
+      typedef typename mapped_type_allocator::value_type mapped_type;
+      typedef typename mapped_type_allocator::pointer mapped_pointer;
+      typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
+      typedef typename mapped_type_allocator::reference mapped_reference;
+      typedef typename mapped_type_allocator::const_reference const_mapped_reference;
+
+      typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator;
+      typedef typename value_type_allocator::value_type value_type;
+      typedef typename value_type_allocator::pointer pointer;
+      typedef typename value_type_allocator::const_pointer const_pointer;
+      typedef typename value_type_allocator::reference reference;
+      typedef typename value_type_allocator::const_reference const_reference;
+
+      struct stored_value_type
+      {
+	value_type m_value;
+	typename Allocator::size_type m_hash;
+      };
+    };
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    value_type_base<Key, null_mapped_type, Allocator, false>
+
+    /**
+     * Specialization of value_type_base for the case where the hash value
+     * is not stored alongside each value.
+     **/
+    template<typename Key, typename Allocator>
+    struct value_type_base<Key, null_mapped_type, Allocator, false>
+    {
+      typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator;
+      typedef typename mapped_type_allocator::value_type mapped_type;
+      typedef typename mapped_type_allocator::pointer mapped_pointer;
+      typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
+      typedef typename mapped_type_allocator::reference mapped_reference;
+      typedef typename mapped_type_allocator::const_reference const_mapped_reference;
+
+      typedef Key value_type;
+
+      typedef typename Allocator::template rebind<value_type>::other value_type_allocator;
+      typedef typename value_type_allocator::pointer pointer;
+      typedef typename value_type_allocator::const_pointer const_pointer;
+      typedef typename value_type_allocator::reference reference;
+      typedef typename value_type_allocator::const_reference const_reference;
+
+      struct stored_value_type
+      {
+	value_type m_value;
+      };
+
+      static null_mapped_type s_null_mapped;
+    };
+
+    PB_DS_CLASS_T_DEC
+    null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped;
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    value_type_base<Key, null_mapped_type, Allocator, true>
+
+    /**
+     * Specialization of value_type_base for the case where the hash value
+     * is stored alongside each value.
+     **/
+    template<typename Key, typename Allocator>
+    struct value_type_base<Key, null_mapped_type, Allocator, true>
+    {
+      typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator;
+      typedef typename mapped_type_allocator::value_type mapped_type;
+      typedef typename mapped_type_allocator::pointer mapped_pointer;
+      typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
+      typedef typename mapped_type_allocator::reference mapped_reference;
+      typedef typename mapped_type_allocator::const_reference const_mapped_reference;
+
+      typedef Key value_type;
+
+      typedef typename Allocator::template rebind<value_type>::other value_type_allocator;
+      typedef typename value_type_allocator::pointer pointer;
+      typedef typename value_type_allocator::const_pointer const_pointer;
+      typedef typename value_type_allocator::reference reference;
+      typedef typename value_type_allocator::const_reference const_reference;
+
+      struct stored_value_type
+      {
+	value_type m_value;
+	typename Allocator::size_type m_hash;
+      };
+
+      static null_mapped_type s_null_mapped;
+    };
+
+    PB_DS_CLASS_T_DEC
+    null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped;
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+    template<typename Key, typename Mapped>
+    struct no_throw_copies
+    {
+      typedef integral_constant<int, is_simple<Key>::value && is_simple<Mapped>::value> indicator;
+    };
+
+    template<typename Key>
+    struct no_throw_copies<Key, null_mapped_type>
+    {
+      typedef integral_constant<int, is_simple<Key>::value> indicator;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
new file mode 100644
index 000000000..ec836922a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
@@ -0,0 +1,497 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file bin_search_tree_.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+/*
+ * This implementation uses an idea from the SGI STL (using a @a header node
+ *    which is needed for efficient iteration).
+ */
+
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#include <ext/pb_ds/tree_policy.hpp>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/tree_trace_base.hpp>
+#include <utility>
+#include <functional>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC						\
+    template<typename Key, typename Mapped, class Cmp_Fn,		\
+	     class Node_And_It_Traits, class Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME			\
+    bin_search_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME			\
+    bin_search_tree_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC						\
+    PB_DS_CLASS_NAME<							\
+						Key,			\
+						Mapped,			\
+						Cmp_Fn,			\
+						Node_And_It_Traits,	\
+						Allocator>
+
+#define PB_DS_TYPES_TRAITS_C_DEC				\
+    types_traits<				\
+						Key,		\
+						Mapped,		\
+						Allocator,	\
+						false>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC					\
+    debug_map_base<Key,	eq_by_less<Key, Cmp_Fn>, \
+	      typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+#ifdef PB_DS_TREE_TRACE
+#define PB_DS_TREE_TRACE_BASE_C_DEC					\
+    tree_trace_base<							\
+									typename Node_And_It_Traits::const_node_iterator, \
+									typename Node_And_It_Traits::node_iterator, \
+									Cmp_Fn,	\
+									true, \
+									Allocator>
+#endif 
+
+    /**
+     * class description = "8i|\|4ree $34rc|-| 7r33 74813.">
+     **/
+    template<typename Key,
+	     typename Mapped,
+	     class Cmp_Fn,
+	     class Node_And_It_Traits,
+	     class Allocator>
+    class PB_DS_CLASS_NAME :
+#ifdef _GLIBCXX_DEBUG
+      public PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+#ifdef PB_DS_TREE_TRACE
+      public PB_DS_TREE_TRACE_BASE_C_DEC,
+#endif 
+      public Cmp_Fn,
+      public PB_DS_TYPES_TRAITS_C_DEC,
+      public Node_And_It_Traits::node_update
+    {
+
+    protected:
+      typedef
+      typename Allocator::template rebind<
+      typename Node_And_It_Traits::node>::other
+      node_allocator;
+
+      typedef typename node_allocator::value_type node;
+
+      typedef typename node_allocator::pointer node_pointer;
+
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+
+      typedef
+      typename Node_And_It_Traits::null_node_update_pointer
+      null_node_update_pointer;
+
+    private:
+      typedef cond_dealtor< node, Allocator> cond_dealtor_t;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_type key_type;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_pointer key_pointer;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::const_key_pointer
+      const_key_pointer;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_reference key_reference;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::const_key_reference
+      const_key_reference;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::mapped_type mapped_type;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::mapped_pointer
+      mapped_pointer;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_pointer
+      const_mapped_pointer;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::mapped_reference
+      mapped_reference;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_reference
+      const_mapped_reference;
+#endif 
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::value_type value_type;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::pointer pointer;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::const_pointer const_pointer;
+
+      typedef typename PB_DS_TYPES_TRAITS_C_DEC::reference reference;
+
+      typedef
+      typename PB_DS_TYPES_TRAITS_C_DEC::const_reference
+      const_reference;
+
+      typedef
+      typename Node_And_It_Traits::const_point_iterator
+      const_point_iterator;
+
+      typedef const_point_iterator const_iterator;
+
+      typedef typename Node_And_It_Traits::point_iterator point_iterator;
+
+      typedef point_iterator iterator;
+
+      typedef
+      typename Node_And_It_Traits::const_reverse_iterator
+      const_reverse_iterator;
+
+      typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator;
+
+      typedef
+      typename Node_And_It_Traits::const_node_iterator
+      const_node_iterator;
+
+      typedef typename Node_And_It_Traits::node_iterator node_iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+      typedef typename Node_And_It_Traits::node_update node_update;
+
+    public:
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn);
+
+      PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_update);
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~PB_DS_CLASS_NAME();
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      Cmp_Fn& 
+      get_cmp_fn();
+
+      const Cmp_Fn& 
+      get_cmp_fn() const;
+
+      inline point_iterator
+      lower_bound(const_key_reference r_key);
+
+      inline const_point_iterator
+      lower_bound(const_key_reference r_key) const;
+
+      inline point_iterator
+      upper_bound(const_key_reference r_key);
+
+      inline const_point_iterator
+      upper_bound(const_key_reference r_key) const;
+
+      inline point_iterator
+      find(const_key_reference r_key);
+
+      inline const_point_iterator
+      find(const_key_reference r_key) const;
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+      inline reverse_iterator
+      rbegin();
+
+      inline const_reverse_iterator
+      rbegin() const;
+
+      inline reverse_iterator
+      rend();
+
+      inline const_reverse_iterator
+      rend() const;
+
+      inline const_node_iterator
+      node_begin() const;
+
+      inline node_iterator
+      node_begin();
+
+      inline const_node_iterator
+      node_end() const;
+
+      inline node_iterator
+      node_end();
+
+      void
+      clear();
+
+    protected:
+
+      void
+      value_swap(PB_DS_CLASS_C_DEC& other);
+
+      void
+      initialize_min_max();
+
+      inline iterator
+      insert_imp_empty(const_reference r_value);
+
+      inline iterator
+      insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd);
+
+      inline node_pointer
+      get_new_node_for_leaf_insert(const_reference r_val, false_type);
+
+      inline node_pointer
+      get_new_node_for_leaf_insert(const_reference r_val, true_type);
+
+      inline void
+      actual_erase_node(node_pointer p_nd);
+
+      inline std::pair<node_pointer, bool>
+      erase(node_pointer p_nd);
+
+      inline void
+      update_min_max_for_erased_node(node_pointer p_nd);
+
+      static void
+      clear_imp(node_pointer p_nd);
+
+      inline std::pair<
+	point_iterator,
+	bool>
+      insert_leaf(const_reference r_value);
+
+      inline void
+      rotate_left(node_pointer p_x);
+
+      inline void
+      rotate_right(node_pointer p_y);
+
+      inline void
+      rotate_parent(node_pointer p_nd);
+
+      inline void
+      apply_update(node_pointer p_nd, null_node_update_pointer);
+
+      template<typename Node_Update_>
+      inline void
+      apply_update(node_pointer p_nd, Node_Update_* p_update);
+
+      inline void
+      update_to_top(node_pointer p_nd, null_node_update_pointer);
+
+      template<typename Node_Update_>
+      inline void
+      update_to_top(node_pointer p_nd, Node_Update_* p_update);
+
+      bool
+      join_prep(PB_DS_CLASS_C_DEC& other);
+
+      void
+      join_finish(PB_DS_CLASS_C_DEC& other);
+
+      bool
+      split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other);
+
+      void
+      split_finish(PB_DS_CLASS_C_DEC& other);
+
+      size_type
+      recursive_count(node_pointer p_nd) const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      structure_only_assert_valid() const;
+
+      void
+      assert_node_consistent(const node_pointer p_nd) const;
+#endif 
+
+    private:
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_iterators() const;
+
+      void
+      assert_consistent_with_debug_base() const;
+
+      void
+      assert_node_consistent_with_left(const node_pointer p_nd) const;
+
+      void
+      assert_node_consistent_with_right(const node_pointer p_nd) const;
+
+      void
+      assert_consistent_with_debug_base(const node_pointer p_nd) const;
+
+      void
+      assert_min() const;
+
+      void
+      assert_min_imp(const node_pointer p_nd) const;
+
+      void
+      assert_max() const;
+
+      void
+      assert_max_imp(const node_pointer p_nd) const;
+
+      void
+      assert_size() const;
+
+      typedef std::pair< const_pointer, const_pointer> node_consistent_t;
+
+      node_consistent_t
+      assert_node_consistent_(const node_pointer p_nd) const;
+#endif 
+
+      void
+      initialize();
+
+      node_pointer
+      recursive_copy_node(const node_pointer p_nd);
+
+    protected:
+      node_pointer m_p_head;
+
+      size_type m_size;
+
+      static node_allocator s_node_allocator;
+    };
+
+#include <ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+
+#undef PB_DS_CLASS_T_DEC
+
+#undef PB_DS_CLASS_NAME
+
+#undef PB_DS_TYPES_TRAITS_C_DEC
+
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+
+#ifdef PB_DS_TREE_TRACE
+#undef PB_DS_TREE_TRACE_BASE_C_DEC
+#endif 
+
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
new file mode 100644
index 000000000..370574c90
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_dtor_entry_dealtor.hpp
+ * Contains a binary tree container conditional deallocator
+ */
+
+class bin_search_tree_cond_dtor_entry_dealtor_
+{
+public:
+  inline
+  bin_search_tree_cond_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd),
+								m_no_action_dtor(false)
+  { }
+
+  inline void
+  set_no_action_dtor()
+  {
+    m_no_action_dtor = true;
+  }
+
+  inline
+  ~bin_search_tree_cond_dtor_entry_dealtor_()
+  {
+    if (m_no_action_dtor)
+      return;
+
+    typename Allocator::template rebind<Node>::other().
+      deallocate(m_p_nd, 1);
+  }
+
+protected:
+  node_pointer m_p_nd;
+
+  bool m_no_action_dtor;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
new file mode 100644
index 000000000..612ecebbe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
@@ -0,0 +1,81 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_key_dtor_entry_dealtor.hpp
+ * Contains a binary tree container conditional deallocator
+ */
+
+class bin_seach_tree_cond_key_dtor_entry_dealtor_
+{
+public:
+  inline
+  bin_seach_tree_cond_key_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd),
+								   m_no_action_dtor(false),
+								   m_key_destruct(false)
+  { }
+
+  inline void
+  set_no_action_dtor()
+  {
+    m_no_action_dtor = true;
+  }
+
+  inline void
+  set_key_destruct()
+  {
+    m_key_destruct = true;
+  }
+
+  inline
+  ~bin_seach_tree_cond_key_dtor_entry_dealtor_()
+  {
+    if (m_no_action_dtor)
+      return;
+
+    if (m_key_destruct)
+      m_p_nd->m_value.first.~Key();
+
+    bin_tree_base::s_alloc.deallocate(m_p_nd, 1);
+  }
+
+protected:
+  node_pointer m_p_nd;
+
+  bool m_no_action_dtor;
+
+  bool m_key_destruct;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..1aa2fd476
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,219 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_allocator
+PB_DS_CLASS_C_DEC::s_node_allocator;
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME() : m_p_head(s_node_allocator.allocate(1)), m_size(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
+  Cmp_Fn(r_cmp_fn), m_p_head(s_node_allocator.allocate(1)), m_size(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
+  Cmp_Fn(r_cmp_fn),
+  node_update(r_node_update),
+  m_p_head(s_node_allocator.allocate(1)),
+  m_size(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+#ifdef _GLIBCXX_DEBUG
+  debug_base(other),
+#endif 
+#ifdef PB_DS_TREE_TRACE
+  PB_DS_TREE_TRACE_BASE_C_DEC(other),
+#endif 
+  Cmp_Fn(other),
+  node_update(other),
+  m_p_head(s_node_allocator.allocate(1)),
+  m_size(0)
+{
+  initialize();
+  m_size = other.m_size;
+  _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
+
+    __try
+      {
+        m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent);
+        if (m_p_head->m_p_parent != 0)
+	  m_p_head->m_p_parent->m_p_parent = m_p_head;
+        m_size = other.m_size;
+        initialize_min_max();
+      }
+    __catch(...)
+      {
+        _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+	s_node_allocator.deallocate(m_p_head, 1);
+        __throw_exception_again;
+      }
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
+  value_swap(other);
+  std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+value_swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
+  std::swap(m_p_head, other.m_p_head);
+  std::swap(m_size, other.m_size);
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_CLASS_NAME()
+{
+  clear();
+  s_node_allocator.deallocate(m_p_head, 1);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{
+  m_p_head->m_p_parent = 0;
+  m_p_head->m_p_left = m_p_head;
+  m_p_head->m_p_right = m_p_head;
+  m_size = 0;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+recursive_copy_node(const node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return (0);
+
+  node_pointer p_ret = s_node_allocator.allocate(1);
+  __try
+    {
+      new (p_ret) node(*p_nd);
+    }
+  __catch(...)
+    {
+      s_node_allocator.deallocate(p_ret, 1);
+      __throw_exception_again;
+    }
+
+  p_ret->m_p_left = p_ret->m_p_right = 0;
+
+  __try
+    {
+      p_ret->m_p_left = recursive_copy_node(p_nd->m_p_left);
+      p_ret->m_p_right = recursive_copy_node(p_nd->m_p_right);
+    }
+  __catch(...)
+    {
+      clear_imp(p_ret);
+      __throw_exception_again;
+    }
+
+  if (p_ret->m_p_left != 0)
+    p_ret->m_p_left->m_p_parent = p_ret;
+
+  if (p_ret->m_p_right != 0)
+    p_ret->m_p_right->m_p_parent = p_ret;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret);)
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize_min_max()
+{
+  if (m_p_head->m_p_parent == 0)
+    {
+      m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
+      return;
+    }
+
+  {
+    node_pointer p_min = m_p_head->m_p_parent;
+    while (p_min->m_p_left != 0)
+      p_min = p_min->m_p_left;
+    m_p_head->m_p_left = p_min;
+  }
+
+  {
+    node_pointer p_max = m_p_head->m_p_parent;
+    while (p_max->m_p_right != 0)
+      p_max = p_max->m_p_right;
+    m_p_head->m_p_right = p_max;
+  }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
new file mode 100644
index 000000000..2d3001a2a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
@@ -0,0 +1,272 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  structure_only_assert_valid();
+  assert_consistent_with_debug_base();
+  assert_size();
+  assert_iterators();
+  if (m_p_head->m_p_parent == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_size == 0);
+    }
+  else
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+structure_only_assert_valid() const
+{
+  _GLIBCXX_DEBUG_ASSERT(m_p_head != 0);
+  if (m_p_head->m_p_parent == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head);
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head);
+    }
+  else
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent->m_p_parent == m_p_head);
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left != m_p_head);
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right != m_p_head);
+    }
+
+  if (m_p_head->m_p_parent != 0)
+    assert_node_consistent(m_p_head->m_p_parent);
+  assert_min();
+  assert_max();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent(const node_pointer p_nd) const
+{
+  assert_node_consistent_(p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_consistent_t
+PB_DS_CLASS_C_DEC::
+assert_node_consistent_(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    return (std::make_pair((const_pointer)0,(const_pointer)0));
+
+  assert_node_consistent_with_left(p_nd);
+  assert_node_consistent_with_right(p_nd);
+
+  const std::pair<const_pointer, const_pointer>
+    l_range = assert_node_consistent_(p_nd->m_p_left);
+
+  if (l_range.second != 0)
+    _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*l_range.second),
+					     PB_DS_V2F(p_nd->m_value)));
+
+  const std::pair<const_pointer, const_pointer>
+    r_range = assert_node_consistent_(p_nd->m_p_right);
+
+  if (r_range.first != 0)
+    _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value),
+					     PB_DS_V2F(*r_range.first)));
+
+  return (std::make_pair((l_range.first != 0)? l_range.first :& p_nd->m_value,(r_range.second != 0)? r_range.second :& p_nd->m_value));
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent_with_left(const node_pointer p_nd) const
+{
+  if (p_nd->m_p_left == 0)
+    return;
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left->m_p_parent == p_nd);
+  _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value),
+					    PB_DS_V2F(p_nd->m_p_left->m_value)));
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent_with_right(const node_pointer p_nd) const
+{
+  if (p_nd->m_p_right == 0)
+    return;
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right->m_p_parent == p_nd);
+  _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_p_right->m_value),
+				       PB_DS_V2F(p_nd->m_value)));
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_min() const
+{
+  assert_min_imp(m_p_head->m_p_parent);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_min_imp(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head);
+      return;
+    }
+
+  if (p_nd->m_p_left == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_left);
+      return;
+    }
+  assert_min_imp(p_nd->m_p_left);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_max() const
+{
+  assert_max_imp(m_p_head->m_p_parent);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_max_imp(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head);
+      return;
+    }
+
+  if (p_nd->m_p_right == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_right);
+      return;
+    }
+
+  assert_max_imp(p_nd->m_p_right);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_iterators() const
+{
+  size_type iterated_num = 0;
+  const_iterator prev_it = end();
+  for (const_iterator it = begin(); it != end(); ++it)
+    {
+      ++iterated_num;
+      _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)).m_p_nd == it.m_p_nd);
+      const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it));
+      --upper_bound_it;
+      _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == it.m_p_nd);
+
+      if (prev_it != end())
+	_GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*prev_it),
+						 PB_DS_V2F(*it)));
+      prev_it = it;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(iterated_num == m_size);
+  size_type reverse_iterated_num = 0;
+  const_reverse_iterator reverse_prev_it = rend();
+  for (const_reverse_iterator reverse_it = rbegin(); reverse_it != rend();
+       ++reverse_it)
+    {
+      ++reverse_iterated_num;
+      _GLIBCXX_DEBUG_ASSERT(lower_bound(
+				   PB_DS_V2F(*reverse_it)).m_p_nd == reverse_it.m_p_nd);
+
+      const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*reverse_it));
+      --upper_bound_it;
+      _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == reverse_it.m_p_nd);
+      if (reverse_prev_it != rend())
+	_GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(*reverse_prev_it),
+						  PB_DS_V2F(*reverse_it)));
+      reverse_prev_it = reverse_it;
+    }
+  _GLIBCXX_DEBUG_ASSERT(reverse_iterated_num == m_size);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_consistent_with_debug_base() const
+{
+  debug_base::check_size(m_size);
+  assert_consistent_with_debug_base(m_p_head->m_p_parent);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_consistent_with_debug_base(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    return;
+  debug_base::check_key_exists(PB_DS_V2F(p_nd->m_value));
+  assert_consistent_with_debug_base(p_nd->m_p_left);
+  assert_consistent_with_debug_base(p_nd->m_p_right);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_size() const
+{
+  _GLIBCXX_DEBUG_ASSERT(recursive_count(m_p_head->m_p_parent) == m_size);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
new file mode 100644
index 000000000..86a663ee6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
@@ -0,0 +1,120 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+actual_erase_node(node_pointer p_z)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+
+  _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
+
+  p_z->~node();
+
+  s_node_allocator.deallocate(p_z, 1);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_min_max_for_erased_node(node_pointer p_z)
+{
+  if (m_size == 1)
+    {
+      m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
+
+      return;
+    }
+
+  if (m_p_head->m_p_left == p_z)
+    {
+      iterator it(p_z);
+
+      ++it;
+
+      m_p_head->m_p_left = it.m_p_nd;
+    }
+  else if (m_p_head->m_p_right == p_z)
+    {
+      iterator it(p_z);
+
+      --it;
+
+      m_p_head->m_p_right = it.m_p_nd;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+    clear_imp(m_p_head->m_p_parent);
+
+  m_size = 0;
+
+  initialize();
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+
+    _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear_imp(node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return;
+
+  clear_imp(p_nd->m_p_left);
+
+  clear_imp(p_nd->m_p_right);
+
+  p_nd->~node();
+
+  s_node_allocator.deallocate(p_nd, 1);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
new file mode 100644
index 000000000..082c7f0f7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
@@ -0,0 +1,182 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+lower_bound(const_key_reference r_key) const
+{
+  node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (Cmp_Fn::operator()(
+			   PB_DS_V2F(p_nd->m_value),
+			   r_key))
+      p_nd = p_nd->m_p_right;
+    else
+      {
+	p_pot = p_nd;
+
+	p_nd = p_nd->m_p_left;
+      }
+
+  return (iterator(p_pot));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+lower_bound(const_key_reference r_key)
+{
+  node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (Cmp_Fn::operator()(
+			   PB_DS_V2F(p_nd->m_value),
+			   r_key))
+      p_nd = p_nd->m_p_right;
+    else
+      {
+	p_pot = p_nd;
+
+	p_nd = p_nd->m_p_left;
+      }
+
+  return (iterator(p_pot));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+upper_bound(const_key_reference r_key) const
+{
+  node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (Cmp_Fn::operator()(r_key,
+			   PB_DS_V2F(p_nd->m_value)))
+      {
+	p_pot = p_nd,
+
+	  p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  return (const_iterator(p_pot));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+upper_bound(const_key_reference r_key)
+{
+  node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (Cmp_Fn::operator()(r_key,
+			   PB_DS_V2F(p_nd->m_value)))
+      {
+	p_pot = p_nd,
+
+	  p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  return (point_iterator(p_pot));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+    node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
+      {
+	p_pot = p_nd;
+
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  return point_iterator((p_pot != m_p_head&&  Cmp_Fn::operator()(
+								 r_key,
+								 PB_DS_V2F(p_pot->m_value)))?
+			m_p_head : p_pot);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key) const
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+    node_pointer p_pot = m_p_head;
+  node_pointer p_nd = m_p_head->m_p_parent;
+
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
+      {
+	p_pot = p_nd;
+
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  return const_point_iterator((p_pot != m_p_head&&  Cmp_Fn::operator()(
+								       r_key,
+								       PB_DS_V2F(p_pot->m_value)))?
+			      m_p_head : p_pot);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
new file mode 100644
index 000000000..b3e46112f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{
+  return (m_size == 0);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{
+  return (m_size);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{
+  return (s_node_allocator.max_size());
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
new file mode 100644
index 000000000..0c25ad235
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
@@ -0,0 +1,211 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_leaf(const_reference r_value)
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+    if (m_size == 0)
+      return (std::make_pair(
+			     insert_imp_empty(r_value),
+			     true));
+
+  node_pointer p_nd = m_p_head->m_p_parent;
+  node_pointer p_pot = m_p_head;
+
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(
+			    PB_DS_V2F(p_nd->m_value),
+			    PB_DS_V2F(r_value)))
+      {
+	p_pot = p_nd;
+
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  if (p_pot == m_p_head)
+    return (std::make_pair(
+			   insert_leaf_new(r_value,  m_p_head->m_p_right, false),
+			   true));
+
+  if (!Cmp_Fn::operator()(
+			  PB_DS_V2F(r_value),
+			  PB_DS_V2F(p_pot->m_value)))
+    {
+      _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+        _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(
+							PB_DS_V2F(r_value)));
+
+      return (std::make_pair(p_pot, false));
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
+							  PB_DS_V2F(r_value)));
+
+  p_nd = p_pot->m_p_left;
+  if (p_nd == 0)
+    return (std::make_pair(
+			   insert_leaf_new(r_value, p_pot, true),
+			   true));
+
+  while (p_nd->m_p_right != 0)
+    p_nd = p_nd->m_p_right;
+
+  return (std::make_pair(
+			 insert_leaf_new(r_value, p_nd, false),
+			 true));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd)
+{
+  node_pointer p_new_nd =
+    get_new_node_for_leaf_insert(            r_value, traits_base::m_no_throw_copies_indicator);
+
+  if (left_nd)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == 0);
+      _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(
+					  PB_DS_V2F(r_value),
+					  PB_DS_V2F(p_nd->m_value)));
+
+      p_nd->m_p_left = p_new_nd;
+
+      if (m_p_head->m_p_left == p_nd)
+	m_p_head->m_p_left = p_new_nd;
+    }
+  else
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right == 0);
+      _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(
+					  PB_DS_V2F(p_nd->m_value),
+					  PB_DS_V2F(r_value)));
+
+      p_nd->m_p_right = p_new_nd;
+
+      if (m_p_head->m_p_right == p_nd)
+	m_p_head->m_p_right = p_new_nd;
+    }
+
+  p_new_nd->m_p_parent = p_nd;
+
+  p_new_nd->m_p_left = p_new_nd->m_p_right = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_nd));
+
+  update_to_top(p_new_nd, (node_update* )this);
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(
+					    PB_DS_V2F(r_value)));
+
+  return (iterator(p_new_nd));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+insert_imp_empty(const_reference r_value)
+{
+  node_pointer p_new_node =
+    get_new_node_for_leaf_insert(        r_value, traits_base::m_no_throw_copies_indicator);
+
+  m_p_head->m_p_left = m_p_head->m_p_right =
+    m_p_head->m_p_parent = p_new_node;
+
+  p_new_node->m_p_parent = m_p_head;
+
+  p_new_node->m_p_left = p_new_node->m_p_right = 0;
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(
+					    PB_DS_V2F(r_value)));
+
+  update_to_top(m_p_head->m_p_parent, (node_update* )this);
+
+  return (iterator(p_new_node));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+get_new_node_for_leaf_insert(const_reference r_val, false_type)
+{
+  node_pointer p_new_nd = s_node_allocator.allocate(1);
+
+  cond_dealtor_t cond(p_new_nd);
+
+  new (const_cast<void* >(
+			  static_cast<const void* >(&p_new_nd->m_value)))
+    typename node::value_type(r_val);
+
+  cond.set_no_action();
+
+  p_new_nd->m_p_left = p_new_nd->m_p_right = 0;
+
+  ++m_size;
+
+  return (p_new_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+get_new_node_for_leaf_insert(const_reference r_val, true_type)
+{
+  node_pointer p_new_nd = s_node_allocator.allocate(1);
+
+  new (const_cast<void* >(
+			  static_cast<const void* >(&p_new_nd->m_value)))
+    typename node::value_type(r_val);
+
+  p_new_nd->m_p_left = p_new_nd->m_p_right = 0;
+
+  ++m_size;
+
+  return (p_new_nd);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..e5f6a4d73
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
@@ -0,0 +1,136 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  return (iterator(m_p_head->m_p_left));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  return (const_iterator(m_p_head->m_p_left));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{
+  return (iterator(m_p_head));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{
+  return (const_iterator(m_p_head));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
+PB_DS_CLASS_C_DEC::
+rbegin() const
+{
+  return (const_reverse_iterator(m_p_head->m_p_right));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+rbegin()
+{
+  return (reverse_iterator(m_p_head->m_p_right));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+rend()
+{
+  return (reverse_iterator(m_p_head));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
+PB_DS_CLASS_C_DEC::
+rend() const
+{
+  return (const_reverse_iterator(m_p_head));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin() const
+{
+  return (const_node_iterator(m_p_head->m_p_parent));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin()
+{
+  return (node_iterator(m_p_head->m_p_parent));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_end() const
+{
+  return (const_node_iterator(0));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_end()
+{
+  return (node_iterator(0));
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
new file mode 100644
index 000000000..b4ea45376
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
@@ -0,0 +1,237 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_iterators.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+#ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
+#define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC			\
+    bin_search_tree_const_node_it_<					\
+							Node,		\
+							Const_Iterator,	\
+							Iterator,	\
+							Allocator>
+
+    // Const node iterator.
+    template<typename Node,
+	     class Const_Iterator,
+	     class Iterator,
+	     class Allocator>
+    class bin_search_tree_const_node_it_
+    {
+    private:
+
+    private:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+    public:
+
+      // Category.
+      typedef trivial_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef trivial_iterator_difference_type difference_type;
+
+      // __Iterator's value type.
+      typedef Const_Iterator value_type;
+
+      // __Iterator's reference type.
+      typedef Const_Iterator reference;
+
+      // __Iterator's __const reference type.
+      typedef Const_Iterator const_reference;
+
+      // Metadata type.
+      typedef typename Node::metadata_type metadata_type;
+
+      // Const metadata reference type.
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::const_reference
+      const_metadata_reference;
+
+    public:
+
+      // Default constructor.
+      /*
+	inline
+	bin_search_tree_const_node_it_()
+      */
+
+      inline
+      bin_search_tree_const_node_it_(const node_pointer p_nd = 0) : m_p_nd(const_cast<node_pointer>(p_nd))
+      { }
+
+      // Access.
+      inline const_reference
+      operator*() const
+      {
+	return (Const_Iterator(m_p_nd));
+      }
+
+      // Metadata access.
+      inline const_metadata_reference
+      get_metadata() const
+      {
+	return (m_p_nd->get_metadata());
+      }
+
+      // Returns the __const node iterator associated with the left node.
+      inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
+      get_l_child() const
+      {
+	return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left));
+      }
+
+      // Returns the __const node iterator associated with the right node.
+      inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
+      get_r_child() const
+      {
+	return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right));
+      }
+
+      // Compares to a different iterator object.
+      inline bool
+      operator==(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const
+      {
+	return (m_p_nd == other.m_p_nd);
+      }
+
+      // Compares (negatively) to a different iterator object.
+      inline bool
+      operator!=(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const
+      {
+	return (m_p_nd != other.m_p_nd);
+      }
+
+    public:
+      node_pointer m_p_nd;
+    };
+
+#define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC			\
+    bin_search_tree_node_it_<					\
+						Node,		\
+						Const_Iterator, \
+						Iterator,	\
+						Allocator>
+
+    // Node iterator.
+    template<typename Node,
+	     class Const_Iterator,
+	     class Iterator,
+	     class Allocator>
+    class bin_search_tree_node_it_ : 
+      public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
+
+    {
+
+    private:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+    public:
+
+      // __Iterator's value type.
+      typedef Iterator value_type;
+
+      // __Iterator's reference type.
+      typedef Iterator reference;
+
+      // __Iterator's __const reference type.
+      typedef Iterator const_reference;
+
+    public:
+
+      // Default constructor.
+      /*
+	inline
+	bin_search_tree_node_it_();
+      */
+
+      inline
+      bin_search_tree_node_it_(const node_pointer p_nd = 0) : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(
+													    const_cast<node_pointer>(p_nd))
+      { }
+
+      // Access.
+      inline Iterator
+      operator*() const
+      {
+	return (Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd));
+      }
+
+      // Returns the node iterator associated with the left node.
+      inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
+      get_l_child() const
+      {
+	return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
+						     PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left));
+      }
+
+      // Returns the node iterator associated with the right node.
+      inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
+      get_r_child() const
+      {
+	return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
+						     PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right));
+      }
+
+    };
+
+#undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
+
+#undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
new file mode 100644
index 000000000..959df68a1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
@@ -0,0 +1,381 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file point_iterators.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+#ifndef PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP
+#define PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_TREE_CONST_IT_C_DEC					\
+    bin_search_tree_const_it_<						\
+						Node_Pointer,		\
+						Value_Type,		\
+						Pointer,		\
+						Const_Pointer,		\
+						Reference,		\
+						Const_Reference,	\
+						Is_Forward_Iterator,	\
+						Allocator>
+
+#define PB_DS_TREE_CONST_ODIR_IT_C_DEC					\
+    bin_search_tree_const_it_<						\
+						Node_Pointer,		\
+						Value_Type,		\
+						Pointer,		\
+						Const_Pointer,		\
+						Reference,		\
+						Const_Reference,	\
+						!Is_Forward_Iterator,	\
+						Allocator>
+
+#define PB_DS_TREE_IT_C_DEC						\
+    bin_search_tree_it_<						\
+						Node_Pointer,		\
+						Value_Type,		\
+						Pointer,		\
+						Const_Pointer,		\
+						Reference,		\
+						Const_Reference,	\
+						Is_Forward_Iterator,	\
+						Allocator>
+
+#define PB_DS_TREE_ODIR_IT_C_DEC					\
+    bin_search_tree_it_<						\
+							Node_Pointer,	\
+							Value_Type,	\
+							Pointer,	\
+							Const_Pointer,	\
+							Reference,	\
+							Const_Reference, \
+							!Is_Forward_Iterator, \
+							Allocator>
+
+    // Const iterator.
+    template<typename Node_Pointer,
+	     typename Value_Type,
+	     typename Pointer,
+	     typename Const_Pointer,
+	     typename Reference,
+	     typename Const_Reference,
+	     bool Is_Forward_Iterator,
+	     class Allocator>
+    class bin_search_tree_const_it_
+    {
+
+    public:
+
+      typedef std::bidirectional_iterator_tag iterator_category;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef Pointer pointer;
+
+      typedef Const_Pointer const_pointer;
+
+      typedef Reference reference;
+
+      typedef Const_Reference const_reference;
+
+    public:
+
+      inline
+      bin_search_tree_const_it_(const Node_Pointer p_nd = 0) 
+      : m_p_nd(const_cast<Node_Pointer>(p_nd))
+      { }
+
+      inline
+      bin_search_tree_const_it_(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) 
+      : m_p_nd(other.m_p_nd)
+      { }
+
+      inline
+      PB_DS_TREE_CONST_IT_C_DEC& 
+      operator=(const PB_DS_TREE_CONST_IT_C_DEC& other)
+      {
+	m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline
+      PB_DS_TREE_CONST_IT_C_DEC& 
+      operator=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other)
+      {
+	m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline const_pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd != 0);
+	return &m_p_nd->m_value;
+      }
+
+      inline const_reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd != 0);
+	return m_p_nd->m_value;
+      }
+
+      inline bool
+      operator==(const PB_DS_TREE_CONST_IT_C_DEC & other) const
+      { return m_p_nd == other.m_p_nd; }
+
+      inline bool
+      operator==(const PB_DS_TREE_CONST_ODIR_IT_C_DEC & other) const
+      { return m_p_nd == other.m_p_nd; }
+
+      inline bool
+      operator!=(const PB_DS_TREE_CONST_IT_C_DEC& other) const
+      { return m_p_nd != other.m_p_nd; }
+
+      inline bool
+      operator!=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) const
+      { return m_p_nd != other.m_p_nd; }
+
+      inline PB_DS_TREE_CONST_IT_C_DEC& 
+      operator++()
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd != 0);
+	inc(integral_constant<int,Is_Forward_Iterator>());
+	return *this;
+      }
+
+      inline PB_DS_TREE_CONST_IT_C_DEC
+      operator++(int)
+      {
+	PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd);
+	operator++();
+	return ret_it;
+      }
+
+      inline PB_DS_TREE_CONST_IT_C_DEC& 
+      operator--()
+      {
+	dec(integral_constant<int,Is_Forward_Iterator>());
+	return *this;
+      }
+
+      inline PB_DS_TREE_CONST_IT_C_DEC
+      operator--(int)
+      {
+	PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd);
+	operator--();
+	return ret_it;
+      }
+
+    protected:
+      inline void
+      inc(false_type)
+      { dec(true_type()); }
+
+      void
+      inc(true_type)
+      {
+	if (m_p_nd->special()&& 
+	    m_p_nd->m_p_parent->m_p_parent == m_p_nd)
+	  {
+	    m_p_nd = m_p_nd->m_p_left;
+	    return;
+	  }
+
+	if (m_p_nd->m_p_right != 0)
+	  {
+	    m_p_nd = m_p_nd->m_p_right;
+	    while (m_p_nd->m_p_left != 0)
+	      m_p_nd = m_p_nd->m_p_left;
+	    return;
+	  }
+
+	Node_Pointer p_y = m_p_nd->m_p_parent;
+	while (m_p_nd == p_y->m_p_right)
+	  {
+	    m_p_nd = p_y;
+	    p_y = p_y->m_p_parent;
+	  }
+
+	if (m_p_nd->m_p_right != p_y)
+	  m_p_nd = p_y;
+      }
+
+      inline void
+      dec(false_type)
+      { inc(true_type()); }
+
+      void
+      dec(true_type)
+      {
+	if (m_p_nd->special() && m_p_nd->m_p_parent->m_p_parent == m_p_nd)
+	  {
+	    m_p_nd = m_p_nd->m_p_right;
+	    return;
+	  }
+
+	if (m_p_nd->m_p_left != 0)
+	  {
+	    Node_Pointer p_y = m_p_nd->m_p_left;
+	    while (p_y->m_p_right != 0)
+	      p_y = p_y->m_p_right;
+	    m_p_nd = p_y;
+	    return;
+	  }
+
+	Node_Pointer p_y = m_p_nd->m_p_parent;
+	while (m_p_nd == p_y->m_p_left)
+	  {
+	    m_p_nd = p_y;
+	    p_y = p_y->m_p_parent;
+	  }
+	if (m_p_nd->m_p_left != p_y)
+	  m_p_nd = p_y;
+      }
+
+    public:
+      Node_Pointer m_p_nd;
+    };
+
+    // Iterator.
+    template<typename Node_Pointer,
+	     typename Value_Type,
+	     typename Pointer,
+	     typename Const_Pointer,
+	     typename Reference,
+	     typename Const_Reference,
+	     bool Is_Forward_Iterator,
+	     class Allocator>
+    class bin_search_tree_it_ : 
+      public PB_DS_TREE_CONST_IT_C_DEC
+
+    {
+
+    public:
+
+      inline
+      bin_search_tree_it_(const Node_Pointer p_nd = 0) 
+      : PB_DS_TREE_CONST_IT_C_DEC((Node_Pointer)p_nd)
+      { }
+
+      inline
+      bin_search_tree_it_(const PB_DS_TREE_ODIR_IT_C_DEC& other) 
+      : PB_DS_TREE_CONST_IT_C_DEC(other.m_p_nd)
+      { }
+
+      inline
+      PB_DS_TREE_IT_C_DEC& 
+      operator=(const PB_DS_TREE_IT_C_DEC& other)
+      {
+	base_it_type::m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline
+      PB_DS_TREE_IT_C_DEC& 
+      operator=(const PB_DS_TREE_ODIR_IT_C_DEC& other)
+      {
+	base_it_type::m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline typename PB_DS_TREE_CONST_IT_C_DEC::pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != 0);
+	return &base_it_type::m_p_nd->m_value;
+      }
+
+      inline typename PB_DS_TREE_CONST_IT_C_DEC::reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != 0);
+	return base_it_type::m_p_nd->m_value;
+      }
+
+      inline PB_DS_TREE_IT_C_DEC& 
+      operator++()
+      {
+	PB_DS_TREE_CONST_IT_C_DEC:: operator++();
+	return *this;
+      }
+
+      inline PB_DS_TREE_IT_C_DEC
+      operator++(int)
+      {
+	PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd);
+	operator++();
+	return ret_it;
+      }
+
+      inline PB_DS_TREE_IT_C_DEC& 
+      operator--()
+      {
+	PB_DS_TREE_CONST_IT_C_DEC:: operator--();
+	return *this;
+      }
+
+      inline PB_DS_TREE_IT_C_DEC
+      operator--(int)
+      {
+	PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd);
+	operator--();
+	return ret_it;
+      }
+
+    protected:
+      typedef PB_DS_TREE_CONST_IT_C_DEC base_it_type;
+    };
+
+#undef PB_DS_TREE_CONST_IT_C_DEC
+#undef PB_DS_TREE_CONST_ODIR_IT_C_DEC
+#undef PB_DS_TREE_IT_C_DEC
+#undef PB_DS_TREE_ODIR_IT_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..63f307d39
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn()
+{
+  return (*this);
+}
+
+PB_DS_CLASS_T_DEC
+const Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn() const
+{
+  return (*this);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
new file mode 100644
index 000000000..3bdd1ebff
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
@@ -0,0 +1,120 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file r_erase_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+actual_erase_node(node_pointer p_z)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+
+  _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
+
+  p_z->~node();
+
+  s_node_allocator.deallocate(p_z, 1);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_min_max_for_erased_node(node_pointer p_z)
+{
+  if (m_size == 1)
+    {
+      m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
+
+      return;
+    }
+
+  if (m_p_head->m_p_left == p_z)
+    {
+      iterator it(p_z);
+
+      ++it;
+
+      m_p_head->m_p_left = it.m_p_nd;
+    }
+  else if (m_p_head->m_p_right == p_z)
+    {
+      iterator it(p_z);
+
+      --it;
+
+      m_p_head->m_p_right = it.m_p_nd;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+
+    clear_imp(m_p_head->m_p_parent);
+
+  m_size = 0;
+
+  initialize();
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+
+    _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear_imp(node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return;
+
+  clear_imp(p_nd->m_p_left);
+
+  clear_imp(p_nd->m_p_right);
+
+  p_nd->~Node();
+
+  s_node_allocator.deallocate(p_nd, 1);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
new file mode 100644
index 000000000..6989ca685
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
@@ -0,0 +1,156 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file rotate_fn_imps.hpp
+ * Contains imps for rotating nodes.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_left(node_pointer p_x)
+{
+  node_pointer p_y = p_x->m_p_right;
+
+  p_x->m_p_right = p_y->m_p_left;
+
+  if (p_y->m_p_left != 0)
+    p_y->m_p_left->m_p_parent = p_x;
+
+  p_y->m_p_parent = p_x->m_p_parent;
+
+  if (p_x == m_p_head->m_p_parent)
+    m_p_head->m_p_parent = p_y;
+  else if (p_x == p_x->m_p_parent->m_p_left)
+    p_x->m_p_parent->m_p_left = p_y;
+  else
+    p_x->m_p_parent->m_p_right = p_y;
+
+  p_y->m_p_left = p_x;
+  p_x->m_p_parent = p_y;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
+    _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
+
+    apply_update(p_x, (node_update* )this);
+  apply_update(p_x->m_p_parent, (node_update* )this);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_right(node_pointer p_x)
+{
+  node_pointer p_y = p_x->m_p_left;
+
+  p_x->m_p_left = p_y->m_p_right;
+
+  if (p_y->m_p_right != 0)
+    p_y->m_p_right->m_p_parent = p_x;
+
+  p_y->m_p_parent = p_x->m_p_parent;
+
+  if (p_x == m_p_head->m_p_parent)
+    m_p_head->m_p_parent = p_y;
+  else if (p_x == p_x->m_p_parent->m_p_right)
+    p_x->m_p_parent->m_p_right = p_y;
+  else
+    p_x->m_p_parent->m_p_left = p_y;
+
+  p_y->m_p_right = p_x;
+  p_x->m_p_parent = p_y;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
+    _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
+
+    apply_update(p_x, (node_update* )this);
+  apply_update(p_x->m_p_parent, (node_update* )this);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_parent(node_pointer p_nd)
+{
+  node_pointer p_parent = p_nd->m_p_parent;
+
+  if (p_nd == p_parent->m_p_left)
+    rotate_right(p_parent);
+  else
+    rotate_left(p_parent);
+
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd);
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent ||
+		   p_nd->m_p_right == p_parent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/)
+{ }
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer p_nd, Node_Update_*  /*p_update*/)
+{
+  node_update::operator()(
+			   node_iterator(p_nd),
+			   const_node_iterator(static_cast<node_pointer>(0)));
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+inline void
+PB_DS_CLASS_C_DEC::
+update_to_top(node_pointer p_nd, Node_Update_* p_update)
+{
+  while (p_nd != m_p_head)
+    {
+      apply_update(p_nd, p_update);
+
+      p_nd = p_nd->m_p_parent;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/)
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..11dc30860
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
@@ -0,0 +1,146 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+bool
+PB_DS_CLASS_C_DEC::
+join_prep(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  if (other.m_size == 0)
+    return false;
+
+  if (m_size == 0)
+    {
+      value_swap(other);
+      return false;
+    }
+
+  const bool greater = Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value), PB_DS_V2F(other.m_p_head->m_p_left->m_value));
+
+  const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value), PB_DS_V2F(m_p_head->m_p_left->m_value));
+
+  if (!greater && !lesser)
+    __throw_join_error();
+
+  if (lesser)
+    value_swap(other);
+
+  m_size += other.m_size;
+  _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+join_finish(PB_DS_CLASS_C_DEC& other)
+{
+  initialize_min_max();
+  other.initialize();
+}
+
+PB_DS_CLASS_T_DEC
+bool
+PB_DS_CLASS_C_DEC::
+split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  other.clear();
+
+  if (m_size == 0)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return false;
+    }
+
+  if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value)))
+    {
+      value_swap(other);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return false;
+    }
+
+  if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value)))
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return false;
+    }
+
+  if (m_size == 1)
+    {
+      value_swap(other);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return false;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split_finish(PB_DS_CLASS_C_DEC& other)
+{
+  other.initialize_min_max();
+  other.m_size = std::distance(other.begin(), other.end());
+  m_size -= other.m_size;
+  initialize_min_max();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+recursive_count(node_pointer p) const
+{
+  if (p == 0)
+    return 0;
+  return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
new file mode 100644
index 000000000..58c30c3fe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
@@ -0,0 +1,250 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation for bin_search_tree_.
+ */
+
+#ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Key,
+	     typename Mapped,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn,
+		      class Allocator>
+    class Node_Update,
+	     class Node,
+	     class Allocator>
+    struct bin_search_tree_traits
+    {
+    private:
+      typedef
+      types_traits<
+      Key,
+      Mapped,
+      Allocator,
+      false>
+      type_traits;
+
+    public:
+      typedef Node node;
+
+      typedef
+      bin_search_tree_const_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	true,
+	Allocator>
+      const_point_iterator;
+
+      typedef
+      bin_search_tree_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	true,
+	Allocator>
+      point_iterator;
+
+      typedef
+      bin_search_tree_const_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	false,
+	Allocator>
+      const_reverse_iterator;
+
+      typedef
+      bin_search_tree_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	false,
+	Allocator>
+      reverse_iterator;
+
+      typedef
+      bin_search_tree_const_node_it_<
+	Node,
+	const_point_iterator,
+	point_iterator,
+	Allocator>
+      const_node_iterator;
+
+      typedef
+      bin_search_tree_node_it_<
+	Node,
+	const_point_iterator,
+	point_iterator,
+	Allocator>
+      node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_tree_node_update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+    template<typename Key,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn,
+		      class Allocator>
+    class Node_Update,
+	     class Node,
+	     class Allocator>
+    struct bin_search_tree_traits<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      Node,
+      Allocator>
+    {
+    private:
+      typedef
+      types_traits<
+      Key,
+      null_mapped_type,
+      Allocator,
+      false>
+      type_traits;
+
+    public:
+      typedef Node node;
+
+      typedef
+      bin_search_tree_const_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	true,
+	Allocator>
+      const_point_iterator;
+
+      typedef const_point_iterator point_iterator;
+
+      typedef
+      bin_search_tree_const_it_<
+	typename Allocator::template rebind<
+	node>::other::pointer,
+	typename type_traits::value_type,
+	typename type_traits::pointer,
+	typename type_traits::const_pointer,
+	typename type_traits::reference,
+	typename type_traits::const_reference,
+	false,
+	Allocator>
+      const_reverse_iterator;
+
+      typedef const_reverse_iterator reverse_iterator;
+
+      typedef
+      bin_search_tree_const_node_it_<
+	Node,
+	const_point_iterator,
+	point_iterator,
+	Allocator>
+      const_node_iterator;
+
+      typedef const_node_iterator node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_tree_node_update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
new file mode 100644
index 000000000..576cba265
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
@@ -0,0 +1,357 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file binary_heap_.hpp
+ * Contains an implementation class for a binary heap.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_HPP
+#define PB_DS_BINARY_HEAP_HPP
+
+/*
+ * Based on CLRS.
+ */
+
+#include <queue>
+#include <algorithm>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/binary_heap_/entry_cmp.hpp>
+#include <ext/pb_ds/detail/binary_heap_/entry_pred.hpp>
+#include <ext/pb_ds/detail/binary_heap_/resize_policy.hpp>
+#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp>
+#include <ext/pb_ds/detail/binary_heap_/const_iterator.hpp>
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+#include <iostream>
+#endif
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    binary_heap_<Value_Type, Cmp_Fn, Allocator>
+
+#define PB_DS_ENTRY_CMP_DEC \
+    entry_cmp<Value_Type, Cmp_Fn, is_simple<Value_Type>::value, Allocator>::type
+
+#define PB_DS_RESIZE_POLICY_DEC	\
+    __gnu_pbds::detail::resize_policy<typename Allocator::size_type>
+
+    /**
+     * class description = "Base class for some types of h3ap$">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class binary_heap_ : public PB_DS_ENTRY_CMP_DEC,
+			 public PB_DS_RESIZE_POLICY_DEC
+    {
+
+    private:
+      enum
+	{
+	  simple_value = is_simple<Value_Type>::value
+	};
+
+      typedef integral_constant<int, simple_value> no_throw_copies_t;
+
+      typedef
+      typename Allocator::template rebind<
+	Value_Type>::other
+      value_allocator;
+
+      typedef
+      typename __conditional_type<
+	simple_value,
+	Value_Type,
+	typename value_allocator::pointer>::__type
+      entry;
+
+      typedef
+      typename Allocator::template rebind<
+	entry>::other
+      entry_allocator;
+
+      typedef typename entry_allocator::pointer entry_pointer;
+
+      typedef typename PB_DS_ENTRY_CMP_DEC entry_cmp;
+
+      typedef PB_DS_RESIZE_POLICY_DEC resize_policy;
+
+      typedef
+      cond_dealtor<
+	Value_Type,
+	Allocator>
+      cond_dealtor_t;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+      typedef
+      binary_heap_const_point_iterator_<
+	value_type,
+	entry,
+	simple_value,
+	Allocator>
+      const_point_iterator;
+
+      typedef const_point_iterator point_iterator;
+
+      typedef
+      binary_heap_const_iterator_<
+	value_type,
+	entry,
+	simple_value,
+	Allocator>
+      const_iterator;
+
+      typedef const_iterator iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+    public:
+
+      binary_heap_();
+
+      binary_heap_(const Cmp_Fn& r_cmp_fn);
+
+      binary_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~binary_heap_();
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      Cmp_Fn& 
+      get_cmp_fn();
+
+      const Cmp_Fn& 
+      get_cmp_fn() const;
+
+      inline point_iterator
+      push(const_reference r_val);
+
+      void
+      modify(point_iterator it, const_reference r_new_val);
+
+      inline const_reference
+      top() const;
+
+      inline void
+      pop();
+
+      inline void
+      erase(point_iterator it);
+
+      template<typename Pred>
+      typename PB_DS_CLASS_C_DEC::size_type
+      erase_if(Pred pred);
+
+      inline static void
+      erase_at(entry_pointer a_entries, size_type size, false_type);
+
+      inline static void
+      erase_at(entry_pointer a_entries, size_type size, true_type);
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+      void
+      clear();
+
+      template<typename Pred>
+      void
+      split(Pred pred, PB_DS_CLASS_C_DEC& other);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    protected:
+
+      template<typename It>
+      void
+      copy_from_range(It first_it, It last_it);
+
+    private:
+
+      void
+      value_swap(PB_DS_CLASS_C_DEC& other);
+
+      inline void
+      insert_value(const_reference r_val, false_type);
+
+      inline void
+      insert_value(value_type val, true_type);
+
+      inline void
+      insert_entry(entry e);
+
+      inline void
+      resize_for_insert_if_needed();
+
+      inline void
+      swap_value_imp(entry_pointer p_e, value_type new_val, true_type);
+
+      inline void
+      swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type);
+
+      void
+      fix(entry_pointer p_e);
+
+      inline const_reference
+      top_imp(true_type) const;
+
+      inline const_reference
+      top_imp(false_type) const;
+
+      inline static size_type
+      left_child(size_type i);
+
+      inline static size_type
+      right_child(size_type i);
+
+      inline static size_type
+      parent(size_type i);
+
+      inline void
+      resize_for_erase_if_needed();
+
+      template<typename Pred>
+      size_type
+      partition(Pred pred);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+      void
+      trace_entry(const entry& r_e, false_type) const;
+
+      void
+      trace_entry(const entry& r_e, true_type) const;
+#endif 
+
+    private:
+      static entry_allocator s_entry_allocator;
+
+      static value_allocator s_value_allocator;
+
+      static no_throw_copies_t s_no_throw_copies_ind;
+
+      size_type m_size;
+
+      size_type m_actual_size;
+
+      entry_pointer m_a_entries;
+    };
+
+#include <ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp>
+#include <ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_ENTRY_CMP_DEC
+#undef PB_DS_RESIZE_POLICY_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
new file mode 100644
index 000000000..aa86f5ea4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
@@ -0,0 +1,152 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_iterator.hpp
+ * Contains an iterator class returned by the table's const find and insert
+ *     methods.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP
+#define PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP
+
+#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_C_DEC \
+    binary_heap_const_iterator_<Value_Type, Entry, Simple, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    binary_heap_const_point_iterator_<Value_Type, Entry, Simple, Allocator>
+
+    // Const point-type iterator.
+    template<typename Value_Type,
+	     typename Entry,
+	     bool Simple,
+	     class Allocator>
+    class binary_heap_const_iterator_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef typename PB_DS_BASE_C_DEC::entry_pointer entry_pointer;
+
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    public:
+
+      // Category.
+      typedef std::forward_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef typename Allocator::difference_type difference_type;
+
+      // Iterator's value type.
+      typedef typename base_type::value_type value_type;
+
+      // Iterator's pointer type.
+      typedef typename base_type::pointer pointer;
+
+      // Iterator's const pointer type.
+      typedef typename base_type::const_pointer const_pointer;
+
+      // Iterator's reference type.
+      typedef typename base_type::reference reference;
+
+      // Iterator's const reference type.
+      typedef typename base_type::const_reference const_reference;
+
+    public:
+
+      inline
+      binary_heap_const_iterator_(entry_pointer p_e) : base_type(p_e)
+      { }
+
+      // Default constructor.
+      inline
+      binary_heap_const_iterator_()
+      { }
+
+      // Copy constructor.
+      inline
+      binary_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other)
+      { }
+
+      // Compares content to a different iterator object.
+      inline bool
+      operator==(const PB_DS_CLASS_C_DEC& other) const
+      {
+	return base_type::m_p_e == other.m_p_e;
+      }
+
+      // Compares content (negatively) to a different iterator object.
+      inline bool
+      operator!=(const PB_DS_CLASS_C_DEC& other) const
+      {
+	return base_type::m_p_e != other.m_p_e;
+      }
+
+      inline PB_DS_CLASS_C_DEC& 
+      operator++()
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_type::m_p_e != 0);
+	inc();
+	return *this;
+      }
+
+      inline PB_DS_CLASS_C_DEC
+      operator++(int)
+      {
+	PB_DS_CLASS_C_DEC ret_it(base_type::m_p_e);
+	operator++();
+	return ret_it;
+      }
+
+    private:
+      void
+      inc()
+      { ++base_type::m_p_e; }
+    };
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
new file mode 100644
index 000000000..3d75e86d4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
@@ -0,0 +1,144 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_point_iterator.hpp
+ * Contains an iterator class returned by the table's const find and insert
+ *     methods.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP
+#define PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    // Const point-type iterator.
+    template<typename Value_Type, typename Entry, bool Simple, 
+	     typename Allocator>
+    class binary_heap_const_point_iterator_
+    {
+    protected:
+      typedef typename Allocator::template rebind<Entry>::other::pointer entry_pointer;
+
+    public:
+      // Category.
+      typedef trivial_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef trivial_iterator_difference_type difference_type;
+
+      // Iterator's value type.
+      typedef Value_Type value_type;
+
+      // Iterator's pointer type.
+      typedef typename Allocator::template rebind<value_type>::other::pointer
+      pointer;
+
+      // Iterator's const pointer type.
+      typedef
+      typename Allocator::template rebind<value_type>::other::const_pointer
+      const_pointer;
+
+      // Iterator's reference type.
+      typedef
+      typename Allocator::template rebind<value_type>::other::reference
+      reference;
+
+      // Iterator's const reference type.
+      typedef
+      typename Allocator::template rebind<value_type>::other::const_reference
+      const_reference;
+
+      inline
+      binary_heap_const_point_iterator_(entry_pointer p_e) : m_p_e(p_e)
+      { }
+
+      // Default constructor.
+      inline
+      binary_heap_const_point_iterator_() : m_p_e(0) { }
+
+      // Copy constructor.
+      inline
+      binary_heap_const_point_iterator_(const binary_heap_const_point_iterator_& other)
+      : m_p_e(other.m_p_e)
+      { }
+
+      // Access.
+      inline const_pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_e != 0);
+	return to_ptr(integral_constant<int, Simple>());
+      }
+
+      // Access.
+      inline const_reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_e != 0);
+	return *to_ptr(integral_constant<int, Simple>());
+      }
+
+      // Compares content to a different iterator object.
+      inline bool
+      operator==(const binary_heap_const_point_iterator_& other) const
+      { return m_p_e == other.m_p_e; }
+
+      // Compares content (negatively) to a different iterator object.
+      inline bool
+      operator!=(const binary_heap_const_point_iterator_& other) const
+      { return m_p_e != other.m_p_e; }
+
+    private:
+      inline const_pointer
+      to_ptr(true_type) const
+      { return m_p_e; }
+
+      inline const_pointer
+      to_ptr(false_type) const
+      { return *m_p_e; }
+
+    public:
+      entry_pointer m_p_e;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..a77a02521
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,159 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for binary_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::entry_allocator
+PB_DS_CLASS_C_DEC::s_entry_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::value_allocator
+PB_DS_CLASS_C_DEC::s_value_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::no_throw_copies_t
+PB_DS_CLASS_C_DEC::s_no_throw_copies_ind;
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    {
+      insert_value(*first_it, s_no_throw_copies_ind);
+      ++first_it;
+    }
+
+  std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binary_heap_() :
+  m_size(0),
+  m_actual_size(resize_policy::min_size),
+  m_a_entries(s_entry_allocator.allocate(m_actual_size))
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binary_heap_(const Cmp_Fn& r_cmp_fn) :
+  entry_cmp(r_cmp_fn),
+  m_size(0),
+  m_actual_size(resize_policy::min_size),
+  m_a_entries(s_entry_allocator.allocate(m_actual_size))
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binary_heap_(const PB_DS_CLASS_C_DEC& other) :
+  entry_cmp(other),
+  resize_policy(other),
+  m_size(0),
+  m_actual_size(other.m_actual_size),
+  m_a_entries(s_entry_allocator.allocate(m_actual_size))
+{
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries);
+
+  const_iterator first_it = other.begin();
+  const_iterator last_it = other.end();
+
+  __try
+    {
+      while (first_it != last_it)
+        {
+	  insert_value(*first_it, s_no_throw_copies_ind);
+	  ++first_it;
+        }
+    }
+  __catch(...)
+    {
+      for (size_type i = 0; i < m_size; ++i)
+	erase_at(m_a_entries, i, s_no_throw_copies_ind);
+
+      s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+      __throw_exception_again;
+    }
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries);
+
+  value_swap(other);
+  std::swap((entry_cmp& )(*this), (entry_cmp& )other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+value_swap(PB_DS_CLASS_C_DEC& other)
+{
+  std::swap(m_a_entries, other.m_a_entries);
+  std::swap(m_size, other.m_size);
+  std::swap(m_actual_size, other.m_actual_size);
+  static_cast<resize_policy*>(this)->swap(other);
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~binary_heap_()
+{
+  for (size_type i = 0; i < m_size; ++i)
+    erase_at(m_a_entries, i, s_no_throw_copies_ind);
+  s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..fcfecfd50
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+#ifdef PB_DS_REGRESSION
+  s_entry_allocator.check_allocated(m_a_entries, m_actual_size);
+#endif 
+
+  resize_policy::assert_valid();
+  _GLIBCXX_DEBUG_ASSERT(m_size <= m_actual_size);
+  for (size_type i = 0; i < m_size; ++i)
+    {
+#ifdef PB_DS_REGRESSION
+      s_value_allocator.check_allocated(m_a_entries[i], 1);
+#endif 
+
+      if (left_child(i) < m_size)
+	_GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child(i)]));
+
+      _GLIBCXX_DEBUG_ASSERT(parent(left_child(i)) == i);
+
+      if (right_child(i) < m_size)
+	_GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child(i)]));
+
+      _GLIBCXX_DEBUG_ASSERT(parent(right_child(i)) == i);
+    }
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
new file mode 100644
index 000000000..b0a9b5b0d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file entry_cmp.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
+#define PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Value_Type,
+	     class Cmp_Fn,
+	     bool No_Throw,
+	     class Allocator>
+    struct entry_cmp
+    {
+      typedef Cmp_Fn type;
+    };
+
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    struct entry_cmp<
+      Value_Type,
+      Cmp_Fn,
+      false,
+      Allocator>
+    {
+    public:
+      typedef
+      typename Allocator::template rebind<
+      Value_Type>::other::const_pointer
+      entry;
+
+      struct type : public Cmp_Fn
+      {
+      public:
+	inline
+	type()
+	{ }
+
+	inline
+	type(const Cmp_Fn& other) : Cmp_Fn(other)
+	{ }
+
+	inline bool
+	operator()(entry p_lhs,  entry p_rhs) const
+	{
+	  return Cmp_Fn::operator()(*p_lhs, * p_rhs);
+	}
+      };
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
new file mode 100644
index 000000000..185529e15
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file entry_pred.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
+#define PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Value_Type,
+	     class Pred,
+	     bool No_Throw,
+	     class Allocator>
+    struct entry_pred
+    {
+      typedef Pred type;
+    };
+
+    template<typename Value_Type, class Pred, class Allocator>
+    struct entry_pred<
+      Value_Type,
+      Pred,
+      false,
+      Allocator>
+    {
+    public:
+      typedef
+      typename Allocator::template rebind<
+      Value_Type>::other::const_pointer
+      entry;
+
+      struct type : public Pred
+      {
+      public:
+	inline
+	type()
+	{ }
+
+	inline
+	type(const Pred& other) : Pred(other)
+	{ }
+
+	inline bool
+	operator()(entry p_v) const
+	{
+	  return Pred::operator()(*p_v);
+	}
+      };
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
new file mode 100644
index 000000000..a84265119
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
@@ -0,0 +1,242 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  for (size_type i = 0; i < m_size; ++i)
+    erase_at(m_a_entries, i, s_no_throw_copies_ind);
+
+  __try
+    {
+      const size_type actual_size = resize_policy::get_new_size_for_arbitrary(0);
+
+      entry_pointer a_entries = s_entry_allocator.allocate(actual_size);
+
+      resize_policy::notify_arbitrary(actual_size);
+
+      s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+
+      m_actual_size = actual_size;
+
+      m_a_entries = a_entries;
+    }
+  __catch(...)
+    { }
+
+  m_size = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_at(entry_pointer a_entries, size_type i, false_type)
+{
+  a_entries[i]->~value_type();
+  s_value_allocator.deallocate(a_entries[i], 1);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_at(entry_pointer, size_type, true_type)
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+pop()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(!empty());
+
+  erase_at(m_a_entries, 0, s_no_throw_copies_ind);
+
+  std::pop_heap(m_a_entries, m_a_entries + m_size,
+		static_cast<entry_cmp& >(*this));
+
+  resize_for_erase_if_needed();
+
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+  typedef typename entry_pred<value_type, Pred, simple_value, Allocator>::type
+    pred_t;
+
+  const size_type left = partition(pred_t(pred));
+
+  _GLIBCXX_DEBUG_ASSERT(m_size >= left);
+
+  const size_type ersd = m_size - left;
+
+  for (size_type i = left; i < m_size; ++i)
+    erase_at(m_a_entries, i, s_no_throw_copies_ind);
+
+  __try
+    {
+      const size_type actual_size =
+	resize_policy::get_new_size_for_arbitrary(left);
+
+      entry_pointer a_entries = s_entry_allocator.allocate(actual_size);
+
+      std::copy(m_a_entries, m_a_entries + left, a_entries);
+
+      s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+
+      m_actual_size = actual_size;
+
+      resize_policy::notify_arbitrary(m_actual_size);
+    }
+  __catch(...)
+    { };
+
+  m_size = left;
+
+  std::make_heap(m_a_entries, m_a_entries + m_size,
+		 static_cast<entry_cmp& >(*this));
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+  return ersd;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+erase(point_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(!empty());
+
+  const size_type fix_pos = it.m_p_e - m_a_entries;
+
+  std::swap(*it.m_p_e, m_a_entries[m_size - 1]);
+
+  erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind);
+
+  resize_for_erase_if_needed();
+
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+
+  _GLIBCXX_DEBUG_ASSERT(fix_pos <= m_size);
+
+  if (fix_pos != m_size)
+    fix(m_a_entries + fix_pos);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+resize_for_erase_if_needed()
+{
+  if (!resize_policy::resize_needed_for_shrink(m_size))
+    return;
+
+  __try
+    {
+      const size_type new_actual_size =
+	resize_policy::get_new_size_for_shrink();
+
+      entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size);
+
+      resize_policy::notify_shrink_resize();
+
+      _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+      std::copy(m_a_entries, m_a_entries + m_size - 1, a_new_entries);
+
+      s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+
+      m_actual_size = new_actual_size;
+
+      m_a_entries = a_new_entries;
+    }
+  __catch(...)
+    { }
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+partition(Pred pred)
+{
+  size_type left = 0;
+  size_type right = m_size - 1;
+
+  while (right + 1 != left)
+    {
+      _GLIBCXX_DEBUG_ASSERT(left <= m_size);
+
+      if (!pred(m_a_entries[left]))
+	++left;
+      else if (pred(m_a_entries[right]))
+	--right;
+      else
+	{
+	  _GLIBCXX_DEBUG_ASSERT(left < right);
+
+	  std::swap(m_a_entries[left], m_a_entries[right]);
+
+	  ++left;
+	  --right;
+	}
+    }
+
+  return left;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
new file mode 100644
index 000000000..28d4a8c80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ASSERT(!empty());
+
+  return top_imp(s_no_throw_copies_ind);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top_imp(true_type) const
+{
+  return* m_a_entries;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top_imp(false_type) const
+{
+  return** m_a_entries;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+left_child(size_type i)
+{
+  return i*  2 + 1;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+right_child(size_type i)
+{
+  return i*  2 + 2;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+parent(size_type i)
+{
+  return (i - 1) / 2;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
new file mode 100644
index 000000000..d29279318
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{
+  return (m_size == 0);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{
+  return (m_size);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{
+  return (s_entry_allocator.max_size());
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
new file mode 100644
index 000000000..f13a3cb19
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
@@ -0,0 +1,183 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+push(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  insert_value(r_val, s_no_throw_copies_ind);
+  std::push_heap(m_a_entries, m_a_entries + m_size, 
+		 static_cast<entry_cmp&>(*this));
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return point_iterator(m_a_entries);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+insert_value(value_type val, true_type)
+{
+  resize_for_insert_if_needed();
+
+  m_a_entries[m_size++] = val;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+insert_value(const_reference r_val, false_type)
+{
+  resize_for_insert_if_needed();
+  pointer p_new = s_value_allocator.allocate(1);
+  cond_dealtor_t cond(p_new);
+  new (p_new) value_type(r_val);
+  cond.set_no_action();
+  m_a_entries[m_size++] = p_new;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+insert_entry(entry e)
+{
+  resize_for_insert_if_needed();
+  m_a_entries[m_size++] = e;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+resize_for_insert_if_needed()
+{
+  if (!resize_policy::resize_needed_for_grow(m_size))
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_size < m_actual_size);
+      return;
+    }
+
+  const size_type new_actual_size = resize_policy::get_new_size_for_grow();
+  entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size);
+  resize_policy::notify_grow_resize();
+  std::copy(m_a_entries, m_a_entries + m_size, a_new_entries);
+  s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+  m_actual_size = new_actual_size;
+  m_a_entries = a_new_entries;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+modify(point_iterator it, const_reference r_new_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind);
+  fix(it.m_p_e);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+fix(entry_pointer p_e)
+{
+  size_type i = p_e - m_a_entries;
+  if (i > 0 && entry_cmp::operator()(m_a_entries[parent(i)], m_a_entries[i]))
+    {
+      size_type parent_i = parent(i);
+      while (i > 0 
+	     && entry_cmp::operator()(m_a_entries[parent_i], m_a_entries[i]))
+        {
+	  std::swap(m_a_entries[i], m_a_entries[parent_i]);
+	  i = parent_i;
+	  parent_i = parent(i);
+        }
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return;
+    }
+
+  while (i < m_size)
+    {
+      const size_type left_child_i = left_child(i);
+      const size_type right_child_i = right_child(i);
+      _GLIBCXX_DEBUG_ASSERT(right_child_i > left_child_i);
+      const bool smaller_than_left_child = left_child_i < m_size && 
+	entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child_i]);
+
+      const bool smaller_than_right_child = right_child_i < m_size && 
+	entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child_i]);
+
+      const bool swap_with_r_child = smaller_than_right_child && (!smaller_than_left_child || entry_cmp::operator()(m_a_entries[left_child_i], m_a_entries[right_child_i]));
+
+      const bool swap_with_l_child = !swap_with_r_child && smaller_than_left_child;
+
+      if (swap_with_l_child)
+        {
+	  std::swap(m_a_entries[i], m_a_entries[left_child_i]);
+	  i = left_child_i;
+        }
+      else if (swap_with_r_child)
+        {
+	  std::swap(m_a_entries[i], m_a_entries[right_child_i]);
+	  i = right_child_i;
+        }
+      else
+	i = m_size;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap_value_imp(entry_pointer p_e, value_type new_val, true_type)
+{
+  * p_e = new_val;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type)
+{
+  value_type tmp(r_new_val);
+  (*p_e)->swap(tmp);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..db0a64ea8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  return (iterator(m_a_entries));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  return (const_iterator(m_a_entries));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{
+  return (iterator(m_a_entries + m_size));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{
+  return (const_iterator(m_a_entries + m_size));
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..11a7b8915
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn()
+{
+  return (*this);
+}
+
+PB_DS_CLASS_T_DEC
+const Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn() const
+{
+  return (*this);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
new file mode 100644
index 000000000..588fb3d1d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
@@ -0,0 +1,253 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_policy.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+#ifndef PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP
+#define PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP
+
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+
+#define PB_DS_CLASS_C_DEC resize_policy<Size_Type>
+
+    template<typename Size_Type>
+    class resize_policy
+    {
+    public:
+      typedef Size_Type size_type;
+
+      enum
+	{
+	  min_size = 16
+	};
+
+    public:
+      inline
+      resize_policy();
+
+      inline void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      inline bool
+      resize_needed_for_grow(size_type size) const;
+
+      inline bool
+      resize_needed_for_shrink(size_type size) const;
+
+      inline bool
+      grow_needed(size_type size) const;
+
+      inline bool
+      shrink_needed(size_type size) const;
+
+      inline size_type
+      get_new_size_for_grow() const;
+
+      inline size_type
+      get_new_size_for_shrink() const;
+
+      size_type
+      get_new_size_for_arbitrary(size_type size) const;
+
+      inline void
+      notify_grow_resize();
+
+      inline void
+      notify_shrink_resize();
+
+      void
+      notify_arbitrary(size_type actual_size);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+      enum
+	{
+	  ratio = 8,
+	  factor = 2
+	};
+
+    private:
+      size_type m_next_shrink_size;
+      size_type m_next_grow_size;
+    };
+
+    PB_DS_CLASS_T_DEC
+    inline
+    PB_DS_CLASS_C_DEC::
+    resize_policy() :
+      m_next_shrink_size(0),
+      m_next_grow_size(min_size)
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      std::swap(m_next_shrink_size, other.m_next_shrink_size);
+      std::swap(m_next_grow_size, other.m_next_grow_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline bool
+    PB_DS_CLASS_C_DEC::
+    resize_needed_for_grow(size_type size) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size);
+      return size == m_next_grow_size;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline bool
+    PB_DS_CLASS_C_DEC::
+    resize_needed_for_shrink(size_type size) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size);
+      return size == m_next_shrink_size;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_new_size_for_grow() const
+    { return m_next_grow_size*  factor; }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_new_size_for_shrink() const
+    {
+      const size_type half_size = m_next_grow_size / factor;
+      return std::max(static_cast<size_type>(min_size), half_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_new_size_for_arbitrary(size_type size) const
+    {
+      size_type ret = min_size;
+      while (ret < size)
+	ret *= factor;
+      return ret;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    notify_grow_resize()
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size);
+      m_next_grow_size *= factor;
+      m_next_shrink_size = m_next_grow_size / ratio;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    notify_shrink_resize()
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      m_next_shrink_size /= factor;
+      if (m_next_shrink_size == 1)
+	m_next_shrink_size = 0;
+
+      m_next_grow_size =
+	std::max(m_next_grow_size / factor, static_cast<size_type>(min_size));
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    notify_arbitrary(size_type actual_size)
+    {
+      m_next_grow_size = actual_size;
+      m_next_shrink_size = m_next_grow_size / ratio;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    assert_valid() const
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_next_shrink_size == 0 ||
+		       m_next_shrink_size*  ratio == m_next_grow_size);
+
+      _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size);
+    }
+#endif 
+
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    trace() const
+    {
+      std::cerr << "shrink = " << m_next_shrink_size <<
+	" grow = " << m_next_grow_size << std::endl;
+    }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..a2974429f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
@@ -0,0 +1,173 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+void
+PB_DS_CLASS_C_DEC::
+split(Pred pred, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    typedef
+    typename entry_pred<
+    value_type,
+    Pred,
+    simple_value,
+    Allocator>::type
+    pred_t;
+
+  const size_type left = partition(pred_t(pred));
+
+  _GLIBCXX_DEBUG_ASSERT(m_size >= left);
+
+  const size_type ersd = m_size - left;
+
+  _GLIBCXX_DEBUG_ASSERT(m_size >= ersd);
+
+  const size_type actual_size =
+    resize_policy::get_new_size_for_arbitrary(left);
+
+  const size_type other_actual_size =
+    other.get_new_size_for_arbitrary(ersd);
+
+  entry_pointer a_entries = 0;
+  entry_pointer a_other_entries = 0;
+
+  __try
+    {
+      a_entries = s_entry_allocator.allocate(actual_size);
+
+      a_other_entries = s_entry_allocator.allocate(other_actual_size);
+    }
+  __catch(...)
+    {
+      if (a_entries != 0)
+	s_entry_allocator.deallocate(a_entries, actual_size);
+
+      if (a_other_entries != 0)
+	s_entry_allocator.deallocate(a_other_entries, other_actual_size);
+
+      __throw_exception_again;
+    };
+
+  for (size_type i = 0; i < other.m_size; ++i)
+    erase_at(other.m_a_entries, i, s_no_throw_copies_ind);
+
+  _GLIBCXX_DEBUG_ASSERT(actual_size >= left);
+  std::copy(m_a_entries, m_a_entries + left, a_entries);
+  std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries);
+
+  s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+  s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
+
+  m_actual_size = actual_size;
+  other.m_actual_size = other_actual_size;
+
+  m_size = left;
+  other.m_size = ersd;
+
+  m_a_entries = a_entries;
+  other.m_a_entries = a_other_entries;
+
+  std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
+  std::make_heap(other.m_a_entries, other.m_a_entries + other.m_size, static_cast<entry_cmp& >(other));
+
+  resize_policy::notify_arbitrary(m_actual_size);
+  other.notify_arbitrary(other.m_actual_size);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+  const size_type len = m_size + other.m_size;
+  const size_type actual_size = resize_policy::get_new_size_for_arbitrary(len);
+
+  entry_pointer a_entries = 0;
+  entry_pointer a_other_entries = 0;
+
+  __try
+    {
+      a_entries = s_entry_allocator.allocate(actual_size);
+      a_other_entries = s_entry_allocator.allocate(resize_policy::min_size);
+    }
+  __catch(...)
+    {
+      if (a_entries != 0)
+	s_entry_allocator.deallocate(a_entries, actual_size);
+
+      if (a_other_entries != 0)
+	s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size);
+
+      __throw_exception_again;
+    }
+
+  std::copy(m_a_entries, m_a_entries + m_size, a_entries);
+  std::copy(other.m_a_entries, other.m_a_entries + other.m_size, a_entries + m_size);
+
+  s_entry_allocator.deallocate(m_a_entries, m_actual_size);
+  m_a_entries = a_entries;
+  m_size = len;
+  m_actual_size = actual_size;
+
+  resize_policy::notify_arbitrary(actual_size);
+
+  std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
+
+  s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
+  other.m_a_entries = a_other_entries;
+  other.m_size = 0;
+  other.m_actual_size = resize_policy::min_size;
+
+  other.notify_arbitrary(resize_policy::min_size);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
new file mode 100644
index 000000000..36bd66f75
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains an implementation class for a binary_heap.
+ */
+
+#ifdef PB_DS_BINARY_HEAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << this << std::endl;
+
+  std::cerr << m_a_entries << std::endl;
+
+  for (size_type i = 0; i < m_size; ++i)
+    trace_entry(m_a_entries[i], s_no_throw_copies_ind);
+
+  std::cerr << std::endl;
+
+  std::cerr << "size = " << m_size << " " << "actual_size = " << m_actual_size << std::endl;
+
+  resize_policy::trace();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_entry(const entry& r_e, false_type) const
+{
+  std::cout << r_e << " " <<* r_e << std::endl;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_entry(const entry& r_e, true_type) const
+{
+  std::cout << r_e << std::endl;
+}
+
+#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
new file mode 100644
index 000000000..3b4d6e91e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
@@ -0,0 +1,116 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file binomial_heap_.hpp
+ * Contains an implementation class for a binomial heap.
+ */
+
+/*
+ * Binomial heap.
+ * Vuillemin J is the mastah.
+ * Modified from CLRS.
+ */
+
+#include <debug/debug.h>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    binomial_heap_<Value_Type, Cmp_Fn, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
+
+    /**
+     * class description = "8y|\|0|\/|i41 h34p 74813">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class binomial_heap_ : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+      typedef typename base_type::node_pointer node_pointer;
+      typedef typename base_type::const_node_pointer const_node_pointer;
+
+    public:
+      typedef Value_Type value_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef typename base_type::pointer pointer;
+      typedef typename base_type::const_pointer const_pointer;
+      typedef typename base_type::reference reference;
+      typedef typename base_type::const_reference const_reference;
+      typedef typename base_type::const_point_iterator const_point_iterator;
+      typedef typename base_type::point_iterator point_iterator;
+      typedef typename base_type::const_iterator const_iterator;
+      typedef typename base_type::iterator iterator;
+      typedef typename base_type::cmp_fn cmp_fn;
+      typedef typename base_type::allocator_type allocator_type;
+
+      binomial_heap_();
+
+      binomial_heap_(const Cmp_Fn& r_cmp_fn);
+
+      binomial_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      ~binomial_heap_();
+
+    protected:
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+    };
+
+#include <ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+
+#undef PB_DS_CLASS_T_DEC
+
+#undef PB_DS_BASE_C_DEC
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..ef0937e42
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,61 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation for binomial_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_(const Cmp_Fn& r_cmp_fn) :
+  PB_DS_BASE_C_DEC(r_cmp_fn)
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_(const PB_DS_CLASS_C_DEC& other) :
+  PB_DS_BASE_C_DEC(other)
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~binomial_heap_() { }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..10bec6959
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation for binomial_heap_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{ base_type::assert_valid(true); }
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
new file mode 100644
index 000000000..1d66d1b14
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
@@ -0,0 +1,234 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file binomial_heap_base_.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+#ifndef PB_DS_BINOMIAL_HEAP_BASE_HPP
+#define PB_DS_BINOMIAL_HEAP_BASE_HPP
+
+/*
+ * Binomial heap base.
+ * Vuillemin J is the mastah.
+ * Modified from CLRS.
+ */
+
+#include <debug/debug.h>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_BASE_C_DEC \
+    left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
+				  typename Allocator::size_type, \
+				  Allocator, false>
+#else 
+#define PB_DS_BASE_C_DEC \
+    left_child_next_sibling_heap_<Value_Type, Cmp_Fn,	\
+				typename Allocator::size_type, Allocator>
+#endif 
+
+    /**
+     * class description = "8y|\|0|\/|i41 h34p 74813">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class binomial_heap_base_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    protected:
+      typedef typename base_type::node node;
+
+      typedef typename base_type::node_pointer node_pointer;
+
+      typedef typename base_type::const_node_pointer const_node_pointer;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+      typedef
+      typename PB_DS_BASE_C_DEC::const_point_iterator
+      const_point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::iterator iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+    public:
+
+      inline point_iterator
+      push(const_reference r_val);
+
+      void
+      modify(point_iterator it, const_reference r_new_val);
+
+      inline const_reference
+      top() const;
+
+      void
+      pop();
+
+      void
+      erase(point_iterator it);
+
+      inline void
+      clear();
+
+      template<typename Pred>
+      size_type
+      erase_if(Pred pred);
+
+      template<typename Pred>
+      void
+      split(Pred pred, PB_DS_CLASS_C_DEC& other);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+    protected:
+
+      binomial_heap_base_();
+
+      binomial_heap_base_(const Cmp_Fn& r_cmp_fn);
+
+      binomial_heap_base_(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~binomial_heap_base_();
+
+      template<typename It>
+      void
+      copy_from_range(It first_it, It last_it);
+
+      inline void
+      find_max();
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid(bool strictly_binomial) const;
+
+      void
+      assert_max() const;
+#endif 
+
+    private:
+
+      inline node_pointer
+      fix(node_pointer p_nd) const;
+
+      inline void
+      insert_node(node_pointer p_nd);
+
+      inline void
+      remove_parentless_node(node_pointer p_nd);
+
+      inline node_pointer
+      join(node_pointer p_lhs, node_pointer p_rhs) const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_node_consistent(const_node_pointer, bool, bool) const;
+#endif
+
+    protected:
+      node_pointer m_p_max;
+    };
+
+#include <ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_BASE_C_DEC
+
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..08cc43738
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,97 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    push(*(first_it++));
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_base_() :
+  m_p_max(0)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_base_(const Cmp_Fn& r_cmp_fn) :
+  PB_DS_BASE_C_DEC(r_cmp_fn),
+  m_p_max(0)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+binomial_heap_base_(const PB_DS_CLASS_C_DEC& other) :
+  PB_DS_BASE_C_DEC(other),
+  m_p_max(0)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+
+    base_type::swap(other);
+
+  std::swap(m_p_max, other.m_p_max);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~binomial_heap_base_()
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
new file mode 100644
index 000000000..6cf01e00c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
@@ -0,0 +1,99 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid(bool strictly_binomial) const
+{
+  base_type::assert_valid();
+  assert_node_consistent(base_type::m_p_root, strictly_binomial, true);
+  assert_max();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_max() const
+{
+  if (m_p_max == 0)
+    return;
+  _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == 0);
+  for (const_iterator it = base_type::begin(); it != base_type::end(); ++it)
+    _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value,
+					      it.m_p_nd->m_value));
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial,
+		       bool increasing) const
+{
+  _GLIBCXX_DEBUG_ASSERT(increasing || strictly_binomial);
+  base_type::assert_node_consistent(p_nd, false);
+  if (p_nd == 0)
+    return;
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == base_type::degree(p_nd));
+  _GLIBCXX_DEBUG_ASSERT(base_type::size_under_node(p_nd) ==
+		   static_cast<size_type>(1 << p_nd->m_metadata));
+  assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing);
+  assert_node_consistent(p_nd->m_p_l_child, true, false);
+  if (p_nd->m_p_next_sibling != 0)
+    {
+      if (increasing)
+	{
+	  if (strictly_binomial)
+	    _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
+				  < p_nd->m_p_next_sibling->m_metadata);
+	  else
+	    _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
+				  <= p_nd->m_p_next_sibling->m_metadata);
+	}
+      else
+	_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
+			      > p_nd->m_p_next_sibling->m_metadata);
+    }
+}
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
new file mode 100644
index 000000000..df0ea6bdc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+pop()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  if (m_p_max == 0)
+    find_max();
+
+  _GLIBCXX_DEBUG_ASSERT(m_p_max != 0);
+
+  node_pointer p_nd = m_p_max;
+
+  remove_parentless_node(m_p_max);
+
+  base_type::actual_erase_node(p_nd);
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+remove_parentless_node(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(base_type::parent(p_nd) == 0);
+
+  node_pointer p_cur_root = p_nd == base_type::m_p_root?
+    p_nd->m_p_next_sibling :
+    base_type::m_p_root;
+
+  if (p_cur_root != 0)
+    p_cur_root->m_p_prev_or_parent = 0;
+
+  if (p_nd->m_p_prev_or_parent != 0)
+    p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling;
+
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+
+  node_pointer p_child = p_nd->m_p_l_child;
+
+  if (p_child != 0)
+    {
+      p_child->m_p_prev_or_parent = 0;
+
+      while (p_child->m_p_next_sibling != 0)
+	p_child = p_child->m_p_next_sibling;
+    }
+
+  m_p_max = 0;
+
+  base_type::m_p_root = join(p_cur_root, p_child);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  base_type::clear();
+
+  m_p_max = 0;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase(point_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  base_type::bubble_to_top(it.m_p_nd);
+
+  remove_parentless_node(it.m_p_nd);
+
+  base_type::actual_erase_node(it.m_p_nd);
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    }
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+    if (base_type::empty())
+      {
+        _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+	  return 0;
+      }
+
+  base_type::to_linked_list();
+
+  node_pointer p_out = base_type::prune(pred);
+
+  size_type ersd = 0;
+
+  while (p_out != 0)
+    {
+      ++ersd;
+
+      node_pointer p_next = p_out->m_p_next_sibling;
+
+      base_type::actual_erase_node(p_out);
+
+      p_out = p_next;
+    }
+
+  node_pointer p_cur = base_type::m_p_root;
+
+  base_type::m_p_root = 0;
+
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+
+      p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0;
+
+      p_cur->m_metadata = 0;
+
+      p_cur->m_p_next_sibling = base_type::m_p_root;
+
+      if (base_type::m_p_root != 0)
+	base_type::m_p_root->m_p_prev_or_parent = p_cur;
+
+      base_type::m_p_root = p_cur;
+
+      base_type::m_p_root = fix(base_type::m_p_root);
+
+      p_cur = p_next;
+    }
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+    return ersd;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
new file mode 100644
index 000000000..48409d831
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  if (m_p_max == 0)
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->find_max();
+
+  _GLIBCXX_DEBUG_ASSERT(m_p_max != 0);
+  return m_p_max->m_value;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+find_max()
+{
+  node_pointer p_cur = base_type::m_p_root;
+
+  m_p_max = p_cur;
+
+  while (p_cur != 0)
+    {
+      if (Cmp_Fn::operator()(m_p_max->m_value, p_cur->m_value))
+	m_p_max = p_cur;
+
+      p_cur = p_cur->m_p_next_sibling;
+    }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
new file mode 100644
index 000000000..1ccaddf43
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
@@ -0,0 +1,216 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+push(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+    node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
+
+  insert_node(p_nd);
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+    return point_iterator(p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+insert_node(node_pointer p_nd)
+{
+  if (base_type::m_p_root == 0)
+    {
+      p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent =
+	p_nd->m_p_l_child = 0;
+
+      p_nd->m_metadata = 0;
+
+      base_type::m_p_root = p_nd;
+
+      return;
+    }
+
+  if (base_type::m_p_root->m_metadata > 0)
+    {
+      p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0;
+
+      p_nd->m_p_next_sibling = base_type::m_p_root;
+
+      base_type::m_p_root->m_p_prev_or_parent = p_nd;
+
+      base_type::m_p_root = p_nd;
+
+      p_nd->m_metadata = 0;
+
+      return;
+    }
+
+  if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value))
+    {
+      p_nd->m_p_next_sibling = base_type::m_p_root->m_p_next_sibling;
+
+      p_nd->m_p_prev_or_parent = 0;
+
+      p_nd->m_metadata = 1;
+
+      p_nd->m_p_l_child = base_type::m_p_root;
+
+      base_type::m_p_root->m_p_prev_or_parent = p_nd;
+
+      base_type::m_p_root->m_p_next_sibling = 0;
+
+      base_type::m_p_root = p_nd;
+    }
+  else
+    {
+      p_nd->m_p_next_sibling = 0;
+
+      p_nd->m_p_l_child = 0;
+
+      p_nd->m_p_prev_or_parent = base_type::m_p_root;
+
+      p_nd->m_metadata = 0;
+
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root->m_p_l_child == 0);
+      base_type::m_p_root->m_p_l_child = p_nd;
+
+      base_type::m_p_root->m_metadata = 1;
+    }
+
+  base_type::m_p_root = fix(base_type::m_p_root);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+fix(node_pointer p_nd) const
+{
+  while (p_nd->m_p_next_sibling != 0&& 
+	 p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata)
+    {
+      node_pointer p_next = p_nd->m_p_next_sibling;
+
+      if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
+        {
+	  p_next->m_p_prev_or_parent =
+	    p_nd->m_p_prev_or_parent;
+
+	  if (p_nd->m_p_prev_or_parent != 0)
+	    p_nd->m_p_prev_or_parent->m_p_next_sibling = p_next;
+
+	  base_type::make_child_of(p_nd, p_next);
+
+	  ++p_next->m_metadata;
+
+	  p_nd = p_next;
+        }
+      else
+        {
+	  p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
+
+	  if (p_nd->m_p_next_sibling != 0)
+	    p_next->m_p_next_sibling = 0;
+
+	  base_type::make_child_of(p_next, p_nd);
+
+	  ++p_nd->m_metadata;
+        }
+    }
+
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
+
+  return p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+modify(point_iterator it, const_reference r_new_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    node_pointer p_nd = it.m_p_nd;
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false);)
+
+    const bool bubble_up = Cmp_Fn::operator()(p_nd->m_value, r_new_val);
+
+  p_nd->m_value = r_new_val;
+
+  if (bubble_up)
+    {
+      node_pointer p_parent = base_type::parent(p_nd);
+
+      while (p_parent != 0&& 
+	     Cmp_Fn::operator()(p_parent->m_value, p_nd->m_value))
+        {
+	  base_type::swap_with_parent(p_nd, p_parent);
+
+	  p_parent = base_type::parent(p_nd);
+        }
+
+      if (p_nd->m_p_prev_or_parent == 0)
+	base_type::m_p_root = p_nd;
+
+      m_p_max = 0;
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+
+        return;
+    }
+
+  base_type::bubble_to_top(p_nd);
+
+  remove_parentless_node(p_nd);
+
+  insert_node(p_nd);
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..9f7e36e2b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
@@ -0,0 +1,232 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for a base of binomial heaps.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+void
+PB_DS_CLASS_C_DEC::
+split(Pred pred, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+
+    other.clear();
+
+  if (base_type::empty())
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+        _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+
+        return;
+    }
+
+  base_type::to_linked_list();
+
+  node_pointer p_out = base_type::prune(pred);
+
+  while (p_out != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
+      --base_type::m_size;
+
+      ++other.m_size;
+
+      node_pointer p_next = p_out->m_p_next_sibling;
+
+      p_out->m_p_l_child = p_out->m_p_prev_or_parent = 0;
+
+      p_out->m_metadata = 0;
+
+      p_out->m_p_next_sibling = other.m_p_root;
+
+      if (other.m_p_root != 0)
+	other.m_p_root->m_p_prev_or_parent = p_out;
+
+      other.m_p_root = p_out;
+
+      other.m_p_root = other.fix(other.m_p_root);
+
+      p_out = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+
+    node_pointer p_cur = base_type::m_p_root;
+
+  base_type::m_p_root = 0;
+
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+
+      p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0;
+
+      p_cur->m_metadata = 0;
+
+      p_cur->m_p_next_sibling = base_type::m_p_root;
+
+      if (base_type::m_p_root != 0)
+	base_type::m_p_root->m_p_prev_or_parent = p_cur;
+
+      base_type::m_p_root = p_cur;
+
+      base_type::m_p_root = fix(base_type::m_p_root);
+
+      p_cur = p_next;
+    }
+
+  m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+
+    node_pointer p_other = other.m_p_root;
+
+  if (p_other != 0)
+    do
+      {
+	node_pointer p_next = p_other->m_p_next_sibling;
+
+	std::swap(p_other->m_p_next_sibling, p_other->m_p_prev_or_parent);
+
+	p_other = p_next;
+      }
+    while (p_other != 0);
+
+  base_type::m_p_root = join(base_type::m_p_root, other.m_p_root);
+  base_type::m_size += other.m_size;
+  m_p_max = 0;
+
+  other.m_p_root = 0;
+  other.m_size = 0;
+  other.m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+join(node_pointer p_lhs, node_pointer p_rhs) const
+{
+  node_pointer p_ret = 0;
+
+  node_pointer p_cur = 0;
+
+  while (p_lhs != 0 || p_rhs != 0)
+    {
+      if (p_rhs == 0)
+        {
+	  if (p_cur == 0)
+	    p_ret = p_cur = p_lhs;
+	  else
+            {
+	      p_cur->m_p_next_sibling = p_lhs;
+
+	      p_lhs->m_p_prev_or_parent = p_cur;
+            }
+
+	  p_cur = p_lhs = 0;
+        }
+      else if (p_lhs == 0 || p_rhs->m_metadata < p_lhs->m_metadata)
+        {
+	  if (p_cur == 0)
+            {
+	      p_ret = p_cur = p_rhs;
+
+	      p_rhs = p_rhs->m_p_prev_or_parent;
+            }
+	  else
+            {
+	      p_cur->m_p_next_sibling = p_rhs;
+
+	      p_rhs = p_rhs->m_p_prev_or_parent;
+
+	      p_cur->m_p_next_sibling->m_p_prev_or_parent = p_cur;
+
+	      p_cur = p_cur->m_p_next_sibling;
+            }
+        }
+      else if (p_lhs->m_metadata < p_rhs->m_metadata)
+        {
+	  if (p_cur == 0)
+	    p_ret = p_cur = p_lhs;
+	  else
+            {
+	      p_cur->m_p_next_sibling = p_lhs;
+
+	      p_lhs->m_p_prev_or_parent = p_cur;
+
+	      p_cur = p_cur->m_p_next_sibling;
+            }
+
+	  p_lhs = p_cur->m_p_next_sibling;
+        }
+      else
+        {
+	  node_pointer p_next_rhs = p_rhs->m_p_prev_or_parent;
+
+	  p_rhs->m_p_next_sibling = p_lhs;
+
+	  p_lhs = fix(p_rhs);
+
+	  p_rhs = p_next_rhs;
+        }
+    }
+
+  if (p_cur != 0)
+    p_cur->m_p_next_sibling = 0;
+
+  if (p_ret != 0)
+    p_ret->m_p_prev_or_parent = 0;
+
+  return p_ret;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
new file mode 100644
index 000000000..4529a15f4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
@@ -0,0 +1,636 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cc_ht_map_.hpp
+ * Contains an implementation class for cc_ht_map_.
+ */
+
+#include <utility>
+#include <iterator>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp>
+#ifdef _GLIBCXX_DEBUG
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#endif 
+#ifdef PB_DS_HT_MAP_TRACE_
+#include <iostream>
+#endif 
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, typename Hash_Fn, \
+	     typename Eq_Fn, typename Allocator, bool Store_Hash, \
+	     typename Comb_Hash_Fn, typename Resize_Policy>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME cc_ht_map_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME cc_ht_map_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator,	\
+		     Store_Hash, Comb_Hash_Fn, Resize_Policy>
+
+#define PB_DS_HASH_EQ_FN_C_DEC \
+    hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash>
+
+#define PB_DS_RANGED_HASH_FN_C_DEC \
+    ranged_hash_fn<Key,	Hash_Fn, Allocator, Comb_Hash_Fn, Store_Hash>
+
+#define PB_DS_TYPES_TRAITS_C_DEC \
+    types_traits<Key, Mapped, Allocator, Store_Hash>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC \
+    debug_map_base<Key,	Eq_Fn, typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#endif 
+
+    // <011i$i0|\|-<|-|4i|\|i|\|g |-|4$|-| 74813.
+    template<typename Key,
+	     typename Mapped,
+	     typename Hash_Fn,
+	     typename Eq_Fn,
+	     typename Allocator,
+	     bool Store_Hash,
+	     typename Comb_Hash_Fn,
+	     typename Resize_Policy >
+    class PB_DS_CLASS_NAME:
+#ifdef _GLIBCXX_DEBUG
+      protected PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+      public PB_DS_HASH_EQ_FN_C_DEC,
+      public Resize_Policy,
+      public PB_DS_RANGED_HASH_FN_C_DEC,
+      public PB_DS_TYPES_TRAITS_C_DEC
+    {
+    private:
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+      typedef typename traits_base::comp_hash comp_hash;
+      typedef typename traits_base::value_type value_type_;
+      typedef typename traits_base::pointer pointer_;
+      typedef typename traits_base::const_pointer const_pointer_;
+      typedef typename traits_base::reference reference_;
+      typedef typename traits_base::const_reference const_reference_;
+
+      struct entry : public traits_base::stored_value_type
+      {
+	typename Allocator::template rebind<entry>::other::pointer m_p_next;
+      };
+
+      typedef cond_dealtor<entry, Allocator> cond_dealtor_t;
+
+      typedef typename Allocator::template rebind<entry>::other entry_allocator;
+      typedef typename entry_allocator::pointer entry_pointer;
+      typedef typename entry_allocator::const_pointer const_entry_pointer;
+      typedef typename entry_allocator::reference entry_reference;
+      typedef typename entry_allocator::const_reference const_entry_reference;
+
+      typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator;
+      typedef typename entry_pointer_allocator::pointer entry_pointer_array;
+
+      typedef PB_DS_RANGED_HASH_FN_C_DEC ranged_hash_fn_base;
+      typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base;
+      typedef Resize_Policy resize_base;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+#define PB_DS_GEN_POS std::pair<entry_pointer, typename Allocator::size_type>
+
+#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
+
+#undef PB_DS_GEN_POS
+
+    public:
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef Hash_Fn hash_fn;
+      typedef Eq_Fn eq_fn;
+      typedef Comb_Hash_Fn comb_hash_fn;
+      typedef Resize_Policy resize_policy;
+
+      enum
+	{
+	  store_hash = Store_Hash
+	};
+
+      typedef typename traits_base::key_type key_type;
+      typedef typename traits_base::key_pointer key_pointer;
+      typedef typename traits_base::const_key_pointer const_key_pointer;
+      typedef typename traits_base::key_reference key_reference;
+      typedef typename traits_base::const_key_reference const_key_reference;
+      typedef typename traits_base::mapped_type mapped_type;
+      typedef typename traits_base::mapped_pointer mapped_pointer;
+      typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
+      typedef typename traits_base::mapped_reference mapped_reference;
+      typedef typename traits_base::const_mapped_reference const_mapped_reference;
+      typedef typename traits_base::value_type value_type;
+      typedef typename traits_base::pointer pointer;
+      typedef typename traits_base::const_pointer const_pointer;
+      typedef typename traits_base::reference reference;
+      typedef typename traits_base::const_reference const_reference;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef point_iterator_ point_iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_point_iterator_ point_iterator;
+#endif 
+
+      typedef const_point_iterator_ const_point_iterator;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef iterator_ iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_iterator_ iterator;
+#endif 
+
+      typedef const_iterator_ const_iterator;
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const Hash_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&, 
+		       const Resize_Policy&);
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      virtual
+      ~PB_DS_CLASS_NAME();
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+      void
+      initialize();
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      inline bool
+      empty() const;
+
+      Hash_Fn& 
+      get_hash_fn();
+
+      const Hash_Fn& 
+      get_hash_fn() const;
+
+      Eq_Fn& 
+      get_eq_fn();
+
+      const Eq_Fn& 
+      get_eq_fn() const;
+
+      Comb_Hash_Fn& 
+      get_comb_hash_fn();
+
+      const Comb_Hash_Fn& 
+      get_comb_hash_fn() const;
+
+      Resize_Policy& 
+      get_resize_policy();
+
+      const Resize_Policy& 
+      get_resize_policy() const;
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference r_val)
+      { return insert_imp(r_val, traits_base::m_store_extra_indicator); }
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	return (subscript_imp(r_key, traits_base::m_store_extra_indicator));
+#else 
+	insert(r_key);
+	return traits_base::s_null_mapped;
+#endif 
+      }
+
+      inline point_iterator
+      find(const_key_reference);
+
+      inline const_point_iterator
+      find(const_key_reference) const;
+
+      inline point_iterator
+      find_end();
+
+      inline const_point_iterator
+      find_end() const;
+
+      inline bool
+      erase(const_key_reference);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      void
+      clear();
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_HT_MAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+      void
+      deallocate_all();
+
+      inline bool
+      do_resize_if_needed();
+
+      inline void
+      do_resize_if_needed_no_throw();
+
+      void
+      resize_imp(size_type new_size);
+
+      void
+      do_resize(size_type new_size);
+
+      void
+      resize_imp_no_exceptions(size_type, entry_pointer_array, size_type);
+
+      inline entry_pointer
+      resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, false_type);
+
+      inline entry_pointer
+      resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, true_type);
+
+      void
+      deallocate_links_in_list(entry_pointer);
+
+      inline entry_pointer
+      get_entry(const_reference, false_type);
+
+      inline entry_pointer
+      get_entry(const_reference, true_type);
+
+      inline void
+      rels_entry(entry_pointer);
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      inline mapped_reference
+      subscript_imp(const_key_reference r_key, false_type)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+        const size_type pos = ranged_hash_fn_base::operator()(r_key);
+	entry_pointer p_e = m_entries[pos];
+	resize_base::notify_insert_search_start();
+
+	while (p_e != 0 
+	       && !hash_eq_fn_base::operator()(p_e->m_value.first, r_key))
+	  {
+	    resize_base::notify_insert_search_collision();
+	    p_e = p_e->m_p_next;
+	  }
+
+	resize_base::notify_insert_search_end();
+	if (p_e != 0)
+	  {
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+	    return (p_e->m_value.second);
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+	return insert_new_imp(value_type(r_key, mapped_type()), pos)->second;
+      }
+
+      inline mapped_reference
+      subscript_imp(const_key_reference r_key, true_type)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key);
+	entry_pointer p_e = m_entries[pos_hash_pair.first];
+	resize_base::notify_insert_search_start();
+	while (p_e != 0 && 
+	       !hash_eq_fn_base::operator()(p_e->m_value.first, p_e->m_hash, r_key, pos_hash_pair.second))
+	  {
+	    resize_base::notify_insert_search_collision();
+	    p_e = p_e->m_p_next;
+	  }
+
+	resize_base::notify_insert_search_end();
+	if (p_e != 0)
+	  {
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+	    return p_e->m_value.second;
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+	return insert_new_imp(value_type(r_key, mapped_type()), 
+			      pos_hash_pair)->second;
+      }
+#endif 
+
+      inline std::pair<point_iterator, bool>
+      insert_imp(const_reference, false_type);
+
+      inline std::pair<point_iterator, bool>
+      insert_imp(const_reference, true_type);
+
+      inline pointer
+      insert_new_imp(const_reference r_val, size_type pos)
+      {
+	if (do_resize_if_needed())
+	  pos = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val));
+
+	// Following lines might throw an exception.
+	entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator);
+
+	// At this point no exceptions can be thrown.
+	p_e->m_p_next = m_entries[pos];
+	m_entries[pos] = p_e;
+	resize_base::notify_inserted(++m_num_used_e);
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return &p_e->m_value;
+      }
+
+      inline pointer
+      insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair)
+      {
+	// Following lines might throw an exception.
+	if (do_resize_if_needed())
+	  r_pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val));
+
+	entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator);
+
+	// At this point no exceptions can be thrown.
+	p_e->m_hash = r_pos_hash_pair.second;
+	p_e->m_p_next = m_entries[r_pos_hash_pair.first];
+	m_entries[r_pos_hash_pair.first] = p_e;
+	resize_base::notify_inserted(++m_num_used_e);
+	_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return &p_e->m_value;
+      }
+
+      inline pointer
+      find_key_pointer(const_key_reference r_key, false_type)
+      {
+	entry_pointer p_e = m_entries[ranged_hash_fn_base::operator()(r_key)];
+	resize_base::notify_find_search_start();
+	while (p_e != 0 && 
+	       !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
+	  {
+	    resize_base::notify_find_search_collision();
+	    p_e = p_e->m_p_next;
+	  }
+
+	resize_base::notify_find_search_end();
+
+#ifdef _GLIBCXX_DEBUG
+	if (p_e == 0)
+	  debug_base::check_key_does_not_exist(r_key);
+	else
+	  debug_base::check_key_exists(r_key);
+#endif 
+	return &p_e->m_value;
+      }
+
+      inline pointer
+      find_key_pointer(const_key_reference r_key, true_type)
+      {
+	comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key);
+	entry_pointer p_e = m_entries[pos_hash_pair.first];
+	resize_base::notify_find_search_start();
+	while (p_e != 0 && 
+	       !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
+					    p_e->m_hash,
+					    r_key, pos_hash_pair.second))
+	  {
+	    resize_base::notify_find_search_collision();
+	    p_e = p_e->m_p_next;
+	  }
+
+	resize_base::notify_find_search_end();
+
+#ifdef _GLIBCXX_DEBUG
+	if (p_e == 0)
+	  debug_base::check_key_does_not_exist(r_key);
+	else
+	  debug_base::check_key_exists(r_key);
+#endif 
+	return &p_e->m_value;
+      }
+
+      inline bool
+      erase_in_pos_imp(const_key_reference, size_type);
+
+      inline bool
+      erase_in_pos_imp(const_key_reference, const comp_hash&);
+
+      inline void
+      erase_entry_pointer(entry_pointer&);
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      void
+      inc_it_state(pointer& r_p_value, 
+		   std::pair<entry_pointer, size_type>& r_pos) const
+      {
+	inc_it_state((const_mapped_pointer& )r_p_value, r_pos);
+      }
+#endif 
+
+      void
+      inc_it_state(const_pointer& r_p_value, 
+		   std::pair<entry_pointer, size_type>& r_pos) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(r_p_value != 0);
+	r_pos.first = r_pos.first->m_p_next;
+	if (r_pos.first != 0)
+	  {
+	    r_p_value = &r_pos.first->m_value;
+	    return;
+	  }
+
+	for (++r_pos.second; r_pos.second < m_num_e; ++r_pos.second)
+	  if (m_entries[r_pos.second] != 0)
+	    {
+	      r_pos.first = m_entries[r_pos.second];
+	      r_p_value = &r_pos.first->m_value;
+	      return;
+	    }
+	r_p_value = 0;
+      }
+
+      void
+      get_start_it_state(pointer& r_p_value, 
+			 std::pair<entry_pointer, size_type>& r_pos) const
+      {
+	for (r_pos.second = 0; r_pos.second < m_num_e; ++r_pos.second)
+	  if (m_entries[r_pos.second] != 0)
+	    {
+	      r_pos.first = m_entries[r_pos.second];
+	      r_p_value = &r_pos.first->m_value;
+	      return;
+	    }
+	r_p_value = 0;
+      }
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_entry_pointer_array_valid(const entry_pointer_array) const;
+
+      void
+      assert_entry_pointer_valid(const entry_pointer, true_type) const;
+
+      void
+      assert_entry_pointer_valid(const entry_pointer, false_type) const;
+#endif 
+
+#ifdef PB_DS_HT_MAP_TRACE_
+      void
+      trace_list(const_entry_pointer) const;
+#endif 
+
+    private:
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      friend class iterator_;
+#endif 
+
+      friend class const_iterator_;
+
+      static entry_allocator 		s_entry_allocator;
+      static entry_pointer_allocator 	s_entry_pointer_allocator;
+      static iterator 			s_end_it;
+      static const_iterator 		s_const_end_it;
+      static point_iterator 		s_find_end_it;
+      static const_point_iterator 	s_const_find_end_it;
+
+      size_type 			m_num_e;
+      size_type 			m_num_used_e;
+      entry_pointer_array 		m_entries;
+
+      enum
+	{
+	  store_hash_ok = !Store_Hash 
+	                  || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value
+	};
+
+      PB_DS_STATIC_ASSERT(sth, store_hash_ok);
+    };
+
+#include <ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_HASH_EQ_FN_C_DEC
+#undef PB_DS_RANGED_HASH_FN_C_DEC
+#undef PB_DS_TYPES_TRAITS_C_DEC
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_V2F
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
new file mode 100644
index 000000000..c61eff99b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cmp_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s entire container comparison related
+ *    functions.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Other_HT_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+operator==(const Other_HT_Map_Type& other) const
+{ return cmp_with_other(other); }
+
+PB_DS_CLASS_T_DEC
+template<typename Other_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+cmp_with_other(const Other_Map_Type& other) const
+{
+  if (size() != other.size())
+    return false;
+
+  for (typename Other_Map_Type::const_iterator it = other.begin();
+       it != other.end(); ++it)
+    {
+      const_key_reference r_key = const_key_reference(PB_DS_V2F(*it));
+
+      const_mapped_pointer p_mapped_value =
+	const_cast<PB_DS_CLASS_C_DEC& >(*this).
+	find_key_pointer(r_key, traits_base::m_store_extra_indicator);
+
+      if (p_mapped_value == 0)
+	return false;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      if (p_mapped_value->second != it->second)
+	return false;
+#endif
+    }
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Other_HT_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+operator!=(const Other_HT_Map_Type& other) const
+{ return !operator==(other); }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
new file mode 100644
index 000000000..fa3f31df0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_key_dtor_entry_dealtor.hpp
+ * Contains a conditional key destructor, used for exception handling.
+ */
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC template<typename HT_Map>
+#define PB_DS_CLASS_C_DEC PB_DS_CKDED_CLASS_NAME<HT_Map>
+
+    /**
+     * A conditional key destructor, used for exception handling.
+     **/
+    template<typename HT_Map>
+    class PB_DS_CKDED_CLASS_NAME
+    {
+    public:
+      typedef typename HT_Map::entry entry;
+      typedef typename HT_Map::entry_allocator entry_allocator;
+      typedef typename HT_Map::key_type key_type;
+
+      inline
+      PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e);
+
+      inline
+      ~PB_DS_CKDED_CLASS_NAME();
+
+      inline void
+      set_key_destruct();
+
+      inline void
+      set_no_action_destructor();
+
+    protected:
+      entry_allocator* const m_p_a;
+      entry* const m_p_e;
+
+      bool m_key_destruct;
+      bool m_no_action_destructor;
+    };
+
+    PB_DS_CLASS_T_DEC
+    inline
+    PB_DS_CLASS_C_DEC::
+    PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e) 
+    : m_p_a(p_a), m_p_e(p_e), m_key_destruct(false), 
+      m_no_action_destructor(false)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    set_key_destruct()
+    { m_key_destruct = true; }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    set_no_action_destructor()
+    { m_no_action_destructor = true; }
+
+    PB_DS_CLASS_T_DEC
+    inline
+    PB_DS_CLASS_C_DEC::
+    ~PB_DS_CKDED_CLASS_NAME()
+    {
+      if (m_no_action_destructor)
+	return;
+      if (m_key_destruct)
+	m_p_e->m_value.first.~key_type();
+      m_p_a->deallocate(m_p_e, 1);
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
new file mode 100644
index 000000000..88a568003
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s constructors, destructor,
+ *    and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::entry_allocator
+PB_DS_CLASS_C_DEC::s_entry_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::entry_pointer_allocator
+PB_DS_CLASS_C_DEC::s_entry_pointer_allocator;
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME() :
+  ranged_hash_fn_base(resize_base::get_nearest_larger_size(1)),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn) :
+  ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) :
+  PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
+  ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  std::fill(m_entries, m_entries + m_num_e, (entry_pointer)0);
+  Resize_Policy::notify_cleared();
+  ranged_hash_fn_base::notify_resized(m_num_e);
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn) :
+  PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
+  ranged_hash_fn_base(resize_base::get_nearest_larger_size(1),
+		      r_hash_fn, r_comb_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn, const Resize_Policy& r_resize_policy) :
+  PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
+  Resize_Policy(r_resize_policy),
+  ranged_hash_fn_base(resize_base::get_nearest_larger_size(1),
+		      r_hash_fn, r_comb_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+#ifdef _GLIBCXX_DEBUG
+  debug_base(other),
+#endif 
+  PB_DS_HASH_EQ_FN_C_DEC(other),
+  resize_base(other), ranged_hash_fn_base(other),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_pointer_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+    __try
+      {
+        copy_from_range(other.begin(), other.end());
+      }
+    __catch(...)
+      {
+        deallocate_all();
+        __throw_exception_again;
+      }
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_CLASS_NAME()
+{ deallocate_all(); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+
+  std::swap(m_entries, other.m_entries);
+  std::swap(m_num_e, other.m_num_e);
+  std::swap(m_num_used_e, other.m_num_used_e);
+  ranged_hash_fn_base::swap(other);
+  hash_eq_fn_base::swap(other);
+  resize_base::swap(other);
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+deallocate_all()
+{
+  clear();
+  s_entry_pointer_allocator.deallocate(m_entries, m_num_e);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{
+  std::fill(m_entries, m_entries + m_num_e, entry_pointer(0));
+  Resize_Policy::notify_resized(m_num_e);
+  Resize_Policy::notify_cleared();
+  ranged_hash_fn_base::notify_resized(m_num_e);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..4f1cce648
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_no_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s constructors, destructor,
+ *    and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, 
+			   false_type)
+{
+  // Following lines might throw an exception.
+  entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator);
+
+  // At this point no exceptions can be thrown.
+  p->m_p_next = m_entries[pos];
+  m_entries[pos] = p;
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..a2b6fa111
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s constructors, destructor,
+ *    and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+constructor_insert_new_imp(const_reference r_val, size_type pos, true_type)
+{
+  // Following lines might throw an exception.
+  entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator);
+
+  // At this point no exceptions can be thrown.
+  p->m_p_next = m_entries[pos];
+  p->m_hash = ranged_hash_fn_base::operator()((const_key_reference)(PB_DS_V2F(p->m_value))).second;
+
+  m_entries[pos] = p;
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
new file mode 100644
index 000000000..b42ed7aa8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  debug_base::check_size(m_num_used_e);
+  assert_entry_pointer_array_valid(m_entries);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_entry_pointer_array_valid(const entry_pointer_array a_p_entries) const
+{
+  size_type iterated_num_used_e = 0;
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      entry_pointer p_e = a_p_entries[pos];
+      while (p_e != 0)
+        {
+	  ++iterated_num_used_e;
+	  assert_entry_pointer_valid(p_e, traits_base::m_store_extra_indicator);
+	  p_e = p_e->m_p_next;
+        }
+    }
+  _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
+}
+
+#include <ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp>
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..770bed34c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_no_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_entry_pointer_valid(const entry_pointer p, false_type) const
+{ debug_base::check_key_exists(PB_DS_V2F(p->m_value)); }
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..3d17671e9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_entry_pointer_valid(const entry_pointer p_e, true_type) const
+{
+  debug_base::check_key_exists(PB_DS_V2F(p_e->m_value));
+  comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value));
+  _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
new file mode 100644
index 000000000..079991193
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file entry_list_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s entry-list related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+deallocate_links_in_list(entry_pointer p_e)
+{
+  while (p_e != 0)
+    {
+      entry_pointer p_dealloc_e = p_e;
+      p_e = p_e->m_p_next;
+      s_entry_allocator.deallocate(p_dealloc_e, 1);
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+get_entry(const_reference r_val, true_type)
+{
+  // Following line might throw an exception.
+  entry_pointer p_e = s_entry_allocator.allocate(1);
+
+  // Following lines* cannot* throw an exception.
+  new (&p_e->m_value) value_type(r_val);
+  return p_e;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+get_entry(const_reference r_val, false_type)
+{
+  // Following line might throw an exception.
+  entry_pointer p_e = s_entry_allocator.allocate(1);
+  cond_dealtor_t cond(p_e);
+
+  // Following lines might throw an exception.
+  new (&p_e->m_value) value_type(r_val);
+  cond.set_no_action();
+  return p_e;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rels_entry(entry_pointer p_e)
+{
+  // The following lines cannot throw exceptions (unless if key-data dtors do).
+  p_e->m_value.~value_type();
+  s_entry_allocator.deallocate(p_e, 1);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
new file mode 100644
index 000000000..c6febe421
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s erase related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+erase_entry_pointer(entry_pointer& r_p_e)
+{
+  _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value)));
+
+  entry_pointer p_e = r_p_e;
+  r_p_e = r_p_e->m_p_next;
+  rels_entry(p_e);
+  _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0);
+  resize_base::notify_erased(--m_num_used_e);
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  size_type num_ersd = 0;
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      while (m_entries[pos] != 0 && pred(m_entries[pos]->m_value))
+        {
+	  ++num_ersd;
+	  entry_pointer p_next_e = m_entries[pos]->m_p_next;
+	  erase_entry_pointer(m_entries[pos]);
+	  m_entries[pos] = p_next_e;
+        }
+
+      entry_pointer p_e = m_entries[pos];
+      while (p_e != 0 && p_e->m_p_next != 0)
+        {
+	  if (pred(p_e->m_p_next->m_value))
+            {
+	      ++num_ersd;
+	      erase_entry_pointer(p_e->m_p_next);
+            }
+	  else
+	    p_e = p_e->m_p_next;
+        }
+    }
+
+  do_resize_if_needed_no_throw();
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    while (m_entries[pos] != 0)
+      erase_entry_pointer(m_entries[pos]);
+  do_resize_if_needed_no_throw();
+  resize_base::notify_cleared();
+}
+
+#include <ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..4f513e998
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_no_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s erase related functions,
+ * when the hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key));
+}
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase_in_pos_imp(const_key_reference r_key, size_type pos)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  entry_pointer p_e = m_entries[pos];
+  resize_base::notify_erase_search_start();
+  if (p_e == 0)
+    {
+      resize_base::notify_erase_search_end();
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return false;
+    }
+
+  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
+    {
+      resize_base::notify_erase_search_end();
+      _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_exists(r_key);)
+      erase_entry_pointer(m_entries[pos]);
+      do_resize_if_needed_no_throw();
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return true;
+    }
+
+  while (true)
+    {
+      entry_pointer p_next_e = p_e->m_p_next;
+      if (p_next_e == 0)
+        {
+	  resize_base::notify_erase_search_end();
+	  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+          _GLIBCXX_DEBUG_ONLY(assert_valid();)
+          return false;
+        }
+
+      if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key))
+        {
+	  resize_base::notify_erase_search_end();
+	  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+          erase_entry_pointer(p_e->m_p_next);
+	  do_resize_if_needed_no_throw();
+	  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+          return true;
+        }
+      resize_base::notify_erase_search_collision();
+      p_e = p_next_e;
+    }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..6e21aceb9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s erase related functions,
+ * when the hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase_in_pos_imp(const_key_reference r_key, const comp_hash& r_pos_hash_pair)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  entry_pointer p_e = m_entries[r_pos_hash_pair.first];
+  resize_base::notify_erase_search_start();
+  if (p_e == 0)
+    {
+      resize_base::notify_erase_search_end();
+      _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_does_not_exist(r_key);)
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return false;
+    }
+
+  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
+				  r_key, r_pos_hash_pair.second))
+    {
+      resize_base::notify_erase_search_end();
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+      erase_entry_pointer(m_entries[r_pos_hash_pair.first]);
+      do_resize_if_needed_no_throw();
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return true;
+    }
+
+  while (true)
+    {
+      entry_pointer p_next_e = p_e->m_p_next;
+      if (p_next_e == 0)
+        {
+	  resize_base::notify_erase_search_end();
+	  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+          _GLIBCXX_DEBUG_ONLY(assert_valid();)
+          return false;
+        }
+
+      if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value),
+				      p_next_e->m_hash, r_key,
+				      r_pos_hash_pair.second))
+        {
+	  resize_base::notify_erase_search_end();
+	  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+          erase_entry_pointer(p_e->m_p_next);
+	  do_resize_if_needed_no_throw();
+	  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+          return true;
+        }
+      resize_base::notify_erase_search_collision();
+      p_e = p_next_e;
+    }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
new file mode 100644
index 000000000..f88494180
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s find related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return find_key_pointer(r_key, traits_base::m_store_extra_indicator);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key) const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return const_cast<PB_DS_CLASS_C_DEC& >(*this).find_key_pointer(r_key, 
+					traits_base::m_store_extra_indicator);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find_end()
+{ return 0; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find_end() const
+{ return 0; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..1db51c990
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
@@ -0,0 +1,41 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s find related functions,
+ * when the hash value is stored.
+ */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
new file mode 100644
index 000000000..2b429960c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s entire container info related
+ * functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{ return m_num_used_e; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return m_entry_allocator.max_size(); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return (size() == 0); }
+
+PB_DS_CLASS_T_DEC
+template<typename Other_HT_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+operator==(const Other_HT_Map_Type& other) const
+{ return cmp_with_other(other); }
+
+PB_DS_CLASS_T_DEC
+template<typename Other_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+cmp_with_other(const Other_Map_Type& other) const
+{
+  if (size() != other.size())
+    return false;
+
+  for (typename Other_Map_Type::const_iterator it = other.begin();
+       it != other.end(); ++it)
+    {
+      const_key_reference r_key =(const_key_reference)PB_DS_V2F(*it);
+      const_mapped_pointer p_mapped_value =
+	const_cast<PB_DS_CLASS_C_DEC& >(*this).
+	find_key_pointer(r_key, traits_base::m_store_extra_indicator);
+
+      if (p_mapped_value == 0)
+	return false;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      if (p_mapped_value->second != it->second)
+	return false;
+#endif 
+    }
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Other_HT_Map_Type>
+bool
+PB_DS_CLASS_C_DEC::
+operator!=(const Other_HT_Map_Type& other) const
+{ return !operator==(other); }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
new file mode 100644
index 000000000..0679dbe6e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
@@ -0,0 +1,43 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s insert related functions.
+ */
+
+#include <ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..1de42e8d6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_no_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s insert related functions,
+ * when the hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_imp(const_reference r_val, false_type)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  const_key_reference r_key = PB_DS_V2F(r_val);
+  const size_type pos = ranged_hash_fn_base::operator()(r_key);
+  entry_pointer p_e = m_entries[pos];
+  resize_base::notify_insert_search_start();
+
+  while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), 
+						     r_key))
+    {
+      resize_base::notify_insert_search_collision();
+      p_e = p_e->m_p_next;
+    }
+
+  resize_base::notify_insert_search_end();
+  if (p_e != 0)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+      return std::make_pair(&p_e->m_value, false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+  return std::make_pair(insert_new_imp(r_val, pos), true);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..c7b0bdc9a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s insert related functions,
+ * when the hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_imp(const_reference r_val, true_type)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  const_key_reference key = PB_DS_V2F(r_val);
+  comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(key);
+  entry_pointer p_e = m_entries[pos_hash_pair.first];
+  resize_base::notify_insert_search_start();
+
+  while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
+						     p_e->m_hash,
+						    key, pos_hash_pair.second))
+    {
+      resize_base::notify_insert_search_collision();
+      p_e = p_e->m_p_next;
+    }
+
+  resize_base::notify_insert_search_end();
+  if (p_e != 0)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
+      return std::make_pair(&p_e->m_value, false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
+  return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..a7592b7f1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s iterators related functions, e.g.,
+ * begin().
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::s_end_it;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::s_const_end_it;
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  pointer p_value;
+  std::pair<entry_pointer, size_type> pos;
+  get_start_it_state(p_value, pos);
+  return iterator(p_value, pos, this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{ return s_end_it; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  pointer p_value;
+  std::pair<entry_pointer, size_type> pos;
+  get_start_it_state(p_value, pos);
+  return const_iterator(p_value, pos, this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{ return s_const_end_it; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..9a661b361
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s policy access
+ *    functions.
+ */
+
+PB_DS_CLASS_T_DEC
+Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_hash_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_hash_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Eq_Fn& 
+PB_DS_CLASS_C_DEC::
+get_eq_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Eq_Fn& 
+PB_DS_CLASS_C_DEC::
+get_eq_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Comb_Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_comb_hash_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Comb_Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_comb_hash_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Resize_Policy& 
+PB_DS_CLASS_C_DEC::
+get_resize_policy()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Resize_Policy& 
+PB_DS_CLASS_C_DEC::
+get_resize_policy() const
+{ return *this; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
new file mode 100644
index 000000000..3db838bf8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
@@ -0,0 +1,134 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s resize related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+do_resize_if_needed()
+{
+  if (!resize_base::is_resize_needed())
+    return false;
+  resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+do_resize(size_type len)
+{ resize_imp(resize_base::get_nearest_larger_size(len)); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+do_resize_if_needed_no_throw()
+{
+  if (!resize_base::is_resize_needed())
+    return;
+
+  __try
+    {
+      resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
+    }
+  __catch(...)
+    { }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+resize_imp(size_type new_size)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  if (new_size == m_num_e)
+    return;
+
+  const size_type old_size = m_num_e;
+  entry_pointer_array a_p_entries_resized;
+
+  // Following line might throw an exception.
+  ranged_hash_fn_base::notify_resized(new_size);
+
+  __try
+    {
+      // Following line might throw an exception.
+      a_p_entries_resized = s_entry_pointer_allocator.allocate(new_size);
+      m_num_e = new_size;
+    }
+  __catch(...)
+    {
+      ranged_hash_fn_base::notify_resized(old_size);
+      __throw_exception_again;
+    }
+
+  // At this point no exceptions can be thrown.
+  resize_imp_no_exceptions(new_size, a_p_entries_resized, old_size);
+  Resize_Policy::notify_resized(new_size);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+resize_imp_no_exceptions(size_type new_size, entry_pointer_array a_p_entries_resized, size_type old_size)
+{
+  std::fill(a_p_entries_resized, a_p_entries_resized + m_num_e,
+	    entry_pointer(0));
+
+  for (size_type pos = 0; pos < old_size; ++pos)
+    {
+      entry_pointer p_e = m_entries[pos];
+      while (p_e != 0)
+	p_e = resize_imp_no_exceptions_reassign_pointer(p_e, a_p_entries_resized,  traits_base::m_store_extra_indicator);
+    }
+
+  m_num_e = new_size;
+  _GLIBCXX_DEBUG_ONLY(assert_entry_pointer_array_valid(a_p_entries_resized);)
+  s_entry_pointer_allocator.deallocate(m_entries, old_size);
+  m_entries = a_p_entries_resized;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+#include <ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..6577630f0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_no_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s resize related functions, when the
+ *    hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, false_type)
+{
+  const size_type hash_pos =
+    ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value));
+
+  entry_pointer const p_next_e = p_e->m_p_next;
+  p_e->m_p_next = a_p_entries_resized[hash_pos];
+  a_p_entries_resized[hash_pos] = p_e;
+  return p_next_e;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..c1adb61b1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_store_hash_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s resize related functions, when the
+ *    hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, true_type)
+{
+  const comp_hash pos_hash_pair =
+    ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash);
+
+  entry_pointer const p_next_e = p_e->m_p_next;
+  p_e->m_p_next = a_p_entries_resized[pos_hash_pair.first];
+  a_p_entries_resized[pos_hash_pair.first] = p_e;
+  return p_next_e;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
new file mode 100644
index 000000000..0d5ec85f2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file size_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s entire container size related
+ *    functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{ return m_num_used_e; }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return (size() == 0); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return s_entry_allocator.max_size(); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
new file mode 100644
index 000000000..b9c1ee20e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
@@ -0,0 +1,46 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file standard_policies.hpp
+ * Contains standard policies for cc_ht_map types.
+ */
+
+#ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
+#define PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
+
+#include <ext/pb_ds/detail/standard_policies.hpp>
+
+#endif // #ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
new file mode 100644
index 000000000..497977d97
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s trace-mode functions.
+ */
+
+#ifdef PB_DS_HT_MAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << static_cast<unsigned long>(m_num_e) << " " 
+	    << static_cast<unsigned long>(m_num_used_e) << std::endl;
+
+  for (size_type i = 0; i < m_num_e; ++i)
+    {
+      std::cerr << static_cast<unsigned long>(i) << " ";
+      trace_list(m_entries[i]);
+      std::cerr << std::endl;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_list(const_entry_pointer p_l) const
+{
+  size_type iterated_num_used_e = 0;
+  while (p_l != 0)
+    {
+      std::cerr << PB_DS_V2F(p_l->m_value) << " ";
+      p_l = p_l->m_p_next;
+    }
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cond_dealtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cond_dealtor.hpp
new file mode 100644
index 000000000..1ee48a2ac
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/cond_dealtor.hpp
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_dealtor.hpp
+ * Contains a conditional deallocator.
+ */
+
+#ifndef PB_DS_COND_DEALTOR_HPP
+#define PB_DS_COND_DEALTOR_HPP
+
+namespace __gnu_pbds
+{
+
+  namespace detail
+  {
+
+#define PB_DS_COND_DEALTOR_CLASS_T_DEC		\
+    template<typename Entry, class Allocator>
+
+#define PB_DS_COND_DEALTOR_CLASS_C_DEC				\
+    cond_dealtor<						\
+						Entry,		\
+						Allocator>
+
+    template<typename Entry, class Allocator>
+    class cond_dealtor
+    {
+    public:
+      typedef
+      typename Allocator::template rebind<Entry>::other
+      entry_allocator;
+
+      typedef typename entry_allocator::pointer entry_pointer;
+
+    public:
+      inline
+      cond_dealtor(entry_pointer p_e);
+
+      inline
+      ~cond_dealtor();
+
+      inline void
+      set_no_action();
+
+    private:
+      entry_pointer m_p_e;
+
+      bool m_no_action_destructor;
+
+      static entry_allocator s_alloc;
+    };
+
+    PB_DS_COND_DEALTOR_CLASS_T_DEC
+    typename PB_DS_COND_DEALTOR_CLASS_C_DEC::entry_allocator
+    PB_DS_COND_DEALTOR_CLASS_C_DEC::s_alloc;
+
+    PB_DS_COND_DEALTOR_CLASS_T_DEC
+    inline
+    PB_DS_COND_DEALTOR_CLASS_C_DEC::
+    cond_dealtor(entry_pointer p_e) :
+      m_p_e(p_e),
+      m_no_action_destructor(false)
+    { }
+
+    PB_DS_COND_DEALTOR_CLASS_T_DEC
+    inline void
+    PB_DS_COND_DEALTOR_CLASS_C_DEC::
+    set_no_action()
+    {
+      m_no_action_destructor = true;
+    }
+
+    PB_DS_COND_DEALTOR_CLASS_T_DEC
+    inline
+    PB_DS_COND_DEALTOR_CLASS_C_DEC::
+    ~cond_dealtor()
+    {
+      if (m_no_action_destructor)
+        return;
+
+      s_alloc.deallocate(m_p_e, 1);
+    }
+
+#undef PB_DS_COND_DEALTOR_CLASS_T_DEC
+#undef PB_DS_COND_DEALTOR_CLASS_C_DEC
+
+  } // namespace detail
+
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_COND_DEALTOR_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..20c998868
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains constructors_destructor_fn_imps applicable to different containers.
+ */
+
+inline
+PB_DS_CLASS_NAME()
+{ }
+
+inline
+PB_DS_CLASS_NAME(const PB_DS_CLASS_NAME& other) 
+: base_type((const base_type&)other)
+{ }
+
+template<typename T0>
+inline
+PB_DS_CLASS_NAME(T0 t0) : base_type(t0)
+{ }
+
+template<typename T0, typename T1>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1) : base_type(t0, t1)
+{ }
+
+template<typename T0, typename T1, typename T2>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2) : base_type(t0, t1, t2)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3) 
+: base_type(t0, t1, t2, t3)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4) 
+: base_type(t0, t1, t2, t3, t4)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4,
+	 typename T5>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) 
+: base_type(t0, t1, t2, t3, t4, t5)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4,
+	 typename T5, typename T6>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) 
+: base_type(t0, t1, t2, t3, t4, t5, t6)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4,
+	 typename T5, typename T6, typename T7>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) 
+: base_type(t0, t1, t2, t3, t4, t5, t6, t7)
+{ }
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4,
+	 typename T5, typename T6, typename T7, typename T8>
+inline
+PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
+: base_type(t0, t1, t2, t3, t4, t5, t6, t7, t8)
+{ }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/container_base_dispatch.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/container_base_dispatch.hpp
new file mode 100644
index 000000000..7f8d87a3c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/container_base_dispatch.hpp
@@ -0,0 +1,332 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file container_base_dispatch.hpp
+ * Contains an associative container dispatching base.
+ */
+
+#ifndef PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
+#define PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
+
+#include <ext/typelist.h>
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+#define PB_DS_DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
+#undef PB_DS_DATA_TRUE_INDICATOR
+
+#define PB_DS_DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
+#undef PB_DS_DATA_FALSE_INDICATOR
+
+namespace __gnu_pbds
+{
+namespace detail
+{
+  // Primary template.
+  template<typename Key, typename Mapped, typename Data_Structure_Taq,
+	   typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch;
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, list_update_tag, 
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+      
+    public:
+      typedef lu_map_data_<Key, Mapped, at0t, Alloc, at1t>	type;
+    };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, list_update_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef lu_map_no_data_<Key, null_mapped_type, at0t, Alloc, at1t> type;
+    };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, pat_trie_tag, Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef pat_trie_data_<Key, Mapped, at1t, Alloc> 		type;
+    };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, pat_trie_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef pat_trie_no_data_<Key, null_mapped_type, at1t, Alloc> type;
+    };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, rb_tree_tag, Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef rb_tree_data_<Key, Mapped, at0t, at1t, Alloc> 	type;
+    };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, rb_tree_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef rb_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
+    };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, splay_tree_tag, 
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef splay_tree_data_<Key, Mapped, at0t, at1t, Alloc> 	type;
+    };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, splay_tree_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef splay_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
+  };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, ov_tree_tag, Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef ov_tree_data_<Key, Mapped, at0t, at1t, Alloc> 	type;
+  };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, ov_tree_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+
+    public:
+      typedef ov_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
+  };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, cc_hash_tag, Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>	at2;
+      typedef typename at2::type			    	at2t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>	at3;
+      typedef typename at3::type				at3t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> 	at4;
+      typedef typename at4::type			    	at4t;
+
+    public:
+      typedef cc_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value, 
+			      at4t, at2t> 			type;
+  };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, cc_hash_tag, 
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>	at2;
+      typedef typename at2::type			    	at2t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>	at3;
+      typedef typename at3::type				at3t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> 	at4;
+      typedef typename at4::type			    	at4t;
+
+    public:
+      typedef cc_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc, 
+				 at3t::value, at4t, at2t>    	type;
+  };
+
+  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, Mapped, gp_hash_tag, Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>	at2;
+      typedef typename at2::type			    	at2t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>	at3;
+      typedef typename at3::type				at3t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> 	at4;
+      typedef typename at4::type			    	at4t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> 	at5;
+      typedef typename at5::type			    	at5t;
+
+    public:
+      typedef gp_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value, 
+			      at4t, at5t, at2t> 		type;
+  };
+
+  template<typename Key, typename Policy_Tl, typename Alloc>
+    struct container_base_dispatch<Key, null_mapped_type, gp_hash_tag,
+				   Policy_Tl, Alloc>
+    {
+    private:
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>	at0;
+      typedef typename at0::type			    	at0t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> 	at1;
+      typedef typename at1::type			    	at1t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>	at2;
+      typedef typename at2::type			    	at2t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>	at3;
+      typedef typename at3::type				at3t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> 	at4;
+      typedef typename at4::type			    	at4t;
+      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> 	at5;
+      typedef typename at5::type			    	at5t;
+
+    public:
+      typedef gp_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc,
+				 at3t::value, at4t, at5t, at2t>	type;
+  };
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/debug_map_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/debug_map_base.hpp
new file mode 100644
index 000000000..9dc763595
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/debug_map_base.hpp
@@ -0,0 +1,346 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_map_base.hpp
+ * Contains a debug-mode base for all maps.
+ */
+
+#ifndef PB_DS_DEBUG_MAP_BASE_HPP
+#define PB_DS_DEBUG_MAP_BASE_HPP
+
+#ifdef _GLIBCXX_DEBUG
+
+#include <list>
+#include <utility>
+#include <cstdlib>
+#include <iostream>
+#include <ext/throw_allocator.h>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    // Need std::pair ostream extractor.
+    template<typename _CharT, typename _Traits, typename _Tp1, typename _Tp2>
+    inline std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __out,
+	       const std::pair<_Tp1, _Tp2>& p)
+    { return (__out << '(' << p.first << ',' << p.second << ')'); }
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, class Eq_Fn, typename Const_Key_Reference>
+
+#define PB_DS_CLASS_C_DEC \
+    debug_map_base<Key, Eq_Fn, Const_Key_Reference>
+
+    template<typename Key, class Eq_Fn, typename Const_Key_Reference>
+    class debug_map_base
+    {
+    private:
+      typedef typename std::allocator<Key> 		key_allocator;
+      typedef typename key_allocator::size_type 	size_type;
+      typedef Const_Key_Reference 			const_key_reference;
+      typedef std::_GLIBCXX_STD_C::list<Key> 		key_set;
+      typedef typename key_set::iterator 		key_set_iterator;
+      typedef typename key_set::const_iterator 		const_key_set_iterator;
+      typedef __gnu_cxx::throw_allocator_random<Key>	key_db_allocator;
+      typedef typename key_db_allocator::never_adjustor	never_adjustor;
+
+    protected:
+      debug_map_base();
+
+      debug_map_base(const PB_DS_CLASS_C_DEC& other);
+
+      ~debug_map_base();
+
+      inline void
+      insert_new(const_key_reference r_key);
+
+      inline void
+      erase_existing(const_key_reference r_key);
+
+      void
+      clear();
+
+      inline void
+      check_key_exists(const_key_reference r_key) const;
+
+      inline void
+      check_key_does_not_exist(const_key_reference r_key) const;
+
+      inline void
+      check_size(size_type size) const;
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      template<typename Cmp_Fn>
+      void
+      split(const_key_reference, Cmp_Fn, PB_DS_CLASS_C_DEC&);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+    private:
+      void
+      assert_valid() const;
+
+      const_key_set_iterator
+      find(const_key_reference r_key) const;
+
+      key_set_iterator
+      find(const_key_reference r_key);
+
+      key_set 	m_key_set;
+      Eq_Fn 	m_eq;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    debug_map_base()
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    debug_map_base(const PB_DS_CLASS_C_DEC& other) : m_key_set(other.m_key_set)
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ~debug_map_base()
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    insert_new(const_key_reference r_key)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+      if (find(r_key) != m_key_set.end())
+	{
+	  std::cerr << "insert_new key already present " << r_key << std::endl;
+	  std::abort;
+	}
+
+      never_adjustor never;
+      __try
+	{
+	  m_key_set.push_back(r_key);
+	}
+      __catch(...)
+	{
+	  std::cerr << "insert_new " << r_key << std::endl;
+	  std::abort();
+	}
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    erase_existing(const_key_reference r_key)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      key_set_iterator it = find(r_key);
+      if (it == m_key_set.end())
+	{
+	  std::cerr << "erase_existing" << r_key << std::endl;
+	  std::abort();
+	}
+      m_key_set.erase(it);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    clear()
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      m_key_set.clear();
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    check_key_exists(const_key_reference r_key) const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      if (find(r_key) == m_key_set.end())
+	{
+	  std::cerr << "check_key_exists " << r_key << std::endl;
+	  std::abort();
+	}
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    check_key_does_not_exist(const_key_reference r_key) const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      if (find(r_key) != m_key_set.end())
+	{
+	  using std::cerr;
+	  using std::endl;
+	  cerr << "check_key_does_not_exist " << r_key << endl;
+	  std::abort();
+	}
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    check_size(size_type size) const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      const size_type key_set_size = m_key_set.size();
+      if (size != key_set_size)
+	{
+	  std::cerr << "check_size " << size
+		    << " " << key_set_size << std::endl;
+	  std::abort();
+	}
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+     }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      m_key_set.swap(other.m_key_set);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_key_set_iterator
+    PB_DS_CLASS_C_DEC::
+    find(const_key_reference r_key) const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      typedef const_key_set_iterator iterator_type;
+      for (iterator_type it = m_key_set.begin(); it != m_key_set.end(); ++it)
+	if (m_eq(*it, r_key))
+	  return it;
+      return m_key_set.end();
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::key_set_iterator
+    PB_DS_CLASS_C_DEC::
+    find(const_key_reference r_key)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      key_set_iterator it = m_key_set.begin();
+      while (it != m_key_set.end())
+	{
+	  if (m_eq(*it, r_key))
+	    return it;
+	  ++it;
+	}
+      return it;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+     }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    assert_valid() const
+    {
+      const_key_set_iterator prime_it = m_key_set.begin();
+      while (prime_it != m_key_set.end())
+	{
+	  const_key_set_iterator sec_it = prime_it;
+	  ++sec_it;
+	  while (sec_it != m_key_set.end())
+	    {
+	      _GLIBCXX_DEBUG_ASSERT(!m_eq(*sec_it, *prime_it));
+	      _GLIBCXX_DEBUG_ASSERT(!m_eq(*prime_it, *sec_it));
+	      ++sec_it;
+	    }
+	  ++prime_it;
+	}
+    }
+
+    PB_DS_CLASS_T_DEC
+    template<typename Cmp_Fn>
+    void
+    PB_DS_CLASS_C_DEC::
+    split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other)
+    {
+      other.clear();
+      key_set_iterator it = m_key_set.begin();
+      while (it != m_key_set.end())
+	if (cmp_fn(r_key, * it))
+	  {
+	    other.insert_new(*it);
+	    it = m_key_set.erase(it);
+	  }
+	else
+	  ++it;
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    join(PB_DS_CLASS_C_DEC& other)
+    {
+      key_set_iterator it = other.m_key_set.begin();
+      while (it != other.m_key_set.end())
+	{
+	  insert_new(*it);
+	  it = other.m_key_set.erase(it);
+	}
+      _GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty());
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
new file mode 100644
index 000000000..ec95bca64
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
@@ -0,0 +1,68 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file eq_by_less.hpp
+ * Contains an equivalence function.
+ */
+
+#ifndef PB_DS_EQ_BY_LESS_HPP
+#define PB_DS_EQ_BY_LESS_HPP
+
+#include <utility>
+#include <functional>
+#include <vector>
+#include <assert.h>
+#include <ext/pb_ds/detail/types_traits.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, class Cmp_Fn>
+    struct eq_by_less : private Cmp_Fn
+    {
+      bool
+      operator()(const Key& r_lhs, const Key& r_rhs) const
+      {
+	const bool l = Cmp_Fn::operator()(r_lhs, r_rhs);
+	const bool g = Cmp_Fn::operator()(r_rhs, r_lhs);
+	return !(l || g);
+      }
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_EQ_BY_LESS_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
new file mode 100644
index 000000000..b21c252e2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
@@ -0,0 +1,179 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_eq_fn.hpp
+ * Contains 2 eqivalence functions, one employing a hash value,
+ *    and one ignoring it.
+ */
+
+#ifndef PB_DS_HASH_EQ_FN_HPP
+#define PB_DS_HASH_EQ_FN_HPP
+
+#include <utility>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, class Eq_Fn, class Allocator, bool Store_Hash>
+    struct hash_eq_fn;
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, class Eq_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    hash_eq_fn<Key, Eq_Fn, Allocator, false>
+
+    /**
+     * Specialization 1- The client requests that hash values not be stored.
+     **/
+    template<typename Key, class Eq_Fn, class Allocator>
+    struct hash_eq_fn<Key, Eq_Fn, Allocator, false> : public Eq_Fn
+    {
+      typedef Eq_Fn eq_fn_base;
+
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      hash_eq_fn();
+
+      hash_eq_fn(const Eq_Fn& r_eq_fn);
+
+      inline bool
+      operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
+
+      inline void
+      swap(const PB_DS_CLASS_C_DEC& other);
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    hash_eq_fn()
+    { }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    swap(const PB_DS_CLASS_C_DEC& other)
+    { std::swap((Eq_Fn& )(*this), (Eq_Fn& )other); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    hash_eq_fn(const Eq_Fn& r_eq_fn) :
+      Eq_Fn(r_eq_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    inline bool
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
+    { return (eq_fn_base::operator()(r_lhs_key, r_rhs_key)); }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, class Eq_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    hash_eq_fn<Key, Eq_Fn, Allocator, true>
+
+    /**
+     * Specialization 2- The client requests that hash values be stored.
+     **/
+    template<typename Key, class Eq_Fn, class Allocator>
+    struct hash_eq_fn<Key, Eq_Fn, Allocator, true> :
+      public Eq_Fn
+    {
+      typedef typename Allocator::size_type size_type;
+
+      typedef Eq_Fn eq_fn_base;
+
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      hash_eq_fn();
+
+      hash_eq_fn(const Eq_Fn& r_eq_fn);
+
+      inline bool
+      operator()(const_key_reference r_lhs_key, size_type lhs_hash, 
+		 const_key_reference r_rhs_key, size_type rhs_hash) const;
+
+      inline void
+      swap(const PB_DS_CLASS_C_DEC& other);
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    hash_eq_fn()
+    { }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    hash_eq_fn(const Eq_Fn& r_eq_fn) :
+      Eq_Fn(r_eq_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    inline bool
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_lhs_key, size_type lhs_hash, 
+	       const_key_reference r_rhs_key, size_type rhs_hash) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(!eq_fn_base::operator()(r_lhs_key, r_rhs_key) 
+		            || lhs_hash == rhs_hash);
+
+      return (lhs_hash == rhs_hash && 
+	      eq_fn_base::operator()(r_lhs_key, r_rhs_key));
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    swap(const PB_DS_CLASS_C_DEC& other)
+    { std::swap((Eq_Fn& )(*this), (Eq_Fn& )(other)); }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
new file mode 100644
index 000000000..4ac145d3d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
@@ -0,0 +1,223 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s constructors, destructor,
+ *    and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::entry_allocator
+PB_DS_CLASS_C_DEC::s_entry_allocator;
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME() 
+: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1)),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn)    
+: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) 
+: hash_eq_fn_base(r_eq_fn),
+  ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, 
+		 const Comb_Probe_Fn& r_comb_hash_fn) 
+: hash_eq_fn_base(r_eq_fn),
+  ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
+		       r_hash_fn, r_comb_hash_fn),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, 
+		 const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober) 
+: hash_eq_fn_base(r_eq_fn),
+  ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
+		       r_hash_fn, comb_hash_fn, prober),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, 
+		 const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober, 
+		 const Resize_Policy& r_resize_policy) 
+: hash_eq_fn_base(r_eq_fn), resize_base(r_resize_policy),
+  ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
+		       r_hash_fn, comb_hash_fn, prober),
+  m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+#ifdef _GLIBCXX_DEBUG
+  debug_base(other),
+#endif 
+  hash_eq_fn_base(other),
+  resize_base(other),
+  ranged_probe_fn_base(other),
+  m_num_e(other.m_num_e),
+  m_num_used_e(other.m_num_used_e),
+  m_entries(s_entry_allocator.allocate(m_num_e))
+{
+  for (size_type i = 0; i < m_num_e; ++i)
+    m_entries[i].m_stat = (entry_status)empty_entry_status;
+
+  __try
+    {
+      for (size_type i = 0; i < m_num_e; ++i)
+        {
+	  m_entries[i].m_stat = other.m_entries[i].m_stat;
+	  if (m_entries[i].m_stat == valid_entry_status)
+	    new (m_entries + i) entry(other.m_entries[i]);
+        }
+    }
+  __catch(...)
+    {
+      deallocate_all();
+      __throw_exception_again;
+    }
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_CLASS_NAME()
+{ deallocate_all(); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+  std::swap(m_num_e, other.m_num_e);
+  std::swap(m_num_used_e, other.m_num_used_e);
+  std::swap(m_entries, other.m_entries);
+  ranged_probe_fn_base::swap(other);
+  hash_eq_fn_base::swap(other);
+  resize_base::swap(other);
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+deallocate_all()
+{
+  clear();
+  erase_all_valid_entries(m_entries, m_num_e);
+  s_entry_allocator.deallocate(m_entries, m_num_e);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_all_valid_entries(entry_array a_entries_resized, size_type len)
+{
+  for (size_type pos = 0; pos < len; ++pos)
+    {
+      entry_pointer p_e = &a_entries_resized[pos];
+      if (p_e->m_stat == valid_entry_status)
+	p_e->m_value.~value_type();
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{
+  Resize_Policy::notify_resized(m_num_e);
+  Resize_Policy::notify_cleared();
+  ranged_probe_fn_base::notify_resized(m_num_e);
+  for (size_type i = 0; i < m_num_e; ++i)
+    m_entries[i].m_stat = empty_entry_status;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..ec8069839
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s constructors, destructor,
+ *    and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, 
+			   false_type)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status)k;
+  entry* const p_e = m_entries + pos;
+  new (&p_e->m_value) mapped_value_type(r_val);
+  p_e->m_stat = valid_entry_status;
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..5f3048759
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s constructors, destructor,
+ * and related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, 
+			   true_type)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
+  entry* const p_e = m_entries + pos;
+  new (&p_e->m_value) mapped_value_type(r_val);
+  p_e->m_hash = ranged_probe_fn_base::operator()(PB_DS_V2F(r_val)).second;
+  p_e->m_stat = valid_entry_status;
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
new file mode 100644
index 000000000..d7018c62c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  debug_base::check_size(m_num_used_e);
+  assert_entry_array_valid(m_entries, traits_base::m_store_extra_indicator);
+}
+
+#include <ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp>
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..86b4d7daf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_entry_array_valid(const entry_array a_entries, false_type) const
+{
+  size_type iterated_num_used_e = 0;
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      const_entry_pointer p_e = &a_entries[pos];
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+        case erased_entry_status:
+	  break;
+        case valid_entry_status:
+	  {
+	    const_key_reference r_key = PB_DS_V2F(p_e->m_value);
+	    debug_base::check_key_exists(r_key);
+	    ++iterated_num_used_e;
+	    break;
+	  }
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+    }
+  _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..961f14361
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_entry_array_valid(const entry_array a_entries, true_type) const
+{
+  size_type iterated_num_used_e = 0;
+
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      const_entry_pointer p_e =& a_entries[pos];
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+        case erased_entry_status:
+	  break;
+        case valid_entry_status:
+	  {
+	    const_key_reference r_key = PB_DS_V2F(p_e->m_value);
+	    debug_base::check_key_exists(r_key);
+
+	    const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
+
+	    _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second);
+	    ++iterated_num_used_e;
+	    break;
+	  }
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
new file mode 100644
index 000000000..68878eb2a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s erase related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+erase_entry(entry_pointer p_e)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_e->m_stat = valid_entry_status);
+  _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_e->m_value));)
+  p_e->m_value.~value_type();
+  p_e->m_stat = erased_entry_status;
+  _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0);
+  resize_base::notify_erased(--m_num_used_e);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      entry_pointer p_e = &m_entries[pos];
+      if (p_e->m_stat == valid_entry_status)
+	erase_entry(p_e);
+    }
+  do_resize_if_needed_no_throw();
+  resize_base::notify_cleared();
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  size_type num_ersd = 0;
+  for (size_type pos = 0; pos < m_num_e; ++pos)
+    {
+      entry_pointer p_e = &m_entries[pos];
+      if (p_e->m_stat == valid_entry_status)
+	if (pred(p_e->m_value))
+	  {
+	    ++num_ersd;
+	    erase_entry(p_e);
+	  }
+    }
+
+  do_resize_if_needed_no_throw();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{ return erase_imp(r_key, traits_base::m_store_extra_indicator); }
+
+#include <ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..40d578ebe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s erase related functions,
+ * when the hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase_imp(const_key_reference r_key,  false_type)
+{
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  size_type hash = ranged_probe_fn_base::operator()(r_key);
+  size_type i;
+  resize_base::notify_erase_search_start();
+
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key,  hash, i);
+      entry* const p_e = m_entries + pos;
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+	  {
+	    resize_base::notify_erase_search_end();
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
+								    r_key));
+	    return false;
+	  }
+	  break;
+        case valid_entry_status:
+	  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
+            {
+	      resize_base::notify_erase_search_end();
+	      erase_entry(p_e);
+	      do_resize_if_needed_no_throw();
+	      return true;
+            }
+	  break;
+        case erased_entry_status:
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+      resize_base::notify_erase_search_collision();
+    }
+  resize_base::notify_erase_search_end();
+  return false;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..8155a5261
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s erase related functions,
+ * when the hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase_imp(const_key_reference r_key, true_type)
+{
+  const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
+  size_type i;
+  resize_base::notify_erase_search_start();
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i);
+
+      entry* const p_e = m_entries + pos;
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+	  {
+	    resize_base::notify_erase_search_end();
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
+								    r_key));
+	    return false;
+	  }
+	  break;
+        case valid_entry_status:
+	  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
+					  r_key, pos_hash_pair.second))
+            {
+	      resize_base::notify_erase_search_end();
+	      erase_entry(p_e);
+	      do_resize_if_needed_no_throw();
+	      return true;
+            }
+	  break;
+        case erased_entry_status:
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+
+      resize_base::notify_erase_search_collision();
+    }
+  resize_base::notify_erase_search_end();
+  return false;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
new file mode 100644
index 000000000..dbd056927
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s find related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+   return find_key_pointer(r_key, traits_base::m_store_extra_indicator);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key) const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return const_cast<PB_DS_CLASS_C_DEC&>(*this).find_key_pointer(r_key, traits_base::m_store_extra_indicator);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find_end()
+{ return 0; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find_end() const
+{ return 0; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..298604c80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
@@ -0,0 +1,46 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s find related functions,
+ * when the hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::pointer
+PB_DS_CLASS_C_DEC::
+find_key_pointer(const_key_reference r_key, false_type)
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..a44b8326e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
@@ -0,0 +1,40 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s insert related functions,
+ * when the hash value is stored.
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
new file mode 100644
index 000000000..3e69b2ef0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
@@ -0,0 +1,677 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file gp_ht_map_.hpp
+ * Contains an implementation class for gp_ht_map_.
+ */
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp>
+#include <utility>
+#ifdef PB_DS_HT_MAP_TRACE_
+#include <iostream>
+#endif 
+#ifdef _GLIBCXX_DEBUG
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#endif
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, typename Hash_Fn, typename Eq_Fn, \
+	     typename Allocator, bool Store_Hash, typename Comb_Probe_Fn, \
+	     typename Probe_Fn,	typename Resize_Policy>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME gp_ht_map_data_
+#endif
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME gp_ht_map_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator,	\
+		     Store_Hash, Comb_Probe_Fn, Probe_Fn, Resize_Policy>
+
+#define PB_DS_HASH_EQ_FN_C_DEC \
+    hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash>
+
+#define PB_DS_RANGED_PROBE_FN_C_DEC \
+    ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, Store_Hash>
+
+#define PB_DS_TYPES_TRAITS_C_DEC \
+    types_traits<Key, Mapped, Allocator, Store_Hash>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC \
+    debug_map_base<Key, Eq_Fn, typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped()
+#endif 
+
+    template<typename Key,
+	     typename Mapped,
+	     typename Hash_Fn,
+	     typename Eq_Fn,
+	     typename Allocator,
+	     bool Store_Hash,
+	     typename Comb_Probe_Fn,
+	     typename Probe_Fn,
+	     typename Resize_Policy>
+    class PB_DS_CLASS_NAME :
+#ifdef _GLIBCXX_DEBUG
+      protected PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+      public PB_DS_HASH_EQ_FN_C_DEC,
+      public Resize_Policy,
+      public PB_DS_RANGED_PROBE_FN_C_DEC,
+      public PB_DS_TYPES_TRAITS_C_DEC
+    {
+    private:
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+      typedef typename traits_base::value_type value_type_;
+      typedef typename traits_base::pointer pointer_;
+      typedef typename traits_base::const_pointer const_pointer_;
+      typedef typename traits_base::reference reference_;
+      typedef typename traits_base::const_reference const_reference_;
+      typedef typename traits_base::comp_hash comp_hash;
+
+      enum entry_status
+	{
+	  empty_entry_status,
+	  valid_entry_status,
+	  erased_entry_status
+	} __attribute__ ((packed));
+
+      struct entry : public traits_base::stored_value_type
+      {
+	entry_status m_stat;
+      };
+
+      typedef typename Allocator::template rebind<entry>::other entry_allocator;
+      typedef typename entry_allocator::pointer entry_pointer;
+      typedef typename entry_allocator::const_pointer const_entry_pointer;
+      typedef typename entry_allocator::reference entry_reference;
+      typedef typename entry_allocator::const_reference const_entry_reference;
+      typedef typename entry_allocator::pointer entry_array;
+
+      typedef PB_DS_RANGED_PROBE_FN_C_DEC ranged_probe_fn_base;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+      typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base;
+      typedef Resize_Policy resize_base;
+
+#define PB_DS_GEN_POS typename Allocator::size_type
+
+#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
+
+#undef PB_DS_GEN_POS
+
+    public:
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef Hash_Fn hash_fn;
+      typedef Eq_Fn eq_fn;
+      typedef Probe_Fn probe_fn;
+      typedef Comb_Probe_Fn comb_probe_fn;
+      typedef Resize_Policy resize_policy;
+
+      enum
+	{
+	  store_hash = Store_Hash
+	};
+
+      typedef typename traits_base::key_type key_type;
+      typedef typename traits_base::key_pointer key_pointer;
+      typedef typename traits_base::const_key_pointer const_key_pointer;
+      typedef typename traits_base::key_reference key_reference;
+      typedef typename traits_base::const_key_reference const_key_reference;
+      typedef typename traits_base::mapped_type mapped_type;
+      typedef typename traits_base::mapped_pointer mapped_pointer;
+      typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
+      typedef typename traits_base::mapped_reference mapped_reference;
+      typedef typename traits_base::const_mapped_reference const_mapped_reference;
+      typedef typename traits_base::value_type value_type;
+      typedef typename traits_base::pointer pointer;
+      typedef typename traits_base::const_pointer const_pointer;
+      typedef typename traits_base::reference reference;
+      typedef typename traits_base::const_reference const_reference;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef point_iterator_ point_iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_point_iterator_ point_iterator;
+#endif 
+
+      typedef const_point_iterator_ const_point_iterator;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef iterator_ iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_iterator_ iterator;
+#endif 
+
+      typedef const_iterator_ const_iterator;
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&, 
+		       const Probe_Fn&);
+
+      PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&, 
+		       const Probe_Fn&, const Resize_Policy&);
+
+      template<typename It>
+      void
+      copy_from_range(It first_it, It last_it);
+
+      virtual
+      ~PB_DS_CLASS_NAME();
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      inline bool
+      empty() const;
+
+      Hash_Fn& 
+      get_hash_fn();
+
+      const Hash_Fn& 
+      get_hash_fn() const;
+
+      Eq_Fn& 
+      get_eq_fn();
+
+      const Eq_Fn& 
+      get_eq_fn() const;
+
+      Probe_Fn& 
+      get_probe_fn();
+
+      const Probe_Fn& 
+      get_probe_fn() const;
+
+      Comb_Probe_Fn& 
+      get_comb_probe_fn();
+
+      const Comb_Probe_Fn& 
+      get_comb_probe_fn() const;
+
+      Resize_Policy& 
+      get_resize_policy();
+
+      const Resize_Policy& 
+      get_resize_policy() const;
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference r_val)
+      {
+	_GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+        return insert_imp(r_val, traits_base::m_store_extra_indicator);
+      }
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	return subscript_imp(r_key, traits_base::m_store_extra_indicator);
+#else 
+	insert(r_key);
+        return traits_base::s_null_mapped;
+#endif
+      }
+
+      inline point_iterator
+      find(const_key_reference r_key);
+
+      inline const_point_iterator
+      find(const_key_reference r_key) const;
+
+      inline point_iterator
+      find_end();
+
+      inline const_point_iterator
+      find_end() const;
+
+      inline bool
+      erase(const_key_reference r_key);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred prd);
+
+      void
+      clear();
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_HT_MAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      friend class iterator_;
+#endif 
+
+      friend class const_iterator_;
+
+      void
+      deallocate_all();
+
+      void
+      initialize();
+
+      void
+      erase_all_valid_entries(entry_array, size_type);
+
+      inline bool
+      do_resize_if_needed();
+
+      inline void
+      do_resize_if_needed_no_throw();
+
+      void
+      resize_imp(size_type);
+
+      virtual void
+      do_resize(size_type);
+
+      void
+      resize_imp(entry_array, size_type);
+
+      inline void
+      resize_imp_reassign(entry_pointer, entry_array, false_type);
+
+      inline void
+      resize_imp_reassign(entry_pointer, entry_array, true_type);
+
+      inline size_type
+      find_ins_pos(const_key_reference, false_type);
+
+      inline comp_hash
+      find_ins_pos(const_key_reference, true_type);
+
+      inline std::pair<point_iterator, bool>
+      insert_imp(const_reference, false_type);
+
+      inline std::pair<point_iterator, bool>
+      insert_imp(const_reference, true_type);
+
+      inline pointer
+      insert_new_imp(const_reference r_val, size_type pos)
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
+
+	if (do_resize_if_needed())
+	  pos = find_ins_pos(PB_DS_V2F(r_val),
+			     traits_base::m_store_extra_indicator);
+
+	_GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
+
+	entry* const p_e = m_entries + pos;
+	new (&p_e->m_value) value_type(r_val);
+	p_e->m_stat = valid_entry_status;
+	resize_base::notify_inserted(++m_num_used_e);
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));)
+
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return &p_e->m_value;
+      }
+
+      inline pointer
+      insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair)
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat !=
+			 valid_entry_status);
+
+	if (do_resize_if_needed())
+	  r_pos_hash_pair = find_ins_pos(PB_DS_V2F(r_val),
+					 traits_base::m_store_extra_indicator);
+
+	_GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat !=
+			      valid_entry_status);
+
+	entry* const p_e = m_entries + r_pos_hash_pair.first;
+	new (&p_e->m_value) value_type(r_val);
+	p_e->m_hash = r_pos_hash_pair.second;
+	p_e->m_stat = valid_entry_status;
+
+	resize_base::notify_inserted(++m_num_used_e);
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));)
+
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return &p_e->m_value;
+      }
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      inline mapped_reference
+      subscript_imp(const_key_reference key, false_type)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+	const size_type pos = find_ins_pos(key, 
+					 traits_base::m_store_extra_indicator);
+
+	entry_pointer p_e = &m_entries[pos];
+	if (p_e->m_stat != valid_entry_status)
+	  return insert_new_imp(value_type(key, mapped_type()), pos)->second;
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)	  
+	return p_e->m_value.second;
+      }
+
+      inline mapped_reference
+      subscript_imp(const_key_reference key, true_type)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+	comp_hash pos_hash_pair =
+	  find_ins_pos(key, traits_base::m_store_extra_indicator);
+
+	if (m_entries[pos_hash_pair.first].m_stat != valid_entry_status)
+	  return insert_new_imp(value_type(key, mapped_type()),
+				 pos_hash_pair)->second;
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key));
+	return (m_entries + pos_hash_pair.first)->m_value.second;
+      }
+#endif
+
+      inline pointer
+      find_key_pointer(const_key_reference key, false_type)
+      {
+	const size_type hash = ranged_probe_fn_base::operator()(key);
+	size_type i;
+	resize_base::notify_find_search_start();
+
+	// Loop until entry is found or until all possible entries accessed.
+	for (i = 0; i < m_num_e; ++i)
+	  {
+	    const size_type pos = ranged_probe_fn_base::operator()(key, hash, i);
+
+	    entry* const p_e = m_entries + pos;
+	    switch (p_e->m_stat)
+	      {
+	      case empty_entry_status:
+		{
+		  resize_base::notify_find_search_end();
+		  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
+
+		    return 0;
+		}
+		break;
+	      case valid_entry_status:
+		if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), key))
+		  {
+		    resize_base::notify_find_search_end();
+		    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
+
+		    return pointer(&p_e->m_value);
+		  }
+		break;
+	      case erased_entry_status:
+		break;
+	      default:
+		_GLIBCXX_DEBUG_ASSERT(0);
+	      };
+
+	    resize_base::notify_find_search_collision();
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
+	resize_base::notify_find_search_end();
+	return 0;
+      }
+
+      inline pointer
+      find_key_pointer(const_key_reference key, true_type)
+      {
+	comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(key);
+	size_type i;
+	resize_base::notify_find_search_start();
+
+	// Loop until entry is found or until all possible entries accessed.
+	for (i = 0; i < m_num_e; ++i)
+	  {
+	    const size_type pos =
+	      ranged_probe_fn_base::operator()(key, pos_hash_pair.second, i);
+
+	    entry* const p_e = m_entries + pos;
+
+	    switch(p_e->m_stat)
+	      {
+	      case empty_entry_status:
+		{
+		  resize_base::notify_find_search_end();
+		  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
+
+		  return 0;
+		}
+		break;
+	      case valid_entry_status:
+		if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
+						p_e->m_hash,
+						key, pos_hash_pair.second))
+		  {
+		    resize_base::notify_find_search_end();
+		    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
+		    return pointer(&p_e->m_value);
+		  }
+		break;
+	      case erased_entry_status:
+		break;
+	      default:
+		_GLIBCXX_DEBUG_ASSERT(0);
+	      };
+
+	    resize_base::notify_find_search_collision();
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
+	resize_base::notify_find_search_end();
+	return 0;
+      }
+
+      inline bool
+      erase_imp(const_key_reference, true_type);
+
+      inline bool
+      erase_imp(const_key_reference, false_type);
+
+      inline void
+      erase_entry(entry_pointer p_e);
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      void
+      inc_it_state(pointer& r_p_value, size_type& r_pos) const
+      { inc_it_state((const_mapped_pointer& )r_p_value, r_pos); }
+#endif 
+
+      void
+      inc_it_state(const_pointer& r_p_value, size_type& r_pos) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(r_p_value != 0);
+	for (++r_pos; r_pos < m_num_e; ++r_pos)
+	  {
+	    const_entry_pointer p_e =& m_entries[r_pos];
+	    if (p_e->m_stat == valid_entry_status)
+	      {
+		r_p_value =& p_e->m_value;
+		return;
+	      }
+	  }
+	r_p_value = 0;
+      }
+
+      void
+      get_start_it_state(const_pointer& r_p_value, size_type& r_pos) const
+      {
+	for (r_pos = 0; r_pos < m_num_e; ++r_pos)
+	  {
+	    const_entry_pointer p_e = &m_entries[r_pos];
+	    if (p_e->m_stat == valid_entry_status)
+	      {
+		r_p_value = &p_e->m_value;
+		return;
+	      }
+	  }
+	r_p_value = 0;
+      }
+
+      void
+      get_start_it_state(pointer& r_p_value, size_type& r_pos)
+      {
+	for (r_pos = 0; r_pos < m_num_e; ++r_pos)
+	  {
+	    entry_pointer p_e = &m_entries[r_pos];
+	    if (p_e->m_stat == valid_entry_status)
+	      {
+		r_p_value = &p_e->m_value;
+		return;
+	      }
+	  }
+	r_p_value = 0;
+      }
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_entry_array_valid(const entry_array, false_type) const;
+
+      void
+      assert_entry_array_valid(const entry_array, true_type) const;
+#endif 
+
+      static entry_allocator 	s_entry_allocator;
+      static iterator 		s_end_it;
+      static const_iterator 	s_const_end_it;
+
+      size_type 		m_num_e;
+      size_type 		m_num_used_e;
+      entry_pointer 		m_entries;
+
+      enum
+	{
+	  store_hash_ok = !Store_Hash 
+	                  || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value
+	};
+
+      PB_DS_STATIC_ASSERT(sth, store_hash_ok);
+    };
+
+#include <ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_HASH_EQ_FN_C_DEC
+#undef PB_DS_RANGED_PROBE_FN_C_DEC
+#undef PB_DS_TYPES_TRAITS_C_DEC
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_V2F
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
new file mode 100644
index 000000000..423a9288e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s entire container info related
+ *    functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{ return m_num_used_e; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return s_entry_allocator.max_size(); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return (size() == 0); }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
new file mode 100644
index 000000000..101ce8c6b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
@@ -0,0 +1,43 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s insert related functions.
+ */
+
+#include <ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..3227a4aaa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
@@ -0,0 +1,111 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s insert related functions,
+ * when the hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+find_ins_pos(const_key_reference r_key, false_type)
+{
+  size_type hash = ranged_probe_fn_base::operator()(r_key);
+  size_type i;
+
+  /* The insertion position is initted to a non-legal value to indicate
+   *     that it has not been initted yet.
+   */
+  size_type ins_pos = m_num_e;
+  resize_base::notify_insert_search_start();
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
+      _GLIBCXX_DEBUG_ASSERT(pos < m_num_e);
+      entry* const p_e = m_entries + pos;
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+	  {
+            resize_base::notify_insert_search_end();
+            _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+	    return (ins_pos == m_num_e) ? pos : ins_pos;
+	  }
+	  break;
+        case erased_entry_status:
+	  if (ins_pos == m_num_e)
+	    ins_pos = pos;
+	  break;
+        case valid_entry_status:
+	  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
+            {
+	      resize_base::notify_insert_search_end();
+	      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+                return pos;
+            }
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+
+      resize_base::notify_insert_search_collision();
+    }
+  resize_base::notify_insert_search_end();
+  if (ins_pos == m_num_e)
+    __throw_insert_error();
+  return ins_pos;
+}
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_imp(const_reference r_val, false_type)
+{
+  const_key_reference r_key = PB_DS_V2F(r_val);
+  const size_type pos = find_ins_pos(r_key, 
+				     traits_base::m_store_extra_indicator);
+
+  if (m_entries[pos].m_stat == valid_entry_status)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+      return std::make_pair(&(m_entries + pos)->m_value, false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+  return std::make_pair(insert_new_imp(r_val, pos), true);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..f4310b629
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
@@ -0,0 +1,118 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s find related functions,
+ * when the hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::comp_hash
+PB_DS_CLASS_C_DEC::
+find_ins_pos(const_key_reference r_key, true_type)
+{
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
+
+  size_type i;
+
+  /* The insertion position is initted to a non-legal value to indicate
+   *     that it has not been initted yet.
+   */
+  size_type ins_pos = m_num_e;
+  resize_base::notify_insert_search_start();
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i);
+
+      entry* const p_e = m_entries + pos;
+      switch(p_e->m_stat)
+        {
+        case empty_entry_status:
+	  {
+            resize_base::notify_insert_search_end();
+            _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+
+	    return ((ins_pos == m_num_e) ?
+		     std::make_pair(pos, pos_hash_pair.second) :
+		     std::make_pair(ins_pos, pos_hash_pair.second));
+	  }
+	  break;
+        case erased_entry_status:
+	  if (ins_pos == m_num_e)
+	    ins_pos = pos;
+	  break;
+        case valid_entry_status:
+	  if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
+					  r_key, pos_hash_pair.second))
+            {
+	      resize_base::notify_insert_search_end();
+	      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+              return std::make_pair(pos, pos_hash_pair.second);
+            }
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+      resize_base::notify_insert_search_collision();
+    }
+  resize_base::notify_insert_search_end();
+  if (ins_pos == m_num_e)
+    __throw_insert_error();
+  return std::make_pair(ins_pos, pos_hash_pair.second);
+}
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_imp(const_reference r_val, true_type)
+{
+  const_key_reference r_key = PB_DS_V2F(r_val);
+  comp_hash pos_hash_pair = find_ins_pos(r_key, 
+					 traits_base::m_store_extra_indicator);
+
+  _GLIBCXX_DEBUG_ASSERT(pos_hash_pair.first < m_num_e);
+  entry_pointer p_e =& m_entries[pos_hash_pair.first];
+  if (p_e->m_stat == valid_entry_status)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+      return std::make_pair(&p_e->m_value, false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+  return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
new file mode 100644
index 000000000..ff1f80f28
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterator_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s iterators related functions, e.g.,
+ *    begin().
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::s_end_it;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::s_const_end_it;
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  pointer_ p_value;
+  size_type pos;
+  get_start_it_state(p_value, pos);
+  return iterator(p_value, pos, this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{ return s_end_it; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  const_pointer_ p_value;
+  size_type pos;
+  get_start_it_state(p_value, pos);
+  return const_iterator(p_value, pos, this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{ return s_const_end_it; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..b1a3f7a7e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s policy agpess
+ *    functions.
+ */
+
+PB_DS_CLASS_T_DEC
+Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_hash_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Hash_Fn& 
+PB_DS_CLASS_C_DEC::
+get_hash_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Eq_Fn& 
+PB_DS_CLASS_C_DEC::
+get_eq_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Eq_Fn& 
+PB_DS_CLASS_C_DEC::
+get_eq_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Probe_Fn& 
+PB_DS_CLASS_C_DEC::
+get_probe_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Probe_Fn& 
+PB_DS_CLASS_C_DEC::
+get_probe_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Comb_Probe_Fn& 
+PB_DS_CLASS_C_DEC::
+get_comb_probe_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Comb_Probe_Fn& 
+PB_DS_CLASS_C_DEC::
+get_comb_probe_fn() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Resize_Policy& 
+PB_DS_CLASS_C_DEC::
+get_resize_policy()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Resize_Policy& 
+PB_DS_CLASS_C_DEC::
+get_resize_policy() const
+{ return *this; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
new file mode 100644
index 000000000..e1b837aa1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s resize related functions.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+do_resize_if_needed()
+{
+  if (!resize_base::is_resize_needed())
+    return false;
+  resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+do_resize(size_type n)
+{ resize_imp(resize_base::get_nearest_larger_size(n)); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+do_resize_if_needed_no_throw()
+{
+  if (!resize_base::is_resize_needed())
+    return;
+
+  __try
+    {
+      resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
+    }
+  __catch(...)
+    { }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+resize_imp(size_type new_size)
+{
+#ifdef PB_DS_REGRESSION
+  typename Allocator::group_adjustor adjust(m_num_e);
+#endif 
+
+  if (new_size == m_num_e)
+    return;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  const size_type old_size = m_num_e;
+  entry_array a_entries_resized = 0;
+
+  // Following line might throw an exception.
+  a_entries_resized = s_entry_allocator.allocate(new_size);
+
+  ranged_probe_fn_base::notify_resized(new_size);
+  m_num_e = new_size;
+
+  for (size_type i = 0; i < m_num_e; ++i)
+    a_entries_resized[i].m_stat = empty_entry_status;
+
+  __try
+    {
+      resize_imp(a_entries_resized, old_size);
+    }
+  __catch(...)
+    {
+      erase_all_valid_entries(a_entries_resized, new_size);
+      m_num_e = old_size;
+      s_entry_allocator.deallocate(a_entries_resized, new_size);
+      ranged_probe_fn_base::notify_resized(old_size);
+      __throw_exception_again;
+    }
+
+  // At this point no exceptions can be thrown.
+  _GLIBCXX_DEBUG_ONLY(assert_entry_array_valid(a_entries_resized, traits_base::m_store_extra_indicator);)
+
+  Resize_Policy::notify_resized(new_size);
+  erase_all_valid_entries(m_entries, old_size);
+  s_entry_allocator.deallocate(m_entries, old_size);
+  m_entries = a_entries_resized;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+resize_imp(entry_array a_entries_resized, size_type old_size)
+{
+  for (size_type pos = 0; pos < old_size; ++pos)
+    if (m_entries[pos].m_stat == valid_entry_status)
+      resize_imp_reassign(m_entries + pos, a_entries_resized, 
+			  traits_base::m_store_extra_indicator);
+}
+
+#include <ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
+#include <ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp>
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..1d2839e0a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_no_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s resize related functions, when the
+ *    hash value is not stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, 
+		    false_type)
+{
+  const_key_reference r_key = PB_DS_V2F(p_e->m_value);
+  size_type hash = ranged_probe_fn_base::operator()(r_key);
+  size_type i;
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
+      entry_pointer p_new_e = a_entries_resized + pos;
+      switch(p_new_e->m_stat)
+        {
+        case empty_entry_status:
+	  new (&p_new_e->m_value) value_type(p_e->m_value);
+	  p_new_e->m_stat = valid_entry_status;
+	  return;
+        case erased_entry_status:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+	  break;
+        case valid_entry_status:
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+    }
+  __throw_insert_error();
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
new file mode 100644
index 000000000..765e9624b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file resize_store_hash_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s resize related functions, when the
+ *    hash value is stored.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, 
+		    true_type)
+{
+  const_key_reference r_key = PB_DS_V2F(p_e->m_value);
+  size_type hash = ranged_probe_fn_base::operator()(r_key, p_e->m_hash);
+
+  size_type i;
+  for (i = 0; i < m_num_e; ++i)
+    {
+      const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
+      entry_pointer p_new_e = a_entries_resized + pos;
+      switch(p_new_e->m_stat)
+        {
+        case empty_entry_status:
+	  new (&p_new_e->m_value) value_type(p_e->m_value);
+	  p_new_e->m_hash = hash;
+	  p_new_e->m_stat = valid_entry_status;
+	  return;
+        case erased_entry_status:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+	  break;
+        case valid_entry_status:
+	  break;
+        default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+        };
+    }
+  __throw_insert_error();
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
new file mode 100644
index 000000000..dac063927
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file standard_policies.hpp
+ * Contains standard policies for gp_ht_map types.
+ */
+
+#ifndef PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP
+#define PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP
+
+#include <ext/pb_ds/detail/standard_policies.hpp>
+#include <ext/pb_ds/ht_load_check_resize_trigger.hpp>
+#include <ext/pb_ds/linear_probe_fn.hpp>
+#include <ext/pb_ds/quadratic_probe_fn.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Comb_Probe_Fn>
+    struct default_probe_fn
+    {
+    private:
+      typedef typename Comb_Probe_Fn::size_type size_type;
+
+    public:
+      typedef
+      typename __conditional_type<
+      is_same<
+	__gnu_pbds::direct_mask_range_hashing<std::size_t>,
+      Comb_Probe_Fn>::value,
+      __gnu_pbds::linear_probe_fn<size_type>,
+      __gnu_pbds::quadratic_probe_fn<size_type> >::__type
+      type;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
new file mode 100644
index 000000000..c3fe13c00
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains implementations of gp_ht_map_'s trace-mode functions.
+ */
+
+#ifdef PB_DS_HT_MAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << static_cast<unsigned long>(m_num_e) << " " <<
+    static_cast<unsigned long>(m_num_used_e) << std::endl;
+
+  for (size_type i = 0; i < m_num_e; ++i)
+    {
+      std::cerr << static_cast<unsigned long>(i) << " ";
+
+      switch(m_entries[i].m_stat)
+        {
+	case empty_entry_status:
+	  std::cerr << "<empty>";
+	  break;
+	case erased_entry_status:
+	  std::cerr << "<erased>";
+	  break;
+	case valid_entry_status:
+	  std::cerr << PB_DS_V2F(m_entries[i].m_value);
+	  break;
+	default:
+	  _GLIBCXX_DEBUG_ASSERT(0);
+	};
+
+      std::cerr << std::endl;
+    }
+}
+
+#endif // #ifdef PB_DS_HT_MAP_TRACE_
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
new file mode 100644
index 000000000..caf78482a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file direct_mask_range_hashing_imp.hpp
+ * Contains a range-hashing policy implementation
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{ mask_based_base::swap(other); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_resized(size_type size)
+{ mask_based_base::notify_resized(size); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+operator()(size_type hash) const
+{ return mask_based_base::range_hash(hash); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
new file mode 100644
index 000000000..17d57b23d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file direct_mod_range_hashing_imp.hpp
+ * Contains a range-hashing policy implementation
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{ mod_based_base::swap(other); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_resized(size_type n)
+{ mod_based_base::notify_resized(n); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+operator()(size_type hash) const
+{ return mod_based_base::range_hash(hash); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
new file mode 100644
index 000000000..e7b264493
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file linear_probe_fn_imp.hpp
+ * Contains a probe policy implementation
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{ }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+operator()(size_type i) const
+{
+  return (i);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
new file mode 100644
index 000000000..936abbee1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
@@ -0,0 +1,107 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file mask_based_range_hashing.hpp
+ * Contains a range hashing policy base.
+ */
+
+#ifndef PB_DS_MASK_BASED_RANGE_HASHING_HPP
+#define PB_DS_MASK_BASED_RANGE_HASHING_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC mask_based_range_hashing<Size_Type>
+
+    template<typename Size_Type>
+    class mask_based_range_hashing
+    {
+    protected:
+      typedef Size_Type size_type;
+
+      void
+      swap(mask_based_range_hashing& other)
+      { std::swap(m_mask, other.m_mask); }
+
+      void
+      notify_resized(size_type size);
+
+      inline size_type
+      range_hash(size_type hash) const
+      { return size_type(hash & m_mask); }
+
+    private:
+      size_type 		m_mask;
+      const static size_type 	s_num_bits_in_size_type;
+      const static size_type 	s_highest_bit_1;
+    };
+
+    PB_DS_CLASS_T_DEC
+    const typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::s_num_bits_in_size_type =
+      sizeof(typename PB_DS_CLASS_C_DEC::size_type) << 3;
+
+    PB_DS_CLASS_T_DEC
+    const typename PB_DS_CLASS_C_DEC::size_type PB_DS_CLASS_C_DEC::s_highest_bit_1 = static_cast<typename PB_DS_CLASS_C_DEC::size_type>(1) << (s_num_bits_in_size_type - 1);
+
+ 
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    {
+      size_type i = 0;
+      while (size ^ s_highest_bit_1)
+	{
+	  size <<= 1;
+	  ++i;
+	}
+
+      m_mask = 1;
+      i += 2;
+      while (i++ < s_num_bits_in_size_type)
+        m_mask = (m_mask << 1) ^ 1;
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
new file mode 100644
index 000000000..2610e0457
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
@@ -0,0 +1,108 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file mod_based_range_hashing.hpp
+ * Contains a range hashing policy base.
+ */
+
+#ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP
+#define PB_DS_MOD_BASED_RANGE_HASHING_HPP
+
+namespace __gnu_pbds
+{
+
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC			\
+    template<typename Size_Type>
+
+#define PB_DS_CLASS_C_DEC					\
+    mod_based_range_hashing<					\
+						Size_Type>
+
+    template<typename Size_Type>
+    class mod_based_range_hashing
+    {
+    protected:
+      typedef Size_Type size_type;
+
+    protected:
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      void
+      notify_resized(size_type size);
+
+      inline size_type
+      range_hash(size_type hash) const;
+
+    private:
+      size_type m_size;
+    };
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      std::swap(m_size, other.m_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    {
+      m_size = size;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    range_hash(size_type hash) const
+    {
+      return (hash % m_size);
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
new file mode 100644
index 000000000..970cfc1e5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file probe_fn_base.hpp
+ * Contains a probe policy base.
+ */
+
+#ifndef PB_DS_PROBE_FN_BASE_HPP
+#define PB_DS_PROBE_FN_BASE_HPP
+
+#include <functional>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Allocator>
+    class probe_fn_base
+    {
+    protected:
+      ~probe_fn_base() { }
+    };
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
new file mode 100644
index 000000000..4c7a6c465
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file quadratic_probe_fn_imp.hpp
+ * Contains a probe policy implementation
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{ }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+operator()(size_type i) const
+{
+  return (i*  i);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
new file mode 100644
index 000000000..24899272f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
@@ -0,0 +1,359 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file ranged_hash_fn.hpp
+ * Contains a unified ranged hash functor, allowing the hash tables
+ * to deal with a single class for ranged hashing.
+ */
+
+#ifndef PB_DS_RANGED_HASH_FN_HPP
+#define PB_DS_RANGED_HASH_FN_HPP
+
+#include <ext/pb_ds/detail/basic_types.hpp>
+#include <utility>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, typename Hash_Fn, typename Allocator, 
+	     typename Comb_Hash_Fn, bool Store_Hash>
+    class ranged_hash_fn;
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Hash_Fn, typename Allocator, \
+	     typename Comb_Hash_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_hash_fn<Key,	Hash_Fn, Allocator, Comb_Hash_Fn, false>
+
+    /**
+     * Specialization 1
+     * The client supplies a hash function and a ranged hash function,
+     * and requests that hash values not be stored.
+     **/
+    template<typename Key, typename Hash_Fn, typename Allocator, 
+	     typename Comb_Hash_Fn>
+    class ranged_hash_fn< Key, Hash_Fn, Allocator, Comb_Hash_Fn, false> 
+    : public Hash_Fn, public Comb_Hash_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef Hash_Fn hash_fn_base;
+      typedef Comb_Hash_Fn comb_hash_fn_base;
+      typedef typename Allocator::template rebind< Key>::other key_allocator;
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      ranged_hash_fn(size_type);
+
+      ranged_hash_fn(size_type, const Hash_Fn&);
+
+      ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      void
+      notify_resized(size_type);
+
+      inline size_type
+      operator()(const_key_reference) const;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn) 
+    : Hash_Fn(r_hash_fn)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		   const Comb_Hash_Fn& r_comb_hash_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn)
+    { comb_hash_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      comb_hash_fn_base::swap(other);
+      std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    { comb_hash_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_key) const
+    { return (comb_hash_fn_base::operator()(hash_fn_base::operator()(r_key)));}
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Hash_Fn, typename Allocator, \
+	     typename Comb_Hash_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_hash_fn<Key,Hash_Fn,	Allocator, Comb_Hash_Fn, true>
+
+    /**
+     * Specialization 2
+     * The client supplies a hash function and a ranged hash function,
+     * and requests that hash values be stored.
+     **/
+    template<typename Key, typename Hash_Fn, typename Allocator,
+	     typename Comb_Hash_Fn>
+    class ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, true> 
+    : public Hash_Fn, public Comb_Hash_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef std::pair<size_type, size_type> comp_hash;
+      typedef Hash_Fn hash_fn_base;
+      typedef Comb_Hash_Fn comb_hash_fn_base;
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      ranged_hash_fn(size_type);
+
+      ranged_hash_fn(size_type, const Hash_Fn&);
+
+      ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      void
+      notify_resized(size_type);
+
+      inline comp_hash
+      operator()(const_key_reference) const;
+
+      inline comp_hash
+      operator()(const_key_reference, size_type) const;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn) :
+      Hash_Fn(r_hash_fn)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		   const Comb_Hash_Fn& r_comb_hash_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn)
+    { comb_hash_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      comb_hash_fn_base::swap(other);
+      std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    { comb_hash_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::comp_hash
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_key) const
+    {
+      const size_type hash = hash_fn_base::operator()(r_key);
+      return std::make_pair(comb_hash_fn_base::operator()(hash), hash);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::comp_hash
+    PB_DS_CLASS_C_DEC::
+    operator()
+#ifdef _GLIBCXX_DEBUG
+      (const_key_reference r_key, size_type hash) const
+#else 
+      (const_key_reference /*r_key*/, size_type hash) const
+#endif
+    {
+      _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key));
+      return std::make_pair(comb_hash_fn_base::operator()(hash), hash);
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_hash_fn<Key,	null_hash_fn, Allocator, Comb_Hash_Fn, false>
+
+    /**
+     * Specialization 3
+     * The client does not supply a hash function (by specifying
+     * null_hash_fn as the Hash_Fn parameter), and requests that hash
+     * values not be stored.
+     **/
+    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+    class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false> 
+    : public null_hash_fn, public Comb_Hash_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef Comb_Hash_Fn comb_hash_fn_base;
+
+      ranged_hash_fn(size_type);
+
+      ranged_hash_fn(size_type, const Comb_Hash_Fn&);
+
+      ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn) :
+      Comb_Hash_Fn(r_comb_hash_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn, 
+		   const Comb_Hash_Fn& r_comb_hash_fn) 
+    : Comb_Hash_Fn(r_comb_hash_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    { comb_hash_fn_base::swap(other); }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_hash_fn<Key,	null_hash_fn, Allocator, Comb_Hash_Fn, true>
+
+    /**
+     * Specialization 4
+     * The client does not supply a hash function (by specifying
+     * null_hash_fn as the Hash_Fn parameter), and requests that hash
+     * values be stored.
+     **/
+    template<typename Key, typename Allocator, typename Comb_Hash_Fn>
+    class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true> 
+    : public null_hash_fn, public Comb_Hash_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef Comb_Hash_Fn comb_hash_fn_base;
+
+      ranged_hash_fn(size_type);
+
+      ranged_hash_fn(size_type, const Comb_Hash_Fn&);
+
+      ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size)
+    { Comb_Hash_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn) 
+    : Comb_Hash_Fn(r_comb_hash_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn, 
+		   const Comb_Hash_Fn& r_comb_hash_fn) 
+    : Comb_Hash_Fn(r_comb_hash_fn)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    { comb_hash_fn_base::swap(other); }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
new file mode 100644
index 000000000..ddfba9de1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
@@ -0,0 +1,327 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file ranged_probe_fn.hpp
+ * Contains a unified ranged probe functor, allowing the probe tables to deal with
+ *    a single class for ranged probeing.
+ */
+
+#ifndef PB_DS_RANGED_PROBE_FN_HPP
+#define PB_DS_RANGED_PROBE_FN_HPP
+
+#include <ext/pb_ds/detail/basic_types.hpp>
+#include <utility>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, typename Hash_Fn, typename Allocator,
+	     typename Comb_Probe_Fn, typename Probe_Fn, bool Store_Hash>
+    class ranged_probe_fn;
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Hash_Fn, typename Allocator, \
+	     typename Comb_Probe_Fn, typename Probe_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, false>
+
+    /**
+     * Specialization 1     
+     * The client supplies a probe function and a ranged probe
+     * function, and requests that hash values not be stored.
+     **/
+    template<typename Key, typename Hash_Fn, typename Allocator,
+	     typename Comb_Probe_Fn, typename Probe_Fn>
+    class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn,
+			  Probe_Fn, false> 
+    : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef Comb_Probe_Fn comb_probe_fn_base;
+      typedef Hash_Fn hash_fn_base;
+      typedef Probe_Fn probe_fn_base;
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      ranged_probe_fn(size_type);
+
+      ranged_probe_fn(size_type, const Hash_Fn&);
+
+      ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&);
+
+      ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&, 
+		      const Probe_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      void
+      notify_resized(size_type);
+
+      inline size_type
+      operator()(const_key_reference) const;
+
+      inline size_type
+      operator()(const_key_reference, size_type, size_type) const;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size)
+    { Comb_Probe_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) 
+    : Hash_Fn(r_hash_fn)
+    { Comb_Probe_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		    const Comb_Probe_Fn& r_comb_probe_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		    const Comb_Probe_Fn& r_comb_probe_fn, 
+		    const Probe_Fn& r_probe_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      comb_probe_fn_base::swap(other);
+      std::swap((Hash_Fn& )(*this), (Hash_Fn&)other);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_key) const
+    { return comb_probe_fn_base::operator()(hash_fn_base::operator()(r_key)); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference, size_type hash, size_type i) const
+    {
+      return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i));
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Hash_Fn, typename Allocator, \
+	     typename Comb_Probe_Fn, typename Probe_Fn>
+
+#define PB_DS_CLASS_C_DEC \
+    ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, true>
+
+    /**
+     * Specialization 2- The client supplies a probe function and a ranged
+     *    probe function, and requests that hash values not be stored.
+     **/
+    template<typename Key, typename Hash_Fn, typename Allocator,
+	     typename Comb_Probe_Fn, typename Probe_Fn>
+    class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, 
+			  Probe_Fn, true> 
+    : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef std::pair<size_type, size_type> comp_hash;
+      typedef Comb_Probe_Fn comb_probe_fn_base;
+      typedef Hash_Fn hash_fn_base;
+      typedef Probe_Fn probe_fn_base;
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      ranged_probe_fn(size_type);
+
+      ranged_probe_fn(size_type, const Hash_Fn&);
+
+      ranged_probe_fn(size_type, const Hash_Fn&, 
+		      const Comb_Probe_Fn&);
+
+      ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&, 
+		      const Probe_Fn&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      void
+      notify_resized(size_type);
+
+      inline comp_hash
+      operator()(const_key_reference) const;
+
+      inline size_type
+      operator()(const_key_reference, size_type, size_type) const;
+
+      inline size_type
+      operator()(const_key_reference, size_type) const;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size)
+    { Comb_Probe_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) 
+    : Hash_Fn(r_hash_fn)
+    { Comb_Probe_Fn::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		    const Comb_Probe_Fn& r_comb_probe_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, 
+		    const Comb_Probe_Fn& r_comb_probe_fn, 
+		    const Probe_Fn& r_probe_fn) 
+    : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      comb_probe_fn_base::swap(other);
+      std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    notify_resized(size_type size)
+    { comb_probe_fn_base::notify_resized(size); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::comp_hash
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference r_key) const
+    {
+      const size_type hash = hash_fn_base::operator()(r_key);
+      return std::make_pair(comb_probe_fn_base::operator()(hash), hash);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    operator()(const_key_reference, size_type hash, size_type i) const
+    {
+      return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i));
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    operator()
+#ifdef _GLIBCXX_DEBUG
+      (const_key_reference r_key, size_type hash) const
+#else 
+      (const_key_reference /*r_key*/, size_type hash) const
+#endif 
+    {
+      _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key));
+      return hash;
+    }
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+    /**
+     * Specialization 3 and 4
+     * The client does not supply a hash function or probe function,
+     * and requests that hash values not be stored.
+     **/
+    template<typename Key, typename Allocator, typename Comb_Probe_Fn>
+    class ranged_probe_fn<Key, null_hash_fn, Allocator, Comb_Probe_Fn, 
+			  null_probe_fn, false> 
+    : public Comb_Probe_Fn, public null_hash_fn, public null_probe_fn
+    {
+    protected:
+      typedef typename Allocator::size_type size_type;
+      typedef Comb_Probe_Fn comb_probe_fn_base;
+      typedef typename Allocator::template rebind<Key>::other key_allocator;
+      typedef typename key_allocator::const_reference const_key_reference;
+
+      ranged_probe_fn(size_type size)
+      { Comb_Probe_Fn::notify_resized(size); }
+
+      ranged_probe_fn(size_type, const Comb_Probe_Fn& r_comb_probe_fn)
+      : Comb_Probe_Fn(r_comb_probe_fn)
+      { }
+
+      ranged_probe_fn(size_type, const null_hash_fn&, 
+		      const Comb_Probe_Fn& r_comb_probe_fn, 
+		      const null_probe_fn&)
+      : Comb_Probe_Fn(r_comb_probe_fn)
+      { }
+
+      void
+      swap(ranged_probe_fn& other)
+      { comb_probe_fn_base::swap(other); }
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
new file mode 100644
index 000000000..7dcd82588
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_probe_fn.hpp
+ * Contains a sample probe policy.
+ */
+
+#ifndef PB_DS_SAMPLE_PROBE_FN_HPP
+#define PB_DS_SAMPLE_PROBE_FN_HPP
+
+// A sample probe policy.
+class sample_probe_fn
+{
+
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+public:
+
+  // Default constructor.
+  sample_probe_fn();
+
+  // Copy constructor.
+  sample_probe_fn(const sample_probe_fn& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_probe_fn& other);
+
+protected:
+
+  // Returns the i-th offset from the hash value of some key r_key.
+  inline size_type
+  operator()(const_key_reference r_key, size_type i) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_PROBE_FN_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
new file mode 100644
index 000000000..988f111ea
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_range_hashing.hpp
+ * Contains a range hashing policy.
+ */
+
+#ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP
+#define PB_DS_SAMPLE_RANGE_HASHING_HPP
+
+// A sample range-hashing functor.
+class sample_range_hashing
+{
+
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+public:
+
+  // Default constructor.
+  sample_range_hashing();
+
+  // Copy constructor.
+  sample_range_hashing(const sample_range_hashing& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_range_hashing& other);
+
+protected:
+
+  // Notifies the policy object that the container's __size has changed to size.
+  void
+  notify_resized(size_type size);
+
+  // Transforms the __hash value hash into a ranged-hash value.
+  inline size_type
+  operator()(size_type hash) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
new file mode 100644
index 000000000..8fa04d140
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_ranged_hash_fn.hpp
+ * Contains a ranged hash policy.
+ */
+
+#ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP
+#define PB_DS_SAMPLE_RANGED_HASH_FN_HPP
+
+// A sample ranged-hash functor.
+class sample_ranged_hash_fn
+{
+
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+public:
+
+  // Default constructor.
+  sample_ranged_hash_fn();
+
+  // Copy constructor.
+  sample_ranged_hash_fn(const sample_ranged_hash_fn& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_ranged_hash_fn& other);
+
+protected:
+
+  // Notifies the policy object that the container's __size has changed to size.
+  void
+  notify_resized(size_type size);
+
+  // Transforms r_key into a position within the table.
+  inline size_type
+  operator()(const_key_reference r_key) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
new file mode 100644
index 000000000..2bcfdf51a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_ranged_probe_fn.hpp
+ * Contains a ranged probe policy.
+ */
+
+#ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
+#define PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
+
+// A sample ranged-probe functor.
+class sample_ranged_probe_fn
+{
+
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+public:
+
+  // Default constructor.
+  sample_ranged_probe_fn();
+
+  // Copy constructor.
+  sample_ranged_probe_fn(const sample_ranged_probe_fn& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_ranged_probe_fn& other);
+
+protected:
+
+  // Notifies the policy object that the container's __size has changed to size.
+  void
+  notify_resized(size_type size);
+
+  // Transforms the const key reference r_key into the i-th position within the table. This method is called for each collision within the probe sequence.
+  inline size_type
+  operator()(const_key_reference r_key, std::size_t hash, size_type i) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
new file mode 100644
index 000000000..2448f3c79
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
@@ -0,0 +1,162 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_iterator.hpp
+ * Contains an iterator class returned by the table's const find and insert
+ *     methods.
+ */
+
+#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP
+#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP
+
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_C_DEC						\
+    left_child_next_sibling_heap_const_iterator_<Node, Allocator>
+
+#define PB_DS_BASE_C_DEC						\
+    left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator>
+
+    // Const point-type iterator.
+    template<typename Node, class Allocator>
+    class left_child_next_sibling_heap_const_iterator_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef typename PB_DS_BASE_C_DEC::node_pointer node_pointer;
+
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    public:
+
+      // Category.
+      typedef std::forward_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef typename Allocator::difference_type difference_type;
+
+      // Iterator's value type.
+      typedef typename base_type::value_type value_type;
+
+      // Iterator's pointer type.
+      typedef typename base_type::pointer pointer;
+
+      // Iterator's const pointer type.
+      typedef typename base_type::const_pointer const_pointer;
+
+      // Iterator's reference type.
+      typedef typename base_type::reference reference;
+
+      // Iterator's const reference type.
+      typedef typename base_type::const_reference const_reference;
+
+    public:
+
+      inline
+      left_child_next_sibling_heap_const_iterator_(node_pointer p_nd) : base_type(p_nd)
+      { }
+
+      // Default constructor.
+      inline
+      left_child_next_sibling_heap_const_iterator_()
+      { }
+
+      // Copy constructor.
+      inline
+      left_child_next_sibling_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other)
+      { }
+
+      // Compares content to a different iterator object.
+      inline bool
+      operator==(const PB_DS_CLASS_C_DEC& other) const
+      { return (base_type::m_p_nd == other.m_p_nd); }
+
+      // Compares content (negatively) to a different iterator object.
+      inline bool
+      operator!=(const PB_DS_CLASS_C_DEC& other) const
+      { return (base_type::m_p_nd != other.m_p_nd); }
+
+      inline PB_DS_CLASS_C_DEC& 
+      operator++()
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd != 0);
+	inc();
+	return (*this);
+      }
+
+      inline PB_DS_CLASS_C_DEC
+      operator++(int)
+      {
+	PB_DS_CLASS_C_DEC ret_it(base_type::m_p_nd);
+	operator++();
+	return (ret_it);
+      }
+
+    private:
+      void
+      inc()
+      {
+	if (base_type::m_p_nd->m_p_next_sibling != 0)
+	  {
+	    base_type::m_p_nd = base_type::m_p_nd->m_p_next_sibling;
+	    while (base_type::m_p_nd->m_p_l_child != 0)
+	      base_type::m_p_nd = base_type::m_p_nd->m_p_l_child;
+	    return;
+	  }
+
+	while (true)
+	  {
+	    node_pointer p_next = base_type::m_p_nd;
+	    base_type::m_p_nd = base_type::m_p_nd->m_p_prev_or_parent;
+	    if (base_type::m_p_nd == 0 || base_type::m_p_nd->m_p_l_child == p_next)
+	      return;
+	  }
+      }
+    };
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
new file mode 100644
index 000000000..712a76fb7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
@@ -0,0 +1,154 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_point_iterator.hpp
+ * Contains an iterator class returned by the table's const find and insert
+ *     methods.
+ */
+
+#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP
+#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC			\
+    template<typename Node, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator>
+
+    // Const point-type iterator.
+    template<typename Node, class Allocator>
+    class left_child_next_sibling_heap_node_const_point_iterator_
+    {
+
+    protected:
+      typedef typename Allocator::template rebind<Node>::other::pointer node_pointer;
+
+    public:
+
+      // Category.
+      typedef trivial_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef trivial_iterator_difference_type difference_type;
+
+      // Iterator's value type.
+      typedef typename Node::value_type value_type;
+
+      // Iterator's pointer type.
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      // Iterator's const pointer type.
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      // Iterator's reference type.
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      // Iterator's const reference type.
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+    public:
+
+      inline
+      left_child_next_sibling_heap_node_const_point_iterator_(node_pointer p_nd) : m_p_nd(p_nd)
+      { }
+
+      // Default constructor.
+      inline
+      left_child_next_sibling_heap_node_const_point_iterator_() : m_p_nd(0)
+      { }
+
+      // Copy constructor.
+      inline
+      left_child_next_sibling_heap_node_const_point_iterator_(const PB_DS_CLASS_C_DEC& other) : m_p_nd(other.m_p_nd)
+      { }
+
+      // Access.
+      inline const_pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd != 0);
+	return &m_p_nd->m_value;
+      }
+
+      // Access.
+      inline const_reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd != 0);
+	return m_p_nd->m_value;
+      }
+
+      // Compares content to a different iterator object.
+      inline bool
+      operator==(const PB_DS_CLASS_C_DEC& other) const
+      { return m_p_nd == other.m_p_nd; }
+
+      // Compares content (negatively) to a different iterator object.
+      inline bool
+      operator!=(const PB_DS_CLASS_C_DEC& other) const
+      { return m_p_nd != other.m_p_nd; }
+
+    public:
+      node_pointer m_p_nd;
+    };
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..5b6ada360
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,153 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_allocator
+PB_DS_CLASS_C_DEC::s_node_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::no_throw_copies_t
+PB_DS_CLASS_C_DEC::s_no_throw_copies_ind;
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+left_child_next_sibling_heap_() :
+  m_p_root(0),
+  m_size(0)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn) :
+  Cmp_Fn(r_cmp_fn),
+  m_p_root(0),
+  m_size(0)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other) 
+: Cmp_Fn(other), m_p_root(0), m_size(0)
+{
+  m_size = other.m_size;
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  m_p_root = recursive_copy_node(other.m_p_root);
+  m_size = other.m_size;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  value_swap(other);
+  std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+value_swap(PB_DS_CLASS_C_DEC& other)
+{
+  std::swap(m_p_root, other.m_p_root);
+  std::swap(m_size, other.m_size);
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~left_child_next_sibling_heap_()
+{
+  clear();
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+recursive_copy_node(const_node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return (0);
+
+  node_pointer p_ret = s_node_allocator.allocate(1);
+
+  __try
+    {
+      new (p_ret) node(*p_nd);
+    }
+  __catch(...)
+    {
+      s_node_allocator.deallocate(p_ret, 1);
+      __throw_exception_again;
+    }
+
+  p_ret->m_p_l_child = p_ret->m_p_next_sibling =
+    p_ret->m_p_prev_or_parent = 0;
+
+  __try
+    {
+      p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child);
+      p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling);
+    }
+  __catch(...)
+    {
+      clear_imp(p_ret);
+      __throw_exception_again;
+    }
+
+  if (p_ret->m_p_l_child != 0)
+    p_ret->m_p_l_child->m_p_prev_or_parent = p_ret;
+
+  if (p_ret->m_p_next_sibling != 0)
+    p_ret->m_p_next_sibling->m_p_prev_or_parent =
+      p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : 0;
+
+  return p_ret;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..0408d14bf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  _GLIBCXX_DEBUG_ASSERT(m_p_root == 0 || m_p_root->m_p_prev_or_parent == 0);
+
+  if (m_p_root != 0)
+    assert_node_consistent(m_p_root, Single_Link_Roots);
+  assert_size();
+  assert_iterators();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent(const_node_pointer p_nd, bool single_link) const
+{
+  if (p_nd == 0)
+    return;
+
+  assert_node_consistent(p_nd->m_p_l_child, false);
+  assert_node_consistent(p_nd->m_p_next_sibling, single_link);
+
+  if (single_link)
+    _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent == 0);
+  else if (p_nd->m_p_next_sibling != 0)
+    _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd);
+
+  if (p_nd->m_p_l_child == 0)
+    return;
+
+  const_node_pointer p_child = p_nd->m_p_l_child;
+  while (p_child != 0)
+    {
+      const_node_pointer p_next_child = p_child->m_p_next_sibling;
+      _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(p_nd->m_value, p_child->m_value));
+      p_child = p_next_child;
+    }
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_p_prev_or_parent == p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_iterators() const
+{
+  const size_type calc_size = std::distance(begin(), end());
+  if (calc_size == size())
+    return;
+  _GLIBCXX_DEBUG_ASSERT(0);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_size() const
+{
+  if (size_from_node(m_p_root) == m_size)
+    return;
+  _GLIBCXX_DEBUG_ASSERT(0);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size_under_node(const_node_pointer p_nd)
+{ return 1 + size_from_node(p_nd->m_p_l_child); }
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size_from_node(const_node_pointer p_nd)
+{
+  size_type ret = 0;
+  while (p_nd != 0)
+    {
+      ret += 1 + size_from_node(p_nd->m_p_l_child);
+      p_nd = p_nd->m_p_next_sibling;
+    }
+  return ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+degree(const_node_pointer p_nd)
+{
+  size_type ret = 0;
+  const_node_pointer p_child = p_nd->m_p_l_child;
+  while (p_child != 0)
+    {
+      ++ret;
+      p_child = p_child->m_p_next_sibling;
+    }
+  return ret;
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
new file mode 100644
index 000000000..2d8ab2d2c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
@@ -0,0 +1,150 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  clear_imp(m_p_root);
+  _GLIBCXX_DEBUG_ASSERT(m_size == 0);
+  m_p_root = 0;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+actual_erase_node(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+  p_nd->~node();
+  s_node_allocator.deallocate(p_nd, 1);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear_imp(node_pointer p_nd)
+{
+  while (p_nd != 0)
+    {
+      clear_imp(p_nd->m_p_l_child);
+      node_pointer p_next = p_nd->m_p_next_sibling;
+      actual_erase_node(p_nd);
+      p_nd = p_next;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+to_linked_list()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  node_pointer p_cur = m_p_root;
+  while (p_cur != 0)
+    if (p_cur->m_p_l_child != 0)
+      {
+	node_pointer p_child_next = p_cur->m_p_l_child->m_p_next_sibling;
+	p_cur->m_p_l_child->m_p_next_sibling = p_cur->m_p_next_sibling;
+	p_cur->m_p_next_sibling = p_cur->m_p_l_child;
+	p_cur->m_p_l_child = p_child_next;
+      }
+    else
+      p_cur = p_cur->m_p_next_sibling;
+
+#ifdef _GLIBCXX_DEBUG
+  const_node_pointer p_counter = m_p_root;
+  size_type count = 0;
+  while (p_counter != 0)
+    {
+      ++count;
+      _GLIBCXX_DEBUG_ASSERT(p_counter->m_p_l_child == 0);
+      p_counter = p_counter->m_p_next_sibling;
+    }
+  _GLIBCXX_DEBUG_ASSERT(count == m_size);
+#endif 
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+prune(Pred pred)
+{
+  node_pointer p_cur = m_p_root;
+  m_p_root = 0;
+  node_pointer p_out = 0;
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+      if (pred(p_cur->m_value))
+        {
+	  p_cur->m_p_next_sibling = p_out;
+	  if (p_out != 0)
+	    p_out->m_p_prev_or_parent = p_cur;
+	  p_out = p_cur;
+        }
+      else
+        {
+	  p_cur->m_p_next_sibling = m_p_root;
+	  if (m_p_root != 0)
+	    m_p_root->m_p_prev_or_parent = p_cur;
+	  m_p_root = p_cur;
+        }
+      p_cur = p_next;
+    }
+  return p_out;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+bubble_to_top(node_pointer p_nd)
+{
+  node_pointer p_parent = parent(p_nd);
+  while (p_parent != 0)
+    {
+      swap_with_parent(p_nd, p_parent);
+      p_parent = parent(p_nd);
+    }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
new file mode 100644
index 000000000..75e6561c3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{
+  return (m_size == 0);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{
+  return (m_size);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{
+  return (s_node_allocator.max_size());
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
new file mode 100644
index 000000000..9ffc91271
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
@@ -0,0 +1,175 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+get_new_node_for_insert(const_reference r_val)
+{
+  return get_new_node_for_insert(r_val, s_no_throw_copies_ind);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+get_new_node_for_insert(const_reference r_val, false_type)
+{
+  node_pointer p_new_nd = s_node_allocator.allocate(1);
+
+  cond_dealtor_t cond(p_new_nd);
+
+  new (const_cast<void* >(
+			  static_cast<const void* >(&p_new_nd->m_value)))
+    typename node::value_type(r_val);
+
+  cond.set_no_action();
+
+  ++m_size;
+
+  return (p_new_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+get_new_node_for_insert(const_reference r_val, true_type)
+{
+  node_pointer p_new_nd = s_node_allocator.allocate(1);
+
+  new (const_cast<void* >(
+			  static_cast<const void* >(&p_new_nd->m_value)))
+    typename node::value_type(r_val);
+
+  ++m_size;
+
+  return (p_new_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+make_child_of(node_pointer p_nd, node_pointer p_new_parent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_new_parent != 0);
+
+  p_nd->m_p_next_sibling = p_new_parent->m_p_l_child;
+
+  if (p_new_parent->m_p_l_child != 0)
+    p_new_parent->m_p_l_child->m_p_prev_or_parent = p_nd;
+
+  p_nd->m_p_prev_or_parent = p_new_parent;
+
+  p_new_parent->m_p_l_child = p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+parent(node_pointer p_nd)
+{
+  while (true)
+    {
+      node_pointer p_pot = p_nd->m_p_prev_or_parent;
+
+      if (p_pot == 0 || p_pot->m_p_l_child == p_nd)
+	return p_pot;
+
+      p_nd = p_pot;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap_with_parent(node_pointer p_nd, node_pointer p_parent)
+{
+  if (p_parent == m_p_root)
+    m_p_root = p_nd;
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_parent != 0);
+  _GLIBCXX_DEBUG_ASSERT(parent(p_nd) == p_parent);
+
+  const bool nd_direct_child = p_parent->m_p_l_child == p_nd;
+  const bool parent_root = p_parent->m_p_prev_or_parent == 0;
+  const bool parent_direct_child =
+    !parent_root&&  p_parent->m_p_prev_or_parent->m_p_l_child == p_parent;
+
+  std::swap(p_parent->m_p_prev_or_parent, p_nd->m_p_prev_or_parent);
+  std::swap(p_parent->m_p_next_sibling, p_nd->m_p_next_sibling);
+  std::swap(p_parent->m_p_l_child, p_nd->m_p_l_child);
+  std::swap(p_parent->m_metadata, p_nd->m_metadata);
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent != 0);
+
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
+
+  if (p_parent->m_p_next_sibling != 0)
+    p_parent->m_p_next_sibling->m_p_prev_or_parent = p_parent;
+
+  if (p_parent->m_p_l_child != 0)
+    p_parent->m_p_l_child->m_p_prev_or_parent = p_parent;
+
+  if (parent_direct_child)
+    p_nd->m_p_prev_or_parent->m_p_l_child = p_nd;
+  else if (!parent_root)
+    p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd;
+
+  if (!nd_direct_child)
+    {
+      p_nd->m_p_l_child->m_p_prev_or_parent = p_nd;
+
+      p_parent->m_p_prev_or_parent->m_p_next_sibling = p_parent;
+    }
+  else
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child == p_nd);
+      _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent == p_parent);
+
+      p_nd->m_p_l_child = p_parent;
+      p_parent->m_p_prev_or_parent = p_nd;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..ec09cf641
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  node_pointer p_nd = m_p_root;
+
+  if (p_nd == 0)
+    return (iterator(0));
+
+  while (p_nd->m_p_l_child != 0)
+    p_nd = p_nd->m_p_l_child;
+
+  return (iterator(p_nd));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  node_pointer p_nd = m_p_root;
+
+  if (p_nd == 0)
+    return (const_iterator(0));
+
+  while (p_nd->m_p_l_child != 0)
+    p_nd = p_nd->m_p_l_child;
+
+  return (const_iterator(p_nd));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{
+  return (iterator(0));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{
+  return (const_iterator(0));
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
new file mode 100644
index 000000000..34ad4bee0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
@@ -0,0 +1,349 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file left_child_next_sibling_heap_.hpp
+ * Contains an implementation class for a basic heap.
+ */
+
+#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP
+#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP
+
+/*
+ * Based on CLRS.
+ */
+
+#include <iterator>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp>
+#ifdef PB_DS_LC_NS_HEAP_TRACE_
+#include <iostream>
+#endif 
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_CLASS_T_DEC						\
+    template<								\
+						typename Value_Type,	\
+						class Cmp_Fn,		\
+						typename Node_Metadata,	\
+						class Allocator,	\
+						bool Single_Link_Roots>
+#else 
+#define PB_DS_CLASS_T_DEC						\
+    template<								\
+						typename Value_Type,	\
+						class Cmp_Fn,		\
+						typename Node_Metadata,	\
+						class Allocator>
+#endif 
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_CLASS_C_DEC						\
+    left_child_next_sibling_heap_<					\
+							Value_Type,	\
+							Cmp_Fn,		\
+							Node_Metadata,	\
+							Allocator,	\
+							Single_Link_Roots>
+#else 
+#define PB_DS_CLASS_C_DEC						\
+    left_child_next_sibling_heap_<					\
+							Value_Type,	\
+							Cmp_Fn,		\
+							Node_Metadata,	\
+							Allocator>
+#endif 
+
+    /**
+     * class description = "Base class for some types of h3ap$">
+     **/
+#ifdef _GLIBCXX_DEBUG
+    template<typename Value_Type,
+	     class Cmp_Fn,
+	     typename Node_Metadata,
+	     class Allocator,
+	     bool Single_Link_Roots>
+#else 
+    template<typename Value_Type,
+	     class Cmp_Fn,
+	     typename Node_Metadata,
+	     class Allocator>
+#endif 
+    class left_child_next_sibling_heap_ : public Cmp_Fn
+    {
+
+    protected:
+      typedef
+      typename Allocator::template rebind<
+      left_child_next_sibling_heap_node_<
+      Value_Type,
+      Node_Metadata,
+      Allocator> >::other
+      node_allocator;
+
+      typedef typename node_allocator::value_type node;
+
+      typedef typename node_allocator::pointer node_pointer;
+
+      typedef typename node_allocator::const_pointer const_node_pointer;
+
+      typedef Node_Metadata node_metadata;
+
+      typedef std::pair< node_pointer, node_pointer> node_pointer_pair;
+
+    private:
+      typedef cond_dealtor< node, Allocator> cond_dealtor_t;
+
+      enum
+	{
+	  simple_value = is_simple<Value_Type>::value
+	};
+
+      typedef integral_constant<int, simple_value> no_throw_copies_t;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+      typedef
+      left_child_next_sibling_heap_node_const_point_iterator_<
+	node,
+	Allocator>
+      const_point_iterator;
+
+      typedef const_point_iterator point_iterator;
+
+      typedef
+      left_child_next_sibling_heap_const_iterator_<
+	node,
+	Allocator>
+      const_iterator;
+
+      typedef const_iterator iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+    public:
+
+      left_child_next_sibling_heap_();
+
+      left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn);
+
+      left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~left_child_next_sibling_heap_();
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      Cmp_Fn& 
+      get_cmp_fn();
+
+      const Cmp_Fn& 
+      get_cmp_fn() const;
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+      void
+      clear();
+
+#ifdef PB_DS_LC_NS_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    protected:
+
+      inline node_pointer
+      get_new_node_for_insert(const_reference r_val);
+
+      inline static void
+      make_child_of(node_pointer p_nd, node_pointer p_new_parent);
+
+      void
+      value_swap(PB_DS_CLASS_C_DEC& other);
+
+      inline static node_pointer
+      parent(node_pointer p_nd);
+
+      inline void
+      swap_with_parent(node_pointer p_nd, node_pointer p_parent);
+
+      void
+      bubble_to_top(node_pointer p_nd);
+
+      inline void
+      actual_erase_node(node_pointer p_nd);
+
+      void
+      clear_imp(node_pointer p_nd);
+
+      void
+      to_linked_list();
+
+      template<typename Pred>
+      node_pointer
+      prune(Pred pred);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      assert_node_consistent(const_node_pointer p_nd, bool single_link) const;
+
+      static size_type
+      size_under_node(const_node_pointer p_nd);
+
+      static size_type
+      degree(const_node_pointer p_nd);
+#endif 
+
+#ifdef PB_DS_LC_NS_HEAP_TRACE_
+      static void
+      trace_node(const_node_pointer, size_type level);
+#endif 
+
+    protected:
+      node_pointer m_p_root;
+
+      size_type m_size;
+
+    private:
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_iterators() const;
+
+      void
+      assert_size() const;
+
+      static size_type
+      size_from_node(const_node_pointer p_nd);
+#endif 
+
+      node_pointer
+      recursive_copy_node(const_node_pointer p_nd);
+
+      inline node_pointer
+      get_new_node_for_insert(const_reference r_val, false_type);
+
+      inline node_pointer
+      get_new_node_for_insert(const_reference r_val, true_type);
+
+#ifdef PB_DS_LC_NS_HEAP_TRACE_
+      template<typename Metadata_>
+      static void
+      trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>);
+
+      static void
+      trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>);
+#endif 
+
+    private:
+      static node_allocator s_node_allocator;
+
+      static no_throw_copies_t s_no_throw_copies_ind;
+    };
+
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
new file mode 100644
index 000000000..1cdfe2883
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
@@ -0,0 +1,123 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node.hpp
+ * Contains an implementation struct for this type of heap's node.
+ */
+
+#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
+#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
+
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Value_Type, typename Metadata_Type, class Allocator>
+    struct left_child_next_sibling_heap_node_
+    {
+    private:
+      typedef
+      left_child_next_sibling_heap_node_<
+      Value_Type,
+      Metadata_Type,
+      Allocator>
+      this_type;
+
+    public:
+      typedef typename Allocator::size_type size_type;
+
+      typedef
+      typename Allocator::template rebind<
+	this_type>::other::pointer
+      node_pointer;
+
+      typedef Value_Type value_type;
+
+      typedef Metadata_Type metadata_type;
+
+    public:
+      value_type m_value;
+
+      metadata_type m_metadata;
+
+      node_pointer m_p_l_child;
+
+      node_pointer m_p_next_sibling;
+
+      node_pointer m_p_prev_or_parent;
+    };
+
+    template<typename Value_Type, class Allocator>
+    struct left_child_next_sibling_heap_node_<
+      Value_Type,
+      null_left_child_next_sibling_heap_node_metadata,
+      Allocator>
+    {
+    private:
+      typedef
+      left_child_next_sibling_heap_node_<
+      Value_Type,
+      null_left_child_next_sibling_heap_node_metadata,
+      Allocator>
+      this_type;
+
+    public:
+      typedef typename Allocator::size_type size_type;
+
+      typedef
+      typename Allocator::template rebind<
+	this_type>::other::pointer
+      node_pointer;
+
+      typedef Value_Type value_type;
+
+    public:
+      value_type m_value;
+
+      node_pointer m_p_l_child;
+
+      node_pointer m_p_next_sibling;
+
+      node_pointer m_p_prev_or_parent;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
new file mode 100644
index 000000000..5f04e14b4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file null_metadata.hpp
+ * Contains an implementation struct for this type of heap's node.
+ */
+
+#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_0_METADATA_HPP
+#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_0_METADATA_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    struct null_left_child_next_sibling_heap_node_metadata
+    { };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_0_METADATA_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..350b4d08a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
@@ -0,0 +1,52 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn() const
+{ return *this; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
new file mode 100644
index 000000000..d42100212
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+#ifdef PB_DS_LC_NS_HEAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << std::endl;
+
+  trace_node(m_p_root, 0);
+
+  std::cerr << std::endl;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_node(const_node_pointer p_nd, size_type level)
+{
+  while (p_nd != 0)
+    {
+      for (size_type i = 0; i < level; ++i)
+	std::cerr << ' ';
+
+      std::cerr << p_nd <<
+	" prev = " << p_nd->m_p_prev_or_parent <<
+	" next " << p_nd->m_p_next_sibling <<
+	" left = " << p_nd->m_p_l_child << " ";
+
+      trace_node_metadata(p_nd, type_to_type<node_metadata>());
+
+      std::cerr << p_nd->m_value << std::endl;
+
+      trace_node(p_nd->m_p_l_child, level + 1);
+
+      p_nd = p_nd->m_p_next_sibling;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Metadata_>
+void
+PB_DS_CLASS_C_DEC::
+trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>)
+{
+  std::cerr << "(" << p_nd->m_metadata << ") ";
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>)
+{ }
+
+#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
new file mode 100644
index 000000000..056488521
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
@@ -0,0 +1,142 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructor_destructor_fn_imps.hpp
+ * Contains implementations of PB_DS_CLASS_NAME.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::entry_allocator
+PB_DS_CLASS_C_DEC::s_entry_allocator;
+
+PB_DS_CLASS_T_DEC
+Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn;
+
+PB_DS_CLASS_T_DEC
+null_lu_metadata PB_DS_CLASS_C_DEC::s_null_lu_metadata;
+
+PB_DS_CLASS_T_DEC
+Update_Policy PB_DS_CLASS_C_DEC::s_update_policy;
+
+PB_DS_CLASS_T_DEC
+type_to_type<
+  typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator;
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME() : m_p_l(0)
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(It first_it, It last_it) : m_p_l(0)
+{
+  copy_from_range(first_it, last_it);
+  _GLIBCXX_DEBUG_ONLY(assert_valid(););
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : 
+#ifdef _GLIBCXX_DEBUG
+  debug_base(),
+#endif
+m_p_l(0)
+{
+  __try
+    {
+      for (const_iterator it = other.begin(); it != other.end(); ++it)
+        {
+	  entry_pointer p_l = allocate_new_entry(*it, 
+			PB_DS_TYPES_TRAITS_C_DEC::m_no_throw_copies_indicator);
+
+	  p_l->m_p_next = m_p_l;
+	  m_p_l = p_l;
+        }
+    }
+  __catch(...)
+    {
+      deallocate_all();
+      __throw_exception_again;
+    }
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
+  std::swap(m_p_l, other.m_p_l);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+deallocate_all()
+{
+  entry_pointer p_l = m_p_l;
+  while (p_l != 0)
+    {
+      entry_pointer p_next_l = p_l->m_p_next;
+      actual_erase_entry(p_l);
+      p_l = p_next_l;
+    }
+  m_p_l = 0;
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_CLASS_NAME()
+{ deallocate_all(); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
new file mode 100644
index 000000000..95e9e22b1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains implementations of cc_ht_map_'s debug-mode functions.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  size_type calc_size = 0;
+  for (const_iterator it = begin(); it != end(); ++it)
+    {
+      debug_base::check_key_exists(PB_DS_V2F(*it));
+      ++calc_size;
+    }
+  debug_base::check_size(calc_size);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
new file mode 100644
index 000000000..021ef50d8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file entry_metadata_base.hpp
+ * Contains an implementation for a list update map.
+ */
+
+#ifndef PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP
+#define PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Metadata>
+    struct lu_map_entry_metadata_base
+    {
+      Metadata m_update_metadata;
+    };
+    
+    template<>
+    struct lu_map_entry_metadata_base<null_lu_metadata>
+    { };  
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
new file mode 100644
index 000000000..c481aaa2d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
@@ -0,0 +1,135 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  if (m_p_l == 0)
+    return false;
+
+  if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value)))
+    {
+      entry_pointer p_next = m_p_l->m_p_next;
+      actual_erase_entry(m_p_l);
+      m_p_l = p_next;
+      return true;
+    }
+
+  entry_pointer p_l = m_p_l;
+  while (p_l->m_p_next != 0)
+    if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value)))
+      {
+	erase_next(p_l);
+	return true;
+      }
+    else
+      p_l = p_l->m_p_next;
+  return false;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  deallocate_all();
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  size_type num_ersd = 0;
+  while (m_p_l != 0 && pred(m_p_l->m_value))
+    {
+      entry_pointer p_next = m_p_l->m_p_next;
+      ++num_ersd;
+      actual_erase_entry(m_p_l);
+      m_p_l = p_next;
+    }
+
+  if (m_p_l == 0)
+    return num_ersd;
+
+  entry_pointer p_l = m_p_l;
+  while (p_l->m_p_next != 0)
+    {
+      if (pred(p_l->m_p_next->m_value))
+        {
+	  ++num_ersd;
+	  erase_next(p_l);
+        }
+      else
+	p_l = p_l->m_p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_next(entry_pointer p_l)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_l != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_l != m_p_l);
+  _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != 0);
+  entry_pointer p_next_l = p_l->m_p_next->m_p_next;
+  actual_erase_entry(p_l->m_p_next);
+  p_l->m_p_next = p_next_l;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+actual_erase_entry(entry_pointer p_l)
+{
+  _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));)
+  p_l->~entry();
+  s_entry_allocator.deallocate(p_l, 1);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
new file mode 100644
index 000000000..0c872cbe0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+find_imp(const_key_reference r_key) const
+{
+  if (m_p_l == 0)
+    return 0;
+  if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value)))
+    {
+      apply_update(m_p_l, s_metadata_type_indicator);
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
+      return m_p_l;
+    }
+
+  entry_pointer p_l = m_p_l;
+  while (p_l->m_p_next != 0)
+    {
+      entry_pointer p_next = p_l->m_p_next;
+      if (s_eq_fn(r_key, PB_DS_V2F(p_next->m_value)))
+        {
+	  if (apply_update(p_next, s_metadata_type_indicator))
+            {
+	      p_l->m_p_next = p_next->m_p_next;
+	      p_next->m_p_next = m_p_l;
+	      m_p_l = p_next;
+	      return m_p_l;
+            }
+	  return p_next;
+        }
+      else
+	p_l = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+  return 0;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Metadata>
+inline bool
+PB_DS_CLASS_C_DEC::
+apply_update(entry_pointer p_l, type_to_type<Metadata>)
+{ return s_update_policy(p_l->m_update_metadata); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+apply_update(entry_pointer, type_to_type<null_lu_metadata>)
+{ return s_update_policy(s_null_lu_metadata); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
new file mode 100644
index 000000000..31f743cf1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{ return std::distance(begin(), end()); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return s_entry_allocator.max_size(); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return (m_p_l == 0); }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
new file mode 100644
index 000000000..3e294fbdc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
@@ -0,0 +1,106 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<
+  typename PB_DS_CLASS_C_DEC::point_iterator,
+  bool>
+PB_DS_CLASS_C_DEC::
+insert(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  entry_pointer p_l = find_imp(PB_DS_V2F(r_val));
+
+  if (p_l != 0)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val));)
+      return std::make_pair(point_iterator(&p_l->m_value), false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val));)
+
+  p_l = allocate_new_entry(r_val, traits_base::m_no_throw_copies_indicator);
+  p_l->m_p_next = m_p_l;
+  m_p_l = p_l;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return std::make_pair(point_iterator(&p_l->m_value), true);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+allocate_new_entry(const_reference r_val, false_type)
+{
+  entry_pointer p_l = s_entry_allocator.allocate(1);
+  cond_dealtor_t cond(p_l);
+  new (const_cast<void* >(static_cast<const void* >(&p_l->m_value)))
+    value_type(r_val);
+
+  cond.set_no_action();
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
+  init_entry_metadata(p_l, s_metadata_type_indicator);
+  return p_l;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::entry_pointer
+PB_DS_CLASS_C_DEC::
+allocate_new_entry(const_reference    r_val, true_type)
+{
+  entry_pointer p_l = s_entry_allocator.allocate(1);
+  new (&p_l->m_value) value_type(r_val);
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
+  init_entry_metadata(p_l, s_metadata_type_indicator);
+  return p_l;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Metadata>
+inline void
+PB_DS_CLASS_C_DEC::
+init_entry_metadata(entry_pointer p_l, type_to_type<Metadata>)
+{ new (&p_l->m_update_metadata) Metadata(s_update_policy()); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>)
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..ac3163858
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
@@ -0,0 +1,80 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{
+  if (m_p_l == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(empty());
+      return end();
+    }
+  return iterator(&m_p_l->m_value, m_p_l, this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{
+  if (m_p_l == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(empty());
+      return end();
+    }
+  return iterator(&m_p_l->m_value, m_p_l, const_cast<PB_DS_CLASS_C_DEC* >(this));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{ return iterator(0, 0, this); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{
+  return const_iterator(0, 0, const_cast<PB_DS_CLASS_C_DEC* const>(this));
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
new file mode 100644
index 000000000..aa8dd1b52
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
@@ -0,0 +1,359 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file lu_map_.hpp
+ * Contains a list update map.
+ */
+
+#include <utility>
+#include <iterator>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp>
+#include <ext/pb_ds/exception.hpp>
+#ifdef _GLIBCXX_DEBUG
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#endif 
+#ifdef PB_DS_LU_MAP_TRACE_
+#include <iostream>
+#endif 
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, class Eq_Fn, \
+	     class Allocator, class Update_Policy>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME lu_map_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME lu_map_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Eq_Fn, Allocator, Update_Policy>
+
+#define PB_DS_TYPES_TRAITS_C_DEC \
+    types_traits<Key, Mapped, Allocator, false>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC \
+    debug_map_base<Key, Eq_Fn, \
+	      typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+    /* Skip to the lu, my darling. */
+    // list-based (with updates) associative container.
+    template<typename Key,
+	     typename Mapped,
+	     class Eq_Fn,
+	     class Allocator,
+	     class Update_Policy>
+    class PB_DS_CLASS_NAME :
+#ifdef _GLIBCXX_DEBUG
+      protected PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+      public PB_DS_TYPES_TRAITS_C_DEC
+    {
+    private:
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+
+      struct entry 
+     : public lu_map_entry_metadata_base<typename Update_Policy::metadata_type>
+      {
+	typename traits_base::value_type m_value;
+	typename Allocator::template rebind<entry>::other::pointer m_p_next;
+      };
+
+      typedef typename Allocator::template rebind<entry>::other entry_allocator;
+      typedef typename entry_allocator::pointer entry_pointer;
+      typedef typename entry_allocator::const_pointer const_entry_pointer;
+      typedef typename entry_allocator::reference entry_reference;
+      typedef typename entry_allocator::const_reference const_entry_reference;
+
+      typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator;
+      typedef typename entry_pointer_allocator::pointer entry_pointer_array;
+
+      typedef typename traits_base::value_type value_type_;
+      typedef typename traits_base::pointer pointer_;
+      typedef typename traits_base::const_pointer const_pointer_;
+      typedef typename traits_base::reference reference_;
+      typedef typename traits_base::const_reference const_reference_;
+
+#define PB_DS_GEN_POS entry_pointer
+
+#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
+#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
+
+#undef PB_DS_GEN_POS
+
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+      typedef cond_dealtor<entry, Allocator> cond_dealtor_t;
+
+    public:
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef Eq_Fn eq_fn;
+      typedef Update_Policy update_policy;
+      typedef typename Update_Policy::metadata_type update_metadata;
+      typedef typename traits_base::key_type key_type;
+      typedef typename traits_base::key_pointer key_pointer;
+      typedef typename traits_base::const_key_pointer const_key_pointer;
+      typedef typename traits_base::key_reference key_reference;
+      typedef typename traits_base::const_key_reference const_key_reference;
+      typedef typename traits_base::mapped_type mapped_type;
+      typedef typename traits_base::mapped_pointer mapped_pointer;
+      typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
+      typedef typename traits_base::mapped_reference mapped_reference;
+      typedef typename traits_base::const_mapped_reference const_mapped_reference;
+      typedef typename traits_base::value_type value_type;
+      typedef typename traits_base::pointer pointer;
+      typedef typename traits_base::const_pointer const_pointer;
+      typedef typename traits_base::reference reference;
+      typedef typename traits_base::const_reference const_reference;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef point_iterator_ point_iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_point_iterator_ point_iterator;
+#endif 
+
+      typedef const_point_iterator_ const_point_iterator;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef iterator_ iterator;
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+      typedef const_iterator_ iterator;
+#endif 
+
+      typedef const_iterator_ const_iterator;
+
+    public:
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      virtual
+      ~PB_DS_CLASS_NAME();
+
+      template<typename It>
+      PB_DS_CLASS_NAME(It first_it, It last_it);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      inline bool
+      empty() const;
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return insert(std::make_pair(r_key, mapped_type())).first->second;
+#else 
+	insert(r_key);
+	return traits_base::s_null_mapped;
+#endif 
+      }
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference);
+
+      inline point_iterator
+      find(const_key_reference r_key)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	entry_pointer p_e = find_imp(r_key);
+	return point_iterator(p_e == 0 ? 0: &p_e->m_value);
+      }
+
+      inline const_point_iterator
+      find(const_key_reference r_key) const
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	entry_pointer p_e = find_imp(r_key);
+	return const_point_iterator(p_e == 0 ? 0: &p_e->m_value);
+      }
+
+      inline bool
+      erase(const_key_reference);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      void
+      clear();
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_LU_MAP_TRACE_
+      void
+      trace() const;
+#endif
+
+    protected:
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+    private:
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      friend class iterator_;
+#endif 
+
+      friend class const_iterator_;
+
+      inline entry_pointer
+      allocate_new_entry(const_reference, false_type);
+
+      inline entry_pointer
+      allocate_new_entry(const_reference, true_type);
+
+      template<typename Metadata>
+      inline static void
+      init_entry_metadata(entry_pointer, type_to_type<Metadata>);
+
+      inline static void
+      init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>);
+
+      void
+      deallocate_all();
+
+      void
+      erase_next(entry_pointer);
+
+      void
+      actual_erase_entry(entry_pointer);
+
+      void
+      inc_it_state(const_pointer& r_p_value, entry_pointer& r_pos) const
+      {
+	r_pos = r_pos->m_p_next;
+	r_p_value = (r_pos == 0) ? 0 : &r_pos->m_value;
+      }
+
+      template<typename Metadata>
+      inline static bool
+      apply_update(entry_pointer, type_to_type<Metadata>);
+
+      inline static bool
+      apply_update(entry_pointer, type_to_type<null_lu_metadata>);
+
+      inline entry_pointer
+      find_imp(const_key_reference) const;
+
+      static entry_allocator s_entry_allocator;
+      static Eq_Fn s_eq_fn;
+      static Update_Policy s_update_policy;
+      static type_to_type<update_metadata> s_metadata_type_indicator;
+      static null_lu_metadata s_null_lu_metadata;
+
+      mutable entry_pointer m_p_l;
+    };
+
+#include <ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef  PB_DS_TYPES_TRAITS_C_DEC
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
new file mode 100644
index 000000000..009610998
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains implementations of lu_map_.
+ */
+
+#ifdef PB_DS_LU_MAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << m_p_l << std::endl << std::endl;
+  const_entry_pointer p_l = m_p_l;
+  while (p_l != 0)
+    {
+      std::cerr << PB_DS_V2F(p_l->m_value) << std::endl;
+      p_l = p_l->m_p_next;
+    }
+  std::cerr << std::endl;
+}
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
new file mode 100644
index 000000000..8e476cb91
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file counter_lu_metadata.hpp
+ * Contains implementation of a lu counter policy's metadata.
+ */
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Size_Type>
+    class counter_lu_policy_base;
+
+    // A list-update metadata type that moves elements to the front of
+    // the list based on the counter algorithm.
+    template<typename Size_Type = std::size_t>
+    class counter_lu_metadata
+    {
+    public:
+      typedef Size_Type size_type;
+
+    private:
+      counter_lu_metadata(size_type init_count) : m_count(init_count)
+      { }
+
+      friend class counter_lu_policy_base<size_type>;
+
+      mutable size_type m_count;
+    };
+
+    template<typename Size_Type>
+    class counter_lu_policy_base
+    {
+    protected:
+      typedef Size_Type size_type;
+
+      counter_lu_metadata<size_type>
+      operator()(size_type max_size) const
+      { return counter_lu_metadata<Size_Type>(std::rand() % max_size); }
+
+      template<typename Metadata_Reference>
+      bool
+      operator()(Metadata_Reference r_data, size_type m_max_count) const
+      {
+	if (++r_data.m_count != m_max_count)
+	  return false;
+	r_data.m_count = 0;
+	return true;
+      }
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
new file mode 100644
index 000000000..f74a9fb54
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
@@ -0,0 +1,51 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file counter_lu_policy_imp.hpp
+ * Contains a lu counter policy implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+detail::counter_lu_metadata<typename Allocator::size_type>
+PB_DS_CLASS_C_DEC::
+operator()() const
+{ return (base_type::operator()(max_count)); }
+
+PB_DS_CLASS_T_DEC
+bool
+PB_DS_CLASS_C_DEC::
+operator()(metadata_reference r_data) const
+{ return (base_type::operator()(r_data, max_count)); }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
new file mode 100644
index 000000000..34426c538
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file mtf_lu_policy_imp.hpp
+ * Contains a move-to-front policy implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+null_lu_metadata PB_DS_CLASS_C_DEC::s_metadata;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::metadata_type
+PB_DS_CLASS_C_DEC::
+operator()() const
+{ return s_metadata; }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+operator()(metadata_reference /*r_data*/) const
+{ return true; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
new file mode 100644
index 000000000..c5da1e9d0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_update_policy.hpp
+ * Contains a sample policy for list update containers.
+ */
+
+#ifndef PB_DS_SAMPLE_UPDATE_POLICY_HPP
+#define PB_DS_SAMPLE_UPDATE_POLICY_HPP
+
+// A sample list-update policy.
+struct sample_update_policy
+{
+  // Default constructor.
+  sample_update_policy();
+
+  // Copy constructor.
+  sample_update_policy(const sample_update_policy&);
+
+  // Swaps content.
+  inline void
+  swap(sample_update_policy& other);
+
+protected:
+  // Metadata on which this functor operates.
+  typedef some_metadata_type metadata_type;
+
+  // Creates a metadata object.
+  metadata_type
+  operator()() const;
+
+  // Decides whether a metadata object should be moved to the front of
+  // the list. A list-update based containers object will call this
+  // method to decide whether to move a node to the front of the
+  // list. The method shoule return true if the node should be moved
+  // to the front of the list.
+  bool
+  operator()(metadata_reference) const;
+};
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
new file mode 100644
index 000000000..e2c4b9ae9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_dtor.hpp
+ * Contains a conditional destructor
+ */
+
+template<typename Size_Type>
+class cond_dtor
+{
+public:
+  cond_dtor(value_vector a_vec, iterator& r_last_it, Size_Type total_size) 
+  : m_a_vec(a_vec), m_r_last_it(r_last_it), m_max_size(total_size),
+    m_no_action(false)
+  { }
+
+  ~cond_dtor()
+  {
+    if (m_no_action)
+      return;
+    iterator it = m_a_vec;
+    while (it != m_r_last_it)
+      {
+	it->~value_type();
+	++it;
+      }
+
+    if (m_max_size > 0)
+      value_allocator().deallocate(m_a_vec, m_max_size);
+  }
+
+  inline void
+  set_no_action()
+  { m_no_action = true; }
+
+protected:
+  value_vector m_a_vec;
+  iterator& m_r_last_it;
+  const Size_Type m_max_size;
+  bool m_no_action;
+};
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..d6844fc1e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,273 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::value_allocator
+PB_DS_CLASS_C_DEC::s_value_alloc;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::metadata_allocator
+PB_DS_CLASS_C_DEC::s_metadata_alloc;
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_OV_TREE_CLASS_NAME() :
+  m_a_values(0),
+  m_a_metadata(0),
+  m_end_it(0),
+  m_size(0)
+{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
+  cmp_fn_base(r_cmp_fn),
+  m_a_values(0),
+  m_a_metadata(0),
+  m_end_it(0),
+  m_size(0)
+{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
+  cmp_fn_base(r_cmp_fn),
+  node_update(r_node_update),
+  m_a_values(0),
+  m_a_metadata(0),
+  m_end_it(0),
+  m_size(0)
+{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+#ifdef _GLIBCXX_DEBUG
+  debug_base(other),
+#endif 
+#ifdef PB_DS_TREE_TRACE
+  PB_DS_TREE_TRACE_BASE_C_DEC(other),
+#endif 
+  cmp_fn_base(other),
+  node_update(other),
+  m_a_values(0),
+  m_a_metadata(0),
+  m_end_it(0),
+  m_size(0)
+{
+  copy_from_ordered_range(other.begin(), other.end());
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+inline void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+  typedef
+    std::map<
+    key_type,
+    mapped_type,
+    Cmp_Fn,
+    typename Allocator::template rebind<
+    value_type>::other>
+    map_type;
+#else 
+  typedef
+    std::set<
+    key_type,
+    Cmp_Fn,
+    typename Allocator::template rebind<
+    Key>::other>
+    map_type;
+#endif 
+
+  map_type m(first_it, last_it);
+  copy_from_ordered_range(m.begin(), m.end());
+}
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_ordered_range(It first_it, It last_it)
+{
+  const size_type len = std::distance(first_it, last_it);
+  if (len == 0)
+    return;
+
+  value_vector a_values = s_value_alloc.allocate(len);
+  iterator target_it = a_values;
+  It source_it = first_it;
+  It source_end_it = last_it;
+
+  cond_dtor<size_type> cd(a_values, target_it, len);
+  while (source_it != source_end_it)
+    {
+      new (const_cast<void* >(static_cast<const void* >(target_it)))
+	value_type(*source_it++);
+
+      ++target_it;
+    }
+
+  reallocate_metadata((node_update* )this, len);
+  cd.set_no_action();
+  m_a_values = a_values;
+  m_size = len;
+  m_end_it = m_a_values + m_size;
+  update(PB_DS_node_begin_imp(), (node_update* )this);
+
+#ifdef _GLIBCXX_DEBUG
+  const_iterator dbg_it = m_a_values;
+  while (dbg_it != m_end_it)
+    {
+      debug_base::insert_new(PB_DS_V2F(*dbg_it));
+      dbg_it++;
+    }
+  PB_DS_CLASS_C_DEC::assert_valid();
+#endif 
+}
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_ordered_range(It first_it, It last_it, It other_first_it, 
+			It other_last_it)
+{
+  clear();
+  const size_type len = std::distance(first_it, last_it) 
+    		         + std::distance(other_first_it, other_last_it);
+
+  value_vector a_values = s_value_alloc.allocate(len);
+
+  iterator target_it = a_values;
+  It source_it = first_it;
+  It source_end_it = last_it;
+
+  cond_dtor<size_type> cd(a_values, target_it, len);
+  while (source_it != source_end_it)
+    {
+      new (const_cast<void* >(static_cast<const void* >(target_it)))
+	value_type(*source_it++);
+      ++target_it;
+    }
+
+  source_it = other_first_it;
+  source_end_it = other_last_it;
+
+  while (source_it != source_end_it)
+    {
+      new (const_cast<void* >(static_cast<const void* >(target_it)))
+	value_type(*source_it++);
+      ++target_it;
+    }
+
+  reallocate_metadata((node_update* )this, len);
+  cd.set_no_action();
+  m_a_values = a_values;
+  m_size = len;
+  m_end_it = m_a_values + m_size;
+  update(PB_DS_node_begin_imp(), (node_update* )this);
+
+#ifdef _GLIBCXX_DEBUG
+  const_iterator dbg_it = m_a_values;
+  while (dbg_it != m_end_it)
+    {
+      debug_base::insert_new(PB_DS_V2F(*dbg_it));
+      dbg_it++;
+    }
+  PB_DS_CLASS_C_DEC::assert_valid();
+#endif 
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  value_swap(other);
+  std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+value_swap(PB_DS_CLASS_C_DEC& other)
+{
+  std::swap(m_a_values, other.m_a_values);
+  std::swap(m_a_metadata, other.m_a_metadata);
+  std::swap(m_size, other.m_size);
+  std::swap(m_end_it, other.m_end_it);
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_OV_TREE_CLASS_NAME()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
+  reallocate_metadata((node_update* )this, 0);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update(node_iterator /*it*/, null_node_update_pointer)
+{ }
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update>
+void
+PB_DS_CLASS_C_DEC::
+update(node_iterator nd_it, Node_Update* p_update)
+{
+  const_node_iterator end_it = PB_DS_node_end_imp();
+  if (nd_it == end_it)
+    return;
+  update(nd_it.get_l_child(), p_update);
+  update(nd_it.get_r_child(), p_update);
+  node_update::operator()(nd_it, end_it);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
new file mode 100644
index 000000000..66f4ed667
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  std::cout << "av1" << std::endl;
+  if (m_a_values == 0 || m_end_it == 0 || m_size == 0)
+    _GLIBCXX_DEBUG_ASSERT(m_a_values == 0 &&  m_end_it == 0 && m_size == 0);
+
+  std::cout << "av2" << std::endl;
+  assert_iterators();
+  std::cout << "av3" << std::endl;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_iterators() const
+{
+  debug_base::check_size(m_size);
+  size_type iterated_num = 0;
+  const_iterator prev_it = end();
+  _GLIBCXX_DEBUG_ASSERT(m_end_it == m_a_values + m_size);
+  for (const_iterator it = begin(); it != end(); ++it)
+    {
+      ++iterated_num;
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(*it));)
+      _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it);
+      const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it));
+      --upper_bound_it;
+      _GLIBCXX_DEBUG_ASSERT(upper_bound_it == it);
+      if (prev_it != end())
+	_GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*prev_it),
+						 PB_DS_V2F(*it)));
+      prev_it = it;
+    }
+  _GLIBCXX_DEBUG_ASSERT(iterated_num == m_size);
+}
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
new file mode 100644
index 000000000..6f9a09d8d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
@@ -0,0 +1,193 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  if (m_size == 0)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return;
+    }
+  else
+    {
+      reallocate_metadata((node_update* )this, 0);
+      cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+  m_a_values = 0;
+  m_size = 0;
+  m_end_it = m_a_values;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+#ifdef PB_DS_REGRESSION
+    typename Allocator::group_adjustor adjust(m_size);
+#endif 
+
+  size_type new_size = 0;
+  size_type num_val_ersd = 0;
+  iterator source_it = m_a_values;
+  for (source_it = begin(); source_it != m_end_it; ++source_it)
+    if (!pred(*source_it))
+      ++new_size;
+    else
+      ++num_val_ersd;
+
+  if (new_size == 0)
+    {
+      clear();
+      return num_val_ersd;
+    }
+
+  value_vector a_new_values = s_value_alloc.allocate(new_size);
+  iterator target_it = a_new_values;
+  cond_dtor<size_type> cd(a_new_values, target_it, new_size);
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear());
+  for (source_it = begin(); source_it != m_end_it; ++source_it)
+    {
+      if (!pred(*source_it))
+        {
+	  new (const_cast<void*>(static_cast<const void* >(target_it)))
+	    value_type(*source_it);
+
+	  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it)));
+	  ++target_it;
+        }
+    }
+
+  reallocate_metadata((node_update* )this, new_size);
+  cd.set_no_action();
+
+  {
+    cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
+  }
+
+  m_a_values = a_new_values;
+  m_size = new_size;
+  m_end_it = target_it;
+  update(node_begin(), (node_update* )this);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return num_val_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+It
+PB_DS_CLASS_C_DEC::
+erase_imp(It it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  if (it == end())
+    return end();
+
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::check_key_exists(PB_DS_V2F(*it));)
+
+#ifdef PB_DS_REGRESSION
+    typename Allocator::group_adjustor adjust(m_size);
+#endif 
+
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  value_vector a_values = s_value_alloc.allocate(m_size - 1);
+  iterator source_it = begin();
+  iterator source_end_it = end();
+  iterator target_it = a_values;
+  iterator ret_it = end();
+
+  cond_dtor<size_type> cd(a_values, target_it, m_size - 1);
+
+  _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;)
+
+  while (source_it != source_end_it)
+    {
+      if (source_it != it)
+	{
+          _GLIBCXX_DEBUG_ONLY(++cnt;)
+	  _GLIBCXX_DEBUG_ASSERT(cnt != m_size);
+          new (const_cast<void* >(static_cast<const void* >(target_it)))
+	      value_type(*source_it);
+
+          ++target_it;
+	}
+      else
+	ret_it = target_it;
+    ++source_it;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  reallocate_metadata((node_update* )this, m_size - 1);
+  cd.set_no_action();
+  _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::erase_existing(PB_DS_V2F(*it));)
+  {
+    cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
+  }
+
+  m_a_values = a_values;
+  --m_size;
+  m_end_it = m_a_values + m_size;
+  update(node_begin(), (node_update* )this);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return It(ret_it);
+}
+
+PB_DS_CLASS_T_DEC
+bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  point_iterator it = find(r_key);
+  if (it == end())
+    return false;
+  erase(it);
+  return true;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
new file mode 100644
index 000000000..c9421af39
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return m_size;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return s_value_alloc.max_size(); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return size() == 0; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
new file mode 100644
index 000000000..51d1b4d34
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+reallocate_metadata(null_node_update_pointer, size_type)
+{ }
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+void
+PB_DS_CLASS_C_DEC::
+reallocate_metadata(Node_Update_* , size_type new_size)
+{
+  metadata_pointer a_new_metadata_vec =(new_size == 0) ? 0 : s_metadata_alloc.allocate(new_size);
+
+  if (m_a_metadata != 0)
+    {
+      for (size_type i = 0; i < m_size; ++i)
+	m_a_metadata[i].~metadata_type();
+      s_metadata_alloc.deallocate(m_a_metadata, m_size);
+    }
+  std::swap(m_a_metadata, a_new_metadata_vec);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..40f110084
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin() const
+{ return PB_DS_node_begin_imp(); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_end() const
+{ return PB_DS_node_end_imp(); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin()
+{ return PB_DS_node_begin_imp(); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_end()
+{ return PB_DS_node_end_imp(); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+PB_DS_node_begin_imp() const
+{
+  return const_node_iterator(const_cast<pointer>(mid_pointer(begin(), end())),
+			      const_cast<pointer>(begin()),
+			      const_cast<pointer>(end()),(m_a_metadata == 0)?
+			      0 :
+			      mid_pointer(m_a_metadata, m_a_metadata + m_size));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+PB_DS_node_end_imp() const
+{
+  return const_node_iterator(end(), end(), end(),
+		     (m_a_metadata == 0) ? 0 : m_a_metadata + m_size);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+PB_DS_node_begin_imp()
+{
+  return node_iterator(mid_pointer(begin(), end()), begin(), end(),
+		       (m_a_metadata == 0) ? 0 : mid_pointer(m_a_metadata, m_a_metadata + m_size));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+PB_DS_node_end_imp()
+{
+  return node_iterator(end(), end(),
+		  end(),(m_a_metadata == 0) ? 0 : m_a_metadata + m_size);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
new file mode 100644
index 000000000..3517896a6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
@@ -0,0 +1,292 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_iterators.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+#ifndef PB_DS_OV_TREE_NODE_ITERATORS_HPP
+#define PB_DS_OV_TREE_NODE_ITERATORS_HPP
+
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC	\
+    ov_tree_node_const_it_<Value_Type, Metadata_Type, Allocator>
+
+    // Const node reference.
+    template<typename Value_Type, typename Metadata_Type, class Allocator>
+    class ov_tree_node_const_it_
+    {
+
+    protected:
+      typedef
+      typename Allocator::template rebind<
+      Value_Type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Value_Type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Metadata_Type>::other::const_pointer
+      const_metadata_pointer;
+
+      typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC this_type;
+
+    protected:
+
+      template<typename Ptr>
+      inline static Ptr
+      mid_pointer(Ptr p_begin, Ptr p_end)
+      {
+	_GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
+	return (p_begin + (p_end - p_begin) / 2);
+      }
+
+    public:
+
+      typedef trivial_iterator_tag iterator_category;
+
+      typedef trivial_iterator_difference_type difference_type;
+
+      typedef
+      typename Allocator::template rebind<
+	Value_Type>::other::const_pointer
+      value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	Value_Type>::type>::other::const_pointer
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	Value_Type>::type>::other::const_pointer
+      const_reference;
+
+      typedef Metadata_Type metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::const_reference
+      const_metadata_reference;
+
+    public:
+      inline
+      ov_tree_node_const_it_(const_pointer p_nd = 0,  const_pointer p_begin_nd = 0,  const_pointer p_end_nd = 0,  const_metadata_pointer p_metadata = 0) : m_p_value(const_cast<pointer>(p_nd)), m_p_begin_value(const_cast<pointer>(p_begin_nd)), m_p_end_value(const_cast<pointer>(p_end_nd)), m_p_metadata(p_metadata)
+      { }
+
+      inline const_reference
+      operator*() const
+      { return m_p_value; }
+
+      inline const_metadata_reference
+      get_metadata() const
+      {
+	enum
+	  {
+	    has_metadata = !is_same<Metadata_Type, null_node_metadata>::value
+	  };
+
+	PB_DS_STATIC_ASSERT(should_have_metadata, has_metadata);
+	_GLIBCXX_DEBUG_ASSERT(m_p_metadata != 0);
+	return *m_p_metadata;
+      }
+
+      inline this_type
+      get_l_child() const
+      {
+	if (m_p_begin_value == m_p_value)
+	  return (this_type(m_p_begin_value, m_p_begin_value, m_p_begin_value));
+
+	const_metadata_pointer p_begin_metadata =
+	  m_p_metadata - (m_p_value - m_p_begin_value);
+
+	return (this_type(mid_pointer(m_p_begin_value, m_p_value),
+			  m_p_begin_value,
+			  m_p_value,
+			  mid_pointer(p_begin_metadata, m_p_metadata)));
+      }
+
+      inline this_type
+      get_r_child() const
+      {
+	if (m_p_value == m_p_end_value)
+	  return (this_type(m_p_end_value,  m_p_end_value,  m_p_end_value));
+
+	const_metadata_pointer p_end_metadata =
+	  m_p_metadata + (m_p_end_value - m_p_value);
+
+	return (this_type(mid_pointer(m_p_value + 1, m_p_end_value),
+			  m_p_value + 1,
+			  m_p_end_value,(m_p_metadata == 0) ?
+			  0 : mid_pointer(m_p_metadata + 1, p_end_metadata)));
+      }
+
+      inline bool
+      operator==(const this_type& other) const
+      {
+	const bool is_end = m_p_begin_value == m_p_end_value;
+	const bool is_other_end = other.m_p_begin_value == other.m_p_end_value;
+
+	if (is_end)
+	  return (is_other_end);
+
+	if (is_other_end)
+	  return (is_end);
+
+	return m_p_value == other.m_p_value;
+      }
+
+      inline bool
+      operator!=(const this_type& other) const
+      { return !operator==(other); }
+
+    public:
+      pointer m_p_value;
+      pointer m_p_begin_value;
+      pointer m_p_end_value;
+
+      const_metadata_pointer m_p_metadata;
+    };
+
+#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \
+    ov_tree_node_it_<Value_Type, Metadata_Type, Allocator>
+
+    // Node reference.
+    template<typename Value_Type, typename Metadata_Type, class Allocator>
+    class ov_tree_node_it_ : public PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
+    {
+
+    private:
+      typedef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC this_type;
+
+      typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC base_type;
+
+      typedef typename base_type::pointer pointer;
+
+      typedef typename base_type::const_pointer const_pointer;
+
+      typedef
+      typename base_type::const_metadata_pointer
+      const_metadata_pointer;
+
+    public:
+
+      typedef trivial_iterator_tag iterator_category;
+
+      typedef trivial_iterator_difference_type difference_type;
+
+      typedef
+      typename Allocator::template rebind<
+	Value_Type>::other::pointer
+      value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	Value_Type>::type>::other::pointer
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	typename remove_const<
+	Value_Type>::type>::other::pointer
+      const_reference;
+
+    public:
+      inline
+      ov_tree_node_it_(const_pointer p_nd = 0,  const_pointer p_begin_nd = 0,  const_pointer p_end_nd = 0,  const_metadata_pointer p_metadata = 0) : base_type(p_nd,  p_begin_nd,  p_end_nd,  p_metadata)
+      { }
+
+      // Access.
+      inline reference
+      operator*() const
+      { return reference(base_type::m_p_value); }
+
+      // Returns the node reference associated with the left node.
+      inline ov_tree_node_it_
+      get_l_child() const
+      {
+	if (base_type::m_p_begin_value == base_type::m_p_value)
+	  return (this_type(base_type::m_p_begin_value,  base_type::m_p_begin_value,  base_type::m_p_begin_value));
+
+	const_metadata_pointer p_begin_metadata =
+	  base_type::m_p_metadata - (base_type::m_p_value - base_type::m_p_begin_value);
+
+	return (this_type(base_type::mid_pointer(base_type::m_p_begin_value, base_type::m_p_value),
+			  base_type::m_p_begin_value,
+			  base_type::m_p_value,
+			  base_type::mid_pointer(p_begin_metadata, base_type::m_p_metadata)));
+      }
+
+      // Returns the node reference associated with the right node.
+      inline ov_tree_node_it_
+      get_r_child() const
+      {
+	if (base_type::m_p_value == base_type::m_p_end_value)
+	  return (this_type(base_type::m_p_end_value,  base_type::m_p_end_value,  base_type::m_p_end_value));
+
+	const_metadata_pointer p_end_metadata =
+	  base_type::m_p_metadata + (base_type::m_p_end_value - base_type::m_p_value);
+
+	return (this_type(base_type::mid_pointer(base_type::m_p_value + 1, base_type::m_p_end_value),
+			  base_type::m_p_value + 1,
+			  base_type::m_p_end_value,(base_type::m_p_metadata == 0)?
+			  0 : base_type::mid_pointer(base_type::m_p_metadata + 1, p_end_metadata)));
+      }
+
+    };
+
+#undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC
+#undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
+
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
new file mode 100644
index 000000000..7d2ed3f1a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
@@ -0,0 +1,522 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file ov_tree_map_.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+#include <map>
+#include <set>
+#include <ext/pb_ds/tree_policy.hpp>
+#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/detail/tree_trace_base.hpp>
+#include <utility>
+#include <functional>
+#include <algorithm>
+#include <vector>
+#include <assert.h>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, class Cmp_Fn, \
+	     class Node_And_It_Traits, class Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_OV_TREE_CLASS_NAME ov_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_OV_TREE_CLASS_NAME ov_tree_no_data_
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_data_
+#else 
+#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+   PB_DS_OV_TREE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
+
+#define PB_DS_TYPES_TRAITS_C_DEC \
+    types_traits<Key, Mapped, Allocator, false>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC \
+    debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
+       	typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+#ifdef PB_DS_TREE_TRACE
+#define PB_DS_TREE_TRACE_BASE_C_DEC \
+    tree_trace_base<typename Node_And_It_Traits::const_node_iterator, \
+		    typename Node_And_It_Traits::node_iterator, \
+		    Cmp_Fn, false, Allocator>
+#endif 
+
+    // Ordered-vector tree associative-container.
+    template<typename Key, typename Mapped, class Cmp_Fn,
+	     class Node_And_It_Traits, class Allocator>
+    class PB_DS_OV_TREE_CLASS_NAME :
+#ifdef _GLIBCXX_DEBUG
+      protected PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+#ifdef PB_DS_TREE_TRACE
+      public PB_DS_TREE_TRACE_BASE_C_DEC,
+#endif 
+      public Cmp_Fn,
+      public Node_And_It_Traits::node_update,
+      public PB_DS_TYPES_TRAITS_C_DEC
+    {
+    private:
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+
+      typedef typename remove_const<typename traits_base::value_type>::type non_const_value_type;
+
+      typedef typename Allocator::template rebind<non_const_value_type>::other value_allocator;
+      typedef typename value_allocator::pointer value_vector;
+
+
+      typedef Cmp_Fn cmp_fn_base;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+      typedef typename traits_base::pointer mapped_pointer_;
+      typedef typename traits_base::const_pointer const_mapped_pointer_;
+
+      typedef typename Node_And_It_Traits::metadata_type metadata_type;
+
+      typedef typename Allocator::template rebind<metadata_type>::other metadata_allocator;
+      typedef typename metadata_allocator::pointer metadata_pointer;
+      typedef typename metadata_allocator::const_reference const_metadata_reference;
+      typedef typename metadata_allocator::reference metadata_reference;
+
+      typedef
+      typename Node_And_It_Traits::null_node_update_pointer
+      null_node_update_pointer;
+
+    public:
+
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef typename Node_And_It_Traits::node_update node_update;
+
+      typedef typename traits_base::key_type key_type;
+      typedef typename traits_base::key_pointer key_pointer;
+      typedef typename traits_base::const_key_pointer const_key_pointer;
+      typedef typename traits_base::key_reference key_reference;
+      typedef typename traits_base::const_key_reference const_key_reference;
+      typedef typename traits_base::mapped_type mapped_type;
+      typedef typename traits_base::mapped_pointer mapped_pointer;
+      typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
+      typedef typename traits_base::mapped_reference mapped_reference;
+      typedef typename traits_base::const_mapped_reference const_mapped_reference;
+      typedef typename traits_base::value_type value_type;
+      typedef typename traits_base::pointer pointer;
+      typedef typename traits_base::const_pointer const_pointer;
+      typedef typename traits_base::reference reference;
+      typedef typename traits_base::const_reference const_reference;
+
+      typedef const_pointer const_point_iterator;
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      typedef pointer point_iterator;
+#else 
+      typedef const_point_iterator point_iterator;
+#endif 
+
+      typedef const_point_iterator const_iterator;
+
+      typedef point_iterator iterator;
+
+#include <ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp>
+
+      typedef
+      typename Node_And_It_Traits::const_node_iterator
+      const_node_iterator;
+
+      typedef typename Node_And_It_Traits::node_iterator node_iterator;
+
+    public:
+
+      PB_DS_OV_TREE_CLASS_NAME();
+
+      PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&);
+
+      PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&, const node_update&);
+
+      PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      ~PB_DS_OV_TREE_CLASS_NAME();
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+      inline size_type
+      max_size() const;
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      Cmp_Fn& 
+      get_cmp_fn();
+
+      const Cmp_Fn& 
+      get_cmp_fn() const;
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	point_iterator it = lower_bound(r_key);
+	if (it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
+	  {
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+	    _GLIBCXX_DEBUG_ONLY(assert_valid();)
+	     return it->second;
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return (insert_new_val(it, std::make_pair(r_key, mapped_type()))->second);
+#else 
+	insert(r_key);
+	return traits_base::s_null_mapped;
+#endif 
+      }
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference r_value)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	const_key_reference r_key = PB_DS_V2F(r_value);
+	point_iterator it = lower_bound(r_key);
+
+	if (it != end()&&  !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
+	  {
+	    _GLIBCXX_DEBUG_ONLY(assert_valid();)
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+	    return std::make_pair(it, false);
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return std::make_pair(insert_new_val(it, r_value), true);
+      }
+
+      inline point_iterator
+      lower_bound(const_key_reference r_key)
+      {
+	pointer it = m_a_values;
+	pointer e_it = m_a_values + m_size;
+	while (it != e_it)
+	  {
+	    pointer mid_it = it + ((e_it - it) >> 1);
+	    if (cmp_fn_base::operator()(PB_DS_V2F(*mid_it), r_key))
+	      it = ++mid_it;
+	    else
+	      e_it = mid_it;
+	  }
+	return it;
+      }
+
+      inline const_point_iterator
+      lower_bound(const_key_reference r_key) const
+      { return const_cast<PB_DS_CLASS_C_DEC& >(*this).lower_bound(r_key); }
+
+      inline point_iterator
+      upper_bound(const_key_reference r_key)
+      {
+	iterator pot_it = lower_bound(r_key);
+	if (pot_it != end()&&  !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
+	  {
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+	    return ++pot_it;
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+	return pot_it;
+      }
+
+      inline const_point_iterator
+      upper_bound(const_key_reference r_key) const
+      { return const_cast<PB_DS_CLASS_C_DEC&>(*this).upper_bound(r_key); }
+
+      inline point_iterator
+      find(const_key_reference r_key)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	iterator pot_it = lower_bound(r_key);
+	if (pot_it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
+	  {
+	    _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+	    return pot_it;
+	  }
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+	return end();
+      }
+
+      inline const_point_iterator
+      find(const_key_reference r_key) const
+      { return (const_cast<PB_DS_CLASS_C_DEC& >(*this).find(r_key)); }
+
+      bool
+      erase(const_key_reference);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      inline iterator
+      erase(iterator it)
+      { return erase_imp<iterator>(it); }
+
+      void
+      clear();
+
+      void
+      join(PB_DS_CLASS_C_DEC&);
+
+      void
+      split(const_key_reference, PB_DS_CLASS_C_DEC&);
+
+      inline iterator
+      begin()
+      { return m_a_values; }
+
+      inline const_iterator
+      begin() const
+      { return m_a_values; }
+
+      inline iterator
+      end()
+      { return m_end_it; }
+
+      inline const_iterator
+      end() const
+      { return m_end_it; }
+
+      inline const_node_iterator
+      node_begin() const;
+
+      inline const_node_iterator
+      node_end() const;
+
+      inline node_iterator
+      node_begin();
+
+      inline node_iterator
+      node_end();
+
+    private:
+
+      inline void
+      update(node_iterator /*it*/, null_node_update_pointer);
+
+      template<typename Node_Update>
+      void
+      update(node_iterator, Node_Update*);
+
+      void
+      reallocate_metadata(null_node_update_pointer, size_type);
+
+      template<typename Node_Update_>
+      void
+      reallocate_metadata(Node_Update_*, size_type);
+
+      template<typename It>
+      void
+      copy_from_ordered_range(It, It);
+
+      void
+      value_swap(PB_DS_CLASS_C_DEC&);
+
+      template<typename It>
+      void
+      copy_from_ordered_range(It, It, It, It);
+
+      template<typename Ptr>
+      inline static Ptr
+      mid_pointer(Ptr p_begin, Ptr p_end)
+      {
+	_GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
+	return (p_begin + (p_end - p_begin) / 2);
+      }
+
+      inline iterator
+      insert_new_val(iterator it, const_reference r_value)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+#ifdef PB_DS_REGRESSION
+	  typename Allocator::group_adjustor adjust(m_size);
+#endif 
+
+	_GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_value)));
+
+	value_vector a_values = s_value_alloc.allocate(m_size + 1);
+
+	iterator source_it = begin();
+	iterator source_end_it = end();
+	iterator target_it = a_values;
+	iterator ret_it;
+
+	cond_dtor<size_type> cd(a_values, target_it, m_size + 1);
+	while (source_it != it)
+	  {
+	    new (const_cast<void* >(static_cast<const void* >(target_it)))
+	      value_type(*source_it++);
+	    ++target_it;
+	  }
+
+	new (const_cast<void* >(static_cast<const void* >(ret_it = target_it)))
+	  value_type(r_value);
+	++target_it;
+
+	while (source_it != source_end_it)
+	  {
+	    new (const_cast<void* >(static_cast<const void* >(target_it)))
+	      value_type(*source_it++);
+	    ++target_it;
+	  }
+
+	reallocate_metadata((node_update* )this, m_size + 1);
+	cd.set_no_action();
+	if (m_size != 0)
+	  {
+	    cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
+	  }
+
+	++m_size;
+	m_a_values = a_values;
+	m_end_it = m_a_values + m_size;
+	_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value)));
+	update(node_begin(), (node_update* )this);
+	_GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+	return ret_it;
+      }
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      assert_iterators() const;
+#endif 
+
+      template<typename It>
+      It
+      erase_imp(It it);
+
+      inline const_node_iterator
+      PB_DS_node_begin_imp() const;
+
+      inline const_node_iterator
+      PB_DS_node_end_imp() const;
+
+      inline node_iterator
+      PB_DS_node_begin_imp();
+
+      inline node_iterator
+      PB_DS_node_end_imp();
+
+    private:
+      static value_allocator s_value_alloc;
+      static metadata_allocator s_metadata_alloc;
+
+      value_vector m_a_values;
+      metadata_pointer m_a_metadata;
+      iterator m_end_it;
+      size_type m_size;
+    };
+
+#include <ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp>
+#include <ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_OV_TREE_CLASS_NAME
+#undef PB_DS_TYPES_TRAITS_C_DEC
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+#ifdef PB_DS_TREE_TRACE
+#undef PB_DS_TREE_TRACE_BASE_C_DEC
+#endif 
+
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+#undef PB_DS_CONST_NODE_ITERATOR_NAME
+
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..c06d6f851
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
@@ -0,0 +1,51 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Cmp_Fn& 
+PB_DS_CLASS_C_DEC::
+get_cmp_fn() const
+{ return *this; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..76bb6fafd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
@@ -0,0 +1,137 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+  if (m_size == 0)
+    {
+      other.clear();
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*begin())))
+    {
+      value_swap(other);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1))))
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  if (m_size == 1)
+    {
+      value_swap(other);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
+  iterator it = upper_bound(r_key);
+  PB_DS_CLASS_C_DEC new_other(other, other);
+  new_other.copy_from_ordered_range(it, end());
+  PB_DS_CLASS_C_DEC new_this(*this, * this);
+  new_this.copy_from_ordered_range(begin(), it);
+
+  // No exceptions from this point.
+  _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
+  other.update(other.node_begin(), (node_update* )(&other));
+  update(node_begin(), (node_update* )this);
+  other.value_swap(new_other);
+  value_swap(new_this);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  if (other.m_size == 0)
+    return;
+
+  if (m_size == 0)
+    {
+      value_swap(other);
+      return;
+    }
+
+  const bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)),
+					  PB_DS_V2F(*other.begin()));
+
+  const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)),
+					 PB_DS_V2F(*begin()));
+
+  if (!greater && !lesser)
+    __throw_join_error();
+
+  PB_DS_CLASS_C_DEC new_this(*this, *this);
+
+  if (greater)
+    new_this.copy_from_ordered_range(begin(), end(), 
+				     other.begin(), other.end());
+  else
+    new_this.copy_from_ordered_range(other.begin(), other.end(),
+				     begin(), end());
+
+  // No exceptions from this point.
+  _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
+  value_swap(new_this);
+  other.clear();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
new file mode 100644
index 000000000..63cb0f7fb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
@@ -0,0 +1,183 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation class for ov_tree_.
+ */
+
+#ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Key,
+	     typename Mapped,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct tree_traits<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      ov_tree_tag,
+      Allocator>
+    {
+    private:
+      typedef
+      typename types_traits<
+      Key,
+      Mapped,
+      Allocator,
+      false>::value_type
+      value_type;
+
+    public:
+      typedef
+      typename tree_node_metadata_selector<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type
+      metadata_type;
+
+      typedef
+      ov_tree_node_const_it_<
+	value_type,
+	metadata_type,
+	Allocator>
+      const_node_iterator;
+
+      typedef
+      ov_tree_node_it_<
+	value_type,
+	metadata_type,
+	Allocator>
+      node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_tree_node_update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+    template<typename Key,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct tree_traits<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      ov_tree_tag,
+      Allocator>
+    {
+    private:
+      typedef
+      typename types_traits<
+      Key,
+      null_mapped_type,
+      Allocator,
+      false>::value_type
+      value_type;
+
+    public:
+      typedef
+      typename tree_node_metadata_selector<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type
+      metadata_type;
+
+      typedef
+      ov_tree_node_const_it_<
+	value_type,
+	metadata_type,
+	Allocator>
+      const_node_iterator;
+
+      typedef const_node_iterator node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	const_node_iterator,
+	Cmp_Fn,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_tree_node_update<
+	const_node_iterator,
+	node_iterator,
+	Cmp_Fn,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..e292ed5d9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    push(*(first_it++));
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+pairing_heap_()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+pairing_heap_(const Cmp_Fn& r_cmp_fn) :
+  PB_DS_BASE_C_DEC(r_cmp_fn)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+pairing_heap_(const PB_DS_CLASS_C_DEC& other) :
+  PB_DS_BASE_C_DEC(other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    PB_DS_BASE_C_DEC::swap(other);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~pairing_heap_()
+{ }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..f6a1e9430
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root == 0 
+		        || base_type::m_p_root->m_p_next_sibling == 0);
+  base_type::assert_valid();
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
new file mode 100644
index 000000000..7ab31930e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
@@ -0,0 +1,236 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+pop()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  node_pointer p_new_root = join_node_children(base_type::m_p_root);
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_new_root, false);)
+  if (p_new_root != 0)
+    p_new_root->m_p_prev_or_parent = 0;
+
+  base_type::actual_erase_node(base_type::m_p_root);
+  base_type::m_p_root = p_new_root;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase(point_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+  remove_node(it.m_p_nd);
+  base_type::actual_erase_node(it.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+remove_node(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+  node_pointer p_new_child = join_node_children(p_nd);
+
+#ifdef _GLIBCXX_DEBUG
+  if (p_new_child != 0)
+    base_type::assert_node_consistent(p_new_child, false);
+#endif 
+
+  if (p_nd == base_type::m_p_root)
+    {
+      if (p_new_child != 0)
+	p_new_child->m_p_prev_or_parent = 0;
+      base_type::m_p_root = p_new_child;
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false);)
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent != 0);
+  if (p_nd->m_p_prev_or_parent->m_p_l_child == p_nd)
+    {
+      if (p_new_child != 0)
+        {
+	  p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+	  p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling;
+	  if (p_new_child->m_p_next_sibling != 0)
+	    p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child;
+	  p_nd->m_p_prev_or_parent->m_p_l_child = p_new_child;
+	  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
+          return;
+        }
+
+      p_nd->m_p_prev_or_parent->m_p_l_child = p_nd->m_p_next_sibling;
+      if (p_nd->m_p_next_sibling != 0)
+	p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
+      return;
+    }
+
+  if (p_new_child != 0)
+    {
+      p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+      p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling;
+      if (p_new_child->m_p_next_sibling != 0)
+	p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child;
+      p_new_child->m_p_prev_or_parent->m_p_next_sibling = p_new_child;
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
+      return;
+    }
+
+  p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling;
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+join_node_children(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  node_pointer p_ret = p_nd->m_p_l_child;
+  if (p_ret == 0)
+    return 0;
+  while (p_ret->m_p_next_sibling != 0)
+    p_ret = forward_join(p_ret, p_ret->m_p_next_sibling);
+  while (p_ret->m_p_prev_or_parent != p_nd)
+    p_ret = back_join(p_ret->m_p_prev_or_parent, p_ret);
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret, false);)
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+forward_join(node_pointer p_nd, node_pointer p_next)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == p_next);
+  if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
+    {
+      p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+      base_type::make_child_of(p_nd, p_next);
+      return p_next->m_p_next_sibling == 0 
+	? p_next : p_next->m_p_next_sibling;
+    }
+
+  if (p_next->m_p_next_sibling != 0)
+    {
+      p_next->m_p_next_sibling->m_p_prev_or_parent = p_nd;
+      p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
+      base_type::make_child_of(p_next, p_nd);
+      return p_nd->m_p_next_sibling;
+    }
+
+  p_nd->m_p_next_sibling = 0;
+  base_type::make_child_of(p_next, p_nd);
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
+  return p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+back_join(node_pointer p_nd, node_pointer p_next)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == 0);
+
+  if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
+    {
+      p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+      base_type::make_child_of(p_nd, p_next);
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_next, false));
+      return p_next;
+    }
+
+  p_nd->m_p_next_sibling = 0;
+  base_type::make_child_of(p_next, p_nd);
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
+  return p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    if (base_type::empty())
+      {
+        _GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return 0;
+      }
+  base_type::to_linked_list();
+  node_pointer p_out = base_type::prune(pred);
+  size_type ersd = 0;
+  while (p_out != 0)
+    {
+      ++ersd;
+      node_pointer p_next = p_out->m_p_next_sibling;
+      base_type::actual_erase_node(p_out);
+      p_out = p_next;
+    }
+
+  node_pointer p_cur = base_type::m_p_root;
+  base_type::m_p_root = 0;
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+      p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0;
+
+      push_imp(p_cur);
+      p_cur = p_next;
+    }
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return ersd;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
new file mode 100644
index 000000000..85efd70dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
@@ -0,0 +1,50 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  return base_type::m_p_root->m_value;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
new file mode 100644
index 000000000..9a5f5f64e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+push(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    node_pointer p_new_nd = base_type::get_new_node_for_insert(r_val);
+
+  push_imp(p_new_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    return point_iterator(p_new_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+push_imp(node_pointer p_nd)
+{
+  p_nd->m_p_l_child = 0;
+
+  if (base_type::m_p_root == 0)
+    {
+      p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0;
+
+      base_type::m_p_root = p_nd;
+    }
+  else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value))
+    {
+      p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0;
+
+      base_type::make_child_of(base_type::m_p_root, p_nd);
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
+
+      base_type::m_p_root = p_nd;
+    }
+  else
+    {
+      base_type::make_child_of(p_nd, base_type::m_p_root);
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false));
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+modify(point_iterator it, const_reference r_new_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    remove_node(it.m_p_nd);
+
+  it.m_p_nd->m_value = r_new_val;
+
+  push_imp(it.m_p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
new file mode 100644
index 000000000..e19bcb695
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
@@ -0,0 +1,216 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file pairing_heap_.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+/*
+ * Pairing heap:
+ * Michael L. Fredman, Robert Sedgewick, Daniel Dominic Sleator,
+ *    and Robert Endre Tarjan, The Pairing Heap:
+ *    A New Form of Self-Adjusting Heap, Algorithmica, 1(1):111-129, 1986.
+ */
+
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    pairing_heap_<Value_Type, Cmp_Fn, Allocator>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_BASE_C_DEC \
+    left_child_next_sibling_heap_<			\
+									Value_Type, \
+									Cmp_Fn,	\
+									null_left_child_next_sibling_heap_node_metadata, \
+									Allocator, \
+									false>
+#else 
+#define PB_DS_BASE_C_DEC						\
+    left_child_next_sibling_heap_<			\
+									Value_Type, \
+									Cmp_Fn,	\
+									null_left_child_next_sibling_heap_node_metadata, \
+									Allocator>
+#endif 
+
+    /**
+     * class description = "P4ri|\|g h3ap$">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class pairing_heap_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+
+      typedef typename base_type::node_pointer node_pointer;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+      typedef
+      typename PB_DS_BASE_C_DEC::const_point_iterator
+      const_point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::iterator iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+
+      pairing_heap_();
+
+      pairing_heap_(const Cmp_Fn& r_cmp_fn);
+
+      pairing_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~pairing_heap_();
+
+      inline point_iterator
+      push(const_reference r_val);
+
+      void
+      modify(point_iterator it, const_reference r_new_val);
+
+      inline const_reference
+      top() const;
+
+      void
+      pop();
+
+      void
+      erase(point_iterator it);
+
+      template<typename Pred>
+      size_type
+      erase_if(Pred pred);
+
+      template<typename Pred>
+      void
+      split(Pred pred, PB_DS_CLASS_C_DEC& other);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+    protected:
+
+      template<typename It>
+      void
+      copy_from_range(It first_it, It last_it);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif
+
+    private:
+
+      inline void
+      push_imp(node_pointer p_nd);
+
+      node_pointer
+      join_node_children(node_pointer p_nd);
+
+      node_pointer
+      forward_join(node_pointer p_nd, node_pointer p_next);
+
+      node_pointer
+      back_join(node_pointer p_nd, node_pointer p_next);
+
+      void
+      remove_node(node_pointer p_nd);
+
+    };
+
+#include <ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_BASE_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..1e6138c38
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
@@ -0,0 +1,140 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for a pairing heap.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+void
+PB_DS_CLASS_C_DEC::
+split(Pred pred, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    other.clear();
+
+  if (base_type::empty())
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+        _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+        return;
+    }
+
+  base_type::to_linked_list();
+
+  node_pointer p_out = base_type::prune(pred);
+
+  while (p_out != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
+      --base_type::m_size;
+
+      ++other.m_size;
+
+      node_pointer p_next = p_out->m_p_next_sibling;
+
+      p_out->m_p_l_child = p_out->m_p_next_sibling = p_out->m_p_prev_or_parent = 0;
+
+      other.push_imp(p_out);
+
+      p_out = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    node_pointer p_cur = base_type::m_p_root;
+
+  base_type::m_p_root = 0;
+
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+
+      p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0;
+
+      push_imp(p_cur);
+
+      p_cur = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    if (other.m_p_root == 0)
+      {
+        _GLIBCXX_DEBUG_ONLY(assert_valid();)
+	  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+	  return;
+      }
+
+  if (base_type::m_p_root == 0)
+    base_type::m_p_root = other.m_p_root;
+  else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, other.m_p_root->m_value))
+    {
+      base_type::make_child_of(base_type::m_p_root, other.m_p_root);
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(other.m_p_root, false));
+
+      base_type::m_p_root = other.m_p_root;
+    }
+  else
+    {
+      base_type::make_child_of(other.m_p_root, base_type::m_p_root);
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false));
+    }
+
+  base_type::m_size += other.m_size;
+
+  other.m_p_root = 0;
+  other.m_size = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
new file mode 100644
index 000000000..b7cdf2363
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file child_iterator.hpp
+ * Contains a iterator for a patricia tree.
+ */
+
+struct iterator : public const_iterator
+{
+public:
+  typedef std::forward_iterator_tag iterator_category;
+  typedef typename Allocator::difference_type difference_type;
+  typedef node_pointer value_type;
+  typedef node_pointer_pointer pointer;
+  typedef node_pointer_reference reference;
+
+  inline
+  iterator(node_pointer_pointer p_p_cur = 0,  
+	   node_pointer_pointer p_p_end = 0) 
+  : const_iterator(p_p_cur, p_p_end)
+  { }
+
+  inline bool
+  operator==(const iterator& other) const
+  { return const_iterator::m_p_p_cur == other.m_p_p_cur; }
+
+  inline bool
+  operator!=(const iterator& other) const
+  { return const_iterator::m_p_p_cur != other.m_p_p_cur; }
+
+  inline iterator& 
+  operator++()
+  {
+    const_iterator::operator++();
+    return *this;
+  }
+
+  inline iterator
+  operator++(int)
+  {
+    iterator ret_it(*this);
+    operator++();
+    return ret_it;
+  }
+
+  node_pointer_pointer
+  operator->()
+  {
+    _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();)
+    return const_iterator::m_p_p_cur;
+  }
+
+  node_pointer
+  operator*()
+  {
+    _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();)
+    return *const_iterator::m_p_p_cur;
+  }
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
new file mode 100644
index 000000000..184b98652
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
@@ -0,0 +1,79 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cond_dtor_entry_dealtor.hpp
+ * Contains a binary tree container conditional deallocator
+ */
+
+class cond_dealtor
+{
+public:
+  inline
+  cond_dealtor(leaf_pointer p_nd) : m_p_nd(p_nd),
+				    m_no_action_dtor(false),
+				    m_call_destructor(false)
+  { }
+
+  inline void
+  set_no_action_dtor()
+  {
+    m_no_action_dtor = true;
+  }
+
+  inline void
+  set_call_destructor()
+  {
+    m_call_destructor = true;
+  }
+
+  inline
+  ~cond_dealtor()
+  {
+    if (m_no_action_dtor)
+      return;
+
+    if (m_call_destructor)
+      m_p_nd->~leaf();
+
+    s_leaf_allocator.deallocate(m_p_nd, 1);
+  }
+
+protected:
+  leaf_pointer m_p_nd;
+  bool m_no_action_dtor;
+  bool m_call_destructor;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
new file mode 100644
index 000000000..730148e14
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
@@ -0,0 +1,111 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_child_iterator.hpp
+ * Contains a const_iterator for a patricia tree.
+ */
+
+struct const_iterator
+{
+public:
+  typedef std::forward_iterator_tag iterator_category;
+
+  typedef typename Allocator::difference_type difference_type;
+
+  typedef node_pointer value_type;
+
+  typedef node_pointer_pointer pointer;
+
+  typedef node_pointer_reference reference;
+
+public:
+  inline
+  const_iterator(node_pointer_pointer p_p_cur = 0,  
+		 node_pointer_pointer p_p_end = 0) 
+  : m_p_p_cur(p_p_cur), m_p_p_end(p_p_end)
+  { }
+
+  inline bool
+  operator==(const const_iterator& other) const
+  { return m_p_p_cur == other.m_p_p_cur; }
+
+  inline bool
+  operator!=(const const_iterator& other) const
+  { return m_p_p_cur != other.m_p_p_cur; }
+
+  inline const_iterator& 
+  operator++()
+  {
+    do
+      ++m_p_p_cur;
+    while (m_p_p_cur != m_p_p_end&& * m_p_p_cur == 0);
+    return *this;
+  }
+
+  inline const_iterator
+  operator++(int)
+  {
+    const_iterator ret_it(*this);
+    operator++();
+    return ret_it;
+  }
+
+  const node_pointer_pointer
+  operator->() const
+  {
+    _GLIBCXX_DEBUG_ONLY(assert_referencible();)
+    return (m_p_p_cur);
+  }
+
+  const_node_pointer
+  operator*() const
+  {
+    _GLIBCXX_DEBUG_ONLY(assert_referencible();)
+    return (*m_p_p_cur);
+  }
+
+protected:
+#ifdef _GLIBCXX_DEBUG
+  void
+  assert_referencible() const
+  { _GLIBCXX_DEBUG_ASSERT(m_p_p_cur != m_p_p_end&& * m_p_p_cur != 0); }
+#endif 
+
+public:
+  node_pointer_pointer m_p_p_cur;
+  node_pointer_pointer m_p_p_end;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..17f7c55d4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,215 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::head_allocator
+PB_DS_CLASS_C_DEC::s_head_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::internal_node_allocator
+PB_DS_CLASS_C_DEC::s_internal_node_allocator;
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::leaf_allocator
+PB_DS_CLASS_C_DEC::s_leaf_allocator;
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME() :
+  m_p_head(s_head_allocator.allocate(1)),
+  m_size(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const e_access_traits& r_e_access_traits) :
+  synth_e_access_traits(r_e_access_traits),
+  m_p_head(s_head_allocator.allocate(1)),
+  m_size(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+#ifdef _GLIBCXX_DEBUG
+  debug_base(other),
+#endif
+  synth_e_access_traits(other),
+  node_update(other),
+  m_p_head(s_head_allocator.allocate(1)),
+  m_size(0)
+{
+  initialize();
+  m_size = other.m_size;
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    if (other.m_p_head->m_p_parent == 0)
+      {
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return;
+      }
+  __try
+    {
+      m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent);
+    }
+  __catch(...)
+    {
+      s_head_allocator.deallocate(m_p_head, 1);
+      __throw_exception_again;
+    }
+
+  m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent);
+  m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
+  m_p_head->m_p_parent->m_p_parent = m_p_head;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  value_swap(other);
+  std::swap((e_access_traits& )(*this), (e_access_traits& )other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+value_swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
+  std::swap(m_p_head, other.m_p_head);
+  std::swap(m_size, other.m_size);
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~PB_DS_CLASS_NAME()
+{
+  clear();
+  s_head_allocator.deallocate(m_p_head, 1);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{
+  new (m_p_head) head();
+  m_p_head->m_p_parent = 0;
+  m_p_head->m_p_min = m_p_head;
+  m_p_head->m_p_max = m_p_head;
+  m_size = 0;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+recursive_copy_node(const_node_pointer p_other_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_other_nd != 0);
+  if (p_other_nd->m_type == pat_trie_leaf_node_type)
+    {
+      const_leaf_pointer p_other_leaf = static_cast<const_leaf_pointer>(p_other_nd);
+
+      leaf_pointer p_new_lf = s_leaf_allocator.allocate(1);
+      cond_dealtor cond(p_new_lf);
+      new (p_new_lf) leaf(p_other_leaf->value());
+      apply_update(p_new_lf, (node_update* )this);
+      cond.set_no_action_dtor();
+      return (p_new_lf);
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_other_nd->m_type == pat_trie_internal_node_type);
+  node_pointer a_p_children[internal_node::arr_size];
+  size_type child_i = 0;
+  const_internal_node_pointer p_other_internal_nd =
+    static_cast<const_internal_node_pointer>(p_other_nd);
+
+  typename internal_node::const_iterator child_it =
+    p_other_internal_nd->begin();
+
+  internal_node_pointer p_ret;
+  __try
+    {
+      while (child_it != p_other_internal_nd->end())
+	a_p_children[child_i++] = recursive_copy_node(*(child_it++));
+      p_ret = s_internal_node_allocator.allocate(1);
+    }
+  __catch(...)
+    {
+      while (child_i-- > 0)
+	clear_imp(a_p_children[child_i]);
+      __throw_exception_again;
+    }
+
+  new (p_ret) internal_node(p_other_internal_nd->get_e_ind(),
+			    pref_begin(a_p_children[0]));
+
+  --child_i;
+  _GLIBCXX_DEBUG_ASSERT(child_i >= 1);
+  do
+    p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]),
+		     pref_end(a_p_children[child_i]), this);
+  while (child_i-- > 0);
+  apply_update(p_ret, (node_update* )this);
+  return p_ret;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
new file mode 100644
index 000000000..514da0a28
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  if (m_p_head->m_p_parent != 0)
+    m_p_head->m_p_parent->assert_valid(this);
+  assert_iterators();
+  assert_reverse_iterators();
+  if (m_p_head->m_p_parent == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min == m_p_head);
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max == m_p_head);
+      _GLIBCXX_DEBUG_ASSERT(empty());
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min->m_type == pat_trie_leaf_node_type);
+  _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max->m_type == pat_trie_leaf_node_type);
+  _GLIBCXX_DEBUG_ASSERT(!empty());
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_iterators() const
+{
+  size_type calc_size = 0;
+  for (const_iterator it = begin(); it != end(); ++it)
+    {
+      ++calc_size;
+      debug_base::check_key_exists(PB_DS_V2F(*it));
+      _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it);
+      _GLIBCXX_DEBUG_ASSERT(--upper_bound(PB_DS_V2F(*it)) == it);
+    }
+  _GLIBCXX_DEBUG_ASSERT(calc_size == m_size);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_reverse_iterators() const
+{
+  size_type calc_size = 0;
+  for (const_reverse_iterator it = rbegin(); it != rend(); ++it)
+    {
+      ++calc_size;
+      const_node_pointer p_nd =
+	const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(PB_DS_V2F(*it));
+      _GLIBCXX_DEBUG_ASSERT(p_nd == it.m_p_nd);
+    }
+  _GLIBCXX_DEBUG_ASSERT(calc_size == m_size);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+recursive_count_leafs(const_node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return (0);
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return (1);
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+  size_type ret = 0;
+  for (typename internal_node::const_iterator it =
+	 static_cast<const_internal_node_pointer>(p_nd)->begin();
+       it != static_cast<const_internal_node_pointer>(p_nd)->end();
+       ++it)
+    ret += recursive_count_leafs(*it);
+  return ret;
+}
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
new file mode 100644
index 000000000..8c3c8b90d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
@@ -0,0 +1,319 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  node_pointer p_nd = find_imp(r_key);
+  if (p_nd == 0 || p_nd->m_type == pat_trie_internal_node_type)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+      return false;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
+  if (!synth_e_access_traits::equal_keys(PB_DS_V2F(reinterpret_cast<leaf_pointer>(p_nd)->value()), r_key))
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
+      return false;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+  erase_leaf(static_cast<leaf_pointer>(p_nd));
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_fixup(internal_node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) >= 1);
+  if (std::distance(p_nd->begin(), p_nd->end()) == 1)
+    {
+      node_pointer p_parent = p_nd->m_p_parent;
+      if (p_parent == m_p_head)
+	m_p_head->m_p_parent =* p_nd->begin();
+      else
+        {
+	  _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type);
+	  node_pointer p_new_child =* p_nd->begin();
+	  static_cast<internal_node_pointer>(p_parent)->replace_child(
+								      p_new_child,
+								      pref_begin(p_new_child),
+								      pref_end(p_new_child),
+								      this);
+        }
+      (*p_nd->begin())->m_p_parent = p_nd->m_p_parent;
+      p_nd->~internal_node();
+      s_internal_node_allocator.deallocate(p_nd, 1);
+
+      if (p_parent == m_p_head)
+	return;
+
+      _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type);
+      p_nd = static_cast<internal_node_pointer>(p_parent);
+    }
+
+  while (true)
+    {
+      _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) > 1);
+      p_nd->update_prefixes(this);
+      apply_update(p_nd, (node_update* )this);
+      _GLIBCXX_DEBUG_ONLY(p_nd->assert_valid(this);)
+      if (p_nd->m_p_parent->m_type == pat_trie_head_node_type)
+        return;
+
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent->m_type ==
+		       pat_trie_internal_node_type);
+
+      p_nd = static_cast<internal_node_pointer>(p_nd->m_p_parent);
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+actual_erase_leaf(leaf_pointer p_l)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+  _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_l->value())));
+  p_l->~leaf();
+  s_leaf_allocator.deallocate(p_l, 1);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  if (empty())
+    return;
+
+  clear_imp(m_p_head->m_p_parent);
+  m_size = 0;
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear_imp(node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_internal_node_type)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+      for (typename internal_node::iterator it =
+	     static_cast<internal_node_pointer>(p_nd)->begin();
+	   it != static_cast<internal_node_pointer>(p_nd)->end();
+	   ++it)
+        {
+	  node_pointer p_child =* it;
+	  clear_imp(p_child);
+        }
+      s_internal_node_allocator.deallocate(static_cast<internal_node_pointer>(p_nd), 1);
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
+  static_cast<leaf_pointer>(p_nd)->~leaf();
+  s_leaf_allocator.deallocate(static_cast<leaf_pointer>(p_nd), 1);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+erase(const_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+
+  if (it == end())
+    return it;
+
+  const_iterator ret_it = it;
+  ++ret_it;
+  _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
+  erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+erase(iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+
+  if (it == end())
+    return it;
+  iterator ret_it = it;
+  ++ret_it;
+  _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
+  erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
+PB_DS_CLASS_C_DEC::
+erase(const_reverse_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+
+  if (it.m_p_nd == m_p_head)
+    return it;
+  const_reverse_iterator ret_it = it;
+  ++ret_it;
+
+  _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
+  erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+erase(reverse_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+
+  if (it.m_p_nd == m_p_head)
+    return it;
+  reverse_iterator ret_it = it;
+  ++ret_it;
+
+  _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
+  erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  size_type num_ersd = 0;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+  iterator it = begin();
+  while (it != end())
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+        if (pred(*it))
+	  {
+            ++num_ersd;
+            it = erase(it);
+	  }
+        else
+	  ++it;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_leaf(leaf_pointer p_l)
+{
+  update_min_max_for_erased_leaf(p_l);
+  if (p_l->m_p_parent->m_type == pat_trie_head_node_type)
+    {
+      _GLIBCXX_DEBUG_ASSERT(size() == 1);
+      clear();
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(size() > 1);
+  _GLIBCXX_DEBUG_ASSERT(p_l->m_p_parent->m_type ==
+		   pat_trie_internal_node_type);
+
+  internal_node_pointer p_parent =
+    static_cast<internal_node_pointer>(p_l->m_p_parent);
+
+  p_parent->remove_child(p_l);
+  erase_fixup(p_parent);
+  actual_erase_leaf(p_l);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+update_min_max_for_erased_leaf(leaf_pointer p_l)
+{
+  if (m_size == 1)
+    {
+      m_p_head->m_p_min = m_p_head;
+      m_p_head->m_p_max = m_p_head;
+      return;
+    }
+
+  if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_min))
+    {
+      iterator it(p_l);
+      ++it;
+      m_p_head->m_p_min = it.m_p_nd;
+      return;
+    }
+
+  if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_max))
+    {
+      iterator it(p_l);
+      --it;
+      m_p_head->m_p_max = it.m_p_nd;
+    }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
new file mode 100644
index 000000000..ebc3bf2d4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
@@ -0,0 +1,269 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  node_pointer p_nd = find_imp(r_key);
+
+  if (p_nd == 0 || p_nd->m_type != pat_trie_leaf_node_type)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+      return end();
+    }
+
+  if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_nd)->value()), r_key))
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+      return iterator(p_nd);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+  return end();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key) const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+  const_node_pointer p_nd = const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(r_key);
+
+  if (p_nd == 0 || p_nd->m_type != pat_trie_leaf_node_type)
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+      return end();
+    }
+
+  if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key))
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
+      return const_iterator(const_cast<node_pointer>(p_nd));
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
+  return end();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+find_imp(const_key_reference r_key)
+{
+  if (empty())
+    return (0);
+
+  typename synth_e_access_traits::const_iterator b_it =
+    synth_e_access_traits::begin(r_key);
+  typename synth_e_access_traits::const_iterator e_it =
+    synth_e_access_traits::end(r_key);
+
+  node_pointer p_nd = m_p_head->m_p_parent;
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+
+  while (p_nd->m_type != pat_trie_leaf_node_type)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+      node_pointer p_next_nd = static_cast<internal_node_pointer>(p_nd)->get_child_node(b_it,  e_it,  this);
+
+      if (p_next_nd == 0)
+	return p_nd;
+      p_nd = p_next_nd;
+    }
+  return p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+lower_bound_imp(const_key_reference r_key)
+{
+  if (empty())
+    return (m_p_head);
+
+  node_pointer p_nd = m_p_head->m_p_parent;
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+
+  typename PB_DS_CLASS_C_DEC::const_e_iterator b_it =
+    synth_e_access_traits::begin(r_key);
+
+  typename PB_DS_CLASS_C_DEC::const_e_iterator e_it =
+    synth_e_access_traits::end(r_key);
+
+  size_type checked_ind = 0;
+  while (true)
+    {
+      if (p_nd->m_type == pat_trie_leaf_node_type)
+        {
+	  if (!synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key))
+	    return p_nd;
+	  iterator it(p_nd);
+	  ++it;
+	  return it.m_p_nd;
+        }
+
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+      const size_type new_checked_ind =
+	static_cast<internal_node_pointer>(p_nd)->get_e_ind();
+
+      p_nd =
+	static_cast<internal_node_pointer>(p_nd)->get_lower_bound_child_node(                b_it, e_it, checked_ind, this);
+      checked_ind = new_checked_ind;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+lower_bound(const_key_reference r_key)
+{ return point_iterator(lower_bound_imp(r_key)); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+lower_bound(const_key_reference r_key) const
+{
+  return const_point_iterator(const_cast<PB_DS_CLASS_C_DEC* >(this)->lower_bound_imp(r_key));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+upper_bound(const_key_reference r_key)
+{
+  point_iterator l_bound_it = lower_bound(r_key);
+
+  _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() ||
+		   !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it),
+						    r_key));
+
+  if (l_bound_it == end() ||
+      synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it)))
+    return l_bound_it;
+
+  return ++l_bound_it;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+upper_bound(const_key_reference r_key) const
+{
+  const_point_iterator l_bound_it = lower_bound(r_key);
+
+  _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() ||
+		   !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it),
+						    r_key));
+
+  if (l_bound_it == end() ||
+      synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it)))
+    return l_bound_it;
+  return ++l_bound_it;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_e_iterator
+PB_DS_CLASS_C_DEC::
+pref_begin(const_node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return (synth_e_access_traits::begin(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value())));
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+  return static_cast<const_internal_node_pointer>(p_nd)->pref_b_it();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_e_iterator
+PB_DS_CLASS_C_DEC::
+pref_end(const_node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return (synth_e_access_traits::end(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value())));
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+  return static_cast<const_internal_node_pointer>(p_nd)->pref_e_it();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer
+PB_DS_CLASS_C_DEC::
+leftmost_descendant(const_node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return static_cast<const_leaf_pointer>(p_nd);
+  return static_cast<const_internal_node_pointer>(p_nd)->leftmost_descendant();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::leaf_pointer
+PB_DS_CLASS_C_DEC::
+leftmost_descendant(node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return static_cast<leaf_pointer>(p_nd);
+  return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer
+PB_DS_CLASS_C_DEC::
+rightmost_descendant(const_node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return static_cast<const_leaf_pointer>(p_nd);
+  return static_cast<const_internal_node_pointer>(p_nd)->rightmost_descendant();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::leaf_pointer
+PB_DS_CLASS_C_DEC::
+rightmost_descendant(node_pointer p_nd)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    return static_cast<leaf_pointer>(p_nd);
+  return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant();
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/head.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/head.hpp
new file mode 100644
index 000000000..0c7381294
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/head.hpp
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file head.hpp
+ * Contains a leaf for a patricia tree.
+ */
+
+#ifndef PB_DS_PAT_TRIE_IHEAD_HPP
+#define PB_DS_PAT_TRIE_IHEAD_HPP
+
+#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Type_Traits, typename E_Access_Traits,	\
+	      typename Metadata, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    pat_trie_head<Type_Traits, E_Access_Traits,	Metadata, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
+
+    template<typename Type_Traits,
+	     typename E_Access_Traits,
+	     typename Metadata,
+	     typename Allocator>
+    struct pat_trie_head : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef E_Access_Traits e_access_traits;
+
+      typedef
+      typename Allocator::template rebind<
+	e_access_traits>::other::const_pointer
+      const_e_access_traits_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	PB_DS_BASE_C_DEC>::other::pointer
+      node_pointer;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef
+      typename PB_DS_BASE_C_DEC::subtree_debug_info
+      subtree_debug_info;
+#endif 
+
+    public:
+      pat_trie_head();
+
+#ifdef _GLIBCXX_DEBUG
+      virtual subtree_debug_info
+      assert_valid_imp(const_e_access_traits_pointer p_traits) const;
+#endif 
+
+    public:
+      node_pointer m_p_min;
+
+      node_pointer m_p_max;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    pat_trie_head() : PB_DS_BASE_C_DEC(pat_trie_head_node_type)
+    { }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::subtree_debug_info
+    PB_DS_CLASS_C_DEC::
+    assert_valid_imp(const_e_access_traits_pointer /*p_traits*/) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(false);
+      return subtree_debug_info();
+    }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
new file mode 100644
index 000000000..81d7096a9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+empty() const
+{ return (m_size == 0); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+size() const
+{ return m_size; }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+max_size() const
+{ return s_internal_node_allocator.max_size(); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
new file mode 100644
index 000000000..84787f85c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
@@ -0,0 +1,465 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_join_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(););
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+  split_join_branch_bag bag;
+  if (!join_prep(other, bag))
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid(););
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+      return;
+    }
+
+  m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent, 
+				  other.m_p_head->m_p_parent, 0, bag);
+
+  m_p_head->m_p_parent->m_p_parent = m_p_head;
+  m_size += other.m_size;
+  other.initialize();
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+  m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent);
+  m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
+  _GLIBCXX_DEBUG_ONLY(assert_valid(););
+}
+
+PB_DS_CLASS_T_DEC
+bool
+PB_DS_CLASS_C_DEC::
+join_prep(PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  if (other.m_size == 0)
+    return false;
+
+  if (m_size == 0)
+    {
+      value_swap(other);
+      return false;
+    }
+
+  const bool greater = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(
+												 m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>(
+												 other.m_p_head->m_p_min)->value()));
+
+  const bool lesser = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(
+												other.m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value()));
+
+  if (!greater && !lesser)
+    __throw_join_error();
+
+  rec_join_prep(m_p_head->m_p_parent, other.m_p_head->m_p_parent, r_bag);
+  _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+rec_join_prep(const_node_pointer p_l, const_node_pointer p_r, split_join_branch_bag& r_bag)
+{
+  if (p_l->m_type == pat_trie_leaf_node_type)
+    {
+      if (p_r->m_type == pat_trie_leaf_node_type)
+        {
+	  rec_join_prep(static_cast<const_leaf_pointer>(p_l),
+			static_cast<const_leaf_pointer>(p_r), r_bag);
+	  return;
+        }
+
+      _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
+      rec_join_prep(static_cast<const_leaf_pointer>(p_l),
+		    static_cast<const_internal_node_pointer>(p_r), r_bag);
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type);
+  if (p_r->m_type == pat_trie_leaf_node_type)
+    {
+      rec_join_prep(static_cast<const_internal_node_pointer>(p_l),
+		    static_cast<const_leaf_pointer>(p_r), r_bag);
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
+
+  rec_join_prep(static_cast<const_internal_node_pointer>(p_l),
+		static_cast<const_internal_node_pointer>(p_r), r_bag);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+rec_join_prep(const_leaf_pointer /*p_l*/, const_leaf_pointer /*p_r*/, 
+	      split_join_branch_bag& r_bag)
+{ r_bag.add_branch(); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+rec_join_prep(const_leaf_pointer /*p_l*/, const_internal_node_pointer /*p_r*/, 
+	      split_join_branch_bag& r_bag)
+{ r_bag.add_branch(); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+rec_join_prep(const_internal_node_pointer /*p_l*/, const_leaf_pointer /*p_r*/, 
+	      split_join_branch_bag& r_bag)
+{ r_bag.add_branch(); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+rec_join_prep(const_internal_node_pointer p_l, const_internal_node_pointer p_r,
+	      split_join_branch_bag& r_bag)
+{
+  if (p_l->get_e_ind() == p_r->get_e_ind() && 
+      synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(),
+					    p_r->pref_b_it(), p_r->pref_e_it()))
+    {
+      for (typename internal_node::const_iterator it = p_r->begin();
+	   it != p_r->end(); ++ it)
+        {
+	  const_node_pointer p_l_join_child = p_l->get_join_child(*it, this);
+	  if (p_l_join_child != 0)
+	    rec_join_prep(p_l_join_child, * it, r_bag);
+        }
+      return;
+    }
+
+  if (p_r->get_e_ind() < p_l->get_e_ind() && 
+      p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
+    {
+      const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this);
+      if (p_r_join_child != 0)
+	rec_join_prep(p_r_join_child, p_l, r_bag);
+      return;
+    }
+
+  if (p_r->get_e_ind() < p_l->get_e_ind() && 
+      p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
+    {
+      const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this);
+      if (p_r_join_child != 0)
+	rec_join_prep(p_r_join_child, p_l, r_bag);
+      return;
+    }
+  r_bag.add_branch();
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_join(node_pointer p_l, node_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_r != 0);
+  if (p_l == 0)
+    {
+      apply_update(p_r, (node_update* )this);
+      return (p_r);
+    }
+
+  if (p_l->m_type == pat_trie_leaf_node_type)
+    {
+      if (p_r->m_type == pat_trie_leaf_node_type)
+        {
+	  node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l),
+					static_cast<leaf_pointer>(p_r), r_bag);
+	  apply_update(p_ret, (node_update* )this);
+	  return p_ret;
+        }
+
+      _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
+      node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l),
+				    static_cast<internal_node_pointer>(p_r),
+				    checked_ind, r_bag);
+      apply_update(p_ret, (node_update* )this);
+      return p_ret;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type);
+  if (p_r->m_type == pat_trie_leaf_node_type)
+    {
+      node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l),
+				    static_cast<leaf_pointer>(p_r),
+				    checked_ind, r_bag);
+      apply_update(p_ret, (node_update* )this);
+      return p_ret;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
+  node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l),
+				static_cast<internal_node_pointer>(p_r), 
+				r_bag);
+
+  apply_update(p_ret, (node_update* )this);
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_join(leaf_pointer p_l, leaf_pointer p_r, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_r != 0);
+  if (p_l == 0)
+    return (p_r);
+  node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
+  _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == 2);
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_join(leaf_pointer p_l, internal_node_pointer p_r, size_type checked_ind, 
+	 split_join_branch_bag& r_bag)
+{
+#ifdef _GLIBCXX_DEBUG
+  const size_type lhs_leafs = recursive_count_leafs(p_l);
+  const size_type rhs_leafs = recursive_count_leafs(p_r);
+#endif 
+
+  _GLIBCXX_DEBUG_ASSERT(p_r != 0);
+  node_pointer p_ret = rec_join(p_r, p_l, checked_ind, r_bag);
+  _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs);
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_join(internal_node_pointer p_l, leaf_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_l != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_r != 0);
+
+#ifdef _GLIBCXX_DEBUG
+  const size_type lhs_leafs = recursive_count_leafs(p_l);
+  const size_type rhs_leafs = recursive_count_leafs(p_r);
+#endif 
+
+  if (!p_l->should_be_mine(pref_begin(p_r), pref_end(p_r), checked_ind, this))
+    {
+      node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
+      _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);)
+      _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) ==
+       		            lhs_leafs + rhs_leafs);
+      return p_ret;
+    }
+
+  node_pointer p_pot_child = p_l->add_child(p_r, pref_begin(p_r),
+					    pref_end(p_r), this);
+  if (p_pot_child != p_r)
+    {
+      node_pointer p_new_child = rec_join(p_pot_child, p_r, p_l->get_e_ind(),
+					  r_bag);
+
+      p_l->replace_child(p_new_child, pref_begin(p_new_child),
+			 pref_end(p_new_child), this);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this));
+  _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs);
+  return p_l;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_join(internal_node_pointer p_l, internal_node_pointer p_r, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_l != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_r != 0);
+
+#ifdef _GLIBCXX_DEBUG
+  const size_type lhs_leafs = recursive_count_leafs(p_l);
+  const size_type rhs_leafs = recursive_count_leafs(p_r);
+#endif 
+
+  if (p_l->get_e_ind() == p_r->get_e_ind() && 
+      synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(),
+					    p_r->pref_b_it(), p_r->pref_e_it()))
+    {
+      for (typename internal_node::iterator it = p_r->begin();
+	   it != p_r->end(); ++ it)
+        {
+	  node_pointer p_new_child = rec_join(p_l->get_join_child(*it, this),
+					      * it, 0, r_bag);
+	  p_l->replace_child(p_new_child, pref_begin(p_new_child),
+			     pref_end(p_new_child), this);
+        }
+
+      p_r->~internal_node();
+      s_internal_node_allocator.deallocate(p_r, 1);
+      _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);)
+      _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs);
+      return p_l;
+    }
+
+  if (p_l->get_e_ind() < p_r->get_e_ind() && 
+      p_l->should_be_mine(p_r->pref_b_it(), p_r->pref_e_it(), 0, this))
+    {
+      node_pointer p_new_child = rec_join(p_l->get_join_child(p_r, this),
+					  p_r, 0, r_bag);
+      p_l->replace_child(p_new_child, pref_begin(p_new_child),
+			 pref_end(p_new_child), this);
+      _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);)
+      return p_l;
+    }
+
+  if (p_r->get_e_ind() < p_l->get_e_ind() && 
+      p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
+    {
+      node_pointer p_new_child = rec_join(p_r->get_join_child(p_l, this), p_l,
+					  0, r_bag);
+
+      p_r->replace_child(p_new_child, pref_begin(p_new_child), 
+			 pref_end(p_new_child), this);
+
+      _GLIBCXX_DEBUG_ONLY(p_r->assert_valid(this);)
+      _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_r) == lhs_leafs + rhs_leafs);
+      return p_r;
+    }
+
+  node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
+  _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);)
+  _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs);
+  return p_ret;
+}
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert(const_reference r_val)
+{
+  node_pointer p_lf = find_imp(PB_DS_V2F(r_val));
+  if (p_lf != 0 && p_lf->m_type == pat_trie_leaf_node_type && 
+      synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_lf)->value()), PB_DS_V2F(r_val)))
+    {
+      _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val)));
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return std::make_pair(iterator(p_lf), false);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val)));
+
+  leaf_pointer p_new_lf = s_leaf_allocator.allocate(1);
+  cond_dealtor cond(p_new_lf);
+
+  new (p_new_lf) leaf(r_val);
+  apply_update(p_new_lf, (node_update* )this);
+  cond.set_call_destructor();
+  split_join_branch_bag bag;
+  bag.add_branch();
+  m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent, p_new_lf, 0, bag);
+  m_p_head->m_p_parent->m_p_parent = m_p_head;
+  cond.set_no_action_dtor();
+  ++m_size;
+  update_min_max_for_inserted_leaf(p_new_lf);
+  _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)   
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return std::make_pair(point_iterator(p_new_lf), true);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+keys_diff_ind(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r)
+{
+  size_type diff_pos = 0;
+  while (b_l != e_l)
+    {
+      if (b_r == e_r)
+	return (diff_pos);
+      if (e_access_traits::e_pos(*b_l) != e_access_traits::e_pos(*b_r))
+	return (diff_pos);
+      ++b_l;
+      ++b_r;
+      ++diff_pos;
+    }
+  _GLIBCXX_DEBUG_ASSERT(b_r != e_r);
+  return diff_pos;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::internal_node_pointer
+PB_DS_CLASS_C_DEC::
+insert_branch(node_pointer p_l, node_pointer p_r, split_join_branch_bag& r_bag)
+{
+  typename synth_e_access_traits::const_iterator left_b_it = pref_begin(p_l);
+  typename synth_e_access_traits::const_iterator left_e_it = pref_end(p_l);
+  typename synth_e_access_traits::const_iterator right_b_it = pref_begin(p_r);
+  typename synth_e_access_traits::const_iterator right_e_it = pref_end(p_r);
+
+  const size_type diff_ind = keys_diff_ind(left_b_it, left_e_it, 
+					   right_b_it, right_e_it);
+
+  internal_node_pointer p_new_nd = r_bag.get_branch();
+  new (p_new_nd) internal_node(diff_ind, left_b_it);
+  p_new_nd->add_child(p_l, left_b_it, left_e_it, this);
+  p_new_nd->add_child(p_r, right_b_it, right_e_it, this);
+  p_l->m_p_parent = p_new_nd;
+  p_r->m_p_parent = p_new_nd;
+  _GLIBCXX_DEBUG_ONLY(p_new_nd->assert_valid(this);)
+  return (p_new_nd);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+update_min_max_for_inserted_leaf(leaf_pointer p_new_lf)
+{
+  if (m_p_head->m_p_min == m_p_head ||
+      synth_e_access_traits::cmp_keys(PB_DS_V2F(p_new_lf->value()),
+				      PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value())))
+    m_p_head->m_p_min = p_new_lf;
+
+  if (m_p_head->m_p_max == m_p_head ||
+      synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value()), PB_DS_V2F(p_new_lf->value())))
+    m_p_head->m_p_max = p_new_lf;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp
new file mode 100644
index 000000000..56cf13304
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp
@@ -0,0 +1,599 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file internal_node.hpp
+ * Contains an internal PB_DS_BASE_C_DEC for a patricia tree.
+ */
+
+#ifndef PB_DS_PAT_TRIE_INTERNAL_NODE_HPP
+#define PB_DS_PAT_TRIE_INTERNAL_NODE_HPP
+
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Type_Traits, typename E_Access_Traits,  \
+	     typename Metadata, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    pat_trie_internal_node<Type_Traits, E_Access_Traits, Metadata, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
+
+#define PB_DS_LEAF_C_DEC \
+    pat_trie_leaf<Type_Traits, E_Access_Traits, Metadata, Allocator>
+
+    template<typename Type_Traits,
+	     typename E_Access_Traits,
+	     typename Metadata,
+	     typename Allocator>
+    struct pat_trie_internal_node : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef PB_DS_BASE_C_DEC 			base_type;
+      typedef Type_Traits 			type_traits;
+      typedef typename type_traits::value_type 	value_type;
+      typedef typename Allocator::size_type 	size_type;
+
+      typedef E_Access_Traits e_access_traits;
+      typedef typename e_access_traits::const_iterator const_e_iterator;
+      typedef typename Allocator::template rebind<e_access_traits>::other access_rebind;
+      typedef typename access_rebind::const_pointer const_e_access_traits_pointer;
+
+      typedef typename Allocator::template rebind<base_type>::other base_rebind;
+      typedef typename base_rebind::pointer node_pointer;
+      typedef typename base_rebind::const_pointer const_node_pointer;
+
+      typedef PB_DS_LEAF_C_DEC leaf;
+      typedef typename Allocator::template rebind<leaf>::other leaf_rebind;
+      typedef typename leaf_rebind::pointer leaf_pointer;
+      typedef typename leaf_rebind::const_pointer const_leaf_pointer;
+
+      typedef typename Allocator::template rebind<pat_trie_internal_node>::other internal_node_rebind;
+      typedef typename internal_node_rebind::pointer internal_node_pointer;
+      typedef typename internal_node_rebind::const_pointer const_internal_node_pointer;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef typename base_type::subtree_debug_info subtree_debug_info;
+
+      virtual subtree_debug_info
+      assert_valid_imp(const_e_access_traits_pointer) const;
+#endif 
+
+      inline size_type
+      get_pref_pos(const_e_iterator, const_e_iterator, 
+		   const_e_access_traits_pointer) const;
+
+    public:
+      typedef typename Allocator::template rebind<node_pointer>::other node_pointer_rebind;
+      typedef typename node_pointer_rebind::pointer node_pointer_pointer;
+      typedef typename node_pointer_rebind::reference node_pointer_reference;
+
+      enum
+	{
+	  arr_size = E_Access_Traits::max_size + 1
+	};
+      PB_DS_STATIC_ASSERT(min_arr_size, arr_size >= 2);
+
+#include <ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp>
+#include <ext/pb_ds/detail/pat_trie_/child_iterator.hpp>
+
+      pat_trie_internal_node(size_type, const const_e_iterator);
+
+      void
+      update_prefixes(const_e_access_traits_pointer);
+
+      const_iterator
+      begin() const;
+
+      iterator
+      begin();
+
+      const_iterator
+      end() const;
+
+      iterator
+      end();
+
+      inline node_pointer
+      get_child_node(const_e_iterator, const_e_iterator, 
+		     const_e_access_traits_pointer);
+
+      inline const_node_pointer
+      get_child_node(const_e_iterator, const_e_iterator, 
+		     const_e_access_traits_pointer) const;
+
+      inline iterator
+      get_child_it(const_e_iterator, const_e_iterator, 
+		   const_e_access_traits_pointer);
+
+      inline node_pointer
+      get_lower_bound_child_node(const_e_iterator, const_e_iterator, 
+				 size_type, const_e_access_traits_pointer);
+
+      inline node_pointer
+      add_child(node_pointer, const_e_iterator, const_e_iterator, 
+		const_e_access_traits_pointer);
+
+      inline const_node_pointer
+      get_join_child(const_node_pointer, const_e_access_traits_pointer) const;
+
+      inline node_pointer
+      get_join_child(node_pointer, const_e_access_traits_pointer);
+
+      void
+      remove_child(node_pointer p_nd);
+
+      iterator
+      remove_child(iterator it);
+
+      void
+      replace_child(node_pointer, const_e_iterator, const_e_iterator, 
+		    const_e_access_traits_pointer);
+
+      inline const_e_iterator
+      pref_b_it() const;
+
+      inline const_e_iterator
+      pref_e_it() const;
+
+      inline size_type
+      get_e_ind() const;
+
+      bool
+      should_be_mine(const_e_iterator, const_e_iterator, size_type, 
+		     const_e_access_traits_pointer) const;
+
+      leaf_pointer
+      leftmost_descendant();
+
+      const_leaf_pointer
+      leftmost_descendant() const;
+
+      leaf_pointer
+      rightmost_descendant();
+
+      const_leaf_pointer
+      rightmost_descendant() const;
+
+#ifdef _GLIBCXX_DEBUG
+      size_type
+      e_ind() const;
+#endif 
+
+    private:
+      pat_trie_internal_node(const pat_trie_internal_node&);
+
+      size_type
+      get_begin_pos() const;
+
+      const size_type m_e_ind;
+      const_e_iterator m_pref_b_it;
+      const_e_iterator m_pref_e_it;
+      node_pointer m_a_p_children[arr_size];
+      static leaf_rebind s_leaf_alloc;
+      static internal_node_rebind s_internal_node_alloc;
+    };
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::leaf_rebind
+    PB_DS_CLASS_C_DEC::s_leaf_alloc;
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::internal_node_rebind
+    PB_DS_CLASS_C_DEC::s_internal_node_alloc;
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_pref_pos(const_e_iterator b_it, const_e_iterator e_it, 
+		 const_e_access_traits_pointer p_traits) const
+    {
+      if (static_cast<std::size_t>(std::distance(b_it, e_it)) <= m_e_ind)
+	return 0;
+      std::advance(b_it, m_e_ind);
+      return 1 + p_traits->e_pos(*b_it);
+    }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    pat_trie_internal_node(size_type len, const const_e_iterator it) :
+      PB_DS_BASE_C_DEC(pat_trie_internal_node_type),
+      m_e_ind(len), m_pref_b_it(it), m_pref_e_it(it)
+    {
+      std::advance(m_pref_e_it, m_e_ind);
+      std::fill(m_a_p_children, m_a_p_children + arr_size,
+		static_cast<node_pointer>(0));
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    update_prefixes(const_e_access_traits_pointer p_traits)
+    {
+      node_pointer p_first = *begin();
+      if (p_first->m_type == pat_trie_leaf_node_type)
+	{
+	  const_leaf_pointer p = static_cast<const_leaf_pointer>(p_first);
+	  m_pref_b_it = p_traits->begin(e_access_traits::extract_key(p->value()));
+	}
+      else
+	{
+	  _GLIBCXX_DEBUG_ASSERT(p_first->m_type == pat_trie_internal_node_type);
+	  m_pref_b_it = static_cast<internal_node_pointer>(p_first)->pref_b_it();
+	}
+      m_pref_e_it = m_pref_b_it;
+      std::advance(m_pref_e_it, m_e_ind);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_iterator
+    PB_DS_CLASS_C_DEC::
+    begin() const
+    {
+      typedef node_pointer_pointer pointer_type;
+      pointer_type p = const_cast<pointer_type>(m_a_p_children);
+      return const_iterator(p + get_begin_pos(), p + arr_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    begin()
+    {
+      return iterator(m_a_p_children + get_begin_pos(), 
+		      m_a_p_children + arr_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_iterator
+    PB_DS_CLASS_C_DEC::
+    end() const
+    {
+      typedef node_pointer_pointer pointer_type;
+      pointer_type p = const_cast<pointer_type>(m_a_p_children) + arr_size;
+      return const_iterator(p, p);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    end()
+    { return iterator(m_a_p_children + arr_size, m_a_p_children + arr_size); }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::node_pointer
+    PB_DS_CLASS_C_DEC::
+    get_child_node(const_e_iterator b_it, const_e_iterator e_it, 
+		   const_e_access_traits_pointer p_traits)
+    {
+      const size_type i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+      return m_a_p_children[i];
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    get_child_it(const_e_iterator b_it, const_e_iterator e_it, 
+		 const_e_access_traits_pointer p_traits)
+    {
+      const size_type i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+      _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i] != 0);
+      return iterator(m_a_p_children + i, m_a_p_children + i);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::const_node_pointer
+    PB_DS_CLASS_C_DEC::
+    get_child_node(const_e_iterator b_it, const_e_iterator e_it, 
+		   const_e_access_traits_pointer p_traits) const
+    { return const_cast<node_pointer>(get_child_node(b_it, e_it, p_traits)); }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::node_pointer
+    PB_DS_CLASS_C_DEC::
+    get_lower_bound_child_node(const_e_iterator b_it, const_e_iterator e_it, 
+			       size_type checked_ind, 
+			       const_e_access_traits_pointer p_traits)
+    {
+      if (!should_be_mine(b_it, e_it, checked_ind, p_traits))
+	{
+	  if (p_traits->cmp_prefixes(b_it, e_it, m_pref_b_it, m_pref_e_it, true))
+	    return leftmost_descendant();
+	  return rightmost_descendant();
+	}
+
+      size_type i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+
+      if (m_a_p_children[i] != 0)
+	return m_a_p_children[i];
+
+      while (++i < arr_size)
+	if (m_a_p_children[i] != 0)
+	  {
+	    if (m_a_p_children[i]->m_type == pat_trie_leaf_node_type)
+	      return m_a_p_children[i];
+
+	    _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i]->m_type == pat_trie_internal_node_type);
+
+	    return static_cast<internal_node_pointer>(m_a_p_children[i])->leftmost_descendant();
+	  }
+
+      return rightmost_descendant();
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::node_pointer
+    PB_DS_CLASS_C_DEC::
+    add_child(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it, 
+	      const_e_access_traits_pointer p_traits)
+    {
+      const size_type i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+      if (m_a_p_children[i] == 0)
+	{
+	  m_a_p_children[i] = p_nd;
+	  p_nd->m_p_parent = this;
+	  return p_nd;
+	}
+      return m_a_p_children[i];
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_node_pointer
+    PB_DS_CLASS_C_DEC::
+    get_join_child(const_node_pointer p_nd, const_e_access_traits_pointer p_traits) const
+    {
+      node_pointer p = const_cast<node_pointer>(p_nd);
+      return const_cast<internal_node_pointer>(this)->get_join_child(p, p_traits);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::node_pointer
+    PB_DS_CLASS_C_DEC::
+    get_join_child(node_pointer p_nd, const_e_access_traits_pointer p_traits)
+    {
+      size_type i;
+      const_e_iterator b_it;
+      const_e_iterator e_it;
+      if (p_nd->m_type == pat_trie_leaf_node_type)
+	{
+	  typename Type_Traits::const_key_reference r_key =
+	    e_access_traits::extract_key(static_cast<const_leaf_pointer>(p_nd)->value());
+
+	  b_it = p_traits->begin(r_key);
+	  e_it = p_traits->end(r_key);
+	}
+      else
+	{
+	  b_it = static_cast<internal_node_pointer>(p_nd)->pref_b_it();
+	  e_it = static_cast<internal_node_pointer>(p_nd)->pref_e_it();
+	}
+      i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+      return m_a_p_children[i];
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    remove_child(node_pointer p_nd)
+    {
+      size_type i = 0;
+      for (; i < arr_size; ++i)
+	if (m_a_p_children[i] == p_nd)
+	  {
+	    m_a_p_children[i] = 0;
+	    return;
+	  }
+      _GLIBCXX_DEBUG_ASSERT(i != arr_size);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    remove_child(iterator it)
+    {
+      iterator ret = it;
+      ++ret;
+      * it.m_p_p_cur = 0;
+      return ret;
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    replace_child(node_pointer p_nd, const_e_iterator b_it, 
+		  const_e_iterator e_it, 
+		  const_e_access_traits_pointer p_traits)
+    {
+      const size_type i = get_pref_pos(b_it, e_it, p_traits);
+      _GLIBCXX_DEBUG_ASSERT(i < arr_size);
+      m_a_p_children[i] = p_nd;
+      p_nd->m_p_parent = this;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::const_e_iterator
+    PB_DS_CLASS_C_DEC::
+    pref_b_it() const
+    { return m_pref_b_it; }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::const_e_iterator
+    PB_DS_CLASS_C_DEC::
+    pref_e_it() const
+    { return m_pref_e_it; }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_e_ind() const
+    { return m_e_ind; }
+
+    PB_DS_CLASS_T_DEC
+    bool
+    PB_DS_CLASS_C_DEC::
+    should_be_mine(const_e_iterator b_it, const_e_iterator e_it, 
+		   size_type checked_ind, 
+		   const_e_access_traits_pointer p_traits) const
+    {
+      if (m_e_ind == 0)
+	return true;
+
+      const size_type num_es = std::distance(b_it, e_it);
+      if (num_es < m_e_ind)
+	return false;
+
+      const_e_iterator key_b_it = b_it;
+      std::advance(key_b_it, checked_ind);
+      const_e_iterator key_e_it = b_it;
+      std::advance(key_e_it, m_e_ind);
+
+      const_e_iterator value_b_it = m_pref_b_it;
+      std::advance(value_b_it, checked_ind);
+      const_e_iterator value_e_it = m_pref_b_it;
+      std::advance(value_e_it, m_e_ind);
+
+      return p_traits->equal_prefixes(key_b_it, key_e_it, value_b_it, 
+				      value_e_it);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::leaf_pointer
+    PB_DS_CLASS_C_DEC::
+    leftmost_descendant()
+    {
+      node_pointer p_pot =* begin();
+      if (p_pot->m_type == pat_trie_leaf_node_type)
+	return (static_cast<leaf_pointer>(p_pot));
+      _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type);
+      return static_cast<internal_node_pointer>(p_pot)->leftmost_descendant();
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_leaf_pointer
+    PB_DS_CLASS_C_DEC::
+    leftmost_descendant() const
+    {
+      return const_cast<internal_node_pointer>(this)->leftmost_descendant();
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::leaf_pointer
+    PB_DS_CLASS_C_DEC::
+    rightmost_descendant()
+    {
+      const size_type num_children = std::distance(begin(), end());
+      _GLIBCXX_DEBUG_ASSERT(num_children >= 2);
+
+      iterator it = begin();
+      std::advance(it, num_children - 1);
+      node_pointer p_pot =* it;
+      if (p_pot->m_type == pat_trie_leaf_node_type)
+	return static_cast<leaf_pointer>(p_pot);
+      _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type);
+      return static_cast<internal_node_pointer>(p_pot)->rightmost_descendant();
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::const_leaf_pointer
+    PB_DS_CLASS_C_DEC::
+    rightmost_descendant() const
+    {
+      return const_cast<internal_node_pointer>(this)->rightmost_descendant();
+    }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    e_ind() const
+    { return m_e_ind; }
+#endif 
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    get_begin_pos() const
+    {
+      size_type i;
+      for (i = 0; i < arr_size && m_a_p_children[i] == 0; ++i)
+	;
+      return i;
+    }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::subtree_debug_info
+    PB_DS_CLASS_C_DEC::
+    assert_valid_imp(const_e_access_traits_pointer p_traits) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_internal_node_type);
+      _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(pref_b_it(), pref_e_it())) == m_e_ind);
+      _GLIBCXX_DEBUG_ASSERT(std::distance(begin(), end()) >= 2);
+
+      for (typename pat_trie_internal_node::const_iterator it = begin();
+	   it != end(); ++it)
+	{
+	  const_node_pointer p_nd =* it;
+	  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent == this);
+	  subtree_debug_info child_ret = p_nd->assert_valid_imp(p_traits);
+
+	  _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(child_ret.first, child_ret.second)) >= m_e_ind);
+	  _GLIBCXX_DEBUG_ASSERT(should_be_mine(child_ret.first, child_ret.second, 0, p_traits));
+	  _GLIBCXX_DEBUG_ASSERT(get_pref_pos(child_ret.first, child_ret.second, p_traits) == static_cast<size_type>(it.m_p_p_cur - m_a_p_children));
+	}
+      return std::make_pair(pref_b_it(), pref_e_it());
+    }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_LEAF_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
new file mode 100644
index 000000000..85199f81c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
@@ -0,0 +1,120 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterators_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+begin()
+{ return iterator(m_p_head->m_p_min); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin() const
+{ return const_iterator(m_p_head->m_p_min); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+end()
+{ return iterator(m_p_head); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end() const
+{ return const_iterator(m_p_head); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
+PB_DS_CLASS_C_DEC::
+rbegin() const
+{
+  if (empty())
+    return rend();
+  return --end();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+rbegin()
+{
+  if (empty())
+    return rend();
+  return --end();
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+rend()
+{ return reverse_iterator(m_p_head); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
+PB_DS_CLASS_C_DEC::
+rend() const
+{ return const_reverse_iterator(m_p_head); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin() const
+{ return const_node_iterator(m_p_head->m_p_parent, this); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_begin()
+{ return node_iterator(m_p_head->m_p_parent, this); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_node_iterator
+PB_DS_CLASS_C_DEC::
+node_end() const
+{ return const_node_iterator(0, this); }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+node_end()
+{ return node_iterator(0, this); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/leaf.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/leaf.hpp
new file mode 100644
index 000000000..91cf14faa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/leaf.hpp
@@ -0,0 +1,171 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file leaf.hpp
+ * Contains a pat_trie_leaf for a patricia tree.
+ */
+
+#ifndef PB_DS_PAT_TRIE_LEAF_HPP
+#define PB_DS_PAT_TRIE_LEAF_HPP
+
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC						\
+    template<								\
+						class Type_Traits,	\
+						class E_Access_Traits,	\
+						class Metadata,		\
+						class Allocator>
+
+#define PB_DS_CLASS_C_DEC						\
+    pat_trie_leaf<							\
+						Type_Traits,		\
+						E_Access_Traits,	\
+						Metadata,		\
+						Allocator>
+
+#define PB_DS_BASE_C_DEC					\
+    pat_trie_node_base<						\
+					Type_Traits,		\
+					E_Access_Traits,	\
+					Metadata,		\
+					Allocator>
+
+#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC				\
+    pat_trie_subtree_debug_info<					\
+							Type_Traits,	\
+							E_Access_Traits, \
+							Allocator>
+
+    template<typename Type_Traits,
+	     class E_Access_Traits,
+	     class Metadata,
+	     class Allocator>
+    struct pat_trie_leaf : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef typename Type_Traits::value_type value_type;
+
+      typedef typename Type_Traits::const_reference const_reference;
+
+      typedef typename Type_Traits::reference reference;
+
+      typedef
+      typename Allocator::template rebind<
+	E_Access_Traits>::other::const_pointer
+      const_e_access_traits_pointer;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef
+      typename PB_DS_BASE_C_DEC::subtree_debug_info
+      subtree_debug_info;
+#endif 
+
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    public:
+      pat_trie_leaf(const_reference r_val);
+
+      inline reference
+      value();
+
+      inline const_reference
+      value() const;
+
+#ifdef _GLIBCXX_DEBUG
+      virtual subtree_debug_info
+      assert_valid_imp(const_e_access_traits_pointer p_traits) const;
+
+      virtual
+      ~pat_trie_leaf();
+#endif 
+
+    private:
+      pat_trie_leaf(const PB_DS_CLASS_C_DEC& other);
+
+      value_type m_value;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    pat_trie_leaf(const_reference r_val) :
+    PB_DS_BASE_C_DEC(pat_trie_leaf_node_type), m_value(r_val)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::reference
+    PB_DS_CLASS_C_DEC::
+    value()
+    { return m_value; }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::const_reference
+    PB_DS_CLASS_C_DEC::
+    value() const
+    { return m_value; }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::subtree_debug_info
+    PB_DS_CLASS_C_DEC::
+    assert_valid_imp(const_e_access_traits_pointer p_traits) const
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_leaf_node_type);
+      subtree_debug_info ret;
+      const_reference r_val = value();
+      return std::make_pair(p_traits->begin(p_traits->extract_key(r_val)),
+			     p_traits->end(p_traits->extract_key(r_val)));
+    }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    ~pat_trie_leaf() { }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_base.hpp
new file mode 100644
index 000000000..bb13068bc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_base.hpp
@@ -0,0 +1,128 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_base.hpp
+ * Contains a pat_trie_node_base base for a patricia tree.
+ */
+
+#ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP
+#define PB_DS_PAT_TRIE_NODE_BASE_HPP
+
+#include <ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Type_Traits, typename E_Access_Traits,	\
+	     typename Metadata,	typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
+
+#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC	\
+    pat_trie_subtree_debug_info<Type_Traits, E_Access_Traits, Allocator>
+
+    enum pat_trie_node_type
+      {
+	pat_trie_internal_node_type,
+	pat_trie_leaf_node_type,
+	pat_trie_head_node_type
+      };
+
+    template<typename Type_Traits,
+	     typename E_Access_Traits,
+	     typename Metadata,
+	     typename Allocator>
+    struct pat_trie_node_base : public pat_trie_node_metadata_base<
+      Metadata,
+      Allocator>
+    {
+    public:
+      typedef
+      typename Allocator::template rebind<
+      pat_trie_node_base>::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	E_Access_Traits>::other::const_pointer
+      const_e_access_traits_pointer;
+
+#ifdef _GLIBCXX_DEBUG
+      typedef
+      std::pair<
+	typename E_Access_Traits::const_iterator,
+	typename E_Access_Traits::const_iterator>
+      subtree_debug_info;
+#endif 
+
+      pat_trie_node_base(pat_trie_node_type type);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid(const_e_access_traits_pointer p_traits) const;
+
+      virtual subtree_debug_info
+      assert_valid_imp(const_e_access_traits_pointer p_traits) const = 0;
+#endif 
+
+      node_pointer m_p_parent;
+      const pat_trie_node_type m_type;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    pat_trie_node_base(pat_trie_node_type type) : m_type(type)
+    { }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    assert_valid(const_e_access_traits_pointer p_traits) const
+    { assert_valid_imp(p_traits); }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
new file mode 100644
index 000000000..c57462868
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
@@ -0,0 +1,338 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_iterators.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+#ifndef PB_DS_PAT_TRIE_NODE_ITERATORS_HPP
+#define PB_DS_PAT_TRIE_NODE_ITERATORS_HPP
+
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC			\
+    pat_trie_const_node_it_<						\
+							Node,		\
+							Leaf,		\
+							Head,		\
+							Internal_Node,	\
+							Const_Iterator,	\
+							Iterator,	\
+							E_Access_Traits, \
+							Allocator>
+
+#define PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC			\
+    pat_trie_node_it_<						\
+					Node,			\
+					Leaf,			\
+					Head,			\
+					Internal_Node,		\
+					Const_Iterator,		\
+					Iterator,		\
+					E_Access_Traits,	\
+					Allocator>
+
+    // Const node iterator.
+    template<typename Node,
+	     class Leaf,
+	     class Head,
+	     class Internal_Node,
+	     class Const_Iterator,
+	     class Iterator,
+	     class E_Access_Traits,
+	     class Allocator>
+    class pat_trie_const_node_it_
+    {
+    protected:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::const_pointer
+      const_leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::pointer
+      leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Internal_Node>::other::pointer
+      internal_node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Internal_Node>::other::const_pointer
+      const_internal_node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	E_Access_Traits>::other::const_pointer
+      const_e_access_traits_pointer;
+
+    private:
+      inline typename E_Access_Traits::const_iterator
+      pref_begin() const
+      {
+	if (m_p_nd->m_type == pat_trie_leaf_node_type)
+	  return (m_p_traits->begin(
+				    m_p_traits->extract_key(
+							    static_cast<const_leaf_pointer>(m_p_nd)->value())));
+
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
+
+	return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_b_it());
+      }
+
+      inline typename E_Access_Traits::const_iterator
+      pref_end() const
+      {
+	if (m_p_nd->m_type == pat_trie_leaf_node_type)
+	  return (m_p_traits->end(
+				  m_p_traits->extract_key(
+							  static_cast<const_leaf_pointer>(m_p_nd)->value())));
+
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
+
+	return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_e_it());
+      }
+
+    public:
+
+      // Size type.
+      typedef typename Allocator::size_type size_type;
+
+      // Category.
+      typedef trivial_iterator_tag iterator_category;
+
+      // Difference type.
+      typedef trivial_iterator_difference_type difference_type;
+
+      // __Iterator's value type.
+      typedef Const_Iterator value_type;
+
+      // __Iterator's reference type.
+      typedef value_type reference;
+
+      // __Iterator's __const reference type.
+      typedef value_type const_reference;
+
+      // Element access traits.
+      typedef E_Access_Traits e_access_traits;
+
+      // A key's element __const iterator.
+      typedef typename e_access_traits::const_iterator const_e_iterator;
+
+      // Metadata type.
+      typedef typename Node::metadata_type metadata_type;
+
+      // Const metadata reference type.
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::const_reference
+      const_metadata_reference;
+
+      // Default constructor.
+      /*
+	inline
+	pat_trie_const_node_it_()
+      */
+      inline
+      pat_trie_const_node_it_(node_pointer p_nd = 0,  
+			      const_e_access_traits_pointer p_traits = 0) 
+      : m_p_nd(const_cast<node_pointer>(p_nd)), m_p_traits(p_traits)
+      { }
+
+      // Subtree valid prefix.
+      inline std::pair<const_e_iterator, const_e_iterator>
+      valid_prefix() const
+      { return std::make_pair(pref_begin(), pref_end()); }
+
+      // Const access; returns the __const iterator* associated with
+      // the current leaf.
+      inline const_reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(num_children() == 0);
+	return Const_Iterator(m_p_nd);
+      }
+
+      // Metadata access.
+      inline const_metadata_reference
+      get_metadata() const
+      { return m_p_nd->get_metadata(); }
+
+      // Returns the number of children in the corresponding node.
+      inline size_type
+      num_children() const
+      {
+	if (m_p_nd->m_type == pat_trie_leaf_node_type)
+	  return 0;
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
+	return std::distance(static_cast<internal_node_pointer>(m_p_nd)->begin(),  static_cast<internal_node_pointer>(m_p_nd)->end());
+      }
+
+      // Returns a __const node __iterator to the corresponding node's
+      // i-th child.
+      PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
+      get_child(size_type i) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
+	typename Internal_Node::iterator it =
+	  static_cast<internal_node_pointer>(m_p_nd)->begin();
+
+	std::advance(it, i);
+	return PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC(*it, m_p_traits);
+      }
+
+      // Compares content to a different iterator object.
+      inline bool
+      operator==(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const
+      { return (m_p_nd == other.m_p_nd); }
+
+      // Compares content (negatively) to a different iterator object.
+      inline bool
+      operator!=(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const
+      { return m_p_nd != other.m_p_nd; }
+
+    private:
+
+      friend class PB_DS_CLASS_C_DEC;
+
+    public:
+      node_pointer m_p_nd;
+
+      const_e_access_traits_pointer m_p_traits;
+    };
+
+    // Node iterator.
+    template<typename Node,
+	     class Leaf,
+	     class Head,
+	     class Internal_Node,
+	     class Const_Iterator,
+	     class Iterator,
+	     class E_Access_Traits,
+	     class Allocator>
+    class pat_trie_node_it_ : 
+      public PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
+
+    {
+    private:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+      typedef Iterator iterator;
+
+      typedef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC base_type;
+
+      typedef
+      typename base_type::const_e_access_traits_pointer
+      const_e_access_traits_pointer;
+
+      typedef typename base_type::internal_node_pointer internal_node_pointer;
+
+    public:
+
+      // Size type.
+      typedef
+      typename PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC::size_type
+      size_type;
+
+      // __Iterator's value type.
+      typedef Iterator value_type;
+
+      // __Iterator's reference type.
+      typedef value_type reference;
+
+      // __Iterator's __const reference type.
+      typedef value_type const_reference;
+
+      // Default constructor.
+      /*
+	inline
+	pat_trie_node_it_() ;
+      */
+
+      inline
+      pat_trie_node_it_(node_pointer p_nd = 0,  const_e_access_traits_pointer p_traits = 0) : base_type(p_nd, p_traits)
+      { }
+
+      // Access; returns the iterator*  associated with the current leaf.
+      inline reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_type::num_children() == 0);
+	return Iterator(base_type::m_p_nd);
+
+      }
+
+      // Returns a node __iterator to the corresponding node's i-th child.
+      PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC
+      get_child(size_type i) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd->m_type == pat_trie_internal_node_type);
+
+	typename Internal_Node::iterator it =
+	  static_cast<internal_node_pointer>(base_type::m_p_nd)->begin();
+
+	std::advance(it, i);
+	return PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC(*it, base_type::m_p_traits);
+      }
+
+    private:
+      friend class PB_DS_CLASS_C_DEC;
+    };
+
+#undef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
+#undef PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
new file mode 100644
index 000000000..36272eda8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_metadata_base.hpp
+ * Contains an internal PB_DS_BASE_C_DEC for a patricia tree.
+ */
+
+#ifndef PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP
+#define PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP
+
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Metadata, class Allocator>
+    struct pat_trie_node_metadata_base
+    {
+    public:
+      typedef Metadata metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::const_reference
+      const_metadata_reference;
+
+    public:
+      inline const_metadata_reference
+      get_metadata() const
+      {
+	return (m_metadata);
+      }
+
+    public:
+      metadata_type m_metadata;
+    };
+
+    template<typename Allocator>
+    struct pat_trie_node_metadata_base<
+      null_node_metadata,
+      Allocator>
+    {
+    public:
+      typedef null_node_metadata metadata_type;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
new file mode 100644
index 000000000..01e9e3212
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
@@ -0,0 +1,515 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file pat_trie_.hpp
+ * Contains an implementation class for a patricia tree.
+ */
+
+/**
+ * This implementation loosely borrows ideas from:
+ * 1) Fast Mergeable Integer Maps, Okasaki, Gill 1998
+ * 2) Ptset: Sets of integers implemented as Patricia trees,
+ *    Jean-Christophe Filliatr, 2000
+ **/
+
+#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp>
+#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+#include <ext/pb_ds/tree_policy.hpp>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <iterator>
+#include <utility>
+#include <algorithm>
+#include <functional>
+#include <assert.h>
+#include <list>
+#ifdef _GLIBCXX_DEBUG
+#include <ext/pb_ds/detail/debug_map_base.hpp>
+#endif 
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, typename Node_And_It_Traits, \
+	     typename Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME pat_trie_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME pat_trie_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Node_And_It_Traits, Allocator>
+
+#define PB_DS_TYPES_TRAITS_C_DEC \
+    types_traits<Key, Mapped, Allocator, false>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_DEBUG_MAP_BASE_C_DEC \
+    debug_map_base<Key,	eq_by_less<Key, \
+			std::less<Key> >, typename Allocator::template rebind<Key>::other::const_reference>
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+    /**
+     * class description = PATRICIA trie implementation.">
+     **/
+    template<typename Key,
+	     typename Mapped,
+	     typename Node_And_It_Traits,
+	     typename Allocator>
+    class PB_DS_CLASS_NAME :
+#ifdef _GLIBCXX_DEBUG
+      public PB_DS_DEBUG_MAP_BASE_C_DEC,
+#endif 
+      public Node_And_It_Traits::synth_e_access_traits,
+      public Node_And_It_Traits::node_update,
+      public PB_DS_TYPES_TRAITS_C_DEC
+    {
+    private:
+      typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
+
+      typedef typename Node_And_It_Traits::synth_e_access_traits synth_e_access_traits;
+      typedef typename Allocator::template rebind<synth_e_access_traits>::other::const_pointer const_e_access_traits_pointer;
+      typedef typename synth_e_access_traits::const_iterator const_e_iterator;
+
+      typedef typename Node_And_It_Traits::node node;
+      typedef typename Allocator::template rebind<node>::other::const_pointer const_node_pointer;
+
+      typedef typename Allocator::template rebind<node>::other::pointer node_pointer;
+
+      typedef typename Node_And_It_Traits::head head;
+      typedef typename Allocator::template rebind<head>::other head_allocator;
+      typedef typename head_allocator::pointer head_pointer;
+
+      typedef typename Node_And_It_Traits::leaf leaf;
+      typedef typename Allocator::template rebind<leaf>::other leaf_allocator;
+      typedef typename leaf_allocator::const_pointer const_leaf_pointer;
+      typedef typename leaf_allocator::pointer leaf_pointer;
+
+      typedef typename Node_And_It_Traits::internal_node internal_node;
+      typedef typename Allocator::template rebind<internal_node>::other internal_node_allocator;
+      typedef typename internal_node_allocator::const_pointer const_internal_node_pointer;
+      typedef typename internal_node_allocator::pointer internal_node_pointer;
+
+#include <ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp>
+
+#ifdef _GLIBCXX_DEBUG
+      typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
+#endif 
+
+#include <ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp>
+
+      typedef typename Node_And_It_Traits::null_node_update_pointer null_node_update_pointer;
+
+    public:
+      typedef pat_trie_tag container_category;
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef typename traits_base::key_type key_type;
+      typedef typename traits_base::key_pointer key_pointer;
+      typedef typename traits_base::const_key_pointer const_key_pointer;
+      typedef typename traits_base::key_reference key_reference;
+      typedef typename traits_base::const_key_reference const_key_reference;
+      typedef typename traits_base::mapped_type mapped_type;
+      typedef typename traits_base::mapped_pointer mapped_pointer;
+      typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
+      typedef typename traits_base::mapped_reference mapped_reference;
+      typedef typename traits_base::const_mapped_reference const_mapped_reference;
+      typedef typename traits_base::value_type value_type;
+      typedef typename traits_base::pointer pointer;
+      typedef typename traits_base::const_pointer const_pointer;
+      typedef typename traits_base::reference reference;
+      typedef typename traits_base::const_reference const_reference;
+
+      typedef typename Node_And_It_Traits::const_iterator const_point_iterator;
+      typedef typename Node_And_It_Traits::iterator point_iterator;
+      typedef const_point_iterator const_iterator;
+      typedef point_iterator iterator;
+
+      typedef typename Node_And_It_Traits::const_reverse_iterator const_reverse_iterator;
+      typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator;
+      typedef typename Node_And_It_Traits::const_node_iterator const_node_iterator;
+      typedef typename Node_And_It_Traits::node_iterator node_iterator;
+      typedef typename Node_And_It_Traits::e_access_traits e_access_traits;
+      typedef typename Node_And_It_Traits::node_update node_update;
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const e_access_traits&);
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      ~PB_DS_CLASS_NAME();
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      inline size_type
+      max_size() const;
+
+      e_access_traits& 
+      get_e_access_traits();
+
+      const e_access_traits& 
+      get_e_access_traits() const;
+
+      node_update& 
+      get_node_update();
+
+      const node_update& 
+      get_node_update() const;
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference);
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	return insert(std::make_pair(r_key, mapped_type())).first->second;
+#else 
+	insert(r_key);
+	return traits_base::s_null_mapped;
+#endif 
+      }
+
+      inline point_iterator
+      find(const_key_reference);
+
+      inline const_point_iterator
+      find(const_key_reference) const;
+
+      inline point_iterator
+      lower_bound(const_key_reference);
+
+      inline const_point_iterator
+      lower_bound(const_key_reference) const;
+
+      inline point_iterator
+      upper_bound(const_key_reference);
+
+      inline const_point_iterator
+      upper_bound(const_key_reference) const;
+
+      void
+      clear();
+
+      inline bool
+      erase(const_key_reference);
+
+      inline const_iterator
+      erase(const_iterator);
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      inline iterator
+      erase(iterator);
+#endif 
+
+      inline const_reverse_iterator
+      erase(const_reverse_iterator);
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+      inline reverse_iterator
+      erase(reverse_iterator);
+#endif 
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      void
+      join(PB_DS_CLASS_C_DEC&);
+
+      void
+      split(const_key_reference, PB_DS_CLASS_C_DEC&);
+
+      inline iterator
+      begin();
+
+      inline const_iterator
+      begin() const;
+
+      inline iterator
+      end();
+
+      inline const_iterator
+      end() const;
+
+      inline reverse_iterator
+      rbegin();
+
+      inline const_reverse_iterator
+      rbegin() const;
+
+      inline reverse_iterator
+      rend();
+
+      inline const_reverse_iterator
+      rend() const;
+
+      inline const_node_iterator
+      node_begin() const;
+
+      inline node_iterator
+      node_begin();
+
+      inline const_node_iterator
+      node_end() const;
+
+      inline node_iterator
+      node_end();
+
+#ifdef PB_DS_PAT_TRIE_TRACE_
+      void
+      trace() const;
+#endif 
+
+    protected:
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+      void
+      value_swap(PB_DS_CLASS_C_DEC&);
+
+      node_pointer
+      recursive_copy_node(const_node_pointer);
+
+    private:
+
+      void
+      initialize();
+
+      inline void
+      apply_update(node_pointer, null_node_update_pointer);
+
+      template<typename Node_Update_>
+      inline void
+      apply_update(node_pointer, Node_Update_*);
+
+      bool
+      join_prep(PB_DS_CLASS_C_DEC&, split_join_branch_bag&);
+
+      void
+      rec_join_prep(const_node_pointer, const_node_pointer, 
+		    split_join_branch_bag&);
+
+      void
+      rec_join_prep(const_leaf_pointer, const_leaf_pointer, 
+		    split_join_branch_bag&);
+
+      void
+      rec_join_prep(const_leaf_pointer, const_internal_node_pointer, 
+		    split_join_branch_bag&);
+
+      void
+      rec_join_prep(const_internal_node_pointer, const_leaf_pointer, 
+		    split_join_branch_bag&);
+
+      void
+      rec_join_prep(const_internal_node_pointer, const_internal_node_pointer, 
+		    split_join_branch_bag&);
+
+      node_pointer
+      rec_join(node_pointer, node_pointer, size_type, split_join_branch_bag&);
+
+      node_pointer
+      rec_join(leaf_pointer, leaf_pointer, split_join_branch_bag&);
+
+      node_pointer
+      rec_join(leaf_pointer, internal_node_pointer, size_type, 
+	       split_join_branch_bag&);
+
+      node_pointer
+      rec_join(internal_node_pointer, leaf_pointer, size_type, 
+	       split_join_branch_bag&);
+
+      node_pointer
+      rec_join(internal_node_pointer, internal_node_pointer, 
+	       split_join_branch_bag&);
+
+      size_type
+      keys_diff_ind(typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator);
+
+      internal_node_pointer
+      insert_branch(node_pointer, node_pointer, split_join_branch_bag&);
+
+      void
+      update_min_max_for_inserted_leaf(leaf_pointer);
+
+      void
+      erase_leaf(leaf_pointer);
+
+      inline void
+      actual_erase_leaf(leaf_pointer);
+
+      void
+      clear_imp(node_pointer);
+
+      void
+      erase_fixup(internal_node_pointer);
+
+      void
+      update_min_max_for_erased_leaf(leaf_pointer);
+
+      static inline const_e_iterator
+      pref_begin(const_node_pointer);
+
+      static inline const_e_iterator
+      pref_end(const_node_pointer);
+
+      inline node_pointer
+      find_imp(const_key_reference);
+
+      inline node_pointer
+      lower_bound_imp(const_key_reference);
+
+      inline node_pointer
+      upper_bound_imp(const_key_reference);
+
+      inline static const_leaf_pointer
+      leftmost_descendant(const_node_pointer);
+
+      inline static leaf_pointer
+      leftmost_descendant(node_pointer);
+
+      inline static const_leaf_pointer
+      rightmost_descendant(const_node_pointer);
+
+      inline static leaf_pointer
+      rightmost_descendant(node_pointer);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      assert_iterators() const;
+
+      void
+      assert_reverse_iterators() const;
+
+      static size_type
+      recursive_count_leafs(const_node_pointer);
+#endif 
+
+#ifdef PB_DS_PAT_TRIE_TRACE_
+      static void
+      trace_node(const_node_pointer, size_type);
+
+      template<typename Metadata_>
+      static void
+      trace_node_metadata(const_node_pointer, type_to_type<Metadata_>);
+
+      static void
+      trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>);
+#endif 
+
+      leaf_pointer
+      split_prep(const_key_reference, PB_DS_CLASS_C_DEC&, 
+		 split_join_branch_bag&);
+
+      node_pointer
+      rec_split(node_pointer, const_e_iterator, const_e_iterator, 
+		PB_DS_CLASS_C_DEC&, split_join_branch_bag&);
+
+      void
+      split_insert_branch(size_type, const_e_iterator, 
+			  typename internal_node::iterator, 
+			  size_type, split_join_branch_bag&);
+
+      static head_allocator s_head_allocator;
+      static internal_node_allocator s_internal_node_allocator;
+      static leaf_allocator s_leaf_allocator;
+
+      head_pointer m_p_head;
+      size_type m_size;
+    };
+
+#include <ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp>
+#include <ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_TYPES_TRAITS_C_DEC
+#undef PB_DS_DEBUG_MAP_BASE_C_DEC
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
new file mode 100644
index 000000000..a3e15062b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
@@ -0,0 +1,484 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file point_iterators.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+#ifndef PB_DS_PAT_TRIE_FIND_ITERATORS_HPP
+#define PB_DS_PAT_TRIE_FIND_ITERATORS_HPP
+
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CONST_IT_C_DEC					\
+    pat_trie_const_it_<						\
+					Type_Traits,		\
+					Node,			\
+					Leaf,			\
+					Head,			\
+					Internal_Node,		\
+					Is_Forward_Iterator,	\
+					Allocator>
+
+#define PB_DS_CONST_ODIR_IT_C_DEC				\
+    pat_trie_const_it_<						\
+					Type_Traits,		\
+					Node,			\
+					Leaf,			\
+					Head,			\
+					Internal_Node,		\
+					!Is_Forward_Iterator,	\
+					Allocator>
+
+#define PB_DS_IT_C_DEC							\
+    pat_trie_it_<							\
+						Type_Traits,		\
+						Node,			\
+						Leaf,			\
+						Head,			\
+						Internal_Node,		\
+						Is_Forward_Iterator,	\
+						Allocator>
+
+#define PB_DS_ODIR_IT_C_DEC						\
+    pat_trie_it_<							\
+						Type_Traits,		\
+						Node,			\
+						Leaf,			\
+						Head,			\
+						Internal_Node,		\
+						!Is_Forward_Iterator,	\
+						Allocator>
+
+
+    // Const iterator.
+    template<typename Type_Traits,
+	     class Node,
+	     class Leaf,
+	     class Head,
+	     class Internal_Node,
+	     bool Is_Forward_Iterator,
+	     class Allocator>
+    class pat_trie_const_it_
+    {
+
+    private:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::const_pointer
+      const_leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::pointer
+      leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Head>::other::pointer
+      head_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Internal_Node>::other::pointer
+      internal_node_pointer;
+
+    public:
+
+      typedef std::bidirectional_iterator_tag iterator_category;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef typename Type_Traits::value_type value_type;
+
+      typedef typename Type_Traits::pointer pointer;
+
+      typedef typename Type_Traits::const_pointer const_pointer;
+
+      typedef typename Type_Traits::reference reference;
+
+      typedef typename Type_Traits::const_reference const_reference;
+
+    public:
+
+      inline
+      pat_trie_const_it_(node_pointer p_nd = 0) : m_p_nd(p_nd)
+      { }
+
+      inline
+      pat_trie_const_it_(const PB_DS_CONST_ODIR_IT_C_DEC& other) 
+      : m_p_nd(other.m_p_nd)
+      { }
+
+      inline
+      PB_DS_CONST_IT_C_DEC& 
+      operator=(const PB_DS_CONST_IT_C_DEC& other)
+      {
+	m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline
+      PB_DS_CONST_IT_C_DEC& 
+      operator=(const PB_DS_CONST_ODIR_IT_C_DEC& other)
+      {
+	m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline const_pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type);
+	return &static_cast<leaf_pointer>(m_p_nd)->value();
+      }
+
+      inline const_reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type);
+	return static_cast<leaf_pointer>(m_p_nd)->value();
+      }
+
+      inline bool
+      operator==(const PB_DS_CONST_IT_C_DEC& other) const
+      { return (m_p_nd == other.m_p_nd); }
+
+      inline bool
+      operator==(const PB_DS_CONST_ODIR_IT_C_DEC& other) const
+      { return (m_p_nd == other.m_p_nd); }
+
+      inline bool
+      operator!=(const PB_DS_CONST_IT_C_DEC& other) const
+      { return (m_p_nd != other.m_p_nd); }
+
+      inline bool
+      operator!=(const PB_DS_CONST_ODIR_IT_C_DEC& other) const
+      { return (m_p_nd != other.m_p_nd); }
+
+      inline PB_DS_CONST_IT_C_DEC& 
+      operator++()
+      {
+	inc(integral_constant<int,Is_Forward_Iterator>());
+	return *this;
+      }
+
+      inline PB_DS_CONST_IT_C_DEC
+      operator++(int)
+      {
+	PB_DS_CONST_IT_C_DEC ret_it(m_p_nd);
+	operator++();
+	return ret_it;
+      }
+
+      inline PB_DS_CONST_IT_C_DEC& 
+      operator--()
+      {
+	dec(integral_constant<int,Is_Forward_Iterator>());
+	return *this;
+      }
+
+      inline PB_DS_CONST_IT_C_DEC
+      operator--(int)
+      {
+	PB_DS_CONST_IT_C_DEC ret_it(m_p_nd);
+	operator--();
+	return ret_it;
+      }
+
+    protected:
+      inline void
+      inc(false_type)
+      { dec(true_type()); }
+
+      void
+      inc(true_type)
+      {
+	if (m_p_nd->m_type == pat_trie_head_node_type)
+	  {
+	    m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_min;
+	    return;
+	  }
+
+	node_pointer p_y = m_p_nd->m_p_parent;
+	while (p_y->m_type != pat_trie_head_node_type && 
+	       get_larger_sibling(m_p_nd) == 0)
+	  {
+	    m_p_nd = p_y;
+	    p_y = p_y->m_p_parent;
+	  }
+
+	if (p_y->m_type == pat_trie_head_node_type)
+	  {
+	    m_p_nd = p_y;
+	    return;
+	  }
+	m_p_nd = leftmost_descendant(get_larger_sibling(m_p_nd));
+      }
+
+      inline void
+      dec(false_type)
+      { inc(true_type()); }
+
+      void
+      dec(true_type)
+      {
+	if (m_p_nd->m_type == pat_trie_head_node_type)
+	  {
+	    m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_max;
+	    return;
+	  }
+
+	node_pointer p_y = m_p_nd->m_p_parent;
+	while (p_y->m_type != pat_trie_head_node_type && 
+	       get_smaller_sibling(m_p_nd) == 0)
+	  {
+	    m_p_nd = p_y;
+	    p_y = p_y->m_p_parent;
+	  }
+
+	if (p_y->m_type == pat_trie_head_node_type)
+	  {
+	    m_p_nd = p_y;
+	    return;
+	  }
+	m_p_nd = rightmost_descendant(get_smaller_sibling(m_p_nd));
+      }
+
+      inline static node_pointer
+      get_larger_sibling(node_pointer p_nd)
+      {
+	internal_node_pointer p_parent =
+	  static_cast<internal_node_pointer>(p_nd->m_p_parent);
+
+	typename Internal_Node::iterator it = p_parent->begin();
+	while (*it != p_nd)
+	  ++it;
+
+	typename Internal_Node::iterator next_it = it;
+	++next_it;
+	return ((next_it == p_parent->end())? 0 :* next_it);
+      }
+
+      inline static node_pointer
+      get_smaller_sibling(node_pointer p_nd)
+      {
+	internal_node_pointer p_parent =
+	  static_cast<internal_node_pointer>(p_nd->m_p_parent);
+
+	typename Internal_Node::iterator it = p_parent->begin();
+
+	if (*it == p_nd)
+	  return (0);
+	typename Internal_Node::iterator prev_it;
+	do
+	  {
+	    prev_it = it;
+	    ++it;
+	    if (*it == p_nd)
+	      return (*prev_it);
+	  }
+	while (true);
+
+	_GLIBCXX_DEBUG_ASSERT(false);
+	return (0);
+      }
+
+      inline static leaf_pointer
+      leftmost_descendant(node_pointer p_nd)
+      {
+	if (p_nd->m_type == pat_trie_leaf_node_type)
+	  return static_cast<leaf_pointer>(p_nd);
+	return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant();
+      }
+
+      inline static leaf_pointer
+      rightmost_descendant(node_pointer p_nd)
+      {
+	if (p_nd->m_type == pat_trie_leaf_node_type)
+	  return static_cast<leaf_pointer>(p_nd);
+	return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant();
+      }
+
+    public:
+      node_pointer m_p_nd;
+    };
+
+    // Iterator.
+    template<typename Type_Traits,
+	     class Node,
+	     class Leaf,
+	     class Head,
+	     class Internal_Node,
+	     bool Is_Forward_Iterator,
+	     class Allocator>
+    class pat_trie_it_ : 
+      public PB_DS_CONST_IT_C_DEC
+
+    {
+    private:
+      typedef
+      typename Allocator::template rebind<
+      Node>::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::const_pointer
+      const_leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Leaf>::other::pointer
+      leaf_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Head>::other::pointer
+      head_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	Internal_Node>::other::pointer
+      internal_node_pointer;
+
+    public:
+      typedef typename Type_Traits::value_type value_type;
+
+      typedef typename Type_Traits::const_pointer const_pointer;
+
+      typedef typename Type_Traits::pointer pointer;
+
+      typedef typename Type_Traits::const_reference const_reference;
+
+      typedef typename Type_Traits::reference reference;
+
+      inline
+      pat_trie_it_(node_pointer p_nd = 0) : PB_DS_CONST_IT_C_DEC((node_pointer)p_nd)
+      { }
+
+      inline
+      pat_trie_it_(const PB_DS_ODIR_IT_C_DEC& other) : PB_DS_CONST_IT_C_DEC(other.m_p_nd)
+      { }
+
+      inline
+      PB_DS_IT_C_DEC& 
+      operator=(const PB_DS_IT_C_DEC& other)
+      {
+	base_it_type::m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline
+      PB_DS_IT_C_DEC& 
+      operator=(const PB_DS_ODIR_IT_C_DEC& other)
+      {
+	base_it_type::m_p_nd = other.m_p_nd;
+	return *this;
+      }
+
+      inline pointer
+      operator->() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type);
+
+	return &static_cast<leaf_pointer>(base_it_type::m_p_nd)->value();
+      }
+
+      inline reference
+      operator*() const
+      {
+	_GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type);
+	return static_cast<leaf_pointer>(base_it_type::m_p_nd)->value();
+      }
+
+      inline PB_DS_IT_C_DEC& 
+      operator++()
+      {
+	PB_DS_CONST_IT_C_DEC::
+	  operator++();
+	return *this;
+      }
+
+      inline PB_DS_IT_C_DEC
+      operator++(int)
+      {
+	PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd);
+	operator++();
+	return ret_it;
+      }
+
+      inline PB_DS_IT_C_DEC& 
+      operator--()
+      {
+	PB_DS_CONST_IT_C_DEC::operator--();
+	return *this;
+      }
+
+      inline PB_DS_IT_C_DEC
+      operator--(int)
+      {
+	PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd);
+	operator--();
+	return ret_it;
+      }
+
+    protected:
+      typedef PB_DS_CONST_IT_C_DEC base_it_type;
+
+      friend class PB_DS_CLASS_C_DEC;
+    };
+
+#undef PB_DS_CONST_IT_C_DEC
+#undef PB_DS_CONST_ODIR_IT_C_DEC
+#undef PB_DS_IT_C_DEC
+#undef PB_DS_ODIR_IT_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
new file mode 100644
index 000000000..79bfe4283
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file policy_access_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::e_access_traits& 
+PB_DS_CLASS_C_DEC::
+get_e_access_traits()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const typename PB_DS_CLASS_C_DEC::e_access_traits& 
+PB_DS_CLASS_C_DEC::
+get_e_access_traits() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_update& 
+PB_DS_CLASS_C_DEC::
+get_node_update()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const typename PB_DS_CLASS_C_DEC::node_update& 
+PB_DS_CLASS_C_DEC::
+get_node_update() const
+{ return *this; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
new file mode 100644
index 000000000..7b2ebd559
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file r_erase_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+actual_erase_node(node_pointer p_z)
+{
+  _GLIBCXX_DEBUG_ASSERT(m_size > 0);
+  --m_size;
+  _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
+  p_z->~node();
+  s_node_allocator.deallocate(p_z, 1);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_min_max_for_erased_node(node_pointer p_z)
+{
+  if (m_size == 1)
+    {
+      m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
+      return;
+    }
+
+  if (m_p_head->m_p_left == p_z)
+    {
+      iterator it(p_z);
+      ++it;
+      m_p_head->m_p_left = it.m_p_nd;
+    }
+  else if (m_p_head->m_p_right == p_z)
+    {
+      iterator it(p_z);
+      --it;
+      m_p_head->m_p_right = it.m_p_nd;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);)
+  clear_imp(m_p_head->m_p_parent);
+  m_size = 0;
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
+  _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear_imp(node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return;
+  clear_imp(p_nd->m_p_left);
+  clear_imp(p_nd->m_p_right);
+  p_nd->~Node();
+  s_node_allocator.deallocate(p_nd, 1);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
new file mode 100644
index 000000000..c7fcdb72d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
@@ -0,0 +1,150 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file rotate_fn_imps.hpp
+ * Contains imps for rotating nodes.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_left(node_pointer p_x)
+{
+  node_pointer p_y = p_x->m_p_right;
+  p_x->m_p_right = p_y->m_p_left;
+
+  if (p_y->m_p_left != 0)
+    p_y->m_p_left->m_p_parent = p_x;
+
+  p_y->m_p_parent = p_x->m_p_parent;
+  if (p_x == m_p_head->m_p_parent)
+    m_p_head->m_p_parent = p_y;
+  else if (p_x == p_x->m_p_parent->m_p_left)
+    p_x->m_p_parent->m_p_left = p_y;
+  else
+    p_x->m_p_parent->m_p_right = p_y;
+
+  p_y->m_p_left = p_x;
+  p_x->m_p_parent = p_y;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
+
+  apply_update(p_x, (Node_Update* )this);
+  apply_update(p_x->m_p_parent, (Node_Update* )this);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_right(node_pointer p_x)
+{
+  node_pointer p_y = p_x->m_p_left;
+  p_x->m_p_left = p_y->m_p_right;
+
+  if (p_y->m_p_right != 0)
+    p_y->m_p_right->m_p_parent = p_x;
+
+  p_y->m_p_parent = p_x->m_p_parent;
+  if (p_x == m_p_head->m_p_parent)
+    m_p_head->m_p_parent = p_y;
+  else if (p_x == p_x->m_p_parent->m_p_right)
+    p_x->m_p_parent->m_p_right = p_y;
+  else
+    p_x->m_p_parent->m_p_left = p_y;
+
+  p_y->m_p_right = p_x;
+  p_x->m_p_parent = p_y;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
+
+  apply_update(p_x, (Node_Update* )this);
+  apply_update(p_x->m_p_parent, (Node_Update* )this);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+rotate_parent(node_pointer p_nd)
+{
+  node_pointer p_parent = p_nd->m_p_parent;
+  if (p_nd == p_parent->m_p_left)
+    rotate_right(p_parent);
+  else
+    rotate_left(p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd);
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || p_nd->m_p_right == p_parent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer /*p_nd*/, __gnu_pbds::null_node_update*  /*p_update*/)
+{ }
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer p_nd, Node_Update_* p_update)
+{
+  p_update->operator()(& PB_DS_V2F(p_nd->m_value),(p_nd->m_p_left == 0) ?
+			0 :
+			& PB_DS_V2F(p_nd->m_p_left->m_value),(p_nd->m_p_right == 0) ?
+			0 :
+			& PB_DS_V2F(p_nd->m_p_right->m_value));
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+inline void
+PB_DS_CLASS_C_DEC::
+update_to_top(node_pointer p_nd, Node_Update_* p_update)
+{
+  while (p_nd != m_p_head)
+    {
+      apply_update(p_nd, p_update);
+      p_nd = p_nd->m_p_parent;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update*  /*p_update*/)
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
new file mode 100644
index 000000000..c9738d9b5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
@@ -0,0 +1,254 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_fn_imps.hpp
+ * Contains an implementation class for bin_search_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid(););
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+  split_join_branch_bag bag;
+  leaf_pointer p_split_lf = split_prep(r_key, other, bag);
+  if (p_split_lf == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(bag.empty());
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(!bag.empty());
+  other.clear();
+  m_p_head->m_p_parent = rec_split(m_p_head->m_p_parent,
+				   pref_begin(p_split_lf),
+				   pref_end(p_split_lf),
+				   other,
+				   bag);
+
+  m_p_head->m_p_parent->m_p_parent = m_p_head;
+
+  other.m_p_head->m_p_max = m_p_head->m_p_max;
+  m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
+  other.m_p_head->m_p_min =
+    other.leftmost_descendant(other.m_p_head->m_p_parent);
+
+  other.m_size = std::distance(other.PB_DS_CLASS_C_DEC::begin(),
+			       other.PB_DS_CLASS_C_DEC::end());
+  m_size -= other.m_size;
+  _GLIBCXX_DEBUG_ONLY(assert_valid(););
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::leaf_pointer
+PB_DS_CLASS_C_DEC::
+split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
+{
+  _GLIBCXX_DEBUG_ASSERT(r_bag.empty());
+  if (m_size == 0)
+    {
+      other.clear();
+      _GLIBCXX_DEBUG_ONLY(assert_valid(););
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+      return (0);
+    }
+
+  if (synth_e_access_traits::cmp_keys(r_key,
+				      PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value())))
+    {
+      other.clear();
+      value_swap(other);
+      _GLIBCXX_DEBUG_ONLY(assert_valid(););
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+      return (0);
+    }
+
+  if (!synth_e_access_traits::cmp_keys(r_key,
+				       PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value())))
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid(););
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
+      return (0);
+    }
+
+  iterator it = lower_bound(r_key);
+
+  if (!synth_e_access_traits::equal_keys(PB_DS_V2F(*it), r_key))
+    --it;
+
+  node_pointer p_nd = it.m_p_nd;
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
+  leaf_pointer p_ret_l = static_cast<leaf_pointer>(p_nd);
+  while (p_nd->m_type != pat_trie_head_node_type)
+    {
+      r_bag.add_branch();
+      p_nd = p_nd->m_p_parent;
+    }
+  _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(synth_e_access_traits& )(*this), other);)
+
+  return (p_ret_l);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+rec_split(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
+{
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    {
+      _GLIBCXX_DEBUG_ASSERT(other.m_p_head->m_p_parent == 0);
+      return (p_nd);
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
+  internal_node_pointer p_internal_nd = static_cast<internal_node_pointer>(p_nd);
+
+  node_pointer p_child_ret = rec_split(p_internal_nd->get_child_node(b_it, e_it, this), b_it, e_it, other, r_bag);
+
+  _GLIBCXX_DEBUG_ONLY(p_child_ret->assert_valid(this);)
+  p_internal_nd->replace_child(p_child_ret, b_it, e_it, this);
+  apply_update(p_internal_nd, (node_update* )this);
+
+  typename internal_node::iterator child_it  =
+    p_internal_nd->get_child_it(b_it, e_it, this);
+
+  const size_type lhs_num_children =
+    std::distance(p_internal_nd->begin(), child_it) + 1;
+
+  _GLIBCXX_DEBUG_ASSERT(lhs_num_children > 0);
+
+  size_type rhs_num_children =
+    std::distance(p_internal_nd->begin(), p_internal_nd->end()) -
+    lhs_num_children;
+
+  if (rhs_num_children == 0)
+    {
+      apply_update(p_internal_nd, (node_update* )this);
+      return (p_internal_nd);
+    }
+
+  ++child_it;
+  other.split_insert_branch(p_internal_nd->get_e_ind(),
+			    b_it, child_it, rhs_num_children, r_bag);
+
+  child_it = p_internal_nd->get_child_it(b_it, e_it, this);
+  ++child_it;
+  while (rhs_num_children != 0)
+    {
+      child_it = p_internal_nd->remove_child(child_it);
+      --rhs_num_children;
+    }
+
+  apply_update(p_internal_nd, (node_update* )this);
+  _GLIBCXX_DEBUG_ASSERT(std::distance(p_internal_nd->begin(),
+				      p_internal_nd->end()) >= 1);
+
+  if (std::distance(p_internal_nd->begin(), p_internal_nd->end()) > 1)
+    {
+      p_internal_nd->update_prefixes(this);
+      _GLIBCXX_DEBUG_ONLY(p_internal_nd->assert_valid(this);)
+      apply_update(p_internal_nd, (node_update* )this);
+      return (p_internal_nd);
+    }
+
+  node_pointer p_ret =* p_internal_nd->begin();
+  p_internal_nd->~internal_node();
+  s_internal_node_allocator.deallocate(p_internal_nd, 1);
+  apply_update(p_ret, (node_update* )this);
+  return (p_ret);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split_insert_branch(size_type e_ind, const_e_iterator b_it, typename internal_node::iterator child_b_it, size_type num_children, split_join_branch_bag& r_bag)
+{
+#ifdef _GLIBCXX_DEBUG
+  if (m_p_head->m_p_parent != 0)
+    m_p_head->m_p_parent->assert_valid(this);
+#endif 
+
+  const size_type total_num_children =((m_p_head->m_p_parent == 0)? 0 : 1) + num_children;
+
+  if (total_num_children == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == 0);
+      return;
+    }
+
+  if (total_num_children == 1)
+    {
+      if (m_p_head->m_p_parent != 0)
+        {
+	  _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
+          return;
+        }
+
+      _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == 0);
+      m_p_head->m_p_parent =* child_b_it;
+      m_p_head->m_p_parent->m_p_parent = m_p_head;
+      apply_update(m_p_head->m_p_parent, (node_update* )this);
+      _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(total_num_children > 1);
+  internal_node_pointer p_new_root = r_bag.get_branch();
+  new (p_new_root) internal_node(e_ind, b_it);
+  size_type num_inserted = 0;
+  while (num_inserted++ < num_children)
+    {
+      _GLIBCXX_DEBUG_ONLY((*child_b_it)->assert_valid(this);)
+        p_new_root->add_child(*child_b_it, pref_begin(*child_b_it),
+			      pref_end(*child_b_it), this);
+      ++child_b_it;
+    }
+
+  if (m_p_head->m_p_parent != 0)
+    p_new_root->add_child(m_p_head->m_p_parent, 
+			  pref_begin(m_p_head->m_p_parent),
+			  pref_end(m_p_head->m_p_parent), this);
+
+  m_p_head->m_p_parent = p_new_root;
+  p_new_root->m_p_parent = m_p_head;
+  apply_update(m_p_head->m_p_parent, (node_update* )this);
+  _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
new file mode 100644
index 000000000..9cecae517
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_branch_bag.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+class split_join_branch_bag
+{
+private:
+  typedef
+  std::list<
+  internal_node_pointer,
+  typename Allocator::template rebind<
+  internal_node_pointer>::other>
+  bag_t;
+
+public:
+
+  void
+  add_branch()
+  {
+    internal_node_pointer p_nd = s_internal_node_allocator.allocate(1);
+    __try
+      {
+	m_bag.push_back(p_nd);
+      }
+    __catch(...)
+      {
+	s_internal_node_allocator.deallocate(p_nd, 1);
+	__throw_exception_again;
+      }
+  }
+
+  internal_node_pointer
+  get_branch()
+  {
+    _GLIBCXX_DEBUG_ASSERT(!m_bag.empty());
+    internal_node_pointer p_nd =* m_bag.begin();
+    m_bag.pop_front();
+    return p_nd;
+  }
+
+  ~split_join_branch_bag()
+  {
+    while (!m_bag.empty())
+      {
+	internal_node_pointer p_nd =* m_bag.begin();
+	s_internal_node_allocator.deallocate(p_nd, 1);
+	m_bag.pop_front();
+      }
+  }
+
+  inline bool
+  empty() const
+  { return m_bag.empty(); }
+
+private:
+  bag_t m_bag;
+};
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
new file mode 100644
index 000000000..abf5f1185
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
@@ -0,0 +1,229 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file synth_e_access_traits.hpp
+ * Contains an implementation class for a patricia tree.
+ */
+
+#ifndef PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
+#define PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
+
+#include <ext/pb_ds/detail/type_utils.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC				\
+    template<typename Type_Traits, bool Set, class E_Access_Traits>
+
+#define PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC				\
+    synth_e_access_traits<						\
+						Type_Traits,		\
+						Set,			\
+						E_Access_Traits>
+
+    template<typename Type_Traits, bool Set, class E_Access_Traits>
+    struct synth_e_access_traits : public E_Access_Traits
+    {
+
+    private:
+      typedef E_Access_Traits base_type;
+
+      typedef Type_Traits type_traits;
+
+      typedef typename type_traits::const_key_reference const_key_reference;
+
+      typedef typename type_traits::const_reference const_reference;
+
+    public:
+      synth_e_access_traits();
+
+      synth_e_access_traits(const E_Access_Traits& r_traits);
+
+      inline bool
+      equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = true) const;
+
+      bool
+      equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
+
+      bool
+      cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = false) const;
+
+      bool
+      cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
+
+      inline static const_key_reference
+      extract_key(const_reference r_val);
+
+#ifdef _GLIBCXX_DEBUG
+      bool
+      operator()(const_key_reference r_lhs, const_key_reference r_rhs);
+#endif
+
+    private:
+      inline static const_key_reference
+      extract_key(const_reference r_val, true_type);
+
+      inline static const_key_reference
+      extract_key(const_reference r_val, false_type);
+
+    private:
+      static integral_constant<int,Set> s_set_ind;
+    };
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    integral_constant<int,Set>
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::s_set_ind;
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    synth_e_access_traits()
+    { }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    synth_e_access_traits(const E_Access_Traits& r_traits) :
+      E_Access_Traits(r_traits)
+    { }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    inline bool
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /*= false */) const
+    {
+      while (b_l != e_l)
+	{
+	  if (b_r == e_r)
+	    return (false);
+	  if (base_type::e_pos(*b_l) != base_type::e_pos(*b_r))
+	    return (false);
+	  ++b_l;
+	  ++b_r;
+	}
+      return (!compare_after || b_r == e_r);
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    bool
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
+    {
+      return (equal_prefixes(base_type::begin(r_lhs_key),
+			     base_type::end(r_lhs_key),
+			     base_type::begin(r_rhs_key),
+			     base_type::end(r_rhs_key),
+			     true));
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    bool
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /* = false*/) const
+    {
+      while (b_l != e_l)
+	{
+	  if (b_r == e_r)
+	    return (false);
+	  const typename base_type::size_type l_pos =
+	    base_type::e_pos(*b_l);
+	  const typename base_type::size_type r_pos =
+	    base_type::e_pos(*b_r);
+	  if (l_pos != r_pos)
+	    return (l_pos < r_pos);
+	  ++b_l;
+	  ++b_r;
+	}
+
+      if (!compare_after)
+	return (false);
+      return (b_r != e_r);
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    bool
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
+    {
+      return (cmp_prefixes(base_type::begin(r_lhs_key),
+			   base_type::end(r_lhs_key),
+			   base_type::begin(r_rhs_key),
+			   base_type::end(r_rhs_key),
+			   true));
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    extract_key(const_reference r_val)
+    {
+      return (extract_key(r_val, s_set_ind));
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    extract_key(const_reference r_val, true_type)
+    {
+      return (r_val);
+    }
+
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    extract_key(const_reference r_val, false_type)
+    {
+      return (r_val.first);
+    }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+    bool
+    PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
+    operator()(const_key_reference r_lhs, const_key_reference r_rhs)
+    {
+      return (cmp_keys(r_lhs, r_rhs));
+    }
+#endif 
+
+#undef PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
+#undef PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
new file mode 100644
index 000000000..39cf28a1b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
@@ -0,0 +1,113 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+#ifdef PB_DS_PAT_TRIE_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << std::endl;
+  if (m_p_head->m_p_parent == 0)
+    return;
+  trace_node(m_p_head->m_p_parent, 0);
+  std::cerr << std::endl;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_node(const_node_pointer p_nd, size_type level)
+{
+  for (size_type i = 0; i < level; ++i)
+    std::cerr << ' ';
+  std::cerr << p_nd << " ";
+  std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i ");
+
+  trace_node_metadata(p_nd, type_to_type<typename node::metadata_type>());
+  typename e_access_traits::const_iterator el_it = pref_begin(p_nd);
+  while (el_it != pref_end(p_nd))
+    {
+      std::cerr <<* el_it;
+      ++el_it;
+    }
+
+  if (p_nd->m_type == pat_trie_leaf_node_type)
+    {
+      std::cerr << std::endl;
+      return;
+    }
+
+  const_internal_node_pointer p_internal =
+    static_cast<const_internal_node_pointer>(p_nd);
+
+  std::cerr << " " <<
+    static_cast<unsigned long>(p_internal->get_e_ind()) << std::endl;
+
+  const size_type num_children = std::distance(p_internal->begin(),
+					       p_internal->end());
+
+  for (size_type child_i = 0; child_i < num_children; ++child_i)
+    {
+      typename internal_node::const_iterator child_it =
+	p_internal->begin();
+      std::advance(child_it, num_children - child_i - 1);
+      trace_node(*child_it, level + 1);
+    }
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Metadata_>
+void
+PB_DS_CLASS_C_DEC::
+trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>)
+{
+  std::cerr << "(" << static_cast<unsigned long>(p_nd->get_metadata()) << ") ";
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>)
+{ }
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/traits.hpp
new file mode 100644
index 000000000..c8e7f587b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/traits.hpp
@@ -0,0 +1,350 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+#ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
+#include <ext/pb_ds/detail/pat_trie_/head.hpp>
+#include <ext/pb_ds/detail/pat_trie_/leaf.hpp>
+#include <ext/pb_ds/detail/pat_trie_/internal_node.hpp>
+#include <ext/pb_ds/detail/pat_trie_/point_iterators.hpp>
+#include <ext/pb_ds/detail/pat_trie_/node_iterators.hpp>
+#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Key,
+	     typename Mapped,
+	     class E_Access_Traits,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct trie_traits<
+      Key,
+      Mapped,
+      E_Access_Traits,
+      Node_Update,
+      pat_trie_tag,
+      Allocator>
+    {
+    private:
+      typedef types_traits< Key, Mapped, Allocator, false> type_traits;
+
+    public:
+      typedef
+      typename trie_node_metadata_selector<
+      Key,
+      Mapped,
+      E_Access_Traits,
+      Node_Update,
+      Allocator>::type
+      metadata_type;
+
+      typedef E_Access_Traits e_access_traits;
+
+      typedef
+      __gnu_pbds::detail::synth_e_access_traits<
+	type_traits,
+	false,
+	e_access_traits>
+      synth_e_access_traits;
+
+      typedef
+      pat_trie_node_base<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      node;
+
+      typedef
+      pat_trie_leaf<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      leaf;
+
+      typedef
+      pat_trie_head<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      head;
+
+      typedef
+      pat_trie_internal_node<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      internal_node;
+
+      typedef
+      pat_trie_const_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	true,
+	Allocator>
+      const_iterator;
+
+      typedef
+      pat_trie_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	true,
+	Allocator>
+      iterator;
+
+      typedef
+      pat_trie_const_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	false,
+	Allocator>
+      const_reverse_iterator;
+
+      typedef
+      pat_trie_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	false,
+	Allocator>
+      reverse_iterator;
+
+      typedef
+      pat_trie_const_node_it_<
+	node,
+	leaf,
+	head,
+	internal_node,
+	const_iterator,
+	iterator,
+	synth_e_access_traits,
+	Allocator>
+      const_node_iterator;
+
+      typedef
+      pat_trie_node_it_<
+	node,
+	leaf,
+	head,
+	internal_node,
+	const_iterator,
+	iterator,
+	synth_e_access_traits,
+	Allocator>
+      node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	node_iterator,
+	E_Access_Traits,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_trie_node_update<
+	const_node_iterator,
+	node_iterator,
+	E_Access_Traits,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+    template<typename Key,
+	     class E_Access_Traits,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct trie_traits<
+      Key,
+      null_mapped_type,
+      E_Access_Traits,
+      Node_Update,
+      pat_trie_tag,
+      Allocator>
+    {
+    private:
+      typedef
+      types_traits<
+      Key,
+      null_mapped_type,
+      Allocator,
+      false>
+      type_traits;
+
+    public:
+      typedef
+      typename trie_node_metadata_selector<
+      Key,
+      null_mapped_type,
+      E_Access_Traits,
+      Node_Update,
+      Allocator>::type
+      metadata_type;
+
+      typedef E_Access_Traits e_access_traits;
+
+      typedef
+      __gnu_pbds::detail::synth_e_access_traits<
+	type_traits,
+	true,
+	e_access_traits>
+      synth_e_access_traits;
+
+      typedef
+      pat_trie_node_base<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      node;
+
+      typedef
+      pat_trie_leaf<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      leaf;
+
+      typedef
+      pat_trie_head<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      head;
+
+      typedef
+      pat_trie_internal_node<
+	type_traits,
+	synth_e_access_traits,
+	metadata_type,
+	Allocator>
+      internal_node;
+
+      typedef
+      pat_trie_const_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	true,
+	Allocator>
+      const_iterator;
+
+      typedef const_iterator iterator;
+
+      typedef
+      pat_trie_const_it_<
+	type_traits,
+	node,
+	leaf,
+	head,
+	internal_node,
+	false,
+	Allocator>
+      const_reverse_iterator;
+
+      typedef const_reverse_iterator reverse_iterator;
+
+      typedef
+      pat_trie_const_node_it_<
+	node,
+	leaf,
+	head,
+	internal_node,
+	const_iterator,
+	iterator,
+	synth_e_access_traits,
+	Allocator>
+      const_node_iterator;
+
+      typedef const_node_iterator node_iterator;
+
+      typedef
+      Node_Update<
+	const_node_iterator,
+	node_iterator,
+	E_Access_Traits,
+	Allocator>
+      node_update;
+
+      typedef
+      __gnu_pbds::null_trie_node_update<
+	const_node_iterator,
+	const_node_iterator,
+	E_Access_Traits,
+	Allocator>* 
+      null_node_update_pointer;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
new file mode 100644
index 000000000..8c0304f69
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file update_fn_imps.hpp
+ * Contains an implementation class for pat_trie_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer /*p_nd*/, null_node_update_pointer)
+{ }
+
+PB_DS_CLASS_T_DEC
+template<typename Node_Update_>
+inline void
+PB_DS_CLASS_C_DEC::
+apply_update(node_pointer p_nd, Node_Update_*  /*p_update*/)
+{
+  Node_Update_::operator()(node_iterator(p_nd, this),
+			   const_node_iterator(0, this));
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
new file mode 100644
index 000000000..ad05c4f57
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file priority_queue_base_dispatch.hpp
+ * Contains an pqiative container dispatching base.
+ */
+
+#ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
+#define PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
+
+#include <ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp>
+#include <ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp>
+#include <ext/pb_ds/detail/binary_heap_/binary_heap_.hpp>
+#include <ext/pb_ds/detail/thin_heap_/thin_heap_.hpp>
+
+namespace __gnu_pbds
+{
+    namespace detail
+    {
+
+      template<typename Value_Type, typename Cmp_Fn, typename Tag, typename Allocator>
+      struct priority_queue_base_dispatch;
+
+      template<typename Value_Type, typename Cmp_Fn, typename Allocator>
+      struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, pairing_heap_tag, Allocator>
+      {
+	typedef pairing_heap_< Value_Type, Cmp_Fn, Allocator> type;
+      };
+
+      template<typename Value_Type, typename Cmp_Fn, typename Allocator>
+      struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binomial_heap_tag, Allocator>
+      {
+	typedef binomial_heap_< Value_Type, Cmp_Fn, Allocator> type;
+      };
+
+      template<typename Value_Type, typename Cmp_Fn, typename Allocator>
+      struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, rc_binomial_heap_tag, Allocator>
+      {
+	typedef rc_binomial_heap_< Value_Type, Cmp_Fn, Allocator> type;
+      };
+
+      template<typename Value_Type, typename Cmp_Fn, typename Allocator>
+      struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binary_heap_tag, Allocator>
+      {
+	typedef binary_heap_< Value_Type, Cmp_Fn, Allocator> type;
+      };
+
+      template<typename Value_Type, typename Cmp_Fn, typename Allocator>
+      struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, thin_heap_tag, Allocator>
+      {
+	typedef thin_heap_< Value_Type, Cmp_Fn, Allocator> type;
+      };
+
+    } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..1abfe21de
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME()
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
+  base_type(r_cmp_fn)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
+  base_type(r_cmp_fn, r_node_update)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+  base_type(other)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  base_type::swap(other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{ base_type::m_p_head->m_red = true; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
new file mode 100644
index 000000000..ca13ef873
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+assert_node_consistent(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    return 1;
+
+  const size_type l_height = assert_node_consistent(p_nd->m_p_left);
+  const size_type r_height = assert_node_consistent(p_nd->m_p_right);
+  if (p_nd->m_red)
+    {
+      _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_left));
+      _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_right));
+    }
+  _GLIBCXX_DEBUG_ASSERT(l_height == r_height);
+  return (p_nd->m_red ? 0 : 1) + l_height;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  base_type::assert_valid();
+  const node_pointer p_head = base_type::m_p_head;
+  _GLIBCXX_DEBUG_ASSERT(p_head->m_red);
+  if (p_head->m_p_parent != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(!p_head->m_p_parent->m_red);
+      assert_node_consistent(p_head->m_p_parent);
+    }
+}
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
new file mode 100644
index 000000000..e097bc4f9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
@@ -0,0 +1,289 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  point_iterator it = find(r_key);
+  if (it == base_type::end())
+    return false;
+  erase(it);
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+erase(iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  if (it == base_type::end())
+    return it;
+
+  iterator ret_it = it;
+  ++ret_it;
+  erase_node(it.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+erase(reverse_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  if (it.m_p_nd == base_type::m_p_head)
+    return it;
+
+  reverse_iterator ret_it = it;
+  ++ret_it;
+  erase_node(it.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  size_type num_ersd = 0;
+  iterator it = base_type::begin();
+  while (it != base_type::end())
+    {
+      if (pred(*it))
+        {
+	  ++num_ersd;
+	  it = erase(it);
+        }
+      else
+	++it;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_node(node_pointer p_nd)
+{
+  remove_node(p_nd);
+  base_type::actual_erase_node(p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+remove_node(node_pointer p_z)
+{
+  update_min_max_for_erased_node(p_z);
+  node_pointer p_y = p_z;
+  node_pointer p_x = 0;
+  node_pointer p_new_x_parent = 0;
+
+  if (p_y->m_p_left == 0)
+    p_x = p_y->m_p_right;
+  else if (p_y->m_p_right == 0)
+    p_x = p_y->m_p_left;
+  else
+    {
+      p_y = p_y->m_p_right;
+      while (p_y->m_p_left != 0)
+	p_y = p_y->m_p_left;
+      p_x = p_y->m_p_right;
+    }
+
+  if (p_y == p_z)
+    {
+      p_new_x_parent = p_y->m_p_parent;
+      if (p_x != 0)
+	p_x->m_p_parent = p_y->m_p_parent;
+
+      if (base_type::m_p_head->m_p_parent == p_z)
+	base_type::m_p_head->m_p_parent = p_x;
+      else if (p_z->m_p_parent->m_p_left == p_z)
+        {
+	  p_y->m_p_left = p_z->m_p_parent;
+	  p_z->m_p_parent->m_p_left = p_x;
+        }
+      else
+        {
+	  p_y->m_p_left = 0;
+	  p_z->m_p_parent->m_p_right = p_x;
+        }
+    }
+  else
+    {
+      p_z->m_p_left->m_p_parent = p_y;
+      p_y->m_p_left = p_z->m_p_left;
+      if (p_y != p_z->m_p_right)
+        {
+	  p_new_x_parent = p_y->m_p_parent;
+	  if (p_x != 0)
+	    p_x->m_p_parent = p_y->m_p_parent;
+	  p_y->m_p_parent->m_p_left = p_x;
+	  p_y->m_p_right = p_z->m_p_right;
+	  p_z->m_p_right->m_p_parent = p_y;
+        }
+      else
+	p_new_x_parent = p_y;
+
+      if (base_type::m_p_head->m_p_parent == p_z)
+	base_type::m_p_head->m_p_parent = p_y;
+      else if (p_z->m_p_parent->m_p_left == p_z)
+	p_z->m_p_parent->m_p_left = p_y;
+      else
+	p_z->m_p_parent->m_p_right = p_y;
+
+      p_y->m_p_parent = p_z->m_p_parent;
+      std::swap(p_y->m_red, p_z->m_red);
+      p_y = p_z;
+    }
+
+  update_to_top(p_new_x_parent, (node_update* )this);
+
+  if (p_y->m_red)
+    return;
+
+  remove_fixup(p_x, p_new_x_parent);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+remove_fixup(node_pointer p_x, node_pointer p_new_x_parent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_x == 0 || p_x->m_p_parent == p_new_x_parent);
+
+  while (p_x != base_type::m_p_head->m_p_parent && is_effectively_black(p_x))
+    if (p_x == p_new_x_parent->m_p_left)
+      {
+	node_pointer p_w = p_new_x_parent->m_p_right;
+	if (p_w->m_red)
+	  {
+	    p_w->m_red = false;
+	    p_new_x_parent->m_red = true;
+	    base_type::rotate_left(p_new_x_parent);
+	    p_w = p_new_x_parent->m_p_right;
+	  }
+
+	if (is_effectively_black(p_w->m_p_left) 
+	    && is_effectively_black(p_w->m_p_right))
+	  {
+	    p_w->m_red = true;
+	    p_x = p_new_x_parent;
+	    p_new_x_parent = p_new_x_parent->m_p_parent;
+	  }
+	else
+	  {
+	    if (is_effectively_black(p_w->m_p_right))
+	      {
+		if (p_w->m_p_left != 0)
+		  p_w->m_p_left->m_red = false;
+
+		p_w->m_red = true;
+		base_type::rotate_right(p_w);
+		p_w = p_new_x_parent->m_p_right;
+	      }
+
+	    p_w->m_red = p_new_x_parent->m_red;
+	    p_new_x_parent->m_red = false;
+
+	    if (p_w->m_p_right != 0)
+	      p_w->m_p_right->m_red = false;
+
+	    base_type::rotate_left(p_new_x_parent);
+	    update_to_top(p_new_x_parent, (node_update* )this);
+	    break;
+	  }
+      }
+    else
+      {
+	node_pointer p_w = p_new_x_parent->m_p_left;
+	if (p_w->m_red == true)
+	  {
+	    p_w->m_red = false;
+	    p_new_x_parent->m_red = true;
+	    base_type::rotate_right(p_new_x_parent);
+	    p_w = p_new_x_parent->m_p_left;
+	  }
+
+	if (is_effectively_black(p_w->m_p_right) 
+	    && is_effectively_black(p_w->m_p_left))
+	  {
+	    p_w->m_red = true;
+	    p_x = p_new_x_parent;
+	    p_new_x_parent = p_new_x_parent->m_p_parent;
+	  }
+	else
+	  {
+	    if (is_effectively_black(p_w->m_p_left))
+	      {
+		if (p_w->m_p_right != 0)
+		  p_w->m_p_right->m_red = false;
+
+		p_w->m_red = true;
+		base_type::rotate_left(p_w);
+		p_w = p_new_x_parent->m_p_left;
+	      }
+
+	    p_w->m_red = p_new_x_parent->m_red;
+	    p_new_x_parent->m_red = false;
+
+	    if (p_w->m_p_left != 0)
+	      p_w->m_p_left->m_red = false;
+
+	    base_type::rotate_right(p_new_x_parent);
+	    update_to_top(p_new_x_parent, (node_update* )this);
+	    break;
+	  }
+      }
+
+  if (p_x != 0)
+    p_x->m_red = false;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
new file mode 100644
index 000000000..9378e1565
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
new file mode 100644
index 000000000..0bf69736e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
@@ -0,0 +1,46 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_effectively_black(const node_pointer p_nd)
+{ return (p_nd == 0 || !p_nd->m_red); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
new file mode 100644
index 000000000..632deab70
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
@@ -0,0 +1,115 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert(const_reference r_value)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  std::pair<point_iterator, bool> ins_pair = base_type::insert_leaf(r_value);
+  if (ins_pair.second == true)
+    {
+      ins_pair.first.m_p_nd->m_red = true;
+      _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();)
+      insert_fixup(ins_pair.first.m_p_nd);
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return ins_pair;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+insert_fixup(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_red == true);
+  while (p_nd != base_type::m_p_head->m_p_parent && p_nd->m_p_parent->m_red)
+    {
+      if (p_nd->m_p_parent == p_nd->m_p_parent->m_p_parent->m_p_left)
+        {
+	  node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_right;
+	  if (p_y != 0 && p_y->m_red)
+            {
+	      p_nd->m_p_parent->m_red = false;
+	      p_y->m_red = false;
+	      p_nd->m_p_parent->m_p_parent->m_red = true;
+	      p_nd = p_nd->m_p_parent->m_p_parent;
+            }
+	  else
+            {
+	      if (p_nd == p_nd->m_p_parent->m_p_right)
+                {
+		  p_nd = p_nd->m_p_parent;
+		  base_type::rotate_left(p_nd);
+                }
+	      p_nd->m_p_parent->m_red = false;
+	      p_nd->m_p_parent->m_p_parent->m_red = true;
+	      base_type::rotate_right(p_nd->m_p_parent->m_p_parent);
+            }
+        }
+      else
+        {
+	  node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_left;
+	  if (p_y != 0 && p_y->m_red)
+            {
+	      p_nd->m_p_parent->m_red = false;
+	      p_y->m_red = false;
+	      p_nd->m_p_parent->m_p_parent->m_red = true;
+	      p_nd = p_nd->m_p_parent->m_p_parent;
+            }
+	  else
+            {
+	      if (p_nd == p_nd->m_p_parent->m_p_left)
+                {
+		  p_nd = p_nd->m_p_parent;
+		  base_type::rotate_right(p_nd);
+                }
+	      p_nd->m_p_parent->m_red = false;
+	      p_nd->m_p_parent->m_p_parent->m_red = true;
+	      base_type::rotate_left(p_nd->m_p_parent->m_p_parent);
+            }
+        }
+    }
+
+  base_type::update_to_top(p_nd, (node_update* )this);
+  base_type::m_p_head->m_p_parent->m_red = false;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/node.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
new file mode 100644
index 000000000..3f24c762c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+#ifndef PB_DS_RB_TREE_NODE_HPP
+#define PB_DS_RB_TREE_NODE_HPP
+
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Value_Type, class Metadata, class Allocator>
+    struct rb_tree_node_
+    {
+    public:
+      typedef Value_Type value_type;
+      typedef Metadata metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+      rb_tree_node_<
+      Value_Type,
+      Metadata,
+      Allocator> >::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::reference
+      metadata_reference;
+
+      typedef
+      typename Allocator::template rebind<
+	metadata_type>::other::const_reference
+      const_metadata_reference;
+
+      inline bool
+      special() const
+      { return m_red; }
+
+      inline const_metadata_reference
+      get_metadata() const
+      { return m_metadata; }
+
+      inline metadata_reference
+      get_metadata()
+      { return m_metadata; }
+
+#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
+      void
+      trace() const
+      {
+	std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> ") 
+		  << "(" << m_metadata << ")";
+      }
+#endif
+
+      node_pointer m_p_left;
+      node_pointer m_p_right;
+      node_pointer m_p_parent;
+      value_type m_value;
+      bool m_red;
+      metadata_type m_metadata;
+    };
+
+    template<typename Value_Type, class Allocator>
+    struct rb_tree_node_<Value_Type, null_node_metadata, Allocator>
+    {
+    public:
+      typedef Value_Type value_type;
+      typedef null_node_metadata metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+      rb_tree_node_<
+      Value_Type,
+      null_node_metadata,
+      Allocator> >::other::pointer
+      node_pointer;
+
+      inline bool
+      special() const
+      { return m_red; }
+
+#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
+      void
+      trace() const
+      { std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> "); }
+#endif 
+
+      node_pointer m_p_left;
+      node_pointer m_p_right;
+      node_pointer m_p_parent;
+      value_type m_value;
+      bool m_red;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
new file mode 100644
index 000000000..1d84a8e0d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
@@ -0,0 +1,280 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file rb_tree_.hpp
+ * Contains an implementation for rb_tree_.
+ */
+/*
+ * This implementation uses an idea from the SGI STL (using a @a header node
+ *    which is needed for efficient iteration).
+ */
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
+#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
+#endif 
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
+#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
+#endif 
+#endif 
+
+#include <ext/pb_ds/detail/standard_policies.hpp>
+#include <ext/pb_ds/detail/basic_types.hpp>
+#include <utility>
+#include <vector>
+#include <assert.h>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, typename Cmp_Fn, \
+	     typename Node_And_It_Traits, typename Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME rb_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME rb_tree_no_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+    template<typename Key,
+	     typename Mapped,
+	     typename Cmp_Fn,
+	     typename Node_And_It_Traits,
+	     typename Allocator>
+    class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+      typedef typename base_type::node_pointer node_pointer;
+
+    public:
+      typedef Cmp_Fn cmp_fn;
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef typename base_type::key_type key_type;
+      typedef typename base_type::key_pointer key_pointer;
+      typedef typename base_type::const_key_pointer const_key_pointer;
+      typedef typename base_type::key_reference key_reference;
+      typedef typename base_type::const_key_reference const_key_reference;
+      typedef typename base_type::mapped_type mapped_type;
+      typedef typename base_type::mapped_pointer mapped_pointer;
+      typedef typename base_type::const_mapped_pointer const_mapped_pointer;
+      typedef typename base_type::mapped_reference mapped_reference;
+      typedef typename base_type::const_mapped_reference const_mapped_reference;
+      typedef typename base_type::value_type value_type;
+      typedef typename base_type::pointer pointer;
+      typedef typename base_type::const_pointer const_pointer;
+      typedef typename base_type::reference reference;
+      typedef typename base_type::const_reference const_reference;
+      typedef typename base_type::point_iterator point_iterator;
+      typedef typename base_type::const_iterator const_point_iterator;
+      typedef typename base_type::iterator iterator;
+      typedef typename base_type::const_iterator const_iterator;
+      typedef typename base_type::reverse_iterator reverse_iterator;
+      typedef typename base_type::const_reverse_iterator const_reverse_iterator;
+      typedef typename base_type::node_update node_update;
+
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const Cmp_Fn&);
+
+      PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&);
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference);
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	std::pair<point_iterator, bool> ins_pair =
+	base_type::insert_leaf(value_type(r_key, mapped_type()));
+
+	if (ins_pair.second == true)
+	  {
+	    ins_pair.first.m_p_nd->m_red = true;
+	    _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();)
+	    insert_fixup(ins_pair.first.m_p_nd);
+	  }
+	_GLIBCXX_DEBUG_ONLY(assert_valid();)
+	return ins_pair.first.m_p_nd->m_value.second;
+#else 
+	insert(r_key);
+	return base_type::s_null_mapped;
+#endif 
+      }
+
+      inline bool
+      erase(const_key_reference);
+
+      inline iterator
+      erase(iterator);
+
+      inline reverse_iterator
+      erase(reverse_iterator);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      void
+      join(PB_DS_CLASS_C_DEC&);
+
+      void
+      split(const_key_reference, PB_DS_CLASS_C_DEC&);
+
+    protected:
+
+    private:
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      size_type
+      assert_node_consistent(const node_pointer) const;
+#endif 
+
+      inline static bool
+      is_effectively_black(const node_pointer);
+
+      void
+      initialize();
+
+      void
+      insert_fixup(node_pointer);
+
+      void
+      erase_node(node_pointer);
+
+      void
+      remove_node(node_pointer);
+
+      void
+      remove_fixup(node_pointer, node_pointer);
+
+      void
+      split_imp(node_pointer, PB_DS_CLASS_C_DEC&);
+
+      inline node_pointer
+      split_min();
+
+      std::pair<node_pointer, node_pointer>
+      split_min_imp();
+
+      void
+      join_imp(node_pointer, node_pointer);
+
+      std::pair<node_pointer, node_pointer>
+      find_join_pos_right(node_pointer, size_type, size_type);
+
+      std::pair<node_pointer, node_pointer>
+      find_join_pos_left(node_pointer, size_type, size_type);
+
+      inline size_type
+      black_height(node_pointer);
+
+      void
+      split_at_node(node_pointer, PB_DS_CLASS_C_DEC&);
+    };
+
+#include <ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp>
+#include <ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_BASE_CLASS_NAME
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..e3cd399e8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
@@ -0,0 +1,313 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
+  if (base_type::join_prep(other) == false)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  const node_pointer p_x = other.split_min();
+  join_imp(p_x, other.m_p_head->m_p_parent);
+  base_type::join_finish(other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
+ }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+join_imp(node_pointer p_x, node_pointer p_r)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_x != 0);
+  if (p_r != 0)
+    p_r->m_red = false;
+
+  const size_type h = black_height(base_type::m_p_head->m_p_parent);
+  const size_type other_h = black_height(p_r);
+  node_pointer p_x_l;
+  node_pointer p_x_r;
+  std::pair<node_pointer, node_pointer> join_pos;
+  const bool right_join = h >= other_h;
+  if (right_join)
+    {
+      join_pos = find_join_pos_right(base_type::m_p_head->m_p_parent, 
+				     h, other_h);
+      p_x_l = join_pos.first;
+      p_x_r = p_r;
+    }
+  else
+    {
+      p_x_l = base_type::m_p_head->m_p_parent;
+      base_type::m_p_head->m_p_parent = p_r;
+      if (p_r != 0)
+	p_r->m_p_parent = base_type::m_p_head;
+
+      join_pos = find_join_pos_left(base_type::m_p_head->m_p_parent, 
+				    h, other_h);
+      p_x_r = join_pos.first;
+    }
+
+  node_pointer p_parent = join_pos.second;
+  if (p_parent == base_type::m_p_head)
+    {
+      base_type::m_p_head->m_p_parent = p_x;
+      p_x->m_p_parent = base_type::m_p_head;
+    }
+  else
+    {
+      p_x->m_p_parent = p_parent;
+      if (right_join)
+	p_x->m_p_parent->m_p_right = p_x;
+      else
+	p_x->m_p_parent->m_p_left = p_x;
+    }
+
+  p_x->m_p_left = p_x_l;
+  if (p_x_l != 0)
+    p_x_l->m_p_parent = p_x;
+
+  p_x->m_p_right = p_x_r;
+  if (p_x_r != 0)
+    p_x_r->m_p_parent = p_x;
+
+  p_x->m_red = true;
+
+  base_type::initialize_min_max();
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
+  base_type::update_to_top(p_x, (node_update* )this);
+  insert_fixup(p_x);
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid());
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+split_min()
+{
+  node_pointer p_min = base_type::m_p_head->m_p_left;
+
+#ifdef _GLIBCXX_DEBUG
+  const node_pointer p_head = base_type::m_p_head;
+  _GLIBCXX_DEBUG_ASSERT(p_min != p_head);
+#endif 
+
+  remove_node(p_min);
+  return p_min;
+}
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::node_pointer,
+  typename PB_DS_CLASS_C_DEC::node_pointer>
+PB_DS_CLASS_C_DEC::
+find_join_pos_right(node_pointer p_l, size_type h_l, size_type h_r)
+{
+  _GLIBCXX_DEBUG_ASSERT(h_l >= h_r);
+
+  if (base_type::m_p_head->m_p_parent == 0)
+    return (std::make_pair((node_pointer)0, base_type::m_p_head));
+
+  node_pointer p_l_parent = base_type::m_p_head;
+  while (h_l > h_r)
+    {
+      if (p_l->m_red == false)
+        {
+	  _GLIBCXX_DEBUG_ASSERT(h_l > 0);
+	  --h_l;
+        }
+
+      p_l_parent = p_l;
+      p_l = p_l->m_p_right;
+    }
+
+  if (!is_effectively_black(p_l))
+    {
+      p_l_parent = p_l;
+      p_l = p_l->m_p_right;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_l));
+  _GLIBCXX_DEBUG_ASSERT(black_height(p_l) == h_r);
+  _GLIBCXX_DEBUG_ASSERT(p_l == 0 || p_l->m_p_parent == p_l_parent);
+  return std::make_pair(p_l, p_l_parent);
+}
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::node_pointer,
+  typename PB_DS_CLASS_C_DEC::node_pointer>
+PB_DS_CLASS_C_DEC::
+find_join_pos_left(node_pointer p_r, size_type h_l, size_type h_r)
+{
+  _GLIBCXX_DEBUG_ASSERT(h_r > h_l);
+  if (base_type::m_p_head->m_p_parent == 0)
+    return (std::make_pair((node_pointer)0,
+			   base_type::m_p_head));
+  node_pointer p_r_parent = base_type::m_p_head;
+  while (h_r > h_l)
+    {
+      if (p_r->m_red == false)
+        {
+	  _GLIBCXX_DEBUG_ASSERT(h_r > 0);
+	  --h_r;
+        }
+
+      p_r_parent = p_r;
+      p_r = p_r->m_p_left;
+    }
+
+  if (!is_effectively_black(p_r))
+    {
+      p_r_parent = p_r;
+      p_r = p_r->m_p_left;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_r));
+  _GLIBCXX_DEBUG_ASSERT(black_height(p_r) == h_l);
+  _GLIBCXX_DEBUG_ASSERT(p_r == 0 || p_r->m_p_parent == p_r_parent);
+  return std::make_pair(p_r, p_r_parent);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+black_height(node_pointer p_nd)
+{
+  size_type h = 1;
+  while (p_nd != 0)
+    {
+      if (p_nd->m_red == false)
+	++h;
+      p_nd = p_nd->m_p_left;
+    }
+  return h;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_valid();)
+
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
+
+    if (base_type::split_prep(r_key, other) == false)
+      {
+        _GLIBCXX_DEBUG_ONLY(assert_valid());
+        _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+        return;
+      }
+
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();)
+  node_pointer p_nd = upper_bound(r_key).m_p_nd;
+  do
+    {
+      node_pointer p_next_nd = p_nd->m_p_parent;
+      if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
+	split_at_node(p_nd, other);
+
+      _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();)
+      p_nd = p_next_nd;
+    }
+  while (p_nd != base_type::m_p_head);
+
+  base_type::split_finish(other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+
+  node_pointer p_l = p_nd->m_p_left;
+  node_pointer p_r = p_nd->m_p_right;
+  node_pointer p_parent = p_nd->m_p_parent;
+  if (p_parent == base_type::m_p_head)
+    {
+      base_type::m_p_head->m_p_parent = p_l;
+      if (p_l != 0)
+        {
+	  p_l->m_p_parent = base_type::m_p_head;
+	  p_l->m_red = false;
+        }
+    }
+  else
+    {
+      if (p_parent->m_p_left == p_nd)
+	p_parent->m_p_left = p_l;
+      else
+	p_parent->m_p_right = p_l;
+
+      if (p_l != 0)
+	p_l->m_p_parent = p_parent;
+
+      update_to_top(p_parent, (node_update* )this);
+
+      if (!p_nd->m_red)
+	remove_fixup(p_l, p_parent);
+    }
+
+  base_type::initialize_min_max();
+  other.join_imp(p_nd, p_r);
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid());
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
new file mode 100644
index 000000000..531d8e46e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation for rb_tree_.
+ */
+
+#ifndef PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/rb_tree_map_/node.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key,
+	     typename Mapped,
+	     typename Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     typename Allocator>
+    struct tree_traits<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      rb_tree_tag,
+      Allocator> : public bin_search_tree_traits<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      rb_tree_node_<
+      typename types_traits<
+      Key,
+      Mapped,
+      Allocator,
+      false>::value_type,
+      typename tree_node_metadata_selector<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type,
+      Allocator>,
+      Allocator>
+    { };
+
+    template<typename Key,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct tree_traits<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      rb_tree_tag,
+      Allocator> : public bin_search_tree_traits<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      rb_tree_node_<
+      typename types_traits<
+      Key,
+      null_mapped_type,
+      Allocator,
+      false>::value_type,
+      typename tree_node_metadata_selector<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type,
+      Allocator>,
+      Allocator>
+    { };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..bf4dcfefd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+rc_binomial_heap_()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+rc_binomial_heap_(const Cmp_Fn& r_cmp_fn) :
+  PB_DS_BASE_C_DEC(r_cmp_fn)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other) :
+  PB_DS_BASE_C_DEC(other)
+{
+  make_binomial_heap();
+
+  base_type::find_max();
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~rc_binomial_heap_()
+{ }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    base_type::swap(other);
+
+  m_rc.swap(other.m_rc);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..1f6246f96
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
@@ -0,0 +1,121 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  base_type::assert_valid(false);
+  if (!base_type::empty())
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_p_max != 0);
+      base_type::assert_max();
+    }
+
+  m_rc.assert_valid();
+
+  if (m_rc.empty())
+    {
+      base_type::assert_valid(true);
+      _GLIBCXX_DEBUG_ASSERT(next_2_pointer(base_type::m_p_root) == 0);
+      return;
+    }
+
+  const_node_pointer p_nd = next_2_pointer(base_type::m_p_root);
+  typename rc_t::const_iterator it = m_rc.end();
+  --it;
+
+  while (p_nd != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(*it == p_nd);
+      const_node_pointer p_next = p_nd->m_p_next_sibling;
+      _GLIBCXX_DEBUG_ASSERT(p_next != 0);
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_next->m_metadata);
+      _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == 0 ||
+		       p_next->m_metadata < p_next->m_p_next_sibling->m_metadata);
+
+      --it;
+      p_nd = next_2_pointer(next_after_0_pointer(p_nd));
+    }
+  _GLIBCXX_DEBUG_ASSERT(it + 1 == m_rc.begin());
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::const_node_pointer
+PB_DS_CLASS_C_DEC::
+next_2_pointer(const_node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return 0;
+
+  node_pointer p_next = p_nd->m_p_next_sibling;
+
+  if (p_next == 0)
+    return 0;
+
+  if (p_nd->m_metadata == p_next->m_metadata)
+    return p_nd;
+
+  return next_2_pointer(p_next);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::const_node_pointer
+PB_DS_CLASS_C_DEC::
+next_after_0_pointer(const_node_pointer p_nd)
+{
+  if (p_nd == 0)
+    return 0;
+
+  node_pointer p_next = p_nd->m_p_next_sibling;
+
+  if (p_next == 0)
+    return 0;
+
+  if (p_nd->m_metadata < p_next->m_metadata)
+    return p_next;
+
+  return next_after_0_pointer(p_next);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
new file mode 100644
index 000000000..29d240b45
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
@@ -0,0 +1,107 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+pop()
+{
+  make_binomial_heap();
+  _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+  base_type::pop();
+  base_type::find_max();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  base_type::clear();
+  m_rc.clear();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+make_binomial_heap()
+{
+  node_pointer p_nd = base_type::m_p_root;
+  while (p_nd != 0)
+    {
+      node_pointer p_next = p_nd->m_p_next_sibling;
+      if (p_next == 0)
+	p_nd = p_next;
+      else if (p_nd->m_metadata == p_next->m_metadata)
+	p_nd = link_with_next_sibling(p_nd);
+      else if (p_nd->m_metadata < p_next->m_metadata)
+	p_nd = p_next;
+#ifdef _GLIBCXX_DEBUG
+      else
+	_GLIBCXX_DEBUG_ASSERT(0);
+#endif 
+    }
+
+  m_rc.clear();
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  make_binomial_heap();
+  const size_type ersd = base_type::erase_if(pred);
+  base_type::find_max();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase(point_iterator it)
+{
+  make_binomial_heap();
+  base_type::erase(it);
+  base_type::find_max();
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
new file mode 100644
index 000000000..56d189d70
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
@@ -0,0 +1,154 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+push(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    make_0_exposed();
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
+
+  p_nd->m_p_l_child = p_nd->m_p_prev_or_parent = 0;
+  p_nd->m_metadata = 0;
+
+  if (base_type::m_p_max == 0 || Cmp_Fn::operator()(base_type::m_p_max->m_value, r_val))
+    base_type::m_p_max = p_nd;
+
+  p_nd->m_p_next_sibling = base_type::m_p_root;
+
+  if (base_type::m_p_root != 0)
+    base_type::m_p_root->m_p_prev_or_parent = p_nd;
+
+  base_type::m_p_root = p_nd;
+
+  if (p_nd->m_p_next_sibling != 0&&  p_nd->m_p_next_sibling->m_metadata == 0)
+    m_rc.push(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    return point_iterator(p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+modify(point_iterator it, const_reference r_new_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    make_binomial_heap();
+
+  base_type::modify(it, r_new_val);
+
+  base_type::find_max();
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+link_with_next_sibling(node_pointer p_nd)
+{
+  node_pointer p_next = p_nd->m_p_next_sibling;
+
+  _GLIBCXX_DEBUG_ASSERT(p_next != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_next->m_p_prev_or_parent == p_nd);
+
+  if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
+    {
+      p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
+
+      if (p_next->m_p_prev_or_parent == 0)
+	base_type::m_p_root = p_next;
+      else
+	p_next->m_p_prev_or_parent->m_p_next_sibling = p_next;
+
+      if (base_type::m_p_max == p_nd)
+	base_type::m_p_max = p_next;
+
+      base_type::make_child_of(p_nd, p_next);
+
+      ++p_next->m_metadata;
+
+      return p_next;
+    }
+
+  p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
+
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
+
+  if (base_type::m_p_max == p_next)
+    base_type::m_p_max = p_nd;
+
+  base_type::make_child_of(p_next, p_nd);
+
+  ++p_nd->m_metadata;
+
+  return p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+make_0_exposed()
+{
+  if (m_rc.empty())
+    return;
+
+  node_pointer p_nd = m_rc.top();
+
+  m_rc.pop();
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata);
+
+  node_pointer p_res = link_with_next_sibling(p_nd);
+
+  if (p_res->m_p_next_sibling != 0&&  p_res->m_metadata == p_res->m_p_next_sibling->m_metadata)
+    m_rc.push(p_res);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
new file mode 100644
index 000000000..9b70accd9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
@@ -0,0 +1,262 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file rc.hpp
+ * Contains a redundant (binary counter).
+ */
+
+#ifndef PB_DS_RC_HPP
+#define PB_DS_RC_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Node, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    rc<Node, Allocator>
+
+    template<typename Node, class Allocator>
+    class rc
+    {
+    private:
+      typedef Allocator allocator_type;
+
+      typedef typename allocator_type::size_type size_type;
+
+      typedef Node node;
+
+      typedef
+      typename allocator_type::template rebind<
+	node>::other::pointer
+      node_pointer;
+
+      typedef
+      typename allocator_type::template rebind<
+	node_pointer>::other::pointer
+      entry_pointer;
+
+      typedef
+      typename allocator_type::template rebind<
+	node_pointer>::other::const_pointer
+      const_entry_pointer;
+
+      enum
+	{
+	  max_entries = sizeof(size_type) << 3
+	};
+
+    public:
+      typedef node_pointer entry;
+
+      typedef const_entry_pointer const_iterator;
+
+    public:
+      rc();
+
+      rc(const PB_DS_CLASS_C_DEC& other);
+
+      inline void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      inline void
+      push(entry p_nd);
+
+      inline node_pointer
+      top() const;
+
+      inline void
+      pop();
+
+      inline bool
+      empty() const;
+
+      inline size_type
+      size() const;
+
+      void
+      clear();
+
+      const const_iterator
+      begin() const;
+
+      const const_iterator
+      end() const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+      node_pointer m_a_entries[max_entries];
+
+      size_type m_over_top;
+    };
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    rc() : m_over_top(0)
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    PB_DS_CLASS_C_DEC::
+    rc(const PB_DS_CLASS_C_DEC& other) : m_over_top(0)
+    { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    swap(PB_DS_CLASS_C_DEC& other)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+      const size_type over_top = std::max(m_over_top, other.m_over_top);
+
+      for (size_type i = 0; i < over_top; ++i)
+	std::swap(m_a_entries[i], other.m_a_entries[i]);
+
+      std::swap(m_over_top, other.m_over_top);
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+     }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    push(entry p_nd)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries);
+      m_a_entries[m_over_top++] = p_nd;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline void
+    PB_DS_CLASS_C_DEC::
+    pop()
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ASSERT(!empty());
+      --m_over_top;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::node_pointer
+    PB_DS_CLASS_C_DEC::
+    top() const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ASSERT(!empty());
+      return *(m_a_entries + m_over_top - 1);
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline bool
+    PB_DS_CLASS_C_DEC::
+    empty() const
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return m_over_top == 0;
+    }
+
+    PB_DS_CLASS_T_DEC
+    inline typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    size() const
+    { return m_over_top; }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    clear()
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      m_over_top = 0;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+    PB_DS_CLASS_T_DEC
+    const typename PB_DS_CLASS_C_DEC::const_iterator
+    PB_DS_CLASS_C_DEC::
+    begin() const
+    { return& m_a_entries[0]; }
+
+    PB_DS_CLASS_T_DEC
+    const typename PB_DS_CLASS_C_DEC::const_iterator
+    PB_DS_CLASS_C_DEC::
+    end() const
+    { return& m_a_entries[m_over_top]; }
+
+#ifdef _GLIBCXX_DEBUG
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    assert_valid() const
+    { _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries); }
+#endif 
+
+#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    trace() const
+    {
+      std::cout << "rc" << std::endl;
+      for (size_type i = 0; i < m_over_top; ++i)
+	std::cerr << m_a_entries[i] << std::endl;
+      std::cout << std::endl;
+    }
+#endif 
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+} // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
new file mode 100644
index 000000000..762e29b39
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
@@ -0,0 +1,198 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file rc_binomial_heap_.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+/*
+ * Redundant-counter binomial heap.
+ */
+
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/rc.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    rc_binomial_heap_<Value_Type, Cmp_Fn, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
+
+#define PB_DS_RC_C_DEC \
+    rc<typename PB_DS_BASE_C_DEC::node, Allocator>
+
+    /**
+     * class description = "8y|\|0|\/|i41 h34p 74813">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class rc_binomial_heap_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+
+      typedef typename base_type::node_pointer node_pointer;
+
+      typedef typename base_type::const_node_pointer const_node_pointer;
+
+      typedef PB_DS_RC_C_DEC rc_t;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef typename base_type::pointer pointer;
+
+      typedef typename base_type::const_pointer const_pointer;
+
+      typedef typename base_type::reference reference;
+
+      typedef typename base_type::const_reference const_reference;
+
+      typedef typename base_type::const_point_iterator const_point_iterator;
+
+      typedef typename base_type::point_iterator point_iterator;
+
+      typedef typename base_type::const_iterator const_iterator;
+
+      typedef typename base_type::iterator iterator;
+
+      typedef typename base_type::cmp_fn cmp_fn;
+
+      typedef typename base_type::allocator_type allocator_type;
+
+    public:
+
+      rc_binomial_heap_();
+
+      rc_binomial_heap_(const Cmp_Fn& r_cmp_fn);
+
+      rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      ~rc_binomial_heap_();
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      inline point_iterator
+      push(const_reference r_val);
+
+      void
+      modify(point_iterator it, const_reference r_new_val);
+
+      inline void
+      pop();
+
+      void
+      erase(point_iterator it);
+
+      inline void
+      clear();
+
+      template<typename Pred>
+      size_type
+      erase_if(Pred pred);
+
+      template<typename Pred>
+      void
+      split(Pred pred, PB_DS_CLASS_C_DEC& other);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+#endif 
+
+#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+
+      inline node_pointer
+      link_with_next_sibling(node_pointer p_nd);
+
+      void
+      make_0_exposed();
+
+      void
+      make_binomial_heap();
+
+#ifdef _GLIBCXX_DEBUG
+      static const_node_pointer
+      next_2_pointer(const_node_pointer p_nd);
+
+      static const_node_pointer
+      next_after_0_pointer(const_node_pointer p_nd);
+#endif 
+
+    private:
+      rc_t m_rc;
+    };
+
+#include <ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+
+#undef PB_DS_CLASS_T_DEC
+
+#undef PB_DS_BASE_C_DEC
+
+#undef PB_DS_RC_C_DEC
+  } // namespace detail
+} // namespace __gnu_pbds
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..26965aec8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
@@ -0,0 +1,81 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+void
+PB_DS_CLASS_C_DEC::
+split(Pred pred, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    make_binomial_heap();
+  other.make_binomial_heap();
+
+  base_type::split(pred, other);
+
+  base_type::find_max();
+  other.find_max();
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    make_binomial_heap();
+  other.make_binomial_heap();
+
+  base_type::join(other);
+
+  base_type::find_max();
+  other.find_max();
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
new file mode 100644
index 000000000..1fb3b8bd4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains an implementation for rc_binomial_heap_.
+ */
+
+#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  base_type::trace();
+
+  m_rc.trace();
+}
+
+#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
new file mode 100644
index 000000000..94cd515e3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
@@ -0,0 +1,211 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file cc_hash_max_collision_check_resize_trigger_imp.hpp
+ * Contains a resize trigger implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+cc_hash_max_collision_check_resize_trigger(float load) :
+  m_load(load),
+  m_size(0),
+  m_num_col(0),
+  m_max_col(0),
+  m_resize_needed(false)
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_start()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_collision()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_end()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_start()
+{ m_num_col = 0; }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_collision()
+{ ++m_num_col; }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_end()
+{ calc_resize_needed(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_start()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_collision()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_end()
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_inserted(size_type)
+{ }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erased(size_type)
+{ m_resize_needed = true; }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_cleared()
+{ m_resize_needed = false; }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_resize_needed() const
+{ return m_resize_needed; }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_grow_needed(size_type /*size*/, size_type /*num_used_e*/) const
+{ return m_num_col >= m_max_col; }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_resized(size_type new_size)
+{
+  m_size = new_size;
+
+#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
+  std::cerr << "chmccrt::notify_resized " 
+	    << static_cast<unsigned long>(new_size) << std::endl;
+#endif 
+
+  calc_max_num_coll();
+  calc_resize_needed();
+  m_num_col = 0;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+calc_max_num_coll()
+{
+  // max_col <-- \sqrt{2 load \ln( 2 m \ln( m ) ) }
+  const double ln_arg = 2 * m_size * std::log(double(m_size));
+  m_max_col = size_type(std::ceil(std::sqrt(2 * m_load * std::log(ln_arg))));
+
+#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
+  std::cerr << "chmccrt::calc_max_num_coll " 
+	    << static_cast<unsigned long>(m_size) <<    "    " 
+	    << static_cast<unsigned long>(m_max_col) << std::endl;
+#endif 
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_externally_resized(size_type new_size)
+{ notify_resized(new_size); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  std::swap(m_load, other.m_load);
+  std::swap(m_size, other.m_size);
+  std::swap(m_num_col, other.m_num_col);
+  std::swap(m_max_col, other.m_max_col);
+  std::swap(m_resize_needed, other.m_resize_needed);
+}
+
+PB_DS_CLASS_T_DEC
+inline float
+PB_DS_CLASS_C_DEC::
+get_load() const
+{
+  PB_DS_STATIC_ASSERT(access, external_load_access);
+  return m_load;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+calc_resize_needed()
+{ m_resize_needed = m_resize_needed || m_num_col >= m_max_col; }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+set_load(float load)
+{
+  PB_DS_STATIC_ASSERT(access, external_load_access);
+  m_load = load;
+  calc_max_num_coll();
+  calc_resize_needed();
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
new file mode 100644
index 000000000..b58f2ec9d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_exponential_size_policy_imp.hpp
+ * Contains a resize size policy implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+hash_exponential_size_policy(size_type start_size, size_type grow_factor) :
+  m_start_size(start_size),
+  m_grow_factor(grow_factor)
+{ }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  std::swap(m_start_size, other.m_start_size);
+  std::swap(m_grow_factor, other.m_grow_factor);
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_nearest_larger_size(size_type size) const
+{
+  size_type ret = m_start_size;
+  while (ret <= size)
+    {
+      const size_type next_ret = ret*  m_grow_factor;
+      if (next_ret < ret)
+	__throw_insert_error();
+      ret = next_ret;
+    }
+  return ret;
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_nearest_smaller_size(size_type size) const
+{
+  size_type ret = m_start_size;
+  while (true)
+    {
+      const size_type next_ret = ret*  m_grow_factor;
+      if (next_ret < ret)
+	__throw_resize_error();
+      if (next_ret >= size)
+	return (ret);
+      ret = next_ret;
+    }
+  return ret;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
new file mode 100644
index 000000000..1418bbe45
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
@@ -0,0 +1,283 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_load_check_resize_trigger_imp.hpp
+ * Contains a resize trigger implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+hash_load_check_resize_trigger(float load_min, float load_max)
+: m_load_min(load_min), m_load_max(load_max), m_next_shrink_size(0),
+  m_next_grow_size(0), m_resize_needed(false)
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_start()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_collision()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_end()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_start()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_collision()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_end()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_start()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_collision()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_end()
+{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_inserted(size_type num_entries)
+{
+  m_resize_needed = (num_entries >= m_next_grow_size);
+  size_base::set_size(num_entries);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erased(size_type num_entries)
+{
+  size_base::set_size(num_entries);
+  m_resize_needed = num_entries <= m_next_shrink_size;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_resize_needed() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return m_resize_needed;
+}
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_grow_needed(size_type /*size*/, size_type num_entries) const
+{
+  _GLIBCXX_DEBUG_ASSERT(m_resize_needed);
+  return num_entries >= m_next_grow_size;
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~hash_load_check_resize_trigger() { }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_resized(size_type new_size)
+{
+  m_resize_needed = false;
+  m_next_grow_size = size_type(m_load_max * new_size - 1);
+  m_next_shrink_size = size_type(m_load_min * new_size);
+
+#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
+  std::cerr << "hlcrt::notify_resized "  << std::endl
+	    << "1 " << new_size << std::endl
+	    << "2 " << m_load_min << std::endl
+	    << "3 " << m_load_max << std::endl
+	    << "4 " << m_next_shrink_size << std::endl
+	    << "5 " << m_next_grow_size << std::endl;
+#endif
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_externally_resized(size_type new_size)
+{
+  m_resize_needed = false;
+  size_type new_grow_size = size_type(m_load_max * new_size - 1);
+  size_type new_shrink_size = size_type(m_load_min * new_size);
+
+#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
+  std::cerr << "hlcrt::notify_externally_resized "  << std::endl
+	    << "1 " << new_size << std::endl
+	    << "2 " << m_load_min << std::endl
+	    << "3 " << m_load_max << std::endl
+	    << "4 " << m_next_shrink_size << std::endl
+	    << "5 " << m_next_grow_size << std::endl
+	    << "6 " << new_shrink_size << std::endl
+	    << "7 " << new_grow_size << std::endl;
+#endif
+
+  if (new_grow_size >= m_next_grow_size)
+    {
+      _GLIBCXX_DEBUG_ASSERT(new_shrink_size >= m_next_shrink_size);
+      m_next_grow_size = new_grow_size;
+    }
+  else
+    {
+      _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size);
+      m_next_shrink_size = new_shrink_size;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_cleared()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  size_base::set_size(0);
+  m_resize_needed = (0 < m_next_shrink_size);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+  size_base::swap(other);
+  std::swap(m_load_min, other.m_load_min);
+  std::swap(m_load_max, other.m_load_max);
+  std::swap(m_resize_needed, other.m_resize_needed);
+  std::swap(m_next_grow_size, other.m_next_grow_size);
+  std::swap(m_next_shrink_size, other.m_next_shrink_size);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+inline std::pair<float, float>
+PB_DS_CLASS_C_DEC::
+get_loads() const
+{
+  PB_DS_STATIC_ASSERT(access, external_load_access);
+  return std::make_pair(m_load_min, m_load_max);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+set_loads(std::pair<float, float> load_pair)
+{
+  PB_DS_STATIC_ASSERT(access, external_load_access);
+  const float old_load_min = m_load_min;
+  const float old_load_max = m_load_max;
+  const size_type old_next_shrink_size = m_next_shrink_size;
+  const size_type old_next_grow_size = m_next_grow_size;
+  const bool old_resize_needed = m_resize_needed;
+
+  __try
+    {
+      m_load_min = load_pair.first;
+      m_load_max = load_pair.second;
+      do_resize(static_cast<size_type>(size_base::get_size() / ((m_load_min + m_load_max) / 2)));
+    }
+  __catch(...)
+    {
+      m_load_min = old_load_min;
+      m_load_max = old_load_max;
+      m_next_shrink_size = old_next_shrink_size;
+      m_next_grow_size = old_next_grow_size;
+      m_resize_needed = old_resize_needed;
+      __throw_exception_again;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+do_resize(size_type)
+{ std::abort(); }
+
+#ifdef _GLIBCXX_DEBUG
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  _GLIBCXX_DEBUG_ASSERT(m_load_max > m_load_min);
+  _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= m_next_shrink_size);
+}
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
new file mode 100644
index 000000000..c29b3d5be
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
@@ -0,0 +1,94 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_load_check_resize_trigger_size_base.hpp
+ * Contains an base holding size for some resize policies.
+ */
+
+#ifndef PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP
+#define PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    // Primary template.
+    template<typename Size_Type, bool Hold_Size>
+    class hash_load_check_resize_trigger_size_base;
+
+    // Specializations.
+    template<typename Size_Type>
+    class hash_load_check_resize_trigger_size_base<Size_Type, true>
+    {
+    protected:
+      typedef Size_Type size_type;
+
+      hash_load_check_resize_trigger_size_base(): m_size(0)
+      { }
+
+      inline void
+      swap(hash_load_check_resize_trigger_size_base& other)
+      { std::swap(m_size, other.m_size); }
+
+      inline void
+      set_size(size_type size)
+      { m_size = size; }
+
+      inline size_type
+      get_size() const
+      { return m_size; }
+
+    private:
+      size_type m_size;
+    };
+
+    template<typename Size_Type>
+    class hash_load_check_resize_trigger_size_base<Size_Type, false>
+    {
+    protected:
+      typedef Size_Type size_type;
+
+    protected:
+      inline void
+      swap(hash_load_check_resize_trigger_size_base& other) { }
+
+      inline void
+      set_size(size_type size) { }
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
new file mode 100644
index 000000000..c816cfdea
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
@@ -0,0 +1,161 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_prime_size_policy_imp.hpp
+ * Contains a resize size policy implementation.
+ */
+
+#pragma GCC system_header
+
+namespace detail
+{
+  enum
+    {
+      num_distinct_sizes_32_bit = 30,
+      num_distinct_sizes_64_bit = 62,
+      num_distinct_sizes = sizeof(std::size_t) != 8 ? 
+            num_distinct_sizes_32_bit : num_distinct_sizes_64_bit,	
+    };
+
+  // Originally taken from the SGI implementation; acknowledged in the docs.
+  // Further modified (for 64 bits) from tr1's hashtable.
+  static const std::size_t g_a_sizes[num_distinct_sizes_64_bit] =
+    {
+      /* 0     */              5ul,
+      /* 1     */              11ul, 
+      /* 2     */              23ul, 
+      /* 3     */              47ul, 
+      /* 4     */              97ul, 
+      /* 5     */              199ul, 
+      /* 6     */              409ul, 
+      /* 7     */              823ul, 
+      /* 8     */              1741ul, 
+      /* 9     */              3469ul, 
+      /* 10    */              6949ul, 
+      /* 11    */              14033ul, 
+      /* 12    */              28411ul, 
+      /* 13    */              57557ul, 
+      /* 14    */              116731ul, 
+      /* 15    */              236897ul,
+      /* 16    */              480881ul, 
+      /* 17    */              976369ul,
+      /* 18    */              1982627ul, 
+      /* 19    */              4026031ul,
+      /* 20    */              8175383ul, 
+      /* 21    */              16601593ul, 
+      /* 22    */              33712729ul,
+      /* 23    */              68460391ul, 
+      /* 24    */              139022417ul, 
+      /* 25    */              282312799ul, 
+      /* 26    */              573292817ul, 
+      /* 27    */              1164186217ul,
+      /* 28    */              2364114217ul, 
+      /* 29    */              4294967291ul,
+      /* 30    */ (std::size_t)8589934583ull,
+      /* 31    */ (std::size_t)17179869143ull,
+      /* 32    */ (std::size_t)34359738337ull,
+      /* 33    */ (std::size_t)68719476731ull,
+      /* 34    */ (std::size_t)137438953447ull,
+      /* 35    */ (std::size_t)274877906899ull,
+      /* 36    */ (std::size_t)549755813881ull,
+      /* 37    */ (std::size_t)1099511627689ull,
+      /* 38    */ (std::size_t)2199023255531ull,
+      /* 39    */ (std::size_t)4398046511093ull,
+      /* 40    */ (std::size_t)8796093022151ull,
+      /* 41    */ (std::size_t)17592186044399ull,
+      /* 42    */ (std::size_t)35184372088777ull,
+      /* 43    */ (std::size_t)70368744177643ull,
+      /* 44    */ (std::size_t)140737488355213ull,
+      /* 45    */ (std::size_t)281474976710597ull,
+      /* 46    */ (std::size_t)562949953421231ull, 
+      /* 47    */ (std::size_t)1125899906842597ull,
+      /* 48    */ (std::size_t)2251799813685119ull, 
+      /* 49    */ (std::size_t)4503599627370449ull,
+      /* 50    */ (std::size_t)9007199254740881ull, 
+      /* 51    */ (std::size_t)18014398509481951ull,
+      /* 52    */ (std::size_t)36028797018963913ull, 
+      /* 53    */ (std::size_t)72057594037927931ull,
+      /* 54    */ (std::size_t)144115188075855859ull,
+      /* 55    */ (std::size_t)288230376151711717ull,
+      /* 56    */ (std::size_t)576460752303423433ull,
+      /* 57    */ (std::size_t)1152921504606846883ull,
+      /* 58    */ (std::size_t)2305843009213693951ull,
+      /* 59    */ (std::size_t)4611686018427387847ull,
+      /* 60    */ (std::size_t)9223372036854775783ull,
+      /* 61    */ (std::size_t)18446744073709551557ull,
+    };
+
+} // namespace detail
+
+PB_DS_CLASS_T_DEC
+inline
+PB_DS_CLASS_C_DEC::
+hash_prime_size_policy(size_type n) : m_start_size(n)
+{ m_start_size = get_nearest_larger_size(n); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{ std::swap(m_start_size, other.m_start_size); }
+
+PB_DS_CLASS_T_DEC
+inline PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_nearest_larger_size(size_type n) const
+{
+  const std::size_t* const p_upper = std::upper_bound(detail::g_a_sizes, 
+		     detail::g_a_sizes + detail::num_distinct_sizes, n);
+
+  if (p_upper == detail::g_a_sizes + detail::num_distinct_sizes)
+    __throw_resize_error();
+  return *p_upper;
+}
+
+PB_DS_CLASS_T_DEC
+inline PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_nearest_smaller_size(size_type n) const
+{
+  const std::size_t* p_lower = std::lower_bound(detail::g_a_sizes, 
+		       detail::g_a_sizes + detail::num_distinct_sizes, n);
+
+  if (*p_lower >= n &&  p_lower != detail::g_a_sizes)
+    --p_lower;
+  if (*p_lower < m_start_size)
+    return m_start_size;
+  return *p_lower;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
new file mode 100644
index 000000000..39cf7dc9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
@@ -0,0 +1,249 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_standard_resize_policy_imp.hpp
+ * Contains a resize policy implementation.
+ */
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+hash_standard_resize_policy() 
+: m_size(Size_Policy::get_nearest_larger_size(1))
+{ trigger_policy_base::notify_externally_resized(m_size); }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+hash_standard_resize_policy(const Size_Policy& r_size_policy) 
+: Size_Policy(r_size_policy), m_size(Size_Policy::get_nearest_larger_size(1))
+{ trigger_policy_base::notify_externally_resized(m_size); }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+hash_standard_resize_policy(const Size_Policy& r_size_policy, 
+			    const Trigger_Policy& r_trigger_policy) 
+: Size_Policy(r_size_policy), Trigger_Policy(r_trigger_policy),
+  m_size(Size_Policy::get_nearest_larger_size(1))
+{ trigger_policy_base::notify_externally_resized(m_size); }
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~hash_standard_resize_policy()
+{ }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  trigger_policy_base::swap(other);
+  size_policy_base::swap(other);
+  std::swap(m_size, other.m_size);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_start()
+{ trigger_policy_base::notify_find_search_start(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_collision()
+{ trigger_policy_base::notify_find_search_collision(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_find_search_end()
+{ trigger_policy_base::notify_find_search_end(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_start()
+{ trigger_policy_base::notify_insert_search_start(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_collision()
+{ trigger_policy_base::notify_insert_search_collision(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_insert_search_end()
+{ trigger_policy_base::notify_insert_search_end(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_start()
+{ trigger_policy_base::notify_erase_search_start(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_collision()
+{ trigger_policy_base::notify_erase_search_collision(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erase_search_end()
+{ trigger_policy_base::notify_erase_search_end(); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_inserted(size_type num_e)
+{ trigger_policy_base::notify_inserted(num_e); }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+notify_erased(size_type num_e)
+{ trigger_policy_base::notify_erased(num_e); }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_cleared()
+{ trigger_policy_base::notify_cleared(); }
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+is_resize_needed() const
+{ return trigger_policy_base::is_resize_needed(); }
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_new_size(size_type size, size_type num_used_e) const
+{
+  if (trigger_policy_base::is_grow_needed(size, num_used_e))
+    return size_policy_base::get_nearest_larger_size(size);
+  return size_policy_base::get_nearest_smaller_size(size);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+notify_resized(size_type new_size)
+{
+  trigger_policy_base::notify_resized(new_size);
+  m_size = new_size;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+get_actual_size() const
+{
+  PB_DS_STATIC_ASSERT(access, external_size_access);
+  return m_size;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+resize(size_type new_size)
+{
+  PB_DS_STATIC_ASSERT(access, external_size_access);
+  size_type actual_size = size_policy_base::get_nearest_larger_size(1);
+  while (actual_size < new_size)
+    {
+      const size_type pot = size_policy_base::get_nearest_larger_size(actual_size);
+
+      if (pot == actual_size && pot < new_size)
+	__throw_resize_error();
+      actual_size = pot;
+    }
+
+  if (actual_size > 0)
+    --actual_size;
+
+  const size_type old_size = m_size;
+  __try
+    {
+      do_resize(actual_size - 1);
+    }
+  __catch(insert_error& )
+    {
+      m_size = old_size;
+      __throw_resize_error();
+    }
+  __catch(...)
+    {
+      m_size = old_size;
+      __throw_exception_again;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+do_resize(size_type)
+{
+  // Do nothing
+}
+
+PB_DS_CLASS_T_DEC
+Trigger_Policy& 
+PB_DS_CLASS_C_DEC::
+get_trigger_policy()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Trigger_Policy& 
+PB_DS_CLASS_C_DEC::
+get_trigger_policy() const
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+Size_Policy& 
+PB_DS_CLASS_C_DEC::
+get_size_policy()
+{ return *this; }
+
+PB_DS_CLASS_T_DEC
+const Size_Policy& 
+PB_DS_CLASS_C_DEC::
+get_size_policy() const
+{ return *this; }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
new file mode 100644
index 000000000..33aecdf5f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_resize_policy.hpp
+ * Contains a sample resize policy for hash tables.
+ */
+
+#ifndef PB_DS_SAMPLE_RESIZE_POLICY_HPP
+#define PB_DS_SAMPLE_RESIZE_POLICY_HPP
+
+// A sample resize policy.
+class sample_resize_policy
+{
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+  // Default constructor.
+  sample_resize_policy();
+
+  // Copy constructor.
+  sample_range_hashing(const sample_resize_policy& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_resize_policy& other);
+
+protected:
+
+  // Notifies a search started.
+  inline void
+  notify_insert_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_insert_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_insert_search_end();
+
+  // Notifies a search started.
+  inline void
+  notify_find_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_find_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_find_search_end();
+
+  // Notifies a search started.
+  inline void
+  notify_erase_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_erase_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_erase_search_end();
+
+  // Notifies an element was inserted.
+  inline void
+  notify_inserted(size_type num_e);
+
+  // Notifies an element was erased.
+  inline void
+  notify_erased(size_type num_e);
+
+  // Notifies the table was cleared.
+  void
+  notify_cleared();
+
+  // Notifies the table was resized to new_size.
+  void
+  notify_resized(size_type new_size);
+
+  // Queries whether a resize is needed.
+  inline bool
+  is_resize_needed() const;
+
+  // Queries what the new size should be.
+  size_type
+  get_new_size(size_type size, size_type num_used_e) const;
+};
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
new file mode 100644
index 000000000..963c5530a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_resize_trigger.hpp
+ * Contains a sample resize trigger policy class.
+ */
+
+#ifndef PB_DS_SAMPLE_RESIZE_TRIGGER_HPP
+#define PB_DS_SAMPLE_RESIZE_TRIGGER_HPP
+
+// A sample resize trigger policy.
+class sample_resize_trigger
+{
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+  // Default constructor.
+  sample_resize_trigger();
+
+  // Copy constructor.
+  sample_range_hashing(const sample_resize_trigger& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_resize_trigger& other);
+
+protected:
+
+  // Notifies a search started.
+  inline void
+  notify_insert_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_insert_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_insert_search_end();
+
+  // Notifies a search started.
+  inline void
+  notify_find_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_find_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_find_search_end();
+
+  // Notifies a search started.
+  inline void
+  notify_erase_search_start();
+
+  // Notifies a search encountered a collision.
+  inline void
+  notify_erase_search_collision();
+
+  // Notifies a search ended.
+  inline void
+  notify_erase_search_end();
+
+  // Notifies an element was inserted. the total number of entries in
+  // the table is num_entries.
+  inline void
+  notify_inserted(size_type num_entries);
+
+  // Notifies an element was erased.
+  inline void
+  notify_erased(size_type num_entries);
+
+  // Notifies the table was cleared.
+  void
+  notify_cleared();
+
+  // Notifies the table was resized as a result of this object's
+  // signifying that a resize is needed.
+  void
+  notify_resized(size_type new_size);
+
+  // Notifies the table was resized externally.
+  void
+  notify_externally_resized(size_type new_size);
+
+  // Queries whether a resize is needed.
+  inline bool
+  is_resize_needed() const;
+
+  // Queries whether a grow is needed.
+  inline bool
+  is_grow_needed(size_type size, size_type num_entries) const;
+
+private:
+
+  // Resizes to new_size.
+  virtual void
+  do_resize(size_type new_size);
+};
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
new file mode 100644
index 000000000..9b3ba031c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_size_policy.hpp
+ * Contains a sample size resize-policy.
+ */
+
+#ifndef PB_DS_SAMPLE_SIZE_POLICY_HPP
+#define PB_DS_SAMPLE_SIZE_POLICY_HPP
+
+// A sample size policy.
+class sample_size_policy
+{
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+  // Default constructor.
+  sample_size_policy();
+
+  // Copy constructor.
+  sample_range_hashing(const sample_size_policy& other);
+
+  // Swaps content.
+  inline void
+  swap(sample_size_policy& other);
+
+protected:
+
+  // Given a __size size, returns a __size that is larger.
+  inline size_type
+  get_nearest_larger_size(size_type size) const;
+
+  // Given a __size size, returns a __size that is smaller.
+  inline size_type
+  get_nearest_smaller_size(size_type size) const;
+};
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..222589532
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,102 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    insert(*(first_it++));
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME()
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
+  base_type(r_cmp_fn)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
+  base_type(r_cmp_fn, r_node_update)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
+  base_type(other)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  base_type::swap(other);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{ base_type::m_p_head->m_special = true; }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
new file mode 100644
index 000000000..385623f41
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  base_type::assert_valid();
+  const node_pointer p_head = base_type::m_p_head;
+  assert_special_imp(p_head);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_special_imp(const node_pointer p_nd) const
+{
+  if (p_nd == 0)
+    return;
+
+  if (p_nd == base_type::m_p_head)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_special);
+      assert_special_imp(p_nd->m_p_parent);
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(!p_nd->m_special);
+  assert_special_imp(p_nd->m_p_left);
+  assert_special_imp(p_nd->m_p_right);
+}
+
+#endif 
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
new file mode 100644
index 000000000..adfabb93e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
@@ -0,0 +1,157 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline bool
+PB_DS_CLASS_C_DEC::
+erase(const_key_reference r_key)
+{
+  point_iterator it = find(r_key);
+  if (it == base_type::end())
+    return false;
+  erase(it);
+  return true;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+erase(iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  if (it == base_type::end())
+    return it;
+  iterator ret_it = it;
+  ++ret_it;
+  erase_node(it.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::reverse_iterator
+PB_DS_CLASS_C_DEC::
+erase(reverse_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  if (it.m_p_nd == base_type::m_p_head)
+    return (it);
+  reverse_iterator ret_it = it;
+  ++ret_it;
+  erase_node(it.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ret_it;
+}
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  size_type num_ersd = 0;
+  iterator it = base_type::begin();
+  while (it != base_type::end())
+    {
+      if (pred(*it))
+        {
+	  ++num_ersd;
+	  it = erase(it);
+        }
+      else
+	++it;
+    }
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  return num_ersd;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase_node(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  splay(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent);
+
+  node_pointer p_l = p_nd->m_p_left;
+  node_pointer p_r = p_nd->m_p_right;
+
+  base_type::update_min_max_for_erased_node(p_nd);
+  base_type::actual_erase_node(p_nd);
+  if (p_r == 0)
+    {
+      base_type::m_p_head->m_p_parent = p_l;
+      if (p_l != 0)
+	p_l->m_p_parent = base_type::m_p_head;
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      return;
+    }
+
+  node_pointer p_target_r = leftmost(p_r);
+  _GLIBCXX_DEBUG_ASSERT(p_target_r != 0);
+  p_r->m_p_parent = base_type::m_p_head;
+  base_type::m_p_head->m_p_parent = p_r;
+  splay(p_target_r);
+
+  _GLIBCXX_DEBUG_ONLY(p_target_r->m_p_left = 0);
+  _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_parent == this->m_p_head);
+  _GLIBCXX_DEBUG_ASSERT(this->m_p_head->m_p_parent == p_target_r);
+
+  p_target_r->m_p_left = p_l;
+  if (p_l != 0)
+    p_l->m_p_parent = p_target_r;
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  apply_update(p_target_r, (node_update* )this);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+leftmost(node_pointer p_nd)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  while (p_nd->m_p_left != 0)
+    p_nd = p_nd->m_p_left;
+  return p_nd;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
new file mode 100644
index 000000000..9447011bd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
@@ -0,0 +1,99 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key)
+{
+  node_pointer p_found = find_imp(r_key);
+  if (p_found != base_type::m_p_head)
+    splay(p_found);
+  return point_iterator(p_found);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_point_iterator
+PB_DS_CLASS_C_DEC::
+find(const_key_reference r_key) const
+{
+  const node_pointer p_found = find_imp(r_key);
+  if (p_found != base_type::m_p_head)
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->splay(p_found);
+  return point_iterator(p_found);
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+find_imp(const_key_reference r_key)
+{
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
+  node_pointer p_nd = base_type::m_p_head->m_p_parent;
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
+      {
+	if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
+	  return p_nd;
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+  return base_type::m_p_head;
+}
+
+PB_DS_CLASS_T_DEC
+inline const typename PB_DS_CLASS_C_DEC::node_pointer
+PB_DS_CLASS_C_DEC::
+find_imp(const_key_reference r_key) const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  node_pointer p_nd = base_type::m_p_head->m_p_parent;
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
+      {
+	if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
+	  return p_nd;
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+  return base_type::m_p_head;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
new file mode 100644
index 000000000..636b9ab25
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file info_fn_imps.hpp
+ * Contains an implementation.
+ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
new file mode 100644
index 000000000..69ab58ba3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert(const_reference r_value)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  std::pair<point_iterator, bool> ins_pair = insert_leaf_imp(r_value);
+  ins_pair.first.m_p_nd->m_special = false;
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  splay(ins_pair.first.m_p_nd);
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  return ins_pair;
+}
+
+PB_DS_CLASS_T_DEC
+inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
+PB_DS_CLASS_C_DEC::
+insert_leaf_imp(const_reference r_value)
+{
+  _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
+  if (base_type::m_size == 0)
+    return std::make_pair(base_type::insert_imp_empty(r_value), true);
+
+  node_pointer p_nd = base_type::m_p_head->m_p_parent;
+  node_pointer p_pot = base_type::m_p_head;
+
+  while (p_nd != 0)
+    if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), PB_DS_V2F(r_value)))
+      {
+	if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), PB_DS_V2F(p_nd->m_value)))
+	  {
+	    return std::make_pair(point_iterator(p_nd), false);
+	  }
+	p_pot = p_nd;
+	p_nd = p_nd->m_p_left;
+      }
+    else
+      p_nd = p_nd->m_p_right;
+
+  if (p_pot == base_type::m_p_head)
+    return std::make_pair(base_type::insert_leaf_new(r_value, base_type::m_p_head->m_p_right, false), true);
+
+  _GLIBCXX_DEBUG_ONLY(base_type::check_key_does_not_exist(PB_DS_V2F(r_value)));
+
+  p_nd = p_pot->m_p_left;
+  if (p_nd == 0)
+    return (std::make_pair(base_type::insert_leaf_new(r_value, p_pot, true), true));
+
+  while (p_nd->m_p_right != 0)
+    p_nd = p_nd->m_p_right;
+
+  return std::make_pair(insert_leaf_new(r_value, p_nd, false), true);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/node.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/node.hpp
new file mode 100644
index 000000000..fbf398d04
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/node.hpp
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node.hpp
+ * Contains an implementation struct for splay_tree_'s node.
+ */
+
+#ifndef PB_DS_SPLAY_TREE_NODE_HPP
+#define PB_DS_SPLAY_TREE_NODE_HPP
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Value_Type, class Metadata, class Allocator>
+    struct splay_tree_node_
+    {
+    public:
+      typedef Value_Type value_type;
+      typedef Metadata metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+      splay_tree_node_<Value_Type, Metadata, Allocator> >::other::pointer
+      node_pointer;
+
+      typedef
+      typename Allocator::template rebind<metadata_type>::other::reference
+      metadata_reference;
+
+      typedef
+      typename Allocator::template rebind<metadata_type>::other::const_reference
+      const_metadata_reference;
+
+#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
+      void
+      trace() const
+      { std::cout << PB_DS_V2F(m_value) << "(" << m_metadata << ")"; }
+#endif
+
+      inline bool
+      special() const
+      { return m_special; }
+
+      inline const_metadata_reference
+      get_metadata() const
+      { return m_metadata; }
+
+      inline metadata_reference
+      get_metadata()
+      { return m_metadata; }
+
+      value_type m_value;
+      bool m_special;
+      node_pointer m_p_left;
+      node_pointer m_p_right;
+      node_pointer m_p_parent;
+      metadata_type m_metadata;
+    };
+
+    template<typename Value_Type, typename Allocator>
+    struct splay_tree_node_<Value_Type, null_node_metadata, Allocator>
+    {
+    public:
+      typedef Value_Type value_type;
+      typedef null_node_metadata metadata_type;
+
+      typedef
+      typename Allocator::template rebind<
+      splay_tree_node_<Value_Type, null_node_metadata, Allocator> >::other::pointer
+      node_pointer;
+
+      inline bool
+      special() const
+      { return m_special; }
+
+#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
+      void
+      trace() const
+      { std::cout << PB_DS_V2F(m_value); }
+#endif 
+
+      node_pointer m_p_left;
+      node_pointer m_p_right;
+      node_pointer m_p_parent;
+      value_type m_value;
+      bool m_special;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
new file mode 100644
index 000000000..f9bae2263
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
@@ -0,0 +1,283 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file splay_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+splay(node_pointer p_nd)
+{
+  while (p_nd->m_p_parent != base_type::m_p_head)
+    {
+#ifdef _GLIBCXX_DEBUG
+      {
+	node_pointer p_head = base_type::m_p_head;
+	assert_special_imp(p_head);
+      }
+#endif
+
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
+
+        if (p_nd->m_p_parent->m_p_parent == base_type::m_p_head)
+	  {
+            base_type::rotate_parent(p_nd);
+            _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent);
+	  }
+        else
+	  {
+            const node_pointer p_parent = p_nd->m_p_parent;
+            const node_pointer p_grandparent = p_parent->m_p_parent;
+
+#ifdef _GLIBCXX_DEBUG
+            const size_type total =
+	      base_type::recursive_count(p_grandparent);
+            _GLIBCXX_DEBUG_ASSERT(total >= 3);
+#endif 
+
+            if (p_parent->m_p_left == p_nd && 
+		p_grandparent->m_p_right == p_parent)
+	      splay_zig_zag_left(p_nd, p_parent, p_grandparent);
+            else if (p_parent->m_p_right == p_nd && 
+		     p_grandparent->m_p_left == p_parent)
+	      splay_zig_zag_right(p_nd, p_parent, p_grandparent);
+            else if (p_parent->m_p_left == p_nd && 
+		     p_grandparent->m_p_left == p_parent)
+	      splay_zig_zig_left(p_nd, p_parent, p_grandparent);
+            else
+	      splay_zig_zig_right(p_nd, p_parent, p_grandparent);
+            _GLIBCXX_DEBUG_ASSERT(total ==this->recursive_count(p_nd));
+	  }
+
+      _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
+  }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zig_zag_left(node_pointer p_nd, node_pointer p_parent, 
+		   node_pointer p_grandparent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
+
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
+
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd && 
+		        p_grandparent->m_p_right == p_parent);
+
+  splay_zz_start(p_nd, p_parent, p_grandparent);
+
+  node_pointer p_b = p_nd->m_p_right;
+  node_pointer p_c = p_nd->m_p_left;
+
+  p_nd->m_p_right = p_parent;
+  p_parent->m_p_parent = p_nd;
+
+  p_nd->m_p_left = p_grandparent;
+  p_grandparent->m_p_parent = p_nd;
+
+  p_parent->m_p_left = p_b;
+  if (p_b != 0)
+    p_b->m_p_parent = p_parent;
+
+  p_grandparent->m_p_right = p_c;
+  if (p_c != 0)
+    p_c->m_p_parent = p_grandparent;
+
+  splay_zz_end(p_nd, p_parent, p_grandparent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zig_zag_right(node_pointer p_nd, node_pointer p_parent, 
+		    node_pointer p_grandparent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
+
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
+
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd && 
+	  	        p_grandparent->m_p_left == p_parent);
+
+  splay_zz_start(p_nd, p_parent, p_grandparent);
+
+  node_pointer p_b = p_nd->m_p_left;
+  node_pointer p_c = p_nd->m_p_right;
+
+  p_nd->m_p_left = p_parent;
+  p_parent->m_p_parent = p_nd;
+
+  p_nd->m_p_right = p_grandparent;
+  p_grandparent->m_p_parent = p_nd;
+
+  p_parent->m_p_right = p_b;
+  if (p_b != 0)
+    p_b->m_p_parent = p_parent;
+
+  p_grandparent->m_p_left = p_c;
+  if (p_c != 0)
+    p_c->m_p_parent = p_grandparent;
+
+  splay_zz_end(p_nd, p_parent, p_grandparent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zig_zig_left(node_pointer p_nd, node_pointer p_parent, 
+		   node_pointer p_grandparent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
+
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
+
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd && 
+		     p_nd->m_p_parent->m_p_parent->m_p_left == p_nd->m_p_parent);
+
+  splay_zz_start(p_nd, p_parent, p_grandparent);
+
+  node_pointer p_b = p_nd->m_p_right;
+  node_pointer p_c = p_parent->m_p_right;
+
+  p_nd->m_p_right = p_parent;
+  p_parent->m_p_parent = p_nd;
+
+  p_parent->m_p_right = p_grandparent;
+  p_grandparent->m_p_parent = p_parent;
+
+  p_parent->m_p_left = p_b;
+  if (p_b != 0)
+    p_b->m_p_parent = p_parent;
+
+  p_grandparent->m_p_left = p_c;
+  if (p_c != 0)
+    p_c->m_p_parent = p_grandparent;
+
+  splay_zz_end(p_nd, p_parent, p_grandparent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zig_zig_right(node_pointer p_nd, node_pointer p_parent, 
+		    node_pointer p_grandparent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
+  _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd && 
+	          p_nd->m_p_parent->m_p_parent->m_p_right == p_nd->m_p_parent);
+
+  splay_zz_start(p_nd, p_parent, p_grandparent);
+
+  node_pointer p_b = p_nd->m_p_left;
+  node_pointer p_c = p_parent->m_p_left;
+
+  p_nd->m_p_left = p_parent;
+  p_parent->m_p_parent = p_nd;
+
+  p_parent->m_p_left = p_grandparent;
+  p_grandparent->m_p_parent = p_parent;
+
+  p_parent->m_p_right = p_b;
+  if (p_b != 0)
+    p_b->m_p_parent = p_parent;
+
+  p_grandparent->m_p_right = p_c;
+  if (p_c != 0)
+    p_c->m_p_parent = p_grandparent;
+
+  base_type::update_to_top(p_grandparent, (node_update* )this);
+  splay_zz_end(p_nd, p_parent, p_grandparent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zz_start(node_pointer p_nd,
+#ifdef _GLIBCXX_DEBUG
+	       node_pointer p_parent,
+#else 
+	       node_pointer /*p_parent*/,
+#endif
+	       node_pointer p_grandparent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_parent != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_grandparent != 0);
+
+  const bool grandparent_head = p_grandparent->m_p_parent == base_type::m_p_head;
+
+  if (grandparent_head)
+    {
+      base_type::m_p_head->m_p_parent = base_type::m_p_head->m_p_parent;
+      p_nd->m_p_parent = base_type::m_p_head;
+      return;
+    }
+
+  node_pointer p_greatgrandparent = p_grandparent->m_p_parent;
+
+  p_nd->m_p_parent = p_greatgrandparent;
+
+  if (p_grandparent == p_greatgrandparent->m_p_left)
+    p_greatgrandparent->m_p_left = p_nd;
+  else
+    p_greatgrandparent->m_p_right = p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+splay_zz_end(node_pointer p_nd, node_pointer p_parent, 
+	     node_pointer p_grandparent)
+{
+  if (p_nd->m_p_parent == base_type::m_p_head)
+    base_type::m_p_head->m_p_parent = p_nd;
+
+  apply_update(p_grandparent, (node_update* )this);
+  apply_update(p_parent, (node_update* )this);
+  apply_update(p_nd, (node_update* )this);
+
+  _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
new file mode 100644
index 000000000..8a2eb07cf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
@@ -0,0 +1,298 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file splay_tree_.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+/*
+ * This implementation uses an idea from the SGI STL (using a @a header node
+ *    which is needed for efficient iteration). Following is the SGI STL
+ *    copyright.
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.    Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.    It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.    Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.    It is provided "as is" without express or implied warranty.
+ *
+ *
+ */
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
+#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
+#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
+#endif 
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
+#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
+#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
+#endif 
+#endif 
+
+#include <utility>
+#include <vector>
+#include <assert.h>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+#define PB_DS_CLASS_T_DEC \
+    template<typename Key, typename Mapped, typename Cmp_Fn, \
+	     typename Node_And_It_Traits, typename Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_CLASS_NAME splay_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_CLASS_NAME splay_tree_no_data_
+#endif 
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_
+#endif 
+
+#define PB_DS_CLASS_C_DEC \
+    PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
+
+#define PB_DS_BASE_C_DEC \
+    PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
+
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+#define PB_DS_V2F(X) (X).first
+#define PB_DS_V2S(X) (X).second
+#define PB_DS_EP2VP(X)& ((X)->m_value)
+#endif 
+
+#ifdef PB_DS_DATA_FALSE_INDICATOR
+#define PB_DS_V2F(X) (X)
+#define PB_DS_V2S(X) Mapped_Data()
+#define PB_DS_EP2VP(X)& ((X)->m_value.first)
+#endif 
+
+    // $p14y 7r33 7481.
+    template<typename Key, typename Mapped, typename Cmp_Fn,
+	     typename Node_And_It_Traits, typename Allocator>
+    class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC
+    {
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+      typedef typename base_type::node_pointer node_pointer;
+
+    public:
+      typedef Allocator allocator_type;
+      typedef typename Allocator::size_type size_type;
+      typedef typename Allocator::difference_type difference_type;
+      typedef Cmp_Fn cmp_fn;
+      typedef typename base_type::key_type key_type;
+      typedef typename base_type::key_pointer key_pointer;
+      typedef typename base_type::const_key_pointer const_key_pointer;
+      typedef typename base_type::key_reference key_reference;
+      typedef typename base_type::const_key_reference const_key_reference;
+      typedef typename base_type::mapped_type mapped_type;
+      typedef typename base_type::mapped_pointer mapped_pointer;
+      typedef typename base_type::const_mapped_pointer const_mapped_pointer;
+      typedef typename base_type::mapped_reference mapped_reference;
+      typedef typename base_type::const_mapped_reference const_mapped_reference;
+      typedef typename base_type::value_type value_type;
+      typedef typename base_type::pointer pointer;
+      typedef typename base_type::const_pointer const_pointer;
+      typedef typename base_type::reference reference;
+      typedef typename base_type::const_reference const_reference;
+      typedef typename base_type::point_iterator point_iterator;
+      typedef typename base_type::const_iterator const_point_iterator;
+      typedef typename base_type::iterator iterator;
+      typedef typename base_type::const_iterator const_iterator;
+      typedef typename base_type::reverse_iterator reverse_iterator;
+      typedef typename base_type::const_reverse_iterator const_reverse_iterator;
+      typedef typename base_type::node_update node_update;
+
+      PB_DS_CLASS_NAME();
+
+      PB_DS_CLASS_NAME(const Cmp_Fn&);
+
+      PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&);
+
+      PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
+
+      void
+      swap(PB_DS_CLASS_C_DEC&);
+
+      template<typename It>
+      void
+      copy_from_range(It, It);
+
+      void
+      initialize();
+
+      inline std::pair<point_iterator, bool>
+      insert(const_reference r_value);
+
+      inline mapped_reference
+      operator[](const_key_reference r_key)
+      {
+#ifdef PB_DS_DATA_TRUE_INDICATOR
+	_GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+	std::pair<point_iterator, bool> ins_pair =
+	  insert_leaf_imp(value_type(r_key, mapped_type()));
+
+	ins_pair.first.m_p_nd->m_special = false;
+	_GLIBCXX_DEBUG_ONLY(base_type::assert_valid());
+	splay(ins_pair.first.m_p_nd);
+	_GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
+	return ins_pair.first.m_p_nd->m_value.second;
+#else 
+	insert(r_key);
+	return base_type::s_null_mapped;
+#endif
+      }
+
+      inline point_iterator
+      find(const_key_reference);
+
+      inline const_point_iterator
+      find(const_key_reference) const;
+
+      inline bool
+      erase(const_key_reference);
+
+      inline iterator
+      erase(iterator it);
+
+      inline reverse_iterator
+      erase(reverse_iterator);
+
+      template<typename Pred>
+      inline size_type
+      erase_if(Pred);
+
+      void
+      join(PB_DS_CLASS_C_DEC&);
+
+      void
+      split(const_key_reference, PB_DS_CLASS_C_DEC&);
+
+    private:
+      inline std::pair<point_iterator, bool>
+      insert_leaf_imp(const_reference);
+
+      inline node_pointer
+      find_imp(const_key_reference);
+
+      inline const node_pointer
+      find_imp(const_key_reference) const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      assert_special_imp(const node_pointer) const;
+#endif 
+
+      void
+      splay(node_pointer);
+
+      inline void
+      splay_zig_zag_left(node_pointer, node_pointer, node_pointer);
+
+      inline void
+      splay_zig_zag_right(node_pointer, node_pointer, node_pointer);
+
+      inline void
+      splay_zig_zig_left(node_pointer, node_pointer, node_pointer);
+
+      inline void
+      splay_zig_zig_right(node_pointer, node_pointer, node_pointer);
+
+      inline void
+      splay_zz_start(node_pointer, node_pointer, node_pointer);
+
+      inline void
+      splay_zz_end(node_pointer, node_pointer, node_pointer);
+
+      inline node_pointer
+      leftmost(node_pointer);
+
+      void
+      erase_node(node_pointer);
+    };
+
+#include <ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_NAME
+#undef PB_DS_BASE_CLASS_NAME
+#undef PB_DS_BASE_C_DEC
+#undef PB_DS_V2F
+#undef PB_DS_EP2VP
+#undef PB_DS_V2S
+  } // namespace detail
+} // namespace __gnu_pbds
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..beef5bdaa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
@@ -0,0 +1,112 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation class for splay_tree_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+  if (base_type::join_prep(other) == false)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+      return;
+    }
+
+  node_pointer p_target_r = other.leftmost(other.m_p_head);
+  _GLIBCXX_DEBUG_ASSERT(p_target_r != 0);
+  other.splay(p_target_r);
+
+  _GLIBCXX_DEBUG_ASSERT(p_target_r == other.m_p_head->m_p_parent);
+  _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left == 0);
+
+  p_target_r->m_p_left = base_type::m_p_head->m_p_parent;
+
+  _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left != 0);
+  p_target_r->m_p_left->m_p_parent = p_target_r;
+
+  base_type::m_p_head->m_p_parent = p_target_r;
+  p_target_r->m_p_parent = base_type::m_p_head;
+  apply_update(p_target_r, (node_update* )this);
+
+  base_type::join_finish(other);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+
+  if (base_type::split_prep(r_key, other) == false)
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid());
+      _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+      return;
+    }
+
+  node_pointer p_upper_bound = upper_bound(r_key).m_p_nd;
+  _GLIBCXX_DEBUG_ASSERT(p_upper_bound != 0);
+
+  splay(p_upper_bound);
+  _GLIBCXX_DEBUG_ASSERT(p_upper_bound->m_p_parent == this->m_p_head);
+
+  node_pointer p_new_root = p_upper_bound->m_p_left;
+  _GLIBCXX_DEBUG_ASSERT(p_new_root != 0);
+
+  base_type::m_p_head->m_p_parent = p_new_root;
+  p_new_root->m_p_parent = base_type::m_p_head;
+  other.m_p_head->m_p_parent = p_upper_bound;
+  p_upper_bound->m_p_parent = other.m_p_head;
+  p_upper_bound->m_p_left = 0;
+  apply_update(p_upper_bound, (node_update* )this);
+  base_type::split_finish(other);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid());
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid());
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/traits.hpp
new file mode 100644
index 000000000..cfedc35c8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/splay_tree_/traits.hpp
@@ -0,0 +1,113 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file traits.hpp
+ * Contains an implementation for splay_tree_.
+ */
+
+#ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
+#define PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
+
+#include <ext/pb_ds/detail/splay_tree_/node.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Key,
+	     typename Mapped,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct tree_traits<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      splay_tree_tag,
+      Allocator> : public bin_search_tree_traits<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      splay_tree_node_<
+      typename types_traits<
+      Key,
+      Mapped,
+      Allocator,
+      false>::value_type,
+      typename tree_node_metadata_selector<
+      Key,
+      Mapped,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type,
+      Allocator>,
+      Allocator>
+    { };
+
+    template<typename Key,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Node_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+             class Node_Update,
+	     class Allocator>
+    struct tree_traits<Key, null_mapped_type, Cmp_Fn, Node_Update,
+		       splay_tree_tag, Allocator> 
+    : public bin_search_tree_traits<Key, null_mapped_type, Cmp_Fn,
+				    Node_Update, 
+	   splay_tree_node_<typename types_traits<Key, null_mapped_type, Allocator, false>::value_type,
+			    typename tree_node_metadata_selector<
+      Key,
+      null_mapped_type,
+      Cmp_Fn,
+      Node_Update,
+      Allocator>::type,
+      Allocator>,
+      Allocator>
+    { };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/standard_policies.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/standard_policies.hpp
new file mode 100644
index 000000000..cfbfbb072
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/standard_policies.hpp
@@ -0,0 +1,136 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file standard_policies.hpp
+ * Contains standard policies for containers.
+ */
+
+#ifndef PB_DS_STANDARD_POLICIES_HPP
+#define PB_DS_STANDARD_POLICIES_HPP
+
+#include <memory>
+#include <ext/pb_ds/hash_policy.hpp>
+#include <ext/pb_ds/list_update_policy.hpp>
+#include <ext/pb_ds/tree_policy.hpp>
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+#include <ext/pb_ds/trie_policy.hpp>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <tr1/functional>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key>
+    struct default_hash_fn
+    {
+      typedef std::tr1::hash<Key> type;
+    };
+
+    template<typename Key>
+    struct default_eq_fn
+    {
+      typedef std::equal_to<Key> type;
+    };
+
+    enum
+      {
+	default_store_hash = false
+      };
+
+    struct default_comb_hash_fn
+    {
+      typedef __gnu_pbds::direct_mask_range_hashing<> type;
+    };
+
+    template<typename Comb_Hash_Fn>
+    struct default_resize_policy
+    {
+    private:
+      typedef typename Comb_Hash_Fn::size_type size_type;
+
+      typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
+      typedef is_same<default_fn, Comb_Hash_Fn> same_type;
+      typedef __gnu_pbds::hash_exponential_size_policy<size_type> iftrue;
+      typedef __gnu_pbds::hash_prime_size_policy iffalse;
+      typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
+      typedef typename cond_type::__type size_policy_type;
+
+      typedef __gnu_pbds::hash_load_check_resize_trigger<false, size_type> trigger;
+
+    public:
+      typedef __gnu_pbds::hash_standard_resize_policy<size_policy_type, trigger, false, size_type> type;
+    };
+
+    struct default_update_policy
+    {
+      typedef __gnu_pbds::move_to_front_lu_policy<> type;
+    };
+
+    template<typename Comb_Probe_Fn>
+    struct default_probe_fn
+    {
+    private:
+      typedef typename Comb_Probe_Fn::size_type size_type;
+
+      typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
+      typedef is_same<default_fn, Comb_Probe_Fn> same_type;
+      typedef __gnu_pbds::linear_probe_fn<size_type> iftrue;
+      typedef __gnu_pbds::quadratic_probe_fn<size_type> iffalse;
+      typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
+
+    public:
+      typedef typename cond_type::__type type;
+    };
+
+    template<typename Key>
+    struct default_trie_e_access_traits;
+
+    template<typename Char, class Char_Traits>
+    struct default_trie_e_access_traits<std::basic_string<Char, Char_Traits, std::allocator<char> > >
+    {
+    private:
+      typedef std::basic_string<Char, Char_Traits, std::allocator<char> > string_type;
+
+    public:
+      typedef __gnu_pbds::string_trie_e_access_traits<string_type> type;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_STANDARD_POLICIES_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
new file mode 100644
index 000000000..af9b1116d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
@@ -0,0 +1,106 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file constructors_destructor_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename It>
+void
+PB_DS_CLASS_C_DEC::
+copy_from_range(It first_it, It last_it)
+{
+  while (first_it != last_it)
+    push(*(first_it++));
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+thin_heap_() :
+  m_p_max(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+thin_heap_(const Cmp_Fn& r_cmp_fn) :
+  PB_DS_BASE_C_DEC(r_cmp_fn),
+  m_p_max(0)
+{
+  initialize();
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+thin_heap_(const PB_DS_CLASS_C_DEC& other) :
+  PB_DS_BASE_C_DEC(other)
+{
+  initialize();
+  m_p_max = base_type::m_p_root;
+  for (node_pointer p_nd = base_type::m_p_root; p_nd != 0; p_nd = p_nd->m_p_next_sibling)
+    if (Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value))
+      m_p_max = p_nd;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+swap(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+  base_type::swap(other);
+  std::swap(m_p_max, other.m_p_max);
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~thin_heap_()
+{ }
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+initialize()
+{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast<node_pointer>(0)); }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
new file mode 100644
index 000000000..19e977b9a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
@@ -0,0 +1,112 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file debug_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+#ifdef _GLIBCXX_DEBUG
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_valid() const
+{
+  base_type::assert_valid();
+  assert_node_consistent(base_type::m_p_root, true);
+  assert_max();
+  assert_aux_null();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_aux_null() const
+{
+  for (size_type i = 0; i < max_rank; ++i)
+    _GLIBCXX_DEBUG_ASSERT(m_a_aux[i] == 0);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_max() const
+{
+  if (m_p_max == 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::empty());
+      return;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+  _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == 0);
+  _GLIBCXX_DEBUG_ASSERT(m_p_max->m_p_prev_or_parent == 0);
+  for (const_iterator it = base_type::begin(); it != base_type::end(); ++it)
+    _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value));
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+assert_node_consistent(const_node_pointer p_nd, bool root) const
+{
+  base_type::assert_node_consistent(p_nd, root);
+  if (p_nd == 0)
+    return;
+
+  assert_node_consistent(p_nd->m_p_next_sibling, root);
+  assert_node_consistent(p_nd->m_p_l_child, false);
+  if (!root)
+    {
+      if (p_nd->m_metadata == 0)
+	_GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == 0);
+      else
+	_GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1);
+    }
+
+  if (p_nd->m_p_l_child != 0)
+    _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd));
+
+  const bool unmarked_valid =(p_nd->m_p_l_child == 0&&  p_nd->m_metadata == 0) ||(p_nd->m_p_l_child != 0&&  p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1);
+
+  const bool marked_valid =(p_nd->m_p_l_child == 0&&  p_nd->m_metadata == 1) ||(p_nd->m_p_l_child != 0&&  p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2);
+
+  _GLIBCXX_DEBUG_ASSERT(unmarked_valid || marked_valid);
+  if (root)
+    _GLIBCXX_DEBUG_ASSERT(unmarked_valid);
+}
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
new file mode 100644
index 000000000..4431a4cf4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
@@ -0,0 +1,296 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file erase_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+pop()
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  _GLIBCXX_DEBUG_ASSERT(m_p_max != 0);
+
+  node_pointer p_nd = m_p_max;
+
+  remove_max_node();
+
+  base_type::actual_erase_node(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+remove_max_node()
+{
+  to_aux_except_max();
+
+  make_from_aux();
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+to_aux_except_max()
+{
+  node_pointer p_add = base_type::m_p_root;
+
+  while (p_add != m_p_max)
+    {
+      node_pointer p_next_add = p_add->m_p_next_sibling;
+
+      add_to_aux(p_add);
+
+      p_add = p_next_add;
+    }
+
+  p_add = m_p_max->m_p_l_child;
+
+  while (p_add != 0)
+    {
+      node_pointer p_next_add = p_add->m_p_next_sibling;
+
+      p_add->m_metadata = p_add->m_p_l_child == 0?
+	0 :
+	p_add->m_p_l_child->m_metadata + 1;
+
+      add_to_aux(p_add);
+
+      p_add = p_next_add;
+    }
+
+  p_add = m_p_max->m_p_next_sibling;
+
+  while (p_add != 0)
+    {
+      node_pointer p_next_add = p_add->m_p_next_sibling;
+
+      add_to_aux(p_add);
+
+      p_add = p_next_add;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+add_to_aux(node_pointer p_nd)
+{
+  size_type r = p_nd->m_metadata;
+
+  while (m_a_aux[r] != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound());
+
+      if (Cmp_Fn::operator()(m_a_aux[r]->m_value, p_nd->m_value))
+	make_child_of(m_a_aux[r], p_nd);
+      else
+        {
+	  make_child_of(p_nd, m_a_aux[r]);
+
+	  p_nd = m_a_aux[r];
+        }
+
+      m_a_aux[r] = 0;
+
+      ++r;
+    }
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound());
+
+  m_a_aux[r] = p_nd;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+make_child_of(node_pointer p_nd, node_pointer p_new_parent)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_new_parent->m_metadata);
+  _GLIBCXX_DEBUG_ASSERT(m_a_aux[p_nd->m_metadata] == p_nd ||
+		   m_a_aux[p_nd->m_metadata] == p_new_parent);
+
+  ++p_new_parent->m_metadata;
+
+  base_type::make_child_of(p_nd, p_new_parent);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+make_from_aux()
+{
+  base_type::m_p_root = m_p_max = 0;
+
+  const size_type rnk_bnd = rank_bound();
+
+  size_type i = 0;
+
+  while (i < rnk_bnd)
+    {
+      if (m_a_aux[i] != 0)
+        {
+	  make_root_and_link(m_a_aux[i]);
+
+	  m_a_aux[i] = 0;
+        }
+
+      ++i;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_aux_null();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+remove_node(node_pointer p_nd)
+{
+  node_pointer p_parent = p_nd;
+  while (base_type::parent(p_parent) != 0)
+    p_parent = base_type::parent(p_parent);
+
+  base_type::bubble_to_top(p_nd);
+
+  m_p_max = p_nd;
+
+  node_pointer p_fix = base_type::m_p_root;
+  while (p_fix != 0&&  p_fix->m_p_next_sibling != p_parent)
+    p_fix = p_fix->m_p_next_sibling;
+
+  if (p_fix != 0)
+    p_fix->m_p_next_sibling = p_nd;
+
+  remove_max_node();
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+clear()
+{
+  base_type::clear();
+
+  m_p_max = 0;
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+erase(point_iterator it)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  node_pointer p_nd = it.m_p_nd;
+
+  remove_node(p_nd);
+
+  base_type::actual_erase_node(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+erase_if(Pred pred)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    if (base_type::empty())
+      {
+        _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+	  return 0;
+      }
+
+  base_type::to_linked_list();
+
+  node_pointer p_out = base_type::prune(pred);
+
+  size_type ersd = 0;
+
+  while (p_out != 0)
+    {
+      ++ersd;
+
+      node_pointer p_next = p_out->m_p_next_sibling;
+
+      base_type::actual_erase_node(p_out);
+
+      p_out = p_next;
+    }
+
+  node_pointer p_cur = base_type::m_p_root;
+
+  m_p_max = base_type::m_p_root = 0;
+
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+
+      make_root_and_link(p_cur);
+
+      p_cur = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    return ersd;
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+rank_bound()
+{
+  const std::size_t* const p_upper =
+    std::upper_bound(            g_a_rank_bounds, g_a_rank_bounds + num_distinct_rank_bounds, base_type::m_size);
+
+  if (p_upper == g_a_rank_bounds + num_distinct_rank_bounds)
+    return max_rank;
+
+  return (p_upper - g_a_rank_bounds);
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
new file mode 100644
index 000000000..ef60addf8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
@@ -0,0 +1,51 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file find_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_reference
+PB_DS_CLASS_C_DEC::
+top() const
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
+
+  _GLIBCXX_DEBUG_ASSERT(m_p_max != 0);
+  return m_p_max->m_value;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
new file mode 100644
index 000000000..2f56abd21
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
@@ -0,0 +1,326 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file insert_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::point_iterator
+PB_DS_CLASS_C_DEC::
+push(const_reference r_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
+
+  p_nd->m_metadata = 0;
+
+  p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0;
+
+  if (base_type::m_p_root == 0)
+    {
+      p_nd->m_p_next_sibling = 0;
+
+      m_p_max = base_type::m_p_root = p_nd;
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+        return point_iterator(p_nd);
+    }
+
+  p_nd->m_p_next_sibling = base_type::m_p_root;
+
+  base_type::m_p_root->m_p_prev_or_parent = 0;
+
+  base_type::m_p_root = p_nd;
+
+  update_max(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+    return point_iterator(p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+make_root(node_pointer p_nd)
+{
+  p_nd->m_metadata =
+    p_nd->m_p_l_child == 0?
+    0 :
+    1 + p_nd->m_p_l_child->m_metadata;
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+make_root_and_link(node_pointer p_nd)
+{
+  make_root(p_nd);
+
+  p_nd->m_p_prev_or_parent = 0;
+
+  p_nd->m_p_next_sibling = base_type::m_p_root;
+
+  if (base_type::m_p_root != 0)
+    base_type::m_p_root->m_p_prev_or_parent = 0;
+
+  base_type::m_p_root = p_nd;
+
+  update_max(p_nd);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix(node_pointer p_y)
+{
+  while (true)
+    {
+      if (p_y->m_p_prev_or_parent == 0)
+        {
+	  fix_root(p_y);
+
+	  return;
+        }
+      else if (p_y->m_metadata == 1&&  p_y->m_p_next_sibling == 0)
+        {
+	  if (p_y->m_p_l_child != 0)
+            {
+	      fix_sibling_rank_1_unmarked(p_y);
+
+	      return;
+            }
+
+	  fix_sibling_rank_1_marked(p_y);
+
+	  p_y = p_y->m_p_prev_or_parent;
+        }
+      else if (p_y->m_metadata > p_y->m_p_next_sibling->m_metadata + 1)
+        {
+	  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child != 0);
+
+	  if (p_y->m_metadata != p_y->m_p_l_child->m_metadata + 2)
+            {
+	      fix_sibling_general_unmarked(p_y);
+
+	      return;
+            }
+
+	  fix_sibling_general_marked(p_y);
+
+	  p_y = p_y->m_p_prev_or_parent;
+        }
+      else if ((p_y->m_p_l_child == 0&& 
+                p_y->m_metadata == 2) ||(p_y->m_p_l_child != 0&& 
+					 p_y->m_metadata == p_y->m_p_l_child->m_metadata + 3))
+        {
+	  node_pointer p_z = p_y->m_p_prev_or_parent;
+
+	  fix_child(p_y);
+
+	  p_y = p_z;
+        }
+      else
+	return;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_root(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent == 0);
+
+  make_root(p_y);
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, true);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_sibling_rank_1_unmarked(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0);
+
+  _GLIBCXX_DEBUG_ONLY(node_pointer p_w = p_y->m_p_l_child;)
+    _GLIBCXX_DEBUG_ASSERT(p_w != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling == 0);
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_next_sibling == 0);
+
+  p_y->m_p_next_sibling = p_y->m_p_l_child;
+
+  p_y->m_p_next_sibling->m_p_prev_or_parent = p_y;
+
+  p_y->m_p_l_child = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_sibling_rank_1_marked(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child == 0);
+
+  p_y->m_metadata = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_sibling_general_unmarked(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0);
+
+  node_pointer p_w = p_y->m_p_l_child;
+  _GLIBCXX_DEBUG_ASSERT(p_w != 0);
+  _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0);
+
+  p_y->m_p_l_child = p_w->m_p_next_sibling;
+  p_w->m_p_next_sibling->m_p_prev_or_parent = p_y;
+
+  p_w->m_p_next_sibling = p_y->m_p_next_sibling;
+  _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0);
+  p_w->m_p_next_sibling->m_p_prev_or_parent = p_w;
+
+  p_y->m_p_next_sibling = p_w;
+  p_w->m_p_prev_or_parent = p_y;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_sibling_general_marked(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0);
+
+  --p_y->m_metadata;
+
+  _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+fix_child(node_pointer p_y)
+{
+  _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0);
+
+  if (p_y->m_p_next_sibling != 0)
+    p_y->m_p_next_sibling->m_p_prev_or_parent = p_y->m_p_prev_or_parent;
+
+  if (p_y->m_p_prev_or_parent->m_p_l_child == p_y)
+    p_y->m_p_prev_or_parent->m_p_l_child = p_y->m_p_next_sibling;
+  else
+    p_y->m_p_prev_or_parent->m_p_next_sibling = p_y->m_p_next_sibling;
+
+  make_root_and_link(p_y);
+}
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+modify(point_iterator it, const_reference r_new_val)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    node_pointer p_nd = it.m_p_nd;
+
+  _GLIBCXX_DEBUG_ASSERT(p_nd != 0);
+
+  const bool smaller = Cmp_Fn::operator()(r_new_val, p_nd->m_value);
+
+  p_nd->m_value = r_new_val;
+
+  if (smaller)
+    {
+      remove_node(p_nd);
+
+      p_nd->m_p_l_child = 0;
+
+      make_root_and_link(p_nd);
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+        return;
+    }
+
+  if (p_nd->m_p_prev_or_parent == 0)
+    {
+      update_max(p_nd);
+
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+
+        return;
+    }
+
+  node_pointer p_y = p_nd->m_p_prev_or_parent;
+  _GLIBCXX_DEBUG_ASSERT(p_y != 0);
+
+  if (p_nd->m_p_next_sibling != 0)
+    p_nd->m_p_next_sibling->m_p_prev_or_parent = p_y;
+
+  if (p_y->m_p_l_child == p_nd)
+    p_y->m_p_l_child = p_nd->m_p_next_sibling;
+  else
+    p_y->m_p_next_sibling = p_nd->m_p_next_sibling;
+
+  fix(p_y);
+
+  make_root_and_link(p_nd);
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+update_max(node_pointer p_nd)
+{
+  if (m_p_max == 0 || Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value))
+    m_p_max = p_nd;
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
new file mode 100644
index 000000000..2adf5a5ef
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
@@ -0,0 +1,126 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file split_join_fn_imps.hpp
+ * Contains an implementation for thin_heap_.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Pred>
+void
+PB_DS_CLASS_C_DEC::
+split(Pred pred, PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    other.clear();
+
+  if (base_type::empty())
+    {
+      _GLIBCXX_DEBUG_ONLY(assert_valid();)
+        _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+        return;
+    }
+
+  base_type::to_linked_list();
+
+  node_pointer p_out = base_type::prune(pred);
+
+  while (p_out != 0)
+    {
+      _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
+      --base_type::m_size;
+
+      ++other.m_size;
+
+      node_pointer p_next = p_out->m_p_next_sibling;
+
+      other.make_root_and_link(p_out);
+
+      p_out = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    node_pointer p_cur = base_type::m_p_root;
+
+  m_p_max = 0;
+
+  base_type::m_p_root = 0;
+
+  while (p_cur != 0)
+    {
+      node_pointer p_next = p_cur->m_p_next_sibling;
+
+      make_root_and_link(p_cur);
+
+      p_cur = p_next;
+    }
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+join(PB_DS_CLASS_C_DEC& other)
+{
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+
+    node_pointer p_other = other.m_p_root;
+
+  while (p_other != 0)
+    {
+      node_pointer p_next = p_other->m_p_next_sibling;
+
+      make_root_and_link(p_other);
+
+      p_other = p_next;
+    }
+
+  base_type::m_size += other.m_size;
+
+  other.m_p_root = 0;
+  other.m_size = 0;
+  other.m_p_max = 0;
+
+  _GLIBCXX_DEBUG_ONLY(assert_valid();)
+    _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
+    }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
new file mode 100644
index 000000000..88fa04b3c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
@@ -0,0 +1,351 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file thin_heap_.hpp
+ * Contains an implementation class for a thin heap.
+ */
+
+#ifndef PB_DS_THIN_HEAP_HPP
+#define PB_DS_THIN_HEAP_HPP
+
+/*
+ * Thin heaps.
+ * Tarjan and Kaplan.
+ */
+
+#include <algorithm>
+#include <ext/pb_ds/detail/cond_dealtor.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
+#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
+#include <debug/debug.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC \
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+    thin_heap_<Value_Type, Cmp_Fn, Allocator>
+
+#ifdef _GLIBCXX_DEBUG
+#define PB_DS_BASE_C_DEC \
+    left_child_next_sibling_heap_<Value_Type, Cmp_Fn,	\
+			        typename Allocator::size_type, Allocator, true>
+#else 
+#define PB_DS_BASE_C_DEC						\
+    left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
+				  typename Allocator::size_type, Allocator>
+#endif 
+
+    /**
+     * class description = "t|-|i|\| h34p">
+     **/
+    template<typename Value_Type, class Cmp_Fn, class Allocator>
+    class thin_heap_ : public PB_DS_BASE_C_DEC
+    {
+
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    protected:
+      typedef typename base_type::node node;
+
+      typedef typename base_type::node_pointer node_pointer;
+
+      typedef typename base_type::const_node_pointer const_node_pointer;
+
+    public:
+
+      typedef typename Allocator::size_type size_type;
+
+      typedef typename Allocator::difference_type difference_type;
+
+      typedef Value_Type value_type;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::pointer
+      pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_pointer
+      const_pointer;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::reference
+      reference;
+
+      typedef
+      typename Allocator::template rebind<
+	value_type>::other::const_reference
+      const_reference;
+
+      typedef
+      typename PB_DS_BASE_C_DEC::const_point_iterator
+      const_point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
+
+      typedef typename PB_DS_BASE_C_DEC::iterator iterator;
+
+      typedef Cmp_Fn cmp_fn;
+
+      typedef Allocator allocator_type;
+
+    public:
+
+      inline point_iterator
+      push(const_reference r_val);
+
+      void
+      modify(point_iterator it, const_reference r_new_val);
+
+      inline const_reference
+      top() const;
+
+      void
+      pop();
+
+      void
+      erase(point_iterator it);
+
+      inline void
+      clear();
+
+      template<typename Pred>
+      size_type
+      erase_if(Pred pred);
+
+      template<typename Pred>
+      void
+      split(Pred pred, PB_DS_CLASS_C_DEC& other);
+
+      void
+      join(PB_DS_CLASS_C_DEC& other);
+
+    protected:
+
+      thin_heap_();
+
+      thin_heap_(const Cmp_Fn& r_cmp_fn);
+
+      thin_heap_(const PB_DS_CLASS_C_DEC& other);
+
+      void
+      swap(PB_DS_CLASS_C_DEC& other);
+
+      ~thin_heap_();
+
+      template<typename It>
+      void
+      copy_from_range(It first_it, It last_it);
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_valid() const;
+
+      void
+      assert_max() const;
+#endif 
+
+#ifdef PB_DS_THIN_HEAP_TRACE_
+      void
+      trace() const;
+#endif 
+
+    private:
+      enum
+	{
+	  max_rank = (sizeof(size_type) << 4) + 2
+	};
+
+    private:
+
+      void
+      initialize();
+
+      inline void
+      update_max(node_pointer p_nd);
+
+      inline void
+      fix(node_pointer p_nd);
+
+      inline void
+      fix_root(node_pointer p_y);
+
+      inline void
+      fix_sibling_rank_1_unmarked(node_pointer p_y);
+
+      inline void
+      fix_sibling_rank_1_marked(node_pointer p_y);
+
+      inline void
+      fix_sibling_general_unmarked(node_pointer p_y);
+
+      inline void
+      fix_sibling_general_marked(node_pointer p_y);
+
+      inline void
+      fix_child(node_pointer p_y);
+
+      inline static void
+      make_root(node_pointer p_nd);
+
+      inline void
+      make_root_and_link(node_pointer p_nd);
+
+      inline void
+      remove_max_node();
+
+      void
+      to_aux_except_max();
+
+      inline void
+      add_to_aux(node_pointer p_nd);
+
+      inline void
+      make_from_aux();
+
+      inline size_type
+      rank_bound();
+
+      inline void
+      make_child_of(node_pointer p_nd, node_pointer p_new_parent);
+
+      inline void
+      remove_node(node_pointer p_nd);
+
+      inline node_pointer
+      join(node_pointer p_lhs, node_pointer p_rhs) const;
+
+#ifdef _GLIBCXX_DEBUG
+      void
+      assert_node_consistent(const_node_pointer p_nd, bool root) const;
+
+      void
+      assert_aux_null() const;
+#endif 
+
+    private:
+      node_pointer m_p_max;
+
+      node_pointer m_a_aux[max_rank];
+    };
+
+    enum
+      {
+	num_distinct_rank_bounds = 48
+      };
+
+    // Taken from the SGI implementation; acknowledged in the docs.
+    static const std::size_t g_a_rank_bounds[num_distinct_rank_bounds] =
+      {
+	/* Dealing cards... */
+	/* 0     */ 0ul,
+	/* 1     */ 1ul,
+	/* 2     */ 1ul,
+	/* 3     */ 2ul,
+	/* 4     */ 4ul,
+	/* 5     */ 6ul,
+	/* 6     */ 11ul,
+	/* 7     */ 17ul,
+	/* 8     */ 29ul,
+	/* 9     */ 46ul,
+	/* 10    */ 76ul,
+	/* 11    */ 122ul,
+	/* 12    */ 199ul,
+	/* 13    */ 321ul,
+	/* 14    */ 521ul,
+	/* 15    */ 842ul,
+	/* 16    */ 1364ul,
+	/* 17    */ 2206ul,
+	/* 18    */ 3571ul,
+	/* 19    */ 5777ul,
+	/* 20    */ 9349ul,
+	/* 21    */ 15126ul,
+	/* 22    */ 24476ul,
+	/* 23    */ 39602ul,
+	/* 24    */ 64079ul,
+	/* 25    */ 103681ul,
+	/* 26    */ 167761ul,
+	/* 27    */ 271442ul,
+	/* 28    */ 439204ul,
+	/* 29    */ 710646ul,
+	/* 30    */ 1149851ul,
+	/* 31    */ 1860497ul,
+	/* 32    */ 3010349ul,
+	/* 33    */ 4870846ul,
+	/* 34    */ 7881196ul,
+	/* 35    */ 12752042ul,
+	/* 36    */ 20633239ul,
+	/* 37    */ 33385282ul,
+	/* 38    */ 54018521ul,
+	/* 39    */ 87403803ul,
+	/* 40    */ 141422324ul,
+	/* 41    */ 228826127ul,
+	/* 42    */ 370248451ul,
+	/* 43    */ 599074578ul,
+	/* 44    */ 969323029ul,
+	/* 45    */ 1568397607ul,
+	/* 46    */ 2537720636ul,
+	/* 47    */ 4106118243ul
+	/* Pot's good, let's play */
+      };
+
+#include <ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp>
+#include <ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_BASE_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
new file mode 100644
index 000000000..fc309d5c1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trace_fn_imps.hpp
+ * Contains an implementation class for left_child_next_sibling_heap_.
+ */
+
+#ifdef PB_DS_THIN_HEAP_TRACE_
+
+PB_DS_CLASS_T_DEC
+void
+PB_DS_CLASS_C_DEC::
+trace() const
+{
+  std::cerr << std::endl;
+
+  std::cerr << "m_p_max " << m_p_max << std::endl;
+
+  base_type::trace();
+}
+
+#endif // #ifdef PB_DS_THIN_HEAP_TRACE_
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
new file mode 100644
index 000000000..c182886ee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
@@ -0,0 +1,116 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_metadata_selector.hpp
+ * Contains an implementation class for trees.
+ */
+
+#ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
+#define PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
+
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Node_Update, bool Null>
+    struct tree_metadata_helper
+    {
+      typedef typename Node_Update::metadata_type type;
+    };
+
+    template<typename Node_Update>
+    struct tree_metadata_helper<
+      Node_Update,
+      true>
+    {
+      typedef null_node_metadata type;
+    };
+
+    template<typename Key,
+	     typename Data,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Const_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct tree_node_metadata_selector
+    {
+    private:
+      typedef
+      dumconst_node_iterator<
+      Key,
+      Data,
+      Allocator>
+      dumconst_node_it;
+
+      enum
+	{
+	  null_update =
+	  is_same<
+	  Node_Update<
+	  dumconst_node_it,
+	  dumconst_node_it,
+	  Cmp_Fn,
+	  Allocator>,
+	  null_tree_node_update<
+	  dumconst_node_it,
+	  dumconst_node_it,
+	  Cmp_Fn,
+	  Allocator> >::value
+	};
+
+    public:
+      typedef
+      typename tree_metadata_helper<
+      Node_Update<
+      dumconst_node_it,
+      dumconst_node_it,
+      Cmp_Fn,
+      Allocator>,
+      null_update>::type
+      type;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
new file mode 100644
index 000000000..006a3eb04
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
@@ -0,0 +1,50 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file null_node_update_imp.hpp
+ * Contains an implementation of null_node_update.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Const_Node_Iterator_,
+	 typename Node_Iterator_,
+	 class    Cmp_Fn_,
+	 typename Allocator_>
+inline void
+PB_DS_CLASS_C_DEC::
+swap(null_tree_node_update<            Const_Node_Iterator_, Node_Iterator_, Cmp_Fn_, Allocator_>& /*other*/)
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
new file mode 100644
index 000000000..1d33767a2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file order_statistics_imp.hpp
+ * Contains forward declarations for order_statistics_key
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+find_by_order(size_type order)
+{
+  node_iterator it = node_begin();
+
+  node_iterator end_it = node_end();
+
+  while (it != end_it)
+    {
+      node_iterator l_it = it.get_l_child();
+
+      const size_type o = (l_it == end_it)?
+	0 :
+	l_it.get_metadata();
+
+      if (order == o)
+	return (*it);
+      else if (order < o)
+	it = l_it;
+      else
+        {
+	  order -= o + 1;
+
+	  it = it.get_r_child();
+        }
+    }
+
+  return (PB_DS_BASE_C_DEC::end_iterator());
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+find_by_order(size_type order) const
+{
+  return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+order_of_key(const_key_reference r_key) const
+{
+  const_node_iterator it = node_begin();
+
+  const_node_iterator end_it = node_end();
+
+  const cmp_fn& r_cmp_fn =
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->get_cmp_fn();
+
+  size_type ord = 0;
+
+  while (it != end_it)
+    {
+      const_node_iterator l_it = it.get_l_child();
+
+      if (r_cmp_fn(r_key, extract_key(*(*it))))
+	it = l_it;
+      else if (r_cmp_fn(extract_key(*(*it)), r_key))
+        {
+
+	  ord += (l_it == end_it)?
+	    1 :
+	    1 + l_it.get_metadata();
+
+	  it = it.get_r_child();
+        }
+      else
+        {
+	  ord += (l_it == end_it)?
+	    0 :
+	    l_it.get_metadata();
+
+	  it = end_it;
+        }
+    }
+
+  return (ord);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+operator()(node_iterator node_it, const_node_iterator end_nd_it) const
+{
+  node_iterator l_child_it = node_it.get_l_child();
+  const size_type l_rank =(l_child_it == end_nd_it)? 0 : l_child_it.get_metadata();
+
+  node_iterator r_child_it = node_it.get_r_child();
+  const size_type r_rank =(r_child_it == end_nd_it)? 0 : r_child_it.get_metadata();
+
+  const_cast<metadata_reference>(node_it.get_metadata())=
+    1 + l_rank + r_rank;
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~tree_order_statistics_node_update()
+{ }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
new file mode 100644
index 000000000..b8c19a587
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_tree_node_update.hpp
+ * Contains a samle node update functor.
+ */
+
+#ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
+#define PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
+
+// A sample node updator.
+template<typename Const_Node_Iterator,
+
+	 class Node_Iterator,
+
+	 class Cmp_Fn,
+
+	 class Allocator
+	 >
+class sample_tree_node_update
+{
+
+public:
+
+  // Metadata type.
+  typedef std::size_t metadata_type;
+
+protected:
+
+  // Default constructor.
+  sample_tree_node_update();
+
+  // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator.
+  inline void
+  operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_trace_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_trace_base.hpp
new file mode 100644
index 000000000..e4bd65649
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/tree_trace_base.hpp
@@ -0,0 +1,209 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file tree_trace_base.hpp
+ * Contains tree-related policies.
+ */
+
+#ifndef PB_DS_TREE_TRACE_BASE_HPP
+#define PB_DS_TREE_TRACE_BASE_HPP
+
+#ifdef PB_DS_TREE_TRACE
+
+#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+
+namespace __gnu_pbds
+{
+
+  namespace detail
+  {
+
+#ifdef PB_DS_TREE_TRACE
+
+#define PB_DS_CLASS_T_DEC						\
+    template<								\
+						class Const_Node_Iterator, \
+						class Node_Iterator,	\
+						class Cmp_Fn,		\
+						bool Node_Based,	\
+						class Allocator>
+
+#define PB_DS_CLASS_C_DEC						\
+    tree_trace_base<							\
+						Const_Node_Iterator,	\
+						Node_Iterator,		\
+						Cmp_Fn,			\
+						Node_Based,		\
+						Allocator>
+
+#define PB_DS_BASE_C_DEC						\
+    basic_tree_policy_base<				\
+								Const_Node_Iterator, \
+								Node_Iterator, \
+								Allocator>
+
+    template<typename Const_Node_Iterator,
+	     class Node_Iterator,
+	     class Cmp_Fn,
+	     bool Node_Based,
+	     class Allocator>
+    class tree_trace_base : private PB_DS_BASE_C_DEC
+    {
+    public:
+      void
+      trace() const;
+
+    private:
+      typedef PB_DS_BASE_C_DEC base_type;
+
+      typedef Const_Node_Iterator const_node_iterator;
+
+      typedef typename Allocator::size_type size_type;
+
+    private:
+      void
+      trace_node(const_node_iterator nd_it, size_type level) const;
+
+      virtual bool
+      empty() const = 0;
+
+      virtual const_node_iterator
+      node_begin() const = 0;
+
+      virtual const_node_iterator
+      node_end() const = 0;
+
+      static void
+      print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>);
+
+      static void
+      print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>);
+
+      template<typename Metadata_>
+      static void
+      trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>);
+
+      static void
+      trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>);
+    };
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    trace() const
+    {
+      if (empty())
+        return;
+
+      trace_node(node_begin(), 0);
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    trace_node(const_node_iterator nd_it, size_type level) const
+    {
+      if (nd_it.get_r_child() != node_end())
+        trace_node(nd_it.get_r_child(), level + 1);
+
+      for (size_type i = 0; i < level; ++i)
+        std::cerr << ' ';
+
+      print_node_pointer(nd_it, integral_constant<int,Node_Based>());
+      std::cerr << base_type::extract_key(*(*nd_it));
+
+      typedef
+        type_to_type<
+	typename const_node_iterator::metadata_type>
+        m_type_ind_t;
+
+      trace_it_metadata(nd_it, m_type_ind_t());
+
+      std::cerr << std::endl;
+
+      if (nd_it.get_l_child() != node_end())
+        trace_node(nd_it.get_l_child(), level + 1);
+    }
+
+    PB_DS_CLASS_T_DEC
+    template<typename Metadata_>
+    void
+    PB_DS_CLASS_C_DEC::
+    trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>)
+    {
+      std::cerr << " (" <<
+        static_cast<unsigned long>(nd_it.get_metadata()) << ") ";
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>)
+    { }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>)
+    {
+      std::cerr << nd_it.m_p_nd << " ";
+    }
+
+    PB_DS_CLASS_T_DEC
+    void
+    PB_DS_CLASS_C_DEC::
+    print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>)
+    {
+      std::cerr <<* nd_it << " ";
+    }
+
+#undef PB_DS_CLASS_T_DEC
+
+#undef PB_DS_CLASS_C_DEC
+
+#undef PB_DS_BASE_C_DEC
+
+#endif // #ifdef    PB_DS_TREE_TRACE
+
+  } // namespace detail
+
+} // namespace __gnu_pbds
+
+#endif // #ifdef PB_DS_TREE_TRACE
+
+#endif // #ifndef PB_DS_TREE_TRACE_BASE_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
new file mode 100644
index 000000000..b4de31fd0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
@@ -0,0 +1,116 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file node_metadata_selector.hpp
+ * Contains an implementation class for tries.
+ */
+
+#ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
+#define PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
+
+#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
+#include <ext/pb_ds/detail/types_traits.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+    template<typename Node_Update, bool Null>
+    struct trie_metadata_helper
+    {
+      typedef typename Node_Update::metadata_type type;
+    };
+
+    template<typename Node_Update>
+    struct trie_metadata_helper<
+      Node_Update,
+      true>
+    {
+      typedef null_node_metadata type;
+    };
+
+    template<typename Key,
+	     typename Data,
+	     class Cmp_Fn,
+	     template<typename Const_Node_Iterator,
+		      class Const_Iterator,
+		      class Cmp_Fn_,
+		      class Allocator_>
+    class Node_Update,
+	     class Allocator>
+    struct trie_node_metadata_selector
+    {
+    private:
+      typedef
+      dumconst_node_iterator<
+      Key,
+      Data,
+      Allocator>
+      dumconst_node_it;
+
+      enum
+	{
+	  null_update =
+	  is_same<
+	  Node_Update<
+	  dumconst_node_it,
+	  dumconst_node_it,
+	  Cmp_Fn,
+	  Allocator>,
+	  null_trie_node_update<
+	  dumconst_node_it,
+	  dumconst_node_it,
+	  Cmp_Fn,
+	  Allocator> >::value
+	};
+
+    public:
+      typedef
+      typename trie_metadata_helper<
+      Node_Update<
+      dumconst_node_it,
+      dumconst_node_it,
+      Cmp_Fn,
+      Allocator>,
+      null_update>::type
+      type;
+    };
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
new file mode 100644
index 000000000..65245e9dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
@@ -0,0 +1,50 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file null_node_update_imp.hpp
+ * Contains an implementation of null_node_update.
+ */
+
+PB_DS_CLASS_T_DEC
+template<typename Const_Node_Iterator_,
+	 typename Node_Iterator_,
+	 class    E_Access_Traits_,
+	 typename Allocator_>
+inline void
+PB_DS_CLASS_C_DEC::
+swap(null_trie_node_update<            Const_Node_Iterator_, Node_Iterator_, E_Access_Traits_, Allocator_>& /*other*/)
+{ }
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
new file mode 100644
index 000000000..cb8e24741
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
@@ -0,0 +1,181 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file order_statistics_imp.hpp
+ * Contains forward declarations for order_statistics_key
+ */
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::iterator
+PB_DS_CLASS_C_DEC::
+find_by_order(size_type order)
+{
+  if (empty())
+    return (end());
+
+  ++order;
+
+  node_iterator nd_it = node_begin();
+
+  while (true)
+    {
+      if (order > nd_it.get_metadata())
+	return (++base_type::rightmost_it(nd_it));
+
+      const size_type num_children = nd_it.num_children();
+
+      if (num_children == 0)
+	return (*nd_it);
+
+      for (size_type i = 0; i < num_children; ++i)
+        {
+	  node_iterator child_nd_it = nd_it.get_child(i);
+
+	  if (order <= child_nd_it.get_metadata())
+            {
+	      i = num_children;
+
+	      nd_it = child_nd_it;
+            }
+	  else
+	    order -= child_nd_it.get_metadata();
+        }
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+find_by_order(size_type order) const
+{
+  return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+order_of_key(const_key_reference r_key) const
+{
+  const E_Access_Traits& r_traits =
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits();
+
+  return (order_of_prefix(
+			  r_traits.begin(r_key),
+			  r_traits.end(r_key)));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+order_of_prefix(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const
+{
+  if (empty())
+    return (0);
+
+  const E_Access_Traits& r_traits =
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits();
+
+  const_node_iterator nd_it = node_begin();
+
+  const_node_iterator end_nd_it = node_end();
+
+  size_type ord = 0;
+
+  while (true)
+    {
+      const size_type num_children = nd_it.num_children();
+
+      if (num_children == 0)
+        {
+	  const_key_reference r_key =
+	    base_type::extract_key(*(*nd_it));
+
+	  typename e_access_traits::const_iterator key_b =
+	    r_traits.begin(r_key);
+
+	  typename e_access_traits::const_iterator key_e =
+	    r_traits.end(r_key);
+
+	  return ((base_type::less(                    key_b, key_e,  b, e,  r_traits))?
+		  ord + 1 :
+		  ord);
+        }
+
+      const_node_iterator next_nd_it = end_nd_it;
+
+      size_type i = num_children - 1;
+
+      do
+        {
+	  const_node_iterator child_nd_it = nd_it.get_child(i);
+
+	  if (next_nd_it != end_nd_it)
+	    ord += child_nd_it.get_metadata();
+	  else if (!base_type::less(
+				    b, e,
+				    child_nd_it.valid_prefix().first,
+				    child_nd_it.valid_prefix().second,
+				    r_traits))
+	    next_nd_it = child_nd_it;
+        }
+      while (i-- > 0);
+
+      if (next_nd_it == end_nd_it)
+	return (ord);
+
+      nd_it = next_nd_it;
+    }
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+operator()(node_iterator nd_it, const_node_iterator /*end_nd_it*/) const
+{
+  const size_type num_children = nd_it.num_children();
+
+  size_type children_rank = 0;
+
+  for (size_type i = 0; i < num_children; ++i)
+    children_rank += nd_it.get_child(i).get_metadata();
+
+  const_cast<size_type& >(nd_it.get_metadata()) =(num_children == 0)? 1 : children_rank;
+}
+
+PB_DS_CLASS_T_DEC
+PB_DS_CLASS_C_DEC::
+~trie_order_statistics_node_update()
+{ }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
new file mode 100644
index 000000000..cdd898929
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
@@ -0,0 +1,151 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file prefix_search_node_update_imp.hpp
+ * Contains an implementation of prefix_search_node_update.
+ */
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::const_iterator,
+  typename PB_DS_CLASS_C_DEC::const_iterator>
+PB_DS_CLASS_C_DEC::
+prefix_range(const_key_reference r_key) const
+{
+  const e_access_traits& r_traits = get_e_access_traits();
+
+  return (prefix_range(
+		       r_traits.begin(r_key),
+		       r_traits.end(r_key)));
+}
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::iterator,
+  typename PB_DS_CLASS_C_DEC::iterator>
+PB_DS_CLASS_C_DEC::
+prefix_range(const_key_reference r_key)
+{
+  return (prefix_range(
+		       get_e_access_traits().begin(r_key),
+		       get_e_access_traits().end(r_key)));
+}
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::const_iterator,
+  typename PB_DS_CLASS_C_DEC::const_iterator>
+PB_DS_CLASS_C_DEC::
+prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const
+{
+  const std::pair<iterator, iterator> non_const_ret =
+    const_cast<PB_DS_CLASS_C_DEC* >(this)->prefix_range(b, e);
+
+  return (std::make_pair(
+			 const_iterator(non_const_ret.first),
+			 const_iterator(non_const_ret.second)));
+}
+
+PB_DS_CLASS_T_DEC
+std::pair<
+  typename PB_DS_CLASS_C_DEC::iterator,
+  typename PB_DS_CLASS_C_DEC::iterator>
+PB_DS_CLASS_C_DEC::
+prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e)
+{
+  Node_Iterator nd_it = node_begin();
+  Node_Iterator end_nd_it = node_end();
+
+  const e_access_traits& r_traits =
+    get_e_access_traits();
+
+  const size_type given_range_length = std::distance(b, e);
+
+  while (true)
+    {
+      if (nd_it == end_nd_it)
+	return (std::make_pair(end(), end()));
+
+      const size_type common_range_length =
+	PB_DS_BASE_C_DEC::common_prefix_len(nd_it, b, e, r_traits);
+
+      if (common_range_length >= given_range_length)
+        {
+	  iterator ret_b = leftmost_it(nd_it);
+
+	  iterator ret_e = rightmost_it(nd_it);
+
+	  return (std::make_pair(ret_b, ++ret_e));
+        }
+
+      nd_it = next_child(nd_it, b, e, end_nd_it, r_traits);
+    }
+}
+
+PB_DS_CLASS_T_DEC
+typename PB_DS_CLASS_C_DEC::node_iterator
+PB_DS_CLASS_C_DEC::
+next_child(node_iterator nd_it, typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e, node_iterator end_nd_it, const e_access_traits& r_traits)
+{
+  const size_type num_children = nd_it.num_children();
+
+  node_iterator ret = end_nd_it;
+
+  size_type max_length = 0;
+
+  for (size_type i = 0; i < num_children; ++i)
+    {
+      node_iterator pot = nd_it.get_child(i);
+
+      const size_type common_range_length =
+	PB_DS_BASE_C_DEC::common_prefix_len(            pot, b, e, r_traits);
+
+      if (common_range_length > max_length)
+        {
+	  ret = pot;
+
+	  max_length = common_range_length;
+        }
+    }
+
+  return (ret);
+}
+
+PB_DS_CLASS_T_DEC
+inline void
+PB_DS_CLASS_C_DEC::
+operator()(node_iterator /*nd_it*/, const_node_iterator /*end_nd_it*/) const
+{ }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
new file mode 100644
index 000000000..2ecad89c9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_trie_e_access_traits.hpp
+ * Contains a sample probe policy.
+ */
+
+#ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
+#define PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
+
+// A sample trie element-access traits.
+class sample_trie_e_access_traits
+{
+
+public:
+
+  // Size type.
+  typedef std::size_t size_type;
+
+  // Key type.
+  typedef std::string key_type;
+
+  // Const key reference type.
+  typedef
+  typename Allocator::template rebind<
+    key_type>::other::const_reference
+  const_key_reference;
+
+  // Element const iterator type.
+  typedef std::string::const_iterator const_iterator;
+
+  // Element type.
+  typedef char e_type;
+
+  enum
+    {
+      max_size = 4
+    };
+
+public:
+
+  // Returns a const_iterator to the first element of r_key.
+  inline static const_iterator
+  begin(const_key_reference r_key);
+
+  // Returns a const_iterator to the after-last element of r_key.
+  inline static const_iterator
+  end(const_key_reference r_key);
+
+  // Maps an element to a position.
+  inline static size_type
+  e_pos(e_type e);
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
new file mode 100644
index 000000000..8b2c6b591
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file sample_trie_node_update.hpp
+ * Contains a samle node update functor.
+ */
+
+#ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
+#define PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
+
+// A sample node updator.
+template<typename Const_Node_Iterator,
+
+	 class Node_Iterator,
+
+	 class E_Access_Traits,
+
+	 class Allocator
+	 >
+class sample_trie_node_update
+{
+
+public:
+
+  // Metadata type.
+  typedef std::size_t metadata_type;
+
+protected:
+
+  // Default constructor.
+  sample_trie_node_update();
+
+  // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator.
+  inline void
+  operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
+
+};
+
+#endif // #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
new file mode 100644
index 000000000..228a4a5dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
@@ -0,0 +1,99 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file string_trie_e_access_traits_imp.hpp
+ * Contains a policy for extracting character positions from
+ *    a string for a vector-based PATRICIA tree
+ */
+
+PB_DS_CLASS_T_DEC
+detail::integral_constant<int, Reverse> PB_DS_CLASS_C_DEC::s_rev_ind;
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::size_type
+PB_DS_CLASS_C_DEC::
+e_pos(e_type e)
+{
+  return (static_cast<size_type>(e - min_e_val));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin(const_key_reference r_key)
+{
+  return (begin_imp(r_key, s_rev_ind));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end(const_key_reference r_key)
+{
+  return (end_imp(r_key, s_rev_ind));
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin_imp(const_key_reference r_key, detail::false_type)
+{
+  return (r_key.begin());
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+begin_imp(const_key_reference r_key, detail::true_type)
+{
+  return (r_key.rbegin());
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end_imp(const_key_reference r_key, detail::false_type)
+{
+  return (r_key.end());
+}
+
+PB_DS_CLASS_T_DEC
+inline typename PB_DS_CLASS_C_DEC::const_iterator
+PB_DS_CLASS_C_DEC::
+end_imp(const_key_reference r_key, detail::true_type)
+{
+  return (r_key.rend());
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
new file mode 100644
index 000000000..db912a008
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
@@ -0,0 +1,249 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trie_policy_base.hpp
+ * Contains an implementation of trie_policy_base.
+ */
+
+#ifndef PB_DS_TRIE_POLICY_BASE_HPP
+#define PB_DS_TRIE_POLICY_BASE_HPP
+
+#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+
+#define PB_DS_CLASS_T_DEC						\
+    template<								\
+						class Const_Node_Iterator, \
+						class Node_Iterator,	\
+						class E_Access_Traits,	\
+						typename Allocator>
+
+#define PB_DS_CLASS_C_DEC						\
+    trie_policy_base<							\
+						Const_Node_Iterator,	\
+						Node_Iterator,		\
+						E_Access_Traits,	\
+						Allocator>
+
+#define PB_DS_BASE_C_DEC						\
+    basic_tree_policy_base<				\
+								Const_Node_Iterator, \
+								Node_Iterator, \
+								Allocator>
+
+    template<typename Const_Node_Iterator,
+	     class Node_Iterator,
+	     class E_Access_Traits,
+	     class Allocator>
+    class trie_policy_base : public PB_DS_BASE_C_DEC
+    {
+
+    public:
+
+      typedef E_Access_Traits e_access_traits;
+
+      typedef Allocator allocator_type;
+
+      typedef typename allocator_type::size_type size_type;
+
+      typedef null_node_metadata metadata_type;
+
+      typedef Const_Node_Iterator const_node_iterator;
+
+      typedef Node_Iterator node_iterator;
+
+      typedef typename const_node_iterator::value_type const_iterator;
+
+      typedef typename node_iterator::value_type iterator;
+
+    public:
+
+      typedef typename PB_DS_BASE_C_DEC::key_type key_type;
+
+      typedef
+      typename PB_DS_BASE_C_DEC::const_key_reference
+      const_key_reference;
+
+    protected:
+
+      virtual const_iterator
+      end() const = 0;
+
+      virtual iterator
+      end() = 0;
+
+      virtual const_node_iterator
+      node_begin() const = 0;
+
+      virtual node_iterator
+      node_begin() = 0;
+
+      virtual const_node_iterator
+      node_end() const = 0;
+
+      virtual node_iterator
+      node_end() = 0;
+
+      virtual const e_access_traits& 
+      get_e_access_traits() const = 0;
+
+    private:
+      typedef
+      std::pair<
+      typename e_access_traits::const_iterator,
+      typename e_access_traits::const_iterator>
+      prefix_range_t;
+
+      typedef PB_DS_BASE_C_DEC base_type;
+
+    protected:
+      static size_type
+      common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits);
+
+      static iterator
+      leftmost_it(node_iterator nd_it);
+
+      static iterator
+      rightmost_it(node_iterator nd_it);
+
+      static bool
+      less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits);
+    };
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::size_type
+    PB_DS_CLASS_C_DEC::
+    common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits)
+    {
+      prefix_range_t pref_range = nd_it.valid_prefix();
+
+      typename e_access_traits::const_iterator b_l = pref_range.first;
+      typename e_access_traits::const_iterator e_l = pref_range.second;
+
+      const size_type range_length_l =
+	std::distance(b_l, e_l);
+
+      const size_type range_length_r =
+	std::distance(b_r, e_r);
+
+      if (range_length_r < range_length_l)
+	{
+	  std::swap(b_l, b_r);
+
+	  std::swap(e_l, e_r);
+	}
+
+      size_type ret = 0;
+
+      while (b_l != e_l)
+	{
+	  if (r_traits.e_pos(*b_l) != r_traits.e_pos(*b_r))
+	    return (ret);
+
+	  ++ret;
+
+	  ++b_l;
+
+	  ++b_r;
+	}
+
+      return (ret);
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    leftmost_it(node_iterator nd_it)
+    {
+      if (nd_it.num_children() == 0)
+	return (*nd_it);
+
+      return (leftmost_it(nd_it.get_child(0)));
+    }
+
+    PB_DS_CLASS_T_DEC
+    typename PB_DS_CLASS_C_DEC::iterator
+    PB_DS_CLASS_C_DEC::
+    rightmost_it(node_iterator nd_it)
+    {
+      const size_type num_children = nd_it.num_children();
+
+      if (num_children == 0)
+	return (*nd_it);
+
+      return (rightmost_it(nd_it.get_child(num_children - 1)));
+    }
+
+    PB_DS_CLASS_T_DEC
+    bool
+    PB_DS_CLASS_C_DEC::
+    less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits)
+    {
+      while (b_l != e_l)
+	{
+	  if (b_r == e_r)
+	    return (false);
+
+	  size_type l_pos =
+	    r_traits.e_pos(*b_l);
+	  size_type r_pos =
+	    r_traits.e_pos(*b_r);
+
+	  if (l_pos != r_pos)
+	    return (l_pos < r_pos);
+
+	  ++b_l;
+	  ++b_r;
+	}
+
+      return (b_r != e_r);
+    }
+
+#undef PB_DS_CLASS_T_DEC
+
+#undef PB_DS_CLASS_C_DEC
+
+#undef PB_DS_BASE_C_DEC
+
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif // #ifndef PB_DS_TRIE_POLICY_BASE_HPP
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/type_utils.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/type_utils.hpp
new file mode 100644
index 000000000..143110c0a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/type_utils.hpp
@@ -0,0 +1,167 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file type_utils.hpp
+ * Contains utilities for handnling types. All of these classes are based on
+ * Modern C++ by Andrei Alxandrescu.
+ */
+
+#ifndef PB_DS_TYPE_UTILS_HPP
+#define PB_DS_TYPE_UTILS_HPP
+
+#include <cstddef>
+#include <utility>
+#include <tr1/type_traits>
+#include <ext/type_traits.h>
+#include <ext/numeric_traits.h>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    using std::tr1::is_same;
+    using std::tr1::is_const;
+    using std::tr1::is_pointer;
+    using std::tr1::is_reference;
+    using std::tr1::is_fundamental;
+    using std::tr1::is_member_object_pointer;
+    using std::tr1::is_member_pointer;
+    using std::tr1::is_base_of;
+    using std::tr1::remove_const;
+    using std::tr1::remove_reference;
+
+    // Need integral_const<bool, true> <-> integral_const<int, 1>, so
+    // because of this use the following typedefs instead of importing
+    // std::tr1's.
+    using std::tr1::integral_constant;
+    typedef std::tr1::integral_constant<int, 1> true_type;
+    typedef std::tr1::integral_constant<int, 0> false_type;
+
+    using __gnu_cxx::__conditional_type;
+    using __gnu_cxx::__numeric_traits;
+
+    template<typename T>
+    struct is_const_pointer
+    {
+      enum
+	{
+	  value = is_const<T>::value && is_pointer<T>::value
+	};
+    };
+
+    template<typename T>
+    struct is_const_reference
+    {
+      enum
+	{
+	  value = is_const<T>::value && is_reference<T>::value
+	};
+    };
+
+    template<typename T>
+    struct is_simple
+    {
+      enum
+	{
+	  value = is_fundamental<typename remove_const<T>::type>::value 
+	  || is_pointer<typename remove_const<T>::type>::value 
+	  || is_member_pointer<T>::value 
+	};
+    };
+
+    template<typename T>
+    class is_pair
+    {
+    private:
+      template<typename U>
+      struct is_pair_imp
+      {
+	enum
+	  {
+	    value = 0
+	  };
+      };
+
+      template<typename U, typename V>
+      struct is_pair_imp<std::pair<U,V> >
+      {
+	enum
+	  {
+	    value = 1
+	  };
+      };
+
+    public:
+      enum
+	{
+	  value = is_pair_imp<T>::value
+	};
+    };
+
+    // Use C++0x's static_assert if possible.
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#define PB_DS_STATIC_ASSERT(UNIQUE, E)  static_assert(E, #UNIQUE)
+#else
+    template<bool>
+    struct __static_assert;
+
+    template<>
+    struct __static_assert<true>
+    { };
+
+    template<int>
+    struct __static_assert_dumclass
+    {
+      enum
+	{
+	  v = 1
+	};
+    };
+
+#define PB_DS_STATIC_ASSERT(UNIQUE, E)  \
+    typedef __gnu_pbds::detail::__static_assert_dumclass<sizeof(__gnu_pbds::detail::__static_assert<bool(E)>)> UNIQUE##__static_assert_type
+
+#endif
+
+    template<typename Type>
+    struct type_to_type
+    {
+      typedef Type type;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/types_traits.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/types_traits.hpp
new file mode 100644
index 000000000..6d5a07838
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/types_traits.hpp
@@ -0,0 +1,82 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file types_traits.hpp
+ * Contains a traits class of types used by containers.
+ */
+
+#ifndef PB_DS_TYPES_TRAITS_HPP
+#define PB_DS_TYPES_TRAITS_HPP
+
+#include <ext/pb_ds/detail/basic_types.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <utility>
+
+namespace __gnu_pbds
+{
+  namespace detail
+  {
+    template<typename Key, typename Mapped, typename Alloc, bool Store_Extra>
+    struct vt_base_selector
+    {
+      typedef value_type_base<Key, Mapped, Alloc, Store_Extra> type;
+    };
+
+    template<typename Key, typename Mapped, typename Alloc, bool Store_Extra>
+    struct types_traits 
+    : public vt_base_selector<Key, Mapped, Alloc, Store_Extra>::type
+    {
+      typedef typename Alloc::template rebind<Key>::other key_allocator;
+      typedef typename key_allocator::value_type key_type;
+      typedef typename key_allocator::pointer key_pointer;
+      typedef typename key_allocator::const_pointer const_key_pointer;
+      typedef typename key_allocator::reference key_reference;
+      typedef typename key_allocator::const_reference const_key_reference;
+      typedef typename Alloc::size_type size_type;
+
+      // Extra value (used when the extra value is stored with each value).
+      typedef std::pair<size_type, size_type> 	comp_hash;
+
+      typedef integral_constant<int, Store_Extra> store_extra;
+      store_extra	m_store_extra_indicator;
+
+      typedef typename no_throw_copies<Key, Mapped>::indicator no_throw_copies;
+      no_throw_copies 	m_no_throw_copies_indicator;
+    };
+  } // namespace detail
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
new file mode 100644
index 000000000..1641792b5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
@@ -0,0 +1,129 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_iterator.hpp
+ * Contains an iterator class used for const ranging over the elements of the
+ *     table.
+ */
+
+// Const range-type iterator.
+class const_iterator_ : 
+  public const_point_iterator_
+
+{
+
+public:
+
+  // Category.
+  typedef std::forward_iterator_tag iterator_category;
+
+  // Difference type.
+  typedef typename Allocator::difference_type difference_type;
+
+  // Iterator's value type.
+  typedef value_type_ value_type;
+
+  // Iterator's pointer type.
+  typedef pointer_ pointer;
+
+  // Iterator's const pointer type.
+  typedef const_pointer_ const_pointer;
+
+  // Iterator's reference type.
+  typedef reference_ reference;
+
+  // Iterator's const reference type.
+  typedef const_reference_ const_reference;
+
+public:
+
+  // Default constructor.
+  inline
+  const_iterator_()
+
+    : m_p_tbl(0)
+  { }
+
+  // Increments.
+  inline const_iterator_& 
+  operator++()
+  {
+    m_p_tbl->inc_it_state(base_type::m_p_value, m_pos);
+
+    return (*this);
+  }
+
+  // Increments.
+  inline const_iterator_
+  operator++(int)
+  {
+    const_iterator_ ret =* this;
+
+    m_p_tbl->inc_it_state(base_type::m_p_value, m_pos);
+
+    return (ret);
+  }
+
+protected:
+
+  typedef const_point_iterator_ base_type;
+
+protected:
+
+  /**
+   *  Constructor used by the table to initiate the generalized
+   *      pointer and position (e.g., this is called from within a find()
+   *      of a table.
+   * */
+  inline
+  const_iterator_(const_pointer_ p_value,  PB_DS_GEN_POS pos,  const PB_DS_CLASS_C_DEC* p_tbl) : const_point_iterator_(p_value),
+												 m_p_tbl(p_tbl),
+												 m_pos(pos)
+  { }
+
+protected:
+
+  /**
+   *  Pointer to the table object which created the iterator (used for
+   *      incrementing its position.
+   * */
+  const PB_DS_CLASS_C_DEC* m_p_tbl;
+
+  PB_DS_GEN_POS m_pos;
+
+  friend class PB_DS_CLASS_C_DEC;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
new file mode 100644
index 000000000..1cda69bb8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
@@ -0,0 +1,151 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file const_point_iterator.hpp
+ * Contains an iterator class returned by the tables' const find and insert
+ *     methods.
+ */
+
+class point_iterator_;
+
+// Const point-type iterator.
+class const_point_iterator_
+{
+
+public:
+
+  // Category.
+  typedef trivial_iterator_tag iterator_category;
+
+  // Difference type.
+  typedef trivial_iterator_difference_type difference_type;
+
+  // Iterator's value type.
+  typedef value_type_ value_type;
+
+  // Iterator's pointer type.
+  typedef pointer_ pointer;
+
+  // Iterator's const pointer type.
+  typedef const_pointer_ const_pointer;
+
+  // Iterator's reference type.
+  typedef reference_ reference;
+
+  // Iterator's const reference type.
+  typedef const_reference_ const_reference;
+
+public:
+
+  inline
+  const_point_iterator_(const_pointer p_value) : m_p_value(p_value)
+  { }
+
+  // Default constructor.
+  inline
+  const_point_iterator_()
+
+    : m_p_value(0)
+  { }
+
+  // Copy constructor.
+  inline
+  const_point_iterator_(const const_point_iterator_& other)
+
+    : m_p_value(other.m_p_value)
+  { }
+
+  // Copy constructor.
+  inline
+  const_point_iterator_(const point_iterator_& other)
+
+    : m_p_value(other.m_p_value)
+  { }
+
+  // Access.
+  inline const_pointer
+  operator->() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(m_p_value != 0);
+
+    return (m_p_value);
+  }
+
+  // Access.
+  inline const_reference
+  operator*() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(m_p_value != 0);
+
+    return (*m_p_value);
+  }
+
+  // Compares content to a different iterator object.
+  inline bool
+  operator==(const point_iterator_& other) const
+  {
+    return (m_p_value == other.m_p_value);
+  }
+
+  // Compares content to a different iterator object.
+  inline bool
+  operator==(const const_point_iterator_& other) const
+  {
+    return (m_p_value == other.m_p_value);
+  }
+
+  // Compares content (negatively) to a different iterator object.
+  inline bool
+  operator!=(const point_iterator_& other) const
+  {
+    return (m_p_value != other.m_p_value);
+  }
+
+  // Compares content (negatively) to a different iterator object.
+  inline bool
+  operator!=(const const_point_iterator_& other) const
+  {
+    return (m_p_value != other.m_p_value);
+  }
+
+protected:
+  const_pointer m_p_value;
+
+  friend class point_iterator_;
+
+  friend class PB_DS_CLASS_C_DEC;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
new file mode 100644
index 000000000..1aaa6824a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
@@ -0,0 +1,150 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file iterator.hpp
+ * Contains an iterator_ class used for ranging over the elements of the
+ *    table.
+ */
+
+// Range-type iterator.
+class iterator_ : 
+  public const_iterator_
+
+{
+
+public:
+
+  // Category.
+  typedef std::forward_iterator_tag iterator_category;
+
+  // Difference type.
+  typedef typename Allocator::difference_type difference_type;
+
+  // Iterator's value type.
+  typedef value_type_ value_type;
+
+  // Iterator's pointer type.
+  typedef pointer_ pointer;
+
+  // Iterator's const pointer type.
+  typedef const_pointer_ const_pointer;
+
+  // Iterator's reference type.
+  typedef reference_ reference;
+
+  // Iterator's const reference type.
+  typedef const_reference_ const_reference;
+
+public:
+
+  // Default constructor.
+  inline
+  iterator_()
+
+    : const_iterator_(0, PB_DS_GEN_POS(), 0)
+  { }
+
+  // Conversion to a point-type iterator.
+  inline
+  operator point_iterator_()
+  {
+    return (point_iterator_(
+			    const_cast<pointer>(const_iterator_::m_p_value)));
+  }
+
+  // Conversion to a point-type iterator.
+  inline
+  operator const point_iterator_() const
+  {
+    return (point_iterator_(
+			    const_cast<pointer>(const_iterator_::m_p_value)));
+  }
+
+  // Access.
+  inline pointer
+  operator->() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != 0);
+
+    return (const_cast<pointer>(base_type::m_p_value));
+  }
+
+  // Access.
+  inline reference
+  operator*() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != 0);
+
+    return (const_cast<reference>(*base_type::m_p_value));
+  }
+
+  // Increments.
+  inline iterator_& 
+  operator++()
+  {
+    base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos);
+
+    return (*this);
+  }
+
+  // Increments.
+  inline iterator_
+  operator++(int)
+  {
+    iterator_ ret =* this;
+
+    base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos);
+
+    return (ret);
+  }
+
+protected:
+  typedef const_iterator_ base_type;
+
+protected:
+
+  /**
+   *  Constructor used by the table to initiate the generalized
+   *      pointer and position (e.g., this is called from within a find()
+   *      of a table.
+   * */
+  inline
+  iterator_(pointer p_value, PB_DS_GEN_POS pos, PB_DS_CLASS_C_DEC* p_tbl) : const_iterator_(p_value, pos, p_tbl)
+  { }
+
+  friend class PB_DS_CLASS_C_DEC;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
new file mode 100644
index 000000000..e17a5bf17
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
@@ -0,0 +1,143 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file point_iterator.hpp
+ * Contains an iterator class returned by the tables' find and insert
+ *     methods.
+ */
+
+// Find type iterator.
+class point_iterator_
+{
+
+public:
+
+  // Category.
+  typedef trivial_iterator_tag iterator_category;
+
+  // Difference type.
+  typedef trivial_iterator_difference_type difference_type;
+
+  // Iterator's value type.
+  typedef value_type_ value_type;
+
+  // Iterator's pointer type.
+  typedef pointer_ pointer;
+
+  // Iterator's const pointer type.
+  typedef const_pointer_ const_pointer;
+
+  // Iterator's reference type.
+  typedef reference_ reference;
+
+  // Iterator's const reference type.
+  typedef const_reference_ const_reference;
+
+public:
+
+  // Default constructor.
+  inline
+  point_iterator_()
+
+    : m_p_value(0)
+  { }
+
+  // Copy constructor.
+  inline
+  point_iterator_(const point_iterator_& other)
+
+    : m_p_value(other.m_p_value)
+  { }
+
+  // Access.
+  inline pointer
+  operator->() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(m_p_value != 0);
+
+    return (m_p_value);
+  }
+
+  // Access.
+  inline reference
+  operator*() const
+  {
+    _GLIBCXX_DEBUG_ASSERT(m_p_value != 0);
+
+    return (*m_p_value);
+  }
+
+  // Compares content to a different iterator object.
+  inline bool
+  operator==(const point_iterator_& other) const
+  {
+    return (m_p_value == other.m_p_value);
+  }
+
+  // Compares content to a different iterator object.
+  inline bool
+  operator==(const const_point_iterator_& other) const
+  {
+    return (m_p_value == other.m_p_value);
+  }
+
+  // Compares content to a different iterator object.
+  inline bool
+  operator!=(const point_iterator_& other) const
+  {
+    return (m_p_value != other.m_p_value);
+  }
+
+  // Compares content (negatively) to a different iterator object.
+  inline bool
+  operator!=(const const_point_iterator_& other) const
+  {
+    return (m_p_value != other.m_p_value);
+  }
+
+  inline
+  point_iterator_(pointer p_value) : m_p_value(p_value)
+  { }
+
+protected:
+  friend class const_point_iterator_;
+
+  friend class PB_DS_CLASS_C_DEC;
+
+protected:
+  pointer m_p_value;
+};
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/exception.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/exception.hpp
new file mode 100644
index 000000000..b34e3ed26
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/exception.hpp
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file exception.hpp
+ * Contains exception classes.
+ */
+
+#ifndef PB_DS_EXCEPTION_HPP
+#define PB_DS_EXCEPTION_HPP
+
+#include <bits/c++config.h>
+#include <stdexcept>
+#include <cstdlib>
+
+namespace __gnu_pbds
+{
+  // Base class for exceptions.
+  struct container_error : public std::logic_error
+  {
+    container_error() 
+    : std::logic_error(__N("__gnu_pbds::container_error")) { }
+  };
+
+  // An entry cannot be inserted into a container object for logical
+  // reasons (not, e.g., if memory is unabvailable, in which case
+  // the allocator_type's exception will be thrown).
+  struct insert_error : public container_error { };
+
+  // A join cannot be performed logical reasons (i.e., the ranges of
+  // the two container objects being joined overlaps.
+  struct join_error : public container_error { };
+
+  // A container cannot be resized.
+  struct resize_error : public container_error { };
+
+#if __EXCEPTIONS
+  inline void
+  __throw_container_error(void)
+  { throw container_error(); }
+
+  inline void
+  __throw_insert_error(void)
+  { throw insert_error(); }
+
+  inline void
+  __throw_join_error(void)
+  { throw join_error(); }
+
+  inline void
+  __throw_resize_error(void)
+  { throw resize_error(); }
+#else
+  inline void
+  __throw_container_error(void)
+  { std::abort(); }
+
+  inline void
+  __throw_insert_error(void)
+  { std::abort(); }
+
+  inline void
+  __throw_join_error(void)
+  { std::abort(); }
+
+  inline void
+  __throw_resize_error(void)
+  { std::abort(); }
+#endif
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/hash_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/hash_policy.hpp
new file mode 100644
index 000000000..f3bc86e97
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/hash_policy.hpp
@@ -0,0 +1,605 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file hash_policy.hpp
+ * Contains hash-related policies.
+ */
+
+#ifndef PB_DS_HASH_POLICY_HPP
+#define PB_DS_HASH_POLICY_HPP
+
+#include <bits/c++config.h>
+#include <algorithm>
+#include <vector>
+#include <cmath>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp>
+#include <ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp>
+#include <ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp>
+
+namespace __gnu_pbds
+{
+  // A null hash function, indicating that the combining hash function
+  // is actually a ranged hash function.
+  struct null_hash_fn
+  { };
+
+  // A null probe function, indicating that the combining probe
+  // function is actually a ranged probe function.
+  struct null_probe_fn
+  { };
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC linear_probe_fn<Size_Type>
+
+  // A probe sequence policy using fixed increments.
+  template<typename Size_Type = std::size_t>
+  class linear_probe_fn
+  {
+  public:
+    typedef Size_Type size_type;
+
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    // Returns the i-th offset from the hash value.
+    inline size_type
+    operator()(size_type i) const;
+  };
+
+#include <ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC quadratic_probe_fn<Size_Type>
+
+  // A probe sequence policy using square increments.
+  template<typename Size_Type = std::size_t>
+  class quadratic_probe_fn
+  {
+  public:
+    typedef Size_Type size_type;
+
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    // Returns the i-th offset from the hash value.
+    inline size_type
+    operator()(size_type i) const;
+  };
+
+#include <ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC direct_mask_range_hashing<Size_Type>
+
+  // A mask range-hashing class (uses a bit-mask).
+  template<typename Size_Type = std::size_t>
+  class direct_mask_range_hashing 
+  : public detail::mask_based_range_hashing<Size_Type>
+  {
+  private:
+    typedef detail::mask_based_range_hashing<Size_Type> mask_based_base;
+
+  public:
+    typedef Size_Type size_type;
+
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    void
+    notify_resized(size_type size);
+
+    // Transforms the __hash value hash into a ranged-hash value
+    // (using a bit-mask).
+    inline size_type
+    operator()(size_type hash) const;
+  };
+
+#include <ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC direct_mod_range_hashing<Size_Type>
+
+  // A mod range-hashing class (uses the modulo function).
+  template<typename Size_Type = std::size_t>
+  class direct_mod_range_hashing 
+  : public detail::mod_based_range_hashing<Size_Type>
+  {
+  public:
+    typedef Size_Type size_type;
+      
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    void
+    notify_resized(size_type size);
+      
+    // Transforms the __hash value hash into a ranged-hash value
+    // (using a modulo operation).
+    inline size_type
+    operator()(size_type hash) const;
+      
+  private:
+    typedef detail::mod_based_range_hashing<size_type> mod_based_base;
+  };
+
+#include <ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<bool External_Load_Access, typename Size_Type>
+#define PB_DS_CLASS_C_DEC hash_load_check_resize_trigger<External_Load_Access, Size_Type>
+#define PB_DS_SIZE_BASE_C_DEC detail::hash_load_check_resize_trigger_size_base<Size_Type, External_Load_Access>
+
+  // A resize trigger policy based on a load check. It keeps the
+  // load factor between some load factors load_min and load_max.
+  template<bool External_Load_Access = false, typename Size_Type = std::size_t>
+  class hash_load_check_resize_trigger : private PB_DS_SIZE_BASE_C_DEC
+  {
+  public:
+    typedef Size_Type size_type;
+
+    enum
+      {
+	external_load_access = External_Load_Access
+      };
+
+    // Default constructor, or constructor taking load_min and
+    // load_max load factors between which this policy will keep the
+    // actual load.
+    hash_load_check_resize_trigger(float load_min = 0.125,
+				   float load_max = 0.5);
+
+    void
+    swap(hash_load_check_resize_trigger& other);
+
+    virtual
+    ~hash_load_check_resize_trigger();
+
+    // Returns a pair of the minimal and maximal loads, respectively.
+    inline std::pair<float, float>
+    get_loads() const;
+
+    // Sets the loads through a pair of the minimal and maximal
+    // loads, respectively.
+    void
+    set_loads(std::pair<float, float> load_pair);
+
+  protected:
+    inline void
+    notify_insert_search_start();
+
+    inline void
+    notify_insert_search_collision();
+
+    inline void
+    notify_insert_search_end();
+
+    inline void
+    notify_find_search_start();
+
+    inline void
+    notify_find_search_collision();
+
+    inline void
+    notify_find_search_end();
+
+    inline void
+    notify_erase_search_start();
+
+    inline void
+    notify_erase_search_collision();
+
+    inline void
+    notify_erase_search_end();
+
+    // Notifies an element was inserted. The total number of entries
+    // in the table is num_entries.
+    inline void
+    notify_inserted(size_type num_entries);
+
+    inline void
+    notify_erased(size_type num_entries);
+
+    // Notifies the table was cleared.
+    void
+    notify_cleared();
+
+    // Notifies the table was resized as a result of this object's
+    // signifying that a resize is needed.
+    void
+    notify_resized(size_type new_size);
+
+    void
+    notify_externally_resized(size_type new_size);
+
+    inline bool
+    is_resize_needed() const;
+
+    inline bool
+    is_grow_needed(size_type size, size_type num_entries) const;
+
+  private:
+    virtual void
+    do_resize(size_type new_size);
+
+    typedef PB_DS_SIZE_BASE_C_DEC size_base;
+
+#ifdef _GLIBCXX_DEBUG
+    void
+    assert_valid() const;
+#endif 
+
+    float 	m_load_min;
+    float 	m_load_max;
+    size_type 	m_next_shrink_size;
+    size_type 	m_next_grow_size;
+    bool 	m_resize_needed;
+  };
+
+#include <ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_SIZE_BASE_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<bool External_Load_Access, typename Size_Type>
+#define PB_DS_CLASS_C_DEC cc_hash_max_collision_check_resize_trigger<External_Load_Access, Size_Type>
+
+  // A resize trigger policy based on collision checks. It keeps the
+  // simulated load factor lower than some given load factor.
+  template<bool External_Load_Access = false, typename Size_Type = std::size_t>
+  class cc_hash_max_collision_check_resize_trigger
+  {
+  public:
+    typedef Size_Type size_type;
+
+    enum
+      {
+	external_load_access = External_Load_Access
+      };
+
+    // Default constructor, or constructor taking load, a __load
+    // factor which it will attempt to maintain.
+    cc_hash_max_collision_check_resize_trigger(float load = 0.5);
+
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+    // Returns the current load.
+    inline float
+    get_load() const;
+
+    // Sets the load; does not resize the container.
+    void
+    set_load(float load);
+
+  protected:
+    inline void
+    notify_insert_search_start();
+
+    inline void
+    notify_insert_search_collision();
+
+    inline void
+    notify_insert_search_end();
+
+    inline void
+    notify_find_search_start();
+
+    inline void
+    notify_find_search_collision();
+
+    inline void
+    notify_find_search_end();
+
+    inline void
+    notify_erase_search_start();
+
+    inline void
+    notify_erase_search_collision();
+
+    inline void
+    notify_erase_search_end();
+
+    inline void
+    notify_inserted(size_type num_entries);
+
+    inline void
+    notify_erased(size_type num_entries);
+
+    void
+    notify_cleared();
+
+    // Notifies the table was resized as a result of this object's
+    // signifying that a resize is needed.
+    void
+    notify_resized(size_type new_size);
+
+    void
+    notify_externally_resized(size_type new_size);
+
+    inline bool
+    is_resize_needed() const;
+
+    inline bool
+    is_grow_needed(size_type size, size_type num_entries) const;
+
+  private:
+    void
+    calc_max_num_coll();
+
+    inline void
+    calc_resize_needed();
+
+    float 	m_load;
+    size_type 	m_size;
+    size_type 	m_num_col;
+    size_type 	m_max_col;
+    bool 	m_resize_needed;
+  };
+
+#include <ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Type>
+#define PB_DS_CLASS_C_DEC hash_exponential_size_policy<Size_Type>
+
+  // A size policy whose sequence of sizes form an exponential
+  // sequence (typically powers of 2.
+  template<typename Size_Type = std::size_t>
+  class hash_exponential_size_policy
+  {
+  public:
+    typedef Size_Type size_type;
+
+    // Default constructor, or onstructor taking a start_size, or
+    // constructor taking a start size and grow_factor. The policy
+    // will use the sequence of sizes start_size, start_size*
+    // grow_factor, start_size* grow_factor^2, ...
+    hash_exponential_size_policy(size_type start_size = 8,
+				 size_type grow_factor = 2);
+
+    void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    size_type
+    get_nearest_larger_size(size_type size) const;
+
+    size_type
+    get_nearest_smaller_size(size_type size) const;
+
+  private:
+    size_type m_start_size;
+    size_type m_grow_factor;
+  };
+
+#include <ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC
+#define PB_DS_CLASS_C_DEC hash_prime_size_policy
+
+  // A size policy whose sequence of sizes form a nearly-exponential
+  // sequence of primes.
+  class hash_prime_size_policy
+  {
+  public:
+    // Size type.
+    typedef std::size_t size_type;
+
+    // Default constructor, or onstructor taking a start_size The
+    // policy will use the sequence of sizes approximately
+    // start_size, start_size* 2, start_size* 2^2, ...
+    hash_prime_size_policy(size_type start_size = 8);
+
+    inline void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+  protected:
+    size_type
+    get_nearest_larger_size(size_type size) const;
+
+    size_type
+    get_nearest_smaller_size(size_type size) const;
+
+  private:
+    size_type m_start_size;
+  };
+
+#include <ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<typename Size_Policy, typename Trigger_Policy, bool External_Size_Access, typename Size_Type>
+
+#define PB_DS_CLASS_C_DEC hash_standard_resize_policy<Size_Policy, Trigger_Policy, External_Size_Access, Size_Type>
+
+  // A resize policy which delegates operations to size and trigger policies.
+  template<typename Size_Policy = hash_exponential_size_policy<>,
+	   typename Trigger_Policy = hash_load_check_resize_trigger<>,
+	   bool External_Size_Access = false,
+	   typename Size_Type = std::size_t>
+  class hash_standard_resize_policy 
+  : public Size_Policy, public Trigger_Policy
+  {
+  public:
+    typedef Size_Type 		size_type;
+    typedef Trigger_Policy 	trigger_policy;
+    typedef Size_Policy 	size_policy;
+
+    enum
+      {
+	external_size_access = External_Size_Access
+      };
+
+    // Default constructor.
+    hash_standard_resize_policy();
+
+    // constructor taking some policies r_size_policy will be copied
+    // by the Size_Policy object of this object.
+    hash_standard_resize_policy(const Size_Policy& r_size_policy);
+
+    // constructor taking some policies. r_size_policy will be
+    // copied by the Size_Policy object of this
+    // object. r_trigger_policy will be copied by the Trigger_Policy
+    // object of this object.
+    hash_standard_resize_policy(const Size_Policy& r_size_policy, 
+				const Trigger_Policy& r_trigger_policy);
+
+    virtual
+    ~hash_standard_resize_policy();
+
+    inline void
+    swap(PB_DS_CLASS_C_DEC& other);
+
+    // Access to the Size_Policy object used.
+    Size_Policy& 
+    get_size_policy();
+
+    // Const access to the Size_Policy object used.
+    const Size_Policy& 
+    get_size_policy() const;
+
+    // Access to the Trigger_Policy object used.
+    Trigger_Policy& 
+    get_trigger_policy();
+
+    // Access to the Trigger_Policy object used.
+    const Trigger_Policy& 
+    get_trigger_policy() const;
+
+    // Returns the actual size of the container.
+    inline size_type
+    get_actual_size() const;
+
+    // Resizes the container to suggested_new_size, a suggested size
+    // (the actual size will be determined by the Size_Policy
+    // object).
+    void
+    resize(size_type suggested_new_size);
+
+  protected:
+    inline void
+    notify_insert_search_start();
+
+    inline void
+    notify_insert_search_collision();
+
+    inline void
+    notify_insert_search_end();
+
+    inline void
+    notify_find_search_start();
+
+    inline void
+    notify_find_search_collision();
+
+    inline void
+    notify_find_search_end();
+
+    inline void
+    notify_erase_search_start();
+
+    inline void
+    notify_erase_search_collision();
+
+    inline void
+    notify_erase_search_end();
+
+    inline void
+    notify_inserted(size_type num_e);
+
+    inline void
+    notify_erased(size_type num_e);
+
+    void
+    notify_cleared();
+
+    void
+    notify_resized(size_type new_size);
+
+    inline bool
+    is_resize_needed() const;
+
+    // Queries what the new size should be, when the container is
+    // resized naturally. The current __size of the container is
+    // size, and the number of used entries within the container is
+    // num_used_e.
+    size_type
+    get_new_size(size_type size, size_type num_used_e) const;
+
+  private:
+    // Resizes to new_size.
+    virtual void
+    do_resize(size_type new_size);
+
+    typedef Trigger_Policy trigger_policy_base;
+
+    typedef Size_Policy size_policy_base;
+
+    size_type m_size;
+  };
+
+#include <ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/list_update_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/list_update_policy.hpp
new file mode 100644
index 000000000..54a67c6e5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/list_update_policy.hpp
@@ -0,0 +1,139 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file list_update_policy.hpp
+ * Contains policies for list update containers.
+ */
+
+#ifndef PB_DS_LU_POLICY_HPP
+#define PB_DS_LU_POLICY_HPP
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp>
+
+namespace __gnu_pbds
+{
+  // A null type that means that each link in a list-based container
+  // does not actually need metadata.
+  struct null_lu_metadata
+  { };
+
+#define PB_DS_CLASS_T_DEC template<typename Allocator>
+#define PB_DS_CLASS_C_DEC move_to_front_lu_policy<Allocator>
+
+  // A list-update policy that unconditionally moves elements to the
+  // front of the list.
+  template<typename Allocator = std::allocator<char> >
+  class move_to_front_lu_policy
+  {
+  public:
+    typedef Allocator allocator_type;
+      
+    // Metadata on which this functor operates.
+    typedef null_lu_metadata metadata_type;
+      
+    // Reference to metadata on which this functor operates.
+    typedef typename allocator_type::template rebind<metadata_type>::other metadata_rebind;
+    typedef typename metadata_rebind::reference metadata_reference;
+      
+    // Creates a metadata object.
+    metadata_type
+    operator()() const;
+      
+    // Decides whether a metadata object should be moved to the front
+    // of the list.
+    inline bool
+    operator()(metadata_reference r_metadata) const;
+      
+  private:
+    static null_lu_metadata s_metadata;
+  };
+  
+#include <ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC template<std::size_t Max_Count, class Allocator>
+#define PB_DS_CLASS_C_DEC counter_lu_policy<Max_Count, Allocator>
+
+  // A list-update policy that moves elements to the front of the list
+  // based on the counter algorithm.
+  template<std::size_t Max_Count = 5,
+	   typename Allocator = std::allocator<char> >
+  class counter_lu_policy 
+  : private detail::counter_lu_policy_base<typename Allocator::size_type>
+  {
+  public:
+    typedef Allocator allocator_type;
+
+    enum
+      {
+	max_count = Max_Count
+      };
+
+    typedef typename allocator_type::size_type size_type;
+
+    // Metadata on which this functor operates.
+    typedef detail::counter_lu_metadata<size_type> metadata_type;
+
+    // Reference to metadata on which this functor operates.
+    typedef typename Allocator::template rebind<metadata_type>::other metadata_rebind;
+    typedef typename metadata_rebind::reference metadata_reference;
+
+    // Creates a metadata object.
+    metadata_type
+    operator()() const;
+
+    // Decides whether a metadata object should be moved to the front
+    // of the list.
+    bool
+    operator()(metadata_reference r_metadata) const;
+
+  private:
+    typedef detail::counter_lu_policy_base<typename Allocator::size_type> base_type;
+  };
+
+#include <ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/priority_queue.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/priority_queue.hpp
new file mode 100644
index 000000000..b6088e7d7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/priority_queue.hpp
@@ -0,0 +1,129 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file priority_queue.hpp
+ * Contains priority_queues.
+ */
+
+#ifndef PB_DS_PRIORITY_QUEUE_HPP
+#define PB_DS_PRIORITY_QUEUE_HPP
+
+#include <bits/c++config.h>
+#include <ext/pb_ds/tag_and_trait.hpp>
+#include <ext/pb_ds/detail/priority_queue_base_dispatch.hpp>
+#include <ext/pb_ds/detail/standard_policies.hpp>
+
+namespace __gnu_pbds
+{
+  // A priority queue.
+  template<typename Value_Type, 
+	   typename Cmp_Fn = std::less<Value_Type>,
+	   typename Tag = pairing_heap_tag,
+	   typename Allocator = std::allocator<char> >
+  class priority_queue 
+  : public detail::priority_queue_base_dispatch<Value_Type,
+						Cmp_Fn,Tag,Allocator>::type
+  {
+  private:
+    typedef typename
+    detail::priority_queue_base_dispatch<Value_Type, Cmp_Fn,
+					 Tag, Allocator>::type base_type;
+
+  public:
+    typedef Value_Type 					value_type;
+    typedef Cmp_Fn 					cmp_fn;
+    typedef Tag 					container_category;
+    typedef Allocator 					allocator_type;
+    typedef typename allocator_type::size_type 		size_type;
+    typedef typename allocator_type::difference_type 	difference_type;
+
+    typedef typename allocator_type::template rebind<value_type>::other value_rebind;
+    typedef typename value_rebind::reference 		reference;
+    typedef typename value_rebind::const_reference 	const_reference;
+    typedef typename value_rebind::pointer 	   	pointer;
+    typedef typename value_rebind::const_pointer 	const_pointer;
+
+    typedef typename base_type::const_point_iterator const_point_iterator;
+    typedef typename base_type::point_iterator 		point_iterator;
+    typedef typename base_type::const_iterator 		const_iterator;
+    typedef typename base_type::iterator 		iterator;
+
+    priority_queue() { }
+
+    // Constructor taking some policy objects. r_cmp_fn will be copied
+    // by the Cmp_Fn object of the container object.
+    priority_queue(const cmp_fn& r_cmp_fn) : base_type(r_cmp_fn) { }
+
+    // Constructor taking __iterators to a range of value_types. The
+    // value_types between first_it and last_it will be inserted into
+    // the container object.
+    template<typename It>
+    priority_queue(It first_it, It last_it)
+    { base_type::copy_from_range(first_it, last_it); }
+
+    // Constructor taking __iterators to a range of value_types and
+    // some policy objects The value_types between first_it and
+    // last_it will be inserted into the container object. r_cmp_fn
+    // will be copied by the cmp_fn object of the container object.
+    template<typename It>
+    priority_queue(It first_it, It last_it, const cmp_fn& r_cmp_fn)
+    : base_type(r_cmp_fn)
+    { base_type::copy_from_range(first_it, last_it); }
+
+    priority_queue(const priority_queue& other)
+    : base_type((const base_type& )other) { }
+
+    virtual
+    ~priority_queue() { }
+
+    priority_queue& 
+    operator=(const priority_queue& other)
+    {
+      if (this != &other)
+	{
+	  priority_queue tmp(other);
+	  swap(tmp);
+	}
+      return *this;
+    }
+
+    void
+    swap(priority_queue& other)
+    { base_type::swap(other); }
+  };
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tag_and_trait.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tag_and_trait.hpp
new file mode 100644
index 000000000..ef4453361
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tag_and_trait.hpp
@@ -0,0 +1,364 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file tag_and_trait.hpp
+ * Contains tags and traits, e.g., ones describing underlying
+ *    data structures.
+ */
+
+#ifndef PB_DS_TAG_AND_TRAIT_HPP
+#define PB_DS_TAG_AND_TRAIT_HPP
+
+#include <bits/c++config.h>
+#include <ext/pb_ds/detail/type_utils.hpp>
+
+/**
+ * @namespace __gnu_pbds
+ * @brief GNU extensions for policy-based data structures for public use.
+ */
+namespace __gnu_pbds
+{
+  // A trivial iterator tag. Signifies that the iterators has none of
+  // the STL's movement abilities.
+  struct trivial_iterator_tag
+  { };
+
+  // Prohibit moving trivial iterators.
+  typedef void trivial_iterator_difference_type;
+
+
+  // Signifies a basic invalidation guarantee that any iterator,
+  // pointer, or reference to a container object's mapped value type
+  // is valid as long as the container is not modified.
+  struct basic_invalidation_guarantee
+  { };
+
+  // Signifies an invalidation guarantee that includes all those of
+  // its base, and additionally, that any point-type iterator,
+  // pointer, or reference to a container object's mapped value type
+  // is valid as long as its corresponding entry has not be erased,
+  // regardless of modifications to the container object.
+  struct point_invalidation_guarantee : public basic_invalidation_guarantee
+  { };
+
+  // Signifies an invalidation guarantee that includes all those of
+  // its base, and additionally, that any range-type iterator
+  // (including the returns of begin() and end()) is in the correct
+  // relative positions to other range-type iterators as long as its
+  // corresponding entry has not be erased, regardless of
+  // modifications to the container object.
+  struct range_invalidation_guarantee : public point_invalidation_guarantee
+  { };
+
+
+  /// A mapped-policy indicating that an associative container is a set.
+  // XXX should this be a trait of the form is_set<T> ??
+  struct null_mapped_type { };
+
+
+  /// Base data structure tag.
+  struct container_tag
+  { };
+
+  /// Basic string container, inclusive of strings, ropes, etc.
+  struct string_tag : public container_tag { };
+
+  /// Basic sequence.
+  struct sequence_tag : public container_tag { };
+
+  /// Basic associative-container.
+  struct associative_container_tag : public container_tag { };
+
+  /// Basic hash.
+  struct basic_hash_tag : public associative_container_tag { };
+
+  /// Collision-chaining hash.
+  struct cc_hash_tag : public basic_hash_tag { };
+
+  /// General-probing hash.
+  struct gp_hash_tag : public basic_hash_tag { };
+
+  /// Basic tree.
+  struct basic_tree_tag : public associative_container_tag { };
+
+  /// tree.
+  struct tree_tag : public basic_tree_tag { };
+
+  /// Red-black tree.
+  struct rb_tree_tag : public tree_tag { };
+
+  /// Splay tree.
+  struct splay_tree_tag : public tree_tag { };
+
+  /// Ordered-vector tree.
+  struct ov_tree_tag : public tree_tag { };
+
+  /// trie.
+  struct trie_tag : public basic_tree_tag { };
+
+  /// PATRICIA trie.
+  struct pat_trie_tag : public trie_tag { };
+
+  /// List-update.
+  struct list_update_tag : public associative_container_tag { };
+
+  /// Basic priority-queue.
+  struct priority_queue_tag : public container_tag { };
+
+  /// Pairing-heap.
+  struct pairing_heap_tag : public priority_queue_tag { };
+
+  /// Binomial-heap.
+  struct binomial_heap_tag : public priority_queue_tag { };
+
+  /// Redundant-counter binomial-heap.
+  struct rc_binomial_heap_tag : public priority_queue_tag { };
+
+  /// Binary-heap (array-based).
+  struct binary_heap_tag : public priority_queue_tag { };
+
+  /// Thin heap.
+  struct thin_heap_tag : public priority_queue_tag { };
+
+
+  /// Base traits type for containers.
+  template<typename Tag>
+  struct container_traits_base;
+
+  template<>
+  struct container_traits_base<cc_hash_tag>
+  {
+    typedef cc_hash_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+	reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<gp_hash_tag>
+  {
+    typedef gp_hash_tag container_category;
+    typedef basic_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+	erase_can_throw = false,
+	split_join_can_throw = false,
+	reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<rb_tree_tag>
+  {
+    typedef rb_tree_tag container_category;
+    typedef range_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = true,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = true
+      };
+  };
+
+  template<>
+  struct container_traits_base<splay_tree_tag>
+  {
+    typedef splay_tree_tag container_category;
+    typedef range_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = true,
+        erase_can_throw = false,
+        split_join_can_throw = false,
+        reverse_iteration = true
+      };
+  };
+
+  template<>
+  struct container_traits_base<ov_tree_tag>
+  {
+    typedef ov_tree_tag container_category;
+    typedef basic_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = true,
+        erase_can_throw = true,
+        split_join_can_throw = true,
+        reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<pat_trie_tag>
+  {
+    typedef pat_trie_tag container_category;
+    typedef range_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = true,
+        erase_can_throw = false,
+        split_join_can_throw = true,
+        reverse_iteration = true
+      };
+  };
+
+  template<>
+  struct container_traits_base<list_update_tag>
+  {
+    typedef list_update_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = false
+      };
+  };
+
+
+  template<>
+  struct container_traits_base<pairing_heap_tag>
+  {
+    typedef pairing_heap_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<thin_heap_tag>
+  {
+    typedef thin_heap_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<binomial_heap_tag>
+  {
+    typedef binomial_heap_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<rc_binomial_heap_tag>
+  {
+    typedef rc_binomial_heap_tag container_category;
+    typedef point_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = false,
+        reverse_iteration = false
+      };
+  };
+
+  template<>
+  struct container_traits_base<binary_heap_tag>
+  {
+    typedef binary_heap_tag container_category;
+    typedef basic_invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+        order_preserving = false,
+        erase_can_throw = false,
+	split_join_can_throw = true,
+        reverse_iteration = false
+      };
+  };
+
+
+  /// container_traits
+  // See Matt Austern for the name, S. Meyers MEFC++ #2, others.
+  template<typename Cntnr>
+  struct container_traits 
+  : public container_traits_base<typename Cntnr::container_category>
+  {
+    typedef Cntnr container_type;
+    typedef typename Cntnr::container_category container_category;
+    typedef container_traits_base<container_category> base_type;
+    typedef typename base_type::invalidation_guarantee invalidation_guarantee;
+
+    enum
+      {
+	order_preserving = base_type::order_preserving,
+	erase_can_throw = base_type::erase_can_throw,
+	split_join_can_throw = base_type::split_join_can_throw,
+	reverse_iteration = base_type::reverse_iteration
+      };
+  };
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tree_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tree_policy.hpp
new file mode 100644
index 000000000..4af1adbde
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/tree_policy.hpp
@@ -0,0 +1,163 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file tree_policy.hpp
+ * Contains tree-related policies.
+ */
+
+#ifndef PB_DS_TREE_POLICY_HPP
+#define PB_DS_TREE_POLICY_HPP
+
+#include <bits/c++config.h>
+#include <iterator>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
+
+namespace __gnu_pbds
+{
+  // A null node updator, indicating that no node updates are required.
+  template<typename Const_Node_Iterator,
+	   typename Node_Iterator,
+	   typename Cmp_Fn,
+	   typename Allocator>
+  struct null_tree_node_update
+  { };
+
+#define PB_DS_CLASS_T_DEC \
+  template<typename Const_Node_Iterator, class Node_Iterator, class Cmp_Fn, class Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+  tree_order_statistics_node_update<Const_Node_Iterator, Node_Iterator, Cmp_Fn, Allocator>
+
+#define PB_DS_BASE_C_DEC						\
+  detail::basic_tree_policy_base<Const_Node_Iterator, Node_Iterator, Allocator>
+
+  // Functor updating ranks of entrees.
+  template<typename Const_Node_Iterator, typename Node_Iterator, 
+	   typename Cmp_Fn, typename Allocator>
+  class tree_order_statistics_node_update : private PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC base_type;
+
+  public:
+    typedef Cmp_Fn cmp_fn;
+    typedef Allocator allocator_type;
+    typedef typename allocator_type::size_type size_type;
+    typedef typename base_type::key_type key_type;
+    typedef typename base_type::const_key_reference const_key_reference;
+
+    typedef size_type metadata_type;
+    typedef Const_Node_Iterator const_node_iterator;
+    typedef Node_Iterator node_iterator;
+    typedef typename const_node_iterator::value_type const_iterator;
+    typedef typename node_iterator::value_type iterator;
+
+    // Finds an entry by __order. Returns a const_iterator to the
+    // entry with the __order order, or a const_iterator to the
+    // container object's end if order is at least the size of the
+    // container object.
+    inline const_iterator
+    find_by_order(size_type order) const;
+
+    // Finds an entry by __order. Returns an iterator to the entry
+    // with the __order order, or an iterator to the container
+    // object's end if order is at least the size of the container
+    // object.
+    inline iterator
+    find_by_order(size_type order);
+
+    // Returns the order of a key within a sequence. For exapmle, if
+    // r_key is the smallest key, this method will return 0; if r_key
+    // is a key between the smallest and next key, this method will
+    // return 1; if r_key is a key larger than the largest key, this
+    // method will return the size of r_c.
+    inline size_type
+    order_of_key(const_key_reference r_key) const;
+
+  private:
+    // Const reference to the container's value-type.
+    typedef typename base_type::const_reference const_reference;
+
+    // Const pointer to the container's value-type.
+    typedef typename base_type::const_pointer const_pointer;
+
+    typedef typename allocator_type::template rebind<metadata_type>::other metadata_rebind;
+    // Const metadata reference.
+    typedef typename metadata_rebind::const_reference const_metadata_reference;
+
+    // Metadata reference.
+    typedef typename metadata_rebind::reference metadata_reference;
+
+    // Returns the const_node_iterator associated with the tree's root node.
+    virtual const_node_iterator
+    node_begin() const = 0;
+
+    // Returns the node_iterator associated with the tree's root node.
+    virtual node_iterator
+    node_begin() = 0;
+
+    // Returns the const_node_iterator associated with a just-after leaf node.
+    virtual const_node_iterator
+    node_end() const = 0;
+
+    // Returns the node_iterator associated with a just-after leaf node.
+    virtual node_iterator
+    node_end() = 0;
+
+    // Access to the cmp_fn object.
+    virtual cmp_fn& 
+    get_cmp_fn() = 0;
+
+  protected:
+    // Updates the rank of a node through a node_iterator node_it;
+    // end_nd_it is the end node iterator.
+    inline void
+    operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
+
+    virtual
+    ~tree_order_statistics_node_update();
+  };
+
+#include <ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+
+} // namespace __gnu_pbds
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/trie_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/trie_policy.hpp
new file mode 100644
index 000000000..fc452104f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pb_ds/trie_policy.hpp
@@ -0,0 +1,356 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/**
+ * @file trie_policy.hpp
+ * Contains trie-related policies.
+ */
+
+#ifndef PB_DS_TRIE_POLICY_HPP
+#define PB_DS_TRIE_POLICY_HPP
+
+#include <bits/c++config.h>
+#include <string>
+#include <ext/pb_ds/detail/type_utils.hpp>
+#include <ext/pb_ds/detail/trie_policy/trie_policy_base.hpp>
+
+namespace __gnu_pbds
+{
+  // A null node updator, indicating that no node updates are required.
+  template<typename Const_Node_Iterator,
+	   typename Node_Iterator,
+	   typename E_Access_Traits,
+	   typename Allocator>
+  struct null_trie_node_update
+  { };
+
+#define PB_DS_CLASS_T_DEC						\
+  template<typename String, typename String::value_type Min_E_Val, typename String::value_type Max_E_Val, bool Reverse, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC						\
+  string_trie_e_access_traits<String, Min_E_Val,Max_E_Val,Reverse,Allocator>
+
+  // Element access traits for string types.
+  template<typename String = std::string,
+	   typename String::value_type Min_E_Val = detail::__numeric_traits<typename String::value_type>::__min, 
+	   typename String::value_type Max_E_Val = detail::__numeric_traits<typename String::value_type>::__max, 
+	   bool Reverse = false,
+	   typename Allocator = std::allocator<char> >
+  struct string_trie_e_access_traits
+  {
+  public:
+    typedef typename Allocator::size_type size_type;
+    typedef String key_type;
+    typedef typename Allocator::template rebind<key_type>::other key_rebind;
+    typedef typename key_rebind::const_reference const_key_reference;
+
+    enum
+      {
+	reverse = Reverse
+      };
+
+    // Element const iterator type.
+    typedef typename detail::__conditional_type<Reverse, typename String::const_reverse_iterator, typename String::const_iterator>::__type const_iterator;
+
+    // Element type.
+    typedef typename std::iterator_traits<const_iterator>::value_type e_type;
+
+    enum
+      {
+	min_e_val = Min_E_Val,
+	max_e_val = Max_E_Val,
+	max_size = max_e_val - min_e_val + 1
+      };
+    PB_DS_STATIC_ASSERT(min_max_size, max_size >= 2);
+
+    // Returns a const_iterator to the first element of
+    // const_key_reference agumnet.
+    inline static const_iterator
+    begin(const_key_reference);
+
+    // Returns a const_iterator to the after-last element of
+    // const_key_reference argument.
+    inline static const_iterator
+    end(const_key_reference);
+
+    // Maps an element to a position.
+    inline static size_type
+    e_pos(e_type e);
+
+  private:
+
+    inline static const_iterator
+    begin_imp(const_key_reference, detail::false_type);
+
+    inline static const_iterator
+    begin_imp(const_key_reference, detail::true_type);
+
+    inline static const_iterator
+    end_imp(const_key_reference, detail::false_type);
+
+    inline static const_iterator
+    end_imp(const_key_reference, detail::true_type);
+
+    static detail::integral_constant<int, Reverse> s_rev_ind;
+  };
+
+#include <ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_T_DEC \
+  template<typename Const_Node_Iterator,typename Node_Iterator,class E_Access_Traits, typename Allocator>
+
+#define PB_DS_CLASS_C_DEC \
+  trie_prefix_search_node_update<Const_Node_Iterator, Node_Iterator, E_Access_Traits,Allocator>
+
+#define PB_DS_BASE_C_DEC \
+  detail::trie_policy_base<Const_Node_Iterator,Node_Iterator,E_Access_Traits, Allocator>
+
+  // A node updator that allows tries to be searched for the range of
+  // values that match a certain prefix.
+  template<typename Const_Node_Iterator,
+	   typename Node_Iterator,
+	   typename E_Access_Traits,
+	   typename Allocator>
+  class trie_prefix_search_node_update : private PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC base_type;
+
+  public:
+    typedef typename base_type::key_type key_type;
+    typedef typename base_type::const_key_reference const_key_reference;
+
+    // Element access traits.
+    typedef E_Access_Traits e_access_traits;
+
+    // Const element iterator.
+    typedef typename e_access_traits::const_iterator const_e_iterator;
+
+    // Allocator type.
+    typedef Allocator allocator_type;
+
+    // Size type.
+    typedef typename allocator_type::size_type size_type;
+    typedef detail::null_node_metadata metadata_type;
+    typedef Const_Node_Iterator const_node_iterator;
+    typedef Node_Iterator node_iterator;
+    typedef typename const_node_iterator::value_type const_iterator;
+    typedef typename node_iterator::value_type iterator;
+
+    // Finds the const iterator range corresponding to all values
+    // whose prefixes match r_key.
+    std::pair<const_iterator, const_iterator>
+    prefix_range(const_key_reference) const;
+
+    // Finds the iterator range corresponding to all values whose
+    // prefixes match r_key.
+    std::pair<iterator, iterator>
+    prefix_range(const_key_reference);
+
+    // Finds the const iterator range corresponding to all values
+    // whose prefixes match [b, e).
+    std::pair<const_iterator, const_iterator>
+    prefix_range(const_e_iterator, const_e_iterator) const;
+
+    // Finds the iterator range corresponding to all values whose
+    // prefixes match [b, e).
+    std::pair<iterator, iterator>
+    prefix_range(const_e_iterator, const_e_iterator);
+
+  protected:
+    // Called to update a node's metadata.
+    inline void
+    operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
+
+  private:
+    // Returns the const iterator associated with the just-after last element.
+    virtual const_iterator
+    end() const = 0;
+
+    // Returns the iterator associated with the just-after last element.
+    virtual iterator
+    end() = 0;
+
+    // Returns the const_node_iterator associated with the trie's root node.
+    virtual const_node_iterator
+    node_begin() const = 0;
+
+    // Returns the node_iterator associated with the trie's root node.
+    virtual node_iterator
+    node_begin() = 0;
+
+    // Returns the const_node_iterator associated with a just-after leaf node.
+    virtual const_node_iterator
+    node_end() const = 0;
+
+    // Returns the node_iterator associated with a just-after leaf node.
+    virtual node_iterator
+    node_end() = 0;
+
+    // Access to the cmp_fn object.
+    virtual const e_access_traits& 
+    get_e_access_traits() const = 0;
+
+    node_iterator
+    next_child(node_iterator, const_e_iterator, const_e_iterator, 
+	       node_iterator, const e_access_traits&);
+  };
+
+#include <ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp>
+
+#undef PB_DS_CLASS_C_DEC
+
+#define PB_DS_CLASS_C_DEC \
+  trie_order_statistics_node_update<Const_Node_Iterator, Node_Iterator,E_Access_Traits, Allocator>
+
+  // Functor updating ranks of entrees.
+  template<typename Const_Node_Iterator,
+	   typename Node_Iterator,
+	   typename E_Access_Traits,
+	   typename Allocator>
+  class trie_order_statistics_node_update : private PB_DS_BASE_C_DEC
+  {
+  private:
+    typedef PB_DS_BASE_C_DEC base_type;
+
+  public:
+    typedef E_Access_Traits e_access_traits;
+    typedef typename e_access_traits::const_iterator const_e_iterator;
+    typedef Allocator allocator_type;
+    typedef typename allocator_type::size_type size_type;
+    typedef typename base_type::key_type key_type;
+    typedef typename base_type::const_key_reference const_key_reference;
+
+    typedef size_type metadata_type;
+    typedef Const_Node_Iterator const_node_iterator;
+    typedef Node_Iterator node_iterator;
+    typedef typename const_node_iterator::value_type const_iterator;
+    typedef typename node_iterator::value_type iterator;
+
+    // Finds an entry by __order. Returns a const_iterator to the
+    // entry with the __order order, or a const_iterator to the
+    // container object's end if order is at least the size of the
+    // container object.
+    inline const_iterator
+    find_by_order(size_type) const;
+
+    // Finds an entry by __order. Returns an iterator to the entry
+    // with the __order order, or an iterator to the container
+    // object's end if order is at least the size of the container
+    // object.
+    inline iterator
+    find_by_order(size_type);
+
+    // Returns the order of a key within a sequence. For exapmle, if
+    // r_key is the smallest key, this method will return 0; if r_key
+    // is a key between the smallest and next key, this method will
+    // return 1; if r_key is a key larger than the largest key, this
+    // method will return the size of r_c.
+    inline size_type
+    order_of_key(const_key_reference) const;
+
+    // Returns the order of a prefix within a sequence. For exapmle,
+    // if [b, e] is the smallest prefix, this method will return 0; if
+    // r_key is a key between the smallest and next key, this method
+    // will return 1; if r_key is a key larger than the largest key,
+    // this method will return the size of r_c.
+    inline size_type
+    order_of_prefix(const_e_iterator, const_e_iterator) const;
+
+  private:
+    typedef typename base_type::const_reference const_reference;
+    typedef typename base_type::const_pointer const_pointer;
+
+    typedef typename Allocator::template rebind<metadata_type>::other metadata_rebind;
+    typedef typename metadata_rebind::const_reference const_metadata_reference;
+    typedef typename metadata_rebind::reference metadata_reference;
+
+    // Returns true if the container is empty.
+    virtual bool
+    empty() const = 0;
+
+    // Returns the iterator associated with the trie's first element.
+    virtual iterator
+    begin() = 0;
+
+    // Returns the iterator associated with the trie's
+    // just-after-last element.
+    virtual iterator
+    end() = 0;
+
+    // Returns the const_node_iterator associated with the trie's root node.
+    virtual const_node_iterator
+    node_begin() const = 0;
+
+    // Returns the node_iterator associated with the trie's root node.
+    virtual node_iterator
+    node_begin() = 0;
+
+    // Returns the const_node_iterator associated with a just-after
+    // leaf node.
+    virtual const_node_iterator
+    node_end() const = 0;
+
+    // Returns the node_iterator associated with a just-after leaf node.
+    virtual node_iterator
+    node_end() = 0;
+
+    // Access to the cmp_fn object.
+    virtual e_access_traits& 
+    get_e_access_traits() = 0;
+
+  protected:
+    // Updates the rank of a node through a node_iterator node_it;
+    // end_nd_it is the end node iterator.
+    inline void
+    operator()(node_iterator, const_node_iterator) const;
+
+    // Destructor.
+    virtual
+    ~trie_order_statistics_node_update();
+  };
+
+#include <ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp>
+
+#undef PB_DS_CLASS_T_DEC
+#undef PB_DS_CLASS_C_DEC
+#undef PB_DS_BASE_C_DEC
+
+} // namespace __gnu_pbds
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pod_char_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pod_char_traits.h
new file mode 100644
index 000000000..3c9f0988a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pod_char_traits.h
@@ -0,0 +1,188 @@
+// POD character, std::char_traits specialization -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/pod_char_traits.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+// Gabriel Dos Reis <gdr@integrable-solutions.net>
+// Benjamin Kosnik <bkoz@redhat.com>
+
+#ifndef _POD_CHAR_TRAITS_H
+#define _POD_CHAR_TRAITS_H 1
+
+#include <string>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // POD character abstraction.
+  // NB: The char_type parameter is a subset of int_type, as to allow
+  // int_type to properly hold the full range of char_type values as
+  // well as EOF.
+  /// @brief A POD class that serves as a character abstraction class.
+  template<typename V, typename I, typename S = std::mbstate_t>
+    struct character
+    {
+      typedef V				value_type;
+      typedef I				int_type;
+      typedef S				state_type;
+      typedef character<V, I, S>	char_type;
+
+      value_type	value;
+
+      template<typename V2>
+        static char_type
+        from(const V2& v)
+        {
+	  char_type ret = { static_cast<value_type>(v) };
+	  return ret;
+	}
+
+      template<typename V2>
+        static V2
+        to(const char_type& c)
+        {
+	  V2 ret = { static_cast<V2>(c.value) };
+	  return ret;
+	}
+
+    };
+
+  template<typename V, typename I, typename S>
+    inline bool
+    operator==(const character<V, I, S>& lhs, const character<V, I, S>& rhs)
+    { return lhs.value == rhs.value; }
+
+  template<typename V, typename I, typename S>
+    inline bool
+    operator<(const character<V, I, S>& lhs, const character<V, I, S>& rhs)
+    { return lhs.value < rhs.value; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// char_traits<__gnu_cxx::character> specialization.
+  template<typename V, typename I, typename S>
+    struct char_traits<__gnu_cxx::character<V, I, S> >
+    {
+      typedef __gnu_cxx::character<V, I, S>	char_type;
+      typedef typename char_type::int_type	int_type;
+      typedef typename char_type::state_type	state_type;
+      typedef fpos<state_type>			pos_type;
+      typedef streamoff				off_type;
+
+      static void
+      assign(char_type& __c1, const char_type& __c2)
+      { __c1 = __c2; }
+
+      static bool
+      eq(const char_type& __c1, const char_type& __c2)
+      { return __c1 == __c2; }
+
+      static bool
+      lt(const char_type& __c1, const char_type& __c2)
+      { return __c1 < __c2; }
+
+      static int
+      compare(const char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	for (size_t __i = 0; __i < __n; ++__i)
+	  if (!eq(__s1[__i], __s2[__i]))
+	    return lt(__s1[__i], __s2[__i]) ? -1 : 1;
+	return 0;
+      }
+
+      static size_t
+      length(const char_type* __s)
+      {
+	const char_type* __p = __s;
+	while (__p->value)
+	  ++__p;
+	return (__p - __s);
+      }
+
+      static const char_type*
+      find(const char_type* __s, size_t __n, const char_type& __a)
+      {
+	for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
+	  if (*__p == __a)
+	    return __p;
+	return 0;
+      }
+
+      static char_type*
+      move(char_type* __s1, const char_type* __s2, size_t __n)
+      { 
+	return static_cast<char_type*>
+	  (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)));
+      }
+
+      static char_type*
+      copy(char_type* __s1, const char_type* __s2, size_t __n)
+      {
+	std::copy(__s2, __s2 + __n, __s1);
+	return __s1;
+      }
+
+      static char_type*
+      assign(char_type* __s, size_t __n, char_type __a)
+      {
+	std::fill_n(__s, __n, __a);
+        return __s;
+      }
+
+      static char_type
+      to_char_type(const int_type& __i)
+      { return char_type::template from(__i); }
+
+      static int_type
+      to_int_type(const char_type& __c)
+      { return char_type::template to<int_type>(__c); }
+
+      static bool
+      eq_int_type(const int_type& __c1, const int_type& __c2)
+      { return __c1 == __c2; }
+
+      static int_type
+      eof() 
+      {
+	int_type __r = { -1 };
+	return __r;
+      }
+
+      static int_type
+      not_eof(const int_type& __c)
+      { return eq_int_type(__c, eof()) ? int_type() : __c; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pointer.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pointer.h
new file mode 100644
index 000000000..158ae52e3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pointer.h
@@ -0,0 +1,570 @@
+// Custom pointer adapter and sample storage policies
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ *  @file ext/pointer.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ *
+ *  @author Bob Walters
+ *
+ * Provides reusable _Pointer_adapter for assisting in the development of
+ * custom pointer types that can be used with the standard containers via
+ * the allocator::pointer and allocator::const_pointer typedefs.
+ */
+
+#ifndef _POINTER_H
+#define _POINTER_H 1
+
+#pragma GCC system_header
+
+#include <iosfwd>
+#include <bits/stl_iterator_base_types.h>
+#include <ext/cast.h>
+#include <ext/type_traits.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /** 
+   * @brief A storage policy for use with _Pointer_adapter<> which yields a
+   *        standard pointer.
+   * 
+   *  A _Storage_policy is required to provide 4 things:
+   *    1) A get() API for returning the stored pointer value.
+   *    2) An set() API for storing a pointer value.
+   *    3) An element_type typedef to define the type this points to.
+   *    4) An operator<() to support pointer comparison.
+   *    5) An operator==() to support pointer comparison.
+   */
+  template<typename _Tp> 
+    class _Std_pointer_impl 
+    {
+    public:
+      // the type this pointer points to.
+      typedef _Tp element_type;
+  
+      // A method to fetch the pointer value as a standard T* value;
+      inline _Tp* 
+      get() const 
+      { return _M_value; }
+  
+      // A method to set the pointer value, from a standard T* value;
+      inline void 
+      set(element_type* __arg) 
+      { _M_value = __arg; }
+  
+      // Comparison of pointers
+      inline bool
+      operator<(const _Std_pointer_impl& __rarg) const
+      { return (_M_value < __rarg._M_value); }
+  
+      inline bool
+      operator==(const _Std_pointer_impl& __rarg) const
+      { return (_M_value == __rarg._M_value); }
+
+    private:
+      element_type* _M_value;
+    };
+
+  /**
+   * @brief A storage policy for use with _Pointer_adapter<> which stores
+   *        the pointer's address as an offset value which is relative to
+   *        its own address.
+   * 
+   * This is intended for pointers within shared memory regions which
+   * might be mapped at different addresses by different processes.
+   * For null pointers, a value of 1 is used.  (0 is legitimate
+   * sometimes for nodes in circularly linked lists) This value was
+   * chosen as the least likely to generate an incorrect null, As
+   * there is no reason why any normal pointer would point 1 byte into
+   * its own pointer address.
+   */
+  template<typename _Tp> 
+    class _Relative_pointer_impl 
+    {
+    public:
+      typedef _Tp element_type;
+  
+      _Tp*
+      get() const 
+      {
+        if (_M_diff == 1)
+          return 0;
+        else
+          return reinterpret_cast<_Tp*>(reinterpret_cast<_UIntPtrType>(this)
+					+ _M_diff);
+      }
+  
+      void 
+      set(_Tp* __arg)
+      {
+        if (!__arg)
+          _M_diff = 1;
+        else
+          _M_diff = reinterpret_cast<_UIntPtrType>(__arg) 
+                    - reinterpret_cast<_UIntPtrType>(this);
+      }
+  
+      // Comparison of pointers
+      inline bool
+      operator<(const _Relative_pointer_impl& __rarg) const
+      { return (reinterpret_cast<_UIntPtrType>(this->get())
+		< reinterpret_cast<_UIntPtrType>(__rarg.get())); }
+
+      inline bool
+      operator==(const _Relative_pointer_impl& __rarg) const
+      { return (reinterpret_cast<_UIntPtrType>(this->get())
+		== reinterpret_cast<_UIntPtrType>(__rarg.get())); }
+
+    private:
+#ifdef _GLIBCXX_USE_LONG_LONG
+      typedef __gnu_cxx::__conditional_type<
+	 (sizeof(unsigned long) >= sizeof(void*)),
+	 unsigned long, unsigned long long>::__type _UIntPtrType;
+#else
+      typedef unsigned long _UIntPtrType;
+#endif
+      _UIntPtrType _M_diff;
+    };
+  
+  /**
+   * Relative_pointer_impl needs a specialization for const T because of
+   * the casting done during pointer arithmetic.
+   */
+  template<typename _Tp> 
+    class _Relative_pointer_impl<const _Tp> 
+    {
+    public:
+      typedef const _Tp element_type;
+  
+      const _Tp*
+      get() const
+      {
+        if (_M_diff == 1)
+          return 0;
+        else
+          return reinterpret_cast<const _Tp*>
+	      (reinterpret_cast<_UIntPtrType>(this) + _M_diff);
+      }
+  
+      void 
+      set(const _Tp* __arg)
+      {
+        if (!__arg)
+          _M_diff = 1;
+        else
+          _M_diff = reinterpret_cast<_UIntPtrType>(__arg) 
+                    - reinterpret_cast<_UIntPtrType>(this);
+      }
+  
+      // Comparison of pointers
+      inline bool
+      operator<(const _Relative_pointer_impl& __rarg) const
+      { return (reinterpret_cast<_UIntPtrType>(this->get())
+		< reinterpret_cast<_UIntPtrType>(__rarg.get())); }
+
+      inline bool
+      operator==(const _Relative_pointer_impl& __rarg) const
+      { return (reinterpret_cast<_UIntPtrType>(this->get())
+		== reinterpret_cast<_UIntPtrType>(__rarg.get())); }
+  
+    private:
+#ifdef _GLIBCXX_USE_LONG_LONG
+      typedef __gnu_cxx::__conditional_type<
+	 (sizeof(unsigned long) >= sizeof(void*)),
+	 unsigned long, unsigned long long>::__type _UIntPtrType;
+#else
+      typedef unsigned long _UIntPtrType;
+#endif
+       _UIntPtrType _M_diff;
+    };
+
+  /**
+   * The specialization on this type helps resolve the problem of
+   * reference to void, and eliminates the need to specialize
+   * _Pointer_adapter for cases of void*, const void*, and so on.
+   */
+  struct _Invalid_type { };
+  
+  template<typename _Tp>
+    struct _Reference_type 
+    { typedef _Tp& reference; };
+
+  template<> 
+    struct _Reference_type<void> 
+    { typedef _Invalid_type& reference; };
+
+  template<> 
+    struct _Reference_type<const void> 
+    { typedef const _Invalid_type& reference; };
+
+  template<> 
+    struct _Reference_type<volatile void> 
+    { typedef volatile _Invalid_type&  reference; };
+
+  template<> 
+    struct _Reference_type<volatile const void> 
+    { typedef const volatile _Invalid_type&  reference; };
+
+  /**
+   * This structure accomodates the way in which
+   * std::iterator_traits<> is normally specialized for const T*, so
+   * that value_type is still T.
+   */
+  template<typename _Tp> 
+    struct _Unqualified_type 
+    { typedef _Tp type; };
+    
+  template<typename _Tp> 
+    struct _Unqualified_type<const _Tp> 
+    { typedef _Tp type; };
+    
+  template<typename _Tp> 
+    struct _Unqualified_type<volatile _Tp> 
+    { typedef volatile _Tp type; };
+    
+  template<typename _Tp> 
+    struct _Unqualified_type<volatile const _Tp> 
+    { typedef volatile _Tp type; };
+  
+  /**
+   * The following provides an 'alternative pointer' that works with
+   * the containers when specified as the pointer typedef of the
+   * allocator.
+   *
+   * The pointer type used with the containers doesn't have to be this
+   * class, but it must support the implicit conversions, pointer
+   * arithmetic, comparison operators, etc. that are supported by this
+   * class, and avoid raising compile-time ambiguities.  Because
+   * creating a working pointer can be challenging, this pointer
+   * template was designed to wrapper an easier storage policy type,
+   * so that it becomes reusable for creating other pointer types.
+   *
+   * A key point of this class is also that it allows container
+   * writers to 'assume' Alocator::pointer is a typedef for a normal
+   * pointer.  This class supports most of the conventions of a true
+   * pointer, and can, for instance handle implicit conversion to
+   * const and base class pointer types.  The only impositions on
+   * container writers to support extended pointers are: 1) use the
+   * Allocator::pointer typedef appropriately for pointer types.  2)
+   * if you need pointer casting, use the __pointer_cast<> functions
+   * from ext/cast.h.  This allows pointer cast operations to be
+   * overloaded is necessary by custom pointers.
+   *
+   * Note: The const qualifier works with this pointer adapter as
+   * follows:
+   *
+   * _Tp*             == _Pointer_adapter<_Std_pointer_impl<_Tp> >;
+   * const _Tp*       == _Pointer_adapter<_Std_pointer_impl<const _Tp> >;
+   * _Tp* const       == const _Pointer_adapter<_Std_pointer_impl<_Tp> >;
+   * const _Tp* const == const _Pointer_adapter<_Std_pointer_impl<const _Tp> >;
+   */
+  template<typename _Storage_policy>
+    class _Pointer_adapter : public _Storage_policy 
+    {
+    public:
+      typedef typename _Storage_policy::element_type element_type;
+
+      // These are needed for iterator_traits
+      typedef std::random_access_iterator_tag                iterator_category;
+      typedef typename _Unqualified_type<element_type>::type value_type;
+      typedef std::ptrdiff_t                                 difference_type;
+      typedef _Pointer_adapter                               pointer;
+      typedef typename _Reference_type<element_type>::reference  reference;
+
+      // Reminder: 'const' methods mean that the method is valid when the 
+      // pointer is immutable, and has nothing to do with whether the 
+      // 'pointee' is const.
+
+      // Default Constructor (Convert from element_type*)
+      _Pointer_adapter(element_type* __arg = 0)
+      { _Storage_policy::set(__arg); }
+
+      // Copy constructor from _Pointer_adapter of same type.
+      _Pointer_adapter(const _Pointer_adapter& __arg) 
+      { _Storage_policy::set(__arg.get()); }
+
+      // Convert from _Up* if conversion to element_type* is valid.
+      template<typename _Up>
+        _Pointer_adapter(_Up* __arg)
+        { _Storage_policy::set(__arg); }
+
+      // Conversion from another _Pointer_adapter if _Up if static cast is
+      // valid.
+      template<typename _Up>
+        _Pointer_adapter(const _Pointer_adapter<_Up>& __arg)
+        { _Storage_policy::set(__arg.get()); }
+
+      // Destructor
+      ~_Pointer_adapter() { }
+  
+      // Assignment operator
+      _Pointer_adapter&
+      operator=(const _Pointer_adapter& __arg) 
+      {
+        _Storage_policy::set(__arg.get()); 
+        return *this; 
+      }
+
+      template<typename _Up>
+        _Pointer_adapter&
+        operator=(const _Pointer_adapter<_Up>& __arg)
+        {
+          _Storage_policy::set(__arg.get()); 
+          return *this; 
+        }
+
+      template<typename _Up>
+        _Pointer_adapter&
+        operator=(_Up* __arg)
+        {
+          _Storage_policy::set(__arg); 
+          return *this; 
+        }
+
+      // Operator*, returns element_type&
+      inline reference 
+      operator*() const 
+      { return *(_Storage_policy::get()); }
+
+      // Operator->, returns element_type*
+      inline element_type* 
+      operator->() const 
+      { return _Storage_policy::get(); }
+
+      // Operator[], returns a element_type& to the item at that loc.
+      inline reference
+      operator[](std::ptrdiff_t __index) const
+      { return _Storage_policy::get()[__index]; }
+
+      // To allow implicit conversion to "bool", for "if (ptr)..."
+    private:
+      typedef element_type*(_Pointer_adapter::*__unspecified_bool_type)() const;
+
+    public:
+      operator __unspecified_bool_type() const
+      {
+        return _Storage_policy::get() == 0 ? 0 : 
+                         &_Pointer_adapter::operator->; 
+      }
+
+      // ! operator (for: if (!ptr)...)
+      inline bool
+      operator!() const 
+      { return (_Storage_policy::get() == 0); }
+  
+      // Pointer differences
+      inline friend std::ptrdiff_t 
+      operator-(const _Pointer_adapter& __lhs, element_type* __rhs) 
+      { return (__lhs.get() - __rhs); }
+  
+      inline friend std::ptrdiff_t 
+      operator-(element_type* __lhs, const _Pointer_adapter& __rhs) 
+      { return (__lhs - __rhs.get()); }
+  
+      template<typename _Up>
+        inline friend std::ptrdiff_t 
+        operator-(const _Pointer_adapter& __lhs, _Up* __rhs) 
+        { return (__lhs.get() - __rhs); }
+    
+      template<typename _Up>
+        inline friend std::ptrdiff_t 
+        operator-(_Up* __lhs, const _Pointer_adapter& __rhs)
+        { return (__lhs - __rhs.get()); }
+
+      template<typename _Up>
+        inline std::ptrdiff_t 
+        operator-(const _Pointer_adapter<_Up>& __rhs) const 
+        { return (_Storage_policy::get() - __rhs.get()); }
+  
+      // Pointer math
+      // Note: There is a reason for all this overloading based on different
+      // integer types.  In some libstdc++-v3 test cases, a templated
+      // operator+ is declared which can match any types.  This operator
+      // tends to "steal" the recognition of _Pointer_adapter's own operator+ 
+      // unless the integer type matches perfectly.
+
+#define _CXX_POINTER_ARITH_OPERATOR_SET(INT_TYPE) \
+      inline friend _Pointer_adapter \
+      operator+(const _Pointer_adapter& __lhs, INT_TYPE __offset) \
+      { return _Pointer_adapter(__lhs.get() + __offset); } \
+\
+      inline friend _Pointer_adapter \
+      operator+(INT_TYPE __offset, const _Pointer_adapter& __rhs) \
+      { return _Pointer_adapter(__rhs.get() + __offset); } \
+\
+      inline friend _Pointer_adapter \
+      operator-(const _Pointer_adapter& __lhs, INT_TYPE __offset) \
+      { return _Pointer_adapter(__lhs.get() - __offset); } \
+\
+      inline _Pointer_adapter& \
+      operator+=(INT_TYPE __offset) \
+      { \
+        _Storage_policy::set(_Storage_policy::get() + __offset); \
+        return *this; \
+      } \
+\
+      inline _Pointer_adapter& \
+      operator-=(INT_TYPE __offset) \
+      { \
+        _Storage_policy::set(_Storage_policy::get() - __offset); \
+        return *this; \
+      } \
+// END of _CXX_POINTER_ARITH_OPERATOR_SET macro
+  
+      // Expand into the various pointer arithmatic operators needed.
+      _CXX_POINTER_ARITH_OPERATOR_SET(short);
+      _CXX_POINTER_ARITH_OPERATOR_SET(unsigned short);
+      _CXX_POINTER_ARITH_OPERATOR_SET(int);
+      _CXX_POINTER_ARITH_OPERATOR_SET(unsigned int);
+      _CXX_POINTER_ARITH_OPERATOR_SET(long);
+      _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long);
+
+      // Mathematical Manipulators
+      inline _Pointer_adapter& 
+      operator++()
+      {
+        _Storage_policy::set(_Storage_policy::get() + 1); 
+        return *this;
+      }
+  
+      inline _Pointer_adapter 
+      operator++(int)
+      {
+        _Pointer_adapter tmp(*this);
+        _Storage_policy::set(_Storage_policy::get() + 1);
+        return tmp;
+      }
+  
+      inline _Pointer_adapter& 
+      operator--() 
+      {
+        _Storage_policy::set(_Storage_policy::get() - 1); 
+        return *this;
+      }
+  
+      inline _Pointer_adapter
+      operator--(int) 
+      {
+        _Pointer_adapter tmp(*this);
+        _Storage_policy::set(_Storage_policy::get() - 1);
+        return tmp;
+      }
+  
+    }; // class _Pointer_adapter
+
+
+#define _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(OPERATOR) \
+  template<typename _Tp1, typename _Tp2> \
+    inline bool \
+    operator OPERATOR(const _Pointer_adapter<_Tp1>& __lhs, _Tp2 __rhs) \
+    { return __lhs.get() OPERATOR __rhs; } \
+\
+  template<typename _Tp1, typename _Tp2> \
+    inline bool \
+    operator OPERATOR(_Tp1 __lhs, const _Pointer_adapter<_Tp2>& __rhs) \
+    { return __lhs OPERATOR __rhs.get(); } \
+\
+  template<typename _Tp1, typename _Tp2> \
+    inline bool \
+    operator OPERATOR(const _Pointer_adapter<_Tp1>& __lhs, \
+                              const _Pointer_adapter<_Tp2>& __rhs) \
+    { return __lhs.get() OPERATOR __rhs.get(); } \
+\
+// End GCC_CXX_POINTER_COMPARISON_OPERATION_SET Macro
+  
+  // Expand into the various comparison operators needed.
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(==)
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(!=)
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(<)
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(<=)
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(>)
+  _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(>=)
+
+  // These are here for expressions like "ptr == 0", "ptr != 0"
+  template<typename _Tp>
+    inline bool
+    operator==(const _Pointer_adapter<_Tp>& __lhs, int __rhs)
+    { return __lhs.get() == reinterpret_cast<void*>(__rhs); } 
+
+  template<typename _Tp>
+    inline bool
+    operator==(int __lhs, const _Pointer_adapter<_Tp>& __rhs)
+    { return __rhs.get() == reinterpret_cast<void*>(__lhs); } 
+
+  template<typename _Tp>
+    inline bool
+    operator!=(const _Pointer_adapter<_Tp>& __lhs, int __rhs)
+    { return __lhs.get() != reinterpret_cast<void*>(__rhs); } 
+
+  template<typename _Tp>
+    inline bool
+    operator!=(int __lhs, const _Pointer_adapter<_Tp>& __rhs)
+    { return __rhs.get() != reinterpret_cast<void*>(__lhs); } 
+
+  /**
+   * Comparison operators for _Pointer_adapter defer to the base class'es
+   * comparison operators, when possible.
+   */
+  template<typename _Tp>
+    inline bool
+    operator==(const _Pointer_adapter<_Tp>& __lhs, 
+               const _Pointer_adapter<_Tp>& __rhs)
+    { return __lhs._Tp::operator==(__rhs); }
+
+  template<typename _Tp>
+    inline bool
+    operator<=(const _Pointer_adapter<_Tp>& __lhs, 
+               const _Pointer_adapter<_Tp>& __rhs)
+    { return __lhs._Tp::operator<(__rhs) || __lhs._Tp::operator==(__rhs); }
+
+  template<typename _Tp>
+    inline bool
+    operator!=(const _Pointer_adapter<_Tp>& __lhs, 
+               const _Pointer_adapter<_Tp>& __rhs)
+    { return !(__lhs._Tp::operator==(__rhs)); }
+
+  template<typename _Tp>
+    inline bool
+    operator>(const _Pointer_adapter<_Tp>& __lhs, 
+              const _Pointer_adapter<_Tp>& __rhs)
+    { return !(__lhs._Tp::operator<(__rhs) || __lhs._Tp::operator==(__rhs)); }
+
+  template<typename _Tp>
+    inline bool
+    operator>=(const _Pointer_adapter<_Tp>& __lhs, 
+               const _Pointer_adapter<_Tp>& __rhs)
+    { return !(__lhs._Tp::operator<(__rhs)); }
+
+  template<typename _CharT, typename _Traits, typename _StoreT>
+    inline std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os, 
+               const _Pointer_adapter<_StoreT>& __p)
+    { return (__os << __p.get()); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _POINTER_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pool_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pool_allocator.h
new file mode 100644
index 000000000..66ddced80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/pool_allocator.h
@@ -0,0 +1,266 @@
+// Allocators -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1996-1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/pool_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _POOL_ALLOCATOR_H
+#define _POOL_ALLOCATOR_H 1
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <new>
+#include <bits/functexcept.h>
+#include <ext/atomicity.h>
+#include <ext/concurrence.h>
+#include <bits/move.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+
+  /**
+   *  @brief  Base class for __pool_alloc.
+   *
+   *  Uses various allocators to fulfill underlying requests (and makes as
+   *  few requests as possible when in default high-speed pool mode).
+   *
+   *  Important implementation properties:
+   *  0. If globally mandated, then allocate objects from new
+   *  1. If the clients request an object of size > _S_max_bytes, the resulting
+   *     object will be obtained directly from new
+   *  2. In all other cases, we allocate an object of size exactly
+   *     _S_round_up(requested_size).  Thus the client has enough size
+   *     information that we can return the object to the proper free list
+   *     without permanently losing part of the object.
+   */
+    class __pool_alloc_base
+    {
+    protected:
+
+      enum { _S_align = 8 };
+      enum { _S_max_bytes = 128 };
+      enum { _S_free_list_size = (size_t)_S_max_bytes / (size_t)_S_align };
+      
+      union _Obj
+      {
+	union _Obj* _M_free_list_link;
+	char        _M_client_data[1];    // The client sees this.
+      };
+      
+      static _Obj* volatile         _S_free_list[_S_free_list_size];
+
+      // Chunk allocation state.
+      static char*                  _S_start_free;
+      static char*                  _S_end_free;
+      static size_t                 _S_heap_size;     
+      
+      size_t
+      _M_round_up(size_t __bytes)
+      { return ((__bytes + (size_t)_S_align - 1) & ~((size_t)_S_align - 1)); }
+      
+      _GLIBCXX_CONST _Obj* volatile*
+      _M_get_free_list(size_t __bytes) throw ();
+    
+      __mutex&
+      _M_get_mutex() throw ();
+
+      // Returns an object of size __n, and optionally adds to size __n
+      // free list.
+      void*
+      _M_refill(size_t __n);
+      
+      // Allocates a chunk for nobjs of size size.  nobjs may be reduced
+      // if it is inconvenient to allocate the requested number.
+      char*
+      _M_allocate_chunk(size_t __n, int& __nobjs);
+    };
+
+
+  /**
+   * @brief  Allocator using a memory pool with a single lock.
+   * @ingroup allocators
+   */
+  template<typename _Tp>
+    class __pool_alloc : private __pool_alloc_base
+    {
+    private:
+      static _Atomic_word	    _S_force_new;
+
+    public:
+      typedef size_t     size_type;
+      typedef ptrdiff_t  difference_type;
+      typedef _Tp*       pointer;
+      typedef const _Tp* const_pointer;
+      typedef _Tp&       reference;
+      typedef const _Tp& const_reference;
+      typedef _Tp        value_type;
+
+      template<typename _Tp1>
+        struct rebind
+        { typedef __pool_alloc<_Tp1> other; };
+
+      __pool_alloc() throw() { }
+
+      __pool_alloc(const __pool_alloc&) throw() { }
+
+      template<typename _Tp1>
+        __pool_alloc(const __pool_alloc<_Tp1>&) throw() { }
+
+      ~__pool_alloc() throw() { }
+
+      pointer
+      address(reference __x) const { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const { return std::__addressof(__x); }
+
+      size_type
+      max_size() const throw() 
+      { return size_t(-1) / sizeof(_Tp); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 402. wrong new expression in [some_] allocator::construct
+      void 
+      construct(pointer __p, const _Tp& __val) 
+      { ::new((void *)__p) _Tp(__val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        void
+        construct(pointer __p, _Args&&... __args)
+	{ ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
+#endif
+
+      void 
+      destroy(pointer __p) { __p->~_Tp(); }
+
+      pointer
+      allocate(size_type __n, const void* = 0);
+
+      void
+      deallocate(pointer __p, size_type __n);      
+    };
+
+  template<typename _Tp>
+    inline bool
+    operator==(const __pool_alloc<_Tp>&, const __pool_alloc<_Tp>&)
+    { return true; }
+
+  template<typename _Tp>
+    inline bool
+    operator!=(const __pool_alloc<_Tp>&, const __pool_alloc<_Tp>&)
+    { return false; }
+
+  template<typename _Tp>
+    _Atomic_word
+    __pool_alloc<_Tp>::_S_force_new;
+
+  template<typename _Tp>
+    _Tp*
+    __pool_alloc<_Tp>::allocate(size_type __n, const void*)
+    {
+      pointer __ret = 0;
+      if (__builtin_expect(__n != 0, true))
+	{
+	  if (__n > this->max_size())
+	    std::__throw_bad_alloc();
+
+	  // If there is a race through here, assume answer from getenv
+	  // will resolve in same direction.  Inspired by techniques
+	  // to efficiently support threading found in basic_string.h.
+	  if (_S_force_new == 0)
+	    {
+	      if (std::getenv("GLIBCXX_FORCE_NEW"))
+		__atomic_add_dispatch(&_S_force_new, 1);
+	      else
+		__atomic_add_dispatch(&_S_force_new, -1);
+	    }
+
+	  const size_t __bytes = __n * sizeof(_Tp);	      
+	  if (__bytes > size_t(_S_max_bytes) || _S_force_new > 0)
+	    __ret = static_cast<_Tp*>(::operator new(__bytes));
+	  else
+	    {
+	      _Obj* volatile* __free_list = _M_get_free_list(__bytes);
+	      
+	      __scoped_lock sentry(_M_get_mutex());
+	      _Obj* __restrict__ __result = *__free_list;
+	      if (__builtin_expect(__result == 0, 0))
+		__ret = static_cast<_Tp*>(_M_refill(_M_round_up(__bytes)));
+	      else
+		{
+		  *__free_list = __result->_M_free_list_link;
+		  __ret = reinterpret_cast<_Tp*>(__result);
+		}
+	      if (__ret == 0)
+		std::__throw_bad_alloc();
+	    }
+	}
+      return __ret;
+    }
+
+  template<typename _Tp>
+    void
+    __pool_alloc<_Tp>::deallocate(pointer __p, size_type __n)
+    {
+      if (__builtin_expect(__n != 0 && __p != 0, true))
+	{
+	  const size_t __bytes = __n * sizeof(_Tp);
+	  if (__bytes > static_cast<size_t>(_S_max_bytes) || _S_force_new > 0)
+	    ::operator delete(__p);
+	  else
+	    {
+	      _Obj* volatile* __free_list = _M_get_free_list(__bytes);
+	      _Obj* __q = reinterpret_cast<_Obj*>(__p);
+
+	      __scoped_lock sentry(_M_get_mutex());
+	      __q ->_M_free_list_link = *__free_list;
+	      *__free_list = __q;
+	    }
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rb_tree b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rb_tree
new file mode 100644
index 000000000..4293a7555
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rb_tree
@@ -0,0 +1,96 @@
+// rb_tree extension -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/rb_tree
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset). 
+ */
+
+#ifndef _RB_TREE
+#define _RB_TREE 1
+
+#pragma GCC system_header
+
+#include <bits/stl_tree.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::_Rb_tree;
+  using std::allocator;
+
+  // Class rb_tree is not part of the C++ standard.  It is provided for
+  // compatibility with the HP STL.
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template <class _Key, class _Value, class _KeyOfValue, class _Compare,
+	    class _Alloc = allocator<_Value> >
+    struct rb_tree
+    : public _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>
+    {
+      typedef _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> _Base;
+      typedef typename _Base::allocator_type allocator_type;
+
+      rb_tree(const _Compare& __comp = _Compare(),
+	      const allocator_type& __a = allocator_type())
+      : _Base(__comp, __a) { }
+
+      ~rb_tree() { }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rc_string_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rc_string_base.h
new file mode 100644
index 000000000..4a27ff6ef
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rc_string_base.h
@@ -0,0 +1,733 @@
+// Reference-counted versatile string base -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/rc_string_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/vstring.h}
+ */
+
+#ifndef _RC_STRING_BASE_H
+#define _RC_STRING_BASE_H 1
+
+#include <ext/atomicity.h>
+#include <bits/stl_iterator_base_funcs.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  Documentation?  What's that?
+   *  Nathan Myers <ncm@cantrip.org>.
+   *
+   *  A string looks like this:
+   *
+   *  @code
+   *                                        [_Rep]
+   *                                        _M_length
+   *   [__rc_string_base<char_type>]        _M_capacity
+   *   _M_dataplus                          _M_refcount
+   *   _M_p ---------------->               unnamed array of char_type
+   *  @endcode
+   *
+   *  Where the _M_p points to the first character in the string, and
+   *  you cast it to a pointer-to-_Rep and subtract 1 to get a
+   *  pointer to the header.
+   *
+   *  This approach has the enormous advantage that a string object
+   *  requires only one allocation.  All the ugliness is confined
+   *  within a single pair of inline functions, which each compile to
+   *  a single @a add instruction: _Rep::_M_refdata(), and
+   *  __rc_string_base::_M_rep(); and the allocation function which gets a
+   *  block of raw bytes and with room enough and constructs a _Rep
+   *  object at the front.
+   *
+   *  The reason you want _M_data pointing to the character array and
+   *  not the _Rep is so that the debugger can see the string
+   *  contents. (Probably we should add a non-inline member to get
+   *  the _Rep for the debugger to use, so users can check the actual
+   *  string length.)
+   *
+   *  Note that the _Rep object is a POD so that you can have a
+   *  static <em>empty string</em> _Rep object already @a constructed before
+   *  static constructors have run.  The reference-count encoding is
+   *  chosen so that a 0 indicates one reference, so you never try to
+   *  destroy the empty-string _Rep object.
+   *
+   *  All but the last paragraph is considered pretty conventional
+   *  for a C++ string implementation.
+  */
+ template<typename _CharT, typename _Traits, typename _Alloc>
+    class __rc_string_base
+    : protected __vstring_utility<_CharT, _Traits, _Alloc>
+    {
+    public:
+      typedef _Traits					    traits_type;
+      typedef typename _Traits::char_type		    value_type;
+      typedef _Alloc					    allocator_type;
+
+      typedef __vstring_utility<_CharT, _Traits, _Alloc>    _Util_Base;
+      typedef typename _Util_Base::_CharT_alloc_type        _CharT_alloc_type;
+      typedef typename _CharT_alloc_type::size_type	    size_type;
+
+    private:
+      // _Rep: string representation
+      //   Invariants:
+      //   1. String really contains _M_length + 1 characters: due to 21.3.4
+      //      must be kept null-terminated.
+      //   2. _M_capacity >= _M_length
+      //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
+      //   3. _M_refcount has three states:
+      //      -1: leaked, one reference, no ref-copies allowed, non-const.
+      //       0: one reference, non-const.
+      //     n>0: n + 1 references, operations require a lock, const.
+      //   4. All fields == 0 is an empty string, given the extra storage
+      //      beyond-the-end for a null terminator; thus, the shared
+      //      empty string representation needs no constructor.
+      struct _Rep
+      {
+	union
+	{
+	  struct
+	  {
+	    size_type	    _M_length;
+	    size_type	    _M_capacity;
+	    _Atomic_word    _M_refcount;
+	  }                 _M_info;
+
+	  // Only for alignment purposes.
+	  _CharT            _M_align;
+	};
+
+	typedef typename _Alloc::template rebind<_Rep>::other _Rep_alloc_type;
+
+ 	_CharT*
+	_M_refdata() throw()
+	{ return reinterpret_cast<_CharT*>(this + 1); }
+
+	_CharT*
+	_M_refcopy() throw()
+	{
+	  __atomic_add_dispatch(&_M_info._M_refcount, 1);
+	  return _M_refdata();
+	}  // XXX MT
+
+	void
+	_M_set_length(size_type __n)
+	{
+	  _M_info._M_refcount = 0;  // One reference.
+	  _M_info._M_length = __n;
+	  // grrr. (per 21.3.4)
+	  // You cannot leave those LWG people alone for a second.
+	  traits_type::assign(_M_refdata()[__n], _CharT());
+	}
+
+	// Create & Destroy
+	static _Rep*
+	_S_create(size_type, size_type, const _Alloc&);
+
+	void
+	_M_destroy(const _Alloc&) throw();
+
+	_CharT*
+	_M_clone(const _Alloc&, size_type __res = 0);
+      };
+
+      struct _Rep_empty
+      : public _Rep
+      {
+	_CharT              _M_terminal;
+      };
+
+      static _Rep_empty     _S_empty_rep;
+
+      // The maximum number of individual char_type elements of an
+      // individual string is determined by _S_max_size. This is the
+      // value that will be returned by max_size().  (Whereas npos
+      // is the maximum number of bytes the allocator can allocate.)
+      // If one was to divvy up the theoretical largest size string,
+      // with a terminating character and m _CharT elements, it'd
+      // look like this:
+      // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
+      //        + sizeof(_Rep) - 1
+      // (NB: last two terms for rounding reasons, see _M_create below)
+      // Solving for m:
+      // m = ((npos - 2 * sizeof(_Rep) + 1) / sizeof(_CharT)) - 1
+      // In addition, this implementation halves this amount.
+      enum { _S_max_size = (((static_cast<size_type>(-1) - 2 * sizeof(_Rep)
+			      + 1) / sizeof(_CharT)) - 1) / 2 };
+
+      // Data Member (private):
+      mutable typename _Util_Base::template _Alloc_hider<_Alloc>  _M_dataplus;
+
+      void
+      _M_data(_CharT* __p)
+      { _M_dataplus._M_p = __p; }
+
+      _Rep*
+      _M_rep() const
+      { return &((reinterpret_cast<_Rep*>(_M_data()))[-1]); }
+
+      _CharT*
+      _M_grab(const _Alloc& __alloc) const
+      {
+	return (!_M_is_leaked() && _M_get_allocator() == __alloc)
+		? _M_rep()->_M_refcopy() : _M_rep()->_M_clone(__alloc);
+      }
+
+      void
+      _M_dispose()
+      {
+	// Be race-detector-friendly.  For more info see bits/c++config.
+	_GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_rep()->_M_info.
+						_M_refcount);
+	if (__exchange_and_add_dispatch(&_M_rep()->_M_info._M_refcount,
+					-1) <= 0)
+	  {
+	    _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_rep()->_M_info.
+						   _M_refcount);
+	    _M_rep()->_M_destroy(_M_get_allocator());
+	  }
+      }  // XXX MT
+
+      bool
+      _M_is_leaked() const
+      { return _M_rep()->_M_info._M_refcount < 0; }
+
+      void
+      _M_set_sharable()
+      { _M_rep()->_M_info._M_refcount = 0; }
+
+      void
+      _M_leak_hard();
+
+      // _S_construct_aux is used to implement the 21.3.1 para 15 which
+      // requires special behaviour if _InIterator is an integral type
+      template<typename _InIterator>
+	static _CharT*
+	_S_construct_aux(_InIterator __beg, _InIterator __end,
+			 const _Alloc& __a, std::__false_type)
+	{
+	  typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
+	  return _S_construct(__beg, __end, __a, _Tag());
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+	static _CharT*
+	_S_construct_aux(_Integer __beg, _Integer __end,
+			 const _Alloc& __a, std::__true_type)
+	{ return _S_construct_aux_2(static_cast<size_type>(__beg),
+				    __end, __a); }
+
+      static _CharT*
+      _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
+      { return _S_construct(__req, __c, __a); }
+
+      template<typename _InIterator>
+	static _CharT*
+	_S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
+	{
+	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
+	  return _S_construct_aux(__beg, __end, __a, _Integral());
+	}
+
+      // For Input Iterators, used in istreambuf_iterators, etc.
+      template<typename _InIterator>
+	static _CharT*
+	 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		      std::input_iterator_tag);
+
+      // For forward_iterators up to random_access_iterators, used for
+      // string::iterator, _CharT*, etc.
+      template<typename _FwdIterator>
+	static _CharT*
+	_S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
+		     std::forward_iterator_tag);
+
+      static _CharT*
+      _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
+
+    public:
+      size_type
+      _M_max_size() const
+      { return size_type(_S_max_size); }
+
+      _CharT*
+      _M_data() const
+      { return _M_dataplus._M_p; }
+
+      size_type
+      _M_length() const
+      { return _M_rep()->_M_info._M_length; }
+
+      size_type
+      _M_capacity() const
+      { return _M_rep()->_M_info._M_capacity; }
+
+      bool
+      _M_is_shared() const
+      { return _M_rep()->_M_info._M_refcount > 0; }
+
+      void
+      _M_set_leaked()
+      { _M_rep()->_M_info._M_refcount = -1; }
+
+      void
+      _M_leak()    // for use in begin() & non-const op[]
+      {
+	if (!_M_is_leaked())
+	  _M_leak_hard();
+      }
+
+      void
+      _M_set_length(size_type __n)
+      { _M_rep()->_M_set_length(__n); }
+
+      __rc_string_base()
+      : _M_dataplus(_S_empty_rep._M_refcopy()) { }
+
+      __rc_string_base(const _Alloc& __a);
+
+      __rc_string_base(const __rc_string_base& __rcs);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      __rc_string_base(__rc_string_base&& __rcs)
+      : _M_dataplus(__rcs._M_dataplus)
+      { __rcs._M_data(_S_empty_rep._M_refcopy()); }
+#endif
+
+      __rc_string_base(size_type __n, _CharT __c, const _Alloc& __a);
+
+      template<typename _InputIterator>
+	__rc_string_base(_InputIterator __beg, _InputIterator __end,
+			 const _Alloc& __a);
+
+      ~__rc_string_base()
+      { _M_dispose(); }
+
+      allocator_type&
+      _M_get_allocator()
+      { return _M_dataplus; }
+
+      const allocator_type&
+      _M_get_allocator() const
+      { return _M_dataplus; }
+
+      void
+      _M_swap(__rc_string_base& __rcs);
+
+      void
+      _M_assign(const __rc_string_base& __rcs);
+
+      void
+      _M_reserve(size_type __res);
+
+      void
+      _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
+		size_type __len2);
+
+      void
+      _M_erase(size_type __pos, size_type __n);
+
+      void
+      _M_clear()
+      { _M_erase(size_type(0), _M_length()); }
+
+      bool
+      _M_compare(const __rc_string_base&) const
+      { return false; }
+    };
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename __rc_string_base<_CharT, _Traits, _Alloc>::_Rep_empty
+    __rc_string_base<_CharT, _Traits, _Alloc>::_S_empty_rep;
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    typename __rc_string_base<_CharT, _Traits, _Alloc>::_Rep*
+    __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
+    _S_create(size_type __capacity, size_type __old_capacity,
+	      const _Alloc& __alloc)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 83.  String::npos vs. string::max_size()
+      if (__capacity > size_type(_S_max_size))
+	std::__throw_length_error(__N("__rc_string_base::_Rep::_S_create"));
+
+      // The standard places no restriction on allocating more memory
+      // than is strictly needed within this layer at the moment or as
+      // requested by an explicit application call to reserve().
+
+      // Many malloc implementations perform quite poorly when an
+      // application attempts to allocate memory in a stepwise fashion
+      // growing each allocation size by only 1 char.  Additionally,
+      // it makes little sense to allocate less linear memory than the
+      // natural blocking size of the malloc implementation.
+      // Unfortunately, we would need a somewhat low-level calculation
+      // with tuned parameters to get this perfect for any particular
+      // malloc implementation.  Fortunately, generalizations about
+      // common features seen among implementations seems to suffice.
+
+      // __pagesize need not match the actual VM page size for good
+      // results in practice, thus we pick a common value on the low
+      // side.  __malloc_header_size is an estimate of the amount of
+      // overhead per memory allocation (in practice seen N * sizeof
+      // (void*) where N is 0, 2 or 4).  According to folklore,
+      // picking this value on the high side is better than
+      // low-balling it (especially when this algorithm is used with
+      // malloc implementations that allocate memory blocks rounded up
+      // to a size which is a power of 2).
+      const size_type __pagesize = 4096;
+      const size_type __malloc_header_size = 4 * sizeof(void*);
+
+      // The below implements an exponential growth policy, necessary to
+      // meet amortized linear time requirements of the library: see
+      // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
+      if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
+	{
+	  __capacity = 2 * __old_capacity;
+	  // Never allocate a string bigger than _S_max_size.
+	  if (__capacity > size_type(_S_max_size))
+	    __capacity = size_type(_S_max_size);
+	}
+
+      // NB: Need an array of char_type[__capacity], plus a terminating
+      // null char_type() element, plus enough for the _Rep data structure,
+      // plus sizeof(_Rep) - 1 to upper round to a size multiple of
+      // sizeof(_Rep).
+      // Whew. Seemingly so needy, yet so elemental.
+      size_type __size = ((__capacity + 1) * sizeof(_CharT)
+			  + 2 * sizeof(_Rep) - 1);
+
+      const size_type __adj_size = __size + __malloc_header_size;
+      if (__adj_size > __pagesize && __capacity > __old_capacity)
+	{
+	  const size_type __extra = __pagesize - __adj_size % __pagesize;
+	  __capacity += __extra / sizeof(_CharT);
+	  if (__capacity > size_type(_S_max_size))
+	    __capacity = size_type(_S_max_size);
+	  __size = (__capacity + 1) * sizeof(_CharT) + 2 * sizeof(_Rep) - 1;
+	}
+
+      // NB: Might throw, but no worries about a leak, mate: _Rep()
+      // does not throw.
+      _Rep* __place = _Rep_alloc_type(__alloc).allocate(__size / sizeof(_Rep));
+      _Rep* __p = new (__place) _Rep;
+      __p->_M_info._M_capacity = __capacity;
+      return __p;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
+    _M_destroy(const _Alloc& __a) throw ()
+    {
+      const size_type __size = ((_M_info._M_capacity + 1) * sizeof(_CharT)
+				+ 2 * sizeof(_Rep) - 1);
+      _Rep_alloc_type(__a).deallocate(this, __size / sizeof(_Rep));
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _CharT*
+    __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
+    _M_clone(const _Alloc& __alloc, size_type __res)
+    {
+      // Requested capacity of the clone.
+      const size_type __requested_cap = _M_info._M_length + __res;
+      _Rep* __r = _Rep::_S_create(__requested_cap, _M_info._M_capacity,
+				  __alloc);
+
+      if (_M_info._M_length)
+	_S_copy(__r->_M_refdata(), _M_refdata(), _M_info._M_length);
+
+      __r->_M_set_length(_M_info._M_length);
+      return __r->_M_refdata();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    __rc_string_base(const _Alloc& __a)
+    : _M_dataplus(__a, _S_construct(size_type(), _CharT(), __a)) { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    __rc_string_base(const __rc_string_base& __rcs)
+    : _M_dataplus(__rcs._M_get_allocator(),
+		  __rcs._M_grab(__rcs._M_get_allocator())) { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    __rc_string_base(size_type __n, _CharT __c, const _Alloc& __a)
+    : _M_dataplus(__a, _S_construct(__n, __c, __a)) { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InputIterator>
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    __rc_string_base(_InputIterator __beg, _InputIterator __end,
+		     const _Alloc& __a)
+    : _M_dataplus(__a, _S_construct(__beg, __end, __a)) { }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_leak_hard()
+    {
+      if (_M_is_shared())
+	_M_erase(0, 0);
+      _M_set_leaked();
+    }
+
+  // NB: This is the special case for Input Iterators, used in
+  // istreambuf_iterators, etc.
+  // Input Iterators have a cost structure very different from
+  // pointers, calling for a different coding style.
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InIterator>
+      _CharT*
+      __rc_string_base<_CharT, _Traits, _Alloc>::
+      _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		   std::input_iterator_tag)
+      {
+	if (__beg == __end && __a == _Alloc())
+	  return _S_empty_rep._M_refcopy();
+
+	// Avoid reallocation for common case.
+	_CharT __buf[128];
+	size_type __len = 0;
+	while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
+	  {
+	    __buf[__len++] = *__beg;
+	    ++__beg;
+	  }
+	_Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
+	_S_copy(__r->_M_refdata(), __buf, __len);
+	__try
+	  {
+	    while (__beg != __end)
+	      {
+		if (__len == __r->_M_info._M_capacity)
+		  {
+		    // Allocate more space.
+		    _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
+		    _S_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
+		    __r->_M_destroy(__a);
+		    __r = __another;
+		  }
+		__r->_M_refdata()[__len++] = *__beg;
+		++__beg;
+	      }
+	  }
+	__catch(...)
+	  {
+	    __r->_M_destroy(__a);
+	    __throw_exception_again;
+	  }
+	__r->_M_set_length(__len);
+	return __r->_M_refdata();
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InIterator>
+      _CharT*
+      __rc_string_base<_CharT, _Traits, _Alloc>::
+      _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+		   std::forward_iterator_tag)
+      {
+	if (__beg == __end && __a == _Alloc())
+	  return _S_empty_rep._M_refcopy();
+
+	// NB: Not required, but considered best practice.
+	if (__is_null_pointer(__beg) && __beg != __end)
+	  std::__throw_logic_error(__N("__rc_string_base::"
+				       "_S_construct null not valid"));
+
+	const size_type __dnew = static_cast<size_type>(std::distance(__beg,
+								      __end));
+	// Check for out_of_range and length_error exceptions.
+	_Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
+	__try
+	  { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
+	__catch(...)
+	  {
+	    __r->_M_destroy(__a);
+	    __throw_exception_again;
+	  }
+	__r->_M_set_length(__dnew);
+	return __r->_M_refdata();
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _CharT*
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
+    {
+      if (__n == 0 && __a == _Alloc())
+	return _S_empty_rep._M_refcopy();
+
+      // Check for out_of_range and length_error exceptions.
+      _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
+      if (__n)
+	_S_assign(__r->_M_refdata(), __n, __c);
+
+      __r->_M_set_length(__n);
+      return __r->_M_refdata();
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_swap(__rc_string_base& __rcs)
+    {
+      if (_M_is_leaked())
+	_M_set_sharable();
+      if (__rcs._M_is_leaked())
+	__rcs._M_set_sharable();
+
+      _CharT* __tmp = _M_data();
+      _M_data(__rcs._M_data());
+      __rcs._M_data(__tmp);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<allocator_type>::_S_do_it(_M_get_allocator(),
+						  __rcs._M_get_allocator());
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_assign(const __rc_string_base& __rcs)
+    {
+      if (_M_rep() != __rcs._M_rep())
+	{
+	  _CharT* __tmp = __rcs._M_grab(_M_get_allocator());
+	  _M_dispose();
+	  _M_data(__tmp);
+	}
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_reserve(size_type __res)
+    {
+      // Make sure we don't shrink below the current size.
+      if (__res < _M_length())
+	__res = _M_length();
+
+      if (__res != _M_capacity() || _M_is_shared())
+	{
+	  _CharT* __tmp = _M_rep()->_M_clone(_M_get_allocator(),
+					     __res - _M_length());
+	  _M_dispose();
+	  _M_data(__tmp);
+	}
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
+	      size_type __len2)
+    {
+      const size_type __how_much = _M_length() - __pos - __len1;
+
+      _Rep* __r = _Rep::_S_create(_M_length() + __len2 - __len1,
+				  _M_capacity(), _M_get_allocator());
+
+      if (__pos)
+	_S_copy(__r->_M_refdata(), _M_data(), __pos);
+      if (__s && __len2)
+	_S_copy(__r->_M_refdata() + __pos, __s, __len2);
+      if (__how_much)
+	_S_copy(__r->_M_refdata() + __pos + __len2,
+		_M_data() + __pos + __len1, __how_much);
+
+      _M_dispose();
+      _M_data(__r->_M_refdata());
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __rc_string_base<_CharT, _Traits, _Alloc>::
+    _M_erase(size_type __pos, size_type __n)
+    {
+      const size_type __new_size = _M_length() - __n;
+      const size_type __how_much = _M_length() - __pos - __n;
+
+      if (_M_is_shared())
+	{
+	  // Must reallocate.
+	  _Rep* __r = _Rep::_S_create(__new_size, _M_capacity(),
+				      _M_get_allocator());
+
+	  if (__pos)
+	    _S_copy(__r->_M_refdata(), _M_data(), __pos);
+	  if (__how_much)
+	    _S_copy(__r->_M_refdata() + __pos,
+		    _M_data() + __pos + __n, __how_much);
+
+	  _M_dispose();
+	  _M_data(__r->_M_refdata());
+	}
+      else if (__how_much && __n)
+	{
+	  // Work in-place.
+	  _S_move(_M_data() + __pos,
+		  _M_data() + __pos + __n, __how_much);
+	}
+
+      _M_rep()->_M_set_length(__new_size);
+    }
+
+  template<>
+    inline bool
+    __rc_string_base<char, std::char_traits<char>,
+		     std::allocator<char> >::
+    _M_compare(const __rc_string_base& __rcs) const
+    {
+      if (_M_rep() == __rcs._M_rep())
+	return true;
+      return false;
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    inline bool
+    __rc_string_base<wchar_t, std::char_traits<wchar_t>,
+		     std::allocator<wchar_t> >::
+    _M_compare(const __rc_string_base& __rcs) const
+    {
+      if (_M_rep() == __rcs._M_rep())
+	return true;
+      return false;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _RC_STRING_BASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rope b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rope
new file mode 100644
index 000000000..42921516e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/rope
@@ -0,0 +1,2965 @@
+// SGI's rope class -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ext/rope
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset). 
+ */
+
+#ifndef _ROPE
+#define _ROPE 1
+
+#include <algorithm>
+#include <iosfwd>
+#include <bits/stl_construct.h>
+#include <bits/stl_uninitialized.h>
+#include <bits/stl_function.h>
+#include <bits/stl_numeric.h>
+#include <bits/allocator.h>
+#include <bits/gthr.h>
+#include <tr1/functional>
+
+# ifdef __GC
+#   define __GC_CONST const
+# else
+#   define __GC_CONST   // constant except for deallocation
+# endif
+
+#include <ext/memory> // For uninitialized_copy_n
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  namespace __detail
+  {
+    enum { _S_max_rope_depth = 45 };
+    enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
+  } // namespace __detail
+
+  using std::size_t;
+  using std::ptrdiff_t;
+  using std::allocator;
+  using std::_Destroy;
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // See libstdc++/36832.
+  template<typename _ForwardIterator, typename _Allocator>
+    void
+    _Destroy_const(_ForwardIterator __first,
+		   _ForwardIterator __last, _Allocator __alloc)
+    {
+      for (; __first != __last; ++__first)
+	__alloc.destroy(&*__first);
+    }
+
+  template<typename _ForwardIterator, typename _Tp>
+    inline void
+    _Destroy_const(_ForwardIterator __first,
+		   _ForwardIterator __last, allocator<_Tp>)
+    { _Destroy(__first, __last); }
+
+  // The _S_eos function is used for those functions that
+  // convert to/from C-like strings to detect the end of the string.
+  
+  // The end-of-C-string character.
+  // This is what the draft standard says it should be.
+  template <class _CharT>
+    inline _CharT
+    _S_eos(_CharT*)
+    { return _CharT(); }
+
+  // Test for basic character types.
+  // For basic character types leaves having a trailing eos.
+  template <class _CharT>
+    inline bool
+    _S_is_basic_char_type(_CharT*)
+    { return false; }
+  
+  template <class _CharT>
+    inline bool
+    _S_is_one_byte_char_type(_CharT*)
+    { return false; }
+
+  inline bool
+  _S_is_basic_char_type(char*)
+  { return true; }
+  
+  inline bool
+  _S_is_one_byte_char_type(char*)
+  { return true; }
+  
+  inline bool
+  _S_is_basic_char_type(wchar_t*)
+  { return true; }
+
+  // Store an eos iff _CharT is a basic character type.
+  // Do not reference _S_eos if it isn't.
+  template <class _CharT>
+    inline void
+    _S_cond_store_eos(_CharT&) { }
+
+  inline void
+  _S_cond_store_eos(char& __c)
+  { __c = 0; }
+
+  inline void
+  _S_cond_store_eos(wchar_t& __c)
+  { __c = 0; }
+
+  // char_producers are logically functions that generate a section of
+  // a string.  These can be converted to ropes.  The resulting rope
+  // invokes the char_producer on demand.  This allows, for example,
+  // files to be viewed as ropes without reading the entire file.
+  template <class _CharT>
+    class char_producer
+    {
+    public:
+      virtual ~char_producer() { };
+
+      virtual void
+      operator()(size_t __start_pos, size_t __len,
+		 _CharT* __buffer) = 0;
+      // Buffer should really be an arbitrary output iterator.
+      // That way we could flatten directly into an ostream, etc.
+      // This is thoroughly impossible, since iterator types don't
+      // have runtime descriptions.
+    };
+
+  // Sequence buffers:
+  //
+  // Sequence must provide an append operation that appends an
+  // array to the sequence.  Sequence buffers are useful only if
+  // appending an entire array is cheaper than appending element by element.
+  // This is true for many string representations.
+  // This should  perhaps inherit from ostream<sequence::value_type>
+  // and be implemented correspondingly, so that they can be used
+  // for formatted.  For the sake of portability, we don't do this yet.
+  //
+  // For now, sequence buffers behave as output iterators.  But they also
+  // behave a little like basic_ostringstream<sequence::value_type> and a
+  // little like containers.
+
+  template<class _Sequence, size_t _Buf_sz = 100>
+    class sequence_buffer
+    : public std::iterator<std::output_iterator_tag, void, void, void, void>
+    {
+    public:
+      typedef typename _Sequence::value_type value_type;
+    protected:
+      _Sequence* _M_prefix;
+      value_type _M_buffer[_Buf_sz];
+      size_t     _M_buf_count;
+    public:
+
+      void
+      flush()
+      {
+	_M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
+	_M_buf_count = 0;
+      }
+      
+      ~sequence_buffer()
+      { flush(); }
+      
+      sequence_buffer()
+      : _M_prefix(0), _M_buf_count(0) { }
+
+      sequence_buffer(const sequence_buffer& __x)
+      {
+	_M_prefix = __x._M_prefix;
+	_M_buf_count = __x._M_buf_count;
+	std::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
+      }
+      
+      sequence_buffer(sequence_buffer& __x)
+      {
+	__x.flush();
+	_M_prefix = __x._M_prefix;
+	_M_buf_count = 0;
+      }
+      
+      sequence_buffer(_Sequence& __s)
+      : _M_prefix(&__s), _M_buf_count(0) { }
+      
+      sequence_buffer&
+      operator=(sequence_buffer& __x)
+      {
+	__x.flush();
+	_M_prefix = __x._M_prefix;
+	_M_buf_count = 0;
+	return *this;
+      }
+
+      sequence_buffer&
+      operator=(const sequence_buffer& __x)
+      {
+	_M_prefix = __x._M_prefix;
+	_M_buf_count = __x._M_buf_count;
+	std::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
+	return *this;
+      }
+      
+      void
+      push_back(value_type __x)
+      {
+	if (_M_buf_count < _Buf_sz)
+	  {
+	    _M_buffer[_M_buf_count] = __x;
+	    ++_M_buf_count;
+	  }
+	else
+	  {
+	    flush();
+	    _M_buffer[0] = __x;
+	    _M_buf_count = 1;
+	  }
+      }
+      
+      void
+      append(value_type* __s, size_t __len)
+      {
+	if (__len + _M_buf_count <= _Buf_sz)
+	  {
+	    size_t __i = _M_buf_count;
+	    for (size_t __j = 0; __j < __len; __i++, __j++)
+	      _M_buffer[__i] = __s[__j];
+	    _M_buf_count += __len;
+	  }
+	else if (0 == _M_buf_count)
+	  _M_prefix->append(__s, __s + __len);
+	else
+	  {
+	    flush();
+	    append(__s, __len);
+	  }
+      }
+
+      sequence_buffer&
+      write(value_type* __s, size_t __len)
+      {
+	append(__s, __len);
+	return *this;
+      }
+      
+      sequence_buffer&
+      put(value_type __x)
+      {
+	push_back(__x);
+	return *this;
+      }
+      
+      sequence_buffer&
+      operator=(const value_type& __rhs)
+      {
+	push_back(__rhs);
+	return *this;
+      }
+      
+      sequence_buffer&
+      operator*()
+      { return *this; }
+      
+      sequence_buffer&
+      operator++()
+      { return *this; }
+      
+      sequence_buffer
+      operator++(int)
+      { return *this; }
+    };
+  
+  // The following should be treated as private, at least for now.
+  template<class _CharT>
+    class _Rope_char_consumer
+    {
+    public:
+      // If we had member templates, these should not be virtual.
+      // For now we need to use run-time parametrization where
+      // compile-time would do.  Hence this should all be private
+      // for now.
+      // The symmetry with char_producer is accidental and temporary.
+      virtual ~_Rope_char_consumer() { };
+  
+      virtual bool
+      operator()(const _CharT* __buffer, size_t __len) = 0;
+    };
+  
+  // First a lot of forward declarations.  The standard seems to require
+  // much stricter "declaration before use" than many of the implementations
+  // that preceded it.
+  template<class _CharT, class _Alloc = allocator<_CharT> >
+    class rope;
+  
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeConcatenation;
+
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeLeaf;
+  
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeFunction;
+  
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeSubstring;
+  
+  template<class _CharT, class _Alloc>
+    class _Rope_iterator;
+  
+  template<class _CharT, class _Alloc>
+    class _Rope_const_iterator;
+  
+  template<class _CharT, class _Alloc>
+    class _Rope_char_ref_proxy;
+  
+  template<class _CharT, class _Alloc>
+    class _Rope_char_ptr_proxy;
+
+  template<class _CharT, class _Alloc>
+    bool
+    operator==(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
+	       const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    _Rope_const_iterator<_CharT, _Alloc>
+    operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	      ptrdiff_t __n);
+
+  template<class _CharT, class _Alloc>
+    _Rope_const_iterator<_CharT, _Alloc>
+    operator+(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	      ptrdiff_t __n);
+
+  template<class _CharT, class _Alloc>
+    _Rope_const_iterator<_CharT, _Alloc>
+    operator+(ptrdiff_t __n,
+	      const _Rope_const_iterator<_CharT, _Alloc>& __x);
+
+  template<class _CharT, class _Alloc>
+    bool
+    operator==(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_const_iterator<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    bool
+    operator<(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_const_iterator<_CharT, _Alloc>& __y);
+  
+  template<class _CharT, class _Alloc>
+    ptrdiff_t
+    operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_const_iterator<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    _Rope_iterator<_CharT, _Alloc>
+    operator-(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n);
+
+  template<class _CharT, class _Alloc>
+    _Rope_iterator<_CharT, _Alloc>
+    operator+(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n);
+
+  template<class _CharT, class _Alloc>
+    _Rope_iterator<_CharT, _Alloc>
+    operator+(ptrdiff_t __n, const _Rope_iterator<_CharT, _Alloc>& __x);
+
+  template<class _CharT, class _Alloc>
+    bool
+    operator==(const _Rope_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_iterator<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    bool
+    operator<(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_iterator<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    ptrdiff_t
+    operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_iterator<_CharT, _Alloc>& __y);
+
+  template<class _CharT, class _Alloc>
+    rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left,
+	      const rope<_CharT, _Alloc>& __right);
+
+  template<class _CharT, class _Alloc>
+    rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left, const _CharT* __right);
+
+  template<class _CharT, class _Alloc>
+    rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left, _CharT __right);
+
+  // Some helpers, so we can use power on ropes.
+  // See below for why this isn't local to the implementation.
+  
+  // This uses a nonstandard refcount convention.
+  // The result has refcount 0.
+  template<class _CharT, class _Alloc>
+    struct _Rope_Concat_fn
+    : public std::binary_function<rope<_CharT, _Alloc>, rope<_CharT, _Alloc>,
+				  rope<_CharT, _Alloc> >
+    {
+      rope<_CharT, _Alloc>
+      operator()(const rope<_CharT, _Alloc>& __x,
+		 const rope<_CharT, _Alloc>& __y)
+      { return __x + __y; }
+    };
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>
+    identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
+    { return rope<_CharT, _Alloc>(); }
+
+  // Class _Refcount_Base provides a type, _RC_t, a data member,
+  // _M_ref_count, and member functions _M_incr and _M_decr, which perform
+  // atomic preincrement/predecrement.  The constructor initializes
+  // _M_ref_count.
+  struct _Refcount_Base
+  {
+    // The type _RC_t
+    typedef size_t _RC_t;
+    
+    // The data member _M_ref_count
+    volatile _RC_t _M_ref_count;
+
+    // Constructor
+    __gthread_mutex_t _M_ref_count_lock;
+
+    _Refcount_Base(_RC_t __n) : _M_ref_count(__n), _M_ref_count_lock()
+    {
+#ifdef __GTHREAD_MUTEX_INIT
+      __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+      _M_ref_count_lock = __tmp;
+#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
+      __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
+#else
+#error __GTHREAD_MUTEX_INIT or __GTHREAD_MUTEX_INIT_FUNCTION should be defined by gthr.h abstraction layer, report problem to libstdc++@gcc.gnu.org.
+#endif
+    }
+
+    void
+    _M_incr()
+    {
+      __gthread_mutex_lock(&_M_ref_count_lock);
+      ++_M_ref_count;
+      __gthread_mutex_unlock(&_M_ref_count_lock);
+    }
+
+    _RC_t
+    _M_decr()
+    {
+      __gthread_mutex_lock(&_M_ref_count_lock);
+      volatile _RC_t __tmp = --_M_ref_count;
+      __gthread_mutex_unlock(&_M_ref_count_lock);
+      return __tmp;
+    }
+  };
+
+  //
+  // What follows should really be local to rope.  Unfortunately,
+  // that doesn't work, since it makes it impossible to define generic
+  // equality on rope iterators.  According to the draft standard, the
+  // template parameters for such an equality operator cannot be inferred
+  // from the occurrence of a member class as a parameter.
+  // (SGI compilers in fact allow this, but the __result wouldn't be
+  // portable.)
+  // Similarly, some of the static member functions are member functions
+  // only to avoid polluting the global namespace, and to circumvent
+  // restrictions on type inference for template functions.
+  //
+
+  //
+  // The internal data structure for representing a rope.  This is
+  // private to the implementation.  A rope is really just a pointer
+  // to one of these.
+  //
+  // A few basic functions for manipulating this data structure
+  // are members of _RopeRep.  Most of the more complex algorithms
+  // are implemented as rope members.
+  //
+  // Some of the static member functions of _RopeRep have identically
+  // named functions in rope that simply invoke the _RopeRep versions.
+
+#define __ROPE_DEFINE_ALLOCS(__a) \
+        __ROPE_DEFINE_ALLOC(_CharT,_Data) /* character data */ \
+        typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
+        __ROPE_DEFINE_ALLOC(__C,_C) \
+        typedef _Rope_RopeLeaf<_CharT,__a> __L; \
+        __ROPE_DEFINE_ALLOC(__L,_L) \
+        typedef _Rope_RopeFunction<_CharT,__a> __F; \
+        __ROPE_DEFINE_ALLOC(__F,_F) \
+        typedef _Rope_RopeSubstring<_CharT,__a> __S; \
+        __ROPE_DEFINE_ALLOC(__S,_S)
+
+  //  Internal rope nodes potentially store a copy of the allocator
+  //  instance used to allocate them.  This is mostly redundant.
+  //  But the alternative would be to pass allocator instances around
+  //  in some form to nearly all internal functions, since any pointer
+  //  assignment may result in a zero reference count and thus require
+  //  deallocation.
+
+#define __STATIC_IF_SGI_ALLOC  /* not static */
+
+  template <class _CharT, class _Alloc>
+    struct _Rope_rep_base
+    : public _Alloc
+    {
+      typedef _Alloc allocator_type;
+
+      allocator_type
+      get_allocator() const
+      { return *static_cast<const _Alloc*>(this); }
+
+      allocator_type&
+      _M_get_allocator()
+      { return *static_cast<_Alloc*>(this); }
+
+      const allocator_type&
+      _M_get_allocator() const
+      { return *static_cast<const _Alloc*>(this); }
+
+      _Rope_rep_base(size_t __size, const allocator_type&)
+      : _M_size(__size) { }
+
+      size_t _M_size;
+
+# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
+        typedef typename \
+          _Alloc::template rebind<_Tp>::other __name##Alloc; \
+        static _Tp* __name##_allocate(size_t __n) \
+          { return __name##Alloc().allocate(__n); } \
+        static void __name##_deallocate(_Tp *__p, size_t __n) \
+          { __name##Alloc().deallocate(__p, __n); }
+      __ROPE_DEFINE_ALLOCS(_Alloc)
+# undef __ROPE_DEFINE_ALLOC
+    };
+
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeRep
+    : public _Rope_rep_base<_CharT, _Alloc>
+# ifndef __GC
+	     , _Refcount_Base
+# endif
+    {
+    public:
+      __detail::_Tag _M_tag:8;
+      bool _M_is_balanced:8;
+      unsigned char _M_depth;
+      __GC_CONST _CharT* _M_c_string;
+      __gthread_mutex_t _M_c_string_lock;
+                        /* Flattened version of string, if needed.  */
+                        /* typically 0.                             */
+                        /* If it's not 0, then the memory is owned  */
+                        /* by this node.                            */
+                        /* In the case of a leaf, this may point to */
+                        /* the same memory as the data field.       */
+      typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
+        allocator_type;
+
+      using _Rope_rep_base<_CharT, _Alloc>::get_allocator;
+      using _Rope_rep_base<_CharT, _Alloc>::_M_get_allocator;
+
+      _Rope_RopeRep(__detail::_Tag __t, int __d, bool __b, size_t __size,
+		    const allocator_type& __a)
+      : _Rope_rep_base<_CharT, _Alloc>(__size, __a),
+#ifndef __GC
+	_Refcount_Base(1),
+#endif
+	_M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
+#ifdef __GTHREAD_MUTEX_INIT
+    {
+      // Do not copy a POSIX/gthr mutex once in use.  However, bits are bits.
+      __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+      _M_c_string_lock = __tmp;
+    }
+#else
+    { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
+#endif
+#ifdef __GC
+      void
+      _M_incr () { }
+#endif
+      static void
+      _S_free_string(__GC_CONST _CharT*, size_t __len,
+		     allocator_type& __a);
+#define __STL_FREE_STRING(__s, __l, __a) _S_free_string(__s, __l, __a);
+                        // Deallocate data section of a leaf.
+                        // This shouldn't be a member function.
+                        // But its hard to do anything else at the
+                        // moment, because it's templatized w.r.t.
+                        // an allocator.
+                        // Does nothing if __GC is defined.
+#ifndef __GC
+      void _M_free_c_string();
+      void _M_free_tree();
+      // Deallocate t. Assumes t is not 0.
+      void
+      _M_unref_nonnil()
+      {
+	if (0 == _M_decr())
+	  _M_free_tree();
+      }
+
+      void
+      _M_ref_nonnil()
+      { _M_incr(); }
+
+      static void
+      _S_unref(_Rope_RopeRep* __t)
+      {
+	if (0 != __t)
+	  __t->_M_unref_nonnil();
+      }
+
+      static void
+      _S_ref(_Rope_RopeRep* __t)
+      {
+	if (0 != __t)
+	  __t->_M_incr();
+      }
+      
+      static void
+      _S_free_if_unref(_Rope_RopeRep* __t)
+      {
+	if (0 != __t && 0 == __t->_M_ref_count)
+	  __t->_M_free_tree();
+      }
+#   else /* __GC */
+      void _M_unref_nonnil() { }
+      void _M_ref_nonnil() { }
+      static void _S_unref(_Rope_RopeRep*) { }
+      static void _S_ref(_Rope_RopeRep*) { }
+      static void _S_free_if_unref(_Rope_RopeRep*) { }
+#   endif
+protected:
+      _Rope_RopeRep&
+      operator=(const _Rope_RopeRep&);
+
+      _Rope_RopeRep(const _Rope_RopeRep&);
+    };
+
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeLeaf
+    : public _Rope_RopeRep<_CharT, _Alloc>
+    {
+    public:
+      // Apparently needed by VC++
+      // The data fields of leaves are allocated with some
+      // extra space, to accommodate future growth and for basic
+      // character types, to hold a trailing eos character.
+      enum { _S_alloc_granularity = 8 };
+      
+      static size_t
+      _S_rounded_up_size(size_t __n)
+      {
+        size_t __size_with_eos;
+	
+        if (_S_is_basic_char_type((_CharT*)0))
+	  __size_with_eos = __n + 1;
+	else
+	  __size_with_eos = __n;
+#ifdef __GC
+	return __size_with_eos;
+#else
+	// Allow slop for in-place expansion.
+	return ((__size_with_eos + size_t(_S_alloc_granularity) - 1)
+		&~ (size_t(_S_alloc_granularity) - 1));
+#endif
+      }
+      __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
+                                  /* The allocated size is         */
+                                  /* _S_rounded_up_size(size), except */
+                                  /* in the GC case, in which it   */
+                                  /* doesn't matter.               */
+      typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
+        allocator_type;
+
+      _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size,
+		     const allocator_type& __a)
+      : _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_leaf, 0, true,
+				      __size, __a), _M_data(__d)
+      {
+        if (_S_is_basic_char_type((_CharT *)0))
+	  {
+            // already eos terminated.
+            this->_M_c_string = __d;
+	  }
+      }
+      // The constructor assumes that d has been allocated with
+      // the proper allocator and the properly padded size.
+      // In contrast, the destructor deallocates the data:
+#ifndef __GC
+      ~_Rope_RopeLeaf() throw()
+      {
+        if (_M_data != this->_M_c_string)
+	  this->_M_free_c_string();
+	
+        __STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator());
+      }
+#endif
+protected:
+      _Rope_RopeLeaf&
+      operator=(const _Rope_RopeLeaf&);
+
+      _Rope_RopeLeaf(const _Rope_RopeLeaf&);
+    };
+
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeConcatenation
+    : public _Rope_RopeRep<_CharT, _Alloc>
+    {
+    public:
+      _Rope_RopeRep<_CharT, _Alloc>* _M_left;
+      _Rope_RopeRep<_CharT, _Alloc>* _M_right;
+
+      typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
+        allocator_type;
+
+      _Rope_RopeConcatenation(_Rope_RopeRep<_CharT, _Alloc>* __l,
+			      _Rope_RopeRep<_CharT, _Alloc>* __r,
+			      const allocator_type& __a)
+	: _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_concat,
+				      std::max(__l->_M_depth,
+					       __r->_M_depth) + 1,
+				      false,
+				      __l->_M_size + __r->_M_size, __a),
+        _M_left(__l), _M_right(__r)
+      { }
+#ifndef __GC
+      ~_Rope_RopeConcatenation() throw()
+      {
+	this->_M_free_c_string();
+	_M_left->_M_unref_nonnil();
+	_M_right->_M_unref_nonnil();
+      }
+#endif
+protected:
+      _Rope_RopeConcatenation&
+      operator=(const _Rope_RopeConcatenation&);
+      
+      _Rope_RopeConcatenation(const _Rope_RopeConcatenation&);
+    };
+
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeFunction
+    : public _Rope_RopeRep<_CharT, _Alloc>
+    {
+    public:
+      char_producer<_CharT>* _M_fn;
+#ifndef __GC
+      bool _M_delete_when_done; // Char_producer is owned by the
+                                // rope and should be explicitly
+                                // deleted when the rope becomes
+                                // inaccessible.
+#else
+      // In the GC case, we either register the rope for
+      // finalization, or not.  Thus the field is unnecessary;
+      // the information is stored in the collector data structures.
+      // We do need a finalization procedure to be invoked by the
+      // collector.
+      static void
+      _S_fn_finalization_proc(void * __tree, void *)
+      { delete ((_Rope_RopeFunction *)__tree) -> _M_fn; }
+#endif
+    typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
+      allocator_type;
+
+      _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
+                        bool __d, const allocator_type& __a)
+      : _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_function, 0, true, __size, __a)
+	, _M_fn(__f)
+#ifndef __GC
+	, _M_delete_when_done(__d)
+#endif
+      {
+#ifdef __GC
+	if (__d)
+	  {
+	    GC_REGISTER_FINALIZER(this, _Rope_RopeFunction::
+				  _S_fn_finalization_proc, 0, 0, 0);
+	  }
+#endif
+      }
+#ifndef __GC
+      ~_Rope_RopeFunction() throw()
+      {
+	this->_M_free_c_string();
+	if (_M_delete_when_done)
+	  delete _M_fn;
+      }
+# endif
+    protected:
+      _Rope_RopeFunction&
+      operator=(const _Rope_RopeFunction&);
+
+      _Rope_RopeFunction(const _Rope_RopeFunction&);
+    };
+  // Substring results are usually represented using just
+  // concatenation nodes.  But in the case of very long flat ropes
+  // or ropes with a functional representation that isn't practical.
+  // In that case, we represent the __result as a special case of
+  // RopeFunction, whose char_producer points back to the rope itself.
+  // In all cases except repeated substring operations and
+  // deallocation, we treat the __result as a RopeFunction.
+  template<class _CharT, class _Alloc>
+    struct _Rope_RopeSubstring
+    : public _Rope_RopeFunction<_CharT, _Alloc>,
+      public char_producer<_CharT>
+    {
+    public:
+      // XXX this whole class should be rewritten.
+      _Rope_RopeRep<_CharT,_Alloc>* _M_base;      // not 0
+      size_t _M_start;
+
+      virtual void
+      operator()(size_t __start_pos, size_t __req_len,
+		 _CharT* __buffer)
+      {
+        switch(_M_base->_M_tag)
+	  {
+	  case __detail::_S_function:
+	  case __detail::_S_substringfn:
+	    {
+	      char_producer<_CharT>* __fn =
+		((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
+	      (*__fn)(__start_pos + _M_start, __req_len, __buffer);
+	    }
+	    break;
+	  case __detail::_S_leaf:
+	    {
+	      __GC_CONST _CharT* __s =
+		((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
+	      uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
+				   __buffer);
+	    }
+	    break;
+	  default:
+	    break;
+	  }
+      }
+      
+      typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
+        allocator_type;
+
+      _Rope_RopeSubstring(_Rope_RopeRep<_CharT, _Alloc>* __b, size_t __s,
+                          size_t __l, const allocator_type& __a)
+      : _Rope_RopeFunction<_CharT, _Alloc>(this, __l, false, __a),
+        char_producer<_CharT>(), _M_base(__b), _M_start(__s)
+      {
+#ifndef __GC
+	_M_base->_M_ref_nonnil();
+#endif
+        this->_M_tag = __detail::_S_substringfn;
+      }
+    virtual ~_Rope_RopeSubstring() throw()
+      {
+#ifndef __GC
+	_M_base->_M_unref_nonnil();
+	// _M_free_c_string();  -- done by parent class
+#endif
+      }
+    };
+
+  // Self-destructing pointers to Rope_rep.
+  // These are not conventional smart pointers.  Their
+  // only purpose in life is to ensure that unref is called
+  // on the pointer either at normal exit or if an exception
+  // is raised.  It is the caller's responsibility to
+  // adjust reference counts when these pointers are initialized
+  // or assigned to.  (This convention significantly reduces
+  // the number of potentially expensive reference count
+  // updates.)
+#ifndef __GC
+  template<class _CharT, class _Alloc>
+    struct _Rope_self_destruct_ptr
+    {
+      _Rope_RopeRep<_CharT, _Alloc>* _M_ptr;
+
+      ~_Rope_self_destruct_ptr()
+      { _Rope_RopeRep<_CharT, _Alloc>::_S_unref(_M_ptr); }
+#ifdef __EXCEPTIONS
+      _Rope_self_destruct_ptr() : _M_ptr(0) { };
+#else
+      _Rope_self_destruct_ptr() { };
+#endif
+      _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT, _Alloc>* __p)
+      : _M_ptr(__p) { }
+    
+      _Rope_RopeRep<_CharT, _Alloc>&
+      operator*()
+      { return *_M_ptr; }
+    
+      _Rope_RopeRep<_CharT, _Alloc>*
+      operator->()
+      { return _M_ptr; }
+    
+      operator _Rope_RopeRep<_CharT, _Alloc>*()
+      { return _M_ptr; }
+    
+      _Rope_self_destruct_ptr&
+      operator=(_Rope_RopeRep<_CharT, _Alloc>* __x)
+      { _M_ptr = __x; return *this; }
+    };
+#endif
+
+  // Dereferencing a nonconst iterator has to return something
+  // that behaves almost like a reference.  It's not possible to
+  // return an actual reference since assignment requires extra
+  // work.  And we would get into the same problems as with the
+  // CD2 version of basic_string.
+  template<class _CharT, class _Alloc>
+    class _Rope_char_ref_proxy
+    {
+      friend class rope<_CharT, _Alloc>;
+      friend class _Rope_iterator<_CharT, _Alloc>;
+      friend class _Rope_char_ptr_proxy<_CharT, _Alloc>;
+#ifdef __GC
+      typedef _Rope_RopeRep<_CharT, _Alloc>* _Self_destruct_ptr;
+#else
+      typedef _Rope_self_destruct_ptr<_CharT, _Alloc> _Self_destruct_ptr;
+#endif
+      typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
+      typedef rope<_CharT, _Alloc> _My_rope;
+      size_t _M_pos;
+      _CharT _M_current;
+      bool _M_current_valid;
+      _My_rope* _M_root;     // The whole rope.
+    public:
+      _Rope_char_ref_proxy(_My_rope* __r, size_t __p)
+      :  _M_pos(__p), _M_current(), _M_current_valid(false), _M_root(__r) { }
+
+      _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x)
+      : _M_pos(__x._M_pos), _M_current(__x._M_current), 
+	_M_current_valid(false), _M_root(__x._M_root) { }
+
+      // Don't preserve cache if the reference can outlive the
+      // expression.  We claim that's not possible without calling
+      // a copy constructor or generating reference to a proxy
+      // reference.  We declare the latter to have undefined semantics.
+      _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)
+      : _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) { }
+
+      inline operator _CharT () const;
+
+      _Rope_char_ref_proxy&
+      operator=(_CharT __c);
+    
+      _Rope_char_ptr_proxy<_CharT, _Alloc> operator&() const;
+      
+      _Rope_char_ref_proxy&
+      operator=(const _Rope_char_ref_proxy& __c)
+      { return operator=((_CharT)__c); }
+    };
+
+  template<class _CharT, class __Alloc>
+    inline void
+    swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
+	 _Rope_char_ref_proxy <_CharT, __Alloc > __b)
+    {
+      _CharT __tmp = __a;
+      __a = __b;
+      __b = __tmp;
+    }
+
+  template<class _CharT, class _Alloc>
+    class _Rope_char_ptr_proxy
+    {
+      // XXX this class should be rewritten.
+      friend class _Rope_char_ref_proxy<_CharT, _Alloc>;
+      size_t _M_pos;
+      rope<_CharT,_Alloc>* _M_root;     // The whole rope.
+    public:
+      _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)
+      : _M_pos(__x._M_pos), _M_root(__x._M_root) { }
+
+      _Rope_char_ptr_proxy(const _Rope_char_ptr_proxy& __x)
+      : _M_pos(__x._M_pos), _M_root(__x._M_root) { }
+
+      _Rope_char_ptr_proxy() { }
+      
+      _Rope_char_ptr_proxy(_CharT* __x)
+      : _M_root(0), _M_pos(0) { }
+
+      _Rope_char_ptr_proxy&
+      operator=(const _Rope_char_ptr_proxy& __x)
+      {
+        _M_pos = __x._M_pos;
+        _M_root = __x._M_root;
+        return *this;
+      }
+
+      template<class _CharT2, class _Alloc2>
+        friend bool
+        operator==(const _Rope_char_ptr_proxy<_CharT2, _Alloc2>& __x,
+		   const _Rope_char_ptr_proxy<_CharT2, _Alloc2>& __y);
+
+      _Rope_char_ref_proxy<_CharT, _Alloc> operator*() const
+      { return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root, _M_pos); }
+    };
+
+  // Rope iterators:
+  // Unlike in the C version, we cache only part of the stack
+  // for rope iterators, since they must be efficiently copyable.
+  // When we run out of cache, we have to reconstruct the iterator
+  // value.
+  // Pointers from iterators are not included in reference counts.
+  // Iterators are assumed to be thread private.  Ropes can
+  // be shared.
+  
+  template<class _CharT, class _Alloc>
+    class _Rope_iterator_base
+    : public std::iterator<std::random_access_iterator_tag, _CharT>
+    {
+      friend class rope<_CharT, _Alloc>;
+    public:
+      typedef _Alloc _allocator_type; // used in _Rope_rotate, VC++ workaround
+      typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
+      // Borland doesn't want this to be protected.
+    protected:
+      enum { _S_path_cache_len = 4 }; // Must be <= 9.
+      enum { _S_iterator_buf_len = 15 };
+      size_t _M_current_pos;
+      _RopeRep* _M_root;     // The whole rope.
+      size_t _M_leaf_pos;    // Starting position for current leaf
+      __GC_CONST _CharT* _M_buf_start;
+                             // Buffer possibly
+                             // containing current char.
+      __GC_CONST _CharT* _M_buf_ptr;
+                             // Pointer to current char in buffer.
+                             // != 0 ==> buffer valid.
+      __GC_CONST _CharT* _M_buf_end;
+                             // One past __last valid char in buffer.
+      // What follows is the path cache.  We go out of our
+      // way to make this compact.
+      // Path_end contains the bottom section of the path from
+      // the root to the current leaf.
+      const _RopeRep* _M_path_end[_S_path_cache_len];
+      int _M_leaf_index;     // Last valid __pos in path_end;
+                             // _M_path_end[0] ... _M_path_end[leaf_index-1]
+                             // point to concatenation nodes.
+      unsigned char _M_path_directions;
+                          // (path_directions >> __i) & 1 is 1
+                          // iff we got from _M_path_end[leaf_index - __i - 1]
+                          // to _M_path_end[leaf_index - __i] by going to the
+                          // __right. Assumes path_cache_len <= 9.
+      _CharT _M_tmp_buf[_S_iterator_buf_len];
+                        // Short buffer for surrounding chars.
+                        // This is useful primarily for
+                        // RopeFunctions.  We put the buffer
+                        // here to avoid locking in the
+                        // multithreaded case.
+      // The cached path is generally assumed to be valid
+      // only if the buffer is valid.
+      static void _S_setbuf(_Rope_iterator_base& __x);
+                                        // Set buffer contents given
+                                        // path cache.
+      static void _S_setcache(_Rope_iterator_base& __x);
+                                        // Set buffer contents and
+                                        // path cache.
+      static void _S_setcache_for_incr(_Rope_iterator_base& __x);
+                                        // As above, but assumes path
+                                        // cache is valid for previous posn.
+      _Rope_iterator_base() { }
+
+      _Rope_iterator_base(_RopeRep* __root, size_t __pos)
+      : _M_current_pos(__pos), _M_root(__root), _M_buf_ptr(0) { }
+
+      void _M_incr(size_t __n);
+      void _M_decr(size_t __n);
+    public:
+      size_t
+      index() const
+      { return _M_current_pos; }
+    
+      _Rope_iterator_base(const _Rope_iterator_base& __x)
+      {
+        if (0 != __x._M_buf_ptr)
+	  *this = __x;
+	else
+	  {
+            _M_current_pos = __x._M_current_pos;
+            _M_root = __x._M_root;
+            _M_buf_ptr = 0;
+	  }
+      }
+    };
+
+  template<class _CharT, class _Alloc>
+    class _Rope_iterator;
+
+  template<class _CharT, class _Alloc>
+    class _Rope_const_iterator
+    : public _Rope_iterator_base<_CharT, _Alloc>
+    {
+      friend class rope<_CharT, _Alloc>;
+    protected:
+      typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
+      // The one from the base class may not be directly visible.
+      _Rope_const_iterator(const _RopeRep* __root, size_t __pos)
+      : _Rope_iterator_base<_CharT, _Alloc>(const_cast<_RopeRep*>(__root),
+					    __pos)
+                   // Only nonconst iterators modify root ref count
+      { }
+  public:
+      typedef _CharT reference;   // Really a value.  Returning a reference
+                                  // Would be a mess, since it would have
+                                  // to be included in refcount.
+      typedef const _CharT* pointer;
+
+    public:
+      _Rope_const_iterator() { };
+
+      _Rope_const_iterator(const _Rope_const_iterator& __x)
+      : _Rope_iterator_base<_CharT,_Alloc>(__x) { }
+
+      _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);
+    
+      _Rope_const_iterator(const rope<_CharT, _Alloc>& __r, size_t __pos)
+      : _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) { }
+
+      _Rope_const_iterator&
+      operator=(const _Rope_const_iterator& __x)
+      {
+        if (0 != __x._M_buf_ptr)
+	  *(static_cast<_Rope_iterator_base<_CharT, _Alloc>*>(this)) = __x;
+	else
+	  {
+            this->_M_current_pos = __x._M_current_pos;
+            this->_M_root = __x._M_root;
+            this->_M_buf_ptr = 0;
+	  }
+        return(*this);
+      }
+
+      reference
+      operator*()
+      {
+        if (0 == this->_M_buf_ptr)
+	  _S_setcache(*this);
+        return *this->_M_buf_ptr;
+      }
+
+      // Without this const version, Rope iterators do not meet the
+      // requirements of an Input Iterator.
+      reference
+      operator*() const
+      {
+	return *const_cast<_Rope_const_iterator&>(*this);
+      }
+
+      _Rope_const_iterator&
+      operator++()
+      {
+        __GC_CONST _CharT* __next;
+        if (0 != this->_M_buf_ptr
+	    && (__next = this->_M_buf_ptr + 1) < this->_M_buf_end)
+	  {
+            this->_M_buf_ptr = __next;
+            ++this->_M_current_pos;
+	  }
+	else
+	  this->_M_incr(1);
+	return *this;
+      }
+
+      _Rope_const_iterator&
+      operator+=(ptrdiff_t __n)
+      {
+        if (__n >= 0)
+	  this->_M_incr(__n);
+	else
+	  this->_M_decr(-__n);
+	return *this;
+      }
+
+      _Rope_const_iterator&
+      operator--()
+      {
+        this->_M_decr(1);
+        return *this;
+      }
+
+      _Rope_const_iterator&
+      operator-=(ptrdiff_t __n)
+      {
+        if (__n >= 0)
+	  this->_M_decr(__n);
+	else
+	  this->_M_incr(-__n);
+	return *this;
+      }
+
+      _Rope_const_iterator
+      operator++(int)
+      {
+        size_t __old_pos = this->_M_current_pos;
+        this->_M_incr(1);
+        return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
+        // This makes a subsequent dereference expensive.
+        // Perhaps we should instead copy the iterator
+        // if it has a valid cache?
+      }
+
+      _Rope_const_iterator
+      operator--(int)
+      {
+        size_t __old_pos = this->_M_current_pos;
+        this->_M_decr(1);
+        return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
+      }
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_const_iterator<_CharT2, _Alloc2>
+        operator-(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
+		  ptrdiff_t __n);
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_const_iterator<_CharT2, _Alloc2>
+        operator+(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
+		  ptrdiff_t __n);
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_const_iterator<_CharT2, _Alloc2>
+        operator+(ptrdiff_t __n,
+		  const _Rope_const_iterator<_CharT2, _Alloc2>& __x);
+
+      reference
+      operator[](size_t __n)
+      { return rope<_CharT, _Alloc>::_S_fetch(this->_M_root,
+					      this->_M_current_pos + __n); }
+
+      template<class _CharT2, class _Alloc2>
+        friend bool
+        operator==(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
+		   const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
+
+      template<class _CharT2, class _Alloc2>
+        friend bool
+        operator<(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
+		  const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
+
+      template<class _CharT2, class _Alloc2>
+        friend ptrdiff_t
+        operator-(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
+		  const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
+    };
+
+  template<class _CharT, class _Alloc>
+    class _Rope_iterator
+    : public _Rope_iterator_base<_CharT, _Alloc>
+    {
+      friend class rope<_CharT, _Alloc>;
+    protected:
+      typedef typename _Rope_iterator_base<_CharT, _Alloc>::_RopeRep _RopeRep;
+      rope<_CharT, _Alloc>* _M_root_rope;
+
+      // root is treated as a cached version of this, and is used to
+      // detect changes to the underlying rope.
+
+      // Root is included in the reference count.  This is necessary
+      // so that we can detect changes reliably.  Unfortunately, it
+      // requires careful bookkeeping for the nonGC case.
+      _Rope_iterator(rope<_CharT, _Alloc>* __r, size_t __pos)
+      : _Rope_iterator_base<_CharT, _Alloc>(__r->_M_tree_ptr, __pos),
+        _M_root_rope(__r)
+      { _RopeRep::_S_ref(this->_M_root);
+        if (!(__r -> empty()))
+	  _S_setcache(*this);
+      }
+
+      void _M_check();
+    public:
+      typedef _Rope_char_ref_proxy<_CharT, _Alloc>  reference;
+      typedef _Rope_char_ref_proxy<_CharT, _Alloc>* pointer;
+
+      rope<_CharT, _Alloc>&
+      container()
+      { return *_M_root_rope; }
+
+      _Rope_iterator()
+      {
+        this->_M_root = 0;  // Needed for reference counting.
+      };
+
+      _Rope_iterator(const _Rope_iterator& __x)
+      : _Rope_iterator_base<_CharT, _Alloc>(__x)
+      {
+        _M_root_rope = __x._M_root_rope;
+        _RopeRep::_S_ref(this->_M_root);
+      }
+
+      _Rope_iterator(rope<_CharT, _Alloc>& __r, size_t __pos);
+
+      ~_Rope_iterator()
+      { _RopeRep::_S_unref(this->_M_root); }
+
+      _Rope_iterator&
+      operator=(const _Rope_iterator& __x)
+      {
+        _RopeRep* __old = this->_M_root;
+	
+        _RopeRep::_S_ref(__x._M_root);
+        if (0 != __x._M_buf_ptr)
+	  {
+            _M_root_rope = __x._M_root_rope;
+            *(static_cast<_Rope_iterator_base<_CharT, _Alloc>*>(this)) = __x;
+	  }
+	else
+	  {
+	    this->_M_current_pos = __x._M_current_pos;
+            this->_M_root = __x._M_root;
+            _M_root_rope = __x._M_root_rope;
+            this->_M_buf_ptr = 0;
+	  }
+        _RopeRep::_S_unref(__old);
+        return(*this);
+      }
+
+      reference
+      operator*()
+      {
+        _M_check();
+        if (0 == this->_M_buf_ptr)
+	  return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
+						      this->_M_current_pos);
+	else
+	  return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
+						      this->_M_current_pos,
+						      *this->_M_buf_ptr);
+      }
+
+      // See above comment.
+      reference
+      operator*() const
+      {
+	return *const_cast<_Rope_iterator&>(*this);
+      }
+
+      _Rope_iterator&
+      operator++()
+      {
+        this->_M_incr(1);
+        return *this;
+      }
+
+      _Rope_iterator&
+      operator+=(ptrdiff_t __n)
+      {
+        if (__n >= 0)
+	  this->_M_incr(__n);
+	else
+	  this->_M_decr(-__n);
+	return *this;
+      }
+
+      _Rope_iterator&
+      operator--()
+      {
+        this->_M_decr(1);
+        return *this;
+      }
+
+      _Rope_iterator&
+      operator-=(ptrdiff_t __n)
+      {
+        if (__n >= 0)
+	  this->_M_decr(__n);
+	else
+	  this->_M_incr(-__n);
+	return *this;
+      }
+
+      _Rope_iterator
+      operator++(int)
+      {
+        size_t __old_pos = this->_M_current_pos;
+        this->_M_incr(1);
+        return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
+      }
+
+      _Rope_iterator
+      operator--(int)
+      {
+        size_t __old_pos = this->_M_current_pos;
+        this->_M_decr(1);
+        return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
+      }
+
+      reference
+      operator[](ptrdiff_t __n)
+      { return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
+						    this->_M_current_pos
+						    + __n); }
+
+      template<class _CharT2, class _Alloc2>
+        friend bool
+        operator==(const _Rope_iterator<_CharT2, _Alloc2>& __x,
+		   const _Rope_iterator<_CharT2, _Alloc2>& __y);
+
+      template<class _CharT2, class _Alloc2>
+        friend bool
+        operator<(const _Rope_iterator<_CharT2, _Alloc2>& __x,
+		  const _Rope_iterator<_CharT2, _Alloc2>& __y);
+
+      template<class _CharT2, class _Alloc2>
+        friend ptrdiff_t
+        operator-(const _Rope_iterator<_CharT2, _Alloc2>& __x,
+		  const _Rope_iterator<_CharT2, _Alloc2>& __y);
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_iterator<_CharT2, _Alloc2>
+        operator-(const _Rope_iterator<_CharT2, _Alloc2>& __x, ptrdiff_t __n);
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_iterator<_CharT2, _Alloc2>
+        operator+(const _Rope_iterator<_CharT2, _Alloc2>& __x, ptrdiff_t __n);
+
+      template<class _CharT2, class _Alloc2>
+        friend _Rope_iterator<_CharT2, _Alloc2>
+        operator+(ptrdiff_t __n, const _Rope_iterator<_CharT2, _Alloc2>& __x);
+    };
+
+
+  template <class _CharT, class _Alloc>
+    struct _Rope_base
+    : public _Alloc
+    {
+      typedef _Alloc allocator_type;
+
+      allocator_type
+      get_allocator() const
+      { return *static_cast<const _Alloc*>(this); }
+
+      allocator_type&
+      _M_get_allocator()
+      { return *static_cast<_Alloc*>(this); }
+
+      const allocator_type&
+      _M_get_allocator() const
+      { return *static_cast<const _Alloc*>(this); }
+
+      typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
+      // The one in _Base may not be visible due to template rules.
+
+      _Rope_base(_RopeRep* __t, const allocator_type&)
+      : _M_tree_ptr(__t) { }
+
+      _Rope_base(const allocator_type&) { }
+
+      // The only data member of a rope:
+      _RopeRep *_M_tree_ptr;
+
+#define __ROPE_DEFINE_ALLOC(_Tp, __name) \
+        typedef typename \
+          _Alloc::template rebind<_Tp>::other __name##Alloc; \
+        static _Tp* __name##_allocate(size_t __n) \
+          { return __name##Alloc().allocate(__n); } \
+        static void __name##_deallocate(_Tp *__p, size_t __n) \
+          { __name##Alloc().deallocate(__p, __n); }
+      __ROPE_DEFINE_ALLOCS(_Alloc)
+#undef __ROPE_DEFINE_ALLOC
+
+	protected:
+      _Rope_base&
+      operator=(const _Rope_base&);
+      
+      _Rope_base(const _Rope_base&);
+    };
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template <class _CharT, class _Alloc>
+    class rope : public _Rope_base<_CharT, _Alloc>
+    {
+    public:
+      typedef _CharT value_type;
+      typedef ptrdiff_t difference_type;
+      typedef size_t size_type;
+      typedef _CharT const_reference;
+      typedef const _CharT* const_pointer;
+      typedef _Rope_iterator<_CharT, _Alloc> iterator;
+      typedef _Rope_const_iterator<_CharT, _Alloc> const_iterator;
+      typedef _Rope_char_ref_proxy<_CharT, _Alloc> reference;
+      typedef _Rope_char_ptr_proxy<_CharT, _Alloc> pointer;
+
+      friend class _Rope_iterator<_CharT, _Alloc>;
+      friend class _Rope_const_iterator<_CharT, _Alloc>;
+      friend struct _Rope_RopeRep<_CharT, _Alloc>;
+      friend class _Rope_iterator_base<_CharT, _Alloc>;
+      friend class _Rope_char_ptr_proxy<_CharT, _Alloc>;
+      friend class _Rope_char_ref_proxy<_CharT, _Alloc>;
+      friend struct _Rope_RopeSubstring<_CharT, _Alloc>;
+
+    protected:
+      typedef _Rope_base<_CharT, _Alloc> _Base;
+      typedef typename _Base::allocator_type allocator_type;
+      using _Base::_M_tree_ptr;
+      using _Base::get_allocator;
+      using _Base::_M_get_allocator;      
+      typedef __GC_CONST _CharT* _Cstrptr;
+      
+      static _CharT _S_empty_c_str[1];
+      
+      static bool
+      _S_is0(_CharT __c)
+      { return __c == _S_eos((_CharT*)0); }
+      
+      enum { _S_copy_max = 23 };
+                // For strings shorter than _S_copy_max, we copy to
+                // concatenate.
+
+      typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
+      typedef _Rope_RopeConcatenation<_CharT, _Alloc> _RopeConcatenation;
+      typedef _Rope_RopeLeaf<_CharT, _Alloc> _RopeLeaf;
+      typedef _Rope_RopeFunction<_CharT, _Alloc> _RopeFunction;
+      typedef _Rope_RopeSubstring<_CharT, _Alloc> _RopeSubstring;
+
+      // Retrieve a character at the indicated position.
+      static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
+
+#ifndef __GC
+      // Obtain a pointer to the character at the indicated position.
+      // The pointer can be used to change the character.
+      // If such a pointer cannot be produced, as is frequently the
+      // case, 0 is returned instead.
+      // (Returns nonzero only if all nodes in the path have a refcount
+      // of 1.)
+      static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
+#endif
+
+      static bool
+      _S_apply_to_pieces(// should be template parameter
+			 _Rope_char_consumer<_CharT>& __c,
+			 const _RopeRep* __r,
+			 size_t __begin, size_t __end);
+                         // begin and end are assumed to be in range.
+
+#ifndef __GC
+      static void
+      _S_unref(_RopeRep* __t)
+      { _RopeRep::_S_unref(__t); }
+
+      static void
+      _S_ref(_RopeRep* __t)
+      { _RopeRep::_S_ref(__t); }
+
+#else /* __GC */
+      static void _S_unref(_RopeRep*) { }
+      static void _S_ref(_RopeRep*) { }
+#endif
+
+#ifdef __GC
+      typedef _Rope_RopeRep<_CharT, _Alloc>* _Self_destruct_ptr;
+#else
+      typedef _Rope_self_destruct_ptr<_CharT, _Alloc> _Self_destruct_ptr;
+#endif
+
+      // _Result is counted in refcount.
+      static _RopeRep* _S_substring(_RopeRep* __base,
+                                    size_t __start, size_t __endp1);
+
+      static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
+					   const _CharT* __iter, size_t __slen);
+      // Concatenate rope and char ptr, copying __s.
+      // Should really take an arbitrary iterator.
+      // Result is counted in refcount.
+      static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
+						 const _CharT* __iter,
+						 size_t __slen)
+	// As above, but one reference to __r is about to be
+	// destroyed.  Thus the pieces may be recycled if all
+	// relevant reference counts are 1.
+#ifdef __GC
+	// We can't really do anything since refcounts are unavailable.
+      { return _S_concat_char_iter(__r, __iter, __slen); }
+#else
+      ;
+#endif
+
+      static _RopeRep* _S_concat(_RopeRep* __left, _RopeRep* __right);
+      // General concatenation on _RopeRep.  _Result
+      // has refcount of 1.  Adjusts argument refcounts.
+
+   public:
+      void
+      apply_to_pieces(size_t __begin, size_t __end,
+		      _Rope_char_consumer<_CharT>& __c) const
+      { _S_apply_to_pieces(__c, this->_M_tree_ptr, __begin, __end); }
+
+   protected:
+
+      static size_t
+      _S_rounded_up_size(size_t __n)
+      { return _RopeLeaf::_S_rounded_up_size(__n); }
+
+      static size_t
+      _S_allocated_capacity(size_t __n)
+      {
+	if (_S_is_basic_char_type((_CharT*)0))
+	  return _S_rounded_up_size(__n) - 1;
+	else
+	  return _S_rounded_up_size(__n);
+	
+      }
+
+      // Allocate and construct a RopeLeaf using the supplied allocator
+      // Takes ownership of s instead of copying.
+      static _RopeLeaf*
+      _S_new_RopeLeaf(__GC_CONST _CharT *__s,
+		      size_t __size, allocator_type& __a)
+      {
+	_RopeLeaf* __space = typename _Base::_LAlloc(__a).allocate(1);
+	return new(__space) _RopeLeaf(__s, __size, __a);
+      }
+
+      static _RopeConcatenation*
+      _S_new_RopeConcatenation(_RopeRep* __left, _RopeRep* __right,
+			       allocator_type& __a)
+      {
+	_RopeConcatenation* __space = typename _Base::_CAlloc(__a).allocate(1);
+	return new(__space) _RopeConcatenation(__left, __right, __a);
+      }
+
+      static _RopeFunction*
+      _S_new_RopeFunction(char_producer<_CharT>* __f,
+			  size_t __size, bool __d, allocator_type& __a)
+      {
+	_RopeFunction* __space = typename _Base::_FAlloc(__a).allocate(1);
+	return new(__space) _RopeFunction(__f, __size, __d, __a);
+      }
+
+      static _RopeSubstring*
+      _S_new_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
+			   size_t __l, allocator_type& __a)
+      {
+	_RopeSubstring* __space = typename _Base::_SAlloc(__a).allocate(1);
+	return new(__space) _RopeSubstring(__b, __s, __l, __a);
+      }
+      
+      static _RopeLeaf*
+      _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
+					size_t __size, allocator_type& __a)
+#define __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __size, __a) \
+                _S_RopeLeaf_from_unowned_char_ptr(__s, __size, __a)
+      {
+	if (0 == __size)
+	  return 0;
+	_CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
+	
+	__uninitialized_copy_n_a(__s, __size, __buf, __a);
+	_S_cond_store_eos(__buf[__size]);
+	__try
+	  { return _S_new_RopeLeaf(__buf, __size, __a); }
+	__catch(...)
+	  {
+	    _RopeRep::__STL_FREE_STRING(__buf, __size, __a);
+	    __throw_exception_again;
+	  }
+      }
+
+      // Concatenation of nonempty strings.
+      // Always builds a concatenation node.
+      // Rebalances if the result is too deep.
+      // Result has refcount 1.
+      // Does not increment left and right ref counts even though
+      // they are referenced.
+      static _RopeRep*
+      _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
+
+      // Concatenation helper functions
+      static _RopeLeaf*
+      _S_leaf_concat_char_iter(_RopeLeaf* __r,
+			       const _CharT* __iter, size_t __slen);
+      // Concatenate by copying leaf.
+      // should take an arbitrary iterator
+      // result has refcount 1.
+#ifndef __GC
+      static _RopeLeaf*
+      _S_destr_leaf_concat_char_iter(_RopeLeaf* __r,
+				     const _CharT* __iter, size_t __slen);
+      // A version that potentially clobbers __r if __r->_M_ref_count == 1.
+#endif
+
+    private:
+      
+      static size_t _S_char_ptr_len(const _CharT* __s);
+      // slightly generalized strlen
+
+      rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
+      : _Base(__t, __a) { }
+
+
+      // Copy __r to the _CharT buffer.
+      // Returns __buffer + __r->_M_size.
+      // Assumes that buffer is uninitialized.
+      static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
+
+      // Again, with explicit starting position and length.
+      // Assumes that buffer is uninitialized.
+      static _CharT* _S_flatten(_RopeRep* __r,
+				size_t __start, size_t __len,
+				_CharT* __buffer);
+
+      static const unsigned long
+      _S_min_len[__detail::_S_max_rope_depth + 1];
+      
+      static bool
+      _S_is_balanced(_RopeRep* __r)
+      { return (__r->_M_size >= _S_min_len[__r->_M_depth]); }
+
+      static bool
+      _S_is_almost_balanced(_RopeRep* __r)
+      { return (__r->_M_depth == 0
+		|| __r->_M_size >= _S_min_len[__r->_M_depth - 1]); }
+
+      static bool
+      _S_is_roughly_balanced(_RopeRep* __r)
+      { return (__r->_M_depth <= 1
+		|| __r->_M_size >= _S_min_len[__r->_M_depth - 2]); }
+
+      // Assumes the result is not empty.
+      static _RopeRep*
+      _S_concat_and_set_balanced(_RopeRep* __left, _RopeRep* __right)
+      {
+	_RopeRep* __result = _S_concat(__left, __right);
+	if (_S_is_balanced(__result))
+	  __result->_M_is_balanced = true;
+	return __result;
+      }
+
+      // The basic rebalancing operation.  Logically copies the
+      // rope.  The result has refcount of 1.  The client will
+      // usually decrement the reference count of __r.
+      // The result is within height 2 of balanced by the above
+      // definition.
+      static _RopeRep* _S_balance(_RopeRep* __r);
+
+      // Add all unbalanced subtrees to the forest of balanced trees.
+      // Used only by balance.
+      static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
+
+      // Add __r to forest, assuming __r is already balanced.
+      static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
+      
+      // Print to stdout, exposing structure
+      static void _S_dump(_RopeRep* __r, int __indent = 0);
+      
+      // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
+      static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
+      
+    public:
+      bool
+      empty() const
+      { return 0 == this->_M_tree_ptr; }
+      
+      // Comparison member function.  This is public only for those
+      // clients that need a ternary comparison.  Others
+      // should use the comparison operators below.
+      int
+      compare(const rope& __y) const
+      { return _S_compare(this->_M_tree_ptr, __y._M_tree_ptr); }
+
+      rope(const _CharT* __s, const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	this->_M_tree_ptr =
+	  __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),
+					   _M_get_allocator());
+      }
+
+      rope(const _CharT* __s, size_t __len,
+	   const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	this->_M_tree_ptr =
+	  __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, _M_get_allocator());
+      }
+
+      // Should perhaps be templatized with respect to the iterator type
+      // and use Sequence_buffer.  (It should perhaps use sequence_buffer
+      // even now.)
+      rope(const _CharT* __s, const _CharT* __e,
+	   const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	this->_M_tree_ptr =
+	  __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, _M_get_allocator());
+      }
+
+      rope(const const_iterator& __s, const const_iterator& __e,
+	   const allocator_type& __a = allocator_type())
+      : _Base(_S_substring(__s._M_root, __s._M_current_pos,
+			   __e._M_current_pos), __a)
+      { }
+
+      rope(const iterator& __s, const iterator& __e,
+	   const allocator_type& __a = allocator_type())
+      : _Base(_S_substring(__s._M_root, __s._M_current_pos,
+			   __e._M_current_pos), __a)
+      { }
+
+      rope(_CharT __c, const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	_CharT* __buf = this->_Data_allocate(_S_rounded_up_size(1));
+	
+	_M_get_allocator().construct(__buf, __c);
+	__try
+	  {
+	    this->_M_tree_ptr = _S_new_RopeLeaf(__buf, 1,
+						_M_get_allocator());
+	  }
+	__catch(...)
+	  {
+	    _RopeRep::__STL_FREE_STRING(__buf, 1, _M_get_allocator());
+	    __throw_exception_again;
+	  }
+      }
+
+      rope(size_t __n, _CharT __c,
+	   const allocator_type& __a = allocator_type());
+
+      rope(const allocator_type& __a = allocator_type())
+      : _Base(0, __a) { }
+
+      // Construct a rope from a function that can compute its members
+      rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
+	   const allocator_type& __a = allocator_type())
+      : _Base(__a)
+      {
+	this->_M_tree_ptr = (0 == __len) ?
+	  0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
+      }
+
+      rope(const rope& __x, const allocator_type& __a = allocator_type())
+      : _Base(__x._M_tree_ptr, __a)
+      { _S_ref(this->_M_tree_ptr); }
+
+      ~rope() throw()
+      { _S_unref(this->_M_tree_ptr); }
+
+      rope&
+      operator=(const rope& __x)
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	this->_M_tree_ptr = __x._M_tree_ptr;
+	_S_ref(this->_M_tree_ptr);
+	_S_unref(__old);
+	return *this;
+      }
+
+      void
+      clear()
+      {
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = 0;
+      }
+      
+      void
+      push_back(_CharT __x)
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	this->_M_tree_ptr
+	  = _S_destr_concat_char_iter(this->_M_tree_ptr, &__x, 1);
+	_S_unref(__old);
+      }
+
+      void
+      pop_back()
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	this->_M_tree_ptr = _S_substring(this->_M_tree_ptr,
+					 0, this->_M_tree_ptr->_M_size - 1);
+	_S_unref(__old);
+      }
+
+      _CharT
+      back() const
+      { return _S_fetch(this->_M_tree_ptr, this->_M_tree_ptr->_M_size - 1); }
+
+      void
+      push_front(_CharT __x)
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	_RopeRep* __left =
+	  __STL_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, _M_get_allocator());
+	__try
+	  {
+	    this->_M_tree_ptr = _S_concat(__left, this->_M_tree_ptr);
+	    _S_unref(__old);
+	    _S_unref(__left);
+	  }
+	__catch(...)
+	  {
+	    _S_unref(__left);
+	    __throw_exception_again;
+	  }
+      }
+
+      void
+      pop_front()
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	this->_M_tree_ptr
+	  = _S_substring(this->_M_tree_ptr, 1, this->_M_tree_ptr->_M_size);
+	_S_unref(__old);
+      }
+
+      _CharT
+      front() const
+      { return _S_fetch(this->_M_tree_ptr, 0); }
+
+      void
+      balance()
+      {
+	_RopeRep* __old = this->_M_tree_ptr;
+	this->_M_tree_ptr = _S_balance(this->_M_tree_ptr);
+	_S_unref(__old);
+      }
+
+      void
+      copy(_CharT* __buffer) const
+      {
+	_Destroy_const(__buffer, __buffer + size(), _M_get_allocator());
+	_S_flatten(this->_M_tree_ptr, __buffer);
+      }
+
+      // This is the copy function from the standard, but
+      // with the arguments reordered to make it consistent with the
+      // rest of the interface.
+      // Note that this guaranteed not to compile if the draft standard
+      // order is assumed.
+      size_type
+      copy(size_type __pos, size_type __n, _CharT* __buffer) const
+      {
+	size_t __size = size();
+	size_t __len = (__pos + __n > __size? __size - __pos : __n);
+
+	_Destroy_const(__buffer, __buffer + __len, _M_get_allocator());
+	_S_flatten(this->_M_tree_ptr, __pos, __len, __buffer);
+	return __len;
+      }
+
+      // Print to stdout, exposing structure.  May be useful for
+      // performance debugging.
+      void
+      dump()
+      { _S_dump(this->_M_tree_ptr); }
+      
+      // Convert to 0 terminated string in new allocated memory.
+      // Embedded 0s in the input do not terminate the copy.
+      const _CharT* c_str() const;
+
+      // As above, but also use the flattened representation as
+      // the new rope representation.
+      const _CharT* replace_with_c_str();
+      
+      // Reclaim memory for the c_str generated flattened string.
+      // Intentionally undocumented, since it's hard to say when this
+      // is safe for multiple threads.
+      void
+      delete_c_str ()
+      {
+	if (0 == this->_M_tree_ptr)
+	  return;
+	if (__detail::_S_leaf == this->_M_tree_ptr->_M_tag &&
+	    ((_RopeLeaf*)this->_M_tree_ptr)->_M_data ==
+	    this->_M_tree_ptr->_M_c_string)
+	  {
+	    // Representation shared
+	    return;
+	  }
+#ifndef __GC
+	this->_M_tree_ptr->_M_free_c_string();
+#endif
+	this->_M_tree_ptr->_M_c_string = 0;
+      }
+
+      _CharT
+      operator[] (size_type __pos) const
+      { return _S_fetch(this->_M_tree_ptr, __pos); }
+
+      _CharT
+      at(size_type __pos) const
+      {
+	// if (__pos >= size()) throw out_of_range;  // XXX
+	return (*this)[__pos];
+      }
+
+      const_iterator
+      begin() const
+      { return(const_iterator(this->_M_tree_ptr, 0)); }
+
+      // An easy way to get a const iterator from a non-const container.
+      const_iterator
+      const_begin() const
+      { return(const_iterator(this->_M_tree_ptr, 0)); }
+
+      const_iterator
+      end() const
+      { return(const_iterator(this->_M_tree_ptr, size())); }
+
+      const_iterator
+      const_end() const
+      { return(const_iterator(this->_M_tree_ptr, size())); }
+
+      size_type
+      size() const
+      {	return(0 == this->_M_tree_ptr? 0 : this->_M_tree_ptr->_M_size); }
+      
+      size_type
+      length() const
+      {	return size(); }
+
+      size_type
+      max_size() const
+      {
+	return _S_min_len[int(__detail::_S_max_rope_depth) - 1] - 1;
+	//  Guarantees that the result can be sufficiently
+	//  balanced.  Longer ropes will probably still work,
+	//  but it's harder to make guarantees.
+      }
+
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      const_rbegin() const
+      {	return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+      
+      const_reverse_iterator
+      const_rend() const
+      {	return const_reverse_iterator(begin()); }
+
+      template<class _CharT2, class _Alloc2>
+        friend rope<_CharT2, _Alloc2>
+        operator+(const rope<_CharT2, _Alloc2>& __left,
+		  const rope<_CharT2, _Alloc2>& __right);
+
+      template<class _CharT2, class _Alloc2>
+        friend rope<_CharT2, _Alloc2>
+        operator+(const rope<_CharT2, _Alloc2>& __left, const _CharT2* __right);
+
+      template<class _CharT2, class _Alloc2>
+        friend rope<_CharT2, _Alloc2>
+        operator+(const rope<_CharT2, _Alloc2>& __left, _CharT2 __right);
+
+      // The symmetric cases are intentionally omitted, since they're
+      // presumed to be less common, and we don't handle them as well.
+
+      // The following should really be templatized.  The first
+      // argument should be an input iterator or forward iterator with
+      // value_type _CharT.
+      rope&
+      append(const _CharT* __iter, size_t __n)
+      {
+	_RopeRep* __result =
+	  _S_destr_concat_char_iter(this->_M_tree_ptr, __iter, __n);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+	return *this;
+      }
+
+      rope&
+      append(const _CharT* __c_string)
+      {
+	size_t __len = _S_char_ptr_len(__c_string);
+	append(__c_string, __len);
+	return(*this);
+      }
+
+      rope&
+      append(const _CharT* __s, const _CharT* __e)
+      {
+	_RopeRep* __result =
+	  _S_destr_concat_char_iter(this->_M_tree_ptr, __s, __e - __s);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+	return *this;
+      }
+
+      rope&
+      append(const_iterator __s, const_iterator __e)
+      {
+	_Self_destruct_ptr __appendee(_S_substring(__s._M_root,
+						   __s._M_current_pos,
+						   __e._M_current_pos));
+	_RopeRep* __result = _S_concat(this->_M_tree_ptr, 
+				       (_RopeRep*)__appendee);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+	return *this;
+      }
+
+      rope&
+      append(_CharT __c)
+      {
+	_RopeRep* __result =
+	  _S_destr_concat_char_iter(this->_M_tree_ptr, &__c, 1);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+	return *this;
+      }
+
+      rope&
+      append()
+      { return append(_CharT()); }  // XXX why?
+
+      rope&
+      append(const rope& __y)
+      {
+	_RopeRep* __result = _S_concat(this->_M_tree_ptr, __y._M_tree_ptr);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+	return *this;
+      }
+
+      rope&
+      append(size_t __n, _CharT __c)
+      {
+	rope<_CharT,_Alloc> __last(__n, __c);
+	return append(__last);
+      }
+
+      void
+      swap(rope& __b)
+      {
+	_RopeRep* __tmp = this->_M_tree_ptr;
+	this->_M_tree_ptr = __b._M_tree_ptr;
+	__b._M_tree_ptr = __tmp;
+      }
+
+    protected:
+      // Result is included in refcount.
+      static _RopeRep*
+      replace(_RopeRep* __old, size_t __pos1,
+	      size_t __pos2, _RopeRep* __r)
+      {
+	if (0 == __old)
+	  {
+	    _S_ref(__r);
+	    return __r;
+	  }
+	_Self_destruct_ptr __left(_S_substring(__old, 0, __pos1));
+	_Self_destruct_ptr __right(_S_substring(__old, __pos2, __old->_M_size));
+	_RopeRep* __result;
+
+	if (0 == __r)
+	  __result = _S_concat(__left, __right);
+	else
+	  {
+	    _Self_destruct_ptr __left_result(_S_concat(__left, __r));
+	    __result = _S_concat(__left_result, __right);
+	  }
+	return __result;
+      }
+
+    public:
+      void
+      insert(size_t __p, const rope& __r)
+      {
+	_RopeRep* __result =
+	  replace(this->_M_tree_ptr, __p, __p, __r._M_tree_ptr);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+      }
+
+      void
+      insert(size_t __p, size_t __n, _CharT __c)
+      {
+	rope<_CharT,_Alloc> __r(__n,__c);
+	insert(__p, __r);
+      }
+      
+      void
+      insert(size_t __p, const _CharT* __i, size_t __n)
+      {
+	_Self_destruct_ptr __left(_S_substring(this->_M_tree_ptr, 0, __p));
+	_Self_destruct_ptr __right(_S_substring(this->_M_tree_ptr,
+						__p, size()));
+	_Self_destruct_ptr __left_result(_S_concat_char_iter(__left, __i, __n));
+	// _S_ destr_concat_char_iter should be safe here.
+	// But as it stands it's probably not a win, since __left
+	// is likely to have additional references.
+	_RopeRep* __result = _S_concat(__left_result, __right);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+      }
+
+      void
+      insert(size_t __p, const _CharT* __c_string)
+      {	insert(__p, __c_string, _S_char_ptr_len(__c_string)); }
+
+      void
+      insert(size_t __p, _CharT __c)
+      { insert(__p, &__c, 1); }
+
+      void
+      insert(size_t __p)
+      {
+	_CharT __c = _CharT();
+	insert(__p, &__c, 1);
+      }
+
+      void
+      insert(size_t __p, const _CharT* __i, const _CharT* __j)
+      {
+	rope __r(__i, __j);
+	insert(__p, __r);
+      }
+
+      void
+      insert(size_t __p, const const_iterator& __i,
+	     const const_iterator& __j)
+      {
+	rope __r(__i, __j);
+	insert(__p, __r);
+      }
+
+      void
+      insert(size_t __p, const iterator& __i,
+	     const iterator& __j)
+      {
+	rope __r(__i, __j);
+	insert(__p, __r);
+      }
+
+      // (position, length) versions of replace operations:
+      
+      void
+      replace(size_t __p, size_t __n, const rope& __r)
+      {
+	_RopeRep* __result =
+	  replace(this->_M_tree_ptr, __p, __p + __n, __r._M_tree_ptr);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+      }
+
+      void
+      replace(size_t __p, size_t __n,
+	      const _CharT* __i, size_t __i_len)
+      {
+	rope __r(__i, __i_len);
+	replace(__p, __n, __r);
+      }
+
+      void
+      replace(size_t __p, size_t __n, _CharT __c)
+      {
+	rope __r(__c);
+	replace(__p, __n, __r);
+      }
+
+      void
+      replace(size_t __p, size_t __n, const _CharT* __c_string)
+      {
+	rope __r(__c_string);
+	replace(__p, __n, __r);
+      }
+      
+      void
+      replace(size_t __p, size_t __n,
+	      const _CharT* __i, const _CharT* __j)
+      {
+	rope __r(__i, __j);
+	replace(__p, __n, __r);
+      }
+      
+      void
+      replace(size_t __p, size_t __n,
+	      const const_iterator& __i, const const_iterator& __j)
+      {
+	rope __r(__i, __j);
+	replace(__p, __n, __r);
+      }
+
+      void
+      replace(size_t __p, size_t __n,
+	      const iterator& __i, const iterator& __j)
+      {
+	rope __r(__i, __j);
+	replace(__p, __n, __r);
+      }
+
+      // Single character variants:
+      void
+      replace(size_t __p, _CharT __c)
+      {
+	iterator __i(this, __p);
+	*__i = __c;
+      }
+
+      void
+      replace(size_t __p, const rope& __r)
+      { replace(__p, 1, __r); }
+
+      void
+      replace(size_t __p, const _CharT* __i, size_t __i_len)
+      { replace(__p, 1, __i, __i_len); }
+
+      void
+      replace(size_t __p, const _CharT* __c_string)
+      {	replace(__p, 1, __c_string); }
+
+      void
+      replace(size_t __p, const _CharT* __i, const _CharT* __j)
+      {	replace(__p, 1, __i, __j); }
+
+      void
+      replace(size_t __p, const const_iterator& __i,
+	      const const_iterator& __j)
+      { replace(__p, 1, __i, __j); }
+
+      void
+      replace(size_t __p, const iterator& __i,
+	      const iterator& __j)
+      { replace(__p, 1, __i, __j); }
+
+      // Erase, (position, size) variant.
+      void
+      erase(size_t __p, size_t __n)
+      {
+	_RopeRep* __result = replace(this->_M_tree_ptr, __p,
+				     __p + __n, 0);
+	_S_unref(this->_M_tree_ptr);
+	this->_M_tree_ptr = __result;
+      }
+
+      // Erase, single character
+      void
+      erase(size_t __p)
+      { erase(__p, __p + 1); }
+
+      // Insert, iterator variants.
+      iterator
+      insert(const iterator& __p, const rope& __r)
+      {
+	insert(__p.index(), __r);
+	return __p;
+      }
+
+      iterator
+      insert(const iterator& __p, size_t __n, _CharT __c)
+      {
+	insert(__p.index(), __n, __c);
+	return __p;
+      }
+
+      iterator insert(const iterator& __p, _CharT __c)
+      {
+	insert(__p.index(), __c);
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p )
+      {
+	insert(__p.index());
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p, const _CharT* c_string)
+      {
+	insert(__p.index(), c_string);
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p, const _CharT* __i, size_t __n)
+      {
+	insert(__p.index(), __i, __n);
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p, const _CharT* __i,
+	     const _CharT* __j)
+      {
+	insert(__p.index(), __i, __j); 
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p,
+	     const const_iterator& __i, const const_iterator& __j)
+      {
+	insert(__p.index(), __i, __j);
+	return __p;
+      }
+      
+      iterator
+      insert(const iterator& __p,
+	     const iterator& __i, const iterator& __j)
+      {
+	insert(__p.index(), __i, __j);
+	return __p;
+      }
+
+      // Replace, range variants.
+      void
+      replace(const iterator& __p, const iterator& __q, const rope& __r)
+      {	replace(__p.index(), __q.index() - __p.index(), __r); }
+
+      void
+      replace(const iterator& __p, const iterator& __q, _CharT __c)
+      { replace(__p.index(), __q.index() - __p.index(), __c); }
+      
+      void
+      replace(const iterator& __p, const iterator& __q,
+	      const _CharT* __c_string)
+      { replace(__p.index(), __q.index() - __p.index(), __c_string); }
+      
+      void
+      replace(const iterator& __p, const iterator& __q,
+	      const _CharT* __i, size_t __n)
+      { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
+      
+      void
+      replace(const iterator& __p, const iterator& __q,
+	      const _CharT* __i, const _CharT* __j)
+      { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
+      
+      void
+      replace(const iterator& __p, const iterator& __q,
+	      const const_iterator& __i, const const_iterator& __j)
+      { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
+      
+      void
+      replace(const iterator& __p, const iterator& __q,
+	      const iterator& __i, const iterator& __j)
+      { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
+
+      // Replace, iterator variants.
+      void
+      replace(const iterator& __p, const rope& __r)
+      { replace(__p.index(), __r); }
+      
+      void
+      replace(const iterator& __p, _CharT __c)
+      { replace(__p.index(), __c); }
+      
+      void
+      replace(const iterator& __p, const _CharT* __c_string)
+      { replace(__p.index(), __c_string); }
+      
+      void
+      replace(const iterator& __p, const _CharT* __i, size_t __n)
+      { replace(__p.index(), __i, __n); }
+      
+      void
+      replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
+      { replace(__p.index(), __i, __j); }
+      
+      void
+      replace(const iterator& __p, const_iterator __i, const_iterator __j)
+      { replace(__p.index(), __i, __j); }
+      
+      void
+      replace(const iterator& __p, iterator __i, iterator __j)
+      { replace(__p.index(), __i, __j); }
+
+      // Iterator and range variants of erase
+      iterator
+      erase(const iterator& __p, const iterator& __q)
+      {
+	size_t __p_index = __p.index();
+	erase(__p_index, __q.index() - __p_index);
+	return iterator(this, __p_index);
+      }
+
+      iterator
+      erase(const iterator& __p)
+      {
+	size_t __p_index = __p.index();
+	erase(__p_index, 1);
+	return iterator(this, __p_index);
+      }
+
+      rope
+      substr(size_t __start, size_t __len = 1) const
+      {
+	return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
+						 __start,
+						 __start + __len));
+      }
+
+      rope
+      substr(iterator __start, iterator __end) const
+      {
+	return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
+						 __start.index(),
+						 __end.index()));
+      }
+
+      rope
+      substr(iterator __start) const
+      {
+	size_t __pos = __start.index();
+	return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
+						 __pos, __pos + 1));
+      }
+
+      rope
+      substr(const_iterator __start, const_iterator __end) const
+      {
+	// This might eventually take advantage of the cache in the
+	// iterator.
+	return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
+						 __start.index(),
+						 __end.index()));
+      }
+
+      rope<_CharT, _Alloc>
+      substr(const_iterator __start)
+      {
+	size_t __pos = __start.index();
+	return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
+						 __pos, __pos + 1));
+      }
+
+      static const size_type npos;
+
+      size_type find(_CharT __c, size_type __pos = 0) const;
+
+      size_type
+      find(const _CharT* __s, size_type __pos = 0) const
+      {
+	size_type __result_pos;
+	const_iterator __result =
+	  std::search(const_begin() + __pos, const_end(),
+		      __s, __s + _S_char_ptr_len(__s));
+	__result_pos = __result.index();
+#ifndef __STL_OLD_ROPE_SEMANTICS
+	if (__result_pos == size())
+	  __result_pos = npos;
+#endif
+	return __result_pos;
+      }
+
+      iterator
+      mutable_begin()
+      { return(iterator(this, 0)); }
+      
+      iterator
+      mutable_end()
+      { return(iterator(this, size())); }
+
+      typedef std::reverse_iterator<iterator> reverse_iterator;
+      
+      reverse_iterator
+      mutable_rbegin()
+      { return reverse_iterator(mutable_end()); }
+
+      reverse_iterator
+      mutable_rend()
+      { return reverse_iterator(mutable_begin()); }
+
+      reference
+      mutable_reference_at(size_type __pos)
+      { return reference(this, __pos); }
+
+#ifdef __STD_STUFF
+      reference
+      operator[] (size_type __pos)
+      { return _char_ref_proxy(this, __pos); }
+
+      reference
+      at(size_type __pos)
+      {
+	// if (__pos >= size()) throw out_of_range;  // XXX
+	return (*this)[__pos];
+      }
+      
+      void resize(size_type __n, _CharT __c) { }
+      void resize(size_type __n) { }
+      void reserve(size_type __res_arg = 0) { }
+      
+      size_type
+      capacity() const
+      { return max_size(); }
+
+      // Stuff below this line is dangerous because it's error prone.
+      // I would really like to get rid of it.
+      // copy function with funny arg ordering.
+      size_type
+      copy(_CharT* __buffer, size_type __n,
+	   size_type __pos = 0) const
+      { return copy(__pos, __n, __buffer); }
+
+      iterator
+      end()
+      { return mutable_end(); }
+
+      iterator
+      begin()
+      { return mutable_begin(); }
+
+      reverse_iterator
+      rend()
+      { return mutable_rend(); }
+      
+      reverse_iterator
+      rbegin()
+      { return mutable_rbegin(); }
+
+#else
+      const_iterator
+      end()
+      { return const_end(); }
+
+      const_iterator
+      begin()
+      { return const_begin(); }
+
+      const_reverse_iterator
+      rend()
+      { return const_rend(); }
+
+      const_reverse_iterator
+      rbegin()
+      { return const_rbegin(); }
+
+#endif
+    };
+
+  template <class _CharT, class _Alloc>
+    const typename rope<_CharT, _Alloc>::size_type
+    rope<_CharT, _Alloc>::npos = (size_type)(-1);
+  
+  template <class _CharT, class _Alloc>
+    inline bool operator==(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+			   const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return (__x._M_current_pos == __y._M_current_pos
+	      && __x._M_root == __y._M_root); }
+
+  template <class _CharT, class _Alloc>
+    inline bool operator<(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+			  const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return (__x._M_current_pos < __y._M_current_pos); }
+
+  template <class _CharT, class _Alloc>
+    inline bool operator!=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+			   const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template <class _CharT, class _Alloc>
+    inline bool operator>(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+			  const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return __y < __x; }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator<=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator>=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  template <class _CharT, class _Alloc>
+    inline ptrdiff_t
+    operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_const_iterator<_CharT, _Alloc>& __y)
+    { return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos; }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_const_iterator<_CharT, _Alloc>
+    operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
+    { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
+						  __x._M_current_pos - __n); }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_const_iterator<_CharT, _Alloc>
+    operator+(const _Rope_const_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
+    { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
+						  __x._M_current_pos + __n); }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_const_iterator<_CharT, _Alloc>
+    operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT, _Alloc>& __x)
+  { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
+						__x._M_current_pos + __n); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator==(const _Rope_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_iterator<_CharT, _Alloc>& __y)
+    {return (__x._M_current_pos == __y._M_current_pos
+	     && __x._M_root_rope == __y._M_root_rope); }
+  
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator<(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return (__x._M_current_pos < __y._M_current_pos); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator!=(const _Rope_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator>(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return __y < __x; }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator<=(const _Rope_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator>=(const _Rope_iterator<_CharT, _Alloc>& __x,
+	       const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  template <class _CharT, class _Alloc>
+    inline ptrdiff_t
+    operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      const _Rope_iterator<_CharT, _Alloc>& __y)
+    { return ((ptrdiff_t)__x._M_current_pos
+	      - (ptrdiff_t)__y._M_current_pos); }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_iterator<_CharT, _Alloc>
+    operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
+	      ptrdiff_t __n)
+    { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
+					    __x._M_current_pos - __n); }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_iterator<_CharT, _Alloc>
+    operator+(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
+    { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
+					    __x._M_current_pos + __n); }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_iterator<_CharT, _Alloc>
+    operator+(ptrdiff_t __n, const _Rope_iterator<_CharT, _Alloc>& __x)
+    { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
+					    __x._M_current_pos + __n); }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left,
+	      const rope<_CharT, _Alloc>& __right)
+    {
+      // Inlining this should make it possible to keep __left and
+      // __right in registers.
+      typedef rope<_CharT, _Alloc> rope_type;
+      return rope_type(rope_type::_S_concat(__left._M_tree_ptr, 
+					    __right._M_tree_ptr));
+    }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>&
+    operator+=(rope<_CharT, _Alloc>& __left,
+	       const rope<_CharT, _Alloc>& __right)
+    {
+      __left.append(__right);
+      return __left;
+    }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left,
+	      const _CharT* __right)
+    {
+      typedef rope<_CharT, _Alloc> rope_type;
+      size_t __rlen = rope_type::_S_char_ptr_len(__right);
+      return rope_type(rope_type::_S_concat_char_iter(__left._M_tree_ptr,
+						      __right, __rlen));
+    }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>&
+    operator+=(rope<_CharT, _Alloc>& __left,
+	       const _CharT* __right)
+    {
+      __left.append(__right);
+      return __left;
+    }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>
+    operator+(const rope<_CharT, _Alloc>& __left, _CharT __right)
+    {
+      typedef rope<_CharT, _Alloc> rope_type;
+      return rope_type(rope_type::_S_concat_char_iter(__left._M_tree_ptr,
+						      &__right, 1));
+    }
+
+  template <class _CharT, class _Alloc>
+    inline rope<_CharT, _Alloc>&
+    operator+=(rope<_CharT, _Alloc>& __left, _CharT __right)
+    {
+      __left.append(__right);
+      return __left;
+    }
+  
+  template <class _CharT, class _Alloc>
+    bool
+    operator<(const rope<_CharT, _Alloc>& __left,
+	      const rope<_CharT, _Alloc>& __right)
+    { return __left.compare(__right) < 0; }
+
+  template <class _CharT, class _Alloc>
+    bool
+    operator==(const rope<_CharT, _Alloc>& __left,
+	       const rope<_CharT, _Alloc>& __right)
+    { return __left.compare(__right) == 0; }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator==(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
+	       const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y)
+    { return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator!=(const rope<_CharT, _Alloc>& __x,
+	       const rope<_CharT, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator>(const rope<_CharT, _Alloc>& __x,
+	      const rope<_CharT, _Alloc>& __y)
+    { return __y < __x; }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator<=(const rope<_CharT, _Alloc>& __x,
+	       const rope<_CharT, _Alloc>& __y)
+    { return !(__y < __x); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator>=(const rope<_CharT, _Alloc>& __x,
+	       const rope<_CharT, _Alloc>& __y)
+    { return !(__x < __y); }
+
+  template <class _CharT, class _Alloc>
+    inline bool
+    operator!=(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
+	       const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y)
+    { return !(__x == __y); }
+
+  template<class _CharT, class _Traits, class _Alloc>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __o,
+	       const rope<_CharT, _Alloc>& __r);
+
+  typedef rope<char> crope;
+  typedef rope<wchar_t> wrope;
+
+  inline crope::reference
+  __mutable_reference_at(crope& __c, size_t __i)
+  { return __c.mutable_reference_at(__i); }
+
+  inline wrope::reference
+  __mutable_reference_at(wrope& __c, size_t __i)
+  { return __c.mutable_reference_at(__i); }
+
+  template <class _CharT, class _Alloc>
+    inline void
+    swap(rope<_CharT, _Alloc>& __x, rope<_CharT, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{ 
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    struct hash<__gnu_cxx::crope>
+    {
+      size_t
+      operator()(const __gnu_cxx::crope& __str) const
+      {
+	size_t __size = __str.size();
+	if (0 == __size)
+	  return 0;
+	return 13 * __str[0] + 5 * __str[__size - 1] + __size;
+      }
+    };
+
+
+  template<>
+    struct hash<__gnu_cxx::wrope>
+    {
+      size_t
+      operator()(const __gnu_cxx::wrope& __str) const
+      {
+	size_t __size = __str.size();
+	if (0 == __size)
+	  return 0;
+	return 13 * __str[0] + 5 * __str[__size - 1] + __size;
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace tr1
+} // namespace std
+
+# include <ext/ropeimpl.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/ropeimpl.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/ropeimpl.h
new file mode 100644
index 000000000..467b8fd93
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/ropeimpl.h
@@ -0,0 +1,1704 @@
+// SGI's rope class implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file ropeimpl.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/rope}
+ */
+
+#include <cstdio>
+#include <ostream>
+#include <bits/functexcept.h>
+
+#include <ext/algorithm> // For copy_n and lexicographical_compare_3way
+#include <ext/memory> // For uninitialized_copy_n
+#include <ext/numeric> // For power
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::printf;
+  using std::basic_ostream;
+  using std::__throw_length_error;
+  using std::_Destroy;
+  using std::uninitialized_fill_n;
+
+  // Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
+  // if necessary.  Assumes _M_path_end[leaf_index] and leaf_pos are correct.
+  // Results in a valid buf_ptr if the iterator can be legitimately
+  // dereferenced.
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator_base<_CharT, _Alloc>::
+    _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x)
+    {
+      const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];
+      size_t __leaf_pos = __x._M_leaf_pos;
+      size_t __pos = __x._M_current_pos;
+
+      switch(__leaf->_M_tag)
+	{
+	case __detail::_S_leaf:
+	  __x._M_buf_start = ((_Rope_RopeLeaf<_CharT, _Alloc>*)__leaf)->_M_data;
+	  __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);
+	  __x._M_buf_end = __x._M_buf_start + __leaf->_M_size;
+	  break;
+	case __detail::_S_function:
+	case __detail::_S_substringfn:
+	  {
+	    size_t __len = _S_iterator_buf_len;
+	    size_t __buf_start_pos = __leaf_pos;
+	    size_t __leaf_end = __leaf_pos + __leaf->_M_size;
+	    char_producer<_CharT>* __fn = ((_Rope_RopeFunction<_CharT,
+					    _Alloc>*)__leaf)->_M_fn;
+	    if (__buf_start_pos + __len <= __pos)
+	      {
+		__buf_start_pos = __pos - __len / 4;
+		if (__buf_start_pos + __len > __leaf_end)
+		  __buf_start_pos = __leaf_end - __len;
+	      }
+	    if (__buf_start_pos + __len > __leaf_end)
+	      __len = __leaf_end - __buf_start_pos;
+	    (*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);
+	    __x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);
+	    __x._M_buf_start = __x._M_tmp_buf;
+	    __x._M_buf_end = __x._M_tmp_buf + __len;
+	  }
+	  break;
+	default:
+	  break;
+	}
+    }
+
+  // Set path and buffer inside a rope iterator.  We assume that
+  // pos and root are already set.
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator_base<_CharT, _Alloc>::
+    _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x)
+    {
+      const _RopeRep* __path[int(__detail::_S_max_rope_depth) + 1];
+      const _RopeRep* __curr_rope;
+      int __curr_depth = -1;  /* index into path    */
+      size_t __curr_start_pos = 0;
+      size_t __pos = __x._M_current_pos;
+      unsigned char __dirns = 0; // Bit vector marking right turns in the path
+
+      if (__pos >= __x._M_root->_M_size)
+	{
+	  __x._M_buf_ptr = 0;
+	  return;
+	}
+      __curr_rope = __x._M_root;
+      if (0 != __curr_rope->_M_c_string)
+	{
+	  /* Treat the root as a leaf. */
+	  __x._M_buf_start = __curr_rope->_M_c_string;
+	  __x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size;
+	  __x._M_buf_ptr = __curr_rope->_M_c_string + __pos;
+	  __x._M_path_end[0] = __curr_rope;
+	  __x._M_leaf_index = 0;
+	  __x._M_leaf_pos = 0;
+	  return;
+	}
+      for(;;)
+	{
+	  ++__curr_depth;
+	  __path[__curr_depth] = __curr_rope;
+	  switch(__curr_rope->_M_tag)
+	    {
+	    case __detail::_S_leaf:
+	    case __detail::_S_function:
+	    case __detail::_S_substringfn:
+	      __x._M_leaf_pos = __curr_start_pos;
+	      goto done;
+	    case __detail::_S_concat:
+	      {
+		_Rope_RopeConcatenation<_CharT, _Alloc>* __c =
+		  (_Rope_RopeConcatenation<_CharT, _Alloc>*)__curr_rope;
+		_RopeRep* __left = __c->_M_left;
+		size_t __left_len = __left->_M_size;
+
+		__dirns <<= 1;
+		if (__pos >= __curr_start_pos + __left_len)
+		  {
+		    __dirns |= 1;
+		    __curr_rope = __c->_M_right;
+		    __curr_start_pos += __left_len;
+		  }
+		else
+		  __curr_rope = __left;
+	      }
+	      break;
+	    }
+	}
+    done:
+      // Copy last section of path into _M_path_end.
+      {
+	int __i = -1;
+	int __j = __curr_depth + 1 - int(_S_path_cache_len);
+
+	if (__j < 0) __j = 0;
+	while (__j <= __curr_depth)
+	  __x._M_path_end[++__i] = __path[__j++];
+	__x._M_leaf_index = __i;
+      }
+      __x._M_path_directions = __dirns;
+      _S_setbuf(__x);
+    }
+
+  // Specialized version of the above.  Assumes that
+  // the path cache is valid for the previous position.
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator_base<_CharT, _Alloc>::
+    _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x)
+    {
+      int __current_index = __x._M_leaf_index;
+      const _RopeRep* __current_node = __x._M_path_end[__current_index];
+      size_t __len = __current_node->_M_size;
+      size_t __node_start_pos = __x._M_leaf_pos;
+      unsigned char __dirns = __x._M_path_directions;
+      _Rope_RopeConcatenation<_CharT, _Alloc>* __c;
+
+      if (__x._M_current_pos - __node_start_pos < __len)
+	{
+	  /* More stuff in this leaf, we just didn't cache it. */
+	  _S_setbuf(__x);
+	  return;
+	}
+      //  node_start_pos is starting position of last_node.
+      while (--__current_index >= 0)
+	{
+	  if (!(__dirns & 1) /* Path turned left */)
+	    break;
+	  __current_node = __x._M_path_end[__current_index];
+	  __c = (_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node;
+	  // Otherwise we were in the right child.  Thus we should pop
+	  // the concatenation node.
+	  __node_start_pos -= __c->_M_left->_M_size;
+	  __dirns >>= 1;
+	}
+      if (__current_index < 0)
+	{
+	  // We underflowed the cache. Punt.
+	  _S_setcache(__x);
+	  return;
+	}
+      __current_node = __x._M_path_end[__current_index];
+      __c = (_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node;
+      // current_node is a concatenation node.  We are positioned on the first
+      // character in its right child.
+      // node_start_pos is starting position of current_node.
+      __node_start_pos += __c->_M_left->_M_size;
+      __current_node = __c->_M_right;
+      __x._M_path_end[++__current_index] = __current_node;
+      __dirns |= 1;
+      while (__detail::_S_concat == __current_node->_M_tag)
+	{
+	  ++__current_index;
+	  if (int(_S_path_cache_len) == __current_index)
+	    {
+	      int __i;
+	      for (__i = 0; __i < int(_S_path_cache_len) - 1; __i++)
+		__x._M_path_end[__i] = __x._M_path_end[__i+1];
+	      --__current_index;
+	    }
+	  __current_node =
+	    ((_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node)->_M_left;
+	  __x._M_path_end[__current_index] = __current_node;
+	  __dirns <<= 1;
+	  // node_start_pos is unchanged.
+	}
+      __x._M_leaf_index = __current_index;
+      __x._M_leaf_pos = __node_start_pos;
+      __x._M_path_directions = __dirns;
+      _S_setbuf(__x);
+    }
+
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator_base<_CharT, _Alloc>::
+    _M_incr(size_t __n)
+    {
+      _M_current_pos += __n;
+      if (0 != _M_buf_ptr)
+	{
+	  size_t __chars_left = _M_buf_end - _M_buf_ptr;
+	  if (__chars_left > __n)
+	    _M_buf_ptr += __n;
+	  else if (__chars_left == __n)
+	    {
+	      _M_buf_ptr += __n;
+	      _S_setcache_for_incr(*this);
+	    }
+	  else
+	    _M_buf_ptr = 0;
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator_base<_CharT, _Alloc>::
+    _M_decr(size_t __n)
+    {
+      if (0 != _M_buf_ptr)
+	{
+	  size_t __chars_left = _M_buf_ptr - _M_buf_start;
+	  if (__chars_left >= __n)
+	    _M_buf_ptr -= __n;
+	  else
+	    _M_buf_ptr = 0;
+	}
+      _M_current_pos -= __n;
+    }
+
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_iterator<_CharT, _Alloc>::
+    _M_check()
+    {
+      if (_M_root_rope->_M_tree_ptr != this->_M_root)
+	{
+	  // _Rope was modified.  Get things fixed up.
+	  _RopeRep::_S_unref(this->_M_root);
+	  this->_M_root = _M_root_rope->_M_tree_ptr;
+	  _RopeRep::_S_ref(this->_M_root);
+	  this->_M_buf_ptr = 0;
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    inline
+    _Rope_const_iterator<_CharT, _Alloc>::
+    _Rope_const_iterator(const _Rope_iterator<_CharT, _Alloc>& __x)
+    : _Rope_iterator_base<_CharT, _Alloc>(__x)
+    { }
+
+  template <class _CharT, class _Alloc>
+    inline
+    _Rope_iterator<_CharT, _Alloc>::
+    _Rope_iterator(rope<_CharT, _Alloc>& __r, size_t __pos)
+    : _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos),
+      _M_root_rope(&__r)
+    { _RopeRep::_S_ref(this->_M_root); }
+
+  template <class _CharT, class _Alloc>
+    inline size_t
+    rope<_CharT, _Alloc>::
+    _S_char_ptr_len(const _CharT* __s)
+    {
+      const _CharT* __p = __s;
+      
+      while (!_S_is0(*__p))
+	++__p;
+      return (__p - __s);
+    }
+
+
+#ifndef __GC
+
+  template <class _CharT, class _Alloc>
+    inline void
+    _Rope_RopeRep<_CharT, _Alloc>::
+    _M_free_c_string()
+    {
+      _CharT* __cstr = _M_c_string;
+      if (0 != __cstr)
+	{
+	  size_t __size = this->_M_size + 1;
+	  _Destroy(__cstr, __cstr + __size, _M_get_allocator());
+	  this->_Data_deallocate(__cstr, __size);
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    inline void
+    _Rope_RopeRep<_CharT, _Alloc>::
+    _S_free_string(_CharT* __s, size_t __n, allocator_type& __a)
+    {
+      if (!_S_is_basic_char_type((_CharT*)0))
+	_Destroy(__s, __s + __n, __a);
+      
+      //  This has to be a static member, so this gets a bit messy
+      __a.deallocate(__s,
+		     _Rope_RopeLeaf<_CharT, _Alloc>::_S_rounded_up_size(__n));
+    }
+
+  //  There are several reasons for not doing this with virtual destructors
+  //  and a class specific delete operator:
+  //  - A class specific delete operator can't easily get access to
+  //    allocator instances if we need them.
+  //  - Any virtual function would need a 4 or byte vtable pointer;
+  //    this only requires a one byte tag per object.
+  template <class _CharT, class _Alloc>
+    void
+    _Rope_RopeRep<_CharT, _Alloc>::
+    _M_free_tree()
+    {
+      switch(_M_tag)
+	{
+	case __detail::_S_leaf:
+	  {
+	    _Rope_RopeLeaf<_CharT, _Alloc>* __l
+	      = (_Rope_RopeLeaf<_CharT, _Alloc>*)this;
+	    __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf();
+	    _L_deallocate(__l, 1);
+	    break;
+	  }
+	case __detail::_S_concat:
+	  {
+	    _Rope_RopeConcatenation<_CharT,_Alloc>* __c
+	      = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this;
+	    __c->_Rope_RopeConcatenation<_CharT, _Alloc>::
+	      ~_Rope_RopeConcatenation();
+	    _C_deallocate(__c, 1);
+	    break;
+	  }
+	case __detail::_S_function:
+	  {
+	    _Rope_RopeFunction<_CharT, _Alloc>* __f
+	      = (_Rope_RopeFunction<_CharT, _Alloc>*)this;
+	    __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction();
+	    _F_deallocate(__f, 1);
+	    break;
+	  }
+	case __detail::_S_substringfn:
+	  {
+	    _Rope_RopeSubstring<_CharT, _Alloc>* __ss =
+	      (_Rope_RopeSubstring<_CharT, _Alloc>*)this;
+	    __ss->_Rope_RopeSubstring<_CharT, _Alloc>::
+	      ~_Rope_RopeSubstring();
+	    _S_deallocate(__ss, 1);
+	    break;
+	  }
+	}
+    }
+#else
+
+  template <class _CharT, class _Alloc>
+    inline void
+    _Rope_RopeRep<_CharT, _Alloc>::
+    _S_free_string(const _CharT*, size_t, allocator_type)
+    { }
+
+#endif
+
+  // Concatenate a C string onto a leaf rope by copying the rope data.
+  // Used for short ropes.
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeLeaf*
+    rope<_CharT, _Alloc>::
+    _S_leaf_concat_char_iter(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
+    {
+      size_t __old_len = __r->_M_size;
+      _CharT* __new_data = (_CharT*)
+	_Data_allocate(_S_rounded_up_size(__old_len + __len));
+      _RopeLeaf* __result;
+
+      uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
+      uninitialized_copy_n(__iter, __len, __new_data + __old_len);
+      _S_cond_store_eos(__new_data[__old_len + __len]);
+      __try
+	{
+	  __result = _S_new_RopeLeaf(__new_data, __old_len + __len,
+				     __r->_M_get_allocator());
+	}
+      __catch(...)
+	{
+	  _RopeRep::__STL_FREE_STRING(__new_data, __old_len + __len,
+				      __r->_M_get_allocator());
+	  __throw_exception_again;
+	}
+      return __result;
+    }
+
+#ifndef __GC
+  // As above, but it's OK to clobber original if refcount is 1
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT,_Alloc>::_RopeLeaf*
+    rope<_CharT, _Alloc>::
+    _S_destr_leaf_concat_char_iter(_RopeLeaf* __r, const _CharT* __iter,
+				   size_t __len)
+    {
+      if (__r->_M_ref_count > 1)
+	return _S_leaf_concat_char_iter(__r, __iter, __len);
+      size_t __old_len = __r->_M_size;
+      if (_S_allocated_capacity(__old_len) >= __old_len + __len)
+	{
+	  // The space has been partially initialized for the standard
+	  // character types.  But that doesn't matter for those types.
+	  uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
+	  if (_S_is_basic_char_type((_CharT*)0))
+	    _S_cond_store_eos(__r->_M_data[__old_len + __len]);
+	  else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string)
+	    {
+	      __r->_M_free_c_string();
+	      __r->_M_c_string = 0;
+	    }
+	  __r->_M_size = __old_len + __len;
+	  __r->_M_ref_count = 2;
+	  return __r;
+	}
+      else
+	{
+	  _RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
+	  return __result;
+	}
+    }
+#endif
+
+  // Assumes left and right are not 0.
+  // Does not increment (nor decrement on exception) child reference counts.
+  // Result has ref count 1.
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeRep*
+    rope<_CharT, _Alloc>::
+    _S_tree_concat(_RopeRep* __left, _RopeRep* __right)
+    {
+      _RopeConcatenation* __result = _S_new_RopeConcatenation(__left, __right,
+							      __left->
+							      _M_get_allocator());
+      size_t __depth = __result->_M_depth;
+      
+      if (__depth > 20
+	  && (__result->_M_size < 1000
+	      || __depth > size_t(__detail::_S_max_rope_depth)))
+	{
+	  _RopeRep* __balanced;
+
+	  __try
+	    {
+	      __balanced = _S_balance(__result);
+	      __result->_M_unref_nonnil();
+	    }
+	  __catch(...)
+	    {
+	      _C_deallocate(__result,1);
+	      __throw_exception_again;
+	    }
+	  // In case of exception, we need to deallocate
+	  // otherwise dangling result node.  But caller
+	  // still owns its children.  Thus unref is
+	  // inappropriate.
+	  return __balanced;
+	}
+      else
+	return __result;
+    }
+
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeRep*
+    rope<_CharT, _Alloc>::
+    _S_concat_char_iter(_RopeRep* __r, const _CharT*__s, size_t __slen)
+    {
+      _RopeRep* __result;
+      if (0 == __slen)
+	{
+	  _S_ref(__r);
+	  return __r;
+	}
+      if (0 == __r)
+	return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
+						__r->_M_get_allocator());
+      if (__r->_M_tag == __detail::_S_leaf
+	  && __r->_M_size + __slen <= size_t(_S_copy_max))
+	{
+	  __result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
+	  return __result;
+	}
+      if (__detail::_S_concat == __r->_M_tag
+	  && __detail::_S_leaf == ((_RopeConcatenation*) __r)->_M_right->_M_tag)
+	{
+	  _RopeLeaf* __right =
+	    (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
+	  if (__right->_M_size + __slen <= size_t(_S_copy_max))
+	    {
+	      _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
+	      _RopeRep* __nright =
+		_S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
+	      __left->_M_ref_nonnil();
+	      __try
+		{ __result = _S_tree_concat(__left, __nright); }
+	      __catch(...)
+		{
+		  _S_unref(__left);
+		  _S_unref(__nright);
+		  __throw_exception_again;
+		}
+	      return __result;
+	    }
+	}
+      _RopeRep* __nright =
+	__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->_M_get_allocator());
+      __try
+	{
+	  __r->_M_ref_nonnil();
+	  __result = _S_tree_concat(__r, __nright);
+	}
+      __catch(...)
+	{
+	  _S_unref(__r);
+	  _S_unref(__nright);
+	  __throw_exception_again;
+	}
+      return __result;
+    }
+
+#ifndef __GC
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT,_Alloc>::_RopeRep*
+    rope<_CharT,_Alloc>::
+    _S_destr_concat_char_iter(_RopeRep* __r, const _CharT* __s, size_t __slen)
+    {
+      _RopeRep* __result;
+      if (0 == __r)
+	return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
+						__r->_M_get_allocator());
+      size_t __count = __r->_M_ref_count;
+      size_t __orig_size = __r->_M_size;
+      if (__count > 1)
+	return _S_concat_char_iter(__r, __s, __slen);
+      if (0 == __slen)
+	{
+	  __r->_M_ref_count = 2;      // One more than before
+	  return __r;
+	}
+      if (__orig_size + __slen <= size_t(_S_copy_max)
+	  && __detail::_S_leaf == __r->_M_tag)
+	{
+	  __result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, 
+						    __slen);
+	  return __result;
+	}
+      if (__detail::_S_concat == __r->_M_tag)
+	{
+	  _RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)
+					     __r)->_M_right);
+	  if (__detail::_S_leaf == __right->_M_tag
+	      && __right->_M_size + __slen <= size_t(_S_copy_max))
+	    {
+	      _RopeRep* __new_right =
+		_S_destr_leaf_concat_char_iter(__right, __s, __slen);
+	      if (__right == __new_right)
+		__new_right->_M_ref_count = 1;
+	      else
+		__right->_M_unref_nonnil();
+	      __r->_M_ref_count = 2;    // One more than before.
+	      ((_RopeConcatenation*)__r)->_M_right = __new_right;
+	      __r->_M_size = __orig_size + __slen;
+	      if (0 != __r->_M_c_string)
+		{
+		  __r->_M_free_c_string();
+		  __r->_M_c_string = 0;
+		}
+	      return __r;
+	    }
+	}
+      _RopeRep* __right =
+	__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->_M_get_allocator());
+      __r->_M_ref_nonnil();
+      __try
+	{ __result = _S_tree_concat(__r, __right); }
+      __catch(...)
+	{
+	  _S_unref(__r);
+	  _S_unref(__right);
+	  __throw_exception_again;
+	}
+      return __result;
+    }
+#endif /* !__GC */
+  
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeRep*
+    rope<_CharT, _Alloc>::
+    _S_concat(_RopeRep* __left, _RopeRep* __right)
+    {
+      if (0 == __left)
+	{
+	  _S_ref(__right);
+	  return __right;
+	}
+      if (0 == __right)
+	{
+	  __left->_M_ref_nonnil();
+	  return __left;
+	}
+      if (__detail::_S_leaf == __right->_M_tag)
+	{
+	  if (__detail::_S_leaf == __left->_M_tag)
+	    {
+	      if (__right->_M_size + __left->_M_size <= size_t(_S_copy_max))
+		return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
+						((_RopeLeaf*)__right)->_M_data,
+						__right->_M_size);
+	    }
+	  else if (__detail::_S_concat == __left->_M_tag
+		   && __detail::_S_leaf == ((_RopeConcatenation*)
+						   __left)->_M_right->_M_tag)
+	    {
+	      _RopeLeaf* __leftright =
+		(_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right);
+	      if (__leftright->_M_size
+		  + __right->_M_size <= size_t(_S_copy_max))
+		{
+		  _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
+		  _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
+							      ((_RopeLeaf*)
+							       __right)->
+							      _M_data,
+							      __right->_M_size);
+		  __leftleft->_M_ref_nonnil();
+		  __try
+		    { return(_S_tree_concat(__leftleft, __rest)); }
+		  __catch(...)
+		    {
+		      _S_unref(__leftleft);
+		      _S_unref(__rest);
+		      __throw_exception_again;
+		    }
+		}
+	    }
+	}
+      __left->_M_ref_nonnil();
+      __right->_M_ref_nonnil();
+      __try
+	{ return(_S_tree_concat(__left, __right)); }
+      __catch(...)
+	{
+	  _S_unref(__left);
+	  _S_unref(__right);
+	  __throw_exception_again;
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeRep*
+    rope<_CharT, _Alloc>::
+    _S_substring(_RopeRep* __base, size_t __start, size_t __endp1)
+    {
+      if (0 == __base)
+	return 0;
+      size_t __len = __base->_M_size;
+      size_t __adj_endp1;
+      const size_t __lazy_threshold = 128;
+      
+      if (__endp1 >= __len)
+	{
+	  if (0 == __start)
+	    {
+	      __base->_M_ref_nonnil();
+	      return __base;
+	    }
+	  else
+	    __adj_endp1 = __len;
+	  
+	}
+      else
+	__adj_endp1 = __endp1;
+
+      switch(__base->_M_tag)
+	{
+	case __detail::_S_concat:
+	    {
+	      _RopeConcatenation* __c = (_RopeConcatenation*)__base;
+	      _RopeRep* __left = __c->_M_left;
+	      _RopeRep* __right = __c->_M_right;
+	      size_t __left_len = __left->_M_size;
+	      _RopeRep* __result;
+	      
+	      if (__adj_endp1 <= __left_len)
+		return _S_substring(__left, __start, __endp1);
+	      else if (__start >= __left_len)
+		return _S_substring(__right, __start - __left_len,
+				    __adj_endp1 - __left_len);
+	      _Self_destruct_ptr __left_result(_S_substring(__left,
+							    __start,
+							    __left_len));
+	      _Self_destruct_ptr __right_result(_S_substring(__right, 0,
+							     __endp1 
+							     - __left_len));
+	      __result = _S_concat(__left_result, __right_result);
+	      return __result;
+	    }
+	case __detail::_S_leaf:
+	  {
+	    _RopeLeaf* __l = (_RopeLeaf*)__base;
+	    _RopeLeaf* __result;
+	    size_t __result_len;
+	    if (__start >= __adj_endp1)
+	      return 0;
+	    __result_len = __adj_endp1 - __start;
+	    if (__result_len > __lazy_threshold)
+	      goto lazy;
+#ifdef __GC
+	    const _CharT* __section = __l->_M_data + __start;
+	    __result = _S_new_RopeLeaf(__section, __result_len,
+				       __base->_M_get_allocator());
+	    __result->_M_c_string = 0;  // Not eos terminated.
+#else
+	    // We should sometimes create substring node instead.
+	    __result = __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__l->_M_data + __start,
+							__result_len,
+							__base->
+							_M_get_allocator());
+#endif
+	    return __result;
+	  }
+	case __detail::_S_substringfn:
+	  // Avoid introducing multiple layers of substring nodes.
+	  {
+	    _RopeSubstring* __old = (_RopeSubstring*)__base;
+	    size_t __result_len;
+	    if (__start >= __adj_endp1)
+	      return 0;
+	    __result_len = __adj_endp1 - __start;
+	    if (__result_len > __lazy_threshold)
+	      {
+		_RopeSubstring* __result =
+		  _S_new_RopeSubstring(__old->_M_base,
+				       __start + __old->_M_start,
+				       __adj_endp1 - __start,
+				       __base->_M_get_allocator());
+		return __result;
+		
+	      } // *** else fall through: ***
+	  }
+	case __detail::_S_function:
+	  {
+	    _RopeFunction* __f = (_RopeFunction*)__base;
+	    _CharT* __section;
+	    size_t __result_len;
+	    if (__start >= __adj_endp1)
+	      return 0;
+	    __result_len = __adj_endp1 - __start;
+	    
+	    if (__result_len > __lazy_threshold)
+	      goto lazy;
+	    __section = (_CharT*)
+	      _Data_allocate(_S_rounded_up_size(__result_len));
+	    __try
+	      {	(*(__f->_M_fn))(__start, __result_len, __section); }
+	    __catch(...)
+	      {
+		_RopeRep::__STL_FREE_STRING(__section, __result_len,
+					    __base->_M_get_allocator());
+		__throw_exception_again;
+	      }
+	    _S_cond_store_eos(__section[__result_len]);
+	    return _S_new_RopeLeaf(__section, __result_len,
+				   __base->_M_get_allocator());
+	  }
+	}
+    lazy:
+      {
+	// Create substring node.
+	return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
+				    __base->_M_get_allocator());
+      }
+    }
+
+  template<class _CharT>
+    class _Rope_flatten_char_consumer
+    : public _Rope_char_consumer<_CharT>
+    {
+    private:
+      _CharT* _M_buf_ptr;
+    public:
+      
+      _Rope_flatten_char_consumer(_CharT* __buffer)
+      { _M_buf_ptr = __buffer; };
+
+      ~_Rope_flatten_char_consumer() {}
+      
+      bool
+      operator()(const _CharT* __leaf, size_t __n)
+      {
+	uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
+	_M_buf_ptr += __n;
+	return true;
+      }
+    };
+
+  template<class _CharT>
+    class _Rope_find_char_char_consumer
+    : public _Rope_char_consumer<_CharT>
+    {
+    private:
+      _CharT _M_pattern;
+    public:
+      size_t _M_count;  // Number of nonmatching characters
+      
+      _Rope_find_char_char_consumer(_CharT __p)
+      : _M_pattern(__p), _M_count(0) {}
+	
+      ~_Rope_find_char_char_consumer() {}
+      
+      bool
+      operator()(const _CharT* __leaf, size_t __n)
+      {
+	size_t __i;
+	for (__i = 0; __i < __n; __i++)
+	  {
+	    if (__leaf[__i] == _M_pattern)
+	      {
+		_M_count += __i;
+		return false;
+	      }
+	  }
+	_M_count += __n; return true;
+      }
+    };
+
+  template<class _CharT, class _Traits>
+  // Here _CharT is both the stream and rope character type.
+    class _Rope_insert_char_consumer
+    : public _Rope_char_consumer<_CharT>
+    {
+    private:
+      typedef basic_ostream<_CharT,_Traits> _Insert_ostream;
+      _Insert_ostream& _M_o;
+    public:
+      _Rope_insert_char_consumer(_Insert_ostream& __writer)
+	: _M_o(__writer) {};
+      ~_Rope_insert_char_consumer() { };
+      // Caller is presumed to own the ostream
+      bool operator() (const _CharT* __leaf, size_t __n);
+      // Returns true to continue traversal.
+    };
+
+  template<class _CharT, class _Traits>
+    bool
+    _Rope_insert_char_consumer<_CharT, _Traits>::
+    operator()(const _CharT* __leaf, size_t __n)
+    {
+      size_t __i;
+      //  We assume that formatting is set up correctly for each element.
+      for (__i = 0; __i < __n; __i++)
+	_M_o.put(__leaf[__i]);
+      return true;
+    }
+
+  template <class _CharT, class _Alloc>
+    bool
+    rope<_CharT, _Alloc>::
+    _S_apply_to_pieces(_Rope_char_consumer<_CharT>& __c,
+		       const _RopeRep* __r, size_t __begin, size_t __end)
+    {
+      if (0 == __r)
+	return true;
+      switch(__r->_M_tag)
+	{
+	case __detail::_S_concat:
+	  {
+	    _RopeConcatenation* __conc = (_RopeConcatenation*)__r;
+	    _RopeRep* __left =  __conc->_M_left;
+	    size_t __left_len = __left->_M_size;
+	    if (__begin < __left_len)
+	      {
+		size_t __left_end = std::min(__left_len, __end);
+		if (!_S_apply_to_pieces(__c, __left, __begin, __left_end))
+		  return false;
+	      }
+	    if (__end > __left_len)
+	      {
+		_RopeRep* __right =  __conc->_M_right;
+		size_t __right_start = std::max(__left_len, __begin);
+		if (!_S_apply_to_pieces(__c, __right,
+					__right_start - __left_len,
+					__end - __left_len))
+		  return false;
+	      }
+	  }
+	  return true;
+	case __detail::_S_leaf:
+	  {
+	    _RopeLeaf* __l = (_RopeLeaf*)__r;
+	    return __c(__l->_M_data + __begin, __end - __begin);
+	  }
+	case __detail::_S_function:
+	case __detail::_S_substringfn:
+	    {
+	      _RopeFunction* __f = (_RopeFunction*)__r;
+	      size_t __len = __end - __begin;
+	      bool __result;
+	      _CharT* __buffer =
+		(_CharT*)_Alloc().allocate(__len * sizeof(_CharT));
+	      __try
+		{
+		  (*(__f->_M_fn))(__begin, __len, __buffer);
+		  __result = __c(__buffer, __len);
+                  _Alloc().deallocate(__buffer, __len * sizeof(_CharT));
+                }
+	      __catch(...)
+		{
+		  _Alloc().deallocate(__buffer, __len * sizeof(_CharT));
+		  __throw_exception_again;
+		}
+	      return __result;
+	    }
+	default:
+	  return false;
+	}
+    }
+
+  template<class _CharT, class _Traits>
+    inline void
+    _Rope_fill(basic_ostream<_CharT, _Traits>& __o, size_t __n)
+    {
+      char __f = __o.fill();
+      size_t __i;
+      
+      for (__i = 0; __i < __n; __i++)
+	__o.put(__f);
+    }
+
+
+  template <class _CharT>
+    inline bool
+    _Rope_is_simple(_CharT*)
+    { return false; }
+
+  inline bool
+  _Rope_is_simple(char*)
+  { return true; }
+
+  inline bool
+  _Rope_is_simple(wchar_t*)
+  { return true; }
+
+  template<class _CharT, class _Traits, class _Alloc>
+    basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __o,
+	       const rope<_CharT, _Alloc>& __r)
+    {
+      size_t __w = __o.width();
+      bool __left = bool(__o.flags() & std::ios::left);
+      size_t __pad_len;
+      size_t __rope_len = __r.size();
+      _Rope_insert_char_consumer<_CharT, _Traits> __c(__o);
+      bool __is_simple = _Rope_is_simple((_CharT*)0);
+      
+      if (__rope_len < __w)
+	__pad_len = __w - __rope_len;
+      else
+	__pad_len = 0;
+
+      if (!__is_simple)
+	__o.width(__w / __rope_len);
+      __try
+	{
+	  if (__is_simple && !__left && __pad_len > 0)
+	    _Rope_fill(__o, __pad_len);
+	  __r.apply_to_pieces(0, __r.size(), __c);
+	  if (__is_simple && __left && __pad_len > 0)
+	    _Rope_fill(__o, __pad_len);
+	  if (!__is_simple)
+	    __o.width(__w);
+	}
+      __catch(...)
+	{
+	  if (!__is_simple)
+	    __o.width(__w);
+	  __throw_exception_again;
+	}
+      return __o;
+    }
+
+  template <class _CharT, class _Alloc>
+    _CharT*
+    rope<_CharT, _Alloc>::
+    _S_flatten(_RopeRep* __r, size_t __start, size_t __len,
+	       _CharT* __buffer)
+    {
+      _Rope_flatten_char_consumer<_CharT> __c(__buffer);
+      _S_apply_to_pieces(__c, __r, __start, __start + __len);
+      return(__buffer + __len);
+    }
+
+  template <class _CharT, class _Alloc>
+    size_t
+    rope<_CharT, _Alloc>::
+    find(_CharT __pattern, size_t __start) const
+    {
+      _Rope_find_char_char_consumer<_CharT> __c(__pattern);
+      _S_apply_to_pieces(__c, this->_M_tree_ptr, __start, size());
+      size_type __result_pos = __start + __c._M_count;
+#ifndef __STL_OLD_ROPE_SEMANTICS
+      if (__result_pos == size())
+	__result_pos = npos;
+#endif
+      return __result_pos;
+    }
+
+  template <class _CharT, class _Alloc>
+    _CharT*
+    rope<_CharT, _Alloc>::
+    _S_flatten(_RopeRep* __r, _CharT* __buffer)
+    {
+      if (0 == __r)
+	return __buffer;
+      switch(__r->_M_tag)
+	{
+	case __detail::_S_concat:
+	  {
+	    _RopeConcatenation* __c = (_RopeConcatenation*)__r;
+	    _RopeRep* __left = __c->_M_left;
+	    _RopeRep* __right = __c->_M_right;
+	    _CharT* __rest = _S_flatten(__left, __buffer);
+	    return _S_flatten(__right, __rest);
+	  }
+	case __detail::_S_leaf:
+	  {
+	    _RopeLeaf* __l = (_RopeLeaf*)__r;
+	    return copy_n(__l->_M_data, __l->_M_size, __buffer).second;
+	  }
+	case __detail::_S_function:
+	case __detail::_S_substringfn:
+	  // We don't yet do anything with substring nodes.
+	  // This needs to be fixed before ropefiles will work well.
+	  {
+	    _RopeFunction* __f = (_RopeFunction*)__r;
+	    (*(__f->_M_fn))(0, __f->_M_size, __buffer);
+	    return __buffer + __f->_M_size;
+	  }
+	default:
+	  return 0;
+	}
+    }
+
+  // This needs work for _CharT != char
+  template <class _CharT, class _Alloc>
+    void
+    rope<_CharT, _Alloc>::
+    _S_dump(_RopeRep* __r, int __indent)
+    {
+      for (int __i = 0; __i < __indent; __i++)
+	putchar(' ');
+      if (0 == __r)
+	{
+	  printf("NULL\n");
+	  return;
+	}
+      if (_S_concat == __r->_M_tag)
+	{
+	  _RopeConcatenation* __c = (_RopeConcatenation*)__r;
+	  _RopeRep* __left = __c->_M_left;
+	  _RopeRep* __right = __c->_M_right;
+	  
+#ifdef __GC
+	  printf("Concatenation %p (depth = %d, len = %ld, %s balanced)\n",
+		 __r, __r->_M_depth, __r->_M_size,
+		 __r->_M_is_balanced? "" : "not");
+#else
+	  printf("Concatenation %p (rc = %ld, depth = %d, "
+		 "len = %ld, %s balanced)\n",
+		 __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size,
+		 __r->_M_is_balanced? "" : "not");
+#endif
+	  _S_dump(__left, __indent + 2);
+	  _S_dump(__right, __indent + 2);
+	  return;
+	}
+      else
+	{
+	  char* __kind;
+	  
+	  switch (__r->_M_tag)
+	    {
+	    case __detail::_S_leaf:
+	      __kind = "Leaf";
+	      break;
+	    case __detail::_S_function:
+	      __kind = "Function";
+	      break;
+	    case __detail::_S_substringfn:
+	      __kind = "Function representing substring";
+	      break;
+	    default:
+	      __kind = "(corrupted kind field!)";
+	    }
+#ifdef __GC
+	  printf("%s %p (depth = %d, len = %ld) ",
+		 __kind, __r, __r->_M_depth, __r->_M_size);
+#else
+	  printf("%s %p (rc = %ld, depth = %d, len = %ld) ",
+		 __kind, __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size);
+#endif
+	  if (_S_is_one_byte_char_type((_CharT*)0))
+	    {
+	      const int __max_len = 40;
+	      _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len));
+	      _CharT __buffer[__max_len + 1];
+	      bool __too_big = __r->_M_size > __prefix->_M_size;
+	      
+	      _S_flatten(__prefix, __buffer);
+	      __buffer[__prefix->_M_size] = _S_eos((_CharT*)0);
+	      printf("%s%s\n", (char*)__buffer,
+		     __too_big? "...\n" : "\n");
+	    }
+	  else
+	    printf("\n");
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    const unsigned long
+    rope<_CharT, _Alloc>::
+    _S_min_len[int(__detail::_S_max_rope_depth) + 1] = {
+      /* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21,
+      /* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377,
+      /* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181,
+      /* 18 */6765, /* 19 */10946, /* 20 */17711, /* 21 */28657, /* 22 */46368,
+      /* 23 */75025, /* 24 */121393, /* 25 */196418, /* 26 */317811,
+      /* 27 */514229, /* 28 */832040, /* 29 */1346269, /* 30 */2178309,
+      /* 31 */3524578, /* 32 */5702887, /* 33 */9227465, /* 34 */14930352,
+      /* 35 */24157817, /* 36 */39088169, /* 37 */63245986, /* 38 */102334155,
+      /* 39 */165580141, /* 40 */267914296, /* 41 */433494437,
+      /* 42 */701408733, /* 43 */1134903170, /* 44 */1836311903,
+      /* 45 */2971215073u };
+  // These are Fibonacci numbers < 2**32.
+
+  template <class _CharT, class _Alloc>
+    typename rope<_CharT, _Alloc>::_RopeRep*
+    rope<_CharT, _Alloc>::
+    _S_balance(_RopeRep* __r)
+    {
+      _RopeRep* __forest[int(__detail::_S_max_rope_depth) + 1];
+      _RopeRep* __result = 0;
+      int __i;
+      // Invariant:
+      // The concatenation of forest in descending order is equal to __r.
+      // __forest[__i]._M_size >= _S_min_len[__i]
+      // __forest[__i]._M_depth = __i
+      // References from forest are included in refcount.
+      
+      for (__i = 0; __i <= int(__detail::_S_max_rope_depth); ++__i)
+	__forest[__i] = 0;
+      __try
+	{
+	  _S_add_to_forest(__r, __forest);
+	  for (__i = 0; __i <= int(__detail::_S_max_rope_depth); ++__i)
+	    if (0 != __forest[__i])
+	      {
+#ifndef __GC
+		_Self_destruct_ptr __old(__result);
+#endif
+		__result = _S_concat(__forest[__i], __result);
+		__forest[__i]->_M_unref_nonnil();
+#if !defined(__GC) && defined(__EXCEPTIONS)
+		__forest[__i] = 0;
+#endif
+	      }
+	}
+      __catch(...)
+	{
+	  for(__i = 0; __i <= int(__detail::_S_max_rope_depth); __i++)
+	    _S_unref(__forest[__i]);
+	  __throw_exception_again;
+	}
+      
+      if (__result->_M_depth > int(__detail::_S_max_rope_depth))
+	__throw_length_error(__N("rope::_S_balance"));
+      return(__result);
+    }
+
+  template <class _CharT, class _Alloc>
+    void
+    rope<_CharT, _Alloc>::
+    _S_add_to_forest(_RopeRep* __r, _RopeRep** __forest)
+    {
+      if (__r->_M_is_balanced)
+	{
+	  _S_add_leaf_to_forest(__r, __forest);
+	  return;
+	}
+
+      {
+	_RopeConcatenation* __c = (_RopeConcatenation*)__r;
+	
+	_S_add_to_forest(__c->_M_left, __forest);
+	_S_add_to_forest(__c->_M_right, __forest);
+      }
+    }
+
+
+  template <class _CharT, class _Alloc>
+    void
+    rope<_CharT, _Alloc>::
+    _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest)
+    {
+      _RopeRep* __insertee;		// included in refcount
+      _RopeRep* __too_tiny = 0;		// included in refcount
+      int __i;				// forest[0..__i-1] is empty
+      size_t __s = __r->_M_size;
+      
+      for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i)
+	{
+	  if (0 != __forest[__i])
+	    {
+#ifndef __GC
+	      _Self_destruct_ptr __old(__too_tiny);
+#endif
+	      __too_tiny = _S_concat_and_set_balanced(__forest[__i],
+						      __too_tiny);
+	      __forest[__i]->_M_unref_nonnil();
+	      __forest[__i] = 0;
+	    }
+	}
+      {
+#ifndef __GC
+	_Self_destruct_ptr __old(__too_tiny);
+#endif
+	__insertee = _S_concat_and_set_balanced(__too_tiny, __r);
+      }
+      // Too_tiny dead, and no longer included in refcount.
+      // Insertee is live and included.
+      for (;; ++__i)
+	{
+	  if (0 != __forest[__i])
+	    {
+#ifndef __GC
+	      _Self_destruct_ptr __old(__insertee);
+#endif
+	      __insertee = _S_concat_and_set_balanced(__forest[__i],
+						      __insertee);
+	      __forest[__i]->_M_unref_nonnil();
+	      __forest[__i] = 0;
+	    }
+	  if (__i == int(__detail::_S_max_rope_depth)
+	      || __insertee->_M_size < _S_min_len[__i+1])
+	    {
+	      __forest[__i] = __insertee;
+	      // refcount is OK since __insertee is now dead.
+	      return;
+	    }
+	}
+    }
+
+  template <class _CharT, class _Alloc>
+    _CharT
+    rope<_CharT, _Alloc>::
+    _S_fetch(_RopeRep* __r, size_type __i)
+    {
+      __GC_CONST _CharT* __cstr = __r->_M_c_string;
+      
+      if (0 != __cstr)
+	return __cstr[__i];
+      for(;;)
+	{
+	  switch(__r->_M_tag)
+	    {
+	    case __detail::_S_concat:
+	      {
+		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
+		_RopeRep* __left = __c->_M_left;
+		size_t __left_len = __left->_M_size;
+		
+		if (__i >= __left_len)
+		  {
+		    __i -= __left_len;
+		    __r = __c->_M_right;
+		  } 
+		else
+		  __r = __left;
+	      }
+	      break;
+	    case __detail::_S_leaf:
+	      {
+		_RopeLeaf* __l = (_RopeLeaf*)__r;
+		return __l->_M_data[__i];
+	      }
+	    case __detail::_S_function:
+	    case __detail::_S_substringfn:
+	      {
+		_RopeFunction* __f = (_RopeFunction*)__r;
+		_CharT __result;
+		
+		(*(__f->_M_fn))(__i, 1, &__result);
+		return __result;
+	      }
+	    }
+	}
+    }
+  
+#ifndef __GC
+  // Return a uniquely referenced character slot for the given
+  // position, or 0 if that's not possible.
+  template <class _CharT, class _Alloc>
+    _CharT*
+    rope<_CharT, _Alloc>::
+    _S_fetch_ptr(_RopeRep* __r, size_type __i)
+    {
+      _RopeRep* __clrstack[__detail::_S_max_rope_depth];
+      size_t __csptr = 0;
+      
+      for(;;)
+	{
+	  if (__r->_M_ref_count > 1)
+	    return 0;
+	  switch(__r->_M_tag)
+	    {
+	    case __detail::_S_concat:
+	      {
+		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
+		_RopeRep* __left = __c->_M_left;
+		size_t __left_len = __left->_M_size;
+		
+		if (__c->_M_c_string != 0)
+		  __clrstack[__csptr++] = __c;
+		if (__i >= __left_len)
+		  {
+		    __i -= __left_len;
+		    __r = __c->_M_right;
+		  } 
+		else
+		  __r = __left;
+	      }
+	      break;
+	    case __detail::_S_leaf:
+	      {
+		_RopeLeaf* __l = (_RopeLeaf*)__r;
+		if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0)
+		  __clrstack[__csptr++] = __l;
+		while (__csptr > 0)
+		  {
+		    -- __csptr;
+		    _RopeRep* __d = __clrstack[__csptr];
+		    __d->_M_free_c_string();
+		    __d->_M_c_string = 0;
+		  }
+		return __l->_M_data + __i;
+	      }
+	    case __detail::_S_function:
+	    case __detail::_S_substringfn:
+	      return 0;
+	    }
+	}
+    }
+#endif /* __GC */
+
+  // The following could be implemented trivially using
+  // lexicographical_compare_3way.
+  // We do a little more work to avoid dealing with rope iterators for
+  // flat strings.
+  template <class _CharT, class _Alloc>
+    int
+    rope<_CharT, _Alloc>::
+    _S_compare (const _RopeRep* __left, const _RopeRep* __right)
+    {
+      size_t __left_len;
+      size_t __right_len;
+      
+      if (0 == __right)
+	return 0 != __left;
+      if (0 == __left)
+	return -1;
+      __left_len = __left->_M_size;
+      __right_len = __right->_M_size;
+      if (__detail::_S_leaf == __left->_M_tag)
+	{
+	  _RopeLeaf* __l = (_RopeLeaf*) __left;
+	  if (__detail::_S_leaf == __right->_M_tag)
+	    {
+	      _RopeLeaf* __r = (_RopeLeaf*) __right;
+	      return lexicographical_compare_3way(__l->_M_data,
+						  __l->_M_data + __left_len,
+						  __r->_M_data, __r->_M_data
+						  + __right_len);
+	    }
+	  else
+	    {
+	      const_iterator __rstart(__right, 0);
+	      const_iterator __rend(__right, __right_len);
+	      return lexicographical_compare_3way(__l->_M_data, __l->_M_data
+						  + __left_len,
+						  __rstart, __rend);
+	    }
+	}
+      else
+	{
+	  const_iterator __lstart(__left, 0);
+	  const_iterator __lend(__left, __left_len);
+	  if (__detail::_S_leaf == __right->_M_tag)
+	    {
+	      _RopeLeaf* __r = (_RopeLeaf*) __right;
+	      return lexicographical_compare_3way(__lstart, __lend,
+						  __r->_M_data, __r->_M_data
+						  + __right_len);
+	    }
+	  else
+	    {
+	      const_iterator __rstart(__right, 0);
+	      const_iterator __rend(__right, __right_len);
+	      return lexicographical_compare_3way(__lstart, __lend,
+						  __rstart, __rend);
+	    }
+	}
+    }
+
+  // Assignment to reference proxies.
+  template <class _CharT, class _Alloc>
+    _Rope_char_ref_proxy<_CharT, _Alloc>&
+    _Rope_char_ref_proxy<_CharT, _Alloc>::
+    operator=(_CharT __c)
+    {
+      _RopeRep* __old = _M_root->_M_tree_ptr;
+#ifndef __GC
+      // First check for the case in which everything is uniquely
+      // referenced.  In that case we can do this destructively.
+      _CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos);
+      if (0 != __ptr)
+	{
+	  *__ptr = __c;
+	  return *this;
+	}
+#endif
+      _Self_destruct_ptr __left(_My_rope::_S_substring(__old, 0, _M_pos));
+      _Self_destruct_ptr __right(_My_rope::_S_substring(__old, _M_pos + 1,
+							__old->_M_size));
+      _Self_destruct_ptr __result_left(_My_rope::
+				       _S_destr_concat_char_iter(__left,
+								 &__c, 1));
+
+      _RopeRep* __result = _My_rope::_S_concat(__result_left, __right);
+#ifndef __GC
+      _RopeRep::_S_unref(__old);
+#endif
+      _M_root->_M_tree_ptr = __result;
+      return *this;
+    }
+
+  template <class _CharT, class _Alloc>
+    inline _Rope_char_ref_proxy<_CharT, _Alloc>::
+    operator _CharT() const
+    {
+      if (_M_current_valid)
+	return _M_current;
+      else
+	return _My_rope::_S_fetch(_M_root->_M_tree_ptr, _M_pos);
+    }
+
+  template <class _CharT, class _Alloc>
+    _Rope_char_ptr_proxy<_CharT, _Alloc>
+    _Rope_char_ref_proxy<_CharT, _Alloc>::
+    operator&() const
+    { return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this); }
+
+  template <class _CharT, class _Alloc>
+    rope<_CharT, _Alloc>::
+    rope(size_t __n, _CharT __c, const allocator_type& __a)
+    : _Base(__a)
+    {
+      rope<_CharT,_Alloc> __result;
+      const size_t __exponentiate_threshold = 32;
+      size_t __exponent;
+      size_t __rest;
+      _CharT* __rest_buffer;
+      _RopeRep* __remainder;
+      rope<_CharT, _Alloc> __remainder_rope;
+
+      if (0 == __n)
+	return;
+
+      __exponent = __n / __exponentiate_threshold;
+      __rest = __n % __exponentiate_threshold;
+      if (0 == __rest)
+	__remainder = 0;
+      else
+	{
+	  __rest_buffer = this->_Data_allocate(_S_rounded_up_size(__rest));
+	  __uninitialized_fill_n_a(__rest_buffer, __rest, __c,
+				   _M_get_allocator());
+	  _S_cond_store_eos(__rest_buffer[__rest]);
+	  __try
+	    { __remainder = _S_new_RopeLeaf(__rest_buffer, __rest,
+					    _M_get_allocator()); }
+	  __catch(...)
+	    {
+	      _RopeRep::__STL_FREE_STRING(__rest_buffer, __rest,
+					  _M_get_allocator());
+	      __throw_exception_again;
+	    }
+	}
+      __remainder_rope._M_tree_ptr = __remainder;
+      if (__exponent != 0)
+	{
+	  _CharT* __base_buffer =
+	    this->_Data_allocate(_S_rounded_up_size(__exponentiate_threshold));
+	  _RopeLeaf* __base_leaf;
+	  rope __base_rope;
+	  __uninitialized_fill_n_a(__base_buffer, __exponentiate_threshold, __c,
+				   _M_get_allocator());
+	  _S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
+	  __try
+	    {
+	      __base_leaf = _S_new_RopeLeaf(__base_buffer,
+					    __exponentiate_threshold,
+					    _M_get_allocator());
+	    }
+	  __catch(...)
+	    {
+	      _RopeRep::__STL_FREE_STRING(__base_buffer,
+					  __exponentiate_threshold,
+					  _M_get_allocator());
+	      __throw_exception_again;
+	    }
+	  __base_rope._M_tree_ptr = __base_leaf;
+	  if (1 == __exponent)
+	    __result = __base_rope;
+	  else
+	    __result = power(__base_rope, __exponent,
+			     _Rope_Concat_fn<_CharT, _Alloc>());
+	    
+	  if (0 != __remainder)
+	    __result += __remainder_rope;
+	}
+      else
+	__result = __remainder_rope;
+	  
+      this->_M_tree_ptr = __result._M_tree_ptr;
+      this->_M_tree_ptr->_M_ref_nonnil();
+    }
+      
+  template<class _CharT, class _Alloc>
+    _CharT
+    rope<_CharT, _Alloc>::_S_empty_c_str[1];
+      
+  template<class _CharT, class _Alloc>
+    const _CharT*
+    rope<_CharT, _Alloc>::
+    c_str() const
+    {
+      if (0 == this->_M_tree_ptr)
+	{
+	  _S_empty_c_str[0] = _S_eos((_CharT*)0);  // Possibly redundant,
+	                                           // but probably fast.
+	  return _S_empty_c_str;
+	}
+      __gthread_mutex_lock (&this->_M_tree_ptr->_M_c_string_lock);
+      __GC_CONST _CharT* __result = this->_M_tree_ptr->_M_c_string;
+      if (0 == __result)
+	{
+	  size_t __s = size();
+	  __result = this->_Data_allocate(__s + 1);
+	  _S_flatten(this->_M_tree_ptr, __result);
+	  __result[__s] = _S_eos((_CharT*)0);
+	  this->_M_tree_ptr->_M_c_string = __result;
+	}
+      __gthread_mutex_unlock (&this->_M_tree_ptr->_M_c_string_lock);
+      return(__result);
+    }
+  
+  template<class _CharT, class _Alloc>
+    const _CharT* rope<_CharT, _Alloc>::
+    replace_with_c_str()
+    {
+      if (0 == this->_M_tree_ptr)
+	{
+	  _S_empty_c_str[0] = _S_eos((_CharT*)0);
+	  return _S_empty_c_str;
+	}
+      __GC_CONST _CharT* __old_c_string = this->_M_tree_ptr->_M_c_string;
+      if (__detail::_S_leaf == this->_M_tree_ptr->_M_tag
+	  && 0 != __old_c_string)
+	return(__old_c_string);
+      size_t __s = size();
+      _CharT* __result = this->_Data_allocate(_S_rounded_up_size(__s));
+      _S_flatten(this->_M_tree_ptr, __result);
+      __result[__s] = _S_eos((_CharT*)0);
+      this->_M_tree_ptr->_M_unref_nonnil();
+      this->_M_tree_ptr = _S_new_RopeLeaf(__result, __s,
+					  this->_M_get_allocator());
+      return(__result);
+    }
+
+  // Algorithm specializations.  More should be added.
+  
+  template<class _Rope_iterator>  // was templated on CharT and Alloc
+    void		          // VC++ workaround
+    _Rope_rotate(_Rope_iterator __first,
+		 _Rope_iterator __middle,
+		 _Rope_iterator __last)
+    {
+      typedef typename _Rope_iterator::value_type _CharT;
+      typedef typename _Rope_iterator::_allocator_type _Alloc;
+      
+      rope<_CharT, _Alloc>& __r(__first.container());
+      rope<_CharT, _Alloc> __prefix = __r.substr(0, __first.index());
+      rope<_CharT, _Alloc> __suffix =
+	__r.substr(__last.index(), __r.size() - __last.index());
+      rope<_CharT, _Alloc> __part1 =
+	__r.substr(__middle.index(), __last.index() - __middle.index());
+      rope<_CharT, _Alloc> __part2 =
+	__r.substr(__first.index(), __middle.index() - __first.index());
+      __r = __prefix;
+      __r += __part1;
+      __r += __part2;
+      __r += __suffix;
+    }
+
+#if !defined(__GNUC__)
+  // Appears to confuse g++
+  inline void
+  rotate(_Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __first,
+	 _Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __middle,
+	 _Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __last)
+  { _Rope_rotate(__first, __middle, __last); }
+#endif
+
+# if 0
+  // Probably not useful for several reasons:
+  // - for SGIs 7.1 compiler and probably some others,
+  //   this forces lots of rope<wchar_t, ...> instantiations, creating a
+  //   code bloat and compile time problem.  (Fixed in 7.2.)
+  // - wchar_t is 4 bytes wide on most UNIX platforms, making it
+  //   unattractive for unicode strings.  Unsigned short may be a better
+  //   character type.
+  inline void
+  rotate(_Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __first,
+	 _Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __middle,
+	 _Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __last)
+  { _Rope_rotate(__first, __middle, __last); }
+# endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/slist b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/slist
new file mode 100644
index 000000000..e678190bf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/slist
@@ -0,0 +1,1083 @@
+// Singly-linked list implementation -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file ext/slist
+ *  This file is a GNU extension to the Standard C++ Library (possibly
+ *  containing extensions from the HP/SGI STL subset). 
+ */
+
+#ifndef _SLIST
+#define _SLIST 1
+
+#include <algorithm>
+#include <bits/allocator.h>
+#include <bits/stl_construct.h>
+#include <bits/stl_uninitialized.h>
+#include <bits/concept_check.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::size_t;
+  using std::ptrdiff_t;
+  using std::_Construct;
+  using std::_Destroy;
+  using std::allocator;
+  using std::__true_type;
+  using std::__false_type;
+
+  struct _Slist_node_base
+  {
+    _Slist_node_base* _M_next;
+  };
+  
+  inline _Slist_node_base*
+  __slist_make_link(_Slist_node_base* __prev_node,
+		    _Slist_node_base* __new_node)
+  {
+    __new_node->_M_next = __prev_node->_M_next;
+    __prev_node->_M_next = __new_node;
+    return __new_node;
+  }
+
+  inline _Slist_node_base*
+  __slist_previous(_Slist_node_base* __head,
+		   const _Slist_node_base* __node)
+  {
+    while (__head && __head->_M_next != __node)
+      __head = __head->_M_next;
+    return __head;
+  }
+
+  inline const _Slist_node_base*
+  __slist_previous(const _Slist_node_base* __head,
+		   const _Slist_node_base* __node)
+  {
+    while (__head && __head->_M_next != __node)
+      __head = __head->_M_next;
+    return __head;
+  }
+
+  inline void
+  __slist_splice_after(_Slist_node_base* __pos,
+		       _Slist_node_base* __before_first,
+		       _Slist_node_base* __before_last)
+  {
+    if (__pos != __before_first && __pos != __before_last)
+      {
+	_Slist_node_base* __first = __before_first->_M_next;
+	_Slist_node_base* __after = __pos->_M_next;
+	__before_first->_M_next = __before_last->_M_next;
+	__pos->_M_next = __first;
+	__before_last->_M_next = __after;
+      }
+  }
+
+  inline void
+  __slist_splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
+  {
+    _Slist_node_base* __before_last = __slist_previous(__head, 0);
+    if (__before_last != __head)
+      {
+	_Slist_node_base* __after = __pos->_M_next;
+	__pos->_M_next = __head->_M_next;
+	__head->_M_next = 0;
+	__before_last->_M_next = __after;
+      }
+  }
+
+  inline _Slist_node_base*
+  __slist_reverse(_Slist_node_base* __node)
+  {
+    _Slist_node_base* __result = __node;
+    __node = __node->_M_next;
+    __result->_M_next = 0;
+    while(__node)
+      {
+	_Slist_node_base* __next = __node->_M_next;
+	__node->_M_next = __result;
+	__result = __node;
+	__node = __next;
+      }
+    return __result;
+  }
+
+  inline size_t
+  __slist_size(_Slist_node_base* __node)
+  {
+    size_t __result = 0;
+    for (; __node != 0; __node = __node->_M_next)
+      ++__result;
+    return __result;
+  }
+
+  template <class _Tp>
+    struct _Slist_node : public _Slist_node_base
+    {
+      _Tp _M_data;
+    };
+
+  struct _Slist_iterator_base
+  {
+    typedef size_t                    size_type;
+    typedef ptrdiff_t                 difference_type;
+    typedef std::forward_iterator_tag iterator_category;
+
+    _Slist_node_base* _M_node;
+    
+    _Slist_iterator_base(_Slist_node_base* __x)
+    : _M_node(__x) {}
+
+    void
+    _M_incr()
+    { _M_node = _M_node->_M_next; }
+
+    bool
+    operator==(const _Slist_iterator_base& __x) const
+    { return _M_node == __x._M_node; }
+
+    bool
+    operator!=(const _Slist_iterator_base& __x) const
+    { return _M_node != __x._M_node; }
+  };
+
+  template <class _Tp, class _Ref, class _Ptr>
+    struct _Slist_iterator : public _Slist_iterator_base
+    {
+      typedef _Slist_iterator<_Tp, _Tp&, _Tp*>             iterator;
+      typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
+      typedef _Slist_iterator<_Tp, _Ref, _Ptr>             _Self;
+
+      typedef _Tp              value_type;
+      typedef _Ptr             pointer;
+      typedef _Ref             reference;
+      typedef _Slist_node<_Tp> _Node;
+
+      explicit
+      _Slist_iterator(_Node* __x)
+      : _Slist_iterator_base(__x) {}
+
+      _Slist_iterator()
+      : _Slist_iterator_base(0) {}
+
+      _Slist_iterator(const iterator& __x)
+      : _Slist_iterator_base(__x._M_node) {}
+
+      reference
+      operator*() const
+      { return ((_Node*) _M_node)->_M_data; }
+
+      pointer
+      operator->() const
+      { return &(operator*()); }
+
+      _Self&
+      operator++()
+      {
+	_M_incr();
+	return *this;
+      }
+
+      _Self
+      operator++(int)
+      {
+	_Self __tmp = *this;
+	_M_incr();
+	return __tmp;
+      }
+    };
+
+  template <class _Tp, class _Alloc>
+    struct _Slist_base
+    : public _Alloc::template rebind<_Slist_node<_Tp> >::other
+    {
+      typedef typename _Alloc::template rebind<_Slist_node<_Tp> >::other
+        _Node_alloc;
+      typedef _Alloc allocator_type;
+
+      allocator_type
+      get_allocator() const
+      { return *static_cast<const _Node_alloc*>(this); }
+
+      _Slist_base(const allocator_type& __a)
+      : _Node_alloc(__a)
+      { this->_M_head._M_next = 0; }
+
+      ~_Slist_base()
+      { _M_erase_after(&this->_M_head, 0); }
+
+    protected:
+      _Slist_node_base _M_head;
+
+      _Slist_node<_Tp>*
+      _M_get_node()
+      { return _Node_alloc::allocate(1); }
+  
+      void
+      _M_put_node(_Slist_node<_Tp>* __p)
+      { _Node_alloc::deallocate(__p, 1); }
+
+    protected:
+      _Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
+      {
+	_Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
+	_Slist_node_base* __next_next = __next->_M_next;
+	__pos->_M_next = __next_next;
+	get_allocator().destroy(&__next->_M_data);
+	_M_put_node(__next);
+	return __next_next;
+      }
+      _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*);
+    };
+
+  template <class _Tp, class _Alloc>
+    _Slist_node_base*
+    _Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
+					    _Slist_node_base* __last_node)
+    {
+      _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
+      while (__cur != __last_node)
+	{
+	  _Slist_node<_Tp>* __tmp = __cur;
+	  __cur = (_Slist_node<_Tp>*) __cur->_M_next;
+	  get_allocator().destroy(&__tmp->_M_data);
+	  _M_put_node(__tmp);
+	}
+      __before_first->_M_next = __last_node;
+      return __last_node;
+    }
+
+  /**
+   *  This is an SGI extension.
+   *  @ingroup SGIextensions
+   *  @doctodo
+   */
+  template <class _Tp, class _Alloc = allocator<_Tp> >
+    class slist : private _Slist_base<_Tp,_Alloc>
+    {
+      // concept requirements
+      __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+	
+    private:
+      typedef _Slist_base<_Tp,_Alloc> _Base;
+
+    public:
+      typedef _Tp               value_type;
+      typedef value_type*       pointer;
+      typedef const value_type* const_pointer;
+      typedef value_type&       reference;
+      typedef const value_type& const_reference;
+      typedef size_t            size_type;
+      typedef ptrdiff_t         difference_type;
+      
+      typedef _Slist_iterator<_Tp, _Tp&, _Tp*>             iterator;
+      typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
+      
+      typedef typename _Base::allocator_type allocator_type;
+
+      allocator_type
+      get_allocator() const
+      { return _Base::get_allocator(); }
+
+    private:
+      typedef _Slist_node<_Tp>      _Node;
+      typedef _Slist_node_base      _Node_base;
+      typedef _Slist_iterator_base  _Iterator_base;
+      
+      _Node*
+      _M_create_node(const value_type& __x)
+      {
+	_Node* __node = this->_M_get_node();
+	__try
+	  {
+	    get_allocator().construct(&__node->_M_data, __x);
+	    __node->_M_next = 0;
+	  }
+	__catch(...)
+	  {
+	    this->_M_put_node(__node);
+	    __throw_exception_again;
+	  }
+	return __node;
+      }
+
+      _Node*
+      _M_create_node()
+      {
+	_Node* __node = this->_M_get_node();
+	__try
+	  {
+	    get_allocator().construct(&__node->_M_data, value_type());
+	    __node->_M_next = 0;
+	  }
+	__catch(...)
+	  {
+	    this->_M_put_node(__node);
+	    __throw_exception_again;
+	  }
+	return __node;
+      }
+
+    public:
+      explicit
+      slist(const allocator_type& __a = allocator_type())
+      : _Base(__a) {}
+
+      slist(size_type __n, const value_type& __x,
+	    const allocator_type& __a =  allocator_type())
+      : _Base(__a)
+      { _M_insert_after_fill(&this->_M_head, __n, __x); }
+
+      explicit
+      slist(size_type __n)
+      : _Base(allocator_type())
+      { _M_insert_after_fill(&this->_M_head, __n, value_type()); }
+
+      // We don't need any dispatching tricks here, because
+      // _M_insert_after_range already does them.
+      template <class _InputIterator>
+        slist(_InputIterator __first, _InputIterator __last,
+	      const allocator_type& __a =  allocator_type())
+	: _Base(__a)
+        { _M_insert_after_range(&this->_M_head, __first, __last); }
+
+      slist(const slist& __x)
+      : _Base(__x.get_allocator())
+      { _M_insert_after_range(&this->_M_head, __x.begin(), __x.end()); }
+
+      slist&
+      operator= (const slist& __x);
+
+      ~slist() {}
+
+    public:
+      // assign(), a generalized assignment member function.  Two
+      // versions: one that takes a count, and one that takes a range.
+      // The range version is a member template, so we dispatch on whether
+      // or not the type is an integer.
+      
+      void
+      assign(size_type __n, const _Tp& __val)
+      { _M_fill_assign(__n, __val); }
+
+      void
+      _M_fill_assign(size_type __n, const _Tp& __val);
+
+      template <class _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  _M_assign_dispatch(__first, __last, _Integral());
+	}
+
+      template <class _Integer>
+      void
+      _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+      { _M_fill_assign((size_type) __n, (_Tp) __val); }
+
+      template <class _InputIterator>
+      void
+      _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+			 __false_type);
+
+    public:
+
+      iterator
+      begin()
+      { return iterator((_Node*)this->_M_head._M_next); }
+
+      const_iterator
+      begin() const
+      { return const_iterator((_Node*)this->_M_head._M_next);}
+
+      iterator
+      end()
+      { return iterator(0); }
+
+      const_iterator
+      end() const
+      { return const_iterator(0); }
+
+      // Experimental new feature: before_begin() returns a
+      // non-dereferenceable iterator that, when incremented, yields
+      // begin().  This iterator may be used as the argument to
+      // insert_after, erase_after, etc.  Note that even for an empty
+      // slist, before_begin() is not the same iterator as end().  It
+      // is always necessary to increment before_begin() at least once to
+      // obtain end().
+      iterator
+      before_begin()
+      { return iterator((_Node*) &this->_M_head); }
+
+      const_iterator
+      before_begin() const
+      { return const_iterator((_Node*) &this->_M_head); }
+
+      size_type
+      size() const
+      { return __slist_size(this->_M_head._M_next); }
+
+      size_type
+      max_size() const
+      { return size_type(-1); }
+
+      bool
+      empty() const
+      { return this->_M_head._M_next == 0; }
+
+      void
+      swap(slist& __x)
+      { std::swap(this->_M_head._M_next, __x._M_head._M_next); }
+
+    public:
+
+      reference
+      front()
+      { return ((_Node*) this->_M_head._M_next)->_M_data; }
+
+      const_reference
+      front() const
+      { return ((_Node*) this->_M_head._M_next)->_M_data; }
+
+      void
+      push_front(const value_type& __x)
+      { __slist_make_link(&this->_M_head, _M_create_node(__x)); }
+
+      void
+      push_front()
+      { __slist_make_link(&this->_M_head, _M_create_node()); }
+
+      void
+      pop_front()
+      {
+	_Node* __node = (_Node*) this->_M_head._M_next;
+	this->_M_head._M_next = __node->_M_next;
+	get_allocator().destroy(&__node->_M_data);
+	this->_M_put_node(__node);
+      }
+
+      iterator
+      previous(const_iterator __pos)
+      { return iterator((_Node*) __slist_previous(&this->_M_head,
+						  __pos._M_node)); }
+
+      const_iterator
+      previous(const_iterator __pos) const
+      { return const_iterator((_Node*) __slist_previous(&this->_M_head,
+							__pos._M_node)); }
+
+    private:
+      _Node*
+      _M_insert_after(_Node_base* __pos, const value_type& __x)
+      { return (_Node*) (__slist_make_link(__pos, _M_create_node(__x))); }
+
+      _Node*
+      _M_insert_after(_Node_base* __pos)
+      { return (_Node*) (__slist_make_link(__pos, _M_create_node())); }
+
+      void
+      _M_insert_after_fill(_Node_base* __pos,
+			   size_type __n, const value_type& __x)
+      {
+	for (size_type __i = 0; __i < __n; ++__i)
+	  __pos = __slist_make_link(__pos, _M_create_node(__x));
+      }
+
+      // Check whether it's an integral type.  If so, it's not an iterator.
+      template <class _InIterator>
+        void
+        _M_insert_after_range(_Node_base* __pos,
+			      _InIterator __first, _InIterator __last)
+        {
+	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
+	  _M_insert_after_range(__pos, __first, __last, _Integral());
+	}
+
+      template <class _Integer>
+        void
+        _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x,
+			      __true_type)
+        { _M_insert_after_fill(__pos, __n, __x); }
+
+      template <class _InIterator>
+        void
+        _M_insert_after_range(_Node_base* __pos,
+			      _InIterator __first, _InIterator __last,
+			      __false_type)
+        {
+	  while (__first != __last)
+	    {
+	      __pos = __slist_make_link(__pos, _M_create_node(*__first));
+	      ++__first;
+	    }
+	}
+
+    public:
+      iterator
+      insert_after(iterator __pos, const value_type& __x)
+      { return iterator(_M_insert_after(__pos._M_node, __x)); }
+
+      iterator
+      insert_after(iterator __pos)
+      { return insert_after(__pos, value_type()); }
+
+      void
+      insert_after(iterator __pos, size_type __n, const value_type& __x)
+      { _M_insert_after_fill(__pos._M_node, __n, __x); }
+
+      // We don't need any dispatching tricks here, because
+      // _M_insert_after_range already does them.
+      template <class _InIterator>
+        void
+        insert_after(iterator __pos, _InIterator __first, _InIterator __last)
+        { _M_insert_after_range(__pos._M_node, __first, __last); }
+
+      iterator
+      insert(iterator __pos, const value_type& __x)
+      { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
+							 __pos._M_node),
+					__x)); }
+
+      iterator
+      insert(iterator __pos)
+      { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
+							 __pos._M_node),
+					value_type())); }
+
+      void
+      insert(iterator __pos, size_type __n, const value_type& __x)
+      { _M_insert_after_fill(__slist_previous(&this->_M_head, __pos._M_node),
+			     __n, __x); }
+
+      // We don't need any dispatching tricks here, because
+      // _M_insert_after_range already does them.
+      template <class _InIterator>
+        void
+        insert(iterator __pos, _InIterator __first, _InIterator __last)
+        { _M_insert_after_range(__slist_previous(&this->_M_head, __pos._M_node),
+				__first, __last); }
+
+    public:
+      iterator
+      erase_after(iterator __pos)
+      { return iterator((_Node*) this->_M_erase_after(__pos._M_node)); }
+
+      iterator
+      erase_after(iterator __before_first, iterator __last)
+      { 
+	return iterator((_Node*) this->_M_erase_after(__before_first._M_node,
+						      __last._M_node));
+      }
+
+      iterator
+      erase(iterator __pos)
+      { 
+	return iterator((_Node*) this->_M_erase_after
+			(__slist_previous(&this->_M_head, __pos._M_node)));
+      }
+
+      iterator
+      erase(iterator __first, iterator __last)
+      { 
+	return iterator((_Node*) this->_M_erase_after
+			(__slist_previous(&this->_M_head, __first._M_node),
+			 __last._M_node));
+      }
+      
+      void
+      resize(size_type new_size, const _Tp& __x);
+
+      void
+      resize(size_type new_size)
+      { resize(new_size, _Tp()); }
+
+      void
+      clear()
+      { this->_M_erase_after(&this->_M_head, 0); }
+
+    public:
+      // Moves the range [__before_first + 1, __before_last + 1) to *this,
+      //  inserting it immediately after __pos.  This is constant time.
+      void
+      splice_after(iterator __pos,
+		   iterator __before_first, iterator __before_last)
+      {
+	if (__before_first != __before_last)
+	  __slist_splice_after(__pos._M_node, __before_first._M_node,
+			       __before_last._M_node);
+      }
+
+      // Moves the element that follows __prev to *this, inserting it
+      // immediately after __pos.  This is constant time.
+      void
+      splice_after(iterator __pos, iterator __prev)
+      { __slist_splice_after(__pos._M_node,
+			     __prev._M_node, __prev._M_node->_M_next); }
+
+      // Removes all of the elements from the list __x to *this, inserting
+      // them immediately after __pos.  __x must not be *this.  Complexity:
+      // linear in __x.size().
+      void
+      splice_after(iterator __pos, slist& __x)
+      { __slist_splice_after(__pos._M_node, &__x._M_head); }
+
+      // Linear in distance(begin(), __pos), and linear in __x.size().
+      void
+      splice(iterator __pos, slist& __x)
+      {
+	if (__x._M_head._M_next)
+	  __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
+			       &__x._M_head,
+			       __slist_previous(&__x._M_head, 0)); }
+
+      // Linear in distance(begin(), __pos), and in distance(__x.begin(), __i).
+      void
+      splice(iterator __pos, slist& __x, iterator __i)
+      { __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
+			     __slist_previous(&__x._M_head, __i._M_node),
+			     __i._M_node); }
+
+      // Linear in distance(begin(), __pos), in distance(__x.begin(), __first),
+      // and in distance(__first, __last).
+      void
+      splice(iterator __pos, slist& __x, iterator __first, iterator __last)
+      {
+	if (__first != __last)
+	  __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
+			       __slist_previous(&__x._M_head, __first._M_node),
+			       __slist_previous(__first._M_node,
+						__last._M_node));
+      }
+
+    public:
+      void
+      reverse()
+      {
+	if (this->_M_head._M_next)
+	  this->_M_head._M_next = __slist_reverse(this->_M_head._M_next);
+      }
+
+      void
+      remove(const _Tp& __val);
+
+      void
+      unique();
+      
+      void
+      merge(slist& __x);
+      
+      void
+      sort();
+
+      template <class _Predicate>
+        void
+        remove_if(_Predicate __pred);
+
+      template <class _BinaryPredicate>
+        void
+        unique(_BinaryPredicate __pred);
+
+      template <class _StrictWeakOrdering>
+        void
+        merge(slist&, _StrictWeakOrdering);
+
+      template <class _StrictWeakOrdering>
+        void
+        sort(_StrictWeakOrdering __comp);
+    };
+
+  template <class _Tp, class _Alloc>
+    slist<_Tp, _Alloc>&
+    slist<_Tp, _Alloc>::operator=(const slist<_Tp, _Alloc>& __x)
+    {
+      if (&__x != this)
+	{
+	  _Node_base* __p1 = &this->_M_head;
+	  _Node* __n1 = (_Node*) this->_M_head._M_next;
+	  const _Node* __n2 = (const _Node*) __x._M_head._M_next;
+	  while (__n1 && __n2)
+	    {
+	      __n1->_M_data = __n2->_M_data;
+	      __p1 = __n1;
+	      __n1 = (_Node*) __n1->_M_next;
+	      __n2 = (const _Node*) __n2->_M_next;
+	    }
+	  if (__n2 == 0)
+	    this->_M_erase_after(__p1, 0);
+	  else
+	    _M_insert_after_range(__p1, const_iterator((_Node*)__n2),
+                                  const_iterator(0));
+	}
+      return *this;
+    }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val)
+    {
+      _Node_base* __prev = &this->_M_head;
+      _Node* __node = (_Node*) this->_M_head._M_next;
+      for (; __node != 0 && __n > 0; --__n)
+	{
+	  __node->_M_data = __val;
+	  __prev = __node;
+	  __node = (_Node*) __node->_M_next;
+	}
+      if (__n > 0)
+	_M_insert_after_fill(__prev, __n, __val);
+      else
+	this->_M_erase_after(__prev, 0);
+    }
+  
+  template <class _Tp, class _Alloc>
+    template <class _InputIterator>
+      void
+      slist<_Tp, _Alloc>::_M_assign_dispatch(_InputIterator __first,
+					     _InputIterator __last,
+					     __false_type)
+      {
+	_Node_base* __prev = &this->_M_head;
+	_Node* __node = (_Node*) this->_M_head._M_next;
+	while (__node != 0 && __first != __last)
+	  {
+	    __node->_M_data = *__first;
+	    __prev = __node;
+	    __node = (_Node*) __node->_M_next;
+	    ++__first;
+	  }
+	if (__first != __last)
+	  _M_insert_after_range(__prev, __first, __last);
+	else
+	  this->_M_erase_after(__prev, 0);
+      }
+  
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator==(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    {
+      typedef typename slist<_Tp,_Alloc>::const_iterator const_iterator;
+      const_iterator __end1 = _SL1.end();
+      const_iterator __end2 = _SL2.end();
+      
+      const_iterator __i1 = _SL1.begin();
+      const_iterator __i2 = _SL2.begin();
+      while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
+	{
+	  ++__i1;
+	  ++__i2;
+	}
+      return __i1 == __end1 && __i2 == __end2;
+    }
+
+
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator<(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    { return std::lexicographical_compare(_SL1.begin(), _SL1.end(),
+					  _SL2.begin(), _SL2.end()); }
+
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator!=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    { return !(_SL1 == _SL2); }
+
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator>(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    { return _SL2 < _SL1; }
+
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator<=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    { return !(_SL2 < _SL1); }
+
+  template <class _Tp, class _Alloc>
+    inline bool
+    operator>=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
+    { return !(_SL1 < _SL2); }
+
+  template <class _Tp, class _Alloc>
+    inline void
+    swap(slist<_Tp, _Alloc>& __x, slist<_Tp, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::resize(size_type __len, const _Tp& __x)
+    {
+      _Node_base* __cur = &this->_M_head;
+      while (__cur->_M_next != 0 && __len > 0)
+	{
+	  --__len;
+	  __cur = __cur->_M_next;
+	}
+      if (__cur->_M_next)
+	this->_M_erase_after(__cur, 0);
+      else
+	_M_insert_after_fill(__cur, __len, __x);
+    }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::remove(const _Tp& __val)
+    { 
+      _Node_base* __cur = &this->_M_head;
+      while (__cur && __cur->_M_next)
+	{
+	  if (((_Node*) __cur->_M_next)->_M_data == __val)
+	    this->_M_erase_after(__cur);
+	  else
+	    __cur = __cur->_M_next;
+	}
+    }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::unique()
+    {
+      _Node_base* __cur = this->_M_head._M_next;
+      if (__cur)
+	{
+	  while (__cur->_M_next)
+	    {
+	      if (((_Node*)__cur)->_M_data
+		  == ((_Node*)(__cur->_M_next))->_M_data)
+		this->_M_erase_after(__cur);
+	      else
+		__cur = __cur->_M_next;
+	    }
+	}
+    }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x)
+    {
+      _Node_base* __n1 = &this->_M_head;
+      while (__n1->_M_next && __x._M_head._M_next)
+	{
+	  if (((_Node*) __x._M_head._M_next)->_M_data
+	      < ((_Node*) __n1->_M_next)->_M_data)
+	    __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
+	  __n1 = __n1->_M_next;
+	}
+      if (__x._M_head._M_next)
+	{
+	  __n1->_M_next = __x._M_head._M_next;
+	  __x._M_head._M_next = 0;
+	}
+    }
+
+  template <class _Tp, class _Alloc>
+    void
+    slist<_Tp, _Alloc>::sort()
+    {
+      if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
+	{
+	  slist __carry;
+	  slist __counter[64];
+	  int __fill = 0;
+	  while (!empty())
+	    {
+	      __slist_splice_after(&__carry._M_head,
+				   &this->_M_head, this->_M_head._M_next);
+	      int __i = 0;
+	      while (__i < __fill && !__counter[__i].empty())
+		{
+		  __counter[__i].merge(__carry);
+		  __carry.swap(__counter[__i]);
+		  ++__i;
+		}
+	      __carry.swap(__counter[__i]);
+	      if (__i == __fill)
+		++__fill;
+	    }
+	  
+	  for (int __i = 1; __i < __fill; ++__i)
+	    __counter[__i].merge(__counter[__i-1]);
+	  this->swap(__counter[__fill-1]);
+	}
+    }
+
+  template <class _Tp, class _Alloc>
+    template <class _Predicate>
+      void slist<_Tp, _Alloc>::remove_if(_Predicate __pred)
+      {
+	_Node_base* __cur = &this->_M_head;
+	while (__cur->_M_next)
+	  {
+	    if (__pred(((_Node*) __cur->_M_next)->_M_data))
+	      this->_M_erase_after(__cur);
+	    else
+	      __cur = __cur->_M_next;
+	  }
+      }
+
+  template <class _Tp, class _Alloc>
+    template <class _BinaryPredicate>
+      void
+      slist<_Tp, _Alloc>::unique(_BinaryPredicate __pred)
+      {
+	_Node* __cur = (_Node*) this->_M_head._M_next;
+	if (__cur)
+	  {
+	    while (__cur->_M_next)
+	      {
+		if (__pred(((_Node*)__cur)->_M_data,
+			   ((_Node*)(__cur->_M_next))->_M_data))
+		  this->_M_erase_after(__cur);
+		else
+		  __cur = (_Node*) __cur->_M_next;
+	      }
+	  }
+      }
+
+  template <class _Tp, class _Alloc>
+    template <class _StrictWeakOrdering>
+      void
+      slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x,
+			       _StrictWeakOrdering __comp)
+      {
+	_Node_base* __n1 = &this->_M_head;
+	while (__n1->_M_next && __x._M_head._M_next)
+	  {
+	    if (__comp(((_Node*) __x._M_head._M_next)->_M_data,
+		       ((_Node*) __n1->_M_next)->_M_data))
+	      __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
+	    __n1 = __n1->_M_next;
+	  }
+	if (__x._M_head._M_next)
+	  {
+	    __n1->_M_next = __x._M_head._M_next;
+	    __x._M_head._M_next = 0;
+	  }
+      }
+
+  template <class _Tp, class _Alloc>
+    template <class _StrictWeakOrdering>
+      void
+      slist<_Tp, _Alloc>::sort(_StrictWeakOrdering __comp)
+      {
+	if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
+	  {
+	    slist __carry;
+	    slist __counter[64];
+	    int __fill = 0;
+	    while (!empty())
+	      {
+		__slist_splice_after(&__carry._M_head,
+				     &this->_M_head, this->_M_head._M_next);
+		int __i = 0;
+		while (__i < __fill && !__counter[__i].empty())
+		  {
+		    __counter[__i].merge(__carry, __comp);
+		    __carry.swap(__counter[__i]);
+		    ++__i;
+		  }
+		__carry.swap(__counter[__i]);
+		if (__i == __fill)
+		  ++__fill;
+	      }
+
+	    for (int __i = 1; __i < __fill; ++__i)
+	      __counter[__i].merge(__counter[__i-1], __comp);
+	    this->swap(__counter[__fill-1]);
+	  }
+      }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Specialization of insert_iterator so that insertions will be constant
+  // time rather than linear time.
+  template <class _Tp, class _Alloc>
+    class insert_iterator<__gnu_cxx::slist<_Tp, _Alloc> >
+    {
+    protected:
+      typedef __gnu_cxx::slist<_Tp, _Alloc> _Container;
+      _Container* container;
+      typename _Container::iterator iter;
+
+    public:
+      typedef _Container          container_type;
+      typedef output_iterator_tag iterator_category;
+      typedef void                value_type;
+      typedef void                difference_type;
+      typedef void                pointer;
+      typedef void                reference;
+
+      insert_iterator(_Container& __x, typename _Container::iterator __i)
+      : container(&__x)
+      {
+	if (__i == __x.begin())
+	  iter = __x.before_begin();
+	else
+	  iter = __x.previous(__i);
+      }
+
+      insert_iterator<_Container>&
+      operator=(const typename _Container::value_type& __value)
+      {
+	iter = container->insert_after(iter, __value);
+	return *this;
+      }
+
+      insert_iterator<_Container>&
+      operator*()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++()
+      { return *this; }
+
+      insert_iterator<_Container>&
+      operator++(int)
+      { return *this; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/sso_string_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/sso_string_base.h
new file mode 100644
index 000000000..ccaf419e1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/sso_string_base.h
@@ -0,0 +1,577 @@
+// Short-string-optimized versatile string base -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/sso_string_base.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/vstring.h}
+ */
+
+#ifndef _SSO_STRING_BASE_H
+#define _SSO_STRING_BASE_H 1
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class __sso_string_base
+    : protected __vstring_utility<_CharT, _Traits, _Alloc>
+    {
+    public:
+      typedef _Traits					    traits_type;
+      typedef typename _Traits::char_type		    value_type;
+
+      typedef __vstring_utility<_CharT, _Traits, _Alloc>    _Util_Base;
+      typedef typename _Util_Base::_CharT_alloc_type        _CharT_alloc_type;
+      typedef typename _CharT_alloc_type::size_type	    size_type;
+      
+    private:
+      // Data Members:
+      typename _Util_Base::template _Alloc_hider<_CharT_alloc_type>
+                                                            _M_dataplus;
+      size_type                                             _M_string_length;
+
+      enum { _S_local_capacity = 15 };
+      
+      union
+      {
+	_CharT           _M_local_data[_S_local_capacity + 1];
+	size_type        _M_allocated_capacity;
+      };
+
+      void
+      _M_data(_CharT* __p)
+      { _M_dataplus._M_p = __p; }
+
+      void
+      _M_length(size_type __length)
+      { _M_string_length = __length; }
+
+      void
+      _M_capacity(size_type __capacity)
+      { _M_allocated_capacity = __capacity; }
+
+      bool
+      _M_is_local() const
+      { return _M_data() == _M_local_data; }
+
+      // Create & Destroy
+      _CharT*
+      _M_create(size_type&, size_type);
+      
+      void
+      _M_dispose()
+      {
+	if (!_M_is_local())
+	  _M_destroy(_M_allocated_capacity);
+      }
+
+      void
+      _M_destroy(size_type __size) throw()
+      { _M_get_allocator().deallocate(_M_data(), __size + 1); }
+
+      // _M_construct_aux is used to implement the 21.3.1 para 15 which
+      // requires special behaviour if _InIterator is an integral type
+      template<typename _InIterator>
+        void
+        _M_construct_aux(_InIterator __beg, _InIterator __end, 
+			 std::__false_type)
+	{
+          typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
+          _M_construct(__beg, __end, _Tag());
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 438. Ambiguity in the "do the right thing" clause
+      template<typename _Integer>
+        void
+        _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
+	{ _M_construct_aux_2(static_cast<size_type>(__beg), __end); }
+
+      void
+      _M_construct_aux_2(size_type __req, _CharT __c)
+      { _M_construct(__req, __c); }
+
+      template<typename _InIterator>
+        void
+        _M_construct(_InIterator __beg, _InIterator __end)
+	{
+	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
+	  _M_construct_aux(__beg, __end, _Integral());
+        }
+
+      // For Input Iterators, used in istreambuf_iterators, etc.
+      template<typename _InIterator>
+        void
+        _M_construct(_InIterator __beg, _InIterator __end,
+		     std::input_iterator_tag);
+      
+      // For forward_iterators up to random_access_iterators, used for
+      // string::iterator, _CharT*, etc.
+      template<typename _FwdIterator>
+        void
+        _M_construct(_FwdIterator __beg, _FwdIterator __end,
+		     std::forward_iterator_tag);
+
+      void
+      _M_construct(size_type __req, _CharT __c);
+
+    public:
+      size_type
+      _M_max_size() const
+      { return (_M_get_allocator().max_size() - 1) / 2; }
+
+      _CharT*
+      _M_data() const
+      { return _M_dataplus._M_p; }
+
+      size_type
+      _M_length() const
+      { return _M_string_length; }
+
+      size_type
+      _M_capacity() const
+      {
+	return _M_is_local() ? size_type(_S_local_capacity)
+	                     : _M_allocated_capacity; 
+      }
+
+      bool
+      _M_is_shared() const
+      { return false; }
+
+      void
+      _M_set_leaked() { }
+
+      void
+      _M_leak() { }
+
+      void
+      _M_set_length(size_type __n)
+      {
+	_M_length(__n);
+	traits_type::assign(_M_data()[__n], _CharT());
+      }
+
+      __sso_string_base()
+      : _M_dataplus(_M_local_data)
+      { _M_set_length(0); }
+
+      __sso_string_base(const _Alloc& __a);
+
+      __sso_string_base(const __sso_string_base& __rcs);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      __sso_string_base(__sso_string_base&& __rcs);
+#endif
+
+      __sso_string_base(size_type __n, _CharT __c, const _Alloc& __a);
+
+      template<typename _InputIterator>
+        __sso_string_base(_InputIterator __beg, _InputIterator __end,
+			  const _Alloc& __a);
+
+      ~__sso_string_base()
+      { _M_dispose(); }
+
+      _CharT_alloc_type&
+      _M_get_allocator()
+      { return _M_dataplus; }
+
+      const _CharT_alloc_type&
+      _M_get_allocator() const
+      { return _M_dataplus; }
+
+      void
+      _M_swap(__sso_string_base& __rcs);
+
+      void
+      _M_assign(const __sso_string_base& __rcs);
+
+      void
+      _M_reserve(size_type __res);
+
+      void
+      _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
+		size_type __len2);
+
+      void
+      _M_erase(size_type __pos, size_type __n);
+
+      void
+      _M_clear()
+      { _M_set_length(0); }
+
+      bool
+      _M_compare(const __sso_string_base&) const
+      { return false; }
+    };
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_swap(__sso_string_base& __rcs)
+    {
+      if (this == &__rcs)
+	return;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<_CharT_alloc_type>::_S_do_it(_M_get_allocator(),
+						     __rcs._M_get_allocator());
+
+      if (_M_is_local())
+	if (__rcs._M_is_local())
+	  {
+	    if (_M_length() && __rcs._M_length())
+	      {
+		_CharT __tmp_data[_S_local_capacity + 1];
+		traits_type::copy(__tmp_data, __rcs._M_local_data,
+				  _S_local_capacity + 1);
+		traits_type::copy(__rcs._M_local_data, _M_local_data,
+				  _S_local_capacity + 1);
+		traits_type::copy(_M_local_data, __tmp_data,
+				  _S_local_capacity + 1);
+	      }
+	    else if (__rcs._M_length())
+	      {
+		traits_type::copy(_M_local_data, __rcs._M_local_data,
+				  _S_local_capacity + 1);
+		_M_length(__rcs._M_length());
+		__rcs._M_set_length(0);
+		return;
+	      }
+	    else if (_M_length())
+	      {
+		traits_type::copy(__rcs._M_local_data, _M_local_data,
+				  _S_local_capacity + 1);
+		__rcs._M_length(_M_length());
+		_M_set_length(0);
+		return;
+	      }
+	  }
+	else
+	  {
+	    const size_type __tmp_capacity = __rcs._M_allocated_capacity;
+	    traits_type::copy(__rcs._M_local_data, _M_local_data,
+			      _S_local_capacity + 1);
+	    _M_data(__rcs._M_data());
+	    __rcs._M_data(__rcs._M_local_data);
+	    _M_capacity(__tmp_capacity);
+	  }
+      else
+	{
+	  const size_type __tmp_capacity = _M_allocated_capacity;
+	  if (__rcs._M_is_local())
+	    {
+	      traits_type::copy(_M_local_data, __rcs._M_local_data,
+				_S_local_capacity + 1);
+	      __rcs._M_data(_M_data());
+	      _M_data(_M_local_data);
+	    }
+	  else
+	    {
+	      _CharT* __tmp_ptr = _M_data();
+	      _M_data(__rcs._M_data());
+	      __rcs._M_data(__tmp_ptr);
+	      _M_capacity(__rcs._M_allocated_capacity);
+	    }
+	  __rcs._M_capacity(__tmp_capacity);
+	}
+
+      const size_type __tmp_length = _M_length();
+      _M_length(__rcs._M_length());
+      __rcs._M_length(__tmp_length);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _CharT*
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_create(size_type& __capacity, size_type __old_capacity)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 83.  String::npos vs. string::max_size()
+      if (__capacity > _M_max_size())
+	std::__throw_length_error(__N("__sso_string_base::_M_create"));
+
+      // The below implements an exponential growth policy, necessary to
+      // meet amortized linear time requirements of the library: see
+      // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
+      if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
+	{
+	  __capacity = 2 * __old_capacity;
+	  // Never allocate a string bigger than max_size.
+	  if (__capacity > _M_max_size())
+	    __capacity = _M_max_size();
+	}
+
+      // NB: Need an array of char_type[__capacity], plus a terminating
+      // null char_type() element.
+      return _M_get_allocator().allocate(__capacity + 1);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    __sso_string_base(const _Alloc& __a)
+    : _M_dataplus(__a, _M_local_data)
+    { _M_set_length(0); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    __sso_string_base(const __sso_string_base& __rcs)
+    : _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
+    { _M_construct(__rcs._M_data(), __rcs._M_data() + __rcs._M_length()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    __sso_string_base(__sso_string_base&& __rcs)
+    : _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
+    {
+      if (__rcs._M_is_local())
+	{
+	  if (__rcs._M_length())
+	    traits_type::copy(_M_local_data, __rcs._M_local_data,
+			      _S_local_capacity + 1);
+	}
+      else
+	{
+	  _M_data(__rcs._M_data());
+	  _M_capacity(__rcs._M_allocated_capacity);
+	}
+
+      _M_length(__rcs._M_length());
+      __rcs._M_length(0);
+      __rcs._M_data(__rcs._M_local_data);
+    }
+#endif
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    __sso_string_base(size_type __n, _CharT __c, const _Alloc& __a)
+    : _M_dataplus(__a, _M_local_data)
+    { _M_construct(__n, __c); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InputIterator>
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    __sso_string_base(_InputIterator __beg, _InputIterator __end,
+		      const _Alloc& __a)
+    : _M_dataplus(__a, _M_local_data)
+    { _M_construct(__beg, __end); }
+
+  // NB: This is the special case for Input Iterators, used in
+  // istreambuf_iterators, etc.
+  // Input Iterators have a cost structure very different from
+  // pointers, calling for a different coding style.
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InIterator>
+      void
+      __sso_string_base<_CharT, _Traits, _Alloc>::
+      _M_construct(_InIterator __beg, _InIterator __end,
+		   std::input_iterator_tag)
+      {
+	size_type __len = 0;
+	size_type __capacity = size_type(_S_local_capacity);
+
+	while (__beg != __end && __len < __capacity)
+	  {
+	    _M_data()[__len++] = *__beg;
+	    ++__beg;
+	  }
+	
+	__try
+	  {
+	    while (__beg != __end)
+	      {
+		if (__len == __capacity)
+		  {
+		    // Allocate more space.
+		    __capacity = __len + 1;
+		    _CharT* __another = _M_create(__capacity, __len);
+		    this->_S_copy(__another, _M_data(), __len);
+		    _M_dispose();
+		    _M_data(__another);
+		    _M_capacity(__capacity);
+		  }
+		_M_data()[__len++] = *__beg;
+		++__beg;
+	      }
+	  }
+	__catch(...)
+	  {
+	    _M_dispose();
+	    __throw_exception_again;
+	  }
+
+	_M_set_length(__len);
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    template<typename _InIterator>
+      void
+      __sso_string_base<_CharT, _Traits, _Alloc>::
+      _M_construct(_InIterator __beg, _InIterator __end,
+		   std::forward_iterator_tag)
+      {
+	// NB: Not required, but considered best practice.
+	if (__is_null_pointer(__beg) && __beg != __end)
+	  std::__throw_logic_error(__N("__sso_string_base::"
+				       "_M_construct null not valid"));
+
+	size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
+
+	if (__dnew > size_type(_S_local_capacity))
+	  {
+	    _M_data(_M_create(__dnew, size_type(0)));
+	    _M_capacity(__dnew);
+	  }
+
+	// Check for out_of_range and length_error exceptions.
+	__try
+	  { this->_S_copy_chars(_M_data(), __beg, __end); }
+	__catch(...)
+	  {
+	    _M_dispose();
+	    __throw_exception_again;
+	  }
+
+	_M_set_length(__dnew);
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_construct(size_type __n, _CharT __c)
+    {
+      if (__n > size_type(_S_local_capacity))
+	{
+	  _M_data(_M_create(__n, size_type(0)));
+	  _M_capacity(__n);
+	}
+
+      if (__n)
+	this->_S_assign(_M_data(), __n, __c);
+
+      _M_set_length(__n);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_assign(const __sso_string_base& __rcs)
+    {
+      if (this != &__rcs)
+	{
+	  const size_type __rsize = __rcs._M_length();
+	  const size_type __capacity = _M_capacity();
+
+	  if (__rsize > __capacity)
+	    {
+	      size_type __new_capacity = __rsize;
+	      _CharT* __tmp = _M_create(__new_capacity, __capacity);
+	      _M_dispose();
+	      _M_data(__tmp);
+	      _M_capacity(__new_capacity);
+	    }
+
+	  if (__rsize)
+	    this->_S_copy(_M_data(), __rcs._M_data(), __rsize);
+
+	  _M_set_length(__rsize);
+	}
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_reserve(size_type __res)
+    {
+      // Make sure we don't shrink below the current size.
+      if (__res < _M_length())
+	__res = _M_length();
+
+      const size_type __capacity = _M_capacity();
+      if (__res != __capacity)
+	{
+	  if (__res > __capacity
+	      || __res > size_type(_S_local_capacity))
+	    {
+	      _CharT* __tmp = _M_create(__res, __capacity);
+	      this->_S_copy(__tmp, _M_data(), _M_length() + 1);
+	      _M_dispose();
+	      _M_data(__tmp);
+	      _M_capacity(__res);
+	    }
+	  else if (!_M_is_local())
+	    {
+	      this->_S_copy(_M_local_data, _M_data(), _M_length() + 1);
+	      _M_destroy(__capacity);
+	      _M_data(_M_local_data);
+	    }
+	}
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
+	      size_type __len2)
+    {
+      const size_type __how_much = _M_length() - __pos - __len1;
+      
+      size_type __new_capacity = _M_length() + __len2 - __len1;
+      _CharT* __r = _M_create(__new_capacity, _M_capacity());
+
+      if (__pos)
+	this->_S_copy(__r, _M_data(), __pos);
+      if (__s && __len2)
+	this->_S_copy(__r + __pos, __s, __len2);
+      if (__how_much)
+	this->_S_copy(__r + __pos + __len2,
+		      _M_data() + __pos + __len1, __how_much);
+      
+      _M_dispose();
+      _M_data(__r);
+      _M_capacity(__new_capacity);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    void
+    __sso_string_base<_CharT, _Traits, _Alloc>::
+    _M_erase(size_type __pos, size_type __n)
+    {
+      const size_type __how_much = _M_length() - __pos - __n;
+
+      if (__how_much && __n)
+	this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much);
+
+      _M_set_length(_M_length() - __n);
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _SSO_STRING_BASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_filebuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_filebuf.h
new file mode 100644
index 000000000..5ab2ff7ad
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_filebuf.h
@@ -0,0 +1,162 @@
+// File descriptor layer for filebuf -*- C++ -*-
+
+// Copyright (C) 2002, 2003, 2004, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/stdio_filebuf.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _STDIO_FILEBUF_H
+#define _STDIO_FILEBUF_H 1
+
+#pragma GCC system_header
+
+#include <fstream>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Provides a layer of compatibility for C/POSIX.
+   *  @ingroup io
+   *
+   *  This GNU extension provides extensions for working with standard C
+   *  FILE*'s and POSIX file descriptors.  It must be instantiated by the
+   *  user with the type of character used in the file stream, e.g.,
+   *  stdio_filebuf<char>.
+  */
+  template<typename _CharT, typename _Traits = std::char_traits<_CharT> >
+    class stdio_filebuf : public std::basic_filebuf<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT				        char_type;
+      typedef _Traits				        traits_type;
+      typedef typename traits_type::int_type		int_type;
+      typedef typename traits_type::pos_type		pos_type;
+      typedef typename traits_type::off_type		off_type;
+      typedef std::size_t                               size_t;
+
+    public:
+      /**
+       * deferred initialization
+      */
+      stdio_filebuf() : std::basic_filebuf<_CharT, _Traits>() {}
+
+      /**
+       *  @param  fd  An open file descriptor.
+       *  @param  mode  Same meaning as in a standard filebuf.
+       *  @param  size  Optimal or preferred size of internal buffer, in chars.
+       *
+       *  This constructor associates a file stream buffer with an open
+       *  POSIX file descriptor. The file descriptor will be automatically
+       *  closed when the stdio_filebuf is closed/destroyed.
+      */
+      stdio_filebuf(int __fd, std::ios_base::openmode __mode,
+		    size_t __size = static_cast<size_t>(BUFSIZ));
+
+      /**
+       *  @param  f  An open @c FILE*.
+       *  @param  mode  Same meaning as in a standard filebuf.
+       *  @param  size  Optimal or preferred size of internal buffer, in chars.
+       *                Defaults to system's @c BUFSIZ.
+       *
+       *  This constructor associates a file stream buffer with an open
+       *  C @c FILE*.  The @c FILE* will not be automatically closed when the
+       *  stdio_filebuf is closed/destroyed.
+      */
+      stdio_filebuf(std::__c_file* __f, std::ios_base::openmode __mode,
+		    size_t __size = static_cast<size_t>(BUFSIZ));
+
+      /**
+       *  Closes the external data stream if the file descriptor constructor
+       *  was used.
+      */
+      virtual
+      ~stdio_filebuf();
+
+      /**
+       *  @return  The underlying file descriptor.
+       *
+       *  Once associated with an external data stream, this function can be
+       *  used to access the underlying POSIX file descriptor.  Note that
+       *  there is no way for the library to track what you do with the
+       *  descriptor, so be careful.
+      */
+      int
+      fd() { return this->_M_file.fd(); }
+
+      /**
+       *  @return  The underlying FILE*.
+       *
+       *  This function can be used to access the underlying "C" file pointer.
+       *  Note that there is no way for the library to track what you do
+       *  with the file, so be careful.
+       */
+      std::__c_file*
+      file() { return this->_M_file.file(); }
+    };
+
+  template<typename _CharT, typename _Traits>
+    stdio_filebuf<_CharT, _Traits>::~stdio_filebuf()
+    { }
+
+  template<typename _CharT, typename _Traits>
+    stdio_filebuf<_CharT, _Traits>::
+    stdio_filebuf(int __fd, std::ios_base::openmode __mode, size_t __size)
+    {
+      this->_M_file.sys_open(__fd, __mode);
+      if (this->is_open())
+	{
+	  this->_M_mode = __mode;
+	  this->_M_buf_size = __size;
+	  this->_M_allocate_internal_buffer();
+	  this->_M_reading = false;
+	  this->_M_writing = false;
+	  this->_M_set_buffer(-1);
+	}
+    }
+
+  template<typename _CharT, typename _Traits>
+    stdio_filebuf<_CharT, _Traits>::
+    stdio_filebuf(std::__c_file* __f, std::ios_base::openmode __mode,
+		  size_t __size)
+    {
+      this->_M_file.sys_open(__f, __mode);
+      if (this->is_open())
+	{
+	  this->_M_mode = __mode;
+	  this->_M_buf_size = __size;
+	  this->_M_allocate_internal_buffer();
+	  this->_M_reading = false;
+	  this->_M_writing = false;
+	  this->_M_set_buffer(-1);
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_sync_filebuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_sync_filebuf.h
new file mode 100644
index 000000000..4b6014954
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/stdio_sync_filebuf.h
@@ -0,0 +1,290 @@
+// Iostreams wrapper for stdio FILE* -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/stdio_sync_filebuf.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _STDIO_SYNC_FILEBUF_H
+#define _STDIO_SYNC_FILEBUF_H 1
+
+#pragma GCC system_header
+
+#include <streambuf>
+#include <unistd.h>
+#include <cstdio>
+#include <bits/c++io.h>  // For __c_file
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+#include <cwchar>
+#endif
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Provides a layer of compatibility for C.
+   *  @ingroup io
+   *
+   *  This GNU extension provides extensions for working with standard
+   *  C FILE*'s.  It must be instantiated by the user with the type of
+   *  character used in the file stream, e.g., stdio_filebuf<char>.
+  */
+  template<typename _CharT, typename _Traits = std::char_traits<_CharT> >
+    class stdio_sync_filebuf : public std::basic_streambuf<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT					char_type;
+      typedef _Traits					traits_type;
+      typedef typename traits_type::int_type		int_type;
+      typedef typename traits_type::pos_type		pos_type;
+      typedef typename traits_type::off_type		off_type;
+
+    private:
+      // Underlying stdio FILE
+      std::__c_file* const _M_file;
+
+      // Last character gotten. This is used when pbackfail is
+      // called from basic_streambuf::sungetc()
+      int_type _M_unget_buf;
+
+    public:
+      explicit
+      stdio_sync_filebuf(std::__c_file* __f)
+      : _M_file(__f), _M_unget_buf(traits_type::eof())
+      { }
+
+      /**
+       *  @return  The underlying FILE*.
+       *
+       *  This function can be used to access the underlying C file pointer.
+       *  Note that there is no way for the library to track what you do
+       *  with the file, so be careful.
+       */
+      std::__c_file* const
+      file() { return this->_M_file; }
+
+    protected:
+      int_type
+      syncgetc();
+
+      int_type
+      syncungetc(int_type __c);
+
+      int_type
+      syncputc(int_type __c);
+
+      virtual int_type
+      underflow()
+      {
+	int_type __c = this->syncgetc();
+	return this->syncungetc(__c);
+      }
+
+      virtual int_type
+      uflow()
+      {
+	// Store the gotten character in case we need to unget it.
+	_M_unget_buf = this->syncgetc();
+	return _M_unget_buf;
+      }
+
+      virtual int_type
+      pbackfail(int_type __c = traits_type::eof())
+      {
+	int_type __ret;
+	const int_type __eof = traits_type::eof();
+
+	// Check if the unget or putback was requested
+	if (traits_type::eq_int_type(__c, __eof)) // unget
+	  {
+	    if (!traits_type::eq_int_type(_M_unget_buf, __eof))
+	      __ret = this->syncungetc(_M_unget_buf);
+	    else // buffer invalid, fail.
+	      __ret = __eof;
+	  }
+	else // putback
+	  __ret = this->syncungetc(__c);
+
+	// The buffered character is no longer valid, discard it.
+	_M_unget_buf = __eof;
+	return __ret;
+      }
+
+      virtual std::streamsize
+      xsgetn(char_type* __s, std::streamsize __n);
+
+      virtual int_type
+      overflow(int_type __c = traits_type::eof())
+      {
+	int_type __ret;
+	if (traits_type::eq_int_type(__c, traits_type::eof()))
+	  {
+	    if (std::fflush(_M_file))
+	      __ret = traits_type::eof();
+	    else
+	      __ret = traits_type::not_eof(__c);
+	  }
+	else
+	  __ret = this->syncputc(__c);
+	return __ret;
+      }
+
+      virtual std::streamsize
+      xsputn(const char_type* __s, std::streamsize __n);
+
+      virtual int
+      sync()
+      { return std::fflush(_M_file); }
+
+      virtual std::streampos
+      seekoff(std::streamoff __off, std::ios_base::seekdir __dir,
+	      std::ios_base::openmode = std::ios_base::in | std::ios_base::out)
+      {
+	std::streampos __ret(std::streamoff(-1));
+	int __whence;
+	if (__dir == std::ios_base::beg)
+	  __whence = SEEK_SET;
+	else if (__dir == std::ios_base::cur)
+	  __whence = SEEK_CUR;
+	else
+	  __whence = SEEK_END;
+#ifdef _GLIBCXX_USE_LFS
+	if (!fseeko64(_M_file, __off, __whence))
+	  __ret = std::streampos(ftello64(_M_file));
+#else
+	if (!fseek(_M_file, __off, __whence))
+	  __ret = std::streampos(std::ftell(_M_file));
+#endif
+	return __ret;
+      }
+
+      virtual std::streampos
+      seekpos(std::streampos __pos,
+	      std::ios_base::openmode __mode =
+	      std::ios_base::in | std::ios_base::out)
+      { return seekoff(std::streamoff(__pos), std::ios_base::beg, __mode); }
+    };
+
+  template<>
+    inline stdio_sync_filebuf<char>::int_type
+    stdio_sync_filebuf<char>::syncgetc()
+    { return std::getc(_M_file); }
+
+  template<>
+    inline stdio_sync_filebuf<char>::int_type
+    stdio_sync_filebuf<char>::syncungetc(int_type __c)
+    { return std::ungetc(__c, _M_file); }
+
+  template<>
+    inline stdio_sync_filebuf<char>::int_type
+    stdio_sync_filebuf<char>::syncputc(int_type __c)
+    { return std::putc(__c, _M_file); }
+
+  template<>
+    inline std::streamsize
+    stdio_sync_filebuf<char>::xsgetn(char* __s, std::streamsize __n)
+    {
+      std::streamsize __ret = std::fread(__s, 1, __n, _M_file);
+      if (__ret > 0)
+	_M_unget_buf = traits_type::to_int_type(__s[__ret - 1]);
+      else
+	_M_unget_buf = traits_type::eof();
+      return __ret;
+    }
+
+  template<>
+    inline std::streamsize
+    stdio_sync_filebuf<char>::xsputn(const char* __s, std::streamsize __n)
+    { return std::fwrite(__s, 1, __n, _M_file); }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    inline stdio_sync_filebuf<wchar_t>::int_type
+    stdio_sync_filebuf<wchar_t>::syncgetc()
+    { return std::getwc(_M_file); }
+
+  template<>
+    inline stdio_sync_filebuf<wchar_t>::int_type
+    stdio_sync_filebuf<wchar_t>::syncungetc(int_type __c)
+    { return std::ungetwc(__c, _M_file); }
+
+  template<>
+    inline stdio_sync_filebuf<wchar_t>::int_type
+    stdio_sync_filebuf<wchar_t>::syncputc(int_type __c)
+    { return std::putwc(__c, _M_file); }
+
+  template<>
+    inline std::streamsize
+    stdio_sync_filebuf<wchar_t>::xsgetn(wchar_t* __s, std::streamsize __n)
+    {
+      std::streamsize __ret = 0;
+      const int_type __eof = traits_type::eof();
+      while (__n--)
+	{
+	  int_type __c = this->syncgetc();
+	  if (traits_type::eq_int_type(__c, __eof))
+	    break;
+	  __s[__ret] = traits_type::to_char_type(__c);
+	  ++__ret;
+	}
+
+      if (__ret > 0)
+	_M_unget_buf = traits_type::to_int_type(__s[__ret - 1]);
+      else
+	_M_unget_buf = traits_type::eof();
+      return __ret;
+    }
+
+  template<>
+    inline std::streamsize
+    stdio_sync_filebuf<wchar_t>::xsputn(const wchar_t* __s,
+					std::streamsize __n)
+    {
+      std::streamsize __ret = 0;
+      const int_type __eof = traits_type::eof();
+      while (__n--)
+	{
+	  if (traits_type::eq_int_type(this->syncputc(*__s++), __eof))
+	    break;
+	  ++__ret;
+	}
+      return __ret;
+    }
+#endif
+
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template class stdio_sync_filebuf<char>;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template class stdio_sync_filebuf<wchar_t>;
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/string_conversions.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/string_conversions.h
new file mode 100644
index 000000000..f85ab9923
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/string_conversions.h
@@ -0,0 +1,101 @@
+// String Conversions -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/string_conversions.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _STRING_CONVERSIONS_H
+#define _STRING_CONVERSIONS_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <ext/numeric_traits.h>
+#include <bits/functexcept.h>
+#include <cstdlib>
+#include <cwchar>
+#include <cstdio>
+#include <cerrno>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Helper for all the sto* functions.
+  template<typename _TRet, typename _Ret = _TRet, typename _CharT,
+	   typename... _Base>
+    _Ret
+    __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...),
+	   const char* __name, const _CharT* __str, std::size_t* __idx,
+	   _Base... __base)
+    {
+      _Ret __ret;
+
+      _CharT* __endptr;
+      errno = 0;
+      const _TRet __tmp = __convf(__str, &__endptr, __base...);
+
+      if (__endptr == __str)
+	std::__throw_invalid_argument(__name);
+      else if (errno == ERANGE
+	       || (std::__are_same<_Ret, int>::__value
+		   && (__tmp < __numeric_traits<int>::__min
+		       || __tmp > __numeric_traits<int>::__max)))
+	std::__throw_out_of_range(__name);
+      else
+	__ret = __tmp;
+
+      if (__idx)
+	*__idx = __endptr - __str;
+
+      return __ret;
+    }
+
+  // Helper for the to_string / to_wstring functions.
+  template<typename _String, typename _CharT = typename _String::value_type>
+    _String
+    __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*,
+				 __builtin_va_list), std::size_t __n,
+		 const _CharT* __fmt, ...)
+    {
+      // XXX Eventually the result will be constructed in place in
+      // the C++0x string, likely with the help of internal hooks.
+      _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+							  * __n));
+
+      __builtin_va_list __args;
+      __builtin_va_start(__args, __fmt);
+
+      const int __len = __convf(__s, __n, __fmt, __args);
+
+      __builtin_va_end(__args);
+
+      return _String(__s, __s + __len);
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _STRING_CONVERSIONS_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/throw_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/throw_allocator.h
new file mode 100644
index 000000000..778b8dec1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/throw_allocator.h
@@ -0,0 +1,765 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice
+// and this permission notice appear in supporting documentation. None
+// of the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied
+// warranty.
+
+/** @file ext/throw_allocator.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ *
+ *  Contains two exception-generating types (throw_value, throw_allocator)
+ *  intended to be used as value and allocator types while testing
+ *  exception safety in templatized containers and algorithms. The
+ *  allocator has additional log and debug features. The exception
+ *  generated is of type forced_exception_error.
+ */
+
+#ifndef _THROW_ALLOCATOR_H
+#define _THROW_ALLOCATOR_H 1
+
+#include <cmath>
+#include <ctime>
+#include <map>
+#include <string>
+#include <ostream>
+#include <stdexcept>
+#include <utility>
+#include <bits/functexcept.h>
+#include <bits/move.h>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <functional>
+# include <random>
+#else
+# include <tr1/functional>
+# include <tr1/random>
+#endif
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Thown by exception safety machinery.
+   *  @ingroup exceptions
+   */
+  struct forced_error : public std::exception
+  { };
+
+  // Substitute for forced_error object when -fno-exceptions.
+  inline void
+  __throw_forced_error()
+  {
+#if __EXCEPTIONS
+    throw forced_error();
+#else
+    __builtin_abort();
+#endif
+  }
+
+
+  /**
+   *  @brief Base class for checking address and label information
+   *  about allocations. Create a std::map between the allocated
+   *  address (void*) and a datum for annotations, which are a pair of
+   *  numbers corresponding to label and allocated size.
+   */
+  struct annotate_base
+  {
+    annotate_base()
+    {
+      label();
+      map();
+    }
+
+    static void
+    set_label(size_t l)
+    { label() = l; }
+
+    static size_t
+    get_label()
+    { return label(); }
+
+    void
+    insert(void* p, size_t size)
+    {
+      if (!p)
+	{
+	  std::string error("annotate_base::insert null insert!\n");
+	  log_to_string(error, make_entry(p, size));
+	  std::__throw_logic_error(error.c_str());
+	}
+
+      const_iterator found = map().find(p);
+      if (found != map().end())
+	{
+	  std::string error("annotate_base::insert double insert!\n");
+	  log_to_string(error, make_entry(p, size));
+	  log_to_string(error, *found);
+	  std::__throw_logic_error(error.c_str());
+	}
+
+      map().insert(make_entry(p, size));
+    }
+
+    void
+    erase(void* p, size_t size)
+    {
+      check_allocated(p, size);
+      map().erase(p);
+    }
+
+    // See if a particular address and allocation size has been saved.
+    inline void
+    check_allocated(void* p, size_t size)
+    {
+      const_iterator found = map().find(p);
+      if (found == map().end())
+	{
+	  std::string error("annotate_base::check_allocated by value "
+			    "null erase!\n");
+	  log_to_string(error, make_entry(p, size));
+	  std::__throw_logic_error(error.c_str());
+	}
+
+      if (found->second.second != size)
+	{
+	  std::string error("annotate_base::check_allocated by value "
+			    "wrong-size erase!\n");
+	  log_to_string(error, make_entry(p, size));
+	  log_to_string(error, *found);
+	  std::__throw_logic_error(error.c_str());
+	}
+    }
+
+    // See if a given label has been allocated.
+    inline void
+    check_allocated(size_t label)
+    {
+      const_iterator beg = map().begin();
+      const_iterator end = map().end();
+      std::string found;
+      while (beg != end)
+	{
+	  if (beg->second.first == label)
+	    log_to_string(found, *beg);
+	  ++beg;
+	}
+
+      if (!found.empty())
+	{
+	  std::string error("annotate_base::check_allocated by label\n");
+	  error += found;
+	  std::__throw_logic_error(error.c_str());
+	}
+    }
+
+  private:
+    typedef std::pair<size_t, size_t> 		data_type;
+    typedef std::map<void*, data_type> 		map_type;
+    typedef map_type::value_type 		entry_type;
+    typedef map_type::const_iterator 		const_iterator;
+    typedef map_type::const_reference 		const_reference;
+
+    friend std::ostream&
+    operator<<(std::ostream&, const annotate_base&);
+
+    entry_type
+    make_entry(void* p, size_t size)
+    { return std::make_pair(p, data_type(get_label(), size)); }
+
+    void
+    log_to_string(std::string& s, const_reference ref) const
+    {
+      char buf[40];
+      const char tab('\t');
+      s += "label: ";
+      unsigned long l = static_cast<unsigned long>(ref.second.first);
+      __builtin_sprintf(buf, "%lu", l);
+      s += buf;
+      s += tab;
+      s += "size: ";
+      l = static_cast<unsigned long>(ref.second.second);
+      __builtin_sprintf(buf, "%lu", l);
+      s += buf;
+      s += tab;
+      s += "address: ";
+      __builtin_sprintf(buf, "%p", ref.first);
+      s += buf;
+      s += '\n';
+    }
+
+    static size_t&
+    label()
+    {
+      static size_t _S_label(std::numeric_limits<size_t>::max());
+      return _S_label;
+    }
+
+    static map_type&
+    map()
+    {
+      static map_type _S_map;
+      return _S_map;
+    }
+  };
+
+  inline std::ostream&
+  operator<<(std::ostream& os, const annotate_base& __b)
+  {
+    std::string error;
+    typedef annotate_base base_type;
+    base_type::const_iterator beg = __b.map().begin();
+    base_type::const_iterator end = __b.map().end();
+    for (; beg != end; ++beg)
+      __b.log_to_string(error, *beg);
+    return os << error;
+  }
+
+
+  /**
+   *  @brief Base struct for condition policy.
+   *
+   * Requires a public member function with the signature
+   * void throw_conditionally()
+   */
+  struct condition_base
+  {
+    virtual ~condition_base() { };
+  };
+
+
+  /**
+   *  @brief Base class for incremental control and throw.
+   */
+  struct limit_condition : public condition_base
+  {
+    // Scope-level adjustor objects: set limit for throw at the
+    // beginning of a scope block, and restores to previous limit when
+    // object is destroyed on exiting the block.
+    struct adjustor_base
+    {
+    private:
+      const size_t _M_orig;
+
+    public:
+      adjustor_base() : _M_orig(limit()) { }
+
+      virtual
+      ~adjustor_base() { set_limit(_M_orig); }
+    };
+
+    /// Never enter the condition.
+    struct never_adjustor : public adjustor_base
+    {
+      never_adjustor() { set_limit(std::numeric_limits<size_t>::max()); }
+    };
+
+    /// Always enter the condition.
+    struct always_adjustor : public adjustor_base
+    {
+      always_adjustor() { set_limit(count()); }
+    };
+
+    /// Enter the nth condition.
+    struct limit_adjustor : public adjustor_base
+    {
+      limit_adjustor(const size_t __l) { set_limit(__l); }
+    };
+
+    // Increment _S_count every time called.
+    // If _S_count matches the limit count, throw.
+    static void
+    throw_conditionally()
+    {
+      if (count() == limit())
+	__throw_forced_error();
+      ++count();
+    }
+
+    static size_t&
+    count()
+    {
+      static size_t _S_count(0);
+      return _S_count;
+    }
+
+    static size_t&
+    limit()
+    {
+      static size_t _S_limit(std::numeric_limits<size_t>::max());
+      return _S_limit;
+    }
+
+    // Zero the throw counter, set limit to argument.
+    static void
+    set_limit(const size_t __l)
+    {
+      limit() = __l;
+      count() = 0;
+    }
+  };
+
+
+  /**
+   *  @brief Base class for random probability control and throw.
+   */
+  struct random_condition : public condition_base
+  {
+    // Scope-level adjustor objects: set probability for throw at the
+    // beginning of a scope block, and restores to previous
+    // probability when object is destroyed on exiting the block.
+    struct adjustor_base
+    {
+    private:
+      const double _M_orig;
+
+    public:
+      adjustor_base() : _M_orig(probability()) { }
+
+      virtual ~adjustor_base()
+      { set_probability(_M_orig); }
+    };
+
+    /// Group condition.
+    struct group_adjustor : public adjustor_base
+    {
+      group_adjustor(size_t size)
+      { set_probability(1 - std::pow(double(1 - probability()),
+				     double(0.5 / (size + 1))));
+      }
+    };
+
+    /// Never enter the condition.
+    struct never_adjustor : public adjustor_base
+    {
+      never_adjustor() { set_probability(0); }
+    };
+
+    /// Always enter the condition.
+    struct always_adjustor : public adjustor_base
+    {
+      always_adjustor() { set_probability(1); }
+    };
+
+    random_condition()
+    {
+      probability();
+      engine();
+    }
+
+    static void
+    set_probability(double __p)
+    { probability() = __p; }
+
+    static void
+    throw_conditionally()
+    {
+      if (generate() < probability())
+	__throw_forced_error();
+    }
+
+    void
+    seed(unsigned long __s)
+    { engine().seed(__s); }
+
+  private:
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    typedef std::uniform_real_distribution<double> 	distribution_type;
+    typedef std::mt19937 				engine_type;
+#else
+    typedef std::tr1::uniform_real<double> 		distribution_type;
+    typedef std::tr1::mt19937 				engine_type;
+#endif
+
+    static double
+    generate()
+    {
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const distribution_type distribution(0, 1);
+      static auto generator = std::bind(distribution, engine());
+#else
+      // Use variate_generator to get normalized results.
+      typedef std::tr1::variate_generator<engine_type, distribution_type> gen_t;
+      distribution_type distribution(0, 1);
+      static gen_t generator(engine(), distribution);
+#endif
+
+      double random = generator();
+      if (random < distribution.min() || random > distribution.max())
+	{
+	  std::string __s("random_condition::generate");
+	  __s += "\n";
+	  __s += "random number generated is: ";
+	  char buf[40];
+	  __builtin_sprintf(buf, "%f", random);
+	  __s += buf;
+	  std::__throw_out_of_range(__s.c_str());
+	}
+
+      return random;
+    }
+
+    static double&
+    probability()
+    {
+      static double _S_p;
+      return _S_p;
+    }
+
+    static engine_type&
+    engine()
+    {
+      static engine_type _S_e;
+      return _S_e;
+    }
+  };
+
+
+  /**
+   *  @brief Class with exception generation control. Intended to be
+   *  used as a value_type in templatized code.
+   *
+   *  Note: Destructor not allowed to throw.
+   */
+  template<typename _Cond>
+    struct throw_value_base : public _Cond
+    {
+      typedef _Cond  				condition_type;
+
+      using condition_type::throw_conditionally;
+
+      std::size_t			       	_M_i;
+
+#ifndef _GLIBCXX_IS_AGGREGATE
+      throw_value_base() : _M_i(0)
+      { throw_conditionally(); }
+
+      throw_value_base(const throw_value_base& __v) : _M_i(__v._M_i)
+      { throw_conditionally(); }
+
+      explicit throw_value_base(const std::size_t __i) : _M_i(__i)
+      { throw_conditionally(); }
+#endif
+
+      throw_value_base&
+      operator=(const throw_value_base& __v)
+      {
+	throw_conditionally();
+	_M_i = __v._M_i;
+	return *this;
+      }
+
+      throw_value_base&
+      operator++()
+      {
+	throw_conditionally();
+	++_M_i;
+	return *this;
+      }
+    };
+
+  template<typename _Cond>
+    inline void
+    swap(throw_value_base<_Cond>& __a, throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      throw_value orig(__a);
+      __a = __b;
+      __b = orig;
+    }
+
+  // General instantiable types requirements.
+  template<typename _Cond>
+    inline bool
+    operator==(const throw_value_base<_Cond>& __a,
+	       const throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      bool __ret = __a._M_i == __b._M_i;
+      return __ret;
+    }
+
+  template<typename _Cond>
+    inline bool
+    operator<(const throw_value_base<_Cond>& __a,
+	      const throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      bool __ret = __a._M_i < __b._M_i;
+      return __ret;
+    }
+
+  // Numeric algorithms instantiable types requirements.
+  template<typename _Cond>
+    inline throw_value_base<_Cond>
+    operator+(const throw_value_base<_Cond>& __a,
+	      const throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      throw_value __ret(__a._M_i + __b._M_i);
+      return __ret;
+    }
+
+  template<typename _Cond>
+    inline throw_value_base<_Cond>
+    operator-(const throw_value_base<_Cond>& __a,
+	      const throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      throw_value __ret(__a._M_i - __b._M_i);
+      return __ret;
+    }
+
+  template<typename _Cond>
+    inline throw_value_base<_Cond>
+    operator*(const throw_value_base<_Cond>& __a,
+	      const throw_value_base<_Cond>& __b)
+    {
+      typedef throw_value_base<_Cond> throw_value;
+      throw_value::throw_conditionally();
+      throw_value __ret(__a._M_i * __b._M_i);
+      return __ret;
+    }
+
+
+  /// Type throwing via limit condition.
+  struct throw_value_limit : public throw_value_base<limit_condition>
+  {
+    typedef throw_value_base<limit_condition> base_type;
+
+#ifndef _GLIBCXX_IS_AGGREGATE
+    throw_value_limit() { }
+
+    throw_value_limit(const throw_value_limit& __other)
+    : base_type(__other._M_i) { }
+
+    explicit throw_value_limit(const std::size_t __i) : base_type(__i) { }
+#endif
+  };
+
+  /// Type throwing via random condition.
+  struct throw_value_random : public throw_value_base<random_condition>
+  {
+    typedef throw_value_base<random_condition> base_type;
+
+#ifndef _GLIBCXX_IS_AGGREGATE
+    throw_value_random() { }
+
+    throw_value_random(const throw_value_random& __other)
+    : base_type(__other._M_i) { }
+
+
+    explicit throw_value_random(const std::size_t __i) : base_type(__i) { }
+#endif
+  };
+
+
+  /**
+   *  @brief Allocator class with logging and exception generation control.
+   * Intended to be used as an allocator_type in templatized code.
+   *  @ingroup allocators
+   *
+   *  Note: Deallocate not allowed to throw.
+   */
+  template<typename _Tp, typename _Cond>
+    class throw_allocator_base
+    : public annotate_base, public _Cond
+    {
+    public:
+      typedef size_t 				size_type;
+      typedef ptrdiff_t 			difference_type;
+      typedef _Tp 				value_type;
+      typedef value_type* 			pointer;
+      typedef const value_type* 		const_pointer;
+      typedef value_type& 			reference;
+      typedef const value_type& 		const_reference;
+
+    private:
+      typedef _Cond				condition_type;
+
+      std::allocator<value_type> 		_M_allocator;
+
+      using condition_type::throw_conditionally;
+
+    public:
+      size_type
+      max_size() const throw()
+      { return _M_allocator.max_size(); }
+
+      pointer
+      address(reference __x) const { return std::__addressof(__x); }
+
+      const_pointer
+      address(const_reference __x) const { return std::__addressof(__x); }
+
+      pointer
+      allocate(size_type __n, std::allocator<void>::const_pointer hint = 0)
+      {
+	if (__n > this->max_size())
+	  std::__throw_bad_alloc();
+
+	throw_conditionally();
+	pointer const a = _M_allocator.allocate(__n, hint);
+	insert(a, sizeof(value_type) * __n);
+	return a;
+      }
+
+      void
+      construct(pointer __p, const value_type& val)
+      { return _M_allocator.construct(__p, val); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+	void
+	construct(pointer __p, _Args&&... __args)
+	{ return _M_allocator.construct(__p, std::forward<_Args>(__args)...); }
+#endif
+
+      void
+      destroy(pointer __p)
+      { _M_allocator.destroy(__p); }
+
+      void
+      deallocate(pointer __p, size_type __n)
+      {
+	erase(__p, sizeof(value_type) * __n);
+	_M_allocator.deallocate(__p, __n);
+      }
+
+      void
+      check_allocated(pointer __p, size_type __n)
+      {
+	size_type __t = sizeof(value_type) * __n;
+	annotate_base::check_allocated(__p, __t);
+      }
+
+      void
+      check_allocated(size_type __n)
+      { annotate_base::check_allocated(__n); }
+  };
+
+  template<typename _Tp, typename _Cond>
+    inline bool
+    operator==(const throw_allocator_base<_Tp, _Cond>&,
+	       const throw_allocator_base<_Tp, _Cond>&)
+    { return true; }
+
+  template<typename _Tp, typename _Cond>
+    inline bool
+    operator!=(const throw_allocator_base<_Tp, _Cond>&,
+	       const throw_allocator_base<_Tp, _Cond>&)
+    { return false; }
+
+  /// Allocator throwing via limit condition.
+  template<typename _Tp>
+    struct throw_allocator_limit
+    : public throw_allocator_base<_Tp, limit_condition>
+    {
+      template<typename _Tp1>
+	struct rebind
+	{ typedef throw_allocator_limit<_Tp1> other; };
+
+      throw_allocator_limit() throw() { }
+
+      throw_allocator_limit(const throw_allocator_limit&) throw() { }
+
+      template<typename _Tp1>
+	throw_allocator_limit(const throw_allocator_limit<_Tp1>&) throw() { }
+
+      ~throw_allocator_limit() throw() { }
+    };
+
+  /// Allocator throwing via random condition.
+  template<typename _Tp>
+    struct throw_allocator_random
+    : public throw_allocator_base<_Tp, random_condition>
+    {
+      template<typename _Tp1>
+	struct rebind
+	{ typedef throw_allocator_random<_Tp1> other; };
+
+      throw_allocator_random() throw() { }
+
+      throw_allocator_random(const throw_allocator_random&) throw() { }
+
+      template<typename _Tp1>
+	throw_allocator_random(const throw_allocator_random<_Tp1>&) throw() { }
+
+      ~throw_allocator_random() throw() { }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+# include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  /// Explicit specialization of std::hash for __gnu_cxx::throw_value_limit.
+  template<>
+    struct hash<__gnu_cxx::throw_value_limit>
+    : public std::unary_function<__gnu_cxx::throw_value_limit, size_t>
+    {
+      size_t
+      operator()(const __gnu_cxx::throw_value_limit& __val) const
+      {
+	std::hash<std::size_t> __h;
+	size_t __result = __h(__val._M_i);
+	return __result;
+      }
+    };
+
+  /// Explicit specialization of std::hash for __gnu_cxx::throw_value_limit.
+  template<>
+    struct hash<__gnu_cxx::throw_value_random>
+    : public std::unary_function<__gnu_cxx::throw_value_random, size_t>
+    {
+      size_t
+      operator()(const __gnu_cxx::throw_value_random& __val) const
+      {
+	std::hash<std::size_t> __h;
+	size_t __result = __h(__val._M_i);
+	return __result;
+      }
+    };
+} // end namespace std
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/type_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/type_traits.h
new file mode 100644
index 000000000..92747268a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/type_traits.h
@@ -0,0 +1,207 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/type_traits.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _EXT_TYPE_TRAITS
+#define _EXT_TYPE_TRAITS 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Define a nested type if some predicate holds.
+  template<bool, typename>
+    struct __enable_if 
+    { };
+
+  template<typename _Tp>
+    struct __enable_if<true, _Tp>
+    { typedef _Tp __type; };
+
+
+  // Conditional expression for types. If true, first, if false, second.
+  template<bool _Cond, typename _Iftrue, typename _Iffalse>
+    struct __conditional_type
+    { typedef _Iftrue __type; };
+
+  template<typename _Iftrue, typename _Iffalse>
+    struct __conditional_type<false, _Iftrue, _Iffalse>
+    { typedef _Iffalse __type; };
+
+
+  // Given an integral builtin type, return the corresponding unsigned type.
+  template<typename _Tp>
+    struct __add_unsigned
+    { 
+    private:
+      typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+      
+    public:
+      typedef typename __if_type::__type __type; 
+    };
+
+  template<>
+    struct __add_unsigned<char>
+    { typedef unsigned char __type; };
+
+  template<>
+    struct __add_unsigned<signed char>
+    { typedef unsigned char __type; };
+
+  template<>
+    struct __add_unsigned<short>
+    { typedef unsigned short __type; };
+
+  template<>
+    struct __add_unsigned<int>
+    { typedef unsigned int __type; };
+
+  template<>
+    struct __add_unsigned<long>
+    { typedef unsigned long __type; };
+
+  template<>
+    struct __add_unsigned<long long>
+    { typedef unsigned long long __type; };
+
+  // Declare but don't define.
+  template<>
+    struct __add_unsigned<bool>;
+
+  template<>
+    struct __add_unsigned<wchar_t>;
+
+
+  // Given an integral builtin type, return the corresponding signed type.
+  template<typename _Tp>
+    struct __remove_unsigned
+    { 
+    private:
+      typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+      
+    public:
+      typedef typename __if_type::__type __type; 
+    };
+
+  template<>
+    struct __remove_unsigned<char>
+    { typedef signed char __type; };
+
+  template<>
+    struct __remove_unsigned<unsigned char>
+    { typedef signed char __type; };
+
+  template<>
+    struct __remove_unsigned<unsigned short>
+    { typedef short __type; };
+
+  template<>
+    struct __remove_unsigned<unsigned int>
+    { typedef int __type; };
+
+  template<>
+    struct __remove_unsigned<unsigned long>
+    { typedef long __type; };
+
+  template<>
+    struct __remove_unsigned<unsigned long long>
+    { typedef long long __type; };
+
+  // Declare but don't define.
+  template<>
+    struct __remove_unsigned<bool>;
+
+  template<>
+    struct __remove_unsigned<wchar_t>;
+
+
+  // For use in string and vstring.
+  template<typename _Type>
+    inline bool
+    __is_null_pointer(_Type* __ptr)
+    { return __ptr == 0; }
+
+  template<typename _Type>
+    inline bool
+    __is_null_pointer(_Type)
+    { return false; }
+
+
+  // For complex and cmath
+  template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
+    struct __promote
+    { typedef double __type; };
+
+  template<typename _Tp>
+    struct __promote<_Tp, false>
+    { typedef _Tp __type; };
+
+  template<typename _Tp, typename _Up>
+    struct __promote_2
+    {
+    private:
+      typedef typename __promote<_Tp>::__type __type1;
+      typedef typename __promote<_Up>::__type __type2;
+
+    public:
+      typedef __typeof__(__type1() + __type2()) __type;
+    };
+
+  template<typename _Tp, typename _Up, typename _Vp>
+    struct __promote_3
+    {
+    private:
+      typedef typename __promote<_Tp>::__type __type1;
+      typedef typename __promote<_Up>::__type __type2;
+      typedef typename __promote<_Vp>::__type __type3;
+
+    public:
+      typedef __typeof__(__type1() + __type2() + __type3()) __type;
+    };
+
+  template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
+    struct __promote_4
+    {
+    private:
+      typedef typename __promote<_Tp>::__type __type1;
+      typedef typename __promote<_Up>::__type __type2;
+      typedef typename __promote<_Vp>::__type __type3;
+      typedef typename __promote<_Wp>::__type __type4;
+
+    public:
+      typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/typelist.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/typelist.h
new file mode 100644
index 000000000..7f94ecd72
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/typelist.h
@@ -0,0 +1,554 @@
+// -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
+
+// Permission to use, copy, modify, sell, and distribute this software
+// is hereby granted without fee, provided that the above copyright
+// notice appears in all copies, and that both that copyright notice and
+// this permission notice appear in supporting documentation. None of
+// the above authors, nor IBM Haifa Research Laboratories, make any
+// representation about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied warranty.
+
+/**
+ *  @file ext/typelist.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ *
+ *  Contains typelist_chain definitions.
+ *  Typelists are an idea by Andrei Alexandrescu.
+ */
+
+#ifndef _TYPELIST_H
+#define _TYPELIST_H 1
+
+#include <ext/type_traits.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+/** @namespace __gnu_cxx::typelist
+ *  @brief GNU typelist extensions for public compile-time use.
+*/
+namespace typelist
+{
+  struct null_type { };
+
+  template<typename Root>
+    struct node
+    {
+      typedef Root 	root;
+    };
+
+  // Forward declarations of functors.
+  template<typename Hd, typename Typelist>
+    struct chain
+    {
+      typedef Hd 	head;
+      typedef Typelist 	tail;
+    };
+
+  // Apply all typelist types to unary functor.
+  template<typename Fn, typename Typelist>
+    void
+    apply(Fn&, Typelist);
+
+  /// Apply all typelist types to generator functor.
+  template<typename Gn, typename Typelist>
+    void
+    apply_generator(Gn&, Typelist);
+
+  // Apply all typelist types and values to generator functor.
+  template<typename Gn, typename TypelistT, typename TypelistV>
+    void
+    apply_generator(Gn&, TypelistT, TypelistV);
+
+  template<typename Typelist0, typename Typelist1>
+    struct append;
+
+  template<typename Typelist_Typelist>
+    struct append_typelist;
+
+  template<typename Typelist, typename T>
+    struct contains;
+
+  template<typename Typelist, template<typename T> class Pred>
+    struct filter;
+
+  template<typename Typelist, int i>
+    struct at_index;
+
+  template<typename Typelist, template<typename T> class Transform>
+    struct transform;
+
+  template<typename Typelist_Typelist>
+    struct flatten;
+
+  template<typename Typelist>
+    struct from_first;
+
+  template<typename T1>
+    struct create1;
+
+  template<typename T1, typename T2>
+    struct create2;
+
+  template<typename T1, typename T2, typename T3>
+    struct create3;
+
+  template<typename T1, typename T2, typename T3, typename T4>
+    struct create4;
+
+  template<typename T1, typename T2, typename T3, typename T4, typename T5>
+    struct create5;
+
+  template<typename T1, typename T2, typename T3,
+	   typename T4, typename T5, typename T6>
+    struct create6;
+} // namespace typelist
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+namespace typelist
+{
+namespace detail
+{
+  template<typename Fn, typename Typelist_Chain>
+    struct apply_;
+
+  template<typename Fn, typename Hd, typename Tl>
+    struct apply_<Fn, chain<Hd, Tl> >
+    {
+      void
+      operator()(Fn& f)
+      {
+	f.operator()(Hd());
+	apply_<Fn, Tl> next;
+	next(f);
+      }
+    };
+
+  template<typename Fn>
+    struct apply_<Fn, null_type>
+    {
+      void
+      operator()(Fn&) { }
+    };
+
+  template<typename Gn, typename Typelist_Chain>
+    struct apply_generator1_;
+
+  template<typename Gn, typename Hd, typename Tl>
+    struct apply_generator1_<Gn, chain<Hd, Tl> >
+    {
+      void
+      operator()(Gn& g)
+      {
+	g.template operator()<Hd>();
+	apply_generator1_<Gn, Tl> next;
+	next(g);
+      }
+    };
+
+  template<typename Gn>
+    struct apply_generator1_<Gn, null_type>
+    {
+      void
+      operator()(Gn&) { }
+    };
+
+  template<typename Gn, typename TypelistT_Chain, typename TypelistV_Chain>
+    struct apply_generator2_;
+
+  template<typename Gn, typename Hd1, typename TlT, typename Hd2, typename TlV>
+    struct apply_generator2_<Gn, chain<Hd1, TlT>, chain<Hd2, TlV> >
+    {
+      void
+      operator()(Gn& g)
+      {
+	g.template operator()<Hd1, Hd2>();
+	apply_generator2_<Gn, TlT, TlV> next;
+	next(g);
+      }
+    };
+
+  template<typename Gn>
+    struct apply_generator2_<Gn, null_type, null_type>
+    {
+      void
+      operator()(Gn&) { }
+    };
+
+  template<typename Typelist_Chain0, typename Typelist_Chain1>
+    struct append_;
+
+  template<typename Hd, typename Tl, typename Typelist_Chain>
+    struct append_<chain<Hd, Tl>, Typelist_Chain>
+    {
+    private:
+      typedef append_<Tl, Typelist_Chain> 			append_type;
+
+    public:
+      typedef chain<Hd, typename append_type::type> 		type;
+    };
+
+  template<typename Typelist_Chain>
+    struct append_<null_type, Typelist_Chain>
+    {
+      typedef Typelist_Chain 			      		type;
+    };
+
+  template<typename Typelist_Chain>
+    struct append_<Typelist_Chain, null_type>
+    {
+      typedef Typelist_Chain 					type;
+    };
+
+  template<>
+    struct append_<null_type, null_type>
+    {
+      typedef null_type 					type;
+    };
+
+  template<typename Typelist_Typelist_Chain>
+    struct append_typelist_;
+
+  template<typename Hd>
+    struct append_typelist_<chain<Hd, null_type> >
+    {
+      typedef chain<Hd, null_type> 				type;
+    };
+
+  template<typename Hd, typename Tl>
+    struct append_typelist_<chain< Hd, Tl> >
+    {
+    private:
+      typedef typename append_typelist_<Tl>::type 		rest_type;
+
+    public:
+      typedef typename append<Hd, node<rest_type> >::type::root	type;
+    };
+
+  template<typename Typelist_Chain, typename T>
+    struct contains_;
+
+  template<typename T>
+    struct contains_<null_type, T>
+    {
+      enum
+	{
+	  value = false
+	};
+    };
+
+  template<typename Hd, typename Tl, typename T>
+    struct contains_<chain<Hd, Tl>, T>
+    {
+      enum
+	{
+	  value = contains_<Tl, T>::value
+	};
+    };
+
+  template<typename Tl, typename T>
+    struct contains_<chain<T, Tl>, T>
+    {
+      enum
+	{
+	  value = true
+	};
+    };
+
+  template<typename Typelist_Chain, template<typename T> class Pred>
+    struct chain_filter_;
+
+  template<template<typename T> class Pred>
+    struct chain_filter_<null_type, Pred>
+    {
+      typedef null_type 					type;
+  };
+
+  template<typename Hd, typename Tl, template<typename T> class Pred>
+    struct chain_filter_<chain<Hd, Tl>, Pred>
+    {
+    private:
+      enum
+	{
+	  include_hd = Pred<Hd>::value
+	};
+
+      typedef typename chain_filter_<Tl, Pred>::type 		rest_type;
+      typedef chain<Hd, rest_type> 				chain_type;
+
+    public:
+      typedef typename __conditional_type<include_hd, chain_type, rest_type>::__type type;
+  };
+
+  template<typename Typelist_Chain, int i>
+    struct chain_at_index_;
+
+  template<typename Hd, typename Tl>
+    struct chain_at_index_<chain<Hd, Tl>, 0>
+    {
+      typedef Hd 						type;
+    };
+
+  template<typename Hd, typename Tl, int i>
+    struct chain_at_index_<chain<Hd, Tl>, i>
+    {
+      typedef typename chain_at_index_<Tl, i - 1>::type 	type;
+    };
+
+  template<class Typelist_Chain, template<typename T> class Transform>
+    struct chain_transform_;
+
+  template<template<typename T> class Transform>
+    struct chain_transform_<null_type, Transform>
+    {
+      typedef null_type 					type;
+    };
+
+  template<class Hd, class Tl, template<typename T> class Transform>
+    struct chain_transform_<chain<Hd, Tl>, Transform>
+    {
+    private:
+      typedef typename chain_transform_<Tl, Transform>::type 	rest_type;
+      typedef typename Transform<Hd>::type 			transform_type;
+
+    public:
+      typedef chain<transform_type, rest_type> 			type;
+    };
+
+  template<typename Typelist_Typelist_Chain>
+    struct chain_flatten_;
+
+  template<typename Hd_Tl>
+    struct chain_flatten_<chain<Hd_Tl, null_type> >
+    {
+      typedef typename Hd_Tl::root 				type;
+    };
+
+  template<typename Hd_Typelist, class Tl_Typelist>
+    struct chain_flatten_<chain<Hd_Typelist, Tl_Typelist> >
+    {
+    private:
+      typedef typename chain_flatten_<Tl_Typelist>::type 	rest_type;
+      typedef append<Hd_Typelist, node<rest_type> >		append_type;
+    public:
+      typedef typename append_type::type::root 			type;
+    };
+} // namespace detail
+} // namespace typelist
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#define _GLIBCXX_TYPELIST_CHAIN1(X0) __gnu_cxx::typelist::chain<X0, __gnu_cxx::typelist::null_type>
+#define _GLIBCXX_TYPELIST_CHAIN2(X0, X1) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN1(X1) >
+#define _GLIBCXX_TYPELIST_CHAIN3(X0, X1, X2) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN2(X1, X2) >
+#define _GLIBCXX_TYPELIST_CHAIN4(X0, X1, X2, X3) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN3(X1, X2, X3) >
+#define _GLIBCXX_TYPELIST_CHAIN5(X0, X1, X2, X3, X4) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN4(X1, X2, X3, X4) >
+#define _GLIBCXX_TYPELIST_CHAIN6(X0, X1, X2, X3, X4, X5) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN5(X1, X2, X3, X4, X5) >
+#define _GLIBCXX_TYPELIST_CHAIN7(X0, X1, X2, X3, X4, X5, X6) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN6(X1, X2, X3, X4, X5, X6) >
+#define _GLIBCXX_TYPELIST_CHAIN8(X0, X1, X2, X3, X4, X5, X6, X7) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN7(X1, X2, X3, X4, X5, X6, X7) >
+#define _GLIBCXX_TYPELIST_CHAIN9(X0, X1, X2, X3, X4, X5, X6, X7, X8) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN8(X1, X2, X3, X4, X5, X6, X7, X8) >
+#define _GLIBCXX_TYPELIST_CHAIN10(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN9(X1, X2, X3, X4, X5, X6, X7, X8, X9) >
+#define _GLIBCXX_TYPELIST_CHAIN11(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN10(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) >
+#define _GLIBCXX_TYPELIST_CHAIN12(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN11(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) >
+#define _GLIBCXX_TYPELIST_CHAIN13(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN12(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) >
+#define _GLIBCXX_TYPELIST_CHAIN14(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN13(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) >
+#define _GLIBCXX_TYPELIST_CHAIN15(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN14(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) >
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+namespace typelist
+{
+  template<typename Fn, typename Typelist>
+    void
+    apply(Fn& fn, Typelist)
+    {
+      detail::apply_<Fn, typename Typelist::root> a;
+      a(fn);
+    }
+
+  template<typename Fn, typename Typelist>
+    void
+    apply_generator(Fn& fn, Typelist)
+    {
+      detail::apply_generator1_<Fn, typename Typelist::root> a;
+      a(fn);
+    }
+
+  template<typename Fn, typename TypelistT, typename TypelistV>
+    void
+    apply_generator(Fn& fn, TypelistT, TypelistV)
+    {
+      typedef typename TypelistT::root rootT;
+      typedef typename TypelistV::root rootV;
+      detail::apply_generator2_<Fn, rootT, rootV> a;
+      a(fn);
+    }
+
+  template<typename Typelist0, typename Typelist1>
+    struct append
+    {
+    private:
+      typedef typename Typelist0::root 				root0_type;
+      typedef typename Typelist1::root 				root1_type;
+      typedef detail::append_<root0_type, root1_type> 		append_type;
+
+    public:
+      typedef node<typename append_type::type> 			type;
+    };
+
+  template<typename Typelist_Typelist>
+    struct append_typelist
+    {
+    private:
+      typedef typename Typelist_Typelist::root 		      	root_type;
+      typedef detail::append_typelist_<root_type> 		append_type;
+
+    public:
+      typedef node<typename append_type::type> 			type;
+    };
+
+  template<typename Typelist, typename T>
+    struct contains
+    {
+    private:
+      typedef typename Typelist::root 				root_type;
+
+    public:
+      enum
+	{
+	  value = detail::contains_<root_type, T>::value
+	};
+    };
+
+  template<typename Typelist, template<typename T> class Pred>
+    struct filter
+    {
+    private:
+      typedef typename Typelist::root 				root_type;
+      typedef detail::chain_filter_<root_type, Pred> 		filter_type;
+
+    public:
+      typedef node<typename filter_type::type> 	       		type;
+    };
+
+  template<typename Typelist, int i>
+    struct at_index
+    {
+    private:
+      typedef typename Typelist::root 				root_type;
+      typedef detail::chain_at_index_<root_type, i> 		index_type;
+
+    public:
+      typedef typename index_type::type 			type;
+    };
+
+  template<typename Typelist, template<typename T> class Transform>
+    struct transform
+    {
+    private:
+      typedef typename Typelist::root 				root_type;
+      typedef detail::chain_transform_<root_type, Transform> 	transform_type;
+
+    public:
+      typedef node<typename transform_type::type> 		type;
+    };
+
+  template<typename Typelist_Typelist>
+    struct flatten
+    {
+    private:
+      typedef typename Typelist_Typelist::root 		      	root_type;
+      typedef typename detail::chain_flatten_<root_type>::type 	flatten_type;
+
+    public:
+      typedef node<flatten_type> 				type;
+    };
+
+  template<typename Typelist>
+    struct from_first
+    {
+    private:
+      typedef typename at_index<Typelist, 0>::type 		first_type;
+
+    public:
+      typedef node<chain<first_type, null_type> > 		type;
+    };
+
+  template<typename T1>
+    struct create1
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN1(T1)> 		type;
+    };
+
+  template<typename T1, typename T2>
+    struct create2
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN2(T1,T2)> 		type;
+    };
+
+  template<typename T1, typename T2, typename T3>
+    struct create3
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN3(T1,T2,T3)>		type;
+    };
+
+  template<typename T1, typename T2, typename T3, typename T4>
+    struct create4
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN4(T1,T2,T3,T4)>	type;
+    };
+
+  template<typename T1, typename T2, typename T3,
+	   typename T4, typename T5>
+    struct create5
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN5(T1,T2,T3,T4,T5)>	type;
+    };
+
+  template<typename T1, typename T2, typename T3,
+	   typename T4, typename T5, typename T6>
+    struct create6
+    {
+      typedef node<_GLIBCXX_TYPELIST_CHAIN6(T1,T2,T3,T4,T5,T6)>	type;
+    };
+} // namespace typelist
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.h
new file mode 100644
index 000000000..442a39225
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.h
@@ -0,0 +1,2796 @@
+// Versatile string -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/vstring.h
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _VSTRING_H
+#define _VSTRING_H 1
+
+#pragma GCC system_header
+
+#include <initializer_list>
+#include <ext/vstring_util.h>
+#include <ext/rc_string_base.h>
+#include <ext/sso_string_base.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @class __versa_string vstring.h
+   *  @brief  Template class __versa_string. 
+   *  @ingroup extensions
+   *
+   *  Data structure managing sequences of characters and
+   *  character-like objects. 
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    class __versa_string
+    : private _Base<_CharT, _Traits, _Alloc>
+    {
+      typedef _Base<_CharT, _Traits, _Alloc>                __vstring_base;    
+      typedef typename __vstring_base::_CharT_alloc_type    _CharT_alloc_type;
+
+      // Types:
+    public:
+      typedef _Traits					    traits_type;
+      typedef typename _Traits::char_type		    value_type;
+      typedef _Alloc					    allocator_type;
+      typedef typename _CharT_alloc_type::size_type	    size_type;
+      typedef typename _CharT_alloc_type::difference_type   difference_type;
+      typedef value_type&               	            reference;
+      typedef const value_type&                             const_reference;
+      typedef typename _CharT_alloc_type::pointer	    pointer;
+      typedef typename _CharT_alloc_type::const_pointer	    const_pointer;
+      typedef __gnu_cxx::__normal_iterator<pointer, __versa_string>  iterator;
+      typedef __gnu_cxx::__normal_iterator<const_pointer, __versa_string>
+                                                            const_iterator;
+      typedef std::reverse_iterator<const_iterator>	const_reverse_iterator;
+      typedef std::reverse_iterator<iterator>		    reverse_iterator;
+
+      // Data Member (public):
+      ///  Value returned by various member functions when they fail.
+      static const size_type	npos = static_cast<size_type>(-1);
+
+    private:
+      size_type
+      _M_check(size_type __pos, const char* __s) const
+      {
+	if (__pos > this->size())
+	  std::__throw_out_of_range(__N(__s));
+	return __pos;
+      }
+
+      void
+      _M_check_length(size_type __n1, size_type __n2, const char* __s) const
+      {
+	if (this->max_size() - (this->size() - __n1) < __n2)
+	  std::__throw_length_error(__N(__s));
+      }
+
+      // NB: _M_limit doesn't check for a bad __pos value.
+      size_type
+      _M_limit(size_type __pos, size_type __off) const
+      {
+	const bool __testoff =  __off < this->size() - __pos;
+	return __testoff ? __off : this->size() - __pos;
+      }
+
+      // True if _Rep and source do not overlap.
+      bool
+      _M_disjunct(const _CharT* __s) const
+      {
+	return (std::less<const _CharT*>()(__s, this->_M_data())
+		|| std::less<const _CharT*>()(this->_M_data()
+					      + this->size(), __s));
+      }
+
+      // For the internal use we have functions similar to `begin'/`end'
+      // but they do not call _M_leak.
+      iterator
+      _M_ibegin() const
+      { return iterator(this->_M_data()); }
+
+      iterator
+      _M_iend() const
+      { return iterator(this->_M_data() + this->_M_length()); }
+
+    public:
+      // Construct/copy/destroy:
+      // NB: We overload ctors in some cases instead of using default
+      // arguments, per 17.4.4.4 para. 2 item 2.
+
+      /**
+       *  @brief  Default constructor creates an empty string.
+       */
+      __versa_string()
+      : __vstring_base() { }
+      
+      /**
+       *  @brief  Construct an empty string using allocator @a a.
+       */
+      explicit
+      __versa_string(const _Alloc& __a)
+      : __vstring_base(__a) { }
+
+      // NB: per LWG issue 42, semantics different from IS:
+      /**
+       *  @brief  Construct string with copy of value of @a str.
+       *  @param  __str  Source string.
+       */
+      __versa_string(const __versa_string& __str)
+      : __vstring_base(__str) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  String move constructor.
+       *  @param  __str  Source string.
+       *
+       *  The newly-constructed %string contains the exact contents of
+       *  @a str.  The contents of @a str are a valid, but unspecified
+       *  string.
+       */
+      __versa_string(__versa_string&& __str)
+      : __vstring_base(std::move(__str)) { }
+
+      /**
+       *  @brief  Construct string from an initializer list.
+       *  @param  __l  std::initializer_list of characters.
+       *  @param  __a  Allocator to use (default is default allocator).
+       */
+      __versa_string(std::initializer_list<_CharT> __l,
+		     const _Alloc& __a = _Alloc())
+      : __vstring_base(__l.begin(), __l.end(), __a) { }
+#endif
+
+      /**
+       *  @brief  Construct string as copy of a substring.
+       *  @param  __str  Source string.
+       *  @param  __pos  Index of first character to copy from.
+       *  @param  __n  Number of characters to copy (default remainder).
+       */
+      __versa_string(const __versa_string& __str, size_type __pos,
+		     size_type __n = npos)
+      : __vstring_base(__str._M_data()
+		       + __str._M_check(__pos,
+					"__versa_string::__versa_string"),
+		       __str._M_data() + __str._M_limit(__pos, __n)
+		       + __pos, _Alloc()) { }
+
+      /**
+       *  @brief  Construct string as copy of a substring.
+       *  @param  __str  Source string.
+       *  @param  __pos  Index of first character to copy from.
+       *  @param  __n  Number of characters to copy.
+       *  @param  __a  Allocator to use.
+       */
+      __versa_string(const __versa_string& __str, size_type __pos,
+		     size_type __n, const _Alloc& __a)
+      : __vstring_base(__str._M_data()
+		       + __str._M_check(__pos,
+					"__versa_string::__versa_string"),
+		       __str._M_data() + __str._M_limit(__pos, __n)
+		       + __pos, __a) { }
+
+      /**
+       *  @brief  Construct string initialized by a character array.
+       *  @param  __s  Source character array.
+       *  @param  __n  Number of characters to copy.
+       *  @param  __a  Allocator to use (default is default allocator).
+       *
+       *  NB: @a __s must have at least @a __n characters, '\\0' has no special
+       *  meaning.
+       */
+      __versa_string(const _CharT* __s, size_type __n,
+		     const _Alloc& __a = _Alloc())
+      : __vstring_base(__s, __s + __n, __a) { }
+
+      /**
+       *  @brief  Construct string as copy of a C string.
+       *  @param  __s  Source C string.
+       *  @param  __a  Allocator to use (default is default allocator).
+       */
+      __versa_string(const _CharT* __s, const _Alloc& __a = _Alloc())
+      : __vstring_base(__s, __s ? __s + traits_type::length(__s) :
+		       __s + npos, __a) { }
+
+      /**
+       *  @brief  Construct string as multiple characters.
+       *  @param  __n  Number of characters.
+       *  @param  __c  Character to use.
+       *  @param  __a  Allocator to use (default is default allocator).
+       */
+      __versa_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
+      : __vstring_base(__n, __c, __a) { }
+
+      /**
+       *  @brief  Construct string as copy of a range.
+       *  @param  __beg  Start of range.
+       *  @param  __end  End of range.
+       *  @param  __a  Allocator to use (default is default allocator).
+       */
+      template<class _InputIterator>
+        __versa_string(_InputIterator __beg, _InputIterator __end,
+		       const _Alloc& __a = _Alloc())
+	: __vstring_base(__beg, __end, __a) { }
+
+      /**
+       *  @brief  Destroy the string instance.
+       */
+      ~__versa_string() { }	
+
+      /**
+       *  @brief  Assign the value of @a str to this string.
+       *  @param  __str  Source string.
+       */
+      __versa_string&
+      operator=(const __versa_string& __str) 
+      { return this->assign(__str); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  String move assignment operator.
+       *  @param  __str  Source string.
+       *
+       *  The contents of @a __str are moved into this string (without
+       *  copying).  @a __str is a valid, but unspecified string.
+       */
+      __versa_string&
+      operator=(__versa_string&& __str)
+      {
+	// NB: DR 1204.
+	this->swap(__str);
+	return *this;
+      }
+
+      /**
+       *  @brief  Set value to string constructed from initializer list.
+       *  @param  __l  std::initializer_list.
+       */
+      __versa_string&
+      operator=(std::initializer_list<_CharT> __l)
+      {
+	this->assign(__l.begin(), __l.end());
+	return *this;
+      }
+#endif
+
+      /**
+       *  @brief  Copy contents of @a __s into this string.
+       *  @param  __s  Source null-terminated string.
+       */
+      __versa_string&
+      operator=(const _CharT* __s) 
+      { return this->assign(__s); }
+
+      /**
+       *  @brief  Set value to string of length 1.
+       *  @param  __c  Source character.
+       *
+       *  Assigning to a character makes this string length 1 and
+       *  (*this)[0] == @a __c.
+       */
+      __versa_string&
+      operator=(_CharT __c) 
+      { 
+	this->assign(1, __c); 
+	return *this;
+      }
+
+      // Iterators:
+      /**
+       *  Returns a read/write iterator that points to the first character in
+       *  the %string.  Unshares the string.
+       */
+      iterator
+      begin()
+      {
+	this->_M_leak();
+	return iterator(this->_M_data());
+      }
+
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  character in the %string.
+       */
+      const_iterator
+      begin() const
+      { return const_iterator(this->_M_data()); }
+
+      /**
+       *  Returns a read/write iterator that points one past the last
+       *  character in the %string.  Unshares the string.
+       */
+      iterator
+      end()
+      {
+	this->_M_leak();
+	return iterator(this->_M_data() + this->size());
+      }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the
+       *  last character in the %string.
+       */
+      const_iterator
+      end() const
+      { return const_iterator(this->_M_data() + this->size()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to the last
+       *  character in the %string.  Iteration is done in reverse element
+       *  order.  Unshares the string.
+       */
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last character in the %string.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read/write reverse iterator that points to one before the
+       *  first character in the %string.  Iteration is done in reverse
+       *  element order.  Unshares the string.
+       */
+      reverse_iterator
+      rend()
+      { return reverse_iterator(this->begin()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first character in the %string.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(this->begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read-only (constant) iterator that points to the first
+       *  character in the %string.
+       */
+      const_iterator
+      cbegin() const
+      { return const_iterator(this->_M_data()); }
+
+      /**
+       *  Returns a read-only (constant) iterator that points one past the
+       *  last character in the %string.
+       */
+      const_iterator
+      cend() const
+      { return const_iterator(this->_M_data() + this->size()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to the last character in the %string.  Iteration is done in
+       *  reverse element order.
+       */
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(this->end()); }
+
+      /**
+       *  Returns a read-only (constant) reverse iterator that points
+       *  to one before the first character in the %string.  Iteration
+       *  is done in reverse element order.
+       */
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(this->begin()); }
+#endif
+
+    public:
+      // Capacity:
+      ///  Returns the number of characters in the string, not including any
+      ///  null-termination.
+      size_type
+      size() const
+      { return this->_M_length(); }
+
+      ///  Returns the number of characters in the string, not including any
+      ///  null-termination.
+      size_type
+      length() const
+      { return this->_M_length(); }
+
+      /// Returns the size() of the largest possible %string.
+      size_type
+      max_size() const
+      { return this->_M_max_size(); }
+
+      /**
+       *  @brief  Resizes the %string to the specified number of characters.
+       *  @param  __n  Number of characters the %string should contain.
+       *  @param  __c  Character to fill any new elements.
+       *
+       *  This function will %resize the %string to the specified
+       *  number of characters.  If the number is smaller than the
+       *  %string's current size the %string is truncated, otherwise
+       *  the %string is extended and new elements are set to @a __c.
+       */
+      void
+      resize(size_type __n, _CharT __c);
+
+      /**
+       *  @brief  Resizes the %string to the specified number of characters.
+       *  @param  __n  Number of characters the %string should contain.
+       *
+       *  This function will resize the %string to the specified
+       *  length.  If the new size is smaller than the %string's
+       *  current size the %string is truncated, otherwise the %string
+       *  is extended and new characters are default-constructed.  For
+       *  basic types such as char, this means setting them to 0.
+       */
+      void
+      resize(size_type __n)
+      { this->resize(__n, _CharT()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /// A non-binding request to reduce capacity() to size().
+      void
+      shrink_to_fit()
+      {
+	__try
+	  { this->reserve(0); }
+	__catch(...)
+	  { }
+      }
+#endif
+
+      /**
+       *  Returns the total number of characters that the %string can
+       *  hold before needing to allocate more memory.
+       */
+      size_type
+      capacity() const
+      { return this->_M_capacity(); }
+
+      /**
+       *  @brief  Attempt to preallocate enough memory for specified number of
+       *          characters.
+       *  @param  __res_arg  Number of characters required.
+       *  @throw  std::length_error  If @a __res_arg exceeds @c max_size().
+       *
+       *  This function attempts to reserve enough memory for the
+       *  %string to hold the specified number of characters.  If the
+       *  number requested is more than max_size(), length_error is
+       *  thrown.
+       *
+       *  The advantage of this function is that if optimal code is a
+       *  necessity and the user can determine the string length that
+       *  will be required, the user can reserve the memory in
+       *  %advance, and thus prevent a possible reallocation of memory
+       *  and copying of %string data.
+       */
+      void
+      reserve(size_type __res_arg = 0)
+      { this->_M_reserve(__res_arg); }
+
+      /**
+       *  Erases the string, making it empty.
+       */
+      void
+      clear()
+      { this->_M_clear(); }
+
+      /**
+       *  Returns true if the %string is empty.  Equivalent to 
+       *  <code>*this == ""</code>.
+       */
+      bool
+      empty() const
+      { return this->size() == 0; }
+
+      // Element access:
+      /**
+       *  @brief  Subscript access to the data contained in the %string.
+       *  @param  __pos  The index of the character to access.
+       *  @return  Read-only (constant) reference to the character.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)
+       */
+      const_reference
+      operator[] (size_type __pos) const
+      {
+	_GLIBCXX_DEBUG_ASSERT(__pos <= this->size());
+	return this->_M_data()[__pos];
+      }
+
+      /**
+       *  @brief  Subscript access to the data contained in the %string.
+       *  @param  __pos  The index of the character to access.
+       *  @return  Read/write reference to the character.
+       *
+       *  This operator allows for easy, array-style, data access.
+       *  Note that data access with this operator is unchecked and
+       *  out_of_range lookups are not defined. (For checked lookups
+       *  see at().)  Unshares the string.
+       */
+      reference
+      operator[](size_type __pos)
+      {
+        // allow pos == size() as v3 extension:
+	_GLIBCXX_DEBUG_ASSERT(__pos <= this->size());
+        // but be strict in pedantic mode:
+	_GLIBCXX_DEBUG_PEDASSERT(__pos < this->size());
+	this->_M_leak();
+	return this->_M_data()[__pos];
+      }
+
+      /**
+       *  @brief  Provides access to the data contained in the %string.
+       *  @param __n The index of the character to access.
+       *  @return  Read-only (const) reference to the character.
+       *  @throw  std::out_of_range  If @a __n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter
+       *  is first checked that it is in the range of the string.  The
+       *  function throws out_of_range if the check fails.
+       */
+      const_reference
+      at(size_type __n) const
+      {
+	if (__n >= this->size())
+	  std::__throw_out_of_range(__N("__versa_string::at"));
+	return this->_M_data()[__n];
+      }
+
+      /**
+       *  @brief  Provides access to the data contained in the %string.
+       *  @param __n The index of the character to access.
+       *  @return  Read/write reference to the character.
+       *  @throw  std::out_of_range  If @a __n is an invalid index.
+       *
+       *  This function provides for safer data access.  The parameter
+       *  is first checked that it is in the range of the string.  The
+       *  function throws out_of_range if the check fails.  Success
+       *  results in unsharing the string.
+       */
+      reference
+      at(size_type __n)
+      {
+	if (__n >= this->size())
+	  std::__throw_out_of_range(__N("__versa_string::at"));
+	this->_M_leak();
+	return this->_M_data()[__n];
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  Returns a read/write reference to the data at the first
+       *  element of the %string.
+       */
+      reference
+      front()
+      { return operator[](0); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the first
+       *  element of the %string.
+       */
+      const_reference
+      front() const
+      { return operator[](0); }
+
+      /**
+       *  Returns a read/write reference to the data at the last
+       *  element of the %string.
+       */
+      reference
+      back()
+      { return operator[](this->size() - 1); }
+
+      /**
+       *  Returns a read-only (constant) reference to the data at the
+       *  last element of the %string.
+       */
+      const_reference
+      back() const
+      { return operator[](this->size() - 1); }
+#endif
+
+      // Modifiers:
+      /**
+       *  @brief  Append a string to this string.
+       *  @param __str  The string to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      operator+=(const __versa_string& __str)
+      { return this->append(__str); }
+
+      /**
+       *  @brief  Append a C string.
+       *  @param __s  The C string to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      operator+=(const _CharT* __s)
+      { return this->append(__s); }
+
+      /**
+       *  @brief  Append a character.
+       *  @param __c  The character to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      operator+=(_CharT __c)
+      { 
+	this->push_back(__c);
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Append an initializer_list of characters.
+       *  @param __l  The initializer_list of characters to be appended.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      operator+=(std::initializer_list<_CharT> __l)
+      { return this->append(__l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Append a string to this string.
+       *  @param __str  The string to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      append(const __versa_string& __str)
+      { return _M_append(__str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Append a substring.
+       *  @param __str  The string to append.
+       *  @param __pos  Index of the first character of str to append.
+       *  @param __n  The number of characters to append.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range if @a pos is not a valid index.
+       *
+       *  This function appends @a __n characters from @a __str
+       *  starting at @a __pos to this string.  If @a __n is is larger
+       *  than the number of available characters in @a __str, the
+       *  remainder of @a __str is appended.
+       */
+      __versa_string&
+      append(const __versa_string& __str, size_type __pos, size_type __n)
+      { return _M_append(__str._M_data()
+			 + __str._M_check(__pos, "__versa_string::append"),
+			 __str._M_limit(__pos, __n)); }
+
+      /**
+       *  @brief  Append a C substring.
+       *  @param __s  The C string to append.
+       *  @param __n  The number of characters to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      append(const _CharT* __s, size_type __n)
+      {
+	__glibcxx_requires_string_len(__s, __n);
+	_M_check_length(size_type(0), __n, "__versa_string::append");
+	return _M_append(__s, __n);
+      }
+
+      /**
+       *  @brief  Append a C string.
+       *  @param __s  The C string to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      append(const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	const size_type __n = traits_type::length(__s);
+	_M_check_length(size_type(0), __n, "__versa_string::append");
+	return _M_append(__s, __n);
+      }
+
+      /**
+       *  @brief  Append multiple characters.
+       *  @param __n  The number of characters to append.
+       *  @param __c  The character to use.
+       *  @return  Reference to this string.
+       *
+       *  Appends n copies of c to this string.
+       */
+      __versa_string&
+      append(size_type __n, _CharT __c)
+      { return _M_replace_aux(this->size(), size_type(0), __n, __c); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Append an initializer_list of characters.
+       *  @param __l  The initializer_list of characters to append.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      append(std::initializer_list<_CharT> __l)
+      { return this->append(__l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Append a range of characters.
+       *  @param __first  Iterator referencing the first character to append.
+       *  @param __last  Iterator marking the end of the range.
+       *  @return  Reference to this string.
+       *
+       *  Appends characters in the range [first,last) to this string.
+       */
+      template<class _InputIterator>
+        __versa_string&
+        append(_InputIterator __first, _InputIterator __last)
+        { return this->replace(_M_iend(), _M_iend(), __first, __last); }
+
+      /**
+       *  @brief  Append a single character.
+       *  @param __c  Character to append.
+       */
+      void
+      push_back(_CharT __c)
+      { 
+	const size_type __size = this->size();
+	if (__size + 1 > this->capacity() || this->_M_is_shared())
+	  this->_M_mutate(__size, size_type(0), 0, size_type(1));
+	traits_type::assign(this->_M_data()[__size], __c);
+	this->_M_set_length(__size + 1);
+      }
+
+      /**
+       *  @brief  Set value to contents of another string.
+       *  @param  __str  Source string to use.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      assign(const __versa_string& __str)
+      {
+	this->_M_assign(__str);
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Set value to contents of another string.
+       *  @param  __str  Source string to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets this string to the exact contents of @a __str.
+       *  @a __str is a valid, but unspecified string.
+       */
+      __versa_string&
+      assign(__versa_string&& __str)
+      {
+	this->swap(__str);
+	return *this;
+      }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Set value to a substring of a string.
+       *  @param __str  The string to use.
+       *  @param __pos  Index of the first character of str.
+       *  @param __n  Number of characters to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range if @a __pos is not a valid index.
+       *
+       *  This function sets this string to the substring of @a __str
+       *  consisting of @a __n characters at @a __pos.  If @a __n is
+       *  is larger than the number of available characters in @a
+       *  __str, the remainder of @a __str is used.
+       */
+      __versa_string&
+      assign(const __versa_string& __str, size_type __pos, size_type __n)
+      { return _M_replace(size_type(0), this->size(), __str._M_data()
+			  + __str._M_check(__pos, "__versa_string::assign"),
+			  __str._M_limit(__pos, __n)); }
+
+      /**
+       *  @brief  Set value to a C substring.
+       *  @param __s  The C string to use.
+       *  @param __n  Number of characters to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to the first @a
+       *  __n characters of @a __s.  If @a __n is is larger than the
+       *  number of available characters in @a __s, the remainder of
+       *  @a __s is used.
+       */
+      __versa_string&
+      assign(const _CharT* __s, size_type __n)
+      {
+	__glibcxx_requires_string_len(__s, __n);
+	return _M_replace(size_type(0), this->size(), __s, __n);
+      }
+
+      /**
+       *  @brief  Set value to contents of a C string.
+       *  @param __s  The C string to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to the value of
+       *  @a __s.  The data is copied, so there is no dependence on @a
+       *  __s once the function returns.
+       */
+      __versa_string&
+      assign(const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return _M_replace(size_type(0), this->size(), __s,
+			  traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Set value to multiple characters.
+       *  @param __n  Length of the resulting string.
+       *  @param __c  The character to use.
+       *  @return  Reference to this string.
+       *
+       *  This function sets the value of this string to @a __n copies of
+       *  character @a __c.
+       */
+      __versa_string&
+      assign(size_type __n, _CharT __c)
+      { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
+
+      /**
+       *  @brief  Set value to a range of characters.
+       *  @param __first  Iterator referencing the first character to append.
+       *  @param __last  Iterator marking the end of the range.
+       *  @return  Reference to this string.
+       *
+       *  Sets value of string to characters in the range
+       *  [first,last).
+      */
+      template<class _InputIterator>
+        __versa_string&
+        assign(_InputIterator __first, _InputIterator __last)
+        { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Set value to an initializer_list of characters.
+       *  @param __l  The initializer_list of characters to assign.
+       *  @return  Reference to this string.
+       */
+      __versa_string&
+      assign(std::initializer_list<_CharT> __l)
+      { return this->assign(__l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Insert multiple characters.
+       *  @param __p  Iterator referencing location in string to insert at.
+       *  @param __n  Number of characters to insert
+       *  @param __c  The character to insert.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts @a __n copies of character @a __c starting at the
+       *  position referenced by iterator @a __p.  If adding
+       *  characters causes the length to exceed max_size(),
+       *  length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      void
+      insert(iterator __p, size_type __n, _CharT __c)
+      {	this->replace(__p, __p, __n, __c);  }
+
+      /**
+       *  @brief  Insert a range of characters.
+       *  @param __p  Iterator referencing location in string to insert at.
+       *  @param __beg  Start of range.
+       *  @param __end  End of range.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts characters in range [beg,end).  If adding characters
+       *  causes the length to exceed max_size(), length_error is
+       *  thrown.  The value of the string doesn't change if an error
+       *  is thrown.
+      */
+      template<class _InputIterator>
+        void
+        insert(iterator __p, _InputIterator __beg, _InputIterator __end)
+        { this->replace(__p, __p, __beg, __end); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Insert an initializer_list of characters.
+       *  @param __p  Iterator referencing location in string to insert at.
+       *  @param __l  The initializer_list of characters to insert.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       */
+      void
+      insert(iterator __p, std::initializer_list<_CharT> __l)
+      { this->insert(__p, __l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+      /**
+       *  @brief  Insert value of a string.
+       *  @param __pos1  Iterator referencing location in string to insert at.
+       *  @param __str  The string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts value of @a __str starting at @a __pos1.  If adding
+       *  characters causes the length to exceed max_size(),
+       *  length_error is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      __versa_string&
+      insert(size_type __pos1, const __versa_string& __str)
+      { return this->replace(__pos1, size_type(0),
+			     __str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Insert a substring.
+       *  @param __pos1  Iterator referencing location in string to insert at.
+       *  @param __str  The string to insert.
+       *  @param __pos2  Start of characters in str to insert.
+       *  @param __n  Number of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a __pos1 > size() or
+       *  @a __pos2 > @a __str.size().
+       *
+       *  Starting at @a __pos1, insert @a __n character of @a __str
+       *  beginning with @a __pos2.  If adding characters causes the
+       *  length to exceed max_size(), length_error is thrown.  If @a
+       *  __pos1 is beyond the end of this string or @a __pos2 is
+       *  beyond the end of @a __str, out_of_range is thrown.  The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      insert(size_type __pos1, const __versa_string& __str,
+	     size_type __pos2, size_type __n)
+      { return this->replace(__pos1, size_type(0), __str._M_data()
+			     + __str._M_check(__pos2, "__versa_string::insert"),
+			     __str._M_limit(__pos2, __n)); }
+
+      /**
+       *  @brief  Insert a C substring.
+       *  @param __pos  Iterator referencing location in string to insert at.
+       *  @param __s  The C string to insert.
+       *  @param __n  The number of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a __pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts the first @a __n characters of @a __s starting at @a
+       *  __pos.  If adding characters causes the length to exceed
+       *  max_size(), length_error is thrown.  If @a __pos is beyond
+       *  end(), out_of_range is thrown.  The value of the string
+       *  doesn't change if an error is thrown.
+      */
+      __versa_string&
+      insert(size_type __pos, const _CharT* __s, size_type __n)
+      { return this->replace(__pos, size_type(0), __s, __n); }
+
+      /**
+       *  @brief  Insert a C string.
+       *  @param __pos  Iterator referencing location in string to insert at.
+       *  @param __s  The C string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a __pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts the first @a __n characters of @a __s starting at @a
+       *  __pos.  If adding characters causes the length to exceed
+       *  max_size(), length_error is thrown.  If @a __pos is beyond
+       *  end(), out_of_range is thrown.  The value of the string
+       *  doesn't change if an error is thrown.
+      */
+      __versa_string&
+      insert(size_type __pos, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->replace(__pos, size_type(0), __s,
+			     traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Insert multiple characters.
+       *  @param __pos  Index in string to insert at.
+       *  @param __n  Number of characters to insert
+       *  @param __c  The character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *  @throw  std::out_of_range  If @a __pos is beyond the end of this
+       *  string.
+       *
+       *  Inserts @a __n copies of character @a __c starting at index
+       *  @a __pos.  If adding characters causes the length to exceed
+       *  max_size(), length_error is thrown.  If @a __pos > length(),
+       *  out_of_range is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      __versa_string&
+      insert(size_type __pos, size_type __n, _CharT __c)
+      { return _M_replace_aux(_M_check(__pos, "__versa_string::insert"),
+			      size_type(0), __n, __c); }
+
+      /**
+       *  @brief  Insert one character.
+       *  @param __p  Iterator referencing position in string to insert at.
+       *  @param __c  The character to insert.
+       *  @return  Iterator referencing newly inserted char.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Inserts character @a __c at position referenced by @a __p.
+       *  If adding character causes the length to exceed max_size(),
+       *  length_error is thrown.  If @a __p is beyond end of string,
+       *  out_of_range is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      iterator
+      insert(iterator __p, _CharT __c)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
+	const size_type __pos = __p - _M_ibegin();
+	_M_replace_aux(__pos, size_type(0), size_type(1), __c);
+	this->_M_set_leaked();
+	return iterator(this->_M_data() + __pos);
+      }
+
+      /**
+       *  @brief  Remove characters.
+       *  @param __pos  Index of first character to remove (default 0).
+       *  @param __n  Number of characters to remove (default remainder).
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos is beyond the end of this
+       *  string.
+       *
+       *  Removes @a __n characters from this string starting at @a
+       *  __pos.  The length of the string is reduced by @a __n.  If
+       *  there are < @a __n characters to remove, the remainder of
+       *  the string is truncated.  If @a __p is beyond end of string,
+       *  out_of_range is thrown.  The value of the string doesn't
+       *  change if an error is thrown.
+      */
+      __versa_string&
+      erase(size_type __pos = 0, size_type __n = npos)
+      { 
+	this->_M_erase(_M_check(__pos, "__versa_string::erase"),
+		       _M_limit(__pos, __n));
+	return *this;
+      }
+
+      /**
+       *  @brief  Remove one character.
+       *  @param __position  Iterator referencing the character to remove.
+       *  @return  iterator referencing same location after removal.
+       *
+       *  Removes the character at @a __position from this string. The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      iterator
+      erase(iterator __position)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
+				 && __position < _M_iend());
+	const size_type __pos = __position - _M_ibegin();
+	this->_M_erase(__pos, size_type(1));
+	this->_M_set_leaked();
+	return iterator(this->_M_data() + __pos);
+      }
+
+      /**
+       *  @brief  Remove a range of characters.
+       *  @param __first  Iterator referencing the first character to remove.
+       *  @param __last  Iterator referencing the end of the range.
+       *  @return  Iterator referencing location of first after removal.
+       *
+       *  Removes the characters in the range [first,last) from this
+       *  string.  The value of the string doesn't change if an error
+       *  is thrown.
+      */
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
+				 && __last <= _M_iend());
+        const size_type __pos = __first - _M_ibegin();
+	this->_M_erase(__pos, __last - __first);
+	this->_M_set_leaked();
+	return iterator(this->_M_data() + __pos);
+      }
+
+      /**
+       *  @brief  Replace characters with value from another string.
+       *  @param __pos  Index of first character to replace.
+       *  @param __n  Number of characters to be replaced.
+       *  @param __str  String to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos is beyond the end of this
+       *  string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos+n) from this
+       *  string.  In place, the value of @a __str is inserted.  If @a
+       *  __pos is beyond end of string, out_of_range is thrown.  If
+       *  the length of the result exceeds max_size(), length_error is
+       *  thrown.  The value of the string doesn't change if an error
+       *  is thrown.
+      */
+      __versa_string&
+      replace(size_type __pos, size_type __n, const __versa_string& __str)
+      { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Replace characters with value from another string.
+       *  @param __pos1  Index of first character to replace.
+       *  @param __n1  Number of characters to be replaced.
+       *  @param __str  String to insert.
+       *  @param __pos2  Index of first character of str to use.
+       *  @param __n2  Number of characters from str to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos1 > size() or @a __pos2 >
+       *  str.size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos1,pos1 + n) from
+       *  this string.  In place, the value of @a __str is inserted.
+       *  If @a __pos is beyond end of string, out_of_range is thrown.
+       *  If the length of the result exceeds max_size(), length_error
+       *  is thrown.  The value of the string doesn't change if an
+       *  error is thrown.
+      */
+      __versa_string&
+      replace(size_type __pos1, size_type __n1, const __versa_string& __str,
+	      size_type __pos2, size_type __n2)
+      {
+	return this->replace(__pos1, __n1, __str._M_data()
+			     + __str._M_check(__pos2,
+					      "__versa_string::replace"),
+			     __str._M_limit(__pos2, __n2));
+      }
+
+      /**
+       *  @brief  Replace characters with value of a C substring.
+       *  @param __pos  Index of first character to replace.
+       *  @param __n1  Number of characters to be replaced.
+       *  @param __s  C string to insert.
+       *  @param __n2  Number of characters from @a __s to use.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos1 > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this
+       *  string.  In place, the first @a __n2 characters of @a __s
+       *  are inserted, or all of @a __s if @a __n2 is too large.  If
+       *  @a __pos is beyond end of string, out_of_range is thrown.
+       *  If the length of result exceeds max_size(), length_error is
+       *  thrown.  The value of the string doesn't change if an error
+       *  is thrown.
+      */
+      __versa_string&
+      replace(size_type __pos, size_type __n1, const _CharT* __s,
+	      size_type __n2)
+      {
+	__glibcxx_requires_string_len(__s, __n2);
+	return _M_replace(_M_check(__pos, "__versa_string::replace"),
+			  _M_limit(__pos, __n1), __s, __n2);
+      }
+
+      /**
+       *  @brief  Replace characters with value of a C string.
+       *  @param __pos  Index of first character to replace.
+       *  @param __n1  Number of characters to be replaced.
+       *  @param __s  C string to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this
+       *  string.  In place, the characters of @a __s are inserted.  If
+       *  @a pos is beyond end of string, out_of_range is thrown.  If
+       *  the length of result exceeds max_size(), length_error is thrown.  
+       *  The value of the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      replace(size_type __pos, size_type __n1, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->replace(__pos, __n1, __s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Replace characters with multiple characters.
+       *  @param __pos  Index of first character to replace.
+       *  @param __n1  Number of characters to be replaced.
+       *  @param __n2  Number of characters to insert.
+       *  @param __c  Character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::out_of_range  If @a __pos > size().
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [pos,pos + n1) from this
+       *  string.  In place, @a __n2 copies of @a __c are inserted.
+       *  If @a __pos is beyond end of string, out_of_range is thrown.
+       *  If the length of result exceeds max_size(), length_error is
+       *  thrown.  The value of the string doesn't change if an error
+       *  is thrown.
+      */
+      __versa_string&
+      replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
+      { return _M_replace_aux(_M_check(__pos, "__versa_string::replace"),
+			      _M_limit(__pos, __n1), __n2, __c); }
+
+      /**
+       *  @brief  Replace range of characters with string.
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __str  String value to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the
+       *  value of @a __str is inserted.  If the length of result
+       *  exceeds max_size(), length_error is thrown.  The value of
+       *  the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      replace(iterator __i1, iterator __i2, const __versa_string& __str)
+      { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
+
+      /**
+       *  @brief  Replace range of characters with C substring.
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __s  C string value to insert.
+       *  @param __n  Number of characters from s to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the
+       *  first @a n characters of @a __s are inserted.  If the length
+       *  of result exceeds max_size(), length_error is thrown.  The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
+      }
+
+      /**
+       *  @brief  Replace range of characters with C string.
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __s  C string value to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, the
+       *  characters of @a __s are inserted.  If the length of result
+       *  exceeds max_size(), length_error is thrown.  The value of
+       *  the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      replace(iterator __i1, iterator __i2, const _CharT* __s)
+      {
+	__glibcxx_requires_string(__s);
+	return this->replace(__i1, __i2, __s, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Replace range of characters with multiple characters
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __n  Number of characters to insert.
+       *  @param __c  Character to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place, @a
+       *  __n copies of @a __c are inserted.  If the length of result
+       *  exceeds max_size(), length_error is thrown.  The value of
+       *  the string doesn't change if an error is thrown.
+      */
+      __versa_string&
+      replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
+      }
+
+      /**
+       *  @brief  Replace range of characters with range.
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __k1  Iterator referencing start of range to insert.
+       *  @param __k2  Iterator referencing end of range to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place,
+       *  characters in the range [k1,k2) are inserted.  If the length
+       *  of result exceeds max_size(), length_error is thrown.  The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      template<class _InputIterator>
+        __versa_string&
+        replace(iterator __i1, iterator __i2,
+		_InputIterator __k1, _InputIterator __k2)
+        {
+	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				   && __i2 <= _M_iend());
+	  __glibcxx_requires_valid_range(__k1, __k2);
+	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+	  return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
+	}
+
+      // Specializations for the common case of pointer and iterator:
+      // useful to avoid the overhead of temporary buffering in _M_replace.
+      __versa_string&
+      replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1, __k2 - __k1);
+      }
+
+      __versa_string&
+      replace(iterator __i1, iterator __i2,
+	      const _CharT* __k1, const _CharT* __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1, __k2 - __k1);
+      }
+
+      __versa_string&
+      replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1.base(), __k2 - __k1);
+      }
+
+      __versa_string&
+      replace(iterator __i1, iterator __i2,
+	      const_iterator __k1, const_iterator __k2)
+      {
+	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+				 && __i2 <= _M_iend());
+	__glibcxx_requires_valid_range(__k1, __k2);
+	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+			     __k1.base(), __k2 - __k1);
+      }
+      
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Replace range of characters with initializer_list.
+       *  @param __i1  Iterator referencing start of range to replace.
+       *  @param __i2  Iterator referencing end of range to replace.
+       *  @param __l  The initializer_list of characters to insert.
+       *  @return  Reference to this string.
+       *  @throw  std::length_error  If new length exceeds @c max_size().
+       *
+       *  Removes the characters in the range [i1,i2).  In place,
+       *  characters in the range [k1,k2) are inserted.  If the length
+       *  of result exceeds max_size(), length_error is thrown.  The
+       *  value of the string doesn't change if an error is thrown.
+      */
+      __versa_string& replace(iterator __i1, iterator __i2,
+			      std::initializer_list<_CharT> __l)
+      { return this->replace(__i1, __i2, __l.begin(), __l.end()); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    private:
+      template<class _Integer>
+	__versa_string&
+	_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
+			    _Integer __val, std::__true_type)
+        { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
+
+      template<class _InputIterator>
+	__versa_string&
+	_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+			    _InputIterator __k2, std::__false_type);
+
+      __versa_string&
+      _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+		     _CharT __c);
+
+      __versa_string&
+      _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
+		 const size_type __len2);
+
+      __versa_string&
+      _M_append(const _CharT* __s, size_type __n);
+
+    public:
+
+      /**
+       *  @brief  Copy substring into C string.
+       *  @param __s  C string to copy value into.
+       *  @param __n  Number of characters to copy.
+       *  @param __pos  Index of first character to copy.
+       *  @return  Number of characters actually copied
+       *  @throw  std::out_of_range  If pos > size().
+       *
+       *  Copies up to @a __n characters starting at @a __pos into the
+       *  C string @a s.  If @a __pos is greater than size(),
+       *  out_of_range is thrown.
+      */
+      size_type
+      copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Swap contents with another string.
+       *  @param __s  String to swap with.
+       *
+       *  Exchanges the contents of this string with that of @a __s in
+       *  constant time.
+      */
+      void
+      swap(__versa_string& __s)
+      { this->_M_swap(__s); }
+
+      // String operations:
+      /**
+       *  @brief  Return const pointer to null-terminated contents.
+       *
+       *  This is a handle to internal data.  Do not modify or dire things may
+       *  happen.
+      */
+      const _CharT*
+      c_str() const
+      { return this->_M_data(); }
+
+      /**
+       *  @brief  Return const pointer to contents.
+       *
+       *  This is a handle to internal data.  Do not modify or dire things may
+       *  happen.
+      */
+      const _CharT*
+      data() const
+      { return this->_M_data(); }
+
+      /**
+       *  @brief  Return copy of allocator used to construct this string.
+      */
+      allocator_type
+      get_allocator() const
+      { return allocator_type(this->_M_get_allocator()); }
+
+      /**
+       *  @brief  Find position of a C substring.
+       *  @param __s  C string to locate.
+       *  @param __pos  Index of character to search from.
+       *  @param __n  Number of characters from @a __s to search for.
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for the first @a
+       *  __n characters in @a __s within this string.  If found,
+       *  returns the index where it begins.  If not found, returns
+       *  npos.
+      */
+      size_type
+      find(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find position of a string.
+       *  @param __str  String to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for value of @a
+       *  __str within this string.  If found, returns the index where
+       *  it begins.  If not found, returns npos.
+      */
+      size_type
+      find(const __versa_string& __str, size_type __pos = 0) const
+      { return this->find(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a C string.
+       *  @param __s  C string to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of start of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for the value of @a
+       *  __s within this string.  If found, returns the index where
+       *  it begins.  If not found, returns npos.
+      */
+      size_type
+      find(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a character.
+       *  @param __c  Character to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for @a __c within
+       *  this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find(_CharT __c, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Find last position of a string.
+       *  @param __str  String to locate.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of start of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for value of @a
+       *  __str within this string.  If found, returns the index where
+       *  it begins.  If not found, returns npos.
+      */
+      size_type
+      rfind(const __versa_string& __str, size_type __pos = npos) const
+      { return this->rfind(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a C substring.
+       *  @param __s  C string to locate.
+       *  @param __pos  Index of character to search back from.
+       *  @param __n  Number of characters from s to search for.
+       *  @return  Index of start of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for the first @a
+       *  __n characters in @a __s within this string.  If found,
+       *  returns the index where it begins.  If not found, returns
+       *  npos.
+      */
+      size_type
+      rfind(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find last position of a C string.
+       *  @param __s  C string to locate.
+       *  @param __pos  Index of character to start search at (default end).
+       *  @return  Index of start of  last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for the value of
+       *  @a __s within this string.  If found, returns the index
+       *  where it begins.  If not found, returns npos.
+      */
+      size_type
+      rfind(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->rfind(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a character.
+       *  @param __c  Character to locate.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for @a __c within
+       *  this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      rfind(_CharT __c, size_type __pos = npos) const;
+
+      /**
+       *  @brief  Find position of a character of string.
+       *  @param __str  String containing characters to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for one of the characters of
+       *  @a __str within this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_first_of(const __versa_string& __str, size_type __pos = 0) const
+      { return this->find_first_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a character of C substring.
+       *  @param __s  String containing characters to locate.
+       *  @param __pos  Index of character to search from.
+       *  @param __n  Number of characters from s to search for.
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for one of the
+       *  first @a __n characters of @a __s within this string.  If
+       *  found, returns the index where it was found.  If not found,
+       *  returns npos.
+      */
+      size_type
+      find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find position of a character of C string.
+       *  @param __s  String containing characters to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for one of the
+       *  characters of @a __s within this string.  If found, returns
+       *  the index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_of(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_first_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a character.
+       *  @param __c  Character to locate.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for the character
+       *  @a __c within this string.  If found, returns the index
+       *  where it was found.  If not found, returns npos.
+       *
+       *  Note: equivalent to find(c, pos).
+      */
+      size_type
+      find_first_of(_CharT __c, size_type __pos = 0) const
+      { return this->find(__c, __pos); }
+
+      /**
+       *  @brief  Find last position of a character of string.
+       *  @param __str  String containing characters to locate.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for one of the
+       *  characters of @a __str within this string.  If found,
+       *  returns the index where it was found.  If not found, returns
+       *  npos.
+      */
+      size_type
+      find_last_of(const __versa_string& __str, size_type __pos = npos) const
+      { return this->find_last_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a character of C substring.
+       *  @param __s  C string containing characters to locate.
+       *  @param __pos  Index of character to search back from.
+       *  @param __n  Number of characters from s to search for.
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for one of the
+       *  first @a __n characters of @a __s within this string.  If
+       *  found, returns the index where it was found.  If not found,
+       *  returns npos.
+      */
+      size_type
+      find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
+
+      /**
+       *  @brief  Find last position of a character of C string.
+       *  @param __s  C string containing characters to locate.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for one of the
+       *  characters of @a __s within this string.  If found, returns
+       *  the index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_of(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_last_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a character.
+       *  @param __c  Character to locate.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for @a __c within
+       *  this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+       *
+       *  Note: equivalent to rfind(c, pos).
+      */
+      size_type
+      find_last_of(_CharT __c, size_type __pos = npos) const
+      { return this->rfind(__c, __pos); }
+
+      /**
+       *  @brief  Find position of a character not in string.
+       *  @param __str  String containing characters to avoid.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for a character not
+       *  contained in @a __str within this string.  If found, returns
+       *  the index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const __versa_string& __str, size_type __pos = 0) const
+      { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find position of a character not in C substring.
+       *  @param __s  C string containing characters to avoid.
+       *  @param __pos  Index of character to search from.
+       *  @param __n  Number of characters from s to consider.
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for a character not
+       *  contained in the first @a __n characters of @a __s within
+       *  this string.  If found, returns the index where it was
+       *  found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const _CharT* __s, size_type __pos,
+			size_type __n) const;
+
+      /**
+       *  @brief  Find position of a character not in C string.
+       *  @param __s  C string containing characters to avoid.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for a character not
+       *  contained in @a __s within this string.  If found, returns
+       *  the index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(const _CharT* __s, size_type __pos = 0) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_first_not_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find position of a different character.
+       *  @param __c  Character to avoid.
+       *  @param __pos  Index of character to search from (default 0).
+       *  @return  Index of first occurrence.
+       *
+       *  Starting from @a __pos, searches forward for a character
+       *  other than @a __c within this string.  If found, returns the
+       *  index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_first_not_of(_CharT __c, size_type __pos = 0) const;
+
+      /**
+       *  @brief  Find last position of a character not in string.
+       *  @param __str  String containing characters to avoid.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for a character
+       *  not contained in @a __str within this string.  If found,
+       *  returns the index where it was found.  If not found, returns
+       *  npos.
+      */
+      size_type
+      find_last_not_of(const __versa_string& __str,
+		       size_type __pos = npos) const
+      { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
+
+      /**
+       *  @brief  Find last position of a character not in C substring.
+       *  @param __s  C string containing characters to avoid.
+       *  @param __pos  Index of character to search back from.
+       *  @param __n  Number of characters from s to consider.
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for a character
+       *  not contained in the first @a __n characters of @a __s
+       *  within this string.  If found, returns the index where it
+       *  was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_not_of(const _CharT* __s, size_type __pos,
+		       size_type __n) const;
+      /**
+       *  @brief  Find last position of a character not in C string.
+       *  @param __s  C string containing characters to avoid.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for a character
+       *  not contained in @a __s within this string.  If found,
+       *  returns the index where it was found.  If not found, returns
+       *  npos.
+      */
+      size_type
+      find_last_not_of(const _CharT* __s, size_type __pos = npos) const
+      {
+	__glibcxx_requires_string(__s);
+	return this->find_last_not_of(__s, __pos, traits_type::length(__s));
+      }
+
+      /**
+       *  @brief  Find last position of a different character.
+       *  @param __c  Character to avoid.
+       *  @param __pos  Index of character to search back from (default end).
+       *  @return  Index of last occurrence.
+       *
+       *  Starting from @a __pos, searches backward for a character
+       *  other than @a __c within this string.  If found, returns the
+       *  index where it was found.  If not found, returns npos.
+      */
+      size_type
+      find_last_not_of(_CharT __c, size_type __pos = npos) const;
+
+      /**
+       *  @brief  Get a substring.
+       *  @param __pos  Index of first character (default 0).
+       *  @param __n  Number of characters in substring (default remainder).
+       *  @return  The new string.
+       *  @throw  std::out_of_range  If pos > size().
+       *
+       *  Construct and return a new string using the @a __n
+       *  characters starting at @a __pos.  If the string is too
+       *  short, use the remainder of the characters.  If @a __pos is
+       *  beyond the end of the string, out_of_range is thrown.
+      */
+      __versa_string
+      substr(size_type __pos = 0, size_type __n = npos) const
+      {
+	return __versa_string(*this, _M_check(__pos, "__versa_string::substr"),
+			      __n);
+      }
+
+      /**
+       *  @brief  Compare to a string.
+       *  @param __str  String to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Returns an integer < 0 if this string is ordered before @a
+       *  __str, 0 if their values are equivalent, or > 0 if this
+       *  string is ordered after @a __str.  Determines the effective
+       *  length rlen of the strings to compare as the smallest of
+       *  size() and str.size().  The function then compares the two
+       *  strings by calling traits::compare(data(), str.data(),rlen).
+       *  If the result of the comparison is nonzero returns it,
+       *  otherwise the shorter one is ordered first.
+      */
+      int
+      compare(const __versa_string& __str) const
+      {
+	if (this->_M_compare(__str))
+	  return 0;
+
+	const size_type __size = this->size();
+	const size_type __osize = __str.size();
+	const size_type __len = std::min(__size, __osize);
+
+	int __r = traits_type::compare(this->_M_data(), __str.data(), __len);
+	if (!__r)
+	  __r = this->_S_compare(__size, __osize);
+	return __r;
+      }
+
+      /**
+       *  @brief  Compare substring to a string.
+       *  @param __pos  Index of first character of substring.
+       *  @param __n  Number of characters in substring.
+       *  @param __str  String to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a __n characters
+       *  starting at @a __pos.  Returns an integer < 0 if the
+       *  substring is ordered before @a __str, 0 if their values are
+       *  equivalent, or > 0 if the substring is ordered after @a
+       *  __str.  Determines the effective length rlen of the strings
+       *  to compare as the smallest of the length of the substring
+       *  and @a __str.size().  The function then compares the two
+       *  strings by calling
+       *  traits::compare(substring.data(),str.data(),rlen).  If the
+       *  result of the comparison is nonzero returns it, otherwise
+       *  the shorter one is ordered first.
+      */
+      int
+      compare(size_type __pos, size_type __n,
+	      const __versa_string& __str) const;
+
+      /**
+       *  @brief  Compare substring to a substring.
+       *  @param __pos1  Index of first character of substring.
+       *  @param __n1  Number of characters in substring.
+       *  @param __str  String to compare against.
+       *  @param __pos2  Index of first character of substring of str.
+       *  @param __n2  Number of characters in substring of str.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a __n1
+       *  characters starting at @a __pos1.  Form the substring of @a
+       *  __str from the @a __n2 characters starting at @a __pos2.
+       *  Returns an integer < 0 if this substring is ordered before
+       *  the substring of @a __str, 0 if their values are equivalent,
+       *  or > 0 if this substring is ordered after the substring of
+       *  @a __str.  Determines the effective length rlen of the
+       *  strings to compare as the smallest of the lengths of the
+       *  substrings.  The function then compares the two strings by
+       *  calling
+       *  traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen).
+       *  If the result of the comparison is nonzero returns it,
+       *  otherwise the shorter one is ordered first.
+      */
+      int
+      compare(size_type __pos1, size_type __n1, const __versa_string& __str,
+	      size_type __pos2, size_type __n2) const;
+
+      /**
+       *  @brief  Compare to a C string.
+       *  @param __s  C string to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Returns an integer < 0 if this string is ordered before @a
+       *  __s, 0 if their values are equivalent, or > 0 if this string
+       *  is ordered after @a __s.  Determines the effective length
+       *  rlen of the strings to compare as the smallest of size() and
+       *  the length of a string constructed from @a __s.  The
+       *  function then compares the two strings by calling
+       *  traits::compare(data(),s,rlen).  If the result of the
+       *  comparison is nonzero returns it, otherwise the shorter one
+       *  is ordered first.
+      */
+      int
+      compare(const _CharT* __s) const;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 5 String::compare specification questionable
+      /**
+       *  @brief  Compare substring to a C string.
+       *  @param __pos  Index of first character of substring.
+       *  @param __n1  Number of characters in substring.
+       *  @param __s  C string to compare against.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a __n1
+       *  characters starting at @a __pos.  Returns an integer < 0 if
+       *  the substring is ordered before @a __s, 0 if their values
+       *  are equivalent, or > 0 if the substring is ordered after @a
+       *  __s.  Determines the effective length rlen of the strings to
+       *  compare as the smallest of the length of the substring and
+       *  the length of a string constructed from @a __s.  The
+       *  function then compares the two string by calling
+       *  traits::compare(substring.data(),s,rlen).  If the result of
+       *  the comparison is nonzero returns it, otherwise the shorter
+       *  one is ordered first.
+      */
+      int
+      compare(size_type __pos, size_type __n1, const _CharT* __s) const;
+
+      /**
+       *  @brief  Compare substring against a character array.
+       *  @param __pos1  Index of first character of substring.
+       *  @param __n1  Number of characters in substring.
+       *  @param __s  character array to compare against.
+       *  @param __n2  Number of characters of s.
+       *  @return  Integer < 0, 0, or > 0.
+       *
+       *  Form the substring of this string from the @a __n1
+       *  characters starting at @a __pos1.  Form a string from the
+       *  first @a __n2 characters of @a __s.  Returns an integer < 0
+       *  if this substring is ordered before the string from @a __s,
+       *  0 if their values are equivalent, or > 0 if this substring
+       *  is ordered after the string from @a __s.  Determines the
+       *  effective length rlen of the strings to compare as the
+       *  smallest of the length of the substring and @a __n2.  The
+       *  function then compares the two strings by calling
+       *  traits::compare(substring.data(),s,rlen).  If the result of
+       *  the comparison is nonzero returns it, otherwise the shorter
+       *  one is ordered first.
+       *
+       *  NB: s must have at least n2 characters, <em>\\0</em> has no special
+       *  meaning.
+      */
+      int
+      compare(size_type __pos, size_type __n1, const _CharT* __s,
+	      size_type __n2) const;
+    };
+
+  // operator+
+  /**
+   *  @brief  Concatenate two strings.
+   *  @param __lhs  First string.
+   *  @param __rhs  Last string.
+   *  @return  New string with value of @a __lhs followed by @a __rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
+
+  /**
+   *  @brief  Concatenate C string and string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Last string.
+   *  @return  New string with value of @a __lhs followed by @a __rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const _CharT* __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
+
+  /**
+   *  @brief  Concatenate character and string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Last string.
+   *  @return  New string with @a __lhs followed by @a __rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(_CharT __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
+
+  /**
+   *  @brief  Concatenate string and C string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Last string.
+   *  @return  New string with @a __lhs followed by @a __rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const _CharT* __rhs);
+
+  /**
+   *  @brief  Concatenate string and character.
+   *  @param __lhs  First string.
+   *  @param __rhs  Last string.
+   *  @return  New string with @a __lhs followed by @a __rhs.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      _CharT __rhs);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return std::move(__lhs.append(__rhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
+    { return std::move(__rhs.insert(0, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
+	      __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
+    {
+      const auto __size = __lhs.size() + __rhs.size();
+      const bool __cond = (__size > __lhs.capacity()
+			   && __size <= __rhs.capacity());
+      return __cond ? std::move(__rhs.insert(0, __lhs))
+	            : std::move(__lhs.append(__rhs));
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const _CharT* __lhs,
+	      __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
+    { return std::move(__rhs.insert(0, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(_CharT __lhs,
+	      __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
+    { return std::move(__rhs.insert(0, 1, __lhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
+	      const _CharT* __rhs)
+    { return std::move(__lhs.append(__rhs)); }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
+	      _CharT __rhs)
+    { return std::move(__lhs.append(1, __rhs)); }
+#endif
+
+  // operator ==
+  /**
+   *  @brief  Test equivalence of two strings.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs.compare(@a __rhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator==(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  template<typename _CharT,
+	   template <typename, typename, typename> class _Base>
+    inline typename __enable_if<std::__is_char<_CharT>::__value, bool>::__type
+    operator==(const __versa_string<_CharT, std::char_traits<_CharT>,
+	       std::allocator<_CharT>, _Base>& __lhs,
+	       const __versa_string<_CharT, std::char_traits<_CharT>,
+	       std::allocator<_CharT>, _Base>& __rhs)
+    { return (__lhs.size() == __rhs.size()
+	      && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
+						    __lhs.size())); }
+
+  /**
+   *  @brief  Test equivalence of C string and string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __rhs.compare(@a __lhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator==(const _CharT* __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __rhs.compare(__lhs) == 0; }
+
+  /**
+   *  @brief  Test equivalence of string and C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs.compare(@a __rhs) == 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator==(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  // operator !=
+  /**
+   *  @brief  Test difference of two strings.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs.compare(@a __rhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator!=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   *  @brief  Test difference of C string and string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __rhs.compare(@a __lhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator!=(const _CharT* __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return !(__lhs == __rhs); }
+
+  /**
+   *  @brief  Test difference of string and C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs.compare(@a __rhs) != 0.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator!=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const _CharT* __rhs)
+    { return !(__lhs == __rhs); }
+
+  // operator <
+  /**
+   *  @brief  Test if string precedes string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs precedes @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   *  @brief  Test if string precedes C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs precedes @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const _CharT* __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   *  @brief  Test if C string precedes string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __lhs precedes @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<(const _CharT* __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __rhs.compare(__lhs) > 0; }
+
+  // operator >
+  /**
+   *  @brief  Test if string follows string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs follows @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   *  @brief  Test if string follows C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs follows @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const _CharT* __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   *  @brief  Test if C string follows string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __lhs follows @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>(const _CharT* __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __rhs.compare(__lhs) < 0; }
+
+  // operator <=
+  /**
+   *  @brief  Test if string doesn't follow string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs doesn't follow @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   *  @brief  Test if string doesn't follow C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs doesn't follow @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   *  @brief  Test if C string doesn't follow string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __lhs doesn't follow @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator<=(const _CharT* __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __rhs.compare(__lhs) >= 0; }
+
+  // operator >=
+  /**
+   *  @brief  Test if string doesn't precede string.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *  @return  True if @a __lhs doesn't precede @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   *  @brief  Test if string doesn't precede C string.
+   *  @param __lhs  String.
+   *  @param __rhs  C string.
+   *  @return  True if @a __lhs doesn't precede @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	       const _CharT* __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   *  @brief  Test if C string doesn't precede string.
+   *  @param __lhs  C string.
+   *  @param __rhs  String.
+   *  @return  True if @a __lhs doesn't precede @a __rhs.  False otherwise.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline bool
+    operator>=(const _CharT* __lhs,
+	       const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { return __rhs.compare(__lhs) <= 0; }
+
+  /**
+   *  @brief  Swap contents of two strings.
+   *  @param __lhs  First string.
+   *  @param __rhs  Second string.
+   *
+   *  Exchanges the contents of @a __lhs and @a __rhs in constant time.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline void
+    swap(__versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	 __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    { __lhs.swap(__rhs); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief  Read stream into a string.
+   *  @param __is  Input stream.
+   *  @param __str  Buffer to store into.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from @a __is into @a __str until whitespace is
+   *  found, the end of the stream is encountered, or str.max_size()
+   *  is reached.  If is.width() is non-zero, that is the limit on the
+   *  number of characters stored into @a __str.  Any previous
+   *  contents of @a __str are erased.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+           template <typename, typename, typename> class _Base>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __is,
+	       __gnu_cxx::__versa_string<_CharT, _Traits,
+	                                 _Alloc, _Base>& __str);
+
+  /**
+   *  @brief  Write string to a stream.
+   *  @param __os  Output stream.
+   *  @param __str  String to write out.
+   *  @return  Reference to the output stream.
+   *
+   *  Output characters of @a __str into os following the same rules as for
+   *  writing a C string.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __os,
+	       const __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc,
+	       _Base>& __str)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 586. string inserter not a formatted function
+      return __ostream_insert(__os, __str.data(), __str.size());
+    }
+
+  /**
+   *  @brief  Read a line from stream into a string.
+   *  @param __is  Input stream.
+   *  @param __str  Buffer to store into.
+   *  @param __delim  Character marking end of line.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from @a __is into @a __str until @a __delim is
+   *  found, the end of the stream is encountered, or str.max_size()
+   *  is reached.  If is.width() is non-zero, that is the limit on the
+   *  number of characters stored into @a __str.  Any previous
+   *  contents of @a __str are erased.  If @a delim was encountered,
+   *  it is extracted but not stored into @a __str.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+           template <typename, typename, typename> class _Base>
+    basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __is,
+	    __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str,
+	    _CharT __delim);
+
+  /**
+   *  @brief  Read a line from stream into a string.
+   *  @param __is  Input stream.
+   *  @param __str  Buffer to store into.
+   *  @return  Reference to the input stream.
+   *
+   *  Stores characters from is into @a __str until '\n' is
+   *  found, the end of the stream is encountered, or str.max_size()
+   *  is reached.  If is.width() is non-zero, that is the limit on the
+   *  number of characters stored into @a __str.  Any previous
+   *  contents of @a __str are erased.  If end of line was
+   *  encountered, it is extracted but not stored into @a __str.
+   */
+  template<typename _CharT, typename _Traits, typename _Alloc,
+           template <typename, typename, typename> class _Base>
+    inline basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __is,
+	    __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str)
+    { return getline(__is, __str, __is.widen('\n')); }      
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99))
+
+#include <ext/string_conversions.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // 21.4 Numeric Conversions [string.conversions].
+  inline int
+  stoi(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
+					__idx, __base); }
+
+  inline long
+  stol(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long
+  stoul(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(),
+			     __idx, __base); }
+
+  inline long long
+  stoll(const __vstring& __str, std::size_t* __idx = 0,	int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long long
+  stoull(const __vstring& __str, std::size_t* __idx, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(),
+			     __idx, __base); }
+
+  // NB: strtof vs strtod.
+  inline float
+  stof(const __vstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); }
+
+  inline double
+  stod(const __vstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); }
+
+  inline long double
+  stold(const __vstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); }
+
+  // NB: (v)snprintf vs sprintf.
+
+  // DR 1261.
+  inline __vstring
+  to_string(int __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, 4 * sizeof(int),
+					      "%d", __val); }
+
+  inline __vstring
+  to_string(unsigned __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
+					      4 * sizeof(unsigned),
+					      "%u", __val); }
+
+  inline __vstring
+  to_string(long __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
+					      4 * sizeof(long),
+					      "%ld", __val); }
+
+  inline __vstring
+  to_string(unsigned long __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
+					      4 * sizeof(unsigned long),
+					      "%lu", __val); }
+
+
+  inline __vstring
+  to_string(long long __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
+					      4 * sizeof(long long),
+					      "%lld", __val); }
+
+  inline __vstring
+  to_string(unsigned long long __val)
+  { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
+					      4 * sizeof(unsigned long long),
+					      "%llu", __val); }
+
+  inline __vstring
+  to_string(float __val)
+  {
+    const int __n = __numeric_traits<float>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n,
+					      "%f", __val);
+  }
+
+  inline __vstring
+  to_string(double __val)
+  {
+    const int __n = __numeric_traits<double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n,
+					      "%f", __val);
+  }
+
+  inline __vstring
+  to_string(long double __val)
+  {
+    const int __n = __numeric_traits<long double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n,
+					      "%Lf", __val);
+  }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  inline int 
+  stoi(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(),
+					__idx, __base); }
+
+  inline long 
+  stol(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long
+  stoul(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(),
+			     __idx, __base); }
+
+  inline long long
+  stoll(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(),
+			     __idx, __base); }
+
+  inline unsigned long long
+  stoull(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
+  { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(),
+			     __idx, __base); }
+
+  // NB: wcstof vs wcstod.
+  inline float
+  stof(const __wvstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); }
+
+  inline double
+  stod(const __wvstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); }
+
+  inline long double
+  stold(const __wvstring& __str, std::size_t* __idx = 0)
+  { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); }
+
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+  // DR 1261.
+  inline __wvstring
+  to_wstring(int __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(int),
+					       L"%d", __val); }
+
+  inline __wvstring
+  to_wstring(unsigned __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(unsigned),
+					       L"%u", __val); }
+
+  inline __wvstring
+  to_wstring(long __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(long),
+					       L"%ld", __val); }
+
+  inline __wvstring
+  to_wstring(unsigned long __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(unsigned long),
+					       L"%lu", __val); }
+
+  inline __wvstring
+  to_wstring(long long __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(long long),
+					       L"%lld", __val); }
+
+  inline __wvstring
+  to_wstring(unsigned long long __val)
+  { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
+					       4 * sizeof(unsigned long long),
+					       L"%llu", __val); }
+
+  inline __wvstring
+  to_wstring(float __val)
+  {
+    const int __n = __numeric_traits<float>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n,
+					       L"%f", __val);
+  }
+
+  inline __wvstring
+  to_wstring(double __val)
+  {
+    const int __n = __numeric_traits<double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n,
+					       L"%f", __val);
+  }
+
+  inline __wvstring
+  to_wstring(long double __val)
+  {
+    const int __n = __numeric_traits<long double>::__max_exponent10 + 20;
+    return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n,
+					       L"%Lf", __val);
+  }
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// std::hash specialization for __vstring.
+  template<>
+    struct hash<__gnu_cxx::__vstring>
+    : public __hash_base<size_t, __gnu_cxx::__vstring>
+    {
+      size_t
+      operator()(const __gnu_cxx::__vstring& __s) const
+      { return std::_Hash_impl::hash(__s.data(), __s.length()); }
+    };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// std::hash specialization for __wvstring.
+  template<>
+    struct hash<__gnu_cxx::__wvstring>
+    : public __hash_base<size_t, __gnu_cxx::__wvstring>
+    {
+      size_t
+      operator()(const __gnu_cxx::__wvstring& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(wchar_t)); }
+    };
+#endif
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+  /// std::hash specialization for __u16vstring.
+  template<>
+    struct hash<__gnu_cxx::__u16vstring>
+    : public __hash_base<size_t, __gnu_cxx::__u16vstring>
+    {
+      size_t
+      operator()(const __gnu_cxx::__u16vstring& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(char16_t)); }
+    };
+
+  /// std::hash specialization for __u32vstring.
+  template<>
+    struct hash<__gnu_cxx::__u32vstring>
+    : public __hash_base<size_t, __gnu_cxx::__u32vstring>
+    {
+      size_t
+      operator()(const __gnu_cxx::__u32vstring& __s) const
+      { return std::_Hash_impl::hash(__s.data(),
+                                     __s.length() * sizeof(char32_t)); }
+    };
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* __GXX_EXPERIMENTAL_CXX0X__ */
+
+#include "vstring.tcc" 
+
+#endif /* _VSTRING_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.tcc
new file mode 100644
index 000000000..588985bbe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring.tcc
@@ -0,0 +1,702 @@
+// Versatile string -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/vstring.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/vstring.h}
+ */
+
+#ifndef _VSTRING_TCC
+#define _VSTRING_TCC 1
+
+#pragma GCC system_header
+
+#include <bits/cxxabi_forced.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    const typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::npos;
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    void
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    resize(size_type __n, _CharT __c)
+    {
+      const size_type __size = this->size();
+      if (__size < __n)
+	this->append(__n - __size, __c);
+      else if (__n < __size)
+	this->_M_erase(__n, __size - __n);
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>&
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    _M_append(const _CharT* __s, size_type __n)
+    {
+      const size_type __len = __n + this->size();
+
+      if (__len <= this->capacity() && !this->_M_is_shared())
+	{
+	  if (__n)
+	    this->_S_copy(this->_M_data() + this->size(), __s, __n);
+	}
+      else
+	this->_M_mutate(this->size(), size_type(0), __s, __n);
+
+      this->_M_set_length(__len);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    template<typename _InputIterator>
+      __versa_string<_CharT, _Traits, _Alloc, _Base>&
+      __versa_string<_CharT, _Traits, _Alloc, _Base>::
+      _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+			  _InputIterator __k2, std::__false_type)
+      {
+	const __versa_string __s(__k1, __k2);
+	const size_type __n1 = __i2 - __i1;
+	return _M_replace(__i1 - _M_ibegin(), __n1, __s._M_data(),
+			  __s.size());
+      }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>&
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+		   _CharT __c)
+    {
+      _M_check_length(__n1, __n2, "__versa_string::_M_replace_aux");
+
+      const size_type __old_size = this->size();
+      const size_type __new_size = __old_size + __n2 - __n1;
+
+      if (__new_size <= this->capacity() && !this->_M_is_shared())
+	{
+	  _CharT* __p = this->_M_data() + __pos1;
+
+	  const size_type __how_much = __old_size - __pos1 - __n1;
+	  if (__how_much && __n1 != __n2)
+	    this->_S_move(__p + __n2, __p + __n1, __how_much);
+	}
+      else
+	this->_M_mutate(__pos1, __n1, 0, __n2);
+
+      if (__n2)
+	this->_S_assign(this->_M_data() + __pos1, __n2, __c);
+
+      this->_M_set_length(__new_size);
+      return *this;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>&
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
+	       const size_type __len2)
+    {
+      _M_check_length(__len1, __len2, "__versa_string::_M_replace");
+
+      const size_type __old_size = this->size();
+      const size_type __new_size = __old_size + __len2 - __len1;
+      
+      if (__new_size <= this->capacity() && !this->_M_is_shared())
+	{
+	  _CharT* __p = this->_M_data() + __pos;
+
+	  const size_type __how_much = __old_size - __pos - __len1;
+	  if (_M_disjunct(__s))
+	    {
+	      if (__how_much && __len1 != __len2)
+		this->_S_move(__p + __len2, __p + __len1, __how_much);
+	      if (__len2)
+		this->_S_copy(__p, __s, __len2);
+	    }
+	  else
+	    {
+	      // Work in-place.
+	      if (__len2 && __len2 <= __len1)
+		this->_S_move(__p, __s, __len2);
+	      if (__how_much && __len1 != __len2)
+		this->_S_move(__p + __len2, __p + __len1, __how_much);
+	      if (__len2 > __len1)
+		{
+		  if (__s + __len2 <= __p + __len1)
+		    this->_S_move(__p, __s, __len2);
+		  else if (__s >= __p + __len1)
+		    this->_S_copy(__p, __s + __len2 - __len1, __len2);
+		  else
+		    {
+		      const size_type __nleft = (__p + __len1) - __s;
+		      this->_S_move(__p, __s, __nleft);
+		      this->_S_copy(__p + __nleft, __p + __len2,
+				    __len2 - __nleft);
+		    }
+		}
+	    }
+	}
+      else
+	this->_M_mutate(__pos, __len1, __s, __len2);
+
+      this->_M_set_length(__new_size);
+      return *this;
+    }
+  
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    {
+      __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
+      __str.reserve(__lhs.size() + __rhs.size());
+      __str.append(__lhs);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const _CharT* __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    {
+      __glibcxx_requires_string(__lhs);
+      typedef __versa_string<_CharT, _Traits, _Alloc, _Base> __string_type;
+      typedef typename __string_type::size_type	  __size_type;
+      const __size_type __len = _Traits::length(__lhs);
+      __string_type __str;
+      __str.reserve(__len + __rhs.size());
+      __str.append(__lhs, __len);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(_CharT __lhs,
+	      const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+    {
+      __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
+      __str.reserve(__rhs.size() + 1);
+      __str.push_back(__lhs);
+      __str.append(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      const _CharT* __rhs)
+    {
+      __glibcxx_requires_string(__rhs);
+      typedef __versa_string<_CharT, _Traits, _Alloc, _Base> __string_type;
+      typedef typename __string_type::size_type	  __size_type;
+      const __size_type __len = _Traits::length(__rhs);
+      __string_type __str;
+      __str.reserve(__lhs.size() + __len);
+      __str.append(__lhs);
+      __str.append(__rhs, __len);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    __versa_string<_CharT, _Traits, _Alloc, _Base>
+    operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+	      _CharT __rhs)
+    {
+      __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
+      __str.reserve(__lhs.size() + 1);
+      __str.append(__lhs);
+      __str.push_back(__rhs);
+      return __str;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    copy(_CharT* __s, size_type __n, size_type __pos) const
+    {
+      _M_check(__pos, "__versa_string::copy");
+      __n = _M_limit(__pos, __n);
+      __glibcxx_requires_string_len(__s, __n);
+      if (__n)
+	this->_S_copy(__s, this->_M_data() + __pos, __n);
+      // 21.3.5.7 par 3: do not append null.  (good.)
+      return __n;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      const size_type __size = this->size();
+      const _CharT* __data = this->_M_data();
+
+      if (__n == 0)
+	return __pos <= __size ? __pos : npos;
+
+      if (__n <= __size)
+	{
+	  for (; __pos <= __size - __n; ++__pos)
+	    if (traits_type::eq(__data[__pos], __s[0])
+		&& traits_type::compare(__data + __pos + 1,
+					__s + 1, __n - 1) == 0)
+	      return __pos;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find(_CharT __c, size_type __pos) const
+    {
+      size_type __ret = npos;
+      const size_type __size = this->size();
+      if (__pos < __size)
+	{
+	  const _CharT* __data = this->_M_data();
+	  const size_type __n = __size - __pos;
+	  const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
+	  if (__p)
+	    __ret = __p - __data;
+	}
+      return __ret;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    rfind(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      const size_type __size = this->size();
+      if (__n <= __size)
+	{
+	  __pos = std::min(size_type(__size - __n), __pos);
+	  const _CharT* __data = this->_M_data();
+	  do
+	    {
+	      if (traits_type::compare(__data + __pos, __s, __n) == 0)
+		return __pos;
+	    }
+	  while (__pos-- > 0);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    rfind(_CharT __c, size_type __pos) const
+    {
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  for (++__size; __size-- > 0; )
+	    if (traits_type::eq(this->_M_data()[__size], __c))
+	      return __size;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      for (; __n && __pos < this->size(); ++__pos)
+	{
+	  const _CharT* __p = traits_type::find(__s, __n,
+						this->_M_data()[__pos]);
+	  if (__p)
+	    return __pos;
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      size_type __size = this->size();
+      if (__size && __n)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (traits_type::find(__s, __n, this->_M_data()[__size]))
+		return __size;
+	    }
+	  while (__size-- != 0);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      for (; __pos < this->size(); ++__pos)
+	if (!traits_type::find(__s, __n, this->_M_data()[__pos]))
+	  return __pos;
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_first_not_of(_CharT __c, size_type __pos) const
+    {
+      for (; __pos < this->size(); ++__pos)
+	if (!traits_type::eq(this->_M_data()[__pos], __c))
+	  return __pos;
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+    {
+      __glibcxx_requires_string_len(__s, __n);
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (!traits_type::find(__s, __n, this->_M_data()[__size]))
+		return __size;
+	    }
+	  while (__size--);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    find_last_not_of(_CharT __c, size_type __pos) const
+    {
+      size_type __size = this->size();
+      if (__size)
+	{
+	  if (--__size > __pos)
+	    __size = __pos;
+	  do
+	    {
+	      if (!traits_type::eq(this->_M_data()[__size], __c))
+		return __size;
+	    }
+	  while (__size--);
+	}
+      return npos;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    int
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    compare(size_type __pos, size_type __n, const __versa_string& __str) const
+    {
+      _M_check(__pos, "__versa_string::compare");
+      __n = _M_limit(__pos, __n);
+      const size_type __osize = __str.size();
+      const size_type __len = std::min(__n, __osize);
+      int __r = traits_type::compare(this->_M_data() + __pos,
+				     __str.data(), __len);
+      if (!__r)
+	__r = this->_S_compare(__n, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    int
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    compare(size_type __pos1, size_type __n1, const __versa_string& __str,
+	    size_type __pos2, size_type __n2) const
+    {
+      _M_check(__pos1, "__versa_string::compare");
+      __str._M_check(__pos2, "__versa_string::compare");
+      __n1 = _M_limit(__pos1, __n1);
+      __n2 = __str._M_limit(__pos2, __n2);
+      const size_type __len = std::min(__n1, __n2);
+      int __r = traits_type::compare(this->_M_data() + __pos1,
+				     __str.data() + __pos2, __len);
+      if (!__r)
+	__r = this->_S_compare(__n1, __n2);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    int
+    __versa_string<_CharT, _Traits, _Alloc, _Base>::
+    compare(const _CharT* __s) const
+    {
+      __glibcxx_requires_string(__s);
+      const size_type __size = this->size();
+      const size_type __osize = traits_type::length(__s);
+      const size_type __len = std::min(__size, __osize);
+      int __r = traits_type::compare(this->_M_data(), __s, __len);
+      if (!__r)
+	__r = this->_S_compare(__size, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    int
+    __versa_string <_CharT, _Traits, _Alloc, _Base>::
+    compare(size_type __pos, size_type __n1, const _CharT* __s) const
+    {
+      __glibcxx_requires_string(__s);
+      _M_check(__pos, "__versa_string::compare");
+      __n1 = _M_limit(__pos, __n1);
+      const size_type __osize = traits_type::length(__s);
+      const size_type __len = std::min(__n1, __osize);
+      int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
+      if (!__r)
+	__r = this->_S_compare(__n1, __osize);
+      return __r;
+    }
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+	   template <typename, typename, typename> class _Base>
+    int
+    __versa_string <_CharT, _Traits, _Alloc, _Base>::
+    compare(size_type __pos, size_type __n1, const _CharT* __s,
+	    size_type __n2) const
+    {
+      __glibcxx_requires_string_len(__s, __n2);
+      _M_check(__pos, "__versa_string::compare");
+      __n1 = _M_limit(__pos, __n1);
+      const size_type __len = std::min(__n1, __n2);
+      int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
+      if (!__r)
+	__r = this->_S_compare(__n1, __n2);
+      return __r;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+           template <typename, typename, typename> class _Base>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in,
+	       __gnu_cxx::__versa_string<_CharT, _Traits,
+	                                 _Alloc, _Base>& __str)
+    {
+      typedef basic_istream<_CharT, _Traits>            __istream_type;
+      typedef typename __istream_type::ios_base         __ios_base;
+      typedef __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>
+	                                                __string_type;
+      typedef typename __istream_type::int_type		__int_type;
+      typedef typename __string_type::size_type		__size_type;
+      typedef ctype<_CharT>				__ctype_type;
+      typedef typename __ctype_type::ctype_base         __ctype_base;
+
+      __size_type __extracted = 0;
+      typename __ios_base::iostate __err = __ios_base::goodbit;
+      typename __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      // Avoid reallocation for common case.
+	      __str.erase();
+	      _CharT __buf[128];
+	      __size_type __len = 0;
+	      const streamsize __w = __in.width();
+	      const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
+		                              : __str.max_size();
+	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+	      const __int_type __eof = _Traits::eof();
+	      __int_type __c = __in.rdbuf()->sgetc();
+
+	      while (__extracted < __n
+		     && !_Traits::eq_int_type(__c, __eof)
+		     && !__ct.is(__ctype_base::space,
+				 _Traits::to_char_type(__c)))
+		{
+		  if (__len == sizeof(__buf) / sizeof(_CharT))
+		    {
+		      __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
+		      __len = 0;
+		    }
+		  __buf[__len++] = _Traits::to_char_type(__c);
+		  ++__extracted;
+		  __c = __in.rdbuf()->snextc();
+		}
+	      __str.append(__buf, __len);
+
+	      if (_Traits::eq_int_type(__c, __eof))
+		__err |= __ios_base::eofbit;
+	      __in.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(__ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(__ios_base::badbit);
+	    }
+	}
+      // 211.  operator>>(istream&, string&) doesn't set failbit
+      if (!__extracted)
+	__err |= __ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }      
+
+  template<typename _CharT, typename _Traits, typename _Alloc,
+           template <typename, typename, typename> class _Base>
+    basic_istream<_CharT, _Traits>&
+    getline(basic_istream<_CharT, _Traits>& __in,
+	    __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str,
+	    _CharT __delim)
+    {
+      typedef basic_istream<_CharT, _Traits>	        __istream_type;
+      typedef typename __istream_type::ios_base         __ios_base;
+      typedef __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>
+	                                                __string_type;
+      typedef typename __istream_type::int_type		__int_type;
+      typedef typename __string_type::size_type		__size_type;
+
+      __size_type __extracted = 0;
+      const __size_type __n = __str.max_size();
+      typename __ios_base::iostate __err = __ios_base::goodbit;
+      typename __istream_type::sentry __cerb(__in, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      // Avoid reallocation for common case.
+	      __str.erase();
+	      _CharT __buf[128];
+	      __size_type __len = 0;
+	      const __int_type __idelim = _Traits::to_int_type(__delim);
+	      const __int_type __eof = _Traits::eof();
+	      __int_type __c = __in.rdbuf()->sgetc();
+
+	      while (__extracted < __n
+		     && !_Traits::eq_int_type(__c, __eof)
+		     && !_Traits::eq_int_type(__c, __idelim))
+		{
+		  if (__len == sizeof(__buf) / sizeof(_CharT))
+		    {
+		      __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
+		      __len = 0;
+		    }
+		  __buf[__len++] = _Traits::to_char_type(__c);
+		  ++__extracted;
+		  __c = __in.rdbuf()->snextc();
+		}
+	      __str.append(__buf, __len);
+
+	      if (_Traits::eq_int_type(__c, __eof))
+		__err |= __ios_base::eofbit;
+	      else if (_Traits::eq_int_type(__c, __idelim))
+		{
+		  ++__extracted;		  
+		  __in.rdbuf()->sbumpc();
+		}
+	      else
+		__err |= __ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(__ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(__ios_base::badbit);
+	    }
+	}
+      if (!__extracted)
+	__err |= __ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }      
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _VSTRING_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_fwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_fwd.h
new file mode 100644
index 000000000..ce8cf53fb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_fwd.h
@@ -0,0 +1,90 @@
+// Versatile string forward -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/vstring_fwd.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/vstring.h}
+ */
+
+#ifndef _VSTRING_FWD_H
+#define _VSTRING_FWD_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/char_traits.h>
+#include <bits/allocator.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class __sso_string_base;
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class __rc_string_base;
+
+  template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
+           typename _Alloc = std::allocator<_CharT>,
+	   template
+	   <typename, typename, typename> class _Base = __sso_string_base>
+    class __versa_string;
+
+  typedef __versa_string<char>                              __vstring;
+  typedef __vstring                                         __sso_string;
+  typedef 
+  __versa_string<char, std::char_traits<char>,
+		 std::allocator<char>, __rc_string_base>    __rc_string;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef __versa_string<wchar_t>                           __wvstring;
+  typedef __wvstring                                        __wsso_string;
+  typedef
+  __versa_string<wchar_t, std::char_traits<wchar_t>,
+		 std::allocator<wchar_t>, __rc_string_base> __wrc_string;
+#endif  
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
+     && defined(_GLIBCXX_USE_C99_STDINT_TR1))
+
+  typedef __versa_string<char16_t>                          __u16vstring;
+  typedef __u16vstring                                      __u16sso_string;
+  typedef 
+  __versa_string<char16_t, std::char_traits<char16_t>,
+		 std::allocator<char16_t>, __rc_string_base> __u16rc_string;
+
+  typedef __versa_string<char32_t>                          __u32vstring;
+  typedef __u32vstring                                      __u32sso_string;
+  typedef 
+  __versa_string<char32_t, std::char_traits<char32_t>,
+		 std::allocator<char32_t>, __rc_string_base> __u32rc_string;
+
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _VSTRING_FWD_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_util.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_util.h
new file mode 100644
index 000000000..fdf398120
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/ext/vstring_util.h
@@ -0,0 +1,184 @@
+// Versatile string utility -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file ext/vstring_util.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ext/vstring.h}
+ */
+
+#ifndef _VSTRING_UTIL_H
+#define _VSTRING_UTIL_H 1
+
+#pragma GCC system_header
+
+#include <ext/vstring_fwd.h>
+#include <debug/debug.h>
+#include <bits/stl_function.h>  // For less
+#include <bits/functexcept.h>
+#include <bits/localefwd.h>
+#include <bits/ostream_insert.h>
+#include <bits/stl_iterator.h>
+#include <ext/numeric_traits.h>
+#include <bits/move.h>
+#include <bits/range_access.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    struct __vstring_utility
+    {
+      typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
+
+      typedef _Traits					    traits_type;
+      typedef typename _Traits::char_type		    value_type;
+      typedef typename _CharT_alloc_type::size_type	    size_type;
+      typedef typename _CharT_alloc_type::difference_type   difference_type;
+      typedef typename _CharT_alloc_type::pointer	    pointer;
+      typedef typename _CharT_alloc_type::const_pointer	    const_pointer;
+
+      // For __sso_string.
+      typedef __gnu_cxx::
+      __normal_iterator<pointer, __gnu_cxx::
+			__versa_string<_CharT, _Traits, _Alloc,
+				       __sso_string_base> >
+	__sso_iterator;
+      typedef __gnu_cxx::
+      __normal_iterator<const_pointer, __gnu_cxx::
+			__versa_string<_CharT, _Traits, _Alloc,
+				       __sso_string_base> >
+	__const_sso_iterator;
+
+      // For __rc_string.
+      typedef __gnu_cxx::
+      __normal_iterator<pointer, __gnu_cxx::
+			__versa_string<_CharT, _Traits, _Alloc,
+				       __rc_string_base> >
+	__rc_iterator;
+      typedef __gnu_cxx::
+      __normal_iterator<const_pointer, __gnu_cxx::
+			__versa_string<_CharT, _Traits, _Alloc,
+				       __rc_string_base> >
+	__const_rc_iterator;
+
+      // NB:  When the allocator is empty, deriving from it saves space
+      // (http://www.cantrip.org/emptyopt.html).
+      template<typename _Alloc1>
+	struct _Alloc_hider
+	: public _Alloc1
+	{
+	  _Alloc_hider(_CharT* __ptr)
+	  : _Alloc1(), _M_p(__ptr) { }
+
+	  _Alloc_hider(const _Alloc1& __a, _CharT* __ptr)
+	  : _Alloc1(__a), _M_p(__ptr) { }
+
+	  _CharT*  _M_p; // The actual data.
+	};
+
+      // When __n = 1 way faster than the general multichar
+      // traits_type::copy/move/assign.
+      static void
+      _S_copy(_CharT* __d, const _CharT* __s, size_type __n)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, *__s);
+	else
+	  traits_type::copy(__d, __s, __n);
+      }
+
+      static void
+      _S_move(_CharT* __d, const _CharT* __s, size_type __n)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, *__s);
+	else
+	  traits_type::move(__d, __s, __n);
+      }
+
+      static void
+      _S_assign(_CharT* __d, size_type __n, _CharT __c)
+      {
+	if (__n == 1)
+	  traits_type::assign(*__d, __c);
+	else
+	  traits_type::assign(__d, __n, __c);
+      }
+
+      // _S_copy_chars is a separate template to permit specialization
+      // to optimize for the common case of pointers as iterators.
+      template<typename _Iterator>
+	static void
+	_S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
+	{
+	  for (; __k1 != __k2; ++__k1, ++__p)
+	    traits_type::assign(*__p, *__k1); // These types are off.
+	}
+
+      static void
+      _S_copy_chars(_CharT* __p, __sso_iterator __k1, __sso_iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, __const_sso_iterator __k1,
+		    __const_sso_iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, __rc_iterator __k1, __rc_iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, __const_rc_iterator __k1,
+		    __const_rc_iterator __k2)
+      { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+      static void
+      _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
+      { _S_copy(__p, __k1, __k2 - __k1); }
+
+      static void
+      _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
+      { _S_copy(__p, __k1, __k2 - __k1); }
+
+      static int
+      _S_compare(size_type __n1, size_type __n2)
+      {
+	const difference_type __d = difference_type(__n1 - __n2);
+
+	if (__d > __numeric_traits_integer<int>::__max)
+	  return __numeric_traits_integer<int>::__max;
+	else if (__d < __numeric_traits_integer<int>::__min)
+	  return __numeric_traits_integer<int>::__min;
+	else
+	  return int(__d);
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _VSTRING_UTIL_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algo.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algo.h
new file mode 100644
index 000000000..89b7f6d82
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algo.h
@@ -0,0 +1,2363 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/algo.h
+ *  @brief Parallel STL function calls corresponding to the stl_algo.h header.
+ *
+ *  The functions defined here mainly do case switches and
+ *  call the actual parallelized versions in other files.
+ *  Inlining policy: Functions that basically only contain one function call,
+ *  are declared inline.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_ALGO_H
+#define _GLIBCXX_PARALLEL_ALGO_H 1
+
+#include <parallel/algorithmfwd.h>
+#include <bits/stl_algobase.h>
+#include <bits/stl_algo.h>
+#include <parallel/iterator.h>
+#include <parallel/base.h>
+#include <parallel/sort.h>
+#include <parallel/workstealing.h>
+#include <parallel/par_loop.h>
+#include <parallel/omp_loop.h>
+#include <parallel/omp_loop_static.h>
+#include <parallel/for_each_selectors.h>
+#include <parallel/for_each.h>
+#include <parallel/find.h>
+#include <parallel/find_selectors.h>
+#include <parallel/search.h>
+#include <parallel/random_shuffle.h>
+#include <parallel/partition.h>
+#include <parallel/merge.h>
+#include <parallel/unique_copy.h>
+#include <parallel/set_operations.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __parallel
+{
+  // Sequential fallback
+  template<typename _IIter, typename _Function>
+    inline _Function
+    for_each(_IIter __begin, _IIter __end, _Function __f, 
+             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::for_each(__begin, __end, __f); }
+
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter, typename _Function, typename _IteratorTag>
+    inline _Function
+    __for_each_switch(_IIter __begin, _IIter __end, _Function __f, 
+                    _IteratorTag)
+    { return for_each(__begin, __end, __f, __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter, typename _Function>
+    _Function
+    __for_each_switch(_RAIter __begin, _RAIter __end, 
+                    _Function __f, random_access_iterator_tag, 
+                    __gnu_parallel::_Parallelism __parallelism_tag
+                    = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().for_each_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy;
+    __gnu_parallel::__for_each_selector<_RAIter> __functionality;
+
+          return __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __f, __functionality,
+              __gnu_parallel::_DummyReduct(), true, __dummy, -1,
+              __parallelism_tag);
+        }
+      else
+        return for_each(__begin, __end, __f, __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface
+  template<typename _Iterator, typename _Function>
+    inline _Function
+    for_each(_Iterator __begin, _Iterator __end, _Function __f, 
+             __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_Iterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __for_each_switch(__begin, __end, __f, _IteratorCategory(), 
+                             __parallelism_tag);
+    }
+
+  template<typename _Iterator, typename _Function>
+    inline _Function
+    for_each(_Iterator __begin, _Iterator __end, _Function __f) 
+    {
+      typedef std::iterator_traits<_Iterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __for_each_switch(__begin, __end, __f, _IteratorCategory());
+    }
+
+
+  // Sequential fallback
+  template<typename _IIter, typename _Tp>
+    inline _IIter
+    find(_IIter __begin, _IIter __end, const _Tp& __val, 
+         __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::find(__begin, __end, __val); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter, typename _Tp, typename _IteratorTag>
+    inline _IIter
+    __find_switch(_IIter __begin, _IIter __end, const _Tp& __val,
+                _IteratorTag)
+    { return _GLIBCXX_STD_A::find(__begin, __end, __val); }
+
+  // Parallel find for random access iterators
+  template<typename _RAIter, typename _Tp>
+    _RAIter
+    __find_switch(_RAIter __begin, _RAIter __end,
+                const _Tp& __val, random_access_iterator_tag)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        {
+	  std::binder2nd<__gnu_parallel::_EqualTo<_ValueType, const _Tp&> >
+            __comp(__gnu_parallel::_EqualTo<_ValueType, const _Tp&>(), __val);
+          return __gnu_parallel::__find_template(
+                   __begin, __end, __begin, __comp,
+                   __gnu_parallel::__find_if_selector()).first;
+        }
+      else
+        return _GLIBCXX_STD_A::find(__begin, __end, __val);
+    }
+
+  // Public interface
+  template<typename _IIter, typename _Tp>
+    inline _IIter
+    find(_IIter __begin, _IIter __end, const _Tp& __val)
+    {
+      typedef std::iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __find_switch(__begin, __end, __val, _IteratorCategory());
+    }
+
+  // Sequential fallback
+  template<typename _IIter, typename _Predicate>
+    inline _IIter
+    find_if(_IIter __begin, _IIter __end, _Predicate __pred, 
+            __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::find_if(__begin, __end, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter, typename _Predicate, typename _IteratorTag>
+    inline _IIter
+    __find_if_switch(_IIter __begin, _IIter __end, _Predicate __pred, 
+                   _IteratorTag)
+    { return _GLIBCXX_STD_A::find_if(__begin, __end, __pred); }
+
+  // Parallel find_if for random access iterators
+  template<typename _RAIter, typename _Predicate>
+    _RAIter
+    __find_if_switch(_RAIter __begin, _RAIter __end, 
+                   _Predicate __pred, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        return __gnu_parallel::__find_template(__begin, __end, __begin, __pred,
+                                             __gnu_parallel::
+                                             __find_if_selector()).first;
+      else
+        return _GLIBCXX_STD_A::find_if(__begin, __end, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter, typename _Predicate>
+    inline _IIter
+    find_if(_IIter __begin, _IIter __end, _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __find_if_switch(__begin, __end, __pred, _IteratorCategory());
+    }
+
+  // Sequential fallback
+  template<typename _IIter, typename _FIterator>
+    inline _IIter
+    find_first_of(_IIter __begin1, _IIter __end1, 
+                  _FIterator __begin2, _FIterator __end2, 
+                  __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::find_first_of(__begin1, __end1, __begin2, __end2);
+      }
+
+  // Sequential fallback
+  template<typename _IIter, typename _FIterator,
+           typename _BinaryPredicate>
+    inline _IIter
+    find_first_of(_IIter __begin1, _IIter __end1,
+                  _FIterator __begin2, _FIterator __end2,
+                  _BinaryPredicate __comp, __gnu_parallel::sequential_tag)
+  { return _GLIBCXX_STD_A::find_first_of(
+             __begin1, __end1, __begin2, __end2, __comp); }
+
+  // Sequential fallback for input iterator type
+  template<typename _IIter, typename _FIterator,
+           typename _IteratorTag1, typename _IteratorTag2>
+    inline _IIter
+    __find_first_of_switch(_IIter __begin1, _IIter __end1,
+                         _FIterator __begin2, _FIterator __end2, 
+                         _IteratorTag1, _IteratorTag2)
+    { return find_first_of(__begin1, __end1, __begin2, __end2, 
+                           __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter, typename _FIterator,
+           typename _BinaryPredicate, typename _IteratorTag>
+    inline _RAIter
+    __find_first_of_switch(_RAIter __begin1,
+                         _RAIter __end1,
+                         _FIterator __begin2, _FIterator __end2, 
+                         _BinaryPredicate __comp, random_access_iterator_tag, 
+                         _IteratorTag)
+    {
+      return __gnu_parallel::
+        __find_template(__begin1, __end1, __begin1, __comp,
+                      __gnu_parallel::__find_first_of_selector
+                      <_FIterator>(__begin2, __end2)).first;
+    }
+
+  // Sequential fallback for input iterator type
+  template<typename _IIter, typename _FIterator,
+           typename _BinaryPredicate, typename _IteratorTag1,
+           typename _IteratorTag2>
+    inline _IIter
+    __find_first_of_switch(_IIter __begin1, _IIter __end1,
+                         _FIterator __begin2, _FIterator __end2, 
+                         _BinaryPredicate __comp, _IteratorTag1, _IteratorTag2)
+    { return find_first_of(__begin1, __end1, __begin2, __end2, __comp, 
+                           __gnu_parallel::sequential_tag()); }
+
+  // Public interface
+  template<typename _IIter, typename _FIterator,
+           typename _BinaryPredicate>
+    inline _IIter
+    find_first_of(_IIter __begin1, _IIter __end1,
+                  _FIterator __begin2, _FIterator __end2, 
+                  _BinaryPredicate __comp)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_FIterator> iteratorf_traits;
+      typedef typename _IIterTraits::iterator_category _IIteratorCategory;
+      typedef typename iteratorf_traits::iterator_category iteratorf_category;
+
+      return __find_first_of_switch(__begin1, __end1, __begin2, __end2, __comp,
+                                  _IIteratorCategory(), iteratorf_category());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _IIter, typename _FIterator>
+    inline _IIter
+    find_first_of(_IIter __begin1, _IIter __end1, 
+                  _FIterator __begin2, _FIterator __end2)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_FIterator> iteratorf_traits;
+      typedef typename _IIterTraits::value_type _IValueType;
+      typedef typename iteratorf_traits::value_type _FValueType;
+
+      return __gnu_parallel::find_first_of(__begin1, __end1, __begin2, __end2,
+                         __gnu_parallel::_EqualTo<_IValueType, _FValueType>());
+    }
+
+  // Sequential fallback
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    unique_copy(_IIter __begin1, _IIter __end1, _OutputIterator __out,
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::unique_copy(__begin1, __end1, __out); }
+
+  // Sequential fallback
+  template<typename _IIter, typename _OutputIterator,
+           typename _Predicate>
+    inline _OutputIterator
+    unique_copy(_IIter __begin1, _IIter __end1, _OutputIterator __out,
+                _Predicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::unique_copy(__begin1, __end1, __out, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter, typename _OutputIterator,
+           typename _Predicate, typename _IteratorTag1, typename _IteratorTag2>
+    inline _OutputIterator
+    __unique_copy_switch(_IIter __begin, _IIter __last, 
+                       _OutputIterator __out, _Predicate __pred, 
+                       _IteratorTag1, _IteratorTag2)
+    { return _GLIBCXX_STD_A::unique_copy(__begin, __last, __out, __pred); }
+
+  // Parallel unique_copy for random access iterators
+  template<typename _RAIter, typename RandomAccessOutputIterator,
+           typename _Predicate>
+    RandomAccessOutputIterator
+    __unique_copy_switch(_RAIter __begin, _RAIter __last, 
+                       RandomAccessOutputIterator __out, _Predicate __pred, 
+                       random_access_iterator_tag, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__last - __begin)
+            > __gnu_parallel::_Settings::get().unique_copy_minimal_n))
+        return __gnu_parallel::__parallel_unique_copy(
+                 __begin, __last, __out, __pred);
+      else
+        return _GLIBCXX_STD_A::unique_copy(__begin, __last, __out, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    unique_copy(_IIter __begin1, _IIter __end1, _OutputIterator __out)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits::iterator_category _IIteratorCategory;
+      typedef typename _IIterTraits::value_type _ValueType;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __unique_copy_switch(
+               __begin1, __end1, __out, equal_to<_ValueType>(),
+               _IIteratorCategory(), _OIterCategory());
+    }
+
+  // Public interface
+  template<typename _IIter, typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    unique_copy(_IIter __begin1, _IIter __end1, _OutputIterator __out,
+                _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits::iterator_category _IIteratorCategory;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __unique_copy_switch(
+               __begin1, __end1, __out, __pred,
+               _IIteratorCategory(), _OIterCategory());
+    }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    set_union(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _IIter2 __end2,
+              _OutputIterator __out, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_union(
+               __begin1, __end1, __begin2, __end2, __out); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    set_union(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _IIter2 __end2,
+              _OutputIterator __out, _Predicate __pred,
+              __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_union(__begin1, __end1,
+                                       __begin2, __end2, __out, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OutputIterator, typename _IteratorTag1,
+           typename _IteratorTag2, typename _IteratorTag3>
+    inline _OutputIterator
+    __set_union_switch(
+      _IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, _IIter2 __end2,
+      _OutputIterator __result, _Predicate __pred,
+      _IteratorTag1, _IteratorTag2, _IteratorTag3)
+    { return _GLIBCXX_STD_A::set_union(__begin1, __end1,
+                                       __begin2, __end2, __result, __pred); }
+
+  // Parallel set_union for random access iterators
+  template<typename _RAIter1, typename _RAIter2,
+           typename _Output_RAIter, typename _Predicate>
+    _Output_RAIter
+    __set_union_switch(_RAIter1 __begin1, _RAIter1 __end1, 
+                     _RAIter2 __begin2, _RAIter2 __end2, 
+                     _Output_RAIter __result, _Predicate __pred,
+                     random_access_iterator_tag, random_access_iterator_tag, 
+                     random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+            >= __gnu_parallel::_Settings::get().set_union_minimal_n
+            || static_cast<__gnu_parallel::_SequenceIndex>(__end2 - __begin2)
+            >= __gnu_parallel::_Settings::get().set_union_minimal_n))
+        return __gnu_parallel::__parallel_set_union(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+      else
+        return _GLIBCXX_STD_A::set_union(__begin1, __end1,
+                                         __begin2, __end2, __result, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator 
+    set_union(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _IIter2 __end2, _OutputIterator __out)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+      typedef typename _IIterTraits1::value_type _ValueType1;
+      typedef typename _IIterTraits2::value_type _ValueType2;
+
+      return __set_union_switch(
+               __begin1, __end1, __begin2, __end2, __out,
+               __gnu_parallel::_Less<_ValueType1, _ValueType2>(),
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator 
+    set_union(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _IIter2 __end2,
+              _OutputIterator __out, _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __set_union_switch(
+               __begin1, __end1, __begin2, __end2, __out, __pred,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Sequential fallback.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    set_intersection(_IIter1 __begin1, _IIter1 __end1,
+                     _IIter2 __begin2, _IIter2 __end2,
+                     _OutputIterator __out, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_intersection(__begin1, __end1,
+                                              __begin2, __end2, __out); }
+
+  // Sequential fallback.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    set_intersection(_IIter1 __begin1, _IIter1 __end1,
+                     _IIter2 __begin2, _IIter2 __end2,
+                     _OutputIterator __out, _Predicate __pred, 
+                     __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_intersection(
+               __begin1, __end1, __begin2, __end2, __out, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2,
+           typename _Predicate, typename _OutputIterator,
+           typename _IteratorTag1, typename _IteratorTag2,
+           typename _IteratorTag3>
+    inline _OutputIterator 
+    __set_intersection_switch(_IIter1 __begin1, _IIter1 __end1,
+                              _IIter2 __begin2, _IIter2 __end2,
+                              _OutputIterator __result, _Predicate __pred,
+                              _IteratorTag1, _IteratorTag2, _IteratorTag3)
+    { return _GLIBCXX_STD_A::set_intersection(__begin1, __end1, __begin2,
+                                              __end2, __result, __pred); }
+
+  // Parallel set_intersection for random access iterators
+  template<typename _RAIter1, typename _RAIter2,
+           typename _Output_RAIter, typename _Predicate>
+    _Output_RAIter
+    __set_intersection_switch(_RAIter1 __begin1,
+                            _RAIter1 __end1,
+                            _RAIter2 __begin2,
+                            _RAIter2 __end2,
+                            _Output_RAIter __result,
+                            _Predicate __pred,
+                            random_access_iterator_tag,
+                            random_access_iterator_tag,
+                            random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+            >= __gnu_parallel::_Settings::get().set_union_minimal_n
+            || static_cast<__gnu_parallel::_SequenceIndex>(__end2 - __begin2)
+            >= __gnu_parallel::_Settings::get().set_union_minimal_n))
+        return __gnu_parallel::__parallel_set_intersection(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+      else
+        return _GLIBCXX_STD_A::set_intersection(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator 
+    set_intersection(_IIter1 __begin1, _IIter1 __end1, 
+                     _IIter2 __begin2, _IIter2 __end2, 
+                     _OutputIterator __out)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+      typedef typename _IIterTraits1::value_type _ValueType1;
+      typedef typename _IIterTraits2::value_type _ValueType2;
+
+      return __set_intersection_switch(
+               __begin1, __end1, __begin2, __end2, __out,
+               __gnu_parallel::_Less<_ValueType1, _ValueType2>(),
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator 
+    set_intersection(_IIter1 __begin1, _IIter1 __end1,
+                     _IIter2 __begin2, _IIter2 __end2,
+                     _OutputIterator __out, _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __set_intersection_switch(
+               __begin1, __end1, __begin2, __end2, __out, __pred,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    set_symmetric_difference(_IIter1 __begin1, _IIter1 __end1,
+                             _IIter2 __begin2, _IIter2 __end2,
+                             _OutputIterator __out,
+                             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_symmetric_difference(
+               __begin1, __end1, __begin2, __end2, __out); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    set_symmetric_difference(_IIter1 __begin1, _IIter1 __end1,
+                             _IIter2 __begin2, _IIter2 __end2,
+                             _OutputIterator __out, _Predicate __pred,
+                             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_symmetric_difference(
+               __begin1, __end1, __begin2, __end2, __out, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2,
+           typename _Predicate, typename _OutputIterator,
+           typename _IteratorTag1, typename _IteratorTag2,
+           typename _IteratorTag3>
+    inline _OutputIterator 
+    __set_symmetric_difference_switch(
+      _IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, _IIter2 __end2,
+      _OutputIterator __result, _Predicate __pred,
+      _IteratorTag1, _IteratorTag2, _IteratorTag3)
+    { return _GLIBCXX_STD_A::set_symmetric_difference(
+               __begin1, __end1, __begin2, __end2, __result, __pred); }
+
+  // Parallel set_symmetric_difference for random access iterators
+  template<typename _RAIter1, typename _RAIter2,
+           typename _Output_RAIter, typename _Predicate>
+    _Output_RAIter
+    __set_symmetric_difference_switch(_RAIter1 __begin1,
+                                    _RAIter1 __end1,
+                                    _RAIter2 __begin2,
+                                    _RAIter2 __end2,
+                                    _Output_RAIter __result,
+                                    _Predicate __pred,
+                                    random_access_iterator_tag,
+                                    random_access_iterator_tag,
+                                    random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+      static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+      >= __gnu_parallel::_Settings::get().set_symmetric_difference_minimal_n
+      || static_cast<__gnu_parallel::_SequenceIndex>(__end2 - __begin2)
+      >= __gnu_parallel::_Settings::get().set_symmetric_difference_minimal_n))
+  return __gnu_parallel::__parallel_set_symmetric_difference(
+           __begin1, __end1, __begin2, __end2, __result, __pred);
+      else
+        return _GLIBCXX_STD_A::set_symmetric_difference(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+    }
+
+  // Public interface.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator 
+    set_symmetric_difference(_IIter1 __begin1, _IIter1 __end1,
+                             _IIter2 __begin2, _IIter2 __end2,
+                             _OutputIterator __out)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+      typedef typename _IIterTraits1::value_type _ValueType1;
+      typedef typename _IIterTraits2::value_type _ValueType2;
+
+      return __set_symmetric_difference_switch(
+               __begin1, __end1, __begin2, __end2, __out,
+               __gnu_parallel::_Less<_ValueType1, _ValueType2>(),
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Public interface.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator 
+    set_symmetric_difference(_IIter1 __begin1, _IIter1 __end1,
+                             _IIter2 __begin2, _IIter2 __end2,
+                             _OutputIterator __out, _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __set_symmetric_difference_switch(
+               __begin1, __end1, __begin2, __end2, __out, __pred,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Sequential fallback.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    set_difference(_IIter1 __begin1, _IIter1 __end1, 
+                   _IIter2 __begin2, _IIter2 __end2, 
+                   _OutputIterator __out, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_difference(
+               __begin1,__end1, __begin2, __end2, __out); }
+
+  // Sequential fallback.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    set_difference(_IIter1 __begin1, _IIter1 __end1, 
+                   _IIter2 __begin2, _IIter2 __end2, 
+                   _OutputIterator __out, _Predicate __pred, 
+                   __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::set_difference(__begin1, __end1,
+                                            __begin2, __end2, __out, __pred); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OutputIterator, typename _IteratorTag1,
+           typename _IteratorTag2, typename _IteratorTag3>
+    inline _OutputIterator
+    __set_difference_switch(_IIter1 __begin1, _IIter1 __end1, 
+                          _IIter2 __begin2, _IIter2 __end2, 
+                          _OutputIterator __result, _Predicate __pred, 
+                          _IteratorTag1, _IteratorTag2, _IteratorTag3)
+    { return _GLIBCXX_STD_A::set_difference(
+               __begin1, __end1, __begin2, __end2, __result, __pred); }
+
+  // Parallel set_difference for random access iterators
+  template<typename _RAIter1, typename _RAIter2,
+           typename _Output_RAIter, typename _Predicate>
+    _Output_RAIter
+    __set_difference_switch(_RAIter1 __begin1,
+                          _RAIter1 __end1,
+                          _RAIter2 __begin2,
+                          _RAIter2 __end2,
+                          _Output_RAIter __result, _Predicate __pred,
+                          random_access_iterator_tag,
+                          random_access_iterator_tag,
+                          random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+            >= __gnu_parallel::_Settings::get().set_difference_minimal_n
+            || static_cast<__gnu_parallel::_SequenceIndex>(__end2 - __begin2)
+            >= __gnu_parallel::_Settings::get().set_difference_minimal_n))
+        return __gnu_parallel::__parallel_set_difference(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+      else
+        return _GLIBCXX_STD_A::set_difference(
+                 __begin1, __end1, __begin2, __end2, __result, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    set_difference(_IIter1 __begin1, _IIter1 __end1, 
+                   _IIter2 __begin2, _IIter2 __end2, 
+                   _OutputIterator __out)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+      typedef typename _IIterTraits1::value_type _ValueType1;
+      typedef typename _IIterTraits2::value_type _ValueType2;
+
+      return __set_difference_switch(
+               __begin1, __end1, __begin2, __end2, __out,
+               __gnu_parallel::_Less<_ValueType1, _ValueType2>(),
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Predicate>
+    inline _OutputIterator
+    set_difference(_IIter1 __begin1, _IIter1 __end1, 
+                   _IIter2 __begin2, _IIter2 __end2, 
+                   _OutputIterator __out, _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __set_difference_switch(
+               __begin1, __end1, __begin2, __end2, __out, __pred,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Sequential fallback
+  template<typename _FIterator>
+    inline _FIterator
+    adjacent_find(_FIterator __begin, _FIterator __end, 
+                  __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::adjacent_find(__begin, __end); }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _BinaryPredicate>
+    inline _FIterator
+    adjacent_find(_FIterator __begin, _FIterator __end, 
+                  _BinaryPredicate __binary_pred,
+                  __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::adjacent_find(__begin, __end, __binary_pred); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter>
+    _RAIter
+    __adjacent_find_switch(_RAIter __begin, _RAIter __end, 
+                         random_access_iterator_tag)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        {
+          _RAIter __spot = __gnu_parallel::
+              __find_template(
+                __begin, __end - 1, __begin, equal_to<_ValueType>(),
+                __gnu_parallel::__adjacent_find_selector())
+            .first;
+          if (__spot == (__end - 1))
+            return __end;
+          else
+            return __spot;
+        }
+      else
+        return adjacent_find(__begin, __end, __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _IteratorTag>
+    inline _FIterator
+    __adjacent_find_switch(_FIterator __begin, _FIterator __end,
+                         _IteratorTag)
+    { return adjacent_find(__begin, __end, __gnu_parallel::sequential_tag()); }
+
+  // Public interface
+  template<typename _FIterator>
+    inline _FIterator
+    adjacent_find(_FIterator __begin, _FIterator __end)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __adjacent_find_switch(__begin, __end, _IteratorCategory());
+    }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _BinaryPredicate,
+           typename _IteratorTag>
+    inline _FIterator
+    __adjacent_find_switch(_FIterator __begin, _FIterator __end, 
+                         _BinaryPredicate __pred, _IteratorTag)
+    { return adjacent_find(__begin, __end, __pred,
+                           __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter, typename _BinaryPredicate>
+    _RAIter
+    __adjacent_find_switch(_RAIter __begin, _RAIter __end, 
+                         _BinaryPredicate __pred, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        return __gnu_parallel::__find_template(__begin, __end, __begin, __pred,
+                                             __gnu_parallel::
+                                             __adjacent_find_selector()).first;
+      else
+        return adjacent_find(__begin, __end, __pred,
+                             __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface
+  template<typename _FIterator, typename _BinaryPredicate>
+    inline _FIterator
+    adjacent_find(_FIterator __begin, _FIterator __end, 
+                  _BinaryPredicate __pred)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __adjacent_find_switch(__begin, __end, __pred,
+                                    _IteratorCategory());
+    }
+
+  // Sequential fallback
+  template<typename _IIter, typename _Tp>
+    inline typename iterator_traits<_IIter>::difference_type
+    count(_IIter __begin, _IIter __end, const _Tp& __value, 
+          __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::count(__begin, __end, __value); }
+
+  // Parallel code for random access iterators
+  template<typename _RAIter, typename _Tp>
+    typename iterator_traits<_RAIter>::difference_type
+    __count_switch(_RAIter __begin, _RAIter __end, 
+                 const _Tp& __value, random_access_iterator_tag, 
+                 __gnu_parallel::_Parallelism __parallelism_tag 
+                 = __gnu_parallel::parallel_unbalanced)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef __gnu_parallel::_SequenceIndex _SequenceIndex;
+
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().count_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          __gnu_parallel::__count_selector<_RAIter, _DifferenceType>
+            __functionality;
+          _DifferenceType __res = 0;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __value, __functionality,
+              std::plus<_SequenceIndex>(), __res, __res, -1,
+              __parallelism_tag);
+          return __res;
+        }
+      else
+        return count(__begin, __end, __value,
+                     __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter, typename _Tp, typename _IteratorTag>
+    inline typename iterator_traits<_IIter>::difference_type
+    __count_switch(_IIter __begin, _IIter __end, const _Tp& __value, 
+                 _IteratorTag)
+    { return count(__begin, __end, __value, __gnu_parallel::sequential_tag());
+      }
+
+  // Public interface.
+  template<typename _IIter, typename _Tp>
+    inline typename iterator_traits<_IIter>::difference_type
+    count(_IIter __begin, _IIter __end, const _Tp& __value, 
+          __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __count_switch(__begin, __end, __value, _IteratorCategory(),
+                            __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _Tp>
+    inline typename iterator_traits<_IIter>::difference_type
+    count(_IIter __begin, _IIter __end, const _Tp& __value)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __count_switch(__begin, __end, __value, _IteratorCategory());
+    }
+
+
+  // Sequential fallback.
+  template<typename _IIter, typename _Predicate>
+    inline typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter __begin, _IIter __end, _Predicate __pred, 
+             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::count_if(__begin, __end, __pred); }
+
+  // Parallel count_if for random access iterators
+  template<typename _RAIter, typename _Predicate>
+    typename iterator_traits<_RAIter>::difference_type
+    __count_if_switch(_RAIter __begin, _RAIter __end, 
+                    _Predicate __pred, random_access_iterator_tag,
+                    __gnu_parallel::_Parallelism __parallelism_tag
+                    = __gnu_parallel::parallel_unbalanced)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef __gnu_parallel::_SequenceIndex _SequenceIndex;
+
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().count_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          _DifferenceType __res = 0;
+          __gnu_parallel::
+            __count_if_selector<_RAIter, _DifferenceType>
+            __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __pred, __functionality,
+              std::plus<_SequenceIndex>(), __res, __res, -1,
+              __parallelism_tag);
+          return __res;
+        }
+      else
+        return count_if(__begin, __end, __pred,
+                        __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter, typename _Predicate, typename _IteratorTag>
+    inline typename iterator_traits<_IIter>::difference_type
+    __count_if_switch(_IIter __begin, _IIter __end, _Predicate __pred, 
+                    _IteratorTag)
+    { return count_if(__begin, __end, __pred,
+                      __gnu_parallel::sequential_tag()); }
+
+  // Public interface.
+  template<typename _IIter, typename _Predicate>
+    inline typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter __begin, _IIter __end, _Predicate __pred, 
+             __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __count_if_switch(__begin, __end, __pred, _IteratorCategory(), 
+                             __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _Predicate>
+    inline typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter __begin, _IIter __end, _Predicate __pred)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __count_if_switch(__begin, __end, __pred, _IteratorCategory());
+    }
+
+
+  // Sequential fallback.
+  template<typename _FIterator1, typename _FIterator2>
+    inline _FIterator1
+    search(_FIterator1 __begin1, _FIterator1 __end1,
+           _FIterator2 __begin2, _FIterator2 __end2,
+           __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::search(__begin1, __end1, __begin2, __end2); }
+
+  // Parallel algorithm for random access iterator
+  template<typename _RAIter1, typename _RAIter2>
+    _RAIter1
+    __search_switch(_RAIter1 __begin1, _RAIter1 __end1,
+                  _RAIter2 __begin2, _RAIter2 __end2,
+                  random_access_iterator_tag, random_access_iterator_tag)
+    {
+      typedef std::iterator_traits<_RAIter1> _Iterator1Traits;
+      typedef typename _Iterator1Traits::value_type _ValueType1;
+      typedef std::iterator_traits<_RAIter2> _Iterator2Traits;
+      typedef typename _Iterator2Traits::value_type _ValueType2;
+
+      if (_GLIBCXX_PARALLEL_CONDITION(
+                static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+            >= __gnu_parallel::_Settings::get().search_minimal_n))
+        return __gnu_parallel::
+          __search_template(
+            __begin1, __end1, __begin2, __end2,
+            __gnu_parallel::_EqualTo<_ValueType1, _ValueType2>());
+      else
+        return search(__begin1, __end1, __begin2, __end2,
+                      __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator1, typename _FIterator2,
+           typename _IteratorTag1, typename _IteratorTag2>
+    inline _FIterator1
+    __search_switch(_FIterator1 __begin1, _FIterator1 __end1,
+                  _FIterator2 __begin2, _FIterator2 __end2,
+                  _IteratorTag1, _IteratorTag2)
+    { return search(__begin1, __end1, __begin2, __end2,
+                    __gnu_parallel::sequential_tag()); }
+
+  // Public interface.
+  template<typename _FIterator1, typename _FIterator2>
+    inline _FIterator1
+    search(_FIterator1 __begin1, _FIterator1 __end1,
+           _FIterator2 __begin2, _FIterator2 __end2)
+    {
+      typedef std::iterator_traits<_FIterator1> _Iterator1Traits;
+      typedef typename _Iterator1Traits::iterator_category _IteratorCategory1;
+      typedef std::iterator_traits<_FIterator2> _Iterator2Traits;
+      typedef typename _Iterator2Traits::iterator_category _IteratorCategory2;
+
+      return __search_switch(__begin1, __end1, __begin2, __end2,
+                           _IteratorCategory1(), _IteratorCategory2());
+    }
+
+  // Public interface.
+  template<typename _FIterator1, typename _FIterator2,
+           typename _BinaryPredicate>
+    inline _FIterator1
+    search(_FIterator1 __begin1, _FIterator1 __end1,
+           _FIterator2 __begin2, _FIterator2 __end2,
+           _BinaryPredicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::search(
+                               __begin1, __end1, __begin2, __end2, __pred); }
+
+  // Parallel algorithm for random access iterator.
+  template<typename _RAIter1, typename _RAIter2,
+           typename _BinaryPredicate>
+    _RAIter1
+    __search_switch(_RAIter1 __begin1, _RAIter1 __end1,
+                  _RAIter2 __begin2, _RAIter2 __end2,
+                  _BinaryPredicate __pred,
+                  random_access_iterator_tag, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+                static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+            >= __gnu_parallel::_Settings::get().search_minimal_n))
+        return __gnu_parallel::__search_template(__begin1, __end1,
+                                               __begin2, __end2, __pred);
+      else
+        return search(__begin1, __end1, __begin2, __end2, __pred,
+                      __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator1, typename _FIterator2,
+           typename _BinaryPredicate, typename _IteratorTag1,
+           typename _IteratorTag2>
+    inline _FIterator1
+    __search_switch(_FIterator1 __begin1, _FIterator1 __end1,
+                  _FIterator2 __begin2, _FIterator2 __end2,
+                  _BinaryPredicate __pred, _IteratorTag1, _IteratorTag2)
+    { return search(__begin1, __end1, __begin2, __end2, __pred,
+                    __gnu_parallel::sequential_tag()); }
+
+  // Public interface
+  template<typename _FIterator1, typename _FIterator2,
+           typename _BinaryPredicate>
+    inline _FIterator1
+    search(_FIterator1 __begin1, _FIterator1 __end1,
+           _FIterator2 __begin2, _FIterator2 __end2,
+           _BinaryPredicate  __pred)
+    {
+      typedef std::iterator_traits<_FIterator1> _Iterator1Traits;
+      typedef typename _Iterator1Traits::iterator_category _IteratorCategory1;
+      typedef std::iterator_traits<_FIterator2> _Iterator2Traits;
+      typedef typename _Iterator2Traits::iterator_category _IteratorCategory2;
+      return __search_switch(__begin1, __end1, __begin2, __end2, __pred,
+                           _IteratorCategory1(), _IteratorCategory2());
+    }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Integer, typename _Tp>
+    inline _FIterator
+    search_n(_FIterator __begin, _FIterator __end, _Integer __count,
+             const _Tp& __val, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val); }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Integer, typename _Tp,
+           typename _BinaryPredicate>
+    inline _FIterator
+    search_n(_FIterator __begin, _FIterator __end, _Integer __count,
+             const _Tp& __val, _BinaryPredicate __binary_pred,
+             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::search_n(
+               __begin, __end, __count, __val, __binary_pred); }
+
+  // Public interface.
+  template<typename _FIterator, typename _Integer, typename _Tp>
+    inline _FIterator
+    search_n(_FIterator __begin, _FIterator __end, _Integer __count,
+             const _Tp& __val)
+    {
+      typedef typename iterator_traits<_FIterator>::value_type _ValueType;
+      return __gnu_parallel::search_n(__begin, __end, __count, __val,
+                      __gnu_parallel::_EqualTo<_ValueType, _Tp>());
+    }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _Integer,
+           typename _Tp, typename _BinaryPredicate>
+    _RAIter
+    __search_n_switch(_RAIter __begin, _RAIter __end, _Integer __count,
+                      const _Tp& __val, _BinaryPredicate __binary_pred,
+                      random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+                static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().search_minimal_n))
+        {
+          __gnu_parallel::_PseudoSequence<_Tp, _Integer> __ps(__val, __count);
+          return __gnu_parallel::__search_template(
+                   __begin, __end, __ps.begin(), __ps.end(), __binary_pred);
+        }
+      else
+        return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val,
+                                        __binary_pred);
+    }
+
+  // Sequential fallback for input iterator case.
+  template<typename _FIterator, typename _Integer, typename _Tp,
+           typename _BinaryPredicate, typename _IteratorTag>
+    inline _FIterator
+    __search_n_switch(_FIterator __begin, _FIterator __end, _Integer __count,
+                      const _Tp& __val, _BinaryPredicate __binary_pred,
+                      _IteratorTag)
+    { return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val,
+                                      __binary_pred); }
+
+  // Public interface.
+  template<typename _FIterator, typename _Integer, typename _Tp,
+           typename _BinaryPredicate>
+    inline _FIterator
+    search_n(_FIterator __begin, _FIterator __end, _Integer __count,
+             const _Tp& __val, _BinaryPredicate __binary_pred)
+    {
+      return __search_n_switch(__begin, __end, __count, __val, __binary_pred,
+                             typename std::iterator_traits<_FIterator>::
+                             iterator_category());
+    }
+
+
+  // Sequential fallback.
+  template<typename _IIter, typename _OutputIterator,
+           typename _UnaryOperation>
+    inline _OutputIterator
+    transform(_IIter __begin, _IIter __end, _OutputIterator __result, 
+              _UnaryOperation __unary_op, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::transform(__begin, __end, __result, __unary_op); }
+
+  // Parallel unary transform for random access iterators.
+  template<typename _RAIter1, typename _RAIter2,
+           typename _UnaryOperation>
+    _RAIter2
+    __transform1_switch(_RAIter1 __begin, _RAIter1 __end,
+                      _RAIter2 __result, _UnaryOperation __unary_op,
+                      random_access_iterator_tag, random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism_tag
+                      = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().transform_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy = true;
+          typedef __gnu_parallel::_IteratorPair<_RAIter1,
+            _RAIter2, random_access_iterator_tag> _ItTrip;
+          _ItTrip __begin_pair(__begin, __result),
+                  __end_pair(__end, __result + (__end - __begin));
+          __gnu_parallel::__transform1_selector<_ItTrip> __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin_pair, __end_pair, __unary_op, __functionality,
+              __gnu_parallel::_DummyReduct(),
+              __dummy, __dummy, -1, __parallelism_tag);
+          return __functionality._M_finish_iterator;
+        }
+      else
+        return transform(__begin, __end, __result, __unary_op, 
+                         __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case.
+  template<typename _RAIter1, typename _RAIter2,
+           typename _UnaryOperation, typename _IteratorTag1,
+           typename _IteratorTag2>
+    inline _RAIter2
+    __transform1_switch(_RAIter1 __begin, _RAIter1 __end,
+                      _RAIter2 __result, _UnaryOperation __unary_op,
+                      _IteratorTag1, _IteratorTag2)
+    { return transform(__begin, __end, __result, __unary_op, 
+                       __gnu_parallel::sequential_tag()); }
+
+  // Public interface.
+  template<typename _IIter, typename _OutputIterator,
+           typename _UnaryOperation>
+    inline _OutputIterator
+    transform(_IIter __begin, _IIter __end, _OutputIterator __result,
+              _UnaryOperation __unary_op, 
+              __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits::iterator_category _IIteratorCategory;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __transform1_switch(__begin, __end, __result, __unary_op,
+                               _IIteratorCategory(), _OIterCategory(), 
+                               __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _OutputIterator,
+           typename _UnaryOperation>
+    inline _OutputIterator
+    transform(_IIter __begin, _IIter __end, _OutputIterator __result,
+              _UnaryOperation __unary_op)
+    {
+      typedef std::iterator_traits<_IIter> _IIterTraits;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits::iterator_category _IIteratorCategory;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __transform1_switch(__begin, __end, __result, __unary_op,
+                               _IIteratorCategory(), _OIterCategory());
+    }
+
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _BinaryOperation>
+    inline _OutputIterator
+    transform(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _OutputIterator __result,
+              _BinaryOperation __binary_op, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::transform(__begin1, __end1,
+                                       __begin2, __result, __binary_op); }
+
+  // Parallel binary transform for random access iterators.
+  template<typename _RAIter1, typename _RAIter2,
+           typename _RAIter3, typename _BinaryOperation>
+    _RAIter3
+    __transform2_switch(_RAIter1 __begin1, _RAIter1 __end1,
+                      _RAIter2 __begin2,
+                      _RAIter3 __result, _BinaryOperation __binary_op,
+                      random_access_iterator_tag, random_access_iterator_tag,
+                      random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism_tag 
+                      = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            (__end1 - __begin1) >=
+                __gnu_parallel::_Settings::get().transform_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy = true;
+          typedef __gnu_parallel::_IteratorTriple<_RAIter1,
+            _RAIter2, _RAIter3,
+            random_access_iterator_tag> _ItTrip;
+          _ItTrip __begin_triple(__begin1, __begin2, __result),
+            __end_triple(__end1, __begin2 + (__end1 - __begin1),
+                       __result + (__end1 - __begin1));
+          __gnu_parallel::__transform2_selector<_ItTrip> __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(__begin_triple, __end_triple,
+                                            __binary_op, __functionality,
+                                            __gnu_parallel::_DummyReduct(),
+                                            __dummy, __dummy, -1,
+                                            __parallelism_tag);
+          return __functionality._M_finish_iterator;
+        }
+      else
+        return transform(__begin1, __end1, __begin2, __result, __binary_op, 
+                         __gnu_parallel::sequential_tag());
+    }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _BinaryOperation,
+           typename _Tag1, typename _Tag2, typename _Tag3>
+    inline _OutputIterator
+    __transform2_switch(_IIter1 __begin1, _IIter1 __end1, 
+                      _IIter2 __begin2, _OutputIterator __result, 
+                      _BinaryOperation __binary_op, _Tag1, _Tag2, _Tag3)
+    { return transform(__begin1, __end1, __begin2, __result, __binary_op,
+                       __gnu_parallel::sequential_tag()); }
+
+  // Public interface.
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _BinaryOperation>
+    inline _OutputIterator
+    transform(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _OutputIterator __result,
+              _BinaryOperation __binary_op, 
+              __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __transform2_switch(
+               __begin1, __end1, __begin2, __result, __binary_op,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory(),
+               __parallelism_tag);
+    }
+
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _BinaryOperation>
+    inline _OutputIterator
+    transform(_IIter1 __begin1, _IIter1 __end1,
+              _IIter2 __begin2, _OutputIterator __result,
+              _BinaryOperation __binary_op)
+    {
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __transform2_switch(
+               __begin1, __end1, __begin2, __result, __binary_op,
+               _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+    }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Tp>
+    inline void
+    replace(_FIterator __begin, _FIterator __end, const _Tp& __old_value, 
+            const _Tp& __new_value, __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::replace(__begin, __end, __old_value, __new_value); }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _Tp, typename _IteratorTag>
+    inline void
+    __replace_switch(_FIterator __begin, _FIterator __end, 
+                     const _Tp& __old_value, const _Tp& __new_value,
+                     _IteratorTag)
+    { replace(__begin, __end, __old_value, __new_value, 
+              __gnu_parallel::sequential_tag()); }
+
+  // Parallel replace for random access iterators
+  template<typename _RAIter, typename _Tp>
+    inline void
+    __replace_switch(_RAIter __begin, _RAIter __end, 
+                   const _Tp& __old_value, const _Tp& __new_value, 
+                   random_access_iterator_tag, 
+                   __gnu_parallel::_Parallelism __parallelism_tag
+                   = __gnu_parallel::parallel_balanced)
+    {
+      // XXX parallel version is where?
+      replace(__begin, __end, __old_value, __new_value, 
+              __gnu_parallel::sequential_tag()); 
+    }
+
+  // Public interface
+  template<typename _FIterator, typename _Tp>
+    inline void
+    replace(_FIterator __begin, _FIterator __end, const _Tp& __old_value, 
+            const _Tp& __new_value,
+            __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      __replace_switch(__begin, __end, __old_value, __new_value,
+                       _IteratorCategory(),
+                     __parallelism_tag);
+    }
+
+  template<typename _FIterator, typename _Tp>
+    inline void
+    replace(_FIterator __begin, _FIterator __end, const _Tp& __old_value, 
+            const _Tp& __new_value)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      __replace_switch(__begin, __end, __old_value, __new_value,
+                       _IteratorCategory());
+    }
+
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Predicate, typename _Tp>
+    inline void
+    replace_if(_FIterator __begin, _FIterator __end, _Predicate __pred, 
+               const _Tp& __new_value, __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::replace_if(__begin, __end, __pred, __new_value); }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _Predicate, typename _Tp,
+           typename _IteratorTag>
+    inline void
+    __replace_if_switch(_FIterator __begin, _FIterator __end,
+                      _Predicate __pred, const _Tp& __new_value, _IteratorTag)
+    { replace_if(__begin, __end, __pred, __new_value,
+                 __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _Predicate, typename _Tp>
+    void
+    __replace_if_switch(_RAIter __begin, _RAIter __end,
+                      _Predicate __pred, const _Tp& __new_value,
+                      random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism_tag
+                      = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().replace_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy;
+          __gnu_parallel::
+            __replace_if_selector<_RAIter, _Predicate, _Tp>
+            __functionality(__new_value);
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __pred, __functionality,
+              __gnu_parallel::_DummyReduct(),
+              true, __dummy, -1, __parallelism_tag);
+        }
+      else
+        replace_if(__begin, __end, __pred, __new_value, 
+                   __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _FIterator, typename _Predicate, typename _Tp>
+    inline void
+    replace_if(_FIterator __begin, _FIterator __end,
+               _Predicate __pred, const _Tp& __new_value, 
+               __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_FIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      __replace_if_switch(__begin, __end, __pred, __new_value,
+                          _IteratorCategory(), __parallelism_tag);
+    }
+
+  template<typename _FIterator, typename _Predicate, typename _Tp>
+    inline void
+    replace_if(_FIterator __begin, _FIterator __end,
+               _Predicate __pred, const _Tp& __new_value)
+    {
+      typedef std::iterator_traits<_FIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      __replace_if_switch(__begin, __end, __pred, __new_value,
+                          _IteratorCategory());
+    }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Generator>
+    inline void
+    generate(_FIterator __begin, _FIterator __end, _Generator __gen, 
+             __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::generate(__begin, __end, __gen); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _FIterator, typename _Generator, typename _IteratorTag>
+    inline void
+    __generate_switch(_FIterator __begin, _FIterator __end, _Generator __gen,
+                    _IteratorTag)
+    { generate(__begin, __end, __gen, __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _Generator>
+    void
+    __generate_switch(_RAIter __begin, _RAIter __end,
+                    _Generator __gen, random_access_iterator_tag, 
+                    __gnu_parallel::_Parallelism __parallelism_tag
+                    = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().generate_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy;
+          __gnu_parallel::__generate_selector<_RAIter>
+            __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __gen, __functionality,
+              __gnu_parallel::_DummyReduct(),
+              true, __dummy, -1, __parallelism_tag);
+        }
+      else
+        generate(__begin, __end, __gen, __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _FIterator, typename _Generator>
+    inline void
+    generate(_FIterator __begin, _FIterator __end,
+             _Generator __gen, __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_FIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      __generate_switch(__begin, __end, __gen, _IteratorCategory(),
+                        __parallelism_tag);
+    }
+
+  template<typename _FIterator, typename _Generator>
+    inline void
+    generate(_FIterator __begin, _FIterator __end, _Generator __gen)
+    {
+      typedef std::iterator_traits<_FIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      __generate_switch(__begin, __end, __gen, _IteratorCategory());
+    }
+
+
+  // Sequential fallback.
+  template<typename _OutputIterator, typename _Size, typename _Generator>
+    inline _OutputIterator
+    generate_n(_OutputIterator __begin, _Size __n, _Generator __gen, 
+               __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::generate_n(__begin, __n, __gen); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _OutputIterator, typename _Size, typename _Generator,
+           typename _IteratorTag>
+    inline _OutputIterator
+    __generate_n_switch(_OutputIterator __begin, _Size __n, _Generator __gen,
+                        _IteratorTag)
+    { return generate_n(__begin, __n, __gen,
+                        __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _Size, typename _Generator>
+    inline _RAIter
+    __generate_n_switch(_RAIter __begin, _Size __n, _Generator __gen, 
+                      random_access_iterator_tag, 
+                      __gnu_parallel::_Parallelism __parallelism_tag
+                      = __gnu_parallel::parallel_balanced)
+    {
+      // XXX parallel version is where?
+      return generate_n(__begin, __n, __gen, __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _OutputIterator, typename _Size, typename _Generator>
+    inline _OutputIterator
+    generate_n(_OutputIterator __begin, _Size __n, _Generator __gen, 
+               __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_OutputIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __generate_n_switch(__begin, __n, __gen, _IteratorCategory(), 
+                               __parallelism_tag); 
+    }
+
+  template<typename _OutputIterator, typename _Size, typename _Generator>
+    inline _OutputIterator
+    generate_n(_OutputIterator __begin, _Size __n, _Generator __gen)
+    {
+      typedef std::iterator_traits<_OutputIterator> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __generate_n_switch(__begin, __n, __gen, _IteratorCategory());
+    }
+
+
+  // Sequential fallback.
+  template<typename _RAIter>
+    inline void
+    random_shuffle(_RAIter __begin, _RAIter __end, 
+                   __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::random_shuffle(__begin, __end); }
+
+  // Sequential fallback.
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    inline void
+    random_shuffle(_RAIter __begin, _RAIter __end,
+                   _RandomNumberGenerator& __rand,
+                   __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::random_shuffle(__begin, __end, __rand); }
+
+
+  /** @brief Functor wrapper for std::rand(). */
+  template<typename _MustBeInt = int>
+    struct _CRandNumber
+    {
+      int
+      operator()(int __limit)
+      { return rand() % __limit; }
+    };
+
+  // Fill in random number generator.
+  template<typename _RAIter>
+    inline void
+    random_shuffle(_RAIter __begin, _RAIter __end)
+    {
+      _CRandNumber<> __r;
+      // Parallelization still possible.
+      __gnu_parallel::random_shuffle(__begin, __end, __r);
+    }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void
+    random_shuffle(_RAIter __begin, _RAIter __end,
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+                   _RandomNumberGenerator&& __rand)
+#else
+                   _RandomNumberGenerator& __rand)
+#endif
+    {
+      if (__begin == __end)
+        return;
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().random_shuffle_minimal_n))
+        __gnu_parallel::__parallel_random_shuffle(__begin, __end, __rand);
+      else
+        __gnu_parallel::__sequential_random_shuffle(__begin, __end, __rand);
+    }
+
+  // Sequential fallback.
+  template<typename _FIterator, typename _Predicate>
+    inline _FIterator
+    partition(_FIterator __begin, _FIterator __end,
+              _Predicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::partition(__begin, __end, __pred); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _FIterator, typename _Predicate, typename _IteratorTag>
+    inline _FIterator
+    __partition_switch(_FIterator __begin, _FIterator __end,
+                     _Predicate __pred, _IteratorTag)
+    { return partition(__begin, __end, __pred,
+                       __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter, typename _Predicate>
+    _RAIter
+    __partition_switch(_RAIter __begin, _RAIter __end,
+                     _Predicate __pred, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().partition_minimal_n))
+        {
+          typedef typename std::iterator_traits<_RAIter>::
+            difference_type _DifferenceType;
+          _DifferenceType __middle = __gnu_parallel::
+            __parallel_partition(__begin, __end, __pred,
+                               __gnu_parallel::__get_max_threads());
+          return __begin + __middle;
+        }
+      else
+        return partition(__begin, __end, __pred,
+                         __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _FIterator, typename _Predicate>
+    inline _FIterator
+    partition(_FIterator __begin, _FIterator __end, _Predicate __pred)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __partition_switch(__begin, __end, __pred, _IteratorCategory());
+    }
+
+  // sort interface
+
+  // Sequential fallback
+  template<typename _RAIter>
+    inline void
+    sort(_RAIter __begin, _RAIter __end, 
+         __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::sort(__begin, __end); }
+
+  // Sequential fallback
+  template<typename _RAIter, typename _Compare>
+    inline void
+    sort(_RAIter __begin, _RAIter __end, _Compare __comp,
+         __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::sort<_RAIter, _Compare>(__begin, __end,
+                                                             __comp); }
+
+  // Public interface
+  template<typename _RAIter, typename _Compare,
+           typename _Parallelism>
+  void
+  sort(_RAIter __begin, _RAIter __end, _Compare __comp,
+       _Parallelism __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+
+    if (__begin != __end)
+      {
+        if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) >=
+              __gnu_parallel::_Settings::get().sort_minimal_n))
+          __gnu_parallel::__parallel_sort<false>(
+                            __begin, __end, __comp, __parallelism);
+        else
+          sort(__begin, __end, __comp, __gnu_parallel::sequential_tag());
+      }
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+    inline void
+    sort(_RAIter __begin, _RAIter __end)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      sort(__begin, __end, std::less<_ValueType>(),
+           __gnu_parallel::default_parallel_tag());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::default_parallel_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::parallel_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::multiway_mergesort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::multiway_mergesort_sampling_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::multiway_mergesort_exact_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::quicksort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::balanced_quicksort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface
+  template<typename _RAIter, typename _Compare>
+    void
+    sort(_RAIter __begin, _RAIter __end, _Compare __comp)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+    sort(__begin, __end, __comp, __gnu_parallel::default_parallel_tag());
+  }
+
+
+  // stable_sort interface
+
+
+  // Sequential fallback
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+       __gnu_parallel::sequential_tag)
+  { _GLIBCXX_STD_A::stable_sort(__begin, __end); }
+
+  // Sequential fallback
+  template<typename _RAIter, typename _Compare>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              _Compare __comp, __gnu_parallel::sequential_tag)
+  { _GLIBCXX_STD_A::stable_sort<_RAIter, _Compare>(
+      __begin, __end, __comp); }
+
+  // Public interface
+  template<typename _RAIter, typename _Compare,
+           typename _Parallelism>
+  void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              _Compare __comp, _Parallelism __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+
+    if (__begin != __end)
+      {
+        if (_GLIBCXX_PARALLEL_CONDITION(
+              static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) >=
+              __gnu_parallel::_Settings::get().sort_minimal_n))
+          __gnu_parallel::__parallel_sort<true>(
+                            __begin, __end, __comp, __parallelism);
+        else
+          stable_sort(__begin, __end, __comp,
+                      __gnu_parallel::sequential_tag());
+      }
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(),
+                __gnu_parallel::default_parallel_tag());
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              __gnu_parallel::default_parallel_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              __gnu_parallel::parallel_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              __gnu_parallel::multiway_mergesort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              __gnu_parallel::quicksort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+  inline void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              __gnu_parallel::balanced_quicksort_tag __parallelism)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(__begin, __end, std::less<_ValueType>(), __parallelism);
+  }
+
+  // Public interface
+  template<typename _RAIter, typename _Compare>
+  void
+  stable_sort(_RAIter __begin, _RAIter __end,
+              _Compare __comp)
+  {
+    typedef iterator_traits<_RAIter> _TraitsType;
+    typedef typename _TraitsType::value_type _ValueType;
+    stable_sort(
+      __begin, __end, __comp, __gnu_parallel::default_parallel_tag());
+  }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          _IIter2 __end2, _OutputIterator __result,
+          __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::merge(
+               __begin1, __end1, __begin2, __end2, __result); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Compare>
+    inline _OutputIterator
+    merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
+          _IIter2 __end2, _OutputIterator __result, _Compare __comp,
+          __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::merge(
+                __begin1, __end1, __begin2, __end2, __result, __comp); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2, typename _OutputIterator,
+           typename _Compare, typename _IteratorTag1,
+           typename _IteratorTag2, typename _IteratorTag3>
+    inline _OutputIterator
+    __merge_switch(_IIter1 __begin1, _IIter1 __end1,
+                 _IIter2 __begin2, _IIter2 __end2,
+                 _OutputIterator __result, _Compare __comp,
+                 _IteratorTag1, _IteratorTag2, _IteratorTag3)
+     { return _GLIBCXX_STD_A::merge(__begin1, __end1, __begin2, __end2,
+                                    __result, __comp); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Compare>
+    _OutputIterator
+    __merge_switch(_IIter1 __begin1, _IIter1 __end1, 
+                 _IIter2 __begin2, _IIter2 __end2, 
+                 _OutputIterator __result, _Compare __comp, 
+                 random_access_iterator_tag, random_access_iterator_tag, 
+                 random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            (static_cast<__gnu_parallel::_SequenceIndex>(__end1 - __begin1)
+             >= __gnu_parallel::_Settings::get().merge_minimal_n
+             || static_cast<__gnu_parallel::_SequenceIndex>(__end2 - __begin2)
+             >= __gnu_parallel::_Settings::get().merge_minimal_n)))
+        return __gnu_parallel::__parallel_merge_advance(
+                 __begin1, __end1, __begin2, __end2, __result,
+                 (__end1 - __begin1) + (__end2 - __begin2), __comp);
+      else
+        return __gnu_parallel::__merge_advance(
+                 __begin1, __end1, __begin2, __end2, __result,
+                 (__end1 - __begin1) + (__end2 - __begin2), __comp);
+  }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator, typename _Compare>
+    inline _OutputIterator
+    merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          _IIter2 __end2, _OutputIterator __result, _Compare __comp)
+    {
+      typedef typename iterator_traits<_IIter1>::value_type _ValueType;
+
+      typedef std::iterator_traits<_IIter1> _IIterTraits1;
+      typedef std::iterator_traits<_IIter2> _IIterTraits2;
+      typedef std::iterator_traits<_OutputIterator> _OIterTraits;
+      typedef typename _IIterTraits1::iterator_category
+        _IIterCategory1;
+      typedef typename _IIterTraits2::iterator_category
+        _IIterCategory2;
+      typedef typename _OIterTraits::iterator_category _OIterCategory;
+
+      return __merge_switch(
+              __begin1, __end1, __begin2, __end2, __result, __comp,
+              _IIterCategory1(), _IIterCategory2(), _OIterCategory());
+  }
+
+
+  // Public interface, insert default comparator
+  template<typename _IIter1, typename _IIter2,
+           typename _OutputIterator>
+    inline _OutputIterator
+    merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          _IIter2 __end2, _OutputIterator __result)
+    {
+      typedef std::iterator_traits<_IIter1> _Iterator1Traits;
+      typedef std::iterator_traits<_IIter2> _Iterator2Traits;
+      typedef typename _Iterator1Traits::value_type _ValueType1;
+      typedef typename _Iterator2Traits::value_type _ValueType2;
+
+      return __gnu_parallel::merge(__begin1, __end1, __begin2, __end2,
+                  __result, __gnu_parallel::_Less<_ValueType1, _ValueType2>());
+    }
+
+  // Sequential fallback
+  template<typename _RAIter>
+    inline void
+    nth_element(_RAIter __begin, _RAIter __nth, 
+                _RAIter __end, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::nth_element(__begin, __nth, __end); }
+
+  // Sequential fallback
+  template<typename _RAIter, typename _Compare>
+    inline void
+    nth_element(_RAIter __begin, _RAIter __nth, 
+                _RAIter __end, _Compare __comp, 
+              __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::nth_element(__begin, __nth, __end, __comp); }
+
+  // Public interface
+  template<typename _RAIter, typename _Compare>
+    inline void
+    nth_element(_RAIter __begin, _RAIter __nth, 
+                _RAIter __end, _Compare __comp)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().nth_element_minimal_n))
+        __gnu_parallel::__parallel_nth_element(__begin, __nth, __end, __comp);
+      else
+        nth_element(__begin, __nth, __end, __comp,
+                    __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+    inline void
+    nth_element(_RAIter __begin, _RAIter __nth, 
+                _RAIter __end)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      __gnu_parallel::nth_element(__begin, __nth, __end,
+                                  std::less<_ValueType>());
+    }
+
+  // Sequential fallback
+  template<typename _RAIter, typename _Compare>
+    inline void
+    partial_sort(_RAIter __begin, _RAIter __middle, 
+                 _RAIter __end, _Compare __comp,
+                 __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::partial_sort(__begin, __middle, __end, __comp); }
+
+  // Sequential fallback
+  template<typename _RAIter>
+    inline void
+    partial_sort(_RAIter __begin, _RAIter __middle, 
+                 _RAIter __end, __gnu_parallel::sequential_tag)
+    { _GLIBCXX_STD_A::partial_sort(__begin, __middle, __end); }
+
+  // Public interface, parallel algorithm for random access iterators
+  template<typename _RAIter, typename _Compare>
+    void
+    partial_sort(_RAIter __begin, _RAIter __middle, 
+                 _RAIter __end, _Compare __comp)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().partial_sort_minimal_n))
+        __gnu_parallel::
+          __parallel_partial_sort(__begin, __middle, __end, __comp);
+      else
+        partial_sort(__begin, __middle, __end, __comp,
+                     __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _RAIter>
+    inline void
+    partial_sort(_RAIter __begin, _RAIter __middle, 
+                 _RAIter __end)
+    {
+      typedef iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      __gnu_parallel::partial_sort(__begin, __middle, __end,
+                                   std::less<_ValueType>());
+    }
+
+  // Sequential fallback
+  template<typename _FIterator>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end, 
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::max_element(__begin, __end); }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end, _Compare __comp, 
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::max_element(__begin, __end, __comp); }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _Compare, typename _IteratorTag>
+    inline _FIterator
+    __max_element_switch(_FIterator __begin, _FIterator __end, 
+                       _Compare __comp, _IteratorTag)
+    { return max_element(__begin, __end, __comp,
+                         __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter, typename _Compare>
+    _RAIter
+    __max_element_switch(_RAIter __begin, _RAIter __end, 
+                       _Compare __comp, random_access_iterator_tag, 
+                       __gnu_parallel::_Parallelism __parallelism_tag
+                       = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().max_element_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          _RAIter __res(__begin);
+          __gnu_parallel::__identity_selector<_RAIter>
+            __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __gnu_parallel::_Nothing(), __functionality,
+              __gnu_parallel::__max_element_reduct<_Compare, _RAIter>(__comp),
+              __res, __res, -1, __parallelism_tag);
+          return __res;
+        }
+      else
+        return max_element(__begin, __end, __comp,
+                           __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _FIterator>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end, 
+                __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef typename iterator_traits<_FIterator>::value_type _ValueType;
+      return max_element(__begin, __end, std::less<_ValueType>(),
+                         __parallelism_tag);
+    }
+
+  template<typename _FIterator>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end)
+    {
+      typedef typename iterator_traits<_FIterator>::value_type _ValueType;
+      return __gnu_parallel::max_element(__begin, __end,
+                                         std::less<_ValueType>());
+    }
+
+  // Public interface
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end, _Compare __comp,
+                __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __max_element_switch(__begin, __end, __comp, _IteratorCategory(), 
+                                  __parallelism_tag);
+    }
+
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    max_element(_FIterator __begin, _FIterator __end, _Compare __comp)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __max_element_switch(__begin, __end, __comp, _IteratorCategory());
+    }
+
+
+  // Sequential fallback
+  template<typename _FIterator>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end, 
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::min_element(__begin, __end); }
+
+  // Sequential fallback
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end, _Compare __comp, 
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::min_element(__begin, __end, __comp); }
+
+  // Sequential fallback for input iterator case
+  template<typename _FIterator, typename _Compare, typename _IteratorTag>
+    inline _FIterator
+    __min_element_switch(_FIterator __begin, _FIterator __end, 
+                       _Compare __comp, _IteratorTag)
+    { return min_element(__begin, __end, __comp,
+                         __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators
+  template<typename _RAIter, typename _Compare>
+    _RAIter
+    __min_element_switch(_RAIter __begin, _RAIter __end, 
+                       _Compare __comp, random_access_iterator_tag, 
+                       __gnu_parallel::_Parallelism __parallelism_tag
+                       = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().min_element_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          _RAIter __res(__begin);
+          __gnu_parallel::__identity_selector<_RAIter>
+            __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access(
+              __begin, __end, __gnu_parallel::_Nothing(), __functionality,
+              __gnu_parallel::__min_element_reduct<_Compare, _RAIter>(__comp),
+              __res, __res, -1, __parallelism_tag);
+          return __res;
+        }
+      else
+        return min_element(__begin, __end, __comp,
+                           __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface, insert default comparator
+  template<typename _FIterator>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end, 
+                __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef typename iterator_traits<_FIterator>::value_type _ValueType;
+      return min_element(__begin, __end, std::less<_ValueType>(),
+                         __parallelism_tag);
+    }
+
+  template<typename _FIterator>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end)
+    {
+      typedef typename iterator_traits<_FIterator>::value_type _ValueType;
+      return __gnu_parallel::min_element(__begin, __end,
+                                         std::less<_ValueType>());
+    }
+
+  // Public interface
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end, _Compare __comp,
+                __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __min_element_switch(__begin, __end, __comp, _IteratorCategory(), 
+                                __parallelism_tag);
+    }
+
+  template<typename _FIterator, typename _Compare>
+    inline _FIterator
+    min_element(_FIterator __begin, _FIterator __end, _Compare __comp)
+    {
+      typedef iterator_traits<_FIterator> _TraitsType;
+      typedef typename _TraitsType::iterator_category _IteratorCategory;
+      return __min_element_switch(__begin, __end, __comp, _IteratorCategory());
+    }
+} // end namespace
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_ALGO_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algobase.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algobase.h
new file mode 100644
index 000000000..20456b57b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algobase.h
@@ -0,0 +1,279 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/algobase.h
+ *  @brief Parallel STL function calls corresponding to the
+ *  stl_algobase.h header.  The functions defined here mainly do case
+ *  switches and call the actual parallelized versions in other files.
+ *  Inlining policy: Functions that basically only contain one
+ *  function call, are declared inline.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_ALGOBASE_H
+#define _GLIBCXX_PARALLEL_ALGOBASE_H 1
+
+#include <bits/stl_algobase.h>
+#include <parallel/base.h>
+#include <parallel/tags.h>
+#include <parallel/settings.h>
+#include <parallel/find.h>
+#include <parallel/find_selectors.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __parallel
+{
+  // NB: equal and lexicographical_compare require mismatch.
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2>
+    inline pair<_IIter1, _IIter2>
+    mismatch(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
+             __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::mismatch(__begin1, __end1, __begin2); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline pair<_IIter1, _IIter2>
+    mismatch(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
+             _Predicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::mismatch(__begin1, __end1, __begin2, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2,
+           typename _Predicate, typename _IteratorTag1, typename _IteratorTag2>
+    inline pair<_IIter1, _IIter2>
+    __mismatch_switch(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
+                      _Predicate __pred, _IteratorTag1, _IteratorTag2)
+    { return _GLIBCXX_STD_A::mismatch(__begin1, __end1, __begin2, __pred); }
+
+  // Parallel mismatch for random access iterators
+  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
+    pair<_RAIter1, _RAIter2>
+    __mismatch_switch(_RAIter1 __begin1, _RAIter1 __end1,
+                      _RAIter2 __begin2, _Predicate __pred, 
+                      random_access_iterator_tag, random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        {
+          _RAIter1 __res =
+            __gnu_parallel::__find_template(__begin1, __end1, __begin2, __pred,
+                                            __gnu_parallel::
+                                            __mismatch_selector()).first;
+          return make_pair(__res , __begin2 + (__res - __begin1));
+        }
+      else
+        return _GLIBCXX_STD_A::mismatch(__begin1, __end1, __begin2, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2>
+    inline pair<_IIter1, _IIter2>
+    mismatch(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2)
+    {
+      typedef std::iterator_traits<_IIter1> _Iterator1Traits;
+      typedef std::iterator_traits<_IIter2> _Iterator2Traits;
+      typedef typename _Iterator1Traits::value_type _ValueType1;
+      typedef typename _Iterator2Traits::value_type _ValueType2;
+      typedef typename _Iterator1Traits::iterator_category _IteratorCategory1;
+      typedef typename _Iterator2Traits::iterator_category _IteratorCategory2;
+
+      typedef __gnu_parallel::_EqualTo<_ValueType1, _ValueType2> _EqualTo;
+
+      return __mismatch_switch(__begin1, __end1, __begin2, _EqualTo(),
+                               _IteratorCategory1(), _IteratorCategory2());
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline pair<_IIter1, _IIter2>
+    mismatch(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
+             _Predicate __pred)
+    {
+      typedef std::iterator_traits<_IIter1> _Iterator1Traits;
+      typedef std::iterator_traits<_IIter2> _Iterator2Traits;
+      typedef typename _Iterator1Traits::iterator_category _IteratorCategory1;
+      typedef typename _Iterator2Traits::iterator_category _IteratorCategory2;
+
+      return __mismatch_switch(__begin1, __end1, __begin2, __pred,
+                               _IteratorCategory1(), _IteratorCategory2());
+    }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2>
+    inline bool
+    equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::equal(__begin1, __end1, __begin2); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline bool
+    equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          _Predicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::equal(__begin1, __end1, __begin2, __pred); }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2>
+    inline bool
+    equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2)
+    {
+      return __gnu_parallel::mismatch(__begin1, __end1, __begin2).first
+              == __end1;
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline bool
+    equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
+          _Predicate __pred)
+    {
+      return __gnu_parallel::mismatch(__begin1, __end1, __begin2, __pred).first
+              == __end1;
+    }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2>
+    inline bool
+    lexicographical_compare(_IIter1 __begin1, _IIter1 __end1, 
+                            _IIter2 __begin2, _IIter2 __end2, 
+                            __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::lexicographical_compare(__begin1, __end1,
+                                                     __begin2, __end2); }
+
+  // Sequential fallback
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline bool
+    lexicographical_compare(_IIter1 __begin1, _IIter1 __end1, 
+                            _IIter2 __begin2, _IIter2 __end2, 
+                            _Predicate __pred, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::lexicographical_compare(
+               __begin1, __end1, __begin2, __end2, __pred); }
+
+  // Sequential fallback for input iterator case
+  template<typename _IIter1, typename _IIter2,
+           typename _Predicate, typename _IteratorTag1, typename _IteratorTag2>
+    inline bool
+    __lexicographical_compare_switch(_IIter1 __begin1, _IIter1 __end1,
+                                     _IIter2 __begin2, _IIter2 __end2, 
+                                     _Predicate __pred,
+                                     _IteratorTag1, _IteratorTag2)
+    { return _GLIBCXX_STD_A::lexicographical_compare(
+               __begin1, __end1, __begin2, __end2, __pred); }
+
+  // Parallel lexicographical_compare for random access iterators
+  // Limitation: Both valuetypes must be the same
+  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
+    bool
+    __lexicographical_compare_switch(_RAIter1 __begin1, _RAIter1 __end1,
+                                     _RAIter2 __begin2, _RAIter2 __end2,
+                                     _Predicate __pred,
+                                     random_access_iterator_tag, 
+                                     random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(true))
+        {
+          typedef iterator_traits<_RAIter1> _TraitsType1;
+          typedef typename _TraitsType1::value_type _ValueType1;
+
+          typedef iterator_traits<_RAIter2> _TraitsType2;
+          typedef typename _TraitsType2::value_type _ValueType2;
+
+          typedef __gnu_parallel::
+                  _EqualFromLess<_ValueType1, _ValueType2, _Predicate>
+                  _EqualFromLessCompare;
+
+          // Longer sequence in first place.
+          if ((__end1 - __begin1) < (__end2 - __begin2))
+            {
+              typedef pair<_RAIter1, _RAIter2> _SpotType;
+              _SpotType __mm = __mismatch_switch(__begin1, __end1, __begin2, 
+                                             _EqualFromLessCompare(__pred), 
+                                             random_access_iterator_tag(), 
+                                             random_access_iterator_tag());
+
+              return (__mm.first == __end1)
+                        || bool(__pred(*__mm.first, *__mm.second));
+            }
+          else
+            {
+              typedef pair<_RAIter2, _RAIter1> _SpotType;
+              _SpotType __mm = __mismatch_switch(__begin2, __end2, __begin1, 
+                                             _EqualFromLessCompare(__pred), 
+                                             random_access_iterator_tag(), 
+                                             random_access_iterator_tag());
+
+              return (__mm.first != __end2)
+                        && bool(__pred(*__mm.second, *__mm.first));
+            }
+        }
+      else
+        return _GLIBCXX_STD_A::lexicographical_compare(
+                 __begin1, __end1, __begin2, __end2, __pred);
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2>
+    inline bool
+    lexicographical_compare(_IIter1 __begin1, _IIter1 __end1,
+                            _IIter2 __begin2, _IIter2 __end2)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::value_type _ValueType1;
+      typedef typename _TraitsType1::iterator_category _IteratorCategory1;
+
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::value_type _ValueType2;
+      typedef typename _TraitsType2::iterator_category _IteratorCategory2;
+      typedef __gnu_parallel::_Less<_ValueType1, _ValueType2> _LessType;
+
+      return __lexicographical_compare_switch(
+               __begin1, __end1, __begin2, __end2, _LessType(),
+               _IteratorCategory1(), _IteratorCategory2());
+    }
+
+  // Public interface
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    inline bool
+    lexicographical_compare(_IIter1 __begin1, _IIter1 __end1,
+                            _IIter2 __begin2, _IIter2 __end2,
+                            _Predicate __pred)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::iterator_category _IteratorCategory1;
+
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::iterator_category _IteratorCategory2;
+
+      return __lexicographical_compare_switch(
+               __begin1, __end1, __begin2, __end2, __pred,
+               _IteratorCategory1(), _IteratorCategory2());
+    }
+} // end namespace
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_ALGOBASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithm b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithm
new file mode 100644
index 000000000..3c93d5b68
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithm
@@ -0,0 +1,40 @@
+// Algorithm extensions -*- C++ -*-
+
+// Copyright (C) 2007, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/algorithm
+ *  This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _PARALLEL_ALGORITHM
+#define _PARALLEL_ALGORITHM 1
+
+#pragma GCC system_header
+
+#include <algorithm>
+#include <parallel/algorithmfwd.h>
+#include <parallel/algobase.h>
+#include <parallel/algo.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithmfwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithmfwd.h
new file mode 100644
index 000000000..7d4a792cb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/algorithmfwd.h
@@ -0,0 +1,908 @@
+// <algorithm> parallel extensions -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/algorithmfwd.h
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
+#define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
+
+#pragma GCC system_header
+
+#include <parallel/tags.h>
+#include <parallel/settings.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __parallel
+{
+  template<typename _FIter>
+    _FIter
+    adjacent_find(_FIter, _FIter);
+
+  template<typename _FIter>
+    _FIter
+    adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _IterTag>
+    _FIter
+    __adjacent_find_switch(_FIter, _FIter, _IterTag);
+
+  template<typename _RAIter>
+    _RAIter
+    __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
+
+
+  template<typename _FIter, typename _BiPredicate>
+    _FIter
+    adjacent_find(_FIter, _FIter, _BiPredicate);
+
+  template<typename _FIter, typename _BiPredicate>
+    _FIter
+    adjacent_find(_FIter, _FIter, _BiPredicate,
+                  __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _BiPredicate, typename _IterTag>
+    _FIter
+    __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
+
+  template<typename _RAIter, typename _BiPredicate>
+    _RAIter
+    __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate, 
+                         random_access_iterator_tag);
+
+
+  template<typename _IIter, typename _Tp>
+    typename iterator_traits<_IIter>::difference_type
+    count(_IIter, _IIter, const _Tp&);
+
+  template<typename _IIter, typename _Tp>
+    typename iterator_traits<_IIter>::difference_type
+    count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Tp>
+    typename iterator_traits<_IIter>::difference_type
+    count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _Tp, typename _IterTag>
+    typename iterator_traits<_IIter>::difference_type
+    __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
+
+  template<typename _RAIter, typename _Tp>
+    typename iterator_traits<_RAIter>::difference_type
+    __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
+                 __gnu_parallel::_Parallelism __parallelism
+                 = __gnu_parallel::parallel_unbalanced);
+
+
+  template<typename _IIter, typename _Predicate>
+    typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter, _IIter, _Predicate);
+
+  template<typename _IIter, typename _Predicate>
+    typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Predicate>
+    typename iterator_traits<_IIter>::difference_type
+    count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _Predicate, typename _IterTag>
+    typename iterator_traits<_IIter>::difference_type
+    __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
+
+  template<typename _RAIter, typename _Predicate>
+    typename iterator_traits<_RAIter>::difference_type
+    __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
+                    __gnu_parallel::_Parallelism __parallelism
+                    = __gnu_parallel::parallel_unbalanced);
+
+  // algobase.h
+  template<typename _IIter1, typename _IIter2>
+    bool
+    equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    bool
+    equal(_IIter1, _IIter1, _IIter2, _Predicate,
+          __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2>
+    bool
+    equal(_IIter1, _IIter1, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    bool
+    equal(_IIter1, _IIter1, _IIter2, _Predicate);
+
+  template<typename _IIter, typename _Tp>
+    _IIter
+    find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Tp>
+    _IIter
+    find(_IIter, _IIter, const _Tp& __val);
+
+  template<typename _IIter, typename _Tp, typename _IterTag>
+    _IIter
+    __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
+
+  template<typename _RAIter, typename _Tp>
+    _RAIter
+    __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
+
+  template<typename _IIter, typename _Predicate>
+    _IIter
+    find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Predicate>
+    _IIter
+    find_if(_IIter, _IIter, _Predicate);
+
+  template<typename _IIter, typename _Predicate, typename _IterTag>
+    _IIter
+    __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
+
+  template<typename _RAIter, typename _Predicate>
+    _RAIter
+    __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
+
+  template<typename _IIter, typename _FIter>
+    _IIter
+    find_first_of(_IIter, _IIter, _FIter, _FIter,
+                  __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _FIter, typename _BiPredicate>
+    _IIter
+    find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
+                  __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _FIter, typename _BiPredicate>
+    _IIter
+    find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
+
+  template<typename _IIter, typename _FIter>
+    _IIter
+    find_first_of(_IIter, _IIter, _FIter, _FIter);
+
+  template<typename _IIter, typename _FIter,
+           typename _IterTag1, typename _IterTag2>
+    _IIter
+    __find_first_of_switch(
+      _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
+
+  template<typename _RAIter, typename _FIter, typename _BiPredicate,
+           typename _IterTag>
+    _RAIter
+    __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
+                         random_access_iterator_tag, _IterTag);
+
+  template<typename _IIter, typename _FIter, typename _BiPredicate,
+           typename _IterTag1, typename _IterTag2>
+    _IIter
+    __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
+                         _IterTag1, _IterTag2);
+
+
+  template<typename _IIter, typename _Function>
+    _Function
+    for_each(_IIter, _IIter, _Function);
+
+  template<typename _IIter, typename _Function>
+    _Function
+    for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
+
+  template<typename _Iterator, typename _Function>
+    _Function
+    for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _Function, typename _IterTag>
+    _Function
+    __for_each_switch(_IIter, _IIter, _Function, _IterTag);
+
+  template<typename _RAIter, typename _Function>
+    _Function
+    __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
+                    __gnu_parallel::_Parallelism  __parallelism
+                    = __gnu_parallel::parallel_balanced);
+
+
+  template<typename _FIter, typename _Generator>
+    void
+    generate(_FIter, _FIter, _Generator);
+
+  template<typename _FIter, typename _Generator>
+    void
+    generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Generator>
+    void
+    generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Generator, typename _IterTag>
+    void
+    __generate_switch(_FIter, _FIter, _Generator, _IterTag);
+
+  template<typename _RAIter, typename _Generator>
+    void
+    __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
+                    __gnu_parallel::_Parallelism __parallelism
+                    = __gnu_parallel::parallel_balanced);
+
+  template<typename _OIter, typename _Size, typename _Generator>
+    _OIter
+    generate_n(_OIter, _Size, _Generator);
+
+  template<typename _OIter, typename _Size, typename _Generator>
+    _OIter
+    generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
+
+  template<typename _OIter, typename _Size, typename _Generator>
+    _OIter
+    generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
+
+  template<typename _OIter, typename _Size, typename _Generator,
+           typename _IterTag>
+    _OIter
+    __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
+
+  template<typename _RAIter, typename _Size, typename _Generator>
+    _RAIter
+    __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism
+                      = __gnu_parallel::parallel_balanced);
+
+  template<typename _IIter1, typename _IIter2>
+    bool
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
+                            __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    bool
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
+                            __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2>
+    bool
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    bool
+    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
+
+  template<typename _IIter1, typename _IIter2,
+           typename _Predicate, typename _IterTag1, typename _IterTag2>
+    bool
+    __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
+                                   _Predicate, _IterTag1, _IterTag2);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
+    bool
+    __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
+                                   _Predicate, random_access_iterator_tag,
+                                   random_access_iterator_tag);
+
+  // algo.h
+  template<typename _IIter1, typename _IIter2>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
+             __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate>
+    pair<_IIter1, _IIter2>
+    mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _IterTag1, typename _IterTag2>
+    pair<_IIter1, _IIter2>
+    __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
+                    _IterTag1, _IterTag2);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
+    pair<_RAIter1, _RAIter2>
+    __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
+                    random_access_iterator_tag, random_access_iterator_tag);
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter1
+    search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter1, typename _FIter2>
+    _FIter1
+    search(_FIter1, _FIter1, _FIter2, _FIter2);
+
+  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
+    _FIter1
+    search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
+           __gnu_parallel::sequential_tag);
+
+  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
+    _FIter1
+    search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
+
+  template<typename _RAIter1, typename _RAIter2>
+    _RAIter1
+    __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
+                  random_access_iterator_tag, random_access_iterator_tag);
+
+  template<typename _FIter1, typename _FIter2, typename _IterTag1,
+           typename _IterTag2>
+    _FIter1
+    __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
+
+  template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
+    _RAIter1
+    __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
+                  random_access_iterator_tag, random_access_iterator_tag);
+
+  template<typename _FIter1, typename _FIter2, typename _BiPredicate,
+           typename _IterTag1, typename _IterTag2>
+    _FIter1
+    __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
+                  _IterTag1, _IterTag2);
+
+  template<typename _FIter, typename _Integer, typename _Tp>
+    _FIter
+    search_n(_FIter, _FIter, _Integer, const _Tp&,
+             __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Integer, typename _Tp,
+           typename _BiPredicate>
+    _FIter
+    search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
+             __gnu_parallel::sequential_tag);
+    
+  template<typename _FIter, typename _Integer, typename _Tp>
+    _FIter
+    search_n(_FIter, _FIter, _Integer, const _Tp&);
+
+  template<typename _FIter, typename _Integer, typename _Tp,
+           typename _BiPredicate>
+    _FIter
+    search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
+
+  template<typename _RAIter, typename _Integer, typename _Tp,
+           typename _BiPredicate>
+    _RAIter
+    __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
+                    _BiPredicate, random_access_iterator_tag);
+
+  template<typename _FIter, typename _Integer, typename _Tp,
+           typename _BiPredicate, typename _IterTag>
+    _FIter
+    __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
+                    _BiPredicate, _IterTag);
+
+
+  template<typename _IIter, typename _OIter, typename _UnaryOperation>
+    _OIter
+    transform(_IIter, _IIter, _OIter, _UnaryOperation);
+
+  template<typename _IIter, typename _OIter, typename _UnaryOperation>
+    _OIter
+    transform(_IIter, _IIter, _OIter, _UnaryOperation, 
+              __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter, typename _UnaryOperation>
+    _OIter
+    transform(_IIter, _IIter, _OIter, _UnaryOperation, 
+              __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _OIter, typename _UnaryOperation,
+           typename _IterTag1, typename _IterTag2>
+    _OIter
+    __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation, 
+                      _IterTag1, _IterTag2);
+    
+
+  template<typename _RAIIter, typename _RAOIter, typename _UnaryOperation>
+    _RAOIter
+    __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation, 
+                      random_access_iterator_tag, random_access_iterator_tag, 
+                      __gnu_parallel::_Parallelism __parallelism
+                      = __gnu_parallel::parallel_balanced);
+
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _BiOperation>
+    _OIter
+    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _BiOperation>
+    _OIter
+    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
+              __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _BiOperation>
+    _OIter
+    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
+              __gnu_parallel::_Parallelism);
+
+  template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
+           typename _BiOperation>
+    _RAIter3
+    __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation, 
+                      random_access_iterator_tag, random_access_iterator_tag, 
+                      random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism
+                      = __gnu_parallel::parallel_balanced);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _BiOperation, typename _Tag1,
+           typename _Tag2, typename _Tag3>
+    _OIter
+    __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
+                      _Tag1, _Tag2, _Tag3);
+
+
+  template<typename _FIter, typename _Tp>
+    void
+    replace(_FIter, _FIter, const _Tp&, const _Tp&);
+
+  template<typename _FIter, typename _Tp>
+    void
+    replace(_FIter, _FIter, const _Tp&, const _Tp&, 
+            __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Tp>
+    void
+    replace(_FIter, _FIter, const _Tp&, const _Tp&,
+            __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Tp, typename _IterTag>
+    void
+    __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
+
+  template<typename _RAIter, typename _Tp>
+    void
+    __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&, 
+                   random_access_iterator_tag, __gnu_parallel::_Parallelism);
+
+
+  template<typename _FIter, typename _Predicate, typename _Tp>
+    void
+    replace_if(_FIter, _FIter, _Predicate, const _Tp&);
+
+  template<typename _FIter, typename _Predicate, typename _Tp>
+    void
+    replace_if(_FIter, _FIter, _Predicate, const _Tp&,
+               __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Predicate, typename _Tp>
+    void
+    replace_if(_FIter, _FIter, _Predicate, const _Tp&,
+               __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Predicate, typename _Tp,
+           typename _IterTag>
+    void
+    __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
+ 
+  template<typename _RAIter, typename _Predicate, typename _Tp>
+    void
+    __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
+                      random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism);
+
+
+  template<typename _FIter>
+    _FIter
+    max_element(_FIter, _FIter);
+
+  template<typename _FIter>
+    _FIter
+    max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter>
+    _FIter
+    max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    max_element(_FIter, _FIter, _Compare);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Compare, typename _IterTag>
+    _FIter
+    __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
+
+  template<typename _RAIter, typename _Compare>
+    _RAIter
+    __max_element_switch(
+      _RAIter, _RAIter, _Compare, random_access_iterator_tag,
+      __gnu_parallel::_Parallelism __parallelism
+      = __gnu_parallel::parallel_balanced);
+
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, 
+          __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Compare>
+    _OIter
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
+          __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Compare>
+    _OIter
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Compare, typename _IterTag1, typename _IterTag2,
+           typename _IterTag3>
+    _OIter
+    __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
+                 _IterTag1, _IterTag2, _IterTag3);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Compare>
+    _OIter
+    __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
+                 random_access_iterator_tag, random_access_iterator_tag, 
+                 random_access_iterator_tag);
+
+
+  template<typename _FIter>
+    _FIter
+    min_element(_FIter, _FIter);
+
+  template<typename _FIter>
+    _FIter
+    min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter>
+    _FIter
+    min_element(_FIter, _FIter,
+                __gnu_parallel::_Parallelism __parallelism_tag);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    min_element(_FIter, _FIter, _Compare);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
+
+  template<typename _FIter, typename _Compare>
+    _FIter
+    min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
+
+  template<typename _FIter, typename _Compare, typename _IterTag>
+    _FIter
+    __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
+
+  template<typename _RAIter, typename _Compare>
+    _RAIter
+    __min_element_switch(
+      _RAIter, _RAIter, _Compare, random_access_iterator_tag,
+      __gnu_parallel::_Parallelism __parallelism
+      = __gnu_parallel::parallel_balanced);
+
+  template<typename _RAIter>
+    void
+    nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    nth_element(_RAIter, _RAIter, _RAIter, _Compare,
+                __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    nth_element(_RAIter, _RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    void
+    nth_element(_RAIter, _RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
+                 __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter>
+    void
+    partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    void
+    partial_sort(_RAIter, _RAIter, _RAIter);
+
+  template<typename _FIter, typename _Predicate>
+    _FIter
+    partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
+    
+  template<typename _FIter, typename _Predicate>
+    _FIter
+    partition(_FIter, _FIter, _Predicate);
+
+  template<typename _FIter, typename _Predicate, typename _IterTag>
+    _FIter
+    __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
+    
+  template<typename _RAIter, typename _Predicate>
+    _RAIter
+    __partition_switch(
+      _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
+
+  template<typename _RAIter>
+    void
+    random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void
+    random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
+                   __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter>
+    void
+    random_shuffle(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void
+    random_shuffle(_RAIter, _RAIter,
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+		   _RandomNumberGenerator&&);
+#else
+		   _RandomNumberGenerator&);
+#endif
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+            __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
+              __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter 
+    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OIter, typename _IterTag1, typename _IterTag2,
+           typename _IterTag3>
+    _OIter
+    __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                     _Predicate, _IterTag1, _IterTag2, _IterTag3);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
+           typename _Predicate>
+    _Output_RAIter
+    __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
+                     _Predicate, random_access_iterator_tag,
+                     random_access_iterator_tag, random_access_iterator_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                     __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
+                     __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter 
+    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OIter, typename _IterTag1, typename _IterTag2,
+           typename _IterTag3>
+    _OIter
+    __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                            _Predicate, _IterTag1, _IterTag2, _IterTag3);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
+           typename _Predicate>
+    _Output_RAIter
+    __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
+                            _Output_RAIter, _Predicate,
+                            random_access_iterator_tag,
+                            random_access_iterator_tag,
+                            random_access_iterator_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                             __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                             _Predicate, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter 
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter 
+    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                             _Predicate);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OIter, typename _IterTag1, typename _IterTag2,
+           typename _IterTag3>
+    _OIter
+    __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
+                                    _OIter, _Predicate, _IterTag1, _IterTag2,
+                                    _IterTag3);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
+           typename _Predicate>
+    _Output_RAIter
+    __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
+                                    _Output_RAIter, _Predicate,
+                                    random_access_iterator_tag,
+                                    random_access_iterator_tag,
+                                    random_access_iterator_tag);
+
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                   __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
+                   __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter>
+    _OIter
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
+
+  template<typename _IIter1, typename _IIter2, typename _OIter,
+           typename _Predicate>
+    _OIter
+    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
+
+  template<typename _IIter1, typename _IIter2, typename _Predicate,
+           typename _OIter, typename _IterTag1, typename _IterTag2,
+           typename _IterTag3>
+    _OIter
+    __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
+                          _Predicate, _IterTag1, _IterTag2, _IterTag3);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
+           typename _Predicate>
+    _Output_RAIter
+    __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
+                          _Output_RAIter, _Predicate,
+                          random_access_iterator_tag,
+                          random_access_iterator_tag,
+                          random_access_iterator_tag);
+
+
+  template<typename _RAIter>
+    void
+    sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter>
+    void
+    sort(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    sort(_RAIter, _RAIter, _Compare);
+
+  template<typename _RAIter>
+    void
+    stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
+
+  template<typename _RAIter>
+    void
+    stable_sort(_RAIter, _RAIter);
+
+  template<typename _RAIter, typename _Compare>
+    void
+    stable_sort(_RAIter, _RAIter, _Compare);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter, typename _Predicate>
+    _OIter
+    unique_copy(_IIter, _IIter, _OIter, _Predicate,
+                __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    unique_copy(_IIter, _IIter, _OIter);
+
+  template<typename _IIter, typename _OIter, typename _Predicate>
+    _OIter
+    unique_copy(_IIter, _IIter, _OIter, _Predicate);
+
+  template<typename _IIter, typename _OIter, typename _Predicate,
+           typename _IterTag1, typename _IterTag2>
+    _OIter
+    __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
+                       _IterTag1, _IterTag2);
+
+  template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
+    _RandomAccess_OIter
+    __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
+                       random_access_iterator_tag, random_access_iterator_tag);
+} // end namespace __parallel
+} // end namespace std
+
+#endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/balanced_quicksort.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/balanced_quicksort.h
new file mode 100644
index 000000000..441e7b44a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/balanced_quicksort.h
@@ -0,0 +1,492 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/balanced_quicksort.h
+ *  @brief Implementation of a dynamically load-balanced parallel quicksort.
+ *
+ *  It works in-place and needs only logarithmic extra memory.
+ *  The algorithm is similar to the one proposed in
+ *
+ *  P. Tsigas and Y. Zhang.
+ *  A simple, fast parallel implementation of quicksort and
+ *  its performance evaluation on SUN enterprise 10000.
+ *  In 11th Euromicro Conference on Parallel, Distributed and
+ *  Network-Based Processing, page 372, 2003.
+ *
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_BALANCED_QUICKSORT_H
+#define _GLIBCXX_PARALLEL_BALANCED_QUICKSORT_H 1
+
+#include <parallel/basic_iterator.h>
+#include <bits/stl_algo.h>
+#include <bits/stl_function.h>
+
+#include <parallel/settings.h>
+#include <parallel/partition.h>
+#include <parallel/random_number.h>
+#include <parallel/queue.h>
+
+#if _GLIBCXX_ASSERTIONS
+#include <parallel/checkers.h>
+#endif
+
+namespace __gnu_parallel
+{
+  /** @brief Information local to one thread in the parallel quicksort run. */
+  template<typename _RAIter>
+    struct _QSBThreadLocal
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      /** @brief Continuous part of the sequence, described by an
+      iterator pair. */
+      typedef std::pair<_RAIter, _RAIter> _Piece;
+
+      /** @brief Initial piece to work on. */
+      _Piece _M_initial;
+
+      /** @brief Work-stealing queue. */
+      _RestrictedBoundedConcurrentQueue<_Piece> _M_leftover_parts;
+
+      /** @brief Number of threads involved in this algorithm. */
+      _ThreadIndex _M_num_threads;
+
+      /** @brief Pointer to a counter of elements left over to sort. */
+      volatile _DifferenceType* _M_elements_leftover;
+
+      /** @brief The complete sequence to sort. */
+      _Piece _M_global;
+
+      /** @brief Constructor.
+       *  @param __queue_size size of the work-stealing queue. */
+      _QSBThreadLocal(int __queue_size) : _M_leftover_parts(__queue_size) { }
+    };
+
+  /** @brief Balanced quicksort divide step.
+    *  @param __begin Begin iterator of subsequence.
+    *  @param __end End iterator of subsequence.
+    *  @param __comp Comparator.
+    *  @param __num_threads Number of threads that are allowed to work on
+    *  this part.
+    *  @pre @c (__end-__begin)>=1 */
+  template<typename _RAIter, typename _Compare>
+    typename std::iterator_traits<_RAIter>::difference_type
+    __qsb_divide(_RAIter __begin, _RAIter __end,
+		 _Compare __comp, _ThreadIndex __num_threads)
+    {
+      _GLIBCXX_PARALLEL_ASSERT(__num_threads > 0);
+
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _RAIter __pivot_pos =
+	__median_of_three_iterators(__begin, __begin + (__end - __begin) / 2,
+				    __end  - 1, __comp);
+
+#if defined(_GLIBCXX_ASSERTIONS)
+      // Must be in between somewhere.
+      _DifferenceType __n = __end - __begin;
+
+      _GLIBCXX_PARALLEL_ASSERT((!__comp(*__pivot_pos, *__begin)
+				&& !__comp(*(__begin + __n / 2),
+					   *__pivot_pos))
+			       || (!__comp(*__pivot_pos, *__begin)
+				   && !__comp(*(__end - 1), *__pivot_pos))
+			       || (!__comp(*__pivot_pos, *(__begin + __n / 2))
+				   && !__comp(*__begin, *__pivot_pos))
+			       || (!__comp(*__pivot_pos, *(__begin + __n / 2))
+				   && !__comp(*(__end - 1), *__pivot_pos))
+			       || (!__comp(*__pivot_pos, *(__end - 1))
+				   && !__comp(*__begin, *__pivot_pos))
+			       || (!__comp(*__pivot_pos, *(__end - 1))
+				   && !__comp(*(__begin + __n / 2),
+					      *__pivot_pos)));
+#endif
+
+      // Swap pivot value to end.
+      if (__pivot_pos != (__end - 1))
+	std::iter_swap(__pivot_pos, __end - 1);
+      __pivot_pos = __end - 1;
+
+      __gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool>
+	__pred(__comp, *__pivot_pos);
+
+      // Divide, returning __end - __begin - 1 in the worst case.
+      _DifferenceType __split_pos = __parallel_partition(__begin, __end - 1,
+							 __pred,
+							 __num_threads);
+
+      // Swap back pivot to middle.
+      std::iter_swap(__begin + __split_pos, __pivot_pos);
+      __pivot_pos = __begin + __split_pos;
+
+#if _GLIBCXX_ASSERTIONS
+      _RAIter __r;
+      for (__r = __begin; __r != __pivot_pos; ++__r)
+	_GLIBCXX_PARALLEL_ASSERT(__comp(*__r, *__pivot_pos));
+      for (; __r != __end; ++__r)
+	_GLIBCXX_PARALLEL_ASSERT(!__comp(*__r, *__pivot_pos));
+#endif
+
+      return __split_pos;
+    }
+
+  /** @brief Quicksort conquer step.
+    *  @param __tls Array of thread-local storages.
+    *  @param __begin Begin iterator of subsequence.
+    *  @param __end End iterator of subsequence.
+    *  @param __comp Comparator.
+    *  @param __iam Number of the thread processing this function.
+    *  @param __num_threads
+    *          Number of threads that are allowed to work on this part. */
+  template<typename _RAIter, typename _Compare>
+    void
+    __qsb_conquer(_QSBThreadLocal<_RAIter>** __tls,
+		  _RAIter __begin, _RAIter __end,
+		  _Compare __comp,
+		  _ThreadIndex __iam, _ThreadIndex __num_threads,
+		  bool __parent_wait)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+
+      if (__num_threads <= 1 || __n <= 1)
+	{
+          __tls[__iam]->_M_initial.first  = __begin;
+          __tls[__iam]->_M_initial.second = __end;
+
+          __qsb_local_sort_with_helping(__tls, __comp, __iam, __parent_wait);
+
+          return;
+	}
+
+      // Divide step.
+      _DifferenceType __split_pos =
+	__qsb_divide(__begin, __end, __comp, __num_threads);
+
+#if _GLIBCXX_ASSERTIONS
+      _GLIBCXX_PARALLEL_ASSERT(0 <= __split_pos &&
+                               __split_pos < (__end - __begin));
+#endif
+
+      _ThreadIndex
+	__num_threads_leftside = std::max<_ThreadIndex>
+	(1, std::min<_ThreadIndex>(__num_threads - 1, __split_pos
+				   * __num_threads / __n));
+
+#     pragma omp atomic
+      *__tls[__iam]->_M_elements_leftover -= (_DifferenceType)1;
+
+      // Conquer step.
+#     pragma omp parallel num_threads(2)
+      {
+	bool __wait;
+	if(omp_get_num_threads() < 2)
+          __wait = false;
+	else
+          __wait = __parent_wait;
+
+#       pragma omp sections
+	{
+#         pragma omp section
+	  {
+	    __qsb_conquer(__tls, __begin, __begin + __split_pos, __comp,
+			  __iam, __num_threads_leftside, __wait);
+	    __wait = __parent_wait;
+	  }
+	  // The pivot_pos is left in place, to ensure termination.
+#         pragma omp section
+	  {
+	    __qsb_conquer(__tls, __begin + __split_pos + 1, __end, __comp,
+			  __iam + __num_threads_leftside,
+			  __num_threads - __num_threads_leftside, __wait);
+	    __wait = __parent_wait;
+	  }
+	}
+      }
+    }
+
+  /**
+    *  @brief Quicksort step doing load-balanced local sort.
+    *  @param __tls Array of thread-local storages.
+    *  @param __comp Comparator.
+    *  @param __iam Number of the thread processing this function.
+    */
+  template<typename _RAIter, typename _Compare>
+    void
+    __qsb_local_sort_with_helping(_QSBThreadLocal<_RAIter>** __tls,
+				  _Compare& __comp, _ThreadIndex __iam,
+				  bool __wait)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef std::pair<_RAIter, _RAIter> _Piece;
+
+      _QSBThreadLocal<_RAIter>& __tl = *__tls[__iam];
+
+      _DifferenceType
+	__base_case_n = _Settings::get().sort_qsb_base_case_maximal_n;
+      if (__base_case_n < 2)
+	__base_case_n = 2;
+      _ThreadIndex __num_threads = __tl._M_num_threads;
+
+      // Every thread has its own random number generator.
+      _RandomNumber __rng(__iam + 1);
+
+      _Piece __current = __tl._M_initial;
+
+      _DifferenceType __elements_done = 0;
+#if _GLIBCXX_ASSERTIONS
+      _DifferenceType __total_elements_done = 0;
+#endif
+
+      for (;;)
+	{
+          // Invariant: __current must be a valid (maybe empty) range.
+          _RAIter __begin = __current.first, __end = __current.second;
+          _DifferenceType __n = __end - __begin;
+
+          if (__n > __base_case_n)
+            {
+              // Divide.
+              _RAIter __pivot_pos = __begin +  __rng(__n);
+
+              // Swap __pivot_pos value to end.
+              if (__pivot_pos != (__end - 1))
+        	std::iter_swap(__pivot_pos, __end - 1);
+              __pivot_pos = __end - 1;
+
+              __gnu_parallel::__binder2nd
+		<_Compare, _ValueType, _ValueType, bool>
+		__pred(__comp, *__pivot_pos);
+
+              // Divide, leave pivot unchanged in last place.
+              _RAIter __split_pos1, __split_pos2;
+              __split_pos1 = __gnu_sequential::partition(__begin, __end - 1,
+							 __pred);
+
+              // Left side: < __pivot_pos; __right side: >= __pivot_pos.
+#if _GLIBCXX_ASSERTIONS
+              _GLIBCXX_PARALLEL_ASSERT(__begin <= __split_pos1
+                                       && __split_pos1 < __end);
+#endif
+              // Swap pivot back to middle.
+              if (__split_pos1 != __pivot_pos)
+        	std::iter_swap(__split_pos1, __pivot_pos);
+              __pivot_pos = __split_pos1;
+
+              // In case all elements are equal, __split_pos1 == 0.
+              if ((__split_pos1 + 1 - __begin) < (__n >> 7)
+		  || (__end - __split_pos1) < (__n >> 7))
+        	{
+                  // Very unequal split, one part smaller than one 128th
+                  // elements not strictly larger than the pivot.
+                  __gnu_parallel::__unary_negate<__gnu_parallel::__binder1st
+                    <_Compare, _ValueType, _ValueType, bool>, _ValueType>
+                    __pred(__gnu_parallel::__binder1st
+                	 <_Compare, _ValueType, _ValueType, bool>
+			   (__comp, *__pivot_pos));
+
+                  // Find other end of pivot-equal range.
+                  __split_pos2 = __gnu_sequential::partition(__split_pos1 + 1,
+							     __end, __pred);
+        	}
+              else
+        	// Only skip the pivot.
+        	__split_pos2 = __split_pos1 + 1;
+
+              // Elements equal to pivot are done.
+              __elements_done += (__split_pos2 - __split_pos1);
+#if _GLIBCXX_ASSERTIONS
+              __total_elements_done += (__split_pos2 - __split_pos1);
+#endif
+              // Always push larger part onto stack.
+              if (((__split_pos1 + 1) - __begin) < (__end - (__split_pos2)))
+        	{
+                  // Right side larger.
+                  if ((__split_pos2) != __end)
+                    __tl._M_leftover_parts.push_front
+		      (std::make_pair(__split_pos2, __end));
+
+                  //__current.first = __begin;    //already set anyway
+                  __current.second = __split_pos1;
+                  continue;
+        	}
+              else
+        	{
+                  // Left side larger.
+                  if (__begin != __split_pos1)
+                    __tl._M_leftover_parts.push_front(std::make_pair
+						      (__begin, __split_pos1));
+
+                  __current.first = __split_pos2;
+                  //__current.second = __end;     //already set anyway
+                  continue;
+        	}
+            }
+          else
+            {
+              __gnu_sequential::sort(__begin, __end, __comp);
+              __elements_done += __n;
+#if _GLIBCXX_ASSERTIONS
+              __total_elements_done += __n;
+#endif
+
+              // Prefer own stack, small pieces.
+              if (__tl._M_leftover_parts.pop_front(__current))
+        	continue;
+
+#             pragma omp atomic
+              *__tl._M_elements_leftover -= __elements_done;
+
+              __elements_done = 0;
+
+#if _GLIBCXX_ASSERTIONS
+              double __search_start = omp_get_wtime();
+#endif
+
+              // Look for new work.
+              bool __successfully_stolen = false;
+              while (__wait && *__tl._M_elements_leftover > 0
+                     && !__successfully_stolen
+#if _GLIBCXX_ASSERTIONS
+                      // Possible dead-lock.
+                     && (omp_get_wtime() < (__search_start + 1.0))
+#endif
+		     )
+        	{
+                  _ThreadIndex __victim;
+                  __victim = __rng(__num_threads);
+
+                  // Large pieces.
+                  __successfully_stolen = (__victim != __iam)
+		    && __tls[__victim]->_M_leftover_parts.pop_back(__current);
+                  if (!__successfully_stolen)
+                    __yield();
+#if !defined(__ICC) && !defined(__ECC)
+#                 pragma omp flush
+#endif
+        	}
+
+#if _GLIBCXX_ASSERTIONS
+              if (omp_get_wtime() >= (__search_start + 1.0))
+        	{
+                  sleep(1);
+                  _GLIBCXX_PARALLEL_ASSERT(omp_get_wtime()
+                                           < (__search_start + 1.0));
+        	}
+#endif
+              if (!__successfully_stolen)
+        	{
+#if _GLIBCXX_ASSERTIONS
+                  _GLIBCXX_PARALLEL_ASSERT(*__tl._M_elements_leftover == 0);
+#endif
+                  return;
+        	}
+            }
+	}
+    }
+
+  /** @brief Top-level quicksort routine.
+    *  @param __begin Begin iterator of sequence.
+    *  @param __end End iterator of sequence.
+    *  @param __comp Comparator.
+    *  @param __num_threads Number of threads that are allowed to work on
+    *  this part.
+    */
+  template<typename _RAIter, typename _Compare>
+    void
+    __parallel_sort_qsb(_RAIter __begin, _RAIter __end,
+			_Compare __comp, _ThreadIndex __num_threads)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef std::pair<_RAIter, _RAIter> _Piece;
+
+      typedef _QSBThreadLocal<_RAIter> _TLSType;
+
+      _DifferenceType __n = __end - __begin;
+
+      if (__n <= 1)
+	return;
+
+      // At least one element per processor.
+      if (__num_threads > __n)
+	__num_threads = static_cast<_ThreadIndex>(__n);
+
+      // Initialize thread local storage
+      _TLSType** __tls = new _TLSType*[__num_threads];
+      _DifferenceType __queue_size = (__num_threads
+				      * (_ThreadIndex)(__rd_log2(__n) + 1));
+      for (_ThreadIndex __t = 0; __t < __num_threads; ++__t)
+	__tls[__t] = new _QSBThreadLocal<_RAIter>(__queue_size);
+
+      // There can never be more than ceil(__rd_log2(__n)) ranges on the
+      // stack, because
+      // 1. Only one processor pushes onto the stack
+      // 2. The largest range has at most length __n
+      // 3. Each range is larger than half of the range remaining
+      volatile _DifferenceType __elements_leftover = __n;
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	{
+          __tls[__i]->_M_elements_leftover = &__elements_leftover;
+          __tls[__i]->_M_num_threads = __num_threads;
+          __tls[__i]->_M_global = std::make_pair(__begin, __end);
+
+          // Just in case nothing is left to assign.
+          __tls[__i]->_M_initial = std::make_pair(__end, __end);
+	}
+
+      // Main recursion call.
+      __qsb_conquer(__tls, __begin, __begin + __n, __comp, 0,
+		    __num_threads, true);
+
+#if _GLIBCXX_ASSERTIONS
+      // All stack must be empty.
+      _Piece __dummy;
+      for (_ThreadIndex __i = 1; __i < __num_threads; ++__i)
+	_GLIBCXX_PARALLEL_ASSERT(
+          !__tls[__i]->_M_leftover_parts.pop_back(__dummy));
+#endif
+
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	delete __tls[__i];
+      delete[] __tls;
+    }
+} // namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_BALANCED_QUICKSORT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/base.h
new file mode 100644
index 000000000..86adea816
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/base.h
@@ -0,0 +1,426 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/base.h
+ *  @brief Sequential helper functions.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_BASE_H
+#define _GLIBCXX_PARALLEL_BASE_H 1
+
+#include <bits/c++config.h>
+#include <bits/stl_function.h>
+#include <omp.h>
+#include <parallel/features.h>
+#include <parallel/basic_iterator.h>
+#include <parallel/parallel.h>
+
+// Parallel mode namespaces.
+
+/**
+ * @namespace std::__parallel
+ * @brief GNU parallel code, replaces standard behavior with parallel behavior.
+ */
+namespace std _GLIBCXX_VISIBILITY(default) 
+{ 
+  namespace __parallel { } 
+}
+
+/**
+ * @namespace __gnu_parallel
+ * @brief GNU parallel code for public use.
+ */
+namespace __gnu_parallel
+{
+  // Import all the parallel versions of components in namespace std.
+  using namespace std::__parallel;
+}
+
+/**
+ * @namespace __gnu_sequential
+ * @brief GNU sequential classes for public use.
+ */
+namespace __gnu_sequential 
+{ 
+  // Import whatever is the serial version.
+#ifdef _GLIBCXX_PARALLEL
+  using namespace std::_GLIBCXX_STD_A;
+#else
+  using namespace std;
+#endif   
+}
+
+
+namespace __gnu_parallel
+{
+  // NB: Including this file cannot produce (unresolved) symbols from
+  // the OpenMP runtime unless the parallel mode is actually invoked
+  // and active, which imples that the OpenMP runtime is actually
+  // going to be linked in.
+  inline _ThreadIndex
+  __get_max_threads() 
+  { 
+    _ThreadIndex __i = omp_get_max_threads();
+    return __i > 1 ? __i : 1; 
+  }
+
+
+  inline bool 
+  __is_parallel(const _Parallelism __p) { return __p != sequential; }
+
+
+  /** @brief Calculates the rounded-down logarithm of @c __n for base 2.
+   *  @param __n Argument.
+   *  @return Returns 0 for any argument <1.
+   */
+  template<typename _Size>
+    inline _Size
+    __rd_log2(_Size __n)
+    {
+      _Size __k;
+      for (__k = 0; __n > 1; __n >>= 1)
+        ++__k;
+      return __k;
+    }
+
+  /** @brief Encode two integers into one gnu_parallel::_CASable.
+   *  @param __a First integer, to be encoded in the most-significant @c
+   *  _CASable_bits/2 bits.
+   *  @param __b Second integer, to be encoded in the least-significant
+   *  @c _CASable_bits/2 bits.
+   *  @return value encoding @c __a and @c __b.
+   *  @see __decode2
+   */
+  inline _CASable
+  __encode2(int __a, int __b)     //must all be non-negative, actually
+  {
+    return (((_CASable)__a) << (_CASable_bits / 2)) | (((_CASable)__b) << 0);
+  }
+
+  /** @brief Decode two integers from one gnu_parallel::_CASable.
+   *  @param __x __gnu_parallel::_CASable to decode integers from.
+   *  @param __a First integer, to be decoded from the most-significant
+   *  @c _CASable_bits/2 bits of @c __x.
+   *  @param __b Second integer, to be encoded in the least-significant
+   *  @c _CASable_bits/2 bits of @c __x.
+   *  @see __encode2
+   */
+  inline void
+  __decode2(_CASable __x, int& __a, int& __b)
+  {
+    __a = (int)((__x >> (_CASable_bits / 2)) & _CASable_mask);
+    __b = (int)((__x >>               0 ) & _CASable_mask);
+  }
+
+  //needed for parallel "numeric", even if "algorithm" not included
+
+  /** @brief Equivalent to std::min. */
+  template<typename _Tp>
+    inline const _Tp&
+    min(const _Tp& __a, const _Tp& __b)
+    { return (__a < __b) ? __a : __b; }
+
+  /** @brief Equivalent to std::max. */
+  template<typename _Tp>
+    inline const _Tp&
+    max(const _Tp& __a, const _Tp& __b)
+    { return (__a > __b) ? __a : __b; }
+
+  /** @brief Constructs predicate for equality from strict weak
+   *  ordering predicate
+   */
+  template<typename _T1, typename _T2, typename _Compare>
+    class _EqualFromLess : public std::binary_function<_T1, _T2, bool>
+    {
+    private:
+      _Compare& _M_comp;
+
+    public:
+      _EqualFromLess(_Compare& __comp) : _M_comp(__comp) { }
+
+      bool operator()(const _T1& __a, const _T2& __b)
+      { return !_M_comp(__a, __b) && !_M_comp(__b, __a); }
+    };
+
+
+  /** @brief Similar to std::unary_negate,
+   *  but giving the argument types explicitly. */
+  template<typename _Predicate, typename argument_type>
+    class __unary_negate
+    : public std::unary_function<argument_type, bool>
+    {
+    protected:
+      _Predicate _M_pred;
+
+    public:
+      explicit
+      __unary_negate(const _Predicate& __x) : _M_pred(__x) { }
+
+      bool
+      operator()(const argument_type& __x)
+      { return !_M_pred(__x); }
+    };
+
+  /** @brief Similar to std::binder1st,
+   *  but giving the argument types explicitly. */
+  template<typename _Operation, typename _FirstArgumentType,
+	   typename _SecondArgumentType, typename _ResultType>
+    class __binder1st
+    : public std::unary_function<_SecondArgumentType, _ResultType>
+    {
+    protected:
+      _Operation _M_op;
+      _FirstArgumentType _M_value;
+
+    public:
+      __binder1st(const _Operation& __x, const _FirstArgumentType& __y)
+      : _M_op(__x), _M_value(__y) { }
+
+      _ResultType
+      operator()(const _SecondArgumentType& __x)
+      { return _M_op(_M_value, __x); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 109.  Missing binders for non-const sequence elements
+      _ResultType
+      operator()(_SecondArgumentType& __x) const
+      { return _M_op(_M_value, __x); }
+    };
+
+  /**
+   *  @brief Similar to std::binder2nd, but giving the argument types
+   *  explicitly.
+   */
+  template<typename _Operation, typename _FirstArgumentType,
+	   typename _SecondArgumentType, typename _ResultType>
+    class __binder2nd
+    : public std::unary_function<_FirstArgumentType, _ResultType>
+    {
+    protected:
+      _Operation _M_op;
+      _SecondArgumentType _M_value;
+
+    public:
+      __binder2nd(const _Operation& __x, const _SecondArgumentType& __y)
+      : _M_op(__x), _M_value(__y) { }
+
+      _ResultType
+      operator()(const _FirstArgumentType& __x) const
+      { return _M_op(__x, _M_value); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 109.  Missing binders for non-const sequence elements
+      _ResultType
+      operator()(_FirstArgumentType& __x)
+      { return _M_op(__x, _M_value); }
+    };
+
+  /** @brief Similar to std::equal_to, but allows two different types. */
+  template<typename _T1, typename _T2>
+    struct _EqualTo : std::binary_function<_T1, _T2, bool>
+    {
+      bool operator()(const _T1& __t1, const _T2& __t2) const
+      { return __t1 == __t2; }
+    };
+
+  /** @brief Similar to std::less, but allows two different types. */
+  template<typename _T1, typename _T2>
+    struct _Less : std::binary_function<_T1, _T2, bool>
+    {
+      bool
+      operator()(const _T1& __t1, const _T2& __t2) const
+      { return __t1 < __t2; }
+
+      bool
+      operator()(const _T2& __t2, const _T1& __t1) const
+      { return __t2 < __t1; }
+    };
+
+  // Partial specialization for one type. Same as std::less.
+  template<typename _Tp>
+    struct _Less<_Tp, _Tp>
+    : public std::less<_Tp> { };
+
+  /** @brief Similar to std::plus, but allows two different types. */
+  template<typename _Tp1, typename _Tp2, typename _Result
+	   = __typeof__(*static_cast<_Tp1*>(0)
+			+ *static_cast<_Tp2*>(0))>
+    struct _Plus : public std::binary_function<_Tp1, _Tp2, _Result>
+    {
+      _Result
+      operator()(const _Tp1& __x, const _Tp2& __y) const
+      { return __x + __y; }
+    };
+
+  // Partial specialization for one type. Same as std::plus.
+  template<typename _Tp>
+    struct _Plus<_Tp, _Tp, _Tp>
+    : public std::plus<_Tp> { };
+
+  /** @brief Similar to std::multiplies, but allows two different types. */
+  template<typename _Tp1, typename _Tp2, typename _Result
+	   = __typeof__(*static_cast<_Tp1*>(0)
+			* *static_cast<_Tp2*>(0))>
+    struct _Multiplies : public std::binary_function<_Tp1, _Tp2, _Result>
+    {
+      _Result
+      operator()(const _Tp1& __x, const _Tp2& __y) const
+      { return __x * __y; }
+    };
+
+  // Partial specialization for one type. Same as std::multiplies.
+  template<typename _Tp>
+    struct _Multiplies<_Tp, _Tp, _Tp>
+    : public std::multiplies<_Tp> { };
+
+  /** @brief _Iterator associated with __gnu_parallel::_PseudoSequence.
+   *  If features the usual random-access iterator functionality.
+   *  @param _Tp Sequence _M_value type.
+   *  @param _DifferenceTp Sequence difference type.
+   */
+  template<typename _Tp, typename _DifferenceTp>
+    class _PseudoSequenceIterator
+    {
+    public:
+      typedef _DifferenceTp _DifferenceType;
+
+      _PseudoSequenceIterator(const _Tp& __val, _DifferenceType __pos)
+      : _M_val(__val), _M_pos(__pos) { }
+
+      // Pre-increment operator.
+      _PseudoSequenceIterator&
+      operator++()
+      {
+	++_M_pos;
+	return *this;
+      }
+
+      // Post-increment operator.
+      _PseudoSequenceIterator
+      operator++(int)
+      { return _PseudoSequenceIterator(_M_pos++); }
+
+      const _Tp&
+      operator*() const
+      { return _M_val; }
+
+      const _Tp&
+      operator[](_DifferenceType) const
+      { return _M_val; }
+
+      bool
+      operator==(const _PseudoSequenceIterator& __i2)
+      { return _M_pos == __i2._M_pos; }
+
+      bool
+      operator!=(const _PseudoSequenceIterator& __i2)
+      { return _M_pos != __i2._M_pos; }
+
+      _DifferenceType
+      operator-(const _PseudoSequenceIterator& __i2)
+      { return _M_pos - __i2._M_pos; }
+
+    private:
+      const _Tp& _M_val;
+      _DifferenceType _M_pos;
+    };
+
+  /** @brief Sequence that conceptually consists of multiple copies of
+      the same element.
+      *  The copies are not stored explicitly, of course.
+      *  @param _Tp Sequence _M_value type.
+      *  @param _DifferenceTp Sequence difference type.
+      */
+  template<typename _Tp, typename _DifferenceTp>
+    class _PseudoSequence
+    {
+    public:
+      typedef _DifferenceTp _DifferenceType;
+
+      // Better cast down to uint64_t, than up to _DifferenceTp.
+      typedef _PseudoSequenceIterator<_Tp, uint64_t> iterator;
+
+      /** @brief Constructor.
+       *  @param _M_val Element of the sequence.
+       *  @param __count Number of (virtual) copies.
+       */
+      _PseudoSequence(const _Tp& __val, _DifferenceType __count)
+      : _M_val(__val), _M_count(__count)  { }
+
+      /** @brief Begin iterator. */
+      iterator
+      begin() const
+      { return iterator(_M_val, 0); }
+
+      /** @brief End iterator. */
+      iterator
+      end() const
+      { return iterator(_M_val, _M_count); }
+
+    private:
+      const _Tp& _M_val;
+      _DifferenceType _M_count;
+    };
+
+  /** @brief Compute the median of three referenced elements,
+      according to @c __comp.
+      *  @param __a First iterator.
+      *  @param __b Second iterator.
+      *  @param __c Third iterator.
+      *  @param __comp Comparator.
+      */
+  template<typename _RAIter, typename _Compare>
+    _RAIter
+    __median_of_three_iterators(_RAIter __a, _RAIter __b,
+				_RAIter __c, _Compare __comp)
+    {
+      if (__comp(*__a, *__b))
+	if (__comp(*__b, *__c))
+	  return __b;
+	else
+	  if (__comp(*__a, *__c))
+	    return __c;
+	  else
+	    return __a;
+      else
+	{
+	  // Just swap __a and __b.
+	  if (__comp(*__a, *__c))
+	    return __a;
+	  else
+	    if (__comp(*__b, *__c))
+	      return __c;
+	    else
+	      return __b;
+	}
+    }
+
+#define _GLIBCXX_PARALLEL_ASSERT(_Condition) __glibcxx_assert(_Condition)
+
+} //namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_BASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/basic_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/basic_iterator.h
new file mode 100644
index 000000000..a624edc1a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/basic_iterator.h
@@ -0,0 +1,41 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/basic_iterator.h
+ *  @brief Includes the original header files concerned with iterators
+ *  except for stream iterators.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_BASIC_ITERATOR_H
+#define _GLIBCXX_PARALLEL_BASIC_ITERATOR_H 1
+
+#include <bits/c++config.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/stl_iterator.h>
+
+#endif /* _GLIBCXX_PARALLEL_BASIC_ITERATOR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/checkers.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/checkers.h
new file mode 100644
index 000000000..32507fd8c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/checkers.h
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/checkers.h
+ *  @brief Routines for checking the correctness of algorithm results.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_CHECKERS_H
+#define _GLIBCXX_PARALLEL_CHECKERS_H 1
+
+#include <cstdio>
+#include <bits/stl_algobase.h>
+#include <bits/stl_function.h>
+
+namespace __gnu_parallel
+{
+  /**
+   * @brief Check whether @c [__begin, @c __end) is sorted according
+   * to @c __comp.
+   * @param __begin Begin iterator of sequence.
+   * @param __end End iterator of sequence.
+   * @param __comp Comparator.
+   * @return @c true if sorted, @c false otherwise.
+   */
+  template<typename _IIter, typename _Compare>
+    bool
+    __is_sorted(_IIter __begin, _IIter __end, _Compare __comp)
+    {
+      if (__begin == __end)
+        return true;
+
+      _IIter __current(__begin), __recent(__begin);
+
+      unsigned long long __position = 1;
+      for (__current++; __current != __end; __current++)
+        {
+          if (__comp(*__current, *__recent))
+            {
+              return false;
+            }
+          __recent = __current;
+          __position++;
+        }
+
+      return true;
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_CHECKERS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compatibility.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compatibility.h
new file mode 100644
index 000000000..9fffd8e01
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compatibility.h
@@ -0,0 +1,364 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/compatibility.h
+ *  @brief Compatibility layer, mostly concerned with atomic operations.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_COMPATIBILITY_H
+#define _GLIBCXX_PARALLEL_COMPATIBILITY_H 1
+
+#include <parallel/types.h>
+#include <parallel/base.h>
+
+#if defined(__SUNPRO_CC) && defined(__sparc)
+#include <sys/atomic.h>
+#endif
+
+#if !defined(_WIN32) || defined (__CYGWIN__)
+#include <sched.h>
+#endif
+
+#if defined(_MSC_VER)
+#include <Windows.h>
+#include <intrin.h>
+#undef max
+#undef min
+#endif
+
+#ifdef __MINGW32__
+// Including <windows.h> will drag in all the windows32 names.  Since
+// that can cause user code portability problems, we just declare the
+// one needed function here.
+extern "C"
+__attribute((dllimport)) void __attribute__((stdcall)) Sleep (unsigned long);
+#endif
+
+namespace __gnu_parallel
+{
+#if defined(__ICC)
+  template<typename _MustBeInt = int>
+  int32_t __faa32(int32_t* __x, int32_t __inc)
+  {
+    asm volatile("lock xadd %0,%1"
+                 : "=__r" (__inc), "=__m" (*__x)
+                 : "0" (__inc)
+                 : "memory");
+    return __inc;
+  }
+#if defined(__x86_64)
+  template<typename _MustBeInt = int>
+  int64_t __faa64(int64_t* __x, int64_t __inc)
+  {
+    asm volatile("lock xadd %0,%1"
+                 : "=__r" (__inc), "=__m" (*__x)
+                 : "0" (__inc)
+                 : "memory");
+    return __inc;
+  }
+#endif
+#endif
+
+  // atomic functions only work on integers
+
+  /** @brief Add a value to a variable, atomically.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to a 32-bit signed integer.
+   *  @param __addend Value to add.
+   */
+  inline int32_t
+  __fetch_and_add_32(volatile int32_t* __ptr, int32_t __addend)
+  {
+#if defined(__ICC)      //x86 version
+    return _InterlockedExchangeAdd((void*)__ptr, __addend);
+#elif defined(__ECC)    //IA-64 version
+    return _InterlockedExchangeAdd((void*)__ptr, __addend);
+#elif defined(__ICL) || defined(_MSC_VER)
+    return _InterlockedExchangeAdd(reinterpret_cast<volatile long*>(__ptr),
+                                   __addend);
+#elif defined(__GNUC__)
+    return __sync_fetch_and_add(__ptr, __addend);
+#elif defined(__SUNPRO_CC) && defined(__sparc)
+    volatile int32_t __before, __after;
+    do
+      {
+        __before = *__ptr;
+        __after = __before + __addend;
+      } while (atomic_cas_32((volatile unsigned int*)__ptr, __before,
+                             __after) != __before);
+    return __before;
+#else   //fallback, slow
+#pragma message("slow __fetch_and_add_32")
+    int32_t __res;
+#pragma omp critical
+    {
+      __res = *__ptr;
+      *(__ptr) += __addend;
+    }
+    return __res;
+#endif
+  }
+
+  /** @brief Add a value to a variable, atomically.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to a 64-bit signed integer.
+   *  @param __addend Value to add.
+   */
+  inline int64_t
+  __fetch_and_add_64(volatile int64_t* __ptr, int64_t __addend)
+  {
+#if defined(__ICC) && defined(__x86_64) //x86 version
+    return __faa64<int>((int64_t*)__ptr, __addend);
+#elif defined(__ECC)    //IA-64 version
+    return _InterlockedExchangeAdd64((void*)__ptr, __addend);
+#elif defined(__ICL) || defined(_MSC_VER)
+#ifndef _WIN64
+    _GLIBCXX_PARALLEL_ASSERT(false);    //not available in this case
+    return 0;
+#else
+    return _InterlockedExchangeAdd64(__ptr, __addend);
+#endif
+#elif defined(__GNUC__) && defined(__x86_64)
+    return __sync_fetch_and_add(__ptr, __addend);
+#elif defined(__GNUC__) && defined(__i386) &&                   \
+  (defined(__i686) || defined(__pentium4) || defined(__athlon)  \
+   || defined(__k8) || defined(__core2))
+    return __sync_fetch_and_add(__ptr, __addend);
+#elif defined(__SUNPRO_CC) && defined(__sparc)
+    volatile int64_t __before, __after;
+    do
+      {
+        __before = *__ptr;
+        __after = __before + __addend;
+      } while (atomic_cas_64((volatile unsigned long long*)__ptr, __before,
+                             __after) != __before);
+    return __before;
+#else   //fallback, slow
+#if defined(__GNUC__) && defined(__i386)
+    // XXX doesn'__t work with -march=native
+    //#warning "please compile with -march=i686 or better"
+#endif
+#pragma message("slow __fetch_and_add_64")
+    int64_t __res;
+#pragma omp critical
+    {
+      __res = *__ptr;
+      *(__ptr) += __addend;
+    }
+    return __res;
+#endif
+  }
+
+  /** @brief Add a value to a variable, atomically.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to a signed integer.
+   *  @param __addend Value to add.
+   */
+  template<typename _Tp>
+  inline _Tp
+  __fetch_and_add(volatile _Tp* __ptr, _Tp __addend)
+  {
+    if (sizeof(_Tp) == sizeof(int32_t))
+      return
+        (_Tp)__fetch_and_add_32((volatile int32_t*) __ptr, (int32_t)__addend);
+    else if (sizeof(_Tp) == sizeof(int64_t))
+      return
+        (_Tp)__fetch_and_add_64((volatile int64_t*) __ptr, (int64_t)__addend);
+    else
+      _GLIBCXX_PARALLEL_ASSERT(false);
+  }
+
+
+#if defined(__ICC)
+
+  template<typename _MustBeInt = int>
+  inline int32_t
+  __cas32(volatile int32_t* __ptr, int32_t __old, int32_t __nw)
+  {
+    int32_t __before;
+    __asm__ __volatile__("lock; cmpxchgl %1,%2"
+                         : "=a"(__before)
+                         : "q"(__nw), "__m"(*(volatile long long*)(__ptr)),
+                               "0"(__old)
+                         : "memory");
+    return __before;
+  }
+
+#if defined(__x86_64)
+  template<typename _MustBeInt = int>
+  inline int64_t
+  __cas64(volatile int64_t *__ptr, int64_t __old, int64_t __nw)
+  {
+    int64_t __before;
+    __asm__ __volatile__("lock; cmpxchgq %1,%2"
+                         : "=a"(__before)
+                         : "q"(__nw), "__m"(*(volatile long long*)(__ptr)),
+                               "0"(__old)
+                         : "memory");
+    return __before;
+  }
+#endif
+
+#endif
+
+  /** @brief Compare @c *__ptr and @c __comparand. If equal, let @c
+   * *__ptr=__replacement and return @c true, return @c false otherwise.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to 32-bit signed integer.
+   *  @param __comparand Compare value.
+   *  @param __replacement Replacement value.
+   */
+  inline bool
+  __compare_and_swap_32(volatile int32_t* __ptr, int32_t __comparand,
+                        int32_t __replacement)
+  {
+#if defined(__ICC)      //x86 version
+    return _InterlockedCompareExchange((void*)__ptr, __replacement,
+                                       __comparand) == __comparand;
+#elif defined(__ECC)    //IA-64 version
+    return _InterlockedCompareExchange((void*)__ptr, __replacement,
+                                       __comparand) == __comparand;
+#elif defined(__ICL) || defined(_MSC_VER)
+    return _InterlockedCompareExchange(
+               reinterpret_cast<volatile long*>(__ptr),
+               __replacement, __comparand)
+             == __comparand;
+#elif defined(__GNUC__)
+    return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement);
+#elif defined(__SUNPRO_CC) && defined(__sparc)
+    return atomic_cas_32((volatile unsigned int*)__ptr, __comparand,
+                         __replacement) == __comparand;
+#else
+#pragma message("slow __compare_and_swap_32")
+    bool __res = false;
+#pragma omp critical
+    {
+      if (*__ptr == __comparand)
+        {
+          *__ptr = __replacement;
+          __res = true;
+        }
+    }
+    return __res;
+#endif
+  }
+
+  /** @brief Compare @c *__ptr and @c __comparand. If equal, let @c
+   * *__ptr=__replacement and return @c true, return @c false otherwise.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to 64-bit signed integer.
+   *  @param __comparand Compare value.
+   *  @param __replacement Replacement value.
+   */
+  inline bool
+  __compare_and_swap_64(volatile int64_t* __ptr, int64_t __comparand,
+                        int64_t __replacement)
+  {
+#if defined(__ICC) && defined(__x86_64) //x86 version
+    return __cas64<int>(__ptr, __comparand, __replacement) == __comparand;
+#elif defined(__ECC)    //IA-64 version
+    return _InterlockedCompareExchange64((void*)__ptr, __replacement,
+                                         __comparand) == __comparand;
+#elif defined(__ICL) || defined(_MSC_VER)
+#ifndef _WIN64
+    _GLIBCXX_PARALLEL_ASSERT(false);    //not available in this case
+    return 0;
+#else
+    return _InterlockedCompareExchange64(__ptr, __replacement,
+                                         __comparand) == __comparand;
+#endif
+
+#elif defined(__GNUC__) && defined(__x86_64)
+    return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement);
+#elif defined(__GNUC__) && defined(__i386) &&                   \
+  (defined(__i686) || defined(__pentium4) || defined(__athlon)  \
+   || defined(__k8) || defined(__core2))
+    return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement);
+#elif defined(__SUNPRO_CC) && defined(__sparc)
+    return atomic_cas_64((volatile unsigned long long*)__ptr,
+                         __comparand, __replacement) == __comparand;
+#else
+#if defined(__GNUC__) && defined(__i386)
+    // XXX -march=native
+    //#warning "please compile with -march=i686 or better"
+#endif
+#pragma message("slow __compare_and_swap_64")
+    bool __res = false;
+#pragma omp critical
+    {
+      if (*__ptr == __comparand)
+        {
+          *__ptr = __replacement;
+          __res = true;
+        }
+    }
+    return __res;
+#endif
+  }
+
+  /** @brief Compare @c *__ptr and @c __comparand. If equal, let @c
+   * *__ptr=__replacement and return @c true, return @c false otherwise.
+   *
+   *  Implementation is heavily platform-dependent.
+   *  @param __ptr Pointer to signed integer.
+   *  @param __comparand Compare value.
+   *  @param __replacement Replacement value. */
+  template<typename _Tp>
+  inline bool
+  __compare_and_swap(volatile _Tp* __ptr, _Tp __comparand, _Tp __replacement)
+  {
+    if (sizeof(_Tp) == sizeof(int32_t))
+      return __compare_and_swap_32((volatile int32_t*) __ptr,
+                                   (int32_t)__comparand,
+                                   (int32_t)__replacement);
+    else if (sizeof(_Tp) == sizeof(int64_t))
+      return __compare_and_swap_64((volatile int64_t*) __ptr,
+                                   (int64_t)__comparand,
+                                   (int64_t)__replacement);
+    else
+      _GLIBCXX_PARALLEL_ASSERT(false);
+  }
+
+  /** @brief Yield the control to another thread, without waiting for
+      the end to the time slice. */
+  inline void
+  __yield()
+  {
+#if defined (_WIN32) && !defined (__CYGWIN__)
+    Sleep(0);
+#else
+    sched_yield();
+#endif
+  }
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_COMPATIBILITY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compiletime_settings.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compiletime_settings.h
new file mode 100644
index 000000000..e375a94a9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/compiletime_settings.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/compiletime_settings.h
+ *  @brief Defines on options concerning debugging and performance, at
+ *  compile-time.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#include <cstdio>
+
+/** @brief Determine verbosity level of the parallel mode.
+ *  Level 1 prints a message each time a parallel-mode function is entered. */
+#define _GLIBCXX_VERBOSE_LEVEL 0
+
+/** @def _GLIBCXX_CALL
+ *  @brief Macro to produce log message when entering a function.
+ *  @param __n Input size.
+ *  @see _GLIBCXX_VERBOSE_LEVEL */
+#if (_GLIBCXX_VERBOSE_LEVEL == 0)
+#define _GLIBCXX_CALL(__n)
+#endif
+#if (_GLIBCXX_VERBOSE_LEVEL == 1)
+#define _GLIBCXX_CALL(__n) \
+  printf("   %__s:\niam = %d, __n = %ld, __num_threads = %d\n", \
+  __PRETTY_FUNCTION__, omp_get_thread_num(), (__n), __get_max_threads());
+#endif
+
+#ifndef _GLIBCXX_SCALE_DOWN_FPU
+/** @brief Use floating-point scaling instead of modulo for mapping
+ *  random numbers to a range.  This can be faster on certain CPUs. */
+#define _GLIBCXX_SCALE_DOWN_FPU 0
+#endif
+
+#ifndef _GLIBCXX_ASSERTIONS
+/** @brief Switch on many _GLIBCXX_PARALLEL_ASSERTions in parallel code.
+ *  Should be switched on only locally. */
+#define _GLIBCXX_ASSERTIONS 0
+#endif
+
+#ifndef _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1
+/** @brief Switch on many _GLIBCXX_PARALLEL_ASSERTions in parallel code.
+ *  Consider the size of the L1 cache for
+*  gnu_parallel::__parallel_random_shuffle(). */
+#define _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1 0
+#endif
+#ifndef _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB
+/** @brief Switch on many _GLIBCXX_PARALLEL_ASSERTions in parallel code.
+ *  Consider the size of the TLB for
+*  gnu_parallel::__parallel_random_shuffle(). */
+#define _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB 0
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/equally_split.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/equally_split.h
new file mode 100644
index 000000000..481c98868
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/equally_split.h
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/equally_split.h
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_EQUALLY_SPLIT_H
+#define _GLIBCXX_PARALLEL_EQUALLY_SPLIT_H 1
+
+namespace __gnu_parallel
+{
+  /** @brief function to split a sequence into parts of almost equal size.
+   *
+   *  The resulting sequence __s of length __num_threads+1 contains the
+   *  splitting positions when splitting the range [0,__n) into parts of
+   *  almost equal size (plus minus 1).  The first entry is 0, the last
+   *  one n. There may result empty parts.
+   *  @param __n Number of elements
+   *  @param __num_threads Number of parts
+   *  @param __s Splitters
+   *  @returns End of __splitter sequence, i.e. @c __s+__num_threads+1 */
+  template<typename _DifferenceType, typename _OutputIterator>
+    _OutputIterator
+    equally_split(_DifferenceType __n, _ThreadIndex __num_threads,
+		  _OutputIterator __s)
+    {
+      _DifferenceType __chunk_length = __n / __num_threads;
+      _DifferenceType __num_longer_chunks = __n % __num_threads;
+      _DifferenceType __pos = 0;
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	{
+	  *__s++ = __pos;
+	  __pos += ((__i < __num_longer_chunks)
+		    ? (__chunk_length + 1) : __chunk_length);
+	}
+      *__s++ = __n;
+      return __s;
+    }
+
+  /** @brief function to split a sequence into parts of almost equal size.
+   *
+   *  Returns the position of the splitting point between
+   *  thread number __thread_no (included) and
+   *  thread number __thread_no+1 (excluded).
+   *  @param __n Number of elements
+   *  @param __num_threads Number of parts
+   *  @returns splitting point */
+  template<typename _DifferenceType>
+    _DifferenceType
+    equally_split_point(_DifferenceType __n,
+			_ThreadIndex __num_threads,
+			_ThreadIndex __thread_no)
+    {
+      _DifferenceType __chunk_length = __n / __num_threads;
+      _DifferenceType __num_longer_chunks = __n % __num_threads;
+      if (__thread_no < __num_longer_chunks)
+	return __thread_no * (__chunk_length + 1);
+      else
+	return __num_longer_chunks * (__chunk_length + 1)
+          + (__thread_no - __num_longer_chunks) * __chunk_length;
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_EQUALLY_SPLIT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/features.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/features.h
new file mode 100644
index 000000000..077429f16
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/features.h
@@ -0,0 +1,104 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/features.h
+ *  @brief Defines on whether to include algorithm variants.
+ *
+ *  Less variants reduce executable size and compile time.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_FEATURES_H
+#define _GLIBCXX_PARALLEL_FEATURES_H 1
+
+#ifndef _GLIBCXX_MERGESORT
+/** @def _GLIBCXX_MERGESORT
+ *  @brief Include parallel multi-way mergesort.
+ *  @see __gnu_parallel::_Settings::sort_algorithm */
+#define _GLIBCXX_MERGESORT 1
+#endif
+
+#ifndef _GLIBCXX_QUICKSORT
+/** @def _GLIBCXX_QUICKSORT
+ *  @brief Include parallel unbalanced quicksort.
+ *  @see __gnu_parallel::_Settings::sort_algorithm */
+#define _GLIBCXX_QUICKSORT 1
+#endif
+
+#ifndef _GLIBCXX_BAL_QUICKSORT
+/** @def _GLIBCXX_BAL_QUICKSORT
+ *  @brief Include parallel dynamically load-balanced quicksort.
+ *  @see __gnu_parallel::_Settings::sort_algorithm */
+#define _GLIBCXX_BAL_QUICKSORT 1
+#endif
+
+#ifndef _GLIBCXX_FIND_GROWING_BLOCKS
+/** @brief Include the growing blocks variant for std::find.
+ *  @see __gnu_parallel::_Settings::find_algorithm */
+#define _GLIBCXX_FIND_GROWING_BLOCKS 1
+#endif
+
+#ifndef _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS
+/** @brief Include the equal-sized blocks variant for std::find.
+ *  @see __gnu_parallel::_Settings::find_algorithm */
+#define _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS 1
+#endif
+
+#ifndef _GLIBCXX_FIND_EQUAL_SPLIT
+/** @def _GLIBCXX_FIND_EQUAL_SPLIT
+ *  @brief Include the equal splitting variant for std::find.
+ *  @see __gnu_parallel::_Settings::find_algorithm */
+#define _GLIBCXX_FIND_EQUAL_SPLIT 1
+#endif
+
+
+#ifndef _GLIBCXX_TREE_INITIAL_SPLITTING
+/** @def _GLIBCXX_TREE_INITIAL_SPLITTING
+ *  @brief Include the initial splitting variant for
+ *  _Rb_tree::insert_unique(_IIter beg, _IIter __end).
+ *  @see __gnu_parallel::_Rb_tree */
+#define _GLIBCXX_TREE_INITIAL_SPLITTING 1
+#endif
+
+#ifndef _GLIBCXX_TREE_DYNAMIC_BALANCING
+/** @def _GLIBCXX_TREE_DYNAMIC_BALANCING
+ *  @brief Include the dynamic balancing variant for
+ *  _Rb_tree::insert_unique(_IIter beg, _IIter __end).
+ *  @see __gnu_parallel::_Rb_tree */
+#define _GLIBCXX_TREE_DYNAMIC_BALANCING 1
+#endif
+
+#ifndef _GLIBCXX_TREE_FULL_COPY
+/** @def _GLIBCXX_TREE_FULL_COPY
+ *  @brief In order to sort the input sequence of
+ *  _Rb_tree::insert_unique(_IIter beg, _IIter __end) a
+ *  full copy of the input elements is done.
+ *  @see __gnu_parallel::_Rb_tree */
+#define _GLIBCXX_TREE_FULL_COPY 1
+#endif
+
+
+#endif /* _GLIBCXX_PARALLEL_FEATURES_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find.h
new file mode 100644
index 000000000..28bc703e5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find.h
@@ -0,0 +1,405 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/find.h
+ *  @brief Parallel implementation base for std::find(), std::equal()
+ *  and related functions.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze and Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_FIND_H
+#define _GLIBCXX_PARALLEL_FIND_H 1
+
+#include <bits/stl_algobase.h>
+
+#include <parallel/features.h>
+#include <parallel/parallel.h>
+#include <parallel/compatibility.h>
+#include <parallel/equally_split.h>
+
+namespace __gnu_parallel
+{
+  /**
+   *  @brief Parallel std::find, switch for different algorithms.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence. Must have same
+   *  length as first sequence.
+   *  @param __pred Find predicate.
+   *  @param __selector _Functionality (e. g. std::find_if(), std::equal(),...)
+   *  @return Place of finding in both sequences.
+   */
+  template<typename _RAIter1,
+	   typename _RAIter2,
+	   typename _Pred,
+           typename _Selector>
+    inline std::pair<_RAIter1, _RAIter2>
+    __find_template(_RAIter1 __begin1, _RAIter1 __end1,
+		    _RAIter2 __begin2, _Pred __pred, _Selector __selector)
+    {
+      switch (_Settings::get().find_algorithm)
+	{
+	case GROWING_BLOCKS:
+          return __find_template(__begin1, __end1, __begin2, __pred,
+				 __selector, growing_blocks_tag());
+	case CONSTANT_SIZE_BLOCKS:
+          return __find_template(__begin1, __end1, __begin2, __pred,
+				 __selector, constant_size_blocks_tag());
+	case EQUAL_SPLIT:
+          return __find_template(__begin1, __end1, __begin2, __pred,
+				 __selector, equal_split_tag());
+	default:
+          _GLIBCXX_PARALLEL_ASSERT(false);
+          return std::make_pair(__begin1, __begin2);
+	}
+    }
+
+#if _GLIBCXX_FIND_EQUAL_SPLIT
+
+  /**
+   *  @brief Parallel std::find, equal splitting variant.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence. Second __sequence
+   *  must have same length as first sequence.
+   *  @param __pred Find predicate.
+   *  @param __selector _Functionality (e. g. std::find_if(), std::equal(),...)
+   *  @return Place of finding in both sequences.
+   */
+  template<typename _RAIter1,
+           typename _RAIter2,
+           typename _Pred,
+           typename _Selector>
+    std::pair<_RAIter1, _RAIter2>
+    __find_template(_RAIter1 __begin1, _RAIter1 __end1,
+		    _RAIter2 __begin2, _Pred __pred,
+		    _Selector __selector, equal_split_tag)
+    {
+      _GLIBCXX_CALL(__end1 - __begin1)
+
+      typedef std::iterator_traits<_RAIter1> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename _TraitsType::value_type _ValueType;
+
+      _DifferenceType __length = __end1 - __begin1;
+      _DifferenceType __result = __length;
+      _DifferenceType* __borders;
+
+      omp_lock_t __result_lock;
+      omp_init_lock(&__result_lock);
+
+      _ThreadIndex __num_threads = __get_max_threads();
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#     pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __borders = new _DifferenceType[__num_threads + 1];
+	  equally_split(__length, __num_threads, __borders);
+	} //single
+
+	_ThreadIndex __iam = omp_get_thread_num();
+	_DifferenceType __start = __borders[__iam],
+	                 __stop = __borders[__iam + 1];
+
+	_RAIter1 __i1 = __begin1 + __start;
+	_RAIter2 __i2 = __begin2 + __start;
+	for (_DifferenceType __pos = __start; __pos < __stop; ++__pos)
+	  {
+#           pragma omp flush(__result)
+	    // Result has been set to something lower.
+	    if (__result < __pos)
+	      break;
+
+	    if (__selector(__i1, __i2, __pred))
+	      {
+		omp_set_lock(&__result_lock);
+		if (__pos < __result)
+		  __result = __pos;
+		omp_unset_lock(&__result_lock);
+		break;
+	      }
+	    ++__i1;
+	    ++__i2;
+	  }
+      } //parallel
+
+      omp_destroy_lock(&__result_lock);
+      delete[] __borders;
+
+      return std::pair<_RAIter1, _RAIter2>(__begin1 + __result,
+					   __begin2 + __result);
+    }
+
+#endif
+
+#if _GLIBCXX_FIND_GROWING_BLOCKS
+
+  /**
+   *  @brief Parallel std::find, growing block size variant.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence. Second __sequence
+   *  must have same length as first sequence.
+   *  @param __pred Find predicate.
+   *  @param __selector _Functionality (e. g. std::find_if(), std::equal(),...)
+   *  @return Place of finding in both sequences.
+   *  @see __gnu_parallel::_Settings::find_sequential_search_size
+   *  @see __gnu_parallel::_Settings::find_scale_factor
+   *
+   *  There are two main differences between the growing blocks and
+   *  the constant-size blocks variants.
+   *  1. For GB, the block size grows; for CSB, the block size is fixed.
+   *  2. For GB, the blocks are allocated dynamically;
+   *     for CSB, the blocks are allocated in a predetermined manner,
+   *     namely spacial round-robin.
+   */
+  template<typename _RAIter1,
+           typename _RAIter2,
+           typename _Pred,
+           typename _Selector>
+    std::pair<_RAIter1, _RAIter2>
+    __find_template(_RAIter1 __begin1, _RAIter1 __end1,
+		    _RAIter2 __begin2, _Pred __pred, _Selector __selector,
+		    growing_blocks_tag)
+    {
+      _GLIBCXX_CALL(__end1 - __begin1)
+
+      typedef std::iterator_traits<_RAIter1> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename _TraitsType::value_type _ValueType;
+
+      const _Settings& __s = _Settings::get();
+
+      _DifferenceType __length = __end1 - __begin1;
+
+      _DifferenceType
+	__sequential_search_size = std::min<_DifferenceType>
+	(__length, __s.find_sequential_search_size);
+
+      // Try it sequentially first.
+      std::pair<_RAIter1, _RAIter2>
+	__find_seq_result = __selector._M_sequential_algorithm
+	(__begin1, __begin1 + __sequential_search_size,
+	 __begin2, __pred);
+
+      if (__find_seq_result.first != (__begin1 + __sequential_search_size))
+	return __find_seq_result;
+
+      // Index of beginning of next free block (after sequential find).
+      _DifferenceType __next_block_start = __sequential_search_size;
+      _DifferenceType __result = __length;
+
+      omp_lock_t __result_lock;
+      omp_init_lock(&__result_lock);
+
+      const float __scale_factor = __s.find_scale_factor;
+
+      _ThreadIndex __num_threads = __get_max_threads();
+#     pragma omp parallel shared(__result) num_threads(__num_threads)
+      {
+#       pragma omp single
+	__num_threads = omp_get_num_threads();
+
+	// Not within first __k elements -> start parallel.
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	_DifferenceType __block_size =
+	  std::max<_DifferenceType>(1, __scale_factor * __next_block_start);
+	_DifferenceType __start = __fetch_and_add<_DifferenceType>
+	  (&__next_block_start, __block_size);
+
+	// Get new block, update pointer to next block.
+	_DifferenceType __stop =
+	  std::min<_DifferenceType>(__length, __start + __block_size);
+
+	std::pair<_RAIter1, _RAIter2> __local_result;
+
+	while (__start < __length)
+	  {
+#           pragma omp flush(__result)
+	    // Get new value of result.
+	    if (__result < __start)
+	      {
+		// No chance to find first element.
+		break;
+	      }
+
+	    __local_result = __selector._M_sequential_algorithm
+	      (__begin1 + __start, __begin1 + __stop,
+	       __begin2 + __start, __pred);
+
+	    if (__local_result.first != (__begin1 + __stop))
+	      {
+		omp_set_lock(&__result_lock);
+		if ((__local_result.first - __begin1) < __result)
+		  {
+		    __result = __local_result.first - __begin1;
+
+		    // Result cannot be in future blocks, stop algorithm.
+		    __fetch_and_add<_DifferenceType>(&__next_block_start,
+						     __length);
+		  }
+		omp_unset_lock(&__result_lock);
+	      }
+
+	    _DifferenceType __block_size =
+	     std::max<_DifferenceType>(1, __scale_factor * __next_block_start);
+
+	    // Get new block, update pointer to next block.
+	    __start = __fetch_and_add<_DifferenceType>(&__next_block_start,
+						       __block_size);
+	    __stop =
+	      std::min<_DifferenceType>(__length, __start + __block_size);
+	  }
+      } //parallel
+
+      omp_destroy_lock(&__result_lock);
+
+      // Return iterator on found element.
+      return
+	std::pair<_RAIter1, _RAIter2>(__begin1 + __result,
+				      __begin2 + __result);
+    }
+
+#endif
+
+#if _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS
+
+  /**
+   *   @brief Parallel std::find, constant block size variant.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence. Second __sequence
+   *  must have same length as first sequence.
+   *  @param __pred Find predicate.
+   *  @param __selector _Functionality (e. g. std::find_if(), std::equal(),...)
+   *  @return Place of finding in both sequences.
+   *  @see __gnu_parallel::_Settings::find_sequential_search_size
+   *  @see __gnu_parallel::_Settings::find_block_size
+   *  There are two main differences between the growing blocks and the
+   *  constant-size blocks variants.
+   *  1. For GB, the block size grows; for CSB, the block size is fixed.
+   *  2. For GB, the blocks are allocated dynamically; for CSB, the
+   *  blocks are allocated in a predetermined manner, namely spacial
+   *  round-robin.
+   */
+  template<typename _RAIter1,
+           typename _RAIter2,
+           typename _Pred,
+           typename _Selector>
+    std::pair<_RAIter1, _RAIter2>
+    __find_template(_RAIter1 __begin1, _RAIter1 __end1,
+                  _RAIter2 __begin2, _Pred __pred, _Selector __selector,
+                  constant_size_blocks_tag)
+    {
+      _GLIBCXX_CALL(__end1 - __begin1)
+      typedef std::iterator_traits<_RAIter1> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename _TraitsType::value_type _ValueType;
+
+      const _Settings& __s = _Settings::get();
+
+      _DifferenceType __length = __end1 - __begin1;
+
+      _DifferenceType __sequential_search_size = std::min<_DifferenceType>
+	(__length, __s.find_sequential_search_size);
+
+      // Try it sequentially first.
+      std::pair<_RAIter1, _RAIter2>
+	__find_seq_result = __selector._M_sequential_algorithm
+	(__begin1, __begin1 + __sequential_search_size, __begin2, __pred);
+
+      if (__find_seq_result.first != (__begin1 + __sequential_search_size))
+	return __find_seq_result;
+
+      _DifferenceType __result = __length;
+      omp_lock_t __result_lock;
+      omp_init_lock(&__result_lock);
+
+      // Not within first __sequential_search_size elements -> start parallel.
+
+      _ThreadIndex __num_threads = __get_max_threads();
+#     pragma omp parallel shared(__result) num_threads(__num_threads)
+      {
+#       pragma omp single
+	__num_threads = omp_get_num_threads();
+
+	_ThreadIndex __iam = omp_get_thread_num();
+	_DifferenceType __block_size = __s.find_initial_block_size;
+
+	// First element of thread's current iteration.
+	_DifferenceType __iteration_start = __sequential_search_size;
+
+	// Where to work (initialization).
+	_DifferenceType __start = __iteration_start + __iam * __block_size;
+	_DifferenceType __stop = std::min<_DifferenceType>(__length,
+							   __start
+							   + __block_size);
+
+	std::pair<_RAIter1, _RAIter2> __local_result;
+
+	while (__start < __length)
+	  {
+	    // Get new value of result.
+#           pragma omp flush(__result)
+	    // No chance to find first element.
+	    if (__result < __start)
+	      break;
+
+	    __local_result = __selector._M_sequential_algorithm
+	      (__begin1 + __start, __begin1 + __stop,
+	       __begin2 + __start, __pred);
+
+	    if (__local_result.first != (__begin1 + __stop))
+	      {
+		omp_set_lock(&__result_lock);
+		if ((__local_result.first - __begin1) < __result)
+		  __result = __local_result.first - __begin1;
+		omp_unset_lock(&__result_lock);
+		// Will not find better value in its interval.
+		break;
+	      }
+
+	    __iteration_start += __num_threads * __block_size;
+
+	    // Where to work.
+	    __start = __iteration_start + __iam * __block_size;
+	    __stop = std::min<_DifferenceType>(__length,
+					       __start + __block_size);
+	  }
+      } //parallel
+
+      omp_destroy_lock(&__result_lock);
+
+      // Return iterator on found element.
+      return std::pair<_RAIter1, _RAIter2>(__begin1 + __result,
+					   __begin2 + __result);
+    }
+#endif
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_FIND_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find_selectors.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find_selectors.h
new file mode 100644
index 000000000..df77978a9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/find_selectors.h
@@ -0,0 +1,197 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/find_selectors.h
+ *  @brief _Function objects representing different tasks to be plugged
+ *  into the parallel find algorithm.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_FIND_SELECTORS_H
+#define _GLIBCXX_PARALLEL_FIND_SELECTORS_H 1
+
+#include <parallel/tags.h>
+#include <parallel/basic_iterator.h>
+#include <bits/stl_pair.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Base class of all __gnu_parallel::__find_template selectors. */
+  struct __generic_find_selector
+  { };
+
+  /** 
+   *  @brief Test predicate on a single element, used for std::find()
+   *  and std::find_if ().
+   */
+  struct __find_if_selector : public __generic_find_selector
+  {
+    /** @brief Test on one position.
+     * @param __i1 _Iterator on first sequence.
+     * @param __i2 _Iterator on second sequence (unused).
+     * @param __pred Find predicate.
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      bool 
+      operator()(_RAIter1 __i1, _RAIter2 __i2, _Pred __pred)
+      { return __pred(*__i1); }
+
+    /** @brief Corresponding sequential algorithm on a sequence.
+     *  @param __begin1 Begin iterator of first sequence.
+     *  @param __end1 End iterator of first sequence.
+     *  @param __begin2 Begin iterator of second sequence.
+     *  @param __pred Find predicate.
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      std::pair<_RAIter1, _RAIter2> 
+      _M_sequential_algorithm(_RAIter1 __begin1,
+                           _RAIter1 __end1,
+                           _RAIter2 __begin2, _Pred __pred)
+      { return std::make_pair(find_if(__begin1, __end1, __pred,
+                                      sequential_tag()), __begin2); }
+  };
+
+  /** @brief Test predicate on two adjacent elements. */
+  struct __adjacent_find_selector : public __generic_find_selector
+  {
+    /** @brief Test on one position.
+     *  @param __i1 _Iterator on first sequence.
+     *  @param __i2 _Iterator on second sequence (unused).
+     *  @param __pred Find predicate.
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      bool 
+      operator()(_RAIter1 __i1, _RAIter2 __i2, _Pred __pred)
+      {
+        // Passed end iterator is one short.
+        return __pred(*__i1, *(__i1 + 1));
+      }
+
+    /** @brief Corresponding sequential algorithm on a sequence.
+     *  @param __begin1 Begin iterator of first sequence.
+     *  @param __end1 End iterator of first sequence.
+     *  @param __begin2 Begin iterator of second sequence.
+     *  @param __pred Find predicate.
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      std::pair<_RAIter1, _RAIter2>
+      _M_sequential_algorithm(_RAIter1 __begin1,
+			      _RAIter1 __end1,
+			      _RAIter2 __begin2, _Pred __pred)
+      {
+        // Passed end iterator is one short.
+        _RAIter1 __spot = adjacent_find(__begin1, __end1 + 1,
+					__pred, sequential_tag());
+        if (__spot == (__end1 + 1))
+          __spot = __end1;
+        return std::make_pair(__spot, __begin2);
+      }
+  };
+
+  /** @brief Test inverted predicate on a single element. */
+  struct __mismatch_selector : public __generic_find_selector
+  {
+    /** 
+     *  @brief Test on one position.
+     *  @param __i1 _Iterator on first sequence.
+     *  @param __i2 _Iterator on second sequence (unused).
+     *  @param __pred Find predicate. 
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      bool 
+      operator()(_RAIter1 __i1, _RAIter2 __i2, _Pred __pred)
+      { return !__pred(*__i1, *__i2); }
+
+    /** 
+     *  @brief Corresponding sequential algorithm on a sequence.
+     *  @param __begin1 Begin iterator of first sequence.
+     *  @param __end1 End iterator of first sequence.
+     *  @param __begin2 Begin iterator of second sequence.
+     *  @param __pred Find predicate. 
+     */
+    template<typename _RAIter1, typename _RAIter2,
+             typename _Pred>
+      std::pair<_RAIter1, _RAIter2>
+      _M_sequential_algorithm(_RAIter1 __begin1,
+			      _RAIter1 __end1,
+			      _RAIter2 __begin2, _Pred __pred)
+      { return mismatch(__begin1, __end1, __begin2,
+			__pred, sequential_tag()); }
+  };
+
+
+  /** @brief Test predicate on several elements. */
+  template<typename _FIterator>
+    struct __find_first_of_selector : public __generic_find_selector
+    {
+      _FIterator _M_begin;
+      _FIterator _M_end;
+
+      explicit __find_first_of_selector(_FIterator __begin,
+					_FIterator __end)
+      : _M_begin(__begin), _M_end(__end) { }
+
+      /** @brief Test on one position.
+       *  @param __i1 _Iterator on first sequence.
+       *  @param __i2 _Iterator on second sequence (unused).
+       *  @param __pred Find predicate. */
+      template<typename _RAIter1, typename _RAIter2,
+	       typename _Pred>
+        bool
+        operator()(_RAIter1 __i1, _RAIter2 __i2, _Pred __pred)
+        {
+	  for (_FIterator __pos_in_candidates = _M_begin;
+	       __pos_in_candidates != _M_end; ++__pos_in_candidates)
+	    if (__pred(*__i1, *__pos_in_candidates))
+	      return true;
+	  return false;
+	}
+
+      /** @brief Corresponding sequential algorithm on a sequence.
+       *  @param __begin1 Begin iterator of first sequence.
+       *  @param __end1 End iterator of first sequence.
+       *  @param __begin2 Begin iterator of second sequence.
+       *  @param __pred Find predicate. */
+      template<typename _RAIter1, typename _RAIter2,
+	       typename _Pred>
+        std::pair<_RAIter1, _RAIter2>
+        _M_sequential_algorithm(_RAIter1 __begin1,
+				_RAIter1 __end1,
+				_RAIter2 __begin2, _Pred __pred)
+        {
+	  return std::make_pair(find_first_of(__begin1, __end1,
+					      _M_begin, _M_end, __pred,
+					      sequential_tag()), __begin2);
+	}
+     };
+}
+
+#endif /* _GLIBCXX_PARALLEL_FIND_SELECTORS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each.h
new file mode 100644
index 000000000..013259315
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each.h
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/for_each.h
+ *  @brief Main interface for embarrassingly parallel functions.
+ *
+ *  The explicit implementation are in other header files, like
+ *  workstealing.h, par_loop.h, omp_loop.h, and omp_loop_static.h.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_FOR_EACH_H
+#define _GLIBCXX_PARALLEL_FOR_EACH_H 1
+
+#include <parallel/settings.h>
+#include <parallel/par_loop.h>
+#include <parallel/omp_loop.h>
+#include <parallel/workstealing.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Chose the desired algorithm by evaluating @c __parallelism_tag.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __user_op A user-specified functor (comparator, predicate,
+   *  associative operator,...)
+   *  @param __functionality functor to @a process an element with
+   *  __user_op (depends on desired functionality, e. g. accumulate,
+   *  for_each,...
+   *  @param __reduction Reduction functor.
+   *  @param __reduction_start Initial value for reduction.
+   *  @param __output Output iterator.
+   *  @param __bound Maximum number of elements processed.
+   *  @param __parallelism_tag Parallelization method */
+  template<typename _IIter, typename _UserOp,
+           typename _Functionality, typename _Red, typename _Result>
+    _UserOp
+    __for_each_template_random_access(_IIter __begin, _IIter __end,
+                                      _UserOp __user_op,
+                                      _Functionality& __functionality,
+                                      _Red __reduction,
+                                      _Result __reduction_start,
+                                      _Result& __output, typename
+                                      std::iterator_traits<_IIter>::
+                                      difference_type __bound,
+                                      _Parallelism __parallelism_tag)
+    {
+      if (__parallelism_tag == parallel_unbalanced)
+        return __for_each_template_random_access_ed
+	  (__begin, __end, __user_op, __functionality, __reduction,
+	   __reduction_start, __output, __bound);
+      else if (__parallelism_tag == parallel_omp_loop)
+        return __for_each_template_random_access_omp_loop
+	  (__begin, __end, __user_op, __functionality, __reduction,
+	   __reduction_start, __output, __bound);
+      else if (__parallelism_tag == parallel_omp_loop_static)
+        return __for_each_template_random_access_omp_loop
+	  (__begin, __end, __user_op, __functionality, __reduction,
+	   __reduction_start, __output, __bound);
+      else      //e. g. parallel_balanced
+        return __for_each_template_random_access_workstealing
+	  (__begin, __end, __user_op, __functionality, __reduction,
+	   __reduction_start, __output, __bound);
+  }
+}
+
+#endif /* _GLIBCXX_PARALLEL_FOR_EACH_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each_selectors.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each_selectors.h
new file mode 100644
index 000000000..3a37e5ca6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/for_each_selectors.h
@@ -0,0 +1,349 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/for_each_selectors.h
+ *  @brief Functors representing different tasks to be plugged into the
+ *  generic parallelization methods for embarrassingly parallel functions.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_FOR_EACH_SELECTORS_H
+#define _GLIBCXX_PARALLEL_FOR_EACH_SELECTORS_H 1
+
+#include <parallel/basic_iterator.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Generic __selector for embarrassingly parallel functions. */
+  template<typename _It>
+    struct __generic_for_each_selector
+    {
+      /** @brief _Iterator on last element processed; needed for some
+       *  algorithms (e. g. std::transform()).
+       */
+      _It _M_finish_iterator;
+    };
+
+  /** @brief std::for_each() selector. */
+  template<typename _It>
+    struct __for_each_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object. */
+      template<typename _Op>
+        bool
+        operator()(_Op& __o, _It __i)
+        {
+          __o(*__i);
+          return true;
+        }
+    };
+
+  /** @brief std::generate() selector. */
+  template<typename _It>
+    struct __generate_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object. */
+      template<typename _Op>
+        bool
+        operator()(_Op& __o, _It __i)
+        {
+          *__i = __o();
+          return true;
+        }
+    };
+
+  /** @brief std::fill() selector. */
+  template<typename _It>
+    struct __fill_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __v Current value.
+       *  @param __i iterator referencing object. */
+      template<typename _ValueType>
+        bool
+        operator()(_ValueType& __v, _It __i)
+        {
+          *__i = __v;
+          return true;
+        }
+    };
+
+  /** @brief std::transform() __selector, one input sequence variant. */
+  template<typename _It>
+    struct __transform1_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object. */
+      template<typename _Op>
+        bool
+        operator()(_Op& __o, _It __i)
+        {
+          *__i.second = __o(*__i.first);
+          return true;
+        }
+    };
+
+  /** @brief std::transform() __selector, two input sequences variant. */
+  template<typename _It>
+    struct __transform2_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object. */
+      template<typename _Op>
+        bool
+        operator()(_Op& __o, _It __i)
+        {
+          *__i._M_third = __o(*__i._M_first, *__i._M_second);
+          return true;
+        }
+    };
+
+  /** @brief std::replace() selector. */
+  template<typename _It, typename _Tp>
+    struct __replace_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Value to replace with. */
+      const _Tp& __new_val;
+
+      /** @brief Constructor
+       *  @param __new_val Value to replace with. */
+      explicit
+      __replace_selector(const _Tp &__new_val) : __new_val(__new_val) {}
+
+      /** @brief Functor execution.
+       *  @param __v Current value.
+       *  @param __i iterator referencing object. */
+      bool
+      operator()(_Tp& __v, _It __i)
+      {
+        if (*__i == __v)
+          *__i = __new_val;
+        return true;
+      }
+    };
+
+  /** @brief std::replace() selector. */
+  template<typename _It, typename _Op, typename _Tp>
+    struct __replace_if_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Value to replace with. */
+      const _Tp& __new_val;
+
+      /** @brief Constructor.
+       *  @param __new_val Value to replace with. */
+      explicit
+      __replace_if_selector(const _Tp &__new_val) : __new_val(__new_val) { }
+
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object. */
+      bool
+      operator()(_Op& __o, _It __i)
+      {
+        if (__o(*__i))
+          *__i = __new_val;
+        return true;
+      }
+    };
+
+  /** @brief std::count() selector. */
+  template<typename _It, typename _Diff>
+    struct __count_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __v Current value.
+       *  @param __i iterator referencing object.
+       *  @return 1 if count, 0 if does not count. */
+      template<typename _ValueType>
+        _Diff
+        operator()(_ValueType& __v, _It __i)
+        { return (__v == *__i) ? 1 : 0; }
+    };
+
+  /** @brief std::count_if () selector. */
+  template<typename _It, typename _Diff>
+    struct __count_if_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator.
+       *  @param __i iterator referencing object.
+       *  @return 1 if count, 0 if does not count. */
+      template<typename _Op>
+        _Diff
+        operator()(_Op& __o, _It __i)
+        { return (__o(*__i)) ? 1 : 0; }
+    };
+
+  /** @brief std::accumulate() selector. */
+  template<typename _It>
+    struct __accumulate_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator (unused).
+       *  @param __i iterator referencing object.
+       *  @return The current value. */
+      template<typename _Op>
+        typename std::iterator_traits<_It>::value_type
+        operator()(_Op __o, _It __i)
+        { return *__i; }
+    };
+
+  /** @brief std::inner_product() selector. */
+  template<typename _It, typename _It2, typename _Tp>
+    struct __inner_product_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Begin iterator of first sequence. */
+      _It  __begin1_iterator;
+
+      /** @brief Begin iterator of second sequence. */
+      _It2 __begin2_iterator;
+
+      /** @brief Constructor.
+       *  @param b1 Begin iterator of first sequence.
+       *  @param b2 Begin iterator of second sequence. */
+      explicit
+      __inner_product_selector(_It __b1, _It2 __b2)
+      : __begin1_iterator(__b1), __begin2_iterator(__b2) { }
+
+      /** @brief Functor execution.
+       *  @param __mult Multiplication functor.
+       *  @param __current iterator referencing object.
+       *  @return Inner product elemental __result. */
+      template<typename _Op>
+        _Tp
+        operator()(_Op __mult, _It __current)
+        {
+          typename std::iterator_traits<_It>::difference_type __position
+            = __current - __begin1_iterator;
+          return __mult(*__current, *(__begin2_iterator + __position));
+        }
+    };
+
+  /** @brief Selector that just returns the passed iterator. */
+  template<typename _It>
+    struct __identity_selector : public __generic_for_each_selector<_It>
+    {
+      /** @brief Functor execution.
+       *  @param __o Operator (unused).
+       *  @param __i iterator referencing object.
+       *  @return Passed iterator. */
+      template<typename _Op>
+        _It
+        operator()(_Op __o, _It __i)
+        { return __i; }
+    };
+
+  /** @brief Selector that returns the difference between two adjacent
+   *  __elements.
+   */
+  template<typename _It>
+    struct __adjacent_difference_selector
+    : public __generic_for_each_selector<_It>
+    {
+      template<typename _Op>
+        bool
+        operator()(_Op& __o, _It __i)
+        {
+          typename _It::first_type __go_back_one = __i.first;
+          --__go_back_one;
+          *__i.second = __o(*__i.first, *__go_back_one);
+          return true;
+        }
+    };
+
+  /** @brief Functor doing nothing
+   *
+   *  For some __reduction tasks (this is not a function object, but is
+   *  passed as __selector __dummy parameter.
+   */
+  struct _Nothing
+  {
+    /** @brief Functor execution.
+     *  @param __i iterator referencing object. */
+    template<typename _It>
+      void
+      operator()(_It) { }
+  };
+
+  /** @brief Reduction function doing nothing. */
+  struct _DummyReduct
+  {
+    bool
+    operator()(bool, bool) const
+    { return true; }
+  };
+
+  /** @brief Reduction for finding the maximum element, using a comparator. */
+  template<typename _Compare, typename _It>
+    struct __min_element_reduct
+    {
+      _Compare& __comp;
+
+      explicit
+      __min_element_reduct(_Compare &__c) : __comp(__c) { }
+
+      _It
+      operator()(_It __x, _It __y)
+      { return (__comp(*__x, *__y)) ? __x : __y; }
+    };
+
+  /** @brief Reduction for finding the maximum element, using a comparator. */
+  template<typename _Compare, typename _It>
+    struct __max_element_reduct
+    {
+      _Compare& __comp;
+
+      explicit
+      __max_element_reduct(_Compare& __c) : __comp(__c) { }
+
+      _It
+      operator()(_It __x, _It __y)
+      { return (__comp(*__x, *__y)) ? __y : __x; }
+    };
+
+  /** @brief General reduction, using a binary operator. */
+  template<typename _BinOp>
+    struct __accumulate_binop_reduct
+    {
+      _BinOp& __binop;
+
+      explicit
+      __accumulate_binop_reduct(_BinOp& __b) : __binop(__b) { }
+
+      template<typename _Result, typename _Addend>
+        _Result
+        operator()(const _Result& __x, const _Addend& __y)
+        { return __binop(__x, __y); }
+    };
+}
+
+#endif /* _GLIBCXX_PARALLEL_FOR_EACH_SELECTORS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/iterator.h
new file mode 100644
index 000000000..013855076
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/iterator.h
@@ -0,0 +1,198 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/iterator.h
+ * @brief Helper iterator classes for the std::transform() functions.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_ITERATOR_H
+#define _GLIBCXX_PARALLEL_ITERATOR_H 1
+
+#include <parallel/basic_iterator.h>
+#include <bits/stl_pair.h>
+
+namespace __gnu_parallel
+{
+  /** @brief A pair of iterators. The usual iterator operations are
+   *  applied to both child iterators.
+   */
+  template<typename _Iterator1, typename _Iterator2,
+           typename _IteratorCategory>
+    class _IteratorPair : public std::pair<_Iterator1, _Iterator2>
+    {
+    private:
+      typedef std::pair<_Iterator1, _Iterator2> _Base;
+
+    public:
+      typedef _IteratorCategory iterator_category;
+      typedef void value_type;
+
+      typedef std::iterator_traits<_Iterator1> _TraitsType;
+      typedef typename _TraitsType::difference_type difference_type;
+      typedef _IteratorPair* pointer;
+      typedef _IteratorPair& reference;
+
+      _IteratorPair() { }
+
+      _IteratorPair(const _Iterator1& __first, const _Iterator2& __second)
+      : _Base(__first, __second) { }
+
+      // Pre-increment operator.
+      _IteratorPair&
+      operator++()
+      {
+        ++_Base::first;
+        ++_Base::second;
+        return *this;
+      }
+
+      // Post-increment operator.
+      const _IteratorPair
+      operator++(int)
+      { return _IteratorPair(_Base::first++, _Base::second++); }
+
+      // Pre-decrement operator.
+      _IteratorPair&
+      operator--()
+      {
+        --_Base::first;
+        --_Base::second;
+        return *this;
+      }
+
+      // Post-decrement operator.
+      const _IteratorPair
+      operator--(int)
+      { return _IteratorPair(_Base::first--, _Base::second--); }
+
+      // Type conversion.
+      operator _Iterator2() const
+      { return _Base::second; }
+
+      _IteratorPair&
+      operator=(const _IteratorPair& __other)
+      {
+        _Base::first = __other.first;
+        _Base::second = __other.second;
+        return *this;
+      }
+
+      _IteratorPair
+      operator+(difference_type __delta) const
+      { return _IteratorPair(_Base::first + __delta, _Base::second + __delta);
+        }
+
+      difference_type
+      operator-(const _IteratorPair& __other) const
+      { return _Base::first - __other.first; }
+  };
+
+
+  /** @brief A triple of iterators. The usual iterator operations are
+      applied to all three child iterators.
+   */
+  template<typename _Iterator1, typename _Iterator2, typename _Iterator3,
+           typename _IteratorCategory>
+    class _IteratorTriple
+    {
+    public:
+      typedef _IteratorCategory iterator_category;
+      typedef void value_type;
+      typedef typename std::iterator_traits<_Iterator1>::difference_type
+                                                            difference_type;
+      typedef _IteratorTriple* pointer;
+      typedef _IteratorTriple& reference;
+
+      _Iterator1 _M_first;
+      _Iterator2 _M_second;
+      _Iterator3 _M_third;
+
+      _IteratorTriple() { }
+
+      _IteratorTriple(const _Iterator1& __first, const _Iterator2& __second,
+                      const _Iterator3& __third)
+      {
+        _M_first = __first;
+        _M_second = __second;
+        _M_third = __third;
+      }
+
+      // Pre-increment operator.
+      _IteratorTriple&
+      operator++()
+      {
+        ++_M_first;
+        ++_M_second;
+        ++_M_third;
+        return *this;
+      }
+
+      // Post-increment operator.
+      const _IteratorTriple
+      operator++(int)
+      { return _IteratorTriple(_M_first++, _M_second++, _M_third++); }
+
+      // Pre-decrement operator.
+      _IteratorTriple&
+      operator--()
+      {
+        --_M_first;
+        --_M_second;
+        --_M_third;
+        return *this;
+      }
+
+      // Post-decrement operator.
+      const _IteratorTriple
+      operator--(int)
+      { return _IteratorTriple(_M_first--, _M_second--, _M_third--); }
+
+      // Type conversion.
+      operator _Iterator3() const
+      { return _M_third; }
+
+      _IteratorTriple&
+      operator=(const _IteratorTriple& __other)
+      {
+        _M_first = __other._M_first;
+        _M_second = __other._M_second;
+        _M_third = __other._M_third;
+        return *this;
+      }
+
+      _IteratorTriple
+      operator+(difference_type __delta) const
+      { return _IteratorTriple(_M_first + __delta, _M_second + __delta,
+                               _M_third + __delta); }
+
+      difference_type
+      operator-(const _IteratorTriple& __other) const
+      { return _M_first - __other._M_first; }
+  };
+}
+
+#endif /* _GLIBCXX_PARALLEL_ITERATOR_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/list_partition.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/list_partition.h
new file mode 100644
index 000000000..1f1bfa22e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/list_partition.h
@@ -0,0 +1,179 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute __it and/or modify __it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that __it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/list_partition.h
+ *  @brief _Functionality to split __sequence referenced by only input
+ *  iterators.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Leonor Frias Moya and Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_LIST_PARTITION_H
+#define _GLIBCXX_PARALLEL_LIST_PARTITION_H 1
+
+#include <parallel/parallel.h>
+#include <vector>
+
+namespace __gnu_parallel
+{
+  /** @brief Shrinks and doubles the ranges.
+   *  @param __os_starts Start positions worked on (oversampled).
+   *  @param __count_to_two Counts up to 2.
+   *  @param __range_length Current length of a chunk.
+   *  @param __make_twice Whether the @c __os_starts is allowed to be
+   *  grown or not
+   */
+  template<typename _IIter>
+    void
+    __shrink_and_double(std::vector<_IIter>& __os_starts,
+			size_t& __count_to_two, size_t& __range_length,
+			const bool __make_twice)
+    {
+      ++__count_to_two;
+      if (!__make_twice || __count_to_two < 2)
+        __shrink(__os_starts, __count_to_two, __range_length);
+      else
+        {
+          __os_starts.resize((__os_starts.size() - 1) * 2 + 1);
+          __count_to_two = 0;
+        }
+    }
+
+  /** @brief Combines two ranges into one and thus halves the number of ranges.
+   *  @param __os_starts Start positions worked on (oversampled).
+   *  @param __count_to_two Counts up to 2.
+   *  @param __range_length Current length of a chunk. */
+  template<typename _IIter>
+    void
+    __shrink(std::vector<_IIter>& __os_starts, size_t& __count_to_two,
+	     size_t& __range_length)
+    {
+      for (typename std::vector<_IIter>::size_type __i = 0;
+           __i <= (__os_starts.size() / 2); ++__i)
+        __os_starts[__i] = __os_starts[__i * 2];
+      __range_length *= 2;
+    }
+
+  /** @brief Splits a sequence given by input iterators into parts of
+   * almost equal size
+   *
+   *  The function needs only one pass over the sequence.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __starts Start iterators for the resulting parts, dimension
+   *  @c __num_parts+1. For convenience, @c __starts @c [__num_parts]
+   *  contains the end iterator of the sequence.
+   *  @param __lengths Length of the resulting parts.
+   *  @param __num_parts Number of parts to split the sequence into.
+   *  @param __f Functor to be applied to each element by traversing __it
+   *  @param __oversampling Oversampling factor. If 0, then the
+   *  partitions will differ in at most 
+   *  \sqrt{\mathrm{__end} - \mathrm{__begin}} 
+   *  __elements. Otherwise, the ratio between the
+   *  longest and the shortest part is bounded by
+   *  1/(\mathrm{__oversampling} \cdot \mathrm{num\_parts})
+   *  @return Length of the whole sequence.
+   */
+  template<typename _IIter, typename _FunctorType>
+    size_t
+    list_partition(const _IIter __begin, const _IIter __end,
+                   _IIter* __starts, size_t* __lengths, const int __num_parts,
+                   _FunctorType& __f, int __oversampling = 0)
+    {
+      bool __make_twice = false;
+
+      // The resizing algorithm is chosen according to the oversampling factor.
+      if (__oversampling == 0)
+        {
+          __make_twice = true;
+          __oversampling = 1;
+        }
+
+      std::vector<_IIter> __os_starts(2 * __oversampling * __num_parts + 1);
+
+      __os_starts[0] = __begin;
+      _IIter __prev  = __begin, __it = __begin;
+      size_t __dist_limit = 0, __dist = 0;
+      size_t __cur = 1, __next = 1;
+      size_t __range_length = 1;
+      size_t __count_to_two = 0;
+      while (__it != __end)
+        {
+          __cur = __next;
+          for (; __cur < __os_starts.size() and __it != __end; ++__cur)
+            {
+              for (__dist_limit += __range_length;
+                   __dist < __dist_limit and __it != __end; ++__dist)
+                {
+                  __f(__it);
+                  ++__it;
+                }
+              __os_starts[__cur] = __it;
+            }
+
+          // Must compare for end and not __cur < __os_starts.size() , because
+          // __cur could be == __os_starts.size() as well
+          if (__it == __end)
+            break;
+
+          __shrink_and_double(__os_starts, __count_to_two, __range_length,
+                              __make_twice);
+          __next = __os_starts.size() / 2 + 1;
+        }
+
+      // Calculation of the parts (one must be extracted from __current
+      // because the partition beginning at end, consists only of
+      // itself).
+      size_t __size_part = (__cur - 1) / __num_parts;
+      int __size_greater = static_cast<int>((__cur - 1) % __num_parts);
+      __starts[0] = __os_starts[0];
+
+      size_t __index = 0;
+
+      // Smallest partitions.
+      for (int __i = 1; __i < (__num_parts + 1 - __size_greater); ++__i)
+        {
+          __lengths[__i - 1] =  __size_part * __range_length;
+          __index += __size_part;
+          __starts[__i] = __os_starts[__index];
+        }
+
+      // Biggest partitions.
+      for (int __i = __num_parts + 1 - __size_greater; __i <= __num_parts;
+           ++__i)
+        {
+          __lengths[__i - 1] =  (__size_part+1) * __range_length;
+          __index += (__size_part+1);
+          __starts[__i] = __os_starts[__index];
+        }
+
+      // Correction of the end size (the end iteration has not finished).
+      __lengths[__num_parts - 1] -= (__dist_limit - __dist);
+
+      return __dist;
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_LIST_PARTITION_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/losertree.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/losertree.h
new file mode 100644
index 000000000..cb24f7f67
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/losertree.h
@@ -0,0 +1,1055 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/losertree.h
+*  @brief Many generic loser tree variants.
+*  This file is a GNU parallel extension to the Standard C++ Library.
+*/
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_LOSERTREE_H
+#define _GLIBCXX_PARALLEL_LOSERTREE_H 1
+
+#include <bits/stl_algobase.h>
+#include <bits/stl_function.h>
+#include <parallel/features.h>
+#include <parallel/base.h>
+
+namespace __gnu_parallel
+{
+  /**
+   * @brief Guarded loser/tournament tree.
+   *
+   * The smallest element is at the top.
+   *
+   * Guarding is done explicitly through one flag _M_sup per element,
+   * inf is not needed due to a better initialization routine.  This
+   * is a well-performing variant.
+   *
+   * @param _Tp the element type
+   * @param _Compare the comparator to use, defaults to std::less<_Tp>
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreeBase
+    {
+    protected:
+      /** @brief Internal representation of a _LoserTree element. */
+      struct _Loser
+      {
+	/** @brief flag, true iff this is a "maximum" __sentinel. */
+	bool _M_sup;
+	/** @brief __index of the __source __sequence. */
+	int _M_source;
+	/** @brief _M_key of the element in the _LoserTree. */
+	_Tp _M_key;
+      };
+
+      unsigned int _M_ik, _M_k, _M_offset;
+
+      /** log_2{_M_k} */
+      unsigned int _M_log_k;
+
+      /** @brief _LoserTree __elements. */
+      _Loser* _M_losers;
+
+      /** @brief _Compare to use. */
+      _Compare _M_comp;
+
+      /**
+       * @brief State flag that determines whether the _LoserTree is empty.
+       *
+       * Only used for building the _LoserTree.
+       */
+      bool _M_first_insert;
+
+    public:
+      /**
+       * @brief The constructor.
+       *
+       * @param __k The number of sequences to merge.
+       * @param __comp The comparator to use.
+       */
+      _LoserTreeBase(unsigned int __k, _Compare __comp)
+      : _M_comp(__comp)
+      {
+	_M_ik = __k;
+
+	// Compute log_2{_M_k} for the _Loser Tree
+	_M_log_k = __rd_log2(_M_ik - 1) + 1;
+
+	// Next greater power of 2.
+	_M_k = 1 << _M_log_k;
+	_M_offset = _M_k;
+
+	// Avoid default-constructing _M_losers[]._M_key
+	_M_losers = static_cast<_Loser*>(::operator new(2 * _M_k
+							* sizeof(_Loser)));
+	for (unsigned int __i = _M_ik - 1; __i < _M_k; ++__i)
+	  _M_losers[__i + _M_k]._M_sup = true;
+
+	_M_first_insert = true;
+      }
+
+      /**
+       * @brief The destructor.
+       */
+      ~_LoserTreeBase()
+      {
+	for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
+	  _M_losers[__i].~_Loser();
+	::operator delete(_M_losers);
+      }
+
+      /**
+       * @brief Initializes the sequence "_M_source" with the element "__key".
+       *
+       * @param __key the element to insert
+       * @param __source __index of the __source __sequence
+       * @param __sup flag that determines whether the value to insert is an
+       *   explicit __supremum.
+       */
+      void
+      __insert_start(const _Tp& __key, int __source, bool __sup)
+      {
+	unsigned int __pos = _M_k + __source;
+
+	if (_M_first_insert)
+	  {
+	    // Construct all keys, so we can easily destruct them.
+	    for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
+	      ::new(&(_M_losers[__i]._M_key)) _Tp(__key);
+	    _M_first_insert = false;
+	  }
+	else
+	  _M_losers[__pos]._M_key = __key;
+
+	_M_losers[__pos]._M_sup = __sup;
+	_M_losers[__pos]._M_source = __source;
+      }
+
+      /**
+       * @return the index of the sequence with the smallest element.
+       */
+      int __get_min_source()
+      { return _M_losers[0]._M_source; }
+    };
+
+    /**
+     * @brief Stable _LoserTree variant.
+     *
+     * Provides the stable implementations of insert_start, __init_winner,
+     * __init and __delete_min_insert.
+     *
+     * Unstable variant is done using partial specialisation below.
+     */
+  template<bool __stable/* default == true */, typename _Tp,
+	   typename _Compare>
+    class _LoserTree
+    : public _LoserTreeBase<_Tp, _Compare>
+    {
+      typedef _LoserTreeBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+      using _Base::_M_first_insert;
+
+    public:
+      _LoserTree(unsigned int __k, _Compare __comp)
+      : _Base::_LoserTreeBase(__k, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (_M_losers[__right]._M_sup
+		|| (!_M_losers[__left]._M_sup
+		    && !_M_comp(_M_losers[__right]._M_key,
+				_M_losers[__left]._M_key)))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void __init()
+      { _M_losers[0] = _M_losers[__init_winner(1)]; }
+
+      /**
+       * @brief Delete the smallest element and insert a new element from
+       *   the previously smallest element's sequence.
+       *
+       * This implementation is stable.
+       */
+      // Do not pass a const reference since __key will be used as
+      // local variable.
+      void
+      __delete_min_insert(_Tp __key, bool __sup)
+      {
+        using std::swap;
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted, ties are broken by _M_source.
+	    if ((__sup && (!_M_losers[__pos]._M_sup
+			   || _M_losers[__pos]._M_source < __source))
+		|| (!__sup && !_M_losers[__pos]._M_sup
+		    && ((_M_comp(_M_losers[__pos]._M_key, __key))
+			|| (!_M_comp(__key, _M_losers[__pos]._M_key)
+			    && _M_losers[__pos]._M_source < __source))))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_sup, __sup);
+		std::swap(_M_losers[__pos]._M_source, __source);
+		swap(_M_losers[__pos]._M_key, __key);
+	      }
+	  }
+
+	_M_losers[0]._M_sup = __sup;
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_key = __key;
+      }
+    };
+
+    /**
+     * @brief Unstable _LoserTree variant.
+     *
+     * Stability (non-stable here) is selected with partial specialization.
+     */
+  template<typename _Tp, typename _Compare>
+    class _LoserTree</* __stable == */false, _Tp, _Compare>
+    : public _LoserTreeBase<_Tp, _Compare>
+    {
+      typedef _LoserTreeBase<_Tp, _Compare> _Base;
+      using _Base::_M_log_k;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+      using _Base::_M_first_insert;
+
+    public:
+      _LoserTree(unsigned int __k, _Compare __comp)
+      : _Base::_LoserTreeBase(__k, __comp)
+      { }
+
+      /**
+       * Computes the winner of the competition at position "__root".
+       *
+       * Called recursively (starting at 0) to build the initial tree.
+       *
+       * @param __root __index of the "game" to start.
+       */
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (_M_losers[__right]._M_sup
+		|| (!_M_losers[__left]._M_sup
+		    && !_M_comp(_M_losers[__right]._M_key,
+				_M_losers[__left]._M_key)))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void
+      __init()
+      { _M_losers[0] = _M_losers[__init_winner(1)]; }
+
+      /**
+       * Delete the _M_key smallest element and insert the element __key
+       * instead.
+       *
+       * @param __key the _M_key to insert
+       * @param __sup true iff __key is an explicitly marked supremum
+       */
+      // Do not pass a const reference since __key will be used as local
+      // variable.
+      void
+      __delete_min_insert(_Tp __key, bool __sup)
+      {
+        using std::swap;
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted.
+	    if (__sup || (!_M_losers[__pos]._M_sup
+			  && _M_comp(_M_losers[__pos]._M_key, __key)))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_sup, __sup);
+		std::swap(_M_losers[__pos]._M_source, __source);
+		swap(_M_losers[__pos]._M_key, __key);
+	      }
+	  }
+
+	_M_losers[0]._M_sup = __sup;
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_key = __key;
+      }
+    };
+
+  /**
+   * @brief Base class of _Loser Tree implementation using pointers.
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreePointerBase
+    {
+    protected:
+      /** @brief Internal representation of _LoserTree __elements. */
+      struct _Loser
+      {
+	bool _M_sup;
+	int _M_source;
+	const _Tp* _M_keyp;
+      };
+
+      unsigned int _M_ik, _M_k, _M_offset;
+      _Loser* _M_losers;
+      _Compare _M_comp;
+
+    public:
+      _LoserTreePointerBase(unsigned int __k,
+			    _Compare __comp = std::less<_Tp>())
+      : _M_comp(__comp)
+      {
+	_M_ik = __k;
+
+	// Next greater power of 2.
+	_M_k = 1 << (__rd_log2(_M_ik - 1) + 1);
+	_M_offset = _M_k;
+	_M_losers = new _Loser[_M_k * 2];
+	for (unsigned int __i = _M_ik - 1; __i < _M_k; __i++)
+	  _M_losers[__i + _M_k]._M_sup = true;
+      }
+
+      ~_LoserTreePointerBase()
+      { delete[] _M_losers; }
+
+      int __get_min_source()
+      { return _M_losers[0]._M_source; }
+
+      void __insert_start(const _Tp& __key, int __source, bool __sup)
+      {
+	unsigned int __pos = _M_k + __source;
+
+	_M_losers[__pos]._M_sup = __sup;
+	_M_losers[__pos]._M_source = __source;
+	_M_losers[__pos]._M_keyp = &__key;
+      }
+    };
+
+  /**
+   * @brief Stable _LoserTree implementation.
+   *
+   * The unstable variant is implemented using partial instantiation below.
+   */
+  template<bool __stable/* default == true */, typename _Tp, typename _Compare>
+    class _LoserTreePointer
+    : public _LoserTreePointerBase<_Tp, _Compare>
+    {
+      typedef _LoserTreePointerBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+    public:
+      _LoserTreePointer(unsigned int __k, _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreePointerBase(__k, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (_M_losers[__right]._M_sup
+		|| (!_M_losers[__left]._M_sup
+		    && !_M_comp(*_M_losers[__right]._M_keyp,
+				*_M_losers[__left]._M_keyp)))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void __init()
+      { _M_losers[0] = _M_losers[__init_winner(1)]; }
+
+      void __delete_min_insert(const _Tp& __key, bool __sup)
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	const _Tp* __keyp = &__key;
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted, ties are broken by __source.
+	    if ((__sup && (!_M_losers[__pos]._M_sup
+			   || _M_losers[__pos]._M_source < __source))
+		|| (!__sup && !_M_losers[__pos]._M_sup &&
+		    ((_M_comp(*_M_losers[__pos]._M_keyp, *__keyp))
+		     || (!_M_comp(*__keyp, *_M_losers[__pos]._M_keyp)
+			 && _M_losers[__pos]._M_source < __source))))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_sup, __sup);
+		std::swap(_M_losers[__pos]._M_source, __source);
+		std::swap(_M_losers[__pos]._M_keyp, __keyp);
+	      }
+	  }
+
+	_M_losers[0]._M_sup = __sup;
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_keyp = __keyp;
+      }
+    };
+
+  /**
+   * @brief Unstable _LoserTree implementation.
+   *
+   * The stable variant is above.
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreePointer</* __stable == */false, _Tp, _Compare>
+    : public _LoserTreePointerBase<_Tp, _Compare>
+    {
+      typedef _LoserTreePointerBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+    public:
+      _LoserTreePointer(unsigned int __k, _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreePointerBase(__k, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (_M_losers[__right]._M_sup
+        	|| (!_M_losers[__left]._M_sup
+		    && !_M_comp(*_M_losers[__right]._M_keyp,
+				*_M_losers[__left]._M_keyp)))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void __init()
+      { _M_losers[0] = _M_losers[__init_winner(1)]; }
+
+      void __delete_min_insert(const _Tp& __key, bool __sup)
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	const _Tp* __keyp = &__key;
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted.
+	    if (__sup || (!_M_losers[__pos]._M_sup
+			  && _M_comp(*_M_losers[__pos]._M_keyp, *__keyp)))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_sup, __sup);
+		std::swap(_M_losers[__pos]._M_source, __source);
+		std::swap(_M_losers[__pos]._M_keyp, __keyp);
+	      }
+	  }
+
+	_M_losers[0]._M_sup = __sup;
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_keyp = __keyp;
+      }
+    };
+
+  /** @brief Base class for unguarded _LoserTree implementation.
+   * 
+   * The whole element is copied into the tree structure.
+   *
+   * No guarding is done, therefore not a single input sequence must
+   * run empty.  Unused __sequence heads are marked with a sentinel which
+   * is > all elements that are to be merged.
+   *
+   * This is a very fast variant.
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreeUnguardedBase
+    {
+    protected:
+      struct _Loser
+      {
+	int _M_source;
+	_Tp _M_key;
+      };
+
+      unsigned int _M_ik, _M_k, _M_offset;
+      _Loser* _M_losers;
+      _Compare _M_comp;
+
+    public:
+      _LoserTreeUnguardedBase(unsigned int __k, const _Tp& __sentinel,
+			      _Compare __comp = std::less<_Tp>())
+      : _M_comp(__comp)
+      {
+	_M_ik = __k;
+
+	// Next greater power of 2.
+	_M_k = 1 << (__rd_log2(_M_ik - 1) + 1);
+	_M_offset = _M_k;
+	// Avoid default-constructing _M_losers[]._M_key
+	_M_losers = static_cast<_Loser*>(::operator new(2 * _M_k
+							* sizeof(_Loser)));
+
+        for (unsigned int __i = 0; __i < _M_k; ++__i)
+          {
+	    ::new(&(_M_losers[__i]._M_key)) _Tp(__sentinel);
+	    _M_losers[__i]._M_source = -1;
+	  }
+        for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i)
+          {
+	    ::new(&(_M_losers[__i]._M_key)) _Tp(__sentinel);
+	    _M_losers[__i]._M_source = -1;
+	  }
+      }
+
+      ~_LoserTreeUnguardedBase()
+      {
+	for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
+	  _M_losers[__i].~_Loser();
+	::operator delete(_M_losers);
+      }
+
+      int
+      __get_min_source()
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+	return _M_losers[0]._M_source;
+      }
+
+      void
+      __insert_start(const _Tp& __key, int __source, bool)
+      {
+	unsigned int __pos = _M_k + __source;
+
+	::new(&(_M_losers[__pos]._M_key)) _Tp(__key);
+	_M_losers[__pos]._M_source = __source;
+      }
+    };
+
+  /**
+   * @brief Stable implementation of unguarded _LoserTree.
+   *
+   * Unstable variant is selected below with partial specialization.
+   */
+  template<bool __stable/* default == true */, typename _Tp, typename _Compare>
+    class _LoserTreeUnguarded
+    : public _LoserTreeUnguardedBase<_Tp, _Compare>
+    {
+      typedef _LoserTreeUnguardedBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+  public:
+      _LoserTreeUnguarded(unsigned int __k, const _Tp& __sentinel,
+			  _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreeUnguardedBase(__k, __sentinel, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (!_M_comp(_M_losers[__right]._M_key,
+			 _M_losers[__left]._M_key))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void
+      __init()
+      {
+	_M_losers[0] = _M_losers[__init_winner(1)];
+
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top at the beginning
+	// (0 sequences!)
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+      }
+
+      // Do not pass a const reference since __key will be used as
+      // local variable.
+      void
+      __delete_min_insert(_Tp __key, bool)
+      {
+        using std::swap;
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted, ties are broken by _M_source.
+	    if (_M_comp(_M_losers[__pos]._M_key, __key)
+        	|| (!_M_comp(__key, _M_losers[__pos]._M_key)
+                    && _M_losers[__pos]._M_source < __source))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_source, __source);
+		swap(_M_losers[__pos]._M_key, __key);
+	      }
+	  }
+
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_key = __key;
+      }
+    };
+
+  /**
+   * @brief Non-Stable implementation of unguarded _LoserTree.
+   *
+   * Stable implementation is above.
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreeUnguarded</* __stable == */false, _Tp, _Compare>
+    : public _LoserTreeUnguardedBase<_Tp, _Compare>
+    {
+      typedef _LoserTreeUnguardedBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+    public:
+      _LoserTreeUnguarded(unsigned int __k, const _Tp& __sentinel,
+			  _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreeUnguardedBase(__k, __sentinel, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+
+#if _GLIBCXX_ASSERTIONS
+	    // If __left one is sentinel then __right one must be, too.
+	    if (_M_losers[__left]._M_source == -1)
+	      _GLIBCXX_PARALLEL_ASSERT(_M_losers[__right]._M_source == -1);
+#endif
+
+	    if (!_M_comp(_M_losers[__right]._M_key,
+			 _M_losers[__left]._M_key))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void
+      __init()
+      {
+	_M_losers[0] = _M_losers[__init_winner(1)];
+
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top at the beginning
+	// (0 sequences!)
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+      }
+
+      // Do not pass a const reference since __key will be used as
+      // local variable.
+      void
+      __delete_min_insert(_Tp __key, bool)
+      {
+        using std::swap;
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted.
+	    if (_M_comp(_M_losers[__pos]._M_key, __key))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_source, __source);
+		swap(_M_losers[__pos]._M_key, __key);
+	      }
+	  }
+
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_key = __key;
+      }
+    };
+
+  /** @brief Unguarded loser tree, keeping only pointers to the
+  * elements in the tree structure.
+  *
+  *  No guarding is done, therefore not a single input sequence must
+  *  run empty.  This is a very fast variant.
+  */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreePointerUnguardedBase
+    {
+    protected:
+      struct _Loser
+      {
+	int _M_source;
+	const _Tp* _M_keyp;
+      };
+
+      unsigned int _M_ik, _M_k, _M_offset;
+      _Loser* _M_losers;
+      _Compare _M_comp;
+
+    public:
+
+      _LoserTreePointerUnguardedBase(unsigned int __k, const _Tp& __sentinel,
+				     _Compare __comp = std::less<_Tp>())
+      : _M_comp(__comp)
+      {
+	_M_ik = __k;
+
+	// Next greater power of 2.
+	_M_k = 1 << (__rd_log2(_M_ik - 1) + 1);
+	_M_offset = _M_k;
+	// Avoid default-constructing _M_losers[]._M_key
+	_M_losers = new _Loser[2 * _M_k];
+
+	for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i)
+	  {
+	    _M_losers[__i]._M_keyp = &__sentinel;
+	    _M_losers[__i]._M_source = -1;
+	  }
+      }
+
+      ~_LoserTreePointerUnguardedBase()
+      { delete[] _M_losers; }
+
+      int
+      __get_min_source()
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+	return _M_losers[0]._M_source;
+      }
+
+      void
+      __insert_start(const _Tp& __key, int __source, bool)
+      {
+	unsigned int __pos = _M_k + __source;
+
+	_M_losers[__pos]._M_keyp = &__key;
+	_M_losers[__pos]._M_source = __source;
+      }
+    };
+
+  /**
+   * @brief Stable unguarded _LoserTree variant storing pointers.
+   *
+   * Unstable variant is implemented below using partial specialization.
+   */
+  template<bool __stable/* default == true */, typename _Tp, typename _Compare>
+    class _LoserTreePointerUnguarded
+    : public _LoserTreePointerUnguardedBase<_Tp, _Compare>
+    {
+      typedef _LoserTreePointerUnguardedBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+    public:
+      _LoserTreePointerUnguarded(unsigned int __k, const _Tp& __sentinel,
+				 _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreePointerUnguardedBase(__k, __sentinel, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+	    if (!_M_comp(*_M_losers[__right]._M_keyp,
+			 *_M_losers[__left]._M_keyp))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void
+      __init()
+      {
+	_M_losers[0] = _M_losers[__init_winner(1)];
+
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top at the beginning
+	// (0 sequences!)
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+      }
+
+      void
+      __delete_min_insert(const _Tp& __key, bool __sup)
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	const _Tp* __keyp = &__key;
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted, ties are broken by _M_source.
+	    if (_M_comp(*_M_losers[__pos]._M_keyp, *__keyp)
+		|| (!_M_comp(*__keyp, *_M_losers[__pos]._M_keyp)
+		    && _M_losers[__pos]._M_source < __source))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_source, __source);
+		std::swap(_M_losers[__pos]._M_keyp, __keyp);
+	      }
+	  }
+
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_keyp = __keyp;
+      }
+    };
+
+  /**
+   * @brief Unstable unguarded _LoserTree variant storing pointers.
+   *
+   * Stable variant is above.
+   */
+  template<typename _Tp, typename _Compare>
+    class _LoserTreePointerUnguarded</* __stable == */false, _Tp, _Compare>
+    : public _LoserTreePointerUnguardedBase<_Tp, _Compare>
+    {
+      typedef _LoserTreePointerUnguardedBase<_Tp, _Compare> _Base;
+      using _Base::_M_k;
+      using _Base::_M_losers;
+
+  public:
+      _LoserTreePointerUnguarded(unsigned int __k, const _Tp& __sentinel,
+				 _Compare __comp = std::less<_Tp>())
+      : _Base::_LoserTreePointerUnguardedBase(__k, __sentinel, __comp)
+      { }
+
+      unsigned int
+      __init_winner(unsigned int __root)
+      {
+	if (__root >= _M_k)
+	  return __root;
+	else
+	  {
+	    unsigned int __left = __init_winner(2 * __root);
+	    unsigned int __right = __init_winner(2 * __root + 1);
+
+#if _GLIBCXX_ASSERTIONS
+	    // If __left one is sentinel then __right one must be, too.
+	    if (_M_losers[__left]._M_source == -1)
+	      _GLIBCXX_PARALLEL_ASSERT(_M_losers[__right]._M_source == -1);
+#endif
+
+	    if (!_M_comp(*_M_losers[__right]._M_keyp,
+			 *_M_losers[__left]._M_keyp))
+	      {
+		// Left one is less or equal.
+		_M_losers[__root] = _M_losers[__right];
+		return __left;
+	      }
+	    else
+	      {
+		// Right one is less.
+		_M_losers[__root] = _M_losers[__left];
+		return __right;
+	      }
+	  }
+      }
+
+      void
+      __init()
+      {
+	_M_losers[0] = _M_losers[__init_winner(1)];
+
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top at the beginning
+	// (0 sequences!)
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+      }
+
+      void
+      __delete_min_insert(const _Tp& __key, bool __sup)
+      {
+#if _GLIBCXX_ASSERTIONS
+	// no dummy sequence can ever be at the top!
+	_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
+#endif
+
+	const _Tp* __keyp = &__key;
+	int __source = _M_losers[0]._M_source;
+	for (unsigned int __pos = (_M_k + __source) / 2; __pos > 0;
+	     __pos /= 2)
+	  {
+	    // The smaller one gets promoted.
+	    if (_M_comp(*(_M_losers[__pos]._M_keyp), *__keyp))
+	      {
+		// The other one is smaller.
+		std::swap(_M_losers[__pos]._M_source, __source);
+		std::swap(_M_losers[__pos]._M_keyp, __keyp);
+	      }
+	  }
+
+	_M_losers[0]._M_source = __source;
+	_M_losers[0]._M_keyp = __keyp;
+      }
+    };
+} // namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_LOSERTREE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/merge.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/merge.h
new file mode 100644
index 000000000..a19e996a0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/merge.h
@@ -0,0 +1,251 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/merge.h
+ *  @brief Parallel implementation of std::merge().
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_MERGE_H
+#define _GLIBCXX_PARALLEL_MERGE_H 1
+
+#include <parallel/basic_iterator.h>
+#include <bits/stl_algo.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Merge routine being able to merge only the @c __max_length
+   * smallest elements.
+   *
+   * The @c __begin iterators are advanced accordingly, they might not
+   * reach @c __end, in contrast to the usual variant.
+   * @param __begin1 Begin iterator of first sequence.
+   * @param __end1 End iterator of first sequence.
+   * @param __begin2 Begin iterator of second sequence.
+   * @param __end2 End iterator of second sequence.
+   * @param __target Target begin iterator.
+   * @param __max_length Maximum number of elements to merge.
+   * @param __comp Comparator.
+   * @return Output end iterator. */
+  template<typename _RAIter1, typename _RAIter2,
+           typename _OutputIterator, typename _DifferenceTp,
+           typename _Compare>
+    _OutputIterator
+    __merge_advance_usual(_RAIter1& __begin1, _RAIter1 __end1,
+			  _RAIter2& __begin2, _RAIter2 __end2,
+			  _OutputIterator __target,
+			  _DifferenceTp __max_length, _Compare __comp)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      while (__begin1 != __end1 && __begin2 != __end2 && __max_length > 0)
+        {
+          // array1[__i1] < array0[i0]
+          if (__comp(*__begin2, *__begin1))
+            *__target++ = *__begin2++;
+          else
+            *__target++ = *__begin1++;
+          --__max_length;
+        }
+
+      if (__begin1 != __end1)
+        {
+          __target = std::copy(__begin1, __begin1 + __max_length, __target);
+          __begin1 += __max_length;
+        }
+      else
+        {
+          __target = std::copy(__begin2, __begin2 + __max_length, __target);
+          __begin2 += __max_length;
+        }
+      return __target;
+    }
+
+  /** @brief Merge routine being able to merge only the @c __max_length
+   * smallest elements.
+   *
+   * The @c __begin iterators are advanced accordingly, they might not
+   * reach @c __end, in contrast to the usual variant.
+   * Specially designed code should allow the compiler to generate
+   * conditional moves instead of branches.
+   * @param __begin1 Begin iterator of first sequence.
+   * @param __end1 End iterator of first sequence.
+   * @param __begin2 Begin iterator of second sequence.
+   * @param __end2 End iterator of second sequence.
+   * @param __target Target begin iterator.
+   * @param __max_length Maximum number of elements to merge.
+   * @param __comp Comparator.
+   * @return Output end iterator. */
+  template<typename _RAIter1, typename _RAIter2,
+           typename _OutputIterator, typename _DifferenceTp,
+           typename _Compare>
+    _OutputIterator
+    __merge_advance_movc(_RAIter1& __begin1, _RAIter1 __end1,
+			 _RAIter2& __begin2, _RAIter2 __end2,
+			 _OutputIterator __target,
+			 _DifferenceTp __max_length, _Compare __comp)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+        _ValueType1;
+      typedef typename std::iterator_traits<_RAIter2>::value_type
+        _ValueType2;
+
+#if _GLIBCXX_ASSERTIONS
+      _GLIBCXX_PARALLEL_ASSERT(__max_length >= 0);
+#endif
+
+      while (__begin1 != __end1 && __begin2 != __end2 && __max_length > 0)
+        {
+          _RAIter1 __next1 = __begin1 + 1;
+          _RAIter2 __next2 = __begin2 + 1;
+          _ValueType1 __element1 = *__begin1;
+          _ValueType2 __element2 = *__begin2;
+
+          if (__comp(__element2, __element1))
+            {
+              __element1 = __element2;
+              __begin2 = __next2;
+            }
+          else
+            __begin1 = __next1;
+
+          *__target = __element1;
+
+          ++__target;
+          --__max_length;
+        }
+      if (__begin1 != __end1)
+        {
+          __target = std::copy(__begin1, __begin1 + __max_length, __target);
+          __begin1 += __max_length;
+        }
+      else
+        {
+          __target = std::copy(__begin2, __begin2 + __max_length, __target);
+          __begin2 += __max_length;
+        }
+      return __target;
+    }
+
+  /** @brief Merge routine being able to merge only the @c __max_length
+   * smallest elements.
+   *
+   *  The @c __begin iterators are advanced accordingly, they might not
+   *  reach @c __end, in contrast to the usual variant.
+   *  Static switch on whether to use the conditional-move variant.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence.
+   *  @param __end2 End iterator of second sequence.
+   *  @param __target Target begin iterator.
+   *  @param __max_length Maximum number of elements to merge.
+   *  @param __comp Comparator.
+   *  @return Output end iterator. */
+  template<typename _RAIter1, typename _RAIter2,
+           typename _OutputIterator, typename _DifferenceTp,
+           typename _Compare>
+    inline _OutputIterator
+    __merge_advance(_RAIter1& __begin1, _RAIter1 __end1,
+		    _RAIter2& __begin2, _RAIter2 __end2,
+		    _OutputIterator __target, _DifferenceTp __max_length,
+		    _Compare __comp)
+    {
+      _GLIBCXX_CALL(__max_length)
+
+      return __merge_advance_movc(__begin1, __end1, __begin2, __end2,
+				  __target, __max_length, __comp);
+    }
+
+  /** @brief Merge routine fallback to sequential in case the
+      iterators of the two input sequences are of different type.
+      *  @param __begin1 Begin iterator of first sequence.
+      *  @param __end1 End iterator of first sequence.
+      *  @param __begin2 Begin iterator of second sequence.
+      *  @param __end2 End iterator of second sequence.
+      *  @param __target Target begin iterator.
+      *  @param __max_length Maximum number of elements to merge.
+      *  @param __comp Comparator.
+      *  @return Output end iterator. */
+  template<typename _RAIter1, typename _RAIter2,
+           typename _RAIter3, typename _Compare>
+    inline _RAIter3
+    __parallel_merge_advance(_RAIter1& __begin1, _RAIter1 __end1,
+			     _RAIter2& __begin2,
+			     // different iterators, parallel implementation
+			     // not available
+			     _RAIter2 __end2, _RAIter3 __target, typename
+			     std::iterator_traits<_RAIter1>::
+			     difference_type __max_length, _Compare __comp)
+    { return __merge_advance(__begin1, __end1, __begin2, __end2, __target,
+			     __max_length, __comp); }
+
+  /** @brief Parallel merge routine being able to merge only the @c
+   * __max_length smallest elements.
+   *
+   *  The @c __begin iterators are advanced accordingly, they might not
+   *  reach @c __end, in contrast to the usual variant.
+   *  The functionality is projected onto parallel_multiway_merge.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence.
+   *  @param __end2 End iterator of second sequence.
+   *  @param __target Target begin iterator.
+   *  @param __max_length Maximum number of elements to merge.
+   *  @param __comp Comparator.
+   *  @return Output end iterator.
+   */
+  template<typename _RAIter1, typename _RAIter3,
+           typename _Compare>
+    inline _RAIter3
+    __parallel_merge_advance(_RAIter1& __begin1, _RAIter1 __end1,
+			     _RAIter1& __begin2, _RAIter1 __end2,
+			     _RAIter3 __target, typename
+			     std::iterator_traits<_RAIter1>::
+			     difference_type __max_length, _Compare __comp)
+    {
+      typedef typename
+          std::iterator_traits<_RAIter1>::value_type _ValueType;
+      typedef typename std::iterator_traits<_RAIter1>::
+        difference_type _DifferenceType1 /* == difference_type2 */;
+      typedef typename std::iterator_traits<_RAIter3>::
+        difference_type _DifferenceType3;
+      typedef typename std::pair<_RAIter1, _RAIter1>
+        _IteratorPair;
+
+      _IteratorPair __seqs[2] = { std::make_pair(__begin1, __end1),
+				  std::make_pair(__begin2, __end2) };
+      _RAIter3 __target_end = parallel_multiway_merge
+	< /* __stable = */ true, /* __sentinels = */ false>
+	(__seqs, __seqs + 2, __target, multiway_merge_exact_splitting
+	 < /* __stable = */ true, _IteratorPair*,
+	 _Compare, _DifferenceType1>, __max_length, __comp,
+	 omp_get_max_threads());
+
+      return __target_end;
+    }
+}       //namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_MERGE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiseq_selection.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiseq_selection.h
new file mode 100644
index 000000000..e77653aee
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiseq_selection.h
@@ -0,0 +1,646 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/multiseq_selection.h
+ *  @brief Functions to find elements of a certain global __rank in
+ *  multiple sorted sequences.  Also serves for splitting such
+ *  sequence sets.
+ *
+ *  The algorithm description can be found in 
+ *
+ *  P. J. Varman, S. D. Scheufler, B. R. Iyer, and G. R. Ricard.
+ *  Merging Multiple Lists on Hierarchical-Memory Multiprocessors.
+ *  Journal of Parallel and Distributed Computing, 12(2):171–177, 1991.
+ *
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_MULTISEQ_SELECTION_H
+#define _GLIBCXX_PARALLEL_MULTISEQ_SELECTION_H 1
+
+#include <vector>
+#include <queue>
+
+#include <bits/stl_algo.h>
+
+#include <parallel/sort.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Compare __a pair of types lexicographically, ascending. */
+  template<typename _T1, typename _T2, typename _Compare>
+    class _Lexicographic
+    : public std::binary_function<std::pair<_T1, _T2>,
+				  std::pair<_T1, _T2>, bool>
+    {
+    private:
+      _Compare& _M_comp;
+
+    public:
+      _Lexicographic(_Compare& __comp) : _M_comp(__comp) { }
+
+      bool
+      operator()(const std::pair<_T1, _T2>& __p1,
+                 const std::pair<_T1, _T2>& __p2) const
+      {
+        if (_M_comp(__p1.first, __p2.first))
+          return true;
+
+        if (_M_comp(__p2.first, __p1.first))
+          return false;
+
+        // Firsts are equal.
+        return __p1.second < __p2.second;
+      }
+    };
+
+  /** @brief Compare __a pair of types lexicographically, descending. */
+  template<typename _T1, typename _T2, typename _Compare>
+    class _LexicographicReverse : public std::binary_function<_T1, _T2, bool>
+    {
+    private:
+      _Compare& _M_comp;
+
+    public:
+      _LexicographicReverse(_Compare& __comp) : _M_comp(__comp) { }
+
+      bool
+      operator()(const std::pair<_T1, _T2>& __p1,
+                 const std::pair<_T1, _T2>& __p2) const
+      {
+        if (_M_comp(__p2.first, __p1.first))
+          return true;
+
+        if (_M_comp(__p1.first, __p2.first))
+          return false;
+
+        // Firsts are equal.
+        return __p2.second < __p1.second;
+      }
+    };
+
+  /** 
+   *  @brief Splits several sorted sequences at a certain global __rank,
+   *  resulting in a splitting point for each sequence.
+   *  The sequences are passed via a sequence of random-access
+   *  iterator pairs, none of the sequences may be empty.  If there
+   *  are several equal elements across the split, the ones on the
+   *  __left side will be chosen from sequences with smaller number.
+   *  @param __begin_seqs Begin of the sequence of iterator pairs.
+   *  @param __end_seqs End of the sequence of iterator pairs.
+   *  @param __rank The global rank to partition at.
+   *  @param __begin_offsets A random-access __sequence __begin where the
+   *  __result will be stored in. Each element of the sequence is an
+   *  iterator that points to the first element on the greater part of
+   *  the respective __sequence.
+   *  @param __comp The ordering functor, defaults to std::less<_Tp>. 
+   */
+  template<typename _RanSeqs, typename _RankType, typename _RankIterator,
+            typename _Compare>
+    void
+    multiseq_partition(_RanSeqs __begin_seqs, _RanSeqs __end_seqs,
+                       _RankType __rank,
+                       _RankIterator __begin_offsets,
+                       _Compare __comp = std::less<
+                       typename std::iterator_traits<typename
+                       std::iterator_traits<_RanSeqs>::value_type::
+                       first_type>::value_type>()) // std::less<_Tp>
+    {
+      _GLIBCXX_CALL(__end_seqs - __begin_seqs)
+
+      typedef typename std::iterator_traits<_RanSeqs>::value_type::first_type
+        _It;
+      typedef typename std::iterator_traits<_RanSeqs>::difference_type
+        _SeqNumber;
+      typedef typename std::iterator_traits<_It>::difference_type
+               _DifferenceType;
+      typedef typename std::iterator_traits<_It>::value_type _ValueType;
+
+      _Lexicographic<_ValueType, _SeqNumber, _Compare> __lcomp(__comp);
+      _LexicographicReverse<_ValueType, _SeqNumber, _Compare> __lrcomp(__comp);
+
+      // Number of sequences, number of elements in total (possibly
+      // including padding).
+      _DifferenceType __m = std::distance(__begin_seqs, __end_seqs), __nn = 0,
+                      __nmax, __n, __r;
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        {
+          __nn += std::distance(__begin_seqs[__i].first,
+                               __begin_seqs[__i].second);
+          _GLIBCXX_PARALLEL_ASSERT(
+            std::distance(__begin_seqs[__i].first,
+                          __begin_seqs[__i].second) > 0);
+        }
+
+      if (__rank == __nn)
+        {
+          for (_SeqNumber __i = 0; __i < __m; __i++)
+            __begin_offsets[__i] = __begin_seqs[__i].second; // Very end.
+          // Return __m - 1;
+          return;
+        }
+
+      _GLIBCXX_PARALLEL_ASSERT(__m != 0);
+      _GLIBCXX_PARALLEL_ASSERT(__nn != 0);
+      _GLIBCXX_PARALLEL_ASSERT(__rank >= 0);
+      _GLIBCXX_PARALLEL_ASSERT(__rank < __nn);
+
+      _DifferenceType* __ns = new _DifferenceType[__m];
+      _DifferenceType* __a = new _DifferenceType[__m];
+      _DifferenceType* __b = new _DifferenceType[__m];
+      _DifferenceType __l;
+
+      __ns[0] = std::distance(__begin_seqs[0].first, __begin_seqs[0].second);
+      __nmax = __ns[0];
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        {
+          __ns[__i] = std::distance(__begin_seqs[__i].first,
+                                    __begin_seqs[__i].second);
+          __nmax = std::max(__nmax, __ns[__i]);
+        }
+
+      __r = __rd_log2(__nmax) + 1;
+
+      // Pad all lists to this length, at least as long as any ns[__i],
+      // equality iff __nmax = 2^__k - 1.
+      __l = (1ULL << __r) - 1;
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        {
+          __a[__i] = 0;
+          __b[__i] = __l;
+        }
+      __n = __l / 2;
+
+      // Invariants:
+      // 0 <= __a[__i] <= __ns[__i], 0 <= __b[__i] <= __l
+
+#define __S(__i) (__begin_seqs[__i].first)
+
+      // Initial partition.
+      std::vector<std::pair<_ValueType, _SeqNumber> > __sample;
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        if (__n < __ns[__i])    //__sequence long enough
+          __sample.push_back(std::make_pair(__S(__i)[__n], __i));
+      __gnu_sequential::sort(__sample.begin(), __sample.end(), __lcomp);
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)       //conceptual infinity
+        if (__n >= __ns[__i])   //__sequence too short, conceptual infinity
+          __sample.push_back(
+            std::make_pair(__S(__i)[0] /*__dummy element*/, __i));
+
+      _DifferenceType __localrank = __rank / __l;
+
+      _SeqNumber __j;
+      for (__j = 0;
+           __j < __localrank && ((__n + 1) <= __ns[__sample[__j].second]);
+           ++__j)
+        __a[__sample[__j].second] += __n + 1;
+      for (; __j < __m; __j++)
+        __b[__sample[__j].second] -= __n + 1;
+      
+      // Further refinement.
+      while (__n > 0)
+        {
+          __n /= 2;
+
+          _SeqNumber __lmax_seq = -1;  // to avoid warning
+          const _ValueType* __lmax = 0; // impossible to avoid the warning?
+          for (_SeqNumber __i = 0; __i < __m; __i++)
+            {
+              if (__a[__i] > 0)
+                {
+                  if (!__lmax)
+                    {
+                      __lmax = &(__S(__i)[__a[__i] - 1]);
+                      __lmax_seq = __i;
+                    }
+                  else
+                    {
+                      // Max, favor rear sequences.
+                      if (!__comp(__S(__i)[__a[__i] - 1], *__lmax))
+                        {
+                          __lmax = &(__S(__i)[__a[__i] - 1]);
+                          __lmax_seq = __i;
+                        }
+                    }
+                }
+            }
+
+          _SeqNumber __i;
+          for (__i = 0; __i < __m; __i++)
+            {
+              _DifferenceType __middle = (__b[__i] + __a[__i]) / 2;
+              if (__lmax && __middle < __ns[__i] &&
+                  __lcomp(std::make_pair(__S(__i)[__middle], __i),
+                        std::make_pair(*__lmax, __lmax_seq)))
+                __a[__i] = std::min(__a[__i] + __n + 1, __ns[__i]);
+              else
+                __b[__i] -= __n + 1;
+            }
+
+          _DifferenceType __leftsize = 0;
+          for (_SeqNumber __i = 0; __i < __m; __i++)
+              __leftsize += __a[__i] / (__n + 1);
+
+          _DifferenceType __skew = __rank / (__n + 1) - __leftsize;
+
+          if (__skew > 0)
+            {
+              // Move to the left, find smallest.
+              std::priority_queue<std::pair<_ValueType, _SeqNumber>,
+                std::vector<std::pair<_ValueType, _SeqNumber> >,
+                _LexicographicReverse<_ValueType, _SeqNumber, _Compare> >
+                __pq(__lrcomp);
+              
+              for (_SeqNumber __i = 0; __i < __m; __i++)
+                if (__b[__i] < __ns[__i])
+                  __pq.push(std::make_pair(__S(__i)[__b[__i]], __i));
+
+              for (; __skew != 0 && !__pq.empty(); --__skew)
+                {
+                  _SeqNumber __source = __pq.top().second;
+                  __pq.pop();
+
+                  __a[__source]
+                      = std::min(__a[__source] + __n + 1, __ns[__source]);
+                  __b[__source] += __n + 1;
+
+                  if (__b[__source] < __ns[__source])
+                    __pq.push(
+                      std::make_pair(__S(__source)[__b[__source]], __source));
+                }
+            }
+          else if (__skew < 0)
+            {
+              // Move to the right, find greatest.
+              std::priority_queue<std::pair<_ValueType, _SeqNumber>,
+                std::vector<std::pair<_ValueType, _SeqNumber> >,
+                _Lexicographic<_ValueType, _SeqNumber, _Compare> >
+                  __pq(__lcomp);
+
+              for (_SeqNumber __i = 0; __i < __m; __i++)
+                if (__a[__i] > 0)
+                  __pq.push(std::make_pair(__S(__i)[__a[__i] - 1], __i));
+
+              for (; __skew != 0; ++__skew)
+                {
+                  _SeqNumber __source = __pq.top().second;
+                  __pq.pop();
+
+                  __a[__source] -= __n + 1;
+                  __b[__source] -= __n + 1;
+
+                  if (__a[__source] > 0)
+                    __pq.push(std::make_pair(
+                        __S(__source)[__a[__source] - 1], __source));
+                }
+            }
+        }
+
+      // Postconditions:
+      // __a[__i] == __b[__i] in most cases, except when __a[__i] has been
+      // clamped because of having reached the boundary
+
+      // Now return the result, calculate the offset.
+
+      // Compare the keys on both edges of the border.
+
+      // Maximum of left edge, minimum of right edge.
+      _ValueType* __maxleft = 0;
+      _ValueType* __minright = 0;
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        {
+          if (__a[__i] > 0)
+            {
+              if (!__maxleft)
+                __maxleft = &(__S(__i)[__a[__i] - 1]);
+              else
+                {
+                  // Max, favor rear sequences.
+                  if (!__comp(__S(__i)[__a[__i] - 1], *__maxleft))
+                    __maxleft = &(__S(__i)[__a[__i] - 1]);
+                }
+            }
+          if (__b[__i] < __ns[__i])
+            {
+              if (!__minright)
+                __minright = &(__S(__i)[__b[__i]]);
+              else
+                {
+                  // Min, favor fore sequences.
+                  if (__comp(__S(__i)[__b[__i]], *__minright))
+                    __minright = &(__S(__i)[__b[__i]]);
+                }
+            }
+        }
+
+      _SeqNumber __seq = 0;
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        __begin_offsets[__i] = __S(__i) + __a[__i];
+
+      delete[] __ns;
+      delete[] __a;
+      delete[] __b;
+    }
+
+
+  /** 
+   *  @brief Selects the element at a certain global __rank from several
+   *  sorted sequences.
+   *
+   *  The sequences are passed via a sequence of random-access
+   *  iterator pairs, none of the sequences may be empty.
+   *  @param __begin_seqs Begin of the sequence of iterator pairs.
+   *  @param __end_seqs End of the sequence of iterator pairs.
+   *  @param __rank The global rank to partition at.
+   *  @param __offset The rank of the selected element in the global
+   *  subsequence of elements equal to the selected element. If the
+   *  selected element is unique, this number is 0.
+   *  @param __comp The ordering functor, defaults to std::less. 
+   */
+  template<typename _Tp, typename _RanSeqs, typename _RankType,
+           typename _Compare>
+    _Tp
+    multiseq_selection(_RanSeqs __begin_seqs, _RanSeqs __end_seqs,
+                       _RankType __rank,
+                       _RankType& __offset, _Compare __comp = std::less<_Tp>())
+    {
+      _GLIBCXX_CALL(__end_seqs - __begin_seqs)
+
+      typedef typename std::iterator_traits<_RanSeqs>::value_type::first_type
+        _It;
+      typedef typename std::iterator_traits<_RanSeqs>::difference_type
+        _SeqNumber;
+      typedef typename std::iterator_traits<_It>::difference_type
+        _DifferenceType;
+
+      _Lexicographic<_Tp, _SeqNumber, _Compare> __lcomp(__comp);
+      _LexicographicReverse<_Tp, _SeqNumber, _Compare> __lrcomp(__comp);
+
+      // Number of sequences, number of elements in total (possibly
+      // including padding).
+      _DifferenceType __m = std::distance(__begin_seqs, __end_seqs);
+      _DifferenceType __nn = 0;
+      _DifferenceType __nmax, __n, __r;
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        __nn += std::distance(__begin_seqs[__i].first,
+			      __begin_seqs[__i].second);
+
+      if (__m == 0 || __nn == 0 || __rank < 0 || __rank >= __nn)
+        {
+          // result undefined if there is no data or __rank is outside bounds
+          throw std::exception();
+        }
+
+
+      _DifferenceType* __ns = new _DifferenceType[__m];
+      _DifferenceType* __a = new _DifferenceType[__m];
+      _DifferenceType* __b = new _DifferenceType[__m];
+      _DifferenceType __l;
+
+      __ns[0] = std::distance(__begin_seqs[0].first, __begin_seqs[0].second);
+      __nmax = __ns[0];
+      for (_SeqNumber __i = 0; __i < __m; ++__i)
+        {
+          __ns[__i] = std::distance(__begin_seqs[__i].first,
+                                    __begin_seqs[__i].second);
+          __nmax = std::max(__nmax, __ns[__i]);
+        }
+
+      __r = __rd_log2(__nmax) + 1;
+
+      // Pad all lists to this length, at least as long as any ns[__i],
+      // equality iff __nmax = 2^__k - 1
+      __l = __round_up_to_pow2(__r) - 1;
+
+      for (_SeqNumber __i = 0; __i < __m; ++__i)
+        {
+          __a[__i] = 0;
+          __b[__i] = __l;
+        }
+      __n = __l / 2;
+
+      // Invariants:
+      // 0 <= __a[__i] <= __ns[__i], 0 <= __b[__i] <= __l
+
+#define __S(__i) (__begin_seqs[__i].first)
+
+      // Initial partition.
+      std::vector<std::pair<_Tp, _SeqNumber> > __sample;
+
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        if (__n < __ns[__i])
+          __sample.push_back(std::make_pair(__S(__i)[__n], __i));
+      __gnu_sequential::sort(__sample.begin(), __sample.end(),
+                             __lcomp, sequential_tag());
+
+      // Conceptual infinity.
+      for (_SeqNumber __i = 0; __i < __m; __i++)
+        if (__n >= __ns[__i])
+          __sample.push_back(
+            std::make_pair(__S(__i)[0] /*__dummy element*/, __i));
+
+      _DifferenceType __localrank = __rank / __l;
+
+      _SeqNumber __j;
+      for (__j = 0;
+           __j < __localrank && ((__n + 1) <= __ns[__sample[__j].second]);
+           ++__j)
+        __a[__sample[__j].second] += __n + 1;
+      for (; __j < __m; ++__j)
+        __b[__sample[__j].second] -= __n + 1;
+
+      // Further refinement.
+      while (__n > 0)
+        {
+          __n /= 2;
+
+          const _Tp* __lmax = 0;
+          for (_SeqNumber __i = 0; __i < __m; ++__i)
+            {
+              if (__a[__i] > 0)
+                {
+                  if (!__lmax)
+                    __lmax = &(__S(__i)[__a[__i] - 1]);
+                  else
+                    {
+                      if (__comp(*__lmax, __S(__i)[__a[__i] - 1]))      //max
+                        __lmax = &(__S(__i)[__a[__i] - 1]);
+                    }
+                }
+            }
+
+          _SeqNumber __i;
+          for (__i = 0; __i < __m; __i++)
+            {
+              _DifferenceType __middle = (__b[__i] + __a[__i]) / 2;
+              if (__lmax && __middle < __ns[__i]
+                  && __comp(__S(__i)[__middle], *__lmax))
+                __a[__i] = std::min(__a[__i] + __n + 1, __ns[__i]);
+              else
+                __b[__i] -= __n + 1;
+            }
+
+          _DifferenceType __leftsize = 0;
+          for (_SeqNumber __i = 0; __i < __m; ++__i)
+              __leftsize += __a[__i] / (__n + 1);
+
+          _DifferenceType __skew = __rank / (__n + 1) - __leftsize;
+
+          if (__skew > 0)
+            {
+              // Move to the left, find smallest.
+              std::priority_queue<std::pair<_Tp, _SeqNumber>,
+                std::vector<std::pair<_Tp, _SeqNumber> >,
+                _LexicographicReverse<_Tp, _SeqNumber, _Compare> >
+                  __pq(__lrcomp);
+
+              for (_SeqNumber __i = 0; __i < __m; ++__i)
+                if (__b[__i] < __ns[__i])
+                  __pq.push(std::make_pair(__S(__i)[__b[__i]], __i));
+
+              for (; __skew != 0 && !__pq.empty(); --__skew)
+                {
+                  _SeqNumber __source = __pq.top().second;
+                  __pq.pop();
+
+                  __a[__source]
+                      = std::min(__a[__source] + __n + 1, __ns[__source]);
+                  __b[__source] += __n + 1;
+
+                  if (__b[__source] < __ns[__source])
+                    __pq.push(
+                      std::make_pair(__S(__source)[__b[__source]], __source));
+                }
+            }
+          else if (__skew < 0)
+            {
+              // Move to the right, find greatest.
+              std::priority_queue<std::pair<_Tp, _SeqNumber>,
+                std::vector<std::pair<_Tp, _SeqNumber> >,
+                _Lexicographic<_Tp, _SeqNumber, _Compare> > __pq(__lcomp);
+
+              for (_SeqNumber __i = 0; __i < __m; ++__i)
+                if (__a[__i] > 0)
+                  __pq.push(std::make_pair(__S(__i)[__a[__i] - 1], __i));
+
+              for (; __skew != 0; ++__skew)
+                {
+                  _SeqNumber __source = __pq.top().second;
+                  __pq.pop();
+
+                  __a[__source] -= __n + 1;
+                  __b[__source] -= __n + 1;
+
+                  if (__a[__source] > 0)
+                    __pq.push(std::make_pair(
+                        __S(__source)[__a[__source] - 1], __source));
+                }
+            }
+        }
+
+      // Postconditions:
+      // __a[__i] == __b[__i] in most cases, except when __a[__i] has been
+      // clamped because of having reached the boundary
+
+      // Now return the result, calculate the offset.
+
+      // Compare the keys on both edges of the border.
+
+      // Maximum of left edge, minimum of right edge.
+      bool __maxleftset = false, __minrightset = false;
+
+      // Impossible to avoid the warning?
+      _Tp __maxleft, __minright;
+      for (_SeqNumber __i = 0; __i < __m; ++__i)
+        {
+          if (__a[__i] > 0)
+            {
+              if (!__maxleftset)
+                {
+                  __maxleft = __S(__i)[__a[__i] - 1];
+                  __maxleftset = true;
+                }
+              else
+                {
+                  // Max.
+                  if (__comp(__maxleft, __S(__i)[__a[__i] - 1]))
+                    __maxleft = __S(__i)[__a[__i] - 1];
+                }
+            }
+          if (__b[__i] < __ns[__i])
+            {
+              if (!__minrightset)
+                {
+                  __minright = __S(__i)[__b[__i]];
+                  __minrightset = true;
+                }
+              else
+                {
+                  // Min.
+                  if (__comp(__S(__i)[__b[__i]], __minright))
+                    __minright = __S(__i)[__b[__i]];
+                }
+            }
+      }
+
+      // Minright is the __splitter, in any case.
+
+      if (!__maxleftset || __comp(__minright, __maxleft))
+        {
+          // Good luck, everything is split unambiguously.
+          __offset = 0;
+        }
+      else
+        {
+          // We have to calculate an offset.
+          __offset = 0;
+
+          for (_SeqNumber __i = 0; __i < __m; ++__i)
+            {
+              _DifferenceType lb
+                = std::lower_bound(__S(__i), __S(__i) + __ns[__i],
+                                   __minright,
+                                   __comp) - __S(__i);
+              __offset += __a[__i] - lb;
+            }
+        }
+
+      delete[] __ns;
+      delete[] __a;
+      delete[] __b;
+
+      return __minright;
+    }
+}
+
+#undef __S
+
+#endif /* _GLIBCXX_PARALLEL_MULTISEQ_SELECTION_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_merge.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_merge.h
new file mode 100644
index 000000000..00df31c13
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_merge.h
@@ -0,0 +1,2069 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/multiway_merge.h
+*  @brief Implementation of sequential and parallel multiway merge.
+*
+*  Explanations on the high-speed merging routines in the appendix of
+*
+*  P. Sanders.
+*  Fast priority queues for cached memory.
+*  ACM Journal of Experimental Algorithmics, 5, 2000.
+*
+*  This file is a GNU parallel extension to the Standard C++ Library.
+*/
+
+// Written by Johannes Singler and Manuel Holtgrewe.
+
+#ifndef _GLIBCXX_PARALLEL_MULTIWAY_MERGE_H
+#define _GLIBCXX_PARALLEL_MULTIWAY_MERGE_H
+
+#include <vector>
+
+#include <bits/stl_algo.h>
+#include <parallel/features.h>
+#include <parallel/parallel.h>
+#include <parallel/losertree.h>
+#if _GLIBCXX_ASSERTIONS
+#include <parallel/checkers.h>
+#endif
+
+/** @brief Length of a sequence described by a pair of iterators. */
+#define _GLIBCXX_PARALLEL_LENGTH(__s) ((__s).second - (__s).first)
+
+namespace __gnu_parallel
+{
+  /** @brief _Iterator wrapper supporting an implicit supremum at the end
+   *         of the sequence, dominating all comparisons.
+   *
+   * The implicit supremum comes with a performance cost.
+   *
+   * Deriving from _RAIter is not possible since
+   * _RAIter need not be a class.
+   */
+  template<typename _RAIter, typename _Compare>
+    class _GuardedIterator
+    {
+    private:
+      /** @brief Current iterator __position. */
+      _RAIter _M_current;
+
+      /** @brief End iterator of the sequence. */
+      _RAIter _M_end;
+
+      /** @brief _Compare. */
+      _Compare& __comp;
+
+    public:
+      /** @brief Constructor. Sets iterator to beginning of sequence.
+      *  @param __begin Begin iterator of sequence.
+      *  @param __end End iterator of sequence.
+      *  @param __comp Comparator provided for associated overloaded
+      *  compare operators. */
+      _GuardedIterator(_RAIter __begin, _RAIter __end, _Compare& __comp)
+      : _M_current(__begin), _M_end(__end), __comp(__comp)
+      { }
+
+      /** @brief Pre-increment operator.
+      *  @return This. */
+      _GuardedIterator<_RAIter, _Compare>&
+      operator++()
+      {
+	++_M_current;
+	return *this;
+      }
+
+      /** @brief Dereference operator.
+      *  @return Referenced element. */
+      typename std::iterator_traits<_RAIter>::value_type&
+      operator*()
+      { return *_M_current; }
+
+      /** @brief Convert to wrapped iterator.
+      *  @return Wrapped iterator. */
+      operator _RAIter()
+      { return _M_current; }
+
+      /** @brief Compare two elements referenced by guarded iterators.
+       *  @param __bi1 First iterator.
+       *  @param __bi2 Second iterator.
+       *  @return @c true if less. */
+      friend bool
+      operator<(_GuardedIterator<_RAIter, _Compare>& __bi1,
+		_GuardedIterator<_RAIter, _Compare>& __bi2)
+      {
+	if (__bi1._M_current == __bi1._M_end)       // __bi1 is sup
+	  return __bi2._M_current == __bi2._M_end;  // __bi2 is not sup
+	if (__bi2._M_current == __bi2._M_end)       // __bi2 is sup
+	  return true;
+	return (__bi1.__comp)(*__bi1, *__bi2);      // normal compare
+      }
+
+      /** @brief Compare two elements referenced by guarded iterators.
+       *  @param __bi1 First iterator.
+       *  @param __bi2 Second iterator.
+       *  @return @c True if less equal. */
+      friend bool
+      operator<=(_GuardedIterator<_RAIter, _Compare>& __bi1,
+		 _GuardedIterator<_RAIter, _Compare>& __bi2)
+      {
+	if (__bi2._M_current == __bi2._M_end)       // __bi1 is sup
+	  return __bi1._M_current != __bi1._M_end;  // __bi2 is not sup
+	if (__bi1._M_current == __bi1._M_end)       // __bi2 is sup
+	  return false;
+	return !(__bi1.__comp)(*__bi2, *__bi1);     // normal compare
+      } 
+    };
+
+  template<typename _RAIter, typename _Compare>
+    class _UnguardedIterator
+    {
+    private:
+      /** @brief Current iterator __position. */
+      _RAIter _M_current;
+      /** @brief _Compare. */
+      _Compare& __comp;
+
+    public:
+      /** @brief Constructor. Sets iterator to beginning of sequence.
+      *  @param __begin Begin iterator of sequence.
+      *  @param __end Unused, only for compatibility.
+      *  @param __comp Unused, only for compatibility. */
+      _UnguardedIterator(_RAIter __begin,
+                	 _RAIter /* __end */, _Compare& __comp)
+      : _M_current(__begin), __comp(__comp)
+      { }
+
+      /** @brief Pre-increment operator.
+      *  @return This. */
+      _UnguardedIterator<_RAIter, _Compare>&
+      operator++()
+      {
+	++_M_current;
+	return *this;
+      }
+
+      /** @brief Dereference operator.
+      *  @return Referenced element. */
+      typename std::iterator_traits<_RAIter>::value_type&
+      operator*()
+      { return *_M_current; }
+
+      /** @brief Convert to wrapped iterator.
+      *  @return Wrapped iterator. */
+      operator _RAIter()
+      { return _M_current; }
+
+      /** @brief Compare two elements referenced by unguarded iterators.
+       *  @param __bi1 First iterator.
+       *  @param __bi2 Second iterator.
+       *  @return @c true if less. */
+      friend bool
+      operator<(_UnguardedIterator<_RAIter, _Compare>& __bi1,
+		_UnguardedIterator<_RAIter, _Compare>& __bi2)
+      {
+	// Normal compare.
+	return (__bi1.__comp)(*__bi1, *__bi2);
+      }
+
+      /** @brief Compare two elements referenced by unguarded iterators.
+       *  @param __bi1 First iterator.
+       *  @param __bi2 Second iterator.
+       *  @return @c True if less equal. */
+      friend bool
+      operator<=(_UnguardedIterator<_RAIter, _Compare>& __bi1,
+		 _UnguardedIterator<_RAIter, _Compare>& __bi2)
+      {
+	// Normal compare.
+	return !(__bi1.__comp)(*__bi2, *__bi1);
+      }
+    };
+
+  /** @brief Highly efficient 3-way merging procedure.
+   *
+   * Merging is done with the algorithm implementation described by Peter
+   * Sanders.  Basically, the idea is to minimize the number of necessary
+   * comparison after merging an element.  The implementation trick
+   * that makes this fast is that the order of the sequences is stored
+   * in the instruction pointer (translated into labels in C++).
+   *
+   * This works well for merging up to 4 sequences.
+   *
+   * Note that making the merging stable does @a not come at a
+   * performance hit.
+   *
+   * Whether the merging is done guarded or unguarded is selected by the
+   * used iterator class.
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, less equal than the
+   * total number of elements available.
+   *
+   * @return End iterator of output sequence.
+   */
+  template<template<typename RAI, typename C> class iterator,
+           typename _RAIterIterator,
+           typename _RAIter3,
+           typename _DifferenceTp,
+           typename _Compare>
+    _RAIter3
+    multiway_merge_3_variant(_RAIterIterator __seqs_begin,
+			     _RAIterIterator __seqs_end,
+			     _RAIter3 __target,
+			     _DifferenceTp __length, _Compare __comp)
+    {
+      _GLIBCXX_CALL(__length);
+
+      typedef _DifferenceTp _DifferenceType;
+
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      if (__length == 0)
+	return __target;
+
+#if _GLIBCXX_ASSERTIONS
+      _DifferenceTp __orig_length = __length;
+#endif
+
+      iterator<_RAIter1, _Compare>
+	__seq0(__seqs_begin[0].first, __seqs_begin[0].second, __comp),
+	__seq1(__seqs_begin[1].first, __seqs_begin[1].second, __comp),
+	__seq2(__seqs_begin[2].first, __seqs_begin[2].second, __comp);
+
+      if (__seq0 <= __seq1)
+	{
+          if (__seq1 <= __seq2)
+            goto __s012;
+          else
+            if (__seq2 <  __seq0)
+              goto __s201;
+            else
+              goto __s021;
+	}
+      else
+	{
+          if (__seq1 <= __seq2)
+            {
+              if (__seq0 <= __seq2)
+        	goto __s102;
+              else
+        	goto __s120;
+            }
+          else
+            goto __s210;
+	}
+#define _GLIBCXX_PARALLEL_MERGE_3_CASE(__a, __b, __c, __c0, __c1) \
+      __s ## __a ## __b ## __c :                            \
+	*__target = *__seq ## __a;                          \
+	++__target;                                         \
+	--__length;                                         \
+	++__seq ## __a;                                     \
+	if (__length == 0) goto __finish;                   \
+	if (__seq ## __a __c0 __seq ## __b) goto __s ## __a ## __b ## __c; \
+	if (__seq ## __a __c1 __seq ## __c) goto __s ## __b ## __a ## __c; \
+	goto __s ## __b ## __c ## __a;
+
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(0, 1, 2, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(1, 2, 0, <=, < );
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(2, 0, 1, < , < );
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(1, 0, 2, < , <=);
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(0, 2, 1, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_3_CASE(2, 1, 0, < , < );
+
+#undef _GLIBCXX_PARALLEL_MERGE_3_CASE
+
+    __finish:
+      ;
+
+#if _GLIBCXX_ASSERTIONS
+    _GLIBCXX_PARALLEL_ASSERT(
+	((_RAIter1)__seq0 - __seqs_begin[0].first) +
+	((_RAIter1)__seq1 - __seqs_begin[1].first) +
+	((_RAIter1)__seq2 - __seqs_begin[2].first)
+	== __orig_length);
+#endif
+
+      __seqs_begin[0].first = __seq0;
+      __seqs_begin[1].first = __seq1;
+      __seqs_begin[2].first = __seq2;
+
+      return __target;
+    }
+
+  /**
+   * @brief Highly efficient 4-way merging procedure.
+   *
+   * Merging is done with the algorithm implementation described by Peter
+   * Sanders. Basically, the idea is to minimize the number of necessary
+   * comparison after merging an element.  The implementation trick
+   * that makes this fast is that the order of the sequences is stored
+   * in the instruction pointer (translated into goto labels in C++).
+   *
+   * This works well for merging up to 4 sequences.
+   *
+   * Note that making the merging stable does @a not come at a
+   * performance hit.
+   *
+   * Whether the merging is done guarded or unguarded is selected by the
+   * used iterator class.
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, less equal than the
+   * total number of elements available.
+   *
+   * @return End iterator of output sequence.
+   */
+  template<template<typename RAI, typename C> class iterator,
+           typename _RAIterIterator,
+           typename _RAIter3,
+           typename _DifferenceTp,
+           typename _Compare>
+    _RAIter3
+    multiway_merge_4_variant(_RAIterIterator __seqs_begin,
+                             _RAIterIterator __seqs_end,
+                             _RAIter3 __target,
+                             _DifferenceTp __length, _Compare __comp)
+    {
+      _GLIBCXX_CALL(__length);
+      typedef _DifferenceTp _DifferenceType;
+
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      iterator<_RAIter1, _Compare>
+	__seq0(__seqs_begin[0].first, __seqs_begin[0].second, __comp),
+	__seq1(__seqs_begin[1].first, __seqs_begin[1].second, __comp),
+	__seq2(__seqs_begin[2].first, __seqs_begin[2].second, __comp),
+	__seq3(__seqs_begin[3].first, __seqs_begin[3].second, __comp);
+
+#define _GLIBCXX_PARALLEL_DECISION(__a, __b, __c, __d) {  \
+	if (__seq ## __d < __seq ## __a)		  \
+	  goto __s ## __d ## __a ## __b ## __c;		  \
+	if (__seq ## __d < __seq ## __b)		  \
+	  goto __s ## __a ## __d ## __b ## __c;		  \
+	if (__seq ## __d < __seq ## __c)		  \
+	  goto __s ## __a ## __b ## __d ## __c;		  \
+	goto __s ## __a ## __b ## __c ## __d;  }
+
+      if (__seq0 <= __seq1)
+	{
+          if (__seq1 <= __seq2)
+            _GLIBCXX_PARALLEL_DECISION(0,1,2,3)
+            else
+              if (__seq2 < __seq0)
+        	_GLIBCXX_PARALLEL_DECISION(2,0,1,3)
+        	else
+                  _GLIBCXX_PARALLEL_DECISION(0,2,1,3)
+                    }
+      else
+	{
+          if (__seq1 <= __seq2)
+            {
+              if (__seq0 <= __seq2)
+        	_GLIBCXX_PARALLEL_DECISION(1,0,2,3)
+        	else
+                  _GLIBCXX_PARALLEL_DECISION(1,2,0,3)
+                    }
+          else
+            _GLIBCXX_PARALLEL_DECISION(2,1,0,3)
+              }
+
+#define _GLIBCXX_PARALLEL_MERGE_4_CASE(__a, __b, __c, __d,  \
+				       __c0, __c1, __c2)    \
+      __s ## __a ## __b ## __c ## __d:                      \
+      if (__length == 0) goto __finish;                     \
+      *__target = *__seq ## __a;                            \
+      ++__target;                                           \
+      --__length;                                           \
+      ++__seq ## __a;                                       \
+      if (__seq ## __a __c0 __seq ## __b)      \
+	goto __s ## __a ## __b ## __c ## __d;  \
+      if (__seq ## __a __c1 __seq ## __c)      \
+	goto __s ## __b ## __a ## __c ## __d;  \
+      if (__seq ## __a __c2 __seq ## __d)      \
+	goto __s ## __b ## __c ## __a ## __d;  \
+      goto __s ## __b ## __c ## __d ## __a;
+
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 1, 2, 3, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 1, 3, 2, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 2, 1, 3, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 2, 3, 1, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 3, 1, 2, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(0, 3, 2, 1, <=, <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 0, 2, 3, < , <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 0, 3, 2, < , <=, <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 2, 0, 3, <=, < , <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 2, 3, 0, <=, <=, < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 3, 0, 2, <=, < , <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(1, 3, 2, 0, <=, <=, < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 0, 1, 3, < , < , <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 0, 3, 1, < , <=, < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 1, 0, 3, < , < , <=);
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 1, 3, 0, < , <=, < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 3, 0, 1, <=, < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(2, 3, 1, 0, <=, < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 0, 1, 2, < , < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 0, 2, 1, < , < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 1, 0, 2, < , < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 1, 2, 0, < , < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 2, 0, 1, < , < , < );
+      _GLIBCXX_PARALLEL_MERGE_4_CASE(3, 2, 1, 0, < , < , < );
+
+#undef _GLIBCXX_PARALLEL_MERGE_4_CASE
+#undef _GLIBCXX_PARALLEL_DECISION
+
+    __finish:
+      ;
+
+      __seqs_begin[0].first = __seq0;
+      __seqs_begin[1].first = __seq1;
+      __seqs_begin[2].first = __seq2;
+      __seqs_begin[3].first = __seq3;
+
+      return __target;
+    }
+
+  /** @brief Multi-way merging procedure for a high branching factor,
+   *         guarded case.
+   *
+   * This merging variant uses a LoserTree class as selected by <tt>_LT</tt>.
+   *
+   * Stability is selected through the used LoserTree class <tt>_LT</tt>.
+   *
+   * At least one non-empty sequence is required.
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, less equal than the
+   * total number of elements available.
+   *
+   * @return End iterator of output sequence.
+   */
+  template<typename _LT,
+           typename _RAIterIterator,
+           typename _RAIter3,
+           typename _DifferenceTp,
+           typename _Compare>
+    _RAIter3
+    multiway_merge_loser_tree(_RAIterIterator __seqs_begin,
+                              _RAIterIterator __seqs_end,
+                              _RAIter3 __target,
+                              _DifferenceTp __length, _Compare __comp)
+    {
+      _GLIBCXX_CALL(__length)
+
+      typedef _DifferenceTp _DifferenceType;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::difference_type _SeqNumber;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      _SeqNumber __k = static_cast<_SeqNumber>(__seqs_end - __seqs_begin);
+
+      _LT __lt(__k, __comp);
+
+      // Default value for potentially non-default-constructible types.
+      _ValueType* __arbitrary_element = 0;
+
+      for (_SeqNumber __t = 0; __t < __k; ++__t)
+	{
+          if(!__arbitrary_element
+	     && _GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__t]) > 0)
+            __arbitrary_element = &(*__seqs_begin[__t].first);
+	}
+
+      for (_SeqNumber __t = 0; __t < __k; ++__t)
+	{
+          if (__seqs_begin[__t].first == __seqs_begin[__t].second)
+            __lt.__insert_start(*__arbitrary_element, __t, true);
+          else
+            __lt.__insert_start(*__seqs_begin[__t].first, __t, false);
+	}
+
+      __lt.__init();
+
+      _SeqNumber __source;
+
+      for (_DifferenceType __i = 0; __i < __length; ++__i)
+	{
+          //take out
+          __source = __lt.__get_min_source();
+
+          *(__target++) = *(__seqs_begin[__source].first++);
+
+          // Feed.
+          if (__seqs_begin[__source].first == __seqs_begin[__source].second)
+            __lt.__delete_min_insert(*__arbitrary_element, true);
+          else
+            // Replace from same __source.
+            __lt.__delete_min_insert(*__seqs_begin[__source].first, false);
+	}
+
+      return __target;
+    }
+
+  /** @brief Multi-way merging procedure for a high branching factor,
+   *         unguarded case.
+   *
+   * Merging is done using the LoserTree class <tt>_LT</tt>.
+   *
+   * Stability is selected by the used LoserTrees.
+   *
+   * @pre No input will run out of elements during the merge.
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, less equal than the
+   * total number of elements available.
+   *
+   * @return End iterator of output sequence.
+   */
+  template<typename _LT,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp, typename _Compare>
+    _RAIter3
+    multiway_merge_loser_tree_unguarded(_RAIterIterator __seqs_begin,
+					_RAIterIterator __seqs_end,
+					_RAIter3 __target,
+       const typename std::iterator_traits<typename std::iterator_traits<
+	  _RAIterIterator>::value_type::first_type>::value_type&
+					__sentinel,
+					_DifferenceTp __length,
+					_Compare __comp)
+    {
+      _GLIBCXX_CALL(__length)
+      typedef _DifferenceTp _DifferenceType;
+
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::difference_type _SeqNumber;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      _SeqNumber __k = __seqs_end - __seqs_begin;
+
+      _LT __lt(__k, __sentinel, __comp);
+
+      for (_SeqNumber __t = 0; __t < __k; ++__t)
+	{
+#if _GLIBCXX_ASSERTIONS
+          _GLIBCXX_PARALLEL_ASSERT(__seqs_begin[__t].first
+                                   != __seqs_begin[__t].second);
+#endif
+          __lt.__insert_start(*__seqs_begin[__t].first, __t, false);
+	}
+
+      __lt.__init();
+
+      _SeqNumber __source;
+
+#if _GLIBCXX_ASSERTIONS
+      _DifferenceType __i = 0;
+#endif
+
+      _RAIter3 __target_end = __target + __length;
+      while (__target < __target_end)
+	{
+          // Take out.
+          __source = __lt.__get_min_source();
+
+#if _GLIBCXX_ASSERTIONS
+          _GLIBCXX_PARALLEL_ASSERT(0 <= __source && __source < __k);
+          _GLIBCXX_PARALLEL_ASSERT(__i == 0
+              || !__comp(*(__seqs_begin[__source].first), *(__target - 1)));
+#endif
+
+          // Feed.
+          *(__target++) = *(__seqs_begin[__source].first++);
+
+#if _GLIBCXX_ASSERTIONS
+          ++__i;
+#endif
+          // Replace from same __source.
+          __lt.__delete_min_insert(*__seqs_begin[__source].first, false);
+	}
+
+      return __target;
+    }
+
+
+  /** @brief Multi-way merging procedure for a high branching factor,
+   *         requiring sentinels to exist.
+   *
+   * @param __stable The value must the same as for the used LoserTrees.
+   * @param UnguardedLoserTree _Loser Tree variant to use for the unguarded
+   *   merging.
+   * @param GuardedLoserTree _Loser Tree variant to use for the guarded
+   *   merging.
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, less equal than the
+   * total number of elements available.
+   *
+   * @return End iterator of output sequence.
+   */
+  template<typename UnguardedLoserTree,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIter3
+    multiway_merge_loser_tree_sentinel(_RAIterIterator __seqs_begin,
+				       _RAIterIterator __seqs_end,
+				       _RAIter3 __target,
+      const typename std::iterator_traits<typename std::iterator_traits<
+	_RAIterIterator>::value_type::first_type>::value_type&
+				       __sentinel,
+				       _DifferenceTp __length,
+				       _Compare __comp)
+    {
+      _GLIBCXX_CALL(__length)
+
+      typedef _DifferenceTp _DifferenceType;
+      typedef std::iterator_traits<_RAIterIterator> _TraitsType;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      _RAIter3 __target_end;
+
+      for (_RAIterIterator __s = __seqs_begin; __s != __seqs_end; ++__s)
+	// Move the sequence ends to the sentinel.  This has the
+	// effect that the sentinel appears to be within the sequence. Then,
+	// we can use the unguarded variant if we merge out as many
+	// non-sentinel elements as we have.
+	++((*__s).second);
+
+      __target_end = multiway_merge_loser_tree_unguarded<UnguardedLoserTree>
+	(__seqs_begin, __seqs_end, __target, __sentinel, __length, __comp);
+
+#if _GLIBCXX_ASSERTIONS
+      _GLIBCXX_PARALLEL_ASSERT(__target_end == __target + __length);
+      _GLIBCXX_PARALLEL_ASSERT(__is_sorted(__target, __target_end, __comp));
+#endif
+
+      // Restore the sequence ends so the sentinels are not contained in the
+      // sequence any more (see comment in loop above).
+      for (_RAIterIterator __s = __seqs_begin; __s != __seqs_end; ++__s)
+	--((*__s).second);
+
+      return __target_end;
+    }
+
+  /**
+   * @brief Traits for determining whether the loser tree should
+   *   use pointers or copies.
+   *
+   * The field "_M_use_pointer" is used to determine whether to use pointers
+   * in he loser trees or whether to copy the values into the loser tree.
+   *
+   * The default behavior is to use pointers if the data type is 4 times as
+   * big as the pointer to it.
+   *
+   * Specialize for your data type to customize the behavior.
+   *
+   * Example:
+   *
+   *   template<>
+   *   struct _LoserTreeTraits<int>
+   *   { static const bool _M_use_pointer = false; };
+   *
+   *   template<>
+   *   struct _LoserTreeTraits<heavyweight_type>
+   *   { static const bool _M_use_pointer = true; };
+   *
+   * @param _Tp type to give the loser tree traits for.
+   */
+  template <typename _Tp>
+    struct _LoserTreeTraits
+    {
+      /**
+       * @brief True iff to use pointers instead of values in loser trees.
+       *
+       * The default behavior is to use pointers if the data type is four
+       * times as big as the pointer to it.
+       */
+      static const bool _M_use_pointer = (sizeof(_Tp) > 4 * sizeof(_Tp*));
+    };
+
+  /**
+   * @brief Switch for 3-way merging with __sentinels turned off.
+   *
+   * Note that 3-way merging is always stable!
+   */
+  template<bool __sentinels /*default == false*/,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_3_variant_sentinel_switch
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+		 _DifferenceTp __length, _Compare __comp)
+      { return multiway_merge_3_variant<_GuardedIterator>
+	  (__seqs_begin, __seqs_end, __target, __length, __comp); }
+    };
+
+  /**
+   * @brief Switch for 3-way merging with __sentinels turned on.
+   *
+   * Note that 3-way merging is always stable!
+   */
+  template<typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_3_variant_sentinel_switch<true, _RAIterIterator,
+						      _RAIter3, _DifferenceTp,
+						      _Compare>
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+		 _DifferenceTp __length, _Compare __comp)
+      { return multiway_merge_3_variant<_UnguardedIterator>
+	  (__seqs_begin, __seqs_end, __target, __length, __comp); }
+    };
+
+  /**
+   * @brief Switch for 4-way merging with __sentinels turned off.
+   *
+   * Note that 4-way merging is always stable!
+   */
+  template<bool __sentinels /*default == false*/,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_4_variant_sentinel_switch
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+		 _DifferenceTp __length, _Compare __comp)
+      { return multiway_merge_4_variant<_GuardedIterator>
+	  (__seqs_begin, __seqs_end, __target, __length, __comp); }
+    };
+
+  /**
+   * @brief Switch for 4-way merging with __sentinels turned on.
+   *
+   * Note that 4-way merging is always stable!
+   */
+  template<typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_4_variant_sentinel_switch<true, _RAIterIterator,
+						      _RAIter3, _DifferenceTp,
+						      _Compare>
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+		 _DifferenceTp __length, _Compare __comp)
+      { return multiway_merge_4_variant<_UnguardedIterator>
+	  (__seqs_begin, __seqs_end, __target, __length, __comp); }
+    };
+
+  /**
+   * @brief Switch for k-way merging with __sentinels turned on.
+   */
+  template<bool __sentinels,
+	   bool __stable,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_k_variant_sentinel_switch
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+      const typename std::iterator_traits<typename std::iterator_traits<
+      _RAIterIterator>::value_type::first_type>::value_type&
+		 __sentinel,
+		 _DifferenceTp __length, _Compare __comp)
+      {
+	typedef typename std::iterator_traits<_RAIterIterator>
+	  ::value_type::first_type
+	  _RAIter1;
+	typedef typename std::iterator_traits<_RAIter1>::value_type
+	  _ValueType;
+
+	return multiway_merge_loser_tree_sentinel<
+	typename __gnu_cxx::__conditional_type<
+	_LoserTreeTraits<_ValueType>::_M_use_pointer,
+	  _LoserTreePointerUnguarded<__stable, _ValueType, _Compare>,
+	  _LoserTreeUnguarded<__stable, _ValueType, _Compare>
+          >::__type>
+	  (__seqs_begin, __seqs_end, __target, __sentinel, __length, __comp);
+      }
+    };
+
+  /**
+   * @brief Switch for k-way merging with __sentinels turned off.
+   */
+  template<bool __stable,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    struct __multiway_merge_k_variant_sentinel_switch<false, __stable,
+						      _RAIterIterator,
+						      _RAIter3, _DifferenceTp,
+						      _Compare>
+    {
+      _RAIter3
+      operator()(_RAIterIterator __seqs_begin,
+		 _RAIterIterator __seqs_end,
+		 _RAIter3 __target,
+       const typename std::iterator_traits<typename std::iterator_traits<
+       _RAIterIterator>::value_type::first_type>::value_type&
+		 __sentinel,
+		 _DifferenceTp __length, _Compare __comp)
+      {
+	typedef typename std::iterator_traits<_RAIterIterator>
+	  ::value_type::first_type
+	  _RAIter1;
+	typedef typename std::iterator_traits<_RAIter1>::value_type
+	  _ValueType;
+
+	return multiway_merge_loser_tree<
+	typename __gnu_cxx::__conditional_type<
+	_LoserTreeTraits<_ValueType>::_M_use_pointer,
+	  _LoserTreePointer<__stable, _ValueType, _Compare>,
+	  _LoserTree<__stable, _ValueType, _Compare>
+          >::__type >(__seqs_begin, __seqs_end, __target, __length, __comp);
+      }
+    };
+
+  /** @brief Sequential multi-way merging switch.
+   *
+   *  The _GLIBCXX_PARALLEL_DECISION is based on the branching factor and
+   *  runtime settings.
+   *  @param __seqs_begin Begin iterator of iterator pair input sequence.
+   *  @param __seqs_end End iterator of iterator pair input sequence.
+   *  @param __target Begin iterator of output sequence.
+   *  @param __comp Comparator.
+   *  @param __length Maximum length to merge, possibly larger than the
+   *  number of elements available.
+   *  @param __stable Stable merging incurs a performance penalty.
+   *  @param __sentinel The sequences have __a __sentinel element.
+   *  @return End iterator of output sequence. */
+  template<bool __stable,
+	   bool __sentinels,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIter3
+    __sequential_multiway_merge(_RAIterIterator __seqs_begin,
+				_RAIterIterator __seqs_end,
+				_RAIter3 __target,
+      const typename std::iterator_traits<typename std::iterator_traits<
+	_RAIterIterator>::value_type::first_type>::value_type&
+				__sentinel,
+				_DifferenceTp __length, _Compare __comp)
+    {
+      _GLIBCXX_CALL(__length)
+
+      typedef _DifferenceTp _DifferenceType;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::difference_type _SeqNumber;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+#if _GLIBCXX_ASSERTIONS
+      for (_RAIterIterator __s = __seqs_begin; __s != __seqs_end; ++__s)
+	{
+          _GLIBCXX_PARALLEL_ASSERT(__is_sorted((*__s).first,
+					       (*__s).second, __comp));
+	}
+#endif
+
+      _DifferenceTp __total_length = 0;
+      for (_RAIterIterator __s = __seqs_begin; __s != __seqs_end; ++__s)
+	__total_length += _GLIBCXX_PARALLEL_LENGTH(*__s);
+
+      __length = std::min<_DifferenceTp>(__length, __total_length);
+
+      if(__length == 0)
+	return __target;
+
+      _RAIter3 __return_target = __target;
+      _SeqNumber __k = static_cast<_SeqNumber>(__seqs_end - __seqs_begin);
+
+      switch (__k)
+	{
+	case 0:
+          break;
+	case 1:
+          __return_target = std::copy(__seqs_begin[0].first,
+				      __seqs_begin[0].first + __length,
+				      __target);
+          __seqs_begin[0].first += __length;
+          break;
+	case 2:
+          __return_target = __merge_advance(__seqs_begin[0].first,
+					    __seqs_begin[0].second,
+					    __seqs_begin[1].first,
+					    __seqs_begin[1].second,
+					    __target, __length, __comp);
+          break;
+	case 3:
+          __return_target = __multiway_merge_3_variant_sentinel_switch
+	    <__sentinels, _RAIterIterator, _RAIter3, _DifferenceTp, _Compare>()
+	    (__seqs_begin, __seqs_end, __target, __length, __comp);
+          break;
+	case 4:
+          __return_target = __multiway_merge_4_variant_sentinel_switch
+	    <__sentinels, _RAIterIterator, _RAIter3, _DifferenceTp, _Compare>()
+	    (__seqs_begin, __seqs_end, __target, __length, __comp);
+          break;
+	default:
+	  __return_target = __multiway_merge_k_variant_sentinel_switch
+	    <__sentinels, __stable, _RAIterIterator, _RAIter3, _DifferenceTp,
+	     _Compare>()
+	    (__seqs_begin, __seqs_end, __target, __sentinel, __length, __comp);
+	  break;
+	}
+#if _GLIBCXX_ASSERTIONS
+      _GLIBCXX_PARALLEL_ASSERT(
+	__is_sorted(__target, __target + __length, __comp));
+#endif
+
+      return __return_target;
+    }
+
+  /**
+   * @brief Stable sorting functor.
+   *
+   * Used to reduce code instanciation in multiway_merge_sampling_splitting.
+   */
+  template<bool __stable, class _RAIter, class _StrictWeakOrdering>
+    struct _SamplingSorter
+    {
+      void
+      operator()(_RAIter __first, _RAIter __last, _StrictWeakOrdering __comp)
+      { __gnu_sequential::stable_sort(__first, __last, __comp); }
+    };
+
+  /**
+   * @brief Non-__stable sorting functor.
+   *
+   * Used to reduce code instantiation in multiway_merge_sampling_splitting.
+   */
+  template<class _RAIter, class _StrictWeakOrdering>
+    struct _SamplingSorter<false, _RAIter, _StrictWeakOrdering>
+    {
+      void
+      operator()(_RAIter __first, _RAIter __last, _StrictWeakOrdering __comp)
+      { __gnu_sequential::sort(__first, __last, __comp); }
+    };
+
+  /**
+   * @brief Sampling based splitting for parallel multiway-merge routine.
+   */
+  template<bool __stable,
+	   typename _RAIterIterator,
+	   typename _Compare,
+	   typename _DifferenceType>
+    void
+    multiway_merge_sampling_splitting(_RAIterIterator __seqs_begin,
+				      _RAIterIterator __seqs_end,
+				      _DifferenceType __length,
+				      _DifferenceType __total_length,
+				      _Compare __comp,
+     std::vector<std::pair<_DifferenceType, _DifferenceType> > *__pieces)
+    {
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::difference_type _SeqNumber;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+      typedef typename std::iterator_traits<_RAIter1>::value_type
+	_ValueType;
+
+      // __k sequences.
+      const _SeqNumber __k
+	= static_cast<_SeqNumber>(__seqs_end - __seqs_begin);
+
+      const _ThreadIndex __num_threads = omp_get_num_threads();
+
+      const _DifferenceType __num_samples =
+	__gnu_parallel::_Settings::get().merge_oversampling * __num_threads;
+
+      _ValueType* __samples = static_cast<_ValueType*>
+	(::operator new(sizeof(_ValueType) * __k * __num_samples));
+      // Sample.
+      for (_SeqNumber __s = 0; __s < __k; ++__s)
+	for (_DifferenceType __i = 0; __i < __num_samples; ++__i)
+	  {
+	    _DifferenceType sample_index = static_cast<_DifferenceType>
+	      (_GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__s])
+	       * (double(__i + 1) / (__num_samples + 1))
+	       * (double(__length) / __total_length));
+	    new(&(__samples[__s * __num_samples + __i]))
+              _ValueType(__seqs_begin[__s].first[sample_index]);
+	  }
+
+      // Sort stable or non-stable, depending on value of template parameter
+      // "__stable".
+      _SamplingSorter<__stable, _ValueType*, _Compare>()
+	(__samples, __samples + (__num_samples * __k), __comp);
+
+      for (_ThreadIndex __slab = 0; __slab < __num_threads; ++__slab)
+	// For each slab / processor.
+	for (_SeqNumber __seq = 0; __seq < __k; ++__seq)
+	  {
+	    // For each sequence.
+	    if (__slab > 0)
+	      __pieces[__slab][__seq].first = std::upper_bound
+		(__seqs_begin[__seq].first, __seqs_begin[__seq].second,
+		 __samples[__num_samples * __k * __slab / __num_threads],
+		 __comp)
+		- __seqs_begin[__seq].first;
+	    else
+	      // Absolute beginning.
+	      __pieces[__slab][__seq].first = 0;
+	    if ((__slab + 1) < __num_threads)
+	      __pieces[__slab][__seq].second = std::upper_bound
+		(__seqs_begin[__seq].first, __seqs_begin[__seq].second,
+		 __samples[__num_samples * __k * (__slab + 1) / __num_threads],
+		 __comp)
+		- __seqs_begin[__seq].first;
+	    else
+              // Absolute end.
+	      __pieces[__slab][__seq].second =
+		_GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__seq]);
+	  }
+
+      for (_SeqNumber __s = 0; __s < __k; ++__s)
+	for (_DifferenceType __i = 0; __i < __num_samples; ++__i)
+	  __samples[__s * __num_samples + __i].~_ValueType();
+      ::operator delete(__samples);
+    }
+
+  /**
+   * @brief Exact splitting for parallel multiway-merge routine.
+   *
+   * None of the passed sequences may be empty.
+   */
+  template<bool __stable,
+	   typename _RAIterIterator,
+	   typename _Compare,
+	   typename _DifferenceType>
+    void
+    multiway_merge_exact_splitting(_RAIterIterator __seqs_begin,
+				   _RAIterIterator __seqs_end,
+				   _DifferenceType __length,
+				   _DifferenceType __total_length,
+				   _Compare __comp,
+       std::vector<std::pair<_DifferenceType, _DifferenceType> > *__pieces)
+    {
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::difference_type _SeqNumber;
+      typedef typename std::iterator_traits<_RAIterIterator>
+	::value_type::first_type
+	_RAIter1;
+
+      const bool __tight = (__total_length == __length);
+
+      // __k sequences.
+      const _SeqNumber __k = __seqs_end - __seqs_begin;
+
+      const _ThreadIndex __num_threads = omp_get_num_threads();
+
+      // (Settings::multiway_merge_splitting
+      //  == __gnu_parallel::_Settings::EXACT).
+      std::vector<_RAIter1>* __offsets = 
+	new std::vector<_RAIter1>[__num_threads];
+      std::vector<std::pair<_RAIter1, _RAIter1> > __se(__k);
+
+      copy(__seqs_begin, __seqs_end, __se.begin());
+
+      _DifferenceType* __borders =
+	new _DifferenceType[__num_threads + 1];
+      equally_split(__length, __num_threads, __borders);
+
+      for (_ThreadIndex __s = 0; __s < (__num_threads - 1); ++__s)
+	{
+	  __offsets[__s].resize(__k);
+	  multiseq_partition(__se.begin(), __se.end(), __borders[__s + 1],
+			     __offsets[__s].begin(), __comp);
+
+	  // Last one also needed and available.
+	  if (!__tight)
+	    {
+	      __offsets[__num_threads - 1].resize(__k);
+	      multiseq_partition(__se.begin(), __se.end(),
+				 _DifferenceType(__length),
+				 __offsets[__num_threads - 1].begin(),
+				 __comp);
+	    }
+	}
+      delete[] __borders;
+
+      for (_ThreadIndex __slab = 0; __slab < __num_threads; ++__slab)
+	{
+	  // For each slab / processor.
+	  for (_SeqNumber __seq = 0; __seq < __k; ++__seq)
+	    {
+	      // For each sequence.
+	      if (__slab == 0)
+		{
+		  // Absolute beginning.
+		  __pieces[__slab][__seq].first = 0;
+		}
+	      else
+		__pieces[__slab][__seq].first =
+		  __pieces[__slab - 1][__seq].second;
+	      if (!__tight || __slab < (__num_threads - 1))
+		__pieces[__slab][__seq].second =
+		  __offsets[__slab][__seq] - __seqs_begin[__seq].first;
+	      else
+		{
+		  // __slab == __num_threads - 1
+		  __pieces[__slab][__seq].second =
+                    _GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__seq]);
+		}
+	    }
+	}
+      delete[] __offsets;
+    }
+
+  /** @brief Parallel multi-way merge routine.
+   *
+   * The _GLIBCXX_PARALLEL_DECISION is based on the branching factor
+   * and runtime settings.
+   *
+   * Must not be called if the number of sequences is 1.
+   *
+   * @param _Splitter functor to split input (either __exact or sampling based)
+   *
+   * @param __seqs_begin Begin iterator of iterator pair input sequence.
+   * @param __seqs_end End iterator of iterator pair input sequence.
+   * @param __target Begin iterator of output sequence.
+   * @param __comp Comparator.
+   * @param __length Maximum length to merge, possibly larger than the
+   * number of elements available.
+   * @param __stable Stable merging incurs a performance penalty.
+   * @param __sentinel Ignored.
+   * @return End iterator of output sequence.
+   */
+  template<bool __stable,
+	   bool __sentinels,
+	   typename _RAIterIterator,
+	   typename _RAIter3,
+	   typename _DifferenceTp,
+	   typename _Splitter,
+	   typename _Compare>
+    _RAIter3
+    parallel_multiway_merge(_RAIterIterator __seqs_begin,
+                            _RAIterIterator __seqs_end,
+                            _RAIter3 __target,
+                            _Splitter __splitter,
+                            _DifferenceTp __length,
+                            _Compare __comp,
+                            _ThreadIndex __num_threads)
+      {
+#if _GLIBCXX_ASSERTIONS
+	_GLIBCXX_PARALLEL_ASSERT(__seqs_end - __seqs_begin > 1);
+#endif
+
+	_GLIBCXX_CALL(__length)
+
+	typedef _DifferenceTp _DifferenceType;
+        typedef typename std::iterator_traits<_RAIterIterator>
+	  ::difference_type _SeqNumber;
+	typedef typename std::iterator_traits<_RAIterIterator>
+          ::value_type::first_type
+          _RAIter1;
+	typedef typename
+          std::iterator_traits<_RAIter1>::value_type _ValueType;
+
+	// Leave only non-empty sequences.
+	typedef std::pair<_RAIter1, _RAIter1> seq_type;
+	seq_type* __ne_seqs = new seq_type[__seqs_end - __seqs_begin];
+	_SeqNumber __k = 0;
+	_DifferenceType __total_length = 0;
+	for (_RAIterIterator __raii = __seqs_begin;
+             __raii != __seqs_end; ++__raii)
+          {
+            _DifferenceTp __seq_length = _GLIBCXX_PARALLEL_LENGTH(*__raii);
+            if(__seq_length > 0)
+              {
+        	__total_length += __seq_length;
+        	__ne_seqs[__k++] = *__raii;
+              }
+          }
+
+	_GLIBCXX_CALL(__total_length)
+
+	__length = std::min<_DifferenceTp>(__length, __total_length);
+
+	if (__total_length == 0 || __k == 0)
+	  {
+	    delete[] __ne_seqs;
+	    return __target;
+	  }
+
+	std::vector<std::pair<_DifferenceType, _DifferenceType> >* __pieces;
+
+	__num_threads = static_cast<_ThreadIndex>
+          (std::min<_DifferenceType>(__num_threads, __total_length));
+
+#       pragma omp parallel num_threads (__num_threads)
+	{
+#         pragma omp single
+	  {
+	    __num_threads = omp_get_num_threads();
+	    // Thread __t will have to merge pieces[__iam][0..__k - 1]
+	    __pieces = new std::vector<
+	    std::pair<_DifferenceType, _DifferenceType> >[__num_threads];
+	    for (_ThreadIndex __s = 0; __s < __num_threads; ++__s)
+	      __pieces[__s].resize(__k);
+
+	    _DifferenceType __num_samples =
+	      __gnu_parallel::_Settings::get().merge_oversampling
+	      * __num_threads;
+
+	    __splitter(__ne_seqs, __ne_seqs + __k, __length, __total_length,
+		       __comp, __pieces);
+	  } //single
+
+	  _ThreadIndex __iam = omp_get_thread_num();
+
+	  _DifferenceType __target_position = 0;
+
+	  for (_SeqNumber __c = 0; __c < __k; ++__c)
+	    __target_position += __pieces[__iam][__c].first;
+
+	  seq_type* __chunks = new seq_type[__k];
+
+	  for (_SeqNumber __s = 0; __s < __k; ++__s)
+	    __chunks[__s] = std::make_pair(__ne_seqs[__s].first
+					   + __pieces[__iam][__s].first,
+					   __ne_seqs[__s].first
+					   + __pieces[__iam][__s].second);
+
+	  if(__length > __target_position)
+	    __sequential_multiway_merge<__stable, __sentinels>
+	      (__chunks, __chunks + __k, __target + __target_position,
+	       *(__seqs_begin->second), __length - __target_position, __comp);
+
+	  delete[] __chunks;
+	} // parallel
+
+#if _GLIBCXX_ASSERTIONS
+	_GLIBCXX_PARALLEL_ASSERT(
+          __is_sorted(__target, __target + __length, __comp));
+#endif
+
+	__k = 0;
+	// Update ends of sequences.
+	for (_RAIterIterator __raii = __seqs_begin;
+             __raii != __seqs_end; ++__raii)
+          {
+            _DifferenceTp __length = _GLIBCXX_PARALLEL_LENGTH(*__raii);
+            if(__length > 0)
+              (*__raii).first += __pieces[__num_threads - 1][__k++].second;
+          }
+
+	delete[] __pieces;
+	delete[] __ne_seqs;
+
+	return __target + __length;
+      }
+
+  /**
+   * @brief Multiway Merge Frontend.
+   *
+   * Merge the sequences specified by seqs_begin and __seqs_end into
+   * __target.  __seqs_begin and __seqs_end must point to a sequence of
+   * pairs.  These pairs must contain an iterator to the beginning
+   * of a sequence in their first entry and an iterator the _M_end of
+   * the same sequence in their second entry.
+   *
+   * Ties are broken arbitrarily.  See stable_multiway_merge for a variant
+   * that breaks ties by sequence number but is slower.
+   *
+   * The first entries of the pairs (i.e. the begin iterators) will be moved
+   * forward.
+   *
+   * The output sequence has to provide enough space for all elements
+   * that are written to it.
+   *
+   * This function will merge the input sequences:
+   *
+   * - not stable
+   * - parallel, depending on the input size and Settings
+   * - using sampling for splitting
+   * - not using sentinels
+   *
+   * Example:
+   *
+   * <pre>
+   *   int sequences[10][10];
+   *   for (int __i = 0; __i < 10; ++__i)
+   *     for (int __j = 0; __i < 10; ++__j)
+   *       sequences[__i][__j] = __j;
+   *
+   *   int __out[33];
+   *   std::vector<std::pair<int*> > seqs;
+   *   for (int __i = 0; __i < 10; ++__i)
+   *     { seqs.push(std::make_pair<int*>(sequences[__i],
+   *                                      sequences[__i] + 10)) }
+   *
+   *   multiway_merge(seqs.begin(), seqs.end(), __target, std::less<int>(), 33);
+   * </pre>
+   *
+   * @see stable_multiway_merge
+   *
+   * @pre All input sequences must be sorted.
+   * @pre Target must provide enough space to merge out length elements or
+   *    the number of elements in all sequences, whichever is smaller.
+   *
+   * @post [__target, return __value) contains merged __elements from the
+   *    input sequences.
+   * @post return __value - __target = min(__length, number of elements in all
+   *    sequences).
+   *
+   * @param _RAIterPairIterator iterator over sequence
+   *    of pairs of iterators
+   * @param _RAIterOut iterator over target sequence
+   * @param _DifferenceTp difference type for the sequence
+   * @param _Compare strict weak ordering type to compare elements
+   *    in sequences
+   *
+   * @param __seqs_begin  __begin of sequence __sequence
+   * @param __seqs_end    _M_end of sequence __sequence
+   * @param __target      target sequence to merge to.
+   * @param __comp        strict weak ordering to use for element comparison.
+   * @param __length Maximum length to merge, possibly larger than the
+   * number of elements available.
+   *
+   * @return _M_end iterator of output sequence
+   */
+  // multiway_merge
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge(_RAIterPairIterator __seqs_begin,
+		   _RAIterPairIterator __seqs_end,
+		   _RAIterOut __target,
+		   _DifferenceTp __length, _Compare __comp,
+		   __gnu_parallel::sequential_tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute multiway merge *sequentially*.
+      return __sequential_multiway_merge
+	</* __stable = */ false, /* __sentinels = */ false>
+	(__seqs_begin, __seqs_end, __target,
+	 *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge(_RAIterPairIterator __seqs_begin,
+		   _RAIterPairIterator __seqs_end,
+		   _RAIterOut __target,
+		   _DifferenceTp __length, _Compare __comp,
+		   __gnu_parallel::exact_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+               __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+	  </* __stable = */ false, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_exact_splitting</* __stable = */ false,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+	  </* __stable = */ false, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge(_RAIterPairIterator __seqs_begin,
+		   _RAIterPairIterator __seqs_end,
+		   _RAIterOut __target,
+		   _DifferenceTp __length, _Compare __comp,
+		   __gnu_parallel::sampling_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+               __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+	  </* __stable = */ false, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_exact_splitting</* __stable = */ false,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+	  </* __stable = */ false, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge(_RAIterPairIterator __seqs_begin,
+		   _RAIterPairIterator __seqs_end,
+		   _RAIterOut __target,
+		   _DifferenceTp __length, _Compare __comp,
+		   parallel_tag __tag = parallel_tag(0))
+    { return multiway_merge(__seqs_begin, __seqs_end, __target, __length,
+			    __comp, exact_tag(__tag.__get_num_threads())); }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge(_RAIterPairIterator __seqs_begin,
+		   _RAIterPairIterator __seqs_end,
+		   _RAIterOut __target,
+		   _DifferenceTp __length, _Compare __comp,
+		   default_parallel_tag __tag)
+    { return multiway_merge(__seqs_begin, __seqs_end, __target, __length,
+			    __comp, exact_tag(__tag.__get_num_threads())); }
+
+  // stable_multiway_merge
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge(_RAIterPairIterator __seqs_begin,
+			  _RAIterPairIterator __seqs_end,
+			  _RAIterOut __target,
+			  _DifferenceTp __length, _Compare __comp,
+			  __gnu_parallel::sequential_tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute multiway merge *sequentially*.
+      return __sequential_multiway_merge
+	</* __stable = */ true, /* __sentinels = */ false>
+          (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge(_RAIterPairIterator __seqs_begin,
+			  _RAIterPairIterator __seqs_end,
+			  _RAIterOut __target,
+			  _DifferenceTp __length, _Compare __comp,
+			  __gnu_parallel::exact_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_exact_splitting</* __stable = */ true,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+	  </* __stable = */ true, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge(_RAIterPairIterator __seqs_begin,
+			  _RAIterPairIterator __seqs_end,
+			  _RAIterOut __target,
+			  _DifferenceTp __length, _Compare __comp,
+			  sampling_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_sampling_splitting</* __stable = */ true,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ false>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge(_RAIterPairIterator __seqs_begin,
+			  _RAIterPairIterator __seqs_end,
+			  _RAIterOut __target,
+			  _DifferenceTp __length, _Compare __comp,
+			  parallel_tag __tag = parallel_tag(0))
+    {
+      return stable_multiway_merge
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge(_RAIterPairIterator __seqs_begin,
+			  _RAIterPairIterator __seqs_end,
+			  _RAIterOut __target,
+			  _DifferenceTp __length, _Compare __comp,
+			  default_parallel_tag __tag)
+    {
+      return stable_multiway_merge
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+
+  /**
+   * @brief Multiway Merge Frontend.
+   *
+   * Merge the sequences specified by seqs_begin and __seqs_end into
+   * __target.  __seqs_begin and __seqs_end must point to a sequence of
+   * pairs.  These pairs must contain an iterator to the beginning
+   * of a sequence in their first entry and an iterator the _M_end of
+   * the same sequence in their second entry.
+   *
+   * Ties are broken arbitrarily.  See stable_multiway_merge for a variant
+   * that breaks ties by sequence number but is slower.
+   *
+   * The first entries of the pairs (i.e. the begin iterators) will be moved
+   * forward accordingly.
+   *
+   * The output sequence has to provide enough space for all elements
+   * that are written to it.
+   *
+   * This function will merge the input sequences:
+   *
+   * - not stable
+   * - parallel, depending on the input size and Settings
+   * - using sampling for splitting
+   * - using sentinels
+   *
+   * You have to take care that the element the _M_end iterator points to is
+   * readable and contains a value that is greater than any other non-sentinel
+   * value in all sequences.
+   *
+   * Example:
+   *
+   * <pre>
+   *   int sequences[10][11];
+   *   for (int __i = 0; __i < 10; ++__i)
+   *     for (int __j = 0; __i < 11; ++__j)
+   *       sequences[__i][__j] = __j; // __last one is sentinel!
+   *
+   *   int __out[33];
+   *   std::vector<std::pair<int*> > seqs;
+   *   for (int __i = 0; __i < 10; ++__i)
+   *     { seqs.push(std::make_pair<int*>(sequences[__i],
+   *                                      sequences[__i] + 10)) }
+   *
+   *   multiway_merge(seqs.begin(), seqs.end(), __target, std::less<int>(), 33);
+   * </pre>
+   *
+   * @pre All input sequences must be sorted.
+   * @pre Target must provide enough space to merge out length elements or
+   *    the number of elements in all sequences, whichever is smaller.
+   * @pre For each @c __i, @c __seqs_begin[__i].second must be the end
+   *    marker of the sequence, but also reference the one more __sentinel
+   *    element.
+   *
+   * @post [__target, return __value) contains merged __elements from the
+   *    input sequences.
+   * @post return __value - __target = min(__length, number of elements in all
+   *    sequences).
+   *
+   * @see stable_multiway_merge_sentinels
+   *
+   * @param _RAIterPairIterator iterator over sequence
+   *    of pairs of iterators
+   * @param _RAIterOut iterator over target sequence
+   * @param _DifferenceTp difference type for the sequence
+   * @param _Compare strict weak ordering type to compare elements
+   *    in sequences
+   *
+   * @param __seqs_begin  __begin of sequence __sequence
+   * @param __seqs_end    _M_end of sequence __sequence
+   * @param __target      target sequence to merge to.
+   * @param __comp        strict weak ordering to use for element comparison.
+   * @param __length Maximum length to merge, possibly larger than the
+   * number of elements available.
+   *
+   * @return _M_end iterator of output sequence
+   */
+  // multiway_merge_sentinels
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+			     _RAIterPairIterator __seqs_end,
+			     _RAIterOut __target,
+			     _DifferenceTp __length, _Compare __comp,
+			     __gnu_parallel::sequential_tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute multiway merge *sequentially*.
+      return __sequential_multiway_merge
+	</* __stable = */ false, /* __sentinels = */ true>
+          (__seqs_begin, __seqs_end,
+           __target, *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+			     _RAIterPairIterator __seqs_end,
+			     _RAIterOut __target,
+			     _DifferenceTp __length, _Compare __comp,
+			     __gnu_parallel::exact_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ false, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_exact_splitting</* __stable = */ false,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+          </* __stable = */ false, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+			     _RAIterPairIterator __seqs_end,
+			     _RAIterOut __target,
+			     _DifferenceTp __length, _Compare __comp,
+			     sampling_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ false, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_sampling_splitting</* __stable = */ false,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+          </* __stable = */false, /* __sentinels = */ true>(
+            __seqs_begin, __seqs_end, __target,
+	    *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+			     _RAIterPairIterator __seqs_end,
+			     _RAIterOut __target,
+			     _DifferenceTp __length, _Compare __comp,
+			     parallel_tag __tag = parallel_tag(0))
+    {
+      return multiway_merge_sentinels
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+			     _RAIterPairIterator __seqs_end,
+			     _RAIterOut __target,
+			     _DifferenceTp __length, _Compare __comp,
+			     default_parallel_tag __tag)
+    {
+      return multiway_merge_sentinels
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+
+  // stable_multiway_merge_sentinels
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+				    _RAIterPairIterator __seqs_end,
+				    _RAIterOut __target,
+				    _DifferenceTp __length, _Compare __comp,
+				    __gnu_parallel::sequential_tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute multiway merge *sequentially*.
+      return __sequential_multiway_merge
+	</* __stable = */ true, /* __sentinels = */ true>
+	(__seqs_begin, __seqs_end, __target,
+	 *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+				    _RAIterPairIterator __seqs_end,
+				    _RAIterOut __target,
+				    _DifferenceTp __length, _Compare __comp,
+				    __gnu_parallel::exact_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+            __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+            __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_exact_splitting</* __stable = */ true,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+				    _RAIterPairIterator __seqs_end,
+				    _RAIterOut __target,
+				    _DifferenceTp __length,
+				    _Compare __comp,
+				    sampling_tag __tag)
+    {
+      typedef _DifferenceTp _DifferenceType;
+      _GLIBCXX_CALL(__seqs_end - __seqs_begin)
+
+      // catch special case: no sequences
+      if (__seqs_begin == __seqs_end)
+	return __target;
+
+      // Execute merge; maybe parallel, depending on the number of merged
+      // elements and the number of sequences and global thresholds in
+      // Settings.
+      if ((__seqs_end - __seqs_begin > 1)
+	  && _GLIBCXX_PARALLEL_CONDITION(
+            ((__seqs_end - __seqs_begin) >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_k)
+            && ((_SequenceIndex)__length >=
+              __gnu_parallel::_Settings::get().multiway_merge_minimal_n)))
+	return parallel_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   multiway_merge_sampling_splitting</* __stable = */ true,
+	   typename std::iterator_traits<_RAIterPairIterator>
+	   ::value_type*, _Compare, _DifferenceTp>,
+	   static_cast<_DifferenceType>(__length), __comp,
+	   __tag.__get_num_threads());
+      else
+	return __sequential_multiway_merge
+          </* __stable = */ true, /* __sentinels = */ true>
+	  (__seqs_begin, __seqs_end, __target,
+	   *(__seqs_begin->second), __length, __comp);
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+				    _RAIterPairIterator __seqs_end,
+				    _RAIterOut __target,
+				    _DifferenceTp __length,
+				    _Compare __comp,
+				    parallel_tag __tag = parallel_tag(0))
+    {
+      return stable_multiway_merge_sentinels
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+
+  // public interface
+  template<typename _RAIterPairIterator,
+	   typename _RAIterOut,
+	   typename _DifferenceTp,
+	   typename _Compare>
+    _RAIterOut
+    stable_multiway_merge_sentinels(_RAIterPairIterator __seqs_begin,
+				    _RAIterPairIterator __seqs_end,
+				    _RAIterOut __target,
+				    _DifferenceTp __length, _Compare __comp,
+				    default_parallel_tag __tag)
+    {
+      return stable_multiway_merge_sentinels
+	(__seqs_begin, __seqs_end, __target, __length, __comp,
+	 exact_tag(__tag.__get_num_threads()));
+    }
+}; // namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_MULTIWAY_MERGE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_mergesort.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_mergesort.h
new file mode 100644
index 000000000..af7c10ac1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/multiway_mergesort.h
@@ -0,0 +1,481 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/multiway_mergesort.h
+ *  @brief Parallel multiway merge sort.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_MULTIWAY_MERGESORT_H
+#define _GLIBCXX_PARALLEL_MULTIWAY_MERGESORT_H 1
+
+#include <vector>
+
+#include <parallel/basic_iterator.h>
+#include <bits/stl_algo.h>
+#include <parallel/parallel.h>
+#include <parallel/multiway_merge.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Subsequence description. */
+  template<typename _DifferenceTp>
+    struct _Piece
+    {
+      typedef _DifferenceTp _DifferenceType;
+
+      /** @brief Begin of subsequence. */
+      _DifferenceType _M_begin;
+
+      /** @brief End of subsequence. */
+      _DifferenceType _M_end;
+    };
+
+  /** @brief Data accessed by all threads.
+   *
+   *  PMWMS = parallel multiway mergesort */
+  template<typename _RAIter>
+    struct _PMWMSSortingData
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      /** @brief Number of threads involved. */
+      _ThreadIndex _M_num_threads;
+
+      /** @brief Input __begin. */
+      _RAIter _M_source;
+
+      /** @brief Start indices, per thread. */
+      _DifferenceType* _M_starts;
+
+      /** @brief Storage in which to sort. */
+      _ValueType** _M_temporary;
+
+      /** @brief Samples. */
+      _ValueType* _M_samples;
+
+      /** @brief Offsets to add to the found positions. */
+      _DifferenceType* _M_offsets;
+
+      /** @brief Pieces of data to merge @c [thread][__sequence] */
+      std::vector<_Piece<_DifferenceType> >* _M_pieces;
+  };
+
+  /**
+   *  @brief Select _M_samples from a sequence.
+   *  @param __sd Pointer to algorithm data. _Result will be placed in
+   *  @c __sd->_M_samples.
+   *  @param __num_samples Number of _M_samples to select.
+   */
+  template<typename _RAIter, typename _DifferenceTp>
+    void
+    __determine_samples(_PMWMSSortingData<_RAIter>* __sd,
+			_DifferenceTp __num_samples)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef _DifferenceTp _DifferenceType;
+
+      _ThreadIndex __iam = omp_get_thread_num();
+
+      _DifferenceType* __es = new _DifferenceType[__num_samples + 2];
+
+      equally_split(__sd->_M_starts[__iam + 1] - __sd->_M_starts[__iam], 
+		    __num_samples + 1, __es);
+
+      for (_DifferenceType __i = 0; __i < __num_samples; ++__i)
+	::new(&(__sd->_M_samples[__iam * __num_samples + __i]))
+	    _ValueType(__sd->_M_source[__sd->_M_starts[__iam]
+				       + __es[__i + 1]]);
+
+      delete[] __es;
+    }
+
+  /** @brief Split consistently. */
+  template<bool __exact, typename _RAIter,
+	   typename _Compare, typename _SortingPlacesIterator>
+    struct _SplitConsistently
+    { };
+
+  /** @brief Split by exact splitting. */
+  template<typename _RAIter, typename _Compare,
+	   typename _SortingPlacesIterator>
+    struct _SplitConsistently<true, _RAIter, _Compare, _SortingPlacesIterator>
+    {
+      void
+      operator()(const _ThreadIndex __iam,
+		 _PMWMSSortingData<_RAIter>* __sd,
+		 _Compare& __comp,
+		 const typename
+		 std::iterator_traits<_RAIter>::difference_type
+		 __num_samples) const
+      {
+#       pragma omp barrier
+
+	std::vector<std::pair<_SortingPlacesIterator,
+	                      _SortingPlacesIterator> >
+	  __seqs(__sd->_M_num_threads);
+	for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; __s++)
+	  __seqs[__s] = std::make_pair(__sd->_M_temporary[__s],
+				       __sd->_M_temporary[__s]
+				       + (__sd->_M_starts[__s + 1]
+					  - __sd->_M_starts[__s]));
+
+	std::vector<_SortingPlacesIterator> __offsets(__sd->_M_num_threads);
+
+	// if not last thread
+	if (__iam < __sd->_M_num_threads - 1)
+	  multiseq_partition(__seqs.begin(), __seqs.end(),
+			     __sd->_M_starts[__iam + 1], __offsets.begin(),
+			     __comp);
+
+	for (_ThreadIndex __seq = 0; __seq < __sd->_M_num_threads; __seq++)
+	  {
+	    // for each sequence
+	    if (__iam < (__sd->_M_num_threads - 1))
+	      __sd->_M_pieces[__iam][__seq]._M_end
+		= __offsets[__seq] - __seqs[__seq].first;
+	    else
+	      // very end of this sequence
+	      __sd->_M_pieces[__iam][__seq]._M_end =
+		__sd->_M_starts[__seq + 1] - __sd->_M_starts[__seq];
+	  }
+
+#       pragma omp barrier
+
+	for (_ThreadIndex __seq = 0; __seq < __sd->_M_num_threads; __seq++)
+	  {
+	    // For each sequence.
+	    if (__iam > 0)
+	      __sd->_M_pieces[__iam][__seq]._M_begin =
+		__sd->_M_pieces[__iam - 1][__seq]._M_end;
+	    else
+	      // Absolute beginning.
+	      __sd->_M_pieces[__iam][__seq]._M_begin = 0;
+	  }
+      }
+  };
+
+  /** @brief Split by sampling. */ 
+  template<typename _RAIter, typename _Compare,
+	   typename _SortingPlacesIterator>
+    struct _SplitConsistently<false, _RAIter, _Compare, _SortingPlacesIterator>
+    {
+      void
+      operator()(const _ThreadIndex __iam,
+		 _PMWMSSortingData<_RAIter>* __sd,
+		 _Compare& __comp,
+		 const typename
+		 std::iterator_traits<_RAIter>::difference_type
+		 __num_samples) const
+      {
+	typedef std::iterator_traits<_RAIter> _TraitsType;
+	typedef typename _TraitsType::value_type _ValueType;
+	typedef typename _TraitsType::difference_type _DifferenceType;
+
+	__determine_samples(__sd, __num_samples);
+
+#       pragma omp barrier
+
+#       pragma omp single
+	__gnu_sequential::sort(__sd->_M_samples,
+			       __sd->_M_samples
+			       + (__num_samples * __sd->_M_num_threads),
+			       __comp);
+
+#       pragma omp barrier
+
+	for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; ++__s)
+	  {
+	    // For each sequence.
+	    if (__num_samples * __iam > 0)
+	      __sd->_M_pieces[__iam][__s]._M_begin =
+                std::lower_bound(__sd->_M_temporary[__s],
+				 __sd->_M_temporary[__s]
+				 + (__sd->_M_starts[__s + 1]
+				    - __sd->_M_starts[__s]),
+				 __sd->_M_samples[__num_samples * __iam],
+				 __comp)
+                - __sd->_M_temporary[__s];
+	    else
+	      // Absolute beginning.
+	      __sd->_M_pieces[__iam][__s]._M_begin = 0;
+
+	    if ((__num_samples * (__iam + 1)) <
+		(__num_samples * __sd->_M_num_threads))
+	      __sd->_M_pieces[__iam][__s]._M_end =
+                std::lower_bound(__sd->_M_temporary[__s],
+				 __sd->_M_temporary[__s]
+				 + (__sd->_M_starts[__s + 1]
+				    - __sd->_M_starts[__s]),
+				 __sd->_M_samples[__num_samples * (__iam + 1)],
+				 __comp)
+                - __sd->_M_temporary[__s];
+	    else
+	      // Absolute end.
+	      __sd->_M_pieces[__iam][__s]._M_end = (__sd->_M_starts[__s + 1]
+						    - __sd->_M_starts[__s]);
+	  }
+      }
+  };
+  
+  template<bool __stable, typename _RAIter, typename _Compare>
+    struct __possibly_stable_sort
+    { };
+
+  template<typename _RAIter, typename _Compare>
+    struct __possibly_stable_sort<true, _RAIter, _Compare>
+    {
+      void operator()(const _RAIter& __begin,
+		      const _RAIter& __end, _Compare& __comp) const
+      { __gnu_sequential::stable_sort(__begin, __end, __comp); }
+    };
+
+  template<typename _RAIter, typename _Compare>
+    struct __possibly_stable_sort<false, _RAIter, _Compare>
+    {
+      void operator()(const _RAIter __begin,
+		      const _RAIter __end, _Compare& __comp) const
+      { __gnu_sequential::sort(__begin, __end, __comp); }
+    };
+
+  template<bool __stable, typename Seq_RAIter,
+	   typename _RAIter, typename _Compare,
+	   typename DiffType>
+    struct __possibly_stable_multiway_merge
+    { };
+
+  template<typename Seq_RAIter, typename _RAIter,
+	   typename _Compare, typename _DiffType>
+    struct __possibly_stable_multiway_merge<true, Seq_RAIter,
+					    _RAIter, _Compare, _DiffType>
+    {
+      void operator()(const Seq_RAIter& __seqs_begin,
+		      const Seq_RAIter& __seqs_end,
+		      const _RAIter& __target,
+		      _Compare& __comp,
+		      _DiffType __length_am) const
+      { stable_multiway_merge(__seqs_begin, __seqs_end, __target,
+			      __length_am, __comp, sequential_tag()); }
+    };
+
+  template<typename Seq_RAIter, typename _RAIter,
+	   typename _Compare, typename _DiffType>
+    struct __possibly_stable_multiway_merge<false, Seq_RAIter,
+					    _RAIter, _Compare, _DiffType>
+    {
+      void operator()(const Seq_RAIter& __seqs_begin,
+                      const Seq_RAIter& __seqs_end,
+                      const _RAIter& __target,
+                      _Compare& __comp,
+                      _DiffType __length_am) const
+      { multiway_merge(__seqs_begin, __seqs_end, __target, __length_am,
+		       __comp, sequential_tag()); }
+    };
+
+  /** @brief PMWMS code executed by each thread.
+   *  @param __sd Pointer to algorithm data.
+   *  @param __comp Comparator.
+   */
+  template<bool __stable, bool __exact, typename _RAIter,
+	   typename _Compare>
+    void
+    parallel_sort_mwms_pu(_PMWMSSortingData<_RAIter>* __sd,
+			  _Compare& __comp)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _ThreadIndex __iam = omp_get_thread_num();
+
+      // Length of this thread's chunk, before merging.
+      _DifferenceType __length_local =
+	__sd->_M_starts[__iam + 1] - __sd->_M_starts[__iam];
+
+      // Sort in temporary storage, leave space for sentinel.
+
+      typedef _ValueType* _SortingPlacesIterator;
+
+      __sd->_M_temporary[__iam] =
+        static_cast<_ValueType*>(::operator new(sizeof(_ValueType)
+						* (__length_local + 1)));
+
+      // Copy there.
+      std::uninitialized_copy(__sd->_M_source + __sd->_M_starts[__iam],
+			      __sd->_M_source + __sd->_M_starts[__iam]
+			      + __length_local,
+			      __sd->_M_temporary[__iam]);
+
+      __possibly_stable_sort<__stable, _SortingPlacesIterator, _Compare>()
+        (__sd->_M_temporary[__iam],
+	 __sd->_M_temporary[__iam] + __length_local,
+         __comp);
+
+      // Invariant: locally sorted subsequence in sd->_M_temporary[__iam],
+      // __sd->_M_temporary[__iam] + __length_local.
+
+      // No barrier here: Synchronization is done by the splitting routine.
+
+      _DifferenceType __num_samples =
+        _Settings::get().sort_mwms_oversampling * __sd->_M_num_threads - 1;
+      _SplitConsistently<__exact, _RAIter, _Compare, _SortingPlacesIterator>()
+        (__iam, __sd, __comp, __num_samples);
+
+      // Offset from __target __begin, __length after merging.
+      _DifferenceType __offset = 0, __length_am = 0;
+      for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; __s++)
+	{
+	  __length_am += (__sd->_M_pieces[__iam][__s]._M_end
+			  - __sd->_M_pieces[__iam][__s]._M_begin);
+	  __offset += __sd->_M_pieces[__iam][__s]._M_begin;
+	}
+
+      typedef std::vector<
+        std::pair<_SortingPlacesIterator, _SortingPlacesIterator> >
+        _SeqVector;
+      _SeqVector __seqs(__sd->_M_num_threads);
+
+      for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; ++__s)
+	{
+	  __seqs[__s] =
+	    std::make_pair(__sd->_M_temporary[__s]
+			   + __sd->_M_pieces[__iam][__s]._M_begin,
+			   __sd->_M_temporary[__s]
+			   + __sd->_M_pieces[__iam][__s]._M_end);
+	}
+
+      __possibly_stable_multiway_merge<
+        __stable, typename _SeqVector::iterator,
+	_RAIter, _Compare, _DifferenceType>()(__seqs.begin(), __seqs.end(),
+				     __sd->_M_source + __offset, __comp,
+				     __length_am);
+
+#     pragma omp barrier
+
+      for (_DifferenceType __i = 0; __i < __length_local; ++__i)
+	__sd->_M_temporary[__iam][__i].~_ValueType();
+      ::operator delete(__sd->_M_temporary[__iam]);
+    }
+
+  /** @brief PMWMS main call.
+   *  @param __begin Begin iterator of sequence.
+   *  @param __end End iterator of sequence.
+   *  @param __comp Comparator.
+   *  @param __n Length of sequence.
+   *  @param __num_threads Number of threads to use.
+   */
+  template<bool __stable, bool __exact, typename _RAIter,
+           typename _Compare>
+    void
+    parallel_sort_mwms(_RAIter __begin, _RAIter __end,
+		       _Compare __comp,
+		       _ThreadIndex __num_threads)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+
+      if (__n <= 1)
+	return;
+
+      // at least one element per thread
+      if (__num_threads > __n)
+	__num_threads = static_cast<_ThreadIndex>(__n);
+
+      // shared variables
+      _PMWMSSortingData<_RAIter> __sd;
+      _DifferenceType* __starts;
+      _DifferenceType __size;
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+        __num_threads = omp_get_num_threads(); //no more threads than requested
+
+#       pragma omp single
+	{
+	  __sd._M_num_threads = __num_threads;
+	  __sd._M_source = __begin;
+	  
+	  __sd._M_temporary = new _ValueType*[__num_threads];
+
+	  if (!__exact)
+	    {
+	      __size =
+		(_Settings::get().sort_mwms_oversampling * __num_threads - 1)
+		* __num_threads;
+	      __sd._M_samples = static_cast<_ValueType*>
+		(::operator new(__size * sizeof(_ValueType)));
+	    }
+	  else
+	    __sd._M_samples = 0;
+
+	  __sd._M_offsets = new _DifferenceType[__num_threads - 1];
+	  __sd._M_pieces
+	    = new std::vector<_Piece<_DifferenceType> >[__num_threads];
+	  for (_ThreadIndex __s = 0; __s < __num_threads; ++__s)
+	    __sd._M_pieces[__s].resize(__num_threads);
+	  __starts = __sd._M_starts = new _DifferenceType[__num_threads + 1];
+
+	  _DifferenceType __chunk_length = __n / __num_threads;
+	  _DifferenceType __split = __n % __num_threads;
+	  _DifferenceType __pos = 0;
+	  for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	    {
+	      __starts[__i] = __pos;
+	      __pos += ((__i < __split)
+			? (__chunk_length + 1) : __chunk_length);
+	    }
+	  __starts[__num_threads] = __pos;
+	} //single
+
+        // Now sort in parallel.
+        parallel_sort_mwms_pu<__stable, __exact>(&__sd, __comp);
+      } //parallel
+
+      delete[] __starts;
+      delete[] __sd._M_temporary;
+
+      if (!__exact)
+	{
+	  for (_DifferenceType __i = 0; __i < __size; ++__i)
+	    __sd._M_samples[__i].~_ValueType();
+	  ::operator delete(__sd._M_samples);
+	}
+
+      delete[] __sd._M_offsets;
+      delete[] __sd._M_pieces;
+    }
+
+} //namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_MULTIWAY_MERGESORT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numeric b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numeric
new file mode 100644
index 000000000..64624a742
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numeric
@@ -0,0 +1,514 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file parallel/numeric
+*
+ * @brief Parallel STL function calls corresponding to stl_numeric.h.
+ * The functions defined here mainly do case switches and
+ * call the actual parallelized versions in other files.
+ * Inlining policy: Functions that basically only contain one function call,
+ * are declared inline.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_NUMERIC_H
+#define _GLIBCXX_PARALLEL_NUMERIC_H 1
+
+#include <numeric>
+#include <bits/stl_function.h>
+#include <parallel/numericfwd.h>
+#include <parallel/iterator.h>
+#include <parallel/for_each.h>
+#include <parallel/for_each_selectors.h>
+#include <parallel/partial_sum.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __parallel
+{
+  // Sequential fallback.
+  template<typename _IIter, typename _Tp>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init, 
+               __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init); }
+
+  template<typename _IIter, typename _Tp, typename _BinaryOperation>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init,
+               _BinaryOperation __binary_op, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init, __binary_op); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter, typename _Tp, typename _IteratorTag>
+    inline _Tp
+    __accumulate_switch(_IIter __begin, _IIter __end,
+                      _Tp __init, _IteratorTag) 
+    { return accumulate(__begin, __end, __init,
+			__gnu_parallel::sequential_tag()); }
+
+  template<typename _IIter, typename _Tp, typename _BinaryOperation,
+           typename _IteratorTag>
+    inline _Tp
+    __accumulate_switch(_IIter __begin, _IIter __end, _Tp __init, 
+                      _BinaryOperation __binary_op, _IteratorTag)
+    { return accumulate(__begin, __end, __init, __binary_op, 
+                        __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename __RAIter, typename _Tp, typename _BinaryOperation>
+    _Tp
+    __accumulate_switch(__RAIter __begin, __RAIter __end, 
+                      _Tp __init, _BinaryOperation __binary_op, 
+                      random_access_iterator_tag, 
+                      __gnu_parallel::_Parallelism __parallelism_tag  
+                      = __gnu_parallel::parallel_unbalanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().accumulate_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          _Tp __res = __init;
+          __gnu_parallel::__accumulate_selector<__RAIter>
+            __my_selector;
+          __gnu_parallel::
+            __for_each_template_random_access_ed(__begin, __end,
+						 __gnu_parallel::_Nothing(),
+						 __my_selector,
+						 __gnu_parallel::
+						 __accumulate_binop_reduct
+					       <_BinaryOperation>(__binary_op),
+						 __res, __res, -1);
+          return __res;
+        }
+      else
+        return accumulate(__begin, __end, __init, __binary_op, 
+                          __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _IIter, typename _Tp>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init, 
+               __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef std::iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::value_type _ValueType;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+
+      return __accumulate_switch(__begin, __end, __init,
+				 __gnu_parallel::_Plus<_Tp, _ValueType>(),
+				 _IteratorCategory(), __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _Tp>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init)
+    {
+      typedef std::iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::value_type _ValueType;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+
+      return __accumulate_switch(__begin, __end, __init,
+				 __gnu_parallel::_Plus<_Tp, _ValueType>(),
+				 _IteratorCategory());
+    }
+
+  template<typename _IIter, typename _Tp, typename _BinaryOperation>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init, 
+               _BinaryOperation __binary_op, 
+               __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __accumulate_switch(__begin, __end, __init, __binary_op, 
+				 _IteratorCategory(), __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _Tp, typename _BinaryOperation>
+    inline _Tp
+    accumulate(_IIter __begin, _IIter __end, _Tp __init, 
+               _BinaryOperation __binary_op) 
+    {
+      typedef iterator_traits<_IIter> _IteratorTraits;
+      typedef typename _IteratorTraits::iterator_category _IteratorCategory;
+      return __accumulate_switch(__begin, __end, __init, __binary_op, 
+				 _IteratorCategory());
+    }
+
+
+  // Sequential fallback.
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1, 
+                  _IIter2 __first2, _Tp __init,
+                  __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::inner_product(
+                               __first1, __last1, __first2, __init); }
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1,
+                  _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, 
+                  _BinaryFunction2 __binary_op2,
+                  __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::inner_product(__first1, __last1, __first2, __init,
+                                           __binary_op1, __binary_op2); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _RAIter1, typename _RAIter2,
+           typename _Tp, typename _BinaryFunction1, typename _BinaryFunction2>
+    _Tp
+    __inner_product_switch(_RAIter1 __first1,
+			   _RAIter1 __last1,
+			   _RAIter2 __first2, _Tp __init,
+			   _BinaryFunction1 __binary_op1,
+			   _BinaryFunction2 __binary_op2,
+			   random_access_iterator_tag,
+			   random_access_iterator_tag,
+			   __gnu_parallel::_Parallelism __parallelism_tag
+			   = __gnu_parallel::parallel_unbalanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION((__last1 - __first1)
+                                      >= __gnu_parallel::_Settings::get().
+                                      accumulate_minimal_n
+                                      && __gnu_parallel::
+                                      __is_parallel(__parallelism_tag)))
+        {
+          _Tp __res = __init;
+          __gnu_parallel::
+            __inner_product_selector<_RAIter1,
+            _RAIter2, _Tp> __my_selector(__first1, __first2);
+          __gnu_parallel::
+            __for_each_template_random_access_ed(
+                __first1, __last1, __binary_op2, __my_selector, __binary_op1,
+                __res, __res, -1);
+          return __res;
+        }
+      else
+        return inner_product(__first1, __last1, __first2, __init, 
+                             __gnu_parallel::sequential_tag());
+    }
+
+  // No parallelism for input iterators.
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2,
+           typename _IteratorTag1, typename _IteratorTag2>
+    inline _Tp
+    __inner_product_switch(_IIter1 __first1, _IIter1 __last1, 
+			   _IIter2 __first2, _Tp __init, 
+			   _BinaryFunction1 __binary_op1,
+			   _BinaryFunction2 __binary_op2, 
+			   _IteratorTag1, _IteratorTag2)
+    { return inner_product(__first1, __last1, __first2, __init, __binary_op1,
+			   __binary_op2, __gnu_parallel::sequential_tag()); }
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1, 
+                  _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, 
+                  _BinaryFunction2 __binary_op2, 
+                  __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::iterator_category _IteratorCategory1;
+
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::iterator_category _IteratorCategory2;
+
+      return __inner_product_switch(__first1, __last1, __first2, __init,
+				    __binary_op1, __binary_op2,
+				    _IteratorCategory1(), _IteratorCategory2(),
+				    __parallelism_tag);
+    }
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1, 
+                  _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, 
+                  _BinaryFunction2 __binary_op2)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::iterator_category _IteratorCategory1;
+
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::iterator_category _IteratorCategory2;
+
+      return __inner_product_switch(__first1, __last1, __first2, __init,
+				    __binary_op1, __binary_op2,
+				    _IteratorCategory1(),
+				    _IteratorCategory2());
+    }
+
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1, 
+                  _IIter2 __first2, _Tp __init, 
+                  __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::value_type _ValueType1;
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::value_type _ValueType2;
+
+      typedef typename
+        __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
+        _MultipliesResultType;
+      return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
+                           __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
+                           __gnu_parallel::
+                           _Multiplies<_ValueType1, _ValueType2>(),
+                           __parallelism_tag);
+    }
+
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    inline _Tp
+    inner_product(_IIter1 __first1, _IIter1 __last1, 
+                  _IIter2 __first2, _Tp __init)
+    {
+      typedef iterator_traits<_IIter1> _TraitsType1;
+      typedef typename _TraitsType1::value_type _ValueType1;
+      typedef iterator_traits<_IIter2> _TraitsType2;
+      typedef typename _TraitsType2::value_type _ValueType2;
+
+      typedef typename
+        __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
+        _MultipliesResultType;
+      return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
+                           __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
+                           __gnu_parallel::
+                           _Multiplies<_ValueType1, _ValueType2>());
+    }
+
+  // Sequential fallback.
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result,
+                __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result); }
+
+  // Sequential fallback.
+  template<typename _IIter, typename _OutputIterator,
+	   typename _BinaryOperation>
+    inline _OutputIterator
+    partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result,
+                _BinaryOperation __bin_op, __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation, typename _IteratorTag1,
+           typename _IteratorTag2>
+    inline _OutputIterator
+    __partial_sum_switch(_IIter __begin, _IIter __end,
+			 _OutputIterator __result, _BinaryOperation __bin_op,
+			 _IteratorTag1, _IteratorTag2)
+    { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation>
+    _OutputIterator
+    __partial_sum_switch(_IIter __begin, _IIter __end,
+			 _OutputIterator __result, _BinaryOperation __bin_op,
+			 random_access_iterator_tag,
+			 random_access_iterator_tag)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().partial_sum_minimal_n))
+        return __gnu_parallel::__parallel_partial_sum(__begin, __end,
+						      __result, __bin_op);
+      else
+        return partial_sum(__begin, __end, __result, __bin_op,
+                           __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result)
+    {
+      typedef typename iterator_traits<_IIter>::value_type _ValueType;
+      return __gnu_parallel::partial_sum(__begin, __end,
+                                         __result, std::plus<_ValueType>());
+    }
+
+  // Public interface
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation>
+    inline _OutputIterator
+    partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result,
+                _BinaryOperation __binary_op)
+    {
+      typedef iterator_traits<_IIter> _ITraitsType;
+      typedef typename _ITraitsType::iterator_category _IIteratorCategory;
+
+      typedef iterator_traits<_OutputIterator> _OTraitsType;
+      typedef typename _OTraitsType::iterator_category _OIterCategory;
+
+      return __partial_sum_switch(__begin, __end, __result, __binary_op,
+				  _IIteratorCategory(), _OIterCategory());
+    }
+
+  // Sequential fallback.
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end, _OutputIterator __result,
+                        __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end, __result); }
+
+  // Sequential fallback.
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end,
+                        _OutputIterator __result, _BinaryOperation __bin_op,
+                        __gnu_parallel::sequential_tag)
+    { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end,
+						 __result, __bin_op); }
+
+  // Sequential fallback for input iterator case.
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation, typename _IteratorTag1,
+           typename _IteratorTag2>
+    inline _OutputIterator
+    __adjacent_difference_switch(_IIter __begin, _IIter __end,
+				 _OutputIterator __result,
+				 _BinaryOperation __bin_op, _IteratorTag1,
+				 _IteratorTag2)
+    { return adjacent_difference(__begin, __end, __result, __bin_op,
+                                 __gnu_parallel::sequential_tag()); }
+
+  // Parallel algorithm for random access iterators.
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation>
+    _OutputIterator
+    __adjacent_difference_switch(_IIter __begin, _IIter __end,
+				 _OutputIterator __result,
+				 _BinaryOperation __bin_op,
+				 random_access_iterator_tag,
+				 random_access_iterator_tag,
+				 __gnu_parallel::_Parallelism
+				 __parallelism_tag
+				 = __gnu_parallel::parallel_balanced)
+    {
+      if (_GLIBCXX_PARALLEL_CONDITION(
+            static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+            >= __gnu_parallel::_Settings::get().adjacent_difference_minimal_n
+            && __gnu_parallel::__is_parallel(__parallelism_tag)))
+        {
+          bool __dummy = true;
+          typedef __gnu_parallel::_IteratorPair<_IIter, _OutputIterator,
+            random_access_iterator_tag> _ItTrip;
+          *__result = *__begin;
+          _ItTrip __begin_pair(__begin + 1, __result + 1),
+            __end_pair(__end, __result + (__end - __begin));
+          __gnu_parallel::__adjacent_difference_selector<_ItTrip>
+                                                            __functionality;
+          __gnu_parallel::
+            __for_each_template_random_access_ed(
+                __begin_pair, __end_pair, __bin_op, __functionality,
+                __gnu_parallel::_DummyReduct(), __dummy, __dummy, -1);
+          return __functionality._M_finish_iterator;
+        }
+      else
+        return adjacent_difference(__begin, __end, __result, __bin_op, 
+                                   __gnu_parallel::sequential_tag());
+    }
+
+  // Public interface.
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end,
+                        _OutputIterator __result,
+                        __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      return adjacent_difference(__begin, __end, __result,
+				 std::minus<_ValueType>(),
+				 __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _OutputIterator>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end,
+                        _OutputIterator __result)
+    {
+      typedef iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      return adjacent_difference(__begin, __end, __result,
+				 std::minus<_ValueType>());
+    }
+
+  template<typename _IIter, typename _OutputIterator,
+           typename _BinaryOperation>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end,
+                        _OutputIterator __result, _BinaryOperation __binary_op,
+                        __gnu_parallel::_Parallelism __parallelism_tag)
+    {
+      typedef iterator_traits<_IIter> _ITraitsType;
+      typedef typename _ITraitsType::iterator_category _IIteratorCategory;
+
+      typedef iterator_traits<_OutputIterator> _OTraitsType;
+      typedef typename _OTraitsType::iterator_category _OIterCategory;
+
+      return __adjacent_difference_switch(__begin, __end, __result,
+					  __binary_op,
+					  _IIteratorCategory(),
+					  _OIterCategory(),
+					  __parallelism_tag);
+    }
+
+  template<typename _IIter, typename _OutputIterator,
+	   typename _BinaryOperation>
+    inline _OutputIterator
+    adjacent_difference(_IIter __begin, _IIter __end,
+			_OutputIterator __result, _BinaryOperation __binary_op)
+    {
+      typedef iterator_traits<_IIter> _ITraitsType;
+      typedef typename _ITraitsType::iterator_category _IIteratorCategory;
+
+      typedef iterator_traits<_OutputIterator> _OTraitsType;
+      typedef typename _OTraitsType::iterator_category _OIterCategory;
+
+      return __adjacent_difference_switch(__begin, __end, __result,
+					  __binary_op,
+					  _IIteratorCategory(),
+					  _OIterCategory());
+    }
+} // end namespace
+} // end namespace
+
+#endif /* _GLIBCXX_NUMERIC_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numericfwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numericfwd.h
new file mode 100644
index 000000000..5ee3d6d4f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/numericfwd.h
@@ -0,0 +1,203 @@
+// <numeric> parallel extensions -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/numericfwd.h
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PARALLEL_NUMERICFWD_H
+#define _GLIBCXX_PARALLEL_NUMERICFWD_H 1
+
+#pragma GCC system_header
+
+#include <parallel/tags.h>
+#include <parallel/settings.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __parallel
+{
+  template<typename _IIter, typename _Tp>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp);
+
+  template<typename _IIter, typename _Tp>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Tp>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp, __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _Tp, typename _Tag>
+    _Tp
+    __accumulate_switch(_IIter, _IIter, _Tp, _Tag);
+
+  template<typename _IIter, typename _Tp, typename _BinaryOper>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp, _BinaryOper);
+
+  template<typename _IIter, typename _Tp, typename _BinaryOper>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp, _BinaryOper,
+               __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _Tp, typename _BinaryOper>
+    _Tp
+    accumulate(_IIter, _IIter, _Tp, _BinaryOper,
+               __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _Tp, typename _BinaryOper,
+           typename _Tag>
+    _Tp
+    __accumulate_switch(_IIter, _IIter, _Tp, _BinaryOper, _Tag);
+
+  template<typename _RAIter, typename _Tp, typename _BinaryOper>
+    _Tp
+    __accumulate_switch(_RAIter, _RAIter, _Tp, _BinaryOper,
+                      random_access_iterator_tag,
+                      __gnu_parallel::_Parallelism __parallelism
+                      = __gnu_parallel::parallel_unbalanced);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter,
+                        __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper, 
+                        __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter,
+                        __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper, 
+                        __gnu_parallel::_Parallelism);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper,
+           typename _Tag1, typename _Tag2>
+    _OIter
+    __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
+                               _Tag1, _Tag2);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper, 
+                               random_access_iterator_tag, 
+                               random_access_iterator_tag, 
+                               __gnu_parallel::_Parallelism __parallelism
+                               = __gnu_parallel::parallel_unbalanced);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp,
+                  __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp,
+                  __gnu_parallel::_Parallelism);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp,
+                  _BinaryFunction1, _BinaryFunction2);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
+                  _BinaryFunction2, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename BinaryFunction1, typename BinaryFunction2>
+    _Tp
+    inner_product(_IIter1, _IIter1, _IIter2, _Tp, BinaryFunction1,
+                  BinaryFunction2, __gnu_parallel::_Parallelism);
+
+  template<typename _RAIter1, typename _RAIter2, typename _Tp,
+           typename BinaryFunction1, typename BinaryFunction2>
+    _Tp
+    __inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1,
+                         BinaryFunction2, random_access_iterator_tag, 
+                         random_access_iterator_tag, 
+                         __gnu_parallel::_Parallelism
+                         = __gnu_parallel::parallel_unbalanced);
+
+  template<typename _IIter1, typename _IIter2, typename _Tp,
+           typename _BinaryFunction1, typename _BinaryFunction2,
+           typename _Tag1, typename _Tag2>
+    _Tp
+    __inner_product_switch(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1, 
+                         _BinaryFunction2, _Tag1, _Tag2);
+
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    partial_sum(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    partial_sum(_IIter, _IIter, _OIter, _BinaryOper,
+                __gnu_parallel::sequential_tag);
+
+  template<typename _IIter, typename _OIter>
+    _OIter
+    partial_sum(_IIter, _IIter, _OIter __result);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    partial_sum(_IIter, _IIter, _OIter, _BinaryOper);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper,
+           typename _Tag1, typename _Tag2>
+    _OIter
+    __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper, _Tag1, _Tag2);
+
+  template<typename _IIter, typename _OIter, typename _BinaryOper>
+    _OIter
+    __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper,
+                       random_access_iterator_tag, random_access_iterator_tag);
+} // end namespace
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_NUMERICFWD_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop.h
new file mode 100644
index 000000000..94f9e6bba
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop.h
@@ -0,0 +1,115 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/omp_loop.h
+ *  @brief Parallelization of embarrassingly parallel execution by
+ *  means of an OpenMP for loop.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_OMP_LOOP_H
+#define _GLIBCXX_PARALLEL_OMP_LOOP_H 1
+
+#include <omp.h>
+
+#include <parallel/settings.h>
+#include <parallel/basic_iterator.h>
+#include <parallel/base.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Embarrassingly parallel algorithm for random access
+   * iterators, using an OpenMP for loop.
+   *
+   *  @param __begin Begin iterator of element sequence.
+   *  @param __end End iterator of element sequence.
+   *  @param __o User-supplied functor (comparator, predicate, adding
+   *  functor, etc.).
+   *  @param __f Functor to @a process an element with __op (depends on
+   *  desired functionality, e. g. for std::for_each(), ...).
+   *  @param __r Functor to @a add a single __result to the already
+   *  processed elements (depends on functionality).
+   *  @param __base Base value for reduction.
+   *  @param __output Pointer to position where final result is written to
+   *  @param __bound Maximum number of elements processed (e. g. for
+   *  std::count_n()).
+   *  @return User-supplied functor (that may contain a part of the result).
+   */
+  template<typename _RAIter,
+	   typename _Op,
+	   typename _Fu,
+	   typename _Red,
+	   typename _Result>
+    _Op
+    __for_each_template_random_access_omp_loop(_RAIter __begin, _RAIter __end,
+					       _Op __o, _Fu& __f, _Red __r,
+					       _Result __base,
+					       _Result& __output,
+      typename std::iterator_traits<_RAIter>::difference_type __bound)
+    {
+      typedef typename std::iterator_traits<_RAIter>::difference_type
+        _DifferenceType;
+
+      _DifferenceType __length = __end - __begin;
+      _ThreadIndex __num_threads = __gnu_parallel::min<_DifferenceType>
+	(__get_max_threads(), __length);
+
+      _Result *__thread_results;
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __thread_results = new _Result[__num_threads];
+
+	  for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	    __thread_results[__i] = _Result();
+	}
+
+        _ThreadIndex __iam = omp_get_thread_num();
+
+#pragma omp for schedule(dynamic, _Settings::get().workstealing_chunk_size)
+        for (_DifferenceType __pos = 0; __pos < __length; ++__pos)
+          __thread_results[__iam] = __r(__thread_results[__iam],
+					__f(__o, __begin+__pos));
+      } //parallel
+
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+        __output = __r(__output, __thread_results[__i]);
+
+      delete [] __thread_results;
+
+      // Points to last element processed (needed as return value for
+      // some algorithms like transform).
+      __f._M_finish_iterator = __begin + __length;
+
+      return __o;
+    }
+
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_OMP_LOOP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop_static.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop_static.h
new file mode 100644
index 000000000..ca22d5999
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/omp_loop_static.h
@@ -0,0 +1,115 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/omp_loop_static.h
+ *  @brief Parallelization of embarrassingly parallel execution by
+ *  means of an OpenMP for loop with static scheduling.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_OMP_LOOP_STATIC_H
+#define _GLIBCXX_PARALLEL_OMP_LOOP_STATIC_H 1
+
+#include <omp.h>
+
+#include <parallel/settings.h>
+#include <parallel/basic_iterator.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Embarrassingly parallel algorithm for random access
+   * iterators, using an OpenMP for loop with static scheduling.
+   *
+   *  @param __begin Begin iterator of element sequence.
+   *  @param __end End iterator of element sequence.
+   *  @param __o User-supplied functor (comparator, predicate, adding
+   *  functor, ...).
+   *  @param __f Functor to @a process an element with __op (depends on
+   *  desired functionality, e. g. for std::for_each(), ...).
+   *  @param __r Functor to @a add a single __result to the already processed
+   *  __elements (depends on functionality).
+   *  @param __base Base value for reduction.
+   *  @param __output Pointer to position where final result is written to
+   *  @param __bound Maximum number of elements processed (e. g. for
+   *  std::count_n()).
+   *  @return User-supplied functor (that may contain a part of the result).
+   */
+  template<typename _RAIter,
+	   typename _Op,
+	   typename _Fu,
+	   typename _Red,
+	   typename _Result>
+    _Op
+    __for_each_template_random_access_omp_loop_static(_RAIter __begin,
+						      _RAIter __end, _Op __o,
+						      _Fu& __f, _Red __r,
+						      _Result __base,
+						      _Result& __output,
+      typename std::iterator_traits<_RAIter>::difference_type __bound)
+    {
+      typedef typename std::iterator_traits<_RAIter>::difference_type
+	_DifferenceType;
+
+      _DifferenceType __length = __end - __begin;
+      _ThreadIndex __num_threads = std::min<_DifferenceType>
+	(__get_max_threads(), __length);
+
+      _Result *__thread_results;
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __thread_results = new _Result[__num_threads];
+
+	  for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	    __thread_results[__i] = _Result();
+	}
+
+        _ThreadIndex __iam = omp_get_thread_num();
+
+#pragma omp for schedule(static, _Settings::get().workstealing_chunk_size)
+        for (_DifferenceType __pos = 0; __pos < __length; ++__pos)
+          __thread_results[__iam] = __r(__thread_results[__iam],
+                                        __f(__o, __begin+__pos));
+      } //parallel
+
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	__output = __r(__output, __thread_results[__i]);
+
+      delete [] __thread_results;
+
+      // Points to last element processed (needed as return value for
+      // some algorithms like transform).
+      __f.finish_iterator = __begin + __length;
+
+      return __o;
+    }
+
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_OMP_LOOP_STATIC_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/par_loop.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/par_loop.h
new file mode 100644
index 000000000..b776df4b7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/par_loop.h
@@ -0,0 +1,139 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/par_loop.h
+ *  @brief Parallelization of embarrassingly parallel execution by
+ *  means of equal splitting.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_PAR_LOOP_H
+#define _GLIBCXX_PARALLEL_PAR_LOOP_H 1
+
+#include <omp.h>
+#include <parallel/settings.h>
+#include <parallel/base.h>
+#include <parallel/equally_split.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Embarrassingly parallel algorithm for random access
+   * iterators, using hand-crafted parallelization by equal splitting
+   * the work.
+   *
+   *  @param __begin Begin iterator of element sequence.
+   *  @param __end End iterator of element sequence.
+   *  @param __o User-supplied functor (comparator, predicate, adding
+   *  functor, ...)
+   *  @param __f Functor to "process" an element with __op (depends on
+   *  desired functionality, e. g. for std::for_each(), ...).
+   *  @param __r Functor to "add" a single __result to the already
+   *  processed elements (depends on functionality).
+   *  @param __base Base value for reduction.
+   *  @param __output Pointer to position where final result is written to
+   *  @param __bound Maximum number of elements processed (e. g. for
+   *  std::count_n()).
+   *  @return User-supplied functor (that may contain a part of the result).
+   */
+  template<typename _RAIter,
+	   typename _Op,
+	   typename _Fu,
+	   typename _Red,
+	   typename _Result>
+    _Op
+    __for_each_template_random_access_ed(_RAIter __begin, _RAIter __end,
+					 _Op __o, _Fu& __f, _Red __r,
+					 _Result __base, _Result& __output,
+      typename std::iterator_traits<_RAIter>::difference_type __bound)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      const _DifferenceType __length = __end - __begin;
+      _Result *__thread_results;
+      bool* __constructed;
+
+      _ThreadIndex __num_threads = __gnu_parallel::min<_DifferenceType>
+	(__get_max_threads(), __length);
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __thread_results = static_cast<_Result*>
+	    (::operator new(__num_threads * sizeof(_Result)));
+	  __constructed = new bool[__num_threads];
+	}
+
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	// Neutral element.
+	_Result* __reduct;
+
+	_DifferenceType
+	  __start = equally_split_point(__length, __num_threads, __iam),
+	  __stop = equally_split_point(__length, __num_threads, __iam + 1);
+
+	if (__start < __stop)
+	  {
+	    __reduct = new _Result(__f(__o, __begin + __start));
+	    ++__start;
+	    __constructed[__iam] = true;
+	  }
+	else
+	  __constructed[__iam] = false;
+
+	for (; __start < __stop; ++__start)
+	  *__reduct = __r(*__reduct, __f(__o, __begin + __start));
+
+	if (__constructed[__iam])
+	  {
+	    ::new(&__thread_results[__iam]) _Result(*__reduct);
+	    delete __reduct;
+	  }
+      } //parallel
+
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	if (__constructed[__i])
+	  {
+	    __output = __r(__output, __thread_results[__i]);
+	    __thread_results[__i].~_Result();
+	  }
+
+      // Points to last element processed (needed as return value for
+      // some algorithms like transform).
+      __f._M_finish_iterator = __begin + __length;
+
+      ::operator delete(__thread_results);
+
+      delete[] __constructed;
+
+      return __o;
+    }
+
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_PAR_LOOP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/parallel.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/parallel.h
new file mode 100644
index 000000000..c4bfc057a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/parallel.h
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/parallel.h
+ *  @brief End-user include file. Provides advanced settings and
+ *  tuning options.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze and Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_PARALLEL_H
+#define _GLIBCXX_PARALLEL_PARALLEL_H 1
+
+#include <parallel/features.h>
+#include <parallel/compiletime_settings.h>
+#include <parallel/types.h>
+#include <parallel/tags.h>
+#include <parallel/settings.h>
+
+#endif /* _GLIBCXX_PARALLEL_PARALLEL_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partial_sum.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partial_sum.h
new file mode 100644
index 000000000..0be988178
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partial_sum.h
@@ -0,0 +1,231 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/partial_sum.h
+ *  @brief Parallel implementation of std::partial_sum(), i.e. prefix
+*  sums.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_PARTIAL_SUM_H
+#define _GLIBCXX_PARALLEL_PARTIAL_SUM_H 1
+
+#include <omp.h>
+#include <new>
+#include <bits/stl_algobase.h>
+#include <parallel/parallel.h>
+#include <parallel/numericfwd.h>
+
+namespace __gnu_parallel
+{
+  // Problem: there is no 0-element given.
+
+  /** @brief Base case prefix sum routine.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __result Begin iterator of output sequence.
+   *  @param __bin_op Associative binary function.
+   *  @param __value Start value. Must be passed since the neutral
+   *  element is unknown in general.
+   *  @return End iterator of output sequence. */
+  template<typename _IIter,
+	   typename _OutputIterator,
+	   typename _BinaryOperation>
+    _OutputIterator
+    __parallel_partial_sum_basecase(_IIter __begin, _IIter __end,
+				    _OutputIterator __result,
+				    _BinaryOperation __bin_op,
+      typename std::iterator_traits <_IIter>::value_type __value)
+    {
+      if (__begin == __end)
+	return __result;
+
+      while (__begin != __end)
+	{
+	  __value = __bin_op(__value, *__begin);
+	  *__result = __value;
+	  ++__result;
+	  ++__begin;
+	}
+      return __result;
+    }
+
+  /** @brief Parallel partial sum implementation, two-phase approach,
+      no recursion.
+      *  @param __begin Begin iterator of input sequence.
+      *  @param __end End iterator of input sequence.
+      *  @param __result Begin iterator of output sequence.
+      *  @param __bin_op Associative binary function.
+      *  @param __n Length of sequence.
+      *  @param __num_threads Number of threads to use.
+      *  @return End iterator of output sequence.
+      */
+  template<typename _IIter,
+	   typename _OutputIterator,
+	   typename _BinaryOperation>
+    _OutputIterator
+    __parallel_partial_sum_linear(_IIter __begin, _IIter __end,
+				  _OutputIterator __result,
+				  _BinaryOperation __bin_op,
+      typename std::iterator_traits<_IIter>::difference_type __n)
+    {
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      if (__begin == __end)
+	return __result;
+
+      _ThreadIndex __num_threads =
+        std::min<_DifferenceType>(__get_max_threads(), __n - 1);
+
+      if (__num_threads < 2)
+	{
+	  *__result = *__begin;
+	  return __parallel_partial_sum_basecase(__begin + 1, __end,
+						 __result + 1, __bin_op,
+						 *__begin);
+	}
+
+      _DifferenceType* __borders;
+      _ValueType* __sums;
+
+      const _Settings& __s = _Settings::get();
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	    
+	  __borders = new _DifferenceType[__num_threads + 2];
+
+	  if (__s.partial_sum_dilation == 1.0f)
+	    equally_split(__n, __num_threads + 1, __borders);
+	  else
+	    {
+	      _DifferenceType __first_part_length =
+		  std::max<_DifferenceType>(1,
+		    __n / (1.0f + __s.partial_sum_dilation * __num_threads));
+	      _DifferenceType __chunk_length =
+		  (__n - __first_part_length) / __num_threads;
+	      _DifferenceType __borderstart =
+		  __n - __num_threads * __chunk_length;
+	      __borders[0] = 0;
+	      for (_ThreadIndex __i = 1; __i < (__num_threads + 1); ++__i)
+		{
+		  __borders[__i] = __borderstart;
+		  __borderstart += __chunk_length;
+		}
+	      __borders[__num_threads + 1] = __n;
+	    }
+
+	  __sums = static_cast<_ValueType*>(::operator new(sizeof(_ValueType)
+                                                           * __num_threads));
+	  _OutputIterator __target_end;
+	} //single
+
+        _ThreadIndex __iam = omp_get_thread_num();
+        if (__iam == 0)
+          {
+            *__result = *__begin;
+            __parallel_partial_sum_basecase(__begin + 1,
+					    __begin + __borders[1],
+					    __result + 1,
+					    __bin_op, *__begin);
+            ::new(&(__sums[__iam])) _ValueType(*(__result + __borders[1] - 1));
+          }
+        else
+          {
+            ::new(&(__sums[__iam]))
+              _ValueType(__gnu_parallel::accumulate(
+                                         __begin + __borders[__iam] + 1,
+                                         __begin + __borders[__iam + 1],
+                                         *(__begin + __borders[__iam]),
+                                         __bin_op,
+                                         __gnu_parallel::sequential_tag()));
+          }
+
+#       pragma omp barrier
+
+#       pragma omp single
+	__parallel_partial_sum_basecase(__sums + 1, __sums + __num_threads,
+					__sums + 1, __bin_op, __sums[0]);
+
+#       pragma omp barrier
+
+	// Still same team.
+        __parallel_partial_sum_basecase(__begin + __borders[__iam + 1],
+					__begin + __borders[__iam + 2],
+					__result + __borders[__iam + 1],
+					__bin_op, __sums[__iam]);
+      } //parallel
+
+      for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	__sums[__i].~_ValueType();
+      ::operator delete(__sums);
+
+      delete[] __borders;
+
+      return __result + __n;
+    }
+
+  /** @brief Parallel partial sum front-__end.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __result Begin iterator of output sequence.
+   *  @param __bin_op Associative binary function.
+   *  @return End iterator of output sequence. */
+  template<typename _IIter,
+	   typename _OutputIterator,
+	   typename _BinaryOperation>
+    _OutputIterator
+    __parallel_partial_sum(_IIter __begin, _IIter __end,
+			   _OutputIterator __result, _BinaryOperation __bin_op)
+    {
+      _GLIBCXX_CALL(__begin - __end)
+
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+
+      switch (_Settings::get().partial_sum_algorithm)
+	{
+	case LINEAR:
+	  // Need an initial offset.
+	  return __parallel_partial_sum_linear(__begin, __end, __result,
+					       __bin_op, __n);
+	default:
+	  // Partial_sum algorithm not implemented.
+	  _GLIBCXX_PARALLEL_ASSERT(0);
+	  return __result + __n;
+	}
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_PARTIAL_SUM_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partition.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partition.h
new file mode 100644
index 000000000..c65132158
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/partition.h
@@ -0,0 +1,434 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/partition.h
+ *  @brief Parallel implementation of std::partition(),
+ *  std::nth_element(), and std::partial_sort().
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_PARTITION_H
+#define _GLIBCXX_PARALLEL_PARTITION_H 1
+
+#include <parallel/basic_iterator.h>
+#include <parallel/sort.h>
+#include <parallel/random_number.h>
+#include <bits/stl_algo.h>
+#include <parallel/parallel.h>
+
+/** @brief Decide whether to declare certain variables volatile. */
+#define _GLIBCXX_VOLATILE volatile
+
+namespace __gnu_parallel
+{
+  /** @brief Parallel implementation of std::partition.
+    *  @param __begin Begin iterator of input sequence to split.
+    *  @param __end End iterator of input sequence to split.
+    *  @param __pred Partition predicate, possibly including some kind
+    *         of pivot.
+    *  @param __num_threads Maximum number of threads to use for this task.
+    *  @return Number of elements not fulfilling the predicate. */
+  template<typename _RAIter, typename _Predicate>
+    typename std::iterator_traits<_RAIter>::difference_type
+    __parallel_partition(_RAIter __begin, _RAIter __end,
+			 _Predicate __pred, _ThreadIndex __num_threads)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+
+      _GLIBCXX_CALL(__n)
+
+      const _Settings& __s = _Settings::get();
+
+      // shared
+      _GLIBCXX_VOLATILE _DifferenceType __left = 0, __right = __n - 1,
+                                        __dist = __n,
+                                        __leftover_left, __leftover_right,
+                                        __leftnew, __rightnew;
+
+      // just 0 or 1, but int to allow atomic operations
+      int* __reserved_left = 0, * __reserved_right = 0;
+
+      _DifferenceType __chunk_size = __s.partition_chunk_size;
+
+      //at least two chunks per thread
+      if (__dist >= 2 * __num_threads * __chunk_size)
+#       pragma omp parallel num_threads(__num_threads)
+	{
+#         pragma omp single
+	  {
+	    __num_threads = omp_get_num_threads();
+	    __reserved_left = new int[__num_threads];
+	    __reserved_right = new int[__num_threads];
+
+	    if (__s.partition_chunk_share > 0.0)
+	      __chunk_size = std::max<_DifferenceType>
+		(__s.partition_chunk_size, (double)__n 
+		 * __s.partition_chunk_share / (double)__num_threads);
+	    else
+	      __chunk_size = __s.partition_chunk_size;
+	  }
+
+	  while (__dist >= 2 * __num_threads * __chunk_size)
+	    {
+#             pragma omp single
+	      {
+		_DifferenceType __num_chunks = __dist / __chunk_size;
+
+		for (_ThreadIndex __r = 0; __r < __num_threads; ++__r)
+		  {
+		    __reserved_left [__r] = 0; // false
+		    __reserved_right[__r] = 0; // false
+		  }
+		__leftover_left = 0;
+		__leftover_right = 0;
+	      } //implicit barrier
+
+	      // Private.
+	      _DifferenceType __thread_left, __thread_left_border,
+		              __thread_right, __thread_right_border;
+
+	      __thread_left = __left + 1;
+	      // Just to satisfy the condition below.
+	      __thread_left_border = __thread_left - 1;
+
+	      __thread_right = __n - 1;
+             // Just to satisfy the condition below.
+	      __thread_right_border = __thread_right + 1;
+
+	      bool __iam_finished = false;
+	      while (!__iam_finished)
+		{
+		  if (__thread_left > __thread_left_border)
+		    {
+                      _DifferenceType __former_dist =
+                              __fetch_and_add(&__dist, -__chunk_size);
+                      if (__former_dist < __chunk_size)
+                        {
+                          __fetch_and_add(&__dist, __chunk_size);
+                          __iam_finished = true;
+                          break;
+                        }
+                      else
+                        {
+                          __thread_left =
+                                  __fetch_and_add(&__left, __chunk_size);
+                          __thread_left_border =
+                                  __thread_left + (__chunk_size - 1);
+                        }
+		    }
+
+		  if (__thread_right < __thread_right_border)
+		    {
+                      _DifferenceType __former_dist =
+                              __fetch_and_add(&__dist, -__chunk_size);
+                      if (__former_dist < __chunk_size)
+                        {
+                          __fetch_and_add(&__dist, __chunk_size);
+                          __iam_finished = true;
+                          break;
+                        }
+                      else
+                        {
+                          __thread_right =
+                                  __fetch_and_add(&__right, -__chunk_size);
+                          __thread_right_border =
+                                  __thread_right - (__chunk_size - 1);
+                        }
+		    }
+
+		  // Swap as usual.
+		  while (__thread_left < __thread_right)
+		    {
+		      while (__pred(__begin[__thread_left])
+			     && __thread_left <= __thread_left_border)
+			++__thread_left;
+		      while (!__pred(__begin[__thread_right])
+			     && __thread_right >= __thread_right_border)
+			--__thread_right;
+
+		      if (__thread_left > __thread_left_border
+			  || __thread_right < __thread_right_border)
+			// Fetch new chunk(__s).
+			break;
+
+		      std::iter_swap(__begin + __thread_left,
+                             __begin + __thread_right);
+		      ++__thread_left;
+		      --__thread_right;
+		    }
+		}
+
+	      // Now swap the leftover chunks to the right places.
+	      if (__thread_left <= __thread_left_border)
+#               pragma omp atomic
+		++__leftover_left;
+	      if (__thread_right >= __thread_right_border)
+#               pragma omp atomic
+		++__leftover_right;
+
+#             pragma omp barrier
+
+              _DifferenceType
+                    __leftold = __left,
+                    __leftnew = __left - __leftover_left * __chunk_size,
+                    __rightold = __right,
+                    __rightnew = __right + __leftover_right * __chunk_size;
+
+	      // <=> __thread_left_border + (__chunk_size - 1) >= __leftnew
+	      if (__thread_left <= __thread_left_border
+		  && __thread_left_border >= __leftnew)
+		{
+		  // Chunk already in place, reserve spot.
+		__reserved_left[(__left - (__thread_left_border + 1))
+				/ __chunk_size] = 1;
+		}
+
+	      // <=> __thread_right_border - (__chunk_size - 1) <= __rightnew
+	      if (__thread_right >= __thread_right_border
+		  && __thread_right_border <= __rightnew)
+		{
+		  // Chunk already in place, reserve spot.
+		  __reserved_right[((__thread_right_border - 1) - __right)
+				   / __chunk_size] = 1;
+		}
+
+#             pragma omp barrier
+
+	      if (__thread_left <= __thread_left_border
+		  && __thread_left_border < __leftnew)
+		{
+		  // Find spot and swap.
+		  _DifferenceType __swapstart = -1;
+                  for (int __r = 0; __r < __leftover_left; ++__r)
+                    if (__reserved_left[__r] == 0
+                        && __compare_and_swap(&(__reserved_left[__r]), 0, 1))
+                      {
+                        __swapstart = __leftold - (__r + 1) * __chunk_size;
+                        break;
+                      }
+
+#if _GLIBCXX_ASSERTIONS
+		  _GLIBCXX_PARALLEL_ASSERT(__swapstart != -1);
+#endif
+
+		  std::swap_ranges(__begin + __thread_left_border
+				   - (__chunk_size - 1),
+				   __begin + __thread_left_border + 1,
+				   __begin + __swapstart);
+		}
+
+	      if (__thread_right >= __thread_right_border
+		  && __thread_right_border > __rightnew)
+		{
+		  // Find spot and swap
+		  _DifferenceType __swapstart = -1;
+                  for (int __r = 0; __r < __leftover_right; ++__r)
+                    if (__reserved_right[__r] == 0
+                        && __compare_and_swap(&(__reserved_right[__r]), 0, 1))
+                      {
+                        __swapstart = __rightold + __r * __chunk_size + 1;
+                        break;
+                      }
+
+#if _GLIBCXX_ASSERTIONS
+		  _GLIBCXX_PARALLEL_ASSERT(__swapstart != -1);
+#endif
+
+		  std::swap_ranges(__begin + __thread_right_border,
+				   __begin + __thread_right_border
+				   + __chunk_size, __begin + __swapstart);
+	      }
+#if _GLIBCXX_ASSERTIONS
+#             pragma omp barrier
+
+#             pragma omp single
+	      {
+		for (_DifferenceType __r = 0; __r < __leftover_left; ++__r)
+		  _GLIBCXX_PARALLEL_ASSERT(__reserved_left[__r] == 1);
+		for (_DifferenceType __r = 0; __r < __leftover_right; ++__r)
+		  _GLIBCXX_PARALLEL_ASSERT(__reserved_right[__r] == 1);
+	      }
+#endif
+
+	      __left = __leftnew;
+	      __right = __rightnew;
+              __dist = __right - __left + 1;
+	    }
+
+#           pragma omp flush(__left, __right)
+	} // end "recursion" //parallel
+
+        _DifferenceType __final_left = __left, __final_right = __right;
+
+	while (__final_left < __final_right)
+	  {
+	    // Go right until key is geq than pivot.
+	    while (__pred(__begin[__final_left])
+		   && __final_left < __final_right)
+	      ++__final_left;
+
+	    // Go left until key is less than pivot.
+	    while (!__pred(__begin[__final_right])
+		   && __final_left < __final_right)
+	      --__final_right;
+
+	    if (__final_left == __final_right)
+	      break;
+	    std::iter_swap(__begin + __final_left, __begin + __final_right);
+	    ++__final_left;
+	    --__final_right;
+	  }
+
+	// All elements on the left side are < piv, all elements on the
+	// right are >= piv
+	delete[] __reserved_left;
+	delete[] __reserved_right;
+
+	// Element "between" __final_left and __final_right might not have
+	// been regarded yet
+	if (__final_left < __n && !__pred(__begin[__final_left]))
+	  // Really swapped.
+	  return __final_left;
+	else
+	  return __final_left + 1;
+    }
+
+  /**
+    *  @brief Parallel implementation of std::nth_element().
+    *  @param __begin Begin iterator of input sequence.
+    *  @param __nth _Iterator of element that must be in position afterwards.
+    *  @param __end End iterator of input sequence.
+    *  @param __comp Comparator.
+    */
+  template<typename _RAIter, typename _Compare>
+    void 
+    __parallel_nth_element(_RAIter __begin, _RAIter __nth, 
+			   _RAIter __end, _Compare __comp)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _GLIBCXX_CALL(__end - __begin)
+
+      _RAIter __split;
+      _RandomNumber __rng;
+
+      const _Settings& __s = _Settings::get();
+      _DifferenceType __minimum_length = std::max<_DifferenceType>(2,
+        std::max(__s.nth_element_minimal_n, __s.partition_minimal_n));
+
+      // Break if input range to small.
+      while (static_cast<_SequenceIndex>(__end - __begin) >= __minimum_length)
+	{
+          _DifferenceType __n = __end - __begin;
+
+          _RAIter __pivot_pos = __begin + __rng(__n);
+
+          // Swap __pivot_pos value to end.
+          if (__pivot_pos != (__end - 1))
+            std::iter_swap(__pivot_pos, __end - 1);
+          __pivot_pos = __end - 1;
+
+          // _Compare must have first_value_type, second_value_type,
+          // result_type
+          // _Compare ==
+          // __gnu_parallel::_Lexicographic<S, int,
+	  //                                __gnu_parallel::_Less<S, S> >
+          // __pivot_pos == std::pair<S, int>*
+          __gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool>
+            __pred(__comp, *__pivot_pos);
+
+          // Divide, leave pivot unchanged in last place.
+          _RAIter __split_pos1, __split_pos2;
+          __split_pos1 = __begin + __parallel_partition(__begin, __end - 1,
+							__pred,
+							__get_max_threads());
+
+          // Left side: < __pivot_pos; __right side: >= __pivot_pos
+
+          // Swap pivot back to middle.
+          if (__split_pos1 != __pivot_pos)
+            std::iter_swap(__split_pos1, __pivot_pos);
+          __pivot_pos = __split_pos1;
+
+          // In case all elements are equal, __split_pos1 == 0
+          if ((__split_pos1 + 1 - __begin) < (__n >> 7)
+              || (__end - __split_pos1) < (__n >> 7))
+            {
+              // Very unequal split, one part smaller than one 128th
+              // elements not strictly larger than the pivot.
+              __gnu_parallel::__unary_negate<__gnu_parallel::
+        	__binder1st<_Compare, _ValueType,
+		            _ValueType, bool>, _ValueType>
+        	__pred(__gnu_parallel::__binder1st<_Compare, _ValueType,
+		       _ValueType, bool>(__comp, *__pivot_pos));
+
+              // Find other end of pivot-equal range.
+              __split_pos2 = __gnu_sequential::partition(__split_pos1 + 1,
+							 __end, __pred);
+            }
+          else
+            // Only skip the pivot.
+            __split_pos2 = __split_pos1 + 1;
+
+          // Compare iterators.
+          if (__split_pos2 <= __nth)
+            __begin = __split_pos2;
+          else if (__nth < __split_pos1)
+            __end = __split_pos1;
+          else
+            break;
+	}
+
+      // Only at most _Settings::partition_minimal_n __elements __left.
+      __gnu_sequential::nth_element(__begin, __nth, __end, __comp);
+    }
+
+  /** @brief Parallel implementation of std::partial_sort().
+  *  @param __begin Begin iterator of input sequence.
+  *  @param __middle Sort until this position.
+  *  @param __end End iterator of input sequence.
+  *  @param __comp Comparator. */
+  template<typename _RAIter, typename _Compare>
+    void
+    __parallel_partial_sort(_RAIter __begin,
+			    _RAIter __middle,
+			    _RAIter __end, _Compare __comp)
+    {
+      __parallel_nth_element(__begin, __middle, __end, __comp);
+      std::sort(__begin, __middle, __comp);
+    }
+
+} //namespace __gnu_parallel
+
+#undef _GLIBCXX_VOLATILE
+
+#endif /* _GLIBCXX_PARALLEL_PARTITION_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/queue.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/queue.h
new file mode 100644
index 000000000..03c1c78bb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/queue.h
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/queue.h
+ *  @brief Lock-free double-ended queue.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_QUEUE_H
+#define _GLIBCXX_PARALLEL_QUEUE_H 1
+
+#include <parallel/types.h>
+#include <parallel/base.h>
+#include <parallel/compatibility.h>
+
+/** @brief Decide whether to declare certain variable volatile in this file. */
+#define _GLIBCXX_VOLATILE volatile
+
+namespace __gnu_parallel
+{
+  /**@brief Double-ended queue of bounded size, allowing lock-free
+   *  atomic access.  push_front() and pop_front() must not be called
+   *  concurrently to each other, while pop_back() can be called
+   *  concurrently at all times.
+   *  @c empty(), @c size(), and @c top() are intentionally not provided.
+   *  Calling them would not make sense in a concurrent setting.
+   *  @param _Tp Contained element type. */
+  template<typename _Tp>
+    class _RestrictedBoundedConcurrentQueue
+    {
+    private:
+      /** @brief Array of elements, seen as cyclic buffer. */
+      _Tp* _M_base;
+
+      /** @brief Maximal number of elements contained at the same time. */
+      _SequenceIndex _M_max_size;
+
+      /** @brief Cyclic __begin and __end pointers contained in one
+          atomically changeable value. */
+      _GLIBCXX_VOLATILE _CASable _M_borders;
+
+    public:
+      /** @brief Constructor. Not to be called concurrent, of course.
+       *  @param _M_max_size Maximal number of elements to be contained. */
+      _RestrictedBoundedConcurrentQueue(_SequenceIndex __max_size)
+      {
+        _M_max_size = __max_size;
+        _M_base = new _Tp[__max_size];
+        _M_borders = __encode2(0, 0);
+#pragma omp flush
+      }
+
+      /** @brief Destructor. Not to be called concurrent, of course. */
+      ~_RestrictedBoundedConcurrentQueue()
+      { delete[] _M_base; }
+
+      /** @brief Pushes one element into the queue at the front end.
+       *  Must not be called concurrently with pop_front(). */
+      void
+      push_front(const _Tp& __t)
+      {
+        _CASable __former_borders = _M_borders;
+        int __former_front, __former_back;
+        __decode2(__former_borders, __former_front, __former_back);
+        *(_M_base + __former_front % _M_max_size) = __t;
+#if _GLIBCXX_ASSERTIONS
+        // Otherwise: front - back > _M_max_size eventually.
+        _GLIBCXX_PARALLEL_ASSERT(((__former_front + 1) - __former_back)
+                                 <= _M_max_size);
+#endif
+        __fetch_and_add(&_M_borders, __encode2(1, 0));
+      }
+
+      /** @brief Pops one element from the queue at the front end.
+       *  Must not be called concurrently with pop_front(). */
+      bool
+      pop_front(_Tp& __t)
+      {
+        int __former_front, __former_back;
+#pragma omp flush
+        __decode2(_M_borders, __former_front, __former_back);
+        while (__former_front > __former_back)
+          {
+            // Chance.
+            _CASable __former_borders = __encode2(__former_front,
+						  __former_back);
+            _CASable __new_borders = __encode2(__former_front - 1,
+					       __former_back);
+            if (__compare_and_swap(&_M_borders, __former_borders,
+				   __new_borders))
+              {
+                __t = *(_M_base + (__former_front - 1) % _M_max_size);
+                return true;
+              }
+#pragma omp flush
+            __decode2(_M_borders, __former_front, __former_back);
+          }
+        return false;
+      }
+
+      /** @brief Pops one element from the queue at the front end.
+       *  Must not be called concurrently with pop_front(). */
+      bool
+      pop_back(_Tp& __t)        //queue behavior
+      {
+        int __former_front, __former_back;
+#pragma omp flush
+        __decode2(_M_borders, __former_front, __former_back);
+        while (__former_front > __former_back)
+          {
+            // Chance.
+            _CASable __former_borders = __encode2(__former_front,
+						  __former_back);
+            _CASable __new_borders = __encode2(__former_front,
+					       __former_back + 1);
+            if (__compare_and_swap(&_M_borders, __former_borders,
+				   __new_borders))
+              {
+                __t = *(_M_base + __former_back % _M_max_size);
+                return true;
+              }
+#pragma omp flush
+            __decode2(_M_borders, __former_front, __former_back);
+          }
+        return false;
+      }
+  };
+}       //namespace __gnu_parallel
+
+#undef _GLIBCXX_VOLATILE
+
+#endif /* _GLIBCXX_PARALLEL_QUEUE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/quicksort.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/quicksort.h
new file mode 100644
index 000000000..1b4d5983d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/quicksort.h
@@ -0,0 +1,176 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/quicksort.h
+ *  @brief Implementation of a unbalanced parallel quicksort (in-place).
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_QUICKSORT_H
+#define _GLIBCXX_PARALLEL_QUICKSORT_H 1
+
+#include <parallel/parallel.h>
+#include <parallel/partition.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Unbalanced quicksort divide step.
+   *  @param __begin Begin iterator of subsequence.
+   *  @param __end End iterator of subsequence.
+   *  @param __comp Comparator.
+   *  @param __pivot_rank Desired __rank of the pivot.
+   *  @param __num_samples Choose pivot from that many samples.
+   *  @param __num_threads Number of threads that are allowed to work on
+   *  this part.
+   */
+  template<typename _RAIter, typename _Compare>
+    typename std::iterator_traits<_RAIter>::difference_type
+    __parallel_sort_qs_divide(_RAIter __begin, _RAIter __end,
+			      _Compare __comp, typename std::iterator_traits
+			      <_RAIter>::difference_type __pivot_rank,
+			      typename std::iterator_traits
+			      <_RAIter>::difference_type
+			      __num_samples, _ThreadIndex __num_threads)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+      __num_samples = std::min(__num_samples, __n);
+
+      // Allocate uninitialized, to avoid default constructor.
+      _ValueType* __samples = static_cast<_ValueType*>
+	(::operator new(__num_samples * sizeof(_ValueType)));
+
+      for (_DifferenceType __s = 0; __s < __num_samples; ++__s)
+        {
+          const unsigned long long __index = static_cast<unsigned long long>
+	    (__s) * __n / __num_samples;
+          ::new(&(__samples[__s])) _ValueType(__begin[__index]);
+        }
+
+      __gnu_sequential::sort(__samples, __samples + __num_samples, __comp);
+
+      _ValueType& __pivot = __samples[__pivot_rank * __num_samples / __n];
+
+      __gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool>
+        __pred(__comp, __pivot);
+      _DifferenceType __split = __parallel_partition(__begin, __end,
+						     __pred, __num_threads);
+
+      for (_DifferenceType __s = 0; __s < __num_samples; ++__s)
+	__samples[__s].~_ValueType();
+      ::operator delete(__samples);
+
+      return __split;
+    }
+
+  /** @brief Unbalanced quicksort conquer step.
+   *  @param __begin Begin iterator of subsequence.
+   *  @param __end End iterator of subsequence.
+   *  @param __comp Comparator.
+   *  @param __num_threads Number of threads that are allowed to work on
+   *  this part.
+   */
+  template<typename _RAIter, typename _Compare>
+    void
+    __parallel_sort_qs_conquer(_RAIter __begin, _RAIter __end,
+			       _Compare __comp,
+			       _ThreadIndex __num_threads)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      if (__num_threads <= 1)
+        {
+          __gnu_sequential::sort(__begin, __end, __comp);
+          return;
+        }
+
+      _DifferenceType __n = __end - __begin, __pivot_rank;
+
+      if (__n <= 1)
+        return;
+
+      _ThreadIndex __num_threads_left;
+
+      if ((__num_threads % 2) == 1)
+        __num_threads_left = __num_threads / 2 + 1;
+      else
+        __num_threads_left = __num_threads / 2;
+
+      __pivot_rank = __n * __num_threads_left / __num_threads;
+
+      _DifferenceType __split = __parallel_sort_qs_divide
+	(__begin, __end, __comp, __pivot_rank,
+	 _Settings::get().sort_qs_num_samples_preset, __num_threads);
+
+#pragma omp parallel sections num_threads(2)
+      {
+#pragma omp section
+        __parallel_sort_qs_conquer(__begin, __begin + __split,
+				   __comp, __num_threads_left);
+#pragma omp section
+        __parallel_sort_qs_conquer(__begin + __split, __end,
+				   __comp, __num_threads - __num_threads_left);
+      }
+    }
+
+
+  /** @brief Unbalanced quicksort main call.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator input sequence, ignored.
+   *  @param __comp Comparator.
+   *  @param __num_threads Number of threads that are allowed to work on
+   *  this part.
+   */
+  template<typename _RAIter, typename _Compare>
+    void
+    __parallel_sort_qs(_RAIter __begin, _RAIter __end,
+		       _Compare __comp,
+		       _ThreadIndex __num_threads)
+    {
+      _GLIBCXX_CALL(__n)
+
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+
+      // At least one element per processor.
+      if (__num_threads > __n)
+        __num_threads = static_cast<_ThreadIndex>(__n);
+
+      __parallel_sort_qs_conquer(
+        __begin, __begin + __n, __comp, __num_threads);
+    }
+
+} //namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_QUICKSORT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_number.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_number.h
new file mode 100644
index 000000000..c39f15e12
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_number.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/random_number.h
+ *  @brief Random number generator based on the Mersenne twister.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_RANDOM_NUMBER_H
+#define _GLIBCXX_PARALLEL_RANDOM_NUMBER_H 1
+
+#include <parallel/types.h>
+#include <tr1/random>
+#include <limits>
+
+namespace __gnu_parallel
+{
+  /** @brief Random number generator, based on the Mersenne twister. */
+  class _RandomNumber
+  {
+  private:
+    std::tr1::mt19937   _M_mt;
+    uint64_t            _M_supremum;
+    uint64_t            _M_rand_sup;
+    double              _M_supremum_reciprocal;
+    double              _M_rand_sup_reciprocal;
+
+    // Assumed to be twice as long as the usual random number.
+    uint64_t              __cache;
+
+    // Bit results.
+    int __bits_left;
+    
+    static uint32_t
+    __scale_down(uint64_t __x,
+#if _GLIBCXX_SCALE_DOWN_FPU
+               uint64_t /*_M_supremum*/, double _M_supremum_reciprocal)
+#else
+               uint64_t _M_supremum, double /*_M_supremum_reciprocal*/)
+#endif
+        {
+#if _GLIBCXX_SCALE_DOWN_FPU
+          return uint32_t(__x * _M_supremum_reciprocal);
+#else
+          return static_cast<uint32_t>(__x % _M_supremum);
+#endif
+        }
+
+  public:
+    /** @brief Default constructor. Seed with 0. */
+    _RandomNumber()
+    : _M_mt(0), _M_supremum(0x100000000ULL),
+      _M_rand_sup(1ULL << std::numeric_limits<uint32_t>::digits),
+      _M_supremum_reciprocal(double(_M_supremum) / double(_M_rand_sup)),
+      _M_rand_sup_reciprocal(1.0 / double(_M_rand_sup)),
+      __cache(0), __bits_left(0) { }
+
+    /** @brief Constructor.
+     *  @param __seed Random __seed.
+     *  @param _M_supremum Generate integer random numbers in the
+     *                  interval @c [0,_M_supremum). */
+    _RandomNumber(uint32_t __seed, uint64_t _M_supremum = 0x100000000ULL)
+    : _M_mt(__seed), _M_supremum(_M_supremum),
+      _M_rand_sup(1ULL << std::numeric_limits<uint32_t>::digits),
+      _M_supremum_reciprocal(double(_M_supremum) / double(_M_rand_sup)),
+      _M_rand_sup_reciprocal(1.0 / double(_M_rand_sup)),
+      __cache(0), __bits_left(0) { }
+
+    /** @brief Generate unsigned random 32-bit integer. */
+    uint32_t
+    operator()()
+    { return __scale_down(_M_mt(), _M_supremum, _M_supremum_reciprocal); }
+
+    /** @brief Generate unsigned random 32-bit integer in the
+        interval @c [0,local_supremum). */
+    uint32_t
+    operator()(uint64_t local_supremum)
+    {
+      return __scale_down(_M_mt(), local_supremum,
+                        double(local_supremum * _M_rand_sup_reciprocal));
+    }
+
+    /** @brief Generate a number of random bits, run-time parameter.
+     *  @param bits Number of bits to generate. */
+    unsigned long
+    __genrand_bits(int __bits)
+    {
+      unsigned long __res = __cache & ((1 << __bits) - 1);
+      __cache = __cache >> __bits;
+      __bits_left -= __bits;
+      if (__bits_left < 32)
+        {
+          __cache |= ((uint64_t(_M_mt())) << __bits_left);
+          __bits_left += 32;
+        }
+      return __res;
+    }
+};
+
+} // namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_RANDOM_NUMBER_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_shuffle.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_shuffle.h
new file mode 100644
index 000000000..c3967c228
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/random_shuffle.h
@@ -0,0 +1,533 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/random_shuffle.h
+ *  @brief Parallel implementation of std::random_shuffle().
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_RANDOM_SHUFFLE_H
+#define _GLIBCXX_PARALLEL_RANDOM_SHUFFLE_H 1
+
+#include <limits>
+#include <bits/stl_numeric.h>
+#include <parallel/parallel.h>
+#include <parallel/random_number.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Type to hold the index of a bin.
+    *
+    *  Since many variables of this type are allocated, it should be
+    *  chosen as small as possible.
+    */
+  typedef unsigned short _BinIndex;
+
+  /** @brief Data known to every thread participating in
+      __gnu_parallel::__parallel_random_shuffle(). */
+  template<typename _RAIter>
+    struct _DRandomShufflingGlobalData
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      /** @brief Begin iterator of the __source. */
+      _RAIter& _M_source;
+
+      /** @brief Temporary arrays for each thread. */
+      _ValueType** _M_temporaries;
+
+      /** @brief Two-dimensional array to hold the thread-bin distribution.
+       *
+       *  Dimensions (_M_num_threads + 1) __x (_M_num_bins + 1). */
+      _DifferenceType** _M_dist;
+
+      /** @brief Start indexes of the threads' __chunks. */
+      _DifferenceType* _M_starts;
+
+      /** @brief Number of the thread that will further process the
+          corresponding bin. */
+      _ThreadIndex* _M_bin_proc;
+
+      /** @brief Number of bins to distribute to. */
+      int _M_num_bins;
+
+      /** @brief Number of bits needed to address the bins. */
+      int _M_num_bits;
+
+      /** @brief Constructor. */
+      _DRandomShufflingGlobalData(_RAIter& __source)
+      : _M_source(__source) { }
+    };
+
+  /** @brief Local data for a thread participating in
+      __gnu_parallel::__parallel_random_shuffle().
+    */
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    struct _DRSSorterPU
+    {
+      /** @brief Number of threads participating in total. */
+      int _M_num_threads;
+
+      /** @brief Begin index for bins taken care of by this thread. */
+      _BinIndex _M_bins_begin;
+
+      /** @brief End index for bins taken care of by this thread. */
+      _BinIndex __bins_end;
+
+      /** @brief Random _M_seed for this thread. */
+      uint32_t _M_seed;
+
+      /** @brief Pointer to global data. */
+      _DRandomShufflingGlobalData<_RAIter>* _M_sd;
+    };
+
+  /** @brief Generate a random number in @c [0,2^__logp).
+    *  @param __logp Logarithm (basis 2) of the upper range __bound.
+    *  @param __rng Random number generator to use.
+    */
+  template<typename _RandomNumberGenerator>
+    inline int
+    __random_number_pow2(int __logp, _RandomNumberGenerator& __rng)
+    { return __rng.__genrand_bits(__logp); }
+
+  /** @brief Random shuffle code executed by each thread.
+    *  @param __pus Array of thread-local data records. */
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void 
+    __parallel_random_shuffle_drs_pu(_DRSSorterPU<_RAIter,
+				     _RandomNumberGenerator>* __pus)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _ThreadIndex __iam = omp_get_thread_num();
+      _DRSSorterPU<_RAIter, _RandomNumberGenerator>* __d = &__pus[__iam];
+      _DRandomShufflingGlobalData<_RAIter>* __sd = __d->_M_sd;
+
+      // Indexing: _M_dist[bin][processor]
+      _DifferenceType __length = (__sd->_M_starts[__iam + 1]
+				  - __sd->_M_starts[__iam]);
+      _BinIndex* __oracles = new _BinIndex[__length];
+      _DifferenceType* __dist = new _DifferenceType[__sd->_M_num_bins + 1];
+      _BinIndex* __bin_proc = new _BinIndex[__sd->_M_num_bins];
+      _ValueType** __temporaries = new _ValueType*[__d->_M_num_threads];
+
+      // Compute oracles and count appearances.
+      for (_BinIndex __b = 0; __b < __sd->_M_num_bins + 1; ++__b)
+	__dist[__b] = 0;
+      int __num_bits = __sd->_M_num_bits;
+
+      _RandomNumber __rng(__d->_M_seed);
+
+      // First main loop.
+      for (_DifferenceType __i = 0; __i < __length; ++__i)
+	{
+          _BinIndex __oracle = __random_number_pow2(__num_bits, __rng);
+          __oracles[__i] = __oracle;
+
+          // To allow prefix (partial) sum.
+          ++(__dist[__oracle + 1]);
+	}
+
+      for (_BinIndex __b = 0; __b < __sd->_M_num_bins + 1; ++__b)
+	__sd->_M_dist[__b][__iam + 1] = __dist[__b];
+
+#     pragma omp barrier
+
+#     pragma omp single
+      {
+	// Sum up bins, __sd->_M_dist[__s + 1][__d->_M_num_threads] now
+	// contains the total number of items in bin __s
+	for (_BinIndex __s = 0; __s < __sd->_M_num_bins; ++__s)
+          __gnu_sequential::partial_sum(__sd->_M_dist[__s + 1],
+					__sd->_M_dist[__s + 1]
+					+ __d->_M_num_threads + 1,
+					__sd->_M_dist[__s + 1]);
+      }
+
+#     pragma omp barrier
+
+      _SequenceIndex __offset = 0, __global_offset = 0;
+      for (_BinIndex __s = 0; __s < __d->_M_bins_begin; ++__s)
+	__global_offset += __sd->_M_dist[__s + 1][__d->_M_num_threads];
+
+#     pragma omp barrier
+
+      for (_BinIndex __s = __d->_M_bins_begin; __s < __d->__bins_end; ++__s)
+	{
+          for (int __t = 0; __t < __d->_M_num_threads + 1; ++__t)
+            __sd->_M_dist[__s + 1][__t] += __offset;
+          __offset = __sd->_M_dist[__s + 1][__d->_M_num_threads];
+	}
+
+      __sd->_M_temporaries[__iam] = static_cast<_ValueType*>
+	(::operator new(sizeof(_ValueType) * __offset));
+
+#     pragma omp barrier
+
+      // Draw local copies to avoid false sharing.
+      for (_BinIndex __b = 0; __b < __sd->_M_num_bins + 1; ++__b)
+	__dist[__b] = __sd->_M_dist[__b][__iam];
+      for (_BinIndex __b = 0; __b < __sd->_M_num_bins; ++__b)
+	__bin_proc[__b] = __sd->_M_bin_proc[__b];
+      for (_ThreadIndex __t = 0; __t < __d->_M_num_threads; ++__t)
+	__temporaries[__t] = __sd->_M_temporaries[__t];
+
+      _RAIter __source = __sd->_M_source;
+      _DifferenceType __start = __sd->_M_starts[__iam];
+
+      // Distribute according to oracles, second main loop.
+      for (_DifferenceType __i = 0; __i < __length; ++__i)
+	{
+          _BinIndex __target_bin = __oracles[__i];
+          _ThreadIndex __target_p = __bin_proc[__target_bin];
+
+          // Last column [__d->_M_num_threads] stays unchanged.
+	  ::new(&(__temporaries[__target_p][__dist[__target_bin + 1]++]))
+              _ValueType(*(__source + __i + __start));
+	}
+
+      delete[] __oracles;
+      delete[] __dist;
+      delete[] __bin_proc;
+      delete[] __temporaries;
+
+#     pragma omp barrier
+
+      // Shuffle bins internally.
+      for (_BinIndex __b = __d->_M_bins_begin; __b < __d->__bins_end; ++__b)
+	{
+          _ValueType* __begin =
+	    (__sd->_M_temporaries[__iam]
+	     + (__b == __d->_M_bins_begin
+		? 0 : __sd->_M_dist[__b][__d->_M_num_threads])),
+	    *__end = (__sd->_M_temporaries[__iam]
+		      + __sd->_M_dist[__b + 1][__d->_M_num_threads]);
+
+          __sequential_random_shuffle(__begin, __end, __rng);
+          std::copy(__begin, __end, __sd->_M_source + __global_offset
+		    + (__b == __d->_M_bins_begin
+		       ? 0 : __sd->_M_dist[__b][__d->_M_num_threads]));
+	}
+
+      for (_SequenceIndex __i = 0; __i < __offset; ++__i)
+	__sd->_M_temporaries[__iam][__i].~_ValueType();
+      ::operator delete(__sd->_M_temporaries[__iam]);
+    }
+
+  /** @brief Round up to the next greater power of 2.
+    *  @param __x _Integer to round up */
+  template<typename _Tp>
+    _Tp 
+    __round_up_to_pow2(_Tp __x)
+    {
+      if (__x <= 1)
+	return 1;
+      else
+	return (_Tp)1 << (__rd_log2(__x - 1) + 1);
+    }
+
+  /** @brief Main parallel random shuffle step.
+    *  @param __begin Begin iterator of sequence.
+    *  @param __end End iterator of sequence.
+    *  @param __n Length of sequence.
+    *  @param __num_threads Number of threads to use.
+    *  @param __rng Random number generator to use.
+    */
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void
+    __parallel_random_shuffle_drs(_RAIter __begin, _RAIter __end,
+				  typename std::iterator_traits
+				  <_RAIter>::difference_type __n,
+				  _ThreadIndex __num_threads,
+				  _RandomNumberGenerator& __rng)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _GLIBCXX_CALL(__n)
+
+      const _Settings& __s = _Settings::get();
+
+      if (__num_threads > __n)
+	__num_threads = static_cast<_ThreadIndex>(__n);
+
+      _BinIndex __num_bins, __num_bins_cache;
+
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1
+      // Try the L1 cache first.
+
+      // Must fit into L1.
+      __num_bins_cache =
+	std::max<_DifferenceType>(1, __n / (__s.L1_cache_size_lb
+					    / sizeof(_ValueType)));
+      __num_bins_cache = __round_up_to_pow2(__num_bins_cache);
+
+      // No more buckets than TLB entries, power of 2
+      // Power of 2 and at least one element per bin, at most the TLB size.
+      __num_bins = std::min<_DifferenceType>(__n, __num_bins_cache);
+
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB
+      // 2 TLB entries needed per bin.
+      __num_bins = std::min<_DifferenceType>(__s.TLB_size / 2, __num_bins);
+#endif
+      __num_bins = __round_up_to_pow2(__num_bins);
+
+      if (__num_bins < __num_bins_cache)
+	{
+#endif
+          // Now try the L2 cache
+          // Must fit into L2
+          __num_bins_cache = static_cast<_BinIndex>
+	    (std::max<_DifferenceType>(1, __n / (__s.L2_cache_size
+						 / sizeof(_ValueType))));
+          __num_bins_cache = __round_up_to_pow2(__num_bins_cache);
+
+          // No more buckets than TLB entries, power of 2.
+          __num_bins = static_cast<_BinIndex>
+	    (std::min(__n, static_cast<_DifferenceType>(__num_bins_cache)));
+          // Power of 2 and at least one element per bin, at most the TLB size.
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB
+          // 2 TLB entries needed per bin.
+          __num_bins = std::min(static_cast<_DifferenceType>(__s.TLB_size / 2),
+				__num_bins);
+#endif
+            __num_bins = __round_up_to_pow2(__num_bins);
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1
+	}
+#endif
+
+      __num_bins = __round_up_to_pow2(
+                        std::max<_BinIndex>(__num_threads, __num_bins));
+
+      if (__num_threads <= 1)
+      {
+        _RandomNumber __derived_rng(
+                            __rng(std::numeric_limits<uint32_t>::max()));
+	__sequential_random_shuffle(__begin, __end, __derived_rng);
+        return;
+      }
+
+      _DRandomShufflingGlobalData<_RAIter> __sd(__begin);
+      _DRSSorterPU<_RAIter, _RandomNumber >* __pus;
+      _DifferenceType* __starts;
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+	_ThreadIndex __num_threads = omp_get_num_threads();
+#       pragma omp single
+	{
+	  __pus = new _DRSSorterPU<_RAIter, _RandomNumber>[__num_threads];
+	  
+	  __sd._M_temporaries = new _ValueType*[__num_threads];
+	  __sd._M_dist = new _DifferenceType*[__num_bins + 1];
+	  __sd._M_bin_proc = new _ThreadIndex[__num_bins];
+	  for (_BinIndex __b = 0; __b < __num_bins + 1; ++__b)
+	    __sd._M_dist[__b] = new _DifferenceType[__num_threads + 1];
+	  for (_BinIndex __b = 0; __b < (__num_bins + 1); ++__b)
+	    {
+	      __sd._M_dist[0][0] = 0;
+	      __sd._M_dist[__b][0] = 0;
+	    }
+	  __starts = __sd._M_starts = new _DifferenceType[__num_threads + 1];
+	  int __bin_cursor = 0;
+	  __sd._M_num_bins = __num_bins;
+	  __sd._M_num_bits = __rd_log2(__num_bins);
+
+	  _DifferenceType __chunk_length = __n / __num_threads,
+	                         __split = __n % __num_threads,
+	                         __start = 0;
+	  _DifferenceType __bin_chunk_length = __num_bins / __num_threads,
+	                         __bin_split = __num_bins % __num_threads;
+	  for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	    {
+	      __starts[__i] = __start;
+	      __start += (__i < __split
+			  ? (__chunk_length + 1) : __chunk_length);
+	      int __j = __pus[__i]._M_bins_begin = __bin_cursor;
+
+	      // Range of bins for this processor.
+	      __bin_cursor += (__i < __bin_split
+			       ? (__bin_chunk_length + 1)
+			       : __bin_chunk_length);
+	      __pus[__i].__bins_end = __bin_cursor;
+	      for (; __j < __bin_cursor; ++__j)
+		__sd._M_bin_proc[__j] = __i;
+	      __pus[__i]._M_num_threads = __num_threads;
+	      __pus[__i]._M_seed = __rng(std::numeric_limits<uint32_t>::max());
+	      __pus[__i]._M_sd = &__sd;
+	    }
+	  __starts[__num_threads] = __start;
+	} //single
+          // Now shuffle in parallel.
+	__parallel_random_shuffle_drs_pu(__pus);
+      }  // parallel
+
+      delete[] __starts;
+      delete[] __sd._M_bin_proc;
+      for (int __s = 0; __s < (__num_bins + 1); ++__s)
+	delete[] __sd._M_dist[__s];
+      delete[] __sd._M_dist;
+      delete[] __sd._M_temporaries;
+
+      delete[] __pus;
+    }
+
+  /** @brief Sequential cache-efficient random shuffle.
+   *  @param __begin Begin iterator of sequence.
+   *  @param __end End iterator of sequence.
+   *  @param __rng Random number generator to use.
+   */
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    void
+    __sequential_random_shuffle(_RAIter __begin, _RAIter __end,
+				_RandomNumberGenerator& __rng)
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __n = __end - __begin;
+      const _Settings& __s = _Settings::get();
+
+      _BinIndex __num_bins, __num_bins_cache;
+
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1
+      // Try the L1 cache first, must fit into L1.
+      __num_bins_cache = std::max<_DifferenceType>
+	(1, __n / (__s.L1_cache_size_lb / sizeof(_ValueType)));
+      __num_bins_cache = __round_up_to_pow2(__num_bins_cache);
+
+      // No more buckets than TLB entries, power of 2
+      // Power of 2 and at least one element per bin, at most the TLB size
+      __num_bins = std::min(__n, (_DifferenceType)__num_bins_cache);
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB
+      // 2 TLB entries needed per bin
+      __num_bins = std::min((_DifferenceType)__s.TLB_size / 2, __num_bins);
+#endif
+      __num_bins = __round_up_to_pow2(__num_bins);
+
+      if (__num_bins < __num_bins_cache)
+	{
+#endif
+          // Now try the L2 cache, must fit into L2.
+          __num_bins_cache = static_cast<_BinIndex>
+	    (std::max<_DifferenceType>(1, __n / (__s.L2_cache_size
+						 / sizeof(_ValueType))));
+          __num_bins_cache = __round_up_to_pow2(__num_bins_cache);
+
+          // No more buckets than TLB entries, power of 2
+          // Power of 2 and at least one element per bin, at most the TLB size.
+          __num_bins = static_cast<_BinIndex>
+	    (std::min(__n, static_cast<_DifferenceType>(__num_bins_cache)));
+
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_TLB
+          // 2 TLB entries needed per bin
+          __num_bins = std::min<_DifferenceType>(__s.TLB_size / 2, __num_bins);
+#endif
+          __num_bins = __round_up_to_pow2(__num_bins);
+#if _GLIBCXX_RANDOM_SHUFFLE_CONSIDER_L1
+	}
+#endif
+
+      int __num_bits = __rd_log2(__num_bins);
+
+      if (__num_bins > 1)
+	{
+          _ValueType* __target =
+	    static_cast<_ValueType*>(::operator new(sizeof(_ValueType) * __n));
+          _BinIndex* __oracles = new _BinIndex[__n];
+          _DifferenceType* __dist0 = new _DifferenceType[__num_bins + 1],
+                	 * __dist1 = new _DifferenceType[__num_bins + 1];
+
+          for (int __b = 0; __b < __num_bins + 1; ++__b)
+            __dist0[__b] = 0;
+
+          _RandomNumber __bitrng(__rng(0xFFFFFFFF));
+
+          for (_DifferenceType __i = 0; __i < __n; ++__i)
+            {
+              _BinIndex __oracle = __random_number_pow2(__num_bits, __bitrng);
+              __oracles[__i] = __oracle;
+
+              // To allow prefix (partial) sum.
+              ++(__dist0[__oracle + 1]);
+            }
+
+          // Sum up bins.
+          __gnu_sequential::partial_sum(__dist0, __dist0 + __num_bins + 1,
+					__dist0);
+
+          for (int __b = 0; __b < __num_bins + 1; ++__b)
+            __dist1[__b] = __dist0[__b];
+
+          // Distribute according to oracles.
+          for (_DifferenceType __i = 0; __i < __n; ++__i)
+            ::new(&(__target[(__dist0[__oracles[__i]])++])) 
+		_ValueType(*(__begin + __i));
+
+          for (int __b = 0; __b < __num_bins; ++__b)
+	    __sequential_random_shuffle(__target + __dist1[__b],
+					__target + __dist1[__b + 1], __rng);
+
+          // Copy elements back.
+          std::copy(__target, __target + __n, __begin);
+
+          delete[] __dist0;
+          delete[] __dist1;
+          delete[] __oracles;
+	  
+	  for (_DifferenceType __i = 0; __i < __n; ++__i)
+	    __target[__i].~_ValueType();
+          ::operator delete(__target);
+	}
+      else
+	__gnu_sequential::random_shuffle(__begin, __end, __rng);
+    }
+
+  /** @brief Parallel random public call.
+   *  @param __begin Begin iterator of sequence.
+   *  @param __end End iterator of sequence.
+   *  @param __rng Random number generator to use.
+   */
+  template<typename _RAIter, typename _RandomNumberGenerator>
+    inline void
+    __parallel_random_shuffle(_RAIter __begin, _RAIter __end,
+			      _RandomNumberGenerator __rng = _RandomNumber())
+    {
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      _DifferenceType __n = __end - __begin;
+      __parallel_random_shuffle_drs(__begin, __end, __n,
+				    __get_max_threads(), __rng);
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_RANDOM_SHUFFLE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/search.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/search.h
new file mode 100644
index 000000000..970992561
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/search.h
@@ -0,0 +1,172 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/search.h
+ *  @brief Parallel implementation base for std::search() and
+ *  std::search_n().
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_SEARCH_H
+#define _GLIBCXX_PARALLEL_SEARCH_H 1
+
+#include <bits/stl_algobase.h>
+
+#include <parallel/parallel.h>
+#include <parallel/equally_split.h>
+
+namespace __gnu_parallel
+{
+  /**
+   *  @brief Precalculate __advances for Knuth-Morris-Pratt algorithm.
+   *  @param __elements Begin iterator of sequence to search for.
+   *  @param __length Length of sequence to search for.
+   *  @param __advances Returned __offsets. 
+   */
+  template<typename _RAIter, typename _DifferenceTp>
+    void
+    __calc_borders(_RAIter __elements, _DifferenceTp __length, 
+		   _DifferenceTp* __off)
+    {
+      typedef _DifferenceTp _DifferenceType;
+
+      __off[0] = -1;
+      if (__length > 1)
+	__off[1] = 0;
+      _DifferenceType __k = 0;
+      for (_DifferenceType __j = 2; __j <= __length; __j++)
+	{
+          while ((__k >= 0) && !(__elements[__k] == __elements[__j-1]))
+            __k = __off[__k];
+          __off[__j] = ++__k;
+	}
+    }
+
+  // Generic parallel find algorithm (requires random access iterator).
+
+  /** @brief Parallel std::search.
+   *  @param __begin1 Begin iterator of first sequence.
+   *  @param __end1 End iterator of first sequence.
+   *  @param __begin2 Begin iterator of second sequence.
+   *  @param __end2 End iterator of second sequence.
+   *  @param __pred Find predicate.
+   *  @return Place of finding in first sequences. */
+  template<typename __RAIter1,
+           typename __RAIter2,
+           typename _Pred>
+    __RAIter1
+    __search_template(__RAIter1 __begin1, __RAIter1 __end1,
+		      __RAIter2 __begin2, __RAIter2 __end2,
+		      _Pred __pred)
+    {
+      typedef std::iterator_traits<__RAIter1> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _GLIBCXX_CALL((__end1 - __begin1) + (__end2 - __begin2));
+
+      _DifferenceType __pattern_length = __end2 - __begin2;
+
+      // Pattern too short.
+      if(__pattern_length <= 0)
+	return __end1;
+
+      // Last point to start search.
+      _DifferenceType __input_length = (__end1 - __begin1) - __pattern_length;
+
+      // Where is first occurrence of pattern? defaults to end.
+      _DifferenceType __result = (__end1 - __begin1);
+      _DifferenceType *__splitters;
+
+      // Pattern too long.
+      if (__input_length < 0)
+	return __end1;
+
+      omp_lock_t __result_lock;
+      omp_init_lock(&__result_lock);
+
+      _ThreadIndex __num_threads = std::max<_DifferenceType>
+	(1, std::min<_DifferenceType>(__input_length,
+				      __get_max_threads()));
+
+      _DifferenceType __advances[__pattern_length];
+      __calc_borders(__begin2, __pattern_length, __advances);
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __splitters = new _DifferenceType[__num_threads + 1];
+	  equally_split(__input_length, __num_threads, __splitters);
+	}
+
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	_DifferenceType __start = __splitters[__iam],
+	                 __stop = __splitters[__iam + 1];
+
+	_DifferenceType __pos_in_pattern = 0;
+	bool __found_pattern = false;
+
+	while (__start <= __stop && !__found_pattern)
+	  {
+	    // Get new value of result.
+#pragma omp flush(__result)
+	    // No chance for this thread to find first occurrence.
+	    if (__result < __start)
+	      break;
+	    while (__pred(__begin1[__start + __pos_in_pattern],
+			  __begin2[__pos_in_pattern]))
+	      {
+		++__pos_in_pattern;
+		if (__pos_in_pattern == __pattern_length)
+		  {
+		    // Found new candidate for result.
+		    omp_set_lock(&__result_lock);
+		    __result = std::min(__result, __start);
+		    omp_unset_lock(&__result_lock);
+
+		    __found_pattern = true;
+		    break;
+		  }
+	      }
+	    // Make safe jump.
+	    __start += (__pos_in_pattern - __advances[__pos_in_pattern]);
+	    __pos_in_pattern = (__advances[__pos_in_pattern] < 0
+				? 0 : __advances[__pos_in_pattern]);
+	  }
+      } //parallel
+
+      omp_destroy_lock(&__result_lock);
+
+      delete[] __splitters;
+      
+      // Return iterator on found element.
+      return (__begin1 + __result);
+    }
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_SEARCH_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/set_operations.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/set_operations.h
new file mode 100644
index 000000000..f552c1dda
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/set_operations.h
@@ -0,0 +1,529 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file parallel/set_operations.h
+ * @brief Parallel implementations of set operations for random-access
+ * iterators.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Marius Elvert and Felix Bondarenko.
+
+#ifndef _GLIBCXX_PARALLEL_SET_OPERATIONS_H
+#define _GLIBCXX_PARALLEL_SET_OPERATIONS_H 1
+
+#include <omp.h>
+
+#include <parallel/settings.h>
+#include <parallel/multiseq_selection.h>
+
+namespace __gnu_parallel
+{
+  template<typename _IIter, typename _OutputIterator>
+    _OutputIterator
+    __copy_tail(std::pair<_IIter, _IIter> __b,
+		std::pair<_IIter, _IIter> __e, _OutputIterator __r)
+    {
+      if (__b.first != __e.first)
+	{
+          do
+            {
+              *__r++ = *__b.first++;
+            }
+          while (__b.first != __e.first);
+	}
+      else
+	{
+          while (__b.second != __e.second)
+            *__r++ = *__b.second++;
+	}
+      return __r;
+    }
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    struct __symmetric_difference_func
+    {
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename std::pair<_IIter, _IIter> _IteratorPair;
+
+      __symmetric_difference_func(_Compare __comp) : _M_comp(__comp) {}
+
+      _Compare _M_comp;
+
+      _OutputIterator
+      _M_invoke(_IIter __a, _IIter __b, _IIter __c, _IIter __d,
+		_OutputIterator __r) const
+      {
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              {
+        	*__r = *__a;
+        	++__a;
+        	++__r;
+              }
+            else if (_M_comp(*__c, *__a))
+              {
+        	*__r = *__c;
+        	++__c;
+        	++__r;
+              }
+            else
+              {
+        	++__a;
+        	++__c;
+              }
+          }
+	return std::copy(__c, __d, std::copy(__a, __b, __r));
+      }
+
+      _DifferenceType
+      __count(_IIter __a, _IIter __b, _IIter __c, _IIter __d) const
+      {
+	_DifferenceType __counter = 0;
+
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              {
+        	++__a;
+        	++__counter;
+              }
+            else if (_M_comp(*__c, *__a))
+              {
+        	++__c;
+        	++__counter;
+              }
+            else
+              {
+        	++__a;
+        	++__c;
+              }
+          }
+
+	return __counter + (__b - __a) + (__d - __c);
+      }
+
+      _OutputIterator
+      __first_empty(_IIter __c, _IIter __d, _OutputIterator __out) const
+      { return std::copy(__c, __d, __out); }
+
+      _OutputIterator
+      __second_empty(_IIter __a, _IIter __b, _OutputIterator __out) const
+      { return std::copy(__a, __b, __out); }
+    };
+
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    struct __difference_func
+    {
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename std::pair<_IIter, _IIter> _IteratorPair;
+
+      __difference_func(_Compare __comp) : _M_comp(__comp) {}
+
+      _Compare _M_comp;
+
+      _OutputIterator
+      _M_invoke(_IIter __a, _IIter __b, _IIter __c, _IIter __d,
+		_OutputIterator __r) const
+      {
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              {
+        	*__r = *__a;
+        	++__a;
+        	++__r;
+              }
+            else if (_M_comp(*__c, *__a))
+              { ++__c; }
+            else
+              {
+        	++__a;
+        	++__c;
+              }
+          }
+	return std::copy(__a, __b, __r);
+      }
+
+      _DifferenceType
+      __count(_IIter __a, _IIter __b,
+	      _IIter __c, _IIter __d) const
+      {
+	_DifferenceType __counter = 0;
+
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              {
+        	++__a;
+        	++__counter;
+              }
+            else if (_M_comp(*__c, *__a))
+              { ++__c; }
+            else
+              { ++__a; ++__c; }
+          }
+
+	return __counter + (__b - __a);
+      }
+
+      _OutputIterator
+      __first_empty(_IIter, _IIter, _OutputIterator __out) const
+      { return __out; }
+
+      _OutputIterator
+      __second_empty(_IIter __a, _IIter __b, _OutputIterator __out) const
+      { return std::copy(__a, __b, __out); }
+    };
+
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    struct __intersection_func
+    {
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename std::pair<_IIter, _IIter> _IteratorPair;
+
+      __intersection_func(_Compare __comp) : _M_comp(__comp) {}
+
+      _Compare _M_comp;
+
+      _OutputIterator
+      _M_invoke(_IIter __a, _IIter __b, _IIter __c, _IIter __d,
+		_OutputIterator __r) const
+      {
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              { ++__a; }
+            else if (_M_comp(*__c, *__a))
+              { ++__c; }
+            else
+              {
+        	*__r = *__a;
+        	++__a;
+        	++__c;
+        	++__r;
+              }
+          }
+
+	return __r;
+      }
+
+      _DifferenceType
+      __count(_IIter __a, _IIter __b, _IIter __c, _IIter __d) const
+      {
+	_DifferenceType __counter = 0;
+
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              { ++__a; }
+            else if (_M_comp(*__c, *__a))
+              { ++__c; }
+            else
+              {
+        	++__a;
+        	++__c;
+        	++__counter;
+              }
+          }
+
+	return __counter;
+      }
+
+      _OutputIterator
+      __first_empty(_IIter, _IIter, _OutputIterator __out) const
+      { return __out; }
+
+      _OutputIterator
+      __second_empty(_IIter, _IIter, _OutputIterator __out) const
+      { return __out; }
+    };
+
+  template<class _IIter, class _OutputIterator, class _Compare>
+    struct __union_func
+    {
+      typedef typename std::iterator_traits<_IIter>::difference_type
+      _DifferenceType;
+
+      __union_func(_Compare __comp) : _M_comp(__comp) {}
+
+      _Compare _M_comp;
+
+      _OutputIterator
+      _M_invoke(_IIter __a, const _IIter __b, _IIter __c,
+		const _IIter __d, _OutputIterator __r) const
+      {
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              {
+        	*__r = *__a;
+        	++__a;
+              }
+            else if (_M_comp(*__c, *__a))
+              {
+        	*__r = *__c;
+        	++__c;
+              }
+            else
+              {
+        	*__r = *__a;
+        	++__a;
+        	++__c;
+              }
+            ++__r;
+          }
+	return std::copy(__c, __d, std::copy(__a, __b, __r));
+      }
+
+      _DifferenceType
+      __count(_IIter __a, _IIter __b, _IIter __c, _IIter __d) const
+      {
+	_DifferenceType __counter = 0;
+
+	while (__a != __b && __c != __d)
+          {
+            if (_M_comp(*__a, *__c))
+              { ++__a; }
+            else if (_M_comp(*__c, *__a))
+              { ++__c; }
+            else
+              {
+        	++__a;
+        	++__c;
+              }
+            ++__counter;
+          }
+
+	__counter += (__b - __a);
+	__counter += (__d - __c);
+	return __counter;
+      }
+
+      _OutputIterator
+      __first_empty(_IIter __c, _IIter __d, _OutputIterator __out) const
+      { return std::copy(__c, __d, __out); }
+
+      _OutputIterator
+      __second_empty(_IIter __a, _IIter __b, _OutputIterator __out) const
+      { return std::copy(__a, __b, __out); }
+    };
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Operation>
+    _OutputIterator
+    __parallel_set_operation(_IIter __begin1, _IIter __end1,
+			     _IIter __begin2, _IIter __end2,
+			     _OutputIterator __result, _Operation __op)
+    {
+      _GLIBCXX_CALL((__end1 - __begin1) + (__end2 - __begin2))
+
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+      typedef typename std::pair<_IIter, _IIter> _IteratorPair;
+
+      if (__begin1 == __end1)
+	return __op.__first_empty(__begin2, __end2, __result);
+
+      if (__begin2 == __end2)
+	return __op.__second_empty(__begin1, __end1, __result);
+
+      const _DifferenceType __size = (__end1 - __begin1) + (__end2 - __begin2);
+
+      const _IteratorPair __sequence[2] = { std::make_pair(__begin1, __end1),
+					    std::make_pair(__begin2, __end2) };
+      _OutputIterator __return_value = __result;
+      _DifferenceType *__borders;
+      _IteratorPair *__block_begins;
+      _DifferenceType* __lengths;
+
+      _ThreadIndex __num_threads =
+          std::min<_DifferenceType>(__get_max_threads(),
+              std::min(__end1 - __begin1, __end2 - __begin2));
+
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+
+	  __borders = new _DifferenceType[__num_threads + 2];
+	  equally_split(__size, __num_threads + 1, __borders);
+	  __block_begins = new _IteratorPair[__num_threads + 1];
+	  // Very __start.
+	  __block_begins[0] = std::make_pair(__begin1, __begin2);
+	  __lengths = new _DifferenceType[__num_threads];
+	} //single
+
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	// _Result from multiseq_partition.
+	_IIter __offset[2];
+	const _DifferenceType __rank = __borders[__iam + 1];
+
+	multiseq_partition(__sequence, __sequence + 2,
+			   __rank, __offset, __op._M_comp);
+
+	// allowed to read?
+	// together
+	// *(__offset[ 0 ] - 1) == *__offset[ 1 ]
+	if (__offset[ 0 ] != __begin1 && __offset[1] != __end2
+	    && !__op._M_comp(*(__offset[0] - 1), *__offset[1])
+	    && !__op._M_comp(*__offset[1], *(__offset[0] - 1)))
+	  {
+	    // Avoid split between globally equal elements: move one to
+	    // front in first sequence.
+              --__offset[0];
+	  }
+
+	_IteratorPair __block_end = __block_begins[__iam + 1] =
+	  _IteratorPair(__offset[0], __offset[1]);
+
+	// Make sure all threads have their block_begin result written out.
+#       pragma omp barrier
+
+	_IteratorPair __block_begin = __block_begins[__iam];
+
+	// Begin working for the first block, while the others except
+	// the last start to count.
+	if (__iam == 0)
+	  {
+	    // The first thread can copy already.
+	    __lengths[ __iam ] =
+	      __op._M_invoke(__block_begin.first, __block_end.first,
+			     __block_begin.second, __block_end.second,
+			     __result) - __result;
+	  }
+	else
+	  {
+	    __lengths[ __iam ] =
+	      __op.__count(__block_begin.first, __block_end.first,
+			   __block_begin.second, __block_end.second);
+	  }
+
+	// Make sure everyone wrote their lengths.
+#       pragma omp barrier
+
+	_OutputIterator __r = __result;
+
+	if (__iam == 0)
+	  {
+	    // Do the last block.
+	    for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
+	      __r += __lengths[__i];
+
+	    __block_begin = __block_begins[__num_threads];
+
+	    // Return the result iterator of the last block.
+	    __return_value =
+	      __op._M_invoke(__block_begin.first, __end1,
+			     __block_begin.second, __end2, __r);
+
+	  }
+          else
+            {
+              for (_ThreadIndex __i = 0; __i < __iam; ++__i)
+        	__r += __lengths[ __i ];
+
+              // Reset begins for copy pass.
+              __op._M_invoke(__block_begin.first, __block_end.first,
+			     __block_begin.second, __block_end.second, __r);
+            }
+	}
+      return __return_value;
+    }
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    inline _OutputIterator
+    __parallel_set_union(_IIter __begin1, _IIter __end1,
+			 _IIter __begin2, _IIter __end2,
+			 _OutputIterator __result, _Compare __comp)
+    {
+      return __parallel_set_operation(__begin1, __end1, __begin2, __end2,
+				      __result,
+				      __union_func< _IIter, _OutputIterator,
+				      _Compare>(__comp));
+    }
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    inline _OutputIterator
+    __parallel_set_intersection(_IIter __begin1, _IIter __end1,
+                        	_IIter __begin2, _IIter __end2,
+                        	_OutputIterator __result, _Compare __comp)
+    {
+      return __parallel_set_operation(__begin1, __end1, __begin2, __end2,
+				      __result,
+				      __intersection_func<_IIter,
+				      _OutputIterator, _Compare>(__comp));
+    }
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    inline _OutputIterator
+    __parallel_set_difference(_IIter __begin1, _IIter __end1,
+                              _IIter __begin2, _IIter __end2,
+                              _OutputIterator __result, _Compare __comp)
+    {
+      return __parallel_set_operation(__begin1, __end1, __begin2, __end2,
+				      __result,
+				      __difference_func<_IIter,
+				      _OutputIterator, _Compare>(__comp));
+    }
+
+  template<typename _IIter,
+           typename _OutputIterator,
+           typename _Compare>
+    inline _OutputIterator
+    __parallel_set_symmetric_difference(_IIter __begin1, _IIter __end1,
+                                	_IIter __begin2, _IIter __end2,
+                                	_OutputIterator __result,
+                                	_Compare __comp)
+    {
+      return __parallel_set_operation(__begin1, __end1, __begin2, __end2,
+				      __result,
+				      __symmetric_difference_func<_IIter,
+				      _OutputIterator, _Compare>(__comp));
+    }
+}
+
+#endif /* _GLIBCXX_PARALLEL_SET_OPERATIONS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/settings.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/settings.h
new file mode 100644
index 000000000..5fc6a75c9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/settings.h
@@ -0,0 +1,343 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/settings.h
+ *  @brief Runtime settings and tuning parameters, heuristics to decide
+ *  whether to use parallelized algorithms.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ *
+ *  @section parallelization_decision 
+ *  The decision whether to run an algorithm in parallel.
+ *
+ *  There are several ways the user can switch on and __off the parallel
+ *  execution of an algorithm, both at compile- and run-time.
+ *
+ *  Only sequential execution can be forced at compile-time.  This
+ *  reduces code size and protects code parts that have
+ *  non-thread-safe side effects.
+ *
+ *  Ultimately, forcing parallel execution at compile-time makes
+ *  sense.  Often, the sequential algorithm implementation is used as
+ *  a subroutine, so no reduction in code size can be achieved.  Also,
+ *  the machine the program is run on might have only one processor
+ *  core, so to avoid overhead, the algorithm is executed
+ *  sequentially.
+ *
+ *  To force sequential execution of an algorithm ultimately at
+ *  compile-time, the user must add the tag
+*  gnu_parallel::sequential_tag() to the end of the parameter list,
+ *  e. g.
+ *
+ *  \code
+ *  std::sort(__v.begin(), __v.end(), __gnu_parallel::sequential_tag());
+ *  \endcode
+ *
+ *  This is compatible with all overloaded algorithm variants.  No
+ *  additional code will be instantiated, at all.  The same holds for
+ *  most algorithm calls with iterators not providing random access.
+ *
+ *  If the algorithm call is not forced to be executed sequentially
+ *  at compile-time, the decision is made at run-time.
+ *  The global variable __gnu_parallel::_Settings::algorithm_strategy
+ *  is checked. _It is a tristate variable corresponding to:
+ *
+ *  a. force_sequential, meaning the sequential algorithm is executed.
+*  b. force_parallel, meaning the parallel algorithm is executed.
+*  c. heuristic
+ *
+ *  For heuristic, the parallel algorithm implementation is called
+ *  only if the input size is sufficiently large.  For most
+ *  algorithms, the input size is the (combined) length of the input
+*  sequence(__s).  The threshold can be set by the user, individually
+ *  for each algorithm.  The according variables are called
+*  gnu_parallel::_Settings::[algorithm]_minimal_n .
+ *
+ *  For some of the algorithms, there are even more tuning options,
+ *  e. g. the ability to choose from multiple algorithm variants.  See
+ *  below for details.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_SETTINGS_H
+#define _GLIBCXX_PARALLEL_SETTINGS_H 1
+
+#include <parallel/types.h>
+
+/** 
+  * @brief Determine at compile(?)-time if the parallel variant of an
+  * algorithm should be called.
+  * @param __c A condition that is convertible to bool that is overruled by
+  * __gnu_parallel::_Settings::algorithm_strategy. Usually a decision
+  * based on the input size.
+  */
+#define _GLIBCXX_PARALLEL_CONDITION(__c) \
+  (__gnu_parallel::_Settings::get().algorithm_strategy \
+    != __gnu_parallel::force_sequential \
+  && ((__gnu_parallel::__get_max_threads() > 1 && (__c)) \
+     || __gnu_parallel::_Settings::get().algorithm_strategy \
+        == __gnu_parallel::force_parallel))
+
+/*
+inline bool
+parallel_condition(bool __c)
+{
+  bool ret = false;
+  const _Settings& __s = _Settings::get();
+  if (__s.algorithm_strategy != force_seqential)
+    {
+      if (__s.algorithm_strategy == force_parallel)
+        ret = true;
+      else
+        ret = __get_max_threads() > 1 && __c;
+    }
+  return ret;
+}
+*/
+
+namespace __gnu_parallel
+{
+  /// class _Settings
+  /// Run-time settings for the parallel mode including all tunable parameters.
+  struct _Settings
+  {
+    _AlgorithmStrategy          algorithm_strategy;
+    
+    _SortAlgorithm              sort_algorithm;
+    _PartialSumAlgorithm        partial_sum_algorithm;
+    _MultiwayMergeAlgorithm     multiway_merge_algorithm;
+    _FindAlgorithm              find_algorithm;
+
+    _SplittingAlgorithm         sort_splitting;
+    _SplittingAlgorithm         merge_splitting;
+    _SplittingAlgorithm         multiway_merge_splitting;
+
+    // Per-algorithm settings.
+
+    /// Minimal input size for accumulate.
+    _SequenceIndex              accumulate_minimal_n;
+
+    /// Minimal input size for adjacent_difference.
+    unsigned int                adjacent_difference_minimal_n;
+
+    /// Minimal input size for count and count_if.
+    _SequenceIndex              count_minimal_n;
+
+    /// Minimal input size for fill.
+    _SequenceIndex              fill_minimal_n;
+
+    /// Block size increase factor for find.
+    double                      find_increasing_factor;
+
+    /// Initial block size for find.
+    _SequenceIndex              find_initial_block_size;
+
+    /// Maximal block size for find.
+    _SequenceIndex              find_maximum_block_size;
+
+    /// Start with looking for this many elements sequentially, for find.
+    _SequenceIndex              find_sequential_search_size;
+
+    /// Minimal input size for for_each.
+    _SequenceIndex              for_each_minimal_n;
+
+    /// Minimal input size for generate.
+    _SequenceIndex              generate_minimal_n;
+
+    /// Minimal input size for max_element.
+    _SequenceIndex              max_element_minimal_n;
+
+    /// Minimal input size for merge.
+    _SequenceIndex              merge_minimal_n;
+
+    /// Oversampling factor for merge.
+    unsigned int                merge_oversampling;
+
+    /// Minimal input size for min_element.
+    _SequenceIndex              min_element_minimal_n;
+
+    /// Minimal input size for multiway_merge.
+    _SequenceIndex              multiway_merge_minimal_n;
+
+    /// Oversampling factor for multiway_merge.
+    int                         multiway_merge_minimal_k;
+
+    /// Oversampling factor for multiway_merge.
+    unsigned int                multiway_merge_oversampling;
+
+    /// Minimal input size for nth_element.
+    _SequenceIndex              nth_element_minimal_n;
+
+    /// Chunk size for partition.
+    _SequenceIndex              partition_chunk_size;
+
+    /// Chunk size for partition, relative to input size.  If > 0.0,
+    /// this value overrides partition_chunk_size.
+    double                      partition_chunk_share;
+
+    /// Minimal input size for partition.
+    _SequenceIndex              partition_minimal_n;
+
+    /// Minimal input size for partial_sort.
+    _SequenceIndex              partial_sort_minimal_n;
+
+    /// Ratio for partial_sum. Assume "sum and write result" to be
+    /// this factor slower than just "sum".
+    float                       partial_sum_dilation;
+
+    /// Minimal input size for partial_sum.
+    unsigned int                partial_sum_minimal_n;
+
+    /// Minimal input size for random_shuffle.
+    unsigned int                random_shuffle_minimal_n;
+
+    /// Minimal input size for replace and replace_if.
+    _SequenceIndex              replace_minimal_n;
+
+    /// Minimal input size for set_difference.
+    _SequenceIndex              set_difference_minimal_n;
+
+    /// Minimal input size for set_intersection.
+    _SequenceIndex              set_intersection_minimal_n;
+
+    /// Minimal input size for set_symmetric_difference.
+    _SequenceIndex              set_symmetric_difference_minimal_n;
+
+    /// Minimal input size for set_union.
+    _SequenceIndex              set_union_minimal_n;
+
+    /// Minimal input size for parallel sorting.
+    _SequenceIndex              sort_minimal_n;
+
+    /// Oversampling factor for parallel std::sort (MWMS).
+    unsigned int                sort_mwms_oversampling;
+
+    /// Such many samples to take to find a good pivot (quicksort).
+    unsigned int                sort_qs_num_samples_preset;
+
+    /// Maximal subsequence __length to switch to unbalanced __base case.
+    /// Applies to std::sort with dynamically load-balanced quicksort.
+    _SequenceIndex              sort_qsb_base_case_maximal_n;
+
+    /// Minimal input size for parallel std::transform.
+    _SequenceIndex              transform_minimal_n;
+
+    /// Minimal input size for unique_copy. 
+    _SequenceIndex              unique_copy_minimal_n;
+
+    _SequenceIndex              workstealing_chunk_size;
+
+    // Hardware dependent tuning parameters.
+
+    /// size of the L1 cache in bytes (underestimation).
+    unsigned long long          L1_cache_size;
+
+    /// size of the L2 cache in bytes (underestimation).
+    unsigned long long          L2_cache_size;
+
+    /// size of the Translation Lookaside Buffer (underestimation).
+    unsigned int                TLB_size;
+
+    /// Overestimation of cache line size.  Used to avoid false
+    /// sharing, i.e. elements of different threads are at least this
+    /// amount apart.
+    unsigned int                cache_line_size;
+
+    // Statistics.
+
+    /// The number of stolen ranges in load-balanced quicksort.
+    _SequenceIndex              qsb_steals;
+
+    /// Minimal input size for search and search_n.
+    _SequenceIndex              search_minimal_n;
+
+    /// Block size scale-down factor with respect to current position.
+    float                       find_scale_factor;
+
+    /// Get the global settings.
+    _GLIBCXX_CONST static const _Settings&
+    get() throw();
+
+    /// Set the global settings.
+    static void
+    set(_Settings&) throw();
+
+    explicit 
+    _Settings() :
+            algorithm_strategy(heuristic),
+            sort_algorithm(MWMS),
+            partial_sum_algorithm(LINEAR),
+            multiway_merge_algorithm(LOSER_TREE),
+            find_algorithm(CONSTANT_SIZE_BLOCKS),
+            sort_splitting(EXACT),
+            merge_splitting(EXACT),
+            multiway_merge_splitting(EXACT),
+            accumulate_minimal_n(1000),
+            adjacent_difference_minimal_n(1000),
+            count_minimal_n(1000),
+            fill_minimal_n(1000),
+            find_increasing_factor(2.0),
+            find_initial_block_size(256),
+            find_maximum_block_size(8192),
+            find_sequential_search_size(256),
+            for_each_minimal_n(1000),
+            generate_minimal_n(1000),
+            max_element_minimal_n(1000),
+            merge_minimal_n(1000),
+            merge_oversampling(10),
+            min_element_minimal_n(1000),
+            multiway_merge_minimal_n(1000),
+            multiway_merge_minimal_k(2), multiway_merge_oversampling(10),
+            nth_element_minimal_n(1000),
+            partition_chunk_size(1000),
+            partition_chunk_share(0.0),
+            partition_minimal_n(1000),
+            partial_sort_minimal_n(1000),
+            partial_sum_dilation(1.0f),
+            partial_sum_minimal_n(1000),
+            random_shuffle_minimal_n(1000),
+            replace_minimal_n(1000),
+            set_difference_minimal_n(1000),
+            set_intersection_minimal_n(1000),
+            set_symmetric_difference_minimal_n(1000),
+            set_union_minimal_n(1000),
+            sort_minimal_n(1000),
+            sort_mwms_oversampling(10),
+            sort_qs_num_samples_preset(100),
+            sort_qsb_base_case_maximal_n(100),
+            transform_minimal_n(1000),
+            unique_copy_minimal_n(10000),
+            workstealing_chunk_size(100),
+            L1_cache_size(16 << 10),
+            L2_cache_size(256 << 10),
+            TLB_size(128),
+            cache_line_size(64),
+            qsb_steals(0),
+            search_minimal_n(1000),
+            find_scale_factor(0.01f)
+    { }
+  };
+}
+
+#endif /* _GLIBCXX_PARALLEL_SETTINGS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/sort.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/sort.h
new file mode 100644
index 000000000..f1a163c63
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/sort.h
@@ -0,0 +1,233 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/sort.h
+ *  @brief Parallel sorting algorithm switch.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler.
+
+#ifndef _GLIBCXX_PARALLEL_SORT_H
+#define _GLIBCXX_PARALLEL_SORT_H 1
+
+#include <parallel/basic_iterator.h>
+#include <parallel/features.h>
+#include <parallel/parallel.h>
+
+#if _GLIBCXX_ASSERTIONS
+#include <parallel/checkers.h>
+#endif
+
+#if _GLIBCXX_MERGESORT
+#include <parallel/multiway_mergesort.h>
+#endif
+
+#if _GLIBCXX_QUICKSORT
+#include <parallel/quicksort.h>
+#endif
+
+#if _GLIBCXX_BAL_QUICKSORT
+#include <parallel/balanced_quicksort.h>
+#endif
+
+namespace __gnu_parallel
+{
+  //prototype
+  template<bool __stable, typename _RAIter,
+           typename _Compare, typename _Parallelism>
+    void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp, _Parallelism __parallelism);
+        
+  /** 
+   *  @brief Choose multiway mergesort, splitting variant at run-time,
+   *  for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp, multiway_mergesort_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      if(_Settings::get().sort_splitting == EXACT)
+	parallel_sort_mwms<__stable, true>
+	  (__begin, __end, __comp, __parallelism.__get_num_threads());
+      else
+	parallel_sort_mwms<__stable, false>
+	  (__begin, __end, __comp, __parallelism.__get_num_threads());
+    }
+
+  /** 
+   *  @brief Choose multiway mergesort with exact splitting,
+   *  for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp,
+		    multiway_mergesort_exact_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      parallel_sort_mwms<__stable, true>
+        (__begin, __end, __comp, __parallelism.__get_num_threads());
+    }
+
+  /** 
+   *  @brief Choose multiway mergesort with splitting by sampling,
+   *  for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp,
+		    multiway_mergesort_sampling_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      parallel_sort_mwms<__stable, false>
+      (__begin, __end, __comp, __parallelism.__get_num_threads());
+    }
+
+  /**
+   *  @brief Choose quicksort for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp, quicksort_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      _GLIBCXX_PARALLEL_ASSERT(__stable == false);
+
+      __parallel_sort_qs(__begin, __end, __comp,
+			 __parallelism.__get_num_threads());
+    }
+
+  /**
+   *  @brief Choose balanced quicksort for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @param __stable Sort __stable.
+   *  @callgraph 
+   */
+   template<bool __stable, typename _RAIter, typename _Compare>
+     inline void
+     __parallel_sort(_RAIter __begin, _RAIter __end,
+		     _Compare __comp, balanced_quicksort_tag __parallelism)
+     {
+       _GLIBCXX_CALL(__end - __begin)
+
+       _GLIBCXX_PARALLEL_ASSERT(__stable == false);
+
+       __parallel_sort_qsb(__begin, __end, __comp,
+			   __parallelism.__get_num_threads());
+     }
+
+  /** 
+   *  @brief Choose multiway mergesort with exact splitting,
+   *  for parallel sorting.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp, default_parallel_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      __parallel_sort<__stable>
+	(__begin, __end, __comp,
+	 multiway_mergesort_exact_tag(__parallelism.__get_num_threads()));
+    }
+
+  /**
+   *  @brief Choose a parallel sorting algorithm.
+   *  @param __begin Begin iterator of input sequence.
+   *  @param __end End iterator of input sequence.
+   *  @param __comp Comparator.
+   *  @param __stable Sort __stable.
+   *  @callgraph 
+   */
+  template<bool __stable, typename _RAIter, typename _Compare>
+    inline void
+    __parallel_sort(_RAIter __begin, _RAIter __end,
+		    _Compare __comp, parallel_tag __parallelism)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      if (false) ;
+#if _GLIBCXX_MERGESORT
+      else if (__stable || _Settings::get().sort_algorithm == MWMS)
+        {
+          if(_Settings::get().sort_splitting == EXACT)
+            parallel_sort_mwms<__stable, true>
+              (__begin, __end, __comp, __parallelism.__get_num_threads());
+          else
+            parallel_sort_mwms<false, false>
+              (__begin, __end, __comp, __parallelism.__get_num_threads());
+        }
+#endif
+#if _GLIBCXX_QUICKSORT
+      else if (_Settings::get().sort_algorithm == QS)
+        __parallel_sort_qs(__begin, __end, __comp,
+                           __parallelism.__get_num_threads());
+#endif
+#if _GLIBCXX_BAL_QUICKSORT
+      else if (_Settings::get().sort_algorithm == QS_BALANCED)
+        __parallel_sort_qsb(__begin, __end, __comp,
+                            __parallelism.__get_num_threads());
+#endif
+      else
+        __gnu_sequential::sort(__begin, __end, __comp);
+    }
+} // end namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_SORT_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/tags.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/tags.h
new file mode 100644
index 000000000..bc47b2699
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/tags.h
@@ -0,0 +1,185 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file parallel/tags.h
+ * @brief Tags for compile-time selection.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_TAGS_H
+#define _GLIBCXX_PARALLEL_TAGS_H 1
+
+#include <omp.h>
+#include <parallel/types.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Forces sequential execution at compile time. */
+  struct sequential_tag { };
+
+  /** @brief Recommends parallel execution at compile time,
+   *  optionally using a user-specified number of threads. */
+  struct parallel_tag
+  {
+    private:
+      _ThreadIndex _M_num_threads;
+
+    public:
+      /** @brief Default constructor. Use default number of threads. */
+      parallel_tag()
+      { _M_num_threads = 0; }
+
+      /** @brief Default constructor. Recommend number of threads to use.
+       *  @param __num_threads Desired number of threads. */
+      parallel_tag(_ThreadIndex __num_threads)
+      { _M_num_threads = __num_threads; }
+
+      /** @brief Find out desired number of threads.
+       *  @return Desired number of threads. */
+      _ThreadIndex __get_num_threads()
+      {
+        if(_M_num_threads == 0)
+          return omp_get_max_threads();
+        else
+          return _M_num_threads;
+      }
+
+      /** @brief Set the desired number of threads.
+       *  @param __num_threads Desired number of threads. */
+      void set_num_threads(_ThreadIndex __num_threads)
+      { _M_num_threads = __num_threads; }
+  };
+
+  /** @brief Recommends parallel execution using the
+      default parallel algorithm. */
+  struct default_parallel_tag : public parallel_tag
+  {
+    default_parallel_tag() { }
+    default_parallel_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Recommends parallel execution using dynamic
+      load-balancing at compile time. */
+  struct balanced_tag : public parallel_tag { };
+
+  /** @brief Recommends parallel execution using static
+      load-balancing at compile time. */
+  struct unbalanced_tag : public parallel_tag { };
+
+  /** @brief Recommends parallel execution using OpenMP dynamic
+      load-balancing at compile time. */
+  struct omp_loop_tag : public parallel_tag { };
+
+  /** @brief Recommends parallel execution using OpenMP static
+      load-balancing at compile time. */
+  struct omp_loop_static_tag : public parallel_tag { };
+
+
+  /** @brief Base class for for std::find() variants. */
+  struct find_tag { };
+
+
+  /** @brief Forces parallel merging
+   *  with exact splitting, at compile time. */
+  struct exact_tag : public parallel_tag
+  {
+    exact_tag() { }
+    exact_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Forces parallel merging
+   *  with exact splitting, at compile time. */
+  struct sampling_tag : public parallel_tag
+  {
+    sampling_tag() { }
+    sampling_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+
+  /** @brief Forces parallel sorting using multiway mergesort
+   *  at compile time. */
+  struct multiway_mergesort_tag : public parallel_tag
+  {
+    multiway_mergesort_tag() { }
+    multiway_mergesort_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Forces parallel sorting using multiway mergesort
+   *  with exact splitting at compile time. */
+  struct multiway_mergesort_exact_tag : public parallel_tag
+  {
+    multiway_mergesort_exact_tag() { }
+    multiway_mergesort_exact_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Forces parallel sorting using multiway mergesort
+   *  with splitting by sampling at compile time. */
+  struct multiway_mergesort_sampling_tag : public parallel_tag
+  {
+    multiway_mergesort_sampling_tag() { }
+    multiway_mergesort_sampling_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Forces parallel sorting using unbalanced quicksort
+   *  at compile time. */
+  struct quicksort_tag : public parallel_tag
+  {
+    quicksort_tag() { }
+    quicksort_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+  /** @brief Forces parallel sorting using balanced quicksort
+   *  at compile time. */
+  struct balanced_quicksort_tag : public parallel_tag
+  {
+    balanced_quicksort_tag() { }
+    balanced_quicksort_tag(_ThreadIndex __num_threads)
+    : parallel_tag(__num_threads) { }
+  };
+
+
+  /** @brief Selects the growing block size variant for std::find().
+      @see _GLIBCXX_FIND_GROWING_BLOCKS */
+  struct growing_blocks_tag : public find_tag { };
+
+  /** @brief Selects the constant block size variant for std::find().
+      @see _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS */
+  struct constant_size_blocks_tag : public find_tag { };
+
+  /** @brief Selects the equal splitting variant for std::find().
+      @see _GLIBCXX_FIND_EQUAL_SPLIT */
+  struct equal_split_tag : public find_tag { };
+}
+
+#endif /* _GLIBCXX_PARALLEL_TAGS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/types.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/types.h
new file mode 100644
index 000000000..bb6eaa5ed
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/types.h
@@ -0,0 +1,137 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/types.h
+ *  @brief Basic types and typedefs.
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Johannes Singler and Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_TYPES_H
+#define _GLIBCXX_PARALLEL_TYPES_H 1
+
+#include <cstdlib>
+#include <limits>
+#include <tr1/cstdint>
+
+namespace __gnu_parallel
+{
+  // Enumerated types.
+
+  /// Run-time equivalents for the compile-time tags.
+  enum _Parallelism
+    {
+      /// Not parallel.
+      sequential,
+
+      /// Parallel unbalanced (equal-sized chunks).
+      parallel_unbalanced,
+
+      /// Parallel balanced (work-stealing).
+      parallel_balanced,
+
+      /// Parallel with OpenMP dynamic load-balancing.
+      parallel_omp_loop,
+
+      /// Parallel with OpenMP static load-balancing.
+      parallel_omp_loop_static,
+
+      /// Parallel with OpenMP taskqueue construct.
+      parallel_taskqueue
+    };
+
+  /// Strategies for run-time algorithm selection: 
+  // force_sequential, force_parallel, heuristic.
+  enum _AlgorithmStrategy
+    {
+      heuristic,
+      force_sequential,
+      force_parallel
+    };
+
+  /// Sorting algorithms: 
+  // multi-way mergesort, quicksort, load-balanced quicksort.
+  enum _SortAlgorithm 
+    { 
+      MWMS, 
+      QS, 
+      QS_BALANCED 
+    };
+
+  /// Merging algorithms: 
+  // bubblesort-alike, loser-tree variants, enum __sentinel.
+  enum _MultiwayMergeAlgorithm
+    {
+      LOSER_TREE
+    };
+
+  /// Partial sum algorithms: recursive, linear.
+  enum _PartialSumAlgorithm 
+    { 
+      RECURSIVE, 
+      LINEAR 
+    };
+
+  /// Sorting/merging algorithms: sampling, __exact.
+  enum _SplittingAlgorithm 
+    { 
+      SAMPLING, 
+      EXACT 
+    };
+
+  /// Find algorithms:
+  // growing blocks, equal-sized blocks, equal splitting.
+  enum _FindAlgorithm 
+    { 
+      GROWING_BLOCKS, 
+      CONSTANT_SIZE_BLOCKS, 
+      EQUAL_SPLIT 
+    };
+
+  /**
+   * @brief Unsigned integer to index __elements.
+   * The total number of elements for each algorithm must fit into this type.
+   */
+  typedef uint64_t _SequenceIndex;
+
+  /**
+   * @brief Unsigned integer to index a thread number.
+   * The maximum thread number (for each processor) must fit into this type.
+   */
+  typedef uint16_t _ThreadIndex;
+
+  // XXX atomics interface?
+  /// Longest compare-and-swappable integer type on this platform.
+  typedef int64_t _CASable;
+
+  /// Number of bits of _CASable.
+  static const int _CASable_bits = std::numeric_limits<_CASable>::digits;
+
+  /// ::_CASable with the right half of bits set to 1.
+  static const _CASable _CASable_mask =
+                            ((_CASable(1) << (_CASable_bits / 2)) - 1);
+}
+
+#endif /* _GLIBCXX_PARALLEL_TYPES_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/unique_copy.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/unique_copy.h
new file mode 100644
index 000000000..72c84a9cc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/unique_copy.h
@@ -0,0 +1,197 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/unique_copy.h
+ *  @brief Parallel implementations of std::unique_copy().
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Robert Geisberger and Robin Dapp.
+
+#ifndef _GLIBCXX_PARALLEL_UNIQUE_COPY_H
+#define _GLIBCXX_PARALLEL_UNIQUE_COPY_H 1
+
+#include <parallel/parallel.h>
+#include <parallel/multiseq_selection.h>
+
+namespace __gnu_parallel
+{
+  /** @brief Parallel std::unique_copy(), w/__o explicit equality predicate.
+    *  @param __first Begin iterator of input sequence.
+    *  @param __last End iterator of input sequence.
+    *  @param __result Begin iterator of result __sequence.
+    *  @param __binary_pred Equality predicate.
+    *  @return End iterator of result __sequence. */
+  template<typename _IIter,
+           class _OutputIterator,
+           class _BinaryPredicate>
+    _OutputIterator
+    __parallel_unique_copy(_IIter __first, _IIter __last,
+			   _OutputIterator __result,
+			   _BinaryPredicate __binary_pred)
+    {
+      _GLIBCXX_CALL(__last - __first)
+
+      typedef std::iterator_traits<_IIter> _TraitsType;
+      typedef typename _TraitsType::value_type _ValueType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      _DifferenceType __size = __last - __first;
+
+      if (__size == 0)
+	return __result;
+
+      // Let the first thread process two parts.
+      _DifferenceType *__counter;
+      _DifferenceType *__borders;
+
+      _ThreadIndex __num_threads = __get_max_threads();
+      // First part contains at least one element.
+#     pragma omp parallel num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+	  __borders = new _DifferenceType[__num_threads + 2];
+	  equally_split(__size, __num_threads + 1, __borders);
+	  __counter = new _DifferenceType[__num_threads + 1];
+	}
+
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	_DifferenceType __begin, __end;
+
+	// Check for length without duplicates
+	// Needed for position in output
+	_DifferenceType __i = 0;
+	_OutputIterator __out = __result;
+
+	if (__iam == 0)
+          {
+            __begin = __borders[0] + 1;   // == 1
+            __end = __borders[__iam + 1];
+
+            ++__i;
+            *__out++ = *__first;
+
+            for (_IIter __iter = __first + __begin; __iter < __first + __end;
+		 ++__iter)
+              {
+        	if (!__binary_pred(*__iter, *(__iter - 1)))
+                  {
+                    ++__i;
+                    *__out++ = *__iter;
+                  }
+              }
+          }
+	else
+          {
+            __begin = __borders[__iam]; //one part
+            __end = __borders[__iam + 1];
+
+            for (_IIter __iter = __first + __begin; __iter < __first + __end;
+		 ++__iter)
+              {
+        	if (!__binary_pred(*__iter, *(__iter - 1)))
+                  ++__i;
+              }
+          }
+	__counter[__iam] = __i;
+
+	// Last part still untouched.
+	_DifferenceType __begin_output;
+
+#       pragma omp barrier
+
+	// Store result in output on calculated positions.
+	__begin_output = 0;
+
+	if (__iam == 0)
+          {
+            for (_ThreadIndex __t = 0; __t < __num_threads; ++__t)
+              __begin_output += __counter[__t];
+
+            __i = 0;
+
+            _OutputIterator __iter_out = __result + __begin_output;
+
+            __begin = __borders[__num_threads];
+            __end = __size;
+
+            for (_IIter __iter = __first + __begin; __iter < __first + __end;
+		 ++__iter)
+              {
+        	if (__iter == __first
+		    || !__binary_pred(*__iter, *(__iter - 1)))
+                  {
+                    ++__i;
+                    *__iter_out++ = *__iter;
+                  }
+              }
+
+            __counter[__num_threads] = __i;
+          }
+	else
+          {
+            for (_ThreadIndex __t = 0; __t < __iam; __t++)
+              __begin_output += __counter[__t];
+
+            _OutputIterator __iter_out = __result + __begin_output;
+            for (_IIter __iter = __first + __begin; __iter < __first + __end;
+		 ++__iter)
+              {
+        	if (!__binary_pred(*__iter, *(__iter - 1)))
+                  *__iter_out++ = *__iter;
+              }
+          }
+      }
+
+      _DifferenceType __end_output = 0;
+      for (_ThreadIndex __t = 0; __t < __num_threads + 1; __t++)
+	__end_output += __counter[__t];
+
+      delete[] __borders;
+
+      return __result + __end_output;
+    }
+
+  /** @brief Parallel std::unique_copy(), without explicit equality predicate
+    *  @param __first Begin iterator of input sequence.
+    *  @param __last End iterator of input sequence.
+    *  @param __result Begin iterator of result __sequence.
+    *  @return End iterator of result __sequence. */
+  template<typename _IIter, class _OutputIterator>
+    inline _OutputIterator
+    __parallel_unique_copy(_IIter __first, _IIter __last,
+			   _OutputIterator __result)
+    {
+      typedef typename std::iterator_traits<_IIter>::value_type
+	_ValueType;
+      return __parallel_unique_copy(__first, __last, __result,
+				    std::equal_to<_ValueType>());
+    }
+
+}//namespace __gnu_parallel
+
+#endif /* _GLIBCXX_PARALLEL_UNIQUE_COPY_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/workstealing.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/workstealing.h
new file mode 100644
index 000000000..5e90ae992
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/parallel/workstealing.h
@@ -0,0 +1,312 @@
+// -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 3, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file parallel/workstealing.h
+ *  @brief Parallelization of embarrassingly parallel execution by
+ *  means of work-stealing.
+ *
+ *  Work stealing is described in
+ *
+ *  R. D. Blumofe and C. E. Leiserson.
+ *  Scheduling multithreaded computations by work stealing.
+ *  Journal of the ACM, 46(5):720–748, 1999.
+ *
+ *  This file is a GNU parallel extension to the Standard C++ Library.
+ */
+
+// Written by Felix Putze.
+
+#ifndef _GLIBCXX_PARALLEL_WORKSTEALING_H
+#define _GLIBCXX_PARALLEL_WORKSTEALING_H 1
+
+#include <parallel/parallel.h>
+#include <parallel/random_number.h>
+#include <parallel/compatibility.h>
+
+namespace __gnu_parallel
+{
+
+#define _GLIBCXX_JOB_VOLATILE volatile
+
+  /** @brief One __job for a certain thread. */
+  template<typename _DifferenceTp>
+    struct _Job
+    {
+      typedef _DifferenceTp _DifferenceType;
+
+      /** @brief First element.
+       *
+       *  Changed by owning and stealing thread. By stealing thread,
+       *  always incremented. */
+      _GLIBCXX_JOB_VOLATILE _DifferenceType _M_first;
+
+      /** @brief Last element.
+       *
+       *  Changed by owning thread only. */
+      _GLIBCXX_JOB_VOLATILE _DifferenceType _M_last;
+
+      /** @brief Number of elements, i.e. @c _M_last-_M_first+1.
+       *
+       *  Changed by owning thread only. */
+      _GLIBCXX_JOB_VOLATILE _DifferenceType _M_load;
+    };
+
+  /** @brief Work stealing algorithm for random access iterators.
+    *
+    *  Uses O(1) additional memory. Synchronization at job lists is
+    *  done with atomic operations.
+    *  @param __begin Begin iterator of element sequence.
+    *  @param __end End iterator of element sequence.
+    *  @param __op User-supplied functor (comparator, predicate, adding
+    *  functor, ...).
+    *  @param __f Functor to @a process an element with __op (depends on
+    *  desired functionality, e. g. for std::for_each(), ...).
+    *  @param __r Functor to @a add a single __result to the already
+    *  processed elements (depends on functionality).
+    *  @param __base Base value for reduction.
+    *  @param __output Pointer to position where final result is written to
+    *  @param __bound Maximum number of elements processed (e. g. for
+    *  std::count_n()).
+    *  @return User-supplied functor (that may contain a part of the result).
+    */
+  template<typename _RAIter,
+           typename _Op,
+           typename _Fu,
+           typename _Red,
+           typename _Result>
+    _Op
+    __for_each_template_random_access_workstealing(_RAIter __begin,
+						   _RAIter __end, _Op __op,
+						   _Fu& __f, _Red __r,
+						   _Result __base,
+						   _Result& __output,
+      typename std::iterator_traits<_RAIter>::difference_type __bound)
+    {
+      _GLIBCXX_CALL(__end - __begin)
+
+      typedef std::iterator_traits<_RAIter> _TraitsType;
+      typedef typename _TraitsType::difference_type _DifferenceType;
+
+      const _Settings& __s = _Settings::get();
+
+      _DifferenceType __chunk_size =
+          static_cast<_DifferenceType>(__s.workstealing_chunk_size);
+
+      // How many jobs?
+      _DifferenceType __length = (__bound < 0) ? (__end - __begin) : __bound;
+
+      // To avoid false sharing in a cache line.
+      const int __stride = (__s.cache_line_size * 10
+			    / sizeof(_Job<_DifferenceType>) + 1);
+
+      // Total number of threads currently working.
+      _ThreadIndex __busy = 0;
+
+      _Job<_DifferenceType> *__job;
+
+      omp_lock_t __output_lock;
+      omp_init_lock(&__output_lock);
+
+      // Write base value to output.
+      __output = __base;
+
+      // No more threads than jobs, at least one thread.
+      _ThreadIndex __num_threads = __gnu_parallel::max<_ThreadIndex>
+	(1, __gnu_parallel::min<_DifferenceType>(__length,
+						 __get_max_threads()));
+
+#     pragma omp parallel shared(__busy) num_threads(__num_threads)
+      {
+#       pragma omp single
+	{
+	  __num_threads = omp_get_num_threads();
+
+	  // Create job description array.
+	  __job = new _Job<_DifferenceType>[__num_threads * __stride];
+	}
+
+	// Initialization phase.
+
+	// Flags for every thread if it is doing productive work.
+	bool __iam_working = false;
+
+	// Thread id.
+	_ThreadIndex __iam = omp_get_thread_num();
+
+	// This job.
+	_Job<_DifferenceType>& __my_job = __job[__iam * __stride];
+
+	// Random number (for work stealing).
+	_ThreadIndex __victim;
+
+	// Local value for reduction.
+	_Result __result = _Result();
+
+	// Number of elements to steal in one attempt.
+	_DifferenceType __steal;
+
+	// Every thread has its own random number generator
+	// (modulo __num_threads).
+	_RandomNumber __rand_gen(__iam, __num_threads);
+
+	// This thread is currently working.
+#       pragma omp atomic
+	++__busy;
+
+	__iam_working = true;
+
+	// How many jobs per thread? last thread gets the rest.
+	__my_job._M_first = static_cast<_DifferenceType>
+	  (__iam * (__length / __num_threads));
+
+	__my_job._M_last = (__iam == (__num_threads - 1)
+			    ? (__length - 1)
+			    : ((__iam + 1) * (__length / __num_threads) - 1));
+	__my_job._M_load = __my_job._M_last - __my_job._M_first + 1;
+
+	// Init result with _M_first value (to have a base value for reduction)
+	if (__my_job._M_first <= __my_job._M_last)
+	  {
+	    // Cannot use volatile variable directly.
+	    _DifferenceType __my_first = __my_job._M_first;
+	    __result = __f(__op, __begin + __my_first);
+	    ++__my_job._M_first;
+	    --__my_job._M_load;
+	  }
+
+	_RAIter __current;
+
+#       pragma omp barrier
+
+	// Actual work phase
+	// Work on own or stolen current start
+	while (__busy > 0)
+	  {
+	    // Work until no productive thread left.
+#           pragma omp flush(__busy)
+
+	    // Thread has own work to do
+	    while (__my_job._M_first <= __my_job._M_last)
+	      {
+		// fetch-and-add call
+		// Reserve current job block (size __chunk_size) in my queue.
+		_DifferenceType __current_job =
+		  __fetch_and_add<_DifferenceType>(&(__my_job._M_first),
+						   __chunk_size);
+
+		// Update _M_load, to make the three values consistent,
+		// _M_first might have been changed in the meantime
+		__my_job._M_load = __my_job._M_last - __my_job._M_first + 1;
+		for (_DifferenceType __job_counter = 0;
+		     __job_counter < __chunk_size
+		       && __current_job <= __my_job._M_last;
+		     ++__job_counter)
+		  {
+		    // Yes: process it!
+		    __current = __begin + __current_job;
+		    ++__current_job;
+
+		    // Do actual work.
+		    __result = __r(__result, __f(__op, __current));
+		  }
+
+#               pragma omp flush(__busy)
+	      }
+
+	    // After reaching this point, a thread's __job list is empty.
+	    if (__iam_working)
+	      {
+		// This thread no longer has work.
+#               pragma omp atomic
+		--__busy;
+
+		__iam_working = false;
+	      }
+
+	    _DifferenceType __supposed_first, __supposed_last,
+	                    __supposed_load;
+	    do
+	      {
+		// Find random nonempty deque (not own), do consistency check.
+		__yield();
+#               pragma omp flush(__busy)
+		__victim = __rand_gen();
+		__supposed_first = __job[__victim * __stride]._M_first;
+		__supposed_last = __job[__victim * __stride]._M_last;
+		__supposed_load = __job[__victim * __stride]._M_load;
+	      }
+	    while (__busy > 0
+		   && ((__supposed_load <= 0)
+		       || ((__supposed_first + __supposed_load - 1)
+			   != __supposed_last)));
+
+	    if (__busy == 0)
+	      break;
+
+	    if (__supposed_load > 0)
+	      {
+		// Has work and work to do.
+		// Number of elements to steal (at least one).
+		__steal = (__supposed_load < 2) ? 1 : __supposed_load / 2;
+
+		// Push __victim's current start forward.
+		_DifferenceType __stolen_first =
+		  __fetch_and_add<_DifferenceType>
+		  (&(__job[__victim * __stride]._M_first), __steal);
+		_DifferenceType __stolen_try = (__stolen_first + __steal
+						- _DifferenceType(1));
+
+		__my_job._M_first = __stolen_first;
+		__my_job._M_last = __gnu_parallel::min(__stolen_try,
+						       __supposed_last);
+		__my_job._M_load = __my_job._M_last - __my_job._M_first + 1;
+
+		// Has potential work again.
+#               pragma omp atomic
+		++__busy;
+		__iam_working = true;
+
+#               pragma omp flush(__busy)
+	      }
+#           pragma omp flush(__busy)
+	  } // end while __busy > 0
+	// Add accumulated result to output.
+	omp_set_lock(&__output_lock);
+	__output = __r(__output, __result);
+	omp_unset_lock(&__output_lock);
+      }
+
+      delete[] __job;
+
+      // Points to last element processed (needed as return value for
+      // some algorithms like transform)
+      __f._M_finish_iterator = __begin + __length;
+
+      omp_destroy_lock(&__output_lock);
+
+      return __op;
+    }
+} // end namespace
+
+#endif /* _GLIBCXX_PARALLEL_WORKSTEALING_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/extc++.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/extc++.h
new file mode 100644
index 000000000..03e53390c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/extc++.h
@@ -0,0 +1,71 @@
+// C++ includes used for precompiling extensions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file extc++.h
+ *  This is an implementation file for a precompiled header.
+ */
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+#include <bits/stdtr1c++.h>
+#endif
+
+#include <ext/algorithm>
+#include <ext/array_allocator.h>
+#include <ext/atomicity.h>
+#include <ext/bitmap_allocator.h>
+#include <ext/cast.h>
+#include <ext/concurrence.h>
+#include <ext/debug_allocator.h>
+#include <ext/extptr_allocator.h>
+#include <ext/functional>
+#include <ext/iterator>
+#include <ext/malloc_allocator.h>
+#include <ext/memory>
+#include <ext/mt_allocator.h>
+#include <ext/new_allocator.h>
+#include <ext/numeric>
+#include <ext/pod_char_traits.h>
+#include <ext/pointer.h>
+#include <ext/pool_allocator.h>
+#include <ext/rb_tree>
+#include <ext/rope>
+#include <ext/slist>
+#include <ext/stdio_filebuf.h>
+#include <ext/stdio_sync_filebuf.h>
+#include <ext/throw_allocator.h>
+#include <ext/typelist.h>
+#include <ext/type_traits.h>
+#include <ext/vstring.h>
+#include <ext/pb_ds/assoc_container.hpp>
+#include <ext/pb_ds/priority_queue.hpp>
+#include <ext/pb_ds/exception.hpp>
+#include <ext/pb_ds/hash_policy.hpp>
+#include <ext/pb_ds/list_update_policy.hpp>
+#include <ext/pb_ds/tree_policy.hpp>
+#include <ext/pb_ds/trie_policy.hpp>
+
+#ifdef _GLIBCXX_HAVE_ICONV
+ #include <ext/codecvt_specializations.h>
+ #include <ext/enc_filebuf.h>
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdc++.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdc++.h
new file mode 100644
index 000000000..510a6552f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdc++.h
@@ -0,0 +1,116 @@
+// C++ includes used for precompiling -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdc++.h
+ *  This is an implementation file for a precompiled header.
+ */
+
+// 17.4.1.2 Headers
+
+// C
+#ifndef _GLIBCXX_NO_ASSERT
+#include <cassert>
+#endif
+#include <cctype>
+#include <cerrno>
+#include <cfloat>
+#include <ciso646>
+#include <climits>
+#include <clocale>
+#include <cmath>
+#include <csetjmp>
+#include <csignal>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <ccomplex>
+#include <cfenv>
+#include <cinttypes>
+#include <cstdbool>
+#include <cstdint>
+#include <ctgmath>
+#include <cwchar>
+#include <cwctype>
+#endif
+
+// C++
+#include <algorithm>
+#include <bitset>
+#include <complex>
+#include <deque>
+#include <exception>
+#include <fstream>
+#include <functional>
+#include <iomanip>
+#include <ios>
+#include <iosfwd>
+#include <iostream>
+#include <istream>
+#include <iterator>
+#include <limits>
+#include <list>
+#include <locale>
+#include <map>
+#include <memory>
+#include <new>
+#include <numeric>
+#include <ostream>
+#include <queue>
+#include <set>
+#include <sstream>
+#include <stack>
+#include <stdexcept>
+#include <streambuf>
+#include <string>
+#include <typeinfo>
+#include <utility>
+#include <valarray>
+#include <vector>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <array>
+#include <atomic>
+#include <chrono>
+#include <condition_variable>
+#include <forward_list>
+#include <future>
+#include <initializer_list>
+#include <mutex>
+#include <random>
+#include <ratio>
+#include <regex>
+#include <system_error>
+#include <thread>
+#include <tuple>
+#include <typeindex>
+#include <type_traits>
+#include <unordered_map>
+#include <unordered_set>
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdtr1c++.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdtr1c++.h
new file mode 100644
index 000000000..8ed9cb667
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/precompiled/stdtr1c++.h
@@ -0,0 +1,53 @@
+// C++ includes used for precompiling TR1 -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file stdtr1c++.h
+ *  This is an implementation file for a precompiled header.
+ */
+
+#include <bits/stdc++.h>
+
+#include <tr1/array>
+#include <tr1/cctype>
+#include <tr1/cfenv>
+#include <tr1/cfloat>
+#include <tr1/cinttypes>
+#include <tr1/climits>
+#include <tr1/cmath>
+#include <tr1/complex>
+#include <tr1/cstdarg>
+#include <tr1/cstdbool>
+#include <tr1/cstdint>
+#include <tr1/cstdio>
+#include <tr1/cstdlib>
+#include <tr1/ctgmath>
+#include <tr1/ctime>
+#include <tr1/cwchar>
+#include <tr1/cwctype>
+#include <tr1/functional>
+#include <tr1/random>
+#include <tr1/tuple>
+#include <tr1/unordered_map>
+#include <tr1/unordered_set>
+#include <tr1/utility>
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/base.h
new file mode 100644
index 000000000..ef17443b3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/base.h
@@ -0,0 +1,66 @@
+// -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/base.h
+ *  @brief Sequential helper functions.
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+// Written by Lixia Liu
+
+#ifndef _GLIBCXX_PROFILE_BASE_H
+#define _GLIBCXX_PROFILE_BASE_H 1
+
+#include <functional>
+#include <profile/impl/profiler.h>
+
+// Profiling mode namespaces.
+
+/**
+ * @namespace std::__profile
+ * @brief GNU profile code, replaces standard behavior with profile behavior.
+ */
+namespace std _GLIBCXX_VISIBILITY(default) 
+{ 
+  namespace __profile { } 
+}
+
+/**
+ * @namespace __gnu_profile
+ * @brief GNU profile code for public use.
+ */
+namespace __gnu_profile
+{
+  // Import all the profile versions of components in namespace std.
+  using namespace std::__profile;
+}
+
+
+#endif /* _GLIBCXX_PROFILE_BASE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/bitset b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/bitset
new file mode 100644
index 000000000..a995afa97
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/bitset
@@ -0,0 +1,377 @@
+// Profiling bitset implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/bitset
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_BITSET
+#define _GLIBCXX_PROFILE_BITSET
+
+#include <bitset>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::bitset wrapper with performance instrumentation.
+  template<size_t _Nb>
+    class bitset
+    : public _GLIBCXX_STD_C::bitset<_Nb>
+    {
+      typedef _GLIBCXX_STD_C::bitset<_Nb> _Base;
+
+    public:
+      // bit reference:
+      class reference
+      : private _Base::reference
+      {
+	typedef typename _Base::reference _Base_ref;
+
+	friend class bitset;
+	reference();
+
+	reference(const _Base_ref& __base, bitset* __seq)
+	: _Base_ref(__base)
+	{ }
+
+      public:
+	reference(const reference& __x)
+	: _Base_ref(__x)
+	{ }
+
+	reference&
+	operator=(bool __x)
+	{
+	  *static_cast<_Base_ref*>(this) = __x;
+	  return *this;
+	}
+
+	reference&
+	operator=(const reference& __x)
+	{
+	  *static_cast<_Base_ref*>(this) = __x;
+	  return *this;
+	}
+
+	bool
+	operator~() const
+	{
+	  return ~(*static_cast<const _Base_ref*>(this));
+	}
+
+	operator bool() const
+	{
+	  return *static_cast<const _Base_ref*>(this);
+	}
+
+	reference&
+	flip()
+	{
+	  _Base_ref::flip();
+	  return *this;
+	}
+      };
+
+      // 23.3.5.1 constructors:
+      _GLIBCXX_CONSTEXPR bitset() : _Base() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr bitset(unsigned long long __val)
+#else
+      bitset(unsigned long __val)
+#endif
+      : _Base(__val) { }
+
+      template<typename _CharT, typename _Traits, typename _Alloc>
+        explicit
+        bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __pos = 0,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos))
+	: _Base(__str, __pos, __n) { }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __pos,
+	       typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
+	       __n,
+	       _CharT __zero, _CharT __one = _CharT('1'))
+	: _Base(__str, __pos, __n, __zero, __one) { }
+
+      bitset(const _Base& __x) : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _CharT>
+        explicit
+        bitset(const _CharT* __str,
+	       typename std::basic_string<_CharT>::size_type __n
+	       = std::basic_string<_CharT>::npos,
+	       _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
+	: _Base(__str, __n, __zero, __one) { }
+#endif
+
+      // 23.3.5.2 bitset operations:
+      bitset<_Nb>&
+      operator&=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() &= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator|=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() |= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator^=(const bitset<_Nb>& __rhs)
+      {
+	_M_base() ^= __rhs;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator<<=(size_t __pos)
+      {
+	_M_base() <<= __pos;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator>>=(size_t __pos)
+      {
+	_M_base() >>= __pos;
+	return *this;
+      }
+
+      bitset<_Nb>&
+      set()
+      {
+	_Base::set();
+	return *this;
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 186. bitset::set() second parameter should be bool
+      bitset<_Nb>&
+      set(size_t __pos, bool __val = true)
+      {
+	_Base::set(__pos, __val);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      reset()
+      {
+	_Base::reset();
+	return *this;
+      }
+
+      bitset<_Nb>&
+      reset(size_t __pos)
+      {
+	_Base::reset(__pos);
+	return *this;
+      }
+
+      bitset<_Nb> operator~() const { return bitset(~_M_base()); }
+
+      bitset<_Nb>&
+      flip()
+      {
+	_Base::flip();
+	return *this;
+      }
+
+      bitset<_Nb>&
+      flip(size_t __pos)
+      {
+	_Base::flip(__pos);
+	return *this;
+      }
+
+      // element access:
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 11. Bitset minor problems
+      reference
+      operator[](size_t __pos)
+      {
+	return reference(_M_base()[__pos], this);
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 11. Bitset minor problems
+      bool
+      operator[](size_t __pos) const
+      {
+	return _M_base()[__pos];
+      }
+
+      using _Base::to_ulong;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::to_ullong;
+#endif
+
+      template <typename _CharT, typename _Traits, typename _Alloc>
+        std::basic_string<_CharT, _Traits, _Alloc>
+        to_string() const
+        { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	std::basic_string<_CharT, _Traits, _Alloc>
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  return _M_base().template
+	    to_string<_CharT, _Traits, _Alloc>(__zero, __one);
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 434. bitset::to_string() hard to use.
+      template<typename _CharT, typename _Traits>
+        std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+        to_string() const
+        { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 853. to_string needs updating with zero and one.
+      template<class _CharT, class _Traits>
+	std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{ return to_string<_CharT, _Traits,
+	                   std::allocator<_CharT> >(__zero, __one); }
+
+      template<typename _CharT>
+        std::basic_string<_CharT, std::char_traits<_CharT>,
+                          std::allocator<_CharT> >
+        to_string() const
+        {
+          return to_string<_CharT, std::char_traits<_CharT>,
+                           std::allocator<_CharT> >();
+        }
+
+      template<class _CharT>
+	std::basic_string<_CharT, std::char_traits<_CharT>,
+	                  std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  return to_string<_CharT, std::char_traits<_CharT>,
+	                   std::allocator<_CharT> >(__zero, __one);
+	}
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string() const
+      {
+	return to_string<char,std::char_traits<char>,std::allocator<char> >();
+      }
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string(char __zero, char __one = '1') const
+      {
+	return to_string<char, std::char_traits<char>,
+	                 std::allocator<char> >(__zero, __one);
+      }
+
+      using _Base::count;
+      using _Base::size;
+
+      bool
+      operator==(const bitset<_Nb>& __rhs) const
+      { return _M_base() == __rhs; }
+
+      bool
+      operator!=(const bitset<_Nb>& __rhs) const
+      { return _M_base() != __rhs; }
+
+      using _Base::test;
+      using _Base::all;
+      using _Base::any;
+      using _Base::none;
+
+      bitset<_Nb>
+      operator<<(size_t __pos) const
+      { return bitset<_Nb>(_M_base() << __pos); }
+
+      bitset<_Nb>
+      operator>>(size_t __pos) const
+      { return bitset<_Nb>(_M_base() >> __pos); }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) &= __y; }
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) |= __y; }
+
+  template<size_t _Nb>
+    bitset<_Nb>
+    operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    { return bitset<_Nb>(__x) ^= __y; }
+
+  template<typename _CharT, typename _Traits, size_t _Nb>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
+    { return __is >> __x._M_base(); }
+
+  template<typename _CharT, typename _Traits, size_t _Nb>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const bitset<_Nb>& __x)
+    { return __os << __x._M_base(); }
+} // namespace __profile
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // DR 1182.
+  /// std::hash specialization for bitset.
+  template<size_t _Nb>
+    struct hash<__profile::bitset<_Nb>>
+    : public __hash_base<size_t, __profile::bitset<_Nb>>
+    {
+      size_t
+      operator()(const __profile::bitset<_Nb>& __b) const
+      { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); }
+    };
+#endif
+
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/deque b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/deque
new file mode 100644
index 000000000..1c0e53c72
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/deque
@@ -0,0 +1,451 @@
+// Profiling deque implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/deque
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_DEQUE
+#define _GLIBCXX_PROFILE_DEQUE 1
+
+#include <deque>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::deque wrapper with performance instrumentation.
+  template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
+    class deque
+    : public _GLIBCXX_STD_C::deque<_Tp, _Allocator>
+    {
+      typedef  _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base;
+
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef typename _Base::iterator             iterator;
+      typedef typename _Base::const_iterator       const_iterator;
+      typedef typename _Base::reverse_iterator     reverse_iterator;
+      typedef typename _Base::const_reverse_iterator const_reverse_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+
+      // 23.2.1.1 construct/copy/destroy:
+      explicit
+      deque(const _Allocator& __a = _Allocator())
+      : _Base(__a) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      deque(size_type __n)
+      : _Base(__n) { }
+
+      deque(size_type __n, const _Tp& __value,
+	    const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#else
+      explicit
+      deque(size_type __n, const _Tp& __value = _Tp(),
+	    const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) { }
+#endif
+
+      template<class _InputIterator>
+        deque(_InputIterator __first, _InputIterator __last,
+	      const _Allocator& __a = _Allocator())
+	: _Base(__first, __last, __a)
+        { }
+
+      deque(const deque& __x)
+      : _Base(__x) { }
+
+      deque(const _Base& __x)
+      : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      deque(deque&& __x)
+      : _Base(std::move(__x))
+      { }
+
+      deque(initializer_list<value_type> __l,
+	    const allocator_type& __a = allocator_type())
+      : _Base(__l, __a) { }
+#endif
+
+      ~deque() { }
+
+      deque&
+      operator=(const deque& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      deque&
+      operator=(deque&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      deque&
+      operator=(initializer_list<value_type> __l)
+      {
+	*static_cast<_Base*>(this) = __l;
+	return *this;
+      }
+#endif
+
+      template<class _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        {
+	  _Base::assign(__first, __last);
+	}
+
+      void
+      assign(size_type __n, const _Tp& __t)
+      {
+	_Base::assign(__n, __t);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      assign(initializer_list<value_type> __l)
+      {
+	_Base::assign(__l);
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin()); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin()); }
+
+      iterator
+      end()
+      { return iterator(_Base::end()); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end()); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin()); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end()); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // 23.2.1.2 capacity:
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      {
+	_Base::resize(__sz);
+      }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      {
+	_Base::resize(__sz, __c);
+      }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      {
+	_Base::resize(__sz, __c);
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::shrink_to_fit;
+#endif
+
+      using _Base::empty;
+
+      // element access:
+      reference
+      operator[](size_type __n)
+      {
+	return _M_base()[__n];
+      }
+
+      const_reference
+      operator[](size_type __n) const
+      {
+	return _M_base()[__n];
+      }
+
+      using _Base::at;
+
+      reference
+      front()
+      {
+	return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	return _Base::front();
+      }
+
+      reference
+      back()
+      {
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+	return _Base::back();
+      }
+
+      // 23.2.1.3 modifiers:
+      void
+      push_front(const _Tp& __x)
+      {
+	_Base::push_front(__x);
+      }
+
+      void
+      push_back(const _Tp& __x)
+      {
+	_Base::push_back(__x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_front(_Tp&& __x)
+      { emplace_front(std::move(__x)); }
+
+      void
+      push_back(_Tp&& __x)
+      { emplace_back(std::move(__x)); }
+
+      template<typename... _Args>
+        void
+        emplace_front(_Args&&... __args)
+	{
+	  _Base::emplace_front(std::forward<_Args>(__args)...);
+	}
+
+      template<typename... _Args>
+        void
+        emplace_back(_Args&&... __args)
+	{
+	  _Base::emplace_back(std::forward<_Args>(__args)...);
+	}
+
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args)
+	{
+	  typename _Base::iterator __res = _Base::emplace(__position,
+					    std::forward<_Args>(__args)...);
+	  return iterator(__res);
+	}
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+	typename _Base::iterator __res = _Base::insert(__position, __x);
+	return iterator(__res);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(iterator __position, _Tp&& __x)
+      { return emplace(__position, std::move(__x)); }
+
+      void
+      insert(iterator __p, initializer_list<value_type> __l)
+      {
+	_Base::insert(__p, __l);
+      }
+#endif
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+	_Base::insert(__position, __n, __x);
+      }
+
+      template<class _InputIterator>
+        void
+        insert(iterator __position,
+	       _InputIterator __first, _InputIterator __last)
+        {
+	  _Base::insert(__position, __first, __last);
+	}
+
+      void
+      pop_front()
+      {
+	_Base::pop_front();
+      }
+
+      void
+      pop_back()
+      {
+	_Base::pop_back();
+      }
+
+      iterator
+      erase(iterator __position)
+      {
+	if (__position == begin() || __position == end()-1)
+	  {
+	    return iterator(_Base::erase(__position));
+	  }
+	else
+	  {
+	    typename _Base::iterator __res = _Base::erase(__position);
+	    return iterator(__res);
+	  }
+      }
+
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+        return iterator(_Base::erase(__first, __last));
+      }
+
+      void
+      swap(deque& __x)
+      {
+	_Base::swap(__x);
+      }
+
+      void
+      clear()
+      {
+	_Base::clear();
+      }
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const deque<_Tp, _Alloc>& __lhs,
+	      const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const deque<_Tp, _Alloc>& __lhs,
+	       const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const deque<_Tp, _Alloc>& __lhs,
+	      const deque<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/forward_list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/forward_list
new file mode 100644
index 000000000..00af855d7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/forward_list
@@ -0,0 +1,179 @@
+// <forward_list> -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/forward_list
+ *  This file is a GNU debug extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_FORWARD_LIST
+#define _GLIBCXX_PROFILE_FORWARD_LIST 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <forward_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::forward_list wrapper with performance instrumentation.
+  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+    class forward_list
+    : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>
+    {
+      typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base;
+
+    public:
+      typedef typename _Base::size_type             size_type;
+
+    public:
+      // 23.2.3.1 construct/copy/destroy:
+      explicit
+      forward_list(const _Alloc& __al = _Alloc())
+      : _Base(__al) { }
+
+      forward_list(const forward_list& __list, const _Alloc& __al)
+      : _Base(__list, __al)
+      { }
+
+      forward_list(forward_list&& __list, const _Alloc& __al)
+      : _Base(std::move(__list), __al)
+      { }
+
+      explicit
+      forward_list(size_type __n)
+      : _Base(__n)
+      { }
+
+      forward_list(size_type __n, const _Tp& __value,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__n, __value, __al)
+      { }
+
+      template<typename _InputIterator>
+        forward_list(_InputIterator __first, _InputIterator __last,
+                     const _Alloc& __al = _Alloc())
+        : _Base(__first, __last, __al)
+        { }
+
+      forward_list(const forward_list& __list)
+      : _Base(__list)
+      { }
+
+      forward_list(forward_list&& __list)
+      : _Base(std::move(__list)) { }
+
+      forward_list(std::initializer_list<_Tp> __il,
+                   const _Alloc& __al = _Alloc())
+      : _Base(__il, __al)
+      { }
+
+      ~forward_list()
+      { }
+
+      forward_list&
+      operator=(const forward_list& __list)
+      {
+	static_cast<_Base&>(*this) = __list;
+	return *this;
+      }
+
+      forward_list&
+      operator=(forward_list&& __list)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	_Base::clear();
+	_Base::swap(__list);
+	return *this;
+      }
+
+      forward_list&
+      operator=(std::initializer_list<_Tp> __il)
+      {
+	static_cast<_Base&>(*this) = __il;
+        return *this;
+      }
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return __lx._M_base() == __ly._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return __lx._M_base() < __ly._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx == __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const forward_list<_Tp, _Alloc>& __lx,
+              const forward_list<_Tp, _Alloc>& __ly)
+    { return (__ly < __lx); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__lx < __ly); }
+
+  /// Based on operator<
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const forward_list<_Tp, _Alloc>& __lx,
+               const forward_list<_Tp, _Alloc>& __ly)
+    { return !(__ly < __lx); }
+
+  /// See std::forward_list::swap().
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(forward_list<_Tp, _Alloc>& __lx,
+	 forward_list<_Tp, _Alloc>& __ly)
+    { __lx.swap(__ly); }
+
+} // namespace __profile
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler.h
new file mode 100644
index 000000000..ab9cd9030
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler.h
@@ -0,0 +1,409 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler.h
+ *  @brief Interface of the profiling runtime library.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_H
+#define _GLIBCXX_PROFILE_PROFILER_H 1
+
+#include <bits/c++config.h>
+
+// Mechanism to define data with inline linkage.
+#define _GLIBCXX_PROFILE_DEFINE_UNINIT_DATA(__type, __name)             \
+  inline __type&                                                        \
+  __get_##__name()                                                      \
+  {                                                                     \
+    static __type __name;                                               \
+    return __name;                                                      \
+  }
+#define _GLIBCXX_PROFILE_DEFINE_DATA(__type, __name, __initial_value...) \
+  inline __type& __get_##__name() {                                      \
+    static __type __name(__initial_value);                               \
+    return __name;                                                       \
+  }
+#define _GLIBCXX_PROFILE_DATA(__name) \
+  __get_##__name()
+
+namespace __gnu_profile
+{
+  /** @brief Reentrance guard.
+   *
+   * Mechanism to protect all __gnu_profile operations against recursion,
+   * multithreaded and exception reentrance.
+   */
+  struct __reentrance_guard
+  {
+    static bool
+    __get_in()
+    {
+      if (__inside() == true)
+	return false;
+      else
+	{
+	  __inside() = true;
+	  return true;
+	}
+    }
+
+    static bool&
+    __inside()
+    {
+      static __thread bool _S_inside(false);
+      return _S_inside;
+    }
+
+    __reentrance_guard() { }
+    ~__reentrance_guard() { __inside() = false; }
+  };
+
+#define _GLIBCXX_PROFILE_REENTRANCE_GUARD(__x...)	      	\
+  {                                                             \
+    if (__gnu_profile::__reentrance_guard::__get_in())          \
+    {                                                           \
+      __gnu_profile::__reentrance_guard __get_out; 		\
+      __x;                                                      \
+    }                                                           \
+  }
+
+  // Forward declarations of implementation functions.
+  // Don't use any __gnu_profile:: in user code.
+  // Instead, use the __profcxx... macros, which offer guarded access.
+  bool __turn_on();
+  bool __turn_off();
+  bool __is_invalid();
+  bool __is_on();
+  bool __is_off();
+  void __report(void);
+  void __trace_hashtable_size_resize(const void*, std::size_t, std::size_t);
+  void __trace_hashtable_size_destruct(const void*, std::size_t, std::size_t);
+  void __trace_hashtable_size_construct(const void*, std::size_t);
+  void __trace_vector_size_resize(const void*, std::size_t, std::size_t);
+  void __trace_vector_size_destruct(const void*, std::size_t, std::size_t);
+  void __trace_vector_size_construct(const void*, std::size_t);
+  void __trace_hash_func_destruct(const void*, std::size_t, std::size_t,
+				  std::size_t);
+  void __trace_hash_func_construct(const void*);
+  void __trace_vector_to_list_destruct(const void*);
+  void __trace_vector_to_list_construct(const void*);
+  void __trace_vector_to_list_insert(const void*, std::size_t, std::size_t);
+  void __trace_vector_to_list_iterate(const void*, std::size_t);
+  void __trace_vector_to_list_invalid_operator(const void*);
+  void __trace_vector_to_list_resize(const void*, std::size_t, std::size_t);
+  void __trace_vector_to_list_find(const void*, std::size_t);
+
+  void __trace_list_to_slist_destruct(const void*);
+  void __trace_list_to_slist_construct(const void*);
+  void __trace_list_to_slist_rewind(const void*);
+  void __trace_list_to_slist_operation(const void*);
+
+  void __trace_list_to_vector_destruct(const void*);
+  void __trace_list_to_vector_construct(const void*);
+  void __trace_list_to_vector_insert(const void*, std::size_t, std::size_t);
+  void __trace_list_to_vector_iterate(const void*, std::size_t);
+  void __trace_list_to_vector_invalid_operator(const void*);
+  void __trace_list_to_vector_resize(const void*, std::size_t, std::size_t);
+
+  void __trace_list_to_set_destruct(const void*);
+  void __trace_list_to_set_construct(const void*);
+  void __trace_list_to_set_insert(const void*, std::size_t, std::size_t); 
+  void __trace_list_to_set_iterate(const void*, std::size_t);
+  void __trace_list_to_set_invalid_operator(const void*);
+  void __trace_list_to_set_find(const void*, std::size_t); 
+
+  void __trace_map_to_unordered_map_construct(const void*);
+  void __trace_map_to_unordered_map_invalidate(const void*);
+  void __trace_map_to_unordered_map_insert(const void*, std::size_t,
+					   std::size_t);
+  void __trace_map_to_unordered_map_erase(const void*, std::size_t,
+					  std::size_t);
+  void __trace_map_to_unordered_map_iterate(const void*, std::size_t);
+  void __trace_map_to_unordered_map_find(const void*, std::size_t);
+  void __trace_map_to_unordered_map_destruct(const void*);
+} // namespace __gnu_profile
+
+// Master switch turns on all diagnostics that are not explicitly turned off.
+#ifdef _GLIBCXX_PROFILE
+#ifndef _GLIBCXX_PROFILE_NO_HASHTABLE_TOO_SMALL
+#define _GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_HASHTABLE_TOO_LARGE
+#define _GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_VECTOR_TOO_SMALL
+#define _GLIBCXX_PROFILE_VECTOR_TOO_SMALL
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_VECTOR_TOO_LARGE
+#define _GLIBCXX_PROFILE_VECTOR_TOO_LARGE
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_INEFFICIENT_HASH
+#define _GLIBCXX_PROFILE_INEFFICIENT_HASH
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_VECTOR_TO_LIST
+#define _GLIBCXX_PROFILE_VECTOR_TO_LIST
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_LIST_TO_SLIST
+#define _GLIBCXX_PROFILE_LIST_TO_SLIST
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_LIST_TO_VECTOR
+#define _GLIBCXX_PROFILE_LIST_TO_VECTOR
+#endif
+#ifndef _GLIBCXX_PROFILE_NO_MAP_TO_UNORDERED_MAP
+#define _GLIBCXX_PROFILE_MAP_TO_UNORDERED_MAP
+#endif
+#endif
+
+// Expose global management routines to user code.
+#ifdef _GLIBCXX_PROFILE
+#define __profcxx_report() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__report())
+#define __profcxx_turn_on() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__turn_on())
+#define __profcxx_turn_off() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__turn_off())
+#define __profcxx_is_invalid() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_invalid())
+#define __profcxx_is_on() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_on())
+#define __profcxx__is_off() \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_off())
+#else
+#define __profcxx_report()
+#define __profcxx_turn_on()
+#define __profcxx_turn_off()
+#define __profcxx_is_invalid()
+#define __profcxx_is_on()
+#define __profcxx_is_off()
+#endif
+
+// Turn on/off instrumentation for HASHTABLE_TOO_SMALL and HASHTABLE_TOO_LARGE.
+#if (defined(_GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL) \
+     || defined(_GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE))
+#define __profcxx_hashtable_resize(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_hashtable_size_resize(__x))
+#define __profcxx_hashtable_destruct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_hashtable_size_destruct(__x))
+#define __profcxx_hashtable_construct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_hashtable_size_construct(__x))
+#else
+#define __profcxx_hashtable_resize(__x...)  
+#define __profcxx_hashtable_destruct(__x...) 
+#define __profcxx_hashtable_construct(__x...)  
+#endif
+
+// Turn on/off instrumentation for VECTOR_TOO_SMALL and VECTOR_TOO_LARGE.
+#if (defined(_GLIBCXX_PROFILE_VECTOR_TOO_SMALL) \
+     || defined(_GLIBCXX_PROFILE_VECTOR_TOO_LARGE))
+#define __profcxx_vector_resize(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_size_resize(__x))
+#define __profcxx_vector_destruct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_size_destruct(__x))
+#define __profcxx_vector_construct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_size_construct(__x))
+#else
+#define __profcxx_vector_resize(__x...)  
+#define __profcxx_vector_destruct(__x...) 
+#define __profcxx_vector_construct(__x...)  
+#endif 
+
+// Turn on/off instrumentation for INEFFICIENT_HASH.
+#if defined(_GLIBCXX_PROFILE_INEFFICIENT_HASH)
+#define __profcxx_hashtable_construct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_hash_func_construct(__x))
+#define __profcxx_hashtable_destruct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_hash_func_destruct(__x))
+#else
+#define __profcxx_hashtable_destruct2(__x...) 
+#define __profcxx_hashtable_construct2(__x...)  
+#endif
+
+// Turn on/off instrumentation for VECTOR_TO_LIST.
+#if defined(_GLIBCXX_PROFILE_VECTOR_TO_LIST)
+#define __profcxx_vector_construct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_construct(__x))
+#define __profcxx_vector_destruct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_destruct(__x))
+#define __profcxx_vector_insert(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_insert(__x))
+#define __profcxx_vector_iterate(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_iterate(__x))
+#define __profcxx_vector_invalid_operator(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_invalid_operator(__x))
+#define __profcxx_vector_resize2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_resize(__x))
+#define __profcxx_vector_find(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_vector_to_list_find(__x))
+#else
+#define __profcxx_vector_destruct2(__x...)
+#define __profcxx_vector_construct2(__x...)
+#define __profcxx_vector_insert(__x...)
+#define __profcxx_vector_iterate(__x...)
+#define __profcxx_vector_invalid_operator(__x...)
+#define __profcxx_vector_resize2(__x...)
+#define __profcxx_vector_find(__x...)
+#endif
+
+// Turn on/off instrumentation for LIST_TO_VECTOR. 
+#if defined(_GLIBCXX_PROFILE_LIST_TO_VECTOR)
+#define __profcxx_list_construct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_vector_construct(__x))
+#define __profcxx_list_destruct2(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_vector_destruct(__x))
+#define __profcxx_list_insert(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_vector_insert(__x))
+#define __profcxx_list_iterate(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_vector_iterate(__x))
+#define __profcxx_list_invalid_operator(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_vector_invalid_operator(__x))
+#else
+#define __profcxx_list_destruct2(__x...)
+#define __profcxx_list_construct2(__x...)
+#define __profcxx_list_insert(__x...)
+#define __profcxx_list_iterate(__x...)
+#define __profcxx_list_invalid_operator(__x...)
+#endif
+
+// Turn on/off instrumentation for LIST_TO_SLIST.  
+#if defined(_GLIBCXX_PROFILE_LIST_TO_SLIST)
+#define __profcxx_list_rewind(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_slist_rewind(__x))
+#define __profcxx_list_operation(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_slist_operation(__x))
+#define __profcxx_list_destruct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_slist_destruct(__x))
+#define __profcxx_list_construct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_list_to_slist_construct(__x))
+#else
+#define __profcxx_list_rewind(__x...)  
+#define __profcxx_list_operation(__x...)
+#define __profcxx_list_destruct(__x...) 
+#define __profcxx_list_construct(__x...)  
+#endif 
+
+// Turn on/off instrumentation for MAP_TO_UNORDERED_MAP.
+#if defined(_GLIBCXX_PROFILE_MAP_TO_UNORDERED_MAP)
+#define __profcxx_map_to_unordered_map_construct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_construct(__x))
+#define __profcxx_map_to_unordered_map_destruct(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_destruct(__x))
+#define __profcxx_map_to_unordered_map_insert(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_insert(__x))
+#define __profcxx_map_to_unordered_map_erase(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_erase(__x))
+#define __profcxx_map_to_unordered_map_iterate(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_iterate(__x))
+#define __profcxx_map_to_unordered_map_invalidate(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_invalidate(__x))
+#define __profcxx_map_to_unordered_map_find(__x...) \
+  _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+      __gnu_profile::__trace_map_to_unordered_map_find(__x))
+#else
+#define __profcxx_map_to_unordered_map_construct(__x...) \
+  
+#define __profcxx_map_to_unordered_map_destruct(__x...)
+#define __profcxx_map_to_unordered_map_insert(__x...)
+#define __profcxx_map_to_unordered_map_erase(__x...)
+#define __profcxx_map_to_unordered_map_iterate(__x...)
+#define __profcxx_map_to_unordered_map_invalidate(__x...)
+#define __profcxx_map_to_unordered_map_find(__x...)
+#endif
+
+// Set default values for compile-time customizable variables.
+#ifndef _GLIBCXX_PROFILE_TRACE_PATH_ROOT
+#define _GLIBCXX_PROFILE_TRACE_PATH_ROOT "libstdcxx-profile"
+#endif
+#ifndef _GLIBCXX_PROFILE_TRACE_ENV_VAR
+#define _GLIBCXX_PROFILE_TRACE_ENV_VAR "_GLIBCXX_PROFILE_TRACE_PATH_ROOT"
+#endif
+#ifndef _GLIBCXX_PROFILE_MAX_WARN_COUNT_ENV_VAR
+#define _GLIBCXX_PROFILE_MAX_WARN_COUNT_ENV_VAR \
+  "_GLIBCXX_PROFILE_MAX_WARN_COUNT"
+#endif
+#ifndef _GLIBCXX_PROFILE_MAX_WARN_COUNT
+#define _GLIBCXX_PROFILE_MAX_WARN_COUNT 10
+#endif
+#ifndef _GLIBCXX_PROFILE_MAX_STACK_DEPTH
+#define _GLIBCXX_PROFILE_MAX_STACK_DEPTH 32
+#endif
+#ifndef _GLIBCXX_PROFILE_MAX_STACK_DEPTH_ENV_VAR
+#define _GLIBCXX_PROFILE_MAX_STACK_DEPTH_ENV_VAR \
+  "_GLIBCXX_PROFILE_MAX_STACK_DEPTH"
+#endif
+#ifndef _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC
+#define _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC (1 << 28)
+#endif
+#ifndef _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC_ENV_VAR
+#define _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC_ENV_VAR \
+  "_GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC"
+#endif
+
+// Instrumentation hook implementations.
+#include "profile/impl/profiler_hash_func.h"
+#include "profile/impl/profiler_hashtable_size.h"
+#include "profile/impl/profiler_map_to_unordered_map.h"
+#include "profile/impl/profiler_vector_size.h"
+#include "profile/impl/profiler_vector_to_list.h"
+#include "profile/impl/profiler_list_to_slist.h"
+#include "profile/impl/profiler_list_to_vector.h"
+
+#endif // _GLIBCXX_PROFILE_PROFILER_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_algos.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_algos.h
new file mode 100644
index 000000000..d4de43e9e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_algos.h
@@ -0,0 +1,118 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_algos.h
+ *  @brief Algorithms used by the profile extension.
+ *
+ *  This file is needed to avoid including <algorithm> or <bits/stl_algo.h>.
+ *  Including those files would result in recursive includes.
+ *  These implementations are oversimplified.  In general, efficiency may be
+ *  sacrificed to minimize maintenance overhead.
+ */
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_ALGOS_H
+#define _GLIBCXX_PROFILE_PROFILER_ALGOS_H 1
+
+namespace __gnu_profile
+{
+  /* Helper for __top_n.  Insert in sorted vector, but not beyond Nth elem.  */
+  template<typename _Container>
+    void
+    __insert_top_n(_Container& __output,
+		   const typename _Container::value_type& __value,
+		   typename _Container::size_type __n)
+    {
+      typename _Container::iterator __it = __output.begin();
+      typename _Container::size_type __count = 0;
+
+      // Skip up to N - 1 elements larger than VALUE.
+      // XXX: Could do binary search for random iterators.
+      while (true)
+	{
+	  if (__count >= __n)
+	    // VALUE is not in top N.
+	    return;
+
+	  if (__it == __output.end())
+	    break;
+
+	  if (*__it < __value)
+	    break;
+
+	  ++__it;
+	  ++__count;
+	}
+
+      __output.insert(__it, __value);
+    }
+
+  /* Copy the top N elements in INPUT, sorted in reverse order, to OUTPUT.  */
+  template<typename _Container>
+    void
+    __top_n(const _Container& __input, _Container& __output,
+	    typename _Container::size_type __n)
+    {
+      __output.clear();
+      typename _Container::const_iterator __it;
+      for (__it = __input.begin(); __it != __input.end(); ++__it)
+	__insert_top_n(__output, *__it, __n);
+    }
+
+  /* Simplified clone of std::for_each.  */
+  template<typename _InputIterator, typename _Function>
+    _Function 
+    __for_each(_InputIterator __first, _InputIterator __last, _Function __f)
+    {
+      for (; __first != __last; ++__first)
+	__f(*__first);
+      return __f;
+    }
+
+  /* Simplified clone of std::remove.  */
+  template<typename _ForwardIterator, typename _Tp>
+    _ForwardIterator
+    __remove(_ForwardIterator __first, _ForwardIterator __last,
+	     const _Tp& __value)
+    {
+      if(__first == __last)
+	return __first;
+      _ForwardIterator __result = __first;
+      ++__first;
+      for(; __first != __last; ++__first)
+	if(!(*__first == __value))
+	  {
+	    *__result = *__first;
+	    ++__result;
+	  }
+      return __result;
+    }
+} // namespace __gnu_profile
+
+#endif /* _GLIBCXX_PROFILE_PROFILER_ALGOS_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_container_size.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_container_size.h
new file mode 100644
index 000000000..12cee5496
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_container_size.h
@@ -0,0 +1,222 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_container_size.h
+ *  @brief Diagnostics for container sizes.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_CONTAINER_SIZE_H
+#define _GLIBCXX_PROFILE_PROFILER_CONTAINER_SIZE_H 1
+
+#include <sstream>
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  /** @brief A container size instrumentation line in the object table.  */
+  class __container_size_info
+  : public __object_info_base 
+  {
+  public:
+    __container_size_info()
+    : _M_init(0), _M_max(0), _M_min(0), _M_total(0), _M_item_min(0),
+      _M_item_max(0), _M_item_total(0), _M_count(0), _M_resize(0), _M_cost(0) 
+    { }
+
+    __container_size_info(const __container_size_info& __o)
+    : __object_info_base(__o), _M_init(__o._M_init), _M_max(__o._M_max),
+      _M_min(__o._M_min), _M_total(__o._M_total),
+      _M_item_min(__o._M_item_min), _M_item_max(__o._M_item_max),
+      _M_item_total(__o._M_item_total), _M_count(__o._M_count),
+      _M_resize(__o._M_resize), _M_cost(__o._M_cost)
+    { }
+
+    __container_size_info(__stack_t __stack, std::size_t __num)
+    : __object_info_base(__stack), _M_init(__num), _M_max(__num),
+      _M_min(0), _M_total(0), _M_item_min(0), _M_item_max(0),
+      _M_item_total(0), _M_count(0), _M_resize(0), _M_cost(0)
+    { }
+
+    virtual ~__container_size_info() { }
+
+    void
+    __write(FILE* __f) const
+    {
+      std::fprintf(__f, "%Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu\n", 
+		   _M_init, _M_count, _M_cost, _M_resize, _M_min, _M_max,
+		   _M_total, _M_item_min, _M_item_max, _M_item_total);
+    }
+
+    float
+    __magnitude() const
+    { return static_cast<float>(_M_cost); }
+
+    std::string
+    __advice() const
+    {
+      std::stringstream __message;
+      if (_M_init < _M_item_max)
+	__message << "change initial container size from " << _M_init
+		  << " to " << _M_item_max;
+      return __message.str();
+    }
+
+    void
+    __merge(const __container_size_info& __o)
+    {
+      _M_init        = std::max(_M_init, __o._M_init);
+      _M_max         = std::max(_M_max, __o._M_max);
+      _M_item_max    = std::max(_M_item_max, __o._M_item_max);
+      _M_min         = std::min(_M_min, __o._M_min);
+      _M_item_min    = std::min(_M_item_min, __o._M_item_min);
+      _M_total      += __o._M_total;
+      _M_item_total += __o._M_item_total;
+      _M_count      += __o._M_count;
+      _M_cost       += __o._M_cost;
+      _M_resize     += __o._M_resize;
+    }
+
+    // Call if a container is destructed or cleaned.
+    void
+    __destruct(std::size_t __num, std::size_t __inum)
+    {
+      _M_max = std::max(_M_max, __num);
+      _M_item_max = std::max(_M_item_max, __inum);
+      if (_M_min == 0)
+	{
+	  _M_min = __num; 
+	  _M_item_min = __inum;
+	}
+      else
+	{
+	  _M_min = std::min(_M_min, __num);
+	  _M_item_min = std::min(_M_item_min, __inum);
+	}
+      _M_total += __num;
+      _M_item_total += __inum;
+      _M_count += 1;
+    }
+
+    // Estimate the cost of resize/rehash. 
+    float
+    __resize_cost(std::size_t __from, std::size_t)
+    { return __from; }
+
+    // Call if container is resized.
+    void
+    __resize(std::size_t __from, std::size_t __to)
+    {
+      _M_cost += this->__resize_cost(__from, __to);
+      _M_resize += 1;
+      _M_max = std::max(_M_max, __to);
+    }
+
+  private:
+    std::size_t _M_init;
+    std::size_t _M_max;  // range of # buckets
+    std::size_t _M_min;
+    std::size_t _M_total;
+    std::size_t _M_item_min;  // range of # items
+    std::size_t _M_item_max;
+    std::size_t _M_item_total;
+    std::size_t _M_count;
+    std::size_t _M_resize;
+    std::size_t _M_cost;
+  };
+
+
+  /** @brief A container size instrumentation line in the stack table.  */
+  class __container_size_stack_info
+  : public __container_size_info
+  {
+  public:
+    __container_size_stack_info(const __container_size_info& __o)
+    : __container_size_info(__o) { }
+  };
+
+  
+  /** @brief Container size instrumentation trace producer.  */
+  class __trace_container_size
+  : public __trace_base<__container_size_info, __container_size_stack_info> 
+  {
+  public:
+    ~__trace_container_size() { }
+
+    __trace_container_size()
+    : __trace_base<__container_size_info, __container_size_stack_info>() { };
+
+    // Insert a new node at construct with object, callstack and initial size. 
+    void
+    __insert(const __object_t __obj, __stack_t __stack, std::size_t __num)
+    { __add_object(__obj, __container_size_info(__stack, __num)); }
+
+    // XXX Undefined?
+    void
+    __construct(const void* __obj, std::size_t __inum);
+  
+    // Call at destruction/clean to set container final size.
+    void
+    __destruct(const void* __obj, std::size_t __num, std::size_t __inum)
+    {
+      if (!__is_on())
+	return;
+
+      __object_t __obj_handle = static_cast<__object_t>(__obj);
+
+      __container_size_info* __object_info = __get_object_info(__obj_handle);
+      if (!__object_info)
+	return;
+
+      __object_info->__destruct(__num, __inum);
+      __retire_object(__obj_handle);
+    }
+
+    // Call at resize to set resize/cost information.
+    void
+    __resize(const void* __obj, int __from, int __to)
+    {
+      if (!__is_on())
+	return;
+
+      __container_size_info* __object_info = __get_object_info(__obj);
+      if (!__object_info)
+	return;
+
+      __object_info->__resize(__from, __to);
+    }
+  };
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_CONTAINER_SIZE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hash_func.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hash_func.h
new file mode 100644
index 000000000..9f6c64169
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hash_func.h
@@ -0,0 +1,181 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_hash_func.h
+ *  @brief Data structures to represent profiling traces.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_HASH_FUNC_H
+#define _GLIBCXX_PROFILE_PROFILER_HASH_FUNC_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  /** @brief A hash performance instrumentation line in the object table.  */
+  class __hashfunc_info
+  : public __object_info_base
+  {
+  public:
+    __hashfunc_info()
+    : _M_longest_chain(0), _M_accesses(0), _M_hops(0) { }
+
+    __hashfunc_info(const __hashfunc_info& __o)
+    : __object_info_base(__o), _M_longest_chain(__o._M_longest_chain),
+      _M_accesses(__o._M_accesses), _M_hops(__o._M_hops) { }
+
+    __hashfunc_info(__stack_t __stack)
+    : __object_info_base(__stack), _M_longest_chain(0),
+      _M_accesses(0), _M_hops(0) { }
+
+    virtual ~__hashfunc_info() { }
+
+    void
+    __merge(const __hashfunc_info& __o)
+    {
+      _M_longest_chain  = std::max(_M_longest_chain, __o._M_longest_chain);
+      _M_accesses      += __o._M_accesses;
+      _M_hops          += __o._M_hops;
+    }
+
+    void
+    __destruct(std::size_t __chain, std::size_t __accesses,
+	       std::size_t __hops)
+    { 
+      _M_longest_chain  = std::max(_M_longest_chain, __chain);
+      _M_accesses      += __accesses;
+      _M_hops          += __hops;
+    }
+
+    void
+    __write(FILE* __f) const
+    { std::fprintf(__f, "%Zu %Zu %Zu\n", _M_hops,
+		   _M_accesses, _M_longest_chain); }
+
+    float
+    __magnitude() const
+    { return static_cast<float>(_M_hops); }
+
+    std::string
+    __advice() const
+    { return "change hash function"; }
+
+  private:
+    std::size_t _M_longest_chain;
+    std::size_t _M_accesses;
+    std::size_t _M_hops;
+  };
+
+
+  /** @brief A hash performance instrumentation line in the stack table.  */
+  class __hashfunc_stack_info 
+  : public __hashfunc_info
+  {
+  public:
+    __hashfunc_stack_info(const __hashfunc_info& __o)
+    : __hashfunc_info(__o) { }
+  };
+
+
+  /** @brief Hash performance instrumentation producer.  */
+  class __trace_hash_func
+  : public __trace_base<__hashfunc_info, __hashfunc_stack_info> 
+  {
+  public:
+    __trace_hash_func()
+    : __trace_base<__hashfunc_info, __hashfunc_stack_info>()
+    { __id = "hash-distr"; }
+
+    ~__trace_hash_func() {}
+    
+    // Insert a new node at construct with object, callstack and initial size.
+    void
+    __insert(__object_t __obj, __stack_t __stack)
+    { __add_object(__obj, __hashfunc_info(__stack)); }
+
+    // Call at destruction/clean to set container final size.
+    void
+    __destruct(const void* __obj, std::size_t __chain,
+	       std::size_t __accesses, std::size_t __hops)
+    {
+      if (!__is_on())
+	return;
+
+      // First find the item from the live objects and update the informations.
+      __hashfunc_info* __objs = __get_object_info(__obj);
+      if (!__objs)
+	return;
+
+      __objs->__destruct(__chain, __accesses, __hops);
+      __retire_object(__obj);
+    }
+  };
+
+
+  inline void
+  __trace_hash_func_init()
+  { _GLIBCXX_PROFILE_DATA(_S_hash_func) = new __trace_hash_func(); }
+
+  inline void
+  __trace_hash_func_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_hash_func))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_hash_func)->__collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_hash_func)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_hash_func_construct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_hash_func)->__insert(__obj, __get_stack());
+  }
+
+  inline void
+  __trace_hash_func_destruct(const void* __obj, std::size_t __chain,
+			     std::size_t __accesses, std::size_t __hops)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_hash_func)->__destruct(__obj, __chain,
+						    __accesses, __hops);
+  }
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_HASH_FUNC_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hashtable_size.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hashtable_size.h
new file mode 100644
index 000000000..9d5cbc793
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_hashtable_size.h
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_hashtable_size.h
+ *  @brief Collection of hashtable size traces.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_HASHTABLE_SIZE_H
+#define _GLIBCXX_PROFILE_PROFILER_HASHTABLE_SIZE_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+#include "profile/impl/profiler_state.h"
+#include "profile/impl/profiler_container_size.h"
+
+namespace __gnu_profile
+{
+  /** @brief Hashtable size instrumentation trace producer.  */
+  class __trace_hashtable_size
+  : public __trace_container_size
+  {
+  public:
+    __trace_hashtable_size()
+    : __trace_container_size()
+    { __id = "hashtable-size"; }
+  };
+
+  inline void
+  __trace_hashtable_size_init()
+  { _GLIBCXX_PROFILE_DATA(_S_hashtable_size) = new __trace_hashtable_size(); }
+
+  inline void
+  __trace_hashtable_size_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_hashtable_size))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_hashtable_size)->
+	  __collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_hashtable_size)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_hashtable_size_construct(const void* __obj, std::size_t __num)
+  {
+    if (!__profcxx_init())
+      return;
+  
+    _GLIBCXX_PROFILE_DATA(_S_hashtable_size)->__insert(__obj, __get_stack(),
+						       __num);
+  }
+
+  inline void
+  __trace_hashtable_size_destruct(const void* __obj, std::size_t __num, 
+				  std::size_t __inum)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_hashtable_size)->__destruct(__obj, __num, __inum);
+  }
+
+  inline void
+  __trace_hashtable_size_resize(const void* __obj, std::size_t __from, 
+				std::size_t __to)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_hashtable_size)->__resize(__obj, __from, __to);
+  }
+
+} // namespace __gnu_profile
+
+#endif /* _GLIBCXX_PROFILE_PROFILER_HASHTABLE_SIZE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_slist.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_slist.h
new file mode 100644
index 000000000..299a17d5a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_slist.h
@@ -0,0 +1,215 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_list_to_slist.h
+ *  @brief Diagnostics for list to slist.
+ */
+
+// Written by Changhee Jung.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_LIST_TO_SLIST_H
+#define _GLIBCXX_PROFILE_PROFILER_LIST_TO_SLIST_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  class __list2slist_info
+  : public __object_info_base
+  {
+  public:
+    __list2slist_info()
+    : _M_rewind(false), _M_operations(0) { }
+  
+    __list2slist_info(__stack_t __stack)
+    : __object_info_base(__stack), _M_rewind(false), _M_operations(0) { }
+
+    virtual ~__list2slist_info() { }
+
+    __list2slist_info(const __list2slist_info& __o)
+    : __object_info_base(__o), _M_rewind(__o._M_rewind),
+      _M_operations(__o._M_operations) { }
+  
+    // XXX: the magnitude should be multiplied with a constant factor F,
+    // where F is 1 when the malloc size class of list nodes is different
+    // from the malloc size class of slist nodes.  When they fall into the same
+    // class, the only slist benefit is from having to set fewer links, so
+    // the factor F should be much smaller, closer to 0 than to 1.
+    // This could be implemented by passing the size classes in the config 
+    // file.  For now, we always assume F to be 1.
+
+    float
+    __magnitude() const
+    {
+      if (!_M_rewind)
+	return _M_operations;
+      else
+	return 0;
+    }
+    
+    void
+    __merge(const __list2slist_info&) { }
+
+    void
+    __write(FILE* __f) const
+    { std::fprintf(__f, "%s\n", _M_rewind ? "invalid" : "valid"); }
+
+    std::string
+    __advice() const
+    { return "change std::list to std::forward_list"; }
+
+    void
+    __opr_rewind()
+    {
+      _M_rewind = true;
+      _M_valid = false;
+    }
+
+    void
+    __record_operation()
+    { ++_M_operations; }
+
+    bool
+    __has_rewind()
+    { return _M_rewind; }
+
+  private:
+    bool _M_rewind;
+    std::size_t _M_operations;
+  };
+
+  class __list2slist_stack_info
+  : public __list2slist_info
+  {
+  public:
+    __list2slist_stack_info(const __list2slist_info& __o) 
+    : __list2slist_info(__o) { }
+  };
+
+  class __trace_list_to_slist
+  : public __trace_base<__list2slist_info, __list2slist_stack_info> 
+  {
+  public:
+    ~__trace_list_to_slist() { }
+
+    __trace_list_to_slist()
+    : __trace_base<__list2slist_info, __list2slist_stack_info>()
+    { __id = "list-to-slist"; }
+
+    void
+    __opr_rewind(const void* __obj)
+    {
+      __list2slist_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_rewind();
+    }
+
+    void
+    __record_operation(const void* __obj)
+    {
+      __list2slist_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__record_operation();
+    }
+
+    void
+    __insert(const __object_t __obj, __stack_t __stack)
+    { __add_object(__obj, __list2slist_info(__stack)); }
+  
+    void
+    __destruct(const void* __obj)
+    {
+      if (!__is_on())
+	return;
+
+      __list2slist_info* __res = __get_object_info(__obj);
+      if (!__res)
+	return;
+
+      __retire_object(__obj);
+    }
+  };
+
+
+  inline void
+  __trace_list_to_slist_init()
+  { _GLIBCXX_PROFILE_DATA(_S_list_to_slist) = new __trace_list_to_slist(); }
+
+  inline void
+  __trace_list_to_slist_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_list_to_slist))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_list_to_slist)->
+	  __collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_list_to_slist)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_list_to_slist_rewind(const void* __obj) 
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_slist)->__opr_rewind(__obj);
+  }
+
+  inline void
+  __trace_list_to_slist_operation(const void* __obj) 
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_slist)->__record_operation(__obj);
+  }
+
+  inline void
+  __trace_list_to_slist_construct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_slist)->__insert(__obj, __get_stack());
+  }
+
+  inline void
+  __trace_list_to_slist_destruct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_slist)->__destruct(__obj);
+  }
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_LIST_TO_SLIST_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_vector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_vector.h
new file mode 100644
index 000000000..df03267bd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_list_to_vector.h
@@ -0,0 +1,331 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_list_to_vector.h
+ *  @brief diagnostics for list to vector.
+ */
+
+// Written by Changhee Jung.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_LIST_TO_VECTOR_H
+#define _GLIBCXX_PROFILE_PROFILER_LIST_TO_VECTOR_H 1
+
+#include <sstream>
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  /** @brief A list-to-vector instrumentation line in the object table.  */
+  class __list2vector_info
+  : public __object_info_base
+  {
+  public:
+    __list2vector_info()
+    : _M_shift_count(0), _M_iterate(0), _M_resize(0), _M_list_cost(0),
+      _M_vector_cost(0), _M_valid(true), _M_max_size(0) { }
+
+    __list2vector_info(__stack_t __stack)
+    : __object_info_base(__stack), _M_shift_count(0), _M_iterate(0),
+      _M_resize(0), _M_list_cost(0), _M_vector_cost(0), _M_valid(true),
+      _M_max_size(0) { }
+
+    virtual ~__list2vector_info() { }
+
+    __list2vector_info(const __list2vector_info& __o)
+    : __object_info_base(__o), _M_shift_count(__o._M_shift_count),
+      _M_iterate(__o._M_iterate), _M_resize(__o._M_resize),
+      _M_list_cost(__o._M_list_cost), _M_vector_cost(__o._M_vector_cost),
+      _M_valid(__o._M_valid), _M_max_size(__o._M_max_size) { }
+
+    void
+    __merge(const __list2vector_info& __o)
+    {
+      _M_shift_count  += __o._M_shift_count;
+      _M_iterate      += __o._M_iterate;
+      _M_vector_cost  += __o._M_vector_cost;
+      _M_list_cost    += __o._M_list_cost;
+      _M_valid        &= __o._M_valid;
+      _M_resize       += __o._M_resize;
+      _M_max_size     = std::max( _M_max_size, __o._M_max_size);
+    }
+
+    void
+    __write(FILE* __f) const
+    {
+      std::fprintf(__f, "%Zu %Zu %Zu %.0f %.0f\n", _M_shift_count,
+		   _M_resize, _M_iterate, _M_vector_cost, _M_list_cost);
+    }
+
+    float
+    __magnitude() const
+    { return _M_list_cost - _M_vector_cost; }
+  
+    std::string
+    __advice() const
+    {
+      std::stringstream __sstream;
+      __sstream 
+	<< "change std::list to std::vector and its initial size from 0 to "
+	<< _M_max_size;
+      return __sstream.str();
+    }
+
+    std::size_t
+    __shift_count()
+    { return _M_shift_count; }
+  
+    std::size_t
+    __iterate()
+    { return _M_iterate; }
+  
+    float
+    __list_cost()
+    { return _M_list_cost; }
+  
+    std::size_t
+    __resize()
+    { return _M_resize; }
+  
+    void
+    __set_list_cost(float __lc)
+    { _M_list_cost = __lc; }
+    
+    void
+    __set_vector_cost(float __vc)
+    { _M_vector_cost = __vc; }
+    
+    bool
+    __is_valid()
+    { return _M_valid; }
+    
+    void
+    __set_invalid()
+    { _M_valid = false; }
+
+    void
+    __opr_insert(std::size_t __shift, std::size_t __size)
+    {
+      _M_shift_count += __shift;
+      _M_max_size = std::max(_M_max_size, __size);
+    }
+
+    void
+    __opr_iterate(std::size_t __num)
+    { _M_iterate += __num;}
+
+    void
+    __resize(std::size_t __from, std::size_t)
+    { _M_resize += __from; }
+
+  private:
+    std::size_t _M_shift_count;
+    std::size_t _M_iterate;
+    std::size_t _M_resize;
+    float _M_list_cost;
+    float _M_vector_cost;
+    bool  _M_valid;
+    std::size_t _M_max_size;
+  };
+
+  class __list2vector_stack_info 
+  : public __list2vector_info
+  {
+  public:
+    __list2vector_stack_info(const __list2vector_info& __o) 
+    : __list2vector_info(__o) {}
+  };
+
+  class __trace_list_to_vector
+  : public __trace_base<__list2vector_info, __list2vector_stack_info> 
+  {
+  public:
+    __trace_list_to_vector()
+    : __trace_base<__list2vector_info, __list2vector_stack_info>()
+    { __id = "list-to-vector"; }
+
+    ~__trace_list_to_vector() { }
+
+    // Insert a new node at construct with object, callstack and initial size.
+    void
+    __insert(__object_t __obj, __stack_t __stack)
+    { __add_object(__obj, __list2vector_info(__stack)); }
+
+    // Call at destruction/clean to set container final size.
+    void
+    __destruct(const void* __obj)
+    {
+      if (!__is_on())
+	return;
+
+      __list2vector_info* __res = __get_object_info(__obj);
+      if (!__res)
+	return;
+
+      float __vc = __vector_cost(__res->__shift_count(), __res->__iterate());
+      float __lc = __list_cost(__res->__shift_count(), __res->__iterate());
+      __res->__set_vector_cost(__vc);
+      __res->__set_list_cost(__lc);
+      __retire_object(__obj);
+    }
+
+    // Find the node in the live map.
+    __list2vector_info* __find(const void* __obj);
+
+    // Collect cost of operations.
+    void
+    __opr_insert(const void* __obj, std::size_t __shift, std::size_t __size)
+    {
+      __list2vector_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_insert(__shift, __size);
+    }
+
+    void
+    __opr_iterate(const void* __obj, std::size_t __num)
+    {
+      __list2vector_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_iterate(__num);
+    }
+
+    void
+    __invalid_operator(const void* __obj)
+    {
+      __list2vector_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__set_invalid();
+    }
+
+    void
+    __resize(const void* __obj, std::size_t __from, std::size_t __to)
+    {
+      __list2vector_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__resize(__from, __to);
+    }
+
+    float
+    __vector_cost(std::size_t __shift, std::size_t __iterate)
+    {
+      // The resulting vector will use a 'reserve' method.
+      return (__shift
+	      * _GLIBCXX_PROFILE_DATA(__vector_shift_cost_factor).__value
+	      + __iterate
+	      * _GLIBCXX_PROFILE_DATA(__vector_iterate_cost_factor).__value); 
+    }
+
+    float
+    __list_cost(std::size_t __shift, std::size_t __iterate)
+    {
+      return (__shift
+	      * _GLIBCXX_PROFILE_DATA(__list_shift_cost_factor).__value
+	      + __iterate
+	      * _GLIBCXX_PROFILE_DATA(__list_iterate_cost_factor).__value); 
+    }
+  };
+
+
+  inline void
+  __trace_list_to_vector_init()
+  { _GLIBCXX_PROFILE_DATA(_S_list_to_vector) = new __trace_list_to_vector(); }
+
+  inline void
+  __trace_list_to_vector_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_list_to_vector))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_list_to_vector)->
+	  __collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_list_to_vector_construct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__insert(__obj, __get_stack());
+  }
+
+  inline void
+  __trace_list_to_vector_destruct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__destruct(__obj);
+  }
+
+  inline void
+  __trace_list_to_vector_insert(const void* __obj, 
+				std::size_t __shift, std::size_t __size)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__opr_insert(__obj, __shift, 
+							   __size);
+  }
+
+  inline void
+  __trace_list_to_vector_iterate(const void* __obj, std::size_t __num = 1)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__opr_iterate(__obj, __num);
+  }
+
+  inline void
+  __trace_list_to_vector_invalid_operator(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__invalid_operator(__obj);
+  }
+
+  inline void
+  __trace_list_to_vector_resize(const void* __obj, 
+				std::size_t __from, std::size_t __to)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_list_to_vector)->__resize(__obj, __from, __to);
+  }
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_LIST_TO_VECTOR_H__ */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_map_to_unordered_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_map_to_unordered_map.h
new file mode 100644
index 000000000..cc7c849a4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_map_to_unordered_map.h
@@ -0,0 +1,297 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_map_to_unordered_map.h
+ *  @brief Diagnostics for map to unordered_map.
+ */
+
+// Written by Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_MAP_TO_UNORDERED_MAP_H
+#define _GLIBCXX_PROFILE_PROFILER_MAP_TO_UNORDERED_MAP_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  inline int
+  __log2(std::size_t __size)
+  {
+    for (int __bit_count = sizeof(std::size_t) - 1; __bit_count >= 0;
+	 -- __bit_count) 
+      if ((2 << __bit_count) & __size)
+	return __bit_count;
+    return 0;
+  }
+
+  inline float
+  __map_insert_cost(std::size_t __size)
+  { return (_GLIBCXX_PROFILE_DATA(__map_insert_cost_factor).__value 
+	    * static_cast<float>(__log2(__size))); }
+
+  inline float
+  __map_erase_cost(std::size_t __size)
+  { return (_GLIBCXX_PROFILE_DATA(__map_erase_cost_factor).__value
+	    * static_cast<float>(__log2(__size))); }
+
+  inline float
+  __map_find_cost(std::size_t __size)
+  { return (_GLIBCXX_PROFILE_DATA(__map_find_cost_factor).__value
+	    * static_cast<float>(__log2(__size))); }
+
+  /** @brief A map-to-unordered_map instrumentation line in the 
+      object table.  */
+  class __map2umap_info
+  : public __object_info_base
+  {
+  public:
+    __map2umap_info()
+    : _M_insert(0), _M_erase(0), _M_find(0), _M_iterate(0),
+      _M_umap_cost(0.0), _M_map_cost(0.0), _M_valid(true) { }
+    
+    __map2umap_info(__stack_t __stack)
+    : __object_info_base(__stack), _M_insert(0), _M_erase(0), _M_find(0), 
+      _M_iterate(0), _M_umap_cost(0.0), _M_map_cost(0.0), _M_valid(true) { }
+
+    virtual ~__map2umap_info() { }
+
+    __map2umap_info(const __map2umap_info& __o)
+    : __object_info_base(__o), _M_insert(__o._M_insert),
+      _M_erase(__o._M_erase), _M_find(__o._M_find),
+      _M_iterate(__o._M_iterate), _M_umap_cost(__o._M_umap_cost),
+      _M_map_cost(__o._M_map_cost), _M_valid(__o._M_valid) { }
+
+    void
+    __merge(const __map2umap_info& __o)
+    {
+      _M_insert    += __o._M_insert;
+      _M_erase     += __o._M_erase;
+      _M_find      += __o._M_find;
+      _M_umap_cost += __o._M_umap_cost;
+      _M_map_cost  += __o._M_map_cost;
+      _M_valid     &= __o._M_valid;
+    }
+
+    void
+    __write(FILE* __f) const
+    {
+      std::fprintf(__f, "%Zu %Zu %Zu %Zu %.0f %.0f %s\n",
+		   _M_insert, _M_erase, _M_find, _M_iterate, _M_map_cost,
+		   _M_umap_cost, _M_valid ? "valid" : "invalid");
+    }
+
+    float
+    __magnitude() const
+    { return _M_map_cost - _M_umap_cost; }
+
+    std::string
+    __advice() const
+    { return "change std::map to std::unordered_map"; }
+
+    void
+    __record_insert(std::size_t __size, std::size_t __count)
+    {
+      _M_insert += __count;
+      _M_map_cost += __count * __map_insert_cost(__size);
+      _M_umap_cost
+	+= (__count
+	    * _GLIBCXX_PROFILE_DATA(__umap_insert_cost_factor).__value);
+    }
+
+    void
+    __record_erase(std::size_t __size, std::size_t __count)
+    {
+      _M_erase += __count;
+      _M_map_cost += __count * __map_erase_cost(__size);
+      _M_umap_cost
+	+= (__count
+	    * _GLIBCXX_PROFILE_DATA(__umap_erase_cost_factor).__value);
+    }
+
+    void
+    __record_find(std::size_t __size)
+    {
+      _M_find += 1;
+      _M_map_cost += __map_find_cost(__size);
+      _M_umap_cost += _GLIBCXX_PROFILE_DATA(__umap_find_cost_factor).__value;
+    }
+
+    void
+    __record_iterate(std::size_t __count)
+    {
+      _M_iterate += __count;
+      _M_map_cost
+	+= (__count
+	    * _GLIBCXX_PROFILE_DATA(__map_iterate_cost_factor).__value);
+      _M_umap_cost
+	+= (__count
+	    * _GLIBCXX_PROFILE_DATA(__umap_iterate_cost_factor).__value);
+    }
+
+    void
+    __record_invalidate()
+    { _M_valid = false; }
+
+  private:
+    std::size_t _M_insert;
+    std::size_t _M_erase;
+    std::size_t _M_find;
+    std::size_t _M_iterate;
+    float _M_umap_cost;
+    float _M_map_cost;
+    bool  _M_valid;
+  };
+
+
+  /** @brief A map-to-unordered_map instrumentation line in the 
+      stack table.  */
+  class __map2umap_stack_info 
+  : public __map2umap_info
+  {
+  public:
+    __map2umap_stack_info(const __map2umap_info& __o)
+    : __map2umap_info(__o) { }
+  };
+
+  /** @brief Map-to-unordered_map instrumentation producer.  */
+  class __trace_map2umap
+  : public __trace_base<__map2umap_info, __map2umap_stack_info> 
+  {
+  public:
+    __trace_map2umap()
+    : __trace_base<__map2umap_info, __map2umap_stack_info>()
+    { __id = "map-to-unordered-map"; }
+  };
+
+  inline void
+  __trace_map_to_unordered_map_init()
+  { _GLIBCXX_PROFILE_DATA(_S_map2umap) = new __trace_map2umap(); }
+
+  inline void
+  __trace_map_to_unordered_map_report(FILE* __f,
+				      __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_map2umap)) 
+      {
+	_GLIBCXX_PROFILE_DATA(_S_map2umap)->__collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_map2umap)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_map_to_unordered_map_construct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_map2umap)->
+      __add_object(__obj, __map2umap_info(__get_stack()));
+  }
+
+  inline void
+  __trace_map_to_unordered_map_destruct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_map2umap)->__retire_object(__obj);
+  }
+
+  inline void
+  __trace_map_to_unordered_map_insert(const void* __obj, 
+				      std::size_t __size, std::size_t __count)
+  {
+    if (!__profcxx_init())
+      return;
+
+    __map2umap_info* __info
+      = _GLIBCXX_PROFILE_DATA(_S_map2umap)->__get_object_info(__obj);
+
+    if (__info)
+      __info->__record_insert(__size, __count);
+  }
+
+  inline void
+  __trace_map_to_unordered_map_erase(const void* __obj, 
+				     std::size_t __size, std::size_t __count)
+  {
+    if (!__profcxx_init()) 
+      return;
+
+    __map2umap_info* __info 
+      = _GLIBCXX_PROFILE_DATA(_S_map2umap)->__get_object_info(__obj);
+
+    if (__info)
+      __info->__record_erase(__size, __count);
+  }
+
+  inline void
+  __trace_map_to_unordered_map_find(const void* __obj, std::size_t __size)
+  {
+    if (!__profcxx_init())
+      return;
+
+    __map2umap_info* __info
+      = _GLIBCXX_PROFILE_DATA(_S_map2umap)->__get_object_info(__obj);
+
+    if (__info)
+      __info->__record_find(__size);
+  }
+
+  inline void
+  __trace_map_to_unordered_map_iterate(const void* __obj, std::size_t __count)
+  {
+    if (!__profcxx_init())
+      return;
+
+    __map2umap_info* __info
+      = _GLIBCXX_PROFILE_DATA(_S_map2umap)->__get_object_info(__obj);
+    
+    if (__info)
+      __info->__record_iterate(__count);
+  }
+
+  inline void
+  __trace_map_to_unordered_map_invalidate(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    __map2umap_info* __info
+      = _GLIBCXX_PROFILE_DATA(_S_map2umap)->__get_object_info(__obj);
+
+    if (__info)
+      __info->__record_invalidate();
+  }
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_MAP_TO_UNORDERED_MAP_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_node.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_node.h
new file mode 100644
index 000000000..c32b94e23
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_node.h
@@ -0,0 +1,173 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_node.h
+ *  @brief Data structures to represent a single profiling event.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_NODE_H
+#define _GLIBCXX_PROFILE_PROFILER_NODE_H 1
+
+#include <cstdio> // FILE, fprintf
+
+#include <vector>
+#if defined _GLIBCXX_HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+
+namespace __gnu_profile
+{
+  typedef const void* __object_t;
+  typedef void* __instruction_address_t;
+  typedef std::_GLIBCXX_STD_C::vector<__instruction_address_t> __stack_npt;
+  typedef __stack_npt* __stack_t;
+
+  std::size_t __stack_max_depth();
+
+  inline __stack_t
+  __get_stack()
+  {
+#if defined _GLIBCXX_HAVE_EXECINFO_H
+    std::size_t __max_depth = __stack_max_depth();
+    if (__max_depth == 0)
+      return 0;
+    __stack_npt __buffer(__max_depth);
+    int __depth = backtrace(&__buffer[0], __max_depth);
+    __stack_t __stack = new __stack_npt(__depth);
+    __builtin_memcpy(&(*__stack)[0], &__buffer[0],
+		     __depth * sizeof(__object_t));
+    return __stack;
+#else
+    return 0;
+#endif
+  }
+
+  inline std::size_t
+  __size(__stack_t __stack)
+  {
+    if (!__stack)
+      return 0;
+    else
+      return __stack->size();
+  }
+
+  // XXX
+  inline void
+  __write(FILE* __f, __stack_t __stack)
+  {
+    if (!__stack)
+      return;
+  
+    __stack_npt::const_iterator __it;
+    for (__it = __stack->begin(); __it != __stack->end(); ++__it)
+      std::fprintf(__f, "%p ", *__it);
+  }
+
+  /** @brief Hash function for summary trace using call stack as index.  */
+  class __stack_hash 
+  {
+  public:
+    std::size_t
+    operator()(__stack_t __s) const
+    {
+      if (!__s) 
+	return 0;
+
+      __UINTPTR_TYPE__ __index = 0;
+      __stack_npt::const_iterator __it;
+      for (__it = __s->begin(); __it != __s->end(); ++__it)
+	__index += reinterpret_cast<__UINTPTR_TYPE__>(*__it);
+      return __index;
+    }
+
+    bool operator() (__stack_t __stack1, __stack_t __stack2) const
+    {
+      if (!__stack1 && !__stack2)
+	return true;
+      if (!__stack1 || !__stack2)
+	return false;
+      if (__stack1->size() != __stack2->size())
+	return false;
+
+      std::size_t __byte_size
+	= __stack1->size() * sizeof(__stack_npt::value_type);
+      return __builtin_memcmp(&(*__stack1)[0], &(*__stack2)[0],
+			      __byte_size) == 0;
+    }
+  };
+
+
+  /** @brief Base class for a line in the object table.  */
+  class __object_info_base
+  {
+  public:
+    __object_info_base() { }
+
+    __object_info_base(__stack_t __stack)
+    : _M_stack(__stack), _M_valid(true) { }
+
+    __object_info_base(const __object_info_base& __o)
+    : _M_stack(__o._M_stack), _M_valid(__o._M_valid) { }
+
+    virtual ~__object_info_base() { }
+
+    bool
+    __is_valid() const 
+    { return _M_valid; }
+    
+    __stack_t
+    __stack() const
+    { return _M_stack; }
+    
+    virtual void __write(FILE* __f) const = 0;
+
+  protected:
+    __stack_t _M_stack;
+    bool _M_valid;
+  };
+
+
+  /** @brief Base class for a line in the stack table.  */
+  template<typename __object_info>
+    class __stack_info_base
+    {
+    public:
+      __stack_info_base() { }
+      __stack_info_base(const __object_info& __info) = 0;
+      virtual ~__stack_info_base() {}
+      void __merge(const __object_info& __info) = 0;
+      virtual float __magnitude() const = 0;
+      virtual const char* __get_id() const = 0;
+    };
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_NODE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_state.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_state.h
new file mode 100644
index 000000000..111b97e0e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_state.h
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_state.h
+ *  @brief Global profiler state.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_STATE_H
+#define _GLIBCXX_PROFILE_PROFILER_STATE_H 1
+
+namespace __gnu_profile
+{
+  enum __state_type { __ON, __OFF, __INVALID };
+
+  _GLIBCXX_PROFILE_DEFINE_DATA(__state_type, __state, __INVALID);
+
+  inline bool
+  __turn(__state_type __s)
+  { return (_GLIBCXX_PROFILE_DATA(__state)
+	    == __sync_val_compare_and_swap(&_GLIBCXX_PROFILE_DATA(__state),
+					   __INVALID, __s)); }
+
+  inline bool
+  __turn_on()
+  { return __turn(__ON); }
+
+  inline bool
+  __turn_off()
+  { return __turn(__OFF); }
+
+  inline bool
+  __is_on()
+  { return _GLIBCXX_PROFILE_DATA(__state) == __ON; }
+
+  inline bool
+  __is_off()
+  { return _GLIBCXX_PROFILE_DATA(__state) == __OFF; }
+
+  inline bool
+  __is_invalid()
+  { return _GLIBCXX_PROFILE_DATA(__state) == __INVALID; }
+
+} // end namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_STATE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_trace.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_trace.h
new file mode 100644
index 000000000..1e0054208
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_trace.h
@@ -0,0 +1,666 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_trace.h
+ *  @brief Data structures to represent profiling traces.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_TRACE_H
+#define _GLIBCXX_PROFILE_PROFILER_TRACE_H 1
+
+#include <cstdio>  // fopen, fclose, fprintf, FILE
+#include <cerrno>
+#include <cstdlib> // atof, atoi, strtol, getenv, atexit, abort
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#define _GLIBCXX_IMPL_UNORDERED_MAP std::_GLIBCXX_STD_C::unordered_map
+#include <unordered_map>
+#else
+#include <tr1/unordered_map>
+#define _GLIBCXX_IMPL_UNORDERED_MAP std::tr1::unordered_map
+#endif
+
+#include <ext/concurrence.h>
+#include <fstream>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "profile/impl/profiler_algos.h"
+#include "profile/impl/profiler_state.h"
+#include "profile/impl/profiler_node.h"
+
+namespace __gnu_profile
+{
+  /** @brief Internal environment.  Values can be set one of two ways:
+      1. In config file "var = value".  The default config file path is 
+         libstdcxx-profile.conf.
+      2. By setting process environment variables.  For instance, in a Bash
+         shell you can set the unit cost of iterating through a map like this:
+         export __map_iterate_cost_factor=5.0.
+	 If a value is set both in the input file and through an environment
+	 variable, the environment value takes precedence.  */
+  typedef _GLIBCXX_IMPL_UNORDERED_MAP<std::string, std::string> __env_t;
+
+  _GLIBCXX_PROFILE_DEFINE_UNINIT_DATA(__env_t, __env);
+
+  /** @brief Master lock.  */
+  _GLIBCXX_PROFILE_DEFINE_UNINIT_DATA(__gnu_cxx::__mutex, __global_lock);
+
+  /** @brief Representation of a warning.  */
+  struct __warning_data
+  {
+    float __magnitude;
+    __stack_t __context;
+    const char* __warning_id;
+    std::string __warning_message;
+
+    __warning_data()
+    : __magnitude(0.0), __context(0), __warning_id(0) { }
+
+    __warning_data(float __m, __stack_t __c, const char* __id, 
+		   const std::string& __msg)
+    : __magnitude(__m), __context(__c), __warning_id(__id), 
+      __warning_message(__msg) { }
+
+    bool
+    operator<(const __warning_data& __other) const
+    { return __magnitude < __other.__magnitude; }
+  };
+
+  typedef std::_GLIBCXX_STD_C::vector<__warning_data> __warning_vector_t;
+
+  // Defined in profiler_<diagnostic name>.h.
+  class __trace_hash_func;
+  class __trace_hashtable_size;
+  class __trace_map2umap;
+  class __trace_vector_size;
+  class __trace_vector_to_list;
+  class __trace_list_to_slist; 
+  class __trace_list_to_vector; 
+  void __trace_vector_size_init();
+  void __trace_hashtable_size_init();
+  void __trace_hash_func_init();
+  void __trace_vector_to_list_init();
+  void __trace_list_to_slist_init();  
+  void __trace_list_to_vector_init();  
+  void __trace_map_to_unordered_map_init();
+  void __trace_vector_size_report(FILE*, __warning_vector_t&);
+  void __trace_hashtable_size_report(FILE*, __warning_vector_t&);
+  void __trace_hash_func_report(FILE*, __warning_vector_t&);
+  void __trace_vector_to_list_report(FILE*, __warning_vector_t&);
+  void __trace_list_to_slist_report(FILE*, __warning_vector_t&); 
+  void __trace_list_to_vector_report(FILE*, __warning_vector_t&);
+  void __trace_map_to_unordered_map_report(FILE*, __warning_vector_t&);
+
+  struct __cost_factor
+  {
+    const char* __env_var;
+    float __value;
+  };
+
+  typedef std::_GLIBCXX_STD_C::vector<__cost_factor*> __cost_factor_vector;
+
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_hash_func*, _S_hash_func, 0);
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_hashtable_size*, _S_hashtable_size, 0);
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_map2umap*, _S_map2umap, 0);
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_vector_size*, _S_vector_size, 0);
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_vector_to_list*, _S_vector_to_list, 0);
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_list_to_slist*, _S_list_to_slist, 0); 
+  _GLIBCXX_PROFILE_DEFINE_DATA(__trace_list_to_vector*, _S_list_to_vector, 0);
+
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __vector_shift_cost_factor, 
+			       {"__vector_shift_cost_factor", 1.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __vector_iterate_cost_factor,
+			       {"__vector_iterate_cost_factor", 1.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __vector_resize_cost_factor,
+			       {"__vector_resize_cost_factor", 1.0}); 
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __list_shift_cost_factor,
+			       {"__list_shift_cost_factor", 0.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __list_iterate_cost_factor,
+			       {"__list_iterate_cost_factor", 10.0}); 
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __list_resize_cost_factor,
+			       {"__list_resize_cost_factor", 0.0}); 
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __map_insert_cost_factor,
+			       {"__map_insert_cost_factor", 1.5});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __map_erase_cost_factor,
+			       {"__map_erase_cost_factor", 1.5});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __map_find_cost_factor,
+			       {"__map_find_cost_factor", 1});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __map_iterate_cost_factor,
+			       {"__map_iterate_cost_factor", 2.3});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __umap_insert_cost_factor,
+			       {"__umap_insert_cost_factor", 12.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __umap_erase_cost_factor,
+			       {"__umap_erase_cost_factor", 12.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __umap_find_cost_factor,
+			       {"__umap_find_cost_factor", 10.0});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor, __umap_iterate_cost_factor,
+			       {"__umap_iterate_cost_factor", 1.7});
+  _GLIBCXX_PROFILE_DEFINE_DATA(__cost_factor_vector*, __cost_factors, 0);
+
+  _GLIBCXX_PROFILE_DEFINE_DATA(const char*, _S_trace_file_name,
+			       _GLIBCXX_PROFILE_TRACE_PATH_ROOT);
+  _GLIBCXX_PROFILE_DEFINE_DATA(std::size_t, _S_max_warn_count,
+			       _GLIBCXX_PROFILE_MAX_WARN_COUNT);
+  _GLIBCXX_PROFILE_DEFINE_DATA(std::size_t, _S_max_stack_depth,
+			       _GLIBCXX_PROFILE_MAX_STACK_DEPTH);
+  _GLIBCXX_PROFILE_DEFINE_DATA(std::size_t, _S_max_mem,
+			       _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC);
+
+  inline std::size_t
+  __stack_max_depth()
+  { return _GLIBCXX_PROFILE_DATA(_S_max_stack_depth); }
+
+  inline std::size_t
+  __max_mem()
+  { return _GLIBCXX_PROFILE_DATA(_S_max_mem); }
+
+  /** @brief Base class for all trace producers.  */
+  template<typename __object_info, typename __stack_info>
+    class __trace_base
+    {
+    public:
+      // Do not pick the initial size too large, as we don't know which
+      // diagnostics are more active.
+      __trace_base()
+      : __object_table(10000), __stack_table(10000),
+	__stack_table_byte_size(0), __id(0) { }
+
+      virtual ~__trace_base() { }
+
+      void __add_object(__object_t object, __object_info __info);
+      __object_info* __get_object_info(__object_t __object);
+      void __retire_object(__object_t __object);
+      void __write(FILE* __f);
+      void __collect_warnings(__warning_vector_t& __warnings);
+
+    private:
+      __gnu_cxx::__mutex __object_table_lock;
+      __gnu_cxx::__mutex __stack_table_lock;
+      typedef _GLIBCXX_IMPL_UNORDERED_MAP<__object_t, 
+					  __object_info> __object_table_t;
+      typedef _GLIBCXX_IMPL_UNORDERED_MAP<__stack_t, __stack_info,
+					  __stack_hash, 
+					  __stack_hash> __stack_table_t;
+      __object_table_t __object_table;
+      __stack_table_t __stack_table;
+      std::size_t __stack_table_byte_size;
+
+    protected:
+      const char* __id;
+    };
+
+  template<typename __object_info, typename __stack_info>
+    void
+    __trace_base<__object_info, __stack_info>::
+    __collect_warnings(__warning_vector_t& __warnings)
+    {
+      for (typename __stack_table_t::iterator __it
+	     = __stack_table.begin(); __it != __stack_table.end(); ++__it)
+	__warnings.push_back(__warning_data((*__it).second.__magnitude(),
+					    (*__it).first, __id,
+					    (*__it).second.__advice()));
+    }
+
+  template<typename __object_info, typename __stack_info>
+    void
+    __trace_base<__object_info, __stack_info>::
+    __add_object(__object_t __object, __object_info __info)
+    {
+      if (__max_mem() == 0 
+	  || __object_table.size() * sizeof(__object_info) <= __max_mem())
+	{
+	  this->__object_table_lock.lock();
+	  __object_table.insert(typename __object_table_t::
+				value_type(__object, __info));
+	  this->__object_table_lock.unlock();
+	}
+    }
+
+  template<typename __object_info, typename __stack_info>
+    __object_info*
+    __trace_base<__object_info, __stack_info>::
+    __get_object_info(__object_t __object)
+    {
+      // XXX: Revisit this to see if we can decrease mutex spans.
+      // Without this mutex, the object table could be rehashed during an
+      // insertion on another thread, which could result in a segfault.
+      this->__object_table_lock.lock();
+      typename __object_table_t::iterator __object_it
+	=  __object_table.find(__object);
+
+      if (__object_it == __object_table.end())
+	{
+	  this->__object_table_lock.unlock();
+	  return 0;
+	}
+      else
+	{
+	  this->__object_table_lock.unlock();
+	  return &__object_it->second;
+	}
+    }
+
+  template<typename __object_info, typename __stack_info>
+    void
+    __trace_base<__object_info, __stack_info>::
+    __retire_object(__object_t __object)
+    {
+      this->__object_table_lock.lock();
+      this->__stack_table_lock.lock();
+      typename __object_table_t::iterator __object_it
+	= __object_table.find(__object);
+  
+      if (__object_it != __object_table.end())
+	{
+	  const __object_info& __info = __object_it->second;
+	  const __stack_t& __stack = __info.__stack();
+	  typename __stack_table_t::iterator __stack_it
+	    = __stack_table.find(__stack);
+    
+	  if (__stack_it == __stack_table.end())
+	    {
+	      // First occurence of this call context.
+	      if (__max_mem() == 0 || __stack_table_byte_size < __max_mem()) 
+		{
+		  __stack_table_byte_size 
+		    += (sizeof(__instruction_address_t) * __size(__stack)
+			+ sizeof(__stack) + sizeof(__stack_info));
+		  __stack_table.insert(make_pair(__stack,
+						 __stack_info(__info)));
+		}
+	    }
+	  else
+	    {
+	      // Merge object info into info summary for this call context.
+	      __stack_it->second.__merge(__info);
+	      delete __stack;
+	    }
+	  __object_table.erase(__object);
+	}
+
+      this->__object_table_lock.unlock();
+      this->__stack_table_lock.unlock();
+    }
+
+  template<typename __object_info, typename __stack_info>
+    void
+    __trace_base<__object_info, __stack_info>::
+    __write(FILE* __f)
+    {
+      for (typename __stack_table_t::iterator __it
+	     = __stack_table.begin(); __it != __stack_table.end(); ++__it)
+	if (__it->second.__is_valid())
+	  {
+	    std::fprintf(__f, __id);
+	    std::fprintf(__f, "|");
+	    __gnu_profile::__write(__f, __it->first);
+	    std::fprintf(__f, "|");
+	    __it->second.__write(__f);
+	  }
+    }
+
+  inline std::size_t
+  __env_to_size_t(const char* __env_var, std::size_t __default_value)
+  {
+    char* __env_value = std::getenv(__env_var);
+    if (__env_value)
+      {
+	errno = 0;
+	long __converted_value = std::strtol(__env_value, 0, 10);
+	if (errno || __converted_value < 0)
+	  {
+	    std::fprintf(stderr,
+			 "Bad value for environment variable '%s'.\n",
+			 __env_var);
+	    std::abort();
+	  }
+	else
+	  return static_cast<std::size_t>(__converted_value);
+      }
+    else
+      return __default_value;
+  }
+
+  inline void
+  __set_max_stack_trace_depth()
+  {
+    _GLIBCXX_PROFILE_DATA(_S_max_stack_depth)
+      = __env_to_size_t(_GLIBCXX_PROFILE_MAX_STACK_DEPTH_ENV_VAR,
+			_GLIBCXX_PROFILE_DATA(_S_max_stack_depth));
+  }
+
+  inline void
+  __set_max_mem()
+  {
+    _GLIBCXX_PROFILE_DATA(_S_max_mem) 
+      = __env_to_size_t(_GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC_ENV_VAR,
+			_GLIBCXX_PROFILE_DATA(_S_max_mem));
+  }
+
+  inline int
+  __log_magnitude(float __f)
+  {
+    const float __log_base = 10.0;
+    int __result = 0;
+    int __sign = 1;
+
+    if (__f < 0) 
+      {
+	__f = -__f;
+	__sign = -1;
+      }
+
+    while (__f > __log_base) 
+      {
+	++__result;
+	__f /= 10.0;
+      }
+    return __sign * __result;
+  }
+
+  inline FILE* 
+  __open_output_file(const char* __extension)
+  {
+    // The path is made of _S_trace_file_name + "." + extension.
+    std::size_t __root_len 
+      = __builtin_strlen(_GLIBCXX_PROFILE_DATA(_S_trace_file_name));
+    std::size_t __ext_len = __builtin_strlen(__extension);
+    char* __file_name = new char[__root_len + 1 + __ext_len + 1];
+    __builtin_memcpy(__file_name,
+		     _GLIBCXX_PROFILE_DATA(_S_trace_file_name),
+		     __root_len);
+    *(__file_name + __root_len) = '.';
+    __builtin_memcpy(__file_name + __root_len + 1,
+		     __extension, __ext_len + 1);
+
+    FILE* __out_file = std::fopen(__file_name, "w");
+    if (!__out_file)
+      {
+	std::fprintf(stderr, "Could not open trace file '%s'.\n",
+		     __file_name);
+	std::abort();
+      }
+
+    delete[] __file_name;
+    return __out_file;
+  }
+
+  struct __warn
+  {
+    FILE* __file;
+
+    __warn(FILE* __f)
+    { __file = __f; }
+
+    void
+    operator()(const __warning_data& __info)
+    {
+      std::fprintf(__file,  __info.__warning_id);
+      std::fprintf(__file, ": improvement = %d",
+		   __log_magnitude(__info.__magnitude));
+      std::fprintf(__file, ": call stack = ");
+      __gnu_profile::__write(__file, __info.__context);
+      std::fprintf(__file, ": advice = %s\n",
+		   __info.__warning_message.c_str());
+    }
+  };
+
+  /** @brief Final report method, registered with @b atexit.
+   *
+   * This can also be called directly by user code, including signal handlers.
+   * It is protected against deadlocks by the reentrance guard in profiler.h.
+   * However, when called from a signal handler that triggers while within
+   * __gnu_profile (under the guarded zone), no output will be produced.
+   */
+  inline void
+  __report(void)
+  {
+    _GLIBCXX_PROFILE_DATA(__global_lock).lock();
+
+    __warning_vector_t __warnings, __top_warnings;
+
+    FILE* __raw_file = __open_output_file("raw");
+    __trace_vector_size_report(__raw_file, __warnings);
+    __trace_hashtable_size_report(__raw_file, __warnings);
+    __trace_hash_func_report(__raw_file, __warnings);
+    __trace_vector_to_list_report(__raw_file, __warnings);
+    __trace_list_to_slist_report(__raw_file, __warnings);
+    __trace_list_to_vector_report(__raw_file, __warnings);
+    __trace_map_to_unordered_map_report(__raw_file, __warnings);
+    std::fclose(__raw_file);
+
+    // Sort data by magnitude, keeping just top N.
+    std::size_t __cutoff = std::min(_GLIBCXX_PROFILE_DATA(_S_max_warn_count),
+				    __warnings.size());
+    __top_n(__warnings, __top_warnings, __cutoff);
+
+    FILE* __warn_file = __open_output_file("txt");
+    __for_each(__top_warnings.begin(), __top_warnings.end(),
+	       __warn(__warn_file));
+    std::fclose(__warn_file);
+
+    _GLIBCXX_PROFILE_DATA(__global_lock).unlock();
+  }
+
+  inline void
+  __set_trace_path()
+  {
+    char* __env_trace_file_name = std::getenv(_GLIBCXX_PROFILE_TRACE_ENV_VAR);
+
+    if (__env_trace_file_name)
+      _GLIBCXX_PROFILE_DATA(_S_trace_file_name) = __env_trace_file_name;
+
+    // Make sure early that we can create the trace file.
+    std::fclose(__open_output_file("txt"));
+  }
+
+  inline void
+  __set_max_warn_count()
+  {
+    char* __env_max_warn_count_str
+      = std::getenv(_GLIBCXX_PROFILE_MAX_WARN_COUNT_ENV_VAR);
+
+    if (__env_max_warn_count_str)
+      _GLIBCXX_PROFILE_DATA(_S_max_warn_count)
+	= static_cast<std::size_t>(std::atoi(__env_max_warn_count_str));
+  }
+
+  inline void
+  __read_cost_factors()
+  {
+    std::string __conf_file_name(_GLIBCXX_PROFILE_DATA(_S_trace_file_name));
+    __conf_file_name += ".conf";
+
+    std::ifstream __conf_file(__conf_file_name.c_str());
+
+    if (__conf_file.is_open())
+      {
+	std::string __line;
+
+	while (std::getline(__conf_file, __line))
+	  {
+	    std::string::size_type __i = __line.find_first_not_of(" \t\n\v");
+
+	    if (__line.length() <= 0 || __line[__i] == '#')
+	      // Skip empty lines or comments.
+	      continue;
+	  }
+
+	// Trim.
+	__line.erase(__remove(__line.begin(), __line.end(), ' '),
+		     __line.end());
+	std::string::size_type __pos = __line.find("=");
+	std::string __factor_name = __line.substr(0, __pos);
+	std::string::size_type __end = __line.find_first_of(";\n");
+	std::string __factor_value = __line.substr(__pos + 1, __end - __pos);
+
+	_GLIBCXX_PROFILE_DATA(__env)[__factor_name] = __factor_value;
+      }
+  }
+
+  struct __cost_factor_writer
+  {
+    FILE* __file;
+
+    __cost_factor_writer(FILE* __f)
+    : __file(__f) { }
+
+    void
+    operator() (const __cost_factor* __factor)
+    { std::fprintf(__file, "%s = %f\n", __factor->__env_var,
+		   __factor->__value); }
+  };
+
+  inline void
+  __write_cost_factors()
+  {
+    FILE* __file = __open_output_file("conf.out");
+    __for_each(_GLIBCXX_PROFILE_DATA(__cost_factors)->begin(),
+	       _GLIBCXX_PROFILE_DATA(__cost_factors)->end(),
+	       __cost_factor_writer(__file));
+    std::fclose(__file);
+  }
+
+  struct __cost_factor_setter
+  {
+    void
+    operator()(__cost_factor* __factor)
+    {
+      // Look it up in the process environment first.
+      const char* __env_value = std::getenv(__factor->__env_var);
+
+      if (!__env_value)
+        {
+          // Look it up in the config file.
+          __env_t::iterator __it 
+	    = _GLIBCXX_PROFILE_DATA(__env).find(__factor->__env_var);
+          if (__it != _GLIBCXX_PROFILE_DATA(__env).end())
+            __env_value = (*__it).second.c_str();
+        }
+
+      if (__env_value)
+        __factor->__value = std::atof(__env_value);
+    }
+  };
+
+  inline void
+  __set_cost_factors()
+  {
+    _GLIBCXX_PROFILE_DATA(__cost_factors) = new __cost_factor_vector;
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__vector_shift_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__vector_iterate_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__vector_resize_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__list_shift_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__list_iterate_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__list_resize_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__map_insert_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__map_erase_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__map_find_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__map_iterate_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__umap_insert_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__umap_erase_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__umap_find_cost_factor));
+    _GLIBCXX_PROFILE_DATA(__cost_factors)->
+      push_back(&_GLIBCXX_PROFILE_DATA(__umap_iterate_cost_factor));
+    __for_each(_GLIBCXX_PROFILE_DATA(__cost_factors)->begin(),
+	       _GLIBCXX_PROFILE_DATA(__cost_factors)->end(),
+	       __cost_factor_setter());
+  }
+
+  inline void
+  __profcxx_init_unconditional()
+  {
+    _GLIBCXX_PROFILE_DATA(__global_lock).lock();
+
+    if (__is_invalid())
+      {
+	__set_max_warn_count();
+
+	if (_GLIBCXX_PROFILE_DATA(_S_max_warn_count) == 0)
+	  __turn_off();
+	else
+	  {
+	    __set_max_stack_trace_depth();
+	    __set_max_mem();
+	    __set_trace_path();
+	    __read_cost_factors(); 
+	    __set_cost_factors();
+	    __write_cost_factors();
+
+	    __trace_vector_size_init();
+	    __trace_hashtable_size_init();
+	    __trace_hash_func_init();
+	    __trace_vector_to_list_init();
+	    __trace_list_to_slist_init(); 
+	    __trace_list_to_vector_init();
+	    __trace_map_to_unordered_map_init();
+
+	    std::atexit(__report);
+
+	    __turn_on();
+	  }
+      }
+
+    _GLIBCXX_PROFILE_DATA(__global_lock).unlock();
+  }
+
+  /** @brief This function must be called by each instrumentation point.
+   *
+   * The common path is inlined fully.
+   */
+  inline bool
+  __profcxx_init()
+  {
+    if (__is_invalid())
+      __profcxx_init_unconditional();
+
+    return __is_on();
+  }
+
+} // namespace __gnu_profile
+
+#endif /* _GLIBCXX_PROFILE_PROFILER_TRACE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_size.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_size.h
new file mode 100644
index 000000000..0af384f4e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_size.h
@@ -0,0 +1,104 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_vector_size.h
+ *  @brief Collection of vector size traces.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_VECTOR_SIZE_H
+#define _GLIBCXX_PROFILE_PROFILER_VECTOR_SIZE_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+#include "profile/impl/profiler_state.h"
+#include "profile/impl/profiler_container_size.h"
+
+namespace __gnu_profile
+{
+  /** @brief Hashtable size instrumentation trace producer.  */
+  class __trace_vector_size
+  : public __trace_container_size
+  {
+  public:
+    __trace_vector_size()
+    : __trace_container_size()
+    { __id = "vector-size"; }
+  };
+
+  inline void
+  __trace_vector_size_init()
+  { _GLIBCXX_PROFILE_DATA(_S_vector_size) = new __trace_vector_size(); }
+
+  inline void
+  __trace_vector_size_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_vector_size))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_vector_size)->__collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_vector_size)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_vector_size_construct(const void* __obj, std::size_t __num)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_size)->__insert(__obj, __get_stack(),
+						    __num);
+  }
+
+  inline void
+  __trace_vector_size_destruct(const void* __obj, std::size_t __num,
+			       std::size_t __inum)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_size)->__destruct(__obj, __num, __inum);
+  }
+
+  inline void
+  __trace_vector_size_resize(const void* __obj, std::size_t __from,
+			     std::size_t __to)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_size)->__resize(__obj, __from, __to);
+  }
+
+} // namespace __gnu_profile
+
+#endif /* _GLIBCXX_PROFILE_PROFILER_VECTOR_SIZE_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_to_list.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_to_list.h
new file mode 100644
index 000000000..91963139b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/impl/profiler_vector_to_list.h
@@ -0,0 +1,354 @@
+// -*- C++ -*-
+//
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+// MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction.  Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License.  This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file profile/impl/profiler_vector_to_list.h
+ *  @brief diagnostics for vector to list.
+ */
+
+// Written by Lixia Liu and Silvius Rus.
+
+#ifndef _GLIBCXX_PROFILE_PROFILER_VECTOR_TO_LIST_H
+#define _GLIBCXX_PROFILE_PROFILER_VECTOR_TO_LIST_H 1
+
+#include "profile/impl/profiler.h"
+#include "profile/impl/profiler_node.h"
+#include "profile/impl/profiler_trace.h"
+
+namespace __gnu_profile
+{
+  /** @brief A vector-to-list instrumentation line in the object table.  */
+  class __vector2list_info
+  : public __object_info_base
+  {
+  public:
+    __vector2list_info()
+    : _M_shift_count(0), _M_iterate(0), _M_resize(0), _M_list_cost(0),
+      _M_vector_cost(0), _M_valid(true) { }
+
+    __vector2list_info(__stack_t __stack)
+    : __object_info_base(__stack), _M_shift_count(0), _M_iterate(0),
+      _M_resize(0), _M_list_cost(0), _M_vector_cost(0), _M_valid(true) { }
+
+    virtual ~__vector2list_info() { }
+
+    __vector2list_info(const __vector2list_info& __o)
+    : __object_info_base(__o), _M_shift_count(__o._M_shift_count),
+      _M_iterate(__o._M_iterate), _M_resize(__o._M_resize),
+      _M_list_cost(__o._M_list_cost), _M_vector_cost(__o._M_vector_cost),
+      _M_valid(__o._M_valid) { }
+
+    void
+    __merge(const __vector2list_info& __o)
+    {
+      _M_shift_count  += __o._M_shift_count;
+      _M_iterate      += __o._M_iterate;
+      _M_vector_cost  += __o._M_vector_cost;
+      _M_list_cost    += __o._M_list_cost;
+      _M_valid        &= __o._M_valid;
+      _M_resize       += __o._M_resize;
+    }
+
+    void
+    __write(FILE* __f) const
+    {
+      std::fprintf(__f, "%Zu %Zu %Zu %.0f %.0f\n", _M_shift_count,
+		   _M_resize, _M_iterate, _M_vector_cost, _M_list_cost);
+    }
+
+    float
+    __magnitude() const
+    { return _M_vector_cost - _M_list_cost; }
+
+    std::string
+    __advice() const 
+    { return "change std::vector to std::list"; }
+
+    std::size_t
+    __shift_count()
+    { return _M_shift_count; }
+
+    std::size_t
+    __iterate()
+    { return _M_iterate; }
+
+    float
+    __list_cost()
+    { return _M_list_cost; }
+
+    std::size_t
+    __resize()
+    { return _M_resize; }
+
+    void
+    __set_list_cost(float __lc)
+    { _M_list_cost = __lc; }
+    
+    void
+    __set_vector_cost(float __vc)
+    { _M_vector_cost = __vc; }
+    
+    bool
+    __is_valid()
+    { return _M_valid; }
+    
+    void
+    __set_invalid()
+    { _M_valid = false; }
+
+    void
+    __opr_insert(std::size_t __pos, std::size_t __num)
+    { _M_shift_count += __num - __pos; }
+
+    void
+    __opr_iterate(std::size_t __num)
+    { _M_iterate += __num; }
+
+    void
+    __resize(std::size_t __from, std::size_t)
+    { _M_resize += __from; }
+
+    void
+    __opr_find(std::size_t __size)
+    {
+      // Use average case complexity.
+      _M_iterate += 3.0 / 4.0 * __size;
+    }
+
+  private:
+    std::size_t _M_shift_count;
+    std::size_t _M_iterate;
+    std::size_t _M_resize;
+    float _M_list_cost;
+    float _M_vector_cost;
+    bool  _M_valid;
+  };
+
+
+  /** @brief A vector-to-list instrumentation line in the stack table.  */
+  class __vector2list_stack_info
+  : public __vector2list_info
+  {
+  public:
+    __vector2list_stack_info(const __vector2list_info& __o) 
+    : __vector2list_info(__o) { }
+  };
+
+
+  /** @brief Vector-to-list instrumentation producer.  */
+  class __trace_vector_to_list
+  : public __trace_base<__vector2list_info, __vector2list_stack_info> 
+  {
+  public:
+    __trace_vector_to_list()
+    : __trace_base<__vector2list_info, __vector2list_stack_info>()
+    { __id = "vector-to-list"; }
+
+    ~__trace_vector_to_list() { }
+
+    // Insert a new node at construct with object, callstack and initial size. 
+    void
+    __insert(__object_t __obj, __stack_t __stack)
+    { __add_object(__obj, __vector2list_info(__stack)); }
+
+    // Call at destruction/clean to set container final size.
+    void
+    __destruct(const void* __obj)
+    {
+      if (!__is_on())
+	return;
+
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (!__res)
+	return;
+
+      float __vc = __vector_cost(__res->__shift_count(), __res->__iterate(),
+				 __res->__resize());
+      float __lc = __list_cost(__res->__shift_count(), __res->__iterate(),
+			       __res->__resize());
+      __res->__set_vector_cost(__vc);
+      __res->__set_list_cost(__lc);
+
+      __retire_object(__obj);
+    }
+
+    // Find the node in the live map.
+    // XXX Undefined?!?
+    __vector2list_info* __find(const void* __obj);
+
+    // Collect cost of operations.
+    void
+    __opr_insert(const void* __obj, std::size_t __pos, std::size_t __num)
+    {
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_insert(__pos, __num);
+    }
+
+    void
+    __opr_iterate(const void* __obj, std::size_t __num)
+    {
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_iterate(__num);
+    }
+
+    void
+    __invalid_operator(const void* __obj)
+    {
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__set_invalid();
+    }
+
+    void
+    __resize(const void* __obj, std::size_t __from, std::size_t __to)
+    {
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__resize(__from, __to);
+    }
+
+    float
+    __vector_cost(std::size_t __shift, std::size_t __iterate,
+		  std::size_t __resize)
+    {
+      return (__shift
+	      * _GLIBCXX_PROFILE_DATA(__vector_shift_cost_factor).__value
+	      + __iterate
+	      * _GLIBCXX_PROFILE_DATA(__vector_iterate_cost_factor).__value
+	      + __resize
+	      * _GLIBCXX_PROFILE_DATA(__vector_resize_cost_factor).__value);
+    }
+
+    float
+    __list_cost(std::size_t __shift, std::size_t __iterate,
+		std::size_t __resize)
+    {
+      return (__shift
+	      * _GLIBCXX_PROFILE_DATA(__list_shift_cost_factor).__value
+	      + __iterate
+	      * _GLIBCXX_PROFILE_DATA(__list_iterate_cost_factor).__value
+	      + __resize
+	      * _GLIBCXX_PROFILE_DATA(__list_resize_cost_factor).__value);
+    }
+
+    void
+    __opr_find(const void* __obj, std::size_t __size)
+    {
+      __vector2list_info* __res = __get_object_info(__obj);
+      if (__res)
+	__res->__opr_find(__size);
+    }
+  };
+
+
+  inline void
+  __trace_vector_to_list_init()
+  { _GLIBCXX_PROFILE_DATA(_S_vector_to_list) = new __trace_vector_to_list(); }
+
+  inline void
+  __trace_vector_to_list_report(FILE* __f, __warning_vector_t& __warnings)
+  {
+    if (_GLIBCXX_PROFILE_DATA(_S_vector_to_list))
+      {
+	_GLIBCXX_PROFILE_DATA(_S_vector_to_list)->
+	  __collect_warnings(__warnings);
+	_GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__write(__f);
+      }
+  }
+
+  inline void
+  __trace_vector_to_list_construct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__insert(__obj, __get_stack());
+  }
+
+  inline void
+  __trace_vector_to_list_destruct(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__destruct(__obj);
+  }
+
+  inline void
+  __trace_vector_to_list_insert(const void* __obj, std::size_t __pos,
+				std::size_t __num)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__opr_insert(__obj, __pos,
+							   __num);
+  }
+
+  inline void
+  __trace_vector_to_list_iterate(const void* __obj, std::size_t __num = 1)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__opr_iterate(__obj, __num);
+  }
+
+  inline void
+  __trace_vector_to_list_invalid_operator(const void* __obj)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__invalid_operator(__obj);
+  }
+
+  inline void
+  __trace_vector_to_list_resize(const void* __obj, std::size_t __from,
+				std::size_t __to)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__resize(__obj, __from, __to);
+  }
+
+  inline void
+  __trace_vector_to_list_find(const void* __obj, std::size_t __size)
+  {
+    if (!__profcxx_init())
+      return;
+
+    _GLIBCXX_PROFILE_DATA(_S_vector_to_list)->__opr_find(__obj, __size);
+  }
+
+} // namespace __gnu_profile
+#endif /* _GLIBCXX_PROFILE_PROFILER_VECTOR_TO_LIST_H */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/iterator_tracker.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/iterator_tracker.h
new file mode 100644
index 000000000..733429daa
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/iterator_tracker.h
@@ -0,0 +1,274 @@
+// Profiling iterator implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/iterator_tracker.h
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_ITERATOR_TRACKER
+#define _GLIBCXX_PROFILE_ITERATOR_TRACKER 1
+
+#include <ext/type_traits.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+
+  template<typename _Iterator, typename _Sequence>
+    class __iterator_tracker 
+    {
+      typedef __iterator_tracker _Self;
+
+      // The underlying iterator
+      _Iterator _M_current;
+
+      // The underlying data structure
+      const _Sequence* _M_ds;
+      typedef std::iterator_traits<_Iterator> _Traits;
+
+    public:
+      typedef _Iterator		              _Base_iterator;
+      typedef typename _Traits::iterator_category iterator_category; 
+      typedef typename _Traits::value_type        value_type;
+      typedef typename _Traits::difference_type   difference_type;
+      typedef typename _Traits::reference         reference;
+      typedef typename _Traits::pointer           pointer;
+
+      __iterator_tracker()
+      : _M_current(), _M_ds(0) { }
+
+      __iterator_tracker(const _Iterator& __i, const _Sequence* __seq) 
+      : _M_current(__i), _M_ds(__seq) { }
+
+      __iterator_tracker(const __iterator_tracker& __x) 
+      : _M_current(__x._M_current), _M_ds(__x._M_ds) { }
+
+      template<typename _MutableIterator>
+        __iterator_tracker(const __iterator_tracker<_MutableIterator,
+			   typename __gnu_cxx::__enable_if
+			   <(std::__are_same<_MutableIterator, typename
+			     _Sequence::iterator::_Base_iterator>::__value),
+			   _Sequence>::__type>& __x)
+	:  _M_current(__x.base()), _M_ds(__x._M_get_sequence()) { }
+
+      _Iterator
+      base() const { return _M_current; }
+  
+      /**
+       * @brief Conversion to underlying non-debug iterator to allow
+       * better interaction with non-profile containers.
+       */
+      operator _Iterator() const { return _M_current; }
+
+      pointer
+      operator->() const { return &*_M_current; }
+
+      __iterator_tracker&
+      operator++()
+      {
+	_M_ds->_M_profile_iterate();
+	++_M_current;
+	return *this;
+      }
+
+      __iterator_tracker&
+      operator++(int)
+      {
+	_M_ds->_M_profile_iterate();
+	__iterator_tracker __tmp(*this);
+	++_M_current;
+	return __tmp;
+      }
+
+      __iterator_tracker&
+      operator--()
+      {
+	_M_ds->_M_profile_iterate(1);
+	--_M_current;
+	return *this;
+      }
+
+      __iterator_tracker&
+      operator--(int)
+      {
+	_M_ds->_M_profile_iterate(1);
+	__iterator_tracker __tmp(*this);
+	--_M_current;
+	return __tmp;
+      }
+
+      __iterator_tracker&
+      operator=(const __iterator_tracker& __x)
+      {
+	_M_current = __x._M_current;
+	return *this;
+      }
+
+      reference
+      operator*() const
+      { return *_M_current; }
+
+      // ------ Random access iterator requirements ------
+      reference
+      operator[](const difference_type& __n) const 
+      { return _M_current[__n]; }
+
+      __iterator_tracker&
+      operator+=(const difference_type& __n)
+      {
+	_M_current += __n;
+	return *this;
+      }
+
+      __iterator_tracker
+      operator+(const difference_type& __n) const
+      {
+	__iterator_tracker __tmp(*this);
+	__tmp += __n;
+	return __tmp;
+      }
+
+      __iterator_tracker&
+      operator-=(const difference_type& __n)
+      {
+	_M_current += -__n;
+	return *this;
+      }
+
+      __iterator_tracker
+      operator-(const difference_type& __n) const
+      {
+	__iterator_tracker __tmp(*this);
+	__tmp -= __n;
+	return __tmp;
+      }
+
+      void
+      _M_find()
+      { _M_ds->_M_profile_find(); }
+
+      const _Sequence*
+      _M_get_sequence() const
+      { return static_cast<const _Sequence*>(_M_ds); }
+  };
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator==(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	       const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() == __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator==(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	       const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() == __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator!=(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	       const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() != __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator!=(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+               const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() != __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator<(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	      const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() < __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator<(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	      const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() < __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator<=(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	       const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() <= __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator<=(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	       const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() <= __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator>(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	      const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() > __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator>(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	      const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() > __rhs.base(); }
+
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline bool
+    operator>=(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	       const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() >= __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline bool
+    operator>=(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	       const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() >= __rhs.base(); }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // According to the resolution of DR179 not only the various comparison
+  // operators but also operator- must accept mixed iterator/const_iterator
+  // parameters.
+  template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+    inline typename __iterator_tracker<_IteratorL, _Sequence>::difference_type
+    operator-(const __iterator_tracker<_IteratorL, _Sequence>& __lhs,
+	      const __iterator_tracker<_IteratorR, _Sequence>& __rhs)
+    { return __lhs.base() - __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline typename __iterator_tracker<_Iterator, _Sequence>::difference_type
+    operator-(const __iterator_tracker<_Iterator, _Sequence>& __lhs,
+	      const __iterator_tracker<_Iterator, _Sequence>& __rhs)
+    { return __lhs.base() - __rhs.base(); }
+
+  template<typename _Iterator, typename _Sequence>
+    inline __iterator_tracker<_Iterator, _Sequence>
+    operator+(typename __iterator_tracker<_Iterator,_Sequence>::difference_type
+	      __n,
+	      const __iterator_tracker<_Iterator, _Sequence>& __i)
+    { return __i + __n; }
+	
+}  // namespace __profile
+}  // namespace std
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/list
new file mode 100644
index 000000000..21279d2cc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/list
@@ -0,0 +1,640 @@
+// Profiling list implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/list
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_LIST
+#define _GLIBCXX_PROFILE_LIST 1
+
+#include <list>
+#include <profile/base.h> 
+#include <profile/iterator_tracker.h> 
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /** @brief List wrapper with performance instrumentation.  */
+template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
+    class list
+    : public _GLIBCXX_STD_C::list<_Tp, _Allocator>
+    {
+      typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base;
+
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __iterator_tracker<typename _Base::iterator, list>        
+				                    iterator;
+      typedef __iterator_tracker<typename _Base::const_iterator, list>  
+                                                    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.2.2.1 construct/copy/destroy:
+      explicit
+      list(const _Allocator& __a = _Allocator())
+      : _Base(__a) 
+      { 
+        __profcxx_list_construct(this); 	// list2slist
+        __profcxx_list_construct2(this); 	// list2vector
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      list(size_type __n)
+      : _Base(__n) 
+      { 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+
+      list(size_type __n, const _Tp& __value,
+	   const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) 
+      { 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+#else
+      explicit
+      list(size_type __n, const _Tp& __value = _Tp(),
+	   const _Allocator& __a = _Allocator())
+      : _Base(__n, __value, __a) 
+      { 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+#endif
+
+      template<class _InputIterator>
+      list(_InputIterator __first, _InputIterator __last,
+	   const _Allocator& __a = _Allocator())
+      : _Base(__first, __last, __a)
+      {	 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+
+      list(const list& __x)
+      : _Base(__x) 
+      { 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+
+      list(const _Base& __x)
+      : _Base(__x) 
+      { 	
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      list(list&& __x)
+      : _Base(std::move(__x))
+      { 
+        __profcxx_list_construct(this); 
+        __profcxx_list_construct2(this); 
+      }
+
+      list(initializer_list<value_type> __l,
+           const allocator_type& __a = allocator_type())
+        : _Base(__l, __a) { }
+#endif
+
+      ~list() { 
+        __profcxx_list_destruct(this); 
+        __profcxx_list_destruct2(this); 
+      }
+
+      list&
+      operator=(const list& __x)
+      {
+	static_cast<_Base&>(*this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      list&
+      operator=(list&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      list&
+      operator=(initializer_list<value_type> __l)
+      {
+	static_cast<_Base&>(*this) = __l;
+	return *this;
+      }
+
+      void
+      assign(initializer_list<value_type> __l)
+      {	_Base::assign(__l); }
+#endif
+
+      template<class _InputIterator>
+        void
+        assign(_InputIterator __first, _InputIterator __last)
+        { _Base::assign(__first, __last); }
+
+      void
+      assign(size_type __n, const _Tp& __t)
+      {	_Base::assign(__n, __t); }
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      {
+        __profcxx_list_rewind(this);
+        return iterator(_Base::end(), this);
+      }
+
+      const_iterator
+      end() const
+      {
+        __profcxx_list_rewind(this);
+        return const_iterator(_Base::end(), this);
+      }
+
+      reverse_iterator
+      rbegin()
+      {
+        __profcxx_list_rewind(this);
+        return reverse_iterator(end());
+      }
+
+      const_reverse_iterator
+      rbegin() const
+      { 
+        __profcxx_list_rewind(this);
+        return const_reverse_iterator(end());
+      }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // 23.2.2.2 capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      { _Base::resize(__sz); }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      { _Base::resize(__sz, __c); }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      { _Base::resize(__sz, __c); }
+#endif
+
+      // element access:
+      reference
+      front()
+      { return _Base::front(); }
+
+      const_reference
+      front() const
+      { return _Base::front(); }
+
+      reference
+      back()
+      {
+        __profcxx_list_rewind(this);
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+        __profcxx_list_rewind(this);
+	return _Base::back();
+      }
+
+      // 23.2.2.3 modifiers:
+      void
+      push_front(const value_type& __x)
+      {
+        __profcxx_list_invalid_operator(this);
+        __profcxx_list_operation(this);
+        _Base::push_front(__x);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::emplace_front;
+#endif
+
+      void
+      pop_front()
+      {
+        __profcxx_list_operation(this);
+	_Base::pop_front();
+      }
+
+      using _Base::push_back;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::emplace_back;
+#endif
+
+      void
+      pop_back()
+      {
+	iterator __victim = end();
+	--__victim;
+	_Base::pop_back();
+        __profcxx_list_rewind(this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        iterator
+        emplace(iterator __position, _Args&&... __args)
+	{
+	  return iterator(_Base::emplace(__position.base(),
+                                         std::forward<_Args>(__args)...));
+	}
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+        _M_profile_insert(this, __position, size());
+        return iterator(_Base::insert(__position.base(), __x), this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(iterator __position, _Tp&& __x)
+      { 
+        _M_profile_insert(this, __position, size());
+        return iterator(_Base::emplace(__position.base(), std::move(__x)),
+                        this); 
+      }
+
+      void
+      insert(iterator __position, initializer_list<value_type> __l)
+      {
+        _M_profile_insert(this, __position, size());
+        _Base::insert(__position.base(), __l);
+      }
+#endif
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+        _M_profile_insert(this, __position, size());
+	_Base::insert(__position.base(), __n, __x);
+      }
+
+      template<class _InputIterator>
+        void
+        insert(iterator __position, _InputIterator __first,
+	       _InputIterator __last)
+      {
+        _M_profile_insert(this, __position, size());
+        _Base::insert(__position.base(), __first, __last);
+      }
+
+      iterator
+      erase(iterator __position)
+      {	return iterator(_Base::erase(__position.base()), this); }
+
+      iterator
+      erase(iterator __position, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	return iterator(_Base::erase(__position.base(), __last.base()), this);
+      }
+
+      void
+      swap(list& __x)
+      {	_Base::swap(__x); }
+
+      void
+      clear()
+      {	_Base::clear(); }
+
+      // 23.2.2.4 list operations:
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x)
+#else
+      splice(iterator __position, list& __x)
+#endif
+      { this->splice(__position, _GLIBCXX_MOVE(__x), __x.begin(), __x.end()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x)
+      { this->splice(__position, std::move(__x)); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __i)
+      { this->splice(__position, std::move(__x), __i); }
+#endif
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __i)
+#else
+      splice(iterator __position, list& __x, iterator __i)
+#endif
+      {
+	// We used to perform the splice_alloc check:  not anymore, redundant
+	// after implementing the relevant bits of N1599.
+
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
+		      __i.base());
+      }
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      splice(iterator __position, list&& __x, iterator __first,
+	     iterator __last)
+#else
+      splice(iterator __position, list& __x, iterator __first,
+	     iterator __last)
+#endif
+      {
+	// We used to perform the splice_alloc check:  not anymore, redundant
+	// after implementing the relevant bits of N1599.
+
+	_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
+		      __first.base(), __last.base());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __first, iterator __last)
+      { this->splice(__position, std::move(__x), __first, __last); }
+#endif
+
+      void
+      remove(const _Tp& __value)
+      {
+	for (iterator __x = begin(); __x != end(); )
+	  {
+	    if (*__x == __value)
+	      __x = erase(__x);
+	    else
+	      ++__x;
+	  }
+      }
+
+      template<class _Predicate>
+        void
+        remove_if(_Predicate __pred)
+        {
+	  for (iterator __x = begin(); __x != end(); )
+	    {
+              __profcxx_list_operation(this);
+	      if (__pred(*__x))
+		__x = erase(__x);
+	      else
+		++__x;
+	    }
+	}
+
+      void
+      unique()
+      {
+	iterator __first = begin();
+	iterator __last = end();
+	if (__first == __last)
+	  return;
+	iterator __next = __first;
+	while (++__next != __last)
+	  {
+            __profcxx_list_operation(this);
+	    if (*__first == *__next)
+	      erase(__next);
+	    else
+	      __first = __next;
+	    __next = __first;
+	  }
+      }
+
+      template<class _BinaryPredicate>
+        void
+        unique(_BinaryPredicate __binary_pred)
+        {
+	  iterator __first = begin();
+	  iterator __last = end();
+	  if (__first == __last)
+	    return;
+	  iterator __next = __first;
+	  while (++__next != __last)
+	    {
+              __profcxx_list_operation(this);
+	      if (__binary_pred(*__first, *__next))
+		erase(__next);
+	      else
+		__first = __next;
+	      __next = __first;
+	    }
+	}
+
+      void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      merge(list&& __x)
+#else
+      merge(list& __x)
+#endif
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 300. list::merge() specification incomplete
+	if (this != &__x)
+	  { _Base::merge(_GLIBCXX_MOVE(__x._M_base())); }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      merge(list& __x)
+      { this->merge(std::move(__x)); }
+#endif
+
+      template<class _Compare>
+        void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+        merge(list&& __x, _Compare __comp)
+#else
+        merge(list& __x, _Compare __comp)
+#endif
+        {
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 300. list::merge() specification incomplete
+	  if (this != &__x)
+	    { _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); }
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Compare>
+        void
+        merge(list& __x, _Compare __comp)
+        { this->merge(std::move(__x), __comp); }
+#endif
+
+      void
+      sort() { _Base::sort(); }
+
+      template<typename _StrictWeakOrdering>
+        void
+        sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); }
+
+      using _Base::reverse;
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+      inline void _M_profile_find() const 
+      { }
+
+      inline void _M_profile_iterate(int __rewind = 0) const 
+      {
+        __profcxx_list_operation(this);
+        __profcxx_list_iterate(this); 
+        if (__rewind)
+          __profcxx_list_rewind(this);
+      }
+
+    private:
+      size_type _M_profile_insert(void* obj, iterator __pos, size_type __size)
+      {
+        size_type __shift = 0;
+        typename _Base::iterator __it = __pos.base();
+        for ( ; __it!=_Base::end(); __it++)
+          __shift++;
+        __profcxx_list_rewind(this);
+        __profcxx_list_operation(this);
+        __profcxx_list_insert(this, __shift, __size);
+      }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const list<_Tp, _Alloc>& __lhs,
+	      const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const list<_Tp, _Alloc>& __lhs,
+	       const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const list<_Tp, _Alloc>& __lhs,
+	      const list<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map
new file mode 100644
index 000000000..e396b8523
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map
@@ -0,0 +1,41 @@
+// Profiling map/multimap implementation -*- C++ -*-
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/map
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_MAP
+#define _GLIBCXX_PROFILE_MAP 1
+
+#include <map>
+#include <profile/map.h>
+#include <profile/multimap.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map.h
new file mode 100644
index 000000000..1edc16c78
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/map.h
@@ -0,0 +1,529 @@
+// Profiling map implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/map.h
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_MAP_H
+#define _GLIBCXX_PROFILE_MAP_H 1
+
+#include <utility>
+#include <profile/base.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::map wrapper with performance instrumentation.
+  template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
+    class map
+    : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>
+    {
+      typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base;
+
+    public:
+      // types:
+      typedef _Key                                  key_type;
+      typedef _Tp                                   mapped_type;
+      typedef std::pair<const _Key, _Tp>            value_type;
+      typedef _Compare                              key_compare;
+      typedef _Allocator                            allocator_type;
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef typename _Base::iterator       iterator;
+      typedef typename _Base::const_iterator       const_iterator;
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+      // 23.3.1.1 construct/copy/destroy:
+      explicit
+      map(const _Compare& __comp = _Compare(),
+	  const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a)
+      { __profcxx_map_to_unordered_map_construct(this); }
+
+      template<typename _InputIterator>
+        map(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp = _Compare(),
+	    const _Allocator& __a = _Allocator())
+	: _Base(__first, __last, __comp, __a)
+        { __profcxx_map_to_unordered_map_construct(this); }
+
+      map(const map& __x)
+      : _Base(__x)
+      { __profcxx_map_to_unordered_map_construct(this); }
+
+      map(const _Base& __x)
+      : _Base(__x)
+      { __profcxx_map_to_unordered_map_construct(this); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      map(map&& __x)
+      : _Base(std::move(__x))
+      { }
+
+      map(initializer_list<value_type> __l,
+	  const _Compare& __c = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _Base(__l, __c, __a) { }
+#endif
+
+      ~map()
+      { __profcxx_map_to_unordered_map_destruct(this); }
+
+      map&
+      operator=(const map& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      map&
+      operator=(map&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 133. map missing get_allocator()
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator 
+      begin()
+      { return _Base::begin(); }
+
+      const_iterator
+      begin() const
+      { return _Base::begin(); }
+
+      iterator
+      end()
+      { return _Base::end(); }
+
+      const_iterator
+      end() const
+      { return _Base::end(); }
+
+      reverse_iterator
+      rbegin()
+      { 
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return reverse_iterator(end()); 
+      }
+
+      const_reverse_iterator
+      rbegin() const
+      {
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_reverse_iterator(end());
+      }
+
+      reverse_iterator
+      rend()
+      {
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return reverse_iterator(begin());
+      }
+
+      const_reverse_iterator
+      rend() const
+      {
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_reverse_iterator(begin());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin()); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end()); }
+
+      const_reverse_iterator
+      crbegin() const
+      {
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_reverse_iterator(end());
+      }
+
+      const_reverse_iterator
+      crend() const
+      {
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_reverse_iterator(begin());
+      }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // 23.3.1.2 element access:
+      mapped_type&
+      operator[](const key_type& __k)
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return _Base::operator[](__k);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      mapped_type&
+      operator[](key_type&& __k)
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return _Base::operator[](std::move(__k));
+      }
+#endif
+
+      mapped_type&
+      at(const key_type& __k)
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return _Base::at(__k);
+      }
+
+      const mapped_type&
+      at(const key_type& __k) const
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return _Base::at(__k);
+      }
+
+      // modifiers:
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      {
+        __profcxx_map_to_unordered_map_insert(this, size(), 1);
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
+	return std::pair<iterator, bool>(iterator(__res.first),
+					 __res.second);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        std::pair<iterator, bool>
+        insert(_Pair&& __x)
+        {
+	  __profcxx_map_to_unordered_map_insert(this, size(), 1);
+	  typedef typename _Base::iterator _Base_iterator;
+	  std::pair<_Base_iterator, bool> __res
+	    = _Base::insert(std::forward<_Pair>(__x));
+	  return std::pair<iterator, bool>(iterator(__res.first),
+					   __res.second);
+	}
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(std::initializer_list<value_type> __list)
+      { 
+        size_type size_before = size();
+        _Base::insert(__list); 
+        __profcxx_map_to_unordered_map_insert(this, size_before, 
+					      size() - size_before);
+      }
+#endif
+
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      {
+        size_type size_before = size();
+	iterator __i = iterator(_Base::insert(__position, __x));
+        __profcxx_map_to_unordered_map_insert(this, size_before, 
+					      size() - size_before);
+	return __i;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        {
+	  size_type size_before = size();
+	  iterator __i
+	    = iterator(_Base::insert(__position, std::forward<_Pair>(__x)));
+	  __profcxx_map_to_unordered_map_insert(this, size_before, 
+						size() - size_before);
+	  return __i;
+      }
+#endif
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        {
+          size_type size_before = size();
+	  _Base::insert(__first, __last);
+          __profcxx_map_to_unordered_map_insert(this, size_before, 
+                                                size() - size_before);
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      {
+	iterator __i = _Base::erase(__position);
+        __profcxx_map_to_unordered_map_erase(this, size(), 1);
+        return __i;
+      }
+#else
+      void
+      erase(iterator __position)
+      {
+	_Base::erase(__position);
+        __profcxx_map_to_unordered_map_erase(this, size(), 1);
+      }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	iterator __victim = find(__x);
+	if (__victim == end())
+	  return 0;
+	else
+	{
+	  _Base::erase(__victim);
+	  return 1;
+	}
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return iterator(_Base::erase(__first, __last)); }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      { _Base::erase(__first, __last); }
+#endif
+
+      void
+
+      swap(map& __x)
+      { _Base::swap(__x); }
+
+      void
+      clear()
+      { this->erase(begin(), end()); }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // 23.3.1.3 map operations:
+      iterator
+      find(const key_type& __x)
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return iterator(_Base::find(__x));
+      }
+
+      const_iterator
+      find(const key_type& __x) const
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return const_iterator(_Base::find(__x));
+      }
+
+      size_type
+      count(const key_type& __x) const
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+        return _Base::count(__x);
+      }
+
+      iterator
+      lower_bound(const key_type& __x)
+      { 
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return iterator(_Base::lower_bound(__x)); 
+      }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { 
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_iterator(_Base::lower_bound(__x)); 
+      }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { 
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return iterator(_Base::upper_bound(__x)); 
+      }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { 
+        __profcxx_map_to_unordered_map_invalidate(this);
+        return const_iterator(_Base::upper_bound(__x)); 
+      }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first),
+			      iterator(__res.second));
+      }
+
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+        __profcxx_map_to_unordered_map_find(this, size());
+	typedef typename _Base::const_iterator _Base_const_iterator;
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first),
+			      const_iterator(__res.second));
+      }
+
+      _Base& 
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    };
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { 
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() == __rhs._M_base(); 
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { 
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() != __rhs._M_base(); 
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    {
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() < __rhs._M_base(); 
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    {
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() <= __rhs._M_base();
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    {
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() >= __rhs._M_base();
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    {
+      __profcxx_map_to_unordered_map_invalidate(&__lhs);
+      __profcxx_map_to_unordered_map_invalidate(&__rhs);
+      return __lhs._M_base() > __rhs._M_base();
+    }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline void
+    swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	 map<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multimap.h
new file mode 100644
index 000000000..76ce805f3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multimap.h
@@ -0,0 +1,376 @@
+// Profiling multimap implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/multimap.h
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_MULTIMAP_H
+#define _GLIBCXX_PROFILE_MULTIMAP_H 1
+
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::multimap wrapper with performance instrumentation.
+  template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
+    class multimap
+    : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>
+    {
+      typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base;
+
+    public:
+      // types:
+      typedef _Key				     key_type;
+      typedef _Tp				     mapped_type;
+      typedef std::pair<const _Key, _Tp>             value_type;
+      typedef _Compare                               key_compare;
+      typedef _Allocator                             allocator_type;
+      typedef typename _Base::reference              reference;
+      typedef typename _Base::const_reference        const_reference;
+
+      typedef typename _Base::iterator               iterator;
+      typedef typename _Base::const_iterator         const_iterator;
+      typedef typename _Base::reverse_iterator       reverse_iterator;
+      typedef typename _Base::const_reverse_iterator const_reverse_iterator;
+
+      typedef typename _Base::size_type              size_type;
+      typedef typename _Base::difference_type        difference_type;
+      typedef typename _Base::pointer                pointer;
+      typedef typename _Base::const_pointer          const_pointer;
+
+      // 23.3.1.1 construct/copy/destroy:
+      explicit multimap(const _Compare& __comp = _Compare(),
+			const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+      multimap(_InputIterator __first, _InputIterator __last,
+	       const _Compare& __comp = _Compare(),
+	       const _Allocator& __a = _Allocator())
+      : _Base(__first, __last, __comp, __a) { }
+
+      multimap(const multimap& __x)
+      : _Base(__x) { }
+
+      multimap(const _Base& __x)
+      : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multimap(multimap&& __x)
+      : _Base(std::move(__x))
+      { }
+
+      multimap(initializer_list<value_type> __l,
+	       const _Compare& __c = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _Base(__l, __c, __a) { }
+#endif
+
+      ~multimap() { }
+
+      multimap&
+      operator=(const multimap& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multimap&
+      operator=(multimap&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin()); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin()); }
+
+      iterator
+      end()
+      { return iterator(_Base::end()); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end()); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin()); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end()); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      iterator
+      insert(const value_type& __x)
+      { return iterator(_Base::insert(__x)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(_Pair&& __x)
+        { return iterator(_Base::insert(std::forward<_Pair>(__x))); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(std::initializer_list<value_type> __list)
+      { _Base::insert(__list); }
+#endif
+
+      iterator
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      insert(const_iterator __position, const value_type& __x)
+#else
+      insert(iterator __position, const value_type& __x)
+#endif
+      { return iterator(_Base::insert(__position, __x)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __position, _Pair&& __x)
+        { return iterator(_Base::insert(__position,
+					std::forward<_Pair>(__x))); }
+#endif
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _Base::insert(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      { return iterator(_Base::erase(__position)); }
+#else
+      void
+      erase(iterator __position)
+      { _Base::erase(__position); }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	std::pair<iterator, iterator> __victims = this->equal_range(__x);
+	size_type __count = 0;
+	while (__victims.first != __victims.second)
+	{
+	  iterator __victim = __victims.first++;
+	  _Base::erase(__victim);
+	  ++__count;
+	}
+	return __count;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return iterator(_Base::erase(__first, __last)); }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      { _Base::erase(__first, __last); }
+#endif
+
+      void
+      swap(multimap& __x)
+      { _Base::swap(__x); }
+
+      void
+      clear()
+      { this->erase(begin(), end()); }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // 23.3.1.3 multimap operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x)); }
+
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x)); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x)); }
+
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x)); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x)); }
+
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x)); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first),
+			      iterator(__res.second));
+      }
+
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	typedef typename _Base::const_iterator _Base_const_iterator;
+	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
+	_Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first),
+			      const_iterator(__res.second));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+    };
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	       const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	      const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Tp,
+	   typename _Compare, typename _Allocator>
+    inline void
+    swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
+	 multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multiset.h
new file mode 100644
index 000000000..c6902a0fe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/multiset.h
@@ -0,0 +1,367 @@
+// Profiling multiset implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/multiset.h
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_MULTISET_H
+#define _GLIBCXX_PROFILE_MULTISET_H 1
+
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::multiset wrapper with performance instrumentation.
+  template<typename _Key, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<_Key> >
+    class multiset
+    : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>
+    {
+      typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base;
+
+    public:
+      // types:
+      typedef _Key				     key_type;
+      typedef _Key				     value_type;
+      typedef _Compare				     key_compare;
+      typedef _Compare				     value_compare;
+      typedef _Allocator			     allocator_type;
+      typedef typename _Base::reference	             reference;
+      typedef typename _Base::const_reference        const_reference;
+
+      typedef typename _Base::iterator               iterator;
+      typedef typename _Base::const_iterator         const_iterator;
+      typedef typename _Base::reverse_iterator       reverse_iterator;
+      typedef typename _Base::const_reverse_iterator const_reverse_iterator;
+
+      typedef typename _Base::size_type              size_type;
+      typedef typename _Base::difference_type        difference_type;
+      typedef typename _Base::pointer                pointer;
+      typedef typename _Base::const_pointer          const_pointer;
+
+      // 23.3.3.1 construct/copy/destroy:
+      explicit multiset(const _Compare& __comp = _Compare(),
+			const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+        multiset(_InputIterator __first, _InputIterator __last,
+		 const _Compare& __comp = _Compare(),
+		 const _Allocator& __a = _Allocator())
+	: _Base(__first, __last, __comp, __a) { }
+
+      multiset(const multiset& __x)
+      : _Base(__x) { }
+
+      multiset(const _Base& __x)
+      : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multiset(multiset&& __x)
+      : _Base(std::move(__x))
+      { }
+
+      multiset(initializer_list<value_type> __l,
+	       const _Compare& __comp = _Compare(),
+	       const allocator_type& __a = allocator_type())
+      : _Base(__l, __comp, __a) { }
+#endif
+
+      ~multiset() { }
+
+      multiset&
+      operator=(const multiset& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      multiset&
+      operator=(multiset&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin()); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin()); }
+
+      iterator
+      end()
+      { return iterator(_Base::end()); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end()); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin()); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end()); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      iterator
+      insert(const value_type& __x)
+      { return iterator(_Base::insert(__x)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(value_type&& __x)
+      { return iterator(_Base::insert(std::move(__x))); }
+#endif
+
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      { return iterator(_Base::insert(__position, __x)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      { return iterator(_Base::insert(__position, std::move(__x))); }
+#endif
+
+      template<typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _Base::insert(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      { return iterator(_Base::erase(__position)); }
+#else
+      void
+      erase(iterator __position)
+      { _Base::erase(__position); }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	std::pair<iterator, iterator> __victims = this->equal_range(__x);
+	size_type __count = 0;
+	while (__victims.first != __victims.second)
+	{
+	  iterator __victim = __victims.first++;
+	  _Base::erase(__victim);
+	  ++__count;
+	}
+	return __count;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return iterator(_Base::erase(__first, __last)); }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      { _Base::erase(__first, __last); }
+#endif
+
+      void
+      swap(multiset& __x)
+      { _Base::swap(__x); }
+
+      void
+      clear()
+      { this->erase(begin(), end()); }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // multiset operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x)); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x)); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x)); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first),
+			      iterator(__res.second));
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	typedef typename _Base::const_iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first),
+			      const_iterator(__res.second));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    };
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	      const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	       const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const multiset<_Key, _Compare, _Allocator>& __lhs,
+	      const multiset<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    void
+    swap(multiset<_Key, _Compare, _Allocator>& __x,
+	 multiset<_Key, _Compare, _Allocator>& __y)
+    { return __x.swap(__y); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set
new file mode 100644
index 000000000..11603a848
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set
@@ -0,0 +1,41 @@
+// Profiling set/multiset implementation -*- C++ -*-
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/set
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_SET
+#define _GLIBCXX_PROFILE_SET 1
+
+#include <set>
+#include <profile/set.h>
+#include <profile/multiset.h>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set.h
new file mode 100644
index 000000000..d10a11f2e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/set.h
@@ -0,0 +1,377 @@
+// Profiling set implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file profile/set.h
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_SET_H
+#define _GLIBCXX_PROFILE_SET_H 1
+
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default) 
+{
+namespace __profile
+{
+  /// Class std::set wrapper with performance instrumentation.
+  template<typename _Key, typename _Compare = std::less<_Key>,
+	   typename _Allocator = std::allocator<_Key> >
+    class set
+    : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>
+    {
+      typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base;
+
+    public:
+      // types:
+      typedef _Key				    key_type;
+      typedef _Key				    value_type;
+      typedef _Compare				    key_compare;
+      typedef _Compare				    value_compare;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef typename _Base::iterator               iterator;
+      typedef typename _Base::const_iterator         const_iterator;
+      typedef typename _Base::reverse_iterator       reverse_iterator;
+      typedef typename _Base::const_reverse_iterator const_reverse_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+
+      // 23.3.3.1 construct/copy/destroy:
+      explicit set(const _Compare& __comp = _Compare(),
+		   const _Allocator& __a = _Allocator())
+      : _Base(__comp, __a) { }
+
+      template<typename _InputIterator>
+        set(_InputIterator __first, _InputIterator __last,
+	    const _Compare& __comp = _Compare(),
+	    const _Allocator& __a = _Allocator())
+	: _Base(__first, __last, __comp, __a) { }
+
+      set(const set& __x)
+      : _Base(__x) { }
+
+      set(const _Base& __x)
+      : _Base(__x) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      set(set&& __x)
+      : _Base(std::move(__x))
+      { }
+
+      set(initializer_list<value_type> __l,
+	  const _Compare& __comp = _Compare(),
+	  const allocator_type& __a = allocator_type())
+      : _Base(__l, __comp, __a) { }
+#endif
+
+      ~set() { }
+
+      set&
+      operator=(const set& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      set&
+      operator=(set&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+#endif
+
+      using _Base::get_allocator;
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin()); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin()); }
+
+      iterator
+      end()
+      { return iterator(_Base::end()); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end()); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin()); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end()); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // capacity:
+      using _Base::empty;
+      using _Base::size;
+      using _Base::max_size;
+
+      // modifiers:
+      std::pair<iterator, bool>
+      insert(const value_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
+	return std::pair<iterator, bool>(iterator(__res.first),
+					 __res.second);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      std::pair<iterator, bool>
+      insert(value_type&& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, bool> __res
+	  = _Base::insert(std::move(__x));
+	return std::pair<iterator, bool>(iterator(__res.first),
+					 __res.second);
+      }
+#endif
+
+      iterator
+      insert(const_iterator __position, const value_type& __x)
+      { return iterator(_Base::insert(__position, __x)); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(const_iterator __position, value_type&& __x)
+      { return iterator(_Base::insert(__position, std::move(__x))); }
+#endif
+
+      template <typename _InputIterator>
+        void
+        insert(_InputIterator __first, _InputIterator __last)
+        { _Base::insert(__first, __last); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      insert(initializer_list<value_type> __l)
+      { _Base::insert(__l); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __position)
+      { return iterator(_Base::erase(__position)); }
+#else
+      void
+      erase(iterator __position)
+      { _Base::erase(__position); }
+#endif
+
+      size_type
+      erase(const key_type& __x)
+      {
+	iterator __victim = find(__x);
+	if (__victim == end())
+          return 0;
+	else
+        {
+	  _Base::erase(__victim);
+	  return 1;
+        }
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      erase(const_iterator __first, const_iterator __last)
+      { return iterator(_Base::erase(__first, __last)); }
+#else
+      void
+      erase(iterator __first, iterator __last)
+      { _Base::erase(__first, __last); }
+#endif
+
+      void
+      swap(set& __x)
+      { _Base::swap(__x); }
+
+      void
+      clear()
+      { this->erase(begin(), end()); }
+
+      // observers:
+      using _Base::key_comp;
+      using _Base::value_comp;
+
+      // set operations:
+      iterator
+      find(const key_type& __x)
+      { return iterator(_Base::find(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      find(const key_type& __x) const
+      { return const_iterator(_Base::find(__x)); }
+
+      using _Base::count;
+
+      iterator
+      lower_bound(const key_type& __x)
+      { return iterator(_Base::lower_bound(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      lower_bound(const key_type& __x) const
+      { return const_iterator(_Base::lower_bound(__x)); }
+
+      iterator
+      upper_bound(const key_type& __x)
+      { return iterator(_Base::upper_bound(__x)); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      const_iterator
+      upper_bound(const key_type& __x) const
+      { return const_iterator(_Base::upper_bound(__x)); }
+
+      std::pair<iterator,iterator>
+      equal_range(const key_type& __x)
+      {
+	typedef typename _Base::iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(iterator(__res.first),
+			      iterator(__res.second));
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 214. set::find() missing const overload
+      std::pair<const_iterator,const_iterator>
+      equal_range(const key_type& __x) const
+      {
+	typedef typename _Base::const_iterator _Base_iterator;
+	std::pair<_Base_iterator, _Base_iterator> __res =
+        _Base::equal_range(__x);
+	return std::make_pair(const_iterator(__res.first),
+			      const_iterator(__res.second));
+      }
+
+      _Base&
+      _M_base() { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+    };
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator==(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator!=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<(const set<_Key, _Compare, _Allocator>& __lhs,
+	      const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator<=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>=(const set<_Key, _Compare, _Allocator>& __lhs,
+	       const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    inline bool
+    operator>(const set<_Key, _Compare, _Allocator>& __lhs,
+	      const set<_Key, _Compare, _Allocator>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Key, typename _Compare, typename _Allocator>
+    void
+    swap(set<_Key, _Compare, _Allocator>& __x,
+	 set<_Key, _Compare, _Allocator>& __y)
+    { return __x.swap(__y); }
+
+} // namespace __profile
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_map
new file mode 100644
index 000000000..cc54009e3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_map
@@ -0,0 +1,576 @@
+// Profiling unordered_map/unordered_multimap implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/unordered_map
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_UNORDERED_MAP
+#define _GLIBCXX_PROFILE_UNORDERED_MAP 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+# include <unordered_map>
+
+#include <profile/base.h>
+
+#define _GLIBCXX_BASE unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>
+#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /// Class std::unordered_map wrapper with performance instrumentation.
+  template<typename _Key, typename _Tp,
+	   typename _Hash  = std::hash<_Key>,
+	   typename _Pred = std::equal_to<_Key>,
+	   typename _Alloc =  std::allocator<_Key> >
+    class unordered_map
+    : public _GLIBCXX_STD_BASE
+    {
+      typedef typename _GLIBCXX_STD_BASE _Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::difference_type difference_type;
+      typedef typename _Base::reference       reference;
+      typedef typename _Base::const_reference const_reference;
+      typedef typename _Base::mapped_type      mapped_type;
+
+      typedef typename _Base::iterator iterator;
+      typedef typename _Base::const_iterator const_iterator;
+
+      explicit
+      unordered_map(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      template<typename _InputIterator>
+        unordered_map(_InputIterator __f, _InputIterator __l,
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__f, __l, __n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_map(const _Base& __x)
+      : _Base(__x) 
+      { 
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_map(unordered_map&& __x)
+      : _Base(std::move(__x)) 
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_map(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a) { }
+
+      unordered_map&
+      operator=(const unordered_map& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+      unordered_map&
+      operator=(unordered_map&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      unordered_map&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      ~unordered_map()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(),
+				     _Base::size());
+        _M_profile_destruct();
+      }
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+
+      void
+      clear()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(),
+				     _Base::size());
+        _M_profile_destruct();
+        _Base::clear();
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { 
+        size_type __old_size = _Base::bucket_count(); 
+        _Base::insert(__l);
+        _M_profile_resize(__old_size); 
+      }
+
+      std::pair<iterator, bool>
+      insert(const value_type& __obj)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        std::pair<iterator, bool> __res = _Base::insert(__obj);
+        _M_profile_resize(__old_size); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, const value_type& __v)
+      { 
+        size_type __old_size = _Base::bucket_count(); 
+        iterator __res = _Base::insert(__iter, __v);
+        _M_profile_resize(__old_size); 
+        return __res;
+      }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        std::pair<iterator, bool>
+        insert(_Pair&& __obj)
+        {
+	  size_type __old_size =  _Base::bucket_count();
+	  std::pair<iterator, bool> __res
+	    = _Base::insert(std::forward<_Pair>(__obj));
+	  _M_profile_resize(__old_size); 
+	  return __res;
+	}
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __iter, _Pair&& __v)
+        { 
+	  size_type __old_size = _Base::bucket_count(); 
+	  iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v));
+	  _M_profile_resize(__old_size); 
+	  return __res;
+	}
+
+      template<typename _InputIter>
+        void
+        insert(_InputIter __first, _InputIter __last)
+        {
+	  size_type __old_size = _Base::bucket_count(); 
+	  _Base::insert(__first, __last);
+	  _M_profile_resize(__old_size); 
+	}
+
+      void
+      insert(const value_type* __first, const value_type* __last)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        _Base::insert(__first, __last);
+        _M_profile_resize(__old_size); 
+      }
+
+      // operator[]
+      mapped_type&
+      operator[](const _Key& __k)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        mapped_type& __res = _M_base()[__k];
+        _M_profile_resize(__old_size); 
+        return __res;
+      }
+
+      mapped_type&
+      operator[](_Key&& __k)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        mapped_type& __res = _M_base()[std::move(__k)];
+        _M_profile_resize(__old_size); 
+        return __res;
+      }
+
+      void
+      swap(unordered_map& __x)
+      { _Base::swap(__x); }
+
+      void rehash(size_type __n)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        _Base::rehash(__n);
+        _M_profile_resize(__old_size); 
+      }
+
+    private:
+      void
+      _M_profile_resize(size_type __old_size)
+      {
+	size_type __new_size = _Base::bucket_count();
+        if (__old_size != __new_size)
+	  __profcxx_hashtable_resize(this, __old_size, __new_size);
+      }
+
+      void
+      _M_profile_destruct()
+      {
+        size_type __hops = 0, __lc = 0, __chain = 0;
+        for (iterator __it = _M_base().begin(); __it != _M_base().end();
+	     ++__it)
+	  {
+	    while (__it._M_cur_node->_M_next)
+	      {
+		++__chain;
+		++__it;
+	      }
+	    if (__chain)
+	      {
+		++__chain;
+		__lc = __lc > __chain ? __lc : __chain;  
+		__hops += __chain * (__chain - 1) / 2;
+		__chain = 0;
+	      }
+	  }
+        __profcxx_hashtable_destruct2(this, __lc,  _Base::size(), __hops); 
+      }
+   };
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+#undef _GLIBCXX_BASE
+#undef _GLIBCXX_STD_BASE
+#define _GLIBCXX_BASE unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>
+#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+
+  /// Class std::unordered_multimap wrapper with performance instrumentation.
+  template<typename _Key, typename _Tp,
+	   typename _Hash  = std::hash<_Key>,
+	   typename _Pred = std::equal_to<_Key>,
+	   typename _Alloc =  std::allocator<_Key> >
+    class unordered_multimap
+    : public _GLIBCXX_STD_BASE
+    {      
+      typedef typename _GLIBCXX_STD_BASE _Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::difference_type difference_type;
+      typedef typename _Base::reference       reference;
+      typedef typename _Base::const_reference const_reference;
+
+      typedef typename _Base::iterator iterator;
+      typedef typename _Base::const_iterator const_iterator;
+
+      explicit
+      unordered_multimap(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+      template<typename _InputIterator>
+        unordered_multimap(_InputIterator __f, _InputIterator __l,
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__f, __l, __n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multimap(const _Base& __x)
+      : _Base(__x)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multimap(unordered_multimap&& __x)
+      : _Base(std::move(__x))
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multimap(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a) { }
+
+      unordered_multimap&
+      operator=(const unordered_multimap& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+      unordered_multimap&
+      operator=(unordered_multimap&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      unordered_multimap&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      ~unordered_multimap()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+				     _Base::size());
+        _M_profile_destruct();
+      }
+
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+
+      void
+      clear()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+				     _Base::size());
+        _M_profile_destruct();
+        _Base::clear();
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { 
+        size_type __old_size =  _Base::bucket_count();
+        _Base::insert(__l);
+        _M_profile_resize(__old_size, _Base::bucket_count());
+      }
+
+      iterator
+      insert(const value_type& __obj)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        iterator __res = _Base::insert(__obj);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, const value_type& __v)
+      { 
+        size_type __old_size = _Base::bucket_count(); 
+        iterator __res = _Base::insert(__iter, __v);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(_Pair&& __obj)
+        {
+	  size_type __old_size =  _Base::bucket_count();
+	  iterator __res = _Base::insert(std::forward<_Pair>(__obj));
+	  _M_profile_resize(__old_size, _Base::bucket_count()); 
+	  return __res;
+	}
+
+      template<typename _Pair, typename = typename
+	       std::enable_if<std::is_convertible<_Pair,
+						  value_type>::value>::type>
+        iterator
+        insert(const_iterator __iter, _Pair&& __v)
+        {
+	  size_type __old_size = _Base::bucket_count(); 
+	  iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v));
+	  _M_profile_resize(__old_size, _Base::bucket_count()); 
+	  return __res;
+	}
+
+      template<typename _InputIter>
+        void
+        insert(_InputIter __first, _InputIter __last)
+        {
+	  size_type __old_size = _Base::bucket_count(); 
+	  _Base::insert(__first, __last);
+	  _M_profile_resize(__old_size, _Base::bucket_count()); 
+	}
+
+      void
+      insert(const value_type* __first, const value_type* __last)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        _Base::insert(__first, __last);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+      }
+
+      void
+      swap(unordered_multimap& __x)
+      { _Base::swap(__x); }
+
+      void rehash(size_type __n)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        _Base::rehash(__n);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+      }
+
+    private:
+      void
+      _M_profile_resize(size_type __old_size, size_type __new_size)
+      {
+        if (__old_size != __new_size)
+          __profcxx_hashtable_resize(this, __old_size, __new_size);
+      }
+
+      void
+      _M_profile_destruct()
+      {
+        size_type __hops = 0, __lc = 0, __chain = 0;
+        for (iterator __it = _M_base().begin(); __it != _M_base().end();
+	     ++__it)
+	  {
+	    while (__it._M_cur_node->_M_next)
+	      {
+		++__chain;
+		++__it;
+	      }
+	    if (__chain)
+	      {
+		++__chain;
+		__lc = __lc > __chain ? __lc : __chain;
+		__hops += __chain * (__chain - 1) / 2;
+		__chain = 0;
+	      }
+	  }
+        __profcxx_hashtable_destruct2(this, __lc,  _Base::size(), __hops);
+      }
+
+    };
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Key, typename _Tp, typename _Hash,
+	   typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+} // namespace __profile
+} // namespace std
+
+#undef _GLIBCXX_BASE
+#undef _GLIBCXX_STD_BASE
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_set
new file mode 100644
index 000000000..547fb764d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/unordered_set
@@ -0,0 +1,542 @@
+// Profiling unordered_set/unordered_multiset implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/unordered_set
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_UNORDERED_SET
+#define _GLIBCXX_PROFILE_UNORDERED_SET 1
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+# include <unordered_set>
+
+#include <profile/base.h>
+
+#define _GLIBCXX_BASE unordered_set<_Key, _Hash, _Pred, _Alloc>
+#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  /** @brief Unordered_set wrapper with performance instrumentation.  */
+  template<typename _Key, 
+	   typename _Hash  = std::hash<_Key>,
+	   typename _Pred = std::equal_to<_Key>,
+	   typename _Alloc =  std::allocator<_Key> >
+    class unordered_set
+    : public _GLIBCXX_STD_BASE
+    {
+      typedef typename _GLIBCXX_STD_BASE _Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::difference_type difference_type;
+      typedef typename _Base::reference       reference;
+      typedef typename _Base::const_reference const_reference;
+
+      typedef typename _Base::iterator iterator;
+      typedef typename _Base::const_iterator const_iterator;
+
+      explicit
+      unordered_set(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      template<typename _InputIterator>
+        unordered_set(_InputIterator __f, _InputIterator __l,
+		      size_type __n = 0,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__f, __l, __n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_set(const _Base& __x)
+      : _Base(__x) 
+      { 
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_set(unordered_set&& __x)
+      : _Base(std::move(__x)) 
+      { 
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+        __profcxx_hashtable_construct2(this);
+      }
+
+      unordered_set(initializer_list<value_type> __l,
+		    size_type __n = 0,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a) { }
+
+      unordered_set&
+      operator=(const unordered_set& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+      unordered_set&
+      operator=(unordered_set&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      unordered_set&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      ~unordered_set()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                     _Base::size());
+        _M_profile_destruct();
+      }
+
+      void
+      swap(unordered_set& __x)
+      {
+        _Base::swap(__x);
+      }
+
+      void
+      clear()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                     _Base::size());
+        _M_profile_destruct();
+        _Base::clear();
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { 
+        size_type __old_size =  _Base::bucket_count();
+        _Base::insert(__l); 
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+
+      std::pair<iterator, bool>
+      insert(const value_type& __obj)
+      {
+        size_type __old_size = _Base::bucket_count();
+        std::pair<iterator, bool> __res = _Base::insert(__obj);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, const value_type& __v)
+      { 
+        size_type __old_size = _Base::bucket_count(); 
+        iterator __res = _Base::insert(__iter, __v);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      std::pair<iterator, bool>
+      insert(value_type&& __obj)
+      {
+        size_type __old_size = _Base::bucket_count();
+        std::pair<iterator, bool> __res = _Base::insert(std::move(__obj));
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, value_type&& __v)
+      { 
+        size_type __old_size = _Base::bucket_count();
+        iterator __res = _Base::insert(__iter, std::move(__v));
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      template<typename _InputIter>
+        void
+        insert(_InputIter __first, _InputIter __last)
+        {
+	  size_type __old_size = _Base::bucket_count(); 
+	  _Base::insert(__first, __last);
+	  _M_profile_resize(__old_size,  _Base::bucket_count()); 
+	}
+
+      void
+      insert(const value_type* __first, const value_type* __last)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        _Base::insert(__first, __last);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+     
+      void rehash(size_type __n)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        _Base::rehash(__n);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+
+    private:
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+      void
+      _M_profile_resize(size_type __old_size, size_type __new_size)
+      {
+        if (__old_size != __new_size)
+	  __profcxx_hashtable_resize(this, __old_size, __new_size);
+      }
+
+      void
+      _M_profile_destruct()
+      {
+        size_type __hops = 0, __lc = 0, __chain = 0;
+        for (iterator __it = _M_base().begin(); __it != _M_base().end();
+	     ++__it)
+        {
+          while (__it._M_cur_node->_M_next)
+	    {
+	      ++__chain;
+	      ++__it;
+	    }
+
+          if (__chain)
+	    {
+	      ++__chain;
+	      __lc = __lc > __chain ? __lc : __chain;
+	      __hops += __chain * (__chain - 1) / 2;
+	      __chain = 0;
+	    }
+        }
+        __profcxx_hashtable_destruct2(this, __lc,  _Base::size(), __hops);
+      }
+
+   };
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+#undef _GLIBCXX_BASE
+#undef _GLIBCXX_STD_BASE
+#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+#define _GLIBCXX_BASE unordered_multiset<_Value, _Hash, _Pred, _Alloc>
+
+  /** @brief Unordered_multiset wrapper with performance instrumentation.  */
+  template<typename _Value,
+       typename _Hash  = std::hash<_Value>,
+       typename _Pred = std::equal_to<_Value>,
+       typename _Alloc =  std::allocator<_Value> >
+    class unordered_multiset
+    : public _GLIBCXX_STD_BASE
+    {
+      typedef typename _GLIBCXX_STD_BASE _Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+      typedef typename _Base::key_type        key_type;
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::difference_type difference_type;
+      typedef typename _Base::reference       reference;
+      typedef typename _Base::const_reference const_reference;
+
+      typedef typename _Base::iterator iterator;
+      typedef typename _Base::const_iterator const_iterator;
+
+      explicit
+      unordered_multiset(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      template<typename _InputIterator>
+        unordered_multiset(_InputIterator __f, _InputIterator __l,
+			   size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__f, __l, __n, __hf, __eql, __a)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multiset(const _Base& __x)
+      : _Base(__x)
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multiset(unordered_multiset&& __x)
+      : _Base(std::move(__x))
+      {
+        __profcxx_hashtable_construct(this, _Base::bucket_count());
+      }
+
+      unordered_multiset(initializer_list<value_type> __l,
+			 size_type __n = 0,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__l, __n, __hf, __eql, __a) { }
+
+      unordered_multiset&
+      operator=(const unordered_multiset& __x)
+      {
+	*static_cast<_Base*>(this) = __x;
+	return *this;
+      }
+
+      unordered_multiset&
+      operator=(unordered_multiset&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      unordered_multiset&
+      operator=(initializer_list<value_type> __l)
+      {
+	this->clear();
+	this->insert(__l);
+	return *this;
+      }
+
+      ~unordered_multiset()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                     _Base::size());
+        _M_profile_destruct();
+      }
+
+      void
+      swap(unordered_multiset& __x)
+      {
+        _Base::swap(__x);
+      }
+
+      void
+      clear()
+      {
+        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                     _Base::size());
+        _M_profile_destruct();
+        _Base::clear();
+      }
+
+      void
+      insert(std::initializer_list<value_type> __l)
+      { 
+        size_type __old_size =  _Base::bucket_count();
+        _Base::insert(__l); 
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+
+      iterator
+      insert(const value_type& __obj)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        iterator __res = _Base::insert(__obj);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, const value_type& __v)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        iterator __res = _Base::insert(__iter, __v);
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(value_type&& __obj)
+      {
+	size_type __old_size =  _Base::bucket_count();
+        iterator __res = _Base::insert(std::move(__obj));
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+        return __res;
+      }
+
+      iterator
+      insert(const_iterator __iter, value_type&& __v)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        iterator __res = _Base::insert(__iter, std::move(__v));
+        _M_profile_resize(__old_size, _Base::bucket_count()); 
+        return __res;
+      }
+
+      template<typename _InputIter>
+        void
+        insert(_InputIter __first, _InputIter __last)
+        {
+	  size_type __old_size = _Base::bucket_count(); 
+	  _Base::insert(__first, __last);
+	  _M_profile_resize(__old_size,  _Base::bucket_count()); 
+	}
+
+      void
+      insert(const value_type* __first, const value_type* __last)
+      {
+        size_type __old_size = _Base::bucket_count(); 
+        _Base::insert(__first, __last);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+     
+      void rehash(size_type __n)
+      {
+        size_type __old_size =  _Base::bucket_count();
+        _Base::rehash(__n);
+        _M_profile_resize(__old_size,  _Base::bucket_count()); 
+      }
+
+    private:
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+      void
+      _M_profile_resize(size_type __old_size, size_type __new_size)
+      {
+        if (__old_size != __new_size)
+          __profcxx_hashtable_resize(this, __old_size, __new_size);
+      }
+
+      void
+      _M_profile_destruct()
+      {
+        size_type __hops = 0, __lc = 0, __chain = 0;
+        for (iterator __it = _M_base().begin(); __it != _M_base().end();
+	     ++__it)
+        {
+          while (__it._M_cur_node->_M_next)
+	    {
+             ++__chain;
+             ++__it;
+	    }
+
+          if (__chain)
+	    {
+	      ++__chain;
+	      __lc = __lc > __chain ? __lc : __chain;
+	      __hops += __chain * (__chain - 1) / 2;
+	      __chain = 0;
+	    }
+        }
+        __profcxx_hashtable_destruct2(this, __lc,  _Base::size(), __hops);
+      }
+
+   };
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline void
+    swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return __x._M_equal(__y); }
+
+  template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+    inline bool
+    operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { return !(__x == __y); }
+
+} // namespace __profile
+} // namespace std
+
+#undef _GLIBCXX_BASE
+#undef _GLIBCXX_STD_BASE
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/vector b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/vector
new file mode 100644
index 000000000..f8a9622e8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/profile/vector
@@ -0,0 +1,519 @@
+// Profiling vector implementation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file profile/vector
+ *  This file is a GNU profile extension to the Standard C++ Library.
+ */
+
+#ifndef _GLIBCXX_PROFILE_VECTOR
+#define _GLIBCXX_PROFILE_VECTOR 1
+
+#include <vector>
+#include <utility>
+#include <profile/base.h>
+#include <profile/iterator_tracker.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace __profile
+{
+  template<typename _Tp,
+	   typename _Allocator = std::allocator<_Tp> >
+    class vector
+    : public _GLIBCXX_STD_C::vector<_Tp, _Allocator>
+    {
+      typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base;
+
+    public:
+      typedef typename _Base::reference             reference;
+      typedef typename _Base::const_reference       const_reference;
+
+      typedef __iterator_tracker<typename _Base::iterator, vector>
+                                                    iterator;
+      typedef __iterator_tracker<typename _Base::const_iterator, vector>
+				                    const_iterator;
+
+      typedef typename _Base::size_type             size_type;
+      typedef typename _Base::difference_type       difference_type;
+
+      typedef _Tp				    value_type;
+      typedef _Allocator			    allocator_type;
+      typedef typename _Base::pointer               pointer;
+      typedef typename _Base::const_pointer         const_pointer;
+      typedef std::reverse_iterator<iterator>       reverse_iterator;
+      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+      
+      _Base&
+      _M_base()       { return *this; }
+
+      const _Base&
+      _M_base() const { return *this; }
+
+      // 23.2.4.1 construct/copy/destroy:
+      explicit
+      vector(const _Allocator& __a = _Allocator())
+      : _Base(__a)
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+      vector(size_type __n)
+      :  _Base(__n)
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+      vector(size_type __n, const _Tp& __value,
+	     const _Allocator& __a = _Allocator())
+      :  _Base(__n, __value, __a)
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+#else
+      explicit
+      vector(size_type __n, const _Tp& __value = _Tp(),
+	     const _Allocator& __a = _Allocator())
+      :  _Base(__n, __value, __a)
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+#endif
+
+      template<class _InputIterator>
+        vector(_InputIterator __first, _InputIterator __last,
+	       const _Allocator& __a = _Allocator())
+	: _Base(__first, __last, __a)
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+      vector(const vector& __x)
+      : _Base(__x) 
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+      /// Construction from a release-mode vector
+      vector(const _Base& __x)
+      : _Base(__x) 
+      { 
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      vector(vector&& __x)
+      : _Base(std::move(__x))
+      {
+        __profcxx_vector_construct(this, this->capacity());
+        __profcxx_vector_construct2(this);
+      }
+
+      vector(initializer_list<value_type> __l,
+	     const allocator_type& __a = allocator_type())
+      : _Base(__l, __a) { }
+#endif
+
+      ~vector() {
+        __profcxx_vector_destruct(this, this->capacity(), this->size());
+        __profcxx_vector_destruct2(this);
+      }
+
+      vector&
+      operator=(const vector& __x)
+      {
+        static_cast<_Base&>(*this) = __x;
+        return *this;
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      vector&
+      operator=(vector&& __x)
+      {
+	// NB: DR 1204.
+	// NB: DR 675.
+	this->clear();
+	this->swap(__x);
+	return *this;
+      }
+
+      vector&
+      operator=(initializer_list<value_type> __l)
+      {
+	static_cast<_Base&>(*this) = __l;
+	return *this;
+      }
+#endif
+
+      using _Base::assign;
+      using _Base::get_allocator;
+
+
+      // iterators:
+      iterator
+      begin()
+      { return iterator(_Base::begin(), this); }
+
+      const_iterator
+      begin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      iterator
+      end()
+      { return iterator(_Base::end(), this); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_Base::end(), this); }
+
+      reverse_iterator
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const_iterator
+      cbegin() const
+      { return const_iterator(_Base::begin(), this); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(_Base::end(), this); }
+
+      const_reverse_iterator
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator
+      crend() const
+      { return const_reverse_iterator(begin()); }
+#endif
+
+      // 23.2.4.2 capacity:
+      using _Base::size;
+      using _Base::max_size;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      resize(size_type __sz)
+      {
+        __profcxx_vector_invalid_operator(this);
+        _M_profile_resize(this, this->capacity(), __sz);
+        _Base::resize(__sz);
+      }
+
+      void
+      resize(size_type __sz, const _Tp& __c)
+      {
+        __profcxx_vector_invalid_operator(this);
+        _M_profile_resize(this, this->capacity(), __sz);
+        _Base::resize(__sz, __c);
+      }
+#else
+      void
+      resize(size_type __sz, _Tp __c = _Tp())
+      {
+        __profcxx_vector_invalid_operator(this);
+        _M_profile_resize(this, this->capacity(), __sz);
+        _Base::resize(__sz, __c);
+      }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      using _Base::shrink_to_fit;
+#endif
+
+      using _Base::empty;
+
+      // element access:
+      reference
+      operator[](size_type __n)
+      {
+        __profcxx_vector_invalid_operator(this);
+        return _M_base()[__n];
+      }
+      const_reference
+      operator[](size_type __n) const
+      {
+        __profcxx_vector_invalid_operator(this);
+        return _M_base()[__n];
+      }
+
+      using _Base::at;
+
+      reference
+      front()
+      { 
+        return _Base::front();
+      }
+
+      const_reference
+      front() const
+      {
+	return _Base::front();
+      }
+
+      reference
+      back()
+      {
+	return _Base::back();
+      }
+
+      const_reference
+      back() const
+      {
+	return _Base::back();
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 464. Suggestion for new member functions in standard containers.
+      using _Base::data;
+
+      // 23.2.4.3 modifiers:
+      void
+      push_back(const _Tp& __x)
+      {
+        size_type __old_size = this->capacity();
+	_Base::push_back(__x);
+        _M_profile_resize(this, __old_size, this->capacity());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      push_back(_Tp&& __x)
+      {
+        size_type __old_size = this->capacity();
+        _Base::push_back(__x);
+        _M_profile_resize(this, __old_size, this->capacity());
+      }
+
+#endif
+
+      iterator
+      insert(iterator __position, const _Tp& __x)
+      {
+        __profcxx_vector_insert(this, __position.base() - _Base::begin(),
+                                this->size());
+        size_type __old_size = this->capacity();
+	typename _Base::iterator __res = _Base::insert(__position.base(), __x);
+        _M_profile_resize(this, __old_size, this->capacity());
+	return iterator(__res, this);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      iterator
+      insert(iterator __position, _Tp&& __x)
+      {
+        __profcxx_vector_insert(this, __position.base() - _Base::begin(),
+                                this->size());
+        size_type __old_size = this->capacity();
+	typename _Base::iterator __res = _Base::insert(__position.base(), __x);
+        _M_profile_resize(this, __old_size, this->capacity());
+	return iterator(__res, this);
+      }
+
+      void
+      insert(iterator __position, initializer_list<value_type> __l)
+      { this->insert(__position, __l.begin(), __l.end()); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      swap(vector&& __x)
+      {
+        _Base::swap(__x);
+      }
+#endif
+
+      void
+      swap(vector& __x)
+      {
+        _Base::swap(__x);
+      }
+
+      void
+      insert(iterator __position, size_type __n, const _Tp& __x)
+      {
+        __profcxx_vector_insert(this, __position.base() - _Base::begin(),
+                                this->size());
+        size_type __old_size = this->capacity();
+        _Base::insert(__position, __n, __x);
+        _M_profile_resize(this, __old_size, this->capacity());
+      }
+
+      template<class _InputIterator>
+      void
+      insert(iterator __position,
+             _InputIterator __first, _InputIterator __last)
+      {
+        __profcxx_vector_insert(this, __position.base()-_Base::begin(),
+                                this->size());
+        size_type __old_size = this->capacity();
+        _Base::insert(__position, __first, __last);
+        _M_profile_resize(this, __old_size, this->capacity());
+      }
+
+
+      iterator
+      erase(iterator __position)
+      {
+	typename _Base::iterator __res = _Base::erase(__position.base());
+	return iterator(__res, this);
+      }
+
+      iterator
+      erase(iterator __first, iterator __last)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 151. can't currently clear() empty container
+	typename _Base::iterator __res = _Base::erase(__first.base(),
+                                                      __last.base());
+	return iterator(__res, this);
+      }
+
+      void
+      clear()
+      {
+        __profcxx_vector_destruct(this, this->capacity(), this->size());
+        __profcxx_vector_destruct2(this);
+        _Base::clear();
+      }
+
+      inline void _M_profile_find() const 
+      { 
+        __profcxx_vector_find(this, size()); 
+      }
+
+      inline void _M_profile_iterate(int __rewind = 0) const 
+      { 
+        __profcxx_vector_iterate(this); 
+      }
+
+    private:
+      void _M_profile_resize(void* obj, size_type __old_size, 
+                             size_type __new_size)
+      {
+        if (__old_size < __new_size) {
+          __profcxx_vector_resize(this, this->size(), __new_size);
+          __profcxx_vector_resize2(this, this->size(), __new_size);
+        }
+      }
+    };
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator==(const vector<_Tp, _Alloc>& __lhs,
+           const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() == __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator!=(const vector<_Tp, _Alloc>& __lhs,
+           const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() != __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<(const vector<_Tp, _Alloc>& __lhs,
+          const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() < __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator<=(const vector<_Tp, _Alloc>& __lhs,
+           const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() <= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>=(const vector<_Tp, _Alloc>& __lhs,
+           const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() >= __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline bool
+    operator>(const vector<_Tp, _Alloc>& __lhs,
+          const vector<_Tp, _Alloc>& __rhs)
+    { return __lhs._M_base() > __rhs._M_base(); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(vector<_Tp, _Alloc>&& __lhs, vector<_Tp, _Alloc>& __rhs)
+    { __lhs.swap(__rhs); }
+
+  template<typename _Tp, typename _Alloc>
+    inline void
+    swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>&& __rhs)
+    { __lhs.swap(__rhs); }
+#endif
+
+} // namespace __profile
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // DR 1182.
+  /// std::hash specialization for vector<bool>.
+  template<typename _Alloc>
+    struct hash<__profile::vector<bool, _Alloc>>
+    : public __hash_base<size_t, __profile::vector<bool, _Alloc>>
+    {
+      size_t
+      operator()(const __profile::vector<bool, _Alloc>& __b) const
+      { return std::hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>()
+	  (__b._M_base()); }
+    };
+#endif
+
+} // namespace std
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/algorithm b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/algorithm
new file mode 100644
index 000000000..7449ec3c9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/algorithm
@@ -0,0 +1,69 @@
+// <algorithm> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/algorithm
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_ALGORITHM
+#define _GLIBCXX_ALGORITHM 1
+
+#pragma GCC system_header
+
+#include <utility> // UK-300.
+#include <bits/stl_algobase.h>
+#include <bits/stl_algo.h>
+
+#ifdef _GLIBCXX_PARALLEL
+# include <parallel/algorithm>
+#endif
+
+#endif /* _GLIBCXX_ALGORITHM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/array b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/array
new file mode 100644
index 000000000..a0bdd24a8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/array
@@ -0,0 +1,274 @@
+// <array> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/array
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_ARRAY
+#define _GLIBCXX_ARRAY 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/stl_algobase.h>
+#include <bits/range_access.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief A standard container for storing a fixed size sequence of elements.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>.
+   *
+   *  Sets support random access iterators.
+   *
+   *  @param  Tp  Type of element. Required to be a complete type.
+   *  @param  N  Number of elements.
+  */
+  template<typename _Tp, std::size_t _Nm>
+    struct array
+    {
+      typedef _Tp 	    			      value_type;
+      typedef _Tp*                                    pointer;
+      typedef const _Tp*                              const_pointer;
+      typedef value_type&                   	      reference;
+      typedef const value_type&             	      const_reference;
+      typedef value_type*          		      iterator;
+      typedef const value_type*			      const_iterator;
+      typedef std::size_t                    	      size_type;
+      typedef std::ptrdiff_t                   	      difference_type;
+      typedef std::reverse_iterator<iterator>	      reverse_iterator;
+      typedef std::reverse_iterator<const_iterator>   const_reverse_iterator;
+
+      // Support for zero-sized arrays mandatory.
+      value_type _M_instance[_Nm ? _Nm : 1];
+
+      // No explicit construct/copy/destroy for aggregate type.
+
+      // DR 776.
+      void
+      fill(const value_type& __u)
+      { std::fill_n(begin(), size(), __u); }
+
+      void
+      swap(array& __other)
+      { std::swap_ranges(begin(), end(), __other.begin()); }
+
+      // Iterators.
+      iterator
+      begin()
+      { return iterator(std::__addressof(_M_instance[0])); }
+
+      const_iterator
+      begin() const 
+      { return const_iterator(std::__addressof(_M_instance[0])); }
+
+      iterator
+      end()
+      { return iterator(std::__addressof(_M_instance[_Nm])); }
+
+      const_iterator
+      end() const
+      { return const_iterator(std::__addressof(_M_instance[_Nm])); }
+
+      reverse_iterator 
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator 
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator 
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator 
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+      const_iterator
+      cbegin() const 
+      { return const_iterator(std::__addressof(_M_instance[0])); }
+
+      const_iterator
+      cend() const
+      { return const_iterator(std::__addressof(_M_instance[_Nm])); }
+
+      const_reverse_iterator 
+      crbegin() const
+      { return const_reverse_iterator(end()); }
+
+      const_reverse_iterator 
+      crend() const
+      { return const_reverse_iterator(begin()); }
+
+      // Capacity.
+      constexpr size_type 
+      size() const { return _Nm; }
+
+      constexpr size_type 
+      max_size() const { return _Nm; }
+
+      constexpr bool 
+      empty() const { return size() == 0; }
+
+      // Element access.
+      reference
+      operator[](size_type __n)
+      { return _M_instance[__n]; }
+
+      const_reference
+      operator[](size_type __n) const
+      { return _M_instance[__n]; }
+
+      reference
+      at(size_type __n)
+      {
+	if (__n >= _Nm)
+	  std::__throw_out_of_range(__N("array::at"));
+	return _M_instance[__n];
+      }
+
+      const_reference
+      at(size_type __n) const
+      {
+	if (__n >= _Nm)
+	  std::__throw_out_of_range(__N("array::at"));
+	return _M_instance[__n];
+      }
+
+      reference 
+      front()
+      { return *begin(); }
+
+      const_reference 
+      front() const
+      { return *begin(); }
+
+      reference 
+      back()
+      { return _Nm ? *(end() - 1) : *end(); }
+
+      const_reference 
+      back() const
+      { return _Nm ? *(end() - 1) : *end(); }
+
+      _Tp*
+      data()
+      { return std::__addressof(_M_instance[0]); }
+
+      const _Tp*
+      data() const
+      { return std::__addressof(_M_instance[0]); }
+    };
+
+  // Array comparisons.
+  template<typename _Tp, std::size_t _Nm>
+    inline bool 
+    operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return std::equal(__one.begin(), __one.end(), __two.begin()); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one == __two); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
+    { 
+      return std::lexicographical_compare(__a.begin(), __a.end(),
+					  __b.begin(), __b.end()); 
+    }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return __two < __one; }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one > __two); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one < __two); }
+
+  // Specialized algorithms [6.2.2.2].
+  template<typename _Tp, std::size_t _Nm>
+    inline void
+    swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
+    { __one.swap(__two); }
+
+  // Tuple interface to class template array [6.2.2.5].
+
+  /// tuple_size
+  template<typename _Tp> 
+    class tuple_size;
+
+  /// tuple_element
+  template<std::size_t _Int, typename _Tp>
+    class tuple_element;
+
+  template<typename _Tp, std::size_t _Nm>
+    struct tuple_size<array<_Tp, _Nm> >
+    { static const std::size_t value = _Nm; };
+
+  template<typename _Tp, std::size_t _Nm>
+    const std::size_t
+    tuple_size<array<_Tp, _Nm> >::value;  
+
+  template<std::size_t _Int, typename _Tp, std::size_t _Nm>
+    struct tuple_element<_Int, array<_Tp, _Nm> >
+    { typedef _Tp type; };
+
+  template<std::size_t _Int, typename _Tp, std::size_t _Nm>
+    inline _Tp&
+    get(array<_Tp, _Nm>& __arr)
+    { return __arr[_Int]; }
+
+  template<std::size_t _Int, typename _Tp, std::size_t _Nm>
+    inline const _Tp&
+    get(const array<_Tp, _Nm>& __arr)
+    { return __arr[_Int]; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_ARRAY
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/atomic b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/atomic
new file mode 100644
index 000000000..a19891dbd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/atomic
@@ -0,0 +1,1054 @@
+// -*- C++ -*- header.
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/atomic
+ *  This is a Standard C++ Library header.
+ */
+
+// Based on "C++ Atomic Types and Operations" by Hans Boehm and Lawrence Crowl.
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
+
+#ifndef _GLIBCXX_ATOMIC
+#define _GLIBCXX_ATOMIC 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#endif
+
+#include <bits/atomic_base.h>
+#include <bits/atomic_0.h>
+#include <bits/atomic_2.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup atomics
+   * @{
+   */
+
+  /// atomic_bool
+  // NB: No operators or fetch-operations for this type.
+  struct atomic_bool
+  {
+  private:
+    __atomic_base<bool>	_M_base;
+
+  public:
+    atomic_bool() = default;
+    ~atomic_bool() = default;
+    atomic_bool(const atomic_bool&) = delete;
+    atomic_bool& operator=(const atomic_bool&) = delete;
+    atomic_bool& operator=(const atomic_bool&) volatile = delete;
+
+    constexpr atomic_bool(bool __i) : _M_base(__i) { }
+
+    bool
+    operator=(bool __i)
+    { return _M_base.operator=(__i); }
+
+    operator bool() const
+    { return _M_base.load(); }
+
+    operator bool() const volatile
+    { return _M_base.load(); }
+
+    bool
+    is_lock_free() const { return _M_base.is_lock_free(); }
+
+    bool
+    is_lock_free() const volatile { return _M_base.is_lock_free(); }
+
+    void
+    store(bool __i, memory_order __m = memory_order_seq_cst)
+    { _M_base.store(__i, __m); }
+
+    void
+    store(bool __i, memory_order __m = memory_order_seq_cst) volatile
+    { _M_base.store(__i, __m); }
+
+    bool
+    load(memory_order __m = memory_order_seq_cst) const
+    { return _M_base.load(__m); }
+
+    bool
+    load(memory_order __m = memory_order_seq_cst) const volatile
+    { return _M_base.load(__m); }
+
+    bool
+    exchange(bool __i, memory_order __m = memory_order_seq_cst)
+    { return _M_base.exchange(__i, __m); }
+
+    bool
+    exchange(bool __i, memory_order __m = memory_order_seq_cst) volatile
+    { return _M_base.exchange(__i, __m); }
+
+    bool
+    compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
+			  memory_order __m2)
+    { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
+
+    bool
+    compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
+			  memory_order __m2) volatile
+    { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
+
+    bool
+    compare_exchange_weak(bool& __i1, bool __i2,
+			  memory_order __m = memory_order_seq_cst)
+    { return _M_base.compare_exchange_weak(__i1, __i2, __m); }
+
+    bool
+    compare_exchange_weak(bool& __i1, bool __i2,
+			  memory_order __m = memory_order_seq_cst) volatile
+    { return _M_base.compare_exchange_weak(__i1, __i2, __m); }
+
+    bool
+    compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
+			    memory_order __m2)
+    { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
+
+    bool
+    compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
+			    memory_order __m2) volatile
+    { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
+
+    bool
+    compare_exchange_strong(bool& __i1, bool __i2,
+			    memory_order __m = memory_order_seq_cst)
+    { return _M_base.compare_exchange_strong(__i1, __i2, __m); }
+
+    bool
+    compare_exchange_strong(bool& __i1, bool __i2,
+			    memory_order __m = memory_order_seq_cst) volatile
+    { return _M_base.compare_exchange_strong(__i1, __i2, __m); }
+  };
+
+
+  /// atomic
+  /// 29.4.3, Generic atomic type, primary class template.
+  template<typename _Tp>
+    struct atomic
+    {
+    private:
+      _Tp _M_i;
+
+    public:
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(_Tp __i) : _M_i(__i) { }
+
+      operator _Tp() const;
+
+      operator _Tp() const volatile;
+
+      _Tp
+      operator=(_Tp __i) { store(__i); return __i; }
+
+      _Tp
+      operator=(_Tp __i) volatile { store(__i); return __i; }
+
+      bool
+      is_lock_free() const;
+
+      bool
+      is_lock_free() const volatile;
+
+      void
+      store(_Tp, memory_order = memory_order_seq_cst);
+
+      void
+      store(_Tp, memory_order = memory_order_seq_cst) volatile;
+
+      _Tp
+      load(memory_order = memory_order_seq_cst) const;
+
+      _Tp
+      load(memory_order = memory_order_seq_cst) const volatile;
+
+      _Tp
+      exchange(_Tp __i, memory_order = memory_order_seq_cst);
+
+      _Tp
+      exchange(_Tp __i, memory_order = memory_order_seq_cst) volatile;
+
+      bool
+      compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order);
+
+      bool
+      compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order) volatile;
+
+      bool
+      compare_exchange_weak(_Tp&, _Tp, memory_order = memory_order_seq_cst);
+
+      bool
+      compare_exchange_weak(_Tp&, _Tp,
+			    memory_order = memory_order_seq_cst) volatile;
+
+      bool
+      compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order);
+
+      bool
+      compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order) volatile;
+
+      bool
+      compare_exchange_strong(_Tp&, _Tp, memory_order = memory_order_seq_cst);
+
+      bool
+      compare_exchange_strong(_Tp&, _Tp,
+			      memory_order = memory_order_seq_cst) volatile;
+    };
+
+
+  /// Partial specialization for pointer types.
+  template<typename _Tp>
+    struct atomic<_Tp*>
+    {
+      typedef _Tp* 			__pointer_type;
+      typedef __atomic_base<_Tp*>	__base_type;
+      __base_type			_M_b;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__pointer_type __p) : _M_b(__p) { }
+
+      operator __pointer_type() const
+      { return __pointer_type(_M_b); }
+
+      operator __pointer_type() const volatile
+      { return __pointer_type(_M_b); }
+
+      __pointer_type
+      operator=(__pointer_type __p)
+      { return _M_b.operator=(__p); }
+
+      __pointer_type
+      operator=(__pointer_type __p) volatile
+      { return _M_b.operator=(__p); }
+
+      __pointer_type
+      operator++(int)
+      { return _M_b++; }
+
+      __pointer_type
+      operator++(int) volatile
+      { return _M_b++; }
+
+      __pointer_type
+      operator--(int)
+      { return _M_b--; }
+
+      __pointer_type
+      operator--(int) volatile
+      { return _M_b--; }
+
+      __pointer_type
+      operator++()
+      { return ++_M_b; }
+
+      __pointer_type
+      operator++() volatile
+      { return ++_M_b; }
+
+      __pointer_type
+      operator--()
+      { return --_M_b; }
+
+      __pointer_type
+      operator--() volatile
+      { return --_M_b; }
+
+      __pointer_type
+      operator+=(ptrdiff_t __d)
+      { return _M_b.operator+=(__d); }
+
+      __pointer_type
+      operator+=(ptrdiff_t __d) volatile
+      { return _M_b.operator+=(__d); }
+
+      __pointer_type
+      operator-=(ptrdiff_t __d)
+      { return _M_b.operator-=(__d); }
+
+      __pointer_type
+      operator-=(ptrdiff_t __d) volatile
+      { return _M_b.operator-=(__d); }
+
+      bool
+      is_lock_free() const
+      { return _M_b.is_lock_free(); }
+
+      bool
+      is_lock_free() const volatile
+      { return _M_b.is_lock_free(); }
+
+      void
+      store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      { return _M_b.store(__p, __m); }
+
+      void
+      store(__pointer_type __p,
+	    memory_order __m = memory_order_seq_cst) volatile
+      { return _M_b.store(__p, __m); }
+
+      __pointer_type
+      load(memory_order __m = memory_order_seq_cst) const
+      { return _M_b.load(__m); }
+
+      __pointer_type
+      load(memory_order __m = memory_order_seq_cst) const volatile
+      { return _M_b.load(__m); }
+
+      __pointer_type
+      exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+      { return _M_b.exchange(__p, __m); }
+
+      __pointer_type
+      exchange(__pointer_type __p,
+	       memory_order __m = memory_order_seq_cst) volatile
+      { return _M_b.exchange(__p, __m); }
+
+      bool
+      compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+			    memory_order __m1, memory_order __m2)
+      { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+
+      bool
+      compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+			    memory_order __m1, memory_order __m2) volatile
+      { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+
+      bool
+      compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+			    memory_order __m = memory_order_seq_cst)
+      {
+	return compare_exchange_weak(__p1, __p2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+			    memory_order __m = memory_order_seq_cst) volatile
+      {
+	return compare_exchange_weak(__p1, __p2, __m,
+				     __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2)
+      { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m1, memory_order __m2) volatile
+      { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m = memory_order_seq_cst)
+      {
+	return _M_b.compare_exchange_strong(__p1, __p2, __m,
+					    __calculate_memory_order(__m));
+      }
+
+      bool
+      compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
+			      memory_order __m = memory_order_seq_cst) volatile
+      {
+	return _M_b.compare_exchange_strong(__p1, __p2, __m,
+					    __calculate_memory_order(__m));
+      }
+
+      __pointer_type
+      fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      { return _M_b.fetch_add(__d, __m); }
+
+      __pointer_type
+      fetch_add(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _M_b.fetch_add(__d, __m); }
+
+      __pointer_type
+      fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+      { return _M_b.fetch_sub(__d, __m); }
+
+      __pointer_type
+      fetch_sub(ptrdiff_t __d,
+		memory_order __m = memory_order_seq_cst) volatile
+      { return _M_b.fetch_sub(__d, __m); }
+    };
+
+
+  /// Explicit specialization for bool.
+  template<>
+    struct atomic<bool> : public atomic_bool
+    {
+      typedef bool 			__integral_type;
+      typedef atomic_bool 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for char.
+  template<>
+    struct atomic<char> : public atomic_char
+    {
+      typedef char 			__integral_type;
+      typedef atomic_char 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for signed char.
+  template<>
+    struct atomic<signed char> : public atomic_schar
+    {
+      typedef signed char 		__integral_type;
+      typedef atomic_schar 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for unsigned char.
+  template<>
+    struct atomic<unsigned char> : public atomic_uchar
+    {
+      typedef unsigned char 		__integral_type;
+      typedef atomic_uchar 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for short.
+  template<>
+    struct atomic<short> : public atomic_short
+    {
+      typedef short 			__integral_type;
+      typedef atomic_short 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for unsigned short.
+  template<>
+    struct atomic<unsigned short> : public atomic_ushort
+    {
+      typedef unsigned short 	      	__integral_type;
+      typedef atomic_ushort 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for int.
+  template<>
+    struct atomic<int> : atomic_int
+    {
+      typedef int 			__integral_type;
+      typedef atomic_int 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for unsigned int.
+  template<>
+    struct atomic<unsigned int> : public atomic_uint
+    {
+      typedef unsigned int		__integral_type;
+      typedef atomic_uint 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for long.
+  template<>
+    struct atomic<long> : public atomic_long
+    {
+      typedef long 			__integral_type;
+      typedef atomic_long 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for unsigned long.
+  template<>
+    struct atomic<unsigned long> : public atomic_ulong
+    {
+      typedef unsigned long 		__integral_type;
+      typedef atomic_ulong 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for long long.
+  template<>
+    struct atomic<long long> : public atomic_llong
+    {
+      typedef long long 		__integral_type;
+      typedef atomic_llong 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for unsigned long long.
+  template<>
+    struct atomic<unsigned long long> : public atomic_ullong
+    {
+      typedef unsigned long long       	__integral_type;
+      typedef atomic_ullong 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for wchar_t.
+  template<>
+    struct atomic<wchar_t> : public atomic_wchar_t
+    {
+      typedef wchar_t 			__integral_type;
+      typedef atomic_wchar_t 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for char16_t.
+  template<>
+    struct atomic<char16_t> : public atomic_char16_t
+    {
+      typedef char16_t 			__integral_type;
+      typedef atomic_char16_t 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+  /// Explicit specialization for char32_t.
+  template<>
+    struct atomic<char32_t> : public atomic_char32_t
+    {
+      typedef char32_t 			__integral_type;
+      typedef atomic_char32_t 		__base_type;
+
+      atomic() = default;
+      ~atomic() = default;
+      atomic(const atomic&) = delete;
+      atomic& operator=(const atomic&) = delete;
+      atomic& operator=(const atomic&) volatile = delete;
+
+      constexpr atomic(__integral_type __i) : __base_type(__i) { }
+
+      using __base_type::operator __integral_type;
+      using __base_type::operator=;
+    };
+
+
+  // Function definitions, atomic_flag operations.
+  inline bool
+  atomic_flag_test_and_set_explicit(atomic_flag* __a, memory_order __m)
+  { return __a->test_and_set(__m); }
+
+  inline bool
+  atomic_flag_test_and_set_explicit(volatile atomic_flag* __a,
+				    memory_order __m)
+  { return __a->test_and_set(__m); }
+
+  inline void
+  atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m)
+  { __a->clear(__m); }
+
+  inline void
+  atomic_flag_clear_explicit(volatile atomic_flag* __a, memory_order __m)
+  { __a->clear(__m); }
+
+  inline bool
+  atomic_flag_test_and_set(atomic_flag* __a)
+  { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
+
+  inline bool
+  atomic_flag_test_and_set(volatile atomic_flag* __a)
+  { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
+
+  inline void
+  atomic_flag_clear(atomic_flag* __a)
+  { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
+
+  inline void
+  atomic_flag_clear(volatile atomic_flag* __a)
+  { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
+
+
+  // Function templates generally applicable to atomic types.
+  template<typename _ITp>
+    inline bool
+    atomic_is_lock_free(const atomic<_ITp>* __a)
+    { return __a->is_lock_free(); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_is_lock_free(const volatile atomic<_ITp>* __a)
+    { return __a->is_lock_free(); }
+
+  template<typename _ITp>
+    inline void
+    atomic_init(atomic<_ITp>* __a, _ITp __i);
+
+  template<typename _ITp>
+    inline void
+    atomic_init(volatile atomic<_ITp>* __a, _ITp __i);
+
+  template<typename _ITp>
+    inline void
+    atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, memory_order __m)
+    { __a->store(__i, __m); }
+
+  template<typename _ITp>
+    inline void
+    atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
+			  memory_order __m)
+    { __a->store(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m)
+    { return __a->load(__m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_load_explicit(const volatile atomic<_ITp>* __a,
+			 memory_order __m)
+    { return __a->load(__m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i,
+			     memory_order __m)
+    { return __a->exchange(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i,
+			     memory_order __m)
+    { return __a->exchange(__i, __m); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a,
+					  _ITp* __i1, _ITp __i2,
+					  memory_order __m1, memory_order __m2)
+    { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a,
+					  _ITp* __i1, _ITp __i2,
+					  memory_order __m1, memory_order __m2)
+    { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a,
+					    _ITp* __i1, _ITp __i2,
+					    memory_order __m1,
+					    memory_order __m2)
+    { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a,
+					    _ITp* __i1, _ITp __i2,
+					    memory_order __m1,
+					    memory_order __m2)
+    { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); }
+
+
+  template<typename _ITp>
+    inline void
+    atomic_store(atomic<_ITp>* __a, _ITp __i)
+    { atomic_store_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline void
+    atomic_store(volatile atomic<_ITp>* __a, _ITp __i)
+    { atomic_store_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_load(const atomic<_ITp>* __a)
+    { return atomic_load_explicit(__a, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_load(const volatile atomic<_ITp>* __a)
+    { return atomic_load_explicit(__a, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_exchange(atomic<_ITp>* __a, _ITp __i)
+    { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i)
+    { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_weak(atomic<_ITp>* __a,
+				 _ITp* __i1, _ITp __i2)
+    {
+      return atomic_compare_exchange_weak_explicit(__a, __i1, __i2,
+						   memory_order_seq_cst,
+						   memory_order_seq_cst);
+    }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_weak(volatile atomic<_ITp>* __a,
+				 _ITp* __i1, _ITp __i2)
+    {
+      return atomic_compare_exchange_weak_explicit(__a, __i1, __i2,
+						   memory_order_seq_cst,
+						   memory_order_seq_cst);
+    }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_strong(atomic<_ITp>* __a,
+				   _ITp* __i1, _ITp __i2)
+    {
+      return atomic_compare_exchange_strong_explicit(__a, __i1, __i2,
+						     memory_order_seq_cst,
+						     memory_order_seq_cst);
+    }
+
+  template<typename _ITp>
+    inline bool
+    atomic_compare_exchange_strong(volatile atomic<_ITp>* __a,
+				   _ITp* __i1, _ITp __i2)
+    {
+      return atomic_compare_exchange_strong_explicit(__a, __i1, __i2,
+						     memory_order_seq_cst,
+						     memory_order_seq_cst);
+    }
+
+  // Function templates for atomic_integral operations only, using
+  // __atomic_base. Template argument should be constricted to
+  // intergral types as specified in the standard, excluding address
+  // types.
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_add(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_add(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_sub(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_sub(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_and(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_and(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i,
+			     memory_order __m)
+    { return __a->fetch_or(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
+			     memory_order __m)
+    { return __a->fetch_or(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_xor(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
+			      memory_order __m)
+    { return __a->fetch_xor(__i, __m); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
+
+  template<typename _ITp>
+    inline _ITp
+    atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i)
+    { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
+
+
+  // Partial specializations for pointers.
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
+			      memory_order __m)
+    { return __a->fetch_add(__d, __m); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d,
+			      memory_order __m)
+    { return __a->fetch_add(__d, __m); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d)
+    { return __a->fetch_add(__d); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d)
+    { return __a->fetch_add(__d); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a,
+			      ptrdiff_t __d, memory_order __m)
+    { return __a->fetch_sub(__d, __m); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
+			      memory_order __m)
+    { return __a->fetch_sub(__d, __m); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d)
+    { return __a->fetch_sub(__d); }
+
+  template<typename _ITp>
+    inline _ITp*
+    atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d)
+    { return __a->fetch_sub(__d); }
+  // @} group atomics
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/bitset b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/bitset
new file mode 100644
index 000000000..e0e8f1340
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/bitset
@@ -0,0 +1,1557 @@
+// <bitset> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/bitset
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_BITSET
+#define _GLIBCXX_BITSET 1
+
+#pragma GCC system_header
+
+#include <string>
+#include <bits/functexcept.h>   // For invalid_argument, out_of_range,
+                                // overflow_error
+#include <iosfwd>
+#include <bits/cxxabi_forced.h>
+
+#define _GLIBCXX_BITSET_BITS_PER_WORD  (__CHAR_BIT__ * sizeof(unsigned long))
+#define _GLIBCXX_BITSET_WORDS(__n) \
+  ((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \
+   ((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1))
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
+
+  /**
+   *  Base class, general case.  It is a class invariant that _Nw will be
+   *  nonnegative.
+   *
+   *  See documentation for bitset.
+  */
+  template<size_t _Nw>
+    struct _Base_bitset
+    {
+      typedef unsigned long _WordT;
+
+      /// 0 is the least significant word.
+      _WordT 		_M_w[_Nw];
+
+      _GLIBCXX_CONSTEXPR _Base_bitset()
+      : _M_w() { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr _Base_bitset(unsigned long long __val)
+      : _M_w({ _WordT(__val)
+#if __SIZEOF_LONG_LONG__ > __SIZEOF_LONG__
+	       , _WordT(__val >> _GLIBCXX_BITSET_BITS_PER_WORD)
+#endif
+       }) { }
+#else
+      _Base_bitset(unsigned long __val)
+      : _M_w()
+      { _M_w[0] = __val; }
+#endif
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichword(size_t __pos )
+      { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbyte(size_t __pos )
+      { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbit(size_t __pos )
+      { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR _WordT
+      _S_maskbit(size_t __pos )
+      { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
+
+      _WordT&
+      _M_getword(size_t __pos)
+      { return _M_w[_S_whichword(__pos)]; }
+
+      _WordT
+      _M_getword(size_t __pos) const
+      { return _M_w[_S_whichword(__pos)]; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const _WordT*
+      _M_getdata() const
+      { return _M_w; }
+#endif
+
+      _WordT&
+      _M_hiword()
+      { return _M_w[_Nw - 1]; }
+
+      _GLIBCXX_CONSTEXPR _WordT
+      _M_hiword() const
+      { return _M_w[_Nw - 1]; }
+
+      void
+      _M_do_and(const _Base_bitset<_Nw>& __x)
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  _M_w[__i] &= __x._M_w[__i];
+      }
+
+      void
+      _M_do_or(const _Base_bitset<_Nw>& __x)
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  _M_w[__i] |= __x._M_w[__i];
+      }
+
+      void
+      _M_do_xor(const _Base_bitset<_Nw>& __x)
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  _M_w[__i] ^= __x._M_w[__i];
+      }
+
+      void
+      _M_do_left_shift(size_t __shift);
+
+      void
+      _M_do_right_shift(size_t __shift);
+
+      void
+      _M_do_flip()
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  _M_w[__i] = ~_M_w[__i];
+      }
+
+      void
+      _M_do_set()
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  _M_w[__i] = ~static_cast<_WordT>(0);
+      }
+
+      void
+      _M_do_reset()
+      { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); }
+
+      bool
+      _M_is_equal(const _Base_bitset<_Nw>& __x) const
+      {
+	for (size_t __i = 0; __i < _Nw; ++__i)
+	  if (_M_w[__i] != __x._M_w[__i])
+	    return false;
+	return true;
+      }
+
+      size_t
+      _M_are_all_aux() const
+      {
+	for (size_t __i = 0; __i < _Nw - 1; __i++)
+	  if (_M_w[__i] != ~static_cast<_WordT>(0))
+	    return 0;
+	return ((_Nw - 1) * _GLIBCXX_BITSET_BITS_PER_WORD
+		+ __builtin_popcountl(_M_hiword()));
+      }
+
+      bool
+      _M_is_any() const
+      {
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  if (_M_w[__i] != static_cast<_WordT>(0))
+	    return true;
+	return false;
+      }
+
+      size_t
+      _M_do_count() const
+      {
+	size_t __result = 0;
+	for (size_t __i = 0; __i < _Nw; __i++)
+	  __result += __builtin_popcountl(_M_w[__i]);
+	return __result;
+      }
+
+      unsigned long
+      _M_do_to_ulong() const;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      unsigned long long
+      _M_do_to_ullong() const;
+#endif
+
+      // find first "on" bit
+      size_t
+      _M_do_find_first(size_t __not_found) const;
+
+      // find the next "on" bit that follows "prev"
+      size_t
+      _M_do_find_next(size_t __prev, size_t __not_found) const;
+    };
+
+  // Definitions of non-inline functions from _Base_bitset.
+  template<size_t _Nw>
+    void
+    _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift)
+    {
+      if (__builtin_expect(__shift != 0, 1))
+	{
+	  const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD;
+	  const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD;
+
+	  if (__offset == 0)
+	    for (size_t __n = _Nw - 1; __n >= __wshift; --__n)
+	      _M_w[__n] = _M_w[__n - __wshift];
+	  else
+	    {
+	      const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD 
+					   - __offset);
+	      for (size_t __n = _Nw - 1; __n > __wshift; --__n)
+		_M_w[__n] = ((_M_w[__n - __wshift] << __offset)
+			     | (_M_w[__n - __wshift - 1] >> __sub_offset));
+	      _M_w[__wshift] = _M_w[0] << __offset;
+	    }
+
+	  std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0));
+	}
+    }
+
+  template<size_t _Nw>
+    void
+    _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift)
+    {
+      if (__builtin_expect(__shift != 0, 1))
+	{
+	  const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD;
+	  const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD;
+	  const size_t __limit = _Nw - __wshift - 1;
+
+	  if (__offset == 0)
+	    for (size_t __n = 0; __n <= __limit; ++__n)
+	      _M_w[__n] = _M_w[__n + __wshift];
+	  else
+	    {
+	      const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD
+					   - __offset);
+	      for (size_t __n = 0; __n < __limit; ++__n)
+		_M_w[__n] = ((_M_w[__n + __wshift] >> __offset)
+			     | (_M_w[__n + __wshift + 1] << __sub_offset));
+	      _M_w[__limit] = _M_w[_Nw-1] >> __offset;
+	    }
+	  
+	  std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0));
+	}
+    }
+
+  template<size_t _Nw>
+    unsigned long
+    _Base_bitset<_Nw>::_M_do_to_ulong() const
+    {
+      for (size_t __i = 1; __i < _Nw; ++__i)
+	if (_M_w[__i])
+	  __throw_overflow_error(__N("_Base_bitset::_M_do_to_ulong"));
+      return _M_w[0];
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<size_t _Nw>
+    unsigned long long
+    _Base_bitset<_Nw>::_M_do_to_ullong() const
+    {
+      const bool __dw = sizeof(unsigned long long) > sizeof(unsigned long);
+      for (size_t __i = 1 + __dw; __i < _Nw; ++__i)
+	if (_M_w[__i])
+	  __throw_overflow_error(__N("_Base_bitset::_M_do_to_ullong"));
+
+      if (__dw)
+	return _M_w[0] + (static_cast<unsigned long long>(_M_w[1])
+			  << _GLIBCXX_BITSET_BITS_PER_WORD);
+      return _M_w[0];
+    }
+#endif
+
+  template<size_t _Nw>
+    size_t
+    _Base_bitset<_Nw>::_M_do_find_first(size_t __not_found) const
+    {
+      for (size_t __i = 0; __i < _Nw; __i++)
+	{
+	  _WordT __thisword = _M_w[__i];
+	  if (__thisword != static_cast<_WordT>(0))
+	    return (__i * _GLIBCXX_BITSET_BITS_PER_WORD
+		    + __builtin_ctzl(__thisword));
+	}
+      // not found, so return an indication of failure.
+      return __not_found;
+    }
+
+  template<size_t _Nw>
+    size_t
+    _Base_bitset<_Nw>::_M_do_find_next(size_t __prev, size_t __not_found) const
+    {
+      // make bound inclusive
+      ++__prev;
+
+      // check out of bounds
+      if (__prev >= _Nw * _GLIBCXX_BITSET_BITS_PER_WORD)
+	return __not_found;
+
+      // search first word
+      size_t __i = _S_whichword(__prev);
+      _WordT __thisword = _M_w[__i];
+
+      // mask off bits below bound
+      __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
+
+      if (__thisword != static_cast<_WordT>(0))
+	return (__i * _GLIBCXX_BITSET_BITS_PER_WORD
+		+ __builtin_ctzl(__thisword));
+
+      // check subsequent words
+      __i++;
+      for (; __i < _Nw; __i++)
+	{
+	  __thisword = _M_w[__i];
+	  if (__thisword != static_cast<_WordT>(0))
+	    return (__i * _GLIBCXX_BITSET_BITS_PER_WORD
+		    + __builtin_ctzl(__thisword));
+	}
+      // not found, so return an indication of failure.
+      return __not_found;
+    } // end _M_do_find_next
+
+  /**
+   *  Base class, specialization for a single word.
+   *
+   *  See documentation for bitset.
+  */
+  template<>
+    struct _Base_bitset<1>
+    {
+      typedef unsigned long _WordT;
+      _WordT _M_w;
+
+      _GLIBCXX_CONSTEXPR _Base_bitset()
+      : _M_w(0)
+      { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr _Base_bitset(unsigned long long __val)
+#else
+      _Base_bitset(unsigned long __val)
+#endif
+      : _M_w(__val)
+      { }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichword(size_t __pos )
+      { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbyte(size_t __pos )
+      { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbit(size_t __pos )
+      {  return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR _WordT
+      _S_maskbit(size_t __pos )
+      { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
+
+      _WordT&
+      _M_getword(size_t)
+      { return _M_w; }
+
+      _WordT
+      _M_getword(size_t) const
+      { return _M_w; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      const _WordT*
+      _M_getdata() const
+      { return &_M_w; }
+#endif
+
+      _WordT&
+      _M_hiword()
+      { return _M_w; }
+
+      _GLIBCXX_CONSTEXPR _WordT
+      _M_hiword() const
+      { return _M_w; }
+
+      void
+      _M_do_and(const _Base_bitset<1>& __x)
+      { _M_w &= __x._M_w; }
+
+      void
+      _M_do_or(const _Base_bitset<1>& __x)
+      { _M_w |= __x._M_w; }
+
+      void
+      _M_do_xor(const _Base_bitset<1>& __x)
+      { _M_w ^= __x._M_w; }
+
+      void
+      _M_do_left_shift(size_t __shift)
+      { _M_w <<= __shift; }
+
+      void
+      _M_do_right_shift(size_t __shift)
+      { _M_w >>= __shift; }
+
+      void
+      _M_do_flip()
+      { _M_w = ~_M_w; }
+
+      void
+      _M_do_set()
+      { _M_w = ~static_cast<_WordT>(0); }
+
+      void
+      _M_do_reset()
+      { _M_w = 0; }
+
+      bool
+      _M_is_equal(const _Base_bitset<1>& __x) const
+      { return _M_w == __x._M_w; }
+
+      size_t
+      _M_are_all_aux() const
+      { return __builtin_popcountl(_M_w); }
+
+      bool
+      _M_is_any() const
+      { return _M_w != 0; }
+
+      size_t
+      _M_do_count() const
+      { return __builtin_popcountl(_M_w); }
+
+      unsigned long
+      _M_do_to_ulong() const
+      { return _M_w; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      unsigned long long
+      _M_do_to_ullong() const
+      { return _M_w; }
+#endif
+
+      size_t
+      _M_do_find_first(size_t __not_found) const
+      {
+        if (_M_w != 0)
+          return __builtin_ctzl(_M_w);
+        else
+          return __not_found;
+      }
+
+      // find the next "on" bit that follows "prev"
+      size_t
+      _M_do_find_next(size_t __prev, size_t __not_found) const
+      {
+	++__prev;
+	if (__prev >= ((size_t) _GLIBCXX_BITSET_BITS_PER_WORD))
+	  return __not_found;
+
+	_WordT __x = _M_w >> __prev;
+	if (__x != 0)
+	  return __builtin_ctzl(__x) + __prev;
+	else
+	  return __not_found;
+      }
+    };
+
+  /**
+   *  Base class, specialization for no storage (zero-length %bitset).
+   *
+   *  See documentation for bitset.
+  */
+  template<>
+    struct _Base_bitset<0>
+    {
+      typedef unsigned long _WordT;
+
+      _GLIBCXX_CONSTEXPR _Base_bitset()
+      { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr _Base_bitset(unsigned long long)
+#else
+      _Base_bitset(unsigned long)
+#endif
+      { }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichword(size_t __pos )
+      { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbyte(size_t __pos )
+      { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; }
+
+      static _GLIBCXX_CONSTEXPR size_t
+      _S_whichbit(size_t __pos )
+      {  return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; }
+
+      static _GLIBCXX_CONSTEXPR _WordT
+      _S_maskbit(size_t __pos )
+      { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
+
+      // This would normally give access to the data.  The bounds-checking
+      // in the bitset class will prevent the user from getting this far,
+      // but (1) it must still return an lvalue to compile, and (2) the
+      // user might call _Unchecked_set directly, in which case this /needs/
+      // to fail.  Let's not penalize zero-length users unless they actually
+      // make an unchecked call; all the memory ugliness is therefore
+      // localized to this single should-never-get-this-far function.
+      _WordT&
+      _M_getword(size_t)
+      { 
+	__throw_out_of_range(__N("_Base_bitset::_M_getword")); 
+	return *new _WordT; 
+      }
+
+      _WordT
+      _M_getword(size_t __pos) const
+      { return 0; }
+
+      _GLIBCXX_CONSTEXPR _WordT
+      _M_hiword() const
+      { return 0; }
+
+      void
+      _M_do_and(const _Base_bitset<0>&)
+      { }
+
+      void
+      _M_do_or(const _Base_bitset<0>&)
+      { }
+
+      void
+      _M_do_xor(const _Base_bitset<0>&)
+      { }
+
+      void
+      _M_do_left_shift(size_t)
+      { }
+
+      void
+      _M_do_right_shift(size_t)
+      { }
+
+      void
+      _M_do_flip()
+      { }
+
+      void
+      _M_do_set()
+      { }
+
+      void
+      _M_do_reset()
+      { }
+
+      // Are all empty bitsets equal to each other?  Are they equal to
+      // themselves?  How to compare a thing which has no state?  What is
+      // the sound of one zero-length bitset clapping?
+      bool
+      _M_is_equal(const _Base_bitset<0>&) const
+      { return true; }
+
+      size_t
+      _M_are_all_aux() const
+      { return 0; }
+
+      bool
+      _M_is_any() const
+      { return false; }
+
+      size_t
+      _M_do_count() const
+      { return 0; }
+
+      unsigned long
+      _M_do_to_ulong() const
+      { return 0; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      unsigned long long
+      _M_do_to_ullong() const
+      { return 0; }
+#endif
+
+      // Normally "not found" is the size, but that could also be
+      // misinterpreted as an index in this corner case.  Oh well.
+      size_t
+      _M_do_find_first(size_t) const
+      { return 0; }
+
+      size_t
+      _M_do_find_next(size_t, size_t) const
+      { return 0; }
+    };
+
+
+  // Helper class to zero out the unused high-order bits in the highest word.
+  template<size_t _Extrabits>
+    struct _Sanitize
+    {
+      typedef unsigned long _WordT;
+
+      static void 
+      _S_do_sanitize(_WordT& __val)
+      { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); }
+    };
+
+  template<>
+    struct _Sanitize<0>
+    { 
+      typedef unsigned long _WordT;
+
+      static void 
+      _S_do_sanitize(_WordT) { } 
+    };
+
+  /**
+   *  @brief  The %bitset class represents a @e fixed-size sequence of bits.
+   *
+   *  @ingroup containers
+   *
+   *  (Note that %bitset does @e not meet the formal requirements of a
+   *  <a href="tables.html#65">container</a>.  Mainly, it lacks iterators.)
+   *
+   *  The template argument, @a Nb, may be any non-negative number,
+   *  specifying the number of bits (e.g., "0", "12", "1024*1024").
+   *
+   *  In the general unoptimized case, storage is allocated in word-sized
+   *  blocks.  Let B be the number of bits in a word, then (Nb+(B-1))/B
+   *  words will be used for storage.  B - Nb%B bits are unused.  (They are
+   *  the high-order bits in the highest word.)  It is a class invariant
+   *  that those unused bits are always zero.
+   *
+   *  If you think of %bitset as <em>a simple array of bits</em>, be
+   *  aware that your mental picture is reversed: a %bitset behaves
+   *  the same way as bits in integers do, with the bit at index 0 in
+   *  the <em>least significant / right-hand</em> position, and the bit at
+   *  index Nb-1 in the <em>most significant / left-hand</em> position.
+   *  Thus, unlike other containers, a %bitset's index <em>counts from
+   *  right to left</em>, to put it very loosely.
+   *
+   *  This behavior is preserved when translating to and from strings.  For
+   *  example, the first line of the following program probably prints
+   *  <em>b('a') is 0001100001</em> on a modern ASCII system.
+   *
+   *  @code
+   *     #include <bitset>
+   *     #include <iostream>
+   *     #include <sstream>
+   *
+   *     using namespace std;
+   *
+   *     int main()
+   *     {
+   *         long         a = 'a';
+   *         bitset<10>   b(a);
+   *
+   *         cout << "b('a') is " << b << endl;
+   *
+   *         ostringstream s;
+   *         s << b;
+   *         string  str = s.str();
+   *         cout << "index 3 in the string is " << str[3] << " but\n"
+   *              << "index 3 in the bitset is " << b[3] << endl;
+   *     }
+   *  @endcode
+   *
+   *  Also see:
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch33s02.html
+   *  for a description of extensions.
+   *
+   *  Most of the actual code isn't contained in %bitset<> itself, but in the
+   *  base class _Base_bitset.  The base class works with whole words, not with
+   *  individual bits.  This allows us to specialize _Base_bitset for the
+   *  important special case where the %bitset is only a single word.
+   *
+   *  Extra confusion can result due to the fact that the storage for
+   *  _Base_bitset @e is a regular array, and is indexed as such.  This is
+   *  carefully encapsulated.
+  */
+  template<size_t _Nb>
+    class bitset
+    : private _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)>
+    {
+    private:
+      typedef _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> _Base;
+      typedef unsigned long _WordT;
+
+      void
+      _M_do_sanitize()
+      { 
+	typedef _Sanitize<_Nb % _GLIBCXX_BITSET_BITS_PER_WORD> __sanitize_type;
+	__sanitize_type::_S_do_sanitize(this->_M_hiword());
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename> friend class hash;
+#endif
+
+    public:
+      /**
+       *  This encapsulates the concept of a single bit.  An instance of this
+       *  class is a proxy for an actual bit; this way the individual bit
+       *  operations are done as faster word-size bitwise instructions.
+       *
+       *  Most users will never need to use this class directly; conversions
+       *  to and from bool are automatic and should be transparent.  Overloaded
+       *  operators help to preserve the illusion.
+       *
+       *  (On a typical system, this <em>bit %reference</em> is 64
+       *  times the size of an actual bit.  Ha.)
+       */
+      class reference
+      {
+	friend class bitset;
+
+	_WordT*	_M_wp;
+	size_t 	_M_bpos;
+	
+	// left undefined
+	reference();
+	
+      public:
+	reference(bitset& __b, size_t __pos)
+	{
+	  _M_wp = &__b._M_getword(__pos);
+	  _M_bpos = _Base::_S_whichbit(__pos);
+	}
+
+	~reference()
+	{ }
+
+	// For b[i] = __x;
+	reference&
+	operator=(bool __x)
+	{
+	  if (__x)
+	    *_M_wp |= _Base::_S_maskbit(_M_bpos);
+	  else
+	    *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
+	  return *this;
+	}
+
+	// For b[i] = b[__j];
+	reference&
+	operator=(const reference& __j)
+	{
+	  if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
+	    *_M_wp |= _Base::_S_maskbit(_M_bpos);
+	  else
+	    *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
+	  return *this;
+	}
+
+	// Flips the bit
+	bool
+	operator~() const
+	{ return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; }
+
+	// For __x = b[i];
+	operator bool() const
+	{ return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; }
+
+	// For b[i].flip();
+	reference&
+	flip()
+	{
+	  *_M_wp ^= _Base::_S_maskbit(_M_bpos);
+	  return *this;
+	}
+      };
+      friend class reference;
+
+      // 23.3.5.1 constructors:
+      /// All bits set to zero.
+      _GLIBCXX_CONSTEXPR bitset()
+      { }
+
+      /// Initial bits bitwise-copied from a single word (others set to zero).
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      constexpr bitset(unsigned long long __val)
+      : _Base(__val) { }
+#else
+      bitset(unsigned long __val)
+      : _Base(__val)
+      { _M_do_sanitize(); }
+#endif
+
+      /**
+       *  @brief  Use a subset of a string.
+       *  @param  s  A string of @a 0 and @a 1 characters.
+       *  @param  position  Index of the first character in @a s to use;
+       *                    defaults to zero.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of @a s.
+       *  @throw  std::invalid_argument  If a character appears in the string
+       *                                 which is neither @a 0 nor @a 1.
+       */
+      template<class _CharT, class _Traits, class _Alloc>
+	explicit
+	bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
+	       size_t __position = 0)
+	: _Base()
+	{
+	  if (__position > __s.size())
+	    __throw_out_of_range(__N("bitset::bitset initial position "
+				     "not valid"));
+	  _M_copy_from_string(__s, __position,
+			      std::basic_string<_CharT, _Traits, _Alloc>::npos,
+			      _CharT('0'), _CharT('1'));
+	}
+
+      /**
+       *  @brief  Use a subset of a string.
+       *  @param  s  A string of @a 0 and @a 1 characters.
+       *  @param  position  Index of the first character in @a s to use.
+       *  @param  n    The number of characters to copy.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of @a s.
+       *  @throw  std::invalid_argument  If a character appears in the string
+       *                                 which is neither @a 0 nor @a 1.
+       */
+      template<class _CharT, class _Traits, class _Alloc>
+	bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
+	       size_t __position, size_t __n)
+	: _Base()
+	{
+	  if (__position > __s.size())
+	    __throw_out_of_range(__N("bitset::bitset initial position "
+				     "not valid"));
+	  _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1'));
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
+	       size_t __position, size_t __n,
+	       _CharT __zero, _CharT __one = _CharT('1'))
+	: _Base()
+	{
+	  if (__position > __s.size())
+	    __throw_out_of_range(__N("bitset::bitset initial position "
+				     "not valid"));
+	  _M_copy_from_string(__s, __position, __n, __zero, __one);
+	}
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Construct from a character %array.
+       *  @param  str  An %array of characters @a zero and @a one.
+       *  @param  n    The number of characters to use.
+       *  @param  zero The character corresponding to the value 0.
+       *  @param  one  The character corresponding to the value 1.
+       *  @throw  std::invalid_argument  If a character appears in the string
+       *                                 which is neither @a zero nor @a one.
+       */
+      template<typename _CharT>
+        explicit
+        bitset(const _CharT* __str,
+	       typename std::basic_string<_CharT>::size_type __n
+	       = std::basic_string<_CharT>::npos,
+	       _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
+        : _Base()
+        {
+	  if (!__str)
+	    __throw_logic_error(__N("bitset::bitset(const _CharT*, ...)"));
+
+	  if (__n == std::basic_string<_CharT>::npos)
+	    __n = std::char_traits<_CharT>::length(__str);
+	  _M_copy_from_ptr<_CharT, std::char_traits<_CharT>>(__str, __n, 0,
+							     __n, __zero,
+							     __one);
+	}
+#endif
+
+      // 23.3.5.2 bitset operations:
+      //@{
+      /**
+       *  @brief  Operations on bitsets.
+       *  @param  rhs  A same-sized bitset.
+       *
+       *  These should be self-explanatory.
+       */
+      bitset<_Nb>&
+      operator&=(const bitset<_Nb>& __rhs)
+      {
+	this->_M_do_and(__rhs);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator|=(const bitset<_Nb>& __rhs)
+      {
+	this->_M_do_or(__rhs);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator^=(const bitset<_Nb>& __rhs)
+      {
+	this->_M_do_xor(__rhs);
+	return *this;
+      }
+      //@}
+      
+      //@{
+      /**
+       *  @brief  Operations on bitsets.
+       *  @param  position  The number of places to shift.
+       *
+       *  These should be self-explanatory.
+       */
+      bitset<_Nb>&
+      operator<<=(size_t __position)
+      {
+	if (__builtin_expect(__position < _Nb, 1))
+	  {
+	    this->_M_do_left_shift(__position);
+	    this->_M_do_sanitize();
+	  }
+	else
+	  this->_M_do_reset();
+	return *this;
+      }
+
+      bitset<_Nb>&
+      operator>>=(size_t __position)
+      {
+	if (__builtin_expect(__position < _Nb, 1))
+	  {
+	    this->_M_do_right_shift(__position);
+	    this->_M_do_sanitize();
+	  }
+	else
+	  this->_M_do_reset();
+	return *this;
+      }
+      //@}
+      
+      //@{
+      /**
+       *  These versions of single-bit set, reset, flip, and test are
+       *  extensions from the SGI version.  They do no range checking.
+       *  @ingroup SGIextensions
+       */
+      bitset<_Nb>&
+      _Unchecked_set(size_t __pos)
+      {
+	this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      _Unchecked_set(size_t __pos, int __val)
+      {
+	if (__val)
+	  this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
+	else
+	  this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      _Unchecked_reset(size_t __pos)
+      {
+	this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
+	return *this;
+      }
+
+      bitset<_Nb>&
+      _Unchecked_flip(size_t __pos)
+      {
+	this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
+	return *this;
+      }
+
+      bool
+      _Unchecked_test(size_t __pos) const
+      { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
+		!= static_cast<_WordT>(0)); }
+      //@}
+      
+      // Set, reset, and flip.
+      /**
+       *  @brief Sets every bit to true.
+       */
+      bitset<_Nb>&
+      set()
+      {
+	this->_M_do_set();
+	this->_M_do_sanitize();
+	return *this;
+      }
+
+      /**
+       *  @brief Sets a given bit to a particular value.
+       *  @param  position  The index of the bit.
+       *  @param  val  Either true or false, defaults to true.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of the %set.
+       */
+      bitset<_Nb>&
+      set(size_t __position, bool __val = true)
+      {
+	if (__position >= _Nb)
+	  __throw_out_of_range(__N("bitset::set"));
+	return _Unchecked_set(__position, __val);
+      }
+
+      /**
+       *  @brief Sets every bit to false.
+       */
+      bitset<_Nb>&
+      reset()
+      {
+	this->_M_do_reset();
+	return *this;
+      }
+
+      /**
+       *  @brief Sets a given bit to false.
+       *  @param  position  The index of the bit.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of the %set.
+       *
+       *  Same as writing @c set(pos,false).
+       */
+      bitset<_Nb>&
+      reset(size_t __position)
+      {
+	if (__position >= _Nb)
+	  __throw_out_of_range(__N("bitset::reset"));
+	return _Unchecked_reset(__position);
+      }
+      
+      /**
+       *  @brief Toggles every bit to its opposite value.
+       */
+      bitset<_Nb>&
+      flip()
+      {
+	this->_M_do_flip();
+	this->_M_do_sanitize();
+	return *this;
+      }
+
+      /**
+       *  @brief Toggles a given bit to its opposite value.
+       *  @param  position  The index of the bit.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of the %set.
+       */
+      bitset<_Nb>&
+      flip(size_t __position)
+      {
+	if (__position >= _Nb)
+	  __throw_out_of_range(__N("bitset::flip"));
+	return _Unchecked_flip(__position);
+      }
+      
+      /// See the no-argument flip().
+      bitset<_Nb>
+      operator~() const
+      { return bitset<_Nb>(*this).flip(); }
+
+      //@{
+      /**
+       *  @brief  Array-indexing support.
+       *  @param  position  Index into the %bitset.
+       *  @return A bool for a <em>const %bitset</em>.  For non-const
+       *           bitsets, an instance of the reference proxy class.
+       *  @note  These operators do no range checking and throw no exceptions,
+       *         as required by DR 11 to the standard.
+       *
+       *  _GLIBCXX_RESOLVE_LIB_DEFECTS Note that this implementation already
+       *  resolves DR 11 (items 1 and 2), but does not do the range-checking
+       *  required by that DR's resolution.  -pme
+       *  The DR has since been changed:  range-checking is a precondition
+       *  (users' responsibility), and these functions must not throw.  -pme
+       */
+      reference
+      operator[](size_t __position)
+      { return reference(*this, __position); }
+
+      bool
+      operator[](size_t __position) const
+      { return _Unchecked_test(__position); }
+      //@}
+      
+      /**
+       *  @brief Returns a numerical interpretation of the %bitset.
+       *  @return  The integral equivalent of the bits.
+       *  @throw  std::overflow_error  If there are too many bits to be
+       *                               represented in an @c unsigned @c long.
+       */
+      unsigned long
+      to_ulong() const
+      { return this->_M_do_to_ulong(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      unsigned long long
+      to_ullong() const
+      { return this->_M_do_to_ullong(); }
+#endif
+
+      /**
+       *  @brief Returns a character interpretation of the %bitset.
+       *  @return  The string equivalent of the bits.
+       *
+       *  Note the ordering of the bits:  decreasing character positions
+       *  correspond to increasing bit positions (see the main class notes for
+       *  an example).
+       */
+      template<class _CharT, class _Traits, class _Alloc>
+	std::basic_string<_CharT, _Traits, _Alloc>
+	to_string() const
+	{
+	  std::basic_string<_CharT, _Traits, _Alloc> __result;
+	  _M_copy_to_string(__result, _CharT('0'), _CharT('1'));
+	  return __result;
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      template<class _CharT, class _Traits, class _Alloc>
+	std::basic_string<_CharT, _Traits, _Alloc>
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  std::basic_string<_CharT, _Traits, _Alloc> __result;
+	  _M_copy_to_string(__result, __zero, __one);
+	  return __result;
+	}
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 434. bitset::to_string() hard to use.
+      template<class _CharT, class _Traits>
+	std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+	to_string() const
+	{ return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 853. to_string needs updating with zero and one.
+      template<class _CharT, class _Traits>
+	std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{ return to_string<_CharT, _Traits,
+	                   std::allocator<_CharT> >(__zero, __one); }
+
+      template<class _CharT>
+	std::basic_string<_CharT, std::char_traits<_CharT>,
+	                  std::allocator<_CharT> >
+	to_string() const
+	{
+	  return to_string<_CharT, std::char_traits<_CharT>,
+	                   std::allocator<_CharT> >();
+	}
+
+      template<class _CharT>
+	std::basic_string<_CharT, std::char_traits<_CharT>,
+	                  std::allocator<_CharT> >
+	to_string(_CharT __zero, _CharT __one = _CharT('1')) const
+	{
+	  return to_string<_CharT, std::char_traits<_CharT>,
+	                   std::allocator<_CharT> >(__zero, __one);
+	}
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string() const
+      {
+	return to_string<char, std::char_traits<char>,
+	                 std::allocator<char> >();
+      }
+
+      std::basic_string<char, std::char_traits<char>, std::allocator<char> >
+      to_string(char __zero, char __one = '1') const
+      {
+	return to_string<char, std::char_traits<char>,
+	                 std::allocator<char> >(__zero, __one);
+      }
+
+      // Helper functions for string operations.
+      template<class _CharT, class _Traits>
+        void
+        _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
+			 _CharT, _CharT);
+
+      template<class _CharT, class _Traits, class _Alloc>
+	void
+	_M_copy_from_string(const std::basic_string<_CharT,
+			    _Traits, _Alloc>& __s, size_t __pos, size_t __n,
+			    _CharT __zero, _CharT __one)
+	{ _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n,
+					    __zero, __one); }
+
+      template<class _CharT, class _Traits, class _Alloc>
+	void
+        _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&,
+			  _CharT, _CharT) const;
+
+      // NB: Backward compat.
+      template<class _CharT, class _Traits, class _Alloc>
+	void
+	_M_copy_from_string(const std::basic_string<_CharT,
+			    _Traits, _Alloc>& __s, size_t __pos, size_t __n)
+	{ _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); }
+
+      template<class _CharT, class _Traits, class _Alloc>
+	void
+        _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const
+	{ _M_copy_to_string(__s, _CharT('0'), _CharT('1')); }
+
+      /// Returns the number of bits which are set.
+      size_t
+      count() const
+      { return this->_M_do_count(); }
+
+      /// Returns the total number of bits.
+      _GLIBCXX_CONSTEXPR size_t
+      size() const
+      { return _Nb; }
+
+      //@{
+      /// These comparisons for equality/inequality are, well, @e bitwise.
+      bool
+      operator==(const bitset<_Nb>& __rhs) const
+      { return this->_M_is_equal(__rhs); }
+
+      bool
+      operator!=(const bitset<_Nb>& __rhs) const
+      { return !this->_M_is_equal(__rhs); }
+      //@}
+      
+      /**
+       *  @brief Tests the value of a bit.
+       *  @param  position  The index of a bit.
+       *  @return  The value at @a pos.
+       *  @throw  std::out_of_range  If @a pos is bigger the size of the %set.
+       */
+      bool
+      test(size_t __position) const
+      {
+	if (__position >= _Nb)
+	  __throw_out_of_range(__N("bitset::test"));
+	return _Unchecked_test(__position);
+      }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 693. std::bitset::all() missing.
+      /**
+       *  @brief Tests whether all the bits are on.
+       *  @return  True if all the bits are set.
+       */
+      bool
+      all() const
+      { return this->_M_are_all_aux() == _Nb; }
+
+      /**
+       *  @brief Tests whether any of the bits are on.
+       *  @return  True if at least one bit is set.
+       */
+      bool
+      any() const
+      { return this->_M_is_any(); }
+
+      /**
+       *  @brief Tests whether any of the bits are on.
+       *  @return  True if none of the bits are set.
+       */
+      bool
+      none() const
+      { return !this->_M_is_any(); }
+
+      //@{
+      /// Self-explanatory.
+      bitset<_Nb>
+      operator<<(size_t __position) const
+      { return bitset<_Nb>(*this) <<= __position; }
+
+      bitset<_Nb>
+      operator>>(size_t __position) const
+      { return bitset<_Nb>(*this) >>= __position; }
+      //@}
+      
+      /**
+       *  @brief  Finds the index of the first "on" bit.
+       *  @return  The index of the first bit set, or size() if not found.
+       *  @ingroup SGIextensions
+       *  @sa  _Find_next
+       */
+      size_t
+      _Find_first() const
+      { return this->_M_do_find_first(_Nb); }
+
+      /**
+       *  @brief  Finds the index of the next "on" bit after prev.
+       *  @return  The index of the next bit set, or size() if not found.
+       *  @param  prev  Where to start searching.
+       *  @ingroup SGIextensions
+       *  @sa  _Find_first
+       */
+      size_t
+      _Find_next(size_t __prev ) const
+      { return this->_M_do_find_next(__prev, _Nb); }
+    };
+
+  // Definitions of non-inline member functions.
+  template<size_t _Nb>
+    template<class _CharT, class _Traits>
+      void
+      bitset<_Nb>::
+      _M_copy_from_ptr(const _CharT* __s, size_t __len,
+		       size_t __pos, size_t __n, _CharT __zero, _CharT __one)
+      {
+	reset();
+	const size_t __nbits = std::min(_Nb, std::min(__n, __len - __pos));
+	for (size_t __i = __nbits; __i > 0; --__i)
+	  {
+	    const _CharT __c = __s[__pos + __nbits - __i];
+	    if (_Traits::eq(__c, __zero))
+	      ;
+	    else if (_Traits::eq(__c, __one))
+	      _Unchecked_set(__i - 1);
+	    else
+	      __throw_invalid_argument(__N("bitset::_M_copy_from_ptr"));
+	  }
+      }
+
+  template<size_t _Nb>
+    template<class _CharT, class _Traits, class _Alloc>
+      void
+      bitset<_Nb>::
+      _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s,
+			_CharT __zero, _CharT __one) const
+      {
+	__s.assign(_Nb, __zero);
+	for (size_t __i = _Nb; __i > 0; --__i)
+	  if (_Unchecked_test(__i - 1))
+	    _Traits::assign(__s[_Nb - __i], __one);
+      }
+
+  // 23.3.5.3 bitset operations:
+  //@{
+  /**
+   *  @brief  Global bitwise operations on bitsets.
+   *  @param  x  A bitset.
+   *  @param  y  A bitset of the same size as @a x.
+   *  @return  A new bitset.
+   *
+   *  These should be self-explanatory.
+  */
+  template<size_t _Nb>
+    inline bitset<_Nb>
+    operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    {
+      bitset<_Nb> __result(__x);
+      __result &= __y;
+      return __result;
+    }
+
+  template<size_t _Nb>
+    inline bitset<_Nb>
+    operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    {
+      bitset<_Nb> __result(__x);
+      __result |= __y;
+      return __result;
+    }
+
+  template <size_t _Nb>
+    inline bitset<_Nb>
+    operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
+    {
+      bitset<_Nb> __result(__x);
+      __result ^= __y;
+      return __result;
+    }
+  //@}
+
+  //@{
+  /**
+   *  @brief Global I/O operators for bitsets.
+   *
+   *  Direct I/O between streams and bitsets is supported.  Output is
+   *  straightforward.  Input will skip whitespace, only accept @a 0 and @a 1
+   *  characters, and will only extract as many digits as the %bitset will
+   *  hold.
+  */
+  template<class _CharT, class _Traits, size_t _Nb>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
+    {
+      typedef typename _Traits::char_type          char_type;
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      std::basic_string<_CharT, _Traits> __tmp;
+      __tmp.reserve(_Nb);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 303. Bitset input operator underspecified
+      const char_type __zero = __is.widen('0');
+      const char_type __one = __is.widen('1');
+
+      typename __ios_base::iostate __state = __ios_base::goodbit;
+      typename __istream_type::sentry __sentry(__is);
+      if (__sentry)
+	{
+	  __try
+	    {
+	      for (size_t __i = _Nb; __i > 0; --__i)
+		{
+		  static typename _Traits::int_type __eof = _Traits::eof();
+		  
+		  typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc();
+		  if (_Traits::eq_int_type(__c1, __eof))
+		    {
+		      __state |= __ios_base::eofbit;
+		      break;
+		    }
+		  else
+		    {
+		      const char_type __c2 = _Traits::to_char_type(__c1);
+		      if (_Traits::eq(__c2, __zero))
+			__tmp.push_back(__zero);
+		      else if (_Traits::eq(__c2, __one))
+			__tmp.push_back(__one);
+		      else if (_Traits::
+			       eq_int_type(__is.rdbuf()->sputbackc(__c2),
+					   __eof))
+			{
+			  __state |= __ios_base::failbit;
+			  break;
+			}
+		    }
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __is._M_setstate(__ios_base::badbit);		
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __is._M_setstate(__ios_base::badbit); }
+	}
+
+      if (__tmp.empty() && _Nb)
+	__state |= __ios_base::failbit;
+      else
+	__x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb,
+				__zero, __one);
+      if (__state)
+	__is.setstate(__state);
+      return __is;
+    }
+
+  template <class _CharT, class _Traits, size_t _Nb>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const bitset<_Nb>& __x)
+    {
+      std::basic_string<_CharT, _Traits> __tmp;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 396. what are characters zero and one.
+      const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__os.getloc());
+      __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
+      return __os << __tmp;
+    }
+  //@}
+
+_GLIBCXX_END_NAMESPACE_CONTAINER
+} // namespace std
+
+#undef _GLIBCXX_BITSET_WORDS
+#undef _GLIBCXX_BITSET_BITS_PER_WORD
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // DR 1182.
+  /// std::hash specialization for bitset.
+  template<size_t _Nb>
+    struct hash<_GLIBCXX_STD_C::bitset<_Nb>>
+    : public __hash_base<size_t, _GLIBCXX_STD_C::bitset<_Nb>>
+    {
+      size_t
+      operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const
+      {
+	const size_t __clength = (_Nb + __CHAR_BIT__ - 1) / __CHAR_BIT__;
+	return std::_Hash_impl::hash(__b._M_getdata(), __clength);
+      }
+    };
+
+  template<>
+    struct hash<_GLIBCXX_STD_C::bitset<0>>
+    : public __hash_base<size_t, _GLIBCXX_STD_C::bitset<0>>
+    {
+      size_t
+      operator()(const _GLIBCXX_STD_C::bitset<0>&) const
+      { return 0; }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/bitset>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/bitset>
+#endif
+
+#endif /* _GLIBCXX_BITSET */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/chrono b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/chrono
new file mode 100644
index 000000000..89ded2c80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/chrono
@@ -0,0 +1,723 @@
+// <chrono> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/chrono
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_CHRONO
+#define _GLIBCXX_CHRONO 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <ratio>
+#include <type_traits>
+#include <limits>
+#include <ctime>
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  /**
+   * @defgroup chrono Time
+   * @ingroup utilities
+   *
+   * Classes and functions for time.
+   * @{
+   */
+
+  /** @namespace std::chrono
+   *  @brief ISO C++ 0x entities sub namespace for time and date.
+   */
+  namespace chrono
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    template<typename _Rep, typename _Period = ratio<1>>
+      struct duration;
+
+    template<typename _Clock, typename _Dur = typename _Clock::duration>
+      struct time_point;
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+  // 20.8.2.3 specialization of common_type (for duration)
+  template<typename _Rep1, typename _Period1, typename _Rep2, typename _Period2>
+    struct common_type<chrono::duration<_Rep1, _Period1>,
+		       chrono::duration<_Rep2, _Period2>>
+    {
+    private:
+      typedef __static_gcd<_Period1::num, _Period2::num> 	__gcd_num;
+      typedef __static_gcd<_Period1::den, _Period2::den> 	__gcd_den;
+      typedef typename common_type<_Rep1, _Rep2>::type		__cr;
+      typedef ratio<__gcd_num::value,
+		    (_Period1::den / __gcd_den::value) * _Period2::den> __r;
+
+    public:
+      typedef chrono::duration<__cr, __r> 			type;
+    };
+
+  // 20.8.2.3 specialization of common_type (for time_point)
+  template<typename _Clock, typename _Dur1, typename _Dur2>
+    struct common_type<chrono::time_point<_Clock, _Dur1>,
+		       chrono::time_point<_Clock, _Dur2>>
+    {
+    private:
+      typedef typename common_type<_Dur1, _Dur2>::type 		__ct;
+
+    public:
+      typedef chrono::time_point<_Clock, __ct> 			type;
+    };
+_GLIBCXX_END_NAMESPACE_VERSION
+
+  namespace chrono
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    // Primary template for duration_cast impl.
+    template<typename _ToDur, typename _CF, typename _CR,
+	     bool _NumIsOne = false, bool _DenIsOne = false>
+      struct __duration_cast_impl
+      {
+	template<typename _Rep, typename _Period>
+	  static constexpr _ToDur
+	  __cast(const duration<_Rep, _Period>& __d)
+	  {
+	    typedef typename _ToDur::rep			__to_rep;
+	    return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count())
+	      * static_cast<_CR>(_CF::num)
+	      / static_cast<_CR>(_CF::den)));
+	  }
+      };
+
+    template<typename _ToDur, typename _CF, typename _CR>
+      struct __duration_cast_impl<_ToDur, _CF, _CR, true, true>
+      {
+	template<typename _Rep, typename _Period>
+	  static constexpr _ToDur
+	  __cast(const duration<_Rep, _Period>& __d)
+	  {
+	    typedef typename _ToDur::rep			__to_rep;
+	    return _ToDur(static_cast<__to_rep>(__d.count()));
+	  }
+      };
+
+    template<typename _ToDur, typename _CF, typename _CR>
+      struct __duration_cast_impl<_ToDur, _CF, _CR, true, false>
+      {
+	template<typename _Rep, typename _Period>
+	  static constexpr _ToDur
+	  __cast(const duration<_Rep, _Period>& __d)
+	  {
+	    typedef typename _ToDur::rep			__to_rep;
+	    return _ToDur(static_cast<__to_rep>(
+	      static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den)));
+	  }
+      };
+
+    template<typename _ToDur, typename _CF, typename _CR>
+      struct __duration_cast_impl<_ToDur, _CF, _CR, false, true>
+      {
+	template<typename _Rep, typename _Period>
+	  static constexpr _ToDur
+	  __cast(const duration<_Rep, _Period>& __d)
+	  {
+	    typedef typename _ToDur::rep			__to_rep;
+	    return _ToDur(static_cast<__to_rep>(
+	      static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num)));
+	  }
+      };
+
+    template<typename _Tp>
+      struct __is_duration
+      : std::false_type
+      { };
+
+    template<typename _Rep, typename _Period>
+      struct __is_duration<duration<_Rep, _Period>>
+      : std::true_type
+      { };
+
+    /// duration_cast
+    template<typename _ToDur, typename _Rep, typename _Period>
+      inline constexpr typename enable_if<__is_duration<_ToDur>::value,
+				_ToDur>::type
+      duration_cast(const duration<_Rep, _Period>& __d)
+      {
+	typedef typename _ToDur::period				__to_period;
+	typedef typename _ToDur::rep				__to_rep;
+	typedef ratio_divide<_Period, __to_period> 		__r_div;
+	typedef typename __r_div::type 				__cf;
+	typedef typename common_type<__to_rep, _Rep, intmax_t>::type
+	  							__cr;
+	typedef  __duration_cast_impl<_ToDur, __cf, __cr,
+				      __cf::num == 1, __cf::den == 1> __dc;
+	return __dc::__cast(__d);
+      }
+
+    /// treat_as_floating_point
+    template<typename _Rep>
+      struct treat_as_floating_point
+      : is_floating_point<_Rep>
+      { };
+
+    /// duration_values
+    template<typename _Rep>
+      struct duration_values
+      {
+	static constexpr _Rep
+	zero()
+	{ return _Rep(0); }
+
+	static constexpr _Rep
+	max()
+	{ return numeric_limits<_Rep>::max(); }
+
+	static constexpr _Rep
+	min()
+	{ return numeric_limits<_Rep>::min(); }
+      };
+
+    template<typename T>
+      struct __is_ratio
+      : std::false_type
+      { };
+
+    template<intmax_t _Num, intmax_t _Den>
+      struct __is_ratio<ratio<_Num, _Den>>
+      : std::true_type
+      { };
+
+    /// duration
+    template<typename _Rep, typename _Period>
+      struct duration
+      {
+	typedef _Rep						rep;
+	typedef _Period 					period;
+
+	static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration");
+	static_assert(__is_ratio<_Period>::value,
+		      "period must be a specialization of ratio");
+	static_assert(_Period::num > 0, "period must be positive");
+
+	// 20.8.3.1 construction / copy / destroy
+	constexpr duration() : __r() { }
+
+	constexpr duration(const duration&) = default;
+
+	template<typename _Rep2, typename = typename
+	       enable_if<is_convertible<_Rep2, rep>::value
+			 && (treat_as_floating_point<rep>::value
+			     || !treat_as_floating_point<_Rep2>::value)>::type>
+	  constexpr explicit duration(const _Rep2& __rep)
+	  : __r(static_cast<rep>(__rep)) { }
+
+	template<typename _Rep2, typename _Period2, typename = typename
+	       enable_if<treat_as_floating_point<rep>::value
+			 || (ratio_divide<_Period2, period>::type::den == 1
+			     && !treat_as_floating_point<_Rep2>::value)>::type>
+	  constexpr duration(const duration<_Rep2, _Period2>& __d)
+	  : __r(duration_cast<duration>(__d).count()) { }
+
+	~duration() = default;
+	duration& operator=(const duration&) = default;
+
+	// 20.8.3.2 observer
+	constexpr rep
+	count() const
+	{ return __r; }
+
+	// 20.8.3.3 arithmetic
+	constexpr duration
+	operator+() const
+	{ return *this; }
+
+	constexpr duration
+	operator-() const
+	{ return duration(-__r); }
+
+	duration&
+	operator++()
+	{
+	  ++__r;
+	  return *this;
+	}
+
+	duration
+	operator++(int)
+	{ return duration(__r++); }
+
+	duration&
+	operator--()
+	{
+	  --__r;
+	  return *this;
+	}
+
+	duration
+	operator--(int)
+	{ return duration(__r--); }
+
+	duration&
+	operator+=(const duration& __d)
+	{
+	  __r += __d.count();
+	  return *this;
+	}
+
+	duration&
+	operator-=(const duration& __d)
+	{
+	  __r -= __d.count();
+	  return *this;
+	}
+
+	duration&
+	operator*=(const rep& __rhs)
+	{
+	  __r *= __rhs;
+	  return *this;
+	}
+
+	duration&
+	operator/=(const rep& __rhs)
+	{
+	  __r /= __rhs;
+	  return *this;
+	}
+
+	// DR 934.
+	template<typename _Rep2 = rep>
+	  typename enable_if<!treat_as_floating_point<_Rep2>::value,
+			     duration&>::type
+	  operator%=(const rep& __rhs)
+	  {
+	    __r %= __rhs;
+	    return *this;
+	  }
+
+	template<typename _Rep2 = rep>
+	  typename enable_if<!treat_as_floating_point<_Rep2>::value,
+			     duration&>::type
+	  operator%=(const duration& __d)
+	  {
+	    __r %= __d.count();
+	    return *this;
+	  }
+
+	// 20.8.3.4 special values
+	static constexpr duration
+	zero()
+	{ return duration(duration_values<rep>::zero()); }
+
+	static constexpr duration
+	min()
+	{ return duration(duration_values<rep>::min()); }
+
+	static constexpr duration
+	max()
+	{ return duration(duration_values<rep>::max()); }
+
+      private:
+	rep __r;
+      };
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline typename common_type<duration<_Rep1, _Period1>,
+				  duration<_Rep2, _Period2>>::type
+      operator+(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs) += __rhs;
+      }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline typename common_type<duration<_Rep1, _Period1>,
+				  duration<_Rep2, _Period2>>::type
+      operator-(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs) -= __rhs;
+      }
+
+    template<typename _Rep1, typename _Rep2, bool =
+	     is_convertible<_Rep2,
+			    typename common_type<_Rep1, _Rep2>::type>::value>
+      struct __common_rep_type { };
+
+    template<typename _Rep1, typename _Rep2>
+      struct __common_rep_type<_Rep1, _Rep2, true>
+      { typedef typename common_type<_Rep1, _Rep2>::type type; };
+
+    template<typename _Rep1, typename _Period, typename _Rep2>
+      inline duration<typename __common_rep_type<_Rep1, _Rep2>::type, _Period>
+      operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
+      {
+	typedef typename common_type<_Rep1, _Rep2>::type 	__cr;
+	return duration<__cr, _Period>(__d) *= __s;
+      }
+
+    template<typename _Rep1, typename _Period, typename _Rep2>
+      inline duration<typename __common_rep_type<_Rep2, _Rep1>::type, _Period>
+      operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d)
+      { return __d * __s; }
+
+    template<typename _Rep1, typename _Period, typename _Rep2>
+      inline duration<typename __common_rep_type<_Rep1, typename
+	enable_if<!__is_duration<_Rep2>::value, _Rep2>::type>::type, _Period>
+      operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
+      {
+	typedef typename common_type<_Rep1, _Rep2>::type 	__cr;
+	return duration<__cr, _Period>(__d) /= __s;
+      }
+
+     template<typename _Rep1, typename _Period1,
+	      typename _Rep2, typename _Period2>
+      inline typename common_type<_Rep1, _Rep2>::type
+      operator/(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs).count() / __ct(__rhs).count();
+      }
+
+    // DR 934.
+    template<typename _Rep1, typename _Period, typename _Rep2>
+      inline duration<typename __common_rep_type<_Rep1, typename
+	enable_if<!__is_duration<_Rep2>::value, _Rep2>::type>::type, _Period>
+      operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
+      {
+	typedef typename common_type<_Rep1, _Rep2>::type 	__cr;
+	return duration<__cr, _Period>(__d) %= __s;
+      }
+
+     template<typename _Rep1, typename _Period1,
+	      typename _Rep2, typename _Period2>
+      inline typename common_type<duration<_Rep1, _Period1>,
+				  duration<_Rep2, _Period2>>::type
+      operator%(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs) %= __rhs;
+      }
+
+    // comparisons
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator==(const duration<_Rep1, _Period1>& __lhs,
+		 const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs).count() == __ct(__rhs).count();
+      }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator<(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep1, _Period1>			__dur1;
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<__dur1,__dur2>::type	__ct;
+	return __ct(__lhs).count() < __ct(__rhs).count();
+      }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator!=(const duration<_Rep1, _Period1>& __lhs,
+		 const duration<_Rep2, _Period2>& __rhs)
+      { return !(__lhs == __rhs); }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator<=(const duration<_Rep1, _Period1>& __lhs,
+		 const duration<_Rep2, _Period2>& __rhs)
+      { return !(__rhs < __lhs); }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator>(const duration<_Rep1, _Period1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      { return __rhs < __lhs; }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Rep2, typename _Period2>
+      inline constexpr bool
+      operator>=(const duration<_Rep1, _Period1>& __lhs,
+		 const duration<_Rep2, _Period2>& __rhs)
+      { return !(__lhs < __rhs); }
+
+    /// nanoseconds
+    typedef duration<int64_t, nano> 	nanoseconds;
+
+    /// microseconds
+    typedef duration<int64_t, micro> 	microseconds;
+
+    /// milliseconds
+    typedef duration<int64_t, milli> 	milliseconds;
+
+    /// seconds
+    typedef duration<int64_t> 		seconds;
+
+    /// minutes
+    typedef duration<int, ratio< 60>> 	minutes;
+
+    /// hours
+    typedef duration<int, ratio<3600>> 	hours;
+
+    /// time_point
+    template<typename _Clock, typename _Dur>
+      struct time_point
+      {
+	typedef _Clock			  			clock;
+	typedef _Dur		  				duration;
+	typedef typename duration::rep	  			rep;
+	typedef typename duration::period			period;
+
+	constexpr time_point() : __d(duration::zero())
+	{ }
+
+	constexpr explicit time_point(const duration& __dur)
+	: __d(__dur)
+	{ }
+
+	// conversions
+	template<typename _Dur2>
+	  constexpr time_point(const time_point<clock, _Dur2>& __t)
+	  : __d(__t.time_since_epoch())
+	  { }
+
+	// observer
+	constexpr duration
+	time_since_epoch() const
+	{ return __d; }
+
+	// arithmetic
+	time_point&
+	operator+=(const duration& __dur)
+	{
+	  __d += __dur;
+	  return *this;
+	}
+
+	time_point&
+	operator-=(const duration& __dur)
+	{
+	  __d -= __dur;
+	  return *this;
+	}
+
+	// special values
+	static constexpr time_point
+	min()
+	{ return time_point(duration::min()); }
+
+	static constexpr time_point
+	max()
+	{ return time_point(duration::max()); }
+
+      private:
+	duration __d;
+      };
+
+    /// time_point_cast
+    template<typename _ToDur, typename _Clock, typename _Dur>
+      inline constexpr typename enable_if<__is_duration<_ToDur>::value,
+				time_point<_Clock, _ToDur>>::type
+      time_point_cast(const time_point<_Clock, _Dur>& __t)
+      {
+	typedef time_point<_Clock, _ToDur> 			__time_point;
+	return __time_point(duration_cast<_ToDur>(__t.time_since_epoch()));
+      }
+
+    template<typename _Clock, typename _Dur1,
+	     typename _Rep2, typename _Period2>
+      inline time_point<_Clock,
+	typename common_type<_Dur1, duration<_Rep2, _Period2>>::type>
+      operator+(const time_point<_Clock, _Dur1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      {
+	typedef duration<_Rep2, _Period2>			__dur2;
+	typedef typename common_type<_Dur1,__dur2>::type	__ct;
+	typedef time_point<_Clock, __ct> 			__time_point;
+	return __time_point(__lhs) += __rhs;
+      }
+
+    template<typename _Rep1, typename _Period1,
+	     typename _Clock, typename _Dur2>
+      inline time_point<_Clock,
+	typename common_type<duration<_Rep1, _Period1>, _Dur2>::type>
+      operator+(const duration<_Rep1, _Period1>& __lhs,
+		const time_point<_Clock, _Dur2>& __rhs)
+      { return __rhs + __lhs; }
+
+    template<typename _Clock, typename _Dur1,
+	     typename _Rep2, typename _Period2>
+      inline time_point<_Clock,
+	typename common_type<_Dur1, duration<_Rep2, _Period2>>::type>
+      operator-(const time_point<_Clock, _Dur1>& __lhs,
+		const duration<_Rep2, _Period2>& __rhs)
+      { return __lhs + (-__rhs); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline typename common_type<_Dur1, _Dur2>::type
+      operator-(const time_point<_Clock, _Dur1>& __lhs,
+		const time_point<_Clock, _Dur2>& __rhs)
+      { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator==(const time_point<_Clock, _Dur1>& __lhs,
+		 const time_point<_Clock, _Dur2>& __rhs)
+      { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator!=(const time_point<_Clock, _Dur1>& __lhs,
+		 const time_point<_Clock, _Dur2>& __rhs)
+      { return !(__lhs == __rhs); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator<(const time_point<_Clock, _Dur1>& __lhs,
+		const time_point<_Clock, _Dur2>& __rhs)
+      { return  __lhs.time_since_epoch() < __rhs.time_since_epoch(); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator<=(const time_point<_Clock, _Dur1>& __lhs,
+		 const time_point<_Clock, _Dur2>& __rhs)
+      { return !(__rhs < __lhs); }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator>(const time_point<_Clock, _Dur1>& __lhs,
+		const time_point<_Clock, _Dur2>& __rhs)
+      { return __rhs < __lhs; }
+
+    template<typename _Clock, typename _Dur1, typename _Dur2>
+      inline constexpr bool
+      operator>=(const time_point<_Clock, _Dur1>& __lhs,
+		 const time_point<_Clock, _Dur2>& __rhs)
+      { return !(__lhs < __rhs); }
+
+    /// system_clock
+    struct system_clock
+    {
+#ifdef _GLIBCXX_USE_CLOCK_REALTIME
+      typedef chrono::nanoseconds     				duration;
+#elif defined(_GLIBCXX_USE_GETTIMEOFDAY)
+      typedef chrono::microseconds    				duration;
+#else
+      typedef chrono::seconds	      				duration;
+#endif
+
+      typedef duration::rep    					rep;
+      typedef duration::period 					period;
+      typedef chrono::time_point<system_clock, duration> 	time_point;
+
+      static_assert(system_clock::duration::min()
+		    < system_clock::duration::zero(),
+		    "a clock's minimum duration cannot be less than its epoch");
+
+      static constexpr bool is_monotonic = false;
+
+      static time_point
+      now() throw ();
+
+      // Map to C API
+      static std::time_t
+      to_time_t(const time_point& __t)
+      {
+	return std::time_t(duration_cast<chrono::seconds>
+			   (__t.time_since_epoch()).count());
+      }
+
+      static time_point
+      from_time_t(std::time_t __t)
+      {
+	typedef chrono::time_point<system_clock, seconds>	__from;
+	return time_point_cast<system_clock::duration>
+	       (__from(chrono::seconds(__t)));
+      }
+    };
+
+#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
+    /// monotonic_clock
+    struct monotonic_clock
+    {
+      typedef chrono::nanoseconds 				duration;
+      typedef duration::rep	  				rep;
+      typedef duration::period	  				period;
+      typedef chrono::time_point<monotonic_clock, duration> 	time_point;
+
+      static constexpr bool is_monotonic = true;
+
+      static time_point
+      now();
+    };
+#else
+    typedef system_clock monotonic_clock;
+#endif
+
+    typedef system_clock high_resolution_clock;
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace chrono
+
+  // @} group chrono
+} // namespace
+
+#endif //_GLIBCXX_USE_C99_STDINT_TR1
+
+#endif //__GXX_EXPERIMENTAL_CXX0X__
+
+#endif //_GLIBCXX_CHRONO
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/complex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/complex
new file mode 100644
index 000000000..aa6e81d24
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/complex
@@ -0,0 +1,1936 @@
+// The template and inlines for the -*- C++ -*- complex number classes.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/complex
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 26.2  Complex Numbers
+// Note: this is not a conforming implementation.
+// Initially implemented by Ulrich Drepper <drepper@cygnus.com>
+// Improved by Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
+//
+
+#ifndef _GLIBCXX_COMPLEX
+#define _GLIBCXX_COMPLEX 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+#include <cmath>
+#include <sstream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup complex_numbers Complex Numbers
+   * @ingroup numerics
+   *
+   * Classes and functions for complex numbers.
+   * @{
+   */
+
+  // Forward declarations.
+  template<typename _Tp> class complex;
+  template<> class complex<float>;
+  template<> class complex<double>;
+  template<> class complex<long double>;
+
+  ///  Return magnitude of @a z.
+  template<typename _Tp> _Tp abs(const complex<_Tp>&);
+  ///  Return phase angle of @a z.
+  template<typename _Tp> _Tp arg(const complex<_Tp>&);
+  ///  Return @a z magnitude squared.
+  template<typename _Tp> _Tp norm(const complex<_Tp>&);
+
+  ///  Return complex conjugate of @a z.
+  template<typename _Tp> complex<_Tp> conj(const complex<_Tp>&);
+  ///  Return complex with magnitude @a rho and angle @a theta.
+  template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = 0);
+
+  // Transcendentals:
+  /// Return complex cosine of @a z.
+  template<typename _Tp> complex<_Tp> cos(const complex<_Tp>&);
+  /// Return complex hyperbolic cosine of @a z.
+  template<typename _Tp> complex<_Tp> cosh(const complex<_Tp>&);
+  /// Return complex base e exponential of @a z.
+  template<typename _Tp> complex<_Tp> exp(const complex<_Tp>&);
+  /// Return complex natural logarithm of @a z.
+  template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
+  /// Return complex base 10 logarithm of @a z.
+  template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+  // DR 844.
+  /// Return @a x to the @a y'th power.
+  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
+#endif
+  /// Return @a x to the @a y'th power.
+  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
+  /// Return @a x to the @a y'th power.
+  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, 
+                                          const complex<_Tp>&);
+  /// Return @a x to the @a y'th power.
+  template<typename _Tp> complex<_Tp> pow(const _Tp&, const complex<_Tp>&);
+  /// Return complex sine of @a z.
+  template<typename _Tp> complex<_Tp> sin(const complex<_Tp>&);
+  /// Return complex hyperbolic sine of @a z.
+  template<typename _Tp> complex<_Tp> sinh(const complex<_Tp>&);
+  /// Return complex square root of @a z.
+  template<typename _Tp> complex<_Tp> sqrt(const complex<_Tp>&);
+  /// Return complex tangent of @a z.
+  template<typename _Tp> complex<_Tp> tan(const complex<_Tp>&);
+  /// Return complex hyperbolic tangent of @a z.
+  template<typename _Tp> complex<_Tp> tanh(const complex<_Tp>&);
+    
+    
+  // 26.2.2  Primary template class complex
+  /**
+   *  Template to represent complex numbers.
+   *
+   *  Specializations for float, double, and long double are part of the
+   *  library.  Results with any other type are not guaranteed.
+   *
+   *  @param  Tp  Type of real and imaginary values.
+  */
+  template<typename _Tp>
+    struct complex
+    {
+      /// Value typedef.
+      typedef _Tp value_type;
+      
+      ///  Default constructor.  First parameter is x, second parameter is y.
+      ///  Unspecified parameters default to 0.
+      _GLIBCXX_CONSTEXPR complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp())
+      : _M_real(__r), _M_imag(__i) { }
+
+      // Lets the compiler synthesize the copy constructor   
+      // complex (const complex<_Tp>&);
+      ///  Copy constructor.
+      template<typename _Up>
+        _GLIBCXX_CONSTEXPR complex(const complex<_Up>& __z)
+	: _M_real(__z.real()), _M_imag(__z.imag()) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      constexpr _Tp 
+      real() const { return _M_real; }
+
+      constexpr _Tp 
+      imag() const { return _M_imag; }
+#else
+      ///  Return real part of complex number.
+      _Tp& 
+      real() { return _M_real; }
+
+      ///  Return real part of complex number.
+      const _Tp& 
+      real() const { return _M_real; }
+
+      ///  Return imaginary part of complex number.
+      _Tp& 
+      imag() { return _M_imag; }
+
+      ///  Return imaginary part of complex number.
+      const _Tp& 
+      imag() const { return _M_imag; }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      void 
+      real(_Tp __val) { _M_real = __val; }
+
+      void 
+      imag(_Tp __val) { _M_imag = __val; }
+
+      /// Assign this complex number to scalar @a t.
+      complex<_Tp>& operator=(const _Tp&);
+      
+      /// Add @a t to this complex number.
+      // 26.2.5/1
+      complex<_Tp>&
+      operator+=(const _Tp& __t)
+      {
+	_M_real += __t;
+	return *this;
+      }
+
+      /// Subtract @a t from this complex number.
+      // 26.2.5/3
+      complex<_Tp>&
+      operator-=(const _Tp& __t)
+      {
+	_M_real -= __t;
+	return *this;
+      }
+
+      /// Multiply this complex number by @a t.
+      complex<_Tp>& operator*=(const _Tp&);
+      /// Divide this complex number by @a t.
+      complex<_Tp>& operator/=(const _Tp&);
+
+      // Lets the compiler synthesize the
+      // copy and assignment operator
+      // complex<_Tp>& operator= (const complex<_Tp>&);
+      /// Assign this complex number to complex @a z.
+      template<typename _Up>
+        complex<_Tp>& operator=(const complex<_Up>&);
+      /// Add @a z to this complex number.
+      template<typename _Up>
+        complex<_Tp>& operator+=(const complex<_Up>&);
+      /// Subtract @a z from this complex number.
+      template<typename _Up>
+        complex<_Tp>& operator-=(const complex<_Up>&);
+      /// Multiply this complex number by @a z.
+      template<typename _Up>
+        complex<_Tp>& operator*=(const complex<_Up>&);
+      /// Divide this complex number by @a z.
+      template<typename _Up>
+        complex<_Tp>& operator/=(const complex<_Up>&);
+
+      _GLIBCXX_USE_CONSTEXPR complex __rep() const
+      { return *this; }
+
+    private:
+      _Tp _M_real;
+      _Tp _M_imag;
+    };
+
+  template<typename _Tp>
+    complex<_Tp>&
+    complex<_Tp>::operator=(const _Tp& __t)
+    {
+     _M_real = __t;
+     _M_imag = _Tp();
+     return *this;
+    } 
+
+  // 26.2.5/5
+  template<typename _Tp>
+    complex<_Tp>&
+    complex<_Tp>::operator*=(const _Tp& __t)
+    {
+      _M_real *= __t;
+      _M_imag *= __t;
+      return *this;
+    }
+
+  // 26.2.5/7
+  template<typename _Tp>
+    complex<_Tp>&
+    complex<_Tp>::operator/=(const _Tp& __t)
+    {
+      _M_real /= __t;
+      _M_imag /= __t;
+      return *this;
+    }
+
+  template<typename _Tp>
+    template<typename _Up>
+    complex<_Tp>&
+    complex<_Tp>::operator=(const complex<_Up>& __z)
+    {
+      _M_real = __z.real();
+      _M_imag = __z.imag();
+      return *this;
+    }
+
+  // 26.2.5/9
+  template<typename _Tp>
+    template<typename _Up>
+    complex<_Tp>&
+    complex<_Tp>::operator+=(const complex<_Up>& __z)
+    {
+      _M_real += __z.real();
+      _M_imag += __z.imag();
+      return *this;
+    }
+
+  // 26.2.5/11
+  template<typename _Tp>
+    template<typename _Up>
+    complex<_Tp>&
+    complex<_Tp>::operator-=(const complex<_Up>& __z)
+    {
+      _M_real -= __z.real();
+      _M_imag -= __z.imag();
+      return *this;
+    }
+
+  // 26.2.5/13
+  // XXX: This is a grammar school implementation.
+  template<typename _Tp>
+    template<typename _Up>
+    complex<_Tp>&
+    complex<_Tp>::operator*=(const complex<_Up>& __z)
+    {
+      const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag();
+      _M_imag = _M_real * __z.imag() + _M_imag * __z.real();
+      _M_real = __r;
+      return *this;
+    }
+
+  // 26.2.5/15
+  // XXX: This is a grammar school implementation.
+  template<typename _Tp>
+    template<typename _Up>
+    complex<_Tp>&
+    complex<_Tp>::operator/=(const complex<_Up>& __z)
+    {
+      const _Tp __r =  _M_real * __z.real() + _M_imag * __z.imag();
+      const _Tp __n = std::norm(__z);
+      _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n;
+      _M_real = __r / __n;
+      return *this;
+    }
+    
+  // Operators:
+  //@{
+  ///  Return new complex value @a x plus @a y.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator+(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r += __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator+(const complex<_Tp>& __x, const _Tp& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r += __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator+(const _Tp& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __y;
+      __r += __x;
+      return __r;
+    }
+  //@}
+
+  //@{
+  ///  Return new complex value @a x minus @a y.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r -= __y;
+      return __r;
+    }
+    
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator-(const complex<_Tp>& __x, const _Tp& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r -= __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator-(const _Tp& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r(__x, -__y.imag());
+      __r -= __y.real();
+      return __r;
+    }
+  //@}
+
+  //@{
+  ///  Return new complex value @a x times @a y.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r *= __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator*(const complex<_Tp>& __x, const _Tp& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r *= __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator*(const _Tp& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __y;
+      __r *= __x;
+      return __r;
+    }
+  //@}
+
+  //@{
+  ///  Return new complex value @a x divided by @a y.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r /= __y;
+      return __r;
+    }
+    
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator/(const complex<_Tp>& __x, const _Tp& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r /= __y;
+      return __r;
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator/(const _Tp& __x, const complex<_Tp>& __y)
+    {
+      complex<_Tp> __r = __x;
+      __r /= __y;
+      return __r;
+    }
+  //@}
+
+  ///  Return @a x.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator+(const complex<_Tp>& __x)
+    { return __x; }
+
+  ///  Return complex negation of @a x.
+  template<typename _Tp>
+    inline complex<_Tp>
+    operator-(const complex<_Tp>& __x)
+    {  return complex<_Tp>(-__x.real(), -__x.imag()); }
+
+  //@{
+  ///  Return true if @a x is equal to @a y.
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    { return __x.real() == __y.real() && __x.imag() == __y.imag(); }
+
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator==(const complex<_Tp>& __x, const _Tp& __y)
+    { return __x.real() == __y && __x.imag() == _Tp(); }
+
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator==(const _Tp& __x, const complex<_Tp>& __y)
+    { return __x == __y.real() && _Tp() == __y.imag(); }
+  //@}
+
+  //@{
+  ///  Return false if @a x is equal to @a y.
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    { return __x.real() != __y.real() || __x.imag() != __y.imag(); }
+
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator!=(const complex<_Tp>& __x, const _Tp& __y)
+    { return __x.real() != __y || __x.imag() != _Tp(); }
+
+  template<typename _Tp>
+    inline _GLIBCXX_CONSTEXPR bool
+    operator!=(const _Tp& __x, const complex<_Tp>& __y)
+    { return __x != __y.real() || _Tp() != __y.imag(); }
+  //@}
+
+  ///  Extraction operator for complex values.
+  template<typename _Tp, typename _CharT, class _Traits>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)
+    {
+      _Tp __re_x, __im_x;
+      _CharT __ch;
+      __is >> __ch;
+      if (__ch == '(') 
+	{
+	  __is >> __re_x >> __ch;
+	  if (__ch == ',') 
+	    {
+	      __is >> __im_x >> __ch;
+	      if (__ch == ')') 
+		__x = complex<_Tp>(__re_x, __im_x);
+	      else
+		__is.setstate(ios_base::failbit);
+	    }
+	  else if (__ch == ')') 
+	    __x = __re_x;
+	  else
+	    __is.setstate(ios_base::failbit);
+	}
+      else 
+	{
+	  __is.putback(__ch);
+	  __is >> __re_x;
+	  __x = __re_x;
+	}
+      return __is;
+    }
+
+  ///  Insertion operator for complex values.
+  template<typename _Tp, typename _CharT, class _Traits>
+    basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
+    {
+      basic_ostringstream<_CharT, _Traits> __s;
+      __s.flags(__os.flags());
+      __s.imbue(__os.getloc());
+      __s.precision(__os.precision());
+      __s << '(' << __x.real() << ',' << __x.imag() << ')';
+      return __os << __s.str();
+    }
+
+  // Values
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    inline constexpr _Tp
+    real(const complex<_Tp>& __z)
+    { return __z.real(); }
+    
+  template<typename _Tp>
+    inline constexpr _Tp
+    imag(const complex<_Tp>& __z)
+    { return __z.imag(); }
+#else
+  template<typename _Tp>
+    inline _Tp&
+    real(complex<_Tp>& __z)
+    { return __z.real(); }
+    
+  template<typename _Tp>
+    inline const _Tp&
+    real(const complex<_Tp>& __z)
+    { return __z.real(); }
+    
+  template<typename _Tp>
+    inline _Tp&
+    imag(complex<_Tp>& __z)
+    { return __z.imag(); }
+    
+  template<typename _Tp>
+    inline const _Tp&
+    imag(const complex<_Tp>& __z)
+    { return __z.imag(); }
+#endif
+
+  // 26.2.7/3 abs(__z):  Returns the magnitude of __z.
+  template<typename _Tp>
+    inline _Tp
+    __complex_abs(const complex<_Tp>& __z)
+    {
+      _Tp __x = __z.real();
+      _Tp __y = __z.imag();
+      const _Tp __s = std::max(abs(__x), abs(__y));
+      if (__s == _Tp())  // well ...
+        return __s;
+      __x /= __s; 
+      __y /= __s;
+      return __s * sqrt(__x * __x + __y * __y);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline float
+  __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); }
+
+  inline double
+  __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); }
+
+  inline long double
+  __complex_abs(const __complex__ long double& __z)
+  { return __builtin_cabsl(__z); }
+
+  template<typename _Tp>
+    inline _Tp
+    abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline _Tp
+    abs(const complex<_Tp>& __z) { return __complex_abs(__z); }
+#endif  
+
+
+  // 26.2.7/4: arg(__z): Returns the phase angle of __z.
+  template<typename _Tp>
+    inline _Tp
+    __complex_arg(const complex<_Tp>& __z)
+    { return  atan2(__z.imag(), __z.real()); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline float
+  __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); }
+
+  inline double
+  __complex_arg(__complex__ double __z) { return __builtin_carg(__z); }
+
+  inline long double
+  __complex_arg(const __complex__ long double& __z)
+  { return __builtin_cargl(__z); }
+
+  template<typename _Tp>
+    inline _Tp
+    arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline _Tp
+    arg(const complex<_Tp>& __z) { return __complex_arg(__z); }
+#endif
+
+  // 26.2.7/5: norm(__z) returns the squared magnitude of __z.
+  //     As defined, norm() is -not- a norm is the common mathematical
+  //     sens used in numerics.  The helper class _Norm_helper<> tries to
+  //     distinguish between builtin floating point and the rest, so as
+  //     to deliver an answer as close as possible to the real value.
+  template<bool>
+    struct _Norm_helper
+    {
+      template<typename _Tp>
+        static inline _Tp _S_do_it(const complex<_Tp>& __z)
+        {
+          const _Tp __x = __z.real();
+          const _Tp __y = __z.imag();
+          return __x * __x + __y * __y;
+        }
+    };
+
+  template<>
+    struct _Norm_helper<true>
+    {
+      template<typename _Tp>
+        static inline _Tp _S_do_it(const complex<_Tp>& __z)
+        {
+          _Tp __res = std::abs(__z);
+          return __res * __res;
+        }
+    };
+  
+  template<typename _Tp>
+    inline _Tp
+    norm(const complex<_Tp>& __z)
+    {
+      return _Norm_helper<__is_floating<_Tp>::__value 
+	&& !_GLIBCXX_FAST_MATH>::_S_do_it(__z);
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    polar(const _Tp& __rho, const _Tp& __theta)
+    { return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    conj(const complex<_Tp>& __z)
+    { return complex<_Tp>(__z.real(), -__z.imag()); }
+  
+  // Transcendentals
+
+  // 26.2.8/1 cos(__z):  Returns the cosine of __z.
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_cos(const complex<_Tp>& __z)
+    {
+      const _Tp __x = __z.real();
+      const _Tp __y = __z.imag();
+      return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); }
+
+  inline __complex__ double
+  __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); }
+
+  inline __complex__ long double
+  __complex_cos(const __complex__ long double& __z)
+  { return __builtin_ccosl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    cos(const complex<_Tp>& __z) { return __complex_cos(__z); }
+#endif
+
+  // 26.2.8/2 cosh(__z): Returns the hyperbolic cosine of __z.
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_cosh(const complex<_Tp>& __z)
+    {
+      const _Tp __x = __z.real();
+      const _Tp __y = __z.imag();
+      return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); }
+
+  inline __complex__ double
+  __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); }
+
+  inline __complex__ long double
+  __complex_cosh(const __complex__ long double& __z)
+  { return __builtin_ccoshl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    cosh(const complex<_Tp>& __z) { return __complex_cosh(__z); }
+#endif
+
+  // 26.2.8/3 exp(__z): Returns the complex base e exponential of x
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_exp(const complex<_Tp>& __z)
+    { return std::polar(exp(__z.real()), __z.imag()); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); }
+
+  inline __complex__ double
+  __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); }
+
+  inline __complex__ long double
+  __complex_exp(const __complex__ long double& __z)
+  { return __builtin_cexpl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    exp(const complex<_Tp>& __z) { return __complex_exp(__z); }
+#endif
+
+  // 26.2.8/5 log(__z): Returns the natural complex logarithm of __z.
+  //                    The branch cut is along the negative axis.
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_log(const complex<_Tp>& __z)
+    { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_log(__complex__ float __z) { return __builtin_clogf(__z); }
+
+  inline __complex__ double
+  __complex_log(__complex__ double __z) { return __builtin_clog(__z); }
+
+  inline __complex__ long double
+  __complex_log(const __complex__ long double& __z)
+  { return __builtin_clogl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    log(const complex<_Tp>& __z) { return __complex_log(__z); }
+#endif
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    log10(const complex<_Tp>& __z)
+    { return std::log(__z) / log(_Tp(10.0)); }
+
+  // 26.2.8/10 sin(__z): Returns the sine of __z.
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_sin(const complex<_Tp>& __z)
+    {
+      const _Tp __x = __z.real();
+      const _Tp __y = __z.imag();
+      return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y)); 
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); }
+
+  inline __complex__ double
+  __complex_sin(__complex__ double __z) { return __builtin_csin(__z); }
+
+  inline __complex__ long double
+  __complex_sin(const __complex__ long double& __z)
+  { return __builtin_csinl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    sin(const complex<_Tp>& __z) { return __complex_sin(__z); }
+#endif
+
+  // 26.2.8/11 sinh(__z): Returns the hyperbolic sine of __z.
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_sinh(const complex<_Tp>& __z)
+    {
+      const _Tp __x = __z.real();
+      const _Tp  __y = __z.imag();
+      return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); }      
+
+  inline __complex__ double
+  __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); }      
+
+  inline __complex__ long double
+  __complex_sinh(const __complex__ long double& __z)
+  { return __builtin_csinhl(__z); }      
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    sinh(const complex<_Tp>& __z) { return __complex_sinh(__z); }
+#endif
+
+  // 26.2.8/13 sqrt(__z): Returns the complex square root of __z.
+  //                     The branch cut is on the negative axis.
+  template<typename _Tp>
+    complex<_Tp>
+    __complex_sqrt(const complex<_Tp>& __z)
+    {
+      _Tp __x = __z.real();
+      _Tp __y = __z.imag();
+
+      if (__x == _Tp())
+        {
+          _Tp __t = sqrt(abs(__y) / 2);
+          return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
+        }
+      else
+        {
+          _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
+          _Tp __u = __t / 2;
+          return __x > _Tp()
+            ? complex<_Tp>(__u, __y / __t)
+            : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
+        }
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); }
+
+  inline __complex__ double
+  __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); }
+
+  inline __complex__ long double
+  __complex_sqrt(const __complex__ long double& __z)
+  { return __builtin_csqrtl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z); }
+#endif
+
+  // 26.2.8/14 tan(__z):  Return the complex tangent of __z.
+  
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_tan(const complex<_Tp>& __z)
+    { return std::sin(__z) / std::cos(__z); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); }
+
+  inline __complex__ double
+  __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); }
+
+  inline __complex__ long double
+  __complex_tan(const __complex__ long double& __z)
+  { return __builtin_ctanl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    tan(const complex<_Tp>& __z) { return __complex_tan(__z); }
+#endif
+
+
+  // 26.2.8/15 tanh(__z):  Returns the hyperbolic tangent of __z.
+  
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_tanh(const complex<_Tp>& __z)
+    { return std::sinh(__z) / std::cosh(__z); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); }
+
+  inline __complex__ double
+  __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); }
+
+  inline __complex__ long double
+  __complex_tanh(const __complex__ long double& __z)
+  { return __builtin_ctanhl(__z); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    tanh(const complex<_Tp>& __z) { return __complex_tanh(__z); }
+#endif
+
+
+  // 26.2.8/9  pow(__x, __y): Returns the complex power base of __x
+  //                          raised to the __y-th power.  The branch
+  //                          cut is on the negative axis.
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    complex<_Tp>
+    __complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
+    {
+      complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1);
+
+      while (__n >>= 1)
+        {
+          __x *= __x;
+          if (__n % 2)
+            __y *= __x;
+        }
+
+      return __y;
+    }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // DR 844. complex pow return type is ambiguous.
+  template<typename _Tp>
+    inline complex<_Tp>
+    pow(const complex<_Tp>& __z, int __n)
+    {
+      return __n < 0
+        ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -__n)
+        : std::__complex_pow_unsigned(__z, __n);
+    }
+#endif
+
+  template<typename _Tp>
+    complex<_Tp>
+    pow(const complex<_Tp>& __x, const _Tp& __y)
+    {
+#ifndef _GLIBCXX_USE_C99_COMPLEX
+      if (__x == _Tp())
+	return _Tp();
+#endif
+      if (__x.imag() == _Tp() && __x.real() > _Tp())
+        return pow(__x.real(), __y);
+
+      complex<_Tp> __t = std::log(__x);
+      return std::polar(exp(__y * __t.real()), __y * __t.imag());
+    }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_pow(__complex__ float __x, __complex__ float __y)
+  { return __builtin_cpowf(__x, __y); }
+
+  inline __complex__ double
+  __complex_pow(__complex__ double __x, __complex__ double __y)
+  { return __builtin_cpow(__x, __y); }
+
+  inline __complex__ long double
+  __complex_pow(const __complex__ long double& __x,
+		const __complex__ long double& __y)
+  { return __builtin_cpowl(__x, __y); }
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    { return __complex_pow(__x.__rep(), __y.__rep()); }
+#else
+  template<typename _Tp>
+    inline complex<_Tp>
+    pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
+    { return __complex_pow(__x, __y); }
+#endif
+
+  template<typename _Tp>
+    inline complex<_Tp>
+    pow(const _Tp& __x, const complex<_Tp>& __y)
+    {
+      return __x > _Tp() ? std::polar(pow(__x, __y.real()),
+				      __y.imag() * log(__x))
+	                 : std::pow(complex<_Tp>(__x), __y);
+    }
+
+  // 26.2.3  complex specializations
+  // complex<float> specialization
+  template<>
+    struct complex<float>
+    {
+      typedef float value_type;
+      typedef __complex__ float _ComplexT;
+
+      _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { }
+
+      _GLIBCXX_CONSTEXPR complex(float __r = 0.0f, float __i = 0.0f)
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // The list-initialization extension to __complex__ types is
+      // not available in GCC 4.6.  Thus libstdc++/48760 cannot be
+      // fixed in C++0x mode, unfortunately.
+      : _M_value(__r + __i * 1.0fi) { }
+#else
+      {
+	__real__ _M_value = __r;
+	__imag__ _M_value = __i;
+      }
+#endif
+
+      explicit _GLIBCXX_CONSTEXPR complex(const complex<double>&);
+      explicit _GLIBCXX_CONSTEXPR complex(const complex<long double>&);	
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      constexpr float 
+      real() const { return __real__ _M_value; }
+
+      constexpr float 
+      imag() const { return __imag__ _M_value; }
+#else
+      float& 
+      real() { return __real__ _M_value; }
+
+      const float& 
+      real() const { return __real__ _M_value; }      
+
+      float& 
+      imag() { return __imag__ _M_value; }
+
+      const float& 
+      imag() const { return __imag__ _M_value; }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      void 
+      real(float __val) { __real__ _M_value = __val; }
+
+      void 
+      imag(float __val) { __imag__ _M_value = __val; }
+
+      complex&
+      operator=(float __f)
+      {
+	_M_value = __f;
+	return *this;
+      }
+
+      complex&
+      operator+=(float __f)
+      {
+	_M_value += __f;
+	return *this;
+      }
+
+      complex&
+      operator-=(float __f)
+      {
+	_M_value -= __f;
+	return *this;
+      }
+
+      complex&
+      operator*=(float __f)
+      {
+	_M_value *= __f;
+	return *this;
+      }
+
+      complex&
+      operator/=(float __f)
+      {
+	_M_value /= __f;
+	return *this;
+      }
+
+      // Let the compiler synthesize the copy and assignment
+      // operator.  It always does a pretty good job.
+      // complex& operator=(const complex&);
+
+      template<typename _Tp>
+        complex&
+        operator=(const complex<_Tp>&  __z)
+	{
+	  __real__ _M_value = __z.real();
+	  __imag__ _M_value = __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+        operator+=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value += __z.real();
+	  __imag__ _M_value += __z.imag();
+	  return *this;
+	}
+
+      template<class _Tp>
+        complex&
+        operator-=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value -= __z.real();
+	  __imag__ _M_value -= __z.imag();
+	  return *this;
+	}
+
+      template<class _Tp>
+        complex&
+        operator*=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value *= __t;
+	  return *this;
+	}
+
+      template<class _Tp>
+        complex&
+        operator/=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value /= __t;
+	  return *this;
+	}
+
+      _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; }
+
+    private:
+      _ComplexT _M_value;
+    };
+
+  // 26.2.3  complex specializations
+  // complex<double> specialization
+  template<>
+    struct complex<double>
+    {
+      typedef double value_type;
+      typedef __complex__ double _ComplexT;
+
+      _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { }
+
+      _GLIBCXX_CONSTEXPR complex(double __r = 0.0, double __i = 0.0)
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // The list-initialization extension to __complex__ types is
+      // not available in GCC 4.6.  Thus libstdc++/48760 cannot be
+      // fixed in C++0x mode, unfortunately.
+      : _M_value(__r + __i * 1.0i) { }
+#else
+      {
+	__real__ _M_value = __r;
+	__imag__ _M_value = __i;
+      }
+#endif
+
+      _GLIBCXX_CONSTEXPR complex(const complex<float>& __z)
+      : _M_value(__z.__rep()) { }
+
+      explicit _GLIBCXX_CONSTEXPR complex(const complex<long double>&);	
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      constexpr double 
+      real() const { return __real__ _M_value; }
+
+      constexpr double 
+      imag() const { return __imag__ _M_value; }
+#else
+      double& 
+      real() { return __real__ _M_value; }
+
+      const double& 
+      real() const { return __real__ _M_value; }
+
+      double& 
+      imag() { return __imag__ _M_value; }
+
+      const double& 
+      imag() const { return __imag__ _M_value; }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      void 
+      real(double __val) { __real__ _M_value = __val; }
+
+      void 
+      imag(double __val) { __imag__ _M_value = __val; }
+
+      complex&
+      operator=(double __d)
+      {
+	_M_value = __d;
+	return *this;
+      }
+
+      complex&
+      operator+=(double __d)
+      {
+	_M_value += __d;
+	return *this;
+      }
+	
+      complex&
+      operator-=(double __d)
+      {
+	_M_value -= __d;
+	return *this;
+      }
+
+      complex&
+      operator*=(double __d)
+      {
+	_M_value *= __d;
+	return *this;
+      }
+
+      complex&
+      operator/=(double __d)
+      {
+	_M_value /= __d;
+	return *this;
+      }
+
+      // The compiler will synthesize this, efficiently.
+      // complex& operator=(const complex&);
+
+      template<typename _Tp>
+        complex&
+        operator=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value = __z.real();
+	  __imag__ _M_value = __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+        operator+=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value += __z.real();
+	  __imag__ _M_value += __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+        operator-=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value -= __z.real();
+	  __imag__ _M_value -= __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+        operator*=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value *= __t;
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+        operator/=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value /= __t;
+	  return *this;
+	}
+
+      _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; }
+
+    private:
+      _ComplexT _M_value;
+    };
+
+  // 26.2.3  complex specializations
+  // complex<long double> specialization
+  template<>
+    struct complex<long double>
+    {
+      typedef long double value_type;
+      typedef __complex__ long double _ComplexT;
+
+      _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { }
+
+      _GLIBCXX_CONSTEXPR complex(long double __r = 0.0L, 
+				 long double __i = 0.0L)
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // The list-initialization extension to __complex__ types is
+      // not available in GCC 4.6.  Thus libstdc++/48760 cannot be
+      // fixed in C++0x mode, unfortunately.
+      : _M_value(__r + __i * 1.0Li) { }
+#else
+      {
+	__real__ _M_value = __r;
+	__imag__ _M_value = __i;
+      }
+#endif
+
+      _GLIBCXX_CONSTEXPR complex(const complex<float>& __z)
+      : _M_value(__z.__rep()) { }
+
+      _GLIBCXX_CONSTEXPR complex(const complex<double>& __z)
+      : _M_value(__z.__rep()) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      constexpr long double 
+      real() const { return __real__ _M_value; }
+
+      constexpr long double 
+      imag() const { return __imag__ _M_value; }
+#else
+      long double& 
+      real() { return __real__ _M_value; }
+
+      const long double& 
+      real() const { return __real__ _M_value; }
+
+      long double& 
+      imag() { return __imag__ _M_value; }
+
+      const long double& 
+      imag() const { return __imag__ _M_value; }
+#endif
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // DR 387. std::complex over-encapsulated.
+      void 
+      real(long double __val) { __real__ _M_value = __val; }
+
+      void 
+      imag(long double __val) { __imag__ _M_value = __val; }
+
+      complex&
+      operator=(long double __r)
+      {
+	_M_value = __r;
+	return *this;
+      }
+
+      complex&
+      operator+=(long double __r)
+      {
+	_M_value += __r;
+	return *this;
+      }
+
+      complex&
+      operator-=(long double __r)
+      {
+	_M_value -= __r;
+	return *this;
+      }
+
+      complex&
+      operator*=(long double __r)
+      {
+	_M_value *= __r;
+	return *this;
+      }
+
+      complex&
+      operator/=(long double __r)
+      {
+	_M_value /= __r;
+	return *this;
+      }
+
+      // The compiler knows how to do this efficiently
+      // complex& operator=(const complex&);
+
+      template<typename _Tp>
+        complex&
+        operator=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value = __z.real();
+	  __imag__ _M_value = __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+	operator+=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value += __z.real();
+	  __imag__ _M_value += __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+	operator-=(const complex<_Tp>& __z)
+	{
+	  __real__ _M_value -= __z.real();
+	  __imag__ _M_value -= __z.imag();
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+	operator*=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value *= __t;
+	  return *this;
+	}
+
+      template<typename _Tp>
+        complex&
+	operator/=(const complex<_Tp>& __z)
+	{
+	  _ComplexT __t;
+	  __real__ __t = __z.real();
+	  __imag__ __t = __z.imag();
+	  _M_value /= __t;
+	  return *this;
+	}
+
+      _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; }
+
+    private:
+      _ComplexT _M_value;
+    };
+
+  // These bits have to be at the end of this file, so that the
+  // specializations have all been defined.
+  inline _GLIBCXX_CONSTEXPR
+  complex<float>::complex(const complex<double>& __z)
+  : _M_value(__z.__rep()) { }
+
+  inline _GLIBCXX_CONSTEXPR
+  complex<float>::complex(const complex<long double>& __z)
+  : _M_value(__z.__rep()) { }
+
+  inline _GLIBCXX_CONSTEXPR
+  complex<double>::complex(const complex<long double>& __z)
+  : _M_value(__z.__rep()) { }
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.
+  // NB:  This syntax is a GNU extension.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template istream& operator>>(istream&, complex<float>&);
+  extern template ostream& operator<<(ostream&, const complex<float>&);
+  extern template istream& operator>>(istream&, complex<double>&);
+  extern template ostream& operator<<(ostream&, const complex<double>&);
+  extern template istream& operator>>(istream&, complex<long double>&);
+  extern template ostream& operator<<(ostream&, const complex<long double>&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template wistream& operator>>(wistream&, complex<float>&);
+  extern template wostream& operator<<(wostream&, const complex<float>&);
+  extern template wistream& operator>>(wistream&, complex<double>&);
+  extern template wostream& operator<<(wostream&, const complex<double>&);
+  extern template wistream& operator>>(wistream&, complex<long double>&);
+  extern template wostream& operator<<(wostream&, const complex<long double>&);
+#endif
+#endif
+
+  // @} group complex_numbers
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // See ext/type_traits.h for the primary template.
+  template<typename _Tp, typename _Up>
+    struct __promote_2<std::complex<_Tp>, _Up>
+    {
+    public:
+      typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
+    };
+
+  template<typename _Tp, typename _Up>
+    struct __promote_2<_Tp, std::complex<_Up> >
+    {
+    public:
+      typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
+    };
+  
+  template<typename _Tp, typename _Up>
+    struct __promote_2<std::complex<_Tp>, std::complex<_Up> >
+    {
+    public:
+      typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Forward declarations.
+  template<typename _Tp> std::complex<_Tp> acos(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> asin(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> atan(const std::complex<_Tp>&);
+
+  template<typename _Tp> std::complex<_Tp> acosh(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> asinh(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> atanh(const std::complex<_Tp>&);
+  // DR 595.
+  template<typename _Tp> _Tp               fabs(const std::complex<_Tp>&);
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    __complex_acos(const std::complex<_Tp>& __z)
+    {
+      const std::complex<_Tp> __t = std::asin(__z);
+      const _Tp __pi_2 = 1.5707963267948966192313216916397514L;
+      return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag());
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_acos(__complex__ float __z)
+  { return __builtin_cacosf(__z); }
+
+  inline __complex__ double
+  __complex_acos(__complex__ double __z)
+  { return __builtin_cacos(__z); }
+
+  inline __complex__ long double
+  __complex_acos(const __complex__ long double& __z)
+  { return __builtin_cacosl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acos(const std::complex<_Tp>& __z)
+    { return __complex_acos(__z.__rep()); }
+#else
+  /// acos(__z) [8.1.2].
+  //  Effects:  Behaves the same as C99 function cacos, defined
+  //            in subclause 7.3.5.1.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acos(const std::complex<_Tp>& __z)
+    { return __complex_acos(__z); }
+#endif
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    __complex_asin(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t(-__z.imag(), __z.real());
+      __t = std::asinh(__t);
+      return std::complex<_Tp>(__t.imag(), -__t.real());
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_asin(__complex__ float __z)
+  { return __builtin_casinf(__z); }
+
+  inline __complex__ double
+  __complex_asin(__complex__ double __z)
+  { return __builtin_casin(__z); }
+
+  inline __complex__ long double
+  __complex_asin(const __complex__ long double& __z)
+  { return __builtin_casinl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asin(const std::complex<_Tp>& __z)
+    { return __complex_asin(__z.__rep()); }
+#else
+  /// asin(__z) [8.1.3].
+  //  Effects:  Behaves the same as C99 function casin, defined
+  //            in subclause 7.3.5.2.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asin(const std::complex<_Tp>& __z)
+    { return __complex_asin(__z); }
+#endif
+  
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_atan(const std::complex<_Tp>& __z)
+    {
+      const _Tp __r2 = __z.real() * __z.real();
+      const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag();
+
+      _Tp __num = __z.imag() + _Tp(1.0);
+      _Tp __den = __z.imag() - _Tp(1.0);
+
+      __num = __r2 + __num * __num;
+      __den = __r2 + __den * __den;
+
+      return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x),
+			       _Tp(0.25) * log(__num / __den));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_atan(__complex__ float __z)
+  { return __builtin_catanf(__z); }
+
+  inline __complex__ double
+  __complex_atan(__complex__ double __z)
+  { return __builtin_catan(__z); }
+
+  inline __complex__ long double
+  __complex_atan(const __complex__ long double& __z)
+  { return __builtin_catanl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atan(const std::complex<_Tp>& __z)
+    { return __complex_atan(__z.__rep()); }
+#else
+  /// atan(__z) [8.1.4].
+  //  Effects:  Behaves the same as C99 function catan, defined
+  //            in subclause 7.3.5.3.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atan(const std::complex<_Tp>& __z)
+    { return __complex_atan(__z); }
+#endif
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_acosh(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t((__z.real() - __z.imag())
+			    * (__z.real() + __z.imag()) - _Tp(1.0),
+			    _Tp(2.0) * __z.real() * __z.imag());
+      __t = std::sqrt(__t);
+
+      return std::log(__t + __z);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_acosh(__complex__ float __z)
+  { return __builtin_cacoshf(__z); }
+
+  inline __complex__ double
+  __complex_acosh(__complex__ double __z)
+  { return __builtin_cacosh(__z); }
+
+  inline __complex__ long double
+  __complex_acosh(const __complex__ long double& __z)
+  { return __builtin_cacoshl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acosh(const std::complex<_Tp>& __z)
+    { return __complex_acosh(__z.__rep()); }
+#else
+  /// acosh(__z) [8.1.5].
+  //  Effects:  Behaves the same as C99 function cacosh, defined
+  //            in subclause 7.3.6.1.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acosh(const std::complex<_Tp>& __z)
+    { return __complex_acosh(__z); }
+#endif
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_asinh(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t((__z.real() - __z.imag())
+			    * (__z.real() + __z.imag()) + _Tp(1.0),
+			    _Tp(2.0) * __z.real() * __z.imag());
+      __t = std::sqrt(__t);
+
+      return std::log(__t + __z);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_asinh(__complex__ float __z)
+  { return __builtin_casinhf(__z); }
+
+  inline __complex__ double
+  __complex_asinh(__complex__ double __z)
+  { return __builtin_casinh(__z); }
+
+  inline __complex__ long double
+  __complex_asinh(const __complex__ long double& __z)
+  { return __builtin_casinhl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asinh(const std::complex<_Tp>& __z)
+    { return __complex_asinh(__z.__rep()); }
+#else
+  /// asinh(__z) [8.1.6].
+  //  Effects:  Behaves the same as C99 function casin, defined
+  //            in subclause 7.3.6.2.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asinh(const std::complex<_Tp>& __z)
+    { return __complex_asinh(__z); }
+#endif
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_atanh(const std::complex<_Tp>& __z)
+    {
+      const _Tp __i2 = __z.imag() * __z.imag();
+      const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real();
+
+      _Tp __num = _Tp(1.0) + __z.real();
+      _Tp __den = _Tp(1.0) - __z.real();
+
+      __num = __i2 + __num * __num;
+      __den = __i2 + __den * __den;
+
+      return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)),
+			       _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_atanh(__complex__ float __z)
+  { return __builtin_catanhf(__z); }
+
+  inline __complex__ double
+  __complex_atanh(__complex__ double __z)
+  { return __builtin_catanh(__z); }
+
+  inline __complex__ long double
+  __complex_atanh(const __complex__ long double& __z)
+  { return __builtin_catanhl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atanh(const std::complex<_Tp>& __z)
+    { return __complex_atanh(__z.__rep()); }
+#else
+  /// atanh(__z) [8.1.7].
+  //  Effects:  Behaves the same as C99 function catanh, defined
+  //            in subclause 7.3.6.3.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atanh(const std::complex<_Tp>& __z)
+    { return __complex_atanh(__z); }
+#endif
+
+  template<typename _Tp>
+    inline _Tp
+    /// fabs(__z) [8.1.8].
+    //  Effects:  Behaves the same as C99 function cabs, defined
+    //            in subclause 7.3.8.1.
+    fabs(const std::complex<_Tp>& __z)
+    { return std::abs(__z); }
+
+  /// Additional overloads [8.1.9].
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    arg(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC)
+      return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L)
+	                       : __type();
+#else
+      return std::arg(std::complex<__type>(__x));
+#endif
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    imag(_Tp)
+    { return _Tp(); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    norm(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __type(__x) * __type(__x);
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    real(_Tp __x)
+    { return __x; }
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const std::complex<_Tp>& __x, const _Up& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(std::complex<__type>(__x), __type(__y));
+    }
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const _Tp& __x, const std::complex<_Up>& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(__type(__x), std::complex<__type>(__y));
+    }
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(std::complex<__type>(__x),
+		      std::complex<__type>(__y));
+    }
+
+  // Forward declarations.
+  // DR 781.
+  template<typename _Tp> std::complex<_Tp> proj(const std::complex<_Tp>&);
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_proj(const std::complex<_Tp>& __z)
+    {
+      const _Tp __den = (__z.real() * __z.real()
+			 + __z.imag() * __z.imag() + _Tp(1.0));
+
+      return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den,
+			       (_Tp(2.0) * __z.imag()) / __den);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX
+  inline __complex__ float
+  __complex_proj(__complex__ float __z)
+  { return __builtin_cprojf(__z); }
+
+  inline __complex__ double
+  __complex_proj(__complex__ double __z)
+  { return __builtin_cproj(__z); }
+
+  inline __complex__ long double
+  __complex_proj(const __complex__ long double& __z)
+  { return __builtin_cprojl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    proj(const std::complex<_Tp>& __z)
+    { return __complex_proj(__z.__rep()); }
+#else
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    proj(const std::complex<_Tp>& __z)
+    { return __complex_proj(__z); }
+#endif
+
+  // DR 1137.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    proj(_Tp __x)
+    { return __x; }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    conj(_Tp __x)
+    { return __x; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif  /* _GLIBCXX_COMPLEX */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/condition_variable b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/condition_variable
new file mode 100644
index 000000000..a0a3c0879
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/condition_variable
@@ -0,0 +1,266 @@
+// <condition_variable> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/condition_variable
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_CONDITION_VARIABLE
+#define _GLIBCXX_CONDITION_VARIABLE 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <chrono>
+#include <mutex> // unique_lock
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup condition_variables Condition Variables
+   * @ingroup concurrency
+   *
+   * Classes for condition_variable support.
+   * @{
+   */
+
+  /// cv_status
+  enum class cv_status { no_timeout, timeout };
+  
+  /// condition_variable
+  class condition_variable
+  {
+    typedef chrono::system_clock	__clock_t;
+    typedef __gthread_cond_t		__native_type;
+    __native_type			_M_cond;
+
+  public:
+    typedef __native_type* 		native_handle_type;
+
+    condition_variable() throw ();
+    ~condition_variable() throw ();
+
+    condition_variable(const condition_variable&) = delete;
+    condition_variable& operator=(const condition_variable&) = delete;
+
+    void
+    notify_one();
+
+    void
+    notify_all();
+
+    void
+    wait(unique_lock<mutex>& __lock);
+
+    template<typename _Predicate>
+      void
+      wait(unique_lock<mutex>& __lock, _Predicate __p)
+      {
+	while (!__p())
+	  wait(__lock);
+      }
+
+    template<typename _Duration>
+      cv_status
+      wait_until(unique_lock<mutex>& __lock,
+		 const chrono::time_point<__clock_t, _Duration>& __atime)
+      { return __wait_until_impl(__lock, __atime); }
+
+    template<typename _Clock, typename _Duration>
+      cv_status
+      wait_until(unique_lock<mutex>& __lock,
+		 const chrono::time_point<_Clock, _Duration>& __atime)
+      {
+	// DR 887 - Sync unknown clock to known clock.
+	const typename _Clock::time_point __c_entry = _Clock::now();
+	const __clock_t::time_point __s_entry = __clock_t::now();
+	const chrono::nanoseconds __delta = __atime - __c_entry;
+	const __clock_t::time_point __s_atime = __s_entry + __delta;
+
+	return __wait_until_impl(__lock, __s_atime);
+      }
+
+    template<typename _Clock, typename _Duration, typename _Predicate>
+      bool
+      wait_until(unique_lock<mutex>& __lock,
+		 const chrono::time_point<_Clock, _Duration>& __atime,
+		 _Predicate __p)
+      {
+	while (!__p())
+	  if (wait_until(__lock, __atime) == cv_status::timeout)
+	    return __p();
+	return true;
+      }
+
+    template<typename _Rep, typename _Period>
+      cv_status
+      wait_for(unique_lock<mutex>& __lock,
+	       const chrono::duration<_Rep, _Period>& __rtime)
+      { return wait_until(__lock, __clock_t::now() + __rtime); }
+
+    template<typename _Rep, typename _Period, typename _Predicate>
+      bool
+      wait_for(unique_lock<mutex>& __lock,
+	       const chrono::duration<_Rep, _Period>& __rtime,
+	       _Predicate __p)
+      { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
+
+    native_handle_type
+    native_handle()
+    { return &_M_cond; }
+
+  private:
+    template<typename _Clock, typename _Duration>
+      cv_status
+      __wait_until_impl(unique_lock<mutex>& __lock,
+			const chrono::time_point<_Clock, _Duration>& __atime)
+      {
+	chrono::time_point<__clock_t, chrono::seconds> __s =
+	  chrono::time_point_cast<chrono::seconds>(__atime);
+
+	chrono::nanoseconds __ns =
+	  chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
+
+	__gthread_time_t __ts =
+	  {
+	    static_cast<std::time_t>(__s.time_since_epoch().count()),
+	    static_cast<long>(__ns.count())
+	  };
+
+	__gthread_cond_timedwait(&_M_cond, __lock.mutex()->native_handle(),
+				 &__ts);
+
+	return (_Clock::now() < __atime
+		? cv_status::no_timeout : cv_status::timeout);
+      }
+  };
+
+  /// condition_variable_any
+  // Like above, but mutex is not required to have try_lock.
+  class condition_variable_any
+  {
+    typedef chrono::system_clock	__clock_t;
+    condition_variable			_M_cond;
+    mutex				_M_mutex;
+
+  public:
+    typedef condition_variable::native_handle_type	native_handle_type;
+
+    condition_variable_any() throw ();
+    ~condition_variable_any() throw ();
+
+    condition_variable_any(const condition_variable_any&) = delete;
+    condition_variable_any& operator=(const condition_variable_any&) = delete;
+
+    void
+    notify_one()
+    {
+      lock_guard<mutex> __lock(_M_mutex);
+      _M_cond.notify_one();
+    }
+
+    void
+    notify_all()
+    {
+      lock_guard<mutex> __lock(_M_mutex);
+      _M_cond.notify_all();
+    }
+
+    template<typename _Lock>
+      void
+      wait(_Lock& __lock)
+      {
+        unique_lock<mutex> __my_lock(_M_mutex);
+        __lock.unlock();
+        _M_cond.wait(__my_lock);
+        __lock.lock();
+      }
+      
+
+    template<typename _Lock, typename _Predicate>
+      void
+      wait(_Lock& __lock, _Predicate __p)
+      {
+	while (!__p())
+	  wait(__lock);
+      }
+
+    template<typename _Lock, typename _Clock, typename _Duration>
+      cv_status
+      wait_until(_Lock& __lock,
+		 const chrono::time_point<_Clock, _Duration>& __atime)
+      {
+        unique_lock<mutex> __my_lock(_M_mutex);
+        __lock.unlock();
+        cv_status __status = _M_cond.wait_until(__my_lock, __atime);
+        __lock.lock();
+        return __status;
+      }
+
+    template<typename _Lock, typename _Clock,
+	     typename _Duration, typename _Predicate>
+      bool
+      wait_until(_Lock& __lock,
+		 const chrono::time_point<_Clock, _Duration>& __atime,
+		 _Predicate __p)
+      {
+	while (!__p())
+	  if (wait_until(__lock, __atime) == cv_status::timeout)
+	    return __p();
+	return true;
+      }
+
+    template<typename _Lock, typename _Rep, typename _Period>
+      cv_status
+      wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __rtime)
+      { return wait_until(__lock, __clock_t::now() + __rtime); }
+
+    template<typename _Lock, typename _Rep,
+	     typename _Period, typename _Predicate>
+      bool
+      wait_for(_Lock& __lock,
+	       const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p)
+      { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
+
+    native_handle_type
+    native_handle()
+    { return _M_cond.native_handle(); }
+  };
+
+  // @} group condition_variables
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_CONDITION_VARIABLE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/deque b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/deque
new file mode 100644
index 000000000..7b0604bf9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/deque
@@ -0,0 +1,77 @@
+// <deque> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/deque
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_DEQUE
+#define _GLIBCXX_DEQUE 1
+
+#pragma GCC system_header
+
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_construct.h>
+#include <bits/stl_uninitialized.h>
+#include <bits/stl_deque.h>
+#include <bits/range_access.h>
+#include <bits/deque.tcc>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/deque>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/deque>
+#endif
+
+#endif /* _GLIBCXX_DEQUE */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/forward_list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/forward_list
new file mode 100644
index 000000000..a1befcf4b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/forward_list
@@ -0,0 +1,52 @@
+// <forward_list> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/forward_list
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_FORWARD_LIST
+#define _GLIBCXX_FORWARD_LIST 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/forward_list.h>
+#include <bits/range_access.h>
+#include <bits/forward_list.tcc>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/forward_list>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/forward_list>
+#endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_FORWARD_LIST
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/fstream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/fstream
new file mode 100644
index 000000000..8ad6e5ca1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/fstream
@@ -0,0 +1,923 @@
+// File based streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/fstream
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.8  File-based streams
+//
+
+#ifndef _GLIBCXX_FSTREAM
+#define _GLIBCXX_FSTREAM 1
+
+#pragma GCC system_header
+
+#include <istream>
+#include <ostream>
+#include <bits/codecvt.h>
+#include <cstdio>             // For BUFSIZ
+#include <bits/basic_file.h>  // For __basic_file, __c_lock
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <string>             // For std::string overloads.
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [27.8.1.1] template class basic_filebuf
+  /**
+   *  @brief  The actual work of input and output (for files).
+   *  @ingroup io
+   *
+   *  This class associates both its input and output sequence with an
+   *  external disk file, and maintains a joint file position for both
+   *  sequences.  Many of its semantics are described in terms of similar
+   *  behavior in the Standard C Library's @c FILE streams.
+   */
+  // Requirements on traits_type, specific to this class:
+  // traits_type::pos_type must be fpos<traits_type::state_type>
+  // traits_type::off_type must be streamoff
+  // traits_type::state_type must be Assignable and DefaultConstructible,
+  // and traits_type::state_type() must be the initial state for codecvt.
+  template<typename _CharT, typename _Traits>
+    class basic_filebuf : public basic_streambuf<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT                     	        char_type;
+      typedef _Traits                    	        traits_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      typedef basic_streambuf<char_type, traits_type>  	__streambuf_type;
+      typedef basic_filebuf<char_type, traits_type>     __filebuf_type;
+      typedef __basic_file<char>		        __file_type;
+      typedef typename traits_type::state_type          __state_type;
+      typedef codecvt<char_type, char, __state_type>    __codecvt_type;
+
+      friend class ios_base; // For sync_with_stdio.
+
+    protected:
+      // Data Members:
+      // MT lock inherited from libio or other low-level io library.
+      __c_lock          	_M_lock;
+
+      // External buffer.
+      __file_type 		_M_file;
+
+      /// Place to stash in || out || in | out settings for current filebuf.
+      ios_base::openmode 	_M_mode;
+
+      // Beginning state type for codecvt.
+      __state_type 		_M_state_beg;
+
+      // During output, the state that corresponds to pptr(),
+      // during input, the state that corresponds to egptr() and
+      // _M_ext_next.
+      __state_type		_M_state_cur;
+
+      // Not used for output. During input, the state that corresponds
+      // to eback() and _M_ext_buf.
+      __state_type		_M_state_last;
+
+      /// Pointer to the beginning of internal buffer.
+      char_type*		_M_buf; 	
+
+      /**
+       *  Actual size of internal buffer. This number is equal to the size
+       *  of the put area + 1 position, reserved for the overflow char of
+       *  a full area.
+       */
+      size_t			_M_buf_size;
+
+      // Set iff _M_buf is allocated memory from _M_allocate_internal_buffer.
+      bool			_M_buf_allocated;
+
+      /**
+       *  _M_reading == false && _M_writing == false for @b uncommitted mode;
+       *  _M_reading == true for @b read mode;
+       *  _M_writing == true for @b write mode;
+       *
+       *  NB: _M_reading == true && _M_writing == true is unused.
+       */
+      bool                      _M_reading;
+      bool                      _M_writing;
+
+      //@{
+      /**
+       *  Necessary bits for putback buffer management.
+       *
+       *  @note pbacks of over one character are not currently supported.
+       */
+      char_type			_M_pback;
+      char_type*		_M_pback_cur_save;
+      char_type*		_M_pback_end_save;
+      bool			_M_pback_init;
+      //@}
+
+      // Cached codecvt facet.
+      const __codecvt_type* 	_M_codecvt;
+
+      /**
+       *  Buffer for external characters. Used for input when
+       *  codecvt::always_noconv() == false. When valid, this corresponds
+       *  to eback().
+       */
+      char*			_M_ext_buf;
+
+      /**
+       *  Size of buffer held by _M_ext_buf.
+       */
+      streamsize		_M_ext_buf_size;
+
+      /**
+       *  Pointers into the buffer held by _M_ext_buf that delimit a
+       *  subsequence of bytes that have been read but not yet converted.
+       *  When valid, _M_ext_next corresponds to egptr().
+       */
+      const char*		_M_ext_next;
+      char*			_M_ext_end;
+
+      /**
+       *  Initializes pback buffers, and moves normal buffers to safety.
+       *  Assumptions:
+       *  _M_in_cur has already been moved back
+       */
+      void
+      _M_create_pback()
+      {
+	if (!_M_pback_init)
+	  {
+	    _M_pback_cur_save = this->gptr();
+	    _M_pback_end_save = this->egptr();
+	    this->setg(&_M_pback, &_M_pback, &_M_pback + 1);
+	    _M_pback_init = true;
+	  }
+      }
+
+      /**
+       *  Deactivates pback buffer contents, and restores normal buffer.
+       *  Assumptions:
+       *  The pback buffer has only moved forward.
+       */
+      void
+      _M_destroy_pback() throw()
+      {
+	if (_M_pback_init)
+	  {
+	    // Length _M_in_cur moved in the pback buffer.
+	    _M_pback_cur_save += this->gptr() != this->eback();
+	    this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save);
+	    _M_pback_init = false;
+	  }
+      }
+
+    public:
+      // Constructors/destructor:
+      /**
+       *  @brief  Does not open any files.
+       *
+       *  The default constructor initializes the parent class using its
+       *  own default ctor.
+       */
+      basic_filebuf();
+
+      /**
+       *  @brief  The destructor closes the file first.
+       */
+      virtual
+      ~basic_filebuf()
+      { this->close(); }
+
+      // Members:
+      /**
+       *  @brief  Returns true if the external file is open.
+       */
+      bool
+      is_open() const throw()
+      { return _M_file.is_open(); }
+
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *  @return  @c this on success, NULL on failure
+       *
+       *  If a file is already open, this function immediately fails.
+       *  Otherwise it tries to open the file named @a s using the flags
+       *  given in @a mode.
+       *
+       *  Table 92, adapted here, gives the relation between openmode
+       *  combinations and the equivalent fopen() flags.
+       *  (NB: lines app, in|out|app, in|app, binary|app, binary|in|out|app,
+       *  and binary|in|app per DR 596)
+       *  +---------------------------------------------------------+
+       *  | ios_base Flag combination            stdio equivalent   |
+       *  |binary  in  out  trunc  app                              |
+       *  +---------------------------------------------------------+
+       *  |             +                        w                  |
+       *  |             +           +            a                  |
+       *  |                         +            a                  |
+       *  |             +     +                  w                  |
+       *  |         +                            r                  |
+       *  |         +   +                        r+                 |
+       *  |         +   +     +                  w+                 |
+       *  |         +   +           +            a+                 |
+       *  |         +               +            a+                 |
+       *  +---------------------------------------------------------+
+       *  |   +         +                        wb                 |
+       *  |   +         +           +            ab                 |
+       *  |   +                     +            ab                 |
+       *  |   +         +     +                  wb                 |
+       *  |   +     +                            rb                 |
+       *  |   +     +   +                        r+b                |
+       *  |   +     +   +     +                  w+b                |
+       *  |   +     +   +           +            a+b                |
+       *  |   +     +               +            a+b                |
+       *  +---------------------------------------------------------+
+       */
+      __filebuf_type*
+      open(const char* __s, ios_base::openmode __mode);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *  @return  @c this on success, NULL on failure
+       */
+      __filebuf_type*
+      open(const std::string& __s, ios_base::openmode __mode)
+      { return open(__s.c_str(), __mode); }
+#endif
+
+      /**
+       *  @brief  Closes the currently associated file.
+       *  @return  @c this on success, NULL on failure
+       *
+       *  If no file is currently open, this function immediately fails.
+       *
+       *  If a <em>put buffer area</em> exists, @c overflow(eof) is
+       *  called to flush all the characters.  The file is then
+       *  closed.
+       *
+       *  If any operations fail, this function also fails.
+       */
+      __filebuf_type*
+      close();
+
+    protected:
+      void
+      _M_allocate_internal_buffer();
+
+      void
+      _M_destroy_internal_buffer() throw();
+
+      // [27.8.1.4] overridden virtual functions
+      virtual streamsize
+      showmanyc();
+
+      // Stroustrup, 1998, p. 628
+      // underflow() and uflow() functions are called to get the next
+      // character from the real input source when the buffer is empty.
+      // Buffered input uses underflow()
+
+      virtual int_type
+      underflow();
+
+      virtual int_type
+      pbackfail(int_type __c = _Traits::eof());
+
+      // Stroustrup, 1998, p 648
+      // The overflow() function is called to transfer characters to the
+      // real output destination when the buffer is full. A call to
+      // overflow(c) outputs the contents of the buffer plus the
+      // character c.
+      // 27.5.2.4.5
+      // Consume some sequence of the characters in the pending sequence.
+      virtual int_type
+      overflow(int_type __c = _Traits::eof());
+
+      // Convert internal byte sequence to external, char-based
+      // sequence via codecvt.
+      bool
+      _M_convert_to_external(char_type*, streamsize);
+
+      /**
+       *  @brief  Manipulates the buffer.
+       *  @param  s  Pointer to a buffer area.
+       *  @param  n  Size of @a s.
+       *  @return  @c this
+       *
+       *  If no file has been opened, and both @a s and @a n are zero, then
+       *  the stream becomes unbuffered.  Otherwise, @c s is used as a
+       *  buffer; see
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25s02.html
+       *  for more.
+       */
+      virtual __streambuf_type*
+      setbuf(char_type* __s, streamsize __n);
+
+      virtual pos_type
+      seekoff(off_type __off, ios_base::seekdir __way,
+	      ios_base::openmode __mode = ios_base::in | ios_base::out);
+
+      virtual pos_type
+      seekpos(pos_type __pos,
+	      ios_base::openmode __mode = ios_base::in | ios_base::out);
+
+      // Common code for seekoff, seekpos, and overflow
+      pos_type
+      _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state);
+      
+      int
+      _M_get_ext_pos(__state_type &__state);
+
+      virtual int
+      sync();
+
+      virtual void
+      imbue(const locale& __loc);
+
+      virtual streamsize
+      xsgetn(char_type* __s, streamsize __n);
+
+      virtual streamsize
+      xsputn(const char_type* __s, streamsize __n);
+
+      // Flushes output buffer, then writes unshift sequence.
+      bool
+      _M_terminate_output();
+
+      /**
+       *  This function sets the pointers of the internal buffer, both get
+       *  and put areas. Typically:
+       *
+       *   __off == egptr() - eback() upon underflow/uflow (@b read mode);
+       *   __off == 0 upon overflow (@b write mode);
+       *   __off == -1 upon open, setbuf, seekoff/pos (@b uncommitted mode).
+       *
+       *  NB: epptr() - pbase() == _M_buf_size - 1, since _M_buf_size
+       *  reflects the actual allocated memory and the last cell is reserved
+       *  for the overflow char of a full put area.
+       */
+      void
+      _M_set_buffer(streamsize __off)
+      {
+ 	const bool __testin = _M_mode & ios_base::in;
+ 	const bool __testout = _M_mode & ios_base::out;
+	
+	if (__testin && __off > 0)
+	  this->setg(_M_buf, _M_buf, _M_buf + __off);
+	else
+	  this->setg(_M_buf, _M_buf, _M_buf);
+
+	if (__testout && __off == 0 && _M_buf_size > 1 )
+	  this->setp(_M_buf, _M_buf + _M_buf_size - 1);
+	else
+	  this->setp(0, 0);
+      }
+    };
+
+  // [27.8.1.5] Template class basic_ifstream
+  /**
+   *  @brief  Controlling input for files.
+   *  @ingroup io
+   *
+   *  This class supports reading from named files, using the inherited
+   *  functions from std::basic_istream.  To control the associated
+   *  sequence, an instance of std::basic_filebuf is used, which this page
+   *  refers to as @c sb.
+   */
+  template<typename _CharT, typename _Traits>
+    class basic_ifstream : public basic_istream<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard types:
+      typedef basic_filebuf<char_type, traits_type> 	__filebuf_type;
+      typedef basic_istream<char_type, traits_type>	__istream_type;
+
+    private:
+      __filebuf_type	_M_filebuf;
+
+    public:
+      // Constructors/Destructors:
+      /**
+       *  @brief  Default constructor.
+       *
+       *  Initializes @c sb using its default constructor, and passes
+       *  @c &sb to the base class initializer.  Does not open any files
+       *  (you haven't given it a filename to open).
+       */
+      basic_ifstream() : __istream_type(), _M_filebuf()
+      { this->init(&_M_filebuf); }
+
+      /**
+       *  @brief  Create an input file stream.
+       *  @param  s  Null terminated string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       *
+       *  @c ios_base::in is automatically included in @a mode.
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      explicit
+      basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
+      : __istream_type(), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Create an input file stream.
+       *  @param  s  std::string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       *
+       *  @c ios_base::in is automatically included in @a mode.
+       */
+      explicit
+      basic_ifstream(const std::string& __s,
+		     ios_base::openmode __mode = ios_base::in)
+      : __istream_type(), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+#endif
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The file is closed by the filebuf object, not the formatting
+       *  stream.
+       */
+      ~basic_ifstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_filebuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+       */
+      __filebuf_type*
+      rdbuf() const
+      { return const_cast<__filebuf_type*>(&_M_filebuf); }
+
+      /**
+       *  @brief  Wrapper to test for an open file.
+       *  @return  @c rdbuf()->is_open()
+       */
+      bool
+      is_open()
+      { return _M_filebuf.is_open(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 365. Lack of const-qualification in clause 27
+      bool
+      is_open() const
+      { return _M_filebuf.is_open(); }
+
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode|in).  If that function
+       *  fails, @c failbit is set in the stream's error state.
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      void
+      open(const char* __s, ios_base::openmode __mode = ios_base::in)
+      {
+	if (!_M_filebuf.open(__s, __mode | ios_base::in))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode|in).  If that function
+       *  fails, @c failbit is set in the stream's error state.
+       */
+      void
+      open(const std::string& __s, ios_base::openmode __mode = ios_base::in)
+      {
+	if (!_M_filebuf.open(__s, __mode | ios_base::in))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+#endif
+
+      /**
+       *  @brief  Close the file.
+       *
+       *  Calls @c std::basic_filebuf::close().  If that function
+       *  fails, @c failbit is set in the stream's error state.
+       */
+      void
+      close()
+      {
+	if (!_M_filebuf.close())
+	  this->setstate(ios_base::failbit);
+      }
+    };
+
+
+  // [27.8.1.8] Template class basic_ofstream
+  /**
+   *  @brief  Controlling output for files.
+   *  @ingroup io
+   *
+   *  This class supports reading from named files, using the inherited
+   *  functions from std::basic_ostream.  To control the associated
+   *  sequence, an instance of std::basic_filebuf is used, which this page
+   *  refers to as @c sb.
+   */
+  template<typename _CharT, typename _Traits>
+    class basic_ofstream : public basic_ostream<_CharT,_Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard types:
+      typedef basic_filebuf<char_type, traits_type> 	__filebuf_type;
+      typedef basic_ostream<char_type, traits_type>	__ostream_type;
+
+    private:
+      __filebuf_type	_M_filebuf;
+
+    public:
+      // Constructors:
+      /**
+       *  @brief  Default constructor.
+       *
+       *  Initializes @c sb using its default constructor, and passes
+       *  @c &sb to the base class initializer.  Does not open any files
+       *  (you haven't given it a filename to open).
+       */
+      basic_ofstream(): __ostream_type(), _M_filebuf()
+      { this->init(&_M_filebuf); }
+
+      /**
+       *  @brief  Create an output file stream.
+       *  @param  s  Null terminated string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       *
+       *  @c ios_base::out|ios_base::trunc is automatically included in
+       *  @a mode.
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      explicit
+      basic_ofstream(const char* __s,
+		     ios_base::openmode __mode = ios_base::out|ios_base::trunc)
+      : __ostream_type(), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Create an output file stream.
+       *  @param  s  std::string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       *
+       *  @c ios_base::out|ios_base::trunc is automatically included in
+       *  @a mode.
+       */
+      explicit
+      basic_ofstream(const std::string& __s,
+		     ios_base::openmode __mode = ios_base::out|ios_base::trunc)
+      : __ostream_type(), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+#endif
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The file is closed by the filebuf object, not the formatting
+       *  stream.
+       */
+      ~basic_ofstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_filebuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+       */
+      __filebuf_type*
+      rdbuf() const
+      { return const_cast<__filebuf_type*>(&_M_filebuf); }
+
+      /**
+       *  @brief  Wrapper to test for an open file.
+       *  @return  @c rdbuf()->is_open()
+       */
+      bool
+      is_open()
+      { return _M_filebuf.is_open(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 365. Lack of const-qualification in clause 27
+      bool
+      is_open() const
+      { return _M_filebuf.is_open(); }
+
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode|out|trunc).  If that
+       *  function fails, @c failbit is set in the stream's error state.
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      void
+      open(const char* __s,
+	   ios_base::openmode __mode = ios_base::out | ios_base::trunc)
+      {
+	if (!_M_filebuf.open(__s, __mode | ios_base::out))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode|out|trunc).  If that
+       *  function fails, @c failbit is set in the stream's error state.
+       */
+      void
+      open(const std::string& __s,
+	   ios_base::openmode __mode = ios_base::out | ios_base::trunc)
+      {
+	if (!_M_filebuf.open(__s, __mode | ios_base::out))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+#endif
+
+      /**
+       *  @brief  Close the file.
+       *
+       *  Calls @c std::basic_filebuf::close().  If that function
+       *  fails, @c failbit is set in the stream's error state.
+       */
+      void
+      close()
+      {
+	if (!_M_filebuf.close())
+	  this->setstate(ios_base::failbit);
+      }
+    };
+
+
+  // [27.8.1.11] Template class basic_fstream
+  /**
+   *  @brief  Controlling input and output for files.
+   *  @ingroup io
+   *
+   *  This class supports reading from and writing to named files, using
+   *  the inherited functions from std::basic_iostream.  To control the
+   *  associated sequence, an instance of std::basic_filebuf is used, which
+   *  this page refers to as @c sb.
+   */
+  template<typename _CharT, typename _Traits>
+    class basic_fstream : public basic_iostream<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard types:
+      typedef basic_filebuf<char_type, traits_type> 	__filebuf_type;
+      typedef basic_ios<char_type, traits_type>		__ios_type;
+      typedef basic_iostream<char_type, traits_type>	__iostream_type;
+
+    private:
+      __filebuf_type	_M_filebuf;
+
+    public:
+      // Constructors/destructor:
+      /**
+       *  @brief  Default constructor.
+       *
+       *  Initializes @c sb using its default constructor, and passes
+       *  @c &sb to the base class initializer.  Does not open any files
+       *  (you haven't given it a filename to open).
+       */
+      basic_fstream()
+      : __iostream_type(), _M_filebuf()
+      { this->init(&_M_filebuf); }
+
+      /**
+       *  @brief  Create an input/output file stream.
+       *  @param  s  Null terminated string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      explicit
+      basic_fstream(const char* __s,
+		    ios_base::openmode __mode = ios_base::in | ios_base::out)
+      : __iostream_type(0), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Create an input/output file stream.
+       *  @param  s  Null terminated string specifying the filename.
+       *  @param  mode  Open file in specified mode (see std::ios_base).
+       */
+      explicit
+      basic_fstream(const std::string& __s,
+		    ios_base::openmode __mode = ios_base::in | ios_base::out)
+      : __iostream_type(0), _M_filebuf()
+      {
+	this->init(&_M_filebuf);
+	this->open(__s, __mode);
+      }
+#endif
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The file is closed by the filebuf object, not the formatting
+       *  stream.
+       */
+      ~basic_fstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_filebuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+       */
+      __filebuf_type*
+      rdbuf() const
+      { return const_cast<__filebuf_type*>(&_M_filebuf); }
+
+      /**
+       *  @brief  Wrapper to test for an open file.
+       *  @return  @c rdbuf()->is_open()
+       */
+      bool
+      is_open()
+      { return _M_filebuf.is_open(); }
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 365. Lack of const-qualification in clause 27
+      bool
+      is_open() const
+      { return _M_filebuf.is_open(); }
+
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode).  If that
+       *  function fails, @c failbit is set in the stream's error state.
+       *
+       *  Tip:  When using std::string to hold the filename, you must use
+       *  .c_str() before passing it to this constructor.
+       */
+      void
+      open(const char* __s,
+	   ios_base::openmode __mode = ios_base::in | ios_base::out)
+      {
+	if (!_M_filebuf.open(__s, __mode))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Opens an external file.
+       *  @param  s  The name of the file.
+       *  @param  mode  The open mode flags.
+       *
+       *  Calls @c std::basic_filebuf::open(s,mode).  If that
+       *  function fails, @c failbit is set in the stream's error state.
+       */
+      void
+      open(const std::string& __s,
+	   ios_base::openmode __mode = ios_base::in | ios_base::out)
+      {
+	if (!_M_filebuf.open(__s, __mode))
+	  this->setstate(ios_base::failbit);
+	else
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 409. Closing an fstream should clear error state
+	  this->clear();
+      }
+#endif
+
+      /**
+       *  @brief  Close the file.
+       *
+       *  Calls @c std::basic_filebuf::close().  If that function
+       *  fails, @c failbit is set in the stream's error state.
+       */
+      void
+      close()
+      {
+	if (!_M_filebuf.close())
+	  this->setstate(ios_base::failbit);
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/fstream.tcc>
+
+#endif /* _GLIBCXX_FSTREAM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/functional b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/functional
new file mode 100644
index 000000000..57ec50621
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/functional
@@ -0,0 +1,2268 @@
+// <functional> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file include/functional
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_FUNCTIONAL
+#define _GLIBCXX_FUNCTIONAL 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_function.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#include <typeinfo>
+#include <new>
+#include <tuple>
+#include <type_traits>
+#include <bits/functexcept.h>
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+_GLIBCXX_HAS_NESTED_TYPE(result_type)
+
+  /// If we have found a result_type, extract it.
+  template<bool _Has_result_type, typename _Functor>
+    struct _Maybe_get_result_type
+    { };
+
+  template<typename _Functor>
+    struct _Maybe_get_result_type<true, _Functor>
+    { typedef typename _Functor::result_type result_type; };
+
+  /**
+   *  Base class for any function object that has a weak result type, as
+   *  defined in 3.3/3 of TR1.
+  */
+  template<typename _Functor>
+    struct _Weak_result_type_impl
+    : _Maybe_get_result_type<__has_result_type<_Functor>::value, _Functor>
+    { };
+
+  /// Retrieve the result type for a function type.
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes...)>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes......)>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes...) const>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes......) const>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes...) volatile>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes......) volatile>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes...) const volatile>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(_ArgTypes......) const volatile>
+    { typedef _Res result_type; };
+
+  /// Retrieve the result type for a function reference.
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(&)(_ArgTypes......)>
+    { typedef _Res result_type; };
+
+  /// Retrieve the result type for a function pointer.
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res(*)(_ArgTypes......)>
+    { typedef _Res result_type; };
+
+  /// Retrieve result type for a member function pointer.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......)>
+    { typedef _Res result_type; };
+
+  /// Retrieve result type for a const member function pointer.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) const>
+    { typedef _Res result_type; };
+
+  /// Retrieve result type for a volatile member function pointer.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) volatile>
+    { typedef _Res result_type; };
+
+  /// Retrieve result type for a const volatile member function pointer.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)
+				  const volatile>
+    { typedef _Res result_type; };
+
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......)
+				  const volatile>
+    { typedef _Res result_type; };
+
+  /**
+   *  Strip top-level cv-qualifiers from the function object and let
+   *  _Weak_result_type_impl perform the real work.
+  */
+  template<typename _Functor>
+    struct _Weak_result_type
+    : _Weak_result_type_impl<typename remove_cv<_Functor>::type>
+    { };
+
+  /// Determines if the type _Tp derives from unary_function.
+  template<typename _Tp>
+    struct _Derives_from_unary_function : __sfinae_types
+    {
+    private:
+      template<typename _T1, typename _Res>
+	static __one __test(const volatile unary_function<_T1, _Res>*);
+
+      // It's tempting to change "..." to const volatile void*, but
+      // that fails when _Tp is a function type.
+      static __two __test(...);
+
+    public:
+      static const bool value = sizeof(__test((_Tp*)0)) == 1;
+    };
+
+  /// Determines if the type _Tp derives from binary_function.
+  template<typename _Tp>
+    struct _Derives_from_binary_function : __sfinae_types
+    {
+    private:
+      template<typename _T1, typename _T2, typename _Res>
+	static __one __test(const volatile binary_function<_T1, _T2, _Res>*);
+
+      // It's tempting to change "..." to const volatile void*, but
+      // that fails when _Tp is a function type.
+      static __two __test(...);
+
+    public:
+      static const bool value = sizeof(__test((_Tp*)0)) == 1;
+    };
+
+  /**
+   * Invoke a function object, which may be either a member pointer or a
+   * function object. The first parameter will tell which.
+   */
+  template<typename _Functor, typename... _Args>
+    inline
+    typename enable_if<
+	     (!is_member_pointer<_Functor>::value
+	      && !is_function<_Functor>::value
+	      && !is_function<typename remove_pointer<_Functor>::type>::value),
+	     typename result_of<_Functor(_Args&&...)>::type
+	   >::type
+    __invoke(_Functor& __f, _Args&&... __args)
+    {
+      return __f(std::forward<_Args>(__args)...);
+    }
+
+  template<typename _Functor, typename... _Args>
+    inline
+    typename enable_if<
+             (is_member_pointer<_Functor>::value
+              && !is_function<_Functor>::value
+              && !is_function<typename remove_pointer<_Functor>::type>::value),
+             typename result_of<_Functor(_Args&&...)>::type
+           >::type
+    __invoke(_Functor& __f, _Args&&... __args)
+    {
+      return mem_fn(__f)(std::forward<_Args>(__args)...);
+    }
+
+  // To pick up function references (that will become function pointers)
+  template<typename _Functor, typename... _Args>
+    inline
+    typename enable_if<
+	     (is_pointer<_Functor>::value
+	      && is_function<typename remove_pointer<_Functor>::type>::value),
+	     typename result_of<_Functor(_Args&&...)>::type
+	   >::type
+    __invoke(_Functor __f, _Args&&... __args)
+    {
+      return __f(std::forward<_Args>(__args)...);
+    }
+
+  /**
+   *  Knowing which of unary_function and binary_function _Tp derives
+   *  from, derives from the same and ensures that reference_wrapper
+   *  will have a weak result type. See cases below.
+   */
+  template<bool _Unary, bool _Binary, typename _Tp>
+    struct _Reference_wrapper_base_impl;
+
+  // None of the nested argument types.
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<false, false, _Tp>
+    : _Weak_result_type<_Tp>
+    { };
+
+  // Nested argument_type only.
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<true, false, _Tp>
+    : _Weak_result_type<_Tp>
+    {
+      typedef typename _Tp::argument_type argument_type;
+    };
+
+  // Nested first_argument_type and second_argument_type only.
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<false, true, _Tp>
+    : _Weak_result_type<_Tp>
+    {
+      typedef typename _Tp::first_argument_type first_argument_type;
+      typedef typename _Tp::second_argument_type second_argument_type;
+    };
+
+  // All the nested argument types.
+   template<typename _Tp>
+    struct _Reference_wrapper_base_impl<true, true, _Tp>
+    : _Weak_result_type<_Tp>
+    {
+      typedef typename _Tp::argument_type argument_type;
+      typedef typename _Tp::first_argument_type first_argument_type;
+      typedef typename _Tp::second_argument_type second_argument_type;
+    };
+
+  _GLIBCXX_HAS_NESTED_TYPE(argument_type)
+  _GLIBCXX_HAS_NESTED_TYPE(first_argument_type)
+  _GLIBCXX_HAS_NESTED_TYPE(second_argument_type)
+
+  /**
+   *  Derives from unary_function or binary_function when it
+   *  can. Specializations handle all of the easy cases. The primary
+   *  template determines what to do with a class type, which may
+   *  derive from both unary_function and binary_function.
+  */
+  template<typename _Tp>
+    struct _Reference_wrapper_base
+    : _Reference_wrapper_base_impl<
+      __has_argument_type<_Tp>::value,
+      __has_first_argument_type<_Tp>::value
+      && __has_second_argument_type<_Tp>::value,
+      _Tp>
+    { };
+
+  // - a function type (unary)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(_T1)>
+    : unary_function<_T1, _Res>
+    { };
+
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(_T1) const>
+    : unary_function<_T1, _Res>
+    { };
+
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(_T1) volatile>
+    : unary_function<_T1, _Res>
+    { };
+
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(_T1) const volatile>
+    : unary_function<_T1, _Res>
+    { };
+
+  // - a function type (binary)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(_T1, _T2)>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(_T1, _T2) const>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(_T1, _T2) volatile>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  // - a function pointer type (unary)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(*)(_T1)>
+    : unary_function<_T1, _Res>
+    { };
+
+  // - a function pointer type (binary)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(*)(_T1, _T2)>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, no qualifiers)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)()>
+    : unary_function<_T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, no qualifiers)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2)>
+    : binary_function<_T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, const)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() const>
+    : unary_function<const _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, const)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const>
+    : binary_function<const _T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, volatile)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() volatile>
+    : unary_function<volatile _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, volatile)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile>
+    : binary_function<volatile _T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, const volatile)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() const volatile>
+    : unary_function<const volatile _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, const volatile)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile>
+    : binary_function<const volatile _T1*, _T2, _Res>
+    { };
+
+  /**
+   *  @brief Primary class template for reference_wrapper.
+   *  @ingroup functors
+   *  @{
+   */
+  template<typename _Tp>
+    class reference_wrapper
+    : public _Reference_wrapper_base<typename remove_cv<_Tp>::type>
+    {
+      _Tp* _M_data;
+
+    public:
+      typedef _Tp type;
+
+      reference_wrapper(_Tp& __indata)
+      : _M_data(std::__addressof(__indata))
+      { }
+
+      reference_wrapper(_Tp&&) = delete;
+
+      reference_wrapper(const reference_wrapper<_Tp>& __inref):
+      _M_data(__inref._M_data)
+      { }
+
+      reference_wrapper&
+      operator=(const reference_wrapper<_Tp>& __inref)
+      {
+	_M_data = __inref._M_data;
+	return *this;
+      }
+
+      operator _Tp&() const
+      { return this->get(); }
+
+      _Tp&
+      get() const
+      { return *_M_data; }
+
+      template<typename... _Args>
+	typename result_of<_Tp&(_Args&&...)>::type
+	operator()(_Args&&... __args) const
+	{
+	  return __invoke(get(), std::forward<_Args>(__args)...);
+	}
+    };
+
+
+  /// Denotes a reference should be taken to a variable.
+  template<typename _Tp>
+    inline reference_wrapper<_Tp>
+    ref(_Tp& __t)
+    { return reference_wrapper<_Tp>(__t); }
+
+  /// Denotes a const reference should be taken to a variable.
+  template<typename _Tp>
+    inline reference_wrapper<const _Tp>
+    cref(const _Tp& __t)
+    { return reference_wrapper<const _Tp>(__t); }
+
+  template<typename _Tp>
+    void ref(const _Tp&&) = delete;
+
+  template<typename _Tp>
+    void cref(const _Tp&&) = delete;
+
+  /// Partial specialization.
+  template<typename _Tp>
+    inline reference_wrapper<_Tp>
+    ref(reference_wrapper<_Tp> __t)
+    { return ref(__t.get()); }
+
+  /// Partial specialization.
+  template<typename _Tp>
+    inline reference_wrapper<const _Tp>
+    cref(reference_wrapper<_Tp> __t)
+    { return cref(__t.get()); }
+
+  // @} group functors
+
+  template<typename _MemberPointer>
+    class _Mem_fn;
+
+  /**
+   * Derives from @c unary_function or @c binary_function, or perhaps
+   * nothing, depending on the number of arguments provided. The
+   * primary template is the basis case, which derives nothing.
+   */
+  template<typename _Res, typename... _ArgTypes>
+    struct _Maybe_unary_or_binary_function { };
+
+  /// Derives from @c unary_function, as appropriate.
+  template<typename _Res, typename _T1>
+    struct _Maybe_unary_or_binary_function<_Res, _T1>
+    : std::unary_function<_T1, _Res> { };
+
+  /// Derives from @c binary_function, as appropriate.
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
+    : std::binary_function<_T1, _T2, _Res> { };
+
+  /// Implementation of @c mem_fn for member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...)>
+    : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...);
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __object, const volatile _Class *,
+		_ArgTypes... __args) const
+	{ return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+	{ return ((*__ptr).*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(_Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle pointers
+      _Res
+      operator()(_Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+	_Res
+	operator()(_Tp& __object, _ArgTypes... __args) const
+	{
+	  return _M_call(__object, &__object,
+	      std::forward<_ArgTypes>(__args)...);
+	}
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for const member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const>
+    : public _Maybe_unary_or_binary_function<_Res, const _Class*,
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) const;
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __object, const volatile _Class *,
+		_ArgTypes... __args) const
+	{ return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+	{ return ((*__ptr).*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(const _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle pointers
+      _Res
+      operator()(const _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+	_Res operator()(_Tp& __object, _ArgTypes... __args) const
+	{
+	  return _M_call(__object, &__object,
+	      std::forward<_ArgTypes>(__args)...);
+	}
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for volatile member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile>
+    : public _Maybe_unary_or_binary_function<_Res, volatile _Class*,
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile;
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __object, const volatile _Class *,
+		_ArgTypes... __args) const
+	{ return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+	{ return ((*__ptr).*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(volatile _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle pointers
+      _Res
+      operator()(volatile _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+	_Res
+	operator()(_Tp& __object, _ArgTypes... __args) const
+	{
+	  return _M_call(__object, &__object,
+	      std::forward<_ArgTypes>(__args)...);
+	}
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for const volatile member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile>
+    : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*,
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile;
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __object, const volatile _Class *,
+		_ArgTypes... __args) const
+	{ return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      template<typename _Tp>
+	_Res
+	_M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+	{ return ((*__ptr).*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(const volatile _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle pointers
+      _Res
+      operator()(const volatile _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(std::forward<_ArgTypes>(__args)...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+	_Res operator()(_Tp& __object, _ArgTypes... __args) const
+	{
+	  return _M_call(__object, &__object,
+	      std::forward<_ArgTypes>(__args)...);
+	}
+
+    private:
+      _Functor __pmf;
+    };
+
+
+  template<typename _Tp, bool>
+    struct _Mem_fn_const_or_non
+    {
+      typedef const _Tp& type;
+    };
+
+  template<typename _Tp>
+    struct _Mem_fn_const_or_non<_Tp, false>
+    {
+      typedef _Tp& type;
+    };
+
+  template<typename _Res, typename _Class>
+    class _Mem_fn<_Res _Class::*>
+    {
+      // This bit of genius is due to Peter Dimov, improved slightly by
+      // Douglas Gregor.
+      template<typename _Tp>
+	_Res&
+	_M_call(_Tp& __object, _Class *) const
+	{ return __object.*__pm; }
+
+      template<typename _Tp, typename _Up>
+	_Res&
+	_M_call(_Tp& __object, _Up * const *) const
+	{ return (*__object).*__pm; }
+
+      template<typename _Tp, typename _Up>
+	const _Res&
+	_M_call(_Tp& __object, const _Up * const *) const
+	{ return (*__object).*__pm; }
+
+      template<typename _Tp>
+	const _Res&
+	_M_call(_Tp& __object, const _Class *) const
+	{ return __object.*__pm; }
+
+      template<typename _Tp>
+	const _Res&
+	_M_call(_Tp& __ptr, const volatile void*) const
+	{ return (*__ptr).*__pm; }
+
+      template<typename _Tp> static _Tp& __get_ref();
+
+      template<typename _Tp>
+	static __sfinae_types::__one __check_const(_Tp&, _Class*);
+      template<typename _Tp, typename _Up>
+	static __sfinae_types::__one __check_const(_Tp&, _Up * const *);
+      template<typename _Tp, typename _Up>
+	static __sfinae_types::__two __check_const(_Tp&, const _Up * const *);
+      template<typename _Tp>
+	static __sfinae_types::__two __check_const(_Tp&, const _Class*);
+      template<typename _Tp>
+	static __sfinae_types::__two __check_const(_Tp&, const volatile void*);
+
+    public:
+      template<typename _Tp>
+	struct _Result_type
+	: _Mem_fn_const_or_non<_Res,
+	  (sizeof(__sfinae_types::__two)
+	   == sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))>
+	{ };
+
+      template<typename _Signature>
+	struct result;
+
+      template<typename _CVMem, typename _Tp>
+	struct result<_CVMem(_Tp)>
+	: public _Result_type<_Tp> { };
+
+      template<typename _CVMem, typename _Tp>
+	struct result<_CVMem(_Tp&)>
+	: public _Result_type<_Tp> { };
+
+      explicit
+      _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { }
+
+      // Handle objects
+      _Res&
+      operator()(_Class& __object) const
+      { return __object.*__pm; }
+
+      const _Res&
+      operator()(const _Class& __object) const
+      { return __object.*__pm; }
+
+      // Handle pointers
+      _Res&
+      operator()(_Class* __object) const
+      { return __object->*__pm; }
+
+      const _Res&
+      operator()(const _Class* __object) const
+      { return __object->*__pm; }
+
+      // Handle smart pointers and derived
+      template<typename _Tp>
+	typename _Result_type<_Tp>::type
+	operator()(_Tp& __unknown) const
+	{ return _M_call(__unknown, &__unknown); }
+
+    private:
+      _Res _Class::*__pm;
+    };
+
+  /**
+   *  @brief Returns a function object that forwards to the member
+   *  pointer @a pm.
+   *  @ingroup functors
+   */
+  template<typename _Tp, typename _Class>
+    inline _Mem_fn<_Tp _Class::*>
+    mem_fn(_Tp _Class::* __pm)
+    {
+      return _Mem_fn<_Tp _Class::*>(__pm);
+    }
+
+  /**
+   *  @brief Determines if the given type _Tp is a function object
+   *  should be treated as a subexpression when evaluating calls to
+   *  function objects returned by bind(). [TR1 3.6.1]
+   *  @ingroup binders
+   */
+  template<typename _Tp>
+    struct is_bind_expression
+    : public false_type { };
+
+  /**
+   *  @brief Determines if the given type _Tp is a placeholder in a
+   *  bind() expression and, if so, which placeholder it is. [TR1 3.6.2]
+   *  @ingroup binders
+   */
+  template<typename _Tp>
+    struct is_placeholder
+    : public integral_constant<int, 0>
+    { };
+
+  /// The type of placeholder objects defined by libstdc++.
+  template<int _Num> struct _Placeholder { };
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+
+  /** @namespace std::placeholders
+   *  @brief ISO C++ 0x entities sub namespace for functional.
+   *  @ingroup binders
+   *
+   *  Define a large number of placeholders. There is no way to
+   *  simplify this with variadic templates, because we're introducing
+   *  unique names for each.
+   */
+  namespace placeholders
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+    extern const _Placeholder<1> _1;
+    extern const _Placeholder<2> _2;
+    extern const _Placeholder<3> _3;
+    extern const _Placeholder<4> _4;
+    extern const _Placeholder<5> _5;
+    extern const _Placeholder<6> _6;
+    extern const _Placeholder<7> _7;
+    extern const _Placeholder<8> _8;
+    extern const _Placeholder<9> _9;
+    extern const _Placeholder<10> _10;
+    extern const _Placeholder<11> _11;
+    extern const _Placeholder<12> _12;
+    extern const _Placeholder<13> _13;
+    extern const _Placeholder<14> _14;
+    extern const _Placeholder<15> _15;
+    extern const _Placeholder<16> _16;
+    extern const _Placeholder<17> _17;
+    extern const _Placeholder<18> _18;
+    extern const _Placeholder<19> _19;
+    extern const _Placeholder<20> _20;
+    extern const _Placeholder<21> _21;
+    extern const _Placeholder<22> _22;
+    extern const _Placeholder<23> _23;
+    extern const _Placeholder<24> _24;
+    extern const _Placeholder<25> _25;
+    extern const _Placeholder<26> _26;
+    extern const _Placeholder<27> _27;
+    extern const _Placeholder<28> _28;
+    extern const _Placeholder<29> _29;
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  Partial specialization of is_placeholder that provides the placeholder
+   *  number for the placeholder objects defined by libstdc++.
+   *  @ingroup binders
+   */
+  template<int _Num>
+    struct is_placeholder<_Placeholder<_Num> >
+    : public integral_constant<int, _Num>
+    { };
+
+  /**
+   * Used by _Safe_tuple_element to indicate that there is no tuple
+   * element at this position.
+   */
+  struct _No_tuple_element;
+
+  /**
+   * Implementation helper for _Safe_tuple_element. This primary
+   * template handles the case where it is safe to use @c
+   * tuple_element.
+   */
+  template<int __i, typename _Tuple, bool _IsSafe>
+    struct _Safe_tuple_element_impl
+    : tuple_element<__i, _Tuple> { };
+
+  /**
+   * Implementation helper for _Safe_tuple_element. This partial
+   * specialization handles the case where it is not safe to use @c
+   * tuple_element. We just return @c _No_tuple_element.
+   */
+  template<int __i, typename _Tuple>
+    struct _Safe_tuple_element_impl<__i, _Tuple, false>
+    {
+      typedef _No_tuple_element type;
+    };
+
+  /**
+   * Like tuple_element, but returns @c _No_tuple_element when
+   * tuple_element would return an error.
+   */
+ template<int __i, typename _Tuple>
+   struct _Safe_tuple_element
+   : _Safe_tuple_element_impl<__i, _Tuple,
+			      (__i >= 0 && __i < tuple_size<_Tuple>::value)>
+   { };
+
+  /**
+   *  Maps an argument to bind() into an actual argument to the bound
+   *  function object [TR1 3.6.3/5]. Only the first parameter should
+   *  be specified: the rest are used to determine among the various
+   *  implementations. Note that, although this class is a function
+   *  object, it isn't entirely normal because it takes only two
+   *  parameters regardless of the number of parameters passed to the
+   *  bind expression. The first parameter is the bound argument and
+   *  the second parameter is a tuple containing references to the
+   *  rest of the arguments.
+   */
+  template<typename _Arg,
+	   bool _IsBindExp = is_bind_expression<_Arg>::value,
+	   bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)>
+    class _Mu;
+
+  /**
+   *  If the argument is reference_wrapper<_Tp>, returns the
+   *  underlying reference. [TR1 3.6.3/5 bullet 1]
+   */
+  template<typename _Tp>
+    class _Mu<reference_wrapper<_Tp>, false, false>
+    {
+    public:
+      typedef _Tp& result_type;
+
+      /* Note: This won't actually work for const volatile
+       * reference_wrappers, because reference_wrapper::get() is const
+       * but not volatile-qualified. This might be a defect in the TR.
+       */
+      template<typename _CVRef, typename _Tuple>
+	result_type
+	operator()(_CVRef& __arg, _Tuple&) const volatile
+	{ return __arg.get(); }
+    };
+
+  /**
+   *  If the argument is a bind expression, we invoke the underlying
+   *  function object with the same cv-qualifiers as we are given and
+   *  pass along all of our arguments (unwrapped). [TR1 3.6.3/5 bullet 2]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, true, false>
+    {
+    public:
+      template<typename _CVArg, typename... _Args>
+	auto
+	operator()(_CVArg& __arg,
+		   tuple<_Args...>& __tuple) const volatile
+	-> decltype(__arg(declval<_Args>()...))
+	{
+	  // Construct an index tuple and forward to __call
+	  typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
+	    _Indexes;
+	  return this->__call(__arg, __tuple, _Indexes());
+	}
+
+    private:
+      // Invokes the underlying function object __arg by unpacking all
+      // of the arguments in the tuple.
+      template<typename _CVArg, typename... _Args, int... _Indexes>
+	auto
+	__call(_CVArg& __arg, tuple<_Args...>& __tuple,
+	       const _Index_tuple<_Indexes...>&) const volatile
+	-> decltype(__arg(declval<_Args>()...))
+	{
+	  return __arg(std::forward<_Args>(get<_Indexes>(__tuple))...);
+	}
+    };
+
+  /**
+   *  If the argument is a placeholder for the Nth argument, returns
+   *  a reference to the Nth argument to the bind function object.
+   *  [TR1 3.6.3/5 bullet 3]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, false, true>
+    {
+    public:
+      template<typename _Signature> class result;
+
+      template<typename _CVMu, typename _CVArg, typename _Tuple>
+	class result<_CVMu(_CVArg, _Tuple)>
+	{
+	  // Add a reference, if it hasn't already been done for us.
+	  // This allows us to be a little bit sloppy in constructing
+	  // the tuple that we pass to result_of<...>.
+	  typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value
+						- 1), _Tuple>::type
+	    __base_type;
+
+	public:
+	  typedef typename add_rvalue_reference<__base_type>::type type;
+	};
+
+      template<typename _Tuple>
+	typename result<_Mu(_Arg, _Tuple)>::type
+	operator()(const volatile _Arg&, _Tuple& __tuple) const volatile
+	{
+	  return std::forward<typename result<_Mu(_Arg, _Tuple)>::type>(
+	      ::std::get<(is_placeholder<_Arg>::value - 1)>(__tuple));
+	}
+    };
+
+  /**
+   *  If the argument is just a value, returns a reference to that
+   *  value. The cv-qualifiers on the reference are the same as the
+   *  cv-qualifiers on the _Mu object. [TR1 3.6.3/5 bullet 4]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, false, false>
+    {
+    public:
+      template<typename _Signature> struct result;
+
+      template<typename _CVMu, typename _CVArg, typename _Tuple>
+	struct result<_CVMu(_CVArg, _Tuple)>
+	{
+	  typedef typename add_lvalue_reference<_CVArg>::type type;
+	};
+
+      // Pick up the cv-qualifiers of the argument
+      template<typename _CVArg, typename _Tuple>
+	_CVArg&&
+	operator()(_CVArg&& __arg, _Tuple&) const volatile
+	{ return std::forward<_CVArg>(__arg); }
+    };
+
+  /**
+   *  Maps member pointers into instances of _Mem_fn but leaves all
+   *  other function objects untouched. Used by tr1::bind(). The
+   *  primary template handles the non--member-pointer case.
+   */
+  template<typename _Tp>
+    struct _Maybe_wrap_member_pointer
+    {
+      typedef _Tp type;
+
+      static const _Tp&
+      __do_wrap(const _Tp& __x)
+      { return __x; }
+
+      static _Tp&&
+      __do_wrap(_Tp&& __x)
+      { return static_cast<_Tp&&>(__x); }
+    };
+
+  /**
+   *  Maps member pointers into instances of _Mem_fn but leaves all
+   *  other function objects untouched. Used by tr1::bind(). This
+   *  partial specialization handles the member pointer case.
+   */
+  template<typename _Tp, typename _Class>
+    struct _Maybe_wrap_member_pointer<_Tp _Class::*>
+    {
+      typedef _Mem_fn<_Tp _Class::*> type;
+
+      static type
+      __do_wrap(_Tp _Class::* __pm)
+      { return type(__pm); }
+    };
+
+  // Specialization needed to prevent "forming reference to void" errors when
+  // bind<void>() is called, because argument deduction instantiates
+  // _Maybe_wrap_member_pointer<void> outside the immediate context where
+  // SFINAE applies.
+  template<>
+    struct _Maybe_wrap_member_pointer<void>
+    {
+      typedef void type;
+    };
+
+  // std::get<I> for volatile-qualified tuples
+  template<size_t _Ind, typename... _Tp>
+    inline auto
+    __volget(volatile tuple<_Tp...>& __tuple)
+    -> typename tuple_element<_Ind, tuple<_Tp...>>::type volatile&
+    { return std::get<_Ind>(const_cast<tuple<_Tp...>&>(__tuple)); }
+
+  // std::get<I> for const-volatile-qualified tuples
+  template<size_t _Ind, typename... _Tp>
+    inline auto
+    __volget(const volatile tuple<_Tp...>& __tuple)
+    -> typename tuple_element<_Ind, tuple<_Tp...>>::type const volatile&
+    { return std::get<_Ind>(const_cast<const tuple<_Tp...>&>(__tuple)); }
+
+  /// Type of the function object returned from bind().
+  template<typename _Signature>
+    struct _Bind;
+
+   template<typename _Functor, typename... _Bound_args>
+    class _Bind<_Functor(_Bound_args...)>
+    : public _Weak_result_type<_Functor>
+    {
+      typedef _Bind __self_type;
+      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
+	_Bound_indexes;
+
+      _Functor _M_f;
+      tuple<_Bound_args...> _M_bound_args;
+
+      // Call unqualified
+      template<typename _Result, typename... _Args, int... _Indexes>
+	_Result
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (get<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const
+      template<typename _Result, typename... _Args, int... _Indexes>
+	_Result
+	__call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (get<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as volatile
+      template<typename _Result, typename... _Args, int... _Indexes>
+	_Result
+	__call_v(tuple<_Args...>&& __args,
+		 _Index_tuple<_Indexes...>) volatile
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const volatile
+      template<typename _Result, typename... _Args, int... _Indexes>
+	_Result
+	__call_c_v(tuple<_Args...>&& __args,
+		   _Index_tuple<_Indexes...>) const volatile
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+     public:
+      template<typename... _Args>
+	explicit _Bind(const _Functor& __f, _Args&&... __args)
+	: _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
+	{ }
+
+      template<typename... _Args>
+	explicit _Bind(_Functor&& __f, _Args&&... __args)
+	: _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
+	{ }
+
+      _Bind(const _Bind&) = default;
+
+      _Bind(_Bind&& __b)
+      : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args))
+      { }
+
+      // Call unqualified
+      template<typename... _Args, typename _Result
+	= decltype( std::declval<_Functor>()(
+	      _Mu<_Bound_args>()( std::declval<_Bound_args&>(),
+				  std::declval<tuple<_Args...>&>() )... ) )>
+	_Result
+	operator()(_Args&&... __args)
+	{
+	  return this->__call<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as const
+      template<typename... _Args, typename _Result
+	= decltype( std::declval<const _Functor>()(
+	      _Mu<_Bound_args>()( std::declval<const _Bound_args&>(),
+				  std::declval<tuple<_Args...>&>() )... ) )>
+	_Result
+	operator()(_Args&&... __args) const
+	{
+	  return this->__call_c<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as volatile
+      template<typename... _Args, typename _Result
+	= decltype( std::declval<volatile _Functor>()(
+	      _Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(),
+				  std::declval<tuple<_Args...>&>() )... ) )>
+	_Result
+	operator()(_Args&&... __args) volatile
+	{
+	  return this->__call_v<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as const volatile
+      template<typename... _Args, typename _Result
+	= decltype( std::declval<const volatile _Functor>()(
+	      _Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(),
+				  std::declval<tuple<_Args...>&>() )... ) )>
+	_Result
+	operator()(_Args&&... __args) const volatile
+	{
+	  return this->__call_c_v<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+    };
+
+  /// Type of the function object returned from bind<R>().
+  template<typename _Result, typename _Signature>
+    struct _Bind_result;
+
+  template<typename _Result, typename _Functor, typename... _Bound_args>
+    class _Bind_result<_Result, _Functor(_Bound_args...)>
+    {
+      typedef _Bind_result __self_type;
+      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
+	_Bound_indexes;
+
+      _Functor _M_f;
+      tuple<_Bound_args...> _M_bound_args;
+
+      // sfinae types
+      template<typename _Res>
+	struct __enable_if_void : enable_if<is_void<_Res>::value, int> { };
+      template<typename _Res>
+	struct __disable_if_void : enable_if<!is_void<_Res>::value, int> { };
+
+      // Call unqualified
+      template<typename _Res, typename... _Args, int... _Indexes>
+	_Result
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __disable_if_void<_Res>::type = 0)
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (get<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call unqualified, return void
+      template<typename _Res, typename... _Args, int... _Indexes>
+	void
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __enable_if_void<_Res>::type = 0)
+	{
+	  _M_f(_Mu<_Bound_args>()
+	       (get<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const
+      template<typename _Res, typename... _Args, int... _Indexes>
+	_Result
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __disable_if_void<_Res>::type = 0) const
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (get<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const, return void
+      template<typename _Res, typename... _Args, int... _Indexes>
+	void
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __enable_if_void<_Res>::type = 0) const
+	{
+	  _M_f(_Mu<_Bound_args>()
+	       (get<_Indexes>(_M_bound_args),  __args)...);
+	}
+
+      // Call as volatile
+      template<typename _Res, typename... _Args, int... _Indexes>
+	_Result
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __disable_if_void<_Res>::type = 0) volatile
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as volatile, return void
+      template<typename _Res, typename... _Args, int... _Indexes>
+	void
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __enable_if_void<_Res>::type = 0) volatile
+	{
+	  _M_f(_Mu<_Bound_args>()
+	       (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const volatile
+      template<typename _Res, typename... _Args, int... _Indexes>
+	_Result
+	__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
+	    typename __disable_if_void<_Res>::type = 0) const volatile
+	{
+	  return _M_f(_Mu<_Bound_args>()
+		      (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+      // Call as const volatile, return void
+      template<typename _Res, typename... _Args, int... _Indexes>
+	void
+	__call(tuple<_Args...>&& __args,
+	       _Index_tuple<_Indexes...>,
+	    typename __enable_if_void<_Res>::type = 0) const volatile
+	{
+	  _M_f(_Mu<_Bound_args>()
+	       (__volget<_Indexes>(_M_bound_args), __args)...);
+	}
+
+    public:
+      typedef _Result result_type;
+
+      template<typename... _Args>
+	explicit _Bind_result(const _Functor& __f, _Args&&... __args)
+	: _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
+	{ }
+
+      template<typename... _Args>
+	explicit _Bind_result(_Functor&& __f, _Args&&... __args)
+	: _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
+	{ }
+
+      _Bind_result(const _Bind_result&) = default;
+
+      _Bind_result(_Bind_result&& __b)
+      : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args))
+      { }
+
+      // Call unqualified
+      template<typename... _Args>
+	result_type
+	operator()(_Args&&... __args)
+	{
+	  return this->__call<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as const
+      template<typename... _Args>
+	result_type
+	operator()(_Args&&... __args) const
+	{
+	  return this->__call<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as volatile
+      template<typename... _Args>
+	result_type
+	operator()(_Args&&... __args) volatile
+	{
+	  return this->__call<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+
+      // Call as const volatile
+      template<typename... _Args>
+	result_type
+	operator()(_Args&&... __args) const volatile
+	{
+	  return this->__call<_Result>(
+	      std::forward_as_tuple(std::forward<_Args>(__args)...),
+	      _Bound_indexes());
+	}
+    };
+
+  /**
+   *  @brief Class template _Bind is always a bind expression.
+   *  @ingroup binders
+   */
+  template<typename _Signature>
+    struct is_bind_expression<_Bind<_Signature> >
+    : public true_type { };
+
+  /**
+   *  @brief Class template _Bind is always a bind expression.
+   *  @ingroup binders
+   */
+  template<typename _Result, typename _Signature>
+    struct is_bind_expression<_Bind_result<_Result, _Signature> >
+    : public true_type { };
+
+  template<typename _Functor, typename... _ArgTypes>
+    struct _Bind_helper
+    {
+      typedef _Maybe_wrap_member_pointer<typename decay<_Functor>::type>
+	__maybe_type;
+      typedef typename __maybe_type::type __functor_type;
+      typedef _Bind<__functor_type(typename decay<_ArgTypes>::type...)> type;
+    };
+
+  /**
+   *  @brief Function template for std::bind.
+   *  @ingroup binders
+   */
+  template<typename _Functor, typename... _ArgTypes>
+    inline
+    typename _Bind_helper<_Functor, _ArgTypes...>::type
+    bind(_Functor&& __f, _ArgTypes&&... __args)
+    {
+      typedef _Bind_helper<_Functor, _ArgTypes...> __helper_type;
+      typedef typename __helper_type::__maybe_type __maybe_type;
+      typedef typename __helper_type::type __result_type;
+      return __result_type(__maybe_type::__do_wrap(std::forward<_Functor>(__f)),
+			   std::forward<_ArgTypes>(__args)...);
+    }
+
+  template<typename _Result, typename _Functor, typename... _ArgTypes>
+    struct _Bindres_helper
+    {
+      typedef _Maybe_wrap_member_pointer<typename decay<_Functor>::type>
+	__maybe_type;
+      typedef typename __maybe_type::type __functor_type;
+      typedef _Bind_result<_Result,
+			   __functor_type(typename decay<_ArgTypes>::type...)>
+	type;
+    };
+
+  /**
+   *  @brief Function template for std::bind<R>.
+   *  @ingroup binders
+   */
+  template<typename _Result, typename _Functor, typename... _ArgTypes>
+    inline
+    typename _Bindres_helper<_Result, _Functor, _ArgTypes...>::type
+    bind(_Functor&& __f, _ArgTypes&&... __args)
+    {
+      typedef _Bindres_helper<_Result, _Functor, _ArgTypes...> __helper_type;
+      typedef typename __helper_type::__maybe_type __maybe_type;
+      typedef typename __helper_type::type __result_type;
+      return __result_type(__maybe_type::__do_wrap(std::forward<_Functor>(__f)),
+			   std::forward<_ArgTypes>(__args)...);
+    }
+
+  /**
+   *  @brief Exception class thrown when class template function's
+   *  operator() is called with an empty target.
+   *  @ingroup exceptions
+   */
+  class bad_function_call : public std::exception
+  {
+  public:
+    virtual ~bad_function_call() throw();
+  };
+
+  /**
+   *  Trait identifying "location-invariant" types, meaning that the
+   *  address of the object (or any of its members) will not escape.
+   *  Also implies a trivial copy constructor and assignment operator.
+   */
+  template<typename _Tp>
+    struct __is_location_invariant
+    : integral_constant<bool, (is_pointer<_Tp>::value
+			       || is_member_pointer<_Tp>::value)>
+    { };
+
+  class _Undefined_class;
+
+  union _Nocopy_types
+  {
+    void*       _M_object;
+    const void* _M_const_object;
+    void (*_M_function_pointer)();
+    void (_Undefined_class::*_M_member_pointer)();
+  };
+
+  union _Any_data
+  {
+    void*       _M_access()       { return &_M_pod_data[0]; }
+    const void* _M_access() const { return &_M_pod_data[0]; }
+
+    template<typename _Tp>
+      _Tp&
+      _M_access()
+      { return *static_cast<_Tp*>(_M_access()); }
+
+    template<typename _Tp>
+      const _Tp&
+      _M_access() const
+      { return *static_cast<const _Tp*>(_M_access()); }
+
+    _Nocopy_types _M_unused;
+    char _M_pod_data[sizeof(_Nocopy_types)];
+  };
+
+  enum _Manager_operation
+  {
+    __get_type_info,
+    __get_functor_ptr,
+    __clone_functor,
+    __destroy_functor
+  };
+
+  // Simple type wrapper that helps avoid annoying const problems
+  // when casting between void pointers and pointers-to-pointers.
+  template<typename _Tp>
+    struct _Simple_type_wrapper
+    {
+      _Simple_type_wrapper(_Tp __value) : __value(__value) { }
+
+      _Tp __value;
+    };
+
+  template<typename _Tp>
+    struct __is_location_invariant<_Simple_type_wrapper<_Tp> >
+    : __is_location_invariant<_Tp>
+    { };
+
+  // Converts a reference to a function object into a callable
+  // function object.
+  template<typename _Functor>
+    inline _Functor&
+    __callable_functor(_Functor& __f)
+    { return __f; }
+
+  template<typename _Member, typename _Class>
+    inline _Mem_fn<_Member _Class::*>
+    __callable_functor(_Member _Class::* &__p)
+    { return mem_fn(__p); }
+
+  template<typename _Member, typename _Class>
+    inline _Mem_fn<_Member _Class::*>
+    __callable_functor(_Member _Class::* const &__p)
+    { return mem_fn(__p); }
+
+  template<typename _Signature>
+    class function;
+
+  /// Base class of all polymorphic function object wrappers.
+  class _Function_base
+  {
+  public:
+    static const std::size_t _M_max_size = sizeof(_Nocopy_types);
+    static const std::size_t _M_max_align = __alignof__(_Nocopy_types);
+
+    template<typename _Functor>
+      class _Base_manager
+      {
+      protected:
+	static const bool __stored_locally =
+	(__is_location_invariant<_Functor>::value
+	 && sizeof(_Functor) <= _M_max_size
+	 && __alignof__(_Functor) <= _M_max_align
+	 && (_M_max_align % __alignof__(_Functor) == 0));
+
+	typedef integral_constant<bool, __stored_locally> _Local_storage;
+
+	// Retrieve a pointer to the function object
+	static _Functor*
+	_M_get_pointer(const _Any_data& __source)
+	{
+	  const _Functor* __ptr =
+	    __stored_locally? std::__addressof(__source._M_access<_Functor>())
+	    /* have stored a pointer */ : __source._M_access<_Functor*>();
+	  return const_cast<_Functor*>(__ptr);
+	}
+
+	// Clone a location-invariant function object that fits within
+	// an _Any_data structure.
+	static void
+	_M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
+	{
+	  new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
+	}
+
+	// Clone a function object that is not location-invariant or
+	// that cannot fit into an _Any_data structure.
+	static void
+	_M_clone(_Any_data& __dest, const _Any_data& __source, false_type)
+	{
+	  __dest._M_access<_Functor*>() =
+	    new _Functor(*__source._M_access<_Functor*>());
+	}
+
+	// Destroying a location-invariant object may still require
+	// destruction.
+	static void
+	_M_destroy(_Any_data& __victim, true_type)
+	{
+	  __victim._M_access<_Functor>().~_Functor();
+	}
+
+	// Destroying an object located on the heap.
+	static void
+	_M_destroy(_Any_data& __victim, false_type)
+	{
+	  delete __victim._M_access<_Functor*>();
+	}
+
+      public:
+	static bool
+	_M_manager(_Any_data& __dest, const _Any_data& __source,
+		   _Manager_operation __op)
+	{
+	  switch (__op)
+	    {
+#ifdef __GXX_RTTI
+	    case __get_type_info:
+	      __dest._M_access<const type_info*>() = &typeid(_Functor);
+	      break;
+#endif
+	    case __get_functor_ptr:
+	      __dest._M_access<_Functor*>() = _M_get_pointer(__source);
+	      break;
+
+	    case __clone_functor:
+	      _M_clone(__dest, __source, _Local_storage());
+	      break;
+
+	    case __destroy_functor:
+	      _M_destroy(__dest, _Local_storage());
+	      break;
+	    }
+	  return false;
+	}
+
+	static void
+	_M_init_functor(_Any_data& __functor, _Functor&& __f)
+	{ _M_init_functor(__functor, std::move(__f), _Local_storage()); }
+
+	template<typename _Signature>
+	  static bool
+	  _M_not_empty_function(const function<_Signature>& __f)
+	  { return static_cast<bool>(__f); }
+
+	template<typename _Tp>
+	  static bool
+	  _M_not_empty_function(const _Tp*& __fp)
+	  { return __fp; }
+
+	template<typename _Class, typename _Tp>
+	  static bool
+	  _M_not_empty_function(_Tp _Class::* const& __mp)
+	  { return __mp; }
+
+	template<typename _Tp>
+	  static bool
+	  _M_not_empty_function(const _Tp&)
+	  { return true; }
+
+      private:
+	static void
+	_M_init_functor(_Any_data& __functor, _Functor&& __f, true_type)
+	{ new (__functor._M_access()) _Functor(std::move(__f)); }
+
+	static void
+	_M_init_functor(_Any_data& __functor, _Functor&& __f, false_type)
+	{ __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); }
+      };
+
+    template<typename _Functor>
+      class _Ref_manager : public _Base_manager<_Functor*>
+      {
+	typedef _Function_base::_Base_manager<_Functor*> _Base;
+
+    public:
+	static bool
+	_M_manager(_Any_data& __dest, const _Any_data& __source,
+		   _Manager_operation __op)
+	{
+	  switch (__op)
+	    {
+#ifdef __GXX_RTTI
+	    case __get_type_info:
+	      __dest._M_access<const type_info*>() = &typeid(_Functor);
+	      break;
+#endif
+	    case __get_functor_ptr:
+	      __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source);
+	      return is_const<_Functor>::value;
+	      break;
+
+	    default:
+	      _Base::_M_manager(__dest, __source, __op);
+	    }
+	  return false;
+	}
+
+	static void
+	_M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f)
+	{
+	  // TBD: Use address_of function instead.
+	  _Base::_M_init_functor(__functor, &__f.get());
+	}
+      };
+
+    _Function_base() : _M_manager(0) { }
+
+    ~_Function_base()
+    {
+      if (_M_manager)
+	_M_manager(_M_functor, _M_functor, __destroy_functor);
+    }
+
+
+    bool _M_empty() const { return !_M_manager; }
+
+    typedef bool (*_Manager_type)(_Any_data&, const _Any_data&,
+				  _Manager_operation);
+
+    _Any_data     _M_functor;
+    _Manager_type _M_manager;
+  };
+
+  template<typename _Signature, typename _Functor>
+    class _Function_handler;
+
+  template<typename _Res, typename _Functor, typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), _Functor>
+    : public _Function_base::_Base_manager<_Functor>
+    {
+      typedef _Function_base::_Base_manager<_Functor> _Base;
+
+    public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	return (*_Base::_M_get_pointer(__functor))(
+	    std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  template<typename _Functor, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), _Functor>
+    : public _Function_base::_Base_manager<_Functor>
+    {
+      typedef _Function_base::_Base_manager<_Functor> _Base;
+
+     public:
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	(*_Base::_M_get_pointer(__functor))(
+	    std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  template<typename _Res, typename _Functor, typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> >
+    : public _Function_base::_Ref_manager<_Functor>
+    {
+      typedef _Function_base::_Ref_manager<_Functor> _Base;
+
+     public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	return __callable_functor(**_Base::_M_get_pointer(__functor))(
+	      std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  template<typename _Functor, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), reference_wrapper<_Functor> >
+    : public _Function_base::_Ref_manager<_Functor>
+    {
+      typedef _Function_base::_Ref_manager<_Functor> _Base;
+
+     public:
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	__callable_functor(**_Base::_M_get_pointer(__functor))(
+	    std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  template<typename _Class, typename _Member, typename _Res,
+	   typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), _Member _Class::*>
+    : public _Function_handler<void(_ArgTypes...), _Member _Class::*>
+    {
+      typedef _Function_handler<void(_ArgTypes...), _Member _Class::*>
+	_Base;
+
+     public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	return mem_fn(_Base::_M_get_pointer(__functor)->__value)(
+	    std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  template<typename _Class, typename _Member, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), _Member _Class::*>
+    : public _Function_base::_Base_manager<
+		 _Simple_type_wrapper< _Member _Class::* > >
+    {
+      typedef _Member _Class::* _Functor;
+      typedef _Simple_type_wrapper<_Functor> _Wrapper;
+      typedef _Function_base::_Base_manager<_Wrapper> _Base;
+
+     public:
+      static bool
+      _M_manager(_Any_data& __dest, const _Any_data& __source,
+		 _Manager_operation __op)
+      {
+	switch (__op)
+	  {
+#ifdef __GXX_RTTI
+	  case __get_type_info:
+	    __dest._M_access<const type_info*>() = &typeid(_Functor);
+	    break;
+#endif
+	  case __get_functor_ptr:
+	    __dest._M_access<_Functor*>() =
+	      &_Base::_M_get_pointer(__source)->__value;
+	    break;
+
+	  default:
+	    _Base::_M_manager(__dest, __source, __op);
+	  }
+	return false;
+      }
+
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	mem_fn(_Base::_M_get_pointer(__functor)->__value)(
+	    std::forward<_ArgTypes>(__args)...);
+      }
+    };
+
+  /**
+   *  @brief Primary class template for std::function.
+   *  @ingroup functors
+   *
+   *  Polymorphic function wrapper.
+   */
+  template<typename _Res, typename... _ArgTypes>
+    class function<_Res(_ArgTypes...)>
+    : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
+      private _Function_base
+    {
+      typedef _Res _Signature_type(_ArgTypes...);
+
+      struct _Useless { };
+
+    public:
+      typedef _Res result_type;
+
+      // [3.7.2.1] construct/copy/destroy
+
+      /**
+       *  @brief Default construct creates an empty function call wrapper.
+       *  @post @c !(bool)*this
+       */
+      function() : _Function_base() { }
+
+      /**
+       *  @brief Creates an empty function call wrapper.
+       *  @post @c !(bool)*this
+       */
+      function(nullptr_t) : _Function_base() { }
+
+      /**
+       *  @brief %Function copy constructor.
+       *  @param x A %function object with identical call signature.
+       *  @post @c (bool)*this == (bool)x
+       *
+       *  The newly-created %function contains a copy of the target of @a
+       *  x (if it has one).
+       */
+      function(const function& __x);
+
+      /**
+       *  @brief %Function move constructor.
+       *  @param x A %function object rvalue with identical call signature.
+       *
+       *  The newly-created %function contains the target of @a x
+       *  (if it has one).
+       */
+      function(function&& __x) : _Function_base()
+      {
+	__x.swap(*this);
+      }
+
+      // TODO: needs allocator_arg_t
+
+      /**
+       *  @brief Builds a %function that targets a copy of the incoming
+       *  function object.
+       *  @param f A %function object that is callable with parameters of
+       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
+       *  to @c Res.
+       *
+       *  The newly-created %function object will target a copy of @a
+       *  f. If @a f is @c reference_wrapper<F>, then this function
+       *  object will contain a reference to the function object @c
+       *  f.get(). If @a f is a NULL function pointer or NULL
+       *  pointer-to-member, the newly-created object will be empty.
+       *
+       *  If @a f is a non-NULL function pointer or an object of type @c
+       *  reference_wrapper<F>, this function will not throw.
+       */
+      template<typename _Functor>
+	function(_Functor __f,
+		 typename enable_if<
+			   !is_integral<_Functor>::value, _Useless>::type
+		   = _Useless());
+
+      /**
+       *  @brief %Function assignment operator.
+       *  @param x A %function with identical call signature.
+       *  @post @c (bool)*this == (bool)x
+       *  @returns @c *this
+       *
+       *  The target of @a x is copied to @c *this. If @a x has no
+       *  target, then @c *this will be empty.
+       *
+       *  If @a x targets a function pointer or a reference to a function
+       *  object, then this operation will not throw an %exception.
+       */
+      function&
+      operator=(const function& __x)
+      {
+	function(__x).swap(*this);
+	return *this;
+      }
+
+      /**
+       *  @brief %Function move-assignment operator.
+       *  @param x A %function rvalue with identical call signature.
+       *  @returns @c *this
+       *
+       *  The target of @a x is moved to @c *this. If @a x has no
+       *  target, then @c *this will be empty.
+       *
+       *  If @a x targets a function pointer or a reference to a function
+       *  object, then this operation will not throw an %exception.
+       */
+      function&
+      operator=(function&& __x)
+      {
+	function(std::move(__x)).swap(*this);
+	return *this;
+      }
+
+      /**
+       *  @brief %Function assignment to zero.
+       *  @post @c !(bool)*this
+       *  @returns @c *this
+       *
+       *  The target of @c *this is deallocated, leaving it empty.
+       */
+      function&
+      operator=(nullptr_t)
+      {
+	if (_M_manager)
+	  {
+	    _M_manager(_M_functor, _M_functor, __destroy_functor);
+	    _M_manager = 0;
+	    _M_invoker = 0;
+	  }
+	return *this;
+      }
+
+      /**
+       *  @brief %Function assignment to a new target.
+       *  @param f A %function object that is callable with parameters of
+       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
+       *  to @c Res.
+       *  @return @c *this
+       *
+       *  This  %function object wrapper will target a copy of @a
+       *  f. If @a f is @c reference_wrapper<F>, then this function
+       *  object will contain a reference to the function object @c
+       *  f.get(). If @a f is a NULL function pointer or NULL
+       *  pointer-to-member, @c this object will be empty.
+       *
+       *  If @a f is a non-NULL function pointer or an object of type @c
+       *  reference_wrapper<F>, this function will not throw.
+       */
+      template<typename _Functor>
+	typename enable_if<!is_integral<_Functor>::value, function&>::type
+	operator=(_Functor&& __f)
+	{
+	  function(std::forward<_Functor>(__f)).swap(*this);
+	  return *this;
+	}
+
+      /// @overload
+      template<typename _Functor>
+	typename enable_if<!is_integral<_Functor>::value, function&>::type
+	operator=(reference_wrapper<_Functor> __f)
+	{
+	  function(__f).swap(*this);
+	  return *this;
+	}
+
+      // [3.7.2.2] function modifiers
+
+      /**
+       *  @brief Swap the targets of two %function objects.
+       *  @param f A %function with identical call signature.
+       *
+       *  Swap the targets of @c this function object and @a f. This
+       *  function will not throw an %exception.
+       */
+      void swap(function& __x)
+      {
+	std::swap(_M_functor, __x._M_functor);
+	std::swap(_M_manager, __x._M_manager);
+	std::swap(_M_invoker, __x._M_invoker);
+      }
+
+      // TODO: needs allocator_arg_t
+      /*
+      template<typename _Functor, typename _Alloc>
+	void
+	assign(_Functor&& __f, const _Alloc& __a)
+	{
+	  function(allocator_arg, __a,
+		   std::forward<_Functor>(__f)).swap(*this);
+	}
+      */
+
+      // [3.7.2.3] function capacity
+
+      /**
+       *  @brief Determine if the %function wrapper has a target.
+       *
+       *  @return @c true when this %function object contains a target,
+       *  or @c false when it is empty.
+       *
+       *  This function will not throw an %exception.
+       */
+      explicit operator bool() const
+      { return !_M_empty(); }
+
+      // [3.7.2.4] function invocation
+
+      /**
+       *  @brief Invokes the function targeted by @c *this.
+       *  @returns the result of the target.
+       *  @throws bad_function_call when @c !(bool)*this
+       *
+       *  The function call operator invokes the target function object
+       *  stored by @c this.
+       */
+      _Res operator()(_ArgTypes... __args) const;
+
+#ifdef __GXX_RTTI
+      // [3.7.2.5] function target access
+      /**
+       *  @brief Determine the type of the target of this function object
+       *  wrapper.
+       *
+       *  @returns the type identifier of the target function object, or
+       *  @c typeid(void) if @c !(bool)*this.
+       *
+       *  This function will not throw an %exception.
+       */
+      const type_info& target_type() const;
+
+      /**
+       *  @brief Access the stored target function object.
+       *
+       *  @return Returns a pointer to the stored target function object,
+       *  if @c typeid(Functor).equals(target_type()); otherwise, a NULL
+       *  pointer.
+       *
+       * This function will not throw an %exception.
+       */
+      template<typename _Functor>       _Functor* target();
+
+      /// @overload
+      template<typename _Functor> const _Functor* target() const;
+#endif
+
+    private:
+      typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
+      _Invoker_type _M_invoker;
+  };
+
+  // Out-of-line member definitions.
+  template<typename _Res, typename... _ArgTypes>
+    function<_Res(_ArgTypes...)>::
+    function(const function& __x)
+    : _Function_base()
+    {
+      if (static_cast<bool>(__x))
+	{
+	  _M_invoker = __x._M_invoker;
+	  _M_manager = __x._M_manager;
+	  __x._M_manager(_M_functor, __x._M_functor, __clone_functor);
+	}
+    }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      function<_Res(_ArgTypes...)>::
+      function(_Functor __f,
+	       typename enable_if<
+			!is_integral<_Functor>::value, _Useless>::type)
+      : _Function_base()
+      {
+	typedef _Function_handler<_Signature_type, _Functor> _My_handler;
+
+	if (_My_handler::_M_not_empty_function(__f))
+	  {
+	    _M_invoker = &_My_handler::_M_invoke;
+	    _M_manager = &_My_handler::_M_manager;
+	    _My_handler::_M_init_functor(_M_functor, std::move(__f));
+	  }
+      }
+
+  template<typename _Res, typename... _ArgTypes>
+    _Res
+    function<_Res(_ArgTypes...)>::
+    operator()(_ArgTypes... __args) const
+    {
+      if (_M_empty())
+	__throw_bad_function_call();
+      return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
+    }
+
+#ifdef __GXX_RTTI
+  template<typename _Res, typename... _ArgTypes>
+    const type_info&
+    function<_Res(_ArgTypes...)>::
+    target_type() const
+    {
+      if (_M_manager)
+	{
+	  _Any_data __typeinfo_result;
+	  _M_manager(__typeinfo_result, _M_functor, __get_type_info);
+	  return *__typeinfo_result._M_access<const type_info*>();
+	}
+      else
+	return typeid(void);
+    }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      _Functor*
+      function<_Res(_ArgTypes...)>::
+      target()
+      {
+	if (typeid(_Functor) == target_type() && _M_manager)
+	  {
+	    _Any_data __ptr;
+	    if (_M_manager(__ptr, _M_functor, __get_functor_ptr)
+		&& !is_const<_Functor>::value)
+	      return 0;
+	    else
+	      return __ptr._M_access<_Functor*>();
+	  }
+	else
+	  return 0;
+      }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      const _Functor*
+      function<_Res(_ArgTypes...)>::
+      target() const
+      {
+	if (typeid(_Functor) == target_type() && _M_manager)
+	  {
+	    _Any_data __ptr;
+	    _M_manager(__ptr, _M_functor, __get_functor_ptr);
+	    return __ptr._M_access<const _Functor*>();
+	  }
+	else
+	  return 0;
+      }
+#endif
+
+  // [20.7.15.2.6] null pointer comparisons
+
+  /**
+   *  @brief Compares a polymorphic function object wrapper against 0
+   *  (the NULL pointer).
+   *  @returns @c true if the wrapper has no target, @c false otherwise
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Res, typename... _Args>
+    inline bool
+    operator==(const function<_Res(_Args...)>& __f, nullptr_t)
+    { return !static_cast<bool>(__f); }
+
+  /// @overload
+  template<typename _Res, typename... _Args>
+    inline bool
+    operator==(nullptr_t, const function<_Res(_Args...)>& __f)
+    { return !static_cast<bool>(__f); }
+
+  /**
+   *  @brief Compares a polymorphic function object wrapper against 0
+   *  (the NULL pointer).
+   *  @returns @c false if the wrapper has no target, @c true otherwise
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Res, typename... _Args>
+    inline bool
+    operator!=(const function<_Res(_Args...)>& __f, nullptr_t)
+    { return static_cast<bool>(__f); }
+
+  /// @overload
+  template<typename _Res, typename... _Args>
+    inline bool
+    operator!=(nullptr_t, const function<_Res(_Args...)>& __f)
+    { return static_cast<bool>(__f); }
+
+  // [20.7.15.2.7] specialized algorithms
+
+  /**
+   *  @brief Swap the targets of two polymorphic function object wrappers.
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Res, typename... _Args>
+    inline void
+    swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_FUNCTIONAL
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/future b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/future
new file mode 100644
index 000000000..970ce7649
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/future
@@ -0,0 +1,1393 @@
+// <future> -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/future
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_FUTURE
+#define _GLIBCXX_FUTURE 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <functional>
+#include <memory>
+#include <mutex>
+#include <thread>
+#include <condition_variable>
+#include <system_error>
+#include <exception>
+#include <atomic>
+#include <bits/functexcept.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup futures Futures
+   * @ingroup concurrency
+   *
+   * Classes for futures support.
+   * @{
+   */
+
+  /// Error code for futures
+  enum class future_errc
+  {
+    broken_promise,
+    future_already_retrieved,
+    promise_already_satisfied,
+    no_state
+  };
+
+  /// Specialization.
+  template<>
+    struct is_error_code_enum<future_errc> : public true_type { };
+
+  /// Points to a statically-allocated object derived from error_category.
+  const error_category&
+  future_category();
+
+  /// Overload for make_error_code.
+  inline error_code 
+  make_error_code(future_errc __errc)
+  { return error_code(static_cast<int>(__errc), future_category()); }
+
+  /// Overload for make_error_condition.
+  inline error_condition 
+  make_error_condition(future_errc __errc)
+  { return error_condition(static_cast<int>(__errc), future_category()); }
+
+  /**
+   *  @brief Exception type thrown by futures.
+   *  @ingroup exceptions
+   */
+  class future_error : public logic_error
+  {
+    error_code 			_M_code;
+
+  public:
+    explicit future_error(error_code __ec)
+    : logic_error("std::future_error"), _M_code(__ec)
+    { }
+
+    virtual ~future_error() throw();
+
+    virtual const char* 
+    what() const throw();
+
+    const error_code& 
+    code() const throw() { return _M_code; }
+  };
+
+  // Forward declarations.
+  template<typename _Res>
+    class future;
+
+  template<typename _Res>
+    class shared_future;
+
+  template<typename _Res>
+    class atomic_future;
+
+  template<typename _Signature> 
+    class packaged_task;
+
+  template<typename _Res>
+    class promise;
+
+  /// Launch code for futures
+  enum class launch 
+  { 
+    any, 
+    async, 
+    sync 
+  };
+
+  /// Status code for futures
+  enum class future_status 
+  {
+    ready,
+    timeout,
+    deferred
+  };
+
+  template<typename _Fn, typename... _Args>
+    future<typename result_of<_Fn(_Args...)>::type>
+    async(launch __policy, _Fn&& __fn, _Args&&... __args);
+
+  template<typename _FnCheck, typename _Fn, typename... _Args>
+    struct __async_sfinae_helper
+    {
+      typedef future<typename result_of<_Fn(_Args...)>::type> type;
+    };
+
+  template<typename _Fn, typename... _Args>
+    struct __async_sfinae_helper<launch, _Fn, _Args...>
+    { };
+
+  template<typename _Fn, typename... _Args>
+    typename
+    __async_sfinae_helper<typename decay<_Fn>::type, _Fn, _Args...>::type
+    async(_Fn&& __fn, _Args&&... __args);
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
+  && defined(_GLIBCXX_ATOMIC_BUILTINS_4)
+
+  /// Base class and enclosing scope.
+  struct __future_base
+  {
+    /// Base class for results.
+    struct _Result_base
+    {
+      exception_ptr		_M_error;
+
+      _Result_base(const _Result_base&) = delete;
+      _Result_base& operator=(const _Result_base&) = delete;
+
+      // _M_destroy() allows derived classes to control deallocation
+      virtual void _M_destroy() = 0;
+
+      struct _Deleter
+      {
+	void operator()(_Result_base* __fr) const { __fr->_M_destroy(); }
+      };
+
+    protected:
+      _Result_base();
+      virtual ~_Result_base();
+    };
+
+    /// Result.
+    template<typename _Res>
+      struct _Result : _Result_base
+      {
+      private:
+	typedef alignment_of<_Res>				__a_of;
+	typedef aligned_storage<sizeof(_Res), __a_of::value>	__align_storage;
+	typedef typename __align_storage::type			__align_type;
+
+	__align_type		_M_storage;
+	bool 			_M_initialized;
+
+      public:
+	_Result() : _M_initialized() { }
+	
+	~_Result()
+	{
+	  if (_M_initialized)
+	    _M_value().~_Res();
+	}
+
+	// Return lvalue, future will add const or rvalue-reference
+	_Res& 
+	_M_value() { return *static_cast<_Res*>(_M_addr()); }
+
+	void
+	_M_set(const _Res& __res)
+	{
+	  ::new (_M_addr()) _Res(__res);
+	  _M_initialized = true;
+	}
+
+	void
+	_M_set(_Res&& __res)
+	{
+	  ::new (_M_addr()) _Res(std::move(__res));
+	  _M_initialized = true;
+	}
+
+      private:
+	void _M_destroy() { delete this; }
+
+	void* _M_addr() { return static_cast<void*>(&_M_storage); }
+    };
+
+    // TODO: use template alias when available
+    /*
+      template<typename _Res>
+      using _Ptr = unique_ptr<_Res, _Result_base::_Deleter>;
+    */
+    /// A unique_ptr based on the instantiating type.
+    template<typename _Res>
+      struct _Ptr
+      {
+	typedef unique_ptr<_Res, _Result_base::_Deleter> type;
+      };
+
+    /// Result_alloc.
+    template<typename _Res, typename _Alloc>
+      struct _Result_alloc : _Result<_Res>, _Alloc
+      {
+        typedef typename _Alloc::template rebind<_Result_alloc>::other
+          __allocator_type;
+
+        explicit
+	_Result_alloc(const _Alloc& __a) : _Result<_Res>(), _Alloc(__a)
+        { }
+	
+      private:
+	void _M_destroy()
+        {
+          __allocator_type __a(*this);
+          __a.destroy(this);
+          __a.deallocate(this, 1);
+        }
+      };
+
+    template<typename _Res, typename _Allocator>
+      static typename _Ptr<_Result_alloc<_Res, _Allocator>>::type
+      _S_allocate_result(const _Allocator& __a)
+      {
+        typedef _Result_alloc<_Res, _Allocator>	__result_type;
+        typename __result_type::__allocator_type __a2(__a);
+        __result_type* __p = __a2.allocate(1);
+        __try
+	{
+          __a2.construct(__p, __a);
+        }
+        __catch(...)
+        {
+          __a2.deallocate(__p, 1);
+          __throw_exception_again;
+        }
+        return typename _Ptr<__result_type>::type(__p);
+      }
+
+
+    /// Base class for state between a promise and one or more
+    /// associated futures.
+    class _State_base
+    {
+      typedef _Ptr<_Result_base>::type _Ptr_type;
+
+      _Ptr_type			_M_result;
+      mutex               	_M_mutex;
+      condition_variable  	_M_cond;
+      atomic_flag         	_M_retrieved;
+      once_flag			_M_once;
+
+    public:
+      _State_base() : _M_result(), _M_retrieved(ATOMIC_FLAG_INIT) { }
+      _State_base(const _State_base&) = delete;
+      _State_base& operator=(const _State_base&) = delete;
+      virtual ~_State_base();
+
+      _Result_base&
+      wait()
+      {
+	_M_run_deferred();
+	unique_lock<mutex> __lock(_M_mutex);
+	if (!_M_ready())
+	  _M_cond.wait(__lock, std::bind<bool>(&_State_base::_M_ready, this));
+	return *_M_result;
+      }
+
+      template<typename _Rep, typename _Period>
+        bool
+        wait_for(const chrono::duration<_Rep, _Period>& __rel)
+        {
+	  unique_lock<mutex> __lock(_M_mutex);
+	  auto __bound = std::bind<bool>(&_State_base::_M_ready, this);
+	  return _M_ready() || _M_cond.wait_for(__lock, __rel, __bound);
+	}
+
+      template<typename _Clock, typename _Duration>
+        bool
+        wait_until(const chrono::time_point<_Clock, _Duration>& __abs)
+        {
+	  unique_lock<mutex> __lock(_M_mutex);
+	  auto __bound = std::bind<bool>(&_State_base::_M_ready, this);
+	  return _M_ready() || _M_cond.wait_until(__lock, __abs, __bound);
+	}
+
+      void
+      _M_set_result(function<_Ptr_type()> __res, bool __ignore_failure = false)
+      {
+        bool __set = __ignore_failure;
+        // all calls to this function are serialized,
+        // side-effects of invoking __res only happen once
+        call_once(_M_once, &_State_base::_M_do_set, this, ref(__res),
+            ref(__set));
+        if (!__set)
+          __throw_future_error(int(future_errc::promise_already_satisfied));
+      }
+
+      void
+      _M_break_promise(_Ptr_type __res)
+      {
+	if (static_cast<bool>(__res))
+	  {
+	    error_code __ec(make_error_code(future_errc::broken_promise));
+	    __res->_M_error = copy_exception(future_error(__ec));
+	    {
+	      lock_guard<mutex> __lock(_M_mutex);
+	      _M_result.swap(__res);
+	    }
+	    _M_cond.notify_all();
+	  }
+      }
+
+      // Called when this object is passed to a future.
+      void
+      _M_set_retrieved_flag()
+      {
+	if (_M_retrieved.test_and_set())
+	  __throw_future_error(int(future_errc::future_already_retrieved));
+      }
+
+      template<typename _Res, typename _Arg>
+        struct _Setter;
+
+      // set lvalues
+      template<typename _Res, typename _Arg>
+        struct _Setter<_Res, _Arg&>
+        {
+          // check this is only used by promise<R>::set_value(const R&)
+          // or promise<R>::set_value(R&)
+          static_assert(is_same<_Res, _Arg&>::value  // promise<R&>
+              || is_same<const _Res, _Arg>::value,  // promise<R>
+              "Invalid specialisation");
+
+          typename promise<_Res>::_Ptr_type operator()()
+          {
+            _State_base::_S_check(_M_promise->_M_future);
+            _M_promise->_M_storage->_M_set(_M_arg);
+            return std::move(_M_promise->_M_storage);
+          }
+          promise<_Res>*    _M_promise;
+          _Arg&             _M_arg;
+        };
+
+      // set rvalues
+      template<typename _Res>
+        struct _Setter<_Res, _Res&&>
+        {
+          typename promise<_Res>::_Ptr_type operator()()
+          {
+            _State_base::_S_check(_M_promise->_M_future);
+            _M_promise->_M_storage->_M_set(std::move(_M_arg));
+            return std::move(_M_promise->_M_storage);
+          }
+          promise<_Res>*    _M_promise;
+          _Res&             _M_arg;
+        };
+
+      struct __exception_ptr_tag { };
+
+      // set exceptions
+      template<typename _Res>
+        struct _Setter<_Res, __exception_ptr_tag>
+        {
+          typename promise<_Res>::_Ptr_type operator()()
+          {
+            _State_base::_S_check(_M_promise->_M_future);
+            _M_promise->_M_storage->_M_error = _M_ex;
+            return std::move(_M_promise->_M_storage);
+          }
+
+          promise<_Res>*   _M_promise;
+          exception_ptr&    _M_ex;
+        };
+
+      template<typename _Res, typename _Arg>
+        static _Setter<_Res, _Arg&&>
+        __setter(promise<_Res>* __prom, _Arg&& __arg)
+        {
+          return _Setter<_Res, _Arg&&>{ __prom, __arg };
+        }
+
+      template<typename _Res>
+        static _Setter<_Res, __exception_ptr_tag>
+        __setter(exception_ptr& __ex, promise<_Res>* __prom)
+        {
+          return _Setter<_Res, __exception_ptr_tag>{ __prom, __ex };
+        }
+
+      static _Setter<void, void>
+      __setter(promise<void>* __prom);
+
+      template<typename _Tp>
+        static bool
+        _S_check(const shared_ptr<_Tp>& __p)
+        {
+          if (!static_cast<bool>(__p))
+            __throw_future_error((int)future_errc::no_state);
+        }
+
+    private:
+      void
+      _M_do_set(function<_Ptr_type()>& __f, bool& __set)
+      {
+        _Ptr_type __res = __f();
+        {
+          lock_guard<mutex> __lock(_M_mutex);
+          _M_result.swap(__res);
+        }
+        _M_cond.notify_all();
+        __set = true;
+      }
+
+      bool _M_ready() const { return static_cast<bool>(_M_result); }
+
+      virtual void _M_run_deferred() { }
+    };
+
+    template<typename _Res>
+      class _Deferred_state;
+
+    template<typename _Res>
+      class _Async_state;
+
+    template<typename _Signature>
+      class _Task_state;
+
+    template<typename _StateT, typename _Res = typename _StateT::_Res_type>
+      struct _Task_setter;
+  };
+
+  /// Partial specialization for reference types.
+  template<typename _Res>
+    struct __future_base::_Result<_Res&> : __future_base::_Result_base
+    {
+      _Result() : _M_value_ptr() { }
+
+      void _M_set(_Res& __res) { _M_value_ptr = &__res; }
+
+      _Res& _M_get() { return *_M_value_ptr; }
+
+    private:
+      _Res* 			_M_value_ptr;
+      
+      void _M_destroy() { delete this; }
+    };
+
+  /// Explicit specialization for void.
+  template<>
+    struct __future_base::_Result<void> : __future_base::_Result_base
+    {
+    private:
+      void _M_destroy() { delete this; }
+    };
+
+
+  /// Common implementation for future and shared_future.
+  template<typename _Res>
+    class __basic_future : public __future_base
+    {
+    protected:
+      typedef shared_ptr<_State_base>		__state_type;
+      typedef __future_base::_Result<_Res>&	__result_type;
+
+    private:
+      __state_type 		_M_state;
+
+    public:
+      // Disable copying.
+      __basic_future(const __basic_future&) = delete;
+      __basic_future& operator=(const __basic_future&) = delete;
+
+      bool 
+      valid() const { return static_cast<bool>(_M_state); }
+
+      void 
+      wait() const
+      {
+        _State_base::_S_check(_M_state);
+        _M_state->wait();
+      }
+
+      template<typename _Rep, typename _Period>
+        bool
+        wait_for(const chrono::duration<_Rep, _Period>& __rel) const
+        {
+          _State_base::_S_check(_M_state);
+          return _M_state->wait_for(__rel);
+        }
+
+      template<typename _Clock, typename _Duration>
+        bool
+        wait_until(const chrono::time_point<_Clock, _Duration>& __abs) const
+        {
+          _State_base::_S_check(_M_state);
+          return _M_state->wait_until(__abs);
+        }
+
+    protected:
+      /// Wait for the state to be ready and rethrow any stored exception
+      __result_type
+      _M_get_result()
+      {
+        _State_base::_S_check(_M_state);
+        _Result_base& __res = _M_state->wait();
+        if (!(__res._M_error == 0))
+          rethrow_exception(__res._M_error);
+        return static_cast<__result_type>(__res);
+      }
+
+      void _M_swap(__basic_future& __that)
+      {
+        _M_state.swap(__that._M_state);
+      }
+
+      // Construction of a future by promise::get_future()
+      explicit
+      __basic_future(const __state_type& __state) : _M_state(__state)
+      {
+        _State_base::_S_check(_M_state);
+        _M_state->_M_set_retrieved_flag();
+      }
+
+      // Copy construction from a shared_future
+      explicit
+      __basic_future(const shared_future<_Res>&);
+
+      // Move construction from a shared_future
+      explicit
+      __basic_future(shared_future<_Res>&&);
+
+      // Move construction from a future
+      explicit
+      __basic_future(future<_Res>&&);
+
+      constexpr __basic_future() : _M_state() { }
+
+      struct _Reset
+      {
+        explicit _Reset(__basic_future& __fut) : _M_fut(__fut) { }
+        ~_Reset() { _M_fut._M_state.reset(); }
+        __basic_future& _M_fut;
+      };
+    };
+
+
+  /// Primary template for future.
+  template<typename _Res>
+    class future : public __basic_future<_Res>
+    {
+      friend class promise<_Res>;
+      template<typename> friend class packaged_task;
+      template<typename _Fn, typename... _Args>
+        friend future<typename result_of<_Fn(_Args...)>::type>
+        async(launch, _Fn&&, _Args&&...);
+
+      typedef __basic_future<_Res> _Base_type;
+      typedef typename _Base_type::__state_type __state_type;
+
+      explicit
+      future(const __state_type& __state) : _Base_type(__state) { }
+
+    public:
+      constexpr future() : _Base_type() { }
+
+      /// Move constructor
+      future(future&& __uf) : _Base_type(std::move(__uf)) { }
+
+      // Disable copying
+      future(const future&) = delete;
+      future& operator=(const future&) = delete;
+
+      future& operator=(future&& __fut)
+      {
+        future(std::move(__fut))._M_swap(*this);
+        return *this;
+      }
+
+      /// Retrieving the value
+      _Res
+      get()
+      {
+        typename _Base_type::_Reset __reset(*this);
+        return std::move(this->_M_get_result()._M_value());
+      }
+    };
+ 
+  /// Partial specialization for future<R&>
+  template<typename _Res>
+    class future<_Res&> : public __basic_future<_Res&>
+    {
+      friend class promise<_Res&>;
+      template<typename> friend class packaged_task;
+      template<typename _Fn, typename... _Args>
+        friend future<typename result_of<_Fn(_Args...)>::type>
+        async(launch, _Fn&&, _Args&&...);
+
+      typedef __basic_future<_Res&> _Base_type;
+      typedef typename _Base_type::__state_type __state_type;
+
+      explicit
+      future(const __state_type& __state) : _Base_type(__state) { }
+
+    public:
+      constexpr future() : _Base_type() { }
+
+      /// Move constructor
+      future(future&& __uf) : _Base_type(std::move(__uf)) { }
+
+      // Disable copying
+      future(const future&) = delete;
+      future& operator=(const future&) = delete;
+
+      future& operator=(future&& __fut)
+      {
+        future(std::move(__fut))._M_swap(*this);
+        return *this;
+      }
+
+      /// Retrieving the value
+      _Res& 
+      get()
+      {
+        typename _Base_type::_Reset __reset(*this);
+        return this->_M_get_result()._M_get();
+      }
+    };
+
+  /// Explicit specialization for future<void>
+  template<>
+    class future<void> : public __basic_future<void>
+    {
+      friend class promise<void>;
+      template<typename> friend class packaged_task;
+      template<typename _Fn, typename... _Args>
+        friend future<typename result_of<_Fn(_Args...)>::type>
+        async(launch, _Fn&&, _Args&&...);
+
+      typedef __basic_future<void> _Base_type;
+      typedef typename _Base_type::__state_type __state_type;
+
+      explicit
+      future(const __state_type& __state) : _Base_type(__state) { }
+
+    public:
+      constexpr future() : _Base_type() { }
+
+      /// Move constructor
+      future(future&& __uf) : _Base_type(std::move(__uf)) { }
+
+      // Disable copying
+      future(const future&) = delete;
+      future& operator=(const future&) = delete;
+
+      future& operator=(future&& __fut)
+      {
+        future(std::move(__fut))._M_swap(*this);
+        return *this;
+      }
+
+      /// Retrieving the value
+      void 
+      get()
+      {
+        typename _Base_type::_Reset __reset(*this);
+        this->_M_get_result();
+      }
+    };
+
+
+  /// Primary template for shared_future.
+  template<typename _Res>
+    class shared_future : public __basic_future<_Res>
+    {
+      typedef __basic_future<_Res> _Base_type;
+
+    public:
+      constexpr shared_future() : _Base_type() { }
+
+      /// Copy constructor
+      shared_future(const shared_future& __sf) : _Base_type(__sf) { }
+
+      /// Construct from a future rvalue
+      shared_future(future<_Res>&& __uf)
+      : _Base_type(std::move(__uf))
+      { }
+
+      /// Construct from a shared_future rvalue
+      shared_future(shared_future&& __sf)
+      : _Base_type(std::move(__sf))
+      { }
+
+      shared_future& operator=(const shared_future& __sf)
+      {
+        shared_future(__sf)._M_swap(*this);
+        return *this;
+      }
+
+      shared_future& operator=(shared_future&& __sf)
+      {
+        shared_future(std::move(__sf))._M_swap(*this);
+        return *this;
+      }
+
+      /// Retrieving the value
+      const _Res&
+      get()
+      {
+	typename _Base_type::__result_type __r = this->_M_get_result();
+	_Res& __rs(__r._M_value());
+	return __rs;
+      }
+    };
+ 
+  /// Partial specialization for shared_future<R&>
+  template<typename _Res>
+    class shared_future<_Res&> : public __basic_future<_Res&>
+    {
+      typedef __basic_future<_Res&>           _Base_type;
+
+    public:
+      constexpr shared_future() : _Base_type() { }
+
+      /// Copy constructor
+      shared_future(const shared_future& __sf) : _Base_type(__sf) { }
+
+      /// Construct from a future rvalue
+      shared_future(future<_Res&>&& __uf)
+      : _Base_type(std::move(__uf))
+      { }
+
+      /// Construct from a shared_future rvalue
+      shared_future(shared_future&& __sf)
+      : _Base_type(std::move(__sf))
+      { }
+
+      shared_future& operator=(const shared_future& __sf)
+      {
+        shared_future(__sf)._M_swap(*this);
+        return *this;
+      }
+
+      shared_future& operator=(shared_future&& __sf)
+      {
+        shared_future(std::move(__sf))._M_swap(*this);
+        return *this;
+      }
+
+      /// Retrieving the value
+      _Res& 
+      get() { return this->_M_get_result()._M_get(); }
+    };
+
+  /// Explicit specialization for shared_future<void>
+  template<>
+    class shared_future<void> : public __basic_future<void>
+    {
+      typedef __basic_future<void> _Base_type;
+
+    public:
+      constexpr shared_future() : _Base_type() { }
+
+      /// Copy constructor
+      shared_future(const shared_future& __sf) : _Base_type(__sf) { }
+
+      /// Construct from a future rvalue
+      shared_future(future<void>&& __uf)
+      : _Base_type(std::move(__uf))
+      { }
+
+      /// Construct from a shared_future rvalue
+      shared_future(shared_future&& __sf)
+      : _Base_type(std::move(__sf))
+      { }
+
+      shared_future& operator=(const shared_future& __sf)
+      {
+        shared_future(__sf)._M_swap(*this);
+        return *this;
+      }
+
+      shared_future& operator=(shared_future&& __sf)
+      {
+        shared_future(std::move(__sf))._M_swap(*this);
+        return *this;
+      }
+
+      // Retrieving the value
+      void 
+      get() { this->_M_get_result(); }
+    };
+
+  // Now we can define the protected __basic_future constructors.
+  template<typename _Res>
+    inline __basic_future<_Res>::
+    __basic_future(const shared_future<_Res>& __sf)
+    : _M_state(__sf._M_state)
+    { }
+
+  template<typename _Res>
+    inline __basic_future<_Res>::
+    __basic_future(shared_future<_Res>&& __sf)
+    : _M_state(std::move(__sf._M_state))
+    { }
+
+  template<typename _Res>
+    inline __basic_future<_Res>::
+    __basic_future(future<_Res>&& __uf)
+    : _M_state(std::move(__uf._M_state))
+    { }
+
+
+  /// Primary template for promise
+  template<typename _Res>
+    class promise
+    {
+      typedef __future_base::_State_base 			_State;
+      typedef __future_base::_Result<_Res>			_Res_type;
+      typedef typename __future_base::_Ptr<_Res_type>::type	_Ptr_type;
+      template<typename, typename> friend class _State::_Setter;
+      
+      shared_ptr<_State>                        _M_future;
+      _Ptr_type                                 _M_storage;
+
+    public:
+      promise()
+      : _M_future(std::make_shared<_State>()),
+	_M_storage(new _Res_type())
+      { }
+
+      promise(promise&& __rhs)
+      : _M_future(std::move(__rhs._M_future)),
+	_M_storage(std::move(__rhs._M_storage))
+      { }
+
+      template<typename _Allocator>
+        promise(allocator_arg_t, const _Allocator& __a)
+        : _M_future(std::allocate_shared<_State>(__a)),
+	  _M_storage(__future_base::_S_allocate_result<_Res>(__a))
+        { }
+
+      promise(const promise&) = delete;
+
+      ~promise()
+      {
+        if (static_cast<bool>(_M_future) && !_M_future.unique())
+          _M_future->_M_break_promise(std::move(_M_storage));
+      }
+
+      // Assignment
+      promise&
+      operator=(promise&& __rhs)
+      {
+        promise(std::move(__rhs)).swap(*this);
+        return *this;
+      }
+
+      promise& operator=(const promise&) = delete;
+
+      void
+      swap(promise& __rhs)
+      {
+        _M_future.swap(__rhs._M_future);
+        _M_storage.swap(__rhs._M_storage);
+      }
+
+      // Retrieving the result
+      future<_Res>
+      get_future()
+      { return future<_Res>(_M_future); }
+
+      // Setting the result
+      void
+      set_value(const _Res& __r)
+      {
+        auto __setter = _State::__setter(this, __r);
+        _M_future->_M_set_result(std::move(__setter));
+      }
+
+      void
+      set_value(_Res&& __r)
+      {
+        auto __setter = _State::__setter(this, std::move(__r));
+        _M_future->_M_set_result(std::move(__setter));
+      }
+
+      void
+      set_exception(exception_ptr __p)
+      {
+        auto __setter = _State::__setter(__p, this);
+        _M_future->_M_set_result(std::move(__setter));
+      }
+    };
+
+  template<typename _Res>
+    inline void
+    swap(promise<_Res>& __x, promise<_Res>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Res, typename _Alloc>
+    struct uses_allocator<promise<_Res>, _Alloc>
+    : public true_type { };
+
+
+  /// Partial specialization for promise<R&>
+  template<typename _Res>
+    class promise<_Res&>
+    {
+      typedef __future_base::_State_base			_State;
+      typedef __future_base::_Result<_Res&>			_Res_type;
+      typedef typename __future_base::_Ptr<_Res_type>::type 	_Ptr_type;
+      template<typename, typename> friend class _State::_Setter;
+
+      shared_ptr<_State>                        _M_future;
+      _Ptr_type                                 _M_storage;
+
+    public:
+      promise()
+      : _M_future(std::make_shared<_State>()),
+	_M_storage(new _Res_type())
+      { }
+
+      promise(promise&& __rhs)
+      : _M_future(std::move(__rhs._M_future)), 
+	_M_storage(std::move(__rhs._M_storage))
+      { }
+
+      template<typename _Allocator>
+        promise(allocator_arg_t, const _Allocator& __a)
+        : _M_future(std::allocate_shared<_State>(__a)),
+	  _M_storage(__future_base::_S_allocate_result<_Res&>(__a))
+        { }
+
+      promise(const promise&) = delete;
+
+      ~promise()
+      {
+        if (static_cast<bool>(_M_future) && !_M_future.unique())
+          _M_future->_M_break_promise(std::move(_M_storage));
+      }
+
+      // Assignment
+      promise&
+      operator=(promise&& __rhs)
+      {
+        promise(std::move(__rhs)).swap(*this);
+        return *this;
+      }
+
+      promise& operator=(const promise&) = delete;
+
+      void
+      swap(promise& __rhs)
+      {
+        _M_future.swap(__rhs._M_future);
+        _M_storage.swap(__rhs._M_storage);
+      }
+
+      // Retrieving the result
+      future<_Res&>
+      get_future()
+      { return future<_Res&>(_M_future); }
+
+      // Setting the result
+      void
+      set_value(_Res& __r)
+      {
+        auto __setter = _State::__setter(this, __r);
+        _M_future->_M_set_result(std::move(__setter));
+      }
+
+      void
+      set_exception(exception_ptr __p)
+      {
+        auto __setter = _State::__setter(__p, this);
+        _M_future->_M_set_result(std::move(__setter));
+      }
+    };
+
+  /// Explicit specialization for promise<void>
+  template<>
+    class promise<void>
+    {
+      typedef __future_base::_State_base			_State;
+      typedef __future_base::_Result<void>			_Res_type;
+      typedef typename __future_base::_Ptr<_Res_type>::type 	_Ptr_type;
+      template<typename, typename> friend class _State::_Setter;
+
+      shared_ptr<_State>                        _M_future;
+      _Ptr_type                                 _M_storage;
+
+    public:
+      promise()
+      : _M_future(std::make_shared<_State>()),
+	_M_storage(new _Res_type())
+      { }
+
+      promise(promise&& __rhs)
+      : _M_future(std::move(__rhs._M_future)),
+	_M_storage(std::move(__rhs._M_storage))
+      { }
+
+      template<typename _Allocator>
+        promise(allocator_arg_t, const _Allocator& __a)
+        : _M_future(std::allocate_shared<_State>(__a)),
+	  _M_storage(__future_base::_S_allocate_result<void>(__a))
+        { }
+
+      promise(const promise&) = delete;
+
+      ~promise()
+      {
+        if (static_cast<bool>(_M_future) && !_M_future.unique())
+          _M_future->_M_break_promise(std::move(_M_storage));
+      }
+
+      // Assignment
+      promise&
+      operator=(promise&& __rhs)
+      {
+        promise(std::move(__rhs)).swap(*this);
+        return *this;
+      }
+
+      promise& operator=(const promise&) = delete;
+
+      void
+      swap(promise& __rhs)
+      {
+        _M_future.swap(__rhs._M_future);
+        _M_storage.swap(__rhs._M_storage);
+      }
+
+      // Retrieving the result
+      future<void>
+      get_future()
+      { return future<void>(_M_future); }
+
+      // Setting the result
+      void set_value();
+
+      void
+      set_exception(exception_ptr __p)
+      {
+        auto __setter = _State::__setter(__p, this);
+        _M_future->_M_set_result(std::move(__setter));
+      }
+    };
+
+  // set void
+  template<>
+    struct __future_base::_State_base::_Setter<void, void>
+    {
+      promise<void>::_Ptr_type operator()()
+      {
+        _State_base::_S_check(_M_promise->_M_future);
+        return std::move(_M_promise->_M_storage);
+      }
+
+      promise<void>*    _M_promise;
+    };
+
+  inline __future_base::_State_base::_Setter<void, void>
+  __future_base::_State_base::__setter(promise<void>* __prom)
+  {
+    return _Setter<void, void>{ __prom };
+  }
+
+  inline void
+  promise<void>::set_value()
+  {
+    auto __setter = _State::__setter(this);
+    _M_future->_M_set_result(std::move(__setter));
+  }
+
+
+  template<typename _StateT, typename _Res>
+    struct __future_base::_Task_setter
+    {
+      typename _StateT::_Ptr_type operator()()
+      {
+        __try
+	  {
+	    _M_state->_M_result->_M_set(_M_fn());
+	  }
+	__catch(...)
+	  {
+	    _M_state->_M_result->_M_error = current_exception();
+	  }
+        return std::move(_M_state->_M_result);
+      }
+      _StateT*                  _M_state;
+      std::function<_Res()>     _M_fn;
+    };
+
+  template<typename _StateT>
+    struct __future_base::_Task_setter<_StateT, void>
+    {
+      typename _StateT::_Ptr_type operator()()
+      {
+        __try
+	  {
+	    _M_fn();
+	  }
+	__catch(...)
+	  {
+	    _M_state->_M_result->_M_error = current_exception();
+	  }
+	return std::move(_M_state->_M_result);
+      }
+      _StateT*                  _M_state;
+      std::function<void()>     _M_fn;
+    };
+
+  template<typename _Res, typename... _Args>
+    struct __future_base::_Task_state<_Res(_Args...)> 
+    : __future_base::_State_base
+    {
+      typedef _Res _Res_type;
+
+      _Task_state(std::function<_Res(_Args...)> __task)
+      : _M_result(new _Result<_Res>()), _M_task(std::move(__task))
+      { }
+
+      template<typename _Func, typename _Alloc>
+        _Task_state(_Func&& __task, const _Alloc& __a)
+        : _M_result(_S_allocate_result<_Res>(__a)),
+	  _M_task(allocator_arg, __a, std::move(__task))
+        { }
+
+      void
+      _M_run(_Args... __args)
+      {
+        // bound arguments decay so wrap lvalue references
+        auto __bound = std::bind<_Res>(std::ref(_M_task),
+            _S_maybe_wrap_ref(std::forward<_Args>(__args))...);
+        _Task_setter<_Task_state> __setter{ this, std::move(__bound) };
+        _M_set_result(std::move(__setter));
+      }
+
+      template<typename, typename> friend class _Task_setter;
+      typedef typename __future_base::_Ptr<_Result<_Res>>::type _Ptr_type;
+      _Ptr_type _M_result;
+      std::function<_Res(_Args...)> _M_task;
+
+      template<typename _Tp>
+        static reference_wrapper<_Tp>
+        _S_maybe_wrap_ref(_Tp& __t)
+        { return std::ref(__t); }
+
+      template<typename _Tp>
+        static typename enable_if<!is_lvalue_reference<_Tp>::value,
+                        _Tp>::type&&
+        _S_maybe_wrap_ref(_Tp&& __t)
+        { return std::forward<_Tp>(__t); }
+    };
+
+  /// packaged_task
+  template<typename _Res, typename... _ArgTypes>
+    class packaged_task<_Res(_ArgTypes...)>
+    {
+      typedef __future_base::_Task_state<_Res(_ArgTypes...)>  _State_type;
+      shared_ptr<_State_type>                   _M_state;
+
+    public:
+      typedef _Res result_type;
+
+      // Construction and destruction
+      packaged_task() { }
+
+      template<typename _Fn>
+        explicit
+        packaged_task(const _Fn& __fn)
+        : _M_state(std::make_shared<_State_type>(__fn))
+        { }
+
+      template<typename _Fn>
+        explicit
+        packaged_task(_Fn&& __fn)
+        : _M_state(std::make_shared<_State_type>(std::move(__fn)))
+        { }
+
+      explicit
+      packaged_task(_Res(*__fn)(_ArgTypes...))
+      : _M_state(std::make_shared<_State_type>(__fn))
+      { }
+
+      template<typename _Fn, typename _Allocator>
+        explicit
+        packaged_task(allocator_arg_t __tag, const _Allocator& __a, _Fn __fn)
+        : _M_state(std::allocate_shared<_State_type>(__a, std::move(__fn)))
+        { }
+
+      ~packaged_task()
+      {
+        if (static_cast<bool>(_M_state) && !_M_state.unique())
+          _M_state->_M_break_promise(std::move(_M_state->_M_result));
+      }
+
+      // No copy
+      packaged_task(packaged_task&) = delete;
+      packaged_task& operator=(packaged_task&) = delete;
+
+      // Move support
+      packaged_task(packaged_task&& __other)
+      { this->swap(__other); }
+
+      packaged_task& operator=(packaged_task&& __other)
+      {
+        packaged_task(std::move(__other)).swap(*this);
+        return *this;
+      }
+
+      void
+      swap(packaged_task& __other)
+      { _M_state.swap(__other._M_state); }
+
+      bool
+      valid() const
+      { return static_cast<bool>(_M_state); }
+
+      // Result retrieval
+      future<_Res>
+      get_future()
+      { return future<_Res>(_M_state); }
+
+      // Execution
+      void
+      operator()(_ArgTypes... __args)
+      {
+        __future_base::_State_base::_S_check(_M_state);
+        _M_state->_M_run(std::forward<_ArgTypes>(__args)...);
+      }
+
+      void
+      reset()
+      {
+        __future_base::_State_base::_S_check(_M_state);
+        packaged_task(std::move(_M_state->_M_task)).swap(*this);
+      }
+    };
+
+  /// swap
+  template<typename _Res, typename... _ArgTypes>
+    inline void
+    swap(packaged_task<_Res(_ArgTypes...)>& __x,
+	 packaged_task<_Res(_ArgTypes...)>& __y)
+    { __x.swap(__y); }
+
+  template<typename _Res, typename _Alloc>
+    struct uses_allocator<packaged_task<_Res>, _Alloc>
+    : public true_type { };
+
+
+  template<typename _Res>
+    class __future_base::_Deferred_state : public __future_base::_State_base
+    {
+    public:
+      typedef _Res _Res_type;
+
+      explicit
+      _Deferred_state(std::function<_Res()>&& __fn)
+      : _M_result(new _Result<_Res>()), _M_fn(std::move(__fn))
+      { }
+
+    private:
+      template<typename, typename> friend class _Task_setter;
+      typedef typename __future_base::_Ptr<_Result<_Res>>::type _Ptr_type;
+      _Ptr_type _M_result;
+      std::function<_Res()> _M_fn;
+
+      virtual void
+      _M_run_deferred()
+      {
+        _Task_setter<_Deferred_state> __setter{ this, _M_fn };
+        // safe to call multiple times so ignore failure
+        _M_set_result(std::move(__setter), true);
+      }
+    };
+
+  template<typename _Res>
+    class __future_base::_Async_state : public __future_base::_State_base
+    {
+    public:
+      typedef _Res _Res_type;
+
+      explicit 
+      _Async_state(std::function<_Res()>&& __fn)
+      : _M_result(new _Result<_Res>()), _M_fn(std::move(__fn)),
+	_M_thread(mem_fn(&_Async_state::_M_do_run), this)
+      { }
+
+      ~_Async_state() { _M_thread.join(); }
+
+    private:
+      void _M_do_run()
+      {
+        _Task_setter<_Async_state> __setter{ this, std::move(_M_fn) };
+        _M_set_result(std::move(__setter));
+      }
+
+      template<typename, typename> friend class _Task_setter;
+      typedef typename __future_base::_Ptr<_Result<_Res>>::type _Ptr_type;
+      _Ptr_type _M_result;
+      std::function<_Res()> _M_fn;
+      thread _M_thread;
+    };
+
+  /// async 
+  template<typename _Fn, typename... _Args>
+    future<typename result_of<_Fn(_Args...)>::type>
+    async(launch __policy, _Fn&& __fn, _Args&&... __args)
+    {
+      typedef typename result_of<_Fn(_Args...)>::type result_type;
+      std::shared_ptr<__future_base::_State_base> __state;
+      if (__policy == launch::async)
+	{
+	  typedef typename __future_base::_Async_state<result_type> _State;
+	  __state = std::make_shared<_State>(std::bind<result_type>(
+              std::forward<_Fn>(__fn), std::forward<_Args>(__args)...));
+	}
+      else
+	{
+	  typedef typename __future_base::_Deferred_state<result_type> _State;
+	  __state = std::make_shared<_State>(std::bind<result_type>(
+              std::forward<_Fn>(__fn), std::forward<_Args>(__args)...));
+	}
+      return future<result_type>(__state);
+    }
+
+  /// async, potential overload
+  template<typename _Fn, typename... _Args>
+    inline typename
+    __async_sfinae_helper<typename decay<_Fn>::type, _Fn, _Args...>::type
+    async(_Fn&& __fn, _Args&&... __args)
+    {
+      return async(launch::any, std::forward<_Fn>(__fn),
+		   std::forward<_Args>(__args)...);
+    }
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
+       // && _GLIBCXX_ATOMIC_BUILTINS_4
+
+  // @} group futures
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_FUTURE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iomanip b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iomanip
new file mode 100644
index 000000000..91f90e5cb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iomanip
@@ -0,0 +1,352 @@
+// Standard stream manipulators -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/iomanip
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.6.3  Standard manipulators
+//
+
+#ifndef _GLIBCXX_IOMANIP
+#define _GLIBCXX_IOMANIP 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <iosfwd>
+#include <bits/ios_base.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <locale>
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [27.6.3] standard manipulators
+  // Also see DR 183.
+
+  struct _Resetiosflags { ios_base::fmtflags _M_mask; };
+
+  /**
+   *  @brief  Manipulator for @c setf.
+   *  @param  mask  A format flags mask.
+   *
+   *  Sent to a stream object, this manipulator resets the specified flags,
+   *  via @e stream.setf(0,mask).
+  */
+  inline _Resetiosflags 
+  resetiosflags(ios_base::fmtflags __mask)
+  { return { __mask }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f)
+    { 
+      __is.setf(ios_base::fmtflags(0), __f._M_mask); 
+      return __is; 
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f)
+    { 
+      __os.setf(ios_base::fmtflags(0), __f._M_mask); 
+      return __os; 
+    }
+
+
+  struct _Setiosflags { ios_base::fmtflags _M_mask; };
+
+  /**
+   *  @brief  Manipulator for @c setf.
+   *  @param  mask  A format flags mask.
+   *
+   *  Sent to a stream object, this manipulator sets the format flags
+   *  to @a mask.
+  */
+  inline _Setiosflags 
+  setiosflags(ios_base::fmtflags __mask)
+  { return { __mask }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f)
+    { 
+      __is.setf(__f._M_mask); 
+      return __is; 
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f)
+    { 
+      __os.setf(__f._M_mask); 
+      return __os; 
+    }
+
+
+  struct _Setbase { int _M_base; };
+
+  /**
+   *  @brief  Manipulator for @c setf.
+   *  @param  base  A numeric base.
+   *
+   *  Sent to a stream object, this manipulator changes the
+   *  @c ios_base::basefield flags to @c oct, @c dec, or @c hex when @a base
+   *  is 8, 10, or 16, accordingly, and to 0 if @a base is any other value.
+  */
+  inline _Setbase 
+  setbase(int __base)
+  { return { __base }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f)
+    {
+      __is.setf(__f._M_base ==  8 ? ios_base::oct : 
+		__f._M_base == 10 ? ios_base::dec : 
+		__f._M_base == 16 ? ios_base::hex : 
+		ios_base::fmtflags(0), ios_base::basefield);
+      return __is; 
+    }
+  
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f)
+    {
+      __os.setf(__f._M_base ==  8 ? ios_base::oct : 
+		__f._M_base == 10 ? ios_base::dec : 
+		__f._M_base == 16 ? ios_base::hex : 
+		ios_base::fmtflags(0), ios_base::basefield);
+      return __os; 
+    }
+  
+
+  template<typename _CharT>
+    struct _Setfill { _CharT _M_c; };
+
+  /**
+   *  @brief  Manipulator for @c fill.
+   *  @param  c  The new fill character.
+   *
+   *  Sent to a stream object, this manipulator calls @c fill(c) for that
+   *  object.
+  */
+  template<typename _CharT>
+    inline _Setfill<_CharT>
+    setfill(_CharT __c)
+    { return { __c }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f)
+    { 
+      __is.fill(__f._M_c); 
+      return __is; 
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f)
+    { 
+      __os.fill(__f._M_c); 
+      return __os; 
+    }
+
+
+  struct _Setprecision { int _M_n; };
+
+  /**
+   *  @brief  Manipulator for @c precision.
+   *  @param  n  The new precision.
+   *
+   *  Sent to a stream object, this manipulator calls @c precision(n) for
+   *  that object.
+  */
+  inline _Setprecision 
+  setprecision(int __n)
+  { return { __n }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f)
+    { 
+      __is.precision(__f._M_n); 
+      return __is; 
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f)
+    { 
+      __os.precision(__f._M_n); 
+      return __os; 
+    }
+
+
+  struct _Setw { int _M_n; };
+
+  /**
+   *  @brief  Manipulator for @c width.
+   *  @param  n  The new width.
+   *
+   *  Sent to a stream object, this manipulator calls @c width(n) for
+   *  that object.
+  */
+  inline _Setw 
+  setw(int __n)
+  { return { __n }; }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_istream<_CharT, _Traits>& 
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f)
+    {
+      __is.width(__f._M_n);
+      return __is; 
+    }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f)
+    {
+      __os.width(__f._M_n);
+      return __os; 
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  
+  template<typename _MoneyT>
+    struct _Get_money { _MoneyT& _M_mon; bool _M_intl; };
+
+  /**
+   *  @brief  Extended manipulator for extracting money.
+   *  @param  mon  Either long double or a specialization of @c basic_string.
+   *  @param  intl A bool indicating whether international format 
+   *               is to be used.
+   *
+   *  Sent to a stream object, this manipulator extracts @a mon.
+  */
+  template<typename _MoneyT>
+    inline _Get_money<_MoneyT>
+    get_money(_MoneyT& __mon, bool __intl = false)
+    { return { __mon, __intl }; }
+
+  template<typename _CharT, typename _Traits, typename _MoneyT>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f)
+    {
+      typedef istreambuf_iterator<_CharT, _Traits> _Iter;
+      typedef money_get<_CharT, _Iter> _MoneyGet;
+      
+      ios_base::iostate __err = ios_base::goodbit;
+      const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc());
+
+      __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl,
+	       __is, __err, __f._M_mon);
+
+      if (ios_base::goodbit != __err)
+	__is.setstate(__err);
+
+      return __is; 
+    }
+
+
+  template<typename _MoneyT>
+    struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; };
+
+  /**
+   *  @brief  Extended manipulator for inserting money.
+   *  @param  mon  Either long double or a specialization of @c basic_string.
+   *  @param  intl A bool indicating whether international format 
+   *               is to be used.
+   *
+   *  Sent to a stream object, this manipulator inserts @a mon.
+  */
+  template<typename _MoneyT>
+    inline _Put_money<_MoneyT>
+    put_money(const _MoneyT& __mon, bool __intl = false)
+    { return { __mon, __intl }; }
+
+  template<typename _CharT, typename _Traits, typename _MoneyT>
+    basic_ostream<_CharT, _Traits>& 
+    operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f)
+    {
+      typedef ostreambuf_iterator<_CharT, _Traits> _Iter;
+      typedef money_put<_CharT, _Iter> _MoneyPut;
+      
+      const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc());
+      const _Iter __end = __mp.put(_Iter(__os.rdbuf()), __f._M_intl,
+				   __os, __os.fill(), __f._M_mon);
+
+      if (__end.failed())
+	__os.setstate(ios_base::badbit);
+
+      return __os; 
+    }
+
+#endif
+
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.  
+  // NB:  This syntax is a GNU extension.
+#if _GLIBCXX_EXTERN_TEMPLATE
+  extern template ostream& operator<<(ostream&, _Setfill<char>);
+  extern template ostream& operator<<(ostream&, _Setiosflags);
+  extern template ostream& operator<<(ostream&, _Resetiosflags);
+  extern template ostream& operator<<(ostream&, _Setbase);
+  extern template ostream& operator<<(ostream&, _Setprecision);
+  extern template ostream& operator<<(ostream&, _Setw);
+  extern template istream& operator>>(istream&, _Setfill<char>);
+  extern template istream& operator>>(istream&, _Setiosflags);
+  extern template istream& operator>>(istream&, _Resetiosflags);
+  extern template istream& operator>>(istream&, _Setbase);
+  extern template istream& operator>>(istream&, _Setprecision);
+  extern template istream& operator>>(istream&, _Setw);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
+  extern template wostream& operator<<(wostream&, _Setiosflags);
+  extern template wostream& operator<<(wostream&, _Resetiosflags);
+  extern template wostream& operator<<(wostream&, _Setbase);
+  extern template wostream& operator<<(wostream&, _Setprecision);
+  extern template wostream& operator<<(wostream&, _Setw);
+  extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
+  extern template wistream& operator>>(wistream&, _Setiosflags);
+  extern template wistream& operator>>(wistream&, _Resetiosflags);
+  extern template wistream& operator>>(wistream&, _Setbase);
+  extern template wistream& operator>>(wistream&, _Setprecision);
+  extern template wistream& operator>>(wistream&, _Setw);
+#endif
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOMANIP */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ios b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ios
new file mode 100644
index 000000000..9cf8368f5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ios
@@ -0,0 +1,47 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+// 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ios
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.4  Iostreams base classes
+//
+
+#ifndef _GLIBCXX_IOS
+#define _GLIBCXX_IOS 1
+
+#pragma GCC system_header
+
+#include <iosfwd>
+#include <exception> 		// For ios_base::failure
+#include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
+#include <bits/localefwd.h>	// For class locale
+#include <bits/ios_base.h>	// For ios_base declarations.
+#include <streambuf> 
+#include <bits/basic_ios.h>
+
+#endif	/* _GLIBCXX_IOS */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iosfwd b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iosfwd
new file mode 100644
index 000000000..8906a1d34
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iosfwd
@@ -0,0 +1,212 @@
+// Forwarding declarations -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/iosfwd
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.2  Forward declarations
+//
+
+#ifndef _GLIBCXX_IOSFWD
+#define _GLIBCXX_IOSFWD 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stringfwd.h> 	// For string forward declarations.
+#include <bits/postypes.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @defgroup io I/O
+   *
+   *  Nearly all of the I/O classes are parameterized on the type of
+   *  characters they read and write.  (The major exception is ios_base at
+   *  the top of the hierarchy.)  This is a change from pre-Standard
+   *  streams, which were not templates.
+   *
+   *  For ease of use and compatibility, all of the basic_* I/O-related
+   *  classes are given typedef names for both of the builtin character
+   *  widths (wide and narrow).  The typedefs are the same as the
+   *  pre-Standard names, for example:
+   *
+   *  @code
+   *     typedef basic_ifstream<char>  ifstream;
+   *  @endcode
+   *
+   *  Because properly forward-declaring these classes can be difficult, you
+   *  should not do it yourself.  Instead, include the <iosfwd>
+   *  header, which contains only declarations of all the I/O classes as
+   *  well as the typedefs.  Trying to forward-declare the typedefs
+   *  themselves (e.g., <code>class ostream;</code>) is not valid ISO C++.
+   *
+   *  For more specific declarations, see
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
+   *
+   *  @{
+  */
+  class ios_base;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ios;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_streambuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_istream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ostream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_iostream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	    typename _Alloc = allocator<_CharT> >
+    class basic_stringbuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_istringstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_ostringstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_stringstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_filebuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ifstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ofstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_fstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class istreambuf_iterator;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class ostreambuf_iterator;
+
+
+  /// Base class for @c char streams.
+  typedef basic_ios<char> 		ios; 
+
+  /// Base class for @c char buffers.
+  typedef basic_streambuf<char> 	streambuf;
+
+  /// Base class for @c char input streams.
+  typedef basic_istream<char> 		istream;
+
+  /// Base class for @c char output streams.
+  typedef basic_ostream<char> 		ostream;
+
+  /// Base class for @c char mixed input and output streams.
+  typedef basic_iostream<char> 		iostream;
+
+  /// Class for @c char memory buffers.
+  typedef basic_stringbuf<char> 	stringbuf;
+
+  /// Class for @c char input memory streams.
+  typedef basic_istringstream<char> 	istringstream;
+
+  /// Class for @c char output memory streams.
+  typedef basic_ostringstream<char> 	ostringstream;
+
+  /// Class for @c char mixed input and output memory streams.
+  typedef basic_stringstream<char> 	stringstream;
+
+  /// Class for @c char file buffers.
+  typedef basic_filebuf<char> 		filebuf;
+
+  /// Class for @c char input file streams.
+  typedef basic_ifstream<char> 		ifstream;
+
+  /// Class for @c char output file streams.
+  typedef basic_ofstream<char> 		ofstream;
+
+  /// Class for @c char mixed input and output file streams.
+  typedef basic_fstream<char> 		fstream;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// Base class for @c wchar_t streams.
+  typedef basic_ios<wchar_t> 		wios;
+
+  /// Base class for @c wchar_t buffers.
+  typedef basic_streambuf<wchar_t> 	wstreambuf;
+
+  /// Base class for @c wchar_t input streams.
+  typedef basic_istream<wchar_t> 	wistream;
+
+  /// Base class for @c wchar_t output streams.
+  typedef basic_ostream<wchar_t> 	wostream;
+
+  /// Base class for @c wchar_t mixed input and output streams.
+  typedef basic_iostream<wchar_t> 	wiostream;
+
+  /// Class for @c wchar_t memory buffers.
+  typedef basic_stringbuf<wchar_t> 	wstringbuf;
+
+  /// Class for @c wchar_t input memory streams.
+  typedef basic_istringstream<wchar_t> 	wistringstream;
+
+  /// Class for @c wchar_t output memory streams.
+  typedef basic_ostringstream<wchar_t> 	wostringstream;
+
+  /// Class for @c wchar_t mixed input and output memory streams.
+  typedef basic_stringstream<wchar_t> 	wstringstream;
+
+  /// Class for @c wchar_t file buffers.
+  typedef basic_filebuf<wchar_t> 	wfilebuf;
+
+  /// Class for @c wchar_t input file streams.
+  typedef basic_ifstream<wchar_t> 	wifstream;
+
+  /// Class for @c wchar_t output file streams.
+  typedef basic_ofstream<wchar_t> 	wofstream;
+
+  /// Class for @c wchar_t mixed input and output file streams.
+  typedef basic_fstream<wchar_t> 	wfstream;
+#endif
+  /** @}  */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOSFWD */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iostream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iostream
new file mode 100644
index 000000000..7c71ba493
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iostream
@@ -0,0 +1,80 @@
+// Standard iostream objects -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2005, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/iostream
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.3  Standard iostream objects
+//
+
+#ifndef _GLIBCXX_IOSTREAM
+#define _GLIBCXX_IOSTREAM 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <ostream>
+#include <istream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @name Standard Stream Objects
+   *
+   *  The <iostream> header declares the eight <em>standard stream
+   *  objects</em>.  For other declarations, see
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
+   *  and the @link iosfwd I/O forward declarations @endlink
+   *
+   *  They are required by default to cooperate with the global C
+   *  library's @c FILE streams, and to be available during program
+   *  startup and termination. For more information, see the HOWTO
+   *  linked to above.
+  */
+  //@{
+  extern istream cin;		/// Linked to standard input
+  extern ostream cout;		/// Linked to standard output
+  extern ostream cerr;		/// Linked to standard error (unbuffered)
+  extern ostream clog;		/// Linked to standard error (buffered)
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern wistream wcin;		/// Linked to standard input
+  extern wostream wcout;	/// Linked to standard output
+  extern wostream wcerr;	/// Linked to standard error (unbuffered)
+  extern wostream wclog;	/// Linked to standard error (buffered)
+#endif
+  //@}
+
+  // For construction of filebuffers for cout, cin, cerr, clog et. al.
+  static ios_base::Init __ioinit;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOSTREAM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/istream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/istream
new file mode 100644
index 000000000..fb393921f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/istream
@@ -0,0 +1,861 @@
+// Input streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.6.1  Input streams
+//
+
+/** @file include/istream
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_ISTREAM
+#define _GLIBCXX_ISTREAM 1
+
+#pragma GCC system_header
+
+#include <ios>
+#include <ostream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [27.6.1.1] Template class basic_istream
+  /**
+   *  @brief  Controlling input.
+   *  @ingroup io
+   *
+   *  This is the base class for all input streams.  It provides text
+   *  formatting of all builtin types, and communicates with any class
+   *  derived from basic_streambuf to do the actual input.
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_istream : virtual public basic_ios<_CharT, _Traits>
+    {
+    public:
+      // Types (inherited from basic_ios (27.4.4)):
+      typedef _CharT                     		char_type;
+      typedef typename _Traits::int_type 		int_type;
+      typedef typename _Traits::pos_type 		pos_type;
+      typedef typename _Traits::off_type 		off_type;
+      typedef _Traits                    		traits_type;
+      
+      // Non-standard Types:
+      typedef basic_streambuf<_CharT, _Traits> 		__streambuf_type;
+      typedef basic_ios<_CharT, _Traits>		__ios_type;
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >        
+ 							__num_get_type;
+      typedef ctype<_CharT>           			__ctype_type;
+
+    protected:
+      // Data Members:
+      /**
+       *  The number of characters extracted in the previous unformatted
+       *  function; see gcount().
+      */
+      streamsize 		_M_gcount;
+
+    public:
+      // [27.6.1.1.1] constructor/destructor
+      /**
+       *  @brief  Base constructor.
+       *
+       *  This ctor is almost never called by the user directly, rather from
+       *  derived classes' initialization lists, which pass a pointer to
+       *  their own stream buffer.
+      */
+      explicit
+      basic_istream(__streambuf_type* __sb)
+      : _M_gcount(streamsize(0))
+      { this->init(__sb); }
+
+      /**
+       *  @brief  Base destructor.
+       *
+       *  This does very little apart from providing a virtual base dtor.
+      */
+      virtual 
+      ~basic_istream() 
+      { _M_gcount = streamsize(0); }
+
+      // [27.6.1.1.2] prefix/suffix
+      class sentry;
+      friend class sentry;
+
+      // [27.6.1.2] formatted input
+      // [27.6.1.2.3] basic_istream::operator>>
+      //@{
+      /**
+       *  @brief  Interface for manipulators.
+       *
+       *  Manipulators such as @c std::ws and @c std::dec use these
+       *  functions in constructs like 
+       *  <code>std::cin >> std::ws</code>. 
+       *  For more information, see the iomanip header.
+      */
+      __istream_type&
+      operator>>(__istream_type& (*__pf)(__istream_type&))
+      { return __pf(*this); }
+
+      __istream_type&
+      operator>>(__ios_type& (*__pf)(__ios_type&))
+      { 
+	__pf(*this);
+	return *this;
+      }
+
+      __istream_type&
+      operator>>(ios_base& (*__pf)(ios_base&))
+      {
+	__pf(*this);
+	return *this;
+      }
+      //@}
+      
+      // [27.6.1.2.2] arithmetic extractors
+      /**
+       *  @name Arithmetic Extractors
+       *
+       *  All the @c operator>> functions (aka <em>formatted input
+       *  functions</em>) have some common behavior.  Each starts by
+       *  constructing a temporary object of type std::basic_istream::sentry
+       *  with the second argument (noskipws) set to false.  This has several
+       *  effects, concluding with the setting of a status flag; see the
+       *  sentry documentation for more.
+       *
+       *  If the sentry status is good, the function tries to extract
+       *  whatever data is appropriate for the type of the argument.
+       *
+       *  If an exception is thrown during extraction, ios_base::badbit
+       *  will be turned on in the stream's error state without causing an
+       *  ios_base::failure to be thrown.  The original exception will then
+       *  be rethrown.
+      */
+      //@{
+      /**
+       *  @brief  Basic arithmetic extractors
+       *  @param  A variable of builtin type.
+       *  @return  @c *this if successful
+       *
+       *  These functions use the stream's current locale (specifically, the
+       *  @c num_get facet) to parse the input data.
+      */
+      __istream_type& 
+      operator>>(bool& __n)
+      { return _M_extract(__n); }
+      
+      __istream_type& 
+      operator>>(short& __n);
+      
+      __istream_type& 
+      operator>>(unsigned short& __n)
+      { return _M_extract(__n); }
+
+      __istream_type& 
+      operator>>(int& __n);
+    
+      __istream_type& 
+      operator>>(unsigned int& __n)
+      { return _M_extract(__n); }
+
+      __istream_type& 
+      operator>>(long& __n)
+      { return _M_extract(__n); }
+      
+      __istream_type& 
+      operator>>(unsigned long& __n)
+      { return _M_extract(__n); }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      __istream_type& 
+      operator>>(long long& __n)
+      { return _M_extract(__n); }
+
+      __istream_type& 
+      operator>>(unsigned long long& __n)
+      { return _M_extract(__n); }
+#endif
+
+      __istream_type& 
+      operator>>(float& __f)
+      { return _M_extract(__f); }
+
+      __istream_type& 
+      operator>>(double& __f)
+      { return _M_extract(__f); }
+
+      __istream_type& 
+      operator>>(long double& __f)
+      { return _M_extract(__f); }
+
+      __istream_type& 
+      operator>>(void*& __p)
+      { return _M_extract(__p); }
+
+      /**
+       *  @brief  Extracting into another streambuf.
+       *  @param  sb  A pointer to a streambuf
+       *
+       *  This function behaves like one of the basic arithmetic extractors,
+       *  in that it also constructs a sentry object and has the same error
+       *  handling behavior.
+       *
+       *  If @a sb is NULL, the stream will set failbit in its error state.
+       *
+       *  Characters are extracted from this stream and inserted into the
+       *  @a sb streambuf until one of the following occurs:
+       *
+       *  - the input stream reaches end-of-file,
+       *  - insertion into the output buffer fails (in this case, the
+       *    character that would have been inserted is not extracted), or
+       *  - an exception occurs (and in this case is caught)
+       *
+       *  If the function inserts no characters, failbit is set.
+      */
+      __istream_type& 
+      operator>>(__streambuf_type* __sb);
+      //@}
+      
+      // [27.6.1.3] unformatted input
+      /**
+       *  @brief  Character counting
+       *  @return  The number of characters extracted by the previous
+       *           unformatted input function dispatched for this stream.
+      */
+      streamsize 
+      gcount() const 
+      { return _M_gcount; }
+      
+      /**
+       *  @name Unformatted Input Functions
+       *
+       *  All the unformatted input functions have some common behavior.
+       *  Each starts by constructing a temporary object of type
+       *  std::basic_istream::sentry with the second argument (noskipws)
+       *  set to true.  This has several effects, concluding with the
+       *  setting of a status flag; see the sentry documentation for more.
+       *
+       *  If the sentry status is good, the function tries to extract
+       *  whatever data is appropriate for the type of the argument.
+       *
+       *  The number of characters extracted is stored for later retrieval
+       *  by gcount().
+       *
+       *  If an exception is thrown during extraction, ios_base::badbit
+       *  will be turned on in the stream's error state without causing an
+       *  ios_base::failure to be thrown.  The original exception will then
+       *  be rethrown.
+      */
+      //@{
+      /**
+       *  @brief  Simple extraction.
+       *  @return  A character, or eof().
+       *
+       *  Tries to extract a character.  If none are available, sets failbit
+       *  and returns traits::eof().
+      */
+      int_type 
+      get();
+
+      /**
+       *  @brief  Simple extraction.
+       *  @param  c  The character in which to store data.
+       *  @return  *this
+       *
+       *  Tries to extract a character and store it in @a c.  If none are
+       *  available, sets failbit and returns traits::eof().
+       *
+       *  @note  This function is not overloaded on signed char and
+       *         unsigned char.
+      */
+      __istream_type& 
+      get(char_type& __c);
+
+      /**
+       *  @brief  Simple multiple-character extraction.
+       *  @param  s  Pointer to an array.
+       *  @param  n  Maximum number of characters to store in @a s.
+       *  @param  delim  A "stop" character.
+       *  @return  *this
+       *
+       *  Characters are extracted and stored into @a s until one of the
+       *  following happens:
+       *
+       *  - @c n-1 characters are stored
+       *  - the input sequence reaches EOF
+       *  - the next character equals @a delim, in which case the character
+       *    is not extracted
+       *
+       * If no characters are stored, failbit is set in the stream's error
+       * state.
+       *
+       * In any case, a null character is stored into the next location in
+       * the array.
+       *
+       *  @note  This function is not overloaded on signed char and
+       *         unsigned char.
+      */
+      __istream_type& 
+      get(char_type* __s, streamsize __n, char_type __delim);
+
+      /**
+       *  @brief  Simple multiple-character extraction.
+       *  @param  s  Pointer to an array.
+       *  @param  n  Maximum number of characters to store in @a s.
+       *  @return  *this
+       *
+       *  Returns @c get(s,n,widen('\\n')).
+      */
+      __istream_type& 
+      get(char_type* __s, streamsize __n)
+      { return this->get(__s, __n, this->widen('\n')); }
+
+      /**
+       *  @brief  Extraction into another streambuf.
+       *  @param  sb  A streambuf in which to store data.
+       *  @param  delim  A "stop" character.
+       *  @return  *this
+       *
+       *  Characters are extracted and inserted into @a sb until one of the
+       *  following happens:
+       *
+       *  - the input sequence reaches EOF
+       *  - insertion into the output buffer fails (in this case, the
+       *    character that would have been inserted is not extracted)
+       *  - the next character equals @a delim (in this case, the character
+       *    is not extracted)
+       *  - an exception occurs (and in this case is caught)
+       *
+       * If no characters are stored, failbit is set in the stream's error
+       * state.
+      */
+      __istream_type&
+      get(__streambuf_type& __sb, char_type __delim);
+
+      /**
+       *  @brief  Extraction into another streambuf.
+       *  @param  sb  A streambuf in which to store data.
+       *  @return  *this
+       *
+       *  Returns @c get(sb,widen('\\n')).
+      */
+      __istream_type&
+      get(__streambuf_type& __sb)
+      { return this->get(__sb, this->widen('\n')); }
+
+      /**
+       *  @brief  String extraction.
+       *  @param  s  A character array in which to store the data.
+       *  @param  n  Maximum number of characters to extract.
+       *  @param  delim  A "stop" character.
+       *  @return  *this
+       *
+       *  Extracts and stores characters into @a s until one of the
+       *  following happens.  Note that these criteria are required to be
+       *  tested in the order listed here, to allow an input line to exactly
+       *  fill the @a s array without setting failbit.
+       *
+       *  -# the input sequence reaches end-of-file, in which case eofbit
+       *     is set in the stream error state
+       *  -# the next character equals @c delim, in which case the character
+       *     is extracted (and therefore counted in @c gcount()) but not stored
+       *  -# @c n-1 characters are stored, in which case failbit is set
+       *     in the stream error state
+       *
+       *  If no characters are extracted, failbit is set.  (An empty line of
+       *  input should therefore not cause failbit to be set.)
+       *
+       *  In any case, a null character is stored in the next location in
+       *  the array.
+      */
+      __istream_type& 
+      getline(char_type* __s, streamsize __n, char_type __delim);
+
+      /**
+       *  @brief  String extraction.
+       *  @param  s  A character array in which to store the data.
+       *  @param  n  Maximum number of characters to extract.
+       *  @return  *this
+       *
+       *  Returns @c getline(s,n,widen('\\n')).
+      */
+      __istream_type& 
+      getline(char_type* __s, streamsize __n)
+      { return this->getline(__s, __n, this->widen('\n')); }
+
+      /**
+       *  @brief  Discarding characters
+       *  @param  n  Number of characters to discard.
+       *  @param  delim  A "stop" character.
+       *  @return  *this
+       *
+       *  Extracts characters and throws them away until one of the
+       *  following happens:
+       *  - if @a n @c != @c std::numeric_limits<int>::max(), @a n
+       *    characters are extracted
+       *  - the input sequence reaches end-of-file
+       *  - the next character equals @a delim (in this case, the character
+       *    is extracted); note that this condition will never occur if
+       *    @a delim equals @c traits::eof().
+       *
+       *  NB: Provide three overloads, instead of the single function
+       *  (with defaults) mandated by the Standard: this leads to a
+       *  better performing implementation, while still conforming to
+       *  the Standard.
+      */
+      __istream_type& 
+      ignore();
+
+      __istream_type& 
+      ignore(streamsize __n);
+
+      __istream_type& 
+      ignore(streamsize __n, int_type __delim);
+      
+      /**
+       *  @brief  Looking ahead in the stream
+       *  @return  The next character, or eof().
+       *
+       *  If, after constructing the sentry object, @c good() is false,
+       *  returns @c traits::eof().  Otherwise reads but does not extract
+       *  the next input character.
+      */
+      int_type 
+      peek();
+      
+      /**
+       *  @brief  Extraction without delimiters.
+       *  @param  s  A character array.
+       *  @param  n  Maximum number of characters to store.
+       *  @return  *this
+       *
+       *  If the stream state is @c good(), extracts characters and stores
+       *  them into @a s until one of the following happens:
+       *  - @a n characters are stored
+       *  - the input sequence reaches end-of-file, in which case the error
+       *    state is set to @c failbit|eofbit.
+       *
+       *  @note  This function is not overloaded on signed char and
+       *         unsigned char.
+      */
+      __istream_type& 
+      read(char_type* __s, streamsize __n);
+
+      /**
+       *  @brief  Extraction until the buffer is exhausted, but no more.
+       *  @param  s  A character array.
+       *  @param  n  Maximum number of characters to store.
+       *  @return  The number of characters extracted.
+       *
+       *  Extracts characters and stores them into @a s depending on the
+       *  number of characters remaining in the streambuf's buffer,
+       *  @c rdbuf()->in_avail(), called @c A here:
+       *  - if @c A @c == @c -1, sets eofbit and extracts no characters
+       *  - if @c A @c == @c 0, extracts no characters
+       *  - if @c A @c > @c 0, extracts @c min(A,n)
+       *
+       *  The goal is to empty the current buffer, and to not request any
+       *  more from the external input sequence controlled by the streambuf.
+      */
+      streamsize 
+      readsome(char_type* __s, streamsize __n);
+      
+      /**
+       *  @brief  Unextracting a single character.
+       *  @param  c  The character to push back into the input stream.
+       *  @return  *this
+       *
+       *  If @c rdbuf() is not null, calls @c rdbuf()->sputbackc(c).
+       *
+       *  If @c rdbuf() is null or if @c sputbackc() fails, sets badbit in
+       *  the error state.
+       *
+       *  @note  This function first clears eofbit.  Since no characters
+       *         are extracted, the next call to @c gcount() will return 0,
+       *         as required by DR 60.
+      */
+      __istream_type& 
+      putback(char_type __c);
+
+      /**
+       *  @brief  Unextracting the previous character.
+       *  @return  *this
+       *
+       *  If @c rdbuf() is not null, calls @c rdbuf()->sungetc(c).
+       *
+       *  If @c rdbuf() is null or if @c sungetc() fails, sets badbit in
+       *  the error state.
+       *
+       *  @note  This function first clears eofbit.  Since no characters
+       *         are extracted, the next call to @c gcount() will return 0,
+       *         as required by DR 60.
+      */
+      __istream_type& 
+      unget();
+
+      /**
+       *  @brief  Synchronizing the stream buffer.
+       *  @return  0 on success, -1 on failure
+       *
+       *  If @c rdbuf() is a null pointer, returns -1.
+       *
+       *  Otherwise, calls @c rdbuf()->pubsync(), and if that returns -1,
+       *  sets badbit and returns -1.
+       *
+       *  Otherwise, returns 0.
+       *
+       *  @note  This function does not count the number of characters
+       *         extracted, if any, and therefore does not affect the next
+       *         call to @c gcount().
+      */
+      int 
+      sync();
+
+      /**
+       *  @brief  Getting the current read position.
+       *  @return  A file position object.
+       *
+       *  If @c fail() is not false, returns @c pos_type(-1) to indicate
+       *  failure.  Otherwise returns @c rdbuf()->pubseekoff(0,cur,in).
+       *
+       *  @note  This function does not count the number of characters
+       *         extracted, if any, and therefore does not affect the next
+       *         call to @c gcount().  At variance with putback, unget and
+       *         seekg, eofbit is not cleared first.
+      */
+      pos_type
+      tellg();
+
+      /**
+       *  @brief  Changing the current read position.
+       *  @param  pos  A file position object.
+       *  @return  *this
+       *
+       *  If @c fail() is not true, calls @c rdbuf()->pubseekpos(pos).  If
+       *  that function fails, sets failbit.
+       *
+       *  @note  This function first clears eofbit.  It does not count the
+       *         number of characters extracted, if any, and therefore does
+       *         not affect the next call to @c gcount().
+      */
+      __istream_type&
+      seekg(pos_type);
+
+      /**
+       *  @brief  Changing the current read position.
+       *  @param  off  A file offset object.
+       *  @param  dir  The direction in which to seek.
+       *  @return  *this
+       *
+       *  If @c fail() is not true, calls @c rdbuf()->pubseekoff(off,dir).
+       *  If that function fails, sets failbit.
+       *
+       *  @note  This function first clears eofbit.  It does not count the
+       *         number of characters extracted, if any, and therefore does
+       *         not affect the next call to @c gcount().
+      */
+      __istream_type& 
+      seekg(off_type, ios_base::seekdir);
+      //@}
+
+    protected:
+      basic_istream()
+      : _M_gcount(streamsize(0))
+      { this->init(0); }
+
+      template<typename _ValueT>
+        __istream_type&
+        _M_extract(_ValueT& __v);
+    };
+
+  // Explicit specialization declarations, defined in src/istream.cc.
+  template<> 
+    basic_istream<char>& 
+    basic_istream<char>::
+    getline(char_type* __s, streamsize __n, char_type __delim);
+  
+  template<>
+    basic_istream<char>&
+    basic_istream<char>::
+    ignore(streamsize __n);
+  
+  template<>
+    basic_istream<char>&
+    basic_istream<char>::
+    ignore(streamsize __n, int_type __delim);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    basic_istream<wchar_t>& 
+    basic_istream<wchar_t>::
+    getline(char_type* __s, streamsize __n, char_type __delim);
+
+  template<>
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::
+    ignore(streamsize __n);
+  
+  template<>
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::
+    ignore(streamsize __n, int_type __delim);
+#endif
+
+  /**
+   *  @brief  Performs setup work for input streams.
+   *
+   *  Objects of this class are created before all of the standard
+   *  extractors are run.  It is responsible for <em>exception-safe
+   *  prefix and suffix operations,</em> although only prefix actions
+   *  are currently required by the standard.
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_istream<_CharT, _Traits>::sentry
+    {
+      // Data Members.
+      bool _M_ok;
+
+    public:
+      /// Easy access to dependant types.
+      typedef _Traits 					traits_type;
+      typedef basic_streambuf<_CharT, _Traits> 		__streambuf_type;
+      typedef basic_istream<_CharT, _Traits> 		__istream_type;
+      typedef typename __istream_type::__ctype_type 	__ctype_type;
+      typedef typename _Traits::int_type		__int_type;
+
+      /**
+       *  @brief  The constructor performs all the work.
+       *  @param  is  The input stream to guard.
+       *  @param  noskipws  Whether to consume whitespace or not.
+       *
+       *  If the stream state is good (@a is.good() is true), then the
+       *  following actions are performed, otherwise the sentry state
+       *  is false (<em>not okay</em>) and failbit is set in the
+       *  stream state.
+       *
+       *  The sentry's preparatory actions are:
+       *
+       *  -# if the stream is tied to an output stream, @c is.tie()->flush()
+       *     is called to synchronize the output sequence
+       *  -# if @a noskipws is false, and @c ios_base::skipws is set in
+       *     @c is.flags(), the sentry extracts and discards whitespace
+       *     characters from the stream.  The currently imbued locale is
+       *     used to determine whether each character is whitespace.
+       *
+       *  If the stream state is still good, then the sentry state becomes
+       *  true (@a okay).
+      */
+      explicit
+      sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
+
+      /**
+       *  @brief  Quick status checking.
+       *  @return  The sentry state.
+       *
+       *  For ease of use, sentries may be converted to booleans.  The
+       *  return value is that of the sentry state (true == okay).
+      */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+#endif
+      operator bool() const
+      { return _M_ok; }
+    };
+
+  // [27.6.1.2.3] character extraction templates
+  //@{
+  /**
+   *  @brief  Character extractors
+   *  @param  in  An input stream.
+   *  @param  c  A character reference.
+   *  @return  in
+   *
+   *  Behaves like one of the formatted arithmetic extractors described in
+   *  std::basic_istream.  After constructing a sentry object with good
+   *  status, this function extracts a character (if one is available) and
+   *  stores it in @a c.  Otherwise, sets failbit in the input stream.
+  */
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
+
+  template<class _Traits>
+    inline basic_istream<char, _Traits>&
+    operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
+    { return (__in >> reinterpret_cast<char&>(__c)); }
+
+  template<class _Traits>
+    inline basic_istream<char, _Traits>&
+    operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
+    { return (__in >> reinterpret_cast<char&>(__c)); }
+  //@}
+
+  //@{
+  /**
+   *  @brief  Character string extractors
+   *  @param  in  An input stream.
+   *  @param  s  A pointer to a character array.
+   *  @return  in
+   *
+   *  Behaves like one of the formatted arithmetic extractors described in
+   *  std::basic_istream.  After constructing a sentry object with good
+   *  status, this function extracts up to @c n characters and stores them
+   *  into the array starting at @a s.  @c n is defined as:
+   *
+   *  - if @c width() is greater than zero, @c n is width() otherwise
+   *  - @c n is <em>the number of elements of the largest array of *
+   *  - @c char_type that can store a terminating @c eos.</em>
+   *  - [27.6.1.2.3]/6
+   *
+   *  Characters are extracted and stored until one of the following happens:
+   *  - @c n-1 characters are stored
+   *  - EOF is reached
+   *  - the next character is whitespace according to the current locale
+   *  - the next character is a null byte (i.e., @c charT() )
+   *
+   *  @c width(0) is then called for the input stream.
+   *
+   *  If no characters are extracted, sets failbit.
+  */
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
+
+  // Explicit specialization declaration, defined in src/istream.cc.
+  template<>
+    basic_istream<char>&
+    operator>>(basic_istream<char>& __in, char* __s);
+
+  template<class _Traits>
+    inline basic_istream<char, _Traits>&
+    operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
+    { return (__in >> reinterpret_cast<char*>(__s)); }
+
+  template<class _Traits>
+    inline basic_istream<char, _Traits>&
+    operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
+    { return (__in >> reinterpret_cast<char*>(__s)); }
+  //@}
+
+  // 27.6.1.5 Template class basic_iostream
+  /**
+   *  @brief  Merging istream and ostream capabilities.
+   *  @ingroup io
+   *
+   *  This class multiply inherits from the input and output stream classes
+   *  simply to provide a single interface.
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_iostream
+    : public basic_istream<_CharT, _Traits>, 
+      public basic_ostream<_CharT, _Traits>
+    {
+    public:
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 271. basic_iostream missing typedefs
+      // Types (inherited):
+      typedef _CharT                     		char_type;
+      typedef typename _Traits::int_type 		int_type;
+      typedef typename _Traits::pos_type 		pos_type;
+      typedef typename _Traits::off_type 		off_type;
+      typedef _Traits                    		traits_type;
+
+      // Non-standard Types:
+      typedef basic_istream<_CharT, _Traits>		__istream_type;
+      typedef basic_ostream<_CharT, _Traits>		__ostream_type;
+
+      /**
+       *  @brief  Constructor does nothing.
+       *
+       *  Both of the parent classes are initialized with the same
+       *  streambuf pointer passed to this constructor.
+      */
+      explicit
+      basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
+      : __istream_type(__sb), __ostream_type(__sb) { }
+
+      /**
+       *  @brief  Destructor does nothing.
+      */
+      virtual 
+      ~basic_iostream() { }
+
+    protected:
+      basic_iostream()
+      : __istream_type(), __ostream_type() { }
+    };
+
+  // [27.6.1.4] standard basic_istream manipulators
+  /**
+   *  @brief  Quick and easy way to eat whitespace
+   *
+   *  This manipulator extracts whitespace characters, stopping when the
+   *  next character is non-whitespace, or when the input sequence is empty.
+   *  If the sequence is empty, @c eofbit is set in the stream, but not
+   *  @c failbit.
+   *
+   *  The current locale is used to distinguish whitespace characters.
+   *
+   *  Example:
+   *  @code
+   *     MyClass   mc;
+   *
+   *     std::cin >> std::ws >> mc;
+   *  @endcode
+   *  will skip leading whitespace before calling operator>> on cin and your
+   *  object.  Note that the same effect can be achieved by creating a
+   *  std::basic_istream::sentry inside your definition of operator>>.
+  */
+  template<typename _CharT, typename _Traits>
+    basic_istream<_CharT, _Traits>& 
+    ws(basic_istream<_CharT, _Traits>& __is);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // [27.7.1.6] Rvalue stream extraction
+  /**
+   *  @brief  Generic extractor for rvalue stream
+   *  @param  is  An input stream.
+   *  @param  x  A reference to the extraction target.
+   *  @return  is
+   *
+   *  This is just a forwarding function to allow extraction from
+   *  rvalue streams since they won't bind to the extractor functions
+   *  that take an lvalue reference.
+  */
+  template<typename _CharT, typename _Traits, typename _Tp>
+    inline basic_istream<_CharT, _Traits>&
+    operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
+    { return (__is >> __x); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/istream.tcc>
+
+#endif	/* _GLIBCXX_ISTREAM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iterator b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iterator
new file mode 100644
index 000000000..90152b7cb
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/iterator
@@ -0,0 +1,70 @@
+// <iterator> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/iterator
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_ITERATOR
+#define _GLIBCXX_ITERATOR 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/stl_iterator.h>
+#include <ostream>
+#include <istream>
+#include <bits/stream_iterator.h>
+#include <bits/streambuf_iterator.h>
+#include <bits/range_access.h>
+
+#endif /* _GLIBCXX_ITERATOR */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/limits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/limits
new file mode 100644
index 000000000..9a311973c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/limits
@@ -0,0 +1,1632 @@
+// The template and inlines for the numeric_limits classes. -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+// 2008, 2009, 2010  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/limits
+ *  This is a Standard C++ Library header.
+ */
+
+// Note: this is not a conforming implementation.
+// Written by Gabriel Dos Reis <gdr@codesourcery.com>
+
+//
+// ISO 14882:1998
+// 18.2.1
+//
+
+#ifndef _GLIBCXX_NUMERIC_LIMITS
+#define _GLIBCXX_NUMERIC_LIMITS 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+//
+// The numeric_limits<> traits document implementation-defined aspects
+// of fundamental arithmetic data types (integers and floating points).
+// From Standard C++ point of view, there are 14 such types:
+//   * integers
+//         bool							(1)
+//         char, signed char, unsigned char, wchar_t            (4)
+//         short, unsigned short				(2)
+//         int, unsigned					(2)
+//         long, unsigned long					(2)
+//
+//   * floating points
+//         float						(1)
+//         double						(1)
+//         long double						(1)
+//
+// GNU C++ understands (where supported by the host C-library)
+//   * integer
+//         long long, unsigned long long			(2)
+//
+// which brings us to 16 fundamental arithmetic data types in GNU C++.
+//
+//
+// Since a numeric_limits<> is a bit tricky to get right, we rely on
+// an interface composed of macros which should be defined in config/os
+// or config/cpu when they differ from the generic (read arbitrary)
+// definitions given here.
+//
+
+// These values can be overridden in the target configuration file.
+// The default values are appropriate for many 32-bit targets.
+
+// GCC only intrinsically supports modulo integral types.  The only remaining
+// integral exceptional values is division by zero.  Only targets that do not
+// signal division by zero in some "hard to ignore" way should use false.
+#ifndef __glibcxx_integral_traps
+# define __glibcxx_integral_traps true
+#endif
+
+// float
+//
+
+// Default values.  Should be overridden in configuration files if necessary.
+
+#ifndef __glibcxx_float_has_denorm_loss
+#  define __glibcxx_float_has_denorm_loss false
+#endif
+#ifndef __glibcxx_float_traps
+#  define __glibcxx_float_traps false
+#endif
+#ifndef __glibcxx_float_tinyness_before
+#  define __glibcxx_float_tinyness_before false
+#endif
+
+// double
+
+// Default values.  Should be overridden in configuration files if necessary.
+
+#ifndef __glibcxx_double_has_denorm_loss
+#  define __glibcxx_double_has_denorm_loss false
+#endif
+#ifndef __glibcxx_double_traps
+#  define __glibcxx_double_traps false
+#endif
+#ifndef __glibcxx_double_tinyness_before
+#  define __glibcxx_double_tinyness_before false
+#endif
+
+// long double
+
+// Default values.  Should be overridden in configuration files if necessary.
+
+#ifndef __glibcxx_long_double_has_denorm_loss
+#  define __glibcxx_long_double_has_denorm_loss false
+#endif
+#ifndef __glibcxx_long_double_traps
+#  define __glibcxx_long_double_traps false
+#endif
+#ifndef __glibcxx_long_double_tinyness_before
+#  define __glibcxx_long_double_tinyness_before false
+#endif
+
+// You should not need to define any macros below this point.
+
+#define __glibcxx_signed(T)	((T)(-1) < 0)
+
+#define __glibcxx_min(T) \
+  (__glibcxx_signed (T) ? (T)1 << __glibcxx_digits (T) : (T)0)
+
+#define __glibcxx_max(T) \
+  (__glibcxx_signed (T) ? \
+   (((((T)1 << (__glibcxx_digits (T) - 1)) - 1) << 1) + 1) : ~(T)0)
+
+#define __glibcxx_digits(T) \
+  (sizeof(T) * __CHAR_BIT__ - __glibcxx_signed (T))
+
+// The fraction 643/2136 approximates log10(2) to 7 significant digits.
+#define __glibcxx_digits10(T) \
+  (__glibcxx_digits (T) * 643L / 2136)
+
+#define __glibcxx_max_digits10(T) \
+  (2 + (T) * 643L / 2136)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief Describes the rounding style for floating-point types.
+   *
+   *  This is used in the std::numeric_limits class.
+  */
+  enum float_round_style
+  {
+    round_indeterminate       = -1,    /// Intermediate.
+    round_toward_zero         = 0,     /// To zero.
+    round_to_nearest          = 1,     /// To the nearest representable value.
+    round_toward_infinity     = 2,     /// To infinity.
+    round_toward_neg_infinity = 3      /// To negative infinity.
+  };
+
+  /**
+   *  @brief Describes the denormalization for floating-point types.
+   *
+   *  These values represent the presence or absence of a variable number
+   *  of exponent bits.  This type is used in the std::numeric_limits class.
+  */
+  enum float_denorm_style
+  {
+    /// Indeterminate at compile time whether denormalized values are allowed.
+    denorm_indeterminate = -1,
+    /// The type does not allow denormalized values.
+    denorm_absent        = 0,
+    /// The type allows denormalized values.
+    denorm_present       = 1
+  };
+
+  /**
+   *  @brief Part of std::numeric_limits.
+   *
+   *  The @c static @c const members are usable as integral constant
+   *  expressions.
+   *
+   *  @note This is a separate class for purposes of efficiency; you
+   *        should only access these members as part of an instantiation
+   *        of the std::numeric_limits class.
+  */
+  struct __numeric_limits_base
+  {
+    /** This will be true for all fundamental types (which have
+	specializations), and false for everything else.  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_specialized = false;
+
+    /** The number of @c radix digits that be represented without change:  for
+	integer types, the number of non-sign bits in the mantissa; for
+	floating types, the number of @c radix digits in the mantissa.  */
+    static _GLIBCXX_USE_CONSTEXPR int digits = 0;
+
+    /** The number of base 10 digits that can be represented without change. */
+    static _GLIBCXX_USE_CONSTEXPR int digits10 = 0;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    /** The number of base 10 digits required to ensure that values which
+	differ are always differentiated.  */
+    static constexpr int max_digits10 = 0;
+#endif
+
+    /** True if the type is signed.  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+
+    /** True if the type is integer.
+     *  Is this supposed to be <em>if the type is integral?</em>  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
+
+    /** True if the type uses an exact representation. <em>All integer types are
+	exact, but not all exact types are integer.  For example, rational and
+	fixed-exponent representations are exact but not integer.</em>
+	[18.2.1.2]/15  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
+
+    /** For integer types, specifies the base of the representation.  For
+	floating types, specifies the base of the exponent representation.  */
+    static _GLIBCXX_USE_CONSTEXPR int radix = 0;
+
+    /** The minimum negative integer such that @c radix raised to the power of
+	(one less than that integer) is a normalized floating point number.  */
+    static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+
+    /** The minimum negative integer such that 10 raised to that power is in
+	the range of normalized floating point numbers.  */
+    static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+
+    /** The maximum positive integer such that @c radix raised to the power of
+	(one less than that integer) is a representable finite floating point
+	number.  */
+    static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+
+    /** The maximum positive integer such that 10 raised to that power is in
+	the range of representable finite floating point numbers.  */
+    static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+    /** True if the type has a representation for positive infinity.  */
+    static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+
+    /** True if the type has a representation for a quiet (non-signaling)
+	<em>Not a Number</em>.  */
+    static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+
+    /** True if the type has a representation for a signaling
+	<em>Not a Number</em>.  */
+    static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+
+    /** See std::float_denorm_style for more information.  */
+    static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
+
+    /** <em>True if loss of accuracy is detected as a denormalization loss,
+	rather than as an inexact result.</em> [18.2.1.2]/42  */
+    static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+    /** True if-and-only-if the type adheres to the IEC 559 standard, also
+	known as IEEE 754.  (Only makes sense for floating point types.)  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+
+    /** <em>True if the set of values representable by the type is
+	finite.  All built-in types are bounded, this member would be
+	false for arbitrary precision types.</em> [18.2.1.2]/54  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_bounded = false;
+
+    /** True if the type is @e modulo, that is, if it is possible to add two
+	positive numbers and have a result that wraps around to a third number
+	that is less.  Typically false for floating types, true for unsigned
+	integers, and true for signed integers.  */
+    static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
+
+    /** True if trapping is implemented for this type.  */
+    static _GLIBCXX_USE_CONSTEXPR bool traps = false;
+
+    /** True if tininess is detected before rounding.  (see IEC 559)  */
+    static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+
+    /** See std::float_round_style for more information.  This is only
+	meaningful for floating types; integer types will all be
+	round_toward_zero.  */
+    static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = 
+						    round_toward_zero;
+  };
+
+  /**
+   *  @brief Properties of fundamental types.
+   *
+   *  This class allows a program to obtain information about the
+   *  representation of a fundamental type on a given platform.  For
+   *  non-fundamental types, the functions will return 0 and the data
+   *  members will all be @c false.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS:  DRs 201 and 184 (hi Gaby!) are
+   *  noted, but not incorporated in this documented (yet).
+  */
+  template<typename _Tp>
+    struct numeric_limits : public __numeric_limits_base
+    {
+      /** The minimum finite value, or for floating types with
+	  denormalization, the minimum positive normalized value.  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      min() throw() { return static_cast<_Tp>(0); }
+
+      /** The maximum finite value.  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      max() throw() { return static_cast<_Tp>(0); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /** A finite value x such that there is no other finite value y
+       *  where y < x.  */
+      static constexpr _Tp
+      lowest() throw() { return static_cast<_Tp>(0); }
+#endif
+
+      /** The @e machine @e epsilon:  the difference between 1 and the least
+	  value greater than 1 that is representable.  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      epsilon() throw() { return static_cast<_Tp>(0); }
+
+      /** The maximum rounding error measurement (see LIA-1).  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      round_error() throw() { return static_cast<_Tp>(0); }
+
+      /** The representation of positive infinity, if @c has_infinity.  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      infinity() throw()  { return static_cast<_Tp>(0); }
+
+      /** The representation of a quiet <em>Not a Number</em>,
+	  if @c has_quiet_NaN. */
+      static _GLIBCXX_CONSTEXPR _Tp
+      quiet_NaN() throw() { return static_cast<_Tp>(0); }
+
+      /** The representation of a signaling <em>Not a Number</em>, if
+	  @c has_signaling_NaN. */
+      static _GLIBCXX_CONSTEXPR _Tp
+      signaling_NaN() throw() { return static_cast<_Tp>(0); }
+
+      /** The minimum positive denormalized value.  For types where
+	  @c has_denorm is false, this is the minimum positive normalized
+	  value.  */
+      static _GLIBCXX_CONSTEXPR _Tp
+      denorm_min() throw() { return static_cast<_Tp>(0); }
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    struct numeric_limits<const _Tp>
+    : public numeric_limits<_Tp> { };
+
+  template<typename _Tp>
+    struct numeric_limits<volatile _Tp>
+    : public numeric_limits<_Tp> { };
+
+  template<typename _Tp>
+    struct numeric_limits<const volatile _Tp>
+    : public numeric_limits<_Tp> { };
+#endif
+
+  // Now there follow 16 explicit specializations.  Yes, 16.  Make sure
+  // you get the count right. (18 in c++0x mode)
+
+  /// numeric_limits<bool> specialization.
+  template<>
+    struct numeric_limits<bool>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR bool 
+      min() throw() { return false; }
+
+      static _GLIBCXX_CONSTEXPR bool 
+      max() throw()  { return true; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr bool
+      lowest() throw() { return min(); }
+#endif
+      static _GLIBCXX_USE_CONSTEXPR int digits = 1;
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = 0;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR bool 
+      epsilon() throw() { return false; }
+
+      static _GLIBCXX_CONSTEXPR bool 
+      round_error() throw() { return false; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR bool 
+      infinity() throw() { return false; }
+
+      static _GLIBCXX_CONSTEXPR bool 
+      quiet_NaN() throw() { return false; }
+
+      static _GLIBCXX_CONSTEXPR bool 
+      signaling_NaN() throw() { return false; }
+
+      static _GLIBCXX_CONSTEXPR bool 
+      denorm_min() throw() { return false; }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
+
+      // It is not clear what it means for a boolean type to trap.
+      // This is a DR on the LWG issue list.  Here, I use integer
+      // promotion semantics.
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<char> specialization.
+  template<>
+    struct numeric_limits<char>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR char 
+      min() throw() { return __glibcxx_min(char); }
+
+      static _GLIBCXX_CONSTEXPR char 
+      max() throw() { return __glibcxx_max(char); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr char 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (char);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (char);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = __glibcxx_signed (char);
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR char 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR char 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR 
+      char infinity() throw()  { return char(); }
+
+      static _GLIBCXX_CONSTEXPR char 
+      quiet_NaN() throw() { return char(); }
+
+      static _GLIBCXX_CONSTEXPR char 
+      signaling_NaN() throw() { return char(); }
+
+      static _GLIBCXX_CONSTEXPR char 
+      denorm_min() throw() { return static_cast<char>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<signed char> specialization.
+  template<>
+    struct numeric_limits<signed char>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      min() throw() { return -__SCHAR_MAX__ - 1; }
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      max() throw() { return __SCHAR_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr signed char 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (signed char);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (signed char);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      infinity() throw() { return static_cast<signed char>(0); }
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      quiet_NaN() throw() { return static_cast<signed char>(0); }
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      signaling_NaN() throw() { return static_cast<signed char>(0); }
+
+      static _GLIBCXX_CONSTEXPR signed char 
+      denorm_min() throw() { return static_cast<signed char>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<unsigned char> specialization.
+  template<>
+    struct numeric_limits<unsigned char>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      min() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      max() throw() { return __SCHAR_MAX__ * 2U + 1; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr unsigned char 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (unsigned char);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (unsigned char);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      infinity() throw() { return static_cast<unsigned char>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      quiet_NaN() throw() { return static_cast<unsigned char>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      signaling_NaN() throw() { return static_cast<unsigned char>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned char 
+      denorm_min() throw() { return static_cast<unsigned char>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<wchar_t> specialization.
+  template<>
+    struct numeric_limits<wchar_t>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      min() throw() { return __glibcxx_min (wchar_t); }
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      max() throw()  { return __glibcxx_max (wchar_t); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr wchar_t 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (wchar_t);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (wchar_t);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = __glibcxx_signed (wchar_t);
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      infinity() throw() { return wchar_t(); }
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      quiet_NaN() throw() { return wchar_t(); }
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      signaling_NaN() throw() { return wchar_t(); }
+
+      static _GLIBCXX_CONSTEXPR wchar_t 
+      denorm_min() throw() { return wchar_t(); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /// numeric_limits<char16_t> specialization.
+  template<>
+    struct numeric_limits<char16_t>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      min() throw() { return __glibcxx_min (char16_t); }
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      max() throw() { return __glibcxx_max (char16_t); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr char16_t 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (char16_t);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (char16_t);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed 
+       = __glibcxx_signed (char16_t);
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      infinity() throw()  { return char16_t(); }
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      quiet_NaN() throw() { return char16_t(); }
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      signaling_NaN() throw() { return char16_t(); }
+
+      static _GLIBCXX_CONSTEXPR char16_t 
+      denorm_min() throw() { return char16_t(); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<char32_t> specialization.
+  template<>
+    struct numeric_limits<char32_t>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      min() throw() { return __glibcxx_min (char32_t); }
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      max() throw() { return __glibcxx_max (char32_t); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr char32_t 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (char32_t);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (char32_t);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed 
+       = __glibcxx_signed (char32_t);
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      infinity() throw() { return char32_t(); }
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      quiet_NaN() throw() { return char32_t(); }
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      signaling_NaN() throw() { return char32_t(); }
+
+      static _GLIBCXX_CONSTEXPR char32_t 
+      denorm_min() throw() { return char32_t(); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+#endif
+
+  /// numeric_limits<short> specialization.
+  template<>
+    struct numeric_limits<short>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR short 
+      min() throw() { return -__SHRT_MAX__ - 1; }
+
+      static _GLIBCXX_CONSTEXPR short 
+      max() throw() { return __SHRT_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr short 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (short);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (short);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR short 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR short 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR short 
+      infinity() throw() { return short(); }
+
+      static _GLIBCXX_CONSTEXPR short 
+      quiet_NaN() throw() { return short(); }
+
+      static _GLIBCXX_CONSTEXPR short 
+      signaling_NaN() throw() { return short(); }
+
+      static _GLIBCXX_CONSTEXPR short 
+      denorm_min() throw() { return short(); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<unsigned short> specialization.
+  template<>
+    struct numeric_limits<unsigned short>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      min() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      max() throw() { return __SHRT_MAX__ * 2U + 1; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr unsigned short 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (unsigned short);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (unsigned short);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      infinity() throw() { return static_cast<unsigned short>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      quiet_NaN() throw() { return static_cast<unsigned short>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      signaling_NaN() throw() { return static_cast<unsigned short>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned short 
+      denorm_min() throw() { return static_cast<unsigned short>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<int> specialization.
+  template<>
+    struct numeric_limits<int>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR int 
+      min() throw() { return -__INT_MAX__ - 1; }
+
+      static _GLIBCXX_CONSTEXPR int 
+      max() throw() { return __INT_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (int);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (int);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR int 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR int 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR int 
+      infinity() throw() { return static_cast<int>(0); }
+
+      static _GLIBCXX_CONSTEXPR int 
+      quiet_NaN() throw() { return static_cast<int>(0); }
+
+      static _GLIBCXX_CONSTEXPR int 
+      signaling_NaN() throw() { return static_cast<int>(0); }
+
+      static _GLIBCXX_CONSTEXPR int 
+      denorm_min() throw() { return static_cast<int>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<unsigned int> specialization.
+  template<>
+    struct numeric_limits<unsigned int>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      min() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      max() throw() { return __INT_MAX__ * 2U + 1; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr unsigned int 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (unsigned int);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (unsigned int);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      infinity() throw() { return static_cast<unsigned int>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      quiet_NaN() throw() { return static_cast<unsigned int>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      signaling_NaN() throw() { return static_cast<unsigned int>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned int 
+      denorm_min() throw() { return static_cast<unsigned int>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<long> specialization.
+  template<>
+    struct numeric_limits<long>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR long
+      min() throw() { return -__LONG_MAX__ - 1; }
+
+      static _GLIBCXX_CONSTEXPR long 
+      max() throw() { return __LONG_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr long 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (long);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (long);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR long 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR long 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR long 
+      infinity() throw() { return static_cast<long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long 
+      quiet_NaN() throw() { return static_cast<long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long 
+      signaling_NaN() throw() { return static_cast<long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long 
+      denorm_min() throw() { return static_cast<long>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<unsigned long> specialization.
+  template<>
+    struct numeric_limits<unsigned long>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      min() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      max() throw() { return __LONG_MAX__ * 2UL + 1; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr unsigned long 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (unsigned long);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (unsigned long);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      infinity() throw() { return static_cast<unsigned long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      quiet_NaN() throw() { return static_cast<unsigned long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      signaling_NaN() throw() { return static_cast<unsigned long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long 
+      denorm_min() throw() { return static_cast<unsigned long>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<long long> specialization.
+  template<>
+    struct numeric_limits<long long>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR long long 
+      min() throw() { return -__LONG_LONG_MAX__ - 1; }
+
+      static _GLIBCXX_CONSTEXPR long long 
+      max() throw() { return __LONG_LONG_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr long long 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (long long);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (long long);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR long long 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR long long 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR long long 
+      infinity() throw() { return static_cast<long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long long 
+      quiet_NaN() throw() { return static_cast<long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long long 
+      signaling_NaN() throw() { return static_cast<long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR long long 
+      denorm_min() throw() { return static_cast<long long>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<unsigned long long> specialization.
+  template<>
+    struct numeric_limits<unsigned long long>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      min() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      max() throw() { return __LONG_LONG_MAX__ * 2ULL + 1; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr unsigned long long 
+      lowest() throw() { return min(); }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits 
+       = __glibcxx_digits (unsigned long long);
+      static _GLIBCXX_USE_CONSTEXPR int digits10 
+       = __glibcxx_digits10 (unsigned long long);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10 = 0;
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
+      static _GLIBCXX_USE_CONSTEXPR int radix = 2;
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      epsilon() throw() { return 0; }
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      round_error() throw() { return 0; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm 
+       = denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      infinity() throw() { return static_cast<unsigned long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      quiet_NaN() throw() { return static_cast<unsigned long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      signaling_NaN() throw() { return static_cast<unsigned long long>(0); }
+
+      static _GLIBCXX_CONSTEXPR unsigned long long 
+      denorm_min() throw() { return static_cast<unsigned long long>(0); }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_toward_zero;
+    };
+
+  /// numeric_limits<float> specialization.
+  template<>
+    struct numeric_limits<float>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR float 
+      min() throw() { return __FLT_MIN__; }
+
+      static _GLIBCXX_CONSTEXPR float 
+      max() throw() { return __FLT_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr float 
+      lowest() throw() { return -__FLT_MAX__; }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __FLT_MANT_DIG__;
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __FLT_DIG__;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10
+	 = __glibcxx_max_digits10 (__FLT_MANT_DIG__);
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
+      static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
+
+      static _GLIBCXX_CONSTEXPR float 
+      epsilon() throw() { return __FLT_EPSILON__; }
+
+      static _GLIBCXX_CONSTEXPR float 
+      round_error() throw() { return 0.5F; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = __FLT_MIN_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __FLT_MIN_10_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = __FLT_MAX_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __FLT_MAX_10_EXP__;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __FLT_HAS_INFINITY__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __FLT_HAS_QUIET_NAN__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
+	= bool(__FLT_HAS_DENORM__) ? denorm_present : denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss 
+       = __glibcxx_float_has_denorm_loss;
+
+      static _GLIBCXX_CONSTEXPR float 
+      infinity() throw() { return __builtin_huge_valf (); }
+
+      static _GLIBCXX_CONSTEXPR float 
+      quiet_NaN() throw() { return __builtin_nanf (""); }
+
+      static _GLIBCXX_CONSTEXPR float 
+      signaling_NaN() throw() { return __builtin_nansf (""); }
+
+      static _GLIBCXX_CONSTEXPR float 
+      denorm_min() throw() { return __FLT_DENORM_MIN__; }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559
+	= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_float_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before 
+       = __glibcxx_float_tinyness_before;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_to_nearest;
+    };
+
+#undef __glibcxx_float_has_denorm_loss
+#undef __glibcxx_float_traps
+#undef __glibcxx_float_tinyness_before
+
+  /// numeric_limits<double> specialization.
+  template<>
+    struct numeric_limits<double>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR double 
+      min() throw()  { return __DBL_MIN__; }
+
+      static _GLIBCXX_CONSTEXPR double 
+      max() throw() { return __DBL_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr double 
+      lowest() throw() { return -__DBL_MAX__; }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __DBL_MANT_DIG__;
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __DBL_DIG__;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr int max_digits10
+	 = __glibcxx_max_digits10 (__DBL_MANT_DIG__);
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
+      static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
+
+      static _GLIBCXX_CONSTEXPR double 
+      epsilon() throw() { return __DBL_EPSILON__; }
+
+      static _GLIBCXX_CONSTEXPR double 
+      round_error() throw() { return 0.5; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = __DBL_MIN_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __DBL_MIN_10_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = __DBL_MAX_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __DBL_MAX_10_EXP__;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __DBL_HAS_INFINITY__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __DBL_HAS_QUIET_NAN__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
+	= bool(__DBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss 
+        = __glibcxx_double_has_denorm_loss;
+
+      static _GLIBCXX_CONSTEXPR double 
+      infinity() throw() { return __builtin_huge_val(); }
+
+      static _GLIBCXX_CONSTEXPR double 
+      quiet_NaN() throw() { return __builtin_nan (""); }
+
+      static _GLIBCXX_CONSTEXPR double 
+      signaling_NaN() throw() { return __builtin_nans (""); }
+
+      static _GLIBCXX_CONSTEXPR double 
+      denorm_min() throw() { return __DBL_DENORM_MIN__; }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559
+	= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_double_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before 
+       = __glibcxx_double_tinyness_before;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style 
+       = round_to_nearest;
+    };
+
+#undef __glibcxx_double_has_denorm_loss
+#undef __glibcxx_double_traps
+#undef __glibcxx_double_tinyness_before
+
+  /// numeric_limits<long double> specialization.
+  template<>
+    struct numeric_limits<long double>
+    {
+      static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
+
+      static _GLIBCXX_CONSTEXPR long double 
+      min() throw() { return __LDBL_MIN__; }
+
+      static _GLIBCXX_CONSTEXPR long double 
+      max() throw() { return __LDBL_MAX__; }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static constexpr long double 
+      lowest() throw() { return -__LDBL_MAX__; }
+#endif
+
+      static _GLIBCXX_USE_CONSTEXPR int digits = __LDBL_MANT_DIG__;
+      static _GLIBCXX_USE_CONSTEXPR int digits10 = __LDBL_DIG__;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      static _GLIBCXX_USE_CONSTEXPR int max_digits10
+	 = __glibcxx_max_digits10 (__LDBL_MANT_DIG__);
+#endif
+      static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
+      static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
+      static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
+
+      static _GLIBCXX_CONSTEXPR long double 
+      epsilon() throw() { return __LDBL_EPSILON__; }
+
+      static _GLIBCXX_CONSTEXPR long double 
+      round_error() throw() { return 0.5L; }
+
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent = __LDBL_MIN_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __LDBL_MIN_10_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent = __LDBL_MAX_EXP__;
+      static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __LDBL_MAX_10_EXP__;
+
+      static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __LDBL_HAS_INFINITY__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __LDBL_HAS_QUIET_NAN__;
+      static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
+	= bool(__LDBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
+	= __glibcxx_long_double_has_denorm_loss;
+
+      static _GLIBCXX_CONSTEXPR long double 
+      infinity() throw() { return __builtin_huge_vall (); }
+
+      static _GLIBCXX_CONSTEXPR long double 
+      quiet_NaN() throw() { return __builtin_nanl (""); }
+
+      static _GLIBCXX_CONSTEXPR long double 
+      signaling_NaN() throw() { return __builtin_nansl (""); }
+
+      static _GLIBCXX_CONSTEXPR long double 
+      denorm_min() throw() { return __LDBL_DENORM_MIN__; }
+
+      static _GLIBCXX_USE_CONSTEXPR bool is_iec559
+	= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
+      static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
+
+      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_long_double_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = 
+					 __glibcxx_long_double_tinyness_before;
+      static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = 
+						      round_to_nearest;
+    };
+
+#undef __glibcxx_long_double_has_denorm_loss
+#undef __glibcxx_long_double_traps
+#undef __glibcxx_long_double_tinyness_before
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#undef __glibcxx_signed
+#undef __glibcxx_min
+#undef __glibcxx_max
+#undef __glibcxx_digits
+#undef __glibcxx_digits10
+#undef __glibcxx_max_digits10
+
+#endif // _GLIBCXX_NUMERIC_LIMITS
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/list
new file mode 100644
index 000000000..abcba859b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/list
@@ -0,0 +1,76 @@
+// <list> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/list
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_LIST
+#define _GLIBCXX_LIST 1
+
+#pragma GCC system_header
+
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/range_access.h>
+#include <bits/stl_list.h>
+#include <bits/list.tcc>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/list>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/list>
+#endif
+
+#endif /* _GLIBCXX_LIST */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/locale b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/locale
new file mode 100644
index 000000000..cfb152ac0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/locale
@@ -0,0 +1,45 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+// 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+/** @file include/locale
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_LOCALE
+#define _GLIBCXX_LOCALE	1
+
+#pragma GCC system_header
+
+#include <bits/localefwd.h>
+#include <bits/locale_classes.h>
+#include <bits/locale_facets.h>
+#include <bits/locale_facets_nonio.h>
+
+#endif /* _GLIBCXX_LOCALE */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/map
new file mode 100644
index 000000000..b2e3bf5be
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/map
@@ -0,0 +1,73 @@
+// <map> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/map
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_MAP
+#define _GLIBCXX_MAP 1
+
+#pragma GCC system_header
+
+#include <bits/stl_tree.h>
+#include <bits/stl_map.h>
+#include <bits/stl_multimap.h>
+#include <bits/range_access.h>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/map>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/map>
+#endif
+
+#endif /* _GLIBCXX_MAP */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/memory b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/memory
new file mode 100644
index 000000000..791ffe048
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/memory
@@ -0,0 +1,91 @@
+// <memory> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1997-1999
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+/** @file include/memory
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_MEMORY
+#define _GLIBCXX_MEMORY 1
+
+#pragma GCC system_header
+
+/**
+ * @defgroup memory Memory
+ * @ingroup utilities
+ *
+ * Components for memory allocation, deallocation, and management.
+ */
+
+/**
+ * @defgroup pointer_abstractions Pointer Abstractions
+ * @ingroup memory
+ *
+ * Smart pointers, etc.
+ */
+
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_construct.h>
+#include <bits/stl_uninitialized.h>
+#include <bits/stl_tempbuf.h>
+#include <bits/stl_raw_storage_iter.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#  include <exception>        	  // std::exception
+#  include <typeinfo>         	  // std::type_info in get_deleter
+#  include <iosfwd>           	  // std::basic_ostream
+#  include <ext/atomicity.h>
+#  include <ext/concurrence.h>
+#  include <bits/functexcept.h>
+#  include <bits/stl_function.h>  // std::less
+#  include <type_traits>
+#  include <functional>
+#  include <debug/debug.h>
+#  if _GLIBCXX_USE_DEPRECATED
+#    include <backward/auto_ptr.h>
+#  endif
+#  include <bits/unique_ptr.h>
+#  include <bits/shared_ptr.h>
+#else
+#  include <backward/auto_ptr.h>
+#endif
+
+#endif /* _GLIBCXX_MEMORY */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/mutex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/mutex
new file mode 100644
index 000000000..36f894efe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/mutex
@@ -0,0 +1,830 @@
+// <mutex> -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/mutex
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_MUTEX
+#define _GLIBCXX_MUTEX 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <tuple>
+#include <chrono>
+#include <exception>
+#include <type_traits>
+#include <functional>
+#include <system_error>
+#include <bits/functexcept.h>
+#include <bits/gthr.h>
+#include <bits/move.h> // for std::swap
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup mutexes Mutexes
+   * @ingroup concurrency
+   *
+   * Classes for mutex support.
+   * @{
+   */
+
+  /// mutex
+  class mutex
+  {
+    typedef __gthread_mutex_t			__native_type;
+    __native_type  _M_mutex;
+
+  public:
+    typedef __native_type* 			native_handle_type;
+
+#ifdef __GTHREAD_MUTEX_INIT
+    constexpr mutex() : _M_mutex(__GTHREAD_MUTEX_INIT) { }
+#else
+    mutex()
+    {
+      // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
+      __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
+    }
+
+    ~mutex() { __gthread_mutex_destroy(&_M_mutex); }
+#endif
+
+    mutex(const mutex&) = delete;
+    mutex& operator=(const mutex&) = delete;
+
+    void
+    lock()
+    {
+      int __e = __gthread_mutex_lock(&_M_mutex);
+
+      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+    bool
+    try_lock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      return !__gthread_mutex_trylock(&_M_mutex);
+    }
+
+    void
+    unlock()
+    {
+      // XXX EINVAL, EAGAIN, EPERM
+      __gthread_mutex_unlock(&_M_mutex);
+    }
+
+    native_handle_type
+    native_handle()
+    { return &_M_mutex; }
+  };
+
+#ifndef __GTHREAD_RECURSIVE_MUTEX_INIT
+  // FIXME: gthreads doesn't define __gthread_recursive_mutex_destroy
+  // so we need to obtain a __gthread_mutex_t to destroy
+  class __destroy_recursive_mutex
+  {
+    template<typename _Mx, typename _Rm>
+      static void
+      _S_destroy_win32(_Mx* __mx, _Rm const* __rmx)
+      {
+        __mx->counter = __rmx->counter;
+        __mx->sema = __rmx->sema;
+        __gthread_mutex_destroy(__mx);
+      }
+
+  public:
+    // matches a gthr-win32.h recursive mutex
+    template<typename _Rm>
+      static typename enable_if<sizeof(&_Rm::sema), void>::type
+      _S_destroy(_Rm* __mx)
+      {
+        __gthread_mutex_t __tmp;
+        _S_destroy_win32(&__tmp, __mx);
+      }
+
+    // matches a recursive mutex with a member 'actual'
+    template<typename _Rm>
+      static typename enable_if<sizeof(&_Rm::actual), void>::type
+      _S_destroy(_Rm* __mx)
+      { __gthread_mutex_destroy(&__mx->actual); }
+
+    // matches when there's only one mutex type
+    template<typename _Rm>
+      static
+      typename enable_if<is_same<_Rm, __gthread_mutex_t>::value, void>::type
+      _S_destroy(_Rm* __mx)
+      { __gthread_mutex_destroy(__mx); }
+  };
+#endif
+
+  /// recursive_mutex
+  class recursive_mutex
+  {
+    typedef __gthread_recursive_mutex_t		__native_type;
+    __native_type  _M_mutex;
+
+  public:
+    typedef __native_type* 			native_handle_type;
+
+#ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
+    recursive_mutex() : _M_mutex(__GTHREAD_RECURSIVE_MUTEX_INIT) { }
+#else
+    recursive_mutex()
+    {
+      // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
+      __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
+    }
+
+    ~recursive_mutex()
+    { __destroy_recursive_mutex::_S_destroy(&_M_mutex); }
+#endif
+
+    recursive_mutex(const recursive_mutex&) = delete;
+    recursive_mutex& operator=(const recursive_mutex&) = delete;
+
+    void
+    lock()
+    {
+      int __e = __gthread_recursive_mutex_lock(&_M_mutex);
+
+      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+    bool
+    try_lock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      return !__gthread_recursive_mutex_trylock(&_M_mutex);
+    }
+
+    void
+    unlock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      __gthread_recursive_mutex_unlock(&_M_mutex);
+    }
+
+    native_handle_type
+    native_handle()
+    { return &_M_mutex; }
+  };
+
+  /// timed_mutex
+  class timed_mutex
+  {
+    typedef __gthread_mutex_t 		  	__native_type;
+
+#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
+    typedef chrono::monotonic_clock 	  	__clock_t;
+#else
+    typedef chrono::high_resolution_clock 	__clock_t;
+#endif
+
+    __native_type  _M_mutex;
+
+  public:
+    typedef __native_type* 		  	native_handle_type;
+
+#ifdef __GTHREAD_MUTEX_INIT
+    timed_mutex() : _M_mutex(__GTHREAD_MUTEX_INIT) { }
+#else
+    timed_mutex()
+    {
+      __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
+    }
+
+    ~timed_mutex() { __gthread_mutex_destroy(&_M_mutex); }
+#endif
+
+    timed_mutex(const timed_mutex&) = delete;
+    timed_mutex& operator=(const timed_mutex&) = delete;
+
+    void
+    lock()
+    {
+      int __e = __gthread_mutex_lock(&_M_mutex);
+
+      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+    bool
+    try_lock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      return !__gthread_mutex_trylock(&_M_mutex);
+    }
+
+    template <class _Rep, class _Period>
+      bool
+      try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
+      { return __try_lock_for_impl(__rtime); }
+
+    template <class _Clock, class _Duration>
+      bool
+      try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
+      {
+	chrono::time_point<_Clock, chrono::seconds> __s =
+	  chrono::time_point_cast<chrono::seconds>(__atime);
+
+	chrono::nanoseconds __ns =
+	  chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
+
+	__gthread_time_t __ts = {
+	  static_cast<std::time_t>(__s.time_since_epoch().count()),
+	  static_cast<long>(__ns.count())
+	};
+
+	return !__gthread_mutex_timedlock(&_M_mutex, &__ts);
+      }
+
+    void
+    unlock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      __gthread_mutex_unlock(&_M_mutex);
+    }
+
+    native_handle_type
+    native_handle()
+    { return &_M_mutex; }
+
+  private:
+    template<typename _Rep, typename _Period>
+      typename enable_if<
+	ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
+      __try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
+      {
+	__clock_t::time_point __atime = __clock_t::now()
+	  + chrono::duration_cast<__clock_t::duration>(__rtime);
+
+	return try_lock_until(__atime);
+      }
+
+    template <typename _Rep, typename _Period>
+      typename enable_if<
+	!ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
+      __try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
+      {
+	__clock_t::time_point __atime = __clock_t::now()
+	  + ++chrono::duration_cast<__clock_t::duration>(__rtime);
+
+	return try_lock_until(__atime);
+      }
+  };
+
+  /// recursive_timed_mutex
+  class recursive_timed_mutex
+  {
+    typedef __gthread_recursive_mutex_t		__native_type;
+
+#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
+    typedef chrono::monotonic_clock 		__clock_t;
+#else
+    typedef chrono::high_resolution_clock 	__clock_t;
+#endif
+
+    __native_type  _M_mutex;
+
+  public:
+    typedef __native_type* 			native_handle_type;
+
+#ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
+    recursive_timed_mutex() : _M_mutex(__GTHREAD_RECURSIVE_MUTEX_INIT) { }
+#else
+    recursive_timed_mutex()
+    {
+      // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
+      __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
+    }
+
+    ~recursive_timed_mutex()
+    { __destroy_recursive_mutex::_S_destroy(&_M_mutex); }
+#endif
+
+    recursive_timed_mutex(const recursive_timed_mutex&) = delete;
+    recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete;
+
+    void
+    lock()
+    {
+      int __e = __gthread_recursive_mutex_lock(&_M_mutex);
+
+      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+    bool
+    try_lock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      return !__gthread_recursive_mutex_trylock(&_M_mutex);
+    }
+
+    template <class _Rep, class _Period>
+      bool
+      try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
+      { return __try_lock_for_impl(__rtime); }
+
+    template <class _Clock, class _Duration>
+      bool
+      try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
+      {
+	chrono::time_point<_Clock, chrono::seconds>  __s =
+	  chrono::time_point_cast<chrono::seconds>(__atime);
+
+	chrono::nanoseconds __ns =
+	  chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
+
+	__gthread_time_t __ts = {
+	  static_cast<std::time_t>(__s.time_since_epoch().count()),
+	  static_cast<long>(__ns.count())
+	};
+
+	return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts);
+      }
+
+    void
+    unlock()
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      __gthread_recursive_mutex_unlock(&_M_mutex);
+    }
+
+    native_handle_type
+    native_handle()
+    { return &_M_mutex; }
+
+  private:
+    template<typename _Rep, typename _Period>
+      typename enable_if<
+	ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
+      __try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
+      {
+	__clock_t::time_point __atime = __clock_t::now()
+	  + chrono::duration_cast<__clock_t::duration>(__rtime);
+
+	return try_lock_until(__atime);
+      }
+
+    template <typename _Rep, typename _Period>
+      typename enable_if<
+	!ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
+      __try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
+      {
+	__clock_t::time_point __atime = __clock_t::now()
+	  + ++chrono::duration_cast<__clock_t::duration>(__rtime);
+
+	return try_lock_until(__atime);
+      }
+  };
+
+  /// Do not acquire ownership of the mutex.
+  struct defer_lock_t { };
+
+  /// Try to acquire ownership of the mutex without blocking.
+  struct try_to_lock_t { };
+
+  /// Assume the calling thread has already obtained mutex ownership
+  /// and manage it.
+  struct adopt_lock_t { };
+
+  constexpr defer_lock_t	defer_lock { };
+  constexpr try_to_lock_t	try_to_lock { };
+  constexpr adopt_lock_t	adopt_lock { };
+
+  /// @brief  Scoped lock idiom.
+  // Acquire the mutex here with a constructor call, then release with
+  // the destructor call in accordance with RAII style.
+  template<typename _Mutex>
+    class lock_guard
+    {
+    public:
+      typedef _Mutex mutex_type;
+
+      explicit lock_guard(mutex_type& __m) : _M_device(__m)
+      { _M_device.lock(); }
+
+      lock_guard(mutex_type& __m, adopt_lock_t) : _M_device(__m)
+      { } // calling thread owns mutex
+
+      ~lock_guard()
+      { _M_device.unlock(); }
+
+      lock_guard(const lock_guard&) = delete;
+      lock_guard& operator=(const lock_guard&) = delete;
+
+    private:
+      mutex_type&  _M_device;
+    };
+
+  /// unique_lock
+  template<typename _Mutex>
+    class unique_lock
+    {
+    public:
+      typedef _Mutex mutex_type;
+
+      unique_lock()
+      : _M_device(0), _M_owns(false)
+      { }
+
+      explicit unique_lock(mutex_type& __m)
+      : _M_device(&__m), _M_owns(false)
+      {
+	lock();
+	_M_owns = true;
+      }
+
+      unique_lock(mutex_type& __m, defer_lock_t)
+      : _M_device(&__m), _M_owns(false)
+      { }
+
+      unique_lock(mutex_type& __m, try_to_lock_t)
+      : _M_device(&__m), _M_owns(_M_device->try_lock())
+      { }
+
+      unique_lock(mutex_type& __m, adopt_lock_t)
+      : _M_device(&__m), _M_owns(true)
+      {
+	// XXX calling thread owns mutex
+      }
+
+      template<typename _Clock, typename _Duration>
+	unique_lock(mutex_type& __m,
+		    const chrono::time_point<_Clock, _Duration>& __atime)
+	: _M_device(&__m), _M_owns(_M_device->try_lock_until(__atime))
+	{ }
+
+      template<typename _Rep, typename _Period>
+	unique_lock(mutex_type& __m,
+		    const chrono::duration<_Rep, _Period>& __rtime)
+	: _M_device(&__m), _M_owns(_M_device->try_lock_for(__rtime))
+	{ }
+
+      ~unique_lock()
+      {
+	if (_M_owns)
+	  unlock();
+      }
+
+      unique_lock(const unique_lock&) = delete;
+      unique_lock& operator=(const unique_lock&) = delete;
+
+      unique_lock(unique_lock&& __u)
+      : _M_device(__u._M_device), _M_owns(__u._M_owns)
+      {
+	__u._M_device = 0;
+	__u._M_owns = false;
+      }
+
+      unique_lock& operator=(unique_lock&& __u)
+      {
+	if(_M_owns)
+	  unlock();
+
+	unique_lock(std::move(__u)).swap(*this);
+
+	__u._M_device = 0;
+	__u._M_owns = false;
+
+	return *this;
+      }
+
+      void
+      lock()
+      {
+	if (!_M_device)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_owns)
+	  __throw_system_error(int(errc::resource_deadlock_would_occur));
+	else
+	  {
+	    _M_device->lock();
+	    _M_owns = true;
+	  }
+      }
+
+      bool
+      try_lock()
+      {
+	if (!_M_device)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_owns)
+	  __throw_system_error(int(errc::resource_deadlock_would_occur));
+	else
+	  {
+	    _M_owns = _M_device->try_lock();
+	    return _M_owns;
+	  }
+      }
+
+      template<typename _Clock, typename _Duration>
+	bool
+	try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
+	{
+	  if (!_M_device)
+	    __throw_system_error(int(errc::operation_not_permitted));
+	  else if (_M_owns)
+	    __throw_system_error(int(errc::resource_deadlock_would_occur));
+	  else
+	    {
+	      _M_owns = _M_device->try_lock_until(__atime);
+	      return _M_owns;
+	    }
+	}
+
+      template<typename _Rep, typename _Period>
+	bool
+	try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
+	{
+	  if (!_M_device)
+	    __throw_system_error(int(errc::operation_not_permitted));
+	  else if (_M_owns)
+	    __throw_system_error(int(errc::resource_deadlock_would_occur));
+	  else
+	    {
+	      _M_owns = _M_device->try_lock_for(__rtime);
+	      return _M_owns;
+	    }
+	 }
+
+      void
+      unlock()
+      {
+	if (!_M_owns)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_device)
+	  {
+	    _M_device->unlock();
+	    _M_owns = false;
+	  }
+      }
+
+      void
+      swap(unique_lock& __u)
+      {
+	std::swap(_M_device, __u._M_device);
+	std::swap(_M_owns, __u._M_owns);
+      }
+
+      mutex_type*
+      release()
+      {
+	mutex_type* __ret = _M_device;
+	_M_device = 0;
+	_M_owns = false;
+	return __ret;
+      }
+
+      bool
+      owns_lock() const
+      { return _M_owns; }
+
+      explicit operator bool() const
+      { return owns_lock(); }
+
+      mutex_type*
+      mutex() const
+      { return _M_device; }
+
+    private:
+      mutex_type*	_M_device;
+      bool		_M_owns; // XXX use atomic_bool
+    };
+
+  template<typename _Mutex>
+    inline void
+    swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y)
+    { __x.swap(__y); }
+
+  template<int _Idx>
+    struct __unlock_impl
+    {
+      template<typename... _Lock>
+	static void
+	__do_unlock(tuple<_Lock&...>& __locks)
+	{
+	  std::get<_Idx>(__locks).unlock();
+	  __unlock_impl<_Idx - 1>::__do_unlock(__locks);
+	}
+    };
+
+  template<>
+    struct __unlock_impl<-1>
+    {
+      template<typename... _Lock>
+	static void
+	__do_unlock(tuple<_Lock&...>&)
+	{ }
+    };
+
+  template<typename _Lock>
+    unique_lock<_Lock>
+    __try_to_lock(_Lock& __l)
+    { return unique_lock<_Lock>(__l, try_to_lock); }
+
+  template<int _Idx, bool _Continue = true>
+    struct __try_lock_impl
+    {
+      template<typename... _Lock>
+	static void
+	__do_try_lock(tuple<_Lock&...>& __locks, int& __idx)
+	{
+          __idx = _Idx;
+          auto __lock = __try_to_lock(std::get<_Idx>(__locks));
+          if (__lock.owns_lock())
+            {
+              __try_lock_impl<_Idx + 1, _Idx + 2 < sizeof...(_Lock)>::
+                __do_try_lock(__locks, __idx);
+              if (__idx == -1)
+                __lock.release();
+            }
+	}
+    };
+
+  template<int _Idx>
+    struct __try_lock_impl<_Idx, false>
+    {
+      template<typename... _Lock>
+	static void
+	__do_try_lock(tuple<_Lock&...>& __locks, int& __idx)
+	{
+          __idx = _Idx;
+          auto __lock = __try_to_lock(std::get<_Idx>(__locks));
+          if (__lock.owns_lock())
+            {
+              __idx = -1;
+              __lock.release();
+            }
+	}
+    };
+
+  /** @brief Generic try_lock.
+   *  @param __l1 Meets Mutex requirements (try_lock() may throw).
+   *  @param __l2 Meets Mutex requirements (try_lock() may throw).
+   *  @param __l3 Meets Mutex requirements (try_lock() may throw).
+   *  @return Returns -1 if all try_lock() calls return true. Otherwise returns
+   *          a 0-based index corresponding to the argument that returned false.
+   *  @post Either all arguments are locked, or none will be.
+   *
+   *  Sequentially calls try_lock() on each argument.
+   */
+  template<typename _Lock1, typename _Lock2, typename... _Lock3>
+    int
+    try_lock(_Lock1& __l1, _Lock2& __l2, _Lock3&... __l3)
+    {
+      int __idx;
+      auto __locks = std::tie(__l1, __l2, __l3...);
+      __try
+      { __try_lock_impl<0>::__do_try_lock(__locks, __idx); }
+      __catch(...)
+      { }
+      return __idx;
+    }
+
+  /** @brief Generic lock.
+   *  @param __l1 Meets Mutex requirements (try_lock() may throw).
+   *  @param __l2 Meets Mutex requirements (try_lock() may throw).
+   *  @param __l3 Meets Mutex requirements (try_lock() may throw).
+   *  @throw An exception thrown by an argument's lock() or try_lock() member.
+   *  @post All arguments are locked.
+   *
+   *  All arguments are locked via a sequence of calls to lock(), try_lock()
+   *  and unlock().  If the call exits via an exception any locks that were
+   *  obtained will be released.
+   */
+  template<typename _L1, typename _L2, typename ..._L3>
+    void
+    lock(_L1& __l1, _L2& __l2, _L3&... __l3)
+    {
+      while (true)
+        {
+          unique_lock<_L1> __first(__l1);
+          int __idx;
+          auto __locks = std::tie(__l2, __l3...);
+          __try_lock_impl<0, sizeof...(_L3)>::__do_try_lock(__locks, __idx);
+          if (__idx == -1)
+            {
+              __first.release();
+              return;
+            }
+        }
+    }
+
+  /// once_flag
+  struct once_flag
+  {
+  private:
+    typedef __gthread_once_t __native_type;
+    __native_type  _M_once;
+
+  public:
+    constexpr once_flag() : _M_once(__GTHREAD_ONCE_INIT) { }
+
+    once_flag(const once_flag&) = delete;
+    once_flag& operator=(const once_flag&) = delete;
+
+    template<typename _Callable, typename... _Args>
+      friend void
+      call_once(once_flag& __once, _Callable&& __f, _Args&&... __args);
+  };
+
+#ifdef _GLIBCXX_HAVE_TLS
+  extern __thread void* __once_callable;
+  extern __thread void (*__once_call)();
+
+  template<typename _Callable>
+    inline void
+    __once_call_impl()
+    {
+      (*(_Callable*)__once_callable)();
+    }
+#else
+  extern function<void()> __once_functor;
+
+  extern void
+  __set_once_functor_lock_ptr(unique_lock<mutex>*);
+
+  extern mutex&
+  __get_once_mutex();
+#endif
+
+  extern "C" void __once_proxy();
+
+  /// call_once
+  template<typename _Callable, typename... _Args>
+    void
+    call_once(once_flag& __once, _Callable&& __f, _Args&&... __args)
+    {
+#ifdef _GLIBCXX_HAVE_TLS
+      auto __bound_functor = std::bind<void>(std::forward<_Callable>(__f),
+          std::forward<_Args>(__args)...);
+      __once_callable = &__bound_functor;
+      __once_call = &__once_call_impl<decltype(__bound_functor)>;
+#else
+      unique_lock<mutex> __functor_lock(__get_once_mutex());
+      __once_functor = std::bind<void>(std::forward<_Callable>(__f),
+          std::forward<_Args>(__args)...);
+      __set_once_functor_lock_ptr(&__functor_lock);
+#endif
+
+      int __e = __gthread_once(&(__once._M_once), &__once_proxy);
+
+#ifndef _GLIBCXX_HAVE_TLS
+      if (__functor_lock)
+        __set_once_functor_lock_ptr(0);
+#endif
+
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+  // @} group mutexes
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_MUTEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/numeric b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/numeric
new file mode 100644
index 000000000..1acedf4e6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/numeric
@@ -0,0 +1,77 @@
+// <numeric> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/numeric
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_NUMERIC
+#define _GLIBCXX_NUMERIC 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_numeric.h>
+
+#ifdef _GLIBCXX_PARALLEL
+# include <parallel/numeric>
+#endif
+
+/**
+ * @defgroup numerics Numerics
+ *
+ * Components for performing numeric operations. Includes support for
+ * for complex number types, random number generation, numeric
+ * (n-at-a-time) arrays, generalized numeric algorithms, and special
+ * math functions.
+ */
+
+#endif /* _GLIBCXX_NUMERIC */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ostream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ostream
new file mode 100644
index 000000000..3004d4b69
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ostream
@@ -0,0 +1,590 @@
+// Output streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ostream
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.6.2  Output streams
+//
+
+#ifndef _GLIBCXX_OSTREAM
+#define _GLIBCXX_OSTREAM 1
+
+#pragma GCC system_header
+
+#include <ios>
+#include <bits/ostream_insert.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [27.6.2.1] Template class basic_ostream
+  /**
+   *  @brief  Controlling output.
+   *  @ingroup io
+   *
+   *  This is the base class for all output streams.  It provides text
+   *  formatting of all builtin types, and communicates with any class
+   *  derived from basic_streambuf to do the actual output.
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_ostream : virtual public basic_ios<_CharT, _Traits>
+    {
+    public:
+      // Types (inherited from basic_ios (27.4.4)):
+      typedef _CharT                     		char_type;
+      typedef typename _Traits::int_type 		int_type;
+      typedef typename _Traits::pos_type 		pos_type;
+      typedef typename _Traits::off_type 		off_type;
+      typedef _Traits                    		traits_type;
+      
+      // Non-standard Types:
+      typedef basic_streambuf<_CharT, _Traits> 		__streambuf_type;
+      typedef basic_ios<_CharT, _Traits>		__ios_type;
+      typedef basic_ostream<_CharT, _Traits>		__ostream_type;
+      typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >        
+      							__num_put_type;
+      typedef ctype<_CharT>           			__ctype_type;
+
+      // [27.6.2.2] constructor/destructor
+      /**
+       *  @brief  Base constructor.
+       *
+       *  This ctor is almost never called by the user directly, rather from
+       *  derived classes' initialization lists, which pass a pointer to
+       *  their own stream buffer.
+      */
+      explicit 
+      basic_ostream(__streambuf_type* __sb)
+      { this->init(__sb); }
+
+      /**
+       *  @brief  Base destructor.
+       *
+       *  This does very little apart from providing a virtual base dtor.
+      */
+      virtual 
+      ~basic_ostream() { }
+
+      // [27.6.2.3] prefix/suffix
+      class sentry;
+      friend class sentry;
+      
+      // [27.6.2.5] formatted output
+      // [27.6.2.5.3]  basic_ostream::operator<<
+      //@{
+      /**
+       *  @brief  Interface for manipulators.
+       *
+       *  Manipulators such as @c std::endl and @c std::hex use these
+       *  functions in constructs like "std::cout << std::endl".  For more
+       *  information, see the iomanip header.
+      */
+      __ostream_type&
+      operator<<(__ostream_type& (*__pf)(__ostream_type&))
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// DR 60. What is a formatted input function?
+	// The inserters for manipulators are *not* formatted output functions.
+	return __pf(*this);
+      }
+
+      __ostream_type&
+      operator<<(__ios_type& (*__pf)(__ios_type&))
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// DR 60. What is a formatted input function?
+	// The inserters for manipulators are *not* formatted output functions.
+	__pf(*this);
+	return *this;
+      }
+
+      __ostream_type&
+      operator<<(ios_base& (*__pf) (ios_base&))
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// DR 60. What is a formatted input function?
+	// The inserters for manipulators are *not* formatted output functions.
+	__pf(*this);
+	return *this;
+      }
+      //@}
+
+      // [27.6.2.5.2] arithmetic inserters
+      /**
+       *  @name Arithmetic Inserters
+       *
+       *  All the @c operator<< functions (aka <em>formatted output
+       *  functions</em>) have some common behavior.  Each starts by
+       *  constructing a temporary object of type std::basic_ostream::sentry.
+       *  This can have several effects, concluding with the setting of a
+       *  status flag; see the sentry documentation for more.
+       *
+       *  If the sentry status is good, the function tries to generate
+       *  whatever data is appropriate for the type of the argument.
+       *
+       *  If an exception is thrown during insertion, ios_base::badbit
+       *  will be turned on in the stream's error state without causing an
+       *  ios_base::failure to be thrown.  The original exception will then
+       *  be rethrown.
+      */
+      //@{
+      /**
+       *  @brief  Basic arithmetic inserters
+       *  @param  A variable of builtin type.
+       *  @return  @c *this if successful
+       *
+       *  These functions use the stream's current locale (specifically, the
+       *  @c num_get facet) to perform numeric formatting.
+      */
+      __ostream_type& 
+      operator<<(long __n)
+      { return _M_insert(__n); }
+      
+      __ostream_type& 
+      operator<<(unsigned long __n)
+      { return _M_insert(__n); }	
+
+      __ostream_type& 
+      operator<<(bool __n)
+      { return _M_insert(__n); }
+
+      __ostream_type& 
+      operator<<(short __n);
+
+      __ostream_type& 
+      operator<<(unsigned short __n)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 117. basic_ostream uses nonexistent num_put member functions.
+	return _M_insert(static_cast<unsigned long>(__n));
+      }
+
+      __ostream_type& 
+      operator<<(int __n);
+
+      __ostream_type& 
+      operator<<(unsigned int __n)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 117. basic_ostream uses nonexistent num_put member functions.
+	return _M_insert(static_cast<unsigned long>(__n));
+      }
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+      __ostream_type& 
+      operator<<(long long __n)
+      { return _M_insert(__n); }
+
+      __ostream_type& 
+      operator<<(unsigned long long __n)
+      { return _M_insert(__n); }	
+#endif
+
+      __ostream_type& 
+      operator<<(double __f)
+      { return _M_insert(__f); }
+
+      __ostream_type& 
+      operator<<(float __f)
+      {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 117. basic_ostream uses nonexistent num_put member functions.
+	return _M_insert(static_cast<double>(__f));
+      }
+
+      __ostream_type& 
+      operator<<(long double __f)
+      { return _M_insert(__f); }
+
+      __ostream_type& 
+      operator<<(const void* __p)
+      { return _M_insert(__p); }
+
+      /**
+       *  @brief  Extracting from another streambuf.
+       *  @param  sb  A pointer to a streambuf
+       *
+       *  This function behaves like one of the basic arithmetic extractors,
+       *  in that it also constructs a sentry object and has the same error
+       *  handling behavior.
+       *
+       *  If @a sb is NULL, the stream will set failbit in its error state.
+       *
+       *  Characters are extracted from @a sb and inserted into @c *this
+       *  until one of the following occurs:
+       *
+       *  - the input stream reaches end-of-file,
+       *  - insertion into the output sequence fails (in this case, the
+       *    character that would have been inserted is not extracted), or
+       *  - an exception occurs while getting a character from @a sb, which
+       *    sets failbit in the error state
+       *
+       *  If the function inserts no characters, failbit is set.
+      */
+      __ostream_type& 
+      operator<<(__streambuf_type* __sb);
+      //@}
+
+      // [27.6.2.6] unformatted output functions
+      /**
+       *  @name Unformatted Output Functions
+       *
+       *  All the unformatted output functions have some common behavior.
+       *  Each starts by constructing a temporary object of type
+       *  std::basic_ostream::sentry.  This has several effects, concluding
+       *  with the setting of a status flag; see the sentry documentation
+       *  for more.
+       *
+       *  If the sentry status is good, the function tries to generate
+       *  whatever data is appropriate for the type of the argument.
+       *
+       *  If an exception is thrown during insertion, ios_base::badbit
+       *  will be turned on in the stream's error state.  If badbit is on in
+       *  the stream's exceptions mask, the exception will be rethrown
+       *  without completing its actions.
+      */
+      //@{
+      /**
+       *  @brief  Simple insertion.
+       *  @param  c  The character to insert.
+       *  @return  *this
+       *
+       *  Tries to insert @a c.
+       *
+       *  @note  This function is not overloaded on signed char and
+       *         unsigned char.
+      */
+      __ostream_type& 
+      put(char_type __c);
+
+      // Core write functionality, without sentry.
+      void
+      _M_write(const char_type* __s, streamsize __n)
+      {
+	const streamsize __put = this->rdbuf()->sputn(__s, __n);
+	if (__put != __n)
+	  this->setstate(ios_base::badbit);
+      }
+
+      /**
+       *  @brief  Character string insertion.
+       *  @param  s  The array to insert.
+       *  @param  n  Maximum number of characters to insert.
+       *  @return  *this
+       *
+       *  Characters are copied from @a s and inserted into the stream until
+       *  one of the following happens:
+       *
+       *  - @a n characters are inserted
+       *  - inserting into the output sequence fails (in this case, badbit
+       *    will be set in the stream's error state)
+       *
+       *  @note  This function is not overloaded on signed char and
+       *         unsigned char.
+      */
+      __ostream_type& 
+      write(const char_type* __s, streamsize __n);
+      //@}
+
+      /**
+       *  @brief  Synchronizing the stream buffer.
+       *  @return  *this
+       *
+       *  If @c rdbuf() is a null pointer, changes nothing.
+       *
+       *  Otherwise, calls @c rdbuf()->pubsync(), and if that returns -1,
+       *  sets badbit.
+      */
+      __ostream_type& 
+      flush();
+
+      // [27.6.2.4] seek members
+      /**
+       *  @brief  Getting the current write position.
+       *  @return  A file position object.
+       *
+       *  If @c fail() is not false, returns @c pos_type(-1) to indicate
+       *  failure.  Otherwise returns @c rdbuf()->pubseekoff(0,cur,out).
+      */
+      pos_type 
+      tellp();
+
+      /**
+       *  @brief  Changing the current write position.
+       *  @param  pos  A file position object.
+       *  @return  *this
+       *
+       *  If @c fail() is not true, calls @c rdbuf()->pubseekpos(pos).  If
+       *  that function fails, sets failbit.
+      */
+      __ostream_type& 
+      seekp(pos_type);
+
+      /**
+       *  @brief  Changing the current write position.
+       *  @param  off  A file offset object.
+       *  @param  dir  The direction in which to seek.
+       *  @return  *this
+       *
+       *  If @c fail() is not true, calls @c rdbuf()->pubseekoff(off,dir).
+       *  If that function fails, sets failbit.
+      */
+       __ostream_type& 
+      seekp(off_type, ios_base::seekdir);
+      
+    protected:
+      basic_ostream()
+      { this->init(0); }
+
+      template<typename _ValueT>
+        __ostream_type&
+        _M_insert(_ValueT __v);
+    };
+
+  /**
+   *  @brief  Performs setup work for output streams.
+   *
+   *  Objects of this class are created before all of the standard
+   *  inserters are run.  It is responsible for <em>exception-safe prefix and
+   *  suffix operations</em>.
+  */
+  template <typename _CharT, typename _Traits>
+    class basic_ostream<_CharT, _Traits>::sentry
+    {
+      // Data Members.
+      bool 				_M_ok;
+      basic_ostream<_CharT, _Traits>& 	_M_os;
+      
+    public:
+      /**
+       *  @brief  The constructor performs preparatory work.
+       *  @param  os  The output stream to guard.
+       *
+       *  If the stream state is good (@a os.good() is true), then if the
+       *  stream is tied to another output stream, @c is.tie()->flush()
+       *  is called to synchronize the output sequences.
+       *
+       *  If the stream state is still good, then the sentry state becomes
+       *  true (@a okay).
+      */
+      explicit
+      sentry(basic_ostream<_CharT, _Traits>& __os);
+
+      /**
+       *  @brief  Possibly flushes the stream.
+       *
+       *  If @c ios_base::unitbuf is set in @c os.flags(), and
+       *  @c std::uncaught_exception() is true, the sentry destructor calls
+       *  @c flush() on the output stream.
+      */
+      ~sentry()
+      {
+	// XXX MT
+	if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
+	  {
+	    // Can't call flush directly or else will get into recursive lock.
+	    if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
+	      _M_os.setstate(ios_base::badbit);
+	  }
+      }
+
+      /**
+       *  @brief  Quick status checking.
+       *  @return  The sentry state.
+       *
+       *  For ease of use, sentries may be converted to booleans.  The
+       *  return value is that of the sentry state (true == okay).
+      */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit
+#endif
+      operator bool() const
+      { return _M_ok; }
+    };
+
+  // [27.6.2.5.4] character insertion templates
+  //@{
+  /**
+   *  @brief  Character inserters
+   *  @param  out  An output stream.
+   *  @param  c  A character.
+   *  @return  out
+   *
+   *  Behaves like one of the formatted arithmetic inserters described in
+   *  std::basic_ostream.  After constructing a sentry object with good
+   *  status, this function inserts a single character and any required
+   *  padding (as determined by [22.2.2.2.2]).  @c out.width(0) is then
+   *  called.
+   *
+   *  If @a c is of type @c char and the character type of the stream is not
+   *  @c char, the character is widened before insertion.
+  */
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
+    { return __ostream_insert(__out, &__c, 1); }
+
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
+    { return (__out << __out.widen(__c)); }
+
+  // Specialization
+  template <class _Traits> 
+    inline basic_ostream<char, _Traits>&
+    operator<<(basic_ostream<char, _Traits>& __out, char __c)
+    { return __ostream_insert(__out, &__c, 1); }
+
+  // Signed and unsigned
+  template<class _Traits>
+    inline basic_ostream<char, _Traits>&
+    operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
+    { return (__out << static_cast<char>(__c)); }
+  
+  template<class _Traits>
+    inline basic_ostream<char, _Traits>&
+    operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
+    { return (__out << static_cast<char>(__c)); }
+  //@}
+  
+  //@{
+  /**
+   *  @brief  String inserters
+   *  @param  out  An output stream.
+   *  @param  s  A character string.
+   *  @return  out
+   *  @pre  @a s must be a non-NULL pointer
+   *
+   *  Behaves like one of the formatted arithmetic inserters described in
+   *  std::basic_ostream.  After constructing a sentry object with good
+   *  status, this function inserts @c traits::length(s) characters starting
+   *  at @a s, widened if necessary, followed by any required padding (as
+   *  determined by [22.2.2.2.2]).  @c out.width(0) is then called.
+  */
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
+    {
+      if (!__s)
+	__out.setstate(ios_base::badbit);
+      else
+	__ostream_insert(__out, __s,
+			 static_cast<streamsize>(_Traits::length(__s)));
+      return __out;
+    }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits> &
+    operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
+
+  // Partial specializations
+  template<class _Traits>
+    inline basic_ostream<char, _Traits>&
+    operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
+    {
+      if (!__s)
+	__out.setstate(ios_base::badbit);
+      else
+	__ostream_insert(__out, __s,
+			 static_cast<streamsize>(_Traits::length(__s)));
+      return __out;
+    }
+
+  // Signed and unsigned
+  template<class _Traits>
+    inline basic_ostream<char, _Traits>&
+    operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
+    { return (__out << reinterpret_cast<const char*>(__s)); }
+
+  template<class _Traits>
+    inline basic_ostream<char, _Traits> &
+    operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
+    { return (__out << reinterpret_cast<const char*>(__s)); }
+  //@}
+
+  // [27.6.2.7] standard basic_ostream manipulators
+  /**
+   *  @brief  Write a newline and flush the stream.
+   *
+   *  This manipulator is often mistakenly used when a simple newline is
+   *  desired, leading to poor buffering performance.  See
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25s02.html
+   *  for more on this subject.
+  */
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    endl(basic_ostream<_CharT, _Traits>& __os)
+    { return flush(__os.put(__os.widen('\n'))); }
+
+  /**
+   *  @brief  Write a null character into the output sequence.
+   *
+   *  <em>Null character</em> is @c CharT() by definition.  For CharT of @c char,
+   *  this correctly writes the ASCII @c NUL character string terminator.
+  */
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    ends(basic_ostream<_CharT, _Traits>& __os)
+    { return __os.put(_CharT()); }
+  
+  /**
+   *  @brief  Flushes the output stream.
+   *
+   *  This manipulator simply calls the stream's @c flush() member function.
+  */
+  template<typename _CharT, typename _Traits>
+    inline basic_ostream<_CharT, _Traits>& 
+    flush(basic_ostream<_CharT, _Traits>& __os)
+    { return __os.flush(); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  // [27.7.2.9] Rvalue stream insertion
+  /**
+   *  @brief  Generic inserter for rvalue stream
+   *  @param  os  An input stream.
+   *  @param  x  A reference to the object being inserted.
+   *  @return  os
+   *
+   *  This is just a forwarding function to allow insertion to
+   *  rvalue streams since they won't bind to the inserter functions
+   *  that take an lvalue reference.
+  */
+  template<typename _CharT, typename _Traits, typename _Tp>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
+    { return (__os << __x); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/ostream.tcc>
+
+#endif	/* _GLIBCXX_OSTREAM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/queue b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/queue
new file mode 100644
index 000000000..abf984212
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/queue
@@ -0,0 +1,67 @@
+// <queue> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/queue
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_QUEUE
+#define _GLIBCXX_QUEUE 1
+
+#pragma GCC system_header
+
+#include <deque>
+#include <vector>
+#include <bits/stl_heap.h>
+#include <bits/stl_function.h>
+#include <bits/stl_queue.h>
+
+#endif /* _GLIBCXX_QUEUE */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/random b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/random
new file mode 100644
index 000000000..59aed8ef9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/random
@@ -0,0 +1,57 @@
+// <random> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/random
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_RANDOM
+#define _GLIBCXX_RANDOM 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+#include <iosfwd>
+#include <limits>
+#include <debug/debug.h>
+#include <type_traits>
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+#include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
+#include <bits/random.h>
+#include <bits/random.tcc>
+
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_RANDOM
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ratio b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ratio
new file mode 100644
index 000000000..17d28a10f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/ratio
@@ -0,0 +1,393 @@
+// ratio -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the 
+// terms of the GNU General Public License as published by the 
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/ratio
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_RATIO
+#define _GLIBCXX_RATIO 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <type_traits>
+#include <cstdint>
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup ratio Rational Arithmetic
+   * @ingroup utilities
+   *
+   * Compile time representation of finite rational numbers.
+   * @{
+   */
+
+  template<intmax_t _Pn>
+    struct __static_sign
+    : integral_constant<intmax_t, (_Pn < 0) ? -1 : 1>
+    { };
+
+  template<intmax_t _Pn>
+    struct __static_abs
+    : integral_constant<intmax_t, _Pn * __static_sign<_Pn>::value>
+    { };
+
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __static_gcd;
+ 
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __static_gcd
+    : __static_gcd<_Qn, (_Pn % _Qn)>
+    { };
+
+  template<intmax_t _Pn>
+    struct __static_gcd<_Pn, 0>
+    : integral_constant<intmax_t, __static_abs<_Pn>::value>
+    { };
+
+  template<intmax_t _Qn>
+    struct __static_gcd<0, _Qn>
+    : integral_constant<intmax_t, __static_abs<_Qn>::value>
+    { };
+
+  // Let c = 2^(half # of bits in an intmax_t)
+  // then we find a1, a0, b1, b0 s.t. N = a1*c + a0, M = b1*c + b0
+  // The multiplication of N and M becomes,
+  // N * M = (a1 * b1)c^2 + (a0 * b1 + b0 * a1)c + a0 * b0
+  // Multiplication is safe if each term and the sum of the terms
+  // is representable by intmax_t.
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __safe_multiply
+    {
+    private:
+      static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4);
+
+      static const uintmax_t __a0 = __static_abs<_Pn>::value % __c;
+      static const uintmax_t __a1 = __static_abs<_Pn>::value / __c;
+      static const uintmax_t __b0 = __static_abs<_Qn>::value % __c;
+      static const uintmax_t __b1 = __static_abs<_Qn>::value / __c;
+
+      static_assert(__a1 == 0 || __b1 == 0, 
+        "overflow in multiplication");
+      static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 
+        "overflow in multiplication");
+      static_assert(__b0 * __a0 <= __INTMAX_MAX__, 
+        "overflow in multiplication");
+      static_assert((__a0 * __b1 + __b0 * __a1) * __c <= 
+        __INTMAX_MAX__ -  __b0 * __a0, "overflow in multiplication");
+
+    public:
+      static const intmax_t value = _Pn * _Qn;
+    };
+
+  // Helpers for __safe_add
+  template<intmax_t _Pn, intmax_t _Qn, bool>
+    struct __add_overflow_check_impl
+    : integral_constant<bool, (_Pn <= __INTMAX_MAX__ - _Qn)>
+    { };
+
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __add_overflow_check_impl<_Pn, _Qn, false>
+    : integral_constant<bool, (_Pn >= -__INTMAX_MAX__ - _Qn)>
+    { };
+
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __add_overflow_check
+    : __add_overflow_check_impl<_Pn, _Qn, (_Qn >= 0)>
+    { };
+
+  template<intmax_t _Pn, intmax_t _Qn>
+    struct __safe_add
+    {
+      static_assert(__add_overflow_check<_Pn, _Qn>::value != 0, 
+        "overflow in addition");
+
+      static const intmax_t value = _Pn + _Qn;
+    };
+
+  /**
+   *  @brief Provides compile-time rational arithmetic.
+   *
+   *  This class template represents any finite rational number with a
+   *  numerator and denominator representable by compile-time constants of
+   *  type intmax_t. The ratio is simplified when instantiated.
+   *
+   *  For example:
+   *  @code
+   *    std::ratio<7,-21>::num == -1;
+   *    std::ratio<7,-21>::den == 3;
+   *  @endcode
+   *  
+  */
+  template<intmax_t _Num, intmax_t _Den = 1>
+    struct ratio
+    {
+      static_assert(_Den != 0, "denominator cannot be zero");
+      static_assert(_Num >= -__INTMAX_MAX__ && _Den >= -__INTMAX_MAX__,
+		    "out of range");
+
+      // Note: sign(N) * abs(N) == N
+      static constexpr intmax_t num =
+        _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value;
+
+      static constexpr intmax_t den =
+        __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value;
+
+      typedef ratio<num, den> type;
+    };
+
+  template<intmax_t _Num, intmax_t _Den>
+    constexpr intmax_t ratio<_Num, _Den>::num;
+
+  template<intmax_t _Num, intmax_t _Den>
+    constexpr intmax_t ratio<_Num, _Den>::den;
+
+  /// ratio_add
+  template<typename _R1, typename _R2>
+    struct ratio_add
+    {
+    private:
+      static constexpr intmax_t __gcd =
+        __static_gcd<_R1::den, _R2::den>::value;
+      static constexpr intmax_t __n = __safe_add<
+        __safe_multiply<_R1::num, (_R2::den / __gcd)>::value,
+        __safe_multiply<_R2::num, (_R1::den / __gcd)>::value>::value;
+
+      // The new numerator may have common factors with the denominator,
+      // but they have to also be factors of __gcd.
+      static constexpr intmax_t __gcd2 = __static_gcd<__n, __gcd>::value;
+      
+    public:
+      typedef ratio<__n / __gcd2,
+        __safe_multiply<_R1::den / __gcd2, _R2::den / __gcd>::value> type;
+
+      static constexpr intmax_t num = type::num;
+      static constexpr intmax_t den = type::den;
+    };
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_add<_R1, _R2>::num;
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_add<_R1, _R2>::den;
+
+  /// ratio_subtract
+  template<typename _R1, typename _R2>
+    struct ratio_subtract
+    {
+      typedef typename ratio_add<
+        _R1,
+        ratio<-_R2::num, _R2::den>>::type type;
+
+      static constexpr intmax_t num = type::num;
+      static constexpr intmax_t den = type::den;
+    };
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_subtract<_R1, _R2>::num;
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_subtract<_R1, _R2>::den;
+
+  /// ratio_multiply
+  template<typename _R1, typename _R2>
+    struct ratio_multiply
+    {
+    private:
+      static const intmax_t __gcd1 =
+        __static_gcd<_R1::num, _R2::den>::value;
+      static const intmax_t __gcd2 =
+        __static_gcd<_R2::num, _R1::den>::value;
+
+    public:
+      typedef ratio<
+        __safe_multiply<(_R1::num / __gcd1),
+                        (_R2::num / __gcd2)>::value,
+        __safe_multiply<(_R1::den / __gcd2),
+                        (_R2::den / __gcd1)>::value> type;
+
+      static constexpr intmax_t num = type::num;
+      static constexpr intmax_t den = type::den;
+    };
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_multiply<_R1, _R2>::num;
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_multiply<_R1, _R2>::den;
+
+  /// ratio_divide
+  template<typename _R1, typename _R2>
+    struct ratio_divide
+    {
+      static_assert(_R2::num != 0, "division by 0");
+
+      typedef typename ratio_multiply<
+        _R1,
+        ratio<_R2::den, _R2::num>>::type type;
+
+      static constexpr intmax_t num = type::num;
+      static constexpr intmax_t den = type::den;
+    };
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_divide<_R1, _R2>::num;
+
+  template<typename _R1, typename _R2>
+    constexpr intmax_t ratio_divide<_R1, _R2>::den;
+
+  /// ratio_equal
+  template<typename _R1, typename _R2>
+    struct ratio_equal
+    : integral_constant<bool, _R1::num == _R2::num && _R1::den == _R2::den>
+    { };
+  
+  /// ratio_not_equal
+  template<typename _R1, typename _R2>
+    struct ratio_not_equal
+    : integral_constant<bool, !ratio_equal<_R1, _R2>::value>
+    { };
+
+  // 0 <= _Ri < 1
+  // If one is 0, conclude
+  // Otherwise, x < y iff 1/y < 1/x
+  template<typename _R1, typename _R2>
+    struct __ratio_less_impl_2;
+
+  // _Ri > 0
+  // Compare the integral parts, and remove them if they are equal
+  template<typename _R1, typename _R2, intmax_t __q1 = _R1::num / _R1::den,
+           intmax_t __q2 = _R2::num / _R2::den, bool __eq = (__q1 == __q2)>
+    struct __ratio_less_impl_1
+    : __ratio_less_impl_2<ratio<_R1::num % _R1::den, _R1::den>,
+           ratio<_R2::num % _R2::den, _R2::den> >::type
+    { }; 
+
+  template<typename _R1, typename _R2, intmax_t __q1, intmax_t __q2>
+    struct __ratio_less_impl_1<_R1, _R2, __q1, __q2, false>
+    : integral_constant<bool, (__q1 < __q2) >
+    { };
+
+  template<typename _R1, typename _R2>
+    struct __ratio_less_impl_2
+    : __ratio_less_impl_1<ratio<_R2::den, _R2::num>,
+           ratio<_R1::den, _R1::num> >::type
+    { }; 
+
+  template<intmax_t __d1, typename _R2>
+    struct __ratio_less_impl_2<ratio<0, __d1>, _R2>
+    : integral_constant<bool, true>
+    { }; 
+
+  template<typename _R1, intmax_t __d2>
+    struct __ratio_less_impl_2<_R1, ratio<0, __d2> >
+    : integral_constant<bool, false>
+    { }; 
+
+  template<intmax_t __d1, intmax_t __d2>
+    struct __ratio_less_impl_2<ratio<0, __d1>, ratio<0, __d2> >
+    : integral_constant<bool, false>
+    { }; 
+
+  template<typename _R1, typename _R2,
+	   bool = (_R1::num == 0 || _R2::num == 0
+		   || (__static_sign<_R1::num>::value
+		       != __static_sign<_R2::num>::value)),
+	   bool = (__static_sign<_R1::num>::value == -1
+		   && __static_sign<_R2::num>::value == -1)>
+    struct __ratio_less_impl
+    : __ratio_less_impl_1<_R1, _R2>::type
+    { };
+
+  template<typename _R1, typename _R2>
+    struct __ratio_less_impl<_R1, _R2, true, false>
+    : integral_constant<bool, _R1::num < _R2::num>
+    { };
+
+  template<typename _R1, typename _R2>
+    struct __ratio_less_impl<_R1, _R2, false, true>
+    : __ratio_less_impl_1<ratio<-_R2::num, _R2::den>,
+           ratio<-_R1::num, _R1::den> >::type
+    { };
+
+  /// ratio_less
+  // using a continued fraction expansion
+  template<typename _R1, typename _R2>
+    struct ratio_less
+    : __ratio_less_impl<_R1, _R2>::type
+    { };
+    
+  /// ratio_less_equal
+  template<typename _R1, typename _R2>
+    struct ratio_less_equal
+    : integral_constant<bool, !ratio_less<_R2, _R1>::value>
+    { };
+  
+  /// ratio_greater
+  template<typename _R1, typename _R2>
+    struct ratio_greater
+    : integral_constant<bool, ratio_less<_R2, _R1>::value>
+    { };
+
+  /// ratio_greater_equal
+  template<typename _R1, typename _R2>
+    struct ratio_greater_equal
+    : integral_constant<bool, !ratio_less<_R1, _R2>::value>
+    { };
+
+  typedef ratio<1,       1000000000000000000> atto;
+  typedef ratio<1,          1000000000000000> femto;
+  typedef ratio<1,             1000000000000> pico;
+  typedef ratio<1,                1000000000> nano;
+  typedef ratio<1,                   1000000> micro;
+  typedef ratio<1,                      1000> milli;
+  typedef ratio<1,                       100> centi;
+  typedef ratio<1,                        10> deci;
+  typedef ratio<                       10, 1> deca;
+  typedef ratio<                      100, 1> hecto;
+  typedef ratio<                     1000, 1> kilo;
+  typedef ratio<                  1000000, 1> mega;
+  typedef ratio<               1000000000, 1> giga;
+  typedef ratio<            1000000000000, 1> tera;
+  typedef ratio<         1000000000000000, 1> peta;
+  typedef ratio<      1000000000000000000, 1> exa;
+
+  // @} group ratio
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif //_GLIBCXX_USE_C99_STDINT_TR1
+
+#endif //__GXX_EXPERIMENTAL_CXX0X__
+
+#endif //_GLIBCXX_RATIO
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/regex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/regex
new file mode 100644
index 000000000..eabb84307
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/regex
@@ -0,0 +1,66 @@
+// <regex> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/regex
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_REGEX
+#define _GLIBCXX_REGEX 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <algorithm>
+#include <bitset>
+#include <functional>
+#ifdef _GLIBCXX_DEBUG
+# include <iosfwd>
+#endif
+#include <iterator>
+#include <locale>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <stack>
+#include <stdexcept>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include <bits/range_access.h>
+#include <bits/regex_constants.h>
+#include <bits/regex_error.h>
+#include <bits/regex_cursor.h>
+#include <bits/regex_nfa.h>
+#include <bits/regex_compiler.h>
+#include <bits/regex_grep_matcher.h>
+#include <bits/regex.h>
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_REGEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/set
new file mode 100644
index 000000000..52fcbaa21
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/set
@@ -0,0 +1,73 @@
+// <set> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/set
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_SET
+#define _GLIBCXX_SET 1
+
+#pragma GCC system_header
+
+#include <bits/stl_tree.h>
+#include <bits/stl_set.h>
+#include <bits/stl_multiset.h>
+#include <bits/range_access.h>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/set>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/set>
+#endif
+
+#endif /* _GLIBCXX_SET */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/sstream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/sstream
new file mode 100644
index 000000000..bf2862add
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/sstream
@@ -0,0 +1,582 @@
+// String based streams -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/sstream
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.7  String-based streams
+//
+
+#ifndef _GLIBCXX_SSTREAM
+#define _GLIBCXX_SSTREAM 1
+
+#pragma GCC system_header
+
+#include <istream>
+#include <ostream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [27.7.1] template class basic_stringbuf
+  /**
+   *  @brief  The actual work of input and output (for std::string).
+   *  @ingroup io
+   *
+   *  This class associates either or both of its input and output sequences
+   *  with a sequence of characters, which can be initialized from, or made
+   *  available as, a @c std::basic_string.  (Paraphrased from [27.7.1]/1.)
+   *
+   *  For this class, open modes (of type @c ios_base::openmode) have
+   *  @c in set if the input sequence can be read, and @c out set if the
+   *  output sequence can be written.
+  */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 251. basic_stringbuf missing allocator_type
+      typedef _Alloc				       	allocator_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      typedef basic_streambuf<char_type, traits_type>  	__streambuf_type;
+      typedef basic_string<char_type, _Traits, _Alloc> 	__string_type;
+      typedef typename __string_type::size_type		__size_type;
+
+    protected:
+      /// Place to stash in || out || in | out settings for current stringbuf.
+      ios_base::openmode 	_M_mode;
+
+      // Data Members:
+      __string_type 		_M_string;
+
+    public:
+      // Constructors:
+      /**
+       *  @brief  Starts with an empty string buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  The default constructor initializes the parent class using its
+       *  own default ctor.
+      */
+      explicit
+      basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)
+      : __streambuf_type(), _M_mode(__mode), _M_string()
+      { }
+
+      /**
+       *  @brief  Starts with an existing string buffer.
+       *  @param  str  A string to copy as a starting buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  This constructor initializes the parent class using its
+       *  own default ctor.
+      */
+      explicit
+      basic_stringbuf(const __string_type& __str,
+		      ios_base::openmode __mode = ios_base::in | ios_base::out)
+      : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size())
+      { _M_stringbuf_init(__mode); }
+
+      // Get and set:
+      /**
+       *  @brief  Copying out the string buffer.
+       *  @return  A copy of one of the underlying sequences.
+       *
+       *  <em>If the buffer is only created in input mode, the underlying
+       *  character sequence is equal to the input sequence; otherwise, it
+       *  is equal to the output sequence.</em> [27.7.1.2]/1
+      */
+      __string_type
+      str() const
+      {
+	__string_type __ret;
+	if (this->pptr())
+	  {
+	    // The current egptr() may not be the actual string end.
+	    if (this->pptr() > this->egptr())
+	      __ret = __string_type(this->pbase(), this->pptr());
+	    else
+ 	      __ret = __string_type(this->pbase(), this->egptr());
+	  }
+	else
+	  __ret = _M_string;
+	return __ret;
+      }
+
+      /**
+       *  @brief  Setting a new buffer.
+       *  @param  s  The string to use as a new sequence.
+       *
+       *  Deallocates any previous stored sequence, then copies @a s to
+       *  use as a new one.
+      */
+      void
+      str(const __string_type& __s)
+      {
+	// Cannot use _M_string = __s, since v3 strings are COW.
+	_M_string.assign(__s.data(), __s.size());
+	_M_stringbuf_init(_M_mode);
+      }
+
+    protected:
+      // Common initialization code goes here.
+      void
+      _M_stringbuf_init(ios_base::openmode __mode)
+      {
+	_M_mode = __mode;
+	__size_type __len = 0;
+	if (_M_mode & (ios_base::ate | ios_base::app))
+	  __len = _M_string.size();
+	_M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);
+      }
+
+      virtual streamsize
+      showmanyc()
+      { 
+	streamsize __ret = -1;
+	if (_M_mode & ios_base::in)
+	  {
+	    _M_update_egptr();
+	    __ret = this->egptr() - this->gptr();
+	  }
+	return __ret;
+      }
+
+      virtual int_type
+      underflow();
+
+      virtual int_type
+      pbackfail(int_type __c = traits_type::eof());
+
+      virtual int_type
+      overflow(int_type __c = traits_type::eof());
+
+      /**
+       *  @brief  Manipulates the buffer.
+       *  @param  s  Pointer to a buffer area.
+       *  @param  n  Size of @a s.
+       *  @return  @c this
+       *
+       *  If no buffer has already been created, and both @a s and @a n are
+       *  non-zero, then @c s is used as a buffer; see
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25s02.html
+       *  for more.
+      */
+      virtual __streambuf_type*
+      setbuf(char_type* __s, streamsize __n)
+      {
+	if (__s && __n >= 0)
+	  {
+	    // This is implementation-defined behavior, and assumes
+	    // that an external char_type array of length __n exists
+	    // and has been pre-allocated. If this is not the case,
+	    // things will quickly blow up.
+	    
+	    // Step 1: Destroy the current internal array.
+	    _M_string.clear();
+	    
+	    // Step 2: Use the external array.
+	    _M_sync(__s, __n, 0);
+	  }
+	return this;
+      }
+
+      virtual pos_type
+      seekoff(off_type __off, ios_base::seekdir __way,
+	      ios_base::openmode __mode = ios_base::in | ios_base::out);
+
+      virtual pos_type
+      seekpos(pos_type __sp,
+	      ios_base::openmode __mode = ios_base::in | ios_base::out);
+
+      // Internal function for correctly updating the internal buffer
+      // for a particular _M_string, due to initialization or re-sizing
+      // of an existing _M_string.
+      void
+      _M_sync(char_type* __base, __size_type __i, __size_type __o);
+
+      // Internal function for correctly updating egptr() to the actual
+      // string end.
+      void
+      _M_update_egptr()
+      {
+	const bool __testin = _M_mode & ios_base::in;
+	if (this->pptr() && this->pptr() > this->egptr())
+	  {
+	    if (__testin)
+	      this->setg(this->eback(), this->gptr(), this->pptr());
+	    else
+	      this->setg(this->pptr(), this->pptr(), this->pptr());
+	  }
+      }
+
+      // Works around the issue with pbump, part of the protected
+      // interface of basic_streambuf, taking just an int.
+      void
+      _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off);
+    };
+
+
+  // [27.7.2] Template class basic_istringstream
+  /**
+   *  @brief  Controlling input for std::string.
+   *  @ingroup io
+   *
+   *  This class supports reading from objects of type std::basic_string,
+   *  using the inherited functions from std::basic_istream.  To control
+   *  the associated sequence, an instance of std::basic_stringbuf is used,
+   *  which this page refers to as @c sb.
+  */
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    class basic_istringstream : public basic_istream<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 251. basic_stringbuf missing allocator_type
+      typedef _Alloc				       	allocator_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard types:
+      typedef basic_string<_CharT, _Traits, _Alloc> 	__string_type;
+      typedef basic_stringbuf<_CharT, _Traits, _Alloc> 	__stringbuf_type;
+      typedef basic_istream<char_type, traits_type>	__istream_type;
+
+    private:
+      __stringbuf_type	_M_stringbuf;
+
+    public:
+      // Constructors:
+      /**
+       *  @brief  Default constructor starts with an empty string buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  @c ios_base::in is automatically included in @a mode.
+       *
+       *  Initializes @c sb using @c mode|in, and passes @c &sb to the base
+       *  class initializer.  Does not allocate any buffer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_istringstream(ios_base::openmode __mode = ios_base::in)
+      : __istream_type(), _M_stringbuf(__mode | ios_base::in)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  Starts with an existing string buffer.
+       *  @param  str  A string to copy as a starting buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  @c ios_base::in is automatically included in @a mode.
+       *
+       *  Initializes @c sb using @a str and @c mode|in, and passes @c &sb
+       *  to the base class initializer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_istringstream(const __string_type& __str,
+			  ios_base::openmode __mode = ios_base::in)
+      : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The buffer is deallocated by the stringbuf object, not the
+       *  formatting stream.
+      */
+      ~basic_istringstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_stringbuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+      */
+      __stringbuf_type*
+      rdbuf() const
+      { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+
+      /**
+       *  @brief  Copying out the string buffer.
+       *  @return  @c rdbuf()->str()
+      */
+      __string_type
+      str() const
+      { return _M_stringbuf.str(); }
+
+      /**
+       *  @brief  Setting a new buffer.
+       *  @param  s  The string to use as a new sequence.
+       *
+       *  Calls @c rdbuf()->str(s).
+      */
+      void
+      str(const __string_type& __s)
+      { _M_stringbuf.str(__s); }
+    };
+
+
+  // [27.7.3] Template class basic_ostringstream
+  /**
+   *  @brief  Controlling output for std::string.
+   *  @ingroup io
+   *
+   *  This class supports writing to objects of type std::basic_string,
+   *  using the inherited functions from std::basic_ostream.  To control
+   *  the associated sequence, an instance of std::basic_stringbuf is used,
+   *  which this page refers to as @c sb.
+  */
+  template <typename _CharT, typename _Traits, typename _Alloc>
+    class basic_ostringstream : public basic_ostream<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 251. basic_stringbuf missing allocator_type
+      typedef _Alloc				       	allocator_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard types:
+      typedef basic_string<_CharT, _Traits, _Alloc> 	__string_type;
+      typedef basic_stringbuf<_CharT, _Traits, _Alloc> 	__stringbuf_type;
+      typedef basic_ostream<char_type, traits_type>	__ostream_type;
+
+    private:
+      __stringbuf_type	_M_stringbuf;
+
+    public:
+      // Constructors/destructor:
+      /**
+       *  @brief  Default constructor starts with an empty string buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  @c ios_base::out is automatically included in @a mode.
+       *
+       *  Initializes @c sb using @c mode|out, and passes @c &sb to the base
+       *  class initializer.  Does not allocate any buffer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_ostringstream(ios_base::openmode __mode = ios_base::out)
+      : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  Starts with an existing string buffer.
+       *  @param  str  A string to copy as a starting buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  @c ios_base::out is automatically included in @a mode.
+       *
+       *  Initializes @c sb using @a str and @c mode|out, and passes @c &sb
+       *  to the base class initializer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_ostringstream(const __string_type& __str,
+			  ios_base::openmode __mode = ios_base::out)
+      : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The buffer is deallocated by the stringbuf object, not the
+       *  formatting stream.
+      */
+      ~basic_ostringstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_stringbuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+      */
+      __stringbuf_type*
+      rdbuf() const
+      { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+
+      /**
+       *  @brief  Copying out the string buffer.
+       *  @return  @c rdbuf()->str()
+      */
+      __string_type
+      str() const
+      { return _M_stringbuf.str(); }
+
+      /**
+       *  @brief  Setting a new buffer.
+       *  @param  s  The string to use as a new sequence.
+       *
+       *  Calls @c rdbuf()->str(s).
+      */
+      void
+      str(const __string_type& __s)
+      { _M_stringbuf.str(__s); }
+    };
+
+
+  // [27.7.4] Template class basic_stringstream
+  /**
+   *  @brief  Controlling input and output for std::string.
+   *  @ingroup io
+   *
+   *  This class supports reading from and writing to objects of type
+   *  std::basic_string, using the inherited functions from
+   *  std::basic_iostream.  To control the associated sequence, an instance
+   *  of std::basic_stringbuf is used, which this page refers to as @c sb.
+  */
+  template <typename _CharT, typename _Traits, typename _Alloc>
+    class basic_stringstream : public basic_iostream<_CharT, _Traits>
+    {
+    public:
+      // Types:
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 251. basic_stringbuf missing allocator_type
+      typedef _Alloc				       	allocator_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+
+      // Non-standard Types:
+      typedef basic_string<_CharT, _Traits, _Alloc> 	__string_type;
+      typedef basic_stringbuf<_CharT, _Traits, _Alloc> 	__stringbuf_type;
+      typedef basic_iostream<char_type, traits_type>	__iostream_type;
+
+    private:
+      __stringbuf_type	_M_stringbuf;
+
+    public:
+      // Constructors/destructors
+      /**
+       *  @brief  Default constructor starts with an empty string buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  Initializes @c sb using @c mode, and passes @c &sb to the base
+       *  class initializer.  Does not allocate any buffer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)
+      : __iostream_type(), _M_stringbuf(__m)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  Starts with an existing string buffer.
+       *  @param  str  A string to copy as a starting buffer.
+       *  @param  mode  Whether the buffer can read, or write, or both.
+       *
+       *  Initializes @c sb using @a str and @c mode, and passes @c &sb
+       *  to the base class initializer.
+       *
+       *  That's a lie.  We initialize the base class with NULL, because the
+       *  string class does its own memory management.
+      */
+      explicit
+      basic_stringstream(const __string_type& __str,
+			 ios_base::openmode __m = ios_base::out | ios_base::in)
+      : __iostream_type(), _M_stringbuf(__str, __m)
+      { this->init(&_M_stringbuf); }
+
+      /**
+       *  @brief  The destructor does nothing.
+       *
+       *  The buffer is deallocated by the stringbuf object, not the
+       *  formatting stream.
+      */
+      ~basic_stringstream()
+      { }
+
+      // Members:
+      /**
+       *  @brief  Accessing the underlying buffer.
+       *  @return  The current basic_stringbuf buffer.
+       *
+       *  This hides both signatures of std::basic_ios::rdbuf().
+      */
+      __stringbuf_type*
+      rdbuf() const
+      { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+
+      /**
+       *  @brief  Copying out the string buffer.
+       *  @return  @c rdbuf()->str()
+      */
+      __string_type
+      str() const
+      { return _M_stringbuf.str(); }
+
+      /**
+       *  @brief  Setting a new buffer.
+       *  @param  s  The string to use as a new sequence.
+       *
+       *  Calls @c rdbuf()->str(s).
+      */
+      void
+      str(const __string_type& __s)
+      { _M_stringbuf.str(__s); }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/sstream.tcc>
+
+#endif /* _GLIBCXX_SSTREAM */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stack b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stack
new file mode 100644
index 000000000..4ee2c72a7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stack
@@ -0,0 +1,64 @@
+// <stack> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/stack
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_STACK
+#define _GLIBCXX_STACK 1
+
+#pragma GCC system_header
+
+#include <deque>
+#include <bits/stl_stack.h>
+
+#endif /* _GLIBCXX_STACK */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stdexcept b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stdexcept
new file mode 100644
index 000000000..a461795d7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/stdexcept
@@ -0,0 +1,159 @@
+// Standard exception classes  -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2005, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/stdexcept
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 19.1  Exception classes
+//
+
+#ifndef _GLIBCXX_STDEXCEPT
+#define _GLIBCXX_STDEXCEPT 1
+
+#pragma GCC system_header
+
+#include <exception>
+#include <string>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup exceptions
+   * @{
+   */
+
+  /** Logic errors represent problems in the internal logic of a program;
+   *  in theory, these are preventable, and even detectable before the
+   *  program runs (e.g., violations of class invariants).
+   *  @brief One of two subclasses of exception.
+   */
+  class logic_error : public exception 
+  {
+    string _M_msg;
+
+  public:
+    /** Takes a character string describing the error.  */
+    explicit 
+    logic_error(const string& __arg);
+
+    virtual ~logic_error() throw();
+
+    /** Returns a C-style character string describing the general cause of
+     *  the current error (the same string passed to the ctor).  */
+    virtual const char* 
+    what() const throw();
+  };
+
+  /** Thrown by the library, or by you, to report domain errors (domain in
+   *  the mathematical sense).  */
+  class domain_error : public logic_error 
+  {
+  public:
+    explicit domain_error(const string& __arg);
+    virtual ~domain_error() throw();
+  };
+
+  /** Thrown to report invalid arguments to functions.  */
+  class invalid_argument : public logic_error 
+  {
+  public:
+    explicit invalid_argument(const string& __arg);
+    virtual ~invalid_argument() throw();
+  };
+
+  /** Thrown when an object is constructed that would exceed its maximum
+   *  permitted size (e.g., a basic_string instance).  */
+  class length_error : public logic_error 
+  {
+  public:
+    explicit length_error(const string& __arg);
+    virtual ~length_error() throw();
+  };
+
+  /** This represents an argument whose value is not within the expected
+   *  range (e.g., boundary checks in basic_string).  */
+  class out_of_range : public logic_error 
+  {
+  public:
+    explicit out_of_range(const string& __arg);
+    virtual ~out_of_range() throw();
+  };
+
+  /** Runtime errors represent problems outside the scope of a program;
+   *  they cannot be easily predicted and can generally only be caught as
+   *  the program executes.
+   *  @brief One of two subclasses of exception.
+   */
+  class runtime_error : public exception 
+  {
+    string _M_msg;
+
+  public:
+    /** Takes a character string describing the error.  */
+    explicit 
+    runtime_error(const string& __arg);
+
+    virtual ~runtime_error() throw();
+
+    /** Returns a C-style character string describing the general cause of
+     *  the current error (the same string passed to the ctor).  */
+    virtual const char* 
+    what() const throw();
+  };
+
+  /** Thrown to indicate range errors in internal computations.  */
+  class range_error : public runtime_error 
+  {
+  public:
+    explicit range_error(const string& __arg);
+    virtual ~range_error() throw();
+  };
+
+  /** Thrown to indicate arithmetic overflow.  */
+  class overflow_error : public runtime_error 
+  {
+  public:
+    explicit overflow_error(const string& __arg);
+    virtual ~overflow_error() throw();
+  };
+
+  /** Thrown to indicate arithmetic underflow.  */
+  class underflow_error : public runtime_error 
+  {
+  public:
+    explicit underflow_error(const string& __arg);
+    virtual ~underflow_error() throw();
+  };
+
+  // @} group exceptions
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_STDEXCEPT */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/streambuf b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/streambuf
new file mode 100644
index 000000000..b46efec46
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/streambuf
@@ -0,0 +1,810 @@
+// Stream buffer classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/streambuf
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 27.5  Stream buffers
+//
+
+#ifndef _GLIBXX_STREAMBUF
+#define _GLIBXX_STREAMBUF 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <iosfwd>
+#include <bits/localefwd.h>
+#include <bits/ios_base.h>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _CharT, typename _Traits>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
+			  basic_streambuf<_CharT, _Traits>*, bool&);
+
+  /**
+   *  @brief  The actual work of input and output (interface).
+   *  @ingroup io
+   *
+   *  This is a base class.  Derived stream buffers each control a
+   *  pair of character sequences:  one for input, and one for output.
+   *
+   *  Section [27.5.1] of the standard describes the requirements and
+   *  behavior of stream buffer classes.  That section (three paragraphs)
+   *  is reproduced here, for simplicity and accuracy.
+   *
+   *  -# Stream buffers can impose various constraints on the sequences
+   *     they control.  Some constraints are:
+   *     - The controlled input sequence can be not readable.
+   *     - The controlled output sequence can be not writable.
+   *     - The controlled sequences can be associated with the contents of
+   *       other representations for character sequences, such as external
+   *       files.
+   *     - The controlled sequences can support operations @e directly to or
+   *       from associated sequences.
+   *     - The controlled sequences can impose limitations on how the
+   *       program can read characters from a sequence, write characters to
+   *       a sequence, put characters back into an input sequence, or alter
+   *       the stream position.
+   *     .
+   *  -# Each sequence is characterized by three pointers which, if non-null,
+   *     all point into the same @c charT array object.  The array object
+   *     represents, at any moment, a (sub)sequence of characters from the
+   *     sequence.  Operations performed on a sequence alter the values
+   *     stored in these pointers, perform reads and writes directly to or
+   *     from associated sequences, and alter <em>the stream position</em> and
+   *     conversion state as needed to maintain this subsequence relationship.
+   *     The three pointers are:
+   *     - the <em>beginning pointer</em>, or lowest element address in the
+   *       array (called @e xbeg here);
+   *     - the <em>next pointer</em>, or next element address that is a
+   *       current candidate for reading or writing (called @e xnext here);
+   *     - the <em>end pointer</em>, or first element address beyond the
+   *       end of the array (called @e xend here).
+   *     .
+   *  -# The following semantic constraints shall always apply for any set
+   *     of three pointers for a sequence, using the pointer names given
+   *     immediately above:
+   *     - If @e xnext is not a null pointer, then @e xbeg and @e xend shall
+   *       also be non-null pointers into the same @c charT array, as
+   *       described above; otherwise, @e xbeg and @e xend shall also be null.
+   *     - If @e xnext is not a null pointer and @e xnext < @e xend for an
+   *       output sequence, then a <em>write position</em> is available.
+   *       In this case, @e *xnext shall be assignable as the next element
+   *       to write (to put, or to store a character value, into the sequence).
+   *     - If @e xnext is not a null pointer and @e xbeg < @e xnext for an
+   *       input sequence, then a <em>putback position</em> is available.
+   *       In this case, @e xnext[-1] shall have a defined value and is the
+   *       next (preceding) element to store a character that is put back
+   *       into the input sequence.
+   *     - If @e xnext is not a null pointer and @e xnext< @e xend for an
+   *       input sequence, then a <em>read position</em> is available.
+   *       In this case, @e *xnext shall have a defined value and is the
+   *       next element to read (to get, or to obtain a character value,
+   *       from the sequence).
+  */
+  template<typename _CharT, typename _Traits>
+    class basic_streambuf 
+    {
+    public:
+      //@{
+      /**
+       *  These are standard types.  They permit a standardized way of
+       *  referring to names of (or names dependant on) the template
+       *  parameters, which are specific to the implementation.
+      */
+      typedef _CharT 					char_type;
+      typedef _Traits 					traits_type;
+      typedef typename traits_type::int_type 		int_type;
+      typedef typename traits_type::pos_type 		pos_type;
+      typedef typename traits_type::off_type 		off_type;
+      //@}
+
+      //@{
+      /// This is a non-standard type.
+      typedef basic_streambuf<char_type, traits_type>  	__streambuf_type;
+      //@}
+      
+      friend class basic_ios<char_type, traits_type>;
+      friend class basic_istream<char_type, traits_type>;
+      friend class basic_ostream<char_type, traits_type>;
+      friend class istreambuf_iterator<char_type, traits_type>;
+      friend class ostreambuf_iterator<char_type, traits_type>;
+
+      friend streamsize
+      __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
+
+      template<bool _IsMove, typename _CharT2>
+        friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 
+					       _CharT2*>::__type
+        __copy_move_a2(istreambuf_iterator<_CharT2>,
+		       istreambuf_iterator<_CharT2>, _CharT2*);
+
+      template<typename _CharT2>
+        friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+				  istreambuf_iterator<_CharT2> >::__type
+        find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+	     const _CharT2&);
+
+      template<typename _CharT2, typename _Traits2>
+        friend basic_istream<_CharT2, _Traits2>&
+        operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
+
+      template<typename _CharT2, typename _Traits2, typename _Alloc>
+        friend basic_istream<_CharT2, _Traits2>&
+        operator>>(basic_istream<_CharT2, _Traits2>&,
+		   basic_string<_CharT2, _Traits2, _Alloc>&);
+
+      template<typename _CharT2, typename _Traits2, typename _Alloc>
+        friend basic_istream<_CharT2, _Traits2>&
+        getline(basic_istream<_CharT2, _Traits2>&,
+		basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
+
+    protected:
+      //@{
+      /**
+       *  This is based on _IO_FILE, just reordered to be more consistent,
+       *  and is intended to be the most minimal abstraction for an
+       *  internal buffer.
+       *  -  get == input == read
+       *  -  put == output == write
+      */
+      char_type* 		_M_in_beg;     // Start of get area. 
+      char_type* 		_M_in_cur;     // Current read area. 
+      char_type* 		_M_in_end;     // End of get area. 
+      char_type* 		_M_out_beg;    // Start of put area. 
+      char_type* 		_M_out_cur;    // Current put area. 
+      char_type* 		_M_out_end;    // End of put area.
+
+      /// Current locale setting.
+      locale 			_M_buf_locale;	
+
+  public:
+      /// Destructor deallocates no buffer space.
+      virtual 
+      ~basic_streambuf() 
+      { }
+
+      // [27.5.2.2.1] locales
+      /**
+       *  @brief  Entry point for imbue().
+       *  @param  loc  The new locale.
+       *  @return  The previous locale.
+       *
+       *  Calls the derived imbue(loc).
+      */
+      locale 
+      pubimbue(const locale &__loc)
+      {
+	locale __tmp(this->getloc());
+	this->imbue(__loc);
+	_M_buf_locale = __loc;
+	return __tmp;
+      }
+
+      /**
+       *  @brief  Locale access.
+       *  @return  The current locale in effect.
+       *
+       *  If pubimbue(loc) has been called, then the most recent @c loc
+       *  is returned.  Otherwise the global locale in effect at the time
+       *  of construction is returned.
+      */
+      locale   
+      getloc() const
+      { return _M_buf_locale; } 
+
+      // [27.5.2.2.2] buffer management and positioning
+      //@{
+      /**
+       *  @brief  Entry points for derived buffer functions.
+       *
+       *  The public versions of @c pubfoo dispatch to the protected
+       *  derived @c foo member functions, passing the arguments (if any)
+       *  and returning the result unchanged.
+      */
+      __streambuf_type* 
+      pubsetbuf(char_type* __s, streamsize __n) 
+      { return this->setbuf(__s, __n); }
+
+      pos_type 
+      pubseekoff(off_type __off, ios_base::seekdir __way, 
+		 ios_base::openmode __mode = ios_base::in | ios_base::out)
+      { return this->seekoff(__off, __way, __mode); }
+
+      pos_type 
+      pubseekpos(pos_type __sp,
+		 ios_base::openmode __mode = ios_base::in | ios_base::out)
+      { return this->seekpos(__sp, __mode); }
+
+      int 
+      pubsync() { return this->sync(); }
+      //@}
+
+      // [27.5.2.2.3] get area
+      /**
+       *  @brief  Looking ahead into the stream.
+       *  @return  The number of characters available.
+       *
+       *  If a read position is available, returns the number of characters
+       *  available for reading before the buffer must be refilled.
+       *  Otherwise returns the derived @c showmanyc().
+      */
+      streamsize 
+      in_avail() 
+      { 
+	const streamsize __ret = this->egptr() - this->gptr();
+	return __ret ? __ret : this->showmanyc();
+      }
+
+      /**
+       *  @brief  Getting the next character.
+       *  @return  The next character, or eof.
+       *
+       *  Calls @c sbumpc(), and if that function returns
+       *  @c traits::eof(), so does this function.  Otherwise, @c sgetc().
+      */
+      int_type 
+      snextc()
+      {
+	int_type __ret = traits_type::eof();
+	if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 
+						       __ret), true))
+	  __ret = this->sgetc();
+	return __ret;
+      }
+
+      /**
+       *  @brief  Getting the next character.
+       *  @return  The next character, or eof.
+       *
+       *  If the input read position is available, returns that character
+       *  and increments the read pointer, otherwise calls and returns
+       *  @c uflow().
+      */
+      int_type 
+      sbumpc()
+      {
+	int_type __ret;
+	if (__builtin_expect(this->gptr() < this->egptr(), true))
+	  {
+	    __ret = traits_type::to_int_type(*this->gptr());
+	    this->gbump(1);
+	  }
+	else 
+	  __ret = this->uflow();
+	return __ret;
+      }
+
+      /**
+       *  @brief  Getting the next character.
+       *  @return  The next character, or eof.
+       *
+       *  If the input read position is available, returns that character,
+       *  otherwise calls and returns @c underflow().  Does not move the 
+       *  read position after fetching the character.
+      */
+      int_type 
+      sgetc()
+      {
+	int_type __ret;
+	if (__builtin_expect(this->gptr() < this->egptr(), true))
+	  __ret = traits_type::to_int_type(*this->gptr());
+	else 
+	  __ret = this->underflow();
+	return __ret;
+      }
+
+      /**
+       *  @brief  Entry point for xsgetn.
+       *  @param  s  A buffer area.
+       *  @param  n  A count.
+       *
+       *  Returns xsgetn(s,n).  The effect is to fill @a s[0] through
+       *  @a s[n-1] with characters from the input sequence, if possible.
+      */
+      streamsize 
+      sgetn(char_type* __s, streamsize __n)
+      { return this->xsgetn(__s, __n); }
+
+      // [27.5.2.2.4] putback
+      /**
+       *  @brief  Pushing characters back into the input stream.
+       *  @param  c  The character to push back.
+       *  @return  The previous character, if possible.
+       *
+       *  Similar to sungetc(), but @a c is pushed onto the stream
+       *  instead of <em>the previous character.</em> If successful,
+       *  the next character fetched from the input stream will be @a
+       *  c.
+      */
+      int_type 
+      sputbackc(char_type __c)
+      {
+	int_type __ret;
+	const bool __testpos = this->eback() < this->gptr();
+	if (__builtin_expect(!__testpos || 
+			     !traits_type::eq(__c, this->gptr()[-1]), false))
+	  __ret = this->pbackfail(traits_type::to_int_type(__c));
+	else 
+	  {
+	    this->gbump(-1);
+	    __ret = traits_type::to_int_type(*this->gptr());
+	  }
+	return __ret;
+      }
+
+      /**
+       *  @brief  Moving backwards in the input stream.
+       *  @return  The previous character, if possible.
+       *
+       *  If a putback position is available, this function decrements
+       *  the input pointer and returns that character.  Otherwise,
+       *  calls and returns pbackfail().  The effect is to @a unget
+       *  the last character @a gotten.
+      */
+      int_type 
+      sungetc()
+      {
+	int_type __ret;
+	if (__builtin_expect(this->eback() < this->gptr(), true))
+	  {
+	    this->gbump(-1);
+	    __ret = traits_type::to_int_type(*this->gptr());
+	  }
+	else 
+	  __ret = this->pbackfail();
+	return __ret;
+      }
+
+      // [27.5.2.2.5] put area
+      /**
+       *  @brief  Entry point for all single-character output functions.
+       *  @param  c  A character to output.
+       *  @return  @a c, if possible.
+       *
+       *  One of two public output functions.
+       *
+       *  If a write position is available for the output sequence (i.e.,
+       *  the buffer is not full), stores @a c in that position, increments
+       *  the position, and returns @c traits::to_int_type(c).  If a write
+       *  position is not available, returns @c overflow(c).
+      */
+      int_type 
+      sputc(char_type __c)
+      {
+	int_type __ret;
+	if (__builtin_expect(this->pptr() < this->epptr(), true))
+	  {
+	    *this->pptr() = __c;
+	    this->pbump(1);
+	    __ret = traits_type::to_int_type(__c);
+	  }
+	else
+	  __ret = this->overflow(traits_type::to_int_type(__c));
+	return __ret;
+      }
+
+      /**
+       *  @brief  Entry point for all single-character output functions.
+       *  @param  s  A buffer read area.
+       *  @param  n  A count.
+       *
+       *  One of two public output functions.
+       *
+       *
+       *  Returns xsputn(s,n).  The effect is to write @a s[0] through
+       *  @a s[n-1] to the output sequence, if possible.
+      */
+      streamsize 
+      sputn(const char_type* __s, streamsize __n)
+      { return this->xsputn(__s, __n); }
+
+    protected:
+      /**
+       *  @brief  Base constructor.
+       *
+       *  Only called from derived constructors, and sets up all the
+       *  buffer data to zero, including the pointers described in the
+       *  basic_streambuf class description.  Note that, as a result,
+       *  - the class starts with no read nor write positions available,
+       *  - this is not an error
+      */
+      basic_streambuf()
+      : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 
+      _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
+      _M_buf_locale(locale()) 
+      { }
+
+      // [27.5.2.3.1] get area access
+      //@{
+      /**
+       *  @brief  Access to the get area.
+       *
+       *  These functions are only available to other protected functions,
+       *  including derived classes.
+       *
+       *  - eback() returns the beginning pointer for the input sequence
+       *  - gptr() returns the next pointer for the input sequence
+       *  - egptr() returns the end pointer for the input sequence
+      */
+      char_type* 
+      eback() const { return _M_in_beg; }
+
+      char_type* 
+      gptr()  const { return _M_in_cur;  }
+
+      char_type* 
+      egptr() const { return _M_in_end; }
+      //@}
+
+      /**
+       *  @brief  Moving the read position.
+       *  @param  n  The delta by which to move.
+       *
+       *  This just advances the read position without returning any data.
+      */
+      void 
+      gbump(int __n) { _M_in_cur += __n; }
+
+      /**
+       *  @brief  Setting the three read area pointers.
+       *  @param  gbeg  A pointer.
+       *  @param  gnext  A pointer.
+       *  @param  gend  A pointer.
+       *  @post  @a gbeg == @c eback(), @a gnext == @c gptr(), and
+       *         @a gend == @c egptr()
+      */
+      void 
+      setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
+      {
+	_M_in_beg = __gbeg;
+	_M_in_cur = __gnext;
+	_M_in_end = __gend;
+      }
+
+      // [27.5.2.3.2] put area access
+      //@{
+      /**
+       *  @brief  Access to the put area.
+       *
+       *  These functions are only available to other protected functions,
+       *  including derived classes.
+       *
+       *  - pbase() returns the beginning pointer for the output sequence
+       *  - pptr() returns the next pointer for the output sequence
+       *  - epptr() returns the end pointer for the output sequence
+      */
+      char_type* 
+      pbase() const { return _M_out_beg; }
+
+      char_type* 
+      pptr() const { return _M_out_cur; }
+
+      char_type* 
+      epptr() const { return _M_out_end; }
+      //@}
+
+      /**
+       *  @brief  Moving the write position.
+       *  @param  n  The delta by which to move.
+       *
+       *  This just advances the write position without returning any data.
+      */
+      void 
+      pbump(int __n) { _M_out_cur += __n; }
+
+      /**
+       *  @brief  Setting the three write area pointers.
+       *  @param  pbeg  A pointer.
+       *  @param  pend  A pointer.
+       *  @post  @a pbeg == @c pbase(), @a pbeg == @c pptr(), and
+       *         @a pend == @c epptr()
+      */
+      void 
+      setp(char_type* __pbeg, char_type* __pend)
+      { 
+	_M_out_beg = _M_out_cur = __pbeg; 
+	_M_out_end = __pend;
+      }
+
+      // [27.5.2.4] virtual functions
+      // [27.5.2.4.1] locales
+      /**
+       *  @brief  Changes translations.
+       *  @param  loc  A new locale.
+       *
+       *  Translations done during I/O which depend on the current
+       *  locale are changed by this call.  The standard adds,
+       *  <em>Between invocations of this function a class derived
+       *  from streambuf can safely cache results of calls to locale
+       *  functions and to members of facets so obtained.</em>
+       *
+       *  @note  Base class version does nothing.
+      */
+      virtual void 
+      imbue(const locale&) 
+      { }
+
+      // [27.5.2.4.2] buffer management and positioning
+      /**
+       *  @brief  Manipulates the buffer.
+       *
+       *  Each derived class provides its own appropriate behavior.  See
+       *  the next-to-last paragraph of 
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25s02.html
+       *  for more on this function.
+       *
+       *  @note  Base class version does nothing, returns @c this.
+      */
+      virtual basic_streambuf<char_type,_Traits>* 
+      setbuf(char_type*, streamsize)
+      {	return this; }
+      
+      /**
+       *  @brief  Alters the stream positions.
+       *
+       *  Each derived class provides its own appropriate behavior.
+       *  @note  Base class version does nothing, returns a @c pos_type
+       *         that represents an invalid stream position.
+      */
+      virtual pos_type 
+      seekoff(off_type, ios_base::seekdir,
+	      ios_base::openmode /*__mode*/ = ios_base::in | ios_base::out)
+      { return pos_type(off_type(-1)); } 
+
+      /**
+       *  @brief  Alters the stream positions.
+       *
+       *  Each derived class provides its own appropriate behavior.
+       *  @note  Base class version does nothing, returns a @c pos_type
+       *         that represents an invalid stream position.
+      */
+      virtual pos_type 
+      seekpos(pos_type, 
+	      ios_base::openmode /*__mode*/ = ios_base::in | ios_base::out)
+      { return pos_type(off_type(-1)); } 
+
+      /**
+       *  @brief  Synchronizes the buffer arrays with the controlled sequences.
+       *  @return  -1 on failure.
+       *
+       *  Each derived class provides its own appropriate behavior,
+       *  including the definition of @a failure.
+       *  @note  Base class version does nothing, returns zero.
+      */
+      virtual int 
+      sync() { return 0; }
+
+      // [27.5.2.4.3] get area
+      /**
+       *  @brief  Investigating the data available.
+       *  @return  An estimate of the number of characters available in the
+       *           input sequence, or -1.
+       *
+       *  <em>If it returns a positive value, then successive calls to
+       *  @c underflow() will not return @c traits::eof() until at
+       *  least that number of characters have been supplied.  If @c
+       *  showmanyc() returns -1, then calls to @c underflow() or @c
+       *  uflow() will fail.</em> [27.5.2.4.3]/1
+       *
+       *  @note  Base class version does nothing, returns zero.
+       *  @note  The standard adds that <em>the intention is not only that the
+       *         calls [to underflow or uflow] will not return @c eof() but
+       *         that they will return immediately.</em>
+       *  @note  The standard adds that <em>the morphemes of @c showmanyc are
+       *         @b es-how-many-see, not @b show-manic.</em>
+      */
+      virtual streamsize 
+      showmanyc() { return 0; }
+
+      /**
+       *  @brief  Multiple character extraction.
+       *  @param  s  A buffer area.
+       *  @param  n  Maximum number of characters to assign.
+       *  @return  The number of characters assigned.
+       *
+       *  Fills @a s[0] through @a s[n-1] with characters from the input
+       *  sequence, as if by @c sbumpc().  Stops when either @a n characters
+       *  have been copied, or when @c traits::eof() would be copied.
+       *
+       *  It is expected that derived classes provide a more efficient
+       *  implementation by overriding this definition.
+      */
+      virtual streamsize 
+      xsgetn(char_type* __s, streamsize __n);
+
+      /**
+       *  @brief  Fetches more data from the controlled sequence.
+       *  @return  The first character from the <em>pending sequence</em>.
+       *
+       *  Informally, this function is called when the input buffer is
+       *  exhausted (or does not exist, as buffering need not actually be
+       *  done).  If a buffer exists, it is @a refilled.  In either case, the
+       *  next available character is returned, or @c traits::eof() to
+       *  indicate a null pending sequence.
+       *
+       *  For a formal definition of the pending sequence, see a good text
+       *  such as Langer & Kreft, or [27.5.2.4.3]/7-14.
+       *
+       *  A functioning input streambuf can be created by overriding only
+       *  this function (no buffer area will be used).  For an example, see
+       *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25.html
+       *
+       *  @note  Base class version does nothing, returns eof().
+      */
+      virtual int_type 
+      underflow()
+      { return traits_type::eof(); }
+
+      /**
+       *  @brief  Fetches more data from the controlled sequence.
+       *  @return  The first character from the <em>pending sequence</em>.
+       *
+       *  Informally, this function does the same thing as @c underflow(),
+       *  and in fact is required to call that function.  It also returns
+       *  the new character, like @c underflow() does.  However, this
+       *  function also moves the read position forward by one.
+      */
+      virtual int_type 
+      uflow() 
+      {
+	int_type __ret = traits_type::eof();
+	const bool __testeof = traits_type::eq_int_type(this->underflow(), 
+							__ret);
+	if (!__testeof)
+	  {
+	    __ret = traits_type::to_int_type(*this->gptr());
+	    this->gbump(1);
+	  }
+	return __ret;    
+      }
+
+      // [27.5.2.4.4] putback
+      /**
+       *  @brief  Tries to back up the input sequence.
+       *  @param  c  The character to be inserted back into the sequence.
+       *  @return  eof() on failure, <em>some other value</em> on success
+       *  @post  The constraints of @c gptr(), @c eback(), and @c pptr()
+       *         are the same as for @c underflow().
+       *
+       *  @note  Base class version does nothing, returns eof().
+      */
+      virtual int_type 
+      pbackfail(int_type /* __c */  = traits_type::eof())
+      { return traits_type::eof(); }
+
+      // Put area:
+      /**
+       *  @brief  Multiple character insertion.
+       *  @param  s  A buffer area.
+       *  @param  n  Maximum number of characters to write.
+       *  @return  The number of characters written.
+       *
+       *  Writes @a s[0] through @a s[n-1] to the output sequence, as if
+       *  by @c sputc().  Stops when either @a n characters have been
+       *  copied, or when @c sputc() would return @c traits::eof().
+       *
+       *  It is expected that derived classes provide a more efficient
+       *  implementation by overriding this definition.
+      */
+      virtual streamsize 
+      xsputn(const char_type* __s, streamsize __n);
+
+      /**
+       *  @brief  Consumes data from the buffer; writes to the
+       *          controlled sequence.
+       *  @param  c  An additional character to consume.
+       *  @return  eof() to indicate failure, something else (usually
+       *           @a c, or not_eof())
+       *
+       *  Informally, this function is called when the output buffer
+       *  is full (or does not exist, as buffering need not actually
+       *  be done).  If a buffer exists, it is @a consumed, with
+       *  <em>some effect</em> on the controlled sequence.
+       *  (Typically, the buffer is written out to the sequence
+       *  verbatim.)  In either case, the character @a c is also
+       *  written out, if @a c is not @c eof().
+       *
+       *  For a formal definition of this function, see a good text
+       *  such as Langer & Kreft, or [27.5.2.4.5]/3-7.
+       *
+       *  A functioning output streambuf can be created by overriding only
+       *  this function (no buffer area will be used).
+       *
+       *  @note  Base class version does nothing, returns eof().
+      */
+      virtual int_type 
+      overflow(int_type /* __c */ = traits_type::eof())
+      { return traits_type::eof(); }
+
+#if _GLIBCXX_USE_DEPRECATED
+    // Annex D.6
+    public:
+      /**
+       *  @brief  Tosses a character.
+       *
+       *  Advances the read pointer, ignoring the character that would have
+       *  been read.
+       *
+       *  See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html
+       */
+      void 
+      stossc() 
+      {
+	if (this->gptr() < this->egptr()) 
+	  this->gbump(1);
+	else 
+	  this->uflow();
+      }
+#endif
+
+      // Also used by specializations for char and wchar_t in src.
+      void 
+      __safe_gbump(streamsize __n) { _M_in_cur += __n; }
+
+      void
+      __safe_pbump(streamsize __n) { _M_out_cur += __n; }
+
+    private:
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // Side effect of DR 50. 
+      basic_streambuf(const __streambuf_type& __sb)
+      : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur), 
+      _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg), 
+      _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
+      _M_buf_locale(__sb._M_buf_locale) 
+      { }
+
+      __streambuf_type& 
+      operator=(const __streambuf_type&) { return *this; };
+    };
+
+  // Explicit specialization declarations, defined in src/streambuf.cc.
+  template<>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<char>* __sbin,
+			  basic_streambuf<char>* __sbout, bool& __ineof);
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
+			  basic_streambuf<wchar_t>* __sbout, bool& __ineof);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/streambuf.tcc>
+
+#endif /* _GLIBCXX_STREAMBUF */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/string b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/string
new file mode 100644
index 000000000..28933961a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/string
@@ -0,0 +1,57 @@
+// Components for manipulating sequences of characters -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+// 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/string
+ *  This is a Standard C++ Library header.
+ */
+
+//
+// ISO C++ 14882: 21  Strings library
+//
+
+#ifndef _GLIBCXX_STRING
+#define _GLIBCXX_STRING	1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stringfwd.h>
+#include <bits/char_traits.h>  // NB: In turn includes stl_algobase.h
+#include <bits/allocator.h>
+#include <bits/cpp_type_traits.h>
+#include <bits/localefwd.h>    // For operators >>, <<, and getline.
+#include <bits/ostream_insert.h>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/stl_iterator.h>
+#include <bits/stl_function.h> // For less
+#include <ext/numeric_traits.h> 
+#include <bits/stl_algobase.h> 
+#include <bits/range_access.h>
+#include <bits/basic_string.h>
+#include <bits/basic_string.tcc> 
+
+#endif /* _GLIBCXX_STRING */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/system_error b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/system_error
new file mode 100644
index 000000000..da09a7588
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/system_error
@@ -0,0 +1,376 @@
+// <system_error> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/system_error
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_SYSTEM_ERROR
+#define _GLIBCXX_SYSTEM_ERROR 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+#include <bits/error_constants.h>
+#include <iosfwd>
+#include <stdexcept>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  class error_code;
+  class error_condition;
+  class error_category;
+  class system_error;
+
+  /// is_error_code_enum
+  template<typename _Tp>
+    struct is_error_code_enum : public false_type { };
+
+  /// is_error_condition_enum
+  template<typename _Tp>
+    struct is_error_condition_enum : public false_type { };
+
+  template<> 
+    struct is_error_condition_enum<errc>
+    : public true_type { };
+
+
+  /// error_category
+  class error_category
+  {
+  protected:
+    error_category();
+
+  public:
+    virtual ~error_category();
+
+    error_category(const error_category&) = delete;
+    error_category& operator=(const error_category&) = delete;
+
+    virtual const char* 
+    name() const = 0;
+
+    virtual string 
+    message(int) const = 0;
+
+    virtual error_condition
+    default_error_condition(int __i) const;
+
+    virtual bool 
+    equivalent(int __i, const error_condition& __cond) const;
+
+    virtual bool 
+    equivalent(const error_code& __code, int __i) const;
+
+    bool 
+    operator<(const error_category& __other) const
+    { return less<const error_category*>()(this, &__other); }
+
+    bool 
+    operator==(const error_category& __other) const
+    { return this == &__other; }
+
+    bool 
+    operator!=(const error_category& __other) const
+    { return this != &__other; }
+  };
+
+  // DR 890.
+  _GLIBCXX_CONST const error_category& system_category() throw();
+  _GLIBCXX_CONST const error_category& generic_category() throw();
+
+  error_code make_error_code(errc);
+
+  template<typename _Tp>
+    struct hash;
+
+  /// error_code
+  // Implementation-specific error identification
+  struct error_code
+  {
+    error_code()
+    : _M_value(0), _M_cat(&system_category()) { }
+
+    error_code(int __v, const error_category& __cat)
+    : _M_value(__v), _M_cat(&__cat) { }
+
+    template<typename _ErrorCodeEnum>
+      error_code(_ErrorCodeEnum __e,
+      typename enable_if<is_error_code_enum<_ErrorCodeEnum>::value>::type* = 0)
+      { *this = make_error_code(__e); }
+
+    void 
+    assign(int __v, const error_category& __cat)
+    {
+      _M_value = __v;
+      _M_cat = &__cat; 
+    }
+
+    void 
+    clear()
+    { assign(0, system_category()); }
+
+    // DR 804.
+    template<typename _ErrorCodeEnum>
+      typename enable_if<is_error_code_enum<_ErrorCodeEnum>::value,
+			 error_code&>::type
+      operator=(_ErrorCodeEnum __e)
+      { return *this = make_error_code(__e); }
+
+    int
+    value() const { return _M_value; }
+      
+    const error_category&  
+    category() const { return *_M_cat; }
+
+    error_condition 
+    default_error_condition() const;
+
+    string 
+    message() const
+    { return category().message(value()); }
+
+    explicit operator bool() const
+    { return _M_value != 0 ? true : false; }
+
+    // DR 804.
+  private:
+    friend class hash<error_code>;
+
+    int            		_M_value;
+    const error_category* 	_M_cat;
+  };
+
+  // 19.4.2.6 non-member functions
+  inline error_code
+  make_error_code(errc __e)
+  { return error_code(static_cast<int>(__e), generic_category()); }
+
+  inline bool
+  operator<(const error_code& __lhs, const error_code& __rhs)
+  { 
+    return (__lhs.category() < __rhs.category()
+	    || (__lhs.category() == __rhs.category()
+		&& __lhs.value() < __rhs.value()));
+  }
+
+  template<typename _CharT, typename _Traits>
+    basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
+    { return (__os << __e.category().name() << ':' << __e.value()); }
+
+  error_condition make_error_condition(errc);
+
+  /// error_condition
+  // Portable error identification
+  struct error_condition 
+  {
+    error_condition()
+    : _M_value(0), _M_cat(&generic_category()) { }
+
+    error_condition(int __v, const error_category& __cat)     
+    : _M_value(__v), _M_cat(&__cat) { }
+
+    template<typename _ErrorConditionEnum>
+      error_condition(_ErrorConditionEnum __e,
+		      typename enable_if<is_error_condition_enum
+		                      <_ErrorConditionEnum>::value>::type* = 0)
+      { *this = make_error_condition(__e); }
+
+    void
+    assign(int __v, const error_category& __cat)
+    {
+      _M_value = __v;
+      _M_cat = &__cat;
+    }
+
+    // DR 804.
+    template<typename _ErrorConditionEnum>
+      typename enable_if<is_error_condition_enum
+			 <_ErrorConditionEnum>::value, error_condition&>::type
+      operator=(_ErrorConditionEnum __e)
+      { return *this = make_error_condition(__e); }
+
+    void 
+    clear()
+    { assign(0, generic_category()); }
+
+    // 19.4.3.4 observers
+    int 
+    value() const { return _M_value; }
+
+    const error_category&
+    category() const { return *_M_cat; }
+
+    string 
+    message() const
+    { return category().message(value()); }
+
+    explicit operator bool() const
+    { return _M_value != 0 ? true : false; }
+
+    // DR 804.
+  private:
+    int 			_M_value;
+    const error_category* 	_M_cat;
+  };
+
+  // 19.4.3.6 non-member functions
+  inline error_condition
+  make_error_condition(errc __e)
+  { return error_condition(static_cast<int>(__e), generic_category()); }
+
+  inline bool 
+  operator<(const error_condition& __lhs, const error_condition& __rhs)
+  {
+    return (__lhs.category() < __rhs.category()
+	    || (__lhs.category() == __rhs.category()
+		&& __lhs.value() < __rhs.value()));
+  }
+
+  // 19.4.4 Comparison operators
+  inline bool
+  operator==(const error_code& __lhs, const error_code& __rhs)
+  { return (__lhs.category() == __rhs.category()
+	    && __lhs.value() == __rhs.value()); }
+
+  inline bool
+  operator==(const error_code& __lhs, const error_condition& __rhs)
+  {
+    return (__lhs.category().equivalent(__lhs.value(), __rhs)
+	    || __rhs.category().equivalent(__lhs, __rhs.value()));
+  }
+
+  inline bool
+  operator==(const error_condition& __lhs, const error_code& __rhs)
+  {
+    return (__rhs.category().equivalent(__rhs.value(), __lhs)
+	    || __lhs.category().equivalent(__rhs, __lhs.value()));
+  }
+
+  inline bool
+  operator==(const error_condition& __lhs, const error_condition& __rhs)
+  {
+    return (__lhs.category() == __rhs.category()
+	    && __lhs.value() == __rhs.value());
+  }
+
+  inline bool
+  operator!=(const error_code& __lhs, const error_code& __rhs)
+  { return !(__lhs == __rhs); }
+
+  inline bool
+  operator!=(const error_code& __lhs, const error_condition& __rhs)
+  { return !(__lhs == __rhs); }
+
+  inline bool
+  operator!=(const error_condition& __lhs, const error_code& __rhs)
+  { return !(__lhs == __rhs); }
+
+  inline bool
+  operator!=(const error_condition& __lhs, const error_condition& __rhs)
+  { return !(__lhs == __rhs); }
+
+
+  /** 
+   *  @brief Thrown to indicate error code of underlying system.
+   *
+   *  @ingroup exceptions
+   */
+  class system_error : public std::runtime_error
+  {
+  private:
+    error_code 	_M_code;
+
+  public:
+    system_error(error_code __ec = error_code())
+    : runtime_error(__ec.message()), _M_code(__ec) { }
+
+    system_error(error_code __ec, const string& __what)
+    : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { }
+
+    /*
+     * TODO: Add const char* ctors to all exceptions.
+     *
+     * system_error(error_code __ec, const char* __what)
+     * : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { }
+     *
+     * system_error(int __v, const error_category& __ecat, const char* __what)
+     * : runtime_error(__what + (": " + __ec.message())),
+     *   _M_code(error_code(__v, __ecat)) { }
+     */
+
+    system_error(int __v, const error_category& __ecat)
+    : runtime_error(error_code(__v, __ecat).message()),
+      _M_code(__v, __ecat) { }
+
+    system_error(int __v, const error_category& __ecat, const string& __what)
+    : runtime_error(__what + ": " + error_code(__v, __ecat).message()),
+      _M_code(__v, __ecat) { }
+
+    virtual ~system_error() throw();
+
+    const error_code& 
+    code() const throw() { return _M_code; }
+  };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#ifndef _GLIBCXX_COMPATIBILITY_CXX0X
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // DR 1182.
+  /// std::hash specialization for error_code.
+  template<>
+    struct hash<error_code>
+    : public __hash_base<size_t, error_code>
+    {
+      size_t
+      operator()(const error_code& __e) const
+      {
+	const size_t __tmp = std::_Hash_impl::hash(__e._M_value);
+	return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp);
+      }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _GLIBCXX_COMPATIBILITY_CXX0X
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_SYSTEM_ERROR
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/thread b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/thread
new file mode 100644
index 000000000..de58e8141
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/thread
@@ -0,0 +1,301 @@
+// <thread> -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/thread
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_THREAD
+#define _GLIBCXX_THREAD 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <chrono>
+#include <functional>
+#include <memory>
+#include <mutex>
+#include <condition_variable>
+#include <bits/functexcept.h>
+#include <bits/functional_hash.h>
+#include <bits/gthr.h>
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup threads Threads
+   * @ingroup concurrency
+   *
+   * Classes for thread support.
+   * @{
+   */
+
+  /// thread
+  class thread
+  {
+  public:
+    typedef __gthread_t			native_handle_type;
+    struct _Impl_base;
+    typedef shared_ptr<_Impl_base>	__shared_base_type;
+
+    /// thread::id
+    class id
+    {
+      native_handle_type	_M_thread;
+
+    public:
+      id() : _M_thread() { }
+
+      explicit
+      id(native_handle_type __id) : _M_thread(__id) { }
+
+    private:
+      friend class thread;
+      friend class hash<thread::id>;
+
+      friend bool
+      operator==(thread::id __x, thread::id __y)
+      { return __gthread_equal(__x._M_thread, __y._M_thread); }
+
+      friend bool
+      operator<(thread::id __x, thread::id __y)
+      { return __x._M_thread < __y._M_thread; }
+
+      template<class _CharT, class _Traits>
+	friend basic_ostream<_CharT, _Traits>&
+	operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id);
+    };
+
+    // Simple base type that the templatized, derived class containing
+    // an arbitrary functor can be converted to and called.
+    struct _Impl_base
+    {
+      __shared_base_type	_M_this_ptr;
+
+      inline virtual ~_Impl_base();
+
+      virtual void _M_run() = 0;
+    };
+
+    template<typename _Callable>
+      struct _Impl : public _Impl_base
+      {
+	_Callable		_M_func;
+
+	_Impl(_Callable&& __f) : _M_func(std::forward<_Callable>(__f))
+	{ }
+
+	void
+	_M_run() { _M_func(); }
+      };
+
+  private:
+    id				_M_id;
+
+  public:
+    thread() = default;
+    thread(thread&) = delete;
+    thread(const thread&) = delete;
+
+    thread(thread&& __t)
+    { swap(__t); }
+
+    template<typename _Callable, typename... _Args>
+      explicit 
+      thread(_Callable&& __f, _Args&&... __args)
+      {
+        _M_start_thread(_M_make_routine(std::bind<void>(
+                std::forward<_Callable>(__f),
+                std::forward<_Args>(__args)...)));
+      }
+
+    ~thread()
+    {
+      if (joinable())
+	std::terminate();
+    }
+
+    thread& operator=(const thread&) = delete;
+
+    thread& operator=(thread&& __t)
+    {
+      if (joinable())
+	std::terminate();
+      swap(__t);
+      return *this;
+    }
+
+    void
+    swap(thread& __t)
+    { std::swap(_M_id, __t._M_id); }
+
+    bool
+    joinable() const
+    { return !(_M_id == id()); }
+
+    void
+    join();
+
+    void
+    detach();
+
+    thread::id
+    get_id() const
+    { return _M_id; }
+
+    /** @pre thread is joinable
+     */
+    native_handle_type
+    native_handle()
+    { return _M_id._M_thread; }
+
+    // Returns a value that hints at the number of hardware thread contexts.
+    static unsigned int
+    hardware_concurrency()
+    { return 0; }
+
+  private:
+    void
+    _M_start_thread(__shared_base_type);
+
+    template<typename _Callable>
+      shared_ptr<_Impl<_Callable>>
+      _M_make_routine(_Callable&& __f)
+      {
+	// Create and allocate full data structure, not base.
+	return make_shared<_Impl<_Callable>>(std::forward<_Callable>(__f));
+      }
+  };
+
+  inline thread::_Impl_base::~_Impl_base() = default;
+
+  inline void
+  swap(thread& __x, thread& __y)
+  { __x.swap(__y); }
+
+  inline bool
+  operator!=(thread::id __x, thread::id __y)
+  { return !(__x == __y); }
+
+  inline bool
+  operator<=(thread::id __x, thread::id __y)
+  { return !(__y < __x); }
+
+  inline bool
+  operator>(thread::id __x, thread::id __y)
+  { return __y < __x; }
+
+  inline bool
+  operator>=(thread::id __x, thread::id __y)
+  { return !(__x < __y); }
+
+  // DR 889.
+  /// std::hash specialization for thread::id.
+  template<>
+    struct hash<thread::id>
+    : public __hash_base<size_t, thread::id>
+    {
+      size_t
+      operator()(const thread::id& __id) const
+      { return std::_Hash_impl::hash(__id._M_thread); }
+    };
+
+  template<class _CharT, class _Traits>
+    inline basic_ostream<_CharT, _Traits>&
+    operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id)
+    {
+      if (__id == thread::id())
+	return __out << "thread::id of a non-executing thread";
+      else
+	return __out << __id._M_thread;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+  /** @namespace std::this_thread
+   *  @brief ISO C++ 0x entities sub namespace for thread.
+   *  30.2.2 Namespace this_thread.
+   */
+  namespace this_thread
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /// get_id
+    inline thread::id
+    get_id() { return thread::id(__gthread_self()); }
+
+#ifdef _GLIBCXX_USE_SCHED_YIELD
+    /// yield
+    inline void
+    yield()
+    { __gthread_yield(); }
+#endif
+
+#ifdef _GLIBCXX_USE_NANOSLEEP
+    /// sleep_until
+    template<typename _Clock, typename _Duration>
+      inline void
+      sleep_until(const chrono::time_point<_Clock, _Duration>& __atime)
+      { sleep_for(__atime - _Clock::now()); }
+
+    /// sleep_for
+    template<typename _Rep, typename _Period>
+      inline void
+      sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
+      {
+	chrono::seconds __s =
+	  chrono::duration_cast<chrono::seconds>(__rtime);
+
+	chrono::nanoseconds __ns =
+	  chrono::duration_cast<chrono::nanoseconds>(__rtime - __s);
+
+	__gthread_time_t __ts =
+	  {
+	    static_cast<std::time_t>(__s.count()),
+	    static_cast<long>(__ns.count())
+	  };
+
+	::nanosleep(&__ts, 0);
+      }
+#endif
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+
+  // @} group threads
+
+} // namespace
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_THREAD
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/tuple b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/tuple
new file mode 100644
index 000000000..fb452aeb4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/tuple
@@ -0,0 +1,808 @@
+// <tuple> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/tuple
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_TUPLE
+#define _GLIBCXX_TUPLE 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Adds a const reference to a non-reference type.
+  template<typename _Tp>
+    struct __add_c_ref
+    { typedef const _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_c_ref<_Tp&>
+    { typedef _Tp& type; };
+
+  // Adds a reference to a non-reference type.
+  template<typename _Tp>
+    struct __add_ref
+    { typedef _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_ref<_Tp&>
+    { typedef _Tp& type; };
+
+  template<std::size_t _Idx, typename _Head, bool _IsEmpty>
+    struct _Head_base;
+
+  template<std::size_t _Idx, typename _Head>
+    struct _Head_base<_Idx, _Head, true>
+    : public _Head
+    {
+      constexpr _Head_base()
+      : _Head() { }
+
+      constexpr _Head_base(const _Head& __h)
+      : _Head(__h) { }
+
+      template<typename _UHead>
+        _Head_base(_UHead&& __h)
+	: _Head(std::forward<_UHead>(__h)) { }
+
+      _Head&       _M_head()       { return *this; }
+      const _Head& _M_head() const { return *this; }
+    
+      void 
+      _M_swap_impl(_Head& __h)
+      {
+	using std::swap;
+	swap(__h, _M_head());
+      }
+    };
+
+  template<std::size_t _Idx, typename _Head>
+    struct _Head_base<_Idx, _Head, false>
+    {
+      constexpr _Head_base()
+      : _M_head_impl() { }
+
+      constexpr _Head_base(const _Head& __h)
+      : _M_head_impl(__h) { }
+
+      template<typename _UHead>
+        _Head_base(_UHead&& __h)
+	: _M_head_impl(std::forward<_UHead>(__h)) { }
+
+      _Head&       _M_head()       { return _M_head_impl; }
+      const _Head& _M_head() const { return _M_head_impl; }        
+
+      void
+      _M_swap_impl(_Head& __h)
+      { 
+	using std::swap;
+	swap(__h, _M_head());
+      }
+
+      _Head _M_head_impl; 
+    };
+
+  /**
+   * Contains the actual implementation of the @c tuple template, stored
+   * as a recursive inheritance hierarchy from the first element (most
+   * derived class) to the last (least derived class). The @c Idx
+   * parameter gives the 0-based index of the element stored at this
+   * point in the hierarchy; we use it to implement a constant-time
+   * get() operation.
+   */
+  template<std::size_t _Idx, typename... _Elements>
+    struct _Tuple_impl; 
+
+  /**
+   * Zero-element tuple implementation. This is the basis case for the 
+   * inheritance recursion.
+   */
+  template<std::size_t _Idx>
+    struct _Tuple_impl<_Idx>
+    { 
+    protected:
+      void _M_swap_impl(_Tuple_impl&) { /* no-op */ }
+    };
+
+  /**
+   * Recursive tuple implementation. Here we store the @c Head element
+   * and derive from a @c Tuple_impl containing the remaining elements
+   * (which contains the @c Tail).
+   */
+  template<std::size_t _Idx, typename _Head, typename... _Tail>
+    struct _Tuple_impl<_Idx, _Head, _Tail...>
+    : public _Tuple_impl<_Idx + 1, _Tail...>,
+      private _Head_base<_Idx, _Head, std::is_empty<_Head>::value>
+    {
+      typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
+      typedef _Head_base<_Idx, _Head, std::is_empty<_Head>::value> _Base;
+
+      _Head&            _M_head()       { return _Base::_M_head(); }
+      const _Head&      _M_head() const { return _Base::_M_head(); }
+
+      _Inherited&       _M_tail()       { return *this; }
+      const _Inherited& _M_tail() const { return *this; }
+
+      constexpr _Tuple_impl()
+      : _Inherited(), _Base() { }
+
+      explicit 
+      constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
+      : _Inherited(__tail...), _Base(__head) { }
+
+      template<typename _UHead, typename... _UTail> 
+        explicit
+        _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
+	: _Inherited(std::forward<_UTail>(__tail)...),
+	  _Base(std::forward<_UHead>(__head)) { }
+
+      constexpr _Tuple_impl(const _Tuple_impl&) = default;
+
+      _Tuple_impl(_Tuple_impl&& __in)
+      : _Inherited(std::move(__in._M_tail())), 
+	_Base(std::forward<_Head>(__in._M_head())) { }
+
+      template<typename... _UElements>
+        _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
+	: _Inherited(__in._M_tail()), _Base(__in._M_head()) { }
+
+      template<typename _UHead, typename... _UTails>
+        _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
+	: _Inherited(std::move(__in._M_tail())),
+	  _Base(std::forward<_UHead>(__in._M_head())) { }
+
+      _Tuple_impl&
+      operator=(const _Tuple_impl& __in)
+      {
+	_M_head() = __in._M_head();
+	_M_tail() = __in._M_tail();
+	return *this;
+      }
+
+      _Tuple_impl&
+      operator=(_Tuple_impl&& __in)
+      {
+	_M_head() = std::forward<_Head>(__in._M_head());
+	_M_tail() = std::move(__in._M_tail());
+	return *this;
+      }
+
+      template<typename... _UElements>
+        _Tuple_impl&
+        operator=(const _Tuple_impl<_Idx, _UElements...>& __in)
+        {
+	  _M_head() = __in._M_head();
+	  _M_tail() = __in._M_tail();
+	  return *this;
+	}
+
+      template<typename _UHead, typename... _UTails>
+        _Tuple_impl&
+        operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
+        {
+	  _M_head() = std::forward<_UHead>(__in._M_head());
+	  _M_tail() = std::move(__in._M_tail());
+	  return *this;
+	}
+
+    protected:
+      void
+      _M_swap_impl(_Tuple_impl& __in)
+      {
+	_Base::_M_swap_impl(__in._M_head());
+	_Inherited::_M_swap_impl(__in._M_tail());
+      }
+    };
+
+  /// tuple
+  template<typename... _Elements> 
+    class tuple : public _Tuple_impl<0, _Elements...>
+    {
+      typedef _Tuple_impl<0, _Elements...> _Inherited;
+
+    public:
+      constexpr tuple()
+      : _Inherited() { }
+
+      explicit
+      constexpr tuple(const _Elements&... __elements)
+      : _Inherited(__elements...) { }
+
+      template<typename... _UElements, typename = typename
+	       std::enable_if<sizeof...(_UElements)
+			      == sizeof...(_Elements)>::type>
+        explicit
+        tuple(_UElements&&... __elements)
+	: _Inherited(std::forward<_UElements>(__elements)...) {	}
+
+      constexpr tuple(const tuple&) = default;
+
+      tuple(tuple&& __in)
+      : _Inherited(static_cast<_Inherited&&>(__in)) { }
+
+      template<typename... _UElements, typename = typename
+	       std::enable_if<sizeof...(_UElements)
+			      == sizeof...(_Elements)>::type>
+        tuple(const tuple<_UElements...>& __in)
+        : _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
+        { }
+
+      template<typename... _UElements, typename = typename
+	       std::enable_if<sizeof...(_UElements)
+			      == sizeof...(_Elements)>::type>
+        tuple(tuple<_UElements...>&& __in)
+        : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+	static_cast<_Inherited&>(*this) = __in;
+	return *this;
+      }
+
+      tuple&
+      operator=(tuple&& __in)
+      {
+	static_cast<_Inherited&>(*this) = std::move(__in);
+	return *this;
+      }
+
+      template<typename... _UElements, typename = typename
+	       std::enable_if<sizeof...(_UElements)
+			      == sizeof...(_Elements)>::type>
+        tuple&
+        operator=(const tuple<_UElements...>& __in)
+        {
+	  static_cast<_Inherited&>(*this) = __in;
+	  return *this;
+	}
+
+      template<typename... _UElements, typename = typename
+	       std::enable_if<sizeof...(_UElements)
+			      == sizeof...(_Elements)>::type>
+        tuple&
+        operator=(tuple<_UElements...>&& __in)
+        {
+	  static_cast<_Inherited&>(*this) = std::move(__in);
+	  return *this;
+	}
+
+      void
+      swap(tuple& __in)
+      { _Inherited::_M_swap_impl(__in); }
+    };
+
+  template<>  
+    class tuple<>
+    {
+    public:
+      void swap(tuple&) { /* no-op */ }
+    };
+
+  /// tuple (2-element), with construction and assignment from a pair.
+  template<typename _T1, typename _T2>
+    class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
+    {
+      typedef _Tuple_impl<0, _T1, _T2> _Inherited;
+
+    public:
+      constexpr tuple()
+      : _Inherited() { }
+
+      explicit
+      constexpr tuple(const _T1& __a1, const _T2& __a2)
+      : _Inherited(__a1, __a2) { }
+
+      template<typename _U1, typename _U2>
+        explicit
+        tuple(_U1&& __a1, _U2&& __a2)
+	: _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
+
+      constexpr tuple(const tuple&) = default;
+
+      tuple(tuple&& __in)
+      : _Inherited(static_cast<_Inherited&&>(__in)) { }
+
+      template<typename _U1, typename _U2>
+        tuple(const tuple<_U1, _U2>& __in)
+	: _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { }
+
+      template<typename _U1, typename _U2>
+        tuple(tuple<_U1, _U2>&& __in)
+	: _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { }
+
+      template<typename _U1, typename _U2>
+        tuple(const pair<_U1, _U2>& __in)
+	: _Inherited(__in.first, __in.second) { }
+
+      template<typename _U1, typename _U2>
+        tuple(pair<_U1, _U2>&& __in)
+	: _Inherited(std::forward<_U1>(__in.first),
+		     std::forward<_U2>(__in.second)) { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+	static_cast<_Inherited&>(*this) = __in;
+	return *this;
+      }
+
+      tuple&
+      operator=(tuple&& __in)
+      {
+	static_cast<_Inherited&>(*this) = std::move(__in);
+	return *this;
+      }
+
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(const tuple<_U1, _U2>& __in)
+        {
+	  static_cast<_Inherited&>(*this) = __in;
+	  return *this;
+	}
+
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(tuple<_U1, _U2>&& __in)
+        {
+	  static_cast<_Inherited&>(*this) = std::move(__in);
+	  return *this;
+	}
+
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(const pair<_U1, _U2>& __in)
+        {
+	  this->_M_head() = __in.first;
+	  this->_M_tail()._M_head() = __in.second;
+	  return *this;
+	}
+
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(pair<_U1, _U2>&& __in)
+        {
+	  this->_M_head() = std::forward<_U1>(__in.first);
+	  this->_M_tail()._M_head() = std::forward<_U2>(__in.second);
+	  return *this;
+	}
+
+      void
+      swap(tuple& __in)
+      { 
+	using std::swap;
+	swap(this->_M_head(), __in._M_head());
+	swap(this->_M_tail()._M_head(), __in._M_tail()._M_head());	
+      }
+    };
+
+  /// tuple (1-element).
+  template<typename _T1>
+    class tuple<_T1> : public _Tuple_impl<0, _T1>
+    {
+      typedef _Tuple_impl<0, _T1> _Inherited;
+
+    public:
+      constexpr tuple()
+      : _Inherited() { }
+
+      explicit
+      constexpr tuple(const _T1& __a1)
+      : _Inherited(__a1) { }
+
+      template<typename _U1, typename = typename
+	       std::enable_if<std::is_convertible<_U1, _T1>::value>::type>
+        explicit
+        tuple(_U1&& __a1)
+	: _Inherited(std::forward<_U1>(__a1)) { }
+
+      constexpr tuple(const tuple&) = default;
+
+      tuple(tuple&& __in)
+      : _Inherited(static_cast<_Inherited&&>(__in)) { }
+
+      template<typename _U1>
+        tuple(const tuple<_U1>& __in)
+	: _Inherited(static_cast<const _Tuple_impl<0, _U1>&>(__in)) { }
+
+      template<typename _U1>
+        tuple(tuple<_U1>&& __in)
+	: _Inherited(static_cast<_Tuple_impl<0, _U1>&&>(__in)) { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+	static_cast<_Inherited&>(*this) = __in;
+	return *this;
+      }
+
+      tuple&
+      operator=(tuple&& __in)
+      {
+	static_cast<_Inherited&>(*this) = std::move(__in);
+	return *this;
+      }
+
+      template<typename _U1>
+        tuple&
+        operator=(const tuple<_U1>& __in)
+        {
+	  static_cast<_Inherited&>(*this) = __in;
+	  return *this;
+	}
+
+      template<typename _U1>
+        tuple&
+        operator=(tuple<_U1>&& __in)
+        {
+	  static_cast<_Inherited&>(*this) = std::move(__in);
+	  return *this;
+	}
+
+      void
+      swap(tuple& __in)
+      { _Inherited::_M_swap_impl(__in); }
+    };
+
+
+  /// Gives the type of the ith element of a given tuple type.
+  template<std::size_t __i, typename _Tp>
+    struct tuple_element;
+
+  /**
+   * Recursive case for tuple_element: strip off the first element in
+   * the tuple and retrieve the (i-1)th element of the remaining tuple.
+   */
+  template<std::size_t __i, typename _Head, typename... _Tail>
+    struct tuple_element<__i, tuple<_Head, _Tail...> >
+    : tuple_element<__i - 1, tuple<_Tail...> > { };
+
+  /**
+   * Basis case for tuple_element: The first element is the one we're seeking.
+   */
+  template<typename _Head, typename... _Tail>
+    struct tuple_element<0, tuple<_Head, _Tail...> >
+    {
+      typedef _Head type;
+    };
+
+  /// Finds the size of a given tuple type.
+  template<typename _Tp>
+    struct tuple_size;
+
+  /// class tuple_size
+  template<typename... _Elements>
+    struct tuple_size<tuple<_Elements...> >
+    {
+      static const std::size_t value = sizeof...(_Elements);
+    };
+
+  template<typename... _Elements>
+    const std::size_t tuple_size<tuple<_Elements...> >::value;
+
+  template<std::size_t __i, typename _Head, typename... _Tail>
+    inline typename __add_ref<_Head>::type
+    __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t)
+    { return __t._M_head(); }
+
+  template<std::size_t __i, typename _Head, typename... _Tail>
+    inline typename __add_c_ref<_Head>::type
+    __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t)
+    { return __t._M_head(); }
+
+  // Return a reference (const reference) to the ith element of a tuple.
+  // Any const or non-const ref elements are returned with their original type.
+  template<std::size_t __i, typename... _Elements>
+    inline typename __add_ref<
+                      typename tuple_element<__i, tuple<_Elements...> >::type
+                    >::type
+    get(tuple<_Elements...>& __t)
+    { return __get_helper<__i>(__t); }
+
+  template<std::size_t __i, typename... _Elements>
+    inline typename __add_c_ref<
+                      typename tuple_element<__i, tuple<_Elements...> >::type
+                    >::type
+    get(const tuple<_Elements...>& __t)
+    { return __get_helper<__i>(__t); }
+
+  // This class helps construct the various comparison operations on tuples
+  template<std::size_t __check_equal_size, std::size_t __i, std::size_t __j,
+	   typename _Tp, typename _Up>
+    struct __tuple_compare;
+
+  template<std::size_t __i, std::size_t __j, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __j, _Tp, _Up>
+    {
+      static bool __eq(const _Tp& __t, const _Up& __u)
+      {
+	return (get<__i>(__t) == get<__i>(__u) &&
+		__tuple_compare<0, __i + 1, __j, _Tp, _Up>::__eq(__t, __u));
+      }
+     
+      static bool __less(const _Tp& __t, const _Up& __u)
+      {
+	return ((get<__i>(__t) < get<__i>(__u))
+		|| !(get<__i>(__u) < get<__i>(__t)) &&
+		__tuple_compare<0, __i + 1, __j, _Tp, _Up>::__less(__t, __u));
+      }
+    };
+
+  template<std::size_t __i, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __i, _Tp, _Up>
+    {
+      static bool __eq(const _Tp&, const _Up&)
+      { return true; }
+     
+      static bool __less(const _Tp&, const _Up&)
+      { return false; }
+    };
+
+  template<typename... _TElements, typename... _UElements>
+    bool
+    operator==(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    {
+      typedef tuple<_TElements...> _Tp;
+      typedef tuple<_UElements...> _Up;
+      return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
+	      0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u));
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    bool
+    operator<(const tuple<_TElements...>& __t,
+	      const tuple<_UElements...>& __u)
+    {
+      typedef tuple<_TElements...> _Tp;
+      typedef tuple<_UElements...> _Up;
+      return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
+	      0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u));
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator!=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__t == __u); }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator>(const tuple<_TElements...>& __t,
+	      const tuple<_UElements...>& __u)
+    { return __u < __t; }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator<=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__u < __t); }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator>=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__t < __u); }
+
+  // NB: DR 705.
+  template<typename... _Elements>
+    inline tuple<typename __decay_and_strip<_Elements>::__type...>
+    make_tuple(_Elements&&... __args)
+    {
+      typedef tuple<typename __decay_and_strip<_Elements>::__type...>
+	__result_type;
+      return __result_type(std::forward<_Elements>(__args)...);
+    }
+
+  template<typename... _Elements>
+    inline tuple<_Elements&&...>
+    forward_as_tuple(_Elements&&... __args)
+    { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); }
+
+  template<std::size_t...> struct __index_holder { };    
+
+  template<std::size_t __i, typename _IdxHolder, typename... _Elements>
+    struct __index_holder_impl;
+
+  template<std::size_t __i, std::size_t... _Indexes, typename _IdxHolder,
+	   typename... _Elements>
+    struct __index_holder_impl<__i, __index_holder<_Indexes...>,
+			       _IdxHolder, _Elements...> 
+    {
+      typedef typename __index_holder_impl<__i + 1,
+					   __index_holder<_Indexes..., __i>,
+					   _Elements...>::type type;
+    };
+ 
+  template<std::size_t __i, std::size_t... _Indexes>
+    struct __index_holder_impl<__i, __index_holder<_Indexes...> >
+    { typedef __index_holder<_Indexes...> type; };
+
+  template<typename... _Elements>
+    struct __make_index_holder 
+    : __index_holder_impl<0, __index_holder<>, _Elements...> { };
+    
+  template<typename... _TElements, std::size_t... _TIdx,
+	   typename... _UElements, std::size_t... _UIdx> 
+    inline tuple<_TElements..., _UElements...> 
+    __tuple_cat_helper(const tuple<_TElements...>& __t,
+		       const __index_holder<_TIdx...>&,
+                       const tuple<_UElements...>& __u,
+		       const __index_holder<_UIdx...>&)
+    { return tuple<_TElements..., _UElements...>(get<_TIdx>(__t)...,
+						 get<_UIdx>(__u)...); }
+
+  template<typename... _TElements, std::size_t... _TIdx,
+	   typename... _UElements, std::size_t... _UIdx> 
+    inline tuple<_TElements..., _UElements...> 
+    __tuple_cat_helper(tuple<_TElements...>&& __t,
+		       const __index_holder<_TIdx...>&, 
+		       const tuple<_UElements...>& __u,
+		       const __index_holder<_UIdx...>&)
+    { return tuple<_TElements..., _UElements...>
+	(std::forward<_TElements>(get<_TIdx>(__t))..., get<_UIdx>(__u)...); }
+
+  template<typename... _TElements, std::size_t... _TIdx,
+	   typename... _UElements, std::size_t... _UIdx>
+    inline tuple<_TElements..., _UElements...> 
+    __tuple_cat_helper(const tuple<_TElements...>& __t,
+		       const __index_holder<_TIdx...>&, 
+		       tuple<_UElements...>&& __u,
+		       const __index_holder<_UIdx...>&)
+    { return tuple<_TElements..., _UElements...>
+	(get<_TIdx>(__t)..., std::forward<_UElements>(get<_UIdx>(__u))...); }
+
+  template<typename... _TElements, std::size_t... _TIdx,
+	   typename... _UElements, std::size_t... _UIdx> 
+    inline tuple<_TElements..., _UElements...> 
+    __tuple_cat_helper(tuple<_TElements...>&& __t,
+		       const __index_holder<_TIdx...>&, 
+		       tuple<_UElements...>&& __u,
+		       const __index_holder<_UIdx...>&)
+    { return tuple<_TElements..., _UElements...>
+	(std::forward<_TElements>(get<_TIdx>(__t))...,
+	 std::forward<_UElements>(get<_UIdx>(__u))...); }
+
+  template<typename... _TElements, typename... _UElements>
+    inline tuple<_TElements..., _UElements...> 
+    tuple_cat(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u)
+    {
+      return __tuple_cat_helper(__t, typename
+				__make_index_holder<_TElements...>::type(),
+				__u, typename
+				__make_index_holder<_UElements...>::type());
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    inline tuple<_TElements..., _UElements...> 
+    tuple_cat(tuple<_TElements...>&& __t, const tuple<_UElements...>& __u)
+    {
+      return __tuple_cat_helper(std::move(__t), typename
+				 __make_index_holder<_TElements...>::type(),
+				 __u, typename
+				 __make_index_holder<_UElements...>::type());
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    inline tuple<_TElements..., _UElements...> 
+    tuple_cat(const tuple<_TElements...>& __t, tuple<_UElements...>&& __u)
+    {
+      return __tuple_cat_helper(__t, typename
+				__make_index_holder<_TElements...>::type(),
+				std::move(__u), typename
+				__make_index_holder<_UElements...>::type());
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    inline tuple<_TElements..., _UElements...>
+    tuple_cat(tuple<_TElements...>&& __t, tuple<_UElements...>&& __u)
+    {
+      return __tuple_cat_helper(std::move(__t), typename
+				__make_index_holder<_TElements...>::type(),
+				std::move(__u), typename
+				__make_index_holder<_UElements...>::type());
+    }
+
+  template<typename... _Elements>
+    inline tuple<_Elements&...>
+    tie(_Elements&... __args)
+    { return tuple<_Elements&...>(__args...); }
+
+  template<typename... _Elements>
+    inline void 
+    swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y)
+    { __x.swap(__y); }
+
+  // A class (and instance) which can be used in 'tie' when an element
+  // of a tuple is not required
+  struct _Swallow_assign
+  {
+    template<class _Tp>
+      const _Swallow_assign&
+      operator=(const _Tp&) const
+      { return *this; }
+  };
+
+  const _Swallow_assign ignore{};
+
+  /**
+   * Stores a tuple of indices. Used by bind() to extract the elements
+   * in a tuple. 
+   */
+  template<int... _Indexes>
+    struct _Index_tuple
+    {
+      typedef _Index_tuple<_Indexes..., sizeof...(_Indexes)> __next;
+    };
+
+  /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
+  template<std::size_t _Num>
+    struct _Build_index_tuple
+    {
+      typedef typename _Build_index_tuple<_Num-1>::__type::__next __type;
+    };
+
+  template<>
+    struct _Build_index_tuple<0>
+    {
+      typedef _Index_tuple<> __type;
+    };
+
+  // See stl_pair.h...
+  template<class _T1, class _T2>
+    template<typename _Tp, typename... _Args>
+      inline _Tp
+      pair<_T1, _T2>::
+      __cons(tuple<_Args...>&& __tuple)
+      {
+	typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
+	  _Indexes;
+	return __do_cons<_Tp>(std::move(__tuple), _Indexes());
+      }
+
+  template<class _T1, class _T2>
+    template<typename _Tp, typename... _Args, int... _Indexes>
+      inline _Tp
+      pair<_T1, _T2>::
+      __do_cons(tuple<_Args...>&& __tuple,
+		const _Index_tuple<_Indexes...>&)
+      { return _Tp(std::forward<_Args>(get<_Indexes>(__tuple))...); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_TUPLE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/type_traits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/type_traits
new file mode 100644
index 000000000..23611525b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/type_traits
@@ -0,0 +1,1271 @@
+// C++0x type_traits -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/type_traits
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_TYPE_TRAITS
+#define _GLIBCXX_TYPE_TRAITS 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup metaprogramming
+   * @{
+   */
+  struct __sfinae_types
+  {
+    typedef char __one;
+    typedef struct { char __arr[2]; } __two;
+  };
+
+#define _DEFINE_SPEC_0_HELPER                          \
+  template<>
+
+#define _DEFINE_SPEC_1_HELPER                          \
+  template<typename _Tp>
+
+#define _DEFINE_SPEC_2_HELPER                          \
+  template<typename _Tp, typename _Cp>
+
+#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value)    \
+  _DEFINE_SPEC_##_Order##_HELPER                       \
+    struct _Trait<_Type>                               \
+    : public integral_constant<bool, _Value> { };
+
+  // helper classes.
+
+  /// integral_constant
+  template<typename _Tp, _Tp __v>
+    struct integral_constant
+    {
+      static constexpr _Tp                  value = __v;
+      typedef _Tp                           value_type;
+      typedef integral_constant<_Tp, __v>   type;
+      constexpr operator value_type() { return value; }
+    };
+  
+  /// typedef for true_type
+  typedef integral_constant<bool, true>     true_type;
+
+  /// typedef for false_type
+  typedef integral_constant<bool, false>    false_type;
+
+  template<typename _Tp, _Tp __v>
+    constexpr _Tp integral_constant<_Tp, __v>::value;
+
+  /// remove_cv
+  template<typename>
+    struct remove_cv;
+
+  template<typename>
+    struct __is_void_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_void_helper, void, true)
+
+  // primary type categories.
+
+  /// is_void
+  template<typename _Tp>
+    struct is_void
+    : public integral_constant<bool, (__is_void_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_integral_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_integral_helper, bool, true)
+  _DEFINE_SPEC(0, __is_integral_helper, char, true)
+  _DEFINE_SPEC(0, __is_integral_helper, signed char, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned char, true)
+#ifdef _GLIBCXX_USE_WCHAR_T
+  _DEFINE_SPEC(0, __is_integral_helper, wchar_t, true)
+#endif
+  _DEFINE_SPEC(0, __is_integral_helper, char16_t, true)
+  _DEFINE_SPEC(0, __is_integral_helper, char32_t, true)
+  _DEFINE_SPEC(0, __is_integral_helper, short, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned short, true)
+  _DEFINE_SPEC(0, __is_integral_helper, int, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned int, true)
+  _DEFINE_SPEC(0, __is_integral_helper, long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, long long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned long long, true)
+
+  /// is_integral
+  template<typename _Tp>
+    struct is_integral
+    : public integral_constant<bool, (__is_integral_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_floating_point_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_floating_point_helper, float, true)
+  _DEFINE_SPEC(0, __is_floating_point_helper, double, true)
+  _DEFINE_SPEC(0, __is_floating_point_helper, long double, true)
+
+  /// is_floating_point
+  template<typename _Tp>
+    struct is_floating_point
+    : public integral_constant<bool, (__is_floating_point_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_array
+  template<typename>
+    struct is_array
+    : public false_type { };
+
+  template<typename _Tp, std::size_t _Size>
+    struct is_array<_Tp[_Size]>
+    : public true_type { };
+
+  template<typename _Tp>
+    struct is_array<_Tp[]>
+    : public true_type { };
+
+  template<typename>
+    struct __is_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(1, __is_pointer_helper, _Tp*, true)
+
+  /// is_pointer
+  template<typename _Tp>
+    struct is_pointer
+    : public integral_constant<bool, (__is_pointer_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_reference
+  template<typename _Tp>
+    struct is_reference;
+
+  /// is_function
+  template<typename _Tp>
+    struct is_function;
+
+  template<typename>
+    struct __is_member_object_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_object_pointer_helper, _Tp _Cp::*,
+	       !is_function<_Tp>::value)
+
+  /// is_member_object_pointer
+  template<typename _Tp>
+    struct is_member_object_pointer
+    : public integral_constant<bool, (__is_member_object_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_member_function_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_function_pointer_helper, _Tp _Cp::*,
+	       is_function<_Tp>::value)
+
+  /// is_member_function_pointer
+  template<typename _Tp>
+    struct is_member_function_pointer
+    : public integral_constant<bool, (__is_member_function_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_enum
+  template<typename _Tp>
+    struct is_enum
+    : public integral_constant<bool, __is_enum(_Tp)>
+    { };
+
+  /// is_union
+  template<typename _Tp>
+    struct is_union
+    : public integral_constant<bool, __is_union(_Tp)>
+    { };
+
+  /// is_class
+  template<typename _Tp>
+    struct is_class
+    : public integral_constant<bool, __is_class(_Tp)>
+    { };
+
+  /// is_function
+  template<typename>
+    struct is_function
+    : public false_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...)>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......)>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) const>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) const>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) const volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) const volatile>
+    : public true_type { };
+
+  template<typename>
+    struct __is_nullptr_t_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_nullptr_t_helper, std::nullptr_t, true)
+
+  // __is_nullptr_t (extension).
+  template<typename _Tp>
+    struct __is_nullptr_t
+    : public integral_constant<bool, (__is_nullptr_t_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  // composite type traits.
+  
+  /// is_arithmetic
+  template<typename _Tp>
+    struct is_arithmetic
+    : public integral_constant<bool, (is_integral<_Tp>::value
+				      || is_floating_point<_Tp>::value)>
+    { };
+
+  /// is_fundamental
+  template<typename _Tp>
+    struct is_fundamental
+    : public integral_constant<bool, (is_arithmetic<_Tp>::value
+				      || is_void<_Tp>::value)>
+    { };
+
+  /// is_object
+  template<typename _Tp>
+    struct is_object
+    : public integral_constant<bool, !(is_function<_Tp>::value
+				       || is_reference<_Tp>::value
+				       || is_void<_Tp>::value)>
+    { };
+
+  /// is_member_pointer
+  template<typename _Tp>
+    struct is_member_pointer;
+
+  /// is_scalar
+  template<typename _Tp>
+    struct is_scalar
+    : public integral_constant<bool, (is_arithmetic<_Tp>::value
+				      || is_enum<_Tp>::value
+				      || is_pointer<_Tp>::value
+				      || is_member_pointer<_Tp>::value
+				      || __is_nullptr_t<_Tp>::value)>
+    { };
+
+  /// is_compound
+  template<typename _Tp>
+    struct is_compound
+    : public integral_constant<bool, !is_fundamental<_Tp>::value> { };
+
+  /// is_member_pointer
+  template<typename _Tp>
+    struct __is_member_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_pointer_helper, _Tp _Cp::*, true)
+
+  template<typename _Tp>
+  struct is_member_pointer
+    : public integral_constant<bool, (__is_member_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  // type properties.
+  /// is_const
+  template<typename>
+    struct is_const
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_const<_Tp const>
+    : public true_type { };
+  
+  /// is_volatile
+  template<typename>
+    struct is_volatile
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_volatile<_Tp volatile>
+    : public true_type { };
+
+  /// is_empty
+  template<typename _Tp>
+    struct is_empty
+    : public integral_constant<bool, __is_empty(_Tp)>
+    { };
+
+  /// is_polymorphic
+  template<typename _Tp>
+    struct is_polymorphic
+    : public integral_constant<bool, __is_polymorphic(_Tp)>
+    { };
+
+  /// is_abstract
+  template<typename _Tp>
+    struct is_abstract
+    : public integral_constant<bool, __is_abstract(_Tp)>
+    { };
+
+  /// has_virtual_destructor
+  template<typename _Tp>
+    struct has_virtual_destructor
+    : public integral_constant<bool, __has_virtual_destructor(_Tp)>
+    { };
+
+  /// alignment_of
+  template<typename _Tp>
+    struct alignment_of
+    : public integral_constant<std::size_t, __alignof__(_Tp)> { };
+  
+  /// rank
+  template<typename>
+    struct rank
+    : public integral_constant<std::size_t, 0> { };
+   
+  template<typename _Tp, std::size_t _Size>
+    struct rank<_Tp[_Size]>
+    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
+
+  template<typename _Tp>
+    struct rank<_Tp[]>
+    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
+
+  /// extent
+  template<typename, unsigned _Uint = 0>
+    struct extent
+    : public integral_constant<std::size_t, 0> { };
+  
+  template<typename _Tp, unsigned _Uint, std::size_t _Size>
+    struct extent<_Tp[_Size], _Uint>
+    : public integral_constant<std::size_t,
+			       _Uint == 0 ? _Size : extent<_Tp,
+							   _Uint - 1>::value>
+    { };
+
+  template<typename _Tp, unsigned _Uint>
+    struct extent<_Tp[], _Uint>
+    : public integral_constant<std::size_t,
+			       _Uint == 0 ? 0 : extent<_Tp,
+						       _Uint - 1>::value>
+    { };
+
+  // relationships between types [4.6].
+
+  /// is_same
+  template<typename, typename>
+    struct is_same
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_same<_Tp, _Tp>
+    : public true_type { };
+
+  // const-volatile modifications [4.7.1].
+
+  /// remove_const
+  template<typename _Tp>
+    struct remove_const
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_const<_Tp const>
+    { typedef _Tp     type; };
+  
+  /// remove_volatile
+  template<typename _Tp>
+    struct remove_volatile
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_volatile<_Tp volatile>
+    { typedef _Tp     type; };
+  
+  /// remove_cv
+  template<typename _Tp>
+    struct remove_cv
+    {
+      typedef typename
+      remove_const<typename remove_volatile<_Tp>::type>::type     type;
+    };
+  
+  /// add_const
+  template<typename _Tp>
+    struct add_const
+    { typedef _Tp const     type; };
+   
+  /// add_volatile
+  template<typename _Tp>
+    struct add_volatile
+    { typedef _Tp volatile     type; };
+  
+  /// add_cv
+  template<typename _Tp>
+    struct add_cv
+    {
+      typedef typename
+      add_const<typename add_volatile<_Tp>::type>::type     type;
+    };
+
+  // array modifications.
+
+  /// remove_extent
+  template<typename _Tp>
+    struct remove_extent
+    { typedef _Tp     type; };
+
+  template<typename _Tp, std::size_t _Size>
+    struct remove_extent<_Tp[_Size]>
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_extent<_Tp[]>
+    { typedef _Tp     type; };
+
+  /// remove_all_extents
+  template<typename _Tp>
+    struct remove_all_extents
+    { typedef _Tp     type; };
+
+  template<typename _Tp, std::size_t _Size>
+    struct remove_all_extents<_Tp[_Size]>
+    { typedef typename remove_all_extents<_Tp>::type     type; };
+
+  template<typename _Tp>
+    struct remove_all_extents<_Tp[]>
+    { typedef typename remove_all_extents<_Tp>::type     type; };
+
+  // pointer modifications.
+
+  template<typename _Tp, typename>
+    struct __remove_pointer_helper
+    { typedef _Tp     type; };
+
+  template<typename _Tp, typename _Up>
+    struct __remove_pointer_helper<_Tp, _Up*>
+    { typedef _Up     type; };
+
+  /// remove_pointer
+  template<typename _Tp>
+    struct remove_pointer
+    : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type>
+    { };
+
+  template<typename>
+    struct remove_reference;
+
+  /// add_pointer
+  template<typename _Tp>
+    struct add_pointer
+    { typedef typename remove_reference<_Tp>::type*     type; };
+
+  // Primary classification traits.
+
+  /// is_lvalue_reference
+  template<typename>
+    struct is_lvalue_reference
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_lvalue_reference<_Tp&>
+    : public true_type { };
+
+  /// is_rvalue_reference
+  template<typename>
+    struct is_rvalue_reference
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_rvalue_reference<_Tp&&>
+    : public true_type { };
+
+  // Secondary classification traits.
+
+  /// is_reference
+  template<typename _Tp>
+    struct is_reference
+    : public integral_constant<bool, (is_lvalue_reference<_Tp>::value
+				      || is_rvalue_reference<_Tp>::value)>
+    { };
+
+  // Reference transformations.
+
+  /// remove_reference
+  template<typename _Tp>
+    struct remove_reference
+    { typedef _Tp   type; };
+
+  template<typename _Tp>
+    struct remove_reference<_Tp&>
+    { typedef _Tp   type; };
+
+  template<typename _Tp>
+    struct remove_reference<_Tp&&>
+    { typedef _Tp   type; };
+
+  template<typename _Tp,
+	   bool = !is_reference<_Tp>::value && !is_void<_Tp>::value,
+	   bool = is_rvalue_reference<_Tp>::value>
+    struct __add_lvalue_reference_helper
+    { typedef _Tp   type; };
+
+  template<typename _Tp>
+    struct __add_lvalue_reference_helper<_Tp, true, false>
+    { typedef _Tp&   type; };
+
+  template<typename _Tp>
+    struct __add_lvalue_reference_helper<_Tp, false, true>
+    { typedef typename remove_reference<_Tp>::type&   type; };
+
+  /// add_lvalue_reference
+  template<typename _Tp>
+    struct add_lvalue_reference
+    : public __add_lvalue_reference_helper<_Tp>
+    { };
+
+  template<typename _Tp,
+	   bool = !is_reference<_Tp>::value && !is_void<_Tp>::value>
+    struct __add_rvalue_reference_helper
+    { typedef _Tp   type; };
+
+  template<typename _Tp>
+    struct __add_rvalue_reference_helper<_Tp, true>
+    { typedef _Tp&&   type; };
+
+  /// add_rvalue_reference
+  template<typename _Tp>
+    struct add_rvalue_reference
+    : public __add_rvalue_reference_helper<_Tp>
+    { };
+
+  // Scalar properties and transformations.
+
+  template<typename _Tp,
+	   bool = is_integral<_Tp>::value,
+	   bool = is_floating_point<_Tp>::value>
+    struct __is_signed_helper
+    : public false_type { };
+
+  template<typename _Tp>
+    struct __is_signed_helper<_Tp, false, true>
+    : public true_type { };
+
+  template<typename _Tp>
+    struct __is_signed_helper<_Tp, true, false>
+    : public integral_constant<bool, static_cast<bool>(_Tp(-1) < _Tp(0))>
+    { };
+
+  /// is_signed
+  template<typename _Tp>
+    struct is_signed
+    : public integral_constant<bool, __is_signed_helper<_Tp>::value>
+    { };
+
+  /// is_unsigned
+  template<typename _Tp>
+    struct is_unsigned
+    : public integral_constant<bool, (is_arithmetic<_Tp>::value
+				      && !is_signed<_Tp>::value)>
+    { };
+
+  // Member introspection.
+
+  /// is_trivial
+  template<typename _Tp>
+    struct is_trivial
+    : public integral_constant<bool, __is_trivial(_Tp)>
+    { };
+
+  /// is_standard_layout
+  template<typename _Tp>
+    struct is_standard_layout
+    : public integral_constant<bool, __is_standard_layout(_Tp)>
+    { };
+
+  /// is_pod
+  // Could use is_standard_layout && is_trivial instead of the builtin.
+  template<typename _Tp>
+    struct is_pod
+    : public integral_constant<bool, __is_pod(_Tp)>
+    { };
+
+  /// is_literal_type
+  template<typename _Tp>
+    struct is_literal_type
+    : public integral_constant<bool, __is_literal_type(_Tp)>
+    { };
+
+  template<typename _Tp>
+    typename add_rvalue_reference<_Tp>::type declval() noexcept;
+
+  template<typename _Tp, typename... _Args>
+    class __is_constructible_helper
+    : public __sfinae_types
+    {
+      template<typename _Tp1, typename... _Args1>
+        static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int);
+
+      template<typename, typename...>
+        static __two __test(...);
+
+    public:
+      static const bool __value = sizeof(__test<_Tp, _Args...>(0)) == 1;
+    };
+
+  template<typename _Tp, typename _Arg>
+    class __is_constructible_helper<_Tp, _Arg>
+    : public __sfinae_types
+    {
+      template<typename _Tp1, typename _Arg1>
+        static decltype(static_cast<_Tp1>(declval<_Arg1>()), __one())
+	__test(int);
+
+      template<typename, typename>
+        static __two __test(...);
+
+    public:
+      static const bool __value = sizeof(__test<_Tp, _Arg>(0)) == 1;
+    };
+
+  /// is_constructible
+  // XXX FIXME
+  // The C++0x specifications require front-end support, see N2255.
+  template<typename _Tp, typename... _Args>
+    struct is_constructible
+    : public integral_constant<bool,
+			       __is_constructible_helper<_Tp,
+							 _Args...>::__value>
+    { };
+
+  template<bool, typename _Tp, typename... _Args>
+    struct __is_nt_constructible_helper
+    { static const bool __value = false; };
+
+  template<typename _Tp, typename... _Args>
+    struct __is_nt_constructible_helper<true, _Tp, _Args...>
+    { static const bool __value = noexcept(_Tp(declval<_Args>()...)); };
+
+  template<typename _Tp, typename _Arg>
+    struct __is_nt_constructible_helper<true, _Tp, _Arg>
+    {
+      static const bool __value = noexcept(static_cast<_Tp>(declval<_Arg>()));
+    };
+
+  /// is_nothrow_constructible
+  template<typename _Tp, typename... _Args>
+    struct is_nothrow_constructible
+    : public integral_constant<bool,
+	  __is_nt_constructible_helper<is_constructible<_Tp, _Args...>::value,
+				       _Tp, _Args...>::__value>
+    { };
+
+  /// has_trivial_default_constructor
+  template<typename _Tp>
+    struct has_trivial_default_constructor
+    : public integral_constant<bool, __has_trivial_constructor(_Tp)>
+    { };
+
+  /// has_trivial_copy_constructor
+  template<typename _Tp>
+    struct has_trivial_copy_constructor
+    : public integral_constant<bool, __has_trivial_copy(_Tp)>
+    { };
+
+  /// has_trivial_copy_assign
+  template<typename _Tp>
+    struct has_trivial_copy_assign
+    : public integral_constant<bool, __has_trivial_assign(_Tp)>
+    { };
+
+  /// has_trivial_destructor
+  template<typename _Tp>
+    struct has_trivial_destructor
+    : public integral_constant<bool, __has_trivial_destructor(_Tp)>
+    { };
+
+  /// has_nothrow_default_constructor
+  template<typename _Tp>
+    struct has_nothrow_default_constructor
+    : public integral_constant<bool, __has_nothrow_constructor(_Tp)>
+    { };
+
+  /// has_nothrow_copy_constructor
+  template<typename _Tp>
+    struct has_nothrow_copy_constructor
+    : public integral_constant<bool, __has_nothrow_copy(_Tp)>
+    { };
+
+  /// has_nothrow_copy_assign
+  template<typename _Tp>
+    struct has_nothrow_copy_assign
+    : public integral_constant<bool, __has_nothrow_assign(_Tp)>
+    { };
+
+  // Relationships between types.
+
+  /// is_base_of
+  template<typename _Base, typename _Derived>
+    struct is_base_of
+    : public integral_constant<bool, __is_base_of(_Base, _Derived)>
+    { };
+
+  template<typename _From, typename _To,
+	   bool = (is_void<_From>::value || is_function<_To>::value
+		   || is_array<_To>::value)>
+    struct __is_convertible_helper
+    { static const bool __value = is_void<_To>::value; };
+
+  template<typename _From, typename _To>
+    class __is_convertible_helper<_From, _To, false>
+    : public __sfinae_types
+    {
+      template<typename _To1>
+        static void __test_aux(_To1);
+
+      template<typename _From1, typename _To1>
+        static decltype(__test_aux<_To1>(std::declval<_From1>()), __one())
+	__test(int);
+
+      template<typename, typename>
+        static __two __test(...);
+
+    public:
+      static const bool __value = sizeof(__test<_From, _To>(0)) == 1;
+    };
+
+  /// is_convertible
+  // XXX FIXME
+  // The C++0x specifications require front-end support, see N2255.
+  template<typename _From, typename _To>
+    struct is_convertible
+    : public integral_constant<bool,
+			       __is_convertible_helper<_From, _To>::__value>
+    { };
+
+  /// is_explicitly_convertible
+  template<typename _From, typename _To>
+    struct is_explicitly_convertible
+    : public is_constructible<_To, _From>
+    { };
+
+  template<std::size_t _Len>
+    struct __aligned_storage_msa
+    { 
+      union __type
+      {
+	unsigned char __data[_Len];
+	struct __attribute__((__aligned__)) { } __align; 
+      };
+    };
+
+  /**
+   *  @brief Alignment type.
+   *
+   *  The value of _Align is a default-alignment which shall be the
+   *  most stringent alignment requirement for any C++ object type
+   *  whose size is no greater than _Len (3.9). The member typedef
+   *  type shall be a POD type suitable for use as uninitialized
+   *  storage for any object whose size is at most _Len and whose
+   *  alignment is a divisor of _Align.
+  */
+  template<std::size_t _Len, std::size_t _Align =
+	   __alignof__(typename __aligned_storage_msa<_Len>::__type)>
+    struct aligned_storage
+    { 
+      union type
+      {
+	unsigned char __data[_Len];
+	struct __attribute__((__aligned__((_Align)))) { } __align; 
+      };
+    };
+
+
+  // Define a nested type if some predicate holds.
+  // Primary template.
+  /// enable_if
+  template<bool, typename _Tp = void>
+    struct enable_if 
+    { };
+
+  // Partial specialization for true.
+  template<typename _Tp>
+    struct enable_if<true, _Tp>
+    { typedef _Tp type; };
+
+
+  // A conditional expression, but for types. If true, first, if false, second.
+  // Primary template.
+  /// conditional
+  template<bool _Cond, typename _Iftrue, typename _Iffalse>
+    struct conditional
+    { typedef _Iftrue type; };
+
+  // Partial specialization for false.
+  template<typename _Iftrue, typename _Iffalse>
+    struct conditional<false, _Iftrue, _Iffalse>
+    { typedef _Iffalse type; };
+
+
+  // Decay trait for arrays and functions, used for perfect forwarding
+  // in make_pair, make_tuple, etc.
+  template<typename _Up, 
+	   bool _IsArray = is_array<_Up>::value,
+	   bool _IsFunction = is_function<_Up>::value> 
+    struct __decay_selector;
+
+  // NB: DR 705.
+  template<typename _Up> 
+    struct __decay_selector<_Up, false, false>
+    { typedef typename remove_cv<_Up>::type __type; };
+
+  template<typename _Up> 
+    struct __decay_selector<_Up, true, false>
+    { typedef typename remove_extent<_Up>::type* __type; };
+
+  template<typename _Up> 
+    struct __decay_selector<_Up, false, true>
+    { typedef typename add_pointer<_Up>::type __type; };
+
+  /// decay
+  template<typename _Tp> 
+    class decay 
+    { 
+      typedef typename remove_reference<_Tp>::type __remove_type;
+
+    public:
+      typedef typename __decay_selector<__remove_type>::__type type;
+    };
+
+  template<typename _Tp>
+    class reference_wrapper;
+
+  // Helper which adds a reference to a type when given a reference_wrapper
+  template<typename _Tp>
+    struct __strip_reference_wrapper
+    {
+      typedef _Tp __type;
+    };
+
+  template<typename _Tp>
+    struct __strip_reference_wrapper<reference_wrapper<_Tp> >
+    {
+      typedef _Tp& __type;
+    };
+
+  template<typename _Tp>
+    struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
+    {
+      typedef _Tp& __type;
+    };
+
+  template<typename _Tp>
+    struct __decay_and_strip
+    {
+      typedef typename __strip_reference_wrapper<
+	typename decay<_Tp>::type>::__type __type;
+    };
+
+
+  // Utility for constructing identically cv-qualified types.
+  template<typename _Unqualified, bool _IsConst, bool _IsVol>
+    struct __cv_selector;
+
+  template<typename _Unqualified>
+    struct __cv_selector<_Unqualified, false, false>
+    { typedef _Unqualified __type; };
+
+  template<typename _Unqualified>
+    struct __cv_selector<_Unqualified, false, true>
+    { typedef volatile _Unqualified __type; };
+
+  template<typename _Unqualified>
+    struct __cv_selector<_Unqualified, true, false>
+    { typedef const _Unqualified __type; };
+
+  template<typename _Unqualified>
+    struct __cv_selector<_Unqualified, true, true>
+    { typedef const volatile _Unqualified __type; };
+
+  template<typename _Qualified, typename _Unqualified,
+	   bool _IsConst = is_const<_Qualified>::value,
+	   bool _IsVol = is_volatile<_Qualified>::value>
+    class __match_cv_qualifiers
+    {
+      typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match;
+
+    public:
+      typedef typename __match::__type __type; 
+    };
+
+
+  // Utility for finding the unsigned versions of signed integral types.
+  template<typename _Tp>
+    struct __make_unsigned
+    { typedef _Tp __type; };
+
+  template<>
+    struct __make_unsigned<char>
+    { typedef unsigned char __type; };
+
+  template<>
+    struct __make_unsigned<signed char>
+    { typedef unsigned char __type; };
+
+  template<>
+    struct __make_unsigned<short>
+    { typedef unsigned short __type; };
+
+  template<>
+    struct __make_unsigned<int>
+    { typedef unsigned int __type; };
+
+  template<>
+    struct __make_unsigned<long>
+    { typedef unsigned long __type; };
+
+  template<>
+    struct __make_unsigned<long long>
+    { typedef unsigned long long __type; };
+
+
+  // Select between integral and enum: not possible to be both.
+  template<typename _Tp, 
+	   bool _IsInt = is_integral<_Tp>::value,
+	   bool _IsEnum = is_enum<_Tp>::value>
+    class __make_unsigned_selector;
+
+  template<typename _Tp>
+    class __make_unsigned_selector<_Tp, true, false>
+    {
+      typedef __make_unsigned<typename remove_cv<_Tp>::type> __unsignedt;
+      typedef typename __unsignedt::__type __unsigned_type;
+      typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned;
+
+    public:
+      typedef typename __cv_unsigned::__type __type;
+    };
+
+  template<typename _Tp>
+    class __make_unsigned_selector<_Tp, false, true>
+    {
+      // With -fshort-enums, an enum may be as small as a char.
+      typedef unsigned char __smallest;
+      static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest);
+      static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short);
+      static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int);
+      typedef conditional<__b2, unsigned int, unsigned long> __cond2;
+      typedef typename __cond2::type __cond2_type;
+      typedef conditional<__b1, unsigned short, __cond2_type> __cond1;
+      typedef typename __cond1::type __cond1_type;
+
+    public:
+      typedef typename conditional<__b0, __smallest, __cond1_type>::type __type;
+    };
+
+  // Given an integral/enum type, return the corresponding unsigned
+  // integer type.
+  // Primary template.
+  /// make_unsigned
+  template<typename _Tp>
+    struct make_unsigned 
+    { typedef typename __make_unsigned_selector<_Tp>::__type type; };
+
+  // Integral, but don't define.
+  template<>
+    struct make_unsigned<bool>;
+
+
+  // Utility for finding the signed versions of unsigned integral types.
+  template<typename _Tp>
+    struct __make_signed
+    { typedef _Tp __type; };
+
+  template<>
+    struct __make_signed<char>
+    { typedef signed char __type; };
+
+  template<>
+    struct __make_signed<unsigned char>
+    { typedef signed char __type; };
+
+  template<>
+    struct __make_signed<unsigned short>
+    { typedef signed short __type; };
+
+  template<>
+    struct __make_signed<unsigned int>
+    { typedef signed int __type; };
+
+  template<>
+    struct __make_signed<unsigned long>
+    { typedef signed long __type; };
+
+  template<>
+    struct __make_signed<unsigned long long>
+    { typedef signed long long __type; };
+
+
+  // Select between integral and enum: not possible to be both.
+  template<typename _Tp, 
+	   bool _IsInt = is_integral<_Tp>::value,
+	   bool _IsEnum = is_enum<_Tp>::value>
+    class __make_signed_selector;
+
+  template<typename _Tp>
+    class __make_signed_selector<_Tp, true, false>
+    {
+      typedef __make_signed<typename remove_cv<_Tp>::type> __signedt;
+      typedef typename __signedt::__type __signed_type;
+      typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed;
+
+    public:
+      typedef typename __cv_signed::__type __type;
+    };
+
+  template<typename _Tp>
+    class __make_signed_selector<_Tp, false, true>
+    {
+      // With -fshort-enums, an enum may be as small as a char.
+      typedef signed char __smallest;
+      static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest);
+      static const bool __b1 = sizeof(_Tp) <= sizeof(signed short);
+      static const bool __b2 = sizeof(_Tp) <= sizeof(signed int);
+      typedef conditional<__b2, signed int, signed long> __cond2;
+      typedef typename __cond2::type __cond2_type;
+      typedef conditional<__b1, signed short, __cond2_type> __cond1;
+      typedef typename __cond1::type __cond1_type;
+
+    public:
+      typedef typename conditional<__b0, __smallest, __cond1_type>::type __type;
+    };
+
+  // Given an integral/enum type, return the corresponding signed
+  // integer type.
+  // Primary template.
+  /// make_signed
+  template<typename _Tp>
+    struct make_signed 
+    { typedef typename __make_signed_selector<_Tp>::__type type; };
+
+  // Integral, but don't define.
+  template<>
+    struct make_signed<bool>;
+
+  /// common_type
+  template<typename... _Tp>
+    struct common_type;
+
+  template<typename _Tp>
+    struct common_type<_Tp>
+    { typedef _Tp type; };
+
+  template<typename _Tp, typename _Up>
+    struct common_type<_Tp, _Up>
+    { typedef decltype(true ? declval<_Tp>() : declval<_Up>()) type; };
+
+  template<typename _Tp, typename _Up, typename... _Vp>
+    struct common_type<_Tp, _Up, _Vp...>
+    {
+      typedef typename
+        common_type<typename common_type<_Tp, _Up>::type, _Vp...>::type type;
+    };
+
+  /// declval
+  template<typename _Tp>
+    struct __declval_protector
+    {
+      static const bool __stop = false;
+      static typename add_rvalue_reference<_Tp>::type __delegate();
+    };
+
+  template<typename _Tp>
+    inline typename add_rvalue_reference<_Tp>::type
+    declval() noexcept
+    {
+      static_assert(__declval_protector<_Tp>::__stop,
+		    "declval() must not be used!");
+      return __declval_protector<_Tp>::__delegate();
+    }
+
+  /// result_of
+  template<typename _Signature>
+    class result_of;
+
+  template<typename _MemPtr, typename _Arg>
+    struct _Result_of_memobj;
+
+  template<typename _Res, typename _Class, typename _Arg>
+    struct _Result_of_memobj<_Res _Class::*, _Arg>
+    {
+    private:
+      typedef _Res _Class::* _Func;
+
+      template<typename _Tp>
+	static _Tp _S_get(const _Class&);
+      template<typename _Tp>
+	static decltype(*std::declval<_Tp>()) _S_get(...);
+        
+    public:
+      typedef
+        decltype(_S_get<_Arg>(std::declval<_Arg>()).*std::declval<_Func>())
+        __type;
+    };
+
+  template<typename _MemPtr, typename _Arg, typename... _ArgTypes>
+    struct _Result_of_memfun;
+
+  template<typename _Res, typename _Class, typename _Arg, typename... _Args>
+    struct _Result_of_memfun<_Res _Class::*, _Arg, _Args...>
+    {
+    private:
+      typedef _Res _Class::* _Func;
+
+      template<typename _Tp>
+	static _Tp _S_get(const _Class&);
+      template<typename _Tp>
+	static decltype(*std::declval<_Tp>()) _S_get(...);
+        
+    public:
+      typedef
+        decltype((_S_get<_Arg>(std::declval<_Arg>()).*std::declval<_Func>())
+            (std::declval<_Args>()...) )
+        __type;
+    };
+
+  template<bool, bool, typename _Functor, typename... _ArgTypes>
+    struct _Result_of_impl;
+
+  template<typename _Functor, typename... _ArgTypes>
+    struct _Result_of_impl<false, false, _Functor, _ArgTypes...>
+    {
+      typedef
+        decltype( std::declval<_Functor>()(std::declval<_ArgTypes>()...) )
+        __type;
+    };
+
+  template<typename _MemPtr, typename _Arg>
+    struct _Result_of_impl<true, false, _MemPtr, _Arg>
+    : _Result_of_memobj<typename remove_reference<_MemPtr>::type, _Arg>
+    {
+      typedef typename _Result_of_memobj<
+	typename remove_reference<_MemPtr>::type, _Arg>::__type
+	__type;
+    };
+
+  template<typename _MemPtr, typename _Arg, typename... _ArgTypes>
+    struct _Result_of_impl<false, true, _MemPtr, _Arg, _ArgTypes...>
+    : _Result_of_memfun<typename remove_reference<_MemPtr>::type, _Arg,
+                        _ArgTypes...>
+    {
+      typedef typename _Result_of_memfun<
+	typename remove_reference<_MemPtr>::type, _Arg, _ArgTypes...>::__type
+	__type;
+    };
+
+  template<typename _Functor, typename... _ArgTypes>
+    struct result_of<_Functor(_ArgTypes...)>
+    : _Result_of_impl<is_member_object_pointer<
+                        typename remove_reference<_Functor>::type >::value,
+                      is_member_function_pointer<
+			typename remove_reference<_Functor>::type >::value,
+		      _Functor, _ArgTypes...>
+    {
+      typedef typename _Result_of_impl<
+	is_member_object_pointer<
+	  typename remove_reference<_Functor>::type >::value,
+        is_member_function_pointer<
+	  typename remove_reference<_Functor>::type >::value,
+       	_Functor, _ArgTypes...>::__type
+	type;
+    };
+
+  /**
+   *  Use SFINAE to determine if the type _Tp has a publicly-accessible
+   *  member type _NTYPE.
+   */
+#define _GLIBCXX_HAS_NESTED_TYPE(_NTYPE)                         \
+  template<typename _Tp>                                         \
+    class __has_##_NTYPE##_helper                                \
+    : __sfinae_types                                             \
+    {                                                            \
+      template<typename _Up>                                     \
+        struct _Wrap_type                                        \
+	{ };                                                     \
+                                                                 \
+      template<typename _Up>                                     \
+        static __one __test(_Wrap_type<typename _Up::_NTYPE>*);  \
+                                                                 \
+      template<typename _Up>                                     \
+        static __two __test(...);                                \
+                                                                 \
+    public:                                                      \
+      static const bool value = sizeof(__test<_Tp>(0)) == 1;     \
+    };                                                           \
+                                                                 \
+  template<typename _Tp>                                         \
+    struct __has_##_NTYPE                                        \
+    : integral_constant<bool, __has_##_NTYPE##_helper            \
+			<typename remove_cv<_Tp>::type>::value>  \
+    { };
+
+#undef _DEFINE_SPEC_0_HELPER
+#undef _DEFINE_SPEC_1_HELPER
+#undef _DEFINE_SPEC_2_HELPER
+#undef _DEFINE_SPEC
+
+  // @} group metaprogramming
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif  // _GLIBCXX_TYPE_TRAITS
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/typeindex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/typeindex
new file mode 100644
index 000000000..79b3eadf7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/typeindex
@@ -0,0 +1,109 @@
+// C++0x typeindex -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/typeindex
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_TYPEINDEX
+#define _GLIBCXX_TYPEINDEX 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <typeinfo>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+     @brief The class type_index provides a simple wrapper for type_info
+     which can be used as an index type in associative containers (23.6)
+     and in unordered associative containers (23.7).
+   */
+  struct type_index
+  {
+    type_index(const type_info& __rhs)
+    : _M_target(&__rhs) { }
+
+    bool
+    operator==(const type_index& __rhs) const
+    { return *_M_target == *__rhs._M_target; }
+
+    bool
+    operator!=(const type_index& __rhs) const
+    { return *_M_target != *__rhs._M_target; }
+
+    bool
+    operator<(const type_index& __rhs) const
+    { return _M_target->before(*__rhs._M_target); }
+
+    bool
+    operator<=(const type_index& __rhs) const
+    { return !__rhs._M_target->before(*_M_target); }
+
+    bool
+    operator>(const type_index& __rhs) const
+    { return __rhs._M_target->before(*_M_target); }
+
+    bool
+    operator>=(const type_index& __rhs) const
+    { return !_M_target->before(*__rhs._M_target); }
+
+    size_t
+    hash_code() const
+    { return _M_target->hash_code(); }
+
+    const char*
+    name() const
+    { return _M_target->name(); }
+
+  private:
+    const type_info* _M_target;
+  };
+
+  template<typename _Tp> struct hash;
+
+  /// std::hash specialization for type_index.
+  template<>
+    struct hash<type_index>
+    {
+      typedef size_t        result_type;
+      typedef type_index  argument_type;
+
+      size_t
+      operator()(const type_index& __ti) const
+      { return __ti.hash_code(); }
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif  // _GLIBCXX_TYPEINDEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_map
new file mode 100644
index 000000000..e77a2972a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_map
@@ -0,0 +1,59 @@
+// <unordered_map> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/unordered_map
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_UNORDERED_MAP
+#define _GLIBCXX_UNORDERED_MAP 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <utility>
+#include <type_traits>
+#include <initializer_list>
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_function.h> // equal_to, _Identity, _Select1st
+#include <bits/functional_hash.h>
+#include <bits/hashtable.h>
+#include <bits/unordered_map.h>
+#include <bits/range_access.h>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/unordered_map>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/unordered_map>
+#endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_UNORDERED_MAP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_set
new file mode 100644
index 000000000..739e0a4a4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/unordered_set
@@ -0,0 +1,58 @@
+// <unordered_set> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/unordered_set
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_UNORDERED_SET
+#define _GLIBCXX_UNORDERED_SET 1
+
+#pragma GCC system_header
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <utility>
+#include <type_traits>
+#include <initializer_list>
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_function.h> // equal_to, _Identity, _Select1st
+#include <bits/functional_hash.h>
+#include <bits/hashtable.h>
+#include <bits/unordered_set.h>
+#include <bits/range_access.h>
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/unordered_set>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/unordered_set>
+#endif
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#endif // _GLIBCXX_UNORDERED_SET
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/utility b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/utility
new file mode 100644
index 000000000..245c41fa7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/utility
@@ -0,0 +1,146 @@
+// <utility> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/utility
+ *  This is a Standard C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_UTILITY
+#define _GLIBCXX_UTILITY 1
+
+#pragma GCC system_header
+
+/**
+ * @defgroup utilities Utilities
+ *
+ * Components deemed generally useful. Includes pair, tuple,
+ * forward/move helpers, ratio, function object, metaprogramming and
+ * type traits, time, date, and memory functions.
+ */
+
+#include <bits/c++config.h>
+#include <bits/stl_relops.h>
+#include <bits/stl_pair.h>
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <bits/move.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<class _Tp>
+    class tuple_size;
+
+  template<std::size_t _Int, class _Tp>
+    class tuple_element;
+
+   // Various functions which give std::pair a tuple-like interface.
+  template<class _Tp1, class _Tp2>
+    struct tuple_size<std::pair<_Tp1, _Tp2> >
+    { static const std::size_t value = 2; };
+
+  template<class _Tp1, class _Tp2>
+    const std::size_t
+    tuple_size<std::pair<_Tp1, _Tp2> >::value;
+
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<0, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp1 type; };
+ 
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<1, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp2 type; };
+
+  template<std::size_t _Int>
+    struct __pair_get;
+
+  template<>
+    struct __pair_get<0>
+    {
+      template<typename _Tp1, typename _Tp2>
+      static _Tp1& __get(std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.first; }
+
+      template<typename _Tp1, typename _Tp2>
+      static const _Tp1& __const_get(const std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.first; }
+    };
+
+  template<>
+    struct __pair_get<1>
+    {
+      template<typename _Tp1, typename _Tp2>
+      static _Tp2& __get(std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.second; }
+
+      template<typename _Tp1, typename _Tp2>
+      static const _Tp2& __const_get(const std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.second; }
+    };
+
+  template<std::size_t _Int, class _Tp1, class _Tp2>
+    inline typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&
+    get(std::pair<_Tp1, _Tp2>& __in)
+    { return __pair_get<_Int>::__get(__in); }
+
+  template<std::size_t _Int, class _Tp1, class _Tp2>
+    inline const typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&
+    get(const std::pair<_Tp1, _Tp2>& __in)
+    { return __pair_get<_Int>::__const_get(__in); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
+
+#endif /* _GLIBCXX_UTILITY */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/valarray b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/valarray
new file mode 100644
index 000000000..9c18e0503
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/valarray
@@ -0,0 +1,1165 @@
+// The template and inlines for the -*- C++ -*- valarray class.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/valarray
+ *  This is a Standard C++ Library header. 
+ */
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
+
+#ifndef _GLIBCXX_VALARRAY
+#define _GLIBCXX_VALARRAY 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <cmath>
+#include <algorithm>
+#include <debug/debug.h>
+#include <initializer_list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<class _Clos, typename _Tp> 
+    class _Expr;
+
+  template<typename _Tp1, typename _Tp2> 
+    class _ValArray;    
+
+  template<class _Oper, template<class, class> class _Meta, class _Dom>
+    struct _UnClos;
+
+  template<class _Oper,
+        template<class, class> class _Meta1,
+        template<class, class> class _Meta2,
+        class _Dom1, class _Dom2> 
+    class _BinClos;
+
+  template<template<class, class> class _Meta, class _Dom> 
+    class _SClos;
+
+  template<template<class, class> class _Meta, class _Dom> 
+    class _GClos;
+    
+  template<template<class, class> class _Meta, class _Dom> 
+    class _IClos;
+    
+  template<template<class, class> class _Meta, class _Dom> 
+    class _ValFunClos;
+  
+  template<template<class, class> class _Meta, class _Dom> 
+    class _RefFunClos;
+
+  template<class _Tp> class valarray;   // An array of type _Tp
+  class slice;                          // BLAS-like slice out of an array
+  template<class _Tp> class slice_array;
+  class gslice;                         // generalized slice out of an array
+  template<class _Tp> class gslice_array;
+  template<class _Tp> class mask_array;     // masked array
+  template<class _Tp> class indirect_array; // indirected array
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/valarray_array.h>
+#include <bits/valarray_before.h>
+  
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup numeric_arrays Numeric Arrays
+   * @ingroup numerics
+   *
+   * Classes and functions for representing and manipulating arrays of elements.
+   * @{
+   */
+
+  /**
+   *  @brief  Smart array designed to support numeric processing.
+   *
+   *  A valarray is an array that provides constraints intended to allow for
+   *  effective optimization of numeric array processing by reducing the
+   *  aliasing that can result from pointer representations.  It represents a
+   *  one-dimensional array from which different multidimensional subsets can
+   *  be accessed and modified.
+   *  
+   *  @param  Tp  Type of object in the array.
+   */
+  template<class _Tp> 
+    class valarray
+    {
+      template<class _Op>
+	struct _UnaryOp 
+	{
+	  typedef typename __fun<_Op, _Tp>::result_type __rt;
+	  typedef _Expr<_UnClos<_Op, _ValArray, _Tp>, __rt> _Rt;
+	};
+    public:
+      typedef _Tp value_type;
+      
+	// _lib.valarray.cons_ construct/destroy:
+      ///  Construct an empty array.
+      valarray();
+
+      ///  Construct an array with @a n elements.
+      explicit valarray(size_t);
+
+      ///  Construct an array with @a n elements initialized to @a t.
+      valarray(const _Tp&, size_t);
+
+      ///  Construct an array initialized to the first @a n elements of @a t.
+      valarray(const _Tp* __restrict__, size_t);
+
+      ///  Copy constructor.
+      valarray(const valarray&);
+
+      ///  Construct an array with the same size and values in @a sa.
+      valarray(const slice_array<_Tp>&);
+
+      ///  Construct an array with the same size and values in @a ga.
+      valarray(const gslice_array<_Tp>&);
+
+      ///  Construct an array with the same size and values in @a ma.
+      valarray(const mask_array<_Tp>&);
+
+      ///  Construct an array with the same size and values in @a ia.
+      valarray(const indirect_array<_Tp>&);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      ///  Construct an array with an initializer_list of values.
+      valarray(initializer_list<_Tp>);
+#endif
+
+      template<class _Dom>
+	valarray(const _Expr<_Dom, _Tp>& __e);
+
+      ~valarray();
+
+      // _lib.valarray.assign_ assignment:
+      /**
+       *  @brief  Assign elements to an array.
+       *
+       *  Assign elements of array to values in @a v.  Results are undefined
+       *  if @a v does not have the same size as this array.
+       *
+       *  @param  v  Valarray to get values from.
+       */
+      valarray<_Tp>& operator=(const valarray<_Tp>&);
+
+      /**
+       *  @brief  Assign elements to a value.
+       *
+       *  Assign all elements of array to @a t.
+       *
+       *  @param  t  Value for elements.
+       */
+      valarray<_Tp>& operator=(const _Tp&);
+
+      /**
+       *  @brief  Assign elements to an array subset.
+       *
+       *  Assign elements of array to values in @a sa.  Results are undefined
+       *  if @a sa does not have the same size as this array.
+       *
+       *  @param  sa  Array slice to get values from.
+       */
+      valarray<_Tp>& operator=(const slice_array<_Tp>&);
+
+      /**
+       *  @brief  Assign elements to an array subset.
+       *
+       *  Assign elements of array to values in @a ga.  Results are undefined
+       *  if @a ga does not have the same size as this array.
+       *
+       *  @param  ga  Array slice to get values from.
+       */
+      valarray<_Tp>& operator=(const gslice_array<_Tp>&);
+
+      /**
+       *  @brief  Assign elements to an array subset.
+       *
+       *  Assign elements of array to values in @a ma.  Results are undefined
+       *  if @a ma does not have the same size as this array.
+       *
+       *  @param  ma  Array slice to get values from.
+       */
+      valarray<_Tp>& operator=(const mask_array<_Tp>&);
+
+      /**
+       *  @brief  Assign elements to an array subset.
+       *
+       *  Assign elements of array to values in @a ia.  Results are undefined
+       *  if @a ia does not have the same size as this array.
+       *
+       *  @param  ia  Array slice to get values from.
+       */
+      valarray<_Tp>& operator=(const indirect_array<_Tp>&);
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      /**
+       *  @brief  Assign elements to an initializer_list.
+       *
+       *  Assign elements of array to values in @a l.  Results are undefined
+       *  if @a l does not have the same size as this array.
+       *
+       *  @param  l  initializer_list to get values from.
+       */
+      valarray& operator=(initializer_list<_Tp>);
+#endif
+
+      template<class _Dom> valarray<_Tp>&
+	operator= (const _Expr<_Dom, _Tp>&);
+
+      // _lib.valarray.access_ element access:
+      /**
+       *  Return a reference to the i'th array element.  
+       *
+       *  @param  i  Index of element to return.
+       *  @return  Reference to the i'th element.
+       */
+      _Tp&                operator[](size_t);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 389. Const overload of valarray::operator[] returns by value.
+      const _Tp&          operator[](size_t) const;
+
+      // _lib.valarray.sub_ subset operations:
+      /**
+       *  @brief  Return an array subset.
+       *
+       *  Returns a new valarray containing the elements of the array
+       *  indicated by the slice argument.  The new valarray has the same size
+       *  as the input slice.  @see slice.
+       *
+       *  @param  s  The source slice.
+       *  @return  New valarray containing elements in @a s.
+       */
+      _Expr<_SClos<_ValArray, _Tp>, _Tp> operator[](slice) const;
+
+      /**
+       *  @brief  Return a reference to an array subset.
+       *
+       *  Returns a new valarray containing the elements of the array
+       *  indicated by the slice argument.  The new valarray has the same size
+       *  as the input slice.  @see slice.
+       *
+       *  @param  s  The source slice.
+       *  @return  New valarray containing elements in @a s.
+       */
+      slice_array<_Tp>    operator[](slice);
+
+      /**
+       *  @brief  Return an array subset.
+       *
+       *  Returns a slice_array referencing the elements of the array
+       *  indicated by the slice argument.  @see gslice.
+       *
+       *  @param  s  The source slice.
+       *  @return  Slice_array referencing elements indicated by @a s.
+       */
+      _Expr<_GClos<_ValArray, _Tp>, _Tp> operator[](const gslice&) const;
+
+      /**
+       *  @brief  Return a reference to an array subset.
+       *
+       *  Returns a new valarray containing the elements of the array
+       *  indicated by the gslice argument.  The new valarray has
+       *  the same size as the input gslice.  @see gslice.
+       *
+       *  @param  s  The source gslice.
+       *  @return  New valarray containing elements in @a s.
+       */
+      gslice_array<_Tp>   operator[](const gslice&);
+
+      /**
+       *  @brief  Return an array subset.
+       *
+       *  Returns a new valarray containing the elements of the array
+       *  indicated by the argument.  The input is a valarray of bool which
+       *  represents a bitmask indicating which elements should be copied into
+       *  the new valarray.  Each element of the array is added to the return
+       *  valarray if the corresponding element of the argument is true.
+       *
+       *  @param  m  The valarray bitmask.
+       *  @return  New valarray containing elements indicated by @a m.
+       */
+      valarray<_Tp>       operator[](const valarray<bool>&) const;
+
+      /**
+       *  @brief  Return a reference to an array subset.
+       *
+       *  Returns a new mask_array referencing the elements of the array
+       *  indicated by the argument.  The input is a valarray of bool which
+       *  represents a bitmask indicating which elements are part of the
+       *  subset.  Elements of the array are part of the subset if the
+       *  corresponding element of the argument is true.
+       *
+       *  @param  m  The valarray bitmask.
+       *  @return  New valarray containing elements indicated by @a m.
+       */
+      mask_array<_Tp>     operator[](const valarray<bool>&);
+
+      /**
+       *  @brief  Return an array subset.
+       *
+       *  Returns a new valarray containing the elements of the array
+       *  indicated by the argument.  The elements in the argument are
+       *  interpreted as the indices of elements of this valarray to copy to
+       *  the return valarray.
+       *
+       *  @param  i  The valarray element index list.
+       *  @return  New valarray containing elements in @a s.
+       */
+      _Expr<_IClos<_ValArray, _Tp>, _Tp>
+        operator[](const valarray<size_t>&) const;
+
+      /**
+       *  @brief  Return a reference to an array subset.
+       *
+       *  Returns an indirect_array referencing the elements of the array
+       *  indicated by the argument.  The elements in the argument are
+       *  interpreted as the indices of elements of this valarray to include
+       *  in the subset.  The returned indirect_array refers to these
+       *  elements.
+       *
+       *  @param  i  The valarray element index list.
+       *  @return  Indirect_array referencing elements in @a i.
+       */
+      indirect_array<_Tp> operator[](const valarray<size_t>&);
+
+      // _lib.valarray.unary_ unary operators:
+      ///  Return a new valarray by applying unary + to each element.
+      typename _UnaryOp<__unary_plus>::_Rt  operator+() const;
+
+      ///  Return a new valarray by applying unary - to each element.
+      typename _UnaryOp<__negate>::_Rt      operator-() const;
+
+      ///  Return a new valarray by applying unary ~ to each element.
+      typename _UnaryOp<__bitwise_not>::_Rt operator~() const;
+
+      ///  Return a new valarray by applying unary ! to each element.
+      typename _UnaryOp<__logical_not>::_Rt operator!() const;
+
+      // _lib.valarray.cassign_ computed assignment:
+      ///  Multiply each element of array by @a t.
+      valarray<_Tp>& operator*=(const _Tp&);
+
+      ///  Divide each element of array by @a t.
+      valarray<_Tp>& operator/=(const _Tp&);
+
+      ///  Set each element e of array to e % @a t.
+      valarray<_Tp>& operator%=(const _Tp&);
+
+      ///  Add @a t to each element of array.
+      valarray<_Tp>& operator+=(const _Tp&);
+
+      ///  Subtract @a t to each element of array.
+      valarray<_Tp>& operator-=(const _Tp&);
+
+      ///  Set each element e of array to e ^ @a t.
+      valarray<_Tp>& operator^=(const _Tp&);
+
+      ///  Set each element e of array to e & @a t.
+      valarray<_Tp>& operator&=(const _Tp&);
+
+      ///  Set each element e of array to e | @a t.
+      valarray<_Tp>& operator|=(const _Tp&);
+
+      ///  Left shift each element e of array by @a t bits.
+      valarray<_Tp>& operator<<=(const _Tp&);
+
+      ///  Right shift each element e of array by @a t bits.
+      valarray<_Tp>& operator>>=(const _Tp&);
+
+      ///  Multiply elements of array by corresponding elements of @a v.
+      valarray<_Tp>& operator*=(const valarray<_Tp>&);
+
+      ///  Divide elements of array by corresponding elements of @a v.
+      valarray<_Tp>& operator/=(const valarray<_Tp>&);
+
+      ///  Modulo elements of array by corresponding elements of @a v.
+      valarray<_Tp>& operator%=(const valarray<_Tp>&);
+
+      ///  Add corresponding elements of @a v to elements of array.
+      valarray<_Tp>& operator+=(const valarray<_Tp>&);
+
+      ///  Subtract corresponding elements of @a v from elements of array.
+      valarray<_Tp>& operator-=(const valarray<_Tp>&);
+
+      ///  Logical xor corresponding elements of @a v with elements of array.
+      valarray<_Tp>& operator^=(const valarray<_Tp>&);
+
+      ///  Logical or corresponding elements of @a v with elements of array.
+      valarray<_Tp>& operator|=(const valarray<_Tp>&);
+
+      ///  Logical and corresponding elements of @a v with elements of array.
+      valarray<_Tp>& operator&=(const valarray<_Tp>&);
+
+      ///  Left shift elements of array by corresponding elements of @a v.
+      valarray<_Tp>& operator<<=(const valarray<_Tp>&);
+
+      ///  Right shift elements of array by corresponding elements of @a v.
+      valarray<_Tp>& operator>>=(const valarray<_Tp>&);
+
+      template<class _Dom>
+	valarray<_Tp>& operator*=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator/=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator%=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator+=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator-=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator^=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator|=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator&=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+        valarray<_Tp>& operator<<=(const _Expr<_Dom, _Tp>&);
+      template<class _Dom>
+	valarray<_Tp>& operator>>=(const _Expr<_Dom, _Tp>&);
+
+      // _lib.valarray.members_ member functions:
+      ///  Return the number of elements in array.
+      size_t size() const;
+
+      /**
+       *  @brief  Return the sum of all elements in the array.
+       *
+       *  Accumulates the sum of all elements into a Tp using +=.  The order
+       *  of adding the elements is unspecified.
+       */
+      _Tp    sum() const;
+
+      ///  Return the minimum element using operator<().
+      _Tp    min() const;	
+
+      ///  Return the maximum element using operator<().
+      _Tp    max() const;	
+
+      /**
+       *  @brief  Return a shifted array.
+       *
+       *  A new valarray is constructed as a copy of this array with elements
+       *  in shifted positions.  For an element with index i, the new position
+       *  is i - n.  The new valarray has the same size as the current one.
+       *  New elements without a value are set to 0.  Elements whose new
+       *  position is outside the bounds of the array are discarded.
+       *
+       *  Positive arguments shift toward index 0, discarding elements [0, n).
+       *  Negative arguments discard elements from the top of the array.
+       *
+       *  @param  n  Number of element positions to shift.
+       *  @return  New valarray with elements in shifted positions.
+       */
+      valarray<_Tp> shift (int) const;
+
+      /**
+       *  @brief  Return a rotated array.
+       *
+       *  A new valarray is constructed as a copy of this array with elements
+       *  in shifted positions.  For an element with index i, the new position
+       *  is (i - n) % size().  The new valarray has the same size as the
+       *  current one.  Elements that are shifted beyond the array bounds are
+       *  shifted into the other end of the array.  No elements are lost.
+       *
+       *  Positive arguments shift toward index 0, wrapping around the top.
+       *  Negative arguments shift towards the top, wrapping around to 0.
+       *
+       *  @param  n  Number of element positions to rotate.
+       *  @return  New valarray with elements in shifted positions.
+       */
+      valarray<_Tp> cshift(int) const;
+
+      /**
+       *  @brief  Apply a function to the array.
+       *
+       *  Returns a new valarray with elements assigned to the result of
+       *  applying func to the corresponding element of this array.  The new
+       *  array has the same size as this one.
+       *
+       *  @param  func  Function of Tp returning Tp to apply.
+       *  @return  New valarray with transformed elements.
+       */
+      _Expr<_ValFunClos<_ValArray, _Tp>, _Tp> apply(_Tp func(_Tp)) const;
+
+      /**
+       *  @brief  Apply a function to the array.
+       *
+       *  Returns a new valarray with elements assigned to the result of
+       *  applying func to the corresponding element of this array.  The new
+       *  array has the same size as this one.
+       *
+       *  @param  func  Function of const Tp& returning Tp to apply.
+       *  @return  New valarray with transformed elements.
+       */
+      _Expr<_RefFunClos<_ValArray, _Tp>, _Tp> apply(_Tp func(const _Tp&)) const;
+
+      /**
+       *  @brief  Resize array.
+       *
+       *  Resize this array to @a size and set all elements to @a c.  All
+       *  references and iterators are invalidated.
+       *
+       *  @param  size  New array size.
+       *  @param  c  New value for all elements.
+       */
+      void resize(size_t __size, _Tp __c = _Tp());
+
+    private:
+      size_t _M_size;
+      _Tp* __restrict__ _M_data;
+      
+      friend class _Array<_Tp>;
+    };
+  
+  template<typename _Tp>
+    inline const _Tp&
+    valarray<_Tp>::operator[](size_t __i) const
+    { 
+      __glibcxx_requires_subscript(__i);
+      return _M_data[__i];
+    }
+
+  template<typename _Tp>
+    inline _Tp&
+    valarray<_Tp>::operator[](size_t __i)
+    { 
+      __glibcxx_requires_subscript(__i);
+      return _M_data[__i];
+    }
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#include <bits/valarray_after.h>
+#include <bits/slice_array.h>
+#include <bits/gslice.h>
+#include <bits/gslice_array.h>
+#include <bits/mask_array.h>
+#include <bits/indirect_array.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup numeric_arrays
+   * @{
+   */
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray() : _M_size(0), _M_data(0) {}
+
+  template<typename _Tp>
+    inline 
+    valarray<_Tp>::valarray(size_t __n) 
+    : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+    { std::__valarray_default_construct(_M_data, _M_data + __n); }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const _Tp& __t, size_t __n)
+    : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+    { std::__valarray_fill_construct(_M_data, _M_data + __n, __t); }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const _Tp* __restrict__ __p, size_t __n)
+    : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+    { 
+      _GLIBCXX_DEBUG_ASSERT(__p != 0 || __n == 0);
+      std::__valarray_copy_construct(__p, __p + __n, _M_data); 
+    }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const valarray<_Tp>& __v)
+    : _M_size(__v._M_size), _M_data(__valarray_get_storage<_Tp>(__v._M_size))
+    { std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size,
+				     _M_data); }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const slice_array<_Tp>& __sa)
+    : _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
+    {
+      std::__valarray_copy_construct
+	(__sa._M_array, __sa._M_sz, __sa._M_stride, _Array<_Tp>(_M_data));
+    }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const gslice_array<_Tp>& __ga)
+    : _M_size(__ga._M_index.size()),
+      _M_data(__valarray_get_storage<_Tp>(_M_size))
+    {
+      std::__valarray_copy_construct
+	(__ga._M_array, _Array<size_t>(__ga._M_index),
+	 _Array<_Tp>(_M_data), _M_size);
+    }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
+    : _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
+    {
+      std::__valarray_copy_construct
+	(__ma._M_array, __ma._M_mask, _Array<_Tp>(_M_data), _M_size);
+    }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(const indirect_array<_Tp>& __ia)
+    : _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
+    {
+      std::__valarray_copy_construct
+	(__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::valarray(initializer_list<_Tp> __l)
+    : _M_size(__l.size()), _M_data(__valarray_get_storage<_Tp>(__l.size()))
+    { std::__valarray_copy_construct (__l.begin(), __l.end(), _M_data); }
+#endif
+
+  template<typename _Tp> template<class _Dom>
+    inline
+    valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
+    : _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
+    { std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data)); }
+
+  template<typename _Tp>
+    inline
+    valarray<_Tp>::~valarray()
+    {
+      std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
+      std::__valarray_release_memory(_M_data);
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const valarray<_Tp>& __v)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 630. arrays of valarray.
+      if (_M_size == __v._M_size)
+	std::__valarray_copy(__v._M_data, _M_size, _M_data);
+      else
+	{
+	  if (_M_data)
+	    {
+	      std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
+	      std::__valarray_release_memory(_M_data);
+	    }
+	  _M_size = __v._M_size;
+	  _M_data = __valarray_get_storage<_Tp>(_M_size);
+	  std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size,
+					 _M_data);
+	}
+      return *this;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(initializer_list<_Tp> __l)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 630. arrays of valarray.
+      if (_M_size == __l.size())
+	std::__valarray_copy(__l.begin(), __l.size(), _M_data);
+      else
+	{
+	  if (_M_data)
+	    {
+	      std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
+	      std::__valarray_release_memory(_M_data);
+	    }
+	  _M_size = __l.size();
+	  _M_data = __valarray_get_storage<_Tp>(_M_size);
+	  std::__valarray_copy_construct(__l.begin(), __l.begin() + _M_size,
+					 _M_data);
+	}
+      return *this;
+    }
+#endif
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const _Tp& __t)
+    {
+      std::__valarray_fill(_M_data, _M_size, __t);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const slice_array<_Tp>& __sa)
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __sa._M_sz);
+      std::__valarray_copy(__sa._M_array, __sa._M_sz,
+			   __sa._M_stride, _Array<_Tp>(_M_data));
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const gslice_array<_Tp>& __ga)
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __ga._M_index.size());
+      std::__valarray_copy(__ga._M_array, _Array<size_t>(__ga._M_index),
+			   _Array<_Tp>(_M_data), _M_size);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const mask_array<_Tp>& __ma)
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __ma._M_sz);
+      std::__valarray_copy(__ma._M_array, __ma._M_mask,
+			   _Array<_Tp>(_M_data), _M_size);
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const indirect_array<_Tp>& __ia)
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __ia._M_sz);
+      std::__valarray_copy(__ia._M_array, __ia._M_index,
+			   _Array<_Tp>(_M_data), _M_size);
+      return *this;
+    }
+
+  template<typename _Tp> template<class _Dom>
+    inline valarray<_Tp>&
+    valarray<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e)
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __e.size());
+      std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data));
+      return *this;
+    }
+
+  template<typename _Tp>
+    inline _Expr<_SClos<_ValArray,_Tp>, _Tp>
+    valarray<_Tp>::operator[](slice __s) const
+    {
+      typedef _SClos<_ValArray,_Tp> _Closure;
+      return _Expr<_Closure, _Tp>(_Closure (_Array<_Tp>(_M_data), __s));
+    }
+
+  template<typename _Tp>
+    inline slice_array<_Tp>
+    valarray<_Tp>::operator[](slice __s)
+    { return slice_array<_Tp>(_Array<_Tp>(_M_data), __s); }
+
+  template<typename _Tp>
+    inline _Expr<_GClos<_ValArray,_Tp>, _Tp>
+    valarray<_Tp>::operator[](const gslice& __gs) const
+    {
+      typedef _GClos<_ValArray,_Tp> _Closure;
+      return _Expr<_Closure, _Tp>
+	(_Closure(_Array<_Tp>(_M_data), __gs._M_index->_M_index));
+    }
+
+  template<typename _Tp>
+    inline gslice_array<_Tp>
+    valarray<_Tp>::operator[](const gslice& __gs)
+    {
+      return gslice_array<_Tp>
+	(_Array<_Tp>(_M_data), __gs._M_index->_M_index);
+    }
+
+  template<typename _Tp>
+    inline valarray<_Tp>
+    valarray<_Tp>::operator[](const valarray<bool>& __m) const
+    {
+      size_t __s = 0;
+      size_t __e = __m.size();
+      for (size_t __i=0; __i<__e; ++__i)
+	if (__m[__i]) ++__s;
+      return valarray<_Tp>(mask_array<_Tp>(_Array<_Tp>(_M_data), __s,
+					   _Array<bool> (__m)));
+    }
+
+  template<typename _Tp>
+    inline mask_array<_Tp>
+    valarray<_Tp>::operator[](const valarray<bool>& __m)
+    {
+      size_t __s = 0;
+      size_t __e = __m.size();
+      for (size_t __i=0; __i<__e; ++__i)
+	if (__m[__i]) ++__s;
+      return mask_array<_Tp>(_Array<_Tp>(_M_data), __s, _Array<bool>(__m));
+    }
+
+  template<typename _Tp>
+    inline _Expr<_IClos<_ValArray,_Tp>, _Tp>
+    valarray<_Tp>::operator[](const valarray<size_t>& __i) const
+    {
+      typedef _IClos<_ValArray,_Tp> _Closure;
+      return _Expr<_Closure, _Tp>(_Closure(*this, __i));
+    }
+
+  template<typename _Tp>
+    inline indirect_array<_Tp>
+    valarray<_Tp>::operator[](const valarray<size_t>& __i)
+    {
+      return indirect_array<_Tp>(_Array<_Tp>(_M_data), __i.size(),
+				 _Array<size_t>(__i));
+    }
+
+  template<class _Tp>
+    inline size_t 
+    valarray<_Tp>::size() const
+    { return _M_size; }
+
+  template<class _Tp>
+    inline _Tp
+    valarray<_Tp>::sum() const
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size > 0);
+      return std::__valarray_sum(_M_data, _M_data + _M_size);
+    }
+
+  template<class _Tp>
+     inline valarray<_Tp>
+     valarray<_Tp>::shift(int __n) const
+     {
+       valarray<_Tp> __ret;
+
+       if (_M_size == 0)
+	 return __ret;
+
+       _Tp* __restrict__ __tmp_M_data =
+	 std::__valarray_get_storage<_Tp>(_M_size);
+
+       if (__n == 0)
+	 std::__valarray_copy_construct(_M_data,
+					_M_data + _M_size, __tmp_M_data);
+       else if (__n > 0)      // shift left
+	 {
+	   if (size_t(__n) > _M_size)
+	     __n = int(_M_size);
+
+	   std::__valarray_copy_construct(_M_data + __n,
+					  _M_data + _M_size, __tmp_M_data);
+	   std::__valarray_default_construct(__tmp_M_data + _M_size - __n,
+					     __tmp_M_data + _M_size);
+	 }
+       else                   // shift right
+	 {
+	   if (-size_t(__n) > _M_size)
+	     __n = -int(_M_size);
+
+	   std::__valarray_copy_construct(_M_data, _M_data + _M_size + __n,
+					  __tmp_M_data - __n);
+	   std::__valarray_default_construct(__tmp_M_data,
+					     __tmp_M_data - __n);
+	 }
+
+       __ret._M_size = _M_size;
+       __ret._M_data = __tmp_M_data;
+       return __ret;
+     }
+
+  template<class _Tp>
+     inline valarray<_Tp>
+     valarray<_Tp>::cshift(int __n) const
+     {
+       valarray<_Tp> __ret;
+
+       if (_M_size == 0)
+	 return __ret;
+
+       _Tp* __restrict__ __tmp_M_data =
+	 std::__valarray_get_storage<_Tp>(_M_size);
+
+       if (__n == 0)
+	 std::__valarray_copy_construct(_M_data,
+					_M_data + _M_size, __tmp_M_data);
+       else if (__n > 0)      // cshift left
+	 {
+	   if (size_t(__n) > _M_size)
+	     __n = int(__n % _M_size);
+
+	   std::__valarray_copy_construct(_M_data, _M_data + __n,
+					  __tmp_M_data + _M_size - __n);
+	   std::__valarray_copy_construct(_M_data + __n, _M_data + _M_size,
+					  __tmp_M_data);
+	 }
+       else                   // cshift right
+	 {
+	   if (-size_t(__n) > _M_size)
+	     __n = -int(-size_t(__n) % _M_size);
+
+	   std::__valarray_copy_construct(_M_data + _M_size + __n,
+					  _M_data + _M_size, __tmp_M_data);
+	   std::__valarray_copy_construct(_M_data, _M_data + _M_size + __n,
+					  __tmp_M_data - __n);
+	 }
+
+       __ret._M_size = _M_size;
+       __ret._M_data = __tmp_M_data;
+       return __ret;
+     }
+
+  template<class _Tp>
+    inline void
+    valarray<_Tp>::resize(size_t __n, _Tp __c)
+    {
+      // This complication is so to make valarray<valarray<T> > work
+      // even though it is not required by the standard.  Nobody should
+      // be saying valarray<valarray<T> > anyway.  See the specs.
+      std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
+      if (_M_size != __n)
+	{
+	  std::__valarray_release_memory(_M_data);
+	  _M_size = __n;
+	  _M_data = __valarray_get_storage<_Tp>(__n);
+	}
+      std::__valarray_fill_construct(_M_data, _M_data + __n, __c);
+    }
+    
+  template<typename _Tp>
+    inline _Tp
+    valarray<_Tp>::min() const
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size > 0);
+      return *std::min_element(_M_data, _M_data + _M_size);
+    }
+
+  template<typename _Tp>
+    inline _Tp
+    valarray<_Tp>::max() const
+    {
+      _GLIBCXX_DEBUG_ASSERT(_M_size > 0);
+      return *std::max_element(_M_data, _M_data + _M_size);
+    }
+  
+  template<class _Tp>
+    inline _Expr<_ValFunClos<_ValArray, _Tp>, _Tp>
+    valarray<_Tp>::apply(_Tp func(_Tp)) const
+    {
+      typedef _ValFunClos<_ValArray, _Tp> _Closure;
+      return _Expr<_Closure, _Tp>(_Closure(*this, func));
+    }
+
+  template<class _Tp>
+    inline _Expr<_RefFunClos<_ValArray, _Tp>, _Tp>
+    valarray<_Tp>::apply(_Tp func(const _Tp &)) const
+    {
+      typedef _RefFunClos<_ValArray, _Tp> _Closure;
+      return _Expr<_Closure, _Tp>(_Closure(*this, func));
+    }
+
+#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name)                     \
+  template<typename _Tp>						\
+    inline typename valarray<_Tp>::template _UnaryOp<_Name>::_Rt      	\
+    valarray<_Tp>::operator _Op() const					\
+    {									\
+      typedef _UnClos<_Name, _ValArray, _Tp> _Closure;	                \
+      typedef typename __fun<_Name, _Tp>::result_type _Rt;              \
+      return _Expr<_Closure, _Rt>(_Closure(*this));			\
+    }
+
+    _DEFINE_VALARRAY_UNARY_OPERATOR(+, __unary_plus)
+    _DEFINE_VALARRAY_UNARY_OPERATOR(-, __negate)
+    _DEFINE_VALARRAY_UNARY_OPERATOR(~, __bitwise_not)
+    _DEFINE_VALARRAY_UNARY_OPERATOR (!, __logical_not)
+
+#undef _DEFINE_VALARRAY_UNARY_OPERATOR
+
+#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name)               \
+  template<class _Tp>							\
+    inline valarray<_Tp>&						\
+    valarray<_Tp>::operator _Op##=(const _Tp &__t)			\
+    {									\
+      _Array_augmented_##_Name(_Array<_Tp>(_M_data), _M_size, __t);	\
+      return *this;							\
+    }									\
+									\
+  template<class _Tp>							\
+    inline valarray<_Tp>&						\
+    valarray<_Tp>::operator _Op##=(const valarray<_Tp> &__v)		\
+    {									\
+      _GLIBCXX_DEBUG_ASSERT(_M_size == __v._M_size);                    \
+      _Array_augmented_##_Name(_Array<_Tp>(_M_data), _M_size, 		\
+			       _Array<_Tp>(__v._M_data));		\
+      return *this;							\
+    }
+
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(+, __plus)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(-, __minus)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(*, __multiplies)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(/, __divides)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(%, __modulus)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(^, __bitwise_xor)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(&, __bitwise_and)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(|, __bitwise_or)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(<<, __shift_left)
+_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT
+
+#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name)          \
+  template<class _Tp> template<class _Dom>				\
+    inline valarray<_Tp>&						\
+    valarray<_Tp>::operator _Op##=(const _Expr<_Dom, _Tp>& __e)		\
+    {									\
+      _Array_augmented_##_Name(_Array<_Tp>(_M_data), __e, _M_size);	\
+      return *this;							\
+    }
+
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(+, __plus)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(-, __minus)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(*, __multiplies)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(/, __divides)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(%, __modulus)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(^, __bitwise_xor)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(&, __bitwise_and)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(|, __bitwise_or)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(<<, __shift_left)
+_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, __shift_right)
+
+#undef _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT
+    
+
+#define _DEFINE_BINARY_OPERATOR(_Op, _Name)				\
+  template<typename _Tp>						\
+    inline _Expr<_BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp>,       \
+                 typename __fun<_Name, _Tp>::result_type>               \
+    operator _Op(const valarray<_Tp>& __v, const valarray<_Tp>& __w)	\
+    {									\
+      _GLIBCXX_DEBUG_ASSERT(__v.size() == __w.size());                  \
+      typedef _BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp> _Closure; \
+      typedef typename __fun<_Name, _Tp>::result_type _Rt;              \
+      return _Expr<_Closure, _Rt>(_Closure(__v, __w));                  \
+    }									\
+									\
+  template<typename _Tp>						\
+    inline _Expr<_BinClos<_Name, _ValArray,_Constant, _Tp, _Tp>,        \
+                 typename __fun<_Name, _Tp>::result_type>               \
+    operator _Op(const valarray<_Tp>& __v, const _Tp& __t)		\
+    {									\
+      typedef _BinClos<_Name, _ValArray, _Constant, _Tp, _Tp> _Closure;	\
+      typedef typename __fun<_Name, _Tp>::result_type _Rt;              \
+      return _Expr<_Closure, _Rt>(_Closure(__v, __t));	                \
+    }									\
+									\
+  template<typename _Tp>						\
+    inline _Expr<_BinClos<_Name, _Constant, _ValArray, _Tp, _Tp>,       \
+                 typename __fun<_Name, _Tp>::result_type>               \
+    operator _Op(const _Tp& __t, const valarray<_Tp>& __v)		\
+    {									\
+      typedef _BinClos<_Name, _Constant, _ValArray, _Tp, _Tp> _Closure; \
+      typedef typename __fun<_Name, _Tp>::result_type _Rt;              \
+      return _Expr<_Closure, _Rt>(_Closure(__t, __v));        	        \
+    }
+
+_DEFINE_BINARY_OPERATOR(+, __plus)
+_DEFINE_BINARY_OPERATOR(-, __minus)
+_DEFINE_BINARY_OPERATOR(*, __multiplies)
+_DEFINE_BINARY_OPERATOR(/, __divides)
+_DEFINE_BINARY_OPERATOR(%, __modulus)
+_DEFINE_BINARY_OPERATOR(^, __bitwise_xor)
+_DEFINE_BINARY_OPERATOR(&, __bitwise_and)
+_DEFINE_BINARY_OPERATOR(|, __bitwise_or)
+_DEFINE_BINARY_OPERATOR(<<, __shift_left)
+_DEFINE_BINARY_OPERATOR(>>, __shift_right)
+_DEFINE_BINARY_OPERATOR(&&, __logical_and)
+_DEFINE_BINARY_OPERATOR(||, __logical_or)
+_DEFINE_BINARY_OPERATOR(==, __equal_to)
+_DEFINE_BINARY_OPERATOR(!=, __not_equal_to)
+_DEFINE_BINARY_OPERATOR(<, __less)
+_DEFINE_BINARY_OPERATOR(>, __greater)
+_DEFINE_BINARY_OPERATOR(<=, __less_equal)
+_DEFINE_BINARY_OPERATOR(>=, __greater_equal)
+
+#undef _DEFINE_BINARY_OPERATOR
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  /**
+   *  @brief  Return an iterator pointing to the first element of
+   *          the valarray.
+   *  @param  va  valarray.
+   */
+  template<class _Tp>
+    inline _Tp*
+    begin(valarray<_Tp>& __va)
+    { return std::__addressof(__va[0]); }
+
+  /**
+   *  @brief  Return an iterator pointing to the first element of
+   *          the const valarray.
+   *  @param  va  valarray.
+   */
+  template<class _Tp>
+    inline const _Tp*
+    begin(const valarray<_Tp>& __va)
+    { return std::__addressof(__va[0]); }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element of
+   *          the valarray.
+   *  @param  va  valarray.
+   */
+  template<class _Tp>
+    inline _Tp*
+    end(valarray<_Tp>& __va)
+    { return std::__addressof(__va[0]) + __va.size(); }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element of
+   *          the const valarray.
+   *  @param  va  valarray.
+   */
+  template<class _Tp>
+    inline const _Tp*
+    end(const valarray<_Tp>& __va)
+    { return std::__addressof(__va[0]) + __va.size(); }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+  // @} group numeric_arrays
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_VALARRAY */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/vector b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/vector
new file mode 100644
index 000000000..5ea82d873
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/std/vector
@@ -0,0 +1,82 @@
+// <vector> -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ ded "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+/** @file include/vector
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_VECTOR
+#define _GLIBCXX_VECTOR 1
+
+#pragma GCC system_header
+
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_construct.h>
+#include <bits/stl_uninitialized.h>
+#include <bits/stl_vector.h>
+#include <bits/stl_bvector.h> 
+#include <bits/range_access.h>
+
+#ifndef _GLIBCXX_EXPORT_TEMPLATE
+# include <bits/vector.tcc>
+#endif
+
+#ifdef _GLIBCXX_DEBUG
+# include <debug/vector>
+#endif
+
+#ifdef _GLIBCXX_PROFILE
+# include <profile/vector>
+#endif
+
+#endif /* _GLIBCXX_VECTOR */
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/array b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/array
new file mode 100644
index 000000000..058fcfad6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/array
@@ -0,0 +1,252 @@
+// class template array -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/array
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_ARRAY
+#define _GLIBCXX_TR1_ARRAY 1
+
+#pragma GCC system_header
+
+#include <bits/stl_algobase.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief A standard container for storing a fixed size sequence of elements.
+   *
+   *  @ingroup sequences
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, a
+   *  <a href="tables.html#66">reversible container</a>, and a
+   *  <a href="tables.html#67">sequence</a>.
+   *
+   *  Sets support random access iterators.
+   *
+   *  @param  Tp  Type of element. Required to be a complete type.
+   *  @param  N  Number of elements.
+  */
+  template<typename _Tp, std::size_t _Nm>
+    struct array
+    {
+      typedef _Tp 	    			      value_type;
+      typedef value_type&                   	      reference;
+      typedef const value_type&             	      const_reference;
+      typedef value_type*          		      iterator;
+      typedef const value_type*			      const_iterator;
+      typedef std::size_t                    	      size_type;
+      typedef std::ptrdiff_t                   	      difference_type;
+      typedef std::reverse_iterator<iterator>	      reverse_iterator;
+      typedef std::reverse_iterator<const_iterator>   const_reverse_iterator;
+
+      // Support for zero-sized arrays mandatory.
+      value_type _M_instance[_Nm ? _Nm : 1];
+
+      // No explicit construct/copy/destroy for aggregate type.
+
+      void
+      assign(const value_type& __u)
+      { std::fill_n(begin(), size(), __u); }
+
+      void
+      swap(array& __other)
+      { std::swap_ranges(begin(), end(), __other.begin()); }
+
+      // Iterators.
+      iterator
+      begin()
+      { return iterator(std::__addressof(_M_instance[0])); }
+
+      const_iterator
+      begin() const 
+      { return const_iterator(std::__addressof(_M_instance[0])); }
+
+      iterator
+      end()
+      { return iterator(std::__addressof(_M_instance[_Nm])); }
+
+      const_iterator
+      end() const
+      { return const_iterator(std::__addressof(_M_instance[_Nm])); }
+
+      reverse_iterator 
+      rbegin()
+      { return reverse_iterator(end()); }
+
+      const_reverse_iterator 
+      rbegin() const
+      { return const_reverse_iterator(end()); }
+
+      reverse_iterator 
+      rend()
+      { return reverse_iterator(begin()); }
+
+      const_reverse_iterator 
+      rend() const
+      { return const_reverse_iterator(begin()); }
+
+      // Capacity.
+      size_type 
+      size() const { return _Nm; }
+
+      size_type 
+      max_size() const { return _Nm; }
+
+      bool 
+      empty() const { return size() == 0; }
+
+      // Element access.
+      reference
+      operator[](size_type __n)
+      { return _M_instance[__n]; }
+
+      const_reference
+      operator[](size_type __n) const
+      { return _M_instance[__n]; }
+
+      reference
+      at(size_type __n)
+      {
+	if (__n >= _Nm)
+	  std::__throw_out_of_range(__N("array::at"));
+	return _M_instance[__n];
+      }
+
+      const_reference
+      at(size_type __n) const
+      {
+	if (__n >= _Nm)
+	  std::__throw_out_of_range(__N("array::at"));
+	return _M_instance[__n];
+      }
+
+      reference 
+      front()
+      { return *begin(); }
+
+      const_reference 
+      front() const
+      { return *begin(); }
+
+      reference 
+      back()
+      { return _Nm ? *(end() - 1) : *end(); }
+
+      const_reference 
+      back() const
+      { return _Nm ? *(end() - 1) : *end(); }
+
+      _Tp*
+      data()
+      { return std::__addressof(_M_instance[0]); }
+
+      const _Tp*
+      data() const
+      { return std::__addressof(_M_instance[0]); }
+    };
+
+  // Array comparisons.
+  template<typename _Tp, std::size_t _Nm>
+    inline bool 
+    operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return std::equal(__one.begin(), __one.end(), __two.begin()); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one == __two); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
+    { 
+      return std::lexicographical_compare(__a.begin(), __a.end(),
+					  __b.begin(), __b.end()); 
+    }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return __two < __one; }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one > __two); }
+
+  template<typename _Tp, std::size_t _Nm>
+    inline bool
+    operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
+    { return !(__one < __two); }
+
+  // Specialized algorithms [6.2.2.2].
+  template<typename _Tp, std::size_t _Nm>
+    inline void
+    swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
+    { __one.swap(__two); }
+
+  // Tuple interface to class template array [6.2.2.5].
+
+  /// tuple_size
+  template<typename _Tp> 
+    class tuple_size;
+
+  /// tuple_element
+  template<int _Int, typename _Tp>
+    class tuple_element;
+
+  template<typename _Tp, std::size_t _Nm>
+    struct tuple_size<array<_Tp, _Nm> >
+    { static const int value = _Nm; };
+
+  template<typename _Tp, std::size_t _Nm>
+    const int
+    tuple_size<array<_Tp, _Nm> >::value;  
+
+  template<int _Int, typename _Tp, std::size_t _Nm>
+    struct tuple_element<_Int, array<_Tp, _Nm> >
+    { typedef _Tp type; };
+
+  template<int _Int, typename _Tp, std::size_t _Nm>
+    inline _Tp&
+    get(array<_Tp, _Nm>& __arr)
+    { return __arr[_Int]; }
+
+  template<int _Int, typename _Tp, std::size_t _Nm>
+    inline const _Tp&
+    get(const array<_Tp, _Nm>& __arr)
+    { return __arr[_Int]; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_ARRAY
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/bessel_function.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/bessel_function.tcc
new file mode 100644
index 000000000..b525ebc10
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/bessel_function.tcc
@@ -0,0 +1,628 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/bessel_function.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland.
+//
+// References:
+//   (1) Handbook of Mathematical Functions,
+//       ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 9, pp. 355-434, Section 10 pp. 435-478
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 240-245
+
+#ifndef _GLIBCXX_TR1_BESSEL_FUNCTION_TCC
+#define _GLIBCXX_TR1_BESSEL_FUNCTION_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief Compute the gamma functions required by the Temme series
+     *          expansions of @f$ N_\nu(x) @f$ and @f$ K_\nu(x) @f$.
+     *   @f[
+     *     \Gamma_1 = \frac{1}{2\mu}
+     *                [\frac{1}{\Gamma(1 - \mu)} - \frac{1}{\Gamma(1 + \mu)}]
+     *   @f]
+     *   and
+     *   @f[
+     *     \Gamma_2 = \frac{1}{2}
+     *                [\frac{1}{\Gamma(1 - \mu)} + \frac{1}{\Gamma(1 + \mu)}]
+     *   @f]
+     *   where @f$ -1/2 <= \mu <= 1/2 @f$ is @f$ \mu = \nu - N @f$ and @f$ N @f$.
+     *   is the nearest integer to @f$ \nu @f$.
+     *   The values of \f$ \Gamma(1 + \mu) \f$ and \f$ \Gamma(1 - \mu) \f$
+     *   are returned as well.
+     * 
+     *   The accuracy requirements on this are exquisite.
+     *
+     *   @param __mu     The input parameter of the gamma functions.
+     *   @param __gam1   The output function \f$ \Gamma_1(\mu) \f$
+     *   @param __gam2   The output function \f$ \Gamma_2(\mu) \f$
+     *   @param __gampl  The output function \f$ \Gamma(1 + \mu) \f$
+     *   @param __gammi  The output function \f$ \Gamma(1 - \mu) \f$
+     */
+    template <typename _Tp>
+    void
+    __gamma_temme(const _Tp __mu,
+                   _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi)
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      __gampl = _Tp(1) / std::tr1::tgamma(_Tp(1) + __mu);
+      __gammi = _Tp(1) / std::tr1::tgamma(_Tp(1) - __mu);
+#else
+      __gampl = _Tp(1) / __gamma(_Tp(1) + __mu);
+      __gammi = _Tp(1) / __gamma(_Tp(1) - __mu);
+#endif
+
+      if (std::abs(__mu) < std::numeric_limits<_Tp>::epsilon())
+        __gam1 = -_Tp(__numeric_constants<_Tp>::__gamma_e());
+      else
+        __gam1 = (__gammi - __gampl) / (_Tp(2) * __mu);
+
+      __gam2 = (__gammi + __gampl) / (_Tp(2));
+
+      return;
+    }
+
+
+    /**
+     *   @brief  Compute the Bessel @f$ J_\nu(x) @f$ and Neumann
+     *           @f$ N_\nu(x) @f$ functions and their first derivatives
+     *           @f$ J'_\nu(x) @f$ and @f$ N'_\nu(x) @f$ respectively.
+     *           These four functions are computed together for numerical
+     *           stability.
+     *
+     *   @param  __nu  The order of the Bessel functions.
+     *   @param  __x   The argument of the Bessel functions.
+     *   @param  __Jnu  The output Bessel function of the first kind.
+     *   @param  __Nnu  The output Neumann function (Bessel function of the second kind).
+     *   @param  __Jpnu  The output derivative of the Bessel function of the first kind.
+     *   @param  __Npnu  The output derivative of the Neumann function.
+     */
+    template <typename _Tp>
+    void
+    __bessel_jn(const _Tp __nu, const _Tp __x,
+                _Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu)
+    {
+      if (__x == _Tp(0))
+        {
+          if (__nu == _Tp(0))
+            {
+              __Jnu = _Tp(1);
+              __Jpnu = _Tp(0);
+            }
+          else if (__nu == _Tp(1))
+            {
+              __Jnu = _Tp(0);
+              __Jpnu = _Tp(0.5L);
+            }
+          else
+            {
+              __Jnu = _Tp(0);
+              __Jpnu = _Tp(0);
+            }
+          __Nnu = -std::numeric_limits<_Tp>::infinity();
+          __Npnu = std::numeric_limits<_Tp>::infinity();
+          return;
+        }
+
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      //  When the multiplier is N i.e.
+      //  fp_min = N * min()
+      //  Then J_0 and N_0 tank at x = 8 * N (J_0 = 0 and N_0 = nan)!
+      //const _Tp __fp_min = _Tp(20) * std::numeric_limits<_Tp>::min();
+      const _Tp __fp_min = std::sqrt(std::numeric_limits<_Tp>::min());
+      const int __max_iter = 15000;
+      const _Tp __x_min = _Tp(2);
+
+      const int __nl = (__x < __x_min
+                    ? static_cast<int>(__nu + _Tp(0.5L))
+                    : std::max(0, static_cast<int>(__nu - __x + _Tp(1.5L))));
+
+      const _Tp __mu = __nu - __nl;
+      const _Tp __mu2 = __mu * __mu;
+      const _Tp __xi = _Tp(1) / __x;
+      const _Tp __xi2 = _Tp(2) * __xi;
+      _Tp __w = __xi2 / __numeric_constants<_Tp>::__pi();
+      int __isign = 1;
+      _Tp __h = __nu * __xi;
+      if (__h < __fp_min)
+        __h = __fp_min;
+      _Tp __b = __xi2 * __nu;
+      _Tp __d = _Tp(0);
+      _Tp __c = __h;
+      int __i;
+      for (__i = 1; __i <= __max_iter; ++__i)
+        {
+          __b += __xi2;
+          __d = __b - __d;
+          if (std::abs(__d) < __fp_min)
+            __d = __fp_min;
+          __c = __b - _Tp(1) / __c;
+          if (std::abs(__c) < __fp_min)
+            __c = __fp_min;
+          __d = _Tp(1) / __d;
+          const _Tp __del = __c * __d;
+          __h *= __del;
+          if (__d < _Tp(0))
+            __isign = -__isign;
+          if (std::abs(__del - _Tp(1)) < __eps)
+            break;
+        }
+      if (__i > __max_iter)
+        std::__throw_runtime_error(__N("Argument x too large in __bessel_jn; "
+                                       "try asymptotic expansion."));
+      _Tp __Jnul = __isign * __fp_min;
+      _Tp __Jpnul = __h * __Jnul;
+      _Tp __Jnul1 = __Jnul;
+      _Tp __Jpnu1 = __Jpnul;
+      _Tp __fact = __nu * __xi;
+      for ( int __l = __nl; __l >= 1; --__l )
+        {
+          const _Tp __Jnutemp = __fact * __Jnul + __Jpnul;
+          __fact -= __xi;
+          __Jpnul = __fact * __Jnutemp - __Jnul;
+          __Jnul = __Jnutemp;
+        }
+      if (__Jnul == _Tp(0))
+        __Jnul = __eps;
+      _Tp __f= __Jpnul / __Jnul;
+      _Tp __Nmu, __Nnu1, __Npmu, __Jmu;
+      if (__x < __x_min)
+        {
+          const _Tp __x2 = __x / _Tp(2);
+          const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu;
+          _Tp __fact = (std::abs(__pimu) < __eps
+                      ? _Tp(1) : __pimu / std::sin(__pimu));
+          _Tp __d = -std::log(__x2);
+          _Tp __e = __mu * __d;
+          _Tp __fact2 = (std::abs(__e) < __eps
+                       ? _Tp(1) : std::sinh(__e) / __e);
+          _Tp __gam1, __gam2, __gampl, __gammi;
+          __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi);
+          _Tp __ff = (_Tp(2) / __numeric_constants<_Tp>::__pi())
+                   * __fact * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d);
+          __e = std::exp(__e);
+          _Tp __p = __e / (__numeric_constants<_Tp>::__pi() * __gampl);
+          _Tp __q = _Tp(1) / (__e * __numeric_constants<_Tp>::__pi() * __gammi);
+          const _Tp __pimu2 = __pimu / _Tp(2);
+          _Tp __fact3 = (std::abs(__pimu2) < __eps
+                       ? _Tp(1) : std::sin(__pimu2) / __pimu2 );
+          _Tp __r = __numeric_constants<_Tp>::__pi() * __pimu2 * __fact3 * __fact3;
+          _Tp __c = _Tp(1);
+          __d = -__x2 * __x2;
+          _Tp __sum = __ff + __r * __q;
+          _Tp __sum1 = __p;
+          for (__i = 1; __i <= __max_iter; ++__i)
+            {
+              __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2);
+              __c *= __d / _Tp(__i);
+              __p /= _Tp(__i) - __mu;
+              __q /= _Tp(__i) + __mu;
+              const _Tp __del = __c * (__ff + __r * __q);
+              __sum += __del; 
+              const _Tp __del1 = __c * __p - __i * __del;
+              __sum1 += __del1;
+              if ( std::abs(__del) < __eps * (_Tp(1) + std::abs(__sum)) )
+                break;
+            }
+          if ( __i > __max_iter )
+            std::__throw_runtime_error(__N("Bessel y series failed to converge "
+                                           "in __bessel_jn."));
+          __Nmu = -__sum;
+          __Nnu1 = -__sum1 * __xi2;
+          __Npmu = __mu * __xi * __Nmu - __Nnu1;
+          __Jmu = __w / (__Npmu - __f * __Nmu);
+        }
+      else
+        {
+          _Tp __a = _Tp(0.25L) - __mu2;
+          _Tp __q = _Tp(1);
+          _Tp __p = -__xi / _Tp(2);
+          _Tp __br = _Tp(2) * __x;
+          _Tp __bi = _Tp(2);
+          _Tp __fact = __a * __xi / (__p * __p + __q * __q);
+          _Tp __cr = __br + __q * __fact;
+          _Tp __ci = __bi + __p * __fact;
+          _Tp __den = __br * __br + __bi * __bi;
+          _Tp __dr = __br / __den;
+          _Tp __di = -__bi / __den;
+          _Tp __dlr = __cr * __dr - __ci * __di;
+          _Tp __dli = __cr * __di + __ci * __dr;
+          _Tp __temp = __p * __dlr - __q * __dli;
+          __q = __p * __dli + __q * __dlr;
+          __p = __temp;
+          int __i;
+          for (__i = 2; __i <= __max_iter; ++__i)
+            {
+              __a += _Tp(2 * (__i - 1));
+              __bi += _Tp(2);
+              __dr = __a * __dr + __br;
+              __di = __a * __di + __bi;
+              if (std::abs(__dr) + std::abs(__di) < __fp_min)
+                __dr = __fp_min;
+              __fact = __a / (__cr * __cr + __ci * __ci);
+              __cr = __br + __cr * __fact;
+              __ci = __bi - __ci * __fact;
+              if (std::abs(__cr) + std::abs(__ci) < __fp_min)
+                __cr = __fp_min;
+              __den = __dr * __dr + __di * __di;
+              __dr /= __den;
+              __di /= -__den;
+              __dlr = __cr * __dr - __ci * __di;
+              __dli = __cr * __di + __ci * __dr;
+              __temp = __p * __dlr - __q * __dli;
+              __q = __p * __dli + __q * __dlr;
+              __p = __temp;
+              if (std::abs(__dlr - _Tp(1)) + std::abs(__dli) < __eps)
+                break;
+          }
+          if (__i > __max_iter)
+            std::__throw_runtime_error(__N("Lentz's method failed "
+                                           "in __bessel_jn."));
+          const _Tp __gam = (__p - __f) / __q;
+          __Jmu = std::sqrt(__w / ((__p - __f) * __gam + __q));
+#if _GLIBCXX_USE_C99_MATH_TR1
+          __Jmu = std::tr1::copysign(__Jmu, __Jnul);
+#else
+          if (__Jmu * __Jnul < _Tp(0))
+            __Jmu = -__Jmu;
+#endif
+          __Nmu = __gam * __Jmu;
+          __Npmu = (__p + __q / __gam) * __Nmu;
+          __Nnu1 = __mu * __xi * __Nmu - __Npmu;
+      }
+      __fact = __Jmu / __Jnul;
+      __Jnu = __fact * __Jnul1;
+      __Jpnu = __fact * __Jpnu1;
+      for (__i = 1; __i <= __nl; ++__i)
+        {
+          const _Tp __Nnutemp = (__mu + __i) * __xi2 * __Nnu1 - __Nmu;
+          __Nmu = __Nnu1;
+          __Nnu1 = __Nnutemp;
+        }
+      __Nnu = __Nmu;
+      __Npnu = __nu * __xi * __Nmu - __Nnu1;
+
+      return;
+    }
+
+
+    /**
+     *   @brief This routine computes the asymptotic cylindrical Bessel
+     *          and Neumann functions of order nu: \f$ J_{\nu} \f$,
+     *          \f$ N_{\nu} \f$.
+     *
+     *   References:
+     *    (1) Handbook of Mathematical Functions,
+     *        ed. Milton Abramowitz and Irene A. Stegun,
+     *        Dover Publications,
+     *        Section 9 p. 364, Equations 9.2.5-9.2.10
+     *
+     *   @param  __nu  The order of the Bessel functions.
+     *   @param  __x   The argument of the Bessel functions.
+     *   @param  __Jnu  The output Bessel function of the first kind.
+     *   @param  __Nnu  The output Neumann function (Bessel function of the second kind).
+     */
+    template <typename _Tp>
+    void
+    __cyl_bessel_jn_asymp(const _Tp __nu, const _Tp __x,
+                          _Tp & __Jnu, _Tp & __Nnu)
+    {
+      const _Tp __coef = std::sqrt(_Tp(2)
+                             / (__numeric_constants<_Tp>::__pi() * __x));
+      const _Tp __mu   = _Tp(4) * __nu * __nu;
+      const _Tp __mum1 = __mu - _Tp(1);
+      const _Tp __mum9 = __mu - _Tp(9);
+      const _Tp __mum25 = __mu - _Tp(25);
+      const _Tp __mum49 = __mu - _Tp(49);
+      const _Tp __xx = _Tp(64) * __x * __x;
+      const _Tp __P = _Tp(1) - __mum1 * __mum9 / (_Tp(2) * __xx)
+                    * (_Tp(1) - __mum25 * __mum49 / (_Tp(12) * __xx));
+      const _Tp __Q = __mum1 / (_Tp(8) * __x)
+                    * (_Tp(1) - __mum9 * __mum25 / (_Tp(6) * __xx));
+
+      const _Tp __chi = __x - (__nu + _Tp(0.5L))
+                            * __numeric_constants<_Tp>::__pi_2();
+      const _Tp __c = std::cos(__chi);
+      const _Tp __s = std::sin(__chi);
+
+      __Jnu = __coef * (__c * __P - __s * __Q);
+      __Nnu = __coef * (__s * __P + __c * __Q);
+
+      return;
+    }
+
+
+    /**
+     *   @brief This routine returns the cylindrical Bessel functions
+     *          of order \f$ \nu \f$: \f$ J_{\nu} \f$ or \f$ I_{\nu} \f$
+     *          by series expansion.
+     *
+     *   The modified cylindrical Bessel function is:
+     *   @f[
+     *    Z_{\nu}(x) = \sum_{k=0}^{\infty}
+     *              \frac{\sigma^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)}
+     *   @f]
+     *   where \f$ \sigma = +1 \f$ or\f$  -1 \f$ for
+     *   \f$ Z = I \f$ or \f$ J \f$ respectively.
+     * 
+     *   See Abramowitz & Stegun, 9.1.10
+     *       Abramowitz & Stegun, 9.6.7
+     *    (1) Handbook of Mathematical Functions,
+     *        ed. Milton Abramowitz and Irene A. Stegun,
+     *        Dover Publications,
+     *        Equation 9.1.10 p. 360 and Equation 9.6.10 p. 375
+     *
+     *   @param  __nu  The order of the Bessel function.
+     *   @param  __x   The argument of the Bessel function.
+     *   @param  __sgn  The sign of the alternate terms
+     *                  -1 for the Bessel function of the first kind.
+     *                  +1 for the modified Bessel function of the first kind.
+     *   @return  The output Bessel function.
+     */
+    template <typename _Tp>
+    _Tp
+    __cyl_bessel_ij_series(const _Tp __nu, const _Tp __x, const _Tp __sgn,
+                           const unsigned int __max_iter)
+    {
+
+      const _Tp __x2 = __x / _Tp(2);
+      _Tp __fact = __nu * std::log(__x2);
+#if _GLIBCXX_USE_C99_MATH_TR1
+      __fact -= std::tr1::lgamma(__nu + _Tp(1));
+#else
+      __fact -= __log_gamma(__nu + _Tp(1));
+#endif
+      __fact = std::exp(__fact);
+      const _Tp __xx4 = __sgn * __x2 * __x2;
+      _Tp __Jn = _Tp(1);
+      _Tp __term = _Tp(1);
+
+      for (unsigned int __i = 1; __i < __max_iter; ++__i)
+        {
+          __term *= __xx4 / (_Tp(__i) * (__nu + _Tp(__i)));
+          __Jn += __term;
+          if (std::abs(__term / __Jn) < std::numeric_limits<_Tp>::epsilon())
+            break;
+        }
+
+      return __fact * __Jn;
+    }
+
+
+    /**
+     *   @brief  Return the Bessel function of order \f$ \nu \f$:
+     *           \f$ J_{\nu}(x) \f$.
+     *
+     *   The cylindrical Bessel function is:
+     *   @f[
+     *    J_{\nu}(x) = \sum_{k=0}^{\infty}
+     *              \frac{(-1)^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)}
+     *   @f]
+     *
+     *   @param  __nu  The order of the Bessel function.
+     *   @param  __x   The argument of the Bessel function.
+     *   @return  The output Bessel function.
+     */
+    template<typename _Tp>
+    _Tp
+    __cyl_bessel_j(const _Tp __nu, const _Tp __x)
+    {
+      if (__nu < _Tp(0) || __x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __cyl_bessel_j."));
+      else if (__isnan(__nu) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x * __x < _Tp(10) * (__nu + _Tp(1)))
+        return __cyl_bessel_ij_series(__nu, __x, -_Tp(1), 200);
+      else if (__x > _Tp(1000))
+        {
+          _Tp __J_nu, __N_nu;
+          __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu);
+          return __J_nu;
+        }
+      else
+        {
+          _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
+          __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
+          return __J_nu;
+        }
+    }
+
+
+    /**
+     *   @brief  Return the Neumann function of order \f$ \nu \f$:
+     *           \f$ N_{\nu}(x) \f$.
+     *
+     *   The Neumann function is defined by:
+     *   @f[
+     *      N_{\nu}(x) = \frac{J_{\nu}(x) \cos \nu\pi - J_{-\nu}(x)}
+     *                        {\sin \nu\pi}
+     *   @f]
+     *   where for integral \f$ \nu = n \f$ a limit is taken:
+     *   \f$ lim_{\nu \to n} \f$.
+     *
+     *   @param  __nu  The order of the Neumann function.
+     *   @param  __x   The argument of the Neumann function.
+     *   @return  The output Neumann function.
+     */
+    template<typename _Tp>
+    _Tp
+    __cyl_neumann_n(const _Tp __nu, const _Tp __x)
+    {
+      if (__nu < _Tp(0) || __x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __cyl_neumann_n."));
+      else if (__isnan(__nu) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x > _Tp(1000))
+        {
+          _Tp __J_nu, __N_nu;
+          __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu);
+          return __N_nu;
+        }
+      else
+        {
+          _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
+          __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
+          return __N_nu;
+        }
+    }
+
+
+    /**
+     *   @brief  Compute the spherical Bessel @f$ j_n(x) @f$
+     *           and Neumann @f$ n_n(x) @f$ functions and their first
+     *           derivatives @f$ j'_n(x) @f$ and @f$ n'_n(x) @f$
+     *           respectively.
+     *
+     *   @param  __n  The order of the spherical Bessel function.
+     *   @param  __x  The argument of the spherical Bessel function.
+     *   @param  __j_n  The output spherical Bessel function.
+     *   @param  __n_n  The output spherical Neumann function.
+     *   @param  __jp_n The output derivative of the spherical Bessel function.
+     *   @param  __np_n The output derivative of the spherical Neumann function.
+     */
+    template <typename _Tp>
+    void
+    __sph_bessel_jn(const unsigned int __n, const _Tp __x,
+                    _Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n)
+    {
+      const _Tp __nu = _Tp(__n) + _Tp(0.5L);
+
+      _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
+      __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
+
+      const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2()
+                         / std::sqrt(__x);
+
+      __j_n = __factor * __J_nu;
+      __n_n = __factor * __N_nu;
+      __jp_n = __factor * __Jp_nu - __j_n / (_Tp(2) * __x);
+      __np_n = __factor * __Np_nu - __n_n / (_Tp(2) * __x);
+
+      return;
+    }
+
+
+    /**
+     *   @brief  Return the spherical Bessel function
+     *           @f$ j_n(x) @f$ of order n.
+     *
+     *   The spherical Bessel function is defined by:
+     *   @f[
+     *    j_n(x) = \left( \frac{\pi}{2x} \right) ^{1/2} J_{n+1/2}(x)
+     *   @f]
+     *
+     *   @param  __n  The order of the spherical Bessel function.
+     *   @param  __x  The argument of the spherical Bessel function.
+     *   @return  The output spherical Bessel function.
+     */
+    template <typename _Tp>
+    _Tp
+    __sph_bessel(const unsigned int __n, const _Tp __x)
+    {
+      if (__x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __sph_bessel."));
+      else if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x == _Tp(0))
+        {
+          if (__n == 0)
+            return _Tp(1);
+          else
+            return _Tp(0);
+        }
+      else
+        {
+          _Tp __j_n, __n_n, __jp_n, __np_n;
+          __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n);
+          return __j_n;
+        }
+    }
+
+
+    /**
+     *   @brief  Return the spherical Neumann function
+     *           @f$ n_n(x) @f$.
+     *
+     *   The spherical Neumann function is defined by:
+     *   @f[
+     *    n_n(x) = \left( \frac{\pi}{2x} \right) ^{1/2} N_{n+1/2}(x)
+     *   @f]
+     *
+     *   @param  __n  The order of the spherical Neumann function.
+     *   @param  __x  The argument of the spherical Neumann function.
+     *   @return  The output spherical Neumann function.
+     */
+    template <typename _Tp>
+    _Tp
+    __sph_neumann(const unsigned int __n, const _Tp __x)
+    {
+      if (__x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __sph_neumann."));
+      else if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x == _Tp(0))
+        return -std::numeric_limits<_Tp>::infinity();
+      else
+        {
+          _Tp __j_n, __n_n, __jp_n, __np_n;
+          __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n);
+          return __n_n;
+        }
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_BESSEL_FUNCTION_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/beta_function.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/beta_function.tcc
new file mode 100644
index 000000000..219f3cbd4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/beta_function.tcc
@@ -0,0 +1,198 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/beta_function.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 6, pp. 253-266
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 213-216
+//   (4) Gamma, Exploring Euler's Constant, Julian Havil,
+//       Princeton, 2003.
+
+#ifndef _GLIBCXX_TR1_BETA_FUNCTION_TCC
+#define _GLIBCXX_TR1_BETA_FUNCTION_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief  Return the beta function: \f$B(x,y)\f$.
+     * 
+     *   The beta function is defined by
+     *   @f[
+     *     B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}
+     *   @f]
+     *
+     *   @param __x The first argument of the beta function.
+     *   @param __y The second argument of the beta function.
+     *   @return  The beta function.
+     */
+    template<typename _Tp>
+    _Tp
+    __beta_gamma(_Tp __x, _Tp __y)
+    {
+
+      _Tp __bet;
+#if _GLIBCXX_USE_C99_MATH_TR1
+      if (__x > __y)
+        {
+          __bet = std::tr1::tgamma(__x)
+                / std::tr1::tgamma(__x + __y);
+          __bet *= std::tr1::tgamma(__y);
+        }
+      else
+        {
+          __bet = std::tr1::tgamma(__y)
+                / std::tr1::tgamma(__x + __y);
+          __bet *= std::tr1::tgamma(__x);
+        }
+#else
+      if (__x > __y)
+        {
+          __bet = __gamma(__x) / __gamma(__x + __y);
+          __bet *= __gamma(__y);
+        }
+      else
+        {
+          __bet = __gamma(__y) / __gamma(__x + __y);
+          __bet *= __gamma(__x);
+        }
+#endif
+
+      return __bet;
+    }
+
+    /**
+     *   @brief  Return the beta function \f$B(x,y)\f$ using
+     *           the log gamma functions.
+     * 
+     *   The beta function is defined by
+     *   @f[
+     *     B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}
+     *   @f]
+     *
+     *   @param __x The first argument of the beta function.
+     *   @param __y The second argument of the beta function.
+     *   @return  The beta function.
+     */
+    template<typename _Tp>
+    _Tp
+    __beta_lgamma(_Tp __x, _Tp __y)
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      _Tp __bet = std::tr1::lgamma(__x)
+                + std::tr1::lgamma(__y)
+                - std::tr1::lgamma(__x + __y);
+#else
+      _Tp __bet = __log_gamma(__x)
+                + __log_gamma(__y)
+                - __log_gamma(__x + __y);
+#endif
+      __bet = std::exp(__bet);
+      return __bet;
+    }
+
+
+    /**
+     *   @brief  Return the beta function \f$B(x,y)\f$ using
+     *           the product form.
+     * 
+     *   The beta function is defined by
+     *   @f[
+     *     B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}
+     *   @f]
+     *
+     *   @param __x The first argument of the beta function.
+     *   @param __y The second argument of the beta function.
+     *   @return  The beta function.
+     */
+    template<typename _Tp>
+    _Tp
+    __beta_product(_Tp __x, _Tp __y)
+    {
+
+      _Tp __bet = (__x + __y) / (__x * __y);
+
+      unsigned int __max_iter = 1000000;
+      for (unsigned int __k = 1; __k < __max_iter; ++__k)
+        {
+          _Tp __term = (_Tp(1) + (__x + __y) / __k)
+                     / ((_Tp(1) + __x / __k) * (_Tp(1) + __y / __k));
+          __bet *= __term;
+        }
+
+      return __bet;
+    }
+
+
+    /**
+     *   @brief  Return the beta function \f$ B(x,y) \f$.
+     * 
+     *   The beta function is defined by
+     *   @f[
+     *     B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}
+     *   @f]
+     *
+     *   @param __x The first argument of the beta function.
+     *   @param __y The second argument of the beta function.
+     *   @return  The beta function.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __beta(_Tp __x, _Tp __y)
+    {
+      if (__isnan(__x) || __isnan(__y))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        return __beta_lgamma(__x, __y);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // __GLIBCXX_TR1_BETA_FUNCTION_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ccomplex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ccomplex
new file mode 100644
index 000000000..a0ae33e0c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ccomplex
@@ -0,0 +1,34 @@
+// TR1 ccomplex -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/ccomplex
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CCOMPLEX
+#define _GLIBCXX_TR1_CCOMPLEX 1
+
+#include <tr1/complex>
+
+#endif // _GLIBCXX_TR1_CCOMPLEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cctype
new file mode 100644
index 000000000..0cec3d9f4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cctype
@@ -0,0 +1,49 @@
+// TR1 cctype -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cctype
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CCTYPE
+#define _GLIBCXX_TR1_CCTYPE 1
+
+#include <bits/c++config.h>
+#include <cctype>
+
+#ifdef _GLIBCXX_USE_C99_CTYPE_TR1
+
+#undef isblank
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  using ::isblank;
+}
+}
+
+#endif
+
+#endif // _GLIBCXX_TR1_CCTYPE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfenv b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfenv
new file mode 100644
index 000000000..980a06c38
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfenv
@@ -0,0 +1,81 @@
+// TR1 cfenv -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cfenv
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CFENV
+#define _GLIBCXX_TR1_CFENV 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_FENV_H
+# include <fenv.h>
+#endif
+
+#ifdef _GLIBCXX_USE_C99_FENV_TR1
+
+#undef feclearexcept
+#undef fegetexceptflag
+#undef feraiseexcept
+#undef fesetexceptflag
+#undef fetestexcept
+#undef fegetround
+#undef fesetround
+#undef fegetenv
+#undef feholdexcept
+#undef fesetenv
+#undef feupdateenv
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // types
+  using ::fenv_t;
+  using ::fexcept_t;
+
+  // functions
+  using ::feclearexcept;
+  using ::fegetexceptflag;
+  using ::feraiseexcept;
+  using ::fesetexceptflag;
+  using ::fetestexcept;
+
+  using ::fegetround;
+  using ::fesetround;
+
+  using ::fegetenv;
+  using ::feholdexcept;
+  using ::fesetenv;
+  using ::feupdateenv;
+}
+}
+
+#endif // _GLIBCXX_USE_C99_FENV_TR1
+
+#endif // _GLIBCXX_TR1_CFENV
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfloat b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfloat
new file mode 100644
index 000000000..801cfc39e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cfloat
@@ -0,0 +1,42 @@
+// TR1 cfloat -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cfloat
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CFLOAT
+#define _GLIBCXX_TR1_CFLOAT 1
+
+#include <cfloat>
+
+#ifndef DECIMAL_DIG
+#define DECIMAL_DIG __DECIMAL_DIG__
+#endif
+
+#ifndef FLT_EVAL_METHOD
+#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#endif
+
+#endif //_GLIBCXX_TR1_CFLOAT 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cinttypes b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cinttypes
new file mode 100644
index 000000000..f1ca29279
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cinttypes
@@ -0,0 +1,84 @@
+// TR1 cinttypes -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cinttypes
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CINTTYPES
+#define _GLIBCXX_TR1_CINTTYPES 1
+
+#pragma GCC system_header
+
+#include <tr1/cstdint>
+
+// For 8.11.1/1 (see C99, Note 184)
+#if _GLIBCXX_HAVE_INTTYPES_H
+# ifndef __STDC_FORMAT_MACROS
+#  define _UNDEF__STDC_FORMAT_MACROS
+#  define __STDC_FORMAT_MACROS
+# endif
+# include <inttypes.h>
+# ifdef _UNDEF__STDC_FORMAT_MACROS
+#  undef __STDC_FORMAT_MACROS
+#  undef _UNDEF__STDC_FORMAT_MACROS
+# endif
+#endif
+
+#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // types
+  using ::imaxdiv_t;
+
+  // functions
+  using ::imaxabs;
+
+  // May collide with _Longlong abs(_Longlong), and is not described
+  // anywhere outside the synopsis.  Likely, a defect.
+  //
+  // intmax_t abs(intmax_t)
+
+  using ::imaxdiv;
+
+  // Likewise, with lldiv_t div(_Longlong, _Longlong).
+  //
+  // imaxdiv_t div(intmax_t, intmax_t)
+
+  using ::strtoimax;
+  using ::strtoumax;
+
+#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1
+  using ::wcstoimax;
+  using ::wcstoumax;
+#endif
+}
+}
+
+#endif // _GLIBCXX_USE_C99_INTTYPES_TR1
+
+#endif // _GLIBCXX_TR1_CINTTYPES
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/climits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/climits
new file mode 100644
index 000000000..91af96bae
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/climits
@@ -0,0 +1,46 @@
+// TR1 climits -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/climits
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CLIMITS
+#define _GLIBCXX_TR1_CLIMITS 1
+
+#include <climits>
+
+#ifndef LLONG_MIN
+#define LLONG_MIN (-__LONG_LONG_MAX__ - 1)
+#endif
+
+#ifndef LLONG_MAX
+#define LLONG_MAX __LONG_LONG_MAX__
+#endif
+
+#ifndef ULLONG_MAX
+#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1)
+#endif
+
+#endif // _GLIBCXX_TR1_CLIMITS
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cmath
new file mode 100644
index 000000000..21bdee886
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cmath
@@ -0,0 +1,1484 @@
+// TR1 cmath -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cmath
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CMATH
+#define _GLIBCXX_TR1_CMATH 1
+
+#pragma GCC system_header
+
+#include <cmath>
+
+#ifdef _GLIBCXX_USE_C99_MATH_TR1
+
+#undef acosh
+#undef acoshf
+#undef acoshl
+#undef asinh
+#undef asinhf
+#undef asinhl
+#undef atanh
+#undef atanhf
+#undef atanhl
+#undef cbrt
+#undef cbrtf
+#undef cbrtl
+#undef copysign
+#undef copysignf
+#undef copysignl
+#undef erf
+#undef erff
+#undef erfl
+#undef erfc
+#undef erfcf
+#undef erfcl
+#undef exp2
+#undef exp2f
+#undef exp2l
+#undef expm1
+#undef expm1f
+#undef expm1l
+#undef fdim
+#undef fdimf
+#undef fdiml
+#undef fma
+#undef fmaf
+#undef fmal
+#undef fmax
+#undef fmaxf
+#undef fmaxl
+#undef fmin
+#undef fminf
+#undef fminl
+#undef hypot
+#undef hypotf
+#undef hypotl
+#undef ilogb
+#undef ilogbf
+#undef ilogbl
+#undef lgamma
+#undef lgammaf
+#undef lgammal
+#undef llrint
+#undef llrintf
+#undef llrintl
+#undef llround
+#undef llroundf
+#undef llroundl
+#undef log1p
+#undef log1pf
+#undef log1pl
+#undef log2
+#undef log2f
+#undef log2l
+#undef logb
+#undef logbf
+#undef logbl
+#undef lrint
+#undef lrintf
+#undef lrintl
+#undef lround
+#undef lroundf
+#undef lroundl
+#undef nan
+#undef nanf
+#undef nanl
+#undef nearbyint
+#undef nearbyintf
+#undef nearbyintl
+#undef nextafter
+#undef nextafterf
+#undef nextafterl
+#undef nexttoward
+#undef nexttowardf
+#undef nexttowardl
+#undef remainder
+#undef remainderf
+#undef remainderl
+#undef remquo
+#undef remquof
+#undef remquol
+#undef rint
+#undef rintf
+#undef rintl
+#undef round
+#undef roundf
+#undef roundl
+#undef scalbln
+#undef scalblnf
+#undef scalblnl
+#undef scalbn
+#undef scalbnf
+#undef scalbnl
+#undef tgamma
+#undef tgammaf
+#undef tgammal
+#undef trunc
+#undef truncf
+#undef truncl
+
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+
+  // types
+  using ::double_t;
+  using ::float_t;
+
+  // functions
+  using ::acosh;
+  using ::acoshf;
+  using ::acoshl;
+
+  using ::asinh;
+  using ::asinhf;
+  using ::asinhl;
+
+  using ::atanh;
+  using ::atanhf;
+  using ::atanhl;
+
+  using ::cbrt;
+  using ::cbrtf;
+  using ::cbrtl;
+
+  using ::copysign;
+  using ::copysignf;
+  using ::copysignl;
+
+  using ::erf;
+  using ::erff;
+  using ::erfl;
+
+  using ::erfc;
+  using ::erfcf;
+  using ::erfcl;
+
+  using ::exp2;
+  using ::exp2f;
+  using ::exp2l;
+
+  using ::expm1;
+  using ::expm1f;
+  using ::expm1l;
+
+  using ::fdim;
+  using ::fdimf;
+  using ::fdiml;
+
+  using ::fma;
+  using ::fmaf;
+  using ::fmal;
+
+  using ::fmax;
+  using ::fmaxf;
+  using ::fmaxl;
+
+  using ::fmin;
+  using ::fminf;
+  using ::fminl;
+
+  using ::hypot;
+  using ::hypotf;
+  using ::hypotl;
+
+  using ::ilogb;
+  using ::ilogbf;
+  using ::ilogbl;
+
+  using ::lgamma;
+  using ::lgammaf;
+  using ::lgammal;
+
+  using ::llrint;
+  using ::llrintf;
+  using ::llrintl;
+
+  using ::llround;
+  using ::llroundf;
+  using ::llroundl;
+
+  using ::log1p;
+  using ::log1pf;
+  using ::log1pl;
+
+  using ::log2;
+  using ::log2f;
+  using ::log2l;
+
+  using ::logb;
+  using ::logbf;
+  using ::logbl;
+
+  using ::lrint;
+  using ::lrintf;
+  using ::lrintl;
+
+  using ::lround;
+  using ::lroundf;
+  using ::lroundl;
+
+  using ::nan;
+  using ::nanf;
+  using ::nanl;
+
+  using ::nearbyint;
+  using ::nearbyintf;
+  using ::nearbyintl;
+
+  using ::nextafter;
+  using ::nextafterf;
+  using ::nextafterl;
+
+  using ::nexttoward;
+  using ::nexttowardf;
+  using ::nexttowardl;
+
+  using ::remainder;
+  using ::remainderf;
+  using ::remainderl;
+
+  using ::remquo;
+  using ::remquof;
+  using ::remquol;
+
+  using ::rint;
+  using ::rintf;
+  using ::rintl;
+
+  using ::round;
+  using ::roundf;
+  using ::roundl;
+
+  using ::scalbln;
+  using ::scalblnf;
+  using ::scalblnl;
+
+  using ::scalbn;
+  using ::scalbnf;
+  using ::scalbnl;
+
+  using ::tgamma;
+  using ::tgammaf;
+  using ::tgammal;
+
+  using ::trunc;
+  using ::truncf;
+  using ::truncl;
+
+#endif
+
+#if _GLIBCXX_USE_C99_MATH
+#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+
+  /// Function template definitions [8.16.3].
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    fpclassify(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
+				  FP_SUBNORMAL, FP_ZERO, __type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isfinite(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isfinite(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isinf(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isinf(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnan(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnan(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isnormal(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isnormal(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    signbit(_Tp __f)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_signbit(__type(__f));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isgreaterequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isgreaterequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isless(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isless(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    islessequal(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessequal(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    islessgreater(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_islessgreater(__type(__f1), __type(__f2));
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+					   int>::__type
+    isunordered(_Tp __f1, _Tp __f2)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __builtin_isunordered(__type(__f1), __type(__f2));
+    }
+
+#endif
+#endif
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+
+  /// Additional overloads [8.16.4].
+  using std::acos;
+
+  inline float
+  acosh(float __x)
+  { return __builtin_acoshf(__x); }
+
+  inline long double
+  acosh(long double __x)
+  { return __builtin_acoshl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    acosh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return acosh(__type(__x));
+    }
+
+  using std::asin;
+
+  inline float
+  asinh(float __x)
+  { return __builtin_asinhf(__x); }
+
+  inline long double
+  asinh(long double __x)
+  { return __builtin_asinhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    asinh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return asinh(__type(__x));
+    }
+
+  using std::atan;
+  using std::atan2;
+
+  inline float
+  atanh(float __x)
+  { return __builtin_atanhf(__x); }
+
+  inline long double
+  atanh(long double __x)
+  { return __builtin_atanhl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    atanh(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return atanh(__type(__x));
+    }
+
+  inline float
+  cbrt(float __x)
+  { return __builtin_cbrtf(__x); }
+
+  inline long double
+  cbrt(long double __x)
+  { return __builtin_cbrtl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    cbrt(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return cbrt(__type(__x));
+    }
+
+  using std::ceil;
+
+  inline float
+  copysign(float __x, float __y)
+  { return __builtin_copysignf(__x, __y); }
+
+  inline long double
+  copysign(long double __x, long double __y)
+  { return __builtin_copysignl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    copysign(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return copysign(__type(__x), __type(__y));
+    }
+
+  using std::cos;
+  using std::cosh;  
+
+  inline float
+  erf(float __x)
+  { return __builtin_erff(__x); }
+
+  inline long double
+  erf(long double __x)
+  { return __builtin_erfl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    erf(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return erf(__type(__x));
+    }
+
+  inline float
+  erfc(float __x)
+  { return __builtin_erfcf(__x); }
+
+  inline long double
+  erfc(long double __x)
+  { return __builtin_erfcl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    erfc(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return erfc(__type(__x));
+    }
+
+  using std::exp;
+
+  inline float
+  exp2(float __x)
+  { return __builtin_exp2f(__x); }
+
+  inline long double
+  exp2(long double __x)
+  { return __builtin_exp2l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    exp2(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return exp2(__type(__x));
+    }
+
+  inline float
+  expm1(float __x)
+  { return __builtin_expm1f(__x); }
+
+  inline long double
+  expm1(long double __x)
+  { return __builtin_expm1l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    expm1(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return expm1(__type(__x));
+    }
+
+  // Note: we deal with fabs in a special way, because an using std::fabs
+  // would bring in also the overloads for complex types, which in C++0x
+  // mode have a different return type.
+  using ::fabs;
+
+  inline float
+  fabs(float __x)
+  { return __builtin_fabsf(__x); }
+
+  inline long double
+  fabs(long double __x)
+  { return __builtin_fabsl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
+					   double>::__type
+    fabs(_Tp __x)
+    { return __builtin_fabs(__x); }
+
+  inline float
+  fdim(float __x, float __y)
+  { return __builtin_fdimf(__x, __y); }
+
+  inline long double
+  fdim(long double __x, long double __y)
+  { return __builtin_fdiml(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fdim(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fdim(__type(__x), __type(__y));
+    }
+
+  using std::floor;
+
+  inline float
+  fma(float __x, float __y, float __z)
+  { return __builtin_fmaf(__x, __y, __z); }
+
+  inline long double
+  fma(long double __x, long double __y, long double __z)
+  { return __builtin_fmal(__x, __y, __z); }
+
+  template<typename _Tp, typename _Up, typename _Vp>
+    inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
+    fma(_Tp __x, _Up __y, _Vp __z)
+    {
+      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
+      return fma(__type(__x), __type(__y), __type(__z));
+    }
+
+  inline float
+  fmax(float __x, float __y)
+  { return __builtin_fmaxf(__x, __y); }
+
+  inline long double
+  fmax(long double __x, long double __y)
+  { return __builtin_fmaxl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fmax(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fmax(__type(__x), __type(__y));
+    }
+
+  inline float
+  fmin(float __x, float __y)
+  { return __builtin_fminf(__x, __y); }
+
+  inline long double
+  fmin(long double __x, long double __y)
+  { return __builtin_fminl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    fmin(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fmin(__type(__x), __type(__y));
+    }
+
+  using std::fmod;
+  using std::frexp;
+
+  inline float
+  hypot(float __x, float __y)
+  { return __builtin_hypotf(__x, __y); }
+
+  inline long double
+  hypot(long double __x, long double __y)
+  { return __builtin_hypotl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    hypot(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return hypot(__type(__x), __type(__y));
+    }
+
+  inline int
+  ilogb(float __x)
+  { return __builtin_ilogbf(__x); }
+
+  inline int
+  ilogb(long double __x)
+  { return __builtin_ilogbl(__x); }
+
+  template<typename _Tp>
+    inline int
+    ilogb(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return ilogb(__type(__x));
+    }
+
+  using std::ldexp;
+
+  inline float
+  lgamma(float __x)
+  { return __builtin_lgammaf(__x); }
+
+  inline long double
+  lgamma(long double __x)
+  { return __builtin_lgammal(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    lgamma(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lgamma(__type(__x));
+    }
+
+  inline long long
+  llrint(float __x)
+  { return __builtin_llrintf(__x); }
+
+  inline long long
+  llrint(long double __x)
+  { return __builtin_llrintl(__x); }
+
+  template<typename _Tp>
+    inline long long
+    llrint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return llrint(__type(__x));
+    }
+
+  inline long long
+  llround(float __x)
+  { return __builtin_llroundf(__x); }
+
+  inline long long
+  llround(long double __x)
+  { return __builtin_llroundl(__x); }
+
+  template<typename _Tp>
+    inline long long
+    llround(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return llround(__type(__x));
+    }
+
+  using std::log;
+  using std::log10;
+
+  inline float
+  log1p(float __x)
+  { return __builtin_log1pf(__x); }
+
+  inline long double
+  log1p(long double __x)
+  { return __builtin_log1pl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    log1p(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return log1p(__type(__x));
+    }
+
+  // DR 568.
+  inline float
+  log2(float __x)
+  { return __builtin_log2f(__x); }
+
+  inline long double
+  log2(long double __x)
+  { return __builtin_log2l(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    log2(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return log2(__type(__x));
+    }
+
+  inline float
+  logb(float __x)
+  { return __builtin_logbf(__x); }
+
+  inline long double
+  logb(long double __x)
+  { return __builtin_logbl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    logb(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return logb(__type(__x));
+    }
+
+  inline long
+  lrint(float __x)
+  { return __builtin_lrintf(__x); }
+
+  inline long
+  lrint(long double __x)
+  { return __builtin_lrintl(__x); }
+
+  template<typename _Tp>
+    inline long
+    lrint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lrint(__type(__x));
+    }
+
+  inline long
+  lround(float __x)
+  { return __builtin_lroundf(__x); }
+
+  inline long
+  lround(long double __x)
+  { return __builtin_lroundl(__x); }
+
+  template<typename _Tp>
+    inline long
+    lround(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return lround(__type(__x));
+    }
+
+  inline float
+  nearbyint(float __x)
+  { return __builtin_nearbyintf(__x); }
+
+  inline long double
+  nearbyint(long double __x)
+  { return __builtin_nearbyintl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    nearbyint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return nearbyint(__type(__x));
+    }
+
+  inline float
+  nextafter(float __x, float __y)
+  { return __builtin_nextafterf(__x, __y); }
+
+  inline long double
+  nextafter(long double __x, long double __y)
+  { return __builtin_nextafterl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    nextafter(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return nextafter(__type(__x), __type(__y));
+    }
+
+  inline float
+  nexttoward(float __x, long double __y)
+  { return __builtin_nexttowardf(__x, __y); }
+
+  inline long double
+  nexttoward(long double __x, long double __y)
+  { return __builtin_nexttowardl(__x, __y); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    nexttoward(_Tp __x, long double __y)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return nexttoward(__type(__x), __y);
+    }
+
+  // DR 550. What should the return type of pow(float,int) be?
+  // NB: C++0x and TR1 != C++03.
+  //   using std::pow;
+
+  inline float
+  remainder(float __x, float __y)
+  { return __builtin_remainderf(__x, __y); }
+
+  inline long double
+  remainder(long double __x, long double __y)
+  { return __builtin_remainderl(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    remainder(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return remainder(__type(__x), __type(__y));
+    }
+
+  inline float
+  remquo(float __x, float __y, int* __pquo)
+  { return __builtin_remquof(__x, __y, __pquo); }
+
+  inline long double
+  remquo(long double __x, long double __y, int* __pquo)
+  { return __builtin_remquol(__x, __y, __pquo); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    remquo(_Tp __x, _Up __y, int* __pquo)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return remquo(__type(__x), __type(__y), __pquo);
+    }
+
+  inline float
+  rint(float __x)
+  { return __builtin_rintf(__x); }
+
+  inline long double
+  rint(long double __x)
+  { return __builtin_rintl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    rint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return rint(__type(__x));
+    }
+
+  inline float
+  round(float __x)
+  { return __builtin_roundf(__x); }
+
+  inline long double
+  round(long double __x)
+  { return __builtin_roundl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    round(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return round(__type(__x));
+    }
+
+  inline float
+  scalbln(float __x, long __ex)
+  { return __builtin_scalblnf(__x, __ex); }
+
+  inline long double
+  scalbln(long double __x, long __ex)
+  { return __builtin_scalblnl(__x, __ex); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    scalbln(_Tp __x, long __ex)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return scalbln(__type(__x), __ex);
+    }
+ 
+  inline float
+  scalbn(float __x, int __ex)
+  { return __builtin_scalbnf(__x, __ex); }
+
+  inline long double
+  scalbn(long double __x, int __ex)
+  { return __builtin_scalbnl(__x, __ex); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    scalbn(_Tp __x, int __ex)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return scalbn(__type(__x), __ex);
+    }
+
+  using std::sin;
+  using std::sinh;
+  using std::sqrt;
+  using std::tan;
+  using std::tanh;
+
+  inline float
+  tgamma(float __x)
+  { return __builtin_tgammaf(__x); }
+
+  inline long double
+  tgamma(long double __x)
+  { return __builtin_tgammal(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    tgamma(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return tgamma(__type(__x));
+    }
+ 
+  inline float
+  trunc(float __x)
+  { return __builtin_truncf(__x); }
+
+  inline long double
+  trunc(long double __x)
+  { return __builtin_truncl(__x); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type 
+    trunc(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return trunc(__type(__x));
+    }
+
+#endif
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // DR 550. What should the return type of pow(float,int) be?
+  // NB: C++0x and TR1 != C++03.
+  inline double
+  pow(double __x, double __y)
+  { return std::pow(__x, __y); }
+
+  inline float
+  pow(float __x, float __y)
+  { return std::pow(__x, __y); }
+
+  inline long double
+  pow(long double __x, long double __y)
+  { return std::pow(__x, __y); }
+
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
+    pow(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(__type(__x), __type(__y));
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#include <bits/stl_algobase.h>
+#include <limits>
+#include <tr1/type_traits>
+
+#include <tr1/gamma.tcc>
+#include <tr1/bessel_function.tcc>
+#include <tr1/beta_function.tcc>
+#include <tr1/ell_integral.tcc>
+#include <tr1/exp_integral.tcc>
+#include <tr1/hypergeometric.tcc>
+#include <tr1/legendre_function.tcc>
+#include <tr1/modified_bessel_func.tcc>
+#include <tr1/poly_hermite.tcc>
+#include <tr1/poly_laguerre.tcc>
+#include <tr1/riemann_zeta.tcc>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup tr1_math_spec_func Mathematical Special Functions
+   * @ingroup numerics
+   *
+   * A collection of advanced mathematical special functions.
+   * @{
+   */
+
+  inline float
+  assoc_laguerref(unsigned int __n, unsigned int __m, float __x)
+  { return __detail::__assoc_laguerre<float>(__n, __m, __x); }
+
+  inline long double
+  assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
+  {
+    return __detail::__assoc_laguerre<long double>(__n, __m, __x);
+  }
+
+  ///  5.2.1.1  Associated Laguerre polynomials.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__assoc_laguerre<__type>(__n, __m, __x);
+    }
+
+  inline float
+  assoc_legendref(unsigned int __l, unsigned int __m, float __x)
+  { return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
+
+  inline long double
+  assoc_legendrel(unsigned int __l, unsigned int __m, long double __x)
+  { return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
+
+  ///  5.2.1.2  Associated Legendre functions.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
+    }
+
+  inline float
+  betaf(float __x, float __y)
+  { return __detail::__beta<float>(__x, __y); }
+
+  inline long double
+  betal(long double __x, long double __y)
+  { return __detail::__beta<long double>(__x, __y); }
+
+  ///  5.2.1.3  Beta functions.
+  template<typename _Tpx, typename _Tpy>
+    inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type
+    beta(_Tpx __x, _Tpy __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type;
+      return __detail::__beta<__type>(__x, __y);
+    }
+
+  inline float
+  comp_ellint_1f(float __k)
+  { return __detail::__comp_ellint_1<float>(__k); }
+
+  inline long double
+  comp_ellint_1l(long double __k)
+  { return __detail::__comp_ellint_1<long double>(__k); }
+
+  ///  5.2.1.4  Complete elliptic integrals of the first kind.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    comp_ellint_1(_Tp __k)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__comp_ellint_1<__type>(__k);
+    }
+
+  inline float
+  comp_ellint_2f(float __k)
+  { return __detail::__comp_ellint_2<float>(__k); }
+
+  inline long double
+  comp_ellint_2l(long double __k)
+  { return __detail::__comp_ellint_2<long double>(__k); }
+
+  ///  5.2.1.5  Complete elliptic integrals of the second kind.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    comp_ellint_2(_Tp __k)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__comp_ellint_2<__type>(__k);
+    }
+
+  inline float
+  comp_ellint_3f(float __k, float __nu)
+  { return __detail::__comp_ellint_3<float>(__k, __nu); }
+
+  inline long double
+  comp_ellint_3l(long double __k, long double __nu)
+  { return __detail::__comp_ellint_3<long double>(__k, __nu); }
+
+  ///  5.2.1.6  Complete elliptic integrals of the third kind.
+  template<typename _Tp, typename _Tpn>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
+    comp_ellint_3(_Tp __k, _Tpn __nu)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
+      return __detail::__comp_ellint_3<__type>(__k, __nu);
+    }
+
+  inline float
+  conf_hypergf(float __a, float __c, float __x)
+  { return __detail::__conf_hyperg<float>(__a, __c, __x); }
+
+  inline long double
+  conf_hypergl(long double __a, long double __c, long double __x)
+  { return __detail::__conf_hyperg<long double>(__a, __c, __x); }
+
+  ///  5.2.1.7  Confluent hypergeometric functions.
+  template<typename _Tpa, typename _Tpc, typename _Tp>
+    inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
+    conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type;
+      return __detail::__conf_hyperg<__type>(__a, __c, __x);
+    }
+
+  inline float
+  cyl_bessel_if(float __nu, float __x)
+  { return __detail::__cyl_bessel_i<float>(__nu, __x); }
+
+  inline long double
+  cyl_bessel_il(long double __nu, long double __x)
+  { return __detail::__cyl_bessel_i<long double>(__nu, __x); }
+
+  ///  5.2.1.8  Regular modified cylindrical Bessel functions.
+  template<typename _Tpnu, typename _Tp>
+    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
+    cyl_bessel_i(_Tpnu __nu, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
+      return __detail::__cyl_bessel_i<__type>(__nu, __x);
+    }
+
+  inline float
+  cyl_bessel_jf(float __nu, float __x)
+  { return __detail::__cyl_bessel_j<float>(__nu, __x); }
+
+  inline long double
+  cyl_bessel_jl(long double __nu, long double __x)
+  { return __detail::__cyl_bessel_j<long double>(__nu, __x); }
+
+  ///  5.2.1.9  Cylindrical Bessel functions (of the first kind).
+  template<typename _Tpnu, typename _Tp>
+    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
+    cyl_bessel_j(_Tpnu __nu, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
+      return __detail::__cyl_bessel_j<__type>(__nu, __x);
+    }
+
+  inline float
+  cyl_bessel_kf(float __nu, float __x)
+  { return __detail::__cyl_bessel_k<float>(__nu, __x); }
+
+  inline long double
+  cyl_bessel_kl(long double __nu, long double __x)
+  { return __detail::__cyl_bessel_k<long double>(__nu, __x); }
+
+  ///  5.2.1.10  Irregular modified cylindrical Bessel functions.
+  template<typename _Tpnu, typename _Tp>
+    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
+    cyl_bessel_k(_Tpnu __nu, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
+      return __detail::__cyl_bessel_k<__type>(__nu, __x);
+    }
+
+  inline float
+  cyl_neumannf(float __nu, float __x)
+  { return __detail::__cyl_neumann_n<float>(__nu, __x); }
+
+  inline long double
+  cyl_neumannl(long double __nu, long double __x)
+  { return __detail::__cyl_neumann_n<long double>(__nu, __x); }
+
+  ///  5.2.1.11  Cylindrical Neumann functions.
+  template<typename _Tpnu, typename _Tp>
+    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
+    cyl_neumann(_Tpnu __nu, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
+      return __detail::__cyl_neumann_n<__type>(__nu, __x);
+    }
+
+  inline float
+  ellint_1f(float __k, float __phi)
+  { return __detail::__ellint_1<float>(__k, __phi); }
+
+  inline long double
+  ellint_1l(long double __k, long double __phi)
+  { return __detail::__ellint_1<long double>(__k, __phi); }
+
+  ///  5.2.1.12  Incomplete elliptic integrals of the first kind.
+  template<typename _Tp, typename _Tpp>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
+    ellint_1(_Tp __k, _Tpp __phi)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
+      return __detail::__ellint_1<__type>(__k, __phi);
+    }
+
+  inline float
+  ellint_2f(float __k, float __phi)
+  { return __detail::__ellint_2<float>(__k, __phi); }
+
+  inline long double
+  ellint_2l(long double __k, long double __phi)
+  { return __detail::__ellint_2<long double>(__k, __phi); }
+
+  ///  5.2.1.13  Incomplete elliptic integrals of the second kind.
+  template<typename _Tp, typename _Tpp>
+    inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
+    ellint_2(_Tp __k, _Tpp __phi)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
+      return __detail::__ellint_2<__type>(__k, __phi);
+    }
+
+  inline float
+  ellint_3f(float __k, float __nu, float __phi)
+  { return __detail::__ellint_3<float>(__k, __nu, __phi); }
+
+  inline long double
+  ellint_3l(long double __k, long double __nu, long double __phi)
+  { return __detail::__ellint_3<long double>(__k, __nu, __phi); }
+
+  ///  5.2.1.14  Incomplete elliptic integrals of the third kind.
+  template<typename _Tp, typename _Tpn, typename _Tpp>
+    inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
+    ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
+    {
+      typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
+      return __detail::__ellint_3<__type>(__k, __nu, __phi);
+    }
+
+  inline float
+  expintf(float __x)
+  { return __detail::__expint<float>(__x); }
+
+  inline long double
+  expintl(long double __x)
+  { return __detail::__expint<long double>(__x); }
+
+  ///  5.2.1.15  Exponential integrals.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    expint(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__expint<__type>(__x);
+    }
+
+  inline float
+  hermitef(unsigned int __n, float __x)
+  { return __detail::__poly_hermite<float>(__n, __x); }
+
+  inline long double
+  hermitel(unsigned int __n, long double __x)
+  { return __detail::__poly_hermite<long double>(__n, __x); }
+
+  ///  5.2.1.16  Hermite polynomials.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    hermite(unsigned int __n, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__poly_hermite<__type>(__n, __x);
+    }
+
+  inline float
+  hypergf(float __a, float __b, float __c, float __x)
+  { return __detail::__hyperg<float>(__a, __b, __c, __x); }
+
+  inline long double
+  hypergl(long double __a, long double __b, long double __c, long double __x)
+  { return __detail::__hyperg<long double>(__a, __b, __c, __x); }
+
+  ///  5.2.1.17  Hypergeometric functions.
+  template<typename _Tpa, typename _Tpb, typename _Tpc, typename _Tp>
+    inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
+    hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type __type;
+      return __detail::__hyperg<__type>(__a, __b, __c, __x);
+    }
+
+  inline float
+  laguerref(unsigned int __n, float __x)
+  { return __detail::__laguerre<float>(__n, __x); }
+
+  inline long double
+  laguerrel(unsigned int __n, long double __x)
+  { return __detail::__laguerre<long double>(__n, __x); }
+
+  ///  5.2.1.18  Laguerre polynomials.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    laguerre(unsigned int __n, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__laguerre<__type>(__n, __x);
+    }
+
+  inline float
+  legendref(unsigned int __n, float __x)
+  { return __detail::__poly_legendre_p<float>(__n, __x); }
+
+  inline long double
+  legendrel(unsigned int __n, long double __x)
+  { return __detail::__poly_legendre_p<long double>(__n, __x); }
+
+  ///  5.2.1.19  Legendre polynomials.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    legendre(unsigned int __n, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__poly_legendre_p<__type>(__n, __x);
+    }
+
+  inline float
+  riemann_zetaf(float __x)
+  { return __detail::__riemann_zeta<float>(__x); }
+
+  inline long double
+  riemann_zetal(long double __x)
+  { return __detail::__riemann_zeta<long double>(__x); }
+
+  ///  5.2.1.20  Riemann zeta function.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    riemann_zeta(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__riemann_zeta<__type>(__x);
+    }
+
+  inline float
+  sph_besself(unsigned int __n, float __x)
+  { return __detail::__sph_bessel<float>(__n, __x); }
+
+  inline long double
+  sph_bessell(unsigned int __n, long double __x)
+  { return __detail::__sph_bessel<long double>(__n, __x); }
+
+  ///  5.2.1.21  Spherical Bessel functions.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    sph_bessel(unsigned int __n, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__sph_bessel<__type>(__n, __x);
+    }
+
+  inline float
+  sph_legendref(unsigned int __l, unsigned int __m, float __theta)
+  { return __detail::__sph_legendre<float>(__l, __m, __theta); }
+
+  inline long double
+  sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
+  { return __detail::__sph_legendre<long double>(__l, __m, __theta); }
+
+  ///  5.2.1.22  Spherical associated Legendre functions.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__sph_legendre<__type>(__l, __m, __theta);
+    }
+
+  inline float
+  sph_neumannf(unsigned int __n, float __x)
+  { return __detail::__sph_neumann<float>(__n, __x); }
+
+  inline long double
+  sph_neumannl(unsigned int __n, long double __x)
+  { return __detail::__sph_neumann<long double>(__n, __x); }
+
+  ///  5.2.1.23  Spherical Neumann functions.
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    sph_neumann(unsigned int __n, _Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __detail::__sph_neumann<__type>(__n, __x);
+    }
+
+  /* @} */ // tr1_math_spec_func
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_CMATH
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex
new file mode 100644
index 000000000..fc213b8f1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex
@@ -0,0 +1,422 @@
+// TR1 complex -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/complex
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_COMPLEX
+#define _GLIBCXX_TR1_COMPLEX 1
+
+#pragma GCC system_header
+
+#include <complex>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @addtogroup complex_numbers
+   * @{
+   */
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::acos;
+  using std::asin;
+  using std::atan;
+#else
+  template<typename _Tp> std::complex<_Tp> acos(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> asin(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> atan(const std::complex<_Tp>&);
+#endif
+
+  template<typename _Tp> std::complex<_Tp> acosh(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> asinh(const std::complex<_Tp>&);
+  template<typename _Tp> std::complex<_Tp> atanh(const std::complex<_Tp>&);
+
+  // The std::fabs return type in C++0x mode is different (just _Tp).
+  template<typename _Tp> std::complex<_Tp> fabs(const std::complex<_Tp>&);
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    __complex_acos(const std::complex<_Tp>& __z)
+    {
+      const std::complex<_Tp> __t = std::tr1::asin(__z);
+      const _Tp __pi_2 = 1.5707963267948966192313216916397514L;
+      return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag());
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_acos(__complex__ float __z)
+  { return __builtin_cacosf(__z); }
+
+  inline __complex__ double
+  __complex_acos(__complex__ double __z)
+  { return __builtin_cacos(__z); }
+
+  inline __complex__ long double
+  __complex_acos(const __complex__ long double& __z)
+  { return __builtin_cacosl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acos(const std::complex<_Tp>& __z)
+    { return __complex_acos(__z.__rep()); }
+#else
+  /// acos(__z) [8.1.2].
+  //  Effects:  Behaves the same as C99 function cacos, defined
+  //            in subclause 7.3.5.1.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acos(const std::complex<_Tp>& __z)
+    { return __complex_acos(__z); }
+#endif
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    __complex_asin(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t(-__z.imag(), __z.real());
+      __t = std::tr1::asinh(__t);
+      return std::complex<_Tp>(__t.imag(), -__t.real());
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_asin(__complex__ float __z)
+  { return __builtin_casinf(__z); }
+
+  inline __complex__ double
+  __complex_asin(__complex__ double __z)
+  { return __builtin_casin(__z); }
+
+  inline __complex__ long double
+  __complex_asin(const __complex__ long double& __z)
+  { return __builtin_casinl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asin(const std::complex<_Tp>& __z)
+    { return __complex_asin(__z.__rep()); }
+#else
+  /// asin(__z) [8.1.3].
+  //  Effects:  Behaves the same as C99 function casin, defined
+  //            in subclause 7.3.5.2.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asin(const std::complex<_Tp>& __z)
+    { return __complex_asin(__z); }
+#endif
+  
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_atan(const std::complex<_Tp>& __z)
+    {
+      const _Tp __r2 = __z.real() * __z.real();
+      const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag();
+
+      _Tp __num = __z.imag() + _Tp(1.0);
+      _Tp __den = __z.imag() - _Tp(1.0);
+
+      __num = __r2 + __num * __num;
+      __den = __r2 + __den * __den;
+
+      return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x),
+			       _Tp(0.25) * log(__num / __den));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_atan(__complex__ float __z)
+  { return __builtin_catanf(__z); }
+
+  inline __complex__ double
+  __complex_atan(__complex__ double __z)
+  { return __builtin_catan(__z); }
+
+  inline __complex__ long double
+  __complex_atan(const __complex__ long double& __z)
+  { return __builtin_catanl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atan(const std::complex<_Tp>& __z)
+    { return __complex_atan(__z.__rep()); }
+#else
+  /// atan(__z) [8.1.4].
+  //  Effects:  Behaves the same as C99 function catan, defined
+  //            in subclause 7.3.5.3.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atan(const std::complex<_Tp>& __z)
+    { return __complex_atan(__z); }
+#endif
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_acosh(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t((__z.real() - __z.imag())
+			    * (__z.real() + __z.imag()) - _Tp(1.0),
+			    _Tp(2.0) * __z.real() * __z.imag());
+      __t = std::sqrt(__t);
+
+      return std::log(__t + __z);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_acosh(__complex__ float __z)
+  { return __builtin_cacoshf(__z); }
+
+  inline __complex__ double
+  __complex_acosh(__complex__ double __z)
+  { return __builtin_cacosh(__z); }
+
+  inline __complex__ long double
+  __complex_acosh(const __complex__ long double& __z)
+  { return __builtin_cacoshl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acosh(const std::complex<_Tp>& __z)
+    { return __complex_acosh(__z.__rep()); }
+#else
+  /// acosh(__z) [8.1.5].
+  //  Effects:  Behaves the same as C99 function cacosh, defined
+  //            in subclause 7.3.6.1.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    acosh(const std::complex<_Tp>& __z)
+    { return __complex_acosh(__z); }
+#endif
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_asinh(const std::complex<_Tp>& __z)
+    {
+      std::complex<_Tp> __t((__z.real() - __z.imag())
+			    * (__z.real() + __z.imag()) + _Tp(1.0),
+			    _Tp(2.0) * __z.real() * __z.imag());
+      __t = std::sqrt(__t);
+
+      return std::log(__t + __z);
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_asinh(__complex__ float __z)
+  { return __builtin_casinhf(__z); }
+
+  inline __complex__ double
+  __complex_asinh(__complex__ double __z)
+  { return __builtin_casinh(__z); }
+
+  inline __complex__ long double
+  __complex_asinh(const __complex__ long double& __z)
+  { return __builtin_casinhl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asinh(const std::complex<_Tp>& __z)
+    { return __complex_asinh(__z.__rep()); }
+#else
+  /// asinh(__z) [8.1.6].
+  //  Effects:  Behaves the same as C99 function casin, defined
+  //            in subclause 7.3.6.2.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    asinh(const std::complex<_Tp>& __z)
+    { return __complex_asinh(__z); }
+#endif
+
+  template<typename _Tp>
+    std::complex<_Tp>
+    __complex_atanh(const std::complex<_Tp>& __z)
+    {
+      const _Tp __i2 = __z.imag() * __z.imag();
+      const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real();
+
+      _Tp __num = _Tp(1.0) + __z.real();
+      _Tp __den = _Tp(1.0) - __z.real();
+
+      __num = __i2 + __num * __num;
+      __den = __i2 + __den * __den;
+
+      return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)),
+			       _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x));
+    }
+
+#if _GLIBCXX_USE_C99_COMPLEX_TR1
+  inline __complex__ float
+  __complex_atanh(__complex__ float __z)
+  { return __builtin_catanhf(__z); }
+
+  inline __complex__ double
+  __complex_atanh(__complex__ double __z)
+  { return __builtin_catanh(__z); }
+
+  inline __complex__ long double
+  __complex_atanh(const __complex__ long double& __z)
+  { return __builtin_catanhl(__z); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atanh(const std::complex<_Tp>& __z)
+    { return __complex_atanh(__z.__rep()); }
+#else
+  /// atanh(__z) [8.1.7].
+  //  Effects:  Behaves the same as C99 function catanh, defined
+  //            in subclause 7.3.6.3.
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    atanh(const std::complex<_Tp>& __z)
+    { return __complex_atanh(__z); }
+#endif
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    /// fabs(__z) [8.1.8].
+    //  Effects:  Behaves the same as C99 function cabs, defined
+    //            in subclause 7.3.8.1.
+    fabs(const std::complex<_Tp>& __z)
+    { return std::abs(__z); }
+
+  /// Additional overloads [8.1.9].
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    arg(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC)
+      return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L)
+	                       : __type();
+#else
+      return std::arg(std::complex<__type>(__x));
+#endif
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    imag(_Tp)
+    { return _Tp(); }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    norm(_Tp __x)
+    {
+      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+      return __type(__x) * __type(__x);
+    }
+
+  template<typename _Tp>
+    inline typename __gnu_cxx::__promote<_Tp>::__type
+    real(_Tp __x)
+    { return __x; }
+
+#endif
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const std::complex<_Tp>& __x, const _Up& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(std::complex<__type>(__x), __type(__y));
+    }
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const _Tp& __x, const std::complex<_Up>& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(__type(__x), std::complex<__type>(__y));
+    }
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::pow(std::complex<__type>(__x),
+		      std::complex<__type>(__y));
+    }
+
+  using std::arg;
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    conj(const std::complex<_Tp>& __z)
+    { return std::conj(__z); }  
+
+  template<typename _Tp>
+    inline std::complex<typename __gnu_cxx::__promote<_Tp>::__type>
+    conj(_Tp __x)
+    { return __x; }
+
+  using std::imag;
+  using std::norm;
+  using std::polar;
+
+  template<typename _Tp, typename _Up>
+    inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
+    polar(const _Tp& __rho, const _Up& __theta)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return std::polar(__type(__rho), __type(__theta));
+    }
+
+  using std::real;
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    pow(const std::complex<_Tp>& __x, const _Tp& __y)
+    { return std::pow(__x, __y); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    pow(const _Tp& __x, const std::complex<_Tp>& __y)
+    { return std::pow(__x, __y); }
+
+  template<typename _Tp>
+    inline std::complex<_Tp>
+    pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y)
+    { return std::pow(__x, __y); }
+
+// @} group complex_numbers
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_COMPLEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex.h
new file mode 100644
index 000000000..0f28810b7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/complex.h
@@ -0,0 +1,34 @@
+// TR1 complex.h -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/complex.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_COMPLEX_H
+#define _GLIBCXX_TR1_COMPLEX_H 1
+
+#include <tr1/ccomplex>
+
+#endif // _GLIBCXX_TR1_COMPLEX_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdarg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdarg
new file mode 100644
index 000000000..bc2e88153
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdarg
@@ -0,0 +1,34 @@
+// TR1 cstdarg -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cstdarg
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CSTDARG
+#define _GLIBCXX_TR1_CSTDARG 1
+
+#include <cstdarg>
+
+#endif // _GLIBCXX_TR1_CSTDARG
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdbool b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdbool
new file mode 100644
index 000000000..d68e4b896
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdbool
@@ -0,0 +1,40 @@
+// TR1 cstdbool -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cstdbool
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CSTDBOOL
+#define _GLIBCXX_TR1_CSTDBOOL 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HAVE_STDBOOL_H
+#include <stdbool.h>
+#endif
+
+#endif // _GLIBCXX_TR1_CSTDBOOL
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdint b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdint
new file mode 100644
index 000000000..55ce4bcef
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdint
@@ -0,0 +1,104 @@
+// TR1 cstdint -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cstdint
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CSTDINT
+#define _GLIBCXX_TR1_CSTDINT 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+// For 8.22.1/1 (see C99, Notes 219, 220, 222)
+# if _GLIBCXX_HAVE_STDINT_H
+#  ifndef __STDC_LIMIT_MACROS
+#   define _UNDEF__STDC_LIMIT_MACROS
+#   define __STDC_LIMIT_MACROS
+#  endif
+#  ifndef __STDC_CONSTANT_MACROS
+#   define _UNDEF__STDC_CONSTANT_MACROS
+#   define __STDC_CONSTANT_MACROS
+#  endif
+#  include <stdint.h>
+#  ifdef _UNDEF__STDC_LIMIT_MACROS
+#   undef __STDC_LIMIT_MACROS
+#   undef _UNDEF__STDC_LIMIT_MACROS
+#  endif
+#  ifdef _UNDEF__STDC_CONSTANT_MACROS
+#   undef __STDC_CONSTANT_MACROS
+#   undef _UNDEF__STDC_CONSTANT_MACROS
+#  endif
+# endif
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  using ::int8_t;
+  using ::int16_t;
+  using ::int32_t;
+  using ::int64_t;
+
+  using ::int_fast8_t;
+  using ::int_fast16_t;
+  using ::int_fast32_t;
+  using ::int_fast64_t;
+
+  using ::int_least8_t;
+  using ::int_least16_t;
+  using ::int_least32_t;
+  using ::int_least64_t;
+
+  using ::intmax_t;
+  using ::intptr_t;
+  
+  using ::uint8_t;
+  using ::uint16_t;
+  using ::uint32_t;
+  using ::uint64_t;
+
+  using ::uint_fast8_t;
+  using ::uint_fast16_t;
+  using ::uint_fast32_t;
+  using ::uint_fast64_t;
+
+  using ::uint_least8_t;
+  using ::uint_least16_t;
+  using ::uint_least32_t;
+  using ::uint_least64_t;
+
+  using ::uintmax_t;
+  using ::uintptr_t;
+}
+}
+
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // _GLIBCXX_TR1_CSTDINT
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdio b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdio
new file mode 100644
index 000000000..415e8a4d6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdio
@@ -0,0 +1,53 @@
+// TR1 cstdio -*- C++ -*-
+
+// Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cstdio
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CSTDIO
+#define _GLIBCXX_TR1_CSTDIO 1
+
+#pragma GCC system_header
+
+#include <cstdio>
+
+#if _GLIBCXX_USE_C99
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  using std::snprintf;
+  using std::vsnprintf;
+
+  using std::vfscanf;
+  using std::vscanf;
+  using std::vsscanf;
+}
+}
+
+#endif
+
+#endif // _GLIBCXX_TR1_CSTDIO
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdlib b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdlib
new file mode 100644
index 000000000..6e3e16d0f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cstdlib
@@ -0,0 +1,72 @@
+// TR1 cstdlib -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cstdlib
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CSTDLIB
+#define _GLIBCXX_TR1_CSTDLIB 1
+
+#pragma GCC system_header
+
+#include <cstdlib>
+
+#if _GLIBCXX_HOSTED
+
+#if _GLIBCXX_USE_C99
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  // types
+  using std::lldiv_t;
+
+  // functions
+  using std::llabs;
+  using std::lldiv;
+#endif
+
+  using std::atoll;
+  using std::strtoll;
+  using std::strtoull;
+
+  using std::strtof;
+  using std::strtold;
+
+  // overloads
+  using std::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+  using std::div;
+#endif
+}
+}
+
+#endif // _GLIBCXX_USE_C99 
+
+#endif // _GLIBCXX_HOSTED
+
+#endif // _GLIBCXX_TR1_CSTDLIB
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctgmath b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctgmath
new file mode 100644
index 000000000..e82a9a15f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctgmath
@@ -0,0 +1,34 @@
+// TR1 ctgmath -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/ctgmath
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CTGMATH
+#define _GLIBCXX_TR1_CTGMATH 1
+
+#include <tr1/cmath>
+
+#endif // _GLIBCXX_TR1_CTGMATH
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctime b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctime
new file mode 100644
index 000000000..bf763377d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctime
@@ -0,0 +1,34 @@
+// TR1 ctime -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/ctime
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CTIME
+#define _GLIBCXX_TR1_CTIME 1
+
+#include <ctime>
+
+#endif // _GLIBCXX_TR1_CTIME
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctype.h
new file mode 100644
index 000000000..712bedb67
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ctype.h
@@ -0,0 +1,34 @@
+// TR1 ctype.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/ctype.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_CTYPE_H
+#define _TR1_CTYPE_H 1
+
+#include <tr1/cctype>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwchar b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwchar
new file mode 100644
index 000000000..8bf775be1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwchar
@@ -0,0 +1,65 @@
+// TR1 cwchar -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cwchar
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CWCHAR
+#define _GLIBCXX_TR1_CWCHAR 1
+
+#pragma GCC system_header
+
+#include <cwchar>
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+#if _GLIBCXX_HAVE_WCSTOF
+  using std::wcstof;
+#endif
+#if _GLIBCXX_HAVE_VFWSCANF
+  using std::vfwscanf;
+#endif
+#if _GLIBCXX_HAVE_VSWSCANF
+  using std::vswscanf;
+#endif
+#if _GLIBCXX_HAVE_VWSCANF
+  using std::vwscanf;
+#endif
+
+#if _GLIBCXX_USE_C99
+  using std::wcstold;
+  using std::wcstoll;
+  using std::wcstoull;
+#endif
+}
+}
+
+#endif // _GLIBCXX_USE_WCHAR_T
+
+#endif // _GLIBCXX_TR1_CWCHAR
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwctype b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwctype
new file mode 100644
index 000000000..452a7b456
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/cwctype
@@ -0,0 +1,50 @@
+// TR1 cwctype -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/cwctype
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_CWCTYPE
+#define _GLIBCXX_TR1_CWCTYPE 1
+
+#pragma GCC system_header
+
+#include <cwctype>
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+#if _GLIBCXX_HAVE_ISWBLANK
+  using std::iswblank;
+#endif  
+}
+}
+
+#endif // _GLIBCXX_USE_WCHAR_T
+
+#endif // _GLIBCXX_TR1_CWCTYPE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ell_integral.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ell_integral.tcc
new file mode 100644
index 000000000..4dfe6169c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/ell_integral.tcc
@@ -0,0 +1,751 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/ell_integral.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1)  B. C. Carlson Numer. Math. 33, 1 (1979)
+//   (2)  B. C. Carlson, Special Functions of Applied Mathematics (1977)
+//   (3)  The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (4)  Numerical Recipes in C, 2nd ed, by W. H. Press, S. A. Teukolsky,
+//        W. T. Vetterling, B. P. Flannery, Cambridge University Press
+//        (1992), pp. 261-269
+
+#ifndef _GLIBCXX_TR1_ELL_INTEGRAL_TCC
+#define _GLIBCXX_TR1_ELL_INTEGRAL_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief Return the Carlson elliptic function @f$ R_F(x,y,z) @f$
+     *          of the first kind.
+     * 
+     *   The Carlson elliptic function of the first kind is defined by:
+     *   @f[
+     *       R_F(x,y,z) = \frac{1}{2} \int_0^\infty
+     *                 \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{1/2}}
+     *   @f]
+     *
+     *   @param  __x  The first of three symmetric arguments.
+     *   @param  __y  The second of three symmetric arguments.
+     *   @param  __z  The third of three symmetric arguments.
+     *   @return  The Carlson elliptic function of the first kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_rf(const _Tp __x, const _Tp __y, const _Tp __z)
+    {
+      const _Tp __min = std::numeric_limits<_Tp>::min();
+      const _Tp __max = std::numeric_limits<_Tp>::max();
+      const _Tp __lolim = _Tp(5) * __min;
+      const _Tp __uplim = __max / _Tp(5);
+
+      if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0))
+        std::__throw_domain_error(__N("Argument less than zero "
+                                      "in __ellint_rf."));
+      else if (__x + __y < __lolim || __x + __z < __lolim
+            || __y + __z < __lolim)
+        std::__throw_domain_error(__N("Argument too small in __ellint_rf"));
+      else
+        {
+          const _Tp __c0 = _Tp(1) / _Tp(4);
+          const _Tp __c1 = _Tp(1) / _Tp(24);
+          const _Tp __c2 = _Tp(1) / _Tp(10);
+          const _Tp __c3 = _Tp(3) / _Tp(44);
+          const _Tp __c4 = _Tp(1) / _Tp(14);
+
+          _Tp __xn = __x;
+          _Tp __yn = __y;
+          _Tp __zn = __z;
+
+          const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+          const _Tp __errtol = std::pow(__eps, _Tp(1) / _Tp(6));
+          _Tp __mu;
+          _Tp __xndev, __yndev, __zndev;
+
+          const unsigned int __max_iter = 100;
+          for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
+            {
+              __mu = (__xn + __yn + __zn) / _Tp(3);
+              __xndev = 2 - (__mu + __xn) / __mu;
+              __yndev = 2 - (__mu + __yn) / __mu;
+              __zndev = 2 - (__mu + __zn) / __mu;
+              _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
+              __epsilon = std::max(__epsilon, std::abs(__zndev));
+              if (__epsilon < __errtol)
+                break;
+              const _Tp __xnroot = std::sqrt(__xn);
+              const _Tp __ynroot = std::sqrt(__yn);
+              const _Tp __znroot = std::sqrt(__zn);
+              const _Tp __lambda = __xnroot * (__ynroot + __znroot)
+                                 + __ynroot * __znroot;
+              __xn = __c0 * (__xn + __lambda);
+              __yn = __c0 * (__yn + __lambda);
+              __zn = __c0 * (__zn + __lambda);
+            }
+
+          const _Tp __e2 = __xndev * __yndev - __zndev * __zndev;
+          const _Tp __e3 = __xndev * __yndev * __zndev;
+          const _Tp __s  = _Tp(1) + (__c1 * __e2 - __c2 - __c3 * __e3) * __e2
+                   + __c4 * __e3;
+
+          return __s / std::sqrt(__mu);
+        }
+    }
+
+
+    /**
+     *   @brief Return the complete elliptic integral of the first kind
+     *          @f$ K(k) @f$ by series expansion.
+     * 
+     *   The complete elliptic integral of the first kind is defined as
+     *   @f[
+     *     K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta}
+     *                              {\sqrt{1 - k^2sin^2\theta}}
+     *   @f]
+     * 
+     *   This routine is not bad as long as |k| is somewhat smaller than 1
+     *   but is not is good as the Carlson elliptic integral formulation.
+     * 
+     *   @param  __k  The argument of the complete elliptic function.
+     *   @return  The complete elliptic function of the first kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __comp_ellint_1_series(const _Tp __k)
+    {
+
+      const _Tp __kk = __k * __k;
+
+      _Tp __term = __kk / _Tp(4);
+      _Tp __sum = _Tp(1) + __term;
+
+      const unsigned int __max_iter = 1000;
+      for (unsigned int __i = 2; __i < __max_iter; ++__i)
+        {
+          __term *= (2 * __i - 1) * __kk / (2 * __i);
+          if (__term < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __sum += __term;
+        }
+
+      return __numeric_constants<_Tp>::__pi_2() * __sum;
+    }
+
+
+    /**
+     *   @brief  Return the complete elliptic integral of the first kind
+     *           @f$ K(k) @f$ using the Carlson formulation.
+     * 
+     *   The complete elliptic integral of the first kind is defined as
+     *   @f[
+     *     K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta}
+     *                                           {\sqrt{1 - k^2 sin^2\theta}}
+     *   @f]
+     *   where @f$ F(k,\phi) @f$ is the incomplete elliptic integral of the
+     *   first kind.
+     * 
+     *   @param  __k  The argument of the complete elliptic function.
+     *   @return  The complete elliptic function of the first kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __comp_ellint_1(const _Tp __k)
+    {
+
+      if (__isnan(__k))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (std::abs(__k) >= _Tp(1))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        return __ellint_rf(_Tp(0), _Tp(1) - __k * __k, _Tp(1));
+    }
+
+
+    /**
+     *   @brief  Return the incomplete elliptic integral of the first kind
+     *           @f$ F(k,\phi) @f$ using the Carlson formulation.
+     * 
+     *   The incomplete elliptic integral of the first kind is defined as
+     *   @f[
+     *     F(k,\phi) = \int_0^{\phi}\frac{d\theta}
+     *                                   {\sqrt{1 - k^2 sin^2\theta}}
+     *   @f]
+     * 
+     *   @param  __k  The argument of the elliptic function.
+     *   @param  __phi  The integral limit argument of the elliptic function.
+     *   @return  The elliptic function of the first kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_1(const _Tp __k, const _Tp __phi)
+    {
+
+      if (__isnan(__k) || __isnan(__phi))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (std::abs(__k) > _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in __ellint_1."));
+      else
+        {
+          //  Reduce phi to -pi/2 < phi < +pi/2.
+          const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
+                                   + _Tp(0.5L));
+          const _Tp __phi_red = __phi
+                              - __n * __numeric_constants<_Tp>::__pi();
+
+          const _Tp __s = std::sin(__phi_red);
+          const _Tp __c = std::cos(__phi_red);
+
+          const _Tp __F = __s
+                        * __ellint_rf(__c * __c,
+                                _Tp(1) - __k * __k * __s * __s, _Tp(1));
+
+          if (__n == 0)
+            return __F;
+          else
+            return __F + _Tp(2) * __n * __comp_ellint_1(__k);
+        }
+    }
+
+
+    /**
+     *   @brief Return the complete elliptic integral of the second kind
+     *          @f$ E(k) @f$ by series expansion.
+     * 
+     *   The complete elliptic integral of the second kind is defined as
+     *   @f[
+     *     E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta}
+     *   @f]
+     * 
+     *   This routine is not bad as long as |k| is somewhat smaller than 1
+     *   but is not is good as the Carlson elliptic integral formulation.
+     * 
+     *   @param  __k  The argument of the complete elliptic function.
+     *   @return  The complete elliptic function of the second kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __comp_ellint_2_series(const _Tp __k)
+    {
+
+      const _Tp __kk = __k * __k;
+
+      _Tp __term = __kk;
+      _Tp __sum = __term;
+
+      const unsigned int __max_iter = 1000;
+      for (unsigned int __i = 2; __i < __max_iter; ++__i)
+        {
+          const _Tp __i2m = 2 * __i - 1;
+          const _Tp __i2 = 2 * __i;
+          __term *= __i2m * __i2m * __kk / (__i2 * __i2);
+          if (__term < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __sum += __term / __i2m;
+        }
+
+      return __numeric_constants<_Tp>::__pi_2() * (_Tp(1) - __sum);
+    }
+
+
+    /**
+     *   @brief  Return the Carlson elliptic function of the second kind
+     *           @f$ R_D(x,y,z) = R_J(x,y,z,z) @f$ where
+     *           @f$ R_J(x,y,z,p) @f$ is the Carlson elliptic function
+     *           of the third kind.
+     * 
+     *   The Carlson elliptic function of the second kind is defined by:
+     *   @f[
+     *       R_D(x,y,z) = \frac{3}{2} \int_0^\infty
+     *                 \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{3/2}}
+     *   @f]
+     *
+     *   Based on Carlson's algorithms:
+     *   -  B. C. Carlson Numer. Math. 33, 1 (1979)
+     *   -  B. C. Carlson, Special Functions of Applied Mathematics (1977)
+     *   -  Numerical Recipes in C, 2nd ed, pp. 261-269,
+     *      by Press, Teukolsky, Vetterling, Flannery (1992)
+     *
+     *   @param  __x  The first of two symmetric arguments.
+     *   @param  __y  The second of two symmetric arguments.
+     *   @param  __z  The third argument.
+     *   @return  The Carlson elliptic function of the second kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_rd(const _Tp __x, const _Tp __y, const _Tp __z)
+    {
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6));
+      const _Tp __min = std::numeric_limits<_Tp>::min();
+      const _Tp __max = std::numeric_limits<_Tp>::max();
+      const _Tp __lolim = _Tp(2) / std::pow(__max, _Tp(2) / _Tp(3));
+      const _Tp __uplim = std::pow(_Tp(0.1L) * __errtol / __min, _Tp(2) / _Tp(3));
+
+      if (__x < _Tp(0) || __y < _Tp(0))
+        std::__throw_domain_error(__N("Argument less than zero "
+                                      "in __ellint_rd."));
+      else if (__x + __y < __lolim || __z < __lolim)
+        std::__throw_domain_error(__N("Argument too small "
+                                      "in __ellint_rd."));
+      else
+        {
+          const _Tp __c0 = _Tp(1) / _Tp(4);
+          const _Tp __c1 = _Tp(3) / _Tp(14);
+          const _Tp __c2 = _Tp(1) / _Tp(6);
+          const _Tp __c3 = _Tp(9) / _Tp(22);
+          const _Tp __c4 = _Tp(3) / _Tp(26);
+
+          _Tp __xn = __x;
+          _Tp __yn = __y;
+          _Tp __zn = __z;
+          _Tp __sigma = _Tp(0);
+          _Tp __power4 = _Tp(1);
+
+          _Tp __mu;
+          _Tp __xndev, __yndev, __zndev;
+
+          const unsigned int __max_iter = 100;
+          for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
+            {
+              __mu = (__xn + __yn + _Tp(3) * __zn) / _Tp(5);
+              __xndev = (__mu - __xn) / __mu;
+              __yndev = (__mu - __yn) / __mu;
+              __zndev = (__mu - __zn) / __mu;
+              _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
+              __epsilon = std::max(__epsilon, std::abs(__zndev));
+              if (__epsilon < __errtol)
+                break;
+              _Tp __xnroot = std::sqrt(__xn);
+              _Tp __ynroot = std::sqrt(__yn);
+              _Tp __znroot = std::sqrt(__zn);
+              _Tp __lambda = __xnroot * (__ynroot + __znroot)
+                           + __ynroot * __znroot;
+              __sigma += __power4 / (__znroot * (__zn + __lambda));
+              __power4 *= __c0;
+              __xn = __c0 * (__xn + __lambda);
+              __yn = __c0 * (__yn + __lambda);
+              __zn = __c0 * (__zn + __lambda);
+            }
+
+	  // Note: __ea is an SPU badname.
+          _Tp __eaa = __xndev * __yndev;
+          _Tp __eb = __zndev * __zndev;
+          _Tp __ec = __eaa - __eb;
+          _Tp __ed = __eaa - _Tp(6) * __eb;
+          _Tp __ef = __ed + __ec + __ec;
+          _Tp __s1 = __ed * (-__c1 + __c3 * __ed
+                                   / _Tp(3) - _Tp(3) * __c4 * __zndev * __ef
+                                   / _Tp(2));
+          _Tp __s2 = __zndev
+                   * (__c2 * __ef
+                    + __zndev * (-__c3 * __ec - __zndev * __c4 - __eaa));
+
+          return _Tp(3) * __sigma + __power4 * (_Tp(1) + __s1 + __s2)
+                                        / (__mu * std::sqrt(__mu));
+        }
+    }
+
+
+    /**
+     *   @brief  Return the complete elliptic integral of the second kind
+     *           @f$ E(k) @f$ using the Carlson formulation.
+     * 
+     *   The complete elliptic integral of the second kind is defined as
+     *   @f[
+     *     E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta}
+     *   @f]
+     * 
+     *   @param  __k  The argument of the complete elliptic function.
+     *   @return  The complete elliptic function of the second kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __comp_ellint_2(const _Tp __k)
+    {
+
+      if (__isnan(__k))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (std::abs(__k) == 1)
+        return _Tp(1);
+      else if (std::abs(__k) > _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in __comp_ellint_2."));
+      else
+        {
+          const _Tp __kk = __k * __k;
+
+          return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
+               - __kk * __ellint_rd(_Tp(0), _Tp(1) - __kk, _Tp(1)) / _Tp(3);
+        }
+    }
+
+
+    /**
+     *   @brief  Return the incomplete elliptic integral of the second kind
+     *           @f$ E(k,\phi) @f$ using the Carlson formulation.
+     * 
+     *   The incomplete elliptic integral of the second kind is defined as
+     *   @f[
+     *     E(k,\phi) = \int_0^{\phi} \sqrt{1 - k^2 sin^2\theta}
+     *   @f]
+     * 
+     *   @param  __k  The argument of the elliptic function.
+     *   @param  __phi  The integral limit argument of the elliptic function.
+     *   @return  The elliptic function of the second kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_2(const _Tp __k, const _Tp __phi)
+    {
+
+      if (__isnan(__k) || __isnan(__phi))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (std::abs(__k) > _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in __ellint_2."));
+      else
+        {
+          //  Reduce phi to -pi/2 < phi < +pi/2.
+          const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
+                                   + _Tp(0.5L));
+          const _Tp __phi_red = __phi
+                              - __n * __numeric_constants<_Tp>::__pi();
+
+          const _Tp __kk = __k * __k;
+          const _Tp __s = std::sin(__phi_red);
+          const _Tp __ss = __s * __s;
+          const _Tp __sss = __ss * __s;
+          const _Tp __c = std::cos(__phi_red);
+          const _Tp __cc = __c * __c;
+
+          const _Tp __E = __s
+                        * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
+                        - __kk * __sss
+                        * __ellint_rd(__cc, _Tp(1) - __kk * __ss, _Tp(1))
+                        / _Tp(3);
+
+          if (__n == 0)
+            return __E;
+          else
+            return __E + _Tp(2) * __n * __comp_ellint_2(__k);
+        }
+    }
+
+
+    /**
+     *   @brief  Return the Carlson elliptic function
+     *           @f$ R_C(x,y) = R_F(x,y,y) @f$ where @f$ R_F(x,y,z) @f$
+     *           is the Carlson elliptic function of the first kind.
+     * 
+     *   The Carlson elliptic function is defined by:
+     *   @f[
+     *       R_C(x,y) = \frac{1}{2} \int_0^\infty
+     *                 \frac{dt}{(t + x)^{1/2}(t + y)}
+     *   @f]
+     *
+     *   Based on Carlson's algorithms:
+     *   -  B. C. Carlson Numer. Math. 33, 1 (1979)
+     *   -  B. C. Carlson, Special Functions of Applied Mathematics (1977)
+     *   -  Numerical Recipes in C, 2nd ed, pp. 261-269,
+     *      by Press, Teukolsky, Vetterling, Flannery (1992)
+     *
+     *   @param  __x  The first argument.
+     *   @param  __y  The second argument.
+     *   @return  The Carlson elliptic function.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_rc(const _Tp __x, const _Tp __y)
+    {
+      const _Tp __min = std::numeric_limits<_Tp>::min();
+      const _Tp __max = std::numeric_limits<_Tp>::max();
+      const _Tp __lolim = _Tp(5) * __min;
+      const _Tp __uplim = __max / _Tp(5);
+
+      if (__x < _Tp(0) || __y < _Tp(0) || __x + __y < __lolim)
+        std::__throw_domain_error(__N("Argument less than zero "
+                                      "in __ellint_rc."));
+      else
+        {
+          const _Tp __c0 = _Tp(1) / _Tp(4);
+          const _Tp __c1 = _Tp(1) / _Tp(7);
+          const _Tp __c2 = _Tp(9) / _Tp(22);
+          const _Tp __c3 = _Tp(3) / _Tp(10);
+          const _Tp __c4 = _Tp(3) / _Tp(8);
+
+          _Tp __xn = __x;
+          _Tp __yn = __y;
+
+          const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+          const _Tp __errtol = std::pow(__eps / _Tp(30), _Tp(1) / _Tp(6));
+          _Tp __mu;
+          _Tp __sn;
+
+          const unsigned int __max_iter = 100;
+          for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
+            {
+              __mu = (__xn + _Tp(2) * __yn) / _Tp(3);
+              __sn = (__yn + __mu) / __mu - _Tp(2);
+              if (std::abs(__sn) < __errtol)
+                break;
+              const _Tp __lambda = _Tp(2) * std::sqrt(__xn) * std::sqrt(__yn)
+                             + __yn;
+              __xn = __c0 * (__xn + __lambda);
+              __yn = __c0 * (__yn + __lambda);
+            }
+
+          _Tp __s = __sn * __sn
+                  * (__c3 + __sn*(__c1 + __sn * (__c4 + __sn * __c2)));
+
+          return (_Tp(1) + __s) / std::sqrt(__mu);
+        }
+    }
+
+
+    /**
+     *   @brief  Return the Carlson elliptic function @f$ R_J(x,y,z,p) @f$
+     *           of the third kind.
+     * 
+     *   The Carlson elliptic function of the third kind is defined by:
+     *   @f[
+     *       R_J(x,y,z,p) = \frac{3}{2} \int_0^\infty
+     *       \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{1/2}(t + p)}
+     *   @f]
+     *
+     *   Based on Carlson's algorithms:
+     *   -  B. C. Carlson Numer. Math. 33, 1 (1979)
+     *   -  B. C. Carlson, Special Functions of Applied Mathematics (1977)
+     *   -  Numerical Recipes in C, 2nd ed, pp. 261-269,
+     *      by Press, Teukolsky, Vetterling, Flannery (1992)
+     *
+     *   @param  __x  The first of three symmetric arguments.
+     *   @param  __y  The second of three symmetric arguments.
+     *   @param  __z  The third of three symmetric arguments.
+     *   @param  __p  The fourth argument.
+     *   @return  The Carlson elliptic function of the fourth kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_rj(const _Tp __x, const _Tp __y, const _Tp __z, const _Tp __p)
+    {
+      const _Tp __min = std::numeric_limits<_Tp>::min();
+      const _Tp __max = std::numeric_limits<_Tp>::max();
+      const _Tp __lolim = std::pow(_Tp(5) * __min, _Tp(1)/_Tp(3));
+      const _Tp __uplim = _Tp(0.3L)
+                        * std::pow(_Tp(0.2L) * __max, _Tp(1)/_Tp(3));
+
+      if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0))
+        std::__throw_domain_error(__N("Argument less than zero "
+                                      "in __ellint_rj."));
+      else if (__x + __y < __lolim || __x + __z < __lolim
+            || __y + __z < __lolim || __p < __lolim)
+        std::__throw_domain_error(__N("Argument too small "
+                                      "in __ellint_rj"));
+      else
+        {
+          const _Tp __c0 = _Tp(1) / _Tp(4);
+          const _Tp __c1 = _Tp(3) / _Tp(14);
+          const _Tp __c2 = _Tp(1) / _Tp(3);
+          const _Tp __c3 = _Tp(3) / _Tp(22);
+          const _Tp __c4 = _Tp(3) / _Tp(26);
+
+          _Tp __xn = __x;
+          _Tp __yn = __y;
+          _Tp __zn = __z;
+          _Tp __pn = __p;
+          _Tp __sigma = _Tp(0);
+          _Tp __power4 = _Tp(1);
+
+          const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+          const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6));
+
+          _Tp __lambda, __mu;
+          _Tp __xndev, __yndev, __zndev, __pndev;
+
+          const unsigned int __max_iter = 100;
+          for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
+            {
+              __mu = (__xn + __yn + __zn + _Tp(2) * __pn) / _Tp(5);
+              __xndev = (__mu - __xn) / __mu;
+              __yndev = (__mu - __yn) / __mu;
+              __zndev = (__mu - __zn) / __mu;
+              __pndev = (__mu - __pn) / __mu;
+              _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
+              __epsilon = std::max(__epsilon, std::abs(__zndev));
+              __epsilon = std::max(__epsilon, std::abs(__pndev));
+              if (__epsilon < __errtol)
+                break;
+              const _Tp __xnroot = std::sqrt(__xn);
+              const _Tp __ynroot = std::sqrt(__yn);
+              const _Tp __znroot = std::sqrt(__zn);
+              const _Tp __lambda = __xnroot * (__ynroot + __znroot)
+                                 + __ynroot * __znroot;
+              const _Tp __alpha1 = __pn * (__xnroot + __ynroot + __znroot)
+                                + __xnroot * __ynroot * __znroot;
+              const _Tp __alpha2 = __alpha1 * __alpha1;
+              const _Tp __beta = __pn * (__pn + __lambda)
+                                      * (__pn + __lambda);
+              __sigma += __power4 * __ellint_rc(__alpha2, __beta);
+              __power4 *= __c0;
+              __xn = __c0 * (__xn + __lambda);
+              __yn = __c0 * (__yn + __lambda);
+              __zn = __c0 * (__zn + __lambda);
+              __pn = __c0 * (__pn + __lambda);
+            }
+
+	  // Note: __ea is an SPU badname.
+          _Tp __eaa = __xndev * (__yndev + __zndev) + __yndev * __zndev;
+          _Tp __eb = __xndev * __yndev * __zndev;
+          _Tp __ec = __pndev * __pndev;
+          _Tp __e2 = __eaa - _Tp(3) * __ec;
+          _Tp __e3 = __eb + _Tp(2) * __pndev * (__eaa - __ec);
+          _Tp __s1 = _Tp(1) + __e2 * (-__c1 + _Tp(3) * __c3 * __e2 / _Tp(4)
+                            - _Tp(3) * __c4 * __e3 / _Tp(2));
+          _Tp __s2 = __eb * (__c2 / _Tp(2)
+                   + __pndev * (-__c3 - __c3 + __pndev * __c4));
+          _Tp __s3 = __pndev * __eaa * (__c2 - __pndev * __c3)
+                   - __c2 * __pndev * __ec;
+
+          return _Tp(3) * __sigma + __power4 * (__s1 + __s2 + __s3)
+                                             / (__mu * std::sqrt(__mu));
+        }
+    }
+
+
+    /**
+     *   @brief Return the complete elliptic integral of the third kind
+     *          @f$ \Pi(k,\nu) = \Pi(k,\nu,\pi/2) @f$ using the
+     *          Carlson formulation.
+     * 
+     *   The complete elliptic integral of the third kind is defined as
+     *   @f[
+     *     \Pi(k,\nu) = \int_0^{\pi/2}
+     *                   \frac{d\theta}
+     *                 {(1 - \nu \sin^2\theta)\sqrt{1 - k^2 \sin^2\theta}}
+     *   @f]
+     * 
+     *   @param  __k  The argument of the elliptic function.
+     *   @param  __nu  The second argument of the elliptic function.
+     *   @return  The complete elliptic function of the third kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __comp_ellint_3(const _Tp __k, const _Tp __nu)
+    {
+
+      if (__isnan(__k) || __isnan(__nu))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__nu == _Tp(1))
+        return std::numeric_limits<_Tp>::infinity();
+      else if (std::abs(__k) > _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in __comp_ellint_3."));
+      else
+        {
+          const _Tp __kk = __k * __k;
+
+          return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
+               - __nu
+               * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) + __nu)
+               / _Tp(3);
+        }
+    }
+
+
+    /**
+     *   @brief Return the incomplete elliptic integral of the third kind
+     *          @f$ \Pi(k,\nu,\phi) @f$ using the Carlson formulation.
+     * 
+     *   The incomplete elliptic integral of the third kind is defined as
+     *   @f[
+     *     \Pi(k,\nu,\phi) = \int_0^{\phi}
+     *                       \frac{d\theta}
+     *                            {(1 - \nu \sin^2\theta)
+     *                             \sqrt{1 - k^2 \sin^2\theta}}
+     *   @f]
+     * 
+     *   @param  __k  The argument of the elliptic function.
+     *   @param  __nu  The second argument of the elliptic function.
+     *   @param  __phi  The integral limit argument of the elliptic function.
+     *   @return  The elliptic function of the third kind.
+     */
+    template<typename _Tp>
+    _Tp
+    __ellint_3(const _Tp __k, const _Tp __nu, const _Tp __phi)
+    {
+
+      if (__isnan(__k) || __isnan(__nu) || __isnan(__phi))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (std::abs(__k) > _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in __ellint_3."));
+      else
+        {
+          //  Reduce phi to -pi/2 < phi < +pi/2.
+          const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
+                                   + _Tp(0.5L));
+          const _Tp __phi_red = __phi
+                              - __n * __numeric_constants<_Tp>::__pi();
+
+          const _Tp __kk = __k * __k;
+          const _Tp __s = std::sin(__phi_red);
+          const _Tp __ss = __s * __s;
+          const _Tp __sss = __ss * __s;
+          const _Tp __c = std::cos(__phi_red);
+          const _Tp __cc = __c * __c;
+
+          const _Tp __Pi = __s
+                         * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
+                         - __nu * __sss
+                         * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1),
+                                       _Tp(1) + __nu * __ss) / _Tp(3);
+
+          if (__n == 0)
+            return __Pi;
+          else
+            return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu);
+        }
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_ELL_INTEGRAL_TCC
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/exp_integral.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/exp_integral.tcc
new file mode 100644
index 000000000..cf3bd6353
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/exp_integral.tcc
@@ -0,0 +1,525 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/exp_integral.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+//  Written by Edward Smith-Rowland based on:
+//
+//   (1) Handbook of Mathematical Functions,
+//       Ed. by Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications, New-York, Section 5, pp. 228-251.
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 222-225.
+//
+
+#ifndef _GLIBCXX_TR1_EXP_INTEGRAL_TCC
+#define _GLIBCXX_TR1_EXP_INTEGRAL_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief Return the exponential integral @f$ E_1(x) @f$
+     *          by series summation.  This should be good
+     *          for @f$ x < 1 @f$.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_1(x) = \int_{1}^{\infty} \frac{e^{-xt}}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_E1_series(const _Tp __x)
+    {
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      _Tp __term = _Tp(1);
+      _Tp __esum = _Tp(0);
+      _Tp __osum = _Tp(0);
+      const unsigned int __max_iter = 100;
+      for (unsigned int __i = 1; __i < __max_iter; ++__i)
+        {
+          __term *= - __x / __i;
+          if (std::abs(__term) < __eps)
+            break;
+          if (__term >= _Tp(0))
+            __esum += __term / __i;
+          else
+            __osum += __term / __i;
+        }
+
+      return - __esum - __osum
+             - __numeric_constants<_Tp>::__gamma_e() - std::log(__x);
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_1(x) @f$
+     *          by asymptotic expansion.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_1(x) = \int_{1}^\infty \frac{e^{-xt}}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_E1_asymp(const _Tp __x)
+    {
+      _Tp __term = _Tp(1);
+      _Tp __esum = _Tp(1);
+      _Tp __osum = _Tp(0);
+      const unsigned int __max_iter = 1000;
+      for (unsigned int __i = 1; __i < __max_iter; ++__i)
+        {
+          _Tp __prev = __term;
+          __term *= - __i / __x;
+          if (std::abs(__term) > std::abs(__prev))
+            break;
+          if (__term >= _Tp(0))
+            __esum += __term;
+          else
+            __osum += __term;
+        }
+
+      return std::exp(- __x) * (__esum + __osum) / __x;
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$
+     *          by series summation.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_En_series(const unsigned int __n, const _Tp __x)
+    {
+      const unsigned int __max_iter = 100;
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const int __nm1 = __n - 1;
+      _Tp __ans = (__nm1 != 0
+                ? _Tp(1) / __nm1 : -std::log(__x)
+                                   - __numeric_constants<_Tp>::__gamma_e());
+      _Tp __fact = _Tp(1);
+      for (int __i = 1; __i <= __max_iter; ++__i)
+        {
+          __fact *= -__x / _Tp(__i);
+          _Tp __del;
+          if ( __i != __nm1 )
+            __del = -__fact / _Tp(__i - __nm1);
+          else
+            {
+              _Tp __psi = -__numeric_constants<_Tp>::gamma_e();
+              for (int __ii = 1; __ii <= __nm1; ++__ii)
+                __psi += _Tp(1) / _Tp(__ii);
+              __del = __fact * (__psi - std::log(__x)); 
+            }
+          __ans += __del;
+          if (std::abs(__del) < __eps * std::abs(__ans))
+            return __ans;
+        }
+      std::__throw_runtime_error(__N("Series summation failed "
+                                     "in __expint_En_series."));
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$
+     *          by continued fractions.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_En_cont_frac(const unsigned int __n, const _Tp __x)
+    {
+      const unsigned int __max_iter = 100;
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __fp_min = std::numeric_limits<_Tp>::min();
+      const int __nm1 = __n - 1;
+      _Tp __b = __x + _Tp(__n);
+      _Tp __c = _Tp(1) / __fp_min;
+      _Tp __d = _Tp(1) / __b;
+      _Tp __h = __d;
+      for ( unsigned int __i = 1; __i <= __max_iter; ++__i )
+        {
+          _Tp __a = -_Tp(__i * (__nm1 + __i));
+          __b += _Tp(2);
+          __d = _Tp(1) / (__a * __d + __b);
+          __c = __b + __a / __c;
+          const _Tp __del = __c * __d;
+          __h *= __del;
+          if (std::abs(__del - _Tp(1)) < __eps)
+            {
+              const _Tp __ans = __h * std::exp(-__x);
+              return __ans;
+            }
+        }
+      std::__throw_runtime_error(__N("Continued fraction failed "
+                                     "in __expint_En_cont_frac."));
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$
+     *          by recursion.  Use upward recursion for @f$ x < n @f$
+     *          and downward recursion (Miller's algorithm) otherwise.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_En_recursion(const unsigned int __n, const _Tp __x)
+    {
+      _Tp __En;
+      _Tp __E1 = __expint_E1(__x);
+      if (__x < _Tp(__n))
+        {
+          //  Forward recursion is stable only for n < x.
+          __En = __E1;
+          for (unsigned int __j = 2; __j < __n; ++__j)
+            __En = (std::exp(-__x) - __x * __En) / _Tp(__j - 1);
+        }
+      else
+        {
+          //  Backward recursion is stable only for n >= x.
+          __En = _Tp(1);
+          const int __N = __n + 20;  //  TODO: Check this starting number.
+          _Tp __save = _Tp(0);
+          for (int __j = __N; __j > 0; --__j)
+            {
+              __En = (std::exp(-__x) - __j * __En) / __x;
+              if (__j == __n)
+                __save = __En;
+            }
+            _Tp __norm = __En / __E1;
+            __En /= __norm;
+        }
+
+      return __En;
+    }
+
+    /**
+     *   @brief Return the exponential integral @f$ Ei(x) @f$
+     *          by series summation.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_Ei_series(const _Tp __x)
+    {
+      _Tp __term = _Tp(1);
+      _Tp __sum = _Tp(0);
+      const unsigned int __max_iter = 1000;
+      for (unsigned int __i = 1; __i < __max_iter; ++__i)
+        {
+          __term *= __x / __i;
+          __sum += __term / __i;
+          if (__term < std::numeric_limits<_Tp>::epsilon() * __sum)
+            break;
+        }
+
+      return __numeric_constants<_Tp>::__gamma_e() + __sum + std::log(__x);
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ Ei(x) @f$
+     *          by asymptotic expansion.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_Ei_asymp(const _Tp __x)
+    {
+      _Tp __term = _Tp(1);
+      _Tp __sum = _Tp(1);
+      const unsigned int __max_iter = 1000;
+      for (unsigned int __i = 1; __i < __max_iter; ++__i)
+        {
+          _Tp __prev = __term;
+          __term *= __i / __x;
+          if (__term < std::numeric_limits<_Tp>::epsilon())
+            break;
+          if (__term >= __prev)
+            break;
+          __sum += __term;
+        }
+
+      return std::exp(__x) * __sum / __x;
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ Ei(x) @f$.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_Ei(const _Tp __x)
+    {
+      if (__x < _Tp(0))
+        return -__expint_E1(-__x);
+      else if (__x < -std::log(std::numeric_limits<_Tp>::epsilon()))
+        return __expint_Ei_series(__x);
+      else
+        return __expint_Ei_asymp(__x);
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_1(x) @f$.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_1(x) = \int_{1}^\infty \frac{e^{-xt}}{t} dt
+     *          \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_E1(const _Tp __x)
+    {
+      if (__x < _Tp(0))
+        return -__expint_Ei(-__x);
+      else if (__x < _Tp(1))
+        return __expint_E1_series(__x);
+      else if (__x < _Tp(100))  //  TODO: Find a good asymptotic switch point.
+        return __expint_En_cont_frac(1, __x);
+      else
+        return __expint_E1_asymp(__x);
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$
+     *          for large argument.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     * 
+     *   This is something of an extension.
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_asymp(const unsigned int __n, const _Tp __x)
+    {
+      _Tp __term = _Tp(1);
+      _Tp __sum = _Tp(1);
+      for (unsigned int __i = 1; __i <= __n; ++__i)
+        {
+          _Tp __prev = __term;
+          __term *= -(__n - __i + 1) / __x;
+          if (std::abs(__term) > std::abs(__prev))
+            break;
+          __sum += __term;
+        }
+
+      return std::exp(-__x) * __sum / __x;
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$
+     *          for large order.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     *        
+     *   This is something of an extension.
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint_large_n(const unsigned int __n, const _Tp __x)
+    {
+      const _Tp __xpn = __x + __n;
+      const _Tp __xpn2 = __xpn * __xpn;
+      _Tp __term = _Tp(1);
+      _Tp __sum = _Tp(1);
+      for (unsigned int __i = 1; __i <= __n; ++__i)
+        {
+          _Tp __prev = __term;
+          __term *= (__n - 2 * (__i - 1) * __x) / __xpn2;
+          if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __sum += __term;
+        }
+
+      return std::exp(-__x) * __sum / __xpn;
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ E_n(x) @f$.
+     * 
+     *   The exponential integral is given by
+     *          \f[
+     *            E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt
+     *          \f]
+     *   This is something of an extension.
+     * 
+     *   @param  __n  The order of the exponential integral function.
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    _Tp
+    __expint(const unsigned int __n, const _Tp __x)
+    {
+      //  Return NaN on NaN input.
+      if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__n <= 1 && __x == _Tp(0))
+        return std::numeric_limits<_Tp>::infinity();
+      else
+        {
+          _Tp __E0 = std::exp(__x) / __x;
+          if (__n == 0)
+            return __E0;
+
+          _Tp __E1 = __expint_E1(__x);
+          if (__n == 1)
+            return __E1;
+
+          if (__x == _Tp(0))
+            return _Tp(1) / static_cast<_Tp>(__n - 1);
+
+          _Tp __En = __expint_En_recursion(__n, __x);
+
+          return __En;
+        }
+    }
+
+
+    /**
+     *   @brief Return the exponential integral @f$ Ei(x) @f$.
+     * 
+     *   The exponential integral is given by
+     *   \f[
+     *     Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt
+     *   \f]
+     * 
+     *   @param  __x  The argument of the exponential integral function.
+     *   @return  The exponential integral.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __expint(const _Tp __x)
+    {
+      if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        return __expint_Ei(__x);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_EXP_INTEGRAL_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/fenv.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/fenv.h
new file mode 100644
index 000000000..118630e49
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/fenv.h
@@ -0,0 +1,34 @@
+// TR1 fenv.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/fenv.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_FENV_H
+#define _TR1_FENV_H 1
+
+#include <tr1/cfenv>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/float.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/float.h
new file mode 100644
index 000000000..bbeff6e3a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/float.h
@@ -0,0 +1,34 @@
+// TR1 float.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/float.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_FLOAT_H
+#define _TR1_FLOAT_H 1
+
+#include <tr1/cfloat>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional
new file mode 100644
index 000000000..31e72d63a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional
@@ -0,0 +1,2149 @@
+// TR1 functional header -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/functional
+ *  This is a TR1 C++ Library header.
+ */
+
+#ifndef _GLIBCXX_TR1_FUNCTIONAL
+#define _GLIBCXX_TR1_FUNCTIONAL 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_function.h>
+
+#include <typeinfo>
+#include <new>
+#include <tr1/tuple>
+#include <tr1/type_traits>
+#include <bits/stringfwd.h>
+#include <tr1/functional_hash.h>
+#include <ext/type_traits.h>
+#include <bits/move.h> // for std::__addressof
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<typename _MemberPointer>
+    class _Mem_fn;
+
+  /**
+   *  Actual implementation of _Has_result_type, which uses SFINAE to
+   *  determine if the type _Tp has a publicly-accessible member type
+   *  result_type.
+  */
+  template<typename _Tp>
+    class _Has_result_type_helper : __sfinae_types
+    {
+      template<typename _Up>
+        struct _Wrap_type
+	{ };
+
+      template<typename _Up>
+        static __one __test(_Wrap_type<typename _Up::result_type>*);
+
+      template<typename _Up>
+        static __two __test(...);
+
+    public:
+      static const bool value = sizeof(__test<_Tp>(0)) == 1;
+    };
+
+  template<typename _Tp>
+    struct _Has_result_type
+    : integral_constant<bool,
+	      _Has_result_type_helper<typename remove_cv<_Tp>::type>::value>
+    { };
+
+  /**
+   *  
+  */
+  /// If we have found a result_type, extract it.
+  template<bool _Has_result_type, typename _Functor>
+    struct _Maybe_get_result_type
+    { };
+
+  template<typename _Functor>
+    struct _Maybe_get_result_type<true, _Functor>
+    {
+      typedef typename _Functor::result_type result_type;
+    };
+
+  /**
+   *  Base class for any function object that has a weak result type, as
+   *  defined in 3.3/3 of TR1.
+  */
+  template<typename _Functor>
+    struct _Weak_result_type_impl
+    : _Maybe_get_result_type<_Has_result_type<_Functor>::value, _Functor>
+    {
+    };
+
+  /// Retrieve the result type for a function type.
+  template<typename _Res, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res(_ArgTypes...)>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve the result type for a function reference.
+  template<typename _Res, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve the result type for a function pointer.
+  template<typename _Res, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve result type for a member function pointer. 
+  template<typename _Res, typename _Class, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve result type for a const member function pointer. 
+  template<typename _Res, typename _Class, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve result type for a volatile member function pointer. 
+  template<typename _Res, typename _Class, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile>
+    {
+      typedef _Res result_type;
+    };
+
+  /// Retrieve result type for a const volatile member function pointer. 
+  template<typename _Res, typename _Class, typename... _ArgTypes> 
+    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)const volatile>
+    {
+      typedef _Res result_type;
+    };
+
+  /**
+   *  Strip top-level cv-qualifiers from the function object and let
+   *  _Weak_result_type_impl perform the real work.
+  */
+  template<typename _Functor>
+    struct _Weak_result_type
+    : _Weak_result_type_impl<typename remove_cv<_Functor>::type>
+    {
+    };
+
+  template<typename _Signature>
+    class result_of;
+
+  /**
+   *  Actual implementation of result_of. When _Has_result_type is
+   *  true, gets its result from _Weak_result_type. Otherwise, uses
+   *  the function object's member template result to extract the
+   *  result type.
+  */
+  template<bool _Has_result_type, typename _Signature>
+    struct _Result_of_impl;
+
+  // Handle member data pointers using _Mem_fn's logic
+  template<typename _Res, typename _Class, typename _T1>
+    struct _Result_of_impl<false, _Res _Class::*(_T1)>
+    {
+      typedef typename _Mem_fn<_Res _Class::*>
+                ::template _Result_type<_T1>::type type;
+    };
+
+  /**
+   * Determine whether we can determine a result type from @c Functor 
+   * alone.
+   */ 
+  template<typename _Functor, typename... _ArgTypes>
+    class result_of<_Functor(_ArgTypes...)>
+    : public _Result_of_impl<
+               _Has_result_type<_Weak_result_type<_Functor> >::value,
+               _Functor(_ArgTypes...)>
+    {
+    };
+
+  /// We already know the result type for @c Functor; use it.
+  template<typename _Functor, typename... _ArgTypes>
+    struct _Result_of_impl<true, _Functor(_ArgTypes...)>
+    {
+      typedef typename _Weak_result_type<_Functor>::result_type type;
+    };
+
+  /**
+   * We need to compute the result type for this invocation the hard 
+   * way.
+   */
+  template<typename _Functor, typename... _ArgTypes>
+    struct _Result_of_impl<false, _Functor(_ArgTypes...)>
+    {
+      typedef typename _Functor
+                ::template result<_Functor(_ArgTypes...)>::type type;
+    };
+
+  /**
+   * It is unsafe to access ::result when there are zero arguments, so we 
+   * return @c void instead.
+   */
+  template<typename _Functor>
+    struct _Result_of_impl<false, _Functor()>
+    {
+      typedef void type;
+    };
+
+  /// Determines if the type _Tp derives from unary_function.
+  template<typename _Tp>
+    struct _Derives_from_unary_function : __sfinae_types
+    {
+    private:
+      template<typename _T1, typename _Res>
+        static __one __test(const volatile unary_function<_T1, _Res>*);
+
+      // It's tempting to change "..." to const volatile void*, but
+      // that fails when _Tp is a function type.
+      static __two __test(...);
+
+    public:
+      static const bool value = sizeof(__test((_Tp*)0)) == 1;
+    };
+
+  /// Determines if the type _Tp derives from binary_function.
+  template<typename _Tp>
+    struct _Derives_from_binary_function : __sfinae_types
+    {
+    private:
+      template<typename _T1, typename _T2, typename _Res>
+        static __one __test(const volatile binary_function<_T1, _T2, _Res>*);
+
+      // It's tempting to change "..." to const volatile void*, but
+      // that fails when _Tp is a function type.
+      static __two __test(...);
+
+    public:
+      static const bool value = sizeof(__test((_Tp*)0)) == 1;
+    };
+
+  /// Turns a function type into a function pointer type
+  template<typename _Tp, bool _IsFunctionType = is_function<_Tp>::value>
+    struct _Function_to_function_pointer
+    {
+      typedef _Tp type;
+    };
+
+  template<typename _Tp>
+    struct _Function_to_function_pointer<_Tp, true>
+    {
+      typedef _Tp* type;
+    };
+
+  /**
+   * Invoke a function object, which may be either a member pointer or a
+   * function object. The first parameter will tell which.
+   */
+  template<typename _Functor, typename... _Args>
+    inline
+    typename __gnu_cxx::__enable_if<
+             (!is_member_pointer<_Functor>::value
+              && !is_function<_Functor>::value
+              && !is_function<typename remove_pointer<_Functor>::type>::value),
+             typename result_of<_Functor(_Args...)>::type
+           >::__type
+    __invoke(_Functor& __f, _Args&... __args)
+    {
+      return __f(__args...);
+    }
+
+  template<typename _Functor, typename... _Args>
+    inline
+    typename __gnu_cxx::__enable_if<
+             (is_member_pointer<_Functor>::value
+              && !is_function<_Functor>::value
+              && !is_function<typename remove_pointer<_Functor>::type>::value),
+             typename result_of<_Functor(_Args...)>::type
+           >::__type
+    __invoke(_Functor& __f, _Args&... __args)
+    {
+      return mem_fn(__f)(__args...);
+    }
+
+  // To pick up function references (that will become function pointers)
+  template<typename _Functor, typename... _Args>
+    inline
+    typename __gnu_cxx::__enable_if<
+             (is_pointer<_Functor>::value
+              && is_function<typename remove_pointer<_Functor>::type>::value),
+             typename result_of<_Functor(_Args...)>::type
+           >::__type
+    __invoke(_Functor __f, _Args&... __args)
+    {
+      return __f(__args...);
+    }
+
+  /**
+   *  Knowing which of unary_function and binary_function _Tp derives
+   *  from, derives from the same and ensures that reference_wrapper
+   *  will have a weak result type. See cases below.
+   */
+  template<bool _Unary, bool _Binary, typename _Tp>
+    struct _Reference_wrapper_base_impl;
+
+  // Not a unary_function or binary_function, so try a weak result type.
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<false, false, _Tp>
+    : _Weak_result_type<_Tp>
+    { };
+
+  // unary_function but not binary_function
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<true, false, _Tp>
+    : unary_function<typename _Tp::argument_type,
+		     typename _Tp::result_type>
+    { };
+
+  // binary_function but not unary_function
+  template<typename _Tp>
+    struct _Reference_wrapper_base_impl<false, true, _Tp>
+    : binary_function<typename _Tp::first_argument_type,
+		      typename _Tp::second_argument_type,
+		      typename _Tp::result_type>
+    { };
+
+  // Both unary_function and binary_function. Import result_type to
+  // avoid conflicts.
+   template<typename _Tp>
+    struct _Reference_wrapper_base_impl<true, true, _Tp>
+    : unary_function<typename _Tp::argument_type,
+		     typename _Tp::result_type>,
+      binary_function<typename _Tp::first_argument_type,
+		      typename _Tp::second_argument_type,
+		      typename _Tp::result_type>
+    {
+      typedef typename _Tp::result_type result_type;
+    };
+
+  /**
+   *  Derives from unary_function or binary_function when it
+   *  can. Specializations handle all of the easy cases. The primary
+   *  template determines what to do with a class type, which may
+   *  derive from both unary_function and binary_function.
+  */
+  template<typename _Tp>
+    struct _Reference_wrapper_base
+    : _Reference_wrapper_base_impl<
+      _Derives_from_unary_function<_Tp>::value,
+      _Derives_from_binary_function<_Tp>::value,
+      _Tp>
+    { };
+
+  // - a function type (unary)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(_T1)>
+    : unary_function<_T1, _Res>
+    { };
+
+  // - a function type (binary)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(_T1, _T2)>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  // - a function pointer type (unary)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res(*)(_T1)>
+    : unary_function<_T1, _Res>
+    { };
+
+  // - a function pointer type (binary)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res(*)(_T1, _T2)>
+    : binary_function<_T1, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, no qualifiers)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)()>
+    : unary_function<_T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, no qualifiers)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2)>
+    : binary_function<_T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, const)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() const>
+    : unary_function<const _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, const)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const>
+    : binary_function<const _T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, volatile)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() volatile>
+    : unary_function<volatile _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, volatile)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile>
+    : binary_function<volatile _T1*, _T2, _Res>
+    { };
+
+  // - a pointer to member function type (unary, const volatile)
+  template<typename _Res, typename _T1>
+    struct _Reference_wrapper_base<_Res (_T1::*)() const volatile>
+    : unary_function<const volatile _T1*, _Res>
+    { };
+
+  // - a pointer to member function type (binary, const volatile)
+  template<typename _Res, typename _T1, typename _T2>
+    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile>
+    : binary_function<const volatile _T1*, _T2, _Res>
+    { };
+
+  /// reference_wrapper
+  template<typename _Tp>
+    class reference_wrapper
+    : public _Reference_wrapper_base<typename remove_cv<_Tp>::type>
+    {
+      // If _Tp is a function type, we can't form result_of<_Tp(...)>,
+      // so turn it into a function pointer type.
+      typedef typename _Function_to_function_pointer<_Tp>::type
+        _M_func_type;
+
+      _Tp* _M_data;
+    public:
+      typedef _Tp type;
+
+      explicit
+      reference_wrapper(_Tp& __indata)
+      : _M_data(std::__addressof(__indata))
+      { }
+
+      reference_wrapper(const reference_wrapper<_Tp>& __inref):
+      _M_data(__inref._M_data)
+      { }
+
+      reference_wrapper&
+      operator=(const reference_wrapper<_Tp>& __inref)
+      {
+        _M_data = __inref._M_data;
+        return *this;
+      }
+
+      operator _Tp&() const
+      { return this->get(); }
+
+      _Tp&
+      get() const
+      { return *_M_data; }
+
+      template<typename... _Args>
+        typename result_of<_M_func_type(_Args...)>::type
+        operator()(_Args&... __args) const
+        {
+	  return __invoke(get(), __args...);
+	}
+    };
+
+
+  // Denotes a reference should be taken to a variable.
+  template<typename _Tp>
+    inline reference_wrapper<_Tp>
+    ref(_Tp& __t)
+    { return reference_wrapper<_Tp>(__t); }
+
+  // Denotes a const reference should be taken to a variable.
+  template<typename _Tp>
+    inline reference_wrapper<const _Tp>
+    cref(const _Tp& __t)
+    { return reference_wrapper<const _Tp>(__t); }
+
+  template<typename _Tp>
+    inline reference_wrapper<_Tp>
+    ref(reference_wrapper<_Tp> __t)
+    { return ref(__t.get()); }
+
+  template<typename _Tp>
+    inline reference_wrapper<const _Tp>
+    cref(reference_wrapper<_Tp> __t)
+    { return cref(__t.get()); }
+
+  template<typename _Tp, bool>
+    struct _Mem_fn_const_or_non
+    {
+      typedef const _Tp& type;
+    };
+
+  template<typename _Tp>
+    struct _Mem_fn_const_or_non<_Tp, false>
+    {
+      typedef _Tp& type;
+    };
+
+  /**
+   * Derives from @c unary_function or @c binary_function, or perhaps
+   * nothing, depending on the number of arguments provided. The
+   * primary template is the basis case, which derives nothing.
+   */
+  template<typename _Res, typename... _ArgTypes> 
+    struct _Maybe_unary_or_binary_function { };
+
+  /// Derives from @c unary_function, as appropriate. 
+  template<typename _Res, typename _T1> 
+    struct _Maybe_unary_or_binary_function<_Res, _T1>
+    : std::unary_function<_T1, _Res> { };
+
+  /// Derives from @c binary_function, as appropriate. 
+  template<typename _Res, typename _T1, typename _T2> 
+    struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
+    : std::binary_function<_T1, _T2, _Res> { };
+
+  /// Implementation of @c mem_fn for member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...)>
+    : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...);
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __object, const volatile _Class *, 
+                _ArgTypes... __args) const
+        { return (__object.*__pmf)(__args...); }
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+        { return ((*__ptr).*__pmf)(__args...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(_Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(__args...); }
+
+      // Handle pointers
+      _Res
+      operator()(_Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(__args...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+        _Res
+	operator()(_Tp& __object, _ArgTypes... __args) const
+        { return _M_call(__object, &__object, __args...); }
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for const member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const>
+    : public _Maybe_unary_or_binary_function<_Res, const _Class*, 
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) const;
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __object, const volatile _Class *, 
+                _ArgTypes... __args) const
+        { return (__object.*__pmf)(__args...); }
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+        { return ((*__ptr).*__pmf)(__args...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(const _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(__args...); }
+
+      // Handle pointers
+      _Res
+      operator()(const _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(__args...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+        _Res operator()(_Tp& __object, _ArgTypes... __args) const
+        { return _M_call(__object, &__object, __args...); }
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for volatile member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile>
+    : public _Maybe_unary_or_binary_function<_Res, volatile _Class*, 
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile;
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __object, const volatile _Class *, 
+                _ArgTypes... __args) const
+        { return (__object.*__pmf)(__args...); }
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+        { return ((*__ptr).*__pmf)(__args...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res
+      operator()(volatile _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(__args...); }
+
+      // Handle pointers
+      _Res
+      operator()(volatile _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(__args...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+        _Res
+	operator()(_Tp& __object, _ArgTypes... __args) const
+        { return _M_call(__object, &__object, __args...); }
+
+    private:
+      _Functor __pmf;
+    };
+
+  /// Implementation of @c mem_fn for const volatile member function pointers.
+  template<typename _Res, typename _Class, typename... _ArgTypes>
+    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile>
+    : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*, 
+					     _ArgTypes...>
+    {
+      typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile;
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __object, const volatile _Class *, 
+                _ArgTypes... __args) const
+        { return (__object.*__pmf)(__args...); }
+
+      template<typename _Tp>
+        _Res
+        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
+        { return ((*__ptr).*__pmf)(__args...); }
+
+    public:
+      typedef _Res result_type;
+
+      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }
+
+      // Handle objects
+      _Res 
+      operator()(const volatile _Class& __object, _ArgTypes... __args) const
+      { return (__object.*__pmf)(__args...); }
+
+      // Handle pointers
+      _Res 
+      operator()(const volatile _Class* __object, _ArgTypes... __args) const
+      { return (__object->*__pmf)(__args...); }
+
+      // Handle smart pointers, references and pointers to derived
+      template<typename _Tp>
+        _Res operator()(_Tp& __object, _ArgTypes... __args) const
+        { return _M_call(__object, &__object, __args...); }
+
+    private:
+      _Functor __pmf;
+    };
+
+
+  template<typename _Res, typename _Class>
+    class _Mem_fn<_Res _Class::*>
+    {
+      // This bit of genius is due to Peter Dimov, improved slightly by
+      // Douglas Gregor.
+      template<typename _Tp>
+        _Res&
+        _M_call(_Tp& __object, _Class *) const
+        { return __object.*__pm; }
+
+      template<typename _Tp, typename _Up>
+        _Res&
+        _M_call(_Tp& __object, _Up * const *) const
+        { return (*__object).*__pm; }
+
+      template<typename _Tp, typename _Up>
+        const _Res&
+        _M_call(_Tp& __object, const _Up * const *) const
+        { return (*__object).*__pm; }
+
+      template<typename _Tp>
+        const _Res&
+        _M_call(_Tp& __object, const _Class *) const
+        { return __object.*__pm; }
+
+      template<typename _Tp>
+        const _Res&
+        _M_call(_Tp& __ptr, const volatile void*) const
+        { return (*__ptr).*__pm; }
+
+      template<typename _Tp> static _Tp& __get_ref();
+
+      template<typename _Tp>
+        static __sfinae_types::__one __check_const(_Tp&, _Class*);
+      template<typename _Tp, typename _Up>
+        static __sfinae_types::__one __check_const(_Tp&, _Up * const *);
+      template<typename _Tp, typename _Up>
+        static __sfinae_types::__two __check_const(_Tp&, const _Up * const *);
+      template<typename _Tp>
+        static __sfinae_types::__two __check_const(_Tp&, const _Class*);
+      template<typename _Tp>
+        static __sfinae_types::__two __check_const(_Tp&, const volatile void*);
+
+    public:
+      template<typename _Tp>
+        struct _Result_type
+	: _Mem_fn_const_or_non<_Res,
+	  (sizeof(__sfinae_types::__two)
+	   == sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))>
+        { };
+
+      template<typename _Signature>
+        struct result;
+
+      template<typename _CVMem, typename _Tp>
+        struct result<_CVMem(_Tp)>
+	: public _Result_type<_Tp> { };
+
+      template<typename _CVMem, typename _Tp>
+        struct result<_CVMem(_Tp&)>
+	: public _Result_type<_Tp> { };
+
+      explicit
+      _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { }
+
+      // Handle objects
+      _Res&
+      operator()(_Class& __object) const
+      { return __object.*__pm; }
+
+      const _Res&
+      operator()(const _Class& __object) const
+      { return __object.*__pm; }
+
+      // Handle pointers
+      _Res&
+      operator()(_Class* __object) const
+      { return __object->*__pm; }
+
+      const _Res&
+      operator()(const _Class* __object) const
+      { return __object->*__pm; }
+
+      // Handle smart pointers and derived
+      template<typename _Tp>
+        typename _Result_type<_Tp>::type
+        operator()(_Tp& __unknown) const
+        { return _M_call(__unknown, &__unknown); }
+
+    private:
+      _Res _Class::*__pm;
+    };
+
+  /**
+   *  @brief Returns a function object that forwards to the member
+   *  pointer @a pm.
+   */
+  template<typename _Tp, typename _Class>
+    inline _Mem_fn<_Tp _Class::*>
+    mem_fn(_Tp _Class::* __pm)
+    {
+      return _Mem_fn<_Tp _Class::*>(__pm);
+    }
+
+  /**
+   *  @brief Determines if the given type _Tp is a function object
+   *  should be treated as a subexpression when evaluating calls to
+   *  function objects returned by bind(). [TR1 3.6.1]
+   */
+  template<typename _Tp>
+    struct is_bind_expression
+    { static const bool value = false; };
+
+  template<typename _Tp>
+    const bool is_bind_expression<_Tp>::value;
+
+  /**
+   *  @brief Determines if the given type _Tp is a placeholder in a
+   *  bind() expression and, if so, which placeholder it is. [TR1 3.6.2]
+   */
+  template<typename _Tp>
+    struct is_placeholder
+    { static const int value = 0; };
+
+  template<typename _Tp>
+    const int is_placeholder<_Tp>::value;
+
+  /// The type of placeholder objects defined by libstdc++.
+  template<int _Num> struct _Placeholder { };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+
+  /** @namespace std::placeholders
+   *  @brief ISO C++ 0x entities sub namespace for functional.
+   *
+   *  Define a large number of placeholders. There is no way to
+   *  simplify this with variadic templates, because we're introducing
+   *  unique names for each.
+   */
+  namespace placeholders 
+  { 
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+    namespace 
+    {
+      _Placeholder<1> _1;
+      _Placeholder<2> _2;
+      _Placeholder<3> _3;
+      _Placeholder<4> _4;
+      _Placeholder<5> _5;
+      _Placeholder<6> _6;
+      _Placeholder<7> _7;
+      _Placeholder<8> _8;
+      _Placeholder<9> _9;
+      _Placeholder<10> _10;
+      _Placeholder<11> _11;
+      _Placeholder<12> _12;
+      _Placeholder<13> _13;
+      _Placeholder<14> _14;
+      _Placeholder<15> _15;
+      _Placeholder<16> _16;
+      _Placeholder<17> _17;
+      _Placeholder<18> _18;
+      _Placeholder<19> _19;
+      _Placeholder<20> _20;
+      _Placeholder<21> _21;
+      _Placeholder<22> _22;
+      _Placeholder<23> _23;
+      _Placeholder<24> _24;
+      _Placeholder<25> _25;
+      _Placeholder<26> _26;
+      _Placeholder<27> _27;
+      _Placeholder<28> _28;
+      _Placeholder<29> _29;
+    } 
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+  /**
+   *  Partial specialization of is_placeholder that provides the placeholder
+   *  number for the placeholder objects defined by libstdc++.
+   */
+  template<int _Num>
+    struct is_placeholder<_Placeholder<_Num> >
+    { static const int value = _Num; };
+
+  template<int _Num>
+    const int is_placeholder<_Placeholder<_Num> >::value;
+
+  /**
+   * Stores a tuple of indices. Used by bind() to extract the elements
+   * in a tuple. 
+   */
+  template<int... _Indexes>
+    struct _Index_tuple { };
+
+  /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
+  template<std::size_t _Num, typename _Tuple = _Index_tuple<> >
+    struct _Build_index_tuple;
+ 
+  template<std::size_t _Num, int... _Indexes> 
+    struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> >
+    : _Build_index_tuple<_Num - 1, 
+                         _Index_tuple<_Indexes..., sizeof...(_Indexes)> >
+    {
+    };
+
+  template<int... _Indexes>
+    struct _Build_index_tuple<0, _Index_tuple<_Indexes...> >
+    {
+      typedef _Index_tuple<_Indexes...> __type;
+    };
+
+  /** 
+   * Used by _Safe_tuple_element to indicate that there is no tuple
+   * element at this position.
+   */
+  struct _No_tuple_element;
+
+  /**
+   * Implementation helper for _Safe_tuple_element. This primary
+   * template handles the case where it is safe to use @c
+   * tuple_element.
+   */
+  template<int __i, typename _Tuple, bool _IsSafe>
+    struct _Safe_tuple_element_impl
+    : tuple_element<__i, _Tuple> { };
+
+  /**
+   * Implementation helper for _Safe_tuple_element. This partial
+   * specialization handles the case where it is not safe to use @c
+   * tuple_element. We just return @c _No_tuple_element.
+   */
+  template<int __i, typename _Tuple>
+    struct _Safe_tuple_element_impl<__i, _Tuple, false>
+    {
+      typedef _No_tuple_element type;
+    };
+
+  /**
+   * Like tuple_element, but returns @c _No_tuple_element when
+   * tuple_element would return an error.
+   */
+ template<int __i, typename _Tuple>
+   struct _Safe_tuple_element
+   : _Safe_tuple_element_impl<__i, _Tuple, 
+                              (__i >= 0 && __i < tuple_size<_Tuple>::value)>
+   {
+   };
+
+  /**
+   *  Maps an argument to bind() into an actual argument to the bound
+   *  function object [TR1 3.6.3/5]. Only the first parameter should
+   *  be specified: the rest are used to determine among the various
+   *  implementations. Note that, although this class is a function
+   *  object, it isn't entirely normal because it takes only two
+   *  parameters regardless of the number of parameters passed to the
+   *  bind expression. The first parameter is the bound argument and
+   *  the second parameter is a tuple containing references to the
+   *  rest of the arguments.
+   */
+  template<typename _Arg,
+           bool _IsBindExp = is_bind_expression<_Arg>::value,
+           bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)>
+    class _Mu;
+
+  /**
+   *  If the argument is reference_wrapper<_Tp>, returns the
+   *  underlying reference. [TR1 3.6.3/5 bullet 1]
+   */
+  template<typename _Tp>
+    class _Mu<reference_wrapper<_Tp>, false, false>
+    {
+    public:
+      typedef _Tp& result_type;
+
+      /* Note: This won't actually work for const volatile
+       * reference_wrappers, because reference_wrapper::get() is const
+       * but not volatile-qualified. This might be a defect in the TR.
+       */
+      template<typename _CVRef, typename _Tuple>
+        result_type
+        operator()(_CVRef& __arg, const _Tuple&) const volatile
+        { return __arg.get(); }
+    };
+
+  /**
+   *  If the argument is a bind expression, we invoke the underlying
+   *  function object with the same cv-qualifiers as we are given and
+   *  pass along all of our arguments (unwrapped). [TR1 3.6.3/5 bullet 2]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, true, false>
+    {
+    public:
+      template<typename _Signature> class result;
+
+      // Determine the result type when we pass the arguments along. This
+      // involves passing along the cv-qualifiers placed on _Mu and
+      // unwrapping the argument bundle.
+      template<typename _CVMu, typename _CVArg, typename... _Args>
+        class result<_CVMu(_CVArg, tuple<_Args...>)>
+	: public result_of<_CVArg(_Args...)> { };
+
+      template<typename _CVArg, typename... _Args>
+        typename result_of<_CVArg(_Args...)>::type
+        operator()(_CVArg& __arg,
+		   const tuple<_Args...>& __tuple) const volatile
+        {
+	  // Construct an index tuple and forward to __call
+	  typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
+	    _Indexes;
+	  return this->__call(__arg, __tuple, _Indexes());
+	}
+
+    private:
+      // Invokes the underlying function object __arg by unpacking all
+      // of the arguments in the tuple. 
+      template<typename _CVArg, typename... _Args, int... _Indexes>
+        typename result_of<_CVArg(_Args...)>::type
+        __call(_CVArg& __arg, const tuple<_Args...>& __tuple,
+	       const _Index_tuple<_Indexes...>&) const volatile
+        {
+	  return __arg(tr1::get<_Indexes>(__tuple)...);
+	}
+    };
+
+  /**
+   *  If the argument is a placeholder for the Nth argument, returns
+   *  a reference to the Nth argument to the bind function object.
+   *  [TR1 3.6.3/5 bullet 3]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, false, true>
+    {
+    public:
+      template<typename _Signature> class result;
+
+      template<typename _CVMu, typename _CVArg, typename _Tuple>
+        class result<_CVMu(_CVArg, _Tuple)>
+        {
+	  // Add a reference, if it hasn't already been done for us.
+	  // This allows us to be a little bit sloppy in constructing
+	  // the tuple that we pass to result_of<...>.
+	  typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value
+						- 1), _Tuple>::type
+	    __base_type;
+
+	public:
+	  typedef typename add_reference<__base_type>::type type;
+	};
+
+      template<typename _Tuple>
+        typename result<_Mu(_Arg, _Tuple)>::type
+        operator()(const volatile _Arg&, const _Tuple& __tuple) const volatile
+        {
+	  return ::std::tr1::get<(is_placeholder<_Arg>::value - 1)>(__tuple);
+	}
+    };
+
+  /**
+   *  If the argument is just a value, returns a reference to that
+   *  value. The cv-qualifiers on the reference are the same as the
+   *  cv-qualifiers on the _Mu object. [TR1 3.6.3/5 bullet 4]
+   */
+  template<typename _Arg>
+    class _Mu<_Arg, false, false>
+    {
+    public:
+      template<typename _Signature> struct result;
+
+      template<typename _CVMu, typename _CVArg, typename _Tuple>
+        struct result<_CVMu(_CVArg, _Tuple)>
+        {
+	  typedef typename add_reference<_CVArg>::type type;
+	};
+
+      // Pick up the cv-qualifiers of the argument
+      template<typename _CVArg, typename _Tuple>
+        _CVArg&
+        operator()(_CVArg& __arg, const _Tuple&) const volatile
+        { return __arg; }
+    };
+
+  /**
+   *  Maps member pointers into instances of _Mem_fn but leaves all
+   *  other function objects untouched. Used by tr1::bind(). The
+   *  primary template handles the non--member-pointer case.
+   */
+  template<typename _Tp>
+    struct _Maybe_wrap_member_pointer
+    {
+      typedef _Tp type;
+      
+      static const _Tp&
+      __do_wrap(const _Tp& __x)
+      { return __x; }
+    };
+
+  /**
+   *  Maps member pointers into instances of _Mem_fn but leaves all
+   *  other function objects untouched. Used by tr1::bind(). This
+   *  partial specialization handles the member pointer case.
+   */
+  template<typename _Tp, typename _Class>
+    struct _Maybe_wrap_member_pointer<_Tp _Class::*>
+    {
+      typedef _Mem_fn<_Tp _Class::*> type;
+      
+      static type
+      __do_wrap(_Tp _Class::* __pm)
+      { return type(__pm); }
+    };
+
+  /// Type of the function object returned from bind().
+  template<typename _Signature>
+    struct _Bind;
+
+   template<typename _Functor, typename... _Bound_args>
+    class _Bind<_Functor(_Bound_args...)>
+    : public _Weak_result_type<_Functor>
+    {
+      typedef _Bind __self_type;
+      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type 
+        _Bound_indexes;
+
+      _Functor _M_f;
+      tuple<_Bound_args...> _M_bound_args;
+
+      // Call unqualified
+      template<typename... _Args, int... _Indexes>
+        typename result_of<
+                   _Functor(typename result_of<_Mu<_Bound_args> 
+                            (_Bound_args, tuple<_Args...>)>::type...)
+                 >::type
+        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>)
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as const
+      template<typename... _Args, int... _Indexes>
+        typename result_of<
+                   const _Functor(typename result_of<_Mu<_Bound_args> 
+                                    (const _Bound_args, tuple<_Args...>)
+                                  >::type...)>::type
+        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as volatile
+      template<typename... _Args, int... _Indexes>
+        typename result_of<
+                   volatile _Functor(typename result_of<_Mu<_Bound_args> 
+                                    (volatile _Bound_args, tuple<_Args...>)
+                                  >::type...)>::type
+        __call(const tuple<_Args...>& __args, 
+               _Index_tuple<_Indexes...>) volatile
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as const volatile
+      template<typename... _Args, int... _Indexes>
+        typename result_of<
+                   const volatile _Functor(typename result_of<_Mu<_Bound_args> 
+                                    (const volatile _Bound_args, 
+                                     tuple<_Args...>)
+                                  >::type...)>::type
+        __call(const tuple<_Args...>& __args, 
+               _Index_tuple<_Indexes...>) const volatile
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+     public:
+      explicit _Bind(_Functor __f, _Bound_args... __bound_args)
+        : _M_f(__f), _M_bound_args(__bound_args...) { }
+
+      // Call unqualified
+      template<typename... _Args>
+        typename result_of<
+                   _Functor(typename result_of<_Mu<_Bound_args> 
+                            (_Bound_args, tuple<_Args...>)>::type...)
+                 >::type
+        operator()(_Args&... __args)
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+      // Call as const
+      template<typename... _Args>
+        typename result_of<
+                   const _Functor(typename result_of<_Mu<_Bound_args> 
+                            (const _Bound_args, tuple<_Args...>)>::type...)
+                 >::type
+        operator()(_Args&... __args) const
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+
+      // Call as volatile
+      template<typename... _Args>
+        typename result_of<
+                   volatile _Functor(typename result_of<_Mu<_Bound_args> 
+                            (volatile _Bound_args, tuple<_Args...>)>::type...)
+                 >::type
+        operator()(_Args&... __args) volatile
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+
+      // Call as const volatile
+      template<typename... _Args>
+        typename result_of<
+                   const volatile _Functor(typename result_of<_Mu<_Bound_args> 
+                            (const volatile _Bound_args, 
+                             tuple<_Args...>)>::type...)
+                 >::type
+        operator()(_Args&... __args) const volatile
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+    };
+
+  /// Type of the function object returned from bind<R>().
+  template<typename _Result, typename _Signature>
+    struct _Bind_result;
+
+  template<typename _Result, typename _Functor, typename... _Bound_args>
+    class _Bind_result<_Result, _Functor(_Bound_args...)>
+    {
+      typedef _Bind_result __self_type;
+      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type 
+        _Bound_indexes;
+
+      _Functor _M_f;
+      tuple<_Bound_args...> _M_bound_args;
+
+      // Call unqualified
+      template<typename... _Args, int... _Indexes>
+        _Result
+        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>)
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as const
+      template<typename... _Args, int... _Indexes>
+        _Result
+        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as volatile
+      template<typename... _Args, int... _Indexes>
+        _Result
+        __call(const tuple<_Args...>& __args, 
+               _Index_tuple<_Indexes...>) volatile
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+      // Call as const volatile
+      template<typename... _Args, int... _Indexes>
+        _Result
+        __call(const tuple<_Args...>& __args, 
+               _Index_tuple<_Indexes...>) const volatile
+        {
+          return _M_f(_Mu<_Bound_args>()
+                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
+        }
+
+    public:
+      typedef _Result result_type;
+
+      explicit
+      _Bind_result(_Functor __f, _Bound_args... __bound_args)
+      : _M_f(__f), _M_bound_args(__bound_args...) { }
+
+      // Call unqualified
+      template<typename... _Args>
+        result_type
+        operator()(_Args&... __args)
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+      // Call as const
+      template<typename... _Args>
+        result_type
+        operator()(_Args&... __args) const
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+      // Call as volatile
+      template<typename... _Args>
+        result_type
+        operator()(_Args&... __args) volatile
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+
+      // Call as const volatile
+      template<typename... _Args>
+        result_type
+        operator()(_Args&... __args) const volatile
+        {
+          return this->__call(tr1::tie(__args...), _Bound_indexes());
+        }
+    };
+
+  /// Class template _Bind is always a bind expression.
+  template<typename _Signature>
+    struct is_bind_expression<_Bind<_Signature> >
+    { static const bool value = true; };
+
+  template<typename _Signature>
+    const bool is_bind_expression<_Bind<_Signature> >::value;
+
+  /// Class template _Bind_result is always a bind expression.
+  template<typename _Result, typename _Signature>
+    struct is_bind_expression<_Bind_result<_Result, _Signature> >
+    { static const bool value = true; };
+
+  template<typename _Result, typename _Signature>
+    const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value;
+
+  /// bind
+  template<typename _Functor, typename... _ArgTypes>
+    inline
+    _Bind<typename _Maybe_wrap_member_pointer<_Functor>::type(_ArgTypes...)>
+    bind(_Functor __f, _ArgTypes... __args)
+    {
+      typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type;
+      typedef typename __maybe_type::type __functor_type;
+      typedef _Bind<__functor_type(_ArgTypes...)> __result_type;
+      return __result_type(__maybe_type::__do_wrap(__f), __args...);
+    } 
+
+  template<typename _Result, typename _Functor, typename... _ArgTypes>
+    inline
+    _Bind_result<_Result,
+		 typename _Maybe_wrap_member_pointer<_Functor>::type
+                            (_ArgTypes...)>
+    bind(_Functor __f, _ArgTypes... __args)
+    {
+      typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type;
+      typedef typename __maybe_type::type __functor_type;
+      typedef _Bind_result<_Result, __functor_type(_ArgTypes...)>
+	__result_type;
+      return __result_type(__maybe_type::__do_wrap(__f), __args...);
+    }
+
+  /**
+   *  @brief Exception class thrown when class template function's
+   *  operator() is called with an empty target.
+   *  @ingroup exceptions
+   */
+  class bad_function_call : public std::exception { };
+
+  /**
+   *  The integral constant expression 0 can be converted into a
+   *  pointer to this type. It is used by the function template to
+   *  accept NULL pointers.
+   */
+  struct _M_clear_type;
+
+  /**
+   *  Trait identifying @a location-invariant types, meaning that the
+   *  address of the object (or any of its members) will not escape.
+   *  Also implies a trivial copy constructor and assignment operator.
+   */
+  template<typename _Tp>
+    struct __is_location_invariant
+    : integral_constant<bool,
+                        (is_pointer<_Tp>::value
+                         || is_member_pointer<_Tp>::value)>
+    {
+    };
+
+  class _Undefined_class;
+
+  union _Nocopy_types
+  {
+    void*       _M_object;
+    const void* _M_const_object;
+    void (*_M_function_pointer)();
+    void (_Undefined_class::*_M_member_pointer)();
+  };
+
+  union _Any_data
+  {
+    void*       _M_access()       { return &_M_pod_data[0]; }
+    const void* _M_access() const { return &_M_pod_data[0]; }
+
+    template<typename _Tp>
+      _Tp&
+      _M_access()
+      { return *static_cast<_Tp*>(_M_access()); }
+
+    template<typename _Tp>
+      const _Tp&
+      _M_access() const
+      { return *static_cast<const _Tp*>(_M_access()); }
+
+    _Nocopy_types _M_unused;
+    char _M_pod_data[sizeof(_Nocopy_types)];
+  };
+
+  enum _Manager_operation
+  {
+    __get_type_info,
+    __get_functor_ptr,
+    __clone_functor,
+    __destroy_functor
+  };
+
+  // Simple type wrapper that helps avoid annoying const problems
+  // when casting between void pointers and pointers-to-pointers.
+  template<typename _Tp>
+    struct _Simple_type_wrapper
+    {
+      _Simple_type_wrapper(_Tp __value) : __value(__value) { }
+
+      _Tp __value;
+    };
+
+  template<typename _Tp>
+    struct __is_location_invariant<_Simple_type_wrapper<_Tp> >
+    : __is_location_invariant<_Tp>
+    {
+    };
+
+  // Converts a reference to a function object into a callable
+  // function object.
+  template<typename _Functor>
+    inline _Functor&
+    __callable_functor(_Functor& __f)
+    { return __f; }
+
+  template<typename _Member, typename _Class>
+    inline _Mem_fn<_Member _Class::*>
+    __callable_functor(_Member _Class::* &__p)
+    { return mem_fn(__p); }
+
+  template<typename _Member, typename _Class>
+    inline _Mem_fn<_Member _Class::*>
+    __callable_functor(_Member _Class::* const &__p)
+    { return mem_fn(__p); }
+
+  template<typename _Signature>
+    class function;
+
+  /// Base class of all polymorphic function object wrappers.
+  class _Function_base
+  {
+  public:
+    static const std::size_t _M_max_size = sizeof(_Nocopy_types);
+    static const std::size_t _M_max_align = __alignof__(_Nocopy_types);
+
+    template<typename _Functor>
+      class _Base_manager
+      {
+      protected:
+	static const bool __stored_locally =
+        (__is_location_invariant<_Functor>::value
+         && sizeof(_Functor) <= _M_max_size
+         && __alignof__(_Functor) <= _M_max_align
+         && (_M_max_align % __alignof__(_Functor) == 0));
+	
+	typedef integral_constant<bool, __stored_locally> _Local_storage;
+
+	// Retrieve a pointer to the function object
+	static _Functor*
+	_M_get_pointer(const _Any_data& __source)
+	{
+	  const _Functor* __ptr =
+	    __stored_locally? &__source._M_access<_Functor>()
+	    /* have stored a pointer */ : __source._M_access<_Functor*>();
+	  return const_cast<_Functor*>(__ptr);
+	}
+
+	// Clone a location-invariant function object that fits within
+	// an _Any_data structure.
+	static void
+	_M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
+	{
+	  new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
+	}
+
+	// Clone a function object that is not location-invariant or
+	// that cannot fit into an _Any_data structure.
+	static void
+	_M_clone(_Any_data& __dest, const _Any_data& __source, false_type)
+	{
+	  __dest._M_access<_Functor*>() =
+	    new _Functor(*__source._M_access<_Functor*>());
+	}
+
+	// Destroying a location-invariant object may still require
+	// destruction.
+	static void
+	_M_destroy(_Any_data& __victim, true_type)
+	{
+	  __victim._M_access<_Functor>().~_Functor();
+	}
+	
+	// Destroying an object located on the heap.
+	static void
+	_M_destroy(_Any_data& __victim, false_type)
+	{
+	  delete __victim._M_access<_Functor*>();
+	}
+	
+      public:
+	static bool
+	_M_manager(_Any_data& __dest, const _Any_data& __source,
+		   _Manager_operation __op)
+	{
+	  switch (__op)
+	    {
+#ifdef __GXX_RTTI
+	    case __get_type_info:
+	      __dest._M_access<const type_info*>() = &typeid(_Functor);
+	      break;
+#endif
+	    case __get_functor_ptr:
+	      __dest._M_access<_Functor*>() = _M_get_pointer(__source);
+	      break;
+	      
+	    case __clone_functor:
+	      _M_clone(__dest, __source, _Local_storage());
+	      break;
+
+	    case __destroy_functor:
+	      _M_destroy(__dest, _Local_storage());
+	      break;
+	    }
+	  return false;
+	}
+
+	static void
+	_M_init_functor(_Any_data& __functor, const _Functor& __f)
+	{ _M_init_functor(__functor, __f, _Local_storage()); }
+	
+	template<typename _Signature>
+	  static bool
+	  _M_not_empty_function(const function<_Signature>& __f)
+          { return static_cast<bool>(__f); }
+
+	template<typename _Tp>
+	  static bool
+	  _M_not_empty_function(const _Tp*& __fp)
+	  { return __fp; }
+
+	template<typename _Class, typename _Tp>
+	  static bool
+	  _M_not_empty_function(_Tp _Class::* const& __mp)
+	  { return __mp; }
+
+	template<typename _Tp>
+	  static bool
+	  _M_not_empty_function(const _Tp&)
+	  { return true; }
+
+      private:
+	static void
+	_M_init_functor(_Any_data& __functor, const _Functor& __f, true_type)
+	{ new (__functor._M_access()) _Functor(__f); }
+
+	static void
+	_M_init_functor(_Any_data& __functor, const _Functor& __f, false_type)
+	{ __functor._M_access<_Functor*>() = new _Functor(__f); }
+      };
+
+    template<typename _Functor>
+      class _Ref_manager : public _Base_manager<_Functor*>
+      {
+	typedef _Function_base::_Base_manager<_Functor*> _Base;
+
+    public:
+	static bool
+	_M_manager(_Any_data& __dest, const _Any_data& __source,
+		   _Manager_operation __op)
+	{
+	  switch (__op)
+	    {
+#ifdef __GXX_RTTI
+	    case __get_type_info:
+	      __dest._M_access<const type_info*>() = &typeid(_Functor);
+	      break;
+#endif
+	    case __get_functor_ptr:
+	      __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source);
+	      return is_const<_Functor>::value;
+	      break;
+	      
+	    default:
+	      _Base::_M_manager(__dest, __source, __op);
+	    }
+	  return false;
+	}
+
+	static void
+	_M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f)
+	{
+	  // TBD: Use address_of function instead.
+	  _Base::_M_init_functor(__functor, &__f.get());
+	}
+      };
+
+    _Function_base() : _M_manager(0) { }
+    
+    ~_Function_base()
+    {
+      if (_M_manager)
+	_M_manager(_M_functor, _M_functor, __destroy_functor);
+    }
+
+
+    bool _M_empty() const { return !_M_manager; }
+
+    typedef bool (*_Manager_type)(_Any_data&, const _Any_data&,
+                                  _Manager_operation);
+
+    _Any_data     _M_functor;
+    _Manager_type _M_manager;
+  };
+
+  template<typename _Signature, typename _Functor>
+    class _Function_handler;
+
+  template<typename _Res, typename _Functor, typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), _Functor>
+    : public _Function_base::_Base_manager<_Functor>
+    {
+      typedef _Function_base::_Base_manager<_Functor> _Base;
+
+    public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+        return (*_Base::_M_get_pointer(__functor))(__args...);
+      }
+    };
+
+  template<typename _Functor, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), _Functor>
+    : public _Function_base::_Base_manager<_Functor>
+    {
+      typedef _Function_base::_Base_manager<_Functor> _Base;
+
+     public:
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+        (*_Base::_M_get_pointer(__functor))(__args...);
+      }
+    };
+
+  template<typename _Res, typename _Functor, typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> >
+    : public _Function_base::_Ref_manager<_Functor>
+    {
+      typedef _Function_base::_Ref_manager<_Functor> _Base;
+
+     public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+        return 
+          __callable_functor(**_Base::_M_get_pointer(__functor))(__args...);
+      }
+    };
+
+  template<typename _Functor, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), reference_wrapper<_Functor> >
+    : public _Function_base::_Ref_manager<_Functor>
+    {
+      typedef _Function_base::_Ref_manager<_Functor> _Base;
+
+     public:
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+        __callable_functor(**_Base::_M_get_pointer(__functor))(__args...);
+      }
+    };
+
+  template<typename _Class, typename _Member, typename _Res, 
+           typename... _ArgTypes>
+    class _Function_handler<_Res(_ArgTypes...), _Member _Class::*>
+    : public _Function_handler<void(_ArgTypes...), _Member _Class::*>
+    {
+      typedef _Function_handler<void(_ArgTypes...), _Member _Class::*>
+        _Base;
+
+     public:
+      static _Res
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+        return tr1::
+	  mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...);
+      }
+    };
+
+  template<typename _Class, typename _Member, typename... _ArgTypes>
+    class _Function_handler<void(_ArgTypes...), _Member _Class::*>
+    : public _Function_base::_Base_manager<
+                 _Simple_type_wrapper< _Member _Class::* > >
+    {
+      typedef _Member _Class::* _Functor;
+      typedef _Simple_type_wrapper<_Functor> _Wrapper;
+      typedef _Function_base::_Base_manager<_Wrapper> _Base;
+
+     public:
+      static bool
+      _M_manager(_Any_data& __dest, const _Any_data& __source,
+                 _Manager_operation __op)
+      {
+        switch (__op)
+	  {
+#ifdef __GXX_RTTI
+	  case __get_type_info:
+	    __dest._M_access<const type_info*>() = &typeid(_Functor);
+	    break;
+#endif	    
+	  case __get_functor_ptr:
+	    __dest._M_access<_Functor*>() =
+	      &_Base::_M_get_pointer(__source)->__value;
+	    break;
+	    
+	  default:
+	    _Base::_M_manager(__dest, __source, __op);
+	  }
+        return false;
+      }
+
+      static void
+      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
+      {
+	tr1::mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...);
+      }
+    };
+
+  /// class function
+  template<typename _Res, typename... _ArgTypes>
+    class function<_Res(_ArgTypes...)>
+    : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
+      private _Function_base
+    {
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+      /// This class is used to implement the safe_bool idiom.
+      struct _Hidden_type
+      {
+	_Hidden_type* _M_bool;
+      };
+
+      /// This typedef is used to implement the safe_bool idiom.
+      typedef _Hidden_type* _Hidden_type::* _Safe_bool;
+#endif
+
+      typedef _Res _Signature_type(_ArgTypes...);
+      
+      struct _Useless { };
+      
+    public:
+      typedef _Res result_type;
+      
+      // [3.7.2.1] construct/copy/destroy
+      
+      /**
+       *  @brief Default construct creates an empty function call wrapper.
+       *  @post @c !(bool)*this
+       */
+      function() : _Function_base() { }
+      
+      /**
+       *  @brief Default construct creates an empty function call wrapper.
+       *  @post @c !(bool)*this
+       */
+      function(_M_clear_type*) : _Function_base() { }
+      
+      /**
+       *  @brief %Function copy constructor.
+       *  @param x A %function object with identical call signature.
+       *  @post @c (bool)*this == (bool)x
+       *
+       *  The newly-created %function contains a copy of the target of @a
+       *  x (if it has one).
+       */
+      function(const function& __x);
+
+      /**
+       *  @brief Builds a %function that targets a copy of the incoming
+       *  function object.
+       *  @param f A %function object that is callable with parameters of
+       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
+       *  to @c Res.
+       *
+       *  The newly-created %function object will target a copy of @a
+       *  f. If @a f is @c reference_wrapper<F>, then this function
+       *  object will contain a reference to the function object @c
+       *  f.get(). If @a f is a NULL function pointer or NULL
+       *  pointer-to-member, the newly-created object will be empty.
+       *
+       *  If @a f is a non-NULL function pointer or an object of type @c
+       *  reference_wrapper<F>, this function will not throw.
+       */
+      template<typename _Functor>
+        function(_Functor __f,
+                 typename __gnu_cxx::__enable_if<
+                           !is_integral<_Functor>::value, _Useless>::__type
+                   = _Useless());
+
+      /**
+       *  @brief %Function assignment operator.
+       *  @param x A %function with identical call signature.
+       *  @post @c (bool)*this == (bool)x
+       *  @returns @c *this
+       *
+       *  The target of @a x is copied to @c *this. If @a x has no
+       *  target, then @c *this will be empty.
+       *
+       *  If @a x targets a function pointer or a reference to a function
+       *  object, then this operation will not throw an %exception.
+       */
+      function&
+      operator=(const function& __x)
+      {
+        function(__x).swap(*this);
+        return *this;
+      }
+
+      /**
+       *  @brief %Function assignment to zero.
+       *  @post @c !(bool)*this
+       *  @returns @c *this
+       *
+       *  The target of @c *this is deallocated, leaving it empty.
+       */
+      function&
+      operator=(_M_clear_type*)
+      {
+        if (_M_manager)
+	  {
+	    _M_manager(_M_functor, _M_functor, __destroy_functor);
+	    _M_manager = 0;
+	    _M_invoker = 0;
+	  }
+        return *this;
+      }
+
+      /**
+       *  @brief %Function assignment to a new target.
+       *  @param f A %function object that is callable with parameters of
+       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
+       *  to @c Res.
+       *  @return @c *this
+       *
+       *  This  %function object wrapper will target a copy of @a
+       *  f. If @a f is @c reference_wrapper<F>, then this function
+       *  object will contain a reference to the function object @c
+       *  f.get(). If @a f is a NULL function pointer or NULL
+       *  pointer-to-member, @c this object will be empty.
+       *
+       *  If @a f is a non-NULL function pointer or an object of type @c
+       *  reference_wrapper<F>, this function will not throw.
+       */
+      template<typename _Functor>
+        typename __gnu_cxx::__enable_if<!is_integral<_Functor>::value,
+	                                function&>::__type
+	operator=(_Functor __f)
+	{
+	  function(__f).swap(*this);
+	  return *this;
+	}
+
+      // [3.7.2.2] function modifiers
+      
+      /**
+       *  @brief Swap the targets of two %function objects.
+       *  @param f A %function with identical call signature.
+       *
+       *  Swap the targets of @c this function object and @a f. This
+       *  function will not throw an %exception.
+       */
+      void swap(function& __x)
+      {
+	std::swap(_M_functor, __x._M_functor);
+	std::swap(_M_manager, __x._M_manager);
+	std::swap(_M_invoker, __x._M_invoker);
+      }
+
+      // [3.7.2.3] function capacity
+
+      /**
+       *  @brief Determine if the %function wrapper has a target.
+       *
+       *  @return @c true when this %function object contains a target,
+       *  or @c false when it is empty.
+       *
+       *  This function will not throw an %exception.
+       */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit operator bool() const
+      { return !_M_empty(); }
+#else
+      operator _Safe_bool() const
+      {
+        if (_M_empty())
+	  return 0;
+	else
+	  return &_Hidden_type::_M_bool;
+      }
+#endif
+
+      // [3.7.2.4] function invocation
+
+      /**
+       *  @brief Invokes the function targeted by @c *this.
+       *  @returns the result of the target.
+       *  @throws bad_function_call when @c !(bool)*this
+       *
+       *  The function call operator invokes the target function object
+       *  stored by @c this.
+       */
+      _Res operator()(_ArgTypes... __args) const;
+
+#ifdef __GXX_RTTI
+      // [3.7.2.5] function target access
+      /**
+       *  @brief Determine the type of the target of this function object
+       *  wrapper.
+       *
+       *  @returns the type identifier of the target function object, or
+       *  @c typeid(void) if @c !(bool)*this.
+       *
+       *  This function will not throw an %exception.
+       */
+      const type_info& target_type() const;
+      
+      /**
+       *  @brief Access the stored target function object.
+       *
+       *  @return Returns a pointer to the stored target function object,
+       *  if @c typeid(Functor).equals(target_type()); otherwise, a NULL
+       *  pointer.
+       *
+       * This function will not throw an %exception.
+       */
+      template<typename _Functor>       _Functor* target();
+      
+      /// @overload
+      template<typename _Functor> const _Functor* target() const;
+#endif
+
+    private:
+      // [3.7.2.6] undefined operators
+      template<typename _Function>
+	void operator==(const function<_Function>&) const;
+      template<typename _Function>
+	void operator!=(const function<_Function>&) const;
+
+      typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
+      _Invoker_type _M_invoker;
+  };
+
+  template<typename _Res, typename... _ArgTypes>
+    function<_Res(_ArgTypes...)>::
+    function(const function& __x)
+    : _Function_base()
+    {
+      if (static_cast<bool>(__x))
+	{
+	  _M_invoker = __x._M_invoker;
+	  _M_manager = __x._M_manager;
+	  __x._M_manager(_M_functor, __x._M_functor, __clone_functor);
+	}
+    }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      function<_Res(_ArgTypes...)>::
+      function(_Functor __f,
+	       typename __gnu_cxx::__enable_if<
+                       !is_integral<_Functor>::value, _Useless>::__type)
+      : _Function_base()
+      {
+	typedef _Function_handler<_Signature_type, _Functor> _My_handler;
+
+	if (_My_handler::_M_not_empty_function(__f))
+	  {
+	    _M_invoker = &_My_handler::_M_invoke;
+	    _M_manager = &_My_handler::_M_manager;
+	    _My_handler::_M_init_functor(_M_functor, __f);
+	  }
+      }
+
+  template<typename _Res, typename... _ArgTypes>
+    _Res
+    function<_Res(_ArgTypes...)>::
+    operator()(_ArgTypes... __args) const
+    {
+      if (_M_empty())
+        {
+#if __EXCEPTIONS
+          throw bad_function_call();
+#else
+          __builtin_abort();
+#endif
+        }
+      return _M_invoker(_M_functor, __args...);
+    }
+
+#ifdef __GXX_RTTI
+  template<typename _Res, typename... _ArgTypes>
+    const type_info&
+    function<_Res(_ArgTypes...)>::
+    target_type() const
+    {
+      if (_M_manager)
+        {
+          _Any_data __typeinfo_result;
+          _M_manager(__typeinfo_result, _M_functor, __get_type_info);
+          return *__typeinfo_result._M_access<const type_info*>();
+        }
+      else
+	return typeid(void);
+    }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      _Functor*
+      function<_Res(_ArgTypes...)>::
+      target()
+      {
+	if (typeid(_Functor) == target_type() && _M_manager)
+	  {
+	    _Any_data __ptr;
+	    if (_M_manager(__ptr, _M_functor, __get_functor_ptr)
+		&& !is_const<_Functor>::value)
+	      return 0;
+	    else
+	      return __ptr._M_access<_Functor*>();
+	  }
+	else
+	  return 0;
+      }
+
+  template<typename _Res, typename... _ArgTypes>
+    template<typename _Functor>
+      const _Functor*
+      function<_Res(_ArgTypes...)>::
+      target() const
+      {
+	if (typeid(_Functor) == target_type() && _M_manager)
+	  {
+	    _Any_data __ptr;
+	    _M_manager(__ptr, _M_functor, __get_functor_ptr);
+	    return __ptr._M_access<const _Functor*>();
+	  }
+	else
+	  return 0;
+      }
+#endif
+
+  // [3.7.2.7] null pointer comparisons
+
+  /**
+   *  @brief Compares a polymorphic function object wrapper against 0
+   *  (the NULL pointer).
+   *  @returns @c true if the wrapper has no target, @c false otherwise
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Signature>
+    inline bool
+    operator==(const function<_Signature>& __f, _M_clear_type*)
+    { return !static_cast<bool>(__f); }
+
+  /// @overload
+  template<typename _Signature>
+    inline bool
+    operator==(_M_clear_type*, const function<_Signature>& __f)
+    { return !static_cast<bool>(__f); }
+
+  /**
+   *  @brief Compares a polymorphic function object wrapper against 0
+   *  (the NULL pointer).
+   *  @returns @c false if the wrapper has no target, @c true otherwise
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Signature>
+    inline bool
+    operator!=(const function<_Signature>& __f, _M_clear_type*)
+    { return static_cast<bool>(__f); }
+
+  /// @overload
+  template<typename _Signature>
+    inline bool
+    operator!=(_M_clear_type*, const function<_Signature>& __f)
+    { return static_cast<bool>(__f); }
+
+  // [3.7.2.8] specialized algorithms
+
+  /**
+   *  @brief Swap the targets of two polymorphic function object wrappers.
+   *
+   *  This function will not throw an %exception.
+   */
+  template<typename _Signature>
+    inline void
+    swap(function<_Signature>& __x, function<_Signature>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_FUNCTIONAL
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional_hash.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional_hash.h
new file mode 100644
index 000000000..1742e1527
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/functional_hash.h
@@ -0,0 +1,196 @@
+// TR1 functional_hash.h header -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/functional_hash.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/functional}
+ */
+
+#ifndef _GLIBCXX_TR1_FUNCTIONAL_HASH_H
+#define _GLIBCXX_TR1_FUNCTIONAL_HASH_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /// Class template hash.
+  // Declaration of default hash functor std::tr1::hash.  The types for
+  // which std::tr1::hash<T> is well-defined is in clause 6.3.3. of the PDTR.
+  template<typename _Tp>
+    struct hash : public std::unary_function<_Tp, size_t>
+    {
+      size_t
+      operator()(_Tp __val) const;
+    };
+
+  /// Partial specializations for pointer types.
+  template<typename _Tp>
+    struct hash<_Tp*> : public std::unary_function<_Tp*, size_t>
+    {
+      size_t
+      operator()(_Tp* __p) const
+      { return reinterpret_cast<size_t>(__p); }
+    };
+
+  /// Explicit specializations for integer types.
+#define _TR1_hashtable_define_trivial_hash(_Tp) 	\
+  template<>						\
+    inline size_t					\
+    hash<_Tp>::operator()(_Tp __val) const		\
+    { return static_cast<size_t>(__val); }
+
+  _TR1_hashtable_define_trivial_hash(bool);
+  _TR1_hashtable_define_trivial_hash(char);
+  _TR1_hashtable_define_trivial_hash(signed char);
+  _TR1_hashtable_define_trivial_hash(unsigned char);
+  _TR1_hashtable_define_trivial_hash(wchar_t);
+  _TR1_hashtable_define_trivial_hash(short);
+  _TR1_hashtable_define_trivial_hash(int);
+  _TR1_hashtable_define_trivial_hash(long);
+  _TR1_hashtable_define_trivial_hash(long long);
+  _TR1_hashtable_define_trivial_hash(unsigned short);
+  _TR1_hashtable_define_trivial_hash(unsigned int);
+  _TR1_hashtable_define_trivial_hash(unsigned long);
+  _TR1_hashtable_define_trivial_hash(unsigned long long);
+
+#undef _TR1_hashtable_define_trivial_hash
+
+  // Fowler / Noll / Vo (FNV) Hash (type FNV-1a)
+  // (Used by the next specializations of std::tr1::hash.)
+
+  /// Dummy generic implementation (for sizeof(size_t) != 4, 8).
+  template<size_t>
+    struct _Fnv_hash_base
+    {
+      template<typename _Tp>
+        static size_t
+        hash(const _Tp* __ptr, size_t __clength)
+        {
+	  size_t __result = 0;
+	  const char* __cptr = reinterpret_cast<const char*>(__ptr);
+	  for (; __clength; --__clength)
+	    __result = (__result * 131) + *__cptr++;
+	  return __result;
+	}
+    };
+
+  template<>
+    struct _Fnv_hash_base<4>
+    {
+      template<typename _Tp>
+        static size_t
+        hash(const _Tp* __ptr, size_t __clength)
+        {
+	  size_t __result = static_cast<size_t>(2166136261UL);
+	  const char* __cptr = reinterpret_cast<const char*>(__ptr);
+	  for (; __clength; --__clength)
+	    {
+	      __result ^= static_cast<size_t>(*__cptr++);
+	      __result *= static_cast<size_t>(16777619UL);
+	    }
+	  return __result;
+	}
+    };
+  
+  template<>
+    struct _Fnv_hash_base<8>
+    {
+      template<typename _Tp>
+        static size_t
+        hash(const _Tp* __ptr, size_t __clength)
+        {
+	  size_t __result
+	    = static_cast<size_t>(14695981039346656037ULL);
+	  const char* __cptr = reinterpret_cast<const char*>(__ptr);
+	  for (; __clength; --__clength)
+	    {
+	      __result ^= static_cast<size_t>(*__cptr++);
+	      __result *= static_cast<size_t>(1099511628211ULL);
+	    }
+	  return __result;
+	}
+    };
+
+  struct _Fnv_hash
+  : public _Fnv_hash_base<sizeof(size_t)>
+  {
+    using _Fnv_hash_base<sizeof(size_t)>::hash;
+
+    template<typename _Tp>
+      static size_t
+      hash(const _Tp& __val)
+      { return hash(&__val, sizeof(__val)); }
+  };
+
+  /// Explicit specializations for float.
+  template<>
+    inline size_t
+    hash<float>::operator()(float __val) const
+    {
+      // 0 and -0 both hash to zero.
+      return __val != 0.0f ? std::tr1::_Fnv_hash::hash(__val) : 0;
+    }
+
+  /// Explicit specializations for double.
+  template<>
+    inline size_t
+    hash<double>::operator()(double __val) const
+    {
+      // 0 and -0 both hash to zero.
+      return __val != 0.0 ? std::tr1::_Fnv_hash::hash(__val) : 0;
+    }
+
+  /// Explicit specializations for long double.
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<long double>::operator()(long double __val) const;
+
+  /// Explicit specialization of member operator for non-builtin types.
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<string>::operator()(string) const;
+
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<const string&>::operator()(const string&) const;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<wstring>::operator()(wstring) const;
+
+  template<>
+    _GLIBCXX_PURE size_t
+    hash<const wstring&>::operator()(const wstring&) const;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_FUNCTIONAL_HASH_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/gamma.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/gamma.tcc
new file mode 100644
index 000000000..a7c399cd4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/gamma.tcc
@@ -0,0 +1,473 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/gamma.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 6, pp. 253-266
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 213-216
+//   (4) Gamma, Exploring Euler's Constant, Julian Havil,
+//       Princeton, 2003.
+
+#ifndef _GLIBCXX_TR1_GAMMA_TCC
+#define _GLIBCXX_TR1_GAMMA_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief This returns Bernoulli numbers from a table or by summation
+     *          for larger values.
+     *
+     *   Recursion is unstable.
+     *
+     *   @param __n the order n of the Bernoulli number.
+     *   @return  The Bernoulli number of order n.
+     */
+    template <typename _Tp>
+    _Tp __bernoulli_series(unsigned int __n)
+    {
+
+      static const _Tp __num[28] = {
+        _Tp(1UL),                        -_Tp(1UL) / _Tp(2UL),
+        _Tp(1UL) / _Tp(6UL),             _Tp(0UL),
+        -_Tp(1UL) / _Tp(30UL),           _Tp(0UL),
+        _Tp(1UL) / _Tp(42UL),            _Tp(0UL),
+        -_Tp(1UL) / _Tp(30UL),           _Tp(0UL),
+        _Tp(5UL) / _Tp(66UL),            _Tp(0UL),
+        -_Tp(691UL) / _Tp(2730UL),       _Tp(0UL),
+        _Tp(7UL) / _Tp(6UL),             _Tp(0UL),
+        -_Tp(3617UL) / _Tp(510UL),       _Tp(0UL),
+        _Tp(43867UL) / _Tp(798UL),       _Tp(0UL),
+        -_Tp(174611) / _Tp(330UL),       _Tp(0UL),
+        _Tp(854513UL) / _Tp(138UL),      _Tp(0UL),
+        -_Tp(236364091UL) / _Tp(2730UL), _Tp(0UL),
+        _Tp(8553103UL) / _Tp(6UL),       _Tp(0UL)
+      };
+
+      if (__n == 0)
+        return _Tp(1);
+
+      if (__n == 1)
+        return -_Tp(1) / _Tp(2);
+
+      //  Take care of the rest of the odd ones.
+      if (__n % 2 == 1)
+        return _Tp(0);
+
+      //  Take care of some small evens that are painful for the series.
+      if (__n < 28)
+        return __num[__n];
+
+
+      _Tp __fact = _Tp(1);
+      if ((__n / 2) % 2 == 0)
+        __fact *= _Tp(-1);
+      for (unsigned int __k = 1; __k <= __n; ++__k)
+        __fact *= __k / (_Tp(2) * __numeric_constants<_Tp>::__pi());
+      __fact *= _Tp(2);
+
+      _Tp __sum = _Tp(0);
+      for (unsigned int __i = 1; __i < 1000; ++__i)
+        {
+          _Tp __term = std::pow(_Tp(__i), -_Tp(__n));
+          if (__term < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __sum += __term;
+        }
+
+      return __fact * __sum;
+    }
+
+
+    /**
+     *   @brief This returns Bernoulli number \f$B_n\f$.
+     *
+     *   @param __n the order n of the Bernoulli number.
+     *   @return  The Bernoulli number of order n.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __bernoulli(const int __n)
+    {
+      return __bernoulli_series<_Tp>(__n);
+    }
+
+
+    /**
+     *   @brief Return \f$log(\Gamma(x))\f$ by asymptotic expansion
+     *          with Bernoulli number coefficients.  This is like
+     *          Sterling's approximation.
+     *
+     *   @param __x The argument of the log of the gamma function.
+     *   @return  The logarithm of the gamma function.
+     */
+    template<typename _Tp>
+    _Tp
+    __log_gamma_bernoulli(const _Tp __x)
+    {
+      _Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x
+               + _Tp(0.5L) * std::log(_Tp(2)
+               * __numeric_constants<_Tp>::__pi());
+
+      const _Tp __xx = __x * __x;
+      _Tp __help = _Tp(1) / __x;
+      for ( unsigned int __i = 1; __i < 20; ++__i )
+        {
+          const _Tp __2i = _Tp(2 * __i);
+          __help /= __2i * (__2i - _Tp(1)) * __xx;
+          __lg += __bernoulli<_Tp>(2 * __i) * __help;
+        }
+
+      return __lg;
+    }
+
+
+    /**
+     *   @brief Return \f$log(\Gamma(x))\f$ by the Lanczos method.
+     *          This method dominates all others on the positive axis I think.
+     *
+     *   @param __x The argument of the log of the gamma function.
+     *   @return  The logarithm of the gamma function.
+     */
+    template<typename _Tp>
+    _Tp
+    __log_gamma_lanczos(const _Tp __x)
+    {
+      const _Tp __xm1 = __x - _Tp(1);
+
+      static const _Tp __lanczos_cheb_7[9] = {
+       _Tp( 0.99999999999980993227684700473478L),
+       _Tp( 676.520368121885098567009190444019L),
+       _Tp(-1259.13921672240287047156078755283L),
+       _Tp( 771.3234287776530788486528258894L),
+       _Tp(-176.61502916214059906584551354L),
+       _Tp( 12.507343278686904814458936853L),
+       _Tp(-0.13857109526572011689554707L),
+       _Tp( 9.984369578019570859563e-6L),
+       _Tp( 1.50563273514931155834e-7L)
+      };
+
+      static const _Tp __LOGROOT2PI
+          = _Tp(0.9189385332046727417803297364056176L);
+
+      _Tp __sum = __lanczos_cheb_7[0];
+      for(unsigned int __k = 1; __k < 9; ++__k)
+        __sum += __lanczos_cheb_7[__k] / (__xm1 + __k);
+
+      const _Tp __term1 = (__xm1 + _Tp(0.5L))
+                        * std::log((__xm1 + _Tp(7.5L))
+                       / __numeric_constants<_Tp>::__euler());
+      const _Tp __term2 = __LOGROOT2PI + std::log(__sum);
+      const _Tp __result = __term1 + (__term2 - _Tp(7));
+
+      return __result;
+    }
+
+
+    /**
+     *   @brief Return \f$ log(|\Gamma(x)|) \f$.
+     *          This will return values even for \f$ x < 0 \f$.
+     *          To recover the sign of \f$ \Gamma(x) \f$ for
+     *          any argument use @a __log_gamma_sign.
+     *
+     *   @param __x The argument of the log of the gamma function.
+     *   @return  The logarithm of the gamma function.
+     */
+    template<typename _Tp>
+    _Tp
+    __log_gamma(const _Tp __x)
+    {
+      if (__x > _Tp(0.5L))
+        return __log_gamma_lanczos(__x);
+      else
+        {
+          const _Tp __sin_fact
+                 = std::abs(std::sin(__numeric_constants<_Tp>::__pi() * __x));
+          if (__sin_fact == _Tp(0))
+            std::__throw_domain_error(__N("Argument is nonpositive integer "
+                                          "in __log_gamma"));
+          return __numeric_constants<_Tp>::__lnpi()
+                     - std::log(__sin_fact)
+                     - __log_gamma_lanczos(_Tp(1) - __x);
+        }
+    }
+
+
+    /**
+     *   @brief Return the sign of \f$ \Gamma(x) \f$.
+     *          At nonpositive integers zero is returned.
+     *
+     *   @param __x The argument of the gamma function.
+     *   @return  The sign of the gamma function.
+     */
+    template<typename _Tp>
+    _Tp
+    __log_gamma_sign(const _Tp __x)
+    {
+      if (__x > _Tp(0))
+        return _Tp(1);
+      else
+        {
+          const _Tp __sin_fact
+                  = std::sin(__numeric_constants<_Tp>::__pi() * __x);
+          if (__sin_fact > _Tp(0))
+            return (1);
+          else if (__sin_fact < _Tp(0))
+            return -_Tp(1);
+          else
+            return _Tp(0);
+        }
+    }
+
+
+    /**
+     *   @brief Return the logarithm of the binomial coefficient.
+     *   The binomial coefficient is given by:
+     *   @f[
+     *   \left(  \right) = \frac{n!}{(n-k)! k!}
+     *   @f]
+     *
+     *   @param __n The first argument of the binomial coefficient.
+     *   @param __k The second argument of the binomial coefficient.
+     *   @return  The binomial coefficient.
+     */
+    template<typename _Tp>
+    _Tp
+    __log_bincoef(const unsigned int __n, const unsigned int __k)
+    {
+      //  Max e exponent before overflow.
+      static const _Tp __max_bincoeff
+                      = std::numeric_limits<_Tp>::max_exponent10
+                      * std::log(_Tp(10)) - _Tp(1);
+#if _GLIBCXX_USE_C99_MATH_TR1
+      _Tp __coeff =  std::tr1::lgamma(_Tp(1 + __n))
+                  - std::tr1::lgamma(_Tp(1 + __k))
+                  - std::tr1::lgamma(_Tp(1 + __n - __k));
+#else
+      _Tp __coeff =  __log_gamma(_Tp(1 + __n))
+                  - __log_gamma(_Tp(1 + __k))
+                  - __log_gamma(_Tp(1 + __n - __k));
+#endif
+    }
+
+
+    /**
+     *   @brief Return the binomial coefficient.
+     *   The binomial coefficient is given by:
+     *   @f[
+     *   \left(  \right) = \frac{n!}{(n-k)! k!}
+     *   @f]
+     *
+     *   @param __n The first argument of the binomial coefficient.
+     *   @param __k The second argument of the binomial coefficient.
+     *   @return  The binomial coefficient.
+     */
+    template<typename _Tp>
+    _Tp
+    __bincoef(const unsigned int __n, const unsigned int __k)
+    {
+      //  Max e exponent before overflow.
+      static const _Tp __max_bincoeff
+                      = std::numeric_limits<_Tp>::max_exponent10
+                      * std::log(_Tp(10)) - _Tp(1);
+
+      const _Tp __log_coeff = __log_bincoef<_Tp>(__n, __k);
+      if (__log_coeff > __max_bincoeff)
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        return std::exp(__log_coeff);
+    }
+
+
+    /**
+     *   @brief Return \f$ \Gamma(x) \f$.
+     *
+     *   @param __x The argument of the gamma function.
+     *   @return  The gamma function.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __gamma(const _Tp __x)
+    {
+      return std::exp(__log_gamma(__x));
+    }
+
+
+    /**
+     *   @brief  Return the digamma function by series expansion.
+     *   The digamma or @f$ \psi(x) @f$ function is defined by
+     *   @f[
+     *     \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)}
+     *   @f]
+     *
+     *   The series is given by:
+     *   @f[
+     *     \psi(x) = -\gamma_E - \frac{1}{x}
+     *              \sum_{k=1}^{\infty} \frac{x}{k(x + k)}
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __psi_series(const _Tp __x)
+    {
+      _Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x;
+      const unsigned int __max_iter = 100000;
+      for (unsigned int __k = 1; __k < __max_iter; ++__k)
+        {
+          const _Tp __term = __x / (__k * (__k + __x));
+          __sum += __term;
+          if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon())
+            break;
+        }
+      return __sum;
+    }
+
+
+    /**
+     *   @brief  Return the digamma function for large argument.
+     *   The digamma or @f$ \psi(x) @f$ function is defined by
+     *   @f[
+     *     \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)}
+     *   @f]
+     *
+     *   The asymptotic series is given by:
+     *   @f[
+     *     \psi(x) = \ln(x) - \frac{1}{2x}
+     *             - \sum_{n=1}^{\infty} \frac{B_{2n}}{2 n x^{2n}}
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __psi_asymp(const _Tp __x)
+    {
+      _Tp __sum = std::log(__x) - _Tp(0.5L) / __x;
+      const _Tp __xx = __x * __x;
+      _Tp __xp = __xx;
+      const unsigned int __max_iter = 100;
+      for (unsigned int __k = 1; __k < __max_iter; ++__k)
+        {
+          const _Tp __term = __bernoulli<_Tp>(2 * __k) / (2 * __k * __xp);
+          __sum -= __term;
+          if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __xp *= __xx;
+        }
+      return __sum;
+    }
+
+
+    /**
+     *   @brief  Return the digamma function.
+     *   The digamma or @f$ \psi(x) @f$ function is defined by
+     *   @f[
+     *     \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)}
+     *   @f]
+     *   For negative argument the reflection formula is used:
+     *   @f[
+     *     \psi(x) = \psi(1-x) - \pi \cot(\pi x)
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __psi(const _Tp __x)
+    {
+      const int __n = static_cast<int>(__x + 0.5L);
+      const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon();
+      if (__n <= 0 && std::abs(__x - _Tp(__n)) < __eps)
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x < _Tp(0))
+        {
+          const _Tp __pi = __numeric_constants<_Tp>::__pi();
+          return __psi(_Tp(1) - __x)
+               - __pi * std::cos(__pi * __x) / std::sin(__pi * __x);
+        }
+      else if (__x > _Tp(100))
+        return __psi_asymp(__x);
+      else
+        return __psi_series(__x);
+    }
+
+
+    /**
+     *   @brief  Return the polygamma function @f$ \psi^{(n)}(x) @f$.
+     * 
+     *   The polygamma function is related to the Hurwitz zeta function:
+     *   @f[
+     *     \psi^{(n)}(x) = (-1)^{n+1} m! \zeta(m+1,x)
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __psi(const unsigned int __n, const _Tp __x)
+    {
+      if (__x <= _Tp(0))
+        std::__throw_domain_error(__N("Argument out of range "
+                                      "in __psi"));
+      else if (__n == 0)
+        return __psi(__x);
+      else
+        {
+          const _Tp __hzeta = __hurwitz_zeta(_Tp(__n + 1), __x);
+#if _GLIBCXX_USE_C99_MATH_TR1
+          const _Tp __ln_nfact = std::tr1::lgamma(_Tp(__n + 1));
+#else
+          const _Tp __ln_nfact = __log_gamma(_Tp(__n + 1));
+#endif
+          _Tp __result = std::exp(__ln_nfact) * __hzeta;
+          if (__n % 2 == 1)
+            __result = -__result;
+          return __result;
+        }
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_GAMMA_TCC
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable.h
new file mode 100644
index 000000000..5d1e02c25
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable.h
@@ -0,0 +1,1181 @@
+// TR1 hashtable.h header -*- C++ -*-
+
+// Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/hashtable.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly.
+ *  @headername{tr1/unordered_set, tr1/unordered_map}
+ */
+
+#ifndef _GLIBCXX_TR1_HASHTABLE_H
+#define _GLIBCXX_TR1_HASHTABLE_H 1
+
+#pragma GCC system_header
+
+#include <tr1/hashtable_policy.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Class template _Hashtable, class definition.
+
+  // Meaning of class template _Hashtable's template parameters
+
+  // _Key and _Value: arbitrary CopyConstructible types.
+
+  // _Allocator: an allocator type ([lib.allocator.requirements]) whose
+  // value type is Value.  As a conforming extension, we allow for
+  // value type != Value.
+
+  // _ExtractKey: function object that takes a object of type Value
+  // and returns a value of type _Key.
+
+  // _Equal: function object that takes two objects of type k and returns
+  // a bool-like value that is true if the two objects are considered equal.
+
+  // _H1: the hash function.  A unary function object with argument type
+  // Key and result type size_t.  Return values should be distributed
+  // over the entire range [0, numeric_limits<size_t>:::max()].
+
+  // _H2: the range-hashing function (in the terminology of Tavori and
+  // Dreizin).  A binary function object whose argument types and result
+  // type are all size_t.  Given arguments r and N, the return value is
+  // in the range [0, N).
+
+  // _Hash: the ranged hash function (Tavori and Dreizin). A binary function
+  // whose argument types are _Key and size_t and whose result type is
+  // size_t.  Given arguments k and N, the return value is in the range
+  // [0, N).  Default: hash(k, N) = h2(h1(k), N).  If _Hash is anything other
+  // than the default, _H1 and _H2 are ignored.
+
+  // _RehashPolicy: Policy class with three members, all of which govern
+  // the bucket count. _M_next_bkt(n) returns a bucket count no smaller
+  // than n.  _M_bkt_for_elements(n) returns a bucket count appropriate
+  // for an element count of n.  _M_need_rehash(n_bkt, n_elt, n_ins)
+  // determines whether, if the current bucket count is n_bkt and the
+  // current element count is n_elt, we need to increase the bucket
+  // count.  If so, returns make_pair(true, n), where n is the new
+  // bucket count.  If not, returns make_pair(false, <anything>).
+
+  // ??? Right now it is hard-wired that the number of buckets never
+  // shrinks.  Should we allow _RehashPolicy to change that?
+
+  // __cache_hash_code: bool.  true if we store the value of the hash
+  // function along with the value.  This is a time-space tradeoff.
+  // Storing it may improve lookup speed by reducing the number of times
+  // we need to call the Equal function.
+
+  // __constant_iterators: bool.  true if iterator and const_iterator are
+  // both constant iterator types.  This is true for unordered_set and
+  // unordered_multiset, false for unordered_map and unordered_multimap.
+
+  // __unique_keys: bool.  true if the return value of _Hashtable::count(k)
+  // is always at most one, false if it may be an arbitrary number.  This
+  // true for unordered_set and unordered_map, false for unordered_multiset
+  // and unordered_multimap.
+
+  template<typename _Key, typename _Value, typename _Allocator,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash,
+	   typename _RehashPolicy,
+	   bool __cache_hash_code,
+	   bool __constant_iterators,
+	   bool __unique_keys>
+    class _Hashtable
+    : public __detail::_Rehash_base<_RehashPolicy,
+				    _Hashtable<_Key, _Value, _Allocator,
+					       _ExtractKey,
+					       _Equal, _H1, _H2, _Hash,
+					       _RehashPolicy,
+					       __cache_hash_code,
+					       __constant_iterators,
+					       __unique_keys> >,
+      public __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				       _H1, _H2, _Hash, __cache_hash_code>,
+      public __detail::_Map_base<_Key, _Value, _ExtractKey, __unique_keys,
+				 _Hashtable<_Key, _Value, _Allocator,
+					    _ExtractKey,
+					    _Equal, _H1, _H2, _Hash,
+					    _RehashPolicy,
+					    __cache_hash_code,
+					    __constant_iterators,
+					    __unique_keys> >
+    {
+    public:
+      typedef _Allocator                                  allocator_type;
+      typedef _Value                                      value_type;
+      typedef _Key                                        key_type;
+      typedef _Equal                                      key_equal;
+      // mapped_type, if present, comes from _Map_base.
+      // hasher, if present, comes from _Hash_code_base.
+      typedef typename _Allocator::difference_type        difference_type;
+      typedef typename _Allocator::size_type              size_type;
+      typedef typename _Allocator::pointer                pointer;
+      typedef typename _Allocator::const_pointer          const_pointer;
+      typedef typename _Allocator::reference              reference;
+      typedef typename _Allocator::const_reference        const_reference;
+
+      typedef __detail::_Node_iterator<value_type, __constant_iterators,
+				       __cache_hash_code>
+							  local_iterator;
+      typedef __detail::_Node_const_iterator<value_type,
+					     __constant_iterators,
+					     __cache_hash_code>
+							  const_local_iterator;
+
+      typedef __detail::_Hashtable_iterator<value_type, __constant_iterators,
+					    __cache_hash_code>
+							  iterator;
+      typedef __detail::_Hashtable_const_iterator<value_type,
+						  __constant_iterators,
+						  __cache_hash_code>
+							  const_iterator;
+
+      template<typename _Key2, typename _Value2, typename _Ex2, bool __unique2,
+	       typename _Hashtable2>
+	friend struct __detail::_Map_base;
+
+    private:
+      typedef __detail::_Hash_node<_Value, __cache_hash_code> _Node;
+      typedef typename _Allocator::template rebind<_Node>::other
+							_Node_allocator_type;
+      typedef typename _Allocator::template rebind<_Node*>::other
+							_Bucket_allocator_type;
+
+      typedef typename _Allocator::template rebind<_Value>::other
+							_Value_allocator_type;
+
+      _Node_allocator_type   _M_node_allocator;
+      _Node**                _M_buckets;
+      size_type              _M_bucket_count;
+      size_type              _M_element_count;
+      _RehashPolicy          _M_rehash_policy;
+
+      _Node*
+      _M_allocate_node(const value_type& __v);
+
+      void
+      _M_deallocate_node(_Node* __n);
+
+      void
+      _M_deallocate_nodes(_Node**, size_type);
+
+      _Node**
+      _M_allocate_buckets(size_type __n);
+
+      void
+      _M_deallocate_buckets(_Node**, size_type __n);
+
+    public:
+      // Constructor, destructor, assignment, swap
+      _Hashtable(size_type __bucket_hint,
+		 const _H1&, const _H2&, const _Hash&,
+		 const _Equal&, const _ExtractKey&,
+		 const allocator_type&);
+
+      template<typename _InputIterator>
+	_Hashtable(_InputIterator __first, _InputIterator __last,
+		   size_type __bucket_hint,
+		   const _H1&, const _H2&, const _Hash&,
+		   const _Equal&, const _ExtractKey&,
+		   const allocator_type&);
+
+      _Hashtable(const _Hashtable&);
+
+      _Hashtable&
+      operator=(const _Hashtable&);
+
+      ~_Hashtable();
+
+      void swap(_Hashtable&);
+
+      // Basic container operations
+      iterator
+      begin()
+      {
+	iterator __i(_M_buckets);
+	if (!__i._M_cur_node)
+	  __i._M_incr_bucket();
+	return __i;
+      }
+
+      const_iterator
+      begin() const
+      {
+	const_iterator __i(_M_buckets);
+	if (!__i._M_cur_node)
+	  __i._M_incr_bucket();
+	return __i;
+      }
+
+      iterator
+      end()
+      { return iterator(_M_buckets + _M_bucket_count); }
+
+      const_iterator
+      end() const
+      { return const_iterator(_M_buckets + _M_bucket_count); }
+
+      size_type
+      size() const
+      { return _M_element_count; }
+
+      bool
+      empty() const
+      { return size() == 0; }
+
+      allocator_type
+      get_allocator() const
+      { return allocator_type(_M_node_allocator); }
+
+      _Value_allocator_type
+      _M_get_Value_allocator() const
+      { return _Value_allocator_type(_M_node_allocator); }
+
+      size_type
+      max_size() const
+      { return _M_node_allocator.max_size(); }
+
+      // Observers
+      key_equal
+      key_eq() const
+      { return this->_M_eq; }
+
+      // hash_function, if present, comes from _Hash_code_base.
+
+      // Bucket operations
+      size_type
+      bucket_count() const
+      { return _M_bucket_count; }
+
+      size_type
+      max_bucket_count() const
+      { return max_size(); }
+
+      size_type
+      bucket_size(size_type __n) const
+      { return std::distance(begin(__n), end(__n)); }
+
+      size_type
+      bucket(const key_type& __k) const
+      {
+	return this->_M_bucket_index(__k, this->_M_hash_code(__k),
+				     bucket_count());
+      }
+
+      local_iterator
+      begin(size_type __n)
+      { return local_iterator(_M_buckets[__n]); }
+
+      local_iterator
+      end(size_type)
+      { return local_iterator(0); }
+
+      const_local_iterator
+      begin(size_type __n) const
+      { return const_local_iterator(_M_buckets[__n]); }
+
+      const_local_iterator
+      end(size_type) const
+      { return const_local_iterator(0); }
+
+      float
+      load_factor() const
+      {
+	return static_cast<float>(size()) / static_cast<float>(bucket_count());
+      }
+
+      // max_load_factor, if present, comes from _Rehash_base.
+
+      // Generalization of max_load_factor.  Extension, not found in TR1.  Only
+      // useful if _RehashPolicy is something other than the default.
+      const _RehashPolicy&
+      __rehash_policy() const
+      { return _M_rehash_policy; }
+
+      void
+      __rehash_policy(const _RehashPolicy&);
+
+      // Lookup.
+      iterator
+      find(const key_type& __k);
+
+      const_iterator
+      find(const key_type& __k) const;
+
+      size_type
+      count(const key_type& __k) const;
+
+      std::pair<iterator, iterator>
+      equal_range(const key_type& __k);
+
+      std::pair<const_iterator, const_iterator>
+      equal_range(const key_type& __k) const;
+
+    private:			// Find, insert and erase helper functions
+      // ??? This dispatching is a workaround for the fact that we don't
+      // have partial specialization of member templates; it would be
+      // better to just specialize insert on __unique_keys.  There may be a
+      // cleaner workaround.
+      typedef typename __gnu_cxx::__conditional_type<__unique_keys,
+		       	    std::pair<iterator, bool>, iterator>::__type
+	_Insert_Return_Type;
+
+      typedef typename __gnu_cxx::__conditional_type<__unique_keys,
+					  std::_Select1st<_Insert_Return_Type>,
+				  	  std::_Identity<_Insert_Return_Type>
+				   >::__type
+	_Insert_Conv_Type;
+
+      _Node*
+      _M_find_node(_Node*, const key_type&,
+		   typename _Hashtable::_Hash_code_type) const;
+
+      iterator
+      _M_insert_bucket(const value_type&, size_type,
+		       typename _Hashtable::_Hash_code_type);
+
+      std::pair<iterator, bool>
+      _M_insert(const value_type&, std::tr1::true_type);
+
+      iterator
+      _M_insert(const value_type&, std::tr1::false_type);
+
+      void
+      _M_erase_node(_Node*, _Node**);
+
+    public:
+      // Insert and erase
+      _Insert_Return_Type
+      insert(const value_type& __v)
+      { return _M_insert(__v, std::tr1::integral_constant<bool,
+			 __unique_keys>()); }
+
+      iterator
+      insert(iterator, const value_type& __v)
+      { return iterator(_Insert_Conv_Type()(this->insert(__v))); }
+
+      const_iterator
+      insert(const_iterator, const value_type& __v)
+      { return const_iterator(_Insert_Conv_Type()(this->insert(__v))); }
+
+      template<typename _InputIterator>
+	void
+	insert(_InputIterator __first, _InputIterator __last);
+
+      iterator
+      erase(iterator);
+
+      const_iterator
+      erase(const_iterator);
+
+      size_type
+      erase(const key_type&);
+
+      iterator
+      erase(iterator, iterator);
+
+      const_iterator
+      erase(const_iterator, const_iterator);
+
+      void
+      clear();
+
+      // Set number of buckets to be appropriate for container of n element.
+      void rehash(size_type __n);
+
+    private:
+      // Unconditionally change size of bucket array to n.
+      void _M_rehash(size_type __n);
+    };
+
+
+  // Definitions of class template _Hashtable's out-of-line member functions.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::_Node*
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_allocate_node(const value_type& __v)
+    {
+      _Node* __n = _M_node_allocator.allocate(1);
+      __try
+	{
+	  _M_get_Value_allocator().construct(&__n->_M_v, __v);
+	  __n->_M_next = 0;
+	  return __n;
+	}
+      __catch(...)
+	{
+	  _M_node_allocator.deallocate(__n, 1);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_node(_Node* __n)
+    {
+      _M_get_Value_allocator().destroy(&__n->_M_v);
+      _M_node_allocator.deallocate(__n, 1);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_nodes(_Node** __array, size_type __n)
+    {
+      for (size_type __i = 0; __i < __n; ++__i)
+	{
+	  _Node* __p = __array[__i];
+	  while (__p)
+	    {
+	      _Node* __tmp = __p;
+	      __p = __p->_M_next;
+	      _M_deallocate_node(__tmp);
+	    }
+	  __array[__i] = 0;
+	}
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::_Node**
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_allocate_buckets(size_type __n)
+    {
+      _Bucket_allocator_type __alloc(_M_node_allocator);
+
+      // We allocate one extra bucket to hold a sentinel, an arbitrary
+      // non-null pointer.  Iterator increment relies on this.
+      _Node** __p = __alloc.allocate(__n + 1);
+      std::fill(__p, __p + __n, (_Node*) 0);
+      __p[__n] = reinterpret_cast<_Node*>(0x1000);
+      return __p;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_deallocate_buckets(_Node** __p, size_type __n)
+    {
+      _Bucket_allocator_type __alloc(_M_node_allocator);
+      __alloc.deallocate(__p, __n + 1);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _Hashtable(size_type __bucket_hint,
+	       const _H1& __h1, const _H2& __h2, const _Hash& __h,
+	       const _Equal& __eq, const _ExtractKey& __exk,
+	       const allocator_type& __a)
+    : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(),
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				_H1, _H2, _Hash, __chc>(__exk, __eq,
+							__h1, __h2, __h),
+      __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(),
+      _M_node_allocator(__a),
+      _M_bucket_count(0),
+      _M_element_count(0),
+      _M_rehash_policy()
+    {
+      _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint);
+      _M_buckets = _M_allocate_buckets(_M_bucket_count);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _InputIterator>
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      _Hashtable(_InputIterator __f, _InputIterator __l,
+		 size_type __bucket_hint,
+		 const _H1& __h1, const _H2& __h2, const _Hash& __h,
+		 const _Equal& __eq, const _ExtractKey& __exk,
+		 const allocator_type& __a)
+      : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(),
+	__detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				  _H1, _H2, _Hash, __chc>(__exk, __eq,
+							  __h1, __h2, __h),
+	__detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(),
+	_M_node_allocator(__a),
+	_M_bucket_count(0),
+	_M_element_count(0),
+	_M_rehash_policy()
+      {
+	_M_bucket_count = std::max(_M_rehash_policy._M_next_bkt(__bucket_hint),
+				   _M_rehash_policy.
+				   _M_bkt_for_elements(__detail::
+						       __distance_fw(__f,
+								     __l)));
+	_M_buckets = _M_allocate_buckets(_M_bucket_count);
+	__try
+	  {
+	    for (; __f != __l; ++__f)
+	      this->insert(*__f);
+	  }
+	__catch(...)
+	  {
+	    clear();
+	    _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	    __throw_exception_again;
+	  }
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _Hashtable(const _Hashtable& __ht)
+    : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(__ht),
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+				_H1, _H2, _Hash, __chc>(__ht),
+      __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(__ht),
+      _M_node_allocator(__ht._M_node_allocator),
+      _M_bucket_count(__ht._M_bucket_count),
+      _M_element_count(__ht._M_element_count),
+      _M_rehash_policy(__ht._M_rehash_policy)
+    {
+      _M_buckets = _M_allocate_buckets(_M_bucket_count);
+      __try
+	{
+	  for (size_type __i = 0; __i < __ht._M_bucket_count; ++__i)
+	    {
+	      _Node* __n = __ht._M_buckets[__i];
+	      _Node** __tail = _M_buckets + __i;
+	      while (__n)
+		{
+		  *__tail = _M_allocate_node(__n->_M_v);
+		  this->_M_copy_code(*__tail, __n);
+		  __tail = &((*__tail)->_M_next);
+		  __n = __n->_M_next;
+		}
+	    }
+	}
+      __catch(...)
+	{
+	  clear();
+	  _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	  __throw_exception_again;
+	}
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>&
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    operator=(const _Hashtable& __ht)
+    {
+      _Hashtable __tmp(__ht);
+      this->swap(__tmp);
+      return *this;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    ~_Hashtable()
+    {
+      clear();
+      _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    swap(_Hashtable& __x)
+    {
+      // The only base class with member variables is hash_code_base.  We
+      // define _Hash_code_base::_M_swap because different specializations
+      // have different members.
+      __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal,
+	_H1, _H2, _Hash, __chc>::_M_swap(__x);
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 431. Swapping containers with unequal allocators.
+      std::__alloc_swap<_Node_allocator_type>::_S_do_it(_M_node_allocator,
+							__x._M_node_allocator);
+
+      std::swap(_M_rehash_policy, __x._M_rehash_policy);
+      std::swap(_M_buckets, __x._M_buckets);
+      std::swap(_M_bucket_count, __x._M_bucket_count);
+      std::swap(_M_element_count, __x._M_element_count);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    __rehash_policy(const _RehashPolicy& __pol)
+    {
+      _M_rehash_policy = __pol;
+      size_type __n_bkt = __pol._M_bkt_for_elements(_M_element_count);
+      if (__n_bkt > _M_bucket_count)
+	_M_rehash(__n_bkt);
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    find(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node* __p = _M_find_node(_M_buckets[__n], __k, __code);
+      return __p ? iterator(__p, _M_buckets + __n) : this->end();
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::const_iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    find(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node* __p = _M_find_node(_M_buckets[__n], __k, __code);
+      return __p ? const_iterator(__p, _M_buckets + __n) : this->end();
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::size_type
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    count(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      std::size_t __result = 0;
+      for (_Node* __p = _M_buckets[__n]; __p; __p = __p->_M_next)
+	if (this->_M_compare(__k, __code, __p))
+	  ++__result;
+      return __result;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::iterator,
+	      typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::iterator>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    equal_range(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node** __head = _M_buckets + __n;
+      _Node* __p = _M_find_node(*__head, __k, __code);
+
+      if (__p)
+	{
+	  _Node* __p1 = __p->_M_next;
+	  for (; __p1; __p1 = __p1->_M_next)
+	    if (!this->_M_compare(__k, __code, __p1))
+	      break;
+
+	  iterator __first(__p, __head);
+	  iterator __last(__p1, __head);
+	  if (!__p1)
+	    __last._M_incr_bucket();
+	  return std::make_pair(__first, __last);
+	}
+      else
+	return std::make_pair(this->end(), this->end());
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::const_iterator,
+	      typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::const_iterator>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    equal_range(const key_type& __k) const
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      _Node** __head = _M_buckets + __n;
+      _Node* __p = _M_find_node(*__head, __k, __code);
+
+      if (__p)
+	{
+	  _Node* __p1 = __p->_M_next;
+	  for (; __p1; __p1 = __p1->_M_next)
+	    if (!this->_M_compare(__k, __code, __p1))
+	      break;
+
+	  const_iterator __first(__p, __head);
+	  const_iterator __last(__p1, __head);
+	  if (!__p1)
+	    __last._M_incr_bucket();
+	  return std::make_pair(__first, __last);
+	}
+      else
+	return std::make_pair(this->end(), this->end());
+    }
+
+  // Find the node whose key compares equal to k, beginning the search
+  // at p (usually the head of a bucket).  Return nil if no node is found.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey,
+			_Equal, _H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::_Node*
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_find_node(_Node* __p, const key_type& __k,
+		typename _Hashtable::_Hash_code_type __code) const
+    {
+      for (; __p; __p = __p->_M_next)
+	if (this->_M_compare(__k, __code, __p))
+	  return __p;
+      return false;
+    }
+
+  // Insert v in bucket n (assumes no element with its key already present).
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_insert_bucket(const value_type& __v, size_type __n,
+		    typename _Hashtable::_Hash_code_type __code)
+    {
+      std::pair<bool, std::size_t> __do_rehash
+	= _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					  _M_element_count, 1);
+
+      // Allocate the new node before doing the rehash so that we don't
+      // do a rehash if the allocation throws.
+      _Node* __new_node = _M_allocate_node(__v);
+
+      __try
+	{
+	  if (__do_rehash.first)
+	    {
+	      const key_type& __k = this->_M_extract(__v);
+	      __n = this->_M_bucket_index(__k, __code, __do_rehash.second);
+	      _M_rehash(__do_rehash.second);
+	    }
+
+	  __new_node->_M_next = _M_buckets[__n];
+	  this->_M_store_code(__new_node, __code);
+	  _M_buckets[__n] = __new_node;
+	  ++_M_element_count;
+	  return iterator(__new_node, _M_buckets + __n);
+	}
+      __catch(...)
+	{
+	  _M_deallocate_node(__new_node);
+	  __throw_exception_again;
+	}
+    }
+
+  // Insert v if no element with its key is already present.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    std::pair<typename _Hashtable<_Key, _Value, _Allocator,
+				  _ExtractKey, _Equal, _H1,
+				  _H2, _Hash, _RehashPolicy,
+				  __chc, __cit, __uk>::iterator, bool>
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+  _M_insert(const value_type& __v, std::tr1::true_type)
+    {
+      const key_type& __k = this->_M_extract(__v);
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+
+      if (_Node* __p = _M_find_node(_M_buckets[__n], __k, __code))
+	return std::make_pair(iterator(__p, _M_buckets + __n), false);
+      return std::make_pair(_M_insert_bucket(__v, __n, __code), true);
+    }
+
+  // Insert v unconditionally.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_insert(const value_type& __v, std::tr1::false_type)
+    {
+      std::pair<bool, std::size_t> __do_rehash
+	= _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					  _M_element_count, 1);
+      if (__do_rehash.first)
+	_M_rehash(__do_rehash.second);
+
+      const key_type& __k = this->_M_extract(__v);
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+
+      // First find the node, avoid leaking new_node if compare throws.
+      _Node* __prev = _M_find_node(_M_buckets[__n], __k, __code);
+      _Node* __new_node = _M_allocate_node(__v);
+
+      if (__prev)
+	{
+	  __new_node->_M_next = __prev->_M_next;
+	  __prev->_M_next = __new_node;
+	}
+      else
+	{
+	  __new_node->_M_next = _M_buckets[__n];
+	  _M_buckets[__n] = __new_node;
+	}
+      this->_M_store_code(__new_node, __code);
+
+      ++_M_element_count;
+      return iterator(__new_node, _M_buckets + __n);
+    }
+
+  // For erase(iterator) and erase(const_iterator).
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_erase_node(_Node* __p, _Node** __b)
+    {
+      _Node* __cur = *__b;
+      if (__cur == __p)
+	*__b = __cur->_M_next;
+      else
+	{
+	  _Node* __next = __cur->_M_next;
+	  while (__next != __p)
+	    {
+	      __cur = __next;
+	      __next = __cur->_M_next;
+	    }
+	  __cur->_M_next = __next->_M_next;
+	}
+
+      _M_deallocate_node(__p);
+      --_M_element_count;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    template<typename _InputIterator>
+      void
+      _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+		 _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+      insert(_InputIterator __first, _InputIterator __last)
+      {
+	size_type __n_elt = __detail::__distance_fw(__first, __last);
+	std::pair<bool, std::size_t> __do_rehash
+	  = _M_rehash_policy._M_need_rehash(_M_bucket_count,
+					    _M_element_count, __n_elt);
+	if (__do_rehash.first)
+	  _M_rehash(__do_rehash.second);
+
+	for (; __first != __last; ++__first)
+	  this->insert(*__first);
+      }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(iterator __it)
+    {
+      iterator __result = __it;
+      ++__result;
+      _M_erase_node(__it._M_cur_node, __it._M_cur_bucket);
+      return __result;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::const_iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const_iterator __it)
+    {
+      const_iterator __result = __it;
+      ++__result;
+      _M_erase_node(__it._M_cur_node, __it._M_cur_bucket);
+      return __result;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::size_type
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const key_type& __k)
+    {
+      typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k);
+      std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count);
+      size_type __result = 0;
+
+      _Node** __slot = _M_buckets + __n;
+      while (*__slot && !this->_M_compare(__k, __code, *__slot))
+	__slot = &((*__slot)->_M_next);
+
+      _Node** __saved_slot = 0;
+      while (*__slot && this->_M_compare(__k, __code, *__slot))
+	{
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 526. Is it undefined if a function in the standard changes
+	  // in parameters?
+	  if (&this->_M_extract((*__slot)->_M_v) != &__k)
+	    {
+	      _Node* __p = *__slot;
+	      *__slot = __p->_M_next;
+	      _M_deallocate_node(__p);
+	      --_M_element_count;
+	      ++__result;
+	    }
+	  else
+	    {
+	      __saved_slot = __slot;
+	      __slot = &((*__slot)->_M_next);
+	    }
+	}
+
+      if (__saved_slot)
+	{
+	  _Node* __p = *__saved_slot;
+	  *__saved_slot = __p->_M_next;
+	  _M_deallocate_node(__p);
+	  --_M_element_count;
+	  ++__result;
+	}
+
+      return __result;
+    }
+
+  // ??? This could be optimized by taking advantage of the bucket
+  // structure, but it's not clear that it's worth doing.  It probably
+  // wouldn't even be an optimization unless the load factor is large.
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(iterator __first, iterator __last)
+    {
+      while (__first != __last)
+	__first = this->erase(__first);
+      return __last;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+			_H1, _H2, _Hash, _RehashPolicy,
+			__chc, __cit, __uk>::const_iterator
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    erase(const_iterator __first, const_iterator __last)
+    {
+      while (__first != __last)
+	__first = this->erase(__first);
+      return __last;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    clear()
+    {
+      _M_deallocate_nodes(_M_buckets, _M_bucket_count);
+      _M_element_count = 0;
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    rehash(size_type __n)
+    {
+      _M_rehash(std::max(_M_rehash_policy._M_next_bkt(__n),
+			 _M_rehash_policy._M_bkt_for_elements(_M_element_count
+							      + 1)));
+    }
+
+  template<typename _Key, typename _Value,
+	   typename _Allocator, typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
+	   bool __chc, bool __cit, bool __uk>
+    void
+    _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
+	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
+    _M_rehash(size_type __n)
+    {
+      _Node** __new_array = _M_allocate_buckets(__n);
+      __try
+	{
+	  for (size_type __i = 0; __i < _M_bucket_count; ++__i)
+	    while (_Node* __p = _M_buckets[__i])
+	      {
+		std::size_t __new_index = this->_M_bucket_index(__p, __n);
+		_M_buckets[__i] = __p->_M_next;
+		__p->_M_next = __new_array[__new_index];
+		__new_array[__new_index] = __p;
+	      }
+	  _M_deallocate_buckets(_M_buckets, _M_bucket_count);
+	  _M_bucket_count = __n;
+	  _M_buckets = __new_array;
+	}
+      __catch(...)
+	{
+	  // A failure here means that a hash function threw an exception.
+	  // We can't restore the previous state without calling the hash
+	  // function again, so the only sensible recovery is to delete
+	  // everything.
+	  _M_deallocate_nodes(__new_array, __n);
+	  _M_deallocate_buckets(__new_array, __n);
+	  _M_deallocate_nodes(_M_buckets, _M_bucket_count);
+	  _M_element_count = 0;
+	  __throw_exception_again;
+	}
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace tr1
+} // namespace std
+
+#endif // _GLIBCXX_TR1_HASHTABLE_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable_policy.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable_policy.h
new file mode 100644
index 000000000..82f8fde18
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hashtable_policy.h
@@ -0,0 +1,783 @@
+// Internal policy header for TR1 unordered_set and unordered_map -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/hashtable_policy.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. 
+ *  @headername{tr1/unordered_map, tr1/unordered_set}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{ 
+namespace tr1
+{
+namespace __detail
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Helper function: return distance(first, last) for forward
+  // iterators, or 0 for input iterators.
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last,
+		  std::input_iterator_tag)
+    { return 0; }
+
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last,
+		  std::forward_iterator_tag)
+    { return std::distance(__first, __last); }
+
+  template<class _Iterator>
+    inline typename std::iterator_traits<_Iterator>::difference_type
+    __distance_fw(_Iterator __first, _Iterator __last)
+    {
+      typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag;
+      return __distance_fw(__first, __last, _Tag());
+    }
+
+  // Auxiliary types used for all instantiations of _Hashtable: nodes
+  // and iterators.
+  
+  // Nodes, used to wrap elements stored in the hash table.  A policy
+  // template parameter of class template _Hashtable controls whether
+  // nodes also store a hash code. In some cases (e.g. strings) this
+  // may be a performance win.
+  template<typename _Value, bool __cache_hash_code>
+    struct _Hash_node;
+
+  template<typename _Value>
+    struct _Hash_node<_Value, true>
+    {
+      _Value       _M_v;
+      std::size_t  _M_hash_code;
+      _Hash_node*  _M_next;
+    };
+
+  template<typename _Value>
+    struct _Hash_node<_Value, false>
+    {
+      _Value       _M_v;
+      _Hash_node*  _M_next;
+    };
+
+  // Local iterators, used to iterate within a bucket but not between
+  // buckets.
+  template<typename _Value, bool __cache>
+    struct _Node_iterator_base
+    {
+      _Node_iterator_base(_Hash_node<_Value, __cache>* __p)
+      : _M_cur(__p) { }
+      
+      void
+      _M_incr()
+      { _M_cur = _M_cur->_M_next; }
+
+      _Hash_node<_Value, __cache>*  _M_cur;
+    };
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator==(const _Node_iterator_base<_Value, __cache>& __x,
+	       const _Node_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur == __y._M_cur; }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator!=(const _Node_iterator_base<_Value, __cache>& __x,
+	       const _Node_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur != __y._M_cur; }
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Node_iterator
+    : public _Node_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef typename
+      __gnu_cxx::__conditional_type<__constant_iterators,
+				    const _Value*, _Value*>::__type
+                                                       pointer;
+      typedef typename
+      __gnu_cxx::__conditional_type<__constant_iterators,
+				    const _Value&, _Value&>::__type
+                                                       reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Node_iterator()
+      : _Node_iterator_base<_Value, __cache>(0) { }
+
+      explicit
+      _Node_iterator(_Hash_node<_Value, __cache>* __p)
+      : _Node_iterator_base<_Value, __cache>(__p) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur->_M_v; }
+  
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur->_M_v); }
+
+      _Node_iterator&
+      operator++()
+      { 
+	this->_M_incr();
+	return *this; 
+      }
+  
+      _Node_iterator
+      operator++(int)
+      { 
+	_Node_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Node_const_iterator
+    : public _Node_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef const _Value*                            pointer;
+      typedef const _Value&                            reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Node_const_iterator()
+      : _Node_iterator_base<_Value, __cache>(0) { }
+
+      explicit
+      _Node_const_iterator(_Hash_node<_Value, __cache>* __p)
+      : _Node_iterator_base<_Value, __cache>(__p) { }
+
+      _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators,
+			   __cache>& __x)
+      : _Node_iterator_base<_Value, __cache>(__x._M_cur) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur->_M_v; }
+  
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur->_M_v); }
+
+      _Node_const_iterator&
+      operator++()
+      { 
+	this->_M_incr();
+	return *this; 
+      }
+  
+      _Node_const_iterator
+      operator++(int)
+      { 
+	_Node_const_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __cache>
+    struct _Hashtable_iterator_base
+    {
+      _Hashtable_iterator_base(_Hash_node<_Value, __cache>* __node,
+			       _Hash_node<_Value, __cache>** __bucket)
+      : _M_cur_node(__node), _M_cur_bucket(__bucket) { }
+
+      void
+      _M_incr()
+      {
+	_M_cur_node = _M_cur_node->_M_next;
+	if (!_M_cur_node)
+	  _M_incr_bucket();
+      }
+
+      void
+      _M_incr_bucket();
+
+      _Hash_node<_Value, __cache>*   _M_cur_node;
+      _Hash_node<_Value, __cache>**  _M_cur_bucket;
+    };
+
+  // Global iterators, used for arbitrary iteration within a hash
+  // table.  Larger and more expensive than local iterators.
+  template<typename _Value, bool __cache>
+    void
+    _Hashtable_iterator_base<_Value, __cache>::
+    _M_incr_bucket()
+    {
+      ++_M_cur_bucket;
+
+      // This loop requires the bucket array to have a non-null sentinel.
+      while (!*_M_cur_bucket)
+	++_M_cur_bucket;
+      _M_cur_node = *_M_cur_bucket;
+    }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator==(const _Hashtable_iterator_base<_Value, __cache>& __x,
+	       const _Hashtable_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur_node == __y._M_cur_node; }
+
+  template<typename _Value, bool __cache>
+    inline bool
+    operator!=(const _Hashtable_iterator_base<_Value, __cache>& __x,
+	       const _Hashtable_iterator_base<_Value, __cache>& __y)
+    { return __x._M_cur_node != __y._M_cur_node; }
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Hashtable_iterator
+    : public _Hashtable_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef typename
+      __gnu_cxx::__conditional_type<__constant_iterators,
+				    const _Value*, _Value*>::__type
+                                                       pointer;
+      typedef typename
+      __gnu_cxx::__conditional_type<__constant_iterators,
+				    const _Value&, _Value&>::__type
+                                                       reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Hashtable_iterator()
+      : _Hashtable_iterator_base<_Value, __cache>(0, 0) { }
+
+      _Hashtable_iterator(_Hash_node<_Value, __cache>* __p,
+			  _Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { }
+
+      explicit
+      _Hashtable_iterator(_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur_node->_M_v; }
+  
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur_node->_M_v); }
+
+      _Hashtable_iterator&
+      operator++()
+      { 
+	this->_M_incr();
+	return *this;
+      }
+  
+      _Hashtable_iterator
+      operator++(int)
+      { 
+	_Hashtable_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+  template<typename _Value, bool __constant_iterators, bool __cache>
+    struct _Hashtable_const_iterator
+    : public _Hashtable_iterator_base<_Value, __cache>
+    {
+      typedef _Value                                   value_type;
+      typedef const _Value*                            pointer;
+      typedef const _Value&                            reference;
+      typedef std::ptrdiff_t                           difference_type;
+      typedef std::forward_iterator_tag                iterator_category;
+
+      _Hashtable_const_iterator()
+      : _Hashtable_iterator_base<_Value, __cache>(0, 0) { }
+
+      _Hashtable_const_iterator(_Hash_node<_Value, __cache>* __p,
+				_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { }
+
+      explicit
+      _Hashtable_const_iterator(_Hash_node<_Value, __cache>** __b)
+      : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { }
+
+      _Hashtable_const_iterator(const _Hashtable_iterator<_Value,
+				__constant_iterators, __cache>& __x)
+      : _Hashtable_iterator_base<_Value, __cache>(__x._M_cur_node,
+						  __x._M_cur_bucket) { }
+
+      reference
+      operator*() const
+      { return this->_M_cur_node->_M_v; }
+  
+      pointer
+      operator->() const
+      { return std::__addressof(this->_M_cur_node->_M_v); }
+
+      _Hashtable_const_iterator&
+      operator++()
+      { 
+	this->_M_incr();
+	return *this;
+      }
+  
+      _Hashtable_const_iterator
+      operator++(int)
+      { 
+	_Hashtable_const_iterator __tmp(*this);
+	this->_M_incr();
+	return __tmp;
+      }
+    };
+
+
+  // Many of class template _Hashtable's template parameters are policy
+  // classes.  These are defaults for the policies.
+
+  // Default range hashing function: use division to fold a large number
+  // into the range [0, N).
+  struct _Mod_range_hashing
+  {
+    typedef std::size_t first_argument_type;
+    typedef std::size_t second_argument_type;
+    typedef std::size_t result_type;
+
+    result_type
+    operator()(first_argument_type __num, second_argument_type __den) const
+    { return __num % __den; }
+  };
+
+  // Default ranged hash function H.  In principle it should be a
+  // function object composed from objects of type H1 and H2 such that
+  // h(k, N) = h2(h1(k), N), but that would mean making extra copies of
+  // h1 and h2.  So instead we'll just use a tag to tell class template
+  // hashtable to do that composition.
+  struct _Default_ranged_hash { };
+
+  // Default value for rehash policy.  Bucket size is (usually) the
+  // smallest prime that keeps the load factor small enough.
+  struct _Prime_rehash_policy
+  {
+    _Prime_rehash_policy(float __z = 1.0)
+    : _M_max_load_factor(__z), _M_growth_factor(2.f), _M_next_resize(0) { }
+
+    float
+    max_load_factor() const
+    { return _M_max_load_factor; }      
+
+    // Return a bucket size no smaller than n.
+    std::size_t
+    _M_next_bkt(std::size_t __n) const;
+    
+    // Return a bucket count appropriate for n elements
+    std::size_t
+    _M_bkt_for_elements(std::size_t __n) const;
+    
+    // __n_bkt is current bucket count, __n_elt is current element count,
+    // and __n_ins is number of elements to be inserted.  Do we need to
+    // increase bucket count?  If so, return make_pair(true, n), where n
+    // is the new bucket count.  If not, return make_pair(false, 0).
+    std::pair<bool, std::size_t>
+    _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
+		   std::size_t __n_ins) const;
+
+    enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 };
+
+    float                _M_max_load_factor;
+    float                _M_growth_factor;
+    mutable std::size_t  _M_next_resize;
+  };
+
+  extern const unsigned long __prime_list[];
+
+  // XXX This is a hack.  There's no good reason for any of
+  // _Prime_rehash_policy's member functions to be inline.  
+
+  // Return a prime no smaller than n.
+  inline std::size_t
+  _Prime_rehash_policy::
+  _M_next_bkt(std::size_t __n) const
+  {
+    const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
+						+ _S_n_primes, __n);
+    _M_next_resize = 
+      static_cast<std::size_t>(__builtin_ceil(*__p * _M_max_load_factor));
+    return *__p;
+  }
+
+  // Return the smallest prime p such that alpha p >= n, where alpha
+  // is the load factor.
+  inline std::size_t
+  _Prime_rehash_policy::
+  _M_bkt_for_elements(std::size_t __n) const
+  {
+    const float __min_bkts = __n / _M_max_load_factor;
+    const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
+						+ _S_n_primes, __min_bkts);
+    _M_next_resize =
+      static_cast<std::size_t>(__builtin_ceil(*__p * _M_max_load_factor));
+    return *__p;
+  }
+
+  // Finds the smallest prime p such that alpha p > __n_elt + __n_ins.
+  // If p > __n_bkt, return make_pair(true, p); otherwise return
+  // make_pair(false, 0).  In principle this isn't very different from 
+  // _M_bkt_for_elements.
+
+  // The only tricky part is that we're caching the element count at
+  // which we need to rehash, so we don't have to do a floating-point
+  // multiply for every insertion.
+
+  inline std::pair<bool, std::size_t>
+  _Prime_rehash_policy::
+  _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
+		 std::size_t __n_ins) const
+  {
+    if (__n_elt + __n_ins > _M_next_resize)
+      {
+	float __min_bkts = ((float(__n_ins) + float(__n_elt))
+			    / _M_max_load_factor);
+	if (__min_bkts > __n_bkt)
+	  {
+	    __min_bkts = std::max(__min_bkts, _M_growth_factor * __n_bkt);
+	    const unsigned long* __p =
+	      std::lower_bound(__prime_list, __prime_list + _S_n_primes,
+			       __min_bkts);
+	    _M_next_resize = static_cast<std::size_t>
+	      (__builtin_ceil(*__p * _M_max_load_factor));
+	    return std::make_pair(true, *__p);
+	  }
+	else 
+	  {
+	    _M_next_resize = static_cast<std::size_t>
+	      (__builtin_ceil(__n_bkt * _M_max_load_factor));
+	    return std::make_pair(false, 0);
+	  }
+      }
+    else
+      return std::make_pair(false, 0);
+  }
+
+  // Base classes for std::tr1::_Hashtable.  We define these base
+  // classes because in some cases we want to do different things
+  // depending on the value of a policy class.  In some cases the
+  // policy class affects which member functions and nested typedefs
+  // are defined; we handle that by specializing base class templates.
+  // Several of the base class templates need to access other members
+  // of class template _Hashtable, so we use the "curiously recurring
+  // template pattern" for them.
+
+  // class template _Map_base.  If the hashtable has a value type of the
+  // form pair<T1, T2> and a key extraction policy that returns the
+  // first part of the pair, the hashtable gets a mapped_type typedef.
+  // If it satisfies those criteria and also has unique keys, then it
+  // also gets an operator[].  
+  template<typename _Key, typename _Value, typename _Ex, bool __unique,
+	   typename _Hashtable>
+    struct _Map_base { };
+	  
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, false, _Hashtable>
+    {
+      typedef typename _Pair::second_type mapped_type;
+    };
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>
+    {
+      typedef typename _Pair::second_type mapped_type;
+      
+      mapped_type&
+      operator[](const _Key& __k);
+    };
+
+  template<typename _Key, typename _Pair, typename _Hashtable>
+    typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>,
+		       true, _Hashtable>::mapped_type&
+    _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::
+    operator[](const _Key& __k)
+    {
+      _Hashtable* __h = static_cast<_Hashtable*>(this);
+      typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k);
+      std::size_t __n = __h->_M_bucket_index(__k, __code,
+					     __h->_M_bucket_count);
+
+      typename _Hashtable::_Node* __p =
+	__h->_M_find_node(__h->_M_buckets[__n], __k, __code);
+      if (!__p)
+	return __h->_M_insert_bucket(std::make_pair(__k, mapped_type()),
+				     __n, __code)->second;
+      return (__p->_M_v).second;
+    }
+
+  // class template _Rehash_base.  Give hashtable the max_load_factor
+  // functions iff the rehash policy is _Prime_rehash_policy.
+  template<typename _RehashPolicy, typename _Hashtable>
+    struct _Rehash_base { };
+
+  template<typename _Hashtable>
+    struct _Rehash_base<_Prime_rehash_policy, _Hashtable>
+    {
+      float
+      max_load_factor() const
+      {
+	const _Hashtable* __this = static_cast<const _Hashtable*>(this);
+	return __this->__rehash_policy().max_load_factor();
+      }
+
+      void
+      max_load_factor(float __z)
+      {
+	_Hashtable* __this = static_cast<_Hashtable*>(this);
+	__this->__rehash_policy(_Prime_rehash_policy(__z));
+      }
+    };
+
+  // Class template _Hash_code_base.  Encapsulates two policy issues that
+  // aren't quite orthogonal.
+  //   (1) the difference between using a ranged hash function and using
+  //       the combination of a hash function and a range-hashing function.
+  //       In the former case we don't have such things as hash codes, so
+  //       we have a dummy type as placeholder.
+  //   (2) Whether or not we cache hash codes.  Caching hash codes is
+  //       meaningless if we have a ranged hash function.
+  // We also put the key extraction and equality comparison function 
+  // objects here, for convenience.
+  
+  // Primary template: unused except as a hook for specializations.  
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash,
+	   bool __cache_hash_code>
+    struct _Hash_code_base;
+
+  // Specialization: ranged hash function, no caching hash codes.  H1
+  // and H2 are provided but ignored.  We define a dummy hash code type.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Hash, false>
+    {
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1&, const _H2&, const _Hash& __h)
+      : _M_extract(__ex), _M_eq(__eq), _M_ranged_hash(__h) { }
+
+      typedef void* _Hash_code_type;
+  
+      _Hash_code_type
+      _M_hash_code(const _Key& __key) const
+      { return 0; }
+  
+      std::size_t
+      _M_bucket_index(const _Key& __k, _Hash_code_type,
+		      std::size_t __n) const
+      { return _M_ranged_hash(__k, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, false>* __p,
+		      std::size_t __n) const
+      { return _M_ranged_hash(_M_extract(__p->_M_v), __n); }
+  
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type,
+		 _Hash_node<_Value, false>* __n) const
+      { return _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const
+      { }
+
+      void
+      _M_copy_code(_Hash_node<_Value, false>*,
+		   const _Hash_node<_Value, false>*) const
+      { }
+      
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_ranged_hash, __x._M_ranged_hash);
+      }
+
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _Hash        _M_ranged_hash;
+    };
+
+
+  // No specialization for ranged hash function while caching hash codes.
+  // That combination is meaningless, and trying to do it is an error.
+  
+  
+  // Specialization: ranged hash function, cache hash codes.  This
+  // combination is meaningless, so we provide only a declaration
+  // and no definition.  
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2, typename _Hash>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Hash, true>;
+
+  // Specialization: hash function and range-hashing function, no
+  // caching of hash codes.  H is provided but ignored.  Provides
+  // typedef and accessor required by TR1.  
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Default_ranged_hash, false>
+    {
+      typedef _H1 hasher;
+
+      hasher
+      hash_function() const
+      { return _M_h1; }
+
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1& __h1, const _H2& __h2,
+		      const _Default_ranged_hash&)
+      : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { }
+
+      typedef std::size_t _Hash_code_type;
+
+      _Hash_code_type
+      _M_hash_code(const _Key& __k) const
+      { return _M_h1(__k); }
+      
+      std::size_t
+      _M_bucket_index(const _Key&, _Hash_code_type __c,
+		      std::size_t __n) const
+      { return _M_h2(__c, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, false>* __p,
+		      std::size_t __n) const
+      { return _M_h2(_M_h1(_M_extract(__p->_M_v)), __n); }
+
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type,
+		 _Hash_node<_Value, false>* __n) const
+      { return _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const
+      { }
+
+      void
+      _M_copy_code(_Hash_node<_Value, false>*,
+		   const _Hash_node<_Value, false>*) const
+      { }
+
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_h1, __x._M_h1);
+	std::swap(_M_h2, __x._M_h2);
+      }
+
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _H1          _M_h1;
+      _H2          _M_h2;
+    };
+
+  // Specialization: hash function and range-hashing function, 
+  // caching hash codes.  H is provided but ignored.  Provides
+  // typedef and accessor required by TR1.
+  template<typename _Key, typename _Value,
+	   typename _ExtractKey, typename _Equal,
+	   typename _H1, typename _H2>
+    struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2,
+			   _Default_ranged_hash, true>
+    {
+      typedef _H1 hasher;
+      
+      hasher
+      hash_function() const
+      { return _M_h1; }
+
+    protected:
+      _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq,
+		      const _H1& __h1, const _H2& __h2,
+		      const _Default_ranged_hash&)
+      : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { }
+
+      typedef std::size_t _Hash_code_type;
+  
+      _Hash_code_type
+      _M_hash_code(const _Key& __k) const
+      { return _M_h1(__k); }
+  
+      std::size_t
+      _M_bucket_index(const _Key&, _Hash_code_type __c,
+		      std::size_t __n) const
+      { return _M_h2(__c, __n); }
+
+      std::size_t
+      _M_bucket_index(const _Hash_node<_Value, true>* __p,
+		      std::size_t __n) const
+      { return _M_h2(__p->_M_hash_code, __n); }
+
+      bool
+      _M_compare(const _Key& __k, _Hash_code_type __c,
+		 _Hash_node<_Value, true>* __n) const
+      { return __c == __n->_M_hash_code && _M_eq(__k, _M_extract(__n->_M_v)); }
+
+      void
+      _M_store_code(_Hash_node<_Value, true>* __n, _Hash_code_type __c) const
+      { __n->_M_hash_code = __c; }
+
+      void
+      _M_copy_code(_Hash_node<_Value, true>* __to,
+		   const _Hash_node<_Value, true>* __from) const
+      { __to->_M_hash_code = __from->_M_hash_code; }
+
+      void
+      _M_swap(_Hash_code_base& __x)
+      {
+	std::swap(_M_extract, __x._M_extract);
+	std::swap(_M_eq, __x._M_eq);
+	std::swap(_M_h1, __x._M_h1);
+	std::swap(_M_h2, __x._M_h2);
+      }
+      
+    protected:
+      _ExtractKey  _M_extract;
+      _Equal       _M_eq;
+      _H1          _M_h1;
+      _H2          _M_h2;
+    };
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __detail
+}
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hypergeometric.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hypergeometric.tcc
new file mode 100644
index 000000000..b98b5b29c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/hypergeometric.tcc
@@ -0,0 +1,779 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/hypergeometric.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based:
+//   (1) Handbook of Mathematical Functions,
+//       ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 6, pp. 555-566
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+
+#ifndef _GLIBCXX_TR1_HYPERGEOMETRIC_TCC
+#define _GLIBCXX_TR1_HYPERGEOMETRIC_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief This routine returns the confluent hypergeometric function
+     *          by series expansion.
+     * 
+     *   @f[
+     *     _1F_1(a;c;x) = \frac{\Gamma(c)}{\Gamma(a)}
+     *                      \sum_{n=0}^{\infty}
+     *                      \frac{\Gamma(a+n)}{\Gamma(c+n)}
+     *                      \frac{x^n}{n!}
+     *   @f]
+     * 
+     *   If a and b are integers and a < 0 and either b > 0 or b < a
+     *   then the series is a polynomial with a finite number of
+     *   terms.  If b is an integer and b <= 0 the confluent
+     *   hypergeometric function is undefined.
+     *
+     *   @param  __a  The "numerator" parameter.
+     *   @param  __c  The "denominator" parameter.
+     *   @param  __x  The argument of the confluent hypergeometric function.
+     *   @return  The confluent hypergeometric function.
+     */
+    template<typename _Tp>
+    _Tp
+    __conf_hyperg_series(const _Tp __a, const _Tp __c, const _Tp __x)
+    {
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+
+      _Tp __term = _Tp(1);
+      _Tp __Fac = _Tp(1);
+      const unsigned int __max_iter = 100000;
+      unsigned int __i;
+      for (__i = 0; __i < __max_iter; ++__i)
+        {
+          __term *= (__a + _Tp(__i)) * __x
+                  / ((__c + _Tp(__i)) * _Tp(1 + __i));
+          if (std::abs(__term) < __eps)
+            {
+              break;
+            }
+          __Fac += __term;
+        }
+      if (__i == __max_iter)
+        std::__throw_runtime_error(__N("Series failed to converge "
+                                       "in __conf_hyperg_series."));
+
+      return __Fac;
+    }
+
+
+    /**
+     *  @brief  Return the hypogeometric function @f$ _2F_1(a,b;c;x) @f$
+     *          by an iterative procedure described in
+     *          Luke, Algorithms for the Computation of Mathematical Functions.
+     *
+     *  Like the case of the 2F1 rational approximations, these are 
+     *  probably guaranteed to converge for x < 0, barring gross    
+     *  numerical instability in the pre-asymptotic regime.         
+     */
+    template<typename _Tp>
+    _Tp
+    __conf_hyperg_luke(const _Tp __a, const _Tp __c, const _Tp __xin)
+    {
+      const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
+      const int __nmax = 20000;
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __x  = -__xin;
+      const _Tp __x3 = __x * __x * __x;
+      const _Tp __t0 = __a / __c;
+      const _Tp __t1 = (__a + _Tp(1)) / (_Tp(2) * __c);
+      const _Tp __t2 = (__a + _Tp(2)) / (_Tp(2) * (__c + _Tp(1)));
+      _Tp __F = _Tp(1);
+      _Tp __prec;
+
+      _Tp __Bnm3 = _Tp(1);
+      _Tp __Bnm2 = _Tp(1) + __t1 * __x;
+      _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x);
+
+      _Tp __Anm3 = _Tp(1);
+      _Tp __Anm2 = __Bnm2 - __t0 * __x;
+      _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x
+                 + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x;
+
+      int __n = 3;
+      while(1)
+        {
+          _Tp __npam1 = _Tp(__n - 1) + __a;
+          _Tp __npcm1 = _Tp(__n - 1) + __c;
+          _Tp __npam2 = _Tp(__n - 2) + __a;
+          _Tp __npcm2 = _Tp(__n - 2) + __c;
+          _Tp __tnm1  = _Tp(2 * __n - 1);
+          _Tp __tnm3  = _Tp(2 * __n - 3);
+          _Tp __tnm5  = _Tp(2 * __n - 5);
+          _Tp __F1 =  (_Tp(__n - 2) - __a) / (_Tp(2) * __tnm3 * __npcm1);
+          _Tp __F2 =  (_Tp(__n) + __a) * __npam1
+                   / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1);
+          _Tp __F3 = -__npam2 * __npam1 * (_Tp(__n - 2) - __a)
+                   / (_Tp(8) * __tnm3 * __tnm3 * __tnm5
+                   * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1);
+          _Tp __E  = -__npam1 * (_Tp(__n - 1) - __c)
+                   / (_Tp(2) * __tnm3 * __npcm2 * __npcm1);
+
+          _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1
+                   + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3;
+          _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1
+                   + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3;
+          _Tp __r = __An / __Bn;
+
+          __prec = std::abs((__F - __r) / __F);
+          __F = __r;
+
+          if (__prec < __eps || __n > __nmax)
+            break;
+
+          if (std::abs(__An) > __big || std::abs(__Bn) > __big)
+            {
+              __An   /= __big;
+              __Bn   /= __big;
+              __Anm1 /= __big;
+              __Bnm1 /= __big;
+              __Anm2 /= __big;
+              __Bnm2 /= __big;
+              __Anm3 /= __big;
+              __Bnm3 /= __big;
+            }
+          else if (std::abs(__An) < _Tp(1) / __big
+                || std::abs(__Bn) < _Tp(1) / __big)
+            {
+              __An   *= __big;
+              __Bn   *= __big;
+              __Anm1 *= __big;
+              __Bnm1 *= __big;
+              __Anm2 *= __big;
+              __Bnm2 *= __big;
+              __Anm3 *= __big;
+              __Bnm3 *= __big;
+            }
+
+          ++__n;
+          __Bnm3 = __Bnm2;
+          __Bnm2 = __Bnm1;
+          __Bnm1 = __Bn;
+          __Anm3 = __Anm2;
+          __Anm2 = __Anm1;
+          __Anm1 = __An;
+        }
+
+      if (__n >= __nmax)
+        std::__throw_runtime_error(__N("Iteration failed to converge "
+                                       "in __conf_hyperg_luke."));
+
+      return __F;
+    }
+
+
+    /**
+     *   @brief  Return the confluent hypogeometric function
+     *           @f$ _1F_1(a;c;x) @f$.
+     * 
+     *   @todo  Handle b == nonpositive integer blowup - return NaN.
+     *
+     *   @param  __a  The @a numerator parameter.
+     *   @param  __c  The @a denominator parameter.
+     *   @param  __x  The argument of the confluent hypergeometric function.
+     *   @return  The confluent hypergeometric function.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __conf_hyperg(const _Tp __a, const _Tp __c, const _Tp __x)
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      const _Tp __c_nint = std::tr1::nearbyint(__c);
+#else
+      const _Tp __c_nint = static_cast<int>(__c + _Tp(0.5L));
+#endif
+      if (__isnan(__a) || __isnan(__c) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__c_nint == __c && __c_nint <= 0)
+        return std::numeric_limits<_Tp>::infinity();
+      else if (__a == _Tp(0))
+        return _Tp(1);
+      else if (__c == __a)
+        return std::exp(__x);
+      else if (__x < _Tp(0))
+        return __conf_hyperg_luke(__a, __c, __x);
+      else
+        return __conf_hyperg_series(__a, __c, __x);
+    }
+
+
+    /**
+     *   @brief Return the hypogeometric function @f$ _2F_1(a,b;c;x) @f$
+     *   by series expansion.
+     * 
+     *   The hypogeometric function is defined by
+     *   @f[
+     *     _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}
+     *                      \sum_{n=0}^{\infty}
+     *                      \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)}
+     *                      \frac{x^n}{n!}
+     *   @f]
+     * 
+     *   This works and it's pretty fast.
+     *
+     *   @param  __a  The first @a numerator parameter.
+     *   @param  __a  The second @a numerator parameter.
+     *   @param  __c  The @a denominator parameter.
+     *   @param  __x  The argument of the confluent hypergeometric function.
+     *   @return  The confluent hypergeometric function.
+     */
+    template<typename _Tp>
+    _Tp
+    __hyperg_series(const _Tp __a, const _Tp __b,
+                    const _Tp __c, const _Tp __x)
+    {
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+
+      _Tp __term = _Tp(1);
+      _Tp __Fabc = _Tp(1);
+      const unsigned int __max_iter = 100000;
+      unsigned int __i;
+      for (__i = 0; __i < __max_iter; ++__i)
+        {
+          __term *= (__a + _Tp(__i)) * (__b + _Tp(__i)) * __x
+                  / ((__c + _Tp(__i)) * _Tp(1 + __i));
+          if (std::abs(__term) < __eps)
+            {
+              break;
+            }
+          __Fabc += __term;
+        }
+      if (__i == __max_iter)
+        std::__throw_runtime_error(__N("Series failed to converge "
+                                       "in __hyperg_series."));
+
+      return __Fabc;
+    }
+
+
+    /**
+     *   @brief  Return the hypogeometric function @f$ _2F_1(a,b;c;x) @f$
+     *           by an iterative procedure described in
+     *           Luke, Algorithms for the Computation of Mathematical Functions.
+     */
+    template<typename _Tp>
+    _Tp
+    __hyperg_luke(const _Tp __a, const _Tp __b, const _Tp __c,
+                  const _Tp __xin)
+    {
+      const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
+      const int __nmax = 20000;
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __x  = -__xin;
+      const _Tp __x3 = __x * __x * __x;
+      const _Tp __t0 = __a * __b / __c;
+      const _Tp __t1 = (__a + _Tp(1)) * (__b + _Tp(1)) / (_Tp(2) * __c);
+      const _Tp __t2 = (__a + _Tp(2)) * (__b + _Tp(2))
+                     / (_Tp(2) * (__c + _Tp(1)));
+
+      _Tp __F = _Tp(1);
+
+      _Tp __Bnm3 = _Tp(1);
+      _Tp __Bnm2 = _Tp(1) + __t1 * __x;
+      _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x);
+
+      _Tp __Anm3 = _Tp(1);
+      _Tp __Anm2 = __Bnm2 - __t0 * __x;
+      _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x
+                 + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x;
+
+      int __n = 3;
+      while (1)
+        {
+          const _Tp __npam1 = _Tp(__n - 1) + __a;
+          const _Tp __npbm1 = _Tp(__n - 1) + __b;
+          const _Tp __npcm1 = _Tp(__n - 1) + __c;
+          const _Tp __npam2 = _Tp(__n - 2) + __a;
+          const _Tp __npbm2 = _Tp(__n - 2) + __b;
+          const _Tp __npcm2 = _Tp(__n - 2) + __c;
+          const _Tp __tnm1  = _Tp(2 * __n - 1);
+          const _Tp __tnm3  = _Tp(2 * __n - 3);
+          const _Tp __tnm5  = _Tp(2 * __n - 5);
+          const _Tp __n2 = __n * __n;
+          const _Tp __F1 = (_Tp(3) * __n2 + (__a + __b - _Tp(6)) * __n
+                         + _Tp(2) - __a * __b - _Tp(2) * (__a + __b))
+                         / (_Tp(2) * __tnm3 * __npcm1);
+          const _Tp __F2 = -(_Tp(3) * __n2 - (__a + __b + _Tp(6)) * __n
+                         + _Tp(2) - __a * __b) * __npam1 * __npbm1
+                         / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1);
+          const _Tp __F3 = (__npam2 * __npam1 * __npbm2 * __npbm1
+                         * (_Tp(__n - 2) - __a) * (_Tp(__n - 2) - __b))
+                         / (_Tp(8) * __tnm3 * __tnm3 * __tnm5
+                         * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1);
+          const _Tp __E  = -__npam1 * __npbm1 * (_Tp(__n - 1) - __c)
+                         / (_Tp(2) * __tnm3 * __npcm2 * __npcm1);
+
+          _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1
+                   + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3;
+          _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1
+                   + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3;
+          const _Tp __r = __An / __Bn;
+
+          const _Tp __prec = std::abs((__F - __r) / __F);
+          __F = __r;
+
+          if (__prec < __eps || __n > __nmax)
+            break;
+
+          if (std::abs(__An) > __big || std::abs(__Bn) > __big)
+            {
+              __An   /= __big;
+              __Bn   /= __big;
+              __Anm1 /= __big;
+              __Bnm1 /= __big;
+              __Anm2 /= __big;
+              __Bnm2 /= __big;
+              __Anm3 /= __big;
+              __Bnm3 /= __big;
+            }
+          else if (std::abs(__An) < _Tp(1) / __big
+                || std::abs(__Bn) < _Tp(1) / __big)
+            {
+              __An   *= __big;
+              __Bn   *= __big;
+              __Anm1 *= __big;
+              __Bnm1 *= __big;
+              __Anm2 *= __big;
+              __Bnm2 *= __big;
+              __Anm3 *= __big;
+              __Bnm3 *= __big;
+            }
+
+          ++__n;
+          __Bnm3 = __Bnm2;
+          __Bnm2 = __Bnm1;
+          __Bnm1 = __Bn;
+          __Anm3 = __Anm2;
+          __Anm2 = __Anm1;
+          __Anm1 = __An;
+        }
+
+      if (__n >= __nmax)
+        std::__throw_runtime_error(__N("Iteration failed to converge "
+                                       "in __hyperg_luke."));
+
+      return __F;
+    }
+
+
+    /**
+     *  @brief  Return the hypogeometric function @f$ _2F_1(a,b;c;x) @f$ 
+     *  by the reflection formulae in Abramowitz & Stegun formula
+     *  15.3.6 for d = c - a - b not integral and formula 15.3.11 for
+     *  d = c - a - b integral.  This assumes a, b, c != negative
+     *  integer.
+     *
+     *   The hypogeometric function is defined by
+     *   @f[
+     *     _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}
+     *                      \sum_{n=0}^{\infty}
+     *                      \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)}
+     *                      \frac{x^n}{n!}
+     *   @f]
+     *
+     *   The reflection formula for nonintegral @f$ d = c - a - b @f$ is:
+     *   @f[
+     *     _2F_1(a,b;c;x) = \frac{\Gamma(c)\Gamma(d)}{\Gamma(c-a)\Gamma(c-b)}
+     *                            _2F_1(a,b;1-d;1-x)
+     *                    + \frac{\Gamma(c)\Gamma(-d)}{\Gamma(a)\Gamma(b)}
+     *                            _2F_1(c-a,c-b;1+d;1-x)
+     *   @f]
+     *
+     *   The reflection formula for integral @f$ m = c - a - b @f$ is:
+     *   @f[
+     *     _2F_1(a,b;a+b+m;x) = \frac{\Gamma(m)\Gamma(a+b+m)}{\Gamma(a+m)\Gamma(b+m)}
+     *                        \sum_{k=0}^{m-1} \frac{(m+a)_k(m+b)_k}{k!(1-m)_k}
+     *                      - 
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __hyperg_reflect(const _Tp __a, const _Tp __b, const _Tp __c,
+                     const _Tp __x)
+    {
+      const _Tp __d = __c - __a - __b;
+      const int __intd  = std::floor(__d + _Tp(0.5L));
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __toler = _Tp(1000) * __eps;
+      const _Tp __log_max = std::log(std::numeric_limits<_Tp>::max());
+      const bool __d_integer = (std::abs(__d - __intd) < __toler);
+
+      if (__d_integer)
+        {
+          const _Tp __ln_omx = std::log(_Tp(1) - __x);
+          const _Tp __ad = std::abs(__d);
+          _Tp __F1, __F2;
+
+          _Tp __d1, __d2;
+          if (__d >= _Tp(0))
+            {
+              __d1 = __d;
+              __d2 = _Tp(0);
+            }
+          else
+            {
+              __d1 = _Tp(0);
+              __d2 = __d;
+            }
+
+          const _Tp __lng_c = __log_gamma(__c);
+
+          //  Evaluate F1.
+          if (__ad < __eps)
+            {
+              //  d = c - a - b = 0.
+              __F1 = _Tp(0);
+            }
+          else
+            {
+
+              bool __ok_d1 = true;
+              _Tp __lng_ad, __lng_ad1, __lng_bd1;
+              __try
+                {
+                  __lng_ad = __log_gamma(__ad);
+                  __lng_ad1 = __log_gamma(__a + __d1);
+                  __lng_bd1 = __log_gamma(__b + __d1);
+                }
+              __catch(...)
+                {
+                  __ok_d1 = false;
+                }
+
+              if (__ok_d1)
+                {
+                  /* Gamma functions in the denominator are ok.
+                   * Proceed with evaluation.
+                   */
+                  _Tp __sum1 = _Tp(1);
+                  _Tp __term = _Tp(1);
+                  _Tp __ln_pre1 = __lng_ad + __lng_c + __d2 * __ln_omx
+                                - __lng_ad1 - __lng_bd1;
+
+                  /* Do F1 sum.
+                   */
+                  for (int __i = 1; __i < __ad; ++__i)
+                    {
+                      const int __j = __i - 1;
+                      __term *= (__a + __d2 + __j) * (__b + __d2 + __j)
+                              / (_Tp(1) + __d2 + __j) / __i * (_Tp(1) - __x);
+                      __sum1 += __term;
+                    }
+
+                  if (__ln_pre1 > __log_max)
+                    std::__throw_runtime_error(__N("Overflow of gamma functions"
+                                                   " in __hyperg_luke."));
+                  else
+                    __F1 = std::exp(__ln_pre1) * __sum1;
+                }
+              else
+                {
+                  //  Gamma functions in the denominator were not ok.
+                  //  So the F1 term is zero.
+                  __F1 = _Tp(0);
+                }
+            } // end F1 evaluation
+
+          // Evaluate F2.
+          bool __ok_d2 = true;
+          _Tp __lng_ad2, __lng_bd2;
+          __try
+            {
+              __lng_ad2 = __log_gamma(__a + __d2);
+              __lng_bd2 = __log_gamma(__b + __d2);
+            }
+          __catch(...)
+            {
+              __ok_d2 = false;
+            }
+
+          if (__ok_d2)
+            {
+              //  Gamma functions in the denominator are ok.
+              //  Proceed with evaluation.
+              const int __maxiter = 2000;
+              const _Tp __psi_1 = -__numeric_constants<_Tp>::__gamma_e();
+              const _Tp __psi_1pd = __psi(_Tp(1) + __ad);
+              const _Tp __psi_apd1 = __psi(__a + __d1);
+              const _Tp __psi_bpd1 = __psi(__b + __d1);
+
+              _Tp __psi_term = __psi_1 + __psi_1pd - __psi_apd1
+                             - __psi_bpd1 - __ln_omx;
+              _Tp __fact = _Tp(1);
+              _Tp __sum2 = __psi_term;
+              _Tp __ln_pre2 = __lng_c + __d1 * __ln_omx
+                            - __lng_ad2 - __lng_bd2;
+
+              // Do F2 sum.
+              int __j;
+              for (__j = 1; __j < __maxiter; ++__j)
+                {
+                  //  Values for psi functions use recurrence;
+                  //  Abramowitz & Stegun 6.3.5
+                  const _Tp __term1 = _Tp(1) / _Tp(__j)
+                                    + _Tp(1) / (__ad + __j);
+                  const _Tp __term2 = _Tp(1) / (__a + __d1 + _Tp(__j - 1))
+                                    + _Tp(1) / (__b + __d1 + _Tp(__j - 1));
+                  __psi_term += __term1 - __term2;
+                  __fact *= (__a + __d1 + _Tp(__j - 1))
+                          * (__b + __d1 + _Tp(__j - 1))
+                          / ((__ad + __j) * __j) * (_Tp(1) - __x);
+                  const _Tp __delta = __fact * __psi_term;
+                  __sum2 += __delta;
+                  if (std::abs(__delta) < __eps * std::abs(__sum2))
+                    break;
+                }
+              if (__j == __maxiter)
+                std::__throw_runtime_error(__N("Sum F2 failed to converge "
+                                               "in __hyperg_reflect"));
+
+              if (__sum2 == _Tp(0))
+                __F2 = _Tp(0);
+              else
+                __F2 = std::exp(__ln_pre2) * __sum2;
+            }
+          else
+            {
+              // Gamma functions in the denominator not ok.
+              // So the F2 term is zero.
+              __F2 = _Tp(0);
+            } // end F2 evaluation
+
+          const _Tp __sgn_2 = (__intd % 2 == 1 ? -_Tp(1) : _Tp(1));
+          const _Tp __F = __F1 + __sgn_2 * __F2;
+
+          return __F;
+        }
+      else
+        {
+          //  d = c - a - b not an integer.
+
+          //  These gamma functions appear in the denominator, so we
+          //  catch their harmless domain errors and set the terms to zero.
+          bool __ok1 = true;
+          _Tp __sgn_g1ca = _Tp(0), __ln_g1ca = _Tp(0);
+          _Tp __sgn_g1cb = _Tp(0), __ln_g1cb = _Tp(0);
+          __try
+            {
+              __sgn_g1ca = __log_gamma_sign(__c - __a);
+              __ln_g1ca = __log_gamma(__c - __a);
+              __sgn_g1cb = __log_gamma_sign(__c - __b);
+              __ln_g1cb = __log_gamma(__c - __b);
+            }
+          __catch(...)
+            {
+              __ok1 = false;
+            }
+
+          bool __ok2 = true;
+          _Tp __sgn_g2a = _Tp(0), __ln_g2a = _Tp(0);
+          _Tp __sgn_g2b = _Tp(0), __ln_g2b = _Tp(0);
+          __try
+            {
+              __sgn_g2a = __log_gamma_sign(__a);
+              __ln_g2a = __log_gamma(__a);
+              __sgn_g2b = __log_gamma_sign(__b);
+              __ln_g2b = __log_gamma(__b);
+            }
+          __catch(...)
+            {
+              __ok2 = false;
+            }
+
+          const _Tp __sgn_gc = __log_gamma_sign(__c);
+          const _Tp __ln_gc = __log_gamma(__c);
+          const _Tp __sgn_gd = __log_gamma_sign(__d);
+          const _Tp __ln_gd = __log_gamma(__d);
+          const _Tp __sgn_gmd = __log_gamma_sign(-__d);
+          const _Tp __ln_gmd = __log_gamma(-__d);
+
+          const _Tp __sgn1 = __sgn_gc * __sgn_gd  * __sgn_g1ca * __sgn_g1cb;
+          const _Tp __sgn2 = __sgn_gc * __sgn_gmd * __sgn_g2a  * __sgn_g2b;
+
+          _Tp __pre1, __pre2;
+          if (__ok1 && __ok2)
+            {
+              _Tp __ln_pre1 = __ln_gc + __ln_gd  - __ln_g1ca - __ln_g1cb;
+              _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a  - __ln_g2b
+                            + __d * std::log(_Tp(1) - __x);
+              if (__ln_pre1 < __log_max && __ln_pre2 < __log_max)
+                {
+                  __pre1 = std::exp(__ln_pre1);
+                  __pre2 = std::exp(__ln_pre2);
+                  __pre1 *= __sgn1;
+                  __pre2 *= __sgn2;
+                }
+              else
+                {
+                  std::__throw_runtime_error(__N("Overflow of gamma functions "
+                                                 "in __hyperg_reflect"));
+                }
+            }
+          else if (__ok1 && !__ok2)
+            {
+              _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb;
+              if (__ln_pre1 < __log_max)
+                {
+                  __pre1 = std::exp(__ln_pre1);
+                  __pre1 *= __sgn1;
+                  __pre2 = _Tp(0);
+                }
+              else
+                {
+                  std::__throw_runtime_error(__N("Overflow of gamma functions "
+                                                 "in __hyperg_reflect"));
+                }
+            }
+          else if (!__ok1 && __ok2)
+            {
+              _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b
+                            + __d * std::log(_Tp(1) - __x);
+              if (__ln_pre2 < __log_max)
+                {
+                  __pre1 = _Tp(0);
+                  __pre2 = std::exp(__ln_pre2);
+                  __pre2 *= __sgn2;
+                }
+              else
+                {
+                  std::__throw_runtime_error(__N("Overflow of gamma functions "
+                                                 "in __hyperg_reflect"));
+                }
+            }
+          else
+            {
+              __pre1 = _Tp(0);
+              __pre2 = _Tp(0);
+              std::__throw_runtime_error(__N("Underflow of gamma functions "
+                                             "in __hyperg_reflect"));
+            }
+
+          const _Tp __F1 = __hyperg_series(__a, __b, _Tp(1) - __d,
+                                           _Tp(1) - __x);
+          const _Tp __F2 = __hyperg_series(__c - __a, __c - __b, _Tp(1) + __d,
+                                           _Tp(1) - __x);
+
+          const _Tp __F = __pre1 * __F1 + __pre2 * __F2;
+
+          return __F;
+        }
+    }
+
+
+    /**
+     *   @brief Return the hypogeometric function @f$ _2F_1(a,b;c;x) @f$.
+     *
+     *   The hypogeometric function is defined by
+     *   @f[
+     *     _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)}
+     *                      \sum_{n=0}^{\infty}
+     *                      \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)}
+     *                      \frac{x^n}{n!}
+     *   @f]
+     *
+     *   @param  __a  The first @a numerator parameter.
+     *   @param  __a  The second @a numerator parameter.
+     *   @param  __c  The @a denominator parameter.
+     *   @param  __x  The argument of the confluent hypergeometric function.
+     *   @return  The confluent hypergeometric function.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __hyperg(const _Tp __a, const _Tp __b, const _Tp __c, const _Tp __x)
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      const _Tp __a_nint = std::tr1::nearbyint(__a);
+      const _Tp __b_nint = std::tr1::nearbyint(__b);
+      const _Tp __c_nint = std::tr1::nearbyint(__c);
+#else
+      const _Tp __a_nint = static_cast<int>(__a + _Tp(0.5L));
+      const _Tp __b_nint = static_cast<int>(__b + _Tp(0.5L));
+      const _Tp __c_nint = static_cast<int>(__c + _Tp(0.5L));
+#endif
+      const _Tp __toler = _Tp(1000) * std::numeric_limits<_Tp>::epsilon();
+      if (std::abs(__x) >= _Tp(1))
+        std::__throw_domain_error(__N("Argument outside unit circle "
+                                      "in __hyperg."));
+      else if (__isnan(__a) || __isnan(__b)
+            || __isnan(__c) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__c_nint == __c && __c_nint <= _Tp(0))
+        return std::numeric_limits<_Tp>::infinity();
+      else if (std::abs(__c - __b) < __toler || std::abs(__c - __a) < __toler)
+        return std::pow(_Tp(1) - __x, __c - __a - __b);
+      else if (__a >= _Tp(0) && __b >= _Tp(0) && __c >= _Tp(0)
+            && __x >= _Tp(0) && __x < _Tp(0.995L))
+        return __hyperg_series(__a, __b, __c, __x);
+      else if (std::abs(__a) < _Tp(10) && std::abs(__b) < _Tp(10))
+        {
+          //  For integer a and b the hypergeometric function is a
+          //  finite polynomial.
+          if (__a < _Tp(0)  &&  std::abs(__a - __a_nint) < __toler)
+            return __hyperg_series(__a_nint, __b, __c, __x);
+          else if (__b < _Tp(0)  &&  std::abs(__b - __b_nint) < __toler)
+            return __hyperg_series(__a, __b_nint, __c, __x);
+          else if (__x < -_Tp(0.25L))
+            return __hyperg_luke(__a, __b, __c, __x);
+          else if (__x < _Tp(0.5L))
+            return __hyperg_series(__a, __b, __c, __x);
+          else
+            if (std::abs(__c) > _Tp(10))
+              return __hyperg_series(__a, __b, __c, __x);
+            else
+              return __hyperg_reflect(__a, __b, __c, __x);
+        }
+      else
+        return __hyperg_luke(__a, __b, __c, __x);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_HYPERGEOMETRIC_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/inttypes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/inttypes.h
new file mode 100644
index 000000000..4c8fd45d8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/inttypes.h
@@ -0,0 +1,34 @@
+// TR1 inttypes.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/inttypes.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_INTTYPES_H
+#define _GLIBCXX_TR1_INTTYPES_H 1
+
+#include <tr1/cinttypes>
+
+#endif // _GLIBCXX_TR1_INTTYPES_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/legendre_function.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/legendre_function.tcc
new file mode 100644
index 000000000..db41d4e0a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/legendre_function.tcc
@@ -0,0 +1,306 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/legendre_function.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 8, pp. 331-341
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 252-254
+
+#ifndef _GLIBCXX_TR1_LEGENDRE_FUNCTION_TCC
+#define _GLIBCXX_TR1_LEGENDRE_FUNCTION_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief  Return the Legendre polynomial by recursion on order
+     *           @f$ l @f$.
+     * 
+     *   The Legendre function of @f$ l @f$ and @f$ x @f$,
+     *   @f$ P_l(x) @f$, is defined by:
+     *   @f[
+     *     P_l(x) = \frac{1}{2^l l!}\frac{d^l}{dx^l}(x^2 - 1)^{l}
+     *   @f]
+     * 
+     *   @param  l  The order of the Legendre polynomial.  @f$l >= 0@f$.
+     *   @param  x  The argument of the Legendre polynomial.  @f$|x| <= 1@f$.
+     */
+    template<typename _Tp>
+    _Tp
+    __poly_legendre_p(const unsigned int __l, const _Tp __x)
+    {
+
+      if ((__x < _Tp(-1)) || (__x > _Tp(+1)))
+        std::__throw_domain_error(__N("Argument out of range"
+                                      " in __poly_legendre_p."));
+      else if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x == +_Tp(1))
+        return +_Tp(1);
+      else if (__x == -_Tp(1))
+        return (__l % 2 == 1 ? -_Tp(1) : +_Tp(1));
+      else
+        {
+          _Tp __p_lm2 = _Tp(1);
+          if (__l == 0)
+            return __p_lm2;
+
+          _Tp __p_lm1 = __x;
+          if (__l == 1)
+            return __p_lm1;
+
+          _Tp __p_l = 0;
+          for (unsigned int __ll = 2; __ll <= __l; ++__ll)
+            {
+              //  This arrangement is supposed to be better for roundoff
+              //  protection, Arfken, 2nd Ed, Eq 12.17a.
+              __p_l = _Tp(2) * __x * __p_lm1 - __p_lm2
+                    - (__x * __p_lm1 - __p_lm2) / _Tp(__ll);
+              __p_lm2 = __p_lm1;
+              __p_lm1 = __p_l;
+            }
+
+          return __p_l;
+        }
+    }
+
+
+    /**
+     *   @brief  Return the associated Legendre function by recursion
+     *           on @f$ l @f$.
+     * 
+     *   The associated Legendre function is derived from the Legendre function
+     *   @f$ P_l(x) @f$ by the Rodrigues formula:
+     *   @f[
+     *     P_l^m(x) = (1 - x^2)^{m/2}\frac{d^m}{dx^m}P_l(x)
+     *   @f]
+     * 
+     *   @param  l  The order of the associated Legendre function.
+     *              @f$ l >= 0 @f$.
+     *   @param  m  The order of the associated Legendre function.
+     *              @f$ m <= l @f$.
+     *   @param  x  The argument of the associated Legendre function.
+     *              @f$ |x| <= 1 @f$.
+     */
+    template<typename _Tp>
+    _Tp
+    __assoc_legendre_p(const unsigned int __l, const unsigned int __m,
+                       const _Tp __x)
+    {
+
+      if (__x < _Tp(-1) || __x > _Tp(+1))
+        std::__throw_domain_error(__N("Argument out of range"
+                                      " in __assoc_legendre_p."));
+      else if (__m > __l)
+        std::__throw_domain_error(__N("Degree out of range"
+                                      " in __assoc_legendre_p."));
+      else if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__m == 0)
+        return __poly_legendre_p(__l, __x);
+      else
+        {
+          _Tp __p_mm = _Tp(1);
+          if (__m > 0)
+            {
+              //  Two square roots seem more accurate more of the time
+              //  than just one.
+              _Tp __root = std::sqrt(_Tp(1) - __x) * std::sqrt(_Tp(1) + __x);
+              _Tp __fact = _Tp(1);
+              for (unsigned int __i = 1; __i <= __m; ++__i)
+                {
+                  __p_mm *= -__fact * __root;
+                  __fact += _Tp(2);
+                }
+            }
+          if (__l == __m)
+            return __p_mm;
+
+          _Tp __p_mp1m = _Tp(2 * __m + 1) * __x * __p_mm;
+          if (__l == __m + 1)
+            return __p_mp1m;
+
+          _Tp __p_lm2m = __p_mm;
+          _Tp __P_lm1m = __p_mp1m;
+          _Tp __p_lm = _Tp(0);
+          for (unsigned int __j = __m + 2; __j <= __l; ++__j)
+            {
+              __p_lm = (_Tp(2 * __j - 1) * __x * __P_lm1m
+                      - _Tp(__j + __m - 1) * __p_lm2m) / _Tp(__j - __m);
+              __p_lm2m = __P_lm1m;
+              __P_lm1m = __p_lm;
+            }
+
+          return __p_lm;
+        }
+    }
+
+
+    /**
+     *   @brief  Return the spherical associated Legendre function.
+     * 
+     *   The spherical associated Legendre function of @f$ l @f$, @f$ m @f$,
+     *   and @f$ \theta @f$ is defined as @f$ Y_l^m(\theta,0) @f$ where
+     *   @f[
+     *      Y_l^m(\theta,\phi) = (-1)^m[\frac{(2l+1)}{4\pi}
+     *                                  \frac{(l-m)!}{(l+m)!}]
+     *                     P_l^m(\cos\theta) \exp^{im\phi}
+     *   @f]
+     *   is the spherical harmonic function and @f$ P_l^m(x) @f$ is the
+     *   associated Legendre function.
+     * 
+     *   This function differs from the associated Legendre function by
+     *   argument (@f$x = \cos(\theta)@f$) and by a normalization factor
+     *   but this factor is rather large for large @f$ l @f$ and @f$ m @f$
+     *   and so this function is stable for larger differences of @f$ l @f$
+     *   and @f$ m @f$.
+     * 
+     *   @param  l  The order of the spherical associated Legendre function.
+     *              @f$ l >= 0 @f$.
+     *   @param  m  The order of the spherical associated Legendre function.
+     *              @f$ m <= l @f$.
+     *   @param  theta  The radian angle argument of the spherical associated
+     *                  Legendre function.
+     */
+    template <typename _Tp>
+    _Tp
+    __sph_legendre(const unsigned int __l, const unsigned int __m,
+                   const _Tp __theta)
+    {
+      if (__isnan(__theta))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+
+      const _Tp __x = std::cos(__theta);
+
+      if (__l < __m)
+        {
+          std::__throw_domain_error(__N("Bad argument "
+                                        "in __sph_legendre."));
+        }
+      else if (__m == 0)
+        {
+          _Tp __P = __poly_legendre_p(__l, __x);
+          _Tp __fact = std::sqrt(_Tp(2 * __l + 1)
+                     / (_Tp(4) * __numeric_constants<_Tp>::__pi()));
+          __P *= __fact;
+          return __P;
+        }
+      else if (__x == _Tp(1) || __x == -_Tp(1))
+        {
+          //  m > 0 here
+          return _Tp(0);
+        }
+      else
+        {
+          // m > 0 and |x| < 1 here
+
+          // Starting value for recursion.
+          // Y_m^m(x) = sqrt( (2m+1)/(4pi m) gamma(m+1/2)/gamma(m) )
+          //             (-1)^m (1-x^2)^(m/2) / pi^(1/4)
+          const _Tp __sgn = ( __m % 2 == 1 ? -_Tp(1) : _Tp(1));
+          const _Tp __y_mp1m_factor = __x * std::sqrt(_Tp(2 * __m + 3));
+#if _GLIBCXX_USE_C99_MATH_TR1
+          const _Tp __lncirc = std::tr1::log1p(-__x * __x);
+#else
+          const _Tp __lncirc = std::log(_Tp(1) - __x * __x);
+#endif
+          //  Gamma(m+1/2) / Gamma(m)
+#if _GLIBCXX_USE_C99_MATH_TR1
+          const _Tp __lnpoch = std::tr1::lgamma(_Tp(__m + _Tp(0.5L)))
+                             - std::tr1::lgamma(_Tp(__m));
+#else
+          const _Tp __lnpoch = __log_gamma(_Tp(__m + _Tp(0.5L)))
+                             - __log_gamma(_Tp(__m));
+#endif
+          const _Tp __lnpre_val =
+                    -_Tp(0.25L) * __numeric_constants<_Tp>::__lnpi()
+                    + _Tp(0.5L) * (__lnpoch + __m * __lncirc);
+          _Tp __sr = std::sqrt((_Tp(2) + _Tp(1) / __m)
+                   / (_Tp(4) * __numeric_constants<_Tp>::__pi()));
+          _Tp __y_mm = __sgn * __sr * std::exp(__lnpre_val);
+          _Tp __y_mp1m = __y_mp1m_factor * __y_mm;
+
+          if (__l == __m)
+            {
+              return __y_mm;
+            }
+          else if (__l == __m + 1)
+            {
+              return __y_mp1m;
+            }
+          else
+            {
+              _Tp __y_lm = _Tp(0);
+
+              // Compute Y_l^m, l > m+1, upward recursion on l.
+              for ( int __ll = __m + 2; __ll <= __l; ++__ll)
+                {
+                  const _Tp __rat1 = _Tp(__ll - __m) / _Tp(__ll + __m);
+                  const _Tp __rat2 = _Tp(__ll - __m - 1) / _Tp(__ll + __m - 1);
+                  const _Tp __fact1 = std::sqrt(__rat1 * _Tp(2 * __ll + 1)
+                                                       * _Tp(2 * __ll - 1));
+                  const _Tp __fact2 = std::sqrt(__rat1 * __rat2 * _Tp(2 * __ll + 1)
+                                                                / _Tp(2 * __ll - 3));
+                  __y_lm = (__x * __y_mp1m * __fact1
+                         - (__ll + __m - 1) * __y_mm * __fact2) / _Tp(__ll - __m);
+                  __y_mm = __y_mp1m;
+                  __y_mp1m = __y_lm;
+                }
+
+              return __y_lm;
+            }
+        }
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_LEGENDRE_FUNCTION_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/limits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/limits.h
new file mode 100644
index 000000000..d95d360fd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/limits.h
@@ -0,0 +1,34 @@
+// TR1 limits.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/limits.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_LIMITS_H
+#define _TR1_LIMITS_H 1
+
+#include <tr1/climits>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/math.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/math.h
new file mode 100644
index 000000000..15d6d6419
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/math.h
@@ -0,0 +1,186 @@
+// TR1 math.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/math.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_MATH_H
+#define _GLIBCXX_TR1_MATH_H 1
+
+#include <tr1/cmath>
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+
+using std::tr1::acos;
+using std::tr1::acosh;
+using std::tr1::asin;
+using std::tr1::asinh;
+using std::tr1::atan;
+using std::tr1::atan2;
+using std::tr1::atanh;
+using std::tr1::cbrt;
+using std::tr1::ceil;
+using std::tr1::copysign;
+using std::tr1::cos;
+using std::tr1::cosh;
+using std::tr1::erf;
+using std::tr1::erfc;
+using std::tr1::exp;
+using std::tr1::exp2;
+using std::tr1::expm1;
+using std::tr1::fabs;
+using std::tr1::fdim;
+using std::tr1::floor;
+using std::tr1::fma;
+using std::tr1::fmax;
+using std::tr1::fmin;
+using std::tr1::fmod;
+using std::tr1::frexp;
+using std::tr1::hypot;
+using std::tr1::ilogb;
+using std::tr1::ldexp;
+using std::tr1::lgamma;
+using std::tr1::llrint;
+using std::tr1::llround;
+using std::tr1::log;
+using std::tr1::log10;
+using std::tr1::log1p;
+using std::tr1::log2;
+using std::tr1::logb;
+using std::tr1::lrint;
+using std::tr1::lround;
+using std::tr1::nearbyint;
+using std::tr1::nextafter;
+using std::tr1::nexttoward;
+using std::tr1::pow;
+using std::tr1::remainder;
+using std::tr1::remquo;
+using std::tr1::rint;
+using std::tr1::round;
+using std::tr1::scalbln;
+using std::tr1::scalbn;
+using std::tr1::sin;
+using std::tr1::sinh;
+using std::tr1::sqrt;
+using std::tr1::tan;
+using std::tr1::tanh;
+using std::tr1::tgamma;
+using std::tr1::trunc;
+
+#endif
+
+using std::tr1::assoc_laguerref;
+using std::tr1::assoc_laguerre;
+using std::tr1::assoc_laguerrel;
+
+using std::tr1::assoc_legendref;
+using std::tr1::assoc_legendre;
+using std::tr1::assoc_legendrel;
+
+using std::tr1::betaf;
+using std::tr1::beta;
+using std::tr1::betal;
+
+using std::tr1::comp_ellint_1f;
+using std::tr1::comp_ellint_1;
+using std::tr1::comp_ellint_1l;
+
+using std::tr1::comp_ellint_2f;
+using std::tr1::comp_ellint_2;
+using std::tr1::comp_ellint_2l;
+
+using std::tr1::comp_ellint_3f;
+using std::tr1::comp_ellint_3;
+using std::tr1::comp_ellint_3l;
+
+using std::tr1::conf_hypergf;
+using std::tr1::conf_hyperg;
+using std::tr1::conf_hypergl;
+
+using std::tr1::cyl_bessel_if;
+using std::tr1::cyl_bessel_i;
+using std::tr1::cyl_bessel_il;
+
+using std::tr1::cyl_bessel_jf;
+using std::tr1::cyl_bessel_j;
+using std::tr1::cyl_bessel_jl;
+
+using std::tr1::cyl_bessel_kf;
+using std::tr1::cyl_bessel_k;
+using std::tr1::cyl_bessel_kl;
+
+using std::tr1::cyl_neumannf;
+using std::tr1::cyl_neumann;
+using std::tr1::cyl_neumannl;
+
+using std::tr1::ellint_1f;
+using std::tr1::ellint_1;
+using std::tr1::ellint_1l;
+
+using std::tr1::ellint_2f;
+using std::tr1::ellint_2;
+using std::tr1::ellint_2l;
+
+using std::tr1::ellint_3f;
+using std::tr1::ellint_3;
+using std::tr1::ellint_3l;
+
+using std::tr1::expintf;
+using std::tr1::expint;
+using std::tr1::expintl;
+
+using std::tr1::hermitef;
+using std::tr1::hermite;
+using std::tr1::hermitel;
+
+using std::tr1::hypergf;
+using std::tr1::hyperg;
+using std::tr1::hypergl;
+
+using std::tr1::laguerref;
+using std::tr1::laguerre;
+using std::tr1::laguerrel;
+
+using std::tr1::legendref;
+using std::tr1::legendre;
+using std::tr1::legendrel;
+
+using std::tr1::riemann_zetaf;
+using std::tr1::riemann_zeta;
+using std::tr1::riemann_zetal;
+
+using std::tr1::sph_besself;
+using std::tr1::sph_bessel;
+using std::tr1::sph_bessell;
+
+using std::tr1::sph_legendref;
+using std::tr1::sph_legendre;
+using std::tr1::sph_legendrel;
+
+using std::tr1::sph_neumannf;
+using std::tr1::sph_neumann;
+using std::tr1::sph_neumannl;
+
+#endif // _GLIBCXX_TR1_MATH_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/memory b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/memory
new file mode 100644
index 000000000..eaf4932e5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/memory
@@ -0,0 +1,53 @@
+// <tr1/memory> -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file tr1/memory
+ * This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_MEMORY
+#define _GLIBCXX_TR1_MEMORY 1
+
+#pragma GCC system_header
+
+#if defined(_GLIBCXX_INCLUDE_AS_CXX0X)
+#  error TR1 header cannot be included from C++0x header
+#endif
+
+#include <memory>
+#include <exception>        	// std::exception
+#include <typeinfo>         	// std::type_info in get_deleter
+#include <bits/stl_algobase.h>  // std::swap
+#include <iosfwd>           	// std::basic_ostream
+#include <ext/atomicity.h>
+#include <ext/concurrence.h>
+#include <bits/functexcept.h>
+#include <bits/stl_function.h> 	// std::less
+#include <debug/debug.h>
+#include <tr1/type_traits>
+#include <tr1/shared_ptr.h>
+
+#endif // _GLIBCXX_TR1_MEMORY
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/modified_bessel_func.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/modified_bessel_func.tcc
new file mode 100644
index 000000000..ec134d576
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/modified_bessel_func.tcc
@@ -0,0 +1,437 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/modified_bessel_func.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland.
+//
+// References:
+//   (1) Handbook of Mathematical Functions,
+//       Ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 9, pp. 355-434, Section 10 pp. 435-478
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Numerical Recipes in C, by W. H. Press, S. A. Teukolsky,
+//       W. T. Vetterling, B. P. Flannery, Cambridge University Press (1992),
+//       2nd ed, pp. 246-249.
+
+#ifndef _GLIBCXX_TR1_MODIFIED_BESSEL_FUNC_TCC
+#define _GLIBCXX_TR1_MODIFIED_BESSEL_FUNC_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief  Compute the modified Bessel functions @f$ I_\nu(x) @f$ and
+     *           @f$ K_\nu(x) @f$ and their first derivatives
+     *           @f$ I'_\nu(x) @f$ and @f$ K'_\nu(x) @f$ respectively.
+     *           These four functions are computed together for numerical
+     *           stability.
+     *
+     *   @param  __nu  The order of the Bessel functions.
+     *   @param  __x   The argument of the Bessel functions.
+     *   @param  __Inu  The output regular modified Bessel function.
+     *   @param  __Knu  The output irregular modified Bessel function.
+     *   @param  __Ipnu  The output derivative of the regular
+     *                   modified Bessel function.
+     *   @param  __Kpnu  The output derivative of the irregular
+     *                   modified Bessel function.
+     */
+    template <typename _Tp>
+    void
+    __bessel_ik(const _Tp __nu, const _Tp __x,
+                _Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu)
+    {
+      if (__x == _Tp(0))
+        {
+          if (__nu == _Tp(0))
+            {
+              __Inu = _Tp(1);
+              __Ipnu = _Tp(0);
+            }
+          else if (__nu == _Tp(1))
+            {
+              __Inu = _Tp(0);
+              __Ipnu = _Tp(0.5L);
+            }
+          else
+            {
+              __Inu = _Tp(0);
+              __Ipnu = _Tp(0);
+            }
+          __Knu = std::numeric_limits<_Tp>::infinity();
+          __Kpnu = -std::numeric_limits<_Tp>::infinity();
+          return;
+        }
+
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      const _Tp __fp_min = _Tp(10) * std::numeric_limits<_Tp>::epsilon();
+      const int __max_iter = 15000;
+      const _Tp __x_min = _Tp(2);
+
+      const int __nl = static_cast<int>(__nu + _Tp(0.5L));
+
+      const _Tp __mu = __nu - __nl;
+      const _Tp __mu2 = __mu * __mu;
+      const _Tp __xi = _Tp(1) / __x;
+      const _Tp __xi2 = _Tp(2) * __xi;
+      _Tp __h = __nu * __xi;
+      if ( __h < __fp_min )
+        __h = __fp_min;
+      _Tp __b = __xi2 * __nu;
+      _Tp __d = _Tp(0);
+      _Tp __c = __h;
+      int __i;
+      for ( __i = 1; __i <= __max_iter; ++__i )
+        {
+          __b += __xi2;
+          __d = _Tp(1) / (__b + __d);
+          __c = __b + _Tp(1) / __c;
+          const _Tp __del = __c * __d;
+          __h *= __del;
+          if (std::abs(__del - _Tp(1)) < __eps)
+            break;
+        }
+      if (__i > __max_iter)
+        std::__throw_runtime_error(__N("Argument x too large "
+                                       "in __bessel_jn; "
+                                       "try asymptotic expansion."));
+      _Tp __Inul = __fp_min;
+      _Tp __Ipnul = __h * __Inul;
+      _Tp __Inul1 = __Inul;
+      _Tp __Ipnu1 = __Ipnul;
+      _Tp __fact = __nu * __xi;
+      for (int __l = __nl; __l >= 1; --__l)
+        {
+          const _Tp __Inutemp = __fact * __Inul + __Ipnul;
+          __fact -= __xi;
+          __Ipnul = __fact * __Inutemp + __Inul;
+          __Inul = __Inutemp;
+        }
+      _Tp __f = __Ipnul / __Inul;
+      _Tp __Kmu, __Knu1;
+      if (__x < __x_min)
+        {
+          const _Tp __x2 = __x / _Tp(2);
+          const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu;
+          const _Tp __fact = (std::abs(__pimu) < __eps
+                            ? _Tp(1) : __pimu / std::sin(__pimu));
+          _Tp __d = -std::log(__x2);
+          _Tp __e = __mu * __d;
+          const _Tp __fact2 = (std::abs(__e) < __eps
+                            ? _Tp(1) : std::sinh(__e) / __e);
+          _Tp __gam1, __gam2, __gampl, __gammi;
+          __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi);
+          _Tp __ff = __fact
+                   * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d);
+          _Tp __sum = __ff;
+          __e = std::exp(__e);
+          _Tp __p = __e / (_Tp(2) * __gampl);
+          _Tp __q = _Tp(1) / (_Tp(2) * __e * __gammi);
+          _Tp __c = _Tp(1);
+          __d = __x2 * __x2;
+          _Tp __sum1 = __p;
+          int __i;
+          for (__i = 1; __i <= __max_iter; ++__i)
+            {
+              __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2);
+              __c *= __d / __i;
+              __p /= __i - __mu;
+              __q /= __i + __mu;
+              const _Tp __del = __c * __ff;
+              __sum += __del; 
+              const _Tp __del1 = __c * (__p - __i * __ff);
+              __sum1 += __del1;
+              if (std::abs(__del) < __eps * std::abs(__sum))
+                break;
+            }
+          if (__i > __max_iter)
+            std::__throw_runtime_error(__N("Bessel k series failed to converge "
+                                           "in __bessel_jn."));
+          __Kmu = __sum;
+          __Knu1 = __sum1 * __xi2;
+        }
+      else
+        {
+          _Tp __b = _Tp(2) * (_Tp(1) + __x);
+          _Tp __d = _Tp(1) / __b;
+          _Tp __delh = __d;
+          _Tp __h = __delh;
+          _Tp __q1 = _Tp(0);
+          _Tp __q2 = _Tp(1);
+          _Tp __a1 = _Tp(0.25L) - __mu2;
+          _Tp __q = __c = __a1;
+          _Tp __a = -__a1;
+          _Tp __s = _Tp(1) + __q * __delh;
+          int __i;
+          for (__i = 2; __i <= __max_iter; ++__i)
+            {
+              __a -= 2 * (__i - 1);
+              __c = -__a * __c / __i;
+              const _Tp __qnew = (__q1 - __b * __q2) / __a;
+              __q1 = __q2;
+              __q2 = __qnew;
+              __q += __c * __qnew;
+              __b += _Tp(2);
+              __d = _Tp(1) / (__b + __a * __d);
+              __delh = (__b * __d - _Tp(1)) * __delh;
+              __h += __delh;
+              const _Tp __dels = __q * __delh;
+              __s += __dels;
+              if ( std::abs(__dels / __s) < __eps )
+                break;
+            }
+          if (__i > __max_iter)
+            std::__throw_runtime_error(__N("Steed's method failed "
+                                           "in __bessel_jn."));
+          __h = __a1 * __h;
+          __Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x))
+                * std::exp(-__x) / __s;
+          __Knu1 = __Kmu * (__mu + __x + _Tp(0.5L) - __h) * __xi;
+        }
+
+      _Tp __Kpmu = __mu * __xi * __Kmu - __Knu1;
+      _Tp __Inumu = __xi / (__f * __Kmu - __Kpmu);
+      __Inu = __Inumu * __Inul1 / __Inul;
+      __Ipnu = __Inumu * __Ipnu1 / __Inul;
+      for ( __i = 1; __i <= __nl; ++__i )
+        {
+          const _Tp __Knutemp = (__mu + __i) * __xi2 * __Knu1 + __Kmu;
+          __Kmu = __Knu1;
+          __Knu1 = __Knutemp;
+        }
+      __Knu = __Kmu;
+      __Kpnu = __nu * __xi * __Kmu - __Knu1;
+  
+      return;
+    }
+
+
+    /**
+     *   @brief  Return the regular modified Bessel function of order
+     *           \f$ \nu \f$: \f$ I_{\nu}(x) \f$.
+     *
+     *   The regular modified cylindrical Bessel function is:
+     *   @f[
+     *    I_{\nu}(x) = \sum_{k=0}^{\infty}
+     *              \frac{(x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)}
+     *   @f]
+     *
+     *   @param  __nu  The order of the regular modified Bessel function.
+     *   @param  __x   The argument of the regular modified Bessel function.
+     *   @return  The output regular modified Bessel function.
+     */
+    template<typename _Tp>
+    _Tp
+    __cyl_bessel_i(const _Tp __nu, const _Tp __x)
+    {
+      if (__nu < _Tp(0) || __x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __cyl_bessel_i."));
+      else if (__isnan(__nu) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x * __x < _Tp(10) * (__nu + _Tp(1)))
+        return __cyl_bessel_ij_series(__nu, __x, +_Tp(1), 200);
+      else
+        {
+          _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu;
+          __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
+          return __I_nu;
+        }
+    }
+
+
+    /**
+     *   @brief  Return the irregular modified Bessel function
+     *           \f$ K_{\nu}(x) \f$ of order \f$ \nu \f$.
+     *
+     *   The irregular modified Bessel function is defined by:
+     *   @f[
+     *      K_{\nu}(x) = \frac{\pi}{2}
+     *                   \frac{I_{-\nu}(x) - I_{\nu}(x)}{\sin \nu\pi}
+     *   @f]
+     *   where for integral \f$ \nu = n \f$ a limit is taken:
+     *   \f$ lim_{\nu \to n} \f$.
+     *
+     *   @param  __nu  The order of the irregular modified Bessel function.
+     *   @param  __x   The argument of the irregular modified Bessel function.
+     *   @return  The output irregular modified Bessel function.
+     */
+    template<typename _Tp>
+    _Tp
+    __cyl_bessel_k(const _Tp __nu, const _Tp __x)
+    {
+      if (__nu < _Tp(0) || __x < _Tp(0))
+        std::__throw_domain_error(__N("Bad argument "
+                                      "in __cyl_bessel_k."));
+      else if (__isnan(__nu) || __isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        {
+          _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu;
+          __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
+          return __K_nu;
+        }
+    }
+
+
+    /**
+     *   @brief  Compute the spherical modified Bessel functions
+     *           @f$ i_n(x) @f$ and @f$ k_n(x) @f$ and their first
+     *           derivatives @f$ i'_n(x) @f$ and @f$ k'_n(x) @f$
+     *           respectively.
+     *
+     *   @param  __n  The order of the modified spherical Bessel function.
+     *   @param  __x  The argument of the modified spherical Bessel function.
+     *   @param  __i_n  The output regular modified spherical Bessel function.
+     *   @param  __k_n  The output irregular modified spherical
+     *                  Bessel function.
+     *   @param  __ip_n  The output derivative of the regular modified
+     *                   spherical Bessel function.
+     *   @param  __kp_n  The output derivative of the irregular modified
+     *                   spherical Bessel function.
+     */
+    template <typename _Tp>
+    void
+    __sph_bessel_ik(const unsigned int __n, const _Tp __x,
+                    _Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n)
+    {
+      const _Tp __nu = _Tp(__n) + _Tp(0.5L);
+
+      _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu;
+      __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
+
+      const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2()
+                         / std::sqrt(__x);
+
+      __i_n = __factor * __I_nu;
+      __k_n = __factor * __K_nu;
+      __ip_n = __factor * __Ip_nu - __i_n / (_Tp(2) * __x);
+      __kp_n = __factor * __Kp_nu - __k_n / (_Tp(2) * __x);
+
+      return;
+    }
+
+
+    /**
+     *   @brief  Compute the Airy functions
+     *           @f$ Ai(x) @f$ and @f$ Bi(x) @f$ and their first
+     *           derivatives @f$ Ai'(x) @f$ and @f$ Bi(x) @f$
+     *           respectively.
+     *
+     *   @param  __n  The order of the Airy functions.
+     *   @param  __x  The argument of the Airy functions.
+     *   @param  __i_n  The output Airy function.
+     *   @param  __k_n  The output Airy function.
+     *   @param  __ip_n  The output derivative of the Airy function.
+     *   @param  __kp_n  The output derivative of the Airy function.
+     */
+    template <typename _Tp>
+    void
+    __airy(const _Tp __x,
+           _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip)
+    {
+      const _Tp __absx = std::abs(__x);
+      const _Tp __rootx = std::sqrt(__absx);
+      const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3);
+
+      if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__x > _Tp(0))
+        {
+          _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu;
+
+          __bessel_ik(_Tp(1) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
+          __Ai = __rootx * __K_nu
+               / (__numeric_constants<_Tp>::__sqrt3()
+                * __numeric_constants<_Tp>::__pi());
+          __Bi = __rootx * (__K_nu / __numeric_constants<_Tp>::__pi()
+                 + _Tp(2) * __I_nu / __numeric_constants<_Tp>::__sqrt3());
+
+          __bessel_ik(_Tp(2) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
+          __Aip = -__x * __K_nu
+                / (__numeric_constants<_Tp>::__sqrt3()
+                 * __numeric_constants<_Tp>::__pi());
+          __Bip = __x * (__K_nu / __numeric_constants<_Tp>::__pi()
+                      + _Tp(2) * __I_nu
+                      / __numeric_constants<_Tp>::__sqrt3());
+        }
+      else if (__x < _Tp(0))
+        {
+          _Tp __J_nu, __Jp_nu, __N_nu, __Np_nu;
+
+          __bessel_jn(_Tp(1) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu);
+          __Ai = __rootx * (__J_nu
+                    - __N_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2);
+          __Bi = -__rootx * (__N_nu
+                    + __J_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2);
+
+          __bessel_jn(_Tp(2) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu);
+          __Aip = __absx * (__N_nu / __numeric_constants<_Tp>::__sqrt3()
+                          + __J_nu) / _Tp(2);
+          __Bip = __absx * (__J_nu / __numeric_constants<_Tp>::__sqrt3()
+                          - __N_nu) / _Tp(2);
+        }
+      else
+        {
+          //  Reference:
+          //    Abramowitz & Stegun, page 446 section 10.4.4 on Airy functions.
+          //  The number is Ai(0) = 3^{-2/3}/\Gamma(2/3).
+          __Ai = _Tp(0.35502805388781723926L);
+          __Bi = __Ai * __numeric_constants<_Tp>::__sqrt3();
+
+          //  Reference:
+          //    Abramowitz & Stegun, page 446 section 10.4.5 on Airy functions.
+          //  The number is Ai'(0) = -3^{-1/3}/\Gamma(1/3).
+          __Aip = -_Tp(0.25881940379280679840L);
+          __Bip = -__Aip * __numeric_constants<_Tp>::__sqrt3();
+        }
+
+      return;
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_MODIFIED_BESSEL_FUNC_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_hermite.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_hermite.tcc
new file mode 100644
index 000000000..e86b3777c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_hermite.tcc
@@ -0,0 +1,125 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/poly_hermite.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       Ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications, Section 22 pp. 773-802
+
+#ifndef _GLIBCXX_TR1_POLY_HERMITE_TCC
+#define _GLIBCXX_TR1_POLY_HERMITE_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief This routine returns the Hermite polynomial
+     *          of order n: \f$ H_n(x) \f$ by recursion on n.
+     * 
+     *   The Hermite polynomial is defined by:
+     *   @f[
+     *     H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2}
+     *   @f]
+     *
+     *   @param __n The order of the Hermite polynomial.
+     *   @param __x The argument of the Hermite polynomial.
+     *   @return The value of the Hermite polynomial of order n
+     *           and argument x.
+     */
+    template<typename _Tp>
+    _Tp
+    __poly_hermite_recursion(const unsigned int __n, const _Tp __x)
+    {
+      //  Compute H_0.
+      _Tp __H_0 = 1;
+      if (__n == 0)
+        return __H_0;
+
+      //  Compute H_1.
+      _Tp __H_1 = 2 * __x;
+      if (__n == 1)
+        return __H_1;
+
+      //  Compute H_n.
+      _Tp __H_n, __H_nm1, __H_nm2;
+      unsigned int __i;
+      for  (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i)
+        {
+          __H_n = 2 * (__x * __H_nm1 + (__i - 1) * __H_nm2);
+          __H_nm2 = __H_nm1;
+          __H_nm1 = __H_n;
+        }
+
+      return __H_n;
+    }
+
+
+    /**
+     *   @brief This routine returns the Hermite polynomial
+     *          of order n: \f$ H_n(x) \f$.
+     * 
+     *   The Hermite polynomial is defined by:
+     *   @f[
+     *     H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2}
+     *   @f]
+     *
+     *   @param __n The order of the Hermite polynomial.
+     *   @param __x The argument of the Hermite polynomial.
+     *   @return The value of the Hermite polynomial of order n
+     *           and argument x.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __poly_hermite(const unsigned int __n, const _Tp __x)
+    {
+      if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else
+        return __poly_hermite_recursion(__n, __x);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_POLY_HERMITE_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_laguerre.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_laguerre.tcc
new file mode 100644
index 000000000..769923d34
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/poly_laguerre.tcc
@@ -0,0 +1,329 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/poly_laguerre.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       Ed. Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications,
+//       Section 13, pp. 509-510, Section 22 pp. 773-802
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+
+#ifndef _GLIBCXX_TR1_POLY_LAGUERRE_TCC
+#define _GLIBCXX_TR1_POLY_LAGUERRE_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief This routine returns the associated Laguerre polynomial 
+     *          of order @f$ n @f$, degree @f$ \alpha @f$ for large n.
+     *   Abramowitz & Stegun, 13.5.21
+     *
+     *   @param __n The order of the Laguerre function.
+     *   @param __alpha The degree of the Laguerre function.
+     *   @param __x The argument of the Laguerre function.
+     *   @return The value of the Laguerre function of order n,
+     *           degree @f$ \alpha @f$, and argument x.
+     *
+     *  This is from the GNU Scientific Library.
+     */
+    template<typename _Tpa, typename _Tp>
+    _Tp
+    __poly_laguerre_large_n(const unsigned __n, const _Tpa __alpha1,
+                            const _Tp __x)
+    {
+      const _Tp __a = -_Tp(__n);
+      const _Tp __b = _Tp(__alpha1) + _Tp(1);
+      const _Tp __eta = _Tp(2) * __b - _Tp(4) * __a;
+      const _Tp __cos2th = __x / __eta;
+      const _Tp __sin2th = _Tp(1) - __cos2th;
+      const _Tp __th = std::acos(std::sqrt(__cos2th));
+      const _Tp __pre_h = __numeric_constants<_Tp>::__pi_2()
+                        * __numeric_constants<_Tp>::__pi_2()
+                        * __eta * __eta * __cos2th * __sin2th;
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+      const _Tp __lg_b = std::tr1::lgamma(_Tp(__n) + __b);
+      const _Tp __lnfact = std::tr1::lgamma(_Tp(__n + 1));
+#else
+      const _Tp __lg_b = __log_gamma(_Tp(__n) + __b);
+      const _Tp __lnfact = __log_gamma(_Tp(__n + 1));
+#endif
+
+      _Tp __pre_term1 = _Tp(0.5L) * (_Tp(1) - __b)
+                      * std::log(_Tp(0.25L) * __x * __eta);
+      _Tp __pre_term2 = _Tp(0.25L) * std::log(__pre_h);
+      _Tp __lnpre = __lg_b - __lnfact + _Tp(0.5L) * __x
+                      + __pre_term1 - __pre_term2;
+      _Tp __ser_term1 = std::sin(__a * __numeric_constants<_Tp>::__pi());
+      _Tp __ser_term2 = std::sin(_Tp(0.25L) * __eta
+                              * (_Tp(2) * __th
+                               - std::sin(_Tp(2) * __th))
+                               + __numeric_constants<_Tp>::__pi_4());
+      _Tp __ser = __ser_term1 + __ser_term2;
+
+      return std::exp(__lnpre) * __ser;
+    }
+
+
+    /**
+     *  @brief  Evaluate the polynomial based on the confluent hypergeometric
+     *          function in a safe way, with no restriction on the arguments.
+     *
+     *   The associated Laguerre function is defined by
+     *   @f[
+     *       L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!}
+     *                       _1F_1(-n; \alpha + 1; x)
+     *   @f]
+     *   where @f$ (\alpha)_n @f$ is the Pochhammer symbol and
+     *   @f$ _1F_1(a; c; x) @f$ is the confluent hypergeometric function.
+     *
+     *  This function assumes x != 0.
+     *
+     *  This is from the GNU Scientific Library.
+     */
+    template<typename _Tpa, typename _Tp>
+    _Tp
+    __poly_laguerre_hyperg(const unsigned int __n, const _Tpa __alpha1,
+			   const _Tp __x)
+    {
+      const _Tp __b = _Tp(__alpha1) + _Tp(1);
+      const _Tp __mx = -__x;
+      const _Tp __tc_sgn = (__x < _Tp(0) ? _Tp(1)
+                         : ((__n % 2 == 1) ? -_Tp(1) : _Tp(1)));
+      //  Get |x|^n/n!
+      _Tp __tc = _Tp(1);
+      const _Tp __ax = std::abs(__x);
+      for (unsigned int __k = 1; __k <= __n; ++__k)
+        __tc *= (__ax / __k);
+
+      _Tp __term = __tc * __tc_sgn;
+      _Tp __sum = __term;
+      for (int __k = int(__n) - 1; __k >= 0; --__k)
+        {
+          __term *= ((__b + _Tp(__k)) / _Tp(int(__n) - __k))
+                  * _Tp(__k + 1) / __mx;
+          __sum += __term;
+        }
+
+      return __sum;
+    }
+
+
+    /**
+     *   @brief This routine returns the associated Laguerre polynomial 
+     *          of order @f$ n @f$, degree @f$ \alpha @f$: @f$ L_n^\alpha(x) @f$
+     *          by recursion.
+     *
+     *   The associated Laguerre function is defined by
+     *   @f[
+     *       L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!}
+     *                       _1F_1(-n; \alpha + 1; x)
+     *   @f]
+     *   where @f$ (\alpha)_n @f$ is the Pochhammer symbol and
+     *   @f$ _1F_1(a; c; x) @f$ is the confluent hypergeometric function.
+     *
+     *   The associated Laguerre polynomial is defined for integral
+     *   @f$ \alpha = m @f$ by:
+     *   @f[
+     *       L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x)
+     *   @f]
+     *   where the Laguerre polynomial is defined by:
+     *   @f[
+     *       L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+     *   @f]
+     *
+     *   @param __n The order of the Laguerre function.
+     *   @param __alpha The degree of the Laguerre function.
+     *   @param __x The argument of the Laguerre function.
+     *   @return The value of the Laguerre function of order n,
+     *           degree @f$ \alpha @f$, and argument x.
+     */
+    template<typename _Tpa, typename _Tp>
+    _Tp
+    __poly_laguerre_recursion(const unsigned int __n,
+                              const _Tpa __alpha1, const _Tp __x)
+    {
+      //   Compute l_0.
+      _Tp __l_0 = _Tp(1);
+      if  (__n == 0)
+        return __l_0;
+
+      //  Compute l_1^alpha.
+      _Tp __l_1 = -__x + _Tp(1) + _Tp(__alpha1);
+      if  (__n == 1)
+        return __l_1;
+
+      //  Compute l_n^alpha by recursion on n.
+      _Tp __l_n2 = __l_0;
+      _Tp __l_n1 = __l_1;
+      _Tp __l_n = _Tp(0);
+      for  (unsigned int __nn = 2; __nn <= __n; ++__nn)
+        {
+            __l_n = (_Tp(2 * __nn - 1) + _Tp(__alpha1) - __x)
+                  * __l_n1 / _Tp(__nn)
+                  - (_Tp(__nn - 1) + _Tp(__alpha1)) * __l_n2 / _Tp(__nn);
+            __l_n2 = __l_n1;
+            __l_n1 = __l_n;
+        }
+
+      return __l_n;
+    }
+
+
+    /**
+     *   @brief This routine returns the associated Laguerre polynomial
+     *          of order n, degree @f$ \alpha @f$: @f$ L_n^alpha(x) @f$.
+     *
+     *   The associated Laguerre function is defined by
+     *   @f[
+     *       L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!}
+     *                       _1F_1(-n; \alpha + 1; x)
+     *   @f]
+     *   where @f$ (\alpha)_n @f$ is the Pochhammer symbol and
+     *   @f$ _1F_1(a; c; x) @f$ is the confluent hypergeometric function.
+     *
+     *   The associated Laguerre polynomial is defined for integral
+     *   @f$ \alpha = m @f$ by:
+     *   @f[
+     *       L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x)
+     *   @f]
+     *   where the Laguerre polynomial is defined by:
+     *   @f[
+     *       L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+     *   @f]
+     *
+     *   @param __n The order of the Laguerre function.
+     *   @param __alpha The degree of the Laguerre function.
+     *   @param __x The argument of the Laguerre function.
+     *   @return The value of the Laguerre function of order n,
+     *           degree @f$ \alpha @f$, and argument x.
+     */
+    template<typename _Tpa, typename _Tp>
+    inline _Tp
+    __poly_laguerre(const unsigned int __n, const _Tpa __alpha1,
+                    const _Tp __x)
+    {
+      if (__x < _Tp(0))
+        std::__throw_domain_error(__N("Negative argument "
+                                      "in __poly_laguerre."));
+      //  Return NaN on NaN input.
+      else if (__isnan(__x))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__n == 0)
+        return _Tp(1);
+      else if (__n == 1)
+        return _Tp(1) + _Tp(__alpha1) - __x;
+      else if (__x == _Tp(0))
+        {
+          _Tp __prod = _Tp(__alpha1) + _Tp(1);
+          for (unsigned int __k = 2; __k <= __n; ++__k)
+            __prod *= (_Tp(__alpha1) + _Tp(__k)) / _Tp(__k);
+          return __prod;
+        }
+      else if (__n > 10000000 && _Tp(__alpha1) > -_Tp(1)
+            && __x < _Tp(2) * (_Tp(__alpha1) + _Tp(1)) + _Tp(4 * __n))
+        return __poly_laguerre_large_n(__n, __alpha1, __x);
+      else if (_Tp(__alpha1) >= _Tp(0)
+           || (__x > _Tp(0) && _Tp(__alpha1) < -_Tp(__n + 1)))
+        return __poly_laguerre_recursion(__n, __alpha1, __x);
+      else
+        return __poly_laguerre_hyperg(__n, __alpha1, __x);
+    }
+
+
+    /**
+     *   @brief This routine returns the associated Laguerre polynomial
+     *          of order n, degree m: @f$ L_n^m(x) @f$.
+     *
+     *   The associated Laguerre polynomial is defined for integral
+     *   @f$ \alpha = m @f$ by:
+     *   @f[
+     *       L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x)
+     *   @f]
+     *   where the Laguerre polynomial is defined by:
+     *   @f[
+     *       L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+     *   @f]
+     *
+     *   @param __n The order of the Laguerre polynomial.
+     *   @param __m The degree of the Laguerre polynomial.
+     *   @param __x The argument of the Laguerre polynomial.
+     *   @return The value of the associated Laguerre polynomial of order n,
+     *           degree m, and argument x.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __assoc_laguerre(const unsigned int __n, const unsigned int __m,
+                     const _Tp __x)
+    {
+      return __poly_laguerre<unsigned int, _Tp>(__n, __m, __x);
+    }
+
+
+    /**
+     *   @brief This routine returns the Laguerre polynomial
+     *          of order n: @f$ L_n(x) @f$.
+     *
+     *   The Laguerre polynomial is defined by:
+     *   @f[
+     *       L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x})
+     *   @f]
+     *
+     *   @param __n The order of the Laguerre polynomial.
+     *   @param __x The argument of the Laguerre polynomial.
+     *   @return The value of the Laguerre polynomial of order n
+     *           and argument x.
+     */
+    template<typename _Tp>
+    inline _Tp
+    __laguerre(const unsigned int __n, const _Tp __x)
+    {
+      return __poly_laguerre<unsigned int, _Tp>(__n, 0, __x);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_POLY_LAGUERRE_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random
new file mode 100644
index 000000000..55926479a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random
@@ -0,0 +1,50 @@
+// random number generation -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file tr1/random
+ * This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_RANDOM
+#define _GLIBCXX_TR1_RANDOM 1
+
+#pragma GCC system_header
+
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+#include <iosfwd>
+#include <limits>
+#include <ext/type_traits.h>
+#include <ext/numeric_traits.h>
+#include <bits/concept_check.h>
+#include <debug/debug.h>
+#include <tr1/type_traits>
+#include <tr1/cmath>
+#include <tr1/random.h>
+#include <tr1/random.tcc>
+
+#endif // _GLIBCXX_TR1_RANDOM
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.h
new file mode 100644
index 000000000..ace37929a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.h
@@ -0,0 +1,2417 @@
+// random number generation -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file tr1/random.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/random}
+ */
+
+#ifndef _GLIBCXX_TR1_RANDOM_H
+#define _GLIBCXX_TR1_RANDOM_H 1
+
+#pragma GCC system_header
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.1] Random number generation
+
+  /**
+   * @addtogroup tr1_random Random Number Generation
+   * A facility for generating random numbers on selected distributions.
+   * @{
+   */
+
+  /*
+   * Implementation-space details.
+   */
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    template<typename _UIntType, int __w, 
+	     bool = __w < std::numeric_limits<_UIntType>::digits>
+      struct _Shift
+      { static const _UIntType __value = 0; };
+
+    template<typename _UIntType, int __w>
+      struct _Shift<_UIntType, __w, true>
+      { static const _UIntType __value = _UIntType(1) << __w; };
+
+    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m, bool>
+      struct _Mod;
+
+    // Dispatch based on modulus value to prevent divide-by-zero compile-time
+    // errors when m == 0.
+    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m>
+      inline _Tp
+      __mod(_Tp __x)
+      { return _Mod<_Tp, __a, __c, __m, __m == 0>::__calc(__x); }
+
+    typedef __gnu_cxx::__conditional_type<(sizeof(unsigned) == 4),
+		    unsigned, unsigned long>::__type _UInt32Type;
+
+    /*
+     * An adaptor class for converting the output of any Generator into
+     * the input for a specific Distribution.
+     */
+    template<typename _Engine, typename _Distribution>
+      struct _Adaptor
+      { 
+	typedef typename remove_reference<_Engine>::type _BEngine;
+	typedef typename _BEngine::result_type           _Engine_result_type;
+	typedef typename _Distribution::input_type       result_type;
+
+      public:
+	_Adaptor(const _Engine& __g)
+	: _M_g(__g) { }
+
+	result_type
+	min() const
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = _M_g.min();
+	  else
+	    __return_value = result_type(0);
+	  return __return_value;
+	}
+
+	result_type
+	max() const
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = _M_g.max();
+	  else if (!is_integral<result_type>::value)
+	    __return_value = result_type(1);
+	  else
+	    __return_value = std::numeric_limits<result_type>::max() - 1;
+	  return __return_value;
+	}
+
+	/*
+	 * Converts a value generated by the adapted random number generator
+	 * into a value in the input domain for the dependent random number
+	 * distribution.
+	 *
+	 * Because the type traits are compile time constants only the
+	 * appropriate clause of the if statements will actually be emitted
+	 * by the compiler.
+	 */
+	result_type
+	operator()()
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = _M_g();
+	  else if (!is_integral<_Engine_result_type>::value
+		   && !is_integral<result_type>::value)
+	    __return_value = result_type(_M_g() - _M_g.min())
+	      / result_type(_M_g.max() - _M_g.min());
+	  else if (is_integral<_Engine_result_type>::value
+		   && !is_integral<result_type>::value)
+	    __return_value = result_type(_M_g() - _M_g.min())
+	      / result_type(_M_g.max() - _M_g.min() + result_type(1));
+	  else
+	    __return_value = (((_M_g() - _M_g.min()) 
+			       / (_M_g.max() - _M_g.min()))
+			      * std::numeric_limits<result_type>::max());
+	  return __return_value;
+	}
+
+      private:
+	_Engine _M_g;
+      };
+
+    // Specialization for _Engine*.
+    template<typename _Engine, typename _Distribution>
+      struct _Adaptor<_Engine*, _Distribution>
+      {
+	typedef typename _Engine::result_type      _Engine_result_type;
+	typedef typename _Distribution::input_type result_type;
+
+      public:
+	_Adaptor(_Engine* __g)
+	: _M_g(__g) { }
+
+	result_type
+	min() const
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = _M_g->min();
+	  else
+	    __return_value = result_type(0);
+	  return __return_value;
+	}
+
+	result_type
+	max() const
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = _M_g->max();
+	  else if (!is_integral<result_type>::value)
+	    __return_value = result_type(1);
+	  else
+	    __return_value = std::numeric_limits<result_type>::max() - 1;
+	  return __return_value;
+	}
+
+	result_type
+	operator()()
+	{
+	  result_type __return_value;
+	  if (is_integral<_Engine_result_type>::value
+	      && is_integral<result_type>::value)
+	    __return_value = (*_M_g)();
+	  else if (!is_integral<_Engine_result_type>::value
+		   && !is_integral<result_type>::value)
+	    __return_value = result_type((*_M_g)() - _M_g->min())
+	      / result_type(_M_g->max() - _M_g->min());
+	  else if (is_integral<_Engine_result_type>::value
+		   && !is_integral<result_type>::value)
+	    __return_value = result_type((*_M_g)() - _M_g->min())
+	      / result_type(_M_g->max() - _M_g->min() + result_type(1));
+	  else
+	    __return_value = ((((*_M_g)() - _M_g->min()) 
+			       / (_M_g->max() - _M_g->min()))
+			      * std::numeric_limits<result_type>::max());
+	  return __return_value;
+	}
+
+      private:
+	_Engine* _M_g;
+      };
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * Produces random numbers on a given distribution function using a
+   * non-uniform random number generation engine.
+   *
+   * @todo the engine_value_type needs to be studied more carefully.
+   */
+  template<typename _Engine, typename _Dist>
+    class variate_generator
+    {
+      // Concept requirements.
+      __glibcxx_class_requires(_Engine, _CopyConstructibleConcept)
+      //  __glibcxx_class_requires(_Engine, _EngineConcept)
+      //  __glibcxx_class_requires(_Dist, _EngineConcept)
+
+    public:
+      typedef _Engine                                engine_type;
+      typedef __detail::_Adaptor<_Engine, _Dist>     engine_value_type;
+      typedef _Dist                                  distribution_type;
+      typedef typename _Dist::result_type            result_type;
+
+      // tr1:5.1.1 table 5.1 requirement
+      typedef typename __gnu_cxx::__enable_if<
+	is_arithmetic<result_type>::value, result_type>::__type _IsValidType;
+
+      /**
+       * Constructs a variate generator with the uniform random number
+       * generator @p __eng for the random distribution @p __dist.
+       *
+       * @throws Any exceptions which may thrown by the copy constructors of
+       * the @p _Engine or @p _Dist objects.
+       */
+      variate_generator(engine_type __eng, distribution_type __dist)
+      : _M_engine(__eng), _M_dist(__dist) { }
+
+      /**
+       * Gets the next generated value on the distribution.
+       */
+      result_type
+      operator()()
+      { return _M_dist(_M_engine); }
+
+      /**
+       * WTF?
+       */
+      template<typename _Tp>
+        result_type
+        operator()(_Tp __value)
+        { return _M_dist(_M_engine, __value); }
+
+      /**
+       * Gets a reference to the underlying uniform random number generator
+       * object.
+       */
+      engine_value_type&
+      engine()
+      { return _M_engine; }
+
+      /**
+       * Gets a const reference to the underlying uniform random number
+       * generator object.
+       */
+      const engine_value_type&
+      engine() const
+      { return _M_engine; }
+
+      /**
+       * Gets a reference to the underlying random distribution.
+       */
+      distribution_type&
+      distribution()
+      { return _M_dist; }
+
+      /**
+       * Gets a const reference to the underlying random distribution.
+       */
+      const distribution_type&
+      distribution() const
+      { return _M_dist; }
+
+      /**
+       * Gets the closed lower bound of the distribution interval.
+       */
+      result_type
+      min() const
+      { return this->distribution().min(); }
+
+      /**
+       * Gets the closed upper bound of the distribution interval.
+       */
+      result_type
+      max() const
+      { return this->distribution().max(); }
+
+    private:
+      engine_value_type _M_engine;
+      distribution_type _M_dist;
+    };
+
+
+  /**
+   * @addtogroup tr1_random_generators Random Number Generators
+   * @ingroup tr1_random
+   *
+   * These classes define objects which provide random or pseudorandom
+   * numbers, either from a discrete or a continuous interval.  The
+   * random number generator supplied as a part of this library are
+   * all uniform random number generators which provide a sequence of
+   * random number uniformly distributed over their range.
+   *
+   * A number generator is a function object with an operator() that
+   * takes zero arguments and returns a number.
+   *
+   * A compliant random number generator must satisfy the following
+   * requirements.  <table border=1 cellpadding=10 cellspacing=0>
+   * <caption align=top>Random Number Generator Requirements</caption>
+   * <tr><td>To be documented.</td></tr> </table>
+   * 
+   * @{
+   */
+
+  /**
+   * @brief A model of a linear congruential random number generator.
+   *
+   * A random number generator that produces pseudorandom numbers using the
+   * linear function @f$x_{i+1}\leftarrow(ax_{i} + c) \bmod m @f$.
+   *
+   * The template parameter @p _UIntType must be an unsigned integral type
+   * large enough to store values up to (__m-1). If the template parameter
+   * @p __m is 0, the modulus @p __m used is
+   * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template
+   * parameters @p __a and @p __c must be less than @p __m.
+   *
+   * The size of the state is @f$ 1 @f$.
+   */
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    class linear_congruential
+    {
+      __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
+      //  __glibcpp_class_requires(__a < __m && __c < __m)
+
+    public:
+      /** The type of the generated random value. */
+      typedef _UIntType result_type;
+
+      /** The multiplier. */
+      static const _UIntType multiplier = __a;
+      /** An increment. */
+      static const _UIntType increment = __c;
+      /** The modulus. */
+      static const _UIntType modulus = __m;
+
+      /**
+       * Constructs a %linear_congruential random number generator engine with
+       * seed @p __s.  The default seed value is 1.
+       *
+       * @param __s The initial seed value.
+       */
+      explicit
+      linear_congruential(unsigned long __x0 = 1)
+      { this->seed(__x0); }
+
+      /**
+       * Constructs a %linear_congruential random number generator engine
+       * seeded from the generator function @p __g.
+       *
+       * @param __g The seed generator function.
+       */
+      template<class _Gen>
+        linear_congruential(_Gen& __g)
+        { this->seed(__g); }
+
+      /**
+       * Reseeds the %linear_congruential random number generator engine
+       * sequence to the seed @g __s.
+       *
+       * @param __s The new seed.
+       */
+      void
+      seed(unsigned long __s = 1);
+
+      /**
+       * Reseeds the %linear_congruential random number generator engine
+       * sequence using values from the generator function @p __g.
+       *
+       * @param __g the seed generator function.
+       */
+      template<class _Gen>
+        void
+        seed(_Gen& __g)
+        { seed(__g, typename is_fundamental<_Gen>::type()); }
+
+      /**
+       * Gets the smallest possible value in the output range.
+       *
+       * The minimum depends on the @p __c parameter: if it is zero, the
+       * minimum generated must be > 0, otherwise 0 is allowed.
+       */
+      result_type
+      min() const
+      { return (__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) ? 1 : 0; }
+
+      /**
+       * Gets the largest possible value in the output range.
+       */
+      result_type
+      max() const
+      { return __m - 1; }
+
+      /**
+       * Gets the next random number in the sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * Compares two linear congruential random number generator
+       * objects of the same type for equality.
+       *  
+       * @param __lhs A linear congruential random number generator object.
+       * @param __rhs Another linear congruential random number generator obj.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const linear_congruential& __lhs,
+		 const linear_congruential& __rhs)
+      { return __lhs._M_x == __rhs._M_x; }
+
+      /**
+       * Compares two linear congruential random number generator
+       * objects of the same type for inequality.
+       *
+       * @param __lhs A linear congruential random number generator object.
+       * @param __rhs Another linear congruential random number generator obj.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const linear_congruential& __lhs,
+		 const linear_congruential& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Writes the textual representation of the state x(i) of x to @p __os.
+       *
+       * @param __os  The output stream.
+       * @param __lcr A % linear_congruential random number generator.
+       * @returns __os.
+       */
+      template<class _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
+	       _UIntType1 __m1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const linear_congruential<_UIntType1, __a1, __c1,
+		   __m1>& __lcr);
+
+      /**
+       * Sets the state of the engine by reading its textual
+       * representation from @p __is.
+       *
+       * The textual representation must have been previously written using an
+       * output stream whose imbued locale and whose type's template
+       * specialization arguments _CharT and _Traits were the same as those of
+       * @p __is.
+       *
+       * @param __is  The input stream.
+       * @param __lcr A % linear_congruential random number generator.
+       * @returns __is.
+       */
+      template<class _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
+	       _UIntType1 __m1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   linear_congruential<_UIntType1, __a1, __c1, __m1>& __lcr);
+
+    private:
+      template<class _Gen>
+        void
+        seed(_Gen& __g, true_type)
+        { return seed(static_cast<unsigned long>(__g)); }
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g, false_type);
+
+      _UIntType _M_x;
+    };
+
+  /**
+   * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.
+   */
+  typedef linear_congruential<unsigned long, 16807, 0, 2147483647> minstd_rand0;
+
+  /**
+   * An alternative LCR (Lehmer Generator function) .
+   */
+  typedef linear_congruential<unsigned long, 48271, 0, 2147483647> minstd_rand;
+
+
+  /**
+   * A generalized feedback shift register discrete random number generator.
+   *
+   * This algorithm avoids multiplication and division and is designed to be
+   * friendly to a pipelined architecture.  If the parameters are chosen
+   * correctly, this generator will produce numbers with a very long period and
+   * fairly good apparent entropy, although still not cryptographically strong.
+   *
+   * The best way to use this generator is with the predefined mt19937 class.
+   *
+   * This algorithm was originally invented by Makoto Matsumoto and
+   * Takuji Nishimura.
+   *
+   * @var word_size   The number of bits in each element of the state vector.
+   * @var state_size  The degree of recursion.
+   * @var shift_size  The period parameter.
+   * @var mask_bits   The separation point bit index.
+   * @var parameter_a The last row of the twist matrix.
+   * @var output_u    The first right-shift tempering matrix parameter.
+   * @var output_s    The first left-shift tempering matrix parameter.
+   * @var output_b    The first left-shift tempering matrix mask.
+   * @var output_t    The second left-shift tempering matrix parameter.
+   * @var output_c    The second left-shift tempering matrix mask.
+   * @var output_l    The second right-shift tempering matrix parameter.
+   */
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s, _UIntType __b, int __t,
+	   _UIntType __c, int __l>
+    class mersenne_twister
+    {
+      __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
+
+    public:
+      // types
+      typedef _UIntType result_type;
+
+      // parameter values
+      static const int       word_size   = __w;
+      static const int       state_size  = __n;
+      static const int       shift_size  = __m;
+      static const int       mask_bits   = __r;
+      static const _UIntType parameter_a = __a;
+      static const int       output_u    = __u;
+      static const int       output_s    = __s;
+      static const _UIntType output_b    = __b;
+      static const int       output_t    = __t;
+      static const _UIntType output_c    = __c;
+      static const int       output_l    = __l;
+
+      // constructors and member function
+      mersenne_twister()
+      { seed(); }
+
+      explicit
+      mersenne_twister(unsigned long __value)
+      { seed(__value); }
+
+      template<class _Gen>
+        mersenne_twister(_Gen& __g)
+        { seed(__g); }
+
+      void
+      seed()
+      { seed(5489UL); }
+
+      void
+      seed(unsigned long __value);
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g)
+        { seed(__g, typename is_fundamental<_Gen>::type()); }
+
+      result_type
+      min() const
+      { return 0; };
+
+      result_type
+      max() const
+      { return __detail::_Shift<_UIntType, __w>::__value - 1; }
+
+      result_type
+      operator()();
+
+      /**
+       * Compares two % mersenne_twister random number generator objects of
+       * the same type for equality.
+       *
+       * @param __lhs A % mersenne_twister random number generator object.
+       * @param __rhs Another % mersenne_twister random number generator
+       *              object.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const mersenne_twister& __lhs,
+		 const mersenne_twister& __rhs)
+      { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); }
+
+      /**
+       * Compares two % mersenne_twister random number generator objects of
+       * the same type for inequality.
+       *
+       * @param __lhs A % mersenne_twister random number generator object.
+       * @param __rhs Another % mersenne_twister random number generator
+       *              object.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const mersenne_twister& __lhs,
+		 const mersenne_twister& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Inserts the current state of a % mersenne_twister random number
+       * generator engine @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A % mersenne_twister random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<class _UIntType1, int __w1, int __n1, int __m1, int __r1,
+	       _UIntType1 __a1, int __u1, int __s1, _UIntType1 __b1, int __t1,
+	       _UIntType1 __c1, int __l1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1,
+		   __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x);
+
+      /**
+       * Extracts the current state of a % mersenne_twister random number
+       * generator engine @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A % mersenne_twister random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<class _UIntType1, int __w1, int __n1, int __m1, int __r1,
+	       _UIntType1 __a1, int __u1, int __s1, _UIntType1 __b1, int __t1,
+	       _UIntType1 __c1, int __l1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1,
+		   __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x);
+
+    private:
+      template<class _Gen>
+        void
+        seed(_Gen& __g, true_type)
+        { return seed(static_cast<unsigned long>(__g)); }
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g, false_type);
+
+      _UIntType _M_x[state_size];
+      int       _M_p;
+    };
+
+  /**
+   * The classic Mersenne Twister.
+   *
+   * Reference:
+   * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally
+   * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions
+   * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
+   */
+  typedef mersenne_twister<
+    unsigned long, 32, 624, 397, 31,
+    0x9908b0dful, 11, 7,
+    0x9d2c5680ul, 15,
+    0xefc60000ul, 18
+    > mt19937;
+
+
+  /**
+   * @brief The Marsaglia-Zaman generator.
+   * 
+   * This is a model of a Generalized Fibonacci discrete random number
+   * generator, sometimes referred to as the SWC generator.
+   *
+   * A discrete random number generator that produces pseudorandom
+   * numbers using @f$x_{i}\leftarrow(x_{i - s} - x_{i - r} -
+   * carry_{i-1}) \bmod m @f$.
+   *
+   * The size of the state is @f$ r @f$
+   * and the maximum period of the generator is @f$ m^r - m^s -1 @f$.
+   *
+   * N1688[4.13] says <em>the template parameter _IntType shall denote
+   * an integral type large enough to store values up to m</em>.
+   *
+   * @var _M_x     The state of the generator.  This is a ring buffer.
+   * @var _M_carry The carry.
+   * @var _M_p     Current index of x(i - r).
+   */
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    class subtract_with_carry
+    {
+      __glibcxx_class_requires(_IntType, _IntegerConcept)
+
+    public:
+      /** The type of the generated random value. */
+      typedef _IntType result_type;
+      
+      // parameter values
+      static const _IntType modulus   = __m;
+      static const int      long_lag  = __r;
+      static const int      short_lag = __s;
+
+      /**
+       * Constructs a default-initialized % subtract_with_carry random number
+       * generator.
+       */
+      subtract_with_carry()
+      { this->seed(); }
+
+      /**
+       * Constructs an explicitly seeded % subtract_with_carry random number
+       * generator.
+       */
+      explicit
+      subtract_with_carry(unsigned long __value)
+      { this->seed(__value); }
+
+      /**
+       * Constructs a %subtract_with_carry random number generator engine
+       * seeded from the generator function @p __g.
+       *
+       * @param __g The seed generator function.
+       */
+      template<class _Gen>
+        subtract_with_carry(_Gen& __g)
+        { this->seed(__g); }
+
+      /**
+       * Seeds the initial state @f$ x_0 @f$ of the random number generator.
+       *
+       * N1688[4.19] modifies this as follows.  If @p __value == 0,
+       * sets value to 19780503.  In any case, with a linear
+       * congruential generator lcg(i) having parameters @f$ m_{lcg} =
+       * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value
+       * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m
+       * \dots lcg(r) \bmod m @f$ respectively.  If @f$ x_{-1} = 0 @f$
+       * set carry to 1, otherwise sets carry to 0.
+       */
+      void
+      seed(unsigned long __value = 19780503);
+
+      /**
+       * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry
+       * random number generator.
+       */
+      template<class _Gen>
+        void
+        seed(_Gen& __g)
+        { seed(__g, typename is_fundamental<_Gen>::type()); }
+
+      /**
+       * Gets the inclusive minimum value of the range of random integers
+       * returned by this generator.
+       */
+      result_type
+      min() const
+      { return 0; }
+
+      /**
+       * Gets the inclusive maximum value of the range of random integers
+       * returned by this generator.
+       */
+      result_type
+      max() const
+      { return this->modulus - 1; }
+
+      /**
+       * Gets the next random number in the sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * Compares two % subtract_with_carry random number generator objects of
+       * the same type for equality.
+       *
+       * @param __lhs A % subtract_with_carry random number generator object.
+       * @param __rhs Another % subtract_with_carry random number generator
+       *              object.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const subtract_with_carry& __lhs,
+		 const subtract_with_carry& __rhs)
+      { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); }
+
+      /**
+       * Compares two % subtract_with_carry random number generator objects of
+       * the same type for inequality.
+       *
+       * @param __lhs A % subtract_with_carry random number generator object.
+       * @param __rhs Another % subtract_with_carry random number generator
+       *              object.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const subtract_with_carry& __lhs,
+		 const subtract_with_carry& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Inserts the current state of a % subtract_with_carry random number
+       * generator engine @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A % subtract_with_carry random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, _IntType1 __m1, int __s1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const subtract_with_carry<_IntType1, __m1, __s1,
+		   __r1>& __x);
+
+      /**
+       * Extracts the current state of a % subtract_with_carry random number
+       * generator engine @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A % subtract_with_carry random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _IntType1, _IntType1 __m1, int __s1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   subtract_with_carry<_IntType1, __m1, __s1, __r1>& __x);
+
+    private:
+      template<class _Gen>
+        void
+        seed(_Gen& __g, true_type)
+        { return seed(static_cast<unsigned long>(__g)); }
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g, false_type);
+
+      typedef typename __gnu_cxx::__add_unsigned<_IntType>::__type _UIntType;
+
+      _UIntType  _M_x[long_lag];
+      _UIntType  _M_carry;
+      int        _M_p;
+    };
+
+
+  /**
+   * @brief The Marsaglia-Zaman generator (floats version).
+   *
+   * @var _M_x     The state of the generator.  This is a ring buffer.
+   * @var _M_carry The carry.
+   * @var _M_p     Current index of x(i - r).
+   * @var _M_npows Precomputed negative powers of 2.   
+   */
+  template<typename _RealType, int __w, int __s, int __r>
+    class subtract_with_carry_01
+    {
+    public:
+      /** The type of the generated random value. */
+      typedef _RealType result_type;
+      
+      // parameter values
+      static const int      word_size = __w;
+      static const int      long_lag  = __r;
+      static const int      short_lag = __s;
+
+      /**
+       * Constructs a default-initialized % subtract_with_carry_01 random
+       * number generator.
+       */
+      subtract_with_carry_01()
+      {
+	this->seed();
+	_M_initialize_npows();
+      }
+
+      /**
+       * Constructs an explicitly seeded % subtract_with_carry_01 random number
+       * generator.
+       */
+      explicit
+      subtract_with_carry_01(unsigned long __value)
+      {
+	this->seed(__value);
+	_M_initialize_npows();
+      }
+
+      /**
+       * Constructs a % subtract_with_carry_01 random number generator engine
+       * seeded from the generator function @p __g.
+       *
+       * @param __g The seed generator function.
+       */
+      template<class _Gen>
+        subtract_with_carry_01(_Gen& __g)
+        {
+	  this->seed(__g);
+	  _M_initialize_npows();	  
+	}
+
+      /**
+       * Seeds the initial state @f$ x_0 @f$ of the random number generator.
+       */
+      void
+      seed(unsigned long __value = 19780503);
+
+      /**
+       * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry_01
+       * random number generator.
+       */
+      template<class _Gen>
+        void
+        seed(_Gen& __g)
+        { seed(__g, typename is_fundamental<_Gen>::type()); }
+
+      /**
+       * Gets the minimum value of the range of random floats
+       * returned by this generator.
+       */
+      result_type
+      min() const
+      { return 0.0; }
+
+      /**
+       * Gets the maximum value of the range of random floats
+       * returned by this generator.
+       */
+      result_type
+      max() const
+      { return 1.0; }
+
+      /**
+       * Gets the next random number in the sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * Compares two % subtract_with_carry_01 random number generator objects
+       * of the same type for equality.
+       *
+       * @param __lhs A % subtract_with_carry_01 random number
+       *              generator object.
+       * @param __rhs Another % subtract_with_carry_01 random number generator
+       *              object.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const subtract_with_carry_01& __lhs,
+		 const subtract_with_carry_01& __rhs)
+      {
+	for (int __i = 0; __i < long_lag; ++__i)
+	  if (!std::equal(__lhs._M_x[__i], __lhs._M_x[__i] + __n,
+			  __rhs._M_x[__i]))
+	    return false;
+	return true;
+      }
+
+      /**
+       * Compares two % subtract_with_carry_01 random number generator objects
+       * of the same type for inequality.
+       *
+       * @param __lhs A % subtract_with_carry_01 random number
+       *              generator object.
+       *
+       * @param __rhs Another % subtract_with_carry_01 random number generator
+       *              object.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const subtract_with_carry_01& __lhs,
+		 const subtract_with_carry_01& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Inserts the current state of a % subtract_with_carry_01 random number
+       * generator engine @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A % subtract_with_carry_01 random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, int __w1, int __s1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const subtract_with_carry_01<_RealType1, __w1, __s1,
+		   __r1>& __x);
+
+      /**
+       * Extracts the current state of a % subtract_with_carry_01 random number
+       * generator engine @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A % subtract_with_carry_01 random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<typename _RealType1, int __w1, int __s1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   subtract_with_carry_01<_RealType1, __w1, __s1, __r1>& __x);
+
+    private:
+      template<class _Gen>
+        void
+        seed(_Gen& __g, true_type)
+        { return seed(static_cast<unsigned long>(__g)); }
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g, false_type);
+
+      void
+      _M_initialize_npows();
+
+      static const int __n = (__w + 31) / 32;
+
+      typedef __detail::_UInt32Type _UInt32Type;
+      _UInt32Type  _M_x[long_lag][__n];
+      _RealType    _M_npows[__n];
+      _UInt32Type  _M_carry;
+      int          _M_p;
+    };
+
+  typedef subtract_with_carry_01<float, 24, 10, 24>   ranlux_base_01;
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 508. Bad parameters for ranlux64_base_01.
+  typedef subtract_with_carry_01<double, 48, 5, 12> ranlux64_base_01;  
+
+
+  /**
+   * Produces random numbers from some base engine by discarding blocks of
+   * data.
+   *
+   * 0 <= @p __r <= @p __p
+   */
+  template<class _UniformRandomNumberGenerator, int __p, int __r>
+    class discard_block
+    {
+      // __glibcxx_class_requires(typename base_type::result_type,
+      //                          ArithmeticTypeConcept)
+
+    public:
+      /** The type of the underlying generator engine. */
+      typedef _UniformRandomNumberGenerator   base_type;
+      /** The type of the generated random value. */
+      typedef typename base_type::result_type result_type;
+
+      // parameter values
+      static const int block_size = __p;
+      static const int used_block = __r;
+
+      /**
+       * Constructs a default %discard_block engine.
+       *
+       * The underlying engine is default constructed as well.
+       */
+      discard_block()
+      : _M_n(0) { }
+
+      /**
+       * Copy constructs a %discard_block engine.
+       *
+       * Copies an existing base class random number generator.
+       * @param rng An existing (base class) engine object.
+       */
+      explicit
+      discard_block(const base_type& __rng)
+      : _M_b(__rng), _M_n(0) { }
+
+      /**
+       * Seed constructs a %discard_block engine.
+       *
+       * Constructs the underlying generator engine seeded with @p __s.
+       * @param __s A seed value for the base class engine.
+       */
+      explicit
+      discard_block(unsigned long __s)
+      : _M_b(__s), _M_n(0) { }
+
+      /**
+       * Generator construct a %discard_block engine.
+       *
+       * @param __g A seed generator function.
+       */
+      template<class _Gen>
+        discard_block(_Gen& __g)
+	: _M_b(__g), _M_n(0) { }
+
+      /**
+       * Reseeds the %discard_block object with the default seed for the
+       * underlying base class generator engine.
+       */
+      void seed()
+      {
+	_M_b.seed();
+	_M_n = 0;
+      }
+
+      /**
+       * Reseeds the %discard_block object with the given seed generator
+       * function.
+       * @param __g A seed generator function.
+       */
+      template<class _Gen>
+        void seed(_Gen& __g)
+        {
+	  _M_b.seed(__g);
+	  _M_n = 0;
+	}
+
+      /**
+       * Gets a const reference to the underlying generator engine object.
+       */
+      const base_type&
+      base() const
+      { return _M_b; }
+
+      /**
+       * Gets the minimum value in the generated random number range.
+       */
+      result_type
+      min() const
+      { return _M_b.min(); }
+
+      /**
+       * Gets the maximum value in the generated random number range.
+       */
+      result_type
+      max() const
+      { return _M_b.max(); }
+
+      /**
+       * Gets the next value in the generated random number sequence.
+       */
+      result_type
+      operator()();
+
+      /**
+       * Compares two %discard_block random number generator objects of
+       * the same type for equality.
+       *
+       * @param __lhs A %discard_block random number generator object.
+       * @param __rhs Another %discard_block random number generator
+       *              object.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const discard_block& __lhs, const discard_block& __rhs)
+      { return (__lhs._M_b == __rhs._M_b) && (__lhs._M_n == __rhs._M_n); }
+
+      /**
+       * Compares two %discard_block random number generator objects of
+       * the same type for inequality.
+       *
+       * @param __lhs A %discard_block random number generator object.
+       * @param __rhs Another %discard_block random number generator
+       *              object.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const discard_block& __lhs, const discard_block& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Inserts the current state of a %discard_block random number
+       * generator engine @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %discard_block random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<class _UniformRandomNumberGenerator1, int __p1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const discard_block<_UniformRandomNumberGenerator1,
+		   __p1, __r1>& __x);
+
+      /**
+       * Extracts the current state of a % subtract_with_carry random number
+       * generator engine @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %discard_block random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<class _UniformRandomNumberGenerator1, int __p1, int __r1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   discard_block<_UniformRandomNumberGenerator1,
+		   __p1, __r1>& __x);
+
+    private:
+      base_type _M_b;
+      int       _M_n;
+    };
+
+
+  /**
+   * James's luxury-level-3 integer adaptation of Luescher's generator.
+   */
+  typedef discard_block<
+    subtract_with_carry<unsigned long, (1UL << 24), 10, 24>,
+      223,
+      24
+      > ranlux3;
+
+  /**
+   * James's luxury-level-4 integer adaptation of Luescher's generator.
+   */
+  typedef discard_block<
+    subtract_with_carry<unsigned long, (1UL << 24), 10, 24>,
+      389,
+      24
+      > ranlux4;
+
+  typedef discard_block<
+    subtract_with_carry_01<float, 24, 10, 24>,
+      223,
+      24
+      > ranlux3_01;
+
+  typedef discard_block<
+    subtract_with_carry_01<float, 24, 10, 24>,
+      389,
+      24
+      > ranlux4_01;
+
+
+  /**
+   * A random number generator adaptor class that combines two random number
+   * generator engines into a single output sequence.
+   */
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2>
+    class xor_combine
+    {
+      // __glibcxx_class_requires(typename _UniformRandomNumberGenerator1::
+      //                          result_type, ArithmeticTypeConcept)
+      // __glibcxx_class_requires(typename _UniformRandomNumberGenerator2::
+      //                          result_type, ArithmeticTypeConcept)
+
+    public:
+      /** The type of the first underlying generator engine. */
+      typedef _UniformRandomNumberGenerator1   base1_type;
+      /** The type of the second underlying generator engine. */
+      typedef _UniformRandomNumberGenerator2   base2_type;
+
+    private:
+      typedef typename base1_type::result_type _Result_type1;
+      typedef typename base2_type::result_type _Result_type2;
+
+    public:
+      /** The type of the generated random value. */
+      typedef typename __gnu_cxx::__conditional_type<(sizeof(_Result_type1)
+						      > sizeof(_Result_type2)),
+	_Result_type1, _Result_type2>::__type result_type;
+
+      // parameter values
+      static const int shift1 = __s1;
+      static const int shift2 = __s2;
+
+      // constructors and member function
+      xor_combine()
+      : _M_b1(), _M_b2()	
+      { _M_initialize_max(); }
+
+      xor_combine(const base1_type& __rng1, const base2_type& __rng2)
+      : _M_b1(__rng1), _M_b2(__rng2)
+      { _M_initialize_max(); }
+
+      xor_combine(unsigned long __s)
+      : _M_b1(__s), _M_b2(__s + 1)
+      { _M_initialize_max(); }
+
+      template<class _Gen>
+        xor_combine(_Gen& __g)
+	: _M_b1(__g), _M_b2(__g)
+        { _M_initialize_max(); }
+
+      void
+      seed()
+      {
+	_M_b1.seed();
+	_M_b2.seed();
+      }
+
+      template<class _Gen>
+        void
+        seed(_Gen& __g)
+        {
+	  _M_b1.seed(__g);
+	  _M_b2.seed(__g);
+	}
+
+      const base1_type&
+      base1() const
+      { return _M_b1; }
+
+      const base2_type&
+      base2() const
+      { return _M_b2; }
+
+      result_type
+      min() const
+      { return 0; }
+
+      result_type
+      max() const
+      { return _M_max; }
+
+      /**
+       * Gets the next random number in the sequence.
+       */
+      // NB: Not exactly the TR1 formula, per N2079 instead.
+      result_type
+      operator()()
+      {
+	return ((result_type(_M_b1() - _M_b1.min()) << shift1)
+		^ (result_type(_M_b2() - _M_b2.min()) << shift2));
+      }
+
+      /**
+       * Compares two %xor_combine random number generator objects of
+       * the same type for equality.
+       *
+       * @param __lhs A %xor_combine random number generator object.
+       * @param __rhs Another %xor_combine random number generator
+       *              object.
+       *
+       * @returns true if the two objects are equal, false otherwise.
+       */
+      friend bool
+      operator==(const xor_combine& __lhs, const xor_combine& __rhs)
+      {
+	return (__lhs.base1() == __rhs.base1())
+	        && (__lhs.base2() == __rhs.base2());
+      }
+
+      /**
+       * Compares two %xor_combine random number generator objects of
+       * the same type for inequality.
+       *
+       * @param __lhs A %xor_combine random number generator object.
+       * @param __rhs Another %xor_combine random number generator
+       *              object.
+       *
+       * @returns true if the two objects are not equal, false otherwise.
+       */
+      friend bool
+      operator!=(const xor_combine& __lhs, const xor_combine& __rhs)
+      { return !(__lhs == __rhs); }
+
+      /**
+       * Inserts the current state of a %xor_combine random number
+       * generator engine @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %xor_combine random number generator engine.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<class _UniformRandomNumberGenerator11, int __s11,
+	       class _UniformRandomNumberGenerator21, int __s21,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const xor_combine<_UniformRandomNumberGenerator11, __s11,
+		   _UniformRandomNumberGenerator21, __s21>& __x);
+
+      /**
+       * Extracts the current state of a %xor_combine random number
+       * generator engine @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %xor_combine random number generator engine.
+       *
+       * @returns The input stream with the state of @p __x extracted or in
+       * an error state.
+       */
+      template<class _UniformRandomNumberGenerator11, int __s11,
+	       class _UniformRandomNumberGenerator21, int __s21,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   xor_combine<_UniformRandomNumberGenerator11, __s11,
+		   _UniformRandomNumberGenerator21, __s21>& __x);
+
+    private:
+      void
+      _M_initialize_max();
+
+      result_type
+      _M_initialize_max_aux(result_type, result_type, int);
+
+      base1_type  _M_b1;
+      base2_type  _M_b2;
+      result_type _M_max;
+    };
+
+
+  /**
+   * A standard interface to a platform-specific non-deterministic
+   * random number generator (if any are available).
+   */
+  class random_device
+  {
+  public:
+    // types
+    typedef unsigned int result_type;
+
+    // constructors, destructors and member functions
+
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+
+    explicit
+    random_device(const std::string& __token = "/dev/urandom")
+    {
+      if ((__token != "/dev/urandom" && __token != "/dev/random")
+	  || !(_M_file = std::fopen(__token.c_str(), "rb")))
+	std::__throw_runtime_error(__N("random_device::"
+				       "random_device(const std::string&)"));
+    }
+
+    ~random_device()
+    { std::fclose(_M_file); }
+
+#else
+
+    explicit
+    random_device(const std::string& __token = "mt19937")
+    : _M_mt(_M_strtoul(__token)) { }
+
+  private:
+    static unsigned long
+    _M_strtoul(const std::string& __str)
+    {
+      unsigned long __ret = 5489UL;
+      if (__str != "mt19937")
+	{
+	  const char* __nptr = __str.c_str();
+	  char* __endptr;
+	  __ret = std::strtoul(__nptr, &__endptr, 0);
+	  if (*__nptr == '\0' || *__endptr != '\0')
+	    std::__throw_runtime_error(__N("random_device::_M_strtoul"
+					   "(const std::string&)"));
+	}
+      return __ret;
+    }
+
+  public:
+
+#endif
+
+    result_type
+    min() const
+    { return std::numeric_limits<result_type>::min(); }
+
+    result_type
+    max() const
+    { return std::numeric_limits<result_type>::max(); }
+
+    double
+    entropy() const
+    { return 0.0; }
+
+    result_type
+    operator()()
+    {
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+      result_type __ret;
+      std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
+		 1, _M_file);
+      return __ret;
+#else
+      return _M_mt();
+#endif
+    }
+
+  private:
+    random_device(const random_device&);
+    void operator=(const random_device&);
+
+#ifdef _GLIBCXX_USE_RANDOM_TR1
+    FILE*        _M_file;
+#else
+    mt19937      _M_mt;
+#endif
+  };
+
+  /* @} */ // group tr1_random_generators
+
+  /**
+   * @addtogroup tr1_random_distributions Random Number Distributions
+   * @ingroup tr1_random
+   * @{
+   */
+
+  /**
+   * @addtogroup tr1_random_distributions_discrete Discrete Distributions
+   * @ingroup tr1_random_distributions
+   * @{
+   */
+
+  /**
+   * @brief Uniform discrete distribution for random numbers.
+   * A discrete random distribution on the range @f$[min, max]@f$ with equal
+   * probability throughout the range.
+   */
+  template<typename _IntType = int>
+    class uniform_int
+    {
+      __glibcxx_class_requires(_IntType, _IntegerConcept)
+ 
+    public:
+      /** The type of the parameters of the distribution. */
+      typedef _IntType input_type;
+      /** The type of the range of the distribution. */
+      typedef _IntType result_type;
+
+    public:
+      /**
+       * Constructs a uniform distribution object.
+       */
+      explicit
+      uniform_int(_IntType __min = 0, _IntType __max = 9)
+      : _M_min(__min), _M_max(__max)
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max);
+      }
+
+      /**
+       * Gets the inclusive lower bound of the distribution range.
+       */
+      result_type
+      min() const
+      { return _M_min; }
+
+      /**
+       * Gets the inclusive upper bound of the distribution range.
+       */
+      result_type
+      max() const
+      { return _M_max; }
+
+      /**
+       * Resets the distribution state.
+       *
+       * Does nothing for the uniform integer distribution.
+       */
+      void
+      reset() { }
+
+      /**
+       * Gets a uniformly distributed random number in the range
+       * @f$(min, max)@f$.
+       */
+      template<typename _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng)
+        {
+	  typedef typename _UniformRandomNumberGenerator::result_type
+	    _UResult_type;
+	  return _M_call(__urng, _M_min, _M_max,
+			 typename is_integral<_UResult_type>::type());
+	}
+
+      /**
+       * Gets a uniform random number in the range @f$[0, n)@f$.
+       *
+       * This function is aimed at use with std::random_shuffle.
+       */
+      template<typename _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng, result_type __n)
+        {
+	  typedef typename _UniformRandomNumberGenerator::result_type
+	    _UResult_type;
+	  return _M_call(__urng, 0, __n - 1,
+			 typename is_integral<_UResult_type>::type());
+	}
+
+      /**
+       * Inserts a %uniform_int random number distribution @p __x into the
+       * output stream @p os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %uniform_int random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const uniform_int<_IntType1>& __x);
+
+      /**
+       * Extracts a %uniform_int random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %uniform_int random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _IntType1, typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   uniform_int<_IntType1>& __x);
+
+    private:
+      template<typename _UniformRandomNumberGenerator>
+        result_type
+        _M_call(_UniformRandomNumberGenerator& __urng,
+		result_type __min, result_type __max, true_type);
+
+      template<typename _UniformRandomNumberGenerator>
+        result_type
+        _M_call(_UniformRandomNumberGenerator& __urng,
+		result_type __min, result_type __max, false_type)
+        {
+	  return result_type((__urng() - __urng.min())
+			     / (__urng.max() - __urng.min())
+			     * (__max - __min + 1)) + __min;
+	}
+
+      _IntType _M_min;
+      _IntType _M_max;
+    };
+
+
+  /**
+   * @brief A Bernoulli random number distribution.
+   *
+   * Generates a sequence of true and false values with likelihood @f$ p @f$
+   * that true will come up and @f$ (1 - p) @f$ that false will appear.
+   */
+  class bernoulli_distribution
+  {
+  public:
+    typedef int  input_type;
+    typedef bool result_type;
+
+  public:
+    /**
+     * Constructs a Bernoulli distribution with likelihood @p p.
+     *
+     * @param __p  [IN]  The likelihood of a true result being returned.  Must
+     * be in the interval @f$ [0, 1] @f$.
+     */
+    explicit
+    bernoulli_distribution(double __p = 0.5)
+    : _M_p(__p)
+    { 
+      _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0));
+    }
+
+    /**
+     * Gets the @p p parameter of the distribution.
+     */
+    double
+    p() const
+    { return _M_p; }
+
+    /**
+     * Resets the distribution state.
+     *
+     * Does nothing for a Bernoulli distribution.
+     */
+    void
+    reset() { }
+
+    /**
+     * Gets the next value in the Bernoullian sequence.
+     */
+    template<class _UniformRandomNumberGenerator>
+      result_type
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	if ((__urng() - __urng.min()) < _M_p * (__urng.max() - __urng.min()))
+	  return true;
+	return false;
+      }
+
+    /**
+     * Inserts a %bernoulli_distribution random number distribution
+     * @p __x into the output stream @p __os.
+     *
+     * @param __os An output stream.
+     * @param __x  A %bernoulli_distribution random number distribution.
+     *
+     * @returns The output stream with the state of @p __x inserted or in
+     * an error state.
+     */
+    template<typename _CharT, typename _Traits>
+      friend std::basic_ostream<_CharT, _Traits>&
+      operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		 const bernoulli_distribution& __x);
+
+    /**
+     * Extracts a %bernoulli_distribution random number distribution
+     * @p __x from the input stream @p __is.
+     *
+     * @param __is An input stream.
+     * @param __x  A %bernoulli_distribution random number generator engine.
+     *
+     * @returns The input stream with @p __x extracted or in an error state.
+     */
+    template<typename _CharT, typename _Traits>
+      friend std::basic_istream<_CharT, _Traits>&
+      operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		 bernoulli_distribution& __x)
+      { return __is >> __x._M_p; }
+
+  private:
+    double _M_p;
+  };
+
+
+  /**
+   * @brief A discrete geometric random number distribution.
+   *
+   * The formula for the geometric probability mass function is 
+   * @f$ p(i) = (1 - p)p^{i-1} @f$ where @f$ p @f$ is the parameter of the
+   * distribution.
+   */
+  template<typename _IntType = int, typename _RealType = double>
+    class geometric_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _IntType  result_type;
+
+      // constructors and member function
+      explicit
+      geometric_distribution(const _RealType& __p = _RealType(0.5))
+      : _M_p(__p)
+      {
+	_GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0));
+	_M_initialize();
+      }
+
+      /**
+       * Gets the distribution parameter @p p.
+       */
+      _RealType
+      p() const
+      { return _M_p; }
+
+      void
+      reset() { }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      /**
+       * Inserts a %geometric_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %geometric_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _RealType1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const geometric_distribution<_IntType1, _RealType1>& __x);
+
+      /**
+       * Extracts a %geometric_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %geometric_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   geometric_distribution& __x)
+        {
+	  __is >> __x._M_p;
+	  __x._M_initialize();
+	  return __is;
+	}
+
+    private:
+      void
+      _M_initialize()
+      { _M_log_p = std::log(_M_p); }
+
+      _RealType _M_p;
+      _RealType _M_log_p;
+    };
+
+
+  template<typename _RealType>
+    class normal_distribution;
+
+  /**
+   * @brief A discrete Poisson random number distribution.
+   *
+   * The formula for the Poisson probability mass function is
+   * @f$ p(i) = \frac{mean^i}{i!} e^{-mean} @f$ where @f$ mean @f$ is the
+   * parameter of the distribution.
+   */
+  template<typename _IntType = int, typename _RealType = double>
+    class poisson_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _IntType  result_type;
+
+      // constructors and member function
+      explicit
+      poisson_distribution(const _RealType& __mean = _RealType(1))
+      : _M_mean(__mean), _M_nd()
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0);
+	_M_initialize();
+      }
+
+      /**
+       * Gets the distribution parameter @p mean.
+       */
+      _RealType
+      mean() const
+      { return _M_mean; }
+
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      /**
+       * Inserts a %poisson_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %poisson_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _RealType1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const poisson_distribution<_IntType1, _RealType1>& __x);
+
+      /**
+       * Extracts a %poisson_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %poisson_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _IntType1, typename _RealType1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   poisson_distribution<_IntType1, _RealType1>& __x);
+
+    private:
+      void
+      _M_initialize();
+
+      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
+      normal_distribution<_RealType> _M_nd;
+
+      _RealType _M_mean;
+
+      // Hosts either log(mean) or the threshold of the simple method.
+      _RealType _M_lm_thr;
+#if _GLIBCXX_USE_C99_MATH_TR1
+      _RealType _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb;
+#endif
+    };
+
+
+  /**
+   * @brief A discrete binomial random number distribution.
+   *
+   * The formula for the binomial probability mass function is 
+   * @f$ p(i) = \binom{n}{i} p^i (1 - p)^{t - i} @f$ where @f$ t @f$
+   * and @f$ p @f$ are the parameters of the distribution.
+   */
+  template<typename _IntType = int, typename _RealType = double>
+    class binomial_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _IntType  result_type;
+
+      // constructors and member function
+      explicit
+      binomial_distribution(_IntType __t = 1,
+			    const _RealType& __p = _RealType(0.5))
+      : _M_t(__t), _M_p(__p), _M_nd()
+      {
+	_GLIBCXX_DEBUG_ASSERT((_M_t >= 0) && (_M_p >= 0.0) && (_M_p <= 1.0));
+	_M_initialize();
+      }
+
+      /**
+       * Gets the distribution @p t parameter.
+       */
+      _IntType
+      t() const
+      { return _M_t; }
+      
+      /**
+       * Gets the distribution @p p parameter.
+       */
+      _RealType
+      p() const
+      { return _M_p; }
+
+      void
+      reset()
+      { _M_nd.reset(); }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      /**
+       * Inserts a %binomial_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %binomial_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _IntType1, typename _RealType1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const binomial_distribution<_IntType1, _RealType1>& __x);
+
+      /**
+       * Extracts a %binomial_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %binomial_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _IntType1, typename _RealType1,
+	       typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   binomial_distribution<_IntType1, _RealType1>& __x);
+
+    private:
+      void
+      _M_initialize();
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t);
+
+      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
+      normal_distribution<_RealType> _M_nd;
+
+      _RealType _M_q;
+#if _GLIBCXX_USE_C99_MATH_TR1
+      _RealType _M_d1, _M_d2, _M_s1, _M_s2, _M_c,
+	        _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p;
+#endif
+      _RealType _M_p;
+      _IntType  _M_t;
+
+      bool      _M_easy;
+    };
+
+  /* @} */ // group tr1_random_distributions_discrete
+
+  /**
+   * @addtogroup tr1_random_distributions_continuous Continuous Distributions
+   * @ingroup tr1_random_distributions
+   * @{
+   */
+
+  /**
+   * @brief Uniform continuous distribution for random numbers.
+   *
+   * A continuous random distribution on the range [min, max) with equal
+   * probability throughout the range.  The URNG should be real-valued and
+   * deliver number in the range [0, 1).
+   */
+  template<typename _RealType = double>
+    class uniform_real
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _RealType result_type;
+
+    public:
+      /**
+       * Constructs a uniform_real object.
+       *
+       * @param __min [IN]  The lower bound of the distribution.
+       * @param __max [IN]  The upper bound of the distribution.
+       */
+      explicit
+      uniform_real(_RealType __min = _RealType(0),
+		   _RealType __max = _RealType(1))
+      : _M_min(__min), _M_max(__max)
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max);
+      }
+
+      result_type
+      min() const
+      { return _M_min; }
+
+      result_type
+      max() const
+      { return _M_max; }
+
+      void
+      reset() { }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng)
+        { return (__urng() * (_M_max - _M_min)) + _M_min; }
+
+      /**
+       * Inserts a %uniform_real random number distribution @p __x into the
+       * output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %uniform_real random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const uniform_real<_RealType1>& __x);
+
+      /**
+       * Extracts a %uniform_real random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %uniform_real random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   uniform_real<_RealType1>& __x);
+
+    private:
+      _RealType _M_min;
+      _RealType _M_max;
+    };
+
+
+  /**
+   * @brief An exponential continuous distribution for random numbers.
+   *
+   * The formula for the exponential probability mass function is 
+   * @f$ p(x) = \lambda e^{-\lambda x} @f$.
+   *
+   * <table border=1 cellpadding=10 cellspacing=0>
+   * <caption align=top>Distribution Statistics</caption>
+   * <tr><td>Mean</td><td>@f$ \frac{1}{\lambda} @f$</td></tr>
+   * <tr><td>Median</td><td>@f$ \frac{\ln 2}{\lambda} @f$</td></tr>
+   * <tr><td>Mode</td><td>@f$ zero @f$</td></tr>
+   * <tr><td>Range</td><td>@f$[0, \infty]@f$</td></tr>
+   * <tr><td>Standard Deviation</td><td>@f$ \frac{1}{\lambda} @f$</td></tr>
+   * </table>
+   */
+  template<typename _RealType = double>
+    class exponential_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _RealType result_type;
+
+    public:
+      /**
+       * Constructs an exponential distribution with inverse scale parameter
+       * @f$ \lambda @f$.
+       */
+      explicit
+      exponential_distribution(const result_type& __lambda = result_type(1))
+      : _M_lambda(__lambda)
+      { 
+	_GLIBCXX_DEBUG_ASSERT(_M_lambda > 0);
+      }
+
+      /**
+       * Gets the inverse scale parameter of the distribution.
+       */
+      _RealType
+      lambda() const
+      { return _M_lambda; }
+
+      /**
+       * Resets the distribution.
+       *
+       * Has no effect on exponential distributions.
+       */
+      void
+      reset() { }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng)
+        { return -std::log(__urng()) / _M_lambda; }
+
+      /**
+       * Inserts a %exponential_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %exponential_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const exponential_distribution<_RealType1>& __x);
+
+      /**
+       * Extracts a %exponential_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x A %exponential_distribution random number
+       *            generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   exponential_distribution& __x)
+        { return __is >> __x._M_lambda; }
+
+    private:
+      result_type _M_lambda;
+    };
+
+
+  /**
+   * @brief A normal continuous distribution for random numbers.
+   *
+   * The formula for the normal probability mass function is 
+   * @f$ p(x) = \frac{1}{\sigma \sqrt{2 \pi}} 
+   *            e^{- \frac{{x - mean}^ {2}}{2 \sigma ^ {2}} } @f$.
+   */
+  template<typename _RealType = double>
+    class normal_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _RealType result_type;
+
+    public:
+      /**
+       * Constructs a normal distribution with parameters @f$ mean @f$ and
+       * @f$ \sigma @f$.
+       */
+      explicit
+      normal_distribution(const result_type& __mean = result_type(0),
+			  const result_type& __sigma = result_type(1))
+      : _M_mean(__mean), _M_sigma(__sigma), _M_saved_available(false)
+      { 
+	_GLIBCXX_DEBUG_ASSERT(_M_sigma > 0);
+      }
+
+      /**
+       * Gets the mean of the distribution.
+       */
+      _RealType
+      mean() const
+      { return _M_mean; }
+
+      /**
+       * Gets the @f$ \sigma @f$ of the distribution.
+       */
+      _RealType
+      sigma() const
+      { return _M_sigma; }
+
+      /**
+       * Resets the distribution.
+       */
+      void
+      reset()
+      { _M_saved_available = false; }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      /**
+       * Inserts a %normal_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %normal_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const normal_distribution<_RealType1>& __x);
+
+      /**
+       * Extracts a %normal_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %normal_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   normal_distribution<_RealType1>& __x);
+
+    private:
+      result_type _M_mean;
+      result_type _M_sigma;
+      result_type _M_saved;
+      bool        _M_saved_available;     
+    };
+
+
+  /**
+   * @brief A gamma continuous distribution for random numbers.
+   *
+   * The formula for the gamma probability mass function is 
+   * @f$ p(x) = \frac{1}{\Gamma(\alpha)} x^{\alpha - 1} e^{-x} @f$.
+   */
+  template<typename _RealType = double>
+    class gamma_distribution
+    {
+    public:
+      // types
+      typedef _RealType input_type;
+      typedef _RealType result_type;
+
+    public:
+      /**
+       * Constructs a gamma distribution with parameters @f$ \alpha @f$.
+       */
+      explicit
+      gamma_distribution(const result_type& __alpha_val = result_type(1))
+      : _M_alpha(__alpha_val)
+      { 
+	_GLIBCXX_DEBUG_ASSERT(_M_alpha > 0);
+	_M_initialize();
+      }
+
+      /**
+       * Gets the @f$ \alpha @f$ of the distribution.
+       */
+      _RealType
+      alpha() const
+      { return _M_alpha; }
+
+      /**
+       * Resets the distribution.
+       */
+      void
+      reset() { }
+
+      template<class _UniformRandomNumberGenerator>
+        result_type
+        operator()(_UniformRandomNumberGenerator& __urng);
+
+      /**
+       * Inserts a %gamma_distribution random number distribution
+       * @p __x into the output stream @p __os.
+       *
+       * @param __os An output stream.
+       * @param __x  A %gamma_distribution random number distribution.
+       *
+       * @returns The output stream with the state of @p __x inserted or in
+       * an error state.
+       */
+      template<typename _RealType1, typename _CharT, typename _Traits>
+        friend std::basic_ostream<_CharT, _Traits>&
+        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+		   const gamma_distribution<_RealType1>& __x);
+
+      /**
+       * Extracts a %gamma_distribution random number distribution
+       * @p __x from the input stream @p __is.
+       *
+       * @param __is An input stream.
+       * @param __x  A %gamma_distribution random number generator engine.
+       *
+       * @returns The input stream with @p __x extracted or in an error state.
+       */
+      template<typename _CharT, typename _Traits>
+        friend std::basic_istream<_CharT, _Traits>&
+        operator>>(std::basic_istream<_CharT, _Traits>& __is,
+		   gamma_distribution& __x)
+        {
+	  __is >> __x._M_alpha;
+	  __x._M_initialize();
+	  return __is;
+	}
+
+    private:
+      void
+      _M_initialize();
+
+      result_type _M_alpha;
+
+      // Hosts either lambda of GB or d of modified Vaduva's.
+      result_type _M_l_d;
+    };
+
+  /* @} */ // group tr1_random_distributions_continuous
+  /* @} */ // group tr1_random_distributions
+  /* @} */ // group tr1_random
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_RANDOM_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.tcc
new file mode 100644
index 000000000..3d8c4fe1c
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/random.tcc
@@ -0,0 +1,1721 @@
+// random number generation (out of line) -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+/** @file tr1/random.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/random}
+ */
+
+#ifndef _GLIBCXX_TR1_RANDOM_TCC
+#define _GLIBCXX_TR1_RANDOM_TCC 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  /*
+   * (Further) implementation-space details.
+   */
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    // General case for x = (ax + c) mod m -- use Schrage's algorithm to avoid
+    // integer overflow.
+    //
+    // Because a and c are compile-time integral constants the compiler kindly
+    // elides any unreachable paths.
+    //
+    // Preconditions:  a > 0, m > 0.
+    //
+    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m, bool>
+      struct _Mod
+      {
+	static _Tp
+	__calc(_Tp __x)
+	{
+	  if (__a == 1)
+	    __x %= __m;
+	  else
+	    {
+	      static const _Tp __q = __m / __a;
+	      static const _Tp __r = __m % __a;
+	      
+	      _Tp __t1 = __a * (__x % __q);
+	      _Tp __t2 = __r * (__x / __q);
+	      if (__t1 >= __t2)
+		__x = __t1 - __t2;
+	      else
+		__x = __m - __t2 + __t1;
+	    }
+
+	  if (__c != 0)
+	    {
+	      const _Tp __d = __m - __x;
+	      if (__d > __c)
+		__x += __c;
+	      else
+		__x = __c - __d;
+	    }
+	  return __x;
+	}
+      };
+
+    // Special case for m == 0 -- use unsigned integer overflow as modulo
+    // operator.
+    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m>
+      struct _Mod<_Tp, __a, __c, __m, true>
+      {
+	static _Tp
+	__calc(_Tp __x)
+	{ return __a * __x + __c; }
+      };
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    const _UIntType
+    linear_congruential<_UIntType, __a, __c, __m>::multiplier;
+
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    const _UIntType
+    linear_congruential<_UIntType, __a, __c, __m>::increment;
+
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    const _UIntType
+    linear_congruential<_UIntType, __a, __c, __m>::modulus;
+
+  /**
+   * Seeds the LCR with integral value @p __x0, adjusted so that the 
+   * ring identity is never a member of the convergence set.
+   */
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    void
+    linear_congruential<_UIntType, __a, __c, __m>::
+    seed(unsigned long __x0)
+    {
+      if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0)
+	  && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0))
+	_M_x = __detail::__mod<_UIntType, 1, 0, __m>(1);
+      else
+	_M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0);
+    }
+
+  /**
+   * Seeds the LCR engine with a value generated by @p __g.
+   */
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    template<class _Gen>
+      void
+      linear_congruential<_UIntType, __a, __c, __m>::
+      seed(_Gen& __g, false_type)
+      {
+	_UIntType __x0 = __g();
+	if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0)
+	    && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0))
+	  _M_x = __detail::__mod<_UIntType, 1, 0, __m>(1);
+	else
+	  _M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0);
+      }
+
+  /**
+   * Gets the next generated value in sequence.
+   */
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
+    typename linear_congruential<_UIntType, __a, __c, __m>::result_type
+    linear_congruential<_UIntType, __a, __c, __m>::
+    operator()()
+    {
+      _M_x = __detail::__mod<_UIntType, __a, __c, __m>(_M_x);
+      return _M_x;
+    }
+
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const linear_congruential<_UIntType, __a, __c, __m>& __lcr)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__os.widen(' '));
+
+      __os << __lcr._M_x;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       linear_congruential<_UIntType, __a, __c, __m>& __lcr)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec);
+
+      __is >> __lcr._M_x;
+
+      __is.flags(__flags);
+      return __is;
+    } 
+
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::word_size;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::state_size;
+    
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::shift_size;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::mask_bits;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const _UIntType
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::parameter_a;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_u;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_s;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const _UIntType
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_b;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_t;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const _UIntType
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_c;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    const int
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::output_l;
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    void
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::
+    seed(unsigned long __value)
+    {
+      _M_x[0] = __detail::__mod<_UIntType, 1, 0,
+	__detail::_Shift<_UIntType, __w>::__value>(__value);
+
+      for (int __i = 1; __i < state_size; ++__i)
+	{
+	  _UIntType __x = _M_x[__i - 1];
+	  __x ^= __x >> (__w - 2);
+	  __x *= 1812433253ul;
+	  __x += __i;
+	  _M_x[__i] = __detail::__mod<_UIntType, 1, 0,
+	    __detail::_Shift<_UIntType, __w>::__value>(__x);	  
+	}
+      _M_p = state_size;
+    }
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    template<class _Gen>
+      void
+      mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		       __b, __t, __c, __l>::
+      seed(_Gen& __gen, false_type)
+      {
+	for (int __i = 0; __i < state_size; ++__i)
+	  _M_x[__i] = __detail::__mod<_UIntType, 1, 0,
+	    __detail::_Shift<_UIntType, __w>::__value>(__gen());
+	_M_p = state_size;
+      }
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s,
+	   _UIntType __b, int __t, _UIntType __c, int __l>
+    typename
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::result_type
+    mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s,
+		     __b, __t, __c, __l>::
+    operator()()
+    {
+      // Reload the vector - cost is O(n) amortized over n calls.
+      if (_M_p >= state_size)
+	{
+	  const _UIntType __upper_mask = (~_UIntType()) << __r;
+	  const _UIntType __lower_mask = ~__upper_mask;
+
+	  for (int __k = 0; __k < (__n - __m); ++__k)
+	    {
+	      _UIntType __y = ((_M_x[__k] & __upper_mask)
+			       | (_M_x[__k + 1] & __lower_mask));
+	      _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	    }
+
+	  for (int __k = (__n - __m); __k < (__n - 1); ++__k)
+	    {
+	      _UIntType __y = ((_M_x[__k] & __upper_mask)
+			       | (_M_x[__k + 1] & __lower_mask));
+	      _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	    }
+
+	  _UIntType __y = ((_M_x[__n - 1] & __upper_mask)
+			   | (_M_x[0] & __lower_mask));
+	  _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1)
+			   ^ ((__y & 0x01) ? __a : 0));
+	  _M_p = 0;
+	}
+
+      // Calculate o(x(i)).
+      result_type __z = _M_x[_M_p++];
+      __z ^= (__z >> __u);
+      __z ^= (__z << __s) & __b;
+      __z ^= (__z << __t) & __c;
+      __z ^= (__z >> __l);
+
+      return __z;
+    }
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s, _UIntType __b, int __t,
+	   _UIntType __c, int __l,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const mersenne_twister<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __s, __b, __t, __c, __l>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      for (int __i = 0; __i < __n - 1; ++__i)
+	__os << __x._M_x[__i] << __space;
+      __os << __x._M_x[__n - 1];
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<class _UIntType, int __w, int __n, int __m, int __r,
+	   _UIntType __a, int __u, int __s, _UIntType __b, int __t,
+	   _UIntType __c, int __l,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       mersenne_twister<_UIntType, __w, __n, __m,
+	       __r, __a, __u, __s, __b, __t, __c, __l>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      for (int __i = 0; __i < __n; ++__i)
+	__is >> __x._M_x[__i];
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    const _IntType
+    subtract_with_carry<_IntType, __m, __s, __r>::modulus;
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    const int
+    subtract_with_carry<_IntType, __m, __s, __r>::long_lag;
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    const int
+    subtract_with_carry<_IntType, __m, __s, __r>::short_lag;
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    void
+    subtract_with_carry<_IntType, __m, __s, __r>::
+    seed(unsigned long __value)
+    {
+      if (__value == 0)
+	__value = 19780503;
+
+      std::tr1::linear_congruential<unsigned long, 40014, 0, 2147483563>
+	__lcg(__value);
+
+      for (int __i = 0; __i < long_lag; ++__i)
+	_M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__lcg());
+
+      _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0;
+      _M_p = 0;
+    }
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    template<class _Gen>
+      void
+      subtract_with_carry<_IntType, __m, __s, __r>::
+      seed(_Gen& __gen, false_type)
+      {
+	const int __n = (std::numeric_limits<_UIntType>::digits + 31) / 32;
+
+	for (int __i = 0; __i < long_lag; ++__i)
+	  {
+	    _UIntType __tmp = 0;
+	    _UIntType __factor = 1;
+	    for (int __j = 0; __j < __n; ++__j)
+	      {
+		__tmp += __detail::__mod<__detail::_UInt32Type, 1, 0, 0>
+		         (__gen()) * __factor;
+		__factor *= __detail::_Shift<_UIntType, 32>::__value;
+	      }
+	    _M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__tmp);
+	  }
+	_M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0;
+	_M_p = 0;
+      }
+
+  template<typename _IntType, _IntType __m, int __s, int __r>
+    typename subtract_with_carry<_IntType, __m, __s, __r>::result_type
+    subtract_with_carry<_IntType, __m, __s, __r>::
+    operator()()
+    {
+      // Derive short lag index from current index.
+      int __ps = _M_p - short_lag;
+      if (__ps < 0)
+	__ps += long_lag;
+
+      // Calculate new x(i) without overflow or division.
+      // NB: Thanks to the requirements for _IntType, _M_x[_M_p] + _M_carry
+      // cannot overflow.
+      _UIntType __xi;
+      if (_M_x[__ps] >= _M_x[_M_p] + _M_carry)
+	{
+	  __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry;
+	  _M_carry = 0;
+	}
+      else
+	{
+	  __xi = modulus - _M_x[_M_p] - _M_carry + _M_x[__ps];
+	  _M_carry = 1;
+	}
+      _M_x[_M_p] = __xi;
+
+      // Adjust current index to loop around in ring buffer.
+      if (++_M_p >= long_lag)
+	_M_p = 0;
+
+      return __xi;
+    }
+
+  template<typename _IntType, _IntType __m, int __s, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const subtract_with_carry<_IntType, __m, __s, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      for (int __i = 0; __i < __r; ++__i)
+	__os << __x._M_x[__i] << __space;
+      __os << __x._M_carry;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _IntType, _IntType __m, int __s, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       subtract_with_carry<_IntType, __m, __s, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      for (int __i = 0; __i < __r; ++__i)
+	__is >> __x._M_x[__i];
+      __is >> __x._M_carry;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, int __w, int __s, int __r>
+    const int
+    subtract_with_carry_01<_RealType, __w, __s, __r>::word_size;
+
+  template<typename _RealType, int __w, int __s, int __r>
+    const int
+    subtract_with_carry_01<_RealType, __w, __s, __r>::long_lag;
+
+  template<typename _RealType, int __w, int __s, int __r>
+    const int
+    subtract_with_carry_01<_RealType, __w, __s, __r>::short_lag;
+
+  template<typename _RealType, int __w, int __s, int __r>
+    void
+    subtract_with_carry_01<_RealType, __w, __s, __r>::
+    _M_initialize_npows()
+    {
+      for (int __j = 0; __j < __n; ++__j)
+#if _GLIBCXX_USE_C99_MATH_TR1
+	_M_npows[__j] = std::tr1::ldexp(_RealType(1), -__w + __j * 32);
+#else
+        _M_npows[__j] = std::pow(_RealType(2), -__w + __j * 32);
+#endif
+    }
+
+  template<typename _RealType, int __w, int __s, int __r>
+    void
+    subtract_with_carry_01<_RealType, __w, __s, __r>::
+    seed(unsigned long __value)
+    {
+      if (__value == 0)
+	__value = 19780503;
+
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 512. Seeding subtract_with_carry_01 from a single unsigned long.
+      std::tr1::linear_congruential<unsigned long, 40014, 0, 2147483563>
+	__lcg(__value);
+
+      this->seed(__lcg);
+    }
+
+  template<typename _RealType, int __w, int __s, int __r>
+    template<class _Gen>
+      void
+      subtract_with_carry_01<_RealType, __w, __s, __r>::
+      seed(_Gen& __gen, false_type)
+      {
+	for (int __i = 0; __i < long_lag; ++__i)
+	  {
+	    for (int __j = 0; __j < __n - 1; ++__j)
+	      _M_x[__i][__j] = __detail::__mod<_UInt32Type, 1, 0, 0>(__gen());
+	    _M_x[__i][__n - 1] = __detail::__mod<_UInt32Type, 1, 0,
+	      __detail::_Shift<_UInt32Type, __w % 32>::__value>(__gen());
+	  }
+
+	_M_carry = 1;
+	for (int __j = 0; __j < __n; ++__j)
+	  if (_M_x[long_lag - 1][__j] != 0)
+	    {
+	      _M_carry = 0;
+	      break;
+	    }
+
+	_M_p = 0;
+      }
+
+  template<typename _RealType, int __w, int __s, int __r>
+    typename subtract_with_carry_01<_RealType, __w, __s, __r>::result_type
+    subtract_with_carry_01<_RealType, __w, __s, __r>::
+    operator()()
+    {
+      // Derive short lag index from current index.
+      int __ps = _M_p - short_lag;
+      if (__ps < 0)
+	__ps += long_lag;
+
+      _UInt32Type __new_carry;
+      for (int __j = 0; __j < __n - 1; ++__j)
+	{
+	  if (_M_x[__ps][__j] > _M_x[_M_p][__j]
+	      || (_M_x[__ps][__j] == _M_x[_M_p][__j] && _M_carry == 0))
+	    __new_carry = 0;
+	  else
+	    __new_carry = 1;
+
+	  _M_x[_M_p][__j] = _M_x[__ps][__j] - _M_x[_M_p][__j] - _M_carry;
+	  _M_carry = __new_carry;
+	}
+
+      if (_M_x[__ps][__n - 1] > _M_x[_M_p][__n - 1]
+	  || (_M_x[__ps][__n - 1] == _M_x[_M_p][__n - 1] && _M_carry == 0))
+	__new_carry = 0;
+      else
+	__new_carry = 1;
+      
+      _M_x[_M_p][__n - 1] = __detail::__mod<_UInt32Type, 1, 0,
+	__detail::_Shift<_UInt32Type, __w % 32>::__value>
+	(_M_x[__ps][__n - 1] - _M_x[_M_p][__n - 1] - _M_carry);
+      _M_carry = __new_carry;
+
+      result_type __ret = 0.0;
+      for (int __j = 0; __j < __n; ++__j)
+	__ret += _M_x[_M_p][__j] * _M_npows[__j];
+
+      // Adjust current index to loop around in ring buffer.
+      if (++_M_p >= long_lag)
+	_M_p = 0;
+
+      return __ret;
+    }
+
+  template<typename _RealType, int __w, int __s, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      for (int __i = 0; __i < __r; ++__i)
+	for (int __j = 0; __j < __x.__n; ++__j)
+	  __os << __x._M_x[__i][__j] << __space;
+      __os << __x._M_carry;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _RealType, int __w, int __s, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      for (int __i = 0; __i < __r; ++__i)
+	for (int __j = 0; __j < __x.__n; ++__j)
+	  __is >> __x._M_x[__i][__j];
+      __is >> __x._M_carry;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+  template<class _UniformRandomNumberGenerator, int __p, int __r>
+    const int
+    discard_block<_UniformRandomNumberGenerator, __p, __r>::block_size;
+
+  template<class _UniformRandomNumberGenerator, int __p, int __r>
+    const int
+    discard_block<_UniformRandomNumberGenerator, __p, __r>::used_block;
+
+  template<class _UniformRandomNumberGenerator, int __p, int __r>
+    typename discard_block<_UniformRandomNumberGenerator,
+			   __p, __r>::result_type
+    discard_block<_UniformRandomNumberGenerator, __p, __r>::
+    operator()()
+    {
+      if (_M_n >= used_block)
+	{
+	  while (_M_n < block_size)
+	    {
+	      _M_b();
+	      ++_M_n;
+	    }
+	  _M_n = 0;
+	}
+      ++_M_n;
+      return _M_b();
+    }
+
+  template<class _UniformRandomNumberGenerator, int __p, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const discard_block<_UniformRandomNumberGenerator,
+	       __p, __r>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed
+		 | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x._M_b << __space << __x._M_n;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<class _UniformRandomNumberGenerator, int __p, int __r,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       discard_block<_UniformRandomNumberGenerator, __p, __r>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_b >> __x._M_n;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2>
+    const int
+    xor_combine<_UniformRandomNumberGenerator1, __s1,
+		_UniformRandomNumberGenerator2, __s2>::shift1;
+     
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2>
+    const int
+    xor_combine<_UniformRandomNumberGenerator1, __s1,
+		_UniformRandomNumberGenerator2, __s2>::shift2;
+
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2>
+    void
+    xor_combine<_UniformRandomNumberGenerator1, __s1,
+		_UniformRandomNumberGenerator2, __s2>::
+    _M_initialize_max()
+    {
+      const int __w = std::numeric_limits<result_type>::digits;
+
+      const result_type __m1 =
+	std::min(result_type(_M_b1.max() - _M_b1.min()),
+		 __detail::_Shift<result_type, __w - __s1>::__value - 1);
+
+      const result_type __m2 =
+	std::min(result_type(_M_b2.max() - _M_b2.min()),
+		 __detail::_Shift<result_type, __w - __s2>::__value - 1);
+
+      // NB: In TR1 s1 is not required to be >= s2.
+      if (__s1 < __s2)
+	_M_max = _M_initialize_max_aux(__m2, __m1, __s2 - __s1) << __s1;
+      else
+	_M_max = _M_initialize_max_aux(__m1, __m2, __s1 - __s2) << __s2;
+    }
+
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2>
+    typename xor_combine<_UniformRandomNumberGenerator1, __s1,
+			 _UniformRandomNumberGenerator2, __s2>::result_type
+    xor_combine<_UniformRandomNumberGenerator1, __s1,
+		_UniformRandomNumberGenerator2, __s2>::
+    _M_initialize_max_aux(result_type __a, result_type __b, int __d)
+    {
+      const result_type __two2d = result_type(1) << __d;
+      const result_type __c = __a * __two2d;
+
+      if (__a == 0 || __b < __two2d)
+	return __c + __b;
+
+      const result_type __t = std::max(__c, __b);
+      const result_type __u = std::min(__c, __b);
+
+      result_type __ub = __u;
+      result_type __p;
+      for (__p = 0; __ub != 1; __ub >>= 1)
+	++__p;
+
+      const result_type __two2p = result_type(1) << __p;
+      const result_type __k = __t / __two2p;
+
+      if (__k & 1)
+	return (__k + 1) * __two2p - 1;
+
+      if (__c >= __b)
+	return (__k + 1) * __two2p + _M_initialize_max_aux((__t % __two2p)
+							   / __two2d,
+							   __u % __two2p, __d);
+      else
+	return (__k + 1) * __two2p + _M_initialize_max_aux((__u % __two2p)
+							   / __two2d,
+							   __t % __two2p, __d);
+    }
+
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const xor_combine<_UniformRandomNumberGenerator1, __s1,
+	       _UniformRandomNumberGenerator2, __s2>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x.base1() << __space << __x.base2();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os; 
+    }
+
+  template<class _UniformRandomNumberGenerator1, int __s1,
+	   class _UniformRandomNumberGenerator2, int __s2,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       xor_combine<_UniformRandomNumberGenerator1, __s1,
+	       _UniformRandomNumberGenerator2, __s2>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      __is >> __x._M_b1 >> __x._M_b2;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType>
+    template<typename _UniformRandomNumberGenerator>
+      typename uniform_int<_IntType>::result_type
+      uniform_int<_IntType>::
+      _M_call(_UniformRandomNumberGenerator& __urng,
+	      result_type __min, result_type __max, true_type)
+      {
+	// XXX Must be fixed to work well for *arbitrary* __urng.max(),
+	// __urng.min(), __max, __min.  Currently works fine only in the
+	// most common case __urng.max() - __urng.min() >= __max - __min,
+	// with __urng.max() > __urng.min() >= 0.
+	typedef typename __gnu_cxx::__add_unsigned<typename
+	  _UniformRandomNumberGenerator::result_type>::__type __urntype;
+	typedef typename __gnu_cxx::__add_unsigned<result_type>::__type
+	                                                      __utype;
+	typedef typename __gnu_cxx::__conditional_type<(sizeof(__urntype)
+							> sizeof(__utype)),
+	  __urntype, __utype>::__type                         __uctype;
+
+	result_type __ret;
+
+	const __urntype __urnmin = __urng.min();
+	const __urntype __urnmax = __urng.max();
+	const __urntype __urnrange = __urnmax - __urnmin;
+	const __uctype __urange = __max - __min;
+	const __uctype __udenom = (__urnrange <= __urange
+				   ? 1 : __urnrange / (__urange + 1));
+	do
+	  __ret = (__urntype(__urng()) -  __urnmin) / __udenom;
+	while (__ret > __max - __min);
+
+	return __ret + __min;
+      }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const uniform_int<_IntType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+
+      __os << __x.min() << __space << __x.max();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      return __os;
+    }
+
+  template<typename _IntType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       uniform_int<_IntType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_min >> __x._M_max;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+  
+  template<typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const bernoulli_distribution& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(__gnu_cxx::__numeric_traits<double>::__max_digits10);
+
+      __os << __x.p();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+
+  template<typename _IntType, typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename geometric_distribution<_IntType, _RealType>::result_type
+      geometric_distribution<_IntType, _RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	// About the epsilon thing see this thread:
+        // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html
+	const _RealType __naf =
+	  (1 - std::numeric_limits<_RealType>::epsilon()) / 2;
+	// The largest _RealType convertible to _IntType.
+	const _RealType __thr =
+	  std::numeric_limits<_IntType>::max() + __naf;
+
+	_RealType __cand;
+	do
+	  __cand = std::ceil(std::log(__urng()) / _M_log_p);
+	while (__cand >= __thr);
+
+	return result_type(__cand + __naf);
+      }
+
+  template<typename _IntType, typename _RealType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const geometric_distribution<_IntType, _RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.p();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+
+  template<typename _IntType, typename _RealType>
+    void
+    poisson_distribution<_IntType, _RealType>::
+    _M_initialize()
+    {
+#if _GLIBCXX_USE_C99_MATH_TR1
+      if (_M_mean >= 12)
+	{
+	  const _RealType __m = std::floor(_M_mean);
+	  _M_lm_thr = std::log(_M_mean);
+	  _M_lfm = std::tr1::lgamma(__m + 1);
+	  _M_sm = std::sqrt(__m);
+
+	  const _RealType __pi_4 = 0.7853981633974483096156608458198757L;
+	  const _RealType __dx = std::sqrt(2 * __m * std::log(32 * __m
+							      / __pi_4));
+	  _M_d = std::tr1::round(std::max(_RealType(6),
+					  std::min(__m, __dx)));
+	  const _RealType __cx = 2 * __m + _M_d;
+	  _M_scx = std::sqrt(__cx / 2);
+	  _M_1cx = 1 / __cx;
+
+	  _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx);
+	  _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) / _M_d;
+	}
+      else
+#endif
+	_M_lm_thr = std::exp(-_M_mean);
+      }
+
+  /**
+   * A rejection algorithm when mean >= 12 and a simple method based
+   * upon the multiplication of uniform random variates otherwise.
+   * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1
+   * is defined.
+   *
+   * Reference:
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!).
+   */
+  template<typename _IntType, typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename poisson_distribution<_IntType, _RealType>::result_type
+      poisson_distribution<_IntType, _RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+#if _GLIBCXX_USE_C99_MATH_TR1
+	if (_M_mean >= 12)
+	  {
+	    _RealType __x;
+
+	    // See comments above...
+	    const _RealType __naf =
+	      (1 - std::numeric_limits<_RealType>::epsilon()) / 2;
+	    const _RealType __thr =
+	      std::numeric_limits<_IntType>::max() + __naf;
+
+	    const _RealType __m = std::floor(_M_mean);
+	    // sqrt(pi / 2)
+	    const _RealType __spi_2 = 1.2533141373155002512078826424055226L;
+	    const _RealType __c1 = _M_sm * __spi_2;
+	    const _RealType __c2 = _M_c2b + __c1; 
+	    const _RealType __c3 = __c2 + 1;
+	    const _RealType __c4 = __c3 + 1;
+	    // e^(1 / 78)
+	    const _RealType __e178 = 1.0129030479320018583185514777512983L;
+	    const _RealType __c5 = __c4 + __e178;
+	    const _RealType __c = _M_cb + __c5;
+	    const _RealType __2cx = 2 * (2 * __m + _M_d);
+
+	    bool __reject = true;
+	    do
+	      {
+		const _RealType __u = __c * __urng();
+		const _RealType __e = -std::log(__urng());
+
+		_RealType __w = 0.0;
+		
+		if (__u <= __c1)
+		  {
+		    const _RealType __n = _M_nd(__urng);
+		    const _RealType __y = -std::abs(__n) * _M_sm - 1;
+		    __x = std::floor(__y);
+		    __w = -__n * __n / 2;
+		    if (__x < -__m)
+		      continue;
+		  }
+		else if (__u <= __c2)
+		  {
+		    const _RealType __n = _M_nd(__urng);
+		    const _RealType __y = 1 + std::abs(__n) * _M_scx;
+		    __x = std::ceil(__y);
+		    __w = __y * (2 - __y) * _M_1cx;
+		    if (__x > _M_d)
+		      continue;
+		  }
+		else if (__u <= __c3)
+		  // NB: This case not in the book, nor in the Errata,
+		  // but should be ok...
+		  __x = -1;
+		else if (__u <= __c4)
+		  __x = 0;
+		else if (__u <= __c5)
+		  __x = 1;
+		else
+		  {
+		    const _RealType __v = -std::log(__urng());
+		    const _RealType __y = _M_d + __v * __2cx / _M_d;
+		    __x = std::ceil(__y);
+		    __w = -_M_d * _M_1cx * (1 + __y / 2);
+		  }
+
+		__reject = (__w - __e - __x * _M_lm_thr
+			    > _M_lfm - std::tr1::lgamma(__x + __m + 1));
+
+		__reject |= __x + __m >= __thr;
+
+	      } while (__reject);
+
+	    return result_type(__x + __m + __naf);
+	  }
+	else
+#endif
+	  {
+	    _IntType     __x = 0;
+	    _RealType __prod = 1.0;
+
+	    do
+	      {
+		__prod *= __urng();
+		__x += 1;
+	      }
+	    while (__prod > _M_lm_thr);
+
+	    return __x - 1;
+	  }
+      }
+
+  template<typename _IntType, typename _RealType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const poisson_distribution<_IntType, _RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.mean() << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType, typename _RealType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       poisson_distribution<_IntType, _RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      __is >> __x._M_mean >> __x._M_nd;
+      __x._M_initialize();
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _IntType, typename _RealType>
+    void
+    binomial_distribution<_IntType, _RealType>::
+    _M_initialize()
+    {
+      const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p;
+
+      _M_easy = true;
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+      if (_M_t * __p12 >= 8)
+	{
+	  _M_easy = false;
+	  const _RealType __np = std::floor(_M_t * __p12);
+	  const _RealType __pa = __np / _M_t;
+	  const _RealType __1p = 1 - __pa;
+	  
+	  const _RealType __pi_4 = 0.7853981633974483096156608458198757L;
+	  const _RealType __d1x =
+	    std::sqrt(__np * __1p * std::log(32 * __np
+					     / (81 * __pi_4 * __1p)));
+	  _M_d1 = std::tr1::round(std::max(_RealType(1), __d1x));
+	  const _RealType __d2x =
+	    std::sqrt(__np * __1p * std::log(32 * _M_t * __1p
+					     / (__pi_4 * __pa)));
+	  _M_d2 = std::tr1::round(std::max(_RealType(1), __d2x));
+	  
+	  // sqrt(pi / 2)
+	  const _RealType __spi_2 = 1.2533141373155002512078826424055226L;
+	  _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np));
+	  _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p));
+	  _M_c = 2 * _M_d1 / __np;
+	  _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2;
+	  const _RealType __a12 = _M_a1 + _M_s2 * __spi_2;
+	  const _RealType __s1s = _M_s1 * _M_s1;
+	  _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p))
+			     * 2 * __s1s / _M_d1
+			     * std::exp(-_M_d1 * _M_d1 / (2 * __s1s)));
+	  const _RealType __s2s = _M_s2 * _M_s2;
+	  _M_s = (_M_a123 + 2 * __s2s / _M_d2
+		  * std::exp(-_M_d2 * _M_d2 / (2 * __s2s)));
+	  _M_lf = (std::tr1::lgamma(__np + 1)
+		   + std::tr1::lgamma(_M_t - __np + 1));
+	  _M_lp1p = std::log(__pa / __1p);
+
+	  _M_q = -std::log(1 - (__p12 - __pa) / __1p);
+	}
+      else
+#endif
+	_M_q = -std::log(1 - __p12);
+    }
+
+  template<typename _IntType, typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename binomial_distribution<_IntType, _RealType>::result_type
+      binomial_distribution<_IntType, _RealType>::
+      _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t)
+      {
+	_IntType    __x = 0;
+	_RealType __sum = 0;
+
+	do
+	  {
+	    const _RealType __e = -std::log(__urng());
+	    __sum += __e / (__t - __x);
+	    __x += 1;
+	  }
+	while (__sum <= _M_q);
+
+	return __x - 1;
+      }
+
+  /**
+   * A rejection algorithm when t * p >= 8 and a simple waiting time
+   * method - the second in the referenced book - otherwise.
+   * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1
+   * is defined.
+   *
+   * Reference:
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. X, Sect. 4 (+ Errata!).
+   */
+  template<typename _IntType, typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename binomial_distribution<_IntType, _RealType>::result_type
+      binomial_distribution<_IntType, _RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	result_type __ret;
+	const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p;
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+	if (!_M_easy)
+	  {
+	    _RealType __x;
+
+	    // See comments above...
+	    const _RealType __naf =
+	      (1 - std::numeric_limits<_RealType>::epsilon()) / 2;
+	    const _RealType __thr =
+	      std::numeric_limits<_IntType>::max() + __naf;
+
+	    const _RealType __np = std::floor(_M_t * __p12);
+	    const _RealType __pa = __np / _M_t;
+
+	    // sqrt(pi / 2)
+	    const _RealType __spi_2 = 1.2533141373155002512078826424055226L;
+	    const _RealType __a1 = _M_a1;
+	    const _RealType __a12 = __a1 + _M_s2 * __spi_2;
+	    const _RealType __a123 = _M_a123;
+	    const _RealType __s1s = _M_s1 * _M_s1;
+	    const _RealType __s2s = _M_s2 * _M_s2;
+
+	    bool __reject;
+	    do
+	      {
+		const _RealType __u = _M_s * __urng();
+
+		_RealType __v;
+
+		if (__u <= __a1)
+		  {
+		    const _RealType __n = _M_nd(__urng);
+		    const _RealType __y = _M_s1 * std::abs(__n);
+		    __reject = __y >= _M_d1;
+		    if (!__reject)
+		      {
+			const _RealType __e = -std::log(__urng());
+			__x = std::floor(__y);
+			__v = -__e - __n * __n / 2 + _M_c;
+		      }
+		  }
+		else if (__u <= __a12)
+		  {
+		    const _RealType __n = _M_nd(__urng);
+		    const _RealType __y = _M_s2 * std::abs(__n);
+		    __reject = __y >= _M_d2;
+		    if (!__reject)
+		      {
+			const _RealType __e = -std::log(__urng());
+			__x = std::floor(-__y);
+			__v = -__e - __n * __n / 2;
+		      }
+		  }
+		else if (__u <= __a123)
+		  {
+		    const _RealType __e1 = -std::log(__urng());		    
+		    const _RealType __e2 = -std::log(__urng());
+
+		    const _RealType __y = _M_d1 + 2 * __s1s * __e1 / _M_d1;
+		    __x = std::floor(__y);
+		    __v = (-__e2 + _M_d1 * (1 / (_M_t - __np)
+					    -__y / (2 * __s1s)));
+		    __reject = false;
+		  }
+		else
+		  {
+		    const _RealType __e1 = -std::log(__urng());		    
+		    const _RealType __e2 = -std::log(__urng());
+
+		    const _RealType __y = _M_d2 + 2 * __s2s * __e1 / _M_d2;
+		    __x = std::floor(-__y);
+		    __v = -__e2 - _M_d2 * __y / (2 * __s2s);
+		    __reject = false;
+		  }
+
+		__reject = __reject || __x < -__np || __x > _M_t - __np;
+		if (!__reject)
+		  {
+		    const _RealType __lfx =
+		      std::tr1::lgamma(__np + __x + 1)
+		      + std::tr1::lgamma(_M_t - (__np + __x) + 1);
+		    __reject = __v > _M_lf - __lfx + __x * _M_lp1p;
+		  }
+
+		__reject |= __x + __np >= __thr;
+	      }
+	    while (__reject);
+
+	    __x += __np + __naf;
+
+	    const _IntType __z = _M_waiting(__urng, _M_t - _IntType(__x)); 
+	    __ret = _IntType(__x) + __z;
+	  }
+	else
+#endif
+	  __ret = _M_waiting(__urng, _M_t);
+
+	if (__p12 != _M_p)
+	  __ret = _M_t - __ret;
+	return __ret;
+      }
+
+  template<typename _IntType, typename _RealType,
+	   typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const binomial_distribution<_IntType, _RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.t() << __space << __x.p() 
+	   << __space << __x._M_nd;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _IntType, typename _RealType,
+	   typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       binomial_distribution<_IntType, _RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_t >> __x._M_p >> __x._M_nd;
+      __x._M_initialize();
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const uniform_real<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.min() << __space << __x.max();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       uniform_real<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::skipws);
+
+      __is >> __x._M_min >> __x._M_max;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const exponential_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.lambda();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+
+  /**
+   * Polar method due to Marsaglia.
+   *
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. V, Sect. 4.4.
+   */
+  template<typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename normal_distribution<_RealType>::result_type
+      normal_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	result_type __ret;
+
+	if (_M_saved_available)
+	  {
+	    _M_saved_available = false;
+	    __ret = _M_saved;
+	  }
+	else
+	  {
+	    result_type __x, __y, __r2;
+	    do
+	      {
+		__x = result_type(2.0) * __urng() - 1.0;
+		__y = result_type(2.0) * __urng() - 1.0;
+		__r2 = __x * __x + __y * __y;
+	      }
+	    while (__r2 > 1.0 || __r2 == 0.0);
+
+	    const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2);
+	    _M_saved = __x * __mult;
+	    _M_saved_available = true;
+	    __ret = __y * __mult;
+	  }
+	
+	__ret = __ret * _M_sigma + _M_mean;
+	return __ret;
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const normal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      const _CharT __space = __os.widen(' ');
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__space);
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x._M_saved_available << __space
+	   << __x.mean() << __space
+	   << __x.sigma();
+      if (__x._M_saved_available)
+	__os << __space << __x._M_saved;
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_istream<_CharT, _Traits>&
+    operator>>(std::basic_istream<_CharT, _Traits>& __is,
+	       normal_distribution<_RealType>& __x)
+    {
+      typedef std::basic_istream<_CharT, _Traits>  __istream_type;
+      typedef typename __istream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __is.flags();
+      __is.flags(__ios_base::dec | __ios_base::skipws);
+
+      __is >> __x._M_saved_available >> __x._M_mean
+	   >> __x._M_sigma;
+      if (__x._M_saved_available)
+	__is >> __x._M_saved;
+
+      __is.flags(__flags);
+      return __is;
+    }
+
+
+  template<typename _RealType>
+    void
+    gamma_distribution<_RealType>::
+    _M_initialize()
+    {
+      if (_M_alpha >= 1)
+	_M_l_d = std::sqrt(2 * _M_alpha - 1);
+      else
+	_M_l_d = (std::pow(_M_alpha, _M_alpha / (1 - _M_alpha))
+		  * (1 - _M_alpha));
+    }
+
+  /**
+   * Cheng's rejection algorithm GB for alpha >= 1 and a modification
+   * of Vaduva's rejection from Weibull algorithm due to Devroye for
+   * alpha < 1.
+   *
+   * References:
+   * Cheng, R. C. The Generation of Gamma Random Variables with Non-integral
+   * Shape Parameter. Applied Statistics, 26, 71-75, 1977.
+   *
+   * Vaduva, I. Computer Generation of Gamma Gandom Variables by Rejection
+   * and Composition Procedures. Math. Operationsforschung and Statistik,
+   * Series in Statistics, 8, 545-576, 1977.
+   *
+   * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag,
+   * New York, 1986, Ch. IX, Sect. 3.4 (+ Errata!).
+   */
+  template<typename _RealType>
+    template<class _UniformRandomNumberGenerator>
+      typename gamma_distribution<_RealType>::result_type
+      gamma_distribution<_RealType>::
+      operator()(_UniformRandomNumberGenerator& __urng)
+      {
+	result_type __x;
+
+	bool __reject;
+	if (_M_alpha >= 1)
+	  {
+	    // alpha - log(4)
+	    const result_type __b = _M_alpha
+	      - result_type(1.3862943611198906188344642429163531L);
+	    const result_type __c = _M_alpha + _M_l_d;
+	    const result_type __1l = 1 / _M_l_d;
+
+	    // 1 + log(9 / 2)
+	    const result_type __k = 2.5040773967762740733732583523868748L;
+
+	    do
+	      {
+		const result_type __u = __urng();
+		const result_type __v = __urng();
+
+		const result_type __y = __1l * std::log(__v / (1 - __v));
+		__x = _M_alpha * std::exp(__y);
+
+		const result_type __z = __u * __v * __v;
+		const result_type __r = __b + __c * __y - __x;
+
+		__reject = __r < result_type(4.5) * __z - __k;
+		if (__reject)
+		  __reject = __r < std::log(__z);
+	      }
+	    while (__reject);
+	  }
+	else
+	  {
+	    const result_type __c = 1 / _M_alpha;
+
+	    do
+	      {
+		const result_type __z = -std::log(__urng());
+		const result_type __e = -std::log(__urng());
+
+		__x = std::pow(__z, __c);
+
+		__reject = __z + __e < _M_l_d + __x;
+	      }
+	    while (__reject);
+	  }
+
+	return __x;
+      }
+
+  template<typename _RealType, typename _CharT, typename _Traits>
+    std::basic_ostream<_CharT, _Traits>&
+    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+	       const gamma_distribution<_RealType>& __x)
+    {
+      typedef std::basic_ostream<_CharT, _Traits>  __ostream_type;
+      typedef typename __ostream_type::ios_base    __ios_base;
+
+      const typename __ios_base::fmtflags __flags = __os.flags();
+      const _CharT __fill = __os.fill();
+      const std::streamsize __precision = __os.precision();
+      __os.flags(__ios_base::scientific | __ios_base::left);
+      __os.fill(__os.widen(' '));
+      __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
+
+      __os << __x.alpha();
+
+      __os.flags(__flags);
+      __os.fill(__fill);
+      __os.precision(__precision);
+      return __os;
+    }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/regex b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/regex
new file mode 100644
index 000000000..714a06d33
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/regex
@@ -0,0 +1,2730 @@
+// class template regex -*- C++ -*-
+
+// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/**
+ * @file tr1/regex
+ * @author Stephen M. Webb  <stephen.webb@bregmasoft.ca>
+ * This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_REGEX
+#define _GLIBCXX_TR1_REGEX 1
+
+#pragma GCC system_header
+
+#include <algorithm>
+#include <bitset>
+#include <iterator>
+#include <locale>
+#include <stdexcept>
+#include <string>
+#include <vector>
+#include <utility>
+#include <sstream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+/**
+ * @defgroup tr1_regex Regular Expressions
+ * A facility for performing regular expression pattern matching.
+ */
+ //@{
+
+/** @namespace std::regex_constants
+ *  @brief ISO C++ 0x entities sub namespace for regex.
+ */
+namespace regex_constants
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @name 5.1 Regular Expression Syntax Options
+   */
+  //@{
+  enum __syntax_option
+    {
+      _S_icase,
+      _S_nosubs,
+      _S_optimize,
+      _S_collate,
+      _S_ECMAScript,
+      _S_basic,
+      _S_extended,
+      _S_awk,
+      _S_grep,
+      _S_egrep,
+      _S_syntax_last
+    };
+
+  /**
+   * @brief This is a bitmask type indicating how to interpret the regex.
+   *
+   * The @c syntax_option_type is implementation defined but it is valid to
+   * perform bitwise operations on these values and expect the right thing to
+   * happen.
+   *
+   * A valid value of type syntax_option_type shall have exactly one of the
+   * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep
+   * %set.
+   */
+  typedef unsigned int syntax_option_type;
+
+  /** 
+   * Specifies that the matching of regular expressions against a character
+   * sequence shall be performed without regard to case.
+   */
+  static const syntax_option_type icase      = 1 << _S_icase;
+
+  /**
+   * Specifies that when a regular expression is matched against a character
+   * container sequence, no sub-expression matches are to be stored in the
+   * supplied match_results structure.
+   */
+  static const syntax_option_type nosubs     = 1 << _S_nosubs;
+
+  /**
+   * Specifies that the regular expression engine should pay more attention to
+   * the speed with which regular expressions are matched, and less to the
+   * speed with which regular expression objects are constructed. Otherwise
+   * it has no detectable effect on the program output.
+   */
+  static const syntax_option_type optimize   = 1 << _S_optimize;
+
+  /**
+   * Specifies that character ranges of the form [a-b] should be locale
+   * sensitive.
+   */
+  static const syntax_option_type collate    = 1 << _S_collate;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript
+   * Language Specification, Standard Ecma-262, third edition, 1999], as
+   * modified in tr1 section [7.13].  This grammar is similar to that defined
+   * in the PERL scripting language but extended with elements found in the
+   * POSIX regular expression grammar.
+   */
+  static const syntax_option_type ECMAScript = 1 << _S_ECMAScript;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001,
+   * Portable Operating System Interface (POSIX), Base Definitions and
+   * Headers, Section 9, Regular Expressions [IEEE, Information Technology --
+   * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
+   */
+  static const syntax_option_type basic      = 1 << _S_basic;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001,
+   * Portable Operating System Interface (POSIX), Base Definitions and Headers,
+   * Section 9, Regular Expressions.
+   */
+  static const syntax_option_type extended   = 1 << _S_extended;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility awk in IEEE Std 1003.1-2001.  This option is
+   * identical to syntax_option_type extended, except that C-style escape
+   * sequences are supported.  These sequences are: 
+   * \\\\, \\a, \\b, \\f, 
+   * \\n, \\r, \\t , \\v, 
+   * \\', ', and \\ddd 
+   * (where ddd is one, two, or three octal digits).  
+   */
+  static const syntax_option_type awk        = 1 << _S_awk;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility grep in IEEE Std 1003.1-2001.  This option is
+   * identical to syntax_option_type basic, except that newlines are treated
+   * as whitespace.
+   */
+  static const syntax_option_type grep       = 1 << _S_grep;
+
+  /**
+   * Specifies that the grammar recognized by the regular expression engine is
+   * that used by POSIX utility grep when given the -E option in
+   * IEEE Std 1003.1-2001.  This option is identical to syntax_option_type 
+   * extended, except that newlines are treated as whitespace.
+   */
+  static const syntax_option_type egrep      = 1 << _S_egrep;
+
+  //@}
+
+  /**
+   * @name 5.2 Matching Rules
+   *
+   * Matching a regular expression against a sequence of characters [first,
+   * last) proceeds according to the rules of the grammar specified for the
+   * regular expression object, modified according to the effects listed
+   * below for any bitmask elements set.
+   *
+   */
+  //@{
+
+  enum __match_flag
+    {
+      _S_not_bol,
+      _S_not_eol,
+      _S_not_bow,
+      _S_not_eow,
+      _S_any,
+      _S_not_null,
+      _S_continuous,
+      _S_prev_avail,
+      _S_sed,
+      _S_no_copy,
+      _S_first_only,
+      _S_match_flag_last
+    };
+
+  /**
+   * @brief This is a bitmask type indicating regex matching rules.
+   *
+   * The @c match_flag_type is implementation defined but it is valid to
+   * perform bitwise operations on these values and expect the right thing to
+   * happen.
+   */
+  typedef std::bitset<_S_match_flag_last> match_flag_type;
+
+  /**
+   * The default matching rules.
+   */
+  static const match_flag_type match_default     = 0;
+
+  /**
+   * The first character in the sequence [first, last) is treated as though it
+   * is not at the beginning of a line, so the character (^) in the regular
+   * expression shall not match [first, first).
+   */
+  static const match_flag_type match_not_bol     = 1 << _S_not_bol;
+
+  /**
+   * The last character in the sequence [first, last) is treated as though it
+   * is not at the end of a line, so the character ($) in the regular
+   * expression shall not match [last, last).
+   */
+  static const match_flag_type match_not_eol     = 1 << _S_not_eol;
+   
+  /**
+   * The expression \\b is not matched against the sub-sequence
+   * [first,first).
+   */
+  static const match_flag_type match_not_bow     = 1 << _S_not_bow;
+   
+  /**
+   * The expression \\b should not be matched against the sub-sequence
+   * [last,last).
+   */
+  static const match_flag_type match_not_eow     = 1 << _S_not_eow;
+   
+  /**
+   * If more than one match is possible then any match is an acceptable
+   * result.
+   */
+  static const match_flag_type match_any         = 1 << _S_any;
+   
+  /**
+   * The expression does not match an empty sequence.
+   */
+  static const match_flag_type match_not_null    = 1 << _S_not_null;
+   
+  /**
+   * The expression only matches a sub-sequence that begins at first .
+   */
+  static const match_flag_type match_continuous  = 1 << _S_continuous;
+   
+  /**
+   * --first is a valid iterator position.  When this flag is set then the
+   * flags match_not_bol and match_not_bow are ignored by the regular
+   * expression algorithms 7.11 and iterators 7.12.
+   */
+  static const match_flag_type match_prev_avail  = 1 << _S_prev_avail;
+
+  /**
+   * When a regular expression match is to be replaced by a new string, the
+   * new string is constructed using the rules used by the ECMAScript replace
+   * function in ECMA- 262 [Ecma International, ECMAScript Language
+   * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11
+   * String.prototype.replace. In addition, during search and replace
+   * operations all non-overlapping occurrences of the regular expression
+   * are located and replaced, and sections of the input that did not match
+   * the expression are copied unchanged to the output string.
+   * 
+   * Format strings (from ECMA-262 [15.5.4.11]):
+   * @li $$  The dollar-sign itself ($)
+   * @li $&  The matched substring.
+   * @li $`  The portion of @a string that precedes the matched substring.
+   *         This would be match_results::prefix().
+   * @li $'  The portion of @a string that follows the matched substring.
+   *         This would be match_results::suffix().
+   * @li $n  The nth capture, where n is in [1,9] and $n is not followed by a
+   *         decimal digit.  If n <= match_results::size() and the nth capture
+   *         is undefined, use the empty string instead.  If n >
+   *         match_results::size(), the result is implementation-defined.
+   * @li $nn The nnth capture, where nn is a two-digit decimal number on
+   *         [01, 99].  If nn <= match_results::size() and the nth capture is
+   *         undefined, use the empty string instead. If
+   *         nn > match_results::size(), the result is implementation-defined.
+   */
+  static const match_flag_type format_default    = 0;
+
+  /**
+   * When a regular expression match is to be replaced by a new string, the
+   * new string is constructed using the rules used by the POSIX sed utility
+   * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable
+   * Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
+   */
+  static const match_flag_type format_sed        = 1 << _S_sed;
+
+  /**
+   * During a search and replace operation, sections of the character
+   * container sequence being searched that do not match the regular
+   * expression shall not be copied to the output string.
+   */
+  static const match_flag_type format_no_copy    = 1 << _S_no_copy;
+
+  /**
+   * When specified during a search and replace operation, only the first
+   * occurrence of the regular expression shall be replaced.
+   */
+  static const match_flag_type format_first_only = 1 << _S_first_only;
+
+  //@}
+
+  /**
+   * @name 5.3 Error Types
+   */
+  //@{
+ 
+  enum error_type
+    {
+      _S_error_collate,
+      _S_error_ctype,
+      _S_error_escape,
+      _S_error_backref,
+      _S_error_brack,
+      _S_error_paren,
+      _S_error_brace,
+      _S_error_badbrace,
+      _S_error_range,
+      _S_error_space,
+      _S_error_badrepeat,
+      _S_error_complexity,
+      _S_error_stack,
+      _S_error_last
+    };
+
+  /** The expression contained an invalid collating element name. */
+  static const error_type error_collate(_S_error_collate);
+
+  /** The expression contained an invalid character class name. */
+  static const error_type error_ctype(_S_error_ctype);
+
+  /**
+   * The expression contained an invalid escaped character, or a trailing
+   * escape.
+   */
+  static const error_type error_escape(_S_error_escape);
+
+  /** The expression contained an invalid back reference. */
+  static const error_type error_backref(_S_error_backref);
+
+  /** The expression contained mismatched [ and ]. */
+  static const error_type error_brack(_S_error_brack);
+
+  /** The expression contained mismatched ( and ). */
+  static const error_type error_paren(_S_error_paren);
+
+  /** The expression contained mismatched { and } */
+  static const error_type error_brace(_S_error_brace);
+
+  /** The expression contained an invalid range in a {} expression. */
+  static const error_type error_badbrace(_S_error_badbrace);
+
+  /**
+   * The expression contained an invalid character range,
+   * such as [b-a] in most encodings.
+   */
+  static const error_type error_range(_S_error_range);
+
+  /**
+   * There was insufficient memory to convert the expression into a
+   * finite state machine.
+   */
+  static const error_type error_space(_S_error_space);
+
+  /**
+   * One of <em>*?+{</em> was not preceded by a valid regular expression.
+   */
+  static const error_type error_badrepeat(_S_error_badrepeat);
+
+  /**
+   * The complexity of an attempted match against a regular expression
+   * exceeded a pre-set level.
+   */
+  static const error_type error_complexity(_S_error_complexity);
+
+  /**
+   * There was insufficient memory to determine whether the
+   * regular expression could match the specified character sequence.
+   */
+  static const error_type error_stack(_S_error_stack);
+
+  //@}
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // [7.8] Class regex_error
+  /**
+   *  @brief A regular expression exception class.
+   *  @ingroup exceptions
+   *
+   *  The regular expression library throws objects of this class on error.
+   */
+  class regex_error
+  : public std::runtime_error
+  {
+  public:
+    /**
+     * @brief Constructs a regex_error object.
+     *
+     * @param ecode the regex error code.
+     */
+    explicit
+    regex_error(regex_constants::error_type __ecode)
+    : std::runtime_error("regex_error"), _M_code(__ecode)
+    { }
+
+    /**
+     * @brief Gets the regex error code.
+     *
+     * @returns the regex error code.
+     */
+    regex_constants::error_type
+    code() const
+    { return _M_code; }
+
+  protected:
+    regex_constants::error_type _M_code;
+  };
+
+  // [7.7] Class regex_traits
+  /**
+   * @brief Describes aspects of a regular expression.
+   *
+   * A regular expression traits class that satisfies the requirements of tr1
+   * section [7.2].
+   *
+   * The class %regex is parameterized around a set of related types and
+   * functions used to complete the definition of its semantics.  This class
+   * satisfies the requirements of such a traits class.
+   */
+  template<typename _Ch_type>
+    struct regex_traits
+    {
+    public:
+      typedef _Ch_type                     char_type;
+      typedef std::basic_string<char_type> string_type;
+      typedef std::locale                  locale_type;
+      typedef std::ctype_base::mask        char_class_type;
+
+    public:
+      /**
+       * @brief Constructs a default traits object.
+       */
+      regex_traits()
+      { }
+      
+      /**
+       * @brief Gives the length of a C-style string starting at @p __p.
+       *
+       * @param __p a pointer to the start of a character sequence.
+       *
+       * @returns the number of characters between @p *__p and the first
+       * default-initialized value of type @p char_type.  In other words, uses
+       * the C-string algorithm for determining the length of a sequence of
+       * characters.
+       */
+      static std::size_t
+      length(const char_type* __p)
+      { return string_type::traits_type::length(__p); }
+
+      /**
+       * @brief Performs the identity translation.
+       *
+       * @param c A character to the locale-specific character set.
+       *
+       * @returns c.
+       */
+      char_type
+      translate(char_type __c) const
+      { return __c; }
+      
+      /**
+       * @brief Translates a character into a case-insensitive equivalent.
+       *
+       * @param c A character to the locale-specific character set.
+       *
+       * @returns the locale-specific lower-case equivalent of c.
+       * @throws std::bad_cast if the imbued locale does not support the ctype
+       *         facet.
+       */
+      char_type
+      translate_nocase(char_type __c) const
+      {
+	using std::ctype;
+	using std::use_facet;
+	return use_facet<ctype<char_type> >(_M_locale).tolower(__c);
+      }
+      
+      /**
+       * @brief Gets a sort key for a character sequence.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       *
+       * Returns a sort key for the character sequence designated by the
+       * iterator range [F1, F2) such that if the character sequence [G1, G2)
+       * sorts before the character sequence [H1, H2) then
+       * v.transform(G1, G2) < v.transform(H1, H2).
+       *
+       * What this really does is provide a more efficient way to compare a
+       * string to multiple other strings in locales with fancy collation
+       * rules and equivalence classes.
+       *
+       * @returns a locale-specific sort key equivalent to the input range.
+       *
+       * @throws std::bad_cast if the current locale does not have a collate
+       *         facet.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        transform(_Fwd_iter __first, _Fwd_iter __last) const
+        {
+	  using std::collate;
+	  using std::use_facet;
+	  const collate<_Ch_type>& __c(use_facet<
+				       collate<_Ch_type> >(_M_locale));
+	  string_type __s(__first, __last);
+	  return __c.transform(__s.data(), __s.data() + __s.size());
+	}
+
+      /**
+       * @brief Dunno.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       *
+       * Effects: if typeid(use_facet<collate<_Ch_type> >) ==
+       * typeid(collate_byname<_Ch_type>) and the form of the sort key
+       * returned by collate_byname<_Ch_type>::transform(first, last) is known
+       * and can be converted into a primary sort key then returns that key,
+       * otherwise returns an empty string. WTF??
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        transform_primary(_Fwd_iter __first, _Fwd_iter __last) const;
+
+      /**
+       * @brief Gets a collation element by name.
+       *
+       * @param first beginning of the collation element name.
+       * @param last  one-past-the-end of the collation element name.
+       * 
+       * @returns a sequence of one or more characters that represents the
+       * collating element consisting of the character sequence designated by
+       * the iterator range [first, last). Returns an empty string if the
+       * character sequence is not a valid collating element.
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        string_type
+        lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const;
+
+      /**
+       * @brief Maps one or more characters to a named character
+       *        classification.
+       *
+       * @param first beginning of the character sequence.
+       * @param last  one-past-the-end of the character sequence.
+       *
+       * @returns an unspecified value that represents the character
+       * classification named by the character sequence designated by the
+       * iterator range [first, last). The value returned shall be independent
+       * of the case of the characters in the character sequence. If the name
+       * is not recognized then returns a value that compares equal to 0.
+       *
+       * At least the following names (or their wide-character equivalent) are
+       * supported.
+       * - d
+       * - w
+       * - s
+       * - alnum
+       * - alpha
+       * - blank
+       * - cntrl
+       * - digit
+       * - graph
+       * - lower
+       * - print
+       * - punct
+       * - space
+       * - upper
+       * - xdigit
+       *
+       * @todo Implement this function.
+       */
+      template<typename _Fwd_iter>
+        char_class_type
+        lookup_classname(_Fwd_iter __first, _Fwd_iter __last) const;
+
+      /**
+       * @brief Determines if @p c is a member of an identified class.
+       *
+       * @param c a character.
+       * @param f a class type (as returned from lookup_classname).
+       *
+       * @returns true if the character @p c is a member of the classification
+       * represented by @p f, false otherwise.
+       *
+       * @throws std::bad_cast if the current locale does not have a ctype
+       *         facet.
+       */
+      bool
+      isctype(_Ch_type __c, char_class_type __f) const;
+
+      /**
+       * @brief Converts a digit to an int.
+       *
+       * @param ch    a character representing a digit.
+       * @param radix the radix if the numeric conversion (limited to 8, 10,
+       *              or 16).
+       * 
+       * @returns the value represented by the digit ch in base radix if the
+       * character ch is a valid digit in base radix; otherwise returns -1.
+       */
+      int
+      value(_Ch_type __ch, int __radix) const;
+      
+      /**
+       * @brief Imbues the regex_traits object with a copy of a new locale.
+       *
+       * @param loc A locale.
+       *
+       * @returns a copy of the previous locale in use by the regex_traits
+       *          object.
+       *
+       * @note Calling imbue with a different locale than the one currently in
+       *       use invalidates all cached data held by *this.
+       */
+      locale_type
+      imbue(locale_type __loc)
+      {
+	std::swap(_M_locale, __loc);
+	return __loc;
+      }
+      
+      /**
+       * @brief Gets a copy of the current locale in use by the regex_traits
+       * object.
+       */
+      locale_type
+      getloc() const
+      { return _M_locale; }
+      
+    protected:
+      locale_type _M_locale;
+    };
+
+  template<typename _Ch_type>
+    bool regex_traits<_Ch_type>::
+    isctype(_Ch_type __c, char_class_type __f) const
+    {
+      using std::ctype;
+      using std::use_facet;
+      const ctype<_Ch_type>& __ctype(use_facet<
+				     ctype<_Ch_type> >(_M_locale));
+      
+      if (__ctype.is(__c, __f))
+	return true;
+      
+      // special case of underscore in [[:w:]]
+      if (__c == __ctype.widen('_'))
+	{
+	  const char* const __wb[] = "w";
+	  char_class_type __wt = this->lookup_classname(__wb,
+							__wb + sizeof(__wb));
+	  if (__f | __wt)
+	    return true;
+	}
+    
+      // special case of [[:space:]] in [[:blank:]]
+      if (__c == __ctype.isspace(__c))
+	{
+	  const char* const __bb[] = "blank";
+	  char_class_type __bt = this->lookup_classname(__bb,
+							__bb + sizeof(__bb));
+	  if (__f | __bt)
+	    return true;
+	}
+      
+      return false;
+    }
+
+  template<typename _Ch_type>
+    int regex_traits<_Ch_type>::
+    value(_Ch_type __ch, int __radix) const
+    {
+      std::basic_istringstream<_Ch_type> __is(string_type(1, __ch));
+      int __v;
+      if (__radix == 8)
+	__is >> std::oct;
+      else if (__radix == 16)
+	__is >> std::hex;
+      __is >> __v;
+      return __is.fail() ? -1 : __v;
+    }
+
+  // [7.8] Class basic_regex
+  /**
+   * Objects of specializations of this class represent regular expressions
+   * constructed from sequences of character type @p _Ch_type.
+   *
+   * Storage for the regular expression is allocated and deallocated as
+   * necessary by the member functions of this class.
+   */
+  template<typename _Ch_type, typename _Rx_traits = regex_traits<_Ch_type> >
+    class basic_regex
+    {
+    public:
+      // types:
+      typedef _Ch_type                              value_type;
+      typedef regex_constants::syntax_option_type flag_type;
+      typedef typename _Rx_traits::locale_type  locale_type;
+      typedef typename _Rx_traits::string_type  string_type;
+
+      /**
+       * @name Constants
+       * tr1 [7.8.1] std [28.8.1]
+       */
+      //@{
+      static const regex_constants::syntax_option_type icase
+        = regex_constants::icase;
+      static const regex_constants::syntax_option_type nosubs
+        = regex_constants::nosubs;
+      static const regex_constants::syntax_option_type optimize
+        = regex_constants::optimize;
+      static const regex_constants::syntax_option_type collate
+        = regex_constants::collate;
+      static const regex_constants::syntax_option_type ECMAScript
+        = regex_constants::ECMAScript;
+      static const regex_constants::syntax_option_type basic
+        = regex_constants::basic;
+      static const regex_constants::syntax_option_type extended
+        = regex_constants::extended;
+      static const regex_constants::syntax_option_type awk
+        = regex_constants::awk;
+      static const regex_constants::syntax_option_type grep
+        = regex_constants::grep;
+      static const regex_constants::syntax_option_type egrep
+        = regex_constants::egrep;
+      //@}
+
+      // [7.8.2] construct/copy/destroy
+      /**
+       * Constructs a basic regular expression that does not match any
+       * character sequence.
+       */
+      basic_regex()
+      : _M_flags(regex_constants::ECMAScript), _M_pattern(), _M_mark_count(0)
+      { _M_compile(); }
+
+      /**
+       * @brief Constructs a basic regular expression from the sequence
+       * [p, p + char_traits<_Ch_type>::length(p)) interpreted according to the
+       * flags in @p f.
+       *
+       * @param p A pointer to the start of a C-style null-terminated string
+       *          containing a regular expression.
+       * @param f Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p p is not a valid regular expression.
+       */
+      explicit
+      basic_regex(const _Ch_type* __p,
+		  flag_type __f = regex_constants::ECMAScript)
+      : _M_flags(__f), _M_pattern(__p), _M_mark_count(0)
+      { _M_compile(); }
+
+      /**
+       * @brief Constructs a basic regular expression from the sequence
+       * [p, p + len) interpreted according to the flags in @p f.
+       *
+       * @param p   A pointer to the start of a string containing a regular
+       *            expression.
+       * @param len The length of the string containing the regular expression.
+       * @param f   Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p p is not a valid regular expression.
+       */
+      basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f)
+      : _M_flags(__f) , _M_pattern(__p, __len), _M_mark_count(0)
+      { _M_compile(); }
+
+      /**
+       * @brief Copy-constructs a basic regular expression.
+       *
+       * @param rhs A @p regex object.
+     */
+      basic_regex(const basic_regex& __rhs)
+      : _M_flags(__rhs._M_flags), _M_pattern(__rhs._M_pattern),
+	_M_mark_count(__rhs._M_mark_count)
+      { _M_compile(); }
+
+      /**
+       * @brief Constructs a basic regular expression from the string
+       * @p s interpreted according to the flags in @p f.
+       *
+       * @param s A string containing a regular expression.
+       * @param f Flags indicating the syntax rules and options.
+       *
+       * @throws regex_error if @p s is not a valid regular expression.
+       */
+      template<typename _Ch_traits, typename _Ch_alloc>
+        explicit
+        basic_regex(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
+		    flag_type __f = regex_constants::ECMAScript)
+	: _M_flags(__f), _M_pattern(__s.begin(), __s.end()), _M_mark_count(0)
+        { _M_compile(); }
+
+      /**
+       * @brief Constructs a basic regular expression from the range
+       * [first, last) interpreted according to the flags in @p f.
+       *
+       * @param first The start of a range containing a valid regular
+       *              expression.
+       * @param last  The end of a range containing a valid regular
+       *              expression.
+       * @param f     The format flags of the regular expression.
+       *
+       * @throws regex_error if @p [first, last) is not a valid regular
+       *         expression.
+       */
+      template<typename _InputIterator>
+        basic_regex(_InputIterator __first, _InputIterator __last, 
+		    flag_type __f = regex_constants::ECMAScript)
+	: _M_flags(__f), _M_pattern(__first, __last), _M_mark_count(0)
+        { _M_compile(); }
+
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+      /**
+       * @brief Constructs a basic regular expression from an initializer list.
+       *
+       * @param l  The initializer list.
+       * @param f  The format flags of the regular expression.
+       *
+       * @throws regex_error if @p l is not a valid regular expression.
+       */
+      basic_regex(initializer_list<_Ch_type> __l,
+		  flag_type __f = regex_constants::ECMAScript)
+	: _M_flags(__f), _M_pattern(__l.begin(), __l.end()), _M_mark_count(0)
+        { _M_compile(); }
+#endif
+
+      /**
+       * @brief Destroys a basic regular expression.
+       */
+      ~basic_regex()
+      { }
+      
+      /**
+       * @brief Assigns one regular expression to another.
+       */
+      basic_regex&
+      operator=(const basic_regex& __rhs)
+      { return this->assign(__rhs); }
+
+      /**
+       * @brief Replaces a regular expression with a new one constructed from
+       * a C-style null-terminated string.
+       *
+       * @param A pointer to the start of a null-terminated C-style string
+       *        containing a regular expression.
+       */
+      basic_regex&
+      operator=(const _Ch_type* __p)
+      { return this->assign(__p, flags()); }
+      
+      /**
+       * @brief Replaces a regular expression with a new one constructed from
+       * a string.
+       *
+       * @param A pointer to a string containing a regular expression.
+       */
+      template<typename _Ch_typeraits, typename _Allocator>
+        basic_regex&
+        operator=(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s)
+        { return this->assign(__s, flags()); }
+
+      // [7.8.3] assign
+      /**
+       * @brief the real assignment operator.
+       *
+       * @param that Another regular expression object.
+       */
+      basic_regex&
+      assign(const basic_regex& __that)
+      {
+	basic_regex __tmp(__that);
+	this->swap(__tmp);
+	return *this;
+      }
+      
+      /**
+       * @brief Assigns a new regular expression to a regex object from a
+       * C-style null-terminated string containing a regular expression
+       * pattern.
+       *
+       * @param p     A pointer to a C-style null-terminated string containing
+       *              a regular expression pattern.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      basic_regex&
+      assign(const _Ch_type* __p,
+	     flag_type __flags = regex_constants::ECMAScript)
+      { return this->assign(string_type(__p), __flags); }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object from a
+       * C-style string containing a regular expression pattern.
+       *
+       * @param p     A pointer to a C-style string containing a
+       *              regular expression pattern.
+       * @param len   The length of the regular expression pattern string.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      basic_regex&
+      assign(const _Ch_type* __p, std::size_t __len, flag_type __flags)
+      { return this->assign(string_type(__p, __len), __flags); }
+
+      /**
+       * @brief Assigns a new regular expression to a regex object from a 
+       * string containing a regular expression pattern.
+       *
+       * @param s     A string containing a regular expression pattern.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * *this remains unchanged.
+       */
+      template<typename _Ch_typeraits, typename _Allocator>
+        basic_regex&
+        assign(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s,
+	       flag_type __f = regex_constants::ECMAScript)
+        { 
+	  basic_regex __tmp(__s, __f);
+	  this->swap(__tmp);
+	  return *this;
+	}
+
+      /**
+       * @brief Assigns a new regular expression to a regex object.
+       *
+       * @param first The start of a range containing a valid regular
+       *              expression.
+       * @param last  The end of a range containing a valid regular
+       *              expression.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if p does not contain a valid regular expression
+       * pattern interpreted according to @p flags.  If regex_error is thrown,
+       * the object remains unchanged.
+       */
+      template<typename _InputIterator>
+        basic_regex&
+        assign(_InputIterator __first, _InputIterator __last,
+	       flag_type __flags = regex_constants::ECMAScript)
+        { return this->assign(string_type(__first, __last), __flags); }
+
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+      /**
+       * @brief Assigns a new regular expression to a regex object.
+       *
+       * @param l     An initializer list representing a regular expression.
+       * @param flags Syntax option flags.
+       *
+       * @throws regex_error if @p l does not contain a valid regular
+       * expression pattern interpreted according to @p flags.  If regex_error
+       * is thrown, the object remains unchanged.
+       */
+      basic_regex&
+      assign(initializer_list<_Ch_type> __l,
+	     flag_type __f = regex_constants::ECMAScript)
+      { return this->assign(__l.begin(), __l.end(), __f); }
+#endif
+
+      // [7.8.4] const operations
+      /**
+       * @brief Gets the number of marked subexpressions within the regular
+       * expression.
+       */
+      unsigned int
+      mark_count() const
+      { return _M_mark_count; }
+      
+      /**
+       * @brief Gets the flags used to construct the regular expression
+       * or in the last call to assign().
+       */
+      flag_type
+      flags() const
+      { return _M_flags; }
+      
+      // [7.8.5] locale
+      /**
+       * @brief Imbues the regular expression object with the given locale.
+       *
+       * @param loc A locale.
+       */
+      locale_type
+      imbue(locale_type __loc)
+      { return _M_traits.imbue(__loc); }
+      
+      /**
+       * @brief Gets the locale currently imbued in the regular expression
+       *        object.
+       */
+      locale_type
+      getloc() const
+      { return _M_traits.getloc(); }
+      
+      // [7.8.6] swap
+      /**
+       * @brief Swaps the contents of two regular expression objects.
+       *
+       * @param rhs Another regular expression object.
+       */
+      void
+      swap(basic_regex& __rhs)
+      {
+	std::swap(_M_flags,      __rhs._M_flags);
+	std::swap(_M_pattern,    __rhs._M_pattern);
+	std::swap(_M_mark_count, __rhs._M_mark_count);
+	std::swap(_M_traits,     __rhs._M_traits);
+      }
+      
+    private:
+      /**
+       * @brief Compiles a regular expression pattern into a NFA.
+       * @todo Implement this function.
+       */
+      void _M_compile();
+
+    protected:
+      flag_type    _M_flags;
+      string_type  _M_pattern;
+      unsigned int _M_mark_count;
+      _Rx_traits   _M_traits;
+    };
+  
+  /** @brief Standard regular expressions. */
+  typedef basic_regex<char>    regex;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Standard wide-character regular expressions. */
+  typedef basic_regex<wchar_t> wregex;
+#endif
+
+
+  // [7.8.6] basic_regex swap
+  /**
+   * @brief Swaps the contents of two regular expression objects.
+   * @param lhs First regular expression.
+   * @param rhs Second regular expression.
+   */
+  template<typename _Ch_type, typename _Rx_traits>
+    inline void
+    swap(basic_regex<_Ch_type, _Rx_traits>& __lhs,
+	 basic_regex<_Ch_type, _Rx_traits>& __rhs)
+    { __lhs.swap(__rhs); }
+
+
+  // [7.9] Class template sub_match
+  /**
+   * A sequence of characters matched by a particular marked sub-expression.
+   *
+   * An object of this class is essentially a pair of iterators marking a
+   * matched subexpression within a regular expression pattern match. Such
+   * objects can be converted to and compared with std::basic_string objects
+   * of a similar base character type as the pattern matched by the regular
+   * expression.
+   *
+   * The iterators that make up the pair are the usual half-open interval
+   * referencing the actual original pattern matched.
+   */
+  template<typename _BiIter>
+    class sub_match : public std::pair<_BiIter, _BiIter>
+    {
+    public:
+      typedef typename iterator_traits<_BiIter>::value_type      value_type;
+      typedef typename iterator_traits<_BiIter>::difference_type
+                                                            difference_type;
+      typedef _BiIter                                              iterator;
+
+    public:
+      bool matched;
+      
+      /**
+       * Gets the length of the matching sequence.
+       */
+      difference_type
+      length() const
+      { return this->matched ? std::distance(this->first, this->second) : 0; }
+
+      /**
+       * @brief Gets the matching sequence as a string.
+       *
+       * @returns the matching sequence as a string.
+       *
+       * This is the implicit conversion operator.  It is identical to the
+       * str() member function except that it will want to pop up in
+       * unexpected places and cause a great deal of confusion and cursing
+       * from the unwary.
+       */
+      operator basic_string<value_type>() const
+      {
+	return this->matched
+	  ? std::basic_string<value_type>(this->first, this->second)
+	  : std::basic_string<value_type>();
+      }
+      
+      /**
+       * @brief Gets the matching sequence as a string.
+       *
+       * @returns the matching sequence as a string.
+       */
+      basic_string<value_type>
+      str() const
+      {
+	return this->matched
+	  ? std::basic_string<value_type>(this->first, this->second)
+	  : std::basic_string<value_type>();
+      }
+      
+      /**
+       * @brief Compares this and another matched sequence.
+       *
+       * @param s Another matched sequence to compare to this one.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const sub_match& __s) const
+      { return this->str().compare(__s.str()); }
+
+      /**
+       * @brief Compares this sub_match to a string.
+       *
+       * @param s A string to compare to this sub_match.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const basic_string<value_type>& __s) const
+      { return this->str().compare(__s); }
+      
+      /**
+       * @brief Compares this sub_match to a C-style string.
+       *
+       * @param s A C-style string to compare to this sub_match.
+       *
+       * @retval <0 this matched sequence will collate before @p s.
+       * @retval =0 this matched sequence is equivalent to @p s.
+       * @retval <0 this matched sequence will collate after @p s.
+       */
+      int
+      compare(const value_type* __s) const
+      { return this->str().compare(__s); }
+    };
+  
+  
+  /** @brief Standard regex submatch over a C-style null-terminated string. */
+  typedef sub_match<const char*>             csub_match;
+  /** @brief Standard regex submatch over a standard string. */
+  typedef sub_match<string::const_iterator>  ssub_match;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Regex submatch over a C-style null-terminated wide string. */
+  typedef sub_match<const wchar_t*>          wcsub_match;
+  /** @brief Regex submatch over a standard wide string. */
+  typedef sub_match<wstring::const_iterator> wssub_match;
+#endif
+
+  // [7.9.2] sub_match non-member operators
+  
+  /**
+   * @brief Tests the equivalence of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator==(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) == 0; }
+
+  /**
+   * @brief Tests the inequivalence of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator!=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) != 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator<(const sub_match<_BiIter>& __lhs,
+	      const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) < 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator<=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) <= 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator>=(const sub_match<_BiIter>& __lhs,
+	       const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) >= 0; }
+
+  /**
+   * @brief Tests the ordering of two regular expression submatches.
+   * @param lhs First regular expression submatch.
+   * @param rhs Second regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _BiIter>
+    inline bool
+    operator>(const sub_match<_BiIter>& __lhs,
+	      const sub_match<_BiIter>& __rhs)
+    { return __lhs.compare(__rhs) > 0; }
+
+  /**
+   * @brief Tests the equivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator==(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs == __rhs.str(); }
+
+  /**
+   * @brief Tests the inequivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator!=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return __lhs != __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator<(const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+     { return __lhs < __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator>(const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type, 
+	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return __lhs > __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator>=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return __lhs >= __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator<=(const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
+    { return __lhs <= __rhs.str(); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() == __rhs; }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() != __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() < __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      const basic_string<
+	      typename iterator_traits<_Bi_iter>::value_type,
+	      _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() > __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() >= __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       const basic_string<
+	       typename iterator_traits<_Bi_iter>::value_type,
+	       _Ch_traits, _Ch_alloc>& __rhs)
+    { return __lhs.str() <= __rhs; }
+
+  /**
+   * @brief Tests the equivalence of a C string and a regular expression
+   *        submatch.
+   * @param lhs A C string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs == __rhs.str(); }
+
+  /**
+   * @brief Tests the inequivalence of an iterator value and a regular
+   *        expression submatch.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs != __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __lhs < __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __lhs > __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs >= __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs <= __rhs.str(); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A pointer to a string?
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() == __rhs; }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A pointer to a string.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() != __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() < __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() > __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() >= __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A string.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
+    { return __lhs.str() <= __rhs; }
+
+  /**
+   * @brief Tests the equivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs == __rhs.str(); }
+
+  /**
+   * @brief Tests the inequivalence of a string and a regular expression
+   *        submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs != __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __lhs < __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	      const sub_match<_Bi_iter>& __rhs)
+    { return __lhs > __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs >= __rhs.str(); }
+
+  /**
+   * @brief Tests the ordering of a string and a regular expression submatch.
+   * @param lhs A string.
+   * @param rhs A regular expression submatch.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
+	       const sub_match<_Bi_iter>& __rhs)
+    { return __lhs <= __rhs.str(); }
+
+  /**
+   * @brief Tests the equivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator==(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() == __rhs; }
+
+  /**
+   * @brief Tests the inequivalence of a regular expression submatch and a
+   *        string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator!=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() != __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs precedes @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() < __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs succeeds @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>(const sub_match<_Bi_iter>& __lhs,
+	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() > __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs does not precede @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator>=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() >= __rhs; }
+
+  /**
+   * @brief Tests the ordering of a regular expression submatch and a string.
+   * @param lhs A regular expression submatch.
+   * @param rhs A const string reference.
+   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
+   */
+  template<typename _Bi_iter>
+    inline bool
+    operator<=(const sub_match<_Bi_iter>& __lhs,
+	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
+    { return __lhs.str() <= __rhs; }
+
+  /**
+   * @brief Inserts a matched string into an output stream.
+   *
+   * @param os The output stream.
+   * @param m  A submatch string.
+   *
+   * @returns the output stream with the submatch string inserted.
+   */
+  template<typename _Ch_type, typename _Ch_traits, typename _Bi_iter>
+    inline
+    basic_ostream<_Ch_type, _Ch_traits>&
+    operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os,
+	       const sub_match<_Bi_iter>& __m)
+    { return __os << __m.str(); }
+
+  // [7.10] Class template match_results
+  /**
+   * @brief The results of a match or search operation.
+   *
+   * A collection of character sequences representing the result of a regular
+   * expression match.  Storage for the collection is allocated and freed as
+   * necessary by the member functions of class template match_results.
+   *
+   * This class satisfies the Sequence requirements, with the exception that
+   * only the operations defined for a const-qualified Sequence are supported.
+   *
+   * The sub_match object stored at index 0 represents sub-expression 0, i.e.
+   * the whole match. In this case the sub_match member matched is always true.
+   * The sub_match object stored at index n denotes what matched the marked
+   * sub-expression n within the matched expression. If the sub-expression n
+   * participated in a regular expression match then the sub_match member
+   * matched evaluates to true, and members first and second denote the range
+   * of characters [first, second) which formed that match. Otherwise matched
+   * is false, and members first and second point to the end of the sequence
+   * that was searched.
+   *
+   * @nosubgrouping
+   */
+  template<typename _Bi_iter,
+	   typename _Allocator = allocator<sub_match<_Bi_iter> > >
+    class match_results
+    : private std::vector<std::tr1::sub_match<_Bi_iter>, _Allocator>
+    {
+    private:
+      typedef std::vector<std::tr1::sub_match<_Bi_iter>, _Allocator>
+                                                              _Base_type;
+
+    public:
+      /**
+       * @name 10.? Public Types
+       */
+      //@{
+      typedef sub_match<_Bi_iter>                             value_type;
+      typedef typename _Allocator::const_reference            const_reference;
+      typedef const_reference                                 reference;
+      typedef typename _Base_type::const_iterator             const_iterator;
+      typedef const_iterator                                  iterator;
+      typedef typename iterator_traits<_Bi_iter>::difference_type
+                                                              difference_type;
+      typedef typename _Allocator::size_type                  size_type;
+      typedef _Allocator                                      allocator_type;
+      typedef typename iterator_traits<_Bi_iter>::value_type  char_type;
+      typedef basic_string<char_type>                         string_type;
+      //@}
+  
+    public:
+      /**
+       * @name 10.1 Construction, Copying, and Destruction
+       */
+      //@{
+
+      /**
+       * @brief Constructs a default %match_results container.
+       * @post size() returns 0 and str() returns an empty string.
+       */
+      explicit
+      match_results(const _Allocator& __a = _Allocator())
+      : _Base_type(__a), _M_matched(false)
+      { }
+
+      /**
+       * @brief Copy constructs a %match_results.
+       */
+      match_results(const match_results& __rhs)
+      : _Base_type(__rhs), _M_matched(__rhs._M_matched),
+	_M_prefix(__rhs._M_prefix), _M_suffix(__rhs._M_suffix)
+      { }
+
+      /**
+       * @brief Assigns rhs to *this.
+       */
+      match_results&
+      operator=(const match_results& __rhs)
+      {
+	match_results __tmp(__rhs);
+	this->swap(__tmp);
+	return *this;
+      }
+
+      /**
+       * @brief Destroys a %match_results object.
+       */
+      ~match_results()
+      { }
+      
+      //@}
+
+      /**
+       * @name 10.2 Size
+       */
+      //@{
+
+      /**
+       * @brief Gets the number of matches and submatches.
+       *
+       * The number of matches for a given regular expression will be either 0
+       * if there was no match or mark_count() + 1 if a match was successful.
+       * Some matches may be empty.
+       *
+       * @returns the number of matches found.
+       */
+      size_type
+      size() const
+      { return _M_matched ? _Base_type::size() + 1 : 0; }
+      
+      //size_type
+      //max_size() const;
+      using _Base_type::max_size;
+
+      /**
+       * @brief Indicates if the %match_results contains no results.
+       * @retval true The %match_results object is empty.
+       * @retval false The %match_results object is not empty.
+       */
+      bool
+      empty() const
+      { return size() == 0; }
+      
+      //@}
+
+      /**
+       * @name 10.3 Element Access
+       */
+      //@{
+
+      /**
+       * @brief Gets the length of the indicated submatch.
+       * @param sub indicates the submatch.
+       *
+       * This function returns the length of the indicated submatch, or the
+       * length of the entire match if @p sub is zero (the default).
+       */
+      difference_type
+      length(size_type __sub = 0) const
+      { return _M_matched ? this->str(__sub).length() : 0; }
+
+      /**
+       * @brief Gets the offset of the beginning of the indicated submatch.
+       * @param sub indicates the submatch.
+       *
+       * This function returns the offset from the beginning of the target
+       * sequence to the beginning of the submatch, unless the value of @p sub
+       * is zero (the default), in which case this function returns the offset
+       * from the beginning of the target sequence to the beginning of the
+       * match.
+       */
+      difference_type
+      position(size_type __sub = 0) const
+      {
+	return _M_matched ? std::distance(this->prefix().first,
+					  (*this)[__sub].first) : 0;
+      }
+
+      /**
+       * @brief Gets the match or submatch converted to a string type.
+       * @param sub indicates the submatch.
+       *
+       * This function gets the submatch (or match, if @p sub is zero) extracted
+       * from the target range and converted to the associated string type.
+       */
+      string_type
+      str(size_type __sub = 0) const
+      { return _M_matched ? (*this)[__sub].str() : string_type(); }
+      
+      /**
+       * @brief Gets a %sub_match reference for the match or submatch.
+       * @param sub indicates the submatch.
+       *
+       * This function gets a reference to the indicated submatch, or the entire
+       * match if @p sub is zero.
+       *
+       * If @p sub >= size() then this function returns a %sub_match with a
+       * special value indicating no submatch.
+       */
+      const_reference
+      operator[](size_type __sub) const
+      { return _Base_type::operator[](__sub); }
+
+      /**
+       * @brief Gets a %sub_match representing the match prefix.
+       *
+       * This function gets a reference to a %sub_match object representing the
+       * part of the target range between the start of the target range and the
+       * start of the match.
+       */
+      const_reference
+      prefix() const
+      { return _M_prefix; }
+
+      /**
+       * @brief Gets a %sub_match representing the match suffix.
+       *
+       * This function gets a reference to a %sub_match object representing the
+       * part of the target range between the end of the match and the end of
+       * the target range.
+       */
+      const_reference
+      suffix() const
+      { return _M_suffix; }
+
+      /**
+       * @brief Gets an iterator to the start of the %sub_match collection.
+       */
+      const_iterator
+      begin() const
+      { return _Base_type::begin(); }
+      
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+      /**
+       * @brief Gets an iterator to the start of the %sub_match collection.
+       */
+      const_iterator
+      cbegin() const
+      { return _Base_type::begin(); }
+#endif
+
+      /**
+       * @brief Gets an iterator to one-past-the-end of the collection.
+       */
+      const_iterator
+      end() const
+      { return _Base_type::end(); }
+      
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+      /**
+       * @brief Gets an iterator to one-past-the-end of the collection.
+       */
+      const_iterator
+      cend() const
+      { return _Base_type::end(); }
+#endif
+
+      //@}
+
+      /**
+       * @name 10.4 Formatting
+       *
+       * These functions perform formatted substitution of the matched
+       * character sequences into their target.  The format specifiers
+       * and escape sequences accepted by these functions are
+       * determined by their @p flags parameter as documented above.
+       */
+       //@{
+
+      /**
+       * @todo Implement this function.
+       */
+      template<typename _Out_iter>
+        _Out_iter
+        format(_Out_iter __out, const string_type& __fmt,
+	       regex_constants::match_flag_type __flags
+	       = regex_constants::format_default) const;
+
+      /**
+       * @todo Implement this function.
+       */
+      string_type
+      format(const string_type& __fmt,
+	     regex_constants::match_flag_type __flags
+	     = regex_constants::format_default) const;
+
+      //@} 
+
+      /**
+       * @name 10.5 Allocator
+       */
+      //@{ 
+
+      /**
+       * @brief Gets a copy of the allocator.
+       */
+      //allocator_type
+      //get_allocator() const;
+      using _Base_type::get_allocator;
+      
+      //@} 
+
+      /**
+       * @name 10.6 Swap
+       */
+       //@{ 
+
+      /**
+       * @brief Swaps the contents of two match_results.
+       */
+      void
+      swap(match_results& __that)
+      {
+	_Base_type::swap(__that);
+	std::swap(_M_matched, __that._M_matched);
+	std::swap(_M_prefix,  __that._M_prefix);
+	std::swap(_M_suffix,  __that._M_suffix);
+      }
+      //@} 
+      
+    private:
+      bool       _M_matched;
+      value_type _M_prefix;
+      value_type _M_suffix;
+    };
+  
+  typedef match_results<const char*>             cmatch;
+  typedef match_results<string::const_iterator>  smatch;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef match_results<const wchar_t*>          wcmatch;
+  typedef match_results<wstring::const_iterator> wsmatch;
+#endif
+
+  // match_results comparisons
+  /**
+   * @brief Compares two match_results for equality.
+   * @returns true if the two objects refer to the same match,
+   * false otherwise.
+   * @todo Implement this function.
+   */
+  template<typename _Bi_iter, typename _Allocator>
+    inline bool
+    operator==(const match_results<_Bi_iter, _Allocator>& __m1,
+	       const match_results<_Bi_iter, _Allocator>& __m2);
+
+  /**
+   * @brief Compares two match_results for inequality.
+   * @returns true if the two objects do not refer to the same match,
+   * false otherwise.
+   */
+  template<typename _Bi_iter, class _Allocator>
+    inline bool
+    operator!=(const match_results<_Bi_iter, _Allocator>& __m1,
+	       const match_results<_Bi_iter, _Allocator>& __m2)
+    { return !(__m1 == __m2); }
+
+  // [7.10.6] match_results swap
+  /**
+   * @brief Swaps two match results.
+   * @param lhs A match result.
+   * @param rhs A match result.
+   *
+   * The contents of the two match_results objects are swapped.
+   */
+  template<typename _Bi_iter, typename _Allocator>
+    inline void
+    swap(match_results<_Bi_iter, _Allocator>& __lhs,
+	 match_results<_Bi_iter, _Allocator>& __rhs)
+    { __lhs.swap(__rhs); }
+
+  // [7.11.2] Function template regex_match
+  /**
+   * @name Matching, Searching, and Replacing
+   */
+  //@{
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and all of the character sequence [first, last).
+   *
+   * @param first Beginning of the character sequence to match.
+   * @param last  One-past-the-end of the character sequence to match.
+   * @param m     The match results.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Bi_iter, typename _Allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    bool
+    regex_match(_Bi_iter __first, _Bi_iter __last,
+		match_results<_Bi_iter, _Allocator>& __m,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default);
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and all of the character sequence [first, last).
+   *
+   * @param first Beginning of the character sequence to match.
+   * @param last  One-past-the-end of the character sequence to match.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
+    bool
+    regex_match(_Bi_iter __first, _Bi_iter __last,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { 
+      match_results<_Bi_iter> __what;
+      return regex_match(__first, __last, __what, __re, __flags);
+    }
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and a C-style null-terminated string.
+   *
+   * @param s  The C-style null-terminated string to match.
+   * @param m  The match results.
+   * @param re The regular expression.
+   * @param f  Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, typename _Allocator, typename _Rx_traits>
+    inline bool
+    regex_match(const _Ch_type* __s,
+		match_results<const _Ch_type*, _Allocator>& __m,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __f
+		= regex_constants::match_default)
+    { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); }
+
+  /**
+   * @brief Determines if there is a match between the regular expression @p e
+   * and a string.
+   *
+   * @param s     The string to match.
+   * @param m     The match results.
+   * @param re    The regular expression.
+   * @param flags Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Ch_alloc,
+	   typename _Allocator, typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
+		match_results<typename basic_string<_Ch_type, 
+		_Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); }
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and a C-style null-terminated string.
+   *
+   * @param s  The C-style null-terminated string to match.
+   * @param re The regular expression.
+   * @param f  Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, class _Rx_traits>
+    inline bool
+    regex_match(const _Ch_type* __s,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __f
+		= regex_constants::match_default)
+    { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); }
+
+  /**
+   * @brief Indicates if there is a match between the regular expression @p e
+   * and a string.
+   *
+   * @param s     [IN] The string to match.
+   * @param re    [IN] The regular expression.
+   * @param flags [IN] Controls how the regular expression is matched.
+   *
+   * @retval true  A match exists.
+   * @retval false Otherwise.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Str_allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s,
+		const basic_regex<_Ch_type, _Rx_traits>& __re,
+		regex_constants::match_flag_type __flags
+		= regex_constants::match_default)
+    { return regex_match(__s.begin(), __s.end(), __re, __flags); }
+
+  // [7.11.3] Function template regex_search
+  /**
+   * Searches for a regular expression within a range.
+   * @param first [IN]  The start of the string to search.
+   * @param last  [IN]  One-past-the-end of the string to search.
+   * @param m     [OUT] The match results.
+   * @param re    [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   *
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Bi_iter, typename _Allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(_Bi_iter __first, _Bi_iter __last,
+		 match_results<_Bi_iter, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __re,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default);
+
+  /**
+   * Searches for a regular expression within a range.
+   * @param first [IN]  The start of the string to search.
+   * @param last  [IN]  One-past-the-end of the string to search.
+   * @param re    [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(_Bi_iter __first, _Bi_iter __last,
+		 const basic_regex<_Ch_type, _Rx_traits>& __re,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default)
+    {
+      match_results<_Bi_iter> __what;
+      return regex_search(__first, __last, __what, __re, __flags);
+    }
+
+  /**
+   * @brief Searches for a regular expression within a C-string.
+   * @param s [IN]  A C-string to search for the regex.
+   * @param m [OUT] The set of regex matches.
+   * @param e [IN]  The regex to search for in @p s.
+   * @param f [IN]  The search flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, class _Allocator, class _Rx_traits>
+    inline bool
+    regex_search(const _Ch_type* __s,
+		 match_results<const _Ch_type*, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); }
+
+  /**
+   * @brief Searches for a regular expression within a C-string.
+   * @param s [IN]  The C-string to search.
+   * @param e [IN]  The regular expression to search for.
+   * @param f [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(const _Ch_type* __s,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); }
+
+  /**
+   * @brief Searches for a regular expression within a string.
+   * @param s     [IN]  The string to search.
+   * @param e     [IN]  The regular expression to search for.
+   * @param flags [IN]  Search policy flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string.
+   * @doctodo
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _String_allocator,
+	   typename _Ch_type, typename _Rx_traits>
+    inline bool
+    regex_search(const basic_string<_Ch_type, _Ch_traits,
+		 _String_allocator>& __s,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __flags
+		 = regex_constants::match_default)
+    { return regex_search(__s.begin(), __s.end(), __e, __flags); }
+
+  /**
+   * @brief Searches for a regular expression within a string.
+   * @param s [IN]  A C++ string to search for the regex.
+   * @param m [OUT] The set of regex matches.
+   * @param e [IN]  The regex to search for in @p s.
+   * @param f [IN]  The search flags.
+   * @retval true  A match was found within the string.
+   * @retval false No match was found within the string, the content of %m is
+   *               undefined.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Ch_traits, typename _Ch_alloc,
+	   typename _Allocator, typename _Ch_type,
+	   typename _Rx_traits>
+    inline bool
+    regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
+		 match_results<typename basic_string<_Ch_type,
+		 _Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
+		 const basic_regex<_Ch_type, _Rx_traits>& __e,
+		 regex_constants::match_flag_type __f
+		 = regex_constants::match_default)
+    { return regex_search(__s.begin(), __s.end(), __m, __e, __f); }
+
+  // tr1 [7.11.4] std [28.11.4] Function template regex_replace
+  /**
+   * @doctodo
+   * @param out
+   * @param first
+   * @param last
+   * @param e
+   * @param fmt
+   * @param flags
+   *
+   * @returns out
+   * @throws an exception of type regex_error.
+   *
+   * @todo Implement this function.
+   */
+  template<typename _Out_iter, typename _Bi_iter,
+	   typename _Rx_traits, typename _Ch_type>
+    inline _Out_iter
+    regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last,
+		  const basic_regex<_Ch_type, _Rx_traits>& __e,
+		  const basic_string<_Ch_type>& __fmt,
+		  regex_constants::match_flag_type __flags
+		  = regex_constants::match_default);
+
+  /**
+   * @doctodo
+   * @param s
+   * @param e
+   * @param fmt
+   * @param flags
+   *
+   * @returns a copy of string @p s with replacements.
+   *
+   * @throws an exception of type regex_error.
+   */
+  template<typename _Rx_traits, typename _Ch_type>
+    inline basic_string<_Ch_type>
+    regex_replace(const basic_string<_Ch_type>& __s,
+		  const basic_regex<_Ch_type, _Rx_traits>& __e,
+		  const basic_string<_Ch_type>& __fmt,
+		  regex_constants::match_flag_type __flags
+		  = regex_constants::match_default)
+    {
+      std::string __result;
+      regex_replace(std::back_inserter(__result),
+		    __s.begin(), __s.end(), __e, __fmt, __flags);
+      return __result;
+    }
+
+  //@}
+
+  // tr1 [7.12.1] std [28.12] Class template regex_iterator
+  /**
+   * An iterator adaptor that will provide repeated calls of regex_search over 
+   * a range until no more matches remain.
+   */
+  template<typename _Bi_iter,
+	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
+	   typename _Rx_traits = regex_traits<_Ch_type> >
+    class regex_iterator
+    {
+    public:
+      typedef basic_regex<_Ch_type, _Rx_traits>  regex_type;
+      typedef match_results<_Bi_iter>            value_type;
+      typedef std::ptrdiff_t                     difference_type;
+      typedef const value_type*                  pointer;
+      typedef const value_type&                  reference;
+      typedef std::forward_iterator_tag          iterator_category;
+
+    public:
+      /**
+       * @brief Provides a singular iterator, useful for indicating
+       * one-past-the-end of a range.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator();
+      
+      /**
+       * Constructs a %regex_iterator...
+       * @param a  [IN] The start of a text range to search.
+       * @param b  [IN] One-past-the-end of the text range to search.
+       * @param re [IN] The regular expression to match.
+       * @param m  [IN] Policy flags for match rules.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
+		     regex_constants::match_flag_type __m
+		     = regex_constants::match_default);
+
+      /**
+       * Copy constructs a %regex_iterator.
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator&
+      operator=(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      bool
+      operator==(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      bool
+      operator!=(const regex_iterator& __rhs);
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      const value_type&
+      operator*();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      const value_type*
+      operator->();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator&
+      operator++();
+      
+      /**
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_iterator
+      operator++(int);
+      
+    private:
+      // these members are shown for exposition only:
+      _Bi_iter                         begin;
+      _Bi_iter                         end;
+      const regex_type*                pregex;
+      regex_constants::match_flag_type flags;
+      match_results<_Bi_iter>          match;
+    };
+  
+  typedef regex_iterator<const char*>             cregex_iterator;
+  typedef regex_iterator<string::const_iterator>  sregex_iterator;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef regex_iterator<const wchar_t*>          wcregex_iterator;
+  typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
+#endif
+
+  // [7.12.2] Class template regex_token_iterator
+  /**
+   * Iterates over submatches in a range (or @a splits a text string).
+   *
+   * The purpose of this iterator is to enumerate all, or all specified,
+   * matches of a regular expression within a text range.  The dereferenced
+   * value of an iterator of this class is a std::tr1::sub_match object.
+   */
+  template<typename _Bi_iter,
+	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
+	   typename _Rx_traits = regex_traits<_Ch_type> >
+    class regex_token_iterator
+    {
+    public:
+      typedef basic_regex<_Ch_type, _Rx_traits> regex_type;
+      typedef sub_match<_Bi_iter>               value_type;
+      typedef std::ptrdiff_t                    difference_type;
+      typedef const value_type*                 pointer;
+      typedef const value_type&                 reference;
+      typedef std::forward_iterator_tag         iterator_category;
+      
+    public:
+      /**
+       * @brief Default constructs a %regex_token_iterator.
+       * @todo Implement this function.
+       * 
+       * A default-constructed %regex_token_iterator is a singular iterator
+       * that will compare equal to the one-past-the-end value for any
+       * iterator of the same type.
+       */
+      regex_token_iterator();
+      
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatch   [IN] Which submatch to return.  There are some
+       *                        special values for this parameter:
+       *                        - -1 each enumerated subexpression does NOT
+       *                          match the regular expression (aka field
+       *                          splitting)
+       *                        - 0 the entire string matching the
+       *                          subexpression is returned for each match
+       *                          within the text.
+       *                        - >0 enumerates only the indicated
+       *                          subexpression from a match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       *
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
+			   int __submatch = 0,
+			   regex_constants::match_flag_type __m
+			   = regex_constants::match_default);
+
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatches [IN] A list of subexpressions to return for each
+       *                        regular expression match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       *
+       * @todo Implement this function.
+       * @doctodo
+       */
+      regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
+			   const regex_type& __re,
+			   const std::vector<int>& __submatches,
+			   regex_constants::match_flag_type __m
+			     = regex_constants::match_default);
+
+      /**
+       * Constructs a %regex_token_iterator...
+       * @param a          [IN] The start of the text to search.
+       * @param b          [IN] One-past-the-end of the text to search.
+       * @param re         [IN] The regular expression to search for.
+       * @param submatches [IN] A list of subexpressions to return for each
+       *                        regular expression match within the text.
+       * @param m          [IN] Policy flags for match rules.
+       
+       * @todo Implement this function.
+       * @doctodo
+       */
+      template<std::size_t _Nm>
+        regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
+			     const regex_type& __re,
+			     const int (&__submatches)[_Nm],
+			     regex_constants::match_flag_type __m
+			     = regex_constants::match_default);
+
+      /**
+       * @brief Copy constructs a %regex_token_iterator.
+       * @param rhs [IN] A %regex_token_iterator to copy.
+       * @todo Implement this function.
+       */
+      regex_token_iterator(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Assigns a %regex_token_iterator to another.
+       * @param rhs [IN] A %regex_token_iterator to copy.
+       * @todo Implement this function.
+       */
+      regex_token_iterator&
+      operator=(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Compares a %regex_token_iterator to another for equality.
+       * @todo Implement this function.
+       */
+      bool
+      operator==(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Compares a %regex_token_iterator to another for inequality.
+       * @todo Implement this function.
+       */
+      bool
+      operator!=(const regex_token_iterator& __rhs);
+      
+      /**
+       * @brief Dereferences a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      const value_type&
+      operator*();
+      
+      /**
+       * @brief Selects a %regex_token_iterator member.
+       * @todo Implement this function.
+       */
+      const value_type*
+      operator->();
+      
+      /**
+       * @brief Increments a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      regex_token_iterator&
+      operator++();
+      
+      /**
+       * @brief Postincrements a %regex_token_iterator.
+       * @todo Implement this function.
+       */
+      regex_token_iterator
+      operator++(int);
+      
+    private: // data members for exposition only:
+      typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator;
+
+      position_iterator __position;
+      const value_type* __result;
+      value_type        __suffix;
+      std::size_t       __n;
+      std::vector<int>  __subs;
+    };
+
+  /** @brief Token iterator for C-style NULL-terminated strings. */
+  typedef regex_token_iterator<const char*>             cregex_token_iterator;
+  /** @brief Token iterator for standard strings. */
+  typedef regex_token_iterator<string::const_iterator>  sregex_token_iterator;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /** @brief Token iterator for C-style NULL-terminated wide strings. */
+  typedef regex_token_iterator<const wchar_t*>          wcregex_token_iterator;
+  /** @brief Token iterator for standard wide-character strings. */
+  typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
+#endif
+  
+  //@}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_REGEX
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/riemann_zeta.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/riemann_zeta.tcc
new file mode 100644
index 000000000..18fe20ed8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/riemann_zeta.tcc
@@ -0,0 +1,436 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/riemann_zeta.tcc
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on:
+//   (1) Handbook of Mathematical Functions,
+//       Ed. by Milton Abramowitz and Irene A. Stegun,
+//       Dover Publications, New-York, Section 5, pp. 807-808.
+//   (2) The Gnu Scientific Library, http://www.gnu.org/software/gsl
+//   (3) Gamma, Exploring Euler's Constant, Julian Havil,
+//       Princeton, 2003.
+
+#ifndef _GLIBCXX_TR1_RIEMANN_ZETA_TCC
+#define _GLIBCXX_TR1_RIEMANN_ZETA_TCC 1
+
+#include "special_function_util.h"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  // [5.2] Special functions
+
+  // Implementation-space details.
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /**
+     *   @brief  Compute the Riemann zeta function @f$ \zeta(s) @f$
+     *           by summation for s > 1.
+     * 
+     *   The Riemann zeta function is defined by:
+     *    \f[
+     *      \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1
+     *    \f]
+     *   For s < 1 use the reflection formula:
+     *    \f[
+     *      \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s)
+     *    \f]
+     */
+    template<typename _Tp>
+    _Tp
+    __riemann_zeta_sum(const _Tp __s)
+    {
+      //  A user shouldn't get to this.
+      if (__s < _Tp(1))
+        std::__throw_domain_error(__N("Bad argument in zeta sum."));
+
+      const unsigned int max_iter = 10000;
+      _Tp __zeta = _Tp(0);
+      for (unsigned int __k = 1; __k < max_iter; ++__k)
+        {
+          _Tp __term = std::pow(static_cast<_Tp>(__k), -__s);
+          if (__term < std::numeric_limits<_Tp>::epsilon())
+            {
+              break;
+            }
+          __zeta += __term;
+        }
+
+      return __zeta;
+    }
+
+
+    /**
+     *   @brief  Evaluate the Riemann zeta function @f$ \zeta(s) @f$
+     *           by an alternate series for s > 0.
+     * 
+     *   The Riemann zeta function is defined by:
+     *    \f[
+     *      \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1
+     *    \f]
+     *   For s < 1 use the reflection formula:
+     *    \f[
+     *      \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s)
+     *    \f]
+     */
+    template<typename _Tp>
+    _Tp
+    __riemann_zeta_alt(const _Tp __s)
+    {
+      _Tp __sgn = _Tp(1);
+      _Tp __zeta = _Tp(0);
+      for (unsigned int __i = 1; __i < 10000000; ++__i)
+        {
+          _Tp __term = __sgn / std::pow(__i, __s);
+          if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon())
+            break;
+          __zeta += __term;
+          __sgn *= _Tp(-1);
+        }
+      __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s);
+
+      return __zeta;
+    }
+
+
+    /**
+     *   @brief  Evaluate the Riemann zeta function by series for all s != 1.
+     *           Convergence is great until largish negative numbers.
+     *           Then the convergence of the > 0 sum gets better.
+     *
+     *   The series is:
+     *    \f[
+     *      \zeta(s) = \frac{1}{1-2^{1-s}}
+     *                 \sum_{n=0}^{\infty} \frac{1}{2^{n+1}}
+     *                 \sum_{k=0}^{n} (-1)^k \frac{n!}{(n-k)!k!} (k+1)^{-s}
+     *    \f]
+     *   Havil 2003, p. 206.
+     *
+     *   The Riemann zeta function is defined by:
+     *    \f[
+     *      \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1
+     *    \f]
+     *   For s < 1 use the reflection formula:
+     *    \f[
+     *      \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s)
+     *    \f]
+     */
+    template<typename _Tp>
+    _Tp
+    __riemann_zeta_glob(const _Tp __s)
+    {
+      _Tp __zeta = _Tp(0);
+
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      //  Max e exponent before overflow.
+      const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10
+                               * std::log(_Tp(10)) - _Tp(1);
+
+      //  This series works until the binomial coefficient blows up
+      //  so use reflection.
+      if (__s < _Tp(0))
+        {
+#if _GLIBCXX_USE_C99_MATH_TR1
+          if (std::tr1::fmod(__s,_Tp(2)) == _Tp(0))
+            return _Tp(0);
+          else
+#endif
+            {
+              _Tp __zeta = __riemann_zeta_glob(_Tp(1) - __s);
+              __zeta *= std::pow(_Tp(2)
+                     * __numeric_constants<_Tp>::__pi(), __s)
+                     * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
+#if _GLIBCXX_USE_C99_MATH_TR1
+                     * std::exp(std::tr1::lgamma(_Tp(1) - __s))
+#else
+                     * std::exp(__log_gamma(_Tp(1) - __s))
+#endif
+                     / __numeric_constants<_Tp>::__pi();
+              return __zeta;
+            }
+        }
+
+      _Tp __num = _Tp(0.5L);
+      const unsigned int __maxit = 10000;
+      for (unsigned int __i = 0; __i < __maxit; ++__i)
+        {
+          bool __punt = false;
+          _Tp __sgn = _Tp(1);
+          _Tp __term = _Tp(0);
+          for (unsigned int __j = 0; __j <= __i; ++__j)
+            {
+#if _GLIBCXX_USE_C99_MATH_TR1
+              _Tp __bincoeff =  std::tr1::lgamma(_Tp(1 + __i))
+                              - std::tr1::lgamma(_Tp(1 + __j))
+                              - std::tr1::lgamma(_Tp(1 + __i - __j));
+#else
+              _Tp __bincoeff =  __log_gamma(_Tp(1 + __i))
+                              - __log_gamma(_Tp(1 + __j))
+                              - __log_gamma(_Tp(1 + __i - __j));
+#endif
+              if (__bincoeff > __max_bincoeff)
+                {
+                  //  This only gets hit for x << 0.
+                  __punt = true;
+                  break;
+                }
+              __bincoeff = std::exp(__bincoeff);
+              __term += __sgn * __bincoeff * std::pow(_Tp(1 + __j), -__s);
+              __sgn *= _Tp(-1);
+            }
+          if (__punt)
+            break;
+          __term *= __num;
+          __zeta += __term;
+          if (std::abs(__term/__zeta) < __eps)
+            break;
+          __num *= _Tp(0.5L);
+        }
+
+      __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s);
+
+      return __zeta;
+    }
+
+
+    /**
+     *   @brief  Compute the Riemann zeta function @f$ \zeta(s) @f$
+     *           using the product over prime factors.
+     *    \f[
+     *      \zeta(s) = \Pi_{i=1}^\infty \frac{1}{1 - p_i^{-s}}
+     *    \f]
+     *    where @f$ {p_i} @f$ are the prime numbers.
+     * 
+     *   The Riemann zeta function is defined by:
+     *    \f[
+     *      \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1
+     *    \f]
+     *   For s < 1 use the reflection formula:
+     *    \f[
+     *      \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s)
+     *    \f]
+     */
+    template<typename _Tp>
+    _Tp
+    __riemann_zeta_product(const _Tp __s)
+    {
+      static const _Tp __prime[] = {
+        _Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19),
+        _Tp(23), _Tp(29), _Tp(31), _Tp(37), _Tp(41), _Tp(43), _Tp(47),
+        _Tp(53), _Tp(59), _Tp(61), _Tp(67), _Tp(71), _Tp(73), _Tp(79),
+        _Tp(83), _Tp(89), _Tp(97), _Tp(101), _Tp(103), _Tp(107), _Tp(109)
+      };
+      static const unsigned int __num_primes = sizeof(__prime) / sizeof(_Tp);
+
+      _Tp __zeta = _Tp(1);
+      for (unsigned int __i = 0; __i < __num_primes; ++__i)
+        {
+          const _Tp __fact = _Tp(1) - std::pow(__prime[__i], -__s);
+          __zeta *= __fact;
+          if (_Tp(1) - __fact < std::numeric_limits<_Tp>::epsilon())
+            break;
+        }
+
+      __zeta = _Tp(1) / __zeta;
+
+      return __zeta;
+    }
+
+
+    /**
+     *   @brief  Return the Riemann zeta function @f$ \zeta(s) @f$.
+     * 
+     *   The Riemann zeta function is defined by:
+     *    \f[
+     *      \zeta(s) = \sum_{k=1}^{\infty} k^{-s} for s > 1
+     *                 \frac{(2\pi)^s}{pi} sin(\frac{\pi s}{2})
+     *                 \Gamma (1 - s) \zeta (1 - s) for s < 1
+     *    \f]
+     *   For s < 1 use the reflection formula:
+     *    \f[
+     *      \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s)
+     *    \f]
+     */
+    template<typename _Tp>
+    _Tp
+    __riemann_zeta(const _Tp __s)
+    {
+      if (__isnan(__s))
+        return std::numeric_limits<_Tp>::quiet_NaN();
+      else if (__s == _Tp(1))
+        return std::numeric_limits<_Tp>::infinity();
+      else if (__s < -_Tp(19))
+        {
+          _Tp __zeta = __riemann_zeta_product(_Tp(1) - __s);
+          __zeta *= std::pow(_Tp(2) * __numeric_constants<_Tp>::__pi(), __s)
+                 * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
+#if _GLIBCXX_USE_C99_MATH_TR1
+                 * std::exp(std::tr1::lgamma(_Tp(1) - __s))
+#else
+                 * std::exp(__log_gamma(_Tp(1) - __s))
+#endif
+                 / __numeric_constants<_Tp>::__pi();
+          return __zeta;
+        }
+      else if (__s < _Tp(20))
+        {
+          //  Global double sum or McLaurin?
+          bool __glob = true;
+          if (__glob)
+            return __riemann_zeta_glob(__s);
+          else
+            {
+              if (__s > _Tp(1))
+                return __riemann_zeta_sum(__s);
+              else
+                {
+                  _Tp __zeta = std::pow(_Tp(2)
+                                * __numeric_constants<_Tp>::__pi(), __s)
+                         * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
+#if _GLIBCXX_USE_C99_MATH_TR1
+                             * std::tr1::tgamma(_Tp(1) - __s)
+#else
+                             * std::exp(__log_gamma(_Tp(1) - __s))
+#endif
+                             * __riemann_zeta_sum(_Tp(1) - __s);
+                  return __zeta;
+                }
+            }
+        }
+      else
+        return __riemann_zeta_product(__s);
+    }
+
+
+    /**
+     *   @brief  Return the Hurwitz zeta function @f$ \zeta(x,s) @f$
+     *           for all s != 1 and x > -1.
+     * 
+     *   The Hurwitz zeta function is defined by:
+     *   @f[
+     *     \zeta(x,s) = \sum_{n=0}^{\infty} \frac{1}{(n + x)^s}
+     *   @f]
+     *   The Riemann zeta function is a special case:
+     *   @f[
+     *     \zeta(s) = \zeta(1,s)
+     *   @f]
+     * 
+     *   This functions uses the double sum that converges for s != 1
+     *   and x > -1:
+     *   @f[
+     *     \zeta(x,s) = \frac{1}{s-1}
+     *                \sum_{n=0}^{\infty} \frac{1}{n + 1}
+     *                \sum_{k=0}^{n} (-1)^k \frac{n!}{(n-k)!k!} (x+k)^{-s}
+     *   @f]
+     */
+    template<typename _Tp>
+    _Tp
+    __hurwitz_zeta_glob(const _Tp __a, const _Tp __s)
+    {
+      _Tp __zeta = _Tp(0);
+
+      const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
+      //  Max e exponent before overflow.
+      const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10
+                               * std::log(_Tp(10)) - _Tp(1);
+
+      const unsigned int __maxit = 10000;
+      for (unsigned int __i = 0; __i < __maxit; ++__i)
+        {
+          bool __punt = false;
+          _Tp __sgn = _Tp(1);
+          _Tp __term = _Tp(0);
+          for (unsigned int __j = 0; __j <= __i; ++__j)
+            {
+#if _GLIBCXX_USE_C99_MATH_TR1
+              _Tp __bincoeff =  std::tr1::lgamma(_Tp(1 + __i))
+                              - std::tr1::lgamma(_Tp(1 + __j))
+                              - std::tr1::lgamma(_Tp(1 + __i - __j));
+#else
+              _Tp __bincoeff =  __log_gamma(_Tp(1 + __i))
+                              - __log_gamma(_Tp(1 + __j))
+                              - __log_gamma(_Tp(1 + __i - __j));
+#endif
+              if (__bincoeff > __max_bincoeff)
+                {
+                  //  This only gets hit for x << 0.
+                  __punt = true;
+                  break;
+                }
+              __bincoeff = std::exp(__bincoeff);
+              __term += __sgn * __bincoeff * std::pow(_Tp(__a + __j), -__s);
+              __sgn *= _Tp(-1);
+            }
+          if (__punt)
+            break;
+          __term /= _Tp(__i + 1);
+          if (std::abs(__term / __zeta) < __eps)
+            break;
+          __zeta += __term;
+        }
+
+      __zeta /= __s - _Tp(1);
+
+      return __zeta;
+    }
+
+
+    /**
+     *   @brief  Return the Hurwitz zeta function @f$ \zeta(x,s) @f$
+     *           for all s != 1 and x > -1.
+     * 
+     *   The Hurwitz zeta function is defined by:
+     *   @f[
+     *     \zeta(x,s) = \sum_{n=0}^{\infty} \frac{1}{(n + x)^s}
+     *   @f]
+     *   The Riemann zeta function is a special case:
+     *   @f[
+     *     \zeta(s) = \zeta(1,s)
+     *   @f]
+     */
+    template<typename _Tp>
+    inline _Tp
+    __hurwitz_zeta(const _Tp __a, const _Tp __s)
+    {
+      return __hurwitz_zeta_glob(__a, __s);
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace std::tr1::__detail
+}
+}
+
+#endif // _GLIBCXX_TR1_RIEMANN_ZETA_TCC
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/shared_ptr.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/shared_ptr.h
new file mode 100644
index 000000000..c42084c95
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/shared_ptr.h
@@ -0,0 +1,1179 @@
+// <tr1/shared_ptr.h> -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//  shared_count.hpp
+//  Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+
+//  shared_ptr.hpp
+//  Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes.
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  weak_ptr.hpp
+//  Copyright (C) 2001, 2002, 2003 Peter Dimov
+
+//  enable_shared_from_this.hpp
+//  Copyright (C) 2002 Peter Dimov
+
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// GCC Note:  based on version 1.32.0 of the Boost library.
+
+/** @file tr1/shared_ptr.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/memory}
+ */
+
+#ifndef _TR1_SHARED_PTR_H
+#define _TR1_SHARED_PTR_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /**
+   *  @brief  Exception possibly thrown by @c shared_ptr.
+   *  @ingroup exceptions
+   */
+  class bad_weak_ptr : public std::exception
+  {
+  public:
+    virtual char const*
+    what() const throw()
+    { return "tr1::bad_weak_ptr"; }
+  };
+
+  // Substitute for bad_weak_ptr object in the case of -fno-exceptions.
+  inline void
+  __throw_bad_weak_ptr()
+  {
+#if __EXCEPTIONS
+    throw bad_weak_ptr();
+#else
+    __builtin_abort();
+#endif
+  }
+
+  using __gnu_cxx::_Lock_policy;
+  using __gnu_cxx::__default_lock_policy;
+  using __gnu_cxx::_S_single;
+  using __gnu_cxx::_S_mutex;
+  using __gnu_cxx::_S_atomic;
+
+  // Empty helper class except when the template argument is _S_mutex.
+  template<_Lock_policy _Lp>
+    class _Mutex_base
+    {
+    protected:
+      // The atomic policy uses fully-fenced builtins, single doesn't care.
+      enum { _S_need_barriers = 0 };
+    };
+
+  template<>
+    class _Mutex_base<_S_mutex>
+    : public __gnu_cxx::__mutex
+    {
+    protected:
+      // This policy is used when atomic builtins are not available.
+      // The replacement atomic operations might not have the necessary
+      // memory barriers.
+      enum { _S_need_barriers = 1 };
+    };
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class _Sp_counted_base
+    : public _Mutex_base<_Lp>
+    {
+    public:  
+      _Sp_counted_base()
+      : _M_use_count(1), _M_weak_count(1) { }
+      
+      virtual
+      ~_Sp_counted_base() // nothrow 
+      { }
+  
+      // Called when _M_use_count drops to zero, to release the resources
+      // managed by *this.
+      virtual void
+      _M_dispose() = 0; // nothrow
+      
+      // Called when _M_weak_count drops to zero.
+      virtual void
+      _M_destroy() // nothrow
+      { delete this; }
+      
+      virtual void*
+      _M_get_deleter(const std::type_info&) = 0;
+
+      void
+      _M_add_ref_copy()
+      { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); }
+  
+      void
+      _M_add_ref_lock();
+      
+      void
+      _M_release() // nothrow
+      {
+        // Be race-detector-friendly.  For more info see bits/c++config.
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_use_count);
+	if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1)
+	  {
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count);
+	    _M_dispose();
+	    // There must be a memory barrier between dispose() and destroy()
+	    // to ensure that the effects of dispose() are observed in the
+	    // thread that runs destroy().
+	    // See http://gcc.gnu.org/ml/libstdc++/2005-11/msg00136.html
+	    if (_Mutex_base<_Lp>::_S_need_barriers)
+	      {
+	        _GLIBCXX_READ_MEM_BARRIER;
+	        _GLIBCXX_WRITE_MEM_BARRIER;
+	      }
+
+            // Be race-detector-friendly.  For more info see bits/c++config.
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count);
+	    if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count,
+						       -1) == 1)
+              {
+                _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count);
+	        _M_destroy();
+              }
+	  }
+      }
+  
+      void
+      _M_weak_add_ref() // nothrow
+      { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
+
+      void
+      _M_weak_release() // nothrow
+      {
+        // Be race-detector-friendly. For more info see bits/c++config.
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count);
+	if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1)
+	  {
+            _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count);
+	    if (_Mutex_base<_Lp>::_S_need_barriers)
+	      {
+	        // See _M_release(),
+	        // destroy() must observe results of dispose()
+	        _GLIBCXX_READ_MEM_BARRIER;
+	        _GLIBCXX_WRITE_MEM_BARRIER;
+	      }
+	    _M_destroy();
+	  }
+      }
+  
+      long
+      _M_get_use_count() const // nothrow
+      {
+        // No memory barrier is used here so there is no synchronization
+        // with other threads.
+        return const_cast<const volatile _Atomic_word&>(_M_use_count);
+      }
+
+    private:  
+      _Sp_counted_base(_Sp_counted_base const&);
+      _Sp_counted_base& operator=(_Sp_counted_base const&);
+
+      _Atomic_word  _M_use_count;     // #shared
+      _Atomic_word  _M_weak_count;    // #weak + (#shared != 0)
+    };
+
+  template<>
+    inline void
+    _Sp_counted_base<_S_single>::
+    _M_add_ref_lock()
+    {
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
+	{
+	  _M_use_count = 0;
+	  __throw_bad_weak_ptr();
+	}
+    }
+
+  template<>
+    inline void
+    _Sp_counted_base<_S_mutex>::
+    _M_add_ref_lock()
+    {
+      __gnu_cxx::__scoped_lock sentry(*this);
+      if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
+	{
+	  _M_use_count = 0;
+	  __throw_bad_weak_ptr();
+	}
+    }
+
+  template<> 
+    inline void
+    _Sp_counted_base<_S_atomic>::
+    _M_add_ref_lock()
+    {
+      // Perform lock-free add-if-not-zero operation.
+      _Atomic_word __count;
+      do
+	{
+	  __count = _M_use_count;
+	  if (__count == 0)
+	    __throw_bad_weak_ptr();
+	  
+	  // Replace the current counter value with the old value + 1, as
+	  // long as it's not changed meanwhile. 
+	}
+      while (!__sync_bool_compare_and_swap(&_M_use_count, __count,
+					   __count + 1));
+    }
+
+  template<typename _Ptr, typename _Deleter, _Lock_policy _Lp>
+    class _Sp_counted_base_impl
+    : public _Sp_counted_base<_Lp>
+    {
+    public:
+      // Precondition: __d(__p) must not throw.
+      _Sp_counted_base_impl(_Ptr __p, _Deleter __d)
+      : _M_ptr(__p), _M_del(__d) { }
+    
+      virtual void
+      _M_dispose() // nothrow
+      { _M_del(_M_ptr); }
+      
+      virtual void*
+      _M_get_deleter(const std::type_info& __ti)
+      {
+#ifdef __GXX_RTTI
+        return __ti == typeid(_Deleter) ? &_M_del : 0;
+#else
+        return 0;
+#endif
+      }
+      
+    private:
+      _Sp_counted_base_impl(const _Sp_counted_base_impl&);
+      _Sp_counted_base_impl& operator=(const _Sp_counted_base_impl&);
+      
+      _Ptr      _M_ptr;  // copy constructor must not throw
+      _Deleter  _M_del;  // copy constructor must not throw
+    };
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class __weak_count;
+
+  template<typename _Tp>
+    struct _Sp_deleter
+    {
+      typedef void result_type;
+      typedef _Tp* argument_type;
+      void operator()(_Tp* __p) const { delete __p; }
+    };
+
+  template<_Lock_policy _Lp = __default_lock_policy>
+    class __shared_count
+    {
+    public: 
+      __shared_count()
+      : _M_pi(0) // nothrow
+      { }
+  
+      template<typename _Ptr>
+        __shared_count(_Ptr __p) : _M_pi(0)
+        {
+	  __try
+	    {
+	      typedef typename std::tr1::remove_pointer<_Ptr>::type _Tp;
+	      _M_pi = new _Sp_counted_base_impl<_Ptr, _Sp_deleter<_Tp>, _Lp>(
+	          __p, _Sp_deleter<_Tp>());
+	    }
+	  __catch(...)
+	    {
+	      delete __p;
+	      __throw_exception_again;
+	    }
+	}
+
+      template<typename _Ptr, typename _Deleter>
+        __shared_count(_Ptr __p, _Deleter __d) : _M_pi(0)
+        {
+	  __try
+	    {
+	      _M_pi = new _Sp_counted_base_impl<_Ptr, _Deleter, _Lp>(__p, __d);
+	    }
+	  __catch(...)
+	    {
+	      __d(__p); // Call _Deleter on __p.
+	      __throw_exception_again;
+	    }
+	}
+
+      // Special case for auto_ptr<_Tp> to provide the strong guarantee.
+      template<typename _Tp>
+        explicit
+        __shared_count(std::auto_ptr<_Tp>& __r)
+	: _M_pi(new _Sp_counted_base_impl<_Tp*,
+		_Sp_deleter<_Tp>, _Lp >(__r.get(), _Sp_deleter<_Tp>()))
+        { __r.release(); }
+
+      // Throw bad_weak_ptr when __r._M_get_use_count() == 0.
+      explicit
+      __shared_count(const __weak_count<_Lp>& __r);
+  
+      ~__shared_count() // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_release();
+      }
+      
+      __shared_count(const __shared_count& __r)
+      : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_add_ref_copy();
+      }
+  
+      __shared_count&
+      operator=(const __shared_count& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != _M_pi)
+	  {
+	    if (__tmp != 0)
+	      __tmp->_M_add_ref_copy();
+	    if (_M_pi != 0)
+	      _M_pi->_M_release();
+	    _M_pi = __tmp;
+	  }
+	return *this;
+      }
+  
+      void
+      _M_swap(__shared_count& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	__r._M_pi = _M_pi;
+	_M_pi = __tmp;
+      }
+  
+      long
+      _M_get_use_count() const // nothrow
+      { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
+
+      bool
+      _M_unique() const // nothrow
+      { return this->_M_get_use_count() == 1; }
+      
+      friend inline bool
+      operator==(const __shared_count& __a, const __shared_count& __b)
+      { return __a._M_pi == __b._M_pi; }
+  
+      friend inline bool
+      operator<(const __shared_count& __a, const __shared_count& __b)
+      { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); }
+  
+      void*
+      _M_get_deleter(const std::type_info& __ti) const
+      { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; }
+
+    private:
+      friend class __weak_count<_Lp>;
+
+      _Sp_counted_base<_Lp>*  _M_pi;
+    };
+
+
+  template<_Lock_policy _Lp>
+    class __weak_count
+    {
+    public:
+      __weak_count()
+      : _M_pi(0) // nothrow
+      { }
+  
+      __weak_count(const __shared_count<_Lp>& __r)
+      : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_add_ref();
+      }
+      
+      __weak_count(const __weak_count<_Lp>& __r)
+      : _M_pi(__r._M_pi) // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_add_ref();
+      }
+      
+      ~__weak_count() // nothrow
+      {
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+      }
+      
+      __weak_count<_Lp>&
+      operator=(const __shared_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != 0)
+	  __tmp->_M_weak_add_ref();
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+	_M_pi = __tmp;  
+	return *this;
+      }
+      
+      __weak_count<_Lp>&
+      operator=(const __weak_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	if (__tmp != 0)
+	  __tmp->_M_weak_add_ref();
+	if (_M_pi != 0)
+	  _M_pi->_M_weak_release();
+	_M_pi = __tmp;
+	return *this;
+      }
+
+      void
+      _M_swap(__weak_count<_Lp>& __r) // nothrow
+      {
+	_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
+	__r._M_pi = _M_pi;
+	_M_pi = __tmp;
+      }
+  
+      long
+      _M_get_use_count() const // nothrow
+      { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
+
+      friend inline bool
+      operator==(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b)
+      { return __a._M_pi == __b._M_pi; }
+      
+      friend inline bool
+      operator<(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b)
+      { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); }
+
+    private:
+      friend class __shared_count<_Lp>;
+
+      _Sp_counted_base<_Lp>*  _M_pi;
+    };
+
+  // now that __weak_count is defined we can define this constructor:
+  template<_Lock_policy _Lp>
+    inline
+    __shared_count<_Lp>::
+    __shared_count(const __weak_count<_Lp>& __r)
+    : _M_pi(__r._M_pi)
+    {
+      if (_M_pi != 0)
+	_M_pi->_M_add_ref_lock();
+      else
+	__throw_bad_weak_ptr();
+    }
+
+  // Forward declarations.
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __shared_ptr;
+  
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __weak_ptr;
+
+  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
+    class __enable_shared_from_this;
+
+  template<typename _Tp>
+    class shared_ptr;
+  
+  template<typename _Tp>
+    class weak_ptr;
+
+  template<typename _Tp>
+    class enable_shared_from_this;
+
+  // Support for enable_shared_from_this.
+
+  // Friend of __enable_shared_from_this.
+  template<_Lock_policy _Lp, typename _Tp1, typename _Tp2>
+    void
+    __enable_shared_from_this_helper(const __shared_count<_Lp>&,
+				     const __enable_shared_from_this<_Tp1,
+				     _Lp>*, const _Tp2*);
+
+  // Friend of enable_shared_from_this.
+  template<typename _Tp1, typename _Tp2>
+    void
+    __enable_shared_from_this_helper(const __shared_count<>&,
+				     const enable_shared_from_this<_Tp1>*,
+				     const _Tp2*);
+
+  template<_Lock_policy _Lp>
+    inline void
+    __enable_shared_from_this_helper(const __shared_count<_Lp>&, ...)
+    { }
+
+
+  struct __static_cast_tag { };
+  struct __const_cast_tag { };
+  struct __dynamic_cast_tag { };
+
+  // A smart pointer with reference-counted copy semantics.  The
+  // object pointed to is deleted when the last shared_ptr pointing to
+  // it is destroyed or reset.
+  template<typename _Tp, _Lock_policy _Lp>
+    class __shared_ptr
+    {
+    public:
+      typedef _Tp   element_type;
+      
+      __shared_ptr()
+      : _M_ptr(0), _M_refcount() // never throws
+      { }
+
+      template<typename _Tp1>
+        explicit
+        __shared_ptr(_Tp1* __p)
+	: _M_ptr(__p), _M_refcount(__p)
+        {
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  typedef int _IsComplete[sizeof(_Tp1)];
+	  __enable_shared_from_this_helper(_M_refcount, __p, __p);
+	}
+
+      template<typename _Tp1, typename _Deleter>
+        __shared_ptr(_Tp1* __p, _Deleter __d)
+        : _M_ptr(__p), _M_refcount(__p, __d)
+        {
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  // TODO requires _Deleter CopyConstructible and __d(__p) well-formed
+	  __enable_shared_from_this_helper(_M_refcount, __p, __p);
+	}
+      
+      //  generated copy constructor, assignment, destructor are fine.
+      
+      template<typename _Tp1>
+        __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r)
+	: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+        { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) }
+
+      template<typename _Tp1>
+        explicit
+        __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+	: _M_refcount(__r._M_refcount) // may throw
+        {
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  // It is now safe to copy __r._M_ptr, as _M_refcount(__r._M_refcount)
+	  // did not throw.
+	  _M_ptr = __r._M_ptr;
+	}
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED
+      // Postcondition: use_count() == 1 and __r.get() == 0
+      template<typename _Tp1>
+        explicit
+        __shared_ptr(std::auto_ptr<_Tp1>& __r)
+	: _M_ptr(__r.get()), _M_refcount()
+        { // TODO requries delete __r.release() well-formed
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  typedef int _IsComplete[sizeof(_Tp1)];
+	  _Tp1* __tmp = __r.get();
+	  _M_refcount = __shared_count<_Lp>(__r);
+	  __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
+	}
+
+#endif
+
+      template<typename _Tp1>
+        __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __static_cast_tag)
+	: _M_ptr(static_cast<element_type*>(__r._M_ptr)),
+	  _M_refcount(__r._M_refcount)
+        { }
+
+      template<typename _Tp1>
+        __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __const_cast_tag)
+	: _M_ptr(const_cast<element_type*>(__r._M_ptr)),
+	  _M_refcount(__r._M_refcount)
+        { }
+
+      template<typename _Tp1>
+        __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __dynamic_cast_tag)
+	: _M_ptr(dynamic_cast<element_type*>(__r._M_ptr)),
+	  _M_refcount(__r._M_refcount)
+        {
+	  if (_M_ptr == 0) // need to allocate new counter -- the cast failed
+	    _M_refcount = __shared_count<_Lp>();
+	}
+
+      template<typename _Tp1>
+        __shared_ptr&
+        operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws
+        {
+	  _M_ptr = __r._M_ptr;
+	  _M_refcount = __r._M_refcount; // __shared_count::op= doesn't throw
+	  return *this;
+	}
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+        __shared_ptr&
+        operator=(std::auto_ptr<_Tp1>& __r)
+        {
+	  __shared_ptr(__r).swap(*this);
+	  return *this;
+	}
+#endif
+
+      void
+      reset() // never throws
+      { __shared_ptr().swap(*this); }
+
+      template<typename _Tp1>
+        void
+        reset(_Tp1* __p) // _Tp1 must be complete.
+        {
+	  // Catch self-reset errors.
+	  _GLIBCXX_DEBUG_ASSERT(__p == 0 || __p != _M_ptr); 
+	  __shared_ptr(__p).swap(*this);
+	}
+
+      template<typename _Tp1, typename _Deleter>
+        void
+        reset(_Tp1* __p, _Deleter __d)
+        { __shared_ptr(__p, __d).swap(*this); }
+
+      // Allow class instantiation when _Tp is [cv-qual] void.
+      typename std::tr1::add_reference<_Tp>::type
+      operator*() const // never throws
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return *_M_ptr;
+      }
+
+      _Tp*
+      operator->() const // never throws
+      {
+	_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
+	return _M_ptr;
+      }
+    
+      _Tp*
+      get() const // never throws
+      { return _M_ptr; }
+
+      // Implicit conversion to "bool"
+    private:
+      typedef _Tp* __shared_ptr::*__unspecified_bool_type;
+
+    public:
+      operator __unspecified_bool_type() const // never throws
+      { return _M_ptr == 0 ? 0 : &__shared_ptr::_M_ptr; }
+
+      bool
+      unique() const // never throws
+      { return _M_refcount._M_unique(); }
+
+      long
+      use_count() const // never throws
+      { return _M_refcount._M_get_use_count(); }
+
+      void
+      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
+      {
+	std::swap(_M_ptr, __other._M_ptr);
+	_M_refcount._M_swap(__other._M_refcount);
+      }
+
+    private:
+      void*
+      _M_get_deleter(const std::type_info& __ti) const
+      { return _M_refcount._M_get_deleter(__ti); }
+
+      template<typename _Tp1, _Lock_policy _Lp1>
+        bool
+        _M_less(const __shared_ptr<_Tp1, _Lp1>& __rhs) const
+        { return _M_refcount < __rhs._M_refcount; }
+
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
+
+      template<typename _Del, typename _Tp1, _Lock_policy _Lp1>
+        friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&);
+
+      // Friends injected into enclosing namespace and found by ADL:
+      template<typename _Tp1>
+        friend inline bool
+        operator==(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b)
+        { return __a.get() == __b.get(); }
+
+      template<typename _Tp1>
+        friend inline bool
+        operator!=(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b)
+        { return __a.get() != __b.get(); }
+
+      template<typename _Tp1>
+        friend inline bool
+        operator<(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b)
+        { return __a._M_less(__b); }
+
+      _Tp*         	   _M_ptr;         // Contained pointer.
+      __shared_count<_Lp>  _M_refcount;    // Reference counter.
+    };
+
+  // 2.2.3.8 shared_ptr specialized algorithms.
+  template<typename _Tp, _Lock_policy _Lp>
+    inline void
+    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
+    { __a.swap(__b); }
+
+  // 2.2.3.9 shared_ptr casts
+  /*  The seemingly equivalent
+   *           shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))
+   *  will eventually result in undefined behaviour,
+   *  attempting to delete the same object twice.
+   */
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    { return __shared_ptr<_Tp, _Lp>(__r, __static_cast_tag()); }
+
+  /*  The seemingly equivalent
+   *           shared_ptr<_Tp, _Lp>(const_cast<_Tp*>(__r.get()))
+   *  will eventually result in undefined behaviour,
+   *  attempting to delete the same object twice.
+   */
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    { return __shared_ptr<_Tp, _Lp>(__r, __const_cast_tag()); }
+
+  /*  The seemingly equivalent
+   *           shared_ptr<_Tp, _Lp>(dynamic_cast<_Tp*>(__r.get()))
+   *  will eventually result in undefined behaviour,
+   *  attempting to delete the same object twice.
+   */
+  template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
+    inline __shared_ptr<_Tp, _Lp>
+    dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r)
+    { return __shared_ptr<_Tp, _Lp>(__r, __dynamic_cast_tag()); }
+
+  // 2.2.3.7 shared_ptr I/O
+  template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
+    std::basic_ostream<_Ch, _Tr>&
+    operator<<(std::basic_ostream<_Ch, _Tr>& __os, 
+	       const __shared_ptr<_Tp, _Lp>& __p)
+    {
+      __os << __p.get();
+      return __os;
+    }
+
+  // 2.2.3.10 shared_ptr get_deleter (experimental)
+  template<typename _Del, typename _Tp, _Lock_policy _Lp>
+    inline _Del*
+    get_deleter(const __shared_ptr<_Tp, _Lp>& __p)
+    {
+#ifdef __GXX_RTTI
+      return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del)));
+#else
+      return 0;
+#endif
+    }
+
+
+  template<typename _Tp, _Lock_policy _Lp>
+    class __weak_ptr
+    {
+    public:
+      typedef _Tp element_type;
+      
+      __weak_ptr()
+      : _M_ptr(0), _M_refcount() // never throws
+      { }
+
+      // Generated copy constructor, assignment, destructor are fine.
+      
+      // The "obvious" converting constructor implementation:
+      //
+      //  template<typename _Tp1>
+      //    __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+      //    : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+      //    { }
+      //
+      // has a serious problem.
+      //
+      //  __r._M_ptr may already have been invalidated. The _M_ptr(__r._M_ptr)
+      //  conversion may require access to *__r._M_ptr (virtual inheritance).
+      //
+      // It is not possible to avoid spurious access violations since
+      // in multithreaded programs __r._M_ptr may be invalidated at any point.
+      template<typename _Tp1>
+        __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
+	: _M_refcount(__r._M_refcount) // never throws
+        {
+	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+	  _M_ptr = __r.lock().get();
+	}
+
+      template<typename _Tp1>
+        __weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r)
+	: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws
+        { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) }
+
+      template<typename _Tp1>
+        __weak_ptr&
+        operator=(const __weak_ptr<_Tp1, _Lp>& __r) // never throws
+        {
+	  _M_ptr = __r.lock().get();
+	  _M_refcount = __r._M_refcount;
+	  return *this;
+	}
+      
+      template<typename _Tp1>
+        __weak_ptr&
+        operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws
+        {
+	  _M_ptr = __r._M_ptr;
+	  _M_refcount = __r._M_refcount;
+	  return *this;
+	}
+
+      __shared_ptr<_Tp, _Lp>
+      lock() const // never throws
+      {
+#ifdef __GTHREADS
+	// Optimization: avoid throw overhead.
+	if (expired())
+	  return __shared_ptr<element_type, _Lp>();
+
+	__try
+	  {
+	    return __shared_ptr<element_type, _Lp>(*this);
+	  }
+	__catch(const bad_weak_ptr&)
+	  {
+	    // Q: How can we get here?
+	    // A: Another thread may have invalidated r after the
+	    //    use_count test above.
+	    return __shared_ptr<element_type, _Lp>();
+	  }
+	
+#else
+	// Optimization: avoid try/catch overhead when single threaded.
+	return expired() ? __shared_ptr<element_type, _Lp>()
+	                 : __shared_ptr<element_type, _Lp>(*this);
+
+#endif
+      } // XXX MT
+
+      long
+      use_count() const // never throws
+      { return _M_refcount._M_get_use_count(); }
+
+      bool
+      expired() const // never throws
+      { return _M_refcount._M_get_use_count() == 0; }
+      
+      void
+      reset() // never throws
+      { __weak_ptr().swap(*this); }
+
+      void
+      swap(__weak_ptr& __s) // never throws
+      {
+	std::swap(_M_ptr, __s._M_ptr);
+	_M_refcount._M_swap(__s._M_refcount);
+      }
+
+    private:
+      // Used by __enable_shared_from_this.
+      void
+      _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount)
+      {
+	_M_ptr = __ptr;
+	_M_refcount = __refcount;
+      }
+
+      template<typename _Tp1>
+        bool
+        _M_less(const __weak_ptr<_Tp1, _Lp>& __rhs) const
+        { return _M_refcount < __rhs._M_refcount; }
+
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
+      template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
+      friend class __enable_shared_from_this<_Tp, _Lp>;
+      friend class enable_shared_from_this<_Tp>;
+
+      // Friend injected into namespace and found by ADL.
+      template<typename _Tp1>
+        friend inline bool
+        operator<(const __weak_ptr& __lhs, const __weak_ptr<_Tp1, _Lp>& __rhs)
+        { return __lhs._M_less(__rhs); }
+
+      _Tp*       	 _M_ptr;         // Contained pointer.
+      __weak_count<_Lp>  _M_refcount;    // Reference counter.
+    };
+
+  // 2.2.4.7 weak_ptr specialized algorithms.
+  template<typename _Tp, _Lock_policy _Lp>
+    inline void
+    swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b)
+    { __a.swap(__b); }
+
+
+  template<typename _Tp, _Lock_policy _Lp>
+    class __enable_shared_from_this
+    {
+    protected:
+      __enable_shared_from_this() { }
+      
+      __enable_shared_from_this(const __enable_shared_from_this&) { }
+      
+      __enable_shared_from_this&
+      operator=(const __enable_shared_from_this&)
+      { return *this; }
+
+      ~__enable_shared_from_this() { }
+      
+    public:
+      __shared_ptr<_Tp, _Lp>
+      shared_from_this()
+      { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); }
+
+      __shared_ptr<const _Tp, _Lp>
+      shared_from_this() const
+      { return __shared_ptr<const _Tp, _Lp>(this->_M_weak_this); }
+
+    private:
+      template<typename _Tp1>
+        void
+        _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const
+        { _M_weak_this._M_assign(__p, __n); }
+
+      template<typename _Tp1>
+        friend void
+        __enable_shared_from_this_helper(const __shared_count<_Lp>& __pn,
+					 const __enable_shared_from_this* __pe,
+					 const _Tp1* __px)
+        {
+	  if (__pe != 0)
+	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+	}
+
+      mutable __weak_ptr<_Tp, _Lp>  _M_weak_this;
+    };
+
+
+  // The actual shared_ptr, with forwarding constructors and
+  // assignment operators.
+  template<typename _Tp>
+    class shared_ptr
+    : public __shared_ptr<_Tp>
+    {
+    public:
+      shared_ptr()
+      : __shared_ptr<_Tp>() { }
+
+      template<typename _Tp1>
+        explicit
+        shared_ptr(_Tp1* __p)
+	: __shared_ptr<_Tp>(__p) { }
+
+      template<typename _Tp1, typename _Deleter>
+        shared_ptr(_Tp1* __p, _Deleter __d)
+	: __shared_ptr<_Tp>(__p, __d) { }
+
+      template<typename _Tp1>
+        shared_ptr(const shared_ptr<_Tp1>& __r)
+	: __shared_ptr<_Tp>(__r) { }
+
+      template<typename _Tp1>
+        explicit
+        shared_ptr(const weak_ptr<_Tp1>& __r)
+	: __shared_ptr<_Tp>(__r) { }
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+        explicit
+        shared_ptr(std::auto_ptr<_Tp1>& __r)
+	: __shared_ptr<_Tp>(__r) { }
+#endif
+
+      template<typename _Tp1>
+        shared_ptr(const shared_ptr<_Tp1>& __r, __static_cast_tag)
+	: __shared_ptr<_Tp>(__r, __static_cast_tag()) { }
+
+      template<typename _Tp1>
+        shared_ptr(const shared_ptr<_Tp1>& __r, __const_cast_tag)
+	: __shared_ptr<_Tp>(__r, __const_cast_tag()) { }
+
+      template<typename _Tp1>
+        shared_ptr(const shared_ptr<_Tp1>& __r, __dynamic_cast_tag)
+	: __shared_ptr<_Tp>(__r, __dynamic_cast_tag()) { }
+
+      template<typename _Tp1>
+        shared_ptr&
+        operator=(const shared_ptr<_Tp1>& __r) // never throws
+        {
+	  this->__shared_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED
+      template<typename _Tp1>
+        shared_ptr&
+        operator=(std::auto_ptr<_Tp1>& __r)
+        {
+	  this->__shared_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+#endif
+    };
+
+  // 2.2.3.8 shared_ptr specialized algorithms.
+  template<typename _Tp>
+    inline void
+    swap(__shared_ptr<_Tp>& __a, __shared_ptr<_Tp>& __b)
+    { __a.swap(__b); }
+
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    static_pointer_cast(const shared_ptr<_Tp1>& __r)
+    { return shared_ptr<_Tp>(__r, __static_cast_tag()); }
+
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    const_pointer_cast(const shared_ptr<_Tp1>& __r)
+    { return shared_ptr<_Tp>(__r, __const_cast_tag()); }
+
+  template<typename _Tp, typename _Tp1>
+    inline shared_ptr<_Tp>
+    dynamic_pointer_cast(const shared_ptr<_Tp1>& __r)
+    { return shared_ptr<_Tp>(__r, __dynamic_cast_tag()); }
+
+
+  // The actual weak_ptr, with forwarding constructors and
+  // assignment operators.
+  template<typename _Tp>
+    class weak_ptr
+    : public __weak_ptr<_Tp>
+    {
+    public:
+      weak_ptr()
+      : __weak_ptr<_Tp>() { }
+      
+      template<typename _Tp1>
+        weak_ptr(const weak_ptr<_Tp1>& __r)
+	: __weak_ptr<_Tp>(__r) { }
+
+      template<typename _Tp1>
+        weak_ptr(const shared_ptr<_Tp1>& __r)
+	: __weak_ptr<_Tp>(__r) { }
+
+      template<typename _Tp1>
+        weak_ptr&
+        operator=(const weak_ptr<_Tp1>& __r) // never throws
+        {
+	  this->__weak_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+      template<typename _Tp1>
+        weak_ptr&
+        operator=(const shared_ptr<_Tp1>& __r) // never throws
+        {
+	  this->__weak_ptr<_Tp>::operator=(__r);
+	  return *this;
+	}
+
+      shared_ptr<_Tp>
+      lock() const // never throws
+      {
+#ifdef __GTHREADS
+	if (this->expired())
+	  return shared_ptr<_Tp>();
+
+	__try
+	  {
+	    return shared_ptr<_Tp>(*this);
+	  }
+	__catch(const bad_weak_ptr&)
+	  {
+	    return shared_ptr<_Tp>();
+	  }
+#else
+	return this->expired() ? shared_ptr<_Tp>()
+	                       : shared_ptr<_Tp>(*this);
+#endif
+      }
+    };
+
+  template<typename _Tp>
+    class enable_shared_from_this
+    {
+    protected:
+      enable_shared_from_this() { }
+      
+      enable_shared_from_this(const enable_shared_from_this&) { }
+
+      enable_shared_from_this&
+      operator=(const enable_shared_from_this&)
+      { return *this; }
+
+      ~enable_shared_from_this() { }
+
+    public:
+      shared_ptr<_Tp>
+      shared_from_this()
+      { return shared_ptr<_Tp>(this->_M_weak_this); }
+
+      shared_ptr<const _Tp>
+      shared_from_this() const
+      { return shared_ptr<const _Tp>(this->_M_weak_this); }
+
+    private:
+      template<typename _Tp1>
+        void
+        _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const
+        { _M_weak_this._M_assign(__p, __n); }
+
+      template<typename _Tp1>
+        friend void
+        __enable_shared_from_this_helper(const __shared_count<>& __pn,
+					 const enable_shared_from_this* __pe,
+					 const _Tp1* __px)
+        {
+	  if (__pe != 0)
+	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+	}
+
+      mutable weak_ptr<_Tp>  _M_weak_this;
+    };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _TR1_SHARED_PTR_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/special_function_util.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/special_function_util.h
new file mode 100644
index 000000000..c90fc599f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/special_function_util.h
@@ -0,0 +1,144 @@
+// Special functions -*- C++ -*-
+
+// Copyright (C) 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/special_function_util.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/cmath}
+ */
+
+//
+// ISO C++ 14882 TR1: 5.2  Special functions
+//
+
+// Written by Edward Smith-Rowland based on numerous mathematics books.
+
+#ifndef _GLIBCXX_TR1_SPECIAL_FUNCTION_UTIL_H
+#define _GLIBCXX_TR1_SPECIAL_FUNCTION_UTIL_H 1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    /// A class to encapsulate type dependent floating point
+    /// constants.  Not everything will be able to be expressed as
+    /// type logic.
+    template<typename _Tp>
+    struct __floating_point_constant
+    {
+      static const _Tp __value;
+    };
+
+
+    /// A structure for numeric constants.
+    template<typename _Tp>
+      struct __numeric_constants
+      {
+        ///  Constant @f$ \pi @f$.
+        static _Tp __pi() throw()
+        { return static_cast<_Tp>(3.1415926535897932384626433832795029L); }
+        ///  Constant @f$ \pi / 2 @f$.
+        static _Tp __pi_2() throw()
+        { return static_cast<_Tp>(1.5707963267948966192313216916397514L); }
+        ///  Constant @f$ \pi / 3 @f$.
+        static _Tp __pi_3() throw()
+        { return static_cast<_Tp>(1.0471975511965977461542144610931676L); }
+        ///  Constant @f$ \pi / 4 @f$.
+        static _Tp __pi_4() throw()
+        { return static_cast<_Tp>(0.7853981633974483096156608458198757L); }
+        ///  Constant @f$ 1 / \pi @f$.
+        static _Tp __1_pi() throw()
+        { return static_cast<_Tp>(0.3183098861837906715377675267450287L); }
+        ///  Constant @f$ 2 / \sqrt(\pi) @f$.
+        static _Tp __2_sqrtpi() throw()
+        { return static_cast<_Tp>(1.1283791670955125738961589031215452L); }
+        ///  Constant @f$ \sqrt(2) @f$.
+        static _Tp __sqrt2() throw()
+        { return static_cast<_Tp>(1.4142135623730950488016887242096981L); }
+        ///  Constant @f$ \sqrt(3) @f$.
+        static _Tp __sqrt3() throw()
+        { return static_cast<_Tp>(1.7320508075688772935274463415058723L); }
+        ///  Constant @f$ \sqrt(\pi/2) @f$.
+        static _Tp __sqrtpio2() throw()
+        { return static_cast<_Tp>(1.2533141373155002512078826424055226L); }
+        ///  Constant @f$ 1 / sqrt(2) @f$.
+        static _Tp __sqrt1_2() throw()
+        { return static_cast<_Tp>(0.7071067811865475244008443621048490L); }
+        ///  Constant @f$ \log(\pi) @f$.
+        static _Tp __lnpi() throw()
+        { return static_cast<_Tp>(1.1447298858494001741434273513530587L); }
+        ///  Constant Euler's constant @f$ \gamma_E @f$.
+        static _Tp __gamma_e() throw()
+        { return static_cast<_Tp>(0.5772156649015328606065120900824024L); }
+        ///  Constant Euler-Mascheroni @f$ e @f$
+        static _Tp __euler() throw()
+        { return static_cast<_Tp>(2.7182818284590452353602874713526625L); }
+      };
+
+
+#if _GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+
+    /// This is a wrapper for the isnan function. Otherwise, for NaN,
+    /// all comparisons result in false. If/when we build a std::isnan
+    /// out of intrinsics, this will disappear completely in favor of
+    /// std::isnan.
+    template<typename _Tp>
+    inline bool __isnan(const _Tp __x)
+    {
+      return std::isnan(__x);
+    }
+
+#else
+
+    template<typename _Tp>
+    inline bool __isnan(const _Tp __x)
+    {
+      return __builtin_isnan(__x);
+    }
+
+    template<>
+    inline bool __isnan<float>(const float __x)
+    {
+      return __builtin_isnanf(__x);
+    }
+
+    template<>
+    inline bool __isnan<long double>(const long double __x)
+    {
+      return __builtin_isnanl(__x);
+    }
+
+#endif
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+}
+}
+
+#endif // _GLIBCXX_TR1_SPECIAL_FUNCTION_UTIL_H
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdarg.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdarg.h
new file mode 100644
index 000000000..41173e847
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdarg.h
@@ -0,0 +1,34 @@
+// TR1 stdarg.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/stdarg.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_STDARG_H
+#define _TR1_STDARG_H 1
+
+#include <tr1/cstdarg>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdbool.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdbool.h
new file mode 100644
index 000000000..3861e4457
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdbool.h
@@ -0,0 +1,34 @@
+// TR1 stdbool.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/stdbool.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_STDBOOL_H
+#define _TR1_STDBOOL_H 1
+
+#include <tr1/cstdbool>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdint.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdint.h
new file mode 100644
index 000000000..8113fa5ad
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdint.h
@@ -0,0 +1,34 @@
+// TR1 stdint.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/stdint.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_STDINT_H
+#define _TR1_STDINT_H 1
+
+#include <tr1/cstdint>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdio.h
new file mode 100644
index 000000000..f1edf8395
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdio.h
@@ -0,0 +1,34 @@
+// TR1 stdio.h -*- C++ -*-
+
+// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/stdio.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _TR1_STDIO_H
+#define _TR1_STDIO_H 1
+
+#include <tr1/cstdio>
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdlib.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdlib.h
new file mode 100644
index 000000000..5e57aecbf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/stdlib.h
@@ -0,0 +1,52 @@
+// TR1 stdlib.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/stdlib.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_STDLIB_H
+#define _GLIBCXX_TR1_STDLIB_H 1
+
+#include <tr1/cstdlib>
+
+#if _GLIBCXX_HOSTED
+
+#if _GLIBCXX_USE_C99
+
+using std::tr1::atoll;
+using std::tr1::strtoll;
+using std::tr1::strtoull;
+
+using std::tr1::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+using std::tr1::div;
+#endif
+
+#endif
+
+#endif
+
+#endif // _GLIBCXX_TR1_STDLIB_H
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tgmath.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tgmath.h
new file mode 100644
index 000000000..c807031e5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tgmath.h
@@ -0,0 +1,34 @@
+// TR1 tgmath.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/tgmath.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_TGMATH_H
+#define _GLIBCXX_TR1_TGMATH_H 1
+
+#include <tr1/ctgmath>
+
+#endif // _GLIBCXX_TR1_TGMATH_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tuple b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tuple
new file mode 100644
index 000000000..15ac642a1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/tuple
@@ -0,0 +1,426 @@
+// class template tuple -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/tuple
+*  This is a TR1 C++ Library header.
+*/
+
+// Chris Jefferson <chris@bubblescope.net>
+// Variadic Templates support by Douglas Gregor <doug.gregor@gmail.com>
+
+#ifndef _GLIBCXX_TR1_TUPLE
+#define _GLIBCXX_TR1_TUPLE 1
+
+#pragma GCC system_header
+
+#include <utility>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Adds a const reference to a non-reference type.
+  template<typename _Tp>
+    struct __add_c_ref
+    { typedef const _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_c_ref<_Tp&>
+    { typedef _Tp& type; };
+
+  // Adds a reference to a non-reference type.
+  template<typename _Tp>
+    struct __add_ref
+    { typedef _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_ref<_Tp&>
+    { typedef _Tp& type; };
+
+  /**
+   * Contains the actual implementation of the @c tuple template, stored
+   * as a recursive inheritance hierarchy from the first element (most
+   * derived class) to the last (least derived class). The @c Idx
+   * parameter gives the 0-based index of the element stored at this
+   * point in the hierarchy; we use it to implement a constant-time
+   * get() operation.
+   */
+  template<int _Idx, typename... _Elements>
+    struct _Tuple_impl; 
+
+  /**
+   * Zero-element tuple implementation. This is the basis case for the 
+   * inheritance recursion.
+   */
+  template<int _Idx>
+    struct _Tuple_impl<_Idx> { };
+
+  /**
+   * Recursive tuple implementation. Here we store the @c Head element
+   * and derive from a @c Tuple_impl containing the remaining elements
+   * (which contains the @c Tail).
+   */
+  template<int _Idx, typename _Head, typename... _Tail>
+    struct _Tuple_impl<_Idx, _Head, _Tail...>
+    : public _Tuple_impl<_Idx + 1, _Tail...>
+    {
+      typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
+      
+      _Head _M_head;
+      
+      _Inherited&       _M_tail()       { return *this; }
+      const _Inherited& _M_tail() const { return *this; }
+      
+      _Tuple_impl() : _Inherited(), _M_head() { }
+      
+      explicit 
+      _Tuple_impl(typename __add_c_ref<_Head>::type __head,
+		  typename __add_c_ref<_Tail>::type... __tail)
+      : _Inherited(__tail...), _M_head(__head) { }
+
+      template<typename... _UElements>
+      _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
+      : _Inherited(__in._M_tail()), _M_head(__in._M_head) { }
+
+      _Tuple_impl(const _Tuple_impl& __in)
+      : _Inherited(__in._M_tail()), _M_head(__in._M_head) { }
+     
+      template<typename... _UElements>
+        _Tuple_impl&
+        operator=(const _Tuple_impl<_Idx, _UElements...>& __in)
+        {
+	  _M_head = __in._M_head;
+	  _M_tail() = __in._M_tail();
+	  return *this;
+	}
+
+      _Tuple_impl&
+      operator=(const _Tuple_impl& __in)
+      {
+	_M_head = __in._M_head;
+	_M_tail() = __in._M_tail();
+	return *this;
+      }
+    };
+
+  template<typename... _Elements> 
+    class tuple : public _Tuple_impl<0, _Elements...>
+    {
+      typedef _Tuple_impl<0, _Elements...> _Inherited;
+
+    public:
+      tuple() : _Inherited() { }
+
+      explicit
+      tuple(typename __add_c_ref<_Elements>::type... __elements)
+      : _Inherited(__elements...) { }
+
+      template<typename... _UElements>
+        tuple(const tuple<_UElements...>& __in)
+	: _Inherited(__in) { }
+
+      tuple(const tuple& __in)
+      : _Inherited(__in) { }
+
+      template<typename... _UElements>
+        tuple&
+        operator=(const tuple<_UElements...>& __in)
+        {
+	  static_cast<_Inherited&>(*this) = __in;
+	  return *this;
+	}
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+	static_cast<_Inherited&>(*this) = __in;
+	return *this;
+      }
+    };
+
+  template<> class tuple<> { };
+
+  // 2-element tuple, with construction and assignment from a pair.
+  template<typename _T1, typename _T2>
+    class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
+    {
+      typedef _Tuple_impl<0, _T1, _T2> _Inherited;
+
+    public:
+      tuple() : _Inherited() { }
+
+      explicit
+      tuple(typename __add_c_ref<_T1>::type __a1,
+	    typename __add_c_ref<_T2>::type __a2)
+      : _Inherited(__a1, __a2) { }
+
+      template<typename _U1, typename _U2>
+        tuple(const tuple<_U1, _U2>& __in)
+	: _Inherited(__in) { }
+
+      tuple(const tuple& __in)
+      : _Inherited(__in) { }
+
+      template<typename _U1, typename _U2>
+        tuple(const pair<_U1, _U2>& __in)
+	: _Inherited(_Tuple_impl<0, 
+		     typename __add_c_ref<_U1>::type,
+		     typename __add_c_ref<_U2>::type>(__in.first, 
+						      __in.second))
+        { }
+  
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(const tuple<_U1, _U2>& __in)
+        {
+	  static_cast<_Inherited&>(*this) = __in;
+	  return *this;
+	}
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+	static_cast<_Inherited&>(*this) = __in;
+	return *this;
+      }
+
+      template<typename _U1, typename _U2>
+        tuple&
+        operator=(const pair<_U1, _U2>& __in)
+        {
+	  this->_M_head = __in.first;
+	  this->_M_tail()._M_head = __in.second;
+	  return *this;
+	}
+    };
+
+  
+  /// Gives the type of the ith element of a given tuple type.
+  template<int __i, typename _Tp>
+    struct tuple_element;
+
+  /**
+   * Recursive case for tuple_element: strip off the first element in
+   * the tuple and retrieve the (i-1)th element of the remaining tuple.
+   */
+  template<int __i, typename _Head, typename... _Tail>
+    struct tuple_element<__i, tuple<_Head, _Tail...> >
+    : tuple_element<__i - 1, tuple<_Tail...> > { };
+
+  /**
+   * Basis case for tuple_element: The first element is the one we're seeking.
+   */
+  template<typename _Head, typename... _Tail>
+    struct tuple_element<0, tuple<_Head, _Tail...> >
+    {
+      typedef _Head type;
+    };
+
+  /// Finds the size of a given tuple type.
+  template<typename _Tp>
+    struct tuple_size;
+
+  /// class tuple_size
+  template<typename... _Elements>
+    struct tuple_size<tuple<_Elements...> >
+    {
+      static const int value = sizeof...(_Elements);
+    };
+
+  template<typename... _Elements>
+    const int tuple_size<tuple<_Elements...> >::value;
+
+  template<int __i, typename _Head, typename... _Tail>
+    inline typename __add_ref<_Head>::type
+    __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t)
+    {
+      return __t._M_head;
+    }
+
+  template<int __i, typename _Head, typename... _Tail>
+    inline typename __add_c_ref<_Head>::type
+    __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t)
+    {
+      return __t._M_head;
+    }
+
+  // Return a reference (const reference) to the ith element of a tuple.
+  // Any const or non-const ref elements are returned with their original type.
+  template<int __i, typename... _Elements>
+    inline typename __add_ref<
+                      typename tuple_element<__i, tuple<_Elements...> >::type
+                    >::type
+    get(tuple<_Elements...>& __t)
+    { 
+      return __get_helper<__i>(__t); 
+    }
+
+  template<int __i, typename... _Elements>
+    inline typename __add_c_ref<
+                      typename tuple_element<__i, tuple<_Elements...> >::type
+                    >::type
+    get(const tuple<_Elements...>& __t)
+    {
+      return __get_helper<__i>(__t);
+    }
+
+  // This class helps construct the various comparison operations on tuples
+  template<int __check_equal_size, int __i, int __j,
+	   typename _Tp, typename _Up>
+    struct __tuple_compare;
+
+  template<int __i, int __j, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __j, _Tp, _Up>
+    {
+      static bool __eq(const _Tp& __t, const _Up& __u)
+      {
+	return (get<__i>(__t) == get<__i>(__u) &&
+		__tuple_compare<0, __i+1, __j, _Tp, _Up>::__eq(__t, __u));
+      }
+     
+      static bool __less(const _Tp& __t, const _Up& __u)
+      {
+	return ((get<__i>(__t) < get<__i>(__u))
+		|| !(get<__i>(__u) < get<__i>(__t)) &&
+		__tuple_compare<0, __i+1, __j, _Tp, _Up>::__less(__t, __u));
+      }
+    };
+
+  template<int __i, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __i, _Tp, _Up>
+    {
+      static bool __eq(const _Tp&, const _Up&)
+      { return true; }
+     
+      static bool __less(const _Tp&, const _Up&)
+      { return false; }
+    };
+
+  template<typename... _TElements, typename... _UElements>
+    bool
+    operator==(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    {
+      typedef tuple<_TElements...> _Tp;
+      typedef tuple<_UElements...> _Up;
+      return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
+	      0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u));
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    bool
+    operator<(const tuple<_TElements...>& __t,
+	      const tuple<_UElements...>& __u)
+    {
+      typedef tuple<_TElements...> _Tp;
+      typedef tuple<_UElements...> _Up;
+      return (__tuple_compare<tuple_size<_Tp>::value - tuple_size<_Up>::value,
+	      0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u));
+    }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator!=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__t == __u); }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator>(const tuple<_TElements...>& __t,
+	      const tuple<_UElements...>& __u)
+    { return __u < __t; }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator<=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__u < __t); }
+
+  template<typename... _TElements, typename... _UElements>
+    inline bool
+    operator>=(const tuple<_TElements...>& __t,
+	       const tuple<_UElements...>& __u)
+    { return !(__t < __u); }
+
+  template<typename _Tp>
+    class reference_wrapper;
+
+  // Helper which adds a reference to a type when given a reference_wrapper
+  template<typename _Tp>
+    struct __strip_reference_wrapper
+    {
+      typedef _Tp __type;
+    };
+
+  template<typename _Tp>
+    struct __strip_reference_wrapper<reference_wrapper<_Tp> >
+    {
+      typedef _Tp& __type;
+    };
+
+  template<typename _Tp>
+    struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
+    {
+      typedef _Tp& __type;
+    };
+
+  template<typename... _Elements>
+    inline tuple<typename __strip_reference_wrapper<_Elements>::__type...>
+    make_tuple(_Elements... __args)
+    {
+      typedef tuple<typename __strip_reference_wrapper<_Elements>::__type...>
+        __result_type;
+      return __result_type(__args...);
+    }
+
+  template<typename... _Elements>
+    inline tuple<_Elements&...>
+    tie(_Elements&... __args)
+    {
+      return tuple<_Elements&...>(__args...);
+    }
+
+  // A class (and instance) which can be used in 'tie' when an element
+  // of a tuple is not required
+  struct _Swallow_assign
+  {
+    template<class _Tp>
+      _Swallow_assign&
+      operator=(const _Tp&)
+      { return *this; }
+  };
+
+  // TODO: Put this in some kind of shared file.
+  namespace
+  {
+    _Swallow_assign ignore;
+  }; // anonymous namespace
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_TUPLE
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/type_traits b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/type_traits
new file mode 100644
index 000000000..2825fe6f4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/type_traits
@@ -0,0 +1,689 @@
+// TR1 type_traits -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/type_traits
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_TYPE_TRAITS
+#define _GLIBCXX_TR1_TYPE_TRAITS 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup metaprogramming Type Traits
+   * @ingroup utilities
+   *
+   * Compile time type transformation and information.
+   * @{
+   */
+
+  struct __sfinae_types
+  {
+    typedef char __one;
+    typedef struct { char __arr[2]; } __two;
+  };
+
+#define _DEFINE_SPEC_0_HELPER                          \
+  template<>
+
+#define _DEFINE_SPEC_1_HELPER                          \
+  template<typename _Tp>
+
+#define _DEFINE_SPEC_2_HELPER                          \
+  template<typename _Tp, typename _Cp>
+
+#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value)    \
+  _DEFINE_SPEC_##_Order##_HELPER                       \
+    struct _Trait<_Type>                               \
+    : public integral_constant<bool, _Value> { };
+
+  // helper classes [4.3].
+
+  /// integral_constant
+  template<typename _Tp, _Tp __v>
+    struct integral_constant
+    {
+      static const _Tp                      value = __v;
+      typedef _Tp                           value_type;
+      typedef integral_constant<_Tp, __v>   type;
+    };
+  
+  /// typedef for true_type
+  typedef integral_constant<bool, true>     true_type;
+
+  /// typedef for false_type
+  typedef integral_constant<bool, false>    false_type;
+
+  template<typename _Tp, _Tp __v>
+    const _Tp integral_constant<_Tp, __v>::value;
+
+  /// remove_cv
+  template<typename>
+    struct remove_cv;
+
+  template<typename>
+    struct __is_void_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_void_helper, void, true)
+
+  // primary type categories [4.5.1].
+
+  /// is_void
+  template<typename _Tp>
+    struct is_void
+    : public integral_constant<bool, (__is_void_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_integral_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_integral_helper, bool, true)
+  _DEFINE_SPEC(0, __is_integral_helper, char, true)
+  _DEFINE_SPEC(0, __is_integral_helper, signed char, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned char, true)
+#ifdef _GLIBCXX_USE_WCHAR_T
+  _DEFINE_SPEC(0, __is_integral_helper, wchar_t, true)
+#endif
+  _DEFINE_SPEC(0, __is_integral_helper, short, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned short, true)
+  _DEFINE_SPEC(0, __is_integral_helper, int, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned int, true)
+  _DEFINE_SPEC(0, __is_integral_helper, long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, long long, true)
+  _DEFINE_SPEC(0, __is_integral_helper, unsigned long long, true)
+
+  /// is_integral
+  template<typename _Tp>
+    struct is_integral
+    : public integral_constant<bool, (__is_integral_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_floating_point_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_floating_point_helper, float, true)
+  _DEFINE_SPEC(0, __is_floating_point_helper, double, true)
+  _DEFINE_SPEC(0, __is_floating_point_helper, long double, true)
+
+  /// is_floating_point
+  template<typename _Tp>
+    struct is_floating_point
+    : public integral_constant<bool, (__is_floating_point_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_array
+  template<typename>
+    struct is_array
+    : public false_type { };
+
+  template<typename _Tp, std::size_t _Size>
+    struct is_array<_Tp[_Size]>
+    : public true_type { };
+
+  template<typename _Tp>
+    struct is_array<_Tp[]>
+    : public true_type { };
+
+  template<typename>
+    struct __is_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(1, __is_pointer_helper, _Tp*, true)
+
+  /// is_pointer
+  template<typename _Tp>
+    struct is_pointer
+    : public integral_constant<bool, (__is_pointer_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_reference
+  template<typename _Tp>
+    struct is_reference;
+
+  /// is_function
+  template<typename _Tp>
+    struct is_function;
+
+  template<typename>
+    struct __is_member_object_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_object_pointer_helper, _Tp _Cp::*,
+	       !is_function<_Tp>::value)
+
+  /// is_member_object_pointer
+  template<typename _Tp>
+    struct is_member_object_pointer
+    : public integral_constant<bool, (__is_member_object_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_member_function_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_function_pointer_helper, _Tp _Cp::*,
+	       is_function<_Tp>::value)
+
+  /// is_member_function_pointer
+  template<typename _Tp>
+    struct is_member_function_pointer
+    : public integral_constant<bool, (__is_member_function_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  /// is_enum
+  template<typename _Tp>
+    struct is_enum
+    : public integral_constant<bool, __is_enum(_Tp)>
+    { };
+
+  /// is_union
+  template<typename _Tp>
+    struct is_union
+    : public integral_constant<bool, __is_union(_Tp)>
+    { };
+
+  /// is_class
+  template<typename _Tp>
+    struct is_class
+    : public integral_constant<bool, __is_class(_Tp)>
+    { };
+
+  /// is_function
+  template<typename>
+    struct is_function
+    : public false_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...)>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......)>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) const>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) const>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes...) const volatile>
+    : public true_type { };
+  template<typename _Res, typename... _ArgTypes>
+    struct is_function<_Res(_ArgTypes......) const volatile>
+    : public true_type { };
+
+  // composite type traits [4.5.2].
+  
+  /// is_arithmetic
+  template<typename _Tp>
+    struct is_arithmetic
+    : public integral_constant<bool, (is_integral<_Tp>::value
+				      || is_floating_point<_Tp>::value)>
+    { };
+
+  /// is_fundamental
+  template<typename _Tp>
+    struct is_fundamental
+    : public integral_constant<bool, (is_arithmetic<_Tp>::value
+				      || is_void<_Tp>::value)>
+    { };
+
+  /// is_object
+  template<typename _Tp>
+    struct is_object
+    : public integral_constant<bool, !(is_function<_Tp>::value
+				       || is_reference<_Tp>::value
+				       || is_void<_Tp>::value)>
+    { };
+
+  /// is_member_pointer
+  template<typename _Tp>
+    struct is_member_pointer;
+
+  /// is_scalar
+  template<typename _Tp>
+    struct is_scalar
+    : public integral_constant<bool, (is_arithmetic<_Tp>::value
+				      || is_enum<_Tp>::value
+				      || is_pointer<_Tp>::value
+				      || is_member_pointer<_Tp>::value)>
+    { };
+
+  /// is_compound
+  template<typename _Tp>
+    struct is_compound
+    : public integral_constant<bool, !is_fundamental<_Tp>::value> { };
+
+  /// is_member_pointer
+  template<typename _Tp>
+    struct __is_member_pointer_helper
+    : public false_type { };
+  _DEFINE_SPEC(2, __is_member_pointer_helper, _Tp _Cp::*, true)
+
+  template<typename _Tp>
+  struct is_member_pointer
+    : public integral_constant<bool, (__is_member_pointer_helper<
+				      typename remove_cv<_Tp>::type>::value)>
+    { };
+
+  // type properties [4.5.3].
+  /// is_const
+  template<typename>
+    struct is_const
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_const<_Tp const>
+    : public true_type { };
+  
+  /// is_volatile
+  template<typename>
+    struct is_volatile
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_volatile<_Tp volatile>
+    : public true_type { };
+
+  /// is_empty
+  template<typename _Tp>
+    struct is_empty
+    : public integral_constant<bool, __is_empty(_Tp)>
+    { };
+
+  /// is_polymorphic
+  template<typename _Tp>
+    struct is_polymorphic
+    : public integral_constant<bool, __is_polymorphic(_Tp)>
+    { };
+
+  /// is_abstract
+  template<typename _Tp>
+    struct is_abstract
+    : public integral_constant<bool, __is_abstract(_Tp)>
+    { };
+
+  /// has_virtual_destructor
+  template<typename _Tp>
+    struct has_virtual_destructor
+    : public integral_constant<bool, __has_virtual_destructor(_Tp)>
+    { };
+
+  /// alignment_of
+  template<typename _Tp>
+    struct alignment_of
+    : public integral_constant<std::size_t, __alignof__(_Tp)> { };
+  
+  /// rank
+  template<typename>
+    struct rank
+    : public integral_constant<std::size_t, 0> { };
+   
+  template<typename _Tp, std::size_t _Size>
+    struct rank<_Tp[_Size]>
+    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
+
+  template<typename _Tp>
+    struct rank<_Tp[]>
+    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
+
+  /// extent
+  template<typename, unsigned _Uint = 0>
+    struct extent
+    : public integral_constant<std::size_t, 0> { };
+  
+  template<typename _Tp, unsigned _Uint, std::size_t _Size>
+    struct extent<_Tp[_Size], _Uint>
+    : public integral_constant<std::size_t,
+			       _Uint == 0 ? _Size : extent<_Tp,
+							   _Uint - 1>::value>
+    { };
+
+  template<typename _Tp, unsigned _Uint>
+    struct extent<_Tp[], _Uint>
+    : public integral_constant<std::size_t,
+			       _Uint == 0 ? 0 : extent<_Tp,
+						       _Uint - 1>::value>
+    { };
+
+  // relationships between types [4.6].
+
+  /// is_same
+  template<typename, typename>
+    struct is_same
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_same<_Tp, _Tp>
+    : public true_type { };
+
+  // const-volatile modifications [4.7.1].
+
+  /// remove_const
+  template<typename _Tp>
+    struct remove_const
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_const<_Tp const>
+    { typedef _Tp     type; };
+  
+  /// remove_volatile
+  template<typename _Tp>
+    struct remove_volatile
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_volatile<_Tp volatile>
+    { typedef _Tp     type; };
+  
+  /// remove_cv
+  template<typename _Tp>
+    struct remove_cv
+    {
+      typedef typename
+      remove_const<typename remove_volatile<_Tp>::type>::type     type;
+    };
+  
+  /// add_const
+  template<typename _Tp>
+    struct add_const
+    { typedef _Tp const     type; };
+   
+  /// add_volatile
+  template<typename _Tp>
+    struct add_volatile
+    { typedef _Tp volatile     type; };
+  
+  /// add_cv
+  template<typename _Tp>
+    struct add_cv
+    {
+      typedef typename
+      add_const<typename add_volatile<_Tp>::type>::type     type;
+    };
+
+  // array modifications [4.7.3].
+
+  /// remove_extent
+  template<typename _Tp>
+    struct remove_extent
+    { typedef _Tp     type; };
+
+  template<typename _Tp, std::size_t _Size>
+    struct remove_extent<_Tp[_Size]>
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_extent<_Tp[]>
+    { typedef _Tp     type; };
+
+  /// remove_all_extents
+  template<typename _Tp>
+    struct remove_all_extents
+    { typedef _Tp     type; };
+
+  template<typename _Tp, std::size_t _Size>
+    struct remove_all_extents<_Tp[_Size]>
+    { typedef typename remove_all_extents<_Tp>::type     type; };
+
+  template<typename _Tp>
+    struct remove_all_extents<_Tp[]>
+    { typedef typename remove_all_extents<_Tp>::type     type; };
+
+  // pointer modifications [4.7.4].
+
+  template<typename _Tp, typename>
+    struct __remove_pointer_helper
+    { typedef _Tp     type; };
+
+  template<typename _Tp, typename _Up>
+    struct __remove_pointer_helper<_Tp, _Up*>
+    { typedef _Up     type; };
+
+  /// remove_pointer
+  template<typename _Tp>
+    struct remove_pointer
+    : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type>
+    { };
+
+  template<typename>
+    struct remove_reference;
+
+  /// add_pointer
+  template<typename _Tp>
+    struct add_pointer
+    { typedef typename remove_reference<_Tp>::type*     type; };
+
+  template<typename>
+    struct is_reference
+    : public false_type { };
+
+  template<typename _Tp>
+    struct is_reference<_Tp&>
+    : public true_type { };
+
+  template<typename _Tp>
+    struct is_pod
+    : public integral_constant<bool, __is_pod(_Tp) || is_void<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_trivial_constructor
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_trivial_copy
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_trivial_assign
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_trivial_destructor
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_nothrow_constructor
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_nothrow_copy
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename _Tp>
+    struct has_nothrow_assign
+    : public integral_constant<bool, is_pod<_Tp>::value>
+    { };
+
+  template<typename>
+    struct __is_signed_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_signed_helper, signed char, true)
+  _DEFINE_SPEC(0, __is_signed_helper, short, true)
+  _DEFINE_SPEC(0, __is_signed_helper, int, true)
+  _DEFINE_SPEC(0, __is_signed_helper, long, true)
+  _DEFINE_SPEC(0, __is_signed_helper, long long, true)
+
+  template<typename _Tp>
+    struct is_signed
+    : public integral_constant<bool, (__is_signed_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename>
+    struct __is_unsigned_helper
+    : public false_type { };
+  _DEFINE_SPEC(0, __is_unsigned_helper, unsigned char, true)
+  _DEFINE_SPEC(0, __is_unsigned_helper, unsigned short, true)
+  _DEFINE_SPEC(0, __is_unsigned_helper, unsigned int, true)
+  _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long, true)
+  _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long long, true)
+
+  template<typename _Tp>
+    struct is_unsigned
+    : public integral_constant<bool, (__is_unsigned_helper<typename
+				      remove_cv<_Tp>::type>::value)>
+    { };
+
+  template<typename _Base, typename _Derived>
+    struct __is_base_of_helper
+    {
+      typedef typename remove_cv<_Base>::type    _NoCv_Base;
+      typedef typename remove_cv<_Derived>::type _NoCv_Derived;
+      static const bool __value = (is_same<_Base, _Derived>::value
+				   || (__is_base_of(_Base, _Derived)
+				       && !is_same<_NoCv_Base,
+				                   _NoCv_Derived>::value));
+    };
+ 
+  template<typename _Base, typename _Derived>
+    struct is_base_of
+    : public integral_constant<bool,
+			       __is_base_of_helper<_Base, _Derived>::__value>
+    { };
+
+  template<typename _From, typename _To>
+    struct __is_convertible_simple
+    : public __sfinae_types
+    {
+    private:
+      static __one __test(_To);
+      static __two __test(...);
+      static _From __makeFrom();
+    
+    public:
+      static const bool __value = sizeof(__test(__makeFrom())) == 1;
+    };
+
+  template<typename _Tp>
+    struct add_reference;
+
+  template<typename _Tp>
+    struct __is_int_or_cref
+    {
+      typedef typename remove_reference<_Tp>::type __rr_Tp;
+      static const bool __value = (is_integral<_Tp>::value
+				   || (is_integral<__rr_Tp>::value
+				       && is_const<__rr_Tp>::value
+				       && !is_volatile<__rr_Tp>::value));
+    };
+
+  template<typename _From, typename _To,
+	   bool = (is_void<_From>::value || is_void<_To>::value
+		   || is_function<_To>::value || is_array<_To>::value
+		   // This special case is here only to avoid warnings.	
+		   || (is_floating_point<typename
+		       remove_reference<_From>::type>::value
+		       && __is_int_or_cref<_To>::__value))>
+    struct __is_convertible_helper
+    {
+      // "An imaginary lvalue of type From...".
+      static const bool __value = (__is_convertible_simple<typename
+				   add_reference<_From>::type, _To>::__value);
+    };
+
+  template<typename _From, typename _To>
+    struct __is_convertible_helper<_From, _To, true>
+    { static const bool __value = (is_void<_To>::value
+				   || (__is_int_or_cref<_To>::__value
+				       && !is_void<_From>::value)); };
+
+  template<typename _From, typename _To>
+    struct is_convertible
+    : public integral_constant<bool,
+			       __is_convertible_helper<_From, _To>::__value>
+    { };
+
+  // reference modifications [4.7.2].
+  template<typename _Tp>
+    struct remove_reference
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct remove_reference<_Tp&>
+    { typedef _Tp     type; };
+
+  // NB: Careful with reference to void.
+  template<typename _Tp, bool = (is_void<_Tp>::value
+				 || is_reference<_Tp>::value)>
+    struct __add_reference_helper
+    { typedef _Tp&    type; };
+
+  template<typename _Tp>
+    struct __add_reference_helper<_Tp, true>
+    { typedef _Tp     type; };
+
+  template<typename _Tp>
+    struct add_reference
+    : public __add_reference_helper<_Tp>
+    { };
+
+  // other transformations [4.8].
+  template<std::size_t _Len, std::size_t _Align>
+    struct aligned_storage
+    { 
+      union type
+      {
+	unsigned char __data[_Len];
+	struct __attribute__((__aligned__((_Align)))) { } __align; 
+      };
+    };
+
+#undef _DEFINE_SPEC_0_HELPER
+#undef _DEFINE_SPEC_1_HELPER
+#undef _DEFINE_SPEC_2_HELPER
+#undef _DEFINE_SPEC
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_TYPE_TRAITS
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map
new file mode 100644
index 000000000..50bab9e4a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map
@@ -0,0 +1,44 @@
+// TR1 unordered_map -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/unordered_map
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_UNORDERED_MAP
+#define _GLIBCXX_TR1_UNORDERED_MAP 1
+
+#pragma GCC system_header
+
+#include <utility>
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_function.h> // equal_to, _Identity, _Select1st
+#include <bits/stringfwd.h>
+#include <tr1/type_traits>
+#include <tr1/functional_hash.h>
+#include <tr1/hashtable.h>
+#include <tr1/unordered_map.h>
+
+#endif // _GLIBCXX_TR1_UNORDERED_MAP
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map.h
new file mode 100644
index 000000000..96404d3d0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_map.h
@@ -0,0 +1,278 @@
+// TR1 unordered_map implementation -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/unordered_map.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/unordered_map}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // NB: When we get typedef templates these class definitions
+  // will be unnecessary.
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
+	   bool __cache_hash_code = false>
+    class __unordered_map
+    : public _Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
+			std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, false, true>
+    {
+      typedef _Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc,
+			 std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, false, true>
+	_Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      __unordered_map(size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+      template<typename _InputIterator>
+	__unordered_map(_InputIterator __f, _InputIterator __l,
+			size_type __n = 10,
+			const hasher& __hf = hasher(),
+			const key_equal& __eql = key_equal(),
+			const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(),
+		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+	{ }
+    };
+
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
+	   bool __cache_hash_code = false>
+    class __unordered_multimap
+    : public _Hashtable<_Key, std::pair<const _Key, _Tp>,
+			_Alloc,
+			std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, false, false>
+    {
+      typedef _Hashtable<_Key, std::pair<const _Key, _Tp>,
+			 _Alloc,
+			 std::_Select1st<std::pair<const _Key, _Tp> >, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, false, false>
+	_Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      __unordered_multimap(size_type __n = 10,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(),
+	      __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+      { }
+
+
+      template<typename _InputIterator>
+	__unordered_multimap(_InputIterator __f, _InputIterator __l,
+			     typename _Base::size_type __n = 0,
+			     const hasher& __hf = hasher(),
+			     const key_equal& __eql = key_equal(),
+			     const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(),
+		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+	{ }
+    };
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_map<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_map<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_multimap<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_multimap<_Key, _Tp, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+
+  /**
+   *  @brief A standard container composed of unique keys (containing
+   *  at most one of each key value) that associates values of another type
+   *  with the keys.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Key  Type of key objects.
+   *  @param  Tp  Type of mapped objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   *
+   * The resulting value type of the container is std::pair<const Key, Tp>.
+   */
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class unordered_map
+    : public __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      unordered_map(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+      template<typename _InputIterator>
+	unordered_map(_InputIterator __f, _InputIterator __l,
+		      size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+	{ }
+    };
+
+  /**
+   *  @brief A standard container composed of equivalent keys
+   *  (possibly containing multiple of each key value) that associates
+   *  values of another type with the keys.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Key  Type of key objects.
+   *  @param  Tp  Type of mapped objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   *
+   * The resulting value type of the container is std::pair<const Key, Tp>.
+   */
+  template<class _Key, class _Tp,
+	   class _Hash = hash<_Key>,
+	   class _Pred = std::equal_to<_Key>,
+	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+    class unordered_multimap
+    : public __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      unordered_multimap(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+
+      template<typename _InputIterator>
+	unordered_multimap(_InputIterator __f, _InputIterator __l,
+			   typename _Base::size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+	{ }
+
+    };
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set
new file mode 100644
index 000000000..3e2cbb039
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set
@@ -0,0 +1,44 @@
+// TR1 unordered_set -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/unordered_set
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_UNORDERED_SET
+#define _GLIBCXX_TR1_UNORDERED_SET 1
+
+#pragma GCC system_header
+
+#include <utility>
+#include <bits/stl_algobase.h>
+#include <bits/allocator.h>
+#include <bits/stl_function.h> // equal_to, _Identity, _Select1st
+#include <bits/stringfwd.h>
+#include <tr1/type_traits>
+#include <tr1/functional_hash.h>
+#include <tr1/hashtable.h>
+#include <tr1/unordered_set.h>
+
+#endif // _GLIBCXX_TR1_UNORDERED_SET
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set.h
new file mode 100644
index 000000000..e65a4cced
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/unordered_set.h
@@ -0,0 +1,267 @@
+// TR1 unordered_set implementation -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/unordered_set.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{tr1/unordered_set}
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // NB: When we get typedef templates these class definitions
+  // will be unnecessary.
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value>,
+	   bool __cache_hash_code = false>
+    class __unordered_set
+    : public _Hashtable<_Value, _Value, _Alloc,
+			std::_Identity<_Value>, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, true, true>
+    {
+      typedef _Hashtable<_Value, _Value, _Alloc,
+			 std::_Identity<_Value>, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, true, true>
+	_Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      __unordered_set(size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<_Value>(), __a)
+      { }
+
+      template<typename _InputIterator>
+	__unordered_set(_InputIterator __f, _InputIterator __l,
+			size_type __n = 10,
+			const hasher& __hf = hasher(),
+			const key_equal& __eql = key_equal(),
+			const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(), __eql,
+		std::_Identity<_Value>(), __a)
+	{ }
+    };
+
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value>,
+	   bool __cache_hash_code = false>
+    class __unordered_multiset
+    : public _Hashtable<_Value, _Value, _Alloc,
+			std::_Identity<_Value>, _Pred,
+			_Hash, __detail::_Mod_range_hashing,
+			__detail::_Default_ranged_hash,
+			__detail::_Prime_rehash_policy,
+			__cache_hash_code, true, false>
+    {
+      typedef _Hashtable<_Value, _Value, _Alloc,
+			 std::_Identity<_Value>, _Pred,
+			 _Hash, __detail::_Mod_range_hashing,
+			 __detail::_Default_ranged_hash,
+			 __detail::_Prime_rehash_policy,
+			 __cache_hash_code, true, false>
+	_Base;
+
+    public:
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      __unordered_multiset(size_type __n = 10,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __detail::_Mod_range_hashing(),
+	      __detail::_Default_ranged_hash(), __eql,
+	      std::_Identity<_Value>(), __a)
+      { }
+
+
+      template<typename _InputIterator>
+	__unordered_multiset(_InputIterator __f, _InputIterator __l,
+			     typename _Base::size_type __n = 0,
+			     const hasher& __hf = hasher(),
+			     const key_equal& __eql = key_equal(),
+			     const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
+		__detail::_Default_ranged_hash(), __eql,
+		std::_Identity<_Value>(), __a)
+	{ }
+    };
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __x,
+	 __unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc,
+	   bool __cache_hash_code>
+    inline void
+    swap(__unordered_multiset<_Value, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __x,
+	 __unordered_multiset<_Value, _Hash, _Pred,
+	 _Alloc, __cache_hash_code>& __y)
+    { __x.swap(__y); }
+
+
+  /**
+   *  @brief A standard container composed of unique keys (containing
+   *  at most one of each key value) in which the elements' keys are
+   *  the elements themselves.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Value  Type of key objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   */
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value> >
+    class unordered_set
+    : public __unordered_set<_Value, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_set<_Value, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      unordered_set(size_type __n = 10,
+		    const hasher& __hf = hasher(),
+		    const key_equal& __eql = key_equal(),
+		    const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+      template<typename _InputIterator>
+	unordered_set(_InputIterator __f, _InputIterator __l,
+		      size_type __n = 10,
+		      const hasher& __hf = hasher(),
+		      const key_equal& __eql = key_equal(),
+		      const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+	{ }
+    };
+
+  /**
+   *  @brief A standard container composed of equivalent keys
+   *  (possibly containing multiple of each key value) in which the
+   *  elements' keys are the elements themselves.
+   *
+   *  @ingroup unordered_associative_containers
+   *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
+   *  @param  Value  Type of key objects.
+   *  @param  Hash  Hashing function object type, defaults to hash<Value>.
+   *  @param  Pred  Predicate function object type, defaults to equal_to<Value>.
+   *  @param  Alloc  Allocator type, defaults to allocator<Key>.
+   */
+  template<class _Value,
+	   class _Hash = hash<_Value>,
+	   class _Pred = std::equal_to<_Value>,
+	   class _Alloc = std::allocator<_Value> >
+    class unordered_multiset
+    : public __unordered_multiset<_Value, _Hash, _Pred, _Alloc>
+    {
+      typedef __unordered_multiset<_Value, _Hash, _Pred, _Alloc>  _Base;
+
+    public:
+      typedef typename _Base::value_type      value_type;
+      typedef typename _Base::size_type       size_type;
+      typedef typename _Base::hasher          hasher;
+      typedef typename _Base::key_equal       key_equal;
+      typedef typename _Base::allocator_type  allocator_type;
+
+      explicit
+      unordered_multiset(size_type __n = 10,
+			 const hasher& __hf = hasher(),
+			 const key_equal& __eql = key_equal(),
+			 const allocator_type& __a = allocator_type())
+      : _Base(__n, __hf, __eql, __a)
+      { }
+
+
+      template<typename _InputIterator>
+	unordered_multiset(_InputIterator __f, _InputIterator __l,
+			   typename _Base::size_type __n = 0,
+			   const hasher& __hf = hasher(),
+			   const key_equal& __eql = key_equal(),
+			   const allocator_type& __a = allocator_type())
+	: _Base(__f, __l, __n, __hf, __eql, __a)
+	{ }
+    };
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+  template<class _Value, class _Hash, class _Pred, class _Alloc>
+    inline void
+    swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
+	 unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
+    { __x.swap(__y); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/utility b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/utility
new file mode 100644
index 000000000..ef3673a44
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/utility
@@ -0,0 +1,109 @@
+// TR1 utility -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008. 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/utility
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_UTILITY
+#define _GLIBCXX_TR1_UTILITY 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <bits/stl_relops.h>
+#include <bits/stl_pair.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+namespace tr1
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<class _Tp>
+    class tuple_size;
+
+  template<int _Int, class _Tp>
+    class tuple_element;
+
+   // Various functions which give std::pair a tuple-like interface.
+  template<class _Tp1, class _Tp2>
+    struct tuple_size<std::pair<_Tp1, _Tp2> >
+    { static const int value = 2; };
+
+  template<class _Tp1, class _Tp2>
+    const int
+    tuple_size<std::pair<_Tp1, _Tp2> >::value;
+
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<0, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp1 type; };
+ 
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<1, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp2 type; };
+
+  template<int _Int>
+    struct __pair_get;
+
+  template<>
+    struct __pair_get<0>
+    {
+      template<typename _Tp1, typename _Tp2>
+      static _Tp1& __get(std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.first; }
+
+      template<typename _Tp1, typename _Tp2>
+      static const _Tp1& __const_get(const std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.first; }
+    };
+
+  template<>
+    struct __pair_get<1>
+    {
+      template<typename _Tp1, typename _Tp2>
+      static _Tp2& __get(std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.second; }
+
+      template<typename _Tp1, typename _Tp2>
+      static const _Tp2& __const_get(const std::pair<_Tp1, _Tp2>& __pair)
+      { return __pair.second; }
+    };
+
+  template<int _Int, class _Tp1, class _Tp2>
+    inline typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&
+    get(std::pair<_Tp1, _Tp2>& __in)
+    { return __pair_get<_Int>::__get(__in); }
+
+  template<int _Int, class _Tp1, class _Tp2>
+    inline const typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&
+    get(const std::pair<_Tp1, _Tp2>& __in)
+    { return __pair_get<_Int>::__const_get(__in); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+}
+}
+
+#endif // _GLIBCXX_TR1_UTILITY
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wchar.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wchar.h
new file mode 100644
index 000000000..599604896
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wchar.h
@@ -0,0 +1,34 @@
+// TR1 wchar.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/wchar.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_WCHAR_H
+#define _GLIBCXX_TR1_WCHAR_H 1
+
+#include <tr1/cwchar>
+
+#endif // _GLIBCXX_TR1_WCHAR_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wctype.h
new file mode 100644
index 000000000..604948a58
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/include/tr1/wctype.h
@@ -0,0 +1,34 @@
+// TR1 wctype.h -*- C++ -*-
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file tr1/wctype.h
+ *  This is a TR1 C++ Library header. 
+ */
+
+#ifndef _GLIBCXX_TR1_WCTYPE_H
+#define _GLIBCXX_TR1_WCTYPE_H 1
+
+#include <tr1/cwctype>
+
+#endif // _GLIBCXX_TR1_WCTYPE_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.am
new file mode 100644
index 000000000..701c2d9a7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.am
@@ -0,0 +1,219 @@
+## Makefile for the GNU C++ Support library.
+##
+## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+## 2009, 2010, 2011
+## Free Software Foundation, Inc.
+##
+## Process this file with automake to produce Makefile.in.
+##
+## This file is part of GCC.
+##
+## GCC is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3, or (at your option)
+## any later version.
+##
+## GCC is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with GCC; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/fragment.am
+
+# Need this library to both be part of libstdc++.a, and installed
+# separately too.
+# 1) separate libsupc++.la
+toolexeclib_LTLIBRARIES = libsupc++.la
+# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
+noinst_LTLIBRARIES = libsupc++convenience.la
+
+std_HEADERS = \
+	cxxabi.h exception initializer_list new typeinfo 
+
+bits_HEADERS = \
+	cxxabi_forced.h hash_bytes.h \
+	exception_defines.h exception_ptr.h nested_exception.h 
+
+headers = $(std_HEADERS) $(bits_HEADERS)
+
+if GLIBCXX_HOSTED
+  c_sources = \
+	cp-demangle.c 
+endif
+
+sources = \
+	array_type_info.cc \
+	atexit_arm.cc \
+	bad_alloc.cc \
+	bad_cast.cc \
+	bad_typeid.cc \
+	class_type_info.cc \
+	del_op.cc \
+	del_opnt.cc \
+	del_opv.cc \
+	del_opvnt.cc \
+	dyncast.cc \
+	eh_alloc.cc \
+	eh_arm.cc \
+	eh_aux_runtime.cc \
+	eh_call.cc \
+	eh_catch.cc \
+	eh_exception.cc \
+	eh_globals.cc \
+	eh_personality.cc \
+	eh_ptr.cc \
+	eh_term_handler.cc \
+	eh_terminate.cc \
+	eh_throw.cc \
+	eh_type.cc \
+	eh_unex_handler.cc \
+	enum_type_info.cc \
+	function_type_info.cc \
+	fundamental_type_info.cc \
+	guard.cc \
+	guard_error.cc \
+	hash_bytes.cc \
+	nested_exception.cc \
+	new_handler.cc \
+	new_op.cc \
+	new_opnt.cc \
+	new_opv.cc \
+	new_opvnt.cc \
+	pbase_type_info.cc \
+	pmem_type_info.cc \
+	pointer_type_info.cc \
+	pure.cc \
+	si_class_type_info.cc \
+	tinfo.cc \
+	tinfo2.cc \
+	vec.cc \
+	vmi_class_type_info.cc \
+	vterminate.cc
+
+libsupc___la_SOURCES = $(sources) $(c_sources) 
+libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way.  Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
+# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+# as the occasion call for it.
+AM_CXXFLAGS = \
+	-fno-implicit-templates \
+	$(LIBSUPCXX_PICFLAGS) \
+	$(WARN_CXXFLAGS) \
+	$(OPTIMIZE_CXXFLAGS) \
+	$(CONFIG_CXXFLAGS)
+
+AM_MAKEFLAGS = \
+	"gxx_include_dir=$(gxx_include_dir)"
+
+
+# Use special rules for pulling things out of libiberty.  These
+# objects should be compiled with the "C" compiler, not the C++
+# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
+C_COMPILE = \
+	$(CC) $(DEFS) $(C_INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+# LTCOMPILE is copied from LTCXXCOMPILE below.
+LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \
+	    $(CC) $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+            $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+cp-demangle.c:
+	rm -f $@
+	$(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
+cp-demangle.lo: cp-demangle.c
+	$(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+cp-demangle.o: cp-demangle.c
+	$(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+
+
+nested_exception.lo: nested_exception.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+nested_exception.o: nested_exception.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+# Libtool notes
+
+# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
+# last. (That way, things like -O2 passed down from the toplevel can
+# be overridden by --enable-debug.)
+
+# 2) In general, libtool expects an argument such as `--tag=CXX' when
+# using the C++ compiler, because that will enable the settings
+# detected when C++ support was being configured.  However, when no
+# such flag is given in the command line, libtool attempts to figure
+# it out by matching the compiler name in each configuration section
+# against a prefix of the command line.  The problem is that, if the
+# compiler name and its initial flags stored in the libtool
+# configuration file don't match those in the command line, libtool
+# can't decide which configuration to use, and it gives up.  The
+# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
+# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
+# attempt to infer which configuration to use.
+#
+# We have to put --tag disable-shared after --tag CXX lest things
+# CXX undo the affect of disable-shared.
+LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
+	       --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
+	       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 
+
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+
+# 3) We'd have a problem when building the shared libstdc++ object if
+# the rules automake generates would be used.  We cannot allow g++ to
+# be used since this would add -lstdc++ to the link line which of
+# course is problematic at this point.  So, we get the top-level
+# directory to configure libstdc++-v3 to use gcc as the C++
+# compilation driver.
+CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
+	  --mode=link $(CXX) \
+	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+
+# Install notes
+# We have to have rules modified from the default to counteract SUN make
+# prepending each of $(*_HEADERS) with VPATH below.
+stddir = $(gxx_include_dir)
+bitsdir = $(gxx_include_dir)/bits
+
+install-stdHEADERS: $(std_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(stddir)
+	@list='$(std_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \
+	done
+
+install-bitsHEADERS: $(bits_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bitsdir)
+	@list='$(bits_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \
+	done
+
+uninstall-stdHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(std_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  rm -f $(DESTDIR)$(stddir)/$$q; \
+	done
+
+uninstall-bitsHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bits_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  rm -f $(DESTDIR)$(bitsdir)/$$q; \
+	done
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.in
new file mode 100644
index 000000000..18ba84018
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/Makefile.in
@@ -0,0 +1,811 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(bits_HEADERS) $(std_HEADERS)
+subdir = libsupc++
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(bitsdir)" \
+	"$(DESTDIR)$(stddir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
+libsupc___la_LIBADD =
+am__objects_1 = array_type_info.lo atexit_arm.lo bad_alloc.lo \
+	bad_cast.lo bad_typeid.lo class_type_info.lo del_op.lo \
+	del_opnt.lo del_opv.lo del_opvnt.lo dyncast.lo eh_alloc.lo \
+	eh_arm.lo eh_aux_runtime.lo eh_call.lo eh_catch.lo \
+	eh_exception.lo eh_globals.lo eh_personality.lo eh_ptr.lo \
+	eh_term_handler.lo eh_terminate.lo eh_throw.lo eh_type.lo \
+	eh_unex_handler.lo enum_type_info.lo function_type_info.lo \
+	fundamental_type_info.lo guard.lo guard_error.lo hash_bytes.lo \
+	nested_exception.lo new_handler.lo new_op.lo new_opnt.lo \
+	new_opv.lo new_opvnt.lo pbase_type_info.lo pmem_type_info.lo \
+	pointer_type_info.lo pure.lo si_class_type_info.lo tinfo.lo \
+	tinfo2.lo vec.lo vmi_class_type_info.lo vterminate.lo
+@GLIBCXX_HOSTED_TRUE@am__objects_2 = cp-demangle.lo
+am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
+libsupc__convenience_la_LIBADD =
+am_libsupc__convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsupc__convenience_la_OBJECTS =  \
+	$(am_libsupc__convenience_la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
+HEADERS = $(bits_HEADERS) $(std_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
+# Need this library to both be part of libstdc++.a, and installed
+# separately too.
+# 1) separate libsupc++.la
+toolexeclib_LTLIBRARIES = libsupc++.la
+# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
+noinst_LTLIBRARIES = libsupc++convenience.la
+std_HEADERS = \
+	cxxabi.h exception initializer_list new typeinfo 
+
+bits_HEADERS = \
+	cxxabi_forced.h hash_bytes.h \
+	exception_defines.h exception_ptr.h nested_exception.h 
+
+headers = $(std_HEADERS) $(bits_HEADERS)
+@GLIBCXX_HOSTED_TRUE@c_sources = \
+@GLIBCXX_HOSTED_TRUE@	cp-demangle.c 
+
+sources = \
+	array_type_info.cc \
+	atexit_arm.cc \
+	bad_alloc.cc \
+	bad_cast.cc \
+	bad_typeid.cc \
+	class_type_info.cc \
+	del_op.cc \
+	del_opnt.cc \
+	del_opv.cc \
+	del_opvnt.cc \
+	dyncast.cc \
+	eh_alloc.cc \
+	eh_arm.cc \
+	eh_aux_runtime.cc \
+	eh_call.cc \
+	eh_catch.cc \
+	eh_exception.cc \
+	eh_globals.cc \
+	eh_personality.cc \
+	eh_ptr.cc \
+	eh_term_handler.cc \
+	eh_terminate.cc \
+	eh_throw.cc \
+	eh_type.cc \
+	eh_unex_handler.cc \
+	enum_type_info.cc \
+	function_type_info.cc \
+	fundamental_type_info.cc \
+	guard.cc \
+	guard_error.cc \
+	hash_bytes.cc \
+	nested_exception.cc \
+	new_handler.cc \
+	new_op.cc \
+	new_opnt.cc \
+	new_opv.cc \
+	new_opvnt.cc \
+	pbase_type_info.cc \
+	pmem_type_info.cc \
+	pointer_type_info.cc \
+	pure.cc \
+	si_class_type_info.cc \
+	tinfo.cc \
+	tinfo2.cc \
+	vec.cc \
+	vmi_class_type_info.cc \
+	vterminate.cc
+
+libsupc___la_SOURCES = $(sources) $(c_sources) 
+libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way.  Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
+# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+# as the occasion call for it.
+AM_CXXFLAGS = \
+	-fno-implicit-templates \
+	$(LIBSUPCXX_PICFLAGS) \
+	$(WARN_CXXFLAGS) \
+	$(OPTIMIZE_CXXFLAGS) \
+	$(CONFIG_CXXFLAGS)
+
+AM_MAKEFLAGS = \
+	"gxx_include_dir=$(gxx_include_dir)"
+
+
+# Use special rules for pulling things out of libiberty.  These
+# objects should be compiled with the "C" compiler, not the C++
+# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
+C_COMPILE = \
+	$(CC) $(DEFS) $(C_INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
+# LTCOMPILE is copied from LTCXXCOMPILE below.
+LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \
+	    $(CC) $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+            $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
+# Libtool notes
+
+# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
+# last. (That way, things like -O2 passed down from the toplevel can
+# be overridden by --enable-debug.)
+
+# 2) In general, libtool expects an argument such as `--tag=CXX' when
+# using the C++ compiler, because that will enable the settings
+# detected when C++ support was being configured.  However, when no
+# such flag is given in the command line, libtool attempts to figure
+# it out by matching the compiler name in each configuration section
+# against a prefix of the command line.  The problem is that, if the
+# compiler name and its initial flags stored in the libtool
+# configuration file don't match those in the command line, libtool
+# can't decide which configuration to use, and it gives up.  The
+# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
+# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
+# attempt to infer which configuration to use.
+#
+# We have to put --tag disable-shared after --tag CXX lest things
+# CXX undo the affect of disable-shared.
+LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
+	       --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
+	       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 
+
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+
+# 3) We'd have a problem when building the shared libstdc++ object if
+# the rules automake generates would be used.  We cannot allow g++ to
+# be used since this would add -lstdc++ to the link line which of
+# course is problematic at this point.  So, we get the top-level
+# directory to configure libstdc++-v3 to use gcc as the C++
+# compilation driver.
+CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \
+	  --mode=link $(CXX) \
+	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+
+# Install notes
+# We have to have rules modified from the default to counteract SUN make
+# prepending each of $(*_HEADERS) with VPATH below.
+stddir = $(gxx_include_dir)
+bitsdir = $(gxx_include_dir)/bits
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cc .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps libsupc++/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps libsupc++/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
+	}
+
+uninstall-toolexeclibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
+	done
+
+clean-toolexeclibLTLIBRARIES:
+	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+	@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES) 
+	$(CXXLINK) -rpath $(toolexeclibdir) $(libsupc___la_OBJECTS) $(libsupc___la_LIBADD) $(LIBS)
+libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES) 
+	$(CXXLINK)  $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+.c.o:
+	$(COMPILE) -c $<
+
+.c.obj:
+	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	$(LTCOMPILE) -c -o $@ $<
+
+.cc.o:
+	$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(bitsdir)" "$(DESTDIR)$(stddir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	clean-toolexeclibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-bitsHEADERS install-stdHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-toolexeclibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-bitsHEADERS uninstall-stdHEADERS \
+	uninstall-toolexeclibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES \
+	clean-toolexeclibLTLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags dvi dvi-am \
+	html html-am info info-am install install-am \
+	install-bitsHEADERS install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-stdHEADERS install-strip \
+	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-bitsHEADERS uninstall-stdHEADERS \
+	uninstall-toolexeclibLTLIBRARIES
+
+
+cp-demangle.c:
+	rm -f $@
+	$(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
+cp-demangle.lo: cp-demangle.c
+	$(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+cp-demangle.o: cp-demangle.c
+	$(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+
+nested_exception.lo: nested_exception.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+nested_exception.o: nested_exception.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+install-stdHEADERS: $(std_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(stddir)
+	@list='$(std_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \
+	done
+
+install-bitsHEADERS: $(bits_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bitsdir)
+	@list='$(bits_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \
+	done
+
+uninstall-stdHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(std_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  rm -f $(DESTDIR)$(stddir)/$$q; \
+	done
+
+uninstall-bitsHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bits_HEADERS)'; for p in $$list; do \
+	  q=`echo $$p | sed -e 's,.*/,,'`; \
+	  rm -f $(DESTDIR)$(bitsdir)/$$q; \
+	done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/array_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/array_type_info.cc
new file mode 100644
index 000000000..17f911be8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/array_type_info.cc
@@ -0,0 +1,33 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__array_type_info::
+~__array_type_info ()
+{}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/atexit_arm.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/atexit_arm.cc
new file mode 100644
index 000000000..757d6c958
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/atexit_arm.cc
@@ -0,0 +1,39 @@
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//  
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cxxabi.h>
+
+#if defined(__arm__) && defined(__ARM_EABI__)
+
+namespace __aeabiv1
+{
+  extern "C" int
+  __aeabi_atexit (void *object, 
+		  void (*destructor) (void *),
+		  void *dso_handle) throw ()
+  {
+    return abi::__cxa_atexit(destructor, object, dso_handle);
+  }
+} // namespace __aeabiv1
+
+#endif // defined(__arm__) && defined(__ARM_EABI__)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_alloc.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_alloc.cc
new file mode 100644
index 000000000..16076cef9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_alloc.cc
@@ -0,0 +1,34 @@
+// Implementation file for the -*- C++ -*- dynamic memory management header.
+
+// Copyright (C) 2010 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "new"
+
+std::bad_alloc::~bad_alloc() throw() { }
+
+const char* 
+std::bad_alloc::what() const throw()
+{
+  return "std::bad_alloc";
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_cast.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_cast.cc
new file mode 100644
index 000000000..2f56e4e82
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_cast.cc
@@ -0,0 +1,37 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009  Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <typeinfo>
+
+namespace std {
+
+bad_cast::~bad_cast() throw() { }
+
+const char* 
+bad_cast::what() const throw()
+{
+  return "std::bad_cast";
+}
+
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_typeid.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_typeid.cc
new file mode 100644
index 000000000..54d7ef59d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/bad_typeid.cc
@@ -0,0 +1,37 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009  Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <typeinfo>
+
+namespace std {
+
+bad_typeid::~bad_typeid() throw() { }
+
+const char* 
+bad_typeid::what() const throw()
+{
+  return "std::bad_typeid";
+}
+
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/class_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/class_type_info.cc
new file mode 100644
index 000000000..9d40d0c6b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/class_type_info.cc
@@ -0,0 +1,111 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009  Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__class_type_info::
+~__class_type_info ()
+{}
+
+bool __class_type_info::
+__do_catch (const type_info *thr_type,
+            void **thr_obj,
+            unsigned outer) const
+{
+  if (*this == *thr_type)
+    return true;
+  if (outer >= 4)
+    // Neither `A' nor `A *'.
+    return false;
+  return thr_type->__do_upcast (this, thr_obj);
+}
+
+bool __class_type_info::
+__do_upcast (const __class_type_info *dst_type,
+             void **obj_ptr) const
+{
+  __upcast_result result (__vmi_class_type_info::__flags_unknown_mask);
+  
+  __do_upcast (dst_type, *obj_ptr, result);
+  if (!contained_public_p (result.part2dst))
+    return false;
+  *obj_ptr = const_cast <void *> (result.dst_ptr);
+  return true;
+}
+
+__class_type_info::__sub_kind __class_type_info::
+__do_find_public_src (ptrdiff_t,
+                      const void *obj_ptr,
+                      const __class_type_info *,
+                      const void *src_ptr) const
+{
+  if (src_ptr == obj_ptr)
+    // Must be our type, as the pointers match.
+    return __contained_public;
+  return __not_contained;
+}
+
+bool __class_type_info::
+__do_dyncast (ptrdiff_t,
+              __sub_kind access_path,
+              const __class_type_info *dst_type,
+              const void *obj_ptr,
+              const __class_type_info *src_type,
+              const void *src_ptr,
+              __dyncast_result &__restrict result) const
+{
+  if (obj_ptr == src_ptr && *this == *src_type)
+    {
+      // The src object we started from. Indicate how we are accessible from
+      // the most derived object.
+      result.whole2src = access_path;
+      return false;
+    }
+  if (*this == *dst_type)
+    {
+      result.dst_ptr = obj_ptr;
+      result.whole2dst = access_path;
+      result.dst2src = __not_contained;
+      return false;
+    }
+  return false;
+}
+
+bool __class_type_info::
+__do_upcast (const __class_type_info *dst, const void *obj,
+             __upcast_result &__restrict result) const
+{
+  if (*this == *dst)
+    {
+      result.dst_ptr = obj;
+      result.base_type = nonvirtual_base_type;
+      result.part2dst = __contained_public;
+      return true;
+    }
+  return false;
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi.h
new file mode 100644
index 000000000..c93085a07
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi.h
@@ -0,0 +1,626 @@
+// ABI Support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Nathan Sidwell, Codesourcery LLC, <nathan@codesourcery.com>
+
+/* This file declares the new abi entry points into the runtime. It is not
+   normally necessary for user programs to include this header, or use the
+   entry points directly. However, this header is available should that be
+   needed.
+
+   Some of the entry points are intended for both C and C++, thus this header
+   is includable from both C and C++. Though the C++ specific parts are not
+   available in C, naturally enough.  */
+
+/** @file cxxabi.h
+ *  The header provides an interface to the C++ ABI.
+ */
+
+#ifndef _CXXABI_H
+#define _CXXABI_H 1
+
+#pragma GCC system_header
+
+#pragma GCC visibility push(default)
+
+#include <stddef.h>
+#include <bits/c++config.h>
+#include <bits/cxxabi_tweaks.h>
+#include <bits/cxxabi_forced.h>
+
+#ifdef __cplusplus
+namespace __cxxabiv1
+{
+  extern "C"
+  {
+#endif
+
+  typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *);
+
+  // Allocate array.
+  void*
+  __cxa_vec_new(size_t __element_count, size_t __element_size,
+		size_t __padding_size, __cxa_cdtor_type __constructor,
+		__cxa_cdtor_type __destructor);
+
+  void*
+  __cxa_vec_new2(size_t __element_count, size_t __element_size,
+		 size_t __padding_size, __cxa_cdtor_type __constructor,
+		 __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
+		 void (*__dealloc) (void*));
+
+  void*
+  __cxa_vec_new3(size_t __element_count, size_t __element_size,
+		 size_t __padding_size, __cxa_cdtor_type __constructor,
+		 __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
+		 void (*__dealloc) (void*, size_t));
+
+  // Construct array.
+  __cxa_vec_ctor_return_type
+  __cxa_vec_ctor(void* __array_address, size_t __element_count,
+		 size_t __element_size, __cxa_cdtor_type __constructor,
+		 __cxa_cdtor_type __destructor);
+
+  __cxa_vec_ctor_return_type
+  __cxa_vec_cctor(void* __dest_array, void* __src_array,
+		  size_t __element_count, size_t __element_size,
+		  __cxa_cdtor_return_type (*__constructor) (void*, void*),
+		  __cxa_cdtor_type __destructor);
+
+  // Destruct array.
+  void
+  __cxa_vec_dtor(void* __array_address, size_t __element_count,
+		 size_t __element_size, __cxa_cdtor_type __destructor);
+
+  void
+  __cxa_vec_cleanup(void* __array_address, size_t __element_count, size_t __s,
+		    __cxa_cdtor_type __destructor) _GLIBCXX_NOTHROW;
+
+  // Destruct and release array.
+  void
+  __cxa_vec_delete(void* __array_address, size_t __element_size,
+		   size_t __padding_size, __cxa_cdtor_type __destructor);
+
+  void
+  __cxa_vec_delete2(void* __array_address, size_t __element_size,
+		    size_t __padding_size, __cxa_cdtor_type __destructor,
+		    void (*__dealloc) (void*));
+
+  void
+  __cxa_vec_delete3(void* __array_address, size_t __element_size,
+		    size_t __padding_size, __cxa_cdtor_type __destructor,
+		    void (*__dealloc) (void*, size_t));
+
+  int
+  __cxa_guard_acquire(__guard*);
+
+  void
+  __cxa_guard_release(__guard*) _GLIBCXX_NOTHROW;
+
+  void
+  __cxa_guard_abort(__guard*) _GLIBCXX_NOTHROW;
+
+  // Pure virtual functions.
+  void
+  __cxa_pure_virtual(void) __attribute__ ((__noreturn__));
+
+  // Exception handling.
+  void
+  __cxa_bad_cast();
+
+  void
+  __cxa_bad_typeid();
+
+  // DSO destruction.
+  int
+  __cxa_atexit(void (*)(void*), void*, void*) _GLIBCXX_NOTHROW;
+
+  int
+  __cxa_finalize(void*);
+
+
+  /**
+   *  @brief Demangling routine.
+   *  ABI-mandated entry point in the C++ runtime library for demangling.
+   *
+   *  @param __mangled_name A NUL-terminated character string
+   *  containing the name to be demangled.
+   *
+   *  @param __output_buffer A region of memory, allocated with
+   *  malloc, of @a *__length bytes, into which the demangled name is
+   *  stored.  If @a __output_buffer is not long enough, it is
+   *  expanded using realloc.  @a __output_buffer may instead be NULL;
+   *  in that case, the demangled name is placed in a region of memory
+   *  allocated with malloc.
+   *
+   *  @param __length If @a __length is non-NULL, the length of the
+   *  buffer containing the demangled name is placed in @a *__length.
+   *
+   *  @param __status @a *__status is set to one of the following values:
+   *   0: The demangling operation succeeded.
+   *  -1: A memory allocation failure occurred.
+   *  -2: @a mangled_name is not a valid name under the C++ ABI mangling rules.
+   *  -3: One of the arguments is invalid.
+   *
+   *  @return A pointer to the start of the NUL-terminated demangled
+   *  name, or NULL if the demangling fails.  The caller is
+   *  responsible for deallocating this memory using @c free.
+   *
+   *  The demangling is performed using the C++ ABI mangling rules,
+   *  with GNU extensions. For example, this function is used in
+   *  __gnu_cxx::__verbose_terminate_handler.
+   *
+   *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch39.html
+   *  for other examples of use.
+   *
+   *  @note The same demangling functionality is available via
+   *  libiberty (@c <libiberty/demangle.h> and @c libiberty.a) in GCC
+   *  3.1 and later, but that requires explicit installation (@c
+   *  --enable-install-libiberty) and uses a different API, although
+   *  the ABI is unchanged.
+   */
+  char*
+  __cxa_demangle(const char* __mangled_name, char* __output_buffer,
+		 size_t* __length, int* __status);
+#ifdef __cplusplus
+  }
+} // namespace __cxxabiv1
+#endif
+
+#ifdef __cplusplus
+
+#include <typeinfo>
+
+namespace __cxxabiv1
+{
+  // Type information for int, float etc.
+  class __fundamental_type_info : public std::type_info
+  {
+  public:
+    explicit
+    __fundamental_type_info(const char* __n) : std::type_info(__n) { }
+
+    virtual
+    ~__fundamental_type_info();
+  };
+
+  // Type information for array objects.
+  class __array_type_info : public std::type_info
+  {
+  public:
+    explicit
+    __array_type_info(const char* __n) : std::type_info(__n) { }
+
+    virtual
+    ~__array_type_info();
+  };
+
+  // Type information for functions (both member and non-member).
+  class __function_type_info : public std::type_info
+  {
+  public:
+    explicit
+    __function_type_info(const char* __n) : std::type_info(__n) { }
+
+    virtual
+    ~__function_type_info();
+
+  protected:
+    // Implementation defined member function.
+    virtual bool
+    __is_function_p() const;
+  };
+
+  // Type information for enumerations.
+  class __enum_type_info : public std::type_info
+  {
+  public:
+    explicit
+    __enum_type_info(const char* __n) : std::type_info(__n) { }
+
+    virtual
+    ~__enum_type_info();
+  };
+
+  // Common type information for simple pointers and pointers to member.
+  class __pbase_type_info : public std::type_info
+  {
+  public:
+    unsigned int 		__flags; // Qualification of the target object.
+    const std::type_info* 	__pointee; // Type of pointed to object.
+
+    explicit
+    __pbase_type_info(const char* __n, int __quals,
+		      const std::type_info* __type)
+    : std::type_info(__n), __flags(__quals), __pointee(__type)
+    { }
+
+    virtual
+    ~__pbase_type_info();
+
+    // Implementation defined type.
+    enum __masks
+      {
+	__const_mask = 0x1,
+	__volatile_mask = 0x2,
+	__restrict_mask = 0x4,
+	__incomplete_mask = 0x8,
+	__incomplete_class_mask = 0x10
+      };
+
+  protected:
+    __pbase_type_info(const __pbase_type_info&);
+
+    __pbase_type_info&
+    operator=(const __pbase_type_info&);
+
+    // Implementation defined member functions.
+    virtual bool
+    __do_catch(const std::type_info* __thr_type, void** __thr_obj,
+	       unsigned int __outer) const;
+
+    inline virtual bool
+    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+		    unsigned __outer) const;
+  };
+
+  // Type information for simple pointers.
+  class __pointer_type_info : public __pbase_type_info
+  {
+  public:
+    explicit
+    __pointer_type_info(const char* __n, int __quals,
+			const std::type_info* __type)
+    : __pbase_type_info (__n, __quals, __type) { }
+
+
+    virtual
+    ~__pointer_type_info();
+
+  protected:
+    // Implementation defined member functions.
+    virtual bool
+    __is_pointer_p() const;
+
+    virtual bool
+    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+		    unsigned __outer) const;
+  };
+
+  class __class_type_info;
+
+  // Type information for a pointer to member variable.
+  class __pointer_to_member_type_info : public __pbase_type_info
+  {
+  public:
+    __class_type_info* __context;   // Class of the member.
+
+    explicit
+    __pointer_to_member_type_info(const char* __n, int __quals,
+				  const std::type_info* __type,
+				  __class_type_info* __klass)
+    : __pbase_type_info(__n, __quals, __type), __context(__klass) { }
+
+    virtual
+    ~__pointer_to_member_type_info();
+
+  protected:
+    __pointer_to_member_type_info(const __pointer_to_member_type_info&);
+
+    __pointer_to_member_type_info&
+    operator=(const __pointer_to_member_type_info&);
+
+    // Implementation defined member function.
+    virtual bool
+    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+		    unsigned __outer) const;
+  };
+
+  // Helper class for __vmi_class_type.
+  class __base_class_type_info
+  {
+  public:
+    const __class_type_info* 	__base_type;  // Base class type.
+    long 			__offset_flags;  // Offset and info.
+
+    enum __offset_flags_masks
+      {
+	__virtual_mask = 0x1,
+	__public_mask = 0x2,
+	__hwm_bit = 2,
+	__offset_shift = 8          // Bits to shift offset.
+      };
+
+    // Implementation defined member functions.
+    bool
+    __is_virtual_p() const
+    { return __offset_flags & __virtual_mask; }
+
+    bool
+    __is_public_p() const
+    { return __offset_flags & __public_mask; }
+
+    ptrdiff_t
+    __offset() const
+    {
+      // This shift, being of a signed type, is implementation
+      // defined. GCC implements such shifts as arithmetic, which is
+      // what we want.
+      return static_cast<ptrdiff_t>(__offset_flags) >> __offset_shift;
+    }
+  };
+
+  // Type information for a class.
+  class __class_type_info : public std::type_info
+  {
+  public:
+    explicit
+    __class_type_info (const char *__n) : type_info(__n) { }
+
+    virtual
+    ~__class_type_info ();
+
+    // Implementation defined types.
+    // The type sub_kind tells us about how a base object is contained
+    // within a derived object. We often do this lazily, hence the
+    // UNKNOWN value. At other times we may use NOT_CONTAINED to mean
+    // not publicly contained.
+    enum __sub_kind
+      {
+	// We have no idea.
+	__unknown = 0,
+
+	// Not contained within us (in some circumstances this might
+	// mean not contained publicly)
+	__not_contained,
+
+	// Contained ambiguously.
+	__contained_ambig,
+
+	// Via a virtual path.
+	__contained_virtual_mask = __base_class_type_info::__virtual_mask,
+
+	// Via a public path.
+	__contained_public_mask = __base_class_type_info::__public_mask,
+
+	// Contained within us.
+	__contained_mask = 1 << __base_class_type_info::__hwm_bit,
+
+	__contained_private = __contained_mask,
+	__contained_public = __contained_mask | __contained_public_mask
+      };
+
+    struct __upcast_result;
+    struct __dyncast_result;
+
+  protected:
+    // Implementation defined member functions.
+    virtual bool
+    __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const;
+
+    virtual bool
+    __do_catch(const type_info* __thr_type, void** __thr_obj,
+	       unsigned __outer) const;
+
+  public:
+    // Helper for upcast. See if DST is us, or one of our bases.
+    // Return false if not found, true if found.
+    virtual bool
+    __do_upcast(const __class_type_info* __dst, const void* __obj,
+		__upcast_result& __restrict __result) const;
+
+    // Indicate whether SRC_PTR of type SRC_TYPE is contained publicly
+    // within OBJ_PTR. OBJ_PTR points to a base object of our type,
+    // which is the destination type. SRC2DST indicates how SRC
+    // objects might be contained within this type.  If SRC_PTR is one
+    // of our SRC_TYPE bases, indicate the virtuality. Returns
+    // not_contained for non containment or private containment.
+    inline __sub_kind
+    __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+		      const __class_type_info* __src_type,
+		      const void* __src_ptr) const;
+
+    // Helper for dynamic cast. ACCESS_PATH gives the access from the
+    // most derived object to this base. DST_TYPE indicates the
+    // desired type we want. OBJ_PTR points to a base of our type
+    // within the complete object. SRC_TYPE indicates the static type
+    // started from and SRC_PTR points to that base within the most
+    // derived object. Fill in RESULT with what we find. Return true
+    // if we have located an ambiguous match.
+    virtual bool
+    __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+		 const __class_type_info* __dst_type, const void* __obj_ptr,
+		 const __class_type_info* __src_type, const void* __src_ptr,
+		 __dyncast_result& __result) const;
+
+    // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE
+    // bases are inherited by the type started from -- which is not
+    // necessarily the current type. The current type will be a base
+    // of the destination type.  OBJ_PTR points to the current base.
+    virtual __sub_kind
+    __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+			 const __class_type_info* __src_type,
+			 const void* __src_ptr) const;
+  };
+
+  // Type information for a class with a single non-virtual base.
+  class __si_class_type_info : public __class_type_info
+  {
+  public:
+    const __class_type_info* __base_type;
+
+    explicit
+    __si_class_type_info(const char *__n, const __class_type_info *__base)
+    : __class_type_info(__n), __base_type(__base) { }
+
+    virtual
+    ~__si_class_type_info();
+
+  protected:
+    __si_class_type_info(const __si_class_type_info&);
+
+    __si_class_type_info&
+    operator=(const __si_class_type_info&);
+
+    // Implementation defined member functions.
+    virtual bool
+    __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+		 const __class_type_info* __dst_type, const void* __obj_ptr,
+		 const __class_type_info* __src_type, const void* __src_ptr,
+		 __dyncast_result& __result) const;
+
+    virtual __sub_kind
+    __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+			 const __class_type_info* __src_type,
+			 const void* __sub_ptr) const;
+
+    virtual bool
+    __do_upcast(const __class_type_info*__dst, const void*__obj,
+		__upcast_result& __restrict __result) const;
+  };
+
+  // Type information for a class with multiple and/or virtual bases.
+  class __vmi_class_type_info : public __class_type_info
+  {
+  public:
+    unsigned int 		__flags;  // Details about the class hierarchy.
+    unsigned int 		__base_count;  // Number of direct bases.
+
+    // The array of bases uses the trailing array struct hack so this
+    // class is not constructable with a normal constructor. It is
+    // internally generated by the compiler.
+    __base_class_type_info 	__base_info[1];  // Array of bases.
+
+    explicit
+    __vmi_class_type_info(const char* __n, int ___flags)
+    : __class_type_info(__n), __flags(___flags), __base_count(0) { }
+
+    virtual
+    ~__vmi_class_type_info();
+
+    // Implementation defined types.
+    enum __flags_masks
+      {
+	__non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base.
+	__diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance.
+	__flags_unknown_mask = 0x10
+      };
+
+  protected:
+    // Implementation defined member functions.
+    virtual bool
+    __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+		 const __class_type_info* __dst_type, const void* __obj_ptr,
+		 const __class_type_info* __src_type, const void* __src_ptr,
+		 __dyncast_result& __result) const;
+
+    virtual __sub_kind
+    __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+			 const __class_type_info* __src_type,
+			 const void* __src_ptr) const;
+
+    virtual bool
+    __do_upcast(const __class_type_info* __dst, const void* __obj,
+		__upcast_result& __restrict __result) const;
+  };
+
+  // Dynamic cast runtime.
+  // src2dst has the following possible values
+  //  >-1: src_type is a unique public non-virtual base of dst_type
+  //       dst_ptr + src2dst == src_ptr
+  //   -1: unspecified relationship
+  //   -2: src_type is not a public base of dst_type
+  //   -3: src_type is a multiple public non-virtual base of dst_type
+  extern "C" void*
+  __dynamic_cast(const void* __src_ptr, // Starting object.
+		 const __class_type_info* __src_type, // Static type of object.
+		 const __class_type_info* __dst_type, // Desired target type.
+		 ptrdiff_t __src2dst); // How src and dst are related.
+
+
+  // Returns the type_info for the currently handled exception [15.3/8], or
+  // null if there is none.
+  extern "C" std::type_info*
+  __cxa_current_exception_type() _GLIBCXX_NOTHROW __attribute__ ((__pure__));
+
+  // A magic placeholder class that can be caught by reference
+  // to recognize foreign exceptions.
+  class __foreign_exception
+  {
+    virtual ~__foreign_exception() _GLIBCXX_NOTHROW;
+    virtual void __pure_dummy() = 0; // prevent catch by value
+  };
+
+} // namespace __cxxabiv1
+
+/** @namespace abi
+ *  @brief The cross-vendor C++ Application Binary Interface. A
+ *  namespace alias to __cxxabiv1, but user programs should use the
+ *  alias 'abi'.
+ *
+ *  A brief overview of an ABI is given in the libstdc++ FAQ, question
+ *  5.8 (you may have a copy of the FAQ locally, or you can view the online
+ *  version at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#5_8).
+ *
+ *  GCC subscribes to a cross-vendor ABI for C++, sometimes
+ *  called the IA64 ABI because it happens to be the native ABI for that
+ *  platform.  It is summarized at http://www.codesourcery.com/cxx-abi/
+ *  along with the current specification.
+ *
+ *  For users of GCC greater than or equal to 3.x, entry points are
+ *  available in <cxxabi.h>, which notes, <em>'It is not normally
+ *  necessary for user programs to include this header, or use the
+ *  entry points directly.  However, this header is available should
+ *  that be needed.'</em>
+*/
+namespace abi = __cxxabiv1;
+
+namespace __gnu_cxx
+{
+  /**
+   *  @brief Exception thrown by __cxa_guard_acquire.
+   *  @ingroup exceptions
+   *
+   *  6.7[stmt.dcl]/4: If control re-enters the declaration (recursively)
+   *  while the object is being initialized, the behavior is undefined.
+   *
+   *  Since we already have a library function to handle locking, we might
+   *  as well check for this situation and throw an exception.
+   *  We use the second byte of the guard variable to remember that we're
+   *  in the middle of an initialization.
+   */
+  class recursive_init_error: public std::exception
+  {
+  public:
+    recursive_init_error() throw() { }
+    virtual ~recursive_init_error() throw ();
+  };
+}
+#endif // __cplusplus
+
+#pragma GCC visibility pop
+
+#endif // __CXXABI_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi_forced.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi_forced.h
new file mode 100644
index 000000000..c45ce799d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/cxxabi_forced.h
@@ -0,0 +1,60 @@
+// cxxabi.h subset for cancellation -*- C++ -*-
+  
+// Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+// 
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/cxxabi_forced.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{cxxabi.h}
+ */
+
+#ifndef _CXXABI_FORCED_H
+#define _CXXABI_FORCED_H 1
+
+#pragma GCC system_header
+
+#pragma GCC visibility push(default)
+
+#ifdef __cplusplus
+namespace __cxxabiv1
+{  
+  /** 
+   *  @brief Thrown as part of forced unwinding.
+   *  @ingroup exceptions
+   *
+   *  A magic placeholder class that can be caught by reference to
+   *  recognize forced unwinding.
+   */
+  class __forced_unwind
+  {
+    virtual ~__forced_unwind() throw();
+
+    // Prevent catch by value.
+    virtual void __pure_dummy() = 0; 
+  };
+}
+#endif // __cplusplus
+
+#pragma GCC visibility pop
+
+#endif // __CXXABI_FORCED_H 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_op.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_op.cc
new file mode 100644
index 000000000..86d4c1e29
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_op.cc
@@ -0,0 +1,48 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2007, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+#if !_GLIBCXX_HOSTED
+// A freestanding C runtime may not provide "free" -- but there is no
+// other reasonable way to implement "operator delete".
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+  extern "C" void free(void*);
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+#else
+# include <cstdlib>
+#endif
+
+#include "new"
+
+_GLIBCXX_WEAK_DEFINITION void
+operator delete(void* ptr) throw ()
+{
+  if (ptr)
+    std::free(ptr);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opnt.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opnt.cc
new file mode 100644
index 000000000..75051d5be
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opnt.cc
@@ -0,0 +1,36 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "new"
+
+extern "C" void free (void *);
+
+_GLIBCXX_WEAK_DEFINITION void
+operator delete (void *ptr, const std::nothrow_t&) throw ()
+{
+  if (ptr)
+    free (ptr);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opv.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opv.cc
new file mode 100644
index 000000000..c56df07d9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opv.cc
@@ -0,0 +1,33 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "new"
+
+_GLIBCXX_WEAK_DEFINITION void
+operator delete[] (void *ptr) throw ()
+{
+  ::operator delete (ptr);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opvnt.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opvnt.cc
new file mode 100644
index 000000000..fec64953e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/del_opvnt.cc
@@ -0,0 +1,33 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "new"
+
+_GLIBCXX_WEAK_DEFINITION void
+operator delete[] (void *ptr, const std::nothrow_t&) throw ()
+{
+  ::operator delete (ptr);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/dyncast.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/dyncast.cc
new file mode 100644
index 000000000..cb97bc50e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/dyncast.cc
@@ -0,0 +1,86 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+
+// this is the external interface to the dynamic cast machinery
+/* sub: source address to be adjusted; nonnull, and since the
+ *      source object is polymorphic, *(void**)sub is a virtual pointer.
+ * src: static type of the source object.
+ * dst: destination type (the "T" in "dynamic_cast<T>(v)").
+ * src2dst_offset: a static hint about the location of the
+ *    source subobject with respect to the complete object;
+ *    special negative values are:
+ *       -1: no hint
+ *       -2: src is not a public base of dst
+ *       -3: src is a multiple public base type but never a
+ *           virtual base type
+ *    otherwise, the src type is a unique public nonvirtual
+ *    base type of dst at offset src2dst_offset from the
+ *    origin of dst.  */
+extern "C" void *
+__dynamic_cast (const void *src_ptr,    // object started from
+                const __class_type_info *src_type, // type of the starting object
+                const __class_type_info *dst_type, // desired target type
+                ptrdiff_t src2dst) // how src and dst are related
+  {
+  const void *vtable = *static_cast <const void *const *> (src_ptr);
+  const vtable_prefix *prefix =
+      adjust_pointer <vtable_prefix> (vtable, 
+				      -offsetof (vtable_prefix, origin));
+  const void *whole_ptr =
+      adjust_pointer <void> (src_ptr, prefix->whole_object);
+  const __class_type_info *whole_type = prefix->whole_type;
+  __class_type_info::__dyncast_result result;
+  
+  whole_type->__do_dyncast (src2dst, __class_type_info::__contained_public,
+                            dst_type, whole_ptr, src_type, src_ptr, result);
+  if (!result.dst_ptr)
+    return NULL;
+  if (contained_public_p (result.dst2src))
+    // Src is known to be a public base of dst.
+    return const_cast <void *> (result.dst_ptr);
+  if (contained_public_p (__class_type_info::__sub_kind (result.whole2src & result.whole2dst)))
+    // Both src and dst are known to be public bases of whole. Found a valid
+    // cross cast.
+    return const_cast <void *> (result.dst_ptr);
+  if (contained_nonvirtual_p (result.whole2src))
+    // Src is known to be a non-public nonvirtual base of whole, and not a
+    // base of dst. Found an invalid cross cast, which cannot also be a down
+    // cast
+    return NULL;
+  if (result.dst2src == __class_type_info::__unknown)
+    result.dst2src = dst_type->__find_public_src (src2dst, result.dst_ptr,
+                                                  src_type, src_ptr);
+  if (contained_public_p (result.dst2src))
+    // Found a valid down cast
+    return const_cast <void *> (result.dst_ptr);
+  // Must be an invalid down cast, or the cross cast wasn't bettered
+  return NULL;
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_alloc.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_alloc.cc
new file mode 100644
index 000000000..818af0fe1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_alloc.cc
@@ -0,0 +1,220 @@
+// -*- C++ -*- Allocate exception objects.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// This is derived from the C++ ABI for IA-64.  Where we diverge
+// for cross-architecture compatibility are noted with "@@@".
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#if _GLIBCXX_HOSTED
+#include <cstring>
+#endif
+#include <climits>
+#include <exception>
+#include "unwind-cxx.h"
+#include <ext/concurrence.h>
+
+#if _GLIBCXX_HOSTED
+using std::free;
+using std::malloc;
+using std::memset;
+#else
+// In a freestanding environment, these functions may not be available
+// -- but for now, we assume that they are.
+extern "C" void *malloc (std::size_t);
+extern "C" void free(void *);
+extern "C" void *memset (void *, int, std::size_t);
+#endif
+
+using namespace __cxxabiv1;
+
+// ??? How to control these parameters.
+
+// Guess from the size of basic types how large a buffer is reasonable.
+// Note that the basic c++ exception header has 13 pointers and 2 ints,
+// so on a system with PSImode pointers we're talking about 56 bytes
+// just for overhead.
+
+#if INT_MAX == 32767
+# define EMERGENCY_OBJ_SIZE	128
+# define EMERGENCY_OBJ_COUNT	16
+#elif LONG_MAX == 2147483647
+# define EMERGENCY_OBJ_SIZE	512
+# define EMERGENCY_OBJ_COUNT	32
+#else
+# define EMERGENCY_OBJ_SIZE	1024
+# define EMERGENCY_OBJ_COUNT	64
+#endif
+
+#ifndef __GTHREADS
+# undef EMERGENCY_OBJ_COUNT
+# define EMERGENCY_OBJ_COUNT	4
+#endif
+
+#if INT_MAX == 32767 || EMERGENCY_OBJ_COUNT <= 32
+typedef unsigned int bitmask_type;
+#else
+typedef unsigned long bitmask_type;
+#endif
+
+
+typedef char one_buffer[EMERGENCY_OBJ_SIZE] __attribute__((aligned));
+static one_buffer emergency_buffer[EMERGENCY_OBJ_COUNT];
+static bitmask_type emergency_used;
+
+static __cxa_dependent_exception dependents_buffer[EMERGENCY_OBJ_COUNT];
+static bitmask_type dependents_used;
+
+namespace
+{
+  // A single mutex controlling emergency allocations.
+  __gnu_cxx::__mutex emergency_mutex;
+}
+
+extern "C" void *
+__cxxabiv1::__cxa_allocate_exception(std::size_t thrown_size) throw()
+{
+  void *ret;
+
+  thrown_size += sizeof (__cxa_refcounted_exception);
+  ret = malloc (thrown_size);
+
+  if (! ret)
+    {
+      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
+
+      bitmask_type used = emergency_used;
+      unsigned int which = 0;
+
+      if (thrown_size > EMERGENCY_OBJ_SIZE)
+	goto failed;
+      while (used & 1)
+	{
+	  used >>= 1;
+	  if (++which >= EMERGENCY_OBJ_COUNT)
+	    goto failed;
+	}
+
+      emergency_used |= (bitmask_type)1 << which;
+      ret = &emergency_buffer[which][0];
+
+    failed:;
+
+      if (!ret)
+	std::terminate ();
+    }
+
+  // We have an uncaught exception as soon as we allocate memory.  This
+  // yields uncaught_exception() true during the copy-constructor that
+  // initializes the exception object.  See Issue 475.
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  globals->uncaughtExceptions += 1;
+
+  memset (ret, 0, sizeof (__cxa_refcounted_exception));
+
+  return (void *)((char *)ret + sizeof (__cxa_refcounted_exception));
+}
+
+
+extern "C" void
+__cxxabiv1::__cxa_free_exception(void *vptr) throw()
+{
+  char *base = (char *) emergency_buffer;
+  char *ptr = (char *) vptr;
+  if (ptr >= base
+      && ptr < base + sizeof (emergency_buffer))
+    {
+      const unsigned int which
+	= (unsigned) (ptr - base) / EMERGENCY_OBJ_SIZE;
+
+      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
+      emergency_used &= ~((bitmask_type)1 << which);
+    }
+  else
+    free (ptr - sizeof (__cxa_refcounted_exception));
+}
+
+
+extern "C" __cxa_dependent_exception*
+__cxxabiv1::__cxa_allocate_dependent_exception() throw()
+{
+  __cxa_dependent_exception *ret;
+
+  ret = static_cast<__cxa_dependent_exception*>
+    (malloc (sizeof (__cxa_dependent_exception)));
+
+  if (!ret)
+    {
+      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
+
+      bitmask_type used = dependents_used;
+      unsigned int which = 0;
+
+      while (used & 1)
+	{
+	  used >>= 1;
+	  if (++which >= EMERGENCY_OBJ_COUNT)
+	    goto failed;
+	}
+
+      dependents_used |= (bitmask_type)1 << which;
+      ret = &dependents_buffer[which];
+
+    failed:;
+
+      if (!ret)
+	std::terminate ();
+    }
+
+  // We have an uncaught exception as soon as we allocate memory.  This
+  // yields uncaught_exception() true during the copy-constructor that
+  // initializes the exception object.  See Issue 475.
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  globals->uncaughtExceptions += 1;
+
+  memset (ret, 0, sizeof (__cxa_dependent_exception));
+
+  return ret;
+}
+
+
+extern "C" void
+__cxxabiv1::__cxa_free_dependent_exception
+  (__cxa_dependent_exception *vptr) throw()
+{
+  char *base = (char *) dependents_buffer;
+  char *ptr = (char *) vptr;
+  if (ptr >= base
+      && ptr < base + sizeof (dependents_buffer))
+    {
+      const unsigned int which
+	= (unsigned) (ptr - base) / sizeof (__cxa_dependent_exception);
+
+      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
+      dependents_used &= ~((bitmask_type)1 << which);
+    }
+  else
+    free (vptr);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_arm.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_arm.cc
new file mode 100644
index 000000000..f0acb705e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_arm.cc
@@ -0,0 +1,182 @@
+// -*- C++ -*- ARM specific Exception handling support routines.
+// Copyright (C) 2004, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cxxabi.h>
+#include "unwind-cxx.h"
+
+#ifdef __ARM_EABI_UNWINDER__
+
+using namespace __cxxabiv1;
+
+
+// Given the thrown type THROW_TYPE, pointer to a variable containing a
+// pointer to the exception object THROWN_PTR_P and a type CATCH_TYPE to
+// compare against, return whether or not there is a match and if so,
+// update *THROWN_PTR_P.
+
+extern "C" __cxa_type_match_result
+__cxa_type_match(_Unwind_Exception* ue_header,
+		 const std::type_info* catch_type,
+		 bool is_reference __attribute__((__unused__)),
+		 void** thrown_ptr_p)
+{
+  bool forced_unwind = __is_gxx_forced_unwind_class(ue_header->exception_class);
+  bool foreign_exception = !forced_unwind && !__is_gxx_exception_class(ue_header->exception_class);
+  bool dependent_exception =
+    __is_dependent_exception(ue_header->exception_class);
+  __cxa_exception* xh = __get_exception_header_from_ue(ue_header);
+  __cxa_dependent_exception *dx = __get_dependent_exception_from_ue(ue_header);
+  const std::type_info* throw_type;
+
+  if (forced_unwind)
+    throw_type = &typeid(abi::__forced_unwind);
+  else if (foreign_exception)
+    throw_type = &typeid(abi::__foreign_exception);
+  else if (dependent_exception)
+    throw_type = __get_exception_header_from_obj
+      (dx->primaryException)->exceptionType;
+  else
+    throw_type = xh->exceptionType;
+
+  void* thrown_ptr = *thrown_ptr_p;
+
+  // Pointer types need to adjust the actual pointer, not
+  // the pointer to pointer that is the exception object.
+  // This also has the effect of passing pointer types
+  // "by value" through the __cxa_begin_catch return value.
+  if (throw_type->__is_pointer_p())
+    thrown_ptr = *(void**) thrown_ptr;
+
+  if (catch_type->__do_catch(throw_type, &thrown_ptr, 1))
+    {
+      *thrown_ptr_p = thrown_ptr;
+
+      if (typeid(*catch_type) == typeid (typeid(void*)))
+	{
+	  const __pointer_type_info *catch_pointer_type =
+	    static_cast<const __pointer_type_info *> (catch_type);
+	  const __pointer_type_info *throw_pointer_type =
+	    static_cast<const __pointer_type_info *> (throw_type);
+
+	  if (typeid (*catch_pointer_type->__pointee) != typeid (void)
+	      && (*catch_pointer_type->__pointee != 
+		  *throw_pointer_type->__pointee))
+	    return ctm_succeeded_with_ptr_to_base;
+	}
+
+      return ctm_succeeded;
+    }
+
+  return ctm_failed;
+}
+
+// ABI defined routine called at the start of a cleanup handler.
+extern "C" bool
+__cxa_begin_cleanup(_Unwind_Exception* ue_header)
+{
+  __cxa_eh_globals *globals = __cxa_get_globals();
+  __cxa_exception *header = __get_exception_header_from_ue(ue_header);
+  bool native = __is_gxx_exception_class(header->unwindHeader.exception_class);
+
+
+  if (native)
+    {
+      header->propagationCount++;
+      // Add it to the chain if this is the first time we've seen this
+      // exception.
+      if (header->propagationCount == 1)
+	{
+	  header->nextPropagatingException = globals->propagatingExceptions;
+	  globals->propagatingExceptions = header;
+	}
+    }
+  else
+    {
+      // Remember the exception object, so end_cleanup can return it.
+      // These cannot be stacked, so we must abort if we already have
+      // a propagating exception.
+      if (globals->propagatingExceptions)
+	std::terminate ();
+      globals->propagatingExceptions = header;
+    }
+
+  return true;
+}
+
+// Do the work for __cxa_end_cleanup.  Returns the currently propagating
+// exception object.
+extern "C" _Unwind_Exception *
+__gnu_end_cleanup(void)
+{
+  __cxa_exception *header;
+  __cxa_eh_globals *globals = __cxa_get_globals();
+
+  header = globals->propagatingExceptions;
+
+  // Check something hasn't gone horribly wrong.
+  if (!header)
+    std::terminate();
+
+  if (__is_gxx_exception_class(header->unwindHeader.exception_class))
+    {
+      header->propagationCount--;
+      if (header->propagationCount == 0)
+	{
+	  // Remove exception from chain.
+	  globals->propagatingExceptions = header->nextPropagatingException;
+	  header->nextPropagatingException = NULL;
+	}
+    }
+  else
+    globals->propagatingExceptions = NULL;
+
+  return &header->unwindHeader;
+}
+
+// Assembly wrapper to call __gnu_end_cleanup without clobbering r1-r3.
+// Also push r4 to preserve stack alignment.
+#ifdef __thumb__
+asm ("  .pushsection .text.__cxa_end_cleanup\n"
+"	.global __cxa_end_cleanup\n"
+"	.type __cxa_end_cleanup, \"function\"\n"
+"	.thumb_func\n"
+"__cxa_end_cleanup:\n"
+"	push\t{r1, r2, r3, r4}\n"
+"	bl\t__gnu_end_cleanup\n"
+"	pop\t{r1, r2, r3, r4}\n"
+"	bl\t_Unwind_Resume @ Never returns\n"
+"	.popsection\n");
+#else
+asm ("  .pushsection .text.__cxa_end_cleanup\n"
+"	.global __cxa_end_cleanup\n"
+"	.type __cxa_end_cleanup, \"function\"\n"
+"__cxa_end_cleanup:\n"
+"	stmfd\tsp!, {r1, r2, r3, r4}\n"
+"	bl\t__gnu_end_cleanup\n"
+"	ldmfd\tsp!, {r1, r2, r3, r4}\n"
+"	bl\t_Unwind_Resume @ Never returns\n"
+"	.popsection\n");
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_aux_runtime.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_aux_runtime.cc
new file mode 100644
index 000000000..c6abe3546
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_aux_runtime.cc
@@ -0,0 +1,51 @@
+// -*- C++ -*- Common throw conditions.
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2009, 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "typeinfo"
+#include "exception"
+#include <cstdlib>
+#include "unwind-cxx.h"
+#include <bits/exception_defines.h>
+
+extern "C" void
+__cxxabiv1::__cxa_bad_cast ()
+{
+#ifdef __EXCEPTIONS  
+  throw std::bad_cast();
+#else
+  std::abort();
+#endif
+}
+
+extern "C" void
+__cxxabiv1::__cxa_bad_typeid ()
+{
+#ifdef __EXCEPTIONS  
+  throw std::bad_typeid();
+#else
+  std::abort();
+#endif
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_call.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_call.cc
new file mode 100644
index 000000000..f519f35f0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_call.cc
@@ -0,0 +1,158 @@
+// -*- C++ -*- Helpers for calling unextected and terminate
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+// 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <bits/exception_defines.h>
+#include "unwind-cxx.h"
+
+using namespace __cxxabiv1;
+
+#include "unwind-pe.h"
+
+
+// Helper routine for when the exception handling code needs to call
+// terminate.
+
+extern "C" void
+__cxa_call_terminate(_Unwind_Exception* ue_header) throw ()
+{
+
+  if (ue_header)
+    {
+      // terminate is classed as a catch handler.
+      __cxa_begin_catch(ue_header);
+
+      // Call the terminate handler that was in effect when we threw this
+      // exception.  */
+      if (__is_gxx_exception_class(ue_header->exception_class))
+	{
+	  __cxa_exception* xh;
+
+	  xh = __get_exception_header_from_ue(ue_header);
+	  __terminate(xh->terminateHandler);
+	}
+    }
+  /* Call the global routine if we don't have anything better.  */
+  std::terminate();
+}
+
+
+#ifdef __ARM_EABI_UNWINDER__
+// The ARM EABI __cxa_call_unexpected has the same semantics as the generic
+// routine, but the exception specification has a different format.
+extern "C" void
+__cxa_call_unexpected(void* exc_obj_in)
+{
+  _Unwind_Exception* exc_obj
+    = reinterpret_cast<_Unwind_Exception*>(exc_obj_in);
+
+  int rtti_count = 0;
+  _Unwind_Word rtti_stride = 0;
+  _Unwind_Word* rtti_list = NULL;
+  bool foreign_exception;
+  std::unexpected_handler unexpectedHandler = NULL;
+  std::terminate_handler terminateHandler = NULL;
+  __cxa_exception* xh;
+  if (__is_gxx_exception_class(exc_obj->exception_class))
+    {
+      // Save data from the EO, which may be clobbered by _cxa_begin_catch.
+      xh = __get_exception_header_from_ue(exc_obj);
+      unexpectedHandler = xh->unexpectedHandler;
+      terminateHandler = xh->terminateHandler;
+      rtti_count = exc_obj->barrier_cache.bitpattern[1];
+
+      rtti_stride = exc_obj->barrier_cache.bitpattern[3];
+      rtti_list = (_Unwind_Word*) exc_obj->barrier_cache.bitpattern[4];
+      foreign_exception = false;
+    }
+  else
+    foreign_exception = true;
+
+  /* This must be called after extracting data from the EO, but before
+     calling unexpected().   */
+  __cxa_begin_catch(exc_obj);
+
+  // This function is a handler for our exception argument.  If we exit
+  // by throwing a different exception, we'll need the original cleaned up.
+  struct end_catch_protect
+  {
+    end_catch_protect() { }
+    ~end_catch_protect() { __cxa_end_catch(); }
+  } end_catch_protect_obj;
+
+
+  __try 
+    { 
+      if (foreign_exception)
+	std::unexpected();
+      else
+	__unexpected(unexpectedHandler);
+    }
+  __catch(...) 
+    {
+      /* See if the new exception matches the rtti list.  */
+      if (foreign_exception)
+	std::terminate();
+
+      // Get the exception thrown from unexpected.
+
+      __cxa_eh_globals* globals = __cxa_get_globals_fast();
+      __cxa_exception* new_xh = globals->caughtExceptions;
+      void* new_ptr = __get_object_from_ambiguous_exception (new_xh);
+      const std::type_info* catch_type;
+      int n;
+      bool bad_exception_allowed = false;
+      const std::type_info& bad_exc = typeid(std::bad_exception);
+
+      // Check the new exception against the rtti list
+      for (n = 0; n < rtti_count; n++)
+	{
+	  _Unwind_Word offset;
+
+	  offset = (_Unwind_Word) &rtti_list[n * (rtti_stride >> 2)];
+	  offset = _Unwind_decode_target2(offset);
+	  catch_type = (const std::type_info*) (offset);
+
+	  if (__cxa_type_match(&new_xh->unwindHeader, catch_type, false,
+			       &new_ptr) != ctm_failed)
+	    __throw_exception_again;
+
+	  if (catch_type->__do_catch(&bad_exc, 0, 1))
+	    bad_exception_allowed = true;
+	}
+
+      // If the exception spec allows std::bad_exception, throw that.
+#ifdef __EXCEPTIONS  
+      if (bad_exception_allowed)
+	throw std::bad_exception();
+#endif   
+
+      // Otherwise, die.
+      __terminate(terminateHandler);
+    }
+}
+#endif // __ARM_EABI_UNWINDER__
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_catch.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_catch.cc
new file mode 100644
index 000000000..567222aa5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_catch.cc
@@ -0,0 +1,138 @@
+// -*- C++ -*- Exception handling routines for catching.
+// Copyright (C) 2001, 2003, 2004, 2009 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cstdlib>
+#include "unwind-cxx.h"
+
+using namespace __cxxabiv1;
+
+extern "C" void *
+__cxxabiv1::__cxa_get_exception_ptr(void *exc_obj_in) throw()
+{
+  _Unwind_Exception *exceptionObject
+    = reinterpret_cast <_Unwind_Exception *>(exc_obj_in);
+
+  return __gxx_caught_object(exceptionObject);
+}
+
+extern "C" void *
+__cxxabiv1::__cxa_begin_catch (void *exc_obj_in) throw()
+{
+  _Unwind_Exception *exceptionObject
+    = reinterpret_cast <_Unwind_Exception *>(exc_obj_in);
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  __cxa_exception *prev = globals->caughtExceptions;
+  __cxa_exception *header = __get_exception_header_from_ue (exceptionObject);
+  void* objectp;
+
+  // Foreign exceptions can't be stacked here.  If the exception stack is
+  // empty, then fine.  Otherwise we really have no choice but to terminate.
+  // Note that this use of "header" is a lie.  It's fine so long as we only
+  // examine header->unwindHeader though.
+  if (!__is_gxx_exception_class(header->unwindHeader.exception_class))
+    {
+      if (prev != 0)
+	std::terminate ();
+
+      // Remember for end_catch and rethrow.
+      globals->caughtExceptions = header;
+
+      // ??? No sensible value to return; we don't know what the 
+      // object is, much less where it is in relation to the header.
+      return 0;
+    }
+
+  int count = header->handlerCount;
+  // Count is less than zero if this exception was rethrown from an
+  // immediately enclosing region.
+  if (count < 0)
+    count = -count + 1;
+  else
+    count += 1;
+  header->handlerCount = count;
+  globals->uncaughtExceptions -= 1;
+
+  if (header != prev)
+    {
+      header->nextException = prev;
+      globals->caughtExceptions = header;
+    }
+
+  objectp = __gxx_caught_object(exceptionObject);
+#ifdef __ARM_EABI_UNWINDER__
+  _Unwind_Complete(exceptionObject);
+#endif
+  return objectp;
+}
+
+
+extern "C" void
+__cxxabiv1::__cxa_end_catch ()
+{
+  __cxa_eh_globals *globals = __cxa_get_globals_fast ();
+  __cxa_exception *header = globals->caughtExceptions;
+
+  // A rethrow of a foreign exception will be removed from the
+  // the exception stack immediately by __cxa_rethrow.
+  if (!header)
+    return;
+
+  // A foreign exception couldn't have been stacked (see above),
+  // so by definition processing must be complete.
+  if (!__is_gxx_exception_class(header->unwindHeader.exception_class))
+    {
+      globals->caughtExceptions = 0;
+      _Unwind_DeleteException (&header->unwindHeader);
+      return;
+    }
+
+  int count = header->handlerCount;
+  if (count < 0)
+    {
+      // This exception was rethrown.  Decrement the (inverted) catch
+      // count and remove it from the chain when it reaches zero.
+      if (++count == 0)
+	globals->caughtExceptions = header->nextException;
+    }
+  else if (--count == 0)
+    {
+      // Handling for this exception is complete.  Destroy the object.
+      globals->caughtExceptions = header->nextException;
+      _Unwind_DeleteException (&header->unwindHeader);
+      return;
+    }
+  else if (count < 0)
+    // A bug in the exception handling library or compiler.
+    std::terminate ();
+
+  header->handlerCount = count;
+}
+
+
+bool
+std::uncaught_exception() throw()
+{
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  return globals->uncaughtExceptions != 0;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_exception.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_exception.cc
new file mode 100644
index 000000000..2f752b310
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_exception.cc
@@ -0,0 +1,52 @@
+// -*- C++ -*- std::exception implementation.
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+// 2003, 2004, 2005, 2006, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "typeinfo"
+#include "exception"
+#include <cxxabi.h>
+
+std::exception::~exception() throw() { }
+
+std::bad_exception::~bad_exception() throw() { }
+
+abi::__forced_unwind::~__forced_unwind() throw() { }
+
+abi::__foreign_exception::~__foreign_exception() throw() { }
+
+const char* 
+std::exception::what() const throw()
+{
+  // NB: Another elegant option would be returning typeid(*this).name()
+  // and not overriding what() in bad_exception, bad_alloc, etc.  In
+  // that case, however, mangled names would be returned, PR 14493.
+  return "std::exception";
+}
+
+const char* 
+std::bad_exception::what() const throw()
+{
+  return "std::bad_exception";
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_globals.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_globals.cc
new file mode 100644
index 000000000..63f46a99e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_globals.cc
@@ -0,0 +1,160 @@
+// -*- C++ -*- Manage the thread-local exception globals.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <exception>
+#include <cstdlib>
+#include "cxxabi.h"
+#include "unwind-cxx.h"
+#include "bits/gthr.h"
+
+#if _GLIBCXX_HOSTED
+using std::free;
+using std::malloc;
+#else
+// In a freestanding environment, these functions may not be
+// available -- but for now, we assume that they are.
+extern "C" void *malloc (std::size_t);
+extern "C" void free(void *);
+#endif
+
+using namespace __cxxabiv1;
+
+#if _GLIBCXX_HAVE_TLS
+
+namespace
+{
+  abi::__cxa_eh_globals*
+  get_global() throw()
+  {
+    static __thread abi::__cxa_eh_globals global;
+    return &global;
+  }
+} // anonymous namespace
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals_fast() throw()
+{ return get_global(); }
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals() throw()
+{ return get_global(); }
+
+
+#else
+
+// Single-threaded fallback buffer.
+static __cxa_eh_globals eh_globals;
+
+#if __GTHREADS
+
+static void
+eh_globals_dtor(void* ptr)
+{
+  if (ptr)
+    {
+      __cxa_eh_globals* g = reinterpret_cast<__cxa_eh_globals*>(ptr);
+      __cxa_exception* exn = g->caughtExceptions;
+      __cxa_exception* next;
+      while (exn)
+	{
+	  next = exn->nextException;
+	  _Unwind_DeleteException(&exn->unwindHeader);
+	  exn = next;
+	}
+      free(ptr);
+    }
+}
+
+struct __eh_globals_init
+{
+  __gthread_key_t  	_M_key;
+  bool 			_M_init;
+
+  __eh_globals_init() : _M_init(false)
+  { 
+    if (__gthread_active_p())
+      _M_init = __gthread_key_create(&_M_key, eh_globals_dtor) == 0; 
+  }
+
+  ~__eh_globals_init()
+  {
+    if (_M_init)
+      __gthread_key_delete(_M_key);
+    _M_init = false;
+  }
+};
+
+static __eh_globals_init init;
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals_fast() throw()
+{
+  __cxa_eh_globals* g;
+  if (init._M_init)
+    g = static_cast<__cxa_eh_globals*>(__gthread_getspecific(init._M_key));
+  else
+    g = &eh_globals;
+  return g;
+}
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals() throw()
+{
+  __cxa_eh_globals* g;
+  if (init._M_init)
+    {
+      g = static_cast<__cxa_eh_globals*>(__gthread_getspecific(init._M_key));
+      if (!g)
+	{
+	  void* v = malloc(sizeof(__cxa_eh_globals));
+	  if (v == 0 || __gthread_setspecific(init._M_key, v) != 0)
+	    std::terminate();
+	  g = static_cast<__cxa_eh_globals*>(v);
+	  g->caughtExceptions = 0;
+	  g->uncaughtExceptions = 0;
+#ifdef __ARM_EABI_UNWINDER__
+	  g->propagatingExceptions = 0;
+#endif
+	}
+    }
+  else
+    g = &eh_globals;
+  return g;
+}
+
+#else
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals_fast() throw()
+{ return &eh_globals; }
+
+extern "C" __cxa_eh_globals*
+__cxxabiv1::__cxa_get_globals() throw()
+{ return &eh_globals; }
+
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_personality.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_personality.cc
new file mode 100644
index 000000000..19c204473
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_personality.cc
@@ -0,0 +1,789 @@
+// -*- C++ -*- The GNU C++ exception personality routine.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+// 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <bits/exception_defines.h>
+#include <cxxabi.h>
+#include "unwind-cxx.h"
+
+using namespace __cxxabiv1;
+
+#ifdef __ARM_EABI_UNWINDER__
+#define NO_SIZE_OF_ENCODED_VALUE
+#endif
+
+#include "unwind-pe.h"
+
+
+struct lsda_header_info
+{
+  _Unwind_Ptr Start;
+  _Unwind_Ptr LPStart;
+  _Unwind_Ptr ttype_base;
+  const unsigned char *TType;
+  const unsigned char *action_table;
+  unsigned char ttype_encoding;
+  unsigned char call_site_encoding;
+};
+
+static const unsigned char *
+parse_lsda_header (_Unwind_Context *context, const unsigned char *p,
+		   lsda_header_info *info)
+{
+  _uleb128_t tmp;
+  unsigned char lpstart_encoding;
+
+  info->Start = (context ? _Unwind_GetRegionStart (context) : 0);
+
+  // Find @LPStart, the base to which landing pad offsets are relative.
+  lpstart_encoding = *p++;
+  if (lpstart_encoding != DW_EH_PE_omit)
+    p = read_encoded_value (context, lpstart_encoding, p, &info->LPStart);
+  else
+    info->LPStart = info->Start;
+
+  // Find @TType, the base of the handler and exception spec type data.
+  info->ttype_encoding = *p++;
+  if (info->ttype_encoding != DW_EH_PE_omit)
+    {
+      p = read_uleb128 (p, &tmp);
+      info->TType = p + tmp;
+    }
+  else
+    info->TType = 0;
+
+  // The encoding and length of the call-site table; the action table
+  // immediately follows.
+  info->call_site_encoding = *p++;
+  p = read_uleb128 (p, &tmp);
+  info->action_table = p + tmp;
+
+  return p;
+}
+
+#ifdef __ARM_EABI_UNWINDER__
+
+// Return an element from a type table.
+
+static const std::type_info*
+get_ttype_entry(lsda_header_info* info, _uleb128_t i)
+{
+  _Unwind_Ptr ptr;
+
+  ptr = (_Unwind_Ptr) (info->TType - (i * 4));
+  ptr = _Unwind_decode_target2(ptr);
+  
+  return reinterpret_cast<const std::type_info *>(ptr);
+}
+
+// The ABI provides a routine for matching exception object types.
+typedef _Unwind_Control_Block _throw_typet;
+#define get_adjusted_ptr(catch_type, throw_type, thrown_ptr_p) \
+  (__cxa_type_match (throw_type, catch_type, false, thrown_ptr_p) \
+   != ctm_failed)
+
+// Return true if THROW_TYPE matches one if the filter types.
+
+static bool
+check_exception_spec(lsda_header_info* info, _throw_typet* throw_type,
+		     void* thrown_ptr, _sleb128_t filter_value)
+{
+  const _uleb128_t* e = ((const _uleb128_t*) info->TType)
+			  - filter_value - 1;
+
+  while (1)
+    {
+      const std::type_info* catch_type;
+      _uleb128_t tmp;
+
+      tmp = *e;
+      
+      // Zero signals the end of the list.  If we've not found
+      // a match by now, then we've failed the specification.
+      if (tmp == 0)
+        return false;
+
+      tmp = _Unwind_decode_target2((_Unwind_Word) e);
+
+      // Match a ttype entry.
+      catch_type = reinterpret_cast<const std::type_info*>(tmp);
+
+      // ??? There is currently no way to ask the RTTI code about the
+      // relationship between two types without reference to a specific
+      // object.  There should be; then we wouldn't need to mess with
+      // thrown_ptr here.
+      if (get_adjusted_ptr(catch_type, throw_type, &thrown_ptr))
+	return true;
+
+      // Advance to the next entry.
+      e++;
+    }
+}
+
+
+// Save stage1 handler information in the exception object
+
+static inline void
+save_caught_exception(struct _Unwind_Exception* ue_header,
+		      struct _Unwind_Context* context,
+		      void* thrown_ptr,
+		      int handler_switch_value,
+		      const unsigned char* language_specific_data,
+		      _Unwind_Ptr landing_pad,
+		      const unsigned char* action_record
+			__attribute__((__unused__)))
+{
+    ue_header->barrier_cache.sp = _Unwind_GetGR(context, 13);
+    ue_header->barrier_cache.bitpattern[0] = (_uw) thrown_ptr;
+    ue_header->barrier_cache.bitpattern[1]
+      = (_uw) handler_switch_value;
+    ue_header->barrier_cache.bitpattern[2]
+      = (_uw) language_specific_data;
+    ue_header->barrier_cache.bitpattern[3] = (_uw) landing_pad;
+}
+
+
+// Restore the catch handler data saved during phase1.
+
+static inline void
+restore_caught_exception(struct _Unwind_Exception* ue_header,
+			 int& handler_switch_value,
+			 const unsigned char*& language_specific_data,
+			 _Unwind_Ptr& landing_pad)
+{
+  handler_switch_value = (int) ue_header->barrier_cache.bitpattern[1];
+  language_specific_data =
+    (const unsigned char*) ue_header->barrier_cache.bitpattern[2];
+  landing_pad = (_Unwind_Ptr) ue_header->barrier_cache.bitpattern[3];
+}
+
+#define CONTINUE_UNWINDING \
+  do								\
+    {								\
+      if (__gnu_unwind_frame(ue_header, context) != _URC_OK)	\
+	return _URC_FAILURE;					\
+      return _URC_CONTINUE_UNWIND;				\
+    }								\
+  while (0)
+
+// Return true if the filter spec is empty, ie throw().
+
+static bool
+empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
+{
+  const _Unwind_Word* e = ((const _Unwind_Word*) info->TType)
+			  - filter_value - 1;
+
+  return *e == 0;
+}
+
+#else
+typedef const std::type_info _throw_typet;
+
+
+// Return an element from a type table.
+
+static const std::type_info *
+get_ttype_entry (lsda_header_info *info, _uleb128_t i)
+{
+  _Unwind_Ptr ptr;
+
+  i *= size_of_encoded_value (info->ttype_encoding);
+  read_encoded_value_with_base (info->ttype_encoding, info->ttype_base,
+				info->TType - i, &ptr);
+
+  return reinterpret_cast<const std::type_info *>(ptr);
+}
+
+// Given the thrown type THROW_TYPE, pointer to a variable containing a
+// pointer to the exception object THROWN_PTR_P and a type CATCH_TYPE to
+// compare against, return whether or not there is a match and if so,
+// update *THROWN_PTR_P.
+
+static bool
+get_adjusted_ptr (const std::type_info *catch_type,
+		  const std::type_info *throw_type,
+		  void **thrown_ptr_p)
+{
+  void *thrown_ptr = *thrown_ptr_p;
+
+  // Pointer types need to adjust the actual pointer, not
+  // the pointer to pointer that is the exception object.
+  // This also has the effect of passing pointer types
+  // "by value" through the __cxa_begin_catch return value.
+  if (throw_type->__is_pointer_p ())
+    thrown_ptr = *(void **) thrown_ptr;
+
+  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1))
+    {
+      *thrown_ptr_p = thrown_ptr;
+      return true;
+    }
+
+  return false;
+}
+
+// Return true if THROW_TYPE matches one if the filter types.
+
+static bool
+check_exception_spec(lsda_header_info* info, _throw_typet* throw_type,
+		      void* thrown_ptr, _sleb128_t filter_value)
+{
+  const unsigned char *e = info->TType - filter_value - 1;
+
+  while (1)
+    {
+      const std::type_info *catch_type;
+      _uleb128_t tmp;
+
+      e = read_uleb128 (e, &tmp);
+
+      // Zero signals the end of the list.  If we've not found
+      // a match by now, then we've failed the specification.
+      if (tmp == 0)
+        return false;
+
+      // Match a ttype entry.
+      catch_type = get_ttype_entry (info, tmp);
+
+      // ??? There is currently no way to ask the RTTI code about the
+      // relationship between two types without reference to a specific
+      // object.  There should be; then we wouldn't need to mess with
+      // thrown_ptr here.
+      if (get_adjusted_ptr (catch_type, throw_type, &thrown_ptr))
+	return true;
+    }
+}
+
+
+// Save stage1 handler information in the exception object
+
+static inline void
+save_caught_exception(struct _Unwind_Exception* ue_header,
+		      struct _Unwind_Context* context
+			__attribute__((__unused__)),
+		      void* thrown_ptr,
+		      int handler_switch_value,
+		      const unsigned char* language_specific_data,
+		      _Unwind_Ptr landing_pad __attribute__((__unused__)),
+		      const unsigned char* action_record)
+{
+  __cxa_exception* xh = __get_exception_header_from_ue(ue_header);
+
+  xh->handlerSwitchValue = handler_switch_value;
+  xh->actionRecord = action_record;
+  xh->languageSpecificData = language_specific_data;
+  xh->adjustedPtr = thrown_ptr;
+
+  // ??? Completely unknown what this field is supposed to be for.
+  // ??? Need to cache TType encoding base for call_unexpected.
+  xh->catchTemp = landing_pad;
+}
+
+
+// Restore the catch handler information saved during phase1.
+
+static inline void
+restore_caught_exception(struct _Unwind_Exception* ue_header,
+			 int& handler_switch_value,
+			 const unsigned char*& language_specific_data,
+			 _Unwind_Ptr& landing_pad)
+{
+  __cxa_exception* xh = __get_exception_header_from_ue(ue_header);
+  handler_switch_value = xh->handlerSwitchValue;
+  language_specific_data = xh->languageSpecificData;
+  landing_pad = (_Unwind_Ptr) xh->catchTemp;
+}
+
+#define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
+
+// Return true if the filter spec is empty, ie throw().
+
+static bool
+empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
+{
+  const unsigned char *e = info->TType - filter_value - 1;
+  _uleb128_t tmp;
+
+  e = read_uleb128 (e, &tmp);
+  return tmp == 0;
+}
+
+#endif // !__ARM_EABI_UNWINDER__
+
+namespace __cxxabiv1
+{
+
+// Using a different personality function name causes link failures
+// when trying to mix code using different exception handling models.
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+#define PERSONALITY_FUNCTION	__gxx_personality_sj0
+#define __builtin_eh_return_data_regno(x) x
+#else
+#define PERSONALITY_FUNCTION	__gxx_personality_v0
+#endif
+
+extern "C" _Unwind_Reason_Code
+#ifdef __ARM_EABI_UNWINDER__
+PERSONALITY_FUNCTION (_Unwind_State state,
+		      struct _Unwind_Exception* ue_header,
+		      struct _Unwind_Context* context)
+#else
+PERSONALITY_FUNCTION (int version,
+		      _Unwind_Action actions,
+		      _Unwind_Exception_Class exception_class,
+		      struct _Unwind_Exception *ue_header,
+		      struct _Unwind_Context *context)
+#endif
+{
+  enum found_handler_type
+  {
+    found_nothing,
+    found_terminate,
+    found_cleanup,
+    found_handler
+  } found_type;
+
+  lsda_header_info info;
+  const unsigned char *language_specific_data;
+  const unsigned char *action_record;
+  const unsigned char *p;
+  _Unwind_Ptr landing_pad, ip;
+  int handler_switch_value;
+  void* thrown_ptr = 0;
+  bool foreign_exception;
+  int ip_before_insn = 0;
+
+#ifdef __ARM_EABI_UNWINDER__
+  _Unwind_Action actions;
+
+  switch (state & _US_ACTION_MASK)
+    {
+    case _US_VIRTUAL_UNWIND_FRAME:
+      actions = _UA_SEARCH_PHASE;
+      break;
+
+    case _US_UNWIND_FRAME_STARTING:
+      actions = _UA_CLEANUP_PHASE;
+      if (!(state & _US_FORCE_UNWIND)
+	  && ue_header->barrier_cache.sp == _Unwind_GetGR(context, 13))
+	actions |= _UA_HANDLER_FRAME;
+      break;
+
+    case _US_UNWIND_FRAME_RESUME:
+      CONTINUE_UNWINDING;
+      break;
+
+    default:
+      std::abort();
+    }
+  actions |= state & _US_FORCE_UNWIND;
+
+  // We don't know which runtime we're working with, so can't check this.
+  // However the ABI routines hide this from us, and we don't actually need
+  // to know.
+  foreign_exception = false;
+
+  // The dwarf unwinder assumes the context structure holds things like the
+  // function and LSDA pointers.  The ARM implementation caches these in
+  // the exception header (UCB).  To avoid rewriting everything we make the
+  // virtual IP register point at the UCB.
+  ip = (_Unwind_Ptr) ue_header;
+  _Unwind_SetGR(context, 12, ip);
+#else
+  __cxa_exception* xh = __get_exception_header_from_ue(ue_header);
+
+  // Interface version check.
+  if (version != 1)
+    return _URC_FATAL_PHASE1_ERROR;
+  foreign_exception = !__is_gxx_exception_class(exception_class);
+#endif
+
+  // Shortcut for phase 2 found handler for domestic exception.
+  if (actions == (_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME)
+      && !foreign_exception)
+    {
+      restore_caught_exception(ue_header, handler_switch_value,
+			       language_specific_data, landing_pad);
+      found_type = (landing_pad == 0 ? found_terminate : found_handler);
+      goto install_context;
+    }
+
+  language_specific_data = (const unsigned char *)
+    _Unwind_GetLanguageSpecificData (context);
+
+  // If no LSDA, then there are no handlers or cleanups.
+  if (! language_specific_data)
+    CONTINUE_UNWINDING;
+
+  // Parse the LSDA header.
+  p = parse_lsda_header (context, language_specific_data, &info);
+  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
+#ifdef _GLIBCXX_HAVE_GETIPINFO
+  ip = _Unwind_GetIPInfo (context, &ip_before_insn);
+#else
+  ip = _Unwind_GetIP (context);
+#endif
+  if (! ip_before_insn)
+    --ip;
+  landing_pad = 0;
+  action_record = 0;
+  handler_switch_value = 0;
+
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+  // The given "IP" is an index into the call-site table, with two
+  // exceptions -- -1 means no-action, and 0 means terminate.  But
+  // since we're using uleb128 values, we've not got random access
+  // to the array.
+  if ((int) ip < 0)
+    return _URC_CONTINUE_UNWIND;
+  else if (ip == 0)
+    {
+      // Fall through to set found_terminate.
+    }
+  else
+    {
+      _uleb128_t cs_lp, cs_action;
+      do
+	{
+	  p = read_uleb128 (p, &cs_lp);
+	  p = read_uleb128 (p, &cs_action);
+	}
+      while (--ip);
+
+      // Can never have null landing pad for sjlj -- that would have
+      // been indicated by a -1 call site index.
+      landing_pad = cs_lp + 1;
+      if (cs_action)
+	action_record = info.action_table + cs_action - 1;
+      goto found_something;
+    }
+#else
+  // Search the call-site table for the action associated with this IP.
+  while (p < info.action_table)
+    {
+      _Unwind_Ptr cs_start, cs_len, cs_lp;
+      _uleb128_t cs_action;
+
+      // Note that all call-site encodings are "absolute" displacements.
+      p = read_encoded_value (0, info.call_site_encoding, p, &cs_start);
+      p = read_encoded_value (0, info.call_site_encoding, p, &cs_len);
+      p = read_encoded_value (0, info.call_site_encoding, p, &cs_lp);
+      p = read_uleb128 (p, &cs_action);
+
+      // The table is sorted, so if we've passed the ip, stop.
+      if (ip < info.Start + cs_start)
+	p = info.action_table;
+      else if (ip < info.Start + cs_start + cs_len)
+	{
+	  if (cs_lp)
+	    landing_pad = info.LPStart + cs_lp;
+	  if (cs_action)
+	    action_record = info.action_table + cs_action - 1;
+	  goto found_something;
+	}
+    }
+#endif // _GLIBCXX_SJLJ_EXCEPTIONS
+
+  // If ip is not present in the table, call terminate.  This is for
+  // a destructor inside a cleanup, or a library routine the compiler
+  // was not expecting to throw.
+  found_type = found_terminate;
+  goto do_something;
+
+ found_something:
+  if (landing_pad == 0)
+    {
+      // If ip is present, and has a null landing pad, there are
+      // no cleanups or handlers to be run.
+      found_type = found_nothing;
+    }
+  else if (action_record == 0)
+    {
+      // If ip is present, has a non-null landing pad, and a null
+      // action table offset, then there are only cleanups present.
+      // Cleanups use a zero switch value, as set above.
+      found_type = found_cleanup;
+    }
+  else
+    {
+      // Otherwise we have a catch handler or exception specification.
+
+      _sleb128_t ar_filter, ar_disp;
+      const std::type_info* catch_type;
+      _throw_typet* throw_type;
+      bool saw_cleanup = false;
+      bool saw_handler = false;
+
+#ifdef __ARM_EABI_UNWINDER__
+      // ??? How does this work - more importantly, how does it interact with
+      // dependent exceptions?
+      throw_type = ue_header;
+      if (actions & _UA_FORCE_UNWIND)
+	{
+	  __GXX_INIT_FORCED_UNWIND_CLASS(ue_header->exception_class);
+	}
+      else if (!foreign_exception)
+	thrown_ptr = __get_object_from_ue (ue_header);
+#else
+#ifdef __GXX_RTTI
+      // During forced unwinding, match a magic exception type.
+      if (actions & _UA_FORCE_UNWIND)
+	{
+	  throw_type = &typeid(abi::__forced_unwind);
+	}
+      // With a foreign exception class, there's no exception type.
+      // ??? What to do about GNU Java and GNU Ada exceptions?
+      else if (foreign_exception)
+	{
+	  throw_type = &typeid(abi::__foreign_exception);
+	}
+      else
+#endif
+        {
+          thrown_ptr = __get_object_from_ue (ue_header);
+          throw_type = __get_exception_header_from_obj
+            (thrown_ptr)->exceptionType;
+        }
+#endif
+
+      while (1)
+	{
+	  p = action_record;
+	  p = read_sleb128 (p, &ar_filter);
+	  read_sleb128 (p, &ar_disp);
+
+	  if (ar_filter == 0)
+	    {
+	      // Zero filter values are cleanups.
+	      saw_cleanup = true;
+	    }
+	  else if (ar_filter > 0)
+	    {
+	      // Positive filter values are handlers.
+	      catch_type = get_ttype_entry (&info, ar_filter);
+
+	      // Null catch type is a catch-all handler; we can catch foreign
+	      // exceptions with this.  Otherwise we must match types.
+	      if (! catch_type
+		  || (throw_type
+		      && get_adjusted_ptr (catch_type, throw_type,
+					   &thrown_ptr)))
+		{
+		  saw_handler = true;
+		  break;
+		}
+	    }
+	  else
+	    {
+	      // Negative filter values are exception specifications.
+	      // ??? How do foreign exceptions fit in?  As far as I can
+	      // see we can't match because there's no __cxa_exception
+	      // object to stuff bits in for __cxa_call_unexpected to use.
+	      // Allow them iff the exception spec is non-empty.  I.e.
+	      // a throw() specification results in __unexpected.
+	      if ((throw_type
+		   && !(actions & _UA_FORCE_UNWIND)
+		   && !foreign_exception)
+		  ? ! check_exception_spec (&info, throw_type, thrown_ptr,
+					    ar_filter)
+		  : empty_exception_spec (&info, ar_filter))
+		{
+		  saw_handler = true;
+		  break;
+		}
+	    }
+
+	  if (ar_disp == 0)
+	    break;
+	  action_record = p + ar_disp;
+	}
+
+      if (saw_handler)
+	{
+	  handler_switch_value = ar_filter;
+	  found_type = found_handler;
+	}
+      else
+	found_type = (saw_cleanup ? found_cleanup : found_nothing);
+    }
+
+ do_something:
+   if (found_type == found_nothing)
+     CONTINUE_UNWINDING;
+
+  if (actions & _UA_SEARCH_PHASE)
+    {
+      if (found_type == found_cleanup)
+	CONTINUE_UNWINDING;
+
+      // For domestic exceptions, we cache data from phase 1 for phase 2.
+      if (!foreign_exception)
+        {
+	  save_caught_exception(ue_header, context, thrown_ptr,
+				handler_switch_value, language_specific_data,
+				landing_pad, action_record);
+	}
+      return _URC_HANDLER_FOUND;
+    }
+
+ install_context:
+  
+  // We can't use any of the cxa routines with foreign exceptions,
+  // because they all expect ue_header to be a struct __cxa_exception.
+  // So in that case, call terminate or unexpected directly.
+  if ((actions & _UA_FORCE_UNWIND)
+      || foreign_exception)
+    {
+      if (found_type == found_terminate)
+	std::terminate ();
+      else if (handler_switch_value < 0)
+	{
+	  __try 
+	    { std::unexpected (); } 
+	  __catch(...) 
+	    { std::terminate (); }
+	}
+    }
+  else
+    {
+      if (found_type == found_terminate)
+	__cxa_call_terminate(ue_header);
+
+      // Cache the TType base value for __cxa_call_unexpected, as we won't
+      // have an _Unwind_Context then.
+      if (handler_switch_value < 0)
+	{
+	  parse_lsda_header (context, language_specific_data, &info);
+
+#ifdef __ARM_EABI_UNWINDER__
+	  const _Unwind_Word* e;
+	  _Unwind_Word n;
+	  
+	  e = ((const _Unwind_Word*) info.TType) - handler_switch_value - 1;
+	  // Count the number of rtti objects.
+	  n = 0;
+	  while (e[n] != 0)
+	    n++;
+
+	  // Count.
+	  ue_header->barrier_cache.bitpattern[1] = n;
+	  // Base (obsolete)
+	  ue_header->barrier_cache.bitpattern[2] = 0;
+	  // Stride.
+	  ue_header->barrier_cache.bitpattern[3] = 4;
+	  // List head.
+	  ue_header->barrier_cache.bitpattern[4] = (_Unwind_Word) e;
+#else
+	  xh->catchTemp = base_of_encoded_value (info.ttype_encoding, context);
+#endif
+	}
+    }
+
+  /* For targets with pointers smaller than the word size, we must extend the
+     pointer, and this extension is target dependent.  */
+  _Unwind_SetGR (context, __builtin_eh_return_data_regno (0),
+		 __builtin_extend_pointer (ue_header));
+  _Unwind_SetGR (context, __builtin_eh_return_data_regno (1),
+		 handler_switch_value);
+  _Unwind_SetIP (context, landing_pad);
+#ifdef __ARM_EABI_UNWINDER__
+  if (found_type == found_cleanup)
+    __cxa_begin_cleanup(ue_header);
+#endif
+  return _URC_INSTALL_CONTEXT;
+}
+
+/* The ARM EABI implementation of __cxa_call_unexpected is in a
+   different file so that the personality routine (PR) can be used
+   standalone.  The generic routine shared datastructures with the PR
+   so it is most convenient to implement it here.  */
+#ifndef __ARM_EABI_UNWINDER__
+extern "C" void
+__cxa_call_unexpected (void *exc_obj_in)
+{
+  _Unwind_Exception *exc_obj
+    = reinterpret_cast <_Unwind_Exception *>(exc_obj_in);
+
+  __cxa_begin_catch (exc_obj);
+
+  // This function is a handler for our exception argument.  If we exit
+  // by throwing a different exception, we'll need the original cleaned up.
+  struct end_catch_protect
+  {
+    end_catch_protect() { }
+    ~end_catch_protect() { __cxa_end_catch(); }
+  } end_catch_protect_obj;
+
+  lsda_header_info info;
+  __cxa_exception *xh = __get_exception_header_from_ue (exc_obj);
+  const unsigned char *xh_lsda;
+  _Unwind_Sword xh_switch_value;
+  std::terminate_handler xh_terminate_handler;
+
+  // If the unexpectedHandler rethrows the exception (e.g. to categorize it),
+  // it will clobber data about the current handler.  So copy the data out now.
+  xh_lsda = xh->languageSpecificData;
+  xh_switch_value = xh->handlerSwitchValue;
+  xh_terminate_handler = xh->terminateHandler;
+  info.ttype_base = (_Unwind_Ptr) xh->catchTemp;
+
+  __try 
+    { __unexpected (xh->unexpectedHandler); } 
+  __catch(...) 
+    {
+      // Get the exception thrown from unexpected.
+
+      __cxa_eh_globals *globals = __cxa_get_globals_fast ();
+      __cxa_exception *new_xh = globals->caughtExceptions;
+      void *new_ptr = __get_object_from_ambiguous_exception (new_xh);
+
+      // We don't quite have enough stuff cached; re-parse the LSDA.
+      parse_lsda_header (0, xh_lsda, &info);
+
+      // If this new exception meets the exception spec, allow it.
+      if (check_exception_spec (&info, __get_exception_header_from_obj
+                                  (new_ptr)->exceptionType,
+				new_ptr, xh_switch_value))
+	__throw_exception_again;
+
+      // If the exception spec allows std::bad_exception, throw that.
+      // We don't have a thrown object to compare against, but since
+      // bad_exception doesn't have virtual bases, that's OK; just pass 0.
+#if defined(__EXCEPTIONS) && defined(__GXX_RTTI)
+      const std::type_info &bad_exc = typeid (std::bad_exception);
+      if (check_exception_spec (&info, &bad_exc, 0, xh_switch_value))
+	throw std::bad_exception();
+#endif   
+
+      // Otherwise, die.
+      __terminate (xh_terminate_handler);
+    }
+}
+#endif
+
+} // namespace __cxxabiv1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_ptr.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_ptr.cc
new file mode 100644
index 000000000..94c28427d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_ptr.cc
@@ -0,0 +1,224 @@
+// -*- C++ -*- Implement the members of exception_ptr.
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
+
+#define _GLIBCXX_EH_PTR_COMPAT
+
+#include <exception>
+#include <bits/exception_ptr.h>
+#include "unwind-cxx.h"
+
+using namespace __cxxabiv1;
+
+std::__exception_ptr::exception_ptr::exception_ptr() throw()
+: _M_exception_object(0) { }
+
+
+std::__exception_ptr::exception_ptr::exception_ptr(void* obj) throw()
+: _M_exception_object(obj)  { _M_addref(); }
+
+
+std::__exception_ptr::exception_ptr::exception_ptr(__safe_bool) throw()
+: _M_exception_object(0) { }
+
+
+std::__exception_ptr::
+exception_ptr::exception_ptr(const exception_ptr& other) throw()
+: _M_exception_object(other._M_exception_object)
+{ _M_addref(); }
+
+
+std::__exception_ptr::exception_ptr::~exception_ptr() throw()
+{ _M_release(); }
+
+
+std::__exception_ptr::exception_ptr&
+std::__exception_ptr::
+exception_ptr::operator=(const exception_ptr& other) throw()
+{
+  exception_ptr(other).swap(*this);
+  return *this;
+}
+
+
+void
+std::__exception_ptr::exception_ptr::_M_addref() throw()
+{
+  if (_M_exception_object)
+    {
+      __cxa_refcounted_exception *eh =
+	__get_refcounted_exception_header_from_obj (_M_exception_object);
+      __sync_add_and_fetch (&eh->referenceCount, 1);
+    }
+}
+
+
+void
+std::__exception_ptr::exception_ptr::_M_release() throw()
+{
+  if (_M_exception_object)
+    {
+      __cxa_refcounted_exception *eh =
+	__get_refcounted_exception_header_from_obj (_M_exception_object);
+      if (__sync_sub_and_fetch (&eh->referenceCount, 1) == 0)
+        {
+	  if (eh->exc.exceptionDestructor)
+	    eh->exc.exceptionDestructor (_M_exception_object);
+
+          __cxa_free_exception (_M_exception_object);
+          _M_exception_object = 0;
+        }
+    }
+}
+
+
+void*
+std::__exception_ptr::exception_ptr::_M_get() const throw()
+{ return _M_exception_object; }
+
+
+void
+std::__exception_ptr::exception_ptr::swap(exception_ptr &other) throw()
+{
+  void *tmp = _M_exception_object;
+  _M_exception_object = other._M_exception_object;
+  other._M_exception_object = tmp;
+}
+
+
+// Retained for compatibility with CXXABI_1.3.
+void
+std::__exception_ptr::exception_ptr::_M_safe_bool_dummy() throw () { }
+
+
+// Retained for compatibility with CXXABI_1.3.
+bool
+std::__exception_ptr::exception_ptr::operator!() const throw()
+{ return _M_exception_object == 0; }
+
+
+// Retained for compatibility with CXXABI_1.3.
+std::__exception_ptr::exception_ptr::operator __safe_bool() const throw()
+{
+  return _M_exception_object ? &exception_ptr::_M_safe_bool_dummy : 0;
+}
+
+
+const std::type_info*
+std::__exception_ptr::exception_ptr::__cxa_exception_type() const throw()
+{
+  __cxa_exception *eh = __get_exception_header_from_obj (_M_exception_object);
+  return eh->exceptionType;
+}
+
+
+bool std::__exception_ptr::operator==(const exception_ptr& lhs,
+				      const exception_ptr& rhs) throw()
+{ return lhs._M_exception_object == rhs._M_exception_object; }
+
+
+bool std::__exception_ptr::operator!=(const exception_ptr& lhs,
+				      const exception_ptr& rhs) throw()
+{ return !(lhs == rhs);}
+
+
+std::exception_ptr
+std::current_exception() throw()
+{
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  __cxa_exception *header = globals->caughtExceptions;
+
+  if (!header)
+    return std::exception_ptr();
+
+  // Since foreign exceptions can't be counted, we can't return them.
+  if (!__is_gxx_exception_class (header->unwindHeader.exception_class))
+    return std::exception_ptr();
+
+  return std::exception_ptr(
+    __get_object_from_ambiguous_exception (header));
+}
+
+
+static void
+__gxx_dependent_exception_cleanup(_Unwind_Reason_Code code,
+				  _Unwind_Exception *exc)
+{
+  // This cleanup is set only for dependents.
+  __cxa_dependent_exception *dep = __get_dependent_exception_from_ue (exc);
+  __cxa_refcounted_exception *header =
+    __get_refcounted_exception_header_from_obj (dep->primaryException);
+
+  // We only want to be called through _Unwind_DeleteException.
+  // _Unwind_DeleteException in the HP-UX IA64 libunwind library
+  // returns _URC_NO_REASON and not _URC_FOREIGN_EXCEPTION_CAUGHT
+  // like the GCC _Unwind_DeleteException function does.
+  if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON)
+    __terminate (header->exc.terminateHandler);
+
+  __cxa_free_dependent_exception (dep);
+
+  if (__sync_sub_and_fetch (&header->referenceCount, 1) == 0)
+    {
+      if (header->exc.exceptionDestructor)
+	header->exc.exceptionDestructor (header + 1);
+
+      __cxa_free_exception (header + 1);
+    }
+}
+
+
+void
+std::rethrow_exception(std::exception_ptr ep)
+{
+  void *obj = ep._M_get();
+  __cxa_refcounted_exception *eh
+    = __get_refcounted_exception_header_from_obj (obj);
+
+  __cxa_dependent_exception *dep = __cxa_allocate_dependent_exception ();
+  dep->primaryException = obj;
+  __sync_add_and_fetch (&eh->referenceCount, 1);
+
+  dep->unexpectedHandler = __unexpected_handler;
+  dep->terminateHandler = __terminate_handler;
+  __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(dep->unwindHeader.exception_class);
+  dep->unwindHeader.exception_cleanup = __gxx_dependent_exception_cleanup;
+
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+  _Unwind_SjLj_RaiseException (&dep->unwindHeader);
+#else
+  _Unwind_RaiseException (&dep->unwindHeader);
+#endif
+
+  // Some sort of unwinding error.  Note that terminate is a handler.
+  __cxa_begin_catch (&dep->unwindHeader);
+  std::terminate();
+}
+
+#undef _GLIBCXX_EH_PTR_COMPAT
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_term_handler.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_term_handler.cc
new file mode 100644
index 000000000..52a074596
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_term_handler.cc
@@ -0,0 +1,46 @@
+// -*- C++ -*- std::terminate handler
+// Copyright (C) 2002, 2003, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "unwind-cxx.h"
+
+/* We default to the talkative, informative handler in a normal hosted
+   library.  This pulls in the demangler, the dyn-string utilities, and
+   elements of the I/O library.  For a low-memory environment, you can return
+   to the earlier "silent death" handler by including <cstdlib>, initializing
+   to "std::abort", and rebuilding the library.  In a freestanding mode, we
+   default to this latter approach.  */
+
+#if ! _GLIBCXX_HOSTED
+# include <cstdlib>
+#endif
+
+/* The current installed user handler.  */
+std::terminate_handler __cxxabiv1::__terminate_handler =
+#if _GLIBCXX_HOSTED
+	__gnu_cxx::__verbose_terminate_handler;
+#else
+	std::abort;
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_terminate.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_terminate.cc
new file mode 100644
index 000000000..87359d09f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_terminate.cc
@@ -0,0 +1,80 @@
+// -*- C++ -*- std::terminate, std::unexpected and friends.
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009,
+// 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "typeinfo"
+#include "exception"
+#include <cstdlib>
+#include "unwind-cxx.h"
+#include <bits/exception_defines.h>
+
+using namespace __cxxabiv1;
+
+void
+__cxxabiv1::__terminate (std::terminate_handler handler) throw ()
+{
+  __try 
+    {
+      handler ();
+      std::abort ();
+    } 
+  __catch(...) 
+    { std::abort (); }
+}
+
+void
+std::terminate () throw()
+{
+  __terminate (__terminate_handler);
+}
+
+void
+__cxxabiv1::__unexpected (std::unexpected_handler handler)
+{
+  handler();
+  std::terminate ();
+}
+
+void
+std::unexpected ()
+{
+  __unexpected (__unexpected_handler);
+}
+
+std::terminate_handler
+std::set_terminate (std::terminate_handler func) throw()
+{
+  std::terminate_handler old = __terminate_handler;
+  __terminate_handler = func;
+  return old;
+}
+
+std::unexpected_handler
+std::set_unexpected (std::unexpected_handler func) throw()
+{
+  std::unexpected_handler old = __unexpected_handler;
+  __unexpected_handler = func;
+  return old;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_throw.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_throw.cc
new file mode 100644
index 000000000..78cfc1395
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_throw.cc
@@ -0,0 +1,117 @@
+// -*- C++ -*- Exception handling routines for throwing.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "unwind-cxx.h"
+
+using namespace __cxxabiv1;
+
+
+static void
+__gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc)
+{
+  // This cleanup is set only for primaries.
+  __cxa_refcounted_exception *header
+    = __get_refcounted_exception_header_from_ue (exc);
+
+  // We only want to be called through _Unwind_DeleteException.
+  // _Unwind_DeleteException in the HP-UX IA64 libunwind library
+  // returns _URC_NO_REASON and not _URC_FOREIGN_EXCEPTION_CAUGHT
+  // like the GCC _Unwind_DeleteException function does.
+  if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON)
+    __terminate (header->exc.terminateHandler);
+
+#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
+  if (__sync_sub_and_fetch (&header->referenceCount, 1) == 0)
+    {
+#endif
+      if (header->exc.exceptionDestructor)
+	header->exc.exceptionDestructor (header + 1);
+
+      __cxa_free_exception (header + 1);
+#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
+    }
+#endif
+}
+
+
+extern "C" void
+__cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo, 
+			 void (*dest) (void *))
+{
+  // Definitely a primary.
+  __cxa_refcounted_exception *header
+    = __get_refcounted_exception_header_from_obj (obj);
+  header->referenceCount = 1;
+  header->exc.exceptionType = tinfo;
+  header->exc.exceptionDestructor = dest;
+  header->exc.unexpectedHandler = __unexpected_handler;
+  header->exc.terminateHandler = __terminate_handler;
+  __GXX_INIT_PRIMARY_EXCEPTION_CLASS(header->exc.unwindHeader.exception_class);
+  header->exc.unwindHeader.exception_cleanup = __gxx_exception_cleanup;
+
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+  _Unwind_SjLj_RaiseException (&header->exc.unwindHeader);
+#else
+  _Unwind_RaiseException (&header->exc.unwindHeader);
+#endif
+
+  // Some sort of unwinding error.  Note that terminate is a handler.
+  __cxa_begin_catch (&header->exc.unwindHeader);
+  std::terminate ();
+}
+
+extern "C" void
+__cxxabiv1::__cxa_rethrow ()
+{
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  __cxa_exception *header = globals->caughtExceptions;
+
+  globals->uncaughtExceptions += 1;
+
+  // Watch for luser rethrowing with no active exception.
+  if (header)
+    {
+      // Tell __cxa_end_catch this is a rethrow.
+      if (!__is_gxx_exception_class(header->unwindHeader.exception_class))
+	globals->caughtExceptions = 0;
+      else
+	header->handlerCount = -header->handlerCount;
+
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+      _Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader);
+#else
+#if defined(_LIBUNWIND_STD_ABI)
+      _Unwind_RaiseException (&header->unwindHeader);
+#else
+      _Unwind_Resume_or_Rethrow (&header->unwindHeader);
+#endif
+#endif
+  
+      // Some sort of unwinding error.  Note that terminate is a handler.
+      __cxa_begin_catch (&header->unwindHeader);
+    }
+  std::terminate ();
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_type.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_type.cc
new file mode 100644
index 000000000..bb8be0b75
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_type.cc
@@ -0,0 +1,54 @@
+// -*- C++ -*- Exception handling routines for catching.
+// Copyright (C) 2001, 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+#include <typeinfo>
+#include <cxxabi.h>
+#include "unwind-cxx.h"
+
+namespace __cxxabiv1
+{
+
+// Returns the type_info for the currently handled exception [15.3/8], or
+// null if there is none.
+extern "C"
+std::type_info *__cxa_current_exception_type () throw()
+{
+  __cxa_eh_globals *globals = __cxa_get_globals ();
+  __cxa_exception *header = globals->caughtExceptions;
+  if (header)
+    {
+      if (__is_dependent_exception (header->unwindHeader.exception_class))
+        {
+          __cxa_dependent_exception *de =
+            __get_dependent_exception_from_ue (&header->unwindHeader);
+          header = __get_exception_header_from_obj (de->primaryException);
+        }
+      return header->exceptionType;
+    }
+  else
+    return 0;
+}
+
+} // namespace __cxxabiv1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_unex_handler.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_unex_handler.cc
new file mode 100644
index 000000000..e4f390620
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/eh_unex_handler.cc
@@ -0,0 +1,29 @@
+// -*- C++ -*- std::unexpected handler
+// Copyright (C) 2002, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "unwind-cxx.h"
+
+/* The current installed user handler.  */
+std::unexpected_handler __cxxabiv1::__unexpected_handler = std::terminate;
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/enum_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/enum_type_info.cc
new file mode 100644
index 000000000..1e87b4dbe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/enum_type_info.cc
@@ -0,0 +1,33 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__enum_type_info::
+~__enum_type_info ()
+{}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception
new file mode 100644
index 000000000..db75ad115
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception
@@ -0,0 +1,158 @@
+// Exception Handling support header for -*- C++ -*-
+
+// Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+// 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file exception
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef __EXCEPTION__
+#define __EXCEPTION__
+
+#pragma GCC system_header
+
+#pragma GCC visibility push(default)
+
+#include <bits/c++config.h>
+
+extern "C++" {
+
+namespace std
+{
+  /**
+   * @defgroup exceptions Exceptions
+   * @ingroup diagnostics
+   *
+   * Classes and functions for reporting errors via exception classes.
+   * @{
+   */
+
+  /**
+   *  @brief Base class for all library exceptions.
+   *
+   *  This is the base class for all exceptions thrown by the standard
+   *  library, and by certain language expressions.  You are free to derive
+   *  your own %exception classes, or use a different hierarchy, or to
+   *  throw non-class data (e.g., fundamental types).
+   */
+  class exception
+  {
+  public:
+    exception() throw() { }
+    virtual ~exception() throw();
+
+    /** Returns a C-style character string describing the general cause
+     *  of the current error.  */
+    virtual const char* what() const throw();
+  };
+
+  /** If an %exception is thrown which is not listed in a function's
+   *  %exception specification, one of these may be thrown.  */
+  class bad_exception : public exception
+  {
+  public:
+    bad_exception() throw() { }
+
+    // This declaration is not useless:
+    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
+    virtual ~bad_exception() throw();
+
+    // See comment in eh_exception.cc.
+    virtual const char* what() const throw();
+  };
+
+  /// If you write a replacement %terminate handler, it must be of this type.
+  typedef void (*terminate_handler) ();
+
+  /// If you write a replacement %unexpected handler, it must be of this type.
+  typedef void (*unexpected_handler) ();
+
+  /// Takes a new handler function as an argument, returns the old function.
+  terminate_handler set_terminate(terminate_handler) throw();
+
+  /** The runtime will call this function if %exception handling must be
+   *  abandoned for any reason.  It can also be called by the user.  */
+  void terminate() throw() __attribute__ ((__noreturn__));
+
+  /// Takes a new handler function as an argument, returns the old function.
+  unexpected_handler set_unexpected(unexpected_handler) throw();
+
+  /** The runtime will call this function if an %exception is thrown which
+   *  violates the function's %exception specification.  */
+  void unexpected() __attribute__ ((__noreturn__));
+
+  /** [18.6.4]/1:  'Returns true after completing evaluation of a
+   *  throw-expression until either completing initialization of the
+   *  exception-declaration in the matching handler or entering @c unexpected()
+   *  due to the throw; or after entering @c terminate() for any reason
+   *  other than an explicit call to @c terminate().  [Note: This includes
+   *  stack unwinding [15.2].  end note]'
+   *
+   *  2: 'When @c uncaught_exception() is true, throwing an
+   *  %exception can result in a call of @c terminate()
+   *  (15.5.1).'
+   */
+  bool uncaught_exception() throw() __attribute__ ((__pure__));
+
+  // @} group exceptions
+} // namespace std
+
+namespace __gnu_cxx
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @brief A replacement for the standard terminate_handler which
+   *  prints more information about the terminating exception (if any)
+   *  on stderr.
+   *
+   *  @ingroup exceptions
+   *
+   *  Call
+   *   @code
+   *     std::set_terminate(__gnu_cxx::__verbose_terminate_handler)
+   *   @endcode
+   *  to use.  For more info, see
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch06s02.html
+   *
+   *  In 3.4 and later, this is on by default.
+   */
+  void __verbose_terminate_handler();
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+} // extern "C++"
+
+#pragma GCC visibility pop
+
+#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
+     && defined(_GLIBCXX_ATOMIC_BUILTINS_4))
+#include <bits/exception_ptr.h>
+#include <bits/nested_exception.h>
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_defines.h
new file mode 100644
index 000000000..269937cff
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_defines.h
@@ -0,0 +1,47 @@
+// -fno-exceptions Support -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2006, 2007, 2008, 2009,
+// 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/exception_defines.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{exception}
+ */
+
+#ifndef _EXCEPTION_DEFINES_H
+#define _EXCEPTION_DEFINES_H 1
+
+#ifndef __EXCEPTIONS
+// Iff -fno-exceptions, transform error handling code to work without it.
+# define __try      if (true)
+# define __catch(X) if (false)
+# define __throw_exception_again
+#else
+// Else proceed normally.
+# define __try      try
+# define __catch(X) catch(X)
+# define __throw_exception_again throw
+#endif
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_ptr.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_ptr.h
new file mode 100644
index 000000000..26117cd5d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/exception_ptr.h
@@ -0,0 +1,191 @@
+// Exception Handling support header (exception_ptr class) for -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+// 
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/exception_ptr.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{exception}
+ */
+
+#ifndef _EXCEPTION_PTR_H
+#define _EXCEPTION_PTR_H
+
+#pragma GCC visibility push(default)
+
+#include <bits/c++config.h>
+#include <bits/exception_defines.h>
+
+#if !defined(_GLIBCXX_ATOMIC_BUILTINS_4)
+#  error This platform does not support exception propagation.
+#endif
+
+extern "C++" {
+
+namespace std 
+{
+  /**
+   * @addtogroup exceptions
+   * @{
+   */
+  namespace __exception_ptr
+  {
+    class exception_ptr;
+  }
+
+  using __exception_ptr::exception_ptr;
+
+  /** Obtain an exception_ptr to the currently handled exception. If there
+   *  is none, or the currently handled exception is foreign, return the null
+   *  value.
+   */
+  exception_ptr current_exception() throw();
+
+  /// Throw the object pointed to by the exception_ptr.
+  void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__));
+
+  namespace __exception_ptr
+  {
+    /**
+     *  @brief An opaque pointer to an arbitrary exception.
+     *  @ingroup exceptions
+     */
+    class exception_ptr
+    {
+      void* _M_exception_object;
+
+      explicit exception_ptr(void* __e) throw();
+
+      void _M_addref() throw();
+      void _M_release() throw();
+
+      void *_M_get() const throw() __attribute__ ((__pure__));
+
+      friend exception_ptr std::current_exception() throw();
+      friend void std::rethrow_exception(exception_ptr);
+
+    public:
+      exception_ptr() throw();
+
+      exception_ptr(const exception_ptr&) throw();
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      exception_ptr(nullptr_t) throw()
+      : _M_exception_object(0)
+      { }
+
+      exception_ptr(exception_ptr&& __o) throw()
+      : _M_exception_object(__o._M_exception_object)
+      { __o._M_exception_object = 0; }
+#else
+      typedef void (exception_ptr::*__safe_bool)();
+
+      // For construction from nullptr or 0.
+      exception_ptr(__safe_bool) throw();
+#endif
+
+      exception_ptr& 
+      operator=(const exception_ptr&) throw();
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      exception_ptr& 
+      operator=(exception_ptr&& __o) throw()
+      {
+        exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this);
+        return *this;
+      }
+#endif
+
+      ~exception_ptr() throw();
+
+      void 
+      swap(exception_ptr&) throw();
+
+#ifdef _GLIBCXX_EH_PTR_COMPAT
+      // Retained for compatibility with CXXABI_1.3.
+      void _M_safe_bool_dummy() throw() __attribute__ ((__const__));
+      bool operator!() const throw() __attribute__ ((__pure__));
+      operator __safe_bool() const throw();
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      explicit operator bool() const
+      { return _M_exception_object; }
+#endif
+
+      friend bool 
+      operator==(const exception_ptr&, const exception_ptr&) throw() 
+      __attribute__ ((__pure__));
+
+      const class type_info*
+      __cxa_exception_type() const throw() __attribute__ ((__pure__));
+    };
+
+    bool 
+    operator==(const exception_ptr&, const exception_ptr&) throw() 
+    __attribute__ ((__pure__));
+
+    bool 
+    operator!=(const exception_ptr&, const exception_ptr&) throw() 
+    __attribute__ ((__pure__));
+
+    inline void
+    swap(exception_ptr& __lhs, exception_ptr& __rhs)
+    { __lhs.swap(__rhs); }
+
+  } // namespace __exception_ptr
+
+
+  /// Obtain an exception_ptr pointing to a copy of the supplied object.
+  template<typename _Ex>
+    exception_ptr 
+    copy_exception(_Ex __ex) throw()
+    {
+      __try
+	{
+#ifdef __EXCEPTIONS
+	  throw __ex;
+#endif
+	}
+      __catch(...)
+	{
+	  return current_exception();
+	}
+    }
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 1130. copy_exception name misleading
+  /// Obtain an exception_ptr pointing to a copy of the supplied object.
+  template<typename _Ex>
+    exception_ptr 
+    make_exception_ptr(_Ex __ex) throw()
+    { return std::copy_exception<_Ex>(__ex); }
+
+  // @} group exceptions
+} // namespace std
+
+} // extern "C++"
+
+#pragma GCC visibility pop
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/function_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/function_type_info.cc
new file mode 100644
index 000000000..e210088d2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/function_type_info.cc
@@ -0,0 +1,39 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__function_type_info::
+~__function_type_info ()
+{}
+
+bool __function_type_info::
+__is_function_p () const
+{
+  return true;
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/fundamental_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/fundamental_type_info.cc
new file mode 100644
index 000000000..de069382f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/fundamental_type_info.cc
@@ -0,0 +1,36 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+// This has special meaning to the compiler, and will cause it
+// to emit the type_info structures for the fundamental types which are
+// mandated to exist in the runtime.
+__fundamental_type_info::
+~__fundamental_type_info ()
+{}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard.cc
new file mode 100644
index 000000000..6e3d415cd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard.cc
@@ -0,0 +1,393 @@
+// Copyright (C) 2002, 2004, 2006, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//  
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Mark Mitchell, CodeSourcery LLC, <mark@codesourcery.com>
+// Thread support written by Jason Merrill, Red Hat Inc. <jason@redhat.com>
+
+#include <bits/c++config.h>
+#include <cxxabi.h>
+#include <exception>
+#include <new>
+#include <ext/atomicity.h>
+#include <ext/concurrence.h>
+#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
+    && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
+# include <climits>
+# include <syscall.h>
+# define _GLIBCXX_USE_FUTEX
+# define _GLIBCXX_FUTEX_WAIT 0
+# define _GLIBCXX_FUTEX_WAKE 1
+#endif
+
+// The IA64/generic ABI uses the first byte of the guard variable.
+// The ARM EABI uses the least significant bit.
+
+// Thread-safe static local initialization support.
+#ifdef __GTHREADS
+# ifndef _GLIBCXX_USE_FUTEX
+namespace
+{
+  // A single mutex controlling all static initializations.
+  static __gnu_cxx::__recursive_mutex* static_mutex;  
+
+  typedef char fake_recursive_mutex[sizeof(__gnu_cxx::__recursive_mutex)]
+  __attribute__ ((aligned(__alignof__(__gnu_cxx::__recursive_mutex))));
+  fake_recursive_mutex fake_mutex;
+
+  static void init()
+  { static_mutex =  new (&fake_mutex) __gnu_cxx::__recursive_mutex(); }
+
+  __gnu_cxx::__recursive_mutex&
+  get_static_mutex()
+  {
+    static __gthread_once_t once = __GTHREAD_ONCE_INIT;
+    __gthread_once(&once, init);
+    return *static_mutex;
+  }
+
+  // Simple wrapper for exception safety.
+  struct mutex_wrapper
+  {
+    bool unlock;
+    mutex_wrapper() : unlock(true)
+    { get_static_mutex().lock(); }
+
+    ~mutex_wrapper()
+    {
+      if (unlock)
+	static_mutex->unlock();
+    }
+  };
+}
+# endif
+
+# if defined(__GTHREAD_HAS_COND) && !defined(_GLIBCXX_USE_FUTEX)
+namespace
+{
+  // A single conditional variable controlling all static initializations.
+  static __gnu_cxx::__cond* static_cond;  
+
+  // using a fake type to avoid initializing a static class.
+  typedef char fake_cond_t[sizeof(__gnu_cxx::__cond)]
+  __attribute__ ((aligned(__alignof__(__gnu_cxx::__cond))));
+  fake_cond_t fake_cond;
+
+  static void init_static_cond()
+  { static_cond =  new (&fake_cond) __gnu_cxx::__cond(); }
+
+  __gnu_cxx::__cond&
+  get_static_cond()
+  {
+    static __gthread_once_t once = __GTHREAD_ONCE_INIT;
+    __gthread_once(&once, init_static_cond);
+    return *static_cond;
+  }
+}
+# endif
+
+# ifndef _GLIBCXX_GUARD_TEST_AND_ACQUIRE
+inline bool
+__test_and_acquire (__cxxabiv1::__guard *g)
+{
+  bool b = _GLIBCXX_GUARD_TEST (g);
+  _GLIBCXX_READ_MEM_BARRIER;
+  return b;
+}
+#  define _GLIBCXX_GUARD_TEST_AND_ACQUIRE(G) __test_and_acquire (G)
+# endif
+
+# ifndef _GLIBCXX_GUARD_SET_AND_RELEASE
+inline void
+__set_and_release (__cxxabiv1::__guard *g)
+{
+  _GLIBCXX_WRITE_MEM_BARRIER;
+  _GLIBCXX_GUARD_SET (g);
+}
+#  define _GLIBCXX_GUARD_SET_AND_RELEASE(G) __set_and_release (G)
+# endif
+
+#else /* !__GTHREADS */
+
+# undef _GLIBCXX_GUARD_TEST_AND_ACQUIRE
+# undef _GLIBCXX_GUARD_SET_AND_RELEASE
+# define _GLIBCXX_GUARD_SET_AND_RELEASE(G) _GLIBCXX_GUARD_SET (G)
+
+#endif /* __GTHREADS */
+
+//
+// Here are C++ run-time routines for guarded initiailization of static
+// variables. There are 4 scenarios under which these routines are called:
+//
+//   1. Threads not supported (__GTHREADS not defined)
+//   2. Threads are supported but not enabled at run-time.
+//   3. Threads enabled at run-time but __gthreads_* are not fully POSIX.
+//   4. Threads enabled at run-time and __gthreads_* support all POSIX threads
+//      primitives we need here.
+//
+// The old code supported scenarios 1-3 but was broken since it used a global
+// mutex for all threads and had the mutex locked during the whole duration of
+// initlization of a guarded static variable. The following created a dead-lock
+// with the old code.
+//
+//	Thread 1 acquires the global mutex.
+//	Thread 1 starts initializing static variable.
+//	Thread 1 creates thread 2 during initialization.
+//	Thread 2 attempts to acuqire mutex to initialize another variable.
+//	Thread 2 blocks since thread 1 is locking the mutex.
+//	Thread 1 waits for result from thread 2 and also blocks. A deadlock.
+//
+// The new code here can handle this situation and thus is more robust. Howere,
+// we need to use the POSIX thread conditional variable, which is not supported
+// in all platforms, notably older versions of Microsoft Windows. The gthr*.h
+// headers define a symbol __GTHREAD_HAS_COND for platforms that support POSIX
+// like conditional variables. For platforms that do not support conditional
+// variables, we need to fall back to the old code.
+
+// If _GLIBCXX_USE_FUTEX, no global mutex or conditional variable is used,
+// only atomic operations are used together with futex syscall.
+// Valid values of the first integer in guard are:
+// 0				  No thread encountered the guarded init
+//				  yet or it has been aborted.
+// _GLIBCXX_GUARD_BIT		  The guarded static var has been successfully
+//				  initialized.
+// _GLIBCXX_GUARD_PENDING_BIT	  The guarded static var is being initialized
+//				  and no other thread is waiting for its
+//				  initialization.
+// (_GLIBCXX_GUARD_PENDING_BIT    The guarded static var is being initialized
+//  | _GLIBCXX_GUARD_WAITING_BIT) and some other threads are waiting until
+//				  it is initialized.
+
+namespace __cxxabiv1 
+{
+#ifdef _GLIBCXX_USE_FUTEX
+  namespace
+  {
+    static inline int __guard_test_bit (const int __byte, const int __val)
+    {
+      union { int __i; char __c[sizeof (int)]; } __u = { 0 };
+      __u.__c[__byte] = __val;
+      return __u.__i;
+    }
+  }
+#endif
+
+  static inline int
+  init_in_progress_flag(__guard* g)
+  { return ((char *)g)[1]; }
+
+  static inline void
+  set_init_in_progress_flag(__guard* g, int v)
+  { ((char *)g)[1] = v; }
+
+  static inline void
+  throw_recursive_init_exception()
+  {
+#ifdef __EXCEPTIONS
+	throw __gnu_cxx::recursive_init_error();
+#else
+	// Use __builtin_trap so we don't require abort().
+	__builtin_trap();
+#endif
+  }
+
+  // acuire() is a helper function used to acquire guard if thread support is
+  // not compiled in or is compiled in but not enabled at run-time.
+  static int
+  acquire(__guard *g)
+  {
+    // Quit if the object is already initialized.
+    if (_GLIBCXX_GUARD_TEST(g))
+      return 0;
+
+    if (init_in_progress_flag(g))
+      throw_recursive_init_exception();
+
+    set_init_in_progress_flag(g, 1);
+    return 1;
+  }
+
+  extern "C"
+  int __cxa_guard_acquire (__guard *g) 
+  {
+#ifdef __GTHREADS
+    // If the target can reorder loads, we need to insert a read memory
+    // barrier so that accesses to the guarded variable happen after the
+    // guard test.
+    if (_GLIBCXX_GUARD_TEST_AND_ACQUIRE (g))
+      return 0;
+
+# ifdef _GLIBCXX_USE_FUTEX
+    // If __sync_* and futex syscall are supported, don't use any global
+    // mutex.
+    if (__gthread_active_p ())
+      {
+	int *gi = (int *) (void *) g;
+	const int guard_bit = _GLIBCXX_GUARD_BIT;
+	const int pending_bit = _GLIBCXX_GUARD_PENDING_BIT;
+	const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT;
+
+	while (1)
+	  {
+	    int old = __sync_val_compare_and_swap (gi, 0, pending_bit);
+	    if (old == 0)
+	      return 1;	// This thread should do the initialization.
+
+	    if (old == guard_bit)
+	      return 0;	// Already initialized.
+
+	    if (old == pending_bit)
+	      {
+		int newv = old | waiting_bit;
+		if (__sync_val_compare_and_swap (gi, old, newv) != old)
+		  continue;
+
+		old = newv;
+	      }
+
+	    syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAIT, old, 0);
+	  }
+      }
+# else
+    if (__gthread_active_p ())
+      {
+	mutex_wrapper mw;
+
+	while (1)	// When this loop is executing, mutex is locked.
+	  {
+#  ifdef __GTHREAD_HAS_COND
+	    // The static is already initialized.
+	    if (_GLIBCXX_GUARD_TEST(g))
+	      return 0;	// The mutex will be unlocked via wrapper
+
+	    if (init_in_progress_flag(g))
+	      {
+		// The guarded static is currently being initialized by
+		// another thread, so we release mutex and wait for the
+		// conditional variable. We will lock the mutex again after
+		// this.
+		get_static_cond().wait_recursive(&get_static_mutex());
+	      }
+	    else
+	      {
+		set_init_in_progress_flag(g, 1);
+		return 1; // The mutex will be unlocked via wrapper.
+	      }
+#  else
+	    // This provides compatibility with older systems not supporting
+	    // POSIX like conditional variables.
+	    if (acquire(g))
+	      {
+		mw.unlock = false;
+		return 1; // The mutex still locked.
+	      }
+	    return 0; // The mutex will be unlocked via wrapper.
+#  endif
+	  }
+      }
+# endif
+#endif
+
+    return acquire (g);
+  }
+
+  extern "C"
+  void __cxa_guard_abort (__guard *g) throw ()
+  {
+#ifdef _GLIBCXX_USE_FUTEX
+    // If __sync_* and futex syscall are supported, don't use any global
+    // mutex.
+    if (__gthread_active_p ())
+      {
+	int *gi = (int *) (void *) g;
+	const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT;
+	int old = __sync_lock_test_and_set (gi, 0);
+
+	if ((old & waiting_bit) != 0)
+	  syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAKE, INT_MAX);
+	return;
+      }
+#elif defined(__GTHREAD_HAS_COND)
+    if (__gthread_active_p())
+      {	
+	mutex_wrapper mw;
+
+	set_init_in_progress_flag(g, 0);
+
+	// If we abort, we still need to wake up all other threads waiting for
+	// the conditional variable.
+        get_static_cond().broadcast();
+	return;
+      }	
+#endif
+
+    set_init_in_progress_flag(g, 0);
+#if defined(__GTHREADS) && !defined(__GTHREAD_HAS_COND)
+    // This provides compatibility with older systems not supporting POSIX like
+    // conditional variables.
+    if (__gthread_active_p ())
+      static_mutex->unlock();
+#endif
+  }
+
+  extern "C"
+  void __cxa_guard_release (__guard *g) throw ()
+  {
+#ifdef _GLIBCXX_USE_FUTEX
+    // If __sync_* and futex syscall are supported, don't use any global
+    // mutex.
+    if (__gthread_active_p ())
+      {
+	int *gi = (int *) (void *) g;
+	const int guard_bit = _GLIBCXX_GUARD_BIT;
+	const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT;
+	int old = __sync_lock_test_and_set (gi, guard_bit);
+
+	if ((old & waiting_bit) != 0)
+	  syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAKE, INT_MAX);
+	return;
+      }
+#elif defined(__GTHREAD_HAS_COND)
+    if (__gthread_active_p())
+      {
+	mutex_wrapper mw;
+
+	set_init_in_progress_flag(g, 0);
+	_GLIBCXX_GUARD_SET_AND_RELEASE(g);
+
+        get_static_cond().broadcast();
+	return;
+      }	
+#endif
+
+    set_init_in_progress_flag(g, 0);
+    _GLIBCXX_GUARD_SET_AND_RELEASE (g);
+
+#if defined(__GTHREADS) && !defined(__GTHREAD_HAS_COND)
+    // This provides compatibility with older systems not supporting POSIX like
+    // conditional variables.
+    if (__gthread_active_p())
+      static_mutex->unlock();
+#endif
+  }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard_error.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard_error.cc
new file mode 100644
index 000000000..7c06bcd0d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/guard_error.cc
@@ -0,0 +1,31 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//  
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cxxabi.h>
+
+namespace __gnu_cxx
+{
+  recursive_init_error::~recursive_init_error() throw() { }
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.cc
new file mode 100644
index 000000000..07e77cf8d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.cc
@@ -0,0 +1,189 @@
+// Definition of _Hash_bytes. -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// This file defines Hash_bytes, a primitive used for defining hash
+// functions. Based on public domain MurmurHashUnaligned2, by Austin
+// Appleby.  http://murmurhash.googlepages.com/
+
+// This file also defines _Fnv_hash_bytes, another primitive with
+// exactly the same interface but using a different hash algorithm,
+// Fowler / Noll / Vo (FNV) Hash (type FNV-1a). The Murmur hash
+// function apears to be better in both speed and hash quality, and
+// FNV is provided primarily for backward compatibility.
+
+#include <bits/hash_bytes.h>
+
+namespace
+{
+  inline std::size_t
+  unaligned_load(const char* p)
+  {
+    std::size_t result;
+    __builtin_memcpy(&result, p, sizeof(result));
+    return result;
+  }
+
+#if __SIZEOF_SIZE_T__ == 8
+  // Loads n bytes, where 1 <= n < 8.
+  inline std::size_t
+  load_bytes(const char* p, int n)
+  {
+    std::size_t result = 0;
+    --n;
+    do
+      result = (result << 8) + static_cast<unsigned char>(p[n]);
+    while (--n >= 0);
+    return result;
+  }
+
+  inline std::size_t
+  shift_mix(std::size_t v)
+  { return v ^ (v >> 47);}
+#endif
+}
+
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if __SIZEOF_SIZE_T__ == 4
+
+  // Implementation of Murmur hash for 32-bit size_t.
+  size_t
+  _Hash_bytes(const void* ptr, size_t len, size_t seed)
+  {
+    const size_t m = 0x5bd1e995;
+    size_t hash = seed ^ len;
+    const char* buf = static_cast<const char*>(ptr);
+
+    // Mix 4 bytes at a time into the hash.
+    while(len >= 4)
+      {
+	size_t k = unaligned_load(buf);
+	k *= m;
+	k ^= k >> 24;
+	k *= m;
+	hash *= m;
+	hash ^= k;
+	buf += 4;
+	len -= 4;
+      }
+
+    // Handle the last few bytes of the input array.
+    switch(len)
+      {
+      case 3:
+	hash ^= static_cast<unsigned char>(buf[2]) << 16;
+      case 2:
+	hash ^= static_cast<unsigned char>(buf[1]) << 8;
+      case 1:
+	hash ^= static_cast<unsigned char>(buf[0]);
+	hash *= m;
+      };
+
+    // Do a few final mixes of the hash.
+    hash ^= hash >> 13;
+    hash *= m;
+    hash ^= hash >> 15;
+    return hash;
+  }
+
+  // Implementation of FNV hash for 32-bit size_t.
+  size_t
+  _Fnv_hash_bytes(const void* ptr, size_t len, size_t hash)
+  {
+    const char* cptr = static_cast<const char*>(ptr);
+    for (; len; --len)
+      {
+	hash ^= static_cast<size_t>(*cptr++);
+	hash *= static_cast<size_t>(16777619UL);
+      }
+    return hash;
+  }
+
+#elif __SIZEOF_SIZE_T__ == 8
+
+  // Implementation of Murmur hash for 64-bit size_t.
+  size_t
+  _Hash_bytes(const void* ptr, size_t len, size_t seed)
+  {
+    static const size_t mul = (0xc6a4a793UL << 32UL) + 0x5bd1e995UL;
+    const char* const buf = static_cast<const char*>(ptr);
+
+    // Remove the bytes not divisible by the sizeof(size_t).  This
+    // allows the main loop to process the data as 64-bit integers.
+    const int len_aligned = len & ~0x7;
+    const char* const end = buf + len_aligned;
+    size_t hash = seed ^ (len * mul);
+    for (const char* p = buf; p != end; p += 8)
+      {
+	const size_t data = shift_mix(unaligned_load(p) * mul) * mul;
+	hash ^= data;
+	hash *= mul;
+      }
+    if ((len & 0x7) != 0)
+      {
+	const size_t data = load_bytes(end, len & 0x7);
+	hash ^= data;
+	hash *= mul;
+      }
+    hash = shift_mix(hash) * mul;
+    hash = shift_mix(hash);
+    return hash;
+  }
+
+  // Implementation of FNV hash for 64-bit size_t.
+  size_t
+  _Fnv_hash_bytes(const void* ptr, size_t len, size_t hash)
+  {
+    const char* cptr = static_cast<const char*>(ptr);
+    for (; len; --len)
+      {
+	hash ^= static_cast<size_t>(*cptr++);
+	hash *= static_cast<size_t>(1099511628211ULL);
+      }
+    return hash;
+  }
+
+#else
+
+  // Dummy hash implementation for unusual sizeof(size_t).
+  size_t
+  _Hash_bytes(const void* ptr, size_t len, size_t seed)
+  {
+    size_t hash = seed;
+    const char* cptr = reinterpret_cast<const char*>(ptr);
+    for (; len; --len)
+      hash = (hash * 131) + *cptr++;
+    return hash;
+  }
+
+  size_t
+  _Fnv_hash_bytes(const void* ptr, size_t len, size_t seed)
+  { return _Hash_bytes(ptr, len, seed); }
+
+#endif /* __SIZEOF_SIZE_T__ */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.h
new file mode 100644
index 000000000..2f0c0eac6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/hash_bytes.h
@@ -0,0 +1,59 @@
+// Declarations for hash functions. -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/hash_bytes.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _HASH_BYTES_H
+#define _HASH_BYTES_H 1
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Hash function implementation for the nontrivial specialization.
+  // All of them are based on a primitive that hashes a pointer to a
+  // byte array. The actual hash algorithm is not guaranteed to stay
+  // the same from release to release -- it may be updated or tuned to
+  // improve hash quality or speed.
+  size_t
+  _Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
+
+  // A similar hash primitive, using the FNV hash algorithm. This
+  // algorithm is guaranteed to stay the same from release to release.
+  // (although it might not produce the same values on different
+  // machines.)
+  size_t
+  _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/initializer_list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/initializer_list
new file mode 100644
index 000000000..1048d44de
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/initializer_list
@@ -0,0 +1,102 @@
+// std::initializer_list support -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file initializer_list
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _INITIALIZER_LIST
+#define _INITIALIZER_LIST
+
+#pragma GCC system_header
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
+#pragma GCC visibility push(default)
+
+#include <bits/c++config.h>
+
+namespace std
+{
+  /// initializer_list
+  template<class _E>
+    class initializer_list
+    {
+    public:
+      typedef _E 		value_type;
+      typedef const _E& 	reference;
+      typedef const _E& 	const_reference;
+      typedef size_t 		size_type;
+      typedef const _E* 	iterator;
+      typedef const _E* 	const_iterator;
+
+    private:
+      iterator			_M_array;
+      size_type			_M_len;
+
+      // The compiler can call a private constructor.
+      constexpr initializer_list(const_iterator __a, size_type __l)
+      : _M_array(__a), _M_len(__l) { }
+
+    public:
+      constexpr initializer_list() : _M_array(0), _M_len(0) { }
+
+      // Number of elements.
+      constexpr size_type
+      size() { return _M_len; }
+
+      // First element.
+      constexpr const_iterator
+      begin() { return _M_array; }
+
+      // One past the last element.
+      constexpr const_iterator
+      end() { return begin() + size(); }
+  };
+
+  /**
+   *  @brief  Return an iterator pointing to the first element of
+   *          the initilizer_list.
+   *  @param  il  Initializer list.
+   */
+  template<class _Tp>
+    constexpr const _Tp*
+    begin(initializer_list<_Tp> __ils)
+    { return __ils.begin(); }
+
+  /**
+   *  @brief  Return an iterator pointing to one past the last element
+   *          of the initilizer_list.
+   *  @param  il  Initializer list.
+   */
+  template<class _Tp>
+    constexpr const _Tp*
+    end(initializer_list<_Tp> __ils)
+    { return __ils.end(); }
+}
+
+#pragma GCC visibility pop
+#endif // C++0x
+#endif // _INITIALIZER_LIST
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.cc
new file mode 100644
index 000000000..ecbc4c811
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.cc
@@ -0,0 +1,31 @@
+// Copyright (C) 2011 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <exception>
+
+namespace std 
+{
+#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
+  nested_exception::~nested_exception() = default;
+#endif
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.h
new file mode 100644
index 000000000..d4804bbed
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/nested_exception.h
@@ -0,0 +1,166 @@
+// Nested Exception support header (nested_exception class) for -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/nested_exception.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{exception}
+ */
+
+#ifndef _GLIBCXX_NESTED_EXCEPTION_H
+#define _GLIBCXX_NESTED_EXCEPTION_H 1
+
+#pragma GCC visibility push(default)
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+
+#if !defined(_GLIBCXX_ATOMIC_BUILTINS_4)
+#  error This platform does not support exception propagation.
+#endif
+
+extern "C++" {
+
+namespace std
+{
+  /**
+   * @addtogroup exceptions
+   * @{
+   */
+
+  /// Exception class with exception_ptr data member.
+  class nested_exception
+  {
+    exception_ptr _M_ptr;
+
+  public:
+    nested_exception() throw() : _M_ptr(current_exception()) { }
+
+    nested_exception(const nested_exception&) = default;
+
+    nested_exception& operator=(const nested_exception&) = default;
+
+    virtual ~nested_exception();
+
+    void
+    rethrow_nested() const __attribute__ ((__noreturn__))
+    { rethrow_exception(_M_ptr); }
+
+    exception_ptr
+    nested_ptr() const
+    { return _M_ptr; }
+  };
+
+  template<typename _Except>
+    struct _Nested_exception : public _Except, public nested_exception
+    {
+      explicit _Nested_exception(_Except&& __ex)
+      : _Except(static_cast<_Except&&>(__ex))
+      { }
+    };
+
+  template<typename _Ex>
+    struct __get_nested_helper
+    {
+      static const nested_exception*
+      _S_get(const _Ex& __ex)
+      { return dynamic_cast<const nested_exception*>(&__ex); }
+    };
+
+  template<typename _Ex>
+    struct __get_nested_helper<_Ex*>
+    {
+      static const nested_exception*
+      _S_get(const _Ex* __ex)
+      { return dynamic_cast<const nested_exception*>(__ex); }
+    };
+
+  template<typename _Ex>
+    inline const nested_exception*
+    __get_nested_exception(const _Ex& __ex)
+    { return __get_nested_helper<_Ex>::_S_get(__ex); }
+
+  template<typename _Ex>
+    void
+    __throw_with_nested(_Ex&&, const nested_exception* = 0)
+    __attribute__ ((__noreturn__));
+
+  template<typename _Ex>
+    void
+    __throw_with_nested(_Ex&&, ...) __attribute__ ((__noreturn__));
+
+  // This function should never be called, but is needed to avoid a warning
+  // about ambiguous base classes when instantiating throw_with_nested<_Ex>()
+  // with a type that has an accessible nested_exception base.
+  template<typename _Ex>
+    inline void
+    __throw_with_nested(_Ex&& __ex, const nested_exception*)
+    { throw __ex; }
+
+  template<typename _Ex>
+    inline void
+    __throw_with_nested(_Ex&& __ex, ...)
+    { throw _Nested_exception<_Ex>(static_cast<_Ex&&>(__ex)); }
+  
+  template<typename _Ex>
+    void
+    throw_with_nested(_Ex __ex) __attribute__ ((__noreturn__));
+
+  /// If @p __ex is derived from nested_exception, @p __ex. 
+  /// Else, an implementation-defined object derived from both.
+  template<typename _Ex>
+    inline void
+    throw_with_nested(_Ex __ex)
+    {
+      if (__get_nested_exception(__ex))
+        throw __ex;
+      __throw_with_nested(static_cast<_Ex&&>(__ex), &__ex);
+    }
+
+  /// If @p __ex is derived from nested_exception, @p __ex.rethrow_nested().
+  template<typename _Ex>
+    inline void
+    rethrow_if_nested(const _Ex& __ex)
+    {
+      if (const nested_exception* __nested = __get_nested_exception(__ex))
+        __nested->rethrow_nested();
+    }
+
+  /// Overload, See N2619
+  inline void
+  rethrow_if_nested(const nested_exception& __ex)
+  { __ex.rethrow_nested(); }
+
+  // @} group exceptions
+} // namespace std
+
+} // extern "C++"
+
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+#pragma GCC visibility pop
+
+#endif // _GLIBCXX_NESTED_EXCEPTION_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new
new file mode 100644
index 000000000..80ee3ba0f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new
@@ -0,0 +1,114 @@
+// The -*- C++ -*- dynamic memory management header.
+
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+// 2003, 2004, 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation
+
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+// 
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file new
+ *  This is a Standard C++ Library header.
+ *
+ *  The header @c new defines several functions to manage dynamic memory and
+ *  handling memory allocation errors; see
+ *  http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more.
+ */
+
+#ifndef _NEW
+#define _NEW
+
+#pragma GCC system_header
+
+#include <bits/c++config.h>
+#include <exception>
+
+#pragma GCC visibility push(default)
+
+extern "C++" {
+
+namespace std 
+{
+  /**
+   *  @brief  Exception possibly thrown by @c new.
+   *  @ingroup exceptions
+   *
+   *  @c bad_alloc (or classes derived from it) is used to report allocation
+   *  errors from the throwing forms of @c new.  */
+  class bad_alloc : public exception 
+  {
+  public:
+    bad_alloc() throw() { }
+
+    // This declaration is not useless:
+    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
+    virtual ~bad_alloc() throw();
+
+    // See comment in eh_exception.cc.
+    virtual const char* what() const throw();
+  };
+
+  struct nothrow_t { };
+
+  extern const nothrow_t nothrow;
+
+  /** If you write your own error handler to be called by @c new, it must
+   *  be of this type.  */
+  typedef void (*new_handler)();
+
+  /// Takes a replacement handler as the argument, returns the
+  /// previous handler.
+  new_handler set_new_handler(new_handler) throw();
+} // namespace std
+
+//@{
+/** These are replaceable signatures:
+ *  - normal single new and delete (no arguments, throw @c bad_alloc on error)
+ *  - normal array new and delete (same)
+ *  - @c nothrow single new and delete (take a @c nothrow argument, return
+ *    @c NULL on error)
+ *  - @c nothrow array new and delete (same)
+ *
+ *  Placement new and delete signatures (take a memory address argument,
+ *  does nothing) may not be replaced by a user's program.
+*/
+void* operator new(std::size_t) throw (std::bad_alloc);
+void* operator new[](std::size_t) throw (std::bad_alloc);
+void operator delete(void*) throw();
+void operator delete[](void*) throw();
+void* operator new(std::size_t, const std::nothrow_t&) throw();
+void* operator new[](std::size_t, const std::nothrow_t&) throw();
+void operator delete(void*, const std::nothrow_t&) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
+
+// Default placement versions of operator new.
+inline void* operator new(std::size_t, void* __p) throw() { return __p; }
+inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
+
+// Default placement versions of operator delete.
+inline void  operator delete  (void*, void*) throw() { }
+inline void  operator delete[](void*, void*) throw() { }
+//@}
+} // extern "C++"
+
+#pragma GCC visibility pop
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_handler.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_handler.cc
new file mode 100644
index 000000000..4e3c93545
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_handler.cc
@@ -0,0 +1,41 @@
+// Implementation file for the -*- C++ -*- dynamic memory management header.
+
+// Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+// 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "new"
+
+const std::nothrow_t std::nothrow = { };
+
+using std::new_handler;
+new_handler __new_handler;
+
+new_handler
+std::set_new_handler (new_handler handler) throw()
+{
+  new_handler prev_handler = __new_handler;
+  __new_handler = handler;
+  return prev_handler;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_op.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_op.cc
new file mode 100644
index 000000000..c61e941bc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_op.cc
@@ -0,0 +1,67 @@
+// Support routines for the -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2009, 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <bits/exception_defines.h>
+#include "new"
+
+using std::new_handler;
+using std::bad_alloc;
+#if _GLIBCXX_HOSTED
+using std::malloc;
+#else
+// A freestanding C runtime may not provide "malloc" -- but there is no
+// other reasonable way to implement "operator new".
+extern "C" void *malloc (std::size_t);
+#endif
+
+extern new_handler __new_handler;
+
+_GLIBCXX_WEAK_DEFINITION void *
+operator new (std::size_t sz) throw (std::bad_alloc)
+{
+  void *p;
+
+  /* malloc (0) is unpredictable; avoid it.  */
+  if (sz == 0)
+    sz = 1;
+  p = (void *) malloc (sz);
+  while (p == 0)
+    {
+      new_handler handler = __new_handler;
+      if (! handler)
+#ifdef __EXCEPTIONS
+	throw bad_alloc();
+#else
+        std::abort();
+#endif
+      handler ();
+      p = (void *) malloc (sz);
+    }
+
+  return p;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opnt.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opnt.cc
new file mode 100644
index 000000000..1bcdead58
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opnt.cc
@@ -0,0 +1,63 @@
+// Support routines for the -*- C++ -*- dynamic memory management.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2009, 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <bits/exception_defines.h>
+#include "new"
+
+using std::new_handler;
+using std::bad_alloc;
+
+extern "C" void *malloc (std::size_t);
+extern new_handler __new_handler;
+
+_GLIBCXX_WEAK_DEFINITION void *
+operator new (std::size_t sz, const std::nothrow_t&) throw()
+{
+  void *p;
+
+  /* malloc (0) is unpredictable; avoid it.  */
+  if (sz == 0)
+    sz = 1;
+  p = (void *) malloc (sz);
+  while (p == 0)
+    {
+      new_handler handler = __new_handler;
+      if (! handler)
+	return 0;
+      __try
+	{
+	  handler ();
+	}
+      __catch(const bad_alloc&)
+	{
+	  return 0;
+	}
+
+      p = (void *) malloc (sz);
+    }
+
+  return p;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opv.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opv.cc
new file mode 100644
index 000000000..b200e23c3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opv.cc
@@ -0,0 +1,33 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "new"
+
+_GLIBCXX_WEAK_DEFINITION void*
+operator new[] (std::size_t sz) throw (std::bad_alloc)
+{
+  return ::operator new(sz);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opvnt.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opvnt.cc
new file mode 100644
index 000000000..da4ae80b6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/new_opvnt.cc
@@ -0,0 +1,33 @@
+// Boilerplate support routines for -*- C++ -*- dynamic memory management.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include "new"
+ 
+_GLIBCXX_WEAK_DEFINITION void*
+operator new[] (std::size_t sz, const std::nothrow_t& nothrow) throw()
+{
+  return ::operator new(sz, nothrow);
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pbase_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pbase_type_info.cc
new file mode 100644
index 000000000..f79d9e968
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pbase_type_info.cc
@@ -0,0 +1,66 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 
+// 2009, 2010
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__pbase_type_info::
+~__pbase_type_info ()
+{}
+
+bool __pbase_type_info::
+__do_catch (const type_info *thr_type,
+            void **thr_obj,
+            unsigned outer) const
+{
+  if (*this == *thr_type)
+    return true;      // same type
+
+#ifdef __GXX_RTTI
+  if (typeid (*this) != typeid (*thr_type))
+    return false;     // not both same kind of pointers
+#endif
+  
+  if (!(outer & 1))
+    // We're not the same and our outer pointers are not all const qualified
+    // Therefore there must at least be a qualification conversion involved
+    // But for that to be valid, our outer pointers must be const qualified.
+    return false;
+  
+  const __pbase_type_info *thrown_type =
+    static_cast <const __pbase_type_info *> (thr_type);
+  
+  if (thrown_type->__flags & ~__flags)
+    // We're less qualified.
+    return false;
+  
+  if (!(__flags & __const_mask))
+    outer &= ~1;
+  
+  return __pointer_catch (thrown_type, thr_obj, outer);
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pmem_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pmem_type_info.cc
new file mode 100644
index 000000000..b0409172d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pmem_type_info.cc
@@ -0,0 +1,49 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__pointer_to_member_type_info::
+~__pointer_to_member_type_info ()
+{}
+
+bool __pointer_to_member_type_info::
+__pointer_catch (const __pbase_type_info *thr_type,
+                 void **thr_obj,
+                 unsigned outer) const
+{
+  // This static cast is always valid, as our caller will have determined that
+  // thr_type is really a __pointer_to_member_type_info.
+  const __pointer_to_member_type_info *thrown_type =
+    static_cast <const __pointer_to_member_type_info *> (thr_type);
+  
+  if (*__context != *thrown_type->__context)
+    return false;     // not pointers to member of same class
+  
+  return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pointer_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pointer_type_info.cc
new file mode 100644
index 000000000..be96308bf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pointer_type_info.cc
@@ -0,0 +1,56 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007,
+// 2009, 2010
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__pointer_type_info::
+~__pointer_type_info ()
+{}
+
+bool __pointer_type_info::
+__is_pointer_p () const
+{
+  return true;
+}
+
+bool __pointer_type_info::
+__pointer_catch (const __pbase_type_info *thrown_type,
+                 void **thr_obj,
+                 unsigned outer) const
+{
+#ifdef __GXX_RTTI
+  if (outer < 2 && *__pointee == typeid (void))
+    {
+      // conversion to void
+      return !thrown_type->__pointee->__is_function_p ();
+    }
+#endif
+  
+  return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pure.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pure.cc
new file mode 100644
index 000000000..acf72327a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/pure.cc
@@ -0,0 +1,51 @@
+// -*- C++ -*- 
+// Copyright (C) 2000, 2001, 2009 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cxxabi.h>
+#include "unwind-cxx.h"
+
+#if _GLIBCXX_HOSTED
+#ifdef _GLIBCXX_HAVE_UNISTD_H
+# include <unistd.h>
+# define writestr(str)	write(2, str, sizeof(str) - 1)
+# ifdef __GNU_LIBRARY__
+  /* Avoid forcing the library's meaning of `write' on the user program
+     by using the "internal" name (for use within the library).  */
+/*#  define write(fd, buf, n)	__write((fd), (buf), (n))*/
+# endif
+#else
+# include <cstdio>
+# define writestr(str)	std::fputs(str, stderr)
+#endif
+#else
+# define writestr(str) /* Empty */
+#endif
+
+extern "C" void
+__cxxabiv1::__cxa_pure_virtual (void)
+{
+  writestr ("pure virtual method called\n");
+  std::terminate ();
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/si_class_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/si_class_type_info.cc
new file mode 100644
index 000000000..829e71fad
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/si_class_type_info.cc
@@ -0,0 +1,85 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__si_class_type_info::
+~__si_class_type_info ()
+{}
+
+__class_type_info::__sub_kind __si_class_type_info::
+__do_find_public_src (ptrdiff_t src2dst,
+                      const void *obj_ptr,
+                      const __class_type_info *src_type,
+                      const void *src_ptr) const
+{
+  if (src_ptr == obj_ptr && *this == *src_type)
+    return __contained_public;
+  return __base_type->__do_find_public_src (src2dst, obj_ptr, src_type, src_ptr);
+}
+
+bool __si_class_type_info::
+__do_dyncast (ptrdiff_t src2dst,
+              __sub_kind access_path,
+              const __class_type_info *dst_type,
+              const void *obj_ptr,
+              const __class_type_info *src_type,
+              const void *src_ptr,
+              __dyncast_result &__restrict result) const
+{
+  if (*this == *dst_type)
+    {
+      result.dst_ptr = obj_ptr;
+      result.whole2dst = access_path;
+      if (src2dst >= 0)
+        result.dst2src = adjust_pointer <void> (obj_ptr, src2dst) == src_ptr
+              ? __contained_public : __not_contained;
+      else if (src2dst == -2)
+        result.dst2src = __not_contained;
+      return false;
+    }
+  if (obj_ptr == src_ptr && *this == *src_type)
+    {
+      // The src object we started from. Indicate how we are accessible from
+      // the most derived object.
+      result.whole2src = access_path;
+      return false;
+    }
+  return __base_type->__do_dyncast (src2dst, access_path, dst_type, obj_ptr,
+                             src_type, src_ptr, result);
+}
+
+bool __si_class_type_info::
+__do_upcast (const __class_type_info *dst, const void *obj_ptr,
+             __upcast_result &__restrict result) const
+{
+  if (__class_type_info::__do_upcast (dst, obj_ptr, result))
+    return true;
+  
+  return __base_type->__do_upcast (dst, obj_ptr, result);
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.cc
new file mode 100644
index 000000000..d939a3fda
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.cc
@@ -0,0 +1,81 @@
+// Methods for type_info for -*- C++ -*- Run Time Type Identification.
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+// 2003, 2004, 2005, 2006, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+#include <cstddef>
+#include "tinfo.h"
+
+std::type_info::
+~type_info ()
+{ }
+
+#if !__GXX_TYPEINFO_EQUALITY_INLINE
+
+// We can't rely on common symbols being shared between shared objects.
+bool std::type_info::
+operator== (const std::type_info& arg) const
+{
+#if __GXX_MERGED_TYPEINFO_NAMES
+  return name () == arg.name ();
+#else
+  return (&arg == this)
+    || (name ()[0] != '*' && (__builtin_strcmp (name (), arg.name ()) == 0));
+#endif
+}
+
+#endif
+
+namespace std {
+
+// return true if this is a type_info for a pointer type
+bool type_info::
+__is_pointer_p () const
+{
+  return false;
+}
+
+// return true if this is a type_info for a function type
+bool type_info::
+__is_function_p () const
+{
+  return false;
+}
+
+// try and catch a thrown object.
+bool type_info::
+__do_catch (const type_info *thr_type, void **, unsigned) const
+{
+  return *this == *thr_type;
+}
+
+// upcast from this type to the target. __class_type_info will override
+bool type_info::
+__do_upcast (const abi::__class_type_info *, void **) const
+{
+  return false;
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.h
new file mode 100644
index 000000000..b3e22232f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo.h
@@ -0,0 +1,183 @@
+// RTTI support internals for -*- C++ -*-
+// Copyright (C) 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2004, 2009
+// Free Software Foundation
+
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "typeinfo"
+#include <cstddef>
+
+// Class declarations shared between the typeinfo implementation files.
+
+#include <cxxabi.h>
+
+namespace __cxxabiv1 {
+
+inline bool __pbase_type_info::
+__pointer_catch (const __pbase_type_info *thrown_type,
+                 void **thr_obj,
+                 unsigned outer) const
+{
+  return __pointee->__do_catch (thrown_type->__pointee, thr_obj, outer + 2);
+}
+
+namespace {
+
+using namespace std;
+using namespace abi;
+
+// Initial part of a vtable, this structure is used with offsetof, so we don't
+// have to keep alignments consistent manually.
+struct vtable_prefix 
+{
+  // Offset to most derived object.
+  ptrdiff_t whole_object;
+
+  // Additional padding if necessary.
+#ifdef _GLIBCXX_VTABLE_PADDING
+  ptrdiff_t padding1;               
+#endif
+
+  // Pointer to most derived type_info.
+  const __class_type_info *whole_type;  
+
+  // Additional padding if necessary.
+#ifdef _GLIBCXX_VTABLE_PADDING
+  ptrdiff_t padding2;               
+#endif
+
+  // What a class's vptr points to.
+  const void *origin;               
+};
+
+template <typename T>
+inline const T *
+adjust_pointer (const void *base, ptrdiff_t offset)
+{
+  return reinterpret_cast <const T *>
+    (reinterpret_cast <const char *> (base) + offset);
+}
+
+// ADDR is a pointer to an object.  Convert it to a pointer to a base,
+// using OFFSET. IS_VIRTUAL is true, if we are getting a virtual base.
+inline void const *
+convert_to_base (void const *addr, bool is_virtual, ptrdiff_t offset)
+{
+  if (is_virtual)
+    {
+      const void *vtable = *static_cast <const void *const *> (addr);
+      
+      offset = *adjust_pointer<ptrdiff_t> (vtable, offset);
+    }
+
+  return adjust_pointer<void> (addr, offset);
+}
+
+// some predicate functions for __class_type_info::__sub_kind
+inline bool contained_p (__class_type_info::__sub_kind access_path)
+{
+  return access_path >= __class_type_info::__contained_mask;
+}
+inline bool public_p (__class_type_info::__sub_kind access_path)
+{
+  return access_path & __class_type_info::__contained_public_mask;
+}
+inline bool virtual_p (__class_type_info::__sub_kind access_path)
+{
+  return (access_path & __class_type_info::__contained_virtual_mask);
+}
+inline bool contained_public_p (__class_type_info::__sub_kind access_path)
+{
+  return ((access_path & __class_type_info::__contained_public)
+          == __class_type_info::__contained_public);
+}
+inline bool contained_nonpublic_p (__class_type_info::__sub_kind access_path)
+{
+  return ((access_path & __class_type_info::__contained_public)
+          == __class_type_info::__contained_mask);
+}
+inline bool contained_nonvirtual_p (__class_type_info::__sub_kind access_path)
+{
+  return ((access_path & (__class_type_info::__contained_mask
+                          | __class_type_info::__contained_virtual_mask))
+          == __class_type_info::__contained_mask);
+}
+
+static const __class_type_info *const nonvirtual_base_type =
+    static_cast <const __class_type_info *> (0) + 1;
+
+} // namespace
+
+// __upcast_result is used to hold information during traversal of a class
+// hierarchy when catch matching.
+struct __class_type_info::__upcast_result
+{
+  const void *dst_ptr;        // pointer to caught object
+  __sub_kind part2dst;        // path from current base to target
+  int src_details;            // hints about the source type hierarchy
+  const __class_type_info *base_type; // where we found the target,
+                              // if in vbase the __class_type_info of vbase
+                              // if a non-virtual base then 1
+                              // else NULL
+  __upcast_result (int d)
+    :dst_ptr (NULL), part2dst (__unknown), src_details (d), base_type (NULL)
+    {}
+};
+
+// __dyncast_result is used to hold information during traversal of a class
+// hierarchy when dynamic casting.
+struct __class_type_info::__dyncast_result
+{
+  const void *dst_ptr;        // pointer to target object or NULL
+  __sub_kind whole2dst;       // path from most derived object to target
+  __sub_kind whole2src;       // path from most derived object to sub object
+  __sub_kind dst2src;         // path from target to sub object
+  int whole_details;          // details of the whole class hierarchy
+  
+  __dyncast_result (int details_ = __vmi_class_type_info::__flags_unknown_mask)
+    :dst_ptr (NULL), whole2dst (__unknown),
+     whole2src (__unknown), dst2src (__unknown),
+     whole_details (details_)
+    {}
+
+protected:
+  __dyncast_result(const __dyncast_result&);
+  
+  __dyncast_result&
+  operator=(const __dyncast_result&);
+};
+
+inline __class_type_info::__sub_kind __class_type_info::
+__find_public_src (ptrdiff_t src2dst,
+                   const void *obj_ptr,
+                   const __class_type_info *src_type,
+                   const void *src_ptr) const
+{
+  if (src2dst >= 0)
+    return adjust_pointer <void> (obj_ptr, src2dst) == src_ptr
+            ? __contained_public : __not_contained;
+  if (src2dst == -2)
+    return __not_contained;
+  return __do_find_public_src (src2dst, obj_ptr, src_type, src_ptr);
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo2.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo2.cc
new file mode 100644
index 000000000..0182c6cc0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/tinfo2.cc
@@ -0,0 +1,45 @@
+// Methods for type_info for -*- C++ -*- Run Time Type Identification.
+
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cstddef>
+#include "tinfo.h"
+
+using std::type_info;
+
+#if !__GXX_TYPEINFO_EQUALITY_INLINE
+
+bool
+type_info::before (const type_info &arg) const
+{
+#if __GXX_MERGED_TYPEINFO_NAMES
+  return name () < arg.name ();
+#else
+  return (name ()[0] == '*') ? name () < arg.name ()
+    :  __builtin_strcmp (name (), arg.name ()) < 0;
+#endif
+}
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/typeinfo b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/typeinfo
new file mode 100644
index 000000000..69311d69e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/typeinfo
@@ -0,0 +1,224 @@
+// RTTI support for -*- C++ -*-
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+// 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+// 
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file typeinfo
+ *  This is a Standard C++ Library header.
+ */
+
+#ifndef _TYPEINFO
+#define _TYPEINFO
+
+#pragma GCC system_header
+
+#include <exception>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <bits/hash_bytes.h>
+#endif
+
+
+#pragma GCC visibility push(default)
+
+extern "C++" {
+
+namespace __cxxabiv1
+{
+  class __class_type_info;
+} // namespace __cxxabiv1
+
+// Determine whether typeinfo names for the same type are merged (in which
+// case comparison can just compare pointers) or not (in which case strings
+// must be compared), and whether comparison is to be implemented inline or
+// not.  We used to do inline pointer comparison by default if weak symbols
+// are available, but even with weak symbols sometimes names are not merged
+// when objects are loaded with RTLD_LOCAL, so now we always use strcmp by
+// default.  For ABI compatibility, we do the strcmp inline if weak symbols
+// are available, and out-of-line if not.  Out-of-line pointer comparison
+// is used where the object files are to be portable to multiple systems,
+// some of which may not be able to use pointer comparison, but the
+// particular system for which libstdc++ is being built can use pointer
+// comparison; in particular for most ARM EABI systems, where the ABI
+// specifies out-of-line comparison.  The compiler's target configuration
+// can override the defaults by defining __GXX_TYPEINFO_EQUALITY_INLINE to
+// 1 or 0 to indicate whether or not comparison is inline, and
+// __GXX_MERGED_TYPEINFO_NAMES to 1 or 0 to indicate whether or not pointer
+// comparison can be used.
+
+#ifndef __GXX_MERGED_TYPEINFO_NAMES
+// By default, typeinfo names are not merged.
+#define __GXX_MERGED_TYPEINFO_NAMES 0
+#endif
+
+// By default follow the old inline rules to avoid ABI changes.
+#ifndef __GXX_TYPEINFO_EQUALITY_INLINE
+  #if !__GXX_WEAK__
+    #define __GXX_TYPEINFO_EQUALITY_INLINE 0
+  #else
+    #define __GXX_TYPEINFO_EQUALITY_INLINE 1
+  #endif
+#endif
+
+namespace std 
+{
+  /**
+   *  @brief  Part of RTTI.
+   *
+   *  The @c type_info class describes type information generated by
+   *  an implementation.
+  */
+  class type_info 
+  {
+  public:
+    /** Destructor first. Being the first non-inline virtual function, this
+     *  controls in which translation unit the vtable is emitted. The
+     *  compiler makes use of that information to know where to emit
+     *  the runtime-mandated type_info structures in the new-abi.  */
+    virtual ~type_info();
+
+    /** Returns an @e implementation-defined byte string; this is not
+     *  portable between compilers!  */
+    const char* name() const
+    { return __name[0] == '*' ? __name + 1 : __name; }
+
+#if !__GXX_TYPEINFO_EQUALITY_INLINE
+    // In old abi, or when weak symbols are not supported, there can
+    // be multiple instances of a type_info object for one
+    // type. Uniqueness must use the _name value, not object address.
+    bool before(const type_info& __arg) const;
+    bool operator==(const type_info& __arg) const;
+#else
+  #if !__GXX_MERGED_TYPEINFO_NAMES
+    /** Returns true if @c *this precedes @c __arg in the implementation's
+     *  collation order.  */
+    // Even with the new abi, on systems that support dlopen
+    // we can run into cases where type_info names aren't merged,
+    // so we still need to do string comparison.
+    bool before(const type_info& __arg) const
+    { return (__name[0] == '*' && __arg.__name[0] == '*')
+	? __name < __arg.__name
+	: __builtin_strcmp (__name, __arg.__name) < 0; }
+
+    bool operator==(const type_info& __arg) const
+    {
+      return ((__name == __arg.__name)
+	      || (__name[0] != '*' &&
+		  __builtin_strcmp (__name, __arg.__name) == 0));
+    }
+  #else
+    // On some targets we can rely on type_info's NTBS being unique,
+    // and therefore address comparisons are sufficient.
+    bool before(const type_info& __arg) const
+    { return __name < __arg.__name; }
+
+    bool operator==(const type_info& __arg) const
+    { return __name == __arg.__name; }
+  #endif
+#endif
+    bool operator!=(const type_info& __arg) const
+    { return !operator==(__arg); }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    size_t hash_code() const throw()
+    {
+#  if !__GXX_MERGED_TYPEINFO_NAMES
+      return _Hash_bytes(name(), __builtin_strlen(name()),
+			 static_cast<size_t>(0xc70f6907UL));
+#  else
+      return reinterpret_cast<size_t>(__name);
+#  endif
+    }
+#endif // __GXX_EXPERIMENTAL_CXX0X__
+
+    // Return true if this is a pointer type of some kind
+    virtual bool __is_pointer_p() const;
+
+    // Return true if this is a function type
+    virtual bool __is_function_p() const;
+
+    // Try and catch a thrown type. Store an adjusted pointer to the
+    // caught type in THR_OBJ. If THR_TYPE is not a pointer type, then
+    // THR_OBJ points to the thrown object. If THR_TYPE is a pointer
+    // type, then THR_OBJ is the pointer itself. OUTER indicates the
+    // number of outer pointers, and whether they were const
+    // qualified.
+    virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,
+			    unsigned __outer) const;
+
+    // Internally used during catch matching
+    virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,
+			     void **__obj_ptr) const;
+
+  protected:
+    const char *__name;
+    
+    explicit type_info(const char *__n): __name(__n) { }
+    
+  private:
+    /// Assigning type_info is not supported.
+    type_info& operator=(const type_info&);
+    type_info(const type_info&);
+  };
+
+  /**
+   *  @brief  Thrown during incorrect typecasting.
+   *  @ingroup exceptions
+   *
+   *  If you attempt an invalid @c dynamic_cast expression, an instance of
+   *  this class (or something derived from this class) is thrown.  */
+  class bad_cast : public exception 
+  {
+  public:
+    bad_cast() throw() { }
+
+    // This declaration is not useless:
+    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
+    virtual ~bad_cast() throw();
+
+    // See comment in eh_exception.cc.
+    virtual const char* what() const throw();
+  };
+  
+  /** 
+   *  @brief Thrown when a NULL pointer in a @c typeid expression is used.
+   *  @ingroup exceptions
+   */
+  class bad_typeid : public exception 
+  {
+  public:
+    bad_typeid () throw() { }
+
+    // This declaration is not useless:
+    // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
+    virtual ~bad_typeid() throw();
+
+    // See comment in eh_exception.cc.
+    virtual const char* what() const throw();
+  };
+} // namespace std
+
+#pragma GCC visibility pop
+
+} // extern "C++"
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/unwind-cxx.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/unwind-cxx.h
new file mode 100644
index 000000000..e62ea7c38
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/unwind-cxx.h
@@ -0,0 +1,419 @@
+// -*- C++ -*- Exception handling and frame unwind runtime interface routines.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// This is derived from the C++ ABI for IA-64.  Where we diverge
+// for cross-architecture compatibility are noted with "@@@".
+
+#ifndef _UNWIND_CXX_H
+#define _UNWIND_CXX_H 1
+
+// Level 2: C++ ABI
+
+#include <typeinfo>
+#include <exception>
+#include <cstddef>
+#include "unwind.h"
+#include <bits/atomic_word.h>
+
+#pragma GCC visibility push(default)
+
+namespace __cxxabiv1
+{
+
+// A primary C++ exception object consists of a header, which is a wrapper
+// around an unwind object header with additional C++ specific information,
+// followed by the exception object itself.
+
+struct __cxa_exception
+{
+  // Manage the exception object itself.
+  std::type_info *exceptionType;
+  void (*exceptionDestructor)(void *); 
+
+  // The C++ standard has entertaining rules wrt calling set_terminate
+  // and set_unexpected in the middle of the exception cleanup process.
+  std::unexpected_handler unexpectedHandler;
+  std::terminate_handler terminateHandler;
+
+  // The caught exception stack threads through here.
+  __cxa_exception *nextException;
+
+  // How many nested handlers have caught this exception.  A negated
+  // value is a signal that this object has been rethrown.
+  int handlerCount;
+
+#ifdef __ARM_EABI_UNWINDER__
+  // Stack of exceptions in cleanups.
+  __cxa_exception* nextPropagatingException;
+
+  // The nuber of active cleanup handlers for this exception.
+  int propagationCount;
+#else
+  // Cache parsed handler data from the personality routine Phase 1
+  // for Phase 2 and __cxa_call_unexpected.
+  int handlerSwitchValue;
+  const unsigned char *actionRecord;
+  const unsigned char *languageSpecificData;
+  _Unwind_Ptr catchTemp;
+  void *adjustedPtr;
+#endif
+
+  // The generic exception header.  Must be last.
+  _Unwind_Exception unwindHeader;
+};
+
+struct __cxa_refcounted_exception
+{
+  // Manage this header.
+  _Atomic_word referenceCount;
+  // __cxa_exception must be last, and no padding can be after it.
+  __cxa_exception exc;
+};
+
+// A dependent C++ exception object consists of a wrapper around an unwind
+// object header with additional C++ specific information, containing a pointer
+// to a primary exception object.
+
+struct __cxa_dependent_exception
+{
+  // The primary exception this thing depends on.
+  void *primaryException;
+
+  // The C++ standard has entertaining rules wrt calling set_terminate
+  // and set_unexpected in the middle of the exception cleanup process.
+  std::unexpected_handler unexpectedHandler;
+  std::terminate_handler terminateHandler;
+
+  // The caught exception stack threads through here.
+  __cxa_exception *nextException;
+
+  // How many nested handlers have caught this exception.  A negated
+  // value is a signal that this object has been rethrown.
+  int handlerCount;
+
+#ifdef __ARM_EABI_UNWINDER__
+  // Stack of exceptions in cleanups.
+  __cxa_exception* nextPropagatingException;
+
+  // The nuber of active cleanup handlers for this exception.
+  int propagationCount;
+#else
+  // Cache parsed handler data from the personality routine Phase 1
+  // for Phase 2 and __cxa_call_unexpected.
+  int handlerSwitchValue;
+  const unsigned char *actionRecord;
+  const unsigned char *languageSpecificData;
+  _Unwind_Ptr catchTemp;
+  void *adjustedPtr;
+#endif
+
+  // The generic exception header.  Must be last.
+  _Unwind_Exception unwindHeader;
+};
+
+// Each thread in a C++ program has access to a __cxa_eh_globals object.
+struct __cxa_eh_globals
+{
+  __cxa_exception *caughtExceptions;
+  unsigned int uncaughtExceptions;
+#ifdef __ARM_EABI_UNWINDER__
+  __cxa_exception* propagatingExceptions;
+#endif
+};
+
+
+// The __cxa_eh_globals for the current thread can be obtained by using
+// either of the following functions.  The "fast" version assumes at least
+// one prior call of __cxa_get_globals has been made from the current
+// thread, so no initialization is necessary.
+extern "C" __cxa_eh_globals *__cxa_get_globals () throw() 
+  __attribute__ ((__const__));
+extern "C" __cxa_eh_globals *__cxa_get_globals_fast () throw() 
+  __attribute__ ((__const__));
+
+// Allocate memory for the primary exception plus the thrown object.
+extern "C" void *__cxa_allocate_exception(std::size_t thrown_size) throw();
+
+// Free the space allocated for the primary exception.
+extern "C" void __cxa_free_exception(void *thrown_exception) throw();
+
+// Allocate memory for a dependent exception.
+extern "C" __cxa_dependent_exception*
+__cxa_allocate_dependent_exception() throw();
+
+// Free the space allocated for the dependent exception.
+extern "C" void
+__cxa_free_dependent_exception(__cxa_dependent_exception *ex) throw();
+
+// Throw the exception.
+extern "C" void __cxa_throw (void *thrown_exception,
+			     std::type_info *tinfo,
+			     void (*dest) (void *))
+  __attribute__((__noreturn__));
+
+// Used to implement exception handlers.
+extern "C" void *__cxa_get_exception_ptr (void *) throw()
+  __attribute__ ((__pure__));
+extern "C" void *__cxa_begin_catch (void *) throw();
+extern "C" void __cxa_end_catch ();
+extern "C" void __cxa_rethrow () __attribute__((__noreturn__));
+
+// These facilitate code generation for recurring situations.
+extern "C" void __cxa_bad_cast () __attribute__((__noreturn__));
+extern "C" void __cxa_bad_typeid () __attribute__((__noreturn__));
+
+// @@@ These are not directly specified by the IA-64 C++ ABI.
+
+// Handles re-checking the exception specification if unexpectedHandler
+// throws, and if bad_exception needs to be thrown.  Called from the
+// compiler.
+extern "C" void __cxa_call_unexpected (void *) __attribute__((__noreturn__));
+extern "C" void __cxa_call_terminate (_Unwind_Exception*) throw ()
+  __attribute__((__noreturn__));
+
+#ifdef __ARM_EABI_UNWINDER__
+// Arm EABI specified routines.
+typedef enum {
+  ctm_failed = 0,
+  ctm_succeeded = 1,
+  ctm_succeeded_with_ptr_to_base = 2
+} __cxa_type_match_result;
+extern "C" __cxa_type_match_result __cxa_type_match(_Unwind_Exception*,
+						    const std::type_info*,
+						    bool, void**);
+extern "C" bool __cxa_begin_cleanup (_Unwind_Exception*);
+extern "C" void __cxa_end_cleanup (void);
+#endif
+
+// Invokes given handler, dying appropriately if the user handler was
+// so inconsiderate as to return.
+extern void __terminate(std::terminate_handler) throw () 
+  __attribute__((__noreturn__));
+extern void __unexpected(std::unexpected_handler)
+  __attribute__((__noreturn__));
+
+// The current installed user handlers.
+extern std::terminate_handler __terminate_handler;
+extern std::unexpected_handler __unexpected_handler;
+
+// These are explicitly GNU C++ specific.
+
+// Acquire the C++ exception header from the C++ object.
+static inline __cxa_exception *
+__get_exception_header_from_obj (void *ptr)
+{
+  return reinterpret_cast<__cxa_exception *>(ptr) - 1;
+}
+
+// Acquire the C++ exception header from the generic exception header.
+static inline __cxa_exception *
+__get_exception_header_from_ue (_Unwind_Exception *exc)
+{
+  return reinterpret_cast<__cxa_exception *>(exc + 1) - 1;
+}
+
+// Acquire the C++ refcounted exception header from the C++ object.
+static inline __cxa_refcounted_exception *
+__get_refcounted_exception_header_from_obj (void *ptr)
+{
+  return reinterpret_cast<__cxa_refcounted_exception *>(ptr) - 1;
+}
+
+// Acquire the C++ refcounted exception header from the generic exception
+// header.
+static inline __cxa_refcounted_exception *
+__get_refcounted_exception_header_from_ue (_Unwind_Exception *exc)
+{
+  return reinterpret_cast<__cxa_refcounted_exception *>(exc + 1) - 1;
+}
+
+static inline __cxa_dependent_exception *
+__get_dependent_exception_from_ue (_Unwind_Exception *exc)
+{
+  return reinterpret_cast<__cxa_dependent_exception *>(exc + 1) - 1;
+}
+
+#ifdef __ARM_EABI_UNWINDER__
+static inline bool
+__is_gxx_exception_class(_Unwind_Exception_Class c)
+{
+  // TODO: Take advantage of the fact that c will always be word aligned.
+  return c[0] == 'G'
+	 && c[1] == 'N'
+	 && c[2] == 'U'
+	 && c[3] == 'C'
+	 && c[4] == 'C'
+	 && c[5] == '+'
+	 && c[6] == '+'
+	 && (c[7] == '\0' || c[7] == '\x01');
+}
+
+// Only checks for primary or dependent, but not that it is a C++ exception at
+// all.
+static inline bool
+__is_dependent_exception(_Unwind_Exception_Class c)
+{
+  return c[7] == '\x01';
+}
+
+static inline void
+__GXX_INIT_PRIMARY_EXCEPTION_CLASS(_Unwind_Exception_Class c)
+{
+  c[0] = 'G';
+  c[1] = 'N';
+  c[2] = 'U';
+  c[3] = 'C';
+  c[4] = 'C';
+  c[5] = '+';
+  c[6] = '+';
+  c[7] = '\0';
+}
+
+static inline void
+__GXX_INIT_DEPENDENT_EXCEPTION_CLASS(_Unwind_Exception_Class c)
+{
+  c[0] = 'G';
+  c[1] = 'N';
+  c[2] = 'U';
+  c[3] = 'C';
+  c[4] = 'C';
+  c[5] = '+';
+  c[6] = '+';
+  c[7] = '\x01';
+}
+
+static inline bool
+__is_gxx_forced_unwind_class(_Unwind_Exception_Class c)
+{
+  return c[0] == 'G'
+	 && c[1] == 'N'
+	 && c[2] == 'U'
+	 && c[3] == 'C'
+	 && c[4] == 'F'
+	 && c[5] == 'O'
+	 && c[6] == 'R'
+	 && c[7] == '\0';
+}
+
+static inline void
+__GXX_INIT_FORCED_UNWIND_CLASS(_Unwind_Exception_Class c)
+{
+  c[0] = 'G';
+  c[1] = 'N';
+  c[2] = 'U';
+  c[3] = 'C';
+  c[4] = 'F';
+  c[5] = 'O';
+  c[6] = 'R';
+  c[7] = '\0';
+}
+
+static inline void*
+__gxx_caught_object(_Unwind_Exception* eo)
+{
+  return (void*)eo->barrier_cache.bitpattern[0];
+}
+#else // !__ARM_EABI_UNWINDER__
+// This is the primary exception class we report -- "GNUCC++\0".
+const _Unwind_Exception_Class __gxx_primary_exception_class
+= ((((((((_Unwind_Exception_Class) 'G' 
+	 << 8 | (_Unwind_Exception_Class) 'N')
+	<< 8 | (_Unwind_Exception_Class) 'U')
+       << 8 | (_Unwind_Exception_Class) 'C')
+      << 8 | (_Unwind_Exception_Class) 'C')
+     << 8 | (_Unwind_Exception_Class) '+')
+    << 8 | (_Unwind_Exception_Class) '+')
+   << 8 | (_Unwind_Exception_Class) '\0');
+
+// This is the dependent (from std::rethrow_exception) exception class we report
+// "GNUCC++\x01"
+const _Unwind_Exception_Class __gxx_dependent_exception_class
+= ((((((((_Unwind_Exception_Class) 'G' 
+	 << 8 | (_Unwind_Exception_Class) 'N')
+	<< 8 | (_Unwind_Exception_Class) 'U')
+       << 8 | (_Unwind_Exception_Class) 'C')
+      << 8 | (_Unwind_Exception_Class) 'C')
+     << 8 | (_Unwind_Exception_Class) '+')
+    << 8 | (_Unwind_Exception_Class) '+')
+   << 8 | (_Unwind_Exception_Class) '\x01');
+
+static inline bool
+__is_gxx_exception_class(_Unwind_Exception_Class c)
+{
+  return c == __gxx_primary_exception_class
+      || c == __gxx_dependent_exception_class;
+}
+
+// Only checks for primary or dependent, but not that it is a C++ exception at
+// all.
+static inline bool
+__is_dependent_exception(_Unwind_Exception_Class c)
+{
+  return (c & 1);
+}
+
+#define __GXX_INIT_PRIMARY_EXCEPTION_CLASS(c) c = __gxx_primary_exception_class
+#define __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(c) \
+  c = __gxx_dependent_exception_class
+
+// GNU C++ personality routine, Version 0.
+extern "C" _Unwind_Reason_Code __gxx_personality_v0
+     (int, _Unwind_Action, _Unwind_Exception_Class,
+      struct _Unwind_Exception *, struct _Unwind_Context *);
+
+// GNU C++ sjlj personality routine, Version 0.
+extern "C" _Unwind_Reason_Code __gxx_personality_sj0
+     (int, _Unwind_Action, _Unwind_Exception_Class,
+      struct _Unwind_Exception *, struct _Unwind_Context *);
+
+static inline void*
+__gxx_caught_object(_Unwind_Exception* eo)
+{
+  // Bad as it looks, this actually works for dependent exceptions too.
+  __cxa_exception* header = __get_exception_header_from_ue (eo);
+  return header->adjustedPtr;
+}
+#endif // !__ARM_EABI_UNWINDER__
+
+static inline void*
+__get_object_from_ue(_Unwind_Exception* eo) throw()
+{
+  return __is_dependent_exception (eo->exception_class) ?
+    __get_dependent_exception_from_ue (eo)->primaryException :
+    eo + 1;
+}
+
+static inline void *
+__get_object_from_ambiguous_exception(__cxa_exception *p_or_d) throw()
+{
+	return __get_object_from_ue (&p_or_d->unwindHeader);
+}
+
+
+} /* namespace __cxxabiv1 */
+
+#pragma GCC visibility pop
+
+#endif // _UNWIND_CXX_H
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vec.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vec.cc
new file mode 100644
index 000000000..700c5ef43
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vec.cc
@@ -0,0 +1,516 @@
+// New abi Support -*- C++ -*-
+
+// Copyright (C) 2000, 2001, 2003, 2004, 2009, 2011
+// Free Software Foundation, Inc.
+//  
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Nathan Sidwell, Codesourcery LLC, <nathan@codesourcery.com>
+
+#include <cxxabi.h>
+#include <new>
+#include <exception>
+#include <bits/exception_defines.h>
+#include "unwind-cxx.h"
+
+namespace __cxxabiv1
+{
+  namespace 
+  {
+    struct uncatch_exception 
+    {
+      uncatch_exception();
+      ~uncatch_exception () { __cxa_begin_catch (&p->unwindHeader); }
+      
+      __cxa_exception* p;
+
+    private:
+      uncatch_exception&
+      operator=(const uncatch_exception&);
+
+      uncatch_exception(const uncatch_exception&);
+    };
+
+    uncatch_exception::uncatch_exception() : p(0)
+    {
+      __cxa_eh_globals *globals = __cxa_get_globals_fast ();
+
+      p = globals->caughtExceptions;
+      p->handlerCount -= 1;
+      globals->caughtExceptions = p->nextException;
+      globals->uncaughtExceptions += 1;
+    }
+  }
+
+  // Allocate and construct array.
+  extern "C" void *
+  __cxa_vec_new(std::size_t element_count,
+		std::size_t element_size,
+		std::size_t padding_size,
+		__cxa_cdtor_type constructor,
+		__cxa_cdtor_type destructor)
+  {
+    return __cxa_vec_new2(element_count, element_size, padding_size,
+			   constructor, destructor,
+			   &operator new[], &operator delete []);
+  }
+
+  extern "C" void *
+  __cxa_vec_new2(std::size_t element_count,
+		 std::size_t element_size,
+		 std::size_t padding_size,
+		 __cxa_cdtor_type constructor,
+		 __cxa_cdtor_type destructor,
+		 void *(*alloc) (std::size_t),
+		 void (*dealloc) (void *))
+  {
+    std::size_t size = element_count * element_size + padding_size;
+    char *base = static_cast <char *> (alloc (size));
+    if (!base)
+      return base;
+
+    if (padding_size)
+      {
+	base += padding_size;
+	reinterpret_cast <std::size_t *> (base)[-1] = element_count;
+#ifdef _GLIBCXX_ELTSIZE_IN_COOKIE
+	reinterpret_cast <std::size_t *> (base)[-2] = element_size;
+#endif
+      }
+    __try
+      {
+	__cxa_vec_ctor(base, element_count, element_size,
+		       constructor, destructor);
+      }
+    __catch(...)
+      {
+	{
+	  uncatch_exception ue;
+	  // Core issue 901 will probably be resolved such that a
+	  // deleted operator delete means not freeing memory here.
+	  if (dealloc)
+	    dealloc(base - padding_size);
+	}
+	__throw_exception_again;
+      }
+    return base;
+  }
+  
+  extern "C" void *
+  __cxa_vec_new3(std::size_t element_count,
+		 std::size_t element_size,
+		 std::size_t padding_size,
+		 __cxa_cdtor_type constructor,
+		 __cxa_cdtor_type destructor,
+		 void *(*alloc) (std::size_t),
+		 void (*dealloc) (void *, std::size_t))
+  {
+    std::size_t size = element_count * element_size + padding_size;
+    char *base = static_cast<char *>(alloc (size));
+    if (!base)
+      return base;
+    
+    if (padding_size)
+      {
+	base += padding_size;
+	reinterpret_cast<std::size_t *>(base)[-1] = element_count;
+#ifdef _GLIBCXX_ELTSIZE_IN_COOKIE
+	reinterpret_cast <std::size_t *> (base)[-2] = element_size;
+#endif
+      }
+    __try
+      {
+	__cxa_vec_ctor(base, element_count, element_size,
+		       constructor, destructor);
+      }
+    __catch(...)
+      {
+	{
+	  uncatch_exception ue;
+	  if (dealloc)
+	    dealloc(base - padding_size, size);
+	}
+	__throw_exception_again;
+      }
+    return base;
+  }
+  
+  // Construct array.
+  extern "C" __cxa_vec_ctor_return_type
+  __cxa_vec_ctor(void *array_address,
+		 std::size_t element_count,
+		 std::size_t element_size,
+		 __cxa_cdtor_type constructor,
+		 __cxa_cdtor_type destructor)
+  {
+    std::size_t ix = 0;
+    char *ptr = static_cast<char *>(array_address);
+    
+    __try
+      {
+	if (constructor)
+	  for (; ix != element_count; ix++, ptr += element_size)
+	    constructor(ptr);
+      }
+    __catch(...)
+      {
+	{
+	  uncatch_exception ue;
+	  __cxa_vec_cleanup(array_address, ix, element_size, destructor);
+	}
+	__throw_exception_again;
+      }
+    _GLIBCXX_CXA_VEC_CTOR_RETURN (array_address);
+  }
+  
+  // Construct an array by copying.
+  extern "C" __cxa_vec_ctor_return_type
+  __cxa_vec_cctor(void *dest_array,
+		  void *src_array,
+		  std::size_t element_count,
+		  std::size_t element_size,
+		  __cxa_cdtor_return_type (*constructor) (void *, void *),
+		  __cxa_cdtor_type destructor)
+  {
+    std::size_t ix = 0;
+    char *dest_ptr = static_cast<char *>(dest_array);
+    char *src_ptr = static_cast<char *>(src_array);
+    
+    __try
+      {
+	if (constructor)
+	  for (; ix != element_count; 
+	       ix++, src_ptr += element_size, dest_ptr += element_size)
+	    constructor(dest_ptr, src_ptr);
+      }
+    __catch(...)
+      {
+	{
+	  uncatch_exception ue;
+	  __cxa_vec_cleanup(dest_array, ix, element_size, destructor);
+	}
+	__throw_exception_again;
+      }
+    _GLIBCXX_CXA_VEC_CTOR_RETURN (dest_array);
+  }
+  
+  // Destruct array.
+  extern "C" void
+  __cxa_vec_dtor(void *array_address,
+		 std::size_t element_count,
+		 std::size_t element_size,
+		 __cxa_cdtor_type destructor)
+  {
+    if (destructor)
+      {
+	char *ptr = static_cast<char *>(array_address);
+	std::size_t ix = element_count;
+
+	ptr += element_count * element_size;
+
+	__try
+	  {
+	    while (ix--)
+	      {
+		ptr -= element_size;
+		destructor(ptr);
+	      }
+	  }
+	__catch(...)
+	  {
+	    {
+	      uncatch_exception ue;
+	      __cxa_vec_cleanup(array_address, ix, element_size, destructor);
+	    }
+	    __throw_exception_again;
+	  }
+      }
+  }
+
+  // Destruct array as a result of throwing an exception.
+  // [except.ctor]/3 If a destructor called during stack unwinding
+  // exits with an exception, terminate is called.
+  extern "C" void
+  __cxa_vec_cleanup(void *array_address,
+		    std::size_t element_count,
+		    std::size_t element_size,
+		    __cxa_cdtor_type destructor) throw()
+  {
+    if (destructor)
+      {
+	char *ptr = static_cast <char *> (array_address);
+	std::size_t ix = element_count;
+
+	ptr += element_count * element_size;
+
+	__try
+	  {
+	    while (ix--)
+	      {
+		ptr -= element_size;
+		destructor(ptr);
+	      }
+	  }
+	__catch(...)
+	  {
+	    std::terminate();
+	  }
+      }
+  }
+
+  // Destruct and release array.
+  extern "C" void
+  __cxa_vec_delete(void *array_address,
+		   std::size_t element_size,
+		   std::size_t padding_size,
+		   __cxa_cdtor_type destructor)
+  {
+    __cxa_vec_delete2(array_address, element_size, padding_size,
+		       destructor,
+		       &operator delete []);
+  }
+
+  extern "C" void
+  __cxa_vec_delete2(void *array_address,
+		    std::size_t element_size,
+		    std::size_t padding_size,
+		    __cxa_cdtor_type destructor,
+		    void (*dealloc) (void *))
+  {
+    if (!array_address)
+      return;
+
+    char* base = static_cast<char *>(array_address);
+  
+    if (padding_size)
+      {
+	std::size_t element_count = reinterpret_cast<std::size_t *>(base)[-1];
+	base -= padding_size;
+	__try
+	  {
+	    __cxa_vec_dtor(array_address, element_count, element_size,
+			   destructor);
+	  }
+	__catch(...)
+	  {
+	    {
+	      uncatch_exception ue;
+	      dealloc(base);
+	    }
+	    __throw_exception_again;
+	  }
+      }
+    dealloc(base);
+  }
+
+  extern "C" void
+  __cxa_vec_delete3(void *array_address,
+		    std::size_t element_size,
+		    std::size_t padding_size,
+		     __cxa_cdtor_type destructor,
+		    void (*dealloc) (void *, std::size_t))
+  {
+    if (!array_address)
+      return;
+
+    char* base = static_cast <char *> (array_address);
+    std::size_t size = 0;
+
+    if (padding_size)
+      {
+	std::size_t element_count = reinterpret_cast<std::size_t *> (base)[-1];
+	base -= padding_size;
+	size = element_count * element_size + padding_size;
+	__try
+	  {
+	    __cxa_vec_dtor(array_address, element_count, element_size,
+			   destructor);
+	  }
+	__catch(...)
+	  {
+	    {
+	      uncatch_exception ue;
+	      dealloc(base, size);
+	    }
+	    __throw_exception_again;
+	  }
+      }
+    dealloc(base, size);
+  }
+} // namespace __cxxabiv1
+
+#if defined(__arm__) && defined(__ARM_EABI__)
+
+// The ARM C++ ABI requires that the library provide these additional
+// helper functions.  There are placed in this file, despite being
+// architecture-specifier, so that the compiler can inline the __cxa
+// functions into these functions as appropriate.
+
+namespace __aeabiv1
+{
+  extern "C" void *
+  __aeabi_vec_ctor_nocookie_nodtor (void *array_address,
+				    abi::__cxa_cdtor_type constructor,
+				    std::size_t element_size,
+				    std::size_t element_count)
+  {
+    return abi::__cxa_vec_ctor (array_address, element_count, element_size,
+				constructor, /*destructor=*/NULL);
+  }
+
+  extern "C" void *
+  __aeabi_vec_ctor_cookie_nodtor (void *array_address,
+				  abi::__cxa_cdtor_type constructor,
+				  std::size_t element_size,
+				  std::size_t element_count)
+  {
+    if (array_address == NULL)
+      return NULL;
+
+    array_address = reinterpret_cast<std::size_t *>(array_address) + 2;
+    reinterpret_cast<std::size_t *>(array_address)[-2] = element_size;
+    reinterpret_cast<std::size_t *>(array_address)[-1] = element_count;
+    return abi::__cxa_vec_ctor (array_address,
+				element_count, element_size, 
+				constructor, /*destructor=*/NULL);
+  }
+  
+  extern "C" void *
+  __aeabi_vec_cctor_nocookie_nodtor (void *dest_array,
+				     void *src_array, 
+				     std::size_t element_size, 
+				     std::size_t element_count,
+				     void *(*constructor) (void *, void *))
+  {
+    return abi::__cxa_vec_cctor (dest_array, src_array,
+				 element_count, element_size,
+				 constructor, NULL);
+  }
+
+  extern "C" void *
+  __aeabi_vec_new_cookie_noctor (std::size_t element_size, 
+				 std::size_t element_count)
+  {
+    return abi::__cxa_vec_new(element_count, element_size, 
+			      2 * sizeof (std::size_t),
+			      /*constructor=*/NULL, /*destructor=*/NULL);
+  }
+
+  extern "C" void *
+  __aeabi_vec_new_nocookie (std::size_t element_size, 
+			    std::size_t element_count,
+			    abi::__cxa_cdtor_type constructor)
+  {
+    return abi::__cxa_vec_new (element_count, element_size, 0, constructor, 
+			       NULL);
+  }
+
+  extern "C" void *
+  __aeabi_vec_new_cookie_nodtor (std::size_t element_size, 
+				 std::size_t element_count,
+				 abi::__cxa_cdtor_type constructor)
+  {
+    return abi::__cxa_vec_new(element_count, element_size, 
+			      2 * sizeof (std::size_t),
+			      constructor, NULL);
+  }
+
+  extern "C" void *
+  __aeabi_vec_new_cookie(std::size_t element_size, 
+			 std::size_t element_count,
+			 abi::__cxa_cdtor_type constructor,
+			 abi::__cxa_cdtor_type destructor)
+  {
+    return abi::__cxa_vec_new (element_count, element_size, 
+			       2 * sizeof (std::size_t),
+			       constructor, destructor);
+  }
+
+  
+  extern "C" void *
+  __aeabi_vec_dtor (void *array_address, 
+		    abi::__cxa_cdtor_type destructor,
+		    std::size_t element_size, 
+		    std::size_t element_count)
+  {
+    abi::__cxa_vec_dtor (array_address, element_count, element_size, 
+			 destructor);
+    return reinterpret_cast<std::size_t*> (array_address) - 2;
+  }
+
+  extern "C" void *
+  __aeabi_vec_dtor_cookie (void *array_address, 
+			   abi::__cxa_cdtor_type destructor)
+  {
+    if (!array_address)
+      return NULL;
+
+    abi::__cxa_vec_dtor (array_address, 
+			 reinterpret_cast<std::size_t *>(array_address)[-1],
+			 reinterpret_cast<std::size_t *>(array_address)[-2],
+			 destructor);
+    return reinterpret_cast<std::size_t*> (array_address) - 2;
+  }
+  
+  
+  extern "C" void
+  __aeabi_vec_delete (void *array_address, 
+		      abi::__cxa_cdtor_type destructor)
+  {
+    if (!array_address)
+      return;
+
+    abi::__cxa_vec_delete (array_address,
+			   reinterpret_cast<std::size_t *>(array_address)[-2],
+			   2 * sizeof (std::size_t),
+			   destructor);
+  }
+
+  extern "C" void
+  __aeabi_vec_delete3 (void *array_address, 
+		       abi::__cxa_cdtor_type destructor,
+		       void (*dealloc) (void *, std::size_t))
+  {
+    if (!array_address)
+      return;
+
+    abi::__cxa_vec_delete3 (array_address,
+			    reinterpret_cast<std::size_t *>(array_address)[-2],
+			    2 * sizeof (std::size_t),
+			    destructor, dealloc);
+  }
+
+  extern "C" void
+  __aeabi_vec_delete3_nodtor (void *array_address,
+			      void (*dealloc) (void *, std::size_t))
+  {
+    if (!array_address)
+      return;
+
+    abi::__cxa_vec_delete3 (array_address,
+			    reinterpret_cast<std::size_t *>(array_address)[-2],
+			    2 * sizeof (std::size_t),
+			    /*destructor=*/NULL, dealloc);
+  }
+} // namespace __aeabiv1
+
+#endif // defined(__arm__) && defined(__ARM_EABI__)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vmi_class_type_info.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vmi_class_type_info.cc
new file mode 100644
index 000000000..195061d72
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vmi_class_type_info.cc
@@ -0,0 +1,391 @@
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "tinfo.h"
+
+namespace __cxxabiv1 {
+
+__vmi_class_type_info::
+~__vmi_class_type_info ()
+{}
+
+__class_type_info::__sub_kind __vmi_class_type_info::
+__do_find_public_src (ptrdiff_t src2dst,
+                      const void *obj_ptr,
+                      const __class_type_info *src_type,
+                      const void *src_ptr) const
+{
+  if (obj_ptr == src_ptr && *this == *src_type)
+    return __contained_public;
+  
+  for (std::size_t i = __base_count; i--;)
+    {
+      if (!__base_info[i].__is_public_p ())
+        continue; // Not public, can't be here.
+      
+      const void *base = obj_ptr;
+      ptrdiff_t offset = __base_info[i].__offset ();
+      bool is_virtual = __base_info[i].__is_virtual_p ();
+      
+      if (is_virtual)
+        {
+          if (src2dst == -3)
+            continue; // Not a virtual base, so can't be here.
+        }
+      base = convert_to_base (base, is_virtual, offset);
+      
+      __sub_kind base_kind = __base_info[i].__base_type->__do_find_public_src
+                              (src2dst, base, src_type, src_ptr);
+      if (contained_p (base_kind))
+        {
+          if (is_virtual)
+            base_kind = __sub_kind (base_kind | __contained_virtual_mask);
+          return base_kind;
+        }
+    }
+  
+  return __not_contained;
+}
+
+// This is a big hairy function. Although the run-time behaviour of
+// dynamic_cast is simple to describe, it gives rise to some non-obvious
+// behaviour. We also desire to determine as early as possible any definite
+// answer we can get. Because it is unknown what the run-time ratio of
+// succeeding to failing dynamic casts is, we do not know in which direction
+// to bias any optimizations. To that end we make no particular effort towards
+// early fail answers or early success answers. Instead we try to minimize
+// work by filling in things lazily (when we know we need the information),
+// and opportunisticly take early success or failure results.
+bool __vmi_class_type_info::
+__do_dyncast (ptrdiff_t src2dst,
+              __sub_kind access_path,
+              const __class_type_info *dst_type,
+              const void *obj_ptr,
+              const __class_type_info *src_type,
+              const void *src_ptr,
+              __dyncast_result &__restrict result) const
+{
+  if (result.whole_details & __flags_unknown_mask)
+    result.whole_details = __flags;
+  
+  if (obj_ptr == src_ptr && *this == *src_type)
+    {
+      // The src object we started from. Indicate how we are accessible from
+      // the most derived object.
+      result.whole2src = access_path;
+      return false;
+    }
+  if (*this == *dst_type)
+    {
+      result.dst_ptr = obj_ptr;
+      result.whole2dst = access_path;
+      if (src2dst >= 0)
+        result.dst2src = adjust_pointer <void> (obj_ptr, src2dst) == src_ptr
+              ? __contained_public : __not_contained;
+      else if (src2dst == -2)
+        result.dst2src = __not_contained;
+      return false;
+    }
+
+  // If src_type is a unique non-virtual base of dst_type, we have a good
+  // guess at the address we want, so in the first pass try skipping any
+  // bases which don't contain that address.
+  const void *dst_cand = NULL;
+  if (src2dst >= 0)
+    dst_cand = adjust_pointer<void>(src_ptr, -src2dst);
+  bool first_pass = true;
+  bool skipped = false;
+
+  bool result_ambig = false;
+ again:
+  for (std::size_t i = __base_count; i--;)
+    {
+      __dyncast_result result2 (result.whole_details);
+      void const *base = obj_ptr;
+      __sub_kind base_access = access_path;
+      ptrdiff_t offset = __base_info[i].__offset ();
+      bool is_virtual = __base_info[i].__is_virtual_p ();
+      
+      if (is_virtual)
+        base_access = __sub_kind (base_access | __contained_virtual_mask);
+      base = convert_to_base (base, is_virtual, offset);
+
+      if (dst_cand)
+	{
+	  bool skip_on_first_pass = base > dst_cand;
+	  if (skip_on_first_pass == first_pass)
+	    {
+	      // We aren't interested in this base on this pass: either
+	      // we're on the first pass and this base doesn't contain the
+	      // likely address, or we're on the second pass and we checked
+	      // this base on the first pass.
+	      skipped = true;
+	      continue;
+	    }
+	}
+
+      if (!__base_info[i].__is_public_p ())
+        {
+          if (src2dst == -2 &&
+              !(result.whole_details
+                & (__non_diamond_repeat_mask | __diamond_shaped_mask)))
+            // The hierarchy has no duplicate bases (which might ambiguate
+            // things) and where we started is not a public base of what we
+            // want (so it cannot be a downcast). There is nothing of interest
+            // hiding in a non-public base.
+            continue;
+          base_access = __sub_kind (base_access & ~__contained_public_mask);
+        }
+      
+      bool result2_ambig
+          = __base_info[i].__base_type->__do_dyncast (src2dst, base_access,
+                                             dst_type, base,
+                                             src_type, src_ptr, result2);
+      result.whole2src = __sub_kind (result.whole2src | result2.whole2src);
+      if (result2.dst2src == __contained_public
+          || result2.dst2src == __contained_ambig)
+        {
+          result.dst_ptr = result2.dst_ptr;
+          result.whole2dst = result2.whole2dst;
+          result.dst2src = result2.dst2src;
+          // Found a downcast which can't be bettered or an ambiguous downcast
+          // which can't be disambiguated
+          return result2_ambig;
+        }
+      
+      if (!result_ambig && !result.dst_ptr)
+        {
+          // Not found anything yet.
+          result.dst_ptr = result2.dst_ptr;
+          result.whole2dst = result2.whole2dst;
+          result_ambig = result2_ambig;
+          if (result.dst_ptr && result.whole2src != __unknown
+              && !(__flags & __non_diamond_repeat_mask))
+            // Found dst and src and we don't have repeated bases.
+            return result_ambig;
+        }
+      else if (result.dst_ptr && result.dst_ptr == result2.dst_ptr)
+        {
+          // Found at same address, must be via virtual.  Pick the most
+          // accessible path.
+          result.whole2dst =
+              __sub_kind (result.whole2dst | result2.whole2dst);
+        }
+      else if ((result.dst_ptr != 0 && result2.dst_ptr != 0)
+	       || (result.dst_ptr != 0 && result2_ambig)
+	       || (result2.dst_ptr != 0 && result_ambig))
+        {
+          // Found two different DST_TYPE bases, or a valid one and a set of
+          // ambiguous ones, must disambiguate. See whether SRC_PTR is
+          // contained publicly within one of the non-ambiguous choices. If it
+          // is in only one, then that's the choice. If it is in both, then
+          // we're ambiguous and fail. If it is in neither, we're ambiguous,
+          // but don't yet fail as we might later find a third base which does
+          // contain SRC_PTR.
+        
+          __sub_kind new_sub_kind = result2.dst2src;
+          __sub_kind old_sub_kind = result.dst2src;
+          
+          if (contained_p (result.whole2src)
+              && (!virtual_p (result.whole2src)
+                  || !(result.whole_details & __diamond_shaped_mask)))
+            {
+              // We already found SRC_PTR as a base of most derived, and
+              // either it was non-virtual, or the whole hierarchy is
+              // not-diamond shaped. Therefore if it is in either choice, it
+              // can only be in one of them, and we will already know.
+              if (old_sub_kind == __unknown)
+                old_sub_kind = __not_contained;
+              if (new_sub_kind == __unknown)
+                new_sub_kind = __not_contained;
+            }
+          else
+            {
+              if (old_sub_kind >= __not_contained)
+                ;// already calculated
+              else if (contained_p (new_sub_kind)
+                       && (!virtual_p (new_sub_kind)
+                           || !(__flags & __diamond_shaped_mask)))
+                // Already found inside the other choice, and it was
+                // non-virtual or we are not diamond shaped.
+                old_sub_kind = __not_contained;
+              else
+                old_sub_kind = dst_type->__find_public_src
+                                (src2dst, result.dst_ptr, src_type, src_ptr);
+          
+              if (new_sub_kind >= __not_contained)
+                ;// already calculated
+              else if (contained_p (old_sub_kind)
+                       && (!virtual_p (old_sub_kind)
+                           || !(__flags & __diamond_shaped_mask)))
+                // Already found inside the other choice, and it was
+                // non-virtual or we are not diamond shaped.
+                new_sub_kind = __not_contained;
+              else
+                new_sub_kind = dst_type->__find_public_src
+                                (src2dst, result2.dst_ptr, src_type, src_ptr);
+            }
+          
+          // Neither sub_kind can be contained_ambig -- we bail out early
+          // when we find those.
+          if (contained_p (__sub_kind (new_sub_kind ^ old_sub_kind)))
+            {
+              // Only on one choice, not ambiguous.
+              if (contained_p (new_sub_kind))
+                {
+                  // Only in new.
+                  result.dst_ptr = result2.dst_ptr;
+                  result.whole2dst = result2.whole2dst;
+                  result_ambig = false;
+                  old_sub_kind = new_sub_kind;
+                }
+              result.dst2src = old_sub_kind;
+              if (public_p (result.dst2src))
+                return false; // Can't be an ambiguating downcast for later discovery.
+              if (!virtual_p (result.dst2src))
+                return false; // Found non-virtually can't be bettered
+            }
+          else if (contained_p (__sub_kind (new_sub_kind & old_sub_kind)))
+            {
+              // In both.
+              result.dst_ptr = NULL;
+              result.dst2src = __contained_ambig;
+              return true;  // Fail.
+            }
+          else
+            {
+              // In neither publicly, ambiguous for the moment, but keep
+              // looking. It is possible that it was private in one or
+              // both and therefore we should fail, but that's just tough.
+              result.dst_ptr = NULL;
+              result.dst2src = __not_contained;
+              result_ambig = true;
+            }
+        }
+      
+      if (result.whole2src == __contained_private)
+        // We found SRC_PTR as a private non-virtual base, therefore all
+        // cross casts will fail. We have already found a down cast, if
+        // there is one.
+        return result_ambig;
+    }
+
+  if (skipped && first_pass)
+    {
+      // We didn't find dst where we expected it, so let's go back and try
+      // the bases we skipped (if any).
+      first_pass = false;
+      goto again;
+    }
+
+  return result_ambig;
+}
+
+bool __vmi_class_type_info::
+__do_upcast (const __class_type_info *dst, const void *obj_ptr,
+             __upcast_result &__restrict result) const
+{
+  if (__class_type_info::__do_upcast (dst, obj_ptr, result))
+    return true;
+  
+  int src_details = result.src_details;
+  if (src_details & __flags_unknown_mask)
+    src_details = __flags;
+  
+  for (std::size_t i = __base_count; i--;)
+    {
+      __upcast_result result2 (src_details);
+      const void *base = obj_ptr;
+      ptrdiff_t offset = __base_info[i].__offset ();
+      bool is_virtual = __base_info[i].__is_virtual_p ();
+      bool is_public = __base_info[i].__is_public_p ();
+      
+      if (!is_public && !(src_details & __non_diamond_repeat_mask))
+        // original cannot have an ambiguous base, so skip private bases
+        continue;
+
+      if (base)
+        base = convert_to_base (base, is_virtual, offset);
+      
+      if (__base_info[i].__base_type->__do_upcast (dst, base, result2))
+        {
+          if (result2.base_type == nonvirtual_base_type && is_virtual)
+            result2.base_type = __base_info[i].__base_type;
+          if (contained_p (result2.part2dst) && !is_public)
+            result2.part2dst = __sub_kind (result2.part2dst & ~__contained_public_mask);
+          
+          if (!result.base_type)
+            {
+              result = result2;
+              if (!contained_p (result.part2dst))
+                return true; // found ambiguously
+              
+              if (result.part2dst & __contained_public_mask)
+                {
+                  if (!(__flags & __non_diamond_repeat_mask))
+                    return true;  // cannot have an ambiguous other base
+                }
+              else
+                {
+                  if (!virtual_p (result.part2dst))
+                    return true; // cannot have another path
+                  if (!(__flags & __diamond_shaped_mask))
+                    return true; // cannot have a more accessible path
+                }
+            }
+          else if (result.dst_ptr != result2.dst_ptr)
+            {
+              // Found an ambiguity.
+	      result.dst_ptr = NULL;
+	      result.part2dst = __contained_ambig;
+	      return true;
+            }
+          else if (result.dst_ptr)
+            {
+              // Ok, found real object via a virtual path.
+              result.part2dst
+                  = __sub_kind (result.part2dst | result2.part2dst);
+            }
+          else
+            {
+              // Dealing with a null pointer, need to check vbase
+              // containing each of the two choices.
+              if (result2.base_type == nonvirtual_base_type
+                  || result.base_type == nonvirtual_base_type
+                  || !(*result2.base_type == *result.base_type))
+                {
+                  // Already ambiguous, not virtual or via different virtuals.
+                  // Cannot match.
+                  result.part2dst = __contained_ambig;
+                  return true;
+                }
+              result.part2dst
+                  = __sub_kind (result.part2dst | result2.part2dst);
+            }
+        }
+    }
+  return result.part2dst != __unknown;
+}
+
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vterminate.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vterminate.cc
new file mode 100644
index 000000000..96824bb0f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/libsupc++/vterminate.cc
@@ -0,0 +1,101 @@
+// Verbose terminate_handler -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004, 2005, 2009, 2011 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HOSTED
+#include <cstdlib>
+#include <exception>
+#include <bits/exception_defines.h>
+#include <cxxabi.h>
+# include <cstdio>
+
+using namespace std;
+using namespace abi;
+
+namespace __gnu_cxx
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // A replacement for the standard terminate_handler which prints
+  // more information about the terminating exception (if any) on
+  // stderr.
+  void __verbose_terminate_handler()
+  {
+    static bool terminating;
+    if (terminating)
+      {
+	fputs("terminate called recursively\n", stderr);
+	abort ();
+      }
+    terminating = true;
+
+    // Make sure there was an exception; terminate is also called for an
+    // attempt to rethrow when there is no suitable exception.
+    type_info *t = __cxa_current_exception_type();
+    if (t)
+      {
+	// Note that "name" is the mangled name.
+	char const *name = t->name();
+	{
+	  int status = -1;
+	  char *dem = 0;
+	  
+	  dem = __cxa_demangle(name, 0, 0, &status);
+
+	  fputs("terminate called after throwing an instance of '", stderr);
+	  if (status == 0)
+	    fputs(dem, stderr);
+	  else
+	    fputs(name, stderr);
+	  fputs("'\n", stderr);
+
+	  if (status == 0)
+	    free(dem);
+	}
+
+	// If the exception is derived from std::exception, we can
+	// give more information.
+	__try { __throw_exception_again; }
+#ifdef __EXCEPTIONS
+	__catch(const exception& exc)
+	  {
+	    char const *w = exc.what();
+	    fputs("  what():  ", stderr);
+	    fputs(w, stderr);
+	    fputs("\n", stderr);
+          }
+#endif
+	__catch(...) { }
+      }
+    else
+      fputs("terminate called without an active exception\n", stderr);
+    
+    abort();
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/linkage.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/linkage.m4
new file mode 100644
index 000000000..b24f45560
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/linkage.m4
@@ -0,0 +1,399 @@
+dnl
+dnl This file contains macros for testing linkage.
+dnl
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_1
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <math.h>
+		      #ifdef HAVE_IEEEFP_H
+		      #include <ieeefp.h>
+		      #endif
+		     ],
+                     [ $1(0);],
+                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+])
+
+
+dnl 
+dnl Define autoheader template for using the underscore functions
+dnl For each parameter, create a macro where if func doesn't exist,
+dnl but _func does, then it will "#define func _func".
+dnl
+dnl GLIBCXX_MAYBE_UNDERSCORED_FUNCS
+AC_DEFUN([GLIBCXX_MAYBE_UNDERSCORED_FUNCS], 
+[AC_FOREACH([glibcxx_ufunc], [$1],
+  [AH_VERBATIM(_[]glibcxx_ufunc,
+[#if defined (]AS_TR_CPP(HAVE__[]glibcxx_ufunc)[) && ! defined (]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[)
+# define ]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[ 1
+# define ]glibcxx_ufunc[ _]glibcxx_ufunc[
+#endif])])
+])
+
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl 3) if not, see if 1) and 2) for argument prepended with '_'
+dnl
+dnl Define HAVE_CARGF etc if "cargf" is declared and links
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [
+  GLIBCXX_CHECK_MATH_DECL_1($1)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  else
+    GLIBCXX_CHECK_MATH_DECL_1(_$1)
+    if test x$glibcxx_cv_func__$1_use = x"yes"; then
+      AC_CHECK_FUNCS(_$1)
+    fi
+  fi
+  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
+])
+
+
+dnl
+dnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
+dnl of functions at once.  It's an all-or-nothing check -- either
+dnl HAVE_XYZ is defined for each of the functions, or for none of them.
+dnl Doing it this way saves significant configure time.
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
+  define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnl
+  AC_MSG_CHECKING([for $1 functions])
+  AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
+    AC_LANG_SAVE
+    AC_LANG_CPLUSPLUS
+    AC_TRY_COMPILE([#include <math.h>],
+                   patsubst(funclist,[\w+],[\& (0);]),
+                   [glibcxx_cv_func_$2_use=yes],
+                   [glibcxx_cv_func_$2_use=no])
+    AC_LANG_RESTORE])
+  AC_MSG_RESULT($glibcxx_cv_func_$2_use)
+  if test x$glibcxx_cv_func_$2_use = x"yes"; then
+    AC_CHECK_FUNCS(funclist)
+  else
+    AC_MSG_CHECKING([for _$1 functions])
+    AC_CACHE_VAL(glibcxx_cv_func__$2_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <math.h>],
+                     patsubst(funclist,[\w+],[_\& (0);]),
+                     [glibcxx_cv_func__$2_use=yes],
+                     [glibcxx_cv_func__$2_use=no])
+      AC_LANG_RESTORE])
+    AC_MSG_RESULT($glibcxx_cv_func__$2_use)
+    if test x$glibcxx_cv_func__$2_use = x"yes"; then
+      AC_CHECK_FUNCS(patsubst(funclist,[\w+],[_\&]))
+    fi
+  fi
+  GLIBCXX_MAYBE_UNDERSCORED_FUNCS(funclist)
+  undefine([funclist])
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with TWO parameters
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_2
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <math.h>],
+                     [ $1(0, 0);],
+                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl Define HAVE_CARGF etc if "cargf" is declared and links
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a math function with TWO parameters
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [
+  GLIBCXX_CHECK_MATH_DECL_2($1)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  else
+    GLIBCXX_CHECK_MATH_DECL_2(_$1)
+    if test x$glibcxx_cv_func__$1_use = x"yes"; then
+      AC_CHECK_FUNCS(_$1)
+    fi
+  fi
+  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
+])
+
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with THREE parameters
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_3
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <math.h>],
+                     [ $1(0, 0, 0);],
+                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl Define HAVE_CARGF etc if "cargf" is declared and links
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a math function with THREE parameters
+dnl
+dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3
+AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
+  GLIBCXX_CHECK_MATH_DECL_3($1)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  else
+    GLIBCXX_CHECK_MATH_DECL_3(_$1)
+    if test x$glibcxx_cv_func__$1_use = x"yes"; then
+      AC_CHECK_FUNCS(_$1)
+    fi
+  fi
+  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
+])
+
+
+dnl
+dnl Check to see if the (stdlib function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a stdlib function without parameters
+dnl
+dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0
+AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <stdlib.h>],
+                     [ $1();],
+                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  fi
+])
+
+
+dnl
+dnl Check to see if the (stdlib function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a stdlib function with TWO parameters
+dnl
+dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2
+AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <stdlib.h>],
+                     [ $1(0, 0);],
+                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  fi
+  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
+])
+
+
+dnl
+dnl Check to see if the (stdlib function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a stdlib function with THREE parameters
+dnl
+dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3
+AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
+  AC_MSG_CHECKING([for $1 declaration])
+  if test x${glibcxx_cv_func_$1_use+set} != xset; then
+    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
+      AC_LANG_SAVE
+      AC_LANG_CPLUSPLUS
+      AC_TRY_COMPILE([#include <stdlib.h>],
+                     [ $1(0, 0, 0);],
+                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
+      AC_LANG_RESTORE
+    ])
+  fi
+  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
+  if test x$glibcxx_cv_func_$1_use = x"yes"; then
+    AC_CHECK_FUNCS($1)
+  fi
+])
+
+dnl
+dnl Check to see what the underlying c library is like
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+dnl 2) make sure the name has "C" linkage
+dnl This might seem like overkill but experience has shown that it's not...
+dnl
+dnl Define HAVE_STRTOLD if "strtold" is declared and links
+dnl Define HAVE_STRTOF if "strtof" is declared and links
+dnl
+dnl GLIBCXX_CHECK_STDLIB_SUPPORT
+AC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
+  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
+
+  CXXFLAGS="$ac_save_CXXFLAGS"
+])
+
+dnl
+dnl Check to see what the underlying c library or math library is like.
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+dnl 2) make sure the name has "C" linkage
+dnl This might seem like overkill but experience has shown that it's not...
+dnl
+dnl Define HAVE_CARGF etc if "cargf" is found.
+dnl
+dnl GLIBCXX_CHECK_MATH_SUPPORT
+AC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [
+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+  dnl Check libm
+  AC_CHECK_LIB(m, sin, libm="-lm")
+  ac_save_LIBS="$LIBS"
+  LIBS="$LIBS $libm"
+
+  dnl Check to see if certain C math functions exist.
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
+
+  dnl Check to see if basic C math functions have float versions.
+  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
+                                          float_trig,
+                                          acosf asinf atanf \
+                                          cosf sinf tanf \
+                                          coshf sinhf tanhf)
+  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
+                                          float_round,
+                                          ceilf floorf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
+
+  dnl Check to see if basic C math functions have long double versions.
+  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
+                                          long_double_trig,
+                                          acosl asinl atanl \
+                                          cosl sinl tanl \
+                                          coshl sinhl tanhl)
+  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
+                                          long_double_round,
+                                          ceill floorl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
+  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
+
+  LIBS="$ac_save_LIBS"
+  CXXFLAGS="$ac_save_CXXFLAGS"
+])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.am
new file mode 100644
index 000000000..c1ce99864
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.am
@@ -0,0 +1,85 @@
+## Makefile for the po subdirectory of the GNU C++ Standard library.
+##
+## Copyright (C) 2001, 2003, 2004, 2009 Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/fragment.am
+
+# Location of installation directories.
+locale_installdir = $(DESTDIR)$(datadir)/locale
+locale_builddir = $(glibcxx_localedir)
+
+# Tell automake that foo.po makes foo.mo
+SUFFIXES = .po .mo
+
+LOCALE_IN = $(glibcxx_POFILES)
+LOCALE_OUT = $(glibcxx_MOFILES)
+
+MSGFMT = msgfmt
+
+# Necessary files.
+EXTRA_DIST = string_literals.cc POTFILES.in $(PACKAGE).pot $(LOCALE_IN)
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+all-local: all-local-$(USE_NLS)
+all-local-no:
+all-local-yes: $(LOCALE_OUT)
+
+# 'make check' needs the catalogs constructed in build directory.
+check: check-$(USE_NLS)
+check-no:
+check-yes:
+	$(mkinstalldirs) $(locale_builddir)
+	catalogs='$(LOCALE_OUT)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\.mo$$//'`; \
+	  install_dir=$(locale_builddir)/$$lang/LC_MESSAGES; \
+	  $(mkinstalldirs) $$install_dir; \
+	  $(INSTALL_DATA) $$cat $$install_dir/$(PACKAGE).mo; \
+	done
+
+# Install rules here.
+# Wish install could just `cp -R ./share $(locale_installdir)` ...
+install-data-local: install-data-local-$(USE_NLS)
+install-data-local-no:
+install-data-local-yes: all-local-yes
+	$(mkinstalldirs) $(locale_installdir)
+	catalogs='$(LOCALE_OUT)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\.mo$$//'`; \
+	  install_dir=$(locale_installdir)/$$lang/LC_MESSAGES; \
+	  $(mkinstalldirs) $$install_dir; \
+	  $(INSTALL_DATA) $$cat $$install_dir/$(PACKAGE).mo; \
+	done
+
+# Maintainence of the .po template file.  This rule is never run automatically,
+# and updates the source directory.
+pot:
+	cd $(glibcxx_srcdir); \
+	xgettext --default-domain=$(PACKAGE) --add-comments --c++ --debug \
+	  --join-existing -o po/$(PACKAGE).pot --keyword=__N \
+	  `grep -r -l '__N(".*")' .`
+
+# Specify what gets cleaned up on a 'make clean'
+CLEANFILES = $(LOCALE_OUT)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.in
new file mode 100644
index 000000000..f552c6bf9
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/Makefile.in
@@ -0,0 +1,496 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am
+subdir = po
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
+# Location of installation directories.
+locale_installdir = $(DESTDIR)$(datadir)/locale
+locale_builddir = $(glibcxx_localedir)
+
+# Tell automake that foo.po makes foo.mo
+SUFFIXES = .po .mo
+LOCALE_IN = $(glibcxx_POFILES)
+LOCALE_OUT = $(glibcxx_MOFILES)
+MSGFMT = msgfmt
+
+# Necessary files.
+EXTRA_DIST = string_literals.cc POTFILES.in $(PACKAGE).pot $(LOCALE_IN)
+
+# Specify what gets cleaned up on a 'make clean'
+CLEANFILES = $(LOCALE_OUT)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .po .mo
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps po/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps po/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+	clean-libtool distclean distclean-generic distclean-libtool \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-data-local install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am
+
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+all-local: all-local-$(USE_NLS)
+all-local-no:
+all-local-yes: $(LOCALE_OUT)
+
+# 'make check' needs the catalogs constructed in build directory.
+check: check-$(USE_NLS)
+check-no:
+check-yes:
+	$(mkinstalldirs) $(locale_builddir)
+	catalogs='$(LOCALE_OUT)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\.mo$$//'`; \
+	  install_dir=$(locale_builddir)/$$lang/LC_MESSAGES; \
+	  $(mkinstalldirs) $$install_dir; \
+	  $(INSTALL_DATA) $$cat $$install_dir/$(PACKAGE).mo; \
+	done
+
+# Install rules here.
+# Wish install could just `cp -R ./share $(locale_installdir)` ...
+install-data-local: install-data-local-$(USE_NLS)
+install-data-local-no:
+install-data-local-yes: all-local-yes
+	$(mkinstalldirs) $(locale_installdir)
+	catalogs='$(LOCALE_OUT)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\.mo$$//'`; \
+	  install_dir=$(locale_installdir)/$$lang/LC_MESSAGES; \
+	  $(mkinstalldirs) $$install_dir; \
+	  $(INSTALL_DATA) $$cat $$install_dir/$(PACKAGE).mo; \
+	done
+
+# Maintainence of the .po template file.  This rule is never run automatically,
+# and updates the source directory.
+pot:
+	cd $(glibcxx_srcdir); \
+	xgettext --default-domain=$(PACKAGE) --add-comments --c++ --debug \
+	  --join-existing -o po/$(PACKAGE).pot --keyword=__N \
+	  `grep -r -l '__N(".*")' .`
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/POTFILES.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/POTFILES.in
new file mode 100644
index 000000000..339ba2938
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/POTFILES.in
@@ -0,0 +1,24 @@
+## Make/configure bits for translation of the GNU C++ Standard library.
+##
+## Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+# include/backward/backward_warning.h
+string_literals.cc
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/de.po b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/de.po
new file mode 100644
index 000000000..835650ce4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/de.po
@@ -0,0 +1,31 @@
+# Translations needed for GNU C++ library locale implementation.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Benjamin Kosnik <bkoz@redhat.com>, 2001.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libstdc++ 3.1.0\n"
+"POT-Creation-Date: 2001-07-31 08:49-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: string_literals.cc:23
+msgid "please"
+msgstr "bitte"
+
+#: string_literals.cc:24
+msgid "thank you"
+msgstr "danke"
+
+#: string_literals.cc:27
+msgid "true"
+msgstr "zutreffend"
+
+#: string_literals.cc:28
+msgid "false"
+msgstr "falsch"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/fr.po b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/fr.po
new file mode 100644
index 000000000..03abcc5c2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/fr.po
@@ -0,0 +1,31 @@
+# Translations needed for GNU C++ library locale implementation.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Benjamin Kosnik <bkoz@redhat.com>, 2001.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libstdc++ 3.1.0\n"
+"POT-Creation-Date: 2001-07-31 08:49-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: string_literals.cc:23
+msgid "please"
+msgstr "s'il vous plaît"
+
+#: string_literals.cc:24
+msgid "thank you"
+msgstr "merci"
+
+#: string_literals.cc:27
+msgid "true"
+msgstr "vrai"
+
+#: string_literals.cc:28
+msgid "false"
+msgstr "faux"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/libstdc++.pot b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/libstdc++.pot
new file mode 100644
index 000000000..4f2bf6351
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/libstdc++.pot
@@ -0,0 +1,56 @@
+# Translations needed for GNU C++ library locale implementation.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libstdc++-v3 package.
+# Benjamin Kosnik <bkoz@redhat.com>, 2001.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libstdc++ 3.4.0\n"
+"POT-Creation-Date: 2003-04-23 15:19-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: string_literals.cc:23
+msgid "please"
+msgstr ""
+
+#: string_literals.cc:24
+msgid "thank you"
+msgstr ""
+
+#: string_literals.cc:27
+msgid "true"
+msgstr ""
+
+#: string_literals.cc:28
+msgid "false"
+msgstr ""
+
+#: include/std/std_bitset.h:267 include/std/std_bitset.h:267
+msgid "bitset value is too large to fit in unsigned long"
+msgstr ""
+
+#: include/std/std_bitset.h:469 include/std/std_bitset.h:469
+msgid "bitset is zero-length"
+msgstr ""
+
+#: include/std/std_bitset.h:865 include/std/std_bitset.h:865
+msgid "bitset::set() argument too large"
+msgstr ""
+
+#: include/std/std_bitset.h:890 include/std/std_bitset.h:890
+msgid "bitset::reset() argument too large"
+msgstr ""
+
+#: include/std/std_bitset.h:914 include/std/std_bitset.h:914
+msgid "bitset::flip() argument too large"
+msgstr ""
+
+#: include/std/std_bitset.h:1017 include/std/std_bitset.h:1017
+msgid "bitset::test() argument too large"
+msgstr ""
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/string_literals.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/string_literals.cc
new file mode 100644
index 000000000..f012979ef
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/po/string_literals.cc
@@ -0,0 +1,33 @@
+// Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <libintl.h>
+#define gettext_noop(Str) Str
+
+// For messages testsuite files.
+const char* msgstr1 = gettext_noop("please");
+const char* msgstr2 = gettext_noop("thank you");
+
+// For numpunct implementation.
+const char* msgstr3 = gettext_noop("true");
+const char* msgstr4 = gettext_noop("false");
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.am
new file mode 100644
index 000000000..457e45ba4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.am
@@ -0,0 +1,60 @@
+## Makefile for the python subdirectory of the GNU C++ Standard library.
+##
+## Copyright (C) 2009 Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING.  If not, write to the Free
+## Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+## USA.
+
+include $(top_srcdir)/fragment.am
+
+## Where to install the module code.
+pythondir = $(datadir)/gcc-$(gcc_version)/python
+
+all-local: gdb.py
+
+nobase_python_DATA = \
+    libstdcxx/v6/printers.py \
+    libstdcxx/v6/__init__.py \
+    libstdcxx/__init__.py
+
+gdb.py: hook.in Makefile
+	sed -e 's,@pythondir@,$(pythondir),' \
+	    -e 's,@toolexeclibdir@,$(toolexeclibdir),' < $(srcdir)/hook.in > $@
+
+install-data-local: gdb.py
+	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
+## We want to install gdb.py as SOMETHING-gdb.py.  SOMETHING is the
+## full name of the final library.  We want to ignore symlinks, the
+## .la file, and any previous -gdb.py file.  This is inherently
+## fragile, but there does not seem to be a better option, because
+## libtool hides the real names from us.
+	@here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \
+	  for file in libstdc++*; do \
+	    case $$file in \
+	      *-gdb.py) ;; \
+	      *.la) ;; \
+	      *) if test -h $$file; then \
+	           continue; \
+	         fi; \
+	         libname=$$file;; \
+	    esac; \
+	  done; \
+	cd $$here; \
+	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
+	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.in
new file mode 100644
index 000000000..b8ea31a8e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/Makefile.in
@@ -0,0 +1,514 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am
+subdir = python
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pythondir)"
+DATA = $(nobase_python_DATA)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+pythondir = $(datadir)/gcc-$(gcc_version)/python
+nobase_python_DATA = \
+    libstdcxx/v6/printers.py \
+    libstdcxx/v6/__init__.py \
+    libstdcxx/__init__.py
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps python/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps python/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-nobase_pythonDATA: $(nobase_python_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)"
+	@list='$(nobase_python_DATA)'; test -n "$(pythondir)" || list=; \
+	$(am__nobase_list) | while read dir files; do \
+	  xfiles=; for file in $$files; do \
+	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+	  test -z "$$xfiles" || { \
+	    test "x$$dir" = x. || { \
+	      echo "$(MKDIR_P) '$(DESTDIR)$(pythondir)/$$dir'"; \
+	      $(MKDIR_P) "$(DESTDIR)$(pythondir)/$$dir"; }; \
+	    echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pythondir)/$$dir'"; \
+	    $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pythondir)/$$dir" || exit $$?; }; \
+	done
+
+uninstall-nobase_pythonDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(nobase_python_DATA)'; test -n "$(pythondir)" || list=; \
+	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pythondir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pythondir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA) all-local
+installdirs:
+	for dir in "$(DESTDIR)$(pythondir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-nobase_pythonDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-nobase_pythonDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+	clean-libtool distclean distclean-generic distclean-libtool \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-data-local install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-nobase_pythonDATA install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-nobase_pythonDATA
+
+
+all-local: gdb.py
+
+gdb.py: hook.in Makefile
+	sed -e 's,@pythondir@,$(pythondir),' \
+	    -e 's,@toolexeclibdir@,$(toolexeclibdir),' < $(srcdir)/hook.in > $@
+
+install-data-local: gdb.py
+	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
+	@here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \
+	  for file in libstdc++*; do \
+	    case $$file in \
+	      *-gdb.py) ;; \
+	      *.la) ;; \
+	      *) if test -h $$file; then \
+	           continue; \
+	         fi; \
+	         libname=$$file;; \
+	    esac; \
+	  done; \
+	cd $$here; \
+	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
+	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/hook.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/hook.in
new file mode 100644
index 000000000..a11305b84
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/hook.in
@@ -0,0 +1,60 @@
+# -*- python -*-
+# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+import gdb
+import os
+import os.path
+
+pythondir = '@pythondir@'
+libdir = '@toolexeclibdir@'
+
+# This file might be loaded when there is no current objfile.  This
+# can happen if the user loads it manually.  In this case we don't
+# update sys.path; instead we just hope the user managed to do that
+# beforehand.
+if gdb.current_objfile () is not None:
+    # Update module path.  We want to find the relative path from libdir
+    # to pythondir, and then we want to apply that relative path to the
+    # directory holding the objfile with which this file is associated.
+    # This preserves relocatability of the gcc tree.
+
+    # Do a simple normalization that removes duplicate separators.
+    pythondir = os.path.normpath (pythondir)
+    libdir = os.path.normpath (libdir)
+
+    prefix = os.path.commonprefix ([libdir, pythondir])
+    # In some bizarre configuration we might have found a match in the
+    # middle of a directory name.
+    if prefix[-1] != '/':
+        prefix = os.path.dirname (prefix) + '/'
+
+    # Strip off the prefix.
+    pythondir = pythondir[len (prefix):]
+    libdir = libdir[len (prefix):]
+
+    # Compute the ".."s needed to get from libdir to the prefix.
+    dotdots = ('..' + os.sep) * len (libdir.split (os.sep))
+
+    objfile = gdb.current_objfile ().filename
+    dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir)
+
+    if not dir_ in sys.path:
+        sys.path.insert(0, dir_)
+
+# Load the pretty-printers.
+from libstdcxx.v6.printers import register_libstdcxx_printers
+register_libstdcxx_printers (gdb.current_objfile ())
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/__init__.py b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/__init__.py
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/__init__.py
@@ -0,0 +1 @@
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/__init__.py b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/__init__.py
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/__init__.py
@@ -0,0 +1 @@
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/printers.py b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/printers.py
new file mode 100644
index 000000000..fb999bf52
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/python/libstdcxx/v6/printers.py
@@ -0,0 +1,802 @@
+# Pretty-printers for libstc++.
+
+# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import gdb
+import itertools
+import re
+
+class StdPointerPrinter:
+    "Print a smart pointer of some kind"
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        if self.val['_M_refcount']['_M_pi'] == 0:
+            return '%s (empty) %s' % (self.typename, self.val['_M_ptr'])
+        return '%s (count %d) %s' % (self.typename,
+                                     self.val['_M_refcount']['_M_pi']['_M_use_count'],
+                                     self.val['_M_ptr'])
+
+class UniquePointerPrinter:
+    "Print a unique_ptr"
+
+    def __init__ (self, val):
+        self.val = val
+
+    def to_string (self):
+        return self.val['_M_t']
+
+class StdListPrinter:
+    "Print a std::list"
+
+    class _iterator:
+        def __init__(self, nodetype, head):
+            self.nodetype = nodetype
+            self.base = head['_M_next']
+            self.head = head.address
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.base == self.head:
+                raise StopIteration
+            elt = self.base.cast(self.nodetype).dereference()
+            self.base = elt['_M_next']
+            count = self.count
+            self.count = self.count + 1
+            return ('[%d]' % count, elt['_M_data'])
+
+    def __init__(self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def children(self):
+        itype = self.val.type.template_argument(0)
+        # If the inferior program is compiled with -D_GLIBCXX_DEBUG
+        # some of the internal implementation details change.
+        if self.typename == "std::list":
+            nodetype = gdb.lookup_type('std::_List_node<%s>' % itype).pointer()
+        elif self.typename == "std::__debug::list":
+            nodetype = gdb.lookup_type('std::__norm::_List_node<%s>' % itype).pointer()
+        else:
+            raise ValueError, "Cannot cast list node for list printer."
+        return self._iterator(nodetype, self.val['_M_impl']['_M_node'])
+
+    def to_string(self):
+        if self.val['_M_impl']['_M_node'].address == self.val['_M_impl']['_M_node']['_M_next']:
+            return 'empty %s' % (self.typename)
+        return '%s' % (self.typename)
+
+class StdListIteratorPrinter:
+    "Print std::list::iterator"
+
+    def __init__(self, typename, val):
+        self.val = val
+        self.typename = typename
+
+    def to_string(self):
+        itype = self.val.type.template_argument(0)
+        # If the inferior program is compiled with -D_GLIBCXX_DEBUG
+        # some of the internal implementation details change.
+        if self.typename == "std::_List_iterator" or self.typename == "std::_List_const_iterator":
+            nodetype = gdb.lookup_type('std::_List_node<%s>' % itype).pointer()
+        elif self.typename == "std::__norm::_List_iterator" or self.typename == "std::__norm::_List_const_iterator":
+            nodetype = gdb.lookup_type('std::__norm::_List_node<%s>' % itype).pointer()
+        else:
+            raise ValueError, "Cannot cast list node for list iterator printer."
+        return self.val['_M_node'].cast(nodetype).dereference()['_M_data']
+
+class StdSlistPrinter:
+    "Print a __gnu_cxx::slist"
+
+    class _iterator:
+        def __init__(self, nodetype, head):
+            self.nodetype = nodetype
+            self.base = head['_M_head']['_M_next']
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.base == 0:
+                raise StopIteration
+            elt = self.base.cast(self.nodetype).dereference()
+            self.base = elt['_M_next']
+            count = self.count
+            self.count = self.count + 1
+            return ('[%d]' % count, elt['_M_data'])
+
+    def __init__(self, val):
+        self.val = val
+
+    def children(self):
+        itype = self.val.type.template_argument(0)
+        nodetype = gdb.lookup_type('__gnu_cxx::_Slist_node<%s>' % itype).pointer()
+        return self._iterator(nodetype, self.val)
+
+    def to_string(self):
+        if self.val['_M_head']['_M_next'] == 0:
+            return 'empty __gnu_cxx::slist'
+        return '__gnu_cxx::slist'
+
+class StdSlistIteratorPrinter:
+    "Print __gnu_cxx::slist::iterator"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        itype = self.val.type.template_argument(0)
+        nodetype = gdb.lookup_type('__gnu_cxx::_Slist_node<%s>' % itype).pointer()
+        return self.val['_M_node'].cast(nodetype).dereference()['_M_data']
+
+class StdVectorPrinter:
+    "Print a std::vector"
+
+    class _iterator:
+        def __init__ (self, start, finish, bitvec):
+            self.bitvec = bitvec
+            if bitvec:
+                self.item   = start['_M_p']
+                self.so     = start['_M_offset']
+                self.finish = finish['_M_p']
+                self.fo     = finish['_M_offset']
+                itype = self.item.dereference().type
+                self.isize = 8 * itype.sizeof
+            else:
+                self.item = start
+                self.finish = finish
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            count = self.count
+            self.count = self.count + 1
+            if self.bitvec:
+                if self.item == self.finish and self.so >= self.fo:
+                    raise StopIteration
+                elt = self.item.dereference()
+                if elt & (1 << self.so):
+                    obit = 1
+                else:
+                    obit = 0
+                self.so = self.so + 1
+                if self.so >= self.isize:
+                    self.item = self.item + 1
+                    self.so = 0
+                return ('[%d]' % count, obit)
+            else:
+                if self.item == self.finish:
+                    raise StopIteration
+                elt = self.item.dereference()
+                self.item = self.item + 1
+                return ('[%d]' % count, elt)
+
+    def __init__(self, typename, val):
+        self.typename = typename
+        self.val = val
+        self.is_bool = val.type.template_argument(0).code  == gdb.TYPE_CODE_BOOL
+
+    def children(self):
+        return self._iterator(self.val['_M_impl']['_M_start'],
+                              self.val['_M_impl']['_M_finish'],
+                              self.is_bool)
+
+    def to_string(self):
+        start = self.val['_M_impl']['_M_start']
+        finish = self.val['_M_impl']['_M_finish']
+        end = self.val['_M_impl']['_M_end_of_storage']
+        if self.is_bool:
+            start = self.val['_M_impl']['_M_start']['_M_p']
+            so    = self.val['_M_impl']['_M_start']['_M_offset']
+            finish = self.val['_M_impl']['_M_finish']['_M_p']
+            fo     = self.val['_M_impl']['_M_finish']['_M_offset']
+            itype = start.dereference().type
+            bl = 8 * itype.sizeof
+            length   = (bl - so) + bl * ((finish - start) - 1) + fo
+            capacity = bl * (end - start)
+            return ('%s<bool> of length %d, capacity %d'
+                    % (self.typename, int (length), int (capacity)))
+        else:
+            return ('%s of length %d, capacity %d'
+                    % (self.typename, int (finish - start), int (end - start)))
+
+    def display_hint(self):
+        return 'array'
+
+class StdVectorIteratorPrinter:
+    "Print std::vector::iterator"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        return self.val['_M_current'].dereference()
+
+class StdTuplePrinter:
+    "Print a std::tuple"
+
+    class _iterator:
+        def __init__ (self, head):
+            self.head = head
+
+            # Set the base class as the initial head of the
+            # tuple.
+            nodes = self.head.type.fields ()
+            if len (nodes) != 1:
+                raise ValueError, "Top of tuple tree does not consist of a single node."
+
+            # Set the actual head to the first pair.
+            self.head  = self.head.cast (nodes[0].type)
+            self.count = 0
+
+        def __iter__ (self):
+            return self
+
+        def next (self):
+            nodes = self.head.type.fields ()
+            # Check for further recursions in the inheritance tree.
+            if len (nodes) == 0:
+                raise StopIteration
+            # Check that this iteration has an expected structure.
+            if len (nodes) != 2:
+                raise ValueError, "Cannot parse more than 2 nodes in a tuple tree."
+
+            # - Left node is the next recursion parent.
+            # - Right node is the actual class contained in the tuple.
+
+            # Process right node.
+            impl = self.head.cast (nodes[1].type)
+
+            # Process left node and set it as head.
+            self.head  = self.head.cast (nodes[0].type)
+            self.count = self.count + 1
+
+            # Finally, check the implementation.  If it is
+            # wrapped in _M_head_impl return that, otherwise return
+            # the value "as is".
+            fields = impl.type.fields ()
+            if len (fields) < 1 or fields[0].name != "_M_head_impl":
+                return ('[%d]' % self.count, impl)
+            else:
+                return ('[%d]' % self.count, impl['_M_head_impl'])
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val;
+
+    def children (self):
+        return self._iterator (self.val)
+
+    def to_string (self):
+        return '%s containing' % (self.typename)
+
+class StdStackOrQueuePrinter:
+    "Print a std::stack or std::queue"
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.visualizer = gdb.default_visualizer(val['c'])
+
+    def children (self):
+        return self.visualizer.children()
+
+    def to_string (self):
+        return '%s wrapping: %s' % (self.typename,
+                                    self.visualizer.to_string())
+
+    def display_hint (self):
+        if hasattr (self.visualizer, 'display_hint'):
+            return self.visualizer.display_hint ()
+        return None
+
+class RbtreeIterator:
+    def __init__(self, rbtree):
+        self.size = rbtree['_M_t']['_M_impl']['_M_node_count']
+        self.node = rbtree['_M_t']['_M_impl']['_M_header']['_M_left']
+        self.count = 0
+
+    def __iter__(self):
+        return self
+
+    def __len__(self):
+        return int (self.size)
+
+    def next(self):
+        if self.count == self.size:
+            raise StopIteration
+        result = self.node
+        self.count = self.count + 1
+        if self.count < self.size:
+            # Compute the next node.
+            node = self.node
+            if node.dereference()['_M_right']:
+                node = node.dereference()['_M_right']
+                while node.dereference()['_M_left']:
+                    node = node.dereference()['_M_left']
+            else:
+                parent = node.dereference()['_M_parent']
+                while node == parent.dereference()['_M_right']:
+                    node = parent
+                    parent = parent.dereference()['_M_parent']
+                if node.dereference()['_M_right'] != parent:
+                    node = parent
+            self.node = node
+        return result
+
+# This is a pretty printer for std::_Rb_tree_iterator (which is
+# std::map::iterator), and has nothing to do with the RbtreeIterator
+# class above.
+class StdRbtreeIteratorPrinter:
+    "Print std::map::iterator"
+
+    def __init__ (self, val):
+        self.val = val
+
+    def to_string (self):
+        valuetype = self.val.type.template_argument(0)
+        nodetype = gdb.lookup_type('std::_Rb_tree_node < %s >' % valuetype)
+        nodetype = nodetype.pointer()
+        return self.val.cast(nodetype).dereference()['_M_value_field']
+
+class StdDebugIteratorPrinter:
+    "Print a debug enabled version of an iterator"
+
+    def __init__ (self, val):
+        self.val = val
+
+    # Just strip away the encapsulating __gnu_debug::_Safe_iterator
+    # and return the wrapped iterator value.
+    def to_string (self):
+        itype = self.val.type.template_argument(0)
+        return self.val['_M_current'].cast(itype)
+
+class StdMapPrinter:
+    "Print a std::map or std::multimap"
+
+    # Turn an RbtreeIterator into a pretty-print iterator.
+    class _iter:
+        def __init__(self, rbiter, type):
+            self.rbiter = rbiter
+            self.count = 0
+            self.type = type
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.count % 2 == 0:
+                n = self.rbiter.next()
+                n = n.cast(self.type).dereference()['_M_value_field']
+                self.pair = n
+                item = n['first']
+            else:
+                item = self.pair['second']
+            result = ('[%d]' % self.count, item)
+            self.count = self.count + 1
+            return result
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        return '%s with %d elements' % (self.typename,
+                                        len (RbtreeIterator (self.val)))
+
+    def children (self):
+        keytype = self.val.type.template_argument(0).const()
+        valuetype = self.val.type.template_argument(1)
+        nodetype = gdb.lookup_type('std::_Rb_tree_node< std::pair< %s, %s > >' % (keytype, valuetype))
+        nodetype = nodetype.pointer()
+        return self._iter (RbtreeIterator (self.val), nodetype)
+
+    def display_hint (self):
+        return 'map'
+
+class StdSetPrinter:
+    "Print a std::set or std::multiset"
+
+    # Turn an RbtreeIterator into a pretty-print iterator.
+    class _iter:
+        def __init__(self, rbiter, type):
+            self.rbiter = rbiter
+            self.count = 0
+            self.type = type
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            item = self.rbiter.next()
+            item = item.cast(self.type).dereference()['_M_value_field']
+            # FIXME: this is weird ... what to do?
+            # Maybe a 'set' display hint?
+            result = ('[%d]' % self.count, item)
+            self.count = self.count + 1
+            return result
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        return '%s with %d elements' % (self.typename,
+                                        len (RbtreeIterator (self.val)))
+
+    def children (self):
+        keytype = self.val.type.template_argument(0)
+        nodetype = gdb.lookup_type('std::_Rb_tree_node< %s >' % keytype).pointer()
+        return self._iter (RbtreeIterator (self.val), nodetype)
+
+class StdBitsetPrinter:
+    "Print a std::bitset"
+
+    def __init__(self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        # If template_argument handled values, we could print the
+        # size.  Or we could use a regexp on the type.
+        return '%s' % (self.typename)
+
+    def children (self):
+        words = self.val['_M_w']
+        wtype = words.type
+
+        # The _M_w member can be either an unsigned long, or an
+        # array.  This depends on the template specialization used.
+        # If it is a single long, convert to a single element list.
+        if wtype.code == gdb.TYPE_CODE_ARRAY:
+            tsize = wtype.target ().sizeof
+        else:
+            words = [words]
+            tsize = wtype.sizeof 
+
+        nwords = wtype.sizeof / tsize
+        result = []
+        byte = 0
+        while byte < nwords:
+            w = words[byte]
+            bit = 0
+            while w != 0:
+                if (w & 1) != 0:
+                    # Another spot where we could use 'set'?
+                    result.append(('[%d]' % (byte * tsize * 8 + bit), 1))
+                bit = bit + 1
+                w = w >> 1
+            byte = byte + 1
+        return result
+
+class StdDequePrinter:
+    "Print a std::deque"
+
+    class _iter:
+        def __init__(self, node, start, end, last, buffer_size):
+            self.node = node
+            self.p = start
+            self.end = end
+            self.last = last
+            self.buffer_size = buffer_size
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.p == self.last:
+                raise StopIteration
+
+            result = ('[%d]' % self.count, self.p.dereference())
+            self.count = self.count + 1
+
+            # Advance the 'cur' pointer.
+            self.p = self.p + 1
+            if self.p == self.end:
+                # If we got to the end of this bucket, move to the
+                # next bucket.
+                self.node = self.node + 1
+                self.p = self.node[0]
+                self.end = self.p + self.buffer_size
+
+            return result
+
+    def __init__(self, typename, val):
+        self.typename = typename
+        self.val = val
+        self.elttype = val.type.template_argument(0)
+        size = self.elttype.sizeof
+        if size < 512:
+            self.buffer_size = int (512 / size)
+        else:
+            self.buffer_size = 1
+
+    def to_string(self):
+        start = self.val['_M_impl']['_M_start']
+        end = self.val['_M_impl']['_M_finish']
+
+        delta_n = end['_M_node'] - start['_M_node'] - 1
+        delta_s = start['_M_last'] - start['_M_cur']
+        delta_e = end['_M_cur'] - end['_M_first']
+
+        size = self.buffer_size * delta_n + delta_s + delta_e
+
+        return '%s with %d elements' % (self.typename, long (size))
+
+    def children(self):
+        start = self.val['_M_impl']['_M_start']
+        end = self.val['_M_impl']['_M_finish']
+        return self._iter(start['_M_node'], start['_M_cur'], start['_M_last'],
+                          end['_M_cur'], self.buffer_size)
+
+    def display_hint (self):
+        return 'array'
+
+class StdDequeIteratorPrinter:
+    "Print std::deque::iterator"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        return self.val['_M_cur'].dereference()
+
+class StdStringPrinter:
+    "Print a std::basic_string of some kind"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        # Make sure &string works, too.
+        type = self.val.type
+        if type.code == gdb.TYPE_CODE_REF:
+            type = type.target ()
+
+        # Calculate the length of the string so that to_string returns
+        # the string according to length, not according to first null
+        # encountered.
+        ptr = self.val ['_M_dataplus']['_M_p']
+        realtype = type.unqualified ().strip_typedefs ()
+        reptype = gdb.lookup_type (str (realtype) + '::_Rep').pointer ()
+        header = ptr.cast(reptype) - 1
+        len = header.dereference ()['_M_length']
+        if hasattr(ptr, "lazy_string"):
+            return ptr.lazy_string (length = len)
+        return ptr.string (length = len)
+
+    def display_hint (self):
+        return 'string'
+
+class Tr1HashtableIterator:
+    def __init__ (self, hash):
+        self.count = 0
+        self.n_buckets = hash['_M_element_count']
+        if self.n_buckets == 0:
+            self.node = False
+        else:
+            self.bucket = hash['_M_buckets']
+            self.node = self.bucket[0]
+            self.update ()
+
+    def __iter__ (self):
+        return self
+
+    def update (self):
+        # If we advanced off the end of the chain, move to the next
+        # bucket.
+        while self.node == 0:
+            self.bucket = self.bucket + 1
+            self.node = self.bucket[0]
+
+       # If we advanced off the end of the bucket array, then
+       # we're done.
+        if self.count == self.n_buckets:
+            self.node = False
+        else:
+            self.count = self.count + 1
+
+    def next (self):
+        if not self.node:
+            raise StopIteration
+        result = self.node.dereference()['_M_v']
+        self.node = self.node.dereference()['_M_next']
+        self.update ()
+        return result
+
+class Tr1UnorderedSetPrinter:
+    "Print a tr1::unordered_set"
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        return '%s with %d elements' % (self.typename, self.val['_M_element_count'])
+
+    @staticmethod
+    def format_count (i):
+        return '[%d]' % i
+
+    def children (self):
+        counter = itertools.imap (self.format_count, itertools.count())
+        return itertools.izip (counter, Tr1HashtableIterator (self.val))
+
+class Tr1UnorderedMapPrinter:
+    "Print a tr1::unordered_map"
+
+    def __init__ (self, typename, val):
+        self.typename = typename
+        self.val = val
+
+    def to_string (self):
+        return '%s with %d elements' % (self.typename, self.val['_M_element_count'])
+
+    @staticmethod
+    def flatten (list):
+        for elt in list:
+            for i in elt:
+                yield i
+
+    @staticmethod
+    def format_one (elt):
+        return (elt['first'], elt['second'])
+
+    @staticmethod
+    def format_count (i):
+        return '[%d]' % i
+
+    def children (self):
+        counter = itertools.imap (self.format_count, itertools.count())
+        # Map over the hash table and flatten the result.
+        data = self.flatten (itertools.imap (self.format_one, Tr1HashtableIterator (self.val)))
+        # Zip the two iterators together.
+        return itertools.izip (counter, data)
+
+    def display_hint (self):
+        return 'map'
+
+def register_libstdcxx_printers (obj):
+    "Register libstdc++ pretty-printers with objfile Obj."
+
+    if obj == None:
+        obj = gdb
+
+    obj.pretty_printers.append (lookup_function)
+
+def lookup_function (val):
+    "Look-up and return a pretty-printer that can print val."
+
+    # Get the type.
+    type = val.type
+
+    # If it points to a reference, get the reference.
+    if type.code == gdb.TYPE_CODE_REF:
+        type = type.target ()
+
+    # Get the unqualified type, stripped of typedefs.
+    type = type.unqualified ().strip_typedefs ()
+
+    # Get the type name.    
+    typename = type.tag
+    if typename == None:
+        return None
+
+    # Iterate over local dictionary of types to determine
+    # if a printer is registered for that type.  Return an
+    # instantiation of the printer if found.
+    for function in pretty_printers_dict:
+        if function.search (typename):
+            return pretty_printers_dict[function] (val)
+        
+    # Cannot find a pretty printer.  Return None.
+    return None
+
+def build_libstdcxx_dictionary ():
+    # libstdc++ objects requiring pretty-printing.
+    # In order from:
+    # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html
+    pretty_printers_dict[re.compile('^std::basic_string<.*>$')] = lambda val: StdStringPrinter(val)
+    pretty_printers_dict[re.compile('^std::bitset<.*>$')] = lambda val: StdBitsetPrinter("std::bitset", val)
+    pretty_printers_dict[re.compile('^std::deque<.*>$')] = lambda val: StdDequePrinter("std::deque", val)
+    pretty_printers_dict[re.compile('^std::list<.*>$')] = lambda val: StdListPrinter("std::list", val)
+    pretty_printers_dict[re.compile('^std::map<.*>$')] = lambda val: StdMapPrinter("std::map", val)
+    pretty_printers_dict[re.compile('^std::multimap<.*>$')] = lambda val: StdMapPrinter("std::multimap", val)
+    pretty_printers_dict[re.compile('^std::multiset<.*>$')] = lambda val: StdSetPrinter("std::multiset", val)
+    pretty_printers_dict[re.compile('^std::priority_queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::priority_queue", val)
+    pretty_printers_dict[re.compile('^std::queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::queue", val)
+    pretty_printers_dict[re.compile('^std::tuple<.*>$')] = lambda val: StdTuplePrinter("std::tuple", val)
+    pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val)
+    pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val)
+    pretty_printers_dict[re.compile('^std::unique_ptr<.*>$')] = UniquePointerPrinter
+    pretty_printers_dict[re.compile('^std::vector<.*>$')] = lambda val: StdVectorPrinter("std::vector", val)
+    # vector<bool>
+
+    # Printer registrations for classes compiled with -D_GLIBCXX_DEBUG.
+    pretty_printers_dict[re.compile('^std::__debug::bitset<.*>$')] = lambda val: StdBitsetPrinter("std::__debug::bitset", val)
+    pretty_printers_dict[re.compile('^std::__debug::deque<.*>$')] = lambda val: StdDequePrinter("std::__debug::deque", val)
+    pretty_printers_dict[re.compile('^std::__debug::list<.*>$')] = lambda val: StdListPrinter("std::__debug::list", val)
+    pretty_printers_dict[re.compile('^std::__debug::map<.*>$')] = lambda val: StdMapPrinter("std::__debug::map", val)
+    pretty_printers_dict[re.compile('^std::__debug::multimap<.*>$')] = lambda val: StdMapPrinter("std::__debug::multimap", val)
+    pretty_printers_dict[re.compile('^std::__debug::multiset<.*>$')] = lambda val: StdSetPrinter("std::__debug::multiset", val)
+    pretty_printers_dict[re.compile('^std::__debug::priority_queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::__debug::priority_queue", val)
+    pretty_printers_dict[re.compile('^std::__debug::queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::__debug::queue", val)
+    pretty_printers_dict[re.compile('^std::__debug::set<.*>$')] = lambda val: StdSetPrinter("std::__debug::set", val)
+    pretty_printers_dict[re.compile('^std::__debug::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::__debug::stack", val)
+    pretty_printers_dict[re.compile('^std::__debug::unique_ptr<.*>$')] = UniquePointerPrinter
+    pretty_printers_dict[re.compile('^std::__debug::vector<.*>$')] = lambda val: StdVectorPrinter("std::__debug::vector", val)
+
+    # These are the TR1 and C++0x printers.
+    # For array - the default GDB pretty-printer seems reasonable.
+    pretty_printers_dict[re.compile('^std::shared_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::shared_ptr', val)
+    pretty_printers_dict[re.compile('^std::weak_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::weak_ptr', val)
+    pretty_printers_dict[re.compile('^std::unordered_map<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::unordered_map', val)
+    pretty_printers_dict[re.compile('^std::unordered_set<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::unordered_set', val)
+    pretty_printers_dict[re.compile('^std::unordered_multimap<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::unordered_multimap', val)
+    pretty_printers_dict[re.compile('^std::unordered_multiset<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::unordered_multiset', val)
+
+    pretty_printers_dict[re.compile('^std::tr1::shared_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::tr1::shared_ptr', val)
+    pretty_printers_dict[re.compile('^std::tr1::weak_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::tr1::weak_ptr', val)
+    pretty_printers_dict[re.compile('^std::tr1::unordered_map<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_map', val)
+    pretty_printers_dict[re.compile('^std::tr1::unordered_set<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_set', val)
+    pretty_printers_dict[re.compile('^std::tr1::unordered_multimap<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_multimap', val)
+    pretty_printers_dict[re.compile('^std::tr1::unordered_multiset<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_multiset', val)
+
+    # These are the C++0x printer registrations for -D_GLIBCXX_DEBUG cases.
+    # The tr1 namespace printers do not seem to have any debug
+    # equivalents, so do no register them.
+    pretty_printers_dict[re.compile('^std::__debug::unordered_map<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::__debug::unordered_map', val)
+    pretty_printers_dict[re.compile('^std::__debug::unordered_set<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::__debug::unordered_set', val)
+    pretty_printers_dict[re.compile('^std::__debug::unordered_multimap<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::__debug::unordered_multimap',  val)
+    pretty_printers_dict[re.compile('^std::__debug::unordered_multiset<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::__debug:unordered_multiset', val)
+
+
+    # Extensions.
+    pretty_printers_dict[re.compile('^__gnu_cxx::slist<.*>$')] = StdSlistPrinter
+
+    if True:
+        # These shouldn't be necessary, if GDB "print *i" worked.
+        # But it often doesn't, so here they are.
+        pretty_printers_dict[re.compile('^std::_List_iterator<.*>$')] = lambda val: StdListIteratorPrinter("std::_List_iterator",val)
+        pretty_printers_dict[re.compile('^std::_List_const_iterator<.*>$')] = lambda val: StdListIteratorPrinter("std::_List_const_iterator",val)
+        pretty_printers_dict[re.compile('^std::_Rb_tree_iterator<.*>$')] = lambda val: StdRbtreeIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^std::_Rb_tree_const_iterator<.*>$')] = lambda val: StdRbtreeIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^std::_Deque_iterator<.*>$')] = lambda val: StdDequeIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^std::_Deque_const_iterator<.*>$')] = lambda val: StdDequeIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^__gnu_cxx::__normal_iterator<.*>$')] = lambda val: StdVectorIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^__gnu_cxx::_Slist_iterator<.*>$')] = lambda val: StdSlistIteratorPrinter(val)
+
+        # Debug (compiled with -D_GLIBCXX_DEBUG) printer registrations.
+        # The Rb_tree debug iterator when unwrapped from the encapsulating __gnu_debug::_Safe_iterator
+        # does not have the __norm namespace. Just use the existing printer registration for that.
+        pretty_printers_dict[re.compile('^__gnu_debug::_Safe_iterator<.*>$')] = lambda val: StdDebugIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^std::__norm::_List_iterator<.*>$')] = lambda val: StdListIteratorPrinter ("std::__norm::_List_iterator",val)
+        pretty_printers_dict[re.compile('^std::__norm::_List_const_iterator<.*>$')] = lambda val: StdListIteratorPrinter ("std::__norm::_List_const_iterator",val)
+        pretty_printers_dict[re.compile('^std::__norm::_Deque_const_iterator<.*>$')] = lambda val: StdDequeIteratorPrinter(val)
+        pretty_printers_dict[re.compile('^std::__norm::_Deque_iterator<.*>$')] = lambda val: StdDequeIteratorPrinter(val)
+
+pretty_printers_dict = {}
+
+build_libstdcxx_dictionary ()
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_compile b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_compile
new file mode 100755
index 000000000..76762e675
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_compile
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# Script to do performance testing.
+
+# Invocation 
+# check_performance SRC_DIR BUILD_DIR
+
+# 1: variables
+#
+SRC_DIR=$1
+BUILD_DIR=$2
+
+# Now that we've successfully translated the numerical option into
+# a symbolic one, we can safely ignore it.
+shift
+
+# This has been true all along.  Found out about it the hard way...
+case $BASH_VERSION in
+    1*)  
+	echo 'You need bash 2.x to run check_performance.  Exiting.'; 
+	exit 1 ;;
+    *)   ;;  
+esac
+
+flags_script=$BUILD_DIR/scripts/testsuite_flags
+INCLUDES=`$flags_script --build-includes`
+PCH_FLAGS=`$flags_script --cxxpchflags`
+FLAGS=`$flags_script --cxxflags`
+TEST_FLAGS="-S"
+COMPILER=`$flags_script --build-cxx`
+CXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS -Wfatal-errors $TEST_FLAGS"
+
+echo "compile line is:"
+echo $CXX
+echo ""
+
+TESTS_FILE="testsuite_files"
+
+#mkdir binaries
+UNIQUE_ID=0
+
+for NAME in `cat $TESTS_FILE`
+do
+  if $RUN; then
+    echo $NAME
+    OUTPUT_NAME=$UNIQUE_ID
+    $CXX $SRC_DIR/testsuite/$NAME -o $OUTPUT_NAME
+    if [ -f $OUTPUT_NAME ]; then
+#	mv $OUTPUT_NAME binaries
+	rm $OUTPUT_NAME
+    fi
+    let UNIQUE_ID+=1 
+  fi
+done
+
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_performance b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_performance
new file mode 100755
index 000000000..d196355bd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/check_performance
@@ -0,0 +1,95 @@
+#!/usr/bin/env bash
+
+# Script to do performance testing.
+
+# Invocation 
+# check_performance SRC_DIR BUILD_DIR
+
+# 1: variables
+#
+SRC_DIR=$1
+BUILD_DIR=$2
+
+# Now that we've successfully translated the numerical option into
+# a symbolic one, we can safely ignore it.
+shift
+
+# This has been true all along.  Found out about it the hard way...
+case $BASH_VERSION in
+    1*)  
+	echo 'You need bash 2.x to run check_performance.  Exiting.'; 
+	exit 1 ;;
+    *)   ;;  
+esac
+
+flags_script=$BUILD_DIR/scripts/testsuite_flags
+INCLUDES=`$flags_script --build-includes`
+PCH_FLAGS=`$flags_script --cxxpchflags`
+FLAGS=`$flags_script --cxxflags`
+THREAD_FLAG='-pthread'
+COMPILER=`$flags_script --build-cxx`
+SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \
+         -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
+ST_FLAG="-static"
+LINK=$SH_FLAG
+CXX="$COMPILER $INCLUDES $FLAGS -std=gnu++0x $CXXFLAGS $LINK"
+LIBS="./libtestc++.a"
+TESTS_FILE="testsuite_files_performance"
+
+echo CXX is $CXX
+
+for NAME in `cat $TESTS_FILE`
+do
+  RUN=true
+  TESTNAME=$SRC_DIR/testsuite/$NAME
+  FILE_NAME="`basename $NAME`"
+  FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`"
+
+  # TEST_S == single thread
+  # TEST_B == do both single and multi-thread
+  # TEST_T == multi-thread
+  for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME`
+  do
+    RUN=false
+    echo $NAME $CYCLE
+    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
+    $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME
+    if [ -f $EXE_NAME ]; then
+      ./$EXE_NAME
+    else
+      echo "compile error:"
+      echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME"
+    fi
+  done
+
+  for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME`
+  do
+    RUN=false
+    echo $NAME $CYCLE thread
+    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
+    $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME
+    if [ -f $EXE_NAME ]; then
+      ./$EXE_NAME
+    else
+      echo "compile error:"
+      echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME"
+    fi
+  done
+
+  if $RUN; then
+    echo $NAME
+    EXE_NAME="`echo $FILE_NAME.exe`"
+    $CXX $TESTNAME $LIBS -o $EXE_NAME
+    if [ -f $EXE_NAME ]; then
+      ./$EXE_NAME >& tmp.$FILE_NAME
+    else
+      echo "compile error:"
+      echo "$CXX $TESTNAME $LIBS -o $EXE_NAME"
+    fi
+    if [ -s tmp.$FILE_NAME ]; then
+	mv tmp.$FILE_NAME $FILE_NAME.xml
+    fi
+  fi
+done
+
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/create_testsuite_files b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/create_testsuite_files
new file mode 100755
index 000000000..f4a0bcd80
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/create_testsuite_files
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Constructs lists of source files (full pathnames) to test.  Two
+# files are constructed: testsuite_files, which is used to test with
+# the default dg-runtest command, and testsuite_files_interactive,
+# which is used to test cases that require input to be entered. In
+# addition, both lists are pruned of wchar_t tests if the toolchain
+# under test does not support wchar_t functionality.
+#
+# We mimic the mkcheck script in that the first time this is run, all
+# existing files are listed in "testsuite_files" in the output
+# directory.  Subsequent runs pull the list from that file, allowing
+# users to trim the list down to problematic tests, or just run
+# paticular directories or sub-directories of tests.
+#
+# Selecting individual tests can also be done with RUNTESTFLAGS, but
+# that doesn't really do all that we are trying to accomplish here.
+
+LC_ALL=C
+export LC_ALL
+
+# Both of these are in the appropriate testsuite subdirectories.
+srcdir="$1"
+outdir="$2"
+
+tmp="${TMPDIR:-/tmp}/ctt$$"
+tests_file_normal="$outdir/testsuite_files"
+tests_file_inter="$outdir/testsuite_files_interactive"
+tests_file_perf="$outdir/testsuite_files_performance"
+
+cd $srcdir
+# This is the ugly version of "everything but the current directory".  It's
+# what has to happen when find(1) doesn't support -mindepth, or -xtype.
+dlist=`echo [0-9][0-9]*`
+dlist="$dlist abi backward ext performance tr1 decimal"
+find $dlist "(" -type f -o -type l ")" -name "*.cc" -print > $tmp.01
+find $dlist "(" -type f -o -type l ")" -name "*.c" -print > $tmp.02
+cat  $tmp.01 $tmp.02 | sort > $tmp.1
+if test ! -s "$tmp.1"; then
+  exit 1
+fi
+
+# Now filter out classes of tests.  These classes are run using special rules.
+grep _xin $tmp.1 > $tests_file_inter
+grep -v _xin $tmp.1 > $tmp.4
+
+grep performance $tmp.4 > $tests_file_perf
+grep -v performance $tmp.4 > $tmp.5
+
+# ...more filters go here.
+cp $tmp.5 $tests_file_normal
+
+rm $tmp*
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.in
new file mode 100755
index 000000000..a2ff3c40a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.in
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# Copyright (C) 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU ISO C++ Library.  This library is free
+# software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this library; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+
+if test ${#} -lt 2 || test $1 = '--help'; then
+  echo "Usage:  extract_symvers  shared_lib output_file" 1>&2
+  exit 1
+fi
+
+lib=$1
+output=$2
+
+# This avoids weird sorting problems later.
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+tmp=extract.$$
+
+case `uname -s` in
+SunOS)
+  # Ensure that output on Solaris 2 matches readelf below without requiring
+  # GNU binutils to be installed.  This requires a combination of pvs and
+  # elfdump, which is easier handled in a perl script.
+  perl @glibcxx_srcdir@/scripts/extract_symvers.pl ${lib} > $tmp 2>&1
+  ;;
+*)
+  # GNU binutils, somewhere after version 2.11.2, requires -W/--wide to
+  # avoid default line truncation.  -W is not supported and truncation did
+  # not occur by default before that point.
+  readelf="readelf --symbols"
+  if readelf --help | grep -- --wide > /dev/null; then
+    readelf="$readelf --wide"
+  fi
+  ${readelf} ${lib} |\
+  sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\
+  egrep -v ' (LOCAL|UND) ' |\
+  awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
+           printf "%s:%s\n", $4, $8;
+         else if ($4 == "OBJECT" || $4 == "TLS")
+           printf "%s:%s:%s\n", $4, $3, $8;
+       }' | sort | uniq > $tmp 2>&1
+#        else printf "Huh?  What is %s?\n", $8;
+  ;;
+esac
+
+# I think we'll be doing some more with this file, but for now, dump.
+mv $tmp $output
+
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.pl b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.pl
new file mode 100644
index 000000000..2bac1cd56
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/extract_symvers.pl
@@ -0,0 +1,127 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU ISO C++ Library.  This library is free
+# software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this library; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Extract symbol version information on Solaris 2.
+#
+# Sun ld doesn't record symbol versions in .dynsym entries and they cannot
+# easily be extracted from readelf --versions output, so use pvs instead.
+# This way, we don't require GNU binutils in the native case.  Also ensures
+# that baseline_symbols.txt is identical between native (pvs, elfdump) and
+# cross (readelf) cases.
+
+my $lib = shift;
+
+open PVS, "pvs -dsvo $lib |" or die $!;
+while (<PVS>) {
+    chomp;
+
+    # Remove trailing semicolon.
+    s/;$//;
+
+    # shared object, dash, version, symbol, [size]
+    (undef, undef, $version, $symbol, $size) = split;
+
+    # Remove colon separator from version field.
+    $version =~ s/:$//;
+    
+    # Record base version.  The [BASE] field was only added in Solaris 11,
+    # so simply use the first record instead.
+    if ($. == 1) {
+	$basever = $version;
+      	next;
+    }
+
+    # Skip version declarations.
+    next unless defined ($symbol);
+
+    # Ignore version dependencies.
+    next if ($symbol =~ /\{.*\}/);
+
+    # Emit objects.
+    if (defined ($size)) {
+	# Strip parens from object size.
+	$size =~ s/\((\d+)\)/$1/;
+
+	$type{$symbol} = "OBJECT";
+	$version{$symbol} = $version;
+	$size{$symbol} = $size;
+        next;
+    }
+
+    if ($version eq $symbol or $version eq $basever) {
+	# Emit versions or symbols bound to base versions as objects.
+	$type{$symbol} = "OBJECT";
+	$version{$symbol} = $symbol;
+	$size{$symbol} = 0;
+    } else {
+	# Everything else without a size field is a function.
+	$type{$symbol} = "FUNC";
+	$version{$symbol} = $version;
+    }
+}
+close PVS or die "pvs error";
+
+# Only look at .dynsym table, like readelf in extract_symvers.
+open ELFDUMP, "/usr/ccs/bin/elfdump -s -N .dynsym $lib |" or die $!;
+while (<ELFDUMP>) {
+    chomp;
+
+    # Ignore empty lines.
+    next if (/^$/);
+
+    # Ignore object name header.
+    next if (/:$/);
+
+    # Ignore table header lines.
+    next if (/^Symbol Table Section:/);
+    next if (/index.*value.*size/);
+
+    # Split table.
+    (undef, undef, undef, $type, $bind, $oth, undef, $shndx, $name) = split;
+
+    # Error out for unknown input.
+    die "unknown input line:\n$_" unless defined($bind);
+
+    # Ignore local symbols.
+    next if ($bind eq "LOCL");
+    # Ignore hidden symbols.
+    next if ($oth eq "H");
+    # Ignore undefined symbols.
+    next if ($shndx eq "UNDEF");
+    # Error out for unhandled cases.   _GLOBAL_OFFSET_TABLE_ is P (protected).
+    die "unhandled symbol:\n$_" if ($bind !~ /^(GLOB|WEAK)/ or $oth !~ /[DP]/);
+
+    # Adapt to readelf type naming convention.
+    $type = "OBJECT" if ($type eq "OBJT");
+
+    # Use correct symbol type.
+    $type{$name} = $type if ($type{$name} ne $type);
+}
+close ELFDUMP or die "elfdump error";
+
+foreach $symbol (keys %type) {
+    if ($type{$symbol} eq "FUNC") {
+	push @lines, "$type{$symbol}:$symbol\@\@$version{$symbol}\n";
+    } elsif ($type{$symbol} eq "OBJECT" and $size{$symbol} == 0) {
+	push @lines, "$type{$symbol}:$size{$symbol}:$version{$symbol}\n";
+    } else {
+	push @lines, "$type{$symbol}:$size{$symbol}:$symbol\@\@$version{$symbol}\n";
+    }
+}
+print sort @lines;
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_bind_includers.pl b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_bind_includers.pl
new file mode 100644
index 000000000..52b11d283
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_bind_includers.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/perl -w
+use English;
+
+$max = shift @ARGV;
+
+$template_params = "typename _U1";
+$template_args = "_U1";
+$params = "_U1& __u1";
+$args = "__u1";
+
+for ($num_args = 2; $num_args <= $max; ++$num_args) {
+  $template_params .= ", typename _U$num_args";
+  $template_args .= ", _U$num_args";
+  $params .= ", _U$num_args& __u$num_args";
+  $args .= ", __u$num_args";
+  print "#define _GLIBCXX_BIND_NUM_ARGS $num_args\n";
+  print "#define _GLIBCXX_BIND_COMMA ,\n";
+  print "#define _GLIBCXX_BIND_TEMPLATE_PARAMS $template_params\n";
+  print "#define _GLIBCXX_BIND_TEMPLATE_ARGS $template_args\n";
+  print "#define _GLIBCXX_BIND_PARAMS $params\n";
+  print "#define _GLIBCXX_BIND_ARGS $args\n";
+  print "#include _GLIBCXX_BIND_REPEAT_HEADER\n";
+  print "#undef _GLIBCXX_BIND_ARGS\n";
+  print "#undef _GLIBCXX_BIND_PARAMS\n";
+  print "#undef _GLIBCXX_BIND_TEMPLATE_ARGS\n";
+  print "#undef _GLIBCXX_BIND_TEMPLATE_PARAMS\n";
+  print "#undef _GLIBCXX_BIND_COMMA\n";
+  print "#undef _GLIBCXX_BIND_NUM_ARGS\n";
+  print "\n";
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers.pl b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers.pl
new file mode 100644
index 000000000..477f02840
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers.pl
@@ -0,0 +1,126 @@
+#!/usr/bin/perl -w
+use English;
+
+$max = shift @ARGV;
+
+$template_params = "typename _T1";
+$template_params_unnamed = "typename";
+$template_args = "_T1";
+$params = "_T1 __a1";
+$ref_params = "_T1& __a1";
+$args = "__a1";
+$bind_members = "_T1 _M_arg1;";
+$bind_members_init = "_M_arg1(__a1)";
+$mu_get_tuple_args = "::std::tr1::get<0>(__tuple)";
+$bind_v_template_args = "typename result_of<_Mu<_T1> _CV(_T1, tuple<_GLIBCXX_BIND_TEMPLATE_ARGS>)>::type";
+$bind_v_args = "_Mu<_T1>()(_M_arg1, ::std::tr1::tie(_GLIBCXX_BIND_ARGS))";
+$tuple_add_cref = "typename __add_c_ref<_T1>::type __a1";
+$tuple_copy_init = "_M_arg1(__in._M_arg1)";
+$tuple_assign = "_M_arg1 = __in._M_arg1;";
+$template_params_null_class = "typename _T1 = _NullClass";
+$template_args_stripped = "typename __strip_reference_wrapper<_T1>::__type";
+$template_params_u = "typename _U1";
+$template_args_u = "_U1";
+$ref_wrap_params = "ref(__a1)";
+$ref_template_args = "_T1&";
+for ($num_args = 2; $num_args <= $max; ++$num_args) {
+  $prev_args = $num_args - 1;
+  $next_args = $num_args + 1;
+  $template_params_shifted = $template_params;
+  $template_args_shifted = $template_args;
+  $params_shifted = $params;
+  $args_shifted = $args;
+  $template_params .= ", typename _T$num_args";
+  $template_params_unnamed .= ", typename";
+  $template_args .= ", _T$num_args";
+  $params .= ", _T$num_args __a$num_args";
+  $ref_params .=", _T$num_args& __a$num_args";
+  $args .= ", __a$num_args";
+  $bind_members .= " _T$num_args _M_arg$num_args;";
+  $bind_members_init .= ", _M_arg$num_args(__a$num_args)";
+  $mu_get_tuple_args .= ", ::std::tr1::get<$prev_args>(__tuple)";
+  $bind_v_template_args .= ", typename result_of<_Mu<_T$num_args> _CV(_T$num_args, tuple<_GLIBCXX_BIND_TEMPLATE_ARGS>)>::type";
+  $bind_v_args .= ", _Mu<_T$num_args>()(_M_arg$num_args, ::std::tr1::tie(_GLIBCXX_BIND_ARGS))";
+  $tuple_add_cref .= ", typename __add_c_ref<_T$num_args>::type __a$num_args";
+  $tuple_copy_init .= ", _M_arg$num_args(__in._M_arg$num_args)";
+  $tuple_assign .= " _M_arg$num_args = __in._M_arg$num_args;";
+  $template_params_null_class .= ", typename _T$num_args = _NullClass";
+  $template_args_stripped .= ", typename __strip_reference_wrapper<_T$num_args>::__type";
+  $template_params_u .= ", typename _U$num_args";
+  $template_args_u .= ", _U$num_args";
+  $ref_wrap_params .= ", ref(__a$num_args)";
+  $ref_template_args .= ", _T$num_args&";
+
+  if ($num_args == $max) {
+    print "#define _GLIBCXX_LAST_INCLUDE\n"
+  }
+  print "#define _GLIBCXX_NUM_ARGS $num_args\n";
+  print "#define _GLIBCXX_COMMA ,\n";
+  print "#define _GLIBCXX_TEMPLATE_PARAMS $template_params\n";
+  print "#define _GLIBCXX_TEMPLATE_ARGS $template_args\n";
+  print "#define _GLIBCXX_PARAMS $params\n";
+  print "#define _GLIBCXX_REF_PARAMS $ref_params\n";
+  print "#define _GLIBCXX_ARGS $args\n";
+  print "#define _GLIBCXX_COMMA_SHIFTED ,\n";
+  print "#define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED $template_params_shifted\n";
+  print "#define _GLIBCXX_TEMPLATE_ARGS_SHIFTED $template_args_shifted\n";
+  print "#define _GLIBCXX_PARAMS_SHIFTED $params_shifted\n";
+  print "#define _GLIBCXX_ARGS_SHIFTED $args_shifted\n";
+  print "#define _GLIBCXX_BIND_MEMBERS $bind_members\n";
+  print "#define _GLIBCXX_BIND_MEMBERS_INIT $bind_members_init\n";
+  print "#define _GLIBCXX_MU_GET_TUPLE_ARGS $mu_get_tuple_args\n";
+  print "#define _GLIBCXX_BIND_V_TEMPLATE_ARGS(_CV) $bind_v_template_args\n";
+  print "#define _GLIBCXX_BIND_V_ARGS $bind_v_args\n";
+  print "#define _GLIBCXX_TUPLE_ADD_CREF $tuple_add_cref\n";
+  print "#define _GLIBCXX_TUPLE_COPY_INIT $tuple_copy_init\n";
+  print "#define _GLIBCXX_TUPLE_ASSIGN $tuple_assign\n";
+  print "#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS $template_params_null_class\n";
+  print "#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED $template_args_stripped\n";
+  print "#define _GLIBCXX_TEMPLATE_PARAMS_U $template_params_u\n";
+  print "#define _GLIBCXX_TEMPLATE_ARGS_U $template_args_u\n";
+  print "#define _GLIBCXX_REF_WRAP_PARAMS $ref_wrap_params\n";
+  print "#define _GLIBCXX_REF_TEMPLATE_ARGS $ref_template_args\n";
+  print "#define _GLIBCXX_NUM_ARGS_PLUS_1 $next_args\n";
+  print "#define _GLIBCXX_T_NUM_ARGS_PLUS_1 _T$next_args\n";
+  print "#include _GLIBCXX_REPEAT_HEADER\n";
+  print "#undef _GLIBCXX_T_NUM_ARGS_PLUS_1\n";
+  print "#undef _GLIBCXX_NUM_ARGS_PLUS_1\n";
+  print "#undef _GLIBCXX_REF_TEMPLATE_ARGS\n";
+  print "#undef _GLIBCXX_REF_WRAP_PARAMS\n";
+  print "#undef _GLIBCXX_TEMPLATE_ARGS_U\n";
+  print "#undef _GLIBCXX_TEMPLATE_PARAMS_U\n";
+  print "#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED\n";
+  print "#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS\n";
+  print "#undef _GLIBCXX_TUPLE_ASSIGN\n";
+  print "#undef _GLIBCXX_TUPLE_COPY_INIT\n";
+  print "#undef _GLIBCXX_TUPLE_ADD_CREF\n";
+  print "#undef _GLIBCXX_BIND_V_ARGS\n";
+  print "#undef _GLIBCXX_BIND_V_TEMPLATE_ARGS\n";
+  print "#undef _GLIBCXX_MU_GET_TUPLE_ARGS\n";
+  print "#undef _GLIBCXX_BIND_MEMBERS_INIT\n";
+  print "#undef _GLIBCXX_BIND_MEMBERS\n";
+  print "#undef _GLIBCXX_ARGS_SHIFTED\n";
+  print "#undef _GLIBCXX_PARAMS_SHIFTED\n";
+  print "#undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED\n";
+  print "#undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED\n";
+  print "#undef _GLIBCXX_COMMA_SHIFTED\n";
+  print "#undef _GLIBCXX_ARGS\n";
+  print "#undef _GLIBCXX_REF_PARAMS\n";
+  print "#undef _GLIBCXX_PARAMS\n";
+  print "#undef _GLIBCXX_TEMPLATE_ARGS\n";
+  print "#undef _GLIBCXX_TEMPLATE_PARAMS\n";
+  print "#undef _GLIBCXX_COMMA\n";
+  print "#undef _GLIBCXX_NUM_ARGS\n";
+  if ($num_args == $max) {
+    print "#undef _GLIBCXX_LAST_INCLUDE\n"
+  }
+}
+
+print "\n";
+print "#ifndef _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS\n";
+print "#  define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS $template_params\n";
+print "#  define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED $template_params_unnamed\n";
+print "#  define _GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS $template_args\n";
+print "#endif\n";
+print "\n";
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers2.pl b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers2.pl
new file mode 100644
index 000000000..88e9becd1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/gen_includers2.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+use English;
+
+$max = shift @ARGV;
+
+$template_params = "typename _U1";
+$template_args = "_U1";
+$params = "_U1& __u1";
+$args = "__u1";
+
+for ($num_args = 2; $num_args <= $max; ++$num_args) {
+  $template_params .= ", typename _U$num_args";
+  $template_args .= ", _U$num_args";
+  $params .= ", _U$num_args& __u$num_args";
+  $args .= ", __u$num_args";
+  print "#define _GLIBCXX_BIND_NUM_ARGS $num_args\n";
+  print "#define _GLIBCXX_BIND_COMMA ,\n";
+  print "#define _GLIBCXX_BIND_TEMPLATE_PARAMS $template_params\n";
+  print "#define _GLIBCXX_BIND_TEMPLATE_ARGS $template_args\n";
+  print "#define _GLIBCXX_BIND_PARAMS $params\n";
+  print "#define _GLIBCXX_BIND_ARGS $args\n";
+  print "#include _GLIBCXX_BIND_REPEAT_HEADER\n";
+  print "#undef _GLIBCXX_BIND_ARGS\n";
+  print "#undef _GLIBCXX_BIND_PARAMS\n";
+  print "#undef _GLIBCXX_BIND_TEMPLATE_ARGS\n";
+  print "#undef _GLIBCXX_BIND_TEMPLATE_PARAMS\n";
+  print "#undef _GLIBCXX_BIND_COMMA\n";
+  print "#undef _GLIBCXX_BIND_NUM_ARGS\n";
+  print "\n";
+}
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_exports.pl b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_exports.pl
new file mode 100644
index 000000000..7c9e4e31d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_exports.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl -w
+
+# This script takes two arguments, a version script and a dynamic library
+# (in that order), and prints a list of symbols to be exported from the
+# library.
+# It expects a 'nm' with the POSIX '-P' option, but everyone has one of
+# those, right?  It also expects that symbol names have a leading underscore,
+# which is somewhat less likely.
+
+use File::Glob ':glob';
+use FileHandle;
+use IPC::Open2;
+
+# The glob patterns that are to be applied to the demangled name
+my @cxx_globs = ();
+# The glob patterns that apply directly to the name in the .o files
+my @globs = ();
+# The patterns for local variables (usually just '*').
+my @ignored = ();
+
+##########
+# Fill in the various glob arrays.
+
+# The next pattern will go into this array.
+my $glob = \@globs;
+my $symvers = shift;
+
+open F,$symvers or die $!;
+
+while (<F>) {
+    chomp;
+    # Lines of the form '} SOME_VERSION_NAME_1.0;'
+    if (/^[ \t]*\}[ \tA-Z0-9_.a-z]*;[ \t]*$/) {
+      $glob = \@globs;
+      next;
+    }
+    # Comment and blank lines
+    next if (/^[ \t]*\#/);
+    next if (/^[ \t]*$/);
+    # Lines of the form 'SOME_VERSION_NAME_1.1 {'
+    next if (/^[A-Z0-9_. \t]*{$/);
+    # Ignore 'global:'
+    next if (/^[ \t]*global:$/);
+    # After 'local:', globs should be ignored, they won't be exported.
+    if (/^[ \t]*local:$/) {
+	$glob = \@ignored;
+	next;
+    }
+    # After 'extern "C++"', globs are C++ patterns
+    if (/^[ \t]*extern \"C\+\+\"[ \t]*$/) {
+	$glob = \@cxx_globs;
+	next;
+    }
+    # Catch globs.  Note that '{}' is not allowed in globs by this script,
+    # so only '*' and '[]' are available.
+    if (/^[ \t]*([^ \t;{}#]+);?[ \t]*$/) {
+	my $ptn = $1;
+	# Turn the glob into a regex by replacing '*' with '.*'.
+	$ptn =~ s/\*/\.\*/g;
+	push @$glob,$ptn;
+	next;
+    }
+    # Important sanity check.  This script can't handle lots of formats
+    # that GNU ld can, so be sure to error out if one is seen!
+    die "strange line `$_'";
+}
+close F;
+
+# Make 'if (1)' for debugging.
+if (0) {
+    print "cxx:\n";
+    (printf "%s\n",$_) foreach (@cxx_globs);
+    print "globs:\n";
+    (printf "%s\n", $_) foreach (@globs);
+    print "ignored:\n";
+    (printf "%s\n", $_) foreach (@ignored);
+}
+
+##########
+# Combine the arrays into single regular expressions
+# This cuts the time required from about 30 seconds to about 0.5 seconds.
+
+my $glob_regex = '^_(' . (join '|',@globs) . ')$';
+my $cxx_regex = (join '|',@cxx_globs);
+
+##########
+# Get all the symbols from the library, match them, and add them to a hash.
+
+my %export_hash = ();
+my $nm = $ENV{'NM_FOR_TARGET'} || "nm";
+# Process each symbol.
+print STDERR $nm.' -P '.(join ' ',@ARGV).'|';
+open NM,$nm.' -P '.(join ' ',@ARGV).'|' or die $!;
+# Talk to c++filt through a pair of file descriptors.
+open2(*FILTIN, *FILTOUT, "c++filt -_") or die $!;
+NAME: while (<NM>) {
+    my $i;
+    chomp;
+
+    # nm prints out stuff at the start, ignore it.
+    next if (/^$/);
+    next if (/:$/);
+    # Ignore undefined and local symbols.
+    next if (/^([^ ]+) [Ua-z] /);
+
+    # $sym is the name of the symbol, $noeh_sym is the same thing with
+    # any '.eh' suffix removed.
+    die "unknown nm output $_" if (! /^([^ ]+) [A-Z] /);
+    my $sym = $1;
+    my $noeh_sym = $sym;
+    $noeh_sym =~ s/\.eh$//;
+
+    # Maybe it matches one of the patterns based on the symbol in the .o file.
+    if ($noeh_sym =~ /$glob_regex/) {
+        $export_hash{$sym} = 1;
+	next NAME;
+    }
+
+    # No?  Well, maybe its demangled form matches one of those patterns.
+    printf FILTOUT "%s\n",$noeh_sym;
+    my $dem = <FILTIN>;
+    chomp $dem;
+    if ($dem =~ /$cxx_regex/) {
+        $export_hash{$sym} = 2;
+	next NAME;
+    }
+
+    # No?  Well, then ignore it.
+}
+close NM or die "nm error";
+close FILTOUT or die "c++filt error";
+close FILTIN or die "c++filt error";
+
+##########
+# Print out the export file
+
+# Print information about generating this file
+print "# This is a generated file.\n";
+print "# It was generated by:\n";
+printf "# %s %s %s\n", $0, $symvers, (join ' ',@ARGV);
+
+foreach my $i (keys %export_hash) {
+  printf "%s\n",$i or die;
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graph.py b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graph.py
new file mode 100755
index 000000000..61e18be47
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graph.py
@@ -0,0 +1,576 @@
+#!/usr/bin/python
+
+import string
+import sys
+import re
+import os
+import platform
+import commands
+from Numeric import *
+from pychart import *
+from xml.dom import minidom
+
+class exception:
+	pass
+
+
+def comp_platform_info(compiler):
+	ret = '<ul>\n'
+	so = commands.getstatusoutput('cat /proc/cpuinfo | grep \'cpu MHz\'')
+	if so[0] == 0:
+		ret += '<li>CPU speed - %s</li>\n' % so[1]
+	so = commands.getstatusoutput('cat /proc/meminfo | grep \'MemTotal\'')
+	if so[0] == 0:
+		ret += '<li>Memory - %s</li>\n' % so[1]
+	ret += '<li>Platform - %s</li>\n' % platform.platform()
+	so = commands.getstatusoutput(compiler + ' --version')
+	if so[0] == 0:
+		ret += '<li>Compiler - %s</li>\n' % so[1]
+	ret += '</ul>\n'
+	return ret
+
+
+class res:
+	"""
+	A 'structure' representing the results of a test.
+	"""
+	def __init__(self, x_label, y_label, cntnr_list, cntnr_descs, res_sets):
+		self.x_label = x_label
+		self.y_label = y_label
+		self.cntnr_list = cntnr_list
+		self.cntnr_descs = cntnr_descs
+		self.res_sets = res_sets
+
+
+class res_getter:
+	"""
+	This class returns a res object for some test.
+	"""
+	class __sorter:
+		def __accum(self, results):
+			total = 0
+			for result in results:
+				total = total + result[1]
+			return total
+
+		def sort(self, cntnr_list, res_sets):
+			cntnrs_and_totals = []
+			for cntnr in cntnr_list:
+				results = res_sets[cntnr]
+				total = self.__accum(results)
+				cntnrs_and_totals.append((cntnr, total))
+			by_total = lambda x,y: x[1] > y[1] and -1 or 1
+			cntnrs_and_totals.sort(by_total)
+			ret = []
+			for cntnr_and_total in cntnrs_and_totals:
+				cntnr = cntnr_and_total[0]
+				ret.append(cntnr)
+			return ret
+
+	def __init__(self, test_infos_f_name):
+		self.__test_to_container_res_sets = {}
+		self.__test_to_f_names = {}
+		tests_dat = minidom.parse(test_infos_f_name)
+		for test in tests_dat.getElementsByTagName('test'):
+			test_name = test.attributes['name'].value
+			self.__test_to_f_names[test_name] = test.getElementsByTagName('file')[0].attributes['name'].value
+			cntnr_list = []
+			for cntnr in test.getElementsByTagName('cntnr'):
+				cntnr_list.append(cntnr.attributes['name'].value)
+			self.__test_to_container_res_sets[test_name] = cntnr_list
+
+	def __get_label(self, tst_dat, label_name):
+		label = tst_dat.getElementsByTagName(label_name)[0].firstChild.data
+		label = string.strip(label, '\n')
+		label = string.strip(label)
+		return label
+
+	def __parse_res_sets(self, f_name, cntnr_list):	
+		tst_dat = minidom.parse(f_name)
+		x_label = self.__get_label(tst_dat, 'x_name')
+		y_label = self.__get_label(tst_dat, 'y_name')
+		parsed_container_list = tst_dat.getElementsByTagName('cntnr')
+		res_sets = {}
+		cntnr_descs = {}
+		for cntnr in parsed_container_list:
+			cntnr_name = cntnr.attributes["name"].value
+			res_sets[cntnr_name] = []
+		for cntnr in parsed_container_list:
+			cntnr_name = cntnr.attributes["name"].value
+			cntnr_desc = cntnr.getElementsByTagName('desc')
+			if res_sets.has_key(cntnr_name):
+				res_set = []
+				result_list = cntnr.getElementsByTagName('result')
+				for result in result_list:
+					x = string.atol(result.attributes["x"].value)
+					y = string.atof(result.attributes["y"].value)
+					res_set.append((x, y))
+				res_sets[cntnr_name] = res_set
+				cntnr_descs[cntnr_name] = cntnr_desc[0]
+		return (x_label, y_label, cntnr_descs, res_sets)
+
+	def get(self, res_dir, test_name):
+		cntnr_list = self.__test_to_container_res_sets[test_name]
+		f_name = res_dir + '/' + self.__test_to_f_names[test_name]
+		parsed = self.__parse_res_sets(f_name, cntnr_list)
+		x_label = parsed[0]
+		y_label = parsed[1]
+		cntnr_descs = parsed[2]
+		res_sets = parsed[3]
+		cntnr_list = self.__sorter().sort(cntnr_list, res_sets)
+		return res(x_label, y_label, cntnr_list, cntnr_descs, res_sets)
+
+
+class png_maker:
+	"""
+	This class creates a png file from a result set.
+	"""
+	class __style_chooser:
+		def __init__(self):
+			self.native_re = re.compile(r'n_(?:.*?)')
+
+			self.native_tick_mark_0 = tick_mark.Circle(size = 4)
+			self.native_tick_mark_1 = tick_mark.Square(size = 4)
+			self.native_line_style_0 = line_style.T(color = color.black, width=2)
+			self.native_line_style_1 = line_style.T(color = color.black, width=2)
+
+			self.mask_re = re.compile(r'mask(?:.*?)')
+			self.mod_re = re.compile(r'mod(?:.*?)')
+
+			self.rb_tree_mmap_rb_tree_set_re = re.compile(r'rb_tree_mmap_rb_tree_set(?:.*?)')
+			self.rb_tree_mmap_lu_mtf_set_re = re.compile(r'rb_tree_mmap_lu_mtf_set(?:.*?)')
+
+			self.splay_re = re.compile(r'splay(?:.*?)')
+			self.rb_tree_re = re.compile(r'rb_tree(?:.*?)')
+			self.ov_tree_re = re.compile(r'ov_tree(?:.*?)')
+			self.splay_tree_re = re.compile(r'splay_tree(?:.*?)')
+
+			self.pat_trie_re = re.compile(r'pat_trie(?:.*?)')
+
+			self.lc_1div8_1div2_re = re.compile(r'lc_1div8_1div2(?:.*?)')
+			self.lc_1div8_1div1_re = re.compile(r'lc_1div8_1div1(?:.*?)')
+			self.mcolc_1div2_re = re.compile(r'mcolc_1div2(?:.*?)')
+
+		def choose(self, cntnr):
+			if self.native_re.search(cntnr):
+				if cntnr == 'n_pq_vector':
+					return (self.native_tick_mark_1, self.native_line_style_1)
+
+				return (self.native_tick_mark_0, self.native_line_style_0)
+
+			# tick_mark predefined
+			# square, circle3, dia, tri, dtri, star, plus5, x5, gray70dia, blackdtri, blackdia
+			if self.mask_re.search(cntnr):
+				clr = color.navy
+			elif self.mod_re.search(cntnr):
+				clr = color.green4
+			elif self.rb_tree_mmap_rb_tree_set_re.search(cntnr):
+				clr = color.mediumblue
+				tm = tick_mark.square
+			elif self.rb_tree_mmap_lu_mtf_set_re.search(cntnr) or cntnr == 'rc_binomial_heap':
+				clr = color.gray50
+				tm = tick_mark.dia
+			elif self.splay_tree_re.search(cntnr) or cntnr == 'binomial_heap':
+				clr = color.gray58
+				tm = tick_mark.tri
+			elif self.rb_tree_re.search(cntnr) or cntnr == 'binary_heap':
+				clr = color.red3
+				tm = tick_mark.dtri
+			elif self.ov_tree_re.search(cntnr) or cntnr == 'thin_heap':
+				clr = color.orangered1
+				tm = tick_mark.star
+			elif self.pat_trie_re.search(cntnr) or cntnr == 'pairing_heap':
+				clr = color.blueviolet
+				tm = tick_mark.plus5
+			else:
+				sys.stderr.write(cntnr + '\n')
+				raise exception
+
+                        # mask / mod
+                        if cntnr.find('lc_1div8_1div') <> -1:
+				if cntnr.find('mask') <> -1:
+					# mask
+					if self.lc_1div8_1div2_re.search(cntnr):
+						if cntnr.find('nsth') <> -1:
+							tm = tick_mark.x5
+						else:
+							tm = tick_mark.gray70dia
+					if self.lc_1div8_1div1_re.search(cntnr):
+						if cntnr.find('nsth') <> -1:
+							tm = tick_mark.dia
+                                                else:
+							tm = tick_mark.circle3
+                                else:
+                                        # mod
+					if self.lc_1div8_1div2_re.search(cntnr):
+						if cntnr.find('nsth') <> -1:
+							tm = tick_mark.tri
+						else:
+                                                        tm = tick_mark.square
+					if self.lc_1div8_1div1_re.search(cntnr):
+						if cntnr.find('nsth') <> -1:
+                                                        tm = tick_mark.dtri
+                                                else:
+                                                        tm = tick_mark.star
+
+			if self.mcolc_1div2_re.search(cntnr):
+				tm = tick_mark.circle3
+				
+			return (tm, line_style.T(color = clr, width = 2))
+
+
+	def __init__(self):
+		self.__sc = self.__style_chooser()
+		self.__mmap_re = re.compile('mmap_')
+
+	def __container_label_name(self, cntnr):
+		return self.__mmap_re.sub('\nmmap_\n', cntnr)
+
+	def make(self, res, of_name):
+		theme.output_format = 'png'
+		theme.output_file = of_name
+		theme.scale_factor = 2
+#		theme.default_font_size = 5
+		theme.use_color = 1
+		theme.reinitialize()
+		y_tick_interval = self.__get_y_tics(res)
+		xaxis = axis.X(format = '/a90/hL%d',
+			       tic_interval = 200,
+			       label = res.x_label)
+		yaxis = axis.Y(format = '%.2e', 
+			       tic_interval = y_tick_interval,
+			       label = res.y_label)
+		legend_lines = len(res.cntnr_list)
+		legend_vloc = 50 + (legend_lines * 10)
+		ar = area.T(x_axis = xaxis, y_axis = yaxis,
+			    legend = legend.T(loc=(0,-legend_vloc),
+					      frame_line_style=None,
+					      inter_row_sep=2),
+			    size=(240,110))
+		plot_list = []
+		for cntnr in res.cntnr_list:
+			style = self.__sc.choose(cntnr)
+			print cntnr
+			pl = line_plot.T(label = self.__container_label_name(cntnr), 
+				data = res.res_sets[cntnr], 
+				tick_mark = style[0], 
+				line_style = style[1])
+			plot_list.append(pl)
+		for plot in plot_list:
+			ar.add_plot(plot)
+		ar.draw()
+
+
+	def __get_y_tics(self, res):
+		mx = 0
+		for cntnr in res.cntnr_list:
+			m = max(d[1] for d in res.res_sets[cntnr])
+			mx = max(m, mx)
+		return mx / 5 
+
+
+
+def make_tt(s):
+	return '<tt>' + s + '</tt>'
+
+def make_b(s):
+	return '<b>' + s + '</b>'
+
+def make_ttb(s):
+	return '<tt><b>' + s + '</b></tt>'
+
+def make_i(s):
+	return '<i>' + s + '</i>'
+
+def make_pb_ds_class_href(c_name):
+	return '<a href = "' + c_name + '.html">' + make_tt(c_name) + '</a>\n'
+
+def build_value_to_pb_ds_class_href(s_desc):
+	value = s_desc.attributes['value'].value
+	ret = make_pb_ds_class_href(value)
+	return ret
+
+class hash_desc_to_html_builder:
+	def build_specific_comb_hash_fn(self, s_desc):
+		comb_hash_fn_desc = s_desc.getElementsByTagName('Comb_Hash_Fn')[0]
+		ret = make_tt('Comb_Hash_Fn')
+		ret = ret + ' = '
+		ret = ret + build_value_to_pb_ds_class_href(comb_hash_fn_desc)
+		return ret
+
+	def __build_nom_denom(self, s_desc):
+		nom_denom = s_desc.attributes['nom'].value + '/' + s_desc.attributes['denom'].value
+		return make_i(nom_denom)
+
+	def __build_lc_trigger_desc(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + ' with ' + make_i('α<sub>min</sub>')
+		ret = ret + ' = '  + self.__build_nom_denom(s_desc.getElementsByTagName('alpha_min')[0])
+		ret = ret + ' and ' + make_i('α<sub>max</sub>')
+		ret = ret + ' = '  + self.__build_nom_denom(s_desc.getElementsByTagName('alpha_max')[0])
+		return ret
+
+	def build_specific_resize_policy(self, s_desc):
+		ret = make_tt('Resize_Policy')
+		ret = ret + ' = '
+		resize_policy_desc = s_desc.getElementsByTagName('Resize_Policy')[0]
+		ret = ret + build_value_to_pb_ds_class_href(resize_policy_desc)
+		ret = ret + ' with ' + make_tt('Size_Policy')
+		ret = ret + ' = '
+		size_policy_desc = resize_policy_desc.getElementsByTagName('Size_Policy')[0]
+		ret = ret + build_value_to_pb_ds_class_href(size_policy_desc)
+		ret = ret + ', and ' + make_tt('Trigger_Policy')
+		ret = ret + ' = '
+		trigger_policy_desc = resize_policy_desc.getElementsByTagName('Trigger_Policy')[0]
+		if trigger_policy_desc.attributes['value'].value == 'hash_load_check_resize_trigger':
+			ret = ret + self.__build_lc_trigger_desc(trigger_policy_desc)
+		else:
+			raise exception
+		return ret
+
+
+class cc_hash_desc_to_html_builder:
+	def __init__(self):
+		self.__hash_builder = hash_desc_to_html_builder()			
+
+	def build(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + 'with ' + self.__hash_builder.build_specific_comb_hash_fn(s_desc)
+		ret = ret + ', and ' + self.__hash_builder.build_specific_resize_policy(s_desc)
+		return ret
+
+
+class gp_hash_desc_to_html_builder:
+	def __init__(self):
+		self.__hash_builder = hash_desc_to_html_builder()			
+
+	def build(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + ' with ' + self.__hash_builder.build_specific_comb_hash_fn(s_desc)
+		ret = ret + ', ' + self.__hash_builder.build_specific_resize_policy(s_desc)
+		ret = ret + ', and ' + make_tt('Probe_Fn')
+		ret = ret + ' = '		
+		probe_fn = s_desc.getElementsByTagName('Probe_Fn')[0].attributes['value'].value
+		ret = ret + make_pb_ds_class_href(probe_fn)
+		return ret
+
+
+class basic_tree_like_desc_to_html_builder:
+	def build_tag(self, s_desc):
+		ret = make_tt('Tag')
+		ret = ret + ' = '
+		tag_desc = s_desc.getElementsByTagName('Tag')[0]
+		ret = ret + build_value_to_pb_ds_class_href(tag_desc)
+		return ret
+
+	def build_node_update(self, s_desc):
+		ret = make_tt('Node_Update')
+		ret = ret + ' = '
+		node_update_desc = s_desc.getElementsByTagName('Node_Update')[0]
+		ret = ret + build_value_to_pb_ds_class_href(node_update_desc)
+		return ret
+
+
+class basic_tree_desc_to_html_builder:
+	def __init__(self):
+		self.__tree_like_builder = basic_tree_like_desc_to_html_builder()
+
+	def build(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + ' with ' + self.__tree_like_builder.build_tag(s_desc)
+		ret = ret + ', and ' + self.__tree_like_builder.build_node_update(s_desc)
+		return ret
+
+
+class basic_trie_desc_to_html_builder:
+	def __init__(self):
+		self.__tree_like_builder = basic_tree_like_desc_to_html_builder()
+
+	def build(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + ' with ' + self.__tree_like_builder.build_tag(s_desc)
+		ret = ret + ', and ' + self.__tree_like_builder.build_node_update(s_desc)
+		return ret
+
+class lu_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = build_value_to_pb_ds_class_href(s_desc)
+		ret = ret + ' with ' + make_tt('Update_Policy') 
+		ret = ret + ' = ' 
+		update_policy_desc = s_desc.getElementsByTagName('Update_Policy')[0]
+		ret = ret + build_value_to_pb_ds_class_href(update_policy_desc)
+		return ret
+
+
+class std_desc_to_html_builder:
+	def build(self, s_desc):
+		value = s_desc.attributes['value'].value
+		return make_tt(value.replace('std_', 'std::'))
+
+
+class std_tr1_desc_to_html_builder:
+	def build(self, s_desc):
+		value = s_desc.attributes['value'].value
+		ret =  make_tt(value.replace('std_tr1_', 'std::tr1::'))
+		ret = ret + ' with ' + make_tt('cache_hash_code')
+		ret = ret + ' = '
+		cache_hash_code = s_desc.getElementsByTagName('cache_hash_code')[0].attributes['value'].value
+		ret = ret + make_ttb(cache_hash_code)
+		return ret
+
+class gnucxx_desc_to_html_builder:
+	def build(self, s_desc):
+		value = s_desc.attributes['value'].value
+		return make_tt(value.replace('__gnucxx_', '__gnucxx::'))
+
+class stdext_desc_to_html_builder:
+	def build(self, s_desc):
+		value = s_desc.attributes['value'].value
+		return make_tt(value.replace('stdext_', 'stdext::'))
+
+class npq_desc_to_html_builder:
+	def build(self, vector):
+		if vector:
+			under = make_tt('std::vector')
+		else:
+			under = make_tt('std::deque')
+
+		return make_tt('std::priority_queue') + ' adapting ' + under
+
+class binary_heap_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = make_pb_ds_class_href('priority_queue')
+		ret = ret + ' with ' + make_tt('Tag')
+		ret = ret + ' = ' + make_pb_ds_class_href('binary_heap_tag')
+		return ret
+
+class thin_heap_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = make_pb_ds_class_href('priority_queue')
+		ret = ret + ' with ' + make_tt('Tag')
+		ret = ret + ' = ' + make_pb_ds_class_href('thin_heap_tag')
+		return ret
+
+class binomial_heap_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = make_pb_ds_class_href('priority_queue')
+		ret = ret + ' with ' + make_tt('Tag')
+		ret = ret + ' = ' + make_pb_ds_class_href('binomial_heap_tag')
+		return ret
+
+class rc_binomial_heap_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = make_pb_ds_class_href('priority_queue')
+		ret = ret + ' with ' + make_tt('Tag')
+		ret = ret + ' = ' + make_pb_ds_class_href('rc_binomial_heap_tag')
+		return ret
+
+class pairing_heap_desc_to_html_builder:
+	def build(self, s_desc):
+		ret = make_pb_ds_class_href('priority_queue')
+		ret = ret + ' with ' + make_tt('Tag')
+		ret = ret + ' = ' + make_pb_ds_class_href('pairing_heap_tag')
+		return ret
+
+class legend_desc_builder:
+	"""
+	Returns a string corresponding to a specific container type.
+	"""
+	def __init__(self):
+		self.__cc_hash_builder = cc_hash_desc_to_html_builder()
+		self.__gp_hash_builder = gp_hash_desc_to_html_builder()	       
+		self.__basic_tree_builder = basic_tree_desc_to_html_builder()
+		self.__basic_trie_builder = basic_trie_desc_to_html_builder()
+		self.__lu_builder = lu_desc_to_html_builder()
+		self.__std_builder = std_desc_to_html_builder()
+		self.__std_tr1_builder = std_tr1_desc_to_html_builder()
+		self.__gnucxx_builder = gnucxx_desc_to_html_builder()
+		self.__stdext_builder = stdext_desc_to_html_builder()
+		self.__npq_builder = npq_desc_to_html_builder()
+		self.__thin_heap_builder = thin_heap_desc_to_html_builder()
+		self.__thin_heap_builder = thin_heap_desc_to_html_builder()
+		self.__binary_heap_builder = binary_heap_desc_to_html_builder()
+		self.__binomial_heap_builder = binomial_heap_desc_to_html_builder()
+		self.__rc_binomial_heap_builder = rc_binomial_heap_desc_to_html_builder()
+		self.__pairing_heap_builder = pairing_heap_desc_to_html_builder()
+
+	def __build_specific(self, s_desc):
+		type = s_desc.attributes['value'].value
+
+		if type == 'thin_heap':
+			return self.__thin_heap_builder.build(s_desc)
+		if type == 'binary_heap':
+			return self.__binary_heap_builder.build(s_desc)
+		if type == 'binomial_heap':
+			return self.__binomial_heap_builder.build(s_desc)
+		if type == 'rc_binomial_heap':
+			return self.__rc_binomial_heap_builder.build(s_desc)
+		if type == 'pairing_heap':
+			return self.__pairing_heap_builder.build(s_desc)
+		if type == 'cc_hash_table':
+			ret = self.__cc_hash_builder.build(s_desc)
+		elif type == 'gp_hash_table':
+			ret = self.__gp_hash_builder.build(s_desc)
+		elif type == 'tree':
+			ret = self.__basic_tree_builder.build(s_desc)
+		elif type == 'trie':
+			ret = self.__basic_trie_builder.build(s_desc)
+		elif type == 'list_update':
+			ret = self.__lu_builder.build(s_desc)
+		elif type == 'std::priority_queue_vector':
+			return self.__npq_builder.build(True)
+		elif type == 'std::priority_queue_deque':
+			return self.__npq_builder.build(False)
+		elif type == 'std_set' or type == 'std_map' or type == 'std_multimap':
+			return self.__std_builder.build(s_desc)
+		elif type == 'std_tr1_unordered_set' or type == 'std_tr1_unordered_map':
+			return self.__std_tr1_builder.build(s_desc)
+		elif type == 'stdext_hash_set' or type == 'stdext_hash_map' or type == 'stdext_hash_multimap':
+			return self.__stdext_builder.build(s_desc)
+		elif type == '__gnucxx_hash_set' or type == '__gnucxx_hash_map' or type == '__gnucxx_hash_multimap':
+			return self.__gnucxx_builder.build(s_desc)
+		else:
+			sys.stderr.write('cannot recognize %s\n' % type)
+			raise exception
+		return ret
+
+
+	def build(self, desc):
+		s_descs = desc.getElementsByTagName('type')
+		if s_descs.length == 0:
+			print desc.toxml()
+			raise exception
+		ret = ''
+		count = 0
+		for s_desc in s_descs:
+			if count > 0:
+				ret = ret + ', mapping each key to '
+			ret = ret + self.__build_specific(s_desc)
+			count = count + 1
+		return ret
+
+
+def main(doc_dir, res_dir, test_infos_f_name, test_name, build_name):
+	res_gtr = res_getter(test_infos_f_name)
+	res = res_gtr.get(res_dir, test_name)
+	png_mkr = png_maker()
+	png_of_name = doc_dir + '/' + test_name + '_' + build_name + '.png'
+	print png_of_name
+	png_mkr.make(res, png_of_name)
+
+
+if __name__ == "__main__":
+	"""
+	This module takes 6 parameters from the command line:
+	Docs directory
+	Results directory
+	Tests info XML file name
+	Test name
+	Build name
+	Compiler name
+	"""
+	usg = "make_graph.py <doc_dir> <res_dir> <test_info_file> <test_name> <build_name>\n"
+	if len(sys.argv) != 6:
+		sys.stderr.write(usg)
+		raise exception
+	main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graphs.py b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graphs.py
new file mode 100755
index 000000000..e230e7a99
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/make_graphs.py
@@ -0,0 +1,160 @@
+#!/usr/bin/python
+
+import sys
+import commands
+import re
+from xml.dom import minidom
+from BeautifulSoup import BeautifulSoup
+import make_graph
+
+class exception:
+	pass
+ 
+res_div_re = re.compile('(.*?)_res_div')
+settings_div_re = re.compile('(.*?)_settings_div')	
+
+
+gray_border_div_str = '<div style = "border-style: dotted; border-width: 1px; border-color: lightgray">'
+space_div_str = '<div style = "width: 100%; height: 20px">'
+
+
+
+def logical_build_from_build(build):
+	if build == 'gcc':
+		return 'g++'
+	if build == 'msvc':
+		return 'msvc++'
+	if build == 'local':
+		return 'local'
+	sys.stderr.write(build)
+	raise exception
+ 
+ 
+def img_title_from_origs(label, title, base_build_ref, build_name, logical_build_name):
+	title = title.replace('_tt_', '<tt>')
+	title = title.replace('_455tt_', '</tt>')
+	title = title.replace('_b_', '<b>')
+	title = title.replace('_455b_', '</b>')
+	title = title.replace('_456', ',')
+	title = title.replace('_457', '[]')
+	title = title.replace('_', ' ')
+	return '%s: %s - <a href = "%s_performance_tests.html#%s">%s</a>' % (
+		label, 
+		title, 
+		base_build_ref, 
+		build_name,
+		logical_build_name)
+
+
+def make_png(src_dir, doc_dir, res_dir, tests_info_xml_f_name, build_name, test_name):
+	cmd_str = '%s/scripts/make_graph.py %s %s %s %s %s' % (
+		src_dir, doc_dir,
+		res_dir, 
+		tests_info_xml_f_name, 
+		test_name, 
+		build_name)
+	# Must start a new process for pychart - otherwise pngs overlap.
+	so = commands.getstatusoutput(cmd_str)	
+	if(so[0] != 0):
+		sys.stderr.write(cmd_str + '\n')		
+		sys.stderr.write(so[1] + '\n')		
+		sys.exit(-1)	
+
+
+def make_png_str(label, test_name, build):
+	ret = '<h6 class="c1">'
+	ret += '<a name="%s" id= "%s">' % (label, label)
+	ret += '<img src="%s" ' % (test_name + '_' + build + '.png')
+	ret += 'alt="no image" />' 
+	ret += '</a></h6>'	
+	return ret
+
+def process_html(html_f_name, src_dir, build_dir, htmls_xml_f_name, tests_info_xml_f_name, build_name, compiler_name):
+	doc_dir = src_dir + "/doc/html/ext/pb_ds"
+	res_dir = build_dir 
+	html_f = open(doc_dir + '/' + html_f_name)	
+	soup = BeautifulSoup(html_f.read())			
+	html_f.close()	
+	platform_comp_re = re.compile('platform_comp_%s' % build_name)					
+	for d in soup('div'):
+		try:
+			settings_m = settings_div_re.match(d['id']) 
+			res_m = res_div_re.match(d['id']) 
+		except:
+			settings_m = None
+			res_m = None
+			
+		if settings_m:
+			build = settings_m.groups()[0]			
+			if build == build_name:
+				logical_build_name = logical_build_from_build(build)
+				info = gray_border_div_str
+				info += '<h3><a name = "%s"><u>%s</u></a></h3>' % (build, logical_build_name)
+				info += make_graph.comp_platform_info(compiler_name)
+				info += '</div>%s</div>' % space_div_str
+				d.contents = info
+		elif res_m:
+			label = res_m.groups()[0]
+			d = d.divTag
+			
+			build = d['id'].replace('%s_' % label, '')
+			
+			if build == build_name:
+				logical_build_name = logical_build_from_build(build)
+				d = d.divTag
+				test_name = d['id'].replace('%s_' % label, '')
+				d = d.divTag
+				base_build_ref = d['id'].replace('%s_' % label, '')
+				d = d.divTag
+				title = d['id'].replace('%s_' % label, '')
+				img_title = img_title_from_origs(label, title, base_build_ref, build, logical_build_name)
+					
+				make_png(src_dir, doc_dir, res_dir, tests_info_xml_f_name, build_name, test_name)
+				png_str = make_png_str(label, test_name, build)
+				content = gray_border_div_str
+				content += png_str
+				content += img_title
+#				content += make_graph.legend(doc_dir, res_dir, tests_info_xml_f_name, test_name, build_name)
+				content += '</div>%s</div>' % space_div_str
+				d.contents = content
+								
+	return soup
+			
+ 
+  
+if __name__ == "__main__":
+	"""
+	Doc dir
+	This module takes 6 parameters from the command line:
+	Source directory
+	Build directory
+	HTMLs XML file name
+	Tests info XML file name
+	Build name
+	Compiler name
+	"""
+	
+	usg = "make_graph.py <src_dir> <build_dir> <htmls_xml_f_name> <tests_info_xml_f_name> <build_name> <compiler_name>\n"
+		
+	if len(sys.argv) != 7:
+		sys.stderr.write(usg)
+		raise exception
+	
+	src_dir = sys.argv[1]
+	build_dir = sys.argv[2]
+	htmls_xml_f_name = sys.argv[3]
+	tests_info_xml_f_name = sys.argv[4]
+	build_name = sys.argv[5]
+	compiler_name = sys.argv[6]
+	doc_dir = src_dir + "/doc/html/ext/pb_ds"
+	htmls_dat = minidom.parse(htmls_xml_f_name)
+	for html in htmls_dat.getElementsByTagName('html'):
+		html_f_name = html.attributes['name'].value
+		
+		new_soup = process_html(html_f_name, src_dir, build_dir, htmls_xml_f_name, tests_info_xml_f_name, build_name, compiler_name)
+		
+		html_f = open(doc_dir + '/' + html_f_name, 'w')
+		html_f.write(str(new_soup))
+		html_f.close()
+		
+		
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/run_doxygen b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/run_doxygen
new file mode 100644
index 000000000..e227ce17b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/run_doxygen
@@ -0,0 +1,402 @@
+#!/bin/bash
+
+# Runs doxygen and massages the output files.
+# Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009, 2010, 2011
+# Free Software Foundation, Inc.
+#
+# Synopsis:  run_doxygen --mode=[html|latex|man|xml] --host_alias=<alias> \
+#                        v3srcdir \
+#                        v3builddir \
+#                        shortname
+#
+# Originally hacked together by Phil Edwards <pme@gcc.gnu.org>
+
+
+# We can check now that the version of doxygen is >= this variable.
+DOXYVER=1.7.0
+
+find_doxygen() {
+    local -r v_required=`echo $DOXYVER |  \
+		awk -F. '{if(NF<3)$3=0;print ($1*100+$2)*100+$3}'`
+    local testing_version doxygen maybedoxy v_found
+    # thank you goat book
+    set `IFS=:; X="$PATH:/usr/local/bin:/bin:/usr/bin"; echo $X`
+    for dir
+    do
+      # AC_EXEEXT could come in useful here
+      maybedoxy="$dir/doxygen"
+      test -f "$maybedoxy" && testing_version=`$maybedoxy --version`
+      if test -n "$testing_version"; then
+       v_found=`echo $testing_version |  \
+		awk -F. '{if(NF<3)$3=0;print ($1*100+$2)*100+$3}'`
+       if test $v_found -ge $v_required; then
+	 doxygen="$maybedoxy"
+	 break
+       fi
+      fi
+    done
+    if test -z "$doxygen"; then
+	echo run_doxygen error:  Could not find Doxygen $DOXYVER in path. 1>&2
+	print_usage
+    fi
+    # We need to use other tools from the same package/version.
+    echo :: Using Doxygen tools from ${dir}.
+    PATH=$dir:$PATH
+    hash -r
+}
+
+print_usage() {
+    cat 1>&2 <<EOF
+Usage:  run_doxygen --mode=MODE --host_alias=BUILD_ALIAS [<options>]
+		    <v3-src-dir> <v3-build-dir> <shortnamesp>
+      MODE is one of:
+	  html           Generate user-level HTML library documentation.
+	  man            Generate user-level man pages.
+	  xml            Generate user-level XML pages.
+	  latex          Generate user-level LaTeX pages.
+
+      BUILD_ALIAS is the GCC build alias set at configure time.
+
+Note:  Requires Doxygen ${DOXYVER} or later; get it at
+       ftp://ftp.stack.nl/pub/users/dimitri/doxygen-${DOXYVER}.src.tar.gz
+
+EOF
+    exit 1
+}
+
+parse_options() {
+  for o
+  do
+    # Blatantly ripped from autoconf, er, I mean, "gratefully standing
+    # on the shoulders of those giants who have gone before us."
+    case "$o" in
+      -*=*) arg=`echo "$o" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+      *) arg= ;;
+    esac
+
+    case "$o" in
+      --mode=*)
+	mode=$arg ;;
+      --host_alias=*)
+	host_alias=$arg ;;
+      --mode | --host_alias | --help | -h)
+	print_usage ;;
+      *)
+	# this turned out to be a mess, maybe change to --srcdir=, etc
+	if test $srcdir = unset; then
+	  srcdir=$o
+	elif test $outdir = unset; then
+	  builddir=${o}
+	  outdir=${o}/doc/doxygen
+	elif test $shortname = unset; then
+	  shortname=$o
+	else
+	  echo run_doxygen error:  Too many arguments 1>&2
+	  exit 1
+	fi
+	;;
+      esac
+  done
+}
+
+
+# script begins here
+mode=unset
+host_alias=unset
+srcdir=unset
+outdir=unset
+shortname=unset
+do_html=false
+do_man=false
+do_xml=false
+do_latex=false
+enabled_sections=
+generate_tagfile=
+DATEtext=`date '+%Y-%m-%d'`
+
+# Show how this script is called.
+echo run_doxygen $*
+
+parse_options $*
+find_doxygen
+
+if test $srcdir = unset || test $outdir = unset || test $mode = unset || test $shortname = unset || test $host_alias = unset; then
+    # this could be better
+    echo run_doxygen error:  You have not given enough information...! 1>&2
+    print_usage
+fi
+
+case x"$mode" in
+    xhtml)
+      do_html=true
+      enabled_sections=maint
+      generate_tagfile="$outdir/html/libstdc++.tag"
+      ;;
+    xlatex)
+      do_latex=true
+      enabled_sections=maint
+      ;;
+    xman)
+      do_man=true
+      ;;
+    xxml)
+      do_xml=true
+      enabled_sections=maint
+      ;;
+    *)
+      echo run_doxygen error:  $mode is an invalid mode 1>&2
+      exit 1 ;;
+esac
+
+case x"$shortname" in
+    xYES)
+      ;;
+    xNO)
+      ;;
+    *)
+      echo run_doxygen error:  $shortname is invalid 1>&2
+      exit 1 ;;
+esac
+
+
+mkdir -p $outdir
+chmod u+w $outdir
+
+# Run it
+(
+    set -e
+    cd $builddir
+    sed -e "s=@outdir@=${outdir}=g" \
+	-e "s=@srcdir@=${srcdir}=g" \
+	-e "s=@shortname@=${shortname}=g" \
+	-e "s=@builddir@=${builddir}=g" \
+	-e "s=@host_alias@=${host_alias}=g" \
+	-e "s=@enabled_sections@=${enabled_sections}=" \
+	-e "s=@do_html@=${do_html}=" \
+	-e "s=@do_latex@=${do_latex}=" \
+	-e "s=@do_man@=${do_man}=" \
+	-e "s=@do_xml@=${do_xml}=" \
+	-e "s=@generate_tagfile@=${generate_tagfile}=" \
+	${srcdir}/doc/doxygen/user.cfg.in > ${outdir}/${mode}.cfg
+    echo :: NOTE that this may take some time...
+    echo doxygen ${outdir}/${mode}.cfg
+    doxygen ${outdir}/${mode}.cfg
+)
+ret=$?
+test $ret -ne 0 && exit $ret
+
+if $do_xml; then
+    echo ::
+    echo :: XML pages begin with
+    echo :: ${outdir}/xml/index.xml
+fi
+
+if $do_latex; then
+    cd ${outdir}/${mode}
+
+    # Also drop in the header file and style sheet
+    doxygen -w latex header.tex doxygen.sty
+    
+    echo ::
+    echo :: LaTeX pages begin with
+    echo :: ${outdir}/latex/refman.tex
+fi
+    
+if $do_html; then
+  cd ${outdir}/${mode}
+
+  #doxytag -t libstdc++.tag . > /dev/null 2>&1
+  sed -e '/<path>/d' libstdc++.tag > TEMP
+  mv TEMP libstdc++.tag
+
+  sed -e "s=@DATE@=${DATEtext}=" \
+      ${srcdir}/doc/doxygen/mainpage.html > index.html
+
+  # The following bit of line noise changes annoying
+  #   std::foo < typename _Ugly1, typename _Ugly2, .... _DefaultUgly17 >
+  # to user-friendly
+  #   std::foo
+  # in the major "Compound List" page.
+  sed -e 's=\(::[[:alnum:]_]*\)< .* >=\1=' annotated.html > annstrip.html
+  mv annstrip.html annotated.html
+
+  cp ${srcdir}/doc/doxygen/tables.html tables.html
+
+  echo ::
+  echo :: HTML pages begin with
+  echo :: ${outdir}/html/index.html
+fi
+
+# Mess with the man pages.  We don't need documentation of the internal
+# headers, since the man pages for those contain nothing useful anyhow.  The
+# man pages for doxygen modules need to be renamed (or deleted).  And the
+# generated #include lines need to be changed from the internal names to the
+# standard ones (e.g., "#include <stl_tempbuf.h>" -> "#include <memory>").
+if $do_man; then
+echo ::
+echo :: Fixing up the man pages...
+cd $outdir/man/man3
+
+# File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
+find . -name "* *" -print0 | xargs -0r rm        # requires GNU tools
+
+# man pages are for functions/types/other entities, not source files
+# directly.  who the heck would type "man foo.h" anyhow?
+find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
+rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3
+#rm ext_*.3 tr1_*.3 debug_*.3
+
+# this is used to examine what we would have deleted, for debugging
+#mkdir trash
+#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
+#mv *.h.3 *config* *.cc.3 *.tcc.3 *_t.3  trash
+
+# Standardize the displayed header names.  If anyone who knows perl cares
+# enough to rewrite all this, feel free.  This only gets run once a century,
+# and I'm off getting coffee then anyhow, so I didn't care enough to make
+# this super-fast.
+g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader
+problematic=`egrep -l '#include <.*_.*>' [a-z]*.3`
+for f in $problematic; do
+    # this is also slow, but safe and easy to debug
+    oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f`
+    newh=`echo $oldh | ./stdheader`
+    sed "s=${oldh}=${newh}=" $f > TEMP
+    mv TEMP $f
+done
+rm stdheader
+
+# Some of the pages for generated modules have text that confuses certain
+# implementations of man(1), e.g., Linux's.  We need to have another top-level
+# *roff tag to /stop/ the .SH NAME entry.
+problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3`
+#problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
+
+for f in $problematic; do
+    sed '/^\.SH NAME/{
+n
+a\
+\
+.SH SYNOPSIS
+    }' $f > TEMP
+    mv TEMP $f
+done
+
+# Also, break this (generated) line up.  It's ugly as sin.
+problematic=`grep -l '[^^]Definition at line' *.3`
+for f in $problematic; do
+    sed 's/Definition at line/\
+.PP\
+&/'  $f > TEMP
+    mv TEMP $f
+done
+
+cp ${srcdir}/doc/doxygen/Intro.3 C++Intro.3
+
+# Why didn't I do this at the start?  Were rabid weasels eating my brain?
+# Who the fsck would "man std_vector" when the class isn't named that?
+
+# First, deal with nested namespaces.
+for f in *chrono_*; do
+    newname=`echo $f | sed 's/chrono_/chrono::/'`
+    mv $f $newname
+done
+for f in *__debug_*; do
+    newname=`echo $f | sed 's/__debug_/__debug::/'`
+    mv $f $newname
+done
+for f in *decimal_*; do
+    newname=`echo $f | sed 's/decimal_/decimal::/'`
+    mv $f $newname
+done
+for f in *__detail_*; do
+    newname=`echo $f | sed 's/__detail_/__detail::/'`
+    mv $f $newname
+done
+for f in *__parallel_*; do
+    newname=`echo $f | sed 's/__parallel_/__parallel::/'`
+    mv $f $newname
+done
+for f in *__profile_*; do
+    newname=`echo $f | sed 's/__profile_/__profile::/'`
+    mv $f $newname
+done
+for f in *__atomic0_*; do
+    newname=`echo $f | sed 's/__atomic0_/__atomic0::/'`
+    mv $f $newname
+done
+for f in *__atomic2_*; do
+    newname=`echo $f | sed 's/__atomic2_/__atomic2::/'`
+    mv $f $newname
+done
+
+# Then, clean up other top-level namespaces.
+for f in std_tr1_*; do
+    newname=`echo $f | sed 's/^std_tr1_/std::tr1::/'`
+    mv $f $newname
+done
+for f in std_*; do
+    newname=`echo $f | sed 's/^std_/std::/'`
+    mv $f $newname
+done
+for f in __gnu_cxx_*; do
+    newname=`echo $f | sed 's/^__gnu_cxx_/__gnu_cxx::/'`
+    mv $f $newname
+done
+for f in __gnu_debug_*; do
+    newname=`echo $f | sed 's/^__gnu_debug_/__gnu_debug::/'`
+    mv $f $newname
+done
+for f in __gnu_parallel_*; do
+    newname=`echo $f | sed 's/^__gnu_parallel_/__gnu_parallel::/'`
+    mv $f $newname
+done
+for f in __gnu_profile_*; do
+    newname=`echo $f | sed 's/^__gnu_profile_/__gnu_profile::/'`
+    mv $f $newname
+done
+for f in __gnu_pbds_*; do
+    newname=`echo $f | sed 's/^__gnu_pbds_/__gnu_pbds::/'`
+    mv $f $newname
+done
+for f in __cxxabiv1_*; do
+    newname=`echo $f | sed 's/^__cxxabiv1_/abi::/'`
+    mv $f $newname
+done
+
+# Then piecemeal nested classes
+for f in *__future_base_*; do
+    newname=`echo $f | sed 's/__future_base_/__future_base::/'`
+    mv $f $newname
+done
+
+
+
+# Generic removal bits, where there are things in the generated man
+# pages that need to be killed.
+for f in *_libstdc__-v3_*; do
+    rm $f
+done
+
+for f in *_src_*; do
+    rm $f
+done
+
+
+# Also, for some reason, typedefs don't get their own man pages.  Sigh.
+for f in ios streambuf istream ostream iostream stringbuf \
+	 istringstream ostringstream stringstream filebuf ifstream \
+	 ofstream fstream string;
+do
+    echo ".so man3/std::basic_${f}.3" > std::${f}.3
+    echo ".so man3/std::basic_${f}.3" > std::w${f}.3
+done
+
+echo ::
+echo :: Man pages in ${outdir}/man
+fi
+
+# all done
+echo ::
+
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/testsuite_flags.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/testsuite_flags.in
new file mode 100755
index 000000000..457adaf4d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/scripts/testsuite_flags.in
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+#
+# This script computes the various flags needed to run GNU C++ testsuites
+# (compiler specific as well as library specific). 
+#
+# Written by Benjamin Kosnik <bkoz@redhat.com>
+#            Gabriel Dos Reis <gdr@codesourcery.com>
+#
+
+# Print a message saying how this script is intended to be invoked
+print_usage() {
+    cat <<EOF
+Usage: 
+    testsuite_flags --install-includes
+		    --build-includes
+		    --build-cxx
+		    --build-cc
+		    --install-cxx
+		    --cxxflags
+		    --cxxpchflags
+		    --cxxldflags
+EOF
+}
+
+# Establish configure-generated directory structure.
+BUILD_DIR=@glibcxx_builddir@
+SRC_DIR=@glibcxx_srcdir@
+PREFIX_DIR=@glibcxx_prefixdir@
+query=$1
+
+case ${query} in
+    --install-includes)
+      INCLUDES="-I${SRC_DIR}/testsuite/util"
+      echo ${INCLUDES}
+      ;;
+    --build-includes)
+      INCLUDES="-nostdinc++ @GLIBCXX_INCLUDES@ 
+                -I${SRC_DIR}/include/backward -I${SRC_DIR}/testsuite/util"
+      echo ${INCLUDES}
+      ;;
+    --install-cxx)
+      CXX=${PREFIX_DIR}/bin/g++
+      echo ${CXX}
+      ;;
+    --build-cxx)
+      CXX_build="@CXX@"
+      CXX=`echo "$CXX_build" | sed 's,gcc/xgcc ,gcc/g++ ,'`
+      echo ${CXX}
+      ;;
+    --build-cc)
+      CC_build="@CC@"
+      CC="$CC_build"
+      echo ${CC}
+      ;;
+    --cxxflags)
+      CXXFLAGS_default="-g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0"
+      CXXFLAGS_config="@SECTION_FLAGS@ @CXXFLAGS@ @EXTRA_CXX_FLAGS@"
+      echo ${CXXFLAGS_default} ${CXXFLAGS_config}
+      ;;
+    --cxxparallelflags)
+      CXXFLAGS_parallel="-D_GLIBCXX_PARALLEL -fopenmp
+			 -B${BUILD_DIR}/../libgomp 
+                         -I${BUILD_DIR}/../libgomp 
+			 -L${BUILD_DIR}/../libgomp/.libs -lgomp"
+      echo ${CXXFLAGS_parallel}
+      ;;
+    --cxxpchflags)
+      PCHFLAGS="@glibcxx_PCHFLAGS@"
+      echo ${PCHFLAGS}
+      ;;
+    --cxxldflags)
+      SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@"
+      echo ${SECTIONLDFLAGS}
+      ;;
+    *)
+      print_usage
+      ;;
+esac
+
+exit 0
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.am
new file mode 100644
index 000000000..9a3568551
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.am
@@ -0,0 +1,483 @@
+## Makefile for the src subdirectory of the GNU C++ Standard library.
+##
+## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+## 2006, 2007, 2008, 2009, 2010, 2011
+## Free Software Foundation, Inc.
+##
+## This file is part of the libstdc++ version 3 distribution.
+## Process this file with automake to produce Makefile.in.
+
+## This file is part of the GNU ISO C++ Library.  This library is free
+## software; you can redistribute it and/or modify it under the
+## terms of the GNU General Public License as published by the
+## Free Software Foundation; either version 3, or (at your option)
+## any later version.
+
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License along
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/fragment.am
+
+# Cross compiler support.
+toolexeclib_LTLIBRARIES = libstdc++.la
+
+# Symbol versioning for shared libraries.
+if ENABLE_SYMVERS
+libstdc++-symbols.ver:  ${glibcxx_srcdir}/$(SYMVER_FILE) \
+		$(port_specific_symbol_files)
+	cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver
+	chmod +w ./libstdc++-symbols.ver
+	if test "x$(port_specific_symbol_files)" != x; then \
+	  if grep '^# Appended to version file.' \
+	       $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+	    cat $(port_specific_symbol_files) >> $@; \
+	  else \
+	    sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+	    sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+	    cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+	    rm tmp.top tmp.bottom; \
+	  fi; \
+	fi
+
+CLEANFILES = libstdc++-symbols.ver
+
+if ENABLE_SYMVERS_GNU
+if ENABLE_SYMVERS_SOL2
+version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2
+version_dep = libstdc++-symbols.ver-sol2
+libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver
+	sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \
+	 > $@ || (rm -f $@ ; exit 1)
+else
+version_arg = -Wl,--version-script=libstdc++-symbols.ver
+version_dep = libstdc++-symbols.ver
+endif
+endif
+if ENABLE_SYMVERS_GNU_NAMESPACE
+version_arg = -Wl,--version-script=libstdc++-symbols.ver
+version_dep = libstdc++-symbols.ver
+endif
+if ENABLE_SYMVERS_SUN
+version_arg = -Wl,-M,libstdc++-symbols.ver-sun
+version_dep = libstdc++-symbols.ver-sun
+libstdc++-symbols.ver-sun : libstdc++-symbols.ver \
+		$(toplevel_srcdir)/contrib/make_sunver.pl \
+		$(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)
+	CXXFILT="$(CXXFILT)"; export CXXFILT; \
+	perl $(toplevel_srcdir)/contrib/make_sunver.pl \
+	  libstdc++-symbols.ver \
+	  $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \
+	 `echo $(libstdc___la_LIBADD) | \
+	    sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+	 > $@ || (rm -f $@ ; exit 1)
+endif
+if ENABLE_SYMVERS_DARWIN
+version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
+version_dep = libstdc++-symbols.explist
+libstdc++-symbols.explist : libstdc++-symbols.ver \
+		${glibcxx_srcdir}/scripts/make_exports.pl \
+		$(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)
+	perl ${glibcxx_srcdir}/scripts/make_exports.pl \
+	  libstdc++-symbols.ver \
+	  $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \
+	 `echo $(libstdc___la_LIBADD) | \
+	    sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+	 > $@ || (rm -f $@ ; exit 1)
+endif
+
+CLEANFILES += $(version_dep)
+else
+version_arg =
+version_dep =
+endif
+
+
+# Source files linked in via configuration/make substitution for a
+# particular host.
+host_sources = \
+	atomicity.cc \
+	codecvt_members.cc \
+	collate_members.cc \
+	ctype_members.cc \
+	messages_members.cc \
+	monetary_members.cc \
+	numeric_members.cc \
+	time_members.cc
+
+codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true
+
+collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true
+
+ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true
+
+messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true
+
+monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true
+
+numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true
+
+time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true
+
+atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
+atomicity.cc: ${atomicity_file}
+	$(LN_S) ${atomicity_file} ./atomicity.cc || true
+
+# Source files linked in via configuration/make substitution for a
+# particular host, but with ad hoc naming rules.
+host_sources_extra = \
+	basic_file.cc c++locale.cc \
+	${inst_sources} ${ldbl_compat_sources} ${parallel_sources}
+
+c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true
+
+basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
+
+if ENABLE_PARALLEL
+parallel_sources = parallel_settings.cc \
+		   compatibility-parallel_list.cc \
+		   compatibility-parallel_list-2.cc
+else
+parallel_sources =
+endif
+
+if GLIBCXX_LDBL_COMPAT
+ldbl_compat_sources = compatibility-ldbl.cc
+else
+ldbl_compat_sources =
+endif
+
+if ENABLE_EXTERN_TEMPLATE
+XTEMPLATE_FLAGS = -fno-implicit-templates
+inst_sources = \
+	allocator-inst.cc \
+	concept-inst.cc \
+	ext-inst.cc \
+	fstream-inst.cc \
+	ios-inst.cc \
+	iostream-inst.cc \
+	istream-inst.cc \
+	locale-inst.cc \
+	misc-inst.cc \
+	ostream-inst.cc \
+	sstream-inst.cc \
+	streambuf-inst.cc \
+	string-inst.cc \
+	wlocale-inst.cc \
+	wstring-inst.cc
+else
+XTEMPLATE_FLAGS =
+inst_sources =
+endif
+
+# Sources present in the src directory, always present.
+sources = \
+	atomic.cc \
+	bitmap_allocator.cc \
+	pool_allocator.cc \
+	mt_allocator.cc \
+	codecvt.cc \
+	compatibility.cc \
+	compatibility-c++0x.cc \
+	compatibility-debug_list.cc \
+	compatibility-debug_list-2.cc \
+	compatibility-list.cc \
+	compatibility-list-2.cc \
+	complex_io.cc \
+	ctype.cc \
+	debug.cc \
+	functexcept.cc \
+	functional.cc \
+	globals_io.cc \
+	hash_c++0x.cc \
+	hash_tr1.cc \
+	hashtable_c++0x.cc \
+	hashtable_tr1.cc \
+	ios.cc \
+	ios_failure.cc \
+	ios_init.cc \
+	ios_locale.cc \
+	limits.cc \
+	list.cc \
+	locale.cc \
+	locale_init.cc \
+	locale_facets.cc \
+	localename.cc \
+	math_stubs_float.cc \
+	math_stubs_long_double.cc \
+	stdexcept.cc \
+	strstream.cc \
+	system_error.cc \
+	tree.cc \
+	istream.cc \
+	placeholders.cc \
+	regex.cc \
+	shared_ptr.cc \
+	streambuf.cc \
+	mutex.cc \
+	condition_variable.cc \
+	chrono.cc \
+	thread.cc \
+	future.cc \
+	valarray.cc \
+	${host_sources} \
+	${host_sources_extra}
+
+vpath % $(top_srcdir)/src
+vpath % $(top_srcdir)
+
+libstdc___la_SOURCES = $(sources)
+
+libstdc___la_LIBADD = \
+	$(GLIBCXX_LIBS) \
+	$(top_builddir)/libsupc++/libsupc++convenience.la
+
+libstdc___la_DEPENDENCIES = \
+	${version_dep} \
+	$(top_builddir)/libsupc++/libsupc++convenience.la
+
+libstdc___la_LDFLAGS = \
+	-version-info $(libtool_VERSION) ${version_arg} -lm
+
+libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
+
+# Use special rules for the deprecated source files so that they find
+# deprecated include files.
+GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include
+strstream.lo: strstream.cc
+	$(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+strstream.o: strstream.cc
+	$(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+
+# Use special rules for the concept-checking instantiations so that all
+# the generated template functions are also instantiated.  Force the checks
+# to be on so that the instantiations are actually seen.
+concept-inst.lo: concept-inst.cc
+	$(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+concept-inst.o: concept-inst.cc
+	$(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+
+# Use special rules for parallel mode compilation.
+PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp
+parallel_settings.lo: parallel_settings.cc
+	$(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+parallel_settings.o: parallel_settings.cc
+	$(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+
+compatibility-parallel_list.lo: compatibility-parallel_list.cc
+	$(LTCXXCOMPILE) -c $<
+compatibility-parallel_list.o: compatibility-parallel_list.cc
+	$(CXXCOMPILE) -c $<
+
+compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc
+	$(LTCXXCOMPILE) -c $<
+compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc
+	$(CXXCOMPILE) -c $<
+
+# Use special rules for the C++0x sources so that the proper flags are passed.
+functexcept.lo: functexcept.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+functexcept.o: functexcept.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+shared_ptr.lo: shared_ptr.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+shared_ptr.o: shared_ptr.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+system_error.lo: system_error.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+system_error.o: system_error.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+mutex.lo: mutex.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+mutex.o: mutex.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+condition_variable.lo: condition_variable.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+condition_variable.o: condition_variable.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+compatibility-c++0x.lo: compatibility-c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+compatibility-c++0x.o: compatibility-c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+functional.lo: functional.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+functional.o: functional.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+hash_c++0x.lo: hash_c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+hash_c++0x.o: hash_c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+hashtable_c++0x.lo: hashtable_c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+hashtable_c++0x.o: hashtable_c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+limits.lo: limits.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+limits.o: limits.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+atomic.lo: atomic.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+atomic.o: atomic.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+fstream-inst.lo: fstream-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+fstream-inst.o: fstream-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+string-inst.lo: string-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+string-inst.o: string-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+wstring-inst.lo: wstring-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+wstring-inst.o: wstring-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+chrono.lo: chrono.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+chrono.o: chrono.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+thread.lo: thread.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+thread.o: thread.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+future.lo: future.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+future.o: future.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+regex.lo: regex.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+regex.o: regex.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+debug.lo: debug.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+debug.o: debug.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+placeholders.lo: placeholders.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+placeholders.o: placeholders.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+if GLIBCXX_LDBL_COMPAT
+# Use special rules for compatibility-ldbl.cc compilation, as we need to
+# pass -mlong-double-64.
+compatibility-ldbl.lo: compatibility-ldbl.cc
+	$(LTCXXCOMPILE) -mlong-double-64 -c $<
+compatibility-ldbl.o: compatibility-ldbl.cc
+	$(CXXCOMPILE) -mlong-double-64 -c $<
+endif
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way.  Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
+# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+# as the occasion calls for it.
+AM_CXXFLAGS = \
+	$(XTEMPLATE_FLAGS) \
+	$(WARN_CXXFLAGS) \
+	$(OPTIMIZE_CXXFLAGS) \
+	$(CONFIG_CXXFLAGS)
+
+
+# libstdc++ libtool notes
+
+# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
+# last. (That way, things like -O2 passed down from the toplevel can
+# be overridden by --enable-debug.)
+
+# 2) In general, libtool expects an argument such as `--tag=CXX' when
+# using the C++ compiler, because that will enable the settings
+# detected when C++ support was being configured.  However, when no
+# such flag is given in the command line, libtool attempts to figure
+# it out by matching the compiler name in each configuration section
+# against a prefix of the command line.  The problem is that, if the
+# compiler name and its initial flags stored in the libtool
+# configuration file don't match those in the command line, libtool
+# can't decide which configuration to use, and it gives up.  The
+# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
+# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
+# attempt to infer which configuration to use
+LTCXXCOMPILE = $(LIBTOOL) --tag CXX \
+	       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	       $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	       $(AM_CXXFLAGS) $(CXXFLAGS)
+
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+
+# 3) We'd have a problem when building the shared libstdc++ object if
+# the rules automake generates would be used.  We cannot allow g++ to
+# be used since this would add -lstdc++ to the link line which of
+# course is problematic at this point.  So, we get the top-level
+# directory to configure libstdc++-v3 to use gcc as the C++
+# compilation driver.
+CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	  $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+
+# Added bits to build debug library.
+if GLIBCXX_BUILD_DEBUG
+all-local: build_debug
+install-data-local: install_debug
+else
+all-local:
+install-data-local:
+endif
+
+debugdir = debug
+
+# Build a set of debug objects here.
+# Take care to fix all possibly-relative paths.
+stamp-debug:
+	if test ! -d ${debugdir}; then \
+	  mkdir -p ${debugdir}; \
+	  (cd ${debugdir}; \
+	  sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \
+	      -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \
+	      -e 's/srcdir = \.\./srcdir = ..\/../' \
+	      -e 's/VPATH = \.\./VPATH = ..\/../' \
+	      -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \
+	      -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \
+	      -e 's/all-local: build_debug/all-local:/' \
+	      -e 's/install-data-local: install_debug/install-data-local:/' \
+	  < ../Makefile > Makefile) ; \
+	fi; \
+	echo `date` > stamp-debug;
+
+build_debug: stamp-debug
+	(cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all)
+
+# Install debug library here.
+install_debug:
+	(cd ${debugdir} && $(MAKE) \
+	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.in
new file mode 100644
index 000000000..b454f66dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/Makefile.in
@@ -0,0 +1,1026 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+	$(top_srcdir)/../config/enable.m4 \
+	$(top_srcdir)/../config/futex.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/lthostflags.m4 \
+	$(top_srcdir)/../config/multi.m4 \
+	$(top_srcdir)/../config/no-executables.m4 \
+	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/stdint.m4 \
+	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
+	ctype_members.lo messages_members.lo monetary_members.lo \
+	numeric_members.lo time_members.lo
+@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = allocator-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	concept-inst.lo ext-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	fstream-inst.lo ios-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	iostream-inst.lo istream-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst.lo misc-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	ostream-inst.lo sstream-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.lo string-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst.lo wstring-inst.lo
+@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo
+@ENABLE_PARALLEL_TRUE@am__objects_4 = parallel_settings.lo \
+@ENABLE_PARALLEL_TRUE@	compatibility-parallel_list.lo \
+@ENABLE_PARALLEL_TRUE@	compatibility-parallel_list-2.lo
+am__objects_5 = basic_file.lo c++locale.lo $(am__objects_2) \
+	$(am__objects_3) $(am__objects_4)
+am__objects_6 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
+	mt_allocator.lo codecvt.lo compatibility.lo \
+	compatibility-c++0x.lo compatibility-debug_list.lo \
+	compatibility-debug_list-2.lo compatibility-list.lo \
+	compatibility-list-2.lo complex_io.lo ctype.lo debug.lo \
+	functexcept.lo functional.lo globals_io.lo hash_c++0x.lo \
+	hash_tr1.lo hashtable_c++0x.lo hashtable_tr1.lo ios.lo \
+	ios_failure.lo ios_init.lo ios_locale.lo limits.lo list.lo \
+	locale.lo locale_init.lo locale_facets.lo localename.lo \
+	math_stubs_float.lo math_stubs_long_double.lo stdexcept.lo \
+	strstream.lo system_error.lo tree.lo istream.lo \
+	placeholders.lo regex.lo shared_ptr.lo streambuf.lo mutex.lo \
+	condition_variable.lo chrono.lo thread.lo future.lo \
+	valarray.lo $(am__objects_1) $(am__objects_5)
+am_libstdc___la_OBJECTS = $(am__objects_6)
+libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+SOURCES = $(libstdc___la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASIC_FILE_CC = @BASIC_FILE_CC@
+BASIC_FILE_H = @BASIC_FILE_H@
+CC = @CC@
+CCODECVT_CC = @CCODECVT_CC@
+CCOLLATE_CC = @CCOLLATE_CC@
+CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
+CLOCALE_CC = @CLOCALE_CC@
+CLOCALE_H = @CLOCALE_H@
+CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+CMESSAGES_CC = @CMESSAGES_CC@
+CMESSAGES_H = @CMESSAGES_H@
+CMONEY_CC = @CMONEY_CC@
+CNUMERIC_CC = @CNUMERIC_CC@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+CSTDIO_H = @CSTDIO_H@
+CTIME_CC = @CTIME_CC@
+CTIME_H = @CTIME_H@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXFILT = @CXXFILT@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_INCLUDE_DIR = @C_INCLUDE_DIR@
+DBLATEX = @DBLATEX@
+DBTOEPUB = @DBTOEPUB@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+EXEEXT = @EXEEXT@
+EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+FGREP = @FGREP@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_LIBS = @GLIBCXX_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+OPT_LDFLAGS = @OPT_LDFLAGS@
+OS_INC_SRCDIR = @OS_INC_SRCDIR@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+RANLIB = @RANLIB@
+RUBY = @RUBY@
+SECTION_FLAGS = @SECTION_FLAGS@
+SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYMVER_FILE = @SYMVER_FILE@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_FLAGS = @WARN_FLAGS@
+WERROR = @WERROR@
+XMLLINT = @XMLLINT@
+XSLTPROC = @XSLTPROC@
+XSL_STYLE_DIR = @XSL_STYLE_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+check_msgfmt = @check_msgfmt@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+gxx_include_dir = @gxx_include_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_srcdir = @toplevel_srcdir@
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MAINT_CHARSET = latin1
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
+
+# These bits are all figured out from configure.  Look in acinclude.m4
+# or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+CONFIG_CXXFLAGS = \
+	$(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
+
+WARN_CXXFLAGS = \
+	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
+# Cross compiler support.
+toolexeclib_LTLIBRARIES = libstdc++.la
+@ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep)
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
+@ENABLE_SYMVERS_FALSE@version_arg = 
+@ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script=libstdc++-symbols.ver
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_FALSE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script=libstdc++-symbols.ver
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-M,libstdc++-symbols.ver-sun
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.explist
+@ENABLE_SYMVERS_FALSE@version_dep = 
+@ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_FALSE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver-sol2
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@version_dep = libstdc++-symbols.ver-sun
+
+# Source files linked in via configuration/make substitution for a
+# particular host.
+host_sources = \
+	atomicity.cc \
+	codecvt_members.cc \
+	collate_members.cc \
+	ctype_members.cc \
+	messages_members.cc \
+	monetary_members.cc \
+	numeric_members.cc \
+	time_members.cc
+
+atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
+
+# Source files linked in via configuration/make substitution for a
+# particular host, but with ad hoc naming rules.
+host_sources_extra = \
+	basic_file.cc c++locale.cc \
+	${inst_sources} ${ldbl_compat_sources} ${parallel_sources}
+
+@ENABLE_PARALLEL_FALSE@parallel_sources = 
+@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_settings.cc \
+@ENABLE_PARALLEL_TRUE@		   compatibility-parallel_list.cc \
+@ENABLE_PARALLEL_TRUE@		   compatibility-parallel_list-2.cc
+
+@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = 
+@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
+@ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS = 
+@ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
+@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = 
+@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	allocator-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	concept-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	ext-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	fstream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	ios-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	iostream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	istream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	misc-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	ostream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-inst.cc
+
+
+# Sources present in the src directory, always present.
+sources = \
+	atomic.cc \
+	bitmap_allocator.cc \
+	pool_allocator.cc \
+	mt_allocator.cc \
+	codecvt.cc \
+	compatibility.cc \
+	compatibility-c++0x.cc \
+	compatibility-debug_list.cc \
+	compatibility-debug_list-2.cc \
+	compatibility-list.cc \
+	compatibility-list-2.cc \
+	complex_io.cc \
+	ctype.cc \
+	debug.cc \
+	functexcept.cc \
+	functional.cc \
+	globals_io.cc \
+	hash_c++0x.cc \
+	hash_tr1.cc \
+	hashtable_c++0x.cc \
+	hashtable_tr1.cc \
+	ios.cc \
+	ios_failure.cc \
+	ios_init.cc \
+	ios_locale.cc \
+	limits.cc \
+	list.cc \
+	locale.cc \
+	locale_init.cc \
+	locale_facets.cc \
+	localename.cc \
+	math_stubs_float.cc \
+	math_stubs_long_double.cc \
+	stdexcept.cc \
+	strstream.cc \
+	system_error.cc \
+	tree.cc \
+	istream.cc \
+	placeholders.cc \
+	regex.cc \
+	shared_ptr.cc \
+	streambuf.cc \
+	mutex.cc \
+	condition_variable.cc \
+	chrono.cc \
+	thread.cc \
+	future.cc \
+	valarray.cc \
+	${host_sources} \
+	${host_sources_extra}
+
+libstdc___la_SOURCES = $(sources)
+libstdc___la_LIBADD = \
+	$(GLIBCXX_LIBS) \
+	$(top_builddir)/libsupc++/libsupc++convenience.la
+
+libstdc___la_DEPENDENCIES = \
+	${version_dep} \
+	$(top_builddir)/libsupc++/libsupc++convenience.la
+
+libstdc___la_LDFLAGS = \
+	-version-info $(libtool_VERSION) ${version_arg} -lm
+
+libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
+
+# Use special rules for the deprecated source files so that they find
+# deprecated include files.
+GLIBCXX_INCLUDE_DIR = $(glibcxx_builddir)/include
+
+# Use special rules for parallel mode compilation.
+PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way.  Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
+# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+# as the occasion calls for it.
+AM_CXXFLAGS = \
+	$(XTEMPLATE_FLAGS) \
+	$(WARN_CXXFLAGS) \
+	$(OPTIMIZE_CXXFLAGS) \
+	$(CONFIG_CXXFLAGS)
+
+
+# libstdc++ libtool notes
+
+# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
+# last. (That way, things like -O2 passed down from the toplevel can
+# be overridden by --enable-debug.)
+
+# 2) In general, libtool expects an argument such as `--tag=CXX' when
+# using the C++ compiler, because that will enable the settings
+# detected when C++ support was being configured.  However, when no
+# such flag is given in the command line, libtool attempts to figure
+# it out by matching the compiler name in each configuration section
+# against a prefix of the command line.  The problem is that, if the
+# compiler name and its initial flags stored in the libtool
+# configuration file don't match those in the command line, libtool
+# can't decide which configuration to use, and it gives up.  The
+# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
+# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
+# attempt to infer which configuration to use
+LTCXXCOMPILE = $(LIBTOOL) --tag CXX \
+	       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	       $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	       $(AM_CXXFLAGS) $(CXXFLAGS)
+
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+
+# 3) We'd have a problem when building the shared libstdc++ object if
+# the rules automake generates would be used.  We cannot allow g++ to
+# be used since this would add -lstdc++ to the link line which of
+# course is problematic at this point.  So, we get the top-level
+# directory to configure libstdc++-v3 to use gcc as the C++
+# compilation driver.
+CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	  $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+
+debugdir = debug
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign --ignore-deps src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
+	}
+
+uninstall-toolexeclibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
+	done
+
+clean-toolexeclibLTLIBRARIES:
+	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+	@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES) 
+	$(libstdc___la_LINK) -rpath $(toolexeclibdir) $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+.cc.o:
+	$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) all-local
+installdirs:
+	for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-toolexeclibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-toolexeclibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-toolexeclibLTLIBRARIES ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags dvi dvi-am html html-am info \
+	info-am install install-am install-data install-data-am \
+	install-data-local install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip \
+	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-toolexeclibLTLIBRARIES
+
+
+# Symbol versioning for shared libraries.
+@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver:  ${glibcxx_srcdir}/$(SYMVER_FILE) \
+@ENABLE_SYMVERS_TRUE@		$(port_specific_symbol_files)
+@ENABLE_SYMVERS_TRUE@	cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver
+@ENABLE_SYMVERS_TRUE@	chmod +w ./libstdc++-symbols.ver
+@ENABLE_SYMVERS_TRUE@	if test "x$(port_specific_symbol_files)" != x; then \
+@ENABLE_SYMVERS_TRUE@	  if grep '^# Appended to version file.' \
+@ENABLE_SYMVERS_TRUE@	       $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+@ENABLE_SYMVERS_TRUE@	    cat $(port_specific_symbol_files) >> $@; \
+@ENABLE_SYMVERS_TRUE@	  else \
+@ENABLE_SYMVERS_TRUE@	    sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+@ENABLE_SYMVERS_TRUE@	    sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+@ENABLE_SYMVERS_TRUE@	    cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+@ENABLE_SYMVERS_TRUE@	    rm tmp.top tmp.bottom; \
+@ENABLE_SYMVERS_TRUE@	  fi; \
+@ENABLE_SYMVERS_TRUE@	fi
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@	sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \
+@ENABLE_SYMVERS_GNU_TRUE@@ENABLE_SYMVERS_SOL2_TRUE@@ENABLE_SYMVERS_TRUE@	 > $@ || (rm -f $@ ; exit 1)
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver-sun : libstdc++-symbols.ver \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@		$(toplevel_srcdir)/contrib/make_sunver.pl \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@		$(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	CXXFILT="$(CXXFILT)"; export CXXFILT; \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	perl $(toplevel_srcdir)/contrib/make_sunver.pl \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	  libstdc++-symbols.ver \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	  $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	 `echo $(libstdc___la_LIBADD) | \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	    sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+@ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@	 > $@ || (rm -f $@ ; exit 1)
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.explist : libstdc++-symbols.ver \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@		${glibcxx_srcdir}/scripts/make_exports.pl \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@		$(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	perl ${glibcxx_srcdir}/scripts/make_exports.pl \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	  libstdc++-symbols.ver \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	  $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	 `echo $(libstdc___la_LIBADD) | \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	    sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@	 > $@ || (rm -f $@ ; exit 1)
+
+codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true
+
+collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true
+
+ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true
+
+messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true
+
+monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true
+
+numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true
+
+time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true
+atomicity.cc: ${atomicity_file}
+	$(LN_S) ${atomicity_file} ./atomicity.cc || true
+
+c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true
+
+basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
+	$(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
+
+vpath % $(top_srcdir)/src
+vpath % $(top_srcdir)
+strstream.lo: strstream.cc
+	$(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+strstream.o: strstream.cc
+	$(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+
+# Use special rules for the concept-checking instantiations so that all
+# the generated template functions are also instantiated.  Force the checks
+# to be on so that the instantiations are actually seen.
+concept-inst.lo: concept-inst.cc
+	$(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+concept-inst.o: concept-inst.cc
+	$(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+parallel_settings.lo: parallel_settings.cc
+	$(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+parallel_settings.o: parallel_settings.cc
+	$(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+
+compatibility-parallel_list.lo: compatibility-parallel_list.cc
+	$(LTCXXCOMPILE) -c $<
+compatibility-parallel_list.o: compatibility-parallel_list.cc
+	$(CXXCOMPILE) -c $<
+
+compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc
+	$(LTCXXCOMPILE) -c $<
+compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc
+	$(CXXCOMPILE) -c $<
+
+# Use special rules for the C++0x sources so that the proper flags are passed.
+functexcept.lo: functexcept.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+functexcept.o: functexcept.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+shared_ptr.lo: shared_ptr.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+shared_ptr.o: shared_ptr.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+system_error.lo: system_error.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+system_error.o: system_error.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+mutex.lo: mutex.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+mutex.o: mutex.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+condition_variable.lo: condition_variable.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+condition_variable.o: condition_variable.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+compatibility-c++0x.lo: compatibility-c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+compatibility-c++0x.o: compatibility-c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+functional.lo: functional.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+functional.o: functional.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+hash_c++0x.lo: hash_c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+hash_c++0x.o: hash_c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+hashtable_c++0x.lo: hashtable_c++0x.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+hashtable_c++0x.o: hashtable_c++0x.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+limits.lo: limits.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+limits.o: limits.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+atomic.lo: atomic.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+atomic.o: atomic.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+fstream-inst.lo: fstream-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+fstream-inst.o: fstream-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+string-inst.lo: string-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+string-inst.o: string-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+wstring-inst.lo: wstring-inst.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+wstring-inst.o: wstring-inst.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+chrono.lo: chrono.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+chrono.o: chrono.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+thread.lo: thread.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+thread.o: thread.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+future.lo: future.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+future.o: future.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+regex.lo: regex.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+regex.o: regex.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+debug.lo: debug.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+debug.o: debug.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+placeholders.lo: placeholders.cc
+	$(LTCXXCOMPILE) -std=gnu++0x -c $<
+placeholders.o: placeholders.cc
+	$(CXXCOMPILE) -std=gnu++0x -c $<
+
+# Use special rules for compatibility-ldbl.cc compilation, as we need to
+# pass -mlong-double-64.
+@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc
+@GLIBCXX_LDBL_COMPAT_TRUE@	$(LTCXXCOMPILE) -mlong-double-64 -c $<
+@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc
+@GLIBCXX_LDBL_COMPAT_TRUE@	$(CXXCOMPILE) -mlong-double-64 -c $<
+
+# Added bits to build debug library.
+@GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug
+@GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug
+@GLIBCXX_BUILD_DEBUG_FALSE@all-local:
+@GLIBCXX_BUILD_DEBUG_FALSE@install-data-local:
+
+# Build a set of debug objects here.
+# Take care to fix all possibly-relative paths.
+stamp-debug:
+	if test ! -d ${debugdir}; then \
+	  mkdir -p ${debugdir}; \
+	  (cd ${debugdir}; \
+	  sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \
+	      -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \
+	      -e 's/srcdir = \.\./srcdir = ..\/../' \
+	      -e 's/VPATH = \.\./VPATH = ..\/../' \
+	      -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \
+	      -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \
+	      -e 's/all-local: build_debug/all-local:/' \
+	      -e 's/install-data-local: install_debug/install-data-local:/' \
+	  < ../Makefile > Makefile) ; \
+	fi; \
+	echo `date` > stamp-debug;
+
+build_debug: stamp-debug
+	(cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all)
+
+# Install debug library here.
+install_debug:
+	(cd ${debugdir} && $(MAKE) \
+	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/allocator-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/allocator-inst.cc
new file mode 100644
index 000000000..801468016
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/allocator-inst.cc
@@ -0,0 +1,40 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <memory>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class allocator<char>;
+  template class allocator<wchar_t>;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/atomic.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/atomic.cc
new file mode 100644
index 000000000..e655dd3e8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/atomic.cc
@@ -0,0 +1,146 @@
+// Support for atomic operations -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "gstdint.h"
+#include <atomic>
+#include <mutex>
+
+#define LOGSIZE 4
+
+namespace
+{
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+  std::mutex&
+  get_atomic_mutex()
+  {
+    static std::mutex atomic_mutex;
+    return atomic_mutex;
+  }
+#endif
+
+  std::__atomic_flag_base flag_table[ 1 << LOGSIZE ] =
+    {
+      ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT,
+      ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT,
+      ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT,
+      ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT,
+    };
+} // anonymous namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  namespace __atomic0
+  {
+    bool
+    atomic_flag::test_and_set(memory_order)
+    {
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+      lock_guard<mutex> __lock(get_atomic_mutex());
+#endif
+      bool result = _M_i;
+      _M_i = true;
+      return result;
+    }
+
+    void
+    atomic_flag::clear(memory_order)
+    {
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+      lock_guard<mutex> __lock(get_atomic_mutex());
+#endif
+      _M_i = false;
+    }
+
+  _GLIBCXX_BEGIN_EXTERN_C
+
+  bool
+  atomic_flag_test_and_set_explicit(__atomic_flag_base* __a,
+				    memory_order __m) _GLIBCXX_NOTHROW
+  {
+    atomic_flag* d = static_cast<atomic_flag*>(__a);
+    return d->test_and_set(__m);
+  }
+
+  void
+  atomic_flag_clear_explicit(__atomic_flag_base* __a,
+			     memory_order __m) _GLIBCXX_NOTHROW
+  {
+    atomic_flag* d = static_cast<atomic_flag*>(__a);
+    return d->clear(__m);
+  }
+
+  void
+  __atomic_flag_wait_explicit(__atomic_flag_base* __a,
+			      memory_order __x) _GLIBCXX_NOTHROW
+  {
+    while (atomic_flag_test_and_set_explicit(__a, __x))
+      { };
+  }
+
+  _GLIBCXX_CONST __atomic_flag_base*
+  __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW
+  {
+    uintptr_t __u = reinterpret_cast<uintptr_t>(__z);
+    __u += (__u >> 2) + (__u << 4);
+    __u += (__u >> 7) + (__u << 5);
+    __u += (__u >> 17) + (__u << 13);
+    if (sizeof(uintptr_t) > 4)
+      __u += (__u >> 31);
+    __u &= ~((~uintptr_t(0)) << LOGSIZE);
+    return flag_table + __u;
+  }
+
+  _GLIBCXX_END_EXTERN_C
+
+  } // namespace __atomic0
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+// XXX GLIBCXX_ABI Deprecated
+// gcc-4.5.0
+// <atomic> signature changes
+
+// The rename syntax for default exported names is
+//   asm (".symver name1,exportedname@GLIBCXX_3.4")
+//   asm (".symver name2,exportedname@@GLIBCXX_3.4.5")
+// In the future, GLIBCXX_ABI > 6 should remove all uses of
+// _GLIBCXX_*_SYMVER macros in this file.
+
+#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
+    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
+    && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
+
+#define _GLIBCXX_ASM_SYMVER(cur, old, version) \
+   asm (".symver " #cur "," #old "@@" #version);
+
+_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11)
+
+_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order, _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order, GLIBCXX_3.4.11)
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/bitmap_allocator.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/bitmap_allocator.cc
new file mode 100644
index 000000000..a9f3a77ba
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/bitmap_allocator.cc
@@ -0,0 +1,128 @@
+// Bitmap Allocator. Out of line function definitions. -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/bitmap_allocator.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+    template class __mini_vector<
+      std::pair<bitmap_allocator<char>::_Alloc_block*,
+		bitmap_allocator<char>::_Alloc_block*> >;
+
+    template class __mini_vector<
+      std::pair<bitmap_allocator<wchar_t>::_Alloc_block*,
+		bitmap_allocator<wchar_t>::_Alloc_block*> >;
+
+    template class __mini_vector<size_t*>;
+
+    template size_t** __lower_bound(size_t**, size_t**, size_t const&, 
+				    free_list::_LT_pointer_compare);
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  size_t*
+  free_list::
+  _M_get(size_t __sz) throw(std::bad_alloc)
+  {
+#if defined __GTHREADS
+    __mutex_type& __bfl_mutex = _M_get_mutex();
+    __bfl_mutex.lock();
+#endif
+    const vector_type& __free_list = _M_get_free_list();
+    using __gnu_cxx::__detail::__lower_bound;
+    iterator __tmp = __lower_bound(__free_list.begin(), __free_list.end(), 
+				   __sz, _LT_pointer_compare());
+
+    if (__tmp == __free_list.end() || !_M_should_i_give(**__tmp, __sz))
+      {
+	// We release the lock here, because operator new is
+	// guaranteed to be thread-safe by the underlying
+	// implementation.
+#if defined __GTHREADS
+	__bfl_mutex.unlock();
+#endif
+	// Try twice to get the memory: once directly, and the 2nd
+	// time after clearing the free list. If both fail, then throw
+	// std::bad_alloc().
+	int __ctr = 2;
+	while (__ctr)
+	  {
+	    size_t* __ret = 0;
+	    --__ctr;
+	    __try
+	      {
+		__ret = reinterpret_cast<size_t*>
+		  (::operator new(__sz + sizeof(size_t)));
+	      }
+	    __catch(const std::bad_alloc&)
+	      {
+		this->_M_clear();
+	      }
+	    if (!__ret)
+	      continue;
+	    *__ret = __sz;
+	    return __ret + 1;
+	  }
+	std::__throw_bad_alloc();
+      }
+    else
+      {
+	size_t* __ret = *__tmp;
+	_M_get_free_list().erase(__tmp);
+#if defined __GTHREADS
+	__bfl_mutex.unlock();
+#endif
+	return __ret + 1;
+      }
+  }
+
+  void
+  free_list::
+  _M_clear()
+  {
+#if defined __GTHREADS
+    __gnu_cxx::__scoped_lock __bfl_lock(_M_get_mutex());
+#endif
+    vector_type& __free_list = _M_get_free_list();
+    iterator __iter = __free_list.begin();
+    while (__iter != __free_list.end())
+      {
+	::operator delete((void*)*__iter);
+	++__iter;
+      }
+    __free_list.clear();
+  }
+
+  // Instantiations.
+  template class bitmap_allocator<char>;
+  template class bitmap_allocator<wchar_t>;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/chrono.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/chrono.cc
new file mode 100644
index 000000000..6b5e669a7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/chrono.cc
@@ -0,0 +1,83 @@
+// chrono -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <chrono>
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+// conditional inclusion of sys/time.h for gettimeofday
+#if !defined(_GLIBCXX_USE_CLOCK_MONOTONIC) && \
+    !defined(_GLIBCXX_USE_CLOCK_REALTIME) && \
+     defined(_GLIBCXX_USE_GETTIMEOFDAY)
+#include <sys/time.h>
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace chrono
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   constexpr bool system_clock::is_monotonic;
+
+    system_clock::time_point
+    system_clock::now() throw ()
+    {
+#ifdef _GLIBCXX_USE_CLOCK_REALTIME
+      timespec tp;
+      // -EINVAL, -EFAULT
+      clock_gettime(CLOCK_REALTIME, &tp);
+      return time_point(duration(chrono::seconds(tp.tv_sec)
+				 + chrono::nanoseconds(tp.tv_nsec)));
+#elif defined(_GLIBCXX_USE_GETTIMEOFDAY)
+      timeval tv;
+      // EINVAL, EFAULT
+      gettimeofday(&tv, 0);
+      return time_point(duration(chrono::seconds(tv.tv_sec)
+				 + chrono::microseconds(tv.tv_usec)));
+#else
+      std::time_t __sec = std::time(0);
+      return system_clock::from_time_t(__sec);
+#endif
+    }
+    
+#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
+    constexpr bool monotonic_clock::is_monotonic;
+    
+    monotonic_clock::time_point
+    monotonic_clock::now()
+    {
+      timespec tp;
+      // -EINVAL, -EFAULT
+      clock_gettime(CLOCK_MONOTONIC, &tp);
+      return time_point(duration(chrono::seconds(tp.tv_sec)
+				 + chrono::nanoseconds(tp.tv_nsec)));
+    }
+#endif
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace chrono
+} // namespace std
+
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/codecvt.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/codecvt.cc
new file mode 100644
index 000000000..fdb0896ca
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/codecvt.cc
@@ -0,0 +1,151 @@
+// Copyright (C) 2000, 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for locale::id of standard facets that are specialized.
+ locale::id codecvt<char, char, mbstate_t>::id;
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  locale::id codecvt<wchar_t, char, mbstate_t>::id;
+#endif
+
+  codecvt<char, char, mbstate_t>::
+  codecvt(size_t __refs)
+  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_get_c_locale())
+  { }
+
+  codecvt<char, char, mbstate_t>::
+  codecvt(__c_locale __cloc, size_t __refs)
+  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
+  { }
+
+  codecvt<char, char, mbstate_t>::
+  ~codecvt()
+  { _S_destroy_c_locale(_M_c_locale_codecvt); }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_out(state_type&, const intern_type* __from, 
+	 const intern_type*, const intern_type*& __from_next,
+	 extern_type* __to, extern_type*, 
+	 extern_type*& __to_next) const
+  { 
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // According to the resolution of DR19, "If returns noconv [...]
+    // there are no changes to the values in [to, to_limit)."
+    __from_next = __from; 
+    __to_next = __to;
+    return noconv;  
+  }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_unshift(state_type&, extern_type* __to,
+             extern_type*, extern_type*& __to_next) const
+  { 
+    __to_next = __to; 
+    return noconv; 
+  }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_in(state_type&, const extern_type* __from, 
+	const extern_type*, const extern_type*& __from_next,
+	intern_type* __to, intern_type*, intern_type*& __to_next) const
+  {
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // According to the resolution of DR19, "If returns noconv [...]
+    // there are no changes to the values in [to, to_limit)."
+    __from_next = __from; 
+    __to_next = __to;
+    return noconv;  
+  }
+
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_encoding() const throw() 
+  { return 1; }
+  
+  bool 
+  codecvt<char, char, mbstate_t>::
+  do_always_noconv() const throw() 
+  { return true; }
+  
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_length (state_type&, const extern_type* __from,
+	     const extern_type* __end, size_t __max) const
+  { 
+    size_t __d = static_cast<size_t>(__end - __from);
+    return std::min(__max, __d); 
+  }
+  
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_max_length() const throw() 
+  { return 1; }
+  
+#ifdef _GLIBCXX_USE_WCHAR_T
+  // codecvt<wchar_t, char, mbstate_t> required specialization
+  codecvt<wchar_t, char, mbstate_t>::
+  codecvt(size_t __refs)
+  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_get_c_locale())
+  { }
+
+  codecvt<wchar_t, char, mbstate_t>::
+  codecvt(__c_locale __cloc, size_t __refs)
+  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
+  { }
+
+  codecvt<wchar_t, char, mbstate_t>::
+  ~codecvt()
+  { _S_destroy_c_locale(_M_c_locale_codecvt); }
+  
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_unshift(state_type&, extern_type* __to,
+	     extern_type*, extern_type*& __to_next) const
+  {
+    // XXX Probably wrong for stateful encodings
+    __to_next = __to;
+    return noconv;
+  }
+  
+  bool 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_always_noconv() const throw()
+  { return false; }
+#endif //  _GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-c++0x.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-c++0x.cc
new file mode 100644
index 000000000..08a572761
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-c++0x.cc
@@ -0,0 +1,84 @@
+// Compatibility symbols for previous versions, C++0x bits -*- C++ -*-
+
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_COMPATIBILITY_CXX0X
+#include <string>
+#include <system_error>
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# error "compatibility-c++0x.cc must be compiled with -std=gnu++0x"
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  // gcc-4.4.0
+  // <mutex> exported std::lock_error
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+  class lock_error : public exception
+  {
+  public:
+    virtual const char*
+    _GLIBCXX_CONST what() const throw();
+  };
+
+  const char*
+  lock_error::what() const throw()
+  { return "std::lock_error"; }
+#endif
+
+  // We need these due to the symbols exported since GLIBCXX_3.4.10.
+  // See libstdc++/41662 for details.
+
+#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
+  template<>
+    size_t
+    hash<string>::operator()(string __s) const
+    { return _Hash_impl::hash(__s.data(), __s.length()); }
+
+  template<>
+    size_t
+    hash<const string&>::operator()(const string& __s) const
+    { return _Hash_impl::hash(__s.data(), __s.length()); }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    size_t
+    hash<wstring>::operator()(wstring __s) const
+    { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+
+  template<>
+    size_t
+    hash<const wstring&>::operator()(const wstring& __s) const
+    { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+#endif
+#endif
+
+  template<>
+    size_t
+    hash<error_code>::operator()(error_code __e) const
+    {
+      const size_t __tmp = std::_Hash_impl::hash(__e._M_value);
+      return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp);
+    }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list-2.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list-2.cc
new file mode 100644
index 000000000..c032ff859
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list-2.cc
@@ -0,0 +1,28 @@
+// Compatibility symbols for previous versions, debug list -*- C++ -*-
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __norm {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "compatibility-list-2.cc"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list.cc
new file mode 100644
index 000000000..76cceec72
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-debug_list.cc
@@ -0,0 +1,28 @@
+// Compatibility symbols for previous versions, debug list -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __norm {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "compatibility-list.cc"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-ldbl.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-ldbl.cc
new file mode 100644
index 000000000..a9bdb8b09
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-ldbl.cc
@@ -0,0 +1,87 @@
+// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
+
+// Copyright (C) 2006, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <locale>
+#include <cmath>
+#include <tr1/functional>
+
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#ifdef __LONG_DOUBLE_128__
+#error "compatibility-ldbl.cc must be compiled with -mlong-double-64"
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+#define C char
+  template class num_get<C, istreambuf_iterator<C> >;
+  template class num_put<C, ostreambuf_iterator<C> >;
+  template class money_get<C, istreambuf_iterator<C> >;
+  template class money_put<C, ostreambuf_iterator<C> >;
+  template const num_put<C>& use_facet<num_put<C> >(const locale&);
+  template const num_get<C>& use_facet<num_get<C> >(const locale&);
+  template const money_put<C>& use_facet<money_put<C> >(const locale&);
+  template const money_get<C>& use_facet<money_get<C> >(const locale&);
+  template bool has_facet<num_put<C> >(const locale&);
+  template bool has_facet<num_get<C> >(const locale&);
+  template bool has_facet<money_put<C> >(const locale&);
+  template bool has_facet<money_get<C> >(const locale&);
+#undef C
+#ifdef _GLIBCXX_USE_WCHAR_T
+#define C wchar_t
+  template class num_get<C, istreambuf_iterator<C> >;
+  template class num_put<C, ostreambuf_iterator<C> >;
+  template class money_get<C, istreambuf_iterator<C> >;
+  template class money_put<C, ostreambuf_iterator<C> >;
+  template const num_put<C>& use_facet<num_put<C> >(const locale&);
+  template const num_get<C>& use_facet<num_get<C> >(const locale&);
+  template const money_put<C>& use_facet<money_put<C> >(const locale&);
+  template const money_get<C>& use_facet<money_get<C> >(const locale&);
+  template bool has_facet<num_put<C> >(const locale&);
+  template bool has_facet<num_get<C> >(const locale&);
+  template bool has_facet<money_put<C> >(const locale&);
+  template bool has_facet<money_get<C> >(const locale&);
+#undef C
+#endif
+}
+
+// For std::tr1::hash<long double>::operator()
+#define _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace tr1 
+  {
+#include "hash-long-double-aux.cc"
+  }
+}
+
+// std::tr1::hash<long double>::operator()
+// and std::hash<long double>::operator()
+// are the same, no need to duplicate them.
+extern "C" void _ZNKSt4hashIeEclEe (void)
+  __attribute__((alias ("_ZNKSt3tr14hashIeEclEe")));
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list-2.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list-2.cc
new file mode 100644
index 000000000..58f8cea55
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list-2.cc
@@ -0,0 +1,111 @@
+// Compatibility symbols for previous versions, list bits -*- C++ -*-
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/move.h>
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
+# define _GLIBCXX_END_NAMESPACE_COMPAT
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_COMPAT
+
+  struct _List_node_base
+  {
+    _List_node_base* _M_next;
+    _List_node_base* _M_prev;
+
+    void
+    _M_transfer(_List_node_base * const __first,
+		_List_node_base * const __last) throw ();
+
+    void
+    _M_reverse() throw ();
+
+    void
+    _M_hook(_List_node_base * const __position) throw ();
+
+    void
+    _M_unhook() throw ();
+  };
+
+  void
+  _List_node_base::_M_transfer(_List_node_base * const __first,
+			       _List_node_base * const __last) throw ()
+  {
+    if (this != __last)
+    {
+      // Remove [first, last) from its old position.
+      __last->_M_prev->_M_next  = this;
+      __first->_M_prev->_M_next = __last;
+      this->_M_prev->_M_next    = __first;
+
+      // Splice [first, last) into its new position.
+      _List_node_base* const __tmp = this->_M_prev;
+      this->_M_prev                = __last->_M_prev;
+      __last->_M_prev              = __first->_M_prev;
+      __first->_M_prev             = __tmp;
+    }
+  }
+
+  void
+  _List_node_base::_M_reverse() throw ()
+  {
+    _List_node_base* __tmp = this;
+    do
+    {
+      std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+      // Old next node is now prev.
+      __tmp = __tmp->_M_prev;
+    }
+    while (__tmp != this);
+  }
+
+  void
+  _List_node_base::_M_hook(_List_node_base* const __position) throw ()
+  {
+    this->_M_next = __position;
+    this->_M_prev = __position->_M_prev;
+    __position->_M_prev->_M_next = this;
+    __position->_M_prev = this;
+  }
+
+  void
+  _List_node_base::_M_unhook() throw ()
+  {
+    _List_node_base* const __next_node = this->_M_next;
+    _List_node_base* const __prev_node = this->_M_prev;
+    __prev_node->_M_next = __next_node;
+    __next_node->_M_prev = __prev_node;
+  }
+
+_GLIBCXX_END_NAMESPACE_COMPAT
+
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list.cc
new file mode 100644
index 000000000..a0d706b27
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-list.cc
@@ -0,0 +1,146 @@
+// Compatibility symbols for previous versions, list bits -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/move.h>
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
+# define _GLIBCXX_END_NAMESPACE_COMPAT
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_COMPAT
+
+  struct _List_node_base
+  {
+    _List_node_base* _M_next;
+    _List_node_base* _M_prev;
+
+    static void
+    swap(_List_node_base& __x, _List_node_base& __y) throw ();
+
+    void
+    transfer(_List_node_base * const __first,
+	     _List_node_base * const __last) throw ();
+
+    void
+    reverse() throw ();
+
+    void
+    hook(_List_node_base * const __position) throw ();
+
+    void
+    unhook() throw ();
+  };
+
+  void
+  _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw()
+  {
+    if ( __x._M_next != &__x )
+      {
+	if ( __y._M_next != &__y )
+	  {
+	    // Both __x and __y are not empty.
+	    std::swap(__x._M_next,__y._M_next);
+	    std::swap(__x._M_prev,__y._M_prev);
+	    __x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	  }
+	else
+	  {
+	    // __x is not empty, __y is empty.
+	    __y._M_next = __x._M_next;
+	    __y._M_prev = __x._M_prev;
+	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	    __x._M_next = __x._M_prev = &__x;
+	  }
+      }
+    else if ( __y._M_next != &__y )
+      {
+	// __x is empty, __y is not empty.
+	__x._M_next = __y._M_next;
+	__x._M_prev = __y._M_prev;
+	__x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	__y._M_next = __y._M_prev = &__y;
+      }
+  }
+
+  void
+  _List_node_base::transfer(_List_node_base * const __first,
+			    _List_node_base * const __last) throw ()
+  {
+    if (this != __last)
+    {
+      // Remove [first, last) from its old position.
+      __last->_M_prev->_M_next  = this;
+      __first->_M_prev->_M_next = __last;
+      this->_M_prev->_M_next    = __first;
+
+      // Splice [first, last) into its new position.
+      _List_node_base* const __tmp = this->_M_prev;
+      this->_M_prev                = __last->_M_prev;
+      __last->_M_prev              = __first->_M_prev;
+      __first->_M_prev             = __tmp;
+    }
+  }
+
+  void
+  _List_node_base::reverse() throw ()
+  {
+    _List_node_base* __tmp = this;
+    do
+    {
+      std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+      // Old next node is now prev.
+      __tmp = __tmp->_M_prev;
+    }
+    while (__tmp != this);
+  }
+
+  void
+  _List_node_base::hook(_List_node_base* const __position) throw ()
+  {
+    this->_M_next = __position;
+    this->_M_prev = __position->_M_prev;
+    __position->_M_prev->_M_next = this;
+    __position->_M_prev = this;
+  }
+
+  void
+  _List_node_base::unhook() throw ()
+  {
+    _List_node_base* const __next_node = this->_M_next;
+    _List_node_base* const __prev_node = this->_M_prev;
+    __prev_node->_M_next = __next_node;
+    __next_node->_M_prev = __prev_node;
+  }
+
+_GLIBCXX_END_NAMESPACE_COMPAT
+
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list-2.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list-2.cc
new file mode 100644
index 000000000..8dc837a36
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list-2.cc
@@ -0,0 +1,28 @@
+// Compatibility symbols for previous versions, parallel list -*- C++ -*-
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "compatibility-list-2.cc"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list.cc
new file mode 100644
index 000000000..05e50fa56
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility-parallel_list.cc
@@ -0,0 +1,28 @@
+// Compatibility symbols for previous versions, parallel list -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "compatibility-list.cc"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility.cc
new file mode 100644
index 000000000..d4cf5d7c1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/compatibility.cc
@@ -0,0 +1,554 @@
+// Compatibility symbols for previous versions -*- C++ -*-
+
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
+    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE)\
+    && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
+#define istreambuf_iterator istreambuf_iteratorXX
+#define basic_fstream basic_fstreamXX
+#define basic_ifstream basic_ifstreamXX
+#define basic_ofstream basic_ofstreamXX
+#define _M_copy(a, b, c) _M_copyXX(a, b, c)
+#define _M_move(a, b, c) _M_moveXX(a, b, c)
+#define _M_assign(a, b, c) _M_assignXX(a, b, c)
+#define _M_disjunct(a) _M_disjunctXX(a)
+#define _M_check_length(a, b, c) _M_check_lengthXX(a, b, c)
+#define _M_set_length_and_sharable(a) _M_set_length_and_sharableXX(a)
+#define ignore ignoreXX
+#define eq eqXX
+#define _List_node_base _List_node_baseXX
+#endif
+
+#include <string>
+#include <istream>
+#include <fstream>
+#include <sstream>
+#include <cmath>
+#include <ext/numeric_traits.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // std::istream ignore explicit specializations.
+  template<>
+    basic_istream<char>&
+    basic_istream<char>::
+    ignore(streamsize __n)
+    {
+      if (__n == 1)
+	return ignore();
+      
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if ( __n > 0 && __cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      // See comment in istream.tcc.
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      streamsize __size = std::min(streamsize(__sb->egptr()
+							      - __sb->gptr()),
+					          streamsize(__n - _M_gcount));
+		      if (__size > 1)
+			{
+			  __sb->__safe_gbump(__size);
+			  _M_gcount += __size;
+			  __c = __sb->sgetc();
+			}
+		      else
+			{
+			  ++_M_gcount;
+			  __c = __sb->snextc();
+			} 
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    } 
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::
+    ignore(streamsize __n)
+    {
+      if (__n == 1)
+	return ignore();
+      
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__n > 0 && __cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      streamsize __size = std::min(streamsize(__sb->egptr()
+							      - __sb->gptr()),
+						  streamsize(__n - _M_gcount));
+		      if (__size > 1)
+			{
+			  __sb->__safe_gbump(__size);
+			  _M_gcount += __size;
+			  __c = __sb->sgetc();
+			}
+		      else
+			{
+			  ++_M_gcount;
+			  __c = __sb->snextc();
+			}
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+// NB: These symbols renames should go into the shared library only,
+// and only those shared libraries that support versioning.
+#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
+    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
+    && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
+
+/* gcc-3.4.4
+_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv
+_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv
+ */
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template
+    istreambuf_iterator<char>&
+    istreambuf_iterator<char>::operator++();
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template
+    istreambuf_iterator<wchar_t>&
+    istreambuf_iterator<wchar_t>::operator++();
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
+/* gcc-4.0.0
+_ZNSs4_Rep26_M_set_length_and_sharableEj
+_ZNSs7_M_copyEPcPKcj
+_ZNSs7_M_moveEPcPKcj
+_ZNSs9_M_assignEPcjc
+_ZNKSs11_M_disjunctEPKc
+_ZNKSs15_M_check_lengthEjjPKc
+_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj
+_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj
+_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj
+_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw
+_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw
+_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc
+
+_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv
+_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv
+_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv
+_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv
+
+_ZNSi6ignoreEi
+_ZNSi6ignoreEv
+_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi
+_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv
+
+_ZNSt11char_traitsIcE2eqERKcS2_
+_ZNSt11char_traitsIwE2eqERKwS2_
+ */
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // std::char_traits is explicitly specialized
+  bool (* __p1)(const char&, const char&) = &char_traits<char>::eq;
+
+  // std::string
+  template
+    void
+    basic_string<char>::_M_copy(char*, const char*, size_t);
+
+  template
+    void
+    basic_string<char>::_M_move(char*, const char*, size_t);
+
+  template
+    void
+    basic_string<char>::_M_assign(char*, size_t, char);
+
+  template
+    bool
+    basic_string<char>::_M_disjunct(const char*) const;
+
+  template
+    void
+    basic_string<char>::_M_check_length(size_t, size_t, const char*) const;
+
+  template
+    void
+    basic_string<char>::_Rep::_M_set_length_and_sharable(size_t);
+
+
+  // std::istream
+  template
+    basic_istream<char>&
+    basic_istream<char>::ignore(); 
+
+  template
+    bool
+    basic_fstream<char>::is_open() const;
+
+  template
+    bool
+    basic_ifstream<char>::is_open() const;
+
+  template
+    bool
+    basic_ofstream<char>::is_open() const;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  bool (* __p2)(const wchar_t&, const wchar_t&) = &char_traits<wchar_t>::eq;
+
+  // std::wstring
+  template
+    void
+    basic_string<wchar_t>::_M_copy(wchar_t*, const wchar_t*, size_t);
+
+  template
+    void
+    basic_string<wchar_t>::_M_move(wchar_t*, const wchar_t*, size_t);
+
+  template
+    void
+    basic_string<wchar_t>::_M_assign(wchar_t*, size_t, wchar_t);
+
+  template
+    bool
+    basic_string<wchar_t>::_M_disjunct(const wchar_t*) const;
+
+  template
+    void
+    basic_string<wchar_t>::_M_check_length(size_t, size_t, 
+					   const char*) const;
+
+  template
+    void
+    basic_string<wchar_t>::_Rep::_M_set_length_and_sharable(size_t);
+
+  template
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::ignore(); 
+
+  template
+    bool
+    basic_fstream<wchar_t>::is_open() const;
+
+  template
+    bool
+    basic_ifstream<wchar_t>::is_open() const;
+
+  template
+    bool
+    basic_ofstream<wchar_t>::is_open() const;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// The rename syntax for default exported names is
+//   asm (".symver name1,exportedname@GLIBCXX_3.4")
+//   asm (".symver name2,exportedname@@GLIBCXX_3.4.5")
+// In the future, GLIBCXX_ABI > 6 should remove all uses of
+// _GLIBCXX_*_SYMVER macros in this file.
+
+#define _GLIBCXX_3_4_SYMVER(XXname, name) \
+   extern "C" void \
+   _X##name() \
+   __attribute__ ((alias(#XXname))); \
+   asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4");
+
+#define _GLIBCXX_3_4_5_SYMVER(XXname, name) \
+   extern "C" void \
+   _Y##name() \
+   __attribute__ ((alias(#XXname))); \
+   asm (".symver " "_Y" #name  "," #name "@@GLIBCXX_3.4.5");
+
+#define _GLIBCXX_ASM_SYMVER(cur, old, version) \
+   asm (".symver " #cur "," #old "@@" #version);
+
+#define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_SYMVER
+#include <bits/compatibility.h>
+#undef _GLIBCXX_APPLY_SYMVER
+
+#define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_5_SYMVER
+#include <bits/compatibility.h>
+#undef _GLIBCXX_APPLY_SYMVER
+
+
+/* gcc-3.4.0
+_ZN10__gnu_norm15_List_node_base4hookEPS0_;
+_ZN10__gnu_norm15_List_node_base4swapERS0_S1_;
+_ZN10__gnu_norm15_List_node_base6unhookEv;
+_ZN10__gnu_norm15_List_node_base7reverseEv;
+_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_;
+*/
+#include "list.cc"  
+_GLIBCXX_ASM_SYMVER(_ZNSt8__detail17_List_node_baseXX7_M_hookEPS0_, \
+_ZN10__gnu_norm15_List_node_base4hookEPS0_, \
+GLIBCXX_3.4)
+
+_GLIBCXX_ASM_SYMVER(_ZNSt8__detail17_List_node_baseXX4swapERS0_S1_, \
+_ZN10__gnu_norm15_List_node_base4swapERS0_S1_, \
+GLIBCXX_3.4)
+
+_GLIBCXX_ASM_SYMVER(_ZNSt8__detail17_List_node_baseXX9_M_unhookEv, \
+_ZN10__gnu_norm15_List_node_base6unhookEv, \
+GLIBCXX_3.4)
+
+_GLIBCXX_ASM_SYMVER(_ZNSt8__detail17_List_node_baseXX10_M_reverseEv, \
+_ZN10__gnu_norm15_List_node_base7reverseEv, \
+GLIBCXX_3.4)
+
+_GLIBCXX_ASM_SYMVER(_ZNSt8__detail17_List_node_baseXX11_M_transferEPS0_S1_, \
+_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_, \
+GLIBCXX_3.4)
+#undef _List_node_base
+
+// gcc-4.1.0
+// Long double versions of "C" math functions. 
+#if defined (_GLIBCXX_LONG_DOUBLE_COMPAT) \
+    || (defined (__arm__) && defined (__linux__) && defined (__ARM_EABI__)) \
+    || (defined (__hppa__) && defined (__linux__)) \
+    || (defined (__m68k__) && defined (__mcoldfire__) && defined (__linux__)) \
+    || (defined (__mips__) && defined (_ABIO32) && defined (__linux__)) \
+    || (defined (__sh__) && defined (__linux__) && __SIZEOF_SIZE_T__ == 4) \
+
+#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \
+extern "C" double						\
+__ ## name ## l_wrapper argdecl					\
+{								\
+  return name args;						\
+}								\
+asm (".symver __" #name "l_wrapper, " #name "l@" #ver)
+
+#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \
+  _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver)
+
+#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \
+  _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver)
+
+#ifdef _GLIBCXX_HAVE_ACOSL
+_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_ASINL
+_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_ATAN2L
+_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_ATANL
+_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_CEILL
+_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_COSHL
+_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_COSL
+_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_EXPL
+_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_FLOORL
+_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_FMODL
+_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_FREXPL
+_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_HYPOTL
+_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_LDEXPL
+_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_LOG10L
+_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_LOGL
+_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_MODFL
+_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3);
+#endif
+#ifdef _GLIBCXX_HAVE_POWL
+_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_SINHL
+_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_SINL
+_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_SQRTL
+_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_TANHL
+_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4);
+#endif
+#ifdef _GLIBCXX_HAVE_TANL
+_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4);
+#endif
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#endif
+
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[];
+extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[];
+extern __attribute__((used, weak)) const char _ZTSe[2] = "e";
+extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
+extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
+extern __attribute__((used, weak)) const void * const _ZTIe[2]
+  = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
+      (void *) _ZTSe };
+extern __attribute__((used, weak)) const void * const _ZTIPe[4]
+  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
+      (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
+extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
+  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
+      (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#ifdef _GLIBCXX_SYMVER_DARWIN
+#if (defined(__ppc__) || defined(__ppc64__)) && defined(PIC)
+/* __eprintf shouldn't have been made visible from libstdc++, or
+   anywhere, but on Mac OS X 10.4 it was defined in
+   libstdc++.6.0.3.dylib; so on that platform we have to keep defining
+   it to keep binary compatibility.  We can't just put the libgcc
+   version in the export list, because that doesn't work; once a
+   symbol is marked as hidden, it stays that way.  */
+
+#include <cstdio>
+#include <cstdlib>
+
+using namespace std;
+
+extern "C" void
+__eprintf(const char *string, const char *expression,
+	  unsigned int line, const char *filename)
+{
+  fprintf(stderr, string, expression, line, filename);
+  fflush(stderr);
+  abort();
+}
+#endif
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/complex_io.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/complex_io.cc
new file mode 100644
index 000000000..4e4aeef46
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/complex_io.cc
@@ -0,0 +1,113 @@
+// The template and inlines for the -*- C++ -*- complex number classes.
+
+// Copyright (C) 2000, 2001, 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <complex>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template
+    basic_istream<char, char_traits<char> >&
+    operator>>(basic_istream<char, char_traits<char> >&, complex<float>&);
+
+  template
+    basic_ostream<char, char_traits<char> >&
+    operator<<(basic_ostream<char, char_traits<char> >&, 
+	       const complex<float>&);
+
+  template
+    basic_istream<char, char_traits<char> >&
+    operator>>(basic_istream<char, char_traits<char> >&, complex<double>&);
+
+  template
+    basic_ostream<char, char_traits<char> >&
+    operator<<(basic_ostream<char, char_traits<char> >&, 
+	       const complex<double>&);
+
+  template
+    basic_istream<char, char_traits<char> >&
+    operator>>(basic_istream<char, char_traits<char> >&, 
+	       complex<long double>&);
+
+  template
+    basic_ostream<char, char_traits<char> >&
+    operator<<(basic_ostream<char, char_traits<char> >&,
+               const complex<long double>&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template
+    basic_istream<wchar_t, char_traits<wchar_t> >&
+    operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&,
+               complex<float>&);
+
+  template
+    basic_ostream<wchar_t, char_traits<wchar_t> >&
+    operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&,
+               const complex<float>&);
+
+  template
+    basic_istream<wchar_t, char_traits<wchar_t> >&
+    operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&,
+               complex<double>&);
+
+  template
+    basic_ostream<wchar_t, char_traits<wchar_t> >&
+    operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&,
+               const complex<double>&);
+
+  template
+    basic_istream<wchar_t, char_traits<wchar_t> >&
+    operator>>(basic_istream<wchar_t, char_traits<wchar_t> >&,
+               complex<long double>&);
+
+  template
+    basic_ostream<wchar_t, char_traits<wchar_t> >&
+    operator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&,
+               const complex<long double>&);
+#endif //_GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
+
+_GLIBCXX_LDBL_COMPAT (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
+		      _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
+		      _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
+#endif
+_GLIBCXX_LDBL_COMPAT (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
+		      _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
+		      _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
+#endif
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/concept-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/concept-inst.cc
new file mode 100644
index 000000000..829d0db0b
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/concept-inst.cc
@@ -0,0 +1,111 @@
+// Concept checking instantiations -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// The implementation of some of the more complex checks uses the simple
+// checks (good reuse of code), thereby requiring that the simple checks
+// be instantiated somewhere.  The simple checks use other simple checks,
+// and so on, until a couple hundred symbols all need instantiations.  We
+// explicitly instantiate the initial set of symbols; compiling this file
+// with -fimplicit-templates will take care of the rest for us.
+
+#include <bits/concept_check.h>
+
+#ifdef _GLIBCXX_CONCEPT_CHECKS
+
+#include <memory>
+#include <iterator>
+#include <ostream>
+
+#define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template void __aux_require_boolean_expr<bool>(bool const&);
+
+  _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
+
+  _Instantiate(_InputIteratorConcept<char*> );
+
+  _Instantiate(_InputIteratorConcept<char const*> );
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  _Instantiate(_InputIteratorConcept<wchar_t*> );
+
+  _Instantiate(_InputIteratorConcept<wchar_t const*> );
+
+  _Instantiate(_LessThanComparableConcept<wchar_t*> );
+#endif
+
+  _Instantiate(_LessThanComparableConcept<char*> );
+
+  _Instantiate(_LessThanComparableConcept<int> );
+
+  _Instantiate(_LessThanComparableConcept<long> );
+
+  _Instantiate(_LessThanComparableConcept<long long> );
+
+  _Instantiate(_LessThanComparableConcept<unsigned> );
+
+  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
+    char, std::char_traits<char> >, char> );
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
+    wchar_t, std::char_traits<wchar_t> >, wchar_t> );
+#endif
+
+  _Instantiate(_RandomAccessIteratorConcept<char*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<char const*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    __normal_iterator<char const*, std::string> > );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    __normal_iterator<char*, std::string> > );
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  _Instantiate(_RandomAccessIteratorConcept<
+    __normal_iterator<wchar_t const*,
+    std::basic_string<wchar_t, std::char_traits<wchar_t>,
+                               std::allocator<wchar_t> > > > );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    __normal_iterator<wchar_t*,
+    std::basic_string<wchar_t, std::char_traits<wchar_t>,
+                               std::allocator<wchar_t> > > > );
+
+  _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#undef _Instantiate
+
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/condition_variable.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/condition_variable.cc
new file mode 100644
index 000000000..7f1e1946a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/condition_variable.cc
@@ -0,0 +1,93 @@
+// condition_variable -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <condition_variable>
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  condition_variable::condition_variable() throw ()
+  {
+#ifdef __GTHREAD_COND_INIT
+    __native_type __tmp = __GTHREAD_COND_INIT;
+    _M_cond = __tmp;
+#else
+    int __e = __gthread_cond_init(&_M_cond, 0);
+
+    if (__e)
+      __throw_system_error(__e);
+#endif
+  }
+
+  condition_variable::~condition_variable() throw ()
+  {
+    // XXX no thread blocked
+    /* int __e = */ __gthread_cond_destroy(&_M_cond);
+    // if __e == EBUSY then blocked
+  }
+
+  void
+  condition_variable::wait(unique_lock<mutex>& __lock)
+  {
+    int __e = __gthread_cond_wait(&_M_cond, __lock.mutex()->native_handle());
+
+    if (__e)
+      __throw_system_error(__e);
+  }
+
+  void
+  condition_variable::notify_one()
+  {
+    int __e = __gthread_cond_signal(&_M_cond);
+
+    // XXX not in spec
+    // EINVAL
+    if (__e)
+      __throw_system_error(__e);
+  }
+
+  void
+  condition_variable::notify_all()
+  {
+    int __e = __gthread_cond_broadcast(&_M_cond);
+
+    // XXX not in spec
+    // EINVAL
+    if (__e)
+      __throw_system_error(__e);
+  }
+
+  condition_variable_any::condition_variable_any() throw ()
+  { }
+
+  condition_variable_any::~condition_variable_any() throw ()
+  { }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ctype.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ctype.cc
new file mode 100644
index 000000000..04d31cc57
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ctype.cc
@@ -0,0 +1,139 @@
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005,
+// 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <locale>
+#include <cstdlib>
+#include <cstring>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for static const data members of ctype_base.
+  const ctype_base::mask ctype_base::space;
+  const ctype_base::mask ctype_base::print;
+  const ctype_base::mask ctype_base::cntrl;
+  const ctype_base::mask ctype_base::upper;
+  const ctype_base::mask ctype_base::lower;
+  const ctype_base::mask ctype_base::alpha;
+  const ctype_base::mask ctype_base::digit;
+  const ctype_base::mask ctype_base::punct;
+  const ctype_base::mask ctype_base::xdigit;
+  const ctype_base::mask ctype_base::alnum;
+  const ctype_base::mask ctype_base::graph;
+
+  // Definitions for locale::id of standard facets that are specialized.
+  locale::id ctype<char>::id;
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  locale::id ctype<wchar_t>::id;
+#endif
+
+  // XXX At some point, just rename this file to ctype_configure_char.cc
+  // and compile it as a separate file instead of including it here.
+  // Platform-specific initialization code for ctype tables.
+#include <bits/ctype_noninline.h>
+
+  const size_t ctype<char>::table_size;
+
+  ctype<char>::~ctype()
+  { 
+    _S_destroy_c_locale(_M_c_locale_ctype);
+    if (_M_del) 
+      delete[] this->table(); 
+  }
+
+  // Fill in the narrowing cache and flag whether all values are
+  // valid or not.  _M_narrow_ok is set to 2 if memcpy can't
+  // be used.
+  void
+  ctype<char>::
+  _M_narrow_init() const
+  {
+    char __tmp[sizeof(_M_narrow)];
+    for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
+      __tmp[__i] = __i;
+    do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
+    
+    _M_narrow_ok = 1;
+    if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
+      _M_narrow_ok = 2;
+    else
+      {
+	// Deal with the special case of zero: renarrow with a
+	// different default and compare.
+	char __c;
+	do_narrow(__tmp, __tmp + 1, 1, &__c);
+	if (__c == 1)
+	  _M_narrow_ok = 2;
+      }
+  }
+
+  void
+  ctype<char>::
+  _M_widen_init() const
+  {
+    char __tmp[sizeof(_M_widen)];
+    for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
+      __tmp[__i] = __i;
+    do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
+    
+    _M_widen_ok = 1;
+    // Set _M_widen_ok to 2 if memcpy can't be used.
+    if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
+      _M_widen_ok = 2;
+  }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  ctype<wchar_t>::ctype(size_t __refs) 
+  : __ctype_abstract_base<wchar_t>(__refs), 
+  _M_c_locale_ctype(_S_get_c_locale()), _M_narrow_ok(false)
+  { _M_initialize_ctype(); }
+
+  ctype<wchar_t>::ctype(__c_locale __cloc, size_t __refs) 
+  : __ctype_abstract_base<wchar_t>(__refs),
+  _M_c_locale_ctype(_S_clone_c_locale(__cloc)), _M_narrow_ok(false)
+  { _M_initialize_ctype(); }
+
+  ctype<wchar_t>::~ctype() 
+  { _S_destroy_c_locale(_M_c_locale_ctype); }
+
+  ctype_byname<wchar_t>::ctype_byname(const char* __s, size_t __refs)
+  : ctype<wchar_t>(__refs) 
+  { 		
+    if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
+      {
+	this->_S_destroy_c_locale(this->_M_c_locale_ctype);
+	this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
+	this->_M_initialize_ctype();
+      }
+  }
+
+  ctype_byname<wchar_t>::~ctype_byname() 
+  { }
+
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/debug.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/debug.cc
new file mode 100644
index 000000000..9074dfb07
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/debug.cc
@@ -0,0 +1,792 @@
+// Debugging mode support code -*- C++ -*-
+
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <debug/debug.h>
+#include <debug/safe_sequence.h>
+#include <debug/safe_iterator.h>
+#include <algorithm>
+#include <cassert>
+#include <cstring>
+#include <cctype>
+#include <cstdio>
+#include <cstdlib>
+#include <functional>
+
+using namespace std;
+
+namespace
+{
+  /** Returns different instances of __mutex depending on the passed address
+   *  in order to limit contention without breaking current library binary
+   *  compatibility. */
+  __gnu_cxx::__mutex&
+  get_safe_base_mutex(void* __address)
+  {
+    const size_t mask = 0xf;
+    static __gnu_cxx::__mutex safe_base_mutex[mask + 1];
+    const size_t index = _Hash_impl::hash(__address) & mask;
+    return safe_base_mutex[index];
+  }
+
+  void
+  swap_seq(__gnu_debug::_Safe_sequence_base& __lhs,
+	   __gnu_debug::_Safe_sequence_base& __rhs)
+  {
+    swap(__lhs._M_iterators, __rhs._M_iterators);
+    swap(__lhs._M_const_iterators, __rhs._M_const_iterators);
+    swap(__lhs._M_version, __rhs._M_version);
+    __gnu_debug::_Safe_iterator_base* __iter;
+    for (__iter = __rhs._M_iterators; __iter; __iter = __iter->_M_next)
+      __iter->_M_sequence = &__rhs;
+    for (__iter = __lhs._M_iterators; __iter; __iter = __iter->_M_next)
+      __iter->_M_sequence = &__lhs;
+    for (__iter = __rhs._M_const_iterators; __iter; __iter = __iter->_M_next)
+      __iter->_M_sequence = &__rhs;
+    for (__iter = __lhs._M_const_iterators; __iter; __iter = __iter->_M_next)
+      __iter->_M_sequence = &__lhs;
+  }
+} // anonymous namespace
+
+namespace __gnu_debug
+{
+  const char* _S_debug_messages[] = 
+  {
+    "function requires a valid iterator range [%1.name;, %2.name;)",
+    "attempt to insert into container with a singular iterator",
+    "attempt to insert into container with an iterator"
+    " from a different container",
+    "attempt to erase from container with a %2.state; iterator",
+    "attempt to erase from container with an iterator"
+    " from a different container",
+    "attempt to subscript container with out-of-bounds index %2;,"
+    " but container only holds %3; elements",
+    "attempt to access an element in an empty container",
+    "elements in iterator range [%1.name;, %2.name;)"
+    " are not partitioned by the value %3;",
+    "elements in iterator range [%1.name;, %2.name;)"
+    " are not partitioned by the predicate %3; and value %4;",
+    "elements in iterator range [%1.name;, %2.name;) are not sorted",
+    "elements in iterator range [%1.name;, %2.name;)"
+    " are not sorted according to the predicate %3;",
+    "elements in iterator range [%1.name;, %2.name;) do not form a heap",
+    "elements in iterator range [%1.name;, %2.name;)"
+    " do not form a heap with respect to the predicate %3;",
+    "attempt to write through a singular bitset reference",
+    "attempt to read from a singular bitset reference",
+    "attempt to flip a singular bitset reference",
+    "attempt to splice a list into itself",
+    "attempt to splice lists with inequal allocators",
+    "attempt to splice elements referenced by a %1.state; iterator",
+    "attempt to splice an iterator from a different container",
+    "splice destination %1.name;"
+    " occurs within source range [%2.name;, %3.name;)",
+    "attempt to initialize an iterator that will immediately become singular",
+    "attempt to copy-construct an iterator from a singular iterator",
+    "attempt to construct a constant iterator"
+    " from a singular mutable iterator",
+    "attempt to copy from a singular iterator",
+    "attempt to dereference a %1.state; iterator",
+    "attempt to increment a %1.state; iterator",
+    "attempt to decrement a %1.state; iterator",
+    "attempt to subscript a %1.state; iterator %2; step from"
+    " its current position, which falls outside its dereferenceable range",
+    "attempt to advance a %1.state; iterator %2; steps,"
+    " which falls outside its valid range",
+    "attempt to retreat a %1.state; iterator %2; steps,"
+    " which falls outside its valid range",
+    "attempt to compare a %1.state; iterator to a %2.state; iterator",
+    "attempt to compare iterators from different sequences",
+    "attempt to order a %1.state; iterator to a %2.state; iterator",
+    "attempt to order iterators from different sequences",
+    "attempt to compute the difference between a %1.state;"
+    " iterator to a %2.state; iterator",
+    "attempt to compute the different between two iterators"
+    " from different sequences",
+    "attempt to dereference an end-of-stream istream_iterator",
+    "attempt to increment an end-of-stream istream_iterator",
+    "attempt to output via an ostream_iterator with no associated stream",
+    "attempt to dereference an end-of-stream istreambuf_iterator"
+    " (this is a GNU extension)",
+    "attempt to increment an end-of-stream istreambuf_iterator",
+    "attempt to insert into container after an end iterator",
+    "attempt to erase from container after a %2.state; iterator not followed"
+    " by a dereferenceable one",
+    "function requires a valid iterator range (%2.name;, %3.name;)"
+    ", \"%2.name;\" shall be before and not equal to \"%3.name;\""
+  };
+
+  void
+  _Safe_sequence_base::
+  _M_detach_all()
+  {
+    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
+    for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
+      {
+	_Safe_iterator_base* __old = __iter;
+	__iter = __iter->_M_next;
+	__old->_M_reset();
+      }
+    _M_iterators = 0;
+    
+    for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;)
+      {
+	_Safe_iterator_base* __old = __iter2;
+	__iter2 = __iter2->_M_next;
+	__old->_M_reset();
+      }
+    _M_const_iterators = 0;
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_detach_singular()
+  {
+    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
+    for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
+      {
+	_Safe_iterator_base* __old = __iter;
+	__iter = __iter->_M_next;
+	if (__old->_M_singular())
+	  __old->_M_detach_single();
+      }
+
+    for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;)
+      {
+	_Safe_iterator_base* __old = __iter2;
+	__iter2 = __iter2->_M_next;
+	if (__old->_M_singular())
+	  __old->_M_detach_single();
+      }
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_revalidate_singular()
+  {
+    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
+    for (_Safe_iterator_base* __iter = _M_iterators; __iter;
+	 __iter = __iter->_M_next)
+      __iter->_M_version = _M_version;
+
+    for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;
+	 __iter2 = __iter2->_M_next)
+      __iter2->_M_version = _M_version;
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_swap(_Safe_sequence_base& __x)
+  {
+    // We need to lock both sequences to swap
+    using namespace __gnu_cxx;
+    __mutex *__this_mutex = &_M_get_mutex();
+    __mutex *__x_mutex = &__x._M_get_mutex();
+    if (__this_mutex == __x_mutex)
+      {
+	__scoped_lock __lock(*__this_mutex);
+	swap_seq(*this, __x);
+      }
+    else
+      {
+	__scoped_lock __l1(__this_mutex < __x_mutex
+			     ? *__this_mutex : *__x_mutex);
+	__scoped_lock __l2(__this_mutex < __x_mutex
+			     ? *__x_mutex : *__this_mutex);
+	swap_seq(*this, __x);
+      }
+  }
+
+  __gnu_cxx::__mutex&
+  _Safe_sequence_base::
+  _M_get_mutex() throw ()
+  { return get_safe_base_mutex(this); }
+
+  void
+  _Safe_sequence_base::
+  _M_attach(_Safe_iterator_base* __it, bool __constant)
+  {
+    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
+    _M_attach_single(__it, __constant);
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_attach_single(_Safe_iterator_base* __it, bool __constant) throw ()
+  {
+    _Safe_iterator_base*& __its =
+      __constant ? _M_const_iterators : _M_iterators;
+    __it->_M_next = __its;
+    if (__it->_M_next)
+      __it->_M_next->_M_prior = __it;
+    __its = __it;
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_detach(_Safe_iterator_base* __it)
+  {
+    // Remove __it from this sequence's list
+    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
+    _M_detach_single(__it);
+  }
+
+  void
+  _Safe_sequence_base::
+  _M_detach_single(_Safe_iterator_base* __it) throw ()
+  {
+    // Remove __it from this sequence's list
+    __it->_M_unlink();
+    if (_M_const_iterators == __it)
+      _M_const_iterators = __it->_M_next;
+    if (_M_iterators == __it)
+      _M_iterators = __it->_M_next;
+  }
+
+  void
+  _Safe_iterator_base::
+  _M_attach(_Safe_sequence_base* __seq, bool __constant)
+  {
+    _M_detach();
+    
+    // Attach to the new sequence (if there is one)
+    if (__seq)
+      {
+	_M_sequence = __seq;
+	_M_version = _M_sequence->_M_version;
+	_M_sequence->_M_attach(this, __constant);
+      }
+  }
+  
+  void
+  _Safe_iterator_base::
+  _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ()
+  {
+    _M_detach_single();
+    
+    // Attach to the new sequence (if there is one)
+    if (__seq)
+      {
+	_M_sequence = __seq;
+	_M_version = _M_sequence->_M_version;
+	_M_sequence->_M_attach_single(this, __constant);
+      }
+  }
+
+  void
+  _Safe_iterator_base::
+  _M_detach()
+  {
+    if (_M_sequence)
+      {
+	_M_sequence->_M_detach(this);
+      }
+
+    _M_reset();
+  }
+
+  void
+  _Safe_iterator_base::
+  _M_detach_single() throw ()
+  {
+    if (_M_sequence)
+      {
+	_M_sequence->_M_detach_single(this);
+      }
+
+    _M_reset();
+  }
+
+  void
+  _Safe_iterator_base::
+  _M_reset() throw ()
+  {
+    _M_sequence = 0;
+    _M_version = 0;
+    _M_prior = 0;
+    _M_next = 0;
+  }
+
+  bool
+  _Safe_iterator_base::
+  _M_singular() const throw ()
+  { return !_M_sequence || _M_version != _M_sequence->_M_version; }
+    
+  bool
+  _Safe_iterator_base::
+  _M_can_compare(const _Safe_iterator_base& __x) const throw ()
+  {
+    return (!_M_singular() 
+	    && !__x._M_singular() && _M_sequence == __x._M_sequence);
+  }
+
+  __gnu_cxx::__mutex&
+  _Safe_iterator_base::
+  _M_get_mutex() throw ()
+  { return get_safe_base_mutex(_M_sequence); }
+
+  void
+  _Error_formatter::_Parameter::
+  _M_print_field(const _Error_formatter* __formatter, const char* __name) const
+  {
+    assert(this->_M_kind != _Parameter::__unused_param);
+    const int __bufsize = 64;
+    char __buf[__bufsize];
+    
+    if (_M_kind == __iterator)
+      {
+	if (strcmp(__name, "name") == 0)
+	  {
+	    assert(_M_variant._M_iterator._M_name);
+	    __formatter->_M_print_word(_M_variant._M_iterator._M_name);
+	  }
+	else if (strcmp(__name, "address") == 0)
+	  {
+	    __formatter->_M_format_word(__buf, __bufsize, "%p", 
+					_M_variant._M_iterator._M_address);
+	    __formatter->_M_print_word(__buf);
+	  }
+	else if (strcmp(__name, "type") == 0)
+	  {
+	    if (!_M_variant._M_iterator._M_type)
+	      __formatter->_M_print_word("<unknown type>");
+	    else
+	      // TBD: demangle!
+	      __formatter->_M_print_word(_M_variant._M_iterator.
+					 _M_type->name());
+	  }
+	else if (strcmp(__name, "constness") == 0)
+	  {
+	    static const char* __constness_names[__last_constness] =
+	      {
+		"<unknown>",
+		"constant",
+		"mutable"
+	      };
+	    __formatter->_M_print_word(__constness_names[_M_variant.
+							 _M_iterator.
+							 _M_constness]);
+	  }
+	else if (strcmp(__name, "state") == 0)
+	  {
+	    static const char* __state_names[__last_state] = 
+	      {
+		"<unknown>",
+		"singular",
+		"dereferenceable (start-of-sequence)",
+		"dereferenceable",
+		"past-the-end",
+		"before-begin"
+	      };
+	    __formatter->_M_print_word(__state_names[_M_variant.
+						     _M_iterator._M_state]);
+	  }
+	else if (strcmp(__name, "sequence") == 0)
+	  {
+	    assert(_M_variant._M_iterator._M_sequence);
+	    __formatter->_M_format_word(__buf, __bufsize, "%p", 
+					_M_variant._M_iterator._M_sequence);
+	    __formatter->_M_print_word(__buf);
+	  }
+	else if (strcmp(__name, "seq_type") == 0)
+	  {
+	    if (!_M_variant._M_iterator._M_seq_type)
+	      __formatter->_M_print_word("<unknown seq_type>");
+	    else
+	      // TBD: demangle!
+	      __formatter->_M_print_word(_M_variant._M_iterator.
+					 _M_seq_type->name());
+	  }
+	else
+	  assert(false);
+      }
+    else if (_M_kind == __sequence)
+      {
+	if (strcmp(__name, "name") == 0)
+	  {
+	    assert(_M_variant._M_sequence._M_name);
+	    __formatter->_M_print_word(_M_variant._M_sequence._M_name);
+	  }
+	else if (strcmp(__name, "address") == 0)
+	  {
+	    assert(_M_variant._M_sequence._M_address);
+	    __formatter->_M_format_word(__buf, __bufsize, "%p", 
+					_M_variant._M_sequence._M_address);
+	    __formatter->_M_print_word(__buf);
+	  }
+	else if (strcmp(__name, "type") == 0)
+	  {
+	    if (!_M_variant._M_sequence._M_type)
+	      __formatter->_M_print_word("<unknown type>");
+	    else
+	      // TBD: demangle!
+	      __formatter->_M_print_word(_M_variant._M_sequence.
+					 _M_type->name());
+	  }
+	else
+	  assert(false);
+      }
+    else if (_M_kind == __integer)
+      {
+	if (strcmp(__name, "name") == 0)
+	  {
+	    assert(_M_variant._M_integer._M_name);
+	    __formatter->_M_print_word(_M_variant._M_integer._M_name);
+	  }
+	else
+	assert(false);
+      }
+    else if (_M_kind == __string)
+      {
+	if (strcmp(__name, "name") == 0)
+	  {
+	    assert(_M_variant._M_string._M_name);
+	    __formatter->_M_print_word(_M_variant._M_string._M_name);
+	  }
+	else
+	  assert(false);
+      }
+    else
+      {
+	assert(false);
+      }
+  }
+  
+  void
+  _Error_formatter::_Parameter::
+  _M_print_description(const _Error_formatter* __formatter) const
+  {
+    const int __bufsize = 128;
+    char __buf[__bufsize];
+    
+    if (_M_kind == __iterator)
+      {
+	__formatter->_M_print_word("iterator ");
+	if (_M_variant._M_iterator._M_name)
+	  {
+	    __formatter->_M_format_word(__buf, __bufsize, "\"%s\" ", 
+					_M_variant._M_iterator._M_name);
+	    __formatter->_M_print_word(__buf);
+	  }
+	
+	__formatter->_M_format_word(__buf, __bufsize, "@ 0x%p {\n", 
+				    _M_variant._M_iterator._M_address);
+	__formatter->_M_print_word(__buf);
+	if (_M_variant._M_iterator._M_type)
+	  {
+	    __formatter->_M_print_word("type = ");
+	    _M_print_field(__formatter, "type");
+	    
+	    if (_M_variant._M_iterator._M_constness != __unknown_constness)
+	      {
+		__formatter->_M_print_word(" (");
+		_M_print_field(__formatter, "constness");
+		__formatter->_M_print_word(" iterator)");
+	      }
+	    __formatter->_M_print_word(";\n");
+	  }
+	
+	if (_M_variant._M_iterator._M_state != __unknown_state)
+	  {
+	    __formatter->_M_print_word("  state = ");
+	    _M_print_field(__formatter, "state");
+	    __formatter->_M_print_word(";\n");
+	  }
+	
+	if (_M_variant._M_iterator._M_sequence)
+	  {
+	    __formatter->_M_print_word("  references sequence ");
+	    if (_M_variant._M_iterator._M_seq_type)
+	      {
+		__formatter->_M_print_word("with type `");
+		_M_print_field(__formatter, "seq_type");
+		__formatter->_M_print_word("' ");
+	      }
+	    
+	    __formatter->_M_format_word(__buf, __bufsize, "@ 0x%p\n", 
+					_M_variant._M_sequence._M_address);
+	    __formatter->_M_print_word(__buf);
+	  }
+	__formatter->_M_print_word("}\n");
+      }
+    else if (_M_kind == __sequence)
+      {
+	__formatter->_M_print_word("sequence ");
+	if (_M_variant._M_sequence._M_name)
+	  {
+	    __formatter->_M_format_word(__buf, __bufsize, "\"%s\" ", 
+					_M_variant._M_sequence._M_name);
+	    __formatter->_M_print_word(__buf);
+	  }
+	
+	__formatter->_M_format_word(__buf, __bufsize, "@ 0x%p {\n", 
+				    _M_variant._M_sequence._M_address);
+	__formatter->_M_print_word(__buf);
+	
+	if (_M_variant._M_sequence._M_type)
+	  {
+	    __formatter->_M_print_word("  type = ");
+	    _M_print_field(__formatter, "type");
+	    __formatter->_M_print_word(";\n");
+	  }	  
+	__formatter->_M_print_word("}\n");
+      }
+  }
+
+  const _Error_formatter&
+  _Error_formatter::_M_message(_Debug_msg_id __id) const throw ()
+  { return this->_M_message(_S_debug_messages[__id]); }
+  
+  void
+  _Error_formatter::_M_error() const
+  {
+    const int __bufsize = 128;
+    char __buf[__bufsize];
+    
+    // Emit file & line number information
+    _M_column = 1;
+    _M_wordwrap = false;
+    if (_M_file)
+      {
+	_M_format_word(__buf, __bufsize, "%s:", _M_file);
+	_M_print_word(__buf);
+	_M_column += strlen(__buf);
+      }
+    
+    if (_M_line > 0)
+      {
+	_M_format_word(__buf, __bufsize, "%u:", _M_line);
+	_M_print_word(__buf);
+	_M_column += strlen(__buf);
+      }
+    
+    if (_M_max_length)
+      _M_wordwrap = true;
+    _M_print_word("error: ");
+    
+    // Print the error message
+    assert(_M_text);
+    _M_print_string(_M_text);
+    _M_print_word(".\n");
+    
+    // Emit descriptions of the objects involved in the operation
+    _M_wordwrap = false;
+    bool __has_noninteger_parameters = false;
+    for (unsigned int __i = 0; __i < _M_num_parameters; ++__i)
+      {
+	if (_M_parameters[__i]._M_kind == _Parameter::__iterator
+	    || _M_parameters[__i]._M_kind == _Parameter::__sequence)
+	  {
+	    if (!__has_noninteger_parameters)
+	      {
+		_M_first_line = true;
+		_M_print_word("\nObjects involved in the operation:\n");
+		__has_noninteger_parameters = true;
+	      }
+	    _M_parameters[__i]._M_print_description(this);
+	  }
+      }
+    
+    abort();
+  }
+
+  template<typename _Tp>
+    void
+    _Error_formatter::_M_format_word(char* __buf, 
+				     int __n __attribute__ ((__unused__)), 
+				     const char* __fmt, _Tp __s) const throw ()
+    {
+#ifdef _GLIBCXX_USE_C99
+      std::snprintf(__buf, __n, __fmt, __s);
+#else
+      std::sprintf(__buf, __fmt, __s);
+#endif
+    }
+
+  
+  void 
+  _Error_formatter::_M_print_word(const char* __word) const
+  {
+    if (!_M_wordwrap) 
+      {
+	fprintf(stderr, "%s", __word);
+	return;
+      }
+    
+    size_t __length = strlen(__word);
+    if (__length == 0)
+      return;
+    
+    if ((_M_column + __length < _M_max_length)
+	|| (__length >= _M_max_length && _M_column == 1)) 
+      {
+	// If this isn't the first line, indent
+	if (_M_column == 1 && !_M_first_line)
+	  {
+	    char __spacing[_M_indent + 1];
+	    for (int i = 0; i < _M_indent; ++i)
+	      __spacing[i] = ' ';
+	    __spacing[_M_indent] = '\0';
+	    fprintf(stderr, "%s", __spacing);
+	    _M_column += _M_indent;
+	  }
+	
+	fprintf(stderr, "%s", __word);
+	_M_column += __length;
+	
+	if (__word[__length - 1] == '\n') 
+	  {
+	    _M_first_line = false;
+	    _M_column = 1;
+	  }
+      }
+    else
+      {
+	_M_column = 1;
+	_M_print_word("\n");
+	_M_print_word(__word);
+      }
+  }
+  
+  void
+  _Error_formatter::
+  _M_print_string(const char* __string) const
+  {
+    const char* __start = __string;
+    const char* __finish = __start;
+    const int __bufsize = 128;
+    char __buf[__bufsize];
+
+    while (*__start)
+      {
+	if (*__start != '%')
+	  {
+	    // [__start, __finish) denotes the next word
+	    __finish = __start;
+	    while (isalnum(*__finish))
+	      ++__finish;
+	    if (__start == __finish)
+	      ++__finish;
+	    if (isspace(*__finish))
+	      ++__finish;
+	    
+	    const ptrdiff_t __len = __finish - __start;
+	    assert(__len < __bufsize);
+	    memcpy(__buf, __start, __len);
+	    __buf[__len] = '\0';
+	    _M_print_word(__buf);
+	    __start = __finish;
+	    
+	    // Skip extra whitespace
+	    while (*__start == ' ') 
+	      ++__start;
+	    
+	    continue;
+	  } 
+	
+	++__start;
+	assert(*__start);
+	if (*__start == '%')
+	  {
+	    _M_print_word("%");
+	    ++__start;
+	    continue;
+	  }
+	
+	// Get the parameter number
+	assert(*__start >= '1' && *__start <= '9');
+	size_t __param = *__start - '0';
+	--__param;
+	assert(__param < _M_num_parameters);
+      
+	// '.' separates the parameter number from the field
+	// name, if there is one.
+	++__start;
+	if (*__start != '.')
+	  {
+	    assert(*__start == ';');
+	    ++__start;
+	    __buf[0] = '\0';
+	    if (_M_parameters[__param]._M_kind == _Parameter::__integer)
+	      {
+		_M_format_word(__buf, __bufsize, "%ld", 
+			       _M_parameters[__param]._M_variant._M_integer._M_value);
+		_M_print_word(__buf);
+	      }
+	    else if (_M_parameters[__param]._M_kind == _Parameter::__string)
+	      _M_print_string(_M_parameters[__param]._M_variant._M_string._M_value);
+	    continue;
+	  }
+	
+	// Extract the field name we want
+	enum { __max_field_len = 16 };
+	char __field[__max_field_len];
+	int __field_idx = 0;
+	++__start;
+	while (*__start != ';')
+	  {
+	    assert(*__start);
+	    assert(__field_idx < __max_field_len-1);
+	    __field[__field_idx++] = *__start++;
+	  }
+	++__start;
+	__field[__field_idx] = 0;
+	
+	_M_parameters[__param]._M_print_field(this, __field);		  
+      }
+  }
+
+  void
+  _Error_formatter::_M_get_max_length() const throw ()
+  {
+    const char* __nptr = std::getenv("GLIBCXX_DEBUG_MESSAGE_LENGTH");
+    if (__nptr)
+      {
+	char* __endptr;
+	const unsigned long __ret = std::strtoul(__nptr, &__endptr, 0);
+	if (*__nptr != '\0' && *__endptr == '\0')
+	  _M_max_length = __ret;
+      }
+  }
+
+  // Instantiations.
+  template
+    void
+    _Error_formatter::_M_format_word(char*, int, const char*, 
+				     const void*) const;
+
+  template
+    void
+    _Error_formatter::_M_format_word(char*, int, const char*, long) const;
+
+  template
+    void
+    _Error_formatter::_M_format_word(char*, int, const char*, 
+				     std::size_t) const;
+
+  template
+    void
+    _Error_formatter::_M_format_word(char*, int, const char*, 
+				     const char*) const;
+} // namespace __gnu_debug
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ext-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ext-inst.cc
new file mode 100644
index 000000000..831f37cf1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ext-inst.cc
@@ -0,0 +1,66 @@
+// Explicit instantiation file.
+
+// Copyright (C) 2001, 2002, 2004, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <ext/rope>
+#include <ext/stdio_filebuf.h>
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  namespace
+  {
+    const int min_len = __detail::_S_max_rope_depth + 1;
+  }
+
+  template
+    const unsigned long 
+    rope<char, std::allocator<char> >::_S_min_len[min_len];
+
+  template
+    char
+    rope<char, std::allocator<char> >::
+    _S_fetch(_Rope_RopeRep<char, std::allocator<char> >*, size_type);
+
+  template class stdio_filebuf<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template
+    const unsigned long 
+    rope<wchar_t, std::allocator<wchar_t> >::_S_min_len[min_len];
+
+  template
+    wchar_t
+    rope<wchar_t, std::allocator<wchar_t> >::
+    _S_fetch(_Rope_RopeRep<wchar_t, std::allocator<wchar_t> >*, size_type);
+
+  template class stdio_filebuf<wchar_t>;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/fstream-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/fstream-inst.cc
new file mode 100644
index 000000000..cd7a6cd45
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/fstream-inst.cc
@@ -0,0 +1,49 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <fstream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class basic_filebuf<char, char_traits<char> >;
+  template class basic_ifstream<char>;
+  template class basic_ofstream<char>;
+  template class basic_fstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class basic_filebuf<wchar_t, char_traits<wchar_t> >;
+  template class basic_ifstream<wchar_t>;
+  template class basic_ofstream<wchar_t>;
+  template class basic_fstream<wchar_t>;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functexcept.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functexcept.cc
new file mode 100644
index 000000000..2fe14d532
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functexcept.cc
@@ -0,0 +1,194 @@
+// Copyright (C) 2001, 2002, 2003, 2005, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/functexcept.h>
+#include <cstdlib>
+#include <exception>
+#include <stdexcept>
+#include <new>
+#include <typeinfo>
+#include <ios>
+#include <system_error>
+#include <future>
+#include <functional>
+#include <regex>
+
+#ifdef _GLIBCXX_USE_NLS
+# include <libintl.h>
+# define _(msgid)   gettext (msgid)
+#else
+# define _(msgid)   (msgid)
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if __EXCEPTIONS
+  void
+  __throw_bad_exception(void)
+  { throw bad_exception(); }
+
+  void
+  __throw_bad_alloc(void)
+  { throw bad_alloc(); }
+
+  void
+  __throw_bad_cast(void)
+  { throw bad_cast(); }
+
+  void
+  __throw_bad_typeid(void)
+  { throw bad_typeid(); }
+
+  void
+  __throw_logic_error(const char* __s)
+  { throw logic_error(_(__s)); }
+
+  void
+  __throw_domain_error(const char* __s)
+  { throw domain_error(_(__s)); }
+
+  void
+  __throw_invalid_argument(const char* __s)
+  { throw invalid_argument(_(__s)); }
+
+  void
+  __throw_length_error(const char* __s)
+  { throw length_error(_(__s)); }
+
+  void
+  __throw_out_of_range(const char* __s)
+  { throw out_of_range(_(__s)); }
+
+  void
+  __throw_runtime_error(const char* __s)
+  { throw runtime_error(_(__s)); }
+
+  void
+  __throw_range_error(const char* __s)
+  { throw range_error(_(__s)); }
+
+  void
+  __throw_overflow_error(const char* __s)
+  { throw overflow_error(_(__s)); }
+
+  void
+  __throw_underflow_error(const char* __s)
+  { throw underflow_error(_(__s)); }
+
+  void
+  __throw_ios_failure(const char* __s)
+  { throw ios_base::failure(_(__s)); }
+
+  void
+  __throw_system_error(int __i)
+  { throw system_error(error_code(__i, generic_category())); }
+
+  void
+  __throw_future_error(int __i)
+  { throw future_error(make_error_code(future_errc(__i))); }
+
+  void
+  __throw_bad_function_call()
+  { throw bad_function_call(); }
+
+  void
+  __throw_regex_error(regex_constants::error_type __ecode)
+  { throw regex_error(__ecode); }
+#else
+  void
+  __throw_bad_exception(void)
+  { std::abort(); }
+
+  void
+  __throw_bad_alloc(void)
+  { std::abort(); }
+
+  void
+  __throw_bad_cast(void)
+  { std::abort(); }
+
+  void
+  __throw_bad_typeid(void)
+  { std::abort(); }
+
+  void
+  __throw_logic_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_domain_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_invalid_argument(const char*)
+  { std::abort(); }
+
+  void
+  __throw_length_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_out_of_range(const char*)
+  { std::abort(); }
+
+  void
+  __throw_runtime_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_range_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_overflow_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_underflow_error(const char*)
+  { std::abort(); }
+
+  void
+  __throw_ios_failure(const char*)
+  { std::abort(); }
+
+  void
+  __throw_system_error(int)
+  { std::abort(); }
+
+  void
+  __throw_future_error(int)
+  { std::abort(); }
+
+  void
+  __throw_bad_function_call()
+  { std::abort(); }
+
+  void
+  __throw_regex_error(regex_constants::error_type __ecode)
+  { std::abort(); }
+#endif //__EXCEPTIONS
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functional.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functional.cc
new file mode 100644
index 000000000..2ab340514
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/functional.cc
@@ -0,0 +1,35 @@
+// Support for <functional> -*- C++ -*-
+
+// Copyright (C) 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <functional>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bad_function_call::~bad_function_call() throw() = default;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/future.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/future.cc
new file mode 100644
index 000000000..d6149cbbf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/future.cc
@@ -0,0 +1,112 @@
+// future -*- C++ -*-
+
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <future>
+
+namespace
+{
+  struct future_error_category : public std::error_category
+  {
+    future_error_category() {}
+
+    virtual const char*
+    name() const 
+    { return "future"; }
+
+    virtual std::string message(int __ec) const
+    {
+      std::string __msg;
+      switch (std::future_errc(__ec))
+      {
+      case std::future_errc::broken_promise:
+          __msg = "Broken promise";
+          break;
+      case std::future_errc::future_already_retrieved:
+          __msg = "Future already retrieved";
+          break;
+      case std::future_errc::promise_already_satisfied:
+          __msg = "Promise already satisfied";
+          break;
+      case std::future_errc::no_state:
+          __msg = "No associated state";
+          break;
+      default:
+          __msg = "Unknown error";
+          break;
+      }
+      return __msg;
+    }
+  };
+
+  const future_error_category&
+  __future_category_instance()
+  {
+    static const future_error_category __fec;
+    return __fec;
+  }
+}
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  const error_category& future_category()
+  { return __future_category_instance(); }
+
+  future_error::~future_error() throw() { }
+
+  const char* 
+  future_error::what() const throw() { return _M_code.message().c_str(); }
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
+  && defined(_GLIBCXX_ATOMIC_BUILTINS_4)
+  __future_base::_Result_base::_Result_base() = default;
+
+  __future_base::_Result_base::~_Result_base() = default;
+
+  __future_base::_State_base::~_State_base() = default;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+// XXX GLIBCXX_ABI Deprecated
+// gcc-4.6.0
+// <future> export changes
+#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
+    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
+    && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  const std::error_category* future_category = &__future_category_instance();
+}
+
+#define _GLIBCXX_ASM_SYMVER(cur, old, version) \
+   asm (".symver " #cur "," #old "@@@" #version);
+
+_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx15future_categoryE, _ZSt15future_category, GLIBCXX_3.4.14)
+
+#endif
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/globals_io.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/globals_io.cc
new file mode 100644
index 000000000..722abacbe
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/globals_io.cc
@@ -0,0 +1,108 @@
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "bits/c++config.h"
+#include <fstream>
+#include <istream>
+#include <ostream>
+#include <ext/stdio_filebuf.h>
+#include <ext/stdio_sync_filebuf.h>
+
+// On AIX, and perhaps other systems, library initialization order is
+// not guaranteed.  For example, the static initializers for the main
+// program might run before the static initializers for this library.
+// That means that we cannot rely on static initialization in the
+// library; there is no guarantee that things will get initialized in
+// time.  This file contains definitions of all global variables that
+// require initialization as arrays of characters.
+
+// NB: asm directives can rename these non-exported, namespace
+// __gnu_cxx symbols into exported, namespace std symbols with the
+// appropriate symbol version name.
+// The rename syntax is 
+//   asm (".symver currentname,oldname@@GLIBCXX_3.2")
+// In macro form:
+// _GLIBCXX_ASM_SYMVER(currentname, oldname, GLIBCXX_3.2)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Standard stream objects.
+  // NB: Iff <iostream> is included, these definitions become wonky.
+  typedef char fake_istream[sizeof(istream)]
+  __attribute__ ((aligned(__alignof__(istream))));
+  typedef char fake_ostream[sizeof(ostream)] 
+  __attribute__ ((aligned(__alignof__(ostream))));
+  fake_istream cin;
+  fake_ostream cout;
+  fake_ostream cerr;
+  fake_ostream clog;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef char fake_wistream[sizeof(wistream)] 
+  __attribute__ ((aligned(__alignof__(wistream))));
+  typedef char fake_wostream[sizeof(wostream)] 
+  __attribute__ ((aligned(__alignof__(wostream))));
+  fake_wistream wcin;
+  fake_wostream wcout;
+  fake_wostream wcerr;
+  fake_wostream wclog;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden)
+{
+  using namespace std;
+  using namespace __gnu_cxx;
+
+  // We use different stream buffer types depending on whether
+  // ios_base::sync_with_stdio(false) has been called.
+  typedef char fake_stdiobuf[sizeof(stdio_sync_filebuf<char>)]
+  __attribute__ ((aligned(__alignof__(stdio_sync_filebuf<char>))));
+  fake_stdiobuf buf_cout_sync;
+  fake_stdiobuf buf_cin_sync;
+  fake_stdiobuf buf_cerr_sync;
+
+  typedef char fake_filebuf[sizeof(stdio_filebuf<char>)]
+  __attribute__ ((aligned(__alignof__(stdio_filebuf<char>))));
+  fake_filebuf buf_cout;
+  fake_filebuf buf_cin;
+  fake_filebuf buf_cerr;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef char fake_wstdiobuf[sizeof(stdio_sync_filebuf<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(stdio_sync_filebuf<wchar_t>))));
+  fake_wstdiobuf buf_wcout_sync;
+  fake_wstdiobuf buf_wcin_sync;
+  fake_wstdiobuf buf_wcerr_sync;
+
+  typedef char fake_wfilebuf[sizeof(stdio_filebuf<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(stdio_filebuf<wchar_t>))));
+  fake_wfilebuf buf_wcout;
+  fake_wfilebuf buf_wcin;
+  fake_wfilebuf buf_wcerr;
+#endif
+} // namespace __gnu_internal
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash-long-double-aux.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash-long-double-aux.cc
new file mode 100644
index 000000000..d54d635f8
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash-long-double-aux.cc
@@ -0,0 +1,50 @@
+//  std::hash and std::tr1::hash definitions, long double bits -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+  // For long double, careful with random padding bits (e.g., on x86,
+  // 10 bytes -> 12 bytes) and resort to frexp.
+  template<>
+    size_t
+    hash<long double>::operator()(long double __val) const
+    {
+      // 0 and -0 both hash to zero.
+      if (__val == 0.0L)
+	return 0;
+
+      int __exponent;
+      __val = __builtin_frexpl(__val, &__exponent);
+      __val = __val < 0.0l ? -(__val + 0.5l) : __val;
+
+      const long double __mult = __SIZE_MAX__ + 1.0l;
+      __val *= __mult;
+
+      // Try to use all the bits of the mantissa (really necessary only
+      // on 32-bit targets, at least for 80-bit floating point formats).
+      const size_t __hibits = (size_t)__val;
+      __val = (__val - (long double)__hibits) * __mult;
+
+      const size_t __coeff = __SIZE_MAX__ / __LDBL_MAX_EXP__;
+
+      return __hibits + (size_t)__val + __coeff * __exponent;
+    }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_c++0x.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_c++0x.cc
new file mode 100644
index 000000000..852498df6
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_c++0x.cc
@@ -0,0 +1,34 @@
+// std::hash definitions -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# error "hash_c++0x.cc must be compiled with -std=gnu++0x"
+#endif
+
+#include <bits/functional_hash.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+#include "hash-long-double-aux.cc"
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_tr1.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_tr1.cc
new file mode 100644
index 000000000..e707e827a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hash_tr1.cc
@@ -0,0 +1,58 @@
+// std::tr1::hash definitions -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <string>
+#include <tr1/functional>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace tr1 
+  {
+#include "hash-long-double-aux.cc"
+
+#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
+  template<>
+    size_t
+    hash<string>::operator()(string __s) const
+    { return _Fnv_hash::hash(__s.data(), __s.length()); }
+
+  template<>
+    size_t
+    hash<const string&>::operator()(const string& __s) const
+    { return _Fnv_hash::hash(__s.data(), __s.length()); }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    size_t
+    hash<wstring>::operator()(wstring __s) const
+    { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+
+  template<>
+    size_t
+    hash<const wstring&>::operator()(const wstring& __s) const
+    { return _Fnv_hash::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+#endif
+#endif
+  }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable-aux.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable-aux.cc
new file mode 100644
index 000000000..23bb00ec5
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable-aux.cc
@@ -0,0 +1,95 @@
+// std::__detail and std::tr1::__detail definitions -*- C++ -*-
+
+// Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+namespace __detail
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+  extern const unsigned long __prime_list[] = // 256 + 1 or 256 + 48 + 1
+  {
+    2ul, 3ul, 5ul, 7ul, 11ul, 13ul, 17ul, 19ul, 23ul, 29ul, 31ul,
+    37ul, 41ul, 43ul, 47ul, 53ul, 59ul, 61ul, 67ul, 71ul, 73ul, 79ul,
+    83ul, 89ul, 97ul, 103ul, 109ul, 113ul, 127ul, 137ul, 139ul, 149ul,
+    157ul, 167ul, 179ul, 193ul, 199ul, 211ul, 227ul, 241ul, 257ul,
+    277ul, 293ul, 313ul, 337ul, 359ul, 383ul, 409ul, 439ul, 467ul,
+    503ul, 541ul, 577ul, 619ul, 661ul, 709ul, 761ul, 823ul, 887ul,
+    953ul, 1031ul, 1109ul, 1193ul, 1289ul, 1381ul, 1493ul, 1613ul,
+    1741ul, 1879ul, 2029ul, 2179ul, 2357ul, 2549ul, 2753ul, 2971ul,
+    3209ul, 3469ul, 3739ul, 4027ul, 4349ul, 4703ul, 5087ul, 5503ul,
+    5953ul, 6427ul, 6949ul, 7517ul, 8123ul, 8783ul, 9497ul, 10273ul,
+    11113ul, 12011ul, 12983ul, 14033ul, 15173ul, 16411ul, 17749ul,
+    19183ul, 20753ul, 22447ul, 24281ul, 26267ul, 28411ul, 30727ul,
+    33223ul, 35933ul, 38873ul, 42043ul, 45481ul, 49201ul, 53201ul,
+    57557ul, 62233ul, 67307ul, 72817ul, 78779ul, 85229ul, 92203ul,
+    99733ul, 107897ul, 116731ul, 126271ul, 136607ul, 147793ul,
+    159871ul, 172933ul, 187091ul, 202409ul, 218971ul, 236897ul,
+    256279ul, 277261ul, 299951ul, 324503ul, 351061ul, 379787ul,
+    410857ul, 444487ul, 480881ul, 520241ul, 562841ul, 608903ul,
+    658753ul, 712697ul, 771049ul, 834181ul, 902483ul, 976369ul,
+    1056323ul, 1142821ul, 1236397ul, 1337629ul, 1447153ul, 1565659ul,
+    1693859ul, 1832561ul, 1982627ul, 2144977ul, 2320627ul, 2510653ul,
+    2716249ul, 2938679ul, 3179303ul, 3439651ul, 3721303ul, 4026031ul,
+    4355707ul, 4712381ul, 5098259ul, 5515729ul, 5967347ul, 6456007ul,
+    6984629ul, 7556579ul, 8175383ul, 8844859ul, 9569143ul, 10352717ul,
+    11200489ul, 12117689ul, 13109983ul, 14183539ul, 15345007ul,
+    16601593ul, 17961079ul, 19431899ul, 21023161ul, 22744717ul,
+    24607243ul, 26622317ul, 28802401ul, 31160981ul, 33712729ul,
+    36473443ul, 39460231ul, 42691603ul, 46187573ul, 49969847ul,
+    54061849ul, 58488943ul, 63278561ul, 68460391ul, 74066549ul,
+    80131819ul, 86693767ul, 93793069ul, 101473717ul, 109783337ul,
+    118773397ul, 128499677ul, 139022417ul, 150406843ul, 162723577ul,
+    176048909ul, 190465427ul, 206062531ul, 222936881ul, 241193053ul,
+    260944219ul, 282312799ul, 305431229ul, 330442829ul, 357502601ul,
+    386778277ul, 418451333ul, 452718089ul, 489790921ul, 529899637ul,
+    573292817ul, 620239453ul, 671030513ul, 725980837ul, 785430967ul,
+    849749479ul, 919334987ul, 994618837ul, 1076067617ul, 1164186217ul,
+    1259520799ul, 1362662261ul, 1474249943ul, 1594975441ul, 1725587117ul,
+    1866894511ul, 2019773507ul, 2185171673ul, 2364114217ul, 2557710269ul,
+    2767159799ul, 2993761039ul, 3238918481ul, 3504151727ul, 3791104843ul,
+    4101556399ul, 4294967291ul,
+    // Sentinel, so we don't have to test the result of lower_bound,
+    // or, on 64-bit machines, rest of the table.
+#if __SIZEOF_LONG__ != 8
+    4294967291ul
+#else
+    6442450933ul, 8589934583ul, 12884901857ul, 17179869143ul,
+    25769803693ul, 34359738337ul, 51539607367ul, 68719476731ul,
+    103079215087ul, 137438953447ul, 206158430123ul, 274877906899ul,
+    412316860387ul, 549755813881ul, 824633720731ul, 1099511627689ul,
+    1649267441579ul, 2199023255531ul, 3298534883309ul, 4398046511093ul,
+    6597069766607ul, 8796093022151ul, 13194139533241ul, 17592186044399ul,
+    26388279066581ul, 35184372088777ul, 52776558133177ul, 70368744177643ul,
+    105553116266399ul, 140737488355213ul, 211106232532861ul, 281474976710597ul,
+    562949953421231ul, 1125899906842597ul, 2251799813685119ul,
+    4503599627370449ul, 9007199254740881ul, 18014398509481951ul,
+    36028797018963913ul, 72057594037927931ul, 144115188075855859ul,
+    288230376151711717ul, 576460752303423433ul,
+    1152921504606846883ul, 2305843009213693951ul,
+    4611686018427387847ul, 9223372036854775783ul,
+    18446744073709551557ul, 18446744073709551557ul
+#endif
+  };
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace __detail
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_c++0x.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_c++0x.cc
new file mode 100644
index 000000000..c9026acdf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_c++0x.cc
@@ -0,0 +1,34 @@
+// std::__detail definitions -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# error "hashtable_c++0x.cc must be compiled with -std=gnu++0x"
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+#include "hashtable-aux.cc"
+} // namespace // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_tr1.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_tr1.cc
new file mode 100644
index 000000000..32d5b63dc
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/hashtable_tr1.cc
@@ -0,0 +1,33 @@
+// std::__detail definitions -*- C++ -*-
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/c++config.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace tr1 
+  {
+#include "hashtable-aux.cc"
+  }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios-inst.cc
new file mode 100644
index 000000000..10fdaf7cd
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios-inst.cc
@@ -0,0 +1,43 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <ios>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class basic_ios<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class basic_ios<wchar_t>;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios.cc
new file mode 100644
index 000000000..292f1f8d0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios.cc
@@ -0,0 +1,193 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.4  Iostreams base classes
+//
+
+#include <ios>
+#include <limits>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for static const members of ios_base.
+  const ios_base::fmtflags ios_base::boolalpha;
+  const ios_base::fmtflags ios_base::dec;
+  const ios_base::fmtflags ios_base::fixed;
+  const ios_base::fmtflags ios_base::hex;
+  const ios_base::fmtflags ios_base::internal;
+  const ios_base::fmtflags ios_base::left;
+  const ios_base::fmtflags ios_base::oct;
+  const ios_base::fmtflags ios_base::right;
+  const ios_base::fmtflags ios_base::scientific;
+  const ios_base::fmtflags ios_base::showbase;
+  const ios_base::fmtflags ios_base::showpoint;
+  const ios_base::fmtflags ios_base::showpos;
+  const ios_base::fmtflags ios_base::skipws;
+  const ios_base::fmtflags ios_base::unitbuf;
+  const ios_base::fmtflags ios_base::uppercase;
+  const ios_base::fmtflags ios_base::adjustfield;
+  const ios_base::fmtflags ios_base::basefield;
+  const ios_base::fmtflags ios_base::floatfield;
+
+  const ios_base::iostate ios_base::badbit;
+  const ios_base::iostate ios_base::eofbit;
+  const ios_base::iostate ios_base::failbit;
+  const ios_base::iostate ios_base::goodbit;
+
+  const ios_base::openmode ios_base::app;
+  const ios_base::openmode ios_base::ate;
+  const ios_base::openmode ios_base::binary;
+  const ios_base::openmode ios_base::in;
+  const ios_base::openmode ios_base::out;
+  const ios_base::openmode ios_base::trunc;
+
+  const ios_base::seekdir ios_base::beg;
+  const ios_base::seekdir ios_base::cur;
+  const ios_base::seekdir ios_base::end;
+
+  _Atomic_word ios_base::Init::_S_refcount;
+
+  bool ios_base::Init::_S_synced_with_stdio = true;
+
+  ios_base::ios_base() throw()
+  : _M_precision(), _M_width(), _M_flags(), _M_exception(), 
+  _M_streambuf_state(), _M_callbacks(0), _M_word_zero(), 
+  _M_word_size(_S_local_word_size), _M_word(_M_local_word), _M_ios_locale()
+  {
+    // Do nothing: basic_ios::init() does it.  
+    // NB: _M_callbacks and _M_word must be zero for non-initialized
+    // ios_base to go through ~ios_base gracefully.
+  }
+  
+  // 27.4.2.7  ios_base constructors/destructors
+  ios_base::~ios_base()
+  {
+    _M_call_callbacks(erase_event);
+    _M_dispose_callbacks();
+    if (_M_word != _M_local_word) 
+      {
+	delete [] _M_word;
+	_M_word = 0;
+      }
+  }
+
+  // 27.4.2.5  ios_base storage functions
+  int 
+  ios_base::xalloc() throw()
+  {
+    // Implementation note: Initialize top to zero to ensure that
+    // initialization occurs before main() is started.
+    static _Atomic_word _S_top = 0; 
+    return __gnu_cxx::__exchange_and_add_dispatch(&_S_top, 1) + 4;
+  }
+
+  void 
+  ios_base::register_callback(event_callback __fn, int __index)
+  { _M_callbacks = new _Callback_list(__fn, __index, _M_callbacks); }
+
+  // 27.4.2.5  iword/pword storage
+  ios_base::_Words&
+  ios_base::_M_grow_words(int __ix, bool __iword)
+  {
+    // Precondition: _M_word_size <= __ix
+    int __newsize = _S_local_word_size;
+    _Words* __words = _M_local_word;
+    if (__ix > _S_local_word_size - 1)
+      {
+	if (__ix < numeric_limits<int>::max())
+	  {
+	    __newsize = __ix + 1;
+	    __try
+	      { __words = new _Words[__newsize]; }
+	    __catch(const std::bad_alloc&)
+	      {
+		_M_streambuf_state |= badbit;
+		if (_M_streambuf_state & _M_exception)
+		  __throw_ios_failure(__N("ios_base::_M_grow_words "
+					  "allocation failed"));
+		if (__iword)
+		  _M_word_zero._M_iword = 0;
+		else
+		  _M_word_zero._M_pword = 0;
+		return _M_word_zero;
+	      }
+	    for (int __i = 0; __i < _M_word_size; __i++) 
+	      __words[__i] = _M_word[__i];
+	    if (_M_word && _M_word != _M_local_word) 
+	      {
+		delete [] _M_word;
+		_M_word = 0;
+	      }
+	  }
+	else
+	  {
+	    _M_streambuf_state |= badbit;
+	    if (_M_streambuf_state & _M_exception)
+	      __throw_ios_failure(__N("ios_base::_M_grow_words is not valid"));
+	    if (__iword)
+	      _M_word_zero._M_iword = 0;
+	    else
+	      _M_word_zero._M_pword = 0;
+	    return _M_word_zero;
+	  }
+      }
+    _M_word = __words;
+    _M_word_size = __newsize;
+    return _M_word[__ix];
+  }
+
+  void 
+  ios_base::_M_call_callbacks(event __e) throw()
+  {
+    _Callback_list* __p = _M_callbacks;
+    while (__p)
+      {
+	__try 
+	  { (*__p->_M_fn) (__e, *this, __p->_M_index); } 
+	__catch(...) 
+	  { }
+	__p = __p->_M_next;
+      }
+  }
+
+  void 
+  ios_base::_M_dispose_callbacks(void) throw()
+  {
+    _Callback_list* __p = _M_callbacks;
+    while (__p && __p->_M_remove_reference() == 0)
+      {
+	_Callback_list* __next = __p->_M_next;
+	delete __p;
+	__p = __next;
+      }
+    _M_callbacks = 0;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_failure.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_failure.cc
new file mode 100644
index 000000000..1c42f01ed
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_failure.cc
@@ -0,0 +1,47 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.4.2.1.1  Class ios_base::failure
+//
+
+#include <ios>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  ios_base::failure::failure(const string& __str) throw()
+  : _M_msg(__str) { }
+
+  ios_base::failure::~failure() throw()
+  { }
+  
+  const char*
+  ios_base::failure::what() const throw()
+  { return _M_msg.c_str(); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_init.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_init.cc
new file mode 100644
index 000000000..a811daf00
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_init.cc
@@ -0,0 +1,205 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.4  Iostreams base classes
+//
+
+#include <ios>
+#include <ostream>
+#include <istream>
+#include <fstream>
+#include <ext/stdio_filebuf.h>
+#include <ext/stdio_sync_filebuf.h>
+
+namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden)
+{
+  using namespace __gnu_cxx;
+
+  // Extern declarations for global objects in src/globals.cc.
+  extern stdio_sync_filebuf<char> buf_cout_sync;
+  extern stdio_sync_filebuf<char> buf_cin_sync;
+  extern stdio_sync_filebuf<char> buf_cerr_sync;
+
+  extern stdio_filebuf<char> buf_cout;
+  extern stdio_filebuf<char> buf_cin;
+  extern stdio_filebuf<char> buf_cerr;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern stdio_sync_filebuf<wchar_t> buf_wcout_sync;
+  extern stdio_sync_filebuf<wchar_t> buf_wcin_sync;
+  extern stdio_sync_filebuf<wchar_t> buf_wcerr_sync;
+
+  extern stdio_filebuf<wchar_t> buf_wcout;
+  extern stdio_filebuf<wchar_t> buf_wcin;
+  extern stdio_filebuf<wchar_t> buf_wcerr;
+#endif
+} // namespace __gnu_internal
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using namespace __gnu_internal;
+  
+  extern istream cin;
+  extern ostream cout;
+  extern ostream cerr;
+  extern ostream clog;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  extern wistream wcin;
+  extern wostream wcout;
+  extern wostream wcerr;
+  extern wostream wclog;
+#endif
+
+  ios_base::Init::Init()
+  {
+    if (__gnu_cxx::__exchange_and_add_dispatch(&_S_refcount, 1) == 0)
+      {
+	// Standard streams default to synced with "C" operations.
+	_S_synced_with_stdio = true;
+
+	new (&buf_cout_sync) stdio_sync_filebuf<char>(stdout);
+	new (&buf_cin_sync) stdio_sync_filebuf<char>(stdin);
+	new (&buf_cerr_sync) stdio_sync_filebuf<char>(stderr);
+
+	// The standard streams are constructed once only and never
+	// destroyed.
+	new (&cout) ostream(&buf_cout_sync);
+	new (&cin) istream(&buf_cin_sync);
+	new (&cerr) ostream(&buf_cerr_sync);
+	new (&clog) ostream(&buf_cerr_sync);
+	cin.tie(&cout);
+	cerr.setf(ios_base::unitbuf);
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 455. cerr::tie() and wcerr::tie() are overspecified.
+	cerr.tie(&cout);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+	new (&buf_wcout_sync) stdio_sync_filebuf<wchar_t>(stdout);
+	new (&buf_wcin_sync) stdio_sync_filebuf<wchar_t>(stdin);
+	new (&buf_wcerr_sync) stdio_sync_filebuf<wchar_t>(stderr);
+
+	new (&wcout) wostream(&buf_wcout_sync);
+	new (&wcin) wistream(&buf_wcin_sync);
+	new (&wcerr) wostream(&buf_wcerr_sync);
+	new (&wclog) wostream(&buf_wcerr_sync);
+	wcin.tie(&wcout);
+	wcerr.setf(ios_base::unitbuf);
+	wcerr.tie(&wcout);	
+#endif
+	
+	// NB: Have to set refcount above one, so that standard
+	// streams are not re-initialized with uses of ios_base::Init
+	// besides <iostream> static object, ie just using <ios> with
+	// ios_base::Init objects.
+	__gnu_cxx::__atomic_add_dispatch(&_S_refcount, 1);
+      }
+  }
+
+  ios_base::Init::~Init()
+  {
+    // Be race-detector-friendly.  For more info see bits/c++config.
+    _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_S_refcount);
+    if (__gnu_cxx::__exchange_and_add_dispatch(&_S_refcount, -1) == 2)
+      {
+        _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_S_refcount);
+	// Catch any exceptions thrown by basic_ostream::flush()
+	__try
+	  { 
+	    // Flush standard output streams as required by 27.4.2.1.6
+	    cout.flush();
+	    cerr.flush();
+	    clog.flush();
+    
+#ifdef _GLIBCXX_USE_WCHAR_T
+	    wcout.flush();
+	    wcerr.flush();
+	    wclog.flush();    
+#endif
+	  }
+	__catch(...)
+	  { }
+      }
+  } 
+
+  bool 
+  ios_base::sync_with_stdio(bool __sync)
+  { 
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 49.  Underspecification of ios_base::sync_with_stdio
+    bool __ret = ios_base::Init::_S_synced_with_stdio;
+
+    // Turn off sync with C FILE* for cin, cout, cerr, clog iff
+    // currently synchronized.
+    if (!__sync && __ret)
+      {
+	// Make sure the standard streams are constructed.
+	ios_base::Init __init;
+
+	ios_base::Init::_S_synced_with_stdio = __sync;
+
+	// Explicitly call dtors to free any memory that is
+	// dynamically allocated by filebuf ctor or member functions,
+	// but don't deallocate all memory by calling operator delete.
+	buf_cout_sync.~stdio_sync_filebuf<char>();
+	buf_cin_sync.~stdio_sync_filebuf<char>();
+	buf_cerr_sync.~stdio_sync_filebuf<char>();
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+	buf_wcout_sync.~stdio_sync_filebuf<wchar_t>();
+	buf_wcin_sync.~stdio_sync_filebuf<wchar_t>();
+	buf_wcerr_sync.~stdio_sync_filebuf<wchar_t>();
+#endif
+
+	// Create stream buffers for the standard streams and use
+	// those buffers without destroying and recreating the
+	// streams.
+	new (&buf_cout) stdio_filebuf<char>(stdout, ios_base::out);
+	new (&buf_cin) stdio_filebuf<char>(stdin, ios_base::in);
+	new (&buf_cerr) stdio_filebuf<char>(stderr, ios_base::out);
+	cout.rdbuf(&buf_cout);
+	cin.rdbuf(&buf_cin);
+	cerr.rdbuf(&buf_cerr);
+	clog.rdbuf(&buf_cerr);
+    
+#ifdef _GLIBCXX_USE_WCHAR_T
+	new (&buf_wcout) stdio_filebuf<wchar_t>(stdout, ios_base::out);
+	new (&buf_wcin) stdio_filebuf<wchar_t>(stdin, ios_base::in);
+	new (&buf_wcerr) stdio_filebuf<wchar_t>(stderr, ios_base::out);
+	wcout.rdbuf(&buf_wcout);
+	wcin.rdbuf(&buf_wcin);
+	wcerr.rdbuf(&buf_wcerr);
+	wclog.rdbuf(&buf_wcerr);
+#endif
+      }
+    return __ret; 
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_locale.cc
new file mode 100644
index 000000000..b98b96c62
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ios_locale.cc
@@ -0,0 +1,60 @@
+// Iostreams base classes -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.4  Iostreams base classes
+//
+
+#include <ios>
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Called only by basic_ios<>::init.
+  void
+  ios_base::_M_init() throw()
+  {
+    // NB: May be called more than once
+    _M_precision = 6;
+    _M_width = 0;
+    _M_flags = skipws | dec;
+    _M_ios_locale = locale();
+  }
+
+  // 27.4.2.3  ios_base locale functions
+  locale
+  ios_base::imbue(const locale& __loc) throw()
+  {
+    locale __old = _M_ios_locale;
+    _M_ios_locale = __loc;
+    _M_call_callbacks(imbue_event);
+    return __old;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/iostream-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/iostream-inst.cc
new file mode 100644
index 000000000..60f52061e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/iostream-inst.cc
@@ -0,0 +1,49 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <iomanip>
+#include <istream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class _Setfill<char>;
+  template _Setfill<char> setfill(char);
+  template class basic_iostream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class _Setfill<wchar_t>;
+  template _Setfill<wchar_t> setfill(wchar_t);
+  template class basic_iostream<wchar_t>; 
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream-inst.cc
new file mode 100644
index 000000000..4d3bc1a74
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream-inst.cc
@@ -0,0 +1,115 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <istream>
+#include <iomanip>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class basic_istream<char>;
+  template istream& ws(istream&);
+  template istream& operator>>(istream&, char&);
+  template istream& operator>>(istream&, unsigned char&);
+  template istream& operator>>(istream&, signed char&);
+  template istream& operator>>(istream&, char*);
+  template istream& operator>>(istream&, unsigned char*);
+  template istream& operator>>(istream&, signed char*);
+
+  template istream& operator>>(istream&, _Setfill<char>);
+  template istream& operator>>(istream&, _Setiosflags);
+  template istream& operator>>(istream&, _Resetiosflags);
+  template istream& operator>>(istream&, _Setbase);
+  template istream& operator>>(istream&, _Setprecision);
+  template istream& operator>>(istream&, _Setw);
+
+  template istream& istream::_M_extract(unsigned short&);
+  template istream& istream::_M_extract(unsigned int&);  
+  template istream& istream::_M_extract(long&);
+  template istream& istream::_M_extract(unsigned long&);
+  template istream& istream::_M_extract(bool&);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template istream& istream::_M_extract(long long&);
+  template istream& istream::_M_extract(unsigned long long&);
+#endif
+  template istream& istream::_M_extract(float&);
+  template istream& istream::_M_extract(double&);
+  template istream& istream::_M_extract(long double&);
+  template istream& istream::_M_extract(void*&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class basic_istream<wchar_t>;
+  template wistream& ws(wistream&);
+  template wistream& operator>>(wistream&, wchar_t&);
+  template wistream& operator>>(wistream&, wchar_t*);
+
+  template wistream& operator>>(wistream&, _Setfill<wchar_t>);
+  template wistream& operator>>(wistream&, _Setiosflags);
+  template wistream& operator>>(wistream&, _Resetiosflags);
+  template wistream& operator>>(wistream&, _Setbase);
+  template wistream& operator>>(wistream&, _Setprecision);
+  template wistream& operator>>(wistream&, _Setw);
+
+  template wistream& wistream::_M_extract(unsigned short&);
+  template wistream& wistream::_M_extract(unsigned int&);  
+  template wistream& wistream::_M_extract(long&);
+  template wistream& wistream::_M_extract(unsigned long&);
+  template wistream& wistream::_M_extract(bool&);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template wistream& wistream::_M_extract(long long&);
+  template wistream& wistream::_M_extract(unsigned long long&);
+#endif
+  template wistream& wistream::_M_extract(float&);
+  template wistream& wistream::_M_extract(double&);
+  template wistream& wistream::_M_extract(long double&);
+  template wistream& wistream::_M_extract(void*&);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
+_GLIBCXX_LDBL_COMPAT (_ZNSirsERd, _ZNSirsERe);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd,
+		      _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe);
+#endif
+_GLIBCXX_LDBL_COMPAT (_ZNSi10_M_extractIdEERSiRT_,
+		      _ZNSi10_M_extractIeEERSiRT_);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_,
+		      _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_);
+#endif
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream.cc
new file mode 100644
index 000000000..f161016cf
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/istream.cc
@@ -0,0 +1,690 @@
+// Input streams -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.6.1  Input streams
+//
+
+#include <istream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    basic_istream<char>&
+    basic_istream<char>::
+    getline(char_type* __s, streamsize __n, char_type __delim)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+          __try
+	    {
+	      const int_type __idelim = traits_type::to_int_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+	      
+	      while (_M_gcount + 1 < __n
+		     && !traits_type::eq_int_type(__c, __eof)
+		     && !traits_type::eq_int_type(__c, __idelim))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__n - _M_gcount
+							  - 1));
+		  if (__size > 1)
+		    {
+		      const char_type* __p = traits_type::find(__sb->gptr(),
+							       __size,
+							       __delim);
+		      if (__p)
+			__size = __p - __sb->gptr();
+		      traits_type::copy(__s, __sb->gptr(), __size);
+		      __s += __size;
+		      __sb->__safe_gbump(__size);
+		      _M_gcount += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      *__s++ = traits_type::to_char_type(__c);
+		      ++_M_gcount;
+		      __c = __sb->snextc();
+		    }
+		}
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (traits_type::eq_int_type(__c, __idelim))
+		{
+		  ++_M_gcount;		  
+		  __sb->sbumpc();
+		}
+	      else
+		__err |= ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 243. get and getline when sentry reports failure.
+      if (__n > 0)
+	*__s = char_type();
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<>
+    basic_istream<char>&
+    basic_istream<char>::
+    ignore(streamsize __n, int_type __delim)
+    {
+      if (traits_type::eq_int_type(__delim, traits_type::eof()))
+	return ignore(__n);
+
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__n > 0 && __cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const char_type __cdelim = traits_type::to_char_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof)
+			 && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      streamsize __size = std::min(streamsize(__sb->egptr()
+							      - __sb->gptr()),
+						   streamsize(__n - _M_gcount));
+		      if (__size > 1)
+			{
+			  const char_type* __p = traits_type::find(__sb->gptr(),
+								   __size,
+								   __cdelim);
+			  if (__p)
+			    __size = __p - __sb->gptr();
+			  __sb->__safe_gbump(__size);
+			  _M_gcount += __size;
+			  __c = __sb->sgetc();
+			}
+		      else
+			{
+			  ++_M_gcount;
+			  __c = __sb->snextc();
+			}
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof)
+		      && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (traits_type::eq_int_type(__c, __delim))
+		{
+		  if (_M_gcount
+		      < __gnu_cxx::__numeric_traits<streamsize>::__max)
+		    ++_M_gcount;
+		  __sb->sbumpc();
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<>
+    basic_istream<char>&
+    operator>>(basic_istream<char>& __in, char* __s)
+    {
+      typedef basic_istream<char>       	__istream_type;
+      typedef __istream_type::int_type		__int_type;
+      typedef __istream_type::char_type		__char_type;
+      typedef __istream_type::traits_type	__traits_type;
+      typedef __istream_type::__streambuf_type  __streambuf_type;
+      typedef __istream_type::__ctype_type	__ctype_type;
+
+      streamsize __extracted = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      // Figure out how many characters to extract.
+	      streamsize __num = __in.width();
+	      if (__num <= 0)
+		__num = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+
+	      const __int_type __eof = __traits_type::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      __int_type __c = __sb->sgetc();
+
+	      while (__extracted < __num - 1
+		     && !__traits_type::eq_int_type(__c, __eof)
+		     && !__ct.is(ctype_base::space,
+				 __traits_type::to_char_type(__c)))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__num - __extracted
+							  - 1));
+		  if (__size > 1)
+		    {
+		      __size = (__ct.scan_is(ctype_base::space,
+					     __sb->gptr() + 1,
+					     __sb->gptr() + __size)
+				- __sb->gptr());
+		      __traits_type::copy(__s, __sb->gptr(), __size);
+		      __s += __size;
+		      __sb->__safe_gbump(__size);
+		      __extracted += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      *__s++ = __traits_type::to_char_type(__c);
+		      ++__extracted;
+		      __c = __sb->snextc();
+		    }
+		}
+
+	      if (__traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 68.  Extractors for char* should store null at end
+	      *__s = __char_type();
+	      __in.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { __in._M_setstate(ios_base::badbit); }
+	}
+      if (!__extracted)
+	__err |= ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+  template<>
+    basic_istream<char>&
+    operator>>(basic_istream<char>& __in, basic_string<char>& __str)
+    {
+      typedef basic_istream<char>       	__istream_type;
+      typedef __istream_type::int_type		__int_type;
+      typedef __istream_type::char_type		__char_type;
+      typedef __istream_type::traits_type	__traits_type;
+      typedef __istream_type::__streambuf_type  __streambuf_type;
+      typedef __istream_type::__ctype_type	__ctype_type;
+      typedef basic_string<char>        	__string_type;
+      typedef __string_type::size_type		__size_type;
+
+      __size_type __extracted = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      __istream_type::sentry __cerb(__in, false);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      __str.erase();
+	      const streamsize __w = __in.width();
+	      const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
+		                              : __str.max_size();
+	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+	      const __int_type __eof = __traits_type::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      __int_type __c = __sb->sgetc();
+
+	      while (__extracted < __n
+		     && !__traits_type::eq_int_type(__c, __eof)
+		     && !__ct.is(ctype_base::space,
+				 __traits_type::to_char_type(__c)))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__n - __extracted));
+		  if (__size > 1)
+		    {
+		      __size = (__ct.scan_is(ctype_base::space,
+					     __sb->gptr() + 1,
+					     __sb->gptr() + __size)
+				- __sb->gptr());
+		      __str.append(__sb->gptr(), __size);
+		      __sb->__safe_gbump(__size);
+		      __extracted += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      __str += __traits_type::to_char_type(__c);
+		      ++__extracted;
+		      __c = __sb->snextc();
+		    }		  
+		}
+
+	      if (__traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      __in.width(0);
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(ios_base::badbit);
+	    }
+	}
+      if (!__extracted)
+	__err |= ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+  template<>
+    basic_istream<char>&
+    getline(basic_istream<char>& __in, basic_string<char>& __str,
+	    char __delim)
+    {
+      typedef basic_istream<char>       	__istream_type;
+      typedef __istream_type::int_type		__int_type;
+      typedef __istream_type::char_type		__char_type;
+      typedef __istream_type::traits_type	__traits_type;
+      typedef __istream_type::__streambuf_type  __streambuf_type;
+      typedef __istream_type::__ctype_type	__ctype_type;
+      typedef basic_string<char>        	__string_type;
+      typedef __string_type::size_type		__size_type;
+
+      __size_type __extracted = 0;
+      const __size_type __n = __str.max_size();
+      ios_base::iostate __err = ios_base::goodbit;
+      __istream_type::sentry __cerb(__in, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      __str.erase();
+	      const __int_type __idelim = __traits_type::to_int_type(__delim);
+	      const __int_type __eof = __traits_type::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      __int_type __c = __sb->sgetc();
+
+	      while (__extracted < __n
+		     && !__traits_type::eq_int_type(__c, __eof)
+		     && !__traits_type::eq_int_type(__c, __idelim))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__n - __extracted));
+		  if (__size > 1)
+		    {
+		      const __char_type* __p = __traits_type::find(__sb->gptr(),
+								   __size,
+								   __delim);
+		      if (__p)
+			__size = __p - __sb->gptr();
+		      __str.append(__sb->gptr(), __size);
+		      __sb->__safe_gbump(__size);
+		      __extracted += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      __str += __traits_type::to_char_type(__c);
+		      ++__extracted;
+		      __c = __sb->snextc();
+		    }		  
+		}
+
+	      if (__traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (__traits_type::eq_int_type(__c, __idelim))
+		{
+		  ++__extracted;
+		  __sb->sbumpc();
+		}
+	      else
+		__err |= ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(ios_base::badbit);
+	    }
+	}
+      if (!__extracted)
+	__err |= ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::
+    getline(char_type* __s, streamsize __n, char_type __delim)
+    {
+      _M_gcount = 0;
+      ios_base::iostate __err = ios_base::goodbit;
+      sentry __cerb(*this, true);
+      if (__cerb)
+	{
+          __try
+	    {
+	      const int_type __idelim = traits_type::to_int_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+	      
+	      while (_M_gcount + 1 < __n
+		     && !traits_type::eq_int_type(__c, __eof)
+		     && !traits_type::eq_int_type(__c, __idelim))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__n - _M_gcount
+							  - 1));
+		  if (__size > 1)
+		    {
+		      const char_type* __p = traits_type::find(__sb->gptr(),
+							       __size,
+							       __delim);
+		      if (__p)
+			__size = __p - __sb->gptr();
+		      traits_type::copy(__s, __sb->gptr(), __size);
+		      __s += __size;
+		      __sb->__safe_gbump(__size);
+		      _M_gcount += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      *__s++ = traits_type::to_char_type(__c);
+		      ++_M_gcount;
+		      __c = __sb->snextc();
+		    }
+		}
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (traits_type::eq_int_type(__c, __idelim))
+		{
+		  ++_M_gcount;		  
+		  __sb->sbumpc();
+		}
+	      else
+		__err |= ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	}
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 243. get and getline when sentry reports failure.
+      if (__n > 0)
+	*__s = char_type();
+      if (!_M_gcount)
+	__err |= ios_base::failbit;
+      if (__err)
+	this->setstate(__err);
+      return *this;
+    }
+
+  template<>
+    basic_istream<wchar_t>&
+    basic_istream<wchar_t>::
+    ignore(streamsize __n, int_type __delim)
+    {
+      if (traits_type::eq_int_type(__delim, traits_type::eof()))
+	return ignore(__n);
+
+      _M_gcount = 0;
+      sentry __cerb(*this, true);
+      if (__n > 0 && __cerb)
+	{
+	  ios_base::iostate __err = ios_base::goodbit;
+	  __try
+	    {
+	      const char_type __cdelim = traits_type::to_char_type(__delim);
+	      const int_type __eof = traits_type::eof();
+	      __streambuf_type* __sb = this->rdbuf();
+	      int_type __c = __sb->sgetc();
+
+	      bool __large_ignore = false;
+	      while (true)
+		{
+		  while (_M_gcount < __n
+			 && !traits_type::eq_int_type(__c, __eof)
+			 && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      streamsize __size = std::min(streamsize(__sb->egptr()
+							      - __sb->gptr()),
+						   streamsize(__n - _M_gcount));
+		      if (__size > 1)
+			{
+			  const char_type* __p = traits_type::find(__sb->gptr(),
+								   __size,
+								   __cdelim);
+			  if (__p)
+			    __size = __p - __sb->gptr();
+			  __sb->__safe_gbump(__size);
+			  _M_gcount += __size;
+			  __c = __sb->sgetc();
+			}
+		      else
+			{
+			  ++_M_gcount;
+			  __c = __sb->snextc();
+			}
+		    }
+		  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+		      && !traits_type::eq_int_type(__c, __eof)
+		      && !traits_type::eq_int_type(__c, __delim))
+		    {
+		      _M_gcount =
+			__gnu_cxx::__numeric_traits<streamsize>::__min;
+		      __large_ignore = true;
+		    }
+		  else
+		    break;
+		}
+
+	      if (__large_ignore)
+		_M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+	      if (traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (traits_type::eq_int_type(__c, __delim))
+		{
+		  if (_M_gcount
+		      < __gnu_cxx::__numeric_traits<streamsize>::__max)
+		    ++_M_gcount;
+		  __sb->sbumpc();
+		}
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      this->_M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    { this->_M_setstate(ios_base::badbit); }
+	  if (__err)
+	    this->setstate(__err);
+	}
+      return *this;
+    }
+
+  template<>
+    basic_istream<wchar_t>&
+    getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
+	    wchar_t __delim)
+    {
+      typedef basic_istream<wchar_t>       	__istream_type;
+      typedef __istream_type::int_type		__int_type;
+      typedef __istream_type::char_type		__char_type;
+      typedef __istream_type::traits_type	__traits_type;
+      typedef __istream_type::__streambuf_type  __streambuf_type;
+      typedef __istream_type::__ctype_type	__ctype_type;
+      typedef basic_string<wchar_t>        	__string_type;
+      typedef __string_type::size_type		__size_type;
+
+      __size_type __extracted = 0;
+      const __size_type __n = __str.max_size();
+      ios_base::iostate __err = ios_base::goodbit;
+      __istream_type::sentry __cerb(__in, true);
+      if (__cerb)
+	{
+	  __try
+	    {
+	      __str.erase();
+	      const __int_type __idelim = __traits_type::to_int_type(__delim);
+	      const __int_type __eof = __traits_type::eof();
+	      __streambuf_type* __sb = __in.rdbuf();
+	      __int_type __c = __sb->sgetc();
+
+	      while (__extracted < __n
+		     && !__traits_type::eq_int_type(__c, __eof)
+		     && !__traits_type::eq_int_type(__c, __idelim))
+		{
+		  streamsize __size = std::min(streamsize(__sb->egptr()
+							  - __sb->gptr()),
+					       streamsize(__n - __extracted));
+		  if (__size > 1)
+		    {
+		      const __char_type* __p = __traits_type::find(__sb->gptr(),
+								   __size,
+								   __delim);
+		      if (__p)
+			__size = __p - __sb->gptr();
+		      __str.append(__sb->gptr(), __size);
+		      __sb->__safe_gbump(__size);
+		      __extracted += __size;
+		      __c = __sb->sgetc();
+		    }
+		  else
+		    {
+		      __str += __traits_type::to_char_type(__c);
+		      ++__extracted;
+		      __c = __sb->snextc();
+		    }		  
+		}
+
+	      if (__traits_type::eq_int_type(__c, __eof))
+		__err |= ios_base::eofbit;
+	      else if (__traits_type::eq_int_type(__c, __idelim))
+		{
+		  ++__extracted;
+		  __sb->sbumpc();
+		}
+	      else
+		__err |= ios_base::failbit;
+	    }
+	  __catch(__cxxabiv1::__forced_unwind&)
+	    {
+	      __in._M_setstate(ios_base::badbit);
+	      __throw_exception_again;
+	    }
+	  __catch(...)
+	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 91. Description of operator>> and getline() for string<>
+	      // might cause endless loop
+	      __in._M_setstate(ios_base::badbit);
+	    }
+	}
+      if (!__extracted)
+	__err |= ios_base::failbit;
+      if (__err)
+	__in.setstate(__err);
+      return __in;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/limits.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/limits.cc
new file mode 100644
index 000000000..5a21239d1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/limits.cc
@@ -0,0 +1,551 @@
+// Static data members of -*- C++ -*- numeric_limits classes
+
+// Copyright (C) 1999, 2001, 2002, 2005, 2006, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
+
+//
+// ISO C++ 14882:1998
+// 18.2.1
+//
+
+#include <limits>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#define const _GLIBCXX_USE_CONSTEXPR
+
+  const bool __numeric_limits_base::is_specialized;
+  const int  __numeric_limits_base::digits;
+  const int  __numeric_limits_base::digits10;
+  const int  __numeric_limits_base::max_digits10;
+  const bool __numeric_limits_base::is_signed;
+  const bool __numeric_limits_base::is_integer;
+  const bool __numeric_limits_base::is_exact;
+  const int  __numeric_limits_base::radix;
+  const int  __numeric_limits_base::min_exponent;
+  const int  __numeric_limits_base::min_exponent10;
+  const int  __numeric_limits_base::max_exponent;
+  const int  __numeric_limits_base::max_exponent10;
+  const bool __numeric_limits_base::has_infinity;
+  const bool __numeric_limits_base::has_quiet_NaN;
+  const bool __numeric_limits_base::has_signaling_NaN;
+  const float_denorm_style __numeric_limits_base::has_denorm;
+  const bool __numeric_limits_base::has_denorm_loss;
+  const bool __numeric_limits_base::is_iec559;
+  const bool __numeric_limits_base::is_bounded;
+  const bool __numeric_limits_base::is_modulo;
+  const bool __numeric_limits_base::traps;
+  const bool __numeric_limits_base::tinyness_before;
+  const float_round_style __numeric_limits_base::round_style;
+
+  // bool
+  const bool numeric_limits<bool>::is_specialized;
+  const int  numeric_limits<bool>::digits;
+  const int  numeric_limits<bool>::digits10;
+  const int  numeric_limits<bool>::max_digits10;
+  const bool numeric_limits<bool>::is_signed;
+  const bool numeric_limits<bool>::is_integer;
+  const bool numeric_limits<bool>::is_exact;
+  const int  numeric_limits<bool>::radix;
+  const int  numeric_limits<bool>::min_exponent;
+  const int  numeric_limits<bool>::min_exponent10;
+  const int  numeric_limits<bool>::max_exponent;
+  const int  numeric_limits<bool>::max_exponent10;
+  const bool numeric_limits<bool>::has_infinity;
+  const bool numeric_limits<bool>::has_quiet_NaN;
+  const bool numeric_limits<bool>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<bool>::has_denorm;
+  const bool numeric_limits<bool>::has_denorm_loss;
+  const bool numeric_limits<bool>::is_iec559;
+  const bool numeric_limits<bool>::is_bounded;
+  const bool numeric_limits<bool>::is_modulo;
+  const bool numeric_limits<bool>::traps;
+  const bool numeric_limits<bool>::tinyness_before;
+  const float_round_style numeric_limits<bool>::round_style;
+
+  // char
+  const bool numeric_limits<char>::is_specialized;
+  const int  numeric_limits<char>::digits;
+  const int  numeric_limits<char>::digits10;
+  const int  numeric_limits<char>::max_digits10;
+  const bool numeric_limits<char>::is_signed;
+  const bool numeric_limits<char>::is_integer;
+  const bool numeric_limits<char>::is_exact;
+  const int  numeric_limits<char>::radix;
+  const int  numeric_limits<char>::min_exponent;
+  const int  numeric_limits<char>::min_exponent10;
+  const int  numeric_limits<char>::max_exponent;
+  const int  numeric_limits<char>::max_exponent10;
+  const bool numeric_limits<char>::has_infinity;
+  const bool numeric_limits<char>::has_quiet_NaN;
+  const bool numeric_limits<char>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<char>::has_denorm;
+  const bool numeric_limits<char>::has_denorm_loss;
+  const bool numeric_limits<char>::is_iec559;
+  const bool numeric_limits<char>::is_bounded;
+  const bool numeric_limits<char>::is_modulo;
+  const bool numeric_limits<char>::traps;
+  const bool numeric_limits<char>::tinyness_before;
+  const float_round_style numeric_limits<char>::round_style;
+
+  // signed char
+  const bool numeric_limits<signed char>::is_specialized;
+  const int  numeric_limits<signed char>::digits;
+  const int  numeric_limits<signed char>::digits10;
+  const int  numeric_limits<signed char>::max_digits10;
+  const bool numeric_limits<signed char>::is_signed;
+  const bool numeric_limits<signed char>::is_integer;
+  const bool numeric_limits<signed char>::is_exact;
+  const int  numeric_limits<signed char>::radix;
+  const int  numeric_limits<signed char>::min_exponent;
+  const int  numeric_limits<signed char>::min_exponent10;
+  const int  numeric_limits<signed char>::max_exponent;
+  const int  numeric_limits<signed char>::max_exponent10;
+  const bool numeric_limits<signed char>::has_infinity;
+  const bool numeric_limits<signed char>::has_quiet_NaN;
+  const bool numeric_limits<signed char>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<signed char>::has_denorm;
+  const bool numeric_limits<signed char>::has_denorm_loss;
+  const bool numeric_limits<signed char>::is_iec559;
+  const bool numeric_limits<signed char>::is_bounded;
+  const bool numeric_limits<signed char>::is_modulo;
+  const bool numeric_limits<signed char>::traps;
+  const bool numeric_limits<signed char>::tinyness_before;
+  const float_round_style numeric_limits<signed char>::round_style;
+
+  // unsigned char
+  const bool numeric_limits<unsigned char>::is_specialized;
+  const int  numeric_limits<unsigned char>::digits;
+  const int  numeric_limits<unsigned char>::digits10;
+  const int  numeric_limits<unsigned char>::max_digits10;
+  const bool numeric_limits<unsigned char>::is_signed;
+  const bool numeric_limits<unsigned char>::is_integer;
+  const bool numeric_limits<unsigned char>::is_exact;
+  const int  numeric_limits<unsigned char>::radix;
+  const int  numeric_limits<unsigned char>::min_exponent;
+  const int  numeric_limits<unsigned char>::min_exponent10;
+  const int  numeric_limits<unsigned char>::max_exponent;
+  const int  numeric_limits<unsigned char>::max_exponent10;
+  const bool numeric_limits<unsigned char>::has_infinity;
+  const bool numeric_limits<unsigned char>::has_quiet_NaN;
+  const bool numeric_limits<unsigned char>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<unsigned char>::has_denorm;
+  const bool numeric_limits<unsigned char>::has_denorm_loss;
+  const bool numeric_limits<unsigned char>::is_iec559;
+  const bool numeric_limits<unsigned char>::is_bounded;
+  const bool numeric_limits<unsigned char>::is_modulo;
+  const bool numeric_limits<unsigned char>::traps;
+  const bool numeric_limits<unsigned char>::tinyness_before;
+  const float_round_style numeric_limits<unsigned char>::round_style;
+
+  // wchar_t
+  // This used to be problematic...
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  const bool numeric_limits<wchar_t>::is_specialized;
+  const int  numeric_limits<wchar_t>::digits;
+  const int  numeric_limits<wchar_t>::digits10;
+  const int  numeric_limits<wchar_t>::max_digits10;
+  const bool numeric_limits<wchar_t>::is_signed;
+  const bool numeric_limits<wchar_t>::is_integer;
+  const bool numeric_limits<wchar_t>::is_exact;
+  const int  numeric_limits<wchar_t>::radix;
+  const int  numeric_limits<wchar_t>::min_exponent;
+  const int  numeric_limits<wchar_t>::min_exponent10;
+  const int  numeric_limits<wchar_t>::max_exponent;
+  const int  numeric_limits<wchar_t>::max_exponent10;
+  const bool numeric_limits<wchar_t>::has_infinity;
+  const bool numeric_limits<wchar_t>::has_quiet_NaN;
+  const bool numeric_limits<wchar_t>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<wchar_t>::has_denorm;
+  const bool numeric_limits<wchar_t>::has_denorm_loss;
+  const bool numeric_limits<wchar_t>::is_iec559;
+  const bool numeric_limits<wchar_t>::is_bounded;
+  const bool numeric_limits<wchar_t>::is_modulo;
+  const bool numeric_limits<wchar_t>::traps;
+  const bool numeric_limits<wchar_t>::tinyness_before;
+  const float_round_style numeric_limits<wchar_t>::round_style;
+#endif // _GLIBCXX_USE_WCHAR_T
+
+  // short
+  const bool numeric_limits<short>::is_specialized;
+  const int  numeric_limits<short>::digits;
+  const int  numeric_limits<short>::digits10;
+  const int  numeric_limits<short>::max_digits10;
+  const bool numeric_limits<short>::is_signed;
+  const bool numeric_limits<short>::is_integer;
+  const bool numeric_limits<short>::is_exact;
+  const int  numeric_limits<short>::radix;
+  const int  numeric_limits<short>::min_exponent;
+  const int  numeric_limits<short>::min_exponent10;
+  const int  numeric_limits<short>::max_exponent;
+  const int  numeric_limits<short>::max_exponent10;
+  const bool numeric_limits<short>::has_infinity;
+  const bool numeric_limits<short>::has_quiet_NaN;
+  const bool numeric_limits<short>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<short>::has_denorm;
+  const bool numeric_limits<short>::has_denorm_loss;
+  const bool numeric_limits<short>::is_iec559;
+  const bool numeric_limits<short>::is_bounded;
+  const bool numeric_limits<short>::is_modulo;
+  const bool numeric_limits<short>::traps;
+  const bool numeric_limits<short>::tinyness_before;
+  const float_round_style numeric_limits<short>::round_style;
+
+  // unsigned short
+  const bool numeric_limits<unsigned short>::is_specialized;
+  const int  numeric_limits<unsigned short>::digits;
+  const int  numeric_limits<unsigned short>::digits10;
+  const int  numeric_limits<unsigned short>::max_digits10;
+  const bool numeric_limits<unsigned short>::is_signed;
+  const bool numeric_limits<unsigned short>::is_integer;
+  const bool numeric_limits<unsigned short>::is_exact;
+  const int  numeric_limits<unsigned short>::radix;
+  const int  numeric_limits<unsigned short>::min_exponent;
+  const int  numeric_limits<unsigned short>::min_exponent10;
+  const int  numeric_limits<unsigned short>::max_exponent;
+  const int  numeric_limits<unsigned short>::max_exponent10;
+  const bool numeric_limits<unsigned short>::has_infinity;
+  const bool numeric_limits<unsigned short>::has_quiet_NaN;
+  const bool numeric_limits<unsigned short>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<unsigned short>::has_denorm;
+  const bool numeric_limits<unsigned short>::has_denorm_loss;
+  const bool numeric_limits<unsigned short>::is_iec559;
+  const bool numeric_limits<unsigned short>::is_bounded;
+  const bool numeric_limits<unsigned short>::is_modulo;
+  const bool numeric_limits<unsigned short>::traps;
+  const bool numeric_limits<unsigned short>::tinyness_before;
+  const float_round_style numeric_limits<unsigned short>::round_style;
+
+  // int
+  const bool numeric_limits<int>::is_specialized;
+  const int  numeric_limits<int>::digits;
+  const int  numeric_limits<int>::digits10;
+  const int  numeric_limits<int>::max_digits10;
+  const bool numeric_limits<int>::is_signed;
+  const bool numeric_limits<int>::is_integer;
+  const bool numeric_limits<int>::is_exact;
+  const int  numeric_limits<int>::radix;
+  const int  numeric_limits<int>::min_exponent;
+  const int  numeric_limits<int>::min_exponent10;
+  const int  numeric_limits<int>::max_exponent;
+  const int  numeric_limits<int>::max_exponent10;
+  const bool numeric_limits<int>::has_infinity;
+  const bool numeric_limits<int>::has_quiet_NaN;
+  const bool numeric_limits<int>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<int>::has_denorm;
+  const bool numeric_limits<int>::has_denorm_loss;
+  const bool numeric_limits<int>::is_iec559;
+  const bool numeric_limits<int>::is_bounded;
+  const bool numeric_limits<int>::is_modulo;
+  const bool numeric_limits<int>::traps;
+  const bool numeric_limits<int>::tinyness_before;
+  const float_round_style numeric_limits<int>::round_style;
+
+  // unsigned int
+  const bool numeric_limits<unsigned int>::is_specialized;
+  const int  numeric_limits<unsigned int>::digits;
+  const int  numeric_limits<unsigned int>::digits10;
+  const int  numeric_limits<unsigned int>::max_digits10;
+  const bool numeric_limits<unsigned int>::is_signed;
+  const bool numeric_limits<unsigned int>::is_integer;
+  const bool numeric_limits<unsigned int>::is_exact;
+  const int  numeric_limits<unsigned int>::radix;
+  const int  numeric_limits<unsigned int>::min_exponent;
+  const int  numeric_limits<unsigned int>::min_exponent10;
+  const int  numeric_limits<unsigned int>::max_exponent;
+  const int  numeric_limits<unsigned int>::max_exponent10;
+  const bool numeric_limits<unsigned int>::has_infinity;
+  const bool numeric_limits<unsigned int>::has_quiet_NaN;
+  const bool numeric_limits<unsigned int>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<unsigned int>::has_denorm;
+  const bool numeric_limits<unsigned int>::has_denorm_loss;
+  const bool numeric_limits<unsigned int>::is_iec559;
+  const bool numeric_limits<unsigned int>::is_bounded;
+  const bool numeric_limits<unsigned int>::is_modulo;
+  const bool numeric_limits<unsigned int>::traps;
+  const bool numeric_limits<unsigned int>::tinyness_before;
+  const float_round_style numeric_limits<unsigned int>::round_style;
+
+  // long
+  const bool numeric_limits<long>::is_specialized;
+  const int  numeric_limits<long>::digits;
+  const int  numeric_limits<long>::digits10;
+  const int  numeric_limits<long>::max_digits10;
+  const bool numeric_limits<long>::is_signed;
+  const bool numeric_limits<long>::is_integer;
+  const bool numeric_limits<long>::is_exact;
+  const int  numeric_limits<long>::radix;
+  const int  numeric_limits<long>::min_exponent;
+  const int  numeric_limits<long>::min_exponent10;
+  const int  numeric_limits<long>::max_exponent;
+  const int  numeric_limits<long>::max_exponent10;
+  const bool numeric_limits<long>::has_infinity;
+  const bool numeric_limits<long>::has_quiet_NaN;
+  const bool numeric_limits<long>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<long>::has_denorm;
+  const bool numeric_limits<long>::has_denorm_loss;
+  const bool numeric_limits<long>::is_iec559;
+  const bool numeric_limits<long>::is_bounded;
+  const bool numeric_limits<long>::is_modulo;
+  const bool numeric_limits<long>::traps;
+  const bool numeric_limits<long>::tinyness_before;
+  const float_round_style numeric_limits<long>::round_style;
+
+  // unsigned long
+  const bool numeric_limits<unsigned long>::is_specialized;
+  const int  numeric_limits<unsigned long>::digits;
+  const int  numeric_limits<unsigned long>::digits10;
+  const int  numeric_limits<unsigned long>::max_digits10;
+  const bool numeric_limits<unsigned long>::is_signed;
+  const bool numeric_limits<unsigned long>::is_integer;
+  const bool numeric_limits<unsigned long>::is_exact;
+  const int  numeric_limits<unsigned long>::radix;
+  const int  numeric_limits<unsigned long>::min_exponent;
+  const int  numeric_limits<unsigned long>::min_exponent10;
+  const int  numeric_limits<unsigned long>::max_exponent;
+  const int  numeric_limits<unsigned long>::max_exponent10;
+  const bool numeric_limits<unsigned long>::has_infinity;
+  const bool numeric_limits<unsigned long>::has_quiet_NaN;
+  const bool numeric_limits<unsigned long>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<unsigned long>::has_denorm;
+  const bool numeric_limits<unsigned long>::has_denorm_loss;
+  const bool numeric_limits<unsigned long>::is_iec559;
+  const bool numeric_limits<unsigned long>::is_bounded;
+  const bool numeric_limits<unsigned long>::is_modulo;
+  const bool numeric_limits<unsigned long>::traps;
+  const bool numeric_limits<unsigned long>::tinyness_before;
+  const float_round_style numeric_limits<unsigned long>::round_style;
+
+  // NOTA BENE:  long long is an extension
+  const bool numeric_limits<long long>::is_specialized;
+  const int  numeric_limits<long long>::digits;
+  const int  numeric_limits<long long>::digits10;
+  const int  numeric_limits<long long>::max_digits10;
+  const bool numeric_limits<long long>::is_signed;
+  const bool numeric_limits<long long>::is_integer;
+  const bool numeric_limits<long long>::is_exact;
+  const int  numeric_limits<long long>::radix;
+  const int  numeric_limits<long long>::min_exponent;
+  const int  numeric_limits<long long>::min_exponent10;
+  const int  numeric_limits<long long>::max_exponent;
+  const int  numeric_limits<long long>::max_exponent10;
+  const bool numeric_limits<long long>::has_infinity;
+  const bool numeric_limits<long long>::has_quiet_NaN;
+  const bool numeric_limits<long long>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<long long>::has_denorm;
+  const bool numeric_limits<long long>::has_denorm_loss;
+  const bool numeric_limits<long long>::is_iec559;
+  const bool numeric_limits<long long>::is_bounded;
+  const bool numeric_limits<long long>::is_modulo;
+  const bool numeric_limits<long long>::traps;
+  const bool numeric_limits<long long>::tinyness_before;
+  const float_round_style numeric_limits<long long>::round_style;
+
+  const bool numeric_limits<unsigned long long>::is_specialized;
+  const int  numeric_limits<unsigned long long>::digits;
+  const int  numeric_limits<unsigned long long>::digits10;
+  const int  numeric_limits<unsigned long long>::max_digits10;
+  const bool numeric_limits<unsigned long long>::is_signed;
+  const bool numeric_limits<unsigned long long>::is_integer;
+  const bool numeric_limits<unsigned long long>::is_exact;
+  const int  numeric_limits<unsigned long long>::radix;
+  const int  numeric_limits<unsigned long long>::min_exponent;
+  const int  numeric_limits<unsigned long long>::min_exponent10;
+  const int  numeric_limits<unsigned long long>::max_exponent;
+  const int  numeric_limits<unsigned long long>::max_exponent10;
+  const bool numeric_limits<unsigned long long>::has_infinity;
+  const bool numeric_limits<unsigned long long>::has_quiet_NaN;
+  const bool numeric_limits<unsigned long long>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<unsigned long long>::has_denorm;
+  const bool numeric_limits<unsigned long long>::has_denorm_loss;
+  const bool numeric_limits<unsigned long long>::is_iec559;
+  const bool numeric_limits<unsigned long long>::is_bounded;
+  const bool numeric_limits<unsigned long long>::is_modulo;
+  const bool numeric_limits<unsigned long long>::traps;
+  const bool numeric_limits<unsigned long long>::tinyness_before;
+  const float_round_style numeric_limits<unsigned long long>::round_style;
+
+  // float
+  const bool numeric_limits<float>::is_specialized;
+  const int  numeric_limits<float>::digits;
+  const int  numeric_limits<float>::digits10;
+  const int  numeric_limits<float>::max_digits10;
+  const bool numeric_limits<float>::is_signed;
+  const bool numeric_limits<float>::is_integer;
+  const bool numeric_limits<float>::is_exact;
+  const int  numeric_limits<float>::radix;
+  const int  numeric_limits<float>::min_exponent;
+  const int  numeric_limits<float>::min_exponent10;
+  const int  numeric_limits<float>::max_exponent;
+  const int  numeric_limits<float>::max_exponent10;
+  const bool numeric_limits<float>::has_infinity;
+  const bool numeric_limits<float>::has_quiet_NaN;
+  const bool numeric_limits<float>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<float>::has_denorm;
+  const bool numeric_limits<float>::has_denorm_loss;
+  const bool numeric_limits<float>::is_iec559;
+  const bool numeric_limits<float>::is_bounded;
+  const bool numeric_limits<float>::is_modulo;
+  const bool numeric_limits<float>::traps;
+  const bool numeric_limits<float>::tinyness_before;
+  const float_round_style numeric_limits<float>::round_style;
+
+  // double
+  const bool numeric_limits<double>::is_specialized;
+  const int  numeric_limits<double>::digits;
+  const int  numeric_limits<double>::digits10;
+  const int  numeric_limits<double>::max_digits10;
+  const bool numeric_limits<double>::is_signed;
+  const bool numeric_limits<double>::is_integer;
+  const bool numeric_limits<double>::is_exact;
+  const int  numeric_limits<double>::radix;
+  const int  numeric_limits<double>::min_exponent;
+  const int  numeric_limits<double>::min_exponent10;
+  const int  numeric_limits<double>::max_exponent;
+  const int  numeric_limits<double>::max_exponent10;
+  const bool numeric_limits<double>::has_infinity;
+  const bool numeric_limits<double>::has_quiet_NaN;
+  const bool numeric_limits<double>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<double>::has_denorm;
+  const bool numeric_limits<double>::has_denorm_loss;
+  const bool numeric_limits<double>::is_iec559;
+  const bool numeric_limits<double>::is_bounded;
+  const bool numeric_limits<double>::is_modulo;
+  const bool numeric_limits<double>::traps;
+  const bool numeric_limits<double>::tinyness_before;
+  const float_round_style numeric_limits<double>::round_style;
+
+  // long double
+  const bool numeric_limits<long double>::is_specialized;
+  const int  numeric_limits<long double>::digits;
+  const int  numeric_limits<long double>::digits10;
+  const int  numeric_limits<long double>::max_digits10;
+  const bool numeric_limits<long double>::is_signed;
+  const bool numeric_limits<long double>::is_integer;
+  const bool numeric_limits<long double>::is_exact;
+  const int  numeric_limits<long double>::radix;
+  const int  numeric_limits<long double>::min_exponent;
+  const int  numeric_limits<long double>::min_exponent10;
+  const int  numeric_limits<long double>::max_exponent;
+  const int  numeric_limits<long double>::max_exponent10;
+  const bool numeric_limits<long double>::has_infinity;
+  const bool numeric_limits<long double>::has_quiet_NaN;
+  const bool numeric_limits<long double>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<long double>::has_denorm;
+  const bool numeric_limits<long double>::has_denorm_loss;
+  const bool numeric_limits<long double>::is_iec559;
+  const bool numeric_limits<long double>::is_bounded;
+  const bool numeric_limits<long double>::is_modulo;
+  const bool numeric_limits<long double>::traps;
+  const bool numeric_limits<long double>::tinyness_before;
+  const float_round_style numeric_limits<long double>::round_style;
+
+  // char16_t
+  const bool numeric_limits<char16_t>::is_specialized;
+  const int  numeric_limits<char16_t>::digits;
+  const int  numeric_limits<char16_t>::digits10;
+  const int  numeric_limits<char16_t>::max_digits10;
+  const bool numeric_limits<char16_t>::is_signed;
+  const bool numeric_limits<char16_t>::is_integer;
+  const bool numeric_limits<char16_t>::is_exact;
+  const int  numeric_limits<char16_t>::radix;
+  const int  numeric_limits<char16_t>::min_exponent;
+  const int  numeric_limits<char16_t>::min_exponent10;
+  const int  numeric_limits<char16_t>::max_exponent;
+  const int  numeric_limits<char16_t>::max_exponent10;
+  const bool numeric_limits<char16_t>::has_infinity;
+  const bool numeric_limits<char16_t>::has_quiet_NaN;
+  const bool numeric_limits<char16_t>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<char16_t>::has_denorm;
+  const bool numeric_limits<char16_t>::has_denorm_loss;
+  const bool numeric_limits<char16_t>::is_iec559;
+  const bool numeric_limits<char16_t>::is_bounded;
+  const bool numeric_limits<char16_t>::is_modulo;
+  const bool numeric_limits<char16_t>::traps;
+  const bool numeric_limits<char16_t>::tinyness_before;
+  const float_round_style numeric_limits<char16_t>::round_style;
+
+  // char32_t
+  const bool numeric_limits<char32_t>::is_specialized;
+  const int  numeric_limits<char32_t>::digits;
+  const int  numeric_limits<char32_t>::digits10;
+  const int  numeric_limits<char32_t>::max_digits10;
+  const bool numeric_limits<char32_t>::is_signed;
+  const bool numeric_limits<char32_t>::is_integer;
+  const bool numeric_limits<char32_t>::is_exact;
+  const int  numeric_limits<char32_t>::radix;
+  const int  numeric_limits<char32_t>::min_exponent;
+  const int  numeric_limits<char32_t>::min_exponent10;
+  const int  numeric_limits<char32_t>::max_exponent;
+  const int  numeric_limits<char32_t>::max_exponent10;
+  const bool numeric_limits<char32_t>::has_infinity;
+  const bool numeric_limits<char32_t>::has_quiet_NaN;
+  const bool numeric_limits<char32_t>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<char32_t>::has_denorm;
+  const bool numeric_limits<char32_t>::has_denorm_loss;
+  const bool numeric_limits<char32_t>::is_iec559;
+  const bool numeric_limits<char32_t>::is_bounded;
+  const bool numeric_limits<char32_t>::is_modulo;
+  const bool numeric_limits<char32_t>::traps;
+  const bool numeric_limits<char32_t>::tinyness_before;
+  const float_round_style numeric_limits<char32_t>::round_style;
+
+#undef const
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \
+  extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \
+  __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E")))
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14);
+_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6);
+_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8);
+_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5);
+_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12);
+_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14);
+_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12);
+_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14);
+_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12);
+_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13);
+_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17);
+_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10);
+_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10);
+_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9);
+_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5);
+_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15);
+_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/list.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/list.cc
new file mode 100644
index 000000000..92b007f58
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/list.cc
@@ -0,0 +1,144 @@
+// std::list utilities implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2005, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+#include <list>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace __detail
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+    void
+    _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw()
+    {
+      if ( __x._M_next != &__x )
+	{
+	  if ( __y._M_next != &__y )
+	    {
+	      // Both __x and __y are not empty.
+	      std::swap(__x._M_next,__y._M_next);
+	      std::swap(__x._M_prev,__y._M_prev);
+	      __x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	      __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	    }
+	  else
+	    {
+	      // __x is not empty, __y is empty.
+	      __y._M_next = __x._M_next;
+	      __y._M_prev = __x._M_prev;
+	      __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	      __x._M_next = __x._M_prev = &__x;
+	    }
+	}
+      else if ( __y._M_next != &__y )
+	{
+	  // __x is empty, __y is not empty.
+	  __x._M_next = __y._M_next;
+	  __x._M_prev = __y._M_prev;
+	  __x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	  __y._M_next = __y._M_prev = &__y;
+	}
+    }
+
+    void
+    _List_node_base::_M_transfer(_List_node_base * const __first,
+				 _List_node_base * const __last) throw()
+    {
+      if (this != __last)
+	{
+	  // Remove [first, last) from its old position.
+	  __last->_M_prev->_M_next  = this;
+	  __first->_M_prev->_M_next = __last;
+	  this->_M_prev->_M_next    = __first;
+
+	  // Splice [first, last) into its new position.
+	  _List_node_base* const __tmp = this->_M_prev;
+	  this->_M_prev                = __last->_M_prev;
+	  __last->_M_prev              = __first->_M_prev;
+	  __first->_M_prev             = __tmp;
+	}
+    }
+
+    void
+    _List_node_base::_M_reverse() throw()
+    {
+      _List_node_base* __tmp = this;
+      do
+	{
+	  std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+	  // Old next node is now prev.
+	  __tmp = __tmp->_M_prev;
+	}
+      while (__tmp != this);
+    }
+
+    void
+    _List_node_base::_M_hook(_List_node_base* const __position) throw()
+    {
+      this->_M_next = __position;
+      this->_M_prev = __position->_M_prev;
+      __position->_M_prev->_M_next = this;
+      __position->_M_prev = this;
+    }
+
+    void
+    _List_node_base::_M_unhook() throw()
+    {
+      _List_node_base* const __next_node = this->_M_next;
+      _List_node_base* const __prev_node = this->_M_prev;
+      __prev_node->_M_next = __next_node;
+      __next_node->_M_prev = __prev_node;
+    }
+
+  _GLIBCXX_END_NAMESPACE_VERSION
+  } // namespace __detail
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale-inst.cc
new file mode 100644
index 000000000..e77c5c95d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale-inst.cc
@@ -0,0 +1,364 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#include <locale>
+
+// Instantiation configuration.
+#ifndef C
+# define C char
+# define C_is_char
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // moneypunct, money_get, and money_put
+  template class moneypunct<C, false>;
+  template class moneypunct<C, true>;
+  template struct __moneypunct_cache<C, false>;
+  template struct __moneypunct_cache<C, true>;
+  template class moneypunct_byname<C, false>;
+  template class moneypunct_byname<C, true>;
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+  template class money_get<C, istreambuf_iterator<C> >;
+  template class money_put<C, ostreambuf_iterator<C> >;
+  template
+    istreambuf_iterator<C>
+    money_get<C, istreambuf_iterator<C> >::
+    _M_extract<true>(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		     ios_base&, ios_base::iostate&, string&) const;
+
+  template
+    istreambuf_iterator<C>
+    money_get<C, istreambuf_iterator<C> >::
+    _M_extract<false>(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		      ios_base&, ios_base::iostate&, string&) const;
+
+  template
+    ostreambuf_iterator<C>
+    money_put<C, ostreambuf_iterator<C> >::
+    _M_insert<true>(ostreambuf_iterator<C>, ios_base&, C, 
+		    const string_type&) const;
+
+  template
+    ostreambuf_iterator<C>
+    money_put<C, ostreambuf_iterator<C> >::
+    _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C, 
+		     const string_type&) const;
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  // numpunct, numpunct_byname, num_get, and num_put
+  template class numpunct<C>;
+  template struct __numpunct_cache<C>;
+  template class numpunct_byname<C>;
+_GLIBCXX_BEGIN_NAMESPACE_LDBL
+  template class num_get<C, istreambuf_iterator<C> >;
+  template class num_put<C, ostreambuf_iterator<C> >; 
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&,
+		   long&) const;
+
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&, 
+		   unsigned short&) const;
+
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&,
+		   unsigned int&) const;
+
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&,
+		   unsigned long&) const;
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&,
+		   long long&) const;
+
+  template
+    istreambuf_iterator<C>
+    num_get<C, istreambuf_iterator<C> >::
+    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
+		   ios_base&, ios_base::iostate&,
+		   unsigned long long&) const;
+#endif
+
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
+		  long) const;
+
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
+		  unsigned long) const;
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
+		  long long) const;
+
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
+		  unsigned long long) const;
+#endif
+
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char, 
+		    double) const;
+
+  template
+    ostreambuf_iterator<C>
+    num_put<C, ostreambuf_iterator<C> >::
+    _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char, 
+		    long double) const;
+_GLIBCXX_END_NAMESPACE_LDBL
+
+  // time_get and time_put
+  template class __timepunct<C>;
+  template struct __timepunct_cache<C>;
+  template class time_put<C, ostreambuf_iterator<C> >;
+  template class time_put_byname<C, ostreambuf_iterator<C> >;
+  template class time_get<C, istreambuf_iterator<C> >;
+  template class time_get_byname<C, istreambuf_iterator<C> >;
+
+  // messages
+  template class messages<C>;
+  template class messages_byname<C>;
+  
+  // ctype
+  inline template class __ctype_abstract_base<C>;
+  template class ctype_byname<C>;
+  
+  // codecvt
+  inline template class __codecvt_abstract_base<C, char, mbstate_t>;
+  template class codecvt_byname<C, char, mbstate_t>;
+
+  // collate
+  template class collate<C>;
+  template class collate_byname<C>;
+    
+  // use_facet
+  template
+    const ctype<C>& 
+    use_facet<ctype<C> >(const locale&);
+
+  template
+    const codecvt<C, char, mbstate_t>& 
+    use_facet<codecvt<C, char, mbstate_t> >(const locale&);
+
+  template
+    const collate<C>& 
+    use_facet<collate<C> >(const locale&);
+
+  template
+    const numpunct<C>& 
+    use_facet<numpunct<C> >(const locale&);
+
+  template 
+    const num_put<C>& 
+    use_facet<num_put<C> >(const locale&);
+
+  template 
+    const num_get<C>& 
+    use_facet<num_get<C> >(const locale&);
+
+  template
+    const moneypunct<C, true>& 
+    use_facet<moneypunct<C, true> >(const locale&);
+
+  template
+    const moneypunct<C, false>& 
+    use_facet<moneypunct<C, false> >(const locale&);
+
+  template 
+    const money_put<C>& 
+    use_facet<money_put<C> >(const locale&);
+
+  template 
+    const money_get<C>& 
+    use_facet<money_get<C> >(const locale&);
+
+  template
+    const __timepunct<C>& 
+    use_facet<__timepunct<C> >(const locale&);
+
+  template 
+    const time_put<C>& 
+    use_facet<time_put<C> >(const locale&);
+
+  template 
+    const time_get<C>& 
+    use_facet<time_get<C> >(const locale&);
+
+  template 
+    const messages<C>& 
+    use_facet<messages<C> >(const locale&);
+
+  // has_facet
+  template 
+    bool
+    has_facet<ctype<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<codecvt<C, char, mbstate_t> >(const locale&);
+
+  template 
+    bool
+    has_facet<collate<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<numpunct<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<num_put<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<num_get<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<moneypunct<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<money_put<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<money_get<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<__timepunct<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<time_put<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<time_get<C> >(const locale&);
+
+  template 
+    bool
+    has_facet<messages<C> >(const locale&);
+
+
+  // locale functions.
+  template
+    C*
+    __add_grouping<C>(C*, C, char const*, size_t, 
+			 C const*, C const*);
+
+  template class __pad<C, char_traits<C> >;
+
+  template
+    int
+    __int_to_char(C*, unsigned long, const C*,
+		  ios_base::fmtflags, bool);
+
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template
+    int
+    __int_to_char(C*, unsigned long long, const C*, 
+		  ios_base::fmtflags, bool);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char
+
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
+
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_,
+		     _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
+		     _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
+		     _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs,
+		     _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs,
+		     _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale.cc
new file mode 100644
index 000000000..09dccf0d7
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale.cc
@@ -0,0 +1,444 @@
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <clocale>
+#include <cstring>
+#include <cstdlib>     // For getenv
+#include <cctype>
+#include <cwctype>     // For towupper, etc.
+#include <locale>
+#include <ext/concurrence.h>
+
+namespace
+{
+  __gnu_cxx::__mutex&
+  get_locale_cache_mutex()
+  {
+    static __gnu_cxx::__mutex locale_cache_mutex;
+    return locale_cache_mutex;
+  }
+} // anonymous namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+# define _GLIBCXX_LOC_ID(mangled) extern std::locale::id mangled
+_GLIBCXX_LOC_ID (_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+# ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LOC_ID (_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+_GLIBCXX_LOC_ID (_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+# endif
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for static const data members of locale.
+  const locale::category 	locale::none;
+  const locale::category 	locale::ctype;
+  const locale::category 	locale::numeric;
+  const locale::category 	locale::collate;
+  const locale::category 	locale::time;
+  const locale::category 	locale::monetary;
+  const locale::category 	locale::messages;
+  const locale::category 	locale::all;
+
+  // These are no longer exported.
+  locale::_Impl*                locale::_S_classic;
+  locale::_Impl* 		locale::_S_global; 
+
+#ifdef __GTHREADS
+  __gthread_once_t 		locale::_S_once = __GTHREAD_ONCE_INIT;
+#endif
+
+  locale::locale(const locale& __other) throw()
+  : _M_impl(__other._M_impl)
+  { _M_impl->_M_add_reference(); }
+
+  // This is used to initialize global and classic locales, and
+  // assumes that the _Impl objects are constructed correctly.
+  // The lack of a reference increment is intentional.
+  locale::locale(_Impl* __ip) throw() : _M_impl(__ip)
+  { }
+
+  locale::~locale() throw()
+  { _M_impl->_M_remove_reference(); }
+
+  bool
+  locale::operator==(const locale& __rhs) const throw()
+  {
+    // Deal first with the common cases, fast to process: refcopies,
+    // unnamed (i.e., !_M_names[0]), "simple" (!_M_names[1] => all the
+    // categories same name, i.e., _M_names[0]). Otherwise fall back
+    // to the general locale::name().
+    bool __ret;
+    if (_M_impl == __rhs._M_impl)
+      __ret = true;
+    else if (!_M_impl->_M_names[0] || !__rhs._M_impl->_M_names[0]
+	     || std::strcmp(_M_impl->_M_names[0],
+			    __rhs._M_impl->_M_names[0]) != 0)
+      __ret = false;
+    else if (!_M_impl->_M_names[1] && !__rhs._M_impl->_M_names[1])
+      __ret = true;
+    else
+      __ret = this->name() == __rhs.name();
+    return __ret;
+  }
+
+  const locale&
+  locale::operator=(const locale& __other) throw()
+  {
+    __other._M_impl->_M_add_reference();
+    _M_impl->_M_remove_reference();
+    _M_impl = __other._M_impl;
+    return *this;
+  }
+
+  string
+  locale::name() const
+  {
+    string __ret;
+    if (!_M_impl->_M_names[0])
+      __ret = '*';
+    else if (_M_impl->_M_check_same_name())
+      __ret = _M_impl->_M_names[0];
+    else
+      {
+	__ret.reserve(128);
+	__ret += _S_categories[0];
+	__ret += '=';
+	__ret += _M_impl->_M_names[0]; 
+	for (size_t __i = 1; __i < _S_categories_size; ++__i)
+	  {
+	    __ret += ';';
+	    __ret += _S_categories[__i];
+	    __ret += '=';
+	    __ret += _M_impl->_M_names[__i];
+	  }
+      }
+    return __ret;
+  }
+
+  locale::category
+  locale::_S_normalize_category(category __cat) 
+  {
+    int __ret = 0;
+    if (__cat == none || ((__cat & all) && !(__cat & ~all)))
+      __ret = __cat;
+    else
+      {
+	// NB: May be a C-style "LC_ALL" category; convert.
+	switch (__cat)
+	  {
+	  case LC_COLLATE:  
+	    __ret = collate; 
+	    break;
+	  case LC_CTYPE:    
+	    __ret = ctype;
+	    break;
+	  case LC_MONETARY: 
+	    __ret = monetary;
+	    break;
+	  case LC_NUMERIC:  
+	    __ret = numeric;
+	    break;
+	  case LC_TIME:     
+	    __ret = time; 
+	    break;
+#ifdef _GLIBCXX_HAVE_LC_MESSAGES
+	  case LC_MESSAGES: 
+	    __ret = messages;
+	    break;
+#endif	
+	  case LC_ALL:      
+	    __ret = all;
+	    break;
+	  default:
+	    __throw_runtime_error(__N("locale::_S_normalize_category "
+				  "category not found"));
+	  }
+      }
+    return __ret;
+  }
+
+  // locale::facet
+  __c_locale locale::facet::_S_c_locale;
+
+  const char locale::facet::_S_c_name[2] = "C";
+
+#ifdef __GTHREADS
+  __gthread_once_t locale::facet::_S_once = __GTHREAD_ONCE_INIT;
+#endif
+
+  void
+  locale::facet::_S_initialize_once()
+  {
+    // Initialize the underlying locale model.
+    _S_create_c_locale(_S_c_locale, _S_c_name);
+  }
+
+  __c_locale
+  locale::facet::_S_get_c_locale()
+  {
+#ifdef __GHTREADS
+    if (__gthread_active_p())
+      __gthread_once(&_S_once, _S_initialize_once);
+    else
+#endif
+      {
+	if (!_S_c_locale)
+	  _S_initialize_once();
+      }
+    return _S_c_locale;
+  }
+
+  const char*
+  locale::facet::_S_get_c_name() throw()
+  { return _S_c_name; }
+
+  locale::facet::
+  ~facet() { }
+
+  // locale::_Impl
+  locale::_Impl::
+  ~_Impl() throw()
+  {
+    if (_M_facets)
+      for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	if (_M_facets[__i])
+	  _M_facets[__i]->_M_remove_reference();
+    delete [] _M_facets;
+
+    if (_M_caches)
+      for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	if (_M_caches[__i])
+	  _M_caches[__i]->_M_remove_reference(); 
+    delete [] _M_caches;
+
+    if (_M_names)
+      for (size_t __i = 0; __i < _S_categories_size; ++__i)
+	delete [] _M_names[__i];  
+    delete [] _M_names;
+  }
+
+  // Clone existing _Impl object.
+  locale::_Impl::
+  _Impl(const _Impl& __imp, size_t __refs)
+  : _M_refcount(__refs), _M_facets(0), _M_facets_size(__imp._M_facets_size),
+  _M_caches(0), _M_names(0)
+  {
+    __try
+      {
+	_M_facets = new const facet*[_M_facets_size];
+	for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	  {
+	    _M_facets[__i] = __imp._M_facets[__i];
+	    if (_M_facets[__i])
+	      _M_facets[__i]->_M_add_reference();
+	  }
+	_M_caches = new const facet*[_M_facets_size];
+	for (size_t __j = 0; __j < _M_facets_size; ++__j)
+	  {
+	    _M_caches[__j] = __imp._M_caches[__j];
+	    if (_M_caches[__j])
+	      _M_caches[__j]->_M_add_reference(); 	
+	  }
+	_M_names = new char*[_S_categories_size];
+	for (size_t __k = 0; __k < _S_categories_size; ++__k)
+	  _M_names[__k] = 0;
+
+	// Name the categories.
+	for (size_t __l = 0; (__l < _S_categories_size
+			      && __imp._M_names[__l]); ++__l)
+	  {
+	    const size_t __len = std::strlen(__imp._M_names[__l]) + 1;
+	    _M_names[__l] = new char[__len];
+	    std::memcpy(_M_names[__l], __imp._M_names[__l], __len);
+	  }
+      }
+    __catch(...)
+      {
+	this->~_Impl();
+	__throw_exception_again;
+      }
+  }
+
+  void
+  locale::_Impl::
+  _M_replace_category(const _Impl* __imp, 
+		      const locale::id* const* __idpp)
+  {
+    for (; *__idpp; ++__idpp)
+      _M_replace_facet(__imp, *__idpp);
+  }
+  
+  void
+  locale::_Impl::
+  _M_replace_facet(const _Impl* __imp, const locale::id* __idp)
+  {
+    size_t __index = __idp->_M_id();
+    if ((__index > (__imp->_M_facets_size - 1)) 
+	|| !__imp->_M_facets[__index])
+      __throw_runtime_error(__N("locale::_Impl::_M_replace_facet"));
+    _M_install_facet(__idp, __imp->_M_facets[__index]); 
+  }
+
+  void
+  locale::_Impl::
+  _M_install_facet(const locale::id* __idp, const facet* __fp)
+  {
+    if (__fp)
+      {
+	size_t __index = __idp->_M_id();
+
+	// Check size of facet vector to ensure adequate room.
+	if (__index > _M_facets_size - 1)
+	  {
+	    const size_t __new_size = __index + 4;
+
+	    // New facet array.
+	    const facet** __oldf = _M_facets;
+	    const facet** __newf;
+	    __newf = new const facet*[__new_size]; 
+	    for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	      __newf[__i] = _M_facets[__i];
+	    for (size_t __l = _M_facets_size; __l < __new_size; ++__l)
+	      __newf[__l] = 0;
+
+	    // New cache array.
+	    const facet** __oldc = _M_caches;
+	    const facet** __newc;
+	    __try
+	      {
+		__newc = new const facet*[__new_size];
+	      }
+	    __catch(...)
+	      {
+		delete [] __newf;
+		__throw_exception_again;
+	      }
+	    for (size_t __j = 0; __j < _M_facets_size; ++__j)
+	      __newc[__j] = _M_caches[__j];
+	    for (size_t __k = _M_facets_size; __k < __new_size; ++__k)
+	      __newc[__k] = 0;
+
+	    _M_facets_size = __new_size;
+	    _M_facets = __newf;
+	    _M_caches = __newc;
+	    delete [] __oldf;
+	    delete [] __oldc;
+	  }
+
+	__fp->_M_add_reference();
+	const facet*& __fpr = _M_facets[__index];
+	if (__fpr)
+	  {
+	    // Replacing an existing facet. Order matters.
+	    __fpr->_M_remove_reference();
+	    __fpr = __fp;
+	  }
+	else
+	  {
+	    // Installing a newly created facet into an empty
+	    // _M_facets container, say a newly-constructed,
+	    // swanky-fresh _Impl.
+	    _M_facets[__index] = __fp;
+	  }
+
+	// Ideally, it would be nice to only remove the caches that
+	// are now incorrect. However, some of the caches depend on
+	// multiple facets, and we only know about one facet
+	// here. It's no great loss: the first use of the new facet
+	// will create a new, correctly cached facet anyway.
+	for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	  {
+	    const facet* __cpr = _M_caches[__i];
+	    if (__cpr)
+	      {
+		__cpr->_M_remove_reference();
+		_M_caches[__i] = 0;
+	      }
+	  }
+      }
+  }
+
+  void
+  locale::_Impl::
+  _M_install_cache(const facet* __cache, size_t __index)
+  {
+    __gnu_cxx::__scoped_lock sentry(get_locale_cache_mutex());
+    if (_M_caches[__index] != 0)
+      {
+	// Some other thread got in first.
+	delete __cache;
+      }
+    else
+      {
+	__cache->_M_add_reference();
+	_M_caches[__index] = __cache;
+      }
+  }
+
+  // locale::id
+  // Definitions for static const data members of locale::id
+  _Atomic_word locale::id::_S_refcount;  // init'd to 0 by linker
+
+  size_t
+  locale::id::_M_id() const throw()
+  {
+    if (!_M_index)
+      {
+	// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+	locale::id *f = 0;
+# define _GLIBCXX_SYNC_ID(facet, mangled) \
+	if (this == &::mangled)				\
+	  f = &facet::id
+	_GLIBCXX_SYNC_ID (num_get<char>, _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+	_GLIBCXX_SYNC_ID (num_put<char>, _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+	_GLIBCXX_SYNC_ID (money_get<char>, _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+	_GLIBCXX_SYNC_ID (money_put<char>, _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
+# ifdef _GLIBCXX_USE_WCHAR_T
+	_GLIBCXX_SYNC_ID (num_get<wchar_t>, _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+	_GLIBCXX_SYNC_ID (num_put<wchar_t>, _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+	_GLIBCXX_SYNC_ID (money_get<wchar_t>, _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+	_GLIBCXX_SYNC_ID (money_put<wchar_t>, _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
+# endif
+	if (f)
+	  _M_index = 1 + f->_M_id();
+	else
+#endif
+	  _M_index = 1 + __gnu_cxx::__exchange_and_add_dispatch(&_S_refcount,
+								1);
+      }
+    return _M_index - 1;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_facets.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_facets.cc
new file mode 100644
index 000000000..92552227f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_facets.cc
@@ -0,0 +1,118 @@
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for static const data members of time_base.
+  template<> 
+    const char*
+    __timepunct_cache<char>::_S_timezones[14] =
+    { 
+      "GMT", "HST", "AKST", "PST", "MST", "CST", "EST", "AST", "NST", "CET", 
+      "IST", "EET", "CST", "JST"  
+    };
+ 
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<> 
+    const wchar_t*
+    __timepunct_cache<wchar_t>::_S_timezones[14] =
+    { 
+      L"GMT", L"HST", L"AKST", L"PST", L"MST", L"CST", L"EST", L"AST", 
+      L"NST", L"CET", L"IST", L"EET", L"CST", L"JST"  
+    };
+#endif
+
+  // Definitions for static const data members of money_base.
+  const money_base::pattern 
+  money_base::_S_default_pattern =  { {symbol, sign, none, value} };
+
+  const char* money_base::_S_atoms = "-0123456789";
+
+  const char* __num_base::_S_atoms_in = "-+xX0123456789abcdefABCDEF";
+  const char* __num_base::_S_atoms_out ="-+xX0123456789abcdef0123456789ABCDEF";
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // According to the resolution of DR 231, about 22.2.2.2.2, p11,
+  // "str.precision() is specified in the conversion specification".
+  void
+  __num_base::_S_format_float(const ios_base& __io, char* __fptr, 
+			      char __mod) throw()
+  {
+    ios_base::fmtflags __flags = __io.flags();
+    *__fptr++ = '%';
+    // [22.2.2.2.2] Table 60
+    if (__flags & ios_base::showpos)
+      *__fptr++ = '+';
+    if (__flags & ios_base::showpoint)
+      *__fptr++ = '#';
+
+    // As per DR 231: _always_, not only when 
+    // __flags & ios_base::fixed || __prec > 0
+    *__fptr++ = '.';
+    *__fptr++ = '*';
+
+    if (__mod)
+      *__fptr++ = __mod;
+    ios_base::fmtflags __fltfield = __flags & ios_base::floatfield;
+    // [22.2.2.2.2] Table 58
+    if (__fltfield == ios_base::fixed)
+      *__fptr++ = 'f';
+    else if (__fltfield == ios_base::scientific)
+      *__fptr++ = (__flags & ios_base::uppercase) ? 'E' : 'e';
+    else
+      *__fptr++ = (__flags & ios_base::uppercase) ? 'G' : 'g';
+    *__fptr = '\0';
+  }
+
+  bool
+  __verify_grouping(const char* __grouping, size_t __grouping_size,
+		    const string& __grouping_tmp) throw()
+  {
+    const size_t __n = __grouping_tmp.size() - 1;
+    const size_t __min = std::min(__n, size_t(__grouping_size - 1));
+    size_t __i = __n;
+    bool __test = true;
+    
+    // Parsed number groupings have to match the
+    // numpunct::grouping string exactly, starting at the
+    // right-most point of the parsed sequence of elements ...
+    for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
+      __test = __grouping_tmp[__i] == __grouping[__j];
+    for (; __i && __test; --__i)
+      __test = __grouping_tmp[__i] == __grouping[__min];
+    // ... but the first parsed grouping can be <= numpunct
+    // grouping (only do the check if the numpunct char is > 0
+    // because <= 0 means any size is ok).
+    if (static_cast<signed char>(__grouping[__min]) > 0
+	&& __grouping[__min] != __gnu_cxx::__numeric_traits<char>::__max)
+      __test &= __grouping_tmp[0] <= __grouping[__min];
+    return __test;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_init.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_init.cc
new file mode 100644
index 000000000..98c228cf1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/locale_init.cc
@@ -0,0 +1,474 @@
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 
+// 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <clocale>
+#include <cstring>
+#include <cstdlib>     // For getenv, free.
+#include <cctype>
+#include <cwctype>     // For towupper, etc.
+#include <locale>
+#include <ext/concurrence.h>
+
+namespace 
+{
+  __gnu_cxx::__mutex&
+  get_locale_mutex()
+  {
+    static __gnu_cxx::__mutex locale_mutex;
+    return locale_mutex;
+  }
+
+  using namespace std;
+
+  typedef char fake_locale_Impl[sizeof(locale::_Impl)]
+  __attribute__ ((aligned(__alignof__(locale::_Impl))));
+  fake_locale_Impl c_locale_impl;
+
+  typedef char fake_locale[sizeof(locale)]
+  __attribute__ ((aligned(__alignof__(locale))));
+  fake_locale c_locale;
+
+  typedef char fake_name_vec[sizeof(char*)]
+  __attribute__ ((aligned(__alignof__(char*))));
+  fake_name_vec name_vec[6 + _GLIBCXX_NUM_CATEGORIES];
+
+  typedef char fake_names[sizeof(char[2])]
+  __attribute__ ((aligned(__alignof__(char[2]))));
+  fake_names name_c[6 + _GLIBCXX_NUM_CATEGORIES];
+
+  typedef char fake_facet_vec[sizeof(locale::facet*)]
+  __attribute__ ((aligned(__alignof__(locale::facet*))));
+  fake_facet_vec facet_vec[_GLIBCXX_NUM_FACETS];
+
+  typedef char fake_cache_vec[sizeof(locale::facet*)]
+  __attribute__ ((aligned(__alignof__(locale::facet*))));
+  fake_cache_vec cache_vec[_GLIBCXX_NUM_FACETS];
+
+  typedef char fake_ctype_c[sizeof(std::ctype<char>)]
+  __attribute__ ((aligned(__alignof__(std::ctype<char>))));
+  fake_ctype_c ctype_c;
+
+  typedef char fake_collate_c[sizeof(std::collate<char>)]
+  __attribute__ ((aligned(__alignof__(std::collate<char>))));
+  fake_collate_c collate_c;
+
+  typedef char fake_numpunct_c[sizeof(numpunct<char>)]
+  __attribute__ ((aligned(__alignof__(numpunct<char>))));
+  fake_numpunct_c numpunct_c;
+
+  typedef char fake_num_get_c[sizeof(num_get<char>)]
+  __attribute__ ((aligned(__alignof__(num_get<char>))));
+  fake_num_get_c num_get_c;
+
+  typedef char fake_num_put_c[sizeof(num_put<char>)]
+  __attribute__ ((aligned(__alignof__(num_put<char>))));
+  fake_num_put_c num_put_c;
+
+  typedef char fake_codecvt_c[sizeof(codecvt<char, char, mbstate_t>)]
+  __attribute__ ((aligned(__alignof__(codecvt<char, char, mbstate_t>))));
+  fake_codecvt_c codecvt_c;
+
+  typedef char fake_moneypunct_c[sizeof(moneypunct<char, true>)]
+  __attribute__ ((aligned(__alignof__(moneypunct<char, true>))));
+  fake_moneypunct_c moneypunct_ct;
+  fake_moneypunct_c moneypunct_cf;
+
+  typedef char fake_money_get_c[sizeof(money_get<char>)]
+  __attribute__ ((aligned(__alignof__(money_get<char>))));
+  fake_money_get_c money_get_c;
+  
+  typedef char fake_money_put_c[sizeof(money_put<char>)]
+  __attribute__ ((aligned(__alignof__(money_put<char>))));
+  fake_money_put_c money_put_c;
+
+  typedef char fake_timepunct_c[sizeof(__timepunct<char>)]
+  __attribute__ ((aligned(__alignof__(__timepunct<char>))));
+  fake_timepunct_c timepunct_c;
+
+  typedef char fake_time_get_c[sizeof(time_get<char>)]
+  __attribute__ ((aligned(__alignof__(time_get<char>))));
+  fake_time_get_c time_get_c;
+
+  typedef char fake_time_put_c[sizeof(time_put<char>)]
+  __attribute__ ((aligned(__alignof__(time_put<char>))));
+  fake_time_put_c time_put_c;
+
+  typedef char fake_messages_c[sizeof(messages<char>)]
+  __attribute__ ((aligned(__alignof__(messages<char>))));
+  fake_messages_c messages_c;
+
+#ifdef  _GLIBCXX_USE_WCHAR_T
+  typedef char fake_wtype_w[sizeof(std::ctype<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(std::ctype<wchar_t>))));
+  fake_wtype_w ctype_w;
+
+  typedef char fake_wollate_w[sizeof(std::collate<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(std::collate<wchar_t>))));
+  fake_wollate_w collate_w;
+
+  typedef char fake_numpunct_w[sizeof(numpunct<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(numpunct<wchar_t>))));
+  fake_numpunct_w numpunct_w;
+
+  typedef char fake_num_get_w[sizeof(num_get<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(num_get<wchar_t>))));
+  fake_num_get_w num_get_w;
+
+  typedef char fake_num_put_w[sizeof(num_put<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(num_put<wchar_t>))));
+  fake_num_put_w num_put_w;
+
+  typedef char fake_wodecvt_w[sizeof(codecvt<wchar_t, char, mbstate_t>)]
+  __attribute__ ((aligned(__alignof__(codecvt<wchar_t, char, mbstate_t>))));
+  fake_wodecvt_w codecvt_w;
+
+  typedef char fake_moneypunct_w[sizeof(moneypunct<wchar_t, true>)]
+  __attribute__ ((aligned(__alignof__(moneypunct<wchar_t, true>))));
+  fake_moneypunct_w moneypunct_wt;
+  fake_moneypunct_w moneypunct_wf;
+
+  typedef char fake_money_get_w[sizeof(money_get<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(money_get<wchar_t>))));
+  fake_money_get_w money_get_w;
+  
+  typedef char fake_money_put_w[sizeof(money_put<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(money_put<wchar_t>))));
+  fake_money_put_w money_put_w;
+
+  typedef char fake_timepunct_w[sizeof(__timepunct<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(__timepunct<wchar_t>))));
+  fake_timepunct_w timepunct_w;
+
+  typedef char fake_time_get_w[sizeof(time_get<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(time_get<wchar_t>))));
+  fake_time_get_w time_get_w;
+
+  typedef char fake_time_put_w[sizeof(time_put<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(time_put<wchar_t>))));
+  fake_time_put_w time_put_w;
+
+  typedef char fake_messages_w[sizeof(messages<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(messages<wchar_t>))));
+  fake_messages_w messages_w;
+#endif
+
+  // Storage for "C" locale caches.
+  typedef char fake_num_cache_c[sizeof(std::__numpunct_cache<char>)]
+  __attribute__ ((aligned(__alignof__(std::__numpunct_cache<char>))));
+  fake_num_cache_c numpunct_cache_c;
+
+  typedef char fake_money_cache_c[sizeof(std::__moneypunct_cache<char, true>)]
+  __attribute__ ((aligned(__alignof__(std::__moneypunct_cache<char, true>))));
+  fake_money_cache_c moneypunct_cache_ct;
+  fake_money_cache_c moneypunct_cache_cf;
+
+  typedef char fake_time_cache_c[sizeof(std::__timepunct_cache<char>)]
+  __attribute__ ((aligned(__alignof__(std::__timepunct_cache<char>))));
+  fake_time_cache_c timepunct_cache_c;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  typedef char fake_num_cache_w[sizeof(std::__numpunct_cache<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(std::__numpunct_cache<wchar_t>))));
+  fake_num_cache_w numpunct_cache_w;
+
+  typedef char fake_money_cache_w[sizeof(std::__moneypunct_cache<wchar_t,true>)]
+  __attribute__ ((aligned(__alignof__(std::__moneypunct_cache<wchar_t,true>))));
+  fake_money_cache_w moneypunct_cache_wt;
+  fake_money_cache_w moneypunct_cache_wf;
+
+  typedef char fake_time_cache_w[sizeof(std::__timepunct_cache<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(std::__timepunct_cache<wchar_t>))));
+  fake_time_cache_w timepunct_cache_w;
+#endif
+} // anonymous namespace
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  locale::locale() throw() : _M_impl(0)
+  { 
+    _S_initialize();
+
+    // Checked locking to optimize the common case where _S_global
+    // still points to _S_classic (locale::_S_initialize_once()):
+    // - If they are the same, just increment the reference count and
+    //   we are done.  This effectively constructs a C locale object
+    //   identical to the static c_locale.
+    // - Otherwise, _S_global can and may be destroyed due to
+    //   locale::global() call on another thread, in which case we
+    //   fall back to lock protected access to both _S_global and
+    //   its reference count.
+    _M_impl = _S_global;
+    if (_M_impl == _S_classic)
+      _M_impl->_M_add_reference();
+    else
+      {
+        __gnu_cxx::__scoped_lock sentry(get_locale_mutex());
+        _S_global->_M_add_reference();
+        _M_impl = _S_global;
+      }
+  }
+
+  locale
+  locale::global(const locale& __other)
+  {
+    _S_initialize();
+    _Impl* __old;
+    {
+      __gnu_cxx::__scoped_lock sentry(get_locale_mutex());
+      __old = _S_global;
+      __other._M_impl->_M_add_reference();
+      _S_global = __other._M_impl;
+      const string __other_name = __other.name();
+      if (__other_name != "*")
+	setlocale(LC_ALL, __other_name.c_str());
+    }
+
+    // Reference count sanity check: one reference removed for the
+    // subsition of __other locale, one added by return-by-value. Net
+    // difference: zero. When the returned locale object's destrutor
+    // is called, then the reference count is decremented and possibly
+    // destroyed.
+    return locale(__old);
+  }
+
+  const locale&
+  locale::classic()
+  { 
+    _S_initialize();
+    return *(new (&c_locale) locale(_S_classic));
+  }
+
+  void
+  locale::_S_initialize_once() throw()
+  {
+    // 2 references.
+    // One reference for _S_classic, one for _S_global
+    _S_classic = new (&c_locale_impl) _Impl(2);
+    _S_global = _S_classic; 	    
+  }
+
+  void  
+  locale::_S_initialize()
+  {
+#ifdef __GTHREADS
+    if (__gthread_active_p())
+      __gthread_once(&_S_once, _S_initialize_once);
+#endif
+    if (!_S_classic)
+      _S_initialize_once();
+  }
+
+  // Definitions for static const data members of locale::_Impl
+  const locale::id* const
+  locale::_Impl::_S_id_ctype[] =
+  {
+    &std::ctype<char>::id, 
+    &codecvt<char, char, mbstate_t>::id,
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &std::ctype<wchar_t>::id,
+    &codecvt<wchar_t, char, mbstate_t>::id,
+#endif
+    0
+  };
+
+  const locale::id* const
+  locale::_Impl::_S_id_numeric[] =
+  {
+    &num_get<char>::id,  
+    &num_put<char>::id,  
+    &numpunct<char>::id, 
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &num_get<wchar_t>::id,
+    &num_put<wchar_t>::id,
+    &numpunct<wchar_t>::id,
+#endif
+    0
+  };
+  
+  const locale::id* const
+  locale::_Impl::_S_id_collate[] =
+  {
+    &std::collate<char>::id,
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &std::collate<wchar_t>::id,
+#endif
+    0
+  };
+
+  const locale::id* const
+  locale::_Impl::_S_id_time[] =
+  {
+    &__timepunct<char>::id, 
+    &time_get<char>::id, 
+    &time_put<char>::id, 
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &__timepunct<wchar_t>::id, 
+    &time_get<wchar_t>::id,
+    &time_put<wchar_t>::id,
+#endif
+    0
+  };
+  
+  const locale::id* const
+  locale::_Impl::_S_id_monetary[] =
+  {
+    &money_get<char>::id,        
+    &money_put<char>::id,        
+    &moneypunct<char, false>::id, 
+    &moneypunct<char, true >::id, 
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &money_get<wchar_t>::id,
+    &money_put<wchar_t>::id,
+    &moneypunct<wchar_t, false>::id,
+    &moneypunct<wchar_t, true >::id,
+#endif
+    0
+  };
+
+  const locale::id* const
+  locale::_Impl::_S_id_messages[] =
+  {
+    &std::messages<char>::id, 
+#ifdef _GLIBCXX_USE_WCHAR_T
+    &std::messages<wchar_t>::id,
+#endif
+    0
+  };
+  
+  const locale::id* const* const
+  locale::_Impl::_S_facet_categories[] =
+  {
+    // Order must match the decl order in class locale.
+    locale::_Impl::_S_id_ctype,
+    locale::_Impl::_S_id_numeric,
+    locale::_Impl::_S_id_collate,
+    locale::_Impl::_S_id_time,
+    locale::_Impl::_S_id_monetary,
+    locale::_Impl::_S_id_messages,
+    0
+  };
+
+  // Construct "C" _Impl.
+  locale::_Impl::
+  _Impl(size_t __refs) throw() 
+  : _M_refcount(__refs), _M_facets(0), _M_facets_size(_GLIBCXX_NUM_FACETS),
+  _M_caches(0), _M_names(0)    
+  {
+    _M_facets = new (&facet_vec) const facet*[_M_facets_size];
+    _M_caches = new (&cache_vec) const facet*[_M_facets_size];
+    for (size_t __i = 0; __i < _M_facets_size; ++__i)
+      _M_facets[__i] = _M_caches[__i] = 0;
+
+    // Name the categories.
+    _M_names = new (&name_vec) char*[_S_categories_size];
+    _M_names[0] = new (&name_c[0]) char[2];
+    std::memcpy(_M_names[0], locale::facet::_S_get_c_name(), 2);
+    for (size_t __j = 1; __j < _S_categories_size; ++__j)
+      _M_names[__j] = 0;
+
+    // This is needed as presently the C++ version of "C" locales
+    // != data in the underlying locale model for __timepunct,
+    // numpunct, and moneypunct. Also, the "C" locales must be
+    // constructed in a way such that they are pre-allocated.
+    // NB: Set locale::facets(ref) count to one so that each individual
+    // facet is not destroyed when the locale (and thus locale::_Impl) is
+    // destroyed.
+    _M_init_facet(new (&ctype_c) std::ctype<char>(0, false, 1));
+    _M_init_facet(new (&codecvt_c) codecvt<char, char, mbstate_t>(1));
+
+    typedef __numpunct_cache<char> num_cache_c;
+    num_cache_c* __npc = new (&numpunct_cache_c) num_cache_c(2);
+    _M_init_facet(new (&numpunct_c) numpunct<char>(__npc, 1));
+
+    _M_init_facet(new (&num_get_c) num_get<char>(1));
+    _M_init_facet(new (&num_put_c) num_put<char>(1));
+    _M_init_facet(new (&collate_c) std::collate<char>(1));
+
+    typedef __moneypunct_cache<char, false> money_cache_cf;
+    typedef __moneypunct_cache<char, true> money_cache_ct;
+    money_cache_cf* __mpcf = new (&moneypunct_cache_cf) money_cache_cf(2);
+    _M_init_facet(new (&moneypunct_cf) moneypunct<char, false>(__mpcf, 1));
+    money_cache_ct* __mpct = new (&moneypunct_cache_ct) money_cache_ct(2);
+    _M_init_facet(new (&moneypunct_ct) moneypunct<char, true>(__mpct, 1));
+
+    _M_init_facet(new (&money_get_c) money_get<char>(1));
+    _M_init_facet(new (&money_put_c) money_put<char>(1));
+
+    typedef __timepunct_cache<char> time_cache_c;
+    time_cache_c* __tpc = new (&timepunct_cache_c) time_cache_c(2);
+    _M_init_facet(new (&timepunct_c) __timepunct<char>(__tpc, 1));
+
+    _M_init_facet(new (&time_get_c) time_get<char>(1));
+    _M_init_facet(new (&time_put_c) time_put<char>(1));
+    _M_init_facet(new (&messages_c) std::messages<char>(1));	
+
+#ifdef  _GLIBCXX_USE_WCHAR_T
+    _M_init_facet(new (&ctype_w) std::ctype<wchar_t>(1));
+    _M_init_facet(new (&codecvt_w) codecvt<wchar_t, char, mbstate_t>(1));
+
+    typedef __numpunct_cache<wchar_t> num_cache_w;
+    num_cache_w* __npw = new (&numpunct_cache_w) num_cache_w(2);
+    _M_init_facet(new (&numpunct_w) numpunct<wchar_t>(__npw, 1));
+
+    _M_init_facet(new (&num_get_w) num_get<wchar_t>(1));
+    _M_init_facet(new (&num_put_w) num_put<wchar_t>(1));
+    _M_init_facet(new (&collate_w) std::collate<wchar_t>(1));
+
+    typedef __moneypunct_cache<wchar_t, false> money_cache_wf;
+    typedef __moneypunct_cache<wchar_t, true> money_cache_wt;
+    money_cache_wf* __mpwf = new (&moneypunct_cache_wf) money_cache_wf(2);
+    _M_init_facet(new (&moneypunct_wf) moneypunct<wchar_t, false>(__mpwf, 1));
+    money_cache_wt* __mpwt = new (&moneypunct_cache_wt) money_cache_wt(2);
+    _M_init_facet(new (&moneypunct_wt) moneypunct<wchar_t, true>(__mpwt, 1));
+
+    _M_init_facet(new (&money_get_w) money_get<wchar_t>(1));
+    _M_init_facet(new (&money_put_w) money_put<wchar_t>(1));
+
+    typedef __timepunct_cache<wchar_t> time_cache_w;
+    time_cache_w* __tpw = new (&timepunct_cache_w) time_cache_w(2);
+    _M_init_facet(new (&timepunct_w) __timepunct<wchar_t>(__tpw, 1));
+
+    _M_init_facet(new (&time_get_w) time_get<wchar_t>(1));
+    _M_init_facet(new (&time_put_w) time_put<wchar_t>(1));
+    _M_init_facet(new (&messages_w) std::messages<wchar_t>(1));
+#endif 
+     
+    // This locale is safe to pre-cache, after all the facets have
+    // been created and installed.
+    _M_caches[numpunct<char>::id._M_id()] = __npc;
+    _M_caches[moneypunct<char, false>::id._M_id()] = __mpcf;
+    _M_caches[moneypunct<char, true>::id._M_id()] = __mpct;
+    _M_caches[__timepunct<char>::id._M_id()] = __tpc;
+#ifdef  _GLIBCXX_USE_WCHAR_T
+    _M_caches[numpunct<wchar_t>::id._M_id()] = __npw;
+    _M_caches[moneypunct<wchar_t, false>::id._M_id()] = __mpwf;
+    _M_caches[moneypunct<wchar_t, true>::id._M_id()] = __mpwt;
+    _M_caches[__timepunct<wchar_t>::id._M_id()] = __tpw;
+#endif
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/localename.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/localename.cc
new file mode 100644
index 000000000..52e228281
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/localename.cc
@@ -0,0 +1,354 @@
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+// 2006, 2007, 2008, 2009, 2010
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <clocale>
+#include <cstring>
+#include <cstdlib>
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using namespace __gnu_cxx;
+
+  locale::locale(const char* __s) : _M_impl(0)
+  {
+    if (__s)
+      {
+	_S_initialize(); 
+	if (std::strcmp(__s, "C") == 0 || std::strcmp(__s, "POSIX") == 0)
+	  (_M_impl = _S_classic)->_M_add_reference();
+	else if (std::strcmp(__s, "") != 0)
+	  _M_impl = new _Impl(__s, 1);
+	else
+	  {
+	    // Get it from the environment.
+	    char* __env = std::getenv("LC_ALL");
+	    // If LC_ALL is set we are done.
+	    if (__env && std::strcmp(__env, "") != 0)
+	      {
+		if (std::strcmp(__env, "C") == 0 
+		    || std::strcmp(__env, "POSIX") == 0)
+		  (_M_impl = _S_classic)->_M_add_reference();
+		else
+		  _M_impl = new _Impl(__env, 1);
+	      }
+	    else
+	      {
+		// LANG may set a default different from "C".
+		string __lang;
+		__env = std::getenv("LANG");
+		if (!__env || std::strcmp(__env, "") == 0 
+		    || std::strcmp(__env, "C") == 0 
+		    || std::strcmp(__env, "POSIX") == 0)
+		  __lang = "C";
+		else 
+		  __lang = __env;
+		
+		// Scan the categories looking for the first one
+		// different from LANG.
+		size_t __i = 0;
+		if (__lang == "C")
+		  for (; __i < _S_categories_size; ++__i)
+		    {
+		      __env = std::getenv(_S_categories[__i]);
+		      if (__env && std::strcmp(__env, "") != 0 
+			  && std::strcmp(__env, "C") != 0 
+			  && std::strcmp(__env, "POSIX") != 0)
+			break;
+		    }
+		else
+		  for (; __i < _S_categories_size; ++__i)
+		    {
+		      __env = std::getenv(_S_categories[__i]);
+		      if (__env && std::strcmp(__env, "") != 0
+			  && __lang != __env)
+			break;
+		    }
+	
+		// If one is found, build the complete string of
+		// the form LC_CTYPE=xxx;LC_NUMERIC=yyy; and so on...
+		if (__i < _S_categories_size)
+		  {
+		    string __str;
+		    __str.reserve(128);
+		    for (size_t __j = 0; __j < __i; ++__j)
+		      {
+			__str += _S_categories[__j];
+			__str += '=';
+			__str += __lang;
+			__str += ';';
+		      }
+		    __str += _S_categories[__i];
+		    __str += '=';
+		    __str += __env;
+		    __str += ';';
+		    ++__i;
+		    for (; __i < _S_categories_size; ++__i)
+		      {
+			__env = std::getenv(_S_categories[__i]);
+			__str += _S_categories[__i];
+			if (!__env || std::strcmp(__env, "") == 0)
+			  {
+			    __str += '=';
+			    __str += __lang;
+			    __str += ';';
+			  }
+			else if (std::strcmp(__env, "C") == 0
+				 || std::strcmp(__env, "POSIX") == 0)
+			  __str += "=C;";
+			else
+			  {
+			    __str += '=';
+			    __str += __env;
+			    __str += ';';
+			  }
+		      }
+		    __str.erase(__str.end() - 1);
+		    _M_impl = new _Impl(__str.c_str(), 1);
+		  }
+		// ... otherwise either an additional instance of
+		// the "C" locale or LANG.
+		else if (__lang == "C")
+		  (_M_impl = _S_classic)->_M_add_reference();
+		else
+		  _M_impl = new _Impl(__lang.c_str(), 1);
+	      }
+	  }
+      }
+    else
+      __throw_runtime_error(__N("locale::locale null not valid"));
+  }
+
+  locale::locale(const locale& __base, const char* __s, category __cat)
+  : _M_impl(0)
+  { 
+    // NB: There are complicated, yet more efficient ways to do
+    // this. Building up locales on a per-category way is tedious, so
+    // let's do it this way until people complain.
+    locale __add(__s);
+    _M_coalesce(__base, __add, __cat);
+  }
+
+  locale::locale(const locale& __base, const locale& __add, category __cat)
+  : _M_impl(0)
+  { _M_coalesce(__base, __add, __cat); }
+
+  void
+  locale::_M_coalesce(const locale& __base, const locale& __add, 
+		      category __cat)
+  {
+    __cat = _S_normalize_category(__cat);  
+    _M_impl = new _Impl(*__base._M_impl, 1);  
+
+    __try 
+      { _M_impl->_M_replace_categories(__add._M_impl, __cat); }
+    __catch(...) 
+      { 
+	_M_impl->_M_remove_reference(); 
+	__throw_exception_again;
+      }
+  }
+
+  // Construct named _Impl.
+  locale::_Impl::
+  _Impl(const char* __s, size_t __refs)
+  : _M_refcount(__refs), _M_facets(0), _M_facets_size(_GLIBCXX_NUM_FACETS),
+    _M_caches(0), _M_names(0)
+  {
+    // Initialize the underlying locale model, which also checks to
+    // see if the given name is valid.
+    __c_locale __cloc;
+    locale::facet::_S_create_c_locale(__cloc, __s);
+    __c_locale __clocm = __cloc;
+
+    __try
+      {
+	_M_facets = new const facet*[_M_facets_size];
+	for (size_t __i = 0; __i < _M_facets_size; ++__i)
+	  _M_facets[__i] = 0;
+	_M_caches = new const facet*[_M_facets_size];
+	for (size_t __j = 0; __j < _M_facets_size; ++__j)
+	  _M_caches[__j] = 0;
+	_M_names = new char*[_S_categories_size];
+	for (size_t __k = 0; __k < _S_categories_size; ++__k)
+	  _M_names[__k] = 0;
+
+	// Name the categories.
+	const char* __smon = __s;
+	const size_t __len = std::strlen(__s);
+	if (!std::memchr(__s, ';', __len))
+	  {
+	    _M_names[0] = new char[__len + 1];
+	    std::memcpy(_M_names[0], __s, __len + 1);
+	  }
+	else
+	  {
+	    const char* __end = __s;
+	    bool __found_ctype = false;
+	    bool __found_monetary = false;
+	    size_t __ci = 0, __mi = 0;
+	    for (size_t __i = 0; __i < _S_categories_size; ++__i)
+	      {
+		const char* __beg = std::strchr(__end + 1, '=') + 1;
+		__end = std::strchr(__beg, ';');
+		if (!__end)
+		  __end = __s + __len;
+		_M_names[__i] = new char[__end - __beg + 1];
+		std::memcpy(_M_names[__i], __beg, __end - __beg);
+		_M_names[__i][__end - __beg] = '\0';
+		if (!__found_ctype
+		    && *(__beg - 2) == 'E' && *(__beg - 3) == 'P')
+		  {
+		    __found_ctype = true;
+		    __ci = __i;
+		  }
+		else if (!__found_monetary && *(__beg - 2) == 'Y')
+		  {
+		    __found_monetary = true;
+		    __mi = __i;
+		  }
+	      }
+
+	    if (std::strcmp(_M_names[__ci], _M_names[__mi]))
+	      {
+		__smon = _M_names[__mi];
+		__clocm = locale::facet::_S_lc_ctype_c_locale(__cloc,
+							      __smon);
+	      }
+	  }
+ 
+	// Construct all standard facets and add them to _M_facets.
+	_M_init_facet(new std::ctype<char>(__cloc, 0, false));
+	_M_init_facet(new codecvt<char, char, mbstate_t>(__cloc));
+	_M_init_facet(new numpunct<char>(__cloc));
+	_M_init_facet(new num_get<char>);
+	_M_init_facet(new num_put<char>);
+	_M_init_facet(new std::collate<char>(__cloc));
+	_M_init_facet(new moneypunct<char, false>(__cloc, 0));
+	_M_init_facet(new moneypunct<char, true>(__cloc, 0));
+	_M_init_facet(new money_get<char>);
+	_M_init_facet(new money_put<char>);
+	_M_init_facet(new __timepunct<char>(__cloc, __s));
+	_M_init_facet(new time_get<char>);
+	_M_init_facet(new time_put<char>);
+	_M_init_facet(new std::messages<char>(__cloc, __s));
+	
+#ifdef  _GLIBCXX_USE_WCHAR_T
+	_M_init_facet(new std::ctype<wchar_t>(__cloc));
+	_M_init_facet(new codecvt<wchar_t, char, mbstate_t>(__cloc));
+	_M_init_facet(new numpunct<wchar_t>(__cloc));
+	_M_init_facet(new num_get<wchar_t>);
+	_M_init_facet(new num_put<wchar_t>);
+	_M_init_facet(new std::collate<wchar_t>(__cloc));
+	_M_init_facet(new moneypunct<wchar_t, false>(__clocm, __smon));
+	_M_init_facet(new moneypunct<wchar_t, true>(__clocm, __smon));
+	_M_init_facet(new money_get<wchar_t>);
+	_M_init_facet(new money_put<wchar_t>);
+	_M_init_facet(new __timepunct<wchar_t>(__cloc, __s));
+	_M_init_facet(new time_get<wchar_t>);
+	_M_init_facet(new time_put<wchar_t>);
+	_M_init_facet(new std::messages<wchar_t>(__cloc, __s));
+#endif	  
+	locale::facet::_S_destroy_c_locale(__cloc);
+	if (__clocm != __cloc)
+	  locale::facet::_S_destroy_c_locale(__clocm);
+      }
+    __catch(...)
+      {
+	locale::facet::_S_destroy_c_locale(__cloc);
+	if (__clocm != __cloc)
+	  locale::facet::_S_destroy_c_locale(__clocm);
+	this->~_Impl();
+	__throw_exception_again;
+      }	
+  }
+
+  void
+  locale::_Impl::
+  _M_replace_categories(const _Impl* __imp, category __cat)
+  {
+    category __mask = 1;
+    if (!_M_names[0] || !__imp->_M_names[0])
+      {
+	if (_M_names[0])
+	  {
+	    delete [] _M_names[0];
+	    _M_names[0] = 0;   // Unnamed.
+	  }
+
+	for (size_t __ix = 0; __ix < _S_categories_size; ++__ix, __mask <<= 1)
+	  {
+	    if (__mask & __cat)
+	      // Need to replace entry in _M_facets with other locale's info.
+	      _M_replace_category(__imp, _S_facet_categories[__ix]);
+	  }
+      }
+    else
+      {
+	if (!_M_names[1])
+	  {
+	    // A full set of _M_names must be prepared, all identical
+	    // to _M_names[0] to begin with. Then, below, a few will
+	    // be replaced by the corresponding __imp->_M_names. I.e.,
+	    // not a "simple" locale anymore (see locale::operator==).
+	    const size_t __len = std::strlen(_M_names[0]) + 1;
+	    for (size_t __i = 1; __i < _S_categories_size; ++__i)
+	      {
+		_M_names[__i] = new char[__len];
+		std::memcpy(_M_names[__i], _M_names[0], __len);
+	      }
+	  }
+
+	for (size_t __ix = 0; __ix < _S_categories_size; ++__ix, __mask <<= 1)
+	  {
+	    if (__mask & __cat)
+	      {
+		// Need to replace entry in _M_facets with other locale's info.
+		_M_replace_category(__imp, _S_facet_categories[__ix]);
+
+		// FIXME: Hack for libstdc++/29217: the numerical encodings
+		// of the time and collate categories are swapped vs the
+		// order of the names in locale::_S_categories.  We'd like to
+		// adjust the former (the latter is dictated by compatibility
+		// with glibc) but we can't for binary compatibility.
+		size_t __ix_name = __ix;
+		if (__ix == 2 || __ix == 3)
+		  __ix_name = 5 - __ix;
+
+		char* __src = __imp->_M_names[__ix_name] ?
+		              __imp->_M_names[__ix_name] : __imp->_M_names[0];
+		const size_t __len = std::strlen(__src) + 1;
+		char* __new = new char[__len];
+		std::memcpy(__new, __src, __len);
+		delete [] _M_names[__ix_name];
+		_M_names[__ix_name] = __new;
+	      }
+	  }
+      }
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_float.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_float.cc
new file mode 100644
index 000000000..a226ce46f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_float.cc
@@ -0,0 +1,224 @@
+// Stub definitions for float math.
+
+// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cmath>
+
+// For targets which do not have support for float versions,
+// we use the following crude approximations. We keep saying that we'll do
+// better later, but never do.
+
+extern "C" 
+{
+#ifndef _GLIBCXX_HAVE_FABSF
+  float
+  fabsf(float x)
+  {
+    return (float) fabs(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ACOSF
+  float
+  acosf(float x)
+  {
+    return (float) acos(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ASINF
+  float
+  asinf(float x)
+  {
+    return (float) asin(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ATANF
+  float
+  atanf(float x)
+  {
+    return (float) atan(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ATAN2F
+  float
+  atan2f(float x, float y)
+  {
+    return (float) atan2(x, y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_CEILF
+  float
+  ceilf(float x)
+  {
+    return (float) ceil(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_COSF
+  float
+  cosf(float x)
+  {
+    return (float) cos(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_COSHF
+  float
+  coshf(float x)
+  {
+    return (float) cosh(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_EXPF
+  float
+  expf(float x)
+  {
+    return (float) exp(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FLOORF
+  float
+  floorf(float x)
+  {
+    return (float) floor(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FMODF
+  float
+  fmodf(float x, float y)
+  {
+    return (float) fmod(x, y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FREXPF
+  float
+  frexpf(float x, int *exp)
+  {
+    return (float) frexp(x, exp);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SQRTF
+  float
+  sqrtf(float x)
+  {
+    return (float) sqrt(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_HYPOTF
+  float
+  hypotf(float x, float y)
+  {
+    float s = fabsf(x) + fabsf(y);
+    if (s == 0.0F)
+      return s;
+    x /= s; y /= s;
+    return s * sqrtf(x * x + y * y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LDEXPF
+  float
+  ldexpf(float x, int exp)
+  {
+    return (float) ldexp(x, exp);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LOGF
+  float
+  logf(float x)
+  {
+    return (float) log(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LOG10F
+  float
+  log10f(float x)
+  {
+    return (float) log10(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_MODFF
+  float
+  modff(float x, float *iptr)
+  {
+    double result, temp;
+
+    result = modf(x, &temp);
+    *iptr = (float) temp;
+    return (float) result;
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_POWF
+  float
+  powf(float x, float y)
+  {
+    return (float) pow(x, y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SINF
+  float
+  sinf(float x)
+  {
+    return (float) sin(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SINHF
+  float
+  sinhf(float x)
+  {
+    return (float) sinh(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_TANF
+  float
+  tanf(float x)
+  {
+    return (float) tan(x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_TANHF
+  float
+  tanhf(float x)
+  {
+    return (float) tanh(x);
+  }
+#endif
+} // extern "C"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_long_double.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_long_double.cc
new file mode 100644
index 000000000..9f760cfb3
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/math_stubs_long_double.cc
@@ -0,0 +1,224 @@
+// Stub definitions for long double math.
+
+// Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <cmath>
+
+// For targets which do not have support for long double versions,
+// we use the following crude approximations. We keep saying that we'll do
+// better later, but never do.
+
+extern "C" 
+{
+#ifndef _GLIBCXX_HAVE_FABSL
+  long double
+  fabsl(long double x)
+  {
+    return fabs((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ACOSL
+  long double
+  acosl(long double x)
+  {
+    return acos((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ASINL
+  long double
+  asinl(long double x)
+  {
+    return asin((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ATANL
+  long double
+  atanl(long double x)
+  {
+    return atan ((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_ATAN2L
+  long double
+  atan2l(long double x, long double y)
+  {
+    return atan2((double) x, (double) y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_CEILL
+  long double
+  ceill(long double x)
+  {
+    return ceil((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_COSL
+  long double
+  cosl(long double x)
+  {
+    return cos((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_COSHL
+  long double
+  coshl(long double x)
+  {
+    return cosh((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_EXPL
+  long double
+  expl(long double x)
+  {
+    return exp((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FLOORL
+  long double
+  floorl(long double x)
+  {
+    return floor((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FMODL
+  long double
+  fmodl(long double x, long double y)
+  {
+    return fmod((double) x, (double) y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_FREXPL
+  long double
+  frexpl(long double x, int *exp)
+  {
+    return frexp((double) x, exp);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SQRTL
+  long double
+  sqrtl(long double x)
+  {
+    return  sqrt((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_HYPOTL
+  long double
+  hypotl(long double x, long double y)
+  {
+    long double s = fabsl(x) + fabsl(y);
+    if (s == 0.0L)
+      return s;
+    x /= s; y /= s;
+    return s * sqrtl(x * x + y * y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LDEXPL
+  long double
+  ldexpl(long double x, int exp)
+  {
+    return ldexp((double) x, exp);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LOGL
+  long double
+  logl(long double x)
+  {
+    return log((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_LOG10L
+  long double
+  log10l(long double x)
+  {
+    return log10((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_MODFL
+  long double
+  modfl(long double x, long double *iptr)
+  {
+    double result, temp;
+
+    result = modf((double) x, &temp);
+    *iptr = temp;
+    return result;
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_POWL
+  long double
+  powl(long double x, long double y)
+  {
+    return pow((double) x, (double) y);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SINL
+  long double
+  sinl(long double x)
+  {
+    return sin((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_SINHL
+  long double
+  sinhl(long double x)
+  {
+    return sinh((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_TANL
+  long double
+  tanl(long double x)
+  {
+    return tan((double) x);
+  }
+#endif
+
+#ifndef _GLIBCXX_HAVE_TANHL
+  long double
+  tanhl(long double x)
+  {
+    return tanh((double) x);
+  }
+#endif
+} // extern "C"
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/misc-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/misc-inst.cc
new file mode 100644
index 000000000..ad09c9b84
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/misc-inst.cc
@@ -0,0 +1,82 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <string>
+#include <istream>
+#include <ostream>
+#include <ext/stdio_sync_filebuf.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // string related to iostreams
+  template 
+    basic_istream<char>& 
+    operator>>(basic_istream<char>&, string&);
+  template 
+    basic_ostream<char>& 
+    operator<<(basic_ostream<char>&, const string&);
+  template 
+    basic_istream<char>& 
+    getline(basic_istream<char>&, string&, char);
+  template 
+    basic_istream<char>& 
+    getline(basic_istream<char>&, string&);
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template 
+    basic_istream<wchar_t>& 
+    operator>>(basic_istream<wchar_t>&, wstring&);
+  template 
+    basic_ostream<wchar_t>& 
+    operator<<(basic_ostream<wchar_t>&, const wstring&);
+  template 
+    basic_istream<wchar_t>& 
+    getline(basic_istream<wchar_t>&, wstring&, wchar_t);
+  template 
+    basic_istream<wchar_t>& 
+    getline(basic_istream<wchar_t>&, wstring&);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class stdio_sync_filebuf<char>;
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class stdio_sync_filebuf<wchar_t>;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mt_allocator.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mt_allocator.cc
new file mode 100644
index 000000000..16c2fb806
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mt_allocator.cc
@@ -0,0 +1,818 @@
+// Allocator details.
+
+// Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <bits/c++config.h>
+#include <ext/concurrence.h>
+#include <ext/mt_allocator.h>
+#include <cstring>
+
+namespace
+{
+#ifdef __GTHREADS
+  struct __freelist
+  {
+    typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
+    _Thread_record* 	_M_thread_freelist;
+    _Thread_record* 	_M_thread_freelist_array;
+    size_t 		_M_max_threads;
+    __gthread_key_t 	_M_key;
+
+    ~__freelist()
+    {
+      if (_M_thread_freelist_array)
+	{
+	  __gthread_key_delete(_M_key);
+	  ::operator delete(static_cast<void*>(_M_thread_freelist_array));
+	}
+    }
+  };
+
+  __freelist&
+  get_freelist()
+  {
+    static __freelist freelist;
+    return freelist;
+  }
+
+  __gnu_cxx::__mutex&
+  get_freelist_mutex()
+  {
+    static __gnu_cxx::__mutex freelist_mutex;
+    return freelist_mutex;
+  }
+
+  static void 
+  _M_destroy_thread_key(void* __id)
+  {
+    // Return this thread id record to the front of thread_freelist.
+    __freelist& freelist = get_freelist();
+    {
+      __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
+      size_t _M_id = reinterpret_cast<size_t>(__id);
+      
+      typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
+      _Thread_record* __tr = &freelist._M_thread_freelist_array[_M_id - 1];
+      __tr->_M_next = freelist._M_thread_freelist;
+      freelist._M_thread_freelist = __tr;
+    }
+  }
+#endif
+} // anonymous namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  void
+  __pool<false>::_M_destroy() throw()
+  {
+    if (_M_init && !_M_options._M_force_new)
+      {
+	for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	  {
+	    _Bin_record& __bin = _M_bin[__n];
+	    while (__bin._M_address)
+	      {
+		_Block_address* __tmp = __bin._M_address->_M_next;
+		::operator delete(__bin._M_address->_M_initial);
+		__bin._M_address = __tmp;
+	      }
+	    ::operator delete(__bin._M_first);
+	  }
+	::operator delete(_M_bin);
+	::operator delete(_M_binmap);
+      }
+  }
+
+  void
+  __pool<false>::_M_reclaim_block(char* __p, size_t __bytes) throw ()
+  {
+    // Round up to power of 2 and figure out which bin to use.
+    const size_t __which = _M_binmap[__bytes];
+    _Bin_record& __bin = _M_bin[__which];
+
+    char* __c = __p - _M_get_align();
+    _Block_record* __block = reinterpret_cast<_Block_record*>(__c);
+      
+    // Single threaded application - return to global pool.
+    __block->_M_next = __bin._M_first[0];
+    __bin._M_first[0] = __block;
+  }
+
+  char* 
+  __pool<false>::_M_reserve_block(size_t __bytes, const size_t __thread_id)
+  {
+    // Round up to power of 2 and figure out which bin to use.
+    const size_t __which = _M_binmap[__bytes];
+    _Bin_record& __bin = _M_bin[__which];
+    const _Tune& __options = _M_get_options();
+    const size_t __bin_size = (__options._M_min_bin << __which) 
+			       + __options._M_align;
+    size_t __block_count = __options._M_chunk_size - sizeof(_Block_address);
+    __block_count /= __bin_size;	  
+
+    // Get a new block dynamically, set it up for use.
+    void* __v = ::operator new(__options._M_chunk_size);
+    _Block_address* __address = static_cast<_Block_address*>(__v);
+    __address->_M_initial = __v;
+    __address->_M_next = __bin._M_address;
+    __bin._M_address = __address;
+
+    char* __c = static_cast<char*>(__v) + sizeof(_Block_address);
+    _Block_record* __block = reinterpret_cast<_Block_record*>(__c);
+    __bin._M_first[__thread_id] = __block;
+    while (--__block_count > 0)
+      {
+	__c += __bin_size;
+	__block->_M_next = reinterpret_cast<_Block_record*>(__c);
+	__block = __block->_M_next;
+      }
+    __block->_M_next = 0;
+
+    __block = __bin._M_first[__thread_id];
+    __bin._M_first[__thread_id] = __block->_M_next;
+
+    // NB: For alignment reasons, we can't use the first _M_align
+    // bytes, even when sizeof(_Block_record) < _M_align.
+    return reinterpret_cast<char*>(__block) + __options._M_align;
+  }
+
+  void
+  __pool<false>::_M_initialize()
+  {
+    // _M_force_new must not change after the first allocate(), which
+    // in turn calls this method, so if it's false, it's false forever
+    // and we don't need to return here ever again.
+    if (_M_options._M_force_new) 
+      {
+	_M_init = true;
+	return;
+      }
+      
+    // Create the bins.
+    // Calculate the number of bins required based on _M_max_bytes.
+    // _M_bin_size is statically-initialized to one.
+    size_t __bin_size = _M_options._M_min_bin;
+    while (_M_options._M_max_bytes > __bin_size)
+      {
+	__bin_size <<= 1;
+	++_M_bin_size;
+      }
+      
+    // Setup the bin map for quick lookup of the relevant bin.
+    const size_t __j = (_M_options._M_max_bytes + 1) * sizeof(_Binmap_type);
+    _M_binmap = static_cast<_Binmap_type*>(::operator new(__j));
+    _Binmap_type* __bp = _M_binmap;
+    _Binmap_type __bin_max = _M_options._M_min_bin;
+    _Binmap_type __bint = 0;
+    for (_Binmap_type __ct = 0; __ct <= _M_options._M_max_bytes; ++__ct)
+      {
+	if (__ct > __bin_max)
+	  {
+	    __bin_max <<= 1;
+	    ++__bint;
+	  }
+	*__bp++ = __bint;
+      }
+      
+    // Initialize _M_bin and its members.
+    void* __v = ::operator new(sizeof(_Bin_record) * _M_bin_size);
+    _M_bin = static_cast<_Bin_record*>(__v);
+    for (size_t __n = 0; __n < _M_bin_size; ++__n)
+      {
+	_Bin_record& __bin = _M_bin[__n];
+	__v = ::operator new(sizeof(_Block_record*));
+	__bin._M_first = static_cast<_Block_record**>(__v);
+	__bin._M_first[0] = 0;
+	__bin._M_address = 0;
+      }
+    _M_init = true;
+  }
+
+  
+#ifdef __GTHREADS
+  void
+  __pool<true>::_M_destroy() throw()
+  {
+    if (_M_init && !_M_options._M_force_new)
+      {
+	if (__gthread_active_p())
+	  {
+	    for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	      {
+		_Bin_record& __bin = _M_bin[__n];
+		while (__bin._M_address)
+		  {
+		    _Block_address* __tmp = __bin._M_address->_M_next;
+		    ::operator delete(__bin._M_address->_M_initial);
+		    __bin._M_address = __tmp;
+		  }
+		::operator delete(__bin._M_first);
+		::operator delete(__bin._M_free);
+		::operator delete(__bin._M_used);
+		::operator delete(__bin._M_mutex);
+	      }
+	  }
+	else
+	  {
+	    for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	      {
+		_Bin_record& __bin = _M_bin[__n];
+		while (__bin._M_address)
+		  {
+		    _Block_address* __tmp = __bin._M_address->_M_next;
+		    ::operator delete(__bin._M_address->_M_initial);
+		    __bin._M_address = __tmp;
+		  }
+		::operator delete(__bin._M_first);
+	      }
+	  }
+	::operator delete(_M_bin);
+	::operator delete(_M_binmap);
+      }
+  }
+
+  void
+  __pool<true>::_M_reclaim_block(char* __p, size_t __bytes) throw ()
+  {
+    // Round up to power of 2 and figure out which bin to use.
+    const size_t __which = _M_binmap[__bytes];
+    const _Bin_record& __bin = _M_bin[__which];
+
+    // Know __p not null, assume valid block.
+    char* __c = __p - _M_get_align();
+    _Block_record* __block = reinterpret_cast<_Block_record*>(__c);
+    if (__gthread_active_p())
+      {
+	// Calculate the number of records to remove from our freelist:
+	// in order to avoid too much contention we wait until the
+	// number of records is "high enough".
+	const size_t __thread_id = _M_get_thread_id();
+	const _Tune& __options = _M_get_options();	
+	const size_t __limit = (100 * (_M_bin_size - __which)
+				* __options._M_freelist_headroom);
+
+	size_t __remove = __bin._M_free[__thread_id];
+	__remove *= __options._M_freelist_headroom;
+
+	// NB: We assume that reads of _Atomic_words are atomic.
+	const size_t __max_threads = __options._M_max_threads + 1;
+	_Atomic_word* const __reclaimed_base =
+	  reinterpret_cast<_Atomic_word*>(__bin._M_used + __max_threads);
+	const _Atomic_word __reclaimed = __reclaimed_base[__thread_id];
+	const size_t __net_used = __bin._M_used[__thread_id] - __reclaimed;
+
+	// NB: For performance sake we don't resync every time, in order
+	// to spare atomic ops.  Note that if __reclaimed increased by,
+	// say, 1024, since the last sync, it means that the other
+	// threads executed the atomic in the else below at least the
+	// same number of times (at least, because _M_reserve_block may
+	// have decreased the counter), therefore one more cannot hurt.
+	if (__reclaimed > 1024)
+	  {
+	    __bin._M_used[__thread_id] -= __reclaimed;
+	    __atomic_add(&__reclaimed_base[__thread_id], -__reclaimed);
+	  }
+
+	if (__remove >= __net_used)
+	  __remove -= __net_used;
+	else
+	  __remove = 0;
+	if (__remove > __limit && __remove > __bin._M_free[__thread_id])
+	  {
+	    _Block_record* __first = __bin._M_first[__thread_id];
+	    _Block_record* __tmp = __first;
+	    __remove /= __options._M_freelist_headroom;
+	    const size_t __removed = __remove;
+	    while (--__remove > 0)
+	      __tmp = __tmp->_M_next;
+	    __bin._M_first[__thread_id] = __tmp->_M_next;
+	    __bin._M_free[__thread_id] -= __removed;
+	    
+	    __gthread_mutex_lock(__bin._M_mutex);
+	    __tmp->_M_next = __bin._M_first[0];
+	    __bin._M_first[0] = __first;
+	    __bin._M_free[0] += __removed;
+	    __gthread_mutex_unlock(__bin._M_mutex);
+	  }
+
+	// Return this block to our list and update counters and
+	// owner id as needed.
+	if (__block->_M_thread_id == __thread_id)
+	  --__bin._M_used[__thread_id];
+	else
+	  __atomic_add(&__reclaimed_base[__block->_M_thread_id], 1);
+
+	__block->_M_next = __bin._M_first[__thread_id];
+	__bin._M_first[__thread_id] = __block;
+	
+	++__bin._M_free[__thread_id];
+      }
+    else
+      {
+	// Not using threads, so single threaded application - return
+	// to global pool.
+	__block->_M_next = __bin._M_first[0];
+	__bin._M_first[0] = __block;
+      }
+  }
+
+  char* 
+  __pool<true>::_M_reserve_block(size_t __bytes, const size_t __thread_id)
+  {
+    // Round up to power of 2 and figure out which bin to use.
+    const size_t __which = _M_binmap[__bytes];
+    const _Tune& __options = _M_get_options();
+    const size_t __bin_size = ((__options._M_min_bin << __which)
+			       + __options._M_align);
+    size_t __block_count = __options._M_chunk_size - sizeof(_Block_address);
+    __block_count /= __bin_size;	  
+    
+    // Are we using threads?
+    // - Yes, check if there are free blocks on the global
+    //   list. If so, grab up to __block_count blocks in one
+    //   lock and change ownership. If the global list is 
+    //   empty, we allocate a new chunk and add those blocks 
+    //   directly to our own freelist (with us as owner).
+    // - No, all operations are made directly to global pool 0
+    //   no need to lock or change ownership but check for free
+    //   blocks on global list (and if not add new ones) and
+    //   get the first one.
+    _Bin_record& __bin = _M_bin[__which];
+    _Block_record* __block = 0;
+    if (__gthread_active_p())
+      {
+	// Resync the _M_used counters.
+	const size_t __max_threads = __options._M_max_threads + 1;
+	_Atomic_word* const __reclaimed_base =
+	  reinterpret_cast<_Atomic_word*>(__bin._M_used + __max_threads);
+	const _Atomic_word __reclaimed = __reclaimed_base[__thread_id];
+	__bin._M_used[__thread_id] -= __reclaimed;
+	__atomic_add(&__reclaimed_base[__thread_id], -__reclaimed);
+
+	__gthread_mutex_lock(__bin._M_mutex);
+	if (__bin._M_first[0] == 0)
+	  {
+	    void* __v = ::operator new(__options._M_chunk_size);
+	    _Block_address* __address = static_cast<_Block_address*>(__v);
+	    __address->_M_initial = __v;
+	    __address->_M_next = __bin._M_address;
+	    __bin._M_address = __address;
+	    __gthread_mutex_unlock(__bin._M_mutex);
+
+	    // No need to hold the lock when we are adding a whole
+	    // chunk to our own list.
+	    char* __c = static_cast<char*>(__v) + sizeof(_Block_address);
+	    __block = reinterpret_cast<_Block_record*>(__c);
+	    __bin._M_free[__thread_id] = __block_count;
+	    __bin._M_first[__thread_id] = __block;
+	    while (--__block_count > 0)
+	      {
+		__c += __bin_size;
+		__block->_M_next = reinterpret_cast<_Block_record*>(__c);
+		__block = __block->_M_next;
+	      }
+	    __block->_M_next = 0;
+	  }
+	else
+	  {
+	    // Is the number of required blocks greater than or equal
+	    // to the number that can be provided by the global free
+	    // list?
+	    __bin._M_first[__thread_id] = __bin._M_first[0];
+	    if (__block_count >= __bin._M_free[0])
+	      {
+		__bin._M_free[__thread_id] = __bin._M_free[0];
+		__bin._M_free[0] = 0;
+		__bin._M_first[0] = 0;
+	      }
+	    else
+	      {
+		__bin._M_free[__thread_id] = __block_count;
+		__bin._M_free[0] -= __block_count;
+		__block = __bin._M_first[0];
+		while (--__block_count > 0)
+		  __block = __block->_M_next;
+		__bin._M_first[0] = __block->_M_next;
+		__block->_M_next = 0;
+	      }
+	    __gthread_mutex_unlock(__bin._M_mutex);
+	  }
+      }
+    else
+      {
+	void* __v = ::operator new(__options._M_chunk_size);
+	_Block_address* __address = static_cast<_Block_address*>(__v);
+	__address->_M_initial = __v;
+	__address->_M_next = __bin._M_address;
+	__bin._M_address = __address;
+
+	char* __c = static_cast<char*>(__v) + sizeof(_Block_address);
+	__block = reinterpret_cast<_Block_record*>(__c);
+ 	__bin._M_first[0] = __block;
+	while (--__block_count > 0)
+	  {
+	    __c += __bin_size;
+	    __block->_M_next = reinterpret_cast<_Block_record*>(__c);
+	    __block = __block->_M_next;
+	  }
+	__block->_M_next = 0;
+      }
+      
+    __block = __bin._M_first[__thread_id];
+    __bin._M_first[__thread_id] = __block->_M_next;
+
+    if (__gthread_active_p())
+      {
+	__block->_M_thread_id = __thread_id;
+	--__bin._M_free[__thread_id];
+	++__bin._M_used[__thread_id];
+      }
+
+    // NB: For alignment reasons, we can't use the first _M_align
+    // bytes, even when sizeof(_Block_record) < _M_align.
+    return reinterpret_cast<char*>(__block) + __options._M_align;
+  }
+
+  void
+  __pool<true>::_M_initialize()
+  {
+    // _M_force_new must not change after the first allocate(),
+    // which in turn calls this method, so if it's false, it's false
+    // forever and we don't need to return here ever again.
+    if (_M_options._M_force_new) 
+      {
+	_M_init = true;
+	return;
+      }
+
+    // Create the bins.
+    // Calculate the number of bins required based on _M_max_bytes.
+    // _M_bin_size is statically-initialized to one.
+    size_t __bin_size = _M_options._M_min_bin;
+    while (_M_options._M_max_bytes > __bin_size)
+      {
+	__bin_size <<= 1;
+	++_M_bin_size;
+      }
+      
+    // Setup the bin map for quick lookup of the relevant bin.
+    const size_t __j = (_M_options._M_max_bytes + 1) * sizeof(_Binmap_type);
+    _M_binmap = static_cast<_Binmap_type*>(::operator new(__j));
+    _Binmap_type* __bp = _M_binmap;
+    _Binmap_type __bin_max = _M_options._M_min_bin;
+    _Binmap_type __bint = 0;
+    for (_Binmap_type __ct = 0; __ct <= _M_options._M_max_bytes; ++__ct)
+      {
+	if (__ct > __bin_max)
+	  {
+	    __bin_max <<= 1;
+	    ++__bint;
+	  }
+	*__bp++ = __bint;
+      }
+      
+    // Initialize _M_bin and its members.
+    void* __v = ::operator new(sizeof(_Bin_record) * _M_bin_size);
+    _M_bin = static_cast<_Bin_record*>(__v);
+      
+    // If __gthread_active_p() create and initialize the list of
+    // free thread ids. Single threaded applications use thread id 0
+    // directly and have no need for this.
+    if (__gthread_active_p())
+      {
+	__freelist& freelist = get_freelist();
+	{
+	  __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
+
+	  if (!freelist._M_thread_freelist_array
+	      || freelist._M_max_threads < _M_options._M_max_threads)
+	    {
+	      const size_t __k = sizeof(_Thread_record)
+				 * _M_options._M_max_threads;
+	      __v = ::operator new(__k);
+	      _M_thread_freelist = static_cast<_Thread_record*>(__v);
+
+	      // NOTE! The first assignable thread id is 1 since the
+	      // global pool uses id 0
+	      size_t __i;
+	      for (__i = 1; __i < _M_options._M_max_threads; ++__i)
+		{
+		  _Thread_record& __tr = _M_thread_freelist[__i - 1];
+		  __tr._M_next = &_M_thread_freelist[__i];
+		  __tr._M_id = __i;
+		}
+
+	      // Set last record.
+	      _M_thread_freelist[__i - 1]._M_next = 0;
+	      _M_thread_freelist[__i - 1]._M_id = __i;
+
+	      if (!freelist._M_thread_freelist_array)
+		{
+		  // Initialize per thread key to hold pointer to
+		  // _M_thread_freelist.
+		  __gthread_key_create(&freelist._M_key,
+				       ::_M_destroy_thread_key);
+		  freelist._M_thread_freelist = _M_thread_freelist;
+		}
+	      else
+		{
+		  _Thread_record* _M_old_freelist
+		    = freelist._M_thread_freelist;
+		  _Thread_record* _M_old_array
+		    = freelist._M_thread_freelist_array;
+		  freelist._M_thread_freelist
+		    = &_M_thread_freelist[_M_old_freelist - _M_old_array];
+		  while (_M_old_freelist)
+		    {
+		      size_t next_id;
+		      if (_M_old_freelist->_M_next)
+			next_id = _M_old_freelist->_M_next - _M_old_array;
+		      else
+			next_id = freelist._M_max_threads;
+		      _M_thread_freelist[_M_old_freelist->_M_id - 1]._M_next
+			= &_M_thread_freelist[next_id];
+		      _M_old_freelist = _M_old_freelist->_M_next;
+		    }
+		  ::operator delete(static_cast<void*>(_M_old_array));
+		}
+	      freelist._M_thread_freelist_array = _M_thread_freelist;
+	      freelist._M_max_threads = _M_options._M_max_threads;
+	    }
+	}
+
+	const size_t __max_threads = _M_options._M_max_threads + 1;
+	for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	  {
+	    _Bin_record& __bin = _M_bin[__n];
+	    __v = ::operator new(sizeof(_Block_record*) * __max_threads);
+	    std::memset(__v, 0, sizeof(_Block_record*) * __max_threads);    
+	    __bin._M_first = static_cast<_Block_record**>(__v);
+
+	    __bin._M_address = 0;
+
+	    __v = ::operator new(sizeof(size_t) * __max_threads);
+	    std::memset(__v, 0, sizeof(size_t) * __max_threads);
+
+	    __bin._M_free = static_cast<size_t*>(__v);
+
+	    __v = ::operator new(sizeof(size_t) * __max_threads
+				 + sizeof(_Atomic_word) * __max_threads);
+	    std::memset(__v, 0, (sizeof(size_t) * __max_threads
+				 + sizeof(_Atomic_word) * __max_threads));
+	    __bin._M_used = static_cast<size_t*>(__v);
+	      
+	    __v = ::operator new(sizeof(__gthread_mutex_t));
+	    __bin._M_mutex = static_cast<__gthread_mutex_t*>(__v);
+	      
+#ifdef __GTHREAD_MUTEX_INIT
+	    {
+	      // Do not copy a POSIX/gthr mutex once in use.
+	      __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+	      *__bin._M_mutex = __tmp;
+	    }
+#else
+	    { __GTHREAD_MUTEX_INIT_FUNCTION(__bin._M_mutex); }
+#endif
+	  }
+      }
+    else
+      {
+	for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	  {
+	    _Bin_record& __bin = _M_bin[__n];
+	    __v = ::operator new(sizeof(_Block_record*));
+	    __bin._M_first = static_cast<_Block_record**>(__v);
+	    __bin._M_first[0] = 0;
+	    __bin._M_address = 0;
+	  }
+      }
+    _M_init = true;
+  }
+
+  size_t
+  __pool<true>::_M_get_thread_id()
+  {
+    // If we have thread support and it's active we check the thread
+    // key value and return its id or if it's not set we take the
+    // first record from _M_thread_freelist and sets the key and
+    // returns its id.
+    if (__gthread_active_p())
+      {
+	__freelist& freelist = get_freelist();
+	void* v = __gthread_getspecific(freelist._M_key);
+	size_t _M_id = (size_t)v;
+	if (_M_id == 0)
+	  {
+	    {
+	      __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
+	      if (freelist._M_thread_freelist)
+		{
+		  _M_id = freelist._M_thread_freelist->_M_id;
+		  freelist._M_thread_freelist
+		    = freelist._M_thread_freelist->_M_next;
+		}
+	    }
+
+	    __gthread_setspecific(freelist._M_key, (void*)_M_id);
+	  }
+	return _M_id >= _M_options._M_max_threads ? 0 : _M_id;
+      }
+
+    // Otherwise (no thread support or inactive) all requests are
+    // served from the global pool 0.
+    return 0;
+  }
+
+  // XXX GLIBCXX_ABI Deprecated
+  void 
+  __pool<true>::_M_destroy_thread_key(void*) throw () { }
+
+  // XXX GLIBCXX_ABI Deprecated
+  void
+  __pool<true>::_M_initialize(__destroy_handler)
+  {
+    // _M_force_new must not change after the first allocate(),
+    // which in turn calls this method, so if it's false, it's false
+    // forever and we don't need to return here ever again.
+    if (_M_options._M_force_new) 
+      {
+	_M_init = true;
+	return;
+      }
+
+    // Create the bins.
+    // Calculate the number of bins required based on _M_max_bytes.
+    // _M_bin_size is statically-initialized to one.
+    size_t __bin_size = _M_options._M_min_bin;
+    while (_M_options._M_max_bytes > __bin_size)
+      {
+	__bin_size <<= 1;
+	++_M_bin_size;
+      }
+      
+    // Setup the bin map for quick lookup of the relevant bin.
+    const size_t __j = (_M_options._M_max_bytes + 1) * sizeof(_Binmap_type);
+    _M_binmap = static_cast<_Binmap_type*>(::operator new(__j));
+    _Binmap_type* __bp = _M_binmap;
+    _Binmap_type __bin_max = _M_options._M_min_bin;
+    _Binmap_type __bint = 0;
+    for (_Binmap_type __ct = 0; __ct <= _M_options._M_max_bytes; ++__ct)
+      {
+	if (__ct > __bin_max)
+	  {
+	    __bin_max <<= 1;
+	    ++__bint;
+	  }
+	*__bp++ = __bint;
+      }
+      
+    // Initialize _M_bin and its members.
+    void* __v = ::operator new(sizeof(_Bin_record) * _M_bin_size);
+    _M_bin = static_cast<_Bin_record*>(__v);
+      
+    // If __gthread_active_p() create and initialize the list of
+    // free thread ids. Single threaded applications use thread id 0
+    // directly and have no need for this.
+    if (__gthread_active_p())
+      {
+	__freelist& freelist = get_freelist();
+	{
+	  __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
+
+	  if (!freelist._M_thread_freelist_array
+	      || freelist._M_max_threads < _M_options._M_max_threads)
+	    {
+	      const size_t __k = sizeof(_Thread_record)
+				 * _M_options._M_max_threads;
+	      __v = ::operator new(__k);
+	      _M_thread_freelist = static_cast<_Thread_record*>(__v);
+
+	      // NOTE! The first assignable thread id is 1 since the
+	      // global pool uses id 0
+	      size_t __i;
+	      for (__i = 1; __i < _M_options._M_max_threads; ++__i)
+		{
+		  _Thread_record& __tr = _M_thread_freelist[__i - 1];
+		  __tr._M_next = &_M_thread_freelist[__i];
+		  __tr._M_id = __i;
+		}
+
+	      // Set last record.
+	      _M_thread_freelist[__i - 1]._M_next = 0;
+	      _M_thread_freelist[__i - 1]._M_id = __i;
+
+	      if (!freelist._M_thread_freelist_array)
+		{
+		  // Initialize per thread key to hold pointer to
+		  // _M_thread_freelist.
+		  __gthread_key_create(&freelist._M_key, 
+				       ::_M_destroy_thread_key);
+		  freelist._M_thread_freelist = _M_thread_freelist;
+		}
+	      else
+		{
+		  _Thread_record* _M_old_freelist
+		    = freelist._M_thread_freelist;
+		  _Thread_record* _M_old_array
+		    = freelist._M_thread_freelist_array;
+		  freelist._M_thread_freelist
+		    = &_M_thread_freelist[_M_old_freelist - _M_old_array];
+		  while (_M_old_freelist)
+		    {
+		      size_t next_id;
+		      if (_M_old_freelist->_M_next)
+			next_id = _M_old_freelist->_M_next - _M_old_array;
+		      else
+			next_id = freelist._M_max_threads;
+		      _M_thread_freelist[_M_old_freelist->_M_id - 1]._M_next
+			= &_M_thread_freelist[next_id];
+		      _M_old_freelist = _M_old_freelist->_M_next;
+		    }
+		  ::operator delete(static_cast<void*>(_M_old_array));
+		}
+	      freelist._M_thread_freelist_array = _M_thread_freelist;
+	      freelist._M_max_threads = _M_options._M_max_threads;
+	    }
+	}
+
+	const size_t __max_threads = _M_options._M_max_threads + 1;
+	for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	  {
+	    _Bin_record& __bin = _M_bin[__n];
+	    __v = ::operator new(sizeof(_Block_record*) * __max_threads);
+	    std::memset(__v, 0, sizeof(_Block_record*) * __max_threads);
+	    __bin._M_first = static_cast<_Block_record**>(__v);
+
+	    __bin._M_address = 0;
+
+	    __v = ::operator new(sizeof(size_t) * __max_threads);
+	    std::memset(__v, 0, sizeof(size_t) * __max_threads);
+	    __bin._M_free = static_cast<size_t*>(__v);
+	      
+	    __v = ::operator new(sizeof(size_t) * __max_threads + 
+				 sizeof(_Atomic_word) * __max_threads);
+	    std::memset(__v, 0, (sizeof(size_t) * __max_threads
+				 + sizeof(_Atomic_word) * __max_threads));
+	    __bin._M_used = static_cast<size_t*>(__v);
+
+	    __v = ::operator new(sizeof(__gthread_mutex_t));
+	    __bin._M_mutex = static_cast<__gthread_mutex_t*>(__v);
+	      
+#ifdef __GTHREAD_MUTEX_INIT
+	    {
+	      // Do not copy a POSIX/gthr mutex once in use.
+	      __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+	      *__bin._M_mutex = __tmp;
+	    }
+#else
+	    { __GTHREAD_MUTEX_INIT_FUNCTION(__bin._M_mutex); }
+#endif
+	  }
+      }
+    else
+      {
+	for (size_t __n = 0; __n < _M_bin_size; ++__n)
+	  {
+	    _Bin_record& __bin = _M_bin[__n];
+	    __v = ::operator new(sizeof(_Block_record*));
+	    __bin._M_first = static_cast<_Block_record**>(__v);
+	    __bin._M_first[0] = 0;
+	    __bin._M_address = 0;
+	  }
+      }
+    _M_init = true;
+  }
+#endif
+
+  // Instantiations.
+  template class __mt_alloc<char>;
+  template class __mt_alloc<wchar_t>;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mutex.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mutex.cc
new file mode 100644
index 000000000..d6f2f0370
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/mutex.cc
@@ -0,0 +1,121 @@
+// mutex -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <mutex>
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+#ifndef _GLIBCXX_HAVE_TLS
+namespace
+{
+  inline std::unique_lock<std::mutex>*&
+  __get_once_functor_lock_ptr()
+  {
+    static std::unique_lock<std::mutex>* __once_functor_lock_ptr = 0;
+    return __once_functor_lock_ptr;
+  }
+}
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef _GLIBCXX_HAVE_TLS
+  __thread void* __once_callable;
+  __thread void (*__once_call)();
+#else
+  // Explicit instantiation due to -fno-implicit-instantiation.
+  template class function<void()>;
+  function<void()> __once_functor;
+
+  mutex&
+  __get_once_mutex()
+  {
+    static mutex once_mutex;
+    return once_mutex;
+  }
+
+  // code linked against ABI 3.4.12 and later uses this
+  void
+  __set_once_functor_lock_ptr(unique_lock<mutex>* __ptr)
+  {
+    __get_once_functor_lock_ptr() = __ptr;
+  }
+
+  // unsafe - retained for compatibility with ABI 3.4.11
+  unique_lock<mutex>&
+  __get_once_functor_lock()
+  {
+    static unique_lock<mutex> once_functor_lock(__get_once_mutex(), defer_lock);
+    return once_functor_lock;
+  }
+#endif
+
+  extern "C"
+  {
+    void __once_proxy()
+    {
+#ifndef _GLIBCXX_HAVE_TLS
+      function<void()> __once_call = std::move(__once_functor);
+      if (unique_lock<mutex>* __lock = __get_once_functor_lock_ptr())
+      {
+        // caller is using new ABI and provided lock ptr
+        __get_once_functor_lock_ptr() = 0;
+        __lock->unlock();
+      }
+      else
+        __get_once_functor_lock().unlock();  // global lock
+#endif
+      __once_call();
+    }
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+// gcc-4.6.0
+// <mutex> export changes
+#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
+    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
+    && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+  std::defer_lock_t defer_lock;
+  std::try_to_lock_t try_to_lock;
+  std::adopt_lock_t adopt_lock;
+}
+
+#define _GLIBCXX_ASM_SYMVER(cur, old, version) \
+   asm (".symver " #cur "," #old "@@" #version);
+
+_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10adopt_lockE, _ZSt10adopt_lock, GLIBCXX_3.4.11)
+_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10defer_lockE, _ZSt10defer_lock, GLIBCXX_3.4.11)
+_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx11try_to_lockE, _ZSt11try_to_lock, GLIBCXX_3.4.11)
+
+
+#endif
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ostream-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ostream-inst.cc
new file mode 100644
index 000000000..9c2522877
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/ostream-inst.cc
@@ -0,0 +1,118 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+// 2009  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <ostream>
+#include <iomanip>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // ostream
+  template class basic_ostream<char>;
+  template ostream& endl(ostream&);
+  template ostream& ends(ostream&);
+  template ostream& flush(ostream&);
+  template ostream& operator<<(ostream&, char);
+  template ostream& operator<<(ostream&, unsigned char);
+  template ostream& operator<<(ostream&, signed char);
+  template ostream& operator<<(ostream&, const char*);
+  template ostream& operator<<(ostream&, const unsigned char*);
+  template ostream& operator<<(ostream&, const signed char*);
+
+  template ostream& operator<<(ostream&, _Setfill<char>);
+  template ostream& operator<<(ostream&, _Setiosflags);
+  template ostream& operator<<(ostream&, _Resetiosflags);
+  template ostream& operator<<(ostream&, _Setbase);
+  template ostream& operator<<(ostream&, _Setprecision);
+  template ostream& operator<<(ostream&, _Setw);
+  template ostream& __ostream_insert(ostream&, const char*, streamsize);
+
+  template ostream& ostream::_M_insert(long);
+  template ostream& ostream::_M_insert(unsigned long);
+  template ostream& ostream::_M_insert(bool);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template ostream& ostream::_M_insert(long long);
+  template ostream& ostream::_M_insert(unsigned long long);
+#endif
+  template ostream& ostream::_M_insert(double);
+  template ostream& ostream::_M_insert(long double);
+  template ostream& ostream::_M_insert(const void*);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class basic_ostream<wchar_t>;
+  template wostream& endl(wostream&);
+  template wostream& ends(wostream&);
+  template wostream& flush(wostream&);
+  template wostream& operator<<(wostream&, wchar_t);
+  template wostream& operator<<(wostream&, char);
+  template wostream& operator<<(wostream&, const wchar_t*);
+  template wostream& operator<<(wostream&, const char*);
+
+  template wostream& operator<<(wostream&, _Setfill<wchar_t>);
+  template wostream& operator<<(wostream&, _Setiosflags);
+  template wostream& operator<<(wostream&, _Resetiosflags);
+  template wostream& operator<<(wostream&, _Setbase);
+  template wostream& operator<<(wostream&, _Setprecision);
+  template wostream& operator<<(wostream&, _Setw);
+  template wostream& __ostream_insert(wostream&, const wchar_t*, streamsize);
+
+  template wostream& wostream::_M_insert(long);
+  template wostream& wostream::_M_insert(unsigned long);
+  template wostream& wostream::_M_insert(bool);
+#ifdef _GLIBCXX_USE_LONG_LONG
+  template wostream& wostream::_M_insert(long long);
+  template wostream& wostream::_M_insert(unsigned long long);
+#endif
+  template wostream& wostream::_M_insert(double);
+  template wostream& wostream::_M_insert(long double);
+  template wostream& wostream::_M_insert(const void*);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+// XXX GLIBCXX_ABI Deprecated
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
+_GLIBCXX_LDBL_COMPAT (_ZNSolsEd, _ZNSolsEe);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd,
+		      _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe);
+#endif
+_GLIBCXX_LDBL_COMPAT (_ZNSo9_M_insertIdEERSoT_,
+		      _ZNSo9_M_insertIeEERSoT_);
+#ifdef _GLIBCXX_USE_WCHAR_T
+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_,
+		      _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_);
+#endif
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/parallel_settings.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/parallel_settings.cc
new file mode 100644
index 000000000..e183c97f4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/parallel_settings.cc
@@ -0,0 +1,42 @@
+// Default settings for parallel mode -*- C++ -*-
+
+// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <parallel/settings.h>
+
+namespace
+{
+  __gnu_parallel::_Settings s;
+}
+
+namespace __gnu_parallel
+{
+  const _Settings&
+  _Settings::get() throw()
+  { return s; }
+
+  // XXX MT
+  void
+  _Settings::set(_Settings& obj) throw()
+  { s = obj; }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/placeholders.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/placeholders.cc
new file mode 100644
index 000000000..967ce178a
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/placeholders.cc
@@ -0,0 +1,67 @@
+// std::placeholders -*- C++ -*-
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# error "placeholders.cc must be compiled with -std=gnu++0x"
+#endif
+
+#include <functional>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace placeholders 
+  {
+  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+    extern const _Placeholder<1> _1{};
+    extern const _Placeholder<2> _2{};
+    extern const _Placeholder<3> _3{};
+    extern const _Placeholder<4> _4{};
+    extern const _Placeholder<5> _5{};
+    extern const _Placeholder<6> _6{};
+    extern const _Placeholder<7> _7{};
+    extern const _Placeholder<8> _8{};
+    extern const _Placeholder<9> _9{};
+    extern const _Placeholder<10> _10{};
+    extern const _Placeholder<11> _11{};
+    extern const _Placeholder<12> _12{};
+    extern const _Placeholder<13> _13{};
+    extern const _Placeholder<14> _14{};
+    extern const _Placeholder<15> _15{};
+    extern const _Placeholder<16> _16{};
+    extern const _Placeholder<17> _17{};
+    extern const _Placeholder<18> _18{};
+    extern const _Placeholder<19> _19{};
+    extern const _Placeholder<20> _20{};
+    extern const _Placeholder<21> _21{};
+    extern const _Placeholder<22> _22{};
+    extern const _Placeholder<23> _23{};
+    extern const _Placeholder<24> _24{};
+    extern const _Placeholder<25> _25{};
+    extern const _Placeholder<26> _26{};
+    extern const _Placeholder<27> _27{};
+    extern const _Placeholder<28> _28{};
+    extern const _Placeholder<29> _29{};
+  _GLIBCXX_END_NAMESPACE_VERSION
+  }
+}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/pool_allocator.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/pool_allocator.cc
new file mode 100644
index 000000000..f94656b03
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/pool_allocator.cc
@@ -0,0 +1,177 @@
+// Allocator details.
+
+// Copyright (C) 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <bits/c++config.h>
+#include <cstdlib>
+#include <ext/pool_allocator.h>
+
+namespace
+{
+  __gnu_cxx::__mutex&
+  get_palloc_mutex()
+  {
+    static __gnu_cxx::__mutex palloc_mutex;
+    return palloc_mutex;
+  }
+} // anonymous namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for __pool_alloc_base.
+  __pool_alloc_base::_Obj* volatile*
+  __pool_alloc_base::_M_get_free_list(size_t __bytes) throw ()
+  { 
+    size_t __i = ((__bytes + (size_t)_S_align - 1) / (size_t)_S_align - 1);
+    return _S_free_list + __i;
+  }
+
+  __mutex&
+  __pool_alloc_base::_M_get_mutex() throw ()
+  { return get_palloc_mutex(); }
+
+  // Allocate memory in large chunks in order to avoid fragmenting the
+  // heap too much.  Assume that __n is properly aligned.  We hold the
+  // allocation lock.
+  char*
+  __pool_alloc_base::_M_allocate_chunk(size_t __n, int& __nobjs)
+  {
+    char* __result;
+    size_t __total_bytes = __n * __nobjs;
+    size_t __bytes_left = _S_end_free - _S_start_free;
+    
+    if (__bytes_left >= __total_bytes)
+      {
+	__result = _S_start_free;
+	_S_start_free += __total_bytes;
+	return __result ;
+      }
+    else if (__bytes_left >= __n)
+      {
+	__nobjs = (int)(__bytes_left / __n);
+	__total_bytes = __n * __nobjs;
+	__result = _S_start_free;
+	_S_start_free += __total_bytes;
+	return __result;
+      }
+    else
+      {
+	// Try to make use of the left-over piece.
+	if (__bytes_left > 0)
+	  {
+	    _Obj* volatile* __free_list = _M_get_free_list(__bytes_left);
+	    ((_Obj*)(void*)_S_start_free)->_M_free_list_link = *__free_list;
+	    *__free_list = (_Obj*)(void*)_S_start_free;
+	  }
+	
+	size_t __bytes_to_get = (2 * __total_bytes
+				 + _M_round_up(_S_heap_size >> 4));
+	__try
+	  {
+	    _S_start_free = static_cast<char*>(::operator new(__bytes_to_get));
+	  }
+	__catch(const std::bad_alloc&)
+	  {
+	    // Try to make do with what we have.  That can't hurt.  We
+	    // do not try smaller requests, since that tends to result
+	    // in disaster on multi-process machines.
+	    size_t __i = __n;
+	    for (; __i <= (size_t) _S_max_bytes; __i += (size_t) _S_align)
+	      {
+		_Obj* volatile* __free_list = _M_get_free_list(__i);
+		_Obj* __p = *__free_list;
+		if (__p != 0)
+		  {
+		    *__free_list = __p->_M_free_list_link;
+		    _S_start_free = (char*)__p;
+		    _S_end_free = _S_start_free + __i;
+		    return _M_allocate_chunk(__n, __nobjs);
+		    // Any leftover piece will eventually make it to the
+		    // right free list.
+		  }
+	      }
+	    // What we have wasn't enough.  Rethrow.
+	    _S_start_free = _S_end_free = 0;   // We have no chunk.
+	    __throw_exception_again;
+	  }
+	_S_heap_size += __bytes_to_get;
+	_S_end_free = _S_start_free + __bytes_to_get;
+	return _M_allocate_chunk(__n, __nobjs);
+      }
+  }
+  
+  // Returns an object of size __n, and optionally adds to "size
+  // __n"'s free list.  We assume that __n is properly aligned.  We
+  // hold the allocation lock.
+  void*
+  __pool_alloc_base::_M_refill(size_t __n)
+  {
+    int __nobjs = 20;
+    char* __chunk = _M_allocate_chunk(__n, __nobjs);
+    _Obj* volatile* __free_list;
+    _Obj* __result;
+    _Obj* __current_obj;
+    _Obj* __next_obj;
+    
+    if (__nobjs == 1)
+      return __chunk;
+    __free_list = _M_get_free_list(__n);
+    
+    // Build free list in chunk.
+    __result = (_Obj*)(void*)__chunk;
+    *__free_list = __next_obj = (_Obj*)(void*)(__chunk + __n);
+    for (int __i = 1; ; __i++)
+      {
+	__current_obj = __next_obj;
+	__next_obj = (_Obj*)(void*)((char*)__next_obj + __n);
+	if (__nobjs - 1 == __i)
+	  {
+	    __current_obj->_M_free_list_link = 0;
+	    break;
+	  }
+	else
+	  __current_obj->_M_free_list_link = __next_obj;
+      }
+    return __result;
+  }
+
+  __pool_alloc_base::_Obj* volatile __pool_alloc_base::_S_free_list[_S_free_list_size];
+  
+  char* __pool_alloc_base::_S_start_free = 0;
+  
+  char* __pool_alloc_base::_S_end_free = 0;
+  
+  size_t __pool_alloc_base::_S_heap_size = 0;
+
+  // Instantiations.
+  template class __pool_alloc<char>;
+  template class __pool_alloc<wchar_t>;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/regex.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/regex.cc
new file mode 100644
index 000000000..8a47da341
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/regex.cc
@@ -0,0 +1,38 @@
+// regex -*- C++ -*-
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <regex>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  regex_error::regex_error(regex_constants::error_type __ecode)
+  : std::runtime_error("regex_error"), _M_code(__ecode)
+  { }
+
+  regex_error::~regex_error() throw() { }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/shared_ptr.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/shared_ptr.cc
new file mode 100644
index 000000000..670b7ca7f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/shared_ptr.cc
@@ -0,0 +1,39 @@
+// Support for pointer abstractions -*- C++ -*-
+
+// Copyright (C) 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <memory>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  bad_weak_ptr::~bad_weak_ptr() throw() = default;
+
+  char const*
+  bad_weak_ptr::what() const throw()  
+  { return "std::bad_weak_ptr"; }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/sstream-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/sstream-inst.cc
new file mode 100644
index 000000000..5c6877904
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/sstream-inst.cc
@@ -0,0 +1,49 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <sstream>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template class basic_stringbuf<char>;
+  template class basic_istringstream<char>;
+  template class basic_ostringstream<char>;
+  template class basic_stringstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template class basic_stringbuf<wchar_t>;
+  template class basic_istringstream<wchar_t>; 
+  template class basic_ostringstream<wchar_t>; 
+  template class basic_stringstream<wchar_t>; 
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/stdexcept.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/stdexcept.cc
new file mode 100644
index 000000000..b693da23f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/stdexcept.cc
@@ -0,0 +1,91 @@
+// Methods for Exception Support for -*- C++ -*-
+
+// Copyright (C) 1997, 1999, 2001, 2002, 2005, 2009, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 19.1  Exception classes
+//
+
+#include <string>
+#include <stdexcept>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  logic_error::logic_error(const string& __arg)
+  : exception(), _M_msg(__arg) { }
+
+  logic_error::~logic_error() throw() { }
+
+  const char*
+  logic_error::what() const throw()
+  { return _M_msg.c_str(); }
+
+  domain_error::domain_error(const string& __arg)
+  : logic_error(__arg) { }
+
+  domain_error::~domain_error() throw() { }
+
+  invalid_argument::invalid_argument(const string& __arg)
+  : logic_error(__arg) { }
+
+  invalid_argument::~invalid_argument() throw() { }
+
+  length_error::length_error(const string& __arg)
+  : logic_error(__arg) { }
+
+  length_error::~length_error() throw() { }
+
+  out_of_range::out_of_range(const string& __arg)
+  : logic_error(__arg) { }
+
+  out_of_range::~out_of_range() throw() { }
+
+  runtime_error::runtime_error(const string& __arg)
+  : exception(), _M_msg(__arg) { }
+
+  runtime_error::~runtime_error() throw() { }
+
+  const char*
+  runtime_error::what() const throw()
+  { return _M_msg.c_str(); }
+
+  range_error::range_error(const string& __arg)
+  : runtime_error(__arg) { }
+
+  range_error::~range_error() throw() { }
+
+  overflow_error::overflow_error(const string& __arg)
+  : runtime_error(__arg) { }
+
+  overflow_error::~overflow_error() throw() { }
+
+  underflow_error::underflow_error(const string& __arg)
+  : runtime_error(__arg) { }
+
+  underflow_error::~underflow_error() throw() { }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf-inst.cc
new file mode 100644
index 000000000..5b563c8e1
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf-inst.cc
@@ -0,0 +1,64 @@
+// Explicit instantiation file.
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+// 2009  Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <ios>
+#include <streambuf>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // streambuf
+  template class basic_streambuf<char>;
+
+  template
+    streamsize
+    __copy_streambufs(basic_streambuf<char>*, basic_streambuf<char>*);
+
+  template
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<char>*,
+			  basic_streambuf<char>*, bool&);
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  // wstreambuf
+  template class basic_streambuf<wchar_t>;
+
+  template
+    streamsize
+    __copy_streambufs(basic_streambuf<wchar_t>*, basic_streambuf<wchar_t>*);
+
+  template
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<wchar_t>*,
+			  basic_streambuf<wchar_t>*, bool&);
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf.cc
new file mode 100644
index 000000000..5bcd0ea8d
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/streambuf.cc
@@ -0,0 +1,117 @@
+// Stream buffer classes -*- C++ -*-
+
+// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 27.5  Stream buffers
+//
+
+#include <streambuf>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  template<>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<char>* __sbin,
+			  basic_streambuf<char>* __sbout, bool& __ineof)
+    {
+      typedef basic_streambuf<char>::traits_type traits_type;
+      streamsize __ret = 0;
+      __ineof = true;
+      traits_type::int_type __c = __sbin->sgetc();
+      while (!traits_type::eq_int_type(__c, traits_type::eof()))
+	{
+	  const streamsize __n = __sbin->egptr() - __sbin->gptr();
+	  if (__n > 1)
+	    {
+	      const streamsize __wrote = __sbout->sputn(__sbin->gptr(), __n);
+	      __sbin->__safe_gbump(__wrote);
+	      __ret += __wrote;
+	      if (__wrote < __n)
+		{
+		  __ineof = false;
+		  break;
+		}
+	      __c = __sbin->underflow();
+	    }
+	  else
+	    {
+	      __c = __sbout->sputc(traits_type::to_char_type(__c));
+	      if (traits_type::eq_int_type(__c, traits_type::eof()))
+		{
+		  __ineof = false;
+		  break;
+		}
+	      ++__ret;
+	      __c = __sbin->snextc();
+	    }
+	}
+      return __ret;
+    }
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  template<>
+    streamsize
+    __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
+			  basic_streambuf<wchar_t>* __sbout, bool& __ineof)
+    {
+      typedef basic_streambuf<wchar_t>::traits_type traits_type;
+      streamsize __ret = 0;
+      __ineof = true;
+      traits_type::int_type __c = __sbin->sgetc();
+      while (!traits_type::eq_int_type(__c, traits_type::eof()))
+	{
+	  const streamsize __n = __sbin->egptr() - __sbin->gptr();
+	  if (__n > 1)
+	    {
+	      const streamsize __wrote = __sbout->sputn(__sbin->gptr(), __n);
+	      __sbin->__safe_gbump(__wrote);
+	      __ret += __wrote;
+	      if (__wrote < __n)
+		{
+		  __ineof = false;
+		  break;
+		}
+	      __c = __sbin->underflow();
+	    }
+	  else
+	    {
+	      __c = __sbout->sputc(traits_type::to_char_type(__c));
+	      if (traits_type::eq_int_type(__c, traits_type::eof()))
+		{
+		  __ineof = false;
+		  break;
+		}
+	      ++__ret;
+	      __c = __sbin->snextc();
+	    }
+	}
+      return __ret;
+    }
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/string-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/string-inst.cc
new file mode 100644
index 000000000..879ccec7e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/string-inst.cc
@@ -0,0 +1,89 @@
+// Components for manipulating sequences of characters -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 2009, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 21  Strings library
+//
+
+// Written by Jason Merrill based upon the specification by Takanori Adachi
+// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
+
+#include <string>
+
+// Instantiation configuration.
+#ifndef C
+# define C char
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  typedef basic_string<C> S;
+
+  template class basic_string<C>;
+  template S operator+(const C*, const S&);
+  template S operator+(C, const S&);
+  template S operator+(const S&, const S&);
+
+  // Only one template keyword allowed here. 
+  // See core issue #46 (NAD)
+  // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46
+  template
+    S::basic_string(C*, C*, const allocator<C>&);
+
+  template
+    S::basic_string(const C*, const C*, const allocator<C>&);
+
+  template 
+    S::basic_string(S::iterator, S::iterator, const allocator<C>&);
+
+  template 
+    C* 
+    S::_S_construct(S::iterator, S::iterator, 
+		    const allocator<C>&, forward_iterator_tag);
+
+  template
+    C*
+    S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag);
+
+  template
+    C*
+    S::_S_construct(const C*, const C*, const allocator<C>&,
+		    forward_iterator_tag);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  using std::S;
+  template bool operator==(const S::iterator&, const S::iterator&);
+  template bool operator==(const S::const_iterator&, const S::const_iterator&);
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/strstream.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/strstream.cc
new file mode 100644
index 000000000..c76fc60e0
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/strstream.cc
@@ -0,0 +1,418 @@
+// strstream definitions -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2003, 2005, 2009, 2010, 2011
+// Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ * Copyright (c) 1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ */
+
+// Implementation of the classes in header <strstream>.
+// WARNING: The classes defined in <strstream> are DEPRECATED.  This
+// header is defined in section D.7.1 of the C++ standard, and it
+// MAY BE REMOVED in a future standard revision.  You should use the
+// header <sstream> instead.
+
+#include <strstream>
+#include <algorithm>
+#include <new>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  strstreambuf::strstreambuf(streamsize initial_capacity)
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(true), 
+    _M_frozen(false), _M_constant(false)
+  {
+    streamsize n = std::max(initial_capacity, streamsize(16));
+    
+    char* buf = _M_alloc(n);
+    if (buf) 
+      {
+	setp(buf, buf + n);
+	setg(buf, buf, buf);
+      }
+  }
+
+  strstreambuf::strstreambuf(void* (*alloc_f)(size_t), void (*free_f)(void*))
+  : _Base(), _M_alloc_fun(alloc_f), _M_free_fun(free_f), _M_dynamic(true), 
+    _M_frozen(false), _M_constant(false)
+  {
+    streamsize n = 16;
+
+    char* buf = _M_alloc(n);
+    if (buf) 
+      {
+	setp(buf, buf + n);
+	setg(buf, buf, buf);
+      }
+  }
+
+  strstreambuf::strstreambuf(char* get, streamsize n, char* put) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+    _M_frozen(false), _M_constant(false)
+  { _M_setup(get, put, n); }
+
+  strstreambuf::strstreambuf(signed char* get, streamsize n, signed char* put) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+  _M_frozen(false), _M_constant(false)
+  { _M_setup(reinterpret_cast<char*>(get), reinterpret_cast<char*>(put), n); }
+
+  strstreambuf::strstreambuf(unsigned char* get, streamsize n, 
+			     unsigned char* put) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+    _M_frozen(false), _M_constant(false)
+  { _M_setup(reinterpret_cast<char*>(get), reinterpret_cast<char*>(put), n); }
+
+  strstreambuf::strstreambuf(const char* get, streamsize n) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+    _M_frozen(false), _M_constant(true)
+  { _M_setup(const_cast<char*>(get), 0, n); }
+
+  strstreambuf::strstreambuf(const signed char* get, streamsize n) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+    _M_frozen(false), _M_constant(true)
+  { _M_setup(reinterpret_cast<char*>(const_cast<signed char*>(get)), 0, n); }
+
+  strstreambuf::strstreambuf(const unsigned char* get, streamsize n) throw ()
+  : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false), 
+    _M_frozen(false), _M_constant(true)
+  { _M_setup(reinterpret_cast<char*>(const_cast<unsigned char*>(get)), 0, n); }
+
+  strstreambuf::~strstreambuf()
+  {
+    if (_M_dynamic && !_M_frozen)
+      _M_free(eback());
+  }
+
+  void 
+  strstreambuf::freeze(bool frozenflag) throw ()
+  {
+    if (_M_dynamic)
+      _M_frozen = frozenflag;
+  }
+
+  char* 
+  strstreambuf::str() throw ()
+  {
+    freeze(true);
+    return eback();
+  }
+
+  int 
+  strstreambuf::pcount() const throw ()
+  { return pptr() ? pptr() - pbase() : 0; }
+
+  strstreambuf::int_type 
+  strstreambuf::overflow(int_type c) 
+  {
+    if (c == traits_type::eof())
+      return traits_type::not_eof(c);
+    
+    // Try to expand the buffer.
+    if (pptr() == epptr() && _M_dynamic && !_M_frozen && !_M_constant) 
+      {
+	ptrdiff_t old_size = epptr() - pbase();
+	ptrdiff_t new_size = std::max(ptrdiff_t(2 * old_size), ptrdiff_t(1));
+	
+	char* buf = _M_alloc(new_size);
+	if (buf) 
+	  {
+	    memcpy(buf, pbase(), old_size);
+	    char* old_buffer = pbase();
+	    bool reposition_get = false;
+	    ptrdiff_t old_get_offset;
+	    if (gptr() != 0) 
+	      {
+		reposition_get = true;
+		old_get_offset = gptr() - eback();
+	      }
+	    
+	    setp(buf, buf + new_size);
+	    __safe_pbump(old_size);
+
+	    if (reposition_get)
+	      setg(buf, buf + old_get_offset, buf + 
+		   std::max(old_get_offset, old_size));
+
+	    _M_free(old_buffer);
+	  }
+      }
+    
+    if (pptr() != epptr()) 
+      {
+	*pptr() = c;
+	pbump(1);
+	return c;
+      }
+    else
+      return traits_type::eof();
+  }
+
+  strstreambuf::int_type 
+  strstreambuf::pbackfail(int_type c)
+  {
+    if (gptr() != eback()) 
+      {
+      if (c == _Traits::eof()) 
+	{
+	  gbump(-1);
+	  return _Traits::not_eof(c);
+	}
+      else if (c == _Traits::to_int_type(gptr()[-1])) 
+	{  // KLUDGE
+	  gbump(-1);
+	  return c;
+	}
+      else if (!_M_constant) 
+	{
+	  gbump(-1);
+	  *gptr() = c;
+	  return c;
+	}
+    }
+    return _Traits::eof();
+  }
+
+  strstreambuf::int_type 
+  strstreambuf::underflow()
+  {
+    if (gptr() == egptr() && pptr() && pptr() > egptr())
+      setg(eback(), gptr(), pptr());
+    
+    if (gptr() != egptr())
+      return (unsigned char) *gptr();
+    else
+      return _Traits::eof();
+  }
+
+  basic_streambuf<char, char_traits<char> >*
+  strstreambuf::setbuf(char*, streamsize)
+  { return this; }
+
+  strstreambuf::pos_type
+  strstreambuf::seekoff(off_type off, ios_base::seekdir dir, 
+			ios_base::openmode mode)
+  {
+    bool do_get = false;
+    bool do_put = false;
+
+    if ((mode & (ios_base::in | ios_base::out)) 
+	== (ios_base::in | ios_base::out) &&
+	(dir == ios_base::beg || dir == ios_base::end))
+      do_get = do_put = true;
+    else if (mode & ios_base::in)
+      do_get = true;
+    else if (mode & ios_base::out)
+      do_put = true;
+
+    // !gptr() is here because, according to D.7.1 paragraph 4, the seekable
+    // area is undefined if there is no get area.
+    if ((!do_get && !do_put) || (do_put && !pptr()) || !gptr())
+      return pos_type(off_type(-1));
+
+    char* seeklow  = eback();
+    char* seekhigh = epptr() ? epptr() : egptr();
+
+    off_type newoff;
+    switch (dir) 
+      {
+      case ios_base::beg:
+	newoff = 0;
+	break;
+      case ios_base::end:
+	newoff = seekhigh - seeklow;
+	break;
+      case ios_base::cur:
+	newoff = do_put ? pptr() - seeklow : gptr() - seeklow;
+	break;
+      default:
+	return pos_type(off_type(-1));
+      }
+    
+    off += newoff;
+    if (off < 0 || off > seekhigh - seeklow)
+      return pos_type(off_type(-1));
+
+    if (do_put) 
+      {
+	if (seeklow + off < pbase()) 
+	  {
+	    setp(seeklow, epptr());
+	    __safe_pbump(off);
+	  }
+	else 
+	  {
+	    setp(pbase(), epptr());
+	    __safe_pbump(off - (pbase() - seeklow));
+	  }
+      }
+    if (do_get) 
+      {
+	if (off <= egptr() - seeklow)
+	  setg(seeklow, seeklow + off, egptr());
+	else if (off <= pptr() - seeklow)
+	  setg(seeklow, seeklow + off, pptr());
+	else
+	  setg(seeklow, seeklow + off, epptr());
+      }
+    return pos_type(newoff);
+  }
+
+  strstreambuf::pos_type
+  strstreambuf::seekpos(pos_type pos, ios_base::openmode mode)
+  { return seekoff(pos - pos_type(off_type(0)), ios_base::beg, mode); }
+
+  char* 
+  strstreambuf::_M_alloc(size_t n)
+  {
+    if (_M_alloc_fun)
+      return static_cast<char*>(_M_alloc_fun(n));
+    else
+      return new char[n];
+  }
+
+  void 
+  strstreambuf::_M_free(char* p)
+  {
+    if (p)
+      {
+	if (_M_free_fun)
+	  _M_free_fun(p);
+	else
+	  delete[] p;
+      }
+  }
+
+  void 
+  strstreambuf::_M_setup(char* get, char* put, streamsize n) throw ()
+  {
+    if (get) 
+      {
+	size_t N = n > 0 ? size_t(n) : n == 0 ? strlen(get) : size_t(INT_MAX);
+	
+	if (put) 
+	  {
+	    setg(get, get, put);
+	    setp(put, put + N);
+	  }
+	else 
+	  setg(get, get, get + N);
+      }
+  }
+
+  istrstream::istrstream(char* s)
+  : basic_ios<char>(), basic_istream<char>(0), _M_buf(s, 0)
+  { basic_ios<char>::init(&_M_buf); }
+
+  istrstream::istrstream(const char* s)
+  : basic_ios<char>(), basic_istream<char>(0), _M_buf(s, 0)
+  { basic_ios<char>::init(&_M_buf); }
+
+  istrstream::istrstream(char* s, streamsize n)
+  : basic_ios<char>(), basic_istream<char>(0), _M_buf(s, n)
+  { basic_ios<char>::init(&_M_buf); }
+
+  istrstream::istrstream(const char* s, streamsize n)
+  : basic_ios<char>(), basic_istream<char>(0), _M_buf(s, n)
+  { basic_ios<char>::init(&_M_buf); }
+
+  istrstream::~istrstream() { }
+
+  strstreambuf* 
+  istrstream::rdbuf() const throw ()
+  { return const_cast<strstreambuf*>(&_M_buf); }
+
+  char* 
+  istrstream::str() throw ()
+  { return _M_buf.str(); }
+
+  ostrstream::ostrstream()
+  : basic_ios<char>(), basic_ostream<char>(0), _M_buf()
+  { basic_ios<char>::init(&_M_buf); }
+
+  ostrstream::ostrstream(char* s, int n, ios_base::openmode mode)
+  : basic_ios<char>(), basic_ostream<char>(0), 
+    _M_buf(s, n, mode & ios_base::app ? s + strlen(s) : s)
+  { basic_ios<char>::init(&_M_buf); }
+
+  ostrstream::~ostrstream() {}
+
+  strstreambuf* 
+  ostrstream::rdbuf() const throw ()
+  { return const_cast<strstreambuf*>(&_M_buf); }
+
+  void 
+  ostrstream::freeze(bool freezeflag) throw ()
+  { _M_buf.freeze(freezeflag); }
+
+  char* 
+  ostrstream::str() throw ()
+  { return _M_buf.str(); }
+
+  int 
+  ostrstream::pcount() const throw ()
+  { return _M_buf.pcount(); }
+
+  strstream::strstream()
+  : basic_ios<char>(), basic_iostream<char>(0), _M_buf()
+  { basic_ios<char>::init(&_M_buf); }
+
+  strstream::strstream(char* s, int n, ios_base::openmode mode)
+  : basic_ios<char>(), basic_iostream<char>(0), 
+    _M_buf(s, n, mode & ios_base::app ? s + strlen(s) : s)
+  { basic_ios<char>::init(&_M_buf); }
+
+  strstream::~strstream() { }
+
+  strstreambuf* 
+  strstream::rdbuf() const throw ()
+  { return const_cast<strstreambuf*>(&_M_buf); }
+
+  void 
+  strstream::freeze(bool freezeflag) throw ()
+  { _M_buf.freeze(freezeflag); }
+
+  int 
+  strstream::pcount() const throw ()
+  { return _M_buf.pcount(); }
+
+  char* 
+  strstream::str() throw ()
+  { return _M_buf.str(); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/system_error.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/system_error.cc
new file mode 100644
index 000000000..5d9c6f5e2
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/system_error.cc
@@ -0,0 +1,106 @@
+// <system_error> implementation file
+
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+#include <cstring>
+#include <system_error>
+#include <bits/functexcept.h>
+#include <limits>
+
+namespace
+{
+  using std::string; 
+  
+  struct generic_error_category : public std::error_category
+  {
+    generic_error_category() {}
+
+    virtual const char*
+    name() const 
+    { return "generic"; }
+
+    virtual string 
+    message(int i) const
+    {
+      // XXX locale issues: how does one get or set loc.
+      // _GLIBCXX_HAVE_STRERROR_L, strerror_l(i, cloc)
+      return string(strerror(i));
+    }
+  };
+
+  struct system_error_category : public std::error_category
+  {
+    system_error_category() {}
+
+    virtual const char*
+    name() const
+    { return "system"; }
+
+    virtual string
+    message(int i) const
+    {
+      // XXX locale issues: how does one get or set loc.
+      // _GLIBCXX_HAVE_STRERROR_L, strerror_l(i, cloc)
+      return string(strerror(i));
+    }
+  };
+
+  const generic_error_category generic_category_instance;
+  const system_error_category system_category_instance;
+}
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  error_category::error_category() = default;
+
+  error_category::~error_category() = default;
+
+  const error_category& 
+  system_category() throw() { return system_category_instance; }
+
+  const error_category& 
+  generic_category() throw() { return generic_category_instance; }
+  
+  system_error::~system_error() throw() = default;
+
+  error_condition 
+  error_category::default_error_condition(int __i) const
+  { return error_condition(__i, *this); }
+
+  bool 
+  error_category::equivalent(int __i, const error_condition& __cond) const
+  { return default_error_condition(__i) == __cond; }
+
+  bool 
+  error_category::equivalent(const error_code& __code, int __i) const
+  { return *this == __code.category() && __code.value() == __i; }
+
+  error_condition 
+  error_code::default_error_condition() const
+  { return category().default_error_condition(value()); }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/thread.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/thread.cc
new file mode 100644
index 000000000..c164e8a01
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/thread.cc
@@ -0,0 +1,104 @@
+// thread -*- C++ -*-
+
+// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+
+#include <thread>
+#include <cerrno>
+
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+  namespace
+  {
+    extern "C" void*
+    execute_native_thread_routine(void* __p)
+    {
+      thread::_Impl_base* __t = static_cast<thread::_Impl_base*>(__p);
+      thread::__shared_base_type __local;
+      __local.swap(__t->_M_this_ptr);
+
+      __try
+	{
+	  __t->_M_run();
+	}
+      __catch(...)
+	{
+	  std::terminate();
+	}
+
+      return 0;
+    }
+  }
+
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  void
+  thread::join()
+  {
+    int __e = EINVAL;
+
+    if (_M_id != id())
+      __e = __gthread_join(_M_id._M_thread, 0);
+
+    if (__e)
+      __throw_system_error(__e);
+
+    _M_id = id();
+  }
+
+  void
+  thread::detach()
+  {
+    int __e = EINVAL;
+
+    if (_M_id != id())
+      __e = __gthread_detach(_M_id._M_thread);
+
+    if (__e)
+      __throw_system_error(__e);
+
+    _M_id = id();
+  }
+
+  void
+  thread::_M_start_thread(__shared_base_type __b)
+  {
+    if (!__gthread_active_p())
+      __throw_system_error(int(errc::operation_not_permitted));
+
+    __b->_M_this_ptr = __b;
+    int __e = __gthread_create(&_M_id._M_thread,
+			       &execute_native_thread_routine, __b.get());
+    if (__e)
+    {
+      __b->_M_this_ptr.reset();
+      __throw_system_error(__e);
+    }
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/tree.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/tree.cc
new file mode 100644
index 000000000..0a7f6f9e4
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/tree.cc
@@ -0,0 +1,454 @@
+// RB tree utilities implementation -*- C++ -*-
+
+// Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/*
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ */
+
+#include <bits/stl_tree.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  _Rb_tree_node_base*
+  _Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
+  {
+    if (__x->_M_right != 0) 
+      {
+        __x = __x->_M_right;
+        while (__x->_M_left != 0)
+          __x = __x->_M_left;
+      }
+    else 
+      {
+        _Rb_tree_node_base* __y = __x->_M_parent;
+        while (__x == __y->_M_right) 
+          {
+            __x = __y;
+            __y = __y->_M_parent;
+          }
+        if (__x->_M_right != __y)
+          __x = __y;
+      }
+    return __x;
+  }
+
+  const _Rb_tree_node_base*
+  _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ()
+  {
+    return _Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x));
+  }
+
+  _Rb_tree_node_base*
+  _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
+  {
+    if (__x->_M_color == _S_red 
+        && __x->_M_parent->_M_parent == __x)
+      __x = __x->_M_right;
+    else if (__x->_M_left != 0) 
+      {
+        _Rb_tree_node_base* __y = __x->_M_left;
+        while (__y->_M_right != 0)
+          __y = __y->_M_right;
+        __x = __y;
+      }
+    else 
+      {
+        _Rb_tree_node_base* __y = __x->_M_parent;
+        while (__x == __y->_M_left) 
+          {
+            __x = __y;
+            __y = __y->_M_parent;
+          }
+        __x = __y;
+      }
+    return __x;
+  }
+
+  const _Rb_tree_node_base*
+  _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ()
+  {
+    return _Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x));
+  }
+
+  static void 
+  local_Rb_tree_rotate_left(_Rb_tree_node_base* const __x, 
+		             _Rb_tree_node_base*& __root)
+  {
+    _Rb_tree_node_base* const __y = __x->_M_right;
+
+    __x->_M_right = __y->_M_left;
+    if (__y->_M_left !=0)
+      __y->_M_left->_M_parent = __x;
+    __y->_M_parent = __x->_M_parent;
+    
+    if (__x == __root)
+      __root = __y;
+    else if (__x == __x->_M_parent->_M_left)
+      __x->_M_parent->_M_left = __y;
+    else
+      __x->_M_parent->_M_right = __y;
+    __y->_M_left = __x;
+    __x->_M_parent = __y;
+  }
+
+  /* Static keyword was missing on _Rb_tree_rotate_left.
+     Export the symbol for backward compatibility until
+     next ABI change.  */
+  void 
+  _Rb_tree_rotate_left(_Rb_tree_node_base* const __x, 
+		       _Rb_tree_node_base*& __root)
+  {
+    local_Rb_tree_rotate_left (__x, __root);
+  }
+
+  static void 
+  local_Rb_tree_rotate_right(_Rb_tree_node_base* const __x, 
+			     _Rb_tree_node_base*& __root)
+  {
+    _Rb_tree_node_base* const __y = __x->_M_left;
+
+    __x->_M_left = __y->_M_right;
+    if (__y->_M_right != 0)
+      __y->_M_right->_M_parent = __x;
+    __y->_M_parent = __x->_M_parent;
+
+    if (__x == __root)
+      __root = __y;
+    else if (__x == __x->_M_parent->_M_right)
+      __x->_M_parent->_M_right = __y;
+    else
+      __x->_M_parent->_M_left = __y;
+    __y->_M_right = __x;
+    __x->_M_parent = __y;
+  }
+
+  /* Static keyword was missing on _Rb_tree_rotate_right
+     Export the symbol for backward compatibility until
+     next ABI change.  */
+  void 
+  _Rb_tree_rotate_right(_Rb_tree_node_base* const __x, 
+			_Rb_tree_node_base*& __root)
+  {
+    local_Rb_tree_rotate_right (__x, __root);
+  }
+
+  void 
+  _Rb_tree_insert_and_rebalance(const bool          __insert_left,
+                                _Rb_tree_node_base* __x,
+                                _Rb_tree_node_base* __p,
+                                _Rb_tree_node_base& __header) throw ()
+  {
+    _Rb_tree_node_base *& __root = __header._M_parent;
+
+    // Initialize fields in new node to insert.
+    __x->_M_parent = __p;
+    __x->_M_left = 0;
+    __x->_M_right = 0;
+    __x->_M_color = _S_red;
+
+    // Insert.
+    // Make new node child of parent and maintain root, leftmost and
+    // rightmost nodes.
+    // N.B. First node is always inserted left.
+    if (__insert_left)
+      {
+        __p->_M_left = __x; // also makes leftmost = __x when __p == &__header
+
+        if (__p == &__header)
+        {
+            __header._M_parent = __x;
+            __header._M_right = __x;
+        }
+        else if (__p == __header._M_left)
+          __header._M_left = __x; // maintain leftmost pointing to min node
+      }
+    else
+      {
+        __p->_M_right = __x;
+
+        if (__p == __header._M_right)
+          __header._M_right = __x; // maintain rightmost pointing to max node
+      }
+    // Rebalance.
+    while (__x != __root 
+	   && __x->_M_parent->_M_color == _S_red) 
+      {
+	_Rb_tree_node_base* const __xpp = __x->_M_parent->_M_parent;
+
+	if (__x->_M_parent == __xpp->_M_left) 
+	  {
+	    _Rb_tree_node_base* const __y = __xpp->_M_right;
+	    if (__y && __y->_M_color == _S_red) 
+	      {
+		__x->_M_parent->_M_color = _S_black;
+		__y->_M_color = _S_black;
+		__xpp->_M_color = _S_red;
+		__x = __xpp;
+	      }
+	    else 
+	      {
+		if (__x == __x->_M_parent->_M_right) 
+		  {
+		    __x = __x->_M_parent;
+		    local_Rb_tree_rotate_left(__x, __root);
+		  }
+		__x->_M_parent->_M_color = _S_black;
+		__xpp->_M_color = _S_red;
+		local_Rb_tree_rotate_right(__xpp, __root);
+	      }
+	  }
+	else 
+	  {
+	    _Rb_tree_node_base* const __y = __xpp->_M_left;
+	    if (__y && __y->_M_color == _S_red) 
+	      {
+		__x->_M_parent->_M_color = _S_black;
+		__y->_M_color = _S_black;
+		__xpp->_M_color = _S_red;
+		__x = __xpp;
+	      }
+	    else 
+	      {
+		if (__x == __x->_M_parent->_M_left) 
+		  {
+		    __x = __x->_M_parent;
+		    local_Rb_tree_rotate_right(__x, __root);
+		  }
+		__x->_M_parent->_M_color = _S_black;
+		__xpp->_M_color = _S_red;
+		local_Rb_tree_rotate_left(__xpp, __root);
+	      }
+	  }
+      }
+    __root->_M_color = _S_black;
+  }
+
+  _Rb_tree_node_base*
+  _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, 
+			       _Rb_tree_node_base& __header) throw ()
+  {
+    _Rb_tree_node_base *& __root = __header._M_parent;
+    _Rb_tree_node_base *& __leftmost = __header._M_left;
+    _Rb_tree_node_base *& __rightmost = __header._M_right;
+    _Rb_tree_node_base* __y = __z;
+    _Rb_tree_node_base* __x = 0;
+    _Rb_tree_node_base* __x_parent = 0;
+
+    if (__y->_M_left == 0)     // __z has at most one non-null child. y == z.
+      __x = __y->_M_right;     // __x might be null.
+    else
+      if (__y->_M_right == 0)  // __z has exactly one non-null child. y == z.
+	__x = __y->_M_left;    // __x is not null.
+      else 
+	{
+	  // __z has two non-null children.  Set __y to
+	  __y = __y->_M_right;   //   __z's successor.  __x might be null.
+	  while (__y->_M_left != 0)
+	    __y = __y->_M_left;
+	  __x = __y->_M_right;
+	}
+    if (__y != __z) 
+      {
+	// relink y in place of z.  y is z's successor
+	__z->_M_left->_M_parent = __y; 
+	__y->_M_left = __z->_M_left;
+	if (__y != __z->_M_right) 
+	  {
+	    __x_parent = __y->_M_parent;
+	    if (__x) __x->_M_parent = __y->_M_parent;
+	    __y->_M_parent->_M_left = __x;   // __y must be a child of _M_left
+	    __y->_M_right = __z->_M_right;
+	    __z->_M_right->_M_parent = __y;
+	  }
+	else
+	  __x_parent = __y;  
+	if (__root == __z)
+	  __root = __y;
+	else if (__z->_M_parent->_M_left == __z)
+	  __z->_M_parent->_M_left = __y;
+	else 
+	  __z->_M_parent->_M_right = __y;
+	__y->_M_parent = __z->_M_parent;
+	std::swap(__y->_M_color, __z->_M_color);
+	__y = __z;
+	// __y now points to node to be actually deleted
+      }
+    else 
+      {                        // __y == __z
+	__x_parent = __y->_M_parent;
+	if (__x) 
+	  __x->_M_parent = __y->_M_parent;   
+	if (__root == __z)
+	  __root = __x;
+	else 
+	  if (__z->_M_parent->_M_left == __z)
+	    __z->_M_parent->_M_left = __x;
+	  else
+	    __z->_M_parent->_M_right = __x;
+	if (__leftmost == __z) 
+	  {
+	    if (__z->_M_right == 0)        // __z->_M_left must be null also
+	      __leftmost = __z->_M_parent;
+	    // makes __leftmost == _M_header if __z == __root
+	    else
+	      __leftmost = _Rb_tree_node_base::_S_minimum(__x);
+	  }
+	if (__rightmost == __z)  
+	  {
+	    if (__z->_M_left == 0)         // __z->_M_right must be null also
+	      __rightmost = __z->_M_parent;  
+	    // makes __rightmost == _M_header if __z == __root
+	    else                      // __x == __z->_M_left
+	      __rightmost = _Rb_tree_node_base::_S_maximum(__x);
+	  }
+      }
+    if (__y->_M_color != _S_red) 
+      { 
+	while (__x != __root && (__x == 0 || __x->_M_color == _S_black))
+	  if (__x == __x_parent->_M_left) 
+	    {
+	      _Rb_tree_node_base* __w = __x_parent->_M_right;
+	      if (__w->_M_color == _S_red) 
+		{
+		  __w->_M_color = _S_black;
+		  __x_parent->_M_color = _S_red;
+		  local_Rb_tree_rotate_left(__x_parent, __root);
+		  __w = __x_parent->_M_right;
+		}
+	      if ((__w->_M_left == 0 || 
+		   __w->_M_left->_M_color == _S_black) &&
+		  (__w->_M_right == 0 || 
+		   __w->_M_right->_M_color == _S_black)) 
+		{
+		  __w->_M_color = _S_red;
+		  __x = __x_parent;
+		  __x_parent = __x_parent->_M_parent;
+		} 
+	      else 
+		{
+		  if (__w->_M_right == 0 
+		      || __w->_M_right->_M_color == _S_black) 
+		    {
+		      __w->_M_left->_M_color = _S_black;
+		      __w->_M_color = _S_red;
+		      local_Rb_tree_rotate_right(__w, __root);
+		      __w = __x_parent->_M_right;
+		    }
+		  __w->_M_color = __x_parent->_M_color;
+		  __x_parent->_M_color = _S_black;
+		  if (__w->_M_right) 
+		    __w->_M_right->_M_color = _S_black;
+		  local_Rb_tree_rotate_left(__x_parent, __root);
+		  break;
+		}
+	    } 
+	  else 
+	    {   
+	      // same as above, with _M_right <-> _M_left.
+	      _Rb_tree_node_base* __w = __x_parent->_M_left;
+	      if (__w->_M_color == _S_red) 
+		{
+		  __w->_M_color = _S_black;
+		  __x_parent->_M_color = _S_red;
+		  local_Rb_tree_rotate_right(__x_parent, __root);
+		  __w = __x_parent->_M_left;
+		}
+	      if ((__w->_M_right == 0 || 
+		   __w->_M_right->_M_color == _S_black) &&
+		  (__w->_M_left == 0 || 
+		   __w->_M_left->_M_color == _S_black)) 
+		{
+		  __w->_M_color = _S_red;
+		  __x = __x_parent;
+		  __x_parent = __x_parent->_M_parent;
+		} 
+	      else 
+		{
+		  if (__w->_M_left == 0 || __w->_M_left->_M_color == _S_black) 
+		    {
+		      __w->_M_right->_M_color = _S_black;
+		      __w->_M_color = _S_red;
+		      local_Rb_tree_rotate_left(__w, __root);
+		      __w = __x_parent->_M_left;
+		    }
+		  __w->_M_color = __x_parent->_M_color;
+		  __x_parent->_M_color = _S_black;
+		  if (__w->_M_left) 
+		    __w->_M_left->_M_color = _S_black;
+		  local_Rb_tree_rotate_right(__x_parent, __root);
+		  break;
+		}
+	    }
+	if (__x) __x->_M_color = _S_black;
+      }
+    return __y;
+  }
+
+  unsigned int
+  _Rb_tree_black_count(const _Rb_tree_node_base* __node,
+                       const _Rb_tree_node_base* __root) throw ()
+  {
+    if (__node == 0)
+      return 0;
+    unsigned int __sum = 0;
+    do 
+      {
+	if (__node->_M_color == _S_black) 
+	  ++__sum;
+	if (__node == __root) 
+	  break;
+	__node = __node->_M_parent;
+      } 
+    while (1);
+    return __sum;
+  }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/valarray.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/valarray.cc
new file mode 100644
index 000000000..4d21ab171
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/valarray.cc
@@ -0,0 +1,109 @@
+// Explicit instantiation file.
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:
+//
+
+#include <valarray>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Some explicit instantiations.
+  template void
+     __valarray_fill(size_t* __restrict__, size_t, const size_t&);
+  
+  template void
+     __valarray_copy(const size_t* __restrict__, size_t, size_t* __restrict__);
+  
+  template valarray<size_t>::valarray(size_t);
+  template valarray<size_t>::valarray(const valarray<size_t>&);
+  template valarray<size_t>::~valarray();
+  template size_t valarray<size_t>::size() const;
+  template size_t& valarray<size_t>::operator[](size_t);
+
+  inline size_t
+  __valarray_product(const valarray<size_t>& __a)
+  {
+    typedef const size_t* __restrict__ _Tp;
+    const size_t __n = __a.size();
+    // XXX: This ugly cast is necessary because
+    //      valarray::operator[]() const return a VALUE!
+    //      Try to get the committee to correct that gross error.
+    valarray<size_t>& __t = const_cast<valarray<size_t>&>(__a);
+    return __valarray_product(&__t[0], &__t[0] + __n);
+  }
+  
+  // Map a gslice, described by its multidimensional LENGTHS
+  // and corresponding STRIDES, to a linear array of INDEXES
+  // for the purpose of indexing a flat, one-dimensional array
+  // representation of a gslice_array.
+  void
+  __gslice_to_index(size_t __o, const valarray<size_t>& __l,
+                    const valarray<size_t>& __s, valarray<size_t>& __i)
+  {
+    // There are as many dimensions as there are strides.
+    const size_t __n = __l.size();
+
+    // Holds current multi-index as we go through the gslice for the
+    // purpose of computing its linear-image.
+    valarray<size_t> __t(__l);
+
+    // Note that this should match the product of all numbers appearing
+    // in __l which describes the multidimensional sizes of the
+    // generalized slice.
+    const size_t __z = __i.size();
+
+    for (size_t __j = 0; __j < __z; ++__j)
+      {
+	// Compute the linear-index image of (t_0, ... t_{n-1}).
+	__i[__j] = __o;
+
+	--__t[__n - 1];
+	__o += __s[__n - 1];
+
+        // Process the next multi-index.  The loop ought to be
+        // backward since we're making a lexicographical visit.
+        for (size_t __k2 = __n - 1; __k2 && !__t[__k2]; --__k2)
+          {
+	    __o -= __s[__k2] * __l[__k2];
+	    __t[__k2] = __l[__k2];
+
+	    --__t[__k2 - 1];
+	    __o += __s[__k2 - 1];
+          }
+      }
+  }
+  
+  gslice::_Indexer::_Indexer(size_t __o, const valarray<size_t>& __l,
+                             const valarray<size_t>& __s)
+  : _M_count(1), _M_start(__o), _M_size(__l), _M_stride(__s),
+    _M_index(__l.size() == 0 ? 0 : __valarray_product(__l))
+  { __gslice_to_index(__o, __l, __s, _M_index); }  
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wlocale-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wlocale-inst.cc
new file mode 100644
index 000000000..cdfed0c3e
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wlocale-inst.cc
@@ -0,0 +1,76 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 22.1  Locales
+//
+
+#include <bits/c++config.h>
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+#define C wchar_t
+#include "locale-inst.cc"
+
+// XXX GLIBCXX_ABI Deprecated
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
+
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
+
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
+		     _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_,
+		     _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
+		     _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
+		     _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
+		     _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
+		     _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wstring-inst.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wstring-inst.cc
new file mode 100644
index 000000000..b753f616f
--- /dev/null
+++ b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.6/src/wstring-inst.cc
@@ -0,0 +1,35 @@
+// wide string support -*- C++ -*-
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882: 21  Strings library
+//
+
+#include <bits/c++config.h>
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+#define C wchar_t
+#include "string-inst.cc"
+#endif
diff --git a/l4/pkg/libsupc++-minimal/Control b/l4/pkg/libsupc++-minimal/Control
new file mode 100644
index 000000000..09438b94d
--- /dev/null
+++ b/l4/pkg/libsupc++-minimal/Control
@@ -0,0 +1,4 @@
+provides: libsupc++_minimal
+requires: libstdc++-headers libc_minimal
+source-pkg: libsupc++
+maintainer: warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/libsupc++-minimal/Makefile b/l4/pkg/libsupc++-minimal/Makefile
new file mode 100644
index 000000000..396bcc091
--- /dev/null
+++ b/l4/pkg/libsupc++-minimal/Makefile
@@ -0,0 +1,15 @@
+PKGDIR ?= .
+L4DIR  ?= $(PKGDIR)/../..
+
+STDCXX_PKG_DIR =  $(PKGDIR_ABS)/../libstdc++-v3
+SUPCXX_PKG_DIR =  $(PKGDIR_ABS)/../libsupc++
+
+TARGET          = libsupc++_minimal.a
+PC_FILENAME     = libsupc++_minimal
+PC_LIBS		= -lsupc++_minimal
+REQUIRES_LIBS   = libc_minimal
+DEFINES        += -DL4_MINIMAL_LIBC
+
+include $(PKGDIR)/../libsupc++/build/Makefile
+
+vpath %.cc $(SUPCXX_PKG_DIR)/build
diff --git a/l4/pkg/libsupc++/build/Makefile b/l4/pkg/libsupc++/build/Makefile
index 20b97a026..96c30c67a 100644
--- a/l4/pkg/libsupc++/build/Makefile
+++ b/l4/pkg/libsupc++/build/Makefile
@@ -2,14 +2,18 @@ PKGDIR ?= 	..
 L4DIR  ?= 	$(PKGDIR)/../..
 
 TARGET         ?= libsupc++.a libsupc++.so
-CONTRIB_INCDIR  = libstdc++-v3
 PC_FILENAME    ?= libsupc++
+PC_LIBS        ?= -lsupc++
+REQUIRES_LIBS  ?= libc
+
+CONTRIB_INCDIR  = libstdc++-v3
 
 STDCXX_PKG_DIR ?= $(PKGDIR_ABS)/../libstdc++-v3
 
 STDCXX_SRC_DIR ?= $(STDCXX_CONTRIB_DIR)/libsupc++
 VPATH_SRC_BASE  = $(STDCXX_SRC_DIR)
-PRIVATE_INCDIR  = $(STDCXX_PKG_DIR)/contrib/gcc-$(STDCXX_CONTRIB_VERSION)
+PRIVATE_INCDIR  = $(STDCXX_PKG_DIR)/contrib/gcc-$(STDCXX_CONTRIB_VERSION) \
+		  $(STDCXX_SRC_DIR)
 
 SRC_CC := \
 del_op.cc \
@@ -48,6 +52,7 @@ include $(L4DIR)/mk/lib.mk
 include $(STDCXX_PKG_DIR)/contrib.inc
 include $(SUPCXX_PKG_DIR)/build/Makefile-$(STDCXX_CONTRIB_VERSION)
 
+$(GENERAL_D_LOC): $(SUPCXX_PKG_DIR)/build/Makefile-$(STDCXX_CONTRIB_VERSION) $(STDCXX_PKG_DIR)/contrib.inc
+
 vpath %.cc $(STDCXX_SRC_DIR)
 vpath %.cc $(SRC_DIR)
-
diff --git a/l4/pkg/libsupc++/build/Makefile-4.6 b/l4/pkg/libsupc++/build/Makefile-4.6
new file mode 100644
index 000000000..8025973ff
--- /dev/null
+++ b/l4/pkg/libsupc++/build/Makefile-4.6
@@ -0,0 +1,21 @@
+
+CXXFLAGS += -std=c++0x
+
+SRC_CC += array_type_info.cc \
+atexit_arm.cc \
+bad_alloc.cc \
+bad_cast.cc \
+bad_typeid.cc \
+class_type_info.cc \
+dyncast.cc \
+enum_type_info.cc \
+function_type_info.cc \
+fundamental_type_info.cc \
+pbase_type_info.cc \
+pmem_type_info.cc \
+pointer_type_info.cc \
+si_class_type_info.cc \
+vmi_class_type_info.cc \
+guard_error.cc \
+hash_bytes.cc
+
diff --git a/l4/pkg/loader/server/src/Makefile b/l4/pkg/loader/server/src/Makefile
index e5019695e..b2968aaea 100644
--- a/l4/pkg/loader/server/src/Makefile
+++ b/l4/pkg/loader/server/src/Makefile
@@ -3,7 +3,7 @@ L4DIR		?= $(PKGDIR)/../..
 
 TARGET		= loader
 SRC_CC		= main.cc slab_alloc.cc \
-                  region.cc app_task.cc remote_mem.cc name_space.cc \
+                  region.cc app_task.cc name_space.cc \
 		  log.cc global.cc \
 		  sched_proxy.cc alloc.cc
 LDFLAGS +=
diff --git a/l4/pkg/log/lib/src/Makefile b/l4/pkg/log/lib/src/Makefile
index bd149a995..784bc6feb 100644
--- a/l4/pkg/log/lib/src/Makefile
+++ b/l4/pkg/log/lib/src/Makefile
@@ -3,6 +3,5 @@ L4DIR ?= $(PKGDIR)/../..
 
 TARGET	      = lib4log.a
 SRC_C	      = log.c
-REQUIRES_LIBS = libc
 
 include $(L4DIR)/mk/lib.mk
diff --git a/l4/pkg/lua/lib/build++/Makefile b/l4/pkg/lua/lib/build++/Makefile
index a1fd6edbf..7771a0ee3 100644
--- a/l4/pkg/lua/lib/build++/Makefile
+++ b/l4/pkg/lua/lib/build++/Makefile
@@ -8,10 +8,15 @@ CONTRIB_INCDIR = lua
 REQUIRES_LIBS  = l4re_c-util
 PC_FILENAME = lua++
 
-DEFS = -DARCH_$(ARCH)
+OPTS := 
+
 
 all::
 
+include $(L4DIR)/mk/lib.mk
+
+DEFS = -DARCH_$(ARCH) $(OPTS)
+
 liblua.a: $(SRC_DIR)/Makefile $(SRC_DIR)/Makefile.lua FORCE
 	$(MAKE) -f $(SRC_DIR)/Makefile.lua SRC_DIR=$(SRC_DIR) \
 	  L4_DEFINES="$(DEFS)" L4_INCLUDES="$(LIBCINCDIR) \
@@ -24,6 +29,5 @@ liblua++.a: liblua.a
 clean::
 	$(MAKE) -f $(SRC_DIR)/Makefile.lua SRC_DIR=$(SRC_DIR) clean
 
-include $(L4DIR)/mk/lib.mk
 
 all:: $(PC_FILES)
diff --git a/l4/pkg/lua/lib/build/Makefile b/l4/pkg/lua/lib/build/Makefile
index 4d78fb1b7..4c80597b1 100644
--- a/l4/pkg/lua/lib/build/Makefile
+++ b/l4/pkg/lua/lib/build/Makefile
@@ -6,11 +6,14 @@ INSTALL_TARGET = liblua.a
 PC_LIBS       := -llua
 CONTRIB_INCDIR = lua
 REQUIRES_LIBS  = l4re_c-util
-
-DEFS = -DARCH_$(ARCH)
+OPTS :=
 
 all::
 
+include $(L4DIR)/mk/lib.mk
+
+DEFS = -DARCH_$(ARCH) $(OPTS)
+
 liblua.a: $(SRC_DIR)/Makefile $(SRC_DIR)/Makefile.lua FORCE
 	$(MAKE) -f $(SRC_DIR)/Makefile.lua SRC_DIR=$(SRC_DIR) \
 	  L4_DEFINES="$(DEFS)" L4_INCLUDES="$(LIBCINCDIR) \
@@ -20,6 +23,5 @@ liblua.a: $(SRC_DIR)/Makefile $(SRC_DIR)/Makefile.lua FORCE
 clean::
 	$(MAKE) -f $(SRC_DIR)/Makefile.lua SRC_DIR=$(SRC_DIR) clean
 
-include $(L4DIR)/mk/lib.mk
 
 all:: $(PC_FILES)
diff --git a/l4/pkg/lxfuxlibc/include/lxfuxlc.h b/l4/pkg/lxfuxlibc/include/lxfuxlc.h
index ee7150fcd..ecd6cb52b 100644
--- a/l4/pkg/lxfuxlibc/include/lxfuxlc.h
+++ b/l4/pkg/lxfuxlibc/include/lxfuxlc.h
@@ -262,6 +262,8 @@ struct lx_sockaddr_un {
 /* 301 */ extern int           lx_unlinkat(int fd, const char *name, int flags);
 /* 302 */ extern int           lx_renameat(int ofd, const char *oname, int nfd, const char *nname);
 /* 307 */ extern int           lx_faccessat(int dfd, const char *filename, int mode);
+/* 333 */ extern lx_ssize_t    lx_preadv(int fd, const struct lx_iovec *iov, int cnt, unsigned long pl, unsigned long ph);
+/* 334 */ extern lx_ssize_t    lx_pwritev(int fd, const struct lx_iovec *iov, int cnt, unsigned long pl, unsigned long ph);
 /*
  * Wrapper functions
  */
diff --git a/l4/pkg/lxfuxlibc/lib/libc_be/ux.cc b/l4/pkg/lxfuxlibc/lib/libc_be/ux.cc
index 11c9cf34e..a146e8e75 100644
--- a/l4/pkg/lxfuxlibc/lib/libc_be/ux.cc
+++ b/l4/pkg/lxfuxlibc/lib/libc_be/ux.cc
@@ -60,6 +60,9 @@ public:
 
   ssize_t readv(const struct iovec*, int iovcnt) throw();
   ssize_t writev(const struct iovec*, int iovcnt) throw();
+  ssize_t preadv(const struct iovec *iov, int iovcnt, off64_t offset) throw();
+  ssize_t pwritev(const struct iovec *iov, int iovcnt, off64_t offset) throw();
+
   off64_t lseek64(off64_t, int) throw();
   int fstat64(struct stat64 *buf) const throw();
 
@@ -234,6 +237,24 @@ Ux_file::writev(const struct iovec *iov, int cnt) throw()
   return lx_writev(_fd, (struct lx_iovec*)iov, cnt);
 }
 
+ssize_t
+Ux_file::preadv(const struct iovec *iov, int iovcnt, off64_t offset) throw()
+{
+  for (int i = 0; i < iovcnt; ++i)
+    l4_touch_rw(iov[i].iov_base, iov[i].iov_len);
+
+  return lx_preadv(_fd, (struct lx_iovec*)iov, iovcnt, offset, offset << 32);
+}
+
+ssize_t
+Ux_file::pwritev(const struct iovec *iov, int iovcnt, off64_t offset) throw()
+{
+  for (int i = 0; i < iovcnt; ++i)
+    l4_touch_ro(iov[i].iov_base, iov[i].iov_len);
+
+  return lx_pwritev(_fd, (struct lx_iovec*)iov, iovcnt, offset, offset << 32);
+}
+
 off64_t
 Ux_file::lseek64(off64_t offset, int whence) L4_NOTHROW
 {
@@ -292,6 +313,6 @@ public:
   }
 };
 
-static Ux_fs _ux_fs;
+static Ux_fs _ux_fs L4RE_VFS_FILE_SYSTEM_ATTRIBUTE;
 
 }
diff --git a/l4/pkg/lxfuxlibc/lib/src/lxfuxlc.c b/l4/pkg/lxfuxlibc/lib/src/lxfuxlc.c
index ce9e47865..7408a3508 100644
--- a/l4/pkg/lxfuxlibc/lib/src/lxfuxlc.c
+++ b/l4/pkg/lxfuxlibc/lib/src/lxfuxlc.c
@@ -56,6 +56,8 @@
 #define __NR_unlinkat           301
 #define __NR_renameat           302
 #define __NR_faccessat          307
+#define __NR_preadv             333
+#define __NR_pwritev            334
 
 
 /* Some stuff pilfered from linux/include/asm-i386/unistd.h */
@@ -226,6 +228,8 @@ __lx_syscall3(int, mkdirat, int, fd, const char *, name, int, mode);
 __lx_syscall3(int, unlinkat, int, fd, const char *, name, int, flags);
 __lx_syscall4(int, renameat, int, ofd, const char *, oname, int, nfd, const char *, nname);
 __lx_syscall3(int, faccessat, int, dfd, const char *, filename, int, mode);
+__lx_syscall5(lx_ssize_t, preadv, int, fd, const struct lx_iovec*, iov, int, cnt, unsigned long, pl, unsigned long, ph);
+__lx_syscall5(lx_ssize_t, pwritev, int, fd, const struct lx_iovec*, iov, int, cnt, unsigned long, pl, unsigned long, ph);
 
 #ifdef __i386__
 int lx_ftruncate64(int, unsigned long long);
diff --git a/l4/pkg/mag-gfx/include/geometry b/l4/pkg/mag-gfx/include/geometry
index 801570c58..153f9d937 100644
--- a/l4/pkg/mag-gfx/include/geometry
+++ b/l4/pkg/mag-gfx/include/geometry
@@ -269,7 +269,7 @@ public:
   Flags(E e) : _v(e) {}
   Flags(Flags const &o) : _v(o._v) {}
 
-  operator Private_bool * () const { return (Private_bool *)_v; }
+  operator Private_bool * () const { return (Private_bool *)(long)_v; }
   bool operator ! () const { return !_v; }
   Flags operator | (Flags const &o) const { return Flags(_v | o._v, true); }
   Flags operator | (Enum e) const { return Flags(_v | (unsigned)e, true); }
diff --git a/l4/pkg/mag/Control b/l4/pkg/mag/Control
index 41bdc152e..6fe9798d7 100644
--- a/l4/pkg/mag/Control
+++ b/l4/pkg/mag/Control
@@ -1,4 +1,4 @@
 provides: libmag
-requires: l4re libc_r libsupc++_r stdlibs-sh input l4util mag-gfx libstdc++
+requires: l4re libc stdlibs-sh input l4util mag-gfx libstdc++
           lua++
 Maintainer: warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/mag/include/server/session b/l4/pkg/mag/include/server/session
index bd4fc27e6..56a2398d8 100644
--- a/l4/pkg/mag/include/server/session
+++ b/l4/pkg/mag/include/server/session
@@ -29,10 +29,17 @@ private:
 
   cxx::Notifier *_ntfy;
 
+protected:
+  void flags(unsigned setmask, unsigned clearmask)
+  {
+    _flags = (_flags & ~clearmask) | setmask;
+  }
+
 public:
   enum Flags
   {
     F_ignore = 0x01,
+    F_default_background = 0x02,
   };
 
   struct Property_handler
@@ -57,6 +64,8 @@ public:
       _flags &= ~F_ignore;
   }
 
+  unsigned flags() const { return _flags; }
+
   char const *label() const { return _label; }
   Mag_gfx::Rgb32::Color color() const { return _color; }
   View *background() const { return _bg; }
diff --git a/l4/pkg/mag/plugins/client_fb/Makefile b/l4/pkg/mag/plugins/client_fb/Makefile
index ada7edafb..7a2211d14 100644
--- a/l4/pkg/mag/plugins/client_fb/Makefile
+++ b/l4/pkg/mag/plugins/client_fb/Makefile
@@ -3,6 +3,5 @@ L4DIR  ?= $(PKGDIR)/../..
 
 PLUGIN := client_fb
 SRC_CC := client_fb.cc service.cc
-L4_MULTITHREADED=y
 
 include $(PKGDIR)/plugins/plugin.mk
diff --git a/l4/pkg/mag/plugins/mag_client/mag_client.cc b/l4/pkg/mag/plugins/mag_client/mag_client.cc
index 176fe41ca..64436ec86 100644
--- a/l4/pkg/mag/plugins/mag_client/mag_client.cc
+++ b/l4/pkg/mag/plugins/mag_client/mag_client.cc
@@ -97,6 +97,8 @@ public:
   L4::Cap<void> rcv_cap() const { return _core->rcv_cap(); }
 
   void destroy();
+
+  static void set_default_background(Session *_s, Property_handler const *, cxx::String const &);
 };
 
 
@@ -319,6 +321,21 @@ void Mag_client::start(Core_api *core)
     printf("Plugin: Mag_client service started\n");
 }
 
+void Mag_goos::set_default_background(Session *_s, Property_handler const *, cxx::String const &)
+{
+  Mag_goos *s = static_cast<Mag_goos *>(_s);
+
+  s->flags(F_default_background, 0);
+}
+
+namespace {
+  Session::Property_handler const _opts[] =
+    { { "default-background", false,  &Mag_goos::set_default_background },
+      { "dfl-bg",             false,  &Mag_goos::set_default_background },
+      { 0, 0, 0 }
+    };
+};
+
 int
 Mag_client::dispatch(l4_umword_t, L4::Ipc_iostream &ios)
 {
@@ -334,9 +351,9 @@ Mag_client::dispatch(l4_umword_t, L4::Ipc_iostream &ios)
 	    has_proto(L4::Ipc::read<L4::Factory::Proto>(ios)))
 	{
 	  L4::Ipc::Istream_copy cp_is = ios;
-	  
+
 	  cxx::Ref_ptr<Mag_goos> cf(new Mag_goos(_core));
-	  _core->set_session_options(cf.get(), cp_is);
+	  _core->set_session_options(cf.get(), cp_is, _opts);
 
 	  _core->register_session(cf.get());
 	  _core->registry()->register_obj(cf);
@@ -613,7 +630,6 @@ void
 Client_view::draw(Canvas *c, View_stack const *, Mode mode) const
 {
   Canvas::Mix_mode op = mode.flat() ? Canvas::Solid : Canvas::Mixed;
-  Rgb32::Color frame_color = focused() ? Rgb32::White : View::frame_color();
   if (mode.xray() && !mode.kill() && focused())
     op = Canvas::Solid;
 
diff --git a/l4/pkg/mag/server/src/Makefile b/l4/pkg/mag/server/src/Makefile
index 1fcc99cff..88b22f53d 100644
--- a/l4/pkg/mag/server/src/Makefile
+++ b/l4/pkg/mag/server/src/Makefile
@@ -23,7 +23,6 @@ REQUIRES_LIBS += $(STATIC_PLUGINS)
 
 CPPFLAGS += -fvisibility=hidden
 
-L4_MULTITHREADED = y
 
 include $(L4DIR)/mk/prog.mk
 
diff --git a/l4/pkg/mag/server/src/main.cc b/l4/pkg/mag/server/src/main.cc
index a42284429..5e119e8c2 100644
--- a/l4/pkg/mag/server/src/main.cc
+++ b/l4/pkg/mag/server/src/main.cc
@@ -77,15 +77,10 @@ private:
   public:
     explicit Del_handler(Object_gc *gc) : gc(gc) {}
 
-    int dispatch(l4_umword_t, L4::Ipc_iostream &s)
+    int dispatch(l4_umword_t, L4::Ipc_iostream &)
     {
-      l4_msgtag_t t;
-      s >> t;
-      if (t.label() != L4_PROTO_IRQ)
-	return -L4_EBADPROTO;
-
       gc->gc_step();
-      return 0;
+      return -L4_ENOREPLY;
     }
   };
 
diff --git a/l4/pkg/mag/server/src/user_state.cc b/l4/pkg/mag/server/src/user_state.cc
index ed5d3af5f..c3d015fdb 100644
--- a/l4/pkg/mag/server/src/user_state.cc
+++ b/l4/pkg/mag/server/src/user_state.cc
@@ -283,6 +283,7 @@ luaL_Reg const Lua_view_proxy::_ops[] =
 
 }
 
+#if 0
 static void dump_stack(lua_State *l)
 {
   int i = lua_gettop(l);
@@ -308,6 +309,7 @@ static void dump_stack(lua_State *l)
       --i;
     }
 }
+#endif
 
 template<>
 struct Lua_register_ops<Lua_user_state>
diff --git a/l4/pkg/mag/server/src/view_stack.cc b/l4/pkg/mag/server/src/view_stack.cc
index 77d794284..4ac41d016 100644
--- a/l4/pkg/mag/server/src/view_stack.cc
+++ b/l4/pkg/mag/server/src/view_stack.cc
@@ -91,7 +91,11 @@ View_stack::next_view(View const *v, View const *bg) const
       if (!v)
 	return 0;
 
-      if (v->session() && v->session()->ignore())
+      unsigned sf = 0;
+      if (v->session())
+        sf = v->session()->flags();
+
+      if (sf & Session::F_ignore)
 	continue;
 
       if (!v->background())
@@ -99,6 +103,9 @@ View_stack::next_view(View const *v, View const *bg) const
 
       if (v == _background || v == bg)
 	return v;
+
+      if (!bg && (sf & Session::F_default_background))
+        return v;
     }
 
   return 0;
diff --git a/l4/pkg/moe/Control b/l4/pkg/moe/Control
index c8d869308..be88c44d0 100644
--- a/l4/pkg/moe/Control
+++ b/l4/pkg/moe/Control
@@ -1,4 +1,4 @@
-requires: l4re l4sys libc libsupc++ libsigma0 libloader libkproxy
+requires: l4re l4sys libc_minimal libsupc++_minimal libsigma0 libloader libkproxy
           libc_be_minimal_log_io
 source-pkg: boehm_gc
 maintainer: adam@os.inf.tu-dresden.de, warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/moe/server/libgc/Make.rules b/l4/pkg/moe/server/libgc/Make.rules
index bb889f985..7e1d9094f 100644
--- a/l4/pkg/moe/server/libgc/Make.rules
+++ b/l4/pkg/moe/server/libgc/Make.rules
@@ -3,6 +3,7 @@ NOTARGETSTOINSTALL = 1
 
 PRIVATE_INCDIR     = $(SRC_DIR)/include
 BOEHM_GC_SRCDIR    = $(L4DIR)/pkg/boehm_gc
+DEFINES           += -DL4_MINIMAL_LIBC
 
 include $(BOEHM_GC_SRCDIR)/mk/build.inc
 
diff --git a/l4/pkg/moe/server/libgc/include/private/gcconfig.h b/l4/pkg/moe/server/libgc/include/private/gcconfig.h
index 045a1202b..0dd48a3b9 100644
--- a/l4/pkg/moe/server/libgc/include/private/gcconfig.h
+++ b/l4/pkg/moe/server/libgc/include/private/gcconfig.h
@@ -1,5 +1,19 @@
 #pragma once
 
+#include <l4/sys/types.h>
+#include <l4/sys/kip.h>
+
+extern l4_kernel_info_t *_current_kip;
+
+#ifndef __L4
+#  define __L4
+#endif
+
+#define CLOCK_TYPE l4_cpu_time_t
+#define CLOCKS_PER_SEC 1000000
+#define MS_TIME_DIFF(a,b) ((long)((a)-(b)))
+#define GET_TIME(x) x = _current_kip->clock
+
 #define OS_TYPE "L4"
 #define MARK_BIT_PER_GRANULE
 #undef MARK_BIT_PER_OBJ
diff --git a/l4/pkg/moe/server/src/Makefile b/l4/pkg/moe/server/src/Makefile
index 6b38eb1d3..bebc524bc 100644
--- a/l4/pkg/moe/server/src/Makefile
+++ b/l4/pkg/moe/server/src/Makefile
@@ -7,7 +7,7 @@ RELOC_PHYS      = y
 SRC_CC		= main.cc page_alloc.cc dataspace.cc dataspace_cont.cc \
                   dataspace_annon.cc globals.cc \
 		  alloc.cc boot_fs.cc dataspace_static.cc dataspace_util.cc \
-		  region.cc remote_mem.cc debug.cc \
+		  region.cc debug.cc \
 		  loader.cc loader_elf.cc exception.cc \
 		  app_task.cc dataspace_noncont.cc pages.cc \
 		  name_space.cc mem.cc log.cc sched_proxy.cc \
@@ -19,17 +19,12 @@ BOEHM_GC_SRCDIR    = $(L4DIR)/pkg/boehm_gc
 PRIVATE_INCDIR    += $(SRC_DIR)/../libgc/include
 include $(BOEHM_GC_SRCDIR)/mk/includes.inc
 
-REQUIRES_LIBS  := libkproxy libloader l4re-util libsigma0 cxx_io \
-                  cxx_libc_io libsupc++ libc_be_minimal_log_io
+REQUIRES_LIBS  := libkproxy libloader l4re-util libsigma0 \
+                  cxx_io cxx_libc_io libc_be_minimal_log_io libsupc++_minimal
 LIBS           += -L$(OBJ_DIR)/../libgc/OBJ-$(SYSTEM)
 EXTRA_LIBS     := -ll4sys-direct -lmoe_gc
+DEFINES        += -DL4_CXX_NO_EXCEPTION_BACKTRACE -DL4_MINIMAL_LIBC
+LDFLAGS        += --entry=_real_start
 
-DEFINES        += -DL4_CXX_NO_EXCEPTION_BACKTRACE
-
-ifeq ($(ARCH),ppc32)
-LDSCRIPT	= $(SRC_DIR)/ARCH-$(ARCH)/main.ld
-else
-LDSCRIPT 	= $(SRC_DIR)/main.ld
-endif
 
 include $(L4DIR)/mk/prog.mk
diff --git a/l4/pkg/moe/server/src/boot_fs.cc b/l4/pkg/moe/server/src/boot_fs.cc
index 3c5d64554..42304e070 100644
--- a/l4/pkg/moe/server/src/boot_fs.cc
+++ b/l4/pkg/moe/server/src/boot_fs.cc
@@ -11,6 +11,8 @@
 #include <l4/util/util.h>
 #include <l4/cxx/iostream>
 #include <l4/cxx/l4iostream>
+#include <l4/sigma0/sigma0.h>
+#include <l4/util/splitlog2.h>
 
 #include "boot_fs.h"
 #include "dataspace_static.h"
@@ -19,6 +21,7 @@
 #include "name_space.h"
 #include "debug.h"
 
+
 #include <cstring>
 #include <cstdlib>
 
@@ -84,6 +87,22 @@ Moe::Boot_fs::init_stage1()
   l4_touch_ro(mbi,10);
 }
 
+static long
+s0_request_ram(l4_addr_t s, l4_addr_t, int order)
+{
+  l4_msg_regs_t *m = l4_utcb_mr();
+  l4_buf_regs_t *b = l4_utcb_br();
+  l4_msgtag_t tag = l4_msgtag(L4_PROTO_SIGMA0, 2, 0, 0);
+  m->mr[0] = SIGMA0_REQ_FPAGE_RAM;
+  m->mr[1] = l4_fpage(s, order, L4_FPAGE_RWX).raw;
+
+  b->bdr   = 0;
+  b->br[0] = L4_ITEM_MAP;
+  b->br[1] = l4_fpage(s, order, L4_FPAGE_RWX).raw;
+  tag = l4_ipc_call(Sigma0_cap, l4_utcb(), tag, L4_IPC_NEVER);
+  return 0;
+}
+
 void
 Moe::Boot_fs::init_stage2()
 {
@@ -101,20 +120,34 @@ Moe::Boot_fs::init_stage2()
   char *dirinfo = (char *)Single_page_alloc_base::_alloc(dirinfo_space, L4_PAGESHIFT);
   unsigned dirinfo_size = 0;
 
-  l4util_mb_mod_t const *modules = (l4util_mb_mod_t const *)mbi->mods_addr;
+  l4util_mb_mod_t const *modules = (l4util_mb_mod_t const *)(unsigned long)mbi->mods_addr;
   unsigned num_modules = mbi->mods_count;
+
+  l4_addr_t m_low = -1;
+  l4_addr_t m_high = 0;
   for (unsigned mod = 3; mod < num_modules; ++mod)
     {
-      l4_touch_ro((void*)modules[mod].mod_start,
-	  modules[mod].mod_end - modules[mod].mod_start);
+      l4_addr_t s = modules[mod].mod_start;
+      if (s != m_high + 1 && m_low != (l4_addr_t)-1)
+	{
+	  l4util_splitlog2_hdl(m_low, m_high, s0_request_ram);
+	  m_low = -1;
+	  m_high = 0;
+	}
+
+      if (m_low > s)
+	m_low = s;
 
       //l4_addr_t end = l4_round_page(modules[mod].mod_end);
       l4_addr_t end = modules[mod].mod_end;
 
-      Names::Name name = cmdline_to_name((char const *)modules[mod].cmdline);
+      if (m_high < l4_round_page(end))
+	m_high = l4_round_page(end);
+
+      Names::Name name = cmdline_to_name((char const *)(unsigned long)modules[mod].cmdline);
 
       Moe::Dataspace_static *rf;
-      rf = new Moe::Dataspace_static((void*)modules[mod].mod_start,
+      rf = new Moe::Dataspace_static((void*)(unsigned long)modules[mod].mod_start,
                                      end - modules[mod].mod_start,
                                      Dataspace::Cow_enabled);
       object = object_pool.cap_alloc()->alloc(rf);
@@ -143,11 +176,14 @@ Moe::Boot_fs::init_stage2()
       while (1);
 
 
-      L4::cout << "  BOOTFS: [" << (void*)modules[mod].mod_start << "-"
+      L4::cout << "  BOOTFS: [" << (void*)(unsigned long)modules[mod].mod_start << "-"
                << (void*)end << "] " << object << " "
                << name << "\n";
     }
 
+  if (m_low != (l4_addr_t)-1)
+    l4util_splitlog2_hdl(m_low, m_high, s0_request_ram);
+
   Moe::Dataspace_static *dirinfods;
   dirinfods = new Moe::Dataspace_static((void *)dirinfo,
                                         dirinfo_size,
diff --git a/l4/pkg/moe/server/src/dataspace.cc b/l4/pkg/moe/server/src/dataspace.cc
index 45373b0b8..4f8ceb505 100644
--- a/l4/pkg/moe/server/src/dataspace.cc
+++ b/l4/pkg/moe/server/src/dataspace.cc
@@ -12,7 +12,6 @@
 #include "globals.h"
 #include "page_alloc.h"
 
-
 #include <l4/re/dataspace-sys.h>
 #include <l4/re/protocols>
 #include <l4/re/util/meta>
diff --git a/l4/pkg/moe/server/src/dataspace_cont.cc b/l4/pkg/moe/server/src/dataspace_cont.cc
index bf406f70c..5b5d63178 100644
--- a/l4/pkg/moe/server/src/dataspace_cont.cc
+++ b/l4/pkg/moe/server/src/dataspace_cont.cc
@@ -33,7 +33,7 @@ Moe::Dataspace_cont::address(l4_addr_t offset,
     return Address(-L4_ERANGE);
 
   min = l4_trunc_page(min);
-  max = l4_round_page(max);
+  //max = l4_round_page(max);
 
   l4_addr_t adr = l4_addr_t(_start) + offset;
   unsigned char order = L4_PAGESHIFT;
@@ -51,7 +51,7 @@ Moe::Dataspace_cont::address(l4_addr_t offset,
       if (map_base < min)
 	break;
 
-      if (map_base + (1UL << (order + 1)) -1 > max -1)
+      if (map_base + (1UL << (order + 1)) -1 > max)
 	break;
 
       l4_addr_t mask = ~(~0UL << (order + 1));
diff --git a/l4/pkg/moe/server/src/gc_support.cc b/l4/pkg/moe/server/src/gc_support.cc
index eb8ac1283..1d7bf528b 100644
--- a/l4/pkg/moe/server/src/gc_support.cc
+++ b/l4/pkg/moe/server/src/gc_support.cc
@@ -1,6 +1,7 @@
 
 #include <l4/sys/ipc_gate>
 #include <stdio.h>
+#include <unistd.h>
 #include <l4/sys/kdebug.h>
 
 #include "globals.h"
diff --git a/l4/pkg/moe/server/src/globals.h b/l4/pkg/moe/server/src/globals.h
index 68ce519f1..5f40b3a88 100644
--- a/l4/pkg/moe/server/src/globals.h
+++ b/l4/pkg/moe/server/src/globals.h
@@ -19,7 +19,7 @@ namespace Moe { class Dataspace; };
 
 extern L4::Cap<void> root_name_space_obj;
 extern Moe::Dataspace *kip_ds;
-extern l4_kernel_info_t *_current_kip;
+extern "C" l4_kernel_info_t *_current_kip;
 inline l4_kernel_info_t const *kip() { return _current_kip; }
 
 extern Object_pool object_pool;
diff --git a/l4/pkg/moe/server/src/loader.cc b/l4/pkg/moe/server/src/loader.cc
index 90924e681..2fd7ec952 100644
--- a/l4/pkg/moe/server/src/loader.cc
+++ b/l4/pkg/moe/server/src/loader.cc
@@ -120,7 +120,7 @@ void Moe_app_model::map_initial_caps(L4::Cap<L4::Task> t, l4_cap_idx_t s)
   for (Moe::Name_space::Const_iterator i = root_name_space()->begin();
        i != root_name_space()->end(); ++i)
     {
-      chksys(t->map(L4Re::This_task, (*i).obj()->cap().fpage(), L4::Cap<void>(s).snd_base()));
+      chksys(t->map(L4Re::This_task, (*i).obj()->cap().fpage(L4_CAP_FPAGE_RWS), L4::Cap<void>(s).snd_base()));
       s += L4_CAP_OFFSET;
     }
 }
@@ -139,7 +139,10 @@ Moe_app_model::prog_attach_ds(l4_addr_t addr, unsigned long size,
                               Const_dataspace ds, unsigned long offset,
                               unsigned flags, char const *what)
 {
-  if (!_stack.add(addr, size, _task->rm(), ds, offset, flags, 0, what))
+   void *x = _task->rm()->attach((void*)addr, size,
+                                 Region_handler(ds, L4_INVALID_CAP, offset, flags),
+                       flags);
+  if (x == L4_INVALID_PTR)
     chksys(-L4_ENOMEM, what);
 }
 
diff --git a/l4/pkg/moe/server/src/main.cc b/l4/pkg/moe/server/src/main.cc
index 6ec2c7f3d..81bafd6e2 100644
--- a/l4/pkg/moe/server/src/main.cc
+++ b/l4/pkg/moe/server/src/main.cc
@@ -71,6 +71,8 @@ static Dbg warn(Dbg::Warn);
 static
 l4_kernel_info_t const *map_kip()
 {
+  // map the KIP 1:1, because moe hast all memory 1:1 and the kip would
+  // possibly overlap with 1:1 memory if we have lots of RAM.
   _current_kip = l4sigma0_map_kip(Sigma0_cap, 0, L4_WHOLE_ADDRESS_SPACE);
 
   if (!_current_kip)
@@ -79,37 +81,34 @@ l4_kernel_info_t const *map_kip()
       exit(1);
     }
 
-
-  boot.printf("KIP @%p\n",kip());
+  boot.printf("KIP @%p\n", kip());
   return kip();
 }
 
 static
 char *my_cmdline()
 {
-  l4util_mb_info_t const *_mbi_ = (l4util_mb_info_t const *)kip()->user_ptr;
+  l4util_mb_info_t const *_mbi_ = (l4util_mb_info_t const *)(unsigned long)kip()->user_ptr;
   boot.printf("mbi @%p\n", _mbi_);
-  l4util_mb_mod_t const *modules = (l4util_mb_mod_t const *)_mbi_->mods_addr;
+  l4util_mb_mod_t const *modules = (l4util_mb_mod_t const *)(unsigned long)_mbi_->mods_addr;
   unsigned num_modules = _mbi_->mods_count;
   char *cmdline = 0;
 
   for (unsigned mod = 0; mod < num_modules; ++mod)
-    {
-      if (strstr((char const *)modules[mod].cmdline, PROG))
-	{
-	  cmdline = (char *)modules[mod].cmdline;
-	  break;
-	}
-    }
+    if (strstr((char const *)(unsigned long)modules[mod].cmdline, PROG))
+      {
+        cmdline = (char *)(unsigned long)modules[mod].cmdline;
+        break;
+      }
 
   if (!cmdline)
-    cmdline = (char *)_mbi_->cmdline;
+    cmdline = (char *)(unsigned long)_mbi_->cmdline;
 
   static char default_cmdline[] = "";
 
   if (!cmdline)
     {
-      Dbg(Dbg::Warn).printf("no command line found, use default!\n");
+      Dbg(Dbg::Warn).printf("No command line found, using default!\n");
       cmdline = default_cmdline;
     }
 
diff --git a/l4/pkg/moe/server/src/remote_mem.h b/l4/pkg/moe/server/src/remote_mem.h
index 4f9888f05..201ac280d 100644
--- a/l4/pkg/moe/server/src/remote_mem.h
+++ b/l4/pkg/moe/server/src/remote_mem.h
@@ -8,25 +8,10 @@
  */
 #pragma once
 
-#include <l4/sys/types.h>
-#include <l4/re/l4aux.h>
-#include <cstddef>
 #include <l4/libloader/remote_mem>
 
-class Region_map;
-
 namespace Moe {
 
-class Dataspace;
-
-class Stack : public Ldr::Remote_stack<>
-{
-public:
-  explicit Stack(char *p = 0) : Ldr::Remote_stack<>(p) {}
-  l4_addr_t add(l4_addr_t start, l4_umword_t size, Region_map *rm,
-                Moe::Dataspace const *m, unsigned long offs,
-                unsigned flags, unsigned char align,
-                char const *what);
-};
+typedef Ldr::Remote_stack<> Stack;
 
 }
diff --git a/l4/pkg/moe/server/src/vesa_fb.cc b/l4/pkg/moe/server/src/vesa_fb.cc
index e68c65fd6..06a458056 100644
--- a/l4/pkg/moe/server/src/vesa_fb.cc
+++ b/l4/pkg/moe/server/src/vesa_fb.cc
@@ -58,8 +58,8 @@ Vesa_fb::Vesa_fb(l4util_mb_info_t *mbi)
 {
   if (!(mbi->flags & L4UTIL_MB_VIDEO_INFO))
     return;
-  vbe = (l4util_mb_vbe_ctrl_t*)mbi->vbe_ctrl_info;
-  vbi = (l4util_mb_vbe_mode_t*)mbi->vbe_mode_info;
+  vbe = (l4util_mb_vbe_ctrl_t*)(unsigned long)mbi->vbe_ctrl_info;
+  vbi = (l4util_mb_vbe_mode_t*)(unsigned long)mbi->vbe_mode_info;
   if (!vbe || !vbi)
     return;
 
@@ -109,7 +109,7 @@ Vesa_fb::Vesa_fb(l4util_mb_info_t *mbi)
   root_name_space()->register_obj("vesa", L4Re::Util::Names::Obj(0, this));
 
   L4::cout << "  VESAFB: " << obj_cap() << _fb_ds
-    << " @" << (void*)vbi->phys_base
+    << " @" << (void*)(unsigned long)vbi->phys_base
     << " (size=" << L4::hex << 64*1024*vbe->total_memory << ")\n" << L4::dec;
 
 }
diff --git a/l4/pkg/ned/Control b/l4/pkg/ned/Control
index e95d0122b..9cf42fab6 100644
--- a/l4/pkg/ned/Control
+++ b/l4/pkg/ned/Control
@@ -1,2 +1,2 @@
-requires: stdlibs libc_r libsupc++ libloader l4re-util lua++
+requires: stdlibs libc libsupc++ libloader l4re-util lua++
 maintainer: warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/ned/server/src/Makefile b/l4/pkg/ned/server/src/Makefile
index 08e55cec2..9e8f16989 100644
--- a/l4/pkg/ned/server/src/Makefile
+++ b/l4/pkg/ned/server/src/Makefile
@@ -2,14 +2,13 @@ PKGDIR		?= ../..
 L4DIR		?= $(PKGDIR)/../..
 
 TARGET		 = ned
-L4_MULTITHREADED = y
 
 SRC_CC          := remote_mem.cc app_model.cc app_task.cc main.cc \
                    lua.cc lua_env.cc lua_ns.cc lua_cap.cc \
 	           lua_exec.cc lua_factory.cc lua_info.cc server.cc
 OBJS            += ned.lua.bin.o
 
-REQUIRES_LIBS   := libloader l4re-util l4re lua++
+REQUIRES_LIBS   := libloader l4re-util l4re lua++ libpthread
 
 ifeq (1,0)
 DEFINES         += -DUSE_READLINE
diff --git a/l4/pkg/ned/server/src/app_model.cc b/l4/pkg/ned/server/src/app_model.cc
index 64b7ded8f..39bc9ce86 100644
--- a/l4/pkg/ned/server/src/app_model.cc
+++ b/l4/pkg/ned/server/src/app_model.cc
@@ -44,7 +44,13 @@ App_model::prog_attach_ds(l4_addr_t addr, unsigned long size,
                           Const_dataspace ds, unsigned long offset,
                           unsigned flags, char const *what)
 {
-  _stack.add(addr, size, _task->rm(), ds.get(), offset, flags, 0, what);
+  unsigned rh_flags = flags;
+  // printf("attaching %s %lx... @%lx\n", what, m.cap(), rm.cap());
+  if (!ds.is_valid())
+    rh_flags |= L4Re::Rm::Reserved;
+
+  l4_addr_t _addr = addr;
+  L4Re::chksys(_task->rm()->attach(&_addr, size, rh_flags, ds.get(), offset, 0), what);
 }
 
 int
diff --git a/l4/pkg/ned/server/src/remote_mem.cc b/l4/pkg/ned/server/src/remote_mem.cc
index 442787081..76d6a54f2 100644
--- a/l4/pkg/ned/server/src/remote_mem.cc
+++ b/l4/pkg/ned/server/src/remote_mem.cc
@@ -11,29 +11,8 @@
 #include <l4/re/env>
 #include <l4/re/rm>
 #include <l4/re/error_helper>
-#include <cstdio>
-l4_addr_t
-Stack::add(l4_addr_t start, l4_umword_t size, L4::Cap<L4Re::Rm> rm,
-           L4::Cap<L4Re::Dataspace> m, unsigned long offs, unsigned flags,
-           unsigned char align, char const *what)
-{
-  unsigned rh_flags = flags;
-  // printf("attaching %s %lx... @%lx\n", what, m.cap(), rm.cap());
-  if (!m.is_valid())
-    rh_flags |= L4Re::Rm::Reserved;
-
-  l4_addr_t addr = start;
-
-  L4Re::chksys(rm->attach(&addr, size, rh_flags, m, offs, align), what);
-
-  l4re_mem_area_t a;
-  a.start = addr;
-  a.size = size;
-  push(a);
-  return addr;
-}
 
-void
+  void
 Stack::set_stack(L4Re::Util::Ref_cap<L4Re::Dataspace>::Cap const &ds, unsigned size)
 {
   L4Re::chksys(L4Re::Env::env()->rm()->attach(&_vma, size,
diff --git a/l4/pkg/ned/server/src/remote_mem.h b/l4/pkg/ned/server/src/remote_mem.h
index 21299eb6a..a13431533 100644
--- a/l4/pkg/ned/server/src/remote_mem.h
+++ b/l4/pkg/ned/server/src/remote_mem.h
@@ -43,9 +43,5 @@ class Stack : public Ldr::Remote_stack<Stack_base>
 {
 public:
   explicit Stack() : Ldr::Remote_stack<Stack_base>(0) {}
-  l4_addr_t add(l4_addr_t start, l4_umword_t size, L4::Cap<L4Re::Rm> rm,
-                L4::Cap<L4Re::Dataspace> m, unsigned long offs = 0,
-                unsigned flags = 0, unsigned char align = 0,
-                char const *what = "attaching vma");
   void set_stack(L4Re::Util::Ref_cap<L4Re::Dataspace>::Cap const &ds, unsigned size);
 };
diff --git a/l4/pkg/ocaml/build/asmrun/Makefile b/l4/pkg/ocaml/build/asmrun/Makefile
index 8cb5fb87c..185019dff 100644
--- a/l4/pkg/ocaml/build/asmrun/Makefile
+++ b/l4/pkg/ocaml/build/asmrun/Makefile
@@ -4,7 +4,6 @@ L4DIR   ?= $(PKGDIR)/../..
 # no .so as amd64.S doesn't seem to like it
 TARGET      = libocaml_asmrun.a
 PC_FILENAME = libocaml_asmrun
-L4_MULTITHREADED = y
 
 CONTRIBDIR = $(PKGDIR)/contrib
 
diff --git a/l4/pkg/ocaml/build/byterun/Make.rules b/l4/pkg/ocaml/build/byterun/Make.rules
index 1c9b79e59..4a9af9951 100644
--- a/l4/pkg/ocaml/build/byterun/Make.rules
+++ b/l4/pkg/ocaml/build/byterun/Make.rules
@@ -5,7 +5,6 @@ L4DIR   ?= $(PKGDIR)/../..
 TARGET        = ocamlrun
 LIBS          = -locaml_camlrun
 REQUIRES_LIBS = libc_support_misc libc_be_sig
-L4_MULTITHREADED = y
 
 CONTRIBDIR = $(PKGDIR)/contrib
 
diff --git a/l4/pkg/ocaml/build/byterun/lib/Makefile b/l4/pkg/ocaml/build/byterun/lib/Makefile
index ee2478e46..7741e955f 100644
--- a/l4/pkg/ocaml/build/byterun/lib/Makefile
+++ b/l4/pkg/ocaml/build/byterun/lib/Makefile
@@ -3,7 +3,6 @@ L4DIR   ?= $(PKGDIR)/../..
 
 TARGET = libocaml_camlrun.a
 NOTARGETSTOINSTALL = y
-L4_MULTITHREADED = y
 
 CONTRIBDIR = $(PKGDIR)/contrib
 
diff --git a/l4/pkg/python/interpreter/Makefile b/l4/pkg/python/interpreter/Makefile
index 086f9f4ee..c48bdc2f7 100644
--- a/l4/pkg/python/interpreter/Makefile
+++ b/l4/pkg/python/interpreter/Makefile
@@ -1,22 +1,13 @@
-PKGDIR := ..
-L4DIR ?= $(PKGDIR)/../..
-
-TARGET = python
-MODE = shared
-REQUIRES_LIBS = libpython libdl libc_be_file_stdin \
-				libc_be_sig libc_be_math \
-				readline
-
-L4_MULTITHREADED ?= y
-
-PRIVATE_INCDIR = $(PKGDIR_ABS)/include $(PKGDIR_ABS)/include/ARCH-$(ARCH)
-
-SRC_CC = python.cc 
-
-#vpath %.cc $(PKGDIR_ABS)
-
+PKGDIR         := ..
+L4DIR          ?= $(PKGDIR)/../..
+
+TARGET          = python
+MODE            = shared
+REQUIRES_LIBS   = libpython libc_be_file_stdin \
+                  libc_be_sig libc_be_math readline
+PRIVATE_INCDIR  = $(PKGDIR_ABS)/include $(PKGDIR_ABS)/include/ARCH-$(ARCH)
+SRC_CC          = python.cc 
 PRIVATE_INCDIR += $(PKGDIR_ABS)/contrib/Include
-
-LDFLAGS = --export-dynamic
+LDFLAGS        += --export-dynamic
 
 include $(L4DIR)/mk/prog.mk
diff --git a/l4/pkg/python/lib/objs/Makefile b/l4/pkg/python/lib/objs/Makefile
index 089b0d480..2e024f7a1 100644
--- a/l4/pkg/python/lib/objs/Makefile
+++ b/l4/pkg/python/lib/objs/Makefile
@@ -10,7 +10,6 @@ SRC_C_python-mod/operator.so = Modules/operator.c
 
 
 PC_FILENAME :=
-L4_MULTITHREADED = y
 
 CXXFLAGS := -fno-strict-aliasing
 CCFLAGS  := -fno-strict-aliasing
diff --git a/l4/pkg/scout-gfx/Control b/l4/pkg/scout-gfx/Control
index a9e0f77af..252fa27f6 100644
--- a/l4/pkg/scout-gfx/Control
+++ b/l4/pkg/scout-gfx/Control
@@ -1,3 +1,3 @@
 Provides: scout-gfx
-Requires: mag-gfx libpng libc_r libstdc++_r
+Requires: mag-gfx libpng libc libstdc++
 Maintainer: warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/scout-gfx/lib/Make.rules b/l4/pkg/scout-gfx/lib/Make.rules
index 778d9de84..095aed2e6 100644
--- a/l4/pkg/scout-gfx/lib/Make.rules
+++ b/l4/pkg/scout-gfx/lib/Make.rules
@@ -43,7 +43,6 @@ SRC_BIN += $(SRC_RGBA)
 OBJS += $(addsuffix .bin.o, $(notdir $(SRC_BIN)))
 
 REQUIRES_LIBS := mag-gfx libpng libstdc++
-L4_MULTITHREADED=y
 
 %.bin.o: $(SRC_DIR)/data/% $(SRC_DIR)/Make.rules $(ELF_PATCHER)
 	@$(GEN_MESSAGE)
diff --git a/l4/pkg/scout/lib/src/Make.rules b/l4/pkg/scout/lib/src/Make.rules
index d39cca905..02fff626f 100644
--- a/l4/pkg/scout/lib/src/Make.rules
+++ b/l4/pkg/scout/lib/src/Make.rules
@@ -27,8 +27,7 @@ SRC_BIN += ior.map
 
 OBJS += $(addsuffix .bin.o, $(notdir $(SRC_BIN)))
 
-REQUIRES_LIBS := mag-gfx scout-gfx libpng
-L4_MULTITHREADED=y
+REQUIRES_LIBS := mag-gfx scout-gfx libpng libpthread
 
 %.bin.o: $(SRC_DIR)/../data/% $(SRC_DIR)/Make.rules
 	@$(GEN_MESSAGE)
diff --git a/l4/pkg/scout/mk/scout.mk b/l4/pkg/scout/mk/scout.mk
index b778059f4..0faa7eb6a 100644
--- a/l4/pkg/scout/mk/scout.mk
+++ b/l4/pkg/scout/mk/scout.mk
@@ -2,7 +2,6 @@ MODE		?= shared
 OBJS		+= $(addsuffix .bin.o, $(notdir $(SRC_BIN)))
 
 REQUIRES_LIBS	+= scout
-L4_MULTITHREADED=y
 
 SRC_CC		= doc.cc
 vpath %.txt $(SRC_DIR)
diff --git a/l4/pkg/sigma0/Control b/l4/pkg/sigma0/Control
index 3afb7b77c..a5bce61c9 100644
--- a/l4/pkg/sigma0/Control
+++ b/l4/pkg/sigma0/Control
@@ -1,2 +1,2 @@
-requires: crtn l4sys l4util libsigma0 cxx_io
+requires: libc_minimal crtn l4sys l4util libsigma0 cxx_io
 Maintainer: warg@os.inf.tu-dresden.de
diff --git a/l4/pkg/sigma0/server/src/Makefile b/l4/pkg/sigma0/server/src/Makefile
index 1585405d2..96165e614 100644
--- a/l4/pkg/sigma0/server/src/Makefile
+++ b/l4/pkg/sigma0/server/src/Makefile
@@ -3,8 +3,10 @@ L4DIR		    ?= $(PKGDIR)/../..
 
 TARGET		     = sigma0
 MODE		     = sigma0
-L4_LIBS		     = -static -nostdlib $(LIBCLIBS_X86) $(GCCLIB)
-REQUIRES_LIBS        = cxx_util cxx_io cxx_base cxx_io_kdebug l4sys-direct
+L4_LIBS		     = -static -nostdlib $(GCCLIB)
+REQUIRES_LIBS        = libc_minimal cxx_util cxx_io cxx_base \
+                       cxx_io_kdebug l4sys-direct l4sys
+DEFINES             += -DL4_MINIMAL_LIBC
 DEFAULT_RELOC_x86   := 0x00100000
 DEFAULT_RELOC_amd64 := 0x00100000
 DEFAULT_RELOC_arm   := 0x00090000
diff --git a/l4/pkg/sqlite/Control b/l4/pkg/sqlite/Control
index 80d3b0249..d145ea2e7 100644
--- a/l4/pkg/sqlite/Control
+++ b/l4/pkg/sqlite/Control
@@ -1,3 +1,3 @@
 provides: sqlite
-requires: libc_r libdl
+requires: libc libdl libpthread
 maintainer: adam@os.inf.tu-dresden.de
diff --git a/l4/pkg/sqlite/lib/README b/l4/pkg/sqlite/lib/README
index be0909c09..f0944ea2c 100644
--- a/l4/pkg/sqlite/lib/README
+++ b/l4/pkg/sqlite/lib/README
@@ -1,4 +1,4 @@
 
 
 The contrib directory contains the unmodified contents of
-sqlite-autoconf-3070500.tar.gz
+sqlite-autoconf-3070602.tar.gz
diff --git a/l4/pkg/sqlite/lib/build/Makefile b/l4/pkg/sqlite/lib/build/Makefile
index 3402849b4..f3cce37c2 100644
--- a/l4/pkg/sqlite/lib/build/Makefile
+++ b/l4/pkg/sqlite/lib/build/Makefile
@@ -3,7 +3,7 @@ L4DIR  ?= $(PKGDIR)/../..
 
 TARGET         = libsqlite3.a libsqlite3.so
 SRC_C          = sqlite3.c
-REQUIRES_LIBS  = libdl
+REQUIRES_LIBS  = libdl libpthread
 CONTRIB_INCDIR = sqlite
 
 vpath %.c $(PKGDIR)/lib/contrib
diff --git a/l4/pkg/sqlite/lib/contrib/Makefile.am b/l4/pkg/sqlite/lib/contrib/Makefile.am
index 524059cb3..3931d834b 100644
--- a/l4/pkg/sqlite/lib/contrib/Makefile.am
+++ b/l4/pkg/sqlite/lib/contrib/Makefile.am
@@ -12,7 +12,7 @@ sqlite3_DEPENDENCIES = $(top_builddir)/libsqlite3.la
 
 include_HEADERS = sqlite3.h sqlite3ext.h
 
-EXTRA_DIST = sqlite3.pc sqlite3.1
+EXTRA_DIST = sqlite3.pc sqlite3.1 tea
 pkgconfigdir = ${libdir}/pkgconfig
 pkgconfig_DATA = sqlite3.pc
 
diff --git a/l4/pkg/sqlite/lib/contrib/Makefile.in b/l4/pkg/sqlite/lib/contrib/Makefile.in
index 6ddde524a..26f82cc73 100644
--- a/l4/pkg/sqlite/lib/contrib/Makefile.in
+++ b/l4/pkg/sqlite/lib/contrib/Makefile.in
@@ -147,6 +147,7 @@ LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -217,7 +218,7 @@ sqlite3_SOURCES = shell.c sqlite3.h
 sqlite3_LDADD = $(top_builddir)/libsqlite3.la @READLINE_LIBS@
 sqlite3_DEPENDENCIES = $(top_builddir)/libsqlite3.la
 include_HEADERS = sqlite3.h sqlite3ext.h
-EXTRA_DIST = sqlite3.pc sqlite3.1
+EXTRA_DIST = sqlite3.pc sqlite3.1 tea
 pkgconfigdir = ${libdir}/pkgconfig
 pkgconfig_DATA = sqlite3.pc
 man_MANS = sqlite3.1
diff --git a/l4/pkg/sqlite/lib/contrib/configure b/l4/pkg/sqlite/lib/contrib/configure
index 9476da4ce..c7a79f700 100755
--- a/l4/pkg/sqlite/lib/contrib/configure
+++ b/l4/pkg/sqlite/lib/contrib/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.62 for sqlite 3.7.5.
+# Generated by GNU Autoconf 2.62 for sqlite 3.7.6.2.
 #
 # Report bugs to <http://www.sqlite.org>.
 #
@@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='sqlite'
 PACKAGE_TARNAME='sqlite'
-PACKAGE_VERSION='3.7.5'
-PACKAGE_STRING='sqlite 3.7.5'
+PACKAGE_VERSION='3.7.6.2'
+PACKAGE_STRING='sqlite 3.7.6.2'
 PACKAGE_BUGREPORT='http://www.sqlite.org'
 
 ac_unique_file="sqlite3.c"
@@ -891,6 +891,7 @@ F77
 FFLAGS
 ac_ct_F77
 LIBTOOL
+MKDIR_P
 BUILD_CFLAGS
 READLINE_LIBS
 THREADSAFE_FLAGS
@@ -1480,7 +1481,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sqlite 3.7.5 to adapt to many kinds of systems.
+\`configure' configures sqlite 3.7.6.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1550,7 +1551,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sqlite 3.7.5:";;
+     short | recursive ) echo "Configuration of sqlite 3.7.6.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1660,7 +1661,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sqlite configure 3.7.5
+sqlite configure 3.7.6.2
 generated by GNU Autoconf 2.62
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1674,7 +1675,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sqlite $as_me 3.7.5, which was
+It was created by sqlite $as_me 3.7.6.2, which was
 generated by GNU Autoconf 2.62.  Invocation command line was
 
   $ $0 $@
@@ -2371,7 +2372,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='sqlite'
- VERSION='3.7.5'
+ VERSION='3.7.6.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5643,7 +5644,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5646 "configure"' > conftest.$ac_ext
+  echo '#line 5647 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8421,11 +8422,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8424: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8425: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8428: \$? = $ac_status" >&5
+   echo "$as_me:8429: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8689,11 +8690,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8692: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8693: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8696: \$? = $ac_status" >&5
+   echo "$as_me:8697: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8793,11 +8794,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8796: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8797: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8800: \$? = $ac_status" >&5
+   echo "$as_me:8801: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11137,7 +11138,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 11140 "configure"
+#line 11141 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11237,7 +11238,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 11240 "configure"
+#line 11241 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13581,11 +13582,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13584: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13585: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13588: \$? = $ac_status" >&5
+   echo "$as_me:13589: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13685,11 +13686,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13688: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13689: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13692: \$? = $ac_status" >&5
+   echo "$as_me:13693: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15255,11 +15256,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15258: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15259: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15262: \$? = $ac_status" >&5
+   echo "$as_me:15263: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15359,11 +15360,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15362: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15363: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15366: \$? = $ac_status" >&5
+   echo "$as_me:15367: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17565,11 +17566,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17568: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17569: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17572: \$? = $ac_status" >&5
+   echo "$as_me:17573: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17833,11 +17834,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17836: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17837: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17840: \$? = $ac_status" >&5
+   echo "$as_me:17841: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17937,11 +17938,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17940: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17941: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:17944: \$? = $ac_status" >&5
+   echo "$as_me:17945: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -20607,6 +20608,48 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
 
 # Check for library functions that SQLite can optionally use.
 
@@ -20713,6 +20756,305 @@ _ACEOF
 fi
 done
 
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5
+$as_echo_n "checking whether strerror_r is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror_r+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror_r
+  (void) strerror_r;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_strerror_r=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl_strerror_r=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5
+$as_echo "$ac_cv_have_decl_strerror_r" >&6; }
+if test $ac_cv_have_decl_strerror_r = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 0
+_ACEOF
+
+
+fi
+
+
+
+for ac_func in strerror_r
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_func_strerror_r_char_p=no
+    if test $ac_cv_have_decl_strerror_r = yes; then
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  char buf[100];
+	  char x = *strerror_r (0, buf, sizeof buf);
+	  char *p = strerror_r (0, buf, sizeof buf);
+	  return !p || x;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_func_strerror_r_char_p=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      # strerror_r is not declared.  Choose between
+      # systems that have relatively inaccessible declarations for the
+      # function.  BeOS and DEC UNIX 4.0 fall in this category, but the
+      # former has a strerror_r that returns char*, while the latter
+      # has a strerror_r that returns `int'.
+      # This test should segfault on the DEC system.
+      if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+	extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+	  char x = *strerror_r (0, buf, sizeof buf);
+	  return ! isalpha (x);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_strerror_r_char_p=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+    fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRERROR_R_CHAR_P 1
+_ACEOF
+
+fi
+
 
 ac_config_files="$ac_config_files Makefile sqlite3.pc"
 
@@ -21025,7 +21367,7 @@ fi
 
 THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=0
 if test x"$enable_threadsafe" != "xno"; then
-  THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=1
+  THREADSAFE_FLAGS="-D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
   { $as_echo "$as_me:$LINENO: checking for library containing pthread_create" >&5
 $as_echo_n "checking for library containing pthread_create... " >&6; }
 if test "${ac_cv_search_pthread_create+set}" = set; then
@@ -21225,6 +21567,107 @@ $as_echo "$enable_dynamic_extensions" >&6; }
 
 #-----------------------------------------------------------------------
 
+
+for ac_func in posix_fallocate
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
 #-----------------------------------------------------------------------
 # UPDATE: Maybe it's better if users just set CFLAGS before invoking
 # configure. This option doesn't really add much...
@@ -21733,7 +22176,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sqlite $as_me 3.7.5, which was
+This file was extended by sqlite $as_me 3.7.6.2, which was
 generated by GNU Autoconf 2.62.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21780,7 +22223,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-sqlite config.status 3.7.5
+sqlite config.status 3.7.6.2
 configured by $0, generated by GNU Autoconf 2.62,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -21791,6 +22234,7 @@ gives unlimited permission to copy, distribute and modify it."
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
 INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
 AWK='$AWK'
 test -n "\$AWK" || AWK=awk
 _ACEOF
@@ -22275,6 +22719,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
   *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -22331,6 +22780,7 @@ s&@builddir@&$ac_builddir&;t t
 s&@abs_builddir@&$ac_abs_builddir&;t t
 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
diff --git a/l4/pkg/sqlite/lib/contrib/configure.ac b/l4/pkg/sqlite/lib/contrib/configure.ac
index 185cffb21..e04befd1f 100644
--- a/l4/pkg/sqlite/lib/contrib/configure.ac
+++ b/l4/pkg/sqlite/lib/contrib/configure.ac
@@ -8,7 +8,7 @@
 #
 
 AC_PREREQ(2.61)
-AC_INIT(sqlite, 3.7.5, http://www.sqlite.org)
+AC_INIT(sqlite, 3.7.6.2, http://www.sqlite.org)
 AC_CONFIG_SRCDIR([sqlite3.c])
 
 # Use automake.
@@ -20,9 +20,11 @@ AC_SYS_LARGEFILE
 AC_PROG_CC
 AC_PROG_RANLIB
 AC_PROG_LIBTOOL
+AC_PROG_MKDIR_P
 
 # Check for library functions that SQLite can optionally use.
 AC_CHECK_FUNCS([fdatasync usleep fullfsync localtime_r gmtime_r])
+AC_FUNC_STRERROR_R
 
 AC_CONFIG_FILES([Makefile sqlite3.pc])
 AC_SUBST(BUILD_CFLAGS)
@@ -54,7 +56,7 @@ AC_ARG_ENABLE(threadsafe, [AS_HELP_STRING(
   [], [enable_threadsafe=yes])
 THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=0
 if test x"$enable_threadsafe" != "xno"; then
-  THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=1
+  THREADSAFE_FLAGS="-D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
   AC_SEARCH_LIBS(pthread_create, pthread)
 fi
 AC_SUBST(THREADSAFE_FLAGS)
@@ -76,6 +78,8 @@ AC_MSG_RESULT($enable_dynamic_extensions)
 AC_SUBST(DYNAMIC_EXTENSION_FLAGS)
 #-----------------------------------------------------------------------
 
+AC_CHECK_FUNCS(posix_fallocate)
+
 #-----------------------------------------------------------------------
 # UPDATE: Maybe it's better if users just set CFLAGS before invoking
 # configure. This option doesn't really add much...
diff --git a/l4/pkg/sqlite/lib/contrib/shell.c b/l4/pkg/sqlite/lib/contrib/shell.c
index 33dc1ac38..aab70b29d 100644
--- a/l4/pkg/sqlite/lib/contrib/shell.c
+++ b/l4/pkg/sqlite/lib/contrib/shell.c
@@ -71,6 +71,9 @@ extern int isatty();
 #define isatty(x) 1
 #endif
 
+/* True if the timer is enabled */
+static int enableTimer = 0;
+
 #if !defined(_WIN32) && !defined(WIN32) && !defined(__OS2__) && !defined(__RTP__) && !defined(_WRS_KERNEL)
 #include <sys/time.h>
 #include <sys/resource.h>
@@ -78,9 +81,6 @@ extern int isatty();
 /* Saved resource information for the beginning of an operation */
 static struct rusage sBegin;
 
-/* True if the timer is enabled */
-static int enableTimer = 0;
-
 /*
 ** Begin timing an operation
 */
@@ -124,9 +124,6 @@ static FILETIME ftUserBegin;
 typedef BOOL (WINAPI *GETPROCTIMES)(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME);
 static GETPROCTIMES getProcessTimesAddr = NULL;
 
-/* True if the timer is enabled */
-static int enableTimer = 0;
-
 /*
 ** Check to see if we have timer support.  Return 1 if necessary
 ** support found (or found previously).
@@ -419,6 +416,7 @@ struct callback_data {
                          ** .explain ON */
   char outfile[FILENAME_MAX]; /* Filename for *out */
   const char *zDbFilename;    /* name of the database file */
+  const char *zVfs;           /* Name of VFS to use */
   sqlite3_stmt *pStmt;   /* Current statement if any. */
   FILE *pLog;            /* Write log output here */
 };
@@ -1850,7 +1848,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
   }else
 #endif
 
-  if( c=='l' && strncmp(azArg[0], "log", n)==0 && nArg>=1 ){
+  if( c=='l' && strncmp(azArg[0], "log", n)==0 && nArg>=2 ){
     const char *zFile = azArg[1];
     if( p->pLog && p->pLog!=stdout && p->pLog!=stderr ){
       fclose(p->pLog);
@@ -2171,12 +2169,136 @@ static int do_meta_command(char *zLine, struct callback_data *p){
     sqlite3_free_table(azResult);
   }else
 
+  if( c=='t' && n>=8 && strncmp(azArg[0], "testctrl", n)==0 && nArg>=2 ){
+    static const struct {
+       const char *zCtrlName;   /* Name of a test-control option */
+       int ctrlCode;            /* Integer code for that option */
+    } aCtrl[] = {
+      { "prng_save",             SQLITE_TESTCTRL_PRNG_SAVE              },
+      { "prng_restore",          SQLITE_TESTCTRL_PRNG_RESTORE           },
+      { "prng_reset",            SQLITE_TESTCTRL_PRNG_RESET             },
+      { "bitvec_test",           SQLITE_TESTCTRL_BITVEC_TEST            },
+      { "fault_install",         SQLITE_TESTCTRL_FAULT_INSTALL          },
+      { "benign_malloc_hooks",   SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS    },
+      { "pending_byte",          SQLITE_TESTCTRL_PENDING_BYTE           },
+      { "assert",                SQLITE_TESTCTRL_ASSERT                 },
+      { "always",                SQLITE_TESTCTRL_ALWAYS                 },
+      { "reserve",               SQLITE_TESTCTRL_RESERVE                },
+      { "optimizations",         SQLITE_TESTCTRL_OPTIMIZATIONS          },
+      { "iskeyword",             SQLITE_TESTCTRL_ISKEYWORD              },
+      { "pghdrsz",               SQLITE_TESTCTRL_PGHDRSZ                },
+      { "scratchmalloc",         SQLITE_TESTCTRL_SCRATCHMALLOC          },
+    };
+    int testctrl = -1;
+    int rc = 0;
+    int i, n;
+    open_db(p);
+
+    /* convert testctrl text option to value. allow any unique prefix
+    ** of the option name, or a numerical value. */
+    n = strlen30(azArg[1]);
+    for(i=0; i<(int)(sizeof(aCtrl)/sizeof(aCtrl[0])); i++){
+      if( strncmp(azArg[1], aCtrl[i].zCtrlName, n)==0 ){
+        if( testctrl<0 ){
+          testctrl = aCtrl[i].ctrlCode;
+        }else{
+          fprintf(stderr, "ambiguous option name: \"%s\"\n", azArg[i]);
+          testctrl = -1;
+          break;
+        }
+      }
+    }
+    if( testctrl<0 ) testctrl = atoi(azArg[1]);
+    if( (testctrl<SQLITE_TESTCTRL_FIRST) || (testctrl>SQLITE_TESTCTRL_LAST) ){
+      fprintf(stderr,"Error: invalid testctrl option: %s\n", azArg[1]);
+    }else{
+      switch(testctrl){
+
+        /* sqlite3_test_control(int, db, int) */
+        case SQLITE_TESTCTRL_OPTIMIZATIONS:
+        case SQLITE_TESTCTRL_RESERVE:             
+          if( nArg==3 ){
+            int opt = (int)strtol(azArg[2], 0, 0);        
+            rc = sqlite3_test_control(testctrl, p->db, opt);
+            printf("%d (0x%08x)\n", rc, rc);
+          } else {
+            fprintf(stderr,"Error: testctrl %s takes a single int option\n",
+                    azArg[1]);
+          }
+          break;
+
+        /* sqlite3_test_control(int) */
+        case SQLITE_TESTCTRL_PRNG_SAVE:           
+        case SQLITE_TESTCTRL_PRNG_RESTORE:        
+        case SQLITE_TESTCTRL_PRNG_RESET:
+        case SQLITE_TESTCTRL_PGHDRSZ:             
+          if( nArg==2 ){
+            rc = sqlite3_test_control(testctrl);
+            printf("%d (0x%08x)\n", rc, rc);
+          } else {
+            fprintf(stderr,"Error: testctrl %s takes no options\n", azArg[1]);
+          }
+          break;
+
+        /* sqlite3_test_control(int, uint) */
+        case SQLITE_TESTCTRL_PENDING_BYTE:        
+          if( nArg==3 ){
+            unsigned int opt = (unsigned int)atoi(azArg[2]);        
+            rc = sqlite3_test_control(testctrl, opt);
+            printf("%d (0x%08x)\n", rc, rc);
+          } else {
+            fprintf(stderr,"Error: testctrl %s takes a single unsigned"
+                           " int option\n", azArg[1]);
+          }
+          break;
+          
+        /* sqlite3_test_control(int, int) */
+        case SQLITE_TESTCTRL_ASSERT:              
+        case SQLITE_TESTCTRL_ALWAYS:              
+          if( nArg==3 ){
+            int opt = atoi(azArg[2]);        
+            rc = sqlite3_test_control(testctrl, opt);
+            printf("%d (0x%08x)\n", rc, rc);
+          } else {
+            fprintf(stderr,"Error: testctrl %s takes a single int option\n",
+                            azArg[1]);
+          }
+          break;
+
+        /* sqlite3_test_control(int, char *) */
+#ifdef SQLITE_N_KEYWORD
+        case SQLITE_TESTCTRL_ISKEYWORD:           
+          if( nArg==3 ){
+            const char *opt = azArg[2];        
+            rc = sqlite3_test_control(testctrl, opt);
+            printf("%d (0x%08x)\n", rc, rc);
+          } else {
+            fprintf(stderr,"Error: testctrl %s takes a single char * option\n",
+                            azArg[1]);
+          }
+          break;
+#endif
+
+        case SQLITE_TESTCTRL_BITVEC_TEST:         
+        case SQLITE_TESTCTRL_FAULT_INSTALL:       
+        case SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: 
+        case SQLITE_TESTCTRL_SCRATCHMALLOC:       
+        default:
+          fprintf(stderr,"Error: CLI support for testctrl %s not implemented\n",
+                  azArg[1]);
+          break;
+      }
+    }
+  }else
+
   if( c=='t' && n>4 && strncmp(azArg[0], "timeout", n)==0 && nArg==2 ){
     open_db(p);
     sqlite3_busy_timeout(p->db, atoi(azArg[1]));
   }else
     
-  if( HAS_TIMER && c=='t' && n>=5 && strncmp(azArg[0], "timer", n)==0 && nArg==2 ){
+  if( HAS_TIMER && c=='t' && n>=5 && strncmp(azArg[0], "timer", n)==0
+   && nArg==2
+  ){
     enableTimer = booleanValue(azArg[1]);
   }else
   
@@ -2363,7 +2485,9 @@ static int process_input(struct callback_data *p, FILE *in){
     }
   }
   if( zSql ){
-    if( !_all_whitespace(zSql) ) fprintf(stderr, "Error: incomplete SQL: %s\n", zSql);
+    if( !_all_whitespace(zSql) ){
+      fprintf(stderr, "Error: incomplete SQL: %s\n", zSql);
+    }
     free(zSql);
   }
   free(zLine);
@@ -2499,6 +2623,10 @@ static const char zOptions[] =
   "   -stats               print memory stats before each finalize\n"
   "   -nullvalue 'text'    set text string for NULL values\n"
   "   -version             show SQLite version\n"
+  "   -vfs NAME            use NAME as the default VFS\n"
+#ifdef SQLITE_ENABLE_VFSTRACE
+  "   -vfstrace            enable tracing of all VFS calls\n"
+#endif
 ;
 static void usage(int showDetail){
   fprintf(stderr,
@@ -2583,6 +2711,25 @@ int main(int argc, char **argv){
 #if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
       sqlite3_config(SQLITE_CONFIG_HEAP, malloc((int)szHeap), (int)szHeap, 64);
 #endif
+#ifdef SQLITE_ENABLE_VFSTRACE
+    }else if( strcmp(argv[i],"-vfstrace")==0 ){
+      extern int vfstrace_register(
+         const char *zTraceName,
+         const char *zOldVfsName,
+         int (*xOut)(const char*,void*),
+         void *pOutArg,
+         int makeDefault
+      );
+      vfstrace_register("trace",0,(int(*)(const char*,void*))fputs,stderr,1);
+#endif
+    }else if( strcmp(argv[i],"-vfs")==0 ){
+      sqlite3_vfs *pVfs = sqlite3_vfs_find(argv[++i]);
+      if( pVfs ){
+        sqlite3_vfs_register(pVfs, 1);
+      }else{
+        fprintf(stderr, "no such VFS: \"%s\"\n", argv[i]);
+        exit(1);
+      }
     }
   }
   if( i<argc ){
@@ -2691,6 +2838,10 @@ int main(int argc, char **argv){
       stdin_is_interactive = 0;
     }else if( strcmp(z,"-heap")==0 ){
       i++;
+    }else if( strcmp(z,"-vfs")==0 ){
+      i++;
+    }else if( strcmp(z,"-vfstrace")==0 ){
+      i++;
     }else if( strcmp(z,"-help")==0 || strcmp(z, "--help")==0 ){
       usage(1);
     }else{
diff --git a/l4/pkg/sqlite/lib/contrib/sqlite3.c b/l4/pkg/sqlite/lib/contrib/sqlite3.c
index 108331116..55f058c26 100644
--- a/l4/pkg/sqlite/lib/contrib/sqlite3.c
+++ b/l4/pkg/sqlite/lib/contrib/sqlite3.c
@@ -1,7 +1,7 @@
 /******************************************************************************
 ** This file is an amalgamation of many separate C source files from SQLite
-** version 3.7.5.  By combining all the individual C code files into this 
-** single large file, the entire code can be compiled as a one translation
+** version 3.7.6.2.  By combining all the individual C code files into this 
+** single large file, the entire code can be compiled as a single translation
 ** unit.  This allows many compilers to do optimizations that would not be
 ** possible if the files were compiled separately.  Performance improvements
 ** of 5% or more are commonly seen when SQLite is compiled as a single
@@ -200,7 +200,7 @@
 
 /*
 ** The maximum number of attached databases.  This must be between 0
-** and 30.  The upper bound on 30 is because a 32-bit integer bitmap
+** and 62.  The upper bound on 62 is because a 64-bit integer bitmap
 ** is used internally to track attached databases.
 */
 #ifndef SQLITE_MAX_ATTACHED
@@ -650,9 +650,9 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.7.5"
-#define SQLITE_VERSION_NUMBER 3007005
-#define SQLITE_SOURCE_ID      "2011-01-28 17:03:50 ed759d5a9edb3bba5f48f243df47be29e3fe8cd7"
+#define SQLITE_VERSION        "3.7.6.2"
+#define SQLITE_VERSION_NUMBER 3007006
+#define SQLITE_SOURCE_ID      "2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -1026,6 +1026,8 @@ SQLITE_API int sqlite3_exec(
 #define SQLITE_OPEN_PRIVATECACHE     0x00040000  /* Ok for sqlite3_open_v2() */
 #define SQLITE_OPEN_WAL              0x00080000  /* VFS only */
 
+/* Reserved:                         0x00F00000 */
+
 /*
 ** CAPI3REF: Device Characteristics
 **
@@ -1273,7 +1275,7 @@ struct sqlite3_io_methods {
 ** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most 
 ** VFSes do not need this signal and should silently ignore this opcode.
 ** Applications should not call [sqlite3_file_control()] with this
-** opcode as doing so may disrupt the operation of the specilized VFSes
+** opcode as doing so may disrupt the operation of the specialized VFSes
 ** that do require it.  
 */
 #define SQLITE_FCNTL_LOCKSTATE        1
@@ -1439,10 +1441,23 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** date and time if that method is available (if iVersion is 2 or 
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
+**
+** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
+** are not used by the SQLite core.  These optional interfaces are provided
+** by some VFSes to facilitate testing of the VFS code. By overriding 
+** system calls with functions under its control, a test program can
+** simulate faults and error conditions that would otherwise be difficult
+** or impossible to induce.  The set of system calls that can be overridden
+** varies from one VFS to another, and from one version of the same VFS to the
+** next.  Applications that use these interfaces must be prepared for any
+** or all of these interfaces to be NULL or for their behavior to change
+** from one release to the next.  Applications must not attempt to access
+** any of these methods if the iVersion of the VFS is less than 3.
 */
 typedef struct sqlite3_vfs sqlite3_vfs;
+typedef void (*sqlite3_syscall_ptr)(void);
 struct sqlite3_vfs {
-  int iVersion;            /* Structure version number (currently 2) */
+  int iVersion;            /* Structure version number (currently 3) */
   int szOsFile;            /* Size of subclassed sqlite3_file */
   int mxPathname;          /* Maximum file pathname length */
   sqlite3_vfs *pNext;      /* Next registered VFS */
@@ -1468,6 +1483,13 @@ struct sqlite3_vfs {
   int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
   /*
   ** The methods above are in versions 1 and 2 of the sqlite_vfs object.
+  ** Those below are for version 3 and greater.
+  */
+  int (*xSetSystemCall)(sqlite3_vfs*, const char *zName, sqlite3_syscall_ptr);
+  sqlite3_syscall_ptr (*xGetSystemCall)(sqlite3_vfs*, const char *zName);
+  const char *(*xNextSystemCall)(sqlite3_vfs*, const char *zName);
+  /*
+  ** The methods above are in versions 1 through 3 of the sqlite_vfs object.
   ** New fields may be appended in figure versions.  The iVersion
   ** value will increment whenever this happens. 
   */
@@ -1652,17 +1674,12 @@ SQLITE_API int sqlite3_config(int, ...);
 ** The sqlite3_db_config() interface is used to make configuration
 ** changes to a [database connection].  The interface is similar to
 ** [sqlite3_config()] except that the changes apply to a single
-** [database connection] (specified in the first argument).  The
-** sqlite3_db_config() interface should only be used immediately after
-** the database connection is created using [sqlite3_open()],
-** [sqlite3_open16()], or [sqlite3_open_v2()].  
+** [database connection] (specified in the first argument).
 **
 ** The second argument to sqlite3_db_config(D,V,...)  is the
-** configuration verb - an integer code that indicates what
-** aspect of the [database connection] is being configured.
-** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE].
-** New verbs are likely to be added in future releases of SQLite.
-** Additional arguments depend on the verb.
+** [SQLITE_DBCONFIG_LOOKASIDE | configuration verb] - an integer code 
+** that indicates what aspect of the [database connection] is being configured.
+** Subsequent arguments vary depending on the configuration verb.
 **
 ** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
 ** the call is considered successful.
@@ -1840,7 +1857,7 @@ struct sqlite3_mem_methods {
 ** <dt>SQLITE_CONFIG_SCRATCH</dt>
 ** <dd> ^This option specifies a static memory buffer that SQLite can use for
 ** scratch memory.  There are three arguments:  A pointer an 8-byte
-** aligned memory buffer from which the scrach allocations will be
+** aligned memory buffer from which the scratch allocations will be
 ** drawn, the size of each scratch allocation (sz),
 ** and the maximum number of scratch allocations (N).  The sz
 ** argument must be a multiple of 16.
@@ -1887,7 +1904,9 @@ struct sqlite3_mem_methods {
 ** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
 ** allocator is engaged to handle all of SQLites memory allocation needs.
 ** The first pointer (the memory pointer) must be aligned to an 8-byte
-** boundary or subsequent behavior of SQLite will be undefined.</dd>
+** boundary or subsequent behavior of SQLite will be undefined.
+** The minimum allocation size is capped at 2^12. Reasonable values
+** for the minimum allocation size are 2^5 through 2^8.</dd>
 **
 ** <dt>SQLITE_CONFIG_MUTEX</dt>
 ** <dd> ^(This option takes a single argument which is a pointer to an
@@ -1990,7 +2009,7 @@ struct sqlite3_mem_methods {
 ** <dd> ^This option takes three additional arguments that determine the 
 ** [lookaside memory allocator] configuration for the [database connection].
 ** ^The first argument (the third parameter to [sqlite3_db_config()] is a
-** pointer to an memory buffer to use for lookaside memory.
+** pointer to a memory buffer to use for lookaside memory.
 ** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
 ** may be NULL in which case SQLite will allocate the
 ** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
@@ -2008,9 +2027,31 @@ struct sqlite3_mem_methods {
 ** memory is in use leaves the configuration unchanged and returns 
 ** [SQLITE_BUSY].)^</dd>
 **
+** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
+** <dd> ^This option is used to enable or disable the enforcement of
+** [foreign key constraints].  There should be two additional arguments.
+** The first argument is an integer which is 0 to disable FK enforcement,
+** positive to enable FK enforcement or negative to leave FK enforcement
+** unchanged.  The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether FK enforcement is off or on
+** following this call.  The second parameter may be a NULL pointer, in
+** which case the FK enforcement setting is not reported back. </dd>
+**
+** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
+** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
+** There should be two additional arguments.
+** The first argument is an integer which is 0 to disable triggers,
+** positive to enable triggers or negative to leave the setting unchanged.
+** The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether triggers are disabled or enabled
+** following this call.  The second parameter may be a NULL pointer, in
+** which case the trigger setting is not reported back. </dd>
+**
 ** </dl>
 */
-#define SQLITE_DBCONFIG_LOOKASIDE    1001  /* void* int int */
+#define SQLITE_DBCONFIG_LOOKASIDE       1001  /* void* int int */
+#define SQLITE_DBCONFIG_ENABLE_FKEY     1002  /* int int* */
+#define SQLITE_DBCONFIG_ENABLE_TRIGGER  1003  /* int int* */
 
 
 /*
@@ -2612,7 +2653,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 /*
 ** CAPI3REF: Compile-Time Authorization Callbacks
 **
-** ^This routine registers a authorizer callback with a particular
+** ^This routine registers an authorizer callback with a particular
 ** [database connection], supplied in the first argument.
 ** ^The authorizer callback is invoked as SQL statements are being compiled
 ** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
@@ -3214,7 +3255,7 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
 /*
 ** CAPI3REF: Determine If An SQL Statement Writes The Database
 **
-** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if 
+** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
 ** and only if the [prepared statement] X makes no direct changes to
 ** the content of the database file.
 **
@@ -3258,7 +3299,7 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
 ** whether or not it requires a protected sqlite3_value.
 **
 ** The terms "protected" and "unprotected" refer to whether or not
-** a mutex is held.  A internal mutex is held for a protected
+** a mutex is held.  An internal mutex is held for a protected
 ** sqlite3_value object but no mutex is held for an unprotected
 ** sqlite3_value object.  If SQLite is compiled to be single-threaded
 ** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
@@ -3482,7 +3523,9 @@ SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
 ** column number.  ^The leftmost column is number 0.
 **
 ** ^The returned string pointer is valid until either the [prepared statement]
-** is destroyed by [sqlite3_finalize()] or until the next call to
+** is destroyed by [sqlite3_finalize()] or until the statement is automatically
+** reprepared by the first call to [sqlite3_step()] for a particular run
+** or until the next call to
 ** sqlite3_column_name() or sqlite3_column_name16() on the same column.
 **
 ** ^If sqlite3_malloc() fails during the processing of either routine
@@ -3508,7 +3551,9 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
 ** the database name, the _table_ routines return the table name, and
 ** the origin_ routines return the column name.
 ** ^The returned string is valid until the [prepared statement] is destroyed
-** using [sqlite3_finalize()] or until the same information is requested
+** using [sqlite3_finalize()] or until the statement is automatically
+** reprepared by the first call to [sqlite3_step()] for a particular run
+** or until the same information is requested
 ** again in a different encoding.
 **
 ** ^The names returned are the original un-aliased names of the
@@ -3940,7 +3985,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** are used to add SQL functions or aggregates or to redefine the behavior
 ** of existing SQL functions or aggregates.  The only differences between
 ** these routines are the text encoding expected for
-** the the second parameter (the name of the function being created)
+** the second parameter (the name of the function being created)
 ** and the presence or absence of a destructor callback for
 ** the application data pointer.
 **
@@ -3985,7 +4030,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** callback only; NULL pointers must be passed as the xStep and xFinal
 ** parameters. ^An aggregate SQL function requires an implementation of xStep
 ** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing
-** SQL function or aggregate, pass NULL poiners for all three function
+** SQL function or aggregate, pass NULL pointers for all three function
 ** callbacks.
 **
 ** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
@@ -4419,7 +4464,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin
 ** on an even byte address.
 **
-** ^The fourth argument, pArg, is a application data pointer that is passed
+** ^The fourth argument, pArg, is an application data pointer that is passed
 ** through as the first argument to the collating function callback.
 **
 ** ^The fifth argument, xCallback, is a pointer to the collating function.
@@ -4435,7 +4480,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** by the eTextRep argument.  The collating function must return an
 ** integer that is negative, zero, or positive
 ** if the first string is less than, equal to, or greater than the second,
-** respectively.  A collating function must alway return the same answer
+** respectively.  A collating function must always return the same answer
 ** given the same inputs.  If two or more collating functions are registered
 ** to the same collation name (using different eTextRep values) then all
 ** must give an equivalent answer when invoked with equivalent strings.
@@ -4847,7 +4892,7 @@ SQLITE_API int sqlite3_release_memory(int);
 ** <li> Memory accounting is disabled using a combination of the
 **      [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and
 **      the [SQLITE_DEFAULT_MEMSTATUS] compile-time option.
-** <li> An alternative page cache implementation is specifed using
+** <li> An alternative page cache implementation is specified using
 **      [sqlite3_config]([SQLITE_CONFIG_PCACHE],...).
 ** <li> The page cache allocates from its own memory pool supplied
 **      by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
@@ -5068,7 +5113,7 @@ typedef struct sqlite3_module sqlite3_module;
 ** CAPI3REF: Virtual Table Object
 ** KEYWORDS: sqlite3_module {virtual table module}
 **
-** This structure, sometimes called a a "virtual table module", 
+** This structure, sometimes called a "virtual table module", 
 ** defines the implementation of a [virtual tables].  
 ** This structure consists mostly of methods for the module.
 **
@@ -5380,7 +5425,7 @@ typedef struct sqlite3_blob sqlite3_blob;
 ** This is true if any column of the row is changed, even a column
 ** other than the one the BLOB handle is open on.)^
 ** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
-** a expired BLOB handle fail with an return code of [SQLITE_ABORT].
+** an expired BLOB handle fail with a return code of [SQLITE_ABORT].
 ** ^(Changes written into a BLOB prior to the BLOB expiring are not
 ** rolled back by the expiration of the BLOB.  Such changes will eventually
 ** commit if the transaction continues to completion.)^
@@ -6082,24 +6127,21 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
 ** <dd>This parameter returns the number malloc attempts that were 
 ** satisfied using lookaside memory. Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
 ** <dd>This parameter returns the number malloc attempts that might have
 ** been satisfied using lookaside memory but failed due to the amount of
 ** memory requested being larger than the lookaside slot size.
 ** Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
 ** <dd>This parameter returns the number malloc attempts that might have
 ** been satisfied using lookaside memory but failed due to all lookaside
 ** memory already being in use.
 ** Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
 ** <dd>This parameter returns the approximate number of of bytes of heap
@@ -6798,9 +6840,102 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
 ** from SQL.  ^The [sqlite3_wal_autocheckpoint()] interface and the
 ** [wal_autocheckpoint pragma] can be used to cause this interface to be
 ** run whenever the WAL reaches a certain size threshold.
+**
+** See also: [sqlite3_wal_checkpoint_v2()]
 */
 SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
 
+/*
+** CAPI3REF: Checkpoint a database
+**
+** Run a checkpoint operation on WAL database zDb attached to database 
+** handle db. The specific operation is determined by the value of the 
+** eMode parameter:
+**
+** <dl>
+** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
+**   Checkpoint as many frames as possible without waiting for any database 
+**   readers or writers to finish. Sync the db file if all frames in the log
+**   are checkpointed. This mode is the same as calling 
+**   sqlite3_wal_checkpoint(). The busy-handler callback is never invoked.
+**
+** <dt>SQLITE_CHECKPOINT_FULL<dd>
+**   This mode blocks (calls the busy-handler callback) until there is no
+**   database writer and all readers are reading from the most recent database
+**   snapshot. It then checkpoints all frames in the log file and syncs the
+**   database file. This call blocks database writers while it is running,
+**   but not database readers.
+**
+** <dt>SQLITE_CHECKPOINT_RESTART<dd>
+**   This mode works the same way as SQLITE_CHECKPOINT_FULL, except after 
+**   checkpointing the log file it blocks (calls the busy-handler callback)
+**   until all readers are reading from the database file only. This ensures 
+**   that the next client to write to the database file restarts the log file 
+**   from the beginning. This call blocks database writers while it is running,
+**   but not database readers.
+** </dl>
+**
+** If pnLog is not NULL, then *pnLog is set to the total number of frames in
+** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
+** the total number of checkpointed frames (including any that were already
+** checkpointed when this function is called). *pnLog and *pnCkpt may be
+** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
+** If no values are available because of an error, they are both set to -1
+** before returning to communicate this to the caller.
+**
+** All calls obtain an exclusive "checkpoint" lock on the database file. If
+** any other process is running a checkpoint operation at the same time, the 
+** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a 
+** busy-handler configured, it will not be invoked in this case.
+**
+** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive 
+** "writer" lock on the database file. If the writer lock cannot be obtained
+** immediately, and a busy-handler is configured, it is invoked and the writer
+** lock retried until either the busy-handler returns 0 or the lock is
+** successfully obtained. The busy-handler is also invoked while waiting for
+** database readers as described above. If the busy-handler returns 0 before
+** the writer lock is obtained or while waiting for database readers, the
+** checkpoint operation proceeds from that point in the same way as 
+** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible 
+** without blocking any further. SQLITE_BUSY is returned in this case.
+**
+** If parameter zDb is NULL or points to a zero length string, then the
+** specified operation is attempted on all WAL databases. In this case the
+** values written to output parameters *pnLog and *pnCkpt are undefined. If 
+** an SQLITE_BUSY error is encountered when processing one or more of the 
+** attached WAL databases, the operation is still attempted on any remaining 
+** attached databases and SQLITE_BUSY is returned to the caller. If any other 
+** error occurs while processing an attached database, processing is abandoned 
+** and the error code returned to the caller immediately. If no error 
+** (SQLITE_BUSY or otherwise) is encountered while processing the attached 
+** databases, SQLITE_OK is returned.
+**
+** If database zDb is the name of an attached database that is not in WAL
+** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
+** zDb is not NULL (or a zero length string) and is not the name of any
+** attached database, SQLITE_ERROR is returned to the caller.
+*/
+SQLITE_API int sqlite3_wal_checkpoint_v2(
+  sqlite3 *db,                    /* Database handle */
+  const char *zDb,                /* Name of attached database (or NULL) */
+  int eMode,                      /* SQLITE_CHECKPOINT_* value */
+  int *pnLog,                     /* OUT: Size of WAL log in frames */
+  int *pnCkpt                     /* OUT: Total number of frames checkpointed */
+);
+
+/*
+** CAPI3REF: Checkpoint operation parameters
+**
+** These constants can be used as the 3rd parameter to
+** [sqlite3_wal_checkpoint_v2()].  See the [sqlite3_wal_checkpoint_v2()]
+** documentation for additional information about the meaning and use of
+** each of these values.
+*/
+#define SQLITE_CHECKPOINT_PASSIVE 0
+#define SQLITE_CHECKPOINT_FULL    1
+#define SQLITE_CHECKPOINT_RESTART 2
+
+
 /*
 ** Undo the hack that converts floating point types to integer for
 ** builds on processors without floating point support.
@@ -7519,18 +7654,6 @@ typedef struct WhereLevel WhereLevel;
 typedef struct Btree Btree;
 typedef struct BtCursor BtCursor;
 typedef struct BtShared BtShared;
-typedef struct BtreeMutexArray BtreeMutexArray;
-
-/*
-** This structure records all of the Btrees that need to hold
-** a mutex before we enter sqlite3VdbeExec().  The Btrees are
-** are placed in aBtree[] in order of aBtree[]->pBt.  That way,
-** we can always lock and unlock them all quickly.
-*/
-struct BtreeMutexArray {
-  int nMutex;
-  Btree *aBtree[SQLITE_MAX_ATTACHED+1];
-};
 
 
 SQLITE_PRIVATE int sqlite3BtreeOpen(
@@ -7567,7 +7690,7 @@ SQLITE_PRIVATE int sqlite3BtreeSetAutoVacuum(Btree *, int);
 SQLITE_PRIVATE int sqlite3BtreeGetAutoVacuum(Btree *);
 SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree*,int);
 SQLITE_PRIVATE int sqlite3BtreeCommitPhaseOne(Btree*, const char *zMaster);
-SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*);
+SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*, int);
 SQLITE_PRIVATE int sqlite3BtreeCommit(Btree*);
 SQLITE_PRIVATE int sqlite3BtreeRollback(Btree*);
 SQLITE_PRIVATE int sqlite3BtreeBeginStmt(Btree*,int);
@@ -7687,7 +7810,7 @@ SQLITE_PRIVATE void sqlite3BtreeCursorList(Btree*);
 #endif
 
 #ifndef SQLITE_OMIT_WAL
-SQLITE_PRIVATE   int sqlite3BtreeCheckpoint(Btree*);
+SQLITE_PRIVATE   int sqlite3BtreeCheckpoint(Btree*, int, int *, int *);
 #endif
 
 /*
@@ -7704,30 +7827,28 @@ SQLITE_PRIVATE   void sqlite3BtreeEnterAll(sqlite3*);
 #endif
 
 #if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE
+SQLITE_PRIVATE   int sqlite3BtreeSharable(Btree*);
 SQLITE_PRIVATE   void sqlite3BtreeLeave(Btree*);
 SQLITE_PRIVATE   void sqlite3BtreeEnterCursor(BtCursor*);
 SQLITE_PRIVATE   void sqlite3BtreeLeaveCursor(BtCursor*);
 SQLITE_PRIVATE   void sqlite3BtreeLeaveAll(sqlite3*);
-SQLITE_PRIVATE   void sqlite3BtreeMutexArrayEnter(BtreeMutexArray*);
-SQLITE_PRIVATE   void sqlite3BtreeMutexArrayLeave(BtreeMutexArray*);
-SQLITE_PRIVATE   void sqlite3BtreeMutexArrayInsert(BtreeMutexArray*, Btree*);
 #ifndef NDEBUG
   /* These routines are used inside assert() statements only. */
 SQLITE_PRIVATE   int sqlite3BtreeHoldsMutex(Btree*);
 SQLITE_PRIVATE   int sqlite3BtreeHoldsAllMutexes(sqlite3*);
+SQLITE_PRIVATE   int sqlite3SchemaMutexHeld(sqlite3*,int,Schema*);
 #endif
 #else
 
+# define sqlite3BtreeSharable(X) 0
 # define sqlite3BtreeLeave(X)
 # define sqlite3BtreeEnterCursor(X)
 # define sqlite3BtreeLeaveCursor(X)
 # define sqlite3BtreeLeaveAll(X)
-# define sqlite3BtreeMutexArrayEnter(X)
-# define sqlite3BtreeMutexArrayLeave(X)
-# define sqlite3BtreeMutexArrayInsert(X,Y)
 
 # define sqlite3BtreeHoldsMutex(X) 1
 # define sqlite3BtreeHoldsAllMutexes(X) 1
+# define sqlite3SchemaMutexHeld(X,Y,Z) 1
 #endif
 
 
@@ -7846,7 +7967,7 @@ typedef struct VdbeOpList VdbeOpList;
 #define P4_KEYINFO  (-6)  /* P4 is a pointer to a KeyInfo structure */
 #define P4_VDBEFUNC (-7)  /* P4 is a pointer to a VdbeFunc structure */
 #define P4_MEM      (-8)  /* P4 is a pointer to a Mem*    structure */
-#define P4_TRANSIENT (-9) /* P4 is a pointer to a transient string */
+#define P4_TRANSIENT  0   /* P4 is a pointer to a transient string */
 #define P4_VTAB     (-10) /* P4 is a pointer to an sqlite3_vtab structure */
 #define P4_MPRINTF  (-11) /* P4 is a string obtained from sqlite3_mprintf() */
 #define P4_REAL     (-12) /* P4 is a 64-bit floating point value */
@@ -8297,7 +8418,7 @@ SQLITE_PRIVATE int sqlite3PagerOpenSavepoint(Pager *pPager, int n);
 SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint);
 SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager);
 
-SQLITE_PRIVATE int sqlite3PagerCheckpoint(Pager *pPager);
+SQLITE_PRIVATE int sqlite3PagerCheckpoint(Pager *pPager, int, int*, int*);
 SQLITE_PRIVATE int sqlite3PagerWalSupported(Pager *pPager);
 SQLITE_PRIVATE int sqlite3PagerWalCallback(Pager *pPager);
 SQLITE_PRIVATE int sqlite3PagerOpenWal(Pager *pPager, int *pisOpen);
@@ -8881,9 +9002,24 @@ struct Db {
 
 /*
 ** An instance of the following structure stores a database schema.
+**
+** Most Schema objects are associated with a Btree.  The exception is
+** the Schema for the TEMP databaes (sqlite3.aDb[1]) which is free-standing.
+** In shared cache mode, a single Schema object can be shared by multiple
+** Btrees that refer to the same underlying BtShared object.
+** 
+** Schema objects are automatically deallocated when the last Btree that
+** references them is destroyed.   The TEMP Schema is manually freed by
+** sqlite3_close().
+*
+** A thread must be holding a mutex on the corresponding Btree in order
+** to access Schema content.  This implies that the thread must also be
+** holding a mutex on the sqlite3 connection pointer that owns the Btree.
+** For a TEMP Schema, on the connection mutex is required.
 */
 struct Schema {
   int schema_cookie;   /* Database schema version number for this file */
+  int iGeneration;     /* Generation counter.  Incremented with each change */
   Hash tblHash;        /* All tables indexed by name */
   Hash idxHash;        /* All (named) indices indexed by name */
   Hash trigHash;       /* All triggers indexed by name */
@@ -9137,6 +9273,7 @@ struct sqlite3 {
 #define SQLITE_AutoIndex      0x08000000  /* Enable automatic indexes */
 #define SQLITE_PreferBuiltin  0x10000000  /* Preference to built-in funcs */
 #define SQLITE_LoadExtension  0x20000000  /* Enable load_extension */
+#define SQLITE_EnableTrigger  0x40000000  /* True to enable triggers */
 
 /*
 ** Bits of the sqlite3.flags field that are used by the
@@ -9395,7 +9532,7 @@ struct CollSeq {
 ** schema is shared, as the implementation often stores the database
 ** connection handle passed to it via the xConnect() or xCreate() method
 ** during initialization internally. This database connection handle may
-** then used by the virtual table implementation to access real tables 
+** then be used by the virtual table implementation to access real tables 
 ** within the database. So that they appear as part of the callers 
 ** transaction, these accesses need to be made via the same database 
 ** connection as that used to execute SQL operations on the virtual table.
@@ -9673,6 +9810,7 @@ struct Index {
   int tnum;        /* Page containing root of this index in database file */
   u8 onError;      /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */
   u8 autoIndex;    /* True if is automatically created (ex: by UNIQUE) */
+  u8 bUnordered;   /* Use this index for == or IN queries only */
   char *zColAff;   /* String defining the affinity of each column */
   Index *pNext;    /* The next index associated with the same table */
   Schema *pSchema; /* Schema containing this index */
@@ -9836,7 +9974,7 @@ struct Expr {
   u16 flags;             /* Various flags.  EP_* See below */
   union {
     char *zToken;          /* Token value. Zero terminated and dequoted */
-    int iValue;            /* Integer value if EP_IntValue */
+    int iValue;            /* Non-negative integer value if EP_IntValue */
   } u;
 
   /* If the EP_TokenOnly flag is set in the Expr.flags mask, then no
@@ -10336,6 +10474,15 @@ struct TriggerPrg {
   TriggerPrg *pNext;      /* Next entry in Parse.pTriggerPrg list */
 };
 
+/*
+** The yDbMask datatype for the bitmask of all attached databases.
+*/
+#if SQLITE_MAX_ATTACHED>30
+  typedef sqlite3_uint64 yDbMask;
+#else
+  typedef unsigned int yDbMask;
+#endif
+
 /*
 ** An SQL parser context.  A copy of this structure is passed through
 ** the parser and down into all the parser action routine in order to
@@ -10384,8 +10531,8 @@ struct Parse {
     int iReg;             /* Reg with value of this column. 0 means none. */
     int lru;              /* Least recently used entry has the smallest value */
   } aColCache[SQLITE_N_COLCACHE];  /* One for each column cache entry */
-  u32 writeMask;       /* Start a write transaction on these databases */
-  u32 cookieMask;      /* Bitmask of schema verified databases */
+  yDbMask writeMask;   /* Start a write transaction on these databases */
+  yDbMask cookieMask;  /* Bitmask of schema verified databases */
   u8 isMultiWrite;     /* True if statement may affect/insert multiple rows */
   u8 mayAbort;         /* True if statement may throw an ABORT exception */
   int cookieGoto;      /* Address of OP_Goto to cookie verifier subroutine */
@@ -10955,6 +11102,7 @@ SQLITE_PRIVATE void sqlite3PrngRestoreState(void);
 SQLITE_PRIVATE void sqlite3PrngResetState(void);
 SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3*);
 SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse*, int);
+SQLITE_PRIVATE void sqlite3CodeVerifyNamedSchema(Parse*, const char *zDb);
 SQLITE_PRIVATE void sqlite3BeginTransaction(Parse*, int);
 SQLITE_PRIVATE void sqlite3CommitTransaction(Parse*);
 SQLITE_PRIVATE void sqlite3RollbackTransaction(Parse*);
@@ -11116,6 +11264,10 @@ SQLITE_PRIVATE Expr *sqlite3ExprSetCollByToken(Parse *pParse, Expr*, Token*);
 SQLITE_PRIVATE int sqlite3CheckCollSeq(Parse *, CollSeq *);
 SQLITE_PRIVATE int sqlite3CheckObjectName(Parse *, const char *);
 SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *, int);
+SQLITE_PRIVATE int sqlite3AddInt64(i64*,i64);
+SQLITE_PRIVATE int sqlite3SubInt64(i64*,i64);
+SQLITE_PRIVATE int sqlite3MulInt64(i64*,i64);
+SQLITE_PRIVATE int sqlite3AbsInt32(int);
 
 SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value*, u8);
 SQLITE_PRIVATE int sqlite3ValueBytes(sqlite3_value*, u8);
@@ -11140,7 +11292,7 @@ SQLITE_PRIVATE SQLITE_WSD FuncDefHash sqlite3GlobalFunctions;
 SQLITE_PRIVATE int sqlite3PendingByte;
 #endif
 #endif
-SQLITE_PRIVATE void sqlite3RootPageMoved(Db*, int, int);
+SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3*, int, int, int);
 SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
 SQLITE_PRIVATE void sqlite3AlterFunctions(void);
 SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
@@ -11167,7 +11319,7 @@ SQLITE_PRIVATE void sqlite3DefaultRowEst(Index*);
 SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3*, int);
 SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3*,Expr*,int*,char*);
 SQLITE_PRIVATE void sqlite3MinimumFileFormat(Parse*, int, int);
-SQLITE_PRIVATE void sqlite3SchemaFree(void *);
+SQLITE_PRIVATE void sqlite3SchemaClear(void *);
 SQLITE_PRIVATE Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
 SQLITE_PRIVATE int sqlite3SchemaToIndex(sqlite3 *db, Schema *);
 SQLITE_PRIVATE KeyInfo *sqlite3IndexKeyinfo(Parse *, Index *);
@@ -11254,7 +11406,7 @@ SQLITE_PRIVATE CollSeq *sqlite3BinaryCompareCollSeq(Parse *, Expr *, Expr *);
 SQLITE_PRIVATE int sqlite3TempInMemory(const sqlite3*);
 SQLITE_PRIVATE VTable *sqlite3GetVTable(sqlite3*, Table*);
 SQLITE_PRIVATE const char *sqlite3JournalModename(int);
-SQLITE_PRIVATE int sqlite3Checkpoint(sqlite3*, int);
+SQLITE_PRIVATE int sqlite3Checkpoint(sqlite3*, int, int, int*, int*);
 SQLITE_PRIVATE int sqlite3WalDefaultHook(void*,sqlite3*,const char*,int);
 
 /* Declarations for functions in fkey.c. All of these are replaced by
@@ -12343,10 +12495,10 @@ struct Vdbe {
   u8 readOnly;            /* True for read-only statements */
   u8 isPrepareV2;         /* True if prepared with prepare_v2() */
   int nChange;            /* Number of db changes made since last reset */
-  int btreeMask;          /* Bitmask of db->aDb[] entries referenced */
+  yDbMask btreeMask;      /* Bitmask of db->aDb[] entries referenced */
+  yDbMask lockMask;       /* Subset of btreeMask that requires a lock */
   int iStatement;         /* Statement number (or 0 if has not opened stmt) */
   int aCounter[3];        /* Counters used by sqlite3_stmt_status() */
-  BtreeMutexArray aMutex; /* An array of Btree used here and needing locks */
 #ifndef SQLITE_OMIT_TRACE
   i64 startTime;          /* Time when query started - used for profiling */
 #endif
@@ -12429,6 +12581,14 @@ SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame*);
 SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *);
 SQLITE_PRIVATE void sqlite3VdbeMemStoreType(Mem *pMem);
 
+#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE>0
+SQLITE_PRIVATE   void sqlite3VdbeEnter(Vdbe*);
+SQLITE_PRIVATE   void sqlite3VdbeLeave(Vdbe*);
+#else
+# define sqlite3VdbeEnter(X)
+# define sqlite3VdbeLeave(X)
+#endif
+
 #ifdef SQLITE_DEBUG
 SQLITE_PRIVATE void sqlite3VdbeMemPrepareToChange(Vdbe*,Mem*);
 #endif
@@ -12439,12 +12599,6 @@ SQLITE_PRIVATE int sqlite3VdbeCheckFk(Vdbe *, int);
 # define sqlite3VdbeCheckFk(p,i) 0
 #endif
 
-#ifndef SQLITE_OMIT_SHARED_CACHE
-SQLITE_PRIVATE void sqlite3VdbeMutexArrayEnter(Vdbe *p);
-#else
-# define sqlite3VdbeMutexArrayEnter(p)
-#endif
-
 SQLITE_PRIVATE int sqlite3VdbeMemTranslate(Mem*, u8);
 #ifdef SQLITE_DEBUG
 SQLITE_PRIVATE   void sqlite3VdbePrintSql(Vdbe*);
@@ -12610,6 +12764,7 @@ SQLITE_API int sqlite3_db_status(
       int i;                      /* Used to iterate through schemas */
       int nByte = 0;              /* Used to accumulate return value */
 
+      sqlite3BtreeEnterAll(db);
       db->pnBytesFreed = &nByte;
       for(i=0; i<db->nDb; i++){
         Schema *pSchema = db->aDb[i].pSchema;
@@ -12636,6 +12791,7 @@ SQLITE_API int sqlite3_db_status(
         }
       }
       db->pnBytesFreed = 0;
+      sqlite3BtreeLeaveAll(db);
 
       *pHighwater = 0;
       *pCurrent = nByte;
@@ -15747,7 +15903,7 @@ static SQLITE_WSD struct Mem5Global {
   */
   u8 *aCtrl;
 
-} mem5 = { 0 };
+} mem5;
 
 /*
 ** Access the static variable through a macro for SQLITE_OMIT_WSD
@@ -16062,7 +16218,7 @@ static int memsys5Roundup(int n){
 */
 static int memsys5Log(int iValue){
   int iLog;
-  for(iLog=0; (1<<iLog)<iValue; iLog++);
+  for(iLog=0; (iLog<(int)((sizeof(int)*8)-1)) && (1<<iLog)<iValue; iLog++);
   return iLog;
 }
 
@@ -16093,6 +16249,7 @@ static int memsys5Init(void *NotUsed){
   zByte = (u8*)sqlite3GlobalConfig.pHeap;
   assert( zByte!=0 );  /* sqlite3_config() does not allow otherwise */
 
+  /* boundaries on sqlite3GlobalConfig.mnReq are enforced in sqlite3_config() */
   nMinLog = memsys5Log(sqlite3GlobalConfig.mnReq);
   mem5.szAtom = (1<<nMinLog);
   while( (int)sizeof(Mem5Link)>mem5.szAtom ){
@@ -16596,337 +16753,28 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
 struct sqlite3_mutex {
   HMTX mutex;       /* Mutex controlling the lock */
   int  id;          /* Mutex type */
-  int  nRef;        /* Number of references */
-  TID  owner;       /* Thread holding this mutex */
-};
-
-#define OS2_MUTEX_INITIALIZER   0,0,0,0
-
-/*
-** Initialize and deinitialize the mutex subsystem.
-*/
-static int os2MutexInit(void){ return SQLITE_OK; }
-static int os2MutexEnd(void){ return SQLITE_OK; }
-
-/*
-** The sqlite3_mutex_alloc() routine allocates a new
-** mutex and returns a pointer to it.  If it returns NULL
-** that means that a mutex could not be allocated. 
-** SQLite will unwind its stack and return an error.  The argument
-** to sqlite3_mutex_alloc() is one of these integer constants:
-**
-** <ul>
-** <li>  SQLITE_MUTEX_FAST               0
-** <li>  SQLITE_MUTEX_RECURSIVE          1
-** <li>  SQLITE_MUTEX_STATIC_MASTER      2
-** <li>  SQLITE_MUTEX_STATIC_MEM         3
-** <li>  SQLITE_MUTEX_STATIC_PRNG        4
-** </ul>
-**
-** The first two constants cause sqlite3_mutex_alloc() to create
-** a new mutex.  The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
-** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
-** The mutex implementation does not need to make a distinction
-** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
-** not want to.  But SQLite will only request a recursive mutex in
-** cases where it really needs one.  If a faster non-recursive mutex
-** implementation is available on the host platform, the mutex subsystem
-** might return such a mutex in response to SQLITE_MUTEX_FAST.
-**
-** The other allowed parameters to sqlite3_mutex_alloc() each return
-** a pointer to a static preexisting mutex.  Three static mutexes are
-** used by the current version of SQLite.  Future versions of SQLite
-** may add additional static mutexes.  Static mutexes are for internal
-** use by SQLite only.  Applications that use SQLite mutexes should
-** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
-** SQLITE_MUTEX_RECURSIVE.
-**
-** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
-** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call.  But for the static
-** mutex types, the same mutex is returned on every call that has
-** the same type number.
-*/
-static sqlite3_mutex *os2MutexAlloc(int iType){
-  sqlite3_mutex *p = NULL;
-  switch( iType ){
-    case SQLITE_MUTEX_FAST:
-    case SQLITE_MUTEX_RECURSIVE: {
-      p = sqlite3MallocZero( sizeof(*p) );
-      if( p ){
-        p->id = iType;
-        if( DosCreateMutexSem( 0, &p->mutex, 0, FALSE ) != NO_ERROR ){
-          sqlite3_free( p );
-          p = NULL;
-        }
-      }
-      break;
-    }
-    default: {
-      static volatile int isInit = 0;
-      static sqlite3_mutex staticMutexes[] = {
-        { OS2_MUTEX_INITIALIZER, },
-        { OS2_MUTEX_INITIALIZER, },
-        { OS2_MUTEX_INITIALIZER, },
-        { OS2_MUTEX_INITIALIZER, },
-        { OS2_MUTEX_INITIALIZER, },
-        { OS2_MUTEX_INITIALIZER, },
-      };
-      if ( !isInit ){
-        APIRET rc;
-        PTIB ptib;
-        PPIB ppib;
-        HMTX mutex;
-        char name[32];
-        DosGetInfoBlocks( &ptib, &ppib );
-        sqlite3_snprintf( sizeof(name), name, "\\SEM32\\SQLITE%04x",
-                          ppib->pib_ulpid );
-        while( !isInit ){
-          mutex = 0;
-          rc = DosCreateMutexSem( name, &mutex, 0, FALSE);
-          if( rc == NO_ERROR ){
-            unsigned int i;
-            if( !isInit ){
-              for( i = 0; i < sizeof(staticMutexes)/sizeof(staticMutexes[0]); i++ ){
-                DosCreateMutexSem( 0, &staticMutexes[i].mutex, 0, FALSE );
-              }
-              isInit = 1;
-            }
-            DosCloseMutexSem( mutex );
-          }else if( rc == ERROR_DUPLICATE_NAME ){
-            DosSleep( 1 );
-          }else{
-            return p;
-          }
-        }
-      }
-      assert( iType-2 >= 0 );
-      assert( iType-2 < sizeof(staticMutexes)/sizeof(staticMutexes[0]) );
-      p = &staticMutexes[iType-2];
-      p->id = iType;
-      break;
-    }
-  }
-  return p;
-}
-
-
-/*
-** This routine deallocates a previously allocated mutex.
-** SQLite is careful to deallocate every mutex that it allocates.
-*/
-static void os2MutexFree(sqlite3_mutex *p){
-  if( p==0 ) return;
-  assert( p->nRef==0 );
-  assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
-  DosCloseMutexSem( p->mutex );
-  sqlite3_free( p );
-}
-
 #ifdef SQLITE_DEBUG
-/*
-** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
-** intended for use inside assert() statements.
-*/
-static int os2MutexHeld(sqlite3_mutex *p){
-  TID tid;
-  PID pid;
-  ULONG ulCount;
-  PTIB ptib;
-  if( p!=0 ) {
-    DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
-  } else {
-    DosGetInfoBlocks(&ptib, NULL);
-    tid = ptib->tib_ptib2->tib2_ultid;
-  }
-  return p==0 || (p->nRef!=0 && p->owner==tid);
-}
-static int os2MutexNotheld(sqlite3_mutex *p){
-  TID tid;
-  PID pid;
-  ULONG ulCount;
-  PTIB ptib;
-  if( p!= 0 ) {
-    DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
-  } else {
-    DosGetInfoBlocks(&ptib, NULL);
-    tid = ptib->tib_ptib2->tib2_ultid;
-  }
-  return p==0 || p->nRef==0 || p->owner!=tid;
-}
+ int   trace;       /* True to trace changes */
 #endif
+};
 
-/*
-** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
-** to enter a mutex.  If another thread is already within the mutex,
-** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
-** SQLITE_BUSY.  The sqlite3_mutex_try() interface returns SQLITE_OK
-** upon successful entry.  Mutexes created using SQLITE_MUTEX_RECURSIVE can
-** be entered multiple times by the same thread.  In such cases the,
-** mutex must be exited an equal number of times before another thread
-** can enter.  If the same thread tries to enter any other kind of mutex
-** more than once, the behavior is undefined.
-*/
-static void os2MutexEnter(sqlite3_mutex *p){
-  TID tid;
-  PID holder1;
-  ULONG holder2;
-  if( p==0 ) return;
-  assert( p->id==SQLITE_MUTEX_RECURSIVE || os2MutexNotheld(p) );
-  DosRequestMutexSem(p->mutex, SEM_INDEFINITE_WAIT);
-  DosQueryMutexSem(p->mutex, &holder1, &tid, &holder2);
-  p->owner = tid;
-  p->nRef++;
-}
-static int os2MutexTry(sqlite3_mutex *p){
-  int rc;
-  TID tid;
-  PID holder1;
-  ULONG holder2;
-  if( p==0 ) return SQLITE_OK;
-  assert( p->id==SQLITE_MUTEX_RECURSIVE || os2MutexNotheld(p) );
-  if( DosRequestMutexSem(p->mutex, SEM_IMMEDIATE_RETURN) == NO_ERROR) {
-    DosQueryMutexSem(p->mutex, &holder1, &tid, &holder2);
-    p->owner = tid;
-    p->nRef++;
-    rc = SQLITE_OK;
-  } else {
-    rc = SQLITE_BUSY;
-  }
-
-  return rc;
-}
-
-/*
-** The sqlite3_mutex_leave() routine exits a mutex that was
-** previously entered by the same thread.  The behavior
-** is undefined if the mutex is not currently entered or
-** is not currently allocated.  SQLite will never do either.
-*/
-static void os2MutexLeave(sqlite3_mutex *p){
-  TID tid;
-  PID holder1;
-  ULONG holder2;
-  if( p==0 ) return;
-  assert( p->nRef>0 );
-  DosQueryMutexSem(p->mutex, &holder1, &tid, &holder2);
-  assert( p->owner==tid );
-  p->nRef--;
-  assert( p->nRef==0 || p->id==SQLITE_MUTEX_RECURSIVE );
-  DosReleaseMutexSem(p->mutex);
-}
-
-SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
-  static const sqlite3_mutex_methods sMutex = {
-    os2MutexInit,
-    os2MutexEnd,
-    os2MutexAlloc,
-    os2MutexFree,
-    os2MutexEnter,
-    os2MutexTry,
-    os2MutexLeave,
 #ifdef SQLITE_DEBUG
-    os2MutexHeld,
-    os2MutexNotheld
-#endif
-  };
-
-  return &sMutex;
-}
-#endif /* SQLITE_MUTEX_OS2 */
-
-/************** End of mutex_os2.c *******************************************/
-/************** Begin file mutex_unix.c **************************************/
-/*
-** 2007 August 28
-**
-** The author disclaims copyright to this source code.  In place of
-** a legal notice, here is a blessing:
-**
-**    May you do good and not evil.
-**    May you find forgiveness for yourself and forgive others.
-**    May you share freely, never taking more than you give.
-**
-*************************************************************************
-** This file contains the C functions that implement mutexes for pthreads
-*/
-
-/*
-** The code in this file is only used if we are compiling threadsafe
-** under unix with pthreads.
-**
-** Note that this implementation requires a version of pthreads that
-** supports recursive mutexes.
-*/
-#ifdef SQLITE_MUTEX_PTHREADS
-
-#include <pthread.h>
-
-/*
-** The sqlite3_mutex.id, sqlite3_mutex.nRef, and sqlite3_mutex.owner fields
-** are necessary under two condidtions:  (1) Debug builds and (2) using
-** home-grown mutexes.  Encapsulate these conditions into a single #define.
-*/
-#if defined(SQLITE_DEBUG) || defined(SQLITE_HOMEGROWN_RECURSIVE_MUTEX)
-# define SQLITE_MUTEX_NREF 1
+#define SQLITE3_MUTEX_INITIALIZER { 0, 0, 0 }
 #else
-# define SQLITE_MUTEX_NREF 0
-#endif
-
-/*
-** Each recursive mutex is an instance of the following structure.
-*/
-struct sqlite3_mutex {
-  pthread_mutex_t mutex;     /* Mutex controlling the lock */
-#if SQLITE_MUTEX_NREF
-  int id;                    /* Mutex type */
-  volatile int nRef;         /* Number of entrances */
-  volatile pthread_t owner;  /* Thread that is within this mutex */
-  int trace;                 /* True to trace changes */
-#endif
-};
-#if SQLITE_MUTEX_NREF
-#define SQLITE3_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER, 0, 0, (pthread_t)0, 0 }
-#else
-#define SQLITE3_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER }
-#endif
-
-/*
-** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
-** intended for use only inside assert() statements.  On some platforms,
-** there might be race conditions that can cause these routines to
-** deliver incorrect results.  In particular, if pthread_equal() is
-** not an atomic operation, then these routines might delivery
-** incorrect results.  On most platforms, pthread_equal() is a 
-** comparison of two integers and is therefore atomic.  But we are
-** told that HPUX is not such a platform.  If so, then these routines
-** will not always work correctly on HPUX.
-**
-** On those platforms where pthread_equal() is not atomic, SQLite
-** should be compiled without -DSQLITE_DEBUG and with -DNDEBUG to
-** make sure no assert() statements are evaluated and hence these
-** routines are never called.
-*/
-#if !defined(NDEBUG) || defined(SQLITE_DEBUG)
-static int pthreadMutexHeld(sqlite3_mutex *p){
-  return (p->nRef!=0 && pthread_equal(p->owner, pthread_self()));
-}
-static int pthreadMutexNotheld(sqlite3_mutex *p){
-  return p->nRef==0 || pthread_equal(p->owner, pthread_self())==0;
-}
+#define SQLITE3_MUTEX_INITIALIZER { 0, 0 }
 #endif
 
 /*
 ** Initialize and deinitialize the mutex subsystem.
 */
-static int pthreadMutexInit(void){ return SQLITE_OK; }
-static int pthreadMutexEnd(void){ return SQLITE_OK; }
+static int os2MutexInit(void){ return SQLITE_OK; }
+static int os2MutexEnd(void){ return SQLITE_OK; }
 
 /*
 ** The sqlite3_mutex_alloc() routine allocates a new
 ** mutex and returns a pointer to it.  If it returns NULL
-** that means that a mutex could not be allocated.  SQLite
-** will unwind its stack and return an error.  The argument
+** that means that a mutex could not be allocated. 
+** SQLite will unwind its stack and return an error.  The argument
 ** to sqlite3_mutex_alloc() is one of these integer constants:
 **
 ** <ul>
@@ -16937,7 +16785,319 @@ static int pthreadMutexEnd(void){ return SQLITE_OK; }
 ** <li>  SQLITE_MUTEX_STATIC_MEM2
 ** <li>  SQLITE_MUTEX_STATIC_PRNG
 ** <li>  SQLITE_MUTEX_STATIC_LRU
-** <li>  SQLITE_MUTEX_STATIC_PMEM
+** <li>  SQLITE_MUTEX_STATIC_LRU2
+** </ul>
+**
+** The first two constants cause sqlite3_mutex_alloc() to create
+** a new mutex.  The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
+** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
+** The mutex implementation does not need to make a distinction
+** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
+** not want to.  But SQLite will only request a recursive mutex in
+** cases where it really needs one.  If a faster non-recursive mutex
+** implementation is available on the host platform, the mutex subsystem
+** might return such a mutex in response to SQLITE_MUTEX_FAST.
+**
+** The other allowed parameters to sqlite3_mutex_alloc() each return
+** a pointer to a static preexisting mutex.  Six static mutexes are
+** used by the current version of SQLite.  Future versions of SQLite
+** may add additional static mutexes.  Static mutexes are for internal
+** use by SQLite only.  Applications that use SQLite mutexes should
+** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
+** SQLITE_MUTEX_RECURSIVE.
+**
+** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
+** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
+** returns a different mutex on every call.  But for the static
+** mutex types, the same mutex is returned on every call that has
+** the same type number.
+*/
+static sqlite3_mutex *os2MutexAlloc(int iType){
+  sqlite3_mutex *p = NULL;
+  switch( iType ){
+    case SQLITE_MUTEX_FAST:
+    case SQLITE_MUTEX_RECURSIVE: {
+      p = sqlite3MallocZero( sizeof(*p) );
+      if( p ){
+        p->id = iType;
+        if( DosCreateMutexSem( 0, &p->mutex, 0, FALSE ) != NO_ERROR ){
+          sqlite3_free( p );
+          p = NULL;
+        }
+      }
+      break;
+    }
+    default: {
+      static volatile int isInit = 0;
+      static sqlite3_mutex staticMutexes[6] = {
+        SQLITE3_MUTEX_INITIALIZER,
+        SQLITE3_MUTEX_INITIALIZER,
+        SQLITE3_MUTEX_INITIALIZER,
+        SQLITE3_MUTEX_INITIALIZER,
+        SQLITE3_MUTEX_INITIALIZER,
+        SQLITE3_MUTEX_INITIALIZER,
+      };
+      if ( !isInit ){
+        APIRET rc;
+        PTIB ptib;
+        PPIB ppib;
+        HMTX mutex;
+        char name[32];
+        DosGetInfoBlocks( &ptib, &ppib );
+        sqlite3_snprintf( sizeof(name), name, "\\SEM32\\SQLITE%04x",
+                          ppib->pib_ulpid );
+        while( !isInit ){
+          mutex = 0;
+          rc = DosCreateMutexSem( name, &mutex, 0, FALSE);
+          if( rc == NO_ERROR ){
+            unsigned int i;
+            if( !isInit ){
+              for( i = 0; i < sizeof(staticMutexes)/sizeof(staticMutexes[0]); i++ ){
+                DosCreateMutexSem( 0, &staticMutexes[i].mutex, 0, FALSE );
+              }
+              isInit = 1;
+            }
+            DosCloseMutexSem( mutex );
+          }else if( rc == ERROR_DUPLICATE_NAME ){
+            DosSleep( 1 );
+          }else{
+            return p;
+          }
+        }
+      }
+      assert( iType-2 >= 0 );
+      assert( iType-2 < sizeof(staticMutexes)/sizeof(staticMutexes[0]) );
+      p = &staticMutexes[iType-2];
+      p->id = iType;
+      break;
+    }
+  }
+  return p;
+}
+
+
+/*
+** This routine deallocates a previously allocated mutex.
+** SQLite is careful to deallocate every mutex that it allocates.
+*/
+static void os2MutexFree(sqlite3_mutex *p){
+#ifdef SQLITE_DEBUG
+  TID tid;
+  PID pid;
+  ULONG ulCount;
+  DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
+  assert( ulCount==0 );
+  assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
+#endif
+  DosCloseMutexSem( p->mutex );
+  sqlite3_free( p );
+}
+
+#ifdef SQLITE_DEBUG
+/*
+** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
+** intended for use inside assert() statements.
+*/
+static int os2MutexHeld(sqlite3_mutex *p){
+  TID tid;
+  PID pid;
+  ULONG ulCount;
+  PTIB ptib;
+  DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
+  if( ulCount==0 || ( ulCount>1 && p->id!=SQLITE_MUTEX_RECURSIVE ) )
+    return 0;
+  DosGetInfoBlocks(&ptib, NULL);
+  return tid==ptib->tib_ptib2->tib2_ultid;
+}
+static int os2MutexNotheld(sqlite3_mutex *p){
+  TID tid;
+  PID pid;
+  ULONG ulCount;
+  PTIB ptib;
+  DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
+  if( ulCount==0 )
+    return 1;
+  DosGetInfoBlocks(&ptib, NULL);
+  return tid!=ptib->tib_ptib2->tib2_ultid;
+}
+static void os2MutexTrace(sqlite3_mutex *p, char *pAction){
+  TID   tid;
+  PID   pid;
+  ULONG ulCount;
+  DosQueryMutexSem(p->mutex, &pid, &tid, &ulCount);
+  printf("%s mutex %p (%d) with nRef=%ld\n", pAction, (void*)p, p->trace, ulCount);
+}
+#endif
+
+/*
+** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
+** to enter a mutex.  If another thread is already within the mutex,
+** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
+** SQLITE_BUSY.  The sqlite3_mutex_try() interface returns SQLITE_OK
+** upon successful entry.  Mutexes created using SQLITE_MUTEX_RECURSIVE can
+** be entered multiple times by the same thread.  In such cases the,
+** mutex must be exited an equal number of times before another thread
+** can enter.  If the same thread tries to enter any other kind of mutex
+** more than once, the behavior is undefined.
+*/
+static void os2MutexEnter(sqlite3_mutex *p){
+  assert( p->id==SQLITE_MUTEX_RECURSIVE || os2MutexNotheld(p) );
+  DosRequestMutexSem(p->mutex, SEM_INDEFINITE_WAIT);
+#ifdef SQLITE_DEBUG
+  if( p->trace ) os2MutexTrace(p, "enter");
+#endif
+}
+static int os2MutexTry(sqlite3_mutex *p){
+  int rc = SQLITE_BUSY;
+  assert( p->id==SQLITE_MUTEX_RECURSIVE || os2MutexNotheld(p) );
+  if( DosRequestMutexSem(p->mutex, SEM_IMMEDIATE_RETURN) == NO_ERROR ) {
+    rc = SQLITE_OK;
+#ifdef SQLITE_DEBUG
+    if( p->trace ) os2MutexTrace(p, "try");
+#endif
+  }
+  return rc;
+}
+
+/*
+** The sqlite3_mutex_leave() routine exits a mutex that was
+** previously entered by the same thread.  The behavior
+** is undefined if the mutex is not currently entered or
+** is not currently allocated.  SQLite will never do either.
+*/
+static void os2MutexLeave(sqlite3_mutex *p){
+  assert( os2MutexHeld(p) );
+  DosReleaseMutexSem(p->mutex);
+#ifdef SQLITE_DEBUG
+  if( p->trace ) os2MutexTrace(p, "leave");
+#endif
+}
+
+SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
+  static const sqlite3_mutex_methods sMutex = {
+    os2MutexInit,
+    os2MutexEnd,
+    os2MutexAlloc,
+    os2MutexFree,
+    os2MutexEnter,
+    os2MutexTry,
+    os2MutexLeave,
+#ifdef SQLITE_DEBUG
+    os2MutexHeld,
+    os2MutexNotheld
+#else
+    0,
+    0
+#endif
+  };
+
+  return &sMutex;
+}
+#endif /* SQLITE_MUTEX_OS2 */
+
+/************** End of mutex_os2.c *******************************************/
+/************** Begin file mutex_unix.c **************************************/
+/*
+** 2007 August 28
+**
+** The author disclaims copyright to this source code.  In place of
+** a legal notice, here is a blessing:
+**
+**    May you do good and not evil.
+**    May you find forgiveness for yourself and forgive others.
+**    May you share freely, never taking more than you give.
+**
+*************************************************************************
+** This file contains the C functions that implement mutexes for pthreads
+*/
+
+/*
+** The code in this file is only used if we are compiling threadsafe
+** under unix with pthreads.
+**
+** Note that this implementation requires a version of pthreads that
+** supports recursive mutexes.
+*/
+#ifdef SQLITE_MUTEX_PTHREADS
+
+#include <pthread.h>
+
+/*
+** The sqlite3_mutex.id, sqlite3_mutex.nRef, and sqlite3_mutex.owner fields
+** are necessary under two condidtions:  (1) Debug builds and (2) using
+** home-grown mutexes.  Encapsulate these conditions into a single #define.
+*/
+#if defined(SQLITE_DEBUG) || defined(SQLITE_HOMEGROWN_RECURSIVE_MUTEX)
+# define SQLITE_MUTEX_NREF 1
+#else
+# define SQLITE_MUTEX_NREF 0
+#endif
+
+/*
+** Each recursive mutex is an instance of the following structure.
+*/
+struct sqlite3_mutex {
+  pthread_mutex_t mutex;     /* Mutex controlling the lock */
+#if SQLITE_MUTEX_NREF
+  int id;                    /* Mutex type */
+  volatile int nRef;         /* Number of entrances */
+  volatile pthread_t owner;  /* Thread that is within this mutex */
+  int trace;                 /* True to trace changes */
+#endif
+};
+#if SQLITE_MUTEX_NREF
+#define SQLITE3_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER, 0, 0, (pthread_t)0, 0 }
+#else
+#define SQLITE3_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER }
+#endif
+
+/*
+** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
+** intended for use only inside assert() statements.  On some platforms,
+** there might be race conditions that can cause these routines to
+** deliver incorrect results.  In particular, if pthread_equal() is
+** not an atomic operation, then these routines might delivery
+** incorrect results.  On most platforms, pthread_equal() is a 
+** comparison of two integers and is therefore atomic.  But we are
+** told that HPUX is not such a platform.  If so, then these routines
+** will not always work correctly on HPUX.
+**
+** On those platforms where pthread_equal() is not atomic, SQLite
+** should be compiled without -DSQLITE_DEBUG and with -DNDEBUG to
+** make sure no assert() statements are evaluated and hence these
+** routines are never called.
+*/
+#if !defined(NDEBUG) || defined(SQLITE_DEBUG)
+static int pthreadMutexHeld(sqlite3_mutex *p){
+  return (p->nRef!=0 && pthread_equal(p->owner, pthread_self()));
+}
+static int pthreadMutexNotheld(sqlite3_mutex *p){
+  return p->nRef==0 || pthread_equal(p->owner, pthread_self())==0;
+}
+#endif
+
+/*
+** Initialize and deinitialize the mutex subsystem.
+*/
+static int pthreadMutexInit(void){ return SQLITE_OK; }
+static int pthreadMutexEnd(void){ return SQLITE_OK; }
+
+/*
+** The sqlite3_mutex_alloc() routine allocates a new
+** mutex and returns a pointer to it.  If it returns NULL
+** that means that a mutex could not be allocated.  SQLite
+** will unwind its stack and return an error.  The argument
+** to sqlite3_mutex_alloc() is one of these integer constants:
+**
+** <ul>
+** <li>  SQLITE_MUTEX_FAST
+** <li>  SQLITE_MUTEX_RECURSIVE
+** <li>  SQLITE_MUTEX_STATIC_MASTER
+** <li>  SQLITE_MUTEX_STATIC_MEM
+** <li>  SQLITE_MUTEX_STATIC_MEM2
+** <li>  SQLITE_MUTEX_STATIC_PRNG
+** <li>  SQLITE_MUTEX_STATIC_LRU
+** <li>  SQLITE_MUTEX_STATIC_PMEM
 ** </ul>
 **
 ** The first two constants cause sqlite3_mutex_alloc() to create
@@ -17471,7 +17631,7 @@ static int winMutexTry(sqlite3_mutex *p){
 #endif
 #ifdef SQLITE_DEBUG
   if( rc==SQLITE_OK && p->trace ){
-    printf("enter mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef);
+    printf("try mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef);
   }
 #endif
   return rc;
@@ -17928,7 +18088,7 @@ SQLITE_PRIVATE void sqlite3ScratchFree(void *p){
       pSlot->pNext = mem0.pScratchFree;
       mem0.pScratchFree = pSlot;
       mem0.nScratchFree++;
-      assert( mem0.nScratchFree<=sqlite3GlobalConfig.nScratch );
+      assert( mem0.nScratchFree <= (u32)sqlite3GlobalConfig.nScratch );
       sqlite3StatusAdd(SQLITE_STATUS_SCRATCH_USED, -1);
       sqlite3_mutex_leave(mem0.mutex);
     }else{
@@ -18702,7 +18862,11 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
             v = va_arg(ap,int);
           }
           if( v<0 ){
-            longvalue = -v;
+            if( v==SMALLEST_INT64 ){
+              longvalue = ((u64)1)<<63;
+            }else{
+              longvalue = -v;
+            }
             prefix = '-';
           }else{
             longvalue = v;
@@ -19641,7 +19805,7 @@ SQLITE_PRIVATE int sqlite3Utf8Read(
   const unsigned char *zIn,       /* First byte of UTF-8 character */
   const unsigned char **pzNext    /* Write first byte past UTF-8 char here */
 ){
-  int c;
+  unsigned int c;
 
   /* Same as READ_UTF8() above but without the zTerm parameter.
   ** For this routine, we assume the UTF8 string is always zero-terminated.
@@ -19884,15 +20048,15 @@ SQLITE_PRIVATE int sqlite3Utf8CharLen(const char *zIn, int nByte){
 ** This has the effect of making sure that the string is well-formed
 ** UTF-8.  Miscoded characters are removed.
 **
-** The translation is done in-place (since it is impossible for the
-** correct UTF-8 encoding to be longer than a malformed encoding).
+** The translation is done in-place and aborted if the output
+** overruns the input.
 */
 SQLITE_PRIVATE int sqlite3Utf8To8(unsigned char *zIn){
   unsigned char *zOut = zIn;
   unsigned char *zStart = zIn;
   u32 c;
 
-  while( zIn[0] ){
+  while( zIn[0] && zOut<=zIn ){
     c = sqlite3Utf8Read(zIn, (const u8**)&zIn);
     if( c!=0xfffd ){
       WRITE_UTF8(zOut, c);
@@ -20061,8 +20225,8 @@ SQLITE_PRIVATE void sqlite3UtfSelfTest(void){
 */
 #ifdef SQLITE_COVERAGE_TEST
 SQLITE_PRIVATE void sqlite3Coverage(int x){
-  static int dummy = 0;
-  dummy += x;
+  static unsigned dummy = 0;
+  dummy += (unsigned)x;
 }
 #endif
 
@@ -20476,14 +20640,17 @@ static int compare2pow63(const char *zNum, int incr){
 
 
 /*
-** Convert zNum to a 64-bit signed integer and write
-** the value of the integer into *pNum.
-** If zNum is exactly 9223372036854665808, return 2.
-** This is a special case as the context will determine
-** if it is too big (used as a negative).
-** If zNum is not an integer or is an integer that 
-** is too large to be expressed with 64 bits,
-** then return 1.  Otherwise return 0.
+** Convert zNum to a 64-bit signed integer.
+**
+** If the zNum value is representable as a 64-bit twos-complement 
+** integer, then write that value into *pNum and return 0.
+**
+** If zNum is exactly 9223372036854665808, return 2.  This special
+** case is broken out because while 9223372036854665808 cannot be a 
+** signed 64-bit integer, its negative -9223372036854665808 can be.
+**
+** If zNum is too big for a 64-bit integer and is not
+** 9223372036854665808 then return 1.
 **
 ** length is the number of bytes in the string (bytes, not characters).
 ** The string is not necessarily zero-terminated.  The encoding is
@@ -20491,7 +20658,7 @@ static int compare2pow63(const char *zNum, int incr){
 */
 SQLITE_PRIVATE int sqlite3Atoi64(const char *zNum, i64 *pNum, int length, u8 enc){
   int incr = (enc==SQLITE_UTF8?1:2);
-  i64 v = 0;
+  u64 u = 0;
   int neg = 0; /* assume positive */
   int i;
   int c = 0;
@@ -20499,20 +20666,26 @@ SQLITE_PRIVATE int sqlite3Atoi64(const char *zNum, i64 *pNum, int length, u8 enc
   const char *zEnd = zNum + length;
   if( enc==SQLITE_UTF16BE ) zNum++;
   while( zNum<zEnd && sqlite3Isspace(*zNum) ) zNum+=incr;
-  if( zNum>=zEnd ) goto do_atoi_calc;
-  if( *zNum=='-' ){
-    neg = 1;
-    zNum+=incr;
-  }else if( *zNum=='+' ){
-    zNum+=incr;
+  if( zNum<zEnd ){
+    if( *zNum=='-' ){
+      neg = 1;
+      zNum+=incr;
+    }else if( *zNum=='+' ){
+      zNum+=incr;
+    }
   }
-do_atoi_calc:
   zStart = zNum;
   while( zNum<zEnd && zNum[0]=='0' ){ zNum+=incr; } /* Skip leading zeros. */
   for(i=0; &zNum[i]<zEnd && (c=zNum[i])>='0' && c<='9'; i+=incr){
-    v = v*10 + c - '0';
+    u = u*10 + c - '0';
+  }
+  if( u>LARGEST_INT64 ){
+    *pNum = SMALLEST_INT64;
+  }else if( neg ){
+    *pNum = -(i64)u;
+  }else{
+    *pNum = (i64)u;
   }
-  *pNum = neg ? -v : v;
   testcase( i==18 );
   testcase( i==19 );
   testcase( i==20 );
@@ -20522,14 +20695,25 @@ do_atoi_calc:
     return 1;
   }else if( i<19*incr ){
     /* Less than 19 digits, so we know that it fits in 64 bits */
+    assert( u<=LARGEST_INT64 );
     return 0;
   }else{
-    /* 19-digit numbers must be no larger than 9223372036854775807 if positive
-    ** or 9223372036854775808 if negative.  Note that 9223372036854665808
-    ** is 2^63. Return 1 if to large */
-    c=compare2pow63(zNum, incr);
-    if( c==0 && neg==0 ) return 2; /* too big, exactly 9223372036854665808 */
-    return c<neg ? 0 : 1;
+    /* zNum is a 19-digit numbers.  Compare it against 9223372036854775808. */
+    c = compare2pow63(zNum, incr);
+    if( c<0 ){
+      /* zNum is less than 9223372036854775808 so it fits */
+      assert( u<=LARGEST_INT64 );
+      return 0;
+    }else if( c>0 ){
+      /* zNum is greater than 9223372036854775808 so it overflows */
+      return 1;
+    }else{
+      /* zNum is exactly 9223372036854775808.  Fits if negative.  The
+      ** special case 2 overflow if positive */
+      assert( u-1==LARGEST_INT64 );
+      assert( (*pNum)==SMALLEST_INT64 );
+      return neg ? 0 : 2;
+    }
   }
 }
 
@@ -21096,6 +21280,74 @@ SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
   }
 }
 
+/*
+** Attempt to add, substract, or multiply the 64-bit signed value iB against
+** the other 64-bit signed integer at *pA and store the result in *pA.
+** Return 0 on success.  Or if the operation would have resulted in an
+** overflow, leave *pA unchanged and return 1.
+*/
+SQLITE_PRIVATE int sqlite3AddInt64(i64 *pA, i64 iB){
+  i64 iA = *pA;
+  testcase( iA==0 ); testcase( iA==1 );
+  testcase( iB==-1 ); testcase( iB==0 );
+  if( iB>=0 ){
+    testcase( iA>0 && LARGEST_INT64 - iA == iB );
+    testcase( iA>0 && LARGEST_INT64 - iA == iB - 1 );
+    if( iA>0 && LARGEST_INT64 - iA < iB ) return 1;
+    *pA += iB;
+  }else{
+    testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 1 );
+    testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 2 );
+    if( iA<0 && -(iA + LARGEST_INT64) > iB + 1 ) return 1;
+    *pA += iB;
+  }
+  return 0; 
+}
+SQLITE_PRIVATE int sqlite3SubInt64(i64 *pA, i64 iB){
+  testcase( iB==SMALLEST_INT64+1 );
+  if( iB==SMALLEST_INT64 ){
+    testcase( (*pA)==(-1) ); testcase( (*pA)==0 );
+    if( (*pA)>=0 ) return 1;
+    *pA -= iB;
+    return 0;
+  }else{
+    return sqlite3AddInt64(pA, -iB);
+  }
+}
+#define TWOPOWER32 (((i64)1)<<32)
+#define TWOPOWER31 (((i64)1)<<31)
+SQLITE_PRIVATE int sqlite3MulInt64(i64 *pA, i64 iB){
+  i64 iA = *pA;
+  i64 iA1, iA0, iB1, iB0, r;
+
+  iA1 = iA/TWOPOWER32;
+  iA0 = iA % TWOPOWER32;
+  iB1 = iB/TWOPOWER32;
+  iB0 = iB % TWOPOWER32;
+  if( iA1*iB1 != 0 ) return 1;
+  assert( iA1*iB0==0 || iA0*iB1==0 );
+  r = iA1*iB0 + iA0*iB1;
+  testcase( r==(-TWOPOWER31)-1 );
+  testcase( r==(-TWOPOWER31) );
+  testcase( r==TWOPOWER31 );
+  testcase( r==TWOPOWER31-1 );
+  if( r<(-TWOPOWER31) || r>=TWOPOWER31 ) return 1;
+  r *= TWOPOWER32;
+  if( sqlite3AddInt64(&r, iA0*iB0) ) return 1;
+  *pA = r;
+  return 0;
+}
+
+/*
+** Compute the absolute value of a 32-bit signed integer, of possible.  Or 
+** if the integer has a value of -2147483648, return +2147483647
+*/
+SQLITE_PRIVATE int sqlite3AbsInt32(int x){
+  if( x>=0 ) return x;
+  if( x==(int)0x80000000 ) return 0x7fffffff;
+  return -x;
+}
+
 /************** End of util.c ************************************************/
 /************** Begin file hash.c ********************************************/
 /*
@@ -21794,20 +22046,35 @@ SQLITE_API int sqlite3_open_file_count = 0;
 /************** End of os_common.h *******************************************/
 /************** Continuing where we left off in os_os2.c *********************/
 
+/* Forward references */
+typedef struct os2File os2File;         /* The file structure */
+typedef struct os2ShmNode os2ShmNode;   /* A shared descritive memory node */
+typedef struct os2ShmLink os2ShmLink;   /* A connection to shared-memory */
+
 /*
 ** The os2File structure is subclass of sqlite3_file specific for the OS/2
 ** protability layer.
 */
-typedef struct os2File os2File;
 struct os2File {
   const sqlite3_io_methods *pMethod;  /* Always the first entry */
   HFILE h;                  /* Handle for accessing the file */
-  char* pathToDel;          /* Name of file to delete on close, NULL if not */
-  unsigned char locktype;   /* Type of lock currently held on this file */
+  int flags;                /* Flags provided to os2Open() */
+  int locktype;             /* Type of lock currently held on this file */
+  int szChunk;              /* Chunk size configured by FCNTL_CHUNK_SIZE */
+  char *zFullPathCp;        /* Full path name of this file */
+  os2ShmLink *pShmLink;     /* Instance of shared memory on this file */
 };
 
 #define LOCK_TIMEOUT 10L /* the default locking timeout */
 
+/*
+** Missing from some versions of the OS/2 toolkit -
+** used to allocate from high memory if possible
+*/
+#ifndef OBJ_ANY
+# define OBJ_ANY 0x00000400
+#endif
+
 /*****************************************************************************
 ** The next group of routines implement the I/O methods specified
 ** by the sqlite3_io_methods object.
@@ -21817,21 +22084,24 @@ struct os2File {
 ** Close a file.
 */
 static int os2Close( sqlite3_file *id ){
-  APIRET rc = NO_ERROR;
-  os2File *pFile;
-  if( id && (pFile = (os2File*)id) != 0 ){
-    OSTRACE(( "CLOSE %d\n", pFile->h ));
-    rc = DosClose( pFile->h );
-    pFile->locktype = NO_LOCK;
-    if( pFile->pathToDel != NULL ){
-      rc = DosForceDelete( (PSZ)pFile->pathToDel );
-      free( pFile->pathToDel );
-      pFile->pathToDel = NULL;
-    }
-    id = 0;
-    OpenCounter( -1 );
-  }
+  APIRET rc;
+  os2File *pFile = (os2File*)id;
+
+  assert( id!=0 );
+  OSTRACE(( "CLOSE %d (%s)\n", pFile->h, pFile->zFullPathCp ));
+
+  rc = DosClose( pFile->h );
+
+  if( pFile->flags & SQLITE_OPEN_DELETEONCLOSE )
+    DosForceDelete( (PSZ)pFile->zFullPathCp );
 
+  free( pFile->zFullPathCp );
+  pFile->zFullPathCp = NULL;
+  pFile->locktype = NO_LOCK;
+  pFile->h = (HFILE)-1;
+  pFile->flags = 0;
+
+  OpenCounter( -1 );
   return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR;
 }
 
@@ -21904,10 +22174,21 @@ static int os2Write(
 ** Truncate an open file to a specified size
 */
 static int os2Truncate( sqlite3_file *id, i64 nByte ){
-  APIRET rc = NO_ERROR;
+  APIRET rc;
   os2File *pFile = (os2File*)id;
+  assert( id!=0 );
   OSTRACE(( "TRUNCATE %d %lld\n", pFile->h, nByte ));
   SimulateIOError( return SQLITE_IOERR_TRUNCATE );
+
+  /* If the user has configured a chunk-size for this file, truncate the
+  ** file so that it consists of an integer number of chunks (i.e. the
+  ** actual file size after the operation may be larger than the requested
+  ** size).
+  */
+  if( pFile->szChunk ){
+    nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
+  }
+  
   rc = DosSetFileSize( pFile->h, nByte );
   return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR_TRUNCATE;
 }
@@ -22271,6 +22552,20 @@ static int os2FileControl(sqlite3_file *id, int op, void *pArg){
                 ((os2File*)id)->h, ((os2File*)id)->locktype ));
       return SQLITE_OK;
     }
+    case SQLITE_FCNTL_CHUNK_SIZE: {
+      ((os2File*)id)->szChunk = *(int*)pArg;
+      return SQLITE_OK;
+    }
+    case SQLITE_FCNTL_SIZE_HINT: {
+      sqlite3_int64 sz = *(sqlite3_int64*)pArg;
+      SimulateIOErrorBenign(1);
+      os2Truncate(id, sz);
+      SimulateIOErrorBenign(0);
+      return SQLITE_OK;
+    }
+    case SQLITE_FCNTL_SYNC_OMITTED: {
+      return SQLITE_OK;
+    }
   }
   return SQLITE_NOTFOUND;
 }
@@ -22286,6 +22581,7 @@ static int os2FileControl(sqlite3_file *id, int op, void *pArg){
 ** same for both.
 */
 static int os2SectorSize(sqlite3_file *id){
+  UNUSED_PARAMETER(id);
   return SQLITE_DEFAULT_SECTOR_SIZE;
 }
 
@@ -22293,7 +22589,8 @@ static int os2SectorSize(sqlite3_file *id){
 ** Return a vector of device characteristics.
 */
 static int os2DeviceCharacteristics(sqlite3_file *id){
-  return 0;
+  UNUSED_PARAMETER(id);
+  return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;
 }
 
 
@@ -22380,26 +22677,682 @@ char *convertCpPathToUtf8( const char *in ){
   return out;
 }
 
+
+#ifndef SQLITE_OMIT_WAL
+
+/*
+** Use main database file for interprocess locking. If un-defined
+** a separate file is created for this purpose. The file will be
+** used only to set file locks. There will be no data written to it.
+*/
+#define SQLITE_OS2_NO_WAL_LOCK_FILE     
+
+#if 0
+static void _ERR_TRACE( const char *fmt, ... ) {
+  va_list  ap;
+  va_start(ap, fmt);
+  vfprintf(stderr, fmt, ap);
+  fflush(stderr);
+}
+#define ERR_TRACE(rc, msg)        \
+        if( (rc) != SQLITE_OK ) _ERR_TRACE msg;
+#else
+#define ERR_TRACE(rc, msg)
+#endif
+
+/*
+** Helper functions to obtain and relinquish the global mutex. The
+** global mutex is used to protect os2ShmNodeList.
+**
+** Function os2ShmMutexHeld() is used to assert() that the global mutex 
+** is held when required. This function is only used as part of assert() 
+** statements. e.g.
+**
+**   os2ShmEnterMutex()
+**     assert( os2ShmMutexHeld() );
+**   os2ShmLeaveMutex()
+*/
+static void os2ShmEnterMutex(void){
+  sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER));
+}
+static void os2ShmLeaveMutex(void){
+  sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER));
+}
+#ifdef SQLITE_DEBUG
+static int os2ShmMutexHeld(void) {
+  return sqlite3_mutex_held(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER));
+}
+int GetCurrentProcessId(void) {
+  PPIB pib;
+  DosGetInfoBlocks(NULL, &pib);
+  return (int)pib->pib_ulpid;
+}
+#endif
+
+/*
+** Object used to represent a the shared memory area for a single log file.
+** When multiple threads all reference the same log-summary, each thread has
+** its own os2File object, but they all point to a single instance of this 
+** object.  In other words, each log-summary is opened only once per process.
+**
+** os2ShmMutexHeld() must be true when creating or destroying
+** this object or while reading or writing the following fields:
+**
+**      nRef
+**      pNext 
+**
+** The following fields are read-only after the object is created:
+** 
+**      szRegion
+**      hLockFile
+**      shmBaseName
+**
+** Either os2ShmNode.mutex must be held or os2ShmNode.nRef==0 and
+** os2ShmMutexHeld() is true when reading or writing any other field
+** in this structure.
+**
+*/
+struct os2ShmNode {
+  sqlite3_mutex *mutex;      /* Mutex to access this object */
+  os2ShmNode *pNext;         /* Next in list of all os2ShmNode objects */
+
+  int szRegion;              /* Size of shared-memory regions */
+
+  int nRegion;               /* Size of array apRegion */
+  void **apRegion;           /* Array of pointers to shared-memory regions */
+
+  int nRef;                  /* Number of os2ShmLink objects pointing to this */
+  os2ShmLink *pFirst;        /* First os2ShmLink object pointing to this */
+
+  HFILE hLockFile;           /* File used for inter-process memory locking */
+  char shmBaseName[1];       /* Name of the memory object !!! must last !!! */
+};
+
+
+/*
+** Structure used internally by this VFS to record the state of an
+** open shared memory connection.
+**
+** The following fields are initialized when this object is created and
+** are read-only thereafter:
+**
+**    os2Shm.pShmNode
+**    os2Shm.id
+**
+** All other fields are read/write.  The os2Shm.pShmNode->mutex must be held
+** while accessing any read/write fields.
+*/
+struct os2ShmLink {
+  os2ShmNode *pShmNode;      /* The underlying os2ShmNode object */
+  os2ShmLink *pNext;         /* Next os2Shm with the same os2ShmNode */
+  u32 sharedMask;            /* Mask of shared locks held */
+  u32 exclMask;              /* Mask of exclusive locks held */
+#ifdef SQLITE_DEBUG
+  u8 id;                     /* Id of this connection with its os2ShmNode */
+#endif
+};
+
+
+/*
+** A global list of all os2ShmNode objects.
+**
+** The os2ShmMutexHeld() must be true while reading or writing this list.
+*/
+static os2ShmNode *os2ShmNodeList = NULL;
+
+/*
+** Constants used for locking
+*/
+#ifdef  SQLITE_OS2_NO_WAL_LOCK_FILE
+#define OS2_SHM_BASE   (PENDING_BYTE + 0x10000)         /* first lock byte */
+#else
+#define OS2_SHM_BASE   ((22+SQLITE_SHM_NLOCK)*4)        /* first lock byte */
+#endif
+
+#define OS2_SHM_DMS    (OS2_SHM_BASE+SQLITE_SHM_NLOCK)  /* deadman switch */
+
+/*
+** Apply advisory locks for all n bytes beginning at ofst.
+*/
+#define _SHM_UNLCK  1   /* no lock */
+#define _SHM_RDLCK  2   /* shared lock, no wait */
+#define _SHM_WRLCK  3   /* exlusive lock, no wait */
+#define _SHM_WRLCK_WAIT 4 /* exclusive lock, wait */
+static int os2ShmSystemLock(
+  os2ShmNode *pNode,    /* Apply locks to this open shared-memory segment */
+  int lockType,         /* _SHM_UNLCK, _SHM_RDLCK, _SHM_WRLCK or _SHM_WRLCK_WAIT */
+  int ofst,             /* Offset to first byte to be locked/unlocked */
+  int nByte             /* Number of bytes to lock or unlock */
+){
+  APIRET rc;
+  FILELOCK area;
+  ULONG mode, timeout;
+
+  /* Access to the os2ShmNode object is serialized by the caller */
+  assert( sqlite3_mutex_held(pNode->mutex) || pNode->nRef==0 );
+
+  mode = 1;     /* shared lock */
+  timeout = 0;  /* no wait */
+  area.lOffset = ofst;
+  area.lRange = nByte;
+
+  switch( lockType ) {
+    case _SHM_WRLCK_WAIT:
+      timeout = (ULONG)-1;      /* wait forever */
+    case _SHM_WRLCK:
+      mode = 0;                 /* exclusive lock */
+    case _SHM_RDLCK:
+      rc = DosSetFileLocks(pNode->hLockFile, 
+                           NULL, &area, timeout, mode);
+      break;
+    /* case _SHM_UNLCK: */
+    default:
+      rc = DosSetFileLocks(pNode->hLockFile, 
+                           &area, NULL, 0, 0);
+      break;
+  }
+                          
+  OSTRACE(("SHM-LOCK %d %s %s 0x%08lx\n", 
+           pNode->hLockFile,
+           rc==SQLITE_OK ? "ok" : "failed",
+           lockType==_SHM_UNLCK ? "Unlock" : "Lock",
+           rc));
+
+  ERR_TRACE(rc, ("os2ShmSystemLock: %d %s\n", rc, pNode->shmBaseName))
+
+  return ( rc == 0 ) ?  SQLITE_OK : SQLITE_BUSY;
+}
+
+/*
+** Find an os2ShmNode in global list or allocate a new one, if not found.
+**
+** This is not a VFS shared-memory method; it is a utility function called
+** by VFS shared-memory methods.
+*/
+static int os2OpenSharedMemory( os2File *fd, int szRegion ) {
+  os2ShmLink *pLink;
+  os2ShmNode *pNode;
+  int cbShmName, rc = SQLITE_OK;
+  char shmName[CCHMAXPATH + 30];
+#ifndef SQLITE_OS2_NO_WAL_LOCK_FILE
+  ULONG action;
+#endif
+  
+  /* We need some additional space at the end to append the region number */
+  cbShmName = sprintf(shmName, "\\SHAREMEM\\%s", fd->zFullPathCp );
+  if( cbShmName >= CCHMAXPATH-8 )
+    return SQLITE_IOERR_SHMOPEN; 
+
+  /* Replace colon in file name to form a valid shared memory name */
+  shmName[10+1] = '!';
+
+  /* Allocate link object (we free it later in case of failure) */
+  pLink = sqlite3_malloc( sizeof(*pLink) );
+  if( !pLink )
+    return SQLITE_NOMEM;
+
+  /* Access node list */
+  os2ShmEnterMutex();
+
+  /* Find node by it's shared memory base name */
+  for( pNode = os2ShmNodeList; 
+       pNode && stricmp(shmName, pNode->shmBaseName) != 0; 
+       pNode = pNode->pNext )   ;
+
+  /* Not found: allocate a new node */
+  if( !pNode ) {
+    pNode = sqlite3_malloc( sizeof(*pNode) + cbShmName );
+    if( pNode ) {
+      memset(pNode, 0, sizeof(*pNode) );
+      pNode->szRegion = szRegion;
+      pNode->hLockFile = (HFILE)-1;      
+      strcpy(pNode->shmBaseName, shmName);
+
+#ifdef SQLITE_OS2_NO_WAL_LOCK_FILE
+      if( DosDupHandle(fd->h, &pNode->hLockFile) != 0 ) {
+#else
+      sprintf(shmName, "%s-lck", fd->zFullPathCp);
+      if( DosOpen((PSZ)shmName, &pNode->hLockFile, &action, 0, FILE_NORMAL, 
+                  OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW,
+                  OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE | 
+                  OPEN_FLAGS_NOINHERIT | OPEN_FLAGS_FAIL_ON_ERROR,
+                  NULL) != 0 ) {
+#endif
+        sqlite3_free(pNode);  
+        rc = SQLITE_IOERR;
+      } else {
+        pNode->mutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST);
+        if( !pNode->mutex ) {
+          sqlite3_free(pNode);  
+          rc = SQLITE_NOMEM;
+        }
+      }   
+    } else {
+      rc = SQLITE_NOMEM;
+    }
+    
+    if( rc == SQLITE_OK ) {
+      pNode->pNext = os2ShmNodeList;
+      os2ShmNodeList = pNode;
+    } else {
+      pNode = NULL;
+    }
+  } else if( pNode->szRegion != szRegion ) {
+    rc = SQLITE_IOERR_SHMSIZE;
+    pNode = NULL;
+  }
+
+  if( pNode ) {
+    sqlite3_mutex_enter(pNode->mutex);
+
+    memset(pLink, 0, sizeof(*pLink));
+
+    pLink->pShmNode = pNode;
+    pLink->pNext = pNode->pFirst;
+    pNode->pFirst = pLink;
+    pNode->nRef++;
+
+    fd->pShmLink = pLink;
+
+    sqlite3_mutex_leave(pNode->mutex);
+    
+  } else {
+    /* Error occured. Free our link object. */
+    sqlite3_free(pLink);  
+  }
+
+  os2ShmLeaveMutex();
+
+  ERR_TRACE(rc, ("os2OpenSharedMemory: %d  %s\n", rc, fd->zFullPathCp))  
+  
+  return rc;
+}
+
+/*
+** Purge the os2ShmNodeList list of all entries with nRef==0.
+**
+** This is not a VFS shared-memory method; it is a utility function called
+** by VFS shared-memory methods.
+*/
+static void os2PurgeShmNodes( int deleteFlag ) {
+  os2ShmNode *pNode;
+  os2ShmNode **ppNode;
+
+  os2ShmEnterMutex();
+  
+  ppNode = &os2ShmNodeList;
+
+  while( *ppNode ) {
+    pNode = *ppNode;
+
+    if( pNode->nRef == 0 ) {
+      *ppNode = pNode->pNext;   
+     
+      if( pNode->apRegion ) {
+        /* Prevent other processes from resizing the shared memory */
+        os2ShmSystemLock(pNode, _SHM_WRLCK_WAIT, OS2_SHM_DMS, 1);
+
+        while( pNode->nRegion-- ) {
+#ifdef SQLITE_DEBUG
+          int rc = 
+#endif          
+          DosFreeMem(pNode->apRegion[pNode->nRegion]);
+
+          OSTRACE(("SHM-PURGE pid-%d unmap region=%d %s\n",
+                  (int)GetCurrentProcessId(), pNode->nRegion,
+                  rc == 0 ? "ok" : "failed"));
+        }
+
+        /* Allow other processes to resize the shared memory */
+        os2ShmSystemLock(pNode, _SHM_UNLCK, OS2_SHM_DMS, 1);
+
+        sqlite3_free(pNode->apRegion);
+      }  
+
+      DosClose(pNode->hLockFile);
+      
+#ifndef SQLITE_OS2_NO_WAL_LOCK_FILE
+      if( deleteFlag ) {
+         char fileName[CCHMAXPATH];
+         /* Skip "\\SHAREMEM\\" */
+         sprintf(fileName, "%s-lck", pNode->shmBaseName + 10);
+         /* restore colon */
+         fileName[1] = ':';
+         
+         DosForceDelete(fileName); 
+      }
+#endif
+
+      sqlite3_mutex_free(pNode->mutex);
+
+      sqlite3_free(pNode);
+      
+    } else {
+      ppNode = &pNode->pNext;
+    }
+  } 
+
+  os2ShmLeaveMutex();
+}
+
+/*
+** This function is called to obtain a pointer to region iRegion of the
+** shared-memory associated with the database file id. Shared-memory regions
+** are numbered starting from zero. Each shared-memory region is szRegion
+** bytes in size.
+**
+** If an error occurs, an error code is returned and *pp is set to NULL.
+**
+** Otherwise, if the bExtend parameter is 0 and the requested shared-memory
+** region has not been allocated (by any client, including one running in a
+** separate process), then *pp is set to NULL and SQLITE_OK returned. If
+** bExtend is non-zero and the requested shared-memory region has not yet
+** been allocated, it is allocated by this function.
+**
+** If the shared-memory region has already been allocated or is allocated by
+** this call as described above, then it is mapped into this processes
+** address space (if it is not already), *pp is set to point to the mapped
+** memory and SQLITE_OK returned.
+*/
+static int os2ShmMap(
+  sqlite3_file *id,               /* Handle open on database file */
+  int iRegion,                    /* Region to retrieve */
+  int szRegion,                   /* Size of regions */
+  int bExtend,                    /* True to extend block if necessary */
+  void volatile **pp              /* OUT: Mapped memory */
+){
+  PVOID pvTemp;
+  void **apRegion;
+  os2ShmNode *pNode;
+  int n, rc = SQLITE_OK;
+  char shmName[CCHMAXPATH];
+  os2File *pFile = (os2File*)id;
+  
+  *pp = NULL;
+
+  if( !pFile->pShmLink )
+    rc = os2OpenSharedMemory( pFile, szRegion );
+  
+  if( rc == SQLITE_OK ) {
+    pNode = pFile->pShmLink->pShmNode ;
+    
+    sqlite3_mutex_enter(pNode->mutex);
+    
+    assert( szRegion==pNode->szRegion );
+
+    /* Unmapped region ? */
+    if( iRegion >= pNode->nRegion ) {
+      /* Prevent other processes from resizing the shared memory */
+      os2ShmSystemLock(pNode, _SHM_WRLCK_WAIT, OS2_SHM_DMS, 1);
+
+      apRegion = sqlite3_realloc(
+        pNode->apRegion, (iRegion + 1) * sizeof(apRegion[0]));
+
+      if( apRegion ) {
+        pNode->apRegion = apRegion;
+
+        while( pNode->nRegion <= iRegion ) {
+          sprintf(shmName, "%s-%u", 
+                  pNode->shmBaseName, pNode->nRegion);
+
+          if( DosGetNamedSharedMem(&pvTemp, (PSZ)shmName, 
+                PAG_READ | PAG_WRITE) != NO_ERROR ) {
+            if( !bExtend )
+              break;
+
+            if( DosAllocSharedMem(&pvTemp, (PSZ)shmName, szRegion,
+                  PAG_READ | PAG_WRITE | PAG_COMMIT | OBJ_ANY) != NO_ERROR && 
+                DosAllocSharedMem(&pvTemp, (PSZ)shmName, szRegion,
+                  PAG_READ | PAG_WRITE | PAG_COMMIT) != NO_ERROR ) { 
+              rc = SQLITE_NOMEM;
+              break;
+            }
+          }
+
+          apRegion[pNode->nRegion++] = pvTemp;
+        }
+
+        /* zero out remaining entries */ 
+        for( n = pNode->nRegion; n <= iRegion; n++ )
+          pNode->apRegion[n] = NULL;
+
+        /* Return this region (maybe zero) */
+        *pp = pNode->apRegion[iRegion];
+      } else {
+        rc = SQLITE_NOMEM;
+      }
+
+      /* Allow other processes to resize the shared memory */
+      os2ShmSystemLock(pNode, _SHM_UNLCK, OS2_SHM_DMS, 1);
+      
+    } else {
+      /* Region has been mapped previously */
+      *pp = pNode->apRegion[iRegion];
+    }
+
+    sqlite3_mutex_leave(pNode->mutex);
+  } 
+
+  ERR_TRACE(rc, ("os2ShmMap: %s iRgn = %d, szRgn = %d, bExt = %d : %d\n", 
+                 pFile->zFullPathCp, iRegion, szRegion, bExtend, rc))
+          
+  return rc;
+}
+
+/*
+** Close a connection to shared-memory.  Delete the underlying
+** storage if deleteFlag is true.
+**
+** If there is no shared memory associated with the connection then this
+** routine is a harmless no-op.
+*/
+static int os2ShmUnmap(
+  sqlite3_file *id,               /* The underlying database file */
+  int deleteFlag                  /* Delete shared-memory if true */
+){
+  os2File *pFile = (os2File*)id;
+  os2ShmLink *pLink = pFile->pShmLink;
+  
+  if( pLink ) {
+    int nRef = -1;
+    os2ShmLink **ppLink;
+    os2ShmNode *pNode = pLink->pShmNode;
+
+    sqlite3_mutex_enter(pNode->mutex);
+    
+    for( ppLink = &pNode->pFirst;
+         *ppLink && *ppLink != pLink;
+         ppLink = &(*ppLink)->pNext )   ;
+         
+    assert(*ppLink);
+
+    if( *ppLink ) {
+      *ppLink = pLink->pNext;
+      nRef = --pNode->nRef;
+    } else {
+      ERR_TRACE(1, ("os2ShmUnmap: link not found ! %s\n", 
+                    pNode->shmBaseName))
+    }
+    
+    pFile->pShmLink = NULL;
+    sqlite3_free(pLink);
+
+    sqlite3_mutex_leave(pNode->mutex);
+    
+    if( nRef == 0 )
+      os2PurgeShmNodes( deleteFlag );
+  }
+
+  return SQLITE_OK;
+}
+
+/*
+** Change the lock state for a shared-memory segment.
+**
+** Note that the relationship between SHAREd and EXCLUSIVE locks is a little
+** different here than in posix.  In xShmLock(), one can go from unlocked
+** to shared and back or from unlocked to exclusive and back.  But one may
+** not go from shared to exclusive or from exclusive to shared.
+*/
+static int os2ShmLock(
+  sqlite3_file *id,          /* Database file holding the shared memory */
+  int ofst,                  /* First lock to acquire or release */
+  int n,                     /* Number of locks to acquire or release */
+  int flags                  /* What to do with the lock */
+){
+  u32 mask;                             /* Mask of locks to take or release */
+  int rc = SQLITE_OK;                   /* Result code */
+  os2File *pFile = (os2File*)id;
+  os2ShmLink *p = pFile->pShmLink;      /* The shared memory being locked */
+  os2ShmLink *pX;                       /* For looping over all siblings */
+  os2ShmNode *pShmNode = p->pShmNode;   /* Our node */
+  
+  assert( ofst>=0 && ofst+n<=SQLITE_SHM_NLOCK );
+  assert( n>=1 );
+  assert( flags==(SQLITE_SHM_LOCK | SQLITE_SHM_SHARED)
+       || flags==(SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE)
+       || flags==(SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED)
+       || flags==(SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE) );
+  assert( n==1 || (flags & SQLITE_SHM_EXCLUSIVE)!=0 );
+
+  mask = (u32)((1U<<(ofst+n)) - (1U<<ofst));
+  assert( n>1 || mask==(1<<ofst) );
+
+
+  sqlite3_mutex_enter(pShmNode->mutex);
+
+  if( flags & SQLITE_SHM_UNLOCK ){
+    u32 allMask = 0; /* Mask of locks held by siblings */
+
+    /* See if any siblings hold this same lock */
+    for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
+      if( pX==p ) continue;
+      assert( (pX->exclMask & (p->exclMask|p->sharedMask))==0 );
+      allMask |= pX->sharedMask;
+    }
+
+    /* Unlock the system-level locks */
+    if( (mask & allMask)==0 ){
+      rc = os2ShmSystemLock(pShmNode, _SHM_UNLCK, ofst+OS2_SHM_BASE, n);
+    }else{
+      rc = SQLITE_OK;
+    }
+
+    /* Undo the local locks */
+    if( rc==SQLITE_OK ){
+      p->exclMask &= ~mask;
+      p->sharedMask &= ~mask;
+    } 
+  }else if( flags & SQLITE_SHM_SHARED ){
+    u32 allShared = 0;  /* Union of locks held by connections other than "p" */
+
+    /* Find out which shared locks are already held by sibling connections.
+    ** If any sibling already holds an exclusive lock, go ahead and return
+    ** SQLITE_BUSY.
+    */
+    for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
+      if( (pX->exclMask & mask)!=0 ){
+        rc = SQLITE_BUSY;
+        break;
+      }
+      allShared |= pX->sharedMask;
+    }
+
+    /* Get shared locks at the system level, if necessary */
+    if( rc==SQLITE_OK ){
+      if( (allShared & mask)==0 ){
+        rc = os2ShmSystemLock(pShmNode, _SHM_RDLCK, ofst+OS2_SHM_BASE, n);
+      }else{
+        rc = SQLITE_OK;
+      }
+    }
+
+    /* Get the local shared locks */
+    if( rc==SQLITE_OK ){
+      p->sharedMask |= mask;
+    }
+  }else{
+    /* Make sure no sibling connections hold locks that will block this
+    ** lock.  If any do, return SQLITE_BUSY right away.
+    */
+    for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
+      if( (pX->exclMask & mask)!=0 || (pX->sharedMask & mask)!=0 ){
+        rc = SQLITE_BUSY;
+        break;
+      }
+    }
+  
+    /* Get the exclusive locks at the system level.  Then if successful
+    ** also mark the local connection as being locked.
+    */
+    if( rc==SQLITE_OK ){
+      rc = os2ShmSystemLock(pShmNode, _SHM_WRLCK, ofst+OS2_SHM_BASE, n);
+      if( rc==SQLITE_OK ){
+        assert( (p->sharedMask & mask)==0 );
+        p->exclMask |= mask;
+      }
+    }
+  }
+
+  sqlite3_mutex_leave(pShmNode->mutex);
+  
+  OSTRACE(("SHM-LOCK shmid-%d, pid-%d got %03x,%03x %s\n",
+           p->id, (int)GetCurrentProcessId(), p->sharedMask, p->exclMask,
+           rc ? "failed" : "ok"));
+
+  ERR_TRACE(rc, ("os2ShmLock: ofst = %d, n = %d, flags = 0x%x -> %d \n", 
+                 ofst, n, flags, rc))
+                  
+  return rc; 
+}
+
+/*
+** Implement a memory barrier or memory fence on shared memory.
+**
+** All loads and stores begun before the barrier must complete before
+** any load or store begun after the barrier.
+*/
+static void os2ShmBarrier(
+  sqlite3_file *id                /* Database file holding the shared memory */
+){
+  UNUSED_PARAMETER(id);
+  os2ShmEnterMutex();
+  os2ShmLeaveMutex();
+}
+
+#else
+# define os2ShmMap     0
+# define os2ShmLock    0
+# define os2ShmBarrier 0
+# define os2ShmUnmap   0
+#endif /* #ifndef SQLITE_OMIT_WAL */
+
+
 /*
 ** This vector defines all the methods that can operate on an
 ** sqlite3_file for os2.
 */
 static const sqlite3_io_methods os2IoMethod = {
-  1,                        /* iVersion */
-  os2Close,
-  os2Read,
-  os2Write,
-  os2Truncate,
-  os2Sync,
-  os2FileSize,
-  os2Lock,
-  os2Unlock,
-  os2CheckReservedLock,
-  os2FileControl,
-  os2SectorSize,
-  os2DeviceCharacteristics
+  2,                              /* iVersion */
+  os2Close,                       /* xClose */
+  os2Read,                        /* xRead */
+  os2Write,                       /* xWrite */
+  os2Truncate,                    /* xTruncate */
+  os2Sync,                        /* xSync */
+  os2FileSize,                    /* xFileSize */
+  os2Lock,                        /* xLock */
+  os2Unlock,                      /* xUnlock */
+  os2CheckReservedLock,           /* xCheckReservedLock */
+  os2FileControl,                 /* xFileControl */
+  os2SectorSize,                  /* xSectorSize */
+  os2DeviceCharacteristics,       /* xDeviceCharacteristics */
+  os2ShmMap,                      /* xShmMap */
+  os2ShmLock,                     /* xShmLock */
+  os2ShmBarrier,                  /* xShmBarrier */
+  os2ShmUnmap                     /* xShmUnmap */
 };
 
+
 /***************************************************************************
 ** Here ends the I/O methods that form the sqlite3_io_methods object.
 **
@@ -22411,50 +23364,57 @@ static const sqlite3_io_methods os2IoMethod = {
 ** hold at pVfs->mxPathname characters.
 */
 static int getTempname(int nBuf, char *zBuf ){
-  static const unsigned char zChars[] =
+  static const char zChars[] =
     "abcdefghijklmnopqrstuvwxyz"
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     "0123456789";
   int i, j;
-  char zTempPathBuf[3];
-  PSZ zTempPath = (PSZ)&zTempPathBuf;
-  if( sqlite3_temp_directory ){
-    zTempPath = sqlite3_temp_directory;
-  }else{
-    if( DosScanEnv( (PSZ)"TEMP", &zTempPath ) ){
-      if( DosScanEnv( (PSZ)"TMP", &zTempPath ) ){
-        if( DosScanEnv( (PSZ)"TMPDIR", &zTempPath ) ){
-           ULONG ulDriveNum = 0, ulDriveMap = 0;
-           DosQueryCurrentDisk( &ulDriveNum, &ulDriveMap );
-           sprintf( (char*)zTempPath, "%c:", (char)( 'A' + ulDriveNum - 1 ) );
-        }
-      }
-    }
+  PSZ zTempPathCp;      
+  char zTempPath[CCHMAXPATH];
+  ULONG ulDriveNum, ulDriveMap;
+  
+  /* It's odd to simulate an io-error here, but really this is just
+  ** using the io-error infrastructure to test that SQLite handles this
+  ** function failing. 
+  */
+  SimulateIOError( return SQLITE_IOERR );
+
+  if( sqlite3_temp_directory ) {
+    sqlite3_snprintf(CCHMAXPATH-30, zTempPath, "%s", sqlite3_temp_directory);
+  } else if( DosScanEnv( (PSZ)"TEMP",   &zTempPathCp ) == NO_ERROR ||
+             DosScanEnv( (PSZ)"TMP",    &zTempPathCp ) == NO_ERROR ||
+             DosScanEnv( (PSZ)"TMPDIR", &zTempPathCp ) == NO_ERROR ) {
+    char *zTempPathUTF = convertCpPathToUtf8( (char *)zTempPathCp );
+    sqlite3_snprintf(CCHMAXPATH-30, zTempPath, "%s", zTempPathUTF);
+    free( zTempPathUTF );
+  } else if( DosQueryCurrentDisk( &ulDriveNum, &ulDriveMap ) == NO_ERROR ) {
+    zTempPath[0] = (char)('A' + ulDriveNum - 1);
+    zTempPath[1] = ':'; 
+    zTempPath[2] = '\0'; 
+  } else {
+    zTempPath[0] = '\0'; 
   }
+  
   /* Strip off a trailing slashes or backslashes, otherwise we would get *
    * multiple (back)slashes which causes DosOpen() to fail.              *
    * Trailing spaces are not allowed, either.                            */
   j = sqlite3Strlen30(zTempPath);
-  while( j > 0 && ( zTempPath[j-1] == '\\' || zTempPath[j-1] == '/'
-                    || zTempPath[j-1] == ' ' ) ){
+  while( j > 0 && ( zTempPath[j-1] == '\\' || zTempPath[j-1] == '/' || 
+                    zTempPath[j-1] == ' ' ) ){
     j--;
   }
   zTempPath[j] = '\0';
-  if( !sqlite3_temp_directory ){
-    char *zTempPathUTF = convertCpPathToUtf8( zTempPath );
-    sqlite3_snprintf( nBuf-30, zBuf,
-                      "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPathUTF );
-    free( zTempPathUTF );
-  }else{
-    sqlite3_snprintf( nBuf-30, zBuf,
-                      "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath );
-  }
-  j = sqlite3Strlen30( zBuf );
+  
+  /* We use 20 bytes to randomize the name */
+  sqlite3_snprintf(nBuf-22, zBuf,
+                   "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath);
+  j = sqlite3Strlen30(zBuf);
   sqlite3_randomness( 20, &zBuf[j] );
   for( i = 0; i < 20; i++, j++ ){
-    zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
+    zBuf[j] = zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
   }
   zBuf[j] = 0;
+
   OSTRACE(( "TEMP FILENAME: %s\n", zBuf ));
   return SQLITE_OK;
 }
@@ -22474,8 +23434,8 @@ static int os2FullPathname(
   char *zRelativeCp = convertUtf8PathToCp( zRelative );
   char zFullCp[CCHMAXPATH] = "\0";
   char *zFullUTF;
-  APIRET rc = DosQueryPathInfo( zRelativeCp, FIL_QUERYFULLNAME, zFullCp,
-                                CCHMAXPATH );
+  APIRET rc = DosQueryPathInfo( (PSZ)zRelativeCp, FIL_QUERYFULLNAME, 
+                                zFullCp, CCHMAXPATH );
   free( zRelativeCp );
   zFullUTF = convertCpPathToUtf8( zFullCp );
   sqlite3_snprintf( nFull, zFull, zFullUTF );
@@ -22489,100 +23449,127 @@ static int os2FullPathname(
 */
 static int os2Open(
   sqlite3_vfs *pVfs,            /* Not used */
-  const char *zName,            /* Name of the file */
+  const char *zName,            /* Name of the file (UTF-8) */
   sqlite3_file *id,             /* Write the SQLite file handle here */
   int flags,                    /* Open mode flags */
   int *pOutFlags                /* Status return flags */
 ){
   HFILE h;
-  ULONG ulFileAttribute = FILE_NORMAL;
   ULONG ulOpenFlags = 0;
   ULONG ulOpenMode = 0;
+  ULONG ulAction = 0;
+  ULONG rc;
   os2File *pFile = (os2File*)id;
-  APIRET rc = NO_ERROR;
-  ULONG ulAction;
+  const char *zUtf8Name = zName;
   char *zNameCp;
-  char zTmpname[CCHMAXPATH+1];    /* Buffer to hold name of temp file */
+  char  zTmpname[CCHMAXPATH];
+
+  int isExclusive  = (flags & SQLITE_OPEN_EXCLUSIVE);
+  int isCreate     = (flags & SQLITE_OPEN_CREATE);
+  int isReadWrite  = (flags & SQLITE_OPEN_READWRITE);
+#ifndef NDEBUG
+  int isDelete     = (flags & SQLITE_OPEN_DELETEONCLOSE);
+  int isReadonly   = (flags & SQLITE_OPEN_READONLY);
+  int eType        = (flags & 0xFFFFFF00);
+  int isOpenJournal = (isCreate && (
+        eType==SQLITE_OPEN_MASTER_JOURNAL 
+     || eType==SQLITE_OPEN_MAIN_JOURNAL 
+     || eType==SQLITE_OPEN_WAL
+  ));
+#endif
+
+  UNUSED_PARAMETER(pVfs);
+  assert( id!=0 );
+
+  /* Check the following statements are true: 
+  **
+  **   (a) Exactly one of the READWRITE and READONLY flags must be set, and 
+  **   (b) if CREATE is set, then READWRITE must also be set, and
+  **   (c) if EXCLUSIVE is set, then CREATE must also be set.
+  **   (d) if DELETEONCLOSE is set, then CREATE must also be set.
+  */
+  assert((isReadonly==0 || isReadWrite==0) && (isReadWrite || isReadonly));
+  assert(isCreate==0 || isReadWrite);
+  assert(isExclusive==0 || isCreate);
+  assert(isDelete==0 || isCreate);
+
+  /* The main DB, main journal, WAL file and master journal are never 
+  ** automatically deleted. Nor are they ever temporary files.  */
+  assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MAIN_DB );
+  assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MAIN_JOURNAL );
+  assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MASTER_JOURNAL );
+  assert( (!isDelete && zName) || eType!=SQLITE_OPEN_WAL );
+
+  /* Assert that the upper layer has set one of the "file-type" flags. */
+  assert( eType==SQLITE_OPEN_MAIN_DB      || eType==SQLITE_OPEN_TEMP_DB 
+       || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL 
+       || eType==SQLITE_OPEN_SUBJOURNAL   || eType==SQLITE_OPEN_MASTER_JOURNAL 
+       || eType==SQLITE_OPEN_TRANSIENT_DB || eType==SQLITE_OPEN_WAL
+  );
+
+  memset( pFile, 0, sizeof(*pFile) );
+  pFile->h = (HFILE)-1;
 
   /* If the second argument to this function is NULL, generate a 
   ** temporary file name to use 
   */
-  if( !zName ){
-    int rc = getTempname(CCHMAXPATH+1, zTmpname);
+  if( !zUtf8Name ){
+    assert(isDelete && !isOpenJournal);
+    rc = getTempname(CCHMAXPATH, zTmpname);
     if( rc!=SQLITE_OK ){
       return rc;
     }
-    zName = zTmpname;
+    zUtf8Name = zTmpname;
   }
 
-
-  memset( pFile, 0, sizeof(*pFile) );
-
-  OSTRACE(( "OPEN want %d\n", flags ));
-
-  if( flags & SQLITE_OPEN_READWRITE ){
+  if( isReadWrite ){
     ulOpenMode |= OPEN_ACCESS_READWRITE;
-    OSTRACE(( "OPEN read/write\n" ));
   }else{
     ulOpenMode |= OPEN_ACCESS_READONLY;
-    OSTRACE(( "OPEN read only\n" ));
-  }
-
-  if( flags & SQLITE_OPEN_CREATE ){
-    ulOpenFlags |= OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW;
-    OSTRACE(( "OPEN open new/create\n" ));
-  }else{
-    ulOpenFlags |= OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW;
-    OSTRACE(( "OPEN open existing\n" ));
   }
 
-  if( flags & SQLITE_OPEN_MAIN_DB ){
-    ulOpenMode |= OPEN_SHARE_DENYNONE;
-    OSTRACE(( "OPEN share read/write\n" ));
-  }else{
-    ulOpenMode |= OPEN_SHARE_DENYWRITE;
-    OSTRACE(( "OPEN share read only\n" ));
-  }
+  /* Open in random access mode for possibly better speed.  Allow full
+  ** sharing because file locks will provide exclusive access when needed.
+  ** The handle should not be inherited by child processes and we don't 
+  ** want popups from the critical error handler.
+  */
+  ulOpenMode |= OPEN_FLAGS_RANDOM | OPEN_SHARE_DENYNONE | 
+                OPEN_FLAGS_NOINHERIT | OPEN_FLAGS_FAIL_ON_ERROR;
 
-  if( flags & SQLITE_OPEN_DELETEONCLOSE ){
-    char pathUtf8[CCHMAXPATH];
-#ifdef NDEBUG /* when debugging we want to make sure it is deleted */
-    ulFileAttribute = FILE_HIDDEN;
-#endif
-    os2FullPathname( pVfs, zName, CCHMAXPATH, pathUtf8 );
-    pFile->pathToDel = convertUtf8PathToCp( pathUtf8 );
-    OSTRACE(( "OPEN hidden/delete on close file attributes\n" ));
+  /* SQLITE_OPEN_EXCLUSIVE is used to make sure that a new file is 
+  ** created. SQLite doesn't use it to indicate "exclusive access" 
+  ** as it is usually understood.
+  */
+  if( isExclusive ){
+    /* Creates a new file, only if it does not already exist. */
+    /* If the file exists, it fails. */
+    ulOpenFlags |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_FAIL_IF_EXISTS;
+  }else if( isCreate ){
+    /* Open existing file, or create if it doesn't exist */
+    ulOpenFlags |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
   }else{
-    pFile->pathToDel = NULL;
-    OSTRACE(( "OPEN normal file attribute\n" ));
+    /* Opens a file, only if it exists. */
+    ulOpenFlags |= OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
   }
 
-  /* always open in random access mode for possibly better speed */
-  ulOpenMode |= OPEN_FLAGS_RANDOM;
-  ulOpenMode |= OPEN_FLAGS_FAIL_ON_ERROR;
-  ulOpenMode |= OPEN_FLAGS_NOINHERIT;
-
-  zNameCp = convertUtf8PathToCp( zName );
+  zNameCp = convertUtf8PathToCp( zUtf8Name );
   rc = DosOpen( (PSZ)zNameCp,
                 &h,
                 &ulAction,
                 0L,
-                ulFileAttribute,
+                FILE_NORMAL,
                 ulOpenFlags,
                 ulOpenMode,
                 (PEAOP2)NULL );
   free( zNameCp );
+
   if( rc != NO_ERROR ){
-    OSTRACE(( "OPEN Invalid handle rc=%d: zName=%s, ulAction=%#lx, ulAttr=%#lx, ulFlags=%#lx, ulMode=%#lx\n",
-              rc, zName, ulAction, ulFileAttribute, ulOpenFlags, ulOpenMode ));
-    if( pFile->pathToDel )
-      free( pFile->pathToDel );
-    pFile->pathToDel = NULL;
-    if( flags & SQLITE_OPEN_READWRITE ){
-      OSTRACE(( "OPEN %d Invalid handle\n",
-                ((flags | SQLITE_OPEN_READONLY) & ~SQLITE_OPEN_READWRITE) ));
+    OSTRACE(( "OPEN Invalid handle rc=%d: zName=%s, ulAction=%#lx, ulFlags=%#lx, ulMode=%#lx\n",
+              rc, zUtf8Name, ulAction, ulOpenFlags, ulOpenMode ));
+
+    if( isReadWrite ){
       return os2Open( pVfs, zName, id,
-                      ((flags | SQLITE_OPEN_READONLY) & ~SQLITE_OPEN_READWRITE),
+                      ((flags|SQLITE_OPEN_READONLY)&~(SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE)),
                       pOutFlags );
     }else{
       return SQLITE_CANTOPEN;
@@ -22590,11 +23577,15 @@ static int os2Open(
   }
 
   if( pOutFlags ){
-    *pOutFlags = flags & SQLITE_OPEN_READWRITE ? SQLITE_OPEN_READWRITE : SQLITE_OPEN_READONLY;
+    *pOutFlags = isReadWrite ? SQLITE_OPEN_READWRITE : SQLITE_OPEN_READONLY;
   }
 
+  os2FullPathname( pVfs, zUtf8Name, sizeof( zTmpname ), zTmpname );
+  pFile->zFullPathCp = convertUtf8PathToCp( zTmpname );
   pFile->pMethod = &os2IoMethod;
+  pFile->flags = flags;
   pFile->h = h;
+
   OpenCounter(+1);
   OSTRACE(( "OPEN %d pOutFlags=%d\n", pFile->h, pOutFlags ));
   return SQLITE_OK;
@@ -22608,13 +23599,16 @@ static int os2Delete(
   const char *zFilename,                 /* Name of file to delete */
   int syncDir                            /* Not used on os2 */
 ){
-  APIRET rc = NO_ERROR;
-  char *zFilenameCp = convertUtf8PathToCp( zFilename );
+  APIRET rc;
+  char *zFilenameCp;
   SimulateIOError( return SQLITE_IOERR_DELETE );
+  zFilenameCp = convertUtf8PathToCp( zFilename );
   rc = DosDelete( (PSZ)zFilenameCp );
   free( zFilenameCp );
   OSTRACE(( "DELETE \"%s\"\n", zFilename ));
-  return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR_DELETE;
+  return (rc == NO_ERROR ||
+          rc == ERROR_FILE_NOT_FOUND ||
+          rc == ERROR_PATH_NOT_FOUND ) ? SQLITE_OK : SQLITE_IOERR_DELETE;
 }
 
 /*
@@ -22626,30 +23620,42 @@ static int os2Access(
   int flags,                /* Type of test to make on this file */
   int *pOut                 /* Write results here */
 ){
+  APIRET rc;
   FILESTATUS3 fsts3ConfigInfo;
-  APIRET rc = NO_ERROR;
-  char *zFilenameCp = convertUtf8PathToCp( zFilename );
+  char *zFilenameCp;
 
-  memset( &fsts3ConfigInfo, 0, sizeof(fsts3ConfigInfo) );
+  UNUSED_PARAMETER(pVfs);
+  SimulateIOError( return SQLITE_IOERR_ACCESS; );
+  
+  zFilenameCp = convertUtf8PathToCp( zFilename );
   rc = DosQueryPathInfo( (PSZ)zFilenameCp, FIL_STANDARD,
                          &fsts3ConfigInfo, sizeof(FILESTATUS3) );
   free( zFilenameCp );
   OSTRACE(( "ACCESS fsts3ConfigInfo.attrFile=%d flags=%d rc=%d\n",
             fsts3ConfigInfo.attrFile, flags, rc ));
+
   switch( flags ){
-    case SQLITE_ACCESS_READ:
     case SQLITE_ACCESS_EXISTS:
-      rc = (rc == NO_ERROR);
-      OSTRACE(( "ACCESS %s access of read and exists  rc=%d\n", zFilename, rc));
+      /* For an SQLITE_ACCESS_EXISTS query, treat a zero-length file
+      ** as if it does not exist.
+      */
+      if( fsts3ConfigInfo.cbFile == 0 ) 
+        rc = ERROR_FILE_NOT_FOUND;
+      break;
+    case SQLITE_ACCESS_READ:
       break;
     case SQLITE_ACCESS_READWRITE:
-      rc = (rc == NO_ERROR) && ( (fsts3ConfigInfo.attrFile & FILE_READONLY) == 0 );
-      OSTRACE(( "ACCESS %s access of read/write  rc=%d\n", zFilename, rc ));
+      if( fsts3ConfigInfo.attrFile & FILE_READONLY )
+        rc = ERROR_ACCESS_DENIED;
       break;
     default:
+      rc = ERROR_FILE_NOT_FOUND;
       assert( !"Invalid flags argument" );
   }
-  *pOut = rc;
+
+  *pOut = (rc == NO_ERROR);
+  OSTRACE(( "ACCESS %s flags %d: rc=%d\n", zFilename, flags, *pOut ));
+
   return SQLITE_OK;
 }
 
@@ -22664,11 +23670,10 @@ static int os2Access(
 ** within the shared library, and closing the shared library.
 */
 static void *os2DlOpen(sqlite3_vfs *pVfs, const char *zFilename){
-  UCHAR loadErr[256];
   HMODULE hmod;
   APIRET rc;
   char *zFilenameCp = convertUtf8PathToCp(zFilename);
-  rc = DosLoadModule((PSZ)loadErr, sizeof(loadErr), zFilenameCp, &hmod);
+  rc = DosLoadModule(NULL, 0, (PSZ)zFilenameCp, &hmod);
   free(zFilenameCp);
   return rc != NO_ERROR ? 0 : (void*)hmod;
 }
@@ -22679,19 +23684,19 @@ static void *os2DlOpen(sqlite3_vfs *pVfs, const char *zFilename){
 static void os2DlError(sqlite3_vfs *pVfs, int nBuf, char *zBufOut){
 /* no-op */
 }
-static void *os2DlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol){
+static void (*os2DlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol))(void){
   PFN pfn;
   APIRET rc;
-  rc = DosQueryProcAddr((HMODULE)pHandle, 0L, zSymbol, &pfn);
+  rc = DosQueryProcAddr((HMODULE)pHandle, 0L, (PSZ)zSymbol, &pfn);
   if( rc != NO_ERROR ){
     /* if the symbol itself was not found, search again for the same
      * symbol with an extra underscore, that might be needed depending
      * on the calling convention */
     char _zSymbol[256] = "_";
-    strncat(_zSymbol, zSymbol, 255);
-    rc = DosQueryProcAddr((HMODULE)pHandle, 0L, _zSymbol, &pfn);
+    strncat(_zSymbol, zSymbol, 254);
+    rc = DosQueryProcAddr((HMODULE)pHandle, 0L, (PSZ)_zSymbol, &pfn);
   }
-  return rc != NO_ERROR ? 0 : (void*)pfn;
+  return rc != NO_ERROR ? 0 : (void(*)(void))pfn;
 }
 static void os2DlClose(sqlite3_vfs *pVfs, void *pHandle){
   DosFreeModule((HMODULE)pHandle);
@@ -22713,54 +23718,39 @@ static int os2Randomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf ){
   n = nBuf;
   memset(zBuf, 0, nBuf);
 #else
-  int sizeofULong = sizeof(ULONG);
-  if( (int)sizeof(DATETIME) <= nBuf - n ){
-    DATETIME x;
-    DosGetDateTime(&x);
-    memcpy(&zBuf[n], &x, sizeof(x));
-    n += sizeof(x);
-  }
-
-  if( sizeofULong <= nBuf - n ){
-    PPIB ppib;
-    DosGetInfoBlocks(NULL, &ppib);
-    memcpy(&zBuf[n], &ppib->pib_ulpid, sizeofULong);
-    n += sizeofULong;
-  }
-
-  if( sizeofULong <= nBuf - n ){
-    PTIB ptib;
-    DosGetInfoBlocks(&ptib, NULL);
-    memcpy(&zBuf[n], &ptib->tib_ptib2->tib2_ultid, sizeofULong);
-    n += sizeofULong;
-  }
-
-  /* if we still haven't filled the buffer yet the following will */
-  /* grab everything once instead of making several calls for a single item */
-  if( sizeofULong <= nBuf - n ){
-    ULONG ulSysInfo[QSV_MAX];
-    DosQuerySysInfo(1L, QSV_MAX, ulSysInfo, sizeofULong * QSV_MAX);
-
-    memcpy(&zBuf[n], &ulSysInfo[QSV_MS_COUNT - 1], sizeofULong);
-    n += sizeofULong;
-
-    if( sizeofULong <= nBuf - n ){
-      memcpy(&zBuf[n], &ulSysInfo[QSV_TIMER_INTERVAL - 1], sizeofULong);
-      n += sizeofULong;
-    }
-    if( sizeofULong <= nBuf - n ){
-      memcpy(&zBuf[n], &ulSysInfo[QSV_TIME_LOW - 1], sizeofULong);
-      n += sizeofULong;
-    }
-    if( sizeofULong <= nBuf - n ){
-      memcpy(&zBuf[n], &ulSysInfo[QSV_TIME_HIGH - 1], sizeofULong);
-      n += sizeofULong;
-    }
-    if( sizeofULong <= nBuf - n ){
-      memcpy(&zBuf[n], &ulSysInfo[QSV_TOTAVAILMEM - 1], sizeofULong);
-      n += sizeofULong;
-    }
-  }
+  int i;                           
+  PPIB ppib;
+  PTIB ptib;
+  DATETIME dt; 
+  static unsigned c = 0;
+  /* Ordered by variation probability */
+  static ULONG svIdx[6] = { QSV_MS_COUNT, QSV_TIME_LOW,
+                            QSV_MAXPRMEM, QSV_MAXSHMEM,
+                            QSV_TOTAVAILMEM, QSV_TOTRESMEM };
+
+  /* 8 bytes; timezone and weekday don't increase the randomness much */
+  if( (int)sizeof(dt)-3 <= nBuf - n ){
+    c += 0x0100;
+    DosGetDateTime(&dt);
+    dt.year = (USHORT)((dt.year - 1900) | c);
+    memcpy(&zBuf[n], &dt, sizeof(dt)-3);
+    n += sizeof(dt)-3;
+  }
+
+  /* 4 bytes; PIDs and TIDs are 16 bit internally, so combine them */
+  if( (int)sizeof(ULONG) <= nBuf - n ){
+    DosGetInfoBlocks(&ptib, &ppib);
+    *(PULONG)&zBuf[n] = MAKELONG(ppib->pib_ulpid,
+                                 ptib->tib_ptib2->tib2_ultid);
+    n += sizeof(ULONG);
+  }
+
+  /* Up to 6 * 4 bytes; variables depend on the system state */
+  for( i = 0; i < 6 && (int)sizeof(ULONG) <= nBuf - n; i++ ){
+    DosQuerySysInfo(svIdx[i], svIdx[i], 
+                    (PULONG)&zBuf[n], sizeof(ULONG));
+    n += sizeof(ULONG);
+  } 
 #endif
 
   return n;
@@ -22788,46 +23778,98 @@ SQLITE_API int sqlite3_current_time = 0;
 #endif
 
 /*
-** Find the current time (in Universal Coordinated Time).  Write the
-** current time and date as a Julian Day number into *prNow and
-** return 0.  Return 1 if the time and date cannot be found.
+** Find the current time (in Universal Coordinated Time).  Write into *piNow
+** the current time and date as a Julian Day number times 86_400_000.  In
+** other words, write into *piNow the number of milliseconds since the Julian
+** epoch of noon in Greenwich on November 24, 4714 B.C according to the
+** proleptic Gregorian calendar.
+**
+** On success, return 0.  Return 1 if the time and date cannot be found.
 */
-int os2CurrentTime( sqlite3_vfs *pVfs, double *prNow ){
-  double now;
-  SHORT minute; /* needs to be able to cope with negative timezone offset */
-  USHORT second, hour,
-         day, month, year;
+static int os2CurrentTimeInt64(sqlite3_vfs *pVfs, sqlite3_int64 *piNow){
+#ifdef SQLITE_TEST
+  static const sqlite3_int64 unixEpoch = 24405875*(sqlite3_int64)8640000;
+#endif
+  int year, month, datepart, timepart;
+ 
   DATETIME dt;
   DosGetDateTime( &dt );
-  second = (USHORT)dt.seconds;
-  minute = (SHORT)dt.minutes + dt.timezone;
-  hour = (USHORT)dt.hours;
-  day = (USHORT)dt.day;
-  month = (USHORT)dt.month;
-  year = (USHORT)dt.year;
+
+  year = dt.year;
+  month = dt.month;
 
   /* Calculations from http://www.astro.keele.ac.uk/~rno/Astronomy/hjd.html
-     http://www.astro.keele.ac.uk/~rno/Astronomy/hjd-0.1.c */
-  /* Calculate the Julian days */
-  now = day - 32076 +
+  ** http://www.astro.keele.ac.uk/~rno/Astronomy/hjd-0.1.c
+  ** Calculate the Julian days
+  */
+  datepart = (int)dt.day - 32076 +
     1461*(year + 4800 + (month - 14)/12)/4 +
     367*(month - 2 - (month - 14)/12*12)/12 -
     3*((year + 4900 + (month - 14)/12)/100)/4;
 
-  /* Add the fractional hours, mins and seconds */
-  now += (hour + 12.0)/24.0;
-  now += minute/1440.0;
-  now += second/86400.0;
-  *prNow = now;
+  /* Time in milliseconds, hours to noon added */
+  timepart = 12*3600*1000 + dt.hundredths*10 + dt.seconds*1000 +
+    ((int)dt.minutes + dt.timezone)*60*1000 + dt.hours*3600*1000;
+
+  *piNow = (sqlite3_int64)datepart*86400*1000 + timepart;
+   
 #ifdef SQLITE_TEST
   if( sqlite3_current_time ){
-    *prNow = sqlite3_current_time/86400.0 + 2440587.5;
+    *piNow = 1000*(sqlite3_int64)sqlite3_current_time + unixEpoch;
   }
 #endif
+
+  UNUSED_PARAMETER(pVfs);
   return 0;
 }
 
+/*
+** Find the current time (in Universal Coordinated Time).  Write the
+** current time and date as a Julian Day number into *prNow and
+** return 0.  Return 1 if the time and date cannot be found.
+*/
+static int os2CurrentTime( sqlite3_vfs *pVfs, double *prNow ){
+  int rc;
+  sqlite3_int64 i;
+  rc = os2CurrentTimeInt64(pVfs, &i);
+  if( !rc ){
+    *prNow = i/86400000.0;
+  }
+  return rc;
+}
+
+/*
+** The idea is that this function works like a combination of
+** GetLastError() and FormatMessage() on windows (or errno and
+** strerror_r() on unix). After an error is returned by an OS
+** function, SQLite calls this function with zBuf pointing to
+** a buffer of nBuf bytes. The OS layer should populate the
+** buffer with a nul-terminated UTF-8 encoded error message
+** describing the last IO error to have occurred within the calling
+** thread.
+**
+** If the error message is too large for the supplied buffer,
+** it should be truncated. The return value of xGetLastError
+** is zero if the error message fits in the buffer, or non-zero
+** otherwise (if the message was truncated). If non-zero is returned,
+** then it is not necessary to include the nul-terminator character
+** in the output buffer.
+**
+** Not supplying an error message will have no adverse effect
+** on SQLite. It is fine to have an implementation that never
+** returns an error message:
+**
+**   int xGetLastError(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
+**     assert(zBuf[0]=='\0');
+**     return 0;
+**   }
+**
+** However if an error message is supplied, it will be incorporated
+** by sqlite into the error message available to the user using
+** sqlite3_errmsg(), possibly making IO errors easier to debug.
+*/
 static int os2GetLastError(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
+  assert(zBuf[0]=='\0');
   return 0;
 }
 
@@ -22836,7 +23878,7 @@ static int os2GetLastError(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
 */
 SQLITE_API int sqlite3_os_init(void){
   static sqlite3_vfs os2Vfs = {
-    1,                 /* iVersion */
+    3,                 /* iVersion */
     sizeof(os2File),   /* szOsFile */
     CCHMAXPATH,        /* mxPathname */
     0,                 /* pNext */
@@ -22855,9 +23897,14 @@ SQLITE_API int sqlite3_os_init(void){
     os2Sleep,          /* xSleep */
     os2CurrentTime,    /* xCurrentTime */
     os2GetLastError,   /* xGetLastError */
+    os2CurrentTimeInt64, /* xCurrentTimeInt64 */
+    0,                 /* xSetSystemCall */
+    0,                 /* xGetSystemCall */
+    0                  /* xNextSystemCall */
   };
   sqlite3_vfs_register(&os2Vfs, 1);
   initUconvObjects();
+/*  sqlite3OSTrace = 1; */
   return SQLITE_OK;
 }
 SQLITE_API int sqlite3_os_end(void){
@@ -23074,10 +24121,10 @@ struct unixFile {
   int h;                              /* The file descriptor */
   int dirfd;                          /* File descriptor for the directory */
   unsigned char eFileLock;            /* The type of lock held on this fd */
+  unsigned char ctrlFlags;            /* Behavioral bits.  UNIXFILE_* flags */
   int lastErrno;                      /* The unix errno from last I/O error */
   void *lockingContext;               /* Locking style specific state */
   UnixUnusedFd *pUnused;              /* Pre-allocated UnixUnusedFd */
-  int fileFlags;                      /* Miscellanous flags */
   const char *zPath;                  /* Name of the file */
   unixShm *pShm;                      /* Shared memory segment information */
   int szChunk;                        /* Configured by FCNTL_CHUNK_SIZE */
@@ -23112,9 +24159,10 @@ struct unixFile {
 };
 
 /*
-** The following macros define bits in unixFile.fileFlags
+** Allowed values for the unixFile.ctrlFlags bitmask:
 */
-#define SQLITE_WHOLE_FILE_LOCKING  0x0001   /* Use whole-file locking */
+#define UNIXFILE_EXCL   0x01     /* Connections from one process only */
+#define UNIXFILE_RDONLY 0x02     /* Connection is read only */
 
 /*
 ** Include code that is common to all os_*.c files
@@ -23343,6 +24391,42 @@ SQLITE_API int sqlite3_open_file_count = 0;
 # define O_BINARY 0
 #endif
 
+/*
+** The threadid macro resolves to the thread-id or to 0.  Used for
+** testing and debugging only.
+*/
+#if SQLITE_THREADSAFE
+#define threadid pthread_self()
+#else
+#define threadid 0
+#endif
+
+/*
+** Many system calls are accessed through pointer-to-functions so that
+** they may be overridden at runtime to facilitate fault injection during
+** testing and sandboxing.  The following array holds the names and pointers
+** to all overrideable system calls.
+*/
+static struct unix_syscall {
+  const char *zName;            /* Name of the sytem call */
+  sqlite3_syscall_ptr pCurrent; /* Current value of the system call */
+  sqlite3_syscall_ptr pDefault; /* Default value */
+} aSyscall[] = {
+  { "open",         (sqlite3_syscall_ptr)open,       0  },
+#define osOpen      ((int(*)(const char*,int,...))aSyscall[0].pCurrent)
+
+  { "close",        (sqlite3_syscall_ptr)close,      0  },
+#define osClose     ((int(*)(int))aSyscall[1].pCurrent)
+
+  { "access",       (sqlite3_syscall_ptr)access,     0  },
+#define osAccess    ((int(*)(const char*,int))aSyscall[2].pCurrent)
+
+  { "getcwd",       (sqlite3_syscall_ptr)getcwd,     0  },
+#define osGetcwd    ((char*(*)(char*,size_t))aSyscall[3].pCurrent)
+
+  { "stat",         (sqlite3_syscall_ptr)stat,       0  },
+#define osStat      ((int(*)(const char*,struct stat*))aSyscall[4].pCurrent)
+
 /*
 ** The DJGPP compiler environment looks mostly like Unix, but it
 ** lacks the fcntl() system call.  So redefine fcntl() to be something
@@ -23350,19 +24434,162 @@ SQLITE_API int sqlite3_open_file_count = 0;
 ** DJGPP.  But it is DOS - what did you expect?
 */
 #ifdef __DJGPP__
-# define fcntl(A,B,C) 0
+  { "fstat",        0,                 0  },
+#define osFstat(a,b,c)    0
+#else     
+  { "fstat",        (sqlite3_syscall_ptr)fstat,      0  },
+#define osFstat     ((int(*)(int,struct stat*))aSyscall[5].pCurrent)
 #endif
 
-/*
-** The threadid macro resolves to the thread-id or to 0.  Used for
-** testing and debugging only.
-*/
-#if SQLITE_THREADSAFE
-#define threadid pthread_self()
+  { "ftruncate",    (sqlite3_syscall_ptr)ftruncate,  0  },
+#define osFtruncate ((int(*)(int,off_t))aSyscall[6].pCurrent)
+
+  { "fcntl",        (sqlite3_syscall_ptr)fcntl,      0  },
+#define osFcntl     ((int(*)(int,int,...))aSyscall[7].pCurrent)
+
+  { "read",         (sqlite3_syscall_ptr)read,       0  },
+#define osRead      ((ssize_t(*)(int,void*,size_t))aSyscall[8].pCurrent)
+
+#if defined(USE_PREAD) || defined(SQLITE_ENABLE_LOCKING_STYLE)
+  { "pread",        (sqlite3_syscall_ptr)pread,      0  },
 #else
-#define threadid 0
+  { "pread",        (sqlite3_syscall_ptr)0,          0  },
+#endif
+#define osPread     ((ssize_t(*)(int,void*,size_t,off_t))aSyscall[9].pCurrent)
+
+#if defined(USE_PREAD64)
+  { "pread64",      (sqlite3_syscall_ptr)pread64,    0  },
+#else
+  { "pread64",      (sqlite3_syscall_ptr)0,          0  },
+#endif
+#define osPread64   ((ssize_t(*)(int,void*,size_t,off_t))aSyscall[10].pCurrent)
+
+  { "write",        (sqlite3_syscall_ptr)write,      0  },
+#define osWrite     ((ssize_t(*)(int,const void*,size_t))aSyscall[11].pCurrent)
+
+#if defined(USE_PREAD) || defined(SQLITE_ENABLE_LOCKING_STYLE)
+  { "pwrite",       (sqlite3_syscall_ptr)pwrite,     0  },
+#else
+  { "pwrite",       (sqlite3_syscall_ptr)0,          0  },
+#endif
+#define osPwrite    ((ssize_t(*)(int,const void*,size_t,off_t))\
+                    aSyscall[12].pCurrent)
+
+#if defined(USE_PREAD64)
+  { "pwrite64",     (sqlite3_syscall_ptr)pwrite64,   0  },
+#else
+  { "pwrite64",     (sqlite3_syscall_ptr)0,          0  },
+#endif
+#define osPwrite64  ((ssize_t(*)(int,const void*,size_t,off_t))\
+                    aSyscall[13].pCurrent)
+
+#if SQLITE_ENABLE_LOCKING_STYLE
+  { "fchmod",       (sqlite3_syscall_ptr)fchmod,     0  },
+#else
+  { "fchmod",       (sqlite3_syscall_ptr)0,          0  },
+#endif
+#define osFchmod    ((int(*)(int,mode_t))aSyscall[14].pCurrent)
+
+#if defined(HAVE_POSIX_FALLOCATE) && HAVE_POSIX_FALLOCATE
+  { "fallocate",    (sqlite3_syscall_ptr)posix_fallocate,  0 },
+#else
+  { "fallocate",    (sqlite3_syscall_ptr)0,                0 },
 #endif
+#define osFallocate ((int(*)(int,off_t,off_t))aSyscall[15].pCurrent)
+
+}; /* End of the overrideable system calls */
+
+/*
+** This is the xSetSystemCall() method of sqlite3_vfs for all of the
+** "unix" VFSes.  Return SQLITE_OK opon successfully updating the
+** system call pointer, or SQLITE_NOTFOUND if there is no configurable
+** system call named zName.
+*/
+static int unixSetSystemCall(
+  sqlite3_vfs *pNotUsed,        /* The VFS pointer.  Not used */
+  const char *zName,            /* Name of system call to override */
+  sqlite3_syscall_ptr pNewFunc  /* Pointer to new system call value */
+){
+  unsigned int i;
+  int rc = SQLITE_NOTFOUND;
+
+  UNUSED_PARAMETER(pNotUsed);
+  if( zName==0 ){
+    /* If no zName is given, restore all system calls to their default
+    ** settings and return NULL
+    */
+    rc = SQLITE_OK;
+    for(i=0; i<sizeof(aSyscall)/sizeof(aSyscall[0]); i++){
+      if( aSyscall[i].pDefault ){
+        aSyscall[i].pCurrent = aSyscall[i].pDefault;
+      }
+    }
+  }else{
+    /* If zName is specified, operate on only the one system call
+    ** specified.
+    */
+    for(i=0; i<sizeof(aSyscall)/sizeof(aSyscall[0]); i++){
+      if( strcmp(zName, aSyscall[i].zName)==0 ){
+        if( aSyscall[i].pDefault==0 ){
+          aSyscall[i].pDefault = aSyscall[i].pCurrent;
+        }
+        rc = SQLITE_OK;
+        if( pNewFunc==0 ) pNewFunc = aSyscall[i].pDefault;
+        aSyscall[i].pCurrent = pNewFunc;
+        break;
+      }
+    }
+  }
+  return rc;
+}
+
+/*
+** Return the value of a system call.  Return NULL if zName is not a
+** recognized system call name.  NULL is also returned if the system call
+** is currently undefined.
+*/
+static sqlite3_syscall_ptr unixGetSystemCall(
+  sqlite3_vfs *pNotUsed,
+  const char *zName
+){
+  unsigned int i;
+
+  UNUSED_PARAMETER(pNotUsed);
+  for(i=0; i<sizeof(aSyscall)/sizeof(aSyscall[0]); i++){
+    if( strcmp(zName, aSyscall[i].zName)==0 ) return aSyscall[i].pCurrent;
+  }
+  return 0;
+}
+
+/*
+** Return the name of the first system call after zName.  If zName==NULL
+** then return the name of the first system call.  Return NULL if zName
+** is the last system call or if zName is not the name of a valid
+** system call.
+*/
+static const char *unixNextSystemCall(sqlite3_vfs *p, const char *zName){
+  int i = -1;
+
+  UNUSED_PARAMETER(p);
+  if( zName ){
+    for(i=0; i<ArraySize(aSyscall)-1; i++){
+      if( strcmp(zName, aSyscall[i].zName)==0 ) break;
+    }
+  }
+  for(i++; i<ArraySize(aSyscall); i++){
+    if( aSyscall[i].pCurrent!=0 ) return aSyscall[i].zName;
+  }
+  return 0;
+}
 
+/*
+** Retry open() calls that fail due to EINTR
+*/
+static int robust_open(const char *z, int f, int m){
+  int rc;
+  do{ rc = osOpen(z,f,m); }while( rc<0 && errno==EINTR );
+  return rc;
+}
 
 /*
 ** Helper functions to obtain and relinquish the global mutex. The
@@ -23427,7 +24654,7 @@ static int lockTrace(int fd, int op, struct flock *p){
   }else if( op==F_SETLK ){
     zOpName = "SETLK";
   }else{
-    s = fcntl(fd, op, p);
+    s = osFcntl(fd, op, p);
     sqlite3DebugPrintf("fcntl unknown %d %d %d\n", fd, op, s);
     return s;
   }
@@ -23441,7 +24668,7 @@ static int lockTrace(int fd, int op, struct flock *p){
     assert( 0 );
   }
   assert( p->l_whence==SEEK_SET );
-  s = fcntl(fd, op, p);
+  s = osFcntl(fd, op, p);
   savedErrno = errno;
   sqlite3DebugPrintf("fcntl %d %d %s %s %d %d %d %d\n",
      threadid, fd, zOpName, zType, (int)p->l_start, (int)p->l_len,
@@ -23449,7 +24676,7 @@ static int lockTrace(int fd, int op, struct flock *p){
   if( s==(-1) && op==F_SETLK && (p->l_type==F_RDLCK || p->l_type==F_WRLCK) ){
     struct flock l2;
     l2 = *p;
-    fcntl(fd, F_GETLK, &l2);
+    osFcntl(fd, F_GETLK, &l2);
     if( l2.l_type==F_RDLCK ){
       zType = "RDLCK";
     }else if( l2.l_type==F_WRLCK ){
@@ -23465,10 +24692,18 @@ static int lockTrace(int fd, int op, struct flock *p){
   errno = savedErrno;
   return s;
 }
-#define fcntl lockTrace
+#undef osFcntl
+#define osFcntl lockTrace
 #endif /* SQLITE_LOCK_TRACE */
 
-
+/*
+** Retry ftruncate() calls that fail due to EINTR
+*/
+static int robust_ftruncate(int h, sqlite3_int64 sz){
+  int rc;
+  do{ rc = osFtruncate(h,sz); }while( rc<0 && errno==EINTR );
+  return rc;
+}
 
 /*
 ** This routine translates a standard POSIX errno code into something
@@ -23482,9 +24717,22 @@ static int lockTrace(int fd, int op, struct flock *p){
 */
 static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
   switch (posixError) {
+#if 0
+  /* At one point this code was not commented out. In theory, this branch
+  ** should never be hit, as this function should only be called after
+  ** a locking-related function (i.e. fcntl()) has returned non-zero with
+  ** the value of errno as the first argument. Since a system call has failed,
+  ** errno should be non-zero.
+  **
+  ** Despite this, if errno really is zero, we still don't want to return
+  ** SQLITE_OK. The system call failed, and *some* SQLite error should be
+  ** propagated back to the caller. Commenting this branch out means errno==0
+  ** will be handled by the "default:" case below.
+  */
   case 0: 
     return SQLITE_OK;
-    
+#endif
+
   case EAGAIN:
   case ETIMEDOUT:
   case EBUSY:
@@ -23506,8 +24754,15 @@ static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
   case EPERM: 
     return SQLITE_PERM;
     
+  /* EDEADLK is only possible if a call to fcntl(F_SETLKW) is made. And
+  ** this module never makes such a call. And the code in SQLite itself 
+  ** asserts that SQLITE_IOERR_BLOCKED is never returned. For these reasons
+  ** this case is also commented out. If the system does set errno to EDEADLK,
+  ** the default SQLITE_IOERR_XXX code will be returned. */
+#if 0
   case EDEADLK:
     return SQLITE_IOERR_BLOCKED;
+#endif
     
 #if EOPNOTSUPP!=ENOTSUP
   case EOPNOTSUPP: 
@@ -23790,7 +25045,8 @@ struct unixFileId {
 struct unixInodeInfo {
   struct unixFileId fileId;       /* The lookup key */
   int nShared;                    /* Number of SHARED locks held */
-  int eFileLock;                  /* One of SHARED_LOCK, RESERVED_LOCK etc. */
+  unsigned char eFileLock;        /* One of SHARED_LOCK, RESERVED_LOCK etc. */
+  unsigned char bProcessLock;     /* An exclusive process lock is held */
   int nRef;                       /* Number of pointers to this structure */
   unixShmNode *pShmNode;          /* Shared memory associated with this inode */
   int nLock;                      /* Number of outstanding file locks */
@@ -23812,33 +25068,108 @@ struct unixInodeInfo {
 static unixInodeInfo *inodeList = 0;
 
 /*
-** Close all file descriptors accumuated in the unixInodeInfo->pUnused list.
-** If all such file descriptors are closed without error, the list is
-** cleared and SQLITE_OK returned.
 **
-** Otherwise, if an error occurs, then successfully closed file descriptor
-** entries are removed from the list, and SQLITE_IOERR_CLOSE returned. 
-** not deleted and SQLITE_IOERR_CLOSE returned.
+** This function - unixLogError_x(), is only ever called via the macro
+** unixLogError().
+**
+** It is invoked after an error occurs in an OS function and errno has been
+** set. It logs a message using sqlite3_log() containing the current value of
+** errno and, if possible, the human-readable equivalent from strerror() or
+** strerror_r().
+**
+** The first argument passed to the macro should be the error code that
+** will be returned to SQLite (e.g. SQLITE_IOERR_DELETE, SQLITE_CANTOPEN). 
+** The two subsequent arguments should be the name of the OS function that
+** failed (e.g. "unlink", "open") and the the associated file-system path,
+** if any.
+*/
+#define unixLogError(a,b,c)     unixLogErrorAtLine(a,b,c,__LINE__)
+static int unixLogErrorAtLine(
+  int errcode,                    /* SQLite error code */
+  const char *zFunc,              /* Name of OS function that failed */
+  const char *zPath,              /* File path associated with error */
+  int iLine                       /* Source line number where error occurred */
+){
+  char *zErr;                     /* Message from strerror() or equivalent */
+  int iErrno = errno;             /* Saved syscall error number */
+
+  /* If this is not a threadsafe build (SQLITE_THREADSAFE==0), then use
+  ** the strerror() function to obtain the human-readable error message
+  ** equivalent to errno. Otherwise, use strerror_r().
+  */ 
+#if SQLITE_THREADSAFE && defined(HAVE_STRERROR_R)
+  char aErr[80];
+  memset(aErr, 0, sizeof(aErr));
+  zErr = aErr;
+
+  /* If STRERROR_R_CHAR_P (set by autoconf scripts) or __USE_GNU is defined,
+  ** assume that the system provides the the GNU version of strerror_r() that 
+  ** returns a pointer to a buffer containing the error message. That pointer 
+  ** may point to aErr[], or it may point to some static storage somewhere. 
+  ** Otherwise, assume that the system provides the POSIX version of 
+  ** strerror_r(), which always writes an error message into aErr[].
+  **
+  ** If the code incorrectly assumes that it is the POSIX version that is
+  ** available, the error message will often be an empty string. Not a
+  ** huge problem. Incorrectly concluding that the GNU version is available 
+  ** could lead to a segfault though.
+  */
+#if defined(STRERROR_R_CHAR_P) || defined(__USE_GNU)
+  zErr = 
+# endif
+  strerror_r(iErrno, aErr, sizeof(aErr)-1);
+
+#elif SQLITE_THREADSAFE
+  /* This is a threadsafe build, but strerror_r() is not available. */
+  zErr = "";
+#else
+  /* Non-threadsafe build, use strerror(). */
+  zErr = strerror(iErrno);
+#endif
+
+  assert( errcode!=SQLITE_OK );
+  if( zPath==0 ) zPath = "";
+  sqlite3_log(errcode,
+      "os_unix.c:%d: (%d) %s(%s) - %s",
+      iLine, iErrno, zFunc, zPath, zErr
+  );
+
+  return errcode;
+}
+
+/*
+** Close a file descriptor.
+**
+** We assume that close() almost always works, since it is only in a
+** very sick application or on a very sick platform that it might fail.
+** If it does fail, simply leak the file descriptor, but do log the
+** error.
+**
+** Note that it is not safe to retry close() after EINTR since the
+** file descriptor might have already been reused by another thread.
+** So we don't even try to recover from an EINTR.  Just log the error
+** and move on.
+*/
+static void robust_close(unixFile *pFile, int h, int lineno){
+  if( osClose(h) ){
+    unixLogErrorAtLine(SQLITE_IOERR_CLOSE, "close",
+                       pFile ? pFile->zPath : 0, lineno);
+  }
+}
+
+/*
+** Close all file descriptors accumuated in the unixInodeInfo->pUnused list.
 */ 
-static int closePendingFds(unixFile *pFile){
-  int rc = SQLITE_OK;
+static void closePendingFds(unixFile *pFile){
   unixInodeInfo *pInode = pFile->pInode;
-  UnixUnusedFd *pError = 0;
   UnixUnusedFd *p;
   UnixUnusedFd *pNext;
   for(p=pInode->pUnused; p; p=pNext){
     pNext = p->pNext;
-    if( close(p->fd) ){
-      pFile->lastErrno = errno;
-      rc = SQLITE_IOERR_CLOSE;
-      p->pNext = pError;
-      pError = p;
-    }else{
-      sqlite3_free(p);
-    }
+    robust_close(pFile, p->fd, __LINE__);
+    sqlite3_free(p);
   }
-  pInode->pUnused = pError;
-  return rc;
+  pInode->pUnused = 0;
 }
 
 /*
@@ -23850,7 +25181,7 @@ static int closePendingFds(unixFile *pFile){
 static void releaseInodeInfo(unixFile *pFile){
   unixInodeInfo *pInode = pFile->pInode;
   assert( unixMutexHeld() );
-  if( pInode ){
+  if( ALWAYS(pInode) ){
     pInode->nRef--;
     if( pInode->nRef==0 ){
       assert( pInode->pShmNode==0 );
@@ -23897,7 +25228,7 @@ static int findInodeInfo(
   ** create a unique name for the file.
   */
   fd = pFile->h;
-  rc = fstat(fd, &statbuf);
+  rc = osFstat(fd, &statbuf);
   if( rc!=0 ){
     pFile->lastErrno = errno;
 #ifdef EOVERFLOW
@@ -23918,12 +25249,12 @@ static int findInodeInfo(
   ** the first page of the database, no damage is done.
   */
   if( statbuf.st_size==0 && (pFile->fsFlags & SQLITE_FSFLAGS_IS_MSDOS)!=0 ){
-    rc = write(fd, "S", 1);
+    do{ rc = osWrite(fd, "S", 1); }while( rc<0 && errno==EINTR );
     if( rc!=1 ){
       pFile->lastErrno = errno;
       return SQLITE_IOERR;
     }
-    rc = fstat(fd, &statbuf);
+    rc = osFstat(fd, &statbuf);
     if( rc!=0 ){
       pFile->lastErrno = errno;
       return SQLITE_IOERR;
@@ -23986,16 +25317,15 @@ static int unixCheckReservedLock(sqlite3_file *id, int *pResOut){
   /* Otherwise see if some other process holds it.
   */
 #ifndef __DJGPP__
-  if( !reserved ){
+  if( !reserved && !pFile->pInode->bProcessLock ){
     struct flock lock;
     lock.l_whence = SEEK_SET;
     lock.l_start = RESERVED_BYTE;
     lock.l_len = 1;
     lock.l_type = F_WRLCK;
-    if (-1 == fcntl(pFile->h, F_GETLK, &lock)) {
-      int tErrno = errno;
-      rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_CHECKRESERVEDLOCK);
-      pFile->lastErrno = tErrno;
+    if( osFcntl(pFile->h, F_GETLK, &lock) ){
+      rc = SQLITE_IOERR_CHECKRESERVEDLOCK;
+      pFile->lastErrno = errno;
     } else if( lock.l_type!=F_UNLCK ){
       reserved = 1;
     }
@@ -24009,6 +25339,53 @@ static int unixCheckReservedLock(sqlite3_file *id, int *pResOut){
   return rc;
 }
 
+/*
+** Attempt to set a system-lock on the file pFile.  The lock is 
+** described by pLock.
+**
+** If the pFile was opened read/write from unix-excl, then the only lock
+** ever obtained is an exclusive lock, and it is obtained exactly once
+** the first time any lock is attempted.  All subsequent system locking
+** operations become no-ops.  Locking operations still happen internally,
+** in order to coordinate access between separate database connections
+** within this process, but all of that is handled in memory and the
+** operating system does not participate.
+**
+** This function is a pass-through to fcntl(F_SETLK) if pFile is using
+** any VFS other than "unix-excl" or if pFile is opened on "unix-excl"
+** and is read-only.
+**
+** Zero is returned if the call completes successfully, or -1 if a call
+** to fcntl() fails. In this case, errno is set appropriately (by fcntl()).
+*/
+static int unixFileLock(unixFile *pFile, struct flock *pLock){
+  int rc;
+  unixInodeInfo *pInode = pFile->pInode;
+  assert( unixMutexHeld() );
+  assert( pInode!=0 );
+  if( ((pFile->ctrlFlags & UNIXFILE_EXCL)!=0 || pInode->bProcessLock)
+   && ((pFile->ctrlFlags & UNIXFILE_RDONLY)==0)
+  ){
+    if( pInode->bProcessLock==0 ){
+      struct flock lock;
+      assert( pInode->nLock==0 );
+      lock.l_whence = SEEK_SET;
+      lock.l_start = SHARED_FIRST;
+      lock.l_len = SHARED_SIZE;
+      lock.l_type = F_WRLCK;
+      rc = osFcntl(pFile->h, F_SETLK, &lock);
+      if( rc<0 ) return rc;
+      pInode->bProcessLock = 1;
+      pInode->nLock++;
+    }else{
+      rc = 0;
+    }
+  }else{
+    rc = osFcntl(pFile->h, F_SETLK, pLock);
+  }
+  return rc;
+}
+
 /*
 ** Lock the file with the lock specified by parameter eFileLock - one
 ** of the following:
@@ -24076,7 +25453,6 @@ static int unixLock(sqlite3_file *id, int eFileLock){
   unixFile *pFile = (unixFile*)id;
   unixInodeInfo *pInode = pFile->pInode;
   struct flock lock;
-  int s = 0;
   int tErrno = 0;
 
   assert( pFile );
@@ -24145,11 +25521,10 @@ static int unixLock(sqlite3_file *id, int eFileLock){
   ){
     lock.l_type = (eFileLock==SHARED_LOCK?F_RDLCK:F_WRLCK);
     lock.l_start = PENDING_BYTE;
-    s = fcntl(pFile->h, F_SETLK, &lock);
-    if( s==(-1) ){
+    if( unixFileLock(pFile, &lock) ){
       tErrno = errno;
       rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
-      if( IS_LOCK_ERROR(rc) ){
+      if( rc!=SQLITE_BUSY ){
         pFile->lastErrno = tErrno;
       }
       goto end_lock;
@@ -24163,33 +25538,31 @@ static int unixLock(sqlite3_file *id, int eFileLock){
   if( eFileLock==SHARED_LOCK ){
     assert( pInode->nShared==0 );
     assert( pInode->eFileLock==0 );
+    assert( rc==SQLITE_OK );
 
     /* Now get the read-lock */
     lock.l_start = SHARED_FIRST;
     lock.l_len = SHARED_SIZE;
-    if( (s = fcntl(pFile->h, F_SETLK, &lock))==(-1) ){
+    if( unixFileLock(pFile, &lock) ){
       tErrno = errno;
+      rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
     }
+
     /* Drop the temporary PENDING lock */
     lock.l_start = PENDING_BYTE;
     lock.l_len = 1L;
     lock.l_type = F_UNLCK;
-    if( fcntl(pFile->h, F_SETLK, &lock)!=0 ){
-      if( s != -1 ){
-        /* This could happen with a network mount */
-        tErrno = errno; 
-        rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK); 
-        if( IS_LOCK_ERROR(rc) ){
-          pFile->lastErrno = tErrno;
-        }
-        goto end_lock;
-      }
+    if( unixFileLock(pFile, &lock) && rc==SQLITE_OK ){
+      /* This could happen with a network mount */
+      tErrno = errno;
+      rc = SQLITE_IOERR_UNLOCK; 
     }
-    if( s==(-1) ){
-      rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
-      if( IS_LOCK_ERROR(rc) ){
+
+    if( rc ){
+      if( rc!=SQLITE_BUSY ){
         pFile->lastErrno = tErrno;
       }
+      goto end_lock;
     }else{
       pFile->eFileLock = SHARED_LOCK;
       pInode->nLock++;
@@ -24206,22 +25579,20 @@ static int unixLock(sqlite3_file *id, int eFileLock){
     */
     assert( 0!=pFile->eFileLock );
     lock.l_type = F_WRLCK;
-    switch( eFileLock ){
-      case RESERVED_LOCK:
-        lock.l_start = RESERVED_BYTE;
-        break;
-      case EXCLUSIVE_LOCK:
-        lock.l_start = SHARED_FIRST;
-        lock.l_len = SHARED_SIZE;
-        break;
-      default:
-        assert(0);
+
+    assert( eFileLock==RESERVED_LOCK || eFileLock==EXCLUSIVE_LOCK );
+    if( eFileLock==RESERVED_LOCK ){
+      lock.l_start = RESERVED_BYTE;
+      lock.l_len = 1L;
+    }else{
+      lock.l_start = SHARED_FIRST;
+      lock.l_len = SHARED_SIZE;
     }
-    s = fcntl(pFile->h, F_SETLK, &lock);
-    if( s==(-1) ){
+
+    if( unixFileLock(pFile, &lock) ){
       tErrno = errno;
       rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
-      if( IS_LOCK_ERROR(rc) ){
+      if( rc!=SQLITE_BUSY ){
         pFile->lastErrno = tErrno;
       }
     }
@@ -24286,13 +25657,12 @@ static void setPendingFd(unixFile *pFile){
 ** around a bug in BSD NFS lockd (also seen on MacOSX 10.3+) that fails to 
 ** remove the write lock on a region when a read lock is set.
 */
-static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
+static int posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
   unixFile *pFile = (unixFile*)id;
   unixInodeInfo *pInode;
   struct flock lock;
   int rc = SQLITE_OK;
   int h;
-  int tErrno;                      /* Error code from system call errors */
 
   assert( pFile );
   OSTRACE(("UNLOCK  %d %d was %d(%d,%d) pid=%d (unix)\n", pFile->h, eFileLock,
@@ -24340,16 +25710,23 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
     **  4:   [RRRR.]
     */
     if( eFileLock==SHARED_LOCK ){
+
+#if !defined(__APPLE__) || !SQLITE_ENABLE_LOCKING_STYLE
+      (void)handleNFSUnlock;
+      assert( handleNFSUnlock==0 );
+#endif
+#if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
       if( handleNFSUnlock ){
+        int tErrno;               /* Error code from system call errors */
         off_t divSize = SHARED_SIZE - 1;
         
         lock.l_type = F_UNLCK;
         lock.l_whence = SEEK_SET;
         lock.l_start = SHARED_FIRST;
         lock.l_len = divSize;
-        if( fcntl(h, F_SETLK, &lock)==(-1) ){
+        if( unixFileLock(pFile, &lock)==(-1) ){
           tErrno = errno;
-          rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
+          rc = SQLITE_IOERR_UNLOCK;
           if( IS_LOCK_ERROR(rc) ){
             pFile->lastErrno = tErrno;
           }
@@ -24359,7 +25736,7 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
         lock.l_whence = SEEK_SET;
         lock.l_start = SHARED_FIRST;
         lock.l_len = divSize;
-        if( fcntl(h, F_SETLK, &lock)==(-1) ){
+        if( unixFileLock(pFile, &lock)==(-1) ){
           tErrno = errno;
           rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_RDLOCK);
           if( IS_LOCK_ERROR(rc) ){
@@ -24371,25 +25748,30 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
         lock.l_whence = SEEK_SET;
         lock.l_start = SHARED_FIRST+divSize;
         lock.l_len = SHARED_SIZE-divSize;
-        if( fcntl(h, F_SETLK, &lock)==(-1) ){
+        if( unixFileLock(pFile, &lock)==(-1) ){
           tErrno = errno;
-          rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
+          rc = SQLITE_IOERR_UNLOCK;
           if( IS_LOCK_ERROR(rc) ){
             pFile->lastErrno = tErrno;
           }
           goto end_unlock;
         }
-      }else{
+      }else
+#endif /* defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE */
+      {
         lock.l_type = F_RDLCK;
         lock.l_whence = SEEK_SET;
         lock.l_start = SHARED_FIRST;
         lock.l_len = SHARED_SIZE;
-        if( fcntl(h, F_SETLK, &lock)==(-1) ){
-          tErrno = errno;
-          rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_RDLOCK);
-          if( IS_LOCK_ERROR(rc) ){
-            pFile->lastErrno = tErrno;
-          }
+        if( unixFileLock(pFile, &lock) ){
+          /* In theory, the call to unixFileLock() cannot fail because another
+          ** process is holding an incompatible lock. If it does, this 
+          ** indicates that the other process is not following the locking
+          ** protocol. If this happens, return SQLITE_IOERR_RDLOCK. Returning
+          ** SQLITE_BUSY would confuse the upper layer (in practice it causes 
+          ** an assert to fail). */ 
+          rc = SQLITE_IOERR_RDLOCK;
+          pFile->lastErrno = errno;
           goto end_unlock;
         }
       }
@@ -24398,14 +25780,11 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
     lock.l_whence = SEEK_SET;
     lock.l_start = PENDING_BYTE;
     lock.l_len = 2L;  assert( PENDING_BYTE+1==RESERVED_BYTE );
-    if( fcntl(h, F_SETLK, &lock)!=(-1) ){
+    if( unixFileLock(pFile, &lock)==0 ){
       pInode->eFileLock = SHARED_LOCK;
     }else{
-      tErrno = errno;
-      rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
-      if( IS_LOCK_ERROR(rc) ){
-        pFile->lastErrno = tErrno;
-      }
+      rc = SQLITE_IOERR_UNLOCK;
+      pFile->lastErrno = errno;
       goto end_unlock;
     }
   }
@@ -24422,14 +25801,11 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
       SimulateIOErrorBenign(1);
       SimulateIOError( h=(-1) )
       SimulateIOErrorBenign(0);
-      if( fcntl(h, F_SETLK, &lock)!=(-1) ){
+      if( unixFileLock(pFile, &lock)==0 ){
         pInode->eFileLock = NO_LOCK;
       }else{
-        tErrno = errno;
-        rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
-        if( IS_LOCK_ERROR(rc) ){
-          pFile->lastErrno = tErrno;
-        }
+        rc = SQLITE_IOERR_UNLOCK;
+	pFile->lastErrno = errno;
         pInode->eFileLock = NO_LOCK;
         pFile->eFileLock = NO_LOCK;
       }
@@ -24442,10 +25818,7 @@ static int _posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){
     pInode->nLock--;
     assert( pInode->nLock>=0 );
     if( pInode->nLock==0 ){
-      int rc2 = closePendingFds(pFile);
-      if( rc==SQLITE_OK ){
-        rc = rc2;
-      }
+      closePendingFds(pFile);
     }
   }
 	
@@ -24463,7 +25836,7 @@ end_unlock:
 ** the requested locking level, this routine is a no-op.
 */
 static int unixUnlock(sqlite3_file *id, int eFileLock){
-  return _posixUnlock(id, eFileLock, 0);
+  return posixUnlock(id, eFileLock, 0);
 }
 
 /*
@@ -24478,37 +25851,27 @@ static int unixUnlock(sqlite3_file *id, int eFileLock){
 */
 static int closeUnixFile(sqlite3_file *id){
   unixFile *pFile = (unixFile*)id;
-  if( pFile ){
-    if( pFile->dirfd>=0 ){
-      int err = close(pFile->dirfd);
-      if( err ){
-        pFile->lastErrno = errno;
-        return SQLITE_IOERR_DIR_CLOSE;
-      }else{
-        pFile->dirfd=-1;
-      }
-    }
-    if( pFile->h>=0 ){
-      int err = close(pFile->h);
-      if( err ){
-        pFile->lastErrno = errno;
-        return SQLITE_IOERR_CLOSE;
-      }
-    }
+  if( pFile->dirfd>=0 ){
+    robust_close(pFile, pFile->dirfd, __LINE__);
+    pFile->dirfd=-1;
+  }
+  if( pFile->h>=0 ){
+    robust_close(pFile, pFile->h, __LINE__);
+    pFile->h = -1;
+  }
 #if OS_VXWORKS
-    if( pFile->pId ){
-      if( pFile->isDelete ){
-        unlink(pFile->pId->zCanonicalName);
-      }
-      vxworksReleaseFileId(pFile->pId);
-      pFile->pId = 0;
+  if( pFile->pId ){
+    if( pFile->isDelete ){
+      unlink(pFile->pId->zCanonicalName);
     }
-#endif
-    OSTRACE(("CLOSE   %-3d\n", pFile->h));
-    OpenCounter(-1);
-    sqlite3_free(pFile->pUnused);
-    memset(pFile, 0, sizeof(unixFile));
+    vxworksReleaseFileId(pFile->pId);
+    pFile->pId = 0;
   }
+#endif
+  OSTRACE(("CLOSE   %-3d\n", pFile->h));
+  OpenCounter(-1);
+  sqlite3_free(pFile->pUnused);
+  memset(pFile, 0, sizeof(unixFile));
   return SQLITE_OK;
 }
 
@@ -24517,22 +25880,25 @@ static int closeUnixFile(sqlite3_file *id){
 */
 static int unixClose(sqlite3_file *id){
   int rc = SQLITE_OK;
-  if( id ){
-    unixFile *pFile = (unixFile *)id;
-    unixUnlock(id, NO_LOCK);
-    unixEnterMutex();
-    if( pFile->pInode && pFile->pInode->nLock ){
-      /* If there are outstanding locks, do not actually close the file just
-      ** yet because that would clear those locks.  Instead, add the file
-      ** descriptor to pInode->pUnused list.  It will be automatically closed 
-      ** when the last lock is cleared.
-      */
-      setPendingFd(pFile);
-    }
-    releaseInodeInfo(pFile);
-    rc = closeUnixFile(id);
-    unixLeaveMutex();
+  unixFile *pFile = (unixFile *)id;
+  unixUnlock(id, NO_LOCK);
+  unixEnterMutex();
+
+  /* unixFile.pInode is always valid here. Otherwise, a different close
+  ** routine (e.g. nolockClose()) would be called instead.
+  */
+  assert( pFile->pInode->nLock>0 || pFile->pInode->bProcessLock==0 );
+  if( ALWAYS(pFile->pInode) && pFile->pInode->nLock ){
+    /* If there are outstanding locks, do not actually close the file just
+    ** yet because that would clear those locks.  Instead, add the file
+    ** descriptor to pInode->pUnused list.  It will be automatically closed 
+    ** when the last lock is cleared.
+    */
+    setPendingFd(pFile);
   }
+  releaseInodeInfo(pFile);
+  rc = closeUnixFile(id);
+  unixLeaveMutex();
   return rc;
 }
 
@@ -24635,7 +26001,7 @@ static int dotlockCheckReservedLock(sqlite3_file *id, int *pResOut) {
   }else{
     /* The lock is held if and only if the lockfile exists */
     const char *zLockFile = (const char*)pFile->lockingContext;
-    reserved = access(zLockFile, 0)==0;
+    reserved = osAccess(zLockFile, 0)==0;
   }
   OSTRACE(("TEST WR-LOCK %d %d %d (dotlock)\n", pFile->h, rc, reserved));
   *pResOut = reserved;
@@ -24689,7 +26055,7 @@ static int dotlockLock(sqlite3_file *id, int eFileLock) {
   }
   
   /* grab an exclusive lock */
-  fd = open(zLockFile,O_RDONLY|O_CREAT|O_EXCL,0600);
+  fd = robust_open(zLockFile,O_RDONLY|O_CREAT|O_EXCL,0600);
   if( fd<0 ){
     /* failed to open/create the file, someone else may have stolen the lock */
     int tErrno = errno;
@@ -24703,10 +26069,7 @@ static int dotlockLock(sqlite3_file *id, int eFileLock) {
     }
     return rc;
   } 
-  if( close(fd) ){
-    pFile->lastErrno = errno;
-    rc = SQLITE_IOERR_CLOSE;
-  }
+  robust_close(pFile, fd, __LINE__);
   
   /* got it, set the type and return ok */
   pFile->eFileLock = eFileLock;
@@ -24750,7 +26113,7 @@ static int dotlockUnlock(sqlite3_file *id, int eFileLock) {
     int rc = 0;
     int tErrno = errno;
     if( ENOENT != tErrno ){
-      rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
+      rc = SQLITE_IOERR_UNLOCK;
     }
     if( IS_LOCK_ERROR(rc) ){
       pFile->lastErrno = tErrno;
@@ -24794,6 +26157,20 @@ static int dotlockClose(sqlite3_file *id) {
 */
 #if SQLITE_ENABLE_LOCKING_STYLE && !OS_VXWORKS
 
+/*
+** Retry flock() calls that fail with EINTR
+*/
+#ifdef EINTR
+static int robust_flock(int fd, int op){
+  int rc;
+  do{ rc = flock(fd,op); }while( rc<0 && errno==EINTR );
+  return rc;
+}
+#else
+# define robust_flock(a,b) flock(a,b)
+#endif
+     
+
 /*
 ** This routine checks if there is a RESERVED lock held on the specified
 ** file by this or any other process. If such a lock is held, set *pResOut
@@ -24817,14 +26194,14 @@ static int flockCheckReservedLock(sqlite3_file *id, int *pResOut){
   /* Otherwise see if some other process holds it. */
   if( !reserved ){
     /* attempt to get the lock */
-    int lrc = flock(pFile->h, LOCK_EX | LOCK_NB);
+    int lrc = robust_flock(pFile->h, LOCK_EX | LOCK_NB);
     if( !lrc ){
       /* got the lock, unlock it */
-      lrc = flock(pFile->h, LOCK_UN);
+      lrc = robust_flock(pFile->h, LOCK_UN);
       if ( lrc ) {
         int tErrno = errno;
         /* unlock failed with an error */
-        lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK); 
+        lrc = SQLITE_IOERR_UNLOCK; 
         if( IS_LOCK_ERROR(lrc) ){
           pFile->lastErrno = tErrno;
           rc = lrc;
@@ -24897,7 +26274,7 @@ static int flockLock(sqlite3_file *id, int eFileLock) {
   
   /* grab an exclusive lock */
   
-  if (flock(pFile->h, LOCK_EX | LOCK_NB)) {
+  if (robust_flock(pFile->h, LOCK_EX | LOCK_NB)) {
     int tErrno = errno;
     /* didn't get, must be busy */
     rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
@@ -24946,21 +26323,12 @@ static int flockUnlock(sqlite3_file *id, int eFileLock) {
   }
   
   /* no, really, unlock. */
-  int rc = flock(pFile->h, LOCK_UN);
-  if (rc) {
-    int r, tErrno = errno;
-    r = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
-    if( IS_LOCK_ERROR(r) ){
-      pFile->lastErrno = tErrno;
-    }
+  if( robust_flock(pFile->h, LOCK_UN) ){
 #ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
-    if( (r & SQLITE_IOERR) == SQLITE_IOERR ){
-      r = SQLITE_BUSY;
-    }
+    return SQLITE_OK;
 #endif /* SQLITE_IGNORE_FLOCK_LOCK_ERRORS */
-    
-    return r;
-  } else {
+    return SQLITE_IOERR_UNLOCK;
+  }else{
     pFile->eFileLock = NO_LOCK;
     return SQLITE_OK;
   }
@@ -25584,7 +26952,7 @@ static int afpUnlock(sqlite3_file *id, int eFileLock) {
       pInode->nLock--;
       assert( pInode->nLock>=0 );
       if( pInode->nLock==0 ){
-        rc = closePendingFds(pFile);
+        closePendingFds(pFile);
       }
     }
   }
@@ -25641,7 +27009,7 @@ static int afpClose(sqlite3_file *id) {
  ** the requested locking level, this routine is a no-op.
  */
 static int nfsUnlock(sqlite3_file *id, int eFileLock){
-  return _posixUnlock(id, eFileLock, 1);
+  return posixUnlock(id, eFileLock, 1);
 }
 
 #endif /* defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE */
@@ -25683,10 +27051,10 @@ static int seekAndRead(unixFile *id, sqlite3_int64 offset, void *pBuf, int cnt){
 #endif
   TIMER_START;
 #if defined(USE_PREAD)
-  got = pread(id->h, pBuf, cnt, offset);
+  do{ got = osPread(id->h, pBuf, cnt, offset); }while( got<0 && errno==EINTR );
   SimulateIOError( got = -1 );
 #elif defined(USE_PREAD64)
-  got = pread64(id->h, pBuf, cnt, offset);
+  do{ got = osPread64(id->h, pBuf, cnt, offset); }while( got<0 && errno==EINTR);
   SimulateIOError( got = -1 );
 #else
   newOffset = lseek(id->h, offset, SEEK_SET);
@@ -25699,7 +27067,7 @@ static int seekAndRead(unixFile *id, sqlite3_int64 offset, void *pBuf, int cnt){
     }
     return -1;
   }
-  got = read(id->h, pBuf, cnt);
+  do{ got = osRead(id->h, pBuf, cnt); }while( got<0 && errno==EINTR );
 #endif
   TIMER_END;
   if( got<0 ){
@@ -25761,11 +27129,12 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){
 #endif
   TIMER_START;
 #if defined(USE_PREAD)
-  got = pwrite(id->h, pBuf, cnt, offset);
+  do{ got = osPwrite(id->h, pBuf, cnt, offset); }while( got<0 && errno==EINTR );
 #elif defined(USE_PREAD64)
-  got = pwrite64(id->h, pBuf, cnt, offset);
+  do{ got = osPwrite64(id->h, pBuf, cnt, offset);}while( got<0 && errno==EINTR);
 #else
   newOffset = lseek(id->h, offset, SEEK_SET);
+  SimulateIOError( newOffset-- );
   if( newOffset!=offset ){
     if( newOffset == -1 ){
       ((unixFile*)id)->lastErrno = errno;
@@ -25774,7 +27143,7 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){
     }
     return -1;
   }
-  got = write(id->h, pBuf, cnt);
+  do{ got = osWrite(id->h, pBuf, cnt); }while( got<0 && errno==EINTR );
 #endif
   TIMER_END;
   if( got<0 ){
@@ -25942,7 +27311,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
   rc = SQLITE_OK;
 #elif HAVE_FULLFSYNC
   if( fullSync ){
-    rc = fcntl(fd, F_FULLFSYNC, 0);
+    rc = osFcntl(fd, F_FULLFSYNC, 0);
   }else{
     rc = 1;
   }
@@ -26014,10 +27383,9 @@ static int unixSync(sqlite3_file *id, int flags){
   SimulateIOError( rc=1 );
   if( rc ){
     pFile->lastErrno = errno;
-    return SQLITE_IOERR_FSYNC;
+    return unixLogError(SQLITE_IOERR_FSYNC, "full_fsync", pFile->zPath);
   }
   if( pFile->dirfd>=0 ){
-    int err;
     OSTRACE(("DIRSYNC %-3d (have_fullfsync=%d fullsync=%d)\n", pFile->dirfd,
             HAVE_FULLFSYNC, isFullsync));
 #ifndef SQLITE_DISABLE_DIRSYNC
@@ -26036,13 +27404,9 @@ static int unixSync(sqlite3_file *id, int flags){
        /* return SQLITE_IOERR; */
     }
 #endif
-    err = close(pFile->dirfd); /* Only need to sync once, so close the */
-    if( err==0 ){              /* directory when we are done */
-      pFile->dirfd = -1;
-    }else{
-      pFile->lastErrno = errno;
-      rc = SQLITE_IOERR_DIR_CLOSE;
-    }
+    /* Only need to sync once, so close the  directory when we are done */
+    robust_close(pFile, pFile->dirfd, __LINE__);
+    pFile->dirfd = -1;
   }
   return rc;
 }
@@ -26065,10 +27429,10 @@ static int unixTruncate(sqlite3_file *id, i64 nByte){
     nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
   }
 
-  rc = ftruncate(pFile->h, (off_t)nByte);
+  rc = robust_ftruncate(pFile->h, (off_t)nByte);
   if( rc ){
     pFile->lastErrno = errno;
-    return SQLITE_IOERR_TRUNCATE;
+    return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
   }else{
 #ifndef NDEBUG
     /* If we are doing a normal write to a database file (as opposed to
@@ -26094,7 +27458,7 @@ static int unixFileSize(sqlite3_file *id, i64 *pSize){
   int rc;
   struct stat buf;
   assert( id );
-  rc = fstat(((unixFile*)id)->h, &buf);
+  rc = osFstat(((unixFile*)id)->h, &buf);
   SimulateIOError( rc=1 );
   if( rc!=0 ){
     ((unixFile*)id)->lastErrno = errno;
@@ -26135,14 +27499,20 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
     i64 nSize;                    /* Required file size */
     struct stat buf;              /* Used to hold return values of fstat() */
    
-    if( fstat(pFile->h, &buf) ) return SQLITE_IOERR_FSTAT;
+    if( osFstat(pFile->h, &buf) ) return SQLITE_IOERR_FSTAT;
 
     nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
     if( nSize>(i64)buf.st_size ){
+
 #if defined(HAVE_POSIX_FALLOCATE) && HAVE_POSIX_FALLOCATE
-      if( posix_fallocate(pFile->h, buf.st_size, nSize-buf.st_size) ){
-        return SQLITE_IOERR_WRITE;
-      }
+      /* The code below is handling the return value of osFallocate() 
+      ** correctly. posix_fallocate() is defined to "returns zero on success, 
+      ** or an error number on  failure". See the manpage for details. */
+      int err;
+      do{
+        err = osFallocate(pFile->h, buf.st_size, nSize-buf.st_size);
+      }while( err==EINTR );
+      if( err ) return SQLITE_IOERR_WRITE;
 #else
       /* If the OS does not have posix_fallocate(), fake it. First use
       ** ftruncate() to set the file size, then write a single byte to
@@ -26152,18 +27522,17 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
       */
       int nBlk = buf.st_blksize;  /* File-system block size */
       i64 iWrite;                 /* Next offset to write to */
-      int nWrite;                 /* Return value from seekAndWrite() */
 
-      if( ftruncate(pFile->h, nSize) ){
+      if( robust_ftruncate(pFile->h, nSize) ){
         pFile->lastErrno = errno;
-        return SQLITE_IOERR_TRUNCATE;
+        return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
       }
       iWrite = ((buf.st_size + 2*nBlk - 1)/nBlk)*nBlk-1;
-      do {
-        nWrite = seekAndWrite(pFile, iWrite, "", 1);
+      while( iWrite<nSize ){
+        int nWrite = seekAndWrite(pFile, iWrite, "", 1);
+        if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
         iWrite += nBlk;
-      } while( nWrite==1 && iWrite<nSize );
-      if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
+      }
 #endif
     }
   }
@@ -26341,15 +27710,17 @@ static int unixShmSystemLock(
   /* Locks are within range */
   assert( n>=1 && n<SQLITE_SHM_NLOCK );
 
-  /* Initialize the locking parameters */
-  memset(&f, 0, sizeof(f));
-  f.l_type = lockType;
-  f.l_whence = SEEK_SET;
-  f.l_start = ofst;
-  f.l_len = n;
+  if( pShmNode->h>=0 ){
+    /* Initialize the locking parameters */
+    memset(&f, 0, sizeof(f));
+    f.l_type = lockType;
+    f.l_whence = SEEK_SET;
+    f.l_start = ofst;
+    f.l_len = n;
 
-  rc = fcntl(pShmNode->h, F_SETLK, &f);
-  rc = (rc!=(-1)) ? SQLITE_OK : SQLITE_BUSY;
+    rc = osFcntl(pShmNode->h, F_SETLK, &f);
+    rc = (rc!=(-1)) ? SQLITE_OK : SQLITE_BUSY;
+  }
 
   /* Update the global lock state and do debug tracing */
 #ifdef SQLITE_DEBUG
@@ -26404,10 +27775,17 @@ static void unixShmPurge(unixFile *pFd){
     assert( p->pInode==pFd->pInode );
     if( p->mutex ) sqlite3_mutex_free(p->mutex);
     for(i=0; i<p->nRegion; i++){
-      munmap(p->apRegion[i], p->szRegion);
+      if( p->h>=0 ){
+        munmap(p->apRegion[i], p->szRegion);
+      }else{
+        sqlite3_free(p->apRegion[i]);
+      }
     }
     sqlite3_free(p->apRegion);
-    if( p->h>=0 ) close(p->h);
+    if( p->h>=0 ){
+      robust_close(pFd, p->h, __LINE__);
+      p->h = -1;
+    }
     p->pInode->pShmNode = 0;
     sqlite3_free(p);
   }
@@ -26441,6 +27819,12 @@ static void unixShmPurge(unixFile *pFd){
 ** When opening a new shared-memory file, if no other instances of that
 ** file are currently open, in this process or in other processes, then
 ** the file must be truncated to zero length or have its header cleared.
+**
+** If the original database file (pDbFd) is using the "unix-excl" VFS
+** that means that an exclusive lock is held on the database file and
+** that no other processes are able to read or write the database.  In
+** that case, we do not really need shared memory.  No shared memory
+** file is created.  The shared memory will be simulated with heap memory.
 */
 static int unixOpenSharedMemory(unixFile *pDbFd){
   struct unixShm *p = 0;          /* The connection to be opened */
@@ -26470,7 +27854,7 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
     ** with the same permissions. The actual permissions the file is created
     ** with are subject to the current umask setting.
     */
-    if( fstat(pDbFd->h, &sStat) ){
+    if( osFstat(pDbFd->h, &sStat) && pInode->bProcessLock==0 ){
       rc = SQLITE_IOERR_FSTAT;
       goto shm_open_err;
     }
@@ -26503,25 +27887,28 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
       goto shm_open_err;
     }
 
-    pShmNode->h = open(zShmFilename, O_RDWR|O_CREAT, (sStat.st_mode & 0777));
-    if( pShmNode->h<0 ){
-      rc = SQLITE_CANTOPEN_BKPT;
-      goto shm_open_err;
-    }
-
-    /* Check to see if another process is holding the dead-man switch.
-    ** If not, truncate the file to zero length. 
-    */
-    rc = SQLITE_OK;
-    if( unixShmSystemLock(pShmNode, F_WRLCK, UNIX_SHM_DMS, 1)==SQLITE_OK ){
-      if( ftruncate(pShmNode->h, 0) ){
-        rc = SQLITE_IOERR_SHMOPEN;
+    if( pInode->bProcessLock==0 ){
+      pShmNode->h = robust_open(zShmFilename, O_RDWR|O_CREAT,
+                               (sStat.st_mode & 0777));
+      if( pShmNode->h<0 ){
+        rc = unixLogError(SQLITE_CANTOPEN_BKPT, "open", zShmFilename);
+        goto shm_open_err;
       }
+  
+      /* Check to see if another process is holding the dead-man switch.
+      ** If not, truncate the file to zero length. 
+      */
+      rc = SQLITE_OK;
+      if( unixShmSystemLock(pShmNode, F_WRLCK, UNIX_SHM_DMS, 1)==SQLITE_OK ){
+        if( robust_ftruncate(pShmNode->h, 0) ){
+          rc = unixLogError(SQLITE_IOERR_SHMOPEN, "ftruncate", zShmFilename);
+        }
+      }
+      if( rc==SQLITE_OK ){
+        rc = unixShmSystemLock(pShmNode, F_RDLCK, UNIX_SHM_DMS, 1);
+      }
+      if( rc ) goto shm_open_err;
     }
-    if( rc==SQLITE_OK ){
-      rc = unixShmSystemLock(pShmNode, F_RDLCK, UNIX_SHM_DMS, 1);
-    }
-    if( rc ) goto shm_open_err;
   }
 
   /* Make the new connection a child of the unixShmNode */
@@ -26595,6 +27982,9 @@ static int unixShmMap(
   pShmNode = p->pShmNode;
   sqlite3_mutex_enter(pShmNode->mutex);
   assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 );
+  assert( pShmNode->pInode==pDbFd->pInode );
+  assert( pShmNode->h>=0 || pDbFd->pInode->bProcessLock==1 );
+  assert( pShmNode->h<0 || pDbFd->pInode->bProcessLock==0 );
 
   if( pShmNode->nRegion<=iRegion ){
     char **apNew;                      /* New apRegion[] array */
@@ -26603,27 +27993,30 @@ static int unixShmMap(
 
     pShmNode->szRegion = szRegion;
 
-    /* The requested region is not mapped into this processes address space.
-    ** Check to see if it has been allocated (i.e. if the wal-index file is
-    ** large enough to contain the requested region).
-    */
-    if( fstat(pShmNode->h, &sStat) ){
-      rc = SQLITE_IOERR_SHMSIZE;
-      goto shmpage_out;
-    }
-
-    if( sStat.st_size<nByte ){
-      /* The requested memory region does not exist. If bExtend is set to
-      ** false, exit early. *pp will be set to NULL and SQLITE_OK returned.
-      **
-      ** Alternatively, if bExtend is true, use ftruncate() to allocate
-      ** the requested memory region.
+    if( pShmNode->h>=0 ){
+      /* The requested region is not mapped into this processes address space.
+      ** Check to see if it has been allocated (i.e. if the wal-index file is
+      ** large enough to contain the requested region).
       */
-      if( !bExtend ) goto shmpage_out;
-      if( ftruncate(pShmNode->h, nByte) ){
+      if( osFstat(pShmNode->h, &sStat) ){
         rc = SQLITE_IOERR_SHMSIZE;
         goto shmpage_out;
       }
+  
+      if( sStat.st_size<nByte ){
+        /* The requested memory region does not exist. If bExtend is set to
+        ** false, exit early. *pp will be set to NULL and SQLITE_OK returned.
+        **
+        ** Alternatively, if bExtend is true, use ftruncate() to allocate
+        ** the requested memory region.
+        */
+        if( !bExtend ) goto shmpage_out;
+        if( robust_ftruncate(pShmNode->h, nByte) ){
+          rc = unixLogError(SQLITE_IOERR_SHMSIZE, "ftruncate",
+                            pShmNode->zFilename);
+          goto shmpage_out;
+        }
+      }
     }
 
     /* Map the requested memory region into this processes address space. */
@@ -26636,12 +28029,22 @@ static int unixShmMap(
     }
     pShmNode->apRegion = apNew;
     while(pShmNode->nRegion<=iRegion){
-      void *pMem = mmap(0, szRegion, PROT_READ|PROT_WRITE, 
-          MAP_SHARED, pShmNode->h, pShmNode->nRegion*szRegion
-      );
-      if( pMem==MAP_FAILED ){
-        rc = SQLITE_IOERR;
-        goto shmpage_out;
+      void *pMem;
+      if( pShmNode->h>=0 ){
+        pMem = mmap(0, szRegion, PROT_READ|PROT_WRITE, 
+            MAP_SHARED, pShmNode->h, pShmNode->nRegion*szRegion
+        );
+        if( pMem==MAP_FAILED ){
+          rc = SQLITE_IOERR;
+          goto shmpage_out;
+        }
+      }else{
+        pMem = sqlite3_malloc(szRegion);
+        if( pMem==0 ){
+          rc = SQLITE_NOMEM;
+          goto shmpage_out;
+        }
+        memset(pMem, 0, szRegion);
       }
       pShmNode->apRegion[pShmNode->nRegion] = pMem;
       pShmNode->nRegion++;
@@ -26688,6 +28091,8 @@ static int unixShmLock(
        || flags==(SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED)
        || flags==(SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE) );
   assert( n==1 || (flags & SQLITE_SHM_EXCLUSIVE)!=0 );
+  assert( pShmNode->h>=0 || pDbFd->pInode->bProcessLock==1 );
+  assert( pShmNode->h<0 || pDbFd->pInode->bProcessLock==0 );
 
   mask = (1<<(ofst+n)) - (1<<ofst);
   assert( n>1 || mask==(1<<ofst) );
@@ -26825,7 +28230,7 @@ static int unixShmUnmap(
   assert( pShmNode->nRef>0 );
   pShmNode->nRef--;
   if( pShmNode->nRef==0 ){
-    if( deleteFlag ) unlink(pShmNode->zFilename);
+    if( deleteFlag && pShmNode->h>=0 ) unlink(pShmNode->zFilename);
     unixShmPurge(pDbFd);
   }
   unixLeaveMutex();
@@ -27066,7 +28471,7 @@ static const sqlite3_io_methods *autolockIoFinderImpl(
   lockInfo.l_start = 0;
   lockInfo.l_whence = SEEK_SET;
   lockInfo.l_type = F_RDLCK;
-  if( fcntl(pNew->h, F_GETLK, &lockInfo)!=-1 ) {
+  if( osFcntl(pNew->h, F_GETLK, &lockInfo)!=-1 ) {
     if( strcmp(fsInfo.f_fstypename, "nfs")==0 ){
       return &nfsIoMethods;
     } else {
@@ -27108,7 +28513,7 @@ static const sqlite3_io_methods *autolockIoFinderImpl(
   lockInfo.l_start = 0;
   lockInfo.l_whence = SEEK_SET;
   lockInfo.l_type = F_RDLCK;
-  if( fcntl(pNew->h, F_GETLK, &lockInfo)!=-1 ) {
+  if( osFcntl(pNew->h, F_GETLK, &lockInfo)!=-1 ) {
     return &posixIoMethods;
   }else{
     return &semIoMethods;
@@ -27142,7 +28547,8 @@ static int fillInUnixFile(
   sqlite3_file *pId,      /* Write to the unixFile structure here */
   const char *zFilename,  /* Name of the file being opened */
   int noLock,             /* Omit locking if true */
-  int isDelete            /* Delete on close if true */
+  int isDelete,           /* Delete on close if true */
+  int isReadOnly          /* True if the file is opened read-only */
 ){
   const sqlite3_io_methods *pLockingStyle;
   unixFile *pNew = (unixFile *)pId;
@@ -27169,8 +28575,15 @@ static int fillInUnixFile(
   OSTRACE(("OPEN    %-3d %s\n", h, zFilename));
   pNew->h = h;
   pNew->dirfd = dirfd;
-  pNew->fileFlags = 0;
   pNew->zPath = zFilename;
+  if( memcmp(pVfs->zName,"unix-excl",10)==0 ){
+    pNew->ctrlFlags = UNIXFILE_EXCL;
+  }else{
+    pNew->ctrlFlags = 0;
+  }
+  if( isReadOnly ){
+    pNew->ctrlFlags |= UNIXFILE_RDONLY;
+  }
 
 #if OS_VXWORKS
   pNew->pId = vxworksFindFileId(zFilename);
@@ -27218,7 +28631,7 @@ static int fillInUnixFile(
       ** implicit assumption here is that if fstat() fails, things are in
       ** such bad shape that dropping a lock or two doesn't matter much.
       */
-      close(h);
+      robust_close(pNew, h, __LINE__);
       h = -1;
     }
     unixLeaveMutex();
@@ -27244,7 +28657,7 @@ static int fillInUnixFile(
       rc = findInodeInfo(pNew, &pNew->pInode);
       if( rc!=SQLITE_OK ){
         sqlite3_free(pNew->lockingContext);
-        close(h);
+        robust_close(pNew, h, __LINE__);
         h = -1;
       }
       unixLeaveMutex();        
@@ -27295,7 +28708,7 @@ static int fillInUnixFile(
   pNew->lastErrno = 0;
 #if OS_VXWORKS
   if( rc!=SQLITE_OK ){
-    if( h>=0 ) close(h);
+    if( h>=0 ) robust_close(pNew, h, __LINE__);
     h = -1;
     unlink(zFilename);
     isDelete = 0;
@@ -27303,8 +28716,8 @@ static int fillInUnixFile(
   pNew->isDelete = isDelete;
 #endif
   if( rc!=SQLITE_OK ){
-    if( dirfd>=0 ) close(dirfd); /* silent leak if fail, already in error */
-    if( h>=0 ) close(h);
+    if( dirfd>=0 ) robust_close(pNew, dirfd, __LINE__);
+    if( h>=0 ) robust_close(pNew, h, __LINE__);
   }else{
     pNew->pMethod = pLockingStyle;
     OpenCounter(+1);
@@ -27331,16 +28744,16 @@ static int openDirectory(const char *zFilename, int *pFd){
   for(ii=(int)strlen(zDirname); ii>1 && zDirname[ii]!='/'; ii--);
   if( ii>0 ){
     zDirname[ii] = '\0';
-    fd = open(zDirname, O_RDONLY|O_BINARY, 0);
+    fd = robust_open(zDirname, O_RDONLY|O_BINARY, 0);
     if( fd>=0 ){
 #ifdef FD_CLOEXEC
-      fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
+      osFcntl(fd, F_SETFD, osFcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
 #endif
       OSTRACE(("OPENDIR %-3d %s\n", fd, zDirname));
     }
   }
   *pFd = fd;
-  return (fd>=0?SQLITE_OK:SQLITE_CANTOPEN_BKPT);
+  return (fd>=0?SQLITE_OK:unixLogError(SQLITE_CANTOPEN_BKPT, "open", zDirname));
 }
 
 /*
@@ -27364,9 +28777,9 @@ static const char *unixTempFileDir(void){
   if( !azDirs[1] ) azDirs[1] = getenv("TMPDIR");
   for(i=0; i<sizeof(azDirs)/sizeof(azDirs[0]); zDir=azDirs[i++]){
     if( zDir==0 ) continue;
-    if( stat(zDir, &buf) ) continue;
+    if( osStat(zDir, &buf) ) continue;
     if( !S_ISDIR(buf.st_mode) ) continue;
-    if( access(zDir, 07) ) continue;
+    if( osAccess(zDir, 07) ) continue;
     break;
   }
   return zDir;
@@ -27409,7 +28822,7 @@ static int unixGetTempname(int nBuf, char *zBuf){
       zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
     }
     zBuf[j] = 0;
-  }while( access(zBuf,0)==0 );
+  }while( osAccess(zBuf,0)==0 );
   return SQLITE_OK;
 }
 
@@ -27670,7 +29083,7 @@ static int unixOpen(
       assert( eType==SQLITE_OPEN_WAL || eType==SQLITE_OPEN_MAIN_JOURNAL );
       return rc;
     }
-    fd = open(zName, openFlags, openMode);
+    fd = robust_open(zName, openFlags, openMode);
     OSTRACE(("OPENX   %-3d %s 0%o\n", fd, zName, openFlags));
     if( fd<0 && errno!=EISDIR && isReadWrite && !isExclusive ){
       /* Failed to open the file for read/write access. Try read-only. */
@@ -27678,10 +29091,11 @@ static int unixOpen(
       openFlags &= ~(O_RDWR|O_CREAT);
       flags |= SQLITE_OPEN_READONLY;
       openFlags |= O_RDONLY;
-      fd = open(zName, openFlags, openMode);
+      isReadonly = 1;
+      fd = robust_open(zName, openFlags, openMode);
     }
     if( fd<0 ){
-      rc = SQLITE_CANTOPEN_BKPT;
+      rc = unixLogError(SQLITE_CANTOPEN_BKPT, "open", zName);
       goto open_finished;
     }
   }
@@ -27716,13 +29130,13 @@ static int unixOpen(
       ** it would not be safe to close as this would release any locks held
       ** on the file by this process.  */
       assert( eType!=SQLITE_OPEN_MAIN_DB );
-      close(fd);             /* silently leak if fail, already in error */
+      robust_close(p, fd, __LINE__);
       goto open_finished;
     }
   }
 
 #ifdef FD_CLOEXEC
-  fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
+  osFcntl(fd, F_SETFD, osFcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
 #endif
 
   noLock = eType!=SQLITE_OPEN_MAIN_DB;
@@ -27732,8 +29146,8 @@ static int unixOpen(
   struct statfs fsInfo;
   if( fstatfs(fd, &fsInfo) == -1 ){
     ((unixFile*)pFile)->lastErrno = errno;
-    if( dirfd>=0 ) close(dirfd); /* silently leak if fail, in error */
-    close(fd); /* silently leak if fail, in error */
+    if( dirfd>=0 ) robust_close(p, dirfd, __LINE__);
+    robust_close(p, fd, __LINE__);
     return SQLITE_IOERR_ACCESS;
   }
   if (0 == strncmp("msdos", fsInfo.f_fstypename, 5)) {
@@ -27765,16 +29179,17 @@ static int unixOpen(
         ** the same file are working.  */
         p->lastErrno = errno;
         if( dirfd>=0 ){
-          close(dirfd); /* silently leak if fail, in error */
+          robust_close(p, dirfd, __LINE__);
         }
-        close(fd); /* silently leak if fail, in error */
+        robust_close(p, fd, __LINE__);
         rc = SQLITE_IOERR_ACCESS;
         goto open_finished;
       }
       useProxy = !(fsInfo.f_flags&MNT_LOCAL);
     }
     if( useProxy ){
-      rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock, isDelete);
+      rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock,
+                          isDelete, isReadonly);
       if( rc==SQLITE_OK ){
         rc = proxyTransformUnixFile((unixFile*)pFile, ":auto:");
         if( rc!=SQLITE_OK ){
@@ -27791,7 +29206,8 @@ static int unixOpen(
   }
 #endif
   
-  rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock, isDelete);
+  rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock,
+                      isDelete, isReadonly);
 open_finished:
   if( rc!=SQLITE_OK ){
     sqlite3_free(p->pUnused);
@@ -27813,7 +29229,7 @@ static int unixDelete(
   UNUSED_PARAMETER(NotUsed);
   SimulateIOError(return SQLITE_IOERR_DELETE);
   if( unlink(zPath)==(-1) && errno!=ENOENT ){
-    return SQLITE_IOERR_DELETE;
+    return unixLogError(SQLITE_IOERR_DELETE, "unlink", zPath);
   }
 #ifndef SQLITE_DISABLE_DIRSYNC
   if( dirSync ){
@@ -27826,11 +29242,9 @@ static int unixDelete(
       if( fsync(fd) )
 #endif
       {
-        rc = SQLITE_IOERR_DIR_FSYNC;
-      }
-      if( close(fd)&&!rc ){
-        rc = SQLITE_IOERR_DIR_CLOSE;
+        rc = unixLogError(SQLITE_IOERR_DIR_FSYNC, "fsync", zPath);
       }
+      robust_close(0, fd, __LINE__);
     }
   }
 #endif
@@ -27870,7 +29284,7 @@ static int unixAccess(
     default:
       assert(!"Invalid flags argument");
   }
-  *pResOut = (access(zPath, amode)==0);
+  *pResOut = (osAccess(zPath, amode)==0);
   if( flags==SQLITE_ACCESS_EXISTS && *pResOut ){
     struct stat buf;
     if( 0==stat(zPath, &buf) && buf.st_size==0 ){
@@ -27912,8 +29326,8 @@ static int unixFullPathname(
     sqlite3_snprintf(nOut, zOut, "%s", zPath);
   }else{
     int nCwd;
-    if( getcwd(zOut, nOut-1)==0 ){
-      return SQLITE_CANTOPEN_BKPT;
+    if( osGetcwd(zOut, nOut-1)==0 ){
+      return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath);
     }
     nCwd = (int)strlen(zOut);
     sqlite3_snprintf(nOut-nCwd, &zOut[nCwd], "/%s", zPath);
@@ -28007,7 +29421,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
 #if !defined(SQLITE_TEST)
   {
     int pid, fd;
-    fd = open("/dev/urandom", O_RDONLY);
+    fd = robust_open("/dev/urandom", O_RDONLY, 0);
     if( fd<0 ){
       time_t t;
       time(&t);
@@ -28017,8 +29431,8 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
       assert( sizeof(t)+sizeof(pid)<=(size_t)nBuf );
       nBuf = sizeof(t) + sizeof(pid);
     }else{
-      nBuf = read(fd, zBuf, nBuf);
-      close(fd);
+      do{ nBuf = osRead(fd, zBuf, nBuf); }while( nBuf<0 && errno==EINTR );
+      robust_close(0, fd, __LINE__);
     }
   }
 #endif
@@ -28416,17 +29830,17 @@ static int proxyCreateUnixFile(
     }
   }
   if( fd<0 ){
-    fd = open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
+    fd = robust_open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
     terrno = errno;
     if( fd<0 && errno==ENOENT && islockfile ){
       if( proxyCreateLockPath(path) == SQLITE_OK ){
-        fd = open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
+        fd = robust_open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
       }
     }
   }
   if( fd<0 ){
     openFlags = O_RDONLY;
-    fd = open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
+    fd = robust_open(path, openFlags, SQLITE_DEFAULT_FILE_PERMISSIONS);
     terrno = errno;
   }
   if( fd<0 ){
@@ -28450,18 +29864,20 @@ static int proxyCreateUnixFile(
   }
   memset(pNew, 0, sizeof(unixFile));
   pNew->openFlags = openFlags;
+  memset(&dummyVfs, 0, sizeof(dummyVfs));
   dummyVfs.pAppData = (void*)&autolockIoFinder;
+  dummyVfs.zName = "dummy";
   pUnused->fd = fd;
   pUnused->flags = openFlags;
   pNew->pUnused = pUnused;
   
-  rc = fillInUnixFile(&dummyVfs, fd, dirfd, (sqlite3_file*)pNew, path, 0, 0);
+  rc = fillInUnixFile(&dummyVfs, fd, dirfd, (sqlite3_file*)pNew, path, 0, 0, 0);
   if( rc==SQLITE_OK ){
     *ppFile = pNew;
     return SQLITE_OK;
   }
 end_create_proxy:    
-  close(fd); /* silently leak fd if error, we're already in error */
+  robust_close(pNew, fd, __LINE__);
   sqlite3_free(pNew);
   sqlite3_free(pUnused);
   return rc;
@@ -28540,18 +29956,19 @@ static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){
     goto end_breaklock;
   }
   /* read the conch content */
-  readLen = pread(conchFile->h, buf, PROXY_MAXCONCHLEN, 0);
+  readLen = osPread(conchFile->h, buf, PROXY_MAXCONCHLEN, 0);
   if( readLen<PROXY_PATHINDEX ){
     sqlite3_snprintf(sizeof(errmsg),errmsg,"read error (len %d)",(int)readLen);
     goto end_breaklock;
   }
   /* write it out to the temporary break file */
-  fd = open(tPath, (O_RDWR|O_CREAT|O_EXCL), SQLITE_DEFAULT_FILE_PERMISSIONS);
+  fd = robust_open(tPath, (O_RDWR|O_CREAT|O_EXCL),
+                   SQLITE_DEFAULT_FILE_PERMISSIONS);
   if( fd<0 ){
     sqlite3_snprintf(sizeof(errmsg), errmsg, "create failed (%d)", errno);
     goto end_breaklock;
   }
-  if( pwrite(fd, buf, readLen, 0) != (ssize_t)readLen ){
+  if( osPwrite(fd, buf, readLen, 0) != (ssize_t)readLen ){
     sqlite3_snprintf(sizeof(errmsg), errmsg, "write failed (%d)", errno);
     goto end_breaklock;
   }
@@ -28561,7 +29978,7 @@ static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){
   }
   rc = 0;
   fprintf(stderr, "broke stale lock on %s\n", cPath);
-  close(conchFile->h);
+  robust_close(pFile, conchFile->h, __LINE__);
   conchFile->h = fd;
   conchFile->openFlags = O_RDWR | O_CREAT;
 
@@ -28569,7 +29986,7 @@ end_breaklock:
   if( rc ){
     if( fd>=0 ){
       unlink(tPath);
-      close(fd);
+      robust_close(pFile, fd, __LINE__);
     }
     fprintf(stderr, "failed to break stale lock on %s, %s\n", cPath, errmsg);
   }
@@ -28597,7 +30014,7 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
        * 3rd try: break the lock unless the mod time has changed.
        */
       struct stat buf;
-      if( fstat(conchFile->h, &buf) ){
+      if( osFstat(conchFile->h, &buf) ){
         pFile->lastErrno = errno;
         return SQLITE_IOERR_LOCK;
       }
@@ -28616,7 +30033,7 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
       
       if( nTries==2 ){  
         char tBuf[PROXY_MAXCONCHLEN];
-        int len = pread(conchFile->h, tBuf, PROXY_MAXCONCHLEN, 0);
+        int len = osPread(conchFile->h, tBuf, PROXY_MAXCONCHLEN, 0);
         if( len<0 ){
           pFile->lastErrno = errno;
           return SQLITE_IOERR_LOCK;
@@ -28778,7 +30195,7 @@ static int proxyTakeConch(unixFile *pFile){
           strlcpy(&writeBuffer[PROXY_PATHINDEX], tempLockPath, MAXPATHLEN);
         }
         writeSize = PROXY_PATHINDEX + strlen(&writeBuffer[PROXY_PATHINDEX]);
-        ftruncate(conchFile->h, writeSize);
+        robust_ftruncate(conchFile->h, writeSize);
         rc = unixWrite((sqlite3_file *)conchFile, writeBuffer, writeSize, 0);
         fsync(conchFile->h);
         /* If we created a new conch file (not just updated the contents of a 
@@ -28786,15 +30203,18 @@ static int proxyTakeConch(unixFile *pFile){
          */
         if( rc==SQLITE_OK && createConch ){
           struct stat buf;
-          int err = fstat(pFile->h, &buf);
+          int err = osFstat(pFile->h, &buf);
           if( err==0 ){
             mode_t cmode = buf.st_mode&(S_IRUSR|S_IWUSR | S_IRGRP|S_IWGRP |
                                         S_IROTH|S_IWOTH);
             /* try to match the database file R/W permissions, ignore failure */
 #ifndef SQLITE_PROXY_DEBUG
-            fchmod(conchFile->h, cmode);
+            osFchmod(conchFile->h, cmode);
 #else
-            if( fchmod(conchFile->h, cmode)!=0 ){
+            do{
+              rc = osFchmod(conchFile->h, cmode);
+            }while( rc==(-1) && errno==EINTR );
+            if( rc!=0 ){
               int code = errno;
               fprintf(stderr, "fchmod %o FAILED with %d %s\n",
                       cmode, code, strerror(code));
@@ -28815,17 +30235,10 @@ static int proxyTakeConch(unixFile *pFile){
       OSTRACE(("TRANSPROXY: CLOSE  %d\n", pFile->h));
       if( rc==SQLITE_OK && pFile->openFlags ){
         if( pFile->h>=0 ){
-#ifdef STRICT_CLOSE_ERROR
-          if( close(pFile->h) ){
-            pFile->lastErrno = errno;
-            return SQLITE_IOERR_CLOSE;
-          }
-#else
-          close(pFile->h); /* silently leak fd if fail */
-#endif
+          robust_close(pFile, pFile->h, __LINE__);
         }
         pFile->h = -1;
-        int fd = open(pCtx->dbPath, pFile->openFlags,
+        int fd = robust_open(pCtx->dbPath, pFile->openFlags,
                       SQLITE_DEFAULT_FILE_PERMISSIONS);
         OSTRACE(("TRANSPROXY: OPEN  %d\n", fd));
         if( fd>=0 ){
@@ -29051,7 +30464,7 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
       struct stat conchInfo;
       int goLockless = 0;
 
-      if( stat(pCtx->conchFilePath, &conchInfo) == -1 ) {
+      if( osStat(pCtx->conchFilePath, &conchInfo) == -1 ) {
         int err = errno;
         if( (err==ENOENT) && (statfs(dbPath, &fsInfo) != -1) ){
           goLockless = (fsInfo.f_flags&MNT_RDONLY) == MNT_RDONLY;
@@ -29336,7 +30749,7 @@ SQLITE_API int sqlite3_os_init(void){
   ** that filesystem time.
   */
   #define UNIXVFS(VFSNAME, FINDER) {                        \
-    2,                    /* iVersion */                    \
+    3,                    /* iVersion */                    \
     sizeof(unixFile),     /* szOsFile */                    \
     MAX_PATHNAME,         /* mxPathname */                  \
     0,                    /* pNext */                       \
@@ -29355,6 +30768,9 @@ SQLITE_API int sqlite3_os_init(void){
     unixCurrentTime,      /* xCurrentTime */                \
     unixGetLastError,     /* xGetLastError */               \
     unixCurrentTimeInt64, /* xCurrentTimeInt64 */           \
+    unixSetSystemCall,    /* xSetSystemCall */              \
+    unixGetSystemCall,    /* xGetSystemCall */              \
+    unixNextSystemCall,   /* xNextSystemCall */             \
   }
 
   /*
@@ -29372,6 +30788,7 @@ SQLITE_API int sqlite3_os_init(void){
 #endif
     UNIXVFS("unix-none",     nolockIoFinder ),
     UNIXVFS("unix-dotfile",  dotlockIoFinder ),
+    UNIXVFS("unix-excl",     posixIoFinder ),
 #if OS_VXWORKS
     UNIXVFS("unix-namedsem", semIoFinder ),
 #endif
@@ -29389,6 +30806,10 @@ SQLITE_API int sqlite3_os_init(void){
   };
   unsigned int i;          /* Loop counter */
 
+  /* Double-check that the aSyscall[] array has been constructed
+  ** correctly.  See ticket [bb3a86e890c8e96ab] */
+  assert( ArraySize(aSyscall)==16 );
+
   /* Register all VFSes defined in the aVfs[] array */
   for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){
     sqlite3_vfs_register(&aVfs[i], i==0);
@@ -32362,7 +33783,7 @@ static int winGetLastError(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
 */
 SQLITE_API int sqlite3_os_init(void){
   static sqlite3_vfs winVfs = {
-    2,                   /* iVersion */
+    3,                   /* iVersion */
     sizeof(winFile),     /* szOsFile */
     MAX_PATH,            /* mxPathname */
     0,                   /* pNext */
@@ -32381,6 +33802,9 @@ SQLITE_API int sqlite3_os_init(void){
     winCurrentTime,      /* xCurrentTime */
     winGetLastError,     /* xGetLastError */
     winCurrentTimeInt64, /* xCurrentTimeInt64 */
+    0,                   /* xSetSystemCall */
+    0,                   /* xGetSystemCall */
+    0,                   /* xNextSystemCall */
   };
 
 #ifndef SQLITE_OMIT_WAL
@@ -34835,22 +36259,22 @@ SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, u8 iBatch, sqlite3_int64 i
 
 
 #ifdef SQLITE_OMIT_WAL
-# define sqlite3WalOpen(x,y,z)                 0
-# define sqlite3WalClose(w,x,y,z)              0
-# define sqlite3WalBeginReadTransaction(y,z)   0
+# define sqlite3WalOpen(x,y,z)                   0
+# define sqlite3WalClose(w,x,y,z)                0
+# define sqlite3WalBeginReadTransaction(y,z)     0
 # define sqlite3WalEndReadTransaction(z)
-# define sqlite3WalRead(v,w,x,y,z)             0
-# define sqlite3WalDbsize(y)                   0
-# define sqlite3WalBeginWriteTransaction(y)    0
-# define sqlite3WalEndWriteTransaction(x)      0
-# define sqlite3WalUndo(x,y,z)                 0
+# define sqlite3WalRead(v,w,x,y,z)               0
+# define sqlite3WalDbsize(y)                     0
+# define sqlite3WalBeginWriteTransaction(y)      0
+# define sqlite3WalEndWriteTransaction(x)        0
+# define sqlite3WalUndo(x,y,z)                   0
 # define sqlite3WalSavepoint(y,z)
-# define sqlite3WalSavepointUndo(y,z)          0
-# define sqlite3WalFrames(u,v,w,x,y,z)         0
-# define sqlite3WalCheckpoint(u,v,w,x)         0
-# define sqlite3WalCallback(z)                 0
-# define sqlite3WalExclusiveMode(y,z)          0
-# define sqlite3WalHeapMemory(z)               0
+# define sqlite3WalSavepointUndo(y,z)            0
+# define sqlite3WalFrames(u,v,w,x,y,z)           0
+# define sqlite3WalCheckpoint(r,s,t,u,v,w,x,y,z) 0
+# define sqlite3WalCallback(z)                   0
+# define sqlite3WalExclusiveMode(y,z)            0
+# define sqlite3WalHeapMemory(z)                 0
 #else
 
 #define WAL_SAVEPOINT_NDATA 4
@@ -34901,9 +36325,14 @@ SQLITE_PRIVATE int sqlite3WalFrames(Wal *pWal, int, PgHdr *, Pgno, int, int);
 /* Copy pages from the log to the database file */ 
 SQLITE_PRIVATE int sqlite3WalCheckpoint(
   Wal *pWal,                      /* Write-ahead log connection */
+  int eMode,                      /* One of PASSIVE, FULL and RESTART */
+  int (*xBusy)(void*),            /* Function to call when busy */
+  void *pBusyArg,                 /* Context argument for xBusyHandler */
   int sync_flags,                 /* Flags to sync db file with (or 0) */
   int nBuf,                       /* Size of buffer nBuf */
-  u8 *zBuf                        /* Temporary buffer to use */
+  u8 *zBuf,                       /* Temporary buffer to use */
+  int *pnLog,                     /* OUT: Number of frames in WAL */
+  int *pnCkpt                     /* OUT: Number of backfilled frames in WAL */
 );
 
 /* Return the value to pass to a sqlite3_wal_hook callback, the
@@ -37759,6 +39188,28 @@ static int readDbPage(PgHdr *pPg){
   return rc;
 }
 
+/*
+** Update the value of the change-counter at offsets 24 and 92 in
+** the header and the sqlite version number at offset 96.
+**
+** This is an unconditional update.  See also the pager_incr_changecounter()
+** routine which only updates the change-counter if the update is actually
+** needed, as determined by the pPager->changeCountDone state variable.
+*/
+static void pager_write_changecounter(PgHdr *pPg){
+  u32 change_counter;
+
+  /* Increment the value just read and write it back to byte 24. */
+  change_counter = sqlite3Get4byte((u8*)pPg->pPager->dbFileVers)+1;
+  put32bits(((char*)pPg->pData)+24, change_counter);
+
+  /* Also store the SQLite version number in bytes 96..99 and in
+  ** bytes 92..95 store the change counter for which the version number
+  ** is valid. */
+  put32bits(((char*)pPg->pData)+92, change_counter);
+  put32bits(((char*)pPg->pData)+96, SQLITE_VERSION_NUMBER);
+}
+
 #ifndef SQLITE_OMIT_WAL
 /*
 ** This function is invoked once for each page that has already been 
@@ -37829,34 +39280,11 @@ static int pagerRollbackWal(Pager *pPager){
   return rc;
 }
 
-
-/*
-** Update the value of the change-counter at offsets 24 and 92 in
-** the header and the sqlite version number at offset 96.
-**
-** This is an unconditional update.  See also the pager_incr_changecounter()
-** routine which only updates the change-counter if the update is actually
-** needed, as determined by the pPager->changeCountDone state variable.
-*/
-static void pager_write_changecounter(PgHdr *pPg){
-  u32 change_counter;
-
-  /* Increment the value just read and write it back to byte 24. */
-  change_counter = sqlite3Get4byte((u8*)pPg->pPager->dbFileVers)+1;
-  put32bits(((char*)pPg->pData)+24, change_counter);
-
-  /* Also store the SQLite version number in bytes 96..99 and in
-  ** bytes 92..95 store the change counter for which the version number
-  ** is valid. */
-  put32bits(((char*)pPg->pData)+92, change_counter);
-  put32bits(((char*)pPg->pData)+96, SQLITE_VERSION_NUMBER);
-}
-
 /*
 ** This function is a wrapper around sqlite3WalFrames(). As well as logging
 ** the contents of the list of pages headed by pList (connected by pDirty),
 ** this function notifies any active backup processes that the pages have
-** changed.
+** changed. 
 **
 ** The list of pages passed into this routine is always sorted by page number.
 ** Hence, if page 1 appears anywhere on the list, it will be the first page.
@@ -37881,6 +39309,19 @@ static int pagerWalFrames(
   }
 #endif
 
+  if( isCommit ){
+    /* If a WAL transaction is being committed, there is no point in writing
+    ** any pages with page numbers greater than nTruncate into the WAL file.
+    ** They will never be read by any client. So remove them from the pDirty
+    ** list here. */
+    PgHdr *p;
+    PgHdr **ppNext = &pList;
+    for(p=pList; (*ppNext = p); p=p->pDirty){
+      if( p->pgno<=nTruncate ) ppNext = &p->pDirty;
+    }
+    assert( pList );
+  }
+
   if( pList->pgno==1 ) pager_write_changecounter(pList);
   rc = sqlite3WalFrames(pPager->pWal, 
       pPager->pageSize, pList, nTruncate, isCommit, syncFlags
@@ -37893,6 +39334,7 @@ static int pagerWalFrames(
   }
 
 #ifdef SQLITE_CHECK_PAGES
+  pList = sqlite3PcacheDirtyList(pPager->pPCache);
   for(p=pList; p; p=p->pDirty){
     pager_set_pagehash(p);
   }
@@ -41508,14 +42950,20 @@ SQLITE_PRIVATE sqlite3_backup **sqlite3PagerBackupPtr(Pager *pPager){
 
 #ifndef SQLITE_OMIT_WAL
 /*
-** This function is called when the user invokes "PRAGMA checkpoint".
+** This function is called when the user invokes "PRAGMA wal_checkpoint",
+** "PRAGMA wal_blocking_checkpoint" or calls the sqlite3_wal_checkpoint()
+** or wal_blocking_checkpoint() API functions.
+**
+** Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
 */
-SQLITE_PRIVATE int sqlite3PagerCheckpoint(Pager *pPager){
+SQLITE_PRIVATE int sqlite3PagerCheckpoint(Pager *pPager, int eMode, int *pnLog, int *pnCkpt){
   int rc = SQLITE_OK;
   if( pPager->pWal ){
-    u8 *zBuf = (u8 *)pPager->pTmpSpace;
-    rc = sqlite3WalCheckpoint(pPager->pWal, pPager->ckptSyncFlags,
-                              pPager->pageSize, zBuf);
+    rc = sqlite3WalCheckpoint(pPager->pWal, eMode,
+        pPager->xBusyHandler, pPager->pBusyHandlerArg,
+        pPager->ckptSyncFlags, pPager->pageSize, (u8 *)pPager->pTmpSpace,
+        pnLog, pnCkpt
+    );
   }
   return rc;
 }
@@ -41543,8 +42991,8 @@ static int pagerExclusiveLock(Pager *pPager){
   assert( pPager->eLock==SHARED_LOCK || pPager->eLock==EXCLUSIVE_LOCK );
   rc = pagerLockDb(pPager, EXCLUSIVE_LOCK);
   if( rc!=SQLITE_OK ){
-    /* If the attempt to grab the pending lock failed, release the 
-    ** exclusive lock that may have been obtained instead.  */
+    /* If the attempt to grab the exclusive lock failed, release the 
+    ** pending lock that may have been obtained instead.  */
     pagerUnlockDb(pPager, SHARED_LOCK);
   }
 
@@ -43255,6 +44703,34 @@ static int walIteratorInit(Wal *pWal, WalIterator **pp){
   return rc;
 }
 
+/*
+** Attempt to obtain the exclusive WAL lock defined by parameters lockIdx and
+** n. If the attempt fails and parameter xBusy is not NULL, then it is a
+** busy-handler function. Invoke it and retry the lock until either the
+** lock is successfully obtained or the busy-handler returns 0.
+*/
+static int walBusyLock(
+  Wal *pWal,                      /* WAL connection */
+  int (*xBusy)(void*),            /* Function to call when busy */
+  void *pBusyArg,                 /* Context argument for xBusyHandler */
+  int lockIdx,                    /* Offset of first byte to lock */
+  int n                           /* Number of bytes to lock */
+){
+  int rc;
+  do {
+    rc = walLockExclusive(pWal, lockIdx, n);
+  }while( xBusy && rc==SQLITE_BUSY && xBusy(pBusyArg) );
+  return rc;
+}
+
+/*
+** The cache of the wal-index header must be valid to call this function.
+** Return the page-size in bytes used by the database.
+*/
+static int walPagesize(Wal *pWal){
+  return (pWal->hdr.szPage&0xfe00) + ((pWal->hdr.szPage&0x0001)<<16);
+}
+
 /*
 ** Copy as much content as we can from the WAL back into the database file
 ** in response to an sqlite3_wal_checkpoint() request or the equivalent.
@@ -43288,8 +44764,10 @@ static int walIteratorInit(Wal *pWal, WalIterator **pp){
 */
 static int walCheckpoint(
   Wal *pWal,                      /* Wal connection */
+  int eMode,                      /* One of PASSIVE, FULL or RESTART */
+  int (*xBusyCall)(void*),        /* Function to call when busy */
+  void *pBusyArg,                 /* Context argument for xBusyHandler */
   int sync_flags,                 /* Flags for OsSync() (or 0) */
-  int nBuf,                       /* Size of zBuf in bytes */
   u8 *zBuf                        /* Temporary buffer to use */
 ){
   int rc;                         /* Return code */
@@ -43301,8 +44779,9 @@ static int walCheckpoint(
   u32 mxPage;                     /* Max database page to write */
   int i;                          /* Loop counter */
   volatile WalCkptInfo *pInfo;    /* The checkpoint status information */
+  int (*xBusy)(void*) = 0;        /* Function to call when waiting for locks */
 
-  szPage = (pWal->hdr.szPage&0xfe00) + ((pWal->hdr.szPage&0x0001)<<16);
+  szPage = walPagesize(pWal);
   testcase( szPage<=32768 );
   testcase( szPage>=65536 );
   pInfo = walCkptInfo(pWal);
@@ -43315,11 +44794,7 @@ static int walCheckpoint(
   }
   assert( pIter );
 
-  /*** TODO:  Move this test out to the caller.  Make it an assert() here ***/
-  if( szPage!=nBuf ){
-    rc = SQLITE_CORRUPT_BKPT;
-    goto walcheckpoint_out;
-  }
+  if( eMode!=SQLITE_CHECKPOINT_PASSIVE ) xBusy = xBusyCall;
 
   /* Compute in mxSafeFrame the index of the last frame of the WAL that is
   ** safe to write into the database.  Frames beyond mxSafeFrame might
@@ -43330,14 +44805,15 @@ static int walCheckpoint(
   mxPage = pWal->hdr.nPage;
   for(i=1; i<WAL_NREADER; i++){
     u32 y = pInfo->aReadMark[i];
-    if( mxSafeFrame>=y ){
+    if( mxSafeFrame>y ){
       assert( y<=pWal->hdr.mxFrame );
-      rc = walLockExclusive(pWal, WAL_READ_LOCK(i), 1);
+      rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
       if( rc==SQLITE_OK ){
         pInfo->aReadMark[i] = READMARK_NOT_USED;
         walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
       }else if( rc==SQLITE_BUSY ){
         mxSafeFrame = y;
+        xBusy = 0;
       }else{
         goto walcheckpoint_out;
       }
@@ -43345,7 +44821,7 @@ static int walCheckpoint(
   }
 
   if( pInfo->nBackfill<mxSafeFrame
-   && (rc = walLockExclusive(pWal, WAL_READ_LOCK(0), 1))==SQLITE_OK
+   && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0), 1))==SQLITE_OK
   ){
     i64 nSize;                    /* Current size of database file */
     u32 nBackfill = pInfo->nBackfill;
@@ -43398,13 +44874,32 @@ static int walCheckpoint(
 
     /* Release the reader lock held while backfilling */
     walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
-  }else if( rc==SQLITE_BUSY ){
+  }
+
+  if( rc==SQLITE_BUSY ){
     /* Reset the return code so as not to report a checkpoint failure
-    ** just because active readers prevent any backfill.
-    */
+    ** just because there are active readers.  */
     rc = SQLITE_OK;
   }
 
+  /* If this is an SQLITE_CHECKPOINT_RESTART operation, and the entire wal
+  ** file has been copied into the database file, then block until all
+  ** readers have finished using the wal file. This ensures that the next
+  ** process to write to the database restarts the wal file.
+  */
+  if( rc==SQLITE_OK && eMode!=SQLITE_CHECKPOINT_PASSIVE ){
+    assert( pWal->writeLock );
+    if( pInfo->nBackfill<pWal->hdr.mxFrame ){
+      rc = SQLITE_BUSY;
+    }else if( eMode==SQLITE_CHECKPOINT_RESTART ){
+      assert( mxSafeFrame==pWal->hdr.mxFrame );
+      rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(1), WAL_NREADER-1);
+      if( rc==SQLITE_OK ){
+        walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
+      }
+    }
+  }
+
  walcheckpoint_out:
   walIteratorFree(pIter);
   return rc;
@@ -43436,7 +44931,9 @@ SQLITE_PRIVATE int sqlite3WalClose(
       if( pWal->exclusiveMode==WAL_NORMAL_MODE ){
         pWal->exclusiveMode = WAL_EXCLUSIVE_MODE;
       }
-      rc = sqlite3WalCheckpoint(pWal, sync_flags, nBuf, zBuf);
+      rc = sqlite3WalCheckpoint(
+          pWal, SQLITE_CHECKPOINT_PASSIVE, 0, 0, sync_flags, nBuf, zBuf, 0, 0
+      );
       if( rc==SQLITE_OK ){
         isDelete = 1;
       }
@@ -43648,10 +45145,31 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
 
   assert( pWal->readLock<0 );     /* Not currently locked */
 
-  /* Take steps to avoid spinning forever if there is a protocol error. */
+  /* Take steps to avoid spinning forever if there is a protocol error.
+  **
+  ** Circumstances that cause a RETRY should only last for the briefest
+  ** instances of time.  No I/O or other system calls are done while the
+  ** locks are held, so the locks should not be held for very long. But 
+  ** if we are unlucky, another process that is holding a lock might get
+  ** paged out or take a page-fault that is time-consuming to resolve, 
+  ** during the few nanoseconds that it is holding the lock.  In that case,
+  ** it might take longer than normal for the lock to free.
+  **
+  ** After 5 RETRYs, we begin calling sqlite3OsSleep().  The first few
+  ** calls to sqlite3OsSleep() have a delay of 1 microsecond.  Really this
+  ** is more of a scheduler yield than an actual delay.  But on the 10th
+  ** an subsequent retries, the delays start becoming longer and longer, 
+  ** so that on the 100th (and last) RETRY we delay for 21 milliseconds.
+  ** The total delay time before giving up is less than 1 second.
+  */
   if( cnt>5 ){
-    if( cnt>100 ) return SQLITE_PROTOCOL;
-    sqlite3OsSleep(pWal->pVfs, 1);
+    int nDelay = 1;                      /* Pause time in microseconds */
+    if( cnt>100 ){
+      VVA_ONLY( pWal->lockError = 1; )
+      return SQLITE_PROTOCOL;
+    }
+    if( cnt>=10 ) nDelay = (cnt-9)*238;  /* Max delay 21ms. Total delay 996ms */
+    sqlite3OsSleep(pWal->pVfs, nDelay);
   }
 
   if( !useWal ){
@@ -43733,22 +45251,9 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
       mxI = i;
     }
   }
-  if( mxI==0 ){
-    /* If we get here, it means that all of the aReadMark[] entries between
-    ** 1 and WAL_NREADER-1 are zero.  Try to initialize aReadMark[1] to
-    ** be mxFrame, then retry.
-    */
-    rc = walLockExclusive(pWal, WAL_READ_LOCK(1), 1);
-    if( rc==SQLITE_OK ){
-      pInfo->aReadMark[1] = pWal->hdr.mxFrame;
-      walUnlockExclusive(pWal, WAL_READ_LOCK(1), 1);
-      rc = WAL_RETRY;
-    }else if( rc==SQLITE_BUSY ){
-      rc = WAL_RETRY;
-    }
-    return rc;
-  }else{
-    if( mxReadMark < pWal->hdr.mxFrame ){
+  /* There was once an "if" here. The extra "{" is to preserve indentation. */
+  {
+    if( mxReadMark < pWal->hdr.mxFrame || mxI==0 ){
       for(i=1; i<WAL_NREADER; i++){
         rc = walLockExclusive(pWal, WAL_READ_LOCK(i), 1);
         if( rc==SQLITE_OK ){
@@ -43761,6 +45266,10 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
         }
       }
     }
+    if( mxI==0 ){
+      assert( rc==SQLITE_BUSY );
+      return WAL_RETRY;
+    }
 
     rc = walLockShared(pWal, WAL_READ_LOCK(mxI));
     if( rc ){
@@ -43821,6 +45330,10 @@ SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){
   do{
     rc = walTryBeginRead(pWal, pChanged, 0, ++cnt);
   }while( rc==WAL_RETRY );
+  testcase( (rc&0xff)==SQLITE_BUSY );
+  testcase( (rc&0xff)==SQLITE_IOERR );
+  testcase( rc==SQLITE_PROTOCOL );
+  testcase( rc==SQLITE_OK );
   return rc;
 }
 
@@ -44138,6 +45651,8 @@ static int walRestartLog(Wal *pWal){
     volatile WalCkptInfo *pInfo = walCkptInfo(pWal);
     assert( pInfo->nBackfill==pWal->hdr.mxFrame );
     if( pInfo->nBackfill>0 ){
+      u32 salt1;
+      sqlite3_randomness(4, &salt1);
       rc = walLockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
       if( rc==SQLITE_OK ){
         /* If all readers are using WAL_READ_LOCK(0) (in other words if no
@@ -44155,7 +45670,7 @@ static int walRestartLog(Wal *pWal){
         pWal->nCkpt++;
         pWal->hdr.mxFrame = 0;
         sqlite3Put4byte((u8*)&aSalt[0], 1 + sqlite3Get4byte((u8*)&aSalt[0]));
-        sqlite3_randomness(4, &aSalt[1]);
+        aSalt[1] = salt1;
         walIndexWriteHdr(pWal);
         pInfo->nBackfill = 0;
         for(i=1; i<WAL_NREADER; i++) pInfo->aReadMark[i] = READMARK_NOT_USED;
@@ -44172,6 +45687,10 @@ static int walRestartLog(Wal *pWal){
       int notUsed;
       rc = walTryBeginRead(pWal, ¬Used, 1, ++cnt);
     }while( rc==WAL_RETRY );
+    assert( (rc&0xff)!=SQLITE_BUSY ); /* BUSY not possible when useWal==1 */
+    testcase( (rc&0xff)==SQLITE_IOERR );
+    testcase( rc==SQLITE_PROTOCOL );
+    testcase( rc==SQLITE_OK );
   }
   return rc;
 }
@@ -44351,17 +45870,27 @@ SQLITE_PRIVATE int sqlite3WalFrames(
 **
 ** Obtain a CHECKPOINT lock and then backfill as much information as
 ** we can from WAL into the database.
+**
+** If parameter xBusy is not NULL, it is a pointer to a busy-handler
+** callback. In this case this function runs a blocking checkpoint.
 */
 SQLITE_PRIVATE int sqlite3WalCheckpoint(
   Wal *pWal,                      /* Wal connection */
+  int eMode,                      /* PASSIVE, FULL or RESTART */
+  int (*xBusy)(void*),            /* Function to call when busy */
+  void *pBusyArg,                 /* Context argument for xBusyHandler */
   int sync_flags,                 /* Flags to sync db file with (or 0) */
   int nBuf,                       /* Size of temporary buffer */
-  u8 *zBuf                        /* Temporary buffer to use */
+  u8 *zBuf,                       /* Temporary buffer to use */
+  int *pnLog,                     /* OUT: Number of frames in WAL */
+  int *pnCkpt                     /* OUT: Number of backfilled frames in WAL */
 ){
   int rc;                         /* Return code */
   int isChanged = 0;              /* True if a new wal-index header is loaded */
+  int eMode2 = eMode;             /* Mode to pass to walCheckpoint() */
 
   assert( pWal->ckptLock==0 );
+  assert( pWal->writeLock==0 );
 
   WALTRACE(("WAL%p: checkpoint begins\n", pWal));
   rc = walLockExclusive(pWal, WAL_CKPT_LOCK, 1);
@@ -44373,11 +45902,45 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
   }
   pWal->ckptLock = 1;
 
+  /* If this is a blocking-checkpoint, then obtain the write-lock as well
+  ** to prevent any writers from running while the checkpoint is underway.
+  ** This has to be done before the call to walIndexReadHdr() below.
+  **
+  ** If the writer lock cannot be obtained, then a passive checkpoint is
+  ** run instead. Since the checkpointer is not holding the writer lock,
+  ** there is no point in blocking waiting for any readers. Assuming no 
+  ** other error occurs, this function will return SQLITE_BUSY to the caller.
+  */
+  if( eMode!=SQLITE_CHECKPOINT_PASSIVE ){
+    rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_WRITE_LOCK, 1);
+    if( rc==SQLITE_OK ){
+      pWal->writeLock = 1;
+    }else if( rc==SQLITE_BUSY ){
+      eMode2 = SQLITE_CHECKPOINT_PASSIVE;
+      rc = SQLITE_OK;
+    }
+  }
+
+  /* Read the wal-index header. */
+  if( rc==SQLITE_OK ){
+    rc = walIndexReadHdr(pWal, &isChanged);
+  }
+
   /* Copy data from the log to the database file. */
-  rc = walIndexReadHdr(pWal, &isChanged);
   if( rc==SQLITE_OK ){
-    rc = walCheckpoint(pWal, sync_flags, nBuf, zBuf);
+    if( pWal->hdr.mxFrame && walPagesize(pWal)!=nBuf ){
+      rc = SQLITE_CORRUPT_BKPT;
+    }else{
+      rc = walCheckpoint(pWal, eMode2, xBusy, pBusyArg, sync_flags, zBuf);
+    }
+
+    /* If no error occurred, set the output variables. */
+    if( rc==SQLITE_OK || rc==SQLITE_BUSY ){
+      if( pnLog ) *pnLog = (int)pWal->hdr.mxFrame;
+      if( pnCkpt ) *pnCkpt = (int)(walCkptInfo(pWal)->nBackfill);
+    }
   }
+
   if( isChanged ){
     /* If a new wal-index header was loaded before the checkpoint was 
     ** performed, then the pager-cache associated with pWal is now
@@ -44389,10 +45952,11 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
   }
 
   /* Release the locks. */
+  sqlite3WalEndWriteTransaction(pWal);
   walUnlockExclusive(pWal, WAL_CKPT_LOCK, 1);
   pWal->ckptLock = 0;
   WALTRACE(("WAL%p: checkpoint %s\n", pWal, rc ? "failed" : "ok"));
-  return rc;
+  return (rc==SQLITE_OK && eMode!=eMode2 ? SQLITE_BUSY : rc);
 }
 
 /* Return the value to pass to a sqlite3_wal_hook callback, the
@@ -44721,7 +46285,7 @@ SQLITE_PRIVATE int sqlite3WalHeapMemory(Wal *pWal){
 /* The following value is the maximum cell size assuming a maximum page
 ** size give above.
 */
-#define MX_CELL_SIZE(pBt)  (pBt->pageSize-8)
+#define MX_CELL_SIZE(pBt)  ((int)(pBt->pageSize-8))
 
 /* The maximum number of cells on a single page of the database.  This
 ** assumes a minimum cell size of 6 bytes  (4 bytes for the cell itself
@@ -44839,7 +46403,7 @@ struct BtLock {
 ** All fields in this structure are accessed under sqlite3.mutex.
 ** The pBt pointer itself may not be changed while there exists cursors 
 ** in the referenced BtShared that point back to this Btree since those
-** cursors have to do go through this Btree to find their BtShared and
+** cursors have to go through this Btree to find their BtShared and
 ** they often do so without holding sqlite3.mutex.
 */
 struct Btree {
@@ -44929,7 +46493,7 @@ struct BtShared {
   u32 nPage;            /* Number of pages in the database */
   void *pSchema;        /* Pointer to space allocated by sqlite3BtreeSchema() */
   void (*xFreeSchema)(void*);  /* Destructor for BtShared.pSchema */
-  sqlite3_mutex *mutex; /* Non-recursive mutex required to access this struct */
+  sqlite3_mutex *mutex; /* Non-recursive mutex required to access this object */
   Bitvec *pHasContent;  /* Set of pages moved to free-list this transaction */
 #ifndef SQLITE_OMIT_SHARED_CACHE
   int nRef;             /* Number of references to this structure */
@@ -45170,12 +46734,13 @@ static void lockBtreeMutex(Btree *p){
 ** clear the p->locked boolean.
 */
 static void unlockBtreeMutex(Btree *p){
+  BtShared *pBt = p->pBt;
   assert( p->locked==1 );
-  assert( sqlite3_mutex_held(p->pBt->mutex) );
+  assert( sqlite3_mutex_held(pBt->mutex) );
   assert( sqlite3_mutex_held(p->db->mutex) );
-  assert( p->db==p->pBt->db );
+  assert( p->db==pBt->db );
 
-  sqlite3_mutex_leave(p->pBt->mutex);
+  sqlite3_mutex_leave(pBt->mutex);
   p->locked = 0;
 }
 
@@ -45316,30 +46881,11 @@ SQLITE_PRIVATE void sqlite3BtreeLeaveCursor(BtCursor *pCur){
 */
 SQLITE_PRIVATE void sqlite3BtreeEnterAll(sqlite3 *db){
   int i;
-  Btree *p, *pLater;
+  Btree *p;
   assert( sqlite3_mutex_held(db->mutex) );
   for(i=0; i<db->nDb; i++){
     p = db->aDb[i].pBt;
-    assert( !p || (p->locked==0 && p->sharable) || p->pBt->db==p->db );
-    if( p && p->sharable ){
-      p->wantToLock++;
-      if( !p->locked ){
-        assert( p->wantToLock==1 );
-        while( p->pPrev ) p = p->pPrev;
-        /* Reason for ALWAYS:  There must be at least on unlocked Btree in
-        ** the chain.  Otherwise the !p->locked test above would have failed */
-        while( p->locked && ALWAYS(p->pNext) ) p = p->pNext;
-        for(pLater = p->pNext; pLater; pLater=pLater->pNext){
-          if( pLater->locked ){
-            unlockBtreeMutex(pLater);
-          }
-        }
-        while( p ){
-          lockBtreeMutex(p);
-          p = p->pNext;
-        }
-      }
-    }
+    if( p ) sqlite3BtreeEnter(p);
   }
 }
 SQLITE_PRIVATE void sqlite3BtreeLeaveAll(sqlite3 *db){
@@ -45348,16 +46894,18 @@ SQLITE_PRIVATE void sqlite3BtreeLeaveAll(sqlite3 *db){
   assert( sqlite3_mutex_held(db->mutex) );
   for(i=0; i<db->nDb; i++){
     p = db->aDb[i].pBt;
-    if( p && p->sharable ){
-      assert( p->wantToLock>0 );
-      p->wantToLock--;
-      if( p->wantToLock==0 ){
-        unlockBtreeMutex(p);
-      }
-    }
+    if( p ) sqlite3BtreeLeave(p);
   }
 }
 
+/*
+** Return true if a particular Btree requires a lock.  Return FALSE if
+** no lock is ever required since it is not sharable.
+*/
+SQLITE_PRIVATE int sqlite3BtreeSharable(Btree *p){
+  return p->sharable;
+}
+
 #ifndef NDEBUG
 /*
 ** Return true if the current thread holds the database connection
@@ -45382,97 +46930,42 @@ SQLITE_PRIVATE int sqlite3BtreeHoldsAllMutexes(sqlite3 *db){
 }
 #endif /* NDEBUG */
 
+#ifndef NDEBUG
 /*
-** Add a new Btree pointer to a BtreeMutexArray. 
-** if the pointer can possibly be shared with
-** another database connection.
+** Return true if the correct mutexes are held for accessing the
+** db->aDb[iDb].pSchema structure.  The mutexes required for schema
+** access are:
 **
-** The pointers are kept in sorted order by pBtree->pBt.  That
-** way when we go to enter all the mutexes, we can enter them
-** in order without every having to backup and retry and without
-** worrying about deadlock.
+**   (1) The mutex on db
+**   (2) if iDb!=1, then the mutex on db->aDb[iDb].pBt.
 **
-** The number of shared btrees will always be small (usually 0 or 1)
-** so an insertion sort is an adequate algorithm here.
+** If pSchema is not NULL, then iDb is computed from pSchema and
+** db using sqlite3SchemaToIndex().
 */
-SQLITE_PRIVATE void sqlite3BtreeMutexArrayInsert(BtreeMutexArray *pArray, Btree *pBtree){
-  int i, j;
-  BtShared *pBt;
-  if( pBtree==0 || pBtree->sharable==0 ) return;
-#ifndef NDEBUG
-  {
-    for(i=0; i<pArray->nMutex; i++){
-      assert( pArray->aBtree[i]!=pBtree );
-    }
-  }
-#endif
-  assert( pArray->nMutex>=0 );
-  assert( pArray->nMutex<ArraySize(pArray->aBtree)-1 );
-  pBt = pBtree->pBt;
-  for(i=0; i<pArray->nMutex; i++){
-    assert( pArray->aBtree[i]!=pBtree );
-    if( pArray->aBtree[i]->pBt>pBt ){
-      for(j=pArray->nMutex; j>i; j--){
-        pArray->aBtree[j] = pArray->aBtree[j-1];
-      }
-      pArray->aBtree[i] = pBtree;
-      pArray->nMutex++;
-      return;
-    }
-  }
-  pArray->aBtree[pArray->nMutex++] = pBtree;
-}
-
-/*
-** Enter the mutex of every btree in the array.  This routine is
-** called at the beginning of sqlite3VdbeExec().  The mutexes are
-** exited at the end of the same function.
-*/
-SQLITE_PRIVATE void sqlite3BtreeMutexArrayEnter(BtreeMutexArray *pArray){
-  int i;
-  for(i=0; i<pArray->nMutex; i++){
-    Btree *p = pArray->aBtree[i];
-    /* Some basic sanity checking */
-    assert( i==0 || pArray->aBtree[i-1]->pBt<p->pBt );
-    assert( !p->locked || p->wantToLock>0 );
-
-    /* We should already hold a lock on the database connection */
-    assert( sqlite3_mutex_held(p->db->mutex) );
-
-    /* The Btree is sharable because only sharable Btrees are entered
-    ** into the array in the first place. */
-    assert( p->sharable );
-
-    p->wantToLock++;
-    if( !p->locked ){
-      lockBtreeMutex(p);
-    }
-  }
+SQLITE_PRIVATE int sqlite3SchemaMutexHeld(sqlite3 *db, int iDb, Schema *pSchema){
+  Btree *p;
+  assert( db!=0 );
+  if( pSchema ) iDb = sqlite3SchemaToIndex(db, pSchema);
+  assert( iDb>=0 && iDb<db->nDb );
+  if( !sqlite3_mutex_held(db->mutex) ) return 0;
+  if( iDb==1 ) return 1;
+  p = db->aDb[iDb].pBt;
+  assert( p!=0 );
+  return p->sharable==0 || p->locked==1;
 }
+#endif /* NDEBUG */
 
+#else /* SQLITE_THREADSAFE>0 above.  SQLITE_THREADSAFE==0 below */
 /*
-** Leave the mutex of every btree in the group.
+** The following are special cases for mutex enter routines for use
+** in single threaded applications that use shared cache.  Except for
+** these two routines, all mutex operations are no-ops in that case and
+** are null #defines in btree.h.
+**
+** If shared cache is disabled, then all btree mutex routines, including
+** the ones below, are no-ops and are null #defines in btree.h.
 */
-SQLITE_PRIVATE void sqlite3BtreeMutexArrayLeave(BtreeMutexArray *pArray){
-  int i;
-  for(i=0; i<pArray->nMutex; i++){
-    Btree *p = pArray->aBtree[i];
-    /* Some basic sanity checking */
-    assert( i==0 || pArray->aBtree[i-1]->pBt<p->pBt );
-    assert( p->locked );
-    assert( p->wantToLock>0 );
-
-    /* We should already hold a lock on the database connection */
-    assert( sqlite3_mutex_held(p->db->mutex) );
 
-    p->wantToLock--;
-    if( p->wantToLock==0 ){
-      unlockBtreeMutex(p);
-    }
-  }
-}
-
-#else
 SQLITE_PRIVATE void sqlite3BtreeEnter(Btree *p){
   p->pBt->db = p->db;
 }
@@ -46719,7 +48212,7 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
   */
   top -= nByte;
   put2byte(&data[hdr+5], top);
-  assert( top+nByte <= pPage->pBt->usableSize );
+  assert( top+nByte <= (int)pPage->pBt->usableSize );
   *pIdx = top;
   return SQLITE_OK;
 }
@@ -46740,7 +48233,7 @@ static int freeSpace(MemPage *pPage, int start, int size){
   assert( pPage->pBt!=0 );
   assert( sqlite3PagerIswriteable(pPage->pDbPage) );
   assert( start>=pPage->hdrOffset+6+pPage->childPtrSize );
-  assert( (start + size)<=pPage->pBt->usableSize );
+  assert( (start + size) <= (int)pPage->pBt->usableSize );
   assert( sqlite3_mutex_held(pPage->pBt->mutex) );
   assert( size>=0 );   /* Minimum cell size is 4 */
 
@@ -46783,7 +48276,7 @@ static int freeSpace(MemPage *pPage, int start, int size){
   while( (pbegin = get2byte(&data[addr]))>0 ){
     int pnext, psize, x;
     assert( pbegin>addr );
-    assert( pbegin<=pPage->pBt->usableSize-4 );
+    assert( pbegin <= (int)pPage->pBt->usableSize-4 );
     pnext = get2byte(&data[pbegin]);
     psize = get2byte(&data[pbegin+2]);
     if( pbegin + psize + 3 >= pnext && pnext>0 ){
@@ -47618,7 +49111,6 @@ SQLITE_PRIVATE int sqlite3BtreeSyncDisabled(Btree *p){
   return rc;
 }
 
-#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM)
 /*
 ** Change the default pages size and the number of reserved bytes per page.
 ** Or, if the page size has already been fixed, return SQLITE_READONLY 
@@ -47673,6 +49165,7 @@ SQLITE_PRIVATE int sqlite3BtreeGetPageSize(Btree *p){
   return p->pBt->pageSize;
 }
 
+#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM)
 /*
 ** Return the number of bytes of space at the end of every page that
 ** are intentually left unused.  This is the "reserved" space that is
@@ -47872,7 +49365,7 @@ static int lockBtree(BtShared *pBt){
                                    pageSize-usableSize);
       return rc;
     }
-    if( (pBt->db->flags & SQLITE_RecoveryMode)==0 && nPageHeader>nPageFile ){
+    if( (pBt->db->flags & SQLITE_RecoveryMode)==0 && nPage>nPageFile ){
       rc = SQLITE_CORRUPT_BKPT;
       goto page1_init_failed;
     }
@@ -48651,10 +50144,21 @@ static void btreeEndTransaction(Btree *p){
 ** the rollback journal (which causes the transaction to commit) and
 ** drop locks.
 **
+** Normally, if an error occurs while the pager layer is attempting to 
+** finalize the underlying journal file, this function returns an error and
+** the upper layer will attempt a rollback. However, if the second argument
+** is non-zero then this b-tree transaction is part of a multi-file 
+** transaction. In this case, the transaction has already been committed 
+** (by deleting a master journal file) and the caller will ignore this 
+** functions return code. So, even if an error occurs in the pager layer,
+** reset the b-tree objects internal state to indicate that the write
+** transaction has been closed. This is quite safe, as the pager will have
+** transitioned to the error state.
+**
 ** This will release the write lock on the database file.  If there
 ** are no active cursors, it also releases the read lock.
 */
-SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree *p){
+SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree *p, int bCleanup){
 
   if( p->inTrans==TRANS_NONE ) return SQLITE_OK;
   sqlite3BtreeEnter(p);
@@ -48669,7 +50173,7 @@ SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree *p){
     assert( pBt->inTransaction==TRANS_WRITE );
     assert( pBt->nTransaction>0 );
     rc = sqlite3PagerCommitPhaseTwo(pBt->pPager);
-    if( rc!=SQLITE_OK ){
+    if( rc!=SQLITE_OK && bCleanup==0 ){
       sqlite3BtreeLeave(p);
       return rc;
     }
@@ -48689,7 +50193,7 @@ SQLITE_PRIVATE int sqlite3BtreeCommit(Btree *p){
   sqlite3BtreeEnter(p);
   rc = sqlite3BtreeCommitPhaseOne(p, 0);
   if( rc==SQLITE_OK ){
-    rc = sqlite3BtreeCommitPhaseTwo(p);
+    rc = sqlite3BtreeCommitPhaseTwo(p, 0);
   }
   sqlite3BtreeLeave(p);
   return rc;
@@ -50299,7 +51803,7 @@ static int allocateBtreePage(
         goto end_allocate_page;
       }
 
-      k = get4byte(&pTrunk->aData[4]);
+      k = get4byte(&pTrunk->aData[4]); /* # of leaves on this trunk page */
       if( k==0 && !searchList ){
         /* The trunk has no leaves and the list is not being searched. 
         ** So extract the trunk page itself and use it as the newly 
@@ -50384,19 +51888,13 @@ static int allocateBtreePage(
         u32 closest;
         Pgno iPage;
         unsigned char *aData = pTrunk->aData;
-        rc = sqlite3PagerWrite(pTrunk->pDbPage);
-        if( rc ){
-          goto end_allocate_page;
-        }
         if( nearby>0 ){
           u32 i;
           int dist;
           closest = 0;
-          dist = get4byte(&aData[8]) - nearby;
-          if( dist<0 ) dist = -dist;
+          dist = sqlite3AbsInt32(get4byte(&aData[8]) - nearby);
           for(i=1; i<k; i++){
-            int d2 = get4byte(&aData[8+i*4]) - nearby;
-            if( d2<0 ) d2 = -d2;
+            int d2 = sqlite3AbsInt32(get4byte(&aData[8+i*4]) - nearby);
             if( d2<dist ){
               closest = i;
               dist = d2;
@@ -50419,11 +51917,12 @@ static int allocateBtreePage(
           TRACE(("ALLOCATE: %d was leaf %d of %d on trunk %d"
                  ": %d more free pages\n",
                  *pPgno, closest+1, k, pTrunk->pgno, n-1));
+          rc = sqlite3PagerWrite(pTrunk->pDbPage);
+          if( rc ) goto end_allocate_page;
           if( closest<k-1 ){
             memcpy(&aData[8+closest*4], &aData[4+k*4], 4);
           }
           put4byte(&aData[4], k-1);
-          assert( sqlite3PagerIswriteable(pTrunk->pDbPage) );
           noContent = !btreeGetHasContent(pBt, *pPgno);
           rc = btreeGetPage(pBt, *pPgno, ppPage, noContent);
           if( rc==SQLITE_OK ){
@@ -50492,6 +51991,7 @@ end_allocate_page:
   }else{
     *ppPage = 0;
   }
+  assert( rc!=SQLITE_OK || sqlite3PagerIswriteable((*ppPage)->pDbPage) );
   return rc;
 }
 
@@ -50981,7 +52481,7 @@ static void insertCell(
     /* The allocateSpace() routine guarantees the following two properties
     ** if it returns success */
     assert( idx >= end+2 );
-    assert( idx+sz <= pPage->pBt->usableSize );
+    assert( idx+sz <= (int)pPage->pBt->usableSize );
     pPage->nCell++;
     pPage->nFree -= (u16)(2 + sz);
     memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip);
@@ -51024,7 +52524,8 @@ static void assemblePage(
 
   assert( pPage->nOverflow==0 );
   assert( sqlite3_mutex_held(pPage->pBt->mutex) );
-  assert( nCell>=0 && nCell<=MX_CELL(pPage->pBt) && MX_CELL(pPage->pBt)<=10921);
+  assert( nCell>=0 && nCell<=(int)MX_CELL(pPage->pBt)
+            && (int)MX_CELL(pPage->pBt)<=10921);
   assert( sqlite3PagerIswriteable(pPage->pDbPage) );
 
   /* Check that the page has just been zeroed by zeroPage() */
@@ -51238,7 +52739,7 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
   
     assert( pFrom->isInit );
     assert( pFrom->nFree>=iToHdr );
-    assert( get2byte(&aFrom[iFromHdr+5])<=pBt->usableSize );
+    assert( get2byte(&aFrom[iFromHdr+5]) <= (int)pBt->usableSize );
   
     /* Copy the b-tree node content from page pFrom to page pTo. */
     iData = get2byte(&aFrom[iFromHdr+5]);
@@ -51505,7 +53006,7 @@ static int balance_nonroot(
       pTemp = &aSpace1[iSpace1];
       iSpace1 += sz;
       assert( sz<=pBt->maxLocal+23 );
-      assert( iSpace1<=pBt->pageSize );
+      assert( iSpace1 <= (int)pBt->pageSize );
       memcpy(pTemp, apDiv[i], sz);
       apCell[nCell] = pTemp+leafCorrection;
       assert( leafCorrection==0 || leafCorrection==4 );
@@ -51670,9 +53171,7 @@ static int balance_nonroot(
       }
     }
     if( minI>i ){
-      int t;
       MemPage *pT;
-      t = apNew[i]->pgno;
       pT = apNew[i];
       apNew[i] = apNew[minI];
       apNew[minI] = pT;
@@ -51751,7 +53250,7 @@ static int balance_nonroot(
       }
       iOvflSpace += sz;
       assert( sz<=pBt->maxLocal+23 );
-      assert( iOvflSpace<=pBt->pageSize );
+      assert( iOvflSpace <= (int)pBt->pageSize );
       insertCell(pParent, nxDiv, pCell, sz, pTemp, pNew->pgno, &rc);
       if( rc!=SQLITE_OK ) goto balance_cleanup;
       assert( sqlite3PagerIswriteable(pParent->pDbPage) );
@@ -52196,7 +53695,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
   rc = fillInCell(pPage, newCell, pKey, nKey, pData, nData, nZero, &szNew);
   if( rc ) goto end_insert;
   assert( szNew==cellSizePtr(pPage, newCell) );
-  assert( szNew<=MX_CELL_SIZE(pBt) );
+  assert( szNew <= MX_CELL_SIZE(pBt) );
   idx = pCur->aiIdx[pCur->iPage];
   if( loc==0 ){
     u16 szOld;
@@ -52336,7 +53835,7 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
 
     pCell = findCell(pLeaf, pLeaf->nCell-1);
     nCell = cellSizePtr(pLeaf, pCell);
-    assert( MX_CELL_SIZE(pBt)>=nCell );
+    assert( MX_CELL_SIZE(pBt) >= nCell );
 
     allocateTempSpace(pBt);
     pTmp = pBt->pTmpSpace;
@@ -53423,8 +54922,10 @@ SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree *p){
 **
 ** Return SQLITE_LOCKED if this or any other connection has an open 
 ** transaction on the shared-cache the argument Btree is connected to.
+**
+** Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
 */
-SQLITE_PRIVATE int sqlite3BtreeCheckpoint(Btree *p){
+SQLITE_PRIVATE int sqlite3BtreeCheckpoint(Btree *p, int eMode, int *pnLog, int *pnCkpt){
   int rc = SQLITE_OK;
   if( p ){
     BtShared *pBt = p->pBt;
@@ -53432,7 +54933,7 @@ SQLITE_PRIVATE int sqlite3BtreeCheckpoint(Btree *p){
     if( pBt->inTransaction!=TRANS_NONE ){
       rc = SQLITE_LOCKED;
     }else{
-      rc = sqlite3PagerCheckpoint(pBt->pPager);
+      rc = sqlite3PagerCheckpoint(pBt->pPager, eMode, pnLog, pnCkpt);
     }
     sqlite3BtreeLeave(p);
   }
@@ -53472,7 +54973,7 @@ SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree *p){
 **
 ** Just before the shared-btree is closed, the function passed as the 
 ** xFree argument when the memory allocation was made is invoked on the 
-** blob of allocated memory. This function should not call sqlite3_free()
+** blob of allocated memory. The xFree function should not call sqlite3_free()
 ** on the memory, the btree layer does that.
 */
 SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *p, int nBytes, void(*xFree)(void *)){
@@ -53846,6 +55347,10 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
   int nDestPgsz = sqlite3BtreeGetPageSize(p->pDest);
   const int nCopy = MIN(nSrcPgsz, nDestPgsz);
   const i64 iEnd = (i64)iSrcPg*(i64)nSrcPgsz;
+#ifdef SQLITE_HAS_CODEC
+  int nSrcReserve = sqlite3BtreeGetReserve(p->pSrc);
+  int nDestReserve = sqlite3BtreeGetReserve(p->pDest);
+#endif
 
   int rc = SQLITE_OK;
   i64 iOff;
@@ -53864,11 +55369,22 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
 
 #ifdef SQLITE_HAS_CODEC
   /* Backup is not possible if the page size of the destination is changing
-  ** a a codec is in use.
+  ** and a codec is in use.
   */
   if( nSrcPgsz!=nDestPgsz && sqlite3PagerGetCodec(pDestPager)!=0 ){
     rc = SQLITE_READONLY;
   }
+
+  /* Backup is not possible if the number of bytes of reserve space differ
+  ** between source and destination.  If there is a difference, try to
+  ** fix the destination to agree with the source.  If that is not possible,
+  ** then the backup cannot proceed.
+  */
+  if( nSrcReserve!=nDestReserve ){
+    u32 newPgsz = nSrcPgsz;
+    rc = sqlite3PagerSetPagesize(pDestPager, &newPgsz, nSrcReserve);
+    if( rc==SQLITE_OK && newPgsz!=nSrcPgsz ) rc = SQLITE_READONLY;
+  }
 #endif
 
   /* This loop runs once for each destination page spanned by the source 
@@ -54028,7 +55544,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
       int nDestTruncate;
   
       if( p->pDestDb ){
-        sqlite3ResetInternalSchema(p->pDestDb, 0);
+        sqlite3ResetInternalSchema(p->pDestDb, -1);
       }
 
       /* Set nDestTruncate to the final number of pages in the destination
@@ -54115,7 +55631,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
   
       /* Finish committing the transaction to the destination database. */
       if( SQLITE_OK==rc
-       && SQLITE_OK==(rc = sqlite3BtreeCommitPhaseTwo(p->pDest))
+       && SQLITE_OK==(rc = sqlite3BtreeCommitPhaseTwo(p->pDest, 0))
       ){
         rc = SQLITE_DONE;
       }
@@ -54129,7 +55645,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
     if( bCloseTrans ){
       TESTONLY( int rc2 );
       TESTONLY( rc2  = ) sqlite3BtreeCommitPhaseOne(p->pSrc, 0);
-      TESTONLY( rc2 |= ) sqlite3BtreeCommitPhaseTwo(p->pSrc);
+      TESTONLY( rc2 |= ) sqlite3BtreeCommitPhaseTwo(p->pSrc, 0);
       assert( rc2==SQLITE_OK );
     }
   
@@ -54234,7 +55750,11 @@ SQLITE_PRIVATE void sqlite3BackupUpdate(sqlite3_backup *pBackup, Pgno iPage, con
       ** has been modified by a transaction on the source pager. Copy
       ** the new data into the backup.
       */
-      int rc = backupOnePage(p, iPage, aData);
+      int rc;
+      assert( p->pDestDb );
+      sqlite3_mutex_enter(p->pDestDb->mutex);
+      rc = backupOnePage(p, iPage, aData);
+      sqlite3_mutex_leave(p->pDestDb->mutex);
       assert( rc!=SQLITE_BUSY && rc!=SQLITE_LOCKED );
       if( rc!=SQLITE_OK ){
         p->rc = rc;
@@ -54677,7 +56197,7 @@ SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem *pMem){
   }else if( flags & MEM_Real ){
     return doubleToInt64(pMem->r);
   }else if( flags & (MEM_Str|MEM_Blob) ){
-    i64 value;
+    i64 value = 0;
     assert( pMem->z || pMem->n==0 );
     testcase( pMem->z==0 );
     sqlite3Atoi64(pMem->z, &value, pMem->n, pMem->enc);
@@ -55387,11 +56907,19 @@ SQLITE_PRIVATE int sqlite3ValueFromExpr(
     /* This branch happens for multiple negative signs.  Ex: -(-5) */
     if( SQLITE_OK==sqlite3ValueFromExpr(db,pExpr->pLeft,enc,affinity,&pVal) ){
       sqlite3VdbeMemNumerify(pVal);
-      pVal->u.i = -1 * pVal->u.i;
-      /* (double)-1 In case of SQLITE_OMIT_FLOATING_POINT... */
-      pVal->r = (double)-1 * pVal->r;
+      if( pVal->u.i==SMALLEST_INT64 ){
+        pVal->flags &= MEM_Int;
+        pVal->flags |= MEM_Real;
+        pVal->r = (double)LARGEST_INT64;
+      }else{
+        pVal->u.i = -pVal->u.i;
+      }
+      pVal->r = -pVal->r;
       sqlite3ValueApplyAffinity(pVal, affinity, enc);
     }
+  }else if( op==TK_NULL ){
+    pVal = sqlite3ValueNew(db);
+    if( pVal==0 ) goto no_mem;
   }
 #ifndef SQLITE_OMIT_BLOB_LITERAL
   else if( op==TK_BLOB ){
@@ -55619,6 +57147,12 @@ SQLITE_PRIVATE int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){
   pOp->p4.p = 0;
   pOp->p4type = P4_NOTUSED;
   p->expired = 0;
+  if( op==OP_ParseSchema ){
+    /* Any program that uses the OP_ParseSchema opcode needs to lock
+    ** all btrees. */
+    int j;
+    for(j=0; j<p->db->nDb; j++) sqlite3VdbeUsesBtree(p, j);
+  }
 #ifdef SQLITE_DEBUG
   pOp->zComment = 0;
   if( sqlite3VdbeAddopTrace ) sqlite3VdbePrintOp(0, i, &p->aOp[i]);
@@ -55919,7 +57453,7 @@ SQLITE_PRIVATE VdbeOp *sqlite3VdbeTakeOpArray(Vdbe *p, int *pnOp, int *pnMaxArg)
   assert( aOp && !p->db->mallocFailed );
 
   /* Check that sqlite3VdbeUsesBtree() was not called on this VM */
-  assert( p->aMutex.nMutex==0 );
+  assert( p->btreeMask==0 );
 
   resolveP2Values(p, pnMaxArg);
   *pnOp = p->nOp;
@@ -56021,6 +57555,7 @@ SQLITE_PRIVATE void sqlite3VdbeChangeP5(Vdbe *p, u8 val){
 ** the address of the next instruction to be coded.
 */
 SQLITE_PRIVATE void sqlite3VdbeJumpHere(Vdbe *p, int addr){
+  assert( addr>=0 );
   sqlite3VdbeChangeP2(p, addr, p->nOp);
 }
 
@@ -56406,22 +57941,80 @@ static char *displayP4(Op *pOp, char *zTemp, int nTemp){
 /*
 ** Declare to the Vdbe that the BTree object at db->aDb[i] is used.
 **
-** The prepared statement has to know in advance which Btree objects
-** will be used so that it can acquire mutexes on them all in sorted
-** order (via sqlite3VdbeMutexArrayEnter().  Mutexes are acquired
-** in order (and released in reverse order) to avoid deadlocks.
+** The prepared statements need to know in advance the complete set of
+** attached databases that they will be using.  A mask of these databases
+** is maintained in p->btreeMask and is used for locking and other purposes.
 */
 SQLITE_PRIVATE void sqlite3VdbeUsesBtree(Vdbe *p, int i){
-  int mask;
-  assert( i>=0 && i<p->db->nDb && i<sizeof(u32)*8 );
+  assert( i>=0 && i<p->db->nDb && i<(int)sizeof(yDbMask)*8 );
   assert( i<(int)sizeof(p->btreeMask)*8 );
-  mask = ((u32)1)<<i;
-  if( (p->btreeMask & mask)==0 ){
-    p->btreeMask |= mask;
-    sqlite3BtreeMutexArrayInsert(&p->aMutex, p->db->aDb[i].pBt);
+  p->btreeMask |= ((yDbMask)1)<<i;
+  if( i!=1 && sqlite3BtreeSharable(p->db->aDb[i].pBt) ){
+    p->lockMask |= ((yDbMask)1)<<i;
+  }
+}
+
+#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE>0
+/*
+** If SQLite is compiled to support shared-cache mode and to be threadsafe,
+** this routine obtains the mutex associated with each BtShared structure
+** that may be accessed by the VM passed as an argument. In doing so it also
+** sets the BtShared.db member of each of the BtShared structures, ensuring
+** that the correct busy-handler callback is invoked if required.
+**
+** If SQLite is not threadsafe but does support shared-cache mode, then
+** sqlite3BtreeEnter() is invoked to set the BtShared.db variables
+** of all of BtShared structures accessible via the database handle 
+** associated with the VM.
+**
+** If SQLite is not threadsafe and does not support shared-cache mode, this
+** function is a no-op.
+**
+** The p->btreeMask field is a bitmask of all btrees that the prepared 
+** statement p will ever use.  Let N be the number of bits in p->btreeMask
+** corresponding to btrees that use shared cache.  Then the runtime of
+** this routine is N*N.  But as N is rarely more than 1, this should not
+** be a problem.
+*/
+SQLITE_PRIVATE void sqlite3VdbeEnter(Vdbe *p){
+  int i;
+  yDbMask mask;
+  sqlite3 *db;
+  Db *aDb;
+  int nDb;
+  if( p->lockMask==0 ) return;  /* The common case */
+  db = p->db;
+  aDb = db->aDb;
+  nDb = db->nDb;
+  for(i=0, mask=1; i<nDb; i++, mask += mask){
+    if( i!=1 && (mask & p->lockMask)!=0 && ALWAYS(aDb[i].pBt!=0) ){
+      sqlite3BtreeEnter(aDb[i].pBt);
+    }
   }
 }
+#endif
 
+#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE>0
+/*
+** Unlock all of the btrees previously locked by a call to sqlite3VdbeEnter().
+*/
+SQLITE_PRIVATE void sqlite3VdbeLeave(Vdbe *p){
+  int i;
+  yDbMask mask;
+  sqlite3 *db;
+  Db *aDb;
+  int nDb;
+  if( p->lockMask==0 ) return;  /* The common case */
+  db = p->db;
+  aDb = db->aDb;
+  nDb = db->nDb;
+  for(i=0, mask=1; i<nDb; i++, mask += mask){
+    if( i!=1 && (mask & p->lockMask)!=0 && ALWAYS(aDb[i].pBt!=0) ){
+      sqlite3BtreeLeave(aDb[i].pBt);
+    }
+  }
+}
+#endif
 
 #if defined(VDBE_PROFILE) || defined(SQLITE_DEBUG)
 /*
@@ -56979,7 +58572,7 @@ SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
 */
 static void closeAllCursors(Vdbe *p){
   if( p->pFrame ){
-    VdbeFrame *pFrame = p->pFrame;
+    VdbeFrame *pFrame;
     for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
     sqlite3VdbeFrameRestore(pFrame);
   }
@@ -57165,7 +58758,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
       Btree *pBt = db->aDb[i].pBt;
       if( pBt ){
-        rc = sqlite3BtreeCommitPhaseTwo(pBt);
+        rc = sqlite3BtreeCommitPhaseTwo(pBt, 0);
       }
     }
     if( rc==SQLITE_OK ){
@@ -57297,7 +58890,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     for(i=0; i<db->nDb; i++){ 
       Btree *pBt = db->aDb[i].pBt;
       if( pBt ){
-        sqlite3BtreeCommitPhaseTwo(pBt);
+        sqlite3BtreeCommitPhaseTwo(pBt, 1);
       }
     }
     sqlite3EndBenignMalloc();
@@ -57420,33 +59013,6 @@ SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
   return rc;
 }
 
-/*
-** If SQLite is compiled to support shared-cache mode and to be threadsafe,
-** this routine obtains the mutex associated with each BtShared structure
-** that may be accessed by the VM passed as an argument. In doing so it
-** sets the BtShared.db member of each of the BtShared structures, ensuring
-** that the correct busy-handler callback is invoked if required.
-**
-** If SQLite is not threadsafe but does support shared-cache mode, then
-** sqlite3BtreeEnterAll() is invoked to set the BtShared.db variables
-** of all of BtShared structures accessible via the database handle 
-** associated with the VM. Of course only a subset of these structures
-** will be accessed by the VM, and we could use Vdbe.btreeMask to figure
-** that subset out, but there is no advantage to doing so.
-**
-** If SQLite is not threadsafe and does not support shared-cache mode, this
-** function is a no-op.
-*/
-#ifndef SQLITE_OMIT_SHARED_CACHE
-SQLITE_PRIVATE void sqlite3VdbeMutexArrayEnter(Vdbe *p){
-#if SQLITE_THREADSAFE
-  sqlite3BtreeMutexArrayEnter(&p->aMutex);
-#else
-  sqlite3BtreeEnterAll(p->db);
-#endif
-}
-#endif
-
 /*
 ** This function is called when a transaction opened by the database 
 ** handle associated with the VM passed as an argument is about to be 
@@ -57519,7 +59085,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
     int isSpecialError;            /* Set to true if a 'special' error */
 
     /* Lock all btrees used by the statement */
-    sqlite3VdbeMutexArrayEnter(p);
+    sqlite3VdbeEnter(p);
 
     /* Check for one of the special errors */
     mrc = p->rc & 0xff;
@@ -57570,17 +59136,22 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
      && db->writeVdbeCnt==(p->readOnly==0) 
     ){
       if( p->rc==SQLITE_OK || (p->errorAction==OE_Fail && !isSpecialError) ){
-        if( sqlite3VdbeCheckFk(p, 1) ){
-          sqlite3BtreeMutexArrayLeave(&p->aMutex);
-          return SQLITE_ERROR;
+        rc = sqlite3VdbeCheckFk(p, 1);
+        if( rc!=SQLITE_OK ){
+          if( NEVER(p->readOnly) ){
+            sqlite3VdbeLeave(p);
+            return SQLITE_ERROR;
+          }
+          rc = SQLITE_CONSTRAINT;
+        }else{ 
+          /* The auto-commit flag is true, the vdbe program was successful 
+          ** or hit an 'OR FAIL' constraint and there are no deferred foreign
+          ** key constraints to hold up the transaction. This means a commit 
+          ** is required. */
+          rc = vdbeCommit(db, p);
         }
-        /* The auto-commit flag is true, the vdbe program was successful 
-        ** or hit an 'OR FAIL' constraint and there are no deferred foreign
-        ** key constraints to hold up the transaction. This means a commit 
-        ** is required.  */
-        rc = vdbeCommit(db, p);
-        if( rc==SQLITE_BUSY ){
-          sqlite3BtreeMutexArrayLeave(&p->aMutex);
+        if( rc==SQLITE_BUSY && p->readOnly ){
+          sqlite3VdbeLeave(p);
           return SQLITE_BUSY;
         }else if( rc!=SQLITE_OK ){
           p->rc = rc;
@@ -57647,12 +59218,12 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
   
     /* Rollback or commit any schema changes that occurred. */
     if( p->rc!=SQLITE_OK && db->flags&SQLITE_InternChanges ){
-      sqlite3ResetInternalSchema(db, 0);
+      sqlite3ResetInternalSchema(db, -1);
       db->flags = (db->flags | SQLITE_InternChanges);
     }
 
     /* Release the locks */
-    sqlite3BtreeMutexArrayLeave(&p->aMutex);
+    sqlite3VdbeLeave(p);
   }
 
   /* We have successfully halted and closed the VM.  Record this fact. */
@@ -57678,7 +59249,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
   }
 
   assert( db->activeVdbeCnt>0 || db->autoCommit==0 || db->nStatement==0 );
-  return SQLITE_OK;
+  return (p->rc==SQLITE_BUSY ? SQLITE_BUSY : SQLITE_OK);
 }
 
 
@@ -57954,7 +59525,13 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format){
     if( file_format>=4 && (i&1)==i ){
       return 8+(u32)i;
     }
-    u = i<0 ? -i : i;
+    if( i<0 ){
+      if( i<(-MAX_6BYTE) ) return 6;
+      /* Previous test prevents:  u = -(-9223372036854775808) */
+      u = -i;
+    }else{
+      u = i;
+    }
     if( u<=127 ) return 1;
     if( u<=32767 ) return 2;
     if( u<=8388607 ) return 3;
@@ -59304,13 +60881,11 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt){
 */
 static Mem *columnMem(sqlite3_stmt *pStmt, int i){
   Vdbe *pVm;
-  int vals;
   Mem *pOut;
 
   pVm = (Vdbe *)pStmt;
   if( pVm && pVm->pResultSet!=0 && i<pVm->nResColumn && i>=0 ){
     sqlite3_mutex_enter(pVm->db->mutex);
-    vals = sqlite3_data_count(pStmt);
     pOut = &pVm->pResultSet[i];
   }else{
     /* If the value passed as the second argument is out of range, return
@@ -59328,7 +60903,11 @@ static Mem *columnMem(sqlite3_stmt *pStmt, int i){
 #if defined(SQLITE_DEBUG) && defined(__GNUC__)
       __attribute__((aligned(8))) 
 #endif
-      = {0, "", (double)0, {0}, 0, MEM_Null, SQLITE_NULL, 0, 0, 0 };
+      = {0, "", (double)0, {0}, 0, MEM_Null, SQLITE_NULL, 0,
+#ifdef SQLITE_DEBUG
+         0, 0,  /* pScopyFrom, pFiller */
+#endif
+         0, 0 };
 
     if( pVm && ALWAYS(pVm->db) ){
       sqlite3_mutex_enter(pVm->db->mutex);
@@ -60032,7 +61611,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
       const char *zStart = zRawSql;
       while( *(zRawSql++)!='\n' && *zRawSql );
       sqlite3StrAccumAppend(&out, "-- ", 3);
-      sqlite3StrAccumAppend(&out, zStart, zRawSql-zStart);
+      sqlite3StrAccumAppend(&out, zStart, (int)(zRawSql-zStart));
     }
   }else{
     while( zRawSql[0] ){
@@ -60742,7 +62321,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
   Op *pOp;                   /* Current operation */
   int rc = SQLITE_OK;        /* Value to return */
   sqlite3 *db = p->db;       /* The database */
-  u8 resetSchemaOnFault = 0; /* Reset schema after an error if true */
+  u8 resetSchemaOnFault = 0; /* Reset schema after an error if positive */
   u8 encoding = ENC(db);     /* The database encoding */
 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
   int checkProgress;         /* True if progress callbacks are enabled */
@@ -60802,8 +62381,10 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
       int n;
     } ag;
     struct OP_ShiftRight_stack_vars {
-      i64 a;
-      i64 b;
+      i64 iA;
+      u64 uA;
+      i64 iB;
+      u8 op;
     } ah;
     struct OP_Ge_stack_vars {
       int res;            /* Result of the comparison of pIn1 against pIn3 */
@@ -60905,6 +62486,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
     } au;
     struct OP_VerifyCookie_stack_vars {
       int iMeta;
+      int iGen;
       Btree *pBt;
     } av;
     struct OP_OpenWrite_stack_vars {
@@ -61096,25 +62678,30 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
     struct OP_AggFinal_stack_vars {
       Mem *pMem;
     } cc;
+    struct OP_Checkpoint_stack_vars {
+      int i;                          /* Loop counter */
+      int aRes[3];                    /* Results */
+      Mem *pMem;                      /* Write results here */
+    } cd;
     struct OP_JournalMode_stack_vars {
       Btree *pBt;                     /* Btree to change journal mode of */
       Pager *pPager;                  /* Pager associated with pBt */
       int eNew;                       /* New journal mode */
       int eOld;                       /* The old journal mode */
       const char *zFilename;          /* Name of database file for pPager */
-    } cd;
+    } ce;
     struct OP_IncrVacuum_stack_vars {
       Btree *pBt;
-    } ce;
+    } cf;
     struct OP_VBegin_stack_vars {
       VTable *pVTab;
-    } cf;
+    } cg;
     struct OP_VOpen_stack_vars {
       VdbeCursor *pCur;
       sqlite3_vtab_cursor *pVtabCursor;
       sqlite3_vtab *pVtab;
       sqlite3_module *pModule;
-    } cg;
+    } ch;
     struct OP_VFilter_stack_vars {
       int nArg;
       int iQuery;
@@ -61127,23 +62714,23 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
       int res;
       int i;
       Mem **apArg;
-    } ch;
+    } ci;
     struct OP_VColumn_stack_vars {
       sqlite3_vtab *pVtab;
       const sqlite3_module *pModule;
       Mem *pDest;
       sqlite3_context sContext;
-    } ci;
+    } cj;
     struct OP_VNext_stack_vars {
       sqlite3_vtab *pVtab;
       const sqlite3_module *pModule;
       int res;
       VdbeCursor *pCur;
-    } cj;
+    } ck;
     struct OP_VRename_stack_vars {
       sqlite3_vtab *pVtab;
       Mem *pName;
-    } ck;
+    } cl;
     struct OP_VUpdate_stack_vars {
       sqlite3_vtab *pVtab;
       sqlite3_module *pModule;
@@ -61152,16 +62739,16 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
       sqlite_int64 rowid;
       Mem **apArg;
       Mem *pX;
-    } cl;
+    } cm;
     struct OP_Trace_stack_vars {
       char *zTrace;
-    } cm;
+    } cn;
   } u;
   /* End automatically generated code
   ********************************************************************/
 
   assert( p->magic==VDBE_MAGIC_RUN );  /* sqlite3_step() verifies this */
-  sqlite3VdbeMutexArrayEnter(p);
+  sqlite3VdbeEnter(p);
   if( p->rc==SQLITE_NOMEM ){
     /* This happens if a malloc() inside a call to sqlite3_column_text() or
     ** sqlite3_column_text16() failed.  */
@@ -61848,19 +63435,12 @@ case OP_Remainder: {           /* same as TK_REM, in1, in2, out3 */
     u.af.iA = pIn1->u.i;
     u.af.iB = pIn2->u.i;
     switch( pOp->opcode ){
-      case OP_Add:         u.af.iB += u.af.iA;       break;
-      case OP_Subtract:    u.af.iB -= u.af.iA;       break;
-      case OP_Multiply:    u.af.iB *= u.af.iA;       break;
+      case OP_Add:       if( sqlite3AddInt64(&u.af.iB,u.af.iA) ) goto fp_math;  break;
+      case OP_Subtract:  if( sqlite3SubInt64(&u.af.iB,u.af.iA) ) goto fp_math;  break;
+      case OP_Multiply:  if( sqlite3MulInt64(&u.af.iB,u.af.iA) ) goto fp_math;  break;
       case OP_Divide: {
         if( u.af.iA==0 ) goto arithmetic_result_is_null;
-        /* Dividing the largest possible negative 64-bit integer (1<<63) by
-        ** -1 returns an integer too large to store in a 64-bit data-type. On
-        ** some architectures, the value overflows to (1<<63). On others,
-        ** a SIGFPE is issued. The following statement normalizes this
-        ** behavior so that all architectures behave as if integer
-        ** overflow occurred.
-        */
-        if( u.af.iA==-1 && u.af.iB==SMALLEST_INT64 ) u.af.iA = 1;
+        if( u.af.iA==-1 && u.af.iB==SMALLEST_INT64 ) goto fp_math;
         u.af.iB /= u.af.iA;
         break;
       }
@@ -61874,6 +63454,7 @@ case OP_Remainder: {           /* same as TK_REM, in1, in2, out3 */
     pOut->u.i = u.af.iB;
     MemSetTypeFlag(pOut, MEM_Int);
   }else{
+fp_math:
     u.af.rA = sqlite3VdbeRealValue(pIn1);
     u.af.rB = sqlite3VdbeRealValue(pIn2);
     switch( pOp->opcode ){
@@ -62035,6 +63616,15 @@ case OP_Function: {
   if( sqlite3VdbeMemTooBig(pOut) ){
     goto too_big;
   }
+
+#if 0
+  /* The app-defined function has done something that as caused this
+  ** statement to expire.  (Perhaps the function called sqlite3_exec()
+  ** with a CREATE TABLE statement.)
+  */
+  if( p->expired ) rc = SQLITE_ABORT;
+#endif
+
   REGISTER_TRACE(pOp->p3, pOut);
   UPDATE_MAX_BLOBSIZE(pOut);
   break;
@@ -62071,8 +63661,10 @@ case OP_BitOr:                  /* same as TK_BITOR, in1, in2, out3 */
 case OP_ShiftLeft:              /* same as TK_LSHIFT, in1, in2, out3 */
 case OP_ShiftRight: {           /* same as TK_RSHIFT, in1, in2, out3 */
 #if 0  /* local variables moved into u.ah */
-  i64 a;
-  i64 b;
+  i64 iA;
+  u64 uA;
+  i64 iB;
+  u8 op;
 #endif /* local variables moved into u.ah */
 
   pIn1 = &aMem[pOp->p1];
@@ -62082,16 +63674,38 @@ case OP_ShiftRight: {           /* same as TK_RSHIFT, in1, in2, out3 */
     sqlite3VdbeMemSetNull(pOut);
     break;
   }
-  u.ah.a = sqlite3VdbeIntValue(pIn2);
-  u.ah.b = sqlite3VdbeIntValue(pIn1);
-  switch( pOp->opcode ){
-    case OP_BitAnd:      u.ah.a &= u.ah.b;     break;
-    case OP_BitOr:       u.ah.a |= u.ah.b;     break;
-    case OP_ShiftLeft:   u.ah.a <<= u.ah.b;    break;
-    default:  assert( pOp->opcode==OP_ShiftRight );
-                         u.ah.a >>= u.ah.b;    break;
+  u.ah.iA = sqlite3VdbeIntValue(pIn2);
+  u.ah.iB = sqlite3VdbeIntValue(pIn1);
+  u.ah.op = pOp->opcode;
+  if( u.ah.op==OP_BitAnd ){
+    u.ah.iA &= u.ah.iB;
+  }else if( u.ah.op==OP_BitOr ){
+    u.ah.iA |= u.ah.iB;
+  }else if( u.ah.iB!=0 ){
+    assert( u.ah.op==OP_ShiftRight || u.ah.op==OP_ShiftLeft );
+
+    /* If shifting by a negative amount, shift in the other direction */
+    if( u.ah.iB<0 ){
+      assert( OP_ShiftRight==OP_ShiftLeft+1 );
+      u.ah.op = 2*OP_ShiftLeft + 1 - u.ah.op;
+      u.ah.iB = u.ah.iB>(-64) ? -u.ah.iB : 64;
+    }
+
+    if( u.ah.iB>=64 ){
+      u.ah.iA = (u.ah.iA>=0 || u.ah.op==OP_ShiftLeft) ? 0 : -1;
+    }else{
+      memcpy(&u.ah.uA, &u.ah.iA, sizeof(u.ah.uA));
+      if( u.ah.op==OP_ShiftLeft ){
+        u.ah.uA <<= u.ah.iB;
+      }else{
+        u.ah.uA >>= u.ah.iB;
+        /* Sign-extend on a right shift of a negative number */
+        if( u.ah.iA<0 ) u.ah.uA |= ((((u64)0xffffffff)<<32)|0xffffffff) << (64-u.ah.iB);
+      }
+      memcpy(&u.ah.iA, &u.ah.uA, sizeof(u.ah.iA));
+    }
   }
-  pOut->u.i = u.ah.a;
+  pOut->u.i = u.ah.iA;
   MemSetTypeFlag(pOut, MEM_Int);
   break;
 }
@@ -63031,7 +64645,6 @@ case OP_MakeRecord: {
   */
   u.ao.nData = 0;         /* Number of bytes of data space */
   u.ao.nHdr = 0;          /* Number of bytes of header space */
-  u.ao.nByte = 0;         /* Data space required for this record */
   u.ao.nZero = 0;         /* Number of zero bytes at the end of the record */
   u.ao.nField = pOp->p1;
   u.ao.zAffinity = pOp->p4.z;
@@ -63256,7 +64869,7 @@ case OP_Savepoint: {
         }
         if( u.aq.p1==SAVEPOINT_ROLLBACK && (db->flags&SQLITE_InternChanges)!=0 ){
           sqlite3ExpirePreparedStatements(db);
-          sqlite3ResetInternalSchema(db, 0);
+          sqlite3ResetInternalSchema(db, -1);
           db->flags = (db->flags | SQLITE_InternChanges);
         }
       }
@@ -63400,7 +65013,7 @@ case OP_Transaction: {
 #endif /* local variables moved into u.as */
 
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
   u.as.pBt = db->aDb[pOp->p1].pBt;
 
   if( u.as.pBt ){
@@ -63458,7 +65071,7 @@ case OP_ReadCookie: {               /* out2-prerelease */
   assert( pOp->p3<SQLITE_N_BTREE_META );
   assert( u.at.iDb>=0 && u.at.iDb<db->nDb );
   assert( db->aDb[u.at.iDb].pBt!=0 );
-  assert( (p->btreeMask & (1<<u.at.iDb))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<u.at.iDb))!=0 );
 
   sqlite3BtreeGetMeta(db->aDb[u.at.iDb].pBt, u.at.iCookie, (u32 *)&u.at.iMeta);
   pOut->u.i = u.at.iMeta;
@@ -63481,9 +65094,10 @@ case OP_SetCookie: {       /* in3 */
 #endif /* local variables moved into u.au */
   assert( pOp->p2<SQLITE_N_BTREE_META );
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
   u.au.pDb = &db->aDb[pOp->p1];
   assert( u.au.pDb->pBt!=0 );
+  assert( sqlite3SchemaMutexHeld(db, pOp->p1, 0) );
   pIn3 = &aMem[pOp->p3];
   sqlite3VdbeMemIntegerify(pIn3);
   /* See note about index shifting on OP_ReadCookie */
@@ -63505,10 +65119,12 @@ case OP_SetCookie: {       /* in3 */
   break;
 }
 
-/* Opcode: VerifyCookie P1 P2 *
+/* Opcode: VerifyCookie P1 P2 P3 * *
 **
 ** Check the value of global database parameter number 0 (the
-** schema version) and make sure it is equal to P2.  
+** schema version) and make sure it is equal to P2 and that the
+** generation counter on the local schema parse equals P3.
+**
 ** P1 is the database number which is 0 for the main database file
 ** and 1 for the file holding temporary tables and some higher number
 ** for auxiliary databases.
@@ -63524,17 +65140,21 @@ case OP_SetCookie: {       /* in3 */
 case OP_VerifyCookie: {
 #if 0  /* local variables moved into u.av */
   int iMeta;
+  int iGen;
   Btree *pBt;
 #endif /* local variables moved into u.av */
+
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
+  assert( sqlite3SchemaMutexHeld(db, pOp->p1, 0) );
   u.av.pBt = db->aDb[pOp->p1].pBt;
   if( u.av.pBt ){
     sqlite3BtreeGetMeta(u.av.pBt, BTREE_SCHEMA_VERSION, (u32 *)&u.av.iMeta);
+    u.av.iGen = db->aDb[pOp->p1].pSchema->iGeneration;
   }else{
-    u.av.iMeta = 0;
+    u.av.iGen = u.av.iMeta = 0;
   }
-  if( u.av.iMeta!=pOp->p2 ){
+  if( u.av.iMeta!=pOp->p2 || u.av.iGen!=pOp->p3 ){
     sqlite3DbFree(db, p->zErrMsg);
     p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed");
     /* If the schema-cookie from the database file matches the cookie
@@ -63554,7 +65174,7 @@ case OP_VerifyCookie: {
       sqlite3ResetInternalSchema(db, pOp->p1);
     }
 
-    sqlite3ExpirePreparedStatements(db);
+    p->expired = 1;
     rc = SQLITE_SCHEMA;
   }
   break;
@@ -63632,12 +65252,13 @@ case OP_OpenWrite: {
   u.aw.p2 = pOp->p2;
   u.aw.iDb = pOp->p3;
   assert( u.aw.iDb>=0 && u.aw.iDb<db->nDb );
-  assert( (p->btreeMask & (1<<u.aw.iDb))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<u.aw.iDb))!=0 );
   u.aw.pDb = &db->aDb[u.aw.iDb];
   u.aw.pX = u.aw.pDb->pBt;
   assert( u.aw.pX!=0 );
   if( pOp->opcode==OP_OpenWrite ){
     u.aw.wrFlag = 1;
+    assert( sqlite3SchemaMutexHeld(db, u.aw.iDb, 0) );
     if( u.aw.pDb->pSchema->file_format < p->minWriteFileFormat ){
       p->minWriteFileFormat = u.aw.pDb->pSchema->file_format;
     }
@@ -64337,7 +65958,6 @@ case OP_NewRowid: {           /* out2-prerelease */
     ** and try again, up to 100 times.
     */
     assert( u.be.pC->isTable );
-    u.be.cnt = 0;
 
 #ifdef SQLITE_32BIT_ROWID
 #   define MAX_ROWID 0x7fffffff
@@ -65170,14 +66790,16 @@ case OP_Destroy: {     /* out2-prerelease */
   }else{
     u.br.iDb = pOp->p3;
     assert( u.br.iCnt==1 );
-    assert( (p->btreeMask & (1<<u.br.iDb))!=0 );
+    assert( (p->btreeMask & (((yDbMask)1)<<u.br.iDb))!=0 );
     rc = sqlite3BtreeDropTable(db->aDb[u.br.iDb].pBt, pOp->p1, &u.br.iMoved);
     pOut->flags = MEM_Int;
     pOut->u.i = u.br.iMoved;
 #ifndef SQLITE_OMIT_AUTOVACUUM
     if( rc==SQLITE_OK && u.br.iMoved!=0 ){
-      sqlite3RootPageMoved(&db->aDb[u.br.iDb], u.br.iMoved, pOp->p1);
-      resetSchemaOnFault = 1;
+      sqlite3RootPageMoved(db, u.br.iDb, u.br.iMoved, pOp->p1);
+      /* All OP_Destroy operations occur on the same btree */
+      assert( resetSchemaOnFault==0 || resetSchemaOnFault==u.br.iDb+1 );
+      resetSchemaOnFault = u.br.iDb+1;
     }
 #endif
   }
@@ -65208,7 +66830,7 @@ case OP_Clear: {
 #endif /* local variables moved into u.bs */
 
   u.bs.nChange = 0;
-  assert( (p->btreeMask & (1<<pOp->p2))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p2))!=0 );
   rc = sqlite3BtreeClearTable(
       db->aDb[pOp->p2].pBt, pOp->p1, (pOp->p3 ? &u.bs.nChange : 0)
   );
@@ -65255,7 +66877,7 @@ case OP_CreateTable: {          /* out2-prerelease */
 
   u.bt.pgno = 0;
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
   u.bt.pDb = &db->aDb[pOp->p1];
   assert( u.bt.pDb->pBt!=0 );
   if( pOp->opcode==OP_CreateTable ){
@@ -65269,14 +66891,10 @@ case OP_CreateTable: {          /* out2-prerelease */
   break;
 }
 
-/* Opcode: ParseSchema P1 P2 * P4 *
+/* Opcode: ParseSchema P1 * * P4 *
 **
 ** Read and parse all entries from the SQLITE_MASTER table of database P1
-** that match the WHERE clause P4.  P2 is the "force" flag.   Always do
-** the parsing if P2 is true.  If P2 is false, then this routine is a
-** no-op if the schema is not currently loaded.  In other words, if P2
-** is false, the SQLITE_MASTER table is only parsed if the rest of the
-** schema is already loaded into the symbol table.
+** that match the WHERE clause P4. 
 **
 ** This opcode invokes the parser to create a new virtual machine,
 ** then runs the new virtual machine.  It is thus a re-entrant opcode.
@@ -65289,33 +66907,20 @@ case OP_ParseSchema: {
   InitData initData;
 #endif /* local variables moved into u.bu */
 
+  /* Any prepared statement that invokes this opcode will hold mutexes
+  ** on every btree.  This is a prerequisite for invoking
+  ** sqlite3InitCallback().
+  */
+#ifdef SQLITE_DEBUG
+  for(u.bu.iDb=0; u.bu.iDb<db->nDb; u.bu.iDb++){
+    assert( u.bu.iDb==1 || sqlite3BtreeHoldsMutex(db->aDb[u.bu.iDb].pBt) );
+  }
+#endif
+
   u.bu.iDb = pOp->p1;
   assert( u.bu.iDb>=0 && u.bu.iDb<db->nDb );
-
-  /* If pOp->p2 is 0, then this opcode is being executed to read a
-  ** single row, for example the row corresponding to a new index
-  ** created by this VDBE, from the sqlite_master table. It only
-  ** does this if the corresponding in-memory schema is currently
-  ** loaded. Otherwise, the new index definition can be loaded along
-  ** with the rest of the schema when it is required.
-  **
-  ** Although the mutex on the BtShared object that corresponds to
-  ** database u.bu.iDb (the database containing the sqlite_master table
-  ** read by this instruction) is currently held, it is necessary to
-  ** obtain the mutexes on all attached databases before checking if
-  ** the schema of u.bu.iDb is loaded. This is because, at the start of
-  ** the sqlite3_exec() call below, SQLite will invoke
-  ** sqlite3BtreeEnterAll(). If all mutexes are not already held, the
-  ** u.bu.iDb mutex may be temporarily released to avoid deadlock. If
-  ** this happens, then some other thread may delete the in-memory
-  ** schema of database u.bu.iDb before the SQL statement runs. The schema
-  ** will not be reloaded becuase the db->init.busy flag is set. This
-  ** can result in a "no such table: sqlite_master" or "malformed
-  ** database schema" error being returned to the user.
-  */
-  assert( sqlite3BtreeHoldsMutex(db->aDb[u.bu.iDb].pBt) );
-  sqlite3BtreeEnterAll(db);
-  if( pOp->p2 || DbHasProperty(db, u.bu.iDb, DB_SchemaLoaded) ){
+  assert( DbHasProperty(db, u.bu.iDb, DB_SchemaLoaded) );
+  /* Used to be a conditional */ {
     u.bu.zMaster = SCHEMA_TABLE(u.bu.iDb);
     u.bu.initData.db = db;
     u.bu.initData.iDb = pOp->p1;
@@ -65336,7 +66941,6 @@ case OP_ParseSchema: {
       db->init.busy = 0;
     }
   }
-  sqlite3BtreeLeaveAll(db);
   if( rc==SQLITE_NOMEM ){
     goto no_mem;
   }
@@ -65439,7 +67043,7 @@ case OP_IntegrityCk: {
   }
   u.bv.aRoot[u.bv.j] = 0;
   assert( pOp->p5<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p5))!=0 );
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p5))!=0 );
   u.bv.z = sqlite3BtreeIntegrityCheck(db->aDb[pOp->p5].pBt, u.bv.aRoot, u.bv.nRoot,
                                  (int)u.bv.pnErr->u.i, &u.bv.nErr);
   sqlite3DbFree(db, u.bv.aRoot);
@@ -65879,7 +67483,9 @@ case OP_AggStep: {
     sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3_value_text(&u.cb.ctx.s));
     rc = u.cb.ctx.isError;
   }
+
   sqlite3VdbeMemRelease(&u.cb.ctx.s);
+
   break;
 }
 
@@ -65915,13 +67521,38 @@ case OP_AggFinal: {
 }
 
 #ifndef SQLITE_OMIT_WAL
-/* Opcode: Checkpoint P1 * * * *
+/* Opcode: Checkpoint P1 P2 P3 * *
 **
 ** Checkpoint database P1. This is a no-op if P1 is not currently in
-** WAL mode.
+** WAL mode. Parameter P2 is one of SQLITE_CHECKPOINT_PASSIVE, FULL
+** or RESTART.  Write 1 or 0 into mem[P3] if the checkpoint returns
+** SQLITE_BUSY or not, respectively.  Write the number of pages in the
+** WAL after the checkpoint into mem[P3+1] and the number of pages
+** in the WAL that have been checkpointed after the checkpoint
+** completes into mem[P3+2].  However on an error, mem[P3+1] and
+** mem[P3+2] are initialized to -1.
 */
 case OP_Checkpoint: {
-  rc = sqlite3Checkpoint(db, pOp->p1);
+#if 0  /* local variables moved into u.cd */
+  int i;                          /* Loop counter */
+  int aRes[3];                    /* Results */
+  Mem *pMem;                      /* Write results here */
+#endif /* local variables moved into u.cd */
+
+  u.cd.aRes[0] = 0;
+  u.cd.aRes[1] = u.cd.aRes[2] = -1;
+  assert( pOp->p2==SQLITE_CHECKPOINT_PASSIVE
+       || pOp->p2==SQLITE_CHECKPOINT_FULL
+       || pOp->p2==SQLITE_CHECKPOINT_RESTART
+  );
+  rc = sqlite3Checkpoint(db, pOp->p1, pOp->p2, &u.cd.aRes[1], &u.cd.aRes[2]);
+  if( rc==SQLITE_BUSY ){
+    rc = SQLITE_OK;
+    u.cd.aRes[0] = 1;
+  }
+  for(u.cd.i=0, u.cd.pMem = &aMem[pOp->p3]; u.cd.i<3; u.cd.i++, u.cd.pMem++){
+    sqlite3VdbeMemSetInt64(u.cd.pMem, (i64)u.cd.aRes[u.cd.i]);
+  }
   break;
 };  
 #endif
@@ -65939,110 +67570,91 @@ case OP_Checkpoint: {
 ** Write a string containing the final journal-mode to register P2.
 */
 case OP_JournalMode: {    /* out2-prerelease */
-#if 0  /* local variables moved into u.cd */
+#if 0  /* local variables moved into u.ce */
   Btree *pBt;                     /* Btree to change journal mode of */
   Pager *pPager;                  /* Pager associated with pBt */
   int eNew;                       /* New journal mode */
   int eOld;                       /* The old journal mode */
   const char *zFilename;          /* Name of database file for pPager */
-#endif /* local variables moved into u.cd */
+#endif /* local variables moved into u.ce */
 
-  u.cd.eNew = pOp->p3;
-  assert( u.cd.eNew==PAGER_JOURNALMODE_DELETE
-       || u.cd.eNew==PAGER_JOURNALMODE_TRUNCATE
-       || u.cd.eNew==PAGER_JOURNALMODE_PERSIST
-       || u.cd.eNew==PAGER_JOURNALMODE_OFF
-       || u.cd.eNew==PAGER_JOURNALMODE_MEMORY
-       || u.cd.eNew==PAGER_JOURNALMODE_WAL
-       || u.cd.eNew==PAGER_JOURNALMODE_QUERY
+  u.ce.eNew = pOp->p3;
+  assert( u.ce.eNew==PAGER_JOURNALMODE_DELETE
+       || u.ce.eNew==PAGER_JOURNALMODE_TRUNCATE
+       || u.ce.eNew==PAGER_JOURNALMODE_PERSIST
+       || u.ce.eNew==PAGER_JOURNALMODE_OFF
+       || u.ce.eNew==PAGER_JOURNALMODE_MEMORY
+       || u.ce.eNew==PAGER_JOURNALMODE_WAL
+       || u.ce.eNew==PAGER_JOURNALMODE_QUERY
   );
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
 
-  /* This opcode is used in two places: PRAGMA journal_mode and ATTACH.
-  ** In PRAGMA journal_mode, the sqlite3VdbeUsesBtree() routine is called
-  ** when the statment is prepared and so p->aMutex.nMutex>0.  All mutexes
-  ** are already acquired.  But when used in ATTACH, sqlite3VdbeUsesBtree()
-  ** is not called when the statement is prepared because it requires the
-  ** iDb index of the database as a parameter, and the database has not
-  ** yet been attached so that index is unavailable.  We have to wait
-  ** until runtime (now) to get the mutex on the newly attached database.
-  ** No other mutexes are required by the ATTACH command so this is safe
-  ** to do.
-  */
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 || p->aMutex.nMutex==0 );
-  if( p->aMutex.nMutex==0 ){
-    /* This occurs right after ATTACH.  Get a mutex on the newly ATTACHed
-    ** database. */
-    sqlite3VdbeUsesBtree(p, pOp->p1);
-    sqlite3VdbeMutexArrayEnter(p);
-  }
-
-  u.cd.pBt = db->aDb[pOp->p1].pBt;
-  u.cd.pPager = sqlite3BtreePager(u.cd.pBt);
-  u.cd.eOld = sqlite3PagerGetJournalMode(u.cd.pPager);
-  if( u.cd.eNew==PAGER_JOURNALMODE_QUERY ) u.cd.eNew = u.cd.eOld;
-  if( !sqlite3PagerOkToChangeJournalMode(u.cd.pPager) ) u.cd.eNew = u.cd.eOld;
+  u.ce.pBt = db->aDb[pOp->p1].pBt;
+  u.ce.pPager = sqlite3BtreePager(u.ce.pBt);
+  u.ce.eOld = sqlite3PagerGetJournalMode(u.ce.pPager);
+  if( u.ce.eNew==PAGER_JOURNALMODE_QUERY ) u.ce.eNew = u.ce.eOld;
+  if( !sqlite3PagerOkToChangeJournalMode(u.ce.pPager) ) u.ce.eNew = u.ce.eOld;
 
 #ifndef SQLITE_OMIT_WAL
-  u.cd.zFilename = sqlite3PagerFilename(u.cd.pPager);
+  u.ce.zFilename = sqlite3PagerFilename(u.ce.pPager);
 
   /* Do not allow a transition to journal_mode=WAL for a database
   ** in temporary storage or if the VFS does not support shared memory
   */
-  if( u.cd.eNew==PAGER_JOURNALMODE_WAL
-   && (u.cd.zFilename[0]==0                         /* Temp file */
-       || !sqlite3PagerWalSupported(u.cd.pPager))   /* No shared-memory support */
+  if( u.ce.eNew==PAGER_JOURNALMODE_WAL
+   && (u.ce.zFilename[0]==0                         /* Temp file */
+       || !sqlite3PagerWalSupported(u.ce.pPager))   /* No shared-memory support */
   ){
-    u.cd.eNew = u.cd.eOld;
+    u.ce.eNew = u.ce.eOld;
   }
 
-  if( (u.cd.eNew!=u.cd.eOld)
-   && (u.cd.eOld==PAGER_JOURNALMODE_WAL || u.cd.eNew==PAGER_JOURNALMODE_WAL)
+  if( (u.ce.eNew!=u.ce.eOld)
+   && (u.ce.eOld==PAGER_JOURNALMODE_WAL || u.ce.eNew==PAGER_JOURNALMODE_WAL)
   ){
     if( !db->autoCommit || db->activeVdbeCnt>1 ){
       rc = SQLITE_ERROR;
       sqlite3SetString(&p->zErrMsg, db,
           "cannot change %s wal mode from within a transaction",
-          (u.cd.eNew==PAGER_JOURNALMODE_WAL ? "into" : "out of")
+          (u.ce.eNew==PAGER_JOURNALMODE_WAL ? "into" : "out of")
       );
       break;
     }else{
 
-      if( u.cd.eOld==PAGER_JOURNALMODE_WAL ){
+      if( u.ce.eOld==PAGER_JOURNALMODE_WAL ){
         /* If leaving WAL mode, close the log file. If successful, the call
         ** to PagerCloseWal() checkpoints and deletes the write-ahead-log
         ** file. An EXCLUSIVE lock may still be held on the database file
         ** after a successful return.
         */
-        rc = sqlite3PagerCloseWal(u.cd.pPager);
+        rc = sqlite3PagerCloseWal(u.ce.pPager);
         if( rc==SQLITE_OK ){
-          sqlite3PagerSetJournalMode(u.cd.pPager, u.cd.eNew);
+          sqlite3PagerSetJournalMode(u.ce.pPager, u.ce.eNew);
         }
-      }else if( u.cd.eOld==PAGER_JOURNALMODE_MEMORY ){
+      }else if( u.ce.eOld==PAGER_JOURNALMODE_MEMORY ){
         /* Cannot transition directly from MEMORY to WAL.  Use mode OFF
         ** as an intermediate */
-        sqlite3PagerSetJournalMode(u.cd.pPager, PAGER_JOURNALMODE_OFF);
+        sqlite3PagerSetJournalMode(u.ce.pPager, PAGER_JOURNALMODE_OFF);
       }
 
       /* Open a transaction on the database file. Regardless of the journal
       ** mode, this transaction always uses a rollback journal.
       */
-      assert( sqlite3BtreeIsInTrans(u.cd.pBt)==0 );
+      assert( sqlite3BtreeIsInTrans(u.ce.pBt)==0 );
       if( rc==SQLITE_OK ){
-        rc = sqlite3BtreeSetVersion(u.cd.pBt, (u.cd.eNew==PAGER_JOURNALMODE_WAL ? 2 : 1));
+        rc = sqlite3BtreeSetVersion(u.ce.pBt, (u.ce.eNew==PAGER_JOURNALMODE_WAL ? 2 : 1));
       }
     }
   }
 #endif /* ifndef SQLITE_OMIT_WAL */
 
   if( rc ){
-    u.cd.eNew = u.cd.eOld;
+    u.ce.eNew = u.ce.eOld;
   }
-  u.cd.eNew = sqlite3PagerSetJournalMode(u.cd.pPager, u.cd.eNew);
+  u.ce.eNew = sqlite3PagerSetJournalMode(u.ce.pPager, u.ce.eNew);
 
   pOut = &aMem[pOp->p2];
   pOut->flags = MEM_Str|MEM_Static|MEM_Term;
-  pOut->z = (char *)sqlite3JournalModename(u.cd.eNew);
+  pOut->z = (char *)sqlite3JournalModename(u.ce.eNew);
   pOut->n = sqlite3Strlen30(pOut->z);
   pOut->enc = SQLITE_UTF8;
   sqlite3VdbeChangeEncoding(pOut, encoding);
@@ -66071,14 +67683,14 @@ case OP_Vacuum: {
 ** P2. Otherwise, fall through to the next instruction.
 */
 case OP_IncrVacuum: {        /* jump */
-#if 0  /* local variables moved into u.ce */
+#if 0  /* local variables moved into u.cf */
   Btree *pBt;
-#endif /* local variables moved into u.ce */
+#endif /* local variables moved into u.cf */
 
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
-  assert( (p->btreeMask & (1<<pOp->p1))!=0 );
-  u.ce.pBt = db->aDb[pOp->p1].pBt;
-  rc = sqlite3BtreeIncrVacuum(u.ce.pBt);
+  assert( (p->btreeMask & (((yDbMask)1)<<pOp->p1))!=0 );
+  u.cf.pBt = db->aDb[pOp->p1].pBt;
+  rc = sqlite3BtreeIncrVacuum(u.cf.pBt);
   if( rc==SQLITE_DONE ){
     pc = pOp->p2 - 1;
     rc = SQLITE_OK;
@@ -66125,7 +67737,7 @@ case OP_TableLock: {
   if( isWriteLock || 0==(db->flags&SQLITE_ReadUncommitted) ){
     int p1 = pOp->p1; 
     assert( p1>=0 && p1<db->nDb );
-    assert( (p->btreeMask & (1<<p1))!=0 );
+    assert( (p->btreeMask & (((yDbMask)1)<<p1))!=0 );
     assert( isWriteLock==0 || isWriteLock==1 );
     rc = sqlite3BtreeLockTable(db->aDb[p1].pBt, pOp->p2, isWriteLock);
     if( (rc&0xFF)==SQLITE_LOCKED ){
@@ -66148,12 +67760,12 @@ case OP_TableLock: {
 ** code will be set to SQLITE_LOCKED.
 */
 case OP_VBegin: {
-#if 0  /* local variables moved into u.cf */
+#if 0  /* local variables moved into u.cg */
   VTable *pVTab;
-#endif /* local variables moved into u.cf */
-  u.cf.pVTab = pOp->p4.pVtab;
-  rc = sqlite3VtabBegin(db, u.cf.pVTab);
-  if( u.cf.pVTab ) importVtabErrMsg(p, u.cf.pVTab->pVtab);
+#endif /* local variables moved into u.cg */
+  u.cg.pVTab = pOp->p4.pVtab;
+  rc = sqlite3VtabBegin(db, u.cg.pVTab);
+  if( u.cg.pVTab ) importVtabErrMsg(p, u.cg.pVTab->pVtab);
   break;
 }
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
@@ -66192,32 +67804,32 @@ case OP_VDestroy: {
 ** table and stores that cursor in P1.
 */
 case OP_VOpen: {
-#if 0  /* local variables moved into u.cg */
+#if 0  /* local variables moved into u.ch */
   VdbeCursor *pCur;
   sqlite3_vtab_cursor *pVtabCursor;
   sqlite3_vtab *pVtab;
   sqlite3_module *pModule;
-#endif /* local variables moved into u.cg */
+#endif /* local variables moved into u.ch */
 
-  u.cg.pCur = 0;
-  u.cg.pVtabCursor = 0;
-  u.cg.pVtab = pOp->p4.pVtab->pVtab;
-  u.cg.pModule = (sqlite3_module *)u.cg.pVtab->pModule;
-  assert(u.cg.pVtab && u.cg.pModule);
-  rc = u.cg.pModule->xOpen(u.cg.pVtab, &u.cg.pVtabCursor);
-  importVtabErrMsg(p, u.cg.pVtab);
+  u.ch.pCur = 0;
+  u.ch.pVtabCursor = 0;
+  u.ch.pVtab = pOp->p4.pVtab->pVtab;
+  u.ch.pModule = (sqlite3_module *)u.ch.pVtab->pModule;
+  assert(u.ch.pVtab && u.ch.pModule);
+  rc = u.ch.pModule->xOpen(u.ch.pVtab, &u.ch.pVtabCursor);
+  importVtabErrMsg(p, u.ch.pVtab);
   if( SQLITE_OK==rc ){
     /* Initialize sqlite3_vtab_cursor base class */
-    u.cg.pVtabCursor->pVtab = u.cg.pVtab;
+    u.ch.pVtabCursor->pVtab = u.ch.pVtab;
 
     /* Initialise vdbe cursor object */
-    u.cg.pCur = allocateCursor(p, pOp->p1, 0, -1, 0);
-    if( u.cg.pCur ){
-      u.cg.pCur->pVtabCursor = u.cg.pVtabCursor;
-      u.cg.pCur->pModule = u.cg.pVtabCursor->pVtab->pModule;
+    u.ch.pCur = allocateCursor(p, pOp->p1, 0, -1, 0);
+    if( u.ch.pCur ){
+      u.ch.pCur->pVtabCursor = u.ch.pVtabCursor;
+      u.ch.pCur->pModule = u.ch.pVtabCursor->pVtab->pModule;
     }else{
       db->mallocFailed = 1;
-      u.cg.pModule->xClose(u.cg.pVtabCursor);
+      u.ch.pModule->xClose(u.ch.pVtabCursor);
     }
   }
   break;
@@ -66244,7 +67856,7 @@ case OP_VOpen: {
 ** A jump is made to P2 if the result set after filtering would be empty.
 */
 case OP_VFilter: {   /* jump */
-#if 0  /* local variables moved into u.ch */
+#if 0  /* local variables moved into u.ci */
   int nArg;
   int iQuery;
   const sqlite3_module *pModule;
@@ -66256,45 +67868,45 @@ case OP_VFilter: {   /* jump */
   int res;
   int i;
   Mem **apArg;
-#endif /* local variables moved into u.ch */
+#endif /* local variables moved into u.ci */
 
-  u.ch.pQuery = &aMem[pOp->p3];
-  u.ch.pArgc = &u.ch.pQuery[1];
-  u.ch.pCur = p->apCsr[pOp->p1];
-  assert( memIsValid(u.ch.pQuery) );
-  REGISTER_TRACE(pOp->p3, u.ch.pQuery);
-  assert( u.ch.pCur->pVtabCursor );
-  u.ch.pVtabCursor = u.ch.pCur->pVtabCursor;
-  u.ch.pVtab = u.ch.pVtabCursor->pVtab;
-  u.ch.pModule = u.ch.pVtab->pModule;
+  u.ci.pQuery = &aMem[pOp->p3];
+  u.ci.pArgc = &u.ci.pQuery[1];
+  u.ci.pCur = p->apCsr[pOp->p1];
+  assert( memIsValid(u.ci.pQuery) );
+  REGISTER_TRACE(pOp->p3, u.ci.pQuery);
+  assert( u.ci.pCur->pVtabCursor );
+  u.ci.pVtabCursor = u.ci.pCur->pVtabCursor;
+  u.ci.pVtab = u.ci.pVtabCursor->pVtab;
+  u.ci.pModule = u.ci.pVtab->pModule;
 
   /* Grab the index number and argc parameters */
-  assert( (u.ch.pQuery->flags&MEM_Int)!=0 && u.ch.pArgc->flags==MEM_Int );
-  u.ch.nArg = (int)u.ch.pArgc->u.i;
-  u.ch.iQuery = (int)u.ch.pQuery->u.i;
+  assert( (u.ci.pQuery->flags&MEM_Int)!=0 && u.ci.pArgc->flags==MEM_Int );
+  u.ci.nArg = (int)u.ci.pArgc->u.i;
+  u.ci.iQuery = (int)u.ci.pQuery->u.i;
 
   /* Invoke the xFilter method */
   {
-    u.ch.res = 0;
-    u.ch.apArg = p->apArg;
-    for(u.ch.i = 0; u.ch.i<u.ch.nArg; u.ch.i++){
-      u.ch.apArg[u.ch.i] = &u.ch.pArgc[u.ch.i+1];
-      sqlite3VdbeMemStoreType(u.ch.apArg[u.ch.i]);
+    u.ci.res = 0;
+    u.ci.apArg = p->apArg;
+    for(u.ci.i = 0; u.ci.i<u.ci.nArg; u.ci.i++){
+      u.ci.apArg[u.ci.i] = &u.ci.pArgc[u.ci.i+1];
+      sqlite3VdbeMemStoreType(u.ci.apArg[u.ci.i]);
     }
 
     p->inVtabMethod = 1;
-    rc = u.ch.pModule->xFilter(u.ch.pVtabCursor, u.ch.iQuery, pOp->p4.z, u.ch.nArg, u.ch.apArg);
+    rc = u.ci.pModule->xFilter(u.ci.pVtabCursor, u.ci.iQuery, pOp->p4.z, u.ci.nArg, u.ci.apArg);
     p->inVtabMethod = 0;
-    importVtabErrMsg(p, u.ch.pVtab);
+    importVtabErrMsg(p, u.ci.pVtab);
     if( rc==SQLITE_OK ){
-      u.ch.res = u.ch.pModule->xEof(u.ch.pVtabCursor);
+      u.ci.res = u.ci.pModule->xEof(u.ci.pVtabCursor);
     }
 
-    if( u.ch.res ){
+    if( u.ci.res ){
       pc = pOp->p2 - 1;
     }
   }
-  u.ch.pCur->nullRow = 0;
+  u.ci.pCur->nullRow = 0;
 
   break;
 }
@@ -66308,51 +67920,51 @@ case OP_VFilter: {   /* jump */
 ** P1 cursor is pointing to into register P3.
 */
 case OP_VColumn: {
-#if 0  /* local variables moved into u.ci */
+#if 0  /* local variables moved into u.cj */
   sqlite3_vtab *pVtab;
   const sqlite3_module *pModule;
   Mem *pDest;
   sqlite3_context sContext;
-#endif /* local variables moved into u.ci */
+#endif /* local variables moved into u.cj */
 
   VdbeCursor *pCur = p->apCsr[pOp->p1];
   assert( pCur->pVtabCursor );
   assert( pOp->p3>0 && pOp->p3<=p->nMem );
-  u.ci.pDest = &aMem[pOp->p3];
-  memAboutToChange(p, u.ci.pDest);
+  u.cj.pDest = &aMem[pOp->p3];
+  memAboutToChange(p, u.cj.pDest);
   if( pCur->nullRow ){
-    sqlite3VdbeMemSetNull(u.ci.pDest);
+    sqlite3VdbeMemSetNull(u.cj.pDest);
     break;
   }
-  u.ci.pVtab = pCur->pVtabCursor->pVtab;
-  u.ci.pModule = u.ci.pVtab->pModule;
-  assert( u.ci.pModule->xColumn );
-  memset(&u.ci.sContext, 0, sizeof(u.ci.sContext));
+  u.cj.pVtab = pCur->pVtabCursor->pVtab;
+  u.cj.pModule = u.cj.pVtab->pModule;
+  assert( u.cj.pModule->xColumn );
+  memset(&u.cj.sContext, 0, sizeof(u.cj.sContext));
 
   /* The output cell may already have a buffer allocated. Move
-  ** the current contents to u.ci.sContext.s so in case the user-function
+  ** the current contents to u.cj.sContext.s so in case the user-function
   ** can use the already allocated buffer instead of allocating a
   ** new one.
   */
-  sqlite3VdbeMemMove(&u.ci.sContext.s, u.ci.pDest);
-  MemSetTypeFlag(&u.ci.sContext.s, MEM_Null);
+  sqlite3VdbeMemMove(&u.cj.sContext.s, u.cj.pDest);
+  MemSetTypeFlag(&u.cj.sContext.s, MEM_Null);
 
-  rc = u.ci.pModule->xColumn(pCur->pVtabCursor, &u.ci.sContext, pOp->p2);
-  importVtabErrMsg(p, u.ci.pVtab);
-  if( u.ci.sContext.isError ){
-    rc = u.ci.sContext.isError;
+  rc = u.cj.pModule->xColumn(pCur->pVtabCursor, &u.cj.sContext, pOp->p2);
+  importVtabErrMsg(p, u.cj.pVtab);
+  if( u.cj.sContext.isError ){
+    rc = u.cj.sContext.isError;
   }
 
   /* Copy the result of the function to the P3 register. We
   ** do this regardless of whether or not an error occurred to ensure any
-  ** dynamic allocation in u.ci.sContext.s (a Mem struct) is  released.
+  ** dynamic allocation in u.cj.sContext.s (a Mem struct) is  released.
   */
-  sqlite3VdbeChangeEncoding(&u.ci.sContext.s, encoding);
-  sqlite3VdbeMemMove(u.ci.pDest, &u.ci.sContext.s);
-  REGISTER_TRACE(pOp->p3, u.ci.pDest);
-  UPDATE_MAX_BLOBSIZE(u.ci.pDest);
+  sqlite3VdbeChangeEncoding(&u.cj.sContext.s, encoding);
+  sqlite3VdbeMemMove(u.cj.pDest, &u.cj.sContext.s);
+  REGISTER_TRACE(pOp->p3, u.cj.pDest);
+  UPDATE_MAX_BLOBSIZE(u.cj.pDest);
 
-  if( sqlite3VdbeMemTooBig(u.ci.pDest) ){
+  if( sqlite3VdbeMemTooBig(u.cj.pDest) ){
     goto too_big;
   }
   break;
@@ -66367,22 +67979,22 @@ case OP_VColumn: {
 ** the end of its result set, then fall through to the next instruction.
 */
 case OP_VNext: {   /* jump */
-#if 0  /* local variables moved into u.cj */
+#if 0  /* local variables moved into u.ck */
   sqlite3_vtab *pVtab;
   const sqlite3_module *pModule;
   int res;
   VdbeCursor *pCur;
-#endif /* local variables moved into u.cj */
+#endif /* local variables moved into u.ck */
 
-  u.cj.res = 0;
-  u.cj.pCur = p->apCsr[pOp->p1];
-  assert( u.cj.pCur->pVtabCursor );
-  if( u.cj.pCur->nullRow ){
+  u.ck.res = 0;
+  u.ck.pCur = p->apCsr[pOp->p1];
+  assert( u.ck.pCur->pVtabCursor );
+  if( u.ck.pCur->nullRow ){
     break;
   }
-  u.cj.pVtab = u.cj.pCur->pVtabCursor->pVtab;
-  u.cj.pModule = u.cj.pVtab->pModule;
-  assert( u.cj.pModule->xNext );
+  u.ck.pVtab = u.ck.pCur->pVtabCursor->pVtab;
+  u.ck.pModule = u.ck.pVtab->pModule;
+  assert( u.ck.pModule->xNext );
 
   /* Invoke the xNext() method of the module. There is no way for the
   ** underlying implementation to return an error if one occurs during
@@ -66391,14 +68003,14 @@ case OP_VNext: {   /* jump */
   ** some other method is next invoked on the save virtual table cursor.
   */
   p->inVtabMethod = 1;
-  rc = u.cj.pModule->xNext(u.cj.pCur->pVtabCursor);
+  rc = u.ck.pModule->xNext(u.ck.pCur->pVtabCursor);
   p->inVtabMethod = 0;
-  importVtabErrMsg(p, u.cj.pVtab);
+  importVtabErrMsg(p, u.ck.pVtab);
   if( rc==SQLITE_OK ){
-    u.cj.res = u.cj.pModule->xEof(u.cj.pCur->pVtabCursor);
+    u.ck.res = u.ck.pModule->xEof(u.ck.pCur->pVtabCursor);
   }
 
-  if( !u.cj.res ){
+  if( !u.ck.res ){
     /* If there is data, jump to P2 */
     pc = pOp->p2 - 1;
   }
@@ -66414,19 +68026,19 @@ case OP_VNext: {   /* jump */
 ** in register P1 is passed as the zName argument to the xRename method.
 */
 case OP_VRename: {
-#if 0  /* local variables moved into u.ck */
+#if 0  /* local variables moved into u.cl */
   sqlite3_vtab *pVtab;
   Mem *pName;
-#endif /* local variables moved into u.ck */
+#endif /* local variables moved into u.cl */
 
-  u.ck.pVtab = pOp->p4.pVtab->pVtab;
-  u.ck.pName = &aMem[pOp->p1];
-  assert( u.ck.pVtab->pModule->xRename );
-  assert( memIsValid(u.ck.pName) );
-  REGISTER_TRACE(pOp->p1, u.ck.pName);
-  assert( u.ck.pName->flags & MEM_Str );
-  rc = u.ck.pVtab->pModule->xRename(u.ck.pVtab, u.ck.pName->z);
-  importVtabErrMsg(p, u.ck.pVtab);
+  u.cl.pVtab = pOp->p4.pVtab->pVtab;
+  u.cl.pName = &aMem[pOp->p1];
+  assert( u.cl.pVtab->pModule->xRename );
+  assert( memIsValid(u.cl.pName) );
+  REGISTER_TRACE(pOp->p1, u.cl.pName);
+  assert( u.cl.pName->flags & MEM_Str );
+  rc = u.cl.pVtab->pModule->xRename(u.cl.pVtab, u.cl.pName->z);
+  importVtabErrMsg(p, u.cl.pVtab);
   p->expired = 0;
 
   break;
@@ -66458,7 +68070,7 @@ case OP_VRename: {
 ** is set to the value of the rowid for the row just inserted.
 */
 case OP_VUpdate: {
-#if 0  /* local variables moved into u.cl */
+#if 0  /* local variables moved into u.cm */
   sqlite3_vtab *pVtab;
   sqlite3_module *pModule;
   int nArg;
@@ -66466,27 +68078,27 @@ case OP_VUpdate: {
   sqlite_int64 rowid;
   Mem **apArg;
   Mem *pX;
-#endif /* local variables moved into u.cl */
+#endif /* local variables moved into u.cm */
 
-  u.cl.pVtab = pOp->p4.pVtab->pVtab;
-  u.cl.pModule = (sqlite3_module *)u.cl.pVtab->pModule;
-  u.cl.nArg = pOp->p2;
+  u.cm.pVtab = pOp->p4.pVtab->pVtab;
+  u.cm.pModule = (sqlite3_module *)u.cm.pVtab->pModule;
+  u.cm.nArg = pOp->p2;
   assert( pOp->p4type==P4_VTAB );
-  if( ALWAYS(u.cl.pModule->xUpdate) ){
-    u.cl.apArg = p->apArg;
-    u.cl.pX = &aMem[pOp->p3];
-    for(u.cl.i=0; u.cl.i<u.cl.nArg; u.cl.i++){
-      assert( memIsValid(u.cl.pX) );
-      memAboutToChange(p, u.cl.pX);
-      sqlite3VdbeMemStoreType(u.cl.pX);
-      u.cl.apArg[u.cl.i] = u.cl.pX;
-      u.cl.pX++;
-    }
-    rc = u.cl.pModule->xUpdate(u.cl.pVtab, u.cl.nArg, u.cl.apArg, &u.cl.rowid);
-    importVtabErrMsg(p, u.cl.pVtab);
+  if( ALWAYS(u.cm.pModule->xUpdate) ){
+    u.cm.apArg = p->apArg;
+    u.cm.pX = &aMem[pOp->p3];
+    for(u.cm.i=0; u.cm.i<u.cm.nArg; u.cm.i++){
+      assert( memIsValid(u.cm.pX) );
+      memAboutToChange(p, u.cm.pX);
+      sqlite3VdbeMemStoreType(u.cm.pX);
+      u.cm.apArg[u.cm.i] = u.cm.pX;
+      u.cm.pX++;
+    }
+    rc = u.cm.pModule->xUpdate(u.cm.pVtab, u.cm.nArg, u.cm.apArg, &u.cm.rowid);
+    importVtabErrMsg(p, u.cm.pVtab);
     if( rc==SQLITE_OK && pOp->p1 ){
-      assert( u.cl.nArg>1 && u.cl.apArg[0] && (u.cl.apArg[0]->flags&MEM_Null) );
-      db->lastRowid = u.cl.rowid;
+      assert( u.cm.nArg>1 && u.cm.apArg[0] && (u.cm.apArg[0]->flags&MEM_Null) );
+      db->lastRowid = u.cm.rowid;
     }
     p->nChange++;
   }
@@ -66538,20 +68150,20 @@ case OP_MaxPgcnt: {            /* out2-prerelease */
 ** the UTF-8 string contained in P4 is emitted on the trace callback.
 */
 case OP_Trace: {
-#if 0  /* local variables moved into u.cm */
+#if 0  /* local variables moved into u.cn */
   char *zTrace;
-#endif /* local variables moved into u.cm */
+#endif /* local variables moved into u.cn */
 
-  u.cm.zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql);
-  if( u.cm.zTrace ){
+  u.cn.zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql);
+  if( u.cn.zTrace ){
     if( db->xTrace ){
-      char *z = sqlite3VdbeExpandSql(p, u.cm.zTrace);
+      char *z = sqlite3VdbeExpandSql(p, u.cn.zTrace);
       db->xTrace(db->pTraceArg, z);
       sqlite3DbFree(db, z);
     }
 #ifdef SQLITE_DEBUG
     if( (db->flags & SQLITE_SqlTrace)!=0 ){
-      sqlite3DebugPrintf("SQL-trace: %s\n", u.cm.zTrace);
+      sqlite3DebugPrintf("SQL-trace: %s\n", u.cn.zTrace);
     }
 #endif /* SQLITE_DEBUG */
   }
@@ -66630,13 +68242,15 @@ vdbe_error_halt:
   sqlite3VdbeHalt(p);
   if( rc==SQLITE_IOERR_NOMEM ) db->mallocFailed = 1;
   rc = SQLITE_ERROR;
-  if( resetSchemaOnFault ) sqlite3ResetInternalSchema(db, 0);
+  if( resetSchemaOnFault>0 ){
+    sqlite3ResetInternalSchema(db, resetSchemaOnFault-1);
+  }
 
   /* This is the only way out of this procedure.  We have to
   ** release the mutexes on btrees that were acquired at the
   ** top. */
 vdbe_return:
-  sqlite3BtreeMutexArrayLeave(&p->aMutex);
+  sqlite3VdbeLeave(p);
   return rc;
 
   /* Jump to here if a string or blob larger than SQLITE_MAX_LENGTH
@@ -66945,6 +68559,7 @@ SQLITE_API int sqlite3_blob_open(
       /* Configure the OP_VerifyCookie */
       sqlite3VdbeChangeP1(v, 1, iDb);
       sqlite3VdbeChangeP2(v, 1, pTab->pSchema->schema_cookie);
+      sqlite3VdbeChangeP3(v, 1, pTab->pSchema->iGeneration);
 
       /* Make sure a mutex is held on the table to be accessed */
       sqlite3VdbeUsesBtree(v, iDb); 
@@ -69079,7 +70694,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprSetCollByToken(Parse *pParse, Expr *pExpr, Token
 SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
   CollSeq *pColl = 0;
   Expr *p = pExpr;
-  while( ALWAYS(p) ){
+  while( p ){
     int op;
     pColl = p->pColl;
     if( pColl ) break;
@@ -69376,6 +70991,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc(
     if( op!=TK_INTEGER || pToken->z==0
           || sqlite3GetInt32(pToken->z, &iValue)==0 ){
       nExtra = pToken->n+1;
+      assert( iValue>=0 );
     }
   }
   pNew = sqlite3DbMallocZero(db, sizeof(Expr)+nExtra);
@@ -69601,6 +71217,8 @@ SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr){
 */
 SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
   if( p==0 ) return;
+  /* Sanity check: Assert that the IntValue is non-negative if it exists */
+  assert( !ExprHasProperty(p, EP_IntValue) || p->u.iValue>=0 );
   if( !ExprHasAnyProperty(p, EP_TokenOnly) ){
     sqlite3ExprDelete(db, p->pLeft);
     sqlite3ExprDelete(db, p->pRight);
@@ -70185,16 +71803,17 @@ SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr *p){
 */
 SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr *p, int *pValue){
   int rc = 0;
+
+  /* If an expression is an integer literal that fits in a signed 32-bit
+  ** integer, then the EP_IntValue flag will have already been set */
+  assert( p->op!=TK_INTEGER || (p->flags & EP_IntValue)!=0
+           || sqlite3GetInt32(p->u.zToken, &rc)==0 );
+
   if( p->flags & EP_IntValue ){
     *pValue = p->u.iValue;
     return 1;
   }
   switch( p->op ){
-    case TK_INTEGER: {
-      rc = sqlite3GetInt32(p->u.zToken, pValue);
-      assert( rc==0 );
-      break;
-    }
     case TK_UPLUS: {
       rc = sqlite3ExprIsInteger(p->pLeft, pValue);
       break;
@@ -70209,13 +71828,6 @@ SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr *p, int *pValue){
     }
     default: break;
   }
-  if( rc ){
-    assert( ExprHasAnyProperty(p, EP_Reduced|EP_TokenOnly)
-               || (p->flags2 & EP2_MallocedToken)==0 );
-    p->op = TK_INTEGER;
-    p->flags |= EP_IntValue;
-    p->u.iValue = *pValue;
-  }
   return rc;
 }
 
@@ -70940,6 +72552,7 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){
   Vdbe *v = pParse->pVdbe;
   if( pExpr->flags & EP_IntValue ){
     int i = pExpr->u.iValue;
+    assert( i>=0 );
     if( negFlag ) i = -i;
     sqlite3VdbeAddOp2(v, OP_Integer, i, iMem);
   }else{
@@ -70950,7 +72563,7 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){
     c = sqlite3Atoi64(z, &value, sqlite3Strlen30(z), SQLITE_UTF8);
     if( c==0 || (c==2 && negFlag) ){
       char *zV;
-      if( negFlag ){ value = -value; }
+      if( negFlag ){ value = c==2 ? SMALLEST_INT64 : -value; }
       zV = dup8bytes(v, (char*)&value);
       sqlite3VdbeAddOp4(v, OP_Int64, 0, iMem, 0, zV, P4_INT64);
     }else{
@@ -71334,7 +72947,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
       assert( pExpr->u.zToken[0]!=0 );
       sqlite3VdbeAddOp2(v, OP_Variable, pExpr->iColumn, target);
       if( pExpr->u.zToken[1]!=0 ){
-        sqlite3VdbeChangeP4(v, -1, pExpr->u.zToken, 0);
+        sqlite3VdbeChangeP4(v, -1, pExpr->u.zToken, P4_TRANSIENT);
       }
       break;
     }
@@ -72238,6 +73851,7 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int
       exprCodeBetween(pParse, pExpr, dest, 1, jumpIfNull);
       break;
     }
+#ifndef SQLITE_OMIT_SUBQUERY
     case TK_IN: {
       int destIfFalse = sqlite3VdbeMakeLabel(v);
       int destIfNull = jumpIfNull ? dest : destIfFalse;
@@ -72246,6 +73860,7 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int
       sqlite3VdbeResolveLabel(v, destIfFalse);
       break;
     }
+#endif
     default: {
       r1 = sqlite3ExprCodeTemp(pParse, pExpr, ®Free1);
       sqlite3VdbeAddOp3(v, OP_If, r1, dest, jumpIfNull!=0);
@@ -72379,6 +73994,7 @@ SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int
       exprCodeBetween(pParse, pExpr, dest, 0, jumpIfNull);
       break;
     }
+#ifndef SQLITE_OMIT_SUBQUERY
     case TK_IN: {
       if( jumpIfNull ){
         sqlite3ExprCodeIN(pParse, pExpr, dest, dest);
@@ -72389,6 +74005,7 @@ SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int
       }
       break;
     }
+#endif
     default: {
       r1 = sqlite3ExprCodeTemp(pParse, pExpr, ®Free1);
       sqlite3VdbeAddOp3(v, OP_IfNot, r1, dest, jumpIfNull!=0);
@@ -73112,6 +74729,22 @@ static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
 #endif
 }
 
+/*
+** Parameter zName is the name of a table that is about to be altered
+** (either with ALTER TABLE ... RENAME TO or ALTER TABLE ... ADD COLUMN).
+** If the table is a system table, this function leaves an error message
+** in pParse->zErr (system tables may not be altered) and returns non-zero.
+**
+** Or, if zName is not a system table, zero is returned.
+*/
+static int isSystemTable(Parse *pParse, const char *zName){
+  if( sqlite3Strlen30(zName)>6 && 0==sqlite3StrNICmp(zName, "sqlite_", 7) ){
+    sqlite3ErrorMsg(pParse, "table %s may not be altered", zName);
+    return 1;
+  }
+  return 0;
+}
+
 /*
 ** Generate code to implement the "ALTER TABLE xxx RENAME TO yyy" 
 ** command. 
@@ -73162,14 +74795,11 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   /* Make sure it is not a system table being altered, or a reserved name
   ** that the table is being renamed to.
   */
-  if( sqlite3Strlen30(pTab->zName)>6 
-   && 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7)
-  ){
-    sqlite3ErrorMsg(pParse, "table %s may not be altered", pTab->zName);
+  if( SQLITE_OK!=isSystemTable(pParse, pTab->zName) ){
     goto exit_rename_table;
   }
-  if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
-    goto exit_rename_table;
+  if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ goto
+    exit_rename_table;
   }
 
 #ifndef SQLITE_OMIT_VIEW
@@ -73501,6 +75131,9 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
     sqlite3ErrorMsg(pParse, "Cannot add a column to a view");
     goto exit_begin_add_column;
   }
+  if( SQLITE_OK!=isSystemTable(pParse, pTab->zName) ){
+    goto exit_begin_add_column;
+  }
 
   assert( pTab->addColOffset>0 );
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
@@ -73588,7 +75221,8 @@ static void openStatTable(
   Parse *pParse,          /* Parsing context */
   int iDb,                /* The database we are looking in */
   int iStatCur,           /* Open the sqlite_stat1 table on this cursor */
-  const char *zWhere      /* Delete entries associated with this table */
+  const char *zWhere,     /* Delete entries for this table or index */
+  const char *zWhereType  /* Either "tbl" or "idx" */
 ){
   static const struct {
     const char *zName;
@@ -73633,7 +75267,7 @@ static void openStatTable(
       sqlite3TableLock(pParse, iDb, aRoot[i], 1, zTab);
       if( zWhere ){
         sqlite3NestedParse(pParse,
-           "DELETE FROM %Q.%s WHERE tbl=%Q", pDb->zName, zTab, zWhere
+           "DELETE FROM %Q.%s WHERE %s=%Q", pDb->zName, zTab, zWhereType, zWhere
         );
       }else{
         /* The sqlite_stat[12] table already exists.  Delete all rows. */
@@ -73657,6 +75291,7 @@ static void openStatTable(
 static void analyzeOneTable(
   Parse *pParse,   /* Parser context */
   Table *pTab,     /* Table whose indices are to be analyzed */
+  Index *pOnlyIdx, /* If not NULL, only analyze this one index */
   int iStatCur,    /* Index of VdbeCursor that writes the sqlite_stat1 table */
   int iMem         /* Available memory locations begin here */
 ){
@@ -73667,8 +75302,7 @@ static void analyzeOneTable(
   int i;                       /* Loop counter */
   int topOfLoop;               /* The top of the loop */
   int endOfLoop;               /* The end of the loop */
-  int addr = 0;                /* The address of an instruction */
-  int jZeroRows = 0;           /* Jump from here if number of rows is zero */
+  int jZeroRows = -1;          /* Jump from here if number of rows is zero */
   int iDb;                     /* Index of database containing pTab */
   int regTabname = iMem++;     /* Register containing table name */
   int regIdxname = iMem++;     /* Register containing index name */
@@ -73679,6 +75313,7 @@ static void analyzeOneTable(
   int regRowid = iMem++;       /* Rowid for the inserted record */
 
 #ifdef SQLITE_ENABLE_STAT2
+  int addr = 0;                /* Instruction address */
   int regTemp2 = iMem++;       /* Temporary use register */
   int regSamplerecno = iMem++; /* Index of next sample to record */
   int regRecno = iMem++;       /* Current sample index */
@@ -73701,6 +75336,7 @@ static void analyzeOneTable(
   assert( sqlite3BtreeHoldsAllMutexes(db) );
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
   assert( iDb>=0 );
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
 #ifndef SQLITE_OMIT_AUTHORIZATION
   if( sqlite3AuthCheck(pParse, SQLITE_ANALYZE, pTab->zName, 0,
       db->aDb[iDb].zName ) ){
@@ -73714,9 +75350,12 @@ static void analyzeOneTable(
   iIdxCur = pParse->nTab++;
   sqlite3VdbeAddOp4(v, OP_String8, 0, regTabname, 0, pTab->zName, 0);
   for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
-    int nCol = pIdx->nColumn;
-    KeyInfo *pKey = sqlite3IndexKeyinfo(pParse, pIdx);
+    int nCol;
+    KeyInfo *pKey;
 
+    if( pOnlyIdx && pOnlyIdx!=pIdx ) continue;
+    nCol = pIdx->nColumn;
+    pKey = sqlite3IndexKeyinfo(pParse, pIdx);
     if( iMem+1+(nCol*2)>pParse->nMem ){
       pParse->nMem = iMem+1+(nCol*2);
     }
@@ -73873,7 +75512,7 @@ static void analyzeOneTable(
     ** is never possible.
     */
     sqlite3VdbeAddOp2(v, OP_SCopy, iMem, regSampleno);
-    if( jZeroRows==0 ){
+    if( jZeroRows<0 ){
       jZeroRows = sqlite3VdbeAddOp1(v, OP_IfNot, iMem);
     }
     for(i=0; i<nCol; i++){
@@ -73899,10 +75538,10 @@ static void analyzeOneTable(
     VdbeComment((v, "%s", pTab->zName));
     sqlite3VdbeAddOp2(v, OP_Count, iIdxCur, regSampleno);
     sqlite3VdbeAddOp1(v, OP_Close, iIdxCur);
+    jZeroRows = sqlite3VdbeAddOp1(v, OP_IfNot, regSampleno);
   }else{
-    assert( jZeroRows>0 );
-    addr = sqlite3VdbeAddOp0(v, OP_Goto);
     sqlite3VdbeJumpHere(v, jZeroRows);
+    jZeroRows = sqlite3VdbeAddOp0(v, OP_Goto);
   }
   sqlite3VdbeAddOp2(v, OP_Null, 0, regIdxname);
   sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regRec, "aaa", 0);
@@ -73910,9 +75549,7 @@ static void analyzeOneTable(
   sqlite3VdbeAddOp3(v, OP_Insert, iStatCur, regRec, regRowid);
   sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
   if( pParse->nMem<regRec ) pParse->nMem = regRec;
-  if( jZeroRows ){
-    sqlite3VdbeJumpHere(v, addr);
-  }
+  sqlite3VdbeJumpHere(v, jZeroRows);
 }
 
 /*
@@ -73939,20 +75576,22 @@ static void analyzeDatabase(Parse *pParse, int iDb){
   sqlite3BeginWriteOperation(pParse, 0, iDb);
   iStatCur = pParse->nTab;
   pParse->nTab += 2;
-  openStatTable(pParse, iDb, iStatCur, 0);
+  openStatTable(pParse, iDb, iStatCur, 0, 0);
   iMem = pParse->nMem+1;
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
   for(k=sqliteHashFirst(&pSchema->tblHash); k; k=sqliteHashNext(k)){
     Table *pTab = (Table*)sqliteHashData(k);
-    analyzeOneTable(pParse, pTab, iStatCur, iMem);
+    analyzeOneTable(pParse, pTab, 0, iStatCur, iMem);
   }
   loadAnalysis(pParse, iDb);
 }
 
 /*
 ** Generate code that will do an analysis of a single table in
-** a database.
+** a database.  If pOnlyIdx is not NULL then it is a single index
+** in pTab that should be analyzed.
 */
-static void analyzeTable(Parse *pParse, Table *pTab){
+static void analyzeTable(Parse *pParse, Table *pTab, Index *pOnlyIdx){
   int iDb;
   int iStatCur;
 
@@ -73962,8 +75601,12 @@ static void analyzeTable(Parse *pParse, Table *pTab){
   sqlite3BeginWriteOperation(pParse, 0, iDb);
   iStatCur = pParse->nTab;
   pParse->nTab += 2;
-  openStatTable(pParse, iDb, iStatCur, pTab->zName);
-  analyzeOneTable(pParse, pTab, iStatCur, pParse->nMem+1);
+  if( pOnlyIdx ){
+    openStatTable(pParse, iDb, iStatCur, pOnlyIdx->zName, "idx");
+  }else{
+    openStatTable(pParse, iDb, iStatCur, pTab->zName, "tbl");
+  }
+  analyzeOneTable(pParse, pTab, pOnlyIdx, iStatCur, pParse->nMem+1);
   loadAnalysis(pParse, iDb);
 }
 
@@ -73985,6 +75628,7 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){
   int i;
   char *z, *zDb;
   Table *pTab;
+  Index *pIdx;
   Token *pTableName;
 
   /* Read the database schema. If an error occurs, leave an error message
@@ -74009,11 +75653,12 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){
     }else{
       z = sqlite3NameFromToken(db, pName1);
       if( z ){
-        pTab = sqlite3LocateTable(pParse, 0, z, 0);
-        sqlite3DbFree(db, z);
-        if( pTab ){
-          analyzeTable(pParse, pTab);
+        if( (pIdx = sqlite3FindIndex(db, z, 0))!=0 ){
+          analyzeTable(pParse, pIdx->pTable, pIdx);
+        }else if( (pTab = sqlite3LocateTable(pParse, 0, z, 0))!=0 ){
+          analyzeTable(pParse, pTab, 0);
         }
+        sqlite3DbFree(db, z);
       }
     }
   }else{
@@ -74023,11 +75668,12 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){
       zDb = db->aDb[iDb].zName;
       z = sqlite3NameFromToken(db, pTableName);
       if( z ){
-        pTab = sqlite3LocateTable(pParse, 0, z, zDb);
-        sqlite3DbFree(db, z);
-        if( pTab ){
-          analyzeTable(pParse, pTab);
+        if( (pIdx = sqlite3FindIndex(db, z, zDb))!=0 ){
+          analyzeTable(pParse, pIdx->pTable, pIdx);
+        }else if( (pTab = sqlite3LocateTable(pParse, 0, z, zDb))!=0 ){
+          analyzeTable(pParse, pTab, 0);
         }
+        sqlite3DbFree(db, z);
       }
     }   
   }
@@ -74089,6 +75735,10 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
     if( pIndex==0 ) break;
     pIndex->aiRowEst[i] = v;
     if( *z==' ' ) z++;
+    if( memcmp(z, "unordered", 10)==0 ){
+      pIndex->bUnordered = 1;
+      break;
+    }
   }
   return 0;
 }
@@ -74143,9 +75793,9 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
 
   assert( iDb>=0 && iDb<db->nDb );
   assert( db->aDb[iDb].pBt!=0 );
-  assert( sqlite3BtreeHoldsMutex(db->aDb[iDb].pBt) );
 
   /* Clear any prior statistics */
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
   for(i=sqliteHashFirst(&db->aDb[iDb].pSchema->idxHash);i;i=sqliteHashNext(i)){
     Index *pIdx = sqliteHashData(i);
     sqlite3DefaultRowEst(pIdx);
@@ -74434,7 +76084,9 @@ static void attachFunc(
       case SQLITE_NULL:
         /* No key specified.  Use the key from the main database */
         sqlite3CodecGetKey(db, 0, (void**)&zKey, &nKey);
-        rc = sqlite3CodecAttach(db, db->nDb-1, zKey, nKey);
+        if( nKey>0 || sqlite3BtreeGetReserve(db->aDb[0].pBt)>0 ){
+          rc = sqlite3CodecAttach(db, db->nDb-1, zKey, nKey);
+        }
         break;
     }
   }
@@ -74458,7 +76110,7 @@ static void attachFunc(
       db->aDb[iDb].pBt = 0;
       db->aDb[iDb].pSchema = 0;
     }
-    sqlite3ResetInternalSchema(db, 0);
+    sqlite3ResetInternalSchema(db, -1);
     db->nDb = iDb;
     if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ){
       db->mallocFailed = 1;
@@ -74530,7 +76182,7 @@ static void detachFunc(
   sqlite3BtreeClose(pDb->pBt);
   pDb->pBt = 0;
   pDb->pSchema = 0;
-  sqlite3ResetInternalSchema(db, 0);
+  sqlite3ResetInternalSchema(db, -1);
   return;
 
 detach_error:
@@ -74570,9 +76222,11 @@ static void codeAttach(
 
 #ifndef SQLITE_OMIT_AUTHORIZATION
   if( pAuthArg ){
-    char *zAuthArg = pAuthArg->u.zToken;
-    if( NEVER(zAuthArg==0) ){
-      goto attach_end;
+    char *zAuthArg;
+    if( pAuthArg->op==TK_STRING ){
+      zAuthArg = pAuthArg->u.zToken;
+    }else{
+      zAuthArg = 0;
     }
     rc = sqlite3AuthCheck(pParse, type, zAuthArg, 0, 0);
     if(rc!=SQLITE_OK ){
@@ -75198,7 +76852,7 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
     ** on each used database.
     */
     if( pParse->cookieGoto>0 ){
-      u32 mask;
+      yDbMask mask;
       int iDb;
       sqlite3VdbeJumpHere(v, pParse->cookieGoto-1);
       for(iDb=0, mask=1; iDb<db->nDb; mask<<=1, iDb++){
@@ -75206,7 +76860,10 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
         sqlite3VdbeUsesBtree(v, iDb);
         sqlite3VdbeAddOp2(v,OP_Transaction, iDb, (mask & pParse->writeMask)!=0);
         if( db->init.busy==0 ){
-          sqlite3VdbeAddOp2(v,OP_VerifyCookie, iDb, pParse->cookieValue[iDb]);
+          assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+          sqlite3VdbeAddOp3(v, OP_VerifyCookie,
+                            iDb, pParse->cookieValue[iDb],
+                            db->aDb[iDb].pSchema->iGeneration);
         }
       }
 #ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -75319,9 +76976,12 @@ SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const cha
   int nName;
   assert( zName!=0 );
   nName = sqlite3Strlen30(zName);
+  /* All mutexes are required for schema access.  Make sure we hold them. */
+  assert( zDatabase!=0 || sqlite3BtreeHoldsAllMutexes(db) );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;   /* Search TEMP before MAIN */
     if( zDatabase!=0 && sqlite3StrICmp(zDatabase, db->aDb[j].zName) ) continue;
+    assert( sqlite3SchemaMutexHeld(db, j, 0) );
     p = sqlite3HashFind(&db->aDb[j].pSchema->tblHash, zName, nName);
     if( p ) break;
   }
@@ -75381,11 +77041,14 @@ SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const cha
   Index *p = 0;
   int i;
   int nName = sqlite3Strlen30(zName);
+  /* All mutexes are required for schema access.  Make sure we hold them. */
+  assert( zDb!=0 || sqlite3BtreeHoldsAllMutexes(db) );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */
     Schema *pSchema = db->aDb[j].pSchema;
     assert( pSchema );
     if( zDb && sqlite3StrICmp(zDb, db->aDb[j].zName) ) continue;
+    assert( sqlite3SchemaMutexHeld(db, j, 0) );
     p = sqlite3HashFind(&pSchema->idxHash, zName, nName);
     if( p ) break;
   }
@@ -75412,11 +77075,13 @@ static void freeIndex(sqlite3 *db, Index *p){
 SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char *zIdxName){
   Index *pIndex;
   int len;
-  Hash *pHash = &db->aDb[iDb].pSchema->idxHash;
+  Hash *pHash;
 
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+  pHash = &db->aDb[iDb].pSchema->idxHash;
   len = sqlite3Strlen30(zIdxName);
   pIndex = sqlite3HashInsert(pHash, zIdxName, len, 0);
-  if( pIndex ){
+  if( ALWAYS(pIndex) ){
     if( pIndex->pTable->pIndex==pIndex ){
       pIndex->pTable->pIndex = pIndex->pNext;
     }else{
@@ -75441,26 +77106,42 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char
 ** if there were schema changes during the transaction or if a
 ** schema-cookie mismatch occurs.
 **
-** If iDb==0 then reset the internal schema tables for all database
-** files.  If iDb>=1 then reset the internal schema for only the
+** If iDb<0 then reset the internal schema tables for all database
+** files.  If iDb>=0 then reset the internal schema for only the
 ** single file indicated.
 */
 SQLITE_PRIVATE void sqlite3ResetInternalSchema(sqlite3 *db, int iDb){
   int i, j;
-  assert( iDb>=0 && iDb<db->nDb );
+  assert( iDb<db->nDb );
 
-  if( iDb==0 ){
-    sqlite3BtreeEnterAll(db);
+  if( iDb>=0 ){
+    /* Case 1:  Reset the single schema identified by iDb */
+    Db *pDb = &db->aDb[iDb];
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+    assert( pDb->pSchema!=0 );
+    sqlite3SchemaClear(pDb->pSchema);
+
+    /* If any database other than TEMP is reset, then also reset TEMP
+    ** since TEMP might be holding triggers that reference tables in the
+    ** other database.
+    */
+    if( iDb!=1 ){
+      pDb = &db->aDb[1];
+      assert( pDb->pSchema!=0 );
+      sqlite3SchemaClear(pDb->pSchema);
+    }
+    return;
   }
-  for(i=iDb; i<db->nDb; i++){
+  /* Case 2 (from here to the end): Reset all schemas for all attached
+  ** databases. */
+  assert( iDb<0 );
+  sqlite3BtreeEnterAll(db);
+  for(i=0; i<db->nDb; i++){
     Db *pDb = &db->aDb[i];
     if( pDb->pSchema ){
-      assert(i==1 || (pDb->pBt && sqlite3BtreeHoldsMutex(pDb->pBt)));
-      sqlite3SchemaFree(pDb->pSchema);
+      sqlite3SchemaClear(pDb->pSchema);
     }
-    if( iDb>0 ) return;
   }
-  assert( iDb==0 );
   db->flags &= ~SQLITE_InternChanges;
   sqlite3VtabUnlockList(db);
   sqlite3BtreeLeaveAll(db);
@@ -75546,6 +77227,7 @@ SQLITE_PRIVATE void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
       TESTONLY ( Index *pOld = ) sqlite3HashInsert(
 	  &pIndex->pSchema->idxHash, zName, sqlite3Strlen30(zName), 0
       );
+      assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
       assert( pOld==pIndex || pOld==0 );
     }
     freeIndex(db, pIndex);
@@ -75580,6 +77262,7 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char
   assert( db!=0 );
   assert( iDb>=0 && iDb<db->nDb );
   assert( zTabName );
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
   testcase( zTabName[0]==0 );  /* Zero-length table names are allowed */
   pDb = &db->aDb[iDb];
   p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName,
@@ -75834,6 +77517,9 @@ SQLITE_PRIVATE void sqlite3StartTable(
     if( pTable ){
       if( !noErr ){
         sqlite3ErrorMsg(pParse, "table %T already exists", pName);
+      }else{
+        assert( !db->init.busy );
+        sqlite3CodeVerifySchema(pParse, iDb);
       }
       goto begin_table_error;
     }
@@ -75864,6 +77550,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
   */
 #ifndef SQLITE_OMIT_AUTOINCREMENT
   if( !pParse->nested && strcmp(zName, "sqlite_sequence")==0 ){
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
     pTable->pSchema->pSeqTab = pTable;
   }
 #endif
@@ -76324,6 +78011,7 @@ SQLITE_PRIVATE void sqlite3ChangeCookie(Parse *pParse, int iDb){
   int r1 = sqlite3GetTempReg(pParse);
   sqlite3 *db = pParse->db;
   Vdbe *v = pParse->pVdbe;
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
   sqlite3VdbeAddOp2(v, OP_Integer, db->aDb[iDb].pSchema->schema_cookie+1, r1);
   sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_SCHEMA_VERSION, r1);
   sqlite3ReleaseTempReg(pParse, r1);
@@ -76431,7 +78119,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){
     zSep = zSep2;
     identPut(zStmt, &k, pCol->zName);
     assert( pCol->affinity-SQLITE_AFF_TEXT >= 0 );
-    assert( pCol->affinity-SQLITE_AFF_TEXT < sizeof(azType)/sizeof(azType[0]) );
+    assert( pCol->affinity-SQLITE_AFF_TEXT < ArraySize(azType) );
     testcase( pCol->affinity==SQLITE_AFF_TEXT );
     testcase( pCol->affinity==SQLITE_AFF_NONE );
     testcase( pCol->affinity==SQLITE_AFF_NUMERIC );
@@ -76626,6 +78314,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
     */
     if( p->tabFlags & TF_Autoincrement ){
       Db *pDb = &db->aDb[iDb];
+      assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
       if( pDb->pSchema->pSeqTab==0 ){
         sqlite3NestedParse(pParse,
           "CREATE TABLE %Q.sqlite_sequence(name,seq)",
@@ -76646,6 +78335,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
   if( db->init.busy ){
     Table *pOld;
     Schema *pSchema = p->pSchema;
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
     pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName,
                              sqlite3Strlen30(p->zName),p);
     if( pOld ){
@@ -76830,6 +78520,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
       pSelTab->nCol = 0;
       pSelTab->aCol = 0;
       sqlite3DeleteTable(db, pSelTab);
+      assert( sqlite3SchemaMutexHeld(db, 0, pTable->pSchema) );
       pTable->pSchema->flags |= DB_UnresetViews;
     }else{
       pTable->nCol = 0;
@@ -76850,6 +78541,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
 */
 static void sqliteViewResetAll(sqlite3 *db, int idx){
   HashElem *i;
+  assert( sqlite3SchemaMutexHeld(db, idx, 0) );
   if( !DbHasProperty(db, idx, DB_UnresetViews) ) return;
   for(i=sqliteHashFirst(&db->aDb[idx].pSchema->tblHash); i;i=sqliteHashNext(i)){
     Table *pTab = sqliteHashData(i);
@@ -76883,10 +78575,13 @@ static void sqliteViewResetAll(sqlite3 *db, int idx){
 ** in order to be certain that we got the right one.
 */
 #ifndef SQLITE_OMIT_AUTOVACUUM
-SQLITE_PRIVATE void sqlite3RootPageMoved(Db *pDb, int iFrom, int iTo){
+SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3 *db, int iDb, int iFrom, int iTo){
   HashElem *pElem;
   Hash *pHash;
+  Db *pDb;
 
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+  pDb = &db->aDb[iDb];
   pHash = &pDb->pSchema->tblHash;
   for(pElem=sqliteHashFirst(pHash); pElem; pElem=sqliteHashNext(pElem)){
     Table *pTab = sqliteHashData(pElem);
@@ -77012,6 +78707,7 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
   if( noErr ) db->suppressErr--;
 
   if( pTab==0 ){
+    if( noErr ) sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
     goto exit_drop_table;
   }
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
@@ -77260,6 +78956,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
   pFKey->aAction[0] = (u8)(flags & 0xff);            /* ON DELETE action */
   pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff);    /* ON UPDATE action */
 
+  assert( sqlite3SchemaMutexHeld(db, 0, p->pSchema) );
   pNextTo = (FKey *)sqlite3HashInsert(&p->pSchema->fkeyHash, 
       pFKey->zTo, sqlite3Strlen30(pFKey->zTo), (void *)pFKey
   );
@@ -77529,6 +79226,9 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
     if( sqlite3FindIndex(db, zName, pDb->zName)!=0 ){
       if( !ifNotExist ){
         sqlite3ErrorMsg(pParse, "index %s already exists", zName);
+      }else{
+        assert( !db->init.busy );
+        sqlite3CodeVerifySchema(pParse, iDb);
       }
       goto exit_create_index;
     }
@@ -77615,6 +79315,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   pIndex->onError = (u8)onError;
   pIndex->autoIndex = (u8)(pName==0);
   pIndex->pSchema = db->aDb[iDb].pSchema;
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
 
   /* Check to see if we should honor DESC requests on index columns
   */
@@ -77744,6 +79445,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   */
   if( db->init.busy ){
     Index *p;
+    assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
     p = sqlite3HashInsert(&pIndex->pSchema->idxHash, 
                           pIndex->zName, sqlite3Strlen30(pIndex->zName),
                           pIndex);
@@ -77920,6 +79622,8 @@ SQLITE_PRIVATE void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists
   if( pIndex==0 ){
     if( !ifExists ){
       sqlite3ErrorMsg(pParse, "no such index: %S", pName, 0);
+    }else{
+      sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
     }
     pParse->checkSchema = 1;
     goto exit_drop_index;
@@ -78492,12 +80196,13 @@ SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
   }
   if( iDb>=0 ){
     sqlite3 *db = pToplevel->db;
-    int mask;
+    yDbMask mask;
 
     assert( iDb<db->nDb );
     assert( db->aDb[iDb].pBt!=0 || iDb==1 );
     assert( iDb<SQLITE_MAX_ATTACHED+2 );
-    mask = 1<<iDb;
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+    mask = ((yDbMask)1)<<iDb;
     if( (pToplevel->cookieMask & mask)==0 ){
       pToplevel->cookieMask |= mask;
       pToplevel->cookieValue[iDb] = db->aDb[iDb].pSchema->schema_cookie;
@@ -78508,6 +80213,21 @@ SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
   }
 }
 
+/*
+** If argument zDb is NULL, then call sqlite3CodeVerifySchema() for each 
+** attached database. Otherwise, invoke it for the database named zDb only.
+*/
+SQLITE_PRIVATE void sqlite3CodeVerifyNamedSchema(Parse *pParse, const char *zDb){
+  sqlite3 *db = pParse->db;
+  int i;
+  for(i=0; i<db->nDb; i++){
+    Db *pDb = &db->aDb[i];
+    if( pDb->pBt && (!zDb || 0==sqlite3StrICmp(zDb, pDb->zName)) ){
+      sqlite3CodeVerifySchema(pParse, i);
+    }
+  }
+}
+
 /*
 ** Generate VDBE code that prepares for doing an operation that
 ** might change the database.
@@ -78524,7 +80244,7 @@ SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
 SQLITE_PRIVATE void sqlite3BeginWriteOperation(Parse *pParse, int setStatement, int iDb){
   Parse *pToplevel = sqlite3ParseToplevel(pParse);
   sqlite3CodeVerifySchema(pParse, iDb);
-  pToplevel->writeMask |= 1<<iDb;
+  pToplevel->writeMask |= ((yDbMask)1)<<iDb;
   pToplevel->isMultiWrite |= setStatement;
 }
 
@@ -78624,6 +80344,7 @@ static void reindexDatabases(Parse *pParse, char const *zColl){
   HashElem *k;                /* For looping over tables in pDb */
   Table *pTab;                /* A table in the database */
 
+  assert( sqlite3BtreeHoldsAllMutexes(db) );  /* Needed for schema access */
   for(iDb=0, pDb=db->aDb; iDb<db->nDb; iDb++, pDb++){
     assert( pDb!=0 );
     for(k=sqliteHashFirst(&pDb->pSchema->tblHash);  k; k=sqliteHashNext(k)){
@@ -79142,12 +80863,12 @@ SQLITE_PRIVATE FuncDef *sqlite3FindFunction(
 /*
 ** Free all resources held by the schema structure. The void* argument points
 ** at a Schema struct. This function does not call sqlite3DbFree(db, ) on the 
-** pointer itself, it just cleans up subsiduary resources (i.e. the contents
+** pointer itself, it just cleans up subsidiary resources (i.e. the contents
 ** of the schema hash tables).
 **
 ** The Schema.cache_size variable is not cleared.
 */
-SQLITE_PRIVATE void sqlite3SchemaFree(void *p){
+SQLITE_PRIVATE void sqlite3SchemaClear(void *p){
   Hash temp1;
   Hash temp2;
   HashElem *pElem;
@@ -79169,7 +80890,10 @@ SQLITE_PRIVATE void sqlite3SchemaFree(void *p){
   sqlite3HashClear(&temp1);
   sqlite3HashClear(&pSchema->fkeyHash);
   pSchema->pSeqTab = 0;
-  pSchema->flags &= ~DB_SchemaLoaded;
+  if( pSchema->flags & DB_SchemaLoaded ){
+    pSchema->iGeneration++;
+    pSchema->flags &= ~DB_SchemaLoaded;
+  }
 }
 
 /*
@@ -79179,7 +80903,7 @@ SQLITE_PRIVATE void sqlite3SchemaFree(void *p){
 SQLITE_PRIVATE Schema *sqlite3SchemaGet(sqlite3 *db, Btree *pBt){
   Schema * p;
   if( pBt ){
-    p = (Schema *)sqlite3BtreeSchema(pBt, sizeof(Schema), sqlite3SchemaFree);
+    p = (Schema *)sqlite3BtreeSchema(pBt, sizeof(Schema), sqlite3SchemaClear);
   }else{
     p = (Schema *)sqlite3DbMallocZero(0, sizeof(Schema));
   }
@@ -79213,9 +80937,18 @@ SQLITE_PRIVATE Schema *sqlite3SchemaGet(sqlite3 *db, Btree *pBt){
 */
 
 /*
-** Look up every table that is named in pSrc.  If any table is not found,
-** add an error message to pParse->zErrMsg and return NULL.  If all tables
-** are found, return a pointer to the last table.
+** While a SrcList can in general represent multiple tables and subqueries
+** (as in the FROM clause of a SELECT statement) in this case it contains
+** the name of a single table, as one might find in an INSERT, DELETE,
+** or UPDATE statement.  Look up that table in the symbol table and
+** return a pointer.  Set an error message and return NULL if the table 
+** name is not found or if any other error occurs.
+**
+** The following fields are initialized appropriate in pSrc:
+**
+**    pSrc->a[0].pTab       Pointer to the Table object
+**    pSrc->a[0].pIndex     Pointer to the INDEXED BY index, if there is one
+**
 */
 SQLITE_PRIVATE Table *sqlite3SrcListLookup(Parse *pParse, SrcList *pSrc){
   struct SrcList_item *pItem = pSrc->a;
@@ -79734,7 +81467,7 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
     sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0);
     sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0));
     if( count ){
-      sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC);
+      sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
     }
   }
 
@@ -79825,7 +81558,7 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey(
   }
   if( doMakeRec ){
     sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nCol+1, regOut);
-    sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0);
+    sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
   }
   sqlite3ReleaseTempRange(pParse, regBase, nCol+1);
   return regBase;
@@ -81070,13 +82803,8 @@ static void sumStep(sqlite3_context *context, int argc, sqlite3_value **argv){
     if( type==SQLITE_INTEGER ){
       i64 v = sqlite3_value_int64(argv[0]);
       p->rSum += v;
-      if( (p->approx|p->overflow)==0 ){
-        i64 iNewSum = p->iSum + v;
-        int s1 = (int)(p->iSum >> (sizeof(i64)*8-1));
-        int s2 = (int)(v       >> (sizeof(i64)*8-1));
-        int s3 = (int)(iNewSum >> (sizeof(i64)*8-1));
-        p->overflow = ((s1&s2&~s3) | (~s1&~s2&s3))?1:0;
-        p->iSum = iNewSum;
+      if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, v) ){
+        p->overflow = 1;
       }
     }else{
       p->rSum += sqlite3_value_double(argv[0]);
@@ -81827,7 +83555,7 @@ static void fkLookupParent(
       }
   
       sqlite3VdbeAddOp3(v, OP_MakeRecord, regTemp, nCol, regRec);
-      sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0);
+      sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v,pIdx), P4_TRANSIENT);
       sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0);
   
       sqlite3ReleaseTempReg(pParse, regRec);
@@ -82116,7 +83844,6 @@ SQLITE_PRIVATE void sqlite3FkCheck(
   int regNew                      /* New row data is stored here */
 ){
   sqlite3 *db = pParse->db;       /* Database handle */
-  Vdbe *v;                        /* VM to write code to */
   FKey *pFKey;                    /* Used to iterate through FKs */
   int iDb;                        /* Index of database containing pTab */
   const char *zDb;                /* Name of database containing pTab */
@@ -82128,7 +83855,6 @@ SQLITE_PRIVATE void sqlite3FkCheck(
   /* If foreign-keys are disabled, this function is a no-op. */
   if( (db->flags&SQLITE_ForeignKeys)==0 ) return;
 
-  v = sqlite3GetVdbe(pParse);
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
   zDb = db->aDb[iDb].zName;
 
@@ -82585,6 +84311,7 @@ SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
   FKey *pFKey;                    /* Iterator variable */
   FKey *pNext;                    /* Copy of pFKey->pNextFrom */
 
+  assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
   for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
 
     /* Remove the FK from the fkeyHash hash table. */
@@ -82744,7 +84471,7 @@ SQLITE_PRIVATE void sqlite3TableAffinityStr(Vdbe *v, Table *pTab){
     pTab->zColAff = zColAff;
   }
 
-  sqlite3VdbeChangeP4(v, -1, pTab->zColAff, 0);
+  sqlite3VdbeChangeP4(v, -1, pTab->zColAff, P4_TRANSIENT);
 }
 
 /*
@@ -82858,6 +84585,7 @@ SQLITE_PRIVATE void sqlite3AutoincrementBegin(Parse *pParse){
   for(p = pParse->pAinc; p; p = p->pNext){
     pDb = &db->aDb[p->iDb];
     memId = p->regCtr;
+    assert( sqlite3SchemaMutexHeld(db, 0, pDb->pSchema) );
     sqlite3OpenTable(pParse, 0, p->iDb, pDb->pSchema->pSeqTab, OP_OpenRead);
     addr = sqlite3VdbeCurrentAddr(v);
     sqlite3VdbeAddOp4(v, OP_String8, 0, memId-1, 0, p->pTab->zName, 0);
@@ -82908,6 +84636,7 @@ SQLITE_PRIVATE void sqlite3AutoincrementEnd(Parse *pParse){
     int memId = p->regCtr;
 
     iRec = sqlite3GetTempReg(pParse);
+    assert( sqlite3SchemaMutexHeld(db, 0, pDb->pSchema) );
     sqlite3OpenTable(pParse, 0, p->iDb, pDb->pSchema->pSeqTab, OP_OpenWrite);
     j1 = sqlite3VdbeAddOp1(v, OP_NotNull, memId+1);
     j2 = sqlite3VdbeAddOp0(v, OP_Rewind);
@@ -83086,7 +84815,6 @@ SQLITE_PRIVATE void sqlite3Insert(
   int regIns;           /* Block of regs holding rowid+data being inserted */
   int regRowid;         /* registers holding insert rowid */
   int regData;          /* register holding first column to insert */
-  int regRecord;        /* Holds the assemblied row record */
   int regEof = 0;       /* Register recording end of SELECT data */
   int *aRegIdx = 0;     /* One register allocated to each index */
 
@@ -83415,7 +85143,6 @@ SQLITE_PRIVATE void sqlite3Insert(
   /* Allocate registers for holding the rowid of the new row,
   ** the content of the new row, and the assemblied row record.
   */
-  regRecord = ++pParse->nMem;
   regRowid = regIns = pParse->nMem+1;
   pParse->nMem += pTab->nCol + 1;
   if( IsVirtual(pTab) ){
@@ -83809,7 +85536,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
       case OE_Rollback:
       case OE_Fail: {
         char *zMsg;
-        j1 = sqlite3VdbeAddOp3(v, OP_HaltIfNull,
+        sqlite3VdbeAddOp3(v, OP_HaltIfNull,
                                   SQLITE_CONSTRAINT, onError, regData+i);
         zMsg = sqlite3MPrintf(pParse->db, "%s.%s may not be NULL",
                               pTab->zName, pTab->aCol[i].zName);
@@ -83949,7 +85676,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
     }
     sqlite3VdbeAddOp2(v, OP_SCopy, regRowid, regIdx+i);
     sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn+1, aRegIdx[iCur]);
-    sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0);
+    sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
     sqlite3ExprCacheAffinityChange(pParse, regIdx, pIdx->nColumn+1);
 
     /* Find out what action to take in case there is an indexing conflict */
@@ -84089,7 +85816,7 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
   }
   sqlite3VdbeAddOp3(v, OP_Insert, baseCur, regRec, regRowid);
   if( !pParse->nested ){
-    sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC);
+    sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
   }
   sqlite3VdbeChangeP5(v, pik_flags);
 }
@@ -85093,6 +86820,11 @@ struct sqlite3_api_routines {
 # define sqlite3_complete16 0
 #endif
 
+#ifdef SQLITE_OMIT_DECLTYPE
+# define sqlite3_column_decltype16      0
+# define sqlite3_column_decltype        0
+#endif
+
 #ifdef SQLITE_OMIT_PROGRESS_CALLBACK
 # define sqlite3_progress_handler 0
 #endif
@@ -85784,7 +87516,7 @@ static int invalidateTempStorage(Parse *pParse){
     }
     sqlite3BtreeClose(db->aDb[1].pBt);
     db->aDb[1].pBt = 0;
-    sqlite3ResetInternalSchema(db, 0);
+    sqlite3ResetInternalSchema(db, -1);
   }
   return SQLITE_OK;
 }
@@ -86053,11 +87785,11 @@ SQLITE_PRIVATE void sqlite3Pragma(
       sqlite3VdbeChangeP1(v, addr+1, iDb);
       sqlite3VdbeChangeP1(v, addr+6, SQLITE_DEFAULT_CACHE_SIZE);
     }else{
-      int size = sqlite3Atoi(zRight);
-      if( size<0 ) size = -size;
+      int size = sqlite3AbsInt32(sqlite3Atoi(zRight));
       sqlite3BeginWriteOperation(pParse, 0, iDb);
       sqlite3VdbeAddOp2(v, OP_Integer, size, 1);
       sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_DEFAULT_CACHE_SIZE, 1);
+      assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
       pDb->pSchema->cache_size = size;
       sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size);
     }
@@ -86360,11 +88092,11 @@ SQLITE_PRIVATE void sqlite3Pragma(
   */
   if( sqlite3StrICmp(zLeft,"cache_size")==0 ){
     if( sqlite3ReadSchema(pParse) ) goto pragma_out;
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
     if( !zRight ){
       returnSingleInt(pParse, "cache_size", pDb->pSchema->cache_size);
     }else{
-      int size = sqlite3Atoi(zRight);
-      if( size<0 ) size = -size;
+      int size = sqlite3AbsInt32(sqlite3Atoi(zRight));
       pDb->pSchema->cache_size = size;
       sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size);
     }
@@ -86781,6 +88513,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
       ** Begin by filling registers 2, 3, ... with the root pages numbers
       ** for all tables and indices in the database.
       */
+      assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
       pTbls = &db->aDb[i].pSchema->tblHash;
       for(x=sqliteHashFirst(pTbls); x; x=sqliteHashNext(x)){
         Table *pTab = sqliteHashData(x);
@@ -86846,7 +88579,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
           addr = sqlite3VdbeAddOpList(v, ArraySize(idxErr), idxErr);
           sqlite3VdbeChangeP4(v, addr+1, "rowid ", P4_STATIC);
           sqlite3VdbeChangeP4(v, addr+3, " missing from index ", P4_STATIC);
-          sqlite3VdbeChangeP4(v, addr+4, pIdx->zName, P4_STATIC);
+          sqlite3VdbeChangeP4(v, addr+4, pIdx->zName, P4_TRANSIENT);
           sqlite3VdbeJumpHere(v, addr+9);
           sqlite3VdbeJumpHere(v, jmp2);
         }
@@ -86876,7 +88609,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
           sqlite3VdbeJumpHere(v, addr+4);
           sqlite3VdbeChangeP4(v, addr+6, 
                      "wrong # of entries in index ", P4_STATIC);
-          sqlite3VdbeChangeP4(v, addr+7, pIdx->zName, P4_STATIC);
+          sqlite3VdbeChangeP4(v, addr+7, pIdx->zName, P4_TRANSIENT);
         }
       } 
     }
@@ -87055,13 +88788,29 @@ SQLITE_PRIVATE void sqlite3Pragma(
 
 #ifndef SQLITE_OMIT_WAL
   /*
-  **   PRAGMA [database.]wal_checkpoint
+  **   PRAGMA [database.]wal_checkpoint = passive|full|restart
   **
   ** Checkpoint the database.
   */
   if( sqlite3StrICmp(zLeft, "wal_checkpoint")==0 ){
+    int iBt = (pId2->z?iDb:SQLITE_MAX_ATTACHED);
+    int eMode = SQLITE_CHECKPOINT_PASSIVE;
+    if( zRight ){
+      if( sqlite3StrICmp(zRight, "full")==0 ){
+        eMode = SQLITE_CHECKPOINT_FULL;
+      }else if( sqlite3StrICmp(zRight, "restart")==0 ){
+        eMode = SQLITE_CHECKPOINT_RESTART;
+      }
+    }
     if( sqlite3ReadSchema(pParse) ) goto pragma_out;
-    sqlite3VdbeAddOp3(v, OP_Checkpoint, pId2->z?iDb:SQLITE_MAX_ATTACHED, 0, 0);
+    sqlite3VdbeSetNumCols(v, 3);
+    pParse->nMem = 3;
+    sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "busy", SQLITE_STATIC);
+    sqlite3VdbeSetColName(v, 1, COLNAME_NAME, "log", SQLITE_STATIC);
+    sqlite3VdbeSetColName(v, 2, COLNAME_NAME, "checkpointed", SQLITE_STATIC);
+
+    sqlite3VdbeAddOp3(v, OP_Checkpoint, iBt, eMode, 1);
+    sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 3);
   }else
 
   /*
@@ -87212,7 +88961,7 @@ static void corruptSchema(
                                  "%s - %s", *pData->pzErrMsg, zExtra);
     }
   }
-  pData->rc = db->mallocFailed ? SQLITE_NOMEM : SQLITE_CORRUPT;
+  pData->rc = db->mallocFailed ? SQLITE_NOMEM : SQLITE_CORRUPT_BKPT;
 }
 
 /*
@@ -87319,7 +89068,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   int meta[5];
   InitData initData;
   char const *zMasterSchema;
-  char const *zMasterName = SCHEMA_TABLE(iDb);
+  char const *zMasterName;
   int openedTransaction = 0;
 
   /*
@@ -87456,9 +89205,8 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   pDb->pSchema->enc = ENC(db);
 
   if( pDb->pSchema->cache_size==0 ){
-    size = meta[BTREE_DEFAULT_CACHE_SIZE-1];
+    size = sqlite3AbsInt32(meta[BTREE_DEFAULT_CACHE_SIZE-1]);
     if( size==0 ){ size = SQLITE_DEFAULT_CACHE_SIZE; }
-    if( size<0 ) size = -size;
     pDb->pSchema->cache_size = size;
     sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size);
   }
@@ -87517,7 +89265,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   }
   if( db->mallocFailed ){
     rc = SQLITE_NOMEM;
-    sqlite3ResetInternalSchema(db, 0);
+    sqlite3ResetInternalSchema(db, -1);
   }
   if( rc==SQLITE_OK || (db->flags&SQLITE_RecoveryMode)){
     /* Black magic: If the SQLITE_RecoveryMode flag is set, then consider
@@ -87649,7 +89397,9 @@ static void schemaIsValid(Parse *pParse){
     ** value stored as part of the in-memory schema representation,
     ** set Parse.rc to SQLITE_SCHEMA. */
     sqlite3BtreeGetMeta(pBt, BTREE_SCHEMA_VERSION, (u32 *)&cookie);
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
     if( cookie!=db->aDb[iDb].pSchema->schema_cookie ){
+      sqlite3ResetInternalSchema(db, iDb);
       pParse->rc = SQLITE_SCHEMA;
     }
 
@@ -87791,9 +89541,6 @@ static int sqlite3Prepare(
   if( pParse->checkSchema ){
     schemaIsValid(pParse);
   }
-  if( pParse->rc==SQLITE_SCHEMA ){
-    sqlite3ResetInternalSchema(db, 0);
-  }
   if( db->mallocFailed ){
     pParse->rc = SQLITE_NOMEM;
   }
@@ -88846,6 +90593,22 @@ static void explainTempTable(Parse *pParse, const char *zUsage){
   }
 }
 
+/*
+** Assign expression b to lvalue a. A second, no-op, version of this macro
+** is provided when SQLITE_OMIT_EXPLAIN is defined. This allows the code
+** in sqlite3Select() to assign values to structure member variables that
+** only exist if SQLITE_OMIT_EXPLAIN is not defined without polluting the
+** code with #ifndef directives.
+*/
+# define explainSetInteger(a, b) a = b
+
+#else
+/* No-op versions of the explainXXX() functions and macros. */
+# define explainTempTable(y,z)
+# define explainSetInteger(y,z)
+#endif
+
+#if !defined(SQLITE_OMIT_EXPLAIN) && !defined(SQLITE_OMIT_COMPOUND_SELECT)
 /*
 ** Unless an "EXPLAIN QUERY PLAN" command is being processed, this function
 ** is a no-op. Otherwise, it adds a single row of output to the EQP result,
@@ -88877,21 +90640,9 @@ static void explainComposite(
     sqlite3VdbeAddOp4(v, OP_Explain, pParse->iSelectId, 0, 0, zMsg, P4_DYNAMIC);
   }
 }
-
-/*
-** Assign expression b to lvalue a. A second, no-op, version of this macro
-** is provided when SQLITE_OMIT_EXPLAIN is defined. This allows the code
-** in sqlite3Select() to assign values to structure member variables that
-** only exist if SQLITE_OMIT_EXPLAIN is not defined without polluting the
-** code with #ifndef directives.
-*/
-# define explainSetInteger(a, b) a = b
-
 #else
 /* No-op versions of the explainXXX() functions and macros. */
-# define explainTempTable(y,z)
 # define explainComposite(v,w,x,y,z)
-# define explainSetInteger(y,z)
 #endif
 
 /*
@@ -90692,6 +92443,9 @@ static void substSelect(
 **        appear as unmodified result columns in the outer query.  But
 **        have other optimizations in mind to deal with that case.
 **
+**  (21)  The subquery does not use LIMIT or the outer query is not
+**        DISTINCT.  (See ticket [752e1646fc]).
+**
 ** In this routine, the "p" parameter is a pointer to the outer query.
 ** The subquery is p->pSrc->a[iFrom].  isAgg is true if the outer query
 ** uses aggregates and subqueryIsAgg is true if the subquery uses aggregates.
@@ -90760,6 +92514,9 @@ static int flattenSubquery(
   }
   if( isAgg && pSub->pOrderBy ) return 0;                /* Restriction (16) */
   if( pSub->pLimit && p->pWhere ) return 0;              /* Restriction (19) */
+  if( pSub->pLimit && (p->selFlags & SF_Distinct)!=0 ){
+     return 0;         /* Restriction (21) */
+  }
 
   /* OBSOLETE COMMENT 1:
   ** Restriction 3:  If the subquery is a join, make sure the subquery is 
@@ -91652,6 +93409,32 @@ static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){
   sqlite3ExprCacheClear(pParse);
 }
 
+/*
+** Add a single OP_Explain instruction to the VDBE to explain a simple
+** count(*) query ("SELECT count(*) FROM pTab").
+*/
+#ifndef SQLITE_OMIT_EXPLAIN
+static void explainSimpleCount(
+  Parse *pParse,                  /* Parse context */
+  Table *pTab,                    /* Table being queried */
+  Index *pIdx                     /* Index used to optimize scan, or NULL */
+){
+  if( pParse->explain==2 ){
+    char *zEqp = sqlite3MPrintf(pParse->db, "SCAN TABLE %s %s%s(~%d rows)",
+        pTab->zName, 
+        pIdx ? "USING COVERING INDEX " : "",
+        pIdx ? pIdx->zName : "",
+        pTab->nRowEst
+    );
+    sqlite3VdbeAddOp4(
+        pParse->pVdbe, OP_Explain, pParse->iSelectId, 0, 0, zEqp, P4_DYNAMIC
+    );
+  }
+}
+#else
+# define explainSimpleCount(a,b,c)
+#endif
+
 /*
 ** Generate code for the SELECT statement given in the p argument.  
 **
@@ -92263,6 +94046,7 @@ SQLITE_PRIVATE int sqlite3Select(
         }
         sqlite3VdbeAddOp2(v, OP_Count, iCsr, sAggInfo.aFunc[0].iMem);
         sqlite3VdbeAddOp1(v, OP_Close, iCsr);
+        explainSimpleCount(pParse, pTab, pBest);
       }else
 #endif /* SQLITE_OMIT_BTREECOUNT */
       {
@@ -92721,6 +94505,7 @@ SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
 
   if( pTmpSchema!=pTab->pSchema ){
     HashElem *p;
+    assert( sqlite3SchemaMutexHeld(pParse->db, 0, pTmpSchema) );
     for(p=sqliteHashFirst(&pTmpSchema->trigHash); p; p=sqliteHashNext(p)){
       Trigger *pTrig = (Trigger *)sqliteHashData(p);
       if( pTrig->pTabSchema==pTab->pSchema
@@ -92832,10 +94617,14 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
   if( !zName || SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
     goto trigger_cleanup;
   }
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
   if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash),
                       zName, sqlite3Strlen30(zName)) ){
     if( !noErr ){
       sqlite3ErrorMsg(pParse, "trigger %T already exists", pName);
+    }else{
+      assert( !db->init.busy );
+      sqlite3CodeVerifySchema(pParse, iDb);
     }
     goto trigger_cleanup;
   }
@@ -92929,7 +94718,6 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
   int iDb;                                /* Database containing the trigger */
   Token nameToken;                        /* Trigger name for error reporting */
 
-  pTrig = pParse->pNewTrigger;
   pParse->pNewTrigger = 0;
   if( NEVER(pParse->nErr) || !pTrig ) goto triggerfinish_cleanup;
   zName = pTrig->zName;
@@ -92972,6 +94760,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
   if( db->init.busy ){
     Trigger *pLink = pTrig;
     Hash *pHash = &db->aDb[iDb].pSchema->trigHash;
+    assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
     pTrig = sqlite3HashInsert(pHash, zName, sqlite3Strlen30(zName), pTrig);
     if( pTrig ){
       db->mallocFailed = 1;
@@ -93153,15 +94942,19 @@ SQLITE_PRIVATE void sqlite3DropTrigger(Parse *pParse, SrcList *pName, int noErr)
   zDb = pName->a[0].zDatabase;
   zName = pName->a[0].zName;
   nName = sqlite3Strlen30(zName);
+  assert( zDb!=0 || sqlite3BtreeHoldsAllMutexes(db) );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */
     if( zDb && sqlite3StrICmp(db->aDb[j].zName, zDb) ) continue;
+    assert( sqlite3SchemaMutexHeld(db, j, 0) );
     pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName, nName);
     if( pTrigger ) break;
   }
   if( !pTrigger ){
     if( !noErr ){
       sqlite3ErrorMsg(pParse, "no such trigger: %S", pName, 0);
+    }else{
+      sqlite3CodeVerifyNamedSchema(pParse, zDb);
     }
     pParse->checkSchema = 1;
     goto drop_trigger_cleanup;
@@ -93229,7 +95022,7 @@ SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
     sqlite3BeginWriteOperation(pParse, 0, iDb);
     sqlite3OpenMasterTable(pParse, iDb);
     base = sqlite3VdbeAddOpList(v,  ArraySize(dropTrigger), dropTrigger);
-    sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, 0);
+    sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, P4_TRANSIENT);
     sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC);
     sqlite3ChangeCookie(pParse, iDb);
     sqlite3VdbeAddOp2(v, OP_Close, 0, 0);
@@ -93244,8 +95037,11 @@ SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
 ** Remove a trigger from the hash tables of the sqlite* pointer.
 */
 SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTrigger(sqlite3 *db, int iDb, const char *zName){
-  Hash *pHash = &(db->aDb[iDb].pSchema->trigHash);
   Trigger *pTrigger;
+  Hash *pHash;
+
+  assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+  pHash = &(db->aDb[iDb].pSchema->trigHash);
   pTrigger = sqlite3HashInsert(pHash, zName, sqlite3Strlen30(zName), 0);
   if( ALWAYS(pTrigger) ){
     if( pTrigger->pSchema==pTrigger->pTabSchema ){
@@ -93291,8 +95087,12 @@ SQLITE_PRIVATE Trigger *sqlite3TriggersExist(
   int *pMask              /* OUT: Mask of TRIGGER_BEFORE|TRIGGER_AFTER */
 ){
   int mask = 0;
-  Trigger *pList = sqlite3TriggerList(pParse, pTab);
+  Trigger *pList = 0;
   Trigger *p;
+
+  if( (pParse->db->flags & SQLITE_EnableTrigger)!=0 ){
+    pList = sqlite3TriggerList(pParse, pTab);
+  }
   assert( pList==0 || IsVirtual(pTab)==0 );
   for(p=pList; p; p=p->pNext){
     if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
@@ -93892,7 +95692,6 @@ SQLITE_PRIVATE void sqlite3Update(
   int regNew;
   int regOld = 0;
   int regRowSet = 0;     /* Rowset of rows to be updated */
-  int regRec;            /* Register used for new table record to insert */
 
   memset(&sContext, 0, sizeof(sContext));
   db = pParse->db;
@@ -94050,7 +95849,6 @@ SQLITE_PRIVATE void sqlite3Update(
   }
   regNew = pParse->nMem + 1;
   pParse->nMem += pTab->nCol;
-  regRec = ++pParse->nMem;
 
   /* Start the view context. */
   if( isView ){
@@ -94160,7 +95958,7 @@ SQLITE_PRIVATE void sqlite3Update(
         pTrigger, pChanges, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onError
     );
     for(i=0; i<pTab->nCol; i++){
-      if( aXRef[i]<0 || oldmask==0xffffffff || (oldmask & (1<<i)) ){
+      if( aXRef[i]<0 || oldmask==0xffffffff || (i<32 && (oldmask & (1<<i))) ){
         sqlite3ExprCodeGetColumnOfTable(v, pTab, iCur, i, regOld+i);
       }else{
         sqlite3VdbeAddOp2(v, OP_Null, 0, regOld+i);
@@ -94767,10 +96565,13 @@ end_of_vacuum:
     pDb->pSchema = 0;
   }
 
-  sqlite3ResetInternalSchema(db, 0);
+  /* This both clears the schemas and reduces the size of the db->aDb[]
+  ** array. */ 
+  sqlite3ResetInternalSchema(db, -1);
 
   return rc;
 }
+
 #endif  /* SQLITE_OMIT_VACUUM && SQLITE_OMIT_ATTACH */
 
 /************** End of vacuum.c **********************************************/
@@ -94824,7 +96625,7 @@ static int createModule(
     if( pDel==pMod ){
       db->mallocFailed = 1;
     }
-    sqlite3ResetInternalSchema(db, 0);
+    sqlite3ResetInternalSchema(db, -1);
   }else if( xDestroy ){
     xDestroy(pAux);
   }
@@ -94921,10 +96722,9 @@ static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
   ** that contains table p is held by the caller. See header comments 
   ** above function sqlite3VtabUnlockList() for an explanation of why
   ** this makes it safe to access the sqlite3.pDisconnect list of any
-  ** database connection that may have an entry in the p->pVTable list.  */
-  assert( db==0 ||
-    sqlite3BtreeHoldsMutex(db->aDb[sqlite3SchemaToIndex(db, p->pSchema)].pBt) 
-  );
+  ** database connection that may have an entry in the p->pVTable list.
+  */
+  assert( db==0 || sqlite3SchemaMutexHeld(db, 0, p->pSchema) );
 
   while( pVTable ){
     sqlite3 *db2 = pVTable->db;
@@ -95148,7 +96948,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
 
     sqlite3VdbeAddOp2(v, OP_Expire, 0, 0);
     zWhere = sqlite3MPrintf(db, "name='%q' AND type='table'", pTab->zName);
-    sqlite3VdbeAddOp4(v, OP_ParseSchema, iDb, 1, 0, zWhere, P4_DYNAMIC);
+    sqlite3VdbeAddOp4(v, OP_ParseSchema, iDb, 0, 0, zWhere, P4_DYNAMIC);
     sqlite3VdbeAddOp4(v, OP_VCreate, iDb, 0, 0, 
                          pTab->zName, sqlite3Strlen30(pTab->zName) + 1);
   }
@@ -95163,6 +96963,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
     Schema *pSchema = pTab->pSchema;
     const char *zName = pTab->zName;
     int nName = sqlite3Strlen30(zName);
+    assert( sqlite3SchemaMutexHeld(db, 0, pSchema) );
     pOld = sqlite3HashInsert(&pSchema->tblHash, zName, nName, pTab);
     if( pOld ){
       db->mallocFailed = 1;
@@ -95736,6 +97537,7 @@ SQLITE_PRIVATE void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
 ** indices, you might also think of this module as the "query optimizer".
 */
 
+
 /*
 ** Trace output macros
 */
@@ -95835,6 +97637,11 @@ struct WhereTerm {
 #define TERM_ORINFO     0x10   /* Need to free the WhereTerm.u.pOrInfo object */
 #define TERM_ANDINFO    0x20   /* Need to free the WhereTerm.u.pAndInfo obj */
 #define TERM_OR_OK      0x40   /* Used during OR-clause processing */
+#ifdef SQLITE_ENABLE_STAT2
+#  define TERM_VNULL    0x80   /* Manufactured x>NULL or x<=NULL term */
+#else
+#  define TERM_VNULL    0x00   /* Disabled if not using stat2 */
+#endif
 
 /*
 ** An instance of the following structure holds all information about a
@@ -95928,6 +97735,7 @@ struct WhereCost {
 #define WO_ISNULL 0x080
 #define WO_OR     0x100       /* Two or more OR-connected terms */
 #define WO_AND    0x200       /* Two or more AND-connected terms */
+#define WO_NOOP   0x800       /* This term does not restrict search space */
 
 #define WO_ALL    0xfff       /* Mask of all possible WO_* values */
 #define WO_SINGLE 0x0ff       /* Mask of all non-compound WO_* values */
@@ -96110,7 +97918,7 @@ static void whereSplit(WhereClause *pWC, Expr *pExpr, int op){
 */
 static Bitmask getMask(WhereMaskSet *pMaskSet, int iCursor){
   int i;
-  assert( pMaskSet->n<=sizeof(Bitmask)*8 );
+  assert( pMaskSet->n<=(int)sizeof(Bitmask)*8 );
   for(i=0; i<pMaskSet->n; i++){
     if( pMaskSet->ix[i]==iCursor ){
       return ((Bitmask)1)<<i;
@@ -96778,7 +98586,7 @@ static void exprAnalyzeOrTerm(
       }else{
         sqlite3ExprListDelete(db, pList);
       }
-      pTerm->eOperator = 0;  /* case 1 trumps case 2 */
+      pTerm->eOperator = WO_NOOP;  /* case 1 trumps case 2 */
     }
   }
 }
@@ -97042,6 +98850,47 @@ static void exprAnalyze(
   }
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
 
+#ifdef SQLITE_ENABLE_STAT2
+  /* When sqlite_stat2 histogram data is available an operator of the
+  ** form "x IS NOT NULL" can sometimes be evaluated more efficiently
+  ** as "x>NULL" if x is not an INTEGER PRIMARY KEY.  So construct a
+  ** virtual term of that form.
+  **
+  ** Note that the virtual term must be tagged with TERM_VNULL.  This
+  ** TERM_VNULL tag will suppress the not-null check at the beginning
+  ** of the loop.  Without the TERM_VNULL flag, the not-null check at
+  ** the start of the loop will prevent any results from being returned.
+  */
+  if( pExpr->op==TK_NOTNULL
+   && pExpr->pLeft->op==TK_COLUMN
+   && pExpr->pLeft->iColumn>=0
+  ){
+    Expr *pNewExpr;
+    Expr *pLeft = pExpr->pLeft;
+    int idxNew;
+    WhereTerm *pNewTerm;
+
+    pNewExpr = sqlite3PExpr(pParse, TK_GT,
+                            sqlite3ExprDup(db, pLeft, 0),
+                            sqlite3PExpr(pParse, TK_NULL, 0, 0, 0), 0);
+
+    idxNew = whereClauseInsert(pWC, pNewExpr,
+                              TERM_VIRTUAL|TERM_DYNAMIC|TERM_VNULL);
+    if( idxNew ){
+      pNewTerm = &pWC->a[idxNew];
+      pNewTerm->prereqRight = 0;
+      pNewTerm->leftCursor = pLeft->iTable;
+      pNewTerm->u.leftColumn = pLeft->iColumn;
+      pNewTerm->eOperator = WO_GT;
+      pNewTerm->iParent = idxTerm;
+      pTerm = &pWC->a[idxTerm];
+      pTerm->nChild = 1;
+      pTerm->wtFlags |= TERM_COPIED;
+      pNewTerm->prereqAll = pTerm->prereqAll;
+    }
+  }
+#endif /* SQLITE_ENABLE_STAT2 */
+
   /* Prevent ON clause terms of a LEFT JOIN from being used to drive
   ** an index for tables to the left of the join.
   */
@@ -97094,6 +98943,7 @@ static int isSortingIndex(
   int base,               /* Cursor number for the table to be sorted */
   ExprList *pOrderBy,     /* The ORDER BY clause */
   int nEqCol,             /* Number of index columns with == constraints */
+  int wsFlags,            /* Index usages flags */
   int *pbRev              /* Set to 1 if ORDER BY is DESC */
 ){
   int i, j;                       /* Loop counters */
@@ -97199,11 +99049,14 @@ static int isSortingIndex(
     return 1;
   }
   if( pIdx->onError!=OE_None && i==pIdx->nColumn
+      && (wsFlags & WHERE_COLUMN_NULL)==0
       && !referencesOtherTables(pOrderBy, pMaskSet, j, base) ){
     /* All terms of this index match some prefix of the ORDER BY clause
     ** and the index is UNIQUE and no terms on the tail of the ORDER BY
     ** clause reference other tables in a join.  If this is all true then
-    ** the order by clause is superfluous. */
+    ** the order by clause is superfluous.  Not that if the matching
+    ** condition is IS NULL then the result is not necessarily unique
+    ** even on a UNIQUE index, so disallow those cases. */
     return 1;
   }
   return 0;
@@ -97440,7 +99293,7 @@ static void bestAutomaticIndex(
   pWCEnd = &pWC->a[pWC->nTerm];
   for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
     if( termCanDriveIndex(pTerm, pSrc, notReady) ){
-      WHERETRACE(("auto-index reduces cost from %.2f to %.2f\n",
+      WHERETRACE(("auto-index reduces cost from %.1f to %.1f\n",
                     pCost->rCost, costTempIdx));
       pCost->rCost = costTempIdx;
       pCost->plan.nRow = logN + 1;
@@ -97561,7 +99414,7 @@ static void constructAutomaticIndex(
         idxCols |= cMask;
         pIdx->aiColumn[n] = pTerm->u.leftColumn;
         pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight);
-        pIdx->azColl[n] = pColl->zName;
+        pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : "BINARY";
         n++;
       }
     }
@@ -97919,11 +99772,18 @@ static void bestVirtualIndex(
 /*
 ** Argument pIdx is a pointer to an index structure that has an array of
 ** SQLITE_INDEX_SAMPLES evenly spaced samples of the first indexed column
-** stored in Index.aSample. The domain of values stored in said column
-** may be thought of as divided into (SQLITE_INDEX_SAMPLES+1) regions.
-** Region 0 contains all values smaller than the first sample value. Region
-** 1 contains values larger than or equal to the value of the first sample,
-** but smaller than the value of the second. And so on.
+** stored in Index.aSample. These samples divide the domain of values stored
+** the index into (SQLITE_INDEX_SAMPLES+1) regions.
+** Region 0 contains all values less than the first sample value. Region
+** 1 contains values between the first and second samples.  Region 2 contains
+** values between samples 2 and 3.  And so on.  Region SQLITE_INDEX_SAMPLES
+** contains values larger than the last sample.
+**
+** If the index contains many duplicates of a single value, then it is
+** possible that two or more adjacent samples can hold the same value.
+** When that is the case, the smallest possible region code is returned
+** when roundUp is false and the largest possible region code is returned
+** when roundUp is true.
 **
 ** If successful, this function determines which of the regions value 
 ** pVal lies in, sets *piRegion to the region index (a value between 0
@@ -97936,8 +99796,10 @@ static int whereRangeRegion(
   Parse *pParse,              /* Database connection */
   Index *pIdx,                /* Index to consider domain of */
   sqlite3_value *pVal,        /* Value to consider */
+  int roundUp,                /* Return largest valid region if true */
   int *piRegion               /* OUT: Region of domain in which value lies */
 ){
+  assert( roundUp==0 || roundUp==1 );
   if( ALWAYS(pVal) ){
     IndexSample *aSample = pIdx->aSample;
     int i = 0;
@@ -97947,7 +99809,17 @@ static int whereRangeRegion(
       double r = sqlite3_value_double(pVal);
       for(i=0; i<SQLITE_INDEX_SAMPLES; i++){
         if( aSample[i].eType==SQLITE_NULL ) continue;
-        if( aSample[i].eType>=SQLITE_TEXT || aSample[i].u.r>r ) break;
+        if( aSample[i].eType>=SQLITE_TEXT ) break;
+        if( roundUp ){
+          if( aSample[i].u.r>r ) break;
+        }else{
+          if( aSample[i].u.r>=r ) break;
+        }
+      }
+    }else if( eType==SQLITE_NULL ){
+      i = 0;
+      if( roundUp ){
+        while( i<SQLITE_INDEX_SAMPLES && aSample[i].eType==SQLITE_NULL ) i++;
       }
     }else{ 
       sqlite3 *db = pParse->db;
@@ -97978,7 +99850,7 @@ static int whereRangeRegion(
       n = sqlite3ValueBytes(pVal, pColl->enc);
 
       for(i=0; i<SQLITE_INDEX_SAMPLES; i++){
-        int r;
+        int c;
         int eSampletype = aSample[i].eType;
         if( eSampletype==SQLITE_NULL || eSampletype<eType ) continue;
         if( (eSampletype!=eType) ) break;
@@ -97992,14 +99864,14 @@ static int whereRangeRegion(
             assert( db->mallocFailed );
             return SQLITE_NOMEM;
           }
-          r = pColl->xCmp(pColl->pUser, nSample, zSample, n, z);
+          c = pColl->xCmp(pColl->pUser, nSample, zSample, n, z);
           sqlite3DbFree(db, zSample);
         }else
 #endif
         {
-          r = pColl->xCmp(pColl->pUser, aSample[i].nByte, aSample[i].u.z, n, z);
+          c = pColl->xCmp(pColl->pUser, aSample[i].nByte, aSample[i].u.z, n, z);
         }
-        if( r>0 ) break;
+        if( c-roundUp>=0 ) break;
       }
     }
 
@@ -98082,9 +99954,9 @@ static int valueFromExpr(
 ** constraints.
 **
 ** In the absence of sqlite_stat2 ANALYZE data, each range inequality
-** reduces the search space by 2/3rds.  Hence a single constraint (x>?)
-** results in a return of 33 and a range constraint (x>? AND x<?) results
-** in a return of 11.
+** reduces the search space by 3/4ths.  Hence a single constraint (x>?)
+** results in a return of 25 and a range constraint (x>? AND x<?) results
+** in a return of 6.
 */
 static int whereRangeScanEst(
   Parse *pParse,       /* Parsing & code generating context */
@@ -98104,15 +99976,21 @@ static int whereRangeScanEst(
     int iEst;
     int iLower = 0;
     int iUpper = SQLITE_INDEX_SAMPLES;
+    int roundUpUpper = 0;
+    int roundUpLower = 0;
     u8 aff = p->pTable->aCol[p->aiColumn[0]].affinity;
 
     if( pLower ){
       Expr *pExpr = pLower->pExpr->pRight;
       rc = valueFromExpr(pParse, pExpr, aff, &pLowerVal);
+      assert( pLower->eOperator==WO_GT || pLower->eOperator==WO_GE );
+      roundUpLower = (pLower->eOperator==WO_GT) ?1:0;
     }
     if( rc==SQLITE_OK && pUpper ){
       Expr *pExpr = pUpper->pExpr->pRight;
       rc = valueFromExpr(pParse, pExpr, aff, &pUpperVal);
+      assert( pUpper->eOperator==WO_LT || pUpper->eOperator==WO_LE );
+      roundUpUpper = (pUpper->eOperator==WO_LE) ?1:0;
     }
 
     if( rc!=SQLITE_OK || (pLowerVal==0 && pUpperVal==0) ){
@@ -98120,28 +99998,29 @@ static int whereRangeScanEst(
       sqlite3ValueFree(pUpperVal);
       goto range_est_fallback;
     }else if( pLowerVal==0 ){
-      rc = whereRangeRegion(pParse, p, pUpperVal, &iUpper);
+      rc = whereRangeRegion(pParse, p, pUpperVal, roundUpUpper, &iUpper);
       if( pLower ) iLower = iUpper/2;
     }else if( pUpperVal==0 ){
-      rc = whereRangeRegion(pParse, p, pLowerVal, &iLower);
+      rc = whereRangeRegion(pParse, p, pLowerVal, roundUpLower, &iLower);
       if( pUpper ) iUpper = (iLower + SQLITE_INDEX_SAMPLES + 1)/2;
     }else{
-      rc = whereRangeRegion(pParse, p, pUpperVal, &iUpper);
+      rc = whereRangeRegion(pParse, p, pUpperVal, roundUpUpper, &iUpper);
       if( rc==SQLITE_OK ){
-        rc = whereRangeRegion(pParse, p, pLowerVal, &iLower);
+        rc = whereRangeRegion(pParse, p, pLowerVal, roundUpLower, &iLower);
       }
     }
+    WHERETRACE(("range scan regions: %d..%d\n", iLower, iUpper));
 
     iEst = iUpper - iLower;
     testcase( iEst==SQLITE_INDEX_SAMPLES );
     assert( iEst<=SQLITE_INDEX_SAMPLES );
     if( iEst<1 ){
-      iEst = 1;
+      *piEst = 50/SQLITE_INDEX_SAMPLES;
+    }else{
+      *piEst = (iEst*100)/SQLITE_INDEX_SAMPLES;
     }
-
     sqlite3ValueFree(pLowerVal);
     sqlite3ValueFree(pUpperVal);
-    *piEst = (iEst * 100)/SQLITE_INDEX_SAMPLES;
     return rc;
   }
 range_est_fallback:
@@ -98151,22 +100030,156 @@ range_est_fallback:
   UNUSED_PARAMETER(nEq);
 #endif
   assert( pLower || pUpper );
-  if( pLower && pUpper ){
-    *piEst = 11;
+  *piEst = 100;
+  if( pLower && (pLower->wtFlags & TERM_VNULL)==0 ) *piEst /= 4;
+  if( pUpper ) *piEst /= 4;
+  return rc;
+}
+
+#ifdef SQLITE_ENABLE_STAT2
+/*
+** Estimate the number of rows that will be returned based on
+** an equality constraint x=VALUE and where that VALUE occurs in
+** the histogram data.  This only works when x is the left-most
+** column of an index and sqlite_stat2 histogram data is available
+** for that index.  When pExpr==NULL that means the constraint is
+** "x IS NULL" instead of "x=VALUE".
+**
+** Write the estimated row count into *pnRow and return SQLITE_OK. 
+** If unable to make an estimate, leave *pnRow unchanged and return
+** non-zero.
+**
+** This routine can fail if it is unable to load a collating sequence
+** required for string comparison, or if unable to allocate memory
+** for a UTF conversion required for comparison.  The error is stored
+** in the pParse structure.
+*/
+static int whereEqualScanEst(
+  Parse *pParse,       /* Parsing & code generating context */
+  Index *p,            /* The index whose left-most column is pTerm */
+  Expr *pExpr,         /* Expression for VALUE in the x=VALUE constraint */
+  double *pnRow        /* Write the revised row estimate here */
+){
+  sqlite3_value *pRhs = 0;  /* VALUE on right-hand side of pTerm */
+  int iLower, iUpper;       /* Range of histogram regions containing pRhs */
+  u8 aff;                   /* Column affinity */
+  int rc;                   /* Subfunction return code */
+  double nRowEst;           /* New estimate of the number of rows */
+
+  assert( p->aSample!=0 );
+  aff = p->pTable->aCol[p->aiColumn[0]].affinity;
+  if( pExpr ){
+    rc = valueFromExpr(pParse, pExpr, aff, &pRhs);
+    if( rc ) goto whereEqualScanEst_cancel;
+  }else{
+    pRhs = sqlite3ValueNew(pParse->db);
+  }
+  if( pRhs==0 ) return SQLITE_NOTFOUND;
+  rc = whereRangeRegion(pParse, p, pRhs, 0, &iLower);
+  if( rc ) goto whereEqualScanEst_cancel;
+  rc = whereRangeRegion(pParse, p, pRhs, 1, &iUpper);
+  if( rc ) goto whereEqualScanEst_cancel;
+  WHERETRACE(("equality scan regions: %d..%d\n", iLower, iUpper));
+  if( iLower>=iUpper ){
+    nRowEst = p->aiRowEst[0]/(SQLITE_INDEX_SAMPLES*2);
+    if( nRowEst<*pnRow ) *pnRow = nRowEst;
   }else{
-    *piEst = 33;
+    nRowEst = (iUpper-iLower)*p->aiRowEst[0]/SQLITE_INDEX_SAMPLES;
+    *pnRow = nRowEst;
+  }
+
+whereEqualScanEst_cancel:
+  sqlite3ValueFree(pRhs);
+  return rc;
+}
+#endif /* defined(SQLITE_ENABLE_STAT2) */
+
+#ifdef SQLITE_ENABLE_STAT2
+/*
+** Estimate the number of rows that will be returned based on
+** an IN constraint where the right-hand side of the IN operator
+** is a list of values.  Example:
+**
+**        WHERE x IN (1,2,3,4)
+**
+** Write the estimated row count into *pnRow and return SQLITE_OK. 
+** If unable to make an estimate, leave *pnRow unchanged and return
+** non-zero.
+**
+** This routine can fail if it is unable to load a collating sequence
+** required for string comparison, or if unable to allocate memory
+** for a UTF conversion required for comparison.  The error is stored
+** in the pParse structure.
+*/
+static int whereInScanEst(
+  Parse *pParse,       /* Parsing & code generating context */
+  Index *p,            /* The index whose left-most column is pTerm */
+  ExprList *pList,     /* The value list on the RHS of "x IN (v1,v2,v3,...)" */
+  double *pnRow        /* Write the revised row estimate here */
+){
+  sqlite3_value *pVal = 0;  /* One value from list */
+  int iLower, iUpper;       /* Range of histogram regions containing pRhs */
+  u8 aff;                   /* Column affinity */
+  int rc = SQLITE_OK;       /* Subfunction return code */
+  double nRowEst;           /* New estimate of the number of rows */
+  int nSpan = 0;            /* Number of histogram regions spanned */
+  int nSingle = 0;          /* Histogram regions hit by a single value */
+  int nNotFound = 0;        /* Count of values that are not constants */
+  int i;                               /* Loop counter */
+  u8 aSpan[SQLITE_INDEX_SAMPLES+1];    /* Histogram regions that are spanned */
+  u8 aSingle[SQLITE_INDEX_SAMPLES+1];  /* Histogram regions hit once */
+
+  assert( p->aSample!=0 );
+  aff = p->pTable->aCol[p->aiColumn[0]].affinity;
+  memset(aSpan, 0, sizeof(aSpan));
+  memset(aSingle, 0, sizeof(aSingle));
+  for(i=0; i<pList->nExpr; i++){
+    sqlite3ValueFree(pVal);
+    rc = valueFromExpr(pParse, pList->a[i].pExpr, aff, &pVal);
+    if( rc ) break;
+    if( pVal==0 || sqlite3_value_type(pVal)==SQLITE_NULL ){
+      nNotFound++;
+      continue;
+    }
+    rc = whereRangeRegion(pParse, p, pVal, 0, &iLower);
+    if( rc ) break;
+    rc = whereRangeRegion(pParse, p, pVal, 1, &iUpper);
+    if( rc ) break;
+    if( iLower>=iUpper ){
+      aSingle[iLower] = 1;
+    }else{
+      assert( iLower>=0 && iUpper<=SQLITE_INDEX_SAMPLES );
+      while( iLower<iUpper ) aSpan[iLower++] = 1;
+    }
   }
+  if( rc==SQLITE_OK ){
+    for(i=nSpan=0; i<=SQLITE_INDEX_SAMPLES; i++){
+      if( aSpan[i] ){
+        nSpan++;
+      }else if( aSingle[i] ){
+        nSingle++;
+      }
+    }
+    nRowEst = (nSpan*2+nSingle)*p->aiRowEst[0]/(2*SQLITE_INDEX_SAMPLES)
+               + nNotFound*p->aiRowEst[1];
+    if( nRowEst > p->aiRowEst[0] ) nRowEst = p->aiRowEst[0];
+    *pnRow = nRowEst;
+    WHERETRACE(("IN row estimate: nSpan=%d, nSingle=%d, nNotFound=%d, est=%g\n",
+                 nSpan, nSingle, nNotFound, nRowEst));
+  }
+  sqlite3ValueFree(pVal);
   return rc;
 }
+#endif /* defined(SQLITE_ENABLE_STAT2) */
 
 
 /*
-** Find the query plan for accessing a particular table.  Write the
+** Find the best query plan for accessing a particular table.  Write the
 ** best query plan and its cost into the WhereCost object supplied as the
 ** last parameter.
 **
 ** The lowest cost plan wins.  The cost is an estimate of the amount of
-** CPU and disk I/O need to process the request using the selected plan.
+** CPU and disk I/O needed to process the requested result.
 ** Factors that influence cost include:
 **
 **    *  The estimated number of rows that will be retrieved.  (The
@@ -98185,7 +100198,7 @@ range_est_fallback:
 **
 ** If a NOT INDEXED clause (pSrc->notIndexed!=0) was attached to the table 
 ** in the SELECT statement, then no indexes are considered. However, the 
-** selected plan may still take advantage of the tables built-in rowid
+** selected plan may still take advantage of the built-in rowid primary key
 ** index.
 */
 static void bestBtreeIndex(
@@ -98228,9 +100241,11 @@ static void bestBtreeIndex(
     wsFlagMask = ~(WHERE_ROWID_EQ|WHERE_ROWID_RANGE);
     eqTermMask = idxEqTermMask;
   }else{
-    /* There is no INDEXED BY clause.  Create a fake Index object to
-    ** represent the primary key */
-    Index *pFirst;                /* Any other index on the table */
+    /* There is no INDEXED BY clause.  Create a fake Index object in local
+    ** variable sPk to represent the rowid primary key index.  Make this
+    ** fake index the first in a chain of Index objects with all of the real
+    ** indices to follow */
+    Index *pFirst;                  /* First of real indices on the table */
     memset(&sPk, 0, sizeof(Index));
     sPk.nColumn = 1;
     sPk.aiColumn = &aiColumnPk;
@@ -98241,6 +100256,8 @@ static void bestBtreeIndex(
     aiRowEstPk[1] = 1;
     pFirst = pSrc->pTab->pIndex;
     if( pSrc->notIndexed==0 ){
+      /* The real indices of the table are only considered if the
+      ** NOT INDEXED qualifier is omitted from the FROM clause */
       sPk.pNext = pFirst;
     }
     pProbe = &sPk;
@@ -98257,16 +100274,19 @@ static void bestBtreeIndex(
     const unsigned int * const aiRowEst = pProbe->aiRowEst;
     double cost;                /* Cost of using pProbe */
     double nRow;                /* Estimated number of rows in result set */
+    double log10N;              /* base-10 logarithm of nRow (inexact) */
     int rev;                    /* True to scan in reverse order */
     int wsFlags = 0;
     Bitmask used = 0;
 
     /* The following variables are populated based on the properties of
-    ** scan being evaluated. They are then used to determine the expected
+    ** index being evaluated. They are then used to determine the expected
     ** cost and number of rows returned.
     **
     **  nEq: 
     **    Number of equality terms that can be implemented using the index.
+    **    In other words, the number of initial fields in the index that
+    **    are used in == or IN or NOT NULL constraints of the WHERE clause.
     **
     **  nInMul:  
     **    The "in-multiplier". This is an estimate of how many seek operations 
@@ -98290,7 +100310,9 @@ static void bestBtreeIndex(
     **
     **  bInEst:  
     **    Set to true if there was at least one "x IN (SELECT ...)" term used 
-    **    in determining the value of nInMul.
+    **    in determining the value of nInMul.  Note that the RHS of the
+    **    IN operator must be a SELECT, not a value list, for this variable
+    **    to be true.
     **
     **  estBound:
     **    An estimate on the amount of the table that must be searched.  A
@@ -98298,8 +100320,8 @@ static void bestBtreeIndex(
     **    might reduce this to a value less than 100 to indicate that only
     **    a fraction of the table needs searching.  In the absence of
     **    sqlite_stat2 ANALYZE data, a single inequality reduces the search
-    **    space to 1/3rd its original size.  So an x>? constraint reduces
-    **    estBound to 33.  Two constraints (x>? AND x<?) reduce estBound to 11.
+    **    space to 1/4rd its original size.  So an x>? constraint reduces
+    **    estBound to 25.  Two constraints (x>? AND x<?) reduce estBound to 6.
     **
     **  bSort:   
     **    Boolean. True if there is an ORDER BY clause that will require an 
@@ -98307,25 +100329,31 @@ static void bestBtreeIndex(
     **    correctly order records).
     **
     **  bLookup: 
-    **    Boolean. True if for each index entry visited a lookup on the 
-    **    corresponding table b-tree is required. This is always false 
-    **    for the rowid index. For other indexes, it is true unless all the 
-    **    columns of the table used by the SELECT statement are present in 
-    **    the index (such an index is sometimes described as a covering index).
+    **    Boolean. True if a table lookup is required for each index entry
+    **    visited.  In other words, true if this is not a covering index.
+    **    This is always false for the rowid primary key index of a table.
+    **    For other indexes, it is true unless all the columns of the table
+    **    used by the SELECT statement are present in the index (such an
+    **    index is sometimes described as a covering index).
     **    For example, given the index on (a, b), the second of the following 
-    **    two queries requires table b-tree lookups, but the first does not.
+    **    two queries requires table b-tree lookups in order to find the value
+    **    of column c, but the first does not because columns a and b are
+    **    both available in the index.
     **
     **             SELECT a, b    FROM tbl WHERE a = 1;
     **             SELECT a, b, c FROM tbl WHERE a = 1;
     */
-    int nEq;
-    int bInEst = 0;
-    int nInMul = 1;
-    int estBound = 100;
-    int nBound = 0;             /* Number of range constraints seen */
-    int bSort = 0;
-    int bLookup = 0;
-    WhereTerm *pTerm;           /* A single term of the WHERE clause */
+    int nEq;                      /* Number of == or IN terms matching index */
+    int bInEst = 0;               /* True if "x IN (SELECT...)" seen */
+    int nInMul = 1;               /* Number of distinct equalities to lookup */
+    int estBound = 100;           /* Estimated reduction in search space */
+    int nBound = 0;               /* Number of range constraints seen */
+    int bSort = 0;                /* True if external sort required */
+    int bLookup = 0;              /* True if not a covering index */
+    WhereTerm *pTerm;             /* A single term of the WHERE clause */
+#ifdef SQLITE_ENABLE_STAT2
+    WhereTerm *pFirstTerm = 0;    /* First term matching the index */
+#endif
 
     /* Determine the values of nEq and nInMul */
     for(nEq=0; nEq<pProbe->nColumn; nEq++){
@@ -98337,19 +100365,24 @@ static void bestBtreeIndex(
         Expr *pExpr = pTerm->pExpr;
         wsFlags |= WHERE_COLUMN_IN;
         if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+          /* "x IN (SELECT ...)":  Assume the SELECT returns 25 rows */
           nInMul *= 25;
           bInEst = 1;
-        }else if( ALWAYS(pExpr->x.pList) ){
-          nInMul *= pExpr->x.pList->nExpr + 1;
+        }else if( ALWAYS(pExpr->x.pList && pExpr->x.pList->nExpr) ){
+          /* "x IN (value, value, ...)" */
+          nInMul *= pExpr->x.pList->nExpr;
         }
       }else if( pTerm->eOperator & WO_ISNULL ){
         wsFlags |= WHERE_COLUMN_NULL;
       }
+#ifdef SQLITE_ENABLE_STAT2
+      if( nEq==0 && pProbe->aSample ) pFirstTerm = pTerm;
+#endif
       used |= pTerm->prereqRight;
     }
 
     /* Determine the value of estBound. */
-    if( nEq<pProbe->nColumn ){
+    if( nEq<pProbe->nColumn && pProbe->bUnordered==0 ){
       int j = pProbe->aiColumn[nEq];
       if( findTerm(pWC, iCur, j, notReady, WO_LT|WO_LE|WO_GT|WO_GE, pIdx) ){
         WhereTerm *pTop = findTerm(pWC, iCur, j, notReady, WO_LT|WO_LE, pIdx);
@@ -98380,8 +100413,10 @@ static void bestBtreeIndex(
     ** in wsFlags. Otherwise, if there is an ORDER BY clause but the index
     ** will scan rows in a different order, set the bSort variable.  */
     if( pOrderBy ){
-      if( (wsFlags & (WHERE_COLUMN_IN|WHERE_COLUMN_NULL))==0
-        && isSortingIndex(pParse,pWC->pMaskSet,pProbe,iCur,pOrderBy,nEq,&rev)
+      if( (wsFlags & WHERE_COLUMN_IN)==0
+        && pProbe->bUnordered==0
+        && isSortingIndex(pParse, pWC->pMaskSet, pProbe, iCur, pOrderBy,
+                          nEq, wsFlags, &rev)
       ){
         wsFlags |= WHERE_ROWID_RANGE|WHERE_COLUMN_RANGE|WHERE_ORDERBY;
         wsFlags |= (rev ? WHERE_REVERSE : 0);
@@ -98412,8 +100447,8 @@ static void bestBtreeIndex(
     }
 
     /*
-    ** Estimate the number of rows of output.  For an IN operator,
-    ** do not let the estimate exceed half the rows in the table.
+    ** Estimate the number of rows of output.  For an "x IN (SELECT...)"
+    ** constraint, do not let the estimate exceed half the rows in the table.
     */
     nRow = (double)(aiRowEst[nEq] * nInMul);
     if( bInEst && nRow*2>aiRowEst[0] ){
@@ -98421,31 +100456,90 @@ static void bestBtreeIndex(
       nInMul = (int)(nRow / aiRowEst[nEq]);
     }
 
-    /* Assume constant cost to access a row and logarithmic cost to
-    ** do a binary search.  Hence, the initial cost is the number of output
-    ** rows plus log2(table-size) times the number of binary searches.
+#ifdef SQLITE_ENABLE_STAT2
+    /* If the constraint is of the form x=VALUE and histogram
+    ** data is available for column x, then it might be possible
+    ** to get a better estimate on the number of rows based on
+    ** VALUE and how common that value is according to the histogram.
     */
-    cost = nRow + nInMul*estLog(aiRowEst[0]);
+    if( nRow>(double)1 && nEq==1 && pFirstTerm!=0 ){
+      if( pFirstTerm->eOperator & (WO_EQ|WO_ISNULL) ){
+        testcase( pFirstTerm->eOperator==WO_EQ );
+        testcase( pFirstTerm->eOperator==WO_ISNULL );
+        whereEqualScanEst(pParse, pProbe, pFirstTerm->pExpr->pRight, &nRow);
+      }else if( pFirstTerm->eOperator==WO_IN && bInEst==0 ){
+        whereInScanEst(pParse, pProbe, pFirstTerm->pExpr->x.pList, &nRow);
+      }
+    }
+#endif /* SQLITE_ENABLE_STAT2 */
 
-    /* Adjust the number of rows and the cost downward to reflect rows
+    /* Adjust the number of output rows and downward to reflect rows
     ** that are excluded by range constraints.
     */
     nRow = (nRow * (double)estBound) / (double)100;
-    cost = (cost * (double)estBound) / (double)100;
-
-    /* Add in the estimated cost of sorting the result
+    if( nRow<1 ) nRow = 1;
+
+    /* Experiments run on real SQLite databases show that the time needed
+    ** to do a binary search to locate a row in a table or index is roughly
+    ** log10(N) times the time to move from one row to the next row within
+    ** a table or index.  The actual times can vary, with the size of
+    ** records being an important factor.  Both moves and searches are
+    ** slower with larger records, presumably because fewer records fit
+    ** on one page and hence more pages have to be fetched.
+    **
+    ** The ANALYZE command and the sqlite_stat1 and sqlite_stat2 tables do
+    ** not give us data on the relative sizes of table and index records.
+    ** So this computation assumes table records are about twice as big
+    ** as index records
     */
-    if( bSort ){
-      cost += cost*estLog(cost);
+    if( (wsFlags & WHERE_NOT_FULLSCAN)==0 ){
+      /* The cost of a full table scan is a number of move operations equal
+      ** to the number of rows in the table.
+      **
+      ** We add an additional 4x penalty to full table scans.  This causes
+      ** the cost function to err on the side of choosing an index over
+      ** choosing a full scan.  This 4x full-scan penalty is an arguable
+      ** decision and one which we expect to revisit in the future.  But
+      ** it seems to be working well enough at the moment.
+      */
+      cost = aiRowEst[0]*4;
+    }else{
+      log10N = estLog(aiRowEst[0]);
+      cost = nRow;
+      if( pIdx ){
+        if( bLookup ){
+          /* For an index lookup followed by a table lookup:
+          **    nInMul index searches to find the start of each index range
+          **  + nRow steps through the index
+          **  + nRow table searches to lookup the table entry using the rowid
+          */
+          cost += (nInMul + nRow)*log10N;
+        }else{
+          /* For a covering index:
+          **     nInMul index searches to find the initial entry 
+          **   + nRow steps through the index
+          */
+          cost += nInMul*log10N;
+        }
+      }else{
+        /* For a rowid primary key lookup:
+        **    nInMult table searches to find the initial entry for each range
+        **  + nRow steps through the table
+        */
+        cost += nInMul*log10N;
+      }
     }
 
-    /* If all information can be taken directly from the index, we avoid
-    ** doing table lookups.  This reduces the cost by half.  (Not really -
-    ** this needs to be fixed.)
+    /* Add in the estimated cost of sorting the result.  Actual experimental
+    ** measurements of sorting performance in SQLite show that sorting time
+    ** adds C*N*log10(N) to the cost, where N is the number of rows to be 
+    ** sorted and C is a factor between 1.95 and 4.3.  We will split the
+    ** difference and select C of 3.0.
     */
-    if( pIdx && bLookup==0 ){
-      cost /= (double)2;
+    if( bSort ){
+      cost += nRow*estLog(nRow)*3;
     }
+
     /**** Cost of using this index has now been computed ****/
 
     /* If there are additional constraints on this table that cannot
@@ -98486,15 +100580,19 @@ static void bestBtreeIndex(
           }
         }else if( pTerm->eOperator & (WO_LT|WO_LE|WO_GT|WO_GE) ){
           if( nSkipRange ){
-            /* Ignore the first nBound range constraints since the index
+            /* Ignore the first nSkipRange range constraints since the index
             ** has already accounted for these */
             nSkipRange--;
           }else{
             /* Assume each additional range constraint reduces the result
-            ** set size by a factor of 3 */
+            ** set size by a factor of 3.  Indexed range constraints reduce
+            ** the search space by a larger factor: 4.  We make indexed range
+            ** more selective intentionally because of the subjective 
+            ** observation that indexed range constraints really are more
+            ** selective in practice, on average. */
             nRow /= 3;
           }
-        }else{
+        }else if( pTerm->eOperator!=WO_NOOP ){
           /* Any other expression lowers the output row count by half */
           nRow /= 2;
         }
@@ -98505,10 +100603,10 @@ static void bestBtreeIndex(
 
     WHERETRACE((
       "%s(%s): nEq=%d nInMul=%d estBound=%d bSort=%d bLookup=%d wsFlags=0x%x\n"
-      "         notReady=0x%llx nRow=%.2f cost=%.2f used=0x%llx\n",
+      "         notReady=0x%llx log10N=%.1f nRow=%.1f cost=%.1f used=0x%llx\n",
       pSrc->pTab->zName, (pIdx ? pIdx->zName : "ipk"), 
       nEq, nInMul, estBound, bSort, bLookup, wsFlags,
-      notReady, nRow, cost, used
+      notReady, log10N, nRow, cost, used
     ));
 
     /* If this index is the best we have seen so far, then record this
@@ -99332,7 +101430,9 @@ static Bitmask codeOneLoopStart(
     if( pRangeStart ){
       Expr *pRight = pRangeStart->pExpr->pRight;
       sqlite3ExprCode(pParse, pRight, regBase+nEq);
-      sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
+      if( (pRangeStart->wtFlags & TERM_VNULL)==0 ){
+        sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
+      }
       if( zStartAff ){
         if( sqlite3CompareAffinity(pRight, zStartAff[nEq])==SQLITE_AFF_NONE){
           /* Since the comparison is to be performed with no conversions
@@ -99371,7 +101471,9 @@ static Bitmask codeOneLoopStart(
       Expr *pRight = pRangeEnd->pExpr->pRight;
       sqlite3ExprCacheRemove(pParse, regBase+nEq, 1);
       sqlite3ExprCode(pParse, pRight, regBase+nEq);
-      sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
+      if( (pRangeEnd->wtFlags & TERM_VNULL)==0 ){
+        sqlite3ExprCodeIsNullJump(v, pRight, regBase+nEq, addrNxt);
+      }
       if( zEndAff ){
         if( sqlite3CompareAffinity(pRight, zEndAff[nEq])==SQLITE_AFF_NONE){
           /* Since the comparison is to be performed with no conversions
@@ -99429,7 +101531,13 @@ static Bitmask codeOneLoopStart(
     /* Record the instruction used to terminate the loop. Disable 
     ** WHERE clause terms made redundant by the index range scan.
     */
-    pLevel->op = bRev ? OP_Prev : OP_Next;
+    if( pLevel->plan.wsFlags & WHERE_UNIQUE ){
+      pLevel->op = OP_Noop;
+    }else if( bRev ){
+      pLevel->op = OP_Prev;
+    }else{
+      pLevel->op = OP_Next;
+    }
     pLevel->p1 = iIdxCur;
   }else
 
@@ -99475,7 +101583,6 @@ static Bitmask codeOneLoopStart(
     **
     */
     WhereClause *pOrWc;    /* The OR-clause broken out into subterms */
-    WhereTerm *pFinal;     /* Final subterm within the OR-clause. */
     SrcList *pOrTab;       /* Shortened table list or OR-clause generation */
 
     int regReturn = ++pParse->nMem;           /* Register used with OP_Gosub */
@@ -99491,7 +101598,6 @@ static Bitmask codeOneLoopStart(
     assert( pTerm->eOperator==WO_OR );
     assert( (pTerm->wtFlags & TERM_ORINFO)!=0 );
     pOrWc = &pTerm->u.pOrInfo->wc;
-    pFinal = &pOrWc->a[pOrWc->nTerm-1];
     pLevel->op = OP_Return;
     pLevel->p1 = regReturn;
 
@@ -99600,7 +101706,6 @@ static Bitmask codeOneLoopStart(
   ** the use of indices become tests that are evaluated against each row of
   ** the relevant input tables.
   */
-  k = 0;
   for(pTerm=pWC->a, j=pWC->nTerm; j>0; j--, pTerm++){
     Expr *pE;
     testcase( pTerm->wtFlags & TERM_VIRTUAL ); /* IMP: R-30575-11662 */
@@ -99618,7 +101723,6 @@ static Bitmask codeOneLoopStart(
       continue;
     }
     sqlite3ExprIfFalse(pParse, pE, addrCont, SQLITE_JUMPIFNULL);
-    k = 1;
     pTerm->wtFlags |= TERM_CODED;
   }
 
@@ -99926,8 +102030,6 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
   ** clause.
   */
   notReady = ~(Bitmask)0;
-  pTabItem = pTabList->a;
-  pLevel = pWInfo->a;
   andFlags = ~0;
   WHERETRACE(("*** Optimizer Start ***\n"));
   for(i=iFrom=0, pLevel=pWInfo->a; i<nTabList; i++, pLevel++){
@@ -100038,8 +102140,8 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
         **   (1) The table must not depend on other tables that have not
         **       yet run.
         **
-        **   (2) A full-table-scan plan cannot supercede another plan unless
-        **       it is an "optimal" plan as defined above.
+        **   (2) A full-table-scan plan cannot supercede indexed plan unless
+        **       the full-table-scan is an "optimal" plan as defined above.
         **
         **   (3) All tables have an INDEXED BY clause or this table lacks an
         **       INDEXED BY clause or this table uses the specific
@@ -100055,6 +102157,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
         */
         if( (sCost.used¬Ready)==0                       /* (1) */
             && (bestJ<0 || (notIndexed&m)!=0               /* (2) */
+                || (bestPlan.plan.wsFlags & WHERE_NOT_FULLSCAN)==0
                 || (sCost.plan.wsFlags & WHERE_NOT_FULLSCAN)!=0)
             && (nUnconstrained==0 || pTabItem->pIndex==0   /* (3) */
                 || NEVER((sCost.plan.wsFlags & WHERE_NOT_FULLSCAN)!=0))
@@ -105382,6 +107485,13 @@ SQLITE_API int sqlite3_config(int op, ...){
       sqlite3GlobalConfig.nHeap = va_arg(ap, int);
       sqlite3GlobalConfig.mnReq = va_arg(ap, int);
 
+      if( sqlite3GlobalConfig.mnReq<1 ){
+        sqlite3GlobalConfig.mnReq = 1;
+      }else if( sqlite3GlobalConfig.mnReq>(1<<12) ){
+        /* cap min request size at 2^12 */
+        sqlite3GlobalConfig.mnReq = (1<<12);
+      }
+
       if( sqlite3GlobalConfig.pHeap==0 ){
         /* If the heap pointer is NULL, then restore the malloc implementation
         ** back to NULL pointers too.  This will cause the malloc to go
@@ -105515,14 +107625,42 @@ SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
   va_start(ap, op);
   switch( op ){
     case SQLITE_DBCONFIG_LOOKASIDE: {
-      void *pBuf = va_arg(ap, void*); /* IMP: R-21112-12275 */
+      void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
       int sz = va_arg(ap, int);       /* IMP: R-47871-25994 */
       int cnt = va_arg(ap, int);      /* IMP: R-04460-53386 */
       rc = setupLookaside(db, pBuf, sz, cnt);
       break;
     }
     default: {
+      static const struct {
+        int op;      /* The opcode */
+        u32 mask;    /* Mask of the bit in sqlite3.flags to set/clear */
+      } aFlagOp[] = {
+        { SQLITE_DBCONFIG_ENABLE_FKEY,    SQLITE_ForeignKeys    },
+        { SQLITE_DBCONFIG_ENABLE_TRIGGER, SQLITE_EnableTrigger  },
+      };
+      unsigned int i;
       rc = SQLITE_ERROR; /* IMP: R-42790-23372 */
+      for(i=0; i<ArraySize(aFlagOp); i++){
+        if( aFlagOp[i].op==op ){
+          int onoff = va_arg(ap, int);
+          int *pRes = va_arg(ap, int*);
+          int oldFlags = db->flags;
+          if( onoff>0 ){
+            db->flags |= aFlagOp[i].mask;
+          }else if( onoff==0 ){
+            db->flags &= ~aFlagOp[i].mask;
+          }
+          if( oldFlags!=db->flags ){
+            sqlite3ExpirePreparedStatements(db);
+          }
+          if( pRes ){
+            *pRes = (db->flags & aFlagOp[i].mask)!=0;
+          }
+          rc = SQLITE_OK;
+          break;
+        }
+      }
       break;
     }
   }
@@ -105659,7 +107797,8 @@ SQLITE_API int sqlite3_close(sqlite3 *db){
   }
   sqlite3_mutex_enter(db->mutex);
 
-  sqlite3ResetInternalSchema(db, 0);
+  /* Force xDestroy calls on all virtual tables */
+  sqlite3ResetInternalSchema(db, -1);
 
   /* If a transaction is open, the ResetInternalSchema() call above
   ** will not have called the xDisconnect() method on any virtual
@@ -105702,7 +107841,7 @@ SQLITE_API int sqlite3_close(sqlite3 *db){
       }
     }
   }
-  sqlite3ResetInternalSchema(db, 0);
+  sqlite3ResetInternalSchema(db, -1);
 
   /* Tell the code in notify.c that the connection no longer holds any
   ** locks and does not require any further unlock-notify callbacks.
@@ -105793,7 +107932,7 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db){
 
   if( db->flags&SQLITE_InternChanges ){
     sqlite3ExpirePreparedStatements(db);
-    sqlite3ResetInternalSchema(db, 0);
+    sqlite3ResetInternalSchema(db, -1);
   }
 
   /* Any deferred constraint violations have now been resolved. */
@@ -105862,7 +108001,7 @@ static int sqliteDefaultBusyCallback(
      { 1, 2, 5, 10, 15, 20, 25, 25,  25,  50,  50, 100 };
   static const u8 totals[] =
      { 0, 1, 3,  8, 18, 33, 53, 78, 103, 128, 178, 228 };
-# define NDELAY (sizeof(delays)/sizeof(delays[0]))
+# define NDELAY ArraySize(delays)
   sqlite3 *db = (sqlite3 *)ptr;
   int timeout = db->busyTimeout;
   int delay, prior;
@@ -106347,19 +108486,33 @@ SQLITE_API void *sqlite3_wal_hook(
 #endif
 }
 
-
 /*
-** Checkpoint database zDb. If zDb is NULL, or if the buffer zDb points
-** to contains a zero-length string, all attached databases are 
-** checkpointed.
+** Checkpoint database zDb.
 */
-SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
+SQLITE_API int sqlite3_wal_checkpoint_v2(
+  sqlite3 *db,                    /* Database handle */
+  const char *zDb,                /* Name of attached database (or NULL) */
+  int eMode,                      /* SQLITE_CHECKPOINT_* value */
+  int *pnLog,                     /* OUT: Size of WAL log in frames */
+  int *pnCkpt                     /* OUT: Total number of frames checkpointed */
+){
 #ifdef SQLITE_OMIT_WAL
   return SQLITE_OK;
 #else
   int rc;                         /* Return code */
   int iDb = SQLITE_MAX_ATTACHED;  /* sqlite3.aDb[] index of db to checkpoint */
 
+  /* Initialize the output variables to -1 in case an error occurs. */
+  if( pnLog ) *pnLog = -1;
+  if( pnCkpt ) *pnCkpt = -1;
+
+  assert( SQLITE_CHECKPOINT_FULL>SQLITE_CHECKPOINT_PASSIVE );
+  assert( SQLITE_CHECKPOINT_FULL<SQLITE_CHECKPOINT_RESTART );
+  assert( SQLITE_CHECKPOINT_PASSIVE+2==SQLITE_CHECKPOINT_RESTART );
+  if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_RESTART ){
+    return SQLITE_MISUSE;
+  }
+
   sqlite3_mutex_enter(db->mutex);
   if( zDb && zDb[0] ){
     iDb = sqlite3FindDbName(db, zDb);
@@ -106368,7 +108521,7 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
     rc = SQLITE_ERROR;
     sqlite3Error(db, SQLITE_ERROR, "unknown database: %s", zDb);
   }else{
-    rc = sqlite3Checkpoint(db, iDb);
+    rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt);
     sqlite3Error(db, rc, 0);
   }
   rc = sqlite3ApiExit(db, rc);
@@ -106377,6 +108530,16 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
 #endif
 }
 
+
+/*
+** Checkpoint database zDb. If zDb is NULL, or if the buffer zDb points
+** to contains a zero-length string, all attached databases are 
+** checkpointed.
+*/
+SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
+  return sqlite3_wal_checkpoint_v2(db, zDb, SQLITE_CHECKPOINT_PASSIVE, 0, 0);
+}
+
 #ifndef SQLITE_OMIT_WAL
 /*
 ** Run a checkpoint on database iDb. This is a no-op if database iDb is
@@ -106394,20 +108557,31 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
 ** If iDb is passed SQLITE_MAX_ATTACHED, then all attached databases are
 ** checkpointed. If an error is encountered it is returned immediately -
 ** no attempt is made to checkpoint any remaining databases.
+**
+** Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
 */
-SQLITE_PRIVATE int sqlite3Checkpoint(sqlite3 *db, int iDb){
+SQLITE_PRIVATE int sqlite3Checkpoint(sqlite3 *db, int iDb, int eMode, int *pnLog, int *pnCkpt){
   int rc = SQLITE_OK;             /* Return code */
   int i;                          /* Used to iterate through attached dbs */
+  int bBusy = 0;                  /* True if SQLITE_BUSY has been encountered */
 
   assert( sqlite3_mutex_held(db->mutex) );
+  assert( !pnLog || *pnLog==-1 );
+  assert( !pnCkpt || *pnCkpt==-1 );
 
   for(i=0; i<db->nDb && rc==SQLITE_OK; i++){
     if( i==iDb || iDb==SQLITE_MAX_ATTACHED ){
-      rc = sqlite3BtreeCheckpoint(db->aDb[i].pBt);
+      rc = sqlite3BtreeCheckpoint(db->aDb[i].pBt, eMode, pnLog, pnCkpt);
+      pnLog = 0;
+      pnCkpt = 0;
+      if( rc==SQLITE_BUSY ){
+        bBusy = 1;
+        rc = SQLITE_OK;
+      }
     }
   }
 
-  return rc;
+  return (rc==SQLITE_OK && bBusy) ? SQLITE_BUSY : rc;
 }
 #endif /* SQLITE_OMIT_WAL */
 
@@ -106660,8 +108834,8 @@ static const int aHardLimit[] = {
 #if SQLITE_MAX_FUNCTION_ARG<0 || SQLITE_MAX_FUNCTION_ARG>1000
 # error SQLITE_MAX_FUNCTION_ARG must be between 0 and 1000
 #endif
-#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>30
-# error SQLITE_MAX_ATTACHED must be between 0 and 30
+#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>62
+# error SQLITE_MAX_ATTACHED must be between 0 and 62
 #endif
 #if SQLITE_MAX_LIKE_PATTERN_LENGTH<1
 # error SQLITE_MAX_LIKE_PATTERN_LENGTH must be at least 1
@@ -106780,7 +108954,8 @@ static int openDatabase(
   ** The SQLITE_OPEN_NOMUTEX and SQLITE_OPEN_FULLMUTEX flags were
   ** dealt with in the previous code block.  Besides these, the only
   ** valid input flags for sqlite3_open_v2() are SQLITE_OPEN_READONLY,
-  ** SQLITE_OPEN_READWRITE, and SQLITE_OPEN_CREATE.  Silently mask
+  ** SQLITE_OPEN_READWRITE, SQLITE_OPEN_CREATE, SQLITE_OPEN_SHAREDCACHE,
+  ** SQLITE_OPEN_PRIVATECACHE, and some reserved bits.  Silently mask
   ** off all other flags.
   */
   flags &=  ~( SQLITE_OPEN_DELETEONCLOSE |
@@ -106819,7 +108994,7 @@ static int openDatabase(
   db->autoCommit = 1;
   db->nextAutovac = -1;
   db->nextPagesize = 0;
-  db->flags |= SQLITE_ShortColNames | SQLITE_AutoIndex
+  db->flags |= SQLITE_ShortColNames | SQLITE_AutoIndex | SQLITE_EnableTrigger
 #if SQLITE_DEFAULT_FILE_FORMAT<4
                  | SQLITE_LegacyFileFmt
 #endif
@@ -108620,7 +110795,7 @@ typedef struct Fts3PhraseToken Fts3PhraseToken;
 typedef struct Fts3SegFilter Fts3SegFilter;
 typedef struct Fts3DeferredToken Fts3DeferredToken;
 typedef struct Fts3SegReader Fts3SegReader;
-typedef struct Fts3SegReaderArray Fts3SegReaderArray;
+typedef struct Fts3SegReaderCursor Fts3SegReaderCursor;
 
 /*
 ** A connection to a fulltext index is an instance of the following
@@ -108643,6 +110818,9 @@ struct Fts3Table {
   */
   sqlite3_stmt *aStmt[24];
 
+  char *zReadExprlist;
+  char *zWriteExprlist;
+
   int nNodeSize;                  /* Soft limit for node size */
   u8 bHasStat;                    /* True if %_stat table exists */
   u8 bHasDocsize;                 /* True if %_docsize table exists */
@@ -108730,7 +110908,7 @@ struct Fts3PhraseToken {
   int n;                          /* Number of bytes in buffer z */
   int isPrefix;                   /* True if token ends with a "*" character */
   int bFulltext;                  /* True if full-text index was used */
-  Fts3SegReaderArray *pArray;     /* Segment-reader for this token */
+  Fts3SegReaderCursor *pSegcsr;   /* Segment-reader for this token */
   Fts3DeferredToken *pDeferred;   /* Deferred token object for this token */
 };
 
@@ -108798,12 +110976,8 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderNew(int, sqlite3_int64,
   sqlite3_int64, sqlite3_int64, const char *, int, Fts3SegReader**);
 SQLITE_PRIVATE int sqlite3Fts3SegReaderPending(Fts3Table*,const char*,int,int,Fts3SegReader**);
 SQLITE_PRIVATE void sqlite3Fts3SegReaderFree(Fts3SegReader *);
-SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
-  Fts3Table *, Fts3SegReader **, int, Fts3SegFilter *,
-  int (*)(Fts3Table *, void *, char *, int, char *, int),  void *
-);
 SQLITE_PRIVATE int sqlite3Fts3SegReaderCost(Fts3Cursor *, Fts3SegReader *, int *);
-SQLITE_PRIVATE int sqlite3Fts3AllSegdirs(Fts3Table*, sqlite3_stmt **);
+SQLITE_PRIVATE int sqlite3Fts3AllSegdirs(Fts3Table*, int, sqlite3_stmt **);
 SQLITE_PRIVATE int sqlite3Fts3ReadLock(Fts3Table *);
 SQLITE_PRIVATE int sqlite3Fts3ReadBlock(Fts3Table*, sqlite3_int64, char **, int*);
 
@@ -108815,14 +110989,23 @@ SQLITE_PRIVATE int sqlite3Fts3DeferToken(Fts3Cursor *, Fts3PhraseToken *, int);
 SQLITE_PRIVATE int sqlite3Fts3CacheDeferredDoclists(Fts3Cursor *);
 SQLITE_PRIVATE void sqlite3Fts3FreeDeferredDoclists(Fts3Cursor *);
 SQLITE_PRIVATE char *sqlite3Fts3DeferredDoclist(Fts3DeferredToken *, int *);
-
 SQLITE_PRIVATE void sqlite3Fts3SegmentsClose(Fts3Table *);
 
+#define FTS3_SEGCURSOR_PENDING -1
+#define FTS3_SEGCURSOR_ALL     -2
+
+SQLITE_PRIVATE int sqlite3Fts3SegReaderStart(Fts3Table*, Fts3SegReaderCursor*, Fts3SegFilter*);
+SQLITE_PRIVATE int sqlite3Fts3SegReaderStep(Fts3Table *, Fts3SegReaderCursor *);
+SQLITE_PRIVATE void sqlite3Fts3SegReaderFinish(Fts3SegReaderCursor *);
+SQLITE_PRIVATE int sqlite3Fts3SegReaderCursor(
+    Fts3Table *, int, const char *, int, int, int, Fts3SegReaderCursor *);
+
 /* Flags allowed as part of the 4th argument to SegmentReaderIterate() */
 #define FTS3_SEGMENT_REQUIRE_POS   0x00000001
 #define FTS3_SEGMENT_IGNORE_EMPTY  0x00000002
 #define FTS3_SEGMENT_COLUMN_FILTER 0x00000004
 #define FTS3_SEGMENT_PREFIX        0x00000008
+#define FTS3_SEGMENT_SCAN          0x00000010
 
 /* Type passed as 4th argument to SegmentReaderIterate() */
 struct Fts3SegFilter {
@@ -108832,6 +111015,25 @@ struct Fts3SegFilter {
   int flags;
 };
 
+struct Fts3SegReaderCursor {
+  /* Used internally by sqlite3Fts3SegReaderXXX() calls */
+  Fts3SegReader **apSegment;      /* Array of Fts3SegReader objects */
+  int nSegment;                   /* Size of apSegment array */
+  int nAdvance;                   /* How many seg-readers to advance */
+  Fts3SegFilter *pFilter;         /* Pointer to filter object */
+  char *aBuffer;                  /* Buffer to merge doclists in */
+  int nBuffer;                    /* Allocated size of aBuffer[] in bytes */
+
+  /* Cost of running this iterator. Used by fts3.c only. */
+  int nCost;
+
+  /* Output values. Valid only after Fts3SegReaderStep() returns SQLITE_ROW. */
+  char *zTerm;                    /* Pointer to term buffer */
+  int nTerm;                      /* Size of zTerm in bytes */
+  char *aDoclist;                 /* Pointer to doclist buffer */
+  int nDoclist;                   /* Size of aDoclist[] in bytes */
+};
+
 /* fts3.c */
 SQLITE_PRIVATE int sqlite3Fts3PutVarint(char *, sqlite3_int64);
 SQLITE_PRIVATE int sqlite3Fts3GetVarint(const char *, sqlite_int64 *);
@@ -108868,6 +111070,9 @@ SQLITE_PRIVATE void sqlite3Fts3ExprFree(Fts3Expr *);
 SQLITE_PRIVATE int sqlite3Fts3ExprInitTestInterface(sqlite3 *db);
 #endif
 
+/* fts3_aux.c */
+SQLITE_PRIVATE int sqlite3Fts3InitAux(sqlite3 *db);
+
 #endif /* _FTSINT_H */
 
 /************** End of fts3Int.h *********************************************/
@@ -109013,6 +111218,8 @@ static int fts3DisconnectMethod(sqlite3_vtab *pVtab){
     sqlite3_finalize(p->aStmt[i]);
   }
   sqlite3_free(p->zSegmentsTbl);
+  sqlite3_free(p->zReadExprlist);
+  sqlite3_free(p->zWriteExprlist);
 
   /* Invoke the tokenizer destructor to free the tokenizer. */
   p->pTokenizer->pModule->xDestroy(p->pTokenizer);
@@ -109230,6 +111437,141 @@ static int fts3IsSpecialColumn(
   return 1;
 }
 
+/*
+** Append the output of a printf() style formatting to an existing string.
+*/
+static void fts3Appendf(
+  int *pRc,                       /* IN/OUT: Error code */
+  char **pz,                      /* IN/OUT: Pointer to string buffer */
+  const char *zFormat,            /* Printf format string to append */
+  ...                             /* Arguments for printf format string */
+){
+  if( *pRc==SQLITE_OK ){
+    va_list ap;
+    char *z;
+    va_start(ap, zFormat);
+    z = sqlite3_vmprintf(zFormat, ap);
+    if( z && *pz ){
+      char *z2 = sqlite3_mprintf("%s%s", *pz, z);
+      sqlite3_free(z);
+      z = z2;
+    }
+    if( z==0 ) *pRc = SQLITE_NOMEM;
+    sqlite3_free(*pz);
+    *pz = z;
+  }
+}
+
+/*
+** Return a copy of input string zInput enclosed in double-quotes (") and
+** with all double quote characters escaped. For example:
+**
+**     fts3QuoteId("un \"zip\"")   ->    "un \"\"zip\"\""
+**
+** The pointer returned points to memory obtained from sqlite3_malloc(). It
+** is the callers responsibility to call sqlite3_free() to release this
+** memory.
+*/
+static char *fts3QuoteId(char const *zInput){
+  int nRet;
+  char *zRet;
+  nRet = 2 + strlen(zInput)*2 + 1;
+  zRet = sqlite3_malloc(nRet);
+  if( zRet ){
+    int i;
+    char *z = zRet;
+    *(z++) = '"';
+    for(i=0; zInput[i]; i++){
+      if( zInput[i]=='"' ) *(z++) = '"';
+      *(z++) = zInput[i];
+    }
+    *(z++) = '"';
+    *(z++) = '\0';
+  }
+  return zRet;
+}
+
+/*
+** Return a list of comma separated SQL expressions that could be used
+** in a SELECT statement such as the following:
+**
+**     SELECT <list of expressions> FROM %_content AS x ...
+**
+** to return the docid, followed by each column of text data in order
+** from left to write. If parameter zFunc is not NULL, then instead of
+** being returned directly each column of text data is passed to an SQL
+** function named zFunc first. For example, if zFunc is "unzip" and the
+** table has the three user-defined columns "a", "b", and "c", the following
+** string is returned:
+**
+**     "docid, unzip(x.'a'), unzip(x.'b'), unzip(x.'c')"
+**
+** The pointer returned points to a buffer allocated by sqlite3_malloc(). It
+** is the responsibility of the caller to eventually free it.
+**
+** If *pRc is not SQLITE_OK when this function is called, it is a no-op (and
+** a NULL pointer is returned). Otherwise, if an OOM error is encountered
+** by this function, NULL is returned and *pRc is set to SQLITE_NOMEM. If
+** no error occurs, *pRc is left unmodified.
+*/
+static char *fts3ReadExprList(Fts3Table *p, const char *zFunc, int *pRc){
+  char *zRet = 0;
+  char *zFree = 0;
+  char *zFunction;
+  int i;
+
+  if( !zFunc ){
+    zFunction = "";
+  }else{
+    zFree = zFunction = fts3QuoteId(zFunc);
+  }
+  fts3Appendf(pRc, &zRet, "docid");
+  for(i=0; i<p->nColumn; i++){
+    fts3Appendf(pRc, &zRet, ",%s(x.'c%d%q')", zFunction, i, p->azColumn[i]);
+  }
+  sqlite3_free(zFree);
+  return zRet;
+}
+
+/*
+** Return a list of N comma separated question marks, where N is the number
+** of columns in the %_content table (one for the docid plus one for each
+** user-defined text column).
+**
+** If argument zFunc is not NULL, then all but the first question mark
+** is preceded by zFunc and an open bracket, and followed by a closed
+** bracket. For example, if zFunc is "zip" and the FTS3 table has three 
+** user-defined text columns, the following string is returned:
+**
+**     "?, zip(?), zip(?), zip(?)"
+**
+** The pointer returned points to a buffer allocated by sqlite3_malloc(). It
+** is the responsibility of the caller to eventually free it.
+**
+** If *pRc is not SQLITE_OK when this function is called, it is a no-op (and
+** a NULL pointer is returned). Otherwise, if an OOM error is encountered
+** by this function, NULL is returned and *pRc is set to SQLITE_NOMEM. If
+** no error occurs, *pRc is left unmodified.
+*/
+static char *fts3WriteExprList(Fts3Table *p, const char *zFunc, int *pRc){
+  char *zRet = 0;
+  char *zFree = 0;
+  char *zFunction;
+  int i;
+
+  if( !zFunc ){
+    zFunction = "";
+  }else{
+    zFree = zFunction = fts3QuoteId(zFunc);
+  }
+  fts3Appendf(pRc, &zRet, "?");
+  for(i=0; i<p->nColumn; i++){
+    fts3Appendf(pRc, &zRet, ",%s(?)", zFunction);
+  }
+  sqlite3_free(zFree);
+  return zRet;
+}
+
 /*
 ** This function is the implementation of both the xConnect and xCreate
 ** methods of the FTS3 virtual table.
@@ -109266,6 +111608,9 @@ static int fts3InitVtab(
   const char **aCol;              /* Array of column names */
   sqlite3_tokenizer *pTokenizer = 0;        /* Tokenizer for this table */
 
+  char *zCompress = 0;
+  char *zUncompress = 0;
+
   assert( strlen(argv[0])==4 );
   assert( (sqlite3_strnicmp(argv[0], "fts4", 4)==0 && isFts4)
        || (sqlite3_strnicmp(argv[0], "fts3", 4)==0 && !isFts4)
@@ -109316,6 +111661,12 @@ static int fts3InitVtab(
           *pzErr = sqlite3_mprintf("unrecognized matchinfo: %s", zVal);
           rc = SQLITE_ERROR;
         }
+      }else if( nKey==8 && 0==sqlite3_strnicmp(z, "compress", 8) ){
+        zCompress = zVal;
+        zVal = 0;
+      }else if( nKey==10 && 0==sqlite3_strnicmp(z, "uncompress", 10) ){
+        zUncompress = zVal;
+        zVal = 0;
       }else{
         *pzErr = sqlite3_mprintf("unrecognized parameter: %s", z);
         rc = SQLITE_ERROR;
@@ -109390,6 +111741,15 @@ static int fts3InitVtab(
     assert( zCsr <= &((char *)p)[nByte] );
   }
 
+  if( (zCompress==0)!=(zUncompress==0) ){
+    char const *zMiss = (zCompress==0 ? "compress" : "uncompress");
+    rc = SQLITE_ERROR;
+    *pzErr = sqlite3_mprintf("missing %s parameter in fts4 constructor", zMiss);
+  }
+  p->zReadExprlist = fts3ReadExprList(p, zUncompress, &rc);
+  p->zWriteExprlist = fts3WriteExprList(p, zCompress, &rc);
+  if( rc!=SQLITE_OK ) goto fts3_init_out;
+
   /* If this is an xCreate call, create the underlying tables in the 
   ** database. TODO: For xConnect(), it could verify that said tables exist.
   */
@@ -109407,7 +111767,8 @@ static int fts3InitVtab(
   fts3DeclareVtab(&rc, p);
 
 fts3_init_out:
-
+  sqlite3_free(zCompress);
+  sqlite3_free(zUncompress);
   sqlite3_free((void *)aCol);
   if( rc!=SQLITE_OK ){
     if( p ){
@@ -110500,132 +112861,135 @@ static int fts3DeferredTermSelect(
   return SQLITE_OK;
 }
 
-/*
-** An Fts3SegReaderArray is used to store an array of Fts3SegReader objects.
-** Elements are added to the array using fts3SegReaderArrayAdd(). 
-*/
-struct Fts3SegReaderArray {
-  int nSegment;                   /* Number of valid entries in apSegment[] */
-  int nAlloc;                     /* Allocated size of apSegment[] */
-  int nCost;                      /* The cost of executing SegReaderIterate() */
-  Fts3SegReader *apSegment[1];    /* Array of seg-reader objects */
-};
-
+SQLITE_PRIVATE int sqlite3Fts3SegReaderCursor(
+  Fts3Table *p,                   /* FTS3 table handle */
+  int iLevel,                     /* Level of segments to scan */
+  const char *zTerm,              /* Term to query for */
+  int nTerm,                      /* Size of zTerm in bytes */
+  int isPrefix,                   /* True for a prefix search */
+  int isScan,                     /* True to scan from zTerm to EOF */
+  Fts3SegReaderCursor *pCsr       /* Cursor object to populate */
+){
+  int rc = SQLITE_OK;
+  int rc2;
+  int iAge = 0;
+  sqlite3_stmt *pStmt = 0;
+  Fts3SegReader *pPending = 0;
 
-/*
-** Free an Fts3SegReaderArray object. Also free all seg-readers in the
-** array (using sqlite3Fts3SegReaderFree()).
-*/
-static void fts3SegReaderArrayFree(Fts3SegReaderArray *pArray){
-  if( pArray ){
-    int i;
-    for(i=0; i<pArray->nSegment; i++){
-      sqlite3Fts3SegReaderFree(pArray->apSegment[i]);
+  assert( iLevel==FTS3_SEGCURSOR_ALL 
+      ||  iLevel==FTS3_SEGCURSOR_PENDING 
+      ||  iLevel>=0
+  );
+  assert( FTS3_SEGCURSOR_PENDING<0 );
+  assert( FTS3_SEGCURSOR_ALL<0 );
+  assert( iLevel==FTS3_SEGCURSOR_ALL || (zTerm==0 && isPrefix==1) );
+  assert( isPrefix==0 || isScan==0 );
+
+
+  memset(pCsr, 0, sizeof(Fts3SegReaderCursor));
+
+  /* If iLevel is less than 0, include a seg-reader for the pending-terms. */
+  assert( isScan==0 || fts3HashCount(&p->pendingTerms)==0 );
+  if( iLevel<0 && isScan==0 ){
+    rc = sqlite3Fts3SegReaderPending(p, zTerm, nTerm, isPrefix, &pPending);
+    if( rc==SQLITE_OK && pPending ){
+      int nByte = (sizeof(Fts3SegReader *) * 16);
+      pCsr->apSegment = (Fts3SegReader **)sqlite3_malloc(nByte);
+      if( pCsr->apSegment==0 ){
+        rc = SQLITE_NOMEM;
+      }else{
+        pCsr->apSegment[0] = pPending;
+        pCsr->nSegment = 1;
+        pPending = 0;
+      }
     }
-    sqlite3_free(pArray);
   }
-}
 
-static int fts3SegReaderArrayAdd(
-  Fts3SegReaderArray **ppArray, 
-  Fts3SegReader *pNew
-){
-  Fts3SegReaderArray *pArray = *ppArray;
+  if( iLevel!=FTS3_SEGCURSOR_PENDING ){
+    if( rc==SQLITE_OK ){
+      rc = sqlite3Fts3AllSegdirs(p, iLevel, &pStmt);
+    }
+    while( rc==SQLITE_OK && SQLITE_ROW==(rc = sqlite3_step(pStmt)) ){
+
+      /* Read the values returned by the SELECT into local variables. */
+      sqlite3_int64 iStartBlock = sqlite3_column_int64(pStmt, 1);
+      sqlite3_int64 iLeavesEndBlock = sqlite3_column_int64(pStmt, 2);
+      sqlite3_int64 iEndBlock = sqlite3_column_int64(pStmt, 3);
+      int nRoot = sqlite3_column_bytes(pStmt, 4);
+      char const *zRoot = sqlite3_column_blob(pStmt, 4);
+
+      /* If nSegment is a multiple of 16 the array needs to be extended. */
+      if( (pCsr->nSegment%16)==0 ){
+        Fts3SegReader **apNew;
+        int nByte = (pCsr->nSegment + 16)*sizeof(Fts3SegReader*);
+        apNew = (Fts3SegReader **)sqlite3_realloc(pCsr->apSegment, nByte);
+        if( !apNew ){
+          rc = SQLITE_NOMEM;
+          goto finished;
+        }
+        pCsr->apSegment = apNew;
+      }
 
-  if( !pArray || pArray->nAlloc==pArray->nSegment ){
-    int nNew = (pArray ? pArray->nAlloc+16 : 16);
-    pArray = (Fts3SegReaderArray *)sqlite3_realloc(pArray, 
-        sizeof(Fts3SegReaderArray) + (nNew-1) * sizeof(Fts3SegReader*)
-    );
-    if( !pArray ){
-      sqlite3Fts3SegReaderFree(pNew);
-      return SQLITE_NOMEM;
-    }
-    if( nNew==16 ){
-      pArray->nSegment = 0;
-      pArray->nCost = 0;
+      /* If zTerm is not NULL, and this segment is not stored entirely on its
+      ** root node, the range of leaves scanned can be reduced. Do this. */
+      if( iStartBlock && zTerm ){
+        sqlite3_int64 *pi = (isPrefix ? &iLeavesEndBlock : 0);
+        rc = fts3SelectLeaf(p, zTerm, nTerm, zRoot, nRoot, &iStartBlock, pi);
+        if( rc!=SQLITE_OK ) goto finished;
+        if( isPrefix==0 && isScan==0 ) iLeavesEndBlock = iStartBlock;
+      }
+ 
+      rc = sqlite3Fts3SegReaderNew(iAge, iStartBlock, iLeavesEndBlock,
+          iEndBlock, zRoot, nRoot, &pCsr->apSegment[pCsr->nSegment]
+      );
+      if( rc!=SQLITE_OK ) goto finished;
+      pCsr->nSegment++;
+      iAge++;
     }
-    pArray->nAlloc = nNew;
-    *ppArray = pArray;
   }
 
-  pArray->apSegment[pArray->nSegment++] = pNew;
-  return SQLITE_OK;
+ finished:
+  rc2 = sqlite3_reset(pStmt);
+  if( rc==SQLITE_DONE ) rc = rc2;
+  sqlite3Fts3SegReaderFree(pPending);
+
+  return rc;
 }
 
-static int fts3TermSegReaderArray(
+
+static int fts3TermSegReaderCursor(
   Fts3Cursor *pCsr,               /* Virtual table cursor handle */
   const char *zTerm,              /* Term to query for */
   int nTerm,                      /* Size of zTerm in bytes */
   int isPrefix,                   /* True for a prefix search */
-  Fts3SegReaderArray **ppArray    /* OUT: Allocated seg-reader array */
+  Fts3SegReaderCursor **ppSegcsr  /* OUT: Allocated seg-reader cursor */
 ){
-  Fts3Table *p = (Fts3Table *)pCsr->base.pVtab;
-  int rc;                         /* Return code */
-  Fts3SegReaderArray *pArray = 0; /* Array object to build */
-  Fts3SegReader *pReader = 0;     /* Seg-reader to add to pArray */ 
-  sqlite3_stmt *pStmt = 0;        /* SQL statement to scan %_segdir table */
-  int iAge = 0;                   /* Used to assign ages to segments */
-
-  /* Allocate a seg-reader to scan the pending terms, if any. */
-  rc = sqlite3Fts3SegReaderPending(p, zTerm, nTerm, isPrefix, &pReader);
-  if( rc==SQLITE_OK && pReader ) {
-    rc = fts3SegReaderArrayAdd(&pArray, pReader);
-  }
+  Fts3SegReaderCursor *pSegcsr;   /* Object to allocate and return */
+  int rc = SQLITE_NOMEM;          /* Return code */
 
-  /* Loop through the entire %_segdir table. For each segment, create a
-  ** Fts3SegReader to iterate through the subset of the segment leaves
-  ** that may contain a term that matches zTerm/nTerm. For non-prefix
-  ** searches, this is always a single leaf. For prefix searches, this
-  ** may be a contiguous block of leaves.
-  */
-  if( rc==SQLITE_OK ){
-    rc = sqlite3Fts3AllSegdirs(p, &pStmt);
-  }
-  while( rc==SQLITE_OK && SQLITE_ROW==(rc = sqlite3_step(pStmt)) ){
-    Fts3SegReader *pNew = 0;
-    int nRoot = sqlite3_column_bytes(pStmt, 4);
-    char const *zRoot = sqlite3_column_blob(pStmt, 4);
-    if( sqlite3_column_int64(pStmt, 1)==0 ){
-      /* The entire segment is stored on the root node (which must be a
-      ** leaf). Do not bother inspecting any data in this case, just
-      ** create a Fts3SegReader to scan the single leaf. 
-      */
-      rc = sqlite3Fts3SegReaderNew(iAge, 0, 0, 0, zRoot, nRoot, &pNew);
-    }else{
-      sqlite3_int64 i1;           /* First leaf that may contain zTerm */
-      sqlite3_int64 i2;           /* Final leaf that may contain zTerm */
-      rc = fts3SelectLeaf(p, zTerm, nTerm, zRoot, nRoot, &i1, (isPrefix?&i2:0));
-      if( isPrefix==0 ) i2 = i1;
-      if( rc==SQLITE_OK ){
-        rc = sqlite3Fts3SegReaderNew(iAge, i1, i2, 0, 0, 0, &pNew);
-      }
-    }
-    assert( (pNew==0)==(rc!=SQLITE_OK) );
-
-    /* If a new Fts3SegReader was allocated, add it to the array. */
-    if( rc==SQLITE_OK ){
-      rc = fts3SegReaderArrayAdd(&pArray, pNew);
-    }
-    if( rc==SQLITE_OK ){
-      rc = sqlite3Fts3SegReaderCost(pCsr, pNew, &pArray->nCost);
+  pSegcsr = sqlite3_malloc(sizeof(Fts3SegReaderCursor));
+  if( pSegcsr ){
+    Fts3Table *p = (Fts3Table *)pCsr->base.pVtab;
+    int i;
+    int nCost = 0;
+    rc = sqlite3Fts3SegReaderCursor(
+        p, FTS3_SEGCURSOR_ALL, zTerm, nTerm, isPrefix, 0, pSegcsr);
+  
+    for(i=0; rc==SQLITE_OK && i<pSegcsr->nSegment; i++){
+      rc = sqlite3Fts3SegReaderCost(pCsr, pSegcsr->apSegment[i], &nCost);
     }
-    iAge++;
+    pSegcsr->nCost = nCost;
   }
 
-  if( rc==SQLITE_DONE ){
-    rc = sqlite3_reset(pStmt);
-  }else{
-    sqlite3_reset(pStmt);
-  }
-  if( rc!=SQLITE_OK ){
-    fts3SegReaderArrayFree(pArray);
-    pArray = 0;
-  }
-  *ppArray = pArray;
+  *ppSegcsr = pSegcsr;
   return rc;
 }
 
+static void fts3SegReaderCursorFree(Fts3SegReaderCursor *pSegcsr){
+  sqlite3Fts3SegReaderFinish(pSegcsr);
+  sqlite3_free(pSegcsr);
+}
+
 /*
 ** This function retreives the doclist for the specified term (or term
 ** prefix) from the database. 
@@ -110646,11 +113010,11 @@ static int fts3TermSelect(
   char **ppOut                    /* OUT: Malloced result buffer */
 ){
   int rc;                         /* Return code */
-  Fts3SegReaderArray *pArray;     /* Seg-reader array for this term */
-  TermSelect tsc;               /* Context object for fts3TermSelectCb() */
-  Fts3SegFilter filter;         /* Segment term filter configuration */
+  Fts3SegReaderCursor *pSegcsr;   /* Seg-reader cursor for this term */
+  TermSelect tsc;                 /* Context object for fts3TermSelectCb() */
+  Fts3SegFilter filter;           /* Segment term filter configuration */
 
-  pArray = pTok->pArray;
+  pSegcsr = pTok->pSegcsr;
   memset(&tsc, 0, sizeof(TermSelect));
   tsc.isReqPos = isReqPos;
 
@@ -110662,13 +113026,18 @@ static int fts3TermSelect(
   filter.zTerm = pTok->z;
   filter.nTerm = pTok->n;
 
-  rc = sqlite3Fts3SegReaderIterate(p, pArray->apSegment, pArray->nSegment, 
-      &filter, fts3TermSelectCb, (void *)&tsc
-  );
+  rc = sqlite3Fts3SegReaderStart(p, pSegcsr, &filter);
+  while( SQLITE_OK==rc
+      && SQLITE_ROW==(rc = sqlite3Fts3SegReaderStep(p, pSegcsr)) 
+  ){
+    rc = fts3TermSelectCb(p, (void *)&tsc, 
+        pSegcsr->zTerm, pSegcsr->nTerm, pSegcsr->aDoclist, pSegcsr->nDoclist
+    );
+  }
+
   if( rc==SQLITE_OK ){
     rc = fts3TermSelectMerge(&tsc);
   }
-
   if( rc==SQLITE_OK ){
     *ppOut = tsc.aaOutput[0];
     *pnOut = tsc.anOutput[0];
@@ -110679,8 +113048,8 @@ static int fts3TermSelect(
     }
   }
 
-  fts3SegReaderArrayFree(pArray);
-  pTok->pArray = 0;
+  fts3SegReaderCursorFree(pSegcsr);
+  pTok->pSegcsr = 0;
   return rc;
 }
 
@@ -110803,13 +113172,13 @@ static int fts3PhraseSelect(
   */
   for(ii=0; ii<pPhrase->nToken; ii++){
     Fts3PhraseToken *pTok = &pPhrase->aToken[ii];
-    if( pTok->pArray==0 ){
+    if( pTok->pSegcsr==0 ){
       if( (pCsr->eEvalmode==FTS3_EVAL_FILTER)
        || (pCsr->eEvalmode==FTS3_EVAL_NEXT && pCsr->pDeferred==0) 
        || (pCsr->eEvalmode==FTS3_EVAL_MATCHINFO && pTok->bFulltext) 
       ){
-        rc = fts3TermSegReaderArray(
-            pCsr, pTok->z, pTok->n, pTok->isPrefix, &pTok->pArray
+        rc = fts3TermSegReaderCursor(
+            pCsr, pTok->z, pTok->n, pTok->isPrefix, &pTok->pSegcsr
         );
         if( rc!=SQLITE_OK ) return rc;
       }
@@ -110840,10 +113209,10 @@ static int fts3PhraseSelect(
 
       /* Find the remaining token with the lowest cost. */
       for(jj=0; jj<pPhrase->nToken; jj++){
-        Fts3SegReaderArray *pArray = pPhrase->aToken[jj].pArray;
-        if( pArray && pArray->nCost<nMinCost ){
+        Fts3SegReaderCursor *pSegcsr = pPhrase->aToken[jj].pSegcsr;
+        if( pSegcsr && pSegcsr->nCost<nMinCost ){
           iTok = jj;
-          nMinCost = pArray->nCost;
+          nMinCost = pSegcsr->nCost;
         }
       }
       pTok = &pPhrase->aToken[iTok];
@@ -110862,12 +113231,12 @@ static int fts3PhraseSelect(
     if( pCsr->eEvalmode==FTS3_EVAL_NEXT && pTok->pDeferred ){
       rc = fts3DeferredTermSelect(pTok->pDeferred, isTermPos, &nList, &pList);
     }else{
-      if( pTok->pArray ){
+      if( pTok->pSegcsr ){
         rc = fts3TermSelect(p, pTok, iCol, isTermPos, &nList, &pList);
       }
       pTok->bFulltext = 1;
     }
-    assert( rc!=SQLITE_OK || pCsr->eEvalmode || pTok->pArray==0 );
+    assert( rc!=SQLITE_OK || pCsr->eEvalmode || pTok->pSegcsr==0 );
     if( rc!=SQLITE_OK ) break;
 
     if( isFirst ){
@@ -111045,9 +113414,9 @@ static int fts3ExprAllocateSegReaders(
 
     for(ii=0; rc==SQLITE_OK && ii<pPhrase->nToken; ii++){
       Fts3PhraseToken *pTok = &pPhrase->aToken[ii];
-      if( pTok->pArray==0 ){
-        rc = fts3TermSegReaderArray(
-            pCsr, pTok->z, pTok->n, pTok->isPrefix, &pTok->pArray
+      if( pTok->pSegcsr==0 ){
+        rc = fts3TermSegReaderCursor(
+            pCsr, pTok->z, pTok->n, pTok->isPrefix, &pTok->pSegcsr
         );
       }
     }
@@ -111071,8 +113440,8 @@ static void fts3ExprFreeSegReaders(Fts3Expr *pExpr){
     if( pPhrase ){
       int kk;
       for(kk=0; kk<pPhrase->nToken; kk++){
-        fts3SegReaderArrayFree(pPhrase->aToken[kk].pArray);
-        pPhrase->aToken[kk].pArray = 0;
+        fts3SegReaderCursorFree(pPhrase->aToken[kk].pSegcsr);
+        pPhrase->aToken[kk].pSegcsr = 0;
       }
     }
     fts3ExprFreeSegReaders(pExpr->pLeft);
@@ -111092,10 +113461,8 @@ static int fts3ExprCost(Fts3Expr *pExpr){
     int ii;
     nCost = 0;
     for(ii=0; ii<pPhrase->nToken; ii++){
-      Fts3SegReaderArray *pArray = pPhrase->aToken[ii].pArray;
-      if( pArray ){
-        nCost += pPhrase->aToken[ii].pArray->nCost;
-      }
+      Fts3SegReaderCursor *pSegcsr = pPhrase->aToken[ii].pSegcsr;
+      if( pSegcsr ) nCost += pSegcsr->nCost;
     }
   }else{
     nCost = fts3ExprCost(pExpr->pLeft) + fts3ExprCost(pExpr->pRight);
@@ -111437,8 +113804,8 @@ static int fts3FilterMethod(
   sqlite3_value **apVal           /* Arguments for the indexing scheme */
 ){
   const char *azSql[] = {
-    "SELECT * FROM %Q.'%q_content' WHERE docid = ?", /* non-full-table-scan */
-    "SELECT * FROM %Q.'%q_content'",                 /* full-table-scan */
+    "SELECT %s FROM %Q.'%q_content' AS x WHERE docid = ?", /* non-full-scan */
+    "SELECT %s FROM %Q.'%q_content' AS x ",                /* full-scan */
   };
   int rc;                         /* Return code */
   char *zSql;                     /* SQL statement used to access %_content */
@@ -111493,7 +113860,8 @@ static int fts3FilterMethod(
   ** full-text query or docid lookup, the statement retrieves a single
   ** row by docid.
   */
-  zSql = sqlite3_mprintf(azSql[idxNum==FTS3_FULLSCAN_SEARCH], p->zDb, p->zName);
+  zSql = (char *)azSql[idxNum==FTS3_FULLSCAN_SEARCH];
+  zSql = sqlite3_mprintf(zSql, p->zReadExprlist, p->zDb, p->zName);
   if( !zSql ){
     rc = SQLITE_NOMEM;
   }else{
@@ -112011,6 +114379,9 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
   sqlite3Fts3IcuTokenizerModule(&pIcu);
 #endif
 
+  rc = sqlite3Fts3InitAux(db);
+  if( rc!=SQLITE_OK ) return rc;
+
   sqlite3Fts3SimpleTokenizerModule(&pSimple);
   sqlite3Fts3PorterTokenizerModule(&pPorter);
 
@@ -112086,6 +114457,476 @@ SQLITE_API int sqlite3_extension_init(
 #endif
 
 /************** End of fts3.c ************************************************/
+/************** Begin file fts3_aux.c ****************************************/
+/*
+** 2011 Jan 27
+**
+** The author disclaims copyright to this source code.  In place of
+** a legal notice, here is a blessing:
+**
+**    May you do good and not evil.
+**    May you find forgiveness for yourself and forgive others.
+**    May you share freely, never taking more than you give.
+**
+******************************************************************************
+**
+*/
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
+
+
+typedef struct Fts3auxTable Fts3auxTable;
+typedef struct Fts3auxCursor Fts3auxCursor;
+
+struct Fts3auxTable {
+  sqlite3_vtab base;              /* Base class used by SQLite core */
+  Fts3Table *pFts3Tab;
+};
+
+struct Fts3auxCursor {
+  sqlite3_vtab_cursor base;       /* Base class used by SQLite core */
+  Fts3SegReaderCursor csr;        /* Must be right after "base" */
+  Fts3SegFilter filter;
+  char *zStop;
+  int nStop;                      /* Byte-length of string zStop */
+  int isEof;                      /* True if cursor is at EOF */
+  sqlite3_int64 iRowid;           /* Current rowid */
+
+  int iCol;                       /* Current value of 'col' column */
+  int nStat;                      /* Size of aStat[] array */
+  struct Fts3auxColstats {
+    sqlite3_int64 nDoc;           /* 'documents' values for current csr row */
+    sqlite3_int64 nOcc;           /* 'occurrences' values for current csr row */
+  } *aStat;
+};
+
+/*
+** Schema of the terms table.
+*/
+#define FTS3_TERMS_SCHEMA "CREATE TABLE x(term, col, documents, occurrences)"
+
+/*
+** This function does all the work for both the xConnect and xCreate methods.
+** These tables have no persistent representation of their own, so xConnect
+** and xCreate are identical operations.
+*/
+static int fts3auxConnectMethod(
+  sqlite3 *db,                    /* Database connection */
+  void *pUnused,                  /* Unused */
+  int argc,                       /* Number of elements in argv array */
+  const char * const *argv,       /* xCreate/xConnect argument array */
+  sqlite3_vtab **ppVtab,          /* OUT: New sqlite3_vtab object */
+  char **pzErr                    /* OUT: sqlite3_malloc'd error message */
+){
+  char const *zDb;                /* Name of database (e.g. "main") */
+  char const *zFts3;              /* Name of fts3 table */
+  int nDb;                        /* Result of strlen(zDb) */
+  int nFts3;                      /* Result of strlen(zFts3) */
+  int nByte;                      /* Bytes of space to allocate here */
+  int rc;                         /* value returned by declare_vtab() */
+  Fts3auxTable *p;                /* Virtual table object to return */
+
+  UNUSED_PARAMETER(pUnused);
+
+  /* The user should specify a single argument - the name of an fts3 table. */
+  if( argc!=4 ){
+    *pzErr = sqlite3_mprintf(
+        "wrong number of arguments to fts4aux constructor"
+    );
+    return SQLITE_ERROR;
+  }
+
+  zDb = argv[1]; 
+  nDb = strlen(zDb);
+  zFts3 = argv[3];
+  nFts3 = strlen(zFts3);
+
+  rc = sqlite3_declare_vtab(db, FTS3_TERMS_SCHEMA);
+  if( rc!=SQLITE_OK ) return rc;
+
+  nByte = sizeof(Fts3auxTable) + sizeof(Fts3Table) + nDb + nFts3 + 2;
+  p = (Fts3auxTable *)sqlite3_malloc(nByte);
+  if( !p ) return SQLITE_NOMEM;
+  memset(p, 0, nByte);
+
+  p->pFts3Tab = (Fts3Table *)&p[1];
+  p->pFts3Tab->zDb = (char *)&p->pFts3Tab[1];
+  p->pFts3Tab->zName = &p->pFts3Tab->zDb[nDb+1];
+  p->pFts3Tab->db = db;
+
+  memcpy((char *)p->pFts3Tab->zDb, zDb, nDb);
+  memcpy((char *)p->pFts3Tab->zName, zFts3, nFts3);
+  sqlite3Fts3Dequote((char *)p->pFts3Tab->zName);
+
+  *ppVtab = (sqlite3_vtab *)p;
+  return SQLITE_OK;
+}
+
+/*
+** This function does the work for both the xDisconnect and xDestroy methods.
+** These tables have no persistent representation of their own, so xDisconnect
+** and xDestroy are identical operations.
+*/
+static int fts3auxDisconnectMethod(sqlite3_vtab *pVtab){
+  Fts3auxTable *p = (Fts3auxTable *)pVtab;
+  Fts3Table *pFts3 = p->pFts3Tab;
+  int i;
+
+  /* Free any prepared statements held */
+  for(i=0; i<SizeofArray(pFts3->aStmt); i++){
+    sqlite3_finalize(pFts3->aStmt[i]);
+  }
+  sqlite3_free(pFts3->zSegmentsTbl);
+  sqlite3_free(p);
+  return SQLITE_OK;
+}
+
+#define FTS4AUX_EQ_CONSTRAINT 1
+#define FTS4AUX_GE_CONSTRAINT 2
+#define FTS4AUX_LE_CONSTRAINT 4
+
+/*
+** xBestIndex - Analyze a WHERE and ORDER BY clause.
+*/
+static int fts3auxBestIndexMethod(
+  sqlite3_vtab *pVTab, 
+  sqlite3_index_info *pInfo
+){
+  int i;
+  int iEq = -1;
+  int iGe = -1;
+  int iLe = -1;
+
+  UNUSED_PARAMETER(pVTab);
+
+  /* This vtab delivers always results in "ORDER BY term ASC" order. */
+  if( pInfo->nOrderBy==1 
+   && pInfo->aOrderBy[0].iColumn==0 
+   && pInfo->aOrderBy[0].desc==0
+  ){
+    pInfo->orderByConsumed = 1;
+  }
+
+  /* Search for equality and range constraints on the "term" column. */
+  for(i=0; i<pInfo->nConstraint; i++){
+    if( pInfo->aConstraint[i].usable && pInfo->aConstraint[i].iColumn==0 ){
+      int op = pInfo->aConstraint[i].op;
+      if( op==SQLITE_INDEX_CONSTRAINT_EQ ) iEq = i;
+      if( op==SQLITE_INDEX_CONSTRAINT_LT ) iLe = i;
+      if( op==SQLITE_INDEX_CONSTRAINT_LE ) iLe = i;
+      if( op==SQLITE_INDEX_CONSTRAINT_GT ) iGe = i;
+      if( op==SQLITE_INDEX_CONSTRAINT_GE ) iGe = i;
+    }
+  }
+
+  if( iEq>=0 ){
+    pInfo->idxNum = FTS4AUX_EQ_CONSTRAINT;
+    pInfo->aConstraintUsage[iEq].argvIndex = 1;
+    pInfo->estimatedCost = 5;
+  }else{
+    pInfo->idxNum = 0;
+    pInfo->estimatedCost = 20000;
+    if( iGe>=0 ){
+      pInfo->idxNum += FTS4AUX_GE_CONSTRAINT;
+      pInfo->aConstraintUsage[iGe].argvIndex = 1;
+      pInfo->estimatedCost /= 2;
+    }
+    if( iLe>=0 ){
+      pInfo->idxNum += FTS4AUX_LE_CONSTRAINT;
+      pInfo->aConstraintUsage[iLe].argvIndex = 1 + (iGe>=0);
+      pInfo->estimatedCost /= 2;
+    }
+  }
+
+  return SQLITE_OK;
+}
+
+/*
+** xOpen - Open a cursor.
+*/
+static int fts3auxOpenMethod(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCsr){
+  Fts3auxCursor *pCsr;            /* Pointer to cursor object to return */
+
+  UNUSED_PARAMETER(pVTab);
+
+  pCsr = (Fts3auxCursor *)sqlite3_malloc(sizeof(Fts3auxCursor));
+  if( !pCsr ) return SQLITE_NOMEM;
+  memset(pCsr, 0, sizeof(Fts3auxCursor));
+
+  *ppCsr = (sqlite3_vtab_cursor *)pCsr;
+  return SQLITE_OK;
+}
+
+/*
+** xClose - Close a cursor.
+*/
+static int fts3auxCloseMethod(sqlite3_vtab_cursor *pCursor){
+  Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab;
+  Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
+
+  sqlite3Fts3SegmentsClose(pFts3);
+  sqlite3Fts3SegReaderFinish(&pCsr->csr);
+  sqlite3_free((void *)pCsr->filter.zTerm);
+  sqlite3_free(pCsr->zStop);
+  sqlite3_free(pCsr->aStat);
+  sqlite3_free(pCsr);
+  return SQLITE_OK;
+}
+
+static int fts3auxGrowStatArray(Fts3auxCursor *pCsr, int nSize){
+  if( nSize>pCsr->nStat ){
+    struct Fts3auxColstats *aNew;
+    aNew = (struct Fts3auxColstats *)sqlite3_realloc(pCsr->aStat, 
+        sizeof(struct Fts3auxColstats) * nSize
+    );
+    if( aNew==0 ) return SQLITE_NOMEM;
+    memset(&aNew[pCsr->nStat], 0, 
+        sizeof(struct Fts3auxColstats) * (nSize - pCsr->nStat)
+    );
+    pCsr->aStat = aNew;
+    pCsr->nStat = nSize;
+  }
+  return SQLITE_OK;
+}
+
+/*
+** xNext - Advance the cursor to the next row, if any.
+*/
+static int fts3auxNextMethod(sqlite3_vtab_cursor *pCursor){
+  Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
+  Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab;
+  int rc;
+
+  /* Increment our pretend rowid value. */
+  pCsr->iRowid++;
+
+  for(pCsr->iCol++; pCsr->iCol<pCsr->nStat; pCsr->iCol++){
+    if( pCsr->aStat[pCsr->iCol].nDoc>0 ) return SQLITE_OK;
+  }
+
+  rc = sqlite3Fts3SegReaderStep(pFts3, &pCsr->csr);
+  if( rc==SQLITE_ROW ){
+    int i = 0;
+    int nDoclist = pCsr->csr.nDoclist;
+    char *aDoclist = pCsr->csr.aDoclist;
+    int iCol;
+
+    int eState = 0;
+
+    if( pCsr->zStop ){
+      int n = (pCsr->nStop<pCsr->csr.nTerm) ? pCsr->nStop : pCsr->csr.nTerm;
+      int mc = memcmp(pCsr->zStop, pCsr->csr.zTerm, n);
+      if( mc<0 || (mc==0 && pCsr->csr.nTerm>pCsr->nStop) ){
+        pCsr->isEof = 1;
+        return SQLITE_OK;
+      }
+    }
+
+    if( fts3auxGrowStatArray(pCsr, 2) ) return SQLITE_NOMEM;
+    memset(pCsr->aStat, 0, sizeof(struct Fts3auxColstats) * pCsr->nStat);
+    iCol = 0;
+
+    while( i<nDoclist ){
+      sqlite3_int64 v = 0;
+
+      i += sqlite3Fts3GetVarint(&aDoclist[i], &v);
+      switch( eState ){
+        /* State 0. In this state the integer just read was a docid. */
+        case 0:
+          pCsr->aStat[0].nDoc++;
+          eState = 1;
+          iCol = 0;
+          break;
+
+        /* State 1. In this state we are expecting either a 1, indicating
+        ** that the following integer will be a column number, or the
+        ** start of a position list for column 0.  
+        ** 
+        ** The only difference between state 1 and state 2 is that if the
+        ** integer encountered in state 1 is not 0 or 1, then we need to
+        ** increment the column 0 "nDoc" count for this term.
+        */
+        case 1:
+          assert( iCol==0 );
+          if( v>1 ){
+            pCsr->aStat[1].nDoc++;
+          }
+          eState = 2;
+          /* fall through */
+
+        case 2:
+          if( v==0 ){       /* 0x00. Next integer will be a docid. */
+            eState = 0;
+          }else if( v==1 ){ /* 0x01. Next integer will be a column number. */
+            eState = 3;
+          }else{            /* 2 or greater. A position. */
+            pCsr->aStat[iCol+1].nOcc++;
+            pCsr->aStat[0].nOcc++;
+          }
+          break;
+
+        /* State 3. The integer just read is a column number. */
+        default: assert( eState==3 );
+          iCol = (int)v;
+          if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM;
+          pCsr->aStat[iCol+1].nDoc++;
+          eState = 2;
+          break;
+      }
+    }
+
+    pCsr->iCol = 0;
+    rc = SQLITE_OK;
+  }else{
+    pCsr->isEof = 1;
+  }
+  return rc;
+}
+
+/*
+** xFilter - Initialize a cursor to point at the start of its data.
+*/
+static int fts3auxFilterMethod(
+  sqlite3_vtab_cursor *pCursor,   /* The cursor used for this query */
+  int idxNum,                     /* Strategy index */
+  const char *idxStr,             /* Unused */
+  int nVal,                       /* Number of elements in apVal */
+  sqlite3_value **apVal           /* Arguments for the indexing scheme */
+){
+  Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
+  Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab;
+  int rc;
+  int isScan;
+
+  UNUSED_PARAMETER(nVal);
+
+  assert( idxStr==0 );
+  assert( idxNum==FTS4AUX_EQ_CONSTRAINT || idxNum==0
+       || idxNum==FTS4AUX_LE_CONSTRAINT || idxNum==FTS4AUX_GE_CONSTRAINT
+       || idxNum==(FTS4AUX_LE_CONSTRAINT|FTS4AUX_GE_CONSTRAINT)
+  );
+  isScan = (idxNum!=FTS4AUX_EQ_CONSTRAINT);
+
+  /* In case this cursor is being reused, close and zero it. */
+  testcase(pCsr->filter.zTerm);
+  sqlite3Fts3SegReaderFinish(&pCsr->csr);
+  sqlite3_free((void *)pCsr->filter.zTerm);
+  sqlite3_free(pCsr->aStat);
+  memset(&pCsr->csr, 0, ((u8*)&pCsr[1]) - (u8*)&pCsr->csr);
+
+  pCsr->filter.flags = FTS3_SEGMENT_REQUIRE_POS|FTS3_SEGMENT_IGNORE_EMPTY;
+  if( isScan ) pCsr->filter.flags |= FTS3_SEGMENT_SCAN;
+
+  if( idxNum&(FTS4AUX_EQ_CONSTRAINT|FTS4AUX_GE_CONSTRAINT) ){
+    const unsigned char *zStr = sqlite3_value_text(apVal[0]);
+    if( zStr ){
+      pCsr->filter.zTerm = sqlite3_mprintf("%s", zStr);
+      pCsr->filter.nTerm = sqlite3_value_bytes(apVal[0]);
+      if( pCsr->filter.zTerm==0 ) return SQLITE_NOMEM;
+    }
+  }
+  if( idxNum&FTS4AUX_LE_CONSTRAINT ){
+    int iIdx = (idxNum&FTS4AUX_GE_CONSTRAINT) ? 1 : 0;
+    pCsr->zStop = sqlite3_mprintf("%s", sqlite3_value_text(apVal[iIdx]));
+    pCsr->nStop = sqlite3_value_bytes(apVal[iIdx]);
+    if( pCsr->zStop==0 ) return SQLITE_NOMEM;
+  }
+
+  rc = sqlite3Fts3SegReaderCursor(pFts3, FTS3_SEGCURSOR_ALL,
+      pCsr->filter.zTerm, pCsr->filter.nTerm, 0, isScan, &pCsr->csr
+  );
+  if( rc==SQLITE_OK ){
+    rc = sqlite3Fts3SegReaderStart(pFts3, &pCsr->csr, &pCsr->filter);
+  }
+
+  if( rc==SQLITE_OK ) rc = fts3auxNextMethod(pCursor);
+  return rc;
+}
+
+/*
+** xEof - Return true if the cursor is at EOF, or false otherwise.
+*/
+static int fts3auxEofMethod(sqlite3_vtab_cursor *pCursor){
+  Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
+  return pCsr->isEof;
+}
+
+/*
+** xColumn - Return a column value.
+*/
+static int fts3auxColumnMethod(
+  sqlite3_vtab_cursor *pCursor,   /* Cursor to retrieve value from */
+  sqlite3_context *pContext,      /* Context for sqlite3_result_xxx() calls */
+  int iCol                        /* Index of column to read value from */
+){
+  Fts3auxCursor *p = (Fts3auxCursor *)pCursor;
+
+  assert( p->isEof==0 );
+  if( iCol==0 ){        /* Column "term" */
+    sqlite3_result_text(pContext, p->csr.zTerm, p->csr.nTerm, SQLITE_TRANSIENT);
+  }else if( iCol==1 ){  /* Column "col" */
+    if( p->iCol ){
+      sqlite3_result_int(pContext, p->iCol-1);
+    }else{
+      sqlite3_result_text(pContext, "*", -1, SQLITE_STATIC);
+    }
+  }else if( iCol==2 ){  /* Column "documents" */
+    sqlite3_result_int64(pContext, p->aStat[p->iCol].nDoc);
+  }else{                /* Column "occurrences" */
+    sqlite3_result_int64(pContext, p->aStat[p->iCol].nOcc);
+  }
+
+  return SQLITE_OK;
+}
+
+/*
+** xRowid - Return the current rowid for the cursor.
+*/
+static int fts3auxRowidMethod(
+  sqlite3_vtab_cursor *pCursor,   /* Cursor to retrieve value from */
+  sqlite_int64 *pRowid            /* OUT: Rowid value */
+){
+  Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
+  *pRowid = pCsr->iRowid;
+  return SQLITE_OK;
+}
+
+/*
+** Register the fts3aux module with database connection db. Return SQLITE_OK
+** if successful or an error code if sqlite3_create_module() fails.
+*/
+SQLITE_PRIVATE int sqlite3Fts3InitAux(sqlite3 *db){
+  static const sqlite3_module fts3aux_module = {
+     0,                           /* iVersion      */
+     fts3auxConnectMethod,        /* xCreate       */
+     fts3auxConnectMethod,        /* xConnect      */
+     fts3auxBestIndexMethod,      /* xBestIndex    */
+     fts3auxDisconnectMethod,     /* xDisconnect   */
+     fts3auxDisconnectMethod,     /* xDestroy      */
+     fts3auxOpenMethod,           /* xOpen         */
+     fts3auxCloseMethod,          /* xClose        */
+     fts3auxFilterMethod,         /* xFilter       */
+     fts3auxNextMethod,           /* xNext         */
+     fts3auxEofMethod,            /* xEof          */
+     fts3auxColumnMethod,         /* xColumn       */
+     fts3auxRowidMethod,          /* xRowid        */
+     0,                           /* xUpdate       */
+     0,                           /* xBegin        */
+     0,                           /* xSync         */
+     0,                           /* xCommit       */
+     0,                           /* xRollback     */
+     0,                           /* xFindFunction */
+     0                            /* xRename       */
+  };
+  int rc;                         /* Return code */
+
+  rc = sqlite3_create_module(db, "fts4aux", &fts3aux_module, 0);
+  return rc;
+}
+
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */
+
+/************** End of fts3_aux.c ********************************************/
 /************** Begin file fts3_expr.c ***************************************/
 /*
 ** 2008 Nov 28
@@ -114979,7 +117820,7 @@ static int fts3SqlStmt(
 /* 4  */  "DELETE FROM %Q.'%q_segdir'",
 /* 5  */  "DELETE FROM %Q.'%q_docsize'",
 /* 6  */  "DELETE FROM %Q.'%q_stat'",
-/* 7  */  "SELECT * FROM %Q.'%q_content' WHERE rowid=?",
+/* 7  */  "SELECT %s FROM %Q.'%q_content' AS x WHERE rowid=?",
 /* 8  */  "SELECT (SELECT max(idx) FROM %Q.'%q_segdir' WHERE level = ?) + 1",
 /* 9  */  "INSERT INTO %Q.'%q_segments'(blockid, block) VALUES(?, ?)",
 /* 10 */  "SELECT coalesce((SELECT max(blockid) FROM %Q.'%q_segments') + 1, 1)",
@@ -114996,7 +117837,7 @@ static int fts3SqlStmt(
 
 /* 16 */  "DELETE FROM %Q.'%q_segdir' WHERE level = ?",
 /* 17 */  "DELETE FROM %Q.'%q_segments' WHERE blockid BETWEEN ? AND ?",
-/* 18 */  "INSERT INTO %Q.'%q_content' VALUES(%z)",
+/* 18 */  "INSERT INTO %Q.'%q_content' VALUES(%s)",
 /* 19 */  "DELETE FROM %Q.'%q_docsize' WHERE docid = ?",
 /* 20 */  "REPLACE INTO %Q.'%q_docsize' VALUES(?,?)",
 /* 21 */  "SELECT size FROM %Q.'%q_docsize' WHERE docid=?",
@@ -115013,20 +117854,9 @@ static int fts3SqlStmt(
   if( !pStmt ){
     char *zSql;
     if( eStmt==SQL_CONTENT_INSERT ){
-      int i;                      /* Iterator variable */  
-      char *zVarlist;             /* The "?, ?, ..." string */
-      zVarlist = (char *)sqlite3_malloc(2*p->nColumn+2);
-      if( !zVarlist ){
-        *pp = 0;
-        return SQLITE_NOMEM;
-      }
-      zVarlist[0] = '?';
-      zVarlist[p->nColumn*2+1] = '\0';
-      for(i=1; i<=p->nColumn; i++){
-        zVarlist[i*2-1] = ',';
-        zVarlist[i*2] = '?';
-      }
-      zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName, zVarlist);
+      zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName, p->zWriteExprlist);
+    }else if( eStmt==SQL_SELECT_CONTENT_BY_ROWID ){
+      zSql = sqlite3_mprintf(azSql[eStmt], p->zReadExprlist, p->zDb, p->zName);
     }else{
       zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName);
     }
@@ -115067,7 +117897,7 @@ static int fts3SelectDocsize(
       sqlite3_bind_int64(pStmt, 1, iDocid);
     }
     rc = sqlite3_step(pStmt);
-    if( rc!=SQLITE_ROW ){
+    if( rc!=SQLITE_ROW || sqlite3_column_type(pStmt, 0)!=SQLITE_BLOB ){
       rc = sqlite3_reset(pStmt);
       if( rc==SQLITE_OK ) rc = SQLITE_CORRUPT;
       pStmt = 0;
@@ -115168,8 +117998,17 @@ SQLITE_PRIVATE int sqlite3Fts3ReadLock(Fts3Table *p){
 **   3: end_block
 **   4: root
 */
-SQLITE_PRIVATE int sqlite3Fts3AllSegdirs(Fts3Table *p, sqlite3_stmt **ppStmt){
-  return fts3SqlStmt(p, SQL_SELECT_ALL_LEVEL, ppStmt, 0);
+SQLITE_PRIVATE int sqlite3Fts3AllSegdirs(Fts3Table *p, int iLevel, sqlite3_stmt **ppStmt){
+  int rc;
+  sqlite3_stmt *pStmt = 0;
+  if( iLevel<0 ){
+    rc = fts3SqlStmt(p, SQL_SELECT_ALL_LEVEL, &pStmt, 0);
+  }else{
+    rc = fts3SqlStmt(p, SQL_SELECT_LEVEL, &pStmt, 0);
+    if( rc==SQLITE_OK ) sqlite3_bind_int(pStmt, 1, iLevel);
+  }
+  *ppStmt = pStmt;
+  return rc;
 }
 
 
@@ -115871,16 +118710,18 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderCost(
       sqlite3_stmt *pStmt;
       sqlite3_int64 nDoc = 0;
       sqlite3_int64 nByte = 0;
+      const char *pEnd;
       const char *a;
+
       rc = sqlite3Fts3SelectDoctotal(p, &pStmt);
-      if( rc ) return rc;
+      if( rc!=SQLITE_OK ) return rc;
       a = sqlite3_column_blob(pStmt, 0);
-      if( a ){
-        const char *pEnd = &a[sqlite3_column_bytes(pStmt, 0)];
-        a += sqlite3Fts3GetVarint(a, &nDoc);
-        while( a<pEnd ){
-          a += sqlite3Fts3GetVarint(a, &nByte);
-        }
+      assert( a );
+
+      pEnd = &a[sqlite3_column_bytes(pStmt, 0)];
+      a += sqlite3Fts3GetVarint(a, &nDoc);
+      while( a<pEnd ){
+        a += sqlite3Fts3GetVarint(a, &nByte);
       }
       if( nDoc==0 || nByte==0 ){
         sqlite3_reset(pStmt);
@@ -116070,42 +118911,6 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderPending(
   return rc;
 }
 
-
-/*
-** The second argument to this function is expected to be a statement of
-** the form:
-**
-**   SELECT 
-**     idx,                  -- col 0
-**     start_block,          -- col 1
-**     leaves_end_block,     -- col 2
-**     end_block,            -- col 3
-**     root                  -- col 4
-**   FROM %_segdir ...
-**
-** This function allocates and initializes a Fts3SegReader structure to
-** iterate through the terms stored in the segment identified by the
-** current row that pStmt is pointing to. 
-**
-** If successful, the Fts3SegReader is left pointing to the first term
-** in the segment and SQLITE_OK is returned. Otherwise, an SQLite error
-** code is returned.
-*/
-static int fts3SegReaderNew(
-  sqlite3_stmt *pStmt,            /* See above */
-  int iAge,                       /* Segment "age". */
-  Fts3SegReader **ppReader        /* OUT: Allocated Fts3SegReader */
-){
-  return sqlite3Fts3SegReaderNew(iAge, 
-      sqlite3_column_int64(pStmt, 1),
-      sqlite3_column_int64(pStmt, 2),
-      sqlite3_column_int64(pStmt, 3),
-      sqlite3_column_blob(pStmt, 4),
-      sqlite3_column_bytes(pStmt, 4),
-      ppReader
-  );
-}
-
 /*
 ** Compare the entries pointed to by two Fts3SegReader structures. 
 ** Comparison is as follows:
@@ -116710,25 +119515,6 @@ static int fts3IsEmpty(Fts3Table *p, sqlite3_value **apVal, int *pisEmpty){
   return rc;
 }
 
-/*
-** Set *pnSegment to the number of segments of level iLevel in the database.
-**
-** Return SQLITE_OK if successful, or an SQLite error code if not.
-*/
-static int fts3SegmentCount(Fts3Table *p, int iLevel, int *pnSegment){
-  sqlite3_stmt *pStmt;
-  int rc;
-
-  assert( iLevel>=0 );
-  rc = fts3SqlStmt(p, SQL_SELECT_LEVEL_COUNT, &pStmt, 0);
-  if( rc!=SQLITE_OK ) return rc;
-  sqlite3_bind_int(pStmt, 1, iLevel);
-  if( SQLITE_ROW==sqlite3_step(pStmt) ){
-    *pnSegment = sqlite3_column_int(pStmt, 0);
-  }
-  return sqlite3_reset(pStmt);
-}
-
 /*
 ** Set *pnSegment to the total number of segments in the database. Set
 ** *pnMax to the largest segment level in the database (segment levels
@@ -116787,15 +119573,18 @@ static int fts3DeleteSegdir(
     return rc;
   }
 
-  if( iLevel>=0 ){
+  if( iLevel==FTS3_SEGCURSOR_ALL ){
+    fts3SqlExec(&rc, p, SQL_DELETE_ALL_SEGDIR, 0);
+  }else if( iLevel==FTS3_SEGCURSOR_PENDING ){
+    sqlite3Fts3PendingTermsClear(p);
+  }else{
+    assert( iLevel>=0 );
     rc = fts3SqlStmt(p, SQL_DELETE_SEGDIR_BY_LEVEL, &pDelete, 0);
     if( rc==SQLITE_OK ){
       sqlite3_bind_int(pDelete, 1, iLevel);
       sqlite3_step(pDelete);
       rc = sqlite3_reset(pDelete);
     }
-  }else{
-    fts3SqlExec(&rc, p, SQL_DELETE_ALL_SEGDIR, 0);
   }
 
   return rc;
@@ -116844,85 +119633,15 @@ static void fts3ColumnFilter(
   *pnList = nList;
 }
 
-/*
-** sqlite3Fts3SegReaderIterate() callback used when merging multiple 
-** segments to create a single, larger segment.
-*/
-static int fts3MergeCallback(
-  Fts3Table *p,                   /* FTS3 Virtual table handle */
-  void *pContext,                 /* Pointer to SegmentWriter* to write with */
-  char *zTerm,                    /* Term to write to the db */
-  int nTerm,                      /* Number of bytes in zTerm */
-  char *aDoclist,                 /* Doclist associated with zTerm */
-  int nDoclist                    /* Number of bytes in doclist */
-){
-  SegmentWriter **ppW = (SegmentWriter **)pContext;
-  return fts3SegWriterAdd(p, ppW, 1, zTerm, nTerm, aDoclist, nDoclist);
-}
-
-/*
-** sqlite3Fts3SegReaderIterate() callback used when flushing the contents
-** of the pending-terms hash table to the database.
-*/
-static int fts3FlushCallback(
-  Fts3Table *p,                   /* FTS3 Virtual table handle */
-  void *pContext,                 /* Pointer to SegmentWriter* to write with */
-  char *zTerm,                    /* Term to write to the db */
-  int nTerm,                      /* Number of bytes in zTerm */
-  char *aDoclist,                 /* Doclist associated with zTerm */
-  int nDoclist                    /* Number of bytes in doclist */
-){
-  SegmentWriter **ppW = (SegmentWriter **)pContext;
-  return fts3SegWriterAdd(p, ppW, 0, zTerm, nTerm, aDoclist, nDoclist);
-}
-
-/*
-** This function is used to iterate through a contiguous set of terms 
-** stored in the full-text index. It merges data contained in one or 
-** more segments to support this.
-**
-** The second argument is passed an array of pointers to SegReader objects
-** allocated with sqlite3Fts3SegReaderNew(). This function merges the range 
-** of terms selected by each SegReader. If a single term is present in
-** more than one segment, the associated doclists are merged. For each
-** term and (possibly merged) doclist in the merged range, the callback
-** function xFunc is invoked with its arguments set as follows.
-**
-**   arg 0: Copy of 'p' parameter passed to this function
-**   arg 1: Copy of 'pContext' parameter passed to this function
-**   arg 2: Pointer to buffer containing term
-**   arg 3: Size of arg 2 buffer in bytes
-**   arg 4: Pointer to buffer containing doclist
-**   arg 5: Size of arg 2 buffer in bytes
-**
-** The 4th argument to this function is a pointer to a structure of type
-** Fts3SegFilter, defined in fts3Int.h. The contents of this structure
-** further restrict the range of terms that callbacks are made for and
-** modify the behaviour of this function. See comments above structure
-** definition for details.
-*/
-SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
+SQLITE_PRIVATE int sqlite3Fts3SegReaderStart(
   Fts3Table *p,                   /* Virtual table handle */
-  Fts3SegReader **apSegment,      /* Array of Fts3SegReader objects */
-  int nSegment,                   /* Size of apSegment array */
-  Fts3SegFilter *pFilter,         /* Restrictions on range of iteration */
-  int (*xFunc)(Fts3Table *, void *, char *, int, char *, int),  /* Callback */
-  void *pContext                  /* Callback context (2nd argument) */
+  Fts3SegReaderCursor *pCsr,      /* Cursor object */
+  Fts3SegFilter *pFilter          /* Restrictions on range of iteration */
 ){
-  int i;                          /* Iterator variable */
-  char *aBuffer = 0;              /* Buffer to merge doclists in */
-  int nAlloc = 0;                 /* Allocated size of aBuffer buffer */
-  int rc = SQLITE_OK;             /* Return code */
-
-  int isIgnoreEmpty =  (pFilter->flags & FTS3_SEGMENT_IGNORE_EMPTY);
-  int isRequirePos =   (pFilter->flags & FTS3_SEGMENT_REQUIRE_POS);
-  int isColFilter =    (pFilter->flags & FTS3_SEGMENT_COLUMN_FILTER);
-  int isPrefix =       (pFilter->flags & FTS3_SEGMENT_PREFIX);
+  int i;
 
-  /* If there are zero segments, this function is a no-op. This scenario
-  ** comes about only when reading from an empty database.
-  */
-  if( nSegment==0 ) goto finished;
+  /* Initialize the cursor object */
+  pCsr->pFilter = pFilter;
 
   /* If the Fts3SegFilter defines a specific term (or term prefix) to search 
   ** for, then advance each segment iterator until it points to a term of
@@ -116930,21 +119649,59 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
   ** unnecessary merge/sort operations for the case where single segment
   ** b-tree leaf nodes contain more than one term.
   */
-  for(i=0; i<nSegment; i++){
+  for(i=0; i<pCsr->nSegment; i++){
     int nTerm = pFilter->nTerm;
     const char *zTerm = pFilter->zTerm;
-    Fts3SegReader *pSeg = apSegment[i];
+    Fts3SegReader *pSeg = pCsr->apSegment[i];
     do {
-      rc = fts3SegReaderNext(p, pSeg);
-      if( rc!=SQLITE_OK ) goto finished;
+      int rc = fts3SegReaderNext(p, pSeg);
+      if( rc!=SQLITE_OK ) return rc;
     }while( zTerm && fts3SegReaderTermCmp(pSeg, zTerm, nTerm)<0 );
   }
+  fts3SegReaderSort(
+      pCsr->apSegment, pCsr->nSegment, pCsr->nSegment, fts3SegReaderCmp);
+
+  return SQLITE_OK;
+}
+
+SQLITE_PRIVATE int sqlite3Fts3SegReaderStep(
+  Fts3Table *p,                   /* Virtual table handle */
+  Fts3SegReaderCursor *pCsr       /* Cursor object */
+){
+  int rc = SQLITE_OK;
+
+  int isIgnoreEmpty =  (pCsr->pFilter->flags & FTS3_SEGMENT_IGNORE_EMPTY);
+  int isRequirePos =   (pCsr->pFilter->flags & FTS3_SEGMENT_REQUIRE_POS);
+  int isColFilter =    (pCsr->pFilter->flags & FTS3_SEGMENT_COLUMN_FILTER);
+  int isPrefix =       (pCsr->pFilter->flags & FTS3_SEGMENT_PREFIX);
+  int isScan =         (pCsr->pFilter->flags & FTS3_SEGMENT_SCAN);
+
+  Fts3SegReader **apSegment = pCsr->apSegment;
+  int nSegment = pCsr->nSegment;
+  Fts3SegFilter *pFilter = pCsr->pFilter;
+
+  if( pCsr->nSegment==0 ) return SQLITE_OK;
+
+  do {
+    int nMerge;
+    int i;
+  
+    /* Advance the first pCsr->nAdvance entries in the apSegment[] array
+    ** forward. Then sort the list in order of current term again.  
+    */
+    for(i=0; i<pCsr->nAdvance; i++){
+      rc = fts3SegReaderNext(p, apSegment[i]);
+      if( rc!=SQLITE_OK ) return rc;
+    }
+    fts3SegReaderSort(apSegment, nSegment, pCsr->nAdvance, fts3SegReaderCmp);
+    pCsr->nAdvance = 0;
+
+    /* If all the seg-readers are at EOF, we're finished. return SQLITE_OK. */
+    assert( rc==SQLITE_OK );
+    if( apSegment[0]->aNode==0 ) break;
 
-  fts3SegReaderSort(apSegment, nSegment, nSegment, fts3SegReaderCmp);
-  while( apSegment[0]->aNode ){
-    int nTerm = apSegment[0]->nTerm;
-    char *zTerm = apSegment[0]->zTerm;
-    int nMerge = 1;
+    pCsr->nTerm = apSegment[0]->nTerm;
+    pCsr->zTerm = apSegment[0]->zTerm;
 
     /* If this is a prefix-search, and if the term that apSegment[0] points
     ** to does not share a suffix with pFilter->zTerm/nTerm, then all 
@@ -116953,35 +119710,36 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
     ** Similarly, if this is a search for an exact match, and the first term
     ** of segment apSegment[0] is not a match, exit early.
     */
-    if( pFilter->zTerm ){
-      if( nTerm<pFilter->nTerm 
-       || (!isPrefix && nTerm>pFilter->nTerm)
-       || memcmp(zTerm, pFilter->zTerm, pFilter->nTerm) 
-    ){
-        goto finished;
+    if( pFilter->zTerm && !isScan ){
+      if( pCsr->nTerm<pFilter->nTerm 
+       || (!isPrefix && pCsr->nTerm>pFilter->nTerm)
+       || memcmp(pCsr->zTerm, pFilter->zTerm, pFilter->nTerm) 
+      ){
+        break;
       }
     }
 
+    nMerge = 1;
     while( nMerge<nSegment 
         && apSegment[nMerge]->aNode
-        && apSegment[nMerge]->nTerm==nTerm 
-        && 0==memcmp(zTerm, apSegment[nMerge]->zTerm, nTerm)
+        && apSegment[nMerge]->nTerm==pCsr->nTerm 
+        && 0==memcmp(pCsr->zTerm, apSegment[nMerge]->zTerm, pCsr->nTerm)
     ){
       nMerge++;
     }
 
     assert( isIgnoreEmpty || (isRequirePos && !isColFilter) );
     if( nMerge==1 && !isIgnoreEmpty ){
-      Fts3SegReader *p0 = apSegment[0];
-      rc = xFunc(p, pContext, zTerm, nTerm, p0->aDoclist, p0->nDoclist);
-      if( rc!=SQLITE_OK ) goto finished;
+      pCsr->aDoclist = apSegment[0]->aDoclist;
+      pCsr->nDoclist = apSegment[0]->nDoclist;
+      rc = SQLITE_ROW;
     }else{
       int nDoclist = 0;           /* Size of doclist */
       sqlite3_int64 iPrev = 0;    /* Previous docid stored in doclist */
 
       /* The current term of the first nMerge entries in the array
       ** of Fts3SegReader objects is the same. The doclists must be merged
-      ** and a single term added to the new segment.
+      ** and a single term returned with the merged doclist.
       */
       for(i=0; i<nMerge; i++){
         fts3SegReaderFirstDocid(apSegment[i]);
@@ -117009,52 +119767,55 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
 
         if( !isIgnoreEmpty || nList>0 ){
           nByte = sqlite3Fts3VarintLen(iDocid-iPrev) + (isRequirePos?nList+1:0);
-          if( nDoclist+nByte>nAlloc ){
+          if( nDoclist+nByte>pCsr->nBuffer ){
             char *aNew;
-            nAlloc = (nDoclist+nByte)*2;
-            aNew = sqlite3_realloc(aBuffer, nAlloc);
+            pCsr->nBuffer = (nDoclist+nByte)*2;
+            aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer);
             if( !aNew ){
-              rc = SQLITE_NOMEM;
-              goto finished;
+              return SQLITE_NOMEM;
             }
-            aBuffer = aNew;
+            pCsr->aBuffer = aNew;
           }
-          nDoclist += sqlite3Fts3PutVarint(&aBuffer[nDoclist], iDocid-iPrev);
+          nDoclist += sqlite3Fts3PutVarint(
+              &pCsr->aBuffer[nDoclist], iDocid-iPrev
+          );
           iPrev = iDocid;
           if( isRequirePos ){
-            memcpy(&aBuffer[nDoclist], pList, nList);
+            memcpy(&pCsr->aBuffer[nDoclist], pList, nList);
             nDoclist += nList;
-            aBuffer[nDoclist++] = '\0';
+            pCsr->aBuffer[nDoclist++] = '\0';
           }
         }
 
         fts3SegReaderSort(apSegment, nMerge, j, fts3SegReaderDoclistCmp);
       }
-
       if( nDoclist>0 ){
-        rc = xFunc(p, pContext, zTerm, nTerm, aBuffer, nDoclist);
-        if( rc!=SQLITE_OK ) goto finished;
+        pCsr->aDoclist = pCsr->aBuffer;
+        pCsr->nDoclist = nDoclist;
+        rc = SQLITE_ROW;
       }
     }
+    pCsr->nAdvance = nMerge;
+  }while( rc==SQLITE_OK );
 
-    /* If there is a term specified to filter on, and this is not a prefix
-    ** search, return now. The callback that corresponds to the required
-    ** term (if such a term exists in the index) has already been made.
-    */
-    if( pFilter->zTerm && !isPrefix ){
-      goto finished;
-    }
+  return rc;
+}
 
-    for(i=0; i<nMerge; i++){
-      rc = fts3SegReaderNext(p, apSegment[i]);
-      if( rc!=SQLITE_OK ) goto finished;
+SQLITE_PRIVATE void sqlite3Fts3SegReaderFinish(
+  Fts3SegReaderCursor *pCsr       /* Cursor object */
+){
+  if( pCsr ){
+    int i;
+    for(i=0; i<pCsr->nSegment; i++){
+      sqlite3Fts3SegReaderFree(pCsr->apSegment[i]);
     }
-    fts3SegReaderSort(apSegment, nSegment, nMerge, fts3SegReaderCmp);
-  }
+    sqlite3_free(pCsr->apSegment);
+    sqlite3_free(pCsr->aBuffer);
 
- finished:
-  sqlite3_free(aBuffer);
-  return rc;
+    pCsr->nSegment = 0;
+    pCsr->apSegment = 0;
+    pCsr->aBuffer = 0;
+  }
 }
 
 /*
@@ -117069,100 +119830,60 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
 ** an SQLite error code is returned.
 */
 static int fts3SegmentMerge(Fts3Table *p, int iLevel){
-  int i;                          /* Iterator variable */
   int rc;                         /* Return code */
-  int iIdx;                       /* Index of new segment */
+  int iIdx = 0;                   /* Index of new segment */
   int iNewLevel = 0;              /* Level to create new segment at */
-  sqlite3_stmt *pStmt = 0;
-  SegmentWriter *pWriter = 0;
-  int nSegment = 0;               /* Number of segments being merged */
-  Fts3SegReader **apSegment = 0;  /* Array of Segment iterators */
-  Fts3SegReader *pPending = 0;    /* Iterator for pending-terms */
+  SegmentWriter *pWriter = 0;     /* Used to write the new, merged, segment */
   Fts3SegFilter filter;           /* Segment term filter condition */
+  Fts3SegReaderCursor csr;        /* Cursor to iterate through level(s) */
 
-  if( iLevel<0 ){
+  rc = sqlite3Fts3SegReaderCursor(p, iLevel, 0, 0, 1, 0, &csr);
+  if( rc!=SQLITE_OK || csr.nSegment==0 ) goto finished;
+
+  if( iLevel==FTS3_SEGCURSOR_ALL ){
     /* This call is to merge all segments in the database to a single
     ** segment. The level of the new segment is equal to the the numerically 
     ** greatest segment level currently present in the database. The index
-    ** of the new segment is always 0.
-    */
-    iIdx = 0;
-    rc = sqlite3Fts3SegReaderPending(p, 0, 0, 1, &pPending);
-    if( rc!=SQLITE_OK ) goto finished;
-    rc = fts3SegmentCountMax(p, &nSegment, &iNewLevel);
-    if( rc!=SQLITE_OK ) goto finished;
-    nSegment += (pPending!=0);
-    if( nSegment<=1 ){
-      return SQLITE_DONE;
+    ** of the new segment is always 0.  */
+    int nDummy; /* TODO: Remove this */
+    if( csr.nSegment==1 ){
+      rc = SQLITE_DONE;
+      goto finished;
     }
+    rc = fts3SegmentCountMax(p, &nDummy, &iNewLevel);
   }else{
     /* This call is to merge all segments at level iLevel. Find the next
     ** available segment index at level iLevel+1. The call to
     ** fts3AllocateSegdirIdx() will merge the segments at level iLevel+1 to 
-    ** a single iLevel+2 segment if necessary.
-    */
+    ** a single iLevel+2 segment if necessary.  */
     iNewLevel = iLevel+1;
     rc = fts3AllocateSegdirIdx(p, iNewLevel, &iIdx);
-    if( rc!=SQLITE_OK ) goto finished;
-    rc = fts3SegmentCount(p, iLevel, &nSegment);
-    if( rc!=SQLITE_OK ) goto finished;
   }
-  assert( nSegment>0 );
+  if( rc!=SQLITE_OK ) goto finished;
+  assert( csr.nSegment>0 );
   assert( iNewLevel>=0 );
 
-  /* Allocate space for an array of pointers to segment iterators. */
-  apSegment = (Fts3SegReader**)sqlite3_malloc(sizeof(Fts3SegReader *)*nSegment);
-  if( !apSegment ){
-    rc = SQLITE_NOMEM;
-    goto finished;
-  }
-  memset(apSegment, 0, sizeof(Fts3SegReader *)*nSegment);
+  memset(&filter, 0, sizeof(Fts3SegFilter));
+  filter.flags = FTS3_SEGMENT_REQUIRE_POS;
+  filter.flags |= (iLevel==FTS3_SEGCURSOR_ALL ? FTS3_SEGMENT_IGNORE_EMPTY : 0);
 
-  /* Allocate a Fts3SegReader structure for each segment being merged. A 
-  ** Fts3SegReader stores the state data required to iterate through all 
-  ** entries on all leaves of a single segment. 
-  */
-  assert( SQL_SELECT_LEVEL+1==SQL_SELECT_ALL_LEVEL);
-  rc = fts3SqlStmt(p, SQL_SELECT_LEVEL+(iLevel<0), &pStmt, 0);
-  if( rc!=SQLITE_OK ) goto finished;
-  sqlite3_bind_int(pStmt, 1, iLevel);
-  for(i=0; SQLITE_ROW==(sqlite3_step(pStmt)); i++){
-    rc = fts3SegReaderNew(pStmt, i, &apSegment[i]);
-    if( rc!=SQLITE_OK ){
-      goto finished;
-    }
-  }
-  rc = sqlite3_reset(pStmt);
-  if( pPending ){
-    apSegment[i] = pPending;
-    pPending = 0;
+  rc = sqlite3Fts3SegReaderStart(p, &csr, &filter);
+  while( SQLITE_OK==rc ){
+    rc = sqlite3Fts3SegReaderStep(p, &csr);
+    if( rc!=SQLITE_ROW ) break;
+    rc = fts3SegWriterAdd(p, &pWriter, 1, 
+        csr.zTerm, csr.nTerm, csr.aDoclist, csr.nDoclist);
   }
-  pStmt = 0;
   if( rc!=SQLITE_OK ) goto finished;
+  assert( pWriter );
 
-  memset(&filter, 0, sizeof(Fts3SegFilter));
-  filter.flags = FTS3_SEGMENT_REQUIRE_POS;
-  filter.flags |= (iLevel<0 ? FTS3_SEGMENT_IGNORE_EMPTY : 0);
-  rc = sqlite3Fts3SegReaderIterate(p, apSegment, nSegment,
-      &filter, fts3MergeCallback, (void *)&pWriter
-  );
+  rc = fts3DeleteSegdir(p, iLevel, csr.apSegment, csr.nSegment);
   if( rc!=SQLITE_OK ) goto finished;
-
-  rc = fts3DeleteSegdir(p, iLevel, apSegment, nSegment);
-  if( rc==SQLITE_OK ){
-    rc = fts3SegWriterFlush(p, pWriter, iNewLevel, iIdx);
-  }
+  rc = fts3SegWriterFlush(p, pWriter, iNewLevel, iIdx);
 
  finished:
   fts3SegWriterFree(pWriter);
-  if( apSegment ){
-    for(i=0; i<nSegment; i++){
-      sqlite3Fts3SegReaderFree(apSegment[i]);
-    }
-    sqlite3_free(apSegment);
-  }
-  sqlite3Fts3SegReaderFree(pPending);
-  sqlite3_reset(pStmt);
+  sqlite3Fts3SegReaderFinish(&csr);
   return rc;
 }
 
@@ -117171,55 +119892,7 @@ static int fts3SegmentMerge(Fts3Table *p, int iLevel){
 ** Flush the contents of pendingTerms to a level 0 segment.
 */
 SQLITE_PRIVATE int sqlite3Fts3PendingTermsFlush(Fts3Table *p){
-  int rc;                         /* Return Code */
-  int idx;                        /* Index of new segment created */
-  SegmentWriter *pWriter = 0;     /* Used to write the segment */
-  Fts3SegReader *pReader = 0;     /* Used to iterate through the hash table */
-
-  /* Allocate a SegReader object to iterate through the contents of the
-  ** pending-terms table. If an error occurs, or if there are no terms
-  ** in the pending-terms table, return immediately.
-  */
-  rc = sqlite3Fts3SegReaderPending(p, 0, 0, 1, &pReader);
-  if( rc!=SQLITE_OK || pReader==0 ){
-    return rc;
-  }
-
-  /* Determine the next index at level 0. If level 0 is already full, this
-  ** call may merge all existing level 0 segments into a single level 1
-  ** segment.
-  */
-  rc = fts3AllocateSegdirIdx(p, 0, &idx);
-
-  /* If no errors have occured, iterate through the contents of the 
-  ** pending-terms hash table using the Fts3SegReader iterator. The callback
-  ** writes each term (along with its doclist) to the database via the
-  ** SegmentWriter handle pWriter.
-  */
-  if( rc==SQLITE_OK ){
-    void *c = (void *)&pWriter;   /* SegReaderIterate() callback context */
-    Fts3SegFilter f;              /* SegReaderIterate() parameters */
-
-    memset(&f, 0, sizeof(Fts3SegFilter));
-    f.flags = FTS3_SEGMENT_REQUIRE_POS;
-    rc = sqlite3Fts3SegReaderIterate(p, &pReader, 1, &f, fts3FlushCallback, c);
-  }
-  assert( pWriter || rc!=SQLITE_OK );
-
-  /* If no errors have occured, flush the SegmentWriter object to the
-  ** database. Then delete the SegmentWriter and Fts3SegReader objects
-  ** allocated by this function.
-  */
-  if( rc==SQLITE_OK ){
-    rc = fts3SegWriterFlush(p, pWriter, 0, idx);
-  }
-  fts3SegWriterFree(pWriter);
-  sqlite3Fts3SegReaderFree(pReader);
-
-  if( rc==SQLITE_OK ){
-    sqlite3Fts3PendingTermsClear(p);
-  }
-  return rc;
+  return fts3SegmentMerge(p, FTS3_SEGCURSOR_PENDING);
 }
 
 /*
@@ -117386,7 +120059,7 @@ static int fts3SpecialInsert(Fts3Table *p, sqlite3_value *pVal){
   if( !zVal ){
     return SQLITE_NOMEM;
   }else if( nVal==8 && 0==sqlite3_strnicmp(zVal, "optimize", 8) ){
-    rc = fts3SegmentMerge(p, -1);
+    rc = fts3SegmentMerge(p, FTS3_SEGCURSOR_ALL);
     if( rc==SQLITE_DONE ){
       rc = SQLITE_OK;
     }else{
@@ -117644,7 +120317,7 @@ SQLITE_PRIVATE int sqlite3Fts3Optimize(Fts3Table *p){
   int rc;
   rc = sqlite3_exec(p->db, "SAVEPOINT fts3", 0, 0, 0);
   if( rc==SQLITE_OK ){
-    rc = fts3SegmentMerge(p, -1);
+    rc = fts3SegmentMerge(p, FTS3_SEGCURSOR_ALL);
     if( rc==SQLITE_OK ){
       rc = sqlite3_exec(p->db, "RELEASE fts3", 0, 0, 0);
       if( rc==SQLITE_OK ){
@@ -118542,13 +121215,13 @@ static int fts3ExprLocalHitsCb(
   void *pCtx                      /* Pointer to MatchInfo structure */
 ){
   MatchInfo *p = (MatchInfo *)pCtx;
+  int iStart = iPhrase * p->nCol * 3;
+  int i;
+
+  for(i=0; i<p->nCol; i++) p->aMatchinfo[iStart+i*3] = 0;
 
   if( pExpr->aDoclist ){
     char *pCsr;
-    int iStart = iPhrase * p->nCol * 3;
-    int i;
-
-    for(i=0; i<p->nCol; i++) p->aMatchinfo[iStart+i*3] = 0;
 
     pCsr = sqlite3Fts3FindPositions(pExpr, p->pCursor->iPrevId, -1);
     if( pCsr ){
@@ -118622,6 +121295,7 @@ static int fts3MatchinfoSelectDoctotal(
 
   a = sqlite3_column_blob(pStmt, 0);
   a += sqlite3Fts3GetVarint(a, &nDoc);
+  if( nDoc==0 ) return SQLITE_CORRUPT;
   *pnDoc = (u32)nDoc;
 
   if( paLen ) *paLen = a;
@@ -118828,9 +121502,11 @@ static int fts3MatchinfoValues(
           if( rc==SQLITE_OK ){
             int iCol;
             for(iCol=0; iCol<pInfo->nCol; iCol++){
+              u32 iVal;
               sqlite3_int64 nToken;
               a += sqlite3Fts3GetVarint(a, &nToken);
-              pInfo->aMatchinfo[iCol] = (u32)(((u32)(nToken&0xffffffff)+nDoc/2)/nDoc);
+              iVal = (u32)(((u32)(nToken&0xffffffff)+nDoc/2)/nDoc);
+              pInfo->aMatchinfo[iCol] = iVal;
             }
           }
         }
@@ -120551,7 +123227,7 @@ static int rtreeFilter(
         rc = SQLITE_NOMEM;
       }else{
         memset(pCsr->aConstraint, 0, sizeof(RtreeConstraint)*argc);
-        assert( (idxStr==0 && argc==0) || strlen(idxStr)==argc*2 );
+        assert( (idxStr==0 && argc==0) || (int)strlen(idxStr)==argc*2 );
         for(ii=0; ii<argc; ii++){
           RtreeConstraint *p = &pCsr->aConstraint[ii];
           p->op = idxStr[ii*2];
@@ -120636,7 +123312,7 @@ static int rtreeFilter(
 */
 static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
   int rc = SQLITE_OK;
-  int ii, cCol;
+  int ii;
 
   int iIdx = 0;
   char zIdxStr[RTREE_MAX_DIMENSIONS*8+1];
@@ -120644,7 +123320,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
   UNUSED_PARAMETER(tab);
 
   assert( pIdxInfo->idxStr==0 );
-  for(ii=0; ii<pIdxInfo->nConstraint; ii++){
+  for(ii=0; ii<pIdxInfo->nConstraint && iIdx<(int)(sizeof(zIdxStr)-1); ii++){
     struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[ii];
 
     if( p->usable && p->iColumn==0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ ){
@@ -120668,9 +123344,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
     }
 
     if( p->usable && (p->iColumn>0 || p->op==SQLITE_INDEX_CONSTRAINT_MATCH) ){
-      int j, opmsk;
-      static const unsigned char compatible[] = { 0, 0, 1, 1, 2, 2 };
-      u8 op = 0;
+      u8 op;
       switch( p->op ){
         case SQLITE_INDEX_CONSTRAINT_EQ: op = RTREE_EQ; break;
         case SQLITE_INDEX_CONSTRAINT_GT: op = RTREE_GT; break;
@@ -120682,37 +123356,10 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
           op = RTREE_MATCH; 
           break;
       }
-      assert( op!=0 );
-
-      /* Make sure this particular constraint has not been used before.
-      ** If it has been used before, ignore it.
-      **
-      ** A <= or < can be used if there is a prior >= or >.
-      ** A >= or > can be used if there is a prior < or <=.
-      ** A <= or < is disqualified if there is a prior <=, <, or ==.
-      ** A >= or > is disqualified if there is a prior >=, >, or ==.
-      ** A == is disqualifed if there is any prior constraint.
-      */
-      assert( compatible[RTREE_EQ & 7]==0 );
-      assert( compatible[RTREE_LT & 7]==1 );
-      assert( compatible[RTREE_LE & 7]==1 );
-      assert( compatible[RTREE_GT & 7]==2 );
-      assert( compatible[RTREE_GE & 7]==2 );
-      cCol = p->iColumn - 1 + 'a';
-      opmsk = compatible[op & 7];
-      for(j=0; j<iIdx; j+=2){
-        if( zIdxStr[j+1]==cCol && (compatible[zIdxStr[j] & 7] & opmsk)!=0 ){
-          op = 0;
-          break;
-        }
-      }
-      if( op ){
-        assert( iIdx<sizeof(zIdxStr)-1 );
-        zIdxStr[iIdx++] = op;
-        zIdxStr[iIdx++] = cCol;
-        pIdxInfo->aConstraintUsage[ii].argvIndex = (iIdx/2);
-        pIdxInfo->aConstraintUsage[ii].omit = 1;
-      }
+      zIdxStr[iIdx++] = op;
+      zIdxStr[iIdx++] = p->iColumn - 1 + 'a';
+      pIdxInfo->aConstraintUsage[ii].argvIndex = (iIdx/2);
+      pIdxInfo->aConstraintUsage[ii].omit = 1;
     }
   }
 
@@ -122416,7 +125063,7 @@ static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
     int jj;
 
     nodeGetCell(&tree, &node, ii, &cell);
-    sqlite3_snprintf(512-nCell,&zCell[nCell],"%d", cell.iRowid);
+    sqlite3_snprintf(512-nCell,&zCell[nCell],"%lld", cell.iRowid);
     nCell = strlen(zCell);
     for(jj=0; jj<tree.nDim*2; jj++){
       sqlite3_snprintf(512-nCell,&zCell[nCell]," %f",(double)cell.aCoord[jj].f);
@@ -122797,6 +125444,8 @@ static void icuRegexpFunc(sqlite3_context *p, int nArg, sqlite3_value **apArg){
   UBool res;
   const UChar *zString = sqlite3_value_text16(apArg[1]);
 
+  (void)nArg;  /* Unused parameter */
+
   /* If the left hand side of the regexp operator is NULL, 
   ** then the result is also NULL. 
   */
@@ -123025,7 +125674,7 @@ SQLITE_PRIVATE int sqlite3IcuInit(sqlite3 *db){
   int rc = SQLITE_OK;
   int i;
 
-  for(i=0; rc==SQLITE_OK && i<(sizeof(scalars)/sizeof(struct IcuScalar)); i++){
+  for(i=0; rc==SQLITE_OK && i<(int)(sizeof(scalars)/sizeof(scalars[0])); i++){
     struct IcuScalar *p = &scalars[i];
     rc = sqlite3_create_function(
         db, p->zName, p->nArg, p->enc, p->pContext, p->xFunc, 0, 0
diff --git a/l4/pkg/sqlite/lib/contrib/sqlite3.h b/l4/pkg/sqlite/lib/contrib/sqlite3.h
index 75f96dd33..3b7eb94dd 100644
--- a/l4/pkg/sqlite/lib/contrib/sqlite3.h
+++ b/l4/pkg/sqlite/lib/contrib/sqlite3.h
@@ -107,9 +107,9 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.7.5"
-#define SQLITE_VERSION_NUMBER 3007005
-#define SQLITE_SOURCE_ID      "2011-01-28 17:03:50 ed759d5a9edb3bba5f48f243df47be29e3fe8cd7"
+#define SQLITE_VERSION        "3.7.6.2"
+#define SQLITE_VERSION_NUMBER 3007006
+#define SQLITE_SOURCE_ID      "2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -483,6 +483,8 @@ SQLITE_API int sqlite3_exec(
 #define SQLITE_OPEN_PRIVATECACHE     0x00040000  /* Ok for sqlite3_open_v2() */
 #define SQLITE_OPEN_WAL              0x00080000  /* VFS only */
 
+/* Reserved:                         0x00F00000 */
+
 /*
 ** CAPI3REF: Device Characteristics
 **
@@ -730,7 +732,7 @@ struct sqlite3_io_methods {
 ** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most 
 ** VFSes do not need this signal and should silently ignore this opcode.
 ** Applications should not call [sqlite3_file_control()] with this
-** opcode as doing so may disrupt the operation of the specilized VFSes
+** opcode as doing so may disrupt the operation of the specialized VFSes
 ** that do require it.  
 */
 #define SQLITE_FCNTL_LOCKSTATE        1
@@ -896,10 +898,23 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** date and time if that method is available (if iVersion is 2 or 
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
+**
+** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
+** are not used by the SQLite core.  These optional interfaces are provided
+** by some VFSes to facilitate testing of the VFS code. By overriding 
+** system calls with functions under its control, a test program can
+** simulate faults and error conditions that would otherwise be difficult
+** or impossible to induce.  The set of system calls that can be overridden
+** varies from one VFS to another, and from one version of the same VFS to the
+** next.  Applications that use these interfaces must be prepared for any
+** or all of these interfaces to be NULL or for their behavior to change
+** from one release to the next.  Applications must not attempt to access
+** any of these methods if the iVersion of the VFS is less than 3.
 */
 typedef struct sqlite3_vfs sqlite3_vfs;
+typedef void (*sqlite3_syscall_ptr)(void);
 struct sqlite3_vfs {
-  int iVersion;            /* Structure version number (currently 2) */
+  int iVersion;            /* Structure version number (currently 3) */
   int szOsFile;            /* Size of subclassed sqlite3_file */
   int mxPathname;          /* Maximum file pathname length */
   sqlite3_vfs *pNext;      /* Next registered VFS */
@@ -925,6 +940,13 @@ struct sqlite3_vfs {
   int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
   /*
   ** The methods above are in versions 1 and 2 of the sqlite_vfs object.
+  ** Those below are for version 3 and greater.
+  */
+  int (*xSetSystemCall)(sqlite3_vfs*, const char *zName, sqlite3_syscall_ptr);
+  sqlite3_syscall_ptr (*xGetSystemCall)(sqlite3_vfs*, const char *zName);
+  const char *(*xNextSystemCall)(sqlite3_vfs*, const char *zName);
+  /*
+  ** The methods above are in versions 1 through 3 of the sqlite_vfs object.
   ** New fields may be appended in figure versions.  The iVersion
   ** value will increment whenever this happens. 
   */
@@ -1109,17 +1131,12 @@ SQLITE_API int sqlite3_config(int, ...);
 ** The sqlite3_db_config() interface is used to make configuration
 ** changes to a [database connection].  The interface is similar to
 ** [sqlite3_config()] except that the changes apply to a single
-** [database connection] (specified in the first argument).  The
-** sqlite3_db_config() interface should only be used immediately after
-** the database connection is created using [sqlite3_open()],
-** [sqlite3_open16()], or [sqlite3_open_v2()].  
+** [database connection] (specified in the first argument).
 **
 ** The second argument to sqlite3_db_config(D,V,...)  is the
-** configuration verb - an integer code that indicates what
-** aspect of the [database connection] is being configured.
-** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE].
-** New verbs are likely to be added in future releases of SQLite.
-** Additional arguments depend on the verb.
+** [SQLITE_DBCONFIG_LOOKASIDE | configuration verb] - an integer code 
+** that indicates what aspect of the [database connection] is being configured.
+** Subsequent arguments vary depending on the configuration verb.
 **
 ** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
 ** the call is considered successful.
@@ -1297,7 +1314,7 @@ struct sqlite3_mem_methods {
 ** <dt>SQLITE_CONFIG_SCRATCH</dt>
 ** <dd> ^This option specifies a static memory buffer that SQLite can use for
 ** scratch memory.  There are three arguments:  A pointer an 8-byte
-** aligned memory buffer from which the scrach allocations will be
+** aligned memory buffer from which the scratch allocations will be
 ** drawn, the size of each scratch allocation (sz),
 ** and the maximum number of scratch allocations (N).  The sz
 ** argument must be a multiple of 16.
@@ -1344,7 +1361,9 @@ struct sqlite3_mem_methods {
 ** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
 ** allocator is engaged to handle all of SQLites memory allocation needs.
 ** The first pointer (the memory pointer) must be aligned to an 8-byte
-** boundary or subsequent behavior of SQLite will be undefined.</dd>
+** boundary or subsequent behavior of SQLite will be undefined.
+** The minimum allocation size is capped at 2^12. Reasonable values
+** for the minimum allocation size are 2^5 through 2^8.</dd>
 **
 ** <dt>SQLITE_CONFIG_MUTEX</dt>
 ** <dd> ^(This option takes a single argument which is a pointer to an
@@ -1447,7 +1466,7 @@ struct sqlite3_mem_methods {
 ** <dd> ^This option takes three additional arguments that determine the 
 ** [lookaside memory allocator] configuration for the [database connection].
 ** ^The first argument (the third parameter to [sqlite3_db_config()] is a
-** pointer to an memory buffer to use for lookaside memory.
+** pointer to a memory buffer to use for lookaside memory.
 ** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
 ** may be NULL in which case SQLite will allocate the
 ** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
@@ -1465,9 +1484,31 @@ struct sqlite3_mem_methods {
 ** memory is in use leaves the configuration unchanged and returns 
 ** [SQLITE_BUSY].)^</dd>
 **
+** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
+** <dd> ^This option is used to enable or disable the enforcement of
+** [foreign key constraints].  There should be two additional arguments.
+** The first argument is an integer which is 0 to disable FK enforcement,
+** positive to enable FK enforcement or negative to leave FK enforcement
+** unchanged.  The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether FK enforcement is off or on
+** following this call.  The second parameter may be a NULL pointer, in
+** which case the FK enforcement setting is not reported back. </dd>
+**
+** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
+** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
+** There should be two additional arguments.
+** The first argument is an integer which is 0 to disable triggers,
+** positive to enable triggers or negative to leave the setting unchanged.
+** The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether triggers are disabled or enabled
+** following this call.  The second parameter may be a NULL pointer, in
+** which case the trigger setting is not reported back. </dd>
+**
 ** </dl>
 */
-#define SQLITE_DBCONFIG_LOOKASIDE    1001  /* void* int int */
+#define SQLITE_DBCONFIG_LOOKASIDE       1001  /* void* int int */
+#define SQLITE_DBCONFIG_ENABLE_FKEY     1002  /* int int* */
+#define SQLITE_DBCONFIG_ENABLE_TRIGGER  1003  /* int int* */
 
 
 /*
@@ -2069,7 +2110,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 /*
 ** CAPI3REF: Compile-Time Authorization Callbacks
 **
-** ^This routine registers a authorizer callback with a particular
+** ^This routine registers an authorizer callback with a particular
 ** [database connection], supplied in the first argument.
 ** ^The authorizer callback is invoked as SQL statements are being compiled
 ** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
@@ -2671,7 +2712,7 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
 /*
 ** CAPI3REF: Determine If An SQL Statement Writes The Database
 **
-** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if 
+** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
 ** and only if the [prepared statement] X makes no direct changes to
 ** the content of the database file.
 **
@@ -2715,7 +2756,7 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
 ** whether or not it requires a protected sqlite3_value.
 **
 ** The terms "protected" and "unprotected" refer to whether or not
-** a mutex is held.  A internal mutex is held for a protected
+** a mutex is held.  An internal mutex is held for a protected
 ** sqlite3_value object but no mutex is held for an unprotected
 ** sqlite3_value object.  If SQLite is compiled to be single-threaded
 ** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
@@ -2939,7 +2980,9 @@ SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
 ** column number.  ^The leftmost column is number 0.
 **
 ** ^The returned string pointer is valid until either the [prepared statement]
-** is destroyed by [sqlite3_finalize()] or until the next call to
+** is destroyed by [sqlite3_finalize()] or until the statement is automatically
+** reprepared by the first call to [sqlite3_step()] for a particular run
+** or until the next call to
 ** sqlite3_column_name() or sqlite3_column_name16() on the same column.
 **
 ** ^If sqlite3_malloc() fails during the processing of either routine
@@ -2965,7 +3008,9 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
 ** the database name, the _table_ routines return the table name, and
 ** the origin_ routines return the column name.
 ** ^The returned string is valid until the [prepared statement] is destroyed
-** using [sqlite3_finalize()] or until the same information is requested
+** using [sqlite3_finalize()] or until the statement is automatically
+** reprepared by the first call to [sqlite3_step()] for a particular run
+** or until the same information is requested
 ** again in a different encoding.
 **
 ** ^The names returned are the original un-aliased names of the
@@ -3397,7 +3442,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** are used to add SQL functions or aggregates or to redefine the behavior
 ** of existing SQL functions or aggregates.  The only differences between
 ** these routines are the text encoding expected for
-** the the second parameter (the name of the function being created)
+** the second parameter (the name of the function being created)
 ** and the presence or absence of a destructor callback for
 ** the application data pointer.
 **
@@ -3442,7 +3487,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** callback only; NULL pointers must be passed as the xStep and xFinal
 ** parameters. ^An aggregate SQL function requires an implementation of xStep
 ** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing
-** SQL function or aggregate, pass NULL poiners for all three function
+** SQL function or aggregate, pass NULL pointers for all three function
 ** callbacks.
 **
 ** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
@@ -3876,7 +3921,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin
 ** on an even byte address.
 **
-** ^The fourth argument, pArg, is a application data pointer that is passed
+** ^The fourth argument, pArg, is an application data pointer that is passed
 ** through as the first argument to the collating function callback.
 **
 ** ^The fifth argument, xCallback, is a pointer to the collating function.
@@ -3892,7 +3937,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** by the eTextRep argument.  The collating function must return an
 ** integer that is negative, zero, or positive
 ** if the first string is less than, equal to, or greater than the second,
-** respectively.  A collating function must alway return the same answer
+** respectively.  A collating function must always return the same answer
 ** given the same inputs.  If two or more collating functions are registered
 ** to the same collation name (using different eTextRep values) then all
 ** must give an equivalent answer when invoked with equivalent strings.
@@ -4304,7 +4349,7 @@ SQLITE_API int sqlite3_release_memory(int);
 ** <li> Memory accounting is disabled using a combination of the
 **      [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and
 **      the [SQLITE_DEFAULT_MEMSTATUS] compile-time option.
-** <li> An alternative page cache implementation is specifed using
+** <li> An alternative page cache implementation is specified using
 **      [sqlite3_config]([SQLITE_CONFIG_PCACHE],...).
 ** <li> The page cache allocates from its own memory pool supplied
 **      by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
@@ -4525,7 +4570,7 @@ typedef struct sqlite3_module sqlite3_module;
 ** CAPI3REF: Virtual Table Object
 ** KEYWORDS: sqlite3_module {virtual table module}
 **
-** This structure, sometimes called a a "virtual table module", 
+** This structure, sometimes called a "virtual table module", 
 ** defines the implementation of a [virtual tables].  
 ** This structure consists mostly of methods for the module.
 **
@@ -4837,7 +4882,7 @@ typedef struct sqlite3_blob sqlite3_blob;
 ** This is true if any column of the row is changed, even a column
 ** other than the one the BLOB handle is open on.)^
 ** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
-** a expired BLOB handle fail with an return code of [SQLITE_ABORT].
+** an expired BLOB handle fail with a return code of [SQLITE_ABORT].
 ** ^(Changes written into a BLOB prior to the BLOB expiring are not
 ** rolled back by the expiration of the BLOB.  Such changes will eventually
 ** commit if the transaction continues to completion.)^
@@ -5539,24 +5584,21 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
 ** <dd>This parameter returns the number malloc attempts that were 
 ** satisfied using lookaside memory. Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
 ** <dd>This parameter returns the number malloc attempts that might have
 ** been satisfied using lookaside memory but failed due to the amount of
 ** memory requested being larger than the lookaside slot size.
 ** Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
 ** <dd>This parameter returns the number malloc attempts that might have
 ** been satisfied using lookaside memory but failed due to all lookaside
 ** memory already being in use.
 ** Only the high-water value is meaningful;
-** the current value is always zero.
-** checked out.</dd>)^
+** the current value is always zero.)^
 **
 ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
 ** <dd>This parameter returns the approximate number of of bytes of heap
@@ -6255,9 +6297,102 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
 ** from SQL.  ^The [sqlite3_wal_autocheckpoint()] interface and the
 ** [wal_autocheckpoint pragma] can be used to cause this interface to be
 ** run whenever the WAL reaches a certain size threshold.
+**
+** See also: [sqlite3_wal_checkpoint_v2()]
 */
 SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
 
+/*
+** CAPI3REF: Checkpoint a database
+**
+** Run a checkpoint operation on WAL database zDb attached to database 
+** handle db. The specific operation is determined by the value of the 
+** eMode parameter:
+**
+** <dl>
+** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
+**   Checkpoint as many frames as possible without waiting for any database 
+**   readers or writers to finish. Sync the db file if all frames in the log
+**   are checkpointed. This mode is the same as calling 
+**   sqlite3_wal_checkpoint(). The busy-handler callback is never invoked.
+**
+** <dt>SQLITE_CHECKPOINT_FULL<dd>
+**   This mode blocks (calls the busy-handler callback) until there is no
+**   database writer and all readers are reading from the most recent database
+**   snapshot. It then checkpoints all frames in the log file and syncs the
+**   database file. This call blocks database writers while it is running,
+**   but not database readers.
+**
+** <dt>SQLITE_CHECKPOINT_RESTART<dd>
+**   This mode works the same way as SQLITE_CHECKPOINT_FULL, except after 
+**   checkpointing the log file it blocks (calls the busy-handler callback)
+**   until all readers are reading from the database file only. This ensures 
+**   that the next client to write to the database file restarts the log file 
+**   from the beginning. This call blocks database writers while it is running,
+**   but not database readers.
+** </dl>
+**
+** If pnLog is not NULL, then *pnLog is set to the total number of frames in
+** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
+** the total number of checkpointed frames (including any that were already
+** checkpointed when this function is called). *pnLog and *pnCkpt may be
+** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
+** If no values are available because of an error, they are both set to -1
+** before returning to communicate this to the caller.
+**
+** All calls obtain an exclusive "checkpoint" lock on the database file. If
+** any other process is running a checkpoint operation at the same time, the 
+** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a 
+** busy-handler configured, it will not be invoked in this case.
+**
+** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive 
+** "writer" lock on the database file. If the writer lock cannot be obtained
+** immediately, and a busy-handler is configured, it is invoked and the writer
+** lock retried until either the busy-handler returns 0 or the lock is
+** successfully obtained. The busy-handler is also invoked while waiting for
+** database readers as described above. If the busy-handler returns 0 before
+** the writer lock is obtained or while waiting for database readers, the
+** checkpoint operation proceeds from that point in the same way as 
+** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible 
+** without blocking any further. SQLITE_BUSY is returned in this case.
+**
+** If parameter zDb is NULL or points to a zero length string, then the
+** specified operation is attempted on all WAL databases. In this case the
+** values written to output parameters *pnLog and *pnCkpt are undefined. If 
+** an SQLITE_BUSY error is encountered when processing one or more of the 
+** attached WAL databases, the operation is still attempted on any remaining 
+** attached databases and SQLITE_BUSY is returned to the caller. If any other 
+** error occurs while processing an attached database, processing is abandoned 
+** and the error code returned to the caller immediately. If no error 
+** (SQLITE_BUSY or otherwise) is encountered while processing the attached 
+** databases, SQLITE_OK is returned.
+**
+** If database zDb is the name of an attached database that is not in WAL
+** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
+** zDb is not NULL (or a zero length string) and is not the name of any
+** attached database, SQLITE_ERROR is returned to the caller.
+*/
+SQLITE_API int sqlite3_wal_checkpoint_v2(
+  sqlite3 *db,                    /* Database handle */
+  const char *zDb,                /* Name of attached database (or NULL) */
+  int eMode,                      /* SQLITE_CHECKPOINT_* value */
+  int *pnLog,                     /* OUT: Size of WAL log in frames */
+  int *pnCkpt                     /* OUT: Total number of frames checkpointed */
+);
+
+/*
+** CAPI3REF: Checkpoint operation parameters
+**
+** These constants can be used as the 3rd parameter to
+** [sqlite3_wal_checkpoint_v2()].  See the [sqlite3_wal_checkpoint_v2()]
+** documentation for additional information about the meaning and use of
+** each of these values.
+*/
+#define SQLITE_CHECKPOINT_PASSIVE 0
+#define SQLITE_CHECKPOINT_FULL    1
+#define SQLITE_CHECKPOINT_RESTART 2
+
+
 /*
 ** Undo the hack that converts floating point types to integer for
 ** builds on processors without floating point support.
diff --git a/l4/pkg/sqlite/lib/contrib/sqlite3.pc b/l4/pkg/sqlite/lib/contrib/sqlite3.pc
index 23c1e6540..51818e146 100644
--- a/l4/pkg/sqlite/lib/contrib/sqlite3.pc
+++ b/l4/pkg/sqlite/lib/contrib/sqlite3.pc
@@ -7,7 +7,7 @@ includedir=${prefix}/include
 
 Name: SQLite
 Description: SQL database engine
-Version: 3.7.5
+Version: 3.7.6.2
 Libs: -L${libdir} -lsqlite3
 Libs.private: -ldl -lpthread 
 Cflags: -I${includedir}
diff --git a/l4/pkg/tlsf/lib/build/Makefile b/l4/pkg/tlsf/lib/build/Makefile
index 5e0023bec..a5f2a2fa9 100644
--- a/l4/pkg/tlsf/lib/build/Makefile
+++ b/l4/pkg/tlsf/lib/build/Makefile
@@ -8,7 +8,6 @@ TARGET           = libtlfs.a libtlfs.so
 PC_FILENAME      = libtlsf
 CONTRIB_INCDIR   = libtlsf
 REQUIRES_LIBS    = libpthread libc_support_misc
-L4_MULTITHREADED = y
 SRC_C           += tlsf.c
 DEFINES          = -DTLSF_USE_LOCKS=1
 DEFINES         += -DUSE_MMAP=1
diff --git a/l4/pkg/tmpfs/lib/src/fs.cc b/l4/pkg/tmpfs/lib/src/fs.cc
index d18218414..1e5383638 100644
--- a/l4/pkg/tmpfs/lib/src/fs.cc
+++ b/l4/pkg/tmpfs/lib/src/fs.cc
@@ -19,7 +19,6 @@
 
 #include <cstdio>
 
-
 namespace {
 
 using namespace L4Re::Vfs;
@@ -181,41 +180,39 @@ private:
   Pers_dir::Const_iterator _getdents_iter;
 };
 
-class Tmpfs_file : public Be_file
+class Tmpfs_file : public Be_file_pos
 {
 public:
   explicit Tmpfs_file(Ref_ptr<Pers_file> const &f) throw()
-    : Be_file(), _file(f), _pos(0) {}
+    : Be_file_pos(), _file(f) {}
 
-  ssize_t readv(const struct iovec*, int iovcnt) throw();
-  ssize_t writev(const struct iovec*, int iovcnt) throw();
-  off64_t lseek64(off64_t, int) throw();
+  off64_t size() const throw();
   int fstat64(struct stat64 *buf) const throw();
   int ioctl(unsigned long, va_list) throw();
   int utime(const struct utimbuf *) throw();
   int fchmod(mode_t) throw();
 
 private:
+  ssize_t preadv(const struct iovec *v, int iovcnt, off64_t p) throw();
+  ssize_t pwritev(const struct iovec *v, int iovcnt, off64_t p) throw();
   Ref_ptr<Pers_file> _file;
-  off64_t _pos;
 };
 
-ssize_t Tmpfs_file::readv(const struct iovec *v, int iovcnt) throw()
+ssize_t Tmpfs_file::preadv(const struct iovec *v, int iovcnt, off64_t p) throw()
 {
   if (iovcnt < 0)
     return -EINVAL;
 
-
   ssize_t sum = 0;
   for (int i = 0; i < iovcnt; ++i)
     {
-      sum  += _file->data().get(_pos, v[i].iov_len, v[i].iov_base);
-      _pos += v[i].iov_len;
+      sum  += _file->data().get(p, v[i].iov_len, v[i].iov_base);
+      p += v[i].iov_len;
     }
   return sum;
 }
 
-ssize_t Tmpfs_file::writev(const struct iovec *v, int iovcnt) throw()
+ssize_t Tmpfs_file::pwritev(const struct iovec *v, int iovcnt, off64_t p) throw()
 {
   if (iovcnt < 0)
     return -EINVAL;
@@ -223,8 +220,8 @@ ssize_t Tmpfs_file::writev(const struct iovec *v, int iovcnt) throw()
   ssize_t sum = 0;
   for (int i = 0; i < iovcnt; ++i)
     {
-      sum  += _file->data().put(_pos, v[i].iov_len, v[i].iov_base);
-      _pos += v[i].iov_len;
+      sum  += _file->data().put(p, v[i].iov_len, v[i].iov_base);
+      p += v[i].iov_len;
     }
   return sum;
 }
@@ -236,21 +233,8 @@ int Tmpfs_file::fstat64(struct stat64 *buf) const throw()
   return 0;
 }
 
-off64_t Tmpfs_file::lseek64(off64_t offset, int whence) throw()
-{
-  switch (whence)
-    {
-    case SEEK_SET: _pos = offset; break;
-    case SEEK_CUR: _pos += offset; break;
-    case SEEK_END: _pos = _file->data().size() + offset; break;
-    default: return -EINVAL;
-    };
-
-  if (_pos < 0)
-    return -EINVAL;
-
-  return _pos;
-}
+off64_t Tmpfs_file::size() const throw()
+{ return _file->data().size(); }
 
 int
 Tmpfs_file::ioctl(unsigned long v, va_list args) throw()
@@ -259,7 +243,7 @@ Tmpfs_file::ioctl(unsigned long v, va_list args) throw()
     {
     case FIONREAD: // return amount of data still available
       int *available = va_arg(args, int *);
-      *available = _file->data().size() - _pos;
+      *available = _file->data().size() - pos();
       return 0;
     };
   return -EINVAL;
@@ -348,6 +332,7 @@ Tmpfs_dir::getdents(char *buf, size_t sz) throw()
         l = sizeof(d->d_name);
 
       unsigned n = offsetof (struct dirent64, d_name) + l;
+      n = (n + sizeof(long) - 1) & ~(sizeof(long) - 1);
 
       if (n > sz)
         break;
@@ -397,8 +382,20 @@ Tmpfs_dir::walk_path(cxx::String const &_s,
 
   while (1)
     {
+      if (s.len() == 0)
+        {
+          *ret = p;
+          return 0;
+        }
+
       cxx::String::Index sep = s.find("/");
 
+      if (sep - s.start() == 1 && *s.start() == '.')
+        {
+          s = s.substr(s.start() + 2);
+          continue;
+        }
+
       n = p->find_path(s.head(sep - s.start()));
 
       if (!n)
@@ -436,6 +433,16 @@ Tmpfs_dir::mkdir(const char *name, mode_t mode) throw()
   cxx::String p = cxx::String(name);
   cxx::String path, last = p;
   cxx::String::Index s = p.rfind("/");
+
+  // trim /'s at the end
+  while (p.len() && s == p.end() - 1)
+    {
+      p.len(p.len() - 1);
+      s = p.rfind("/");
+    }
+
+  //printf("MKDIR '%s' p=%p %p\n", name, p.start(), s);
+
   if (s != p.end())
     {
       path = p.head(s);
@@ -449,6 +456,10 @@ Tmpfs_dir::mkdir(const char *name, mode_t mode) throw()
   if (!node->is_dir())
     return -ENOTDIR;
 
+  // due to path walking we can end up with an empty name
+  if (p.len() == 0 || p == cxx::String("."))
+    return 0;
+
   Ref_ptr<Pers_dir> dnode = cxx::ref_ptr_static_cast<Pers_dir>(node);
 
   Ref_ptr<Pers_dir> dir(new Pers_dir(last.start(), mode));
@@ -494,6 +505,6 @@ public:
   }
 };
 
-static Tmpfs_fs _tmpfs;
+static Tmpfs_fs _tmpfs L4RE_VFS_FILE_SYSTEM_ATTRIBUTE;
 
 }
diff --git a/l4/pkg/uclibc-headers/Control b/l4/pkg/uclibc-headers/Control
new file mode 100644
index 000000000..d10fd6e96
--- /dev/null
+++ b/l4/pkg/uclibc-headers/Control
@@ -0,0 +1,3 @@
+Provides: libc-headers
+source-pkg: uclibc
+Maintainer: adam@os.inf.tu-dresden.de
diff --git a/l4/pkg/uclibc-headers/Makefile b/l4/pkg/uclibc-headers/Makefile
new file mode 100644
index 000000000..33a8e2dfe
--- /dev/null
+++ b/l4/pkg/uclibc-headers/Makefile
@@ -0,0 +1,55 @@
+PKGDIR ?= .
+L4DIR  ?= $(PKGDIR)/../..
+
+LIBCSRC_DIR = $(PKGDIR)/../uclibc/lib/uclibc
+
+all:: include
+include:
+
+include $(LIBCSRC_DIR)/make_vars.mk
+
+HEADERS_LST := $(LIBCSRC_DIR_ABS)/target_headers.lst
+DST_HEADERS := $(shell cat $(HEADERS_LST))
+HEADER_DIR  := $(OBJ_DIR)/install_includes
+
+# just a few additions, handle them here directly
+DST_HEADERS-arm     := bits/arm_asm.h
+DST_HEADERS-sparc   := linux/sockios.h
+DST_HEADERS-ppc32   := asm/sockios.h asm/ioctl.h
+
+DST_HEADERS += $(DST_HEADERS-$(BUILD_ARCH))
+
+vpath %.h $(LIBCSRC_DIR)/ARCH-$(BUILD_ARCH)/include
+vpath %.h $(LIBCSRC_DIR)/ARCH-all/include
+vpath %.h $(CONTRIB_DIR)/libc/sysdeps/linux/$(UCLIBC_ARCH)
+vpath %.h $(CONTRIB_DIR)/libc/sysdeps/linux/common
+vpath %.h $(CONTRIB_DIR)/include
+
+all:: $(HEADERS_LST)
+
+DST_HEADERS   := $(addprefix $(HEADER_DIR)/,$(DST_HEADERS))
+INCDIRS_OBJ_m := $(HEADER_DIR)/Makefile
+
+$(DST_HEADERS): $(HEADER_DIR)/%: %
+	@$(INSTALL_LINK_MESSAGE)
+	$(VERBOSE)[ -d $(@D) ] || $(MKDIR) -p $(@D)
+	$(VERBOSE)$(LN) -sf $(call absfilename,$<) $@
+
+
+$(INCDIRS_OBJ_m):
+	$(VERBOSE)install -d $(dir $@)
+	$(VERBOSE)echo 'PKGDIR   ?= $(PKGDIR_ABS)' > $@
+	$(VERBOSE)echo 'L4DIR    ?= $(L4DIR_ABS)' >> $@
+	$(VERBOSE)echo 'OBJ_BASE ?= $(OBJ_BASE)' >> $@
+	$(VERBOSE)echo 'OBJ_DIR  ?= $(OBJ_DIR)' >> $@
+	$(VERBOSE)echo 'INSTALL_INC_PREFIX = uclibc' >> $@
+	$(VERBOSE)echo 'include $$(L4DIR)/mk/include.mk' >> $@
+
+include: $(DST_HEADERS) $(INCDIRS_OBJ_m)
+	$(VERBOSE)$(MAKE) $(MKFLAGS) -C $(HEADER_DIR)
+	$(VERBOSE)$(MAKE) $(MKFLAGS) -C $(LIBCSRC_DIR)/../libpthread/include
+
+
+#all include::
+#	$(MAKE) $(MKFLAGS) -C $(PKGDIR)/../uclibc/lib include
+
diff --git a/l4/pkg/uclibc-minimal/Control b/l4/pkg/uclibc-minimal/Control
new file mode 100644
index 000000000..ee03744d2
--- /dev/null
+++ b/l4/pkg/uclibc-minimal/Control
@@ -0,0 +1,4 @@
+provides: libc_minimal 
+requires: libc-headers
+source-pkg: uclibc
+Maintainer: adam@os.inf.tu-dresden.de
diff --git a/l4/pkg/uclibc-minimal/Makefile b/l4/pkg/uclibc-minimal/Makefile
new file mode 100644
index 000000000..8599c2611
--- /dev/null
+++ b/l4/pkg/uclibc-minimal/Makefile
@@ -0,0 +1,6 @@
+PKGDIR	?= .
+L4DIR	?= $(PKGDIR)/../..
+
+TARGET := libc
+
+include $(L4DIR)/mk/subdir.mk
diff --git a/l4/pkg/uclibc-minimal/libc/Make.rules b/l4/pkg/uclibc-minimal/libc/Make.rules
new file mode 100644
index 000000000..1bfb5bbc8
--- /dev/null
+++ b/l4/pkg/uclibc-minimal/libc/Make.rules
@@ -0,0 +1,32 @@
+# vi:ft=make
+PKGDIR		?= ..
+L4DIR		?= $(PKGDIR)/../..
+
+TARGET		:= libuc_c_minimal.a
+PC_FILENAME     := libc_minimal
+PC_LIBS         := -luc_c_minimal
+DEFINES		+= -DL4_MINIMAL_LIBC
+LIBCSRC_DIR	?= $(PKGDIR)/../uclibc/lib/uclibc
+
+include $(LIBCSRC_DIR)/make_vars.mk
+include $(LIBCSRC_DIR)/make_rules.mk
+include $(LIBCSRC_DIR)/contrib_files.mk
+
+DIRS := libc/string libc/pwd_grp libc/unistd libc/signal \
+        libc/stdlib libc/stdio libc/stdlib/malloc-standard \
+        libc/misc libc/sysdeps/linux libc/termios libm libcrypt
+
+SUB_MODULES :=
+
+# process all sources for the libc
+$(eval $(call PROCESS_src_lists, $(DIRS), $(SUB_MODULES)))
+# libm stuff
+$(eval $(call PROCESS_template_src, libm, float double))
+
+SRC_C_$(TARGET)  += $(UCLIBC_SRC_C)  $(UCLIBC_SRC_C_libuc_c_minimal.a)
+SRC_CC_$(TARGET) += $(UCLIBC_SRC_CC) $(UCLIBC_SRC_CC_libuc_c_minimal.a)
+SRC_S_$(TARGET)  += $(UCLIBC_SRC_S)  $(UCLIBC_SRC_S_libuc_c_minimal.a)
+
+.general.d: $(SRC_DIR)/Make.rules $(LIBCSRC_DIR)/contrib_files.mk
+
+
diff --git a/l4/pkg/uclibc-minimal/libc/Makefile b/l4/pkg/uclibc-minimal/libc/Makefile
new file mode 100644
index 000000000..52fe527a3
--- /dev/null
+++ b/l4/pkg/uclibc-minimal/libc/Makefile
@@ -0,0 +1,9 @@
+PKGDIR		?= ..
+L4DIR		?= $(PKGDIR)/../..
+
+LIBCSRC_DIR	?= $(PKGDIR)/../uclibc/lib/uclibc
+SYSTEMS		?= $(SYSTEMS_PLAIN)
+
+include $(L4DIR)/mk/Makeconf
+include $(LIBCSRC_DIR)/src_rules.mk
+
diff --git a/l4/pkg/uclibc/Control b/l4/pkg/uclibc/Control
index aa14cefe7..d2d4c0099 100644
--- a/l4/pkg/uclibc/Control
+++ b/l4/pkg/uclibc/Control
@@ -1,3 +1,3 @@
-Provides: libc
-requires: l4sys
-Maintainer: adam@os.inf.tu-dresden.de, boettcher@os.inf.tu-dresden.de
+Provides: libc libpthread
+requires: l4sys l4re
+Maintainer: adam@os.inf.tu-dresden.de
diff --git a/l4/pkg/uclibc/Makefile b/l4/pkg/uclibc/Makefile
index d4adc1ea6..eb41194a3 100644
--- a/l4/pkg/uclibc/Makefile
+++ b/l4/pkg/uclibc/Makefile
@@ -5,8 +5,3 @@ L4DIR  ?= $(PKGDIR)/../..
 # include subdir role
 include $(L4DIR)/mk/subdir.mk
 
-include: virt_dep
-
-.PHONY: virt_dep
-virt_dep:
-	$(VERBOSE)PWD=$(PWD)/lib/uclibc $(MAKE) -C lib/uclibc include
diff --git a/l4/pkg/uclibc/lib/Makefile b/l4/pkg/uclibc/lib/Makefile
index 5fe850517..e1c2d0833 100644
--- a/l4/pkg/uclibc/lib/Makefile
+++ b/l4/pkg/uclibc/lib/Makefile
@@ -1,9 +1,6 @@
 PKGDIR	?= ..
 L4DIR	?= $(PKGDIR)/../..
 
-TARGET = uclibc backends
-# libpthread is built via uclibc_r
+TARGET = uclibc libpthread
 
 include $(L4DIR)/mk/subdir.mk
-
-backends: uclibc
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/include/features.h b/l4/pkg/uclibc/lib/contrib/uclibc/include/features.h
index 1d47b5660..2d1de5251 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/include/features.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/include/features.h
@@ -19,6 +19,10 @@
 #ifndef	_FEATURES_H
 #define	_FEATURES_H	1
 
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
 /* These are defined by the user (or the compiler)
    to specify the desired environment:
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/include/tls.h b/l4/pkg/uclibc/lib/contrib/uclibc/include/tls.h
index f88af405b..987cb0860 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/include/tls.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/include/tls.h
@@ -1,13 +1,13 @@
 /* This file defines USE___THREAD to 1 or 0 to cut down on the #if mess.  */
 
-#ifndef _include_tls_h
-#define _include_tls_h 1
-
 #include_next <tls.h>
 
+#ifndef _include_tls_h
+#define _include_tls_h 1
 #if defined USE_TLS && USE_TLS && HAVE___THREAD \
     && (!defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt)
 
+
 # define USE___THREAD 1
 
 #else
@@ -17,3 +17,4 @@
 #endif
 
 #endif
+
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-defs.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-defs.h
index 2d6303cfe..be0a81da3 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-defs.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-defs.h
@@ -212,7 +212,7 @@ typedef struct {
    _dl_find_hash for this reloc TYPE.  TPNT is the module in which the
    matching SYM was found.  */
 #ifndef DL_FIND_HASH_VALUE
-# define DL_FIND_HASH_VALUE(TPNT, TYPE, SYM) (DL_RELOC_ADDR ((SYM)->st_value, (TPNT)->loadaddr))
+# define DL_FIND_HASH_VALUE(TPNT, TYPE, SYM) (DL_RELOC_ADDR ((TPNT)->loadaddr, (SYM)->st_value))
 #endif
 
 /* Unmap all previously-mapped segments accumulated in LOADADDR.
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-elf.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-elf.h
index cbb2100b1..7fbb373b4 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-elf.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-elf.h
@@ -162,8 +162,13 @@ unsigned int __dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info
 		if (dynamic_info[tag]) \
 			dynamic_info[tag] = (unsigned long) DL_RELOC_ADDR(load_off, dynamic_info[tag]); \
 	} while (0)
-	/* Don't adjust .dynamic unnecessarily.  */
-	if (load_off != 0) {
+	/* Don't adjust .dynamic unnecessarily.  For FDPIC targets,
+	   we'd have to walk all the loadsegs to find out if it was
+	   actually unnecessary, so skip this optimization.  */
+#if !defined __FDPIC__ && !defined __DSBT__
+	if (load_off != 0)
+#endif
+	{
 		ADJUST_DYN_INFO(DT_HASH, load_off);
 		ADJUST_DYN_INFO(DT_PLTGOT, load_off);
 		ADJUST_DYN_INFO(DT_STRTAB, load_off);
@@ -174,6 +179,15 @@ unsigned int __dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info
 		ADJUST_DYN_INFO(DT_GNU_HASH_IDX, load_off);
 #endif
 	}
+#ifdef __DSBT__
+	/* Get the mapped address of the DSBT base.  */
+	ADJUST_DYN_INFO(DT_DSBT_BASE_IDX, load_off);
+
+	/* Initialize loadmap dsbt info.  */
+	load_off.map->dsbt_table = dynamic_info[DT_DSBT_BASE_IDX];
+	load_off.map->dsbt_size = dynamic_info[DT_DSBT_SIZE_IDX];
+	load_off.map->dsbt_index = dynamic_info[DT_DSBT_INDEX_IDX];
+#endif
 #undef ADJUST_DYN_INFO
 	return rtld_flags;
 }
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-hash.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-hash.h
index 34bed1b4b..d8b3e3ef4 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-hash.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-hash.h
@@ -25,6 +25,11 @@ struct dyn_elf {
   struct dyn_elf * prev;
 };
 
+struct symbol_ref {
+  const ElfW(Sym) *sym;
+  struct elf_resolve *tpnt;
+};
+
 struct elf_resolve {
   /* These entries must be in this order to be compatible with the interface used
      by gdb to obtain the list of symbols. */
@@ -137,20 +142,9 @@ extern struct elf_resolve * _dl_add_elf_hash_table(const char * libname,
 	DL_LOADADDR_TYPE loadaddr, unsigned long * dynamic_info,
 	unsigned long dynamic_addr, unsigned long dynamic_size);
 
-/* Only need extra arg with some configurations */
-#if !((defined(USE_TLS) && USE_TLS) || defined __FDPIC__)
-# define _dl_lookup_hash(n, r, m, c, tpntp) _dl_lookup_hash(n, r, m, c)
-# define _dl_find_hash(n, r, m, t, tpntp) _dl_find_hash(n, r, m, t)
-#endif
-extern char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt,
+extern char *_dl_find_hash(const char *name, struct dyn_elf *rpnt,
 		struct elf_resolve *mytpnt, int type_class,
-		struct elf_resolve **tpntp);
-static __always_inline char *_dl_find_hash(const char *name, struct dyn_elf *rpnt,
-		struct elf_resolve *mytpnt, int type_class,
-		struct elf_resolve **tpntp)
-{
-	return _dl_lookup_hash(name, rpnt, mytpnt, type_class, tpntp);
-}
+		struct symbol_ref *symbol);
 
 extern int _dl_linux_dynamic_link(void);
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-syscall.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-syscall.h
index ffdbaead8..d07023fcf 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-syscall.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/dl-syscall.h
@@ -96,7 +96,7 @@ static __always_inline _syscall0(gid_t, _dl_getegid)
 # define __NR_getpid __NR_getxpid
 #endif
 #define __NR__dl_getpid __NR_getpid
-static __always_inline _syscall0(gid_t, _dl_getpid);
+static __always_inline _syscall0(gid_t, _dl_getpid)
 
 #define __NR__dl_readlink __NR_readlink
 static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/ldsodefs.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/ldsodefs.h
index 8f601e944..236c0fc34 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/ldsodefs.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/include/ldsodefs.h
@@ -2,7 +2,7 @@
 #define _LDSODEFS_H     1
 
 #include <bits/kernel-features.h>
-
+#include <link.h>
 #include <features.h>
 #include <tls.h>
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/Makefile.in b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/Makefile.in
index e71ae1563..7a9ffa643 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/Makefile.in
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/Makefile.in
@@ -30,6 +30,7 @@ CFLAGS-ldso/ldso/$(TARGET_ARCH)/ := $(CFLAGS-ldso)
 
 CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\" $(CFLAGS-ldso)
 
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-$(UCLIBC_LDSO_NAME).so := -Wl,--dsbt-index=1
 ifneq ($(SUPPORT_LD_DEBUG),y)
 LDFLAGS-$(UCLIBC_LDSO_NAME).so := $(LDFLAGS)
 else
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/arm/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/arm/elfinterp.c
index adc282a57..707b31743 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/arm/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/arm/elfinterp.c
@@ -189,6 +189,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 	unsigned long *reloc_addr;
 	unsigned long symbol_addr;
 	const Elf32_Sym *def = 0;
+	struct symbol_ref sym_ref;
 	struct elf_resolve *def_mod = 0;
 	int goof = 0;
 
@@ -197,12 +198,12 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 
-	if (symtab_index &&
-			(ELF32_ST_VISIBILITY(symtab[symtab_index].st_other)
-			 != STV_PROTECTED)) {
+	if (symtab_index) {
 		symbol_addr = _dl_find_hash(strtab + symtab[symtab_index].st_name,
-			scope, tpnt, elf_machine_type_class(reloc_type), &def_mod);
+			scope, tpnt, elf_machine_type_class(reloc_type), &sym_ref);
 
 		/*
 		 * We want to allow undefined references to weak symbols - this might
@@ -215,18 +216,14 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 			return 1;
 
 		}
+		def_mod = sym_ref.tpnt;
 	} else {
 		/*
 		 * Relocs against STN_UNDEF are usually treated as using a
 		 * symbol value of zero, and using the module containing the
 		 * reloc itself.
 		 */
-		if (symtab_index)
-			symbol_addr = DL_FIND_HASH_VALUE(tpnt, elf_machine_type_class(reloc_type),
-											&symtab[symtab_index]);
-		else
-			symbol_addr = symtab[symtab_index].st_value;
-
+		symbol_addr = symtab[symtab_index].st_value;
 		def_mod = tpnt;
 	}
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/avr32/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/avr32/elfinterp.c
index 797f8513e..2d0dbf366 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/avr32/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/avr32/elfinterp.c
@@ -50,9 +50,8 @@ unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
 	strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
 	symname = strtab + sym->st_name;
 
-	new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
-						 tpnt->symbol_scope, tpnt,
-						 resolver);
+	new_addr = (unsigned long) _dl_find_hash(symname,
+						 tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT, NULL);
 
 	entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
 	*entry = new_addr;
@@ -127,18 +126,20 @@ static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 #if defined(__SUPPORT_LD_DEBUG__)
 	unsigned long old_val;
 #endif
+	struct symbol_ref sym_ref;
 
 	reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symname = strtab + symtab[symtab_index].st_name;
 
 	if (symtab_index) {
 		symbol_addr = (unsigned long)
-			_dl_find_hash(strtab + symtab[symtab_index].st_name,
-				      tpnt->symbol_scope, tpnt,
-				      elf_machine_type_class(reloc_type), NULL);
+			_dl_find_hash(symname, scope, tpnt,
+				      elf_machine_type_class(reloc_type), &sym_ref);
 
 		/* Allow undefined references to weak symbols */
 		if (!symbol_addr &&
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/dl-syscalls.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/dl-syscalls.h
index 916d0f84e..f74cf1ad3 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/dl-syscalls.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/dl-syscalls.h
@@ -31,7 +31,7 @@ extern int _dl_errno;
 #if DYNAMIC_LOADER_IN_SIMULATOR
 #define __NR___syscall_mmap2	    __NR_mmap2
 static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
-	size_t, len, int, prot, int, flags, int, fd, off_t, offset);
+	size_t, len, int, prot, int, flags, int, fd, off_t, offset)
 
 /* Make sure we don't get another definition of _dl_mmap from the
    machine-independent code.  */
@@ -155,7 +155,7 @@ _dl_mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
 static __always_inline unsigned long _dl_read(int fd, const void *buf, unsigned long count);
 
 static __always_inline _syscall3(__off_t, __syscall_lseek, int, fd, __off_t, offset,
-			int, whence);
+			int, whence)
 static __always_inline ssize_t
 _dl_pread(int fd, void *buf, size_t count, off_t offset)
 {
@@ -178,7 +178,7 @@ _dl_pread(int fd, void *buf, size_t count, off_t offset)
 #else
 #define __NR___syscall_pread __NR_pread
 static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
-			size_t, count, off_t, offset_hi, off_t, offset_lo);
+			size_t, count, off_t, offset_hi, off_t, offset_lo)
 
 static __always_inline ssize_t
 _dl_pread(int fd, void *buf, size_t count, off_t offset)
@@ -191,18 +191,18 @@ _dl_pread(int fd, void *buf, size_t count, off_t offset)
 #ifdef __NR_sram_alloc
 #define __NR__dl_sram_alloc __NR_sram_alloc
 static __always_inline _syscall2(__ptr_t, _dl_sram_alloc,
-			size_t, len, unsigned long, flags);
+			size_t, len, unsigned long, flags)
 #endif
 
 #ifdef __NR_sram_free
 #define __NR__dl_sram_free __NR_sram_free
-static __always_inline _syscall1(int, _dl_sram_free, __ptr_t, addr);
+static __always_inline _syscall1(int, _dl_sram_free, __ptr_t, addr)
 #endif
 
 #ifdef __NR_dma_memcpy
 #define __NR__dl_dma_memcpy __NR_dma_memcpy
 static __always_inline _syscall3(__ptr_t, _dl_dma_memcpy,
-			__ptr_t, dest, __ptr_t, src, size_t, len);
+			__ptr_t, dest, __ptr_t, src, size_t, len)
 #endif
 
 #define __UCLIBC_MMAP_HAS_6_ARGS__
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/elfinterp.c
index e8d88bd5a..48470d50b 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/bfin/elfinterp.c
@@ -46,11 +46,11 @@ _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
 	ElfW(Sym) *symtab;
 	int symtab_index;
 	char *rel_addr;
-	struct elf_resolve *new_tpnt;
 	char *new_addr;
 	struct funcdesc_value funcval;
 	struct funcdesc_value volatile *got_entry;
 	char *symname;
+	struct symbol_ref sym_ref;
 
 	rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
 
@@ -59,15 +59,17 @@ _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
 
 	symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
 	strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symname= strtab + symtab[symtab_index].st_name;
 
 	/* Address of GOT entry fix up */
 	got_entry = (struct funcdesc_value *) DL_RELOC_ADDR(tpnt->loadaddr, this_reloc->r_offset);
 
 	/* Get the address to be used to fill in the GOT entry.  */
-	new_addr = _dl_lookup_hash(symname, tpnt->symbol_scope, NULL, 0, &new_tpnt);
+	new_addr = _dl_find_hash(symname, tpnt->symbol_scope, NULL, 0, &sym_ref);
 	if (!new_addr) {
-		new_addr = _dl_lookup_hash(symname, NULL, NULL, 0, &new_tpnt);
+		new_addr = _dl_find_hash(symname, NULL, NULL, 0, &sym_ref);
 		if (!new_addr) {
 			_dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
 				    _dl_progname, symname);
@@ -76,7 +78,7 @@ _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
 	}
 
 	funcval.entry_point = new_addr;
-	funcval.got_value = new_tpnt->loadaddr.got_value;
+	funcval.got_value = sym_ref.tpnt->loadaddr.got_value;
 
 #if defined (__SUPPORT_LD_DEBUG__)
 	if (_dl_debug_bindings) {
@@ -165,12 +167,15 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 #if defined (__SUPPORT_LD_DEBUG__)
 	unsigned long old_val;
 #endif
+	struct symbol_ref sym_ref;
 
 	reloc_addr   = (unsigned long *) DL_RELOC_ADDR(tpnt->loadaddr, rpnt->r_offset);
 	__asm__ ("" : "=r" (reloc_addr_packed) : "0" (reloc_addr));
 	reloc_type   = ELF_R_TYPE(rpnt->r_info);
 	symtab_index = ELF_R_SYM(rpnt->r_info);
 	symbol_addr  = 0;
+	sym_ref.sym =  &symtab[symtab_index];
+	sym_ref.tpnt =  NULL;
 	symname      = strtab + symtab[symtab_index].st_name;
 
 	if (ELF_ST_BIND (symtab[symtab_index].st_info) == STB_LOCAL) {
@@ -179,7 +184,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 	} else {
 
 		symbol_addr = (unsigned long)
-		  _dl_lookup_hash(symname, scope, NULL, 0, &symbol_tpnt);
+		  _dl_find_hash(symname, scope, NULL, 0, &sym_ref);
 
 		/*
 		 * We want to allow undefined references to weak symbols - this might
@@ -189,9 +194,10 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 
 		if (!symbol_addr && ELF_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
 			_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
-				     _dl_progname, strtab + symtab[symtab_index].st_name);
+				     _dl_progname, symname);
 			_dl_exit (1);
 		}
+		symbol_tpnt = sym_ref.tpnt;
 	}
 
 #if defined (__SUPPORT_LD_DEBUG__)
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-debug.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-debug.h
new file mode 100644
index 000000000..9c6edab0a
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-debug.h
@@ -0,0 +1,49 @@
+/* C6X DSBT ELF shared library loader suppport.
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * All rights reserved.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+static const char *_dl_reltypes_tab[] =
+{
+  	"R_C6000_NONE",			/* 0 */
+	"R_C6000_ABS32",
+	"R_C6000_ABS16",
+	"R_C6000_ABS8",
+	"R_C6000_PCR_S21",
+	"R_C6000_PCR_S12",		/* 5 */
+	"R_C6000_PCR_S10",
+	"R_C6000_PCR_S7",
+	"R_C6000_ABS_S16",
+	"R_C6000_ABS_L16",
+	"R_C6000_ABS_H16",		/* 10 */
+	"R_C6000_SBR_U15_B",
+	"R_C6000_SBR_U15_H",
+	"R_C6000_SBR_U15_W",
+	"R_C6000_SBR_S16",
+	"R_C6000_SBR_L16_B",		/* 15 */
+	"R_C6000_SBR_L16_H",
+	"R_C6000_SBR_L16_W",
+	"R_C6000_SBR_H16_B",
+	"R_C6000_SBR_H16_H",
+	"R_C6000_SBR_H16_W",		/* 20 */
+	"R_C6000_SBR_GOT_U15_W",
+	"R_C6000_SBR_GOT_L16_W",
+	"R_C6000_SBR_GOT_H16_W",
+	"R_C6000_DSBT_INDEX",
+	"R_C6000_PREL31",		/* 25 */
+	"R_C6000_COPY",
+	"R_C6000_JUMP_SLOT",
+	"R_C6000_SBR_GOT32",
+	"R_C6000_PCR_H16",
+	"R_C6000_PCR_L16",		/* 30 */
+#if 0
+	"R_C6000_ALIGN",		/* 253 */
+	"R_C6000_FPHEAD",		/* 254 */
+	"R_C6000_NOCMP",		/* 255 */
+#endif
+};
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-inlines.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-inlines.h
new file mode 100644
index 000000000..d8fb42c55
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-inlines.h
@@ -0,0 +1,91 @@
+/* Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * Borrowed heavily from frv arch:
+ * Copyright (C) 2003, 2004 Red Hat, Inc.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+/* Figure out whether the given address is in one of the mapped
+   segments.  */
+static __always_inline int
+__dl_addr_in_loadaddr (void *p, struct elf32_dsbt_loadaddr loadaddr)
+{
+	struct elf32_dsbt_loadmap *map = loadaddr.map;
+	int c;
+
+	for (c = 0; c < map->nsegs; c++)
+		if ((void*)map->segs[c].addr <= p
+		    && (char*)p < (char*)map->segs[c].addr + map->segs[c].p_memsz)
+			return 1;
+
+	return 0;
+}
+
+/* Figure out how many LOAD segments there are in the given headers,
+   and allocate a block for the load map big enough for them.
+   got_value will be properly initialized later on, with INIT_GOT.  */
+static __always_inline int
+__dl_init_loadaddr (struct elf32_dsbt_loadaddr *loadaddr, Elf32_Phdr *ppnt,
+		    int pcnt)
+{
+	int count = 0, i;
+	size_t size;
+
+	for (i = 0; i < pcnt; i++)
+		if (ppnt[i].p_type == PT_LOAD)
+			count++;
+
+	size = sizeof (struct elf32_dsbt_loadmap)
+		+ sizeof (struct elf32_dsbt_loadseg) * count;
+	loadaddr->map = _dl_malloc (size);
+	if (! loadaddr->map)
+		_dl_exit (-1);
+
+	loadaddr->map->version = 0;
+	loadaddr->map->nsegs = 0;
+
+	return count;
+}
+
+/* Incrementally initialize a load map.  */
+static __always_inline void
+__dl_init_loadaddr_hdr (struct elf32_dsbt_loadaddr loadaddr, void *addr,
+			Elf32_Phdr *phdr, int maxsegs)
+{
+	struct elf32_dsbt_loadseg *segdata;
+
+	if (loadaddr.map->nsegs == maxsegs)
+		_dl_exit (-1);
+
+	segdata = &loadaddr.map->segs[loadaddr.map->nsegs++];
+	segdata->addr = (Elf32_Addr) addr;
+	segdata->p_vaddr = phdr->p_vaddr;
+	segdata->p_memsz = phdr->p_memsz;
+
+#if defined (__SUPPORT_LD_DEBUG__)
+	{
+		if (_dl_debug)
+			_dl_dprintf(_dl_debug_file, "%i: mapped %x at %x, size %x\n",
+				    loadaddr.map->nsegs-1,
+				    segdata->p_vaddr, segdata->addr, segdata->p_memsz);
+	}
+#endif
+}
+
+static __always_inline void
+__dl_loadaddr_unmap (struct elf32_dsbt_loadaddr loadaddr)
+{
+	int i;
+
+	for (i = 0; i < loadaddr.map->nsegs; i++)
+		_dl_munmap ((void*)loadaddr.map->segs[i].addr,
+			    loadaddr.map->segs[i].p_memsz);
+
+	/* _dl_unmap is only called for dlopen()ed libraries, for which
+	   calling free() is safe, or before we've completed the initial
+	   relocation, in which case calling free() is probably pointless,
+	   but still safe.  */
+	_dl_free (loadaddr.map);
+}
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-startup.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-startup.h
new file mode 100644
index 000000000..b9ea30409
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-startup.h
@@ -0,0 +1,122 @@
+/* Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * Borrowed heavily from frv arch:
+ * Copyright (C) 2003 Red Hat, Inc.
+ * 
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#undef DL_START
+#define DL_START(X)   \
+int  \
+_dl_start (unsigned placeholder, \
+	   struct elf32_dsbt_loadmap *dl_boot_progmap, \
+	   struct elf32_dsbt_loadmap *dl_boot_ldsomap, \
+	   Elf32_Dyn *dl_boot_ldso_dyn_pointer,	       \
+	   X)
+
+/*
+ * On entry, the kernel has set up the stack thusly:
+ *
+ *	0(sp)			pad0
+ *	4(sp)			pad1
+ *	8(sp)			argc
+ *	12(sp)			argv[0]
+ *	...
+ *	(4*(argc+3))(sp)	NULL
+ *	(4*(argc+4))(sp)	envp[0]
+ *	...
+ *				NULL
+ *
+ * Register values are unspecified, except:
+ *
+ *	B4  --> executable loadmap address
+ *	A6  --> interpreter loadmap address
+ *	B6  --> dynamic section address
+ *	B14 --> our DP setup by kernel
+ *
+ * NB: DSBT index is always 0 for the executable
+ *     and 1 for the interpreter
+ */
+
+__asm__("	.text\n"
+	".globl _start\n"
+	"_start:\n"
+	"          B .S2		_dl_start\n"
+	"          STW .D2T2		B14, *+B14[1]\n"
+	"          ADD .D1X		B15,8,A8\n"
+	"          ADDKPC .S2		ret_from_dl,B3,2\n"
+	"ret_from_dl:\n"
+	"	   B .S2X		A4\n"
+	" ||       LDW .D2T2		*+B14[0],B14\n"
+	" 	   ADDKPC .S2		__dl_fini,B0,0\n"
+	"          MV .S1X		B0,A4\n"
+	"	   NOP\n"
+	"	   NOP\n"
+	"	   NOP\n"
+	"__dl_fini:\n"
+	"          LDW .D2T2		*+B14[1],B14\n"
+	"	   NOP		4\n"
+	" 	   LDW .D2T1		*+B14($GOT(_dl_fini)), A0\n"
+	"          NOP		4\n"
+	"	   BNOP .S2X		A0, 5\n");
+
+__asm__("	.text\n"
+	"__c6x_cache_sync:\n"
+	"	   MVK .S2		330,B0\n"
+	"	   SWE\n"
+	"	   NOP\n"
+	"	   BNOP .S2		B3,5\n"
+	"	   NOP\n"
+	"	   NOP\n"
+	"	   NOP\n"
+	"	   NOP\n"
+	"\n"
+);
+
+/*
+ * Get a pointer to the argv array.  On many platforms this can be just
+ * the address of the first argument, on other platforms we need to
+ * do something a little more subtle here.
+ */
+#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) ARGS) + 1)
+
+struct elf32_dsbt_loadmap;
+
+/*
+ * Here is a macro to perform a relocation.  This is only used when
+ * bootstrapping the dynamic loader.  RELP is the relocation that we
+ * are performing, REL is the pointer to the address we are relocating.
+ * SYMBOL is the symbol involved in the relocation, and LOAD is the
+ * load address.
+ */
+#define PERFORM_BOOTSTRAP_RELOC(RELP,REL,SYMBOL,LOAD,SYMTAB) \
+	switch(ELF32_R_TYPE((RELP)->r_info)){				\
+	case R_C6000_ABS_L16:						\
+	    {								\
+		    unsigned int opcode = *(REL);			\
+		    unsigned int v = (SYMBOL) + (RELP)->r_addend;	\
+		    opcode &= ~0x7fff80;				\
+		    opcode |= ((v & 0xffff) << 7);			\
+		    *(REL) = opcode;					\
+	    }								\
+	    break;							\
+	case R_C6000_ABS_H16:						\
+	    {								\
+		    unsigned int opcode = *(REL);			\
+		    unsigned int v = (SYMBOL) + (RELP)->r_addend;	\
+		    opcode &= ~0x7fff80;				\
+		    opcode |= ((v >> 9) & 0x7fff80);			\
+		    *(REL) = opcode;					\
+	    }								\
+	    break;							\
+	case R_C6000_ABS32:						\
+	    *(REL) = (SYMBOL) + (RELP)->r_addend;			\
+	    break;							\
+	default:							\
+	  _dl_exit(1);							\
+	}
+
+extern void __c6x_cache_sync(unsigned long start, unsigned long end)
+  attribute_hidden;
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-syscalls.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-syscalls.h
new file mode 100644
index 000000000..9ff3358b0
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-syscalls.h
@@ -0,0 +1,25 @@
+/* Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+/* We can't use the real errno in ldso, since it has not yet
+ * been dynamicly linked in yet. */
+#include "sys/syscall.h"
+extern int _dl_errno;
+#undef __set_errno
+#define __set_errno(X) {(_dl_errno) = (X);}
+#include <sys/mman.h>
+
+#ifdef __NR_pread64
+#define __NR___syscall_pread __NR_pread64
+static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
+			size_t, count, off_t, offset_hi, off_t, offset_lo);
+
+static __always_inline ssize_t
+_dl_pread(int fd, void *buf, size_t count, off_t offset)
+{
+  return(__syscall_pread(fd,buf,count, offset, offset >> 31));
+}
+#endif
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-sysdep.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-sysdep.h
new file mode 100644
index 000000000..8f1b122d3
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/dl-sysdep.h
@@ -0,0 +1,209 @@
+/* Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * Borrowed heavily from frv arch:
+ * Copyright (C) 2003, 2004 Red Hat, Inc.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <bits/elf-dsbt.h>
+
+/*
+ * Define this if the system uses RELOCA.
+ */
+#define ELF_USES_RELOCA 1
+
+/* JMPREL relocs are inside the DT_RELA table.  */
+/* Actually looks like a linker bug sets DT_JMPREL anyway */
+#define ELF_MACHINE_PLTREL_OVERLAP 1
+
+#undef DL_NO_COPY_RELOCS
+
+#define HAVE_DL_INLINES_H
+
+
+/*
+ * Various assembly language/system dependent  hacks that are required
+ * so that we can minimize the amount of platform specific code.
+ */
+
+/* Initialization sequence for the GOT.  */
+#define INIT_GOT(GOT_BASE,MODULE) \
+{ \
+  GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
+  GOT_BASE[1] = (unsigned long) MODULE; \
+}
+
+/* Here we define the magic numbers that this dynamic loader should accept */
+#define MAGIC1 EM_TI_C6000
+#undef  MAGIC2
+
+/* Used for error messages */
+#define ELF_TARGET "C6000"
+
+/* Need bootstrap relocations */
+#define ARCH_NEEDS_BOOTSTRAP_RELOCS
+
+struct elf_resolve;
+
+extern int _dl_linux_resolve(void) attribute_hidden;
+
+struct funcdesc_ht;
+struct elf32_dsbt_loadaddr;
+
+/* We must force strings used early in the bootstrap into the text
+   segment (const data), such that they are referenced relative to
+   the DP register rather than through the GOT which will not have
+   been relocated when these are used. */
+#undef SEND_EARLY_STDERR
+#define SEND_EARLY_STDERR(S) \
+  do { static char __s[] = (S); SEND_STDERR (__s); } while (0)
+
+#define DL_LOADADDR_TYPE struct elf32_dsbt_loadaddr
+
+#define DL_RELOC_ADDR(LOADADDR, ADDR) \
+  ((ElfW(Addr))__reloc_pointer ((void*)(ADDR), (LOADADDR).map))
+
+#define DL_INIT_LOADADDR_BOOT(LOADADDR, BASEADDR) \
+	do {						  		\
+	    struct elf32_dsbt_loadmap *map;				\
+	    map = dl_boot_ldsomap ?: dl_boot_progmap;			\
+	    if (map->version != 0) {			  		\
+	        SEND_EARLY_STDERR ("Invalid loadmap version number\n"); \
+                _dl_exit(-1);						\
+	    }								\
+	    if (map->nsegs < 2) {					\
+	        SEND_EARLY_STDERR ("Invalid segment count in loadmap\n"); \
+                _dl_exit(-1);						\
+	    }								\
+	    (LOADADDR).map = map;					\
+	} while(0)
+
+#define DL_INIT_LOADADDR_PROG(LOADADDR, BASEADDR) \
+	do {						  		\
+	    if (dl_boot_progmap->version != 0) {	  		\
+	        SEND_EARLY_STDERR ("Invalid loadmap version number\n"); \
+                _dl_exit(-1);						\
+	    }								\
+	    if (dl_boot_progmap->nsegs < 2) {				\
+	        SEND_EARLY_STDERR ("Invalid segment count in loadmap\n"); \
+                _dl_exit(-1);						\
+	    }								\
+	    (LOADADDR).map = dl_boot_progmap;				\
+	} while(0)
+
+#define DL_INIT_LOADADDR_EXTRA_DECLS \
+  int dl_init_loadaddr_load_count;
+
+#define DL_INIT_LOADADDR(LOADADDR, BASEADDR, PHDR, PHDRCNT) \
+  (dl_init_loadaddr_load_count = \
+     __dl_init_loadaddr (&(LOADADDR), (PHDR), (PHDRCNT)))
+
+#define DL_INIT_LOADADDR_HDR(LOADADDR, ADDR, PHDR) \
+  (__dl_init_loadaddr_hdr ((LOADADDR), (ADDR), (PHDR), \
+			   dl_init_loadaddr_load_count))
+
+#define DL_LOADADDR_UNMAP(LOADADDR, LEN) \
+  (__dl_loadaddr_unmap ((LOADADDR)))
+
+#define DL_LIB_UNMAP(LIB, LEN) \
+  (__dl_loadaddr_unmap ((LIB)->loadaddr))
+
+#define DL_LOADADDR_BASE(LOADADDR) \
+  ((LOADADDR).map->dsbt_table)
+
+#define DL_ADDR_IN_LOADADDR(ADDR, TPNT, TFROM) \
+  (! (TFROM) && __dl_addr_in_loadaddr ((void*)(ADDR), (TPNT)->loadaddr))
+
+
+/* We only support loading DSBT relocatable shared libraries.
+   It probably wouldn't be too hard to support loading statically
+   linked executables that require relocation.*/
+#define DL_CHECK_LIB_TYPE(epnt, piclib, _dl_progname, libname) \
+do \
+{ \
+    (piclib) = 2; \
+} \
+while (0)
+
+/* We want want to apply all relocations in the interpreter during
+   bootstrap.  Because of this, we have to skip the interpreter
+   relocations in _dl_parse_relocation_information(), see
+   elfinterp.c.  */
+#define DL_SKIP_BOOTSTRAP_RELOC(SYMTAB, INDEX, STRTAB) 0
+
+#ifdef __NR_pread64
+#define _DL_PREAD(FD, BUF, SIZE, OFFSET) \
+  (_dl_pread((FD), (BUF), (SIZE), (OFFSET)))
+#endif
+
+#define DL_GET_READY_TO_RUN_EXTRA_PARMS \
+  , struct elf32_dsbt_loadmap *dl_boot_progmap \
+  , struct elf32_dsbt_loadmap *dl_boot_ldsomap
+#define DL_GET_READY_TO_RUN_EXTRA_ARGS \
+  , dl_boot_progmap \
+  , dl_boot_ldsomap
+
+
+/*
+ * Compute the GOT address.
+ * Also setup program and interpreter DSBT table entries.
+ */
+#define DL_BOOT_COMPUTE_GOT(GOT) \
+  do {								\
+    unsigned long *ldso_dsbt, *prog_dsbt;			\
+    ldso_dsbt = dl_boot_ldsomap->dsbt_table;			\
+    prog_dsbt = dl_boot_progmap->dsbt_table;			\
+    ldso_dsbt[0] = prog_dsbt[0] = (unsigned long)prog_dsbt;	\
+    ldso_dsbt[1] = prog_dsbt[1] = (unsigned long)ldso_dsbt;	\
+    (GOT) = ldso_dsbt + dl_boot_ldsomap->dsbt_size;		\
+  } while(0)
+
+#define DL_BOOT_COMPUTE_DYN(dpnt, got, load_addr) \
+  ((dpnt) = dl_boot_ldso_dyn_pointer)
+
+
+#ifdef __USE_GNU
+# include <link.h>
+#else
+# define __USE_GNU
+# include <link.h>
+# undef __USE_GNU
+#endif
+
+static __always_inline Elf32_Addr
+elf_machine_load_address (void)
+{
+	/* this is never an issue on DSBT systems */
+	return 0;
+}
+
+static __always_inline void
+elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
+		      Elf32_Word relative_count)
+{
+}
+
+/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
+   PLT entries should not be allowed to define the value.
+   ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
+   of the main executable's symbols, as for a COPY reloc.  */
+#define elf_machine_type_class(type) \
+  ((((type) == R_C6000_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT)	\
+   | (((type) == R_C6000_COPY) * ELF_RTYPE_CLASS_COPY))
+
+#define ARCH_NUM 3
+#define DT_DSBT_BASE_IDX	(DT_NUM + OS_NUM)
+#define DT_DSBT_SIZE_IDX	(DT_NUM + OS_NUM + 1)
+#define DT_DSBT_INDEX_IDX	(DT_NUM + OS_NUM + 2)
+
+#define ARCH_DYNAMIC_INFO(dpnt,  dynamic, debug_addr) \
+do { \
+if (dpnt->d_tag == DT_C6000_DSBT_BASE) \
+     dynamic[DT_DSBT_BASE_IDX] = dpnt->d_un.d_val; \
+else if (dpnt->d_tag == DT_C6000_DSBT_SIZE) \
+     dynamic[DT_DSBT_SIZE_IDX] = dpnt->d_un.d_val; \
+else if (dpnt->d_tag == DT_C6000_DSBT_INDEX) \
+     dynamic[DT_DSBT_INDEX_IDX] = dpnt->d_un.d_val; \
+} while (0)
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/elfinterp.c
new file mode 100644
index 000000000..7c79171ce
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/elfinterp.c
@@ -0,0 +1,296 @@
+/* TI C64X DSBT ELF shared library loader suppport
+ * Copyright (C) 2010 Texas Instruments Incorporated
+ * Contributed by Mark Salter <msalter@redhat.com>
+ *
+ * Borrowed heavily from frv arch:
+ * Copyright (C) 2003, 2004 Red Hat, Inc.
+ * Contributed by Alexandre Oliva <aoliva@redhat.com>
+ * Lots of code copied from ../i386/elfinterp.c, so:
+ * Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
+ *               David Engel, Hongjiu Lu and Mitch D'Souza
+ * Copyright (C) 2001-2002, Erik Andersen
+ * All rights reserved.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <features.h>
+
+/* Program to load an ELF binary on a linux system, and run it.
+   References to symbols in sharable libraries can be resolved by either
+   an ELF sharable library or a linux style of shared library. */
+
+/* Disclaimer:  I have never seen any AT&T source code for SVr4, nor have
+   I ever taken any courses on internals.  This program was developed using
+   information available through the book "UNIX SYSTEM V RELEASE 4,
+   Programmers guide: Ansi C and Programming Support Tools", which did
+   a more than adequate job of explaining everything required to get this
+   working. */
+
+extern void __c6x_cache_sync(unsigned long start, unsigned long end)
+    attribute_hidden;
+
+static void
+_dl_c6x_flush_relocs(struct elf32_dsbt_loadmap *map)
+{
+	unsigned long s, e;
+	s = map->segs[0].addr;
+	e = s + map->segs[0].p_memsz;
+	__c6x_cache_sync(s, e);
+	s = map->segs[1].addr;
+	e = s + map->segs[1].p_memsz;
+	__c6x_cache_sync(s, e);
+}
+
+
+attribute_hidden
+char *
+_dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
+{
+	ELF_RELOC *this_reloc;
+	char *strtab;
+	ElfW(Sym) *symtab;
+	int symtab_index;
+	char *rel_addr;
+	char *new_addr;
+	char **got_addr;
+	char *symname;
+
+	rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
+
+	this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
+	symtab_index = ELF_R_SYM(this_reloc->r_info);
+
+	symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
+	strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
+	symname = strtab + symtab[symtab_index].st_name;
+
+	/* Address of GOT entry fix up */
+	got_addr = (char **) DL_RELOC_ADDR(tpnt->loadaddr, this_reloc->r_offset);
+
+	/* Get the address to be used to fill in the GOT entry.  */
+	new_addr = _dl_find_hash(symname, tpnt->symbol_scope, tpnt,
+				 ELF_RTYPE_CLASS_PLT, NULL);
+	if (unlikely(!new_addr)) {
+		_dl_dprintf(2, "%s: can't resolve symbol '%s' in lib '%s'.\n", _dl_progname, symname, tpnt->libname);
+		_dl_exit(1);
+	}
+
+
+#if defined (__SUPPORT_LD_DEBUG__)
+	if (_dl_debug_bindings) {
+		_dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
+		if (_dl_debug_detail)
+			_dl_dprintf(_dl_debug_file,
+				    "\n\tpatched %x ==> %x @ %x\n",
+				    *got_addr, new_addr, got_addr);
+	}
+	if (!_dl_debug_nofixups) {
+		*got_addr = new_addr;
+	}
+#else
+	*got_addr = new_addr;
+#endif
+
+	return new_addr;
+}
+
+static int
+_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
+	  unsigned long rel_addr, unsigned long rel_size,
+	  int (*reloc_fnc) (struct elf_resolve *tpnt, struct dyn_elf *scope,
+			    ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab))
+{
+	unsigned int i;
+	char *strtab;
+	Elf32_Sym *symtab;
+	ELF_RELOC *rpnt;
+	int symtab_index;
+
+	/* Now parse the relocation information */
+	rpnt = (ELF_RELOC *)rel_addr;
+	rel_size = rel_size / sizeof(ELF_RELOC);
+
+	symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
+	strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
+
+	for (i = 0; i < rel_size; i++, rpnt++) {
+	        int res;
+
+		symtab_index = ELF32_R_SYM(rpnt->r_info);
+		debug_sym(symtab,strtab,symtab_index);
+		debug_reloc(symtab,strtab,rpnt);
+
+		res = reloc_fnc (tpnt, scope, rpnt, symtab, strtab);
+
+		if (res==0) continue;
+
+		_dl_dprintf(2, "\n%s: ",_dl_progname);
+
+		if (symtab_index)
+			_dl_dprintf(2, "symbol '%s': ", strtab + symtab[symtab_index].st_name);
+
+		if (res <0) {
+		        int reloc_type = ELF32_R_TYPE(rpnt->r_info);
+#if defined (__SUPPORT_LD_DEBUG__)
+			_dl_dprintf(2, "can't handle reloc type %s\n ", _dl_reltypes(reloc_type));
+#else
+			_dl_dprintf(2, "can't handle reloc type %x\n", reloc_type);
+#endif
+			_dl_exit(-res);
+		} else if (res >0) {
+			_dl_dprintf(2, "can't resolve symbol\n");
+			return res;
+		}
+	}
+	_dl_c6x_flush_relocs(tpnt->loadaddr.map);
+	return 0;
+}
+
+static int
+_dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
+	      ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab)
+{
+	int reloc_type;
+	int symtab_index;
+	char *symname;
+	unsigned long *reloc_addr;
+	unsigned long symbol_addr, sym_val;
+	long reloc_addend;
+	unsigned long old_val, new_val;
+
+	reloc_addr = (unsigned long *)(intptr_t)
+		DL_RELOC_ADDR (tpnt->loadaddr, rpnt->r_offset);
+
+	reloc_type   = ELF32_R_TYPE(rpnt->r_info);
+	reloc_addend = rpnt->r_addend;
+	symtab_index = ELF32_R_SYM(rpnt->r_info);
+	symbol_addr  = 0;
+	symname      = strtab + symtab[symtab_index].st_name;
+
+	if (ELF32_ST_BIND (symtab[symtab_index].st_info) == STB_LOCAL) {
+		symbol_addr = (unsigned long)
+			DL_RELOC_ADDR (tpnt->loadaddr, symtab[symtab_index].st_value);
+	} else {
+		symbol_addr = (unsigned long) _dl_find_hash(strtab + symtab[symtab_index].st_name,
+							    scope, tpnt, elf_machine_type_class(reloc_type),
+							    NULL);
+		/*
+		 * We want to allow undefined references to weak symbols - this might
+		 * have been intentional.  We should not be linking local symbols
+		 * here, so all bases should be covered.
+		 */
+
+		if (!symbol_addr && ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
+			_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
+				     _dl_progname, strtab + symtab[symtab_index].st_name);
+			_dl_exit (1);
+		}
+	}
+	old_val = *reloc_addr;
+	sym_val = symbol_addr + reloc_addend;
+
+	switch (reloc_type) {
+	case R_C6000_NONE:
+		break;
+	case R_C6000_ABS32:
+	case R_C6000_JUMP_SLOT:
+		new_val = sym_val;
+		*reloc_addr = sym_val;
+		break;
+	case R_C6000_ABS_L16:
+		new_val = (old_val & ~0x007fff80) | ((sym_val & 0xffff) << 7);
+		*reloc_addr = new_val;
+		break;
+	case R_C6000_ABS_H16:
+		new_val = (old_val & ~0x007fff80) | ((sym_val >> 9) & 0x007fff80);
+		*reloc_addr = new_val;
+		break;
+	case R_C6000_PCR_S21:
+		new_val = sym_val - (((unsigned long)reloc_addr) & ~31);
+		*reloc_addr = (old_val & ~0x0fffff80) | (((new_val >> 2) & 0x1fffff) << 7);
+		break;
+	case R_C6000_COPY:
+		if (symbol_addr) {
+#if defined (__SUPPORT_LD_DEBUG__)
+			if (_dl_debug_move)
+				_dl_dprintf(_dl_debug_file,
+					    "\n%s move %d bytes from %x to %x",
+					    symname, symtab[symtab_index].st_size,
+					    symbol_addr, reloc_addr);
+#endif
+			
+			_dl_memcpy((char *)reloc_addr,
+				   (char *)symbol_addr,
+				   symtab[symtab_index].st_size);
+		}
+		break;
+	default:
+		return -1; /*call _dl_exit(1) */
+	}
+#if defined (__SUPPORT_LD_DEBUG__)
+	if (_dl_debug_reloc && _dl_debug_detail && reloc_type != R_C6000_NONE) {
+		_dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n", old_val, new_val, reloc_addr);
+	}
+#endif
+	return 0;
+}
+
+static int
+_dl_do_lazy_reloc (struct elf_resolve *tpnt,
+		   struct dyn_elf *scope attribute_unused,
+		   ELF_RELOC *rpnt, ElfW(Sym) *symtab attribute_unused,
+		   char *strtab attribute_unused)
+{
+	int reloc_type;
+	unsigned long *reloc_addr;
+	unsigned long old_val;
+
+	reloc_addr = (unsigned long *) DL_RELOC_ADDR(tpnt->loadaddr, rpnt->r_offset);
+	reloc_type = ELF_R_TYPE(rpnt->r_info);
+
+	old_val = *reloc_addr;
+
+	switch (reloc_type) {
+		case R_C6000_NONE:
+			break;
+		case R_C6000_JUMP_SLOT:
+			*reloc_addr = DL_RELOC_ADDR(tpnt->loadaddr, old_val);
+			break;
+		default:
+			return -1;
+	}
+
+#if defined (__SUPPORT_LD_DEBUG__)
+	if (_dl_debug_reloc && _dl_debug_detail)
+		_dl_dprintf(_dl_debug_file, "\n\tpatched: %x ==> %x @ %x\n",
+			    old_val, *reloc_addr, reloc_addr);
+#endif
+
+	return 0;
+}
+
+void
+_dl_parse_lazy_relocation_information
+(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size)
+{
+	_dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
+}
+
+int
+_dl_parse_relocation_information
+(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size)
+{
+	return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size, _dl_do_reloc);
+}
+
+/* We don't have copy relocs.  */
+int
+_dl_parse_copy_information
+(struct dyn_elf *rpnt,
+ unsigned long rel_addr,
+ unsigned long rel_size)
+{
+	return 0;
+}
+
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/resolve.S b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/resolve.S
new file mode 100644
index 000000000..ce3cbe793
--- /dev/null
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/c6x/resolve.S
@@ -0,0 +1,68 @@
+;;
+;;  Copyright (C) 2010 Texas Instruments Incorporated
+;;  Mark Salter <msalter@redhat.com>
+;;
+;;  Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+;;
+
+;;      The function below is tail-called by resolver stubs when a
+;; 	lazily-bound function is called.  It must preserve all
+;; 	registers that could be used to pass arguments to the actual
+;; 	function.
+
+;; 	_dl_linux_resolver() figures out where the jump symbol is
+;; 	_really_ supposed to have jumped to and returns that to us.
+;; 	Once we have that, we prepare to tail-call the actual
+;; 	function, clean up after ourselves, restoring the original
+;; 	arguments, then jump to the fixed up address.  */
+
+; resolver stub - called from PLT to resolve target address and update GOT
+;
+;   B0        : reloc offset (bytes from DT_RELPLT)
+;   B1        : module pointer, loaded from GOT[1]
+;   DP        : caller's DP
+;   A4,B4, etc: callee's arguments
+;   B3        : return address
+
+	.text
+	.align 5
+	.global	_dl_linux_resolve
+_dl_linux_resolve:
+	stw .d2t2	B14, *B15--[2]
+	stdw .d2t1	A15:A14, *B15--
+	stdw .d2t2	B13:B12, *B15--
+	stdw .d2t1	A13:A12, *B15--
+	stdw .d2t2	B11:B10, *B15--
+	stdw .d2t1	A11:A10, *B15--
+	stdw .d2t2	B9:B8, *B15--
+	stdw .d2t1	A9:A8, *B15--
+	stdw .d2t2	B7:B6, *B15--
+	stdw .d2t1	A7:A6, *B15--
+	stdw .d2t2	B5:B4, *B15--
+	stdw .d2t1	A5:A4, *B15--
+	stdw .d2t2	B3:B2, *B15--
+	stdw .d2t1	A3:A2, *B15--
+
+	; call lookup routine
+	MV .S1X		B1, A4		; arg 1: module id
+||	MV .S2		B0,B4		; arg 2: reloc offset
+	CALLP .S2	_dl_linux_resolver, B3	; returns &f in A4
+	MV .S2X		A4,B0            ; &f
+
+	lddw .d2t1	*++B15, A3:A2
+	lddw .d2t2	*++B15, B3:B2
+	lddw .d2t1	*++B15, A5:A4
+	lddw .d2t2	*++B15, B5:B4
+	lddw .d2t1	*++B15, A7:A6
+	lddw .d2t2	*++B15, B7:B6
+	lddw .d2t1	*++B15, A9:A8
+	lddw .d2t2	*++B15, B9:B8
+	lddw .d2t1	*++B15, A11:A10
+	lddw .d2t2	*++B15, B11:B10
+	lddw .d2t1	*++B15, A13:A12
+	lddw .d2t2	*++B15, B13:B12
+	lddw .d2t1	*++B15, A15:A14
+	ldw .d2t2	*++B15[2], B14
+
+	B .S2		B0               ; tail-call f
+	NOP		5
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/cris/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/cris/elfinterp.c
index 32ea2da9e..3cb8297e1 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/cris/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/cris/elfinterp.c
@@ -161,11 +161,14 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 #if defined (__SUPPORT_LD_DEBUG__)
 	unsigned long old_val;
 #endif
+	struct symbol_ref sym_ref;
 
 	reloc_addr = (unsigned long *)(intptr_t)(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symname = strtab + symtab[symtab_index].st_name;
 
 	if (symtab_index) {
@@ -174,7 +177,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 			symbol_addr = (unsigned long)tpnt->loadaddr;
 		} else {
 		  symbol_addr = (unsigned long)_dl_find_hash(symname, scope, tpnt,
-								   elf_machine_type_class(reloc_type), NULL);
+								   elf_machine_type_class(reloc_type), &sym_ref);
 		}
 
 		if (unlikely(!symbol_addr && ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) {
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c
index 67aa5d990..a63b997c3 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c
@@ -469,7 +469,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 	DL_CHECK_LIB_TYPE (epnt, piclib, _dl_progname, libname);
 
 	maxvma = (maxvma + ADDR_ALIGN) & PAGE_ALIGN;
-	minvma = minvma & ~0xffffU;
+	minvma = minvma & ~ADDR_ALIGN;
 
 	flags = MAP_PRIVATE /*| MAP_DENYWRITE */ ;
 	if (!piclib)
@@ -815,6 +815,54 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 		INIT_GOT(lpnt, tpnt);
 	}
 
+#ifdef __DSBT__
+	/* Handle DSBT initialization */
+	{
+		struct elf_resolve *t, *ref = NULL;
+		int idx = tpnt->loadaddr.map->dsbt_index;
+		unsigned *dsbt = tpnt->loadaddr.map->dsbt_table;
+
+		if (idx == 0) {
+			/* This DSO has not been assigned an index */
+			_dl_dprintf(2, "%s: '%s' is missing a dsbt index assignment!\n",
+				    _dl_progname, libname);
+			_dl_exit(1);
+		}
+
+		/*
+		 * Setup dsbt slot for this module in dsbt of all modules.
+		 */
+		for (t = _dl_loaded_modules; t; t = t->next) {
+			/* find a dsbt table from another module */
+			if (ref == NULL && t != tpnt) {
+				ref = t;
+
+				/* make sure index is not already used */
+				if (t->loadaddr.map->dsbt_table[idx]) {
+					struct elf_resolve *dup;
+					char *dup_name;
+
+					for (dup = _dl_loaded_modules; dup; dup = dup->next)
+						if (dup != tpnt && dup->loadaddr.map->dsbt_index == idx)
+							break;
+					if (dup)
+						dup_name = dup->libname;
+					else if (idx == 1)
+						dup_name = "runtime linker";
+					else
+						dup_name = "unknown library";
+					_dl_dprintf(2, "%s: '%s' dsbt index %d already used by %s!\n",
+						    _dl_progname, libname, idx, dup_name);
+					_dl_exit(1);
+				}
+			}
+			t->loadaddr.map->dsbt_table[idx] = (unsigned)dsbt;
+		}
+		if (ref)
+			_dl_memcpy(dsbt, ref->loadaddr.map->dsbt_table,
+				   tpnt->loadaddr.map->dsbt_size * sizeof(unsigned *));
+	}
+#endif
 	_dl_if_debug_dprint("\n\tfile='%s';  generating link map\n", libname);
 	_dl_if_debug_dprint("\t\tdynamic: %x  base: %x\n", dynamic_addr, DL_LOADADDR_BASE(lib_loadaddr));
 	_dl_if_debug_dprint("\t\t  entry: %x  phdr: %x  phnum: %x\n\n",
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c.orig b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c.orig
index dfd009d7b..67aa5d990 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c.orig
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-elf.c.orig
@@ -337,6 +337,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 	unsigned long *lpnt;
 	unsigned long libaddr;
 	unsigned long minvma = 0xffffffff, maxvma = 0;
+	unsigned int rtld_flags;
 	int i, flags, piclib, infile;
 	ElfW(Addr) relro_addr = 0;
 	size_t relro_size = 0;
@@ -709,7 +710,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 
 	dpnt = (ElfW(Dyn) *) dynamic_addr;
 	_dl_memset(dynamic_info, 0, sizeof(dynamic_info));
-	_dl_parse_dynamic_info(dpnt, dynamic_info, NULL, lib_loadaddr);
+	rtld_flags = _dl_parse_dynamic_info(dpnt, dynamic_info, NULL, lib_loadaddr);
 	/* If the TEXTREL is set, this means that we need to make the pages
 	   writable before we perform relocations.  Do this now. They get set
 	   back again later. */
@@ -741,13 +742,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 	tpnt->st_ino = st.st_ino;
 	tpnt->ppnt = (ElfW(Phdr) *) DL_RELOC_ADDR(tpnt->loadaddr, epnt->e_phoff);
 	tpnt->n_phent = epnt->e_phnum;
+	tpnt->rtld_flags |= rtld_flags;
 
 #if defined(USE_TLS) && USE_TLS
 	if (tlsppnt) {
 		_dl_debug_early("Found TLS header for %s\n", libname);
-#if NO_TLS_OFFSET != 0
+# if NO_TLS_OFFSET != 0
 		tpnt->l_tls_offset = NO_TLS_OFFSET;
-#endif
+# endif
 		tpnt->l_tls_blocksize = tlsppnt->p_memsz;
 		tpnt->l_tls_align = tlsppnt->p_align;
 		if (tlsppnt->p_align == 0)
@@ -764,10 +766,14 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
 		/* We know the load address, so add it to the offset. */
 		if (tpnt->l_tls_initimage != NULL)
 		{
+# ifdef __SUPPORT_LD_DEBUG_EARLY__
 			unsigned int tmp = (unsigned int) tpnt->l_tls_initimage;
 			tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
 			_dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n", tmp, tpnt->l_tls_initimage, tpnt->l_tls_initimage_size);
 			tmp = 0;
+# else
+			tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
+# endif
 		}
 	}
 #endif
@@ -1013,8 +1019,8 @@ char *_dl_strdup(const char *string)
 	return retval;
 }
 
-void _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[],
-                            void *debug_addr, DL_LOADADDR_TYPE load_off)
+unsigned int _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[],
+                                    void *debug_addr, DL_LOADADDR_TYPE load_off)
 {
-	__dl_parse_dynamic_info(dpnt, dynamic_info, debug_addr, load_off);
+	return __dl_parse_dynamic_info(dpnt, dynamic_info, debug_addr, load_off);
 }
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-hash.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-hash.c
index 0048734ba..12f9ce3ee 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-hash.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-hash.c
@@ -268,8 +268,8 @@ _dl_lookup_sysv_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long
  * This function resolves externals, and this is either called when we process
  * relocations or when we call an entry in the PLT table for the first time.
  */
-char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve *mytpnt,
-	int type_class, struct elf_resolve **tpntp)
+char *_dl_find_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve *mytpnt,
+	int type_class, struct symbol_ref *sym_ref)
 {
 	struct elf_resolve *tpnt = NULL;
 	ElfW(Sym) *symtab;
@@ -283,6 +283,15 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve
 	unsigned long gnu_hash_number = _dl_gnu_hash((const unsigned char *)name);
 #endif
 
+	/* aw11: added STB_LOCAL case to prevent searching locally linked symbols in
+	 *       other object files. This happens when we have TLS stuff with local
+	 *       linkage.
+	 */
+	if ((sym_ref) && (sym_ref->sym) && ((ELF32_ST_VISIBILITY(sym_ref->sym->st_other) == STV_PROTECTED) || (ELF32_ST_BIND(sym_ref->sym->st_info) == STB_LOCAL))) {
+			sym = sym_ref->sym;
+		if (mytpnt)
+			tpnt = mytpnt;
+	} else
 	for (; rpnt; rpnt = rpnt->next) {
 		tpnt = rpnt->dyn;
 
@@ -337,9 +346,8 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve
 		/* At this point we have found the requested symbol, do binding */
 #if defined(USE_TLS) && USE_TLS
 		if (ELF_ST_TYPE(sym->st_info) == STT_TLS) {
-			_dl_assert(tpntp != NULL);
-			*tpntp = tpnt;
-
+			_dl_assert(sym_ref != NULL);
+			sym_ref->tpnt = tpnt;
 			return (char *)sym->st_value;
 		}
 #endif
@@ -354,9 +362,10 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve
 				break;
 #endif
 			case STB_GLOBAL:
+			case 10: /* DAS IS VON MIR GNU STB UNIQUE aw11 L4 und so, eigentlich muss das anders */
 #ifdef __FDPIC__
-				if (tpntp)
-					*tpntp = tpnt;
+			if (sym_ref)
+				sym_ref->tpnt = tpnt;
 #endif
 				return (char *)DL_FIND_HASH_VALUE(tpnt, type_class, sym);
 			default:	/* Local symbols not handled here */
@@ -364,8 +373,8 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve
 		}
 	}
 #ifdef __FDPIC__
-	if (tpntp)
-		*tpntp = tpnt;
+	if (sym_ref)
+		sym_ref->tpnt = tpnt;
 #endif
 	return weak_result;
 }
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-startup.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-startup.c
index 1e50df9ab..8160885a0 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-startup.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-startup.c
@@ -119,9 +119,11 @@ DL_START(unsigned long args)
 	unsigned int argc;
 	char **argv, **envp;
 	DL_LOADADDR_TYPE load_addr;
-	ElfW(Addr) got;
+	/*ElfW(Addr) got;  aw11: dropped this in favour of phdrs*/
 	unsigned long *aux_dat;
 	ElfW(Ehdr) *header;
+	ElfW(Phdr) *phdr; /* aw11: use phdrs to find dynamic info */
+	int i;            /* aw11: use to iterate the phdrs */
 	struct elf_resolve tpnt_tmp;
 	struct elf_resolve *tpnt = &tpnt_tmp;
 	ElfW(auxv_t) auxvt[AT_EGID + 1];
@@ -198,6 +200,10 @@ DL_START(unsigned long args)
 	SEND_EARLY_STDERR_DEBUG("ELF header=");
 	SEND_ADDRESS_STDERR_DEBUG(DL_LOADADDR_BASE(load_addr), 1);
 
+	/* aw11: iterate the phdrs of ldso to find our dynamic info not the GOT,
+	 *       as GNU gold does not provide tge GOT entry.
+	 * begin: ----------------> */
+#if 0 /* original code */
 	/* Locate the global offset table.  Since this code must be PIC
 	 * we can take advantage of the magic offset register, if we
 	 * happen to know what that is for this architecture.  If not,
@@ -206,6 +212,21 @@ DL_START(unsigned long args)
 
 	/* Now, finally, fix up the location of the dynamic stuff */
 	DL_BOOT_COMPUTE_DYN(dpnt, got, load_addr);
+#else /* aw11 code */
+	/* locate the ELF phdrs.   We need this for finding the dynamic infos
+	 */
+	SEND_EARLY_STDERR_DEBUG("AT_PHDR=");
+	SEND_ADDRESS_STDERR_DEBUG(header->e_phoff, 1);
+	phdr = (ElfW(Phdr) *) DL_RELOC_ADDR(load_addr, header->e_phoff);
+	dpnt = 0;
+	for (i = 0; i < header->e_phnum; ++i) {
+		if (phdr[i].p_type == PT_DYNAMIC) {
+			DL_BOOT_COMPUTE_DYN(dpnt, phdr[i].p_vaddr, load_addr);
+			break;
+		}
+	}
+#endif
+	/* aw11: end <------------- */
 
 	SEND_EARLY_STDERR_DEBUG("First Dynamic section entry=");
 	SEND_ADDRESS_STDERR_DEBUG(dpnt, 1);
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-tls.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-tls.c
index 43dd5a00a..543bc973e 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-tls.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/dl-tls.c
@@ -271,6 +271,10 @@ _dl_next_tls_modid (void)
   return result;
 }
 
+#ifndef MAX
+# define MAX(x,y) (((x) > (y)) ? (x) : (y))
+#endif
+
 void
 internal_function
 _dl_determine_tlsoffset (void)
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/i386/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/i386/elfinterp.c
index b019c61a8..2835a038f 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/i386/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/i386/elfinterp.c
@@ -162,24 +162,25 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	int reloc_type;
 	int symtab_index;
 	char *symname;
-	struct elf_resolve *tls_tpnt = 0;
+	struct elf_resolve *tls_tpnt = NULL;
 	unsigned long *reloc_addr;
 	unsigned long symbol_addr;
 #if defined (__SUPPORT_LD_DEBUG__)
 	unsigned long old_val;
 #endif
+	struct symbol_ref sym_ref;
 
 	reloc_addr = (unsigned long *)(intptr_t)(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symname = strtab + symtab[symtab_index].st_name;
 
-	if (symtab_index &&
-	    (ELF32_ST_VISIBILITY(symtab[symtab_index].st_other)
-	     != STV_PROTECTED)) {
+	if (symtab_index) {
 		symbol_addr = (unsigned long)_dl_find_hash(symname, scope, tpnt,
-							   elf_machine_type_class(reloc_type), &tls_tpnt);
+							   elf_machine_type_class(reloc_type), &sym_ref);
 
 		/*
 		 * We want to allow undefined references to weak symbols - this
@@ -189,12 +190,9 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 		if (unlikely(!symbol_addr && (ELF_ST_TYPE(symtab[symtab_index].st_info) != STT_TLS)
 					&& ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK))
 			return 1;
+		tls_tpnt = sym_ref.tpnt;
 	} else {
-		if (symtab_index)
-			symbol_addr = DL_FIND_HASH_VALUE(tpnt, elf_machine_type_class(reloc_type),
-							 &symtab[symtab_index]);
-		else
-			symbol_addr = symtab[symtab_index].st_value;
+		symbol_addr = symtab[symtab_index].st_value;
 		tls_tpnt = tpnt;
 	}
 	
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c
index 8d8b733da..af837dcf4 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c
@@ -102,15 +102,13 @@ extern void _start(void);
 
 #ifdef __UCLIBC_HAS_SSP__
 # include <dl-osinfo.h>
-uintptr_t stack_chk_guard;
+static uintptr_t stack_chk_guard;
 # ifndef THREAD_SET_STACK_GUARD
 /* Only exported for architectures that don't store the stack guard canary
  * in local thread area.  */
 uintptr_t __stack_chk_guard attribute_relro;
-#  ifdef __UCLIBC_HAS_SSP_COMPAT__
-strong_alias(__stack_chk_guard,__guard)
-#  endif
-# elif __UCLIBC_HAS_SSP_COMPAT__
+# endif
+# ifdef __UCLIBC_HAS_SSP_COMPAT__
 uintptr_t __guard attribute_relro;
 # endif
 #endif
@@ -299,6 +297,9 @@ static void _dl_lib_deps_swap(struct elf_resolve **x, int a, int b)
 
 static void _dl_lib_deps_sort(struct elf_resolve **a, int len)
 {
+	if (!len)
+		return;
+
 	do {
 		int min = len - 1;
 		int i;
@@ -916,7 +917,16 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 		ElfW(Ehdr) *epnt = (ElfW(Ehdr) *) auxvt[AT_BASE].a_un.a_val;
 		ElfW(Phdr) *myppnt = (ElfW(Phdr) *) DL_RELOC_ADDR(load_addr, epnt->e_phoff);
 		int j;
-
+#ifdef __DSBT__
+		struct elf_resolve *ref = _dl_loaded_modules;
+		_dl_if_debug_dprint("ref is %x, dsbt %x, ref-dsbt %x size %x\n",
+				    ref, tpnt->loadaddr.map->dsbt_table,
+				    ref->loadaddr.map->dsbt_table,
+				    tpnt->loadaddr.map->dsbt_size);
+
+		_dl_memcpy(tpnt->loadaddr.map->dsbt_table, ref->loadaddr.map->dsbt_table,
+			   tpnt->loadaddr.map->dsbt_size * sizeof(unsigned *));
+#endif
 		tpnt = _dl_add_elf_hash_table(tpnt->libname, load_addr,
 					      tpnt->dynamic_info,
 					      (unsigned long)tpnt->dynamic_addr,
@@ -990,12 +1000,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 	stack_chk_guard = _dl_setup_stack_chk_guard ();
 # ifdef THREAD_SET_STACK_GUARD
 	THREAD_SET_STACK_GUARD (stack_chk_guard);
-#  ifdef __UCLIBC_HAS_SSP_COMPAT__
-	__guard = stack_chk_guard;
-#  endif
 # else
 	__stack_chk_guard = stack_chk_guard;
 # endif
+# ifdef __UCLIBC_HAS_SSP_COMPAT__
+	__guard = stack_chk_guard;
+# endif
 #endif
 
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c.orig b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c.orig
index b9b150072..8d8b733da 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c.orig
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/ldso.c.orig
@@ -47,7 +47,9 @@
 
 /* Global variables used within the shared library loader */
 char *_dl_library_path         = NULL;	/* Where we look for libraries */
+#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
 char *_dl_preload              = NULL;	/* Things to be loaded before the libs */
+#endif
 char *_dl_ldsopath             = NULL;	/* Location of the shared lib loader */
 int _dl_errno                  = 0;	/* We can't use the real errno in ldso */
 size_t _dl_pagesize            = 0;	/* Store the page size for use later */
@@ -390,7 +392,9 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 	     auxvt[AT_UID].a_un.a_val == auxvt[AT_EUID].a_un.a_val &&
 	     auxvt[AT_GID].a_un.a_val == auxvt[AT_EGID].a_un.a_val)) {
 		_dl_secure = 0;
+#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
 		_dl_preload = _dl_getenv("LD_PRELOAD", envp);
+#endif
 		_dl_library_path = _dl_getenv("LD_LIBRARY_PATH", envp);
 	} else {
 		static const char unsecure_envvars[] =
@@ -407,7 +411,9 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 			/* We could use rawmemchr but this need not be fast.  */
 			nextp = _dl_strchr(nextp, '\0') + 1;
 		} while (*nextp != '\0');
+#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
 		_dl_preload = NULL;
+#endif
 		_dl_library_path = NULL;
 		/* SUID binaries can be exploited if they do LAZY relocation. */
 		unlazy = RTLD_NOW;
@@ -418,19 +424,6 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 	_dl_init_static_tls = &_dl_nothread_init_static_tls;
 #endif
 
-#ifdef __UCLIBC_HAS_SSP__
-	/* Set up the stack checker's canary.  */
-	stack_chk_guard = _dl_setup_stack_chk_guard ();
-# ifdef THREAD_SET_STACK_GUARD
-	THREAD_SET_STACK_GUARD (stack_chk_guard);
-#  ifdef __UCLIBC_HAS_SSP_COMPAT__
-	__guard = stack_chk_guard;
-#  endif
-# else
-	__stack_chk_guard = stack_chk_guard;
-# endif
-#endif
-
 	/* At this point we are now free to examine the user application,
 	 * and figure out which libraries are supposed to be called.  Until
 	 * we have this list, we will not be completely ready for dynamic
@@ -667,6 +660,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 
 	_dl_map_cache();
 
+#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
 	if (_dl_preload) {
 		char c, *str, *str2;
 
@@ -722,6 +716,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 				str++;
 		}
 	}
+#endif /* __LDSO_PRELOAD_ENV_SUPPORT__ */
 
 #ifdef __LDSO_PRELOAD_FILE_SUPPORT__
 	do {
@@ -990,6 +985,19 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
 		tcbp = init_tls ();
 	}
 #endif
+#ifdef __UCLIBC_HAS_SSP__
+	/* Set up the stack checker's canary.  */
+	stack_chk_guard = _dl_setup_stack_chk_guard ();
+# ifdef THREAD_SET_STACK_GUARD
+	THREAD_SET_STACK_GUARD (stack_chk_guard);
+#  ifdef __UCLIBC_HAS_SSP_COMPAT__
+	__guard = stack_chk_guard;
+#  endif
+# else
+	__stack_chk_guard = stack_chk_guard;
+# endif
+#endif
+
 
 	_dl_debug_early("Beginning relocation fixups\n");
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/m68k/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/m68k/elfinterp.c
index 04c301ebb..3dfd50e96 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/m68k/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/m68k/elfinterp.c
@@ -157,7 +157,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	int reloc_type;
 	int symtab_index;
 	char *symname;
-	ElfW(Sym) *sym;
+	struct symbol_ref sym_ref;
 	ElfW(Addr) *reloc_addr;
 	ElfW(Addr) symbol_addr;
 #if defined (__SUPPORT_LD_DEBUG__)
@@ -167,19 +167,20 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	reloc_addr = (ElfW(Addr)*)(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
 	reloc_type = ELF_R_TYPE(rpnt->r_info);
 	symtab_index = ELF_R_SYM(rpnt->r_info);
-	sym = &symtab[symtab_index];
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symbol_addr = 0;
-	symname = strtab + sym->st_name;
+	symname = strtab + sym_ref.sym->st_name;
 
 	if (symtab_index) {
 		symbol_addr = (ElfW(Addr))_dl_find_hash(symname, scope, tpnt,
-							    elf_machine_type_class(reloc_type), NULL);
+							    elf_machine_type_class(reloc_type), &sym_ref);
 		/*
 		 * We want to allow undefined references to weak symbols - this
 		 * might have been intentional.  We should not be linking local
 		 * symbols here, so all bases should be covered.
 		 */
-		if (unlikely(!symbol_addr && ELF_ST_BIND(sym->st_info) != STB_WEAK)) {
+		if (unlikely(!symbol_addr && ELF_ST_BIND(sym_ref.sym->st_info) != STB_WEAK)) {
 			_dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname);
 			_dl_exit(1);
 		}
@@ -230,12 +231,12 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 				if (_dl_debug_move)
 					_dl_dprintf(_dl_debug_file,
 						    "\t%s move %d bytes from %x to %x\n",
-						    symname, sym->st_size,
+						    symname, sym_ref.sym->st_size,
 						    symbol_addr, reloc_addr);
 #endif
 				_dl_memcpy ((void *) reloc_addr,
 				            (void *) symbol_addr,
-				            sym->st_size);
+				            sym_ref.sym->st_size);
 			} else
 				_dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
 			break;
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/dl-sysdep.h b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/dl-sysdep.h
index c1aad6661..80c089aed 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/dl-sysdep.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/dl-sysdep.h
@@ -109,7 +109,7 @@ else if (dpnt->d_tag == DT_MIPS_SYMTABNO) \
      dynamic[DT_MIPS_SYMTABNO_IDX] = dpnt->d_un.d_val; \
 else if (dpnt->d_tag == DT_MIPS_PLTGOT) \
      dynamic[DT_MIPS_PLTGOT_IDX] = dpnt->d_un.d_val; \
-else if (dpnt->d_tag == DT_MIPS_RLD_MAP) \
+else if ((dpnt->d_tag == DT_MIPS_RLD_MAP) && (dpnt->d_un.d_ptr)) \
      *(ElfW(Addr) *)(dpnt->d_un.d_ptr) =  (ElfW(Addr)) debug_addr; \
 } while (0)
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/elfinterp.c
index a56ee81b4..2886f333d 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/mips/elfinterp.c
@@ -212,23 +212,27 @@ int _dl_parse_relocation_information(struct dyn_elf *xpnt,
 		case R_MIPS_TLS_TPREL32:
 # endif
 			{
-				struct elf_resolve *tpnt_tls = NULL;
+				struct elf_resolve *tls_tpnt = NULL;
+				struct symbol_ref sym_ref;
+				sym_ref.sym =  &symtab[symtab_index];
+				sym_ref.tpnt =  NULL;
 
 				if (ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_LOCAL) {
 					symbol_addr = (unsigned long) _dl_find_hash(symname, tpnt->symbol_scope,
-						tpnt, elf_machine_type_class(reloc_type), &tpnt_tls);
+						tpnt, elf_machine_type_class(reloc_type), &sym_ref);
+					tls_tpnt = sym_ref.tpnt;
 				}
-			    /* In case of a TLS reloc, tpnt_tls NULL means we have an 'anonymous'
+			    /* In case of a TLS reloc, tls_tpnt NULL means we have an 'anonymous'
 			       symbol.  This is the case for a static tls variable, so the lookup
 			       module is just that one is referencing the tls variable. */
-			    if (!tpnt_tls)
-			        tpnt_tls = tpnt;
+			    if (!tls_tpnt)
+			        tls_tpnt = tpnt;
 
 				switch (reloc_type) {
 					case R_MIPS_TLS_DTPMOD64:
 					case R_MIPS_TLS_DTPMOD32:
-						if (tpnt_tls)
-							*(ElfW(Word) *)reloc_addr = tpnt_tls->l_tls_modid;
+						if (tls_tpnt)
+							*(ElfW(Word) *)reloc_addr = tls_tpnt->l_tls_modid;
 #ifdef __SUPPORT_LD_DEBUG__
 						_dl_dprintf(2, "TLS_DTPMOD : %s, %d, %d\n",
 							symname, old_val, *((unsigned int *)reloc_addr));
@@ -247,9 +251,9 @@ int _dl_parse_relocation_information(struct dyn_elf *xpnt,
 
 					case R_MIPS_TLS_TPREL32:
 					case R_MIPS_TLS_TPREL64:
-						CHECK_STATIC_TLS((struct link_map *)tpnt_tls);
+						CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
 						*(ElfW(Word) *)reloc_addr +=
-							TLS_TPREL_VALUE (tpnt_tls, symbol_addr);
+							TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
 #ifdef __SUPPORT_LD_DEBUG__
 						_dl_dprintf(2, "TLS_TPREL  : %s, %x, %x\n",
 							symname, old_val, *((unsigned int *)reloc_addr));
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/powerpc/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/powerpc/elfinterp.c
index 855c040d3..dd35eef54 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/powerpc/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/powerpc/elfinterp.c
@@ -187,7 +187,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 {
 	int reloc_type;
 	int symtab_index;
-	ElfW(Sym) *sym;
+	struct symbol_ref sym_ref;
 	Elf32_Addr *reloc_addr;
 	Elf32_Addr finaladdr;
 	struct elf_resolve *tls_tpnt = NULL;
@@ -201,21 +201,23 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 	reloc_addr   = (Elf32_Addr *)(intptr_t) (symbol_addr + (unsigned long) rpnt->r_offset);
 	reloc_type   = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
-	sym          = &symtab[symtab_index];
-	symname      = strtab + sym->st_name;
+	sym_ref.sym  = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
+	symname      = strtab + sym_ref.sym->st_name;
 	if (symtab_index) {
 		symbol_addr = (unsigned long) _dl_find_hash(symname, scope, tpnt,
-							    elf_machine_type_class(reloc_type), &tls_tpnt);
+							    elf_machine_type_class(reloc_type),  &sym_ref);
 		/* We want to allow undefined references to weak symbols - this might
 		 * have been intentional.  We should not be linking local symbols
 		 * here, so all bases should be covered.
 		 */
 		if (unlikely(!symbol_addr
-			&& (ELF32_ST_TYPE(sym->st_info) != STT_TLS
-				&& ELF32_ST_BIND(sym->st_info) != STB_WEAK)))
+			&& (ELF32_ST_TYPE(sym_ref.sym->st_info) != STT_TLS
+				&& ELF32_ST_BIND(sym_ref.sym->st_info) != STB_WEAK)))
 			return 1;
+		tls_tpnt = sym_ref.tpnt;
 	} else {
-		symbol_addr = sym->st_value;
+		symbol_addr = sym_ref.sym->st_value;
 		tls_tpnt = tpnt;
 	}
 #if defined (__SUPPORT_LD_DEBUG__)
@@ -265,10 +267,10 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 #if defined (__SUPPORT_LD_DEBUG__)
 		if (_dl_debug_move)
 			_dl_dprintf(_dl_debug_file,"\n%s move %x bytes from %x to %x",
-				    symname, sym->st_size,
+				    symname, sym_ref.sym->st_size,
 				    symbol_addr, reloc_addr);
 #endif
-		_dl_memcpy((char *) reloc_addr, (char *) finaladdr, sym->st_size);
+		_dl_memcpy((char *) reloc_addr, (char *) finaladdr, sym_ref.sym->st_size);
 		goto out_nocode; /* No code code modified */
 	case R_PPC_ADDR16_HA:
 		finaladdr += 0x8000; /* fall through. */
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh/elfinterp.c
index 756f6c443..be3b98cf6 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh/elfinterp.c
@@ -161,37 +161,35 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
 #endif
 
 	struct elf_resolve *tls_tpnt = NULL;
+	struct symbol_ref sym_ref;
 
 	reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 
 	if (symtab_index) {
 		symname = strtab + symtab[symtab_index].st_name;
-		if (ELF32_ST_VISIBILITY(symtab[symtab_index].st_other)
-			 != STV_PROTECTED) {
-			symbol_addr = (unsigned long) _dl_find_hash(symname, scope, tpnt,
-								elf_machine_type_class(reloc_type), &tls_tpnt);
-			/*
-			 * We want to allow undefined references to weak symbols - this might
-			 * have been intentional.  We should not be linking local symbols
-			 * here, so all bases should be covered.
-			 */
-
-			if (!symbol_addr
-				&& (ELF_ST_TYPE(symtab[symtab_index].st_info) != STT_TLS)
-				&& (ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) {
-				_dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
-				            _dl_progname, strtab + symtab[symtab_index].st_name);
-
-				/* Let the caller to handle the error: it may be non fatal if called from dlopen */
-				return 1;
-			}
-		} else
-			/* Resolve protected symbols locally */
-			symbol_addr = DL_FIND_HASH_VALUE(tpnt, elf_machine_type_class(reloc_type),
-											&symtab[symtab_index]);
+		symbol_addr = (unsigned long) _dl_find_hash(symname, scope, tpnt,
+						elf_machine_type_class(reloc_type), &sym_ref);
+		/*
+		 * We want to allow undefined references to weak symbols - this might
+		 * have been intentional.  We should not be linking local symbols
+		 * here, so all bases should be covered.
+		 */
+
+		if (!symbol_addr
+			&& (ELF_ST_TYPE(symtab[symtab_index].st_info) != STT_TLS)
+			&& (ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) {
+			_dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
+			            _dl_progname, symname);
+
+			/* Let the caller to handle the error: it may be non fatal if called from dlopen */
+			return 1;
+		}
+		tls_tpnt = sym_ref.tpnt;
 	}
 
 #if defined (__SUPPORT_LD_DEBUG__)
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh64/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh64/elfinterp.c
index 74fda04dc..990aed155 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh64/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sh64/elfinterp.c
@@ -173,11 +173,14 @@ static int _dl_do_reloc(struct elf_resolve *tpnt,struct dyn_elf *scope,
 #ifdef __SUPPORT_LD_DEBUG__
 	unsigned long old_val;
 #endif
+	struct symbol_ref sym_ref;
 
 	reloc_type   = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr  = 0;
 	lsb          = !!(symtab[symtab_index].st_other & STO_SH5_ISA32);
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symname      = strtab + symtab[symtab_index].st_name;
 	reloc_addr   = (unsigned long *)(intptr_t)
 		(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
@@ -186,7 +189,7 @@ static int _dl_do_reloc(struct elf_resolve *tpnt,struct dyn_elf *scope,
 		int stb;
 
 		symbol_addr = (unsigned long)_dl_find_hash(symname, scope, tpnt,
-							   elf_machine_type_class(reloc_type), NULL);
+							   elf_machine_type_class(reloc_type), &sym_ref);
 
 		/*
 		 * We want to allow undefined references to weak symbols - this
@@ -197,7 +200,7 @@ static int _dl_do_reloc(struct elf_resolve *tpnt,struct dyn_elf *scope,
 
 		if (stb != STB_WEAK && !symbol_addr) {
 			_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
-				     _dl_progname, strtab + symtab[symtab_index].st_name);
+				     _dl_progname, symname);
 			_dl_exit (1);
 		}
 	}
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sparc/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sparc/elfinterp.c
index 56335cb5c..c684378cc 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sparc/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/sparc/elfinterp.c
@@ -170,8 +170,8 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	int reloc_type;
 	int symtab_index;
 	char *symname;
-	struct elf_resolve *tls_tpnt = 0;
-	ElfW(Sym) *sym;
+	struct elf_resolve *tls_tpnt = NULL;
+	struct symbol_ref sym_ref;
 	ElfW(Addr) *reloc_addr;
 	ElfW(Addr) symbol_addr;
 #if defined (__SUPPORT_LD_DEBUG__)
@@ -181,29 +181,31 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	reloc_addr = (ElfW(Addr)*)(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
 	reloc_type = ELF_R_TYPE(rpnt->r_info);
 	symtab_index = ELF_R_SYM(rpnt->r_info);
-	sym = &symtab[symtab_index];
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symbol_addr = 0;
-	symname = strtab + sym->st_name;
+	symname = strtab + sym_ref.sym->st_name;
 
 	if (symtab_index) {
 		symbol_addr = (ElfW(Addr))_dl_find_hash(symname, scope, tpnt,
-							    elf_machine_type_class(reloc_type), &tls_tpnt);
+							    elf_machine_type_class(reloc_type), &sym_ref);
 		/*
 		 * We want to allow undefined references to weak symbols - this
 		 * might have been intentional.  We should not be linking local
 		 * symbols here, so all bases should be covered.
 		 */
-		if (unlikely(!symbol_addr && (ELF_ST_TYPE(sym->st_info) != STT_TLS)
-		    && (ELF_ST_BIND(sym->st_info) != STB_WEAK))) {
+		if (unlikely(!symbol_addr && (ELF_ST_TYPE(sym_ref.sym->st_info) != STT_TLS)
+		    && (ELF_ST_BIND(sym_ref.sym->st_info) != STB_WEAK))) {
 			/* This may be non-fatal if called from dlopen. */
 			return 1;
 
 		}
+		tls_tpnt = sym_ref.tpnt;
 	} else {
 		/* Relocs against STN_UNDEF are usually treated as using a
 		 * symbol value of zero, and using the module containing the
 		 * reloc itself. */
-		symbol_addr = sym->st_value;
+		symbol_addr = sym_ref.sym->st_value;
 		tls_tpnt = tpnt;
 	}
 
@@ -262,13 +264,13 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 				if (_dl_debug_move)
 					_dl_dprintf(_dl_debug_file,
 						    "\t%s move %d bytes from %x to %x\n",
-						    symname, sym->st_size,
+						    symname, sym_ref.sym->st_size,
 						    symbol_addr, reloc_addr);
 #endif
 
 				_dl_memcpy((char *)reloc_addr,
 					   (char *)symbol_addr,
-					   sym->st_size);
+					   sym_ref.sym->st_size);
 			} else
 				_dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
 			break;
@@ -280,7 +282,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 		case R_SPARC_TLS_DTPOFF32:
 			/* During relocation all TLS symbols are defined and used.
 			 * Therefore the offset is already correct.  */
-			*reloc_addr = sym->st_value + rpnt->r_addend;
+			*reloc_addr = sym_ref.sym->st_value + rpnt->r_addend;
 			break;
 
 		case R_SPARC_TLS_TPOFF32:
@@ -289,7 +291,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 			 * It is a negative value which will be added to the
 			 * thread pointer.  */
 			CHECK_STATIC_TLS ((struct link_map *) tls_tpnt);
-			*reloc_addr = sym->st_value - tls_tpnt->l_tls_offset + rpnt->r_addend;
+			*reloc_addr = sym_ref.sym->st_value - tls_tpnt->l_tls_offset + rpnt->r_addend;
 			break;
 #endif
 		default:
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/x86_64/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/x86_64/elfinterp.c
index 358beec66..664c9ee87 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/x86_64/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/x86_64/elfinterp.c
@@ -157,8 +157,8 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	int reloc_type;
 	int symtab_index;
 	char *symname;
-	struct elf_resolve *tls_tpnt = 0;
-	ElfW(Sym) *sym;
+	struct elf_resolve *tls_tpnt = NULL;
+	struct symbol_ref sym_ref;
 	ElfW(Addr) *reloc_addr;
 	ElfW(Addr) symbol_addr;
 #if defined (__SUPPORT_LD_DEBUG__)
@@ -168,28 +168,30 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 	reloc_addr = (ElfW(Addr)*)(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
 	reloc_type = ELF_R_TYPE(rpnt->r_info);
 	symtab_index = ELF_R_SYM(rpnt->r_info);
-	sym = &symtab[symtab_index];
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symbol_addr = 0;
-	symname = strtab + sym->st_name;
+	symname = strtab + sym_ref.sym->st_name;
 
 	if (symtab_index) {
 		symbol_addr = (ElfW(Addr))_dl_find_hash(symname, scope, tpnt,
-				elf_machine_type_class(reloc_type), &tls_tpnt);
+				elf_machine_type_class(reloc_type), &sym_ref);
 		/*
 		 * We want to allow undefined references to weak symbols - this
 		 * might have been intentional.  We should not be linking local
 		 * symbols here, so all bases should be covered.
 		 */
-		if (unlikely(!symbol_addr && (ELF_ST_TYPE(sym->st_info) != STT_TLS)
-					&& (ELF_ST_BIND(sym->st_info) != STB_WEAK))) {
+		if (unlikely(!symbol_addr && (ELF_ST_TYPE(sym_ref.sym->st_info) != STT_TLS)
+					&& (ELF_ST_BIND(sym_ref.sym->st_info) != STB_WEAK))) {
 			/* This may be non-fatal if called from dlopen. */
 			return 1;
 		}
+		tls_tpnt = sym_ref.tpnt;
 	} else {
 		/* Relocs against STN_UNDEF are usually treated as using a
 		 * symbol value of zero, and using the module containing the
 		 * reloc itself. */
-		symbol_addr = sym->st_value;
+		symbol_addr = sym_ref.sym->st_value;
 		tls_tpnt = tpnt;
 	}
 
@@ -255,13 +257,13 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 				if (_dl_debug_move)
 					_dl_dprintf(_dl_debug_file,
 						    "\t%s move %d bytes from %x to %x\n",
-						    symname, sym->st_size,
+						    symname, sym_ref.sym->st_size,
 						    symbol_addr, reloc_addr);
 #endif
 
 				_dl_memcpy((char *)reloc_addr,
 					   (char *)symbol_addr,
-					   sym->st_size);
+					   sym_ref.sym->st_size);
 			} else
 				_dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
 			break;
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/xtensa/elfinterp.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/xtensa/elfinterp.c
index 48281913d..8eb600916 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/xtensa/elfinterp.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/ldso/xtensa/elfinterp.c
@@ -146,7 +146,7 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope,
 	int reloc_type;
 	int symtab_index;
 	char *symname;
-	Elf32_Sym *sym;
+	struct symbol_ref sym_ref;
 	Elf32_Addr *reloc_addr;
 	Elf32_Addr symbol_addr;
 #if defined (__SUPPORT_LD_DEBUG__)
@@ -156,14 +156,15 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope,
 	reloc_addr = (Elf32_Addr *) (tpnt->loadaddr + rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE (rpnt->r_info);
 	symtab_index = ELF32_R_SYM (rpnt->r_info);
-	sym = &symtab[symtab_index];
+	sym_ref.sym = &symtab[symtab_index];
+	sym_ref.tpnt = NULL;
 	symbol_addr = 0;
-	symname = strtab + sym->st_name;
+	symname = strtab + sym_ref.sym->st_name;
 
 	if (symtab_index) {
 		symbol_addr = (Elf32_Addr)
 			_dl_find_hash (symname, scope, tpnt,
-						   elf_machine_type_class (reloc_type), NULL);
+						   elf_machine_type_class (reloc_type), &sym_ref);
 
 		/*
 		 * We want to allow undefined references to weak symbols - this might
@@ -171,7 +172,7 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope,
 		 * here, so all bases should be covered.
 		 */
 		if (unlikely (!symbol_addr &&
-					  ELF32_ST_BIND (sym->st_info) != STB_WEAK)) {
+					  ELF32_ST_BIND (sym_ref.sym->st_info) != STB_WEAK)) {
 			_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
 						 _dl_progname, symname);
 			_dl_exit (1);
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/Makefile.in b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/Makefile.in
index 39db7a876..152185e37 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/Makefile.in
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/Makefile.in
@@ -19,6 +19,7 @@ endif
 
 CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
 
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libdl.so := -Wl,--dsbt-index=3
 LDFLAGS-libdl.so := $(LDFLAGS) -Wl,-fini,dl_cleanup
 
 LIBS-libdl.so := $(LIBS) $(ldso)
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c
index 47c58266e..e3b0e8445 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c
@@ -304,7 +304,18 @@ void *dlopen(const char *libname, int flag)
 	}
 	/* Cover the trivial case first */
 	if (!libname)
-		return _dl_symbol_tables;
+      {
+// L4: Fix the case that a static program does not have a symbol table for
+// the main program but needs to set the error code. LD_NO_SYMBOL has been
+// taken because it sounds useful for that case. glibc does seem to have a
+// rather strange handling in the static case.
+#ifdef SHARED
+        return _dl_symbol_tables;
+#else
+        _dl_error_number = LD_NO_SYMBOL;
+        return NULL;
+#endif
+      }
 
 #ifndef SHARED
 # ifdef __SUPPORT_LD_DEBUG__
@@ -615,7 +626,7 @@ void *dlsym(void *vhandle, const char *name)
 	ElfW(Addr) from;
 	struct dyn_elf *rpnt;
 	void *ret;
-	struct elf_resolve *tls_tpnt = NULL;
+	struct symbol_ref sym_ref = { NULL, NULL };
 	/* Nastiness to support underscore prefixes.  */
 #ifdef __UCLIBC_UNDERSCORES__
 	char tmp_buf[80];
@@ -670,13 +681,13 @@ void *dlsym(void *vhandle, const char *name)
 	tpnt = NULL;
 	if (handle == _dl_symbol_tables)
 		tpnt = handle->dyn; /* Only search RTLD_GLOBAL objs if global object */
-	ret = _dl_find_hash(name2, handle, NULL, 0, &tls_tpnt);
+	ret = _dl_find_hash(name2, handle, tpnt, 0, &sym_ref);
 
 #if defined(USE_TLS) && USE_TLS && defined SHARED
-	if (tls_tpnt) {
+	if (sym_ref.tpnt) {
 		/* The found symbol is a thread-local storage variable.
 		Return the address for to the current thread.  */
-		ret = _dl_tls_symaddr ((struct link_map *)tls_tpnt, (Elf32_Addr)ret);
+		ret = _dl_tls_symaddr ((struct link_map *)sym_ref.tpnt, (Elf32_Addr)ret);
 	}
 #endif
 
@@ -924,6 +935,10 @@ static int do_dlclose(void *vhandle, int need_fini)
 			free(tpnt);
 		}
 	}
+	for (rpnt1 = handle->next; rpnt1; rpnt1 = rpnt1_tmp) {
+		rpnt1_tmp = rpnt1->next;
+		free(rpnt1);
+	}
 	free(handle->init_fini.init_fini);
 	free(handle);
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c.orig b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c.orig
index 667798a70..47c58266e 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c.orig
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/ldso/libdl/libdl.c.orig
@@ -42,7 +42,6 @@
 
 #if defined(USE_TLS) && USE_TLS
 #include <ldsodefs.h>
-extern void (*_dl_init_static_tls) (struct link_map *);
 extern void _dl_add_to_slotinfo(struct link_map  *l);
 #endif
 
@@ -739,7 +738,7 @@ static int do_dlclose(void *vhandle, int need_fini)
 		_dl_handles = rpnt->next_handle;
 	_dl_if_debug_print("%s: usage count: %d\n",
 			handle->dyn->libname, handle->dyn->usage_count);
-	if (handle->dyn->usage_count != 1) {
+	if (handle->dyn->usage_count != 1 || (handle->dyn->rtld_flags & RTLD_NODELETE)) {
 		handle->dyn->usage_count--;
 		free(handle);
 		return 0;
@@ -747,7 +746,8 @@ static int do_dlclose(void *vhandle, int need_fini)
 	/* OK, this is a valid handle - now close out the file */
 	for (j = 0; j < handle->init_fini.nlist; ++j) {
 		tpnt = handle->init_fini.init_fini[j];
-		if (--tpnt->usage_count == 0) {
+		tpnt->usage_count--;
+		if (tpnt->usage_count == 0 && !(tpnt->rtld_flags & RTLD_NODELETE)) {
 			if ((tpnt->dynamic_info[DT_FINI]
 			     || tpnt->dynamic_info[DT_FINI_ARRAY])
 			 && need_fini
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/elf/dl-support.c b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/elf/dl-support.c
index f1946924c..3ca7afc6e 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/elf/dl-support.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/elf/dl-support.c
@@ -16,6 +16,7 @@
 #if defined(USE_TLS) && USE_TLS
 #include <assert.h>
 #include <tls.h>
+#include <stdbool.h>
 #include <ldsodefs.h>
 #include <string.h>
 #endif
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c
index 1570ed341..5b9526c8e 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c
@@ -127,7 +127,14 @@ static __always_inline int not_null_ptr(const void *p)
  */
 extern int *weak_const_function __errno_location(void);
 extern int *weak_const_function __h_errno_location(void);
+/* aw11: hidden and weak in a statically linked library meaningless
+ *       and gold in x86_64 complains about
+ */
+#ifdef SHARED
 extern void weak_function _stdio_init(void) attribute_hidden;
+#else
+extern void weak_function _stdio_init(void);
+#endif
 #ifdef __UCLIBC_HAS_LOCALE__
 extern void weak_function _locale_init(void) attribute_hidden;
 #endif
@@ -382,15 +389,12 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
 #endif
 	aux_dat += 2;
     }
-#ifdef NOT_FOR_L4
-    // l4: should come out of libdl
 #ifndef SHARED
     /* Get the program headers (_dl_phdr) from the aux vector
        It will be used into __libc_setup_tls. */
 
     _dl_aux_init (auxvt);
 #endif
-#endif
 #endif
 
     /* We need to initialize uClibc.  If we are dynamically linked this
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/tempname.c b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/tempname.c
index 4145c9478..5ad11c67c 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/tempname.c
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/libc/misc/internals/tempname.c
@@ -113,7 +113,7 @@ int attribute_hidden ___path_search (char *tmpl, size_t tmpl_len, const char *di
 	return -1;
     }
 
-    sprintf (tmpl, "%.*s/%.*sXXXXXX", dlen, dir, plen, pfx);
+    sprintf (tmpl, "%.*s/%.*sXXXXXX", (int)dlen, dir, (int)plen, pfx);
     return 0;
 }
 
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/arm/bits/mathdef.h b/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/arm/bits/mathdef.h
index e013e74b7..1be9b59d1 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/arm/bits/mathdef.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/arm/bits/mathdef.h
@@ -35,6 +35,7 @@ typedef double double_t;	/* `double' expressions are evaluated as
 
 #endif	/* ISO C99 */
 
+#ifdef L4_DISABLE_LONG_DOUBLE_MATH
 #ifndef __NO_LONG_DOUBLE_MATH
 /* Signal that we do not really have a `long double'.  This disables the
    declaration of all the `long double' function variants.  */
@@ -42,3 +43,4 @@ typedef double double_t;	/* `double' expressions are evaluated as
    turned off.  */
 # define __NO_LONG_DOUBLE_MATH	1
 #endif
+#endif
diff --git a/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/sparc/bits/mathdef.h b/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/sparc/bits/mathdef.h
index 5cd126f1f..718d06437 100644
--- a/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/sparc/bits/mathdef.h
+++ b/l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/sparc/bits/mathdef.h
@@ -39,6 +39,7 @@ typedef double double_t;
 
 #endif	/* ISO C99 */
 
+#ifdef L4_DISABLE_LONG_DOUBLE_MATH
 #ifndef __NO_LONG_DOUBLE_MATH
 
 # if __WORDSIZE == 32
@@ -51,3 +52,4 @@ typedef double double_t;
 # endif
 
 #endif
+#endif
diff --git a/l4/pkg/uclibc/lib/libpthread/include/bits/pthreadtypes.h b/l4/pkg/uclibc/lib/libpthread/include/bits/pthreadtypes.h
index 643a90fa2..504c0b198 100644
--- a/l4/pkg/uclibc/lib/libpthread/include/bits/pthreadtypes.h
+++ b/l4/pkg/uclibc/lib/libpthread/include/bits/pthreadtypes.h
@@ -16,7 +16,6 @@
 
 #include <stddef.h>
 #include <l4/sys/types.h>
-#include <l4/sys/utcb.h>
 
 #define __need_schedparam
 #include <bits/sched.h>
diff --git a/l4/pkg/uclibc/lib/libpthread/src/Makefile b/l4/pkg/uclibc/lib/libpthread/src/Makefile
index 698362c36..a48472585 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/Makefile
+++ b/l4/pkg/uclibc/lib/libpthread/src/Makefile
@@ -1,34 +1,50 @@
 PKGDIR     ?= ../../..
 L4DIR      ?= $(PKGDIR)/../..
 
-TARGET      = r/libpthread.a r/libpthread.so
+TARGET      = libpthread.a libpthread.so
 
 PC_FILENAME = libpthread
 PC_LIBS_libpthread := -lpthread
 
+CONTRIBDIR = $(PKGDIR)/../uclibc/lib/contrib/uclibc
+LDSODIR    = $(CONTRIBDIR)/ldso/ldso
+
 SRC_CC      = manager.cc l4.cc
 SRC_C      += spinlock.c mutex.c condvar.c rwlock.c errno.c specific.c \
               semaphore.c attr.c barrier.c join.c pthread.c \
-              errno-loc.c cancel.c ptcleanup.c libc_pthread_init.c
+              cancel.c ptcleanup.c errno-loc.c
+SRC_C_libpthread.a += libc_pthread_init.c
 SRC_S       = tramp-$(ARCH).S
 SO_INIT     = so_init-$(ARCH)
 
+vpath %.c $(SRC_DIR)/sysdeps/generic
+#vpath dl-tls.c $(PKGDIR)/lib/contrib/uclibc/ldso/ldso
+
+DIR_amd64 := x86_64
+DIR_x86   := i386
+DIR_arm   := arm
+DIR_ppc32 := powerpc
+DIR_sparc := sparc
+
 
 INCDIR-x86   = $(SRC_DIR)/sysdeps/i386/i686 $(SRC_DIR)/sysdeps/i386 \
-               $(PKGDIR)/lib/contrib/uclibc/libc
-INCDIR-amd64 = $(SRC_DIR)/sysdeps/x86_64
+               $(CONTRIBDIR)/libc \
+               $(LDSODIR)/$(DIR_$(ARCH))
+INCDIR-amd64 = $(SRC_DIR)/sysdeps/$(DIR_$(ARCH))
 INCDIR-arm   = $(SRC_DIR)/sysdeps/arm
 INCDIR-ppc32 = $(SRC_DIR)/sysdeps/powerpc
 INCDIR-sparc = $(SRC_DIR)/sysdeps/sparc
 
-PRIVATE_INCDIR = $(SRC_DIR) $(INCDIR-$(ARCH))
+PRIVATE_INCDIR = $(SRC_DIR) $(INCDIR-$(ARCH)) $(CONTRIBDIR)/ldso/include
 
 DEFINES   := -DL4_THREAD_SAFE -D__USE_XOPEN2K -D_POSIX_C_SOURCE=200112L \
              -D_GNU_SOURCE=1 -D__NO_WEAK_PTHREAD_ALIASES=1 \
-	     -D_LIBC=1 -DIS_IN_libpthread=1
+	     -D_LIBC=1 -DIS_IN_libpthread=1 -DNOT_IN_libc=1
+
+DEFINES_x86-l4f := -DUSE___THREAD=1 
 
-CFLAGS    += -include $(PKGDIR)/lib/contrib/uclibc/include/libc-symbols.h
-CXXFLAGS  += -include $(PKGDIR)/lib/contrib/uclibc/include/libc-symbols.h
+CFLAGS    += -include $(CONTRIBDIR)/include/libc-symbols.h
+CXXFLAGS  += -include $(CONTRIBDIR)/include/libc-symbols.h
 CXXFLAGS  += -fno-exceptions
 
 include $(L4DIR)/mk/lib.mk
@@ -36,5 +52,6 @@ CRT0 = $(CRTI_so) $(SO_INIT).s.o $(CRTBEGIN_so) $(CRT1_so)
 
 CFLAGS := $(filter-out -Wextra,$(CFLAGS))
 CXXFLAGS := $(filter-out -Wextra,$(CXXFLAGS))
+PICFLAGS += -DSHARED
 
-r/libpthread.so: $(SO_INIT).s.o
+libpthread.so: $(SO_INIT).s.o
diff --git a/l4/pkg/uclibc/lib/libpthread/src/cancel.c b/l4/pkg/uclibc/lib/libpthread/src/cancel.c
index de73f374e..cc31a8a21 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/cancel.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/cancel.c
@@ -94,7 +94,7 @@ static void pthread_handle_sigcancel(void)
   pthread_descr self = check_thread_self();
   sigjmp_buf * jmpbuf;
 
-  if (self == &__pthread_manager_thread)
+  if (self == __manager_thread)
     {
       enter_kdebug("cancel of the manager hooooo");
 #if 0
diff --git a/l4/pkg/uclibc/lib/libpthread/src/descr.h b/l4/pkg/uclibc/lib/libpthread/src/descr.h
index 8b24a5ac6..0ce33b061 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/descr.h
+++ b/l4/pkg/uclibc/lib/libpthread/src/descr.h
@@ -20,9 +20,8 @@
 #include <setjmp.h>
 #include <stdint.h>
 #include <sys/types.h>
-#ifdef USE_TLS
 #include <tls.h>
-#endif
+#include <l4/sys/utcb.h>
 
 #ifdef L4_PTHREAD_USE_USEM
 #include <l4/sys/semaphore.h>
diff --git a/l4/pkg/uclibc/lib/libpthread/src/errno-loc.c b/l4/pkg/uclibc/lib/libpthread/src/errno-loc.c
index c09717c25..79248c0c2 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/errno-loc.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/errno-loc.c
@@ -22,6 +22,9 @@
 #include "internals.h"
 #include <pt-machine.h>
 //#include <sysdep-cancel.h>
+#if defined USE_TLS && USE_TLS
+#define USE___THREAD 1
+#endif
 
 #define SINGLE_THREAD_P \
   __builtin_expect (THREAD_GETMEM (thread_self(),				      \
diff --git a/l4/pkg/uclibc/lib/libpthread/src/internals.h b/l4/pkg/uclibc/lib/libpthread/src/internals.h
index f8d242c51..add61ba03 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/internals.h
+++ b/l4/pkg/uclibc/lib/libpthread/src/internals.h
@@ -46,13 +46,13 @@
 # define THREAD_GETMEM(descr, member) descr->member
 #endif
 #ifndef THREAD_GETMEM_NC
-# define THREAD_GETMEM_NC(descr, member) descr->member
+# define THREAD_GETMEM_NC(descr, member, idx) descr->member[idx]
 #endif
 #ifndef THREAD_SETMEM
 # define THREAD_SETMEM(descr, member, value) descr->member = (value)
 #endif
 #ifndef THREAD_SETMEM_NC
-# define THREAD_SETMEM_NC(descr, member, value) descr->member = (value)
+# define THREAD_SETMEM_NC(descr, member, idx, value) descr->member[idx] = (value)
 #endif
 
 #if !defined NOT_IN_libc
@@ -87,7 +87,8 @@ typedef l4_utcb_t *pthread_handle;
 
 enum pthread_request_rq {                        /* Request kind */
     REQ_CREATE, REQ_FREE, REQ_PROCESS_EXIT, REQ_MAIN_THREAD_EXIT,
-    REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD
+    REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD,
+    REQ_THREAD_EXIT
 };
 
 struct pthread_request {
@@ -579,7 +580,7 @@ check_thread_self (void)
 	 initialized, so that the thread register might still point to the
 	 manager thread.  Double check that this is really the manager
 	 thread.  */
-      self = __pthread_self_stack();
+      self = handle_to_descr(l4_utcb());
       if (self != __manager_thread)
 	/* Oops, thread_self() isn't working yet..  */
 	INIT_THREAD_SELF(self, self->p_nr);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/join.c b/l4/pkg/uclibc/lib/libpthread/src/join.c
index 7e08510f3..0485bc8ff 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/join.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/join.c
@@ -72,8 +72,14 @@ void __pthread_do_exit(void *retval, char *currentframe)
   }
   /* Threads other than the main one  terminate without flushing stdio streams
      or running atexit functions. */
-  l4_sleep_forever();
+
   //_exit(0);
+
+  request.req_thread = self;
+  request.req_kind = REQ_THREAD_EXIT;
+  __pthread_send_manager_rq(&request, 1);
+
+  l4_sleep_forever();
 }
 
 /* Function called by pthread_cancel to remove the thread from
diff --git a/l4/pkg/uclibc/lib/libpthread/src/l4.cc b/l4/pkg/uclibc/lib/libpthread/src/l4.cc
index db06e619f..7fa3c506f 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/l4.cc
+++ b/l4/pkg/uclibc/lib/libpthread/src/l4.cc
@@ -82,6 +82,7 @@ int __pthread_l4_initialize_main_thread(pthread_descr th)
 
   th->p_lock = handle_to_lock(l4_utcb());
   th->p_tid  = l4_utcb();
+  l4_utcb_tcr()->user[0] = l4_addr_t(th);
 
   return 0;
 }
diff --git a/l4/pkg/uclibc/lib/libpthread/src/manager.cc b/l4/pkg/uclibc/lib/libpthread/src/manager.cc
index 5c0b3704a..c82e11a8c 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/manager.cc
+++ b/l4/pkg/uclibc/lib/libpthread/src/manager.cc
@@ -40,12 +40,17 @@
 #include <l4/sys/scheduler>
 #include <l4/sys/thread>
 
+extern "C" {
 #include "pthread.h"
 #include "internals.h"
 #include "spinlock.h"
 #include "restart.h"
 #include "semaphore.h"
 #include "l4.h"
+#include <ldsodefs.h>
+}
+
+#define USE_L4RE_FOR_STACK
 
 #ifndef MIN
 # define MIN(a,b) (((a) < (b)) ? (a) : (b))
@@ -53,9 +58,6 @@
 
 extern "C" void __pthread_new_thread_entry(void);
 
-/* For debugging purposes put the maximum number of threads in a variable.  */
-const int __linuxthreads_pthread_threads_max = PTHREAD_THREADS_MAX;
-
 #ifndef THREAD_SELF
 /* Indicate whether at least one thread has a user-defined stack (if 1),
    or if all threads have stacks supplied by LinuxThreads (if 0). */
@@ -102,6 +104,8 @@ static void pthread_handle_exit(pthread_descr issuing_thread, int exitcode)
 static void pthread_for_each_thread(void *arg,
     void (*fn)(void *, pthread_descr));
 
+static void pthread_exited(pthread_descr th);
+
 /* The server thread managing requests for thread creation and termination */
 
 int
@@ -111,6 +115,9 @@ __pthread_manager(void *arg)
   pthread_descr self = manager_thread = (pthread_descr)arg;
   struct pthread_request request;
 
+#ifdef USE_TLS
+  TLS_INIT_TP(self, 0);
+#endif
   /* If we have special thread_self processing, initialize it.  */
 #ifdef INIT_THREAD_SELF
   INIT_THREAD_SELF(self, 1);
@@ -199,6 +206,22 @@ __pthread_manager(void *arg)
           restart(request.req_thread);
 	  do_reply = 1;
 	  break;
+        case REQ_THREAD_EXIT:
+            {
+              l4_msgtag_t e;
+              L4::Cap<L4::Thread> c;
+
+              pthread_exited(request.req_thread);
+
+              c = L4::Cap<L4::Thread>(request.req_thread->p_thsem_cap);
+              e = L4::Cap<L4::Task>(L4Re::This_task)
+                         ->unmap(c.fpage(), L4_FP_ALL_SPACES);
+
+              c = L4::Cap<L4::Thread>(request.req_thread->p_th_cap);
+              e = L4::Cap<L4::Task>(L4Re::This_task)
+                         ->unmap(c.fpage(), L4_FP_ALL_SPACES);
+            }
+          break;
 	}
       tag = l4_msgtag(0, 0, 0, L4_MSGTAG_SCHEDULE);
     }
@@ -227,6 +250,10 @@ __attribute__ ((noreturn))
 pthread_start_thread(void *arg)
 {
   pthread_descr self = (pthread_descr) arg;
+#ifdef USE_TLS
+  TLS_INIT_TP(self, 0);
+#endif
+
 #ifdef NOT_FOR_L4
   struct pthread_request request;
 #endif
@@ -306,6 +333,30 @@ pthread_start_thread_event(void *arg)
 }
 #endif
 
+#ifdef USE_L4RE_FOR_STACK
+static int pthread_l4_free_stack(void *stack_addr, void *guardaddr)
+{
+  L4Re::Env const *e = L4Re::Env::env();
+  int err;
+  L4::Cap<L4Re::Dataspace> ds;
+
+  err = e->rm()->detach(stack_addr, &ds);
+  if (err < 0)
+    return err;
+
+  if (ds.is_valid())
+    {
+      err = ds->release();
+      if (err < 0)
+        return err;
+    }
+
+  L4Re::Util::cap_alloc.free(ds);
+
+  return e->rm()->free_area((l4_addr_t)guardaddr);
+}
+#endif
+
 static int pthread_allocate_stack(const pthread_attr_t *attr,
                                   pthread_descr default_new_thread,
                                   int pagesize,
@@ -388,7 +439,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
 	  stacksize = __pthread_max_stacksize - guardsize;
 	}
 
-#if 1
+#ifdef USE_L4RE_FOR_STACK
       map_addr = 0;
       L4Re::Env const *e = L4Re::Env::env();
       long err;
@@ -423,7 +474,6 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
 	  return -1;
 	}
 #else
-
       map_addr = mmap(NULL, stacksize + guardsize,
                       PROT_READ | PROT_WRITE | PROT_EXEC,
                       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
@@ -460,33 +510,34 @@ int __pthread_mgr_create_thread(pthread_descr thread, char **tos,
   Env const *e = Env::env();
   L4Re::Util::Auto_cap<L4::Thread>::Cap _t = L4Re::Util::cap_alloc.alloc<L4::Thread>();
   if (!_t.is_valid())
-    return -L4_ENOMEM;
+    return ENOMEM;
 
   L4Re::Util::Auto_cap<Th_sem_cap>::Cap th_sem
     =  L4Re::Util::cap_alloc.alloc<Th_sem_cap>();
   if (!th_sem.is_valid())
-    return -L4_ENOMEM;
+    return ENOMEM;
 
   int err = l4_error(e->factory()->create_thread(_t.get()));
   if (err < 0)
-    return err;
+    return -err;
 
   // needed by __alloc_thread_sem
   thread->p_th_cap = _t.cap();
 
   err = __alloc_thread_sem(thread, th_sem.get());
   if (err < 0)
-    return err;
+    return -err;
 
   thread->p_thsem_cap = th_sem.cap();
 
   L4::Thread::Attr attr;
-
   l4_utcb_t *nt_utcb = (l4_utcb_t*)thread->p_tid;
+
   attr.bind(nt_utcb, L4Re::This_task);
   attr.pager(e->rm());
   attr.exc_handler(e->rm());
-  _t->control(attr);
+  if ((err = l4_error(_t->control(attr))) < 0)
+    fprintf(stderr, "ERROR: l4 thread control returned: %d\n", err);
 
   l4_utcb_tcr_u(nt_utcb)->user[0] = l4_addr_t(thread);
 
@@ -584,7 +635,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
   int saved_errno = 0;
 
 #ifdef USE_TLS
-  new_thread = _dl_allocate_tls (NULL);
+  new_thread = (_pthread_descr_struct*)_dl_allocate_tls (NULL);
   if (new_thread == NULL)
     return EAGAIN;
 # if defined(TLS_DTV_AT_TP)
@@ -605,7 +656,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
 #endif
   /* Find a free segment for the thread, and allocate a stack if needed */
 
-  if (__pthread_first_free_handle == 0)
+  if (__pthread_first_free_handle == 0 && l4pthr_get_more_utcb())
     {
 #ifdef USE_TLS
 # if defined(TLS_DTV_AT_TP)
@@ -614,8 +665,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
 	  _dl_deallocate_tls (new_thread, true);
 #endif
 
-      if (l4pthr_get_more_utcb())
-        return EAGAIN;
+      return EAGAIN;
     }
 
   l4_utcb_t *new_utcb = mgr_alloc_utcb();
@@ -731,13 +781,17 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
 	munmap(new_thread, stacksize + guardsize);
 # endif
 #else
+#ifdef USE_L4RE_FOR_STACK
+        if (pthread_l4_free_stack(new_thread_bottom, guardaddr))
+          fprintf(stderr, "ERROR: failed to free stack\n");
+#else
 # ifdef USE_TLS
 	size_t stacksize = stack_addr - new_thread_bottom;
 # else
-	//l4/size_t stacksize = (char *)(new_thread+1) - new_thread_bottom;
+	size_t stacksize = (char *)(new_thread+1) - new_thread_bottom;
 # endif
-	UNIMPL("Handle failed thread create correctly!");
-//	munmap(new_thread_bottom - guardsize, guardsize + stacksize);
+	munmap(new_thread_bottom - guardsize, guardsize + stacksize);
+#endif
 #endif
       }
 #ifdef USE_TLS
@@ -816,7 +870,7 @@ static void pthread_free(pthread_descr th)
       /* Guardaddr is always set, even if guardsize is 0.  This allows
 	 us to compute everything else.  */
 # ifdef USE_TLS
-      size_t stacksize = th->p_stackaddr - guardaddr - guardsize;
+      //l4/size_t stacksize = th->p_stackaddr - guardaddr - guardsize;
 # else
       //l4/size_t stacksize = (char *)(th+1) - guardaddr - guardsize;
 # endif
@@ -826,13 +880,11 @@ static void pthread_free(pthread_descr th)
       stacksize *= 2;
 # endif
 #endif
-      /* Unmap the stack.  */
-      L4::Cap<L4Re::Dataspace> ds;
-      L4Re::Env::env()->rm()->detach(guardaddr + guardsize, &ds);
-      L4Re::Env::env()->rm()->free_area(l4_addr_t(guardaddr));
-      if (ds.is_valid())
-	ds->release();
-//      munmap(guardaddr, stacksize + guardsize);
+#ifdef USE_L4RE_FOR_STACK
+      pthread_l4_free_stack(guardaddr + guardsize, guardaddr);
+#else
+      munmap(guardaddr, stacksize + guardsize);
+#endif
 
     }
 
diff --git a/l4/pkg/uclibc/lib/libpthread/src/pthread.c b/l4/pkg/uclibc/lib/libpthread/src/pthread.c
index f0b9b6e93..9395d52d2 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/pthread.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/pthread.c
@@ -34,6 +34,8 @@
 #include "restart.h"
 #include "smp.h"
 #include <not-cancel.h>
+#include <link.h>
+#include <ldsodefs.h>
 
 /* Sanity check.  */
 #if !defined __SIGRTMIN || (__SIGRTMAX - __SIGRTMIN) < 3
@@ -162,8 +164,8 @@ int (*__pthread_timedsuspend)(pthread_descr, const struct timespec *) = __pthrea
 
 /* Communicate relevant LinuxThreads constants to gdb */
 
-const int __pthread_threads_max = PTHREAD_THREADS_MAX;
 #ifdef NOT_FOR_L4
+const int __pthread_threads_max = PTHREAD_THREADS_MAX;
 const int __pthread_sizeof_handle = sizeof(struct pthread_handle_struct);
 const int __pthread_offsetof_descr = offsetof(struct pthread_handle_struct,
                                               h_descr);
@@ -424,8 +426,10 @@ cannot allocate TLS data structures for initial thread\n";
      structure by hand.  This initialization must mirror the struct
      definition above.  */
   self->p_nextlive = self->p_prevlive = self;
+#if defined NOT_FOR_L4
   self->p_tid = PTHREAD_THREADS_MAX;
   self->p_lock = &__pthread_handles[0].h_lock;
+#endif
 # ifndef HAVE___THREAD
   self->p_errnop = &_errno;
   self->p_h_errnop = &_h_errno;
@@ -441,7 +445,9 @@ cannot allocate TLS data structures for initial thread\n";
   __pthread_main_thread = self;
 
   /* And fill in the pointer the the thread __pthread_handles array.  */
+#ifdef NOT_FOR_L4
   __pthread_handles[0].h_descr = self;
+#endif
 
 #else  /* USE_TLS */
 
@@ -470,7 +476,11 @@ cannot allocate TLS data structures for initial thread\n";
 # endif
 #endif
 #ifndef NOT_FOR_L4
+# ifdef USE_TLS
+  if (__pthread_l4_initialize_main_thread(self))
+# else
   if (__pthread_l4_initialize_main_thread(&__pthread_initial_thread))
+# endif
     exit(1);
 #endif
   __libc_multiple_threads_ptr = __libc_pthread_init (ptr_pthread_functions);
@@ -560,23 +570,21 @@ init_one_static_tls (pthread_descr descr, struct link_map *map)
   dtv[map->l_tls_modid].pointer.is_static = true;
 
   /* Initialize the memory.  */
-  memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
+  memset (mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
 	  '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
 }
 
 static void
 __pthread_init_static_tls (struct link_map *map)
 {
-  size_t i;
+  pthread_descr th;
 
-  for (i = 0; i < PTHREAD_THREADS_MAX; ++i)
-    if (__pthread_handles[i].h_descr != NULL && i != 1)
-      {
-        __pthread_lock (&__pthread_handles[i].h_lock, NULL);
-	if (__pthread_handles[i].h_descr != NULL)
-	  init_one_static_tls (__pthread_handles[i].h_descr, map);
-        __pthread_unlock (&__pthread_handles[i].h_lock);
-      }
+  for (th = __pthread_main_thread->p_nextlive;
+       th != __pthread_main_thread;
+       th = th->p_nextlive)
+    {
+      init_one_static_tls(th, map);
+    }
 }
 #endif
 
@@ -595,8 +603,10 @@ static void pthread_initialize(void)
      value to signal that initialization happened.  */
   __pthread_initial_thread_bos = (void *) -1l;
 #ifdef USE_TLS
+#ifdef NOT_FOR_L4
   /* Update the descriptor for the initial thread. */
   THREAD_SETMEM (((pthread_descr) NULL), p_pid, __getpid());
+#endif
 # if !defined HAVE___THREAD && (defined __UCLIBC_HAS_IPv4__ || defined __UCLIBC_HAS_IPV6__)
   /* Likewise for the resolver state _res.  */
   THREAD_SETMEM (((pthread_descr) NULL), p_resp, __resp);
@@ -623,14 +633,6 @@ static void pthread_initialize(void)
   *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
   GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
 
-  /* Make __rtld_lock_{,un}lock_recursive use pthread_mutex_{,un}lock,
-     keep the lock count from the ld.so implementation.  */
-  GL(dl_rtld_lock_recursive) = (void *) __pthread_mutex_lock;
-  GL(dl_rtld_unlock_recursive) = (void *) __pthread_mutex_unlock;
-  unsigned int rtld_lock_count = GL(dl_load_lock).mutex.__m_count;
-  GL(dl_load_lock).mutex.__m_count = 0;
-  while (rtld_lock_count-- > 0)
-    __pthread_mutex_lock (&GL(dl_load_lock).mutex);
 #endif
 
 #ifdef USE_TLS
@@ -686,7 +688,8 @@ int __pthread_initialize_manager(void)
   if (__pthread_initial_thread_bos == NULL) pthread_initialize();
   /* Setup stack for thread manager */
   __pthread_manager_thread_bos = malloc(THREAD_MANAGER_STACK_SIZE);
-  if (__pthread_manager_thread_bos == NULL) return -1;
+  if (__pthread_manager_thread_bos == NULL)
+    return -1;
   __pthread_manager_thread_tos =
     __pthread_manager_thread_bos + THREAD_MANAGER_STACK_SIZE;
 #ifdef NOT_FOR_L4
@@ -702,8 +705,10 @@ int __pthread_initialize_manager(void)
   tcbp = _dl_allocate_tls (NULL);
   if (tcbp == NULL) {
     free(__pthread_manager_thread_bos);
+#ifdef NOT_FOR_L4
     close_not_cancel(manager_pipe[0]);
     close_not_cancel(manager_pipe[1]);
+#endif
     return -1;
   }
 
@@ -714,7 +719,9 @@ int __pthread_initialize_manager(void)
      returns.  */
   mgr = (pthread_descr) ((char *) tcbp - TLS_PRE_TCB_SIZE);
 # endif
+#ifdef NOT_FOR_L4
   __pthread_handles[1].h_descr = manager_thread = mgr;
+#endif
 
   /* Initialize the descriptor.  */
 #if !defined USE_TLS || !TLS_DTV_AT_TP
@@ -724,7 +731,9 @@ int __pthread_initialize_manager(void)
 #elif TLS_MULTIPLE_THREADS_IN_TCB
   mgr->p_multiple_threads = 1;
 #endif
+#ifdef NOT_FOR_L4
   mgr->p_lock = &__pthread_handles[1].h_lock;
+#endif
 # ifndef HAVE___THREAD
   mgr->p_errnop = &mgr->p_errno;
 # endif
@@ -876,7 +885,8 @@ int __pthread_create(pthread_t *thread, const pthread_attr_t *attr,
   struct pthread_request request;
   int retval;
   if (__builtin_expect (l4_is_invalid_cap(__pthread_manager_request), 0)) {
-    if (__pthread_initialize_manager() < 0) return EAGAIN;
+    if (__pthread_initialize_manager() < 0)
+      return EAGAIN;
   }
   request.req_thread = self;
   request.req_kind = REQ_CREATE;
diff --git a/l4/pkg/uclibc/lib/libpthread/src/semaphore.c b/l4/pkg/uclibc/lib/libpthread/src/semaphore.c
index 2850da342..b2c075c96 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/semaphore.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/semaphore.c
@@ -27,11 +27,11 @@
 int sem_init(sem_t *sem, int pshared, unsigned int value)
 {
   if (value > SEM_VALUE_MAX) {
-    errno = EINVAL;
+    __set_errno(EINVAL);
     return -1;
   }
   if (pshared) {
-    errno = ENOSYS;
+    __set_errno(ENOSYS);
     return -1;
   }
   __pthread_init_lock(&sem->__sem_lock);
@@ -124,7 +124,7 @@ int sem_trywait(sem_t * sem)
 
   __pthread_lock(&sem->__sem_lock, NULL);
   if (sem->__sem_value == 0) {
-    errno = EAGAIN;
+    __set_errno(EAGAIN);
     retval = -1;
   } else {
     sem->__sem_value--;
@@ -147,7 +147,7 @@ int sem_post(sem_t * sem)
     if (sem->__sem_waiting == NULL) {
       if (sem->__sem_value >= SEM_VALUE_MAX) {
         /* Overflow */
-        errno = ERANGE;
+        __set_errno(ERANGE);
         __pthread_unlock(&sem->__sem_lock);
         return -1;
       }
@@ -167,7 +167,7 @@ int sem_post(sem_t * sem)
        the thread manager. */
     if (__pthread_manager_request < 0) {
       if (__pthread_initialize_manager() < 0) {
-        errno = EAGAIN;
+        __set_errno(EAGAIN);
         return -1;
       }
     }
diff --git a/l4/pkg/uclibc/lib/libpthread/src/specific.c b/l4/pkg/uclibc/lib/libpthread/src/specific.c
index ab48e8b24..6fa1d4a85 100644
--- a/l4/pkg/uclibc/lib/libpthread/src/specific.c
+++ b/l4/pkg/uclibc/lib/libpthread/src/specific.c
@@ -151,13 +151,13 @@ int __pthread_setspecific(pthread_key_t key, const void * pointer)
     return EINVAL;
   idx1st = key / PTHREAD_KEY_2NDLEVEL_SIZE;
   idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE;
-  if (THREAD_GETMEM_NC(self, p_specific[idx1st]) == NULL) {
+  if (THREAD_GETMEM_NC(self, p_specific, idx1st) == NULL) {
     void *newp = calloc(PTHREAD_KEY_2NDLEVEL_SIZE, sizeof (void *));
     if (newp == NULL)
       return ENOMEM;
-    THREAD_SETMEM_NC(self, p_specific[idx1st], newp);
+    THREAD_SETMEM_NC(self, p_specific ,idx1st, newp);
   }
-  THREAD_GETMEM_NC(self, p_specific[idx1st])[idx2nd] = (void *) pointer;
+  THREAD_GETMEM_NC(self, p_specific, idx1st)[idx2nd] = (void *) pointer;
   return 0;
 }
 strong_alias (__pthread_setspecific, pthread_setspecific)
@@ -173,10 +173,10 @@ void * __pthread_getspecific(pthread_key_t key)
     return NULL;
   idx1st = key / PTHREAD_KEY_2NDLEVEL_SIZE;
   idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE;
-  if (THREAD_GETMEM_NC(self, p_specific[idx1st]) == NULL
+  if (THREAD_GETMEM_NC(self, p_specific, idx1st) == NULL
       || !pthread_keys[key].in_use)
     return NULL;
-  return THREAD_GETMEM_NC(self, p_specific[idx1st])[idx2nd];
+  return THREAD_GETMEM_NC(self, p_specific, idx1st)[idx2nd];
 }
 strong_alias (__pthread_getspecific, pthread_getspecific)
 
@@ -194,12 +194,12 @@ void __pthread_destroy_specifics()
        round++) {
     found_nonzero = 0;
     for (i = 0; i < PTHREAD_KEY_1STLEVEL_SIZE; i++)
-      if (THREAD_GETMEM_NC(self, p_specific[i]) != NULL)
+      if (THREAD_GETMEM_NC(self, p_specific, i) != NULL)
         for (j = 0; j < PTHREAD_KEY_2NDLEVEL_SIZE; j++) {
           destr = pthread_keys[i * PTHREAD_KEY_2NDLEVEL_SIZE + j].destr;
-          data = THREAD_GETMEM_NC(self, p_specific[i])[j];
+          data = THREAD_GETMEM_NC(self, p_specific, i)[j];
           if (destr != NULL && data != NULL) {
-            THREAD_GETMEM_NC(self, p_specific[i])[j] = NULL;
+            THREAD_GETMEM_NC(self, p_specific, i)[j] = NULL;
             destr(data);
             found_nonzero = 1;
           }
@@ -207,9 +207,9 @@ void __pthread_destroy_specifics()
   }
   __pthread_lock(THREAD_GETMEM(self, p_lock), self);
   for (i = 0; i < PTHREAD_KEY_1STLEVEL_SIZE; i++) {
-    if (THREAD_GETMEM_NC(self, p_specific[i]) != NULL) {
-      void *p = THREAD_GETMEM_NC(self, p_specific[i]);
-      THREAD_SETMEM_NC(self, p_specific[i], NULL);
+    if (THREAD_GETMEM_NC(self, p_specific, i) != NULL) {
+      void *p = THREAD_GETMEM_NC(self, p_specific, i);
+      THREAD_SETMEM_NC(self, p_specific, i, NULL);
       free(p);
     }
   }
@@ -225,7 +225,7 @@ __pthread_internal_tsd_set (int key, const void * pointer)
 {
   pthread_descr self = thread_self();
 
-  THREAD_SETMEM_NC(self, p_libc_specific[key], (void *) pointer);
+  THREAD_SETMEM_NC(self, p_libc_specific, key, (void *) pointer);
   return 0;
 }
 
@@ -234,7 +234,7 @@ __pthread_internal_tsd_get (int key)
 {
   pthread_descr self = thread_self();
 
-  return THREAD_GETMEM_NC(self, p_libc_specific[key]);
+  return THREAD_GETMEM_NC(self, p_libc_specific, key);
 }
 
 void ** __attribute__ ((__const__))
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/dl-tls.h
new file mode 100644
index 000000000..f81f95d75
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/dl-tls.h
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  Alpha version.
+   Copyright (C) 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/tls.h
new file mode 100644
index 000000000..99cd27a03
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/alpha/tls.h
@@ -0,0 +1,127 @@
+/* Definition for thread-local data handling.  NPTL/Alpha version.
+   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+
+/* We require TLS support in the tools.  */
+#ifndef HAVE_TLS_SUPPORT
+# error "TLS support is required."
+#endif
+
+/* Signal that TLS support is available.  */
+# define USE_TLS	1
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* The TP points to the start of the thread blocks.  */
+# define TLS_DTV_AT_TP	1
+
+/* Get the thread descriptor definition.  */
+# include <nptl/descr.h>
+
+typedef struct
+{
+  dtv_t *dtv;
+  void *private;
+} tcbhead_t;
+
+/* This is the size of the initial TCB.  */
+# define TLS_INIT_TCB_SIZE	sizeof (tcbhead_t)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN	16
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE		sizeof (tcbhead_t)
+
+/* This is the size we need before TCB.  */
+# define TLS_PRE_TCB_SIZE	sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN		16
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) \
+  (THREAD_DTV() = (dtv))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp) \
+  (((tcbhead_t *) (tcbp))->dtv)
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(tcbp, secondcall) \
+  (__builtin_set_thread_pointer ((void *)(tcbp)), NULL)
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
+
+/* Return the thread descriptor for the current thread.  */
+# define THREAD_SELF \
+ ((struct pthread *)__builtin_thread_pointer () - 1)
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  REGISTER (64, 64, 32 * 8, -sizeof (struct pthread))
+
+/* Access to data in the thread descriptor is easy.  */
+#define THREAD_GETMEM(descr, member) \
+  descr->member
+#define THREAD_GETMEM_NC(descr, member, idx) \
+  descr->member[idx]
+#define THREAD_SETMEM(descr, member, value) \
+  descr->member = (value)
+#define THREAD_SETMEM_NC(descr, member, idx, value) \
+  descr->member[idx] = (value)
+
+#endif /* __ASSEMBLER__ */
+
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/dl-tls.h
new file mode 100644
index 000000000..e0324a7b6
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/dl-tls.h
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  ARM version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/tls.h
new file mode 100644
index 000000000..c55a4e117
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/arm/tls.h
@@ -0,0 +1,159 @@
+/* Definition for thread-local data handling.  NPTL/ARM version.
+   Copyright (C) 2005,2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+#if defined USE_TLS && USE_TLS //l4
+#ifndef __ASSEMBLER__
+
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT                1
+#define HAVE_TLS_MODEL_ATTRIBUTE        1
+#define HAVE___THREAD                   1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS	1
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* The TP points to the start of the thread blocks.  */
+# define TLS_DTV_AT_TP	1
+
+/* Get the thread descriptor definition.  */
+# include <../../descr.h>
+
+typedef struct
+{
+  dtv_t *dtv;
+  void *private;
+} tcbhead_t;
+
+/* This is the size of the initial TCB.  */
+# define TLS_INIT_TCB_SIZE	sizeof (tcbhead_t)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN	16
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE		sizeof (tcbhead_t)
+
+/* This is the size we need before TCB.  */
+# define TLS_PRE_TCB_SIZE	sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN		16
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) \
+  (THREAD_DTV() = (dtv))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp) \
+  (((tcbhead_t *) (tcbp))->dtv)
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(tcbp, secondcall) \
+  ({ INTERNAL_SYSCALL_DECL (err);					\
+     long result_var;							\
+     result_var = INTERNAL_SYSCALL_ARM (set_tls, err, 1, (tcbp));	\
+     INTERNAL_SYSCALL_ERROR_P (result_var, err)				\
+       ? "unknown error" : NULL; })
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
+
+/* Return the thread descriptor for the current thread.  */
+# define THREAD_SELF \
+ ((struct pthread *)__builtin_thread_pointer () - 1)
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  CONST_THREAD_AREA (32, sizeof (struct pthread))
+
+/* Access to data in the thread descriptor is easy.  */
+#define THREAD_GETMEM(descr, member) \
+  descr->member
+#define THREAD_GETMEM_NC(descr, member, idx) \
+  descr->member[idx]
+#define THREAD_SETMEM(descr, member, value) \
+  descr->member = (value)
+#define THREAD_SETMEM_NC(descr, member, idx, value) \
+  descr->member[idx] = (value)
+
+/* Initializing the thread pointer will generate a SIGILL if the syscall
+   is not available.  */
+#define TLS_INIT_TP_EXPENSIVE 1
+
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+#endif
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.c b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.c
new file mode 100644
index 000000000..4acfa4ba7
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.c
@@ -0,0 +1,899 @@
+/* Thread-local storage handling in the ELF dynamic linker.  Generic version.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#if defined SHARED || defined NOT_IN_libc
+# error in buildsystem: This file is for libc.a
+#endif
+#include <libintl.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#include <tls.h>
+#include <dl-tls.h>
+#include <ldsodefs.h>
+#include <dl-elf.h>
+#include <dl-hash.h>
+
+#include <assert.h>
+#include <link.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#define	_dl_malloc	malloc
+#define _dl_memset	memset
+#define _dl_mempcpy	mempcpy
+#define _dl_dprintf	fprintf
+#define _dl_debug_file	stderr
+#define _dl_exit	exit
+
+/* Amount of excess space to allocate in the static TLS area
+   to allow dynamic loading of modules defining IE-model TLS data.  */
+# define TLS_STATIC_SURPLUS	64 + DL_NNS * 100
+
+/* Value used for dtv entries for which the allocation is delayed.  */
+# define TLS_DTV_UNALLOCATED	((void *) -1l)
+
+
+/* Out-of-memory handler.  */
+# ifdef SHARED
+static void
+__attribute__ ((__noreturn__))
+oom (void)
+{
+	do {
+		_dl_dprintf (_dl_debug_file,
+			"cannot allocate thread-local memory: ABORT\n");
+		_dl_exit (127);
+	} while (1);
+}
+# endif
+
+
+void *_dl_memalign(size_t alignment, size_t bytes)
+{
+	return _dl_malloc(bytes);
+}
+
+
+/*
+ * We are trying to perform a static TLS relocation in MAP, but it was
+ * dynamically loaded.  This can only work if there is enough surplus in
+ * the static TLS area already allocated for each running thread.  If this
+ * object's TLS segment is too big to fit, we fail.  If it fits,
+ * we set MAP->l_tls_offset and return.
+ * This function intentionally does not return any value but signals error
+ * directly, as static TLS should be rare and code handling it should
+ * not be inlined as much as possible.
+ */
+
+
+void
+internal_function __attribute_noinline__
+_dl_allocate_static_tls (struct link_map *map)
+{
+	/* If the alignment requirements are too high fail.  */
+	if (map->l_tls_align > _dl_tls_static_align)
+	{
+fail:
+		_dl_dprintf(_dl_debug_file, "cannot allocate memory in static TLS block");
+		_dl_exit(30);
+	}
+
+# if defined(TLS_TCB_AT_TP)
+	size_t freebytes;
+	size_t n;
+	size_t blsize;
+
+	freebytes = _dl_tls_static_size - _dl_tls_static_used - TLS_TCB_SIZE;
+
+	blsize = map->l_tls_blocksize + map->l_tls_firstbyte_offset;
+	if (freebytes < blsize)
+		goto fail;
+
+	n = (freebytes - blsize) / map->l_tls_align;
+
+	size_t offset = _dl_tls_static_used + (freebytes - n * map->l_tls_align
+		- map->l_tls_firstbyte_offset);
+
+	map->l_tls_offset = _dl_tls_static_used = offset;
+# elif defined(TLS_DTV_AT_TP)
+	size_t used;
+	size_t check;
+
+	size_t offset = roundup (_dl_tls_static_used, map->l_tls_align);
+	used = offset + map->l_tls_blocksize;
+	check = used;
+
+	/* dl_tls_static_used includes the TCB at the beginning. */
+	if (check > _dl_tls_static_size)
+		goto fail;
+
+	map->l_tls_offset = offset;
+	_dl_tls_static_used = used;
+# else
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+
+	/*
+	 * If the object is not yet relocated we cannot initialize the
+	 * static TLS region.  Delay it.
+	 */
+	if (((struct elf_resolve *) map)->init_flag & RELOCS_DONE)
+    {
+#ifdef SHARED
+		/*
+		 * Update the slot information data for at least the generation of
+		 * the DSO we are allocating data for.
+		 */
+		if (__builtin_expect (THREAD_DTV()[0].counter != _dl_tls_generation, 0))
+			(void) _dl_update_slotinfo (map->l_tls_modid);
+#endif
+		_dl_init_static_tls (map);
+	}
+	else
+		map->l_need_tls_init = 1;
+}
+
+size_t
+internal_function
+_dl_next_tls_modid (void)
+{
+  size_t result;
+
+  if (__builtin_expect (GL(dl_tls_dtv_gaps), false))
+    {
+      size_t disp = 0;
+      struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list);
+
+      /* Note that this branch will never be executed during program
+	 start since there are no gaps at that time.  Therefore it
+	 does not matter that the dl_tls_dtv_slotinfo is not allocated
+	 yet when the function is called for the first times.
+
+	 NB: the offset +1 is due to the fact that DTV[0] is used
+	 for something else.  */
+      result = GL(dl_tls_static_nelem) + 1;
+      if (result <= GL(dl_tls_max_dtv_idx))
+	do
+	  {
+	    while (result - disp < runp->len)
+	      {
+		if (runp->slotinfo[result - disp].map == NULL)
+		  break;
+
+		++result;
+		assert (result <= GL(dl_tls_max_dtv_idx) + 1);
+	      }
+
+	    if (result - disp < runp->len)
+	      break;
+
+	    disp += runp->len;
+	  }
+	while ((runp = runp->next) != NULL);
+
+      if (result > GL(dl_tls_max_dtv_idx))
+	{
+	  /* The new index must indeed be exactly one higher than the
+	     previous high.  */
+	  assert (result == GL(dl_tls_max_dtv_idx) + 1);
+	  /* There is no gap anymore.  */
+	  GL(dl_tls_dtv_gaps) = false;
+
+	  goto nogaps;
+	}
+    }
+  else
+    {
+      /* No gaps, allocate a new entry.  */
+    nogaps:
+
+      result = ++GL(dl_tls_max_dtv_idx);
+    }
+
+  return result;
+}
+
+
+# ifdef SHARED
+void
+internal_function
+_dl_determine_tlsoffset (void)
+{
+  size_t max_align = TLS_TCB_ALIGN;
+  size_t freetop = 0;
+  size_t freebottom = 0;
+
+  /* The first element of the dtv slot info list is allocated.  */
+  assert (GL(dl_tls_dtv_slotinfo_list) != NULL);
+  /* There is at this point only one element in the
+     dl_tls_dtv_slotinfo_list list.  */
+  assert (GL(dl_tls_dtv_slotinfo_list)->next == NULL);
+
+  struct dtv_slotinfo *slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
+
+  /* Determining the offset of the various parts of the static TLS
+     block has several dependencies.  In addition we have to work
+     around bugs in some toolchains.
+
+     Each TLS block from the objects available at link time has a size
+     and an alignment requirement.  The GNU ld computes the alignment
+     requirements for the data at the positions *in the file*, though.
+     I.e, it is not simply possible to allocate a block with the size
+     of the TLS program header entry.  The data is layed out assuming
+     that the first byte of the TLS block fulfills
+
+       p_vaddr mod p_align == &TLS_BLOCK mod p_align
+
+     This means we have to add artificial padding at the beginning of
+     the TLS block.  These bytes are never used for the TLS data in
+     this module but the first byte allocated must be aligned
+     according to mod p_align == 0 so that the first byte of the TLS
+     block is aligned according to p_vaddr mod p_align.  This is ugly
+     and the linker can help by computing the offsets in the TLS block
+     assuming the first byte of the TLS block is aligned according to
+     p_align.
+
+     The extra space which might be allocated before the first byte of
+     the TLS block need not go unused.  The code below tries to use
+     that memory for the next TLS block.  This can work if the total
+     memory requirement for the next TLS block is smaller than the
+     gap.  */
+
+# if defined(TLS_TCB_AT_TP)
+  /* We simply start with zero.  */
+  size_t offset = 0;
+
+  size_t cnt;
+  for (cnt = 0; slotinfo[cnt].map != NULL; ++cnt)
+    {
+      assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
+
+      size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
+			  & (slotinfo[cnt].map->l_tls_align - 1));
+      size_t off;
+      max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
+
+      if (freebottom - freetop >= slotinfo[cnt].map->l_tls_blocksize)
+	{
+	  off = roundup (freetop + slotinfo[cnt].map->l_tls_blocksize
+			 - firstbyte, slotinfo[cnt].map->l_tls_align)
+		+ firstbyte;
+	  if (off <= freebottom)
+	    {
+	      freetop = off;
+
+	      /* XXX For some architectures we perhaps should store the
+		 negative offset.  */
+	      slotinfo[cnt].map->l_tls_offset = off;
+	      continue;
+	    }
+	}
+
+      off = roundup (offset + slotinfo[cnt].map->l_tls_blocksize - firstbyte,
+		     slotinfo[cnt].map->l_tls_align) + firstbyte;
+      if (off > offset + slotinfo[cnt].map->l_tls_blocksize
+		+ (freebottom - freetop))
+	{
+	  freetop = offset;
+	  freebottom = off - slotinfo[cnt].map->l_tls_blocksize;
+	}
+      offset = off;
+
+      /* XXX For some architectures we perhaps should store the
+	 negative offset.  */
+      slotinfo[cnt].map->l_tls_offset = off;
+    }
+
+  GL(dl_tls_static_used) = offset;
+  GL(dl_tls_static_size) = (roundup (offset + TLS_STATIC_SURPLUS, max_align)
+			    + TLS_TCB_SIZE);
+# elif defined(TLS_DTV_AT_TP)
+  /* The TLS blocks start right after the TCB.  */
+  size_t offset = TLS_TCB_SIZE;
+  size_t cnt;
+
+  for (cnt = 0; slotinfo[cnt].map != NULL; ++cnt)
+    {
+      assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
+
+      size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
+			  & (slotinfo[cnt].map->l_tls_align - 1));
+      size_t off;
+      max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
+
+      if (slotinfo[cnt].map->l_tls_blocksize <= freetop - freebottom)
+	{
+	  off = roundup (freebottom, slotinfo[cnt].map->l_tls_align);
+	  if (off - freebottom < firstbyte)
+	    off += slotinfo[cnt].map->l_tls_align;
+	  if (off + slotinfo[cnt].map->l_tls_blocksize - firstbyte <= freetop)
+	    {
+	      slotinfo[cnt].map->l_tls_offset = off - firstbyte;
+	      freebottom = (off + slotinfo[cnt].map->l_tls_blocksize
+			    - firstbyte);
+	      continue;
+	    }
+	}
+
+      off = roundup (offset, slotinfo[cnt].map->l_tls_align);
+      if (off - offset < firstbyte)
+	off += slotinfo[cnt].map->l_tls_align;
+
+      slotinfo[cnt].map->l_tls_offset = off - firstbyte;
+      if (off - firstbyte - offset > freetop - freebottom)
+	{
+	  freebottom = offset;
+	  freetop = off - firstbyte;
+	}
+
+      offset = off + slotinfo[cnt].map->l_tls_blocksize - firstbyte;
+    }
+
+  GL(dl_tls_static_used) = offset;
+  GL(dl_tls_static_size) = roundup (offset + TLS_STATIC_SURPLUS,
+				    TLS_TCB_ALIGN);
+# else
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+
+  /* The alignment requirement for the static TLS block.  */
+  GL(dl_tls_static_align) = max_align;
+}
+
+
+/* This is called only when the data structure setup was skipped at startup,
+   when there was no need for it then.  Now we have dynamically loaded
+   something needing TLS, or libpthread needs it.  */
+int
+internal_function
+_dl_tls_setup (void)
+{
+  assert (GL(dl_tls_dtv_slotinfo_list) == NULL);
+  assert (GL(dl_tls_max_dtv_idx) == 0);
+
+  const size_t nelem = 2 + TLS_SLOTINFO_SURPLUS;
+
+  GL(dl_tls_dtv_slotinfo_list)
+    = calloc (1, (sizeof (struct dtv_slotinfo_list)
+		  + nelem * sizeof (struct dtv_slotinfo)));
+  if (GL(dl_tls_dtv_slotinfo_list) == NULL)
+    return -1;
+
+  GL(dl_tls_dtv_slotinfo_list)->len = nelem;
+
+  /* Number of elements in the static TLS block.  It can't be zero
+     because of various assumptions.  The one element is null.  */
+  GL(dl_tls_static_nelem) = GL(dl_tls_max_dtv_idx) = 1;
+
+  /* This initializes more variables for us.  */
+  _dl_determine_tlsoffset ();
+
+  return 0;
+}
+# endif
+
+static void *
+internal_function
+allocate_dtv (void *result)
+{
+  dtv_t *dtv;
+  size_t dtv_length;
+
+  /* We allocate a few more elements in the dtv than are needed for the
+     initial set of modules.  This should avoid in most cases expansions
+     of the dtv.  */
+  dtv_length = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS;
+  dtv = calloc (dtv_length + 2, sizeof (dtv_t));
+  if (dtv != NULL)
+    {
+      /* This is the initial length of the dtv.  */
+      dtv[0].counter = dtv_length;
+
+      /* The rest of the dtv (including the generation counter) is
+	 Initialize with zero to indicate nothing there.  */
+
+      /* Add the dtv to the thread data structures.  */
+      INSTALL_DTV (result, dtv);
+    }
+  else
+    result = NULL;
+
+  return result;
+}
+
+
+/* Get size and alignment requirements of the static TLS block.  */
+void
+internal_function
+_dl_get_tls_static_info (size_t *sizep, size_t *alignp)
+{
+  *sizep = GL(dl_tls_static_size);
+  *alignp = GL(dl_tls_static_align);
+}
+
+
+void *
+internal_function
+_dl_allocate_tls_storage (void)
+{
+  void *result;
+  size_t size = GL(dl_tls_static_size);
+
+# if defined(TLS_DTV_AT_TP)
+  /* Memory layout is:
+     [ TLS_PRE_TCB_SIZE ] [ TLS_TCB_SIZE ] [ TLS blocks ]
+			  ^ This should be returned.  */
+  size += (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1)
+	  & ~(GL(dl_tls_static_align) - 1);
+# endif
+
+  /* Allocate a correctly aligned chunk of memory.  */
+  result = _dl_memalign (GL(dl_tls_static_align), size);
+  if (__builtin_expect (result != NULL, 1))
+    {
+      /* Allocate the DTV.  */
+      void *allocated = result;
+
+# if defined(TLS_TCB_AT_TP)
+      /* The TCB follows the TLS blocks.  */
+      result = (char *) result + size - TLS_TCB_SIZE;
+
+      /* Clear the TCB data structure.  We can't ask the caller (i.e.
+	 libpthread) to do it, because we will initialize the DTV et al.  */
+      _dl_memset (result, '\0', TLS_TCB_SIZE);
+# elif defined(TLS_DTV_AT_TP)
+      result = (char *) result + size - GL(dl_tls_static_size);
+
+      /* Clear the TCB data structure and TLS_PRE_TCB_SIZE bytes before it.
+	 We can't ask the caller (i.e. libpthread) to do it, because we will
+	 initialize the DTV et al.  */
+      _dl_memset ((char *) result - TLS_PRE_TCB_SIZE, '\0',
+	      TLS_PRE_TCB_SIZE + TLS_TCB_SIZE);
+# endif
+
+      result = allocate_dtv (result);
+      if (result == NULL)
+	free (allocated);
+    }
+
+  return result;
+}
+
+
+void *
+internal_function
+_dl_allocate_tls_init (void *result)
+{
+  if (result == NULL)
+    /* The memory allocation failed.  */
+    return NULL;
+
+  dtv_t *dtv = GET_DTV (result);
+  struct dtv_slotinfo_list *listp;
+  size_t total = 0;
+  size_t maxgen = 0;
+
+  /* We have to prepare the dtv for all currently loaded modules using
+     TLS.  For those which are dynamically loaded we add the values
+     indicating deferred allocation.  */
+  listp = GL(dl_tls_dtv_slotinfo_list);
+  while (1)
+    {
+      size_t cnt;
+
+      for (cnt = total == 0 ? 1 : 0; cnt < listp->len; ++cnt)
+	{
+	  struct link_map *map;
+	  void *dest;
+
+	  /* Check for the total number of used slots.  */
+	  if (total + cnt > GL(dl_tls_max_dtv_idx))
+	    break;
+
+	  map = listp->slotinfo[cnt].map;
+	  if (map == NULL)
+	    /* Unused entry.  */
+	    continue;
+
+	  /* Keep track of the maximum generation number.  This might
+	     not be the generation counter.  */
+	  maxgen = MAX (maxgen, listp->slotinfo[cnt].gen);
+
+	  if (map->l_tls_offset == NO_TLS_OFFSET)
+	    {
+	      /* For dynamically loaded modules we simply store
+		 the value indicating deferred allocation.  */
+	      dtv[map->l_tls_modid].pointer.val = TLS_DTV_UNALLOCATED;
+	      dtv[map->l_tls_modid].pointer.is_static = false;
+	      continue;
+	    }
+
+	  assert (map->l_tls_modid == cnt);
+	  assert (map->l_tls_blocksize >= map->l_tls_initimage_size);
+# if defined(TLS_TCB_AT_TP)
+	  assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize);
+	  dest = (char *) result - map->l_tls_offset;
+# elif defined(TLS_DTV_AT_TP)
+	  dest = (char *) result + map->l_tls_offset;
+# else
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+
+	  /* Copy the initialization image and clear the BSS part.  */
+	  dtv[map->l_tls_modid].pointer.val = dest;
+	  dtv[map->l_tls_modid].pointer.is_static = true;
+	  _dl_memset (_dl_mempcpy (dest, map->l_tls_initimage,
+			     map->l_tls_initimage_size), '\0',
+		  map->l_tls_blocksize - map->l_tls_initimage_size);
+	}
+
+      total += cnt;
+      if (total >= GL(dl_tls_max_dtv_idx))
+	break;
+
+      listp = listp->next;
+      assert (listp != NULL);
+    }
+
+  /* The DTV version is up-to-date now.  */
+  dtv[0].counter = maxgen;
+
+  return result;
+}
+
+void *
+internal_function
+_dl_allocate_tls (void *mem)
+{
+  return _dl_allocate_tls_init (mem == NULL
+				? _dl_allocate_tls_storage ()
+				: allocate_dtv (mem));
+}
+
+
+void
+internal_function
+_dl_deallocate_tls (void *tcb, bool dealloc_tcb)
+{
+  dtv_t *dtv = GET_DTV (tcb);
+  size_t cnt;
+
+  /* We need to free the memory allocated for non-static TLS.  */
+  for (cnt = 0; cnt < dtv[-1].counter; ++cnt)
+    if (! dtv[1 + cnt].pointer.is_static
+	&& dtv[1 + cnt].pointer.val != TLS_DTV_UNALLOCATED)
+      free (dtv[1 + cnt].pointer.val);
+
+  /* The array starts with dtv[-1].  */
+#ifdef SHARED
+  if (dtv != GL(dl_initial_dtv))
+#endif
+    free (dtv - 1);
+
+  if (dealloc_tcb)
+    {
+# if defined(TLS_TCB_AT_TP)
+      /* The TCB follows the TLS blocks.  Back up to free the whole block.  */
+      tcb -= GL(dl_tls_static_size) - TLS_TCB_SIZE;
+# elif defined(TLS_DTV_AT_TP)
+      /* Back up the TLS_PRE_TCB_SIZE bytes.  */
+      tcb -= (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1)
+	     & ~(GL(dl_tls_static_align) - 1);
+# endif
+      free (tcb);
+    }
+}
+
+
+# ifdef SHARED
+/* The __tls_get_addr function has two basic forms which differ in the
+   arguments.  The IA-64 form takes two parameters, the module ID and
+   offset.  The form used, among others, on IA-32 takes a reference to
+   a special structure which contain the same information.  The second
+   form seems to be more often used (in the moment) so we default to
+   it.  Users of the IA-64 form have to provide adequate definitions
+   of the following macros.  */
+#  ifndef GET_ADDR_ARGS
+#   define GET_ADDR_ARGS tls_index *ti
+#  endif
+#  ifndef GET_ADDR_MODULE
+#   define GET_ADDR_MODULE ti->ti_module
+#  endif
+#  ifndef GET_ADDR_OFFSET
+#   define GET_ADDR_OFFSET ti->ti_offset
+#  endif
+
+
+static void *
+allocate_and_init (struct link_map *map)
+{
+  void *newp;
+
+  newp = _dl_memalign (map->l_tls_align, map->l_tls_blocksize);
+  if (newp == NULL)
+    oom ();
+
+  /* Initialize the memory.  */
+  _dl_memset (_dl_mempcpy (newp, map->l_tls_initimage, map->l_tls_initimage_size),
+	  '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
+
+  return newp;
+}
+
+
+struct link_map *
+_dl_update_slotinfo (unsigned long int req_modid)
+{
+  struct link_map *the_map = NULL;
+  dtv_t *dtv = THREAD_DTV ();
+
+  /* The global dl_tls_dtv_slotinfo array contains for each module
+     index the generation counter current when the entry was created.
+     This array never shrinks so that all module indices which were
+     valid at some time can be used to access it.  Before the first
+     use of a new module index in this function the array was extended
+     appropriately.  Access also does not have to be guarded against
+     modifications of the array.  It is assumed that pointer-size
+     values can be read atomically even in SMP environments.  It is
+     possible that other threads at the same time dynamically load
+     code and therefore add to the slotinfo list.  This is a problem
+     since we must not pick up any information about incomplete work.
+     The solution to this is to ignore all dtv slots which were
+     created after the one we are currently interested.  We know that
+     dynamic loading for this module is completed and this is the last
+     load operation we know finished.  */
+  unsigned long int idx = req_modid;
+  struct dtv_slotinfo_list *listp = GL(dl_tls_dtv_slotinfo_list);
+
+  while (idx >= listp->len)
+    {
+      idx -= listp->len;
+      listp = listp->next;
+    }
+
+  if (dtv[0].counter < listp->slotinfo[idx].gen)
+    {
+      /* The generation counter for the slot is higher than what the
+	 current dtv implements.  We have to update the whole dtv but
+	 only those entries with a generation counter <= the one for
+	 the entry we need.  */
+      size_t new_gen = listp->slotinfo[idx].gen;
+      size_t total = 0;
+
+      /* We have to look through the entire dtv slotinfo list.  */
+      listp =  GL(dl_tls_dtv_slotinfo_list);
+      do
+	{
+	  size_t cnt;
+
+	  for (cnt = total == 0 ? 1 : 0; cnt < listp->len; ++cnt)
+	    {
+	      size_t gen = listp->slotinfo[cnt].gen;
+
+	      if (gen > new_gen)
+		/* This is a slot for a generation younger than the
+		   one we are handling now.  It might be incompletely
+		   set up so ignore it.  */
+		continue;
+
+	      /* If the entry is older than the current dtv layout we
+		 know we don't have to handle it.  */
+	      if (gen <= dtv[0].counter)
+		continue;
+
+	      /* If there is no map this means the entry is empty.  */
+	      struct link_map *map = listp->slotinfo[cnt].map;
+	      if (map == NULL)
+		{
+		  /* If this modid was used at some point the memory
+		     might still be allocated.  */
+		  if (! dtv[total + cnt].pointer.is_static
+		      && dtv[total + cnt].pointer.val != TLS_DTV_UNALLOCATED)
+		    {
+		      free (dtv[total + cnt].pointer.val);
+		      dtv[total + cnt].pointer.val = TLS_DTV_UNALLOCATED;
+		    }
+
+		  continue;
+		}
+
+	      /* Check whether the current dtv array is large enough.  */
+	      size_t modid = map->l_tls_modid;
+	      assert (total + cnt == modid);
+	      if (dtv[-1].counter < modid)
+		{
+		  /* Reallocate the dtv.  */
+		  dtv_t *newp;
+		  size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS;
+		  size_t oldsize = dtv[-1].counter;
+
+		  assert (map->l_tls_modid <= newsize);
+
+		  if (dtv == GL(dl_initial_dtv))
+		    {
+		      /* This is the initial dtv that was allocated
+			 during rtld startup using the dl-minimal.c
+			 malloc instead of the real malloc.  We can't
+			 free it, we have to abandon the old storage.  */
+
+		      newp = malloc ((2 + newsize) * sizeof (dtv_t));
+		      if (newp == NULL)
+			oom ();
+		      _dl_memcpy (newp, &dtv[-1], oldsize * sizeof (dtv_t));
+		    }
+		  else
+		    {
+		      newp = realloc (&dtv[-1],
+				      (2 + newsize) * sizeof (dtv_t));
+		      if (newp == NULL)
+			oom ();
+		    }
+
+		  newp[0].counter = newsize;
+
+		  /* Clear the newly allocated part.  */
+		  _dl_memset (newp + 2 + oldsize, '\0',
+			  (newsize - oldsize) * sizeof (dtv_t));
+
+		  /* Point dtv to the generation counter.  */
+		  dtv = &newp[1];
+
+		  /* Install this new dtv in the thread data
+		     structures.  */
+		  INSTALL_NEW_DTV (dtv);
+		}
+
+	      /* If there is currently memory allocate for this
+		 dtv entry free it.  */
+	      /* XXX Ideally we will at some point create a memory
+		 pool.  */
+	      if (! dtv[modid].pointer.is_static
+		  && dtv[modid].pointer.val != TLS_DTV_UNALLOCATED)
+		/* Note that free is called for NULL is well.  We
+		   deallocate even if it is this dtv entry we are
+		   supposed to load.  The reason is that we call
+		   memalign and not malloc.  */
+		free (dtv[modid].pointer.val);
+
+	      /* This module is loaded dynamically- We defer memory
+		 allocation.  */
+	      dtv[modid].pointer.is_static = false;
+	      dtv[modid].pointer.val = TLS_DTV_UNALLOCATED;
+
+	      if (modid == req_modid)
+		the_map = map;
+	    }
+
+	  total += listp->len;
+	}
+      while ((listp = listp->next) != NULL);
+
+      /* This will be the new maximum generation counter.  */
+      dtv[0].counter = new_gen;
+    }
+
+  return the_map;
+}
+
+
+/* The generic dynamic and local dynamic model cannot be used in
+   statically linked applications.  */
+void *
+__tls_get_addr (GET_ADDR_ARGS)
+{
+  dtv_t *dtv = THREAD_DTV ();
+  struct link_map *the_map = NULL;
+  void *p;
+
+  if (__builtin_expect (dtv[0].counter != GL(dl_tls_generation), 0))
+    the_map = _dl_update_slotinfo (GET_ADDR_MODULE);
+
+  p = dtv[GET_ADDR_MODULE].pointer.val;
+
+  if (__builtin_expect (p == TLS_DTV_UNALLOCATED, 0))
+    {
+      /* The allocation was deferred.  Do it now.  */
+      if (the_map == NULL)
+	{
+	  /* Find the link map for this module.  */
+	  size_t idx = GET_ADDR_MODULE;
+	  struct dtv_slotinfo_list *listp = GL(dl_tls_dtv_slotinfo_list);
+
+	  while (idx >= listp->len)
+	    {
+	      idx -= listp->len;
+	      listp = listp->next;
+	    }
+
+	  the_map = listp->slotinfo[idx].map;
+	}
+
+      p = dtv[GET_ADDR_MODULE].pointer.val = allocate_and_init (the_map);
+      dtv[GET_ADDR_MODULE].pointer.is_static = false;
+    }
+
+  return (char *) p + GET_ADDR_OFFSET;
+}
+# endif
+
+
+
+void
+_dl_add_to_slotinfo (struct link_map  *l)
+{
+  /* Now that we know the object is loaded successfully add
+     modules containing TLS data to the dtv info table.  We
+     might have to increase its size.  */
+  struct dtv_slotinfo_list *listp;
+  struct dtv_slotinfo_list *prevp;
+  size_t idx = l->l_tls_modid;
+
+  /* Find the place in the dtv slotinfo list.  */
+  listp = GL(dl_tls_dtv_slotinfo_list);
+  prevp = NULL;		/* Needed to shut up gcc.  */
+  do
+    {
+      /* Does it fit in the array of this list element?  */
+      if (idx < listp->len)
+	break;
+      idx -= listp->len;
+      prevp = listp;
+      listp = listp->next;
+    }
+  while (listp != NULL);
+
+  if (listp == NULL)
+    {
+      /* When we come here it means we have to add a new element
+	 to the slotinfo list.  And the new module must be in
+	 the first slot.  */
+      assert (idx == 0);
+
+      listp = prevp->next = (struct dtv_slotinfo_list *)
+	malloc (sizeof (struct dtv_slotinfo_list)
+		+ TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
+      if (listp == NULL)
+	{
+	  /* We ran out of memory.  We will simply fail this
+	     call but don't undo anything we did so far.  The
+	     application will crash or be terminated anyway very
+	     soon.  */
+
+	  /* We have to do this since some entries in the dtv
+	     slotinfo array might already point to this
+	     generation.  */
+	  ++GL(dl_tls_generation);
+
+	  _dl_dprintf (_dl_debug_file,
+			"cannot create TLS data structures: ABORT\n");
+	  _dl_exit (127);
+	}
+
+      listp->len = TLS_SLOTINFO_SURPLUS;
+      listp->next = NULL;
+      _dl_memset (listp->slotinfo, '\0',
+	      TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
+    }
+
+  /* Add the information into the slotinfo data structure.  */
+  listp->slotinfo[idx].map = l;
+  listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
+}
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.h
new file mode 100644
index 000000000..7703a9752
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/dl-tls.h
@@ -0,0 +1,2 @@
+/* There has to be an architecture specific version of this file.  */
+#error "architecture-specific version of <dl-tls.h> missing"
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/libc-tls.cc b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/libc-tls.cc
new file mode 100644
index 000000000..ff7e3ef37
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/generic/libc-tls.cc
@@ -0,0 +1,289 @@
+/* Initialization code for TLS in statically linked application.
+   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <ldsodefs.h>
+#include <tls.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/param.h>
+#include <elf.h>
+#include <link.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <l4/re/env>
+#include <l4/re/dataspace>
+#include <l4/re/mem_alloc>
+#include <l4/re/rm>
+
+#ifdef SHARED
+ #error makefile bug, this file is for static only
+#endif
+
+#if USE_TLS
+extern ElfW(Phdr) *_dl_phdr;
+extern size_t _dl_phnum;
+
+extern "C"
+__attribute__ ((weak))
+void *__libc_alloc_initial_tls(unsigned long size) __THROW;
+
+static dtv_t static_dtv[2 + TLS_SLOTINFO_SURPLUS];
+
+
+static struct
+{
+  struct dtv_slotinfo_list si;
+  /* The dtv_slotinfo_list data structure does not include the actual
+     information since it is defined as an array of size zero.  We define
+     here the necessary entries.  Note that it is not important whether
+     there is padding or not since we will always access the information
+     through the 'si' element.  */
+  dtv_slotinfo_list::dtv_slotinfo info[2 + TLS_SLOTINFO_SURPLUS];
+} static_slotinfo;
+
+/* Fake link map for the application.  */
+static struct link_map static_map;
+
+
+/* Highest dtv index currently needed.  */
+size_t _dl_tls_max_dtv_idx;
+/* Flag signalling whether there are gaps in the module ID allocation.  */
+bool _dl_tls_dtv_gaps;
+/* Information about the dtv slots.  */
+struct dtv_slotinfo_list *_dl_tls_dtv_slotinfo_list;
+/* Number of modules in the static TLS block.  */
+size_t _dl_tls_static_nelem;
+/* Size of the static TLS block.  */
+size_t _dl_tls_static_size __attribute__((weak));
+/* Size actually allocated in the static TLS block.  */
+size_t _dl_tls_static_used;
+/* Alignment requirement of the static TLS block.  */
+size_t _dl_tls_static_align;
+
+/* Generation counter for the dtv.  */
+size_t _dl_tls_generation;
+
+
+/* Additional definitions needed by TLS initialization.  */
+#ifdef TLS_INIT_HELPER
+TLS_INIT_HELPER
+#endif
+
+static inline void
+init_slotinfo (void)
+{
+  /* Create the slotinfo list.  */
+  static_slotinfo.si.len = (((char *) (&static_slotinfo + 1)
+			     - (char *) &static_slotinfo.si.slotinfo[0])
+			    / sizeof static_slotinfo.si.slotinfo[0]);
+  // static_slotinfo.si.next = NULL;	already zero
+
+  /* The slotinfo list.  Will be extended by the code doing dynamic
+     linking.  */
+  GL(dl_tls_max_dtv_idx) = 1;
+  GL(dl_tls_dtv_slotinfo_list) = &static_slotinfo.si;
+}
+
+static inline void
+init_static_tls (size_t memsz, size_t align)
+{
+  /* That is the size of the TLS memory for this object.  The initialized
+     value of _dl_tls_static_size is provided by dl-open.c to request some
+     surplus that permits dynamic loading of modules with IE-model TLS.  */
+  GL(dl_tls_static_size) = roundup (memsz + GL(dl_tls_static_size),
+				    TLS_TCB_ALIGN);
+  GL(dl_tls_static_used) = memsz;
+  /* The alignment requirement for the static TLS block.  */
+  GL(dl_tls_static_align) = align;
+  /* Number of elements in the static TLS block.  */
+  GL(dl_tls_static_nelem) = GL(dl_tls_max_dtv_idx);
+}
+
+__attribute__ ((weak))
+void *__libc_alloc_initial_tls(unsigned long size)// __THROW
+{
+  using namespace L4;
+  using namespace L4Re;
+  Cap<Dataspace> ds(Env::env()->first_free_cap() << L4_CAP_SHIFT);
+  ::l4re_global_env->first_free_cap += 1;
+  if (Env::env()->mem_alloc()->alloc(size, ds, 0) < 0)
+    return NULL;
+
+  void *addr = NULL;
+  if(Env::env()->rm()->attach(&addr, size, Rm::Search_addr,
+                        ds, 0, 0) < 0)
+    return NULL;
+
+  return addr;
+}
+extern "C"
+void
+__libc_setup_tls (size_t tcbsize, size_t tcbalign)
+{
+  void *tlsblock;
+  size_t memsz = 0;
+  size_t filesz = 0;
+  void *initimage = NULL;
+  size_t align = 0;
+  size_t max_align = tcbalign;
+  size_t tcb_offset;
+  ElfW(Phdr) *phdr;
+  /* Look through the TLS segment if there is any.  */
+  if (_dl_phdr != NULL)
+    for (phdr = _dl_phdr; phdr < &_dl_phdr[_dl_phnum]; ++phdr)
+      if (phdr->p_type == PT_TLS)
+	{
+	  /* Remember the values we need.  */
+	  memsz = phdr->p_memsz;
+	  filesz = phdr->p_filesz;
+	  initimage = (void *) phdr->p_vaddr;
+	  align = phdr->p_align;
+	  if (phdr->p_align > max_align)
+	    max_align = phdr->p_align;
+	  break;
+	}
+  /* We have to set up the TCB block which also (possibly) contains
+     'errno'.  Therefore we avoid 'malloc' which might touch 'errno'.
+     Instead we use 'sbrk' which would only uses 'errno' if it fails.
+     In this case we are right away out of memory and the user gets
+     what she/he deserves.
+
+     The initialized value of _dl_tls_static_size is provided by dl-open.c
+     to request some surplus that permits dynamic loading of modules with
+     IE-model TLS.  */
+# if defined(TLS_TCB_AT_TP)
+  tcb_offset = roundup (memsz + GL(dl_tls_static_size), tcbalign);
+  tlsblock = __libc_alloc_initial_tls(tcb_offset + tcbsize + max_align);
+# elif defined(TLS_DTV_AT_TP)
+  tcb_offset = roundup (tcbsize, align ?: 1);
+  tlsblock = __libc_alloc_initial_tls(tcb_offset + memsz + max_align
+		     + TLS_PRE_TCB_SIZE + GL(dl_tls_static_size));
+  tlsblock += TLS_PRE_TCB_SIZE;
+# else
+  /* In case a model with a different layout for the TCB and DTV
+     is defined add another #elif here and in the following #ifs.  */
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+
+  /* Align the TLS block.  */
+  tlsblock = (void *) (((uintptr_t) tlsblock + max_align - 1)
+		       & ~(max_align - 1));
+
+  /* Initialize the dtv.  [0] is the length, [1] the generation counter.  */
+  static_dtv[0].counter = (sizeof (static_dtv) / sizeof (static_dtv[0])) - 2;
+  // static_dtv[1].counter = 0;		would be needed if not already done
+
+  /* Initialize the TLS block.  */
+# if defined(TLS_TCB_AT_TP)
+  static_dtv[2].pointer.val = ((char *) tlsblock + tcb_offset
+			       - roundup (memsz, align ?: 1));
+  static_map.l_tls_offset = roundup (memsz, align ?: 1);
+# elif defined(TLS_DTV_AT_TP)
+  static_dtv[2].pointer.val = (char *) tlsblock + tcb_offset;
+  static_map.l_tls_offset = tcb_offset;
+# else
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+  static_dtv[2].pointer.is_static = true;
+  /* sbrk gives us zero'd memory, so we don't need to clear the remainder.  */
+  memcpy (static_dtv[2].pointer.val, initimage, filesz);
+
+  /* Install the pointer to the dtv.  */
+
+  /* Initialize the thread pointer.  */
+# if defined(TLS_TCB_AT_TP)
+  INSTALL_DTV ((char *) tlsblock + tcb_offset, static_dtv);
+  const char *lossage = TLS_INIT_TP ((char *) tlsblock + tcb_offset, 0);
+# elif defined(TLS_DTV_AT_TP)
+  INSTALL_DTV (tlsblock, static_dtv);
+  const char *lossage = (char *)TLS_INIT_TP (tlsblock, 0);
+# else
+#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+# endif
+  if (__builtin_expect (lossage != NULL, 0))
+    abort();
+
+  /* We have to create a fake link map which normally would be created
+     by the dynamic linker.  It just has to have enough information to
+     make the TLS routines happy.  */
+  static_map.l_tls_align = align;
+  static_map.l_tls_blocksize = memsz;
+  static_map.l_tls_initimage = initimage;
+  static_map.l_tls_initimage_size = filesz;
+  static_map.l_tls_modid = 1;
+
+  init_slotinfo ();
+  // static_slotinfo.si.slotinfo[1].gen = 0; already zero
+  static_slotinfo.si.slotinfo[1].map = &static_map;
+
+  memsz = roundup (memsz, align ?: 1);
+
+# if defined(TLS_TCB_AT_TP)
+  memsz += tcbsize;
+# elif defined(TLS_DTV_AT_TP)
+  memsz += tcb_offset;
+# endif
+
+  init_static_tls (memsz, MAX (TLS_TCB_ALIGN, max_align));
+}
+
+/* This is called only when the data structure setup was skipped at startup,
+   when there was no need for it then.  Now we have dynamically loaded
+   something needing TLS, or libpthread needs it.  */
+int
+internal_function
+_dl_tls_setup (void)
+{
+  init_slotinfo ();
+  init_static_tls (
+# if defined(TLS_TCB_AT_TP)
+		   TLS_TCB_SIZE,
+# else
+		   0,
+# endif
+		   TLS_TCB_ALIGN);
+  return 0;
+}
+
+
+/* This is the minimal initialization function used when libpthread is
+   not used.  */
+extern "C"
+void
+__attribute__ ((weak))
+__pthread_initialize_minimal (void)
+{
+  __libc_setup_tls (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN);
+}
+
+#elif defined NONTLS_INIT_TP
+
+/* This is the minimal initialization function used when libpthread is
+   not used.  */
+extern "C"
+void
+__attribute__ ((weak))
+__pthread_initialize_minimal (void)
+{
+  NONTLS_INIT_TP;
+}
+
+#endif
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/dl-tls.h
new file mode 100644
index 000000000..e94f9654e
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/dl-tls.h
@@ -0,0 +1,62 @@
+/* Thread-local storage handling in the ELF dynamic linker.  i386 version.
+   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
+
+#ifdef SHARED
+/* This is the prototype for the GNU version.  */
+extern void *___tls_get_addr (tls_index *ti)
+     __attribute__ ((__regparm__ (1)));
+extern void *___tls_get_addr_internal (tls_index *ti)
+     __attribute__ ((__regparm__ (1))) attribute_hidden;
+
+# ifdef IS_IN_rtld
+/* The special thing about the x86 TLS ABI is that we have two
+   variants of the __tls_get_addr function with different calling
+   conventions.  The GNU version, which we are mostly concerned here,
+   takes the parameter in a register.  The name is changed by adding
+   an additional underscore at the beginning.  The Sun version uses
+   the normal calling convention.  */
+void *
+__tls_get_addr (tls_index *ti)
+{
+  return ___tls_get_addr_internal (ti);
+}
+
+
+/* Prepare using the definition of __tls_get_addr in the generic
+   version of this file.  */
+# define __tls_get_addr __attribute__ ((__regparm__ (1))) ___tls_get_addr
+strong_alias (___tls_get_addr, ___tls_get_addr_internal)
+#else
+
+/* Users should get the better interface.  */
+# define __tls_get_addr ___tls_get_addr
+
+# endif
+#endif
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/i686/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/i686/tls.h
new file mode 100644
index 000000000..928d269dc
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/i686/tls.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+
+/* Additional definitions for <tls.h> on i686 and up.  */
+
+
+/* Macros to load from and store into segment registers.  We can use
+   the 32-bit instructions.  */
+#define TLS_GET_GS() \
+  ({ int __seg; __asm__ ("movl %%gs, %0" : "=q" (__seg)); __seg; })
+#define TLS_SET_GS(val) \
+  __asm__ ("movl %0, %%gs" :: "q" (val))
+
+
+/* Get the full set of definitions.  */
+#include "../tls.h"
+
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/tls.h
new file mode 100644
index 000000000..761fad481
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/i386/tls.h
@@ -0,0 +1,507 @@
+/* Definition for thread-local data handling.  nptl/i386 version.
+   Copyright (C) 2002-2007, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdlib.h>
+//# include <sysdep.h>
+# include <bits/kernel-features.h>
+
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+
+typedef struct
+{
+  void *tcb;		/* Pointer to the TCB.  Not necessarily the
+			   thread descriptor used by libpthread.  */
+  dtv_t *dtv;
+  void *self;		/* Pointer to the thread descriptor.  */
+  int multiple_threads;
+  uintptr_t sysinfo;
+  uintptr_t stack_guard;
+  uintptr_t pointer_guard;
+  int gscope_flag;
+#ifndef __ASSUME_PRIVATE_FUTEX
+  int private_futex;
+#else
+  int __unused1;
+#endif
+  /* Reservation of some values for the TM ABI.  */
+  void *__private_tm[5];
+} tcbhead_t;
+
+# define TLS_MULTIPLE_THREADS_IN_TCB 1
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif
+
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT
+#define HAVE___THREAD 1
+#define HAVE_TLS_MODEL_ATTRIBUTE 1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS        1
+
+
+/* Alignment requirement for the stack.  For IA-32 this is governed by
+   the SSE memory functions.  */
+#define STACK_ALIGN	16
+
+#ifndef __ASSEMBLER__
+/* Get system call information.  */
+//# include <sysdep.h>
+
+/* The old way: using LDT.  */
+
+struct x86_descr {
+    union {
+	struct {
+	    unsigned int a;
+	    unsigned int b;
+	};
+	struct {
+	    uint16_t limit0;
+	    uint16_t base0;
+	    unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
+	    unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
+	};
+    };
+} __attribute__((packed));
+
+
+
+/* Get the thread descriptor definition.  */
+# include <descr.h>
+# include <l4/sys/utcb.h>
+# include <l4/sys/segment.h>
+
+/* This is the size of the initial TCB.  Can't be just sizeof (tcbhead_t),
+   because NPTL getpid, __libc_alloca_cutoff etc. need (almost) the whole
+   struct pthread even when not linked with -lpthread.  */
+# define TLS_INIT_TCB_SIZE sizeof (struct _pthread_descr_struct)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
+
+/* The TCB can have any size and the memory following the address the
+   thread pointer points to is unspecified.  Allocate the TCB there.  */
+# define TLS_TCB_AT_TP	1
+
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(descr, dtvp) \
+  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtvpx) \
+  ({ struct _pthread_descr_struct *__pd;						      \
+     THREAD_SETMEM (__pd, p_header.data.dtvp, (dtvpx)); })
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(descr) \
+  (((tcbhead_t *) (descr))->dtv)
+
+#define THREAD_SELF_SYSINFO	THREAD_GETMEM (THREAD_SELF, header.sysinfo)
+#define THREAD_SYSINFO(pd)	((pd)->header.sysinfo)
+
+/* Macros to load from and store into segment registers.  */
+# ifndef TLS_GET_GS
+#  define TLS_GET_GS() \
+  ({ int __seg; __asm__ ("movw %%gs, %w0" : "=q" (__seg)); __seg & 0xffff; })
+# endif
+# ifndef TLS_SET_GS
+#  define TLS_SET_GS(val) \
+  __asm__ ("movw %w0, %%gs" :: "q" (val))
+# endif
+
+
+# ifndef __NR_set_thread_area
+#  define __NR_set_thread_area 243
+# endif
+# ifndef TLS_FLAG_WRITABLE
+#  define TLS_FLAG_WRITABLE		0x00000001
+# endif
+
+// XXX Enable for the real world.
+#if 0
+# ifndef __ASSUME_SET_THREAD_AREA
+#  error "we need set_thread_area"
+# endif
+#endif
+
+# ifdef __PIC__
+#  define TLS_EBX_ARG "r"
+#  define TLS_LOAD_EBX "xchgl %3, %%ebx\n\t"
+# else
+#  define TLS_EBX_ARG "b"
+#  define TLS_LOAD_EBX
+# endif
+
+#if defined NEED_DL_SYSINFO
+# define INIT_SYSINFO \
+  _head->sysinfo = GLRO(dl_sysinfo)
+#else
+# define INIT_SYSINFO
+#endif
+
+#ifndef LOCK_PREFIX
+# ifdef UP
+#  define LOCK_PREFIX  /* nothing */
+# else
+#  define LOCK_PREFIX "lock;"
+# endif
+#endif
+
+static inline char const *TLS_INIT_TP(void *thrdescr, int secondcall)
+{
+  (void)secondcall;
+  tcbhead_t *_head = (tcbhead_t *)thrdescr;
+  struct x86_descr segdesc;
+  long seg;
+
+  _head->tcb = thrdescr;
+  _head->self = thrdescr;
+  INIT_SYSINFO;
+  segdesc.limit0 = 0xffff;
+  segdesc.base0 = ((unsigned long)thrdescr) & 0x0ffff;
+  segdesc.base1 = (((unsigned long)thrdescr) & 0x0ff0000) >> 16;
+  segdesc.type = 2;
+  segdesc.s = 1;
+  segdesc.dpl = 3;
+  segdesc.p = 1;
+  segdesc.limit = 0xf;
+  segdesc.avl = 1;
+  segdesc.d = 1; // 32bit
+  segdesc.g = 1; // pages
+  segdesc.base2 = (((unsigned long)thrdescr) & 0xff000000) >> 24;
+  segdesc.l = 0;
+  seg = fiasco_gdt_set(L4_INVALID_CAP, &segdesc, 8, 0, l4_utcb());
+  if (seg < 0)
+    return "ERROR";
+
+  TLS_SET_GS(seg);
+
+  return NULL;
+}
+#if 0
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(thrdescr, secondcall) \
+  ({ void *_thrdescr = (thrdescr);					      \
+     tcbhead_t *_head = _thrdescr;					      \
+     union user_desc_init _segdescr;					      \
+     int _result;							      \
+									      \
+     _head->tcb = _thrdescr;						      \
+     /* For now the thread descriptor is at the same address.  */	      \
+     _head->self = _thrdescr;						      \
+     /* New syscall handling support.  */				      \
+     INIT_SYSINFO;							      \
+									      \
+     /* The 'entry_number' field.  Let the kernel pick a value.  */	      \
+     if (secondcall)							      \
+       _segdescr.vals[0] = TLS_GET_GS () >> 3;				      \
+     else								      \
+       _segdescr.vals[0] = -1;						      \
+     /* The 'base_addr' field.  Pointer to the TCB.  */			      \
+     _segdescr.vals[1] = (unsigned long int) _thrdescr;			      \
+     /* The 'limit' field.  We use 4GB which is 0xfffff pages.  */	      \
+     _segdescr.vals[2] = 0xfffff;					      \
+     /* Collapsed value of the bitfield:				      \
+	  .seg_32bit = 1						      \
+	  .contents = 0							      \
+	  .read_exec_only = 0						      \
+	  .limit_in_pages = 1						      \
+	  .seg_not_present = 0						      \
+	  .useable = 1 */						      \
+     _segdescr.vals[3] = 0x51;						      \
+									      \
+     /* Install the TLS.  */						      \
+     __asm__ __volatile__ (TLS_LOAD_EBX						  \
+		   "int $0x80\n\t"					      \
+		   TLS_LOAD_EBX						      \
+		   : "=a" (_result), "=m" (_segdescr.desc.entry_number)	      \
+		   : "0" (__NR_set_thread_area),			      \
+		     TLS_EBX_ARG (&_segdescr.desc), "m" (_segdescr.desc));    \
+									      \
+     if (_result == 0)							      \
+       /* We know the index in the GDT, now load the segment register.	      \
+	  The use of the GDT is described by the value 3 in the lower	      \
+	  three bits of the segment descriptor value.			      \
+									      \
+	  Note that we have to do this even if the numeric value of	      \
+	  the descriptor does not change.  Loading the segment register	      \
+	  causes the segment information from the GDT to be loaded	      \
+	  which is necessary since we have changed it.   */		      \
+       TLS_SET_GS (_segdescr.desc.entry_number * 8 + 3);		      \
+									      \
+     _result == 0 ? NULL						      \
+     : "set_thread_area failed when setting up thread-local storage\n"; })
+
+#endif
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  ({ struct _pthread_descr_struct *__pd;						      \
+     THREAD_GETMEM (__pd, p_header.data.dtvp); })
+
+
+/* Return the thread descriptor for the current thread.
+
+   The contained asm must *not* be marked __volatile__ since otherwise
+   assignments like
+        pthread_descr self = thread_self();
+   do not get optimized away.  */
+# define THREAD_SELF \
+  ({ struct _pthread_descr_struct *__self;						      \
+     __asm__ ("movl %%gs:%c1,%0" : "=r" (__self)				    \
+	  : "i" (offsetof (struct _pthread_descr_struct, p_header.data.self)));		      \
+     __self;})
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  REGISTER_THREAD_AREA (32, offsetof (struct user_regs_struct, xgs), 3) \
+  REGISTER_THREAD_AREA (64, 26 * 8, 3) /* x86-64's user_regs_struct->gs */
+
+
+/* Read member of the thread descriptor directly.  */
+# define THREAD_GETMEM(descr, member) \
+  ({ __typeof (descr->member) __value;					      \
+     if (sizeof (__value) == 1)						      \
+       __asm__ __volatile__ ("movb %%gs:%P2,%b0"				    \
+		     : "=q" (__value)					      \
+		     : "0" (0), "i" (offsetof (struct _pthread_descr_struct, member)));     \
+     else if (sizeof (__value) == 4)					      \
+       __asm__ __volatile__ ("movl %%gs:%P1,%0"					    \
+		     : "=r" (__value)					      \
+		     : "i" (offsetof (struct _pthread_descr_struct, member)));	      \
+     else								      \
+       {								      \
+	 if (sizeof (__value) != 8)					      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movl %%gs:%P1,%%eax\n\t"			      \
+		       "movl %%gs:%P2,%%edx"				      \
+		       : "=A" (__value)					      \
+		       : "i" (offsetof (struct _pthread_descr_struct, member)),	      \
+			 "i" (offsetof (struct _pthread_descr_struct, member) + 4));	      \
+       }								      \
+     __value; })
+
+
+/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */
+# define THREAD_GETMEM_NC(descr, member, idx) \
+  ({ __typeof (descr->member[0]) __value;				      \
+     if (sizeof (__value) == 1)						      \
+       __asm__ __volatile__ ("movb %%gs:%P2(%3),%b0"				      \
+		     : "=q" (__value)					      \
+		     : "0" (0), "i" (offsetof (struct _pthread_descr_struct, member[0])),   \
+		     "r" (idx));					      \
+     else if (sizeof (__value) == 4)					      \
+       __asm__ __volatile__ ("movl %%gs:%P1(,%2,4),%0"				      \
+		     : "=r" (__value)					      \
+		     : "i" (offsetof (struct _pthread_descr_struct, member[0])),	      \
+		       "r" (idx));					      \
+     else								      \
+       {								      \
+	 if (sizeof (__value) != 8)					      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__  ("movl %%gs:%P1(,%2,8),%%eax\n\t"		      \
+			"movl %%gs:4+%P1(,%2,8),%%edx"			      \
+			: "=&A" (__value)				      \
+			: "i" (offsetof (struct _pthread_descr_struct, member[0])),	      \
+			  "r" (idx));					      \
+       }								      \
+     __value; })
+
+
+/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
+# define THREAD_SETMEM(descr, member, value) \
+  ({ if (sizeof (descr->member) == 1)					      \
+       __asm__ __volatile__ ("movb %b0,%%gs:%P1" :				      \
+		     : "iq" (value),					      \
+		       "i" (offsetof (struct _pthread_descr_struct, member)));	      \
+     else if (sizeof (descr->member) == 4)				      \
+       __asm__ __volatile__ ("movl %0,%%gs:%P1" :				      \
+		     : "ir" (value),					      \
+		       "i" (offsetof (struct _pthread_descr_struct, member)));	      \
+     else								      \
+       {								      \
+	 if (sizeof (descr->member) != 8)				      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movl %%eax,%%gs:%P1\n\t"			      \
+		       "movl %%edx,%%gs:%P2" :				      \
+		       : "A" (value),					      \
+			 "i" (offsetof (struct _pthread_descr_struct, member)),	      \
+			 "i" (offsetof (struct _pthread_descr_struct, member) + 4));	      \
+       }})
+
+
+/* Set member of the thread descriptor directly.  */
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+  ({ if (sizeof (descr->member[0]) == 1)				      \
+       __asm__ __volatile__ ("movb %b0,%%gs:%P1(%2)" :				      \
+		     : "iq" (value),					      \
+		       "i" (offsetof (struct _pthread_descr_struct, member)),		      \
+		       "r" (idx));					      \
+     else if (sizeof (descr->member[0]) == 4)				      \
+       __asm__ __volatile__ ("movl %0,%%gs:%P1(,%2,4)" :			      \
+		     : "ir" (value),					      \
+		       "i" (offsetof (struct _pthread_descr_struct, member)),		      \
+		       "r" (idx));					      \
+     else								      \
+       {								      \
+	 if (sizeof (descr->member[0]) != 8)				      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movl %%eax,%%gs:%P1(,%2,8)\n\t"			      \
+		       "movl %%edx,%%gs:4+%P1(,%2,8)" :			      \
+		       : "A" (value),					      \
+			 "i" (offsetof (struct _pthread_descr_struct, member)),	      \
+			 "r" (idx));					      \
+       }})
+
+
+/* Atomic compare and exchange on TLS, returning old value.  */
+#define THREAD_ATOMIC_CMPXCHG_VAL(descr, member, newval, oldval) \
+  ({ __typeof (descr->member) __ret;					      \
+     __typeof (oldval) __old = (oldval);				      \
+     if (sizeof (descr->member) == 4)					      \
+       __asm__ __volatile__ (LOCK_PREFIX "cmpxchgl %2, %%gs:%P3"		      \
+		     : "=a" (__ret)					      \
+		     : "0" (__old), "r" (newval),			      \
+		       "i" (offsetof (struct _pthread_descr_struct, member)));	      \
+     else								      \
+       /* Not necessary for other sizes in the moment.  */		      \
+       abort ();							      \
+     __ret; })
+
+
+/* Atomic logical and.  */
+#define THREAD_ATOMIC_AND(descr, member, val) \
+  (void) ({ if (sizeof ((descr)->member) == 4)				      \
+	      __asm__ __volatile__ (LOCK_PREFIX "andl %1, %%gs:%P0"		      \
+			    :: "i" (offsetof (struct _pthread_descr_struct, member)),	      \
+			       "ir" (val));				      \
+	    else							      \
+	      /* Not necessary for other sizes in the moment.  */	      \
+	      abort (); })
+
+
+/* Atomic set bit.  */
+#define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
+  (void) ({ if (sizeof ((descr)->member) == 4)				      \
+	      __asm__ __volatile__ (LOCK_PREFIX "orl %1, %%gs:%P0"		      \
+			    :: "i" (offsetof (struct _pthread_descr_struct, member)),	      \
+			       "ir" (1 << (bit)));			      \
+	    else							      \
+	      /* Not necessary for other sizes in the moment.  */	      \
+	      abort (); })
+
+
+/* Call the user-provided thread function.  */
+#define CALL_THREAD_FCT(descr) \
+  ({ void *__res;							      \
+     int __ignore1, __ignore2;						      \
+     __asm__ __volatile__ ("pushl %%eax\n\t"					      \
+		   "pushl %%eax\n\t"					      \
+		   "pushl %%eax\n\t"					      \
+		   "pushl %%gs:%P4\n\t"					      \
+		   "call *%%gs:%P3\n\t"					      \
+		   "addl $16, %%esp"					      \
+		   : "=a" (__res), "=c" (__ignore1), "=d" (__ignore2)	      \
+		   : "i" (offsetof (struct _pthread_descr_struct, start_routine)),	      \
+		     "i" (offsetof (struct _pthread_descr_struct, arg)));		      \
+     __res; })
+
+
+/* Set the stack guard field in TCB head.  */
+#define THREAD_SET_STACK_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.stack_guard, value)
+#define THREAD_COPY_STACK_GUARD(descr) \
+  ((descr)->header.stack_guard						      \
+   = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+
+
+/* Set the pointer guard field in the TCB head.  */
+#define THREAD_SET_POINTER_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+  ((descr)->header.pointer_guard					      \
+   = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
+/* Get and set the global scope generation counter in the TCB head.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									      \
+    { int __res;							      \
+      __asm__ __volatile__ ("xchgl %0, %%gs:%P1"				      \
+		    : "=r" (__res)					      \
+		    : "i" (offsetof (struct _pthread_descr_struct, header.gscope_flag)),    \
+		      "0" (THREAD_GSCOPE_FLAG_UNUSED));			      \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				      \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);    \
+    }									      \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/dl-tls.h
new file mode 100644
index 000000000..3ad3b2bc0
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/dl-tls.h
@@ -0,0 +1,46 @@
+/* Thread-local storage handling in the ELF dynamic linker.  MIPS version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+/* The thread pointer points 0x7000 past the first static TLS block.  */
+#define TLS_TP_OFFSET		0x7000
+
+/* Dynamic thread vector pointers point 0x8000 past the start of each
+   TLS block.  */
+#define TLS_DTV_OFFSET		0x8000
+
+/* Compute the value for a GOTTPREL reloc.  */
+#define TLS_TPREL_VALUE(sym_map, sym_val) \
+  ((sym_map)->l_tls_offset + sym_val - TLS_TP_OFFSET)
+
+/* Compute the value for a DTPREL reloc.  */
+#define TLS_DTPREL_VALUE(sym_val) \
+  (sym_val - TLS_DTV_OFFSET)
+
+extern void *__tls_get_addr (tls_index *ti);
+
+# define GET_ADDR_OFFSET	(ti->ti_offset + TLS_DTV_OFFSET)
+# define __TLS_GET_ADDR(__ti)	(__tls_get_addr (__ti) - TLS_DTV_OFFSET)
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/tls.h
new file mode 100644
index 000000000..27b1c15df
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/mips/tls.h
@@ -0,0 +1,181 @@
+/* Definition for thread-local data handling.  NPTL/MIPS version.
+   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+/* Note: rd must be $v1 to be ABI-conformant.  */
+# define READ_THREAD_POINTER() \
+    ({ void *__result;							      \
+       __asm__ __volatile__ (".set\tpush\n\t.set\tmips32r2\n\t"		      \
+		     "rdhwr\t%0, $29\n\t.set\tpop" : "=v" (__result));	      \
+       __result; })
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+
+# define READ_THREAD_POINTER(rd) \
+	.set	push;							      \
+	.set	mips32r2;						      \
+	rdhwr	rd, $29;						      \
+	.set	pop
+#endif /* __ASSEMBLER__ */
+
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT		1
+#define HAVE_TLS_MODEL_ATTRIBUTE	1
+#define HAVE___THREAD			1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS	1
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* The TP points to the start of the thread blocks.  */
+# define TLS_DTV_AT_TP	1
+
+/* Get the thread descriptor definition.  */
+#include <../../descr.h>
+
+typedef struct
+{
+  dtv_t *dtv;
+  void *private;
+} tcbhead_t;
+
+/* This is the size of the initial TCB.  Because our TCB is before the thread
+   pointer, we don't need this.  */
+# define TLS_INIT_TCB_SIZE	0
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN	__alignof__ (struct pthread)
+
+/* This is the size of the TCB.  Because our TCB is before the thread
+   pointer, we don't need this.  */
+# define TLS_TCB_SIZE		0
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN		__alignof__ (struct pthread)
+
+/* This is the size we need before TCB - actually, it includes the TCB.  */
+# define TLS_PRE_TCB_SIZE \
+  (sizeof (struct pthread)						      \
+   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
+
+/* The thread pointer (in hardware register $29) points to the end of
+   the TCB + 0x7000, as for PowerPC.  The pthread_descr structure is
+   immediately in front of the TCB.  */
+# define TLS_TCB_OFFSET	0x7000
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  (((tcbhead_t *) (tcbp))[-1].dtv = (dtvp) + 1)
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) \
+  (THREAD_DTV() = (dtv))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp) \
+  (((tcbhead_t *) (tcbp))[-1].dtv)
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(tcbp, secondcall) \
+  ({ INTERNAL_SYSCALL_DECL (err);					\
+     long result_var;							\
+     result_var = INTERNAL_SYSCALL (set_thread_area, err, 1,		\
+				    (char *) (tcbp) + TLS_TCB_OFFSET);	\
+     INTERNAL_SYSCALL_ERROR_P (result_var, err)				\
+       ? "unknown error" : NULL; })
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  (((tcbhead_t *) (READ_THREAD_POINTER () - TLS_TCB_OFFSET))[-1].dtv)
+
+/* Return the thread descriptor for the current thread.  */
+# define THREAD_SELF \
+ ((struct pthread *) (READ_THREAD_POINTER ()			     \
+		      - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  CONST_THREAD_AREA (32, TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE)
+
+/* Access to data in the thread descriptor is easy.  */
+# define THREAD_GETMEM(descr, member) \
+  descr->member
+# define THREAD_GETMEM_NC(descr, member, idx) \
+  descr->member[idx]
+# define THREAD_SETMEM(descr, member, value) \
+  descr->member = (value)
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+  descr->member[idx] = (value)
+
+/* l_tls_offset == 0 is perfectly valid on MIPS, so we have to use some
+   different value to mean unset l_tls_offset.  */
+# define NO_TLS_OFFSET		-1
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/dl-tls.h
new file mode 100644
index 000000000..957d4b4b9
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/dl-tls.h
@@ -0,0 +1,49 @@
+/* Thread-local storage handling in the ELF dynamic linker.  PowerPC version.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the TOC.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+/* The thread pointer points 0x7000 past the first static TLS block.  */
+#define TLS_TP_OFFSET		0x7000
+
+/* Dynamic thread vector pointers point 0x8000 past the start of each
+   TLS block.  */
+#define TLS_DTV_OFFSET		0x8000
+
+/* Compute the value for a @tprel reloc.  */
+#define TLS_TPREL_VALUE(sym_map, sym, reloc) \
+  ((sym_map)->l_tls_offset + (sym)->st_value + (reloc)->r_addend \
+   - TLS_TP_OFFSET)
+
+/* Compute the value for a @dtprel reloc.  */
+#define TLS_DTPREL_VALUE(sym, reloc) \
+  ((sym)->st_value + (reloc)->r_addend - TLS_DTV_OFFSET)
+
+#ifdef SHARED
+extern void *__tls_get_addr (tls_index *ti);
+
+# define GET_ADDR_OFFSET	(ti->ti_offset + TLS_DTV_OFFSET)
+# define __TLS_GET_ADDR(__ti)	(__tls_get_addr (__ti) - TLS_DTV_OFFSET)
+#endif
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/tls.h
new file mode 100644
index 000000000..20463c19f
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/powerpc/tls.h
@@ -0,0 +1,217 @@
+/* Definition for thread-local data handling.  NPTL/PowerPC version.
+   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+#if defined USE_TLS && USE_TLS // l4
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT                1
+#define HAVE_TLS_MODEL_ATTRIBUTE        1
+#define HAVE___THREAD                   1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS	1
+
+/* We require TLS support in the tools.  */
+#ifndef HAVE_TLS_SUPPORT
+# error "TLS support is required."
+#endif
+
+/* Signal that TLS support is available.  */
+# define USE_TLS       1
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* The TP points to the start of the thread blocks.  */
+# define TLS_DTV_AT_TP	1
+
+/* We use the multiple_threads field in the pthread struct */
+#define TLS_MULTIPLE_THREADS_IN_TCB	1
+
+/* Get the thread descriptor definition.  */
+# include <../../descr.h>
+
+/* The stack_guard is accessed directly by GCC -fstack-protector code,
+   so it is a part of public ABI.  The dtv and pointer_guard fields
+   are private.  */
+typedef struct
+{
+  uintptr_t pointer_guard;
+  uintptr_t stack_guard;
+  dtv_t *dtv;
+} tcbhead_t;
+
+/* This is the size of the initial TCB.  */
+# define TLS_INIT_TCB_SIZE	0
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN	__alignof__ (struct pthread)
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE		0
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN		__alignof__ (struct pthread)
+
+/* This is the size we need before TCB.  */
+# define TLS_PRE_TCB_SIZE \
+  (sizeof (struct pthread)						      \
+   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
+
+# ifndef __powerpc64__
+/* Register r2 (tp) is reserved by the ABI as "thread pointer". */
+register void *__thread_register __asm__ ("r2");
+#  define PT_THREAD_POINTER PT_R2
+# else
+/* Register r13 (tp) is reserved by the ABI as "thread pointer". */
+register void *__thread_register __asm__ ("r13");
+#  define PT_THREAD_POINTER PT_R13
+# endif
+
+/* The following assumes that TP (R2 or R13) points to the end of the
+   TCB + 0x7000 (per the ABI).  This implies that TCB address is
+   TP - 0x7000.  As we define TLS_DTV_AT_TP we can
+   assume that the pthread struct is allocated immediately ahead of the
+   TCB.  This implies that the pthread_descr address is
+   TP - (TLS_PRE_TCB_SIZE + 0x7000).  */
+# define TLS_TCB_OFFSET	0x7000
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  ((tcbhead_t *) (tcbp))[-1].dtv = dtvp + 1
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) (THREAD_DTV() = (dtv))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp)	(((tcbhead_t *) (tcbp))[-1].dtv)
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(tcbp, secondcall) \
+    (__thread_register = (void *) (tcbp) + TLS_TCB_OFFSET, NULL)
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+    (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv)
+
+/* Return the thread descriptor for the current thread.  */
+# define THREAD_SELF \
+    ((struct pthread *) (__thread_register \
+			 - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF							      \
+  REGISTER (32, 32, PT_THREAD_POINTER * 4,				      \
+	    - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)			      \
+  REGISTER (64, 64, PT_THREAD_POINTER * 8,				      \
+	    - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)
+
+/* Read member of the thread descriptor directly.  */
+# define THREAD_GETMEM(descr, member) ((void)(descr), (THREAD_SELF)->member)
+
+/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */
+# define THREAD_GETMEM_NC(descr, member, idx) \
+    ((void)(descr), (THREAD_SELF)->member[idx])
+
+/* Set member of the thread descriptor directly.  */
+# define THREAD_SETMEM(descr, member, value) \
+    ((void)(descr), (THREAD_SELF)->member = (value))
+
+/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+    ((void)(descr), (THREAD_SELF)->member[idx] = (value))
+
+/* Set the stack guard field in TCB head.  */
+# define THREAD_SET_STACK_GUARD(value) \
+    (((tcbhead_t *) ((char *) __thread_register				      \
+		     - TLS_TCB_OFFSET))[-1].stack_guard = (value))
+# define THREAD_COPY_STACK_GUARD(descr) \
+    (((tcbhead_t *) ((char *) (descr)					      \
+		     + TLS_PRE_TCB_SIZE))[-1].stack_guard		      \
+     = ((tcbhead_t *) ((char *) __thread_register			      \
+		       - TLS_TCB_OFFSET))[-1].stack_guard)
+
+/* Set the stack guard field in TCB head.  */
+# define THREAD_GET_POINTER_GUARD() \
+    (((tcbhead_t *) ((char *) __thread_register				      \
+		     - TLS_TCB_OFFSET))[-1].pointer_guard)
+# define THREAD_SET_POINTER_GUARD(value) \
+    (THREAD_GET_POINTER_GUARD () = (value))
+# define THREAD_COPY_POINTER_GUARD(descr) \
+    (((tcbhead_t *) ((char *) (descr)					      \
+		     + TLS_PRE_TCB_SIZE))[-1].pointer_guard		      \
+     = THREAD_GET_POINTER_GUARD())
+
+/* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some
+   different value to mean unset l_tls_offset.  */
+# define NO_TLS_OFFSET		-1
+
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+#endif /* l4 tls disable */
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/dl-tls.h
new file mode 100644
index 000000000..98e2f1904
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/dl-tls.h
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  SH version.
+   Copyright (C) 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/tls.h
new file mode 100644
index 000000000..bbb11187a
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sh/tls.h
@@ -0,0 +1,182 @@
+/* Definition for thread-local data handling.  NPTL/SH version.
+   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdlib.h>
+# include <list.h>
+# include <sysdep.h>
+# include <bits/kernel-features.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+typedef struct
+{
+  dtv_t *dtv;
+  uintptr_t pointer_guard;
+} tcbhead_t;
+
+# define TLS_MULTIPLE_THREADS_IN_TCB 1
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT
+#define HAVE___THREAD   1
+#define HAVE_TLS_MODEL_ATTRIBUTE       1
+/* Signal that TLS support is available.  */
+# define USE_TLS       1
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* This is the size of the initial TCB.  */
+# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE sizeof (tcbhead_t)
+
+/* This is the size we need before TCB.  */
+# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+
+/* The TLS blocks start right after the TCB.  */
+# define TLS_DTV_AT_TP	1
+
+/* Get the thread descriptor definition.  */
+# include <descr.h>
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  ((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) \
+  ({ tcbhead_t *__tcbp;							      \
+     __asm__ __volatile__ ("stc gbr,%0" : "=r" (__tcbp));			      \
+     __tcbp->dtv = (dtv);})
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp) \
+  (((tcbhead_t *) (tcbp))->dtv)
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.  */
+# define TLS_INIT_TP(tcbp, secondcall) \
+  ({ __asm__ __volatile__ ("ldc %0,gbr" : : "r" (tcbp)); 0; })
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  ({ tcbhead_t *__tcbp;							      \
+     __asm__ __volatile__ ("stc gbr,%0" : "=r" (__tcbp));			      \
+     __tcbp->dtv;})
+
+/* Return the thread descriptor for the current thread.
+   The contained asm must *not* be marked volatile since otherwise
+   assignments like
+        struct pthread *self = thread_self();
+   do not get optimized away.  */
+# define THREAD_SELF \
+  ({ struct pthread *__self;						      \
+     __asm__ ("stc gbr,%0" : "=r" (__self));				      \
+     __self - 1;})
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  REGISTER (32, 32, REG_GBR * 4, -sizeof (struct pthread))
+
+/* Read member of the thread descriptor directly.  */
+# define THREAD_GETMEM(descr, member) (descr->member)
+
+/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */
+# define THREAD_GETMEM_NC(descr, member, idx) (descr->member[idx])
+
+/* Set member of the thread descriptor directly.  */
+# define THREAD_SETMEM(descr, member, value) \
+    descr->member = (value)
+
+/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+    descr->member[idx] = (value)
+
+#define THREAD_GET_POINTER_GUARD() \
+  ({ tcbhead_t *__tcbp;							      \
+     __asm__ __volatile__ ("stc gbr,%0" : "=r" (__tcbp));			      \
+     __tcbp->pointer_guard;})
+ #define THREAD_SET_POINTER_GUARD(value) \
+  ({ tcbhead_t *__tcbp;							      \
+     __asm__ __volatile__ ("stc gbr,%0" : "=r" (__tcbp));			      \
+     __tcbp->pointer_guard = (value);})
+#define THREAD_COPY_POINTER_GUARD(descr) \
+  ({ tcbhead_t *__tcbp;							      \
+     __asm__ __volatile__ ("stc gbr,%0" : "=r" (__tcbp));			      \
+     ((tcbhead_t *) (descr + 1))->pointer_guard	= __tcbp->pointer_guard;})
+
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/dl-tls.h
new file mode 100644
index 000000000..6edf8d525
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/dl-tls.h
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  SPARC version.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/tls.h
new file mode 100644
index 000000000..6b8e08d5e
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/sparc/tls.h
@@ -0,0 +1,182 @@
+/* Definitions for thread-local data handling.  NPTL/sparc version.
+   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H
+#if defined USE_TLS && USE_TLS // l4
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdlib.h>
+# include <list.h>
+# include <bits/kernel-features.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+typedef struct
+{
+  void *tcb;		/* Pointer to the TCB.  Not necessary the
+			   thread descriptor used by libpthread.  */
+  dtv_t *dtv;
+  void *self;
+  int multiple_threads;
+#if __WORDSIZE == 64
+  int gscope_flag;
+#endif
+  uintptr_t sysinfo;
+  uintptr_t stack_guard;
+  uintptr_t pointer_guard;
+#if __WORDSIZE != 64
+  int gscope_flag;
+#endif
+#ifndef __ASSUME_PRIVATE_FUTEX
+  int private_futex;
+#endif
+} tcbhead_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT
+#define HAVE___THREAD 1
+#define HAVE_TLS_MODEL_ATTRIBUTE 1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS        1
+
+#ifndef __ASSEMBLER__
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* Get the thread descriptor definition.  */
+# include <descr.h>
+
+register struct pthread *__thread_self __asm__("%g7");
+
+/* This is the size of the initial TCB.  Can't be just sizeof (tcbhead_t),
+   because NPTL getpid, __libc_alloca_cutoff etc. need (almost) the whole
+   struct pthread even when not linked with -lpthread.  */
+# define TLS_INIT_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread)
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+
+/* The TCB can have any size and the memory following the address the
+   thread pointer points to is unspecified.  Allocate the TCB there.  */
+# define TLS_TCB_AT_TP	1
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(descr, dtvp) \
+  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(DTV) \
+  (((tcbhead_t *) __thread_self)->dtv = (DTV))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(descr) \
+  (((tcbhead_t *) (descr))->dtv)
+
+/* Code to initially initialize the thread pointer.  */
+# define TLS_INIT_TP(descr, secondcall) \
+  (__thread_self = (__typeof (__thread_self)) (descr), NULL)
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  (((tcbhead_t *) __thread_self)->dtv)
+
+/* Return the thread descriptor for the current thread.  */
+#define THREAD_SELF  __thread_self
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF_INCLUDE <sys/ucontext.h>
+# define DB_THREAD_SELF \
+  REGISTER (32, 32, REG_G7 * 4, 0) REGISTER (64, 64, REG_G7 * 8, 0)
+
+/* Access to data in the thread descriptor is easy.  */
+#define THREAD_GETMEM(descr, member) \
+  descr->member
+#define THREAD_GETMEM_NC(descr, member, idx) \
+  descr->member[idx]
+#define THREAD_SETMEM(descr, member, value) \
+  descr->member = (value)
+#define THREAD_SETMEM_NC(descr, member, idx, value) \
+  descr->member[idx] = (value)
+
+/* Set the stack guard field in TCB head.  */
+#define THREAD_SET_STACK_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.stack_guard, value)
+# define THREAD_COPY_STACK_GUARD(descr) \
+  ((descr)->header.stack_guard \
+   = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+
+/* Get/set the stack guard field in TCB head.  */
+#define THREAD_GET_POINTER_GUARD() \
+  THREAD_GETMEM (THREAD_SELF, header.pointer_guard)
+#define THREAD_SET_POINTER_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+# define THREAD_COPY_POINTER_GUARD(descr) \
+  ((descr)->header.pointer_guard = THREAD_GET_POINTER_GUARD ())
+
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* !ASSEMBLER */
+#endif /* l4 tls disable */
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/dl-tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/dl-tls.h
new file mode 100644
index 000000000..3e4768dc1
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/dl-tls.h
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  x86-64 version.
+   Copyright (C) 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
diff --git a/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/tls.h b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/tls.h
new file mode 100644
index 000000000..2cd8f32cf
--- /dev/null
+++ b/l4/pkg/uclibc/lib/libpthread/src/sysdeps/x86_64/tls.h
@@ -0,0 +1,438 @@
+/* Definition for thread-local data handling.  nptl/x86_64 version.
+   Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+#if defined USE_TLS && USE_TLS // l4
+#ifndef __ASSEMBLER__
+# include <asm/prctl.h>	/* For ARCH_SET_FS.  */
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdlib.h>
+# include <sysdep.h>
+# include <bits/kernel-features.h>
+# include <bits/wordsize.h>
+# include <xmmintrin.h>
+
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+
+typedef struct
+{
+  void *tcb;		/* Pointer to the TCB.  Not necessarily the
+			   thread descriptor used by libpthread.  */
+  dtv_t *dtv;
+  void *self;		/* Pointer to the thread descriptor.  */
+  int multiple_threads;
+  int gscope_flag;
+  uintptr_t sysinfo;
+  uintptr_t stack_guard;
+  uintptr_t pointer_guard;
+  unsigned long int vgetcpu_cache[2];
+# ifndef __ASSUME_PRIVATE_FUTEX
+  int private_futex;
+# else
+  int __unused1;
+# endif
+# if __WORDSIZE == 64
+  int rtld_must_xmm_save;
+# endif
+  /* Reservation of some values for the TM ABI.  */
+  void *__private_tm[5];
+# if __WORDSIZE == 64
+  long int __unused2;
+  /* Have space for the post-AVX register size.  */
+  __m128 rtld_savespace_sse[8][4];
+
+  void *__padding[8];
+# endif
+} tcbhead_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif
+
+
+/* We require TLS support in the tools.  */
+#define HAVE_TLS_SUPPORT                1
+#define HAVE___THREAD 1
+#define HAVE_TLS_MODEL_ATTRIBUTE 1
+
+/* Signal that TLS support is available.  */
+#define USE_TLS        1
+
+/* Alignment requirement for the stack.  */
+#define STACK_ALIGN	16
+
+
+#ifndef __ASSEMBLER__
+/* Get system call information.  */
+# include <sysdep.h>
+
+
+/* Get the thread descriptor definition.  */
+# include <descr.h>
+
+#ifndef LOCK_PREFIX
+# ifdef UP
+#  define LOCK_PREFIX	/* nothing */
+# else
+#  define LOCK_PREFIX	"lock;"
+# endif
+#endif
+
+/* This is the size of the initial TCB.  Can't be just sizeof (tcbhead_t),
+   because NPTL getpid, __libc_alloca_cutoff etc. need (almost) the whole
+   struct pthread even when not linked with -lpthread.  */
+# define TLS_INIT_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread)
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+//# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+// Normally the above would be correct  But we have to store post-AVX
+// vector registers in the TCB and we want the storage to be aligned.
+// unfortunately there isn't yet a type for these values and hence no
+// 32-byte alignment requirement.  Make this explicit, for now.
+# define TLS_TCB_ALIGN 32
+
+/* The TCB can have any size and the memory following the address the
+   thread pointer points to is unspecified.  Allocate the TCB there.  */
+# define TLS_TCB_AT_TP	1
+
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(descr, dtvp) \
+  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtvp) \
+  ({ struct pthread *__pd;						      \
+     THREAD_SETMEM (__pd, header.dtv, (dtvp)); })
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(descr) \
+  (((tcbhead_t *) (descr))->dtv)
+
+
+/* Macros to load from and store into segment registers.  */
+# define TLS_GET_FS() \
+  ({ int __seg; __asm__ ("movl %%fs, %0" : "=q" (__seg)); __seg; })
+# define TLS_SET_FS(val) \
+  __asm__ ("movl %0, %%fs" :: "q" (val))
+
+
+/* Code to initially initialize the thread pointer.  This might need
+   special attention since 'errno' is not yet available and if the
+   operation can cause a failure 'errno' must not be touched.
+
+   We have to make the syscall for both uses of the macro since the
+   address might be (and probably is) different.  */
+# define TLS_INIT_TP(thrdescr, secondcall) \
+  ({ void *_thrdescr = (thrdescr);					      \
+     tcbhead_t *_head = _thrdescr;					      \
+     int _result;							      \
+									      \
+     _head->tcb = _thrdescr;						      \
+     /* For now the thread descriptor is at the same address.  */	      \
+     _head->self = _thrdescr;						      \
+									      \
+     /* It is a simple syscall to set the %fs value for the thread.  */	      \
+     __asm__ __volatile__ ("syscall"						      \
+		   : "=a" (_result)					      \
+		   : "0" ((unsigned long int) __NR_arch_prctl),		      \
+		     "D" ((unsigned long int) ARCH_SET_FS),		      \
+		     "S" (_thrdescr)					      \
+		   : "memory", "cc", "r11", "cx");			      \
+									      \
+    _result ? "cannot set %fs base address for thread-local storage" : 0;     \
+  })
+
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  ({ struct pthread *__pd;						      \
+     THREAD_GETMEM (__pd, header.dtv); })
+
+
+/* Return the thread descriptor for the current thread.
+
+   The contained asm must *not* be marked __volatile__ since otherwise
+   assignments like
+	pthread_descr self = thread_self();
+   do not get optimized away.  */
+# define THREAD_SELF \
+  ({ struct pthread *__self;						      \
+     __asm__ ("movq %%fs:%c1,%q0" : "=r" (__self)				      \
+	  : "i" (offsetof (struct pthread, header.self)));	 	      \
+     __self;})
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF_INCLUDE  <sys/reg.h> /* For the FS constant.  */
+# define DB_THREAD_SELF CONST_THREAD_AREA (64, FS)
+
+/* Read member of the thread descriptor directly.  */
+# define THREAD_GETMEM(descr, member) \
+  ({ __typeof (descr->member) __value;					      \
+     if (sizeof (__value) == 1)						      \
+       __asm__ __volatile__ ("movb %%fs:%P2,%b0"				      \
+		     : "=q" (__value)					      \
+		     : "0" (0), "i" (offsetof (struct pthread, member)));     \
+     else if (sizeof (__value) == 4)					      \
+       __asm__ __volatile__ ("movl %%fs:%P1,%0"					      \
+		     : "=r" (__value)					      \
+		     : "i" (offsetof (struct pthread, member)));	      \
+     else								      \
+       {								      \
+	 if (sizeof (__value) != 8)					      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movq %%fs:%P1,%q0"				      \
+		       : "=r" (__value)					      \
+		       : "i" (offsetof (struct pthread, member)));	      \
+       }								      \
+     __value; })
+
+
+/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */
+# define THREAD_GETMEM_NC(descr, member, idx) \
+  ({ __typeof (descr->member[0]) __value;				      \
+     if (sizeof (__value) == 1)						      \
+       __asm__ __volatile__ ("movb %%fs:%P2(%q3),%b0"				      \
+		     : "=q" (__value)					      \
+		     : "0" (0), "i" (offsetof (struct pthread, member[0])),   \
+		       "r" (idx));					      \
+     else if (sizeof (__value) == 4)					      \
+       __asm__ __volatile__ ("movl %%fs:%P1(,%q2,4),%0"				      \
+		     : "=r" (__value)					      \
+		     : "i" (offsetof (struct pthread, member[0])), "r" (idx));\
+     else								      \
+       {								      \
+	 if (sizeof (__value) != 8)					      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movq %%fs:%P1(,%q2,8),%q0"			      \
+		       : "=r" (__value)					      \
+		       : "i" (offsetof (struct pthread, member[0])),	      \
+			 "r" (idx));					      \
+       }								      \
+     __value; })
+
+
+/* Loading addresses of objects on x86-64 needs to be treated special
+   when generating PIC code.  */
+#ifdef __pic__
+# define IMM_MODE "nr"
+#else
+# define IMM_MODE "ir"
+#endif
+
+
+/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
+# define THREAD_SETMEM(descr, member, value) \
+  ({ if (sizeof (descr->member) == 1)					      \
+       __asm__ __volatile__ ("movb %b0,%%fs:%P1" :				      \
+		     : "iq" (value),					      \
+		       "i" (offsetof (struct pthread, member)));	      \
+     else if (sizeof (descr->member) == 4)				      \
+       __asm__ __volatile__ ("movl %0,%%fs:%P1" :				      \
+		     : IMM_MODE (value),				      \
+		       "i" (offsetof (struct pthread, member)));	      \
+     else								      \
+       {								      \
+	 if (sizeof (descr->member) != 8)				      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movq %q0,%%fs:%P1" :				      \
+		       : IMM_MODE ((unsigned long int) value),		      \
+			 "i" (offsetof (struct pthread, member)));	      \
+       }})
+
+
+/* Set member of the thread descriptor directly.  */
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+  ({ if (sizeof (descr->member[0]) == 1)				      \
+       __asm__ __volatile__ ("movb %b0,%%fs:%P1(%q2)" :				      \
+		     : "iq" (value),					      \
+		       "i" (offsetof (struct pthread, member[0])),	      \
+		       "r" (idx));					      \
+     else if (sizeof (descr->member[0]) == 4)				      \
+       __asm__ __volatile__ ("movl %0,%%fs:%P1(,%q2,4)" :			      \
+		     : IMM_MODE (value),				      \
+		       "i" (offsetof (struct pthread, member[0])),	      \
+		       "r" (idx));					      \
+     else								      \
+       {								      \
+	 if (sizeof (descr->member[0]) != 8)				      \
+	   /* There should not be any value with a size other than 1,	      \
+	      4 or 8.  */						      \
+	   abort ();							      \
+									      \
+	 __asm__ __volatile__ ("movq %q0,%%fs:%P1(,%q2,8)" :			      \
+		       : IMM_MODE ((unsigned long int) value),		      \
+			 "i" (offsetof (struct pthread, member[0])),	      \
+			 "r" (idx));					      \
+       }})
+
+
+/* Atomic compare and exchange on TLS, returning old value.  */
+# define THREAD_ATOMIC_CMPXCHG_VAL(descr, member, newval, oldval) \
+  ({ __typeof (descr->member) __ret;					      \
+     __typeof (oldval) __old = (oldval);				      \
+     if (sizeof (descr->member) == 4)					      \
+       __asm__ __volatile__ (LOCK_PREFIX "cmpxchgl %2, %%fs:%P3"		      \
+		     : "=a" (__ret)					      \
+		     : "0" (__old), "r" (newval),			      \
+		       "i" (offsetof (struct pthread, member)));	      \
+     else								      \
+       /* Not necessary for other sizes in the moment.  */		      \
+       abort ();							      \
+     __ret; })
+
+
+/* Atomic logical and.  */
+# define THREAD_ATOMIC_AND(descr, member, val) \
+  (void) ({ if (sizeof ((descr)->member) == 4)				      \
+	      __asm__ __volatile__ (LOCK_PREFIX "andl %1, %%fs:%P0"		      \
+			    :: "i" (offsetof (struct pthread, member)),	      \
+			       "ir" (val));				      \
+	    else							      \
+	      /* Not necessary for other sizes in the moment.  */	      \
+	      abort (); })
+
+
+/* Atomic set bit.  */
+# define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
+  (void) ({ if (sizeof ((descr)->member) == 4)				      \
+	      __asm__ __volatile__ (LOCK_PREFIX "orl %1, %%fs:%P0"		      \
+			    :: "i" (offsetof (struct pthread, member)),	      \
+			       "ir" (1 << (bit)));			      \
+	    else							      \
+	      /* Not necessary for other sizes in the moment.  */	      \
+	      abort (); })
+
+
+# define CALL_THREAD_FCT(descr) \
+  ({ void *__res;							      \
+     __asm__ __volatile__ ("movq %%fs:%P2, %%rdi\n\t"				      \
+		   "callq *%%fs:%P1"					      \
+		   : "=a" (__res)					      \
+		   : "i" (offsetof (struct pthread, start_routine)),	      \
+		     "i" (offsetof (struct pthread, arg))		      \
+		   : "di", "si", "cx", "dx", "r8", "r9", "r10", "r11",	      \
+		     "memory", "cc");					      \
+     __res; })
+
+
+/* Set the stack guard field in TCB head.  */
+# define THREAD_SET_STACK_GUARD(value) \
+    THREAD_SETMEM (THREAD_SELF, header.stack_guard, value)
+# define THREAD_COPY_STACK_GUARD(descr) \
+    ((descr)->header.stack_guard					      \
+     = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+
+
+/* Set the pointer guard field in the TCB head.  */
+# define THREAD_SET_POINTER_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+# define THREAD_COPY_POINTER_GUARD(descr) \
+  ((descr)->header.pointer_guard					      \
+   = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
+/* Get and set the global scope generation counter in the TCB head.  */
+# define THREAD_GSCOPE_FLAG_UNUSED 0
+# define THREAD_GSCOPE_FLAG_USED   1
+# define THREAD_GSCOPE_FLAG_WAIT   2
+# define THREAD_GSCOPE_RESET_FLAG() \
+  do									      \
+    { int __res;							      \
+      __asm__ __volatile__ ("xchgl %0, %%fs:%P1"				      \
+		    : "=r" (__res)					      \
+		    : "i" (offsetof (struct pthread, header.gscope_flag)),    \
+		      "0" (THREAD_GSCOPE_FLAG_UNUSED));			      \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				      \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);    \
+    }									      \
+  while (0)
+# define THREAD_GSCOPE_SET_FLAG() \
+  THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
+# define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+
+# ifdef SHARED
+/* Defined in dl-trampoline.S.  */
+extern void _dl_x86_64_save_sse (void);
+extern void _dl_x86_64_restore_sse (void);
+
+# define RTLD_CHECK_FOREIGN_CALL \
+  (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save) != 0)
+
+/* NB: Don't use the xchg operation because that would imply a lock
+   prefix which is expensive and unnecessary.  The cache line is also
+   not contested at all.  */
+#  define RTLD_ENABLE_FOREIGN_CALL \
+  int old_rtld_must_xmm_save = THREAD_GETMEM (THREAD_SELF,		      \
+					      header.rtld_must_xmm_save);     \
+  THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save, 1)
+
+#  define RTLD_PREPARE_FOREIGN_CALL \
+  do if (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save))	      \
+    {									      \
+      _dl_x86_64_save_sse ();						      \
+      THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save, 0);	      \
+    }									      \
+  while (0)
+
+#  define RTLD_FINALIZE_FOREIGN_CALL \
+  do {									      \
+    if (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save) == 0)	      \
+      _dl_x86_64_restore_sse ();					      \
+    THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save,		      \
+		   old_rtld_must_xmm_save);				      \
+  } while (0)
+# endif
+
+
+#endif /* __ASSEMBLER__ */
+#endif /* L4 tls disable */
+#endif	/* tls.h */
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/stdlib/malloc-standard/malloc.h b/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/stdlib/malloc-standard/malloc.h
index f15e44e00..01832d0fc 100644
--- a/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/stdlib/malloc-standard/malloc.h
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/stdlib/malloc-standard/malloc.h
@@ -24,7 +24,9 @@
 #include <sys/mman.h>
 #include <bits/uClibc_mutex.h>
 
+#ifndef L4_MINIMAL_LIBC
 #include <l4/sys/consts.h>
+#endif
 
 
 __UCLIBC_MUTEX_EXTERN(__malloc_lock);
@@ -137,8 +139,14 @@ __UCLIBC_MUTEX_EXTERN(__malloc_lock);
 //#  include <unistd.h>
 //#  define malloc_getpagesize sysconf(_SC_PAGESIZE)
 //#else /* just guess */
-//#  define malloc_getpagesize (4096)
+#ifdef L4_MINIMAL_LIBC
+#  define malloc_getpagesize (4096)
+#else
 #  define malloc_getpagesize (L4_PAGESIZE)
+#if L4_PAGESIZE != 4096
+# error Adapt this code for minimal libc version
+#endif
+#endif
 #endif
 
 
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/sysdeps/linux/common/getdents.c b/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/sysdeps/linux/common/getdents.c
index f772cdfb8..4a2a12019 100644
--- a/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/sysdeps/linux/common/getdents.c
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-all/libc/sysdeps/linux/common/getdents.c
@@ -137,7 +137,7 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
     return (char *) dp - buf;
 }
 
-#elif __WORDSIZE == 32
+#elif __WORDSIZE == 32 && defined __UCLIBC_HAS_LFS__
 
 extern __typeof(__getdents) __getdents64 /* attribute_hidden*/;
 ssize_t __getdents (int fd, char *buf, size_t nbytes)
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-amd64/include/bits/uClibc_config.h b/l4/pkg/uclibc/lib/uclibc/ARCH-amd64/include/bits/uClibc_config.h
new file mode 100644
index 000000000..514de90b8
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-amd64/include/bits/uClibc_config.h
@@ -0,0 +1,291 @@
+#if !defined __FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#ifndef libc_hidden_proto
+#define libc_hidden_proto(x)
+#endif
+#ifndef libm_hidden_proto
+#define libm_hidden_proto(x)
+#endif
+#ifndef librt_hidden_proto
+#define librt_hidden_proto(x)
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+/* Automatically generated make config: don't edit */
+/* Sun Feb 10 18:15:17 2008 */
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_avr32__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#define __TARGET_x86_64__ 1
+#undef __TARGET_xtensa__
+
+/* Target Architecture Features and Options */
+#define __TARGET_ARCH__ "x86_64"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#define __CONFIG_GENERIC_386__ 1
+#undef __CONFIG_386__
+#undef __CONFIG_486__
+#undef __CONFIG_586__
+#undef __CONFIG_586MMX__
+#undef __CONFIG_686__
+#undef __CONFIG_PENTIUMII__
+#undef __CONFIG_PENTIUMIII__
+#undef __CONFIG_PENTIUM4__
+#undef __CONFIG_K6__
+#undef __CONFIG_K7__
+#undef __CONFIG_ELAN__
+#undef __CONFIG_CRUSOE__
+#undef __CONFIG_WINCHIPC6__
+#undef __CONFIG_WINCHIP2__
+#undef __CONFIG_CYRIXIII__
+#undef __CONFIG_NEHEMIAH__
+#define __TARGET_SUBARCH__ ""
+
+/* Using ELF file format */
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+/* Using Little Endian */
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+/* FM3: For arm. Does not influence x86. */
+#define __UCLIBC_HAS_SOFT_FLOAT__ 1
+#define __HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __UCLIBC_HAS_LONG_DOUBLE_MATH__ 1
+#define __KERNEL_SOURCE__ "/home/linux"
+#define __C_SYMBOL_PREFIX__ ""
+#define __HAVE_DOT_CONFIG__ 1
+
+/*
+ * General Library Settings
+ */
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __HAVE_NO_SHARED__
+#define __HAVE_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#undef __BUILD_UCLIBC_LDSO__
+#undef __DL_FINI_CRT_COMPAT__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __HAS_NO_THREADS__
+#ifndef L4_MINIMAL_LIBC
+#define __UCLIBC_HAS_THREADS__ 1
+#define __LINUXTHREADS_OLD__ 1
+#undef __UCLIBC_HAS_TLS__
+#undef __UCLIBC_HAS_THREADS_NATIVE__
+
+#define __UCLIBC_HAS_LFS__ 1
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+
+/*
+ * Networking Support
+ */
+#define __UCLIBC_HAS_COMPAT_RES_STATE__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#else /* The minimal version, w/o threads etc. */
+
+#define __HAS_NO_THREADS__ 1
+#undef __UCLIBC_HAS_LFS__
+#undef __UCLIBC_STATIC_LDCONFIG__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_COMPAT_RES_STATE__
+#undef __UCLIBC_HAS_IPV4__
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#undef __UCLIBC_HAS_ERRNO_MESSAGES__
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#undef __UCLIBC_HAS_REGEX__
+#undef __UCLIBC_HAS_REGEX_OLD__
+#undef __UCLIBC_HAS_FNMATCH__
+#undef __UCLIBC_HAS_FNMATCH_OLD__
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#endif
+
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__
+#define __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_SUSV4_LEGACY__ 1
+#undef __HAS_SHADOW__
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#undef __UCLIBC_HAS_TZ_FILE__
+#undef __UCLIBC_HAS_TZ_FILE_READ_MANY__
+#undef __UCLIBC_TZ_FILE_PATH__
+
+/* Advanced Library Settings */
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+#define __UCLIBC_HAS_REALTIME__
+#define __UCLIBC_HAS_ADVANCED_REALTIME__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_IPV6__
+#undef __UCLIBC_HAS_RPC__
+#undef __UCLIBC_USE_NETLINK__
+
+
+/* Library Installation Options */
+#define __SYSTEM_LDSO__ "/lib/ld-linux.so.2"
+#define __RUNTIME_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/"
+#define __DEVEL_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+/*
+ * uClibc security related options
+ */
+#undef __UCLIBC_SECURITY__
+
+
+/* uClibc development/debugging options */
+#define __CROSS_COMPILER_PREFIX__ ""
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#define __DOSTRIP__ 1
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+//#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#define __UCLIBC_MALLOC_DEBUGGING__ 1
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-arm/include/bits/uClibc_config.h b/l4/pkg/uclibc/lib/uclibc/ARCH-arm/include/bits/uClibc_config.h
new file mode 100644
index 000000000..7e7e54290
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-arm/include/bits/uClibc_config.h
@@ -0,0 +1,291 @@
+#if !defined __FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#ifndef libc_hidden_proto
+#define libc_hidden_proto(x)
+#endif
+#ifndef libm_hidden_proto
+#define libm_hidden_proto(x)
+#endif
+#ifndef librt_hidden_proto
+#define librt_hidden_proto(x)
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+/* Automatically generated make config: don't edit */
+/* Sun Feb 10 18:15:17 2008 */
+#undef __TARGET_alpha__
+#define __TARGET_arm__ 1
+#undef __TARGET_avr32__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+#undef __TARGET_xtensa__
+
+/* Target Architecture Features and Options */
+#define __TARGET_ARCH__ "arm"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#undef __CONFIG_GENERIC_386__
+#undef __CONFIG_386__
+#undef __CONFIG_486__
+#undef __CONFIG_586__
+#undef __CONFIG_586MMX__
+#undef __CONFIG_686__
+#undef __CONFIG_PENTIUMII__
+#undef __CONFIG_PENTIUMIII__
+#undef __CONFIG_PENTIUM4__
+#undef __CONFIG_K6__
+#undef __CONFIG_K7__
+#undef __CONFIG_ELAN__
+#undef __CONFIG_CRUSOE__
+#undef __CONFIG_WINCHIPC6__
+#undef __CONFIG_WINCHIP2__
+#undef __CONFIG_CYRIXIII__
+#undef __CONFIG_NEHEMIAH__
+#define __TARGET_SUBARCH__ ""
+
+/* Using ELF file format */
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+/* Using Little Endian */
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+/* FM3: For arm. Does not influence x86. */
+#define __UCLIBC_HAS_SOFT_FLOAT__ 1
+#define __HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __UCLIBC_HAS_LONG_DOUBLE_MATH__ 1
+#define __KERNEL_SOURCE__ "/home/linux"
+#define __C_SYMBOL_PREFIX__ ""
+#define __HAVE_DOT_CONFIG__ 1
+
+/*
+ * General Library Settings
+ */
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __HAVE_NO_SHARED__
+#define __HAVE_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#undef __BUILD_UCLIBC_LDSO__
+#undef __DL_FINI_CRT_COMPAT__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __HAS_NO_THREADS__
+#ifndef L4_MINIMAL_LIBC
+#define __UCLIBC_HAS_THREADS__ 1
+#define __LINUXTHREADS_OLD__ 1
+#undef __UCLIBC_HAS_TLS__
+#undef __UCLIBC_HAS_THREADS_NATIVE__
+
+#define __UCLIBC_HAS_LFS__ 1
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+
+/*
+ * Networking Support
+ */
+#define __UCLIBC_HAS_COMPAT_RES_STATE__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#else /* The minimal version, w/o threads etc. */
+
+#define __HAS_NO_THREADS__ 1
+#undef __UCLIBC_HAS_LFS__
+#undef __UCLIBC_STATIC_LDCONFIG__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_COMPAT_RES_STATE__
+#undef __UCLIBC_HAS_IPV4__
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#undef __UCLIBC_HAS_ERRNO_MESSAGES__
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#undef __UCLIBC_HAS_REGEX__
+#undef __UCLIBC_HAS_REGEX_OLD__
+#undef __UCLIBC_HAS_FNMATCH__
+#undef __UCLIBC_HAS_FNMATCH_OLD__
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#endif
+
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__
+#define __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_SUSV4_LEGACY__ 1
+#undef __HAS_SHADOW__
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#undef __UCLIBC_HAS_TZ_FILE__
+#undef __UCLIBC_HAS_TZ_FILE_READ_MANY__
+#undef __UCLIBC_TZ_FILE_PATH__
+
+/* Advanced Library Settings */
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+#define __UCLIBC_HAS_REALTIME__
+#define __UCLIBC_HAS_ADVANCED_REALTIME__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_IPV6__
+#undef __UCLIBC_HAS_RPC__
+#undef __UCLIBC_USE_NETLINK__
+
+
+/* Library Installation Options */
+#define __SYSTEM_LDSO__ "/lib/ld-linux.so.2"
+#define __RUNTIME_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/"
+#define __DEVEL_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+/*
+ * uClibc security related options
+ */
+#undef __UCLIBC_SECURITY__
+
+
+/* uClibc development/debugging options */
+#define __CROSS_COMPILER_PREFIX__ ""
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#define __DOSTRIP__ 1
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+//#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#define __UCLIBC_MALLOC_DEBUGGING__ 1
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-ppc32/include/bits/uClibc_config.h b/l4/pkg/uclibc/lib/uclibc/ARCH-ppc32/include/bits/uClibc_config.h
new file mode 100644
index 000000000..ac92b3d8f
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-ppc32/include/bits/uClibc_config.h
@@ -0,0 +1,290 @@
+#if !defined __FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#ifndef libc_hidden_proto
+#define libc_hidden_proto(x)
+#endif
+#ifndef libm_hidden_proto
+#define libm_hidden_proto(x)
+#endif
+#ifndef librt_hidden_proto
+#define librt_hidden_proto(x)
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+/* Automatically generated make config: don't edit */
+/* Sun Feb 10 18:15:17 2008 */
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_avr32__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#define __TARGET_powerpc__ 1
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+#undef __TARGET_xtensa__
+
+/* Target Architecture Features and Options */
+#define __TARGET_ARCH__ "powerpc"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#undef __CONFIG_GENERIC_386__
+#undef __CONFIG_386__
+#undef __CONFIG_486__
+#undef __CONFIG_586__
+#undef __CONFIG_586MMX__
+#undef __CONFIG_686__
+#undef __CONFIG_PENTIUMII__
+#undef __CONFIG_PENTIUMIII__
+#undef __CONFIG_PENTIUM4__
+#undef __CONFIG_K6__
+#undef __CONFIG_K7__
+#undef __CONFIG_ELAN__
+#undef __CONFIG_CRUSOE__
+#undef __CONFIG_WINCHIPC6__
+#undef __CONFIG_WINCHIP2__
+#undef __CONFIG_CYRIXIII__
+#undef __CONFIG_NEHEMIAH__
+#define __TARGET_SUBARCH__ ""
+
+/* Using ELF file format */
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+/* Using Little Endian */
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+#define __UCLIBC_HAS_SOFT_FLOAT__ 1
+#define __HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __UCLIBC_HAS_LONG_DOUBLE_MATH__ 1
+#define __KERNEL_SOURCE__ "/home/linux"
+#define __C_SYMBOL_PREFIX__ ""
+#define __HAVE_DOT_CONFIG__ 1
+
+/*
+ * General Library Settings
+ */
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __HAVE_NO_SHARED__
+#define __HAVE_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#undef __BUILD_UCLIBC_LDSO__
+#undef __DL_FINI_CRT_COMPAT__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __HAS_NO_THREADS__
+#ifndef L4_MINIMAL_LIBC
+#define __UCLIBC_HAS_THREADS__ 1
+#define __LINUXTHREADS_OLD__ 1
+#undef __UCLIBC_HAS_TLS__
+#undef __UCLIBC_HAS_THREADS_NATIVE__
+
+#define __UCLIBC_HAS_LFS__ 1
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+
+/*
+ * Networking Support
+ */
+#define __UCLIBC_HAS_COMPAT_RES_STATE__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#else /* The minimal version, w/o threads etc. */
+
+#define __HAS_NO_THREADS__ 1
+#undef __UCLIBC_HAS_LFS__
+#undef __UCLIBC_STATIC_LDCONFIG__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_COMPAT_RES_STATE__
+#undef __UCLIBC_HAS_IPV4__
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#undef __UCLIBC_HAS_ERRNO_MESSAGES__
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#undef __UCLIBC_HAS_REGEX__
+#undef __UCLIBC_HAS_REGEX_OLD__
+#undef __UCLIBC_HAS_FNMATCH__
+#undef __UCLIBC_HAS_FNMATCH_OLD__
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#endif
+
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__
+#define __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_SUSV4_LEGACY__ 1
+#undef __HAS_SHADOW__
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#undef __UCLIBC_HAS_TZ_FILE__
+#undef __UCLIBC_HAS_TZ_FILE_READ_MANY__
+#undef __UCLIBC_TZ_FILE_PATH__
+
+/* Advanced Library Settings */
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+#define __UCLIBC_HAS_REALTIME__
+#define __UCLIBC_HAS_ADVANCED_REALTIME__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_IPV6__
+#undef __UCLIBC_HAS_RPC__
+#undef __UCLIBC_USE_NETLINK__
+
+
+/* Library Installation Options */
+#define __SYSTEM_LDSO__ "/lib/ld-linux.so.2"
+#define __RUNTIME_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/"
+#define __DEVEL_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+/*
+ * uClibc security related options
+ */
+#undef __UCLIBC_SECURITY__
+
+
+/* uClibc development/debugging options */
+#define __CROSS_COMPILER_PREFIX__ ""
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#define __DOSTRIP__ 1
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+//#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#define __UCLIBC_MALLOC_DEBUGGING__ 1
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/bits/uClibc_config.h b/l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/bits/uClibc_config.h
new file mode 100644
index 000000000..709cada63
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/bits/uClibc_config.h
@@ -0,0 +1,290 @@
+#if !defined __FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#ifndef libc_hidden_proto
+#define libc_hidden_proto(x)
+#endif
+#ifndef libm_hidden_proto
+#define libm_hidden_proto(x)
+#endif
+#ifndef librt_hidden_proto
+#define librt_hidden_proto(x)
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+/* Automatically generated make config: don't edit */
+/* Sun Feb 10 18:15:17 2008 */
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_avr32__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#define __TARGET_sparc__ 1
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+#undef __TARGET_xtensa__
+
+/* Target Architecture Features and Options */
+#define __TARGET_ARCH__ "sparc"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#undef __CONFIG_GENERIC_386__
+#undef __CONFIG_386__
+#undef __CONFIG_486__
+#undef __CONFIG_586__
+#undef __CONFIG_586MMX__
+#undef __CONFIG_686__
+#undef __CONFIG_PENTIUMII__
+#undef __CONFIG_PENTIUMIII__
+#undef __CONFIG_PENTIUM4__
+#undef __CONFIG_K6__
+#undef __CONFIG_K7__
+#undef __CONFIG_ELAN__
+#undef __CONFIG_CRUSOE__
+#undef __CONFIG_WINCHIPC6__
+#undef __CONFIG_WINCHIP2__
+#undef __CONFIG_CYRIXIII__
+#undef __CONFIG_NEHEMIAH__
+#define __TARGET_SUBARCH__ ""
+
+/* Using ELF file format */
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+/* Using Little Endian */
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+#define __UCLIBC_HAS_SOFT_FLOAT__ 1
+#define __HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __UCLIBC_HAS_LONG_DOUBLE_MATH__ 1
+#define __KERNEL_SOURCE__ "/home/linux"
+#define __C_SYMBOL_PREFIX__ ""
+#define __HAVE_DOT_CONFIG__ 1
+
+/*
+ * General Library Settings
+ */
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __HAVE_NO_SHARED__
+#define __HAVE_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#undef __BUILD_UCLIBC_LDSO__
+#undef __DL_FINI_CRT_COMPAT__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __HAS_NO_THREADS__
+#ifndef L4_MINIMAL_LIBC
+#define __UCLIBC_HAS_THREADS__ 1
+#define __LINUXTHREADS_OLD__ 1
+#undef __UCLIBC_HAS_TLS__
+#undef __UCLIBC_HAS_THREADS_NATIVE__
+
+#define __UCLIBC_HAS_LFS__ 1
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+
+/*
+ * Networking Support
+ */
+#define __UCLIBC_HAS_COMPAT_RES_STATE__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#else /* The minimal version, w/o threads etc. */
+
+#define __HAS_NO_THREADS__ 1
+#undef __UCLIBC_HAS_LFS__
+#undef __UCLIBC_STATIC_LDCONFIG__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_COMPAT_RES_STATE__
+#undef __UCLIBC_HAS_IPV4__
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#undef __UCLIBC_HAS_ERRNO_MESSAGES__
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#undef __UCLIBC_HAS_REGEX__
+#undef __UCLIBC_HAS_REGEX_OLD__
+#undef __UCLIBC_HAS_FNMATCH__
+#undef __UCLIBC_HAS_FNMATCH_OLD__
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#endif
+
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__
+#define __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_SUSV4_LEGACY__ 1
+#undef __HAS_SHADOW__
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#undef __UCLIBC_HAS_TZ_FILE__
+#undef __UCLIBC_HAS_TZ_FILE_READ_MANY__
+#undef __UCLIBC_TZ_FILE_PATH__
+
+/* Advanced Library Settings */
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+#define __UCLIBC_HAS_REALTIME__
+#define __UCLIBC_HAS_ADVANCED_REALTIME__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_IPV6__
+#undef __UCLIBC_HAS_RPC__
+#undef __UCLIBC_USE_NETLINK__
+
+
+/* Library Installation Options */
+#define __SYSTEM_LDSO__ "/lib/ld-linux.so.2"
+#define __RUNTIME_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/"
+#define __DEVEL_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+/*
+ * uClibc security related options
+ */
+#undef __UCLIBC_SECURITY__
+
+
+/* uClibc development/debugging options */
+#define __CROSS_COMPILER_PREFIX__ ""
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#define __DOSTRIP__ 1
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+//#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#define __UCLIBC_MALLOC_DEBUGGING__ 1
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/linux/sockios.h b/l4/pkg/uclibc/lib/uclibc/ARCH-sparc/include/linux/sockios.h
new file mode 100644
index 000000000..e69de29bb
diff --git a/l4/pkg/uclibc/lib/uclibc/ARCH-x86/include/bits/uClibc_config.h b/l4/pkg/uclibc/lib/uclibc/ARCH-x86/include/bits/uClibc_config.h
new file mode 100644
index 000000000..27f7a99a4
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/ARCH-x86/include/bits/uClibc_config.h
@@ -0,0 +1,291 @@
+#if !defined __FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#ifndef libc_hidden_proto
+#define libc_hidden_proto(x)
+#endif
+#ifndef libm_hidden_proto
+#define libm_hidden_proto(x)
+#endif
+#ifndef librt_hidden_proto
+#define librt_hidden_proto(x)
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+/* Automatically generated make config: don't edit */
+/* Sun Feb 10 18:15:17 2008 */
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_avr32__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#define __TARGET_i386__ 1
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+#undef __TARGET_xtensa__
+
+/* Target Architecture Features and Options */
+#define __TARGET_ARCH__ "i386"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#define __CONFIG_GENERIC_386__ 1
+#undef __CONFIG_386__
+#undef __CONFIG_486__
+#undef __CONFIG_586__
+#undef __CONFIG_586MMX__
+#undef __CONFIG_686__
+#undef __CONFIG_PENTIUMII__
+#undef __CONFIG_PENTIUMIII__
+#undef __CONFIG_PENTIUM4__
+#undef __CONFIG_K6__
+#undef __CONFIG_K7__
+#undef __CONFIG_ELAN__
+#undef __CONFIG_CRUSOE__
+#undef __CONFIG_WINCHIPC6__
+#undef __CONFIG_WINCHIP2__
+#undef __CONFIG_CYRIXIII__
+#undef __CONFIG_NEHEMIAH__
+#define __TARGET_SUBARCH__ ""
+
+/* Using ELF file format */
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+/* Using Little Endian */
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+/* FM3: For arm. Does not influence x86. */
+#define __UCLIBC_HAS_SOFT_FLOAT__ 1
+#define __HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __UCLIBC_HAS_LONG_DOUBLE_MATH__ 1
+#define __KERNEL_SOURCE__ "/home/linux"
+#define __C_SYMBOL_PREFIX__ ""
+#define __HAVE_DOT_CONFIG__ 1
+
+/*
+ * General Library Settings
+ */
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __HAVE_NO_SHARED__
+#define __HAVE_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#undef __BUILD_UCLIBC_LDSO__
+#undef __DL_FINI_CRT_COMPAT__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __HAS_NO_THREADS__
+#ifndef L4_MINIMAL_LIBC
+#define __UCLIBC_HAS_THREADS__ 1
+#define __LINUXTHREADS_OLD__ 1
+#define __UCLIBC_HAS_TLS__ 1
+#define __UCLIBC_HAS_THREADS_NATIVE__ 1
+
+#define __UCLIBC_HAS_LFS__ 1
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+
+/*
+ * Networking Support
+ */
+#define __UCLIBC_HAS_COMPAT_RES_STATE__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#else /* The minimal version, w/o threads etc. */
+
+#define __HAS_NO_THREADS__ 1
+#undef __UCLIBC_HAS_LFS__
+#undef __UCLIBC_STATIC_LDCONFIG__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_COMPAT_RES_STATE__
+#undef __UCLIBC_HAS_IPV4__
+
+/*
+ * String and Stdio Support
+ */
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#undef __UCLIBC_HAS_ERRNO_MESSAGES__
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+/* Big and Tall */
+#undef __UCLIBC_HAS_REGEX__
+#undef __UCLIBC_HAS_REGEX_OLD__
+#undef __UCLIBC_HAS_FNMATCH__
+#undef __UCLIBC_HAS_FNMATCH_OLD__
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+#endif
+
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__
+#define __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_SUSV4_LEGACY__ 1
+#undef __HAS_SHADOW__
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#undef __UCLIBC_HAS_TZ_FILE__
+#undef __UCLIBC_HAS_TZ_FILE_READ_MANY__
+#undef __UCLIBC_TZ_FILE_PATH__
+
+/* Advanced Library Settings */
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+#define __UCLIBC_HAS_REALTIME__
+#define __UCLIBC_HAS_ADVANCED_REALTIME__
+
+/*
+ * Networking Support
+ */
+#undef __UCLIBC_HAS_IPV6__
+#undef __UCLIBC_HAS_RPC__
+#undef __UCLIBC_USE_NETLINK__
+
+
+/* Library Installation Options */
+#define __SYSTEM_LDSO__ "/lib/ld-linux.so.2"
+#define __RUNTIME_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/"
+#define __DEVEL_PREFIX__ "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+
+/*
+ * uClibc security related options
+ */
+#undef __UCLIBC_SECURITY__
+
+
+/* uClibc development/debugging options */
+#define __CROSS_COMPILER_PREFIX__ ""
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#define __DOSTRIP__ 1
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+//#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#define __UCLIBC_MALLOC_DEBUGGING__ 1
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
diff --git a/l4/pkg/uclibc/lib/uclibc/Make.rules b/l4/pkg/uclibc/lib/uclibc/Make.rules
new file mode 100644
index 000000000..f533b45ca
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/Make.rules
@@ -0,0 +1,56 @@
+# vi:ft=make
+LIBCSRC_DIR ?= $(SRC_DIR)
+
+DEFINES		+= -DL4_THREAD_SAFE -DL4_NO_RTTI=1
+DEFINES_x86-l4f += -DUSE_TLS=1
+TARGET          := libuc_c.a libuc_c.so libuc_c_nonshared.p.a
+PC_FILENAME     := libc
+PC_LIBS         := -luc_c
+
+include $(LIBCSRC_DIR)/make_vars.mk
+include $(LIBCSRC_DIR)/make_rules.mk
+include $(LIBCSRC_DIR)/contrib_files.mk
+
+LDFLAGS         = -z combreloc -z relro --sort-common \
+		  --warn-common 
+
+LDFLAGS_NONGOLD = --warn-once --sort-section=alignment
+LDFLAGS        += $(LDFLAGS_NONGOLD)
+
+LDFLAGS_libuc_c.so := -init __uClibc_init
+
+DIRS := libc/string libc/inet libc/pwd_grp libc/unistd libc/signal \
+        libc/stdlib libc/stdlib/malloc-standard libc/stdio \
+	libc/misc libc/sysdeps/linux libc/termios libm libcrypt
+
+SUB_MODULES := wchar large_file
+
+# process all sources for the libc
+$(eval $(call PROCESS_src_lists, $(DIRS), $(SUB_MODULES)))
+# libm stuff
+$(eval $(call PROCESS_template_src, libm, float double))
+
+SRC_C_libuc_c.so          += $(UCLIBC_SRC_C) $(UCLIBC_SRC_C_libuc_c.so)
+SRC_C_libuc_c.a           += $(UCLIBC_SRC_C) $(UCLIBC_SRC_C_libuc_c.a)
+SRC_S_libuc_c.so          += $(UCLIBC_SRC_S) $(UCLIBC_SRC_S_libuc_c.so)
+SRC_S_libuc_c.a           += $(UCLIBC_SRC_S) $(UCLIBC_SRC_S_libuc_c.a)
+SRC_CC_libuc_c.so         += $(UCLIBC_SRC_CC) $(UCLIBC_SRC_CC_libuc_c.so)
+SRC_CC_libuc_c.a          += $(UCLIBC_SRC_CC) $(UCLIBC_SRC_CC_libuc_c.a)
+
+SRC_C_libuc_c.so          += $(PTHOBJ_PFX)/forward.c $(PTHOBJ_PFX)/libc_pthread_init.c
+SRC_CC_libuc_c.a_x86-l4f  += $(PTHOBJ_PFX)/sysdeps/generic/libc-tls.cc
+SRC_C_libuc_c.a_x86-l4f   += $(PTHOBJ_PFX)/sysdeps/generic/dl-tls.c
+
+SRC_C_libuc_c_nonshared.p.a += libc/stdlib/atexit.c
+SRC_C_libuc_c.a             += libc/stdlib/atexit.c
+
+SRC_C_libuc_c.so_x86-l4f    += libc/misc/pthread/tsd.c
+SRC_C_libuc_c.a_x86-l4f     += libc/misc/pthread/tsd.c
+
+CXXFLAGS_$(PTHOBJ_PFX)/sysdeps/generic/libc-tls.cc += -fno-rtti -fno-exceptions
+
+CPPFLAGS_libc-tls.cc += $(LDSO_INC)
+CPPFLAGS_dl-tls.c += $(LDSO_INC)
+
+.general.d: $(LIBCSRC_DIR_ABS)/Make.rules $(LIBCSRC_DIR)/contrib_files.mk
+
diff --git a/l4/pkg/uclibc/lib/uclibc/Makefile b/l4/pkg/uclibc/lib/uclibc/Makefile
new file mode 100644
index 000000000..2514fabac
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/Makefile
@@ -0,0 +1,6 @@
+PKGDIR ?= ../..
+L4DIR  ?= $(PKGDIR)/../..
+
+include $(L4DIR)/mk/Makeconf
+include src_rules.mk
+
diff --git a/l4/pkg/uclibc/lib/uclibc/contrib_files.mk b/l4/pkg/uclibc/lib/uclibc/contrib_files.mk
new file mode 100644
index 000000000..0bada64ea
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/contrib_files.mk
@@ -0,0 +1,702 @@
+
+define SRC_libc/sysdeps/linux
+  setjmp
+  bsd-setjmp
+  bsd-_setjmp
+  creat
+  longjmp
+  __longjmp
+  getdents
+  getsid
+endef
+
+define SRC_libc/sysdeps/linux_large_file
+  creat64
+endef
+
+SRC_libc/sysdeps/linux_arm += aeabi_atexit
+
+define SRC_libc/termios
+  isatty
+  tcgetattr
+  tcgetpgrp
+  tcgetsid
+  tcsetattr
+  tcsetpgrp
+  ttyname
+endef
+
+define SRC_libc/stdlib
+  __cxa_atexit
+  __exit_handler
+  __fp_range_check
+  __strtofpmax
+  __uc_malloc
+  _stdlib_mb_cur_max
+  _stdlib_strto_l
+  _stdlib_strto_ll
+  _strtod
+  abort
+  abs
+  atof
+  atoi
+  atol
+  atoll
+  bsearch
+  div
+  drand48-iter
+  drand48
+  drand48_r
+  erand48
+  erand48_r
+  exit
+  getenv
+  jrand48
+  jrand48_r
+  labs
+  ldiv
+  llabs
+  lldiv
+  lrand48
+  lrand48_r
+  mkstemp
+  nrand48
+  nrand48_r
+  on_exit
+  posix_memalign
+  qsort
+  rand
+  rand_r
+  random
+  random_r
+  realpath
+  setenv
+  stdlib
+  strtod
+  strtof
+  strtol
+  strtold
+  strtoll
+  strtoul
+  strtoull
+endef
+
+define SRC_libc/stdlib/malloc-standard
+  calloc
+  free
+  mallinfo
+  malloc
+  mallopt
+  memalign
+  realloc
+endef
+
+define SRC_libc/stdlib/malloc-simple
+  alloc
+  calloc
+  free
+  malloc
+  memalign
+  realloc
+endef
+
+define SRC_libc/stdlib_wchar
+  wcstombs
+  mblen
+  mbstowcs
+endef
+
+define SRC_libc/string
+  basename
+  dirname
+  ffs
+  memccpy
+  stpcpy
+  stpncpy
+  strcasecmp
+  strcasestr
+  strdup
+  strerror
+  __xpg_strerror_r
+  _string_syserrmsgs
+  __glibc_strerror_r
+  _string_syssigmsgs
+  sys_siglist
+  strsignal
+  psignal
+  __xpg_basename
+  strlcat
+  strlcpy
+  sys_errlist
+  strndup
+  strncasecmp
+  strtok
+  bcopy
+  bzero
+  memchr
+  memcpy
+  memmove
+  memset
+  strcat
+  strchr
+  strcmp
+  strcpy
+  strlen
+  strncat
+  strncmp
+  strncpy
+  strnlen
+  strrchr
+  memcmp
+  memmem
+  mempcpy
+  memrchr
+  rawmemchr
+  strchrnul
+  strcspn
+  strsep
+  strspn
+  strstr
+  strtok_r
+  strpbrk
+endef
+
+define SRC_libc/string_wchar
+  wcsnlen
+  wcslen
+  wmemcpy
+endef
+
+SRC_libc/string_arm := _memcpy
+
+define SRC_libc/misc
+  assert/__assert
+  ctype/ctype
+  ctype/isalnum
+  ctype/isalpha
+  ctype/isblank
+  ctype/iscntrl
+  ctype/isdigit
+  ctype/isgraph
+  ctype/islower
+  ctype/isprint
+  ctype/ispunct
+  ctype/isspace
+  ctype/isupper
+  ctype/isxdigit
+  ctype/tolower
+  ctype/toupper
+  ctype/__C_ctype_b
+  ctype/__C_ctype_tolower
+  ctype/__C_ctype_toupper
+  ctype/__ctype_b_loc
+  ctype/__ctype_tolower_loc
+  ctype/__ctype_toupper_loc
+  ctype/__ctype_assert
+  ctype/isctype
+  dirent/alphasort
+  dirent/closedir
+  dirent/dirfd
+  dirent/opendir
+  dirent/readdir
+  dirent/readdir_r
+  dirent/rewinddir
+  dirent/scandir
+  dirent/seekdir
+  dirent/telldir
+  error/err
+  fnmatch/fnmatch
+  glob/glob
+  internals/errno
+  internals/__errno_location
+  internals/__h_errno_location
+  internals/__uClibc_main
+  internals/parse_config
+  internals/tempname
+  locale/locale
+  locale/localeconv
+  locale/nl_langinfo
+  locale/setlocale
+  search/hcreate_r
+  search/hdestroy_r
+  search/hsearch
+  search/hsearch_r
+  search/insque
+  search/insremque
+  search/lfind
+  search/lsearch
+  search/remque
+  search/tdelete
+  search/tdestroy
+  search/tfind
+  search/tsearch
+  search/twalk
+  time/time
+  time/asctime
+  time/asctime_r
+  time/ctime
+  time/ctime_r
+  time/ftime
+  time/gmtime
+  time/gmtime_r
+  time/localtime
+  time/localtime_r
+  time/mktime
+  time/strftime
+  time/strptime
+  time/tzset
+  time/_time_t2tm
+  time/__time_tm
+  time/_time_mktime
+  time/dysize
+  time/timegm
+  time/_time_mktime_tzi
+  time/_time_localtime_tzi
+  time/difftime
+  wordexp/wordexp
+  elf/dl-iterate-phdr
+endef
+
+define SRC_libc/misc_large_file
+  dirent/alphasort64
+  dirent/readdir64
+  dirent/readdir64_r
+  dirent/scandir64
+  glob/glob64
+endef
+
+define SRC_libc/misc_libuc_c.a
+  elf/dl-support
+  elf/dl-core
+endef
+
+SRC_libc/misc_libuc_c_minimal.a = $(SRC_libc/misc_libuc_c.a)
+
+define SRC_libc/misc_wchar
+  wchar/btowc
+  wchar/mbrlen
+  wchar/mbrtowc
+  wchar/mbsnrtowcs
+  wchar/mbsrtowcs
+  wchar/wchar
+  wchar/wcrtomb
+  wchar/wcsnrtombs
+  wchar/wcsrtombs
+  wctype/iswctype
+  wctype/wctype
+  wctype/_wctype
+endef
+
+define SRC_libc/stdio
+  __fsetlocking
+  _adjust_pos
+  _cs_funcs
+  _fopen
+  _fpmaxtostr
+  _fwrite
+  _READ
+  _WRITE
+  _load_inttype
+  _rfill
+  _stdio
+  _store_inttype
+  _trans2r
+  _trans2w
+  _uintmaxtostr
+  _wcommit
+  asprintf
+  clearerr
+  clearerr.__DO_UNLOCKED
+  dprintf
+  fclose
+  fcloseall
+  fdopen
+  feof
+  feof.__DO_UNLOCKED
+  ferror
+  ferror.__DO_UNLOCKED
+  fflush
+  fflush.__DO_UNLOCKED
+  fgetc
+  fgetc.__DO_UNLOCKED
+  fgetpos
+  fgets
+  fgets.__DO_UNLOCKED
+  fileno
+  fileno.__DO_UNLOCKED
+  flockfile
+  fopen
+  freopen
+  fputs
+  fputs.__DO_UNLOCKED
+  fputc
+  fputc.__DO_UNLOCKED
+  fprintf
+  fread
+  fread.__DO_UNLOCKED
+  fseeko
+  fsetpos
+  ftello
+  funlockfile
+  fwrite
+  fwrite.__DO_UNLOCKED
+  getdelim
+  getline
+  perror
+  printf
+  putchar
+  putchar.__DO_UNLOCKED
+  puts
+  remove
+  rewind
+  _scanf
+  vfscanf
+  __scan_cookie
+  __psfs_parse_spec
+  __psfs_do_numeric
+  scanf
+  sscanf
+  fscanf
+  vscanf
+  vsscanf
+  setvbuf
+  setbuf
+  setbuffer
+  setlinebuf
+  snprintf
+  sprintf
+  ungetc
+  vasprintf
+  vdprintf
+  _vfprintf
+  _vfprintf_internal
+  vfprintf
+  _ppfs_init
+  _ppfs_prepargs
+  _ppfs_setargs
+  _ppfs_parsespec
+  vsnprintf
+  vsprintf
+  vprintf
+endef
+
+define SRC_libc/stdio_large_file
+  fgetpos64
+  fopen64
+  freopen64
+  fseeko64
+  fsetpos64
+  ftello64
+endef
+
+define SRC_libc/stdio_wchar
+  _wfwrite
+  fputws
+  fputws.__DO_UNLOCKED
+  fwprintf
+  swprintf
+  _vfwprintf_internal
+  vfwprintf
+  vswprintf
+  vwprintf
+  wprintf
+endef
+
+define SRC_libc/inet
+  _res_state
+  addr
+  closenameservers
+  decodea
+  decoded
+  decodeh
+  decodep
+  decodeq
+  dnslookup
+  encodea
+  encoded
+  encodeh
+  encodep
+  encodeq
+  ether_addr
+  formquery
+  gai_strerror
+  get_hosts_byaddr_r
+  get_hosts_byname_r
+  getaddrinfo
+  gethostbyaddr
+  gethostbyaddr_r
+  gethostbyname
+  gethostbyname2
+  gethostbyname2_r
+  gethostbyname_r
+  gethostent
+  gethostent_r
+  getnet
+  getproto
+  getservice
+  herror
+  if_index
+  inet_addr
+  inet_aton
+  inet_lnaof
+  inet_makeaddr
+  inet_net
+  inet_netof
+  inet_ntoa
+  lengthd
+  lengthq
+  ns_name
+  ntohl
+  ntop
+  opennameservers
+  opensock
+  read_etc_hosts_r
+  res_comp
+  res_init
+  res_query
+  resolv
+endef
+
+define SRC_libc/pwd_grp
+  pwd_grp
+  getgrgid
+  getgrgid_r
+  getgrnam
+  getgrnam_r
+  getpwuid
+  getpwuid_r
+  getpwnam
+  getpwnam_r
+  getpwent
+  getpwent_r
+  __parsepwent
+  __parsegrent
+  __pgsreader
+endef
+
+define SRC_libc/unistd
+  getlogin
+  getopt
+  sleep
+endef
+
+define SRC_libc/signal
+  allocrtsig
+  raise
+  sigaddset
+  sigandset
+  sigdelset
+  sigempty
+  sigfillset
+  sigismem
+  sigsetops
+  sigjmp
+endef
+
+define SRC_libcrypt
+  crypt
+  des
+  md5
+endef
+
+define SRC_libm
+  carg
+  e_acos
+  e_acosh
+  e_asin
+  e_atan2
+  e_atanh
+  e_cosh
+  e_exp
+  e_fmod
+  e_hypot
+  e_j0
+  e_j1
+  e_jn
+  e_lgamma_r
+  e_log
+  e_log10
+  e_log2
+  e_pow
+  e_remainder
+  e_rem_pio2
+  e_scalb
+  e_sinh
+  e_sqrt
+  k_cos
+  k_rem_pio2
+  k_sin
+  k_standard
+  k_tan
+  s_asinh
+  s_atan
+  s_cbrt
+  s_ceil
+  s_copysign
+  s_cos
+  s_erf
+  s_expm1
+  s_fabs
+  s_fpclassify
+  s_fdim
+  s_finite
+  s_finitef
+  s_floor
+  s_fma
+  s_fmax
+  s_fmin
+  s_frexp
+  s_ilogb
+  s_isnan
+  s_isnanf
+  s_isinf
+  s_isinff
+  s_ldexp
+  s_lib_version
+  s_llrint
+  s_llround
+  s_log1p
+  s_logb
+  s_lrint
+  s_lround
+  s_matherr
+  s_modf
+  s_nextafter
+  s_nextafterf
+  s_remquo
+  s_rint
+  s_round
+  s_scalbn
+  s_signbit
+  s_signbitf
+  s_signgam
+  s_significand
+  s_sin
+  s_tan
+  s_tanh
+  s_trunc
+  w_cabs
+  w_exp2
+  nan
+endef
+
+SRC_libm_float_src = float_wrappers.c
+define SRC_libm_float
+  acos
+  acosf
+  acoshf
+  asinf
+  asinhf
+  atan2f
+  atanf
+  atanhf
+  cbrtf
+  ceilf
+  copysignf
+  cosf
+  coshf
+  erfcf
+  erff
+  exp2f
+  expf
+  expm1f
+  fabsf
+  fdimf
+  floorf
+  fmaf
+  fmaxf
+  fminf
+  fmodf
+  frexpf
+  hypotf
+  ilogbf
+  ldexpf
+  lgammaf
+  llrintf
+  log10f
+  log1pf
+  log2f
+  logbf
+  logf
+  lrintf
+  lroundf
+  modff
+  nearbyintf
+  nextafterf
+  powf
+  remainderf
+  remquof
+  rintf
+  roundf
+  scalblnf
+  scalbnf
+  sinf
+  sinhf
+  sqrtf
+  tanf
+  tanhf
+  tgammaf
+  truncf
+endef
+
+SRC_libm_double_src = ldouble_wrappers.c
+define SRC_libm_double
+  acoshl
+  acosl
+  asinhl
+  asinl
+  atan2l
+  atanhl
+  atanl
+  cargl
+  cbrtl
+  ceill
+  copysignl
+  coshl
+  cosl
+  erfcl
+  erfl
+  expl
+  expm1l
+  fabsl
+  fdiml
+  floorl
+  fmal
+  fmaxl
+  fminl
+  fmodl
+  frexpl
+  gammal
+  hypotl
+  ilogbl
+  ldexpl
+  lgammal
+  llrintl
+  llroundl
+  log10l
+  log1pl
+  log2l
+  logbl
+  logl
+  lrintl
+  lroundl
+  modfl
+  nearbyintl
+  nextafterl
+  powl
+  remainderl
+  remquol
+  rintl
+  roundl
+  scalblnl
+  scalbnl
+  sinhl
+  sinl
+  sqrtl
+  tanhl
+  tanl
+  tgammal
+  truncl
+  significandl
+endef
+
diff --git a/l4/pkg/uclibc/lib/uclibc/make_rules.mk b/l4/pkg/uclibc/lib/uclibc/make_rules.mk
new file mode 100644
index 000000000..54ec5dbba
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/make_rules.mk
@@ -0,0 +1,114 @@
+# vi:ft=make
+
+CXXFLAGS_amd64 += -mcmodel=medium
+CFLAGS_amd64 += -mcmodel=medium
+
+CPPFLAGS	+= -nostdinc -include \
+		  $(CONTRIB_DIR)/include/libc-symbols.h
+CFLAGS		+= -fno-builtin
+CFLAGS          += -DUCLIBC_INTERNAL
+# CFLAGS	+= -std=iso9899:199901
+DEFINES		+= -DNDEBUG -D_LIBC -D__UCLIBC_CTOR_DTOR__
+WARNINGS	= -Wall -Wstrict-prototypes
+
+# for building the C library we access internal headers
+PRIVATE_INCDIR += $(CONTRIB_DIR)/libc/sysdeps/linux/$(BUILD_ARCH)
+# here we cheat a little and allow ../ includes from internal headers
+PRIVATE_INCDIR += $(LIBC_DST_DIR)/libc $(PTHREAD_INCDIR)
+
+# the inet subsystem needs the RESOLVER define to be set
+CPPFLAGS_$(LIBC_DST_DIR)/libc/inet += -DRESOLVER="\"resolv.c\""
+
+# elf subsystem may access ldso internals
+CPPFLAGS_$(LIBC_DST_DIR)/libc/misc/elf += $(LDSO_INC)
+
+# pthread support from libpthread uses libpthread internals
+CPPFLAGS_$(LIBCSRC_DIR_ABS)/../$(PTHOBJ_PFX) += $(addprefix -I,$(PTHREAD_INCDIR))
+
+# setup search paths for our sources
+vpath %.c  $(LIBC_DST_DIR)
+vpath %.cc $(LIBC_DST_DIR)
+vpath %.S  $(LIBC_DST_DIR)
+# libpthread support
+vpath $(PTHOBJ_PFX)/% $(LIBCSRC_DIR_ABS)/..
+
+PICFLAGS += -DSHARED=1
+
+
+# NOTE the two newlines in the define are essential!!
+define NEWLINE
+
+
+endef
+
+
+define add_source_file_x
+  UCLIBC_SRC_$(1)+=$(2)
+endef
+
+# add a source file to the BID list of sources
+add_source_file = $(if $(filter %.c,$(1)),  $(eval $(call add_source_file_x,C$(2),$(1))), \
+                  $(if $(filter %.cc,$(1)), $(eval $(call add_source_file_x,CC$(2),$(1))), \
+                  $(if $(filter %.S,$(1)),  $(eval $(call add_source_file_x,S$(2),$(1))), \
+                  $(error unkwon source file: $(1)))))
+
+# generate the search path value for source files
+gen_search_path = $(LIBC_DST_DIR)/$(1)/$(UCLIBC_ARCH) \
+                  $(LIBC_DST_DIR)/$(1)/generic        \
+                  $(LIBC_DST_DIR)/$(1)/common         \
+                  $(LIBC_DST_DIR)/$(1)
+
+# search for a .c, a .S, or a .cc file for the given basename
+search_source_file = $(or $(firstword $(wildcard $(addsuffix /$(2).*,$(1)))), \
+                          $(patsubst %.c,%$(suffix $(2)).c,$(firstword $(wildcard $(addsuffix /$(basename $(2)).*,$(1))))), \
+                          $(error source file for $(2) not found))
+
+# arg 1: directory of the subsystem (e.g., libc/string)
+# arg 2: the basename of the file to look for (e.g. memcpy, for memcpy.c, memcpy.cc, or
+#        memcpy.S).
+# arg 3: the additional suffix for the SRC_<X> variable
+define HANDLE_file
+  $(call add_source_file,$(subst $(LIBC_DST_DIR)/,,$(call search_source_file,$(1),$(2))),$(3))
+endef
+
+HANDLE_dir = $(foreach f,$(subst $(NEWLINE), ,$(SRC_$(1)$(2))),$(call HANDLE_file,$(call gen_search_path,$(1)),$(f),$(3)))
+
+include $(L4DIR)/mk/rules.inc
+
+#####################
+# Generate pseudo rules for compiling the a template source file to a specific
+# object file using a command line define -DL_<target>.  This is for example used
+# for libm, where all kinds of functions are compiled from float_wrappers.c.
+#
+# arg 1: subsystem name (e.g. libm) -- <subsys>
+# arg 2: module name (e.g. float, or double) -- <module>
+#
+# Uses:
+#  SRC_<subsys><module> as list of target objects to generate
+#  SRC_<subsys><module>_src as the source file for the objects
+#
+define OBJS_FN_templ
+  OBJS_FN_$(1)$(2) = $(addprefix $(1)/,$(patsubst %,%.o,$(subst $(NEWLINE), ,$(SRC_$(1)$(2)))))
+  UCLIBC_SRC_C += $$(OBJS_FN_$(1)$(2):.o=.c)
+  $(call BID_MAKE_RULE_template,$$(OBJS_FN_$(1)$(2)): %.o,$(1)/$$(SRC_$(1)$(2)_src),C,-DL_$$(patsubst %.o,%,$$(notdir $$@)))
+  $(call BID_MAKE_RULE_template,$$(OBJS_FN_$(1)$(2):.o=.s.o): %.s.o,$(1)/$$(SRC_$(1)$(2)_src),C,$$(PICFLAGS) -DL_$$(patsubst %.s.o,%,$$(notdir $$@)))
+endef
+
+
+$(eval $(call BID_GENERATE_DEFAULT_MAKE_RULES,%.__DO_UNLOCKED,%.c,C,-D__DO_UNLOCKED))
+
+
+define PROCESS_src_lists
+  # SRC_<dir> (e.g. SRC_libc/string)
+  $(foreach d,$(1),$(call HANDLE_dir,$(d),,))
+  # SRC_<dir>_<build_arch> (e.g. SRC_libc/string_arm)
+  $(foreach d,$(1),$(call HANDLE_dir,$(d),_$(BUILD_ARCH),))
+  # SRC_<dir>_<target> (e.g. SRC_libc/string_libuc_c.a)
+  $(foreach t,$(TARGET),$(foreach d,$(1),$(call HANDLE_dir,$(d),_$(t),_$(t))))
+  # SRC_<dir>_<submodule> (e.g. SRC_libc/stdio_wchar)
+  $(foreach t,$(2),$(foreach d,$(1),$(call HANDLE_dir,$(d),_$(t),)))
+endef
+
+define PROCESS_template_src
+  $(foreach d,$(1),$(foreach m,$(2),$(eval $(call OBJS_FN_templ,$(d),_$(m)))))
+endef
diff --git a/l4/pkg/uclibc/lib/uclibc/make_vars.mk b/l4/pkg/uclibc/lib/uclibc/make_vars.mk
new file mode 100644
index 000000000..85379b35c
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/make_vars.mk
@@ -0,0 +1,36 @@
+include $(L4DIR)/mk/Makeconf
+
+LIBCSRC_DIR ?= $(SRC_DIR)
+LIBCSRC_DIR_ABS := $(call absfilename,$(LIBCSRC_DIR))
+
+SYSDEPS          := libc/sysdeps/linux
+
+# directory to the libc contrib files
+CONTRIB_DIR   := $(LIBCSRC_DIR_ABS)/../contrib/uclibc
+
+# destination directory for linking libc sources, with our overlay
+LIBC_DST_DIR  := $(OBJ_DIR)/src
+
+# build prefix for pthread sources
+PTHOBJ_PFX    := libpthread/src
+
+# pthread source file directory
+PTHLIB_DIR    := $(LIBCSRC_DIR_ABS)/../libpthread
+
+# include directory for pthread internals
+PTHREAD_INCDIR = $(PTHLIB_DIR)/src/sysdeps/$(UCLIBC_ARCH_$(ARCH)) \
+                 $(PTHLIB_DIR)/src
+
+# include dir for accessing ldso internals
+LDSO_INC = -I$(CONTRIB_DIR)/ldso/ldso/$(UCLIBC_ARCH) -I$(CONTRIB_DIR)/ldso/include
+
+
+UCLIBC_ARCH_x86   := i386
+UCLIBC_ARCH_arm   := arm
+UCLIBC_ARCH_amd64 := x86_64
+UCLIBC_ARCH_ppc32 := powerpc
+UCLIBC_ARCH_sparc := sparc
+
+UCLIBC_ARCH       := $(UCLIBC_ARCH_$(BUILD_ARCH))
+
+
diff --git a/l4/pkg/uclibc/lib/uclibc/src_rules.mk b/l4/pkg/uclibc/lib/uclibc/src_rules.mk
new file mode 100644
index 000000000..b56dab5c1
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/src_rules.mk
@@ -0,0 +1,21 @@
+LIBCSRC_DIR ?= $(SRC_DIR)
+
+include $(LIBCSRC_DIR)/make_vars.mk
+
+LIBC_SRC_DIRS := $(CONTRIB_DIR)/libc \
+                 $(LIBCSRC_DIR_ABS)/ARCH-all/libc #$(LIBCSRC_DIR)/ARCH-$(BUILD_ARCH)/libc
+
+LIBC_SRC_DIRS += $(CONTRIB_DIR)/libm \
+                 $(CONTRIB_DIR)/libcrypt
+
+LIBC_DST_DIR  := $(OBJ_DIR)/src
+
+$(LIBC_DST_DIR)/.links-done: Makefile
+	$(MKDIR) -p $(LIBC_DST_DIR)
+	$(CP) -sfr $(LIBC_SRC_DIRS) $(LIBC_DST_DIR)
+	touch $@
+
+include $(L4DIR)/mk/lib.mk
+
+$(OBJ_DIR)/.general.d: $(LIBC_DST_DIR)/.links-done
+
diff --git a/l4/pkg/uclibc/lib/uclibc/target_headers.lst b/l4/pkg/uclibc/lib/uclibc/target_headers.lst
new file mode 100644
index 000000000..e9806d67f
--- /dev/null
+++ b/l4/pkg/uclibc/lib/uclibc/target_headers.lst
@@ -0,0 +1,215 @@
+alloca.h
+arpa/inet.h
+arpa/nameser_compat.h
+arpa/nameser.h
+asm/errno.h
+asm/socket.h
+asm/ioctls.h
+asm/sigcontext.h
+assert.h
+atomic.h
+bits/atomic.h
+bits/byteswap-common.h
+bits/byteswap.h
+bits/cmathcalls.h
+bits/confname.h
+bits/dirent.h
+bits/dlfcn.h
+bits/elfclass.h
+bits/endian.h
+bits/environments.h
+bits/errno.h
+bits/fcntl.h
+bits/fenv.h
+bits/fenvinline.h
+bits/getopt.h
+bits/huge_valf.h
+bits/huge_val.h
+bits/huge_vall.h
+bits/inf.h
+bits/in.h
+bits/ioctls.h
+bits/ioctl-types.h
+bits/ipc.h
+bits/kernel_stat.h
+bits/kernel_types.h
+bits/kernel-features.h
+bits/locale.h
+bits/local_lim.h
+bits/mathcalls.h
+bits/mathdef.h
+bits/mathinline.h
+bits/mman-common.h
+bits/mman.h
+bits/msq.h
+bits/nan.h
+bits/netdb.h
+bits/poll.h
+bits/posix1_lim.h
+bits/posix2_lim.h
+bits/posix_opt.h
+bits/resource.h
+bits/sched.h
+bits/select.h
+bits/sem.h
+bits/setjmp.h
+bits/shm.h
+bits/sigaction.h
+bits/sigcontext.h
+bits/sigcontextinfo.h
+bits/siginfo.h
+bits/signum.h
+bits/sigset.h
+bits/sigstack.h
+bits/sigthread.h
+bits/sockaddr.h
+bits/socket.h
+bits/stackinfo.h
+bits/statfs.h
+bits/stat.h
+bits/stdio_lim.h
+bits/syscalls.h
+bits/termios.h
+bits/time.h
+bits/types.h
+bits/typesizes.h
+bits/uClibc_arch_features.h
+bits/uClibc_charclass.h
+bits/uClibc_clk_tck.h
+bits/uClibc_config.h
+bits/uClibc_errno.h
+bits/uClibc_fpmax.h
+bits/uClibc_locale.h
+bits/uClibc_local_lim.h
+bits/uClibc_mutex.h
+bits/uClibc_page.h
+bits/uClibc_pthread.h
+bits/uClibc_stdio.h
+bits/uClibc_touplow.h
+bits/uClibc_uintmaxtostr.h
+bits/uClibc_uwchar.h
+bits/uClibc_va_copy.h
+bits/uio.h
+bits/utsname.h
+bits/waitflags.h
+bits/waitstatus.h
+bits/wchar.h
+bits/wordsize.h
+bits/xopen_lim.h
+byteswap.h
+complex.h
+crypt.h
+ctype.h
+dirent.h
+dlfcn.h
+elf.h
+endian.h
+err.h
+errno.h
+fcntl.h
+features.h
+fenv.h
+fnmatch.h
+fpu_control.h
+getopt.h
+glob.h
+grp.h
+ieee754.h
+ifaddrs.h
+internal/parse_config.h
+inttypes.h
+langinfo.h
+_lfs_64.h
+libc-internal.h
+libc-symbols.h
+libgen.h
+libintl.h
+limits.h
+link.h
+linux/errno.h
+linux/limits.h
+linux/if_ether.h
+linux/param.h
+locale.h
+malloc.h
+math.h
+memory.h
+netdb.h
+net/ethernet.h
+net/if_arp.h
+net/if.h
+netinet/ether.h
+netinet/if_ether.h
+netinet/in.h
+netinet/in_systm.h
+netinet/ip.h
+netinet/tcp.h
+netinet/udp.h
+net/route.h
+nl_types.h
+not-cancel.h
+paths.h
+poll.h
+printf.h
+pty.h
+pwd.h
+resolv.h
+rpc/netdb.h
+sched.h
+search.h
+setjmp.h
+shadow.h
+signal.h
+stdint.h
+stdio_ext.h
+stdio.h
+stdlib.h
+string.h
+strings.h
+sys/bitypes.h
+sys/cdefs.h
+sys/dir.h
+sysexits.h
+sys/fcntl.h
+sys/file.h
+sys/ioctl.h
+sys/ipc.h
+syslog.h
+sys/mman.h
+sys/mount.h
+sys/param.h
+sys/poll.h
+sys/procfs.h
+sys/resource.h
+sys/select.h
+sys/sem.h
+sys/shm.h
+sys/socket.h
+sys/soundcard.h
+sys/statfs.h
+sys/stat.h
+sys/syscall.h
+sys/syslog.h
+sys/sysmacros.h
+sys/timeb.h
+sys/time.h
+sys/times.h
+sys/ttydefaults.h
+sys/types.h
+sys/ucontext.h
+sys/uio.h
+sys/un.h
+sys/user.h
+sys/utsname.h
+sys/vfs.h
+sys/wait.h
+tar.h
+termios.h
+time.h
+tls.h
+ucontext.h
+unistd.h
+utime.h
+wchar.h
+wctype.h
+wordexp.h
diff --git a/l4/pkg/valgrind/Control b/l4/pkg/valgrind/Control
index 4ec81355f..aeda3d5b5 100644
--- a/l4/pkg/valgrind/Control
+++ b/l4/pkg/valgrind/Control
@@ -1,3 +1,2 @@
 requires: stdlibs libpthread l4re_c-util
-provides: 
 maintainer: doebel@os.inf.tu-dresden.de
diff --git a/l4/pkg/valgrind/build/Makefile b/l4/pkg/valgrind/build/Makefile
index 50000e409..c01dd7515 100644
--- a/l4/pkg/valgrind/build/Makefile
+++ b/l4/pkg/valgrind/build/Makefile
@@ -9,12 +9,12 @@ VALGRIND_SRC = $(shell find $(PKGDIR)/src/ -name valgrind-$(VALGRIND_VERSION))
 VALGRIND_BUILD = $(OBJ_DIR)/OBJ-$(SYSTEM)/vg
 
 # basic BID settings
-L4_MULTITHREADED = y
 REQUIRES_LIBS    = l4re_c-util
 
 # variables used for passing to Valgrind's build system
 # gcc need a "," after defsym and a "=" after dynamic-linker
-L4_LDFLAGS_WITH_LIBC=`echo "$(LDFLAGS)" | sed 's/'--dynamic-linker\ '/'-Wl,--dynamic-linker\='/g' | \
+L4_LDFLAGS_WITH_LIBC=`echo "$(LDFLAGS)" | \
+            sed 's/'--dynamic-linker\ '/'-Wl,--dynamic-linker\='/g' | \
             sed 's/'--defsym\ '/'-Wl,--defsym\,'/g' | \
             sed 's/'--start-group\ '/'-Wl,--start-group\ '/g' | \
             sed 's/'--end-group\ '/'-Wl,--end-group\ '/g' | \
@@ -32,13 +32,13 @@ all :: valgrind
 ifneq ($(SYSTEM), )
 ifeq ($(BUILD_ARCH), x86)
 
-TMP_LDFLAGS = $(addprefix -L, $(L4LIBDIR_PROG_NOEXC-$(BID_INT_NOEXC)))
+TMP_LDFLAGS = $(addprefix -L, $(L4LIBDIR))
 TMP_LDFLAGS += -Wl,--start-group
 TMP_LDFLAGS += -Wl,--defsym,__L4_KIP_ADDR__=$(L4_KIP_ADDR) \
                -Wl,--defsym,__L4_STACK_ADDR__=$(L4_STACK_ADDR)
 TMP_LDFLAGS += $(REQUIRES_LIBS_LIST)
 TMP_LDFLAGS += -Wl,--end-group
-TMP_LDFLAGS += --warn-common -gc-sections
+TMP_LDFLAGS += -Wl,--warn-common -gc-sections
 L4_LDFLAGS = $(TMP_LDFLAGS)
 
 valgrind : check_rediff valgrind_conf
@@ -70,7 +70,7 @@ valgrind_conf :
 		$(VALGRIND_SRC)/configure \
 						  --enable-maintainer-mode \
 						  --host=i386-l4re \
-						  --build=i386-linux; \
+						  --build=i386-linux && \
 		touch $(VALGRIND_BUILD)/config.ready; \
 	fi
 
diff --git a/l4/pkg/valgrind/build/ext-checksums b/l4/pkg/valgrind/build/ext-checksums
index e76aa0e2a..53d5049a9 100644
--- a/l4/pkg/valgrind/build/ext-checksums
+++ b/l4/pkg/valgrind/build/ext-checksums
@@ -1,2 +1,2 @@
-fd438dd3ff5efd1c9cba28778f222c089f9ade34  uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c
+23a3d41fed316568dbe468b2e4448470a1bab9fc  uclibc/lib/contrib/uclibc/libc/misc/internals/__uClibc_main.c
 6638fd79ec96dedd7583029d5381bb6f7e903612  uclibc/lib/contrib/uclibc/libc/sysdeps/linux/i386/crt1.S
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/AUTHORS b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/AUTHORS
index dbfd904ed..de0c9c7dd 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/AUTHORS
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/AUTHORS
@@ -1,7 +1,8 @@
 
-Julian Seward was the original founder, designer and author of Valgrind,
-created the dynamic translation frameworks, wrote Memcheck and 3.3.X
-Helgrind, and did lots of other things.
+Julian Seward was the original founder, designer and author of
+Valgrind, created the dynamic translation frameworks, wrote Memcheck,
+the 3.X versions of Helgrind, Ptrcheck, DHAT, and did lots of other
+things.
 
 Nicholas Nethercote did the core/tool generalisation, wrote
 Cachegrind and Massif, and tons of other stuff.
@@ -33,8 +34,12 @@ other tweakage.
 
 Bart Van Assche wrote and maintains DRD.
 
-Cerion Armour-Brown worked on PowerPC instruction set support in
-the Vex dynamic-translation framework.
+Cerion Armour-Brown worked on PowerPC instruction set support in the
+Vex dynamic-translation framework.  Maynard Johnson improved the
+Power6 support.
+
+Kirill Batuzov and Dmitry Zhurikhin did the NEON instruction set
+support for ARM.  Donna Robinson did the v6 media instruction support.
 
 Donna Robinson created and maintains the very excellent
 http://www.valgrind.org.
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.all.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.all.am
index 9c6a26186..5b6857a1d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.all.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.all.am
@@ -167,7 +167,7 @@ AM_CCASFLAGS_PPC64_LINUX  = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g
 AM_FLAG_M3264_ARM_LINUX   = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX       = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
-AM_CCASFLAGS_ARM_LINUX    = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX    = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 
 AM_FLAG_M3264_PPC32_AIX5  = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5      = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
@@ -198,6 +198,11 @@ AM_CCASFLAGS_X86_L4RE  = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE   = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
 
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX     = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX  = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
 # build anything which is built only once on a dual-arch build.
@@ -231,5 +236,6 @@ PRELOAD_LDFLAGS_PPC32_AIX5   = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5   = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN   = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE     = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.am
index ff9e1b524..f096bc550 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.am
@@ -15,8 +15,9 @@ TOOLS =		memcheck \
 		helgrind \
 		drd
 
-EXP_TOOLS = 	exp-ptrcheck \
-		exp-bbv
+EXP_TOOLS = 	exp-sgcheck \
+		exp-bbv \
+		exp-dhat
 endif
 
 # DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
@@ -28,6 +29,7 @@ else
   TEST_EXP_TOOLS = exp-bbv
 endif
 
+
 # Put docs last because building the HTML is slow and we want to get
 # everything else working before we try it.
 if VGCONF_OS_IS_L4RE
@@ -48,6 +50,7 @@ SUBDIRS = \
 	$(EXP_TOOLS) \
 	tests \
 	perf \
+	gdbserver_tests \
 	auxprogs \
 	mpi \
 	docs
@@ -62,7 +65,7 @@ SUPP_FILES = \
 	glibc-2.34567-NPTL-helgrind.supp \
 	glibc-2.2-LinuxThreads-helgrind.supp \
 	glibc-2.X-drd.supp \
-	exp-ptrcheck.supp \
+	exp-sgcheck.supp \
 	darwin9.supp darwin9-drd.supp \
 	darwin10.supp darwin10-drd.supp
 
@@ -90,11 +93,15 @@ default.supp: $(DEFAULT_SUPP_FILES) $(GENERATED_SUPP_FILES)
 
 ## Preprend @PERL@ because tests/vg_regtest isn't executable
 regtest: check
-	@PERL@ tests/vg_regtest $(TEST_TOOLS) $(TEST_EXP_TOOLS)
+	gdbserver_tests/make_local_links $(GDB)
+	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_TOOLS) $(TEST_EXP_TOOLS)
 nonexp-regtest: check
 	@PERL@ tests/vg_regtest $(TEST_TOOLS)
 exp-regtest: check
-	@PERL@ tests/vg_regtest $(TEST_EXP_TOOLS)
+	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_EXP_TOOLS)
+# Nb: gdbserver_tests are put in exp-regtest rather than nonexp-regtest
+# because they are tested with various valgrind tools, so might be using
+# an experimental tool.
 
 ## Preprend @PERL@ because tests/vg_perf isn't executable
 perf: check
@@ -110,6 +117,7 @@ EXTRA_DIST = \
 	README_DEVELOPERS \
 	README_PACKAGERS \
 	README_MISSING_SYSCALL_OR_IOCTL \
+	README.s390 \
 	valgrind.pc.in \
 	valgrind.spec.in \
 	valgrind.spec
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.in
index a07bb24f2..ed2d6ad66 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.in
@@ -181,6 +181,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -210,12 +212,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -369,7 +366,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -398,6 +395,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -426,6 +428,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 @VGCONF_OS_IS_L4RE_FALSE@TOOLS = memcheck \
 @VGCONF_OS_IS_L4RE_FALSE@		cachegrind \
@@ -437,8 +440,9 @@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 @VGCONF_OS_IS_L4RE_FALSE@		drd
 
 @VGCONF_OS_IS_L4RE_TRUE@TOOLS = none memcheck
-@VGCONF_OS_IS_L4RE_FALSE@EXP_TOOLS = exp-ptrcheck \
-@VGCONF_OS_IS_L4RE_FALSE@		exp-bbv
+@VGCONF_OS_IS_L4RE_FALSE@EXP_TOOLS = exp-sgcheck \
+@VGCONF_OS_IS_L4RE_FALSE@		exp-bbv \
+@VGCONF_OS_IS_L4RE_FALSE@		exp-dhat
 
 
 # DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
@@ -455,6 +459,7 @@ TEST_TOOLS = $(TOOLS)
 @VGCONF_OS_IS_L4RE_FALSE@	$(EXP_TOOLS) \
 @VGCONF_OS_IS_L4RE_FALSE@	tests \
 @VGCONF_OS_IS_L4RE_FALSE@	perf \
+@VGCONF_OS_IS_L4RE_FALSE@	gdbserver_tests \
 @VGCONF_OS_IS_L4RE_FALSE@	auxprogs \
 @VGCONF_OS_IS_L4RE_FALSE@	mpi \
 @VGCONF_OS_IS_L4RE_FALSE@	docs
@@ -478,7 +483,7 @@ SUPP_FILES = \
 	glibc-2.34567-NPTL-helgrind.supp \
 	glibc-2.2-LinuxThreads-helgrind.supp \
 	glibc-2.X-drd.supp \
-	exp-ptrcheck.supp \
+	exp-sgcheck.supp \
 	darwin9.supp darwin9-drd.supp \
 	darwin10.supp darwin10-drd.supp
 
@@ -504,6 +509,7 @@ EXTRA_DIST = \
 	README_DEVELOPERS \
 	README_PACKAGERS \
 	README_MISSING_SYSCALL_OR_IOCTL \
+	README.s390 \
 	valgrind.pc.in \
 	valgrind.spec.in \
 	valgrind.spec
@@ -1126,11 +1132,15 @@ default.supp: $(DEFAULT_SUPP_FILES) $(GENERATED_SUPP_FILES)
 	cat $(GENERATED_SUPP_FILES) >> default.supp
 
 regtest: check
-	@PERL@ tests/vg_regtest $(TEST_TOOLS) $(TEST_EXP_TOOLS)
+	gdbserver_tests/make_local_links $(GDB)
+	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_TOOLS) $(TEST_EXP_TOOLS)
 nonexp-regtest: check
 	@PERL@ tests/vg_regtest $(TEST_TOOLS)
 exp-regtest: check
-	@PERL@ tests/vg_regtest $(TEST_EXP_TOOLS)
+	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_EXP_TOOLS)
+# Nb: gdbserver_tests are put in exp-regtest rather than nonexp-regtest
+# because they are tested with various valgrind tools, so might be using
+# an experimental tool.
 
 perf: check
 	@PERL@ perf/vg_perf perf
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.tool.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.tool.am
index df5f6b7dd..a76799037 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.tool.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.tool.am
@@ -54,6 +54,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -117,6 +120,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \
 LIBREPLACEMALLOC_X86_L4RE = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
@@ -161,6 +167,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \
 	-Wl,--no-whole-archive
 
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 #----------------------------------------------------------------------------
 # General stuff
 #----------------------------------------------------------------------------
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.am
index 1bfb1a9bf..dcc776489 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.am
@@ -24,6 +24,8 @@ pkginclude_HEADERS = \
 	pub/libvex_guest_ppc32.h \
 	pub/libvex_guest_ppc64.h \
 	pub/libvex_guest_arm.h \
+	pub/libvex_guest_s390x.h \
+	pub/libvex_s390x_common.h \
 	pub/libvex_ir.h \
 	pub/libvex_trc_values.h
 
@@ -38,13 +40,16 @@ noinst_HEADERS = \
 	priv/guest_amd64_defs.h \
 	priv/guest_ppc_defs.h \
 	priv/guest_arm_defs.h \
+	priv/guest_s390_defs.h \
 	priv/host_generic_regs.h \
 	priv/host_generic_simd64.h \
 	priv/host_generic_simd128.h \
 	priv/host_x86_defs.h \
 	priv/host_amd64_defs.h \
 	priv/host_ppc_defs.h \
-	priv/host_arm_defs.h
+	priv/host_arm_defs.h \
+	priv/host_s390_defs.h \
+	priv/host_s390_disasm.h
 
 BUILT_SOURCES = pub/libvex_guest_offsets.h
 CLEANFILES    = pub/libvex_guest_offsets.h
@@ -53,7 +58,14 @@ VEX_SRC       = $(top_srcdir)/VEX
 # This is very uggerly.  Need to sed out both "xyzzyN" and
 # "xyzzy$N" since gcc on different targets emits the constants
 # differently -- with a leading $ on x86/amd64 but none on ppc32/64.
-pub/libvex_guest_offsets.h:
+pub/libvex_guest_offsets.h:  auxprogs/genoffsets.c \
+			    pub/libvex_basictypes.h \
+			    pub/libvex_guest_x86.h \
+			    pub/libvex_guest_amd64.h \
+			    pub/libvex_guest_ppc32.h \
+			    pub/libvex_guest_ppc64.h \
+			    pub/libvex_guest_arm.h \
+				pub/libvex_guest_s390x.h
 	mkdir -p auxprogs
 	mkdir -p pub
 	mkdir -p priv
@@ -95,6 +107,8 @@ LIBVEX_SOURCES_COMMON = \
 	priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c \
 	priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c \
+	priv/guest_s390_toIR.c \
 	priv/host_generic_regs.c \
 	priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c \
@@ -106,7 +120,10 @@ LIBVEX_SOURCES_COMMON = \
 	priv/host_ppc_defs.c \
 	priv/host_ppc_isel.c \
 	priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c \
+	priv/host_s390_defs.c \
+	priv/host_s390_isel.c \
+	priv/host_s390_disasm.c
 
 LIBVEX_CFLAGS = \
 	-Wbad-function-cast \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.in
index 22fd0d3b9..6a87f01a5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/Makefile.vex.in
@@ -101,6 +101,8 @@ am__objects_1 =  \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_helpers.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \
@@ -112,7 +114,10 @@ am__objects_1 =  \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_defs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_isel.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_defs.$(OBJEXT) \
-	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT)
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.$(OBJEXT)
 am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = $(am__objects_1)
 libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS =  \
 	$(am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS)
@@ -126,12 +131,14 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	priv/guest_amd64_helpers.c priv/guest_amd64_toIR.c \
 	priv/guest_ppc_helpers.c priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c priv/guest_s390_toIR.c \
 	priv/host_generic_regs.c priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c priv/host_generic_reg_alloc2.c \
 	priv/host_x86_defs.c priv/host_x86_isel.c \
 	priv/host_amd64_defs.c priv/host_amd64_isel.c \
 	priv/host_ppc_defs.c priv/host_ppc_isel.c priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c priv/host_s390_defs.c \
+	priv/host_s390_isel.c priv/host_s390_disasm.c
 am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_main.$(OBJEXT) \
@@ -149,6 +156,8 @@ am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_helpers.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \
@@ -160,7 +169,10 @@ am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_defs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_isel.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_defs.$(OBJEXT) \
-	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT)
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
@@ -223,6 +235,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -252,12 +266,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -410,7 +419,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -439,6 +448,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -467,6 +481,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 
 #----------------------------------------------------------------------------
@@ -490,6 +505,8 @@ pkginclude_HEADERS = \
 	pub/libvex_guest_ppc32.h \
 	pub/libvex_guest_ppc64.h \
 	pub/libvex_guest_arm.h \
+	pub/libvex_guest_s390x.h \
+	pub/libvex_s390x_common.h \
 	pub/libvex_ir.h \
 	pub/libvex_trc_values.h
 
@@ -504,13 +521,16 @@ noinst_HEADERS = \
 	priv/guest_amd64_defs.h \
 	priv/guest_ppc_defs.h \
 	priv/guest_arm_defs.h \
+	priv/guest_s390_defs.h \
 	priv/host_generic_regs.h \
 	priv/host_generic_simd64.h \
 	priv/host_generic_simd128.h \
 	priv/host_x86_defs.h \
 	priv/host_amd64_defs.h \
 	priv/host_ppc_defs.h \
-	priv/host_arm_defs.h
+	priv/host_arm_defs.h \
+	priv/host_s390_defs.h \
+	priv/host_s390_disasm.h
 
 BUILT_SOURCES = pub/libvex_guest_offsets.h
 CLEANFILES = pub/libvex_guest_offsets.h
@@ -538,6 +558,8 @@ LIBVEX_SOURCES_COMMON = \
 	priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c \
 	priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c \
+	priv/guest_s390_toIR.c \
 	priv/host_generic_regs.c \
 	priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c \
@@ -549,7 +571,10 @@ LIBVEX_SOURCES_COMMON = \
 	priv/host_ppc_defs.c \
 	priv/host_ppc_isel.c \
 	priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c \
+	priv/host_s390_defs.c \
+	priv/host_s390_isel.c \
+	priv/host_s390_disasm.c
 
 LIBVEX_CFLAGS = \
 	-Wbad-function-cast \
@@ -661,6 +686,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_toIR.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_x86_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_x86_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_amd64_defs.Po@am__quote@
@@ -673,6 +700,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_x86_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_x86_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-ir_defs.Po@am__quote@
@@ -689,6 +719,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_toIR.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_x86_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_x86_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_amd64_defs.Po@am__quote@
@@ -701,6 +733,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_x86_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_x86_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-ir_defs.Po@am__quote@
@@ -948,6 +983,34 @@ libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.obj: priv/guest_arm_toIR.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.obj `if test -f 'priv/guest_arm_toIR.c'; then $(CYGPATH_W) 'priv/guest_arm_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_arm_toIR.c'; fi`
 
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+
 libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Po
@@ -1116,6 +1179,48 @@ libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.obj: priv/host_arm_isel.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.obj `if test -f 'priv/host_arm_isel.c'; then $(CYGPATH_W) 'priv/host_arm_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_arm_isel.c'; fi`
 
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o: priv/main_globals.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o `test -f 'priv/main_globals.c' || echo '$(srcdir)/'`priv/main_globals.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Po
@@ -1340,6 +1445,34 @@ libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.obj: priv/guest_arm_toIR.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.obj `if test -f 'priv/guest_arm_toIR.c'; then $(CYGPATH_W) 'priv/guest_arm_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_arm_toIR.c'; fi`
 
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Po
@@ -1507,6 +1640,48 @@ libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.obj: priv/host_arm_isel.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_arm_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.obj `if test -f 'priv/host_arm_isel.c'; then $(CYGPATH_W) 'priv/host_arm_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_arm_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
 install-pkgincludeHEADERS: $(pkginclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@@ -1800,7 +1975,14 @@ clean-noinst_DSYMS:
 # This is very uggerly.  Need to sed out both "xyzzyN" and
 # "xyzzy$N" since gcc on different targets emits the constants
 # differently -- with a leading $ on x86/amd64 but none on ppc32/64.
-pub/libvex_guest_offsets.h:
+pub/libvex_guest_offsets.h:  auxprogs/genoffsets.c \
+			    pub/libvex_basictypes.h \
+			    pub/libvex_guest_x86.h \
+			    pub/libvex_guest_amd64.h \
+			    pub/libvex_guest_ppc32.h \
+			    pub/libvex_guest_ppc64.h \
+			    pub/libvex_guest_arm.h \
+				pub/libvex_guest_s390x.h
 	mkdir -p auxprogs
 	mkdir -p pub
 	mkdir -p priv
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS
index ead2949dd..2388a8d7f 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS
@@ -1,35 +1,395 @@
 
-Release 3.6.0 (???)
+Release 3.7.0 (???)
 ~~~~~~~~~~~~~~~~~~~
-Improvements:
-- XXX: ARM support
-- XXX: Mac OS 10.6 support (32 and 64 bit)
-- XXX: Much faster startup on Mac OS 10.5 for 64-bit programs.
+- Added the --mod-funcname option to cg_diff.
+- Further reduction in overheads caused by --smc-check=all, especially
+  on 64-bit targets.
 
-- Valgrind runs much faster when the --smc-check=all option is given.
+* IBM z/Architecture (s390x) running Linux
+  Valgrind can analyse 64-bit programs running on z/Architecture.
+  Most user space instructions up to and including z10 are supported.
+  Valgrind has been tested extensively on z9, z10, and z196 machines
+  running SLES 10/11, RedHat 5/6m, and Fedora. The Memcheck and Massif
+  tools are known to work well. Callgrind, Helgrind, and DRD work
+  reasonably well on z9 and later models. See README.s390 for more
+  details.
 
-- Cachegrind has a new processing script, cg_diff, which finds the
-  difference between two profiles.  It's very useful for evaluating the
-  performance effects of a change in a program.
+
+Release 3.6.1 (16 February 2011)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.6.1 is a bug fix release.  It adds support for some SSE4
+instructions that were omitted in 3.6.0 due to lack of time.  Initial
+support for glibc-2.13 has been added.  A number of bugs causing
+crashing or assertion failures have been fixed.
+
+The following bugs have been fixed or resolved.  Note that "n-i-bz"
+stands for "not in bugzilla" -- that is, a bug that was reported to us
+but never got a bugzilla entry.  We encourage you to file bugs in
+bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+mailing the developers (or mailing lists) directly -- bugs that are
+not entered into bugzilla tend to get forgotten about or ignored.
+
+To see details of a given bug, visit
+https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+where XXXXXX is the bug number as listed below.
+
+188572  Valgrind on Mac should suppress setenv() mem leak
+194402  vex amd64->IR: 0x48 0xF 0xAE 0x4 (proper FX{SAVE,RSTOR} support)
+210481  vex amd64->IR: Assertion `sz == 2 || sz == 4' failed (REX.W POPQ)
+246152  callgrind internal error after pthread_cancel on 32 Bit Linux
+250038  ppc64: Altivec LVSR and LVSL instructions fail their regtest
+254420  memory pool tracking broken 
+254957  Test code failing to compile due to changes in memcheck.h
+255009  helgrind/drd: crash on chmod with invalid parameter
+255130  readdwarf3.c parse_type_DIE confused by GNAT Ada types
+255355  helgrind/drd: crash on threaded programs doing fork
+255358  == 255355
+255418  (SSE4.x) rint call compiled with ICC
+255822  --gen-suppressions can create invalid files: "too many callers [...]"
+255888  closing valgrindoutput tag outputted to log-stream on error
+255963  (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x9 0xDB 0x0 (ROUNDPD)
+255966  Slowness when using mempool annotations
+256387  vex x86->IR: 0xD4 0xA 0x2 0x7 (AAD and AAM)
+256600  super-optimized strcasecmp() false positive
+256669  vex amd64->IR: Unhandled LOOPNEL insn on amd64
+256968  (SSE4.x) vex amd64->IR: 0x66 0xF 0x38 0x10 0xD3 0x66 (BLENDVPx)
+257011  (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0xE 0xFD 0xA0 (PBLENDW)
+257063  (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x8 0xC0 0x0 (ROUNDPS)
+257276  Missing case in memcheck --track-origins=yes
+258870  (SSE4.x) Add support for EXTRACTPS SSE 4.1 instruction
+261966  (SSE4.x) support for CRC32B and CRC32Q is lacking (also CRC32{W,L})
+262985  VEX regression in valgrind 3.6.0 in handling PowerPC VMX
+262995  (SSE4.x) crash when trying to valgrind gcc-snapshot (PCMPxSTRx $0)
+263099  callgrind_annotate counts Ir improperly [...]
+263877  undefined coprocessor instruction on ARMv7
+265964  configure FAIL with glibc-2.13
+n-i-bz  Fix compile error w/ icc-12.x in guest_arm_toIR.c
+n-i-bz  Docs: fix bogus descriptions for VALGRIND_CREATE_BLOCK et al
+n-i-bz  Massif: don't assert on shmat() with --pages-as-heap=yes
+n-i-bz  Bug fixes and major speedups for the exp-DHAT space profiler
+n-i-bz  DRD: disable --free-is-write due to implementation difficulties
+
+(3.6.1: 16 February 2011, vex r2103, valgrind r11561).
+
+
+
+Release 3.6.0 (21 October 2010)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.6.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.
+
+This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
+PPC64/Linux, X86/Darwin and AMD64/Darwin.  Support for recent distros
+and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added.
+
+                    -------------------------
+
+Here are some highlights.  Details are shown further down:
+
+* Support for ARM/Linux.
+
+* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables.
+
+* Support for the SSE4.2 instruction set.
+
+* Enhancements to the Callgrind profiler, including the ability to
+  handle CPUs with three levels of cache.
+
+* A new experimental heap profiler, DHAT.
+
+* A huge number of bug fixes and small enhancements.
+
+                    -------------------------
+
+Here are details of the above changes, together with descriptions of
+many other changes, and a list of fixed bugs.
+
+* ================== PLATFORM CHANGES =================
+
+* Support for ARM/Linux.  Valgrind now runs on ARMv7 capable CPUs
+  running Linux.  It is known to work on Ubuntu 10.04, Ubuntu 10.10,
+  and Maemo 5, so you can run Valgrind on your Nokia N900 if you want.
+
+  This requires a CPU capable of running the ARMv7-A instruction set
+  (Cortex A5, A8 and A9).  Valgrind provides fairly complete coverage
+  of the user space instruction set, including ARM and Thumb integer
+  code, VFPv3, NEON and V6 media instructions.  The Memcheck,
+  Cachegrind and Massif tools work properly; other tools work to
+  varying degrees.
+
+* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along
+  with support for recent releases of the underlying toolchain
+  components, notably gcc-4.5 and glibc-2.12.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables.  64-bit
+  support also works much better on OS X 10.5, and is as solid as
+  32-bit support now.
+
+* Support for the SSE4.2 instruction set.  SSE4.2 is supported in
+  64-bit mode.  In 32-bit mode, support is only available up to and
+  including SSSE3.  Some exceptions: SSE4.2 AES instructions are not
+  supported in 64-bit mode, and 32-bit mode does in fact support the
+  bare minimum SSE4 instructions to needed to run programs on Mac OS X
+  10.6 on 32-bit targets.
+
+* Support for IBM POWER6 cpus has been improved.  The Power ISA up to
+  and including version 2.05 is supported.
+
+* ==================== TOOL CHANGES ====================
+
+* Cachegrind has a new processing script, cg_diff, which finds the
+  difference between two profiles.  It's very useful for evaluating
+  the performance effects of a change in a program.
   
   Related to this change, the meaning of cg_annotate's (rarely-used)
-  --threshold option has changed; this is unlikely to affect many people, if
-  you do use it please see the user manual for details.
-
-- Massif has a new option, --pages-as-heap, which is disabled by default.
-  When enabled, instead of tracking allocations at the level of heap blocks
-  (as allocated with malloc/new/new[]), it instead tracks memory allocations
-  at the level of memory pages (as mapped by mmap, brk, etc).  Each mapped
-  page is treated as its own block.  Interpreting the page-level output is
-  harder than the heap-level output, but this option is useful if you want
-  to account for every byte of memory used by a program.
-
-- Callgrind now can do branch prediction simulation, similar to Cachegrind.
-  In addition, it optionally can count the number of executed global bus events.
-  Both can be used for a better approximation of a "Cycle Estimation" as
-  derived event (you need to update the event formula in KCachegrind yourself).
-
-- Added new memcheck command-line option --show-possibly-lost.
+  --threshold option has changed; this is unlikely to affect many
+  people, if you do use it please see the user manual for details.
+
+* Callgrind now can do branch prediction simulation, similar to
+  Cachegrind.  In addition, it optionally can count the number of
+  executed global bus events.  Both can be used for a better
+  approximation of a "Cycle Estimation" as derived event (you need to
+  update the event formula in KCachegrind yourself).
+
+* Cachegrind and Callgrind now refer to the LL (last-level) cache
+  rather than the L2 cache.  This is to accommodate machines with
+  three levels of caches -- if Cachegrind/Callgrind auto-detects the
+  cache configuration of such a machine it will run the simulation as
+  if the L2 cache isn't present.  This means the results are less
+  likely to match the true result for the machine, but
+  Cachegrind/Callgrind's results are already only approximate, and
+  should not be considered authoritative.  The results are still
+  useful for giving a general idea about a program's locality.
+
+* Massif has a new option, --pages-as-heap, which is disabled by
+  default.  When enabled, instead of tracking allocations at the level
+  of heap blocks (as allocated with malloc/new/new[]), it instead
+  tracks memory allocations at the level of memory pages (as mapped by
+  mmap, brk, etc).  Each mapped page is treated as its own block.
+  Interpreting the page-level output is harder than the heap-level
+  output, but this option is useful if you want to account for every
+  byte of memory used by a program.
+
+* DRD has two new command-line options: --free-is-write and
+  --trace-alloc.  The former allows to detect reading from already freed
+  memory, and the latter allows tracing of all memory allocations and
+  deallocations.
+
+* DRD has several new annotations.  Custom barrier implementations can
+  now be annotated, as well as benign races on static variables.
+
+* DRD's happens before / happens after annotations have been made more
+  powerful, so that they can now also be used to annotate e.g. a smart
+  pointer implementation.
+
+* Helgrind's annotation set has also been drastically improved, so as
+  to provide to users a general set of annotations to describe locks,
+  semaphores, barriers and condition variables.  Annotations to
+  describe thread-safe reference counted heap objects have also been
+  added.
+
+* Memcheck has a new command-line option, --show-possibly-lost, which
+  is enabled by default.  When disabled, the leak detector will not
+  show possibly-lost blocks.
+
+* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool),
+  has been added.  DHAT keeps track of allocated heap blocks, and also
+  inspects every memory reference to see which block (if any) is being
+  accessed.  This gives a lot of insight into block lifetimes,
+  utilisation, turnover, liveness, and the location of hot and cold
+  fields.  You can use DHAT to do hot-field profiling.
+
+* ==================== OTHER CHANGES ====================
+
+* Improved support for unfriendly self-modifying code: the extra
+  overhead incurred by --smc-check=all has been reduced by
+  approximately a factor of 5 as compared with 3.5.0.
+
+* Ability to show directory names for source files in error messages.
+  This is combined with a flexible mechanism for specifying which
+  parts of the paths should be shown.  This is enabled by the new flag
+  --fullpath-after.
+
+* A new flag, --require-text-symbol, which will stop the run if a
+  specified symbol is not found it a given shared object when it is
+  loaded into the process.  This makes advanced working with function
+  intercepting and wrapping safer and more reliable.
+
+* Improved support for the Valkyrie GUI, version 2.0.0.  GUI output
+  and control of Valgrind is now available for the tools Memcheck and
+  Helgrind.  XML output from Valgrind is available for Memcheck,
+  Helgrind and exp-Ptrcheck.
+
+* More reliable stack unwinding on amd64-linux, particularly in the
+  presence of function wrappers, and with gcc-4.5 compiled code.
+
+* Modest scalability (performance improvements) for massive
+  long-running applications, particularly for those with huge amounts
+  of code.
+
+* Support for analyzing programs running under Wine with has been
+  improved.  The header files <valgrind/valgrind.h>,
+  <valgrind/memcheck.h> and <valgrind/drd.h> can now be used in
+  Windows-programs compiled with MinGW or one of the Microsoft Visual
+  Studio compilers.
+
+* A rare but serious error in the 64-bit x86 CPU simulation was fixed.
+  The 32-bit simulator was not affected.  This did not occur often,
+  but when it did would usually crash the program under test.
+  Bug 245925.
+
+* A large number of bugs were fixed.  These are shown below.
+
+* A number of bugs were investigated, and were candidates for fixing,
+  but are not fixed in 3.6.0, due to lack of developer time.  They may
+  get fixed in later releases.  They are:
+
+  194402  vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49  (FXSAVE64)
+  212419  false positive "lock order violated" (A+B vs A) 
+  213685  Undefined value propagates past dependency breaking instruction
+  216837  Incorrect instrumentation of NSOperationQueue on Darwin 
+  237920  valgrind segfault on fork failure 
+  242137  support for code compiled by LLVM-2.8
+  242423  Another unknown Intel cache config value 
+  243232  Inconsistent Lock Orderings report with trylock 
+  243483  ppc: callgrind triggers VEX assertion failure 
+  243935  Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong
+  244677  Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion
+          'thr' failed. 
+  246152  callgrind internal error after pthread_cancel on 32 Bit Linux 
+  249435  Analyzing wine programs with callgrind triggers a crash 
+  250038  ppc64: Altivec lvsr and lvsl instructions fail their regtest
+  250065  Handling large allocations 
+  250101  huge "free" memory usage due to m_mallocfree.c
+          "superblocks fragmentation"
+  251569  vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
+  252091  Callgrind on ARM does not detect function returns correctly
+  252600  [PATCH] Allow lhs to be a pointer for shl/shr
+  254420  memory pool tracking broken
+  n-i-bz  support for adding symbols for JIT generated code
+
+
+The following bugs have been fixed or resolved.  Note that "n-i-bz"
+stands for "not in bugzilla" -- that is, a bug that was reported to us
+but never got a bugzilla entry.  We encourage you to file bugs in
+bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+mailing the developers (or mailing lists) directly -- bugs that are
+not entered into bugzilla tend to get forgotten about or ignored.
+
+To see details of a given bug, visit
+https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+where XXXXXX is the bug number as listed below.
+
+135264  dcbzl instruction missing
+142688  == 250799
+153699  Valgrind should report unaligned reads with movdqa
+180217  == 212335
+190429  Valgrind reports lost of errors in ld.so
+        with x86_64 2.9.90 glibc 
+197266  valgrind appears to choke on the xmms instruction
+        "roundsd" on x86_64 
+197988  Crash when demangling very large symbol names
+202315  unhandled syscall: 332 (inotify_init1)
+203256  Add page-level profiling to Massif
+205093  dsymutil=yes needs quotes, locking (partial fix)
+205241  Snow Leopard 10.6 support (partial fix)
+206600  Leak checker fails to upgrade indirect blocks when their
+        parent becomes reachable 
+210935  port valgrind.h (not valgrind) to win32 so apps run under
+        wine can make client requests
+211410  vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89
+        within Linux ip-stack checksum functions 
+212335  unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0
+        (lzcnt %eax,%eax) 
+213685  Undefined value propagates past dependency breaking instruction
+        (partial fix)
+215914  Valgrind inserts bogus empty environment variable 
+217863  == 197988
+219538  adjtimex syscall wrapper wrong in readonly adjtime mode 
+222545  shmat fails under valgind on some arm targets 
+222560  ARM NEON support 
+230407  == 202315
+231076  == 202315
+232509  Docs build fails with formatting inside <title> elements 
+232793  == 202315
+235642  [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls 
+236546  vex x86->IR: 0x66 0xF 0x3A 0xA
+237202  vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B 
+237371  better support for VALGRIND_MALLOCLIKE_BLOCK 
+237485  symlink (syscall 57) is not supported on Mac OS 
+237723  sysno == 101 exp-ptrcheck: the 'impossible' happened:
+        unhandled syscall 
+238208  is_just_below_ESP doesn't take into account red-zone 
+238345  valgrind passes wrong $0 when executing a shell script 
+238679  mq_timedreceive syscall doesn't flag the reception buffer
+        as "defined"
+238696  fcntl command F_DUPFD_CLOEXEC not supported 
+238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
+238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
+238745  3.5.0 Make fails on PPC Altivec opcodes, though configure
+        says "Altivec off"
+239992  vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48 
+240488  == 197988
+240639  == 212335
+241377  == 236546
+241903  == 202315
+241920  == 212335
+242606  unhandled syscall: setegid (in Ptrcheck)
+242814  Helgrind "Impossible has happened" during
+        QApplication::initInstance(); 
+243064  Valgrind attempting to read debug information from iso 
+243270  Make stack unwinding in Valgrind wrappers more reliable
+243884  exp-ptrcheck: the 'impossible happened: unhandled syscall 
+        sysno = 277 (mq_open)
+244009  exp-ptrcheck unknown syscalls in analyzing lighttpd
+244493  ARM VFP d16-d31 registers support 
+244670  add support for audit_session_self syscall on Mac OS 10.6
+244921  The xml report of helgrind tool is not well format
+244923  In the xml report file, the  not escape the 
+        xml char, eg '<','&','>'
+245535  print full path names in plain text reports 
+245925  x86-64 red zone handling problem 
+246258  Valgrind not catching integer underruns + new [] s
+246311  reg/reg cmpxchg doesn't work on amd64
+246549  unhandled syscall unix:277 while testing 32-bit Darwin app 
+246888  Improve Makefile.vex.am 
+247510  [OS X 10.6] Memcheck reports unaddressable bytes passed 
+        to [f]chmod_extended
+247526  IBM POWER6 (ISA 2.05) support is incomplete
+247561  Some leak testcases fails due to reachable addresses in
+        caller save regs
+247875  sizeofIRType to handle Ity_I128 
+247894  [PATCH] unhandled syscall sys_readahead 
+247980  Doesn't honor CFLAGS passed to configure 
+248373  darwin10.supp is empty in the trunk 
+248822  Linux FIBMAP ioctl has int parameter instead of long
+248893  [PATCH] make readdwarf.c big endianess safe to enable
+        unwinding on big endian systems
+249224  Syscall 336 not supported (SYS_proc_info) 
+249359  == 245535
+249775  Incorrect scheme for detecting NEON capabilities of host CPU
+249943  jni JVM init fails when using valgrind
+249991  Valgrind incorrectly declares AESKEYGENASSIST support
+        since VEX r2011
+249996  linux/arm: unhandled syscall: 181 (__NR_pwrite64)
+250799  frexp$fenv_access_off function generates SIGILL 
+250998  vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E 
+251251  support pclmulqdq insn 
+251362  valgrind: ARM: attach to debugger either fails or provokes
+        kernel oops 
+251674  Unhandled syscall 294
+251818  == 254550
+
+254257  Add support for debugfiles found by build-id
+254550  [PATCH] Implement DW_ATE_UTF (DWARF4)
+254646  Wrapped functions cause stack misalignment on OS X
+        (and possibly Linux)
+254556  ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
+
+(3.6.0: 21 October 2010, vex r2068, valgrind r11471).
+
 
 
 Release 3.5.0 (19 August 2009)
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README
index 71c525fdd..2811aee3f 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README
@@ -14,16 +14,17 @@ If you have problems, consult the FAQ to see if there are workarounds.
 
 Executive Summary
 ~~~~~~~~~~~~~~~~~
-Valgrind is an award-winning instrumentation framework for building
-dynamic analysis tools. There are Valgrind tools that can automatically
-detect many memory management and threading bugs, and profile your
-programs in detail. You can also use Valgrind to build new tools.
+Valgrind is a framework for building dynamic analysis tools. There are
+Valgrind tools that can automatically detect many memory management
+and threading bugs, and profile your programs in detail. You can also
+use Valgrind to build new tools.
 
 The Valgrind distribution currently includes six production-quality
-tools: a memory error detector, two thread error detectors, a cache and
-branch-prediction profiler, a call-graph generating cache profiler, and
-a heap profiler. It also includes two experimental tools:  a
-heap/stack/global array overrun detector, and a SimPoint basic block vector
+tools: a memory error detector, two thread error detectors, a cache
+and branch-prediction profiler, a call-graph generating cache abd
+branch-prediction profiler, and a heap profiler. It also includes
+three experimental tools: a heap/stack/global array overrun detector,
+a different kind of heap profiler, and a SimPoint basic block vector
 generator.
 
 Valgrind is closely tied to details of the CPU, operating system and to
@@ -35,6 +36,7 @@ platforms:
 - AMD64/Linux
 - PPC32/Linux
 - PPC64/Linux
+- ARM/Linux
 - x86/MacOSX
 - AMD64/MacOSX
 
@@ -45,6 +47,9 @@ on Intel processors.  Also note that the core of MacOSX is called
 Valgrind is licensed under the GNU General Public License, version 2. 
 Read the file COPYING in the source distribution for details.
 
+However: if you contribute code, you need to make it available as GPL
+version 2 or later, and not 2-only.
+
 
 Documentation
 ~~~~~~~~~~~~~
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.L4 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.L4
new file mode 100644
index 000000000..3a5467ac6
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.L4
@@ -0,0 +1,5 @@
+
+Based on versions:
+ - Valgrind rev. 11778
+ - VEX rev. 2152
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.s390 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.s390
new file mode 100644
index 000000000..2dff9dedd
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README.s390
@@ -0,0 +1,35 @@
+Requirements
+------------
+- You need GCC 3.4 or later to compile the s390 port.
+- A working combination of autotools is required.
+- To run valgrind a z900 machine or any later model is needed.
+
+
+Limitations
+-----------
+- 31-bit client programs are not supported.
+- Hexadecimal floating point is not supported.
+- Decimal floating point is not supported yet.
+- Currently, only memcheck, massif, lackey, and none are supported
+- helgrind and drd seem to work on SLES10,11 and RHEL5,6 on z9,z10 and z196
+  but might fail on other hardware/software combinations.
+- Some gcc versions use mvc to copy 4/8 byte values. This will affect some
+  debug messages. Valgrind will complain about 4 or 8 one-byte reads/writes
+  instead of just 1 read/write.
+- exp-ptrcheck and callgrind are not supported.
+
+
+Recommendations
+---------------
+Applications should be compiled with -fno-builtin to avoid
+false positives due to builtin string operations when running memcheck.
+
+
+Reading Material
+----------------
+(1) Linux for zSeries ELF ABI Supplement
+    http://refspecs.linuxfoundation.org/ELF/zSeries/index.html
+(2) z/Architecture Principles of Operation
+    http://publibfi.boulder.ibm.com/epubs/pdf/dz9zr008.pdf
+(3) z/Architecture Reference Summary
+    http://publibfi.boulder.ibm.com/epubs/pdf/dz9zs006.pdf
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README_DEVELOPERS b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README_DEVELOPERS
index e08d87257..9d523db56 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README_DEVELOPERS
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/README_DEVELOPERS
@@ -101,6 +101,21 @@ without too much problem by following these steps:
 Steps (1)--(3) can be put in a .gdbinit file, but any directory names must
 be fully expanded (ie. not an environment variable).
 
+A different and possibly easier way is as follows:
+
+(1) Run Valgrind as normal, but add the flag --wait-for-gdb=yes.  This
+    puts the tool executable into a wait loop soon after it gains
+    control.  This delays startup for a few seconds.
+
+(2) In a different shell, do "gdb /proc//exe ", where
+     you read from the output printed by (1).  This attaches
+    GDB to the tool executable, which should be in the abovementioned
+    wait loop.
+
+(3) Do "cont" to continue.  After the loop finishes spinning, startup
+    will continue as normal.  Note that comment (3) above re passing
+    signals applies here too.
+
 
 Self-hosting
 ~~~~~~~~~~~~
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/Makefile-gcc b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/Makefile-gcc
index d12516219..46ee8e3dc 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/Makefile-gcc
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/Makefile-gcc
@@ -9,12 +9,16 @@ PUB_HEADERS = 	pub/libvex_basictypes.h 		\
 		pub/libvex_guest_arm.h			\
 		pub/libvex_guest_ppc32.h		\
 		pub/libvex_guest_ppc64.h		\
+		pub/libvex_guest_s390x.h		\
+		pub/libvex_s390x_common.h		\
 		pub/libvex_guest_offsets.h
 
 PRIV_HEADERS = 	priv/host_x86_defs.h			\
 		priv/host_amd64_defs.h			\
 		priv/host_arm_defs.h			\
 		priv/host_ppc_defs.h			\
+		priv/host_s390_defs.h			\
+		priv/host_s390_disasm.h		        \
 		priv/host_generic_regs.h	        \
 		priv/host_generic_simd64.h	        \
 		priv/host_generic_simd128.h	        \
@@ -39,10 +43,13 @@ LIB_OBJS = 	priv/ir_defs.o                          \
 		priv/host_amd64_defs.o			\
 		priv/host_arm_defs.o			\
 		priv/host_ppc_defs.o			\
+		priv/host_s390_defs.o			\
 		priv/host_x86_isel.o			\
 		priv/host_amd64_isel.o			\
 		priv/host_arm_isel.o			\
 		priv/host_ppc_isel.o			\
+		priv/host_s390_isel.o			\
+                priv/host_s390_disasm.o			\
 		priv/host_generic_regs.o	        \
 		priv/host_generic_simd64.o	        \
 		priv/host_generic_simd128.o	        \
@@ -53,10 +60,12 @@ LIB_OBJS = 	priv/ir_defs.o                          \
 		priv/guest_amd64_helpers.o		\
 		priv/guest_arm_helpers.o		\
 		priv/guest_ppc_helpers.o		\
+		priv/guest_s390_helpers.o		\
 		priv/guest_x86_toIR.o			\
 		priv/guest_amd64_toIR.o			\
 		priv/guest_arm_toIR.o			\
-		priv/guest_ppc_toIR.o
+		priv/guest_ppc_toIR.o                   \
+		priv/guest_s390_toIR.o
 
 PUB_INCLUDES = -Ipub
 
@@ -194,7 +203,9 @@ pub/libvex_guest_offsets.h:
 	$(CC) $(CCFLAGS) -O -S -o auxprogs/genoffsets.s \
 				auxprogs/genoffsets.c
 	grep xyzzy auxprogs/genoffsets.s | grep define \
-	   | sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \
+	   | sed "s/xyzzy\\$$//g" \
+	   | sed "s/xyzzy#//g" \
+	   | sed "s/xyzzy//g" \
 	   > pub/libvex_guest_offsets.h
 	rm -f auxprogs/genoffsets.s
 
@@ -246,6 +257,10 @@ priv/host_ppc_defs.o: $(ALL_HEADERS) priv/host_ppc_defs.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_defs.o \
 					 -c priv/host_ppc_defs.c
 
+priv/host_s390_defs.o: $(ALL_HEADERS) priv/host_s390_defs.c
+	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_defs.o \
+					 -c priv/host_s390_defs.c
+
 priv/host_x86_isel.o: $(ALL_HEADERS) priv/host_x86_isel.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_x86_isel.o \
 					 -c priv/host_x86_isel.c
@@ -262,6 +277,10 @@ priv/host_ppc_isel.o: $(ALL_HEADERS) priv/host_ppc_isel.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_isel.o \
 					 -c priv/host_ppc_isel.c
 
+priv/host_s390_isel.o: $(ALL_HEADERS) priv/host_s390_isel.c
+	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_isel.o \
+					 -c priv/host_s390_isel.c
+
 priv/host_generic_regs.o: $(ALL_HEADERS) priv/host_generic_regs.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_regs.o \
 					 -c priv/host_generic_regs.c
@@ -314,6 +333,18 @@ priv/guest_ppc_helpers.o: $(ALL_HEADERS) priv/guest_ppc_helpers.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_helpers.o \
 					 -c priv/guest_ppc_helpers.c
 
+priv/guest_s390_helpers.o: $(ALL_HEADERS) priv/guest_s390_helpers.c
+	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_s390_helpers.o \
+					 -c priv/guest_s390_helpers.c
+
 priv/guest_ppc_toIR.o: $(ALL_HEADERS) priv/guest_ppc_toIR.c
 	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_toIR.o \
 					 -c priv/guest_ppc_toIR.c
+
+priv/guest_s390_toIR.o: $(ALL_HEADERS) priv/guest_s390_toIR.c
+	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_s390_toIR.o \
+					 -c priv/guest_s390_toIR.c
+
+priv/host_s390_disasm.o: $(ALL_HEADERS) priv/host_s390_disasm.c
+	$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_disasm.o \
+					 -c priv/host_s390_disasm.c
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/auxprogs/genoffsets.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/auxprogs/genoffsets.c
index b37969183..b25b7a38d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/auxprogs/genoffsets.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/auxprogs/genoffsets.c
@@ -51,6 +51,7 @@
 #include "../pub/libvex_guest_ppc32.h"
 #include "../pub/libvex_guest_ppc64.h"
 #include "../pub/libvex_guest_arm.h"
+#include "../pub/libvex_guest_s390x.h"
 
 #define VG_STRINGIFZ(__str)  #__str
 #define VG_STRINGIFY(__str)  VG_STRINGIFZ(__str)
@@ -155,6 +156,19 @@ void foo ( void )
    GENOFFSET(ARM,arm,R13);
    GENOFFSET(ARM,arm,R14);
    GENOFFSET(ARM,arm,R15T);
+
+   // s390x
+   GENOFFSET(S390X,s390x,r2);
+   GENOFFSET(S390X,s390x,r3);
+   GENOFFSET(S390X,s390x,r4);
+   GENOFFSET(S390X,s390x,r5);
+   GENOFFSET(S390X,s390x,r6);
+   GENOFFSET(S390X,s390x,r7);
+   GENOFFSET(S390X,s390x,r15);
+   GENOFFSET(S390X,s390x,IA);
+   GENOFFSET(S390X,s390x,SYSNO);
+   GENOFFSET(S390X,s390x,IP_AT_SYSCALL);
+   GENOFFSET(S390X,s390x,fpc);
 }
 
 /*--------------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_defs.h
index 6525076f1..33450c3a2 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_defs.h
@@ -108,6 +108,8 @@ extern ULong amd64g_calculate_RCL  (
                 ULong arg, ULong rot_amt, ULong rflags_in, Long sz 
              );
 
+extern ULong amd64g_calculate_pclmul(ULong s1, ULong s2, ULong which);
+
 extern ULong amd64g_check_fldcw ( ULong fpucw );
 
 extern ULong amd64g_create_fpucw ( ULong fpround );
@@ -135,6 +137,10 @@ extern ULong amd64g_calculate_mmx_psadbw   ( ULong, ULong );
 extern ULong amd64g_calculate_mmx_pmovmskb ( ULong );
 extern ULong amd64g_calculate_sse_pmovmskb ( ULong w64hi, ULong w64lo );
 
+extern ULong amd64g_calc_crc32b ( ULong crcIn, ULong b );
+extern ULong amd64g_calc_crc32w ( ULong crcIn, ULong w );
+extern ULong amd64g_calc_crc32l ( ULong crcIn, ULong l );
+extern ULong amd64g_calc_crc32q ( ULong crcIn, ULong q );
 
 /* --- DIRTY HELPERS --- */
 
@@ -148,7 +154,8 @@ extern void  amd64g_dirtyhelper_CPUID_sse42_and_cx16 ( VexGuestAMD64State* st );
 
 extern void  amd64g_dirtyhelper_FINIT ( VexGuestAMD64State* );
 
-extern void  amd64g_dirtyhelper_FXSAVE ( VexGuestAMD64State*, HWord );
+extern void      amd64g_dirtyhelper_FXSAVE  ( VexGuestAMD64State*, HWord );
+extern VexEmWarn amd64g_dirtyhelper_FXRSTOR ( VexGuestAMD64State*, HWord );
 
 extern ULong amd64g_dirtyhelper_RDTSC ( void );
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_helpers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_helpers.c
index c24cba37b..cea850f42 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_helpers.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_helpers.c
@@ -824,6 +824,9 @@ ULong LibVEX_GuestAMD64_get_rflags ( /*IN*/VexGuestAMD64State* vex_state )
       rflags |= (1<<10);
    if (vex_state->guest_IDFLAG == 1)
       rflags |= (1<<21);
+   if (vex_state->guest_ACFLAG == 1)
+      rflags |= (1<<18);
+
    return rflags;
 }
 
@@ -1176,6 +1179,14 @@ IRExpr* guest_amd64_spechelper ( HChar* function_name,
                       binop(Iop_Shr64,cc_dep1,mkU8(7)),
                       mkU64(1));
       }
+      if (isU64(cc_op, AMD64G_CC_OP_LOGICB) && isU64(cond, AMD64CondNS)) {
+         /* byte and/or/xor, then NS --> (UInt)!result[7] */
+         return binop(Iop_Xor64,
+                      binop(Iop_And64,
+                            binop(Iop_Shr64,cc_dep1,mkU8(7)),
+                            mkU64(1)),
+                      mkU64(1));
+      }
 
       /*---------------- INCB ----------------*/
 
@@ -1451,6 +1462,68 @@ ULong amd64g_calculate_FXAM ( ULong tag, ULong dbl )
 }
 
 
+/* This is used to implement both 'frstor' and 'fldenv'.  The latter
+   appears to differ from the former only in that the 8 FP registers
+   themselves are not transferred into the guest state. */
+static
+VexEmWarn do_put_x87 ( Bool moveRegs,
+                       /*IN*/UChar* x87_state,
+                       /*OUT*/VexGuestAMD64State* vex_state )
+{
+   Int        stno, preg;
+   UInt       tag;
+   ULong*     vexRegs = (ULong*)(&vex_state->guest_FPREG[0]);
+   UChar*     vexTags = (UChar*)(&vex_state->guest_FPTAG[0]);
+   Fpu_State* x87     = (Fpu_State*)x87_state;
+   UInt       ftop    = (x87->env[FP_ENV_STAT] >> 11) & 7;
+   UInt       tagw    = x87->env[FP_ENV_TAG];
+   UInt       fpucw   = x87->env[FP_ENV_CTRL];
+   UInt       c3210   = x87->env[FP_ENV_STAT] & 0x4700;
+   VexEmWarn  ew;
+   UInt       fpround;
+   ULong      pair;
+
+   /* Copy registers and tags */
+   for (stno = 0; stno < 8; stno++) {
+      preg = (stno + ftop) & 7;
+      tag = (tagw >> (2*preg)) & 3;
+      if (tag == 3) {
+         /* register is empty */
+         /* hmm, if it's empty, does it still get written?  Probably
+            safer to say it does.  If we don't, memcheck could get out
+            of sync, in that it thinks all FP registers are defined by
+            this helper, but in reality some have not been updated. */
+         if (moveRegs)
+            vexRegs[preg] = 0; /* IEEE754 64-bit zero */
+         vexTags[preg] = 0;
+      } else {
+         /* register is non-empty */
+         if (moveRegs)
+            convert_f80le_to_f64le( &x87->reg[10*stno], 
+                                    (UChar*)&vexRegs[preg] );
+         vexTags[preg] = 1;
+      }
+   }
+
+   /* stack pointer */
+   vex_state->guest_FTOP = ftop;
+
+   /* status word */
+   vex_state->guest_FC3210 = c3210;
+
+   /* handle the control word, setting FPROUND and detecting any
+      emulation warnings. */
+   pair    = amd64g_check_fldcw ( (ULong)fpucw );
+   fpround = (UInt)pair;
+   ew      = (VexEmWarn)(pair >> 32);
+   
+   vex_state->guest_FPROUND = fpround & 3;
+
+   /* emulation warnings --> caller */
+   return ew;
+}
+
+
 /* Create an x87 FPU state from the guest state, as close as
    we can approximate it. */
 static
@@ -1607,6 +1680,94 @@ void amd64g_dirtyhelper_FXSAVE ( VexGuestAMD64State* gst, HWord addr )
 }
 
 
+/* CALLED FROM GENERATED CODE */
+/* DIRTY HELPER (writes guest state, reads guest mem) */
+VexEmWarn amd64g_dirtyhelper_FXRSTOR ( VexGuestAMD64State* gst, HWord addr )
+{
+   Fpu_State tmp;
+   VexEmWarn warnX87 = EmWarn_NONE;
+   VexEmWarn warnXMM = EmWarn_NONE;
+   UShort*   addrS   = (UShort*)addr;
+   UChar*    addrC   = (UChar*)addr;
+   U128*     xmm     = (U128*)(addr + 160);
+   UShort    fp_tags;
+   Int       r, stno, i;
+
+   /* Restore %xmm0 .. %xmm15.  If the host is big-endian, these need
+      to be byte-swapped. */
+   vassert(host_is_little_endian());
+
+#  define COPY_U128(_dst,_src)                       \
+      do { _dst[0] = _src[0]; _dst[1] = _src[1];     \
+           _dst[2] = _src[2]; _dst[3] = _src[3]; }   \
+      while (0)
+
+   COPY_U128( gst->guest_XMM0, xmm[0] );
+   COPY_U128( gst->guest_XMM1, xmm[1] );
+   COPY_U128( gst->guest_XMM2, xmm[2] );
+   COPY_U128( gst->guest_XMM3, xmm[3] );
+   COPY_U128( gst->guest_XMM4, xmm[4] );
+   COPY_U128( gst->guest_XMM5, xmm[5] );
+   COPY_U128( gst->guest_XMM6, xmm[6] );
+   COPY_U128( gst->guest_XMM7, xmm[7] );
+   COPY_U128( gst->guest_XMM8, xmm[8] );
+   COPY_U128( gst->guest_XMM9, xmm[9] );
+   COPY_U128( gst->guest_XMM10, xmm[10] );
+   COPY_U128( gst->guest_XMM11, xmm[11] );
+   COPY_U128( gst->guest_XMM12, xmm[12] );
+   COPY_U128( gst->guest_XMM13, xmm[13] );
+   COPY_U128( gst->guest_XMM14, xmm[14] );
+   COPY_U128( gst->guest_XMM15, xmm[15] );
+
+#  undef COPY_U128
+
+   /* Copy the x87 registers out of the image, into a temporary
+      Fpu_State struct. */
+   for (i = 0; i < 14; i++) tmp.env[i] = 0;
+   for (i = 0; i < 80; i++) tmp.reg[i] = 0;
+   /* fill in tmp.reg[0..7] */
+   for (stno = 0; stno < 8; stno++) {
+      UShort* dstS = (UShort*)(&tmp.reg[10*stno]);
+      UShort* srcS = (UShort*)(&addrS[16 + 8*stno]);
+      dstS[0] = srcS[0];
+      dstS[1] = srcS[1];
+      dstS[2] = srcS[2];
+      dstS[3] = srcS[3];
+      dstS[4] = srcS[4];
+   }
+   /* fill in tmp.env[0..13] */
+   tmp.env[FP_ENV_CTRL] = addrS[0]; /* FCW: fpu control word */
+   tmp.env[FP_ENV_STAT] = addrS[1]; /* FCW: fpu status word */
+
+   fp_tags = 0;
+   for (r = 0; r < 8; r++) {
+      if (addrC[4] & (1<> 32);
+
+     gst->guest_SSEROUND = w64 & 0xFFFFFFFFULL;
+   }
+
+   /* Prefer an X87 emwarn over an XMM one, if both exist. */
+   if (warnX87 != EmWarn_NONE)
+      return warnX87;
+   else
+      return warnXMM;
+}
+
+
 /* DIRTY HELPER (writes guest state) */
 /* Initialise the x87 FPU state as per 'finit'. */
 void amd64g_dirtyhelper_FINIT ( VexGuestAMD64State* gst )
@@ -2039,6 +2200,7 @@ void amd64g_dirtyhelper_CPUID_sse3_and_cx16 ( VexGuestAMD64State* st )
                      dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16
                      xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida
                      arat tpr_shadow vnmi flexpriority ept vpid
+                     MINUS aes (see below)
    bogomips        : 6957.57
    clflush size    : 64
    cache_alignment : 64
@@ -2062,7 +2224,10 @@ void amd64g_dirtyhelper_CPUID_sse42_and_cx16 ( VexGuestAMD64State* st )
          SET_ABCD(0x0000000b, 0x756e6547, 0x6c65746e, 0x49656e69);
          break;
       case 0x00000001:
-         SET_ABCD(0x00020652, 0x00100800, 0x0298e3ff, 0xbfebfbff);
+         // & ~(1<<25): don't claim to support AES insns.  See
+         // bug 249991.
+         SET_ABCD(0x00020652, 0x00100800, 0x0298e3ff & ~(1<<25),
+                                          0xbfebfbff);
          break;
       case 0x00000002:
          SET_ABCD(0x55035a01, 0x00f0b2e3, 0x00000000, 0x09ca212c);
@@ -2297,6 +2462,51 @@ ULong amd64g_calculate_RCL ( ULong arg,
    return wantRflags ? rflags_in : arg;
 }
 
+/* Taken from gf2x-0.9.5, released under GPLv2+ (later versions LGPLv2+)
+ * svn://scm.gforge.inria.fr/svn/gf2x/trunk/hardware/opteron/gf2x_mul1.h@25
+ */
+ULong amd64g_calculate_pclmul(ULong a, ULong b, ULong which)
+{
+    ULong hi, lo, tmp, A[16];
+
+   A[0] = 0;            A[1] = a;
+   A[2] = A[1] << 1;    A[3] = A[2] ^ a;
+   A[4] = A[2] << 1;    A[5] = A[4] ^ a;
+   A[6] = A[3] << 1;    A[7] = A[6] ^ a;
+   A[8] = A[4] << 1;    A[9] = A[8] ^ a;
+   A[10] = A[5] << 1;   A[11] = A[10] ^ a;
+   A[12] = A[6] << 1;   A[13] = A[12] ^ a;
+   A[14] = A[7] << 1;   A[15] = A[14] ^ a;
+
+   lo = (A[b >> 60] << 4) ^ A[(b >> 56) & 15];
+   hi = lo >> 56;
+   lo = (lo << 8) ^ (A[(b >> 52) & 15] << 4) ^ A[(b >> 48) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 44) & 15] << 4) ^ A[(b >> 40) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 36) & 15] << 4) ^ A[(b >> 32) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 28) & 15] << 4) ^ A[(b >> 24) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 20) & 15] << 4) ^ A[(b >> 16) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 12) & 15] << 4) ^ A[(b >> 8) & 15];
+   hi = (hi << 8) | (lo >> 56);
+   lo = (lo << 8) ^ (A[(b >> 4) & 15] << 4) ^ A[b & 15];
+
+   ULong m0 = -1;
+   m0 /= 255;
+   tmp = -((a >> 63) & 1); tmp &= ((b & (m0 * 0xfe)) >> 1); hi = hi ^ tmp;
+   tmp = -((a >> 62) & 1); tmp &= ((b & (m0 * 0xfc)) >> 2); hi = hi ^ tmp;
+   tmp = -((a >> 61) & 1); tmp &= ((b & (m0 * 0xf8)) >> 3); hi = hi ^ tmp;
+   tmp = -((a >> 60) & 1); tmp &= ((b & (m0 * 0xf0)) >> 4); hi = hi ^ tmp;
+   tmp = -((a >> 59) & 1); tmp &= ((b & (m0 * 0xe0)) >> 5); hi = hi ^ tmp;
+   tmp = -((a >> 58) & 1); tmp &= ((b & (m0 * 0xc0)) >> 6); hi = hi ^ tmp;
+   tmp = -((a >> 57) & 1); tmp &= ((b & (m0 * 0x80)) >> 7); hi = hi ^ tmp;
+
+   return which ? hi : lo;
+}
+
 
 /* CALLED FROM GENERATED CODE */
 /* DIRTY HELPER (non-referentially-transparent) */
@@ -2511,6 +2721,43 @@ ULong amd64g_calculate_sse_pmovmskb ( ULong w64hi, ULong w64lo )
    return ((rHi8 & 0xFF) << 8) | (rLo8 & 0xFF);
 }
 
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong amd64g_calc_crc32b ( ULong crcIn, ULong b )
+{
+   UInt  i;
+   ULong crc = (b & 0xFFULL) ^ crcIn;
+   for (i = 0; i < 8; i++)
+      crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78ULL : 0);
+   return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong amd64g_calc_crc32w ( ULong crcIn, ULong w )
+{
+   UInt  i;
+   ULong crc = (w & 0xFFFFULL) ^ crcIn;
+   for (i = 0; i < 16; i++)
+      crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78ULL : 0);
+   return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong amd64g_calc_crc32l ( ULong crcIn, ULong l )
+{
+   UInt i;
+   ULong crc = (l & 0xFFFFFFFFULL) ^ crcIn;
+   for (i = 0; i < 32; i++)
+      crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78ULL : 0);
+   return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong amd64g_calc_crc32q ( ULong crcIn, ULong q )
+{
+   ULong crc = amd64g_calc_crc32l(crcIn, q);
+   return amd64g_calc_crc32l(crc, q >> 32);
+}
+
 
 /*---------------------------------------------------------------*/
 /*--- Helpers for SSE4.2 PCMP{E,I}STR{I,M}                    ---*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_toIR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_toIR.c
index f8a5da178..2e7c8a296 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_toIR.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_amd64_toIR.c
@@ -411,6 +411,7 @@ static void unimplemented ( HChar* str )
 #define OFFB_FPREGS    offsetof(VexGuestAMD64State,guest_FPREG[0])
 #define OFFB_FPTAGS    offsetof(VexGuestAMD64State,guest_FPTAG[0])
 #define OFFB_DFLAG     offsetof(VexGuestAMD64State,guest_DFLAG)
+#define OFFB_ACFLAG    offsetof(VexGuestAMD64State,guest_ACFLAG)
 #define OFFB_IDFLAG    offsetof(VexGuestAMD64State,guest_IDFLAG)
 #define OFFB_FTOP      offsetof(VexGuestAMD64State,guest_FTOP)
 #define OFFB_FC3210    offsetof(VexGuestAMD64State,guest_FC3210)
@@ -749,6 +750,13 @@ static Bool haveF3noF2 ( Prefix pfx )
      toBool((pfx & (PFX_F2|PFX_F3)) == PFX_F3);
 }
 
+/* Return True iff pfx has F2 set and F3 clear */
+static Bool haveF2noF3 ( Prefix pfx )
+{
+  return 
+     toBool((pfx & (PFX_F2|PFX_F3)) == PFX_F2);
+}
+
 /* Return True iff pfx has 66, F2 and F3 clear */
 static Bool haveNo66noF2noF3 ( Prefix pfx )
 {
@@ -7725,9 +7733,6 @@ ULong dis_cmpxchg_G_E ( /*OUT*/Bool* ok,
 
    if (epartIsReg(rm)) {
       /* case 1 */
-      *ok = False;
-      return delta0;
-      /* awaiting test case */
       assign( dest, getIRegE(size, pfx, rm) );
       delta0++;
       assign( src, getIRegG(size, pfx, rm) );
@@ -9188,26 +9193,27 @@ DisResult disInstr_AMD64_WRK (
       thusly placed in guest-x86/toIR.c. */
 
    /* 0F AE /0 = FXSAVE m512 -- write x87 and SSE state to memory.
-      Note that REX.W 0F AE /0 writes a slightly different format and
-      we don't handle that here. */
-   if (haveNo66noF2noF3(pfx) && sz == 4 
+      Note that the presence or absence of REX.W slightly affects the
+      written format: whether the saved FPU IP and DP pointers are 64
+      or 32 bits.  But the helper function we call simply writes zero
+      bits in the relevant fields (which are 64 bits regardless of
+      what REX.W is) and so it's good enough (iow, equally broken) in
+      both cases. */
+   if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)
        && insn[0] == 0x0F && insn[1] == 0xAE
        && !epartIsReg(insn[2]) && gregOfRexRM(pfx,insn[2]) == 0) {
        IRDirty* d;
       modrm = getUChar(delta+2);
-      vassert(sz == 4);
       vassert(!epartIsReg(modrm));
-      /* REX.W must not be set.  That should be assured us by sz == 4
-         above. */
-      vassert(!(pfx & PFX_REXW));
 
       addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
       delta += 2+alen;
+      gen_SEGV_if_not_16_aligned(addr);
 
-      DIP("fxsave %s\n", dis_buf);
+      DIP("%sfxsave %s\n", sz==8 ? "rex64/" : "", dis_buf);
 
       /* Uses dirty helper: 
-            void amd64g_do_FXSAVE ( VexGuestAMD64State*, UInt ) */
+            void amd64g_do_FXSAVE ( VexGuestAMD64State*, ULong ) */
       d = unsafeIRDirty_0_N ( 
              0/*regparms*/, 
              "amd64g_dirtyhelper_FXSAVE", 
@@ -9263,6 +9269,82 @@ DisResult disInstr_AMD64_WRK (
       goto decode_success;
    }
 
+   /* 0F AE /1 = FXRSTOR m512 -- read x87 and SSE state from memory.
+      As with FXSAVE above we ignore the value of REX.W since we're
+      not bothering with the FPU DP and IP fields. */
+   if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)
+       && insn[0] == 0x0F && insn[1] == 0xAE
+       && !epartIsReg(insn[2]) && gregOfRexRM(pfx,insn[2]) == 1) {
+       IRDirty* d;
+      modrm = getUChar(delta+2);
+      vassert(!epartIsReg(modrm));
+
+      addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+      delta += 2+alen;
+      gen_SEGV_if_not_16_aligned(addr);
+
+      DIP("%sfxrstor %s\n", sz==8 ? "rex64/" : "", dis_buf);
+
+      /* Uses dirty helper: 
+            VexEmWarn amd64g_do_FXRSTOR ( VexGuestAMD64State*, ULong )
+         NOTE:
+            the VexEmWarn value is simply ignored
+      */
+      d = unsafeIRDirty_0_N ( 
+             0/*regparms*/, 
+             "amd64g_dirtyhelper_FXRSTOR", 
+             &amd64g_dirtyhelper_FXRSTOR,
+             mkIRExprVec_1( mkexpr(addr) )
+          );
+      d->needsBBP = True;
+
+      /* declare we're reading memory */
+      d->mFx   = Ifx_Read;
+      d->mAddr = mkexpr(addr);
+      d->mSize = 512;
+
+      /* declare we're writing guest state */
+      d->nFxState = 7;
+
+      d->fxState[0].fx     = Ifx_Write;
+      d->fxState[0].offset = OFFB_FTOP;
+      d->fxState[0].size   = sizeof(UInt);
+
+      d->fxState[1].fx     = Ifx_Write;
+      d->fxState[1].offset = OFFB_FPREGS;
+      d->fxState[1].size   = 8 * sizeof(ULong);
+
+      d->fxState[2].fx     = Ifx_Write;
+      d->fxState[2].offset = OFFB_FPTAGS;
+      d->fxState[2].size   = 8 * sizeof(UChar);
+
+      d->fxState[3].fx     = Ifx_Write;
+      d->fxState[3].offset = OFFB_FPROUND;
+      d->fxState[3].size   = sizeof(ULong);
+
+      d->fxState[4].fx     = Ifx_Write;
+      d->fxState[4].offset = OFFB_FC3210;
+      d->fxState[4].size   = sizeof(ULong);
+
+      d->fxState[5].fx     = Ifx_Write;
+      d->fxState[5].offset = OFFB_XMM0;
+      d->fxState[5].size   = 16 * sizeof(U128);
+
+      d->fxState[6].fx     = Ifx_Write;
+      d->fxState[6].offset = OFFB_SSEROUND;
+      d->fxState[6].size   = sizeof(ULong);
+
+      /* Be paranoid ... this assertion tries to ensure the 16 %xmm
+	 images are packed back-to-back.  If not, the value of
+	 d->fxState[5].size is wrong. */
+      vassert(16 == sizeof(U128));
+      vassert(OFFB_XMM15 == (OFFB_XMM0 + 15 * 16));
+
+      stmt( IRStmt_Dirty(d) );
+
+      goto decode_success;
+   }
+
    /* ------ SSE decoder main ------ */
 
    /* 0F 58 = ADDPS -- add 32Fx4 from R/M to R */
@@ -9671,6 +9753,8 @@ DisResult disInstr_AMD64_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         if (insn[1] == 0x28/*movaps*/)
+            gen_SEGV_if_not_16_aligned( addr );
          putXMMReg( gregOfRexRM(pfx,modrm), 
                     loadLE(Ity_V128, mkexpr(addr)) );
          DIP("mov[ua]ps %s,%s\n", dis_buf,
@@ -9690,6 +9774,8 @@ DisResult disInstr_AMD64_WRK (
          /* fall through; awaiting test case */
       } else {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         if (insn[1] == 0x29/*movaps*/)
+            gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
          DIP("mov[ua]ps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
                                   dis_buf );
@@ -9846,6 +9932,7 @@ DisResult disInstr_AMD64_WRK (
       modrm = getUChar(delta+2);
       if (!epartIsReg(modrm)) {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
          DIP("movntp%s %s,%s\n", sz==2 ? "d" : "s",
                                  dis_buf,
@@ -11074,6 +11161,8 @@ DisResult disInstr_AMD64_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         if (insn[1] == 0x28/*movapd*/ || insn[1] == 0x6F/*movdqa*/)
+            gen_SEGV_if_not_16_aligned( addr );
          putXMMReg( gregOfRexRM(pfx,modrm), 
                     loadLE(Ity_V128, mkexpr(addr)) );
          DIP("mov%s %s,%s\n", wot, dis_buf,
@@ -11097,6 +11186,8 @@ DisResult disInstr_AMD64_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         if (insn[1] == 0x29/*movapd*/)
+            gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
          DIP("mov%s %s,%s\n", wot, nameXMMReg(gregOfRexRM(pfx,modrm)),
                               dis_buf );
@@ -11187,6 +11278,7 @@ DisResult disInstr_AMD64_WRK (
                                 nameXMMReg(eregOfRexRM(pfx,modrm)));
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          delta += 2+alen;
          storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
          DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
@@ -11407,6 +11499,7 @@ DisResult disInstr_AMD64_WRK (
       modrm = getUChar(delta+2);
       if (!epartIsReg(modrm)) {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
          DIP("movntdq %s,%s\n", dis_buf,
                                 nameXMMReg(gregOfRexRM(pfx,modrm)));
@@ -12806,6 +12899,7 @@ DisResult disInstr_AMD64_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, vbi, pfx, delta+2, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
          DIP("movs%cdup %s,%s\n", isH ? 'h' : 'l',
 	     dis_buf,
@@ -13882,6 +13976,7 @@ DisResult disInstr_AMD64_WRK (
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
                           1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
          imm8 = (Int)insn[2+alen+1];
          delta += 3+alen+1;
@@ -13932,6 +14027,7 @@ DisResult disInstr_AMD64_WRK (
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
                           1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
          imm8 = (Int)insn[3+alen];
          delta += 3+alen+1;
@@ -13955,6 +14051,119 @@ DisResult disInstr_AMD64_WRK (
    }
 
 
+   /* 66 0F 3A 0E /r ib = PBLENDW xmm1, xmm2/m128, imm8
+      Blend Packed Words (XMM) */
+   if ( have66noF2noF3( pfx ) 
+        && sz == 2
+        && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x0E ) {
+
+      Int imm8;
+      IRTemp dst_vec = newTemp(Ity_V128);
+      IRTemp src_vec = newTemp(Ity_V128);
+
+      modrm = insn[3];
+
+      assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
+
+      if ( epartIsReg( modrm ) ) {
+         imm8 = (Int)insn[3+1];
+         assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
+         delta += 3+1+1;
+         DIP( "pblendw $%d, %s,%s\n", imm8,
+              nameXMMReg( eregOfRexRM(pfx, modrm) ),
+              nameXMMReg( gregOfRexRM(pfx, modrm) ) );    
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
+                          1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
+         assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
+         imm8 = (Int)insn[3+alen];
+         delta += 3+alen+1;
+         DIP( "pblendw $%d, %s,%s\n", 
+              imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      }
+
+      /* Make w be a 16-bit version of imm8, formed by duplicating each
+         bit in imm8. */
+      Int i;
+      UShort imm16 = 0;
+      for (i = 0; i < 8; i++) {
+         if (imm8 & (1 << i))
+             imm16 |= (3 << (2*i));
+      }
+      IRTemp imm16_mask = newTemp(Ity_V128);
+      assign( imm16_mask, mkV128( imm16 ));
+
+      putXMMReg( gregOfRexRM(pfx, modrm), 
+                 binop( Iop_OrV128, 
+                        binop( Iop_AndV128, mkexpr(src_vec), mkexpr(imm16_mask) ),
+                        binop( Iop_AndV128, mkexpr(dst_vec),
+                               unop( Iop_NotV128, mkexpr(imm16_mask) ) ) ) );
+
+      goto decode_success;
+   }
+
+
+   /* 66 0F 3A 44 /r ib = PCLMULQDQ xmm1, xmm2/m128, imm8
+    * Carry-less multiplication of selected XMM quadwords into XMM
+    * registers (a.k.a multiplication of polynomials over GF(2))
+    */
+   if ( have66noF2noF3( pfx ) 
+        && sz == 2
+        && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x44 ) {
+  
+      Int imm8;
+      IRTemp svec = newTemp(Ity_V128);
+      IRTemp dvec = newTemp(Ity_V128);
+
+      modrm = insn[3];
+
+      assign( dvec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
+  
+      if ( epartIsReg( modrm ) ) {
+         imm8 = (Int)insn[4];
+         assign( svec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
+         delta += 3+1+1;
+         DIP( "pclmulqdq $%d, %s,%s\n", imm8,
+              nameXMMReg( eregOfRexRM(pfx, modrm) ),
+              nameXMMReg( gregOfRexRM(pfx, modrm) ) );    
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
+                          1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
+         assign( svec, loadLE( Ity_V128, mkexpr(addr) ) );
+         imm8 = (Int)insn[2+alen+1];
+         delta += 3+alen+1;
+         DIP( "pclmulqdq $%d, %s,%s\n", 
+              imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      }
+
+      t0 = newTemp(Ity_I64);
+      t1 = newTemp(Ity_I64);
+      assign(t0, unop((imm8&1)? Iop_V128HIto64 : Iop_V128to64, mkexpr(dvec)));
+      assign(t1, unop((imm8&16) ? Iop_V128HIto64 : Iop_V128to64, mkexpr(svec)));
+
+      t2 = newTemp(Ity_I64);
+      t3 = newTemp(Ity_I64);
+
+      IRExpr** args;
+      
+      args = mkIRExprVec_3(mkexpr(t0), mkexpr(t1), mkU64(0));
+      assign(t2,
+              mkIRExprCCall(Ity_I64,0, "amd64g_calculate_pclmul",
+                                       &amd64g_calculate_pclmul, args));
+      args = mkIRExprVec_3(mkexpr(t0), mkexpr(t1), mkU64(1));
+      assign(t3,
+              mkIRExprCCall(Ity_I64,0, "amd64g_calculate_pclmul",
+                                       &amd64g_calculate_pclmul, args));
+
+      IRTemp res     = newTemp(Ity_V128);
+      assign(res, binop(Iop_64HLtoV128, mkexpr(t3), mkexpr(t2)));
+      putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
+
+      goto decode_success;
+   }
+
    /* 66 0F 3A 41 /r ib = DPPD xmm1, xmm2/m128, imm8
       Dot Product of Packed Double Precision Floating-Point Values (XMM) */
    if ( have66noF2noF3( pfx ) 
@@ -13981,6 +14190,7 @@ DisResult disInstr_AMD64_WRK (
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
                           1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
          imm8 = (Int)insn[2+alen+1];
          delta += 3+alen+1;
@@ -14042,6 +14252,7 @@ DisResult disInstr_AMD64_WRK (
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 
                           1/* imm8 is 1 byte after the amode */ );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( xmm2_vec, loadLE( Ity_V128, mkexpr(addr) ) );
          imm8 = (Int)insn[2+alen+1];
          delta += 3+alen+1;
@@ -14516,11 +14727,61 @@ DisResult disInstr_AMD64_WRK (
       goto decode_success;
    }
 
+
+   /* 66 0F 3A 17 /r ib = EXTRACTPS reg/mem32, xmm2, imm8 Extract
+      float from xmm reg and store in gen.reg or mem.  This is
+      identical to PEXTRD, except that REX.W appears to be ignored.
+   */
+   if ( have66noF2noF3( pfx ) 
+        && (sz == 2 || /* ignore redundant REX.W */ sz == 8)
+        && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x17 ) {
+
+      Int imm8_10;
+      IRTemp xmm_vec   = newTemp(Ity_V128);
+      IRTemp src_dword = newTemp(Ity_I32);
+
+      modrm = insn[3];
+      assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
+      breakup128to32s( xmm_vec, &t3, &t2, &t1, &t0 );
+
+      if ( epartIsReg( modrm ) ) {
+         imm8_10 = (Int)(insn[3+1] & 3);
+      } else { 
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 1 );
+         imm8_10 = (Int)(insn[3+alen] & 3);
+      }
+
+      switch ( imm8_10 ) {
+         case 0:  assign( src_dword, mkexpr(t0) ); break;
+         case 1:  assign( src_dword, mkexpr(t1) ); break;
+         case 2:  assign( src_dword, mkexpr(t2) ); break;
+         case 3:  assign( src_dword, mkexpr(t3) ); break;
+         default: vassert(0);
+      }
+
+      if ( epartIsReg( modrm ) ) {
+         putIReg32( eregOfRexRM(pfx,modrm), mkexpr(src_dword) );
+         delta += 3+1+1;
+         DIP( "extractps $%d, %s,%s\n", imm8_10,
+              nameXMMReg( gregOfRexRM(pfx, modrm) ),
+              nameIReg32( eregOfRexRM(pfx, modrm) ) );
+      } else {
+         storeLE( mkexpr(addr), mkexpr(src_dword) );
+         delta += 3+alen+1;
+         DIP( "extractps $%d, %s,%s\n", 
+              imm8_10, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
+      }
+
+      goto decode_success;
+   }
+
+
    /* 66 0F 38 37 = PCMPGTQ
       64x2 comparison (signed, presumably; the Intel docs don't say :-)
    */
    if ( have66noF2noF3( pfx ) && sz == 2 
         && insn[0] == 0x0F && insn[1] == 0x38 && insn[2] == 0x37) {
+      /* FIXME: this needs an alignment check */
       delta = dis_SSEint_E_to_G( vbi, pfx, delta+3, 
                                  "pcmpgtq", Iop_CmpGT64Sx2, False );
       goto decode_success;
@@ -14533,6 +14794,7 @@ DisResult disInstr_AMD64_WRK (
    if ( have66noF2noF3( pfx ) && sz == 2 
         && insn[0] == 0x0F && insn[1] == 0x38
         && (insn[2] == 0x3D || insn[2] == 0x39)) {
+      /* FIXME: this needs an alignment check */
       Bool isMAX = insn[2] == 0x3D;
       delta = dis_SSEint_E_to_G(
                  vbi, pfx, delta+3, 
@@ -14550,6 +14812,7 @@ DisResult disInstr_AMD64_WRK (
    if ( have66noF2noF3( pfx ) && sz == 2 
         && insn[0] == 0x0F && insn[1] == 0x38
         && (insn[2] == 0x3F || insn[2] == 0x3B)) {
+      /* FIXME: this needs an alignment check */
       Bool isMAX = insn[2] == 0x3F;
       delta = dis_SSEint_E_to_G(
                  vbi, pfx, delta+3, 
@@ -14568,6 +14831,7 @@ DisResult disInstr_AMD64_WRK (
    if ( have66noF2noF3( pfx ) && sz == 2 
         && insn[0] == 0x0F && insn[1] == 0x38
         && (insn[2] == 0x3E || insn[2] == 0x3A)) {
+      /* FIXME: this needs an alignment check */
       Bool isMAX = insn[2] == 0x3E;
       delta = dis_SSEint_E_to_G(
                  vbi, pfx, delta+3, 
@@ -14586,6 +14850,7 @@ DisResult disInstr_AMD64_WRK (
    if ( have66noF2noF3( pfx ) && sz == 2 
         && insn[0] == 0x0F && insn[1] == 0x38
         && (insn[2] == 0x3C || insn[2] == 0x38)) {
+      /* FIXME: this needs an alignment check */
       Bool isMAX = insn[2] == 0x3C;
       delta = dis_SSEint_E_to_G(
                  vbi, pfx, delta+3, 
@@ -15057,6 +15322,7 @@ DisResult disInstr_AMD64_WRK (
               nameXMMReg( gregOfRexRM(pfx, modrm) ) );
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( argL, loadLE( Ity_V128, mkexpr(addr) ));
          delta += 3+alen;
          DIP( "pmulld %s,%s\n",
@@ -15116,10 +15382,7 @@ DisResult disInstr_AMD64_WRK (
 
 
    /* 66 0F 3A 0B /r ib = ROUNDSD imm8, xmm2/m64, xmm1
-      (Partial implementation only -- only deal with cases where
-      the rounding mode is specified directly by the immediate byte.)
       66 0F 3A 0A /r ib = ROUNDSS imm8, xmm2/m32, xmm1
-      (Limitations ditto)
    */
    if (have66noF2noF3(pfx) 
        && sz == 2 
@@ -15138,7 +15401,7 @@ DisResult disInstr_AMD64_WRK (
                  isD ? getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 )
                      : getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
          imm = insn[3+1];
-         if (imm & ~3) goto decode_failure;
+         if (imm & ~7) goto decode_failure;
          delta += 3+1+1;
          DIP( "rounds%c $%d,%s,%s\n",
               isD ? 'd' : 's',
@@ -15148,9 +15411,10 @@ DisResult disInstr_AMD64_WRK (
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
          assign( src, loadLE( isD ? Ity_F64 : Ity_F32, mkexpr(addr) ));
          imm = insn[3+alen];
-         if (imm & ~3) goto decode_failure;
+         if (imm & ~7) goto decode_failure;
          delta += 3+alen+1;
-         DIP( "roundsd $%d,%s,%s\n",
+         DIP( "rounds%c $%d,%s,%s\n",
+              isD ? 'd' : 's',
               imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
       }
 
@@ -15159,7 +15423,9 @@ DisResult disInstr_AMD64_WRK (
          we can use that value directly in the IR as a rounding
          mode. */
       assign(res, binop(isD ? Iop_RoundF64toInt : Iop_RoundF32toInt,
-                  mkU32(imm & 3), mkexpr(src)) );
+                        (imm & 4) ? get_sse_roundingmode() 
+                                  : mkU32(imm & 3),
+                        mkexpr(src)) );
 
       if (isD)
          putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
@@ -15169,6 +15435,133 @@ DisResult disInstr_AMD64_WRK (
       goto decode_success;
    }
 
+
+   /* 66 0F 3A 09 /r ib = ROUNDPD imm8, xmm2/m128, xmm1 */
+   if (have66noF2noF3(pfx) 
+       && sz == 2 
+       && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x09) {
+
+      IRTemp src0 = newTemp(Ity_F64);
+      IRTemp src1 = newTemp(Ity_F64);
+      IRTemp res0 = newTemp(Ity_F64);
+      IRTemp res1 = newTemp(Ity_F64);
+      IRTemp rm   = newTemp(Ity_I32);
+      Int    imm  = 0;
+
+      modrm = insn[3];
+
+      if (epartIsReg(modrm)) {
+         assign( src0, 
+                 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 ) );
+         assign( src1, 
+                 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 1 ) );
+         imm = insn[3+1];
+         if (imm & ~7) goto decode_failure;
+         delta += 3+1+1;
+         DIP( "roundpd $%d,%s,%s\n",
+              imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
+                   nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned(addr);
+         assign( src0, loadLE(Ity_F64,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(0) )));
+         assign( src1, loadLE(Ity_F64,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(8) )));
+         imm = insn[3+alen];
+         if (imm & ~7) goto decode_failure;
+         delta += 3+alen+1;
+         DIP( "roundpd $%d,%s,%s\n",
+              imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      }
+
+      /* (imm & 3) contains an Intel-encoded rounding mode.  Because
+         that encoding is the same as the encoding for IRRoundingMode,
+         we can use that value directly in the IR as a rounding
+         mode. */
+      assign(rm, (imm & 4) ? get_sse_roundingmode() : mkU32(imm & 3));
+
+      assign(res0, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src0)) );
+      assign(res1, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src1)) );
+
+      putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
+      putXMMRegLane64F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
+
+      goto decode_success;
+   }
+
+
+   /* 66 0F 3A 08 /r ib = ROUNDPS imm8, xmm2/m128, xmm1 */
+   if (have66noF2noF3(pfx) 
+       && sz == 2 
+       && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x08) {
+
+      IRTemp src0 = newTemp(Ity_F32);
+      IRTemp src1 = newTemp(Ity_F32);
+      IRTemp src2 = newTemp(Ity_F32);
+      IRTemp src3 = newTemp(Ity_F32);
+      IRTemp res0 = newTemp(Ity_F32);
+      IRTemp res1 = newTemp(Ity_F32);
+      IRTemp res2 = newTemp(Ity_F32);
+      IRTemp res3 = newTemp(Ity_F32);
+      IRTemp rm   = newTemp(Ity_I32);
+      Int    imm  = 0;
+
+      modrm = insn[3];
+
+      if (epartIsReg(modrm)) {
+         assign( src0, 
+                 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
+         assign( src1, 
+                 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 1 ) );
+         assign( src2, 
+                 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 2 ) );
+         assign( src3, 
+                 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 3 ) );
+         imm = insn[3+1];
+         if (imm & ~7) goto decode_failure;
+         delta += 3+1+1;
+         DIP( "roundps $%d,%s,%s\n",
+              imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
+                   nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned(addr);
+         assign( src0, loadLE(Ity_F32,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(0) )));
+         assign( src1, loadLE(Ity_F32,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(4) )));
+         assign( src2, loadLE(Ity_F32,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(8) )));
+         assign( src3, loadLE(Ity_F32,
+                              binop(Iop_Add64, mkexpr(addr), mkU64(12) )));
+         imm = insn[3+alen];
+         if (imm & ~7) goto decode_failure;
+         delta += 3+alen+1;
+         DIP( "roundps $%d,%s,%s\n",
+              imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      }
+
+      /* (imm & 3) contains an Intel-encoded rounding mode.  Because
+         that encoding is the same as the encoding for IRRoundingMode,
+         we can use that value directly in the IR as a rounding
+         mode. */
+      assign(rm, (imm & 4) ? get_sse_roundingmode() : mkU32(imm & 3));
+
+      assign(res0, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src0)) );
+      assign(res1, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src1)) );
+      assign(res2, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src2)) );
+      assign(res3, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src3)) );
+
+      putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
+      putXMMRegLane32F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
+      putXMMRegLane32F( gregOfRexRM(pfx, modrm), 2, mkexpr(res2) );
+      putXMMRegLane32F( gregOfRexRM(pfx, modrm), 3, mkexpr(res3) );
+
+      goto decode_success;
+   }
+
+
    /* F3 0F BD -- LZCNT (count leading zeroes.  An AMD extension,
       which we can only decode if we're sure this is an AMD cpu that
       supports LZCNT, since otherwise it's BSR, which behaves
@@ -15262,6 +15655,8 @@ DisResult disInstr_AMD64_WRK (
          regNoL = 16; /* use XMM16 as an intermediary */
          regNoR = gregOfRexRM(pfx, modrm);
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         /* No alignment check; I guess that makes sense, given that
+            these insns are for dealing with C style strings. */
          stmt( IRStmt_Put( OFFB_XMM16, loadLE(Ity_V128, mkexpr(addr)) ));
          imm = insn[3+alen];
          delta += 3+alen+1;
@@ -15272,6 +15667,7 @@ DisResult disInstr_AMD64_WRK (
          any cases for which the helper function has not been
          verified. */
       switch (imm) {
+         case 0x00:
          case 0x02: case 0x08: case 0x0A: case 0x0C: case 0x12:
          case 0x1A: case 0x3A: case 0x44: case 0x4A:
             break;
@@ -15368,6 +15764,7 @@ DisResult disInstr_AMD64_WRK (
               nameXMMReg( gregOfRexRM(pfx, modrm) ) );
       } else {
          addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
          assign(vecE, loadLE( Ity_V128, mkexpr(addr) ));
          delta += 3+alen;
          DIP( "ptest %s,%s\n",
@@ -15468,6 +15865,136 @@ DisResult disInstr_AMD64_WRK (
       goto decode_success;
    }
 
+   /* 66 0F 38 15 /r = BLENDVPD xmm1, xmm2/m128  (double gran)
+      66 0F 38 14 /r = BLENDVPS xmm1, xmm2/m128  (float gran)
+      66 0F 38 10 /r = PBLENDVB xmm1, xmm2/m128  (byte gran)
+      Blend at various granularities, with XMM0 (implicit operand)
+      providing the controlling mask.
+   */
+   if (have66noF2noF3(pfx) && sz == 2 
+       && insn[0] == 0x0F && insn[1] == 0x38
+       && (insn[2] == 0x15 || insn[2] == 0x14 || insn[2] == 0x10)) {
+      modrm = insn[3];
+
+      HChar* nm    = NULL;
+      UInt   gran  = 0;
+      IROp   opSAR = Iop_INVALID;
+      switch (insn[2]) {
+         case 0x15:
+            nm = "blendvpd"; gran = 8; opSAR = Iop_SarN64x2;
+            break;
+         case 0x14:
+            nm = "blendvps"; gran = 4; opSAR = Iop_SarN32x4;
+            break;
+         case 0x10:
+            nm = "pblendvb"; gran = 1; opSAR = Iop_SarN8x16;
+            break;
+      }
+      vassert(nm);
+
+      IRTemp vecE = newTemp(Ity_V128);
+      IRTemp vecG = newTemp(Ity_V128);
+      IRTemp vec0 = newTemp(Ity_V128);
+
+      if ( epartIsReg(modrm) ) {
+         assign(vecE, getXMMReg(eregOfRexRM(pfx, modrm)));
+         delta += 3+1;
+         DIP( "%s %s,%s\n", nm,
+              nameXMMReg( eregOfRexRM(pfx, modrm) ),
+              nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         gen_SEGV_if_not_16_aligned( addr );
+         assign(vecE, loadLE( Ity_V128, mkexpr(addr) ));
+         delta += 3+alen;
+         DIP( "%s %s,%s\n", nm,
+              dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
+      }
+
+      assign(vecG, getXMMReg(gregOfRexRM(pfx, modrm)));
+      assign(vec0, getXMMReg(0));
+
+      /* Now the tricky bit is to convert vec0 into a suitable mask,
+         by copying the most significant bit of each lane into all
+         positions in the lane. */
+      IRTemp sh = newTemp(Ity_I8);
+      assign(sh, mkU8(8 * gran - 1));
+
+      IRTemp mask = newTemp(Ity_V128);
+      assign(mask, binop(opSAR, mkexpr(vec0), mkexpr(sh)));
+
+      IRTemp notmask = newTemp(Ity_V128);
+      assign(notmask, unop(Iop_NotV128, mkexpr(mask)));
+
+      IRExpr* res = binop(Iop_OrV128,
+                          binop(Iop_AndV128, mkexpr(vecE), mkexpr(mask)),
+                          binop(Iop_AndV128, mkexpr(vecG), mkexpr(notmask)));
+      putXMMReg(gregOfRexRM(pfx, modrm), res);
+
+      goto decode_success;
+   }
+
+   /* F2 0F 38 F0 /r = CRC32 r/m8, r32 (REX.W ok, 66 not ok)
+      F2 0F 38 F1 /r = CRC32 r/m{16,32,64}, r32
+      The decoding on this is a bit unusual.
+   */
+   if (haveF2noF3(pfx)
+       && insn[0] == 0x0F && insn[1] == 0x38
+       && (insn[2] == 0xF1
+           || (insn[2] == 0xF0 && !have66(pfx)))) {
+      modrm = insn[3];
+
+      if (insn[2] == 0xF0) 
+         sz = 1;
+      else
+         vassert(sz == 2 || sz == 4 || sz == 8);
+
+      IRType tyE = szToITy(sz);
+      IRTemp valE = newTemp(tyE);
+
+      if (epartIsReg(modrm)) {
+         assign(valE, getIRegE(sz, pfx, modrm));
+         delta += 3+1;
+         DIP("crc32b %s,%s\n", nameIRegE(sz, pfx, modrm),
+             nameIRegG(1==getRexW(pfx) ? 8 : 4 ,pfx, modrm));
+      } else {
+         addr = disAMode( &alen, vbi, pfx, delta+3, dis_buf, 0 );
+         assign(valE, loadLE(tyE, mkexpr(addr)));
+         delta += 3+alen;
+         DIP("crc32b %s,%s\n", dis_buf,
+             nameIRegG(1==getRexW(pfx) ? 8 : 4 ,pfx, modrm));
+      }
+
+      /* Somewhat funny getting/putting of the crc32 value, in order
+         to ensure that it turns into 64-bit gets and puts.  However,
+         mask off the upper 32 bits so as to not get memcheck false
+         +ves around the helper call. */
+      IRTemp valG0 = newTemp(Ity_I64);
+      assign(valG0, binop(Iop_And64, getIRegG(8, pfx, modrm),
+                          mkU64(0xFFFFFFFF)));
+
+      HChar* nm = NULL;
+      void* fn = NULL;
+      switch (sz) {
+         case 1: nm = "amd64g_calc_crc32b";
+                 fn = &amd64g_calc_crc32b; break;
+         case 2: nm = "amd64g_calc_crc32w";
+                 fn = &amd64g_calc_crc32w; break;
+         case 4: nm = "amd64g_calc_crc32l";
+                 fn = &amd64g_calc_crc32l; break;
+         case 8: nm = "amd64g_calc_crc32q";
+                 fn = &amd64g_calc_crc32q; break;
+      }
+      vassert(nm && fn);
+      IRTemp valG1 = newTemp(Ity_I64);
+      assign(valG1,
+             mkIRExprCCall(Ity_I64, 0/*regparm*/, nm, fn, 
+                           mkIRExprVec_2(mkexpr(valG0),
+                                         widenUto64(mkexpr(valE)))));
+
+      putIRegG(4, pfx, modrm, unop(Iop_64to32, mkexpr(valG1)));
+      goto decode_success;
+   }
 
    /* ---------------------------------------------------- */
    /* --- end of the SSE4 decoder                      --- */
@@ -15874,18 +16401,33 @@ DisResult disInstr_AMD64_WRK (
    case 0xE1: /* LOOPE  disp8: decrement count, jump if count != 0 && ZF==1 */
    case 0xE2: /* LOOP   disp8: decrement count, jump if count != 0 */
     { /* The docs say this uses rCX as a count depending on the
-         address size override, not the operand one.  Since we don't
-         handle address size overrides, I guess that means RCX. */
+         address size override, not the operand one. */
       IRExpr* zbit  = NULL;
       IRExpr* count = NULL;
       IRExpr* cond  = NULL;
       HChar*  xtra  = NULL;
 
-      if (have66orF2orF3(pfx) || haveASO(pfx)) goto decode_failure;
+      if (have66orF2orF3(pfx) || 1==getRexW(pfx)) goto decode_failure;
+      /* So at this point we've rejected any variants which appear to
+         be governed by the usual operand-size modifiers.  Hence only
+         the address size prefix can have an effect.  It changes the
+         size from 64 (default) to 32. */
       d64 = guest_RIP_bbstart+delta+1 + getSDisp8(delta);
       delta++;
-      putIReg64(R_RCX, binop(Iop_Sub64, getIReg64(R_RCX), mkU64(1)));
+      if (haveASO(pfx)) {
+         /* 64to32 of 64-bit get is merely a get-put improvement
+            trick. */
+         putIReg32(R_RCX, binop(Iop_Sub32,
+                                unop(Iop_64to32, getIReg64(R_RCX)), 
+                                mkU32(1)));
+      } else {
+         putIReg64(R_RCX, binop(Iop_Sub64, getIReg64(R_RCX), mkU64(1)));
+      }
 
+      /* This is correct, both for 32- and 64-bit versions.  If we're
+         doing a 32-bit dec and the result is zero then the default
+         zero extension rule will cause the upper 32 bits to be zero
+         too.  Hence a 64-bit check against zero is OK. */
       count = getIReg64(R_RCX);
       cond = binop(Iop_CmpNE64, count, mkU64(0));
       switch (opc) {
@@ -15895,19 +16437,19 @@ DisResult disInstr_AMD64_WRK (
          case 0xE1: 
             xtra = "e"; 
             zbit = mk_amd64g_calculate_condition( AMD64CondZ );
-      cond = mkAnd1(cond, zbit);
+            cond = mkAnd1(cond, zbit);
             break;
          case 0xE0: 
             xtra = "ne";
             zbit = mk_amd64g_calculate_condition( AMD64CondNZ );
-      cond = mkAnd1(cond, zbit);
+            cond = mkAnd1(cond, zbit);
             break;
          default:
 	    vassert(0);
       }
       stmt( IRStmt_Exit(cond, Ijk_Boring, IRConst_U64(d64)) );
 
-      DIP("loop%s 0x%llx\n", xtra, d64);
+      DIP("loop%s%s 0x%llx\n", xtra, haveASO(pfx) ? "l" : "", d64);
       break;
     }
 
@@ -16139,18 +16681,20 @@ DisResult disInstr_AMD64_WRK (
       if (haveF2orF3(pfx)) goto decode_failure;
       delta = dis_op_imm_A( 1, True, Iop_Add8, True, delta, "adc" );
       break;
-//.. //--    case 0x15: /* ADC Iv, eAX */
-//.. //--       delta = dis_op_imm_A( sz, ADC, True, delta, "adc" );
-//.. //--       break;
+   case 0x15: /* ADC Iv, eAX */
+      if (haveF2orF3(pfx)) goto decode_failure;
+      delta = dis_op_imm_A( sz, True, Iop_Add8, True, delta, "adc" );
+      break;
 
    case 0x1C: /* SBB Ib, AL */
       if (haveF2orF3(pfx)) goto decode_failure;
       delta = dis_op_imm_A( 1, True, Iop_Sub8, True, delta, "sbb" );
       break;
-//.. //--    case 0x1D: /* SBB Iv, eAX */
-//.. //--       delta = dis_op_imm_A( sz, SBB, True, delta, "sbb" );
-//.. //--       break;
-//.. //-- 
+   case 0x1D: /* SBB Iv, eAX */
+      if (haveF2orF3(pfx)) goto decode_failure;
+      delta = dis_op_imm_A( sz, True, Iop_Sub8, True, delta, "sbb" );
+      break;
+
    case 0x24: /* AND Ib, AL */
       if (haveF2orF3(pfx)) goto decode_failure;
       delta = dis_op_imm_A( 1, False, Iop_And8, True, delta, "and" );
@@ -16428,6 +16972,19 @@ DisResult disInstr_AMD64_WRK (
                   mkU64(1))) 
           );
 
+      /* And set the AC flag too */
+      stmt( IRStmt_Put( 
+               OFFB_ACFLAG,
+               IRExpr_Mux0X( 
+                  unop(Iop_32to8,
+                  unop(Iop_64to32,
+                       binop(Iop_And64, 
+                             binop(Iop_Shr64, mkexpr(t1), mkU8(18)), 
+                             mkU64(1)))),
+                  mkU64(0), 
+                  mkU64(1))) 
+          );
+
       DIP("popf%c\n", nameISize(sz));
       break;
 
@@ -16461,7 +17018,8 @@ DisResult disInstr_AMD64_WRK (
       /* There is no encoding for 32-bit pop in 64-bit mode.
          So sz==4 actually means sz==8. */
       if (haveF2orF3(pfx)) goto decode_failure;
-      vassert(sz == 2 || sz == 4);
+      vassert(sz == 2 || sz == 4
+              || /* tolerate redundant REX.W, see #210481 */ sz == 8);
       if (sz == 4) sz = 8;
       if (sz != 8) goto decode_failure; // until we know a sz==2 test case exists
 
@@ -16592,12 +17150,22 @@ DisResult disInstr_AMD64_WRK (
                               mkU64(1<<21)))
             );
 
+      /* And patch in the AC flag too. */
+      t5 = newTemp(Ity_I64);
+      assign( t5, binop(Iop_Or64,
+                        mkexpr(t4),
+                        binop(Iop_And64,
+                              binop(Iop_Shl64, IRExpr_Get(OFFB_ACFLAG,Ity_I64), 
+                                               mkU8(18)),
+                              mkU64(1<<18)))
+            );
+
       /* if sz==2, the stored value needs to be narrowed. */
       if (sz == 2)
         storeLE( mkexpr(t1), unop(Iop_32to16,
-                             unop(Iop_64to32,mkexpr(t4))) );
+                             unop(Iop_64to32,mkexpr(t5))) );
       else 
-        storeLE( mkexpr(t1), mkexpr(t4) );
+        storeLE( mkexpr(t1), mkexpr(t5) );
 
       DIP("pushf%c\n", nameISize(sz));
       break;
@@ -17987,13 +18555,15 @@ DisResult disInstr_AMD64_WRK (
   decode_failure:
    /* All decode failures end up here. */
    vex_printf("vex amd64->IR: unhandled instruction bytes: "
-              "0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
+              "0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
               (Int)getUChar(delta_start+0),
               (Int)getUChar(delta_start+1),
               (Int)getUChar(delta_start+2),
               (Int)getUChar(delta_start+3),
               (Int)getUChar(delta_start+4),
-              (Int)getUChar(delta_start+5) );
+              (Int)getUChar(delta_start+5),
+              (Int)getUChar(delta_start+6),
+              (Int)getUChar(delta_start+7) );
 
    /* Tell the dispatcher that this insn cannot be decoded, and so has
       not been executed, and (is currently) the next to be executed.
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_defs.h
index 02078c459..8724d8edb 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_defs.h
@@ -148,6 +148,10 @@ UInt armg_calculate_flag_qc ( UInt resL1, UInt resL2,
    that the definedness of the stored flags always depends on
    all 3 DEP values.
 
+   Fields carrying only 1 or 2 bits of useful information (old_C,
+   shifter_co, old_V, oldC:oldV) must have their top 31 or 30 bits
+   (respectively) zero.  The text "31x0:" or "30x0:" denotes this.
+
    A summary of the field usages is:
 
    OP                DEP1              DEP2              DEP3
@@ -156,11 +160,11 @@ UInt armg_calculate_flag_qc ( UInt resL1, UInt resL2,
    OP_COPY           current NZCV      unused            unused
    OP_ADD            argL              argR              unused
    OP_SUB            argL              argR              unused
-   OP_ADC            argL              argR              old_C
-   OP_SBB            argL              argR              old_C
-   OP_LOGIC          result            shifter_co        old_V
-   OP_MUL            result            unused            old_C:old_V
-   OP_MULL           resLO32           resHI32           old_C:old_V
+   OP_ADC            argL              argR              31x0:old_C
+   OP_SBB            argL              argR              31x0:old_C
+   OP_LOGIC          result            31x0:shifter_co   31x0:old_V
+   OP_MUL            result            unused            30x0:old_C:old_V
+   OP_MULL           resLO32           resHI32           30x0:old_C:old_V
 */
 
 enum {
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_helpers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_helpers.c
index 2adbb391c..9c8765738 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_helpers.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_helpers.c
@@ -51,159 +51,336 @@
 */
 
 
-
-/* generalised left-shifter */
-static inline UInt lshift ( UInt x, Int n )
+/* Calculate the N flag from the supplied thunk components, in the
+   least significant bit of the word.  Returned bits 31:1 are zero. */
+static
+UInt armg_calculate_flag_n ( UInt cc_op, UInt cc_dep1,
+                             UInt cc_dep2, UInt cc_dep3 )
 {
-   if (n >= 0)
-      return x << n;
-   else
-      return x >> (-n);
+   switch (cc_op) {
+      case ARMG_CC_OP_COPY: {
+         /* (nzcv:28x0, unused, unused) */
+         UInt nf   = (cc_dep1 >> ARMG_CC_SHIFT_N) & 1;
+         return nf;
+      }
+      case ARMG_CC_OP_ADD: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt res  = argL + argR;
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_SUB: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt res  = argL - argR;
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_ADC: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL + argR + oldC;
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_SBB: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL - argR - (oldC ^ 1);
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_LOGIC: {
+         /* (res, shco, oldV) */
+         UInt res  = cc_dep1;
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_MUL: {
+         /* (res, unused, oldC:oldV) */
+         UInt res  = cc_dep1;
+         UInt nf   = res >> 31;
+         return nf;
+      }
+      case ARMG_CC_OP_MULL: {
+         /* (resLo32, resHi32, oldC:oldV) */
+         UInt resHi32 = cc_dep2;
+         UInt nf      = resHi32 >> 31;
+         return nf;
+      }
+      default:
+         /* shouldn't really make these calls from generated code */
+         vex_printf("armg_calculate_flag_n"
+                    "( op=%u, dep1=0x%x, dep2=0x%x, dep3=0x%x )\n",
+                    cc_op, cc_dep1, cc_dep2, cc_dep3 );
+         vpanic("armg_calculate_flags_n");
+   }
 }
 
 
-/* CALLED FROM GENERATED CODE: CLEAN HELPER */
-/* Calculate NZCV from the supplied thunk components, in the positions
-   they appear in the CPSR, viz bits 31:28 for N Z C V respectively.
-   Returned bits 27:0 are zero. */
-UInt armg_calculate_flags_nzcv ( UInt cc_op, UInt cc_dep1,
-                                 UInt cc_dep2, UInt cc_dep3 )
+/* Calculate the Z flag from the supplied thunk components, in the
+   least significant bit of the word.  Returned bits 31:1 are zero. */
+static
+UInt armg_calculate_flag_z ( UInt cc_op, UInt cc_dep1,
+                             UInt cc_dep2, UInt cc_dep3 )
 {
    switch (cc_op) {
-      case ARMG_CC_OP_COPY:
-         /* (nzcv, unused, unused) */
-         return cc_dep1;
+      case ARMG_CC_OP_COPY: {
+         /* (nzcv:28x0, unused, unused) */
+         UInt zf   = (cc_dep1 >> ARMG_CC_SHIFT_Z) & 1;
+         return zf;
+      }
       case ARMG_CC_OP_ADD: {
          /* (argL, argR, unused) */
          UInt argL = cc_dep1;
          UInt argR = cc_dep2;
          UInt res  = argL + argR;
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         // CF and VF need verification
-         UInt cf   = lshift( res < argL, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( (res ^ argL) & (res ^ argR),
-                             ARMG_CC_SHIFT_V + 1 - 32 )
-                     & ARMG_CC_MASK_V;
-         //vex_printf("%08x %08x -> n %x z %x c %x v %x\n",
-         //           argL, argR, nf, zf, cf, vf);
-         return nf | zf | cf | vf;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_SUB: {
          /* (argL, argR, unused) */
          UInt argL = cc_dep1;
          UInt argR = cc_dep2;
          UInt res  = argL - argR;
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         // XXX cf is inverted relative to normal sense
-         UInt cf   = lshift( argL >= argR, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( (argL ^ argR) & (argL ^ res),
-                             ARMG_CC_SHIFT_V + 1 - 32 )
-                     & ARMG_CC_MASK_V;
-         //vex_printf("%08x %08x -> n %x z %x c %x v %x\n",
-         //           argL, argR, nf, zf, cf, vf);
-         return nf | zf | cf | vf;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_ADC: {
          /* (argL, argR, oldC) */
          UInt argL = cc_dep1;
          UInt argR = cc_dep2;
          UInt oldC = cc_dep3;
-         UInt res  = (argL + argR) + oldC;
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         UInt cf   = oldC ? lshift( res <= argL, ARMG_CC_SHIFT_C )
-                          : lshift( res <  argL, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( (res ^ argL) & (res ^ argR),
-                             ARMG_CC_SHIFT_V + 1 - 32 )
-                     & ARMG_CC_MASK_V;
-         //vex_printf("%08x %08x -> n %x z %x c %x v %x\n",
-         //           argL, argR, nf, zf, cf, vf);
-         return nf | zf | cf | vf;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL + argR + oldC;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_SBB: {
          /* (argL, argR, oldC) */
          UInt argL = cc_dep1;
          UInt argR = cc_dep2;
          UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
          UInt res  = argL - argR - (oldC ^ 1);
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         UInt cf   = oldC ? lshift( argL >= argR, ARMG_CC_SHIFT_C )
-                          : lshift( argL >  argR, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( (argL ^ argR) & (argL ^ res),
-                             ARMG_CC_SHIFT_V + 1 - 32 )
-                     & ARMG_CC_MASK_V;
-         //vex_printf("%08x %08x -> n %x z %x c %x v %x\n",
-         //           argL, argR, nf, zf, cf, vf);
-         return nf | zf | cf | vf;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_LOGIC: {
          /* (res, shco, oldV) */
          UInt res  = cc_dep1;
-         UInt shco = cc_dep2;
-         UInt oldV = cc_dep3;
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         UInt cf   = lshift( shco & 1, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( oldV & 1, ARMG_CC_SHIFT_V );
-         return nf | zf | cf | vf;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_MUL: {
          /* (res, unused, oldC:oldV) */
          UInt res  = cc_dep1;
-         UInt oldC = (cc_dep3 >> 1) & 1;
-         UInt oldV = (cc_dep3 >> 0) & 1;
-         UInt nf   = lshift( res & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf   = lshift( res == 0, ARMG_CC_SHIFT_Z );
-         UInt cf   = lshift( oldC & 1, ARMG_CC_SHIFT_C );
-         UInt vf   = lshift( oldV & 1, ARMG_CC_SHIFT_V );
-         return nf | zf | cf | vf;
+         UInt zf   = res == 0;
+         return zf;
       }
       case ARMG_CC_OP_MULL: {
          /* (resLo32, resHi32, oldC:oldV) */
          UInt resLo32 = cc_dep1;
          UInt resHi32 = cc_dep2;
-         UInt oldC    = (cc_dep3 >> 1) & 1;
-         UInt oldV    = (cc_dep3 >> 0) & 1;
-         UInt nf      = lshift( resHi32 & (1<<31), ARMG_CC_SHIFT_N - 31 );
-         UInt zf      = lshift( (resHi32|resLo32) == 0, ARMG_CC_SHIFT_Z );
-         UInt cf      = lshift( oldC & 1, ARMG_CC_SHIFT_C );
-         UInt vf      = lshift( oldV & 1, ARMG_CC_SHIFT_V );
-         return nf | zf | cf | vf;
+         UInt zf      = (resHi32|resLo32) == 0;
+         return zf;
       }
       default:
          /* shouldn't really make these calls from generated code */
-         vex_printf("armg_calculate_flags_nzcv"
+         vex_printf("armg_calculate_flags_z"
                     "( op=%u, dep1=0x%x, dep2=0x%x, dep3=0x%x )\n",
                     cc_op, cc_dep1, cc_dep2, cc_dep3 );
-         vpanic("armg_calculate_flags_nzcv");
+         vpanic("armg_calculate_flags_z");
    }
 }
 
 
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
-/* Calculate the C flag from the thunk components, in the lowest bit
-   of the word (bit 0). */
+/* Calculate the C flag from the supplied thunk components, in the
+   least significant bit of the word.  Returned bits 31:1 are zero. */
 UInt armg_calculate_flag_c ( UInt cc_op, UInt cc_dep1,
                              UInt cc_dep2, UInt cc_dep3 )
 {
-   UInt r = armg_calculate_flags_nzcv(cc_op, cc_dep1, cc_dep2, cc_dep3);
-   return (r >> ARMG_CC_SHIFT_C) & 1;
+   switch (cc_op) {
+      case ARMG_CC_OP_COPY: {
+         /* (nzcv:28x0, unused, unused) */
+         UInt cf   = (cc_dep1 >> ARMG_CC_SHIFT_C) & 1;
+         return cf;
+      }
+      case ARMG_CC_OP_ADD: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt res  = argL + argR;
+         UInt cf   = res < argL;
+         return cf;
+      }
+      case ARMG_CC_OP_SUB: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt cf   = argL >= argR;
+         return cf;
+      }
+      case ARMG_CC_OP_ADC: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL + argR + oldC;
+         UInt cf   = oldC ? (res <= argL) : (res < argL);
+         return cf;
+      }
+      case ARMG_CC_OP_SBB: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt cf   = oldC ? (argL >= argR) : (argL > argR);
+         return cf;
+      }
+      case ARMG_CC_OP_LOGIC: {
+         /* (res, shco, oldV) */
+         UInt shco = cc_dep2;
+         vassert((shco & ~1) == 0);
+         UInt cf   = shco;
+         return cf;
+      }
+      case ARMG_CC_OP_MUL: {
+         /* (res, unused, oldC:oldV) */
+         UInt oldC = (cc_dep3 >> 1) & 1;
+         vassert((cc_dep3 & ~3) == 0);
+         UInt cf   = oldC;
+         return cf;
+      }
+      case ARMG_CC_OP_MULL: {
+         /* (resLo32, resHi32, oldC:oldV) */
+         UInt oldC    = (cc_dep3 >> 1) & 1;
+         vassert((cc_dep3 & ~3) == 0);
+         UInt cf      = oldC;
+         return cf;
+      }
+      default:
+         /* shouldn't really make these calls from generated code */
+         vex_printf("armg_calculate_flag_c"
+                    "( op=%u, dep1=0x%x, dep2=0x%x, dep3=0x%x )\n",
+                    cc_op, cc_dep1, cc_dep2, cc_dep3 );
+         vpanic("armg_calculate_flag_c");
+   }
 }
 
 
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
-/* Calculate the V flag from the thunk components, in the lowest bit
-   of the word (bit 0). */
+/* Calculate the V flag from the supplied thunk components, in the
+   least significant bit of the word.  Returned bits 31:1 are zero. */
 UInt armg_calculate_flag_v ( UInt cc_op, UInt cc_dep1,
                              UInt cc_dep2, UInt cc_dep3 )
 {
-   UInt r = armg_calculate_flags_nzcv(cc_op, cc_dep1, cc_dep2, cc_dep3);
-   return (r >> ARMG_CC_SHIFT_V) & 1;
+   switch (cc_op) {
+      case ARMG_CC_OP_COPY: {
+         /* (nzcv:28x0, unused, unused) */
+         UInt vf   = (cc_dep1 >> ARMG_CC_SHIFT_V) & 1;
+         return vf;
+      }
+      case ARMG_CC_OP_ADD: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt res  = argL + argR;
+         UInt vf   = ((res ^ argL) & (res ^ argR)) >> 31;
+         return vf;
+      }
+      case ARMG_CC_OP_SUB: {
+         /* (argL, argR, unused) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt res  = argL - argR;
+         UInt vf   = ((argL ^ argR) & (argL ^ res)) >> 31;
+         return vf;
+      }
+      case ARMG_CC_OP_ADC: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL + argR + oldC;
+         UInt vf   = ((res ^ argL) & (res ^ argR)) >> 31;
+         return vf;
+      }
+      case ARMG_CC_OP_SBB: {
+         /* (argL, argR, oldC) */
+         UInt argL = cc_dep1;
+         UInt argR = cc_dep2;
+         UInt oldC = cc_dep3;
+         vassert((oldC & ~1) == 0);
+         UInt res  = argL - argR - (oldC ^ 1);
+         UInt vf   = ((argL ^ argR) & (argL ^ res)) >> 31;
+         return vf;
+      }
+      case ARMG_CC_OP_LOGIC: {
+         /* (res, shco, oldV) */
+         UInt oldV = cc_dep3;
+         vassert((oldV & ~1) == 0);
+         UInt vf   = oldV;
+         return vf;
+      }
+      case ARMG_CC_OP_MUL: {
+         /* (res, unused, oldC:oldV) */
+         UInt oldV = (cc_dep3 >> 0) & 1;
+         vassert((cc_dep3 & ~3) == 0);
+         UInt vf   = oldV;
+         return vf;
+      }
+      case ARMG_CC_OP_MULL: {
+         /* (resLo32, resHi32, oldC:oldV) */
+         UInt oldV    = (cc_dep3 >> 0) & 1;
+         vassert((cc_dep3 & ~3) == 0);
+         UInt vf      = oldV;
+         return vf;
+      }
+      default:
+         /* shouldn't really make these calls from generated code */
+         vex_printf("armg_calculate_flag_v"
+                    "( op=%u, dep1=0x%x, dep2=0x%x, dep3=0x%x )\n",
+                    cc_op, cc_dep1, cc_dep2, cc_dep3 );
+         vpanic("armg_calculate_flag_v");
+   }
+}
+
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+/* Calculate NZCV from the supplied thunk components, in the positions
+   they appear in the CPSR, viz bits 31:28 for N Z C V respectively.
+   Returned bits 27:0 are zero. */
+UInt armg_calculate_flags_nzcv ( UInt cc_op, UInt cc_dep1,
+                                 UInt cc_dep2, UInt cc_dep3 )
+{
+   UInt f;
+   UInt res = 0;
+   f = armg_calculate_flag_n(cc_op, cc_dep1, cc_dep2, cc_dep3);
+   res |= (f << ARMG_CC_SHIFT_N);
+   f = armg_calculate_flag_z(cc_op, cc_dep1, cc_dep2, cc_dep3);
+   res |= (f << ARMG_CC_SHIFT_Z);
+   f = armg_calculate_flag_c(cc_op, cc_dep1, cc_dep2, cc_dep3);
+   res |= (f << ARMG_CC_SHIFT_C);
+   f = armg_calculate_flag_v(cc_op, cc_dep1, cc_dep2, cc_dep3);
+   res |= (f << ARMG_CC_SHIFT_V);
+   return res;
 }
 
+
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 /* Calculate the QC flag from the arguments, in the lowest bit
    of the word (bit 0).  Urr, having this out of line is bizarre.
@@ -219,15 +396,14 @@ UInt armg_calculate_flag_qc ( UInt resL1, UInt resL2,
 
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 /* Calculate the specified condition from the thunk components, in the
-   lowest bit of the word (bit 0). */
-extern 
-UInt armg_calculate_condition ( UInt cond_n_op /* ARMCondcode << 4 | cc_op */,
+   lowest bit of the word (bit 0).  Returned bits 31:1 are zero. */
+UInt armg_calculate_condition ( UInt cond_n_op /* (ARMCondcode << 4) | cc_op */,
                                 UInt cc_dep1,
                                 UInt cc_dep2, UInt cc_dep3 )
 {
    UInt cond  = cond_n_op >> 4;
    UInt cc_op = cond_n_op & 0xF;
-   UInt nf, zf, vf, cf, nzcv, inv;
+   UInt nf, zf, vf, cf, inv;
    //   vex_printf("XXXXXXXX %x %x %x %x\n", 
    //              cond_n_op, cc_dep1, cc_dep2, cc_dep3);
 
@@ -235,47 +411,46 @@ UInt armg_calculate_condition ( UInt cond_n_op /* ARMCondcode << 4 | cc_op */,
    if (cond == ARMCondAL) return 1;
 
    inv  = cond & 1;
-   nzcv = armg_calculate_flags_nzcv(cc_op, cc_dep1, cc_dep2, cc_dep3);
 
    switch (cond) {
       case ARMCondEQ:    // Z=1         => z
       case ARMCondNE:    // Z=0
-         zf = nzcv >> ARMG_CC_SHIFT_Z;
-         return 1 & (inv ^ zf);
+         zf = armg_calculate_flag_z(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ zf;
 
       case ARMCondHS:    // C=1         => c
       case ARMCondLO:    // C=0
-         cf = nzcv >> ARMG_CC_SHIFT_C;
-         return 1 & (inv ^ cf);
+         cf = armg_calculate_flag_c(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ cf;
 
       case ARMCondMI:    // N=1         => n
       case ARMCondPL:    // N=0
-         nf = nzcv >> ARMG_CC_SHIFT_N;
-         return 1 & (inv ^ nf);
+         nf = armg_calculate_flag_n(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ nf;
 
       case ARMCondVS:    // V=1         => v
       case ARMCondVC:    // V=0
-         vf = nzcv >> ARMG_CC_SHIFT_V;
-         return 1 & (inv ^ vf);
+         vf = armg_calculate_flag_v(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ vf;
 
       case ARMCondHI:    // C=1 && Z=0   => c & ~z
       case ARMCondLS:    // C=0 || Z=1
-         cf = nzcv >> ARMG_CC_SHIFT_C;
-         zf = nzcv >> ARMG_CC_SHIFT_Z;
-         return 1 & (inv ^ (cf & ~zf));
+         cf = armg_calculate_flag_c(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         zf = armg_calculate_flag_z(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ (cf & ~zf);
 
       case ARMCondGE:    // N=V          => ~(n^v)
       case ARMCondLT:    // N!=V
-         nf = nzcv >> ARMG_CC_SHIFT_N;
-         vf = nzcv >> ARMG_CC_SHIFT_V;
-         return 1 & (inv ^ ~(nf ^ vf));
+         nf = armg_calculate_flag_n(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         vf = armg_calculate_flag_v(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ (1 & ~(nf ^ vf));
 
       case ARMCondGT:    // Z=0 && N=V   => ~z & ~(n^v)  =>  ~(z | (n^v))
       case ARMCondLE:    // Z=1 || N!=V
-         nf = nzcv >> ARMG_CC_SHIFT_N;
-         vf = nzcv >> ARMG_CC_SHIFT_V;
-         zf = nzcv >> ARMG_CC_SHIFT_Z;
-         return 1 & (inv ^ ~(zf | (nf ^ vf)));
+         nf = armg_calculate_flag_n(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         vf = armg_calculate_flag_v(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         zf = armg_calculate_flag_z(cc_op, cc_dep1, cc_dep2, cc_dep3);
+         return inv ^ (1 & ~(zf | (nf ^ vf)));
 
       case ARMCondAL: // handled above
       case ARMCondNV: // should never get here: Illegal instr
@@ -332,13 +507,17 @@ IRExpr* guest_arm_spechelper ( HChar*   function_name,
    /* --------- specialising "armg_calculate_condition" --------- */
 
    if (vex_streq(function_name, "armg_calculate_condition")) {
-      /* specialise calls to above "armg_calculate condition" function */
-      IRExpr *cond_n_op, *cc_dep1, *cc_dep2, *cc_dep3;
+
+      /* specialise calls to the "armg_calculate_condition" function.
+         Not sure whether this is strictly necessary, but: the
+         replacement IR must produce only the values 0 or 1.  Bits
+         31:1 are required to be zero. */
+      IRExpr *cond_n_op, *cc_dep1, *cc_dep2, *cc_ndep;
       vassert(arity == 4);
-      cond_n_op = args[0]; /* ARMCondcode << 4  |  ARMG_CC_OP_* */
+      cond_n_op = args[0]; /* (ARMCondcode << 4)  |  ARMG_CC_OP_* */
       cc_dep1   = args[1];
       cc_dep2   = args[2];
-      cc_dep3   = args[3];
+      cc_ndep   = args[3];
 
       /*---------------- SUB ----------------*/
 
@@ -385,7 +564,27 @@ IRExpr* guest_arm_spechelper ( HChar*   function_name,
                      binop(Iop_CmpLE32U, cc_dep1, cc_dep2));
       }
 
+      /*---------------- SBB ----------------*/
+
+      if (isU32(cond_n_op, (ARMCondHS << 4) | ARMG_CC_OP_SBB)) {
+         /* This seems to happen a lot in softfloat code, eg __divdf3+140 */
+         /* thunk is: (dep1=argL, dep2=argR, ndep=oldC) */
+         /* HS after SBB (same as C after SBB below)
+            --> oldC ? (argL >=u argR) : (argL >u argR)
+            --> oldC ? (argR <=u argL) : (argR  test res == 0 */
          return unop(Iop_1Uto32,
@@ -398,6 +597,7 @@ IRExpr* guest_arm_spechelper ( HChar*   function_name,
       }
 
       /*----------------- AL -----------------*/
+
       /* A critically important case for Thumb code.
 
          What we're trying to spot is the case where cond_n_op is an
@@ -444,6 +644,126 @@ IRExpr* guest_arm_spechelper ( HChar*   function_name,
       }
    }
 
+   /* --------- specialising "armg_calculate_flag_c" --------- */
+
+   else
+   if (vex_streq(function_name, "armg_calculate_flag_c")) {
+
+      /* specialise calls to the "armg_calculate_flag_c" function.
+         Note that the returned value must be either 0 or 1; nonzero
+         bits 31:1 are not allowed.  In turn, incoming oldV and oldC
+         values (from the thunk) are assumed to have bits 31:1
+         clear. */
+      IRExpr *cc_op, *cc_dep1, *cc_dep2, *cc_ndep;
+      vassert(arity == 4);
+      cc_op   = args[0]; /* ARMG_CC_OP_* */
+      cc_dep1 = args[1];
+      cc_dep2 = args[2];
+      cc_ndep = args[3];
+
+      if (isU32(cc_op, ARMG_CC_OP_LOGIC)) {
+         /* Thunk args are (result, shco, oldV) */
+         /* C after LOGIC --> shco */
+         return cc_dep2;
+      }
+
+      if (isU32(cc_op, ARMG_CC_OP_SUB)) {
+         /* Thunk args are (argL, argR, unused) */
+         /* C after SUB --> argL >=u argR
+                        --> argR <=u argL */
+         return unop(Iop_1Uto32,
+                     binop(Iop_CmpLE32U, cc_dep2, cc_dep1));
+      }
+
+      if (isU32(cc_op, ARMG_CC_OP_SBB)) {
+         /* This happens occasionally in softfloat code, eg __divdf3+140 */
+         /* thunk is: (dep1=argL, dep2=argR, ndep=oldC) */
+         /* C after SBB (same as HS after SBB above)
+            --> oldC ? (argL >=u argR) : (argL >u argR)
+            --> oldC ? (argR <=u argL) : (argR  oldV */
+         return cc_ndep;
+      }
+
+      if (isU32(cc_op, ARMG_CC_OP_SUB)) {
+         /* Thunk args are (argL, argR, unused) */
+         /* V after SUB 
+            --> let res = argL - argR
+                in ((argL ^ argR) & (argL ^ res)) >> 31
+            --> ((argL ^ argR) & (argL ^ (argL - argR))) >> 31
+         */
+         IRExpr* argL = cc_dep1;
+         IRExpr* argR = cc_dep2;
+         return
+            binop(Iop_Shr32,
+                  binop(Iop_And32,
+                        binop(Iop_Xor32, argL, argR),
+                        binop(Iop_Xor32, argL, binop(Iop_Sub32, argL, argR))
+                  ),
+                  mkU8(31)
+            );
+      }
+
+      if (isU32(cc_op, ARMG_CC_OP_SBB)) {
+         /* This happens occasionally in softfloat code, eg __divdf3+140 */
+         /* thunk is: (dep1=argL, dep2=argR, ndep=oldC) */
+         /* V after SBB
+            --> let res = argL - argR - (oldC ^ 1)
+                in  (argL ^ argR) & (argL ^ res) & 1
+         */
+         return
+            binop(
+               Iop_And32,
+               binop(
+                  Iop_And32,
+                  // argL ^ argR
+                  binop(Iop_Xor32, cc_dep1, cc_dep2),
+                  // argL ^ (argL - argR - (oldC ^ 1))
+                  binop(Iop_Xor32,
+                        cc_dep1,
+                        binop(Iop_Sub32,
+                              binop(Iop_Sub32, cc_dep1, cc_dep2),
+                              binop(Iop_Xor32, cc_ndep, mkU32(1)))
+                  )
+               ),
+               mkU32(1)
+            );
+      }
+
+   }
+
 #  undef unop
 #  undef binop
 #  undef mkU32
@@ -478,14 +798,39 @@ void LibVEX_GuestARM_put_flags ( UInt flags_native,
 /* VISIBLE TO LIBVEX CLIENT */
 UInt LibVEX_GuestARM_get_cpsr ( /*IN*/VexGuestARMState* vex_state )
 {
-   UInt nzcv;
-   nzcv = armg_calculate_flags_nzcv(
-              vex_state->guest_CC_OP,
-              vex_state->guest_CC_DEP1,
-              vex_state->guest_CC_DEP2,
-              vex_state->guest_CC_NDEP
-           );
-   return nzcv;
+   UInt cpsr = 0;
+   // NZCV
+   cpsr |= armg_calculate_flags_nzcv(
+               vex_state->guest_CC_OP,
+               vex_state->guest_CC_DEP1,
+               vex_state->guest_CC_DEP2,
+               vex_state->guest_CC_NDEP
+            );
+   vassert(0 == (cpsr & 0x0FFFFFFF));
+   // Q
+   if (vex_state->guest_QFLAG32 > 0)
+      cpsr |= (1 << 27);
+   // GE
+   if (vex_state->guest_GEFLAG0 > 0)
+      cpsr |= (1 << 16);
+   if (vex_state->guest_GEFLAG1 > 0)
+      cpsr |= (1 << 17);
+   if (vex_state->guest_GEFLAG2 > 0)
+      cpsr |= (1 << 18);
+   if (vex_state->guest_GEFLAG3 > 0)
+      cpsr |= (1 << 19);
+   // M
+   cpsr |= (1 << 4); // 0b10000 means user-mode
+   // J,T   J (bit 24) is zero by initialisation above
+   // T  we copy from R15T[0]
+   if (vex_state->guest_R15T & 1)
+      cpsr |= (1 << 5);
+   // ITSTATE we punt on for the time being.  Could compute it
+   // if needed though.
+   // E, endianness, 0 (littleendian) from initialisation above
+   // A,I,F disable some async exceptions.  Not sure about these.
+   // Leave as zero for the time being.
+   return cpsr;
 }
 
 /* VISIBLE TO LIBVEX CLIENT */
@@ -513,6 +858,10 @@ void LibVEX_GuestARM_initialise ( /*OUT*/VexGuestARMState* vex_state )
    vex_state->guest_CC_DEP2 = 0;
    vex_state->guest_CC_NDEP = 0;
    vex_state->guest_QFLAG32 = 0;
+   vex_state->guest_GEFLAG0 = 0;
+   vex_state->guest_GEFLAG1 = 0;
+   vex_state->guest_GEFLAG2 = 0;
+   vex_state->guest_GEFLAG3 = 0;
 
    vex_state->guest_EMWARN  = 0;
    vex_state->guest_TISTART = 0;
@@ -606,7 +955,18 @@ Bool guest_arm_state_requires_precise_mem_exns ( Int minoff,
    Int r11_max = r11_min + 4 - 1;
 
    if (maxoff < r11_min || minoff > r11_max) {
-      /* no overlap with pc */
+      /* no overlap with r11 */
+   } else {
+      return True;
+   }
+
+   /* Ditto R7, particularly needed for proper stacktraces in Thumb
+      code. */
+   Int r7_min = offsetof(VexGuestARMState, guest_R7);
+   Int r7_max = r7_min + 4 - 1;
+
+   if (maxoff < r7_min || minoff > r7_max) {
+      /* no overlap with r7 */
    } else {
       return True;
    }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_toIR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_toIR.c
index e570ba80a..684f88138 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_toIR.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_arm_toIR.c
@@ -9,8 +9,11 @@
 
    Copyright (C) 2004-2010 OpenWorks LLP
       info@open-works.net
-   Copyright (C) 2010-2010 Dmitry Zhurikhin
-      zhur@ispras.ru
+
+   NEON support is
+   Copyright (C) 2010-2010 Samsung Electronics
+   contributed by Dmitry Zhurikhin 
+              and Kirill Batuzov 
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -254,6 +257,10 @@ static UInt setbit32 ( UInt x, Int ix, UInt b )
    (((_b8) << 8) \
     | BITS8((_b7),(_b6),(_b5),(_b4),(_b3),(_b2),(_b1),(_b0)))
 
+#define BITS10(_b9,_b8,_b7,_b6,_b5,_b4,_b3,_b2,_b1,_b0)  \
+   (((_b9) << 9) | ((_b8) << 8)                                \
+    | BITS8((_b7),(_b6),(_b5),(_b4),(_b3),(_b2),(_b1),(_b0)))
+
 /* produces _uint[_bMax:_bMin] */
 #define SLICE_UInt(_uint,_bMax,_bMin) \
    (( ((UInt)(_uint)) >> (_bMin)) \
@@ -427,6 +434,10 @@ static IRExpr* align4if ( IRExpr* e, Bool b )
 #define OFFB_TPIDRURO offsetof(VexGuestARMState,guest_TPIDRURO)
 #define OFFB_ITSTATE  offsetof(VexGuestARMState,guest_ITSTATE)
 #define OFFB_QFLAG32  offsetof(VexGuestARMState,guest_QFLAG32)
+#define OFFB_GEFLAG0  offsetof(VexGuestARMState,guest_GEFLAG0)
+#define OFFB_GEFLAG1  offsetof(VexGuestARMState,guest_GEFLAG1)
+#define OFFB_GEFLAG2  offsetof(VexGuestARMState,guest_GEFLAG2)
+#define OFFB_GEFLAG3  offsetof(VexGuestARMState,guest_GEFLAG3)
 
 
 /* ---------------- Integer registers ---------------- */
@@ -853,6 +864,10 @@ static void putMiscReg32 ( UInt    gsoffset,
    switch (gsoffset) {
       case OFFB_FPSCR:   break;
       case OFFB_QFLAG32: break;
+      case OFFB_GEFLAG0: break;
+      case OFFB_GEFLAG1: break;
+      case OFFB_GEFLAG2: break;
+      case OFFB_GEFLAG3: break;
       default: vassert(0); /* awaiting more cases */
    }
    vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_I32);
@@ -897,14 +912,98 @@ static void put_QFLAG32 ( IRTemp t, IRTemp condT )
    putMiscReg32( OFFB_QFLAG32, mkexpr(t), condT );
 }
 
-static void or_into_QFLAG32 ( IRTemp t, IRTemp condT )
+/* Stickily set the 'Q' flag (APSR bit 27) of the APSR (Application Program
+   Status Register) to indicate that overflow or saturation occurred.
+   Nb: t must be zero to denote no saturation, and any nonzero
+   value to indicate saturation. */
+static void or_into_QFLAG32 ( IRExpr* e, IRTemp condT )
 {
    IRTemp old = get_QFLAG32();
    IRTemp nyu = newTemp(Ity_I32);
-   assign(nyu, binop(Iop_Or32, mkexpr(old), mkexpr(t)) );
+   assign(nyu, binop(Iop_Or32, mkexpr(old), e) );
    put_QFLAG32(nyu, condT);
 }
 
+/* Generate code to set APSR.GE[flagNo]. Each fn call sets 1 bit.
+   flagNo: which flag bit to set [3...0]
+   lowbits_to_ignore:  0 = look at all 32 bits
+                       8 = look at top 24 bits only
+                      16 = look at top 16 bits only
+                      31 = look at the top bit only
+   e: input value to be evaluated.
+   The new value is taken from 'e' with the lowest 'lowbits_to_ignore'
+   masked out.  If the resulting value is zero then the GE flag is
+   set to 0; any other value sets the flag to 1. */
+static void put_GEFLAG32 ( Int flagNo,            /* 0, 1, 2 or 3 */
+                           Int lowbits_to_ignore, /* 0, 8, 16 or 31   */
+                           IRExpr* e,             /* Ity_I32 */
+                           IRTemp condT )
+{
+   vassert( flagNo >= 0 && flagNo <= 3 );
+   vassert( lowbits_to_ignore == 0  || 
+            lowbits_to_ignore == 8  || 
+            lowbits_to_ignore == 16 ||
+            lowbits_to_ignore == 31 );
+   IRTemp masked = newTemp(Ity_I32);
+   assign(masked, binop(Iop_Shr32, e, mkU8(lowbits_to_ignore)));
+ 
+   switch (flagNo) {
+      case 0: putMiscReg32(OFFB_GEFLAG0, mkexpr(masked), condT); break;
+      case 1: putMiscReg32(OFFB_GEFLAG1, mkexpr(masked), condT); break;
+      case 2: putMiscReg32(OFFB_GEFLAG2, mkexpr(masked), condT); break;
+      case 3: putMiscReg32(OFFB_GEFLAG3, mkexpr(masked), condT); break;
+      default: vassert(0);
+   }
+}
+
+/* Return the (32-bit, zero-or-nonzero representation scheme) of
+   the specified GE flag. */
+static IRExpr* get_GEFLAG32( Int flagNo /* 0, 1, 2, 3 */ )
+{
+   switch (flagNo) {
+      case 0: return IRExpr_Get( OFFB_GEFLAG0, Ity_I32 );
+      case 1: return IRExpr_Get( OFFB_GEFLAG1, Ity_I32 );
+      case 2: return IRExpr_Get( OFFB_GEFLAG2, Ity_I32 );
+      case 3: return IRExpr_Get( OFFB_GEFLAG3, Ity_I32 );
+      default: vassert(0);
+   }
+}
+
+/* Set all 4 GE flags from the given 32-bit value as follows: GE 3 and
+   2 are set from bit 31 of the value, and GE 1 and 0 are set from bit
+   15 of the value.  All other bits are ignored. */
+static void set_GE_32_10_from_bits_31_15 ( IRTemp t32, IRTemp condT )
+{
+   IRTemp ge10 = newTemp(Ity_I32);
+   IRTemp ge32 = newTemp(Ity_I32);
+   assign(ge10, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
+   assign(ge32, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
+   put_GEFLAG32( 0, 0, mkexpr(ge10), condT );
+   put_GEFLAG32( 1, 0, mkexpr(ge10), condT );
+   put_GEFLAG32( 2, 0, mkexpr(ge32), condT );
+   put_GEFLAG32( 3, 0, mkexpr(ge32), condT );
+}
+
+
+/* Set all 4 GE flags from the given 32-bit value as follows: GE 3
+   from bit 31, GE 2 from bit 23, GE 1 from bit 15, and GE0 from
+   bit 7.  All other bits are ignored. */
+static void set_GE_3_2_1_0_from_bits_31_23_15_7 ( IRTemp t32, IRTemp condT )
+{
+   IRTemp ge0 = newTemp(Ity_I32);
+   IRTemp ge1 = newTemp(Ity_I32);
+   IRTemp ge2 = newTemp(Ity_I32);
+   IRTemp ge3 = newTemp(Ity_I32);
+   assign(ge0, binop(Iop_And32, mkexpr(t32), mkU32(0x00000080)));
+   assign(ge1, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
+   assign(ge2, binop(Iop_And32, mkexpr(t32), mkU32(0x00800000)));
+   assign(ge3, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
+   put_GEFLAG32( 0, 0, mkexpr(ge0), condT );
+   put_GEFLAG32( 1, 0, mkexpr(ge1), condT );
+   put_GEFLAG32( 2, 0, mkexpr(ge2), condT );
+   put_GEFLAG32( 3, 0, mkexpr(ge3), condT );
+}
+
 
 /* ---------------- FPSCR stuff ---------------- */
 
@@ -989,14 +1088,13 @@ static HChar* nCC ( ARMCondcode cond ) {
 static IRExpr* mk_armg_calculate_condition_dyn ( IRExpr* cond )
 {
    vassert(typeOfIRExpr(irsb->tyenv, cond) == Ity_I32);
-   /* And 'cond' had better produce a value in which only bits 7:4
-      bits are nonzero.  However, obviously we can't assert for
-      that. */
+   /* And 'cond' had better produce a value in which only bits 7:4 are
+      nonzero.  However, obviously we can't assert for that. */
 
    /* So what we're constructing for the first argument is 
-      "(cond << 4) | stored-operation-operation".  However,
-      as per comments above, must be supplied pre-shifted to this
-      function.
+      "(cond << 4) | stored-operation".
+      However, as per comments above, 'cond' must be supplied
+      pre-shifted to this function.
 
       This pairing scheme requires that the ARM_CC_OP_ values all fit
       in 4 bits.  Hence we are passing a (COND, OP) pair in the lowest
@@ -1391,6 +1489,200 @@ static void gen_SIGILL_T_if_in_ITBlock (
 }
 
 
+/* Generate an APSR value, from the NZCV thunk, and
+   from QFLAG32 and GEFLAG0 .. GEFLAG3. */
+static IRTemp synthesise_APSR ( void )
+{
+   IRTemp res1 = newTemp(Ity_I32);
+   // Get NZCV
+   assign( res1, mk_armg_calculate_flags_nzcv() );
+   // OR in the Q value
+   IRTemp res2 = newTemp(Ity_I32);
+   assign(
+      res2,
+      binop(Iop_Or32,
+            mkexpr(res1),
+            binop(Iop_Shl32,
+                  unop(Iop_1Uto32,
+                       binop(Iop_CmpNE32,
+                             mkexpr(get_QFLAG32()),
+                             mkU32(0))),
+                  mkU8(ARMG_CC_SHIFT_Q)))
+   );
+   // OR in GE0 .. GE3
+   IRExpr* ge0
+      = unop(Iop_1Uto32, binop(Iop_CmpNE32, get_GEFLAG32(0), mkU32(0)));
+   IRExpr* ge1
+      = unop(Iop_1Uto32, binop(Iop_CmpNE32, get_GEFLAG32(1), mkU32(0)));
+   IRExpr* ge2
+      = unop(Iop_1Uto32, binop(Iop_CmpNE32, get_GEFLAG32(2), mkU32(0)));
+   IRExpr* ge3
+      = unop(Iop_1Uto32, binop(Iop_CmpNE32, get_GEFLAG32(3), mkU32(0)));
+   IRTemp res3 = newTemp(Ity_I32);
+   assign(res3,
+          binop(Iop_Or32,
+                mkexpr(res2),
+                binop(Iop_Or32,
+                      binop(Iop_Or32,
+                            binop(Iop_Shl32, ge0, mkU8(16)),
+                            binop(Iop_Shl32, ge1, mkU8(17))),
+                      binop(Iop_Or32,
+                            binop(Iop_Shl32, ge2, mkU8(18)),
+                            binop(Iop_Shl32, ge3, mkU8(19))) )));
+   return res3;
+}
+
+
+/* and the inverse transformation: given an APSR value,
+   set the NZCV thunk, the Q flag, and the GE flags. */
+static void desynthesise_APSR ( Bool write_nzcvq, Bool write_ge,
+                                IRTemp apsrT, IRTemp condT )
+{
+   vassert(write_nzcvq || write_ge);
+   if (write_nzcvq) {
+      // Do NZCV
+      IRTemp immT = newTemp(Ity_I32);
+      assign(immT, binop(Iop_And32, mkexpr(apsrT), mkU32(0xF0000000)) );
+      setFlags_D1(ARMG_CC_OP_COPY, immT, condT);
+      // Do Q
+      IRTemp qnewT = newTemp(Ity_I32);
+      assign(qnewT, binop(Iop_And32, mkexpr(apsrT), mkU32(ARMG_CC_MASK_Q)));
+      put_QFLAG32(qnewT, condT);
+   }
+   if (write_ge) {
+      // Do GE3..0
+      put_GEFLAG32(0, 0, binop(Iop_And32, mkexpr(apsrT), mkU32(1<<16)),
+                   condT);
+      put_GEFLAG32(1, 0, binop(Iop_And32, mkexpr(apsrT), mkU32(1<<17)),
+                   condT);
+      put_GEFLAG32(2, 0, binop(Iop_And32, mkexpr(apsrT), mkU32(1<<18)),
+                   condT);
+      put_GEFLAG32(3, 0, binop(Iop_And32, mkexpr(apsrT), mkU32(1<<19)),
+                   condT);
+   }
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Helpers for saturation                               ---*/
+/*------------------------------------------------------------*/
+
+/* FIXME: absolutely the only diff. between (a) armUnsignedSatQ and
+   (b) armSignedSatQ is that in (a) the floor is set to 0, whereas in
+   (b) the floor is computed from the value of imm5.  these two fnsn
+   should be commoned up. */
+
+/* UnsignedSatQ(): 'clamp' each value so it lies between 0 <= x <= (2^N)-1
+   Optionally return flag resQ saying whether saturation occurred.
+   See definition in manual, section A2.2.1, page 41
+   (bits(N), boolean) UnsignedSatQ( integer i, integer N )
+   {
+     if ( i > (2^N)-1 ) { result = (2^N)-1; saturated = TRUE; }
+     elsif ( i < 0 )    { result = 0; saturated = TRUE; }
+     else               { result = i; saturated = FALSE; }
+     return ( result, saturated );
+   }
+*/
+static void armUnsignedSatQ( IRTemp* res,  /* OUT - Ity_I32 */
+                             IRTemp* resQ, /* OUT - Ity_I32  */
+                             IRTemp regT,  /* value to clamp - Ity_I32 */
+                             UInt imm5 )   /* saturation ceiling */
+{
+   UInt ceil  = (1 << imm5) - 1;    // (2^imm5)-1
+   UInt floor = 0;
+
+   IRTemp node0 = newTemp(Ity_I32);
+   IRTemp node1 = newTemp(Ity_I32);
+   IRTemp node2 = newTemp(Ity_I1);
+   IRTemp node3 = newTemp(Ity_I32);
+   IRTemp node4 = newTemp(Ity_I32);
+   IRTemp node5 = newTemp(Ity_I1);
+   IRTemp node6 = newTemp(Ity_I32);
+
+   assign( node0, mkexpr(regT) );
+   assign( node1, mkU32(ceil) );
+   assign( node2, binop( Iop_CmpLT32S, mkexpr(node1), mkexpr(node0) ) );
+   assign( node3, IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(node2)),
+                                mkexpr(node0),
+                                mkexpr(node1) ) );
+   assign( node4, mkU32(floor) );
+   assign( node5, binop( Iop_CmpLT32S, mkexpr(node3), mkexpr(node4) ) );
+   assign( node6, IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(node5)),
+                                mkexpr(node3),
+                                mkexpr(node4) ) );
+   assign( *res, mkexpr(node6) );
+
+   /* if saturation occurred, then resQ is set to some nonzero value
+      if sat did not occur, resQ is guaranteed to be zero. */
+   if (resQ) {
+      assign( *resQ, binop(Iop_Xor32, mkexpr(*res), mkexpr(regT)) );
+   }
+}
+
+
+/* SignedSatQ(): 'clamp' each value so it lies between  -2^N <= x <= (2^N) - 1
+   Optionally return flag resQ saying whether saturation occurred.
+   - see definition in manual, section A2.2.1, page 41
+   (bits(N), boolean ) SignedSatQ( integer i, integer N ) 
+   {
+     if ( i > 2^(N-1) - 1 )    { result = 2^(N-1) - 1; saturated = TRUE; }
+     elsif ( i < -(2^(N-1)) )  { result = -(2^(N-1));  saturated = FALSE; }
+     else                      { result = i;           saturated = FALSE; }
+     return ( result[N-1:0], saturated );
+   }
+*/
+static void armSignedSatQ( IRTemp regT,    /* value to clamp - Ity_I32 */
+                           UInt imm5,      /* saturation ceiling */
+                           IRTemp* res,    /* OUT - Ity_I32 */
+                           IRTemp* resQ )  /* OUT - Ity_I32  */
+{
+   Int ceil  =  (1 << (imm5-1)) - 1;  //  (2^(imm5-1))-1
+   Int floor = -(1 << (imm5-1));      // -(2^(imm5-1))
+
+   IRTemp node0 = newTemp(Ity_I32);
+   IRTemp node1 = newTemp(Ity_I32);
+   IRTemp node2 = newTemp(Ity_I1);
+   IRTemp node3 = newTemp(Ity_I32);
+   IRTemp node4 = newTemp(Ity_I32);
+   IRTemp node5 = newTemp(Ity_I1);
+   IRTemp node6 = newTemp(Ity_I32);
+
+   assign( node0, mkexpr(regT) );
+   assign( node1, mkU32(ceil) );
+   assign( node2, binop( Iop_CmpLT32S, mkexpr(node1), mkexpr(node0) ) );
+   assign( node3, IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(node2)),
+                                mkexpr(node0),  mkexpr(node1) ) );
+   assign( node4, mkU32(floor) );
+   assign( node5, binop( Iop_CmpLT32S, mkexpr(node3), mkexpr(node4) ) );
+   assign( node6, IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(node5)),
+                                mkexpr(node3),  mkexpr(node4) ) );
+   assign( *res, mkexpr(node6) );
+
+   /* if saturation occurred, then resQ is set to some nonzero value
+      if sat did not occur, resQ is guaranteed to be zero. */
+   if (resQ) {
+     assign( *resQ, binop(Iop_Xor32, mkexpr(*res), mkexpr(regT)) );
+   }
+}
+
+
+/* Compute a value 0 :: I32 or 1 :: I32, indicating whether signed
+   overflow occurred for 32-bit addition.  Needs both args and the
+   result.  HD p27. */
+static
+IRExpr* signed_overflow_after_Add32 ( IRExpr* resE,
+                                      IRTemp argL, IRTemp argR )
+{
+   IRTemp res = newTemp(Ity_I32);
+   assign(res, resE);
+   return
+      binop( Iop_Shr32, 
+             binop( Iop_And32,
+                    binop( Iop_Xor32, mkexpr(res), mkexpr(argL) ),
+                    binop( Iop_Xor32, mkexpr(res), mkexpr(argR) )), 
+             mkU8(31) );
+}
+
 
 /*------------------------------------------------------------*/
 /*--- Larger helpers                                       ---*/
@@ -1407,6 +1699,12 @@ static void gen_SIGILL_T_if_in_ITBlock (
 
    The calling convention for res and newC is a bit funny.  They could
    be passed by value, but instead are passed by ref.
+
+   The C (shco) value computed must be zero in bits 31:1, as the IR
+   optimisations for flag handling (guest_arm_spechelper) rely on
+   that, and the slow-path handlers (armg_calculate_flags_nzcv) assert
+   for it.  Same applies to all these functions that compute shco
+   after a shift or rotate, not just this one.
 */
 
 static void compute_result_and_C_after_LSL_by_imm5 (
@@ -1458,7 +1756,7 @@ static void compute_result_and_C_after_LSL_by_reg (
       /* mux0X(amt == 0,
                mux0X(amt < 32, 
                      0,
-                     Rm[(32-amt) & 31])
+                     Rm[(32-amt) & 31]),
                oldC)
       */
       /* About the best you can do is pray that iropt is able
@@ -1474,16 +1772,19 @@ static void compute_result_and_C_after_LSL_by_reg (
                unop(Iop_1Uto8,
                     binop(Iop_CmpLE32U, mkexpr(amtT), mkU32(32))),
                mkU32(0),
-               binop(Iop_Shr32,
-                     mkexpr(rMt),
-                     unop(Iop_32to8,
-                          binop(Iop_And32,
-                                binop(Iop_Sub32,
-                                      mkU32(32),
-                                      mkexpr(amtT)),
-                                mkU32(31)
-                          )
-                     )
+               binop(Iop_And32,
+                     binop(Iop_Shr32,
+                           mkexpr(rMt),
+                           unop(Iop_32to8,
+                                binop(Iop_And32,
+                                      binop(Iop_Sub32,
+                                            mkU32(32),
+                                            mkexpr(amtT)),
+                                      mkU32(31)
+                                )
+                           )
+                     ),
+                     mkU32(1)
                )
             ),
             mkexpr(oldC)
@@ -1569,7 +1870,7 @@ static void compute_result_and_C_after_LSR_by_reg (
       /* mux0X(amt == 0,
                mux0X(amt < 32, 
                      0,
-                     Rm[(amt-1) & 31])
+                     Rm[(amt-1) & 31]),
                oldC)
       */
       IRTemp oldC = newTemp(Ity_I32);
@@ -1583,16 +1884,19 @@ static void compute_result_and_C_after_LSR_by_reg (
                unop(Iop_1Uto8,
                     binop(Iop_CmpLE32U, mkexpr(amtT), mkU32(32))),
                mkU32(0),
-               binop(Iop_Shr32,
-                     mkexpr(rMt),
-                     unop(Iop_32to8,
-                          binop(Iop_And32,
-                                binop(Iop_Sub32,
-                                      mkexpr(amtT),
-                                      mkU32(1)),
-                                mkU32(31)
-                          )
-                     )
+               binop(Iop_And32,
+                     binop(Iop_Shr32,
+                           mkexpr(rMt),
+                           unop(Iop_32to8,
+                                binop(Iop_And32,
+                                      binop(Iop_Sub32,
+                                            mkexpr(amtT),
+                                            mkU32(1)),
+                                      mkU32(31)
+                                )
+                           )
+                     ),
+                     mkU32(1)
                )
             ),
             mkexpr(oldC)
@@ -1691,20 +1995,26 @@ static void compute_result_and_C_after_ASR_by_reg (
             IRExpr_Mux0X(
                unop(Iop_1Uto8,
                     binop(Iop_CmpLE32U, mkexpr(amtT), mkU32(32))),
-               binop(Iop_Shr32,
-                     mkexpr(rMt),
-                     mkU8(31)
+               binop(Iop_And32,
+                     binop(Iop_Shr32,
+                           mkexpr(rMt),
+                           mkU8(31)
+                     ),
+                     mkU32(1)
                ),
-               binop(Iop_Shr32,
-                     mkexpr(rMt),
-                     unop(Iop_32to8,
-                          binop(Iop_And32,
-                                binop(Iop_Sub32,
-                                      mkexpr(amtT),
-                                      mkU32(1)),
-                                mkU32(31)
-                          )
-                     )
+               binop(Iop_And32,
+                     binop(Iop_Shr32,
+                           mkexpr(rMt),
+                           unop(Iop_32to8,
+                                binop(Iop_And32,
+                                      binop(Iop_Sub32,
+                                            mkexpr(amtT),
+                                            mkU32(1)),
+                                      mkU32(31)
+                                )
+                           )
+                     ),
+                     mkU32(1)
                )
             ),
             mkexpr(oldC)
@@ -2373,6 +2683,108 @@ static Bool compute_ITSTATE ( /*OUT*/UInt*  itstate,
    return False;
 }
 
+
+/* Generate IR to do 32-bit bit reversal, a la Hacker's Delight
+   Chapter 7 Section 1. */
+static IRTemp gen_BITREV ( IRTemp x0 )
+{
+   IRTemp x1 = newTemp(Ity_I32);
+   IRTemp x2 = newTemp(Ity_I32);
+   IRTemp x3 = newTemp(Ity_I32);
+   IRTemp x4 = newTemp(Ity_I32);
+   IRTemp x5 = newTemp(Ity_I32);
+   UInt   c1 = 0x55555555;
+   UInt   c2 = 0x33333333;
+   UInt   c3 = 0x0F0F0F0F;
+   UInt   c4 = 0x00FF00FF;
+   UInt   c5 = 0x0000FFFF;
+   assign(x1,
+          binop(Iop_Or32,
+                binop(Iop_Shl32,
+                      binop(Iop_And32, mkexpr(x0), mkU32(c1)),
+                      mkU8(1)),
+                binop(Iop_Shr32,
+                      binop(Iop_And32, mkexpr(x0), mkU32(~c1)),
+                      mkU8(1))
+   ));
+   assign(x2,
+          binop(Iop_Or32,
+                binop(Iop_Shl32,
+                      binop(Iop_And32, mkexpr(x1), mkU32(c2)),
+                      mkU8(2)),
+                binop(Iop_Shr32,
+                      binop(Iop_And32, mkexpr(x1), mkU32(~c2)),
+                      mkU8(2))
+   ));
+   assign(x3,
+          binop(Iop_Or32,
+                binop(Iop_Shl32,
+                      binop(Iop_And32, mkexpr(x2), mkU32(c3)),
+                      mkU8(4)),
+                binop(Iop_Shr32,
+                      binop(Iop_And32, mkexpr(x2), mkU32(~c3)),
+                      mkU8(4))
+   ));
+   assign(x4,
+          binop(Iop_Or32,
+                binop(Iop_Shl32,
+                      binop(Iop_And32, mkexpr(x3), mkU32(c4)),
+                      mkU8(8)),
+                binop(Iop_Shr32,
+                      binop(Iop_And32, mkexpr(x3), mkU32(~c4)),
+                      mkU8(8))
+   ));
+   assign(x5,
+          binop(Iop_Or32,
+                binop(Iop_Shl32,
+                      binop(Iop_And32, mkexpr(x4), mkU32(c5)),
+                      mkU8(16)),
+                binop(Iop_Shr32,
+                      binop(Iop_And32, mkexpr(x4), mkU32(~c5)),
+                      mkU8(16))
+   ));
+   return x5;
+}
+
+
+/* Generate IR to do rearrange bytes 3:2:1:0 in a word in to the order
+   0:1:2:3 (aka byte-swap). */
+static IRTemp gen_REV ( IRTemp arg )
+{
+   IRTemp res = newTemp(Ity_I32);
+   assign(res, 
+          binop(Iop_Or32,
+                binop(Iop_Shl32, mkexpr(arg), mkU8(24)),
+          binop(Iop_Or32,
+                binop(Iop_And32, binop(Iop_Shl32, mkexpr(arg), mkU8(8)), 
+                                 mkU32(0x00FF0000)),
+          binop(Iop_Or32,
+                binop(Iop_And32, binop(Iop_Shr32, mkexpr(arg), mkU8(8)),
+                                       mkU32(0x0000FF00)),
+                binop(Iop_And32, binop(Iop_Shr32, mkexpr(arg), mkU8(24)),
+                                       mkU32(0x000000FF) )
+   ))));
+   return res;
+}
+
+
+/* Generate IR to do rearrange bytes 3:2:1:0 in a word in to the order
+   2:3:0:1 (swap within lo and hi halves). */
+static IRTemp gen_REV16 ( IRTemp arg )
+{
+   IRTemp res = newTemp(Ity_I32);
+   assign(res,
+          binop(Iop_Or32,
+                binop(Iop_And32,
+                      binop(Iop_Shl32, mkexpr(arg), mkU8(8)),
+                      mkU32(0xFF00FF00)),
+                binop(Iop_And32,
+                      binop(Iop_Shr32, mkexpr(arg), mkU8(8)),
+                      mkU32(0x00FF00FF))));
+   return res;
+}
+
+
 /*------------------------------------------------------------*/
 /*--- Advanced SIMD (NEON) instructions                    ---*/
 /*------------------------------------------------------------*/
@@ -3399,7 +3811,7 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
       case 5:
          if (B == 0) {
             /* VRSHL */
-            IROp op, op_shrn, op_shln, cmp_gt, op_sub, op_add;
+            IROp op, op_shrn, op_shln, cmp_gt, op_add;
             IRTemp shval, old_shval, imm_val, round;
             UInt i;
             ULong imm;
@@ -3419,28 +3831,24 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                switch (size) {
                   case 0:
                      op = Q ? Iop_Shl8x16 : Iop_Shl8x8;
-                     op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
                      op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
                      op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
                      op_shln = Q ? Iop_ShlN8x16 : Iop_ShlN8x8;
                      break;
                   case 1:
                      op = Q ? Iop_Shl16x8 : Iop_Shl16x4;
-                     op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
                      op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
                      op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
                      op_shln = Q ? Iop_ShlN16x8 : Iop_ShlN16x4;
                      break;
                   case 2:
                      op = Q ? Iop_Shl32x4 : Iop_Shl32x2;
-                     op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
                      op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
                      op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
                      op_shln = Q ? Iop_ShlN32x4 : Iop_ShlN32x2;
                      break;
                   case 3:
                      op = Q ? Iop_Shl64x2 : Iop_Shl64;
-                     op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
                      op_add = Q ? Iop_Add64x2 : Iop_Add64;
                      op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
                      op_shln = Q ? Iop_ShlN64x2 : Iop_Shl64;
@@ -3452,28 +3860,24 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                switch (size) {
                   case 0:
                      op = Q ? Iop_Sal8x16 : Iop_Sal8x8;
-                     op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
                      op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
                      op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
                      op_shln = Q ? Iop_ShlN8x16 : Iop_ShlN8x8;
                      break;
                   case 1:
                      op = Q ? Iop_Sal16x8 : Iop_Sal16x4;
-                     op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
                      op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
                      op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
                      op_shln = Q ? Iop_ShlN16x8 : Iop_ShlN16x4;
                      break;
                   case 2:
                      op = Q ? Iop_Sal32x4 : Iop_Sal32x2;
-                     op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
                      op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
                      op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
                      op_shln = Q ? Iop_ShlN32x4 : Iop_ShlN32x2;
                      break;
                   case 3:
                      op = Q ? Iop_Sal64x2 : Iop_Sal64x1;
-                     op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
                      op_add = Q ? Iop_Add64x2 : Iop_Add64;
                      op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
                      op_shln = Q ? Iop_ShlN64x2 : Iop_Shl64;
@@ -3509,7 +3913,7 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                                    binop(op,
                                          mkexpr(arg_m),
                                          unop(Iop_64to8,
-                                              binop(op_sub,
+                                              binop(op_add,
                                                     mkexpr(arg_n),
                                                     mkexpr(imm_val)))),
                                    binop(Q ? Iop_AndV128 : Iop_And64,
@@ -3544,7 +3948,7 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                 nreg);
          } else {
             /* VQRSHL */
-            IROp op, op_rev, op_shrn, op_shln, cmp_neq, cmp_gt, op_sub, op_add;
+            IROp op, op_rev, op_shrn, op_shln, cmp_neq, cmp_gt, op_add;
             IRTemp tmp, shval, mask, old_shval, imm_val, round;
             UInt i;
             ULong esize, imm;
@@ -3565,7 +3969,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                switch (size) {
                   case 0:
                      op = Q ? Iop_QShl8x16 : Iop_QShl8x8;
-                     op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
                      op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
                      op_rev = Q ? Iop_Shr8x16 : Iop_Shr8x8;
                      op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
@@ -3573,7 +3976,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 1:
                      op = Q ? Iop_QShl16x8 : Iop_QShl16x4;
-                     op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
                      op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
                      op_rev = Q ? Iop_Shr16x8 : Iop_Shr16x4;
                      op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
@@ -3581,7 +3983,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 2:
                      op = Q ? Iop_QShl32x4 : Iop_QShl32x2;
-                     op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
                      op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
                      op_rev = Q ? Iop_Shr32x4 : Iop_Shr32x2;
                      op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
@@ -3589,7 +3990,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 3:
                      op = Q ? Iop_QShl64x2 : Iop_QShl64x1;
-                     op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
                      op_add = Q ? Iop_Add64x2 : Iop_Add64;
                      op_rev = Q ? Iop_Shr64x2 : Iop_Shr64;
                      op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
@@ -3602,7 +4002,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                switch (size) {
                   case 0:
                      op = Q ? Iop_QSal8x16 : Iop_QSal8x8;
-                     op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
                      op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
                      op_rev = Q ? Iop_Sar8x16 : Iop_Sar8x8;
                      op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
@@ -3610,7 +4009,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 1:
                      op = Q ? Iop_QSal16x8 : Iop_QSal16x4;
-                     op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
                      op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
                      op_rev = Q ? Iop_Sar16x8 : Iop_Sar16x4;
                      op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
@@ -3618,7 +4016,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 2:
                      op = Q ? Iop_QSal32x4 : Iop_QSal32x2;
-                     op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
                      op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
                      op_rev = Q ? Iop_Sar32x4 : Iop_Sar32x2;
                      op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
@@ -3626,7 +4023,6 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                      break;
                   case 3:
                      op = Q ? Iop_QSal64x2 : Iop_QSal64x1;
-                     op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
                      op_add = Q ? Iop_Add64x2 : Iop_Add64;
                      op_rev = Q ? Iop_Sar64x2 : Iop_Sar64;
                      op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
@@ -3751,9 +4147,9 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                }
             } else {
                switch (size) {
-                  case 0: op = Q ? Iop_Min8Sx16 : Iop_Min8Sx8; break;
-                  case 1: op = Q ? Iop_Min16Sx8 : Iop_Min16Sx4; break;
-                  case 2: op = Q ? Iop_Min32Sx4 : Iop_Min32Sx2; break;
+                  case 0: op = Q ? Iop_Min8Ux16 : Iop_Min8Ux8; break;
+                  case 1: op = Q ? Iop_Min16Ux8 : Iop_Min16Ux4; break;
+                  case 2: op = Q ? Iop_Min32Ux4 : Iop_Min32Ux2; break;
                   case 3: return False;
                   default: vassert(0);
                }
@@ -5202,11 +5598,10 @@ Bool dis_neon_data_2reg_and_scalar ( UInt theInstr, IRTemp condT )
    if (INSN(11,8) == BITS4(1,0,1,1) && !U) {
       IROp op ,op2, dup, get;
       ULong imm;
-      IRTemp res, arg_m, arg_n;
+      IRTemp arg_m, arg_n;
       if (dreg & 1)
          return False;
       dreg >>= 1;
-      res = newTemp(Ity_V128);
       arg_m = newTemp(Ity_I64);
       arg_n = newTemp(Ity_I64);
       assign(arg_n, getDRegI64(nreg));
@@ -6817,8 +7212,8 @@ Bool dis_neon_data_2reg_misc ( UInt theInstr, IRTemp condT )
                      op_hi = Iop_InterleaveEvenLanes16x4;
                      break;
                   case 2:
-                     op_lo = Iop_InterleaveHI32x2;
-                     op_hi = Iop_InterleaveLO32x2;
+                     op_lo = Iop_InterleaveLO32x2;
+                     op_hi = Iop_InterleaveHI32x2;
                      break;
                   case 3:
                      return False;
@@ -6912,7 +7307,7 @@ Bool dis_neon_data_2reg_misc ( UInt theInstr, IRTemp condT )
             }
             switch (size) {
                case 0:
-                  op_lo = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveHI8x8;
+                  op_lo = Q ? Iop_InterleaveHI8x16 : Iop_InterleaveHI8x8;
                   op_hi = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveLO8x8;
                   break;
                case 1:
@@ -7529,7 +7924,6 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
    UInt N, size, i, j;
    UInt inc;
    UInt regs = 1;
-   IRTemp addr;
 
    if (isT) {
       vassert(condT != IRTemp_INVALID);
@@ -7542,6 +7936,12 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
    if (INSN(20,20) != 0)
       return False;
 
+   IRTemp initialRn = newTemp(Ity_I32);
+   assign(initialRn, isT ? getIRegT(rN) : getIRegA(rN));
+
+   IRTemp initialRm = newTemp(Ity_I32);
+   assign(initialRm, isT ? getIRegT(rM) : getIRegA(rM));
+
    if (A) {
       N = B & 3;
       if ((B >> 2) < 3) {
@@ -7557,8 +7957,8 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
             default: vassert(0);
          }
 
-         addr = newTemp(Ity_I32);
-         assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+         IRTemp addr = newTemp(Ity_I32);
+         assign(addr, mkexpr(initialRn));
 
          // go uncond
          if (condT != IRTemp_INVALID)
@@ -7575,7 +7975,12 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
                DIP(", ");
             DIP("d%u[%u]", rD + j * inc, i);
          }
-            DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+         DIP("}, [r%u]", rN);
+         if (rM != 13 && rM != 15) {
+            DIP(", r%u\n", rM);
+         } else {
+            DIP("%s\n", (rM != 15) ? "!" : "");
+         }
       } else {
          /* VLDn (single element to all lanes) */
          UInt r;
@@ -7601,8 +8006,8 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
             mk_skip_over_T32_if_cond_is_false(condT);
          // now uncond
 
-         addr = newTemp(Ity_I32);
-         assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+         IRTemp addr = newTemp(Ity_I32);
+         assign(addr, mkexpr(initialRn));
 
          if (N == 0 && INSN(5,5))
             regs = 2;
@@ -7666,21 +8071,27 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
                DIP("d%u[]", rD + r + i * inc);
             }
          }
-         DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+         DIP("}, [r%u]", rN);
+         if (rM != 13 && rM != 15) {
+            DIP(", r%u\n", rM);
+         } else {
+            DIP("%s\n", (rM != 15) ? "!" : "");
+         }
       }
       /* Writeback.  We're uncond here, so no condT-ing. */
       if (rM != 15) {
          if (rM == 13) {
             IRExpr* e = binop(Iop_Add32,
-                              mkexpr(addr),
+                              mkexpr(initialRn),
                               mkU32((1 << size) * (N + 1)));
             if (isT)
                putIRegT(rN, e, IRTemp_INVALID);
             else
                putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
          } else {
-            IRExpr* e = binop(Iop_Add32, mkexpr(addr),
-                              isT ? getIRegT(rM) : getIRegA(rM));
+            IRExpr* e = binop(Iop_Add32,
+                              mkexpr(initialRn),
+                              mkexpr(initialRm));
             if (isT)
                putIRegT(rN, e, IRTemp_INVALID);
             else
@@ -7731,8 +8142,8 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
          mk_skip_over_T32_if_cond_is_false(condT);
       // now uncond
 
-      addr = newTemp(Ity_I32);
-      assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+      IRTemp addr = newTemp(Ity_I32);
+      assign(addr, mkexpr(initialRn));
 
       for (r = 0; r < regs; r++) {
          for (i = 0; i < elems; i++) {
@@ -7750,15 +8161,16 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
       if (rM != 15) {
          if (rM == 13) {
             IRExpr* e = binop(Iop_Add32,
-                              mkexpr(addr),
+                              mkexpr(initialRn),
                               mkU32(8 * (N + 1) * regs));
             if (isT)
                putIRegT(rN, e, IRTemp_INVALID);
             else
                putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
          } else {
-            IRExpr* e = binop(Iop_Add32, mkexpr(addr),
-                              isT ? getIRegT(rM) : getIRegA(rM));
+            IRExpr* e = binop(Iop_Add32,
+                              mkexpr(initialRn),
+                              mkexpr(initialRm));
             if (isT)
                putIRegT(rN, e, IRTemp_INVALID);
             else
@@ -7778,7 +8190,12 @@ Bool dis_neon_elem_or_struct_load ( UInt theInstr,
             }
          }
       }
-      DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+      DIP("}, [r%u]", rN);
+      if (rM != 13 && rM != 15) {
+         DIP(", r%u\n", rM);
+      } else {
+         DIP("%s\n", (rM != 15) ? "!" : "");
+      }
       return True;
    }
 #  undef INSN
@@ -7868,100 +8285,2008 @@ static Bool decode_NEON_instruction (
 
 
 /*------------------------------------------------------------*/
-/*--- LDMxx/STMxx helper (both ARM and Thumb32)            ---*/
+/*--- V6 MEDIA instructions                                ---*/
 /*------------------------------------------------------------*/
 
-/* Generate IR for LDMxx and STMxx.  This is complex.  Assumes it's
-   unconditional, so the caller must produce a jump-around before
-   calling this, if the insn is to be conditional.  Caller is
-   responsible for all validation of parameters.  For LDMxx, if PC is
-   amongst the values loaded, caller is also responsible for
-   generating the jump. */
-static void mk_ldm_stm ( Bool arm,     /* True: ARM, False: Thumb */
-                         UInt rN,      /* base reg */
-                         UInt bINC,    /* 1: inc,  0: dec */
-                         UInt bBEFORE, /* 1: inc/dec before, 0: after */
-                         UInt bW,      /* 1: writeback to Rn */
-                         UInt bL,      /* 1: load, 0: store */
-                         UInt regList )
-{
-   Int i, r, m, nRegs;
+/* Both ARM and Thumb */
 
-   /* Get hold of the old Rn value.  We might need to write its value
-      to memory during a store, and if it's also the writeback
-      register then we need to get its value now.  We can't treat it
-      exactly like the other registers we're going to transfer,
-      because for xxMDA and xxMDB writeback forms, the generated IR
-      updates Rn in the guest state before any transfers take place.
-      We have to do this as per comments below, in order that if Rn is
-      the stack pointer then it always has a value is below or equal
-      to any of the transfer addresses.  Ick. */
-   IRTemp oldRnT = newTemp(Ity_I32);
-   assign(oldRnT, arm ? getIRegA(rN) : getIRegT(rN));
+/* Translate a V6 media instruction.    If successful, returns
+   True and *dres may or may not be updated.  If failure, returns
+   False and doesn't change *dres nor create any IR.
 
-   IRTemp anchorT = newTemp(Ity_I32);
-   /* The old (Addison-Wesley) ARM ARM seems to say that LDMxx/STMxx
-      ignore the bottom two bits of the address.  However, Cortex-A8
-      doesn't seem to care.  Hence: */
-   /* No .. don't force alignment .. */
-   /* assign(anchorT, binop(Iop_And32, mkexpr(oldRnT), mkU32(~3U))); */
-   /* Instead, use the potentially misaligned address directly. */
-   assign(anchorT, mkexpr(oldRnT));
+   The Thumb and ARM encodings are completely different.  In Thumb
+   mode, the caller must pass the entire 32 bits.  In ARM mode it must
+   pass the lower 28 bits.  Apart from that, callers may pass any
+   instruction; this function ignores anything it doesn't recognise.
 
-   IROp opADDorSUB = bINC ? Iop_Add32 : Iop_Sub32;
-   // bINC == 1:  xxMIA, xxMIB
-   // bINC == 0:  xxMDA, xxMDB
+   Caller must supply an IRTemp 'condT' holding the gating condition,
+   or IRTemp_INVALID indicating the insn is always executed.
 
-   // For xxMDA and xxMDB, update Rn first if necessary.  We have
-   // to do this first so that, for the common idiom of the transfers
-   // faulting because we're pushing stuff onto a stack and the stack
-   // is growing down onto allocate-on-fault pages (as Valgrind simulates),
-   // we need to have the SP up-to-date "covering" (pointing below) the
-   // transfer area.  For the same reason, if we are doing xxMIA or xxMIB,
-   // do the transfer first, and then update rN afterwards.
-   nRegs = 0;
-   for (i = 0; i < 16; i++) {
-     if ((regList & (1 << i)) != 0)
-         nRegs++;
-   }
-   if (bW == 1 && !bINC) {
-      IRExpr* e = binop(opADDorSUB, mkexpr(oldRnT), mkU32(4*nRegs));
-      if (arm)
-         putIRegA( rN, e, IRTemp_INVALID, Ijk_Boring );
-      else
-         putIRegT( rN, e, IRTemp_INVALID );
+   Caller must also supply an ARMCondcode 'cond'.  This is only used
+   for debug printing, no other purpose.  For ARM, this is simply the
+   top 4 bits of the original instruction.  For Thumb, the condition
+   is not (really) known until run time, and so ARMCondAL should be
+   passed, only so that printing of these instructions does not show
+   any condition.
+
+   Finally, the caller must indicate whether this occurs in ARM or in
+   Thumb code.
+*/
+static Bool decode_V6MEDIA_instruction (
+               /*MOD*/DisResult* dres,
+               UInt              insnv6m,
+               IRTemp            condT,
+               ARMCondcode       conq,
+               Bool              isT
+            )
+{
+#  define INSNA(_bMax,_bMin)   SLICE_UInt(insnv6m, (_bMax), (_bMin))
+#  define INSNT0(_bMax,_bMin)  SLICE_UInt( ((insnv6m >> 16) & 0xFFFF), \
+                                           (_bMax), (_bMin) )
+#  define INSNT1(_bMax,_bMin)  SLICE_UInt( ((insnv6m >> 0)  & 0xFFFF), \
+                                           (_bMax), (_bMin) )
+   HChar dis_buf[128];
+   dis_buf[0] = 0;
+
+   if (isT) {
+      vassert(conq == ARMCondAL);
+   } else {
+      vassert(INSNA(31,28) == BITS4(0,0,0,0)); // caller's obligation
+      vassert(conq >= ARMCondEQ && conq <= ARMCondAL);
    }
 
-   // Make up a list of the registers to transfer, and their offsets
-   // in memory relative to the anchor.  If the base reg (Rn) is part
-   // of the transfer, then do it last for a load and first for a store.
-   UInt xReg[16], xOff[16];
-   Int  nX = 0;
-   m = 0;
-   for (i = 0; i < 16; i++) {
-      r = bINC ? i : (15-i);
-      if (0 == (regList & (1< ,, ------------- */
+   /* ------------ smulwt ,, ------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, bitM = 0;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFB3 && INSNT1(15,12) == BITS4(1,1,1,1)
+            && INSNT1(7,5) == BITS3(0,0,0)) {
+          regN = INSNT0(3,0);
+          regD = INSNT1(11,8);
+          regM = INSNT1(3,0);
+          bitM = INSNT1(4,4);
+          if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+             gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,0,0,1,0,0,1,0) && 
+            INSNA(15,12) == BITS4(0,0,0,0)         &&
+            (INSNA(7,4) & BITS4(1,0,1,1)) == BITS4(1,0,1,0)) {
+           regD = INSNA(19,16);
+           regN = INSNA(3,0);
+           regM = INSNA(11,8);
+           bitM = INSNA(6,6);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_prod = newTemp(Ity_I64);
+
+        assign( irt_prod, 
+                binop(Iop_MullS32,
+                      isT ? getIRegT(regN) : getIRegA(regN),
+                      binop(Iop_Sar32, 
+                            binop(Iop_Shl32,
+                                  isT ? getIRegT(regM) : getIRegA(regM),
+                                  mkU8(bitM ? 0 : 16)), 
+                            mkU8(16))) );
+
+        IRExpr* ire_result = binop(Iop_Or32, 
+                                   binop( Iop_Shl32, 
+                                          unop(Iop_64HIto32, mkexpr(irt_prod)), 
+                                          mkU8(16) ), 
+                                   binop( Iop_Shr32, 
+                                          unop(Iop_64to32, mkexpr(irt_prod)), 
+                                          mkU8(16) ) );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP("smulw%c%s r%u, r%u, r%u\n",
+            bitM ? 't' : 'b', nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
    }
-   vassert(m == nRegs);
-   vassert(nX == nRegs);
-   vassert(nX <= 16);
 
-   if (bW == 0 && (regList & (1< Rd, Rn, Rm {,LSL #imm} ------------- */
+   /* ------------ pkhtb Rd, Rn, Rm {,ASR #imm} ------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, imm5 = 99, shift_type = 99;
+     Bool tbform = False;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xEAC 
+            && INSNT1(15,15) == 0 && INSNT1(4,4) == 0) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           imm5 = (INSNT1(14,12) << 2) | INSNT1(7,6);
+           shift_type = (INSNT1(5,5) << 1) | 0;
+           tbform = (INSNT1(5,5) == 0) ? False : True;
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,1,0,0,0) &&
+            INSNA(5,4)   == BITS2(0,1)             &&
+            (INSNA(6,6)  == 0 || INSNA(6,6) == 1) ) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           imm5 = INSNA(11,7);
+           shift_type = (INSNA(6,6) << 1) | 0;
+           tbform = (INSNA(6,6) == 0) ? False : True;
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regM       = newTemp(Ity_I32);
+        IRTemp irt_regM_shift = newTemp(Ity_I32);
+        assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+        compute_result_and_C_after_shift_by_imm5(
+           dis_buf, &irt_regM_shift, NULL, irt_regM, shift_type, imm5, regM );
+
+        UInt mask = (tbform == True) ? 0x0000FFFF : 0xFFFF0000;
+        IRExpr* ire_result 
+          = binop( Iop_Or32, 
+                   binop(Iop_And32, mkexpr(irt_regM_shift), mkU32(mask)), 
+                   binop(Iop_And32, isT ? getIRegT(regN) : getIRegA(regN),
+                                    unop(Iop_Not32, mkU32(mask))) );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "pkh%s%s r%u, r%u, r%u %s\n", tbform ? "tb" : "bt", 
+             nCC(conq), regD, regN, regM, dis_buf );
+
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ---------- usat ,#,{,} ----------- */
+   {
+     UInt regD = 99, regN = 99, shift_type = 99, imm5 = 99, sat_imm = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,6) == BITS10(1,1,1,1,0,0,1,1,1,0)
+            && INSNT0(4,4) == 0
+            && INSNT1(15,15) == 0 && INSNT1(5,5) == 0) {
+           regD       = INSNT1(11,8);
+           regN       = INSNT0(3,0);
+           shift_type = (INSNT0(5,5) << 1) | 0;
+           imm5       = (INSNT1(14,12) << 2) | INSNT1(7,6);
+           sat_imm    = INSNT1(4,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN))
+              gate = True;
+           if (shift_type == BITS2(1,0) && imm5 == 0)
+              gate = False;
+        }
+     } else {
+        if (INSNA(27,21) == BITS7(0,1,1,0,1,1,1) &&
+            INSNA(5,4)   == BITS2(0,1)) {
+           regD       = INSNA(15,12);
+           regN       = INSNA(3,0);
+           shift_type = (INSNA(6,6) << 1) | 0;
+           imm5       = INSNA(11,7);
+           sat_imm    = INSNA(20,16);
+           if (regD != 15 && regN != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN       = newTemp(Ity_I32);
+        IRTemp irt_regN_shift = newTemp(Ity_I32);
+        IRTemp irt_sat_Q      = newTemp(Ity_I32);
+        IRTemp irt_result     = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        compute_result_and_C_after_shift_by_imm5(
+                dis_buf, &irt_regN_shift, NULL,
+                irt_regN, shift_type, imm5, regN );
+
+        armUnsignedSatQ( &irt_result, &irt_sat_Q, irt_regN_shift, sat_imm );
+        or_into_QFLAG32( mkexpr(irt_sat_Q), condT );
+
+        if (isT)
+           putIRegT( regD, mkexpr(irt_result), condT );
+        else
+           putIRegA( regD, mkexpr(irt_result), condT, Ijk_Boring );
+
+        DIP("usat%s r%u, #0x%04x, %s\n",
+            nCC(conq), regD, imm5, dis_buf);
+        return True;
+     }
+     /* fall through */
+   }
+
+  /* ----------- ssat ,#,{,} ----------- */
+   {
+     UInt regD = 99, regN = 99, shift_type = 99, imm5 = 99, sat_imm = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,6) == BITS10(1,1,1,1,0,0,1,1,0,0)
+            && INSNT0(4,4) == 0
+            && INSNT1(15,15) == 0 && INSNT1(5,5) == 0) {
+           regD       = INSNT1(11,8);
+           regN       = INSNT0(3,0);
+           shift_type = (INSNT0(5,5) << 1) | 0;
+           imm5       = (INSNT1(14,12) << 2) | INSNT1(7,6);
+           sat_imm    = INSNT1(4,0) + 1;
+           if (!isBadRegT(regD) && !isBadRegT(regN))
+              gate = True;
+           if (shift_type == BITS2(1,0) && imm5 == 0)
+              gate = False;
+        }
+     } else {
+        if (INSNA(27,21) == BITS7(0,1,1,0,1,0,1) &&
+            INSNA(5,4)   == BITS2(0,1)) {
+           regD       = INSNA(15,12);
+           regN       = INSNA(3,0);
+           shift_type = (INSNA(6,6) << 1) | 0;
+           imm5       = INSNA(11,7);
+           sat_imm    = INSNA(20,16) + 1;
+           if (regD != 15 && regN != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN       = newTemp(Ity_I32);
+        IRTemp irt_regN_shift = newTemp(Ity_I32);
+        IRTemp irt_sat_Q      = newTemp(Ity_I32);
+        IRTemp irt_result     = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        compute_result_and_C_after_shift_by_imm5(
+                dis_buf, &irt_regN_shift, NULL,
+                irt_regN, shift_type, imm5, regN );
+
+        armSignedSatQ( irt_regN_shift, sat_imm, &irt_result, &irt_sat_Q );
+        or_into_QFLAG32( mkexpr(irt_sat_Q), condT );
+
+        if (isT)
+           putIRegT( regD, mkexpr(irt_result), condT );
+        else
+           putIRegA( regD, mkexpr(irt_result), condT, Ijk_Boring );
+
+        DIP( "ssat%s r%u, #0x%04x, %s\n",
+             nCC(conq), regD, imm5, dis_buf);
+        return True;
+    }
+    /* fall through */
+  }
+
+   /* -------------- usat16 ,#, --------------- */
+   {
+     UInt regD = 99, regN = 99, sat_imm = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xF3A && (INSNT1(15,0) & 0xF0F0) == 0x0000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           sat_imm = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN))
+              gate = True;
+       }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,1,1,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,1,1)) {
+           regD    = INSNA(15,12);
+           regN    = INSNA(3,0);
+           sat_imm = INSNA(19,16);
+           if (regD != 15 && regN != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN    = newTemp(Ity_I32);
+        IRTemp irt_regN_lo = newTemp(Ity_I32);
+        IRTemp irt_regN_hi = newTemp(Ity_I32);
+        IRTemp irt_Q_lo    = newTemp(Ity_I32);
+        IRTemp irt_Q_hi    = newTemp(Ity_I32);
+        IRTemp irt_res_lo  = newTemp(Ity_I32);
+        IRTemp irt_res_hi  = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( irt_regN_lo, binop( Iop_Sar32, 
+                                    binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)), 
+                                    mkU8(16)) );
+        assign( irt_regN_hi, binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)) );
+
+        armUnsignedSatQ( &irt_res_lo, &irt_Q_lo, irt_regN_lo, sat_imm );
+        or_into_QFLAG32( mkexpr(irt_Q_lo), condT );
+
+        armUnsignedSatQ( &irt_res_hi, &irt_Q_hi, irt_regN_hi, sat_imm );
+        or_into_QFLAG32( mkexpr(irt_Q_hi), condT );
+
+        IRExpr* ire_result = binop( Iop_Or32, 
+                                    binop(Iop_Shl32, mkexpr(irt_res_hi), mkU8(16)),
+                                    mkexpr(irt_res_lo) );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "usat16%s r%u, #0x%04x, r%u\n", nCC(conq), regD, sat_imm, regN );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* -------------- uadd16 ,, -------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA9 && (INSNT1(15,0) & 0xF0F0) == 0xF040) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,0,1) && 
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, binop(Iop_HAdd16Ux2, mkexpr(rNt), mkexpr(rMt)));
+        set_GE_32_10_from_bits_31_15(reso, condT);
+
+        DIP("uadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* -------------- sadd16 ,, -------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA9 && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) && 
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HAdd16Sx2, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_32_10_from_bits_31_15(reso, condT);
+
+        DIP("sadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ---------------- usub16 ,, ---------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAD && (INSNT1(15,0) & 0xF0F0) == 0xF040) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,0,1) && 
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,1,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+             gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HSub16Ux2, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_32_10_from_bits_31_15(reso, condT);
+
+        DIP("usub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* -------------- ssub16 ,, -------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAD && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) && 
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,1,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HSub16Sx2, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_32_10_from_bits_31_15(reso, condT);
+
+        DIP("ssub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----------------- uadd8 ,, ---------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF040) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,0,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            (INSNA(7,4)  == BITS4(1,0,0,1))) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
+        set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+        DIP("uadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- sadd8 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            (INSNA(7,4)  == BITS4(1,0,0,1))) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HAdd8Sx4, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+        DIP("sadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- usub8 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF040) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,0,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            (INSNA(7,4)  == BITS4(1,1,1,1))) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+             gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HSub8Ux4, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+        DIP("usub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- ssub8 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,1,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt  = newTemp(Ity_I32);
+        IRTemp rMt  = newTemp(Ity_I32);
+        IRTemp res  = newTemp(Ity_I32);
+        IRTemp reso = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res), condT );
+        else
+           putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+
+        assign(reso, unop(Iop_Not32,
+                          binop(Iop_HSub8Sx4, mkexpr(rNt), mkexpr(rMt))));
+        set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+        DIP("ssub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ qadd8 ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("qadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ qsub8 ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,1,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QSub8Sx4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("qsub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ uqadd8 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            (INSNA(7,4)  == BITS4(1,0,0,1))) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("uqadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ uqsub8 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            (INSNA(7,4)  == BITS4(1,1,1,1))) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+             gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QSub8Ux4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("uqsub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----------------- uhadd8 ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF060) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("uhadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----------------- shadd8 ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF020) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_HAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("shadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ qadd16 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA9 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QAdd16Sx2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("qadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------ qsub16 ,, ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+      if (isT) {
+        if (INSNT0(15,4) == 0xFAD && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,1,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+             gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp rNt   = newTemp(Ity_I32);
+        IRTemp rMt   = newTemp(Ity_I32);
+        IRTemp res_q = newTemp(Ity_I32);
+
+        assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign(res_q, binop(Iop_QSub16Sx2, mkexpr(rNt), mkexpr(rMt)));
+        if (isT)
+           putIRegT( regD, mkexpr(res_q), condT );
+        else
+           putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+        DIP("qsub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /////////////////////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////
+
+   /* ------------------- qsax ,, ------------------- */
+   /* note: the hardware seems to construct the result differently
+      from wot the manual says. */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAE && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,1,0,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN     = newTemp(Ity_I32);
+        IRTemp irt_regM     = newTemp(Ity_I32);
+        IRTemp irt_sum      = newTemp(Ity_I32);
+        IRTemp irt_diff     = newTemp(Ity_I32);
+        IRTemp irt_sum_res  = newTemp(Ity_I32);
+        IRTemp irt_diff_res = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign( irt_diff, 
+                binop( Iop_Sub32, 
+                       binop( Iop_Sar32, mkexpr(irt_regN), mkU8(16) ),
+                       binop( Iop_Sar32, 
+                              binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)), 
+                              mkU8(16) ) ) );
+        armSignedSatQ( irt_diff, 0x10, &irt_diff_res, NULL);
+
+        assign( irt_sum, 
+                binop( Iop_Add32, 
+                       binop( Iop_Sar32, 
+                              binop( Iop_Shl32, mkexpr(irt_regN), mkU8(16) ), 
+                              mkU8(16) ), 
+                       binop( Iop_Sar32, mkexpr(irt_regM), mkU8(16) )) );
+        armSignedSatQ( irt_sum, 0x10, &irt_sum_res, NULL );
+
+        IRExpr* ire_result = binop( Iop_Or32, 
+                                    binop( Iop_Shl32, mkexpr(irt_diff_res), 
+                                           mkU8(16) ), 
+                                    binop( Iop_And32, mkexpr(irt_sum_res), 
+                                           mkU32(0xFFFF)) );
+
+        if (isT) 
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "qsax%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- qasx ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAA && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN     = newTemp(Ity_I32);
+        IRTemp irt_regM     = newTemp(Ity_I32);
+        IRTemp irt_sum      = newTemp(Ity_I32);
+        IRTemp irt_diff     = newTemp(Ity_I32);
+        IRTemp irt_res_sum  = newTemp(Ity_I32);
+        IRTemp irt_res_diff = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign( irt_diff,  
+                binop( Iop_Sub32, 
+                       binop( Iop_Sar32, 
+                              binop( Iop_Shl32, mkexpr(irt_regN), mkU8(16) ), 
+                              mkU8(16) ), 
+                       binop( Iop_Sar32, mkexpr(irt_regM), mkU8(16) ) ) );
+        armSignedSatQ( irt_diff, 0x10, &irt_res_diff, NULL );
+
+        assign( irt_sum, 
+                binop( Iop_Add32, 
+                       binop( Iop_Sar32, mkexpr(irt_regN), mkU8(16) ), 
+                       binop( Iop_Sar32, 
+                              binop( Iop_Shl32, mkexpr(irt_regM), mkU8(16) ), 
+                              mkU8(16) ) ) );
+        armSignedSatQ( irt_sum, 0x10, &irt_res_sum, NULL );
+       
+        IRExpr* ire_result 
+          = binop( Iop_Or32, 
+                   binop( Iop_Shl32, mkexpr(irt_res_sum), mkU8(16) ), 
+                   binop( Iop_And32, mkexpr(irt_res_diff), mkU32(0xFFFF) ) );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "qasx%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- sasx ,, ------------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAA && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(0,0,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN = newTemp(Ity_I32);
+        IRTemp irt_regM = newTemp(Ity_I32);
+        IRTemp irt_sum  = newTemp(Ity_I32);
+        IRTemp irt_diff = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        assign( irt_diff,  
+                binop( Iop_Sub32, 
+                       binop( Iop_Sar32, 
+                              binop( Iop_Shl32, mkexpr(irt_regN), mkU8(16) ), 
+                              mkU8(16) ), 
+                       binop( Iop_Sar32, mkexpr(irt_regM), mkU8(16) ) ) );
+
+        assign( irt_sum, 
+                binop( Iop_Add32, 
+                       binop( Iop_Sar32, mkexpr(irt_regN), mkU8(16) ), 
+                       binop( Iop_Sar32, 
+                              binop( Iop_Shl32, mkexpr(irt_regM), mkU8(16) ), 
+                              mkU8(16) ) ) );
+       
+        IRExpr* ire_result 
+          = binop( Iop_Or32, 
+                   binop( Iop_Shl32, mkexpr(irt_sum), mkU8(16) ), 
+                   binop( Iop_And32, mkexpr(irt_diff), mkU32(0xFFFF) ) );
+
+        IRTemp ge10 = newTemp(Ity_I32);
+        assign(ge10, unop(Iop_Not32, mkexpr(irt_diff)));
+        put_GEFLAG32( 0, 31, mkexpr(ge10), condT );
+        put_GEFLAG32( 1, 31, mkexpr(ge10), condT );
+
+        IRTemp ge32 = newTemp(Ity_I32);
+        assign(ge32, unop(Iop_Not32, mkexpr(irt_sum)));
+        put_GEFLAG32( 2, 31, mkexpr(ge32), condT );
+        put_GEFLAG32( 3, 31, mkexpr(ge32), condT );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "sasx%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* --------------- smuad, smuadx,, --------------- */
+   /* --------------- smsad, smsadx,, --------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, bitM = 99;
+     Bool gate = False, isAD = False;
+
+     if (isT) {
+        if ((INSNT0(15,4) == 0xFB2 || INSNT0(15,4) == 0xFB4)
+            && (INSNT1(15,0) & 0xF0E0) == 0xF000) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           bitM = INSNT1(4,4);
+           isAD = INSNT0(15,4) == 0xFB2;
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,1,0,0,0,0) &&
+            INSNA(15,12) == BITS4(1,1,1,1)         &&
+            (INSNA(7,4) & BITS4(1,0,0,1)) == BITS4(0,0,0,1) ) {
+           regD = INSNA(19,16);
+           regN = INSNA(3,0);
+           regM = INSNA(11,8);
+           bitM = INSNA(5,5);
+           isAD = INSNA(6,6) == 0;
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN    = newTemp(Ity_I32);
+        IRTemp irt_regM    = newTemp(Ity_I32);
+        IRTemp irt_prod_lo = newTemp(Ity_I32);
+        IRTemp irt_prod_hi = newTemp(Ity_I32);
+        IRTemp tmpM        = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+
+        assign( tmpM, isT ? getIRegT(regM) : getIRegA(regM) );
+        assign( irt_regM, genROR32(tmpM, (bitM & 1) ? 16 : 0) );
+
+        assign( irt_prod_lo, 
+                binop( Iop_Mul32, 
+                       binop( Iop_Sar32, 
+                              binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)), 
+                              mkU8(16) ), 
+                       binop( Iop_Sar32, 
+                              binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)), 
+                              mkU8(16) ) ) );
+        assign( irt_prod_hi, binop(Iop_Mul32, 
+                                   binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)), 
+                                   binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
+        IRExpr* ire_result 
+           = binop( isAD ? Iop_Add32 : Iop_Sub32,
+                    mkexpr(irt_prod_lo), mkexpr(irt_prod_hi) );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        if (isAD) {
+           or_into_QFLAG32(
+              signed_overflow_after_Add32( ire_result,
+                                           irt_prod_lo, irt_prod_hi ),
+              condT
+           );
+        }
+
+        DIP("smu%cd%s%s r%u, r%u, r%u\n",
+            isAD ? 'a' : 's',
+            bitM ? "x" : "", nCC(conq), regD, regN, regM);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* --------------- smlad{X} ,,, -------------- */
+   /* --------------- smlsd{X} ,,, -------------- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, regA = 99, bitM = 99;
+     Bool gate = False, isAD = False;
+
+     if (isT) {
+       if ((INSNT0(15,4) == 0xFB2 || INSNT0(15,4) == 0xFB4)
+           && INSNT1(7,5) == BITS3(0,0,0)) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           regA = INSNT1(15,12);
+           bitM = INSNT1(4,4);
+           isAD = INSNT0(15,4) == 0xFB2;
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM)
+               && !isBadRegT(regA))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,1,0,0,0,0) &&
+            (INSNA(7,4) & BITS4(1,0,0,1)) == BITS4(0,0,0,1)) {
+           regD = INSNA(19,16);
+           regA = INSNA(15,12);
+           regN = INSNA(3,0);
+           regM = INSNA(11,8);
+           bitM = INSNA(5,5);
+           isAD = INSNA(6,6) == 0;
+           if (regD != 15 && regN != 15 && regM != 15 && regA != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN    = newTemp(Ity_I32);
+        IRTemp irt_regM    = newTemp(Ity_I32);
+        IRTemp irt_regA    = newTemp(Ity_I32);
+        IRTemp irt_prod_lo = newTemp(Ity_I32);
+        IRTemp irt_prod_hi = newTemp(Ity_I32);
+        IRTemp irt_sum     = newTemp(Ity_I32);
+        IRTemp tmpM        = newTemp(Ity_I32);
+
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+        assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
+
+        assign( tmpM, isT ? getIRegT(regM) : getIRegA(regM) );
+        assign( irt_regM, genROR32(tmpM, (bitM & 1) ? 16 : 0) );
+
+        assign( irt_prod_lo, 
+                binop(Iop_Mul32, 
+                      binop(Iop_Sar32, 
+                            binop( Iop_Shl32, mkexpr(irt_regN), mkU8(16) ), 
+                            mkU8(16)), 
+                      binop(Iop_Sar32, 
+                            binop( Iop_Shl32, mkexpr(irt_regM), mkU8(16) ), 
+                            mkU8(16))) );
+        assign( irt_prod_hi, 
+                binop( Iop_Mul32, 
+                       binop( Iop_Sar32, mkexpr(irt_regN), mkU8(16) ), 
+                       binop( Iop_Sar32, mkexpr(irt_regM), mkU8(16) ) ) );
+        assign( irt_sum, binop( isAD ? Iop_Add32 : Iop_Sub32, 
+                                mkexpr(irt_prod_lo), mkexpr(irt_prod_hi) ) );
+
+        IRExpr* ire_result = binop(Iop_Add32, mkexpr(irt_sum), mkexpr(irt_regA));
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        if (isAD) {
+           or_into_QFLAG32(
+              signed_overflow_after_Add32( mkexpr(irt_sum),
+                                           irt_prod_lo, irt_prod_hi ),
+              condT
+           );
+        }
+
+        or_into_QFLAG32(
+           signed_overflow_after_Add32( ire_result, irt_sum, irt_regA ),
+           condT
+        );
+
+        DIP("sml%cd%s%s r%u, r%u, r%u, r%u\n",
+            isAD ? 'a' : 's',
+            bitM ? "x" : "", nCC(conq), regD, regN, regM, regA);
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----- smlabb, smlabt, smlatb, smlatt ,,, ----- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, regA = 99, bitM = 99, bitN = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFB1 && INSNT1(7,6) == BITS2(0,0)) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           regA = INSNT1(15,12);
+           bitM = INSNT1(4,4);
+           bitN = INSNT1(5,5);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM)
+               && !isBadRegT(regA))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,0,0,1,0,0,0,0) &&
+            (INSNA(7,4) & BITS4(1,0,0,1)) == BITS4(1,0,0,0)) {
+           regD = INSNA(19,16);
+           regN = INSNA(3,0);
+           regM = INSNA(11,8);
+           regA = INSNA(15,12);
+           bitM = INSNA(6,6);
+           bitN = INSNA(5,5);
+           if (regD != 15 && regN != 15 && regM != 15 && regA != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regA = newTemp(Ity_I32);
+        IRTemp irt_prod = newTemp(Ity_I32);
+
+        assign( irt_prod, 
+                binop(Iop_Mul32, 
+                      binop(Iop_Sar32, 
+                            binop(Iop_Shl32,
+                                  isT ? getIRegT(regN) : getIRegA(regN),
+                                  mkU8(bitN ? 0 : 16)),
+                            mkU8(16)), 
+                      binop(Iop_Sar32, 
+                            binop(Iop_Shl32,
+                                  isT ? getIRegT(regM) : getIRegA(regM),
+                                  mkU8(bitM ? 0 : 16)), 
+                            mkU8(16))) );
+
+        assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
+
+        IRExpr* ire_result = binop(Iop_Add32, mkexpr(irt_prod), mkexpr(irt_regA));
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        or_into_QFLAG32(
+           signed_overflow_after_Add32( ire_result, irt_prod, irt_regA ),
+           condT
+        );
+
+        DIP( "smla%c%c%s r%u, r%u, r%u, r%u\n", 
+             bitN ? 't' : 'b', bitM ? 't' : 'b', 
+             nCC(conq), regD, regN, regM, regA );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----- smlawb, smlawt ,,, ----- */
+   {
+     UInt regD = 99, regN = 99, regM = 99, regA = 99, bitM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFB3 && INSNT1(7,5) == BITS3(0,0,0)) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           regA = INSNT1(15,12);
+           bitM = INSNT1(4,4);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM)
+               && !isBadRegT(regA))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,0,0,1,0,0,1,0) &&
+            (INSNA(7,4) & BITS4(1,0,1,1)) == BITS4(1,0,0,0)) {
+           regD = INSNA(19,16);
+           regN = INSNA(3,0);
+           regM = INSNA(11,8);
+           regA = INSNA(15,12);
+           bitM = INSNA(6,6);
+           if (regD != 15 && regN != 15 && regM != 15 && regA != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regA = newTemp(Ity_I32);
+        IRTemp irt_prod = newTemp(Ity_I64);
+
+        assign( irt_prod, 
+                binop(Iop_MullS32, 
+                      isT ? getIRegT(regN) : getIRegA(regN),
+                      binop(Iop_Sar32, 
+                            binop(Iop_Shl32,
+                                  isT ? getIRegT(regM) : getIRegA(regM),
+                                  mkU8(bitM ? 0 : 16)), 
+                            mkU8(16))) );
+
+        assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
+
+        IRTemp prod32 = newTemp(Ity_I32);
+        assign(prod32,
+               binop(Iop_Or32,
+                     binop(Iop_Shl32, unop(Iop_64HIto32, mkexpr(irt_prod)), mkU8(16)),
+                     binop(Iop_Shr32, unop(Iop_64to32, mkexpr(irt_prod)), mkU8(16))
+        ));
+
+        IRExpr* ire_result = binop(Iop_Add32, mkexpr(prod32), mkexpr(irt_regA));
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        or_into_QFLAG32(
+           signed_overflow_after_Add32( ire_result, prod32, irt_regA ),
+           condT
+        );
+
+        DIP( "smlaw%c%s r%u, r%u, r%u, r%u\n", 
+             bitM ? 't' : 'b', 
+             nCC(conq), regD, regN, regM, regA );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ------------------- sel ,, -------------------- */
+   /* fixme: fix up the test in v6media.c so that we can pass the ge
+      flags as part of the test. */
+   {
+     UInt regD = 99, regN = 99, regM = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFAA && (INSNT1(15,0) & 0xF0F0) == 0xF080) {
+           regN = INSNT0(3,0);
+           regD = INSNT1(11,8);
+           regM = INSNT1(3,0);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,1,0,0,0) &&
+            INSNA(11,8)  == BITS4(1,1,1,1)         &&
+            INSNA(7,4)   == BITS4(1,0,1,1)) {
+           regD = INSNA(15,12);
+           regN = INSNA(19,16);
+           regM = INSNA(3,0);
+           if (regD != 15 && regN != 15 && regM != 15)
+              gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_ge_flag0 = newTemp(Ity_I32);
+        IRTemp irt_ge_flag1 = newTemp(Ity_I32);
+        IRTemp irt_ge_flag2 = newTemp(Ity_I32);
+        IRTemp irt_ge_flag3 = newTemp(Ity_I32);
+
+        assign( irt_ge_flag0, get_GEFLAG32(0) );
+        assign( irt_ge_flag1, get_GEFLAG32(1) );
+        assign( irt_ge_flag2, get_GEFLAG32(2) );
+        assign( irt_ge_flag3, get_GEFLAG32(3) );
+
+        IRExpr* ire_ge_flag0_or 
+          = binop(Iop_Or32, mkexpr(irt_ge_flag0), 
+                  binop(Iop_Sub32, mkU32(0), mkexpr(irt_ge_flag0)));
+        IRExpr* ire_ge_flag1_or 
+          = binop(Iop_Or32, mkexpr(irt_ge_flag1), 
+                  binop(Iop_Sub32, mkU32(0), mkexpr(irt_ge_flag1)));
+        IRExpr* ire_ge_flag2_or 
+          = binop(Iop_Or32, mkexpr(irt_ge_flag2), 
+                  binop(Iop_Sub32, mkU32(0), mkexpr(irt_ge_flag2)));
+        IRExpr* ire_ge_flag3_or 
+          = binop(Iop_Or32, mkexpr(irt_ge_flag3), 
+                  binop(Iop_Sub32, mkU32(0), mkexpr(irt_ge_flag3)));
+
+        IRExpr* ire_ge_flags 
+          = binop( Iop_Or32, 
+                   binop(Iop_Or32, 
+                         binop(Iop_And32, 
+                               binop(Iop_Sar32, ire_ge_flag0_or, mkU8(31)), 
+                               mkU32(0x000000ff)), 
+                         binop(Iop_And32, 
+                               binop(Iop_Sar32, ire_ge_flag1_or, mkU8(31)), 
+                               mkU32(0x0000ff00))), 
+                   binop(Iop_Or32, 
+                         binop(Iop_And32, 
+                               binop(Iop_Sar32, ire_ge_flag2_or, mkU8(31)), 
+                               mkU32(0x00ff0000)), 
+                         binop(Iop_And32, 
+                               binop(Iop_Sar32, ire_ge_flag3_or, mkU8(31)), 
+                               mkU32(0xff000000))) );
+
+        IRExpr* ire_result 
+          = binop(Iop_Or32, 
+                  binop(Iop_And32,
+                        isT ? getIRegT(regN) : getIRegA(regN),
+                        ire_ge_flags ), 
+                  binop(Iop_And32,
+                        isT ? getIRegT(regM) : getIRegA(regM),
+                        unop(Iop_Not32, ire_ge_flags)));
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP("sel%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ----------------- uxtab16 Rd,Rn,Rm{,rot} ------------------ */
+   {
+     UInt regD = 99, regN = 99, regM = 99, rotate = 99;
+     Bool gate = False;
+
+     if (isT) {
+        if (INSNT0(15,4) == 0xFA3 && (INSNT1(15,0) & 0xF0C0) == 0xF080) {
+           regN   = INSNT0(3,0);
+           regD   = INSNT1(11,8);
+           regM   = INSNT1(3,0);
+           rotate = INSNT1(5,4);
+           if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,0,1,1,0,0) &&
+            INSNA(9,4)   == BITS6(0,0,0,1,1,1) ) {
+           regD   = INSNA(15,12);
+           regN   = INSNA(19,16);
+           regM   = INSNA(3,0);
+           rotate = INSNA(11,10);
+           if (regD != 15 && regN != 15 && regM != 15)
+             gate = True;
+        }
+     }
+
+     if (gate) {
+        IRTemp irt_regN = newTemp(Ity_I32);
+        assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
+
+        IRTemp irt_regM = newTemp(Ity_I32);
+        assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+
+        IRTemp irt_rot = newTemp(Ity_I32);
+        assign( irt_rot, binop(Iop_And32,
+                               genROR32(irt_regM, 8 * rotate),
+                               mkU32(0x00FF00FF)) );
+
+        IRExpr* resLo
+           = binop(Iop_And32,
+                   binop(Iop_Add32, mkexpr(irt_regN), mkexpr(irt_rot)),
+                   mkU32(0x0000FFFF));
+
+        IRExpr* resHi
+           = binop(Iop_Add32, 
+                   binop(Iop_And32, mkexpr(irt_regN), mkU32(0xFFFF0000)),
+                   binop(Iop_And32, mkexpr(irt_rot),  mkU32(0xFFFF0000)));
+
+        IRExpr* ire_result 
+           = binop( Iop_Or32, resHi, resLo );
+
+        if (isT)
+           putIRegT( regD, ire_result, condT );
+        else
+           putIRegA( regD, ire_result, condT, Ijk_Boring );
+
+        DIP( "uxtab16%s r%u, r%u, r%u, ROR #%u\n", 
+             nCC(conq), regD, regN, regM, 8 * rotate );
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* --------------- usad8  Rd,Rn,Rm    ---------------- */
+   /* --------------- usada8 Rd,Rn,Rm,Ra ---------------- */
+   {
+     UInt rD = 99, rN = 99, rM = 99, rA = 99;
+     Bool gate = False;
+
+     if (isT) {
+       if (INSNT0(15,4) == 0xFB7 && INSNT1(7,4) == BITS4(0,0,0,0)) {
+           rN = INSNT0(3,0);
+           rA = INSNT1(15,12);
+           rD = INSNT1(11,8);
+           rM = INSNT1(3,0);
+           if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && rA != 13)
+              gate = True;
+        }
+     } else {
+        if (INSNA(27,20) == BITS8(0,1,1,1,1,0,0,0) &&
+            INSNA(7,4)   == BITS4(0,0,0,1) ) {
+           rD = INSNA(19,16);
+           rA = INSNA(15,12);
+           rM = INSNA(11,8);
+           rN = INSNA(3,0);
+           if (rD != 15 && rN != 15 && rM != 15 /* but rA can be 15 */)
+              gate = True;
+        }
+     }
+     /* We allow rA == 15, to denote the usad8 (no accumulator) case. */
+
+     if (gate) {
+        IRExpr* rNe = isT ? getIRegT(rN) : getIRegA(rN);
+        IRExpr* rMe = isT ? getIRegT(rM) : getIRegA(rM);
+        IRExpr* rAe = rA == 15 ? mkU32(0)
+                               : (isT ? getIRegT(rA) : getIRegA(rA)); 
+        IRExpr* res = binop(Iop_Add32,
+                            binop(Iop_Sad8Ux4, rNe, rMe),
+                            rAe);
+        if (isT)
+           putIRegT( rD, res, condT );
+        else
+           putIRegA( rD, res, condT, Ijk_Boring );
+
+        if (rA == 15) {
+           DIP( "usad8%s r%u, r%u, r%u\n", 
+                nCC(conq), rD, rN, rM );
+        } else {
+           DIP( "usada8%s r%u, r%u, r%u, r%u\n", 
+                nCC(conq), rD, rN, rM, rA );
+        }
+        return True;
+     }
+     /* fall through */
+   }
+
+   /* ---------- Doesn't match anything. ---------- */
+   return False;
+
+#  undef INSNA
+#  undef INSNT0
+#  undef INSNT1
+}
+
+
+/*------------------------------------------------------------*/
+/*--- LDMxx/STMxx helper (both ARM and Thumb32)            ---*/
+/*------------------------------------------------------------*/
+
+/* Generate IR for LDMxx and STMxx.  This is complex.  Assumes it's
+   unconditional, so the caller must produce a jump-around before
+   calling this, if the insn is to be conditional.  Caller is
+   responsible for all validation of parameters.  For LDMxx, if PC is
+   amongst the values loaded, caller is also responsible for
+   generating the jump. */
+static void mk_ldm_stm ( Bool arm,     /* True: ARM, False: Thumb */
+                         UInt rN,      /* base reg */
+                         UInt bINC,    /* 1: inc,  0: dec */
+                         UInt bBEFORE, /* 1: inc/dec before, 0: after */
+                         UInt bW,      /* 1: writeback to Rn */
+                         UInt bL,      /* 1: load, 0: store */
+                         UInt regList )
+{
+   Int i, r, m, nRegs;
+
+   /* Get hold of the old Rn value.  We might need to write its value
+      to memory during a store, and if it's also the writeback
+      register then we need to get its value now.  We can't treat it
+      exactly like the other registers we're going to transfer,
+      because for xxMDA and xxMDB writeback forms, the generated IR
+      updates Rn in the guest state before any transfers take place.
+      We have to do this as per comments below, in order that if Rn is
+      the stack pointer then it always has a value is below or equal
+      to any of the transfer addresses.  Ick. */
+   IRTemp oldRnT = newTemp(Ity_I32);
+   assign(oldRnT, arm ? getIRegA(rN) : getIRegT(rN));
+
+   IRTemp anchorT = newTemp(Ity_I32);
+   /* The old (Addison-Wesley) ARM ARM seems to say that LDMxx/STMxx
+      ignore the bottom two bits of the address.  However, Cortex-A8
+      doesn't seem to care.  Hence: */
+   /* No .. don't force alignment .. */
+   /* assign(anchorT, binop(Iop_And32, mkexpr(oldRnT), mkU32(~3U))); */
+   /* Instead, use the potentially misaligned address directly. */
+   assign(anchorT, mkexpr(oldRnT));
+
+   IROp opADDorSUB = bINC ? Iop_Add32 : Iop_Sub32;
+   // bINC == 1:  xxMIA, xxMIB
+   // bINC == 0:  xxMDA, xxMDB
+
+   // For xxMDA and xxMDB, update Rn first if necessary.  We have
+   // to do this first so that, for the common idiom of the transfers
+   // faulting because we're pushing stuff onto a stack and the stack
+   // is growing down onto allocate-on-fault pages (as Valgrind simulates),
+   // we need to have the SP up-to-date "covering" (pointing below) the
+   // transfer area.  For the same reason, if we are doing xxMIA or xxMIB,
+   // do the transfer first, and then update rN afterwards.
+   nRegs = 0;
+   for (i = 0; i < 16; i++) {
+     if ((regList & (1 << i)) != 0)
+         nRegs++;
+   }
+   if (bW == 1 && !bINC) {
+      IRExpr* e = binop(opADDorSUB, mkexpr(oldRnT), mkU32(4*nRegs));
+      if (arm)
+         putIRegA( rN, e, IRTemp_INVALID, Ijk_Boring );
+      else
+         putIRegT( rN, e, IRTemp_INVALID );
+   }
+
+   // Make up a list of the registers to transfer, and their offsets
+   // in memory relative to the anchor.  If the base reg (Rn) is part
+   // of the transfer, then do it last for a load and first for a store.
+   UInt xReg[16], xOff[16];
+   Int  nX = 0;
+   m = 0;
+   for (i = 0; i < 16; i++) {
+      r = bINC ? i : (15-i);
+      if (0 == (regList & (1<> 23) & 1; /* 1: +offset  0: -offset */
@@ -8691,12 +11063,12 @@ static Bool decode_CP10_CP11_instruction (
    }
 
    /* --------------------- dp insns (D) --------------------- */
-   if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,1,0,0))
+   if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,0,0,0))
        && BITS4(1,0,1,1) == INSN(11,8)
-       && BITS4(0,0,0,0) == (INSN(7,4) & BITS4(1,0,1,1))) {
-      UInt    dM  = INSN(3,0);   /* argR */
-      UInt    dD  = INSN(15,12); /* dst/acc */
-      UInt    dN  = INSN(19,16); /* argL */
+       && BITS4(0,0,0,0) == (INSN(7,4) & BITS4(0,0,0,1))) {
+      UInt    dM  = INSN(3,0)   | (INSN(5,5) << 4);       /* argR */
+      UInt    dD  = INSN(15,12) | (INSN(22,22) << 4);   /* dst/acc */
+      UInt    dN  = INSN(19,16) | (INSN(7,7) << 4);     /* argL */
       UInt    bP  = (insn28 >> 23) & 1;
       UInt    bQ  = (insn28 >> 21) & 1;
       UInt    bR  = (insn28 >> 20) & 1;
@@ -8712,11 +11084,12 @@ static Bool decode_CP10_CP11_instruction (
                         condT);
             DIP("fmacd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
             goto decode_success_vfp;
-         case BITS4(0,0,0,1): /* NMAC: d - n * m */
-            putDReg(dD, triop(Iop_SubF64, rm,
+         case BITS4(0,0,0,1): /* NMAC: d + -(n * m) */
+            putDReg(dD, triop(Iop_AddF64, rm,
                               getDReg(dD),
-                              triop(Iop_MulF64, rm, getDReg(dN),
-                                                    getDReg(dM))),
+                              unop(Iop_NegF64,
+                                   triop(Iop_MulF64, rm, getDReg(dN),
+                                                         getDReg(dM)))),
                         condT);
             DIP("fnmacd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
             goto decode_success_vfp;
@@ -8728,11 +11101,12 @@ static Bool decode_CP10_CP11_instruction (
                         condT);
             DIP("fmscd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
             goto decode_success_vfp;
-         case BITS4(0,0,1,1): /* NMSC: - d - n * m */
-            putDReg(dD, triop(Iop_SubF64, rm,
+         case BITS4(0,0,1,1): /* NMSC: - d + -(n * m) */
+            putDReg(dD, triop(Iop_AddF64, rm,
                               unop(Iop_NegF64, getDReg(dD)),
-                              triop(Iop_MulF64, rm, getDReg(dN),
-                                                    getDReg(dM))),
+                              unop(Iop_NegF64,
+                                   triop(Iop_MulF64, rm, getDReg(dN),
+                                                         getDReg(dM)))),
                         condT);
             DIP("fnmscd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
             goto decode_success_vfp;
@@ -8771,10 +11145,10 @@ static Bool decode_CP10_CP11_instruction (
    /* --------------------- compares (D) --------------------- */
    /*          31   27   23   19   15 11   7    3
                  28   24   20   16 12    8    4    0 
-      FCMPD    cond 1110 1011 0100 Dd 1011 0100 Dm
-      FCMPED   cond 1110 1011 0100 Dd 1011 1100 Dm
-      FCMPZD   cond 1110 1011 0101 Dd 1011 0100 0000
-      FCMPZED  cond 1110 1011 0101 Dd 1011 1100 0000
+      FCMPD    cond 1110 1D11 0100 Dd 1011 0100 Dm
+      FCMPED   cond 1110 1D11 0100 Dd 1011 1100 Dm
+      FCMPZD   cond 1110 1D11 0101 Dd 1011 0100 0000
+      FCMPZED  cond 1110 1D11 0101 Dd 1011 1100 0000
                                  Z         N
 
       Z=0 Compare Dd vs Dm     and set FPSCR 31:28 accordingly
@@ -8784,14 +11158,14 @@ static Bool decode_CP10_CP11_instruction (
       N=0 generates Invalid Operation exn if either arg is a signalling NaN
       (Not that we pay any attention to N here)
    */
-   if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+   if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(0,1,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
        && BITS4(1,0,1,1) == INSN(11,8)
-       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
+       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
       UInt bZ = (insn28 >> 16) & 1;
       UInt bN = (insn28 >> 7) & 1;
-      UInt dD = INSN(15,12);
-      UInt dM = INSN(3,0);
+      UInt dD = INSN(15,12) | (INSN(22,22) << 4);
+      UInt dM = INSN(3,0) | (INSN(5,5) << 4);
       if (bZ && INSN(3,0) != 0) {
          /* does not decode; fall through */
       } else {
@@ -8841,12 +11215,12 @@ static Bool decode_CP10_CP11_instruction (
    }  
 
    /* --------------------- unary (D) --------------------- */
-   if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+   if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(0,0,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
        && BITS4(1,0,1,1) == INSN(11,8)
-       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
-      UInt dD  = INSN(15,12);
-      UInt dM  = INSN(3,0);
+       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
+      UInt dD  = INSN(15,12) | (INSN(22,22) << 4);
+      UInt dM  = INSN(3,0) | (INSN(5,5) << 4);
       UInt b16 = (insn28 >> 16) & 1;
       UInt b7  = (insn28 >> 7) & 1;
       /**/ if (b16 == 0 && b7 == 0) {
@@ -8883,13 +11257,13 @@ static Bool decode_CP10_CP11_instruction (
    /* ----------------- I <-> D conversions ----------------- */
 
    // F{S,U}ITOD dD, fM
-   if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,1,1,1))
+   if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(1,0,0,0) == (INSN(19,16) & BITS4(1,1,1,1))
        && BITS4(1,0,1,1) == INSN(11,8)
        && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
       UInt bM    = (insn28 >> 5) & 1;
       UInt fM    = (INSN(3,0) << 1) | bM;
-      UInt dD    = INSN(15,12);
+      UInt dD    = INSN(15,12) | (INSN(22,22) << 4);
       UInt syned = (insn28 >> 7) & 1;
       if (syned) {
          // FSITOD
@@ -8911,10 +11285,10 @@ static Bool decode_CP10_CP11_instruction (
    if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(1,1,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
        && BITS4(1,0,1,1) == INSN(11,8)
-       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
+       && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
       UInt   bD    = (insn28 >> 22) & 1;
       UInt   fD    = (INSN(15,12) << 1) | bD;
-      UInt   dM    = INSN(3,0);
+      UInt   dM    = INSN(3,0) | (INSN(5,5) << 4);
       UInt   bZ    = (insn28 >> 7) & 1;
       UInt   syned = (insn28 >> 16) & 1;
       IRTemp rmode = newTemp(Ity_I32);
@@ -9152,7 +11526,7 @@ static Bool decode_CP10_CP11_instruction (
 
    /* --------------------- dp insns (F) --------------------- */
    if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,0,0,0))
-       && BITS4(1,0,1,0) == INSN(11,8)
+       && BITS4(1,0,1,0) == (INSN(11,8) & BITS4(1,1,1,0))
        && BITS4(0,0,0,0) == (INSN(7,4) & BITS4(0,0,0,1))) {
       UInt    bM  = (insn28 >> 5) & 1;
       UInt    bD  = (insn28 >> 22) & 1;
@@ -9174,10 +11548,12 @@ static Bool decode_CP10_CP11_instruction (
                         condT);
             DIP("fmacs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
             goto decode_success_vfp;
-         case BITS4(0,0,0,1): /* NMAC: d - n * m */
-            putFReg(fD, triop(Iop_SubF32, rm,
+         case BITS4(0,0,0,1): /* NMAC: d + -(n * m) */
+            putFReg(fD, triop(Iop_AddF32, rm,
                               getFReg(fD),
-                              triop(Iop_MulF32, rm, getFReg(fN), getFReg(fM))),
+                              unop(Iop_NegF32,
+                                   triop(Iop_MulF32, rm, getFReg(fN),
+                                                         getFReg(fM)))),
                         condT);
             DIP("fnmacs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
             goto decode_success_vfp;
@@ -9188,8 +11564,16 @@ static Bool decode_CP10_CP11_instruction (
                         condT);
             DIP("fmscs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
             goto decode_success_vfp;
-         case BITS4(0,0,1,1): /* NMSC: - d - n * m */
-            break; //ATC
+         case BITS4(0,0,1,1): /* NMSC: - d + -(n * m) */
+            putFReg(fD, triop(Iop_AddF32, rm,
+                              unop(Iop_NegF32, getFReg(fD)),
+                              unop(Iop_NegF32,
+                                   triop(Iop_MulF32, rm,
+                                                     getFReg(fN),
+                                                    getFReg(fM)))),
+                        condT);
+            DIP("fnmscs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
+            goto decode_success_vfp;
          case BITS4(0,1,0,0): /* MUL: n * m */
             putFReg(fD, triop(Iop_MulF32, rm, getFReg(fN), getFReg(fM)),
                         condT);
@@ -9350,8 +11734,8 @@ static Bool decode_CP10_CP11_instruction (
       the case here.  Hence this case possibly requires rounding, and
       so it drags in the current rounding mode. */
    if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
-       && BITS4(1,0,0,0) == (INSN(19,16) & BITS4(1,1,1,1))
-       && BITS4(1,0,1,0) == INSN(11,8)
+       && BITS4(1,0,0,0) == INSN(19,16)
+       && BITS4(1,0,1,0) == (INSN(11,8) & BITS4(1,1,1,0))
        && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
       UInt bM    = (insn28 >> 5) & 1;
       UInt bD    = (insn28 >> 22) & 1;
@@ -9418,11 +11802,11 @@ static Bool decode_CP10_CP11_instruction (
    /* ----------------- S <-> D conversions ----------------- */
 
    // FCVTDS
-   if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+   if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(0,1,1,1) == INSN(19,16)
        && BITS4(1,0,1,0) == INSN(11,8)
        && BITS4(1,1,0,0) == (INSN(7,4) & BITS4(1,1,0,1))) {
-      UInt dD = INSN(15,12);
+      UInt dD = INSN(15,12) | (INSN(22,22) << 4);
       UInt bM = (insn28 >> 5) & 1;
       UInt fM = (INSN(3,0) << 1) | bM;
       putDReg(dD, unop(Iop_F32toF64, getFReg(fM)), condT);
@@ -9434,10 +11818,10 @@ static Bool decode_CP10_CP11_instruction (
    if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
        && BITS4(0,1,1,1) == INSN(19,16)
        && BITS4(1,0,1,1) == INSN(11,8)
-       && BITS4(1,1,0,0) == INSN(7,4)) {
+       && BITS4(1,1,0,0) == (INSN(7,4) & BITS4(1,1,0,1))) {
       UInt   bD    = (insn28 >> 22) & 1;
       UInt   fD    = (INSN(15,12) << 1) | bD;
-      UInt   dM    = INSN(3,0);
+      UInt   dM    = INSN(3,0) | (INSN(5,5) << 4);
       IRTemp rmode = newTemp(Ity_I32);
       assign(rmode, mkexpr(mk_get_IR_rounding_mode()));
       putFReg(fD, binop(Iop_F64toF32, mkexpr(rmode), getDReg(dM)),
@@ -9472,7 +11856,9 @@ static Bool decode_CP10_CP11_instruction (
    Note that all NEON instructions (in ARM mode) are handled through
    here, since they are all in NV space.
 */
-static Bool decode_NV_instruction ( /*MOD*/DisResult* dres, UInt insn )
+static Bool decode_NV_instruction ( /*MOD*/DisResult* dres,
+                                    VexArchInfo* archinfo,
+                                    UInt insn )
 {
 #  define INSN(_bMax,_bMin)  SLICE_UInt(insn, (_bMax), (_bMin))
 #  define INSN_COND          SLICE_UInt(insn, 31, 28)
@@ -9515,6 +11901,16 @@ static Bool decode_NV_instruction ( /*MOD*/DisResult* dres, UInt insn )
       /* fall through */
    }
 
+   /* ------------------------ pli ------------------------ */
+   if (BITS8(0,1,0,0, 0, 1,0,1) == (INSN(27,20) & BITS8(1,1,1,1,0,1,1,1))
+       && BITS4(1,1,1,1) == INSN(15,12)) {
+      UInt rN    = INSN(19,16);
+      UInt imm12 = INSN(11,0);
+      UInt bU    = INSN(23,23);
+      DIP("pli [r%u, #%c%u]\n", rN, bU ? '+' : '-', imm12);
+      return True;
+   }
+
    /* --------------------- Interworking branches --------------------- */
 
    // BLX (1), viz, unconditional branch and link to R15+simm24
@@ -9546,11 +11942,25 @@ static Bool decode_NV_instruction ( /*MOD*/DisResult* dres, UInt insn )
          stmt( IRStmt_MBE(Imbe_Fence) );
          DIP("ISB\n");
          return True;
-      case 0xF57FF04F: /* DSB */
+      case 0xF57FF04F: /* DSB sy */
+      case 0xF57FF04E: /* DSB st */
+      case 0xF57FF04B: /* DSB ish */
+      case 0xF57FF04A: /* DSB ishst */
+      case 0xF57FF047: /* DSB nsh */
+      case 0xF57FF046: /* DSB nshst */
+      case 0xF57FF043: /* DSB osh */
+      case 0xF57FF042: /* DSB oshst */
          stmt( IRStmt_MBE(Imbe_Fence) );
          DIP("DSB\n");
          return True;
-      case 0xF57FF05F: /* DMB */
+      case 0xF57FF05F: /* DMB sy */
+      case 0xF57FF05E: /* DMB st */
+      case 0xF57FF05B: /* DMB ish */
+      case 0xF57FF05A: /* DMB ishst */
+      case 0xF57FF057: /* DMB nsh */
+      case 0xF57FF056: /* DMB nshst */
+      case 0xF57FF053: /* DMB osh */
+      case 0xF57FF052: /* DMB oshst */
          stmt( IRStmt_MBE(Imbe_Fence) );
          DIP("DMB\n");
          return True;
@@ -9559,12 +11969,14 @@ static Bool decode_NV_instruction ( /*MOD*/DisResult* dres, UInt insn )
    }
 
    /* ------------------- NEON ------------------- */
-   Bool ok = decode_NEON_instruction(
-                dres, insn, IRTemp_INVALID/*unconditional*/, 
-                False/*!isT*/
-             );
-   if (ok)
-      return True;
+   if (archinfo->hwcaps & VEX_HWCAPS_ARM_NEON) {
+      Bool ok_neon = decode_NEON_instruction(
+                        dres, insn, IRTemp_INVALID/*unconditional*/, 
+                        False/*!isT*/
+                     );
+      if (ok_neon)
+         return True;
+   }
 
    // unrecognised
    return False;
@@ -9710,7 +12122,7 @@ DisResult disInstr_ARM_WRK (
       case ARMCondNV: {
          // Illegal instruction prior to v5 (see ARM ARM A3-5), but
          // some cases are acceptable
-         Bool ok = decode_NV_instruction(&dres, insn);
+         Bool ok = decode_NV_instruction(&dres, archinfo, insn);
          if (ok)
             goto decode_success;
          else
@@ -10833,77 +13245,50 @@ DisResult disInstr_ARM_WRK (
 
    /* --------------------- Msr etc --------------------- */
 
-   // MSR cpsr_f, #imm8  (immediate form, flags only)
-   if (BITS8(0,0,1,1,0,0,1,0) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
-       && INSN(15,12) == BITS4(1,1,1,1)) {
-      UInt bitR = (insn >> 22) & 1;
-      if (bitR == 0 && INSN(19,16) == BITS4(1,0,0,0)) {
+   // MSR apsr, #imm
+   if (INSN(27,20) == BITS8(0,0,1,1,0,0,1,0)
+       && INSN(17,12) == BITS6(0,0,1,1,1,1)) {
+      UInt write_ge    = INSN(18,18);
+      UInt write_nzcvq = INSN(19,19);
+      if (write_nzcvq || write_ge) {
          UInt   imm = (INSN(11,0) >> 0) & 0xFF;
          UInt   rot = 2 * ((INSN(11,0) >> 8) & 0xF);
          IRTemp immT = newTemp(Ity_I32);
          vassert(rot <= 30);
          imm = ROR32(imm, rot);
-         imm &= 0xFF000000;
-         imm &= (ARMG_CC_MASK_N | ARMG_CC_MASK_Z 
-                 | ARMG_CC_MASK_V | ARMG_CC_MASK_C | ARMG_CC_MASK_Q);
-         assign( immT, mkU32(imm & 0xF0000000) );
-         setFlags_D1(ARMG_CC_OP_COPY, immT, condT);
-         // Set QFLAG32 to a zero or nonzero value, depending on #imm8.
-         IRTemp qnewT = newTemp(Ity_I32);
-         assign(qnewT, mkU32( imm & ARMG_CC_MASK_Q ));
-         put_QFLAG32(qnewT, condT);
-         DIP("msr%s cpsr_f, #0x%08x\n", nCC(INSN_COND), imm);
+         assign(immT, mkU32(imm));
+         desynthesise_APSR( write_nzcvq, write_ge, immT, condT );
+         DIP("msr%s cpsr%s%sf, #0x%08x\n", nCC(INSN_COND),
+             write_nzcvq ? "f" : "", write_ge ? "g" : "", imm);
          goto decode_success;
       }
       /* fall through */
    }
 
-   // MSR cpsr_f, rM  (flags only)
-   if (BITS8(0,0,0,1,0,0,1,0) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
-       && INSN(15,12) == BITS4(1,1,1,1)) {
-      UInt bitR = (insn >> 22) & 1;
-      if (bitR == 0 && INSN(19,16) == BITS4(1,0,0,0)
-          && INSN(11,4) == BITS8(0,0,0,0,0,0,0,0)
-          && INSN(3,0) != 15) {
-         UInt   rM  = INSN(3,0);
-         IRTemp rMt = newTemp(Ity_I32);
-         assign(rMt, getIRegA(rM));
-         IRTemp immT = newTemp(Ity_I32);
-         assign(immT, binop(Iop_And32, mkexpr(rMt), mkU32(0xF0000000)) );
-         setFlags_D1(ARMG_CC_OP_COPY, immT, condT);
-         IRTemp qnewT = newTemp(Ity_I32);
-         assign(qnewT, binop(Iop_And32, mkexpr(rMt), mkU32(ARMG_CC_MASK_Q)));
-         put_QFLAG32(qnewT, condT);
-         DIP("msr%s cpsr_f, r%u\n", nCC(INSN_COND), rM);
+   // MSR apsr, reg
+   if (INSN(27,20) == BITS8(0,0,0,1,0,0,1,0) 
+       && INSN(17,12) == BITS6(0,0,1,1,1,1)
+       && INSN(11,4) == BITS8(0,0,0,0,0,0,0,0)) {
+      UInt rN          = INSN(3,0);
+      UInt write_ge    = INSN(18,18);
+      UInt write_nzcvq = INSN(19,19);
+      if (rN != 15 && (write_nzcvq || write_ge)) {
+         IRTemp rNt = newTemp(Ity_I32);
+         assign(rNt, getIRegA(rN));
+         desynthesise_APSR( write_nzcvq, write_ge, rNt, condT );
+         DIP("msr%s cpsr_%s%s, r%u\n", nCC(INSN_COND),
+             write_nzcvq ? "f" : "", write_ge ? "g" : "", rN);
          goto decode_success;
       }
       /* fall through */
    }
 
    // MRS rD, cpsr
-   if (BITS8(0,0,0,1,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
-       && INSN(19,16) == BITS4(1,1,1,1)
-       && INSN(11,0) == 0) {
-      UInt bitR = (insn >> 22) & 1;
+   if ((insn & 0x0FFF0FFF) == 0x010F0000) {
       UInt rD   = INSN(15,12);
-      if (bitR == 0 && rD != 15) {
-         IRTemp res1 = newTemp(Ity_I32);
-         // Get NZCV
-         assign( res1, mk_armg_calculate_flags_nzcv() );
-         /// OR in the Q value
-         IRTemp res2 = newTemp(Ity_I32);
-         assign(
-            res2,
-            binop(Iop_Or32,
-                  mkexpr(res1),
-                  binop(Iop_Shl32,
-                        unop(Iop_1Uto32,
-                             binop(Iop_CmpNE32,
-                                   mkexpr(get_QFLAG32()),
-                                   mkU32(0))),
-                        mkU8(ARMG_CC_SHIFT_Q)))
-         );
-         putIRegA( rD, mkexpr(res2), condT, Ijk_Boring );
+      if (rD != 15) {
+         IRTemp apsr = synthesise_APSR();
+         putIRegA( rD, mkexpr(apsr), condT, Ijk_Boring );
          DIP("mrs%s r%u, cpsr\n", nCC(INSN_COND), rD);
          goto decode_success;
       }
@@ -10991,7 +13376,7 @@ DisResult disInstr_ARM_WRK (
    if (0x01900F9F == (insn & 0x0FF00FFF)) {
       UInt rT = INSN(15,12);
       UInt rN = INSN(19,16);
-      if (rT == 15 || rN == 15 || rT == 14 /* || (rT & 1)*/) {
+      if (rT == 15 || rN == 15) {
          /* undecodable; fall through */
       } else {
          IRTemp res;
@@ -11017,8 +13402,7 @@ DisResult disInstr_ARM_WRK (
       UInt rN = INSN(19,16);
       UInt rD = INSN(15,12);
       if (rT == 15 || rN == 15 || rD == 15
-          || rT == 14 /* || (rT & 1)*/
-          || rD == rT || rN == rT) {
+          || rD == rT || rD == rN) {
          /* undecodable; fall through */
       } else {
          IRTemp resSC1, resSC32;
@@ -11073,7 +13457,9 @@ DisResult disInstr_ARM_WRK (
       /* fall through */
    }
 
-   /* ------------------- {u,s}xt{b,h}{,16} ------------------- */
+   /* ----------- uxtb, sxtb, uxth, sxth, uxtb16, sxtb16 ----------- */
+   /* FIXME: this is an exact duplicate of the Thumb version.  They
+      should be commoned up. */
    if (BITS8(0,1,1,0,1, 0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,1,0,0,0))
        && BITS4(1,1,1,1) == INSN(19,16)
        && BITS4(0,1,1,1) == INSN(7,4)
@@ -11127,7 +13513,7 @@ DisResult disInstr_ARM_WRK (
                                    unop(Iop_32to8, mkexpr(hi32))),
                               mkU8(16))
                ));
-               nm = "uxtb16";
+               nm = "sxtb16";
                break;
             }
             default:
@@ -11221,45 +13607,6 @@ DisResult disInstr_ARM_WRK (
       /* fall through */
    }
 
-   /* ------------------- smul{b,t}{b,t} ------------- */
-   if (BITS8(0,0,0,1,0,1,1,0) == INSN(27,20)
-       && BITS4(0,0,0,0) == INSN(15,12)
-       && BITS4(1,0,0,0) == (INSN(7,4) & BITS4(1,0,0,1))) {
-      UInt rD  = INSN(19,16);
-      UInt rM  = INSN(11,8);
-      UInt rN  = INSN(3,0);
-      UInt bM = (insn >> 6) & 1;
-      UInt bN = (insn >> 5) & 1;
-      if (bN == 0 && bM == 1) goto decode_failure; //ATC
-      if (bN == 1 && bM == 0) goto decode_failure; //ATC
-      if (bN == 1 && bM == 1) goto decode_failure; //ATC
-      if (rD == 15 || rN == 15 || rM == 15) {
-         /* undecodable; fall through */
-      } else {
-         IRTemp srcL = newTemp(Ity_I32);
-         IRTemp srcR = newTemp(Ity_I32);
-         IRTemp res  = newTemp(Ity_I32);
-
-         /* Extract and sign extend the two 16-bit operands */
-         assign(srcL, binop(Iop_Sar32,
-                            binop(Iop_Shl32, getIRegA(rN),
-                                             mkU8(bN ? 0 : 16)),
-                            mkU8(16)));
-         assign(srcR, binop(Iop_Sar32,
-                            binop(Iop_Shl32, getIRegA(rM),
-                                             mkU8(bM ? 0 : 16)),
-                            mkU8(16)));
-
-         assign(res, binop(Iop_Mul32, mkexpr(srcL), mkexpr(srcR)));
-         putIRegA(rD, mkexpr(res), condT, Ijk_Boring);
-
-         DIP("smul%c%c%s r%u, r%u, r%u\n",
-             bN ? 't' : 'b', bM ? 't' : 'b', nCC(INSN_COND), rD, rN, rM);
-         goto decode_success;
-      }
-      /* fall through */
-   }
-
    /* --------------------- Load/store doubleword ------------- */
    // LDRD STRD
    /*                 31   27   23   19 15 11   7    3     # highest bit
@@ -11306,7 +13653,6 @@ DisResult disInstr_ARM_WRK (
    }
    else if (INSN(27,24) == BITS4(0,0,0,0) && INSN(22,20) == BITS3(0,0,0)) {
       summary = 3 | 32;
-      goto decode_failure; //ATC
    }
    else goto after_load_store_doubleword;
 
@@ -11499,6 +13845,64 @@ DisResult disInstr_ARM_WRK (
       /* fall through */
    }
 
+   /* ------------------- rev16, rev ------------------ */
+   if (INSN(27,16) == 0x6BF
+       && (INSN(11,4) == 0xFB/*rev16*/ || INSN(11,4) == 0xF3/*rev*/)) {
+      Bool isREV = INSN(11,4) == 0xF3;
+      UInt rM    = INSN(3,0);
+      UInt rD    = INSN(15,12);
+      if (rM != 15 && rD != 15) {
+         IRTemp rMt = newTemp(Ity_I32);
+         assign(rMt, getIRegA(rM));
+         IRTemp res = isREV ? gen_REV(rMt) : gen_REV16(rMt);
+         putIRegA(rD, mkexpr(res), condT, Ijk_Boring);
+         DIP("rev%s%s r%u, r%u\n", isREV ? "" : "16",
+             nCC(INSN_COND), rD, rM);
+         goto decode_success;
+      }
+   }
+
+   /* ------------------- rbit ------------------ */
+   if (INSN(27,16) == 0x6FF && INSN(11,4) == 0xF3) {
+      UInt rD = INSN(15,12);
+      UInt rM = INSN(3,0);
+      if (rD != 15 && rM != 15) {
+         IRTemp arg = newTemp(Ity_I32);
+         assign(arg, getIRegA(rM));
+         IRTemp res = gen_BITREV(arg);
+         putIRegA(rD, mkexpr(res), condT, Ijk_Boring);
+         DIP("rbit r%u, r%u\n", rD, rM);
+         goto decode_success;
+      }
+   }
+
+   /* ------------------- smmul ------------------ */
+   if (INSN(27,20) == BITS8(0,1,1,1,0,1,0,1)
+       && INSN(15,12) == BITS4(1,1,1,1)
+       && (INSN(7,4) & BITS4(1,1,0,1)) == BITS4(0,0,0,1)) {
+      UInt bitR = INSN(5,5);
+      UInt rD = INSN(19,16);
+      UInt rM = INSN(11,8);
+      UInt rN = INSN(3,0);
+      if (rD != 15 && rM != 15 && rN != 15) {
+         IRExpr* res
+         = unop(Iop_64HIto32,
+                binop(Iop_Add64,
+                      binop(Iop_MullS32, getIRegA(rN), getIRegA(rM)),
+                      mkU64(bitR ? 0x80000000ULL : 0ULL)));
+         putIRegA(rD, res, condT, Ijk_Boring);
+         DIP("smmul%s%s r%u, r%u, r%u\n",
+             nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM);
+         goto decode_success;
+      }
+   }
+
+   /* ------------------- NOP ------------------ */
+   if (0x0320F000 == (insn & 0x0FFFFFFF)) {
+      DIP("nop%s\n", nCC(INSN_COND));
+      goto decode_success;
+   }
+
    /* ----------------------------------------------------------- */
    /* -- ARMv7 instructions                                    -- */
    /* ----------------------------------------------------------- */
@@ -11573,6 +13977,18 @@ DisResult disInstr_ARM_WRK (
    /* These are all in NV space, and so are taken care of (far) above,
       by a call from this function to decode_NV_instruction(). */
 
+   /* ----------------------------------------------------------- */
+   /* -- v6 media instructions (in ARM mode)                   -- */
+   /* ----------------------------------------------------------- */
+
+   { Bool ok_v6m = decode_V6MEDIA_instruction(
+                       &dres, INSN(27,0), condT, INSN_COND,
+                       False/*!isT*/
+                   );
+     if (ok_v6m)
+        goto decode_success;
+   }
+
    /* ----------------------------------------------------------- */
    /* -- Undecodable                                           -- */
    /* ----------------------------------------------------------- */
@@ -11625,7 +14041,7 @@ DisResult disInstr_ARM_WRK (
          assert here. */
       vassert(dres.whatNext == Dis_Continue);
       vassert(irsb->next == NULL);
-      vassert(irsb->jumpkind = Ijk_Boring);
+      vassert(irsb->jumpkind == Ijk_Boring);
       /* If r15 is unconditionally written, terminate the block by
          jumping to it.  If it's conditionally written, still
          terminate the block (a shame, but we can't do side exits to
@@ -11695,6 +14111,10 @@ DisResult disInstr_THUMB_WRK (
    //UInt      hwcaps = archinfo->hwcaps;
    HChar     dis_buf[128];  // big enough to hold LDMIA etc text
 
+   /* Summary result of the ITxxx backwards analysis: False == safe
+      but suboptimal. */
+   Bool guaranteedUnconditional = False;
+
    /* What insn variants are we supporting today? */
    //allow_VFP  = (0 != (hwcaps & VEX_HWCAPS_ARM_VFP));
    // etc etc
@@ -11795,7 +14215,7 @@ DisResult disInstr_THUMB_WRK (
       the instruction word, first for 16-bit insns, then for 32-bit
       insns. */
 
-   /* --- BEGIN optimisation --- */
+   /* --- BEGIN ITxxx optimisation analysis --- */
    /* This is a crucial optimisation for the ITState boilerplate that
       follows.  Examine the 9 halfwords preceding this instruction,
       and if we are absolutely sure that none of them constitute an
@@ -11834,7 +14254,7 @@ DisResult disInstr_THUMB_WRK (
    {
       /* Summary result of this analysis: False == safe but
          suboptimal. */
-      Bool forceZ = False;
+      vassert(guaranteedUnconditional == False);
 
       UInt pc = guest_R15_curr_instr_notENC;
       vassert(0 == (pc & 1));
@@ -11843,7 +14263,7 @@ DisResult disInstr_THUMB_WRK (
       if (pageoff >= 18) {
          /* It's safe to poke about in the 9 halfwords preceding this
             insn.  So, have a look at them. */
-         forceZ = True; /* assume no 'it' insn found, till we do */
+         guaranteedUnconditional = True; /* assume no 'it' insn found, till we do */
 
          UShort* hwp = (UShort*)(HWord)pc;
          Int i;
@@ -11858,19 +14278,13 @@ DisResult disInstr_THUMB_WRK (
                where x can be anything, but y must be nonzero. */
             if ((hwp[i] & 0xFF00) == 0xBF00 && (hwp[i] & 0xF) != 0) {
                /* might be an 'it' insn.  Play safe. */
-               forceZ = False;
+               guaranteedUnconditional = False;
                break;
             }
          }
       }
-      /* So, did we get lucky? */
-      if (forceZ) {
-         IRTemp t = newTemp(Ity_I32);
-         assign(t, mkU32(0));
-         put_ITSTATE(t);
-      }
    }
-   /* --- END optimisation --- */
+   /* --- END ITxxx optimisation analysis --- */
 
    /* Generate the guarding condition for this insn, by examining
       ITSTATE.  Assign it to condT.  Also, generate new
@@ -11881,74 +14295,177 @@ DisResult disInstr_THUMB_WRK (
       decode_success handle this, but in cases where the insn contains
       a side exit, we have to update them before the exit. */
 
-   IRTemp old_itstate = get_ITSTATE();
-
-   IRTemp new_itstate = newTemp(Ity_I32);
-   assign(new_itstate, binop(Iop_Shr32, mkexpr(old_itstate), mkU8(8)));
+   /* If the ITxxx optimisation analysis above could not prove that
+      this instruction is guaranteed unconditional, we insert a
+      lengthy IR preamble to compute the guarding condition at
+      runtime.  If it can prove it (which obviously we hope is the
+      normal case) then we insert a minimal preamble, which is
+      equivalent to setting guest_ITSTATE to zero and then folding
+      that through the full preamble (which completely disappears). */
+
+   IRTemp condT              = IRTemp_INVALID;
+   IRTemp old_itstate        = IRTemp_INVALID;
+   IRTemp new_itstate        = IRTemp_INVALID;
+   IRTemp cond_AND_notInIT_T = IRTemp_INVALID;
+
+   if (guaranteedUnconditional) {
+      /* BEGIN "partial eval { ITSTATE = 0; STANDARD_PREAMBLE; }" */
+
+      // ITSTATE = 0 :: I32
+      IRTemp z32 = newTemp(Ity_I32);
+      assign(z32, mkU32(0));
+      put_ITSTATE(z32);
+
+      // old_itstate = 0 :: I32
+      //
+      // old_itstate = get_ITSTATE();
+      old_itstate = z32; /* 0 :: I32 */
+
+      // new_itstate = old_itstate >> 8
+      //             = 0 >> 8
+      //             = 0 :: I32
+      //
+      // new_itstate = newTemp(Ity_I32);
+      // assign(new_itstate,
+      //        binop(Iop_Shr32, mkexpr(old_itstate), mkU8(8)));
+      new_itstate = z32;
+
+      // ITSTATE = 0 :: I32(again)
+      //
+      // put_ITSTATE(new_itstate);
+
+      // condT1 = calc_cond_dyn( xor(and(old_istate,0xF0), 0xE0) )
+      //        = calc_cond_dyn( xor(0,0xE0) )
+      //        = calc_cond_dyn ( 0xE0 )
+      //        = 1 :: I32
+      // Not that this matters, since the computed value is not used:
+      // see condT folding below
+      //
+      // IRTemp condT1 = newTemp(Ity_I32);
+      // assign(condT1,
+      //        mk_armg_calculate_condition_dyn(
+      //           binop(Iop_Xor32,
+      //                 binop(Iop_And32, mkexpr(old_itstate), mkU32(0xF0)),
+      //                 mkU32(0xE0))
+      //       )
+      // );
+
+      // condT = 32to8(and32(old_itstate,0xF0)) == 0  ? 1  : condT1
+      //       = 32to8(and32(0,0xF0)) == 0  ? 1  : condT1
+      //       = 32to8(0) == 0  ? 1  : condT1
+      //       = 0 == 0  ? 1  : condT1
+      //       = 1
+      //
+      // condT = newTemp(Ity_I32);
+      // assign(condT, IRExpr_Mux0X(
+      //                  unop(Iop_32to8, binop(Iop_And32,
+      //                                        mkexpr(old_itstate),
+      //                                        mkU32(0xF0))),
+      //                  mkU32(1),
+      //                  mkexpr(condT1)
+      //       ));
+      condT = newTemp(Ity_I32);
+      assign(condT, mkU32(1));
+
+      // notInITt = xor32(and32(old_itstate, 1), 1)
+      //          = xor32(and32(0, 1), 1)
+      //          = xor32(0, 1)
+      //          = 1 :: I32
+      //
+      // IRTemp notInITt = newTemp(Ity_I32);
+      // assign(notInITt,
+      //        binop(Iop_Xor32,
+      //              binop(Iop_And32, mkexpr(old_itstate), mkU32(1)),
+      //              mkU32(1)));
+
+      // cond_AND_notInIT_T = and32(notInITt, condT)
+      //                    = and32(1, 1)
+      //                    = 1
+      //
+      // cond_AND_notInIT_T = newTemp(Ity_I32);
+      // assign(cond_AND_notInIT_T,
+      //        binop(Iop_And32, mkexpr(notInITt), mkexpr(condT)));
+      cond_AND_notInIT_T = condT; /* 1 :: I32 */
+
+      /* END "partial eval { ITSTATE = 0; STANDARD_PREAMBLE; }" */
+   } else {
+      /* BEGIN { STANDARD PREAMBLE; } */
+
+      old_itstate = get_ITSTATE();
+
+      new_itstate = newTemp(Ity_I32);
+      assign(new_itstate,
+             binop(Iop_Shr32, mkexpr(old_itstate), mkU8(8)));
+
+      put_ITSTATE(new_itstate);
+
+      /* Same strategy as for ARM insns: generate a condition
+         temporary at this point (or IRTemp_INVALID, meaning
+         unconditional).  We leave it to lower-level instruction
+         decoders to decide whether they can generate straight-line
+         code, or whether they must generate a side exit before the
+         instruction.  condT :: Ity_I32 and is always either zero or
+         one. */
+      IRTemp condT1 = newTemp(Ity_I32);
+      assign(condT1,
+             mk_armg_calculate_condition_dyn(
+                binop(Iop_Xor32,
+                      binop(Iop_And32, mkexpr(old_itstate), mkU32(0xF0)),
+                      mkU32(0xE0))
+            )
+      );
 
-   put_ITSTATE(new_itstate);
+      /* This is a bit complex, but needed to make Memcheck understand
+         that, if the condition in old_itstate[7:4] denotes AL (that
+         is, if this instruction is to be executed unconditionally),
+         then condT does not depend on the results of calling the
+         helper.
+
+         We test explicitly for old_itstate[7:4] == AL ^ 0xE, and in
+         that case set condT directly to 1.  Else we use the results
+         of the helper.  Since old_itstate is always defined and
+         because Memcheck does lazy V-bit propagation through Mux0X,
+         this will cause condT to always be a defined 1 if the
+         condition is 'AL'.  From an execution semantics point of view
+         this is irrelevant since we're merely duplicating part of the
+         behaviour of the helper.  But it makes it clear to Memcheck,
+         in this case, that condT does not in fact depend on the
+         contents of the condition code thunk.  Without it, we get
+         quite a lot of false errors.
+
+         So, just to clarify: from a straight semantics point of view,
+         we can simply do "assign(condT, mkexpr(condT1))", and the
+         simulator still runs fine.  It's just that we get loads of
+         false errors from Memcheck. */
+      condT = newTemp(Ity_I32);
+      assign(condT, IRExpr_Mux0X(
+                       unop(Iop_32to8, binop(Iop_And32,
+                                             mkexpr(old_itstate),
+                                             mkU32(0xF0))),
+                       mkU32(1),
+                       mkexpr(condT1)
+            ));
 
-   /* Same strategy as for ARM insns: generate a condition temporary
-      at this point  (or IRTemp_INVALID, meaning
-      unconditional).  We leave it to lower-level instruction decoders
-      to decide whether they can generate straight-line code, or
-      whether they must generate a side exit before the instruction.
-      condT :: Ity_I32 and is always either zero or one. */
-   IRTemp condT1 = newTemp(Ity_I32);
-   assign(condT1,
-          mk_armg_calculate_condition_dyn(
+      /* Something we don't have in ARM: generate a 0 or 1 value
+         indicating whether or not we are in an IT block (NB: 0 = in
+         IT block, 1 = not in IT block).  This is used to gate
+         condition code updates in 16-bit Thumb instructions. */
+      IRTemp notInITt = newTemp(Ity_I32);
+      assign(notInITt,
              binop(Iop_Xor32,
-                   binop(Iop_And32, mkexpr(old_itstate), mkU32(0xF0)),
-                   mkU32(0xE0))
-          )
-   );
+                   binop(Iop_And32, mkexpr(old_itstate), mkU32(1)),
+                   mkU32(1)));
 
-   /* This is a bit complex, but needed to make Memcheck understand
-      that, if the condition in old_itstate[7:4] denotes AL (that is,
-      if this instruction is to be executed unconditionally), then
-      condT does not depend on the results of calling the helper.
-
-      We test explicitly for old_itstate[7:4] == AL ^ 0xE, and in that
-      case set condT directly to 1.  Else we use the results of the
-      helper.  Since old_itstate is always defined and because
-      Memcheck does lazy V-bit propagation through Mux0X, this will
-      cause condT to always be a defined 1 if the condition is 'AL'.
-      From an execution semantics point of view this is irrelevant
-      since we're merely duplicating part of the behaviour of the
-      helper.  But it makes it clear to Memcheck, in this case, that
-      condT does not in fact depend on the contents of the condition
-      code thunk.  Without it, we get quite a lot of false errors.
-
-      So, just to clarify: from a straight semantics point of view, we
-      can simply do "assign(condT, mkexpr(condT1))", and the simulator
-      still runs fine.  It's just that we get loads of false errors
-      from Memcheck. */
-   IRTemp condT = newTemp(Ity_I32);
-   assign(condT, IRExpr_Mux0X(
-                    unop(Iop_32to8, binop(Iop_And32,
-                                          mkexpr(old_itstate),
-                                          mkU32(0xF0))),
-                    mkU32(1),
-                    mkexpr(condT1)
-         ));
+      /* Compute 'condT && notInITt' -- that is, the instruction is
+         going to execute, and we're not in an IT block.  This is the
+         gating condition for updating condition codes in 16-bit Thumb
+         instructions, except for CMP, CMN and TST. */
+      cond_AND_notInIT_T = newTemp(Ity_I32);
+      assign(cond_AND_notInIT_T,
+             binop(Iop_And32, mkexpr(notInITt), mkexpr(condT)));
+      /* END { STANDARD PREAMBLE; } */
+   }
 
-   /* Something we don't have in ARM: generate a 0 or 1 value
-      indicating whether or not we are in an IT block (NB: 0 = in IT
-      block, 1 = not in IT block).  This is used to gate condition
-      code updates in 16-bit Thumb instructions. */
-   IRTemp notInITt = newTemp(Ity_I32);
-   assign(notInITt,
-          binop(Iop_Xor32,
-                binop(Iop_And32, mkexpr(old_itstate), mkU32(1)),
-                mkU32(1)));
-
-   /* Compute 'condT && notInITt' -- that is, the instruction is going
-      to execute, and we're not in an IT block.  This is the gating
-      condition for updating condition codes in 16-bit Thumb
-      instructions, except for CMP, CMN and TST. */
-   IRTemp cond_AND_notInIT_T = newTemp(Ity_I32);
-   assign(cond_AND_notInIT_T,
-          binop(Iop_And32, mkexpr(notInITt), mkexpr(condT)));
 
    /* At this point:
       * ITSTATE has been updated
@@ -12260,6 +14777,21 @@ DisResult disInstr_THUMB_WRK (
       goto decode_success;
    }
 
+   case 0x2E8:   // REV
+   case 0x2E9: { // REV16
+      /* ---------------- REV   Rd, Rm ---------------- */
+      /* ---------------- REV16 Rd, Rm ---------------- */
+      UInt rM = INSN0(5,3);
+      UInt rD = INSN0(2,0);
+      Bool isREV = INSN0(15,6) == 0x2E8;
+      IRTemp arg = newTemp(Ity_I32);
+      assign(arg, getIRegT(rM));
+      IRTemp res = isREV ? gen_REV(arg) : gen_REV16(arg);
+      putIRegT(rD, mkexpr(res), condT);
+      DIP("rev%s r%u, r%u\n", isREV ? "" : "16", rD, rM);
+      goto decode_success;
+   }
+
    default:
       break; /* examine the next shortest prefix */
 
@@ -12294,7 +14826,7 @@ DisResult disInstr_THUMB_WRK (
          suitably encoded address therefore (w CPSR.T at the bottom).
          Have to special-case r15, as usual. */
       UInt rM = (INSN0(6,6) << 3) | INSN0(5,3);
-      if (BITS3(0,0,0) == INSN0(2,0) &&/*atc*/rM != 15) {
+      if (BITS3(0,0,0) == INSN0(2,0)) {
          IRTemp dst = newTemp(Ity_I32);
          gen_SIGILL_T_if_in_but_NLI_ITBlock(old_itstate, new_itstate);
          mk_skip_over_T16_if_cond_is_false(condT);
@@ -12303,7 +14835,6 @@ DisResult disInstr_THUMB_WRK (
          if (rM <= 14) {
             assign( dst, getIRegT(rM) );
          } else {
-            break; // ATC
             vassert(rM == 15);
             assign( dst, mkU32(guest_R15_curr_instr_notENC + 4) );
          }
@@ -12332,7 +14863,7 @@ DisResult disInstr_THUMB_WRK (
             putIRegT( 14, mkU32( (guest_R15_curr_instr_notENC + 2) | 1 ),
                           IRTemp_INVALID );
             irsb->next     = mkexpr(dst);
-            irsb->jumpkind = Ijk_Boring;
+            irsb->jumpkind = Ijk_Call;
             dres.whatNext  = Dis_StopHere;
             DIP("blx r%u (possibly switch to ARM mode)\n", rM);
             goto decode_success;
@@ -13493,8 +16024,9 @@ DisResult disInstr_THUMB_WRK (
       UInt rN    = INSN0(3,0);
       UInt rD    = INSN1(11,8);
       Bool valid = !isBadRegT(rN) && !isBadRegT(rD);
-      /* but allow "sub.w sp, sp, #constT" */
-      if (!valid && !isRSB && rN == 13 && rD == 13)
+      /* but allow "sub{s}.w reg, sp, #constT 
+         this is (T2) of "SUB (SP minus immediate)" */
+      if (!valid && !isRSB && rN == 13 && rD != 15)
          valid = True;
       if (valid) {
          IRTemp argL  = newTemp(Ity_I32);
@@ -13580,21 +16112,24 @@ DisResult disInstr_THUMB_WRK (
        && (   INSN0(9,5) == BITS5(0,0,0,1,0)  // ORR
            || INSN0(9,5) == BITS5(0,0,0,0,0)  // AND
            || INSN0(9,5) == BITS5(0,0,0,0,1)  // BIC
-           || INSN0(9,5) == BITS5(0,0,1,0,0)) // EOR
+           || INSN0(9,5) == BITS5(0,0,1,0,0)  // EOR
+           || INSN0(9,5) == BITS5(0,0,0,1,1)) // ORN
        && INSN1(15,15) == 0) {
       UInt bS = INSN0(4,4);
       UInt rN = INSN0(3,0);
       UInt rD = INSN1(11,8);
       if (!isBadRegT(rN) && !isBadRegT(rD)) {
-         Bool   isBIC = False;
-         IROp   op    = Iop_INVALID;
-         HChar* nm    = "???";
+         Bool   notArgR = False;
+         IROp   op      = Iop_INVALID;
+         HChar* nm      = "???";
          switch (INSN0(9,5)) {
             case BITS5(0,0,0,1,0): op = Iop_Or32;  nm = "orr"; break;
             case BITS5(0,0,0,0,0): op = Iop_And32; nm = "and"; break;
             case BITS5(0,0,0,0,1): op = Iop_And32; nm = "bic";
-                                   isBIC = True; break;
-            case BITS5(0,0,1,0,0): op = Iop_Xor32;  nm = "eor"; break;
+                                   notArgR = True; break;
+            case BITS5(0,0,1,0,0): op = Iop_Xor32; nm = "eor"; break;
+            case BITS5(0,0,0,1,1): op = Iop_Or32;  nm = "orn";
+                                   notArgR = True; break;
             default: vassert(0);
          }
          IRTemp argL  = newTemp(Ity_I32);
@@ -13603,7 +16138,7 @@ DisResult disInstr_THUMB_WRK (
          Bool   updC  = False;
          UInt   imm32 = thumbExpandImm_from_I0_I1(&updC, insn0, insn1);
          assign(argL, getIRegT(rN));
-         assign(argR, mkU32(isBIC ? ~imm32 : imm32));
+         assign(argR, mkU32(notArgR ? ~imm32 : imm32));
          assign(res,  binop(op, mkexpr(argL), mkexpr(argR)));
          putIRegT(rD, mkexpr(res), condT);
          if (bS) {
@@ -13638,14 +16173,16 @@ DisResult disInstr_THUMB_WRK (
       UInt how  = INSN1(5,4);
 
       Bool valid = !isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM);
-      /* but allow "add.w reg, sp, reg   w/ no shift */
+      /* but allow "add.w reg, sp, reg   w/ no shift
+         (T3) "ADD (SP plus register) */
       if (!valid && INSN0(8,5) == BITS4(1,0,0,0) // add
-          && rN == 13 && imm5 == 0 && how == 0) {
+          && rD != 15 && rN == 13 && imm5 == 0 && how == 0) {
          valid = True;
       }
-      /* also allow "sub.w sp, sp, reg   w/ no shift */
-      if (!valid && INSN0(8,5) == BITS4(1,1,0,1) // add
-          && rD == 13 && rN == 13 && imm5 == 0 && how == 0) {
+      /* also allow "sub.w reg, sp, reg   w/ no shift
+         (T1) "SUB (SP minus register) */
+      if (!valid && INSN0(8,5) == BITS4(1,1,0,1) // sub
+          && rD != 15 && rN == 13 && imm5 == 0 && how == 0) {
          valid = True;
       }
       if (valid) {
@@ -13768,25 +16305,29 @@ DisResult disInstr_THUMB_WRK (
    /* ---------- (T3) ORR{S}.W Rd, Rn, Rm, {shift} ---------- */
    /* ---------- (T3) EOR{S}.W Rd, Rn, Rm, {shift} ---------- */
    /* ---------- (T3) BIC{S}.W Rd, Rn, Rm, {shift} ---------- */
+   /* ---------- (T1) ORN{S}.W Rd, Rn, Rm, {shift} ---------- */
    if (INSN0(15,9) == BITS7(1,1,1,0,1,0,1)
        && (   INSN0(8,5) == BITS4(0,0,0,0)  // and subopc
            || INSN0(8,5) == BITS4(0,0,1,0)  // orr subopc
            || INSN0(8,5) == BITS4(0,1,0,0)  // eor subopc
-           || INSN0(8,5) == BITS4(0,0,0,1)) // bic subopc
+           || INSN0(8,5) == BITS4(0,0,0,1)  // bic subopc
+           || INSN0(8,5) == BITS4(0,0,1,1)) // orn subopc
        && INSN1(15,15) == 0) {
       UInt rN = INSN0(3,0);
       UInt rD = INSN1(11,8);
       UInt rM = INSN1(3,0);
       if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) {
-         Bool isBIC = False;
-         IROp op    = Iop_INVALID;
+         Bool notArgR = False;
+         IROp op      = Iop_INVALID;
          HChar* nm  = "???";
          switch (INSN0(8,5)) {
             case BITS4(0,0,0,0): op = Iop_And32; nm = "and"; break;
             case BITS4(0,0,1,0): op = Iop_Or32;  nm = "orr"; break;
             case BITS4(0,1,0,0): op = Iop_Xor32; nm = "eor"; break;
             case BITS4(0,0,0,1): op = Iop_And32; nm = "bic";
-                                 isBIC = True; break;
+                                 notArgR = True; break;
+            case BITS4(0,0,1,1): op = Iop_Or32; nm = "orn";
+                                 notArgR = True; break;
             default: vassert(0);
          }
          UInt bS   = INSN0(4,4);
@@ -13807,8 +16348,8 @@ DisResult disInstr_THUMB_WRK (
          );
 
          IRTemp res = newTemp(Ity_I32);
-         if (isBIC) {
-            vassert(op == Iop_And32);
+         if (notArgR) {
+            vassert(op == Iop_And32 || op == Iop_Or32);
             assign(res, binop(op, mkexpr(rNt),
                                   unop(Iop_Not32, mkexpr(argR))));
          } else {
@@ -14749,10 +17290,16 @@ DisResult disInstr_THUMB_WRK (
    /* ------------------ UXTH ------------------ */
    /* ------------------ SXTB ------------------ */
    /* ------------------ SXTH ------------------ */
+   /* ----------------- UXTB16 ----------------- */
+   /* ----------------- SXTB16 ----------------- */
+   /* FIXME: this is an exact duplicate of the ARM version.  They
+      should be commoned up. */
    if ((INSN0(15,0) == 0xFA5F     // UXTB
         || INSN0(15,0) == 0xFA1F  // UXTH
         || INSN0(15,0) == 0xFA4F  // SXTB
-        || INSN0(15,0) == 0xFA0F) // SXTH
+        || INSN0(15,0) == 0xFA0F  // SXTH
+        || INSN0(15,0) == 0xFA3F  // UXTB16
+        || INSN0(15,0) == 0xFA2F) // SXTB16
        && INSN1(15,12) == BITS4(1,1,1,1)
        && INSN1(7,6) == BITS2(1,0)) {
       UInt rD = INSN1(11,8);
@@ -14786,6 +17333,31 @@ DisResult disInstr_THUMB_WRK (
                assign(dstT, unop(Iop_16Sto32,
                                  unop(Iop_32to16, mkexpr(rotT))));
                break;
+            case 0xFA3F: // UXTB16
+               nm = "uxtb16";
+               assign(dstT, binop(Iop_And32, mkexpr(rotT),
+                                             mkU32(0x00FF00FF)));
+               break;
+            case 0xFA2F: { // SXTB16
+               nm = "sxtb16";
+               IRTemp lo32 = newTemp(Ity_I32);
+               IRTemp hi32 = newTemp(Ity_I32);
+               assign(lo32, binop(Iop_And32, mkexpr(rotT), mkU32(0xFF)));
+               assign(hi32, binop(Iop_Shr32, mkexpr(rotT), mkU8(16)));
+               assign(
+                  dstT,
+                  binop(Iop_Or32,
+                        binop(Iop_And32,
+                              unop(Iop_8Sto32,
+                                   unop(Iop_32to8, mkexpr(lo32))),
+                              mkU32(0xFFFF)),
+                        binop(Iop_Shl32,
+                              unop(Iop_8Sto32,
+                                   unop(Iop_32to8, mkexpr(hi32))),
+                              mkU8(16))
+               ));
+               break;
+            }
             default:
                vassert(0);
          }
@@ -14966,27 +17538,6 @@ DisResult disInstr_THUMB_WRK (
       }
    }
 
-   /* ------------------- (T1) SMULBB ------------------- */
-   if (INSN0(15,4) == 0xFB1
-       && INSN1(15,12) == BITS4(1,1,1,1)
-       && INSN1(7,6) == BITS2(0,0)
-       && INSN1(5,4) == BITS2(0,0)) { // other values -> BT/TB/TT
-      UInt rN = INSN0(3,0);
-      UInt rD = INSN1(11,8);
-      UInt rM = INSN1(3,0);
-      if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) {
-         putIRegT(rD,
-                  binop(Iop_Mul32,
-                        unop(Iop_16Sto32,
-                             unop(Iop_32to16, getIRegT(rN))),
-                        unop(Iop_16Sto32,
-                             unop(Iop_32to16, getIRegT(rM)))),
-                  condT);
-         DIP("smulbb r%u, r%u, r%u\n", rD, rN, rM);
-         goto decode_success;
-      }
-   }
-
    /* ------------------- (T1) SXTAH ------------------- */
    /* ------------------- (T1) UXTAH ------------------- */
    if ((INSN0(15,4) == 0xFA1      // UXTAH
@@ -15050,7 +17601,7 @@ DisResult disInstr_THUMB_WRK (
        && INSN1(15,12) == BITS4(1,1,1,1)
        && INSN1(7,4) == BITS4(1,0,0,0)) {
       UInt rM1 = INSN0(3,0);
-      UInt rD = INSN1(11,8);
+      UInt rD  = INSN1(11,8);
       UInt rM2 = INSN1(3,0);
       if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) {
          IRTemp arg = newTemp(Ity_I32);
@@ -15069,25 +17620,55 @@ DisResult disInstr_THUMB_WRK (
       }
    }
 
+   /* ------------------- (T1) RBIT ------------------- */
+   if (INSN0(15,4) == 0xFA9
+       && INSN1(15,12) == BITS4(1,1,1,1)
+       && INSN1(7,4) == BITS4(1,0,1,0)) {
+      UInt rM1 = INSN0(3,0);
+      UInt rD  = INSN1(11,8);
+      UInt rM2 = INSN1(3,0);
+      if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) {
+         IRTemp arg = newTemp(Ity_I32);
+         assign(arg, getIRegT(rM1));
+         IRTemp res = gen_BITREV(arg);
+         putIRegT(rD, mkexpr(res), condT);
+         DIP("rbit r%u, r%u\n", rD, rM1);
+         goto decode_success;
+      }
+   }
+
+   /* ------------------- (T2) REV   ------------------- */
+   /* ------------------- (T2) REV16 ------------------- */
+   if (INSN0(15,4) == 0xFA9
+       && INSN1(15,12) == BITS4(1,1,1,1)
+       && (   INSN1(7,4) == BITS4(1,0,0,0)     // REV
+           || INSN1(7,4) == BITS4(1,0,0,1))) { // REV16
+      UInt rM1   = INSN0(3,0);
+      UInt rD    = INSN1(11,8);
+      UInt rM2   = INSN1(3,0);
+      Bool isREV = INSN1(7,4) == BITS4(1,0,0,0);
+      if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) {
+         IRTemp arg = newTemp(Ity_I32);
+         assign(arg, getIRegT(rM1));
+         IRTemp res = isREV ? gen_REV(arg) : gen_REV16(arg);
+         putIRegT(rD, mkexpr(res), condT);
+         DIP("rev%s r%u, r%u\n", isREV ? "" : "16", rD, rM1);
+         goto decode_success;
+      }
+   }
+
    /* -------------- (T1) MSR apsr, reg -------------- */
    if (INSN0(15,4) == 0xF38 
        && INSN1(15,12) == BITS4(1,0,0,0) && INSN1(9,0) == 0x000) {
       UInt rN          = INSN0(3,0);
       UInt write_ge    = INSN1(10,10);
       UInt write_nzcvq = INSN1(11,11);
-      if (!isBadRegT(rN) && write_nzcvq && !write_ge) {
+      if (!isBadRegT(rN) && (write_nzcvq || write_ge)) {
          IRTemp rNt = newTemp(Ity_I32);
          assign(rNt, getIRegT(rN));
-         // Do NZCV
-         IRTemp immT = newTemp(Ity_I32);
-         assign(immT, binop(Iop_And32, mkexpr(rNt), mkU32(0xF0000000)) );
-         setFlags_D1(ARMG_CC_OP_COPY, immT, condT);
-         // Do Q
-         IRTemp qnewT = newTemp(Ity_I32);
-         assign(qnewT, binop(Iop_And32, mkexpr(rNt), mkU32(ARMG_CC_MASK_Q)));
-         put_QFLAG32(qnewT, condT);
-         // 
-         DIP("msr cpsr_f, r%u\n", rN);
+         desynthesise_APSR( write_nzcvq, write_ge, rNt, condT );
+         DIP("msr cpsr_%s%s, r%u\n",
+             write_nzcvq ? "f" : "", write_ge ? "g" : "", rN);
          goto decode_success;
       }
    }
@@ -15097,28 +17678,129 @@ DisResult disInstr_THUMB_WRK (
        && INSN1(15,12) == BITS4(1,0,0,0) && INSN1(7,0) == 0x00) {
       UInt rD = INSN1(11,8);
       if (!isBadRegT(rD)) {
-         IRTemp res1 = newTemp(Ity_I32);
-         // Get NZCV
-         assign( res1, mk_armg_calculate_flags_nzcv() );
-         /// OR in the Q value
-         IRTemp res2 = newTemp(Ity_I32);
-         assign(
-            res2,
-            binop(Iop_Or32,
-                  mkexpr(res1),
-                  binop(Iop_Shl32,
-                        unop(Iop_1Uto32,
-                             binop(Iop_CmpNE32,
-                                   mkexpr(get_QFLAG32()),
-                                   mkU32(0))),
-                        mkU8(ARMG_CC_SHIFT_Q)))
-         );
-         putIRegT( rD, mkexpr(res2), condT );
+         IRTemp apsr = synthesise_APSR();
+         putIRegT( rD, mkexpr(apsr), condT );
          DIP("mrs r%u, cpsr\n", rD);
          goto decode_success;
       }
    }
 
+   /* ----------------- (T1) LDREX ----------------- */
+   if (INSN0(15,4) == 0xE85 && INSN1(11,8) == BITS4(1,1,1,1)) {
+      UInt rN   = INSN0(3,0);
+      UInt rT   = INSN1(15,12);
+      UInt imm8 = INSN1(7,0);
+      if (!isBadRegT(rT) && rN != 15) {
+         IRTemp res;
+         // go uncond
+         mk_skip_over_T32_if_cond_is_false( condT );
+         // now uncond
+         res = newTemp(Ity_I32);
+         stmt( IRStmt_LLSC(Iend_LE,
+                           res,
+                           binop(Iop_Add32, getIRegT(rN), mkU32(imm8 * 4)),
+                           NULL/*this is a load*/ ));
+         putIRegT(rT, mkexpr(res), IRTemp_INVALID);
+         DIP("ldrex r%u, [r%u, #+%u]\n", rT, rN, imm8 * 4);
+         goto decode_success;
+      }
+   }
+
+   /* ----------------- (T1) STREX ----------------- */
+   if (INSN0(15,4) == 0xE84) {
+      UInt rN   = INSN0(3,0);
+      UInt rT   = INSN1(15,12);
+      UInt rD   = INSN1(11,8);
+      UInt imm8 = INSN1(7,0);
+      if (!isBadRegT(rD) && !isBadRegT(rT) && rN != 15 
+          && rD != rN && rD != rT) {
+         IRTemp resSC1, resSC32;
+
+         // go uncond
+         mk_skip_over_T32_if_cond_is_false( condT );
+         // now uncond
+
+         /* Ok, now we're unconditional.  Do the store. */
+         resSC1 = newTemp(Ity_I1);
+         stmt( IRStmt_LLSC(Iend_LE,
+                           resSC1,
+                           binop(Iop_Add32, getIRegT(rN), mkU32(imm8 * 4)),
+                           getIRegT(rT)) );
+
+         /* Set rD to 1 on failure, 0 on success.  Currently we have
+            resSC1 == 0 on failure, 1 on success. */
+         resSC32 = newTemp(Ity_I32);
+         assign(resSC32,
+                unop(Iop_1Uto32, unop(Iop_Not1, mkexpr(resSC1))));
+
+         putIRegT(rD, mkexpr(resSC32), IRTemp_INVALID);
+         DIP("strex r%u, r%u, [r%u, #+%u]\n", rD, rT, rN, imm8 * 4);
+         goto decode_success;
+      }
+   }
+
+   /* -------------- v7 barrier insns -------------- */
+   if (INSN0(15,0) == 0xF3BF && (INSN1(15,0) & 0xFF00) == 0x8F00) {
+      /* XXX this isn't really right, is it?  The generated IR does
+         them unconditionally.  I guess it doesn't matter since it
+         doesn't do any harm to do them even when the guarding
+         condition is false -- it's just a performance loss. */
+      switch (INSN1(7,0)) {
+         case 0x4F: /* DSB sy */
+         case 0x4E: /* DSB st */
+         case 0x4B: /* DSB ish */
+         case 0x4A: /* DSB ishst */
+         case 0x47: /* DSB nsh */
+         case 0x46: /* DSB nshst */
+         case 0x43: /* DSB osh */
+         case 0x42: /* DSB oshst */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("DSB\n");
+            goto decode_success;
+         case 0x5F: /* DMB sy */
+         case 0x5E: /* DMB st */
+         case 0x5B: /* DMB ish */
+         case 0x5A: /* DMB ishst */
+         case 0x57: /* DMB nsh */
+         case 0x56: /* DMB nshst */
+         case 0x53: /* DMB osh */
+         case 0x52: /* DMB oshst */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("DMB\n");
+            goto decode_success;
+         case 0x6F: /* ISB */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("ISB\n");
+            goto decode_success;
+         default:
+            break;
+      }
+   }
+
+   /* -------------- read CP15 TPIDRURO register ------------- */
+   /* mrc     p15, 0,  r0, c13, c0, 3  up to
+      mrc     p15, 0, r14, c13, c0, 3
+   */
+   /* I don't know whether this is really v7-only.  But anyway, we
+      have to support it since arm-linux uses TPIDRURO as a thread
+      state register. */
+   
+   if ((INSN0(15,0) == 0xEE1D) && (INSN1(11,0) == 0x0F70)) {
+      UInt rD = INSN1(15,12);
+      if (!isBadRegT(rD)) {
+         putIRegT(rD, IRExpr_Get(OFFB_TPIDRURO, Ity_I32), IRTemp_INVALID);
+         DIP("mrc p15,0, r%u, c13, c0, 3\n", rD);
+         goto decode_success;
+      }
+      /* fall through */
+   }
+
+   /* ------------------- NOP ------------------ */
+   if (INSN0(15,0) == 0xF3AF && INSN1(15,0) == 0x8000) {
+      DIP("nop\n");
+      goto decode_success;
+   }
+
    /* ----------------------------------------------------------- */
    /* -- VFP (CP 10, CP 11) instructions (in Thumb mode)       -- */
    /* ----------------------------------------------------------- */
@@ -15137,11 +17819,25 @@ DisResult disInstr_THUMB_WRK (
    /* -- NEON instructions (in Thumb mode)                     -- */
    /* ----------------------------------------------------------- */
 
+   if (archinfo->hwcaps & VEX_HWCAPS_ARM_NEON) {
+      UInt insn32 = (INSN0(15,0) << 16) | INSN1(15,0);
+      Bool ok_neon = decode_NEON_instruction(
+                        &dres, insn32, condT, True/*isT*/
+                     );
+      if (ok_neon)
+         goto decode_success;
+   }
+
+   /* ----------------------------------------------------------- */
+   /* -- v6 media instructions (in Thumb mode)                 -- */
+   /* ----------------------------------------------------------- */
+
    { UInt insn32 = (INSN0(15,0) << 16) | INSN1(15,0);
-     Bool ok_neon = decode_NEON_instruction(
-                       &dres, insn32, condT, True/*isT*/
-                    );
-     if (ok_neon)
+     Bool ok_v6m = decode_V6MEDIA_instruction(
+                      &dres, insn32, condT, ARMCondAL/*bogus*/,
+                      True/*isT*/
+                   );
+     if (ok_v6m)
         goto decode_success;
    }
 
@@ -15196,7 +17892,7 @@ DisResult disInstr_THUMB_WRK (
          assert here. */
       vassert(dres.whatNext == Dis_Continue);
       vassert(irsb->next == NULL);
-      vassert(irsb->jumpkind = Ijk_Boring);
+      vassert(irsb->jumpkind == Ijk_Boring);
       /* If r15 is unconditionally written, terminate the block by
          jumping to it.  If it's conditionally written, still
          terminate the block (a shame, but we can't do side exits to
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_bb_to_IR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_bb_to_IR.c
index c2be377db..1e59c70e0 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_bb_to_IR.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_bb_to_IR.c
@@ -42,33 +42,60 @@
 
 
 /* Forwards .. */
-__attribute__((regparm(2)))
+VEX_REGPARM(2)
 static UInt genericg_compute_checksum_4al ( HWord first_w32, HWord n_w32s );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_1 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_2 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_3 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_4 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_5 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_6 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_7 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_8 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_9 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_10 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_11 ( HWord first_w32 );
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_12 ( HWord first_w32 );
 
+VEX_REGPARM(2)
+static ULong genericg_compute_checksum_8al ( HWord first_w64, HWord n_w64s );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_1 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_2 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_3 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_4 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_5 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_6 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_7 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_8 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_9 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_10 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_11 ( HWord first_w64 );
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_12 ( HWord first_w64 );
+
 /* Small helpers */
 static Bool const_False ( void* callback_opaque, Addr64 a ) { 
    return False; 
@@ -173,16 +200,14 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
               : IRConst_U64(guest_IP_bbstart);
    }
 
-   /* If asked to make a self-checking translation, leave 5 spaces
-      in which to put the check statements.  We'll fill them in later
-      when we know the length and adler32 of the area to check. */
+   /* If asked to make a self-checking translation, leave 15 spaces in
+      which to put the check statements (up to 3 extents, and 5 stmts
+      required for each).  We'll fill them in later when we know the
+      extents and checksums of the areas to check. */
    if (do_self_check) {
       selfcheck_idx = irsb->stmts_used;
-      addStmtToIRSB( irsb, IRStmt_NoOp() );
-      addStmtToIRSB( irsb, IRStmt_NoOp() );
-      addStmtToIRSB( irsb, IRStmt_NoOp() );
-      addStmtToIRSB( irsb, IRStmt_NoOp() );
-      addStmtToIRSB( irsb, IRStmt_NoOp() );
+      for (i = 0; i < 3 * 5; i++)
+         addStmtToIRSB( irsb, IRStmt_NoOp() );
    }
 
    /* If the caller supplied a function to add its own preamble, use
@@ -208,11 +233,6 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
       resteerOK 
          = toBool(
               n_instrs < vex_control.guest_chase_thresh
-              /* If making self-checking translations, don't chase
-                 .. it makes the checks too complicated.  We only want
-                 to scan just one sequence of bytes in the check, not
-                 a whole bunch. */
-              && !do_self_check
               /* we can't afford to have a resteer once we're on the
                  last extent slot. */
               && vge->n_used < 3
@@ -241,8 +261,21 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
 
       /* Add an instruction-mark statement.  We won't know until after
          disassembling the instruction how long it instruction is, so
-         just put in a zero length and we'll fix it up later. */
-      addStmtToIRSB( irsb, IRStmt_IMark( guest_IP_curr_instr, 0 ));
+         just put in a zero length and we'll fix it up later.
+
+         On ARM, the least significant bit of the instr address
+         distinguishes ARM vs Thumb instructions.  All instructions
+         actually start on at least 2-aligned addresses.  So we need
+         to ignore the bottom bit of the insn address when forming the
+         IMark.  For more details of this convention, see comments on
+         definition of guest_R15 in libvex_guest_arm.h. */
+      addStmtToIRSB( irsb,
+                     IRStmt_IMark( arch_guest == VexArchARM
+                                      ? (guest_IP_curr_instr & ~(Addr64)1)
+                                      : guest_IP_curr_instr,
+                                   0
+                     )
+      );
 
       /* for the first insn, the dispatch loop will have set
          %IP, but for all the others we have to do it ourselves. */
@@ -401,101 +434,167 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
    */
    if (do_self_check) {
 
-      UInt     len2check, expected32;
+      Addr64   base2check;
+      UInt     len2check;
+      HWord    expectedhW;
       IRTemp   tistart_tmp, tilen_tmp;
-      UInt     (*fn_generic)(HWord, HWord) __attribute__((regparm(2)));
-      UInt     (*fn_spec)(HWord) __attribute__((regparm(1)));
+      HWord    VEX_REGPARM(2) (*fn_generic)(HWord, HWord);
+      HWord    VEX_REGPARM(1) (*fn_spec)(HWord);
       HChar*   nm_generic;
       HChar*   nm_spec;
       HWord    fn_generic_entry = 0;
       HWord    fn_spec_entry = 0;
-
-      vassert(vge->n_used == 1);
-      len2check = vge->len[0];
-
-      /* stay sane */
-      vassert(len2check >= 0 && len2check < 1000/*arbitrary*/);
-
-      /* Skip the check if the translation involved zero bytes */
-      if (len2check > 0) {
-         HWord first_w32 = ((HWord)guest_code) & ~(HWord)3;
-         HWord last_w32  = (((HWord)guest_code) + len2check - 1) & ~(HWord)3;
-         vassert(first_w32 <= last_w32);
-         HWord w32_diff = last_w32 - first_w32;
-         vassert(0 == (w32_diff & 3));
-         HWord w32s_to_check = (w32_diff + 4) / 4;
-         vassert(w32s_to_check > 0 && w32s_to_check < 1004/*arbitrary*//4);
+      UInt     host_word_szB = sizeof(HWord);
+      IRType   host_word_type = Ity_INVALID;
+
+      if (host_word_szB == 4) host_word_type = Ity_I32;
+      if (host_word_szB == 8) host_word_type = Ity_I64;
+      vassert(host_word_type != Ity_INVALID);
+
+      vassert(vge->n_used >= 1 && vge->n_used <= 3);
+      for (i = 0; i < vge->n_used; i++) {
+
+         /* the extent we're generating a check for */
+         base2check = vge->base[i];
+         len2check  = vge->len[i];
+
+         /* stay sane */
+         vassert(len2check >= 0 && len2check < 1000/*arbitrary*/);
+
+         /* Skip the check if the translation involved zero bytes */
+         if (len2check == 0)
+            continue;
+
+         HWord first_hW = ((HWord)base2check)
+                          & ~(HWord)(host_word_szB-1);
+         HWord last_hW  = (((HWord)base2check) + len2check - 1)
+                          & ~(HWord)(host_word_szB-1);
+         vassert(first_hW <= last_hW);
+         HWord hW_diff = last_hW - first_hW;
+         vassert(0 == (hW_diff & (host_word_szB-1)));
+         HWord hWs_to_check = (hW_diff + host_word_szB) / host_word_szB;
+         vassert(hWs_to_check > 0
+                 && hWs_to_check < 1004/*arbitrary*/ / host_word_szB);
 
          /* vex_printf("%lx %lx  %ld\n", first_w32, last_w32, w32s_to_check); */
 
-         fn_generic =  genericg_compute_checksum_4al;
-         nm_generic = "genericg_compute_checksum_4al";
+         if (host_word_szB == 8) {
+            fn_generic =  (VEX_REGPARM(2) HWord(*)(HWord, HWord))
+                          genericg_compute_checksum_8al;
+            nm_generic = "genericg_compute_checksum_8al";
+         } else {
+            fn_generic =  (VEX_REGPARM(2) HWord(*)(HWord, HWord))
+                          genericg_compute_checksum_4al;
+            nm_generic = "genericg_compute_checksum_4al";
+         }
+
          fn_spec = NULL;
          nm_spec = NULL;
 
-         switch (w32s_to_check) {
-             case 1:  fn_spec =  genericg_compute_checksum_4al_1;
-                      nm_spec = "genericg_compute_checksum_4al_1"; break;
-             case 2:  fn_spec =  genericg_compute_checksum_4al_2;
-                      nm_spec = "genericg_compute_checksum_4al_2"; break;
-             case 3:  fn_spec =  genericg_compute_checksum_4al_3;
-                      nm_spec = "genericg_compute_checksum_4al_3"; break;
-             case 4:  fn_spec =  genericg_compute_checksum_4al_4;
-                      nm_spec = "genericg_compute_checksum_4al_4"; break;
-             case 5:  fn_spec =  genericg_compute_checksum_4al_5;
-                      nm_spec = "genericg_compute_checksum_4al_5"; break;
-             case 6:  fn_spec =  genericg_compute_checksum_4al_6;
-                      nm_spec = "genericg_compute_checksum_4al_6"; break;
-             case 7:  fn_spec =  genericg_compute_checksum_4al_7;
-                      nm_spec = "genericg_compute_checksum_4al_7"; break;
-             case 8:  fn_spec =  genericg_compute_checksum_4al_8;
-                      nm_spec = "genericg_compute_checksum_4al_8"; break;
-             case 9:  fn_spec =  genericg_compute_checksum_4al_9;
-                      nm_spec = "genericg_compute_checksum_4al_9"; break;
-             case 10: fn_spec =  genericg_compute_checksum_4al_10;
-                      nm_spec = "genericg_compute_checksum_4al_10"; break;
-             case 11: fn_spec =  genericg_compute_checksum_4al_11;
-                      nm_spec = "genericg_compute_checksum_4al_11"; break;
-             case 12: fn_spec =  genericg_compute_checksum_4al_12;
-                      nm_spec = "genericg_compute_checksum_4al_12"; break;
-             default: break;
+         if (host_word_szB == 8) {
+            HChar* nm = NULL;
+            ULong  VEX_REGPARM(1) (*fn)(HWord)  = NULL;
+            switch (hWs_to_check) {
+               case 1:  fn =  genericg_compute_checksum_8al_1;
+                        nm = "genericg_compute_checksum_8al_1"; break;
+               case 2:  fn =  genericg_compute_checksum_8al_2;
+                        nm = "genericg_compute_checksum_8al_2"; break;
+               case 3:  fn =  genericg_compute_checksum_8al_3;
+                        nm = "genericg_compute_checksum_8al_3"; break;
+               case 4:  fn =  genericg_compute_checksum_8al_4;
+                        nm = "genericg_compute_checksum_8al_4"; break;
+               case 5:  fn =  genericg_compute_checksum_8al_5;
+                        nm = "genericg_compute_checksum_8al_5"; break;
+               case 6:  fn =  genericg_compute_checksum_8al_6;
+                        nm = "genericg_compute_checksum_8al_6"; break;
+               case 7:  fn =  genericg_compute_checksum_8al_7;
+                        nm = "genericg_compute_checksum_8al_7"; break;
+               case 8:  fn =  genericg_compute_checksum_8al_8;
+                        nm = "genericg_compute_checksum_8al_8"; break;
+               case 9:  fn =  genericg_compute_checksum_8al_9;
+                        nm = "genericg_compute_checksum_8al_9"; break;
+               case 10: fn =  genericg_compute_checksum_8al_10;
+                        nm = "genericg_compute_checksum_8al_10"; break;
+               case 11: fn =  genericg_compute_checksum_8al_11;
+                        nm = "genericg_compute_checksum_8al_11"; break;
+               case 12: fn =  genericg_compute_checksum_8al_12;
+                        nm = "genericg_compute_checksum_8al_12"; break;
+               default: break;
+            }
+            fn_spec = (VEX_REGPARM(1) HWord(*)(HWord)) fn;
+            nm_spec = nm;
+         } else {
+            HChar* nm = NULL;
+            UInt   VEX_REGPARM(1) (*fn)(HWord) = NULL;
+            switch (hWs_to_check) {
+               case 1:  fn =  genericg_compute_checksum_4al_1;
+                        nm = "genericg_compute_checksum_4al_1"; break;
+               case 2:  fn =  genericg_compute_checksum_4al_2;
+                        nm = "genericg_compute_checksum_4al_2"; break;
+               case 3:  fn =  genericg_compute_checksum_4al_3;
+                        nm = "genericg_compute_checksum_4al_3"; break;
+               case 4:  fn =  genericg_compute_checksum_4al_4;
+                        nm = "genericg_compute_checksum_4al_4"; break;
+               case 5:  fn =  genericg_compute_checksum_4al_5;
+                        nm = "genericg_compute_checksum_4al_5"; break;
+               case 6:  fn =  genericg_compute_checksum_4al_6;
+                        nm = "genericg_compute_checksum_4al_6"; break;
+               case 7:  fn =  genericg_compute_checksum_4al_7;
+                        nm = "genericg_compute_checksum_4al_7"; break;
+               case 8:  fn =  genericg_compute_checksum_4al_8;
+                        nm = "genericg_compute_checksum_4al_8"; break;
+               case 9:  fn =  genericg_compute_checksum_4al_9;
+                        nm = "genericg_compute_checksum_4al_9"; break;
+               case 10: fn =  genericg_compute_checksum_4al_10;
+                        nm = "genericg_compute_checksum_4al_10"; break;
+               case 11: fn =  genericg_compute_checksum_4al_11;
+                        nm = "genericg_compute_checksum_4al_11"; break;
+               case 12: fn =  genericg_compute_checksum_4al_12;
+                        nm = "genericg_compute_checksum_4al_12"; break;
+               default: break;
+            }
+            fn_spec = (VEX_REGPARM(1) HWord(*)(HWord))fn;
+            nm_spec = nm;
          }
 
-         expected32 = fn_generic( first_w32, w32s_to_check );
+         expectedhW = fn_generic( first_hW, hWs_to_check );
          /* If we got a specialised version, check it produces the same
             result as the generic version! */
          if (fn_spec) {
             vassert(nm_spec);
-            vassert(expected32 == fn_spec( first_w32 ));
-      } else {
+            vassert(expectedhW == fn_spec( first_hW ));
+         } else {
             vassert(!nm_spec);
-      }
+         }
 
-      /* Set TISTART and TILEN.  These will describe to the despatcher
-         the area of guest code to invalidate should we exit with a
-         self-check failure. */
+         /* Set TISTART and TILEN.  These will describe to the despatcher
+            the area of guest code to invalidate should we exit with a
+            self-check failure. */
 
-      tistart_tmp = newIRTemp(irsb->tyenv, guest_word_type);
-      tilen_tmp   = newIRTemp(irsb->tyenv, guest_word_type);
+         tistart_tmp = newIRTemp(irsb->tyenv, guest_word_type);
+         tilen_tmp   = newIRTemp(irsb->tyenv, guest_word_type);
 
-      irsb->stmts[selfcheck_idx+0]
-         = IRStmt_WrTmp(tistart_tmp, IRExpr_Const(guest_IP_bbstart_IRConst) );
+         IRConst* base2check_IRConst
+            = guest_word_type==Ity_I32 ? IRConst_U32(toUInt(base2check))
+                                       : IRConst_U64(base2check);
+         IRConst* len2check_IRConst
+            = guest_word_type==Ity_I32 ? IRConst_U32(len2check)
+                                       : IRConst_U64(len2check);
 
-      irsb->stmts[selfcheck_idx+1]
-         = IRStmt_WrTmp(tilen_tmp,
-                        guest_word_type==Ity_I32 
-                           ? IRExpr_Const(IRConst_U32(len2check)) 
-                           : IRExpr_Const(IRConst_U64(len2check))
-           );
+         irsb->stmts[selfcheck_idx + i * 5 + 0]
+            = IRStmt_WrTmp(tistart_tmp, IRExpr_Const(base2check_IRConst) );
+
+         irsb->stmts[selfcheck_idx + i * 5 + 1]
+            = IRStmt_WrTmp(tilen_tmp, IRExpr_Const(len2check_IRConst) );
 
-      irsb->stmts[selfcheck_idx+2]
-         = IRStmt_Put( offB_TISTART, IRExpr_RdTmp(tistart_tmp) );
+         irsb->stmts[selfcheck_idx + i * 5 + 2]
+            = IRStmt_Put( offB_TISTART, IRExpr_RdTmp(tistart_tmp) );
 
-      irsb->stmts[selfcheck_idx+3]
-         = IRStmt_Put( offB_TILEN, IRExpr_RdTmp(tilen_tmp) );
+         irsb->stmts[selfcheck_idx + i * 5 + 3]
+            = IRStmt_Put( offB_TILEN, IRExpr_RdTmp(tilen_tmp) );
 
          /* Generate the entry point descriptors */
-      if (abiinfo_both->host_ppc_calls_use_fndescrs) {
+         if (abiinfo_both->host_ppc_calls_use_fndescrs) {
             HWord* descr = (HWord*)fn_generic;
             fn_generic_entry = descr[0];
             if (fn_spec) {
@@ -508,7 +607,7 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
             fn_generic_entry = (HWord)fn_generic;
             if (fn_spec) {
                fn_spec_entry = (HWord)fn_spec;
-      } else {
+            } else {
                fn_spec_entry = (HWord)NULL;
             }
          }
@@ -516,34 +615,39 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
          IRExpr* callexpr = NULL;
          if (fn_spec) {
             callexpr = mkIRExprCCall( 
-                          Ity_I32, 1/*regparms*/, 
+                          host_word_type, 1/*regparms*/, 
                           nm_spec, (void*)fn_spec_entry,
                           mkIRExprVec_1(
-                             mkIRExpr_HWord( (HWord)first_w32 )
+                             mkIRExpr_HWord( (HWord)first_hW )
                           )
                        );
          } else {
             callexpr = mkIRExprCCall( 
-                          Ity_I32, 2/*regparms*/, 
+                          host_word_type, 2/*regparms*/, 
                           nm_generic, (void*)fn_generic_entry,
                           mkIRExprVec_2(
-                             mkIRExpr_HWord( (HWord)first_w32 ),
-                             mkIRExpr_HWord( (HWord)w32s_to_check )
+                             mkIRExpr_HWord( (HWord)first_hW ),
+                             mkIRExpr_HWord( (HWord)hWs_to_check )
                           )
                        );
-      }
+         }
 
-      irsb->stmts[selfcheck_idx+4]
-         = IRStmt_Exit( 
-              IRExpr_Binop( 
-                 Iop_CmpNE32, 
+         irsb->stmts[selfcheck_idx + i * 5 + 4]
+            = IRStmt_Exit( 
+                 IRExpr_Binop( 
+                    host_word_type==Ity_I64 ? Iop_CmpNE64 : Iop_CmpNE32,
                     callexpr,
-                 IRExpr_Const(IRConst_U32(expected32))
-              ),
-              Ijk_TInval,
-              guest_IP_bbstart_IRConst
-           );
-   }
+                       host_word_type==Ity_I64
+                          ? IRExpr_Const(IRConst_U64(expectedhW))
+                          : IRExpr_Const(IRConst_U32(expectedhW))
+                 ),
+                 Ijk_TInval,
+                 /* Where we must restart if there's a failure: at the
+                    first extent, regardless of which extent the
+                    failure actually happened in. */
+                 guest_IP_bbstart_IRConst
+              );
+      }
    }
 
    return irsb;
@@ -558,22 +662,22 @@ IRSB* bb_to_IR ( /*OUT*/VexGuestExtents* vge,
 /* CALLED FROM GENERATED CODE */
 
 /* Compute a checksum of host memory at [addr .. addr+len-1], as fast
-   as possible.  The _4al_4plus version is assured that the request is
-   for 4-aligned memory and for a block of 4 or more long, whilst the
-   _generic version must be able to handle any alignment, and lengths
-   down to zero too.  This fn is called once for every use of a
-   self-checking translation, so it needs to be as fast as
-   possible. */
+   as possible.  All _4al versions assume that the supplied address is
+   4 aligned.  All length values are in 4-byte chunks.  These fns
+   arecalled once for every use of a self-checking translation, so
+   they needs to be as fast as possible. */
+
+/* --- 32-bit versions, used only on 32-bit hosts --- */
 
 static inline UInt ROL32 ( UInt w, Int n ) {
    w = (w << n) | (w >> (32-n));
    return w;
 }
 
-__attribute((regparm(2)))
+VEX_REGPARM(2)
 static UInt genericg_compute_checksum_4al ( HWord first_w32, HWord n_w32s )
 {
-   UInt sum1 = 0, sum2 = 0;
+   UInt  sum1 = 0, sum2 = 0;
    UInt* p = (UInt*)first_w32;
    /* unrolled */
    while (n_w32s >= 4) {
@@ -598,7 +702,7 @@ static UInt genericg_compute_checksum_4al ( HWord first_w32, HWord n_w32s )
 
 /* Specialised versions of the above function */
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_1 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -609,10 +713,10 @@ static UInt genericg_compute_checksum_4al_1 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_2 ( HWord first_w32 )
 {
-   UInt sum1 = 0, sum2 = 0;
+   UInt  sum1 = 0, sum2 = 0;
    UInt* p = (UInt*)first_w32;
    UInt  w;
    w = p[0];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
@@ -622,7 +726,7 @@ static UInt genericg_compute_checksum_4al_2 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_3 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -637,21 +741,21 @@ static UInt genericg_compute_checksum_4al_3 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_4 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
    UInt* p = (UInt*)first_w32;
-      UInt  w;
-      w = p[0];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
-      w = p[1];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
-      w = p[2];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
-      w = p[3];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
-      sum1 ^= sum2;
+   UInt  w;
+   w = p[0];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
+   w = p[1];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
+   w = p[2];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
+   w = p[3];  sum1 = ROL32(sum1 ^ w, 31);  sum2 += w;
+   sum1 ^= sum2;
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_5 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -667,7 +771,7 @@ static UInt genericg_compute_checksum_4al_5 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_6 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -685,7 +789,7 @@ static UInt genericg_compute_checksum_4al_6 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_7 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -705,7 +809,7 @@ static UInt genericg_compute_checksum_4al_7 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_8 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -724,7 +828,7 @@ static UInt genericg_compute_checksum_4al_8 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_9 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -745,7 +849,7 @@ static UInt genericg_compute_checksum_4al_9 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_10 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -768,7 +872,7 @@ static UInt genericg_compute_checksum_4al_10 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_11 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -793,7 +897,7 @@ static UInt genericg_compute_checksum_4al_11 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
-__attribute__((regparm(1)))
+VEX_REGPARM(1)
 static UInt genericg_compute_checksum_4al_12 ( HWord first_w32 )
 {
    UInt  sum1 = 0, sum2 = 0;
@@ -817,6 +921,261 @@ static UInt genericg_compute_checksum_4al_12 ( HWord first_w32 )
    return sum1 + sum2;
 }
 
+
+/* --- 64-bit versions, used only on 64-bit hosts --- */
+
+static inline ULong ROL64 ( ULong w, Int n ) {
+   w = (w << n) | (w >> (64-n));
+   return w;
+}
+
+VEX_REGPARM(2)
+static ULong genericg_compute_checksum_8al ( HWord first_w64, HWord n_w64s )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   /* unrolled */
+   while (n_w64s >= 4) {
+      ULong  w;
+      w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+      w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+      w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+      w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+      p += 4;
+      n_w64s -= 4;
+      sum1 ^= sum2;
+   }
+   while (n_w64s >= 1) {
+      ULong  w;
+      w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+      p += 1;
+      n_w64s -= 1;
+      sum1 ^= sum2;
+   }
+   return sum1 + sum2;
+}
+
+/* Specialised versions of the above function */
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_1 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_2 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_3 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_4 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_5 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_6 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_7 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_8 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[7];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_9 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[7];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[8];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_10 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[7];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[8];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[9];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_11 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[7];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[8];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[9];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[10]; sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
+VEX_REGPARM(1)
+static ULong genericg_compute_checksum_8al_12 ( HWord first_w64 )
+{
+   ULong  sum1 = 0, sum2 = 0;
+   ULong* p = (ULong*)first_w64;
+   ULong  w;
+   w = p[0];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[1];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[2];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[3];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[4];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[5];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[6];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[7];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   w = p[8];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[9];  sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[10]; sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   w = p[11]; sum1 = ROL64(sum1 ^ w, 63);  sum2 += w;
+   sum1 ^= sum2;
+   return sum1 + sum2;
+}
+
 /*--------------------------------------------------------------------*/
 /*--- end                                 guest_generic_bb_to_IR.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_x87.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_x87.c
index 4204893bd..306f66017 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_x87.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_generic_x87.c
@@ -715,6 +715,7 @@ Bool compute_PCMPxSTRx ( /*OUT*/V128* resV,
       even if they would probably work.  Life is too short to have
       unvalidated cases in the code base. */
    switch (imm8) {
+      case 0x00:
       case 0x02: case 0x08: case 0x0A: case 0x0C: case 0x12:
       case 0x1A: case 0x3A: case 0x44: case 0x4A:
          break;
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_helpers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_helpers.c
index e056a6532..cdbd00c72 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_helpers.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_helpers.c
@@ -154,11 +154,17 @@ void ppc32g_dirtyhelper_LVS ( VexGuestPPC32State* gst,
 void ppc64g_dirtyhelper_LVS ( VexGuestPPC64State* gst,
                               UInt vD_off, UInt sh, UInt shift_right )
 {
-  static
-  UChar ref[32] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                    0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
-                    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-                    0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F };
+  UChar ref[32];
+  ULong i;
+  /* ref[] used to be a static const array, but this doesn't work on
+     ppc64 because VEX doesn't load the TOC pointer for the call here,
+     and so we wind up picking up some totally random other data.
+     (It's a wonder we don't segfault.)  So, just to be clear, this
+     "fix" (vex r2073) is really a kludgearound for the fact that
+     VEX's 64-bit ppc code generation doesn't provide a valid TOC
+     pointer for helper function calls.  Ick.  (Bug 250038) */
+  for (i = 0; i < 32; i++) ref[i] = i;
+
   U128* pU128_src;
   U128* pU128_dst;
 
@@ -379,74 +385,74 @@ void LibVEX_GuestPPC32_initialise ( /*OUT*/VexGuestPPC32State* vex_state )
    vex_state->guest_GPR30 = 0;
    vex_state->guest_GPR31 = 0;
 
-   vex_state->guest_FPR0  = 0;
-   vex_state->guest_FPR1  = 0;
-   vex_state->guest_FPR2  = 0;
-   vex_state->guest_FPR3  = 0;
-   vex_state->guest_FPR4  = 0;
-   vex_state->guest_FPR5  = 0;
-   vex_state->guest_FPR6  = 0;
-   vex_state->guest_FPR7  = 0;
-   vex_state->guest_FPR8  = 0;
-   vex_state->guest_FPR9  = 0;
-   vex_state->guest_FPR10 = 0;
-   vex_state->guest_FPR11 = 0;
-   vex_state->guest_FPR12 = 0;
-   vex_state->guest_FPR13 = 0;
-   vex_state->guest_FPR14 = 0;
-   vex_state->guest_FPR15 = 0;
-   vex_state->guest_FPR16 = 0;
-   vex_state->guest_FPR17 = 0;
-   vex_state->guest_FPR18 = 0;
-   vex_state->guest_FPR19 = 0;
-   vex_state->guest_FPR20 = 0;
-   vex_state->guest_FPR21 = 0;
-   vex_state->guest_FPR22 = 0;
-   vex_state->guest_FPR23 = 0;
-   vex_state->guest_FPR24 = 0;
-   vex_state->guest_FPR25 = 0;
-   vex_state->guest_FPR26 = 0;
-   vex_state->guest_FPR27 = 0;
-   vex_state->guest_FPR28 = 0;
-   vex_state->guest_FPR29 = 0;
-   vex_state->guest_FPR30 = 0;
-   vex_state->guest_FPR31 = 0;
 
    /* Initialise the vector state. */
 #  define VECZERO(_vr) _vr[0]=_vr[1]=_vr[2]=_vr[3] = 0;
 
-   VECZERO(vex_state->guest_VR0 );
-   VECZERO(vex_state->guest_VR1 );
-   VECZERO(vex_state->guest_VR2 );
-   VECZERO(vex_state->guest_VR3 );
-   VECZERO(vex_state->guest_VR4 );
-   VECZERO(vex_state->guest_VR5 );
-   VECZERO(vex_state->guest_VR6 );
-   VECZERO(vex_state->guest_VR7 );
-   VECZERO(vex_state->guest_VR8 );
-   VECZERO(vex_state->guest_VR9 );
-   VECZERO(vex_state->guest_VR10);
-   VECZERO(vex_state->guest_VR11);
-   VECZERO(vex_state->guest_VR12);
-   VECZERO(vex_state->guest_VR13);
-   VECZERO(vex_state->guest_VR14);
-   VECZERO(vex_state->guest_VR15);
-   VECZERO(vex_state->guest_VR16);
-   VECZERO(vex_state->guest_VR17);
-   VECZERO(vex_state->guest_VR18);
-   VECZERO(vex_state->guest_VR19);
-   VECZERO(vex_state->guest_VR20);
-   VECZERO(vex_state->guest_VR21);
-   VECZERO(vex_state->guest_VR22);
-   VECZERO(vex_state->guest_VR23);
-   VECZERO(vex_state->guest_VR24);
-   VECZERO(vex_state->guest_VR25);
-   VECZERO(vex_state->guest_VR26);
-   VECZERO(vex_state->guest_VR27);
-   VECZERO(vex_state->guest_VR28);
-   VECZERO(vex_state->guest_VR29);
-   VECZERO(vex_state->guest_VR30);
-   VECZERO(vex_state->guest_VR31);
+   VECZERO(vex_state->guest_VSR0 );
+   VECZERO(vex_state->guest_VSR1 );
+   VECZERO(vex_state->guest_VSR2 );
+   VECZERO(vex_state->guest_VSR3 );
+   VECZERO(vex_state->guest_VSR4 );
+   VECZERO(vex_state->guest_VSR5 );
+   VECZERO(vex_state->guest_VSR6 );
+   VECZERO(vex_state->guest_VSR7 );
+   VECZERO(vex_state->guest_VSR8 );
+   VECZERO(vex_state->guest_VSR9 );
+   VECZERO(vex_state->guest_VSR10);
+   VECZERO(vex_state->guest_VSR11);
+   VECZERO(vex_state->guest_VSR12);
+   VECZERO(vex_state->guest_VSR13);
+   VECZERO(vex_state->guest_VSR14);
+   VECZERO(vex_state->guest_VSR15);
+   VECZERO(vex_state->guest_VSR16);
+   VECZERO(vex_state->guest_VSR17);
+   VECZERO(vex_state->guest_VSR18);
+   VECZERO(vex_state->guest_VSR19);
+   VECZERO(vex_state->guest_VSR20);
+   VECZERO(vex_state->guest_VSR21);
+   VECZERO(vex_state->guest_VSR22);
+   VECZERO(vex_state->guest_VSR23);
+   VECZERO(vex_state->guest_VSR24);
+   VECZERO(vex_state->guest_VSR25);
+   VECZERO(vex_state->guest_VSR26);
+   VECZERO(vex_state->guest_VSR27);
+   VECZERO(vex_state->guest_VSR28);
+   VECZERO(vex_state->guest_VSR29);
+   VECZERO(vex_state->guest_VSR30);
+   VECZERO(vex_state->guest_VSR31);
+   VECZERO(vex_state->guest_VSR32);
+   VECZERO(vex_state->guest_VSR33);
+   VECZERO(vex_state->guest_VSR34);
+   VECZERO(vex_state->guest_VSR35);
+   VECZERO(vex_state->guest_VSR36);
+   VECZERO(vex_state->guest_VSR37);
+   VECZERO(vex_state->guest_VSR38);
+   VECZERO(vex_state->guest_VSR39);
+   VECZERO(vex_state->guest_VSR40);
+   VECZERO(vex_state->guest_VSR41);
+   VECZERO(vex_state->guest_VSR42);
+   VECZERO(vex_state->guest_VSR43);
+   VECZERO(vex_state->guest_VSR44);
+   VECZERO(vex_state->guest_VSR45);
+   VECZERO(vex_state->guest_VSR46);
+   VECZERO(vex_state->guest_VSR47);
+   VECZERO(vex_state->guest_VSR48);
+   VECZERO(vex_state->guest_VSR49);
+   VECZERO(vex_state->guest_VSR50);
+   VECZERO(vex_state->guest_VSR51);
+   VECZERO(vex_state->guest_VSR52);
+   VECZERO(vex_state->guest_VSR53);
+   VECZERO(vex_state->guest_VSR54);
+   VECZERO(vex_state->guest_VSR55);
+   VECZERO(vex_state->guest_VSR56);
+   VECZERO(vex_state->guest_VSR57);
+   VECZERO(vex_state->guest_VSR58);
+   VECZERO(vex_state->guest_VSR59);
+   VECZERO(vex_state->guest_VSR60);
+   VECZERO(vex_state->guest_VSR61);
+   VECZERO(vex_state->guest_VSR62);
+   VECZERO(vex_state->guest_VSR63);
 
 #  undef VECZERO
 
@@ -536,74 +542,73 @@ void LibVEX_GuestPPC64_initialise ( /*OUT*/VexGuestPPC64State* vex_state )
    vex_state->guest_GPR30 = 0;
    vex_state->guest_GPR31 = 0;
 
-   vex_state->guest_FPR0  = 0;
-   vex_state->guest_FPR1  = 0;
-   vex_state->guest_FPR2  = 0;
-   vex_state->guest_FPR3  = 0;
-   vex_state->guest_FPR4  = 0;
-   vex_state->guest_FPR5  = 0;
-   vex_state->guest_FPR6  = 0;
-   vex_state->guest_FPR7  = 0;
-   vex_state->guest_FPR8  = 0;
-   vex_state->guest_FPR9  = 0;
-   vex_state->guest_FPR10 = 0;
-   vex_state->guest_FPR11 = 0;
-   vex_state->guest_FPR12 = 0;
-   vex_state->guest_FPR13 = 0;
-   vex_state->guest_FPR14 = 0;
-   vex_state->guest_FPR15 = 0;
-   vex_state->guest_FPR16 = 0;
-   vex_state->guest_FPR17 = 0;
-   vex_state->guest_FPR18 = 0;
-   vex_state->guest_FPR19 = 0;
-   vex_state->guest_FPR20 = 0;
-   vex_state->guest_FPR21 = 0;
-   vex_state->guest_FPR22 = 0;
-   vex_state->guest_FPR23 = 0;
-   vex_state->guest_FPR24 = 0;
-   vex_state->guest_FPR25 = 0;
-   vex_state->guest_FPR26 = 0;
-   vex_state->guest_FPR27 = 0;
-   vex_state->guest_FPR28 = 0;
-   vex_state->guest_FPR29 = 0;
-   vex_state->guest_FPR30 = 0;
-   vex_state->guest_FPR31 = 0;
-
    /* Initialise the vector state. */
 #  define VECZERO(_vr) _vr[0]=_vr[1]=_vr[2]=_vr[3] = 0;
 
-   VECZERO(vex_state->guest_VR0 );
-   VECZERO(vex_state->guest_VR1 );
-   VECZERO(vex_state->guest_VR2 );
-   VECZERO(vex_state->guest_VR3 );
-   VECZERO(vex_state->guest_VR4 );
-   VECZERO(vex_state->guest_VR5 );
-   VECZERO(vex_state->guest_VR6 );
-   VECZERO(vex_state->guest_VR7 );
-   VECZERO(vex_state->guest_VR8 );
-   VECZERO(vex_state->guest_VR9 );
-   VECZERO(vex_state->guest_VR10);
-   VECZERO(vex_state->guest_VR11);
-   VECZERO(vex_state->guest_VR12);
-   VECZERO(vex_state->guest_VR13);
-   VECZERO(vex_state->guest_VR14);
-   VECZERO(vex_state->guest_VR15);
-   VECZERO(vex_state->guest_VR16);
-   VECZERO(vex_state->guest_VR17);
-   VECZERO(vex_state->guest_VR18);
-   VECZERO(vex_state->guest_VR19);
-   VECZERO(vex_state->guest_VR20);
-   VECZERO(vex_state->guest_VR21);
-   VECZERO(vex_state->guest_VR22);
-   VECZERO(vex_state->guest_VR23);
-   VECZERO(vex_state->guest_VR24);
-   VECZERO(vex_state->guest_VR25);
-   VECZERO(vex_state->guest_VR26);
-   VECZERO(vex_state->guest_VR27);
-   VECZERO(vex_state->guest_VR28);
-   VECZERO(vex_state->guest_VR29);
-   VECZERO(vex_state->guest_VR30);
-   VECZERO(vex_state->guest_VR31);
+   VECZERO(vex_state->guest_VSR0 );
+   VECZERO(vex_state->guest_VSR1 );
+   VECZERO(vex_state->guest_VSR2 );
+   VECZERO(vex_state->guest_VSR3 );
+   VECZERO(vex_state->guest_VSR4 );
+   VECZERO(vex_state->guest_VSR5 );
+   VECZERO(vex_state->guest_VSR6 );
+   VECZERO(vex_state->guest_VSR7 );
+   VECZERO(vex_state->guest_VSR8 );
+   VECZERO(vex_state->guest_VSR9 );
+   VECZERO(vex_state->guest_VSR10);
+   VECZERO(vex_state->guest_VSR11);
+   VECZERO(vex_state->guest_VSR12);
+   VECZERO(vex_state->guest_VSR13);
+   VECZERO(vex_state->guest_VSR14);
+   VECZERO(vex_state->guest_VSR15);
+   VECZERO(vex_state->guest_VSR16);
+   VECZERO(vex_state->guest_VSR17);
+   VECZERO(vex_state->guest_VSR18);
+   VECZERO(vex_state->guest_VSR19);
+   VECZERO(vex_state->guest_VSR20);
+   VECZERO(vex_state->guest_VSR21);
+   VECZERO(vex_state->guest_VSR22);
+   VECZERO(vex_state->guest_VSR23);
+   VECZERO(vex_state->guest_VSR24);
+   VECZERO(vex_state->guest_VSR25);
+   VECZERO(vex_state->guest_VSR26);
+   VECZERO(vex_state->guest_VSR27);
+   VECZERO(vex_state->guest_VSR28);
+   VECZERO(vex_state->guest_VSR29);
+   VECZERO(vex_state->guest_VSR30);
+   VECZERO(vex_state->guest_VSR31);
+   VECZERO(vex_state->guest_VSR32);
+   VECZERO(vex_state->guest_VSR33);
+   VECZERO(vex_state->guest_VSR34);
+   VECZERO(vex_state->guest_VSR35);
+   VECZERO(vex_state->guest_VSR36);
+   VECZERO(vex_state->guest_VSR37);
+   VECZERO(vex_state->guest_VSR38);
+   VECZERO(vex_state->guest_VSR39);
+   VECZERO(vex_state->guest_VSR40);
+   VECZERO(vex_state->guest_VSR41);
+   VECZERO(vex_state->guest_VSR42);
+   VECZERO(vex_state->guest_VSR43);
+   VECZERO(vex_state->guest_VSR44);
+   VECZERO(vex_state->guest_VSR45);
+   VECZERO(vex_state->guest_VSR46);
+   VECZERO(vex_state->guest_VSR47);
+   VECZERO(vex_state->guest_VSR48);
+   VECZERO(vex_state->guest_VSR49);
+   VECZERO(vex_state->guest_VSR50);
+   VECZERO(vex_state->guest_VSR51);
+   VECZERO(vex_state->guest_VSR52);
+   VECZERO(vex_state->guest_VSR53);
+   VECZERO(vex_state->guest_VSR54);
+   VECZERO(vex_state->guest_VSR55);
+   VECZERO(vex_state->guest_VSR56);
+   VECZERO(vex_state->guest_VSR57);
+   VECZERO(vex_state->guest_VSR58);
+   VECZERO(vex_state->guest_VSR59);
+   VECZERO(vex_state->guest_VSR60);
+   VECZERO(vex_state->guest_VSR61);
+   VECZERO(vex_state->guest_VSR62);
+   VECZERO(vex_state->guest_VSR63);
 
 #  undef VECZERO
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_toIR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_toIR.c
index b9b11753e..738fd1396 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_toIR.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_ppc_toIR.c
@@ -1,4 +1,5 @@
 
+
 /*--------------------------------------------------------------------*/
 /*--- begin                                       guest_ppc_toIR.c ---*/
 /*--------------------------------------------------------------------*/
@@ -257,22 +258,52 @@ static UChar ifieldRegDS( UInt instr ) {
    return toUChar( IFIELD( instr, 21, 5 ) );
 }
 
+/* Extract XT (destination register) field, instr[0,25:21] */
+static UChar ifieldRegXT ( UInt instr )
+{
+  UChar upper_bit = toUChar (IFIELD (instr, 0, 1));
+  UChar lower_bits = toUChar (IFIELD (instr, 21, 5));
+  return (upper_bit << 5) | lower_bits;
+}
+
+/* Extract XS (store source register) field, instr[0,25:21] */
+static inline UChar ifieldRegXS ( UInt instr )
+{
+  return ifieldRegXT ( instr );
+}
+
 /* Extract RA (1st source register) field, instr[20:16] */
 static UChar ifieldRegA ( UInt instr ) {
    return toUChar( IFIELD( instr, 16, 5 ) );
 }
 
+/* Extract XA (1st source register) field, instr[2,20:16] */
+static UChar ifieldRegXA ( UInt instr )
+{
+  UChar upper_bit = toUChar (IFIELD (instr, 2, 1));
+  UChar lower_bits = toUChar (IFIELD (instr, 16, 5));
+  return (upper_bit << 5) | lower_bits;
+}
+
 /* Extract RB (2nd source register) field, instr[15:11] */
 static UChar ifieldRegB ( UInt instr ) {
    return toUChar( IFIELD( instr, 11, 5 ) );
 }
 
+/* Extract XB (2nd source register) field, instr[1,15:11] */
+static UChar ifieldRegXB ( UInt instr )
+{
+  UChar upper_bit = toUChar (IFIELD (instr, 1, 1));
+  UChar lower_bits = toUChar (IFIELD (instr, 11, 5));
+  return (upper_bit << 5) | lower_bits;
+}
+
 /* Extract RC (3rd source register) field, instr[10:6] */
 static UChar ifieldRegC ( UInt instr ) {
    return toUChar( IFIELD( instr, 6, 5 ) );
 }
 
-/* Extract 2nd lowest bit, instr[1] */
+/* Extract bit 10, instr[10] */
 static UChar ifieldBIT10 ( UInt instr ) {
    return toUChar( IFIELD( instr, 10, 1 ) );
 }
@@ -297,6 +328,16 @@ static UInt ifieldUIMM26 ( UInt instr ) {
    return instr & 0x3FFFFFF;
 }
 
+/* Extract DM field, instr[9:8] */
+static UChar ifieldDM ( UInt instr ) {
+   return toUChar( IFIELD( instr, 8, 2 ) );
+}
+
+/* Extract SHW field, instr[9:8] */
+static inline UChar ifieldSHW ( UInt instr )
+{
+  return ifieldDM ( instr );
+}
 
 /*------------------------------------------------------------*/
 /*--- Guest-state identifiers                              ---*/
@@ -320,6 +361,7 @@ typedef enum {
 } PPC_GST;
 
 #define MASK_FPSCR_RN   0x3
+#define MASK_FPSCR_FPRF 0x1F000
 #define MASK_VSCR_VALID 0x00010001
 
 
@@ -505,6 +547,12 @@ static IRExpr* mkU64 ( ULong i )
    return IRExpr_Const(IRConst_U64(i));
 }
 
+static IRExpr* mkV128 ( UShort i )
+{
+   vassert(i == 0 || i == 0xffff);
+   return IRExpr_Const(IRConst_V128(i));
+}
+
 /* This generates a normal (non load-linked) load. */
 static IRExpr* loadBE ( IRType ty, IRExpr* addr )
 {
@@ -931,43 +979,44 @@ static void putIReg ( UInt archreg, IRExpr* e )
 }
 
 
+/* Floating point egisters are mapped to VSX registers[0..31]. */
 static Int floatGuestRegOffset ( UInt archreg )
 {
    vassert(archreg < 32);
    
    switch (archreg) {
-   case  0: return offsetofPPCGuestState(guest_FPR0);
-   case  1: return offsetofPPCGuestState(guest_FPR1);
-   case  2: return offsetofPPCGuestState(guest_FPR2);
-   case  3: return offsetofPPCGuestState(guest_FPR3);
-   case  4: return offsetofPPCGuestState(guest_FPR4);
-   case  5: return offsetofPPCGuestState(guest_FPR5);
-   case  6: return offsetofPPCGuestState(guest_FPR6);
-   case  7: return offsetofPPCGuestState(guest_FPR7);
-   case  8: return offsetofPPCGuestState(guest_FPR8);
-   case  9: return offsetofPPCGuestState(guest_FPR9);
-   case 10: return offsetofPPCGuestState(guest_FPR10);
-   case 11: return offsetofPPCGuestState(guest_FPR11);
-   case 12: return offsetofPPCGuestState(guest_FPR12);
-   case 13: return offsetofPPCGuestState(guest_FPR13);
-   case 14: return offsetofPPCGuestState(guest_FPR14);
-   case 15: return offsetofPPCGuestState(guest_FPR15);
-   case 16: return offsetofPPCGuestState(guest_FPR16);
-   case 17: return offsetofPPCGuestState(guest_FPR17);
-   case 18: return offsetofPPCGuestState(guest_FPR18);
-   case 19: return offsetofPPCGuestState(guest_FPR19);
-   case 20: return offsetofPPCGuestState(guest_FPR20);
-   case 21: return offsetofPPCGuestState(guest_FPR21);
-   case 22: return offsetofPPCGuestState(guest_FPR22);
-   case 23: return offsetofPPCGuestState(guest_FPR23);
-   case 24: return offsetofPPCGuestState(guest_FPR24);
-   case 25: return offsetofPPCGuestState(guest_FPR25);
-   case 26: return offsetofPPCGuestState(guest_FPR26);
-   case 27: return offsetofPPCGuestState(guest_FPR27);
-   case 28: return offsetofPPCGuestState(guest_FPR28);
-   case 29: return offsetofPPCGuestState(guest_FPR29);
-   case 30: return offsetofPPCGuestState(guest_FPR30);
-   case 31: return offsetofPPCGuestState(guest_FPR31);
+   case  0: return offsetofPPCGuestState(guest_VSR0);
+   case  1: return offsetofPPCGuestState(guest_VSR1);
+   case  2: return offsetofPPCGuestState(guest_VSR2);
+   case  3: return offsetofPPCGuestState(guest_VSR3);
+   case  4: return offsetofPPCGuestState(guest_VSR4);
+   case  5: return offsetofPPCGuestState(guest_VSR5);
+   case  6: return offsetofPPCGuestState(guest_VSR6);
+   case  7: return offsetofPPCGuestState(guest_VSR7);
+   case  8: return offsetofPPCGuestState(guest_VSR8);
+   case  9: return offsetofPPCGuestState(guest_VSR9);
+   case 10: return offsetofPPCGuestState(guest_VSR10);
+   case 11: return offsetofPPCGuestState(guest_VSR11);
+   case 12: return offsetofPPCGuestState(guest_VSR12);
+   case 13: return offsetofPPCGuestState(guest_VSR13);
+   case 14: return offsetofPPCGuestState(guest_VSR14);
+   case 15: return offsetofPPCGuestState(guest_VSR15);
+   case 16: return offsetofPPCGuestState(guest_VSR16);
+   case 17: return offsetofPPCGuestState(guest_VSR17);
+   case 18: return offsetofPPCGuestState(guest_VSR18);
+   case 19: return offsetofPPCGuestState(guest_VSR19);
+   case 20: return offsetofPPCGuestState(guest_VSR20);
+   case 21: return offsetofPPCGuestState(guest_VSR21);
+   case 22: return offsetofPPCGuestState(guest_VSR22);
+   case 23: return offsetofPPCGuestState(guest_VSR23);
+   case 24: return offsetofPPCGuestState(guest_VSR24);
+   case 25: return offsetofPPCGuestState(guest_VSR25);
+   case 26: return offsetofPPCGuestState(guest_VSR26);
+   case 27: return offsetofPPCGuestState(guest_VSR27);
+   case 28: return offsetofPPCGuestState(guest_VSR28);
+   case 29: return offsetofPPCGuestState(guest_VSR29);
+   case 30: return offsetofPPCGuestState(guest_VSR30);
+   case 31: return offsetofPPCGuestState(guest_VSR31);
    default: break;
    }
    vpanic("floatGuestRegOffset(ppc)"); /*notreached*/
@@ -987,44 +1036,117 @@ static void putFReg ( UInt archreg, IRExpr* e )
    stmt( IRStmt_Put(floatGuestRegOffset(archreg), e) );
 }
 
+static Int vsxGuestRegOffset ( UInt archreg )
+{
+   vassert(archreg < 64);
+   switch (archreg) {
+   case  0: return offsetofPPCGuestState(guest_VSR0);
+   case  1: return offsetofPPCGuestState(guest_VSR1);
+   case  2: return offsetofPPCGuestState(guest_VSR2);
+   case  3: return offsetofPPCGuestState(guest_VSR3);
+   case  4: return offsetofPPCGuestState(guest_VSR4);
+   case  5: return offsetofPPCGuestState(guest_VSR5);
+   case  6: return offsetofPPCGuestState(guest_VSR6);
+   case  7: return offsetofPPCGuestState(guest_VSR7);
+   case  8: return offsetofPPCGuestState(guest_VSR8);
+   case  9: return offsetofPPCGuestState(guest_VSR9);
+   case 10: return offsetofPPCGuestState(guest_VSR10);
+   case 11: return offsetofPPCGuestState(guest_VSR11);
+   case 12: return offsetofPPCGuestState(guest_VSR12);
+   case 13: return offsetofPPCGuestState(guest_VSR13);
+   case 14: return offsetofPPCGuestState(guest_VSR14);
+   case 15: return offsetofPPCGuestState(guest_VSR15);
+   case 16: return offsetofPPCGuestState(guest_VSR16);
+   case 17: return offsetofPPCGuestState(guest_VSR17);
+   case 18: return offsetofPPCGuestState(guest_VSR18);
+   case 19: return offsetofPPCGuestState(guest_VSR19);
+   case 20: return offsetofPPCGuestState(guest_VSR20);
+   case 21: return offsetofPPCGuestState(guest_VSR21);
+   case 22: return offsetofPPCGuestState(guest_VSR22);
+   case 23: return offsetofPPCGuestState(guest_VSR23);
+   case 24: return offsetofPPCGuestState(guest_VSR24);
+   case 25: return offsetofPPCGuestState(guest_VSR25);
+   case 26: return offsetofPPCGuestState(guest_VSR26);
+   case 27: return offsetofPPCGuestState(guest_VSR27);
+   case 28: return offsetofPPCGuestState(guest_VSR28);
+   case 29: return offsetofPPCGuestState(guest_VSR29);
+   case 30: return offsetofPPCGuestState(guest_VSR30);
+   case 31: return offsetofPPCGuestState(guest_VSR31);
+   case 32: return offsetofPPCGuestState(guest_VSR32);
+   case 33: return offsetofPPCGuestState(guest_VSR33);
+   case 34: return offsetofPPCGuestState(guest_VSR34);
+   case 35: return offsetofPPCGuestState(guest_VSR35);
+   case 36: return offsetofPPCGuestState(guest_VSR36);
+   case 37: return offsetofPPCGuestState(guest_VSR37);
+   case 38: return offsetofPPCGuestState(guest_VSR38);
+   case 39: return offsetofPPCGuestState(guest_VSR39);
+   case 40: return offsetofPPCGuestState(guest_VSR40);
+   case 41: return offsetofPPCGuestState(guest_VSR41);
+   case 42: return offsetofPPCGuestState(guest_VSR42);
+   case 43: return offsetofPPCGuestState(guest_VSR43);
+   case 44: return offsetofPPCGuestState(guest_VSR44);
+   case 45: return offsetofPPCGuestState(guest_VSR45);
+   case 46: return offsetofPPCGuestState(guest_VSR46);
+   case 47: return offsetofPPCGuestState(guest_VSR47);
+   case 48: return offsetofPPCGuestState(guest_VSR48);
+   case 49: return offsetofPPCGuestState(guest_VSR49);
+   case 50: return offsetofPPCGuestState(guest_VSR50);
+   case 51: return offsetofPPCGuestState(guest_VSR51);
+   case 52: return offsetofPPCGuestState(guest_VSR52);
+   case 53: return offsetofPPCGuestState(guest_VSR53);
+   case 54: return offsetofPPCGuestState(guest_VSR54);
+   case 55: return offsetofPPCGuestState(guest_VSR55);
+   case 56: return offsetofPPCGuestState(guest_VSR56);
+   case 57: return offsetofPPCGuestState(guest_VSR57);
+   case 58: return offsetofPPCGuestState(guest_VSR58);
+   case 59: return offsetofPPCGuestState(guest_VSR59);
+   case 60: return offsetofPPCGuestState(guest_VSR60);
+   case 61: return offsetofPPCGuestState(guest_VSR61);
+   case 62: return offsetofPPCGuestState(guest_VSR62);
+   case 63: return offsetofPPCGuestState(guest_VSR63);
+   default: break;
+   }
+   vpanic("vsxGuestRegOffset(ppc)"); /*notreached*/
+}
 
+/* Vector registers are mapped to VSX registers[32..63]. */
 static Int vectorGuestRegOffset ( UInt archreg )
 {
    vassert(archreg < 32);
    
    switch (archreg) {
-   case  0: return offsetofPPCGuestState(guest_VR0);
-   case  1: return offsetofPPCGuestState(guest_VR1);
-   case  2: return offsetofPPCGuestState(guest_VR2);
-   case  3: return offsetofPPCGuestState(guest_VR3);
-   case  4: return offsetofPPCGuestState(guest_VR4);
-   case  5: return offsetofPPCGuestState(guest_VR5);
-   case  6: return offsetofPPCGuestState(guest_VR6);
-   case  7: return offsetofPPCGuestState(guest_VR7);
-   case  8: return offsetofPPCGuestState(guest_VR8);
-   case  9: return offsetofPPCGuestState(guest_VR9);
-   case 10: return offsetofPPCGuestState(guest_VR10);
-   case 11: return offsetofPPCGuestState(guest_VR11);
-   case 12: return offsetofPPCGuestState(guest_VR12);
-   case 13: return offsetofPPCGuestState(guest_VR13);
-   case 14: return offsetofPPCGuestState(guest_VR14);
-   case 15: return offsetofPPCGuestState(guest_VR15);
-   case 16: return offsetofPPCGuestState(guest_VR16);
-   case 17: return offsetofPPCGuestState(guest_VR17);
-   case 18: return offsetofPPCGuestState(guest_VR18);
-   case 19: return offsetofPPCGuestState(guest_VR19);
-   case 20: return offsetofPPCGuestState(guest_VR20);
-   case 21: return offsetofPPCGuestState(guest_VR21);
-   case 22: return offsetofPPCGuestState(guest_VR22);
-   case 23: return offsetofPPCGuestState(guest_VR23);
-   case 24: return offsetofPPCGuestState(guest_VR24);
-   case 25: return offsetofPPCGuestState(guest_VR25);
-   case 26: return offsetofPPCGuestState(guest_VR26);
-   case 27: return offsetofPPCGuestState(guest_VR27);
-   case 28: return offsetofPPCGuestState(guest_VR28);
-   case 29: return offsetofPPCGuestState(guest_VR29);
-   case 30: return offsetofPPCGuestState(guest_VR30);
-   case 31: return offsetofPPCGuestState(guest_VR31);
+   case  0: return offsetofPPCGuestState(guest_VSR32);
+   case  1: return offsetofPPCGuestState(guest_VSR33);
+   case  2: return offsetofPPCGuestState(guest_VSR34);
+   case  3: return offsetofPPCGuestState(guest_VSR35);
+   case  4: return offsetofPPCGuestState(guest_VSR36);
+   case  5: return offsetofPPCGuestState(guest_VSR37);
+   case  6: return offsetofPPCGuestState(guest_VSR38);
+   case  7: return offsetofPPCGuestState(guest_VSR39);
+   case  8: return offsetofPPCGuestState(guest_VSR40);
+   case  9: return offsetofPPCGuestState(guest_VSR41);
+   case 10: return offsetofPPCGuestState(guest_VSR42);
+   case 11: return offsetofPPCGuestState(guest_VSR43);
+   case 12: return offsetofPPCGuestState(guest_VSR44);
+   case 13: return offsetofPPCGuestState(guest_VSR45);
+   case 14: return offsetofPPCGuestState(guest_VSR46);
+   case 15: return offsetofPPCGuestState(guest_VSR47);
+   case 16: return offsetofPPCGuestState(guest_VSR48);
+   case 17: return offsetofPPCGuestState(guest_VSR49);
+   case 18: return offsetofPPCGuestState(guest_VSR50);
+   case 19: return offsetofPPCGuestState(guest_VSR51);
+   case 20: return offsetofPPCGuestState(guest_VSR52);
+   case 21: return offsetofPPCGuestState(guest_VSR53);
+   case 22: return offsetofPPCGuestState(guest_VSR54);
+   case 23: return offsetofPPCGuestState(guest_VSR55);
+   case 24: return offsetofPPCGuestState(guest_VSR56);
+   case 25: return offsetofPPCGuestState(guest_VSR57);
+   case 26: return offsetofPPCGuestState(guest_VSR58);
+   case 27: return offsetofPPCGuestState(guest_VSR59);
+   case 28: return offsetofPPCGuestState(guest_VSR60);
+   case 29: return offsetofPPCGuestState(guest_VSR61);
+   case 30: return offsetofPPCGuestState(guest_VSR62);
+   case 31: return offsetofPPCGuestState(guest_VSR63);
    default: break;
    }
    vpanic("vextorGuestRegOffset(ppc)"); /*notreached*/
@@ -1044,6 +1166,22 @@ static void putVReg ( UInt archreg, IRExpr* e )
    stmt( IRStmt_Put(vectorGuestRegOffset(archreg), e) );
 }
 
+/* Get contents of VSX guest register */
+static IRExpr* getVSReg ( UInt archreg )
+{
+   vassert(archreg < 64);
+   return IRExpr_Get( vsxGuestRegOffset(archreg), Ity_V128 );
+}
+
+/* Ditto, but write to a VSX reg instead. */
+static void putVSReg ( UInt archreg, IRExpr* e )
+{
+   vassert(archreg < 64);
+   vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_V128);
+   stmt( IRStmt_Put(vsxGuestRegOffset(archreg), e) );
+}
+
+
 static Int guestCR321offset ( UInt cr )
 {
    switch (cr) {
@@ -1074,6 +1212,42 @@ static Int guestCR0offset ( UInt cr )
    }
 }
 
+/* Generate an IR sequence to do a popcount operation on the supplied
+ * IRTemp, and return an IRTemp holding the result.
+ */
+static IRTemp gen_POPCOUNT ( IRTemp src )
+{
+   Int i, shift[6];
+   IRTemp old = IRTemp_INVALID;
+   IRTemp nyu = IRTemp_INVALID;
+   IRTemp mask[6];
+
+   vassert(typeOfIRExpr(irsb->tyenv,mkexpr(src)) == Ity_I64);
+   for (i = 0; i < 6; i++) {
+      mask[i] = newTemp( Ity_I64 );
+      shift[i] = 1 << i;
+   }
+   assign( mask[0], mkU64( 0x5555555555555555ULL ) );
+   assign( mask[1], mkU64( 0x3333333333333333ULL ) );
+   assign( mask[2], mkU64( 0x0F0F0F0F0F0F0F0FULL ) );
+   assign( mask[3], mkU64( 0x00FF00FF00FF00FFULL ) );
+   assign( mask[4], mkU64( 0x0000FFFF0000FFFFULL ) );
+   assign( mask[5], mkU64( 0x00000000FFFFFFFFULL ) );
+   old = src;
+   for (i = 0; i < 6; i++) {
+      nyu = newTemp( Ity_I64 );
+      assign( nyu,
+              binop( Iop_Add64,
+                     binop( Iop_And64, mkexpr( old ), mkexpr( mask[i] ) ),
+                     binop( Iop_And64,
+                            binop( Iop_Shr64, mkexpr( old ), mkU8( shift[i] ) ),
+                            mkexpr( mask[i] ) ) ) );
+      old = nyu;
+   }
+   return nyu;
+}
+
+
 // ROTL(src32/64, rot_amt5/6)
 static IRExpr* /* :: Ity_I32/64 */ ROTL ( IRExpr* src,
                                           IRExpr* rot_amt )
@@ -2143,7 +2317,7 @@ static IRExpr* /* ::Ity_I32 */ getGST_masked ( PPC_GST reg, UInt mask )
 
       /* We're only keeping track of the rounding mode,
          so if the mask isn't asking for this, just return 0x0 */
-      if (mask & 0x3) {
+      if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) {
          assign( val, IRExpr_Get( OFFB_FPROUND, Ity_I32 ) );
       } else {
          assign( val, mkU32(0x0) );
@@ -2267,7 +2441,7 @@ static void putGST_masked ( PPC_GST reg, IRExpr* src, UInt mask )
    switch (reg) {
    case PPC_GST_FPSCR: {
       /* Allow writes to Rounding Mode */
-      if (mask & 0x3) {
+      if (mask & (MASK_FPSCR_RN|MASK_FPSCR_FPRF)) {
          /* construct new fpround from new and old values as per mask:
             new fpround = (src & (3 & mask)) | (fpround & (3 & ~mask)) */
          stmt( 
@@ -2275,11 +2449,11 @@ static void putGST_masked ( PPC_GST reg, IRExpr* src, UInt mask )
                OFFB_FPROUND,
                binop(
                   Iop_Or32, 
-                  binop(Iop_And32, src, mkU32(3 & mask)),
+                  binop(Iop_And32, src, mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & mask)),
                   binop(
                      Iop_And32, 
                      IRExpr_Get(OFFB_FPROUND,Ity_I32),
-                     mkU32(3 & ~mask)
+                     mkU32((MASK_FPSCR_RN|MASK_FPSCR_FPRF) & ~mask)
                   )
                )
             )
@@ -2344,6 +2518,80 @@ static void putGST_field ( PPC_GST reg, IRExpr* src, UInt fld )
    }
 }
 
+/*------------------------------------------------------------*/
+/* Helpers for VSX instructions that do floating point
+ * operations and need to determine if a src contains a
+ * special FP value.
+ *
+ *------------------------------------------------------------*/
+
+#define NONZERO_FRAC_MASK 0x000fffffffffffffULL
+#define FP_FRAC_PART(x) binop( Iop_And64, \
+                               mkexpr( x ), \
+                               mkU64( NONZERO_FRAC_MASK ) )
+
+// Returns exponent part of floating point as I32
+static IRExpr * fp_exp_part(IRTemp src)
+{
+   IRExpr * exp;
+   if (!mode64)
+      exp = binop( Iop_And32, binop( Iop_Shr32, unop( Iop_64HIto32,
+                                                      mkexpr( src ) ),
+                                     mkU8( 20 ) ), mkU32( 0x7ff ) );
+   else
+      exp = unop( Iop_64to32,
+                  binop( Iop_And64,
+                         binop( Iop_Shr64, mkexpr( src ), mkU8( 52 ) ),
+                         mkU64( 0x7ff ) ) );
+   return exp;
+}
+
+
+// Infinity: exp = 7ff and fraction is zero; s = 0/1
+static IRExpr * is_Inf(IRTemp src)
+{
+   IRExpr * Inf_exp, * hi32, * low32;
+   IRTemp frac_part = newTemp(Ity_I64);
+
+   assign( frac_part, FP_FRAC_PART(src) );
+   Inf_exp = binop( Iop_CmpEQ32, fp_exp_part( src ), mkU32( 0x7ff ) );
+   hi32 = unop( Iop_64HIto32, mkexpr( frac_part ) );
+   low32 = unop( Iop_64to32, mkexpr( frac_part ) );
+   return mkAND1( Inf_exp, binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
+                                  mkU32( 0 ) ) );
+}
+
+// Zero: exp is zero and fraction is zero; s = 0/1
+static IRExpr * is_Zero(IRTemp src)
+{
+#define SIGN_MASK 0x7fffffffffffffffULL
+   IRExpr * hi32, * low32;
+   IRTemp sign_less_part = newTemp(Ity_I64);
+
+   assign( sign_less_part, binop( Iop_And64, mkexpr( src ), mkU64( SIGN_MASK ) ) );
+   hi32 = unop( Iop_64HIto32, mkexpr( sign_less_part ) );
+   low32 = unop( Iop_64to32, mkexpr( sign_less_part ) );
+   return binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
+                              mkU32( 0 ) );
+}
+
+/*  SNAN: s = 1/0; exp = 0x7ff; fraction is nonzero, with highest bit '1'
+ *  QNAN: s = 1/0; exp = 0x7ff; fraction is nonzero, with highest bit '0'
+ *  This function returns an IRExpr value of '1' for any type of NaN.
+ */
+static IRExpr * is_NaN(IRTemp src)
+{
+   IRExpr * NaN_exp, * hi32, * low32;
+   IRTemp frac_part = newTemp(Ity_I64);
+
+   assign( frac_part, FP_FRAC_PART(src) );
+   hi32 = unop( Iop_64HIto32, mkexpr( frac_part ) );
+   low32 = unop( Iop_64to32, mkexpr( frac_part ) );
+   NaN_exp = binop( Iop_CmpEQ32, fp_exp_part( src ), mkU32( 0x7ffULL ) );
+
+   return mkAND1( NaN_exp, binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
+                                               mkU32( 0 ) ) );
+}
 
 
 /*------------------------------------------------------------*/
@@ -3220,6 +3468,57 @@ static Bool dis_int_logic ( UInt theInstr )
          // TODO: alternatively: assign(rA, verbose_Clz64(rS));
          break;
 
+      case 0x1FC: // cmpb (Power6: compare bytes)
+         DIP("cmpb r%u,r%u,r%u\n", rA_addr, rS_addr, rB_addr);
+
+         if (mode64)
+            assign( rA, unop( Iop_V128to64,
+                              binop( Iop_CmpEQ8x16,
+                                     binop( Iop_64HLtoV128, mkU64(0), mkexpr(rS) ),
+                                     binop( Iop_64HLtoV128, mkU64(0), mkexpr(rB) )
+                                     )) );
+         else
+            assign( rA, unop( Iop_V128to32,
+                              binop( Iop_CmpEQ8x16,
+                                     unop( Iop_32UtoV128, mkexpr(rS) ),
+                                     unop( Iop_32UtoV128, mkexpr(rB) )
+                                     )) );
+         break;
+
+      case 0x2DF: { // mftgpr (move floating-point to general purpose register)
+         IRTemp frB = newTemp(Ity_F64);
+         DIP("mftgpr r%u,fr%u\n", rS_addr, rB_addr);
+
+         assign( frB, getFReg(rB_addr));  // always F64
+         if (mode64)
+            assign( rA, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+         else
+            assign( rA, unop( Iop_64to32, unop( Iop_ReinterpF64asI64, mkexpr(frB))) );
+
+         putIReg( rS_addr, mkexpr(rA));
+         return True;
+      }
+
+      case 0x25F: { // mffgpr (move floating-point from general purpose register)
+         IRTemp frA = newTemp(Ity_F64);
+         DIP("mffgpr fr%u,r%u\n", rS_addr, rB_addr);
+
+         if (mode64)
+            assign( frA, unop( Iop_ReinterpI64asF64, mkexpr(rB)) );
+         else
+            assign( frA, unop( Iop_ReinterpI64asF64, unop( Iop_32Uto64, mkexpr(rB))) );
+
+         putFReg( rS_addr, mkexpr(frA));
+         return True;
+      }
+      case 0x1FA: // popcntd (population count doubleword
+      {
+    	  DIP("popcntd r%u,r%u\n", rA_addr, rS_addr);
+        IRTemp result = gen_POPCOUNT(rS);
+    	  putIReg( rA_addr, mkexpr(result) );
+    	  return True;
+      }
+
       default:
          vex_printf("dis_int_logic(ppc)(opc2)\n");
          return False;
@@ -3239,6 +3538,133 @@ static Bool dis_int_logic ( UInt theInstr )
    return True;
 }
 
+/*
+  Integer Parity Instructions
+*/
+static Bool dis_int_parity ( UInt theInstr )
+{
+   /* X-Form */
+   UChar opc1    = ifieldOPC(theInstr);
+   UChar rS_addr = ifieldRegDS(theInstr);
+   UChar rA_addr = ifieldRegA(theInstr);
+   UChar rB_addr = ifieldRegB(theInstr);
+   UInt  opc2    = ifieldOPClo10(theInstr);
+   UChar b0      = ifieldBIT0(theInstr);
+   IRType ty     = mode64 ? Ity_I64 : Ity_I32;
+
+   IRTemp rS     = newTemp(ty);
+   IRTemp rA     = newTemp(ty);
+   IRTemp iTot1  = newTemp(Ity_I32);
+   IRTemp iTot2  = newTemp(Ity_I32);
+   IRTemp iTot3  = newTemp(Ity_I32);
+   IRTemp iTot4  = newTemp(Ity_I32);
+   IRTemp iTot5  = newTemp(Ity_I32);
+   IRTemp iTot6  = newTemp(Ity_I32);
+   IRTemp iTot7  = newTemp(Ity_I32);
+   IRTemp iTot8  = newTemp(Ity_I32);
+   IRTemp rS1    = newTemp(ty);
+   IRTemp rS2    = newTemp(ty);
+   IRTemp rS3    = newTemp(ty);
+   IRTemp rS4    = newTemp(ty);
+   IRTemp rS5    = newTemp(ty);
+   IRTemp rS6    = newTemp(ty);
+   IRTemp rS7    = newTemp(ty);
+   IRTemp iHi    = newTemp(Ity_I32);
+   IRTemp iLo    = newTemp(Ity_I32);
+   IROp to_bit   = (mode64 ? Iop_64to1 : Iop_32to1);
+   IROp shr_op   = (mode64 ? Iop_Shr64 : Iop_Shr32);
+
+   if (opc1 != 0x1f || rB_addr || b0) {
+      vex_printf("dis_int_parity(ppc)(0x1F,opc1:rB|b0)\n");
+      return False;
+   }
+
+   assign( rS, getIReg(rS_addr) );
+
+   switch (opc2) {
+   case 0xba:  // prtyd (Parity Doubleword, ISA 2.05 p320)
+      DIP("prtyd r%u,r%u\n", rA_addr, rS_addr);
+      assign( iTot1, unop(Iop_1Uto32, unop(to_bit, mkexpr(rS))) );
+      assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
+      assign( iTot2, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS1))),
+                           mkexpr(iTot1)) );
+      assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
+      assign( iTot3, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS2))),
+                           mkexpr(iTot2)) );
+      assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
+      assign( iTot4, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS3))),
+                           mkexpr(iTot3)) );
+      if (mode64) {
+         assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
+         assign( iTot5, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS4))),
+                              mkexpr(iTot4)) );
+         assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
+         assign( iTot6, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS5))),
+                              mkexpr(iTot5)) );
+         assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
+         assign( iTot7, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS6))),
+                              mkexpr(iTot6)) );
+         assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)) );
+         assign( iTot8, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS7))),
+                              mkexpr(iTot7)) );
+         assign( rA, unop(Iop_32Uto64,
+                          binop(Iop_And32, mkexpr(iTot8), mkU32(1))) );
+      } else
+         assign( rA, mkexpr(iTot4) );
+
+      break;
+   case 0x9a:  // prtyw (Parity Word, ISA 2.05 p320)
+      assign( iTot1, unop(Iop_1Uto32, unop(to_bit, mkexpr(rS))) );
+      assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
+      assign( iTot2, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS1))),
+                           mkexpr(iTot1)) );
+      assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
+      assign( iTot3, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS2))),
+                           mkexpr(iTot2)) );
+      assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
+      assign( iTot4, binop(Iop_Add32,
+                           unop(Iop_1Uto32, unop(to_bit, mkexpr(rS3))),
+                           mkexpr(iTot3)) );
+      assign( iLo, unop(Iop_1Uto32, unop(Iop_32to1, mkexpr(iTot4) )) );
+
+      if (mode64) {
+         assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
+         assign( iTot5, unop(Iop_1Uto32, unop(to_bit, mkexpr(rS4))) );
+         assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
+         assign( iTot6, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS5))),
+                              mkexpr(iTot5)) );
+         assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
+         assign( iTot7, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS6))),
+                              mkexpr(iTot6)) );
+         assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)));
+         assign( iTot8, binop(Iop_Add32,
+                              unop(Iop_1Uto32, unop(to_bit, mkexpr(rS7))),
+                              mkexpr(iTot7)) );
+         assign( iHi, binop(Iop_And32, mkU32(1), mkexpr(iTot8)) ),
+            assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
+      } else
+         assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
+      break;
+   default:
+      vex_printf("dis_int_parity(ppc)(opc2)\n");
+      return False;
+   }
+
+   putIReg( rA_addr, mkexpr(rA) );
+
+   return True;
+}
 
 
 /*
@@ -5313,7 +5739,23 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
          putIReg( rD_addr, mkWidenFrom32(ty, mkexpr(w2),
                                          /* Signed */False) );
          break;
-      
+
+      case 0x214: // ldbrx (Load Doubleword Byte-Reverse Indexed)
+      {
+         IRExpr * nextAddr;
+         IRTemp w3 = newTemp( Ity_I32 );
+         IRTemp w4 = newTemp( Ity_I32 );
+         DIP("ldbrx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
+         assign( w1, loadBE( Ity_I32, mkexpr( EA ) ) );
+         assign( w2, gen_byterev32( w1 ) );
+         nextAddr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                           ty == Ity_I64 ? mkU64( 4 ) : mkU32( 4 ) );
+         assign( w3, loadBE( Ity_I32, nextAddr ) );
+         assign( w4, gen_byterev32( w3 ) );
+         putIReg( rD_addr, binop( Iop_32HLto64, mkexpr( w4 ), mkexpr( w2 ) ) );
+         break;
+      }
+
       case 0x396: // sthbrx (Store Half Word Byte-Reverse Indexed, PPC32 p523)
          DIP("sthbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
          assign( w1, mkNarrowTo32(ty, getIReg(rS_addr)) );
@@ -5604,6 +6046,7 @@ static Bool dis_cache_manage ( UInt         theInstr,
    UInt  opc2    = ifieldOPClo10(theInstr);
    UChar b0      = ifieldBIT0(theInstr);
    UInt  lineszB = guest_archinfo->ppc_cache_line_szB;
+   Bool  is_dcbzl = False;
 
    IRType ty     = mode64 ? Ity_I64 : Ity_I32;
 
@@ -5615,6 +6058,16 @@ static Bool dis_cache_manage ( UInt         theInstr,
      /* b21to25 &= ~3; */ /* if the docs were true */
      b21to25 = 0; /* blunt instrument */
    }
+   if (opc1 == 0x1F && opc2 == 0x3F6) { // dcbz
+      if (b21to25 == 1) {
+         is_dcbzl = True;
+         b21to25 = 0;
+         if (!(guest_archinfo->ppc_dcbzl_szB)) {
+            vex_printf("dis_cache_manage(ppc)(dcbzl not supported by host)\n");
+            return False;
+         }
+      }
+   }
 
    if (opc1 != 0x1F || b21to25 != 0 || b0 != 0) {
       if (0) vex_printf("dis_cache_manage %d %d %d\n", 
@@ -5654,12 +6107,21 @@ static Bool dis_cache_manage ( UInt         theInstr,
       break;
       
    case 0x3F6: { // dcbz (Data Cache Block Clear to Zero, PPC32 p387)
+                 // dcbzl (Data Cache Block Clear to Zero Long, bug#135264)
       /* Clear all bytes in cache block at (rA|0) + rB. */
       IRTemp  EA   = newTemp(ty);
       IRTemp  addr = newTemp(ty);
       IRExpr* irx_addr;
       UInt    i;
-      DIP("dcbz r%u,r%u\n", rA_addr, rB_addr);
+      UInt clearszB;
+      if (is_dcbzl) {
+          clearszB = guest_archinfo->ppc_dcbzl_szB;
+          DIP("dcbzl r%u,r%u\n", rA_addr, rB_addr);
+      }
+      else {
+          clearszB = guest_archinfo->ppc_dcbz_szB;
+          DIP("dcbz r%u,r%u\n", rA_addr, rB_addr);
+      }
 
       assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
 
@@ -5667,9 +6129,9 @@ static Bool dis_cache_manage ( UInt         theInstr,
          /* Round EA down to the start of the containing block. */
          assign( addr, binop( Iop_And64,
                               mkexpr(EA),
-                              mkU64( ~((ULong)lineszB-1) )) );
+                              mkU64( ~((ULong)clearszB-1) )) );
          
-         for (i = 0; i < lineszB / 8; i++) {
+         for (i = 0; i < clearszB / 8; i++) {
             irx_addr = binop( Iop_Add64, mkexpr(addr), mkU64(i*8) );
             storeBE( irx_addr, mkU64(0) );
          }
@@ -5677,9 +6139,9 @@ static Bool dis_cache_manage ( UInt         theInstr,
          /* Round EA down to the start of the containing block. */
          assign( addr, binop( Iop_And32,
                               mkexpr(EA),
-                              mkU32( ~(lineszB-1) )) );
+                              mkU32( ~(clearszB-1) )) );
          
-         for (i = 0; i < lineszB / 4; i++) {
+         for (i = 0; i < clearszB / 4; i++) {
             irx_addr = binop( Iop_Add32, mkexpr(addr), mkU32(i*4) );
             storeBE( irx_addr, mkU32(0) );
          }
@@ -5774,6 +6236,8 @@ static Bool dis_fp_load ( UInt theInstr )
    IRTemp EA     = newTemp(ty);
    IRTemp rA     = newTemp(ty);
    IRTemp rB     = newTemp(ty);
+   IRTemp iHi    = newTemp(Ity_I32);
+   IRTemp iLo    = newTemp(Ity_I32);
 
    assign( rA, getIReg(rA_addr) );
    assign( rB, getIReg(rB_addr) );
@@ -5854,6 +6318,28 @@ static Bool dis_fp_load ( UInt theInstr )
          putIReg( rA_addr, mkexpr(EA) );
          break;
          
+      case 0x357: // lfiwax (Load Float As Integer, Indxd, ISA 2.05 p120)
+         DIP("lfiwax fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
+         assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
+         assign( iLo, loadBE(Ity_I32, mkexpr(EA)) );
+         assign( iHi, binop(Iop_Sub32,
+                            mkU32(0),
+                            binop(Iop_Shr32, mkexpr(iLo), mkU8(31)))  );
+         putFReg( frD_addr, unop(Iop_ReinterpI64asF64,
+                                 binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo))) );
+         break;
+
+      case 0x377: // lfiwzx (Load floating-point as integer word, zero indexed
+      {
+         IRTemp dw = newTemp( Ity_I64 );
+         DIP("lfiwzx fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
+         assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
+         assign( iLo, loadBE(Ity_I32, mkexpr(EA)) );
+         assign( dw, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( iLo ) ) );
+         putFReg( frD_addr, unop( Iop_ReinterpI64asF64, mkexpr( dw ) ) );
+         break;
+      }
+
       default:
          vex_printf("dis_fp_load(ppc)(opc2)\n");
          return False;
@@ -6386,7 +6872,238 @@ static Bool dis_fp_multadd ( UInt theInstr )
    return True;
 }
 
+/*
+ * fe_flag is set to 1 if any of the following conditions occurs:
+ *  - The double-precision floating-point operand in register FRA is a NaN or an
+ *    Infinity.
+ *  - The double-precision floating-point operand in register FRB is a Zero, a
+ *    NaN, or an Infinity.
+ *  - e_b is less than or equal to -1022.
+ *  - e_b is greater than or equal to 1021.
+ *  - The double-precision floating-point operand in register FRA is not a zero
+ *    and the difference, e_a - e_b, is greater than or equal to 1023.
+ *  - The double-precision floating-point operand in register FRA is not a zero
+ *    and the difference, e_a - e_b, is less than or equal to -1021.
+ *  - The double-precision floating-point operand in register FRA is not a zero
+ *    and e_a is less than or equal to -970
+ *  Otherwise fe_flag is set to 0.
+ *
+ * fg_flag is set to 1 if either of the following conditions occurs.
+ *   - The double-precision floating-point operand in register FRA is an Infinity.
+ *   - The double-precision floating-point operand in register FRB is a Zero, an
+ *     Infinity, or a denormalized value.
+ *  Otherwise fg_flag is set to 0.
+ *
+ */
+static Bool dis_fp_ftdiv ( UInt theInstr )
+{
+   UChar opc1     = ifieldOPC(theInstr);
+   UChar crfD     = toUChar( IFIELD( theInstr, 23, 3 ) );
+   UChar b21to22  = toUChar( IFIELD( theInstr, 21, 2 ) );
+   UChar frA_addr = ifieldRegA(theInstr);
+   UChar frB_addr = ifieldRegB(theInstr);
+   UChar b0       = ifieldBIT0(theInstr);
+
+   // The following temps are for holding intermediate results
+   IRTemp frA_I64     = newTemp(Ity_I64);
+   IRTemp frB_I64     = newTemp(Ity_I64);
+   IRTemp e_a = newTemp(Ity_I32);
+   IRTemp e_b = newTemp(Ity_I32);
+   IRTemp frA_exp_shR = newTemp(Ity_I32);
+   IRTemp frB_exp_shR = newTemp(Ity_I32);
+
+   UInt bias = 1023;
+
+   /* The following variables hold boolean results from tests
+    * that are OR'ed together for setting the fe_ and fg_ flags.
+    * For some cases, the booleans are used more than once, so
+    * I make those IRTemp's instead of IRExpr's.
+    */
+   IRExpr * fraNaN, * frbNaN, * frbDenorm;
+   IRExpr * eb_LTE, * eb_GTE, * ea_eb_GTE, * ea_eb_LTE, * ea_LTE;
+   IRTemp  fraInf_tmp = newTemp(Ity_I1);
+   IRTemp  frbZero_tmp = newTemp(Ity_I1);
+   IRTemp  frbInf_tmp = newTemp(Ity_I1);
+   IRTemp  fraNotZero_tmp = newTemp(Ity_I1);
+
+/* The following are the flags that are set by OR'ing the results of
+ * all the tests done for ftdiv.  These flags are the input to the specified CR.
+ */
+   IRExpr * fe_flag, * fl_flag, * fg_flag;
+
+
+   if (opc1 != 0x3F || b21to22 != 0 || b0 != 0) {
+      vex_printf("dis_fp_ftdiv(ppc)(instr)\n");
+      return False;
+   }
+
+   // Create temps that will be used throughout the following tests.
+   assign( frA_I64, unop( Iop_ReinterpF64asI64, getFReg( frA_addr ) ) );
+   assign( frB_I64, unop( Iop_ReinterpF64asI64, getFReg( frB_addr ) ) );
+   assign( frA_exp_shR, fp_exp_part( frA_I64 ) );
+   assign( frB_exp_shR, fp_exp_part( frB_I64 ) );
+   /* Let e_[a|b] be the unbiased exponent: i.e. exp - 1023. */
+   assign(e_a, binop( Iop_Sub32, mkexpr(frA_exp_shR), mkU32( bias ) ));
+   assign(e_b, binop( Iop_Sub32, mkexpr(frB_exp_shR), mkU32( bias ) ));
+
+
+   //////////////////  fe_flag tests BEGIN //////////////////////
+   /* We first do all tests that may result in setting fe_flag to '1'. */
+
+   /*
+    * Test if the double-precision floating-point operand in register FRA is
+    * a NaN:
+    *    exp = 7ff and fraction is non-zero; s = 0/1
+    */
+   fraNaN = is_NaN(frA_I64);
+   /*
+    * Test if the double-precision floating-point operand in register FRA is
+    * an Infinity.
+    *    exp = 7ff and fraction is zero; s = 0/1
+    */
+   assign(fraInf_tmp, is_Inf(frA_I64));
+
+   /*
+    * Test if the double-precision floating-point operand in register FRB is
+    * a NaN:
+    *    exp = 7ff and fraction is non-zero; s = 0/1
+    */
+   frbNaN = is_NaN(frB_I64);
+   /*
+    * Test if the double-precision floating-point operand in register FRB is
+    * an Infinity.
+    *    exp = 7ff and fraction is zero; s = 0/1
+    */
+   assign( frbInf_tmp, is_Inf(frB_I64) );
+   /*
+    * Test if the double-precision floating-point operand in register FRB is
+    * a Zero.
+    *    exp is zero and fraction is zero; s = 0/1
+    */
+   assign( frbZero_tmp, is_Zero(frB_I64) );
+
+   /*
+    * Test if e_b <= -1022
+    */
+   {
+      UInt test_value = 0xfffffc02;  //Int test_value = -1022;
+      eb_LTE = binop(Iop_CmpLE32S, mkexpr(e_b), mkU32(test_value));
+   }
+
+   /*
+    * Test if e_b >= 1021
+    *   ==> 1021 < e_b
+    */
+   {
+      Int test_value = 1021;
+      eb_GTE = binop(Iop_CmpLT32S, mkU32(test_value), mkexpr(e_b));
+   }
+
+   /*
+    * Test if FRA != Zero and (e_a - e_b) >= 1023
+    *   ==> FRA != Zero && (1023 < (e_a - e_b)
+    */
+   assign( fraNotZero_tmp, unop( Iop_Not1, is_Zero( frA_I64 ) ) );
+   ea_eb_GTE = mkAND1( mkexpr( fraNotZero_tmp ),
+                       binop( Iop_CmpLT32S, mkU32( bias ),
+                              binop( Iop_Sub32, mkexpr( e_a ),
+                                     mkexpr( e_b ) ) ) );
+
+   /*
+    * Test if FRA != Zero and (e_a - e_b) <= -1021
+    */
+   {
+      UInt test_value = 0xfffffc03;  //Int test_value = -1021;
+
+      ea_eb_LTE = mkAND1( mkexpr( fraNotZero_tmp ),
+                          binop( Iop_CmpLE32S,
+                                 binop( Iop_Sub32,
+                                        mkexpr( e_a ),
+                                        mkexpr( e_b ) ),
+                                        mkU32( test_value ) ) );
+   }
+
+   /*
+    * Test if FRA != Zero and e_a <= -970
+    */
+   {
+      UInt test_value = 0xfffffc36;  //Int test_value = -970;
 
+      ea_LTE = mkAND1( mkexpr( fraNotZero_tmp ), binop( Iop_CmpLE32S,
+                                                        mkexpr( e_a ),
+                                                        mkU32( test_value ) ) );
+   }
+   //////////////////  fe_flag tests END //////////////////////
+
+   //////////////////  fg_flag tests BEGIN //////////////////////
+   /*
+    * The following tests were already performed above in the fe_flag
+    * tests.  So these conditions will result in both fe_ and fg_ flags
+    * being set.
+    *   - Test if FRA is an Infinity
+    *   - Test if FRB ix Zero
+    *   - Test if FRB is an Infinity
+    */
+
+   /*
+    * Test if FRB holds a denormalized value.  A denormalized value is one where
+    * the exp is 0 and the fraction is non-zero.
+    */
+   {
+      IRExpr * hi32, * low32, * fraction_is_nonzero;
+      IRTemp frac_part = newTemp(Ity_I64);
+
+      assign( frac_part, FP_FRAC_PART(frB_I64) );
+      hi32 = unop( Iop_64HIto32, mkexpr( frac_part ) );
+      low32 = unop( Iop_64to32, mkexpr( frac_part ) );
+      fraction_is_nonzero = binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
+                                                mkU32( 0 ) );
+      frbDenorm = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ),
+                                 mkU32( 0x0ULL ) ), fraction_is_nonzero );
+
+   }
+   //////////////////  fg_flag tests END //////////////////////
+
+   /////////////////////////
+   /* The CR field consists of fl_flag || fg_flag || fe_flag || 0b0
+    * where fl_flag == 1 on ppc64.
+    */
+   fl_flag = unop(Iop_Not32, mkU32(0xFFFFFE));
+
+
+   fe_flag
+   = mkOR1(
+            fraNaN,
+            mkOR1(
+                   mkexpr( fraInf_tmp ),
+                   mkOR1(
+                          mkexpr( frbZero_tmp ),
+                          mkOR1(
+                                 frbNaN,
+                                 mkOR1(
+                                        mkexpr( frbInf_tmp ),
+                                        mkOR1( eb_LTE,
+                                               mkOR1( eb_GTE,
+                                                      mkOR1( ea_eb_GTE,
+                                                             mkOR1( ea_eb_LTE,
+                                                                    ea_LTE ) ) ) ) ) ) ) ) );
+
+   fe_flag = unop(Iop_1Uto32, fe_flag);
+
+   fg_flag = mkOR1( mkexpr( fraInf_tmp ), mkOR1( mkexpr( frbZero_tmp ),
+                                                 mkOR1( mkexpr( frbInf_tmp ),
+                                                        frbDenorm ) ) );
+   fg_flag = unop(Iop_1Uto32, fg_flag);
+
+   putGST_field( PPC_GST_CR, binop( Iop_Or32,
+                           binop( Iop_Or32,
+                                  binop( Iop_Shl32, fl_flag, mkU8( 3 ) ),
+                                  binop( Iop_Shl32, fg_flag, mkU8( 2 ) ) ),
+                           binop( Iop_Shl32, fe_flag, mkU8( 1 ) ) ), crfD );
+
+   DIP("ftdiv crf%d,fr%u,fr%u\n", crfD, frA_addr, frB_addr);
+   return True;
+}
 
 /*
   Floating Point Compare Instructions
@@ -6494,8 +7211,8 @@ static Bool dis_fp_round ( UInt theInstr )
 {
    /* X-Form */
    UChar opc1     = ifieldOPC(theInstr);
-   UChar frD_addr = ifieldRegDS(theInstr);
    UChar b16to20  = ifieldRegA(theInstr);
+   UChar frD_addr = ifieldRegDS(theInstr);
    UChar frB_addr = ifieldRegB(theInstr);
    UInt  opc2     = ifieldOPClo10(theInstr);
    UChar flag_rC  = ifieldBIT0(theInstr);
@@ -6516,13 +7233,34 @@ static Bool dis_fp_round ( UInt theInstr )
       simulating exceptions, the exception status will appear to be
       zero.  Hence cr1 should be cleared if this is a . form insn. */
    Bool clear_CR1 = True;
-   
-   if (opc1 != 0x3F || b16to20 != 0) {
+   if ((!(opc1 == 0x3F || opc1 == 0x3B)) || b16to20 != 0) {
       vex_printf("dis_fp_round(ppc)(instr)\n");
       return False;
    }
 
    assign( frB, getFReg(frB_addr));
+   // TODO : add support here for fcfdus
+   if (opc1 == 0x3B) {
+      /* The fcfid[u]s instructions (from ISA 2.06) are a bit odd because
+       * they're very similar to the other instructions handled here, but have
+       * a different primary opcode.
+       */
+      switch (opc2) {
+         case 0x34E: // fcfids (Float convert from signed DWord to single precision)
+            DIP("fcfids%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+            assign( r_tmp64, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+            assign( frD, binop( Iop_RoundF64toF32, rm, binop( Iop_I64StoF64, rm,
+                                                              mkexpr( r_tmp64 ) ) ) );
+            goto putFR;
+
+         case 0x3Ce: // fcfidus (Float convert from unsigned DWord to single precision)
+            DIP("fcfidus%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+            assign( r_tmp64, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+            assign( frD, unop( Iop_F32toF64, binop( Iop_I64UtoF32, rm, mkexpr( r_tmp64 ) ) ) );
+            goto putFR;
+      }
+   }
+
 
    switch (opc2) {
    case 0x00C: // frsp (Float Round to Single, PPC32 p423)
@@ -6575,11 +7313,63 @@ static Bool dis_fp_round ( UInt theInstr )
               binop(Iop_I64StoF64, rm, mkexpr(r_tmp64)) );
       break;
 
+   case 0x3CE: // fcfidu (Float convert from unsigned DWord)
+      DIP("fcfidu%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+      assign( r_tmp64, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+      assign( frD, binop( Iop_I64UtoF64, rm, mkexpr( r_tmp64 ) ) );
+      break;
+
+   case 0x188: case 0x1A8: case 0x1C8: case 0x1E8: // frin, friz, frip, frim
+      switch(opc2) {
+      case 0x188: // frin (Floating Round to Integer Nearest)
+         DIP("frin%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+         assign( r_tmp64,
+                 binop(Iop_F64toI64S, mkU32(Irrm_NEAREST), mkexpr(frB)) );
+         break;
+      case 0x1A8: // friz (Floating Round to Integer Toward Zero)
+         DIP("friz%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+         assign( r_tmp64,
+                 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), mkexpr(frB)) );
+         break;
+      case 0x1C8: // frip (Floating Round to Integer Plus)
+         DIP("frip%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+         assign( r_tmp64,
+                 binop(Iop_F64toI64S, mkU32(Irrm_PosINF), mkexpr(frB)) );
+         break;
+      case 0x1E8: // frim (Floating Round to Integer Minus)
+         DIP("frim%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
+         assign( r_tmp64,
+                 binop(Iop_F64toI64S, mkU32(Irrm_NegINF), mkexpr(frB)) );
+         break;
+      }
+
+      /* don't use the rounded integer if frB is outside -9e18..9e18 */
+      /* F64 has only log10(2**52) significant digits anyway */
+      /* need to preserve sign of zero */
+      /*   frD = (fabs(frB) > 9e18) ? frB :
+               (sign(frB)) ? -fabs((double)r_tmp64) : (double)r_tmp64  */
+      assign(frD, IRExpr_Mux0X( unop(Iop_32to8,
+                                     binop(Iop_CmpF64,
+                                           IRExpr_Const(IRConst_F64(9e18)),
+                                           unop(Iop_AbsF64, mkexpr(frB)))),
+                                IRExpr_Mux0X(unop(Iop_32to8,
+                                                  binop(Iop_Shr32,
+                                                        unop(Iop_64HIto32,
+                                                             unop(Iop_ReinterpF64asI64,
+                                                                  mkexpr(frB))), mkU8(31))),
+                                             binop(Iop_I64StoF64, mkU32(0), mkexpr(r_tmp64) ),
+                                             unop(Iop_NegF64,
+                                                  unop( Iop_AbsF64,
+                                                        binop(Iop_I64StoF64, mkU32(0),
+                                                              mkexpr(r_tmp64)) )) ),
+                                mkexpr(frB)));
+      break;
+
    default:
       vex_printf("dis_fp_round(ppc)(opc2)\n");
       return False;
    }
-
+putFR:
    putFReg( frD_addr, mkexpr(frD) );
 
    if (set_FPRF) {
@@ -6595,6 +7385,86 @@ static Bool dis_fp_round ( UInt theInstr )
    return True;
 }
 
+/*
+  Floating Point Pair Instructions
+*/
+static Bool dis_fp_pair ( UInt theInstr )
+{
+   /* X-Form/DS-Form */
+   UChar  opc1         = ifieldOPC(theInstr);
+   UChar  frT_hi_addr  = ifieldRegDS(theInstr);
+   UChar  frT_lo_addr  = frT_hi_addr + 1;
+   UChar  rA_addr      = ifieldRegA(theInstr);
+   UChar  rB_addr      = ifieldRegB(theInstr);
+   UInt  uimm16        = ifieldUIMM16(theInstr);
+   Int    simm16       = extend_s_16to32(uimm16);
+   UInt   opc2         = ifieldOPClo10(theInstr);
+   IRType ty           = mode64 ? Ity_I64 : Ity_I32;
+   IRTemp EA_hi        = newTemp(ty);
+   IRTemp EA_lo        = newTemp(ty);
+   IRTemp frT_hi       = newTemp(Ity_F64);
+   IRTemp frT_lo       = newTemp(Ity_F64);
+   UChar b0            = ifieldBIT0(theInstr);
+   Bool is_load        = 0;
+
+   if ((frT_hi_addr %2) != 0) {
+      vex_printf("dis_fp_pair(ppc) : odd frT register\n");
+      return False;
+   }
+
+   switch (opc1) {
+   case 0x1F: // register offset
+      switch(opc2) {
+      case 0x317:     // lfdpx (FP Load Double Pair X-form, ISA 2.05  p125)
+         DIP("ldpx fr%u,r%u,r%u\n", frT_hi_addr, rA_addr, rB_addr);
+         is_load = 1;
+         break;
+      case 0x397:     // stfdpx (FP STORE Double Pair X-form, ISA 2.05  p125)
+         DIP("stdpx fr%u,r%u,r%u\n", frT_hi_addr, rA_addr, rB_addr);
+         break;
+      default:
+         vex_printf("dis_fp_pair(ppc) : X-form wrong opc2\n");
+         return False;
+      }
+
+      if (b0 != 0) {
+         vex_printf("dis_fp_pair(ppc)(0x1F,b0)\n");
+         return False;
+      }
+      assign( EA_hi, ea_rAor0_idxd( rA_addr, rB_addr ) );
+      break;
+   case 0x39: // lfdp (FP Load Double Pair DS-form, ISA 2.05  p125)
+      DIP("lfdp fr%u,%d(r%u)\n", frT_hi_addr, simm16, rA_addr);
+      assign( EA_hi, ea_rAor0_simm( rA_addr, simm16  ) );
+      is_load = 1;
+      break;
+   case 0x3d: // stfdp (FP Store Double Pair DS-form, ISA 2.05  p125)
+      DIP("stfdp fr%u,%d(r%u)\n", frT_hi_addr, simm16, rA_addr);
+      assign( EA_hi, ea_rAor0_simm( rA_addr, simm16  ) );
+      break;
+   default:   // immediate offset
+      vex_printf("dis_fp_pair(ppc)(instr)\n");
+      return False;
+   }
+
+   if (mode64)
+      assign( EA_lo, binop(Iop_Add64, mkexpr(EA_hi), mkU64(8)) );
+   else
+      assign( EA_lo, binop(Iop_Add32, mkexpr(EA_hi), mkU32(8)) );
+
+   assign( frT_hi, getFReg(frT_hi_addr) );
+   assign( frT_lo, getFReg(frT_lo_addr) );
+
+   if (is_load) {
+      putFReg( frT_hi_addr, loadBE(Ity_F64, mkexpr(EA_hi)) );
+      putFReg( frT_lo_addr, loadBE(Ity_F64, mkexpr(EA_lo)) );
+   } else {
+      storeBE( mkexpr(EA_hi), mkexpr(frT_hi) );
+      storeBE( mkexpr(EA_lo), mkexpr(frT_lo) );
+   }
+
+   return True;
+}
 
 
 /*
@@ -6605,15 +7475,19 @@ static Bool dis_fp_move ( UInt theInstr )
    /* X-Form */
    UChar opc1     = ifieldOPC(theInstr);
    UChar frD_addr = ifieldRegDS(theInstr);
-   UChar b16to20  = ifieldRegA(theInstr);
+   UChar frA_addr = ifieldRegA(theInstr);
    UChar frB_addr = ifieldRegB(theInstr);
    UInt  opc2     = ifieldOPClo10(theInstr);
    UChar flag_rC  = ifieldBIT0(theInstr);
 
    IRTemp frD = newTemp(Ity_F64);
    IRTemp frB = newTemp(Ity_F64);
+   IRTemp itmpB = newTemp(Ity_F64);
+   IRTemp frA;
+   IRTemp signA;
+   IRTemp hiD;
 
-   if (opc1 != 0x3F || b16to20 != 0) {
+   if (opc1 != 0x3F || (frA_addr != 0 && opc2 != 0x008)) {
       vex_printf("dis_fp_move(ppc)(instr)\n");
       return False;
    }
@@ -6621,6 +7495,39 @@ static Bool dis_fp_move ( UInt theInstr )
    assign( frB, getFReg(frB_addr));
 
    switch (opc2) {
+   case 0x008: // fcpsgn (Floating Copy Sign, ISA_V2.05 p126)
+      DIP("fcpsgn%s fr%u,fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frA_addr,
+          frB_addr);
+      signA = newTemp(Ity_I32);
+      hiD = newTemp(Ity_I32);
+      itmpB = newTemp(Ity_I64);
+      frA = newTemp(Ity_F64);
+      assign( frA, getFReg(frA_addr) );
+
+      /* get A's sign bit */
+      assign(signA, binop(Iop_And32,
+                          unop(Iop_64HIto32, unop(Iop_ReinterpF64asI64,
+                                                  mkexpr(frA))),
+                          mkU32(0x80000000)) );
+
+      assign( itmpB, unop(Iop_ReinterpF64asI64, mkexpr(frB)) );
+
+      /* mask off B's sign bit and or in A's sign bit */
+      assign(hiD, binop(Iop_Or32,
+                        binop(Iop_And32,
+                              unop(Iop_64HIto32,
+                                   mkexpr(itmpB)),  /* frB's high 32 bits */
+                              mkU32(0x7fffffff)),
+                        mkexpr(signA)) );
+
+      /* combine hiD/loB into frD */
+      assign( frD, unop(Iop_ReinterpI64asF64,
+                        binop(Iop_32HLto64,
+                              mkexpr(hiD),
+                              unop(Iop_64to32,
+                                   mkexpr(itmpB)))) );   /* frB's low 32 bits */
+      break;
+
    case 0x028: // fneg (Floating Negate, PPC32 p416)
       DIP("fneg%s fr%u,fr%u\n", flag_rC ? ".":"", frD_addr, frB_addr);
       assign( frD, unop( Iop_NegF64, mkexpr(frB) ));
@@ -6761,27 +7668,34 @@ static Bool dis_fp_scr ( UInt theInstr )
    case 0x2C7: { // mtfsf (Move to FPSCR Fields, PPC32 p480)
       UChar b25      = toUChar( IFIELD(theInstr, 25, 1) );
       UChar FM       = toUChar( IFIELD(theInstr, 17, 8) );
-      UChar b16      = toUChar( IFIELD(theInstr, 16, 1) );
       UChar frB_addr = ifieldRegB(theInstr);
       IRTemp frB   = newTemp(Ity_F64);
       IRTemp rB_32 = newTemp(Ity_I32);
       Int i, mask;
 
-      if (b25 != 0 || b16 != 0) {
-         vex_printf("dis_fp_scr(ppc)(instr,mtfsf)\n");
-         return False;
-      }      
-      DIP("mtfsf%s %d,fr%u\n", flag_rC ? ".":"", FM, frB_addr);
+      if (b25 == 1) {
+         /* new 64 bit move variant for power 6.  If L field (bit 25) is
+          * a one do a full 64 bit move.  Note, the FPSCR is not really
+          * properly modeled.  This instruciton only changes the value of
+          * the rounding mode.  The HW exception bits do not get set in
+          * the simulator.  1/12/09
+          */
+         DIP("mtfsf%s %d,fr%u (L=1)\n", flag_rC ? ".":"", FM, frB_addr);
+         mask = 0xFF;
+
+      } else {
+         DIP("mtfsf%s %d,fr%u\n", flag_rC ? ".":"", FM, frB_addr);
+         // Build 32bit mask from FM:
+         mask = 0;
+         for (i=0; i<8; i++) {
+            if ((FM & (1<<(7-i))) == 1) {
+               mask |= 0xF << (7-i);
+            }
+         }
+      }
       assign( frB, getFReg(frB_addr));
       assign( rB_32, unop( Iop_64to32,
                            unop( Iop_ReinterpF64asI64, mkexpr(frB) )));
-      // Build 32bit mask from FM:
-      mask = 0;
-      for (i=0; i<8; i++) {
-         if ((FM & (1<<(7-i))) == 1) {
-            mask |= 0xF << (7-i);
-         }
-      }
       putGST_masked( PPC_GST_FPSCR, mkexpr(rB_32), mask );
       break;
    }
@@ -6895,6 +7809,722 @@ static Bool dis_av_procctl ( UInt theInstr )
    return True;
 }
 
+/*
+ *
+ */
+static Bool
+dis_vx_conv ( UInt theInstr, UInt opc2 )
+{
+   /* XX2-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT( theInstr );
+   UChar XB = ifieldRegXB( theInstr );
+   IRTemp frB = newTemp(Ity_F64);
+   IRTemp r_tmp64 = newTemp(Ity_I64);
+   IRExpr* rm = get_IR_roundingmode();
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_conv(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign(frB, unop(Iop_ReinterpI64asF64, unop(Iop_V128HIto64, getVSReg( XB ))));
+   /* For all the VSX convert instructions, the contents of doubleword element 1
+    * of VSX[XT] are undefined after the operation; therefore, we can simply
+    * move the entire array element where it makes sense to do so.
+    */
+
+   switch (opc2) {
+   case 0x2B0:
+      // xscvdpsxds (VSX Scalar truncate Double-Precision to integer and Convert
+      //             to Signed Integer Doubleword format with Saturate)
+      DIP("xscvdpsxds fr%u,fr%u\n",  (UInt)XT, (UInt)XB);
+      putVSReg( XT,
+                   binop( Iop_64HLtoV128, binop( Iop_F64toI64S,
+                                                 mkU32( Irrm_ZERO ),
+                                                 mkexpr( frB ) ), mkU64( 0 ) ) );
+      break;
+   case 0x2F0:
+      // xscvsxddp (VSX Scalar Convert and round Signed Integer Doubleword to
+      //            Double-Precision format)
+      DIP("xscvsxddp v%u,v%u\n",  (UInt)XT, (UInt)XB);
+
+      assign( r_tmp64, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+      putVSReg( XT,
+                   binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                binop( Iop_I64StoF64, rm,
+                                                       mkexpr( r_tmp64 ) ) ),
+                          mkU64( 0 ) ) );
+      break;
+   case 0x2D0:
+      // xscvuxddp (VSX Scalar Convert and round Unsigned Integer Doubleword to
+      //            Double-Precision format)
+      DIP("xscvuxddp v%u,v%u\n",  (UInt)XT, (UInt)XB);
+
+      assign( r_tmp64, unop( Iop_ReinterpF64asI64, mkexpr(frB)) );
+      putVSReg( XT,
+                   binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                binop( Iop_I64UtoF64, rm,
+                                                       mkexpr( r_tmp64 ) ) ),
+                          mkU64( 0 ) ) );
+      break;
+
+   default:
+      vex_printf( "dis_vx_conv(ppc)(opc2)\n" );
+      return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Scalar Floating Point Arithmetic Instructions
+ */
+static Bool
+dis_vx_arith ( UInt theInstr, UInt opc2 )
+{
+   /* XX3-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT( theInstr );
+   UChar XA = ifieldRegXA( theInstr );
+   UChar XB = ifieldRegXB( theInstr );
+   IRExpr* rm = get_IR_roundingmode();
+   IRTemp frA = newTemp(Ity_F64);
+   IRTemp frB = newTemp(Ity_F64);
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_arith(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign(frA, unop(Iop_ReinterpI64asF64, unop(Iop_V128HIto64, getVSReg( XA ))));
+   assign(frB, unop(Iop_ReinterpI64asF64, unop(Iop_V128HIto64, getVSReg( XB ))));
+
+   /* For all the VSX sclar arithmetic instructions, the contents of doubleword element 1
+    * of VSX[XT] are undefined after the operation; therefore, we can simply set
+    * element to zero where it makes sense to do so.
+    */
+   switch (opc2) {
+      case 0x080: // xsadddp (VSX scalar add double-precision)
+         DIP("xsadddp v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    triop( Iop_AddF64, rm,
+                                                           mkexpr( frA ),
+                                                           mkexpr( frB ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+      case 0x0E0: // xsdivdp (VSX scalar divide double-precision)
+         DIP("xsdivdp v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    triop( Iop_DivF64, rm,
+                                                           mkexpr( frA ),
+                                                           mkexpr( frB ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+      case 0x084: case 0x0A4: // xsmaddadp, xsmaddmdp (VSX scalar multiply-add double-precision)
+      {
+         IRTemp frT = newTemp(Ity_F64);
+         Bool mdp = opc2 == 0x0A4;
+         DIP("xsmadd%sdp v%d,v%d,v%d\n", mdp ? "m" : "a", (UInt)XT, (UInt)XA, (UInt)XB);
+         assign( frT, unop( Iop_ReinterpI64asF64, unop( Iop_V128HIto64,
+                                                        getVSReg( XT ) ) ) );
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    qop( Iop_MAddF64, rm,
+                                                         mkexpr( frA ),
+                                                         mkexpr( mdp ? frT : frB ),
+                                                         mkexpr( mdp ? frB : frT ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+      }
+      case 0x0C4: case 0x0E4: // xsmsubadp, xsmsubmdp (VSX scalar multiply-subtract double-precision)
+      {
+         IRTemp frT = newTemp(Ity_F64);
+         Bool mdp = opc2 == 0x0E4;
+         DIP("xsmsub%sdp v%d,v%d,v%d\n", mdp ? "m" : "a", (UInt)XT, (UInt)XA, (UInt)XB);
+         assign( frT, unop( Iop_ReinterpI64asF64, unop( Iop_V128HIto64,
+                                                        getVSReg( XT ) ) ) );
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    qop( Iop_MSubF64, rm,
+                                                         mkexpr( frA ),
+                                                         mkexpr( mdp ? frT : frB ),
+                                                         mkexpr( mdp ? frB : frT ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+      }
+      case 0x284: case 0x2A4: // xsnmaddadp, xsnmaddmdp (VSX scalar multiply-add double-precision)
+      {
+         /* TODO: mpj -- Naturally, I expected to be able to leverage the implementation
+          * of fnmadd and use pretty much the same code. However, that code has a bug in the
+          * way it blindly negates the signbit, even if the floating point result is a NaN.
+          * So, the TODO is to fix fnmadd (which I'll do in a different patch).
+          */
+         ULong signbit_mask = 0x8000000000000000ULL;
+         Bool mdp = opc2 == 0x2A4;
+         IRTemp frT = newTemp(Ity_F64);
+         IRTemp maddResult = newTemp(Ity_I64);
+         IRTemp negatedResult = newTemp(Ity_I64);
+         IRTemp signbit_32 = newTemp(Ity_I32);
+         IRTemp resultantSignbit = newTemp(Ity_I1);
+
+         DIP("xsnmadd%sdp v%d,v%d,v%d\n", mdp ? "m" : "a", (UInt)XT, (UInt)XA, (UInt)XB);
+         assign( frT, unop( Iop_ReinterpI64asF64, unop( Iop_V128HIto64,
+                                                        getVSReg( XT ) ) ) );
+         assign( maddResult, unop( Iop_ReinterpF64asI64, qop( Iop_MAddF64, rm,
+                                                              mkexpr( frA ),
+                                                              mkexpr( mdp ? frT : frB ),
+                                                              mkexpr( mdp ? frB : frT ) ) ) );
+         assign( signbit_32, binop( Iop_Shr32,
+                                unop( Iop_64HIto32,
+                                       binop( Iop_And64, mkexpr( maddResult ),
+                                              mkU64( signbit_mask ) ) ),
+                                       mkU8( 31 ) ) );
+         /* We negate the signbit if and only if the intermediate result from the
+          * multiply-add was NOT a NaN.  This is an XNOR predicate.
+          */
+         assign( resultantSignbit,
+                 unop( Iop_Not1,
+                       binop( Iop_CmpEQ32,
+                                     binop( Iop_Xor32, mkexpr( signbit_32 ),
+                                            unop( Iop_1Uto32,
+                                                  is_NaN( maddResult ) ) ),
+                                     mkU32( 1 ) ) ) );
+
+         assign( negatedResult,
+                 binop( Iop_Or64, binop( Iop_And64, mkexpr( maddResult ),
+                                         mkU64( ~signbit_mask ) ),
+                        binop( Iop_32HLto64,
+                               binop( Iop_Shl32,
+                                      unop( Iop_1Uto32,
+                                            mkexpr( resultantSignbit ) ),
+                                      mkU8( 31 ) ), mkU32( 0 ) ) ) );
+
+         putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( negatedResult ),
+                              mkU64( 0 ) ) );
+         break;
+      }
+      case 0x0C0: // xsmuldp (VSX Scalar Multiply Double-Precision)
+         DIP("xsmuldp v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    triop( Iop_MulF64, rm,
+                                                           mkexpr( frA ),
+                                                           mkexpr( frB ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+      case 0x0A0: // xssubdp (VSX Scalar Subtract Double-Precision)
+         DIP("xssubdp v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
+                                                    triop( Iop_SubF64, rm,
+                                                           mkexpr( frA ),
+                                                           mkexpr( frB ) ) ),
+                              mkU64( 0 ) ) );
+         break;
+
+      default:
+         vex_printf( "dis_vx_arith(ppc)(opc2)\n" );
+         return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Floating Point Compare Instructions
+ */
+static Bool
+dis_vx_cmp( UInt theInstr, UInt opc2 )
+{
+   /* XX3-Form and XX2-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar crfD     = toUChar( IFIELD( theInstr, 23, 3 ) );
+   IRTemp ccPPC32 = newTemp(Ity_I32);
+   IRTemp ccIR    = newTemp(Ity_I32);
+   UChar XA       = ifieldRegXA ( theInstr );
+   UChar XB       = ifieldRegXB ( theInstr );
+   IRTemp frA     = newTemp(Ity_F64);
+   IRTemp frB     = newTemp(Ity_F64);
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_cmp(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign(frA, unop(Iop_ReinterpI64asF64, unop(Iop_V128HIto64, getVSReg( XA ))));
+   assign(frB, unop(Iop_ReinterpI64asF64, unop(Iop_V128HIto64, getVSReg( XB ))));
+   switch (opc2) {
+      case 0x08C: case 0x0AC: // xscmpudp, xscmpodp
+         /* Note: Differences between xscmpudp and xscmpodp are only in
+          * exception flag settings, which aren't supported anyway. */
+         DIP("xscmp%sdp crf%d,fr%u,fr%u\n", opc2 == 0x08c ? "u" : "o",
+                                           crfD, (UInt)XA, (UInt)XB);
+         assign( ccIR, binop(Iop_CmpF64, mkexpr(frA), mkexpr(frB)) );
+
+         /* Map compare result from IR to PPC32 */
+         /*
+           FP cmp result | PPC | IR
+           --------------------------
+           UN            | 0x1 | 0x45
+           EQ            | 0x2 | 0x40
+           GT            | 0x4 | 0x00
+           LT            | 0x8 | 0x01
+         */
+
+         // ccPPC32 = Shl(1, (~(ccIR>>5) & 2)
+         //                    | ((ccIR ^ (ccIR>>6)) & 1)
+         assign(
+            ccPPC32,
+            binop(
+               Iop_Shl32,
+               mkU32(1),
+               unop(
+                  Iop_32to8,
+                  binop(
+                     Iop_Or32,
+                     binop(
+                        Iop_And32,
+                        unop(
+                           Iop_Not32,
+                           binop(Iop_Shr32, mkexpr(ccIR), mkU8(5))
+                        ),
+                        mkU32(2)
+                     ),
+                     binop(
+                        Iop_And32,
+                        binop(
+                           Iop_Xor32,
+                           mkexpr(ccIR),
+                           binop(Iop_Shr32, mkexpr(ccIR), mkU8(6))
+                        ),
+                        mkU32(1)
+                     )
+                  )
+               )
+            )
+         );
+
+         putGST_field( PPC_GST_CR, mkexpr(ccPPC32), crfD );
+
+         break;
+      default:
+         vex_printf( "dis_vx_cmp(ppc)(opc2)\n" );
+         return False;
+   }
+   return True;
+}
+/*
+ * VSX Move Instructions
+ */
+static Bool
+dis_vx_move( UInt theInstr, UInt opc2 )
+{
+   /* XX3-Form and XX2-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT ( theInstr );
+   UChar XA = ifieldRegXA ( theInstr );
+   UChar XB = ifieldRegXB ( theInstr );
+   IRTemp vA = newTemp( Ity_V128 );
+   IRTemp vB = newTemp( Ity_V128 );
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_move(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign( vA, getVSReg( XA ) );
+   assign( vB, getVSReg( XB ) );
+
+   /* For all the VSX move instructions, the contents of doubleword element 1
+    * of VSX[XT] are undefined after the operation; therefore, we can simply
+    * move the entire array element where it makes sense to do so.
+    */
+
+   switch (opc2) {
+      case 0x2B2: // xsabsdp (VSX scalar absolute value double-precision
+      {
+         /* Move abs val of dw 0 of VSX[XB] to dw 0 of VSX[XT]. */
+         IRTemp absVal = newTemp(Ity_V128);
+         assign(absVal, binop(Iop_ShrV128, binop(Iop_ShlV128, mkexpr(vB), mkU8(1)), mkU8(1)));
+         DIP("xsabsdp v%d,v%d\n", (UInt)XT, (UInt)XB);
+         putVSReg(XT, mkexpr(absVal));
+         break;
+      }
+      case 0x2C0: // xscpsgndp
+      {
+         /* Scalar copy sign double-precision */
+         IRTemp vecA_signbit = newTemp(Ity_V128);
+         IRTemp vecB_no_signbit = newTemp(Ity_V128);
+         IRTemp vec_result = newTemp(Ity_V128);
+         DIP("xscpsgndp v%d,v%d v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         assign( vecB_no_signbit, binop( Iop_ShrV128, binop( Iop_ShlV128,
+                                                             mkexpr( vB ),
+                                                             mkU8( 1 ) ),
+                                         mkU8( 1 ) ) );
+         assign( vecA_signbit, binop( Iop_ShlV128, binop( Iop_ShrV128,
+                                                          mkexpr( vA ),
+                                                          mkU8( 127 ) ),
+                                      mkU8( 127 ) ) );
+         assign( vec_result, binop( Iop_OrV128, mkexpr(vecA_signbit), mkexpr( vecB_no_signbit ) ) );
+         putVSReg(XT, mkexpr(vec_result));
+         break;
+      }
+      case 0x2D2: // xsnabsdp
+      {
+         /* Scalar negative absolute value double-precision */
+         IRTemp vec_neg_signbit = newTemp(Ity_V128);
+         DIP("xsnabsdp v%d,v%d\n", (UInt)XT, (UInt)XB);
+         assign( vec_neg_signbit, unop( Iop_NotV128, binop( Iop_ShrV128,
+                                                            mkV128( 0xffff ),
+                                                            mkU8( 1 ) ) ) );
+         putVSReg(XT, binop(Iop_OrV128, mkexpr(vec_neg_signbit), mkexpr(vB)));
+         break;
+      }
+      case 0x2F2: // xsnegdp
+      {
+         /* Scalar negate double-precision */
+         IRTemp vecB_no_signbit = newTemp(Ity_V128);
+         IRTemp vecB_signbit_comp = newTemp(Ity_V128);
+         DIP("xsnabsdp v%d,v%d\n", (UInt)XT, (UInt)XB);
+         assign( vecB_no_signbit, binop( Iop_ShrV128, binop( Iop_ShlV128,
+                                                             mkexpr( vB ),
+                                                             mkU8( 1 ) ),
+                                         mkU8( 1 ) ) );
+         assign( vecB_signbit_comp, binop( Iop_ShlV128,
+                                           unop( Iop_NotV128,
+                                                 binop( Iop_ShrV128,
+                                                        mkexpr( vB ),
+                                                        mkU8( 127 ) ) ),
+                                           mkU8( 127 ) ) );
+         putVSReg( XT, binop( Iop_OrV128, mkexpr( vecB_no_signbit ),
+                              mkexpr( vecB_signbit_comp ) ) );
+         break;
+      }
+
+      default:
+         vex_printf( "dis_vx_move(ppc)(opc2)\n" );
+         return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Logical Instructions
+ */
+static Bool
+dis_vx_logic ( UInt theInstr, UInt opc2 )
+{
+   /* XX3-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT ( theInstr );
+   UChar XA = ifieldRegXA ( theInstr );
+   UChar XB = ifieldRegXB ( theInstr );
+   IRTemp vA = newTemp( Ity_V128 );
+   IRTemp vB = newTemp( Ity_V128 );
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_logic(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign( vA, getVSReg( XA ) );
+   assign( vB, getVSReg( XB ) );
+
+   switch (opc2) {
+      case 0x268: // xxlxor
+         DIP("xxlxor v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_XorV128, mkexpr( vA ), mkexpr( vB ) ) );
+         break;
+      case 0x248: // xxlor
+         DIP("xxlor v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_OrV128, mkexpr( vA ), mkexpr( vB ) ) );
+         break;
+      case 0x288: // xxlnor
+         DIP("xxlnor v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, unop( Iop_NotV128, binop( Iop_OrV128, mkexpr( vA ),
+                                                 mkexpr( vB ) ) ) );
+         break;
+      case 0x208: // xxland
+         DIP("xxland v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), mkexpr( vB ) ) );
+         break;
+      case 0x228: //xxlandc
+         DIP("xxlandc v%d,v%d,v%d\n", (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), unop( Iop_NotV128,
+                                                               mkexpr( vB ) ) ) );
+         break;
+      default:
+         vex_printf( "dis_vx_logic(ppc)(opc2)\n" );
+         return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Load Instructions
+ * NOTE: VSX supports word-aligned storage access.
+ */
+static Bool
+dis_vx_load ( UInt theInstr )
+{
+   /* XX1-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT ( theInstr );
+   UChar rA_addr = ifieldRegA( theInstr );
+   UChar rB_addr = ifieldRegB( theInstr );
+   UInt opc2 = ifieldOPClo10( theInstr );
+
+   IRType ty = mode64 ? Ity_I64 : Ity_I32;
+   IRTemp EA = newTemp( ty );
+
+   if (opc1 != 0x1F) {
+      vex_printf( "dis_vx_load(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
+
+   switch (opc2) {
+   case 0x24C: // lxsdx
+   {
+      IRExpr * exp;
+      DIP("lxsdx %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
+      exp = loadBE( Ity_I64, mkexpr( EA ) );
+      // We need to pass an expression of type Ity_V128 with putVSReg, but the load
+      // we just performed is only a DW.  But since the contents of VSR[XT] element 1
+      // are undefined after this operation, we can just do a splat op.
+      putVSReg( XT, binop( Iop_64HLtoV128, exp, exp ) );
+      break;
+   }
+   case 0x34C: // lxvd2x
+   {
+      IROp addOp = ty == Ity_I64 ? Iop_Add64 : Iop_Add32;
+      IRExpr * high, *low;
+      ULong ea_off = 8;
+      IRExpr* high_addr;
+      DIP("lxvd2x %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
+      high = loadBE( Ity_I64, mkexpr( EA ) );
+      high_addr = binop( addOp, mkexpr( EA ), ty == Ity_I64 ? mkU64( ea_off )
+            : mkU32( ea_off ) );
+      low = loadBE( Ity_I64, high_addr );
+      putVSReg( XT, binop( Iop_64HLtoV128, high, low ) );
+      break;
+   }
+   case 0x14C: // lxvdsx
+   {
+      IRTemp data = newTemp(Ity_I64);
+      DIP("lxvdsx %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
+      assign( data, loadBE( Ity_I64, mkexpr( EA ) ) );
+      putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( data ), mkexpr( data ) ) );
+      break;
+   }
+   case 0x30C:
+   {
+      IRExpr * t3, *t2, *t1, *t0;
+      UInt ea_off = 0;
+      IRExpr* irx_addr;
+
+      DIP("lxvw4x %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
+      t3 = loadBE( Ity_I32,  mkexpr( EA ) );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      t2 = loadBE( Ity_I32, irx_addr );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      t1 = loadBE( Ity_I32, irx_addr );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      t0 = loadBE( Ity_I32, irx_addr );
+      putVSReg( XT, binop( Iop_64HLtoV128, binop( Iop_32HLto64, t3, t2 ),
+                           binop( Iop_32HLto64, t1, t0 ) ) );
+      break;
+   }
+   default:
+      vex_printf( "dis_vx_load(ppc)(opc2)\n" );
+      return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Store Instructions
+ * NOTE: VSX supports word-aligned storage access.
+ */
+static Bool
+dis_vx_store ( UInt theInstr )
+{
+   /* XX1-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XS = ifieldRegXS( theInstr );
+   UChar rA_addr = ifieldRegA( theInstr );
+   UChar rB_addr = ifieldRegB( theInstr );
+   IRTemp vS = newTemp( Ity_V128 );
+   UInt opc2 = ifieldOPClo10( theInstr );
+
+   IRType ty = mode64 ? Ity_I64 : Ity_I32;
+   IRTemp EA = newTemp( ty );
+
+   if (opc1 != 0x1F) {
+      vex_printf( "dis_vx_store(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
+   assign( vS, getVSReg( XS ) );
+
+   switch (opc2) {
+   case 0x2CC:
+   {
+      IRExpr * high64;
+      DIP("stxsdx %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
+      high64 = unop( Iop_V128HIto64, mkexpr( vS ) );
+      storeBE( mkexpr( EA ), high64 );
+      break;
+   }
+   case 0x3CC:
+   {
+      IRExpr * high64, *low64;
+      DIP("stxvd2x %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
+      high64 = unop( Iop_V128HIto64, mkexpr( vS ) );
+      low64 = unop( Iop_V128to64, mkexpr( vS ) );
+      storeBE( mkexpr( EA ), high64 );
+      storeBE( binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ), ty == Ity_I64 ? mkU64( 8 )
+            : mkU32( 8 ) ), low64 );
+      break;
+   }
+   case 0x38C:
+   {
+      UInt ea_off = 0;
+      IRExpr* irx_addr;
+      IRTemp hi64 = newTemp( Ity_I64 );
+      IRTemp lo64 = newTemp( Ity_I64 );
+
+      DIP("stxvw4x %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
+
+      // This instruction supports word-aligned stores, so EA may not be
+      // quad-word aligned.  Therefore, do 4 individual word-size stores.
+      assign( hi64, unop( Iop_V128HIto64, mkexpr( vS ) ) );
+      assign( lo64, unop( Iop_V128to64, mkexpr( vS ) ) );
+
+      storeBE( mkexpr( EA ), unop( Iop_64HIto32, mkexpr( hi64 ) ) );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      storeBE( irx_addr, unop( Iop_64to32, mkexpr( hi64 ) ) );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      storeBE( irx_addr, unop( Iop_64HIto32, mkexpr( lo64 ) ) );
+      ea_off += 4;
+      irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
+                        ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
+      storeBE( irx_addr, unop( Iop_64to32, mkexpr( lo64 ) ) );
+
+      break;
+   }
+   default:
+      vex_printf( "dis_vx_store(ppc)(opc2)\n" );
+      return False;
+   }
+   return True;
+}
+
+/*
+ * VSX Permute Instructions
+ */
+static Bool
+dis_vx_permute( UInt theInstr, UInt opc2 )
+{
+   /* XX3-Form */
+   UChar opc1 = ifieldOPC( theInstr );
+   UChar XT = ifieldRegXT ( theInstr );
+   UChar XA = ifieldRegXA ( theInstr );
+   UChar XB = ifieldRegXB ( theInstr );
+   IRTemp vT = newTemp( Ity_V128 );
+   IRTemp vA = newTemp( Ity_V128 );
+   IRTemp vB = newTemp( Ity_V128 );
+
+   if (opc1 != 0x3C) {
+      vex_printf( "dis_vx_permute(ppc)(instr)\n" );
+      return False;
+   }
+
+   assign( vA, getVSReg( XA ) );
+   assign( vB, getVSReg( XB ) );
+
+   switch (opc2) {
+      case 0x8: // xxsldwi (VSX Shift Left Double by Word Immediate)
+      {
+         UChar SHW = ifieldSHW ( theInstr );
+         IRTemp result = newTemp(Ity_V128);
+         if ( SHW != 0 ) {
+             IRTemp hi = newTemp(Ity_V128);
+             IRTemp lo = newTemp(Ity_V128);
+             assign( hi, binop(Iop_ShlV128, mkexpr(vA), mkU8(SHW*32)) );
+             assign( lo, binop(Iop_ShrV128, mkexpr(vB), mkU8(128-SHW*32)) );
+             assign ( result, binop(Iop_OrV128, mkexpr(hi), mkexpr(lo)) );
+         } else
+             assign ( result, mkexpr(vA) );
+         DIP("xxsldwi v%d,v%d,v%d,%d\n", (UInt)XT, (UInt)XA, (UInt)XB, (UInt)SHW);
+         putVSReg( XT, mkexpr(result) );
+         break;
+      }
+      case 0x28: // xpermdi (VSX Permute Doubleword Immediate)
+      {
+         UChar DM = ifieldDM ( theInstr );
+         IRTemp hi = newTemp(Ity_I64);
+         IRTemp lo = newTemp(Ity_I64);
+
+         if (DM & 0x2)
+           assign( hi, unop(Iop_V128to64, mkexpr(vA)) );
+         else
+           assign( hi, unop(Iop_V128HIto64, mkexpr(vA)) );
+
+         if (DM & 0x1)
+           assign( lo, unop(Iop_V128to64, mkexpr(vB)) );
+         else
+           assign( lo, unop(Iop_V128HIto64, mkexpr(vB)) );
+
+         assign( vT, binop(Iop_64HLtoV128, mkexpr(hi), mkexpr(lo)) );
+
+         DIP("xxpermdi v%d,v%d,v%d,0x%x\n", (UInt)XT, (UInt)XA, (UInt)XB, (UInt)DM);
+         putVSReg( XT, mkexpr( vT ) );
+         break;
+      }
+      case 0x48: // xxmrghw (VSX Merge High Word)
+      case 0xc8: // xxmrglw (VSX Merge Low Word)
+      {
+         char type = (opc2 == 0x48) ? 'h' : 'l';
+         IROp word_op = (opc2 == 0x48) ? Iop_V128HIto64 : Iop_V128to64;
+         IRTemp a64 = newTemp(Ity_I64);
+         IRTemp ahi32 = newTemp(Ity_I32);
+         IRTemp alo32 = newTemp(Ity_I32);
+         IRTemp b64 = newTemp(Ity_I64);
+         IRTemp bhi32 = newTemp(Ity_I32);
+         IRTemp blo32 = newTemp(Ity_I32);
+
+         assign( a64, unop(word_op, mkexpr(vA)) );
+         assign( ahi32, unop(Iop_64HIto32, mkexpr(a64)) );
+         assign( alo32, unop(Iop_64to32, mkexpr(a64)) );
+
+         assign( b64, unop(word_op, mkexpr(vB)) );
+         assign( bhi32, unop(Iop_64HIto32, mkexpr(b64)) );
+         assign( blo32, unop(Iop_64to32, mkexpr(b64)) );
+
+         assign( vT, binop(Iop_64HLtoV128,
+                           binop(Iop_32HLto64, mkexpr(ahi32), mkexpr(bhi32)),
+                           binop(Iop_32HLto64, mkexpr(alo32), mkexpr(blo32))) );
+
+         DIP("xxmrg%cw v%d,v%d,v%d\n", type, (UInt)XT, (UInt)XA, (UInt)XB);
+         putVSReg( XT, mkexpr( vT ) );
+         break;
+      }
+
+      default:
+         vex_printf( "dis_vx_permute(ppc)(opc2)\n" );
+         return False;
+   }
+   return True;
+}
+
 /*
   AltiVec Load Instructions
 */
@@ -7025,7 +8655,6 @@ static Bool dis_av_load ( VexAbiInfo* vbi, UInt theInstr )
    return True;
 }
 
-
 /*
   AltiVec Store Instructions
 */
@@ -8863,72 +10492,222 @@ static Bool dis_av_fp_convert ( UInt theInstr )
 }
 
 
+/* The 0x3C primary opcode (VSX category) uses several different forms of
+ * extended opcodes:
+ *   o XX2-form:
+ *      - [10:2] (IBM notation [21:29])
+ *   o XX3-form variants:
+ *       - variant 1: [10:3] (IBM notation [21:28])
+ *       - variant 2: [9:3] (IBM notation [22:28])
+ *       - variant 3: [7:3] (IBM notation [24:28])
+ *   o XX-4 form:
+ *      - [10:6] (IBM notation [21:25])
+ *
+ * The XX2-form needs bit 0 masked from the standard extended opcode
+ * as returned by ifieldOPClo10; the XX3-form needs bits 0 and 1 masked;
+ * and the XX4-form needs bits 0, 1, and 2 masked.  Additionally, the
+ * XX4 and XX3 (variants 2 and 3) forms need certain bits masked on the
+ * front end since their encoding does not begin at bit 21 like the standard
+ * format.
+ *
+ * The get_VSX60_opc2() function uses the vsx_insn array below to obtain the
+ * secondary opcode for such VSX instructions.
+ *
+*/
 
-/*------------------------------------------------------------*/
-/*--- POWER6 Instruction Translation                       ---*/
-/*------------------------------------------------------------*/
-
-static
-Bool dis_P6 ( UInt theInstr,
-              Bool allow_F, Bool allow_V, Bool allow_FX, Bool allow_GX)
-{
-   UInt opc, rd, ra, rb, opc2, dot;
 
-   /* This is a hack.  We should do P6 capability checking properly.
-      But anyway, make a guess at whether we should even try to handle
-      this instruction.  All P6 capable CPUs should be able to handle
-      F, V, FX and GX, so that seems like a good check. */
-   if (! (allow_F && allow_V && allow_FX && allow_GX) )
-      return False;
-   if (!mode64)
-      return False; /* only support P6 in 64-bit mode for now */
-
-   opc  = ifieldOPC(theInstr);     /* primary opcode */
-   rd   = ifieldRegDS(theInstr);   /* dst reg */
-   ra   = ifieldRegA(theInstr);    /* first source reg */
-   rb   = ifieldRegB(theInstr);    /* second source reg */
-   opc2 = ifieldOPClo10(theInstr); /* secondary opc, 10:1 */
-   dot  = ifieldBIT0(theInstr);    /* Rc field, bit 0 */
-
-   if (opc == 63 && ra == 0/*presumably*/ && opc2 == 488) {
-      /* frim (Floating Round to Integer Minus, PPC ISA 2.05 p137) */
-      if (dot) return False;
-      putFReg( rd, unop(Iop_RoundF64toF64_NegINF, getFReg( rb )) );
-      DIP("frim%s fr%u,fr%u\n", dot ? "." : "", rd, rb);
-      return True;
+struct vsx_insn {
+   UInt opcode;
+   Char * name;
+};
+
+//  ATTENTION:  Keep this array sorted on the opcocde!!!
+static struct vsx_insn vsx_all[] = {
+      { 0x8, "xxsldwi" },
+      { 0x18, "xxsel" },
+      { 0x28, "xxpermdi" },
+      { 0x48, "xxmrghw" },
+      { 0x80, "xsadddp" },
+      { 0x84, "xsmaddadp" },
+      { 0x8c, "xscmpudp" },
+      { 0x90, "xscvdpuxws" },
+      { 0x92, "xsrdpi" },
+      { 0x94, "xsrsqrtedp" },
+      { 0x96, "xssqrtdp" },
+      { 0xa0, "xssubdp" },
+      { 0xa4, "xsmaddmdp" },
+      { 0xac, "xscmpodp" },
+      { 0xb0, "xscvdpsxws" },
+      { 0xb2, "xsrdpiz" },
+      { 0xb4, "xsredp" },
+      { 0xc0, "xsmuldp" },
+      { 0xc4, "xsmsubadp" },
+      { 0xc8, "xxmrglw" },
+      { 0xd2, "xsrdpip" },
+      { 0xd4, "xstsqrtdp" },
+      { 0xd6, "xsrdpic" },
+      { 0xe0, "xsdivdp" },
+      { 0xe4, "xsmsubmdp" },
+      { 0xf2, "xsrdpim" },
+      { 0xf4, "xstdivdp" },
+      { 0x100, "xvaddsp" },
+      { 0x104, "xvmaddasp" },
+      { 0x10c, "xvcmpeqsp" },
+      { 0x110, "xvcvspuxws" },
+      { 0x112, "xvrspi" },
+      { 0x114, "xvrsqrtesp" },
+      { 0x116, "xvsqrtsp" },
+      { 0x120, "xvsubsp" },
+      { 0x124, "xvmaddmsp" },
+      { 0x12c, "xvcmpgtsp" },
+      { 0x130, "xvcvspsxws" },
+      { 0x132, "xvrspiz" },
+      { 0x134, "xvresp" },
+      { 0x140, "xvmulsp" },
+      { 0x144, "xvmsubasp" },
+      { 0x148, "xxspltw" },
+      { 0x14c, "xvcmpgesp" },
+      { 0x150, "xvcvuxwsp" },
+      { 0x152, "xvrspip" },
+      { 0x154, "xvtsqrtsp" },
+      { 0x156, "xvrspic" },
+      { 0x160, "xvdivsp" },
+      { 0x164, "xvmsubmsp" },
+      { 0x170, "xvcvsxwsp" },
+      { 0x172, "xvrspim" },
+      { 0x174, "xvtdivsp" },
+      { 0x180, "xvadddp" },
+      { 0x184, "xvmaddadp" },
+      { 0x18c, "xvcmpeqdp" },
+      { 0x190, "xvcvdpuxws" },
+      { 0x192, "xvrdpi" },
+      { 0x194, "xvrsqrtedp" },
+      { 0x196, "xvsqrtdp" },
+      { 0x1a0, "xvsubdp" },
+      { 0x1a4, "xvmaddmdp" },
+      { 0x1ac, "xvcmpgtdp" },
+      { 0x1b0, "xvcvdpsxws" },
+      { 0x1b2, "xvrdpiz" },
+      { 0x1b4, "xvredp" },
+      { 0x1c0, "xvmuldp" },
+      { 0x1c4, "xvmsubadp" },
+      { 0x1cc, "xvcmpgedp" },
+      { 0x1d0, "xvcvuxwdp" },
+      { 0x1d2, "xvrdpip" },
+      { 0x1d4, "xvtsqrtdp" },
+      { 0x1d6, "xvrdpic" },
+      { 0x1e0, "xvdivdp" },
+      { 0x1e4, "xvmsubmdp" },
+      { 0x1f0, "xvcvsxwdp" },
+      { 0x1f2, "xvrdpim" },
+      { 0x1f4, "xvtdivdp" },
+      { 0x208, "xxland" },
+      { 0x212, "xscvdpsp" },
+      { 0x228, "xxlandc" },
+      { 0x248 , "xxlor" },
+      { 0x268, "xxlxor" },
+      { 0x280, "xsmaxdp" },
+      { 0x284, "xsnmaddadp" },
+      { 0x288, "xxlnor" },
+      { 0x290, "xscvdpuxds" },
+      { 0x292, "xscvspdp" },
+      { 0x2a0, "xsmindp" },
+      { 0x2a4, "xsnmaddmdp" },
+      { 0x2b0, "xscvdpsxds" },
+      { 0x2b2, "xsabsdp" },
+      { 0x2c0, "xscpsgndp" },
+      { 0x2c4, "xsnmsubadp" },
+      { 0x2d0, "xscvuxddp" },
+      { 0x2d2, "xsnabsdp" },
+      { 0x2e4, "xsnmsubmdp" },
+      { 0x2f0, "xscvsxddp" },
+      { 0x2f2, "xsnegdp" },
+      { 0x300, "xvmaxsp" },
+      { 0x304, "xvnmaddasp" },
+      { 0x30c, "xvcmpeqsp." },
+      { 0x310, "xvcvspuxds" },
+      { 0x312, "xvcvdpsp" },
+      { 0x320, "xvminsp" },
+      { 0x324, "xvnmaddmsp" },
+      { 0x32c, "xvcmpgtsp." },
+      { 0x330, "xvcvspsxds" },
+      { 0x332, "xvabssp" },
+      { 0x340, "xvcpsgnsp" },
+      { 0x344, "xvnmsubasp" },
+      { 0x34c, "xvcmpgesp." },
+      { 0x350, "xvcvuxdsp" },
+      { 0x352, "xvnabssp" },
+      { 0x364, "xvnmsubmsp" },
+      { 0x370, "xvcvsxdsp" },
+      { 0x372, "xvnegsp" },
+      { 0x380, "xvmaxdp" },
+      { 0x384, "xvnmaddadp" },
+      { 0x38c, "xvcmpeqdp." },
+      { 0x390, "xvcvdpuxds" },
+      { 0x392, "xvcvspdp" },
+      { 0x3a0, "xvmindp" },
+      { 0x3a4, "xvnmaddmdp" },
+      { 0x3ac, "xvcmpgtdp." },
+      { 0x3b0, "xvcvdpsxds" },
+      { 0x3b2, "xvabsdp" },
+      { 0x3c0, "xvcpsgndp" },
+      { 0x3c4, "xvnmsubadp" },
+      { 0x3cc, "xvcmpgedp." },
+      { 0x3d0, "xvcvuxddp" },
+      { 0x3d2, "xvnabsdp" },
+      { 0x3e4, "xvnmsubmdp" },
+      { 0x3f0, "xvcvsxddp" },
+      { 0x3f2, "xvnegdp" }
+};
+#define VSX_ALL_LEN 135
+
+// ATTENTION: This search function assumes vsx_all array is sorted.
+static Int findVSXextOpCode(UInt opcode)
+{
+   Int low, mid, high;
+   low = 0;
+   high = VSX_ALL_LEN - 1;
+   while (low <= high) {
+      mid = (low + high)/2;
+      if (opcode < vsx_all[mid].opcode)
+         high = mid - 1;
+      else if (opcode > vsx_all[mid].opcode)
+         low = mid + 1;
+      else
+         return mid;
    }
+   return -1;
+}
 
-   if (opc == 63 && ra == 0/*presumably*/ && opc2 == 456) {
-      /* frip (Floating Round to Integer Plus, PPC ISA 2.05 p137) */
-      if (dot) return False;
-      putFReg( rd, unop(Iop_RoundF64toF64_PosINF, getFReg( rb )) );
-      DIP("frip%s fr%u,fr%u\n", dot ? "." : "", rd, rb);
-      return True;
-   }
 
-   if (opc == 63 && ra == 0/*presumably*/ && opc2 == 392) {
-      /* frin (Floating Round to Integer Nearest, PPC ISA 2.05 p137) */
-      if (dot) return False;
-      putFReg( rd, unop(Iop_RoundF64toF64_NEAREST, getFReg( rb )) );
-      DIP("frin%s fr%u,fr%u\n", dot ? "." : "", rd, rb);
-      return True;
-   }
+/* The full 10-bit extended opcode retrieved via ifieldOPClo10 is
+ * passed, and we then try to match it up with one of the above
+ * VSX forms.
+ */
+static UInt get_VSX60_opc2(UInt opc2_full)
+{
+#define XX2_MASK 0x000003FE
+#define XX3_1_MASK 0x000003FC
+#define XX3_2_MASK 0x000001FC
+#define XX3_3_MASK 0x0000007C
+#define XX4_MASK 0x000003E0
+   Int ret;
+   UInt vsxExtOpcode = 0;
 
-   if (opc == 63 && ra == 0/*presumably*/ && opc2 == 424) {
-      /* frin (Floating Round to Integer Zero, PPC ISA 2.05 p137) */
-      if (dot) return False;
-      putFReg( rd, unop(Iop_RoundF64toF64_ZERO, getFReg( rb )) );
-      DIP("friz%s fr%u,fr%u\n", dot ? "." : "", rd, rb);
-      return True;
-   }
+   if (( ret = findVSXextOpCode(opc2_full & XX2_MASK)) >= 0)
+      vsxExtOpcode = vsx_all[ret].opcode;
+   else if (( ret = findVSXextOpCode(opc2_full & XX3_1_MASK)) >= 0)
+      vsxExtOpcode = vsx_all[ret].opcode;
+   else if (( ret = findVSXextOpCode(opc2_full & XX3_2_MASK)) >= 0)
+      vsxExtOpcode = vsx_all[ret].opcode;
+   else if (( ret = findVSXextOpCode(opc2_full & XX3_3_MASK)) >= 0)
+      vsxExtOpcode = vsx_all[ret].opcode;
+   else if (( ret = findVSXextOpCode(opc2_full & XX4_MASK)) >= 0)
+      vsxExtOpcode = vsx_all[ret].opcode;
 
-   if (0)
-      vex_printf("dis_P6: %u %u %u %u %u %u\n", opc, rd, ra, rb, opc2, dot);
-   return False;
+   return vsxExtOpcode;
 }
 
-
-
 /*------------------------------------------------------------*/
 /*--- Disassemble a single instruction                     ---*/
 /*------------------------------------------------------------*/
@@ -8956,6 +10735,7 @@ DisResult disInstr_PPC_WRK (
    Bool      allow_V  = False;
    Bool      allow_FX = False;
    Bool      allow_GX = False;
+   Bool      allow_VX = False;
    UInt      hwcaps = archinfo->hwcaps;
    Long      delta;
 
@@ -8965,11 +10745,13 @@ DisResult disInstr_PPC_WRK (
       allow_V  = (0 != (hwcaps & VEX_HWCAPS_PPC64_V));
       allow_FX = (0 != (hwcaps & VEX_HWCAPS_PPC64_FX));
       allow_GX = (0 != (hwcaps & VEX_HWCAPS_PPC64_GX));
+      allow_VX = (0 != (hwcaps & VEX_HWCAPS_PPC64_VX));
    } else {
       allow_F  = (0 != (hwcaps & VEX_HWCAPS_PPC32_F));
       allow_V  = (0 != (hwcaps & VEX_HWCAPS_PPC32_V));
       allow_FX = (0 != (hwcaps & VEX_HWCAPS_PPC32_FX));
       allow_GX = (0 != (hwcaps & VEX_HWCAPS_PPC32_GX));
+      allow_VX = (0 != (hwcaps & VEX_HWCAPS_PPC32_VX));
    }
 
    /* The running delta */
@@ -9147,6 +10929,12 @@ DisResult disInstr_PPC_WRK (
       if (dis_fp_store( theInstr )) goto decode_success;
       goto decode_failure;
 
+      /* Floating Point Load Double Pair Instructions */
+   case 0x39: case 0x3D:
+      if (!allow_F) goto decode_noF;
+      if (dis_fp_pair( theInstr )) goto decode_success;
+      goto decode_failure;
+
    /* 64bit Integer Loads */
    case 0x3A:  // ld, ldu, lwa
       if (!mode64) goto decode_failure;
@@ -9155,6 +10943,20 @@ DisResult disInstr_PPC_WRK (
 
    case 0x3B:
       if (!allow_F) goto decode_noF;
+      opc2 = ifieldOPClo10(theInstr);
+      switch (opc2) {
+         case 0x3CE: // fcfidus (implemented as native insn
+            if (!allow_VX)
+               goto decode_noVX;
+            if (dis_fp_round( theInstr ))
+               goto decode_success;
+            goto decode_failure;
+         case 0x34E: // fcfids
+            if (dis_fp_round( theInstr ))
+               goto decode_success;
+            goto decode_failure;
+      }
+
       opc2 = IFIELD(theInstr, 1, 5);
       switch (opc2) {
       /* Floating Point Arith Instructions */
@@ -9181,12 +10983,64 @@ DisResult disInstr_PPC_WRK (
          if (!allow_GX) goto decode_noGX;
          if (dis_fp_arith(theInstr)) goto decode_success;
          goto decode_failure;
-         
+
       default:
          goto decode_failure;
       }
       break;
 
+   case 0x3C: // VSX instructions (except load/store)
+   {
+      UInt vsxOpc2 = get_VSX60_opc2(opc2);
+      /* The vsxOpc2 returned is the "normalized" value, representing the
+       * instructions secondary opcode as taken from the standard secondary
+       * opcode field [21:30] (IBM notatition), even if the actual field
+       * is non-standard.  These normalized values are given in the opcode
+       * appendices of the ISA 2.06 document.
+       */
+      if (vsxOpc2 == 0)
+         goto decode_failure;
+
+      switch (vsxOpc2) {
+         case 0x8: case 0x28: case 0x48: case 0xc8: // xxsldwi, xxpermdi, xxmrghw, xxmrglw
+            if (dis_vx_permute(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x268: case 0x248: case 0x288: case 0x208: case 0x228: // xxlxor, xxlor, xxlnor, xxland, xxlandc
+            if (dis_vx_logic(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x2B2: // xsabsdp
+            if (dis_vx_move(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x2C0: // xscpsgndp
+            if (dis_vx_move(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x2D2: // xsnabsdp
+            if (dis_vx_move(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x2F2: // xsnegdp
+            if (dis_vx_move(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x08C: case 0x0AC: // xscmpudp, xscmpodp
+            if (dis_vx_cmp(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x080: case 0x0E0: // xsadddp, xsdivdp
+         case 0x084: case 0x0A4: // xsmaddadp, xsmaddmdp
+         case 0x0C4: case 0x0E4: // xsmsubadp, xsmsubmdp
+         case 0x284: case 0x2A4: // xsnmaddadp, xsnmaddmdp
+         case 0x0C0: // xsmuldp
+         case 0x0A0: // xssubdp
+            if (dis_vx_arith(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+         case 0x2B0: case 0x2F0: case 0x2D0: // xscvdpsxds, xscvsxddp, xscvuxddp
+            if (dis_vx_conv(theInstr, vsxOpc2)) goto decode_success;
+            goto decode_failure;
+
+         default:
+            goto decode_failure;
+      }
+      break;
+   }
+
    /* 64bit Integer Stores */
    case 0x3E:  // std, stdu
       if (!mode64) goto decode_failure;
@@ -9237,6 +11091,10 @@ DisResult disInstr_PPC_WRK (
          if (dis_fp_cmp(theInstr)) goto decode_success;
          goto decode_failure;
          
+      case 0x080: // ftdiv
+         if (dis_fp_ftdiv(theInstr)) goto decode_success;
+         goto decode_failure;
+
       /* Floating Point Rounding/Conversion Instructions */         
       case 0x00C: // frsp
       case 0x00E: // fctiw
@@ -9246,17 +11104,25 @@ DisResult disInstr_PPC_WRK (
       case 0x34E: // fcfid
          if (dis_fp_round(theInstr)) goto decode_success;
          goto decode_failure;
+      case 0x3CE: // fcfidu (implemented as native insn)
+         if (!allow_VX) goto decode_noVX;
+         if (dis_fp_round(theInstr)) goto decode_success;
+         goto decode_failure;
+
 
       /* Power6 rounding stuff */
       case 0x1E8: // frim
       case 0x1C8: // frip
       case 0x188: // frin
       case 0x1A8: // friz
-         if (dis_P6(theInstr, allow_F, allow_V, allow_FX, allow_GX))
+         /* A hack to check for P6 capability . . . */
+         if ((allow_F && allow_V && allow_FX && allow_GX) &&
+             (dis_fp_round(theInstr)))
             goto decode_success;
          goto decode_failure;
          
       /* Floating Point Move Instructions */         
+      case 0x008: // fcpsgn
       case 0x028: // fneg
       case 0x048: // fmr
       case 0x088: // fnabs
@@ -9330,6 +11196,10 @@ DisResult disInstr_PPC_WRK (
          if (dis_int_arith( theInstr )) goto decode_success;
          goto decode_failure;
 
+      case 0x1FC:                         // cmpb
+         if (dis_int_logic( theInstr )) goto decode_success;
+         goto decode_failure;
+
       default:
          break;  // Fall through...
       }
@@ -9348,6 +11218,7 @@ DisResult disInstr_PPC_WRK (
       case 0x11C: case 0x3BA: case 0x39A: // eqv,  extsb, extsh
       case 0x1DC: case 0x07C: case 0x1BC: // nand, nor,   or
       case 0x19C: case 0x13C:             // orc,  xor
+      case 0x2DF: case 0x25F:            // mftgpr, mffgpr
          if (dis_int_logic( theInstr )) goto decode_success;
          goto decode_failure;
 
@@ -9357,6 +11228,11 @@ DisResult disInstr_PPC_WRK (
          if (dis_int_logic( theInstr )) goto decode_success;
          goto decode_failure;
 
+         /* 64bit Integer Parity Instructions */
+      case 0xba: case 0x9a: // prtyd, prtyw
+         if (dis_int_parity( theInstr )) goto decode_success;
+         goto decode_failure;
+
       /* Integer Shift Instructions */
       case 0x018: case 0x318: case 0x338: // slw, sraw, srawi
       case 0x218:                         // srw
@@ -9399,7 +11275,7 @@ DisResult disInstr_PPC_WRK (
 
       /* Integer Load and Store with Byte Reverse Instructions */
       case 0x316: case 0x216: case 0x396: // lhbrx, lwbrx, sthbrx
-      case 0x296:                         // stwbrx
+      case 0x296: case 0x214:             // stwbrx, ldbrx
          if (dis_int_ldst_rev( theInstr )) goto decode_success;
          goto decode_failure;
          
@@ -9472,6 +11348,23 @@ DisResult disInstr_PPC_WRK (
          if (dis_fp_store( theInstr )) goto decode_success;
          goto decode_failure;
 
+         /* Floating Point Double Pair Indexed Instructions */
+      case 0x317: // lfdpx (Power6)
+      case 0x397: // stfdpx (Power6)
+         if (!allow_F) goto decode_noF;
+         if (dis_fp_pair(theInstr)) goto decode_success;
+         goto decode_failure;
+
+      case 0x357:                         // lfiwax
+         if (!allow_F) goto decode_noF;
+         if (dis_fp_load( theInstr )) goto decode_success;
+         goto decode_failure;
+
+      case 0x377:                         // lfiwzx
+         if (!allow_F) goto decode_noF;
+         if (dis_fp_load( theInstr )) goto decode_success;
+         goto decode_failure;
+
       /* AltiVec instructions */
 
       /* AV Cache Control - Data streams */
@@ -9495,6 +11388,26 @@ DisResult disInstr_PPC_WRK (
          if (dis_av_store( theInstr )) goto decode_success;
          goto decode_failure;
 
+      /* VSX Load */
+      case 0x24C: // lxsdx
+      case 0x34C: // lxvd2x
+      case 0x14C: // lxvdsx
+      case 0x30C: // lxvw4x
+    	  if (dis_vx_load( theInstr )) goto decode_success;
+          goto decode_failure;
+
+      /* VSX Store */
+      case 0x2CC: // stxsdx
+      case 0x3CC: // stxvd2x
+      case 0x38C: // stxvw4x
+    	  if (dis_vx_store( theInstr )) goto decode_success;
+    	  goto decode_failure;
+
+      /* Miscellaneous ISA 2.06 instructions */
+      case 0x1FA: // popcntd
+    	  if (dis_int_logic( theInstr )) goto decode_success;
+    	  goto decode_failure;
+
       default:
          /* Deal with some other cases that we would otherwise have
             punted on. */
@@ -9680,6 +11593,10 @@ DisResult disInstr_PPC_WRK (
       vassert(!allow_V);
       vex_printf("disInstr(ppc): declined to decode an AltiVec insn.\n");
       goto decode_failure;
+   decode_noVX:
+      vassert(!allow_VX);
+      vex_printf("disInstr(ppc): declined to decode a VSX insn.\n");
+      goto decode_failure;
    decode_noFX:
       vassert(!allow_FX);
       vex_printf("disInstr(ppc): "
@@ -9762,10 +11679,10 @@ DisResult disInstr_PPC ( IRSB*        irsb_IN,
 
    /* do some sanity checks */
    mask32 = VEX_HWCAPS_PPC32_F | VEX_HWCAPS_PPC32_V
-            | VEX_HWCAPS_PPC32_FX | VEX_HWCAPS_PPC32_GX;
+            | VEX_HWCAPS_PPC32_FX | VEX_HWCAPS_PPC32_GX | VEX_HWCAPS_PPC32_VX;
 
-   mask64 = VEX_HWCAPS_PPC64_V
-            | VEX_HWCAPS_PPC64_FX | VEX_HWCAPS_PPC64_GX;
+   mask64 = VEX_HWCAPS_PPC64_V | VEX_HWCAPS_PPC64_FX
+		   | VEX_HWCAPS_PPC64_GX | VEX_HWCAPS_PPC64_VX;
 
    if (mode64) {
       vassert((hwcaps_guest & mask32) == 0);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_defs.h
new file mode 100644
index 000000000..630d3e0aa
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_defs.h
@@ -0,0 +1,214 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                 guest_s390_defs.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#ifndef __VEX_GUEST_S390_DEFS_H
+#define __VEX_GUEST_S390_DEFS_H
+
+#include "libvex_basictypes.h"
+#include "libvex_ir.h"                // IRSB  (needed by bb_to_IR.h)
+#include "libvex.h"                   // VexArch  (needed by bb_to_IR.h)
+#include "guest_generic_bb_to_IR.h"   // DisResult
+
+/* Convert one s390 insn to IR.  See the type DisOneInstrFn in
+   bb_to_IR.h. */
+extern
+DisResult disInstr_S390 ( IRSB*        irbb,
+                          Bool         put_IP,
+                          Bool         (*resteerOkFn) ( void*, Addr64 ),
+                          Bool         resteerCisOk,
+                          void*        callback_opaque,
+                          UChar*       guest_code,
+                          Long         delta,
+                          Addr64       guest_IP,
+                          VexArch      guest_arch,
+                          VexArchInfo* archinfo,
+                          VexAbiInfo*  abiinfo,
+                          Bool         host_bigendian );
+
+/* Used by the optimiser to specialise calls to helpers. */
+extern
+IRExpr* guest_s390x_spechelper ( HChar   *function_name,
+                                 IRExpr **args,
+                                 IRStmt **precedingStmts,
+                                 Int n_precedingStmts);
+
+
+/* Describes to the optimser which part of the guest state require
+   precise memory exceptions.  This is logically part of the guest
+   state description. */
+extern
+Bool guest_s390x_state_requires_precise_mem_exns ( Int, Int );
+
+extern
+VexGuestLayout s390xGuest_layout;
+
+
+UInt s390_decode_and_irgen(UChar *, UInt, DisResult *);
+
+#define S390_GUEST_OFFSET(x)  offsetof(VexGuestS390XState, x)
+
+/*------------------------------------------------------------*/
+/*--- Dirty Helper functions.                              ---*/
+/*------------------------------------------------------------*/
+void s390x_dirtyhelper_EX(ULong torun);
+ULong s390x_dirtyhelper_STCK(ULong *addr);
+ULong s390x_dirtyhelper_STCKF(ULong *addr);
+ULong s390x_dirtyhelper_STCKE(ULong *addr);
+
+/*------------------------------------------------------------*/
+/*--- IR generators for special opcodes.                   ---*/
+/*------------------------------------------------------------*/
+void s390_irgen_client_request(void);
+void s390_irgen_guest_NRADDR(void);
+void s390_irgen_call_noredir(void);
+void s390_irgen_internal_return(void);
+
+#include "libvex_basictypes.h"
+#include "libvex_ir.h"
+
+/* The various ways to compute the condition code. */
+
+enum {
+   S390_CC_OP_BITWISE = 0,
+   S390_CC_OP_SIGNED_COMPARE = 1,
+   S390_CC_OP_UNSIGNED_COMPARE = 2,
+   S390_CC_OP_SIGNED_ADD_32 = 3,
+   S390_CC_OP_SIGNED_ADD_64 = 4,
+   S390_CC_OP_UNSIGNED_ADD_32 = 5,
+   S390_CC_OP_UNSIGNED_ADD_64 = 6,
+   S390_CC_OP_UNSIGNED_ADDC_32 = 7,
+   S390_CC_OP_UNSIGNED_ADDC_64 = 8,
+   S390_CC_OP_SIGNED_SUB_32 = 9,
+   S390_CC_OP_SIGNED_SUB_64 = 10,
+   S390_CC_OP_UNSIGNED_SUB_32 = 11,
+   S390_CC_OP_UNSIGNED_SUB_64 = 12,
+   S390_CC_OP_UNSIGNED_SUBB_32 = 13,
+   S390_CC_OP_UNSIGNED_SUBB_64 = 14,
+   S390_CC_OP_LOAD_AND_TEST = 15,
+   S390_CC_OP_LOAD_POSITIVE_32 = 16,
+   S390_CC_OP_LOAD_POSITIVE_64 = 17,
+   S390_CC_OP_TEST_AND_SET = 18,
+   S390_CC_OP_TEST_UNDER_MASK_8 = 19,
+   S390_CC_OP_TEST_UNDER_MASK_16 = 20,
+   S390_CC_OP_SHIFT_LEFT_32 = 21,
+   S390_CC_OP_SHIFT_LEFT_64 = 22,
+   S390_CC_OP_INSERT_CHAR_MASK_32 = 23,
+   S390_CC_OP_BFP_RESULT_32 = 24,
+   S390_CC_OP_BFP_RESULT_64 = 25,
+   S390_CC_OP_BFP_RESULT_128 = 26,
+   S390_CC_OP_BFP_32_TO_INT_32 = 27,
+   S390_CC_OP_BFP_64_TO_INT_32 = 28,
+   S390_CC_OP_BFP_128_TO_INT_32 = 29,
+   S390_CC_OP_BFP_32_TO_INT_64 = 30,
+   S390_CC_OP_BFP_64_TO_INT_64 = 31,
+   S390_CC_OP_BFP_128_TO_INT_64 = 32,
+   S390_CC_OP_BFP_TDC_32 = 33,
+   S390_CC_OP_BFP_TDC_64 = 34,
+   S390_CC_OP_BFP_TDC_128 = 35,
+   S390_CC_OP_SET = 36
+};
+
+/*------------------------------------------------------------*/
+/*--- Thunk layout                                         ---*/
+/*------------------------------------------------------------*/
+
+/*
+   Z -- value is zero extended to 32 / 64 bit
+   S -- value is sign extended to 32 / 64 bit
+   F -- a binary floating point value
+
+   +--------------------------------+-----------------------+----------------------+-------------+
+   | op                             |   cc_dep1             |   cc_dep2            |   cc_ndep   |
+   +--------------------------------+-----------------------+----------------------+-------------+
+   | S390_CC_OP_BITWISE             | Z result              |                      |             |
+   | S390_CC_OP_SIGNED_COMPARE      | S 1st operand         | S 2nd operand        |             |
+   | S390_CC_OP_UNSIGNED_COMPARE    | Z 1st operand         | Z 2nd operand        |             |
+   | S390_CC_OP_SIGNED_ADD_32       | S 1st operand         | S 2nd operand        |             |
+   | S390_CC_OP_SIGNED_ADD_64       | S 1st operand         | S 2nd operand        |             |
+   | S390_CC_OP_UNSIGNED_ADD_32     | Z 1st operand         | Z 2nd operand        |             |
+   | S390_CC_OP_UNSIGNED_ADD_64     | Z 1st operand         | Z 2nd operand        |             |
+   | S390_CC_OP_UNSIGNED_ADDC_32    | Z 1st operand         | Z 2nd operand        | Z carry in  |
+   | S390_CC_OP_UNSIGNED_ADDC_64    | Z 1st operand         | Z 2nd operand        | Z carry in  |
+   | S390_CC_OP_SIGNED_SUB_32       | S left operand        | S right operand      |             |
+   | S390_CC_OP_SIGNED_SUB_64       | S left operand        | S right operand      |             |
+   | S390_CC_OP_UNSIGNED_SUB_32     | Z left operand        | Z right operand      |             |
+   | S390_CC_OP_UNSIGNED_SUB_64     | Z left operand        | Z right operand      |             |
+   | S390_CC_OP_UNSIGNED_SUBB_32    | Z left operand        | Z right operand      | Z borrow in |
+   | S390_CC_OP_UNSIGNED_SUBB_64    | Z left operand        | Z right operand      | Z borrow in |
+   | S390_CC_OP_LOAD_AND_TEST       | S loaded value        |                      |             |
+   | S390_CC_OP_LOAD_POSITIVE_32    | S loaded value        |                      |             |
+   | S390_CC_OP_LOAD_POSITIVE_64    | S loaded value        |                      |             |
+   | S390_CC_OP_TEST_AND_SET        | Z tested value        |                      |             |
+   | S390_CC_OP_TEST_UNDER_MASK_8   | Z tested value        | Z mask               |             |
+   | S390_CC_OP_TEST_UNDER_MASK_16  | Z tested value        | Z mask               |             |
+   | S390_CC_OP_SHIFT_LEFT_32       | Z value to be shifted | Z shift amount       |             |
+   | S390_CC_OP_SHIFT_LEFT_64       | Z value to be shifted | Z shift amount       |             |
+   | S390_CC_OP_INSERT_CHAR_MASK_32 | Z result              | Z mask               |             |
+   | S390_CC_OP_BFP_RESULT_32       | F result              |                      |             |
+   | S390_CC_OP_BFP_RESULT_64       | F result              |                      |             |
+   | S390_CC_OP_BFP_RESULT_128      | F result hi 64 bits   | F result low 64 bits |             |
+   | S390_CC_OP_BFP_32_TO_INT_32    | F source              |                      |             |
+   | S390_CC_OP_BFP_64_TO_INT_32    | F source              |                      |             |
+   | S390_CC_OP_BFP_128_TO_INT_32   | F source hi 64 bits   |                      |             |
+   | S390_CC_OP_BFP_32_TO_INT_64    | F source              |                      |             |
+   | S390_CC_OP_BFP_64_TO_INT_64    | F source              |                      |             |
+   | S390_CC_OP_BFP_128_TO_INT_64   | F source hi 64 bits   |                      |             |
+   | S390_CC_OP_BFP_TDC_32          | F value               | Z class              |             |
+   | S390_CC_OP_BFP_TDC_64          | F value               | Z class              |             |
+   | S390_CC_OP_BFP_TDC_128         | F value hi 64 bits    | F value low 64 bits  | Z class     |
+   | S390_CC_OP_SET                 | Z condition code      |                      |             |
+   +--------------------------------+-----------------------+----------------------+-------------+
+*/
+
+/*------------------------------------------------------------*/
+/*--- condition code helpers.                             ---*/
+/*------------------------------------------------------------*/
+UInt s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2,
+                       ULong cc_ndep);
+UInt s390_calculate_icc(ULong op, ULong dep1, ULong dep2);
+UInt s390_calculate_cond(ULong mask, ULong op, ULong dep1, ULong dep2,
+                         ULong ndep);
+
+/* Size of special instruction preamble */
+#define S390_SPECIAL_OP_PREAMBLE_SIZE 8
+
+/* Size of special instructions */
+#define S390_SPECIAL_OP_SIZE 2
+
+/* Last target instruction for the EX helper */
+extern ULong last_execute_target;
+
+/*---------------------------------------------------------------*/
+/*--- end                                   guest_s390_defs.h ---*/
+/*---------------------------------------------------------------*/
+
+#endif /* __VEX_GUEST_S390_DEFS_H */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_helpers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_helpers.c
new file mode 100644
index 000000000..05f194c6c
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_helpers.c
@@ -0,0 +1,1205 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                              guest_s390_helpers.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#include "libvex_basictypes.h"
+#include "libvex_emwarn.h"
+#include "libvex_guest_s390x.h"
+#include "libvex_ir.h"
+#include "libvex.h"
+
+#include "main_util.h"
+#include "guest_generic_bb_to_IR.h"
+#include "guest_s390_defs.h"
+
+void
+LibVEX_GuestS390X_initialise(VexGuestS390XState *state)
+{
+/*------------------------------------------------------------*/
+/*--- Initialise ar registers                              ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_a0 = 0;
+   state->guest_a1 = 0;
+   state->guest_a2 = 0;
+   state->guest_a3 = 0;
+   state->guest_a4 = 0;
+   state->guest_a5 = 0;
+   state->guest_a6 = 0;
+   state->guest_a7 = 0;
+   state->guest_a8 = 0;
+   state->guest_a9 = 0;
+   state->guest_a10 = 0;
+   state->guest_a11 = 0;
+   state->guest_a12 = 0;
+   state->guest_a13 = 0;
+   state->guest_a14 = 0;
+   state->guest_a15 = 0;
+
+/*------------------------------------------------------------*/
+/*--- Initialise fpr registers                             ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_f0 = 0;
+   state->guest_f1 = 0;
+   state->guest_f2 = 0;
+   state->guest_f3 = 0;
+   state->guest_f4 = 0;
+   state->guest_f5 = 0;
+   state->guest_f6 = 0;
+   state->guest_f7 = 0;
+   state->guest_f8 = 0;
+   state->guest_f9 = 0;
+   state->guest_f10 = 0;
+   state->guest_f11 = 0;
+   state->guest_f12 = 0;
+   state->guest_f13 = 0;
+   state->guest_f14 = 0;
+   state->guest_f15 = 0;
+
+/*------------------------------------------------------------*/
+/*--- Initialise gpr registers                             ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_r0 = 0;
+   state->guest_r1 = 0;
+   state->guest_r2 = 0;
+   state->guest_r3 = 0;
+   state->guest_r4 = 0;
+   state->guest_r5 = 0;
+   state->guest_r6 = 0;
+   state->guest_r7 = 0;
+   state->guest_r8 = 0;
+   state->guest_r9 = 0;
+   state->guest_r10 = 0;
+   state->guest_r11 = 0;
+   state->guest_r12 = 0;
+   state->guest_r13 = 0;
+   state->guest_r14 = 0;
+   state->guest_r15 = 0;
+
+/*------------------------------------------------------------*/
+/*--- Initialise S390 miscellaneous registers              ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_counter = 0;
+   state->guest_fpc = 0;
+   state->guest_IA = 0;
+
+/*------------------------------------------------------------*/
+/*--- Initialise S390 pseudo registers                     ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_SYSNO = 0;
+
+/*------------------------------------------------------------*/
+/*--- Initialise generic pseudo registers                  ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_NRADDR = 0;
+   state->guest_TISTART = 0;
+   state->guest_TILEN = 0;
+   state->guest_IP_AT_SYSCALL = 0;
+   state->guest_EMWARN = EmWarn_NONE;
+
+/*------------------------------------------------------------*/
+/*--- Initialise thunk                                     ---*/
+/*------------------------------------------------------------*/
+
+   state->guest_CC_OP = 0;
+   state->guest_CC_DEP1 = 0;
+   state->guest_CC_DEP2 = 0;
+   state->guest_CC_NDEP = 0;
+}
+
+
+/* Figure out if any part of the guest state contained in minoff
+   .. maxoff requires precise memory exceptions.  If in doubt return
+   True (but this is generates significantly slower code).  */
+Bool
+guest_s390x_state_requires_precise_mem_exns(Int minoff, Int maxoff)
+{
+   Int lr_min = offsetof(VexGuestS390XState, guest_LR);
+   Int lr_max = lr_min + 8 - 1;
+   Int sp_min = offsetof(VexGuestS390XState, guest_SP);
+   Int sp_max = sp_min + 8 - 1;
+   Int fp_min = offsetof(VexGuestS390XState, guest_FP);
+   Int fp_max = fp_min + 8 - 1;
+   Int ia_min = offsetof(VexGuestS390XState, guest_IA);
+   Int ia_max = ia_min + 8 - 1;
+
+   if (maxoff < lr_min || minoff > lr_max) {
+      /* No overlap with LR */
+   } else {
+      return True;
+   }
+
+   if (maxoff < sp_min || minoff > sp_max) {
+      /* No overlap with SP */
+   } else {
+      return True;
+   }
+
+   if (maxoff < fp_min || minoff > fp_max) {
+      /* No overlap with FP */
+   } else {
+      return True;
+   }
+
+   if (maxoff < ia_min || minoff > ia_max) {
+      /* No overlap with IA */
+   } else {
+      return True;
+   }
+
+   return False;
+}
+
+
+#define ALWAYSDEFD(field)                             \
+    { offsetof(VexGuestS390XState, field),            \
+      (sizeof ((VexGuestS390XState*)0)->field) }
+
+VexGuestLayout s390xGuest_layout = {
+
+   /* Total size of the guest state, in bytes. */
+   .total_sizeB = sizeof(VexGuestS390XState),
+
+   /* Describe the stack pointer. */
+   .offset_SP = offsetof(VexGuestS390XState, guest_SP),
+   .sizeof_SP = 8,
+
+   /* Describe the frame pointer. */
+   .offset_FP = offsetof(VexGuestS390XState, guest_FP),
+   .sizeof_FP = 8,
+
+   /* Describe the instruction pointer. */
+   .offset_IP = offsetof(VexGuestS390XState, guest_IA),
+   .sizeof_IP = 8,
+
+   /* Describe any sections to be regarded by Memcheck as
+      'always-defined'. */
+   .n_alwaysDefd = 9,
+
+   /* Flags thunk: OP and NDEP are always defined, whereas DEP1
+      and DEP2 have to be tracked.  See detailed comment in
+      gdefs.h on meaning of thunk fields. */
+   .alwaysDefd = {
+      /*  0 */ ALWAYSDEFD(guest_CC_OP),     /* generic */
+      /*  1 */ ALWAYSDEFD(guest_CC_NDEP),   /* generic */
+      /*  2 */ ALWAYSDEFD(guest_EMWARN),    /* generic */
+      /*  3 */ ALWAYSDEFD(guest_TISTART),   /* generic */
+      /*  4 */ ALWAYSDEFD(guest_TILEN),     /* generic */
+      /*  5 */ ALWAYSDEFD(guest_IP_AT_SYSCALL), /* generic */
+      /*  6 */ ALWAYSDEFD(guest_IA),        /* control reg */
+      /*  7 */ ALWAYSDEFD(guest_fpc),       /* control reg */
+      /*  8 */ ALWAYSDEFD(guest_counter),   /* internal usage register */
+   }
+};
+
+/*------------------------------------------------------------*/
+/*--- Dirty helper for EXecute                             ---*/
+/*------------------------------------------------------------*/
+void
+s390x_dirtyhelper_EX(ULong torun)
+{
+   last_execute_target = torun;
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Dirty helper for Clock instructions                  ---*/
+/*------------------------------------------------------------*/
+#if defined(VGA_s390x)
+ULong s390x_dirtyhelper_STCK(ULong *addr)
+{
+   int cc;
+
+   asm volatile("stck %0\n"
+                "ipm %1\n"
+                "srl %1,28\n"
+                : "+Q" (*addr), "=d" (cc) : : "cc");
+   return cc;
+}
+
+ULong s390x_dirtyhelper_STCKE(ULong *addr)
+{
+   int cc;
+
+   asm volatile("stcke %0\n"
+                "ipm %1\n"
+                "srl %1,28\n"
+                : "+Q" (*addr), "=d" (cc) : : "cc");
+   return cc;
+}
+
+ULong s390x_dirtyhelper_STCKF(ULong *addr)
+{
+   int cc;
+
+   asm volatile(".insn s,0xb27c0000,%0\n"
+                "ipm %1\n"
+                "srl %1,28\n"
+                : "+Q" (*addr), "=d" (cc) : : "cc");
+   return cc;
+}
+#else
+ULong s390x_dirtyhelper_STCK(ULong *addr)  {return 3;}
+ULong s390x_dirtyhelper_STCKF(ULong *addr) {return 3;}
+ULong s390x_dirtyhelper_STCKE(ULong *addr) {return 3;}
+#endif /* VGA_s390x */
+
+/*------------------------------------------------------------*/
+/*--- Helper for condition code.                           ---*/
+/*------------------------------------------------------------*/
+
+#define S390_CC_FOR_BINARY(opcode,cc_dep1,cc_dep2) \
+({ \
+   __asm__ volatile ( \
+        opcode " %[op1],%[op2]\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw), [op1] "+d"(cc_dep1) \
+                                   : [op2] "d"(cc_dep2) \
+                                   : "cc");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_TERNARY_SUBB(opcode,cc_dep1,cc_dep2,cc_ndep) \
+({ \
+   /* Recover the original DEP2 value. See comment near s390_cc_thunk_put3 \
+      for rationale. */ \
+   cc_dep2 = cc_dep2 ^ cc_ndep; \
+   __asm__ volatile ( \
+	"lghi 0,1\n\t" \
+	"sr 0,%[op3]\n\t" /* borrow to cc */ \
+        opcode " %[op1],%[op2]\n\t" /* then redo the op */\
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw), [op1] "+&d"(cc_dep1) \
+                                   : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
+                                   : "0", "cc");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_TERNARY_ADDC(opcode,cc_dep1,cc_dep2,cc_ndep) \
+({ \
+   /* Recover the original DEP2 value. See comment near s390_cc_thunk_put3 \
+      for rationale. */ \
+   cc_dep2 = cc_dep2 ^ cc_ndep; \
+   __asm__ volatile ( \
+	"lgfr 0,%[op3]\n\t" /* first load cc_ndep */ \
+	"aghi 0,0\n\t" /* and convert it into a cc */ \
+        opcode " %[op1],%[op2]\n\t" /* then redo the op */\
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw), [op1] "+&d"(cc_dep1) \
+                                   : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
+                                   : "0", "cc");\
+   psw >> 28;   /* cc */ \
+})
+
+
+#define S390_CC_FOR_BFP_RESULT(opcode,cc_dep1) \
+({ \
+   __asm__ volatile ( \
+        opcode " 0,%[op]\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw) \
+                                   : [op]  "f"(cc_dep1) \
+                                   : "cc", "f0");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_BFP128_RESULT(hi,lo) \
+({ \
+   __asm__ volatile ( \
+        "ldr   4,%[high]\n\t" \
+        "ldr   6,%[low]\n\t" \
+        "ltxbr 0,4\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw) \
+                                   : [high] "f"(hi), [low] "f"(lo) \
+                                   : "cc", "f0", "f2", "f4", "f6");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_BFP_CONVERT(opcode,cc_dep1) \
+({ \
+   __asm__ volatile ( \
+        opcode " 0,0,%[op]\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw) \
+                                   : [op]  "f"(cc_dep1) \
+                                   : "cc", "r0");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_BFP128_CONVERT(opcode,hi,lo) \
+({ \
+   __asm__ volatile ( \
+        "ldr   4,%[high]\n\t" \
+        "ldr   6,%[low]\n\t" \
+        opcode " 0,0,4\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw) \
+                                   : [high] "f"(hi), [low] "f"(lo) \
+                                   : "cc", "r0", "f4", "f6");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_BFP_TDC(opcode,cc_dep1,cc_dep2) \
+({ \
+   __asm__ volatile ( \
+        opcode " %[value],0(%[class])\n\t" \
+        "ipm %[psw]\n\t"           : [psw] "=d"(psw) \
+                                   : [value] "f"(cc_dep1), \
+                                     [class] "a"(cc_dep2)  \
+                                   : "cc");\
+   psw >> 28;   /* cc */ \
+})
+
+#define S390_CC_FOR_BFP128_TDC(cc_dep1,cc_dep2,cc_ndep) \
+({ \
+   /* Recover the original DEP2 value. See comment near s390_cc_thunk_put1f128Z \
+      for rationale. */ \
+   cc_dep2 = cc_dep2 ^ cc_ndep; \
+   __asm__ volatile ( \
+        "ldr  4,%[high]\n\t" \
+        "ldr  6,%[low]\n\t" \
+        "tcxb 4,0(%[class])\n\t" \
+        "ipm  %[psw]\n\t"          : [psw] "=d"(psw) \
+                                   : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
+                                     [class] "a"(cc_ndep)  \
+                                   : "cc", "f4", "f6");\
+   psw >> 28;   /* cc */ \
+})
+
+
+/* Return the value of the condition code from the supplied thunk parameters.
+   This is not the value of the PSW. It is the value of the 2 CC bits within
+   the PSW. The returned value is thusly in the interval [0:3]. */
+UInt
+s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2, ULong cc_ndep)
+{
+#if defined(VGA_s390x)
+   UInt psw;
+
+   switch (cc_op) {
+
+   case S390_CC_OP_BITWISE:
+      return S390_CC_FOR_BINARY("ogr", cc_dep1, (ULong)0);
+
+   case S390_CC_OP_SIGNED_COMPARE:
+      return S390_CC_FOR_BINARY("cgr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_COMPARE:
+      return S390_CC_FOR_BINARY("clgr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_SIGNED_ADD_64:
+      return S390_CC_FOR_BINARY("agr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_SIGNED_ADD_32:
+      return S390_CC_FOR_BINARY("ar", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_SIGNED_SUB_64:
+      return S390_CC_FOR_BINARY("sgr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_SIGNED_SUB_32:
+      return S390_CC_FOR_BINARY("sr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_ADD_64:
+      return S390_CC_FOR_BINARY("algr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_ADD_32:
+      return S390_CC_FOR_BINARY("alr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_ADDC_64:
+      return S390_CC_FOR_TERNARY_ADDC("alcgr", cc_dep1, cc_dep2, cc_ndep);
+
+   case S390_CC_OP_UNSIGNED_ADDC_32:
+      return S390_CC_FOR_TERNARY_ADDC("alcr", cc_dep1, cc_dep2, cc_ndep);
+
+   case S390_CC_OP_UNSIGNED_SUB_64:
+      return S390_CC_FOR_BINARY("slgr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_SUB_32:
+      return S390_CC_FOR_BINARY("slr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_UNSIGNED_SUBB_64:
+      return S390_CC_FOR_TERNARY_SUBB("slbgr", cc_dep1, cc_dep2, cc_ndep);
+
+   case S390_CC_OP_UNSIGNED_SUBB_32:
+      return S390_CC_FOR_TERNARY_SUBB("slbr", cc_dep1, cc_dep2, cc_ndep);
+
+   case S390_CC_OP_LOAD_AND_TEST:
+      /* Like signed comparison with 0 */
+      return S390_CC_FOR_BINARY("cgr", cc_dep1, (Long)0);
+
+   case S390_CC_OP_TEST_AND_SET:
+      /* Shift the sign bit into the LSB. Note, that the tested value is an
+         8-bit value which has been zero-extended to 32/64 bit. */
+      return cc_dep1 >> 7;
+
+   case S390_CC_OP_LOAD_POSITIVE_32:
+      __asm__ volatile (
+           "lpr  %[result],%[op]\n\t"
+           "ipm  %[psw]\n\t"            : [psw] "=d"(psw), [result] "=d"(cc_dep1)
+                                        : [op] "d"(cc_dep1)
+                                        : "cc");
+      return psw >> 28;   /* cc */
+
+   case S390_CC_OP_LOAD_POSITIVE_64:
+      __asm__ volatile (
+           "lpgr %[result],%[op]\n\t"
+           "ipm  %[psw]\n\t"            : [psw] "=d"(psw), [result] "=d"(cc_dep1)
+                                        : [op] "d"(cc_dep1)
+                                        : "cc");
+      return psw >> 28;   /* cc */
+
+   case S390_CC_OP_TEST_UNDER_MASK_8: {
+      UChar value  = cc_dep1;
+      UChar mask   = cc_dep2;
+
+      __asm__ volatile (
+           "bras %%r2,1f\n\t"             /* %r2 = address of next insn */
+           "tm %[value],0\n\t"            /* this is skipped, then EXecuted */
+           "1: ex %[mask],0(%%r2)\n\t"    /* EXecute TM after modifying mask */
+           "ipm %[psw]\n\t"             : [psw] "=d"(psw)
+                                        : [value] "m"(value), [mask] "a"(mask)
+                                        : "r2", "cc");
+      return psw >> 28;   /* cc */
+   }
+
+   case S390_CC_OP_TEST_UNDER_MASK_16: {
+      /* Create a TMLL insn with the mask as given by cc_dep2 */
+      UInt insn  = (0xA701 << 16) | cc_dep2;
+      UInt value = cc_dep1;
+
+      __asm__ volatile (
+           "lr   1,%[value]\n\t"
+           "lhi  2,0x10\n\t"
+           "ex   2,%[insn]\n\t"
+           "ipm  %[psw]\n\t"       : [psw] "=d"(psw)
+                                   : [value] "d"(value), [insn] "m"(insn)
+                                   : "r1", "r2", "cc");
+      return psw >> 28;   /* cc */
+   }
+
+   case S390_CC_OP_SHIFT_LEFT_32:
+      __asm__ volatile (
+           "sla  %[op],0(%[amount])\n\t"
+           "ipm  %[psw]\n\t"            : [psw] "=d"(psw), [op] "+d"(cc_dep1)
+                                        : [amount] "a"(cc_dep2)
+                                        : "cc");
+      return psw >> 28;   /* cc */
+
+   case S390_CC_OP_SHIFT_LEFT_64: {
+      Int high = (Int)(cc_dep1 >> 32);
+      Int low  = (Int)(cc_dep1 & 0xFFFFFFFF);
+
+      __asm__ volatile (
+           "lr   2,%[high]\n\t"
+           "lr   3,%[low]\n\t"
+           "slda 2,0(%[amount])\n\t"
+           "ipm %[psw]\n\t"             : [psw] "=d"(psw), [high] "+d"(high), [low] "+d"(low)
+                                        : [amount] "a"(cc_dep2)
+                                        : "cc", "r2", "r3");
+      return psw >> 28;   /* cc */
+   }
+
+   case S390_CC_OP_INSERT_CHAR_MASK_32: {
+      Int inserted = 0;
+      Int msb = 0;
+
+      if (cc_dep2 & 1) {
+         inserted |= cc_dep1 & 0xff;
+         msb = 0x80;
+      }
+      if (cc_dep2 & 2) {
+         inserted |= cc_dep1 & 0xff00;
+         msb = 0x8000;
+      }
+      if (cc_dep2 & 4) {
+         inserted |= cc_dep1 & 0xff0000;
+         msb = 0x800000;
+      }
+      if (cc_dep2 & 8) {
+         inserted |= cc_dep1 & 0xff000000;
+         msb = 0x80000000;
+      }
+
+      if (inserted & msb)  // MSB is 1
+         return 1;
+      if (inserted > 0)
+         return 2;
+      return 0;
+   }
+
+   case S390_CC_OP_BFP_RESULT_32:
+      return S390_CC_FOR_BFP_RESULT("ltebr", cc_dep1);
+
+   case S390_CC_OP_BFP_RESULT_64:
+      return S390_CC_FOR_BFP_RESULT("ltdbr", cc_dep1);
+
+   case S390_CC_OP_BFP_RESULT_128:
+      return S390_CC_FOR_BFP128_RESULT(cc_dep1, cc_dep2);
+
+   case S390_CC_OP_BFP_32_TO_INT_32:
+      return S390_CC_FOR_BFP_CONVERT("cfebr", cc_dep1);
+
+   case S390_CC_OP_BFP_64_TO_INT_32:
+      return S390_CC_FOR_BFP_CONVERT("cfdbr", cc_dep1);
+
+   case S390_CC_OP_BFP_128_TO_INT_32:
+      return S390_CC_FOR_BFP128_CONVERT("cfxbr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_BFP_32_TO_INT_64:
+      return S390_CC_FOR_BFP_CONVERT("cgebr", cc_dep1);
+
+   case S390_CC_OP_BFP_64_TO_INT_64:
+      return S390_CC_FOR_BFP_CONVERT("cgdbr", cc_dep1);
+
+   case S390_CC_OP_BFP_128_TO_INT_64:
+      return S390_CC_FOR_BFP128_CONVERT("cgxbr", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_BFP_TDC_32:
+      return S390_CC_FOR_BFP_TDC("tceb", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_BFP_TDC_64:
+      return S390_CC_FOR_BFP_TDC("tcdb", cc_dep1, cc_dep2);
+
+   case S390_CC_OP_BFP_TDC_128:
+      return S390_CC_FOR_BFP128_TDC(cc_dep1, cc_dep2, cc_ndep);
+
+   case S390_CC_OP_SET:
+      return cc_dep1;
+
+   default:
+      break;
+   }
+#endif
+   vpanic("s390_calculate_cc");
+}
+
+
+UInt
+s390_calculate_icc(ULong op, ULong dep1, ULong dep2)
+{
+   return s390_calculate_cc(op, dep1, dep2, 0 /* unused */);
+}
+
+
+/* Note that this does *not* return a Boolean value. The result needs to be
+   explicitly tested against zero. */
+UInt
+s390_calculate_cond(ULong mask, ULong op, ULong dep1, ULong dep2, ULong ndep)
+{
+   UInt cc = s390_calculate_cc(op, dep1, dep2, ndep);
+
+   return ((mask << cc) & 0x8);
+}
+
+/*------------------------------------------------------------*/
+/*--- spechelper for performance                           ---*/
+/*------------------------------------------------------------*/
+
+
+/* Convenience macros */
+#define unop(op,a1) IRExpr_Unop((op),(a1))
+#define binop(op,a1,a2) IRExpr_Binop((op),(a1),(a2))
+#define mkU64(v) IRExpr_Const(IRConst_U64(v))
+#define mkU32(v) IRExpr_Const(IRConst_U32(v))
+#define mkU8(v)  IRExpr_Const(IRConst_U8(v))
+
+
+static inline Bool
+isC64(IRExpr *expr)
+{
+   return expr->tag == Iex_Const && expr->Iex.Const.con->tag == Ico_U64;
+}
+
+
+/* The returned expression is NULL if no specialization was found. In that
+   case the helper function will be called. Otherwise, the expression has
+   type Ity_I32 and a Boolean value. */
+IRExpr *
+guest_s390x_spechelper(HChar *function_name, IRExpr **args,
+                       IRStmt **precedingStmts, Int n_precedingStmts)
+{
+   UInt i, arity = 0;
+
+   for (i = 0; args[i]; i++)
+      arity++;
+
+#  if 0
+   vex_printf("spec request:\n");
+   vex_printf("   %s  ", function_name);
+   for (i = 0; i < arity; i++) {
+      vex_printf("  ");
+      ppIRExpr(args[i]);
+   }
+   vex_printf("\n");
+#  endif
+
+   /* --------- Specialising "s390_calculate_cond" --------- */
+
+   if (vex_streq(function_name, "s390_calculate_cond")) {
+      IRExpr *cond_expr, *cc_op_expr, *cc_dep1, *cc_dep2;
+      ULong cond, cc_op;
+
+      vassert(arity == 5);
+
+      cond_expr  = args[0];
+      cc_op_expr = args[1];
+
+      /* The necessary requirement for all optimizations here is that the
+         condition and the cc_op are constant. So check that upfront. */
+      if (! isC64(cond_expr))  return NULL;
+      if (! isC64(cc_op_expr)) return NULL;
+
+      cond    = cond_expr->Iex.Const.con->Ico.U64;
+      cc_op   = cc_op_expr->Iex.Const.con->Ico.U64;
+
+      vassert(cond <= 15);
+
+      /*
+        +------+---+---+---+---+
+        | cc   | 0 | 1 | 2 | 3 |
+        | cond | 8 | 4 | 2 | 1 |
+        +------+---+---+---+---+
+      */
+      cc_dep1 = args[2];
+      cc_dep2 = args[3];
+
+      /* S390_CC_OP_SIGNED_COMPARE */
+      if (cc_op == S390_CC_OP_SIGNED_COMPARE) {
+         /*
+            cc == 0  --> cc_dep1 == cc_dep2   (cond == 8)
+            cc == 1  --> cc_dep1 <  cc_dep2   (cond == 4)
+            cc == 2  --> cc_dep1 >  cc_dep2   (cond == 2)
+
+            Because cc == 3 cannot occur the rightmost bit of cond is
+            a don't care.
+         */
+         if (cond == 8 || cond == 8 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
+         }
+         if (cond == 4 + 2 || cond == 4 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
+         }
+         if (cond == 4 || cond == 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, cc_dep2));
+         }
+         if (cond == 8 + 4 || cond == 8 + 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, cc_dep2));
+         }
+         /* cc_dep1 > cc_dep2  ---->  cc_dep2 < cc_dep1 */
+         if (cond == 2 || cond == 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep2, cc_dep1));
+         }
+         if (cond == 8 + 2 || cond == 8 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep2, cc_dep1));
+         }
+         if (cond == 8 + 4 + 2 || cond == 8 + 4 + 2 + 1) {
+            return mkU32(1);
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_UNSIGNED_COMPARE */
+      if (cc_op == S390_CC_OP_UNSIGNED_COMPARE) {
+         /*
+            cc == 0  --> cc_dep1 == cc_dep2   (cond == 8)
+            cc == 1  --> cc_dep1 <  cc_dep2   (cond == 4)
+            cc == 2  --> cc_dep1 >  cc_dep2   (cond == 2)
+
+            Because cc == 3 cannot occur the rightmost bit of cond is
+            a don't care.
+         */
+         if (cond == 8 || cond == 8 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
+         }
+         if (cond == 4 + 2 || cond == 4 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
+         }
+         if (cond == 4 || cond == 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
+         }
+         if (cond == 8 + 4 || cond == 8 + 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
+         }
+         /* cc_dep1 > cc_dep2  ---->  cc_dep2 < cc_dep1 */
+         if (cond == 2 || cond == 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
+         }
+         if (cond == 8 + 2 || cond == 8 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
+         }
+         if (cond == 8 + 4 + 2 || cond == 8 + 4 + 2 + 1) {
+            return mkU32(1);
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_LOAD_AND_TEST */
+      if (cc_op == S390_CC_OP_LOAD_AND_TEST) {
+         /*
+            cc == 0  --> cc_dep1 == 0   (cond == 8)
+            cc == 1  --> cc_dep1 <  0   (cond == 4)
+            cc == 2  --> cc_dep1 >  0   (cond == 2)
+
+            Because cc == 3 cannot occur the rightmost bit of cond is
+            a don't care.
+         */
+         if (cond == 8 || cond == 8 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, mkU64(0)));
+         }
+         if (cond == 4 + 2 || cond == 4 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, mkU64(0)));
+         }
+         if (cond == 4 || cond == 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, mkU64(0)));
+         }
+         if (cond == 8 + 4 || cond == 8 + 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, mkU64(0)));
+         }
+         /* cc_dep1 > 0  ---->  0 < cc_dep1 */
+         if (cond == 2 || cond == 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64S, mkU64(0), cc_dep1));
+         }
+         if (cond == 8 + 2 || cond == 8 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64S, mkU64(0), cc_dep1));
+         }
+         if (cond == 8 + 4 + 2 || cond == 8 + 4 + 2 + 1) {
+            return mkU32(1);
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_BITWISE */
+      if (cc_op == S390_CC_OP_BITWISE) {
+         /*
+            cc_dep1 is the result of the boolean operation.
+
+            cc == 0  --> cc_dep1 == 0   (cond == 8)
+            cc == 1  --> cc_dep1 != 0   (cond == 4)
+
+            Because cc == 2 and cc == 3 cannot occur the two rightmost bits of
+            cond are don't cares. Therefore:
+
+            cond == 00xx  -> always false
+            cond == 01xx  -> not equal
+            cond == 10xx  -> equal
+            cond == 11xx  -> always true
+         */
+         if ((cond & (8 + 4)) == 8 + 4) {
+            return mkU32(1);
+         }
+         if (cond & 8) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, mkU64(0)));
+         }
+         if (cond & 4) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, mkU64(0)));
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_INSERT_CHAR_MASK_32
+         Since the mask comes from an immediate field in the opcode, we
+         expect the mask to be a constant here. That simplifies matters. */
+      if (cc_op == S390_CC_OP_INSERT_CHAR_MASK_32) {
+         ULong mask;
+         UInt imask = 0, shift = 0;
+         IRExpr *word;
+
+         if (! isC64(cc_dep2)) goto missed;
+
+         mask = cc_dep2->Iex.Const.con->Ico.U64;
+
+         /* Extract the 32-bit value from the thunk */
+
+         word = unop(Iop_64to32, cc_dep1);
+
+         switch (mask) {
+         case 0:  shift =  0; imask = 0x00000000; break;
+         case 1:  shift = 24; imask = 0x000000FF; break;
+         case 2:  shift = 16; imask = 0x0000FF00; break;
+         case 3:  shift = 16; imask = 0x0000FFFF; break;
+         case 4:  shift =  8; imask = 0x00FF0000; break;
+         case 5:  shift =  8; imask = 0x00FF00FF; break;
+         case 6:  shift =  8; imask = 0x00FFFF00; break;
+         case 7:  shift =  8; imask = 0x00FFFFFF; break;
+         case 8:  shift =  0; imask = 0xFF000000; break;
+         case 9:  shift =  0; imask = 0xFF0000FF; break;
+         case 10: shift =  0; imask = 0xFF00FF00; break;
+         case 11: shift =  0; imask = 0xFF00FFFF; break;
+         case 12: shift =  0; imask = 0xFFFF0000; break;
+         case 13: shift =  0; imask = 0xFFFF00FF; break;
+         case 14: shift =  0; imask = 0xFFFFFF00; break;
+         case 15: shift =  0; imask = 0xFFFFFFFF; break;
+         }
+
+         /* Select the bits that were inserted */
+         word = binop(Iop_And32, word, mkU32(imask));
+
+         /* cc == 0  --> all inserted bits zero or mask == 0   (cond == 8)
+            cc == 1  --> leftmost inserted bit is one          (cond == 4)
+            cc == 2  --> leftmost inserted bit is zero and not (cond == 2)
+                         all inserted bits are zero
+
+            Because cc == 0,1,2 the rightmost bit of the mask is a don't care */
+         if (cond == 8 || cond == 8 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ32, word, mkU32(0)));
+         }
+         if (cond == 4 + 2 || cond == 4 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE32, word, mkU32(0)));
+         }
+
+         /* Sign extend */
+         if (shift != 0) {
+            word = binop(Iop_Sar32, binop(Iop_Shl32, word, mkU8(shift)),
+                         mkU8(shift));
+         }
+
+         if (cond == 4 || cond == 4 + 1) {  /* word < 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLT32S, word, mkU32(0)));
+         }
+         if (cond == 2 || cond == 2 + 1) {  /* word > 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLT32S, mkU32(0), word));
+         }
+         if (cond == 8 + 4 || cond == 8 + 4 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE32S, word, mkU32(0)));
+         }
+         if (cond == 8 + 2 || cond == 8 + 2 + 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpLE32S, mkU32(0), word));
+         }
+         if (cond == 8 + 4 + 2 || cond == 8 + 4 + 2 + 1) {
+            return mkU32(1);
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_TEST_UNDER_MASK_8
+         Since the mask comes from an immediate field in the opcode, we
+         expect the mask to be a constant here. That simplifies matters. */
+      if (cc_op == S390_CC_OP_TEST_UNDER_MASK_8) {
+         ULong mask16;
+
+         if (! isC64(cc_dep2)) goto missed;
+
+         mask16 = cc_dep2->Iex.Const.con->Ico.U64;
+
+         /* Get rid of the mask16 == 0 case first. Some of the simplifications
+            below (e.g. for OVFL) only hold if mask16 == 0.  */
+         if (mask16 == 0) {   /* cc == 0 */
+            if (cond & 0x8) return mkU32(1);
+            return mkU32(0);
+         }
+
+         /* cc == 2 is a don't care */
+         if (cond == 8 || cond == 8 + 2) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 7 || cond == 7 - 2) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 1 || cond == 1 + 2) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          cc_dep2));
+         }
+         if (cond == 14 || cond == 14 - 2) {  /* ! OVFL */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          cc_dep2));
+         }
+         goto missed;
+      }
+
+      /* S390_CC_OP_TEST_UNDER_MASK_16
+         Since the mask comes from an immediate field in the opcode, we
+         expect the mask to be a constant here. That simplifies matters. */
+      if (cc_op == S390_CC_OP_TEST_UNDER_MASK_16) {
+         ULong mask16;
+         UInt msb;
+
+         if (! isC64(cc_dep2)) goto missed;
+
+         mask16 = cc_dep2->Iex.Const.con->Ico.U64;
+
+         /* Get rid of the mask16 == 0 case first. Some of the simplifications
+            below (e.g. for OVFL) only hold if mask16 == 0.  */
+         if (mask16 == 0) {   /* cc == 0 */
+            if (cond & 0x8) return mkU32(1);
+            return mkU32(0);
+         }
+
+         if (cond == 8) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 7) {
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 1) {
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(mask16)));
+         }
+         if (cond == 14) {  /* ! OVFL */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_And64, cc_dep1, cc_dep2),
+                                          mkU64(mask16)));
+         }
+
+         /* Find MSB in mask */
+         msb = 0x8000;
+         while (msb > mask16)
+            msb >>= 1;
+
+         if (cond == 2) {  /* cc == 2 */
+            IRExpr *c1, *c2;
+
+            /* (cc_dep & msb) != 0 && (cc_dep & mask16) != mask16 */
+            c1 = binop(Iop_CmpNE64,
+                       binop(Iop_And64, cc_dep1, mkU64(msb)), mkU64(0));
+            c2 = binop(Iop_CmpNE64,
+                       binop(Iop_And64, cc_dep1, cc_dep2),
+                       mkU64(mask16));
+            return binop(Iop_And32, unop(Iop_1Uto32, c1),
+                         unop(Iop_1Uto32, c2));
+         }
+
+         if (cond == 4) {  /* cc == 1 */
+            IRExpr *c1, *c2;
+
+            /* (cc_dep & msb) == 0 && (cc_dep & mask16) != 0 */
+            c1 = binop(Iop_CmpEQ64,
+                       binop(Iop_And64, cc_dep1, mkU64(msb)), mkU64(0));
+            c2 = binop(Iop_CmpNE64,
+                       binop(Iop_And64, cc_dep1, cc_dep2),
+                       mkU64(0));
+            return binop(Iop_And32, unop(Iop_1Uto32, c1),
+                         unop(Iop_1Uto32, c2));
+         }
+
+         if (cond == 11) {  /* cc == 0,2,3 */
+            IRExpr *c1, *c2;
+
+            c1 = binop(Iop_CmpNE64,
+                       binop(Iop_And64, cc_dep1, mkU64(msb)), mkU64(0));
+            c2 = binop(Iop_CmpEQ64,
+                       binop(Iop_And64, cc_dep1, cc_dep2),
+                       mkU64(0));
+            return binop(Iop_Or32, unop(Iop_1Uto32, c1),
+                         unop(Iop_1Uto32, c2));
+         }
+
+         if (cond == 3) {  /* cc == 2 || cc == 3 */
+            return unop(Iop_1Uto32,
+                        binop(Iop_CmpNE64,
+                              binop(Iop_And64, cc_dep1, mkU64(msb)),
+                              mkU64(0)));
+         }
+         if (cond == 12) { /* cc == 0 || cc == 1 */
+            return unop(Iop_1Uto32,
+                        binop(Iop_CmpEQ64,
+                              binop(Iop_And64, cc_dep1, mkU64(msb)),
+                              mkU64(0)));
+         }
+         // vex_printf("TUM mask = 0x%llx\n", mask16);
+         goto missed;
+      }
+
+      /* S390_CC_OP_UNSIGNED_SUB_64/32 */
+      if (cc_op == S390_CC_OP_UNSIGNED_SUB_64 ||
+          cc_op == S390_CC_OP_UNSIGNED_SUB_32) {
+         /*
+            cc_dep1, cc_dep2 are the zero extended left and right operands
+
+            cc == 1  --> result != 0, borrow    (cond == 4)
+            cc == 2  --> result == 0, no borrow (cond == 2)
+            cc == 3  --> result != 0, no borrow (cond == 1)
+
+            cc = (cc_dep1 == cc_dep2) ? 2
+                                      : (cc_dep1 > cc_dep2) ? 3 : 1;
+
+            Because cc == 0 cannot occur the leftmost bit of cond is
+            a don't care.
+         */
+         if (cond == 1 || cond == 1 + 8) {  /* cc == 3   op2 < op1 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
+         }
+         if (cond == 2 || cond == 2 + 8) {  /* cc == 2 */
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
+         }
+         if (cond == 4 || cond == 4 + 8) {  /* cc == 1 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
+         }
+         if (cond == 3 || cond == 3 + 8) {  /* cc == 2 || cc == 3 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
+         }
+         if (cond == 6 || cond == 6 + 8) {  /* cc == 2 || cc == 1 */
+            return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
+         }
+
+         if (cond == 5 || cond == 5 + 8) {  /* cc == 3 || cc == 1 */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
+         }
+         if (cond == 7 || cond == 7 + 8) {
+            return mkU32(1);
+         }
+         /* Remaining case */
+         return mkU32(0);
+      }
+
+      /* S390_CC_OP_UNSIGNED_ADD_64 */
+      if (cc_op == S390_CC_OP_UNSIGNED_ADD_64) {
+         /*
+            cc_dep1, cc_dep2 are the zero extended left and right operands
+
+            cc == 0  --> result == 0, no carry  (cond == 8)
+            cc == 1  --> result != 0, no carry  (cond == 4)
+            cc == 2  --> result == 0, carry     (cond == 2)
+            cc == 3  --> result != 0, carry     (cond == 1)
+         */
+         if (cond == 8) { /* cc == 0 */
+            /* Both inputs are 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_Or64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 7) { /* cc == 1,2,3 */
+            /* Not both inputs are 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_Or64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 8 + 2) {  /* cc == 0,2  -> result is zero */
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_Add64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 4 + 1) {  /* cc == 1,3  -> result is not zero */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_Add64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         goto missed;
+      }
+
+      /* S390_CC_OP_UNSIGNED_ADD_32 */
+      if (cc_op == S390_CC_OP_UNSIGNED_ADD_32) {
+         /*
+            cc_dep1, cc_dep2 are the zero extended left and right operands
+
+            cc == 0  --> result == 0, no carry  (cond == 8)
+            cc == 1  --> result != 0, no carry  (cond == 4)
+            cc == 2  --> result == 0, carry     (cond == 2)
+            cc == 3  --> result != 0, carry     (cond == 1)
+         */
+         if (cond == 8) { /* cc == 0 */
+            /* Both inputs are 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ64,
+                                          binop(Iop_Or64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 7) { /* cc == 1,2,3 */
+            /* Not both inputs are 0 */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE64,
+                                          binop(Iop_Or64, cc_dep1, cc_dep2),
+                                          mkU64(0)));
+         }
+         if (cond == 8 + 2) {  /* cc == 0,2  -> result is zero */
+            return unop(Iop_1Uto32, binop(Iop_CmpEQ32,
+                                          binop(Iop_Add32,
+                                                unop(Iop_64to32, cc_dep1),
+                                                unop(Iop_64to32, cc_dep2)),
+                                          mkU32(0)));
+         }
+         if (cond == 4 + 1) {  /* cc == 1,3  -> result is not zero */
+            return unop(Iop_1Uto32, binop(Iop_CmpNE32,
+                                          binop(Iop_Add32,
+                                                unop(Iop_64to32, cc_dep1),
+                                                unop(Iop_64to32, cc_dep2)),
+                                          mkU32(0)));
+         }
+         goto missed;
+      }
+
+      /* S390_CC_OP_SET */
+      if (cc_op == S390_CC_OP_SET) {
+         /* cc_dep1 is the condition code
+
+            Return 1, if ((cond << cc_dep1) & 0x8) != 0 */
+
+        return unop(Iop_1Uto32,
+                    binop(Iop_CmpNE64,
+                          binop(Iop_And64,
+                                binop(Iop_Shl64, cond_expr,
+                                      unop(Iop_64to8, cc_dep1)),
+                                mkU64(8)),
+                          mkU64(0)));
+      }
+
+      /* S390_CC_OP_TEST_AND_SET */
+      if (cc_op == S390_CC_OP_TEST_AND_SET) {
+         /* cc_dep1 is the zero-extended loaded value
+
+            cc == 0  --> leftmost bit is zero  (cond == 8)
+            cc == 1  --> leftmost bit is one   (cond == 4)
+
+            As cc is either 0 or 1, only the two leftmost bits of the mask
+            are relevant. */
+         IRExpr *bit = binop(Iop_Shr64, cc_dep1, mkU8(7));
+
+         switch (cond & (8 + 4)) {
+         case 0:     return mkU32(0);
+         case 4:     return unop(Iop_1Uto32, binop(Iop_CmpNE64, bit, mkU64(0)));
+         case 8:     return unop(Iop_1Uto32, binop(Iop_CmpEQ64, bit, mkU64(0)));
+         case 8 + 4: return mkU32(1);
+         }
+         /* not reached */
+      }
+
+missed:
+      ;
+   }
+
+   return NULL;
+}
+
+/*---------------------------------------------------------------*/
+/*--- end                                guest_s390_helpers.c ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_toIR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_toIR.c
new file mode 100644
index 000000000..15d1a7da4
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_s390_toIR.c
@@ -0,0 +1,13055 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                 guest_s390_toIR.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm and Christian Borntraeger */
+
+/* Translates s390 code to IR. */
+
+#include "libvex_basictypes.h"
+#include "libvex_ir.h"
+#include "libvex_guest_s390x.h"      /* VexGuestS390XState */
+#include "libvex.h"                  /* needed for bb_to_IR.h */
+#include "libvex_guest_offsets.h"    /* OFFSET_s390x_SYSNO */
+
+#include "main_util.h"               /* vassert */
+#include "main_globals.h"            /* vex_traceflags */
+#include "guest_generic_bb_to_IR.h"  /* DisResult */
+#include "guest_s390_defs.h"         /* prototypes for this file's functions */
+#include "host_s390_disasm.h"
+#include "host_s390_defs.h"          /* S390_ROUND_xyzzy */
+
+
+/*------------------------------------------------------------*/
+/*--- Globals                                              ---*/
+/*------------------------------------------------------------*/
+
+/* The IRSB* into which we're generating code. */
+static IRSB *irsb;
+
+/* The guest address for the instruction currently being
+   translated. */
+static Addr64 guest_IA_curr_instr;
+
+/* The guest address for the instruction following the current instruction. */
+static Addr64 guest_IA_next_instr;
+
+/* Result of disassembly step. */
+static DisResult *dis_res;
+
+/* The last seen execute target instruction */
+ULong last_execute_target;
+
+/* The possible outcomes of a decoding operation */
+typedef enum {
+   S390_DECODE_OK,
+   S390_DECODE_UNKNOWN_INSN,
+   S390_DECODE_UNIMPLEMENTED_INSN,
+   S390_DECODE_UNKNOWN_SPECIAL_INSN,
+   S390_DECODE_ERROR
+} s390_decode_t;
+
+/*------------------------------------------------------------*/
+/*--- Helpers for constructing IR.                         ---*/
+/*------------------------------------------------------------*/
+
+/* Sign extend a value with the given number of bits. This is a
+   macro because it allows us to overload the type of the value.
+   Note that VALUE must have a signed type! */
+#undef sign_extend
+#define sign_extend(value,num_bits) \
+(((value) << (sizeof(__typeof__(value)) * 8 - (num_bits))) >> \
+ (sizeof(__typeof__(value)) * 8 - (num_bits)))
+
+
+/* Add a statement to the current irsb. */
+static __inline__ void
+stmt(IRStmt *st)
+{
+   addStmtToIRSB(irsb, st);
+}
+
+/* Allocate a new temporary of the given type. */
+static __inline__ IRTemp
+newTemp(IRType type)
+{
+   vassert(isPlausibleIRType(type));
+
+   return newIRTemp(irsb->tyenv, type);
+}
+
+/* Create an expression node for a temporary */
+static __inline__ IRExpr *
+mkexpr(IRTemp tmp)
+{
+   return IRExpr_RdTmp(tmp);
+}
+
+/* Add a statement that assigns to a temporary */
+static __inline__ void
+assign(IRTemp dst, IRExpr *expr)
+{
+   stmt(IRStmt_WrTmp(dst, expr));
+}
+
+/* Create a temporary of the given type and assign the expression to it */
+static __inline__ IRTemp
+mktemp(IRType type, IRExpr *expr)
+{
+   IRTemp temp = newTemp(type);
+
+   assign(temp, expr);
+
+   return temp;
+}
+
+/* Create a unary expression */
+static __inline__ IRExpr *
+unop(IROp kind, IRExpr *op)
+{
+   return IRExpr_Unop(kind, op);
+}
+
+/* Create a binary expression */
+static __inline__ IRExpr *
+binop(IROp kind, IRExpr *op1, IRExpr *op2)
+{
+   return IRExpr_Binop(kind, op1, op2);
+}
+
+/* Create a ternary expression */
+static __inline__ IRExpr *
+triop(IROp kind, IRExpr *op1, IRExpr *op2, IRExpr *op3)
+{
+   return IRExpr_Triop(kind, op1, op2, op3);
+}
+
+/* Create a quaternary expression */
+static __inline__  IRExpr *
+qop(IROp kind, IRExpr *op1, IRExpr *op2, IRExpr *op3, IRExpr *op4)
+{
+   return IRExpr_Qop(kind, op1, op2, op3, op4);
+}
+
+/* Create an expression node for an 8-bit integer constant */
+static __inline__ IRExpr *
+mkU8(UInt value)
+{
+   vassert(value < 256);
+
+   return IRExpr_Const(IRConst_U8((UChar)value));
+}
+
+/* Create an expression node for a 16-bit integer constant */
+static __inline__ IRExpr *
+mkU16(UInt value)
+{
+   vassert(value < 65536);
+
+   return IRExpr_Const(IRConst_U16((UShort)value));
+}
+
+/* Create an expression node for a 32-bit integer constant */
+static __inline__ IRExpr *
+mkU32(UInt value)
+{
+   return IRExpr_Const(IRConst_U32(value));
+}
+
+/* Create an expression node for a 64-bit integer constant */
+static __inline__ IRExpr *
+mkU64(ULong value)
+{
+   return IRExpr_Const(IRConst_U64(value));
+}
+
+/* Create an expression node for a 32-bit floating point constant
+   whose value is given by a bit pattern. */
+static __inline__ IRExpr *
+mkF32i(UInt value)
+{
+   return IRExpr_Const(IRConst_F32i(value));
+}
+
+/* Create an expression node for a 32-bit floating point constant
+   whose value is given by a bit pattern. */
+static __inline__ IRExpr *
+mkF64i(ULong value)
+{
+   return IRExpr_Const(IRConst_F64i(value));
+}
+
+/* Little helper function for my sanity. ITE = if-then-else */
+static IRExpr *
+mkite(IRExpr *condition, IRExpr *iftrue, IRExpr *iffalse)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, condition) == Ity_I1);
+
+   return IRExpr_Mux0X(unop(Iop_1Uto8, condition), iffalse, iftrue);
+}
+
+/* Add a statement that stores DATA at ADDR. This is a big-endian machine. */
+static void __inline__
+store(IRExpr *addr, IRExpr *data)
+{
+   stmt(IRStmt_Store(Iend_BE, addr, data));
+}
+
+/* Create an expression that loads a TYPE sized value from ADDR.
+   This is a big-endian machine. */
+static __inline__ IRExpr *
+load(IRType type, IRExpr *addr)
+{
+   return IRExpr_Load(Iend_BE, type, addr);
+}
+
+/* Function call */
+static void
+call_function(IRExpr *callee_address)
+{
+   irsb->next = callee_address;
+   irsb->jumpkind = Ijk_Call;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* Function return sequence */
+static void
+return_from_function(IRExpr *return_address)
+{
+   irsb->next = return_address;
+   irsb->jumpkind = Ijk_Ret;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* A conditional branch whose target is not known at instrumentation time.
+
+   if (condition) goto computed_target;
+
+   Needs to be represented as:
+
+   if (! condition) goto next_instruction;
+   goto computed_target;
+
+   This inversion is being handled at code generation time. So we just
+   take the condition here as is.
+*/
+static void
+if_not_condition_goto_computed(IRExpr *condition, IRExpr *target)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, condition) == Ity_I1);
+
+   stmt(IRStmt_Exit(condition, Ijk_Boring, IRConst_U64(guest_IA_next_instr)));
+
+   irsb->next = target;
+   irsb->jumpkind = Ijk_Boring;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* A conditional branch whose target is known at instrumentation time. */
+static void
+if_condition_goto(IRExpr *condition, Addr64 target)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, condition) == Ity_I1);
+
+   stmt(IRStmt_Exit(condition, Ijk_Boring, IRConst_U64(target)));
+   dis_res->whatNext = Dis_Continue;
+}
+
+/* An unconditional branch. Target may or may not be known at instrumentation
+   time. */
+static void
+always_goto(IRExpr *target)
+{
+   irsb->next = target;
+   irsb->jumpkind = Ijk_Boring;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* A system call */
+static void
+system_call(IRExpr *sysno)
+{
+   /* Store the system call number in the pseudo register. */
+   stmt(IRStmt_Put(OFFSET_s390x_SYSNO, sysno));
+
+   /* Store the current IA into guest_IP_AT_SYSCALL. libvex_ir.h says so. */
+   stmt(IRStmt_Put(OFFSET_s390x_IP_AT_SYSCALL, mkU64(guest_IA_curr_instr)));
+
+   /* It's important that all ArchRegs carry their up-to-date value
+      at this point.  So we declare an end-of-block here, which
+      forces any TempRegs caching ArchRegs to be flushed. */
+   irsb->next = mkU64(guest_IA_next_instr);
+
+   irsb->jumpkind = Ijk_Sys_syscall;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* Encode the s390 rounding mode as it appears in the m3/m4 fields of certain
+   instructions to VEX's IRRoundingMode. */
+static IRRoundingMode
+encode_rounding_mode(UChar mode)
+{
+   switch (mode) {
+   case S390_ROUND_NEAREST_EVEN:  return Irrm_NEAREST;
+   case S390_ROUND_ZERO:          return Irrm_ZERO;
+   case S390_ROUND_POSINF:        return Irrm_PosINF;
+   case S390_ROUND_NEGINF:        return Irrm_NegINF;
+   }
+   vpanic("encode_rounding_mode");
+}
+
+static __inline__ IRExpr *get_fpr_dw0(UInt);
+static __inline__ void    put_fpr_dw0(UInt, IRExpr *);
+
+/* Read a floating point register pair and combine their contents into a
+   128-bit value */
+static IRExpr *
+get_fpr_pair(UInt archreg)
+{
+   IRExpr *high = get_fpr_dw0(archreg);
+   IRExpr *low  = get_fpr_dw0(archreg + 2);
+
+   return binop(Iop_F64HLtoF128, high, low);
+}
+
+/* Write a 128-bit floating point value into a register pair. */
+static void
+put_fpr_pair(UInt archreg, IRExpr *expr)
+{
+   IRExpr *high = unop(Iop_F128HItoF64, expr);
+   IRExpr *low  = unop(Iop_F128LOtoF64, expr);
+
+   put_fpr_dw0(archreg,     high);
+   put_fpr_dw0(archreg + 2, low);
+}
+
+
+/* Flags thunk offsets */
+#define S390X_GUEST_OFFSET_CC_OP    S390_GUEST_OFFSET(guest_CC_OP)
+#define S390X_GUEST_OFFSET_CC_DEP1  S390_GUEST_OFFSET(guest_CC_DEP1)
+#define S390X_GUEST_OFFSET_CC_DEP2  S390_GUEST_OFFSET(guest_CC_DEP2)
+#define S390X_GUEST_OFFSET_CC_NDEP  S390_GUEST_OFFSET(guest_CC_NDEP)
+
+/*------------------------------------------------------------*/
+/*--- Build the flags thunk.                               ---*/
+/*------------------------------------------------------------*/
+
+/* Completely fill the flags thunk. We're always filling all fields.
+   Apparently, that is better for redundant PUT elimination. */
+static void
+s390_cc_thunk_fill(IRExpr *op, IRExpr *dep1, IRExpr *dep2, IRExpr *ndep)
+{
+   UInt op_off, dep1_off, dep2_off, ndep_off;
+
+   op_off   = S390X_GUEST_OFFSET_CC_OP;
+   dep1_off = S390X_GUEST_OFFSET_CC_DEP1;
+   dep2_off = S390X_GUEST_OFFSET_CC_DEP2;
+   ndep_off = S390X_GUEST_OFFSET_CC_NDEP;
+
+   stmt(IRStmt_Put(op_off,   op));
+   stmt(IRStmt_Put(dep1_off, dep1));
+   stmt(IRStmt_Put(dep2_off, dep2));
+   stmt(IRStmt_Put(ndep_off, ndep));
+}
+
+
+/* Create an expression for V and widen the result to 64 bit. */
+static IRExpr *
+s390_cc_widen(IRTemp v, Bool sign_extend)
+{
+   IRExpr *expr;
+
+   expr = mkexpr(v);
+
+   switch (typeOfIRTemp(irsb->tyenv, v)) {
+   case Ity_I64:
+      break;
+   case Ity_I32:
+      expr = unop(sign_extend ? Iop_32Sto64 : Iop_32Uto64, expr);
+      break;
+   case Ity_I16:
+      expr = unop(sign_extend ? Iop_16Sto64 : Iop_16Uto64, expr);
+      break;
+   case Ity_I8:
+      expr = unop(sign_extend ? Iop_8Sto64 : Iop_8Uto64, expr);
+      break;
+   default:
+      vpanic("s390_cc_widen");
+   }
+
+   return expr;
+}
+
+static void
+s390_cc_thunk_put1(UInt opc, IRTemp d1, Bool sign_extend)
+{
+   IRExpr *op, *dep1, *dep2, *ndep;
+
+   op   = mkU64(opc);
+   dep1 = s390_cc_widen(d1, sign_extend);
+   dep2 = mkU64(0);
+   ndep = mkU64(0);
+
+   s390_cc_thunk_fill(op, dep1, dep2, ndep);
+}
+
+
+static void
+s390_cc_thunk_put2(UInt opc, IRTemp d1, IRTemp d2, Bool sign_extend)
+{
+   IRExpr *op, *dep1, *dep2, *ndep;
+
+   op   = mkU64(opc);
+   dep1 = s390_cc_widen(d1, sign_extend);
+   dep2 = s390_cc_widen(d2, sign_extend);
+   ndep = mkU64(0);
+
+   s390_cc_thunk_fill(op, dep1, dep2, ndep);
+}
+
+
+/* memcheck believes that the NDEP field in the flags thunk is always
+   defined. But for some flag computations (e.g. add with carry) that is
+   just not true. We therefore need to convey to memcheck that the value
+   of the ndep field does matter and therefore we make the DEP2 field
+   depend on it:
+
+   DEP2 = original_DEP2 ^ NDEP
+
+   In s390_calculate_cc we exploit that  (a^b)^b == a
+   I.e. we xor the DEP2 value with the NDEP value to recover the
+   original_DEP2 value. */
+static void
+s390_cc_thunk_put3(UInt opc, IRTemp d1, IRTemp d2, IRTemp nd, Bool sign_extend)
+{
+   IRExpr *op, *dep1, *dep2, *ndep, *dep2x;
+
+   op   = mkU64(opc);
+   dep1 = s390_cc_widen(d1, sign_extend);
+   dep2 = s390_cc_widen(d2, sign_extend);
+   ndep = s390_cc_widen(nd, sign_extend);
+
+   dep2x = binop(Iop_Xor64, dep2, ndep);
+
+   s390_cc_thunk_fill(op, dep1, dep2x, ndep);
+}
+
+
+/* Write one floating point value into the flags thunk */
+static void
+s390_cc_thunk_put1f(UInt opc, IRTemp d1)
+{
+   IRExpr *op, *dep1, *dep2, *ndep;
+
+   op   = mkU64(opc);
+   dep1 = mkexpr(d1);
+   dep2 = mkU64(0);
+   ndep = mkU64(0);
+
+   s390_cc_thunk_fill(op, dep1, dep2, ndep);
+}
+
+
+/* Write a floating point value and an integer into the flags thunk. The
+   integer value is zero-extended first. */
+static void
+s390_cc_thunk_putFZ(UInt opc, IRTemp d1, IRTemp d2)
+{
+   IRExpr *op, *dep1, *dep2, *ndep;
+
+   op   = mkU64(opc);
+   dep1 = mkexpr(d1);
+   dep2 = s390_cc_widen(d2, False);
+   ndep = mkU64(0);
+
+   s390_cc_thunk_fill(op, dep1, dep2, ndep);
+}
+
+
+/* Write a 128-bit floating point value into the flags thunk. This is
+   done by splitting the value into two 64-bits values. */
+static void
+s390_cc_thunk_put1f128(UInt opc, IRTemp d1)
+{
+   IRExpr *op, *hi, *lo, *ndep;
+
+   op   = mkU64(opc);
+   hi   = unop(Iop_F128HItoF64, mkexpr(d1));
+   lo   = unop(Iop_F128LOtoF64, mkexpr(d1));
+   ndep = mkU64(0);
+
+   s390_cc_thunk_fill(op, hi, lo, ndep);
+}
+
+
+/* Write a 128-bit floating point value and an integer into the flags thunk.
+   The integer value is zero-extended first. */
+static void
+s390_cc_thunk_put1f128Z(UInt opc, IRTemp d1, IRTemp nd)
+{
+   IRExpr *op, *hi, *lo, *lox, *ndep;
+
+   op   = mkU64(opc);
+   hi   = unop(Iop_F128HItoF64, mkexpr(d1));
+   lo   = unop(Iop_ReinterpF64asI64, unop(Iop_F128LOtoF64, mkexpr(d1)));
+   ndep = s390_cc_widen(nd, False);
+
+   lox = binop(Iop_Xor64, lo, ndep);  /* convey dependency */
+
+   s390_cc_thunk_fill(op, hi, lox, ndep);
+}
+
+
+static void
+s390_cc_set(UInt val)
+{
+   s390_cc_thunk_fill(mkU64(S390_CC_OP_SET),
+                      mkU64(val), mkU64(0), mkU64(0));
+}
+
+/* Build IR to calculate the condition code from flags thunk.
+   Returns an expression of type Ity_I32 */
+static IRExpr *
+s390_call_calculate_cc(void)
+{
+   IRExpr **args, *call, *op, *dep1, *dep2, *ndep;
+
+   op   = IRExpr_Get(S390X_GUEST_OFFSET_CC_OP,   Ity_I64);
+   dep1 = IRExpr_Get(S390X_GUEST_OFFSET_CC_DEP1, Ity_I64);
+   dep2 = IRExpr_Get(S390X_GUEST_OFFSET_CC_DEP2, Ity_I64);
+   ndep = IRExpr_Get(S390X_GUEST_OFFSET_CC_NDEP, Ity_I64);
+
+   args = mkIRExprVec_4(op, dep1, dep2, ndep);
+   call = mkIRExprCCall(Ity_I32, 0 /*regparm*/,
+                        "s390_calculate_cc", &s390_calculate_cc, args);
+
+   /* Exclude OP and NDEP from definedness checking.  We're only
+      interested in DEP1 and DEP2. */
+   call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<3);
+
+   return call;
+}
+
+/* Build IR to calculate the internal condition code for a "compare and branch"
+   insn. Returns an expression of type Ity_I32 */
+static IRExpr *
+s390_call_calculate_icc(UInt opc, IRTemp op1, IRTemp op2, Bool sign_extend)
+{
+   IRExpr **args, *call, *op, *dep1, *dep2;
+
+   op   = mkU64(opc);
+   dep1 = s390_cc_widen(op1, sign_extend);
+   dep2 = s390_cc_widen(op2, sign_extend);
+
+   args = mkIRExprVec_3(op, dep1, dep2);
+   call = mkIRExprCCall(Ity_I32, 0 /*regparm*/,
+                        "s390_calculate_icc", &s390_calculate_icc, args);
+
+   /* Exclude OP from definedness checking.  We're only
+      interested in DEP1 and DEP2. */
+   call->Iex.CCall.cee->mcx_mask = (1<<0);
+
+   return call;
+}
+
+/* Build IR to calculate the condition code from flags thunk.
+   Returns an expression of type Ity_I32 */
+static IRExpr *
+s390_call_calculate_cond(UInt m)
+{
+   IRExpr **args, *call, *op, *dep1, *dep2, *ndep, *mask;
+
+   mask = mkU64(m);
+   op   = IRExpr_Get(S390X_GUEST_OFFSET_CC_OP,   Ity_I64);
+   dep1 = IRExpr_Get(S390X_GUEST_OFFSET_CC_DEP1, Ity_I64);
+   dep2 = IRExpr_Get(S390X_GUEST_OFFSET_CC_DEP2, Ity_I64);
+   ndep = IRExpr_Get(S390X_GUEST_OFFSET_CC_NDEP, Ity_I64);
+
+   args = mkIRExprVec_5(mask, op, dep1, dep2, ndep);
+   call = mkIRExprCCall(Ity_I32, 0 /*regparm*/,
+                        "s390_calculate_cond", &s390_calculate_cond, args);
+
+   /* Exclude the requested condition, OP and NDEP from definedness
+      checking.  We're only interested in DEP1 and DEP2. */
+   call->Iex.CCall.cee->mcx_mask = (1<<0) | (1<<1) | (1<<4);
+
+   return call;
+}
+
+#define s390_cc_thunk_putZ(op,dep1)  s390_cc_thunk_put1(op,dep1,False)
+#define s390_cc_thunk_putS(op,dep1)  s390_cc_thunk_put1(op,dep1,True)
+#define s390_cc_thunk_putF(op,dep1)  s390_cc_thunk_put1f(op,dep1)
+#define s390_cc_thunk_putZZ(op,dep1,dep2) s390_cc_thunk_put2(op,dep1,dep2,False)
+#define s390_cc_thunk_putSS(op,dep1,dep2) s390_cc_thunk_put2(op,dep1,dep2,True)
+#define s390_cc_thunk_putFF(op,dep1,dep2) s390_cc_thunk_put2f(op,dep1,dep2)
+#define s390_cc_thunk_putZZZ(op,dep1,dep2,ndep) \
+        s390_cc_thunk_put3(op,dep1,dep2,ndep,False)
+#define s390_cc_thunk_putSSS(op,dep1,dep2,ndep) \
+        s390_cc_thunk_put3(op,dep1,dep2,ndep,True)
+#define s390_call_calculate_iccZZ(op,dep1,dep2) \
+        s390_call_calculate_icc(op,dep1,dep2,False)
+#define s390_call_calculate_iccSS(op,dep1,dep2) \
+        s390_call_calculate_icc(op,dep1,dep2,True)
+
+
+#define OFFB_TISTART   offsetof(VexGuestS390XState, guest_TISTART)
+#define OFFB_TILEN     offsetof(VexGuestS390XState, guest_TILEN)
+
+
+/*------------------------------------------------------------*/
+/*--- Guest register access                                ---*/
+/*------------------------------------------------------------*/
+
+
+/*------------------------------------------------------------*/
+/*--- ar registers                                         ---*/
+/*------------------------------------------------------------*/
+
+/* Return the guest state offset of a ar register. */
+static UInt
+ar_offset(UInt archreg)
+{
+   static const UInt offset[16] = {
+      offsetof(VexGuestS390XState, guest_a0),
+      offsetof(VexGuestS390XState, guest_a1),
+      offsetof(VexGuestS390XState, guest_a2),
+      offsetof(VexGuestS390XState, guest_a3),
+      offsetof(VexGuestS390XState, guest_a4),
+      offsetof(VexGuestS390XState, guest_a5),
+      offsetof(VexGuestS390XState, guest_a6),
+      offsetof(VexGuestS390XState, guest_a7),
+      offsetof(VexGuestS390XState, guest_a8),
+      offsetof(VexGuestS390XState, guest_a9),
+      offsetof(VexGuestS390XState, guest_a10),
+      offsetof(VexGuestS390XState, guest_a11),
+      offsetof(VexGuestS390XState, guest_a12),
+      offsetof(VexGuestS390XState, guest_a13),
+      offsetof(VexGuestS390XState, guest_a14),
+      offsetof(VexGuestS390XState, guest_a15),
+   };
+
+   vassert(archreg < 16);
+
+   return offset[archreg];
+}
+
+
+/* Return the guest state offset of word #0 of a ar register. */
+static __inline__ UInt
+ar_w0_offset(UInt archreg)
+{
+   return ar_offset(archreg) + 0;
+}
+
+/* Write word #0 of a ar to the guest state. */
+static __inline__ void
+put_ar_w0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(ar_w0_offset(archreg), expr));
+}
+
+/* Read word #0 of a ar register. */
+static __inline__ IRExpr *
+get_ar_w0(UInt archreg)
+{
+   return IRExpr_Get(ar_w0_offset(archreg), Ity_I32);
+}
+
+
+/*------------------------------------------------------------*/
+/*--- fpr registers                                        ---*/
+/*------------------------------------------------------------*/
+
+/* Return the guest state offset of a fpr register. */
+static UInt
+fpr_offset(UInt archreg)
+{
+   static const UInt offset[16] = {
+      offsetof(VexGuestS390XState, guest_f0),
+      offsetof(VexGuestS390XState, guest_f1),
+      offsetof(VexGuestS390XState, guest_f2),
+      offsetof(VexGuestS390XState, guest_f3),
+      offsetof(VexGuestS390XState, guest_f4),
+      offsetof(VexGuestS390XState, guest_f5),
+      offsetof(VexGuestS390XState, guest_f6),
+      offsetof(VexGuestS390XState, guest_f7),
+      offsetof(VexGuestS390XState, guest_f8),
+      offsetof(VexGuestS390XState, guest_f9),
+      offsetof(VexGuestS390XState, guest_f10),
+      offsetof(VexGuestS390XState, guest_f11),
+      offsetof(VexGuestS390XState, guest_f12),
+      offsetof(VexGuestS390XState, guest_f13),
+      offsetof(VexGuestS390XState, guest_f14),
+      offsetof(VexGuestS390XState, guest_f15),
+   };
+
+   vassert(archreg < 16);
+
+   return offset[archreg];
+}
+
+
+/* Return the guest state offset of word #0 of a fpr register. */
+static __inline__ UInt
+fpr_w0_offset(UInt archreg)
+{
+   return fpr_offset(archreg) + 0;
+}
+
+/* Write word #0 of a fpr to the guest state. */
+static __inline__ void
+put_fpr_w0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_F32);
+
+   stmt(IRStmt_Put(fpr_w0_offset(archreg), expr));
+}
+
+/* Read word #0 of a fpr register. */
+static __inline__ IRExpr *
+get_fpr_w0(UInt archreg)
+{
+   return IRExpr_Get(fpr_w0_offset(archreg), Ity_F32);
+}
+
+/* Return the guest state offset of double word #0 of a fpr register. */
+static __inline__ UInt
+fpr_dw0_offset(UInt archreg)
+{
+   return fpr_offset(archreg) + 0;
+}
+
+/* Write double word #0 of a fpr to the guest state. */
+static __inline__ void
+put_fpr_dw0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_F64);
+
+   stmt(IRStmt_Put(fpr_dw0_offset(archreg), expr));
+}
+
+/* Read double word #0 of a fpr register. */
+static __inline__ IRExpr *
+get_fpr_dw0(UInt archreg)
+{
+   return IRExpr_Get(fpr_dw0_offset(archreg), Ity_F64);
+}
+
+
+/*------------------------------------------------------------*/
+/*--- gpr registers                                        ---*/
+/*------------------------------------------------------------*/
+
+/* Return the guest state offset of a gpr register. */
+static UInt
+gpr_offset(UInt archreg)
+{
+   static const UInt offset[16] = {
+      offsetof(VexGuestS390XState, guest_r0),
+      offsetof(VexGuestS390XState, guest_r1),
+      offsetof(VexGuestS390XState, guest_r2),
+      offsetof(VexGuestS390XState, guest_r3),
+      offsetof(VexGuestS390XState, guest_r4),
+      offsetof(VexGuestS390XState, guest_r5),
+      offsetof(VexGuestS390XState, guest_r6),
+      offsetof(VexGuestS390XState, guest_r7),
+      offsetof(VexGuestS390XState, guest_r8),
+      offsetof(VexGuestS390XState, guest_r9),
+      offsetof(VexGuestS390XState, guest_r10),
+      offsetof(VexGuestS390XState, guest_r11),
+      offsetof(VexGuestS390XState, guest_r12),
+      offsetof(VexGuestS390XState, guest_r13),
+      offsetof(VexGuestS390XState, guest_r14),
+      offsetof(VexGuestS390XState, guest_r15),
+   };
+
+   vassert(archreg < 16);
+
+   return offset[archreg];
+}
+
+
+/* Return the guest state offset of word #0 of a gpr register. */
+static __inline__ UInt
+gpr_w0_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 0;
+}
+
+/* Write word #0 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_w0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(gpr_w0_offset(archreg), expr));
+}
+
+/* Read word #0 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_w0(UInt archreg)
+{
+   return IRExpr_Get(gpr_w0_offset(archreg), Ity_I32);
+}
+
+/* Return the guest state offset of double word #0 of a gpr register. */
+static __inline__ UInt
+gpr_dw0_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 0;
+}
+
+/* Write double word #0 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_dw0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I64);
+
+   stmt(IRStmt_Put(gpr_dw0_offset(archreg), expr));
+}
+
+/* Read double word #0 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_dw0(UInt archreg)
+{
+   return IRExpr_Get(gpr_dw0_offset(archreg), Ity_I64);
+}
+
+/* Return the guest state offset of half word #1 of a gpr register. */
+static __inline__ UInt
+gpr_hw1_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 2;
+}
+
+/* Write half word #1 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_hw1(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I16);
+
+   stmt(IRStmt_Put(gpr_hw1_offset(archreg), expr));
+}
+
+/* Read half word #1 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_hw1(UInt archreg)
+{
+   return IRExpr_Get(gpr_hw1_offset(archreg), Ity_I16);
+}
+
+/* Return the guest state offset of byte #6 of a gpr register. */
+static __inline__ UInt
+gpr_b6_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 6;
+}
+
+/* Write byte #6 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b6(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b6_offset(archreg), expr));
+}
+
+/* Read byte #6 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b6(UInt archreg)
+{
+   return IRExpr_Get(gpr_b6_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of byte #3 of a gpr register. */
+static __inline__ UInt
+gpr_b3_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 3;
+}
+
+/* Write byte #3 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b3(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b3_offset(archreg), expr));
+}
+
+/* Read byte #3 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b3(UInt archreg)
+{
+   return IRExpr_Get(gpr_b3_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of byte #0 of a gpr register. */
+static __inline__ UInt
+gpr_b0_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 0;
+}
+
+/* Write byte #0 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b0_offset(archreg), expr));
+}
+
+/* Read byte #0 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b0(UInt archreg)
+{
+   return IRExpr_Get(gpr_b0_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of word #1 of a gpr register. */
+static __inline__ UInt
+gpr_w1_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 4;
+}
+
+/* Write word #1 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_w1(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(gpr_w1_offset(archreg), expr));
+}
+
+/* Read word #1 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_w1(UInt archreg)
+{
+   return IRExpr_Get(gpr_w1_offset(archreg), Ity_I32);
+}
+
+/* Return the guest state offset of half word #3 of a gpr register. */
+static __inline__ UInt
+gpr_hw3_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 6;
+}
+
+/* Write half word #3 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_hw3(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I16);
+
+   stmt(IRStmt_Put(gpr_hw3_offset(archreg), expr));
+}
+
+/* Read half word #3 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_hw3(UInt archreg)
+{
+   return IRExpr_Get(gpr_hw3_offset(archreg), Ity_I16);
+}
+
+/* Return the guest state offset of byte #7 of a gpr register. */
+static __inline__ UInt
+gpr_b7_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 7;
+}
+
+/* Write byte #7 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b7(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b7_offset(archreg), expr));
+}
+
+/* Read byte #7 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b7(UInt archreg)
+{
+   return IRExpr_Get(gpr_b7_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of half word #0 of a gpr register. */
+static __inline__ UInt
+gpr_hw0_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 0;
+}
+
+/* Write half word #0 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_hw0(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I16);
+
+   stmt(IRStmt_Put(gpr_hw0_offset(archreg), expr));
+}
+
+/* Read half word #0 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_hw0(UInt archreg)
+{
+   return IRExpr_Get(gpr_hw0_offset(archreg), Ity_I16);
+}
+
+/* Return the guest state offset of byte #4 of a gpr register. */
+static __inline__ UInt
+gpr_b4_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 4;
+}
+
+/* Write byte #4 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b4(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b4_offset(archreg), expr));
+}
+
+/* Read byte #4 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b4(UInt archreg)
+{
+   return IRExpr_Get(gpr_b4_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of byte #1 of a gpr register. */
+static __inline__ UInt
+gpr_b1_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 1;
+}
+
+/* Write byte #1 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b1(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b1_offset(archreg), expr));
+}
+
+/* Read byte #1 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b1(UInt archreg)
+{
+   return IRExpr_Get(gpr_b1_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of half word #2 of a gpr register. */
+static __inline__ UInt
+gpr_hw2_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 4;
+}
+
+/* Write half word #2 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_hw2(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I16);
+
+   stmt(IRStmt_Put(gpr_hw2_offset(archreg), expr));
+}
+
+/* Read half word #2 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_hw2(UInt archreg)
+{
+   return IRExpr_Get(gpr_hw2_offset(archreg), Ity_I16);
+}
+
+/* Return the guest state offset of byte #5 of a gpr register. */
+static __inline__ UInt
+gpr_b5_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 5;
+}
+
+/* Write byte #5 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b5(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b5_offset(archreg), expr));
+}
+
+/* Read byte #5 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b5(UInt archreg)
+{
+   return IRExpr_Get(gpr_b5_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of byte #2 of a gpr register. */
+static __inline__ UInt
+gpr_b2_offset(UInt archreg)
+{
+   return gpr_offset(archreg) + 2;
+}
+
+/* Write byte #2 of a gpr to the guest state. */
+static __inline__ void
+put_gpr_b2(UInt archreg, IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I8);
+
+   stmt(IRStmt_Put(gpr_b2_offset(archreg), expr));
+}
+
+/* Read byte #2 of a gpr register. */
+static __inline__ IRExpr *
+get_gpr_b2(UInt archreg)
+{
+   return IRExpr_Get(gpr_b2_offset(archreg), Ity_I8);
+}
+
+/* Return the guest state offset of the counter register. */
+static UInt
+counter_offset(void)
+{
+   return offsetof(VexGuestS390XState, guest_counter);
+}
+
+/* Return the guest state offset of double word #0 of the counter register. */
+static __inline__ UInt
+counter_dw0_offset(void)
+{
+   return counter_offset() + 0;
+}
+
+/* Write double word #0 of the counter to the guest state. */
+static __inline__ void
+put_counter_dw0(IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I64);
+
+   stmt(IRStmt_Put(counter_dw0_offset(), expr));
+}
+
+/* Read double word #0 of the counter register. */
+static __inline__ IRExpr *
+get_counter_dw0(void)
+{
+   return IRExpr_Get(counter_dw0_offset(), Ity_I64);
+}
+
+/* Return the guest state offset of word #0 of the counter register. */
+static __inline__ UInt
+counter_w0_offset(void)
+{
+   return counter_offset() + 0;
+}
+
+/* Return the guest state offset of word #1 of the counter register. */
+static __inline__ UInt
+counter_w1_offset(void)
+{
+   return counter_offset() + 4;
+}
+
+/* Write word #0 of the counter to the guest state. */
+static __inline__ void
+put_counter_w0(IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(counter_w0_offset(), expr));
+}
+
+/* Read word #0 of the counter register. */
+static __inline__ IRExpr *
+get_counter_w0(void)
+{
+   return IRExpr_Get(counter_w0_offset(), Ity_I32);
+}
+
+/* Write word #1 of the counter to the guest state. */
+static __inline__ void
+put_counter_w1(IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(counter_w1_offset(), expr));
+}
+
+/* Read word #1 of the counter register. */
+static __inline__ IRExpr *
+get_counter_w1(void)
+{
+   return IRExpr_Get(counter_w1_offset(), Ity_I32);
+}
+
+/* Return the guest state offset of the fpc register. */
+static UInt
+fpc_offset(void)
+{
+   return offsetof(VexGuestS390XState, guest_fpc);
+}
+
+/* Return the guest state offset of word #0 of the fpc register. */
+static __inline__ UInt
+fpc_w0_offset(void)
+{
+   return fpc_offset() + 0;
+}
+
+/* Write word #0 of the fpc to the guest state. */
+static __inline__ void
+put_fpc_w0(IRExpr *expr)
+{
+   vassert(typeOfIRExpr(irsb->tyenv, expr) == Ity_I32);
+
+   stmt(IRStmt_Put(fpc_w0_offset(), expr));
+}
+
+/* Read word #0 of the fpc register. */
+static __inline__ IRExpr *
+get_fpc_w0(void)
+{
+   return IRExpr_Get(fpc_w0_offset(), Ity_I32);
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Build IR for formats                                 ---*/
+/*------------------------------------------------------------*/
+static void
+s390_format_I(HChar *(*irgen)(UChar i),
+              UChar i)
+{
+   HChar *mnm = irgen(i);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(MNM, UINT), mnm, i);
+}
+
+static void
+s390_format_RI(HChar *(*irgen)(UChar r1, UShort i2),
+               UChar r1, UShort i2)
+{
+   irgen(r1, i2);
+}
+
+static void
+s390_format_RI_RU(HChar *(*irgen)(UChar r1, UShort i2),
+                  UChar r1, UShort i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, UINT), mnm, r1, i2);
+}
+
+static void
+s390_format_RI_RI(HChar *(*irgen)(UChar r1, UShort i2),
+                  UChar r1, UShort i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, INT), mnm, r1, (Int)(Short)i2);
+}
+
+static void
+s390_format_RI_RP(HChar *(*irgen)(UChar r1, UShort i2),
+                  UChar r1, UShort i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, PCREL), mnm, r1, (Int)(Short)i2);
+}
+
+static void
+s390_format_RIE_RRP(HChar *(*irgen)(UChar r1, UChar r3, UShort i2),
+                    UChar r1, UChar r3, UShort i2)
+{
+   HChar *mnm = irgen(r1, r3, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, PCREL), mnm, r1, r3, (Int)(Short)i2);
+}
+
+static void
+s390_format_RIE_RRI0(HChar *(*irgen)(UChar r1, UChar r3, UShort i2),
+                     UChar r1, UChar r3, UShort i2)
+{
+   HChar *mnm = irgen(r1, r3, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, INT), mnm, r1, r3, (Int)(Short)i2);
+}
+
+static void
+s390_format_RIE_RRUUU(HChar *(*irgen)(UChar r1, UChar r2, UChar i3, UChar i4,
+                      UChar i5),
+                      UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+   HChar *mnm = irgen(r1, r2, i3, i4, i5);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC6(MNM, GPR, GPR, UINT, UINT, UINT), mnm, r1, r2, i3, i4,
+                  i5);
+}
+
+static void
+s390_format_RIE_RRPU(HChar *(*irgen)(UChar r1, UChar r2, UShort i4, UChar m3),
+                     UChar r1, UChar r2, UShort i4, UChar m3)
+{
+   HChar *mnm = irgen(r1, r2, i4, m3);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, GPR, CABM, PCREL), S390_XMNM_CAB, mnm, m3, r1,
+                  r2, m3, (Int)(Short)i4);
+}
+
+static void
+s390_format_RIE_RUPU(HChar *(*irgen)(UChar r1, UChar m3, UShort i4, UChar i2),
+                     UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   HChar *mnm = irgen(r1, m3, i4, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, UINT, CABM, PCREL), S390_XMNM_CAB, mnm, m3,
+                  r1, i2, m3, (Int)(Short)i4);
+}
+
+static void
+s390_format_RIE_RUPI(HChar *(*irgen)(UChar r1, UChar m3, UShort i4, UChar i2),
+                     UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   HChar *mnm = irgen(r1, m3, i4, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, INT, CABM, PCREL), S390_XMNM_CAB, mnm, m3, r1,
+                  (Int)(Char)i2, m3, (Int)(Short)i4);
+}
+
+static void
+s390_format_RIL(HChar *(*irgen)(UChar r1, UInt i2),
+                UChar r1, UInt i2)
+{
+   irgen(r1, i2);
+}
+
+static void
+s390_format_RIL_RU(HChar *(*irgen)(UChar r1, UInt i2),
+                   UChar r1, UInt i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, UINT), mnm, r1, i2);
+}
+
+static void
+s390_format_RIL_RI(HChar *(*irgen)(UChar r1, UInt i2),
+                   UChar r1, UInt i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, INT), mnm, r1, i2);
+}
+
+static void
+s390_format_RIL_RP(HChar *(*irgen)(UChar r1, UInt i2),
+                   UChar r1, UInt i2)
+{
+   HChar *mnm = irgen(r1, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, PCREL), mnm, r1, i2);
+}
+
+static void
+s390_format_RIL_UP(HChar *(*irgen)(void),
+                   UChar r1, UInt i2)
+{
+   HChar *mnm = irgen();
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UINT, PCREL), mnm, r1, i2);
+}
+
+static void
+s390_format_RIS_RURDI(HChar *(*irgen)(UChar r1, UChar m3, UChar i2,
+                      IRTemp op4addr),
+                      UChar r1, UChar m3, UChar b4, UShort d4, UChar i2)
+{
+   HChar *mnm;
+   IRTemp op4addr = newTemp(Ity_I64);
+
+   assign(op4addr, binop(Iop_Add64, mkU64(d4), b4 != 0 ? get_gpr_dw0(b4) :
+          mkU64(0)));
+
+   mnm = irgen(r1, m3, i2, op4addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, INT, CABM, UDXB), S390_XMNM_CAB, mnm, m3, r1,
+                  (Int)(Char)i2, m3, d4, 0, b4);
+}
+
+static void
+s390_format_RIS_RURDU(HChar *(*irgen)(UChar r1, UChar m3, UChar i2,
+                      IRTemp op4addr),
+                      UChar r1, UChar m3, UChar b4, UShort d4, UChar i2)
+{
+   HChar *mnm;
+   IRTemp op4addr = newTemp(Ity_I64);
+
+   assign(op4addr, binop(Iop_Add64, mkU64(d4), b4 != 0 ? get_gpr_dw0(b4) :
+          mkU64(0)));
+
+   mnm = irgen(r1, m3, i2, op4addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, UINT, CABM, UDXB), S390_XMNM_CAB, mnm, m3, r1,
+                  i2, m3, d4, 0, b4);
+}
+
+static void
+s390_format_RR(HChar *(*irgen)(UChar r1, UChar r2),
+               UChar r1, UChar r2)
+{
+   irgen(r1, r2);
+}
+
+static void
+s390_format_RR_RR(HChar *(*irgen)(UChar r1, UChar r2),
+                  UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, GPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RR_FF(HChar *(*irgen)(UChar r1, UChar r2),
+                  UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, FPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RRE(HChar *(*irgen)(UChar r1, UChar r2),
+                UChar r1, UChar r2)
+{
+   irgen(r1, r2);
+}
+
+static void
+s390_format_RRE_RR(HChar *(*irgen)(UChar r1, UChar r2),
+                   UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, GPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RRE_FF(HChar *(*irgen)(UChar r1, UChar r2),
+                   UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, FPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RRE_RF(HChar *(*irgen)(UChar, UChar),
+                   UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, FPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RRE_FR(HChar *(*irgen)(UChar r1, UChar r2),
+                   UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, GPR), mnm, r1, r2);
+}
+
+static void
+s390_format_RRE_R0(HChar *(*irgen)(UChar r1),
+                   UChar r1)
+{
+   HChar *mnm = irgen(r1);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(MNM, GPR), mnm, r1);
+}
+
+static void
+s390_format_RRE_F0(HChar *(*irgen)(UChar r1),
+                   UChar r1)
+{
+   HChar *mnm = irgen(r1);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(MNM, FPR), mnm, r1);
+}
+
+static void
+s390_format_RRF_F0FF(HChar *(*irgen)(UChar, UChar, UChar),
+                     UChar r1, UChar r3, UChar r2)
+{
+   HChar *mnm = irgen(r1, r3, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), mnm, r1, r3, r2);
+}
+
+static void
+s390_format_RRF_U0RR(HChar *(*irgen)(UChar m3, UChar r1, UChar r2),
+                     UChar m3, UChar r1, UChar r2, Int xmnm_kind)
+{
+   irgen(m3, r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(XMNM, GPR, GPR), xmnm_kind, m3, r1, r2);
+}
+
+static void
+s390_format_RRF_U0RF(HChar *(*irgen)(UChar r3, UChar r1, UChar r2),
+                     UChar r3, UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r3, r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), mnm, r1, r3, r2);
+}
+
+static void
+s390_format_RRF_F0FF2(HChar *(*irgen)(UChar, UChar, UChar),
+                      UChar r3, UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r3, r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), mnm, r1, r3, r2);
+}
+
+static void
+s390_format_RRF_R0RR2(HChar *(*irgen)(UChar r3, UChar r1, UChar r2),
+                      UChar r3, UChar r1, UChar r2)
+{
+   HChar *mnm = irgen(r3, r1, r2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, GPR), mnm, r1, r2, r3);
+}
+
+static void
+s390_format_RRS(HChar *(*irgen)(UChar r1, UChar r2, UChar m3, IRTemp op4addr),
+                UChar r1, UChar r2, UChar b4, UShort d4, UChar m3)
+{
+   HChar *mnm;
+   IRTemp op4addr = newTemp(Ity_I64);
+
+   assign(op4addr, binop(Iop_Add64, mkU64(d4), b4 != 0 ? get_gpr_dw0(b4) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r2, m3, op4addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC5(XMNM, GPR, GPR, CABM, UDXB), S390_XMNM_CAB, mnm, m3, r1,
+                  r2, m3, d4, 0, b4);
+}
+
+static void
+s390_format_RS_R0RD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                    UChar r1, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, UDXB), mnm, r1, d2, 0, b2);
+}
+
+static void
+s390_format_RS_RRRD(HChar *(*irgen)(UChar r1, UChar r3, IRTemp op2addr),
+                    UChar r1, UChar r3, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, UDXB), mnm, r1, r3, d2, 0, b2);
+}
+
+static void
+s390_format_RS_RURD(HChar *(*irgen)(UChar r1, UChar r3, IRTemp op2addr),
+                    UChar r1, UChar r3, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, UINT, UDXB), mnm, r1, r3, d2, 0, b2);
+}
+
+static void
+s390_format_RS_AARD(HChar *(*irgen)(UChar, UChar, IRTemp),
+                    UChar r1, UChar r3, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, AR, AR, UDXB), mnm, r1, r3, d2, 0, b2);
+}
+
+static void
+s390_format_RSI_RRP(HChar *(*irgen)(UChar r1, UChar r3, UShort i2),
+                    UChar r1, UChar r3, UShort i2)
+{
+   HChar *mnm = irgen(r1, r3, i2);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, PCREL), mnm, r1, r3, (Int)(Short)i2);
+}
+
+static void
+s390_format_RSY_RRRD(HChar *(*irgen)(UChar r1, UChar r3, IRTemp op2addr),
+                     UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, mkexpr(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), mnm, r1, r3, dh2, dl2, 0, b2);
+}
+
+static void
+s390_format_RSY_AARD(HChar *(*irgen)(UChar, UChar, IRTemp),
+                     UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, mkexpr(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, AR, AR, SDXB), mnm, r1, r3, dh2, dl2, 0, b2);
+}
+
+static void
+s390_format_RSY_RURD(HChar *(*irgen)(UChar r1, UChar r3, IRTemp op2addr),
+                     UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, mkexpr(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, r3, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, GPR, UINT, SDXB), mnm, r1, r3, dh2, dl2, 0, b2);
+}
+
+static void
+s390_format_RSY_RDRM(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                     UChar r1, UChar m3, UChar b2, UShort dl2, UChar dh2,
+                     Int xmnm_kind)
+{
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   if_condition_goto(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)),
+                     guest_IA_next_instr);
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, mkexpr(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(XMNM, GPR, SDXB), xmnm_kind, m3, r1, dh2, dl2, 0, b2);
+}
+
+static void
+s390_format_RX(HChar *(*irgen)(UChar r1, UChar x2, UChar b2, UShort d2,
+               IRTemp op2addr),
+               UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkU64(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   irgen(r1, x2, b2, d2, op2addr);
+}
+
+static void
+s390_format_RX_RRRD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                    UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkU64(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, UDXB), mnm, r1, d2, x2, b2);
+}
+
+static void
+s390_format_RX_FRRD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                    UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkU64(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, UDXB), mnm, r1, d2, x2, b2);
+}
+
+static void
+s390_format_RXE_FRRD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                     UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkU64(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, UDXB), mnm, r1, d2, x2, b2);
+}
+
+static void
+s390_format_RXF_FRRDF(HChar *(*irgen)(UChar, IRTemp, UChar),
+                      UChar r3, UChar x2, UChar b2, UShort d2, UChar r1)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkU64(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r3, op2addr, r1);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC4(MNM, FPR, FPR, UDXB), mnm, r1, r3, d2, x2, b2);
+}
+
+static void
+s390_format_RXY_RRRD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                     UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkexpr(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, SDXB), mnm, r1, dh2, dl2, x2, b2);
+}
+
+static void
+s390_format_RXY_FRRD(HChar *(*irgen)(UChar r1, IRTemp op2addr),
+                     UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkexpr(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen(r1, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, FPR, SDXB), mnm, r1, dh2, dl2, x2, b2);
+}
+
+static void
+s390_format_RXY_URRD(HChar *(*irgen)(void),
+                     UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+   IRTemp d2 = newTemp(Ity_I64);
+
+   assign(d2, mkU64(((ULong)(Long)(Char)dh2 << 12) | ((ULong)dl2)));
+   assign(op2addr, binop(Iop_Add64, binop(Iop_Add64, mkexpr(d2),
+          b2 != 0 ? get_gpr_dw0(b2) : mkU64(0)), x2 != 0 ? get_gpr_dw0(x2) :
+          mkU64(0)));
+
+   mnm = irgen();
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UINT, SDXB), mnm, r1, dh2, dl2, x2, b2);
+}
+
+static void
+s390_format_S_RD(HChar *(*irgen)(IRTemp op2addr),
+                 UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(MNM, UDXB), mnm, d2, 0, b2);
+}
+
+static void
+s390_format_SI_URD(HChar *(*irgen)(UChar i2, IRTemp op1addr),
+                   UChar i2, UChar b1, UShort d1)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+
+   assign(op1addr, binop(Iop_Add64, mkU64(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+
+   mnm = irgen(i2, op1addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UDXB, UINT), mnm, d1, 0, b1, i2);
+}
+
+static void
+s390_format_SIY_URD(HChar *(*irgen)(UChar i2, IRTemp op1addr),
+                    UChar i2, UChar b1, UShort dl1, UChar dh1)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+   IRTemp d1 = newTemp(Ity_I64);
+
+   assign(d1, mkU64(((ULong)(Long)(Char)dh1 << 12) | ((ULong)dl1)));
+   assign(op1addr, binop(Iop_Add64, mkexpr(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+
+   mnm = irgen(i2, op1addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, SDXB, UINT), mnm, dh1, dl1, 0, b1, i2);
+}
+
+static void
+s390_format_SIY_IRD(HChar *(*irgen)(UChar i2, IRTemp op1addr),
+                    UChar i2, UChar b1, UShort dl1, UChar dh1)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+   IRTemp d1 = newTemp(Ity_I64);
+
+   assign(d1, mkU64(((ULong)(Long)(Char)dh1 << 12) | ((ULong)dl1)));
+   assign(op1addr, binop(Iop_Add64, mkexpr(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+
+   mnm = irgen(i2, op1addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, SDXB, INT), mnm, dh1, dl1, 0, b1, (Int)(Char)i2);
+}
+
+static void
+s390_format_SS_L0RDRD(HChar *(*irgen)(UChar, IRTemp, IRTemp),
+                      UChar l, UChar b1, UShort d1, UChar b2, UShort d2)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+   IRTemp op2addr = newTemp(Ity_I64);
+
+   assign(op1addr, binop(Iop_Add64, mkU64(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+   assign(op2addr, binop(Iop_Add64, mkU64(d2), b2 != 0 ? get_gpr_dw0(b2) :
+          mkU64(0)));
+
+   mnm = irgen(l, op1addr, op2addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UDLB, UDXB), mnm, d1, l, b1, d2, 0, b2);
+}
+
+static void
+s390_format_SIL_RDI(HChar *(*irgen)(UShort i2, IRTemp op1addr),
+                    UChar b1, UShort d1, UShort i2)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+
+   assign(op1addr, binop(Iop_Add64, mkU64(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+
+   mnm = irgen(i2, op1addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UDXB, INT), mnm, d1, 0, b1, (Int)(Short)i2);
+}
+
+static void
+s390_format_SIL_RDU(HChar *(*irgen)(UShort i2, IRTemp op1addr),
+                    UChar b1, UShort d1, UShort i2)
+{
+   HChar *mnm;
+   IRTemp op1addr = newTemp(Ity_I64);
+
+   assign(op1addr, binop(Iop_Add64, mkU64(d1), b1 != 0 ? get_gpr_dw0(b1) :
+          mkU64(0)));
+
+   mnm = irgen(i2, op1addr);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UDXB, UINT), mnm, d1, 0, b1, i2);
+}
+
+
+
+/*------------------------------------------------------------*/
+/*--- Build IR for opcodes                                 ---*/
+/*------------------------------------------------------------*/
+
+static HChar *
+s390_irgen_AR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ar";
+}
+
+static HChar *
+s390_irgen_AGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "agr";
+}
+
+static HChar *
+s390_irgen_AGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "agfr";
+}
+
+static HChar *
+s390_irgen_ARK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op2, op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ark";
+}
+
+static HChar *
+s390_irgen_AGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op2, op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "agrk";
+}
+
+static HChar *
+s390_irgen_A(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "a";
+}
+
+static HChar *
+s390_irgen_AY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ay";
+}
+
+static HChar *
+s390_irgen_AG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ag";
+}
+
+static HChar *
+s390_irgen_AGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "agf";
+}
+
+static HChar *
+s390_irgen_AFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Int)i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32((UInt)op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "afi";
+}
+
+static HChar *
+s390_irgen_AGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Long)(Int)i2;
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkU64((ULong)op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "agfi";
+}
+
+static HChar *
+s390_irgen_AHIK(UChar r1, UChar r3, UShort i2)
+{
+   Int op2;
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   op2 = (Int)(Short)i2;
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkU32((UInt)op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, mktemp(Ity_I32, mkU32((UInt)
+                       op2)), op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ahik";
+}
+
+static HChar *
+s390_irgen_AGHIK(UChar r1, UChar r3, UShort i2)
+{
+   Long op2;
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   op2 = (Long)(Short)i2;
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkU64((ULong)op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, mktemp(Ity_I64, mkU64((ULong)
+                       op2)), op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "aghik";
+}
+
+static HChar *
+s390_irgen_ASI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, load(Ity_I32, mkexpr(op1addr)));
+   op2 = (Int)(Char)i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32((UInt)op2)));
+   store(mkexpr(op1addr), mkexpr(result));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+
+   return "asi";
+}
+
+static HChar *
+s390_irgen_AGSI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, load(Ity_I64, mkexpr(op1addr)));
+   op2 = (Long)(Char)i2;
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkU64((ULong)op2)));
+   store(mkexpr(op1addr), mkexpr(result));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+
+   return "agsi";
+}
+
+static HChar *
+s390_irgen_AH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ah";
+}
+
+static HChar *
+s390_irgen_AHY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ahy";
+}
+
+static HChar *
+s390_irgen_AHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Int)(Short)i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32((UInt)op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ahi";
+}
+
+static HChar *
+s390_irgen_AGHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Long)(Short)i2;
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkU64((ULong)op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "aghi";
+}
+
+static HChar *
+s390_irgen_AHHHR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r2));
+   assign(op3, get_gpr_w0(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "ahhhr";
+}
+
+static HChar *
+s390_irgen_AHHLR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "ahhlr";
+}
+
+static HChar *
+s390_irgen_AIH(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = (Int)i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32((UInt)op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "aih";
+}
+
+static HChar *
+s390_irgen_ALR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alr";
+}
+
+static HChar *
+s390_irgen_ALGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "algr";
+}
+
+static HChar *
+s390_irgen_ALGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, get_gpr_w1(r2)));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "algfr";
+}
+
+static HChar *
+s390_irgen_ALRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op2, op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alrk";
+}
+
+static HChar *
+s390_irgen_ALGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op2, op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "algrk";
+}
+
+static HChar *
+s390_irgen_AL(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "al";
+}
+
+static HChar *
+s390_irgen_ALY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "aly";
+}
+
+static HChar *
+s390_irgen_ALG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "alg";
+}
+
+static HChar *
+s390_irgen_ALGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkexpr(op2addr))));
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "algf";
+}
+
+static HChar *
+s390_irgen_ALFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alfi";
+}
+
+static HChar *
+s390_irgen_ALGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (ULong)i2;
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkU64(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, mktemp(Ity_I64,
+                       mkU64(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "algfi";
+}
+
+static HChar *
+s390_irgen_ALHHHR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r2));
+   assign(op3, get_gpr_w0(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "alhhhr";
+}
+
+static HChar *
+s390_irgen_ALHHLR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "alhhlr";
+}
+
+static HChar *
+s390_irgen_ALCR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp carry_in = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(carry_in, binop(Iop_Shr32, s390_call_calculate_cc(), mkU8(1)));
+   assign(result, binop(Iop_Add32, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)),
+          mkexpr(carry_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_ADDC_32, op1, op2, carry_in);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alcr";
+}
+
+static HChar *
+s390_irgen_ALCGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp carry_in = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(carry_in, unop(Iop_32Uto64, binop(Iop_Shr32, s390_call_calculate_cc(),
+          mkU8(1))));
+   assign(result, binop(Iop_Add64, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)),
+          mkexpr(carry_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_ADDC_64, op1, op2, carry_in);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "alcgr";
+}
+
+static HChar *
+s390_irgen_ALC(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp carry_in = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(carry_in, binop(Iop_Shr32, s390_call_calculate_cc(), mkU8(1)));
+   assign(result, binop(Iop_Add32, binop(Iop_Add32, mkexpr(op1), mkexpr(op2)),
+          mkexpr(carry_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_ADDC_32, op1, op2, carry_in);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alc";
+}
+
+static HChar *
+s390_irgen_ALCG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp carry_in = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(carry_in, unop(Iop_32Uto64, binop(Iop_Shr32, s390_call_calculate_cc(),
+          mkU8(1))));
+   assign(result, binop(Iop_Add64, binop(Iop_Add64, mkexpr(op1), mkexpr(op2)),
+          mkexpr(carry_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_ADDC_64, op1, op2, carry_in);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "alcg";
+}
+
+static HChar *
+s390_irgen_ALSI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, load(Ity_I32, mkexpr(op1addr)));
+   op2 = (UInt)(Int)(Char)i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "alsi";
+}
+
+static HChar *
+s390_irgen_ALGSI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, load(Ity_I64, mkexpr(op1addr)));
+   op2 = (ULong)(Long)(Char)i2;
+   assign(result, binop(Iop_Add64, mkexpr(op1), mkU64(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op1, mktemp(Ity_I64,
+                       mkU64(op2)));
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "algsi";
+}
+
+static HChar *
+s390_irgen_ALHSIK(UChar r1, UChar r3, UShort i2)
+{
+   UInt op2;
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   op2 = (UInt)(Int)(Short)i2;
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkU32(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, mktemp(Ity_I32, mkU32(op2)),
+                       op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "alhsik";
+}
+
+static HChar *
+s390_irgen_ALGHSIK(UChar r1, UChar r3, UShort i2)
+{
+   ULong op2;
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   op2 = (ULong)(Long)(Short)i2;
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkU64(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, mktemp(Ity_I64, mkU64(op2)),
+                       op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "alghsik";
+}
+
+static HChar *
+s390_irgen_ALSIH(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "alsih";
+}
+
+static HChar *
+s390_irgen_ALSIHN(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Add32, mkexpr(op1), mkU32(op2)));
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "alsihn";
+}
+
+static HChar *
+s390_irgen_NR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_And32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "nr";
+}
+
+static HChar *
+s390_irgen_NGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_And64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ngr";
+}
+
+static HChar *
+s390_irgen_NRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_And32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "nrk";
+}
+
+static HChar *
+s390_irgen_NGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_And64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ngrk";
+}
+
+static HChar *
+s390_irgen_N(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_And32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "n";
+}
+
+static HChar *
+s390_irgen_NY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_And32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ny";
+}
+
+static HChar *
+s390_irgen_NG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_And64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ng";
+}
+
+static HChar *
+s390_irgen_NI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_And8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "ni";
+}
+
+static HChar *
+s390_irgen_NIY(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_And8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "niy";
+}
+
+static HChar *
+s390_irgen_NIHF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "nihf";
+}
+
+static HChar *
+s390_irgen_NIHH(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw0(r1, mkexpr(result));
+
+   return "nihh";
+}
+
+static HChar *
+s390_irgen_NIHL(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw1(r1, mkexpr(result));
+
+   return "nihl";
+}
+
+static HChar *
+s390_irgen_NILF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "nilf";
+}
+
+static HChar *
+s390_irgen_NILH(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw2(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw2(r1, mkexpr(result));
+
+   return "nilh";
+}
+
+static HChar *
+s390_irgen_NILL(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw3(r1));
+   op2 = i2;
+   assign(result, binop(Iop_And16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw3(r1, mkexpr(result));
+
+   return "nill";
+}
+
+static HChar *
+s390_irgen_BASR(UChar r1, UChar r2)
+{
+   IRTemp target = newTemp(Ity_I64);
+
+   if (r2 == 0) {
+      put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 2ULL));
+   } else {
+      if (r1 != r2) {
+         put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 2ULL));
+         call_function(get_gpr_dw0(r2));
+      } else {
+         assign(target, get_gpr_dw0(r2));
+         put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 2ULL));
+         call_function(mkexpr(target));
+      }
+   }
+
+   return "basr";
+}
+
+static HChar *
+s390_irgen_BAS(UChar r1, IRTemp op2addr)
+{
+   IRTemp target = newTemp(Ity_I64);
+
+   put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 4ULL));
+   assign(target, mkexpr(op2addr));
+   call_function(mkexpr(target));
+
+   return "bas";
+}
+
+static HChar *
+s390_irgen_BCR(UChar r1, UChar r2)
+{
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (r2 == 0 && (r1 >= 14)) {    /* serialization */
+      stmt(IRStmt_MBE(Imbe_Fence));
+   }
+
+   if ((r2 == 0) || (r1 == 0)) {
+   } else {
+      if (r1 == 15) {
+         return_from_function(get_gpr_dw0(r2));
+      } else {
+         assign(cond, s390_call_calculate_cond(r1));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), get_gpr_dw0(r2));
+      }
+   }
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(XMNM, GPR), S390_XMNM_BCR, r1, r2);
+
+   return "bcr";
+}
+
+static HChar *
+s390_irgen_BC(UChar r1, UChar x2, UChar b2, UShort d2, IRTemp op2addr)
+{
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (r1 == 0) {
+   } else {
+      if (r1 == 15) {
+         always_goto(mkexpr(op2addr));
+      } else {
+         assign(cond, s390_call_calculate_cond(r1));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op2addr));
+      }
+   }
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(XMNM, UDXB), S390_XMNM_BC, r1, d2, x2, b2);
+
+   return "bc";
+}
+
+static HChar *
+s390_irgen_BCTR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, binop(Iop_Sub32, get_gpr_w1(r1), mkU32(1)));
+   if (r2 != 0) {
+      if_not_condition_goto_computed(binop(Iop_CmpEQ32, get_gpr_w1(r1), mkU32(0)
+                                     ), get_gpr_dw0(r2));
+   }
+
+   return "bctr";
+}
+
+static HChar *
+s390_irgen_BCTGR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, binop(Iop_Sub64, get_gpr_dw0(r1), mkU64(1)));
+   if (r2 != 0) {
+      if_not_condition_goto_computed(binop(Iop_CmpEQ64, get_gpr_dw0(r1),
+                                     mkU64(0)), get_gpr_dw0(r2));
+   }
+
+   return "bctgr";
+}
+
+static HChar *
+s390_irgen_BCT(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, binop(Iop_Sub32, get_gpr_w1(r1), mkU32(1)));
+   if_not_condition_goto_computed(binop(Iop_CmpEQ32, get_gpr_w1(r1), mkU32(0)),
+                                  mkexpr(op2addr));
+
+   return "bct";
+}
+
+static HChar *
+s390_irgen_BCTG(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, binop(Iop_Sub64, get_gpr_dw0(r1), mkU64(1)));
+   if_not_condition_goto_computed(binop(Iop_CmpEQ64, get_gpr_dw0(r1), mkU64(0)),
+                                  mkexpr(op2addr));
+
+   return "bctg";
+}
+
+static HChar *
+s390_irgen_BXH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_I32);
+
+   assign(value, get_gpr_w1(r3 | 1));
+   put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3)));
+   if_not_condition_goto_computed(binop(Iop_CmpLE32S, get_gpr_w1(r1),
+                                  mkexpr(value)), mkexpr(op2addr));
+
+   return "bxh";
+}
+
+static HChar *
+s390_irgen_BXHG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_I64);
+
+   assign(value, get_gpr_dw0(r3 | 1));
+   put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3)));
+   if_not_condition_goto_computed(binop(Iop_CmpLE64S, get_gpr_dw0(r1),
+                                  mkexpr(value)), mkexpr(op2addr));
+
+   return "bxhg";
+}
+
+static HChar *
+s390_irgen_BXLE(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_I32);
+
+   assign(value, get_gpr_w1(r3 | 1));
+   put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3)));
+   if_not_condition_goto_computed(binop(Iop_CmpLT32S, mkexpr(value),
+                                  get_gpr_w1(r1)), mkexpr(op2addr));
+
+   return "bxle";
+}
+
+static HChar *
+s390_irgen_BXLEG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_I64);
+
+   assign(value, get_gpr_dw0(r3 | 1));
+   put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3)));
+   if_not_condition_goto_computed(binop(Iop_CmpLT64S, mkexpr(value),
+                                  get_gpr_dw0(r1)), mkexpr(op2addr));
+
+   return "bxleg";
+}
+
+static HChar *
+s390_irgen_BRAS(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 4ULL));
+   call_function(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)));
+
+   return "bras";
+}
+
+static HChar *
+s390_irgen_BRASL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 6ULL));
+   call_function(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)));
+
+   return "brasl";
+}
+
+static HChar *
+s390_irgen_BRC(UChar r1, UShort i2)
+{
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (r1 == 0) {
+   } else {
+      if (r1 == 15) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1))
+                     );
+      } else {
+         assign(cond, s390_call_calculate_cond(r1));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+      }
+   }
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(XMNM, PCREL), S390_XMNM_BRC, r1, (Int)(Short)i2);
+
+   return "brc";
+}
+
+static HChar *
+s390_irgen_BRCL(UChar r1, UInt i2)
+{
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (r1 == 0) {
+   } else {
+      if (r1 == 15) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)));
+      } else {
+         assign(cond, s390_call_calculate_cond(r1));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1));
+      }
+   }
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC2(XMNM, PCREL), S390_XMNM_BRCL, r1, i2);
+
+   return "brcl";
+}
+
+static HChar *
+s390_irgen_BRCT(UChar r1, UShort i2)
+{
+   put_gpr_w1(r1, binop(Iop_Sub32, get_gpr_w1(r1), mkU32(1)));
+   if_condition_goto(binop(Iop_CmpNE32, get_gpr_w1(r1), mkU32(0)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brct";
+}
+
+static HChar *
+s390_irgen_BRCTG(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, binop(Iop_Sub64, get_gpr_dw0(r1), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE64, get_gpr_dw0(r1), mkU64(0)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brctg";
+}
+
+static HChar *
+s390_irgen_BRXH(UChar r1, UChar r3, UShort i2)
+{
+   IRTemp value = newTemp(Ity_I32);
+
+   assign(value, get_gpr_w1(r3 | 1));
+   put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3)));
+   if_condition_goto(binop(Iop_CmpLT32S, mkexpr(value), get_gpr_w1(r1)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brxh";
+}
+
+static HChar *
+s390_irgen_BRXHG(UChar r1, UChar r3, UShort i2)
+{
+   IRTemp value = newTemp(Ity_I64);
+
+   assign(value, get_gpr_dw0(r3 | 1));
+   put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3)));
+   if_condition_goto(binop(Iop_CmpLT64S, mkexpr(value), get_gpr_dw0(r1)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brxhg";
+}
+
+static HChar *
+s390_irgen_BRXLE(UChar r1, UChar r3, UShort i2)
+{
+   IRTemp value = newTemp(Ity_I32);
+
+   assign(value, get_gpr_w1(r3 | 1));
+   put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3)));
+   if_condition_goto(binop(Iop_CmpLE32S, get_gpr_w1(r1), mkexpr(value)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brxle";
+}
+
+static HChar *
+s390_irgen_BRXLG(UChar r1, UChar r3, UShort i2)
+{
+   IRTemp value = newTemp(Ity_I64);
+
+   assign(value, get_gpr_dw0(r3 | 1));
+   put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3)));
+   if_condition_goto(binop(Iop_CmpLE64S, get_gpr_dw0(r1), mkexpr(value)),
+                     guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1));
+
+   return "brxlg";
+}
+
+static HChar *
+s390_irgen_CR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cr";
+}
+
+static HChar *
+s390_irgen_CGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgr";
+}
+
+static HChar *
+s390_irgen_CGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgfr";
+}
+
+static HChar *
+s390_irgen_C(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "c";
+}
+
+static HChar *
+s390_irgen_CY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cy";
+}
+
+static HChar *
+s390_irgen_CG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cg";
+}
+
+static HChar *
+s390_irgen_CGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgf";
+}
+
+static HChar *
+s390_irgen_CFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Int)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+
+   return "cfi";
+}
+
+static HChar *
+s390_irgen_CGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Long)(Int)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+
+   return "cgfi";
+}
+
+static HChar *
+s390_irgen_CRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+          i2 << 1))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "crl";
+}
+
+static HChar *
+s390_irgen_CGRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+          i2 << 1))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgrl";
+}
+
+static HChar *
+s390_irgen_CGFRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgfrl";
+}
+
+static HChar *
+s390_irgen_CRB(UChar r1, UChar r2, UChar m3, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         assign(op2, get_gpr_w1(r2));
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "crb";
+}
+
+static HChar *
+s390_irgen_CGRB(UChar r1, UChar r2, UChar m3, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         assign(op2, get_gpr_dw0(r2));
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "cgrb";
+}
+
+static HChar *
+s390_irgen_CRJ(UChar r1, UChar r2, UShort i4, UChar m3)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         assign(op2, get_gpr_w1(r2));
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "crj";
+}
+
+static HChar *
+s390_irgen_CGRJ(UChar r1, UChar r2, UShort i4, UChar m3)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         assign(op2, get_gpr_dw0(r2));
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "cgrj";
+}
+
+static HChar *
+s390_irgen_CIB(UChar r1, UChar m3, UChar i2, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         op2 = (Int)(Char)i2;
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                mktemp(Ity_I32, mkU32((UInt)op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "cib";
+}
+
+static HChar *
+s390_irgen_CGIB(UChar r1, UChar m3, UChar i2, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         op2 = (Long)(Char)i2;
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                mktemp(Ity_I64, mkU64((ULong)op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "cgib";
+}
+
+static HChar *
+s390_irgen_CIJ(UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         op2 = (Int)(Char)i2;
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                mktemp(Ity_I32, mkU32((UInt)op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "cij";
+}
+
+static HChar *
+s390_irgen_CGIJ(UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         op2 = (Long)(Char)i2;
+         assign(icc, s390_call_calculate_iccSS(S390_CC_OP_SIGNED_COMPARE, op1,
+                mktemp(Ity_I64, mkU64((ULong)op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "cgij";
+}
+
+static HChar *
+s390_irgen_CH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "ch";
+}
+
+static HChar *
+s390_irgen_CHY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "chy";
+}
+
+static HChar *
+s390_irgen_CGH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_16Sto64, load(Ity_I16, mkexpr(op2addr))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cgh";
+}
+
+static HChar *
+s390_irgen_CHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Int)(Short)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+
+   return "chi";
+}
+
+static HChar *
+s390_irgen_CGHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Long)(Short)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+
+   return "cghi";
+}
+
+static HChar *
+s390_irgen_CHHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   Short op2;
+
+   assign(op1, load(Ity_I16, mkexpr(op1addr)));
+   op2 = (Short)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I16,
+                       mkU16((UShort)op2)));
+
+   return "chhsi";
+}
+
+static HChar *
+s390_irgen_CHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+
+   assign(op1, load(Ity_I32, mkexpr(op1addr)));
+   op2 = (Int)(Short)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+
+   return "chsi";
+}
+
+static HChar *
+s390_irgen_CGHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Long op2;
+
+   assign(op1, load(Ity_I64, mkexpr(op1addr)));
+   op2 = (Long)(Short)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I64,
+                       mkU64((ULong)op2)));
+
+   return "cghsi";
+}
+
+static HChar *
+s390_irgen_CHRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "chrl";
+}
+
+static HChar *
+s390_irgen_CGHRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_16Sto64, load(Ity_I16, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "cghrl";
+}
+
+static HChar *
+s390_irgen_CHHR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, get_gpr_w0(r2));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "chhr";
+}
+
+static HChar *
+s390_irgen_CHLR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, get_gpr_w1(r2));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "chlr";
+}
+
+static HChar *
+s390_irgen_CHF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2);
+
+   return "chf";
+}
+
+static HChar *
+s390_irgen_CIH(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = (Int)i2;
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32((UInt)op2)));
+
+   return "cih";
+}
+
+static HChar *
+s390_irgen_CLR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clr";
+}
+
+static HChar *
+s390_irgen_CLGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clgr";
+}
+
+static HChar *
+s390_irgen_CLGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, get_gpr_w1(r2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clgfr";
+}
+
+static HChar *
+s390_irgen_CL(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "cl";
+}
+
+static HChar *
+s390_irgen_CLY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "cly";
+}
+
+static HChar *
+s390_irgen_CLG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clg";
+}
+
+static HChar *
+s390_irgen_CLGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkexpr(op2addr))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clgf";
+}
+
+static HChar *
+s390_irgen_CLFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+
+   return "clfi";
+}
+
+static HChar *
+s390_irgen_CLGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (ULong)i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I64,
+                       mkU64(op2)));
+
+   return "clgfi";
+}
+
+static HChar *
+s390_irgen_CLI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I8,
+                       mkU8(op2)));
+
+   return "cli";
+}
+
+static HChar *
+s390_irgen_CLIY(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I8,
+                       mkU8(op2)));
+
+   return "cliy";
+}
+
+static HChar *
+s390_irgen_CLFHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+
+   assign(op1, load(Ity_I32, mkexpr(op1addr)));
+   op2 = (UInt)i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+
+   return "clfhsi";
+}
+
+static HChar *
+s390_irgen_CLGHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+
+   assign(op1, load(Ity_I64, mkexpr(op1addr)));
+   op2 = (ULong)i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I64,
+                       mkU64(op2)));
+
+   return "clghsi";
+}
+
+static HChar *
+s390_irgen_CLHHSI(UShort i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+
+   assign(op1, load(Ity_I16, mkexpr(op1addr)));
+   op2 = i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I16,
+                       mkU16(op2)));
+
+   return "clhhsi";
+}
+
+static HChar *
+s390_irgen_CLRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+          i2 << 1))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clrl";
+}
+
+static HChar *
+s390_irgen_CLGRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+          i2 << 1))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clgrl";
+}
+
+static HChar *
+s390_irgen_CLGFRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clgfrl";
+}
+
+static HChar *
+s390_irgen_CLHRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Uto32, load(Ity_I16, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clhrl";
+}
+
+static HChar *
+s390_irgen_CLGHRL(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_16Uto64, load(Ity_I16, mkU64(guest_IA_curr_instr +
+          ((ULong)(Long)(Int)i2 << 1)))));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clghrl";
+}
+
+static HChar *
+s390_irgen_CLRB(UChar r1, UChar r2, UChar m3, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         assign(op2, get_gpr_w1(r2));
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "clrb";
+}
+
+static HChar *
+s390_irgen_CLGRB(UChar r1, UChar r2, UChar m3, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         assign(op2, get_gpr_dw0(r2));
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "clgrb";
+}
+
+static HChar *
+s390_irgen_CLRJ(UChar r1, UChar r2, UShort i4, UChar m3)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         assign(op2, get_gpr_w1(r2));
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "clrj";
+}
+
+static HChar *
+s390_irgen_CLGRJ(UChar r1, UChar r2, UShort i4, UChar m3)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         assign(op2, get_gpr_dw0(r2));
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                op2));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "clgrj";
+}
+
+static HChar *
+s390_irgen_CLIB(UChar r1, UChar m3, UChar i2, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         op2 = (UInt)i2;
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                mktemp(Ity_I32, mkU32(op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "clib";
+}
+
+static HChar *
+s390_irgen_CLGIB(UChar r1, UChar m3, UChar i2, IRTemp op4addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkexpr(op4addr));
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         op2 = (ULong)i2;
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                mktemp(Ity_I64, mkU64(op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_not_condition_goto_computed(binop(Iop_CmpEQ32, mkexpr(cond),
+                                        mkU32(0)), mkexpr(op4addr));
+      }
+   }
+
+   return "clgib";
+}
+
+static HChar *
+s390_irgen_CLIJ(UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_w1(r1));
+         op2 = (UInt)i2;
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                mktemp(Ity_I32, mkU32(op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "clij";
+}
+
+static HChar *
+s390_irgen_CLGIJ(UChar r1, UChar m3, UShort i4, UChar i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+   IRTemp icc = newTemp(Ity_I32);
+   IRTemp cond = newTemp(Ity_I32);
+
+   if (m3 == 0) {
+   } else {
+      if (m3 == 14) {
+         always_goto(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1))
+                     );
+      } else {
+         assign(op1, get_gpr_dw0(r1));
+         op2 = (ULong)i2;
+         assign(icc, s390_call_calculate_iccZZ(S390_CC_OP_UNSIGNED_COMPARE, op1,
+                mktemp(Ity_I64, mkU64(op2))));
+         assign(cond, binop(Iop_And32, binop(Iop_Shl32, mkU32(m3),
+                unop(Iop_32to8, mkexpr(icc))), mkU32(8)));
+         if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)),
+                           guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1));
+
+      }
+   }
+
+   return "clgij";
+}
+
+static HChar *
+s390_irgen_CLM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp b0 = newTemp(Ity_I32);
+   IRTemp b1 = newTemp(Ity_I32);
+   IRTemp b2 = newTemp(Ity_I32);
+   IRTemp b3 = newTemp(Ity_I32);
+   IRTemp c0 = newTemp(Ity_I32);
+   IRTemp c1 = newTemp(Ity_I32);
+   IRTemp c2 = newTemp(Ity_I32);
+   IRTemp c3 = newTemp(Ity_I32);
+   UChar n;
+
+   n = 0;
+   if ((r3 & 8) != 0) {
+      assign(b0, unop(Iop_8Uto32, get_gpr_b4(r1)));
+      assign(c0, unop(Iop_8Uto32, load(Ity_I8, mkexpr(op2addr))));
+      n = n + 1;
+   } else {
+      assign(b0, mkU32(0));
+      assign(c0, mkU32(0));
+   }
+   if ((r3 & 4) != 0) {
+      assign(b1, unop(Iop_8Uto32, get_gpr_b5(r1)));
+      assign(c1, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b1, mkU32(0));
+      assign(c1, mkU32(0));
+   }
+   if ((r3 & 2) != 0) {
+      assign(b2, unop(Iop_8Uto32, get_gpr_b6(r1)));
+      assign(c2, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b2, mkU32(0));
+      assign(c2, mkU32(0));
+   }
+   if ((r3 & 1) != 0) {
+      assign(b3, unop(Iop_8Uto32, get_gpr_b7(r1)));
+      assign(c3, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b3, mkU32(0));
+      assign(c3, mkU32(0));
+   }
+   assign(op1, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(b0), mkU8(24)), binop(Iop_Shl32, mkexpr(b1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(b2), mkU8(8))), mkexpr(b3)));
+   assign(op2, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(c0), mkU8(24)), binop(Iop_Shl32, mkexpr(c1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(c2), mkU8(8))), mkexpr(c3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clm";
+}
+
+static HChar *
+s390_irgen_CLMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp b0 = newTemp(Ity_I32);
+   IRTemp b1 = newTemp(Ity_I32);
+   IRTemp b2 = newTemp(Ity_I32);
+   IRTemp b3 = newTemp(Ity_I32);
+   IRTemp c0 = newTemp(Ity_I32);
+   IRTemp c1 = newTemp(Ity_I32);
+   IRTemp c2 = newTemp(Ity_I32);
+   IRTemp c3 = newTemp(Ity_I32);
+   UChar n;
+
+   n = 0;
+   if ((r3 & 8) != 0) {
+      assign(b0, unop(Iop_8Uto32, get_gpr_b4(r1)));
+      assign(c0, unop(Iop_8Uto32, load(Ity_I8, mkexpr(op2addr))));
+      n = n + 1;
+   } else {
+      assign(b0, mkU32(0));
+      assign(c0, mkU32(0));
+   }
+   if ((r3 & 4) != 0) {
+      assign(b1, unop(Iop_8Uto32, get_gpr_b5(r1)));
+      assign(c1, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b1, mkU32(0));
+      assign(c1, mkU32(0));
+   }
+   if ((r3 & 2) != 0) {
+      assign(b2, unop(Iop_8Uto32, get_gpr_b6(r1)));
+      assign(c2, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b2, mkU32(0));
+      assign(c2, mkU32(0));
+   }
+   if ((r3 & 1) != 0) {
+      assign(b3, unop(Iop_8Uto32, get_gpr_b7(r1)));
+      assign(c3, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b3, mkU32(0));
+      assign(c3, mkU32(0));
+   }
+   assign(op1, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(b0), mkU8(24)), binop(Iop_Shl32, mkexpr(b1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(b2), mkU8(8))), mkexpr(b3)));
+   assign(op2, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(c0), mkU8(24)), binop(Iop_Shl32, mkexpr(c1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(c2), mkU8(8))), mkexpr(c3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clmy";
+}
+
+static HChar *
+s390_irgen_CLMH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp b0 = newTemp(Ity_I32);
+   IRTemp b1 = newTemp(Ity_I32);
+   IRTemp b2 = newTemp(Ity_I32);
+   IRTemp b3 = newTemp(Ity_I32);
+   IRTemp c0 = newTemp(Ity_I32);
+   IRTemp c1 = newTemp(Ity_I32);
+   IRTemp c2 = newTemp(Ity_I32);
+   IRTemp c3 = newTemp(Ity_I32);
+   UChar n;
+
+   n = 0;
+   if ((r3 & 8) != 0) {
+      assign(b0, unop(Iop_8Uto32, get_gpr_b0(r1)));
+      assign(c0, unop(Iop_8Uto32, load(Ity_I8, mkexpr(op2addr))));
+      n = n + 1;
+   } else {
+      assign(b0, mkU32(0));
+      assign(c0, mkU32(0));
+   }
+   if ((r3 & 4) != 0) {
+      assign(b1, unop(Iop_8Uto32, get_gpr_b1(r1)));
+      assign(c1, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b1, mkU32(0));
+      assign(c1, mkU32(0));
+   }
+   if ((r3 & 2) != 0) {
+      assign(b2, unop(Iop_8Uto32, get_gpr_b2(r1)));
+      assign(c2, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b2, mkU32(0));
+      assign(c2, mkU32(0));
+   }
+   if ((r3 & 1) != 0) {
+      assign(b3, unop(Iop_8Uto32, get_gpr_b3(r1)));
+      assign(c3, unop(Iop_8Uto32, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr),
+             mkU64(n)))));
+      n = n + 1;
+   } else {
+      assign(b3, mkU32(0));
+      assign(c3, mkU32(0));
+   }
+   assign(op1, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(b0), mkU8(24)), binop(Iop_Shl32, mkexpr(b1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(b2), mkU8(8))), mkexpr(b3)));
+   assign(op2, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Or32, binop(Iop_Shl32,
+          mkexpr(c0), mkU8(24)), binop(Iop_Shl32, mkexpr(c1), mkU8(16))),
+          binop(Iop_Shl32, mkexpr(c2), mkU8(8))), mkexpr(c3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clmh";
+}
+
+static HChar *
+s390_irgen_CLHHR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, get_gpr_w0(r2));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clhhr";
+}
+
+static HChar *
+s390_irgen_CLHLR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, get_gpr_w1(r2));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clhlr";
+}
+
+static HChar *
+s390_irgen_CLHF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2);
+
+   return "clhf";
+}
+
+static HChar *
+s390_irgen_CLIH(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+
+   return "clih";
+}
+
+static HChar *
+s390_irgen_CPYA(UChar r1, UChar r2)
+{
+   put_ar_w0(r1, get_ar_w0(r2));
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, AR, AR), "cpya", r1, r2);
+
+   return "cpya";
+}
+
+static HChar *
+s390_irgen_XR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   if (r1 == r2) {
+      assign(result, mkU32(0));
+   } else {
+      assign(op1, get_gpr_w1(r1));
+      assign(op2, get_gpr_w1(r2));
+      assign(result, binop(Iop_Xor32, mkexpr(op1), mkexpr(op2)));
+   }
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "xr";
+}
+
+static HChar *
+s390_irgen_XGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   if (r1 == r2) {
+      assign(result, mkU64(0));
+   } else {
+      assign(op1, get_gpr_dw0(r1));
+      assign(op2, get_gpr_dw0(r2));
+      assign(result, binop(Iop_Xor64, mkexpr(op1), mkexpr(op2)));
+   }
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "xgr";
+}
+
+static HChar *
+s390_irgen_XRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Xor32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "xrk";
+}
+
+static HChar *
+s390_irgen_XGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Xor64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "xgrk";
+}
+
+static HChar *
+s390_irgen_X(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Xor32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "x";
+}
+
+static HChar *
+s390_irgen_XY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Xor32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "xy";
+}
+
+static HChar *
+s390_irgen_XG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Xor64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "xg";
+}
+
+static HChar *
+s390_irgen_XI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_Xor8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "xi";
+}
+
+static HChar *
+s390_irgen_XIY(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_Xor8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "xiy";
+}
+
+static HChar *
+s390_irgen_XIHF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Xor32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "xihf";
+}
+
+static HChar *
+s390_irgen_XILF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Xor32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "xilf";
+}
+
+static HChar *
+s390_irgen_EAR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, get_ar_w0(r2));
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, GPR, AR), "ear", r1, r2);
+
+   return "ear";
+}
+
+static HChar *
+s390_irgen_IC(UChar r1, IRTemp op2addr)
+{
+   put_gpr_b7(r1, load(Ity_I8, mkexpr(op2addr)));
+
+   return "ic";
+}
+
+static HChar *
+s390_irgen_ICY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_b7(r1, load(Ity_I8, mkexpr(op2addr)));
+
+   return "icy";
+}
+
+static HChar *
+s390_irgen_ICM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar n;
+   IRTemp result = newTemp(Ity_I32);
+   UInt mask;
+
+   n = 0;
+   mask = (UInt)r3;
+   if ((mask & 8) != 0) {
+      put_gpr_b4(r1, load(Ity_I8, mkexpr(op2addr)));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      put_gpr_b5(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      put_gpr_b6(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      put_gpr_b7(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   assign(result, get_gpr_w1(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_INSERT_CHAR_MASK_32, result, mktemp(Ity_I32,
+                       mkU32(mask)));
+
+   return "icm";
+}
+
+static HChar *
+s390_irgen_ICMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar n;
+   IRTemp result = newTemp(Ity_I32);
+   UInt mask;
+
+   n = 0;
+   mask = (UInt)r3;
+   if ((mask & 8) != 0) {
+      put_gpr_b4(r1, load(Ity_I8, mkexpr(op2addr)));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      put_gpr_b5(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      put_gpr_b6(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      put_gpr_b7(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   assign(result, get_gpr_w1(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_INSERT_CHAR_MASK_32, result, mktemp(Ity_I32,
+                       mkU32(mask)));
+
+   return "icmy";
+}
+
+static HChar *
+s390_irgen_ICMH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar n;
+   IRTemp result = newTemp(Ity_I32);
+   UInt mask;
+
+   n = 0;
+   mask = (UInt)r3;
+   if ((mask & 8) != 0) {
+      put_gpr_b0(r1, load(Ity_I8, mkexpr(op2addr)));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      put_gpr_b1(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      put_gpr_b2(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      put_gpr_b3(r1, load(Ity_I8, binop(Iop_Add64, mkexpr(op2addr), mkU64(n))));
+
+      n = n + 1;
+   }
+   assign(result, get_gpr_w0(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_INSERT_CHAR_MASK_32, result, mktemp(Ity_I32,
+                       mkU32(mask)));
+
+   return "icmh";
+}
+
+static HChar *
+s390_irgen_IIHF(UChar r1, UInt i2)
+{
+   put_gpr_w0(r1, mkU32(i2));
+
+   return "iihf";
+}
+
+static HChar *
+s390_irgen_IIHH(UChar r1, UShort i2)
+{
+   put_gpr_hw0(r1, mkU16(i2));
+
+   return "iihh";
+}
+
+static HChar *
+s390_irgen_IIHL(UChar r1, UShort i2)
+{
+   put_gpr_hw1(r1, mkU16(i2));
+
+   return "iihl";
+}
+
+static HChar *
+s390_irgen_IILF(UChar r1, UInt i2)
+{
+   put_gpr_w1(r1, mkU32(i2));
+
+   return "iilf";
+}
+
+static HChar *
+s390_irgen_IILH(UChar r1, UShort i2)
+{
+   put_gpr_hw2(r1, mkU16(i2));
+
+   return "iilh";
+}
+
+static HChar *
+s390_irgen_IILL(UChar r1, UShort i2)
+{
+   put_gpr_hw3(r1, mkU16(i2));
+
+   return "iill";
+}
+
+static HChar *
+s390_irgen_LR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, get_gpr_w1(r2));
+
+   return "lr";
+}
+
+static HChar *
+s390_irgen_LGR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, get_gpr_dw0(r2));
+
+   return "lgr";
+}
+
+static HChar *
+s390_irgen_LGFR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_32Sto64, get_gpr_w1(r2)));
+
+   return "lgfr";
+}
+
+static HChar *
+s390_irgen_L(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, load(Ity_I32, mkexpr(op2addr)));
+
+   return "l";
+}
+
+static HChar *
+s390_irgen_LY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, load(Ity_I32, mkexpr(op2addr)));
+
+   return "ly";
+}
+
+static HChar *
+s390_irgen_LG(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, load(Ity_I64, mkexpr(op2addr)));
+
+   return "lg";
+}
+
+static HChar *
+s390_irgen_LGF(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+
+   return "lgf";
+}
+
+static HChar *
+s390_irgen_LGFI(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, mkU64((ULong)(Long)(Int)i2));
+
+   return "lgfi";
+}
+
+static HChar *
+s390_irgen_LRL(UChar r1, UInt i2)
+{
+   put_gpr_w1(r1, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+              i2 << 1))));
+
+   return "lrl";
+}
+
+static HChar *
+s390_irgen_LGRL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)
+               i2 << 1))));
+
+   return "lgrl";
+}
+
+static HChar *
+s390_irgen_LGFRL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, unop(Iop_32Sto64, load(Ity_I32, mkU64(guest_IA_curr_instr +
+               ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "lgfrl";
+}
+
+static HChar *
+s390_irgen_LA(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, mkexpr(op2addr));
+
+   return "la";
+}
+
+static HChar *
+s390_irgen_LAY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, mkexpr(op2addr));
+
+   return "lay";
+}
+
+static HChar *
+s390_irgen_LAE(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, mkexpr(op2addr));
+
+   return "lae";
+}
+
+static HChar *
+s390_irgen_LAEY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, mkexpr(op2addr));
+
+   return "laey";
+}
+
+static HChar *
+s390_irgen_LARL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)));
+
+   return "larl";
+}
+
+static HChar *
+s390_irgen_LAA(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_32, op2, op3);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_w1(r1, mkexpr(op2));
+
+   return "laa";
+}
+
+static HChar *
+s390_irgen_LAAG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_ADD_64, op2, op3);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_dw0(r1, mkexpr(op2));
+
+   return "laag";
+}
+
+static HChar *
+s390_irgen_LAAL(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Add32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_32, op2, op3);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_w1(r1, mkexpr(op2));
+
+   return "laal";
+}
+
+static HChar *
+s390_irgen_LAALG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Add64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_ADD_64, op2, op3);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_dw0(r1, mkexpr(op2));
+
+   return "laalg";
+}
+
+static HChar *
+s390_irgen_LAN(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_And32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_w1(r1, mkexpr(op2));
+
+   return "lan";
+}
+
+static HChar *
+s390_irgen_LANG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_And64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_dw0(r1, mkexpr(op2));
+
+   return "lang";
+}
+
+static HChar *
+s390_irgen_LAX(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Xor32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_w1(r1, mkexpr(op2));
+
+   return "lax";
+}
+
+static HChar *
+s390_irgen_LAXG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Xor64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_dw0(r1, mkexpr(op2));
+
+   return "laxg";
+}
+
+static HChar *
+s390_irgen_LAO(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Or32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_w1(r1, mkexpr(op2));
+
+   return "lao";
+}
+
+static HChar *
+s390_irgen_LAOG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Or64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op2addr), mkexpr(result));
+   put_gpr_dw0(r1, mkexpr(op2));
+
+   return "laog";
+}
+
+static HChar *
+s390_irgen_LTR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   put_gpr_w1(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "ltr";
+}
+
+static HChar *
+s390_irgen_LTGR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   put_gpr_dw0(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "ltgr";
+}
+
+static HChar *
+s390_irgen_LTGFR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   put_gpr_dw0(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "ltgfr";
+}
+
+static HChar *
+s390_irgen_LT(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   put_gpr_w1(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "lt";
+}
+
+static HChar *
+s390_irgen_LTG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   put_gpr_dw0(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "ltg";
+}
+
+static HChar *
+s390_irgen_LTGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+   put_gpr_dw0(r1, mkexpr(op2));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "ltgf";
+}
+
+static HChar *
+s390_irgen_LBR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, unop(Iop_8Sto32, get_gpr_b7(r2)));
+
+   return "lbr";
+}
+
+static HChar *
+s390_irgen_LGBR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_8Sto64, get_gpr_b7(r2)));
+
+   return "lgbr";
+}
+
+static HChar *
+s390_irgen_LB(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, unop(Iop_8Sto32, load(Ity_I8, mkexpr(op2addr))));
+
+   return "lb";
+}
+
+static HChar *
+s390_irgen_LGB(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_8Sto64, load(Ity_I8, mkexpr(op2addr))));
+
+   return "lgb";
+}
+
+static HChar *
+s390_irgen_LBH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w0(r1, unop(Iop_8Sto32, load(Ity_I8, mkexpr(op2addr))));
+
+   return "lbh";
+}
+
+static HChar *
+s390_irgen_LCR(UChar r1, UChar r2)
+{
+   Int op1;
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   op1 = 0;
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Sub32, mkU32((UInt)op1), mkexpr(op2)));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, mktemp(Ity_I32, mkU32((UInt)
+                       op1)), op2);
+
+   return "lcr";
+}
+
+static HChar *
+s390_irgen_LCGR(UChar r1, UChar r2)
+{
+   Long op1;
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   op1 = 0ULL;
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Sub64, mkU64((ULong)op1), mkexpr(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, mktemp(Ity_I64, mkU64((ULong)
+                       op1)), op2);
+
+   return "lcgr";
+}
+
+static HChar *
+s390_irgen_LCGFR(UChar r1, UChar r2)
+{
+   Long op1;
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   op1 = 0ULL;
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   assign(result, binop(Iop_Sub64, mkU64((ULong)op1), mkexpr(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, mktemp(Ity_I64, mkU64((ULong)
+                       op1)), op2);
+
+   return "lcgfr";
+}
+
+static HChar *
+s390_irgen_LHR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, unop(Iop_16Sto32, get_gpr_hw3(r2)));
+
+   return "lhr";
+}
+
+static HChar *
+s390_irgen_LGHR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_16Sto64, get_gpr_hw3(r2)));
+
+   return "lghr";
+}
+
+static HChar *
+s390_irgen_LH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+
+   return "lh";
+}
+
+static HChar *
+s390_irgen_LHY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+
+   return "lhy";
+}
+
+static HChar *
+s390_irgen_LGH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_16Sto64, load(Ity_I16, mkexpr(op2addr))));
+
+   return "lgh";
+}
+
+static HChar *
+s390_irgen_LHI(UChar r1, UShort i2)
+{
+   put_gpr_w1(r1, mkU32((UInt)(Int)(Short)i2));
+
+   return "lhi";
+}
+
+static HChar *
+s390_irgen_LGHI(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64((ULong)(Long)(Short)i2));
+
+   return "lghi";
+}
+
+static HChar *
+s390_irgen_LHRL(UChar r1, UInt i2)
+{
+   put_gpr_w1(r1, unop(Iop_16Sto32, load(Ity_I16, mkU64(guest_IA_curr_instr +
+              ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "lhrl";
+}
+
+static HChar *
+s390_irgen_LGHRL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, unop(Iop_16Sto64, load(Ity_I16, mkU64(guest_IA_curr_instr +
+               ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "lghrl";
+}
+
+static HChar *
+s390_irgen_LHH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w0(r1, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+
+   return "lhh";
+}
+
+static HChar *
+s390_irgen_LFH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w0(r1, load(Ity_I32, mkexpr(op2addr)));
+
+   return "lfh";
+}
+
+static HChar *
+s390_irgen_LLGFR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_32Uto64, get_gpr_w1(r2)));
+
+   return "llgfr";
+}
+
+static HChar *
+s390_irgen_LLGF(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_32Uto64, load(Ity_I32, mkexpr(op2addr))));
+
+   return "llgf";
+}
+
+static HChar *
+s390_irgen_LLGFRL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, unop(Iop_32Uto64, load(Ity_I32, mkU64(guest_IA_curr_instr +
+               ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "llgfrl";
+}
+
+static HChar *
+s390_irgen_LLCR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, unop(Iop_8Uto32, get_gpr_b7(r2)));
+
+   return "llcr";
+}
+
+static HChar *
+s390_irgen_LLGCR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_8Uto64, get_gpr_b7(r2)));
+
+   return "llgcr";
+}
+
+static HChar *
+s390_irgen_LLC(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, unop(Iop_8Uto32, load(Ity_I8, mkexpr(op2addr))));
+
+   return "llc";
+}
+
+static HChar *
+s390_irgen_LLGC(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_8Uto64, load(Ity_I8, mkexpr(op2addr))));
+
+   return "llgc";
+}
+
+static HChar *
+s390_irgen_LLCH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w0(r1, unop(Iop_8Uto32, load(Ity_I8, mkexpr(op2addr))));
+
+   return "llch";
+}
+
+static HChar *
+s390_irgen_LLHR(UChar r1, UChar r2)
+{
+   put_gpr_w1(r1, unop(Iop_16Uto32, get_gpr_hw3(r2)));
+
+   return "llhr";
+}
+
+static HChar *
+s390_irgen_LLGHR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_16Uto64, get_gpr_hw3(r2)));
+
+   return "llghr";
+}
+
+static HChar *
+s390_irgen_LLH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, unop(Iop_16Uto32, load(Ity_I16, mkexpr(op2addr))));
+
+   return "llh";
+}
+
+static HChar *
+s390_irgen_LLGH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_16Uto64, load(Ity_I16, mkexpr(op2addr))));
+
+   return "llgh";
+}
+
+static HChar *
+s390_irgen_LLHRL(UChar r1, UInt i2)
+{
+   put_gpr_w1(r1, unop(Iop_16Uto32, load(Ity_I16, mkU64(guest_IA_curr_instr +
+              ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "llhrl";
+}
+
+static HChar *
+s390_irgen_LLGHRL(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, unop(Iop_16Uto64, load(Ity_I16, mkU64(guest_IA_curr_instr +
+               ((ULong)(Long)(Int)i2 << 1)))));
+
+   return "llghrl";
+}
+
+static HChar *
+s390_irgen_LLHH(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w0(r1, unop(Iop_16Uto32, load(Ity_I16, mkexpr(op2addr))));
+
+   return "llhh";
+}
+
+static HChar *
+s390_irgen_LLIHF(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, mkU64(((ULong)i2) << 32));
+
+   return "llihf";
+}
+
+static HChar *
+s390_irgen_LLIHH(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64(((ULong)i2) << 48));
+
+   return "llihh";
+}
+
+static HChar *
+s390_irgen_LLIHL(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64(((ULong)i2) << 32));
+
+   return "llihl";
+}
+
+static HChar *
+s390_irgen_LLILF(UChar r1, UInt i2)
+{
+   put_gpr_dw0(r1, mkU64(i2));
+
+   return "llilf";
+}
+
+static HChar *
+s390_irgen_LLILH(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64(((ULong)i2) << 16));
+
+   return "llilh";
+}
+
+static HChar *
+s390_irgen_LLILL(UChar r1, UShort i2)
+{
+   put_gpr_dw0(r1, mkU64(i2));
+
+   return "llill";
+}
+
+static HChar *
+s390_irgen_LLGTR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_32Uto64, binop(Iop_And32, get_gpr_w1(r2),
+               mkU32(2147483647))));
+
+   return "llgtr";
+}
+
+static HChar *
+s390_irgen_LLGT(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, unop(Iop_32Uto64, binop(Iop_And32, load(Ity_I32,
+               mkexpr(op2addr)), mkU32(2147483647))));
+
+   return "llgt";
+}
+
+static HChar *
+s390_irgen_LNR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(result, mkite(binop(Iop_CmpLE32S, mkexpr(op2), mkU32(0)), mkexpr(op2),
+          binop(Iop_Sub32, mkU32(0), mkexpr(op2))));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_BITWISE, result);
+
+   return "lnr";
+}
+
+static HChar *
+s390_irgen_LNGR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, mkite(binop(Iop_CmpLE64S, mkexpr(op2), mkU64(0)), mkexpr(op2),
+          binop(Iop_Sub64, mkU64(0), mkexpr(op2))));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_BITWISE, result);
+
+   return "lngr";
+}
+
+static HChar *
+s390_irgen_LNGFR(UChar r1, UChar r2 __attribute__((unused)))
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r1)));
+   assign(result, mkite(binop(Iop_CmpLE64S, mkexpr(op2), mkU64(0)), mkexpr(op2),
+          binop(Iop_Sub64, mkU64(0), mkexpr(op2))));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_BITWISE, result);
+
+   return "lngfr";
+}
+
+static HChar *
+s390_irgen_LOCR(UChar m3, UChar r1, UChar r2)
+{
+   if_condition_goto(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)),
+                     guest_IA_next_instr);
+   put_gpr_w1(r1, get_gpr_w1(r2));
+
+   return "locr";
+}
+
+static HChar *
+s390_irgen_LOCGR(UChar m3, UChar r1, UChar r2)
+{
+   if_condition_goto(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)),
+                     guest_IA_next_instr);
+   put_gpr_dw0(r1, get_gpr_dw0(r2));
+
+   return "locgr";
+}
+
+static HChar *
+s390_irgen_LOC(UChar r1, IRTemp op2addr)
+{
+   /* condition is checked in format handler */
+   put_gpr_w1(r1, load(Ity_I32, mkexpr(op2addr)));
+
+   return "loc";
+}
+
+static HChar *
+s390_irgen_LOCG(UChar r1, IRTemp op2addr)
+{
+   /* condition is checked in format handler */
+   put_gpr_dw0(r1, load(Ity_I64, mkexpr(op2addr)));
+
+   return "locg";
+}
+
+static HChar *
+s390_irgen_LPQ(UChar r1, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, load(Ity_I64, mkexpr(op2addr)));
+   put_gpr_dw0(r1 + 1, load(Ity_I64, binop(Iop_Add64, mkexpr(op2addr), mkU64(8))
+               ));
+
+   return "lpq";
+}
+
+static HChar *
+s390_irgen_LPR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(result, mkite(binop(Iop_CmpLT32S, mkexpr(op2), mkU32(0)),
+          binop(Iop_Sub32, mkU32(0), mkexpr(op2)), mkexpr(op2)));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_POSITIVE_32, op2);
+
+   return "lpr";
+}
+
+static HChar *
+s390_irgen_LPGR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, mkite(binop(Iop_CmpLT64S, mkexpr(op2), mkU64(0)),
+          binop(Iop_Sub64, mkU64(0), mkexpr(op2)), mkexpr(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_POSITIVE_64, op2);
+
+   return "lpgr";
+}
+
+static HChar *
+s390_irgen_LPGFR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   assign(result, mkite(binop(Iop_CmpLT64S, mkexpr(op2), mkU64(0)),
+          binop(Iop_Sub64, mkU64(0), mkexpr(op2)), mkexpr(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_POSITIVE_64, op2);
+
+   return "lpgfr";
+}
+
+static HChar *
+s390_irgen_LRVR(UChar r1, UChar r2)
+{
+   IRTemp b0 = newTemp(Ity_I8);
+   IRTemp b1 = newTemp(Ity_I8);
+   IRTemp b2 = newTemp(Ity_I8);
+   IRTemp b3 = newTemp(Ity_I8);
+
+   assign(b3, get_gpr_b7(r2));
+   assign(b2, get_gpr_b6(r2));
+   assign(b1, get_gpr_b5(r2));
+   assign(b0, get_gpr_b4(r2));
+   put_gpr_b4(r1, mkexpr(b3));
+   put_gpr_b5(r1, mkexpr(b2));
+   put_gpr_b6(r1, mkexpr(b1));
+   put_gpr_b7(r1, mkexpr(b0));
+
+   return "lrvr";
+}
+
+static HChar *
+s390_irgen_LRVGR(UChar r1, UChar r2)
+{
+   IRTemp b0 = newTemp(Ity_I8);
+   IRTemp b1 = newTemp(Ity_I8);
+   IRTemp b2 = newTemp(Ity_I8);
+   IRTemp b3 = newTemp(Ity_I8);
+   IRTemp b4 = newTemp(Ity_I8);
+   IRTemp b5 = newTemp(Ity_I8);
+   IRTemp b6 = newTemp(Ity_I8);
+   IRTemp b7 = newTemp(Ity_I8);
+
+   assign(b7, get_gpr_b7(r2));
+   assign(b6, get_gpr_b6(r2));
+   assign(b5, get_gpr_b5(r2));
+   assign(b4, get_gpr_b4(r2));
+   assign(b3, get_gpr_b3(r2));
+   assign(b2, get_gpr_b2(r2));
+   assign(b1, get_gpr_b1(r2));
+   assign(b0, get_gpr_b0(r2));
+   put_gpr_b0(r1, mkexpr(b7));
+   put_gpr_b1(r1, mkexpr(b6));
+   put_gpr_b2(r1, mkexpr(b5));
+   put_gpr_b3(r1, mkexpr(b4));
+   put_gpr_b4(r1, mkexpr(b3));
+   put_gpr_b5(r1, mkexpr(b2));
+   put_gpr_b6(r1, mkexpr(b1));
+   put_gpr_b7(r1, mkexpr(b0));
+
+   return "lrvgr";
+}
+
+static HChar *
+s390_irgen_LRVH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I16);
+
+   assign(op2, load(Ity_I16, mkexpr(op2addr)));
+   put_gpr_b6(r1, unop(Iop_16to8, mkexpr(op2)));
+   put_gpr_b7(r1, unop(Iop_16HIto8, mkexpr(op2)));
+
+   return "lrvh";
+}
+
+static HChar *
+s390_irgen_LRV(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   put_gpr_b4(r1, unop(Iop_32to8, binop(Iop_And32, mkexpr(op2), mkU32(255))));
+   put_gpr_b5(r1, unop(Iop_32to8, binop(Iop_And32, binop(Iop_Shr32, mkexpr(op2),
+              mkU8(8)), mkU32(255))));
+   put_gpr_b6(r1, unop(Iop_32to8, binop(Iop_And32, binop(Iop_Shr32, mkexpr(op2),
+              mkU8(16)), mkU32(255))));
+   put_gpr_b7(r1, unop(Iop_32to8, binop(Iop_And32, binop(Iop_Shr32, mkexpr(op2),
+              mkU8(24)), mkU32(255))));
+
+   return "lrv";
+}
+
+static HChar *
+s390_irgen_LRVG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   put_gpr_b0(r1, unop(Iop_64to8, binop(Iop_And64, mkexpr(op2), mkU64(255))));
+   put_gpr_b1(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(8)), mkU64(255))));
+   put_gpr_b2(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(16)), mkU64(255))));
+   put_gpr_b3(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(24)), mkU64(255))));
+   put_gpr_b4(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(32)), mkU64(255))));
+   put_gpr_b5(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(40)), mkU64(255))));
+   put_gpr_b6(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(48)), mkU64(255))));
+   put_gpr_b7(r1, unop(Iop_64to8, binop(Iop_And64, binop(Iop_Shr64, mkexpr(op2),
+              mkU8(56)), mkU64(255))));
+
+   return "lrvg";
+}
+
+static HChar *
+s390_irgen_MVHHI(UShort i2, IRTemp op1addr)
+{
+   store(mkexpr(op1addr), mkU16(i2));
+
+   return "mvhhi";
+}
+
+static HChar *
+s390_irgen_MVHI(UShort i2, IRTemp op1addr)
+{
+   store(mkexpr(op1addr), mkU32((UInt)(Int)(Short)i2));
+
+   return "mvhi";
+}
+
+static HChar *
+s390_irgen_MVGHI(UShort i2, IRTemp op1addr)
+{
+   store(mkexpr(op1addr), mkU64((ULong)(Long)(Short)i2));
+
+   return "mvghi";
+}
+
+static HChar *
+s390_irgen_MVI(UChar i2, IRTemp op1addr)
+{
+   store(mkexpr(op1addr), mkU8(i2));
+
+   return "mvi";
+}
+
+static HChar *
+s390_irgen_MVIY(UChar i2, IRTemp op1addr)
+{
+   store(mkexpr(op1addr), mkU8(i2));
+
+   return "mviy";
+}
+
+static HChar *
+s390_irgen_MR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1 + 1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mr";
+}
+
+static HChar *
+s390_irgen_M(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1 + 1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "m";
+}
+
+static HChar *
+s390_irgen_MFY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1 + 1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mfy";
+}
+
+static HChar *
+s390_irgen_MH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I16);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I16, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), unop(Iop_16Sto32, mkexpr(op2))
+          ));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mh";
+}
+
+static HChar *
+s390_irgen_MHY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I16);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I16, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), unop(Iop_16Sto32, mkexpr(op2))
+          ));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mhy";
+}
+
+static HChar *
+s390_irgen_MHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Short op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Short)i2;
+   assign(result, binop(Iop_MullS32, mkexpr(op1), unop(Iop_16Sto32,
+          mkU16((UShort)op2))));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mhi";
+}
+
+static HChar *
+s390_irgen_MGHI(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Short op2;
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Short)i2;
+   assign(result, binop(Iop_MullS64, mkexpr(op1), unop(Iop_16Sto64,
+          mkU16((UShort)op2))));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "mghi";
+}
+
+static HChar *
+s390_irgen_MLR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1 + 1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_MullU32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "mlr";
+}
+
+static HChar *
+s390_irgen_MLGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1 + 1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_MullU64, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128HIto64, mkexpr(result)));
+   put_gpr_dw0(r1 + 1, unop(Iop_128to64, mkexpr(result)));
+
+   return "mlgr";
+}
+
+static HChar *
+s390_irgen_ML(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1 + 1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullU32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "ml";
+}
+
+static HChar *
+s390_irgen_MLG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1 + 1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullU64, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128HIto64, mkexpr(result)));
+   put_gpr_dw0(r1 + 1, unop(Iop_128to64, mkexpr(result)));
+
+   return "mlg";
+}
+
+static HChar *
+s390_irgen_MSR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "msr";
+}
+
+static HChar *
+s390_irgen_MSGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_MullS64, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "msgr";
+}
+
+static HChar *
+s390_irgen_MSGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_MullS64, mkexpr(op1), unop(Iop_32Sto64, mkexpr(op2))
+          ));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "msgfr";
+}
+
+static HChar *
+s390_irgen_MS(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "ms";
+}
+
+static HChar *
+s390_irgen_MSY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "msy";
+}
+
+static HChar *
+s390_irgen_MSG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS64, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "msg";
+}
+
+static HChar *
+s390_irgen_MSGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_MullS64, mkexpr(op1), unop(Iop_32Sto64, mkexpr(op2))
+          ));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "msgf";
+}
+
+static HChar *
+s390_irgen_MSFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   Int op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = (Int)i2;
+   assign(result, binop(Iop_MullS32, mkexpr(op1), mkU32((UInt)op2)));
+   put_gpr_w1(r1, unop(Iop_64to32, mkexpr(result)));
+
+   return "msfi";
+}
+
+static HChar *
+s390_irgen_MSGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   Int op2;
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (Int)i2;
+   assign(result, binop(Iop_MullS64, mkexpr(op1), unop(Iop_32Sto64, mkU32((UInt)
+          op2))));
+   put_gpr_dw0(r1, unop(Iop_128to64, mkexpr(result)));
+
+   return "msgfi";
+}
+
+static HChar *
+s390_irgen_OR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Or32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "or";
+}
+
+static HChar *
+s390_irgen_OGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Or64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ogr";
+}
+
+static HChar *
+s390_irgen_ORK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Or32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "ork";
+}
+
+static HChar *
+s390_irgen_OGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Or64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "ogrk";
+}
+
+static HChar *
+s390_irgen_O(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Or32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "o";
+}
+
+static HChar *
+s390_irgen_OY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Or32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "oy";
+}
+
+static HChar *
+s390_irgen_OG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Or64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "og";
+}
+
+static HChar *
+s390_irgen_OI(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_Or8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "oi";
+}
+
+static HChar *
+s390_irgen_OIY(UChar i2, IRTemp op1addr)
+{
+   IRTemp op1 = newTemp(Ity_I8);
+   UChar op2;
+   IRTemp result = newTemp(Ity_I8);
+
+   assign(op1, load(Ity_I8, mkexpr(op1addr)));
+   op2 = i2;
+   assign(result, binop(Iop_Or8, mkexpr(op1), mkU8(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   store(mkexpr(op1addr), mkexpr(result));
+
+   return "oiy";
+}
+
+static HChar *
+s390_irgen_OIHF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "oihf";
+}
+
+static HChar *
+s390_irgen_OIHH(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw0(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw0(r1, mkexpr(result));
+
+   return "oihh";
+}
+
+static HChar *
+s390_irgen_OIHL(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw1(r1, mkexpr(result));
+
+   return "oihl";
+}
+
+static HChar *
+s390_irgen_OILF(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "oilf";
+}
+
+static HChar *
+s390_irgen_OILH(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw2(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw2(r1, mkexpr(result));
+
+   return "oilh";
+}
+
+static HChar *
+s390_irgen_OILL(UChar r1, UShort i2)
+{
+   IRTemp op1 = newTemp(Ity_I16);
+   UShort op2;
+   IRTemp result = newTemp(Ity_I16);
+
+   assign(op1, get_gpr_hw3(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Or16, mkexpr(op1), mkU16(op2)));
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+   put_gpr_hw3(r1, mkexpr(result));
+
+   return "oill";
+}
+
+static HChar *
+s390_irgen_PFD(void)
+{
+
+   return "pfd";
+}
+
+static HChar *
+s390_irgen_PFDRL(void)
+{
+
+   return "pfdrl";
+}
+
+static HChar *
+s390_irgen_RLL(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp amount = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(amount, binop(Iop_And64, mkexpr(op2addr), mkU64(31)));
+   assign(op, get_gpr_w1(r3));
+   put_gpr_w1(r1, binop(Iop_Or32, binop(Iop_Shl32, mkexpr(op), unop(Iop_64to8,
+              mkexpr(amount))), binop(Iop_Shr32, mkexpr(op), unop(Iop_64to8,
+              binop(Iop_Sub64, mkU64(32), mkexpr(amount))))));
+
+   return "rll";
+}
+
+static HChar *
+s390_irgen_RLLG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp amount = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I64);
+
+   assign(amount, binop(Iop_And64, mkexpr(op2addr), mkU64(63)));
+   assign(op, get_gpr_dw0(r3));
+   put_gpr_dw0(r1, binop(Iop_Or64, binop(Iop_Shl64, mkexpr(op), unop(Iop_64to8,
+               mkexpr(amount))), binop(Iop_Shr64, mkexpr(op), unop(Iop_64to8,
+               binop(Iop_Sub64, mkU64(64), mkexpr(amount))))));
+
+   return "rllg";
+}
+
+static HChar *
+s390_irgen_RNSBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+   UChar from;
+   UChar to;
+   UChar rot;
+   UChar t_bit;
+   ULong mask;
+   ULong maskc;
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   from = i3 & 63;
+   to = i4 & 63;
+   rot = i5 & 63;
+   t_bit = i3 & 128;
+   assign(op2, rot == 0 ? get_gpr_dw0(r2) : binop(Iop_Or64, binop(Iop_Shl64,
+          get_gpr_dw0(r2), mkU8(rot)), binop(Iop_Shr64, get_gpr_dw0(r2),
+          mkU8(64 - rot))));
+   if (from <= to) {
+      mask = ~0ULL;
+      mask = (mask >> from) & (mask << (63 - to));
+      maskc = ~mask;
+   } else {
+      maskc = ~0ULL;
+      maskc = (maskc >> (to + 1)) & (maskc << (64 - from));
+      mask = ~maskc;
+   }
+   assign(result, binop(Iop_And64, binop(Iop_And64, get_gpr_dw0(r1), mkexpr(op2)
+          ), mkU64(mask)));
+   if (t_bit == 0) {
+      put_gpr_dw0(r1, binop(Iop_Or64, binop(Iop_And64, get_gpr_dw0(r1),
+                  mkU64(maskc)), mkexpr(result)));
+   }
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+
+   return "rnsbg";
+}
+
+static HChar *
+s390_irgen_RXSBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+   UChar from;
+   UChar to;
+   UChar rot;
+   UChar t_bit;
+   ULong mask;
+   ULong maskc;
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   from = i3 & 63;
+   to = i4 & 63;
+   rot = i5 & 63;
+   t_bit = i3 & 128;
+   assign(op2, rot == 0 ? get_gpr_dw0(r2) : binop(Iop_Or64, binop(Iop_Shl64,
+          get_gpr_dw0(r2), mkU8(rot)), binop(Iop_Shr64, get_gpr_dw0(r2),
+          mkU8(64 - rot))));
+   if (from <= to) {
+      mask = ~0ULL;
+      mask = (mask >> from) & (mask << (63 - to));
+      maskc = ~mask;
+   } else {
+      maskc = ~0ULL;
+      maskc = (maskc >> (to + 1)) & (maskc << (64 - from));
+      mask = ~maskc;
+   }
+   assign(result, binop(Iop_And64, binop(Iop_Xor64, get_gpr_dw0(r1), mkexpr(op2)
+          ), mkU64(mask)));
+   if (t_bit == 0) {
+      put_gpr_dw0(r1, binop(Iop_Or64, binop(Iop_And64, get_gpr_dw0(r1),
+                  mkU64(maskc)), mkexpr(result)));
+   }
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+
+   return "rxsbg";
+}
+
+static HChar *
+s390_irgen_ROSBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+   UChar from;
+   UChar to;
+   UChar rot;
+   UChar t_bit;
+   ULong mask;
+   ULong maskc;
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+
+   from = i3 & 63;
+   to = i4 & 63;
+   rot = i5 & 63;
+   t_bit = i3 & 128;
+   assign(op2, rot == 0 ? get_gpr_dw0(r2) : binop(Iop_Or64, binop(Iop_Shl64,
+          get_gpr_dw0(r2), mkU8(rot)), binop(Iop_Shr64, get_gpr_dw0(r2),
+          mkU8(64 - rot))));
+   if (from <= to) {
+      mask = ~0ULL;
+      mask = (mask >> from) & (mask << (63 - to));
+      maskc = ~mask;
+   } else {
+      maskc = ~0ULL;
+      maskc = (maskc >> (to + 1)) & (maskc << (64 - from));
+      mask = ~maskc;
+   }
+   assign(result, binop(Iop_And64, binop(Iop_Or64, get_gpr_dw0(r1), mkexpr(op2)
+          ), mkU64(mask)));
+   if (t_bit == 0) {
+      put_gpr_dw0(r1, binop(Iop_Or64, binop(Iop_And64, get_gpr_dw0(r1),
+                  mkU64(maskc)), mkexpr(result)));
+   }
+   s390_cc_thunk_putZ(S390_CC_OP_BITWISE, result);
+
+   return "rosbg";
+}
+
+static HChar *
+s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5)
+{
+   UChar from;
+   UChar to;
+   UChar rot;
+   UChar z_bit;
+   ULong mask;
+   ULong maskc;
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   from = i3 & 63;
+   to = i4 & 63;
+   rot = i5 & 63;
+   z_bit = i4 & 128;
+   assign(op2, rot == 0 ? get_gpr_dw0(r2) : binop(Iop_Or64, binop(Iop_Shl64,
+          get_gpr_dw0(r2), mkU8(rot)), binop(Iop_Shr64, get_gpr_dw0(r2),
+          mkU8(64 - rot))));
+   if (from <= to) {
+      mask = ~0ULL;
+      mask = (mask >> from) & (mask << (63 - to));
+      maskc = ~mask;
+   } else {
+      maskc = ~0ULL;
+      maskc = (maskc >> (to + 1)) & (maskc << (64 - from));
+      mask = ~maskc;
+   }
+   if (z_bit == 0) {
+      put_gpr_dw0(r1, binop(Iop_Or64, binop(Iop_And64, get_gpr_dw0(r1),
+                  mkU64(maskc)), binop(Iop_And64, mkexpr(op2), mkU64(mask))));
+   } else {
+      put_gpr_dw0(r1, binop(Iop_And64, mkexpr(op2), mkU64(mask)));
+   }
+   assign(result, get_gpr_dw0(r1));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+
+   return "risbg";
+}
+
+static HChar *
+s390_irgen_SAR(UChar r1, UChar r2)
+{
+   put_ar_w0(r1, get_gpr_w1(r2));
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, AR, GPR), "sar", r1, r2);
+
+   return "sar";
+}
+
+static HChar *
+s390_irgen_SLDA(UChar r1, IRTemp op2addr)
+{
+   IRTemp p1 = newTemp(Ity_I64);
+   IRTemp p2 = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   Long sign_mask;
+   IRTemp shift_amount = newTemp(Ity_I64);
+
+   assign(p1, unop(Iop_32Uto64, get_gpr_w1(r1)));
+   assign(p2, unop(Iop_32Uto64, get_gpr_w1(r1 + 1)));
+   assign(op, binop(Iop_Or64, binop(Iop_Shl64, mkexpr(p1), mkU8(32)), mkexpr(p2)
+          ));
+   sign_mask = 1ULL << 63;
+   assign(shift_amount, binop(Iop_And64, mkexpr(op2addr), mkU64(63)));
+   assign(result, binop(Iop_Or64, binop(Iop_And64, binop(Iop_Shl64, mkexpr(op),
+          unop(Iop_64to8, mkexpr(shift_amount))), mkU64((ULong)(~sign_mask))),
+          binop(Iop_And64, mkexpr(op), mkU64((ULong)sign_mask))));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+   s390_cc_thunk_putZZ(S390_CC_OP_SHIFT_LEFT_64, op, shift_amount);
+
+   return "slda";
+}
+
+static HChar *
+s390_irgen_SLDL(UChar r1, IRTemp op2addr)
+{
+   IRTemp p1 = newTemp(Ity_I64);
+   IRTemp p2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(p1, unop(Iop_32Uto64, get_gpr_w1(r1)));
+   assign(p2, unop(Iop_32Uto64, get_gpr_w1(r1 + 1)));
+   assign(result, binop(Iop_Shl64, binop(Iop_Or64, binop(Iop_Shl64, mkexpr(p1),
+          mkU8(32)), mkexpr(p2)), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "sldl";
+}
+
+static HChar *
+s390_irgen_SLA(UChar r1, IRTemp op2addr)
+{
+   IRTemp uop = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   UInt sign_mask;
+   IRTemp shift_amount = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r1));
+   assign(uop, get_gpr_w1(r1));
+   sign_mask = 2147483648U;
+   assign(shift_amount, binop(Iop_And64, mkexpr(op2addr), mkU64(63)));
+   assign(result, binop(Iop_Or32, binop(Iop_And32, binop(Iop_Shl32, mkexpr(uop),
+          unop(Iop_64to8, mkexpr(shift_amount))), mkU32(~sign_mask)),
+          binop(Iop_And32, mkexpr(uop), mkU32(sign_mask))));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putZZ(S390_CC_OP_SHIFT_LEFT_32, op, shift_amount);
+
+   return "sla";
+}
+
+static HChar *
+s390_irgen_SLAK(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp uop = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   UInt sign_mask;
+   IRTemp shift_amount = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r3));
+   assign(uop, get_gpr_w1(r3));
+   sign_mask = 2147483648U;
+   assign(shift_amount, binop(Iop_And64, mkexpr(op2addr), mkU64(63)));
+   assign(result, binop(Iop_Or32, binop(Iop_And32, binop(Iop_Shl32, mkexpr(uop),
+          unop(Iop_64to8, mkexpr(shift_amount))), mkU32(~sign_mask)),
+          binop(Iop_And32, mkexpr(uop), mkU32(sign_mask))));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putZZ(S390_CC_OP_SHIFT_LEFT_32, op, shift_amount);
+
+   return "slak";
+}
+
+static HChar *
+s390_irgen_SLAG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp uop = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   ULong sign_mask;
+   IRTemp shift_amount = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I64);
+
+   assign(op, get_gpr_dw0(r3));
+   assign(uop, get_gpr_dw0(r3));
+   sign_mask = 9223372036854775808ULL;
+   assign(shift_amount, binop(Iop_And64, mkexpr(op2addr), mkU64(63)));
+   assign(result, binop(Iop_Or64, binop(Iop_And64, binop(Iop_Shl64, mkexpr(uop),
+          unop(Iop_64to8, mkexpr(shift_amount))), mkU64(~sign_mask)),
+          binop(Iop_And64, mkexpr(uop), mkU64(sign_mask))));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putZZ(S390_CC_OP_SHIFT_LEFT_64, op, shift_amount);
+
+   return "slag";
+}
+
+static HChar *
+s390_irgen_SLL(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, binop(Iop_Shl32, get_gpr_w1(r1), unop(Iop_64to8,
+              binop(Iop_And64, mkexpr(op2addr), mkU64(63)))));
+
+   return "sll";
+}
+
+static HChar *
+s390_irgen_SLLK(UChar r1, UChar r3, IRTemp op2addr)
+{
+   put_gpr_w1(r1, binop(Iop_Shl32, get_gpr_w1(r3), unop(Iop_64to8,
+              binop(Iop_And64, mkexpr(op2addr), mkU64(63)))));
+
+   return "sllk";
+}
+
+static HChar *
+s390_irgen_SLLG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   put_gpr_dw0(r1, binop(Iop_Shl64, get_gpr_dw0(r3), unop(Iop_64to8,
+               binop(Iop_And64, mkexpr(op2addr), mkU64(63)))));
+
+   return "sllg";
+}
+
+static HChar *
+s390_irgen_SRDA(UChar r1, IRTemp op2addr)
+{
+   IRTemp p1 = newTemp(Ity_I64);
+   IRTemp p2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(p1, unop(Iop_32Uto64, get_gpr_w1(r1)));
+   assign(p2, unop(Iop_32Uto64, get_gpr_w1(r1 + 1)));
+   assign(result, binop(Iop_Sar64, binop(Iop_Or64, binop(Iop_Shl64, mkexpr(p1),
+          mkU8(32)), mkexpr(p2)), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+
+   return "srda";
+}
+
+static HChar *
+s390_irgen_SRDL(UChar r1, IRTemp op2addr)
+{
+   IRTemp p1 = newTemp(Ity_I64);
+   IRTemp p2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(p1, unop(Iop_32Uto64, get_gpr_w1(r1)));
+   assign(p2, unop(Iop_32Uto64, get_gpr_w1(r1 + 1)));
+   assign(result, binop(Iop_Shr64, binop(Iop_Or64, binop(Iop_Shl64, mkexpr(p1),
+          mkU8(32)), mkexpr(p2)), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result)));
+
+   return "srdl";
+}
+
+static HChar *
+s390_irgen_SRA(UChar r1, IRTemp op2addr)
+{
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r1));
+   assign(result, binop(Iop_Sar32, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+
+   return "sra";
+}
+
+static HChar *
+s390_irgen_SRAK(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r3));
+   assign(result, binop(Iop_Sar32, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+
+   return "srak";
+}
+
+static HChar *
+s390_irgen_SRAG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp op = newTemp(Ity_I64);
+
+   assign(op, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Sar64, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+          mkexpr(op2addr), mkU64(63)))));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
+
+   return "srag";
+}
+
+static HChar *
+s390_irgen_SRL(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r1));
+   put_gpr_w1(r1, binop(Iop_Shr32, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+              mkexpr(op2addr), mkU64(63)))));
+
+   return "srl";
+}
+
+static HChar *
+s390_irgen_SRLK(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_I32);
+
+   assign(op, get_gpr_w1(r3));
+   put_gpr_w1(r1, binop(Iop_Shr32, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+              mkexpr(op2addr), mkU64(63)))));
+
+   return "srlk";
+}
+
+static HChar *
+s390_irgen_SRLG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_I64);
+
+   assign(op, get_gpr_dw0(r3));
+   put_gpr_dw0(r1, binop(Iop_Shr64, mkexpr(op), unop(Iop_64to8, binop(Iop_And64,
+               mkexpr(op2addr), mkU64(63)))));
+
+   return "srlg";
+}
+
+static HChar *
+s390_irgen_ST(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_w1(r1));
+
+   return "st";
+}
+
+static HChar *
+s390_irgen_STY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_w1(r1));
+
+   return "sty";
+}
+
+static HChar *
+s390_irgen_STG(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_dw0(r1));
+
+   return "stg";
+}
+
+static HChar *
+s390_irgen_STRL(UChar r1, UInt i2)
+{
+   store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)),
+         get_gpr_w1(r1));
+
+   return "strl";
+}
+
+static HChar *
+s390_irgen_STGRL(UChar r1, UInt i2)
+{
+   store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)),
+         get_gpr_dw0(r1));
+
+   return "stgrl";
+}
+
+static HChar *
+s390_irgen_STC(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b7(r1));
+
+   return "stc";
+}
+
+static HChar *
+s390_irgen_STCY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b7(r1));
+
+   return "stcy";
+}
+
+static HChar *
+s390_irgen_STCH(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b3(r1));
+
+   return "stch";
+}
+
+static HChar *
+s390_irgen_STCM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar mask;
+   UChar n;
+
+   mask = (UChar)r3;
+   n = 0;
+   if ((mask & 8) != 0) {
+      store(mkexpr(op2addr), get_gpr_b4(r1));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b5(r1));
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b6(r1));
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b7(r1));
+   }
+
+   return "stcm";
+}
+
+static HChar *
+s390_irgen_STCMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar mask;
+   UChar n;
+
+   mask = (UChar)r3;
+   n = 0;
+   if ((mask & 8) != 0) {
+      store(mkexpr(op2addr), get_gpr_b4(r1));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b5(r1));
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b6(r1));
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b7(r1));
+   }
+
+   return "stcmy";
+}
+
+static HChar *
+s390_irgen_STCMH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar mask;
+   UChar n;
+
+   mask = (UChar)r3;
+   n = 0;
+   if ((mask & 8) != 0) {
+      store(mkexpr(op2addr), get_gpr_b0(r1));
+      n = n + 1;
+   }
+   if ((mask & 4) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b1(r1));
+      n = n + 1;
+   }
+   if ((mask & 2) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b2(r1));
+      n = n + 1;
+   }
+   if ((mask & 1) != 0) {
+      store(binop(Iop_Add64, mkexpr(op2addr), mkU64(n)), get_gpr_b3(r1));
+   }
+
+   return "stcmh";
+}
+
+static HChar *
+s390_irgen_STH(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_hw3(r1));
+
+   return "sth";
+}
+
+static HChar *
+s390_irgen_STHY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_hw3(r1));
+
+   return "sthy";
+}
+
+static HChar *
+s390_irgen_STHRL(UChar r1, UInt i2)
+{
+   store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)),
+         get_gpr_hw3(r1));
+
+   return "sthrl";
+}
+
+static HChar *
+s390_irgen_STHH(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_hw1(r1));
+
+   return "sthh";
+}
+
+static HChar *
+s390_irgen_STFH(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_w0(r1));
+
+   return "stfh";
+}
+
+static HChar *
+s390_irgen_STOC(UChar r1, IRTemp op2addr)
+{
+   /* condition is checked in format handler */
+   store(mkexpr(op2addr), get_gpr_w1(r1));
+
+   return "stoc";
+}
+
+static HChar *
+s390_irgen_STOCG(UChar r1, IRTemp op2addr)
+{
+   /* condition is checked in format handler */
+   store(mkexpr(op2addr), get_gpr_dw0(r1));
+
+   return "stocg";
+}
+
+static HChar *
+s390_irgen_STPQ(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_dw0(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(8)), get_gpr_dw0(r1 + 1));
+
+   return "stpq";
+}
+
+static HChar *
+s390_irgen_STRVH(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b7(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(1)), get_gpr_b6(r1));
+
+   return "strvh";
+}
+
+static HChar *
+s390_irgen_STRV(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b7(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(1)), get_gpr_b6(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(2)), get_gpr_b5(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(3)), get_gpr_b4(r1));
+
+   return "strv";
+}
+
+static HChar *
+s390_irgen_STRVG(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_gpr_b7(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(1)), get_gpr_b6(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(2)), get_gpr_b5(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(3)), get_gpr_b4(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(4)), get_gpr_b3(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(5)), get_gpr_b2(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(6)), get_gpr_b1(r1));
+   store(binop(Iop_Add64, mkexpr(op2addr), mkU64(7)), get_gpr_b0(r1));
+
+   return "strvg";
+}
+
+static HChar *
+s390_irgen_SR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "sr";
+}
+
+static HChar *
+s390_irgen_SGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "sgr";
+}
+
+static HChar *
+s390_irgen_SGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "sgfr";
+}
+
+static HChar *
+s390_irgen_SRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op2, op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "srk";
+}
+
+static HChar *
+s390_irgen_SGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Sub64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, op2, op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "sgrk";
+}
+
+static HChar *
+s390_irgen_S(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "s";
+}
+
+static HChar *
+s390_irgen_SY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "sy";
+}
+
+static HChar *
+s390_irgen_SG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "sg";
+}
+
+static HChar *
+s390_irgen_SGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "sgf";
+}
+
+static HChar *
+s390_irgen_SH(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "sh";
+}
+
+static HChar *
+s390_irgen_SHY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkexpr(op2addr))));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "shy";
+}
+
+static HChar *
+s390_irgen_SHHHR(UChar r3 __attribute__((unused)), UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r1));
+   assign(op3, get_gpr_w0(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "shhhr";
+}
+
+static HChar *
+s390_irgen_SHHLR(UChar r3 __attribute__((unused)), UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r1));
+   assign(op3, get_gpr_w1(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putSS(S390_CC_OP_SIGNED_SUB_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "shhlr";
+}
+
+static HChar *
+s390_irgen_SLR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "slr";
+}
+
+static HChar *
+s390_irgen_SLGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slgr";
+}
+
+static HChar *
+s390_irgen_SLGFR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, get_gpr_w1(r2)));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slgfr";
+}
+
+static HChar *
+s390_irgen_SLRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   assign(op3, get_gpr_w1(r3));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op2, op3);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "slrk";
+}
+
+static HChar *
+s390_irgen_SLGRK(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   assign(op3, get_gpr_dw0(r3));
+   assign(result, binop(Iop_Sub64, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op2, op3);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slgrk";
+}
+
+static HChar *
+s390_irgen_SL(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "sl";
+}
+
+static HChar *
+s390_irgen_SLY(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op1, op2);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "sly";
+}
+
+static HChar *
+s390_irgen_SLG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slg";
+}
+
+static HChar *
+s390_irgen_SLGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkexpr(op2addr))));
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op1, op2);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slgf";
+}
+
+static HChar *
+s390_irgen_SLFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   UInt op2;
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   op2 = i2;
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkU32(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op1, mktemp(Ity_I32,
+                       mkU32(op2)));
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "slfi";
+}
+
+static HChar *
+s390_irgen_SLGFI(UChar r1, UInt i2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   ULong op2;
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   op2 = (ULong)i2;
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkU64(op2)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_64, op1, mktemp(Ity_I64,
+                       mkU64(op2)));
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slgfi";
+}
+
+static HChar *
+s390_irgen_SLHHHR(UChar r3 __attribute__((unused)), UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r1));
+   assign(op3, get_gpr_w0(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "slhhhr";
+}
+
+static HChar *
+s390_irgen_SLHHLR(UChar r3 __attribute__((unused)), UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w0(r1));
+   assign(op3, get_gpr_w1(r2));
+   assign(result, binop(Iop_Sub32, mkexpr(op2), mkexpr(op3)));
+   s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_SUB_32, op2, op3);
+   put_gpr_w0(r1, mkexpr(result));
+
+   return "slhhlr";
+}
+
+static HChar *
+s390_irgen_SLBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp borrow_in = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, get_gpr_w1(r2));
+   assign(borrow_in, binop(Iop_Sub32, mkU32(1), binop(Iop_Shr32,
+          s390_call_calculate_cc(), mkU8(1))));
+   assign(result, binop(Iop_Sub32, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)),
+          mkexpr(borrow_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_SUBB_32, op1, op2, borrow_in);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "slbr";
+}
+
+static HChar *
+s390_irgen_SLBGR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp borrow_in = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, get_gpr_dw0(r2));
+   assign(borrow_in, unop(Iop_32Uto64, binop(Iop_Sub32, mkU32(1),
+          binop(Iop_Shr32, s390_call_calculate_cc(), mkU8(1)))));
+   assign(result, binop(Iop_Sub64, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)),
+          mkexpr(borrow_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_SUBB_64, op1, op2, borrow_in);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slbgr";
+}
+
+static HChar *
+s390_irgen_SLB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp op2 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp borrow_in = newTemp(Ity_I32);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+   assign(borrow_in, binop(Iop_Sub32, mkU32(1), binop(Iop_Shr32,
+          s390_call_calculate_cc(), mkU8(1))));
+   assign(result, binop(Iop_Sub32, binop(Iop_Sub32, mkexpr(op1), mkexpr(op2)),
+          mkexpr(borrow_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_SUBB_32, op1, op2, borrow_in);
+   put_gpr_w1(r1, mkexpr(result));
+
+   return "slb";
+}
+
+static HChar *
+s390_irgen_SLBG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp op2 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp borrow_in = newTemp(Ity_I64);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+   assign(borrow_in, unop(Iop_32Uto64, binop(Iop_Sub32, mkU32(1),
+          binop(Iop_Shr32, s390_call_calculate_cc(), mkU8(1)))));
+   assign(result, binop(Iop_Sub64, binop(Iop_Sub64, mkexpr(op1), mkexpr(op2)),
+          mkexpr(borrow_in)));
+   s390_cc_thunk_putZZZ(S390_CC_OP_UNSIGNED_SUBB_64, op1, op2, borrow_in);
+   put_gpr_dw0(r1, mkexpr(result));
+
+   return "slbg";
+}
+
+static HChar *
+s390_irgen_SVC(UChar i)
+{
+   IRTemp sysno = newTemp(Ity_I64);
+
+   if (i != 0) {
+      assign(sysno, mkU64(i));
+   } else {
+      assign(sysno, unop(Iop_32Uto64, get_gpr_w1(1)));
+   }
+   system_call(mkexpr(sysno));
+
+   return "svc";
+}
+
+static HChar *
+s390_irgen_TS(IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_I8);
+
+   assign(value, load(Ity_I8, mkexpr(op2addr)));
+   s390_cc_thunk_putZ(S390_CC_OP_TEST_AND_SET, value);
+   store(mkexpr(op2addr), mkU8(255));
+
+   return "ts";
+}
+
+static HChar *
+s390_irgen_TM(UChar i2, IRTemp op1addr)
+{
+   UChar mask;
+   IRTemp value = newTemp(Ity_I8);
+
+   mask = i2;
+   assign(value, load(Ity_I8, mkexpr(op1addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_8, value, mktemp(Ity_I8,
+                       mkU8(mask)));
+
+   return "tm";
+}
+
+static HChar *
+s390_irgen_TMY(UChar i2, IRTemp op1addr)
+{
+   UChar mask;
+   IRTemp value = newTemp(Ity_I8);
+
+   mask = i2;
+   assign(value, load(Ity_I8, mkexpr(op1addr)));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_8, value, mktemp(Ity_I8,
+                       mkU8(mask)));
+
+   return "tmy";
+}
+
+static HChar *
+s390_irgen_TMHH(UChar r1, UShort i2)
+{
+   UShort mask;
+   IRTemp value = newTemp(Ity_I16);
+
+   mask = i2;
+   assign(value, get_gpr_hw0(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_16, value, mktemp(Ity_I16,
+                       mkU16(mask)));
+
+   return "tmhh";
+}
+
+static HChar *
+s390_irgen_TMHL(UChar r1, UShort i2)
+{
+   UShort mask;
+   IRTemp value = newTemp(Ity_I16);
+
+   mask = i2;
+   assign(value, get_gpr_hw1(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_16, value, mktemp(Ity_I16,
+                       mkU16(mask)));
+
+   return "tmhl";
+}
+
+static HChar *
+s390_irgen_TMLH(UChar r1, UShort i2)
+{
+   UShort mask;
+   IRTemp value = newTemp(Ity_I16);
+
+   mask = i2;
+   assign(value, get_gpr_hw2(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_16, value, mktemp(Ity_I16,
+                       mkU16(mask)));
+
+   return "tmlh";
+}
+
+static HChar *
+s390_irgen_TMLL(UChar r1, UShort i2)
+{
+   UShort mask;
+   IRTemp value = newTemp(Ity_I16);
+
+   mask = i2;
+   assign(value, get_gpr_hw3(r1));
+   s390_cc_thunk_putZZ(S390_CC_OP_TEST_UNDER_MASK_16, value, mktemp(Ity_I16,
+                       mkU16(mask)));
+
+   return "tmll";
+}
+
+static HChar *
+s390_irgen_EFPC(UChar r1)
+{
+   put_gpr_w1(r1, get_fpc_w0());
+
+   return "efpc";
+}
+
+static HChar *
+s390_irgen_LER(UChar r1, UChar r2)
+{
+   put_fpr_w0(r1, get_fpr_w0(r2));
+
+   return "ler";
+}
+
+static HChar *
+s390_irgen_LDR(UChar r1, UChar r2)
+{
+   put_fpr_dw0(r1, get_fpr_dw0(r2));
+
+   return "ldr";
+}
+
+static HChar *
+s390_irgen_LXR(UChar r1, UChar r2)
+{
+   put_fpr_dw0(r1, get_fpr_dw0(r2));
+   put_fpr_dw0(r1 + 2, get_fpr_dw0(r2 + 2));
+
+   return "lxr";
+}
+
+static HChar *
+s390_irgen_LE(UChar r1, IRTemp op2addr)
+{
+   put_fpr_w0(r1, load(Ity_F32, mkexpr(op2addr)));
+
+   return "le";
+}
+
+static HChar *
+s390_irgen_LD(UChar r1, IRTemp op2addr)
+{
+   put_fpr_dw0(r1, load(Ity_F64, mkexpr(op2addr)));
+
+   return "ld";
+}
+
+static HChar *
+s390_irgen_LEY(UChar r1, IRTemp op2addr)
+{
+   put_fpr_w0(r1, load(Ity_F32, mkexpr(op2addr)));
+
+   return "ley";
+}
+
+static HChar *
+s390_irgen_LDY(UChar r1, IRTemp op2addr)
+{
+   put_fpr_dw0(r1, load(Ity_F64, mkexpr(op2addr)));
+
+   return "ldy";
+}
+
+static HChar *
+s390_irgen_LFPC(IRTemp op2addr)
+{
+   put_fpc_w0(load(Ity_I32, mkexpr(op2addr)));
+
+   return "lfpc";
+}
+
+static HChar *
+s390_irgen_LZER(UChar r1)
+{
+   put_fpr_w0(r1, mkF32i(0x0));
+
+   return "lzer";
+}
+
+static HChar *
+s390_irgen_LZDR(UChar r1)
+{
+   put_fpr_dw0(r1, mkF64i(0x0));
+
+   return "lzdr";
+}
+
+static HChar *
+s390_irgen_LZXR(UChar r1)
+{
+   put_fpr_dw0(r1, mkF64i(0x0));
+   put_fpr_dw0(r1 + 2, mkF64i(0x0));
+
+   return "lzxr";
+}
+
+static HChar *
+s390_irgen_SRNM(IRTemp op2addr)
+{
+   UInt mask;
+
+   mask = 3;
+   put_fpc_w0(binop(Iop_Or32, binop(Iop_And32, get_fpc_w0(), mkU32(~mask)),
+              binop(Iop_And32, unop(Iop_64to32, mkexpr(op2addr)), mkU32(mask)))
+              );
+
+   return "srnm";
+}
+
+static HChar *
+s390_irgen_SFPC(UChar r1)
+{
+   put_fpc_w0(get_gpr_w1(r1));
+
+   return "sfpc";
+}
+
+static HChar *
+s390_irgen_STE(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_fpr_w0(r1));
+
+   return "ste";
+}
+
+static HChar *
+s390_irgen_STD(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_fpr_dw0(r1));
+
+   return "std";
+}
+
+static HChar *
+s390_irgen_STEY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_fpr_w0(r1));
+
+   return "stey";
+}
+
+static HChar *
+s390_irgen_STDY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_fpr_dw0(r1));
+
+   return "stdy";
+}
+
+static HChar *
+s390_irgen_STFPC(IRTemp op2addr)
+{
+   store(mkexpr(op2addr), get_fpc_w0());
+
+   return "stfpc";
+}
+
+static HChar *
+s390_irgen_AEBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, get_fpr_w0(r2));
+   assign(result, triop(Iop_AddF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "aebr";
+}
+
+static HChar *
+s390_irgen_ADBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, get_fpr_dw0(r2));
+   assign(result, triop(Iop_AddF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "adbr";
+}
+
+static HChar *
+s390_irgen_AEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, load(Ity_F32, mkexpr(op2addr)));
+   assign(result, triop(Iop_AddF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "aeb";
+}
+
+static HChar *
+s390_irgen_ADB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, load(Ity_F64, mkexpr(op2addr)));
+   assign(result, triop(Iop_AddF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "adb";
+}
+
+static HChar *
+s390_irgen_CEFBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   put_fpr_w0(r1, binop(Iop_I32StoF32, mkU32(Irrm_NEAREST), mkexpr(op2)));
+
+   return "cefbr";
+}
+
+static HChar *
+s390_irgen_CDFBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   put_fpr_dw0(r1, unop(Iop_I32StoF64, mkexpr(op2)));
+
+   return "cdfbr";
+}
+
+static HChar *
+s390_irgen_CEGBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   put_fpr_w0(r1, binop(Iop_I64StoF32, mkU32(Irrm_NEAREST), mkexpr(op2)));
+
+   return "cegbr";
+}
+
+static HChar *
+s390_irgen_CDGBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   put_fpr_dw0(r1, binop(Iop_I64StoF64, mkU32(Irrm_NEAREST), mkexpr(op2)));
+
+   return "cdgbr";
+}
+
+static HChar *
+s390_irgen_CFEBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op, get_fpr_w0(r2));
+   assign(result, binop(Iop_F32toI32S, mkU32(encode_rounding_mode(r3)),
+          mkexpr(op)));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_32_TO_INT_32, op);
+
+   return "cfebr";
+}
+
+static HChar *
+s390_irgen_CFDBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op, get_fpr_dw0(r2));
+   assign(result, binop(Iop_F64toI32S, mkU32(encode_rounding_mode(r3)),
+          mkexpr(op)));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_64_TO_INT_32, op);
+
+   return "cfdbr";
+}
+
+static HChar *
+s390_irgen_CGEBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op, get_fpr_w0(r2));
+   assign(result, binop(Iop_F32toI64S, mkU32(encode_rounding_mode(r3)),
+          mkexpr(op)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_32_TO_INT_64, op);
+
+   return "cgebr";
+}
+
+static HChar *
+s390_irgen_CGDBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op, get_fpr_dw0(r2));
+   assign(result, binop(Iop_F64toI64S, mkU32(encode_rounding_mode(r3)),
+          mkexpr(op)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_64_TO_INT_64, op);
+
+   return "cgdbr";
+}
+
+static HChar *
+s390_irgen_DEBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, get_fpr_w0(r2));
+   assign(result, triop(Iop_DivF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "debr";
+}
+
+static HChar *
+s390_irgen_DDBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, get_fpr_dw0(r2));
+   assign(result, triop(Iop_DivF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "ddbr";
+}
+
+static HChar *
+s390_irgen_DEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, load(Ity_F32, mkexpr(op2addr)));
+   assign(result, triop(Iop_DivF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "deb";
+}
+
+static HChar *
+s390_irgen_DDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, load(Ity_F64, mkexpr(op2addr)));
+   assign(result, triop(Iop_DivF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "ddb";
+}
+
+static HChar *
+s390_irgen_LTEBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, get_fpr_w0(r2));
+   put_fpr_w0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+
+   return "ltebr";
+}
+
+static HChar *
+s390_irgen_LTDBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, get_fpr_dw0(r2));
+   put_fpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+
+   return "ltdbr";
+}
+
+static HChar *
+s390_irgen_LCEBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, unop(Iop_NegF32, get_fpr_w0(r2)));
+   put_fpr_w0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+
+   return "lcebr";
+}
+
+static HChar *
+s390_irgen_LCDBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_NegF64, get_fpr_dw0(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+
+   return "lcdbr";
+}
+
+static HChar *
+s390_irgen_LDEBR(UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F32);
+
+   assign(op, get_fpr_w0(r2));
+   put_fpr_dw0(r1, unop(Iop_F32toF64, mkexpr(op)));
+
+   return "ldebr";
+}
+
+static HChar *
+s390_irgen_LDEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_F32);
+
+   assign(op, load(Ity_F32, mkexpr(op2addr)));
+   put_fpr_dw0(r1, unop(Iop_F32toF64, mkexpr(op)));
+
+   return "ldeb";
+}
+
+static HChar *
+s390_irgen_LEDBR(UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F64);
+
+   assign(op, get_fpr_dw0(r2));
+   put_fpr_w0(r1, binop(Iop_F64toF32, mkU32(Irrm_NEAREST), mkexpr(op)));
+
+   return "ledbr";
+}
+
+static HChar *
+s390_irgen_MEEBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, get_fpr_w0(r2));
+   assign(result, triop(Iop_MulF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "meebr";
+}
+
+static HChar *
+s390_irgen_MDBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, get_fpr_dw0(r2));
+   assign(result, triop(Iop_MulF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "mdbr";
+}
+
+static HChar *
+s390_irgen_MEEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, load(Ity_F32, mkexpr(op2addr)));
+   assign(result, triop(Iop_MulF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "meeb";
+}
+
+static HChar *
+s390_irgen_MDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, load(Ity_F64, mkexpr(op2addr)));
+   assign(result, triop(Iop_MulF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "mdb";
+}
+
+static HChar *
+s390_irgen_SEBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, get_fpr_w0(r2));
+   assign(result, triop(Iop_SubF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "sebr";
+}
+
+static HChar *
+s390_irgen_SDBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, get_fpr_dw0(r2));
+   assign(result, triop(Iop_SubF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "sdbr";
+}
+
+static HChar *
+s390_irgen_SEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, load(Ity_F32, mkexpr(op2addr)));
+   assign(result, triop(Iop_SubF32, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_32, result);
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "seb";
+}
+
+static HChar *
+s390_irgen_SDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, load(Ity_F64, mkexpr(op2addr)));
+   assign(result, triop(Iop_SubF64, mkU32(Irrm_NEAREST), mkexpr(op1),
+          mkexpr(op2)));
+   s390_cc_thunk_putF(S390_CC_OP_BFP_RESULT_64, result);
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "sdb";
+}
+
+
+static HChar *
+s390_irgen_CLC(UChar length, IRTemp start1, IRTemp start2)
+{
+   IRTemp current1 = newTemp(Ity_I8);
+   IRTemp current2 = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I64);
+
+   assign(counter, get_counter_dw0());
+   put_counter_dw0(mkU64(0));
+
+   assign(current1, load(Ity_I8, binop(Iop_Add64, mkexpr(start1),
+                                       mkexpr(counter))));
+   assign(current2, load(Ity_I8, binop(Iop_Add64, mkexpr(start2),
+                                       mkexpr(counter))));
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, current1, current2,
+                      False);
+
+   /* Both fields differ ? */
+   if_condition_goto(binop(Iop_CmpNE8, mkexpr(current1), mkexpr(current2)),
+                     guest_IA_next_instr);
+
+   /* Check for end of field */
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE64, mkexpr(counter), mkU64(length)),
+                     guest_IA_curr_instr);
+   put_counter_dw0(mkU64(0));
+
+   return "clc";
+}
+
+static HChar *
+s390_irgen_CLCLE(UChar r1, UChar r3, IRTemp pad2)
+{
+   IRTemp addr1, addr3, addr1_load, addr3_load, len1, len3, single1, single3;
+
+   addr1 = newTemp(Ity_I64);
+   addr3 = newTemp(Ity_I64);
+   addr1_load = newTemp(Ity_I64);
+   addr3_load = newTemp(Ity_I64);
+   len1 = newTemp(Ity_I64);
+   len3 = newTemp(Ity_I64);
+   single1 = newTemp(Ity_I8);
+   single3 = newTemp(Ity_I8);
+
+   assign(addr1, get_gpr_dw0(r1));
+   assign(len1, get_gpr_dw0(r1 + 1));
+   assign(addr3, get_gpr_dw0(r3));
+   assign(len3, get_gpr_dw0(r3 + 1));
+
+   /* len1 == 0 and len3 == 0? Exit */
+   s390_cc_set(0);
+   if_condition_goto(binop(Iop_CmpEQ64,binop(Iop_Or64, mkexpr(len1),
+                                             mkexpr(len3)), mkU64(0)),
+                     guest_IA_next_instr);
+
+   /* A mux requires both ways to be possible. This is a way to prevent clcle
+      from reading from addr1 if it should read from the pad. Since the pad
+      has no address, just read from the instruction, we discard that anyway */
+   assign(addr1_load,
+          IRExpr_Mux0X(unop(Iop_1Uto8,
+                            binop(Iop_CmpEQ64, mkexpr(len1), mkU64(0))),
+                       mkexpr(addr1),
+                       mkU64(guest_IA_curr_instr)));
+
+   /* same for addr3 */
+   assign(addr3_load,
+          IRExpr_Mux0X(unop(Iop_1Uto8,
+                            binop(Iop_CmpEQ64, mkexpr(len3), mkU64(0))),
+                       mkexpr(addr3),
+                       mkU64(guest_IA_curr_instr)));
+
+   assign(single1,
+          IRExpr_Mux0X(unop(Iop_1Uto8,
+                            binop(Iop_CmpEQ64, mkexpr(len1), mkU64(0))),
+                       load(Ity_I8, mkexpr(addr1_load)),
+                       unop(Iop_64to8, mkexpr(pad2))));
+
+   assign(single3,
+          IRExpr_Mux0X(unop(Iop_1Uto8,
+                            binop(Iop_CmpEQ64, mkexpr(len3), mkU64(0))),
+                       load(Ity_I8, mkexpr(addr3_load)),
+                       unop(Iop_64to8, mkexpr(pad2))));
+
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, single1, single3, False);
+   /* Both fields differ ? */
+   if_condition_goto(binop(Iop_CmpNE8, mkexpr(single1), mkexpr(single3)),
+                     guest_IA_next_instr);
+
+   /* If a length in 0 we must not change this length and the address */
+   put_gpr_dw0(r1,
+               IRExpr_Mux0X(unop(Iop_1Uto8,
+                                 binop(Iop_CmpEQ64, mkexpr(len1), mkU64(0))),
+                            binop(Iop_Add64, mkexpr(addr1), mkU64(1)),
+                            mkexpr(addr1)));
+
+   put_gpr_dw0(r1 + 1,
+               IRExpr_Mux0X(unop(Iop_1Uto8,
+                                 binop(Iop_CmpEQ64, mkexpr(len1), mkU64(0))),
+                            binop(Iop_Sub64, mkexpr(len1), mkU64(1)),
+                            mkU64(0)));
+
+   put_gpr_dw0(r3,
+               IRExpr_Mux0X(unop(Iop_1Uto8,
+                                 binop(Iop_CmpEQ64, mkexpr(len3), mkU64(0))),
+                            binop(Iop_Add64, mkexpr(addr3), mkU64(1)),
+                            mkexpr(addr3)));
+
+   put_gpr_dw0(r3 + 1,
+               IRExpr_Mux0X(unop(Iop_1Uto8,
+                                 binop(Iop_CmpEQ64, mkexpr(len3), mkU64(0))),
+                            binop(Iop_Sub64, mkexpr(len3), mkU64(1)),
+                            mkU64(0)));
+
+   /* The architecture requires that we exit with CC3 after a machine specific
+      amount of bytes. We do that if len1+len3 % 4096 == 0 */
+   s390_cc_set(3);
+   if_condition_goto(binop(Iop_CmpEQ64,
+                           binop(Iop_And64,
+                                 binop(Iop_Add64, mkexpr(len1), mkexpr(len3)),
+                                 mkU64(0xfff)),
+                           mkU64(0)),
+                     guest_IA_next_instr);
+
+   always_goto(mkU64(guest_IA_curr_instr));
+
+   return "clcle";
+}
+static void
+s390_irgen_XC_EX(IRTemp length, IRTemp start1, IRTemp start2)
+{
+   IRTemp old1 = newTemp(Ity_I8);
+   IRTemp old2 = newTemp(Ity_I8);
+   IRTemp new1 = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I32);
+   IRTemp addr1 = newTemp(Ity_I64);
+
+   assign(counter, get_counter_w0());
+
+   assign(addr1, binop(Iop_Add64, mkexpr(start1),
+                       unop(Iop_32Uto64, mkexpr(counter))));
+
+   assign(old1, load(Ity_I8, mkexpr(addr1)));
+   assign(old2, load(Ity_I8, binop(Iop_Add64, mkexpr(start2),
+                                   unop(Iop_32Uto64,mkexpr(counter)))));
+   assign(new1, binop(Iop_Xor8, mkexpr(old1), mkexpr(old2)));
+
+   store(mkexpr(addr1),
+         IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(start1),
+                                            mkexpr(start2))),
+                      mkexpr(new1), mkU8(0)));
+   put_counter_w1(binop(Iop_Or32, unop(Iop_8Uto32, mkexpr(new1)),
+                        get_counter_w1()));
+
+   /* Check for end of field */
+   put_counter_w0(binop(Iop_Add32, mkexpr(counter), mkU32(1)));
+   if_condition_goto(binop(Iop_CmpNE32, mkexpr(counter), mkexpr(length)),
+                     guest_IA_curr_instr);
+   s390_cc_thunk_put1(S390_CC_OP_BITWISE, mktemp(Ity_I32, get_counter_w1()),
+                      False);
+   put_counter_dw0(mkU64(0));
+}
+
+
+static void
+s390_irgen_CLC_EX(IRTemp length, IRTemp start1, IRTemp start2)
+{
+   IRTemp current1 = newTemp(Ity_I8);
+   IRTemp current2 = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I64);
+
+   assign(counter, get_counter_dw0());
+   put_counter_dw0(mkU64(0));
+
+   assign(current1, load(Ity_I8, binop(Iop_Add64, mkexpr(start1),
+                                       mkexpr(counter))));
+   assign(current2, load(Ity_I8, binop(Iop_Add64, mkexpr(start2),
+                                       mkexpr(counter))));
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, current1, current2,
+                      False);
+
+   /* Both fields differ ? */
+   if_condition_goto(binop(Iop_CmpNE8, mkexpr(current1), mkexpr(current2)),
+                     guest_IA_next_instr);
+
+   /* Check for end of field */
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE64, mkexpr(counter), mkexpr(length)),
+                     guest_IA_curr_instr);
+   put_counter_dw0(mkU64(0));
+}
+
+static void
+s390_irgen_MVC_EX(IRTemp length, IRTemp start1, IRTemp start2)
+{
+   IRTemp counter = newTemp(Ity_I64);
+
+   assign(counter, get_counter_dw0());
+
+   store(binop(Iop_Add64, mkexpr(start1), mkexpr(counter)),
+         load(Ity_I8, binop(Iop_Add64, mkexpr(start2), mkexpr(counter))));
+
+   /* Check for end of field */
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE64, mkexpr(counter), mkexpr(length)),
+                     guest_IA_curr_instr);
+   put_counter_dw0(mkU64(0));
+}
+
+
+
+static void
+s390_irgen_EX_SS(UChar r, IRTemp addr2,
+void (*irgen)(IRTemp length, IRTemp start1, IRTemp start2), int lensize)
+{
+   struct SS {
+      unsigned int op :  8;
+      unsigned int l  :  8;
+      unsigned int b1 :  4;
+      unsigned int d1 : 12;
+      unsigned int b2 :  4;
+      unsigned int d2 : 12;
+   };
+   union {
+      struct SS dec;
+      unsigned long bytes;
+   } ss;
+   IRTemp cond;
+   IRDirty *d;
+   IRTemp torun;
+
+   IRTemp start1 = newTemp(Ity_I64);
+   IRTemp start2 = newTemp(Ity_I64);
+   IRTemp len = newTemp(lensize == 64 ? Ity_I64 : Ity_I32);
+   cond = newTemp(Ity_I1);
+   torun = newTemp(Ity_I64);
+
+   assign(torun, load(Ity_I64, mkexpr(addr2)));
+   /* Start with a check that the saved code is still correct */
+   assign(cond, binop(Iop_CmpNE64, mkexpr(torun), mkU64(last_execute_target)));
+   /* If not, save the new value */
+   d = unsafeIRDirty_0_N (0, "s390x_dirtyhelper_EX", &s390x_dirtyhelper_EX,
+                          mkIRExprVec_1(mkexpr(torun)));
+   d->guard = mkexpr(cond);
+   stmt(IRStmt_Dirty(d));
+
+   /* and restart */
+   stmt(IRStmt_Put(OFFB_TISTART, mkU64(guest_IA_curr_instr)));
+   stmt(IRStmt_Put(OFFB_TILEN, mkU64(4)));
+   stmt(IRStmt_Exit(mkexpr(cond), Ijk_TInval,
+        IRConst_U64(guest_IA_curr_instr)));
+
+   ss.bytes = last_execute_target;
+   assign(start1, binop(Iop_Add64, mkU64(ss.dec.d1),
+          ss.dec.b1 != 0 ? get_gpr_dw0(ss.dec.b1) : mkU64(0)));
+   assign(start2, binop(Iop_Add64, mkU64(ss.dec.d2),
+          ss.dec.b2 != 0 ? get_gpr_dw0(ss.dec.b2) : mkU64(0)));
+   assign(len, unop(lensize == 64 ? Iop_8Uto64 : Iop_8Uto32, binop(Iop_Or8,
+          r != 0 ? get_gpr_b7(r): mkU8(0), mkU8(ss.dec.l))));
+   irgen(len, start1, start2);
+   last_execute_target = 0;
+}
+
+static HChar *
+s390_irgen_EX(UChar r1, IRTemp addr2)
+{
+   switch(last_execute_target & 0xff00000000000000ULL) {
+   case 0:
+   {
+      /* no code information yet */
+      IRDirty *d;
+
+      /* so safe the code... */
+      d = unsafeIRDirty_0_N (0, "s390x_dirtyhelper_EX", &s390x_dirtyhelper_EX,
+                             mkIRExprVec_1(load(Ity_I64, mkexpr(addr2))));
+      stmt(IRStmt_Dirty(d));
+      /* and restart */
+      stmt(IRStmt_Put(OFFB_TISTART, mkU64(guest_IA_curr_instr)));
+      stmt(IRStmt_Put(OFFB_TILEN, mkU64(4)));
+      stmt(IRStmt_Exit(IRExpr_Const(IRConst_U1(True)), Ijk_TInval,
+           IRConst_U64(guest_IA_curr_instr)));
+      /* we know that this will be invalidated */
+      irsb->next = mkU64(guest_IA_next_instr);
+      dis_res->whatNext = Dis_StopHere;
+      break;
+   }
+
+   case 0xd200000000000000ULL:
+      /* special case MVC */
+      s390_irgen_EX_SS(r1, addr2, s390_irgen_MVC_EX, 64);
+      return "mvc via ex";
+
+   case 0xd500000000000000ULL:
+      /* special case CLC */
+      s390_irgen_EX_SS(r1, addr2, s390_irgen_CLC_EX, 64);
+      return "clc via ex";
+
+   case 0xd700000000000000ULL:
+      /* special case XC */
+      s390_irgen_EX_SS(r1, addr2, s390_irgen_XC_EX, 32);
+      return "xc via ex";
+
+
+   default:
+   {
+      /* everything else will get a self checking prefix that also checks the
+         register content */
+      IRDirty *d;
+      UChar *bytes;
+      IRTemp cond;
+      IRTemp orperand;
+      IRTemp torun;
+
+      cond = newTemp(Ity_I1);
+      orperand = newTemp(Ity_I64);
+      torun = newTemp(Ity_I64);
+
+      if (r1 == 0)
+         assign(orperand, mkU64(0));
+      else
+         assign(orperand, unop(Iop_8Uto64,get_gpr_b7(r1)));
+      /* This code is going to be translated */
+      assign(torun, binop(Iop_Or64, load(Ity_I64, mkexpr(addr2)),
+             binop(Iop_Shl64, mkexpr(orperand), mkU8(48))));
+
+      /* Start with a check that saved code is still correct */
+      assign(cond, binop(Iop_CmpNE64, mkexpr(torun),
+             mkU64(last_execute_target)));
+      /* If not, save the new value */
+      d = unsafeIRDirty_0_N (0, "s390x_dirtyhelper_EX", &s390x_dirtyhelper_EX,
+                             mkIRExprVec_1(mkexpr(torun)));
+      d->guard = mkexpr(cond);
+      stmt(IRStmt_Dirty(d));
+
+      /* and restart */
+      stmt(IRStmt_Put(OFFB_TISTART, mkU64(guest_IA_curr_instr)));
+      stmt(IRStmt_Put(OFFB_TILEN, mkU64(4)));
+      stmt(IRStmt_Exit(mkexpr(cond), Ijk_TInval,
+           IRConst_U64(guest_IA_curr_instr)));
+
+      /* Now comes the actual translation */
+      bytes = (UChar *) &last_execute_target;
+      s390_decode_and_irgen(bytes, ((((bytes[0] >> 6) + 1) >> 1) + 1) << 1,
+                            dis_res);
+      if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+         vex_printf("    which was executed by\n");
+      /* dont make useless translations in the next execute */
+      last_execute_target = 0;
+   }
+   }
+   return "ex";
+}
+
+static HChar *
+s390_irgen_EXRL(UChar r1, UInt offset)
+{
+   IRTemp addr = newTemp(Ity_I64);
+   /* we might save one round trip because we know the target */
+   if (!last_execute_target)
+      last_execute_target = *(ULong *)(HWord)
+                             (guest_IA_curr_instr + offset * 2UL);
+   assign(addr, mkU64(guest_IA_curr_instr + offset * 2UL));
+   s390_irgen_EX(r1, addr);
+   return "exrl";
+}
+
+static HChar *
+s390_irgen_IPM(UChar r1)
+{
+   // As long as we dont support SPM, lets just assume 0 as program mask
+   put_gpr_b4(r1, unop(Iop_32to8, binop(Iop_Or32, mkU32(0 /* program mask */),
+                       binop(Iop_Shl32, s390_call_calculate_cc(), mkU8(4)))));
+
+   return "ipm";
+}
+
+
+static HChar *
+s390_irgen_SRST(UChar r1, UChar r2)
+{
+   IRTemp address = newTemp(Ity_I64);
+   IRTemp next = newTemp(Ity_I64);
+   IRTemp delim = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I64);
+   IRTemp byte = newTemp(Ity_I8);
+
+   assign(address, get_gpr_dw0(r2));
+   assign(next, get_gpr_dw0(r1));
+
+   assign(counter, get_counter_dw0());
+   put_counter_dw0(mkU64(0));
+
+   // start = next?  CC=2 and out r1 and r2 unchanged
+   s390_cc_set(2);
+   put_gpr_dw0(r2, binop(Iop_Sub64, mkexpr(address), mkexpr(counter)));
+   if_condition_goto(binop(Iop_CmpEQ64, mkexpr(address), mkexpr(next)),
+                     guest_IA_next_instr);
+
+   assign(byte, load(Ity_I8, mkexpr(address)));
+   assign(delim, get_gpr_b7(0));
+
+   // byte = delim? CC=1, R1=address
+   s390_cc_set(1);
+   put_gpr_dw0(r1,  mkexpr(address));
+   if_condition_goto(binop(Iop_CmpEQ8, mkexpr(delim), mkexpr(byte)),
+                     guest_IA_next_instr);
+
+   // else: all equal, no end yet, loop
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   put_gpr_dw0(r1, mkexpr(next));
+   put_gpr_dw0(r2, binop(Iop_Add64, mkexpr(address), mkU64(1)));
+   stmt(IRStmt_Exit(binop(Iop_CmpNE64, mkexpr(counter), mkU64(255)),
+                    Ijk_Boring, IRConst_U64(guest_IA_curr_instr)));
+   // >= 256 bytes done CC=3
+   s390_cc_set(3);
+   put_counter_dw0(mkU64(0));
+
+   return "srst";
+}
+
+static HChar *
+s390_irgen_CLST(UChar r1, UChar r2)
+{
+   IRTemp address1 = newTemp(Ity_I64);
+   IRTemp address2 = newTemp(Ity_I64);
+   IRTemp end = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I64);
+   IRTemp byte1 = newTemp(Ity_I8);
+   IRTemp byte2 = newTemp(Ity_I8);
+
+   assign(address1, get_gpr_dw0(r1));
+   assign(address2, get_gpr_dw0(r2));
+   assign(end, get_gpr_b7(0));
+   assign(counter, get_counter_dw0());
+   put_counter_dw0(mkU64(0));
+   assign(byte1, load(Ity_I8, mkexpr(address1)));
+   assign(byte2, load(Ity_I8, mkexpr(address2)));
+
+   // end in both? all equal, reset r1 and r2 to start values
+   s390_cc_set(0);
+   put_gpr_dw0(r1, binop(Iop_Sub64, mkexpr(address1), mkexpr(counter)));
+   put_gpr_dw0(r2, binop(Iop_Sub64, mkexpr(address2), mkexpr(counter)));
+   if_condition_goto(binop(Iop_CmpEQ8, mkU8(0),
+                           binop(Iop_Or8,
+                                 binop(Iop_Xor8, mkexpr(byte1), mkexpr(end)),
+                                 binop(Iop_Xor8, mkexpr(byte2), mkexpr(end)))),
+                     guest_IA_next_instr);
+
+   put_gpr_dw0(r1, mkexpr(address1));
+   put_gpr_dw0(r2, mkexpr(address2));
+
+   // End found in string1
+   s390_cc_set(1);
+   if_condition_goto(binop(Iop_CmpEQ8, mkexpr(end), mkexpr(byte1)),
+                     guest_IA_next_instr);
+
+   // End found in string2
+   s390_cc_set(2);
+   if_condition_goto(binop(Iop_CmpEQ8, mkexpr(end), mkexpr(byte2)),
+                     guest_IA_next_instr);
+
+   // string1 < string2
+   s390_cc_set(1);
+   if_condition_goto(binop(Iop_CmpLT32U, unop(Iop_8Uto32, mkexpr(byte1)),
+                           unop(Iop_8Uto32, mkexpr(byte2))),
+                     guest_IA_next_instr);
+
+   // string2 < string1
+   s390_cc_set(2);
+   if_condition_goto(binop(Iop_CmpLT32U, unop(Iop_8Uto32, mkexpr(byte2)),
+                           unop(Iop_8Uto32, mkexpr(byte1))),
+                     guest_IA_next_instr);
+
+   // else: all equal, no end yet, loop
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), mkU64(1)));
+   put_gpr_dw0(r2, binop(Iop_Add64, get_gpr_dw0(r2), mkU64(1)));
+   stmt(IRStmt_Exit(binop(Iop_CmpNE64, mkexpr(counter), mkU64(255)),
+                    Ijk_Boring, IRConst_U64(guest_IA_curr_instr)));
+   // >= 256 bytes done CC=3
+   s390_cc_set(3);
+   put_counter_dw0(mkU64(0));
+
+   return "clst";
+}
+
+static void
+s390_irgen_load_multiple_32bit(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      put_gpr_w1(reg, load(Ity_I32, mkexpr(addr)));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while (reg != (r3 + 1));
+}
+
+static HChar *
+s390_irgen_LM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_load_multiple_32bit(r1, r3, op2addr);
+
+   return "lm";
+}
+
+static HChar *
+s390_irgen_LMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_load_multiple_32bit(r1, r3, op2addr);
+
+   return "lmy";
+}
+
+static HChar *
+s390_irgen_LMH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      put_gpr_w0(reg, load(Ity_I32, mkexpr(addr)));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while (reg != (r3 + 1));
+
+   return "lmh";
+}
+
+static HChar *
+s390_irgen_LMG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      put_gpr_dw0(reg, load(Ity_I64, mkexpr(addr)));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(8)));
+      reg++;
+   } while (reg != (r3 + 1));
+
+   return "lmg";
+}
+
+static void
+s390_irgen_store_multiple_32bit(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      store(mkexpr(addr), get_gpr_w1(reg));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while( reg != (r3 + 1));
+}
+
+static HChar *
+s390_irgen_STM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_store_multiple_32bit(r1, r3, op2addr);
+
+   return "stm";
+}
+
+static HChar *
+s390_irgen_STMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_store_multiple_32bit(r1, r3, op2addr);
+
+   return "stmy";
+}
+
+static HChar *
+s390_irgen_STMH(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      store(mkexpr(addr), get_gpr_w0(reg));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while( reg != (r3 + 1));
+
+   return "stmh";
+}
+
+static HChar *
+s390_irgen_STMG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      store(mkexpr(addr), get_gpr_dw0(reg));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(8)));
+      reg++;
+   } while( reg != (r3 + 1));
+
+   return "stmg";
+}
+
+static void
+s390_irgen_XONC(IROp op, UChar length, IRTemp start1, IRTemp start2)
+{
+   IRTemp old1 = newTemp(Ity_I8);
+   IRTemp old2 = newTemp(Ity_I8);
+   IRTemp new1 = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I32);
+   IRTemp addr1 = newTemp(Ity_I64);
+
+   assign(counter, get_counter_w0());
+
+   assign(addr1, binop(Iop_Add64, mkexpr(start1),
+                       unop(Iop_32Uto64, mkexpr(counter))));
+
+   assign(old1, load(Ity_I8, mkexpr(addr1)));
+   assign(old2, load(Ity_I8, binop(Iop_Add64, mkexpr(start2),
+                                   unop(Iop_32Uto64,mkexpr(counter)))));
+   assign(new1, binop(op, mkexpr(old1), mkexpr(old2)));
+
+   /* Special case: xc is used to zero memory */
+   if (op == Iop_Xor8) {
+      store(mkexpr(addr1),
+            IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(start1),
+                                               mkexpr(start2))),
+                         mkexpr(new1), mkU8(0)));
+   } else
+      store(mkexpr(addr1), mkexpr(new1));
+   put_counter_w1(binop(Iop_Or32, unop(Iop_8Uto32, mkexpr(new1)),
+                        get_counter_w1()));
+
+   /* Check for end of field */
+   put_counter_w0(binop(Iop_Add32, mkexpr(counter), mkU32(1)));
+   if_condition_goto(binop(Iop_CmpNE32, mkexpr(counter), mkU32(length)),
+                     guest_IA_curr_instr);
+   s390_cc_thunk_put1(S390_CC_OP_BITWISE, mktemp(Ity_I32, get_counter_w1()),
+                      False);
+   put_counter_dw0(mkU64(0));
+}
+
+static HChar *
+s390_irgen_XC(UChar length, IRTemp start1, IRTemp start2)
+{
+   s390_irgen_XONC(Iop_Xor8, length, start1, start2);
+
+   return "xc";
+}
+
+static void
+s390_irgen_XC_sameloc(UChar length, UChar b, UShort d)
+{
+   IRTemp counter = newTemp(Ity_I32);
+   IRTemp start = newTemp(Ity_I64);
+   IRTemp addr  = newTemp(Ity_I64);
+
+   assign(start,
+          binop(Iop_Add64, mkU64(d), b != 0 ? get_gpr_dw0(b) : mkU64(0)));
+
+   if (length < 8) {
+      UInt i;
+
+      for (i = 0; i <= length; ++i) {
+         store(binop(Iop_Add64, mkexpr(start), mkU64(i)), mkU8(0));
+      }
+   } else {
+     assign(counter, get_counter_w0());
+
+     assign(addr, binop(Iop_Add64, mkexpr(start),
+                        unop(Iop_32Uto64, mkexpr(counter))));
+
+     store(mkexpr(addr), mkU8(0));
+
+     /* Check for end of field */
+     put_counter_w0(binop(Iop_Add32, mkexpr(counter), mkU32(1)));
+     if_condition_goto(binop(Iop_CmpNE32, mkexpr(counter), mkU32(length)),
+                       guest_IA_curr_instr);
+
+     /* Reset counter */
+     put_counter_dw0(mkU64(0));
+   }
+
+   s390_cc_thunk_put1(S390_CC_OP_BITWISE, mktemp(Ity_I32, mkU32(0)), False);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_FE))
+      s390_disasm(ENC3(MNM, UDLB, UDXB), "xc", d, length, b, d, 0, b);
+}
+
+static HChar *
+s390_irgen_NC(UChar length, IRTemp start1, IRTemp start2)
+{
+   s390_irgen_XONC(Iop_And8, length, start1, start2);
+
+   return "nc";
+}
+
+static HChar *
+s390_irgen_OC(UChar length, IRTemp start1, IRTemp start2)
+{
+   s390_irgen_XONC(Iop_Or8, length, start1, start2);
+
+   return "oc";
+}
+
+
+static HChar *
+s390_irgen_MVC(UChar length, IRTemp start1, IRTemp start2)
+{
+   IRTemp counter = newTemp(Ity_I64);
+
+   assign(counter, get_counter_dw0());
+
+   store(binop(Iop_Add64, mkexpr(start1), mkexpr(counter)),
+         load(Ity_I8, binop(Iop_Add64, mkexpr(start2), mkexpr(counter))));
+
+   /* Check for end of field */
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE64, mkexpr(counter), mkU64(length)),
+                     guest_IA_curr_instr);
+   put_counter_dw0(mkU64(0));
+
+   return "mvc";
+}
+
+static HChar *
+s390_irgen_MVCLE(UChar r1, UChar r3, IRTemp pad2)
+{
+   IRTemp addr1, addr3, addr3_load, len1, len3, single;
+
+   addr1 = newTemp(Ity_I64);
+   addr3 = newTemp(Ity_I64);
+   addr3_load = newTemp(Ity_I64);
+   len1 = newTemp(Ity_I64);
+   len3 = newTemp(Ity_I64);
+   single = newTemp(Ity_I8);
+
+   assign(addr1, get_gpr_dw0(r1));
+   assign(len1, get_gpr_dw0(r1 + 1));
+   assign(addr3, get_gpr_dw0(r3));
+   assign(len3, get_gpr_dw0(r3 + 1));
+
+   // len1 == 0 ?
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, len1, len3, False);
+   if_condition_goto(binop(Iop_CmpEQ64,mkexpr(len1), mkU64(0)),
+                     guest_IA_next_instr);
+
+   /* This is a hack to prevent mvcle from reading from addr3 if it
+      should read from the pad. Since the pad has no address, just
+      read from the instruction, we discard that anyway */
+   assign(addr3_load,
+          IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(len3),
+                                             mkU64(0))),
+                       mkexpr(addr3),
+                       mkU64(guest_IA_curr_instr)));
+
+   assign(single,
+          IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(len3),
+                                             mkU64(0))),
+                       load(Ity_I8, mkexpr(addr3_load)),
+                       unop(Iop_64to8, mkexpr(pad2))));
+   store(mkexpr(addr1), mkexpr(single));
+
+   put_gpr_dw0(r1, binop(Iop_Add64, mkexpr(addr1), mkU64(1)));
+
+   put_gpr_dw0(r1 + 1, binop(Iop_Sub64, mkexpr(len1), mkU64(1)));
+
+   put_gpr_dw0(r3,
+               IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(len3),
+                                                  mkU64(0))),
+                            binop(Iop_Add64, mkexpr(addr3), mkU64(1)),
+                            mkexpr(addr3)));
+
+   put_gpr_dw0(r3 + 1,
+               IRExpr_Mux0X(unop(Iop_1Uto8, binop(Iop_CmpEQ64, mkexpr(len3),
+                                                  mkU64(0))),
+                            binop(Iop_Sub64, mkexpr(len3), mkU64(1)),
+                            mkU64(0)));
+
+   /* We should set CC=3 (faked by overflow add) and leave after
+      a maximum of ~4096 bytes have been processed. This is simpler:
+      we leave whenever (len1 % 4096) == 0 */
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_ADD_64, mktemp(Ity_I64, mkU64(-1ULL)),
+
+                      mktemp(Ity_I64, mkU64(-1ULL)), False);
+   if_condition_goto(binop(Iop_CmpEQ64,
+                           binop(Iop_And64, mkexpr(len1), mkU64(0xfff)),
+                           mkU64(0)),
+                     guest_IA_next_instr);
+
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, len1, len3, False);
+   if_condition_goto(binop(Iop_CmpNE64, mkexpr(len1), mkU64(1)),
+                     guest_IA_curr_instr);
+
+   return "mvcle";
+}
+
+static HChar *
+s390_irgen_MVST(UChar r1, UChar r2)
+{
+   IRTemp addr1 = newTemp(Ity_I64);
+   IRTemp addr2 = newTemp(Ity_I64);
+   IRTemp end = newTemp(Ity_I8);
+   IRTemp byte = newTemp(Ity_I8);
+   IRTemp counter = newTemp(Ity_I64);
+
+   assign(addr1, get_gpr_dw0(r1));
+   assign(addr2, get_gpr_dw0(r2));
+   assign(counter, get_counter_dw0());
+   assign(end, get_gpr_b7(0));
+   assign(byte, load(Ity_I8, binop(Iop_Add64, mkexpr(addr2),mkexpr(counter))));
+   store(binop(Iop_Add64,mkexpr(addr1),mkexpr(counter)), mkexpr(byte));
+
+   // We use unlimited as cpu-determined number
+   put_counter_dw0(binop(Iop_Add64, mkexpr(counter), mkU64(1)));
+   if_condition_goto(binop(Iop_CmpNE8, mkexpr(end), mkexpr(byte)),
+                     guest_IA_curr_instr);
+
+   // and always set cc=1 at the end + update r1
+   s390_cc_set(1);
+   put_gpr_dw0(r1, binop(Iop_Add64, mkexpr(addr1), mkexpr(counter)));
+   put_counter_dw0(mkU64(0));
+
+   return "mvst";
+}
+
+static void
+s390_irgen_divide_64to32(IROp op, UChar r1, IRTemp op2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op1, binop(Iop_32HLto64,
+                     get_gpr_w1(r1),         // high 32 bits
+                     get_gpr_w1(r1 + 1)));   // low  32 bits
+   assign(result, binop(op, mkexpr(op1), mkexpr(op2)));
+   put_gpr_w1(r1, unop(Iop_64HIto32, mkexpr(result)));   // remainder
+   put_gpr_w1(r1 + 1, unop(Iop_64to32, mkexpr(result))); // quotient
+}
+
+static void
+s390_irgen_divide_128to64(IROp op, UChar r1, IRTemp op2)
+{
+   IRTemp op1 = newTemp(Ity_I128);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, binop(Iop_64HLto128,
+                     get_gpr_dw0(r1),         // high 64 bits
+                     get_gpr_dw0(r1 + 1)));   // low  64 bits
+   assign(result, binop(op, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128HIto64, mkexpr(result)));   // remainder
+   put_gpr_dw0(r1 + 1, unop(Iop_128to64, mkexpr(result))); // quotient
+}
+
+static void
+s390_irgen_divide_64to64(IROp op, UChar r1, IRTemp op2)
+{
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I128);
+
+   assign(op1, get_gpr_dw0(r1 + 1));
+   assign(result, binop(op, mkexpr(op1), mkexpr(op2)));
+   put_gpr_dw0(r1, unop(Iop_128HIto64, mkexpr(result)));   // remainder
+   put_gpr_dw0(r1 + 1, unop(Iop_128to64, mkexpr(result))); // quotient
+}
+
+static HChar *
+s390_irgen_DR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+
+   s390_irgen_divide_64to32(Iop_DivModS64to32, r1, op2);
+
+   return "dr";
+}
+
+static HChar *
+s390_irgen_D(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+
+   s390_irgen_divide_64to32(Iop_DivModS64to32, r1, op2);
+
+   return "d";
+}
+
+static HChar *
+s390_irgen_DLR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+
+   s390_irgen_divide_64to32(Iop_DivModU64to32, r1, op2);
+
+   return "dr";
+}
+
+static HChar *
+s390_irgen_DL(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, load(Ity_I32, mkexpr(op2addr)));
+
+   s390_irgen_divide_64to32(Iop_DivModU64to32, r1, op2);
+
+   return "dl";
+}
+
+static HChar *
+s390_irgen_DLG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+
+   s390_irgen_divide_128to64(Iop_DivModU128to64, r1, op2);
+
+   return "dlg";
+}
+
+static HChar *
+s390_irgen_DLGR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+
+   s390_irgen_divide_128to64(Iop_DivModU128to64, r1, op2);
+
+   return "dlgr";
+}
+
+static HChar *
+s390_irgen_DSGR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+
+   s390_irgen_divide_64to64(Iop_DivModS64to64, r1, op2);
+
+   return "dsgr";
+}
+
+static HChar *
+s390_irgen_DSG(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, load(Ity_I64, mkexpr(op2addr)));
+
+   s390_irgen_divide_64to64(Iop_DivModS64to64, r1, op2);
+
+   return "dsg";
+}
+
+static HChar *
+s390_irgen_DSGFR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, get_gpr_w1(r2)));
+
+   s390_irgen_divide_64to64(Iop_DivModS64to64, r1, op2);
+
+   return "dsgfr";
+}
+
+static HChar *
+s390_irgen_DSGF(UChar r1, IRTemp op2addr)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkexpr(op2addr))));
+
+   s390_irgen_divide_64to64(Iop_DivModS64to64, r1, op2);
+
+   return "dsgf";
+}
+
+static void
+s390_irgen_load_ar_multiple(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      put_ar_w0(reg, load(Ity_I32, mkexpr(addr)));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while (reg != (r3 + 1));
+}
+
+static HChar *
+s390_irgen_LAM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_load_ar_multiple(r1, r3, op2addr);
+
+   return "lam";
+}
+
+static HChar *
+s390_irgen_LAMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_load_ar_multiple(r1, r3, op2addr);
+
+   return "lamy";
+}
+
+static void
+s390_irgen_store_ar_multiple(UChar r1, UChar r3, IRTemp op2addr)
+{
+   UChar reg;
+   IRTemp addr = newTemp(Ity_I64);
+
+   assign(addr, mkexpr(op2addr));
+   reg = r1;
+   do {
+      IRTemp old = addr;
+
+      reg %= 16;
+      store(mkexpr(addr), get_ar_w0(reg));
+      addr = newTemp(Ity_I64);
+      assign(addr, binop(Iop_Add64, mkexpr(old), mkU64(4)));
+      reg++;
+   } while (reg != (r3 + 1));
+}
+
+static HChar *
+s390_irgen_STAM(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_store_ar_multiple(r1, r3, op2addr);
+
+   return "stam";
+}
+
+static HChar *
+s390_irgen_STAMY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_store_ar_multiple(r1, r3, op2addr);
+
+   return "stamy";
+}
+
+
+/* Implementation for 32-bit compare-and-swap */
+static void
+s390_irgen_cas_32(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRCAS *cas;
+   IRTemp op1 = newTemp(Ity_I32);
+   IRTemp old_mem = newTemp(Ity_I32);
+   IRTemp op3 = newTemp(Ity_I32);
+   IRTemp result = newTemp(Ity_I32);
+   IRTemp nequal = newTemp(Ity_I1);
+
+   assign(op1, get_gpr_w1(r1));
+   assign(op3, get_gpr_w1(r3));
+
+   /* The first and second operands are compared. If they are equal,
+      the third operand is stored at the second- operand location. */
+   cas = mkIRCAS(IRTemp_INVALID, old_mem,
+                 Iend_BE, mkexpr(op2addr),
+                 NULL, mkexpr(op1), /* expected value */
+                 NULL, mkexpr(op3)  /* new value */);
+   stmt(IRStmt_CAS(cas));
+
+   /* Set CC. Operands compared equal -> 0, else 1. */
+   assign(result, binop(Iop_Sub32, mkexpr(op1), mkexpr(old_mem)));
+   s390_cc_thunk_put1(S390_CC_OP_BITWISE, result, False);
+
+   /* If operands were equal (cc == 0) just store the old value op1 in r1.
+      Otherwise, store the old_value from memory in r1 and yield. */
+   assign(nequal, binop(Iop_CmpNE32, s390_call_calculate_cc(), mkU32(0)));
+   put_gpr_w1(r1, mkite(mkexpr(nequal), mkexpr(old_mem), mkexpr(op1)));
+   stmt(IRStmt_Exit(mkexpr(nequal), Ijk_Yield,
+        IRConst_U64(guest_IA_next_instr)));
+}
+
+static HChar *
+s390_irgen_CS(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_cas_32(r1, r3, op2addr);
+
+   return "cs";
+}
+
+static HChar *
+s390_irgen_CSY(UChar r1, UChar r3, IRTemp op2addr)
+{
+   s390_irgen_cas_32(r1, r3, op2addr);
+
+   return "csy";
+}
+
+static HChar *
+s390_irgen_CSG(UChar r1, UChar r3, IRTemp op2addr)
+{
+   IRCAS *cas;
+   IRTemp op1 = newTemp(Ity_I64);
+   IRTemp old_mem = newTemp(Ity_I64);
+   IRTemp op3 = newTemp(Ity_I64);
+   IRTemp result = newTemp(Ity_I64);
+   IRTemp nequal = newTemp(Ity_I1);
+
+   assign(op1, get_gpr_dw0(r1));
+   assign(op3, get_gpr_dw0(r3));
+
+   /* The first and second operands are compared. If they are equal,
+      the third operand is stored at the second- operand location. */
+   cas = mkIRCAS(IRTemp_INVALID, old_mem,
+                 Iend_BE, mkexpr(op2addr),
+                 NULL, mkexpr(op1), /* expected value */
+                 NULL, mkexpr(op3)  /* new value */);
+   stmt(IRStmt_CAS(cas));
+
+   /* Set CC. Operands compared equal -> 0, else 1. */
+   assign(result, binop(Iop_Sub64, mkexpr(op1), mkexpr(old_mem)));
+   s390_cc_thunk_put1(S390_CC_OP_BITWISE, result, False);
+
+   /* If operands were equal (cc == 0) just store the old value op1 in r1.
+      Otherwise, store the old_value from memory in r1 and yield. */
+   assign(nequal, binop(Iop_CmpNE32, s390_call_calculate_cc(), mkU32(0)));
+   put_gpr_dw0(r1, mkite(mkexpr(nequal), mkexpr(old_mem), mkexpr(op1)));
+   stmt(IRStmt_Exit(mkexpr(nequal), Ijk_Yield,
+        IRConst_U64(guest_IA_next_instr)));
+
+   return "csg";
+}
+
+
+/* Binary floating point */
+
+static HChar *
+s390_irgen_AXBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F128);
+   IRTemp op2 = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(op1, get_fpr_pair(r1));
+   assign(op2, get_fpr_pair(r2));
+   assign(result, triop(Iop_AddF128, mkU32(Irrm_NEAREST), mkexpr(op1),
+                        mkexpr(op2)));
+   put_fpr_pair(r1, mkexpr(result));
+
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "axbr";
+}
+
+/* The result of a Iop_CmdFxx operation is a condition code. It is
+   encoded using the values defined in type IRCmpFxxResult.
+   Before we can store the condition code into the guest state (or do
+   anything else with it for that matter) we need to convert it to
+   the encoding that s390 uses. This is what this function does.
+
+   s390     VEX                b6 b2 b0   cc.1  cc.0
+   0      0x40 EQ             1  0  0     0     0
+   1      0x01 LT             0  0  1     0     1
+   2      0x00 GT             0  0  0     1     0
+   3      0x45 Unordered      1  1  1     1     1
+
+   The following bits from the VEX encoding are interesting:
+   b0, b2, b6  with b0 being the LSB. We observe:
+
+   cc.0 = b0;
+   cc.1 = b2 | (~b0 & ~b6)
+
+   with cc being the s390 condition code.
+*/
+static IRExpr *
+convert_vex_fpcc_to_s390(IRTemp vex_cc)
+{
+   IRTemp cc0  = newTemp(Ity_I32);
+   IRTemp cc1  = newTemp(Ity_I32);
+   IRTemp b0   = newTemp(Ity_I32);
+   IRTemp b2   = newTemp(Ity_I32);
+   IRTemp b6   = newTemp(Ity_I32);
+
+   assign(b0, binop(Iop_And32, mkexpr(vex_cc), mkU32(1)));
+   assign(b2, binop(Iop_And32, binop(Iop_Shr32, mkexpr(vex_cc), mkU8(2)),
+                    mkU32(1)));
+   assign(b6, binop(Iop_And32, binop(Iop_Shr32, mkexpr(vex_cc), mkU8(6)),
+                    mkU32(1)));
+
+   assign(cc0, mkexpr(b0));
+   assign(cc1, binop(Iop_Or32, mkexpr(b2),
+                     binop(Iop_And32,
+                           binop(Iop_Sub32, mkU32(1), mkexpr(b0)), /* ~b0 */
+                           binop(Iop_Sub32, mkU32(1), mkexpr(b6))  /* ~b6 */
+                           )));
+
+   return binop(Iop_Or32, mkexpr(cc0), binop(Iop_Shl32, mkexpr(cc1), mkU8(1)));
+}
+
+static HChar *
+s390_irgen_CEBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp cc_vex  = newTemp(Ity_I32);
+   IRTemp cc_s390 = newTemp(Ity_I32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, get_fpr_w0(r2));
+   assign(cc_vex, binop(Iop_CmpF32, mkexpr(op1), mkexpr(op2)));
+
+   assign(cc_s390, convert_vex_fpcc_to_s390(cc_vex));
+   s390_cc_thunk_put1(S390_CC_OP_SET, cc_s390, False);
+
+   return "cebr";
+}
+
+static HChar *
+s390_irgen_CDBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp cc_vex  = newTemp(Ity_I32);
+   IRTemp cc_s390 = newTemp(Ity_I32);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, get_fpr_dw0(r2));
+   assign(cc_vex, binop(Iop_CmpF64, mkexpr(op1), mkexpr(op2)));
+
+   assign(cc_s390, convert_vex_fpcc_to_s390(cc_vex));
+   s390_cc_thunk_put1(S390_CC_OP_SET, cc_s390, False);
+
+   return "cdbr";
+}
+
+static HChar *
+s390_irgen_CXBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F128);
+   IRTemp op2 = newTemp(Ity_F128);
+   IRTemp cc_vex  = newTemp(Ity_I32);
+   IRTemp cc_s390 = newTemp(Ity_I32);
+
+   assign(op1, get_fpr_pair(r1));
+   assign(op2, get_fpr_pair(r2));
+   assign(cc_vex, binop(Iop_CmpF128, mkexpr(op1), mkexpr(op2)));
+
+   assign(cc_s390, convert_vex_fpcc_to_s390(cc_vex));
+   s390_cc_thunk_put1(S390_CC_OP_SET, cc_s390, False);
+
+   return "cxbr";
+}
+
+static HChar *
+s390_irgen_CEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F32);
+   IRTemp op2 = newTemp(Ity_F32);
+   IRTemp cc_vex  = newTemp(Ity_I32);
+   IRTemp cc_s390 = newTemp(Ity_I32);
+
+   assign(op1, get_fpr_w0(r1));
+   assign(op2, load(Ity_F32, mkexpr(op2addr)));
+   assign(cc_vex,  binop(Iop_CmpF32, mkexpr(op1), mkexpr(op2)));
+
+   assign(cc_s390, convert_vex_fpcc_to_s390(cc_vex));
+   s390_cc_thunk_put1(S390_CC_OP_SET, cc_s390, False);
+
+   return "ceb";
+}
+
+static HChar *
+s390_irgen_CDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op1 = newTemp(Ity_F64);
+   IRTemp op2 = newTemp(Ity_F64);
+   IRTemp cc_vex  = newTemp(Ity_I32);
+   IRTemp cc_s390 = newTemp(Ity_I32);
+
+   assign(op1, get_fpr_dw0(r1));
+   assign(op2, load(Ity_F64, mkexpr(op2addr)));
+   assign(cc_vex, binop(Iop_CmpF64, mkexpr(op1), mkexpr(op2)));
+
+   assign(cc_s390, convert_vex_fpcc_to_s390(cc_vex));
+   s390_cc_thunk_put1(S390_CC_OP_SET, cc_s390, False);
+
+   return "cdb";
+}
+
+static HChar *
+s390_irgen_CXFBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I32);
+
+   assign(op2, get_gpr_w1(r2));
+   put_fpr_pair(r1, unop(Iop_I32StoF128, mkexpr(op2)));
+
+   return "cxfbr";
+}
+
+static HChar *
+s390_irgen_CXGBR(UChar r1, UChar r2)
+{
+   IRTemp op2 = newTemp(Ity_I64);
+
+   assign(op2, get_gpr_dw0(r2));
+   put_fpr_pair(r1, unop(Iop_I64StoF128, mkexpr(op2)));
+
+   return "cxgbr";
+}
+
+static HChar *
+s390_irgen_CFXBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_I32);
+
+   assign(op, get_fpr_pair(r2));
+   assign(result, binop(Iop_F128toI32S, mkU32(encode_rounding_mode(r3)),
+                        mkexpr(op)));
+   put_gpr_w1(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_128_TO_INT_32, op);
+
+   return "cfxbr";
+}
+
+static HChar *
+s390_irgen_CGXBR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_I64);
+
+   assign(op, get_fpr_pair(r2));
+   assign(result, binop(Iop_F128toI64S, mkU32(encode_rounding_mode(r3)),
+                        mkexpr(op)));
+   put_gpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_128_TO_INT_64, op);
+
+   return "cgxbr";
+}
+
+static HChar *
+s390_irgen_DXBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F128);
+   IRTemp op2 = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(op1, get_fpr_pair(r1));
+   assign(op2, get_fpr_pair(r2));
+   assign(result, triop(Iop_DivF128, mkU32(Irrm_NEAREST), mkexpr(op1),
+                        mkexpr(op2)));
+   put_fpr_pair(r1, mkexpr(result));
+
+   return "dxbr";
+}
+
+static HChar *
+s390_irgen_LTXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(result, get_fpr_pair(r2));
+   put_fpr_pair(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "ltxbr";
+}
+
+static HChar *
+s390_irgen_LCXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(result, unop(Iop_NegF128, get_fpr_pair(r2)));
+   put_fpr_pair(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "lcxbr";
+}
+
+static HChar *
+s390_irgen_LXDBR(UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F64);
+
+   assign(op, get_fpr_dw0(r2));
+   put_fpr_pair(r1, unop(Iop_F64toF128, mkexpr(op)));
+
+   return "lxdbr";
+}
+
+static HChar *
+s390_irgen_LXEBR(UChar r1, UChar r2)
+{
+   IRTemp op = newTemp(Ity_F32);
+
+   assign(op, get_fpr_w0(r2));
+   put_fpr_pair(r1, unop(Iop_F32toF128, mkexpr(op)));
+
+   return "lxebr";
+}
+
+static HChar *
+s390_irgen_LXDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_F64);
+
+   assign(op, load(Ity_F64, mkexpr(op2addr)));
+   put_fpr_pair(r1, unop(Iop_F64toF128, mkexpr(op)));
+
+   return "lxdb";
+}
+
+static HChar *
+s390_irgen_LXEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_F32);
+
+   assign(op, load(Ity_F32, mkexpr(op2addr)));
+   put_fpr_pair(r1, unop(Iop_F32toF128, mkexpr(op)));
+
+   return "lxeb";
+}
+
+static HChar *
+s390_irgen_LNEBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, unop(Iop_NegF32, unop(Iop_AbsF32, get_fpr_w0(r2))));
+   put_fpr_w0(r1, mkexpr(result));
+   s390_cc_thunk_put1f(S390_CC_OP_BFP_RESULT_32, result);
+
+   return "lnebr";
+}
+
+static HChar *
+s390_irgen_LNDBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_NegF64, unop(Iop_AbsF64, get_fpr_dw0(r2))));
+   put_fpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_put1f(S390_CC_OP_BFP_RESULT_64, result);
+
+   return "lndbr";
+}
+
+static HChar *
+s390_irgen_LNXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(result, unop(Iop_NegF128, unop(Iop_AbsF128, get_fpr_pair(r2))));
+   put_fpr_pair(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "lnxbr";
+}
+
+static HChar *
+s390_irgen_LPEBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, unop(Iop_AbsF32, get_fpr_w0(r2)));
+   put_fpr_w0(r1, mkexpr(result));
+   s390_cc_thunk_put1f(S390_CC_OP_BFP_RESULT_32, result);
+
+   return "lpebr";
+}
+
+static HChar *
+s390_irgen_LPDBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_AbsF64, get_fpr_dw0(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+   s390_cc_thunk_put1f(S390_CC_OP_BFP_RESULT_64, result);
+
+   return "lpdbr";
+}
+
+static HChar *
+s390_irgen_LPXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(result, unop(Iop_AbsF128, get_fpr_pair(r2)));
+   put_fpr_pair(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "lpxbr";
+}
+
+static HChar *
+s390_irgen_LDXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, binop(Iop_F128toF64, mkU32(Irrm_NEAREST), get_fpr_pair(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "ldxbr";
+}
+
+static HChar *
+s390_irgen_LEXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, binop(Iop_F128toF32, mkU32(Irrm_NEAREST), get_fpr_pair(r2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "lexbr";
+}
+
+static HChar *
+s390_irgen_MXBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F128);
+   IRTemp op2 = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(op1, get_fpr_pair(r1));
+   assign(op2, get_fpr_pair(r2));
+   assign(result, triop(Iop_MulF128, mkU32(Irrm_NEAREST), mkexpr(op1),
+                        mkexpr(op2)));
+   put_fpr_pair(r1, mkexpr(result));
+
+   return "mxbr";
+}
+
+static HChar *
+s390_irgen_MAEBR(UChar r1, UChar r3, UChar r2)
+{
+   put_fpr_w0(r1, qop(Iop_MAddF32, mkU32(Irrm_NEAREST),
+                      get_fpr_w0(r1), get_fpr_w0(r2), get_fpr_w0(r3)));
+
+   return "maebr";
+}
+
+static HChar *
+s390_irgen_MADBR(UChar r1, UChar r3, UChar r2)
+{
+   put_fpr_dw0(r1, qop(Iop_MAddF64, mkU32(Irrm_NEAREST),
+                       get_fpr_dw0(r1), get_fpr_dw0(r2), get_fpr_dw0(r3)));
+
+   return "madbr";
+}
+
+static HChar *
+s390_irgen_MAEB(UChar r3, IRTemp op2addr, UChar r1)
+{
+   IRExpr *op2 = load(Ity_F32, mkexpr(op2addr));
+
+   put_fpr_w0(r1, qop(Iop_MAddF32, mkU32(Irrm_NEAREST),
+                      get_fpr_w0(r1), op2, get_fpr_w0(r3)));
+
+   return "maeb";
+}
+
+static HChar *
+s390_irgen_MADB(UChar r3, IRTemp op2addr, UChar r1)
+{
+   IRExpr *op2 = load(Ity_F64, mkexpr(op2addr));
+
+   put_fpr_dw0(r1, qop(Iop_MAddF64, mkU32(Irrm_NEAREST),
+                       get_fpr_dw0(r1), op2, get_fpr_dw0(r3)));
+
+   return "madb";
+}
+
+static HChar *
+s390_irgen_MSEBR(UChar r1, UChar r3, UChar r2)
+{
+   put_fpr_w0(r1, qop(Iop_MSubF32, mkU32(Irrm_NEAREST),
+                      get_fpr_w0(r1), get_fpr_w0(r2), get_fpr_w0(r3)));
+
+   return "msebr";
+}
+
+static HChar *
+s390_irgen_MSDBR(UChar r1, UChar r3, UChar r2)
+{
+   put_fpr_dw0(r1, qop(Iop_MSubF64, mkU32(Irrm_NEAREST),
+                       get_fpr_dw0(r1), get_fpr_dw0(r2), get_fpr_dw0(r3)));
+
+   return "msdbr";
+}
+
+static HChar *
+s390_irgen_MSEB(UChar r3, IRTemp op2addr, UChar r1)
+{
+   IRExpr *op2 = load(Ity_F32, mkexpr(op2addr));
+
+   put_fpr_w0(r1, qop(Iop_MSubF32, mkU32(Irrm_NEAREST),
+                      get_fpr_w0(r1), op2, get_fpr_w0(r3)));
+
+   return "mseb";
+}
+
+static HChar *
+s390_irgen_MSDB(UChar r3, IRTemp op2addr, UChar r1)
+{
+   IRExpr *op2 = load(Ity_F64, mkexpr(op2addr));
+
+   put_fpr_dw0(r1, qop(Iop_MSubF64, mkU32(Irrm_NEAREST),
+                       get_fpr_dw0(r1), op2, get_fpr_dw0(r3)));
+
+   return "msdb";
+}
+
+static HChar *
+s390_irgen_SQEBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F32);
+
+   assign(result, binop(Iop_SqrtF32, mkU32(Irrm_NEAREST), get_fpr_w0(r2)));
+   put_fpr_w0(r1, mkexpr(result));
+
+   return "sqebr";
+}
+
+static HChar *
+s390_irgen_SQDBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, binop(Iop_SqrtF64, mkU32(Irrm_NEAREST), get_fpr_dw0(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "sqdbr";
+}
+
+static HChar *
+s390_irgen_SQXBR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(result, binop(Iop_SqrtF128, mkU32(Irrm_NEAREST), get_fpr_pair(r2)));
+   put_fpr_pair(r1, mkexpr(result));
+
+   return "sqxbr";
+}
+
+static HChar *
+s390_irgen_SQEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_F32);
+
+   assign(op, load(Ity_F32, mkexpr(op2addr)));
+   put_fpr_w0(r1, binop(Iop_SqrtF32, mkU32(Irrm_NEAREST), mkexpr(op)));
+
+   return "sqeb";
+}
+
+static HChar *
+s390_irgen_SQDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp op = newTemp(Ity_F64);
+
+   assign(op, load(Ity_F64, mkexpr(op2addr)));
+   put_fpr_dw0(r1, binop(Iop_SqrtF64, mkU32(Irrm_NEAREST), mkexpr(op)));
+
+   return "sqdb";
+}
+
+static HChar *
+s390_irgen_SXBR(UChar r1, UChar r2)
+{
+   IRTemp op1 = newTemp(Ity_F128);
+   IRTemp op2 = newTemp(Ity_F128);
+   IRTemp result = newTemp(Ity_F128);
+
+   assign(op1, get_fpr_pair(r1));
+   assign(op2, get_fpr_pair(r2));
+   assign(result, triop(Iop_SubF128, mkU32(Irrm_NEAREST), mkexpr(op1),
+                        mkexpr(op2)));
+   put_fpr_pair(r1, mkexpr(result));
+   s390_cc_thunk_put1f128(S390_CC_OP_BFP_RESULT_128, result);
+
+   return "sxbr";
+}
+
+static HChar *
+s390_irgen_TCEB(UChar r1, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_F32);
+
+   assign(value, get_fpr_w0(r1));
+
+   s390_cc_thunk_putFZ(S390_CC_OP_BFP_TDC_32, value, op2addr);
+
+   return "tceb";
+}
+
+static HChar *
+s390_irgen_TCDB(UChar r1, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_F64);
+
+   assign(value, get_fpr_dw0(r1));
+
+   s390_cc_thunk_putFZ(S390_CC_OP_BFP_TDC_64, value, op2addr);
+
+   return "tcdb";
+}
+
+static HChar *
+s390_irgen_TCXB(UChar r1, IRTemp op2addr)
+{
+   IRTemp value = newTemp(Ity_F128);
+
+   assign(value, get_fpr_pair(r1));
+
+   s390_cc_thunk_put1f128Z(S390_CC_OP_BFP_TDC_128, value, op2addr);
+
+   return "tcxb";
+}
+
+static HChar *
+s390_irgen_LCDFR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_NegF64, get_fpr_dw0(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "lcdfr";
+}
+
+static HChar *
+s390_irgen_LNDFR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_NegF64, unop(Iop_AbsF64, get_fpr_dw0(r2))));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "lndfr";
+}
+
+static HChar *
+s390_irgen_LPDFR(UChar r1, UChar r2)
+{
+   IRTemp result = newTemp(Ity_F64);
+
+   assign(result, unop(Iop_AbsF64, get_fpr_dw0(r2)));
+   put_fpr_dw0(r1, mkexpr(result));
+
+   return "lpdfr";
+}
+
+static HChar *
+s390_irgen_LDGR(UChar r1, UChar r2)
+{
+   put_fpr_dw0(r1, unop(Iop_ReinterpI64asF64, get_gpr_dw0(r2)));
+
+   return "ldgr";
+}
+
+static HChar *
+s390_irgen_LGDR(UChar r1, UChar r2)
+{
+   put_gpr_dw0(r1, unop(Iop_ReinterpF64asI64, get_fpr_dw0(r2)));
+
+   return "lgdr";
+}
+
+
+static HChar *
+s390_irgen_CPSDR(UChar r3, UChar r1, UChar r2)
+{
+   IRTemp sign  = newTemp(Ity_I64);
+   IRTemp value = newTemp(Ity_I64);
+
+   assign(sign, binop(Iop_And64, unop(Iop_ReinterpF64asI64, get_fpr_dw0(r3)),
+                      mkU64(1ULL << 63)));
+   assign(value, binop(Iop_And64, unop(Iop_ReinterpF64asI64, get_fpr_dw0(r2)),
+                       mkU64((1ULL << 63) - 1)));
+   put_fpr_dw0(r1, unop(Iop_ReinterpI64asF64, binop(Iop_Or64, mkexpr(value),
+                                                    mkexpr(sign))));
+
+   return "cpsdr";
+}
+
+
+static UInt
+s390_do_cvb(ULong decimal)
+{
+#if defined(VGA_s390x)
+   UInt binary;
+
+   __asm__ volatile (
+        "cvb %[result],%[input]\n\t"
+          : [result] "=d"(binary)
+          : [input] "m"(decimal)
+   );
+
+   return binary;
+#else
+   return 0;
+#endif
+}
+
+static IRExpr *
+s390_call_cvb(IRExpr *in)
+{
+   IRExpr **args, *call;
+
+   args = mkIRExprVec_1(in);
+   call = mkIRExprCCall(Ity_I32, 0 /*regparm*/,
+                        "s390_do_cvb", &s390_do_cvb, args);
+
+   /* Nothing is excluded from definedness checking. */
+   call->Iex.CCall.cee->mcx_mask = 0;
+
+   return call;
+}
+
+static HChar *
+s390_irgen_CVB(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, s390_call_cvb(load(Ity_I64, mkexpr(op2addr))));
+
+   return "cvb";
+}
+
+static HChar *
+s390_irgen_CVBY(UChar r1, IRTemp op2addr)
+{
+   put_gpr_w1(r1, s390_call_cvb(load(Ity_I64, mkexpr(op2addr))));
+
+   return "cvby";
+}
+
+
+static ULong
+s390_do_cvd(ULong binary_in)
+{
+#if defined(VGA_s390x)
+   UInt binary = binary_in & 0xffffffffULL;
+   ULong decimal;
+
+   __asm__ volatile (
+        "cvd %[input],%[result]\n\t"
+          : [result] "=m"(decimal)
+          : [input] "d"(binary)
+   );
+
+   return decimal;
+#else
+   return 0;
+#endif
+}
+
+static IRExpr *
+s390_call_cvd(IRExpr *in)
+{
+   IRExpr **args, *call;
+
+   args = mkIRExprVec_1(in);
+   call = mkIRExprCCall(Ity_I64, 0 /*regparm*/,
+                        "s390_do_cvd", &s390_do_cvd, args);
+
+   /* Nothing is excluded from definedness checking. */
+   call->Iex.CCall.cee->mcx_mask = 0;
+
+   return call;
+}
+
+static HChar *
+s390_irgen_CVD(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), s390_call_cvd(get_gpr_w1(r1)));
+
+   return "cvd";
+}
+
+static HChar *
+s390_irgen_CVDY(UChar r1, IRTemp op2addr)
+{
+   store(mkexpr(op2addr), s390_call_cvd(get_gpr_w1(r1)));
+
+   return "cvdy";
+}
+
+static HChar *
+s390_irgen_FLOGR(UChar r1, UChar r2)
+{
+   IRTemp input    = newTemp(Ity_I64);
+   IRTemp not_zero = newTemp(Ity_I64);
+   IRTemp tmpnum   = newTemp(Ity_I64);
+   IRTemp num      = newTemp(Ity_I64);
+   IRTemp shift_amount = newTemp(Ity_I8);
+
+   /* We use the "count leading zeroes" operator because the number of
+      leading zeroes is identical with the bit position of the first '1' bit.
+      However, that operator does not work when the input value is zero.
+      Therefore, we set the LSB of the input value to 1 and use Clz64 on
+      the modified value. If input == 0, then the result is 64. Otherwise,
+      the result of Clz64 is what we want. */
+
+   assign(input, get_gpr_dw0(r2));
+   assign(not_zero, binop(Iop_Or64, mkexpr(input), mkU64(1)));
+   assign(tmpnum, unop(Iop_Clz64, mkexpr(not_zero)));
+
+   /* num = (input == 0) ? 64 : tmpnum */
+   assign(num, mkite(binop(Iop_CmpEQ64, mkexpr(input), mkU64(0)),
+                     /* == 0 */ mkU64(64),
+                     /* != 0 */ mkexpr(tmpnum)));
+
+   put_gpr_dw0(r1, mkexpr(num));
+
+   /* Set the leftmost '1' bit of the input value to zero. The general scheme
+      is to first shift the input value by NUM + 1 bits to the left which
+      causes the leftmost '1' bit to disappear. Then we shift logically to
+      the right by NUM + 1 bits. Because the semantics of Iop_Shl64 and
+      Iop_Shr64 are undefined if the shift-amount is greater than or equal to
+      the width of the value-to-be-shifted, we need to special case
+      NUM + 1 >= 64. This is equivalent to INPUT != 0 && INPUT != 1.
+      For both such INPUT values the result will be 0. */
+
+   assign(shift_amount, unop(Iop_64to8, binop(Iop_Add64, mkexpr(num),
+                          mkU64(1))));
+
+   put_gpr_dw0(r1 + 1,
+           mkite(binop(Iop_CmpLE64U, mkexpr(input), mkU64(1)),
+             /* == 0 || == 1*/ mkU64(0),
+             /* otherwise */
+             binop(Iop_Shr64,
+               binop(Iop_Shl64, mkexpr(input),
+                 mkexpr(shift_amount)),
+               mkexpr(shift_amount))));
+
+   /* Compare the original value as an unsigned integer with 0. */
+   s390_cc_thunk_put2(S390_CC_OP_UNSIGNED_COMPARE, input,
+                      mktemp(Ity_I64, mkU64(0)), False);
+
+   return "flogr";
+}
+
+static HChar *
+s390_irgen_STCK(IRTemp op2addr)
+{
+   IRDirty *d;
+   IRTemp cc = newTemp(Ity_I64);
+
+   d = unsafeIRDirty_1_N(cc, 0, "s390x_dirtyhelper_STCK",
+                         &s390x_dirtyhelper_STCK,
+                         mkIRExprVec_1(mkexpr(op2addr)));
+   d->mFx   = Ifx_Write;
+   d->mAddr = mkexpr(op2addr);
+   d->mSize = 8;
+   stmt(IRStmt_Dirty(d));
+   s390_cc_thunk_fill(mkU64(S390_CC_OP_SET),
+                      mkexpr(cc), mkU64(0), mkU64(0));
+   return "stck";
+}
+
+static HChar *
+s390_irgen_STCKF(IRTemp op2addr)
+{
+   IRDirty *d;
+   IRTemp cc = newTemp(Ity_I64);
+
+   d = unsafeIRDirty_1_N(cc, 0, "s390x_dirtyhelper_STCKF",
+                         &s390x_dirtyhelper_STCKF,
+                         mkIRExprVec_1(mkexpr(op2addr)));
+   d->mFx   = Ifx_Write;
+   d->mAddr = mkexpr(op2addr);
+   d->mSize = 8;
+   stmt(IRStmt_Dirty(d));
+   s390_cc_thunk_fill(mkU64(S390_CC_OP_SET),
+                      mkexpr(cc), mkU64(0), mkU64(0));
+   return "stckf";
+}
+
+static HChar *
+s390_irgen_STCKE(IRTemp op2addr)
+{
+   IRDirty *d;
+   IRTemp cc = newTemp(Ity_I64);
+
+   d = unsafeIRDirty_1_N(cc, 0, "s390x_dirtyhelper_STCKE",
+                         &s390x_dirtyhelper_STCKE,
+                         mkIRExprVec_1(mkexpr(op2addr)));
+   d->mFx   = Ifx_Write;
+   d->mAddr = mkexpr(op2addr);
+   d->mSize = 16;
+   stmt(IRStmt_Dirty(d));
+   s390_cc_thunk_fill(mkU64(S390_CC_OP_SET),
+                      mkexpr(cc), mkU64(0), mkU64(0));
+   return "stcke";
+}
+
+/*------------------------------------------------------------*/
+/*--- Build IR for special instructions                    ---*/
+/*------------------------------------------------------------*/
+
+void
+s390_irgen_client_request(void)
+{
+   if (0)
+      vex_printf("%%R3 = client_request ( %%R2 )\n");
+
+   irsb->next = mkU64((ULong)(guest_IA_curr_instr
+                              + S390_SPECIAL_OP_PREAMBLE_SIZE
+                              + S390_SPECIAL_OP_SIZE));
+   irsb->jumpkind = Ijk_ClientReq;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+void
+s390_irgen_guest_NRADDR(void)
+{
+   if (0)
+      vex_printf("%%R3 = guest_NRADDR\n");
+
+   put_gpr_dw0(3, IRExpr_Get(S390_GUEST_OFFSET(guest_NRADDR), Ity_I64));
+}
+
+void
+s390_irgen_call_noredir(void)
+{
+   /* Continue after special op */
+   put_gpr_dw0(14, mkU64(guest_IA_curr_instr
+                         + S390_SPECIAL_OP_PREAMBLE_SIZE
+                         + S390_SPECIAL_OP_SIZE));
+
+   /* The address is in REG1, all parameters are in the right (guest) places */
+   irsb->next     = get_gpr_dw0(1);
+   irsb->jumpkind = Ijk_NoRedir;
+
+   dis_res->whatNext = Dis_StopHere;
+}
+
+/* Force proper alignment for the structures below. */
+#pragma pack(1)
+
+
+static s390_decode_t
+s390_decode_2byte_and_irgen(UChar *bytes)
+{
+   typedef union {
+      struct {
+         unsigned int op : 16;
+      } E;
+      struct {
+         unsigned int op :  8;
+         unsigned int i  :  8;
+      } I;
+      struct {
+         unsigned int op :  8;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RR;
+   } formats;
+   union {
+      formats fmt;
+      UShort value;
+   } ovl;
+
+   vassert(sizeof(formats) == 2);
+
+   ((char *)(&ovl.value))[0] = bytes[0];
+   ((char *)(&ovl.value))[1] = bytes[1];
+
+   switch (ovl.value & 0xffff) {
+   case 0x0101: /* PR */ goto unimplemented;
+   case 0x0102: /* UPT */ goto unimplemented;
+   case 0x0104: /* PTFF */ goto unimplemented;
+   case 0x0107: /* SCKPF */ goto unimplemented;
+   case 0x010a: /* PFPO */ goto unimplemented;
+   case 0x010b: /* TAM */ goto unimplemented;
+   case 0x010c: /* SAM24 */ goto unimplemented;
+   case 0x010d: /* SAM31 */ goto unimplemented;
+   case 0x010e: /* SAM64 */ goto unimplemented;
+   case 0x01ff: /* TRAP2 */ goto unimplemented;
+   }
+
+   switch ((ovl.value & 0xff00) >> 8) {
+   case 0x04: /* SPM */ goto unimplemented;
+   case 0x05: /* BALR */ goto unimplemented;
+   case 0x06: s390_format_RR_RR(s390_irgen_BCTR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x07: s390_format_RR(s390_irgen_BCR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                             goto ok;
+   case 0x0a: s390_format_I(s390_irgen_SVC, ovl.fmt.I.i);  goto ok;
+   case 0x0b: /* BSM */ goto unimplemented;
+   case 0x0c: /* BASSM */ goto unimplemented;
+   case 0x0d: s390_format_RR_RR(s390_irgen_BASR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x0e: /* MVCL */ goto unimplemented;
+   case 0x0f: /* CLCL */ goto unimplemented;
+   case 0x10: s390_format_RR_RR(s390_irgen_LPR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x11: s390_format_RR_RR(s390_irgen_LNR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x12: s390_format_RR_RR(s390_irgen_LTR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x13: s390_format_RR_RR(s390_irgen_LCR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x14: s390_format_RR_RR(s390_irgen_NR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x15: s390_format_RR_RR(s390_irgen_CLR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x16: s390_format_RR_RR(s390_irgen_OR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x17: s390_format_RR_RR(s390_irgen_XR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x18: s390_format_RR_RR(s390_irgen_LR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x19: s390_format_RR_RR(s390_irgen_CR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1a: s390_format_RR_RR(s390_irgen_AR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1b: s390_format_RR_RR(s390_irgen_SR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1c: s390_format_RR_RR(s390_irgen_MR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1d: s390_format_RR_RR(s390_irgen_DR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1e: s390_format_RR_RR(s390_irgen_ALR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x1f: s390_format_RR_RR(s390_irgen_SLR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x20: /* LPDR */ goto unimplemented;
+   case 0x21: /* LNDR */ goto unimplemented;
+   case 0x22: /* LTDR */ goto unimplemented;
+   case 0x23: /* LCDR */ goto unimplemented;
+   case 0x24: /* HDR */ goto unimplemented;
+   case 0x25: /* LDXR */ goto unimplemented;
+   case 0x26: /* MXR */ goto unimplemented;
+   case 0x27: /* MXDR */ goto unimplemented;
+   case 0x28: s390_format_RR_FF(s390_irgen_LDR, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x29: /* CDR */ goto unimplemented;
+   case 0x2a: /* ADR */ goto unimplemented;
+   case 0x2b: /* SDR */ goto unimplemented;
+   case 0x2c: /* MDR */ goto unimplemented;
+   case 0x2d: /* DDR */ goto unimplemented;
+   case 0x2e: /* AWR */ goto unimplemented;
+   case 0x2f: /* SWR */ goto unimplemented;
+   case 0x30: /* LPER */ goto unimplemented;
+   case 0x31: /* LNER */ goto unimplemented;
+   case 0x32: /* LTER */ goto unimplemented;
+   case 0x33: /* LCER */ goto unimplemented;
+   case 0x34: /* HER */ goto unimplemented;
+   case 0x35: /* LEDR */ goto unimplemented;
+   case 0x36: /* AXR */ goto unimplemented;
+   case 0x37: /* SXR */ goto unimplemented;
+   case 0x38: s390_format_RR_FF(s390_irgen_LER, ovl.fmt.RR.r1, ovl.fmt.RR.r2);
+                                goto ok;
+   case 0x39: /* CER */ goto unimplemented;
+   case 0x3a: /* AER */ goto unimplemented;
+   case 0x3b: /* SER */ goto unimplemented;
+   case 0x3c: /* MDER */ goto unimplemented;
+   case 0x3d: /* DER */ goto unimplemented;
+   case 0x3e: /* AUR */ goto unimplemented;
+   case 0x3f: /* SUR */ goto unimplemented;
+   }
+
+   return S390_DECODE_UNKNOWN_INSN;
+
+ok:
+   return S390_DECODE_OK;
+
+unimplemented:
+   return S390_DECODE_UNIMPLEMENTED_INSN;
+}
+
+static s390_decode_t
+s390_decode_4byte_and_irgen(UChar *bytes)
+{
+   typedef union {
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int op2 :  4;
+         unsigned int i2  : 16;
+      } RI;
+      struct {
+         unsigned int op : 16;
+         unsigned int    :  8;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RRE;
+      struct {
+         unsigned int op : 16;
+         unsigned int r1 :  4;
+         unsigned int    :  4;
+         unsigned int r3 :  4;
+         unsigned int r2 :  4;
+      } RRF;
+      struct {
+         unsigned int op : 16;
+         unsigned int r3 :  4;
+         unsigned int m4 :  4;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RRF2;
+      struct {
+         unsigned int op : 16;
+         unsigned int r3 :  4;
+         unsigned int    :  4;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RRF3;
+      struct {
+         unsigned int op : 16;
+         unsigned int r3 :  4;
+         unsigned int    :  4;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RRR;
+      struct {
+         unsigned int op : 16;
+         unsigned int r3 :  4;
+         unsigned int    :  4;
+         unsigned int r1 :  4;
+         unsigned int r2 :  4;
+      } RRF4;
+      struct {
+         unsigned int op :  8;
+         unsigned int r1 :  4;
+         unsigned int r3 :  4;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } RS;
+      struct {
+         unsigned int op :  8;
+         unsigned int r1 :  4;
+         unsigned int r3 :  4;
+         unsigned int i2 : 16;
+      } RSI;
+      struct {
+         unsigned int op :  8;
+         unsigned int r1 :  4;
+         unsigned int x2 :  4;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } RX;
+      struct {
+         unsigned int op : 16;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } S;
+      struct {
+         unsigned int op :  8;
+         unsigned int i2 :  8;
+         unsigned int b1 :  4;
+         unsigned int d1 : 12;
+      } SI;
+   } formats;
+   union {
+      formats fmt;
+      UInt value;
+   } ovl;
+
+   vassert(sizeof(formats) == 4);
+
+   ((char *)(&ovl.value))[0] = bytes[0];
+   ((char *)(&ovl.value))[1] = bytes[1];
+   ((char *)(&ovl.value))[2] = bytes[2];
+   ((char *)(&ovl.value))[3] = bytes[3];
+
+   switch ((ovl.value & 0xff0f0000) >> 16) {
+   case 0xa500: s390_format_RI_RU(s390_irgen_IIHH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa501: s390_format_RI_RU(s390_irgen_IIHL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa502: s390_format_RI_RU(s390_irgen_IILH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa503: s390_format_RI_RU(s390_irgen_IILL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa504: s390_format_RI_RU(s390_irgen_NIHH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa505: s390_format_RI_RU(s390_irgen_NIHL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa506: s390_format_RI_RU(s390_irgen_NILH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa507: s390_format_RI_RU(s390_irgen_NILL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa508: s390_format_RI_RU(s390_irgen_OIHH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa509: s390_format_RI_RU(s390_irgen_OIHL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50a: s390_format_RI_RU(s390_irgen_OILH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50b: s390_format_RI_RU(s390_irgen_OILL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50c: s390_format_RI_RU(s390_irgen_LLIHH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50d: s390_format_RI_RU(s390_irgen_LLIHL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50e: s390_format_RI_RU(s390_irgen_LLILH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa50f: s390_format_RI_RU(s390_irgen_LLILL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa700: s390_format_RI_RU(s390_irgen_TMLH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa701: s390_format_RI_RU(s390_irgen_TMLL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa702: s390_format_RI_RU(s390_irgen_TMHH, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa703: s390_format_RI_RU(s390_irgen_TMHL, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa704: s390_format_RI(s390_irgen_BRC, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+                               goto ok;
+   case 0xa705: s390_format_RI_RP(s390_irgen_BRAS, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa706: s390_format_RI_RP(s390_irgen_BRCT, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa707: s390_format_RI_RP(s390_irgen_BRCTG, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa708: s390_format_RI_RI(s390_irgen_LHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+                                  goto ok;
+   case 0xa709: s390_format_RI_RI(s390_irgen_LGHI, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa70a: s390_format_RI_RI(s390_irgen_AHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+                                  goto ok;
+   case 0xa70b: s390_format_RI_RI(s390_irgen_AGHI, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa70c: s390_format_RI_RI(s390_irgen_MHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+                                  goto ok;
+   case 0xa70d: s390_format_RI_RI(s390_irgen_MGHI, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   case 0xa70e: s390_format_RI_RI(s390_irgen_CHI, ovl.fmt.RI.r1, ovl.fmt.RI.i2);
+                                  goto ok;
+   case 0xa70f: s390_format_RI_RI(s390_irgen_CGHI, ovl.fmt.RI.r1,
+                                  ovl.fmt.RI.i2);  goto ok;
+   }
+
+   switch ((ovl.value & 0xffff0000) >> 16) {
+   case 0x8000: /* SSM */ goto unimplemented;
+   case 0x8200: /* LPSW */ goto unimplemented;
+   case 0x9300: s390_format_S_RD(s390_irgen_TS, ovl.fmt.S.b2, ovl.fmt.S.d2);
+                                 goto ok;
+   case 0xb202: /* STIDP */ goto unimplemented;
+   case 0xb204: /* SCK */ goto unimplemented;
+   case 0xb205: s390_format_S_RD(s390_irgen_STCK, ovl.fmt.S.b2, ovl.fmt.S.d2);goto ok;
+   case 0xb206: /* SCKC */ goto unimplemented;
+   case 0xb207: /* STCKC */ goto unimplemented;
+   case 0xb208: /* SPT */ goto unimplemented;
+   case 0xb209: /* STPT */ goto unimplemented;
+   case 0xb20a: /* SPKA */ goto unimplemented;
+   case 0xb20b: /* IPK */ goto unimplemented;
+   case 0xb20d: /* PTLB */ goto unimplemented;
+   case 0xb210: /* SPX */ goto unimplemented;
+   case 0xb211: /* STPX */ goto unimplemented;
+   case 0xb212: /* STAP */ goto unimplemented;
+   case 0xb214: /* SIE */ goto unimplemented;
+   case 0xb218: /* PC */ goto unimplemented;
+   case 0xb219: /* SAC */ goto unimplemented;
+   case 0xb21a: /* CFC */ goto unimplemented;
+   case 0xb221: /* IPTE */ goto unimplemented;
+   case 0xb222: s390_format_RRE_R0(s390_irgen_IPM, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb223: /* IVSK */ goto unimplemented;
+   case 0xb224: /* IAC */ goto unimplemented;
+   case 0xb225: /* SSAR */ goto unimplemented;
+   case 0xb226: /* EPAR */ goto unimplemented;
+   case 0xb227: /* ESAR */ goto unimplemented;
+   case 0xb228: /* PT */ goto unimplemented;
+   case 0xb229: /* ISKE */ goto unimplemented;
+   case 0xb22a: /* RRBE */ goto unimplemented;
+   case 0xb22b: /* SSKE */ goto unimplemented;
+   case 0xb22c: /* TB */ goto unimplemented;
+   case 0xb22d: /* DXR */ goto unimplemented;
+   case 0xb22e: /* PGIN */ goto unimplemented;
+   case 0xb22f: /* PGOUT */ goto unimplemented;
+   case 0xb230: /* CSCH */ goto unimplemented;
+   case 0xb231: /* HSCH */ goto unimplemented;
+   case 0xb232: /* MSCH */ goto unimplemented;
+   case 0xb233: /* SSCH */ goto unimplemented;
+   case 0xb234: /* STSCH */ goto unimplemented;
+   case 0xb235: /* TSCH */ goto unimplemented;
+   case 0xb236: /* TPI */ goto unimplemented;
+   case 0xb237: /* SAL */ goto unimplemented;
+   case 0xb238: /* RSCH */ goto unimplemented;
+   case 0xb239: /* STCRW */ goto unimplemented;
+   case 0xb23a: /* STCPS */ goto unimplemented;
+   case 0xb23b: /* RCHP */ goto unimplemented;
+   case 0xb23c: /* SCHM */ goto unimplemented;
+   case 0xb240: /* BAKR */ goto unimplemented;
+   case 0xb241: /* CKSM */ goto unimplemented;
+   case 0xb244: /* SQDR */ goto unimplemented;
+   case 0xb245: /* SQER */ goto unimplemented;
+   case 0xb246: /* STURA */ goto unimplemented;
+   case 0xb247: /* MSTA */ goto unimplemented;
+   case 0xb248: /* PALB */ goto unimplemented;
+   case 0xb249: /* EREG */ goto unimplemented;
+   case 0xb24a: /* ESTA */ goto unimplemented;
+   case 0xb24b: /* LURA */ goto unimplemented;
+   case 0xb24c: /* TAR */ goto unimplemented;
+   case 0xb24d: s390_format_RRE(s390_irgen_CPYA, ovl.fmt.RRE.r1,
+                                ovl.fmt.RRE.r2);  goto ok;
+   case 0xb24e: s390_format_RRE(s390_irgen_SAR, ovl.fmt.RRE.r1, ovl.fmt.RRE.r2);
+                                goto ok;
+   case 0xb24f: s390_format_RRE(s390_irgen_EAR, ovl.fmt.RRE.r1, ovl.fmt.RRE.r2);
+                                goto ok;
+   case 0xb250: /* CSP */ goto unimplemented;
+   case 0xb252: s390_format_RRE_RR(s390_irgen_MSR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb254: /* MVPG */ goto unimplemented;
+   case 0xb255: s390_format_RRE_RR(s390_irgen_MVST, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb257: /* CUSE */ goto unimplemented;
+   case 0xb258: /* BSG */ goto unimplemented;
+   case 0xb25a: /* BSA */ goto unimplemented;
+   case 0xb25d: s390_format_RRE_RR(s390_irgen_CLST, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb25e: s390_format_RRE_RR(s390_irgen_SRST, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb263: /* CMPSC */ goto unimplemented;
+   case 0xb274: /* SIGA */ goto unimplemented;
+   case 0xb276: /* XSCH */ goto unimplemented;
+   case 0xb277: /* RP */ goto unimplemented;
+   case 0xb278: s390_format_S_RD(s390_irgen_STCKE, ovl.fmt.S.b2, ovl.fmt.S.d2);goto ok;
+   case 0xb279: /* SACF */ goto unimplemented;
+   case 0xb27c: s390_format_S_RD(s390_irgen_STCKF, ovl.fmt.S.b2, ovl.fmt.S.d2);goto ok;
+   case 0xb27d: /* STSI */ goto unimplemented;
+   case 0xb299: s390_format_S_RD(s390_irgen_SRNM, ovl.fmt.S.b2, ovl.fmt.S.d2);
+                                 goto ok;
+   case 0xb29c: s390_format_S_RD(s390_irgen_STFPC, ovl.fmt.S.b2, ovl.fmt.S.d2);
+                                 goto ok;
+   case 0xb29d: s390_format_S_RD(s390_irgen_LFPC, ovl.fmt.S.b2, ovl.fmt.S.d2);
+                                 goto ok;
+   case 0xb2a5: /* TRE */ goto unimplemented;
+   case 0xb2a6: /* CU21 */ goto unimplemented;
+   case 0xb2a7: /* CU12 */ goto unimplemented;
+   case 0xb2b0: /* STFLE */ goto unimplemented;
+   case 0xb2b1: /* STFL */ goto unimplemented;
+   case 0xb2b2: /* LPSWE */ goto unimplemented;
+   case 0xb2b8: /* SRNMB */ goto unimplemented;
+   case 0xb2b9: /* SRNMT */ goto unimplemented;
+   case 0xb2bd: /* LFAS */ goto unimplemented;
+   case 0xb2ff: /* TRAP4 */ goto unimplemented;
+   case 0xb300: s390_format_RRE_FF(s390_irgen_LPEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb301: s390_format_RRE_FF(s390_irgen_LNEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb302: s390_format_RRE_FF(s390_irgen_LTEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb303: s390_format_RRE_FF(s390_irgen_LCEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb304: s390_format_RRE_FF(s390_irgen_LDEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb305: s390_format_RRE_FF(s390_irgen_LXDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb306: s390_format_RRE_FF(s390_irgen_LXEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb307: /* MXDBR */ goto unimplemented;
+   case 0xb308: /* KEBR */ goto unimplemented;
+   case 0xb309: s390_format_RRE_FF(s390_irgen_CEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb30a: s390_format_RRE_FF(s390_irgen_AEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb30b: s390_format_RRE_FF(s390_irgen_SEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb30c: /* MDEBR */ goto unimplemented;
+   case 0xb30d: s390_format_RRE_FF(s390_irgen_DEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb30e: s390_format_RRF_F0FF(s390_irgen_MAEBR, ovl.fmt.RRF.r1,
+                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
+   case 0xb30f: s390_format_RRF_F0FF(s390_irgen_MSEBR, ovl.fmt.RRF.r1,
+                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
+   case 0xb310: s390_format_RRE_FF(s390_irgen_LPDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb311: s390_format_RRE_FF(s390_irgen_LNDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb312: s390_format_RRE_FF(s390_irgen_LTDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb313: s390_format_RRE_FF(s390_irgen_LCDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb314: s390_format_RRE_FF(s390_irgen_SQEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb315: s390_format_RRE_FF(s390_irgen_SQDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb316: s390_format_RRE_FF(s390_irgen_SQXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb317: s390_format_RRE_FF(s390_irgen_MEEBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb318: /* KDBR */ goto unimplemented;
+   case 0xb319: s390_format_RRE_FF(s390_irgen_CDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb31a: s390_format_RRE_FF(s390_irgen_ADBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb31b: s390_format_RRE_FF(s390_irgen_SDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb31c: s390_format_RRE_FF(s390_irgen_MDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb31d: s390_format_RRE_FF(s390_irgen_DDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb31e: s390_format_RRF_F0FF(s390_irgen_MADBR, ovl.fmt.RRF.r1,
+                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
+   case 0xb31f: s390_format_RRF_F0FF(s390_irgen_MSDBR, ovl.fmt.RRF.r1,
+                                     ovl.fmt.RRF.r3, ovl.fmt.RRF.r2);  goto ok;
+   case 0xb324: /* LDER */ goto unimplemented;
+   case 0xb325: /* LXDR */ goto unimplemented;
+   case 0xb326: /* LXER */ goto unimplemented;
+   case 0xb32e: /* MAER */ goto unimplemented;
+   case 0xb32f: /* MSER */ goto unimplemented;
+   case 0xb336: /* SQXR */ goto unimplemented;
+   case 0xb337: /* MEER */ goto unimplemented;
+   case 0xb338: /* MAYLR */ goto unimplemented;
+   case 0xb339: /* MYLR */ goto unimplemented;
+   case 0xb33a: /* MAYR */ goto unimplemented;
+   case 0xb33b: /* MYR */ goto unimplemented;
+   case 0xb33c: /* MAYHR */ goto unimplemented;
+   case 0xb33d: /* MYHR */ goto unimplemented;
+   case 0xb33e: /* MADR */ goto unimplemented;
+   case 0xb33f: /* MSDR */ goto unimplemented;
+   case 0xb340: s390_format_RRE_FF(s390_irgen_LPXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb341: s390_format_RRE_FF(s390_irgen_LNXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb342: s390_format_RRE_FF(s390_irgen_LTXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb343: s390_format_RRE_FF(s390_irgen_LCXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb344: s390_format_RRE_FF(s390_irgen_LEDBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb345: s390_format_RRE_FF(s390_irgen_LDXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb346: s390_format_RRE_FF(s390_irgen_LEXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb347: /* FIXBR */ goto unimplemented;
+   case 0xb348: /* KXBR */ goto unimplemented;
+   case 0xb349: s390_format_RRE_FF(s390_irgen_CXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb34a: s390_format_RRE_FF(s390_irgen_AXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb34b: s390_format_RRE_FF(s390_irgen_SXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb34c: s390_format_RRE_FF(s390_irgen_MXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb34d: s390_format_RRE_FF(s390_irgen_DXBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb350: /* TBEDR */ goto unimplemented;
+   case 0xb351: /* TBDR */ goto unimplemented;
+   case 0xb353: /* DIEBR */ goto unimplemented;
+   case 0xb357: /* FIEBR */ goto unimplemented;
+   case 0xb358: /* THDER */ goto unimplemented;
+   case 0xb359: /* THDR */ goto unimplemented;
+   case 0xb35b: /* DIDBR */ goto unimplemented;
+   case 0xb35f: /* FIDBR */ goto unimplemented;
+   case 0xb360: /* LPXR */ goto unimplemented;
+   case 0xb361: /* LNXR */ goto unimplemented;
+   case 0xb362: /* LTXR */ goto unimplemented;
+   case 0xb363: /* LCXR */ goto unimplemented;
+   case 0xb365: s390_format_RRE_FF(s390_irgen_LXR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb366: /* LEXR */ goto unimplemented;
+   case 0xb367: /* FIXR */ goto unimplemented;
+   case 0xb369: /* CXR */ goto unimplemented;
+   case 0xb370: s390_format_RRE_FF(s390_irgen_LPDFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb371: s390_format_RRE_FF(s390_irgen_LNDFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb372: s390_format_RRF_F0FF2(s390_irgen_CPSDR, ovl.fmt.RRF3.r3,
+                                      ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                      goto ok;
+   case 0xb373: s390_format_RRE_FF(s390_irgen_LCDFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb374: s390_format_RRE_F0(s390_irgen_LZER, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb375: s390_format_RRE_F0(s390_irgen_LZDR, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb376: s390_format_RRE_F0(s390_irgen_LZXR, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb377: /* FIER */ goto unimplemented;
+   case 0xb37f: /* FIDR */ goto unimplemented;
+   case 0xb384: s390_format_RRE_R0(s390_irgen_SFPC, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb385: /* SFASR */ goto unimplemented;
+   case 0xb38c: s390_format_RRE_R0(s390_irgen_EFPC, ovl.fmt.RRE.r1);  goto ok;
+   case 0xb390: /* CELFBR */ goto unimplemented;
+   case 0xb391: /* CDLFBR */ goto unimplemented;
+   case 0xb392: /* CXLFBR */ goto unimplemented;
+   case 0xb394: s390_format_RRE_FR(s390_irgen_CEFBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb395: s390_format_RRE_FR(s390_irgen_CDFBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb396: s390_format_RRE_FR(s390_irgen_CXFBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb398: s390_format_RRF_U0RF(s390_irgen_CFEBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb399: s390_format_RRF_U0RF(s390_irgen_CFDBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb39a: s390_format_RRF_U0RF(s390_irgen_CFXBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb3a0: /* CELGBR */ goto unimplemented;
+   case 0xb3a1: /* CDLGBR */ goto unimplemented;
+   case 0xb3a2: /* CXLGBR */ goto unimplemented;
+   case 0xb3a4: s390_format_RRE_FR(s390_irgen_CEGBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3a5: s390_format_RRE_FR(s390_irgen_CDGBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3a6: s390_format_RRE_FR(s390_irgen_CXGBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3a8: s390_format_RRF_U0RF(s390_irgen_CGEBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb3a9: s390_format_RRF_U0RF(s390_irgen_CGDBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb3aa: s390_format_RRF_U0RF(s390_irgen_CGXBR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2);
+                                     goto ok;
+   case 0xb3b4: /* CEFR */ goto unimplemented;
+   case 0xb3b5: /* CDFR */ goto unimplemented;
+   case 0xb3b6: /* CXFR */ goto unimplemented;
+   case 0xb3b8: /* CFER */ goto unimplemented;
+   case 0xb3b9: /* CFDR */ goto unimplemented;
+   case 0xb3ba: /* CFXR */ goto unimplemented;
+   case 0xb3c1: s390_format_RRE_FR(s390_irgen_LDGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3c4: /* CEGR */ goto unimplemented;
+   case 0xb3c5: /* CDGR */ goto unimplemented;
+   case 0xb3c6: /* CXGR */ goto unimplemented;
+   case 0xb3c8: /* CGER */ goto unimplemented;
+   case 0xb3c9: /* CGDR */ goto unimplemented;
+   case 0xb3ca: /* CGXR */ goto unimplemented;
+   case 0xb3cd: s390_format_RRE_RF(s390_irgen_LGDR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb3d0: /* MDTR */ goto unimplemented;
+   case 0xb3d1: /* DDTR */ goto unimplemented;
+   case 0xb3d2: /* ADTR */ goto unimplemented;
+   case 0xb3d3: /* SDTR */ goto unimplemented;
+   case 0xb3d4: /* LDETR */ goto unimplemented;
+   case 0xb3d5: /* LEDTR */ goto unimplemented;
+   case 0xb3d6: /* LTDTR */ goto unimplemented;
+   case 0xb3d7: /* FIDTR */ goto unimplemented;
+   case 0xb3d8: /* MXTR */ goto unimplemented;
+   case 0xb3d9: /* DXTR */ goto unimplemented;
+   case 0xb3da: /* AXTR */ goto unimplemented;
+   case 0xb3db: /* SXTR */ goto unimplemented;
+   case 0xb3dc: /* LXDTR */ goto unimplemented;
+   case 0xb3dd: /* LDXTR */ goto unimplemented;
+   case 0xb3de: /* LTXTR */ goto unimplemented;
+   case 0xb3df: /* FIXTR */ goto unimplemented;
+   case 0xb3e0: /* KDTR */ goto unimplemented;
+   case 0xb3e1: /* CGDTR */ goto unimplemented;
+   case 0xb3e2: /* CUDTR */ goto unimplemented;
+   case 0xb3e3: /* CSDTR */ goto unimplemented;
+   case 0xb3e4: /* CDTR */ goto unimplemented;
+   case 0xb3e5: /* EEDTR */ goto unimplemented;
+   case 0xb3e7: /* ESDTR */ goto unimplemented;
+   case 0xb3e8: /* KXTR */ goto unimplemented;
+   case 0xb3e9: /* CGXTR */ goto unimplemented;
+   case 0xb3ea: /* CUXTR */ goto unimplemented;
+   case 0xb3eb: /* CSXTR */ goto unimplemented;
+   case 0xb3ec: /* CXTR */ goto unimplemented;
+   case 0xb3ed: /* EEXTR */ goto unimplemented;
+   case 0xb3ef: /* ESXTR */ goto unimplemented;
+   case 0xb3f1: /* CDGTR */ goto unimplemented;
+   case 0xb3f2: /* CDUTR */ goto unimplemented;
+   case 0xb3f3: /* CDSTR */ goto unimplemented;
+   case 0xb3f4: /* CEDTR */ goto unimplemented;
+   case 0xb3f5: /* QADTR */ goto unimplemented;
+   case 0xb3f6: /* IEDTR */ goto unimplemented;
+   case 0xb3f7: /* RRDTR */ goto unimplemented;
+   case 0xb3f9: /* CXGTR */ goto unimplemented;
+   case 0xb3fa: /* CXUTR */ goto unimplemented;
+   case 0xb3fb: /* CXSTR */ goto unimplemented;
+   case 0xb3fc: /* CEXTR */ goto unimplemented;
+   case 0xb3fd: /* QAXTR */ goto unimplemented;
+   case 0xb3fe: /* IEXTR */ goto unimplemented;
+   case 0xb3ff: /* RRXTR */ goto unimplemented;
+   case 0xb900: s390_format_RRE_RR(s390_irgen_LPGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb901: s390_format_RRE_RR(s390_irgen_LNGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb902: s390_format_RRE_RR(s390_irgen_LTGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb903: s390_format_RRE_RR(s390_irgen_LCGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb904: s390_format_RRE_RR(s390_irgen_LGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb905: /* LURAG */ goto unimplemented;
+   case 0xb906: s390_format_RRE_RR(s390_irgen_LGBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb907: s390_format_RRE_RR(s390_irgen_LGHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb908: s390_format_RRE_RR(s390_irgen_AGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb909: s390_format_RRE_RR(s390_irgen_SGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90a: s390_format_RRE_RR(s390_irgen_ALGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90b: s390_format_RRE_RR(s390_irgen_SLGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90c: s390_format_RRE_RR(s390_irgen_MSGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90d: s390_format_RRE_RR(s390_irgen_DSGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb90e: /* EREGG */ goto unimplemented;
+   case 0xb90f: s390_format_RRE_RR(s390_irgen_LRVGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb910: s390_format_RRE_RR(s390_irgen_LPGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb911: s390_format_RRE_RR(s390_irgen_LNGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb912: s390_format_RRE_RR(s390_irgen_LTGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb913: s390_format_RRE_RR(s390_irgen_LCGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb914: s390_format_RRE_RR(s390_irgen_LGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb916: s390_format_RRE_RR(s390_irgen_LLGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb917: s390_format_RRE_RR(s390_irgen_LLGTR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb918: s390_format_RRE_RR(s390_irgen_AGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb919: s390_format_RRE_RR(s390_irgen_SGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91a: s390_format_RRE_RR(s390_irgen_ALGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91b: s390_format_RRE_RR(s390_irgen_SLGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91c: s390_format_RRE_RR(s390_irgen_MSGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91d: s390_format_RRE_RR(s390_irgen_DSGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb91e: /* KMAC */ goto unimplemented;
+   case 0xb91f: s390_format_RRE_RR(s390_irgen_LRVR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb920: s390_format_RRE_RR(s390_irgen_CGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb921: s390_format_RRE_RR(s390_irgen_CLGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb925: /* STURG */ goto unimplemented;
+   case 0xb926: s390_format_RRE_RR(s390_irgen_LBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb927: s390_format_RRE_RR(s390_irgen_LHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb928: /* PCKMO */ goto unimplemented;
+   case 0xb92b: /* KMO */ goto unimplemented;
+   case 0xb92c: /* PCC */ goto unimplemented;
+   case 0xb92d: /* KMCTR */ goto unimplemented;
+   case 0xb92e: /* KM */ goto unimplemented;
+   case 0xb92f: /* KMC */ goto unimplemented;
+   case 0xb930: s390_format_RRE_RR(s390_irgen_CGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb931: s390_format_RRE_RR(s390_irgen_CLGFR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb93e: /* KIMD */ goto unimplemented;
+   case 0xb93f: /* KLMD */ goto unimplemented;
+   case 0xb941: /* CFDTR */ goto unimplemented;
+   case 0xb942: /* CLGDTR */ goto unimplemented;
+   case 0xb943: /* CLFDTR */ goto unimplemented;
+   case 0xb946: s390_format_RRE_RR(s390_irgen_BCTGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb949: /* CFXTR */ goto unimplemented;
+   case 0xb94a: /* CLGXTR */ goto unimplemented;
+   case 0xb94b: /* CLFXTR */ goto unimplemented;
+   case 0xb951: /* CDFTR */ goto unimplemented;
+   case 0xb952: /* CDLGTR */ goto unimplemented;
+   case 0xb953: /* CDLFTR */ goto unimplemented;
+   case 0xb959: /* CXFTR */ goto unimplemented;
+   case 0xb95a: /* CXLGTR */ goto unimplemented;
+   case 0xb95b: /* CXLFTR */ goto unimplemented;
+   case 0xb960: /* CGRT */ goto unimplemented;
+   case 0xb961: /* CLGRT */ goto unimplemented;
+   case 0xb972: /* CRT */ goto unimplemented;
+   case 0xb973: /* CLRT */ goto unimplemented;
+   case 0xb980: s390_format_RRE_RR(s390_irgen_NGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb981: s390_format_RRE_RR(s390_irgen_OGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb982: s390_format_RRE_RR(s390_irgen_XGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb983: s390_format_RRE_RR(s390_irgen_FLOGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb984: s390_format_RRE_RR(s390_irgen_LLGCR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb985: s390_format_RRE_RR(s390_irgen_LLGHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb986: s390_format_RRE_RR(s390_irgen_MLGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb987: s390_format_RRE_RR(s390_irgen_DLGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb988: s390_format_RRE_RR(s390_irgen_ALCGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb989: s390_format_RRE_RR(s390_irgen_SLBGR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb98a: /* CSPG */ goto unimplemented;
+   case 0xb98d: /* EPSW */ goto unimplemented;
+   case 0xb98e: /* IDTE */ goto unimplemented;
+   case 0xb990: /* TRTT */ goto unimplemented;
+   case 0xb991: /* TRTO */ goto unimplemented;
+   case 0xb992: /* TROT */ goto unimplemented;
+   case 0xb993: /* TROO */ goto unimplemented;
+   case 0xb994: s390_format_RRE_RR(s390_irgen_LLCR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb995: s390_format_RRE_RR(s390_irgen_LLHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb996: s390_format_RRE_RR(s390_irgen_MLR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb997: s390_format_RRE_RR(s390_irgen_DLR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb998: s390_format_RRE_RR(s390_irgen_ALCR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb999: s390_format_RRE_RR(s390_irgen_SLBR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb99a: /* EPAIR */ goto unimplemented;
+   case 0xb99b: /* ESAIR */ goto unimplemented;
+   case 0xb99d: /* ESEA */ goto unimplemented;
+   case 0xb99e: /* PTI */ goto unimplemented;
+   case 0xb99f: /* SSAIR */ goto unimplemented;
+   case 0xb9a2: /* PTF */ goto unimplemented;
+   case 0xb9aa: /* LPTEA */ goto unimplemented;
+   case 0xb9ae: /* RRBM */ goto unimplemented;
+   case 0xb9af: /* PFMF */ goto unimplemented;
+   case 0xb9b0: /* CU14 */ goto unimplemented;
+   case 0xb9b1: /* CU24 */ goto unimplemented;
+   case 0xb9b2: /* CU41 */ goto unimplemented;
+   case 0xb9b3: /* CU42 */ goto unimplemented;
+   case 0xb9bd: /* TRTRE */ goto unimplemented;
+   case 0xb9be: /* SRSTU */ goto unimplemented;
+   case 0xb9bf: /* TRTE */ goto unimplemented;
+   case 0xb9c8: s390_format_RRF_R0RR2(s390_irgen_AHHHR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9c9: s390_format_RRF_R0RR2(s390_irgen_SHHHR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9ca: s390_format_RRF_R0RR2(s390_irgen_ALHHHR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9cb: s390_format_RRF_R0RR2(s390_irgen_SLHHHR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9cd: s390_format_RRE_RR(s390_irgen_CHHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb9cf: s390_format_RRE_RR(s390_irgen_CLHHR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb9d8: s390_format_RRF_R0RR2(s390_irgen_AHHLR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9d9: s390_format_RRF_R0RR2(s390_irgen_SHHLR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9da: s390_format_RRF_R0RR2(s390_irgen_ALHHLR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9db: s390_format_RRF_R0RR2(s390_irgen_SLHHLR, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9dd: s390_format_RRE_RR(s390_irgen_CHLR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, ovl.fmt.RRE.r1,
+                                   ovl.fmt.RRE.r2);  goto ok;
+   case 0xb9e1: /* POPCNT */ goto unimplemented;
+   case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
+                                     S390_XMNM_LOCGR);  goto ok;
+   case 0xb9e4: s390_format_RRF_R0RR2(s390_irgen_NGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9e6: s390_format_RRF_R0RR2(s390_irgen_OGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9e7: s390_format_RRF_R0RR2(s390_irgen_XGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9e8: s390_format_RRF_R0RR2(s390_irgen_AGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9e9: s390_format_RRF_R0RR2(s390_irgen_SGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9ea: s390_format_RRF_R0RR2(s390_irgen_ALGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9eb: s390_format_RRF_R0RR2(s390_irgen_SLGRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9f2: s390_format_RRF_U0RR(s390_irgen_LOCR, ovl.fmt.RRF3.r3,
+                                     ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
+                                     S390_XMNM_LOCR);  goto ok;
+   case 0xb9f4: s390_format_RRF_R0RR2(s390_irgen_NRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9f6: s390_format_RRF_R0RR2(s390_irgen_ORK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9f7: s390_format_RRF_R0RR2(s390_irgen_XRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9f8: s390_format_RRF_R0RR2(s390_irgen_ARK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9f9: s390_format_RRF_R0RR2(s390_irgen_SRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9fa: s390_format_RRF_R0RR2(s390_irgen_ALRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   case 0xb9fb: s390_format_RRF_R0RR2(s390_irgen_SLRK, ovl.fmt.RRF4.r3,
+                                      ovl.fmt.RRF4.r1, ovl.fmt.RRF4.r2);
+                                      goto ok;
+   }
+
+   switch ((ovl.value & 0xff000000) >> 24) {
+   case 0x40: s390_format_RX_RRRD(s390_irgen_STH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x41: s390_format_RX_RRRD(s390_irgen_LA, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x42: s390_format_RX_RRRD(s390_irgen_STC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x43: s390_format_RX_RRRD(s390_irgen_IC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x44: s390_format_RX_RRRD(s390_irgen_EX, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x45: /* BAL */ goto unimplemented;
+   case 0x46: s390_format_RX_RRRD(s390_irgen_BCT, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x47: s390_format_RX(s390_irgen_BC, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                             ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x48: s390_format_RX_RRRD(s390_irgen_LH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x49: s390_format_RX_RRRD(s390_irgen_CH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4a: s390_format_RX_RRRD(s390_irgen_AH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4b: s390_format_RX_RRRD(s390_irgen_SH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4c: s390_format_RX_RRRD(s390_irgen_MH, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4d: s390_format_RX_RRRD(s390_irgen_BAS, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4e: s390_format_RX_RRRD(s390_irgen_CVD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x4f: s390_format_RX_RRRD(s390_irgen_CVB, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x50: s390_format_RX_RRRD(s390_irgen_ST, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x51: s390_format_RX_RRRD(s390_irgen_LAE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x54: s390_format_RX_RRRD(s390_irgen_N, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x55: s390_format_RX_RRRD(s390_irgen_CL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x56: s390_format_RX_RRRD(s390_irgen_O, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x57: s390_format_RX_RRRD(s390_irgen_X, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x58: s390_format_RX_RRRD(s390_irgen_L, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x59: s390_format_RX_RRRD(s390_irgen_C, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5a: s390_format_RX_RRRD(s390_irgen_A, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5b: s390_format_RX_RRRD(s390_irgen_S, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5c: s390_format_RX_RRRD(s390_irgen_M, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5d: s390_format_RX_RRRD(s390_irgen_D, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5e: s390_format_RX_RRRD(s390_irgen_AL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x5f: s390_format_RX_RRRD(s390_irgen_SL, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x60: s390_format_RX_FRRD(s390_irgen_STD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x67: /* MXD */ goto unimplemented;
+   case 0x68: s390_format_RX_FRRD(s390_irgen_LD, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x69: /* CD */ goto unimplemented;
+   case 0x6a: /* AD */ goto unimplemented;
+   case 0x6b: /* SD */ goto unimplemented;
+   case 0x6c: /* MD */ goto unimplemented;
+   case 0x6d: /* DD */ goto unimplemented;
+   case 0x6e: /* AW */ goto unimplemented;
+   case 0x6f: /* SW */ goto unimplemented;
+   case 0x70: s390_format_RX_FRRD(s390_irgen_STE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x71: s390_format_RX_RRRD(s390_irgen_MS, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x78: s390_format_RX_FRRD(s390_irgen_LE, ovl.fmt.RX.r1, ovl.fmt.RX.x2,
+                                  ovl.fmt.RX.b2, ovl.fmt.RX.d2);  goto ok;
+   case 0x79: /* CE */ goto unimplemented;
+   case 0x7a: /* AE */ goto unimplemented;
+   case 0x7b: /* SE */ goto unimplemented;
+   case 0x7c: /* MDE */ goto unimplemented;
+   case 0x7d: /* DE */ goto unimplemented;
+   case 0x7e: /* AU */ goto unimplemented;
+   case 0x7f: /* SU */ goto unimplemented;
+   case 0x83: /* DIAG */ goto unimplemented;
+   case 0x84: s390_format_RSI_RRP(s390_irgen_BRXH, ovl.fmt.RSI.r1,
+                                  ovl.fmt.RSI.r3, ovl.fmt.RSI.i2);  goto ok;
+   case 0x85: s390_format_RSI_RRP(s390_irgen_BRXLE, ovl.fmt.RSI.r1,
+                                  ovl.fmt.RSI.r3, ovl.fmt.RSI.i2);  goto ok;
+   case 0x86: s390_format_RS_RRRD(s390_irgen_BXH, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x87: s390_format_RS_RRRD(s390_irgen_BXLE, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x88: s390_format_RS_R0RD(s390_irgen_SRL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x89: s390_format_RS_R0RD(s390_irgen_SLL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8a: s390_format_RS_R0RD(s390_irgen_SRA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8b: s390_format_RS_R0RD(s390_irgen_SLA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8c: s390_format_RS_R0RD(s390_irgen_SRDL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8d: s390_format_RS_R0RD(s390_irgen_SLDL, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8e: s390_format_RS_R0RD(s390_irgen_SRDA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x8f: s390_format_RS_R0RD(s390_irgen_SLDA, ovl.fmt.RS.r1, ovl.fmt.RS.b2,
+                                  ovl.fmt.RS.d2);  goto ok;
+   case 0x90: s390_format_RS_RRRD(s390_irgen_STM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x91: s390_format_SI_URD(s390_irgen_TM, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x92: s390_format_SI_URD(s390_irgen_MVI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x94: s390_format_SI_URD(s390_irgen_NI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x95: s390_format_SI_URD(s390_irgen_CLI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x96: s390_format_SI_URD(s390_irgen_OI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x97: s390_format_SI_URD(s390_irgen_XI, ovl.fmt.SI.i2, ovl.fmt.SI.b1,
+                                 ovl.fmt.SI.d1);  goto ok;
+   case 0x98: s390_format_RS_RRRD(s390_irgen_LM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x99: /* TRACE */ goto unimplemented;
+   case 0x9a: s390_format_RS_AARD(s390_irgen_LAM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0x9b: s390_format_RS_AARD(s390_irgen_STAM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0xa8: s390_format_RS_RRRD(s390_irgen_MVCLE, ovl.fmt.RS.r1,
+                                  ovl.fmt.RS.r3, ovl.fmt.RS.b2, ovl.fmt.RS.d2);
+                                  goto ok;
+   case 0xa9: s390_format_RS_RRRD(s390_irgen_CLCLE, ovl.fmt.RS.r1,
+                                  ovl.fmt.RS.r3, ovl.fmt.RS.b2, ovl.fmt.RS.d2);
+                                  goto ok;
+   case 0xac: /* STNSM */ goto unimplemented;
+   case 0xad: /* STOSM */ goto unimplemented;
+   case 0xae: /* SIGP */ goto unimplemented;
+   case 0xaf: /* MC */ goto unimplemented;
+   case 0xb1: /* LRA */ goto unimplemented;
+   case 0xb6: /* STCTL */ goto unimplemented;
+   case 0xb7: /* LCTL */ goto unimplemented;
+   case 0xba: s390_format_RS_RRRD(s390_irgen_CS, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0xbb: /* CDS */ goto unimplemented;
+   case 0xbd: s390_format_RS_RURD(s390_irgen_CLM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0xbe: s390_format_RS_RURD(s390_irgen_STCM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   case 0xbf: s390_format_RS_RURD(s390_irgen_ICM, ovl.fmt.RS.r1, ovl.fmt.RS.r3,
+                                  ovl.fmt.RS.b2, ovl.fmt.RS.d2);  goto ok;
+   }
+
+   return S390_DECODE_UNKNOWN_INSN;
+
+ok:
+   return S390_DECODE_OK;
+
+unimplemented:
+   return S390_DECODE_UNIMPLEMENTED_INSN;
+}
+
+static s390_decode_t
+s390_decode_6byte_and_irgen(UChar *bytes)
+{
+   typedef union {
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int r3  :  4;
+         unsigned int i2  : 16;
+         unsigned int     :  8;
+         unsigned int op2 :  8;
+      } RIE;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int r2  :  4;
+         unsigned int i3  :  8;
+         unsigned int i4  :  8;
+         unsigned int i5  :  8;
+         unsigned int op2 :  8;
+      } RIE_RRUUU;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int     :  4;
+         unsigned int i2  : 16;
+         unsigned int m3  :  4;
+         unsigned int     :  4;
+         unsigned int op2 :  8;
+      } RIEv1;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int r2  :  4;
+         unsigned int i4  : 16;
+         unsigned int m3  :  4;
+         unsigned int     :  4;
+         unsigned int op2 :  8;
+      } RIE_RRPU;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int m3  :  4;
+         unsigned int i4  : 16;
+         unsigned int i2  :  8;
+         unsigned int op2 :  8;
+      } RIEv3;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int op2 :  4;
+         unsigned int i2  : 32;
+      } RIL;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int m3  :  4;
+         unsigned int b4  :  4;
+         unsigned int d4  : 12;
+         unsigned int i2  :  8;
+         unsigned int op2 :  8;
+      } RIS;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int r2  :  4;
+         unsigned int b4  :  4;
+         unsigned int d4  : 12;
+         unsigned int m3  :  4;
+         unsigned int     :  4;
+         unsigned int op2 :  8;
+      } RRS;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int l1  :  4;
+         unsigned int     :  4;
+         unsigned int b1  :  4;
+         unsigned int d1  : 12;
+         unsigned int     :  8;
+         unsigned int op2 :  8;
+      } RSL;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int r3  :  4;
+         unsigned int b2  :  4;
+         unsigned int dl2 : 12;
+         unsigned int dh2 :  8;
+         unsigned int op2 :  8;
+      } RSY;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int x2  :  4;
+         unsigned int b2  :  4;
+         unsigned int d2  : 12;
+         unsigned int     :  8;
+         unsigned int op2 :  8;
+      } RXE;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r3  :  4;
+         unsigned int x2  :  4;
+         unsigned int b2  :  4;
+         unsigned int d2  : 12;
+         unsigned int r1  :  4;
+         unsigned int     :  4;
+         unsigned int op2 :  8;
+      } RXF;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r1  :  4;
+         unsigned int x2  :  4;
+         unsigned int b2  :  4;
+         unsigned int dl2 : 12;
+         unsigned int dh2 :  8;
+         unsigned int op2 :  8;
+      } RXY;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int i2  :  8;
+         unsigned int b1  :  4;
+         unsigned int dl1 : 12;
+         unsigned int dh1 :  8;
+         unsigned int op2 :  8;
+      } SIY;
+      struct {
+         unsigned int op :  8;
+         unsigned int l  :  8;
+         unsigned int b1 :  4;
+         unsigned int d1 : 12;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } SS;
+      struct {
+         unsigned int op :  8;
+         unsigned int l1 :  4;
+         unsigned int l2 :  4;
+         unsigned int b1 :  4;
+         unsigned int d1 : 12;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } SS_LLRDRD;
+      struct {
+         unsigned int op :  8;
+         unsigned int r1 :  4;
+         unsigned int r3 :  4;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+         unsigned int b4 :  4;
+         unsigned int d4 : 12;
+      } SS_RRRDRD2;
+      struct {
+         unsigned int op : 16;
+         unsigned int b1 :  4;
+         unsigned int d1 : 12;
+         unsigned int b2 :  4;
+         unsigned int d2 : 12;
+      } SSE;
+      struct {
+         unsigned int op1 :  8;
+         unsigned int r3  :  4;
+         unsigned int op2 :  4;
+         unsigned int b1  :  4;
+         unsigned int d1  : 12;
+         unsigned int b2  :  4;
+         unsigned int d2  : 12;
+      } SSF;
+      struct {
+         unsigned int op : 16;
+         unsigned int b1 :  4;
+         unsigned int d1 : 12;
+         unsigned int i2 : 16;
+      } SIL;
+   } formats;
+   union {
+      formats fmt;
+      ULong value;
+   } ovl;
+
+   vassert(sizeof(formats) == 6);
+
+   ((char *)(&ovl.value))[0] = bytes[0];
+   ((char *)(&ovl.value))[1] = bytes[1];
+   ((char *)(&ovl.value))[2] = bytes[2];
+   ((char *)(&ovl.value))[3] = bytes[3];
+   ((char *)(&ovl.value))[4] = bytes[4];
+   ((char *)(&ovl.value))[5] = bytes[5];
+   ((char *)(&ovl.value))[6] = 0x0;
+   ((char *)(&ovl.value))[7] = 0x0;
+
+   switch ((ovl.value >> 16) & 0xff00000000ffULL) {
+   case 0xe30000000002ULL: s390_format_RXY_RRRD(s390_irgen_LTG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000003ULL: /* LRAG */ goto unimplemented;
+   case 0xe30000000004ULL: s390_format_RXY_RRRD(s390_irgen_LG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000006ULL: s390_format_RXY_RRRD(s390_irgen_CVBY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000008ULL: s390_format_RXY_RRRD(s390_irgen_AG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000009ULL: s390_format_RXY_RRRD(s390_irgen_SG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000aULL: s390_format_RXY_RRRD(s390_irgen_ALG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000bULL: s390_format_RXY_RRRD(s390_irgen_SLG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000cULL: s390_format_RXY_RRRD(s390_irgen_MSG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000dULL: s390_format_RXY_RRRD(s390_irgen_DSG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000000eULL: /* CVBG */ goto unimplemented;
+   case 0xe3000000000fULL: s390_format_RXY_RRRD(s390_irgen_LRVG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000012ULL: s390_format_RXY_RRRD(s390_irgen_LT, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000013ULL: /* LRAY */ goto unimplemented;
+   case 0xe30000000014ULL: s390_format_RXY_RRRD(s390_irgen_LGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000015ULL: s390_format_RXY_RRRD(s390_irgen_LGH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000016ULL: s390_format_RXY_RRRD(s390_irgen_LLGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000017ULL: s390_format_RXY_RRRD(s390_irgen_LLGT, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000018ULL: s390_format_RXY_RRRD(s390_irgen_AGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000019ULL: s390_format_RXY_RRRD(s390_irgen_SGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001aULL: s390_format_RXY_RRRD(s390_irgen_ALGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001bULL: s390_format_RXY_RRRD(s390_irgen_SLGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001cULL: s390_format_RXY_RRRD(s390_irgen_MSGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001dULL: s390_format_RXY_RRRD(s390_irgen_DSGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001eULL: s390_format_RXY_RRRD(s390_irgen_LRV, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000001fULL: s390_format_RXY_RRRD(s390_irgen_LRVH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000020ULL: s390_format_RXY_RRRD(s390_irgen_CG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000021ULL: s390_format_RXY_RRRD(s390_irgen_CLG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000024ULL: s390_format_RXY_RRRD(s390_irgen_STG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000026ULL: s390_format_RXY_RRRD(s390_irgen_CVDY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000002eULL: /* CVDG */ goto unimplemented;
+   case 0xe3000000002fULL: s390_format_RXY_RRRD(s390_irgen_STRVG,
+                                                ovl.fmt.RXY.r1, ovl.fmt.RXY.x2,
+                                                ovl.fmt.RXY.b2, ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000030ULL: s390_format_RXY_RRRD(s390_irgen_CGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000031ULL: s390_format_RXY_RRRD(s390_irgen_CLGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000032ULL: s390_format_RXY_RRRD(s390_irgen_LTGF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000034ULL: s390_format_RXY_RRRD(s390_irgen_CGH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000036ULL: s390_format_RXY_URRD(s390_irgen_PFD, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000003eULL: s390_format_RXY_RRRD(s390_irgen_STRV, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000003fULL: s390_format_RXY_RRRD(s390_irgen_STRVH,
+                                                ovl.fmt.RXY.r1, ovl.fmt.RXY.x2,
+                                                ovl.fmt.RXY.b2, ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000046ULL: s390_format_RXY_RRRD(s390_irgen_BCTG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000050ULL: s390_format_RXY_RRRD(s390_irgen_STY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000051ULL: s390_format_RXY_RRRD(s390_irgen_MSY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000054ULL: s390_format_RXY_RRRD(s390_irgen_NY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000055ULL: s390_format_RXY_RRRD(s390_irgen_CLY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000056ULL: s390_format_RXY_RRRD(s390_irgen_OY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000057ULL: s390_format_RXY_RRRD(s390_irgen_XY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000058ULL: s390_format_RXY_RRRD(s390_irgen_LY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000059ULL: s390_format_RXY_RRRD(s390_irgen_CY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000005aULL: s390_format_RXY_RRRD(s390_irgen_AY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000005bULL: s390_format_RXY_RRRD(s390_irgen_SY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000005cULL: s390_format_RXY_RRRD(s390_irgen_MFY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000005eULL: s390_format_RXY_RRRD(s390_irgen_ALY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000005fULL: s390_format_RXY_RRRD(s390_irgen_SLY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000070ULL: s390_format_RXY_RRRD(s390_irgen_STHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000071ULL: s390_format_RXY_RRRD(s390_irgen_LAY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000072ULL: s390_format_RXY_RRRD(s390_irgen_STCY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000073ULL: s390_format_RXY_RRRD(s390_irgen_ICY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000075ULL: s390_format_RXY_RRRD(s390_irgen_LAEY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000076ULL: s390_format_RXY_RRRD(s390_irgen_LB, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000077ULL: s390_format_RXY_RRRD(s390_irgen_LGB, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000078ULL: s390_format_RXY_RRRD(s390_irgen_LHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000079ULL: s390_format_RXY_RRRD(s390_irgen_CHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000007aULL: s390_format_RXY_RRRD(s390_irgen_AHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000007bULL: s390_format_RXY_RRRD(s390_irgen_SHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000007cULL: s390_format_RXY_RRRD(s390_irgen_MHY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000080ULL: s390_format_RXY_RRRD(s390_irgen_NG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000081ULL: s390_format_RXY_RRRD(s390_irgen_OG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000082ULL: s390_format_RXY_RRRD(s390_irgen_XG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000086ULL: s390_format_RXY_RRRD(s390_irgen_MLG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000087ULL: s390_format_RXY_RRRD(s390_irgen_DLG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000088ULL: s390_format_RXY_RRRD(s390_irgen_ALCG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000089ULL: s390_format_RXY_RRRD(s390_irgen_SLBG, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000008eULL: s390_format_RXY_RRRD(s390_irgen_STPQ, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe3000000008fULL: s390_format_RXY_RRRD(s390_irgen_LPQ, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000090ULL: s390_format_RXY_RRRD(s390_irgen_LLGC, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000091ULL: s390_format_RXY_RRRD(s390_irgen_LLGH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000094ULL: s390_format_RXY_RRRD(s390_irgen_LLC, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000095ULL: s390_format_RXY_RRRD(s390_irgen_LLH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000096ULL: s390_format_RXY_RRRD(s390_irgen_ML, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000097ULL: s390_format_RXY_RRRD(s390_irgen_DL, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000098ULL: s390_format_RXY_RRRD(s390_irgen_ALC, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe30000000099ULL: s390_format_RXY_RRRD(s390_irgen_SLB, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c0ULL: s390_format_RXY_RRRD(s390_irgen_LBH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c2ULL: s390_format_RXY_RRRD(s390_irgen_LLCH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c3ULL: s390_format_RXY_RRRD(s390_irgen_STCH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c4ULL: s390_format_RXY_RRRD(s390_irgen_LHH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c6ULL: s390_format_RXY_RRRD(s390_irgen_LLHH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000c7ULL: s390_format_RXY_RRRD(s390_irgen_STHH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000caULL: s390_format_RXY_RRRD(s390_irgen_LFH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000cbULL: s390_format_RXY_RRRD(s390_irgen_STFH, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000cdULL: s390_format_RXY_RRRD(s390_irgen_CHF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xe300000000cfULL: s390_format_RXY_RRRD(s390_irgen_CLHF, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xeb0000000004ULL: s390_format_RSY_RRRD(s390_irgen_LMG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000000aULL: s390_format_RSY_RRRD(s390_irgen_SRAG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000000bULL: s390_format_RSY_RRRD(s390_irgen_SLAG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000000cULL: s390_format_RSY_RRRD(s390_irgen_SRLG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000000dULL: s390_format_RSY_RRRD(s390_irgen_SLLG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000000fULL: /* TRACG */ goto unimplemented;
+   case 0xeb0000000014ULL: s390_format_RSY_RRRD(s390_irgen_CSY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000001cULL: s390_format_RSY_RRRD(s390_irgen_RLLG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000001dULL: s390_format_RSY_RRRD(s390_irgen_RLL, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000020ULL: s390_format_RSY_RURD(s390_irgen_CLMH, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000021ULL: s390_format_RSY_RURD(s390_irgen_CLMY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000024ULL: s390_format_RSY_RRRD(s390_irgen_STMG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000025ULL: /* STCTG */ goto unimplemented;
+   case 0xeb0000000026ULL: s390_format_RSY_RRRD(s390_irgen_STMH, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000002cULL: s390_format_RSY_RURD(s390_irgen_STCMH,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000002dULL: s390_format_RSY_RURD(s390_irgen_STCMY,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000002fULL: /* LCTLG */ goto unimplemented;
+   case 0xeb0000000030ULL: s390_format_RSY_RRRD(s390_irgen_CSG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000031ULL: /* CDSY */ goto unimplemented;
+   case 0xeb000000003eULL: /* CDSG */ goto unimplemented;
+   case 0xeb0000000044ULL: s390_format_RSY_RRRD(s390_irgen_BXHG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000045ULL: s390_format_RSY_RRRD(s390_irgen_BXLEG,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000004cULL: /* ECAG */ goto unimplemented;
+   case 0xeb0000000051ULL: s390_format_SIY_URD(s390_irgen_TMY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000052ULL: s390_format_SIY_URD(s390_irgen_MVIY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000054ULL: s390_format_SIY_URD(s390_irgen_NIY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000055ULL: s390_format_SIY_URD(s390_irgen_CLIY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000056ULL: s390_format_SIY_URD(s390_irgen_OIY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000057ULL: s390_format_SIY_URD(s390_irgen_XIY, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb000000006aULL: s390_format_SIY_IRD(s390_irgen_ASI, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb000000006eULL: s390_format_SIY_IRD(s390_irgen_ALSI, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb000000007aULL: s390_format_SIY_IRD(s390_irgen_AGSI, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb000000007eULL: s390_format_SIY_IRD(s390_irgen_ALGSI, ovl.fmt.SIY.i2,
+                                               ovl.fmt.SIY.b1, ovl.fmt.SIY.dl1,
+                                               ovl.fmt.SIY.dh1);  goto ok;
+   case 0xeb0000000080ULL: s390_format_RSY_RURD(s390_irgen_ICMH, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000081ULL: s390_format_RSY_RURD(s390_irgen_ICMY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000008eULL: /* MVCLU */ goto unimplemented;
+   case 0xeb000000008fULL: /* CLCLU */ goto unimplemented;
+   case 0xeb0000000090ULL: s390_format_RSY_RRRD(s390_irgen_STMY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000096ULL: s390_format_RSY_RRRD(s390_irgen_LMH, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb0000000098ULL: s390_format_RSY_RRRD(s390_irgen_LMY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000009aULL: s390_format_RSY_AARD(s390_irgen_LAMY, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb000000009bULL: s390_format_RSY_AARD(s390_irgen_STAMY,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000c0ULL: /* TP */ goto unimplemented;
+   case 0xeb00000000dcULL: s390_format_RSY_RRRD(s390_irgen_SRAK, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000ddULL: s390_format_RSY_RRRD(s390_irgen_SLAK, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000deULL: s390_format_RSY_RRRD(s390_irgen_SRLK, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000dfULL: s390_format_RSY_RRRD(s390_irgen_SLLK, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000e2ULL: s390_format_RSY_RDRM(s390_irgen_LOCG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2,
+                                                S390_XMNM_LOCG);  goto ok;
+   case 0xeb00000000e3ULL: s390_format_RSY_RDRM(s390_irgen_STOCG,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2,
+                                                S390_XMNM_STOCG);  goto ok;
+   case 0xeb00000000e4ULL: s390_format_RSY_RRRD(s390_irgen_LANG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000e6ULL: s390_format_RSY_RRRD(s390_irgen_LAOG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000e7ULL: s390_format_RSY_RRRD(s390_irgen_LAXG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000e8ULL: s390_format_RSY_RRRD(s390_irgen_LAAG, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000eaULL: s390_format_RSY_RRRD(s390_irgen_LAALG,
+                                                ovl.fmt.RSY.r1, ovl.fmt.RSY.r3,
+                                                ovl.fmt.RSY.b2, ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000f2ULL: s390_format_RSY_RDRM(s390_irgen_LOC, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2, S390_XMNM_LOC);
+                                                goto ok;
+   case 0xeb00000000f3ULL: s390_format_RSY_RDRM(s390_irgen_STOC, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2,
+                                                S390_XMNM_STOC);  goto ok;
+   case 0xeb00000000f4ULL: s390_format_RSY_RRRD(s390_irgen_LAN, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000f6ULL: s390_format_RSY_RRRD(s390_irgen_LAO, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000f7ULL: s390_format_RSY_RRRD(s390_irgen_LAX, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000f8ULL: s390_format_RSY_RRRD(s390_irgen_LAA, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xeb00000000faULL: s390_format_RSY_RRRD(s390_irgen_LAAL, ovl.fmt.RSY.r1,
+                                                ovl.fmt.RSY.r3, ovl.fmt.RSY.b2,
+                                                ovl.fmt.RSY.dl2,
+                                                ovl.fmt.RSY.dh2);  goto ok;
+   case 0xec0000000044ULL: s390_format_RIE_RRP(s390_irgen_BRXHG, ovl.fmt.RIE.r1,
+                                               ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+                                               goto ok;
+   case 0xec0000000045ULL: s390_format_RIE_RRP(s390_irgen_BRXLG, ovl.fmt.RIE.r1,
+                                               ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+                                               goto ok;
+   case 0xec0000000051ULL: /* RISBLG */ goto unimplemented;
+   case 0xec0000000054ULL: s390_format_RIE_RRUUU(s390_irgen_RNSBG,
+                                                 ovl.fmt.RIE_RRUUU.r1,
+                                                 ovl.fmt.RIE_RRUUU.r2,
+                                                 ovl.fmt.RIE_RRUUU.i3,
+                                                 ovl.fmt.RIE_RRUUU.i4,
+                                                 ovl.fmt.RIE_RRUUU.i5);
+                                                 goto ok;
+   case 0xec0000000055ULL: s390_format_RIE_RRUUU(s390_irgen_RISBG,
+                                                 ovl.fmt.RIE_RRUUU.r1,
+                                                 ovl.fmt.RIE_RRUUU.r2,
+                                                 ovl.fmt.RIE_RRUUU.i3,
+                                                 ovl.fmt.RIE_RRUUU.i4,
+                                                 ovl.fmt.RIE_RRUUU.i5);
+                                                 goto ok;
+   case 0xec0000000056ULL: s390_format_RIE_RRUUU(s390_irgen_ROSBG,
+                                                 ovl.fmt.RIE_RRUUU.r1,
+                                                 ovl.fmt.RIE_RRUUU.r2,
+                                                 ovl.fmt.RIE_RRUUU.i3,
+                                                 ovl.fmt.RIE_RRUUU.i4,
+                                                 ovl.fmt.RIE_RRUUU.i5);
+                                                 goto ok;
+   case 0xec0000000057ULL: s390_format_RIE_RRUUU(s390_irgen_RXSBG,
+                                                 ovl.fmt.RIE_RRUUU.r1,
+                                                 ovl.fmt.RIE_RRUUU.r2,
+                                                 ovl.fmt.RIE_RRUUU.i3,
+                                                 ovl.fmt.RIE_RRUUU.i4,
+                                                 ovl.fmt.RIE_RRUUU.i5);
+                                                 goto ok;
+   case 0xec000000005dULL: /* RISBHG */ goto unimplemented;
+   case 0xec0000000064ULL: s390_format_RIE_RRPU(s390_irgen_CGRJ,
+                                                ovl.fmt.RIE_RRPU.r1,
+                                                ovl.fmt.RIE_RRPU.r2,
+                                                ovl.fmt.RIE_RRPU.i4,
+                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+   case 0xec0000000065ULL: s390_format_RIE_RRPU(s390_irgen_CLGRJ,
+                                                ovl.fmt.RIE_RRPU.r1,
+                                                ovl.fmt.RIE_RRPU.r2,
+                                                ovl.fmt.RIE_RRPU.i4,
+                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+   case 0xec0000000070ULL: /* CGIT */ goto unimplemented;
+   case 0xec0000000071ULL: /* CLGIT */ goto unimplemented;
+   case 0xec0000000072ULL: /* CIT */ goto unimplemented;
+   case 0xec0000000073ULL: /* CLFIT */ goto unimplemented;
+   case 0xec0000000076ULL: s390_format_RIE_RRPU(s390_irgen_CRJ,
+                                                ovl.fmt.RIE_RRPU.r1,
+                                                ovl.fmt.RIE_RRPU.r2,
+                                                ovl.fmt.RIE_RRPU.i4,
+                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+   case 0xec0000000077ULL: s390_format_RIE_RRPU(s390_irgen_CLRJ,
+                                                ovl.fmt.RIE_RRPU.r1,
+                                                ovl.fmt.RIE_RRPU.r2,
+                                                ovl.fmt.RIE_RRPU.i4,
+                                                ovl.fmt.RIE_RRPU.m3);  goto ok;
+   case 0xec000000007cULL: s390_format_RIE_RUPI(s390_irgen_CGIJ,
+                                                ovl.fmt.RIEv3.r1,
+                                                ovl.fmt.RIEv3.m3,
+                                                ovl.fmt.RIEv3.i4,
+                                                ovl.fmt.RIEv3.i2);  goto ok;
+   case 0xec000000007dULL: s390_format_RIE_RUPU(s390_irgen_CLGIJ,
+                                                ovl.fmt.RIEv3.r1,
+                                                ovl.fmt.RIEv3.m3,
+                                                ovl.fmt.RIEv3.i4,
+                                                ovl.fmt.RIEv3.i2);  goto ok;
+   case 0xec000000007eULL: s390_format_RIE_RUPI(s390_irgen_CIJ,
+                                                ovl.fmt.RIEv3.r1,
+                                                ovl.fmt.RIEv3.m3,
+                                                ovl.fmt.RIEv3.i4,
+                                                ovl.fmt.RIEv3.i2);  goto ok;
+   case 0xec000000007fULL: s390_format_RIE_RUPU(s390_irgen_CLIJ,
+                                                ovl.fmt.RIEv3.r1,
+                                                ovl.fmt.RIEv3.m3,
+                                                ovl.fmt.RIEv3.i4,
+                                                ovl.fmt.RIEv3.i2);  goto ok;
+   case 0xec00000000d8ULL: s390_format_RIE_RRI0(s390_irgen_AHIK, ovl.fmt.RIE.r1,
+                                                ovl.fmt.RIE.r3, ovl.fmt.RIE.i2);
+                                                goto ok;
+   case 0xec00000000d9ULL: s390_format_RIE_RRI0(s390_irgen_AGHIK,
+                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
+                                                ovl.fmt.RIE.i2);  goto ok;
+   case 0xec00000000daULL: s390_format_RIE_RRI0(s390_irgen_ALHSIK,
+                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
+                                                ovl.fmt.RIE.i2);  goto ok;
+   case 0xec00000000dbULL: s390_format_RIE_RRI0(s390_irgen_ALGHSIK,
+                                                ovl.fmt.RIE.r1, ovl.fmt.RIE.r3,
+                                                ovl.fmt.RIE.i2);  goto ok;
+   case 0xec00000000e4ULL: s390_format_RRS(s390_irgen_CGRB, ovl.fmt.RRS.r1,
+                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
+                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+                                           goto ok;
+   case 0xec00000000e5ULL: s390_format_RRS(s390_irgen_CLGRB, ovl.fmt.RRS.r1,
+                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
+                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+                                           goto ok;
+   case 0xec00000000f6ULL: s390_format_RRS(s390_irgen_CRB, ovl.fmt.RRS.r1,
+                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
+                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+                                           goto ok;
+   case 0xec00000000f7ULL: s390_format_RRS(s390_irgen_CLRB, ovl.fmt.RRS.r1,
+                                           ovl.fmt.RRS.r2, ovl.fmt.RRS.b4,
+                                           ovl.fmt.RRS.d4, ovl.fmt.RRS.m3);
+                                           goto ok;
+   case 0xec00000000fcULL: s390_format_RIS_RURDI(s390_irgen_CGIB,
+                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
+                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
+                                                 ovl.fmt.RIS.i2);  goto ok;
+   case 0xec00000000fdULL: s390_format_RIS_RURDU(s390_irgen_CLGIB,
+                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
+                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
+                                                 ovl.fmt.RIS.i2);  goto ok;
+   case 0xec00000000feULL: s390_format_RIS_RURDI(s390_irgen_CIB, ovl.fmt.RIS.r1,
+                                                 ovl.fmt.RIS.m3, ovl.fmt.RIS.b4,
+                                                 ovl.fmt.RIS.d4,
+                                                 ovl.fmt.RIS.i2);  goto ok;
+   case 0xec00000000ffULL: s390_format_RIS_RURDU(s390_irgen_CLIB,
+                                                 ovl.fmt.RIS.r1, ovl.fmt.RIS.m3,
+                                                 ovl.fmt.RIS.b4, ovl.fmt.RIS.d4,
+                                                 ovl.fmt.RIS.i2);  goto ok;
+   case 0xed0000000004ULL: s390_format_RXE_FRRD(s390_irgen_LDEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000005ULL: s390_format_RXE_FRRD(s390_irgen_LXDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000006ULL: s390_format_RXE_FRRD(s390_irgen_LXEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000007ULL: /* MXDB */ goto unimplemented;
+   case 0xed0000000008ULL: /* KEB */ goto unimplemented;
+   case 0xed0000000009ULL: s390_format_RXE_FRRD(s390_irgen_CEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000000aULL: s390_format_RXE_FRRD(s390_irgen_AEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000000bULL: s390_format_RXE_FRRD(s390_irgen_SEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000000cULL: /* MDEB */ goto unimplemented;
+   case 0xed000000000dULL: s390_format_RXE_FRRD(s390_irgen_DEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000000eULL: s390_format_RXF_FRRDF(s390_irgen_MAEB,
+                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
+                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
+                                                 ovl.fmt.RXF.r1);  goto ok;
+   case 0xed000000000fULL: s390_format_RXF_FRRDF(s390_irgen_MSEB,
+                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
+                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
+                                                 ovl.fmt.RXF.r1);  goto ok;
+   case 0xed0000000010ULL: s390_format_RXE_FRRD(s390_irgen_TCEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000011ULL: s390_format_RXE_FRRD(s390_irgen_TCDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000012ULL: s390_format_RXE_FRRD(s390_irgen_TCXB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000014ULL: s390_format_RXE_FRRD(s390_irgen_SQEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000015ULL: s390_format_RXE_FRRD(s390_irgen_SQDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000017ULL: s390_format_RXE_FRRD(s390_irgen_MEEB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed0000000018ULL: /* KDB */ goto unimplemented;
+   case 0xed0000000019ULL: s390_format_RXE_FRRD(s390_irgen_CDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000001aULL: s390_format_RXE_FRRD(s390_irgen_ADB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000001bULL: s390_format_RXE_FRRD(s390_irgen_SDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000001cULL: s390_format_RXE_FRRD(s390_irgen_MDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000001dULL: s390_format_RXE_FRRD(s390_irgen_DDB, ovl.fmt.RXE.r1,
+                                                ovl.fmt.RXE.x2, ovl.fmt.RXE.b2,
+                                                ovl.fmt.RXE.d2);  goto ok;
+   case 0xed000000001eULL: s390_format_RXF_FRRDF(s390_irgen_MADB,
+                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
+                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
+                                                 ovl.fmt.RXF.r1);  goto ok;
+   case 0xed000000001fULL: s390_format_RXF_FRRDF(s390_irgen_MSDB,
+                                                 ovl.fmt.RXF.r3, ovl.fmt.RXF.x2,
+                                                 ovl.fmt.RXF.b2, ovl.fmt.RXF.d2,
+                                                 ovl.fmt.RXF.r1);  goto ok;
+   case 0xed0000000024ULL: /* LDE */ goto unimplemented;
+   case 0xed0000000025ULL: /* LXD */ goto unimplemented;
+   case 0xed0000000026ULL: /* LXE */ goto unimplemented;
+   case 0xed000000002eULL: /* MAE */ goto unimplemented;
+   case 0xed000000002fULL: /* MSE */ goto unimplemented;
+   case 0xed0000000034ULL: /* SQE */ goto unimplemented;
+   case 0xed0000000035ULL: /* SQD */ goto unimplemented;
+   case 0xed0000000037ULL: /* MEE */ goto unimplemented;
+   case 0xed0000000038ULL: /* MAYL */ goto unimplemented;
+   case 0xed0000000039ULL: /* MYL */ goto unimplemented;
+   case 0xed000000003aULL: /* MAY */ goto unimplemented;
+   case 0xed000000003bULL: /* MY */ goto unimplemented;
+   case 0xed000000003cULL: /* MAYH */ goto unimplemented;
+   case 0xed000000003dULL: /* MYH */ goto unimplemented;
+   case 0xed000000003eULL: /* MAD */ goto unimplemented;
+   case 0xed000000003fULL: /* MSD */ goto unimplemented;
+   case 0xed0000000040ULL: /* SLDT */ goto unimplemented;
+   case 0xed0000000041ULL: /* SRDT */ goto unimplemented;
+   case 0xed0000000048ULL: /* SLXT */ goto unimplemented;
+   case 0xed0000000049ULL: /* SRXT */ goto unimplemented;
+   case 0xed0000000050ULL: /* TDCET */ goto unimplemented;
+   case 0xed0000000051ULL: /* TDGET */ goto unimplemented;
+   case 0xed0000000054ULL: /* TDCDT */ goto unimplemented;
+   case 0xed0000000055ULL: /* TDGDT */ goto unimplemented;
+   case 0xed0000000058ULL: /* TDCXT */ goto unimplemented;
+   case 0xed0000000059ULL: /* TDGXT */ goto unimplemented;
+   case 0xed0000000064ULL: s390_format_RXY_FRRD(s390_irgen_LEY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xed0000000065ULL: s390_format_RXY_FRRD(s390_irgen_LDY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xed0000000066ULL: s390_format_RXY_FRRD(s390_irgen_STEY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   case 0xed0000000067ULL: s390_format_RXY_FRRD(s390_irgen_STDY, ovl.fmt.RXY.r1,
+                                                ovl.fmt.RXY.x2, ovl.fmt.RXY.b2,
+                                                ovl.fmt.RXY.dl2,
+                                                ovl.fmt.RXY.dh2);  goto ok;
+   }
+
+   switch (((ovl.value >> 16) & 0xff0f00000000ULL) >> 32) {
+   case 0xc000ULL: s390_format_RIL_RP(s390_irgen_LARL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc001ULL: s390_format_RIL_RI(s390_irgen_LGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc004ULL: s390_format_RIL(s390_irgen_BRCL, ovl.fmt.RIL.r1,
+                                   ovl.fmt.RIL.i2);  goto ok;
+   case 0xc005ULL: s390_format_RIL_RP(s390_irgen_BRASL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc006ULL: s390_format_RIL_RU(s390_irgen_XIHF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc007ULL: s390_format_RIL_RU(s390_irgen_XILF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc008ULL: s390_format_RIL_RU(s390_irgen_IIHF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc009ULL: s390_format_RIL_RU(s390_irgen_IILF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00aULL: s390_format_RIL_RU(s390_irgen_NIHF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00bULL: s390_format_RIL_RU(s390_irgen_NILF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00cULL: s390_format_RIL_RU(s390_irgen_OIHF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00dULL: s390_format_RIL_RU(s390_irgen_OILF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00eULL: s390_format_RIL_RU(s390_irgen_LLIHF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc00fULL: s390_format_RIL_RU(s390_irgen_LLILF, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc200ULL: s390_format_RIL_RI(s390_irgen_MSGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc201ULL: s390_format_RIL_RI(s390_irgen_MSFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc204ULL: s390_format_RIL_RU(s390_irgen_SLGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc205ULL: s390_format_RIL_RU(s390_irgen_SLFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc208ULL: s390_format_RIL_RI(s390_irgen_AGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc209ULL: s390_format_RIL_RI(s390_irgen_AFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20aULL: s390_format_RIL_RU(s390_irgen_ALGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20bULL: s390_format_RIL_RU(s390_irgen_ALFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20cULL: s390_format_RIL_RI(s390_irgen_CGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20dULL: s390_format_RIL_RI(s390_irgen_CFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20eULL: s390_format_RIL_RU(s390_irgen_CLGFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc20fULL: s390_format_RIL_RU(s390_irgen_CLFI, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc402ULL: s390_format_RIL_RP(s390_irgen_LLHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc404ULL: s390_format_RIL_RP(s390_irgen_LGHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc405ULL: s390_format_RIL_RP(s390_irgen_LHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc406ULL: s390_format_RIL_RP(s390_irgen_LLGHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc407ULL: s390_format_RIL_RP(s390_irgen_STHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc408ULL: s390_format_RIL_RP(s390_irgen_LGRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc40bULL: s390_format_RIL_RP(s390_irgen_STGRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc40cULL: s390_format_RIL_RP(s390_irgen_LGFRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc40dULL: s390_format_RIL_RP(s390_irgen_LRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc40eULL: s390_format_RIL_RP(s390_irgen_LLGFRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc40fULL: s390_format_RIL_RP(s390_irgen_STRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc600ULL: s390_format_RIL_RP(s390_irgen_EXRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc602ULL: s390_format_RIL_UP(s390_irgen_PFDRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc604ULL: s390_format_RIL_RP(s390_irgen_CGHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc605ULL: s390_format_RIL_RP(s390_irgen_CHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc606ULL: s390_format_RIL_RP(s390_irgen_CLGHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc607ULL: s390_format_RIL_RP(s390_irgen_CLHRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc608ULL: s390_format_RIL_RP(s390_irgen_CGRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc60aULL: s390_format_RIL_RP(s390_irgen_CLGRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc60cULL: s390_format_RIL_RP(s390_irgen_CGFRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc60dULL: s390_format_RIL_RP(s390_irgen_CRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc60eULL: s390_format_RIL_RP(s390_irgen_CLGFRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc60fULL: s390_format_RIL_RP(s390_irgen_CLRL, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xc800ULL: /* MVCOS */ goto unimplemented;
+   case 0xc801ULL: /* ECTG */ goto unimplemented;
+   case 0xc802ULL: /* CSST */ goto unimplemented;
+   case 0xc804ULL: /* LPD */ goto unimplemented;
+   case 0xc805ULL: /* LPDG */ goto unimplemented;
+   case 0xcc06ULL: /* BRCTH */ goto unimplemented;
+   case 0xcc08ULL: s390_format_RIL_RI(s390_irgen_AIH, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xcc0aULL: s390_format_RIL_RI(s390_irgen_ALSIH, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xcc0bULL: s390_format_RIL_RI(s390_irgen_ALSIHN, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xcc0dULL: s390_format_RIL_RI(s390_irgen_CIH, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   case 0xcc0fULL: s390_format_RIL_RU(s390_irgen_CLIH, ovl.fmt.RIL.r1,
+                                      ovl.fmt.RIL.i2);  goto ok;
+   }
+
+   switch (((ovl.value >> 16) & 0xff0000000000ULL) >> 40) {
+   case 0xd0ULL: /* TRTR */ goto unimplemented;
+   case 0xd1ULL: /* MVN */ goto unimplemented;
+   case 0xd2ULL: s390_format_SS_L0RDRD(s390_irgen_MVC, ovl.fmt.SS.l,
+                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
+                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd3ULL: /* MVZ */ goto unimplemented;
+   case 0xd4ULL: s390_format_SS_L0RDRD(s390_irgen_NC, ovl.fmt.SS.l,
+                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
+                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd5ULL: s390_format_SS_L0RDRD(s390_irgen_CLC, ovl.fmt.SS.l,
+                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
+                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd6ULL: s390_format_SS_L0RDRD(s390_irgen_OC, ovl.fmt.SS.l,
+                                       ovl.fmt.SS.b1, ovl.fmt.SS.d1,
+                                       ovl.fmt.SS.b2, ovl.fmt.SS.d2);  goto ok;
+   case 0xd7ULL:
+      if (ovl.fmt.SS.b1 == ovl.fmt.SS.b2 && ovl.fmt.SS.d1 == ovl.fmt.SS.d2)
+         s390_irgen_XC_sameloc(ovl.fmt.SS.l, ovl.fmt.SS.b1, ovl.fmt.SS.d1);
+      else
+        s390_format_SS_L0RDRD(s390_irgen_XC, ovl.fmt.SS.l,
+                              ovl.fmt.SS.b1, ovl.fmt.SS.d1,
+                              ovl.fmt.SS.b2, ovl.fmt.SS.d2);
+      goto ok;
+   case 0xd9ULL: /* MVCK */ goto unimplemented;
+   case 0xdaULL: /* MVCP */ goto unimplemented;
+   case 0xdbULL: /* MVCS */ goto unimplemented;
+   case 0xdcULL: /* TR */ goto unimplemented;
+   case 0xddULL: /* TRT */ goto unimplemented;
+   case 0xdeULL: /* ED */ goto unimplemented;
+   case 0xdfULL: /* EDMK */ goto unimplemented;
+   case 0xe1ULL: /* PKU */ goto unimplemented;
+   case 0xe2ULL: /* UNPKU */ goto unimplemented;
+   case 0xe8ULL: /* MVCIN */ goto unimplemented;
+   case 0xe9ULL: /* PKA */ goto unimplemented;
+   case 0xeaULL: /* UNPKA */ goto unimplemented;
+   case 0xeeULL: /* PLO */ goto unimplemented;
+   case 0xefULL: /* LMD */ goto unimplemented;
+   case 0xf0ULL: /* SRP */ goto unimplemented;
+   case 0xf1ULL: /* MVO */ goto unimplemented;
+   case 0xf2ULL: /* PACK */ goto unimplemented;
+   case 0xf3ULL: /* UNPK */ goto unimplemented;
+   case 0xf8ULL: /* ZAP */ goto unimplemented;
+   case 0xf9ULL: /* CP */ goto unimplemented;
+   case 0xfaULL: /* AP */ goto unimplemented;
+   case 0xfbULL: /* SP */ goto unimplemented;
+   case 0xfcULL: /* MP */ goto unimplemented;
+   case 0xfdULL: /* DP */ goto unimplemented;
+   }
+
+   switch (((ovl.value >> 16) & 0xffff00000000ULL) >> 32) {
+   case 0xe500ULL: /* LASP */ goto unimplemented;
+   case 0xe501ULL: /* TPROT */ goto unimplemented;
+   case 0xe502ULL: /* STRAG */ goto unimplemented;
+   case 0xe50eULL: /* MVCSK */ goto unimplemented;
+   case 0xe50fULL: /* MVCDK */ goto unimplemented;
+   case 0xe544ULL: s390_format_SIL_RDI(s390_irgen_MVHHI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe548ULL: s390_format_SIL_RDI(s390_irgen_MVGHI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe54cULL: s390_format_SIL_RDI(s390_irgen_MVHI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe554ULL: s390_format_SIL_RDI(s390_irgen_CHHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe555ULL: s390_format_SIL_RDU(s390_irgen_CLHHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe558ULL: s390_format_SIL_RDI(s390_irgen_CGHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe559ULL: s390_format_SIL_RDU(s390_irgen_CLGHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe55cULL: s390_format_SIL_RDI(s390_irgen_CHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   case 0xe55dULL: s390_format_SIL_RDU(s390_irgen_CLFHSI, ovl.fmt.SIL.b1,
+                                       ovl.fmt.SIL.d1, ovl.fmt.SIL.i2);
+                                       goto ok;
+   }
+
+   return S390_DECODE_UNKNOWN_INSN;
+
+ok:
+   return S390_DECODE_OK;
+
+unimplemented:
+   return S390_DECODE_UNIMPLEMENTED_INSN;
+}
+
+/* Handle "special" instructions. */
+static s390_decode_t
+s390_decode_special_and_irgen(UChar *bytes)
+{
+   s390_decode_t status = S390_DECODE_OK;
+
+   /* Got a "Special" instruction preamble.  Which one is it? */
+   if (bytes[0] == 0x18 && bytes[1] == 0x22 /* lr %r2, %r2 */) {
+      s390_irgen_client_request();
+   } else if (bytes[0] == 0x18 && bytes[1] == 0x33 /* lr %r3, %r3 */) {
+      s390_irgen_guest_NRADDR();
+   } else if (bytes[0] == 0x18 && bytes[1] == 0x44 /* lr %r4, %r4 */) {
+      s390_irgen_call_noredir();
+   } else {
+      /* We don't know what it is. */
+      return S390_DECODE_UNKNOWN_SPECIAL_INSN;
+   }
+
+   dis_res->len = S390_SPECIAL_OP_PREAMBLE_SIZE + S390_SPECIAL_OP_SIZE;
+
+   return status;
+}
+
+
+/* Function returns # bytes that were decoded or 0 in case of failure */
+UInt
+s390_decode_and_irgen(UChar *bytes, UInt insn_length, DisResult *dres)
+{
+   s390_decode_t status;
+
+   dis_res = dres;
+
+   /* Spot the 8-byte preamble:   18ff lr r15,r15
+                                  1811 lr r1,r1
+                                  1822 lr r2,r2
+                                  1833 lr r3,r3 */
+   if (bytes[ 0] == 0x18 && bytes[ 1] == 0xff && bytes[ 2] == 0x18 &&
+       bytes[ 3] == 0x11 && bytes[ 4] == 0x18 && bytes[ 5] == 0x22 &&
+       bytes[ 6] == 0x18 && bytes[ 7] == 0x33) {
+
+      /* Handle special instruction that follows that preamble. */
+      if (0) vex_printf("special function handling...\n");
+      bytes += S390_SPECIAL_OP_PREAMBLE_SIZE;
+      status = s390_decode_special_and_irgen(bytes);
+      insn_length = S390_SPECIAL_OP_SIZE;
+   } else {
+      /* Handle normal instructions. */
+      switch (insn_length) {
+      case 2:
+         status = s390_decode_2byte_and_irgen(bytes);
+         break;
+
+      case 4:
+         status = s390_decode_4byte_and_irgen(bytes);
+         break;
+
+      case 6:
+         status = s390_decode_6byte_and_irgen(bytes);
+         break;
+
+      default:
+        status = S390_DECODE_ERROR;
+        break;
+      }
+   }
+   /* next instruction is execute, stop here */
+   if (irsb->next == NULL && (*(char *)(HWord) guest_IA_next_instr == 0x44)) {
+      irsb->next = IRExpr_Const(IRConst_U64(guest_IA_next_instr));
+      dis_res->whatNext = Dis_StopHere;
+   }
+
+   if (status == S390_DECODE_OK) return insn_length;  /* OK */
+
+   /* Decoding failed somehow */
+   vex_printf("vex s390->IR: ");
+   switch (status) {
+   case S390_DECODE_UNKNOWN_INSN:
+      vex_printf("unknown insn: ");
+      break;
+
+   case S390_DECODE_UNIMPLEMENTED_INSN:
+      vex_printf("unimplemented insn: ");
+      break;
+
+   case S390_DECODE_UNKNOWN_SPECIAL_INSN:
+      vex_printf("unimplemented special insn: ");
+      break;
+
+   default:
+   case S390_DECODE_ERROR:
+      vex_printf("decoding error: ");
+      break;
+   }
+
+   vex_printf("%02x%02x", bytes[0], bytes[1]);
+   if (insn_length > 2) {
+      vex_printf(" %02x%02x", bytes[2], bytes[3]);
+   }
+   if (insn_length > 4) {
+      vex_printf(" %02x%02x", bytes[4], bytes[5]);
+   }
+   vex_printf("\n");
+
+   return 0;  /* Failed */
+}
+
+
+/* Generate an IRExpr for an address. */
+static __inline__ IRExpr *
+mkaddr_expr(Addr64 addr)
+{
+   return IRExpr_Const(IRConst_U64(addr));
+}
+
+
+/* Disassemble a single instruction INSN into IR. */
+static DisResult
+disInstr_S390_WRK(UChar *insn, Bool (*resteerOkFn)(void *, Addr64),
+                  void *callback_data)
+{
+   UChar byte;
+   UInt  insn_length;
+   DisResult dres;
+
+   /* ---------------------------------------------------- */
+   /* --- Compute instruction length                    -- */
+   /* ---------------------------------------------------- */
+
+   /* Get the first byte of the insn. */
+   byte = insn[0];
+
+   /* The leftmost two bits (0:1) encode the length of the insn in bytes.
+      00 -> 2 bytes, 01 -> 4 bytes, 10 -> 4 bytes, 11 -> 6 bytes. */
+   insn_length = ((((byte >> 6) + 1) >> 1) + 1) << 1;
+
+   guest_IA_next_instr = guest_IA_curr_instr + insn_length;
+
+   /* ---------------------------------------------------- */
+   /* --- Initialise the DisResult data                 -- */
+   /* ---------------------------------------------------- */
+   dres.whatNext   = Dis_Continue;
+   dres.len        = insn_length;
+   dres.continueAt = 0;
+
+   /* fixs390: we should probably pass the resteer-function and the callback
+      data. It's not needed for correctness but improves performance. */
+
+   /* Normal and special instruction handling starts here. */
+   if (s390_decode_and_irgen(insn, insn_length, &dres) == 0) {
+      /* All decode failures end up here. The decoder has already issued an
+         error message.
+         Tell the dispatcher that this insn cannot be decoded, and so has
+         not been executed, and (is currently) the next to be executed.
+         IA should be up-to-date since it made so at the start of each
+         insn, but nevertheless be paranoid and update it again right
+         now. */
+      addStmtToIRSB(irsb, IRStmt_Put(S390_GUEST_OFFSET(guest_IA),
+                                     mkaddr_expr(guest_IA_curr_instr)));
+
+      irsb->next = mkaddr_expr(guest_IA_next_instr);
+      irsb->jumpkind = Ijk_NoDecode;
+      dres.whatNext = Dis_StopHere;
+      dres.len = 0;
+
+      return dres;
+   }
+
+   return dres;
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Top-level fn                                         ---*/
+/*------------------------------------------------------------*/
+
+/* Disassemble a single instruction into IR.  The instruction
+   is located in host memory at &guest_code[delta]. */
+
+DisResult
+disInstr_S390(IRSB        *irsb_IN,
+              Bool         put_IP,
+              Bool       (*resteerOkFn)(void *, Addr64),
+              Bool         resteerCisOk,
+              void        *callback_opaque,
+              UChar       *guest_code,
+              Long         delta,
+              Addr64       guest_IP,
+              VexArch      guest_arch,
+              VexArchInfo *archinfo,
+              VexAbiInfo  *abiinfo,
+              Bool         host_bigendian)
+{
+   vassert(guest_arch == VexArchS390X);
+
+   /* The instruction decoder requires a big-endian machine. */
+   vassert(host_bigendian == True);
+
+   /* Set globals (see top of this file) */
+   guest_IA_curr_instr = guest_IP;
+
+   irsb = irsb_IN;
+
+   vassert(guest_arch == VexArchS390X);
+
+   /* We may be asked to update the guest IA before going further. */
+   if (put_IP)
+      addStmtToIRSB(irsb, IRStmt_Put(S390_GUEST_OFFSET(guest_IA),
+                                     mkaddr_expr(guest_IA_curr_instr)));
+
+   return disInstr_S390_WRK(guest_code + delta, resteerOkFn, callback_opaque);
+}
+
+/*---------------------------------------------------------------*/
+/*--- end                                   guest_s390_toIR.c ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_defs.h
index 09d647a9d..037bb6f9b 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_defs.h
@@ -86,7 +86,7 @@ extern UInt  x86g_calculate_eflags_all (
                 UInt cc_op, UInt cc_dep1, UInt cc_dep2, UInt cc_ndep 
              );
 
-__attribute((regparm(3)))
+VEX_REGPARM(3)
 extern UInt  x86g_calculate_eflags_c ( 
                 UInt cc_op, UInt cc_dep1, UInt cc_dep2, UInt cc_ndep 
              );
@@ -108,6 +108,8 @@ extern ULong x86g_calculate_RCL (
 
 extern UInt x86g_calculate_daa_das_aaa_aas ( UInt AX_and_flags, UInt opcode );
 
+extern UInt x86g_calculate_aad_aam ( UInt AX_and_flags, UInt opcode );
+
 extern ULong x86g_check_fldcw ( UInt fpucw );
 
 extern UInt  x86g_create_fpucw ( UInt fpround );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_helpers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_helpers.c
index 7aa7a3392..eebc7c26f 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_helpers.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_helpers.c
@@ -588,7 +588,7 @@ UInt x86g_calculate_eflags_all ( UInt cc_op,
 
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 /* Calculate just the carry flag from the supplied thunk parameters. */
-__attribute((regparm(3)))
+VEX_REGPARM(3)
 UInt x86g_calculate_eflags_c ( UInt cc_op, 
                                UInt cc_dep1, 
                                UInt cc_dep2,
@@ -2109,6 +2109,51 @@ UInt x86g_calculate_daa_das_aaa_aas ( UInt flags_and_AX, UInt opcode )
    return result;
 }
 
+UInt x86g_calculate_aad_aam ( UInt flags_and_AX, UInt opcode )
+{
+   UInt r_AL = (flags_and_AX >> 0) & 0xFF;
+   UInt r_AH = (flags_and_AX >> 8) & 0xFF;
+   UInt r_O  = (flags_and_AX >> (16 + X86G_CC_SHIFT_O)) & 1;
+   UInt r_S  = (flags_and_AX >> (16 + X86G_CC_SHIFT_S)) & 1;
+   UInt r_Z  = (flags_and_AX >> (16 + X86G_CC_SHIFT_Z)) & 1;
+   UInt r_A  = (flags_and_AX >> (16 + X86G_CC_SHIFT_A)) & 1;
+   UInt r_C  = (flags_and_AX >> (16 + X86G_CC_SHIFT_C)) & 1;
+   UInt r_P  = (flags_and_AX >> (16 + X86G_CC_SHIFT_P)) & 1;
+   UInt result = 0;
+
+   switch (opcode) {
+      case 0xD4: { /* AAM */
+         r_AH = r_AL / 10;
+         r_AL = r_AL % 10;
+         break;
+      }
+      case 0xD5: { /* AAD */
+         r_AL = ((r_AH * 10) + r_AL) & 0xff;
+         r_AH = 0;
+         break;
+      }
+      default:
+         vassert(0);
+   }
+
+   r_O = 0; /* let's say (undefined) */
+   r_C = 0; /* let's say (undefined) */
+   r_A = 0; /* let's say (undefined) */
+   r_S = (r_AL & 0x80) ? 1 : 0;
+   r_Z = (r_AL == 0) ? 1 : 0;
+   r_P = calc_parity_8bit( r_AL );
+
+   result =   ( (r_O & 1) << (16 + X86G_CC_SHIFT_O) )
+            | ( (r_S & 1) << (16 + X86G_CC_SHIFT_S) )
+            | ( (r_Z & 1) << (16 + X86G_CC_SHIFT_Z) )
+            | ( (r_A & 1) << (16 + X86G_CC_SHIFT_A) )
+            | ( (r_C & 1) << (16 + X86G_CC_SHIFT_C) )
+            | ( (r_P & 1) << (16 + X86G_CC_SHIFT_P) )
+            | ( (r_AH & 0xFF) << 8 )
+            | ( (r_AL & 0xFF) << 0 );
+   return result;
+}
+
 
 /* CALLED FROM GENERATED CODE */
 /* DIRTY HELPER (non-referentially-transparent) */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_toIR.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_toIR.c
index 761cd7f94..c23890802 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_toIR.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/guest_x86_toIR.c
@@ -998,7 +998,10 @@ static void setFlags_DEP1_DEP2_shift ( IROp    op32,
                                    widenUto32(mkexpr(resUS)))) );
    /* Set NDEP even though it isn't used.  This makes redundant-PUT
       elimination of previous stores to this field work better. */
-   stmt( IRStmt_Put( OFFB_CC_NDEP, mkU32(0) ));
+   stmt( IRStmt_Put( OFFB_CC_NDEP,
+                     IRExpr_Mux0X( mkexpr(guard),
+                                   IRExpr_Get(OFFB_CC_NDEP,Ity_I32),
+				   mkU32(0) )));
 }
 
 
@@ -2166,9 +2169,16 @@ UInt dis_movx_E_G ( UChar      sorb,
 {
    UChar rm = getIByte(delta);
    if (epartIsReg(rm)) {
-      putIReg(szd, gregOfRM(rm),
-                   unop(mkWidenOp(szs,szd,sign_extend), 
-                        getIReg(szs,eregOfRM(rm))));
+      if (szd == szs) {
+         // mutant case.  See #250799
+         putIReg(szd, gregOfRM(rm),
+                           getIReg(szs,eregOfRM(rm)));
+      } else {
+         // normal case
+         putIReg(szd, gregOfRM(rm),
+                      unop(mkWidenOp(szs,szd,sign_extend), 
+                           getIReg(szs,eregOfRM(rm))));
+      }
       DIP("mov%c%c%c %s,%s\n", sign_extend ? 's' : 'z',
                                nameISize(szs), nameISize(szd),
                                nameIReg(szs,eregOfRM(rm)),
@@ -2181,10 +2191,16 @@ UInt dis_movx_E_G ( UChar      sorb,
       Int    len;
       HChar  dis_buf[50];
       IRTemp addr = disAMode ( &len, sorb, delta, dis_buf );
-
-      putIReg(szd, gregOfRM(rm),
-                   unop(mkWidenOp(szs,szd,sign_extend), 
-                        loadLE(szToITy(szs),mkexpr(addr))));
+      if (szd == szs) {
+         // mutant case.  See #250799
+         putIReg(szd, gregOfRM(rm),
+                           loadLE(szToITy(szs),mkexpr(addr)));
+      } else {
+         // normal case
+         putIReg(szd, gregOfRM(rm),
+                      unop(mkWidenOp(szs,szd,sign_extend), 
+                           loadLE(szToITy(szs),mkexpr(addr))));
+      }
       DIP("mov%c%c%c %s,%s\n", sign_extend ? 's' : 'z',
                                nameISize(szs), nameISize(szd),
                                dis_buf, nameIReg(szd,gregOfRM(rm)));
@@ -7947,15 +7963,15 @@ DisResult disInstr_X86_WRK (
       }
 #if 1
       /* To make a syscall in L4Re the guest must access its UTCB.
-       * The address of the UTCB is stored in %gs, so we look for
+       * The address of the UTCB is stored in %fs, so we look for
        * the following instructions:
-       * 65 a1 00 00 00 00       mov    %gs:0x0,%eax
-       * 65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
-       * 65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
-       * 65 8b 3d 00 00 00 00    mov    %gs:0x0,%edi
-       * 65 8b 35 00 00 00 00    mov    %gs:0x0,%esi
+       * 64 a1 00 00 00 00       mov    %fs:0x0,%eax
+       * 64 8b 0d 00 00 00 00    mov    %fs:0x0,%ecx
+       * 64 8b 15 00 00 00 00    mov    %fs:0x0,%edx
+       * 64 8b 3d 00 00 00 00    mov    %fs:0x0,%edi
+       * 64 8b 35 00 00 00 00    mov    %fs:0x0,%esi
        */
-      if (code[ 0] == 0x65 && code[ 1] == 0xa1 && code[ 2] == 0x0 &&
+      if (code[ 0] == 0x64 && code[ 1] == 0xa1 && code[ 2] == 0x0 &&
           code[ 3] == 0x0  && code[ 4] == 0x0  && code[ 5] == 0x0) {
 //          printf("%x\n", code);
 //          printf("0x%x\n", guest_EIP_bbstart+delta);
@@ -7970,7 +7986,7 @@ DisResult disInstr_X86_WRK (
       /* utcb -> ebx */
       // TODO implement me
       /* utcb -> ecx */
-      if (code[ 0] == 0x65 && code[ 1] == 0x8b && code[ 2] == 0x0d &&
+      if (code[ 0] == 0x64 && code[ 1] == 0x8b && code[ 2] == 0x0d &&
           code[ 3] == 0x0  && code[ 4] == 0x0  && code[ 5] == 0x0  && code[ 6] == 0x0) {
           delta += 7;
           jmp_lit(Ijk_l4_utcb_ecx, guest_EIP_bbstart+delta);
@@ -7978,7 +7994,7 @@ DisResult disInstr_X86_WRK (
           goto decode_success;
       }
       /* utcb -> edx */
-      if (code[ 0] == 0x65 && code[ 1] == 0x8b && code[ 2] == 0x15 &&
+      if (code[ 0] == 0x64 && code[ 1] == 0x8b && code[ 2] == 0x15 &&
           code[ 3] == 0x0  && code[ 4] == 0x0  && code[ 5] == 0x0  && code[ 6] == 0x0) {
           delta += 7;
           jmp_lit(Ijk_l4_utcb_edx, guest_EIP_bbstart+delta);
@@ -7986,7 +8002,7 @@ DisResult disInstr_X86_WRK (
           goto decode_success;
       }
       /* utcb -> edi */
-      if (code[ 0] == 0x65 && code[ 1] == 0x8b && code[ 2] == 0x3d &&
+      if (code[ 0] == 0x64 && code[ 1] == 0x8b && code[ 2] == 0x3d &&
           code[ 3] == 0x0  && code[ 4] == 0x0  && code[ 5] == 0x0  && code[ 6] == 0x0) {
           delta += 7;
           jmp_lit(Ijk_l4_utcb_edi, guest_EIP_bbstart+delta);
@@ -7995,7 +8011,7 @@ DisResult disInstr_X86_WRK (
       }
 
       /* utcb -> esi */
-      if (code[ 0] == 0x65 && code[ 1] == 0x8b && code[ 2] == 0x35 &&
+      if (code[ 0] == 0x64 && code[ 1] == 0x8b && code[ 2] == 0x35 &&
           code[ 3] == 0x0  && code[ 4] == 0x0  && code[ 5] == 0x0  && code[ 6] == 0x0) {
           delta += 7;
           jmp_lit(Ijk_l4_utcb_esi, guest_EIP_bbstart+delta);
@@ -8166,6 +8182,7 @@ DisResult disInstr_X86_WRK (
 
       addr = disAMode ( &alen, sorb, delta+2, dis_buf );
       delta += 2+alen;
+      gen_SEGV_if_not_16_aligned(addr);
 
       DIP("fxsave %s\n", dis_buf);
 
@@ -8236,11 +8253,15 @@ DisResult disInstr_X86_WRK (
 
       addr = disAMode ( &alen, sorb, delta+2, dis_buf );
       delta += 2+alen;
+      gen_SEGV_if_not_16_aligned(addr);
 
       DIP("fxrstor %s\n", dis_buf);
 
       /* Uses dirty helper: 
-            void x86g_do_FXRSTOR ( VexGuestX86State*, UInt ) */
+            VexEmWarn x86g_do_FXRSTOR ( VexGuestX86State*, UInt )
+         NOTE:
+            the VexEmWarn value is simply ignored (unlike for FRSTOR)
+      */
       d = unsafeIRDirty_0_N ( 
              0/*regparms*/, 
              "x86g_dirtyhelper_FXRSTOR", 
@@ -8658,6 +8679,8 @@ DisResult disInstr_X86_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         if (insn[1] == 0x28/*movaps*/)
+            gen_SEGV_if_not_16_aligned( addr );
          putXMMReg( gregOfRM(modrm), 
                     loadLE(Ity_V128, mkexpr(addr)) );
          DIP("mov[ua]ps %s,%s\n", dis_buf,
@@ -8676,6 +8699,8 @@ DisResult disInstr_X86_WRK (
          /* fall through; awaiting test case */
       } else {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         if (insn[1] == 0x29/*movaps*/)
+            gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
          DIP("mov[ua]ps %s,%s\n", nameXMMReg(gregOfRM(modrm)),
                                   dis_buf );
@@ -8802,6 +8827,7 @@ DisResult disInstr_X86_WRK (
       modrm = getIByte(delta+2);
       if (!epartIsReg(modrm)) {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
          DIP("movntp%s %s,%s\n", sz==2 ? "d" : "s",
                                  dis_buf,
@@ -10027,6 +10053,8 @@ DisResult disInstr_X86_WRK (
          delta += 2+1;
       } else {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         if (insn[1] == 0x28/*movapd*/ || insn[1] == 0x6F/*movdqa*/)
+            gen_SEGV_if_not_16_aligned( addr );
          putXMMReg( gregOfRM(modrm), 
                     loadLE(Ity_V128, mkexpr(addr)) );
          DIP("mov%s %s,%s\n", wot, dis_buf,
@@ -10046,6 +10074,8 @@ DisResult disInstr_X86_WRK (
          /* fall through; awaiting test case */
       } else {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         if (insn[1] == 0x29/*movapd*/)
+            gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
          DIP("mov%s %s,%s\n", wot, nameXMMReg(gregOfRM(modrm)),
                                    dis_buf );
@@ -10108,6 +10138,7 @@ DisResult disInstr_X86_WRK (
       } else {
          addr = disAMode( &alen, sorb, delta+2, dis_buf );
          delta += 2+alen;
+         gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
          DIP("movdqa %s, %s\n", nameXMMReg(gregOfRM(modrm)), dis_buf);
       }
@@ -10319,6 +10350,7 @@ DisResult disInstr_X86_WRK (
       modrm = getIByte(delta+2);
       if (sz == 2 && !epartIsReg(modrm)) {
          addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         gen_SEGV_if_not_16_aligned( addr );
          storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
          DIP("movntdq %s,%s\n", dis_buf,
                                 nameXMMReg(gregOfRM(modrm)));
@@ -11621,6 +11653,7 @@ DisResult disInstr_X86_WRK (
          delta += 3+1;
       } else {
          addr = disAMode ( &alen, sorb, delta+3, dis_buf );
+         gen_SEGV_if_not_16_aligned( addr );
          assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
          DIP("movs%cdup %s,%s\n", isH ? 'h' : 'l',
 	     dis_buf,
@@ -12966,25 +12999,51 @@ DisResult disInstr_X86_WRK (
      }
      break;
 
-//--    case 0xD4: /* AAM */
-//--    case 0xD5: /* AAD */
-//--       d32 = getIByte(delta); delta++;
-//--       if (d32 != 10) VG_(core_panic)("disInstr: AAM/AAD but base not 10 !");
-//--       t1 = newTemp(cb);
-//--       uInstr2(cb, GET, 2, ArchReg, R_EAX, TempReg, t1);
-//--       /* Widen %AX to 32 bits, so it's all defined when we push it. */
-//--       uInstr1(cb, WIDEN, 4, TempReg, t1);
-//--       uWiden(cb, 2, False);
-//--       uInstr0(cb, CALLM_S, 0);
-//--       uInstr1(cb, PUSH, 4, TempReg, t1);
-//--       uInstr1(cb, CALLM, 0, Lit16, 
-//--                   opc == 0xD4 ? VGOFF_(helper_AAM) : VGOFF_(helper_AAD) );
-//--       uFlagsRWU(cb, FlagsEmpty, FlagsSZP, FlagsEmpty);
-//--       uInstr1(cb, POP, 4, TempReg, t1);
-//--       uInstr0(cb, CALLM_E, 0);
-//--       uInstr2(cb, PUT, 2, TempReg, t1, ArchReg, R_EAX);
-//--       DIP(opc == 0xD4 ? "aam\n" : "aad\n");
-//--       break;
+   case 0xD4: /* AAM */
+   case 0xD5: /* AAD */
+      d32 = getIByte(delta); delta++;
+      if (sz != 4 || d32 != 10) goto decode_failure;
+      t1 = newTemp(Ity_I32);
+      t2 = newTemp(Ity_I32);
+      /* Make up a 32-bit value (t1), with the old value of AX in the
+         bottom 16 bits, and the old OSZACP bitmask in the upper 16
+         bits. */
+      assign(t1, 
+             binop(Iop_16HLto32, 
+                   unop(Iop_32to16,
+                        mk_x86g_calculate_eflags_all()),
+                   getIReg(2, R_EAX)
+            ));
+      /* Call the helper fn, to get a new AX and OSZACP value, and
+         poke both back into the guest state.  Also pass the helper
+         the actual opcode so it knows which of the 2 instructions it
+         is doing the computation for. */
+      assign(t2,
+              mkIRExprCCall(
+                 Ity_I32, 0/*regparm*/, "x86g_calculate_aad_aam",
+                 &x86g_calculate_aad_aam,
+                 mkIRExprVec_2( mkexpr(t1), mkU32( opc & 0xFF) )
+            ));
+      putIReg(2, R_EAX, unop(Iop_32to16, mkexpr(t2) ));
+
+      stmt( IRStmt_Put( OFFB_CC_OP,   mkU32(X86G_CC_OP_COPY) ));
+      stmt( IRStmt_Put( OFFB_CC_DEP2, mkU32(0) ));
+      stmt( IRStmt_Put( OFFB_CC_DEP1, 
+                        binop(Iop_And32,
+                              binop(Iop_Shr32, mkexpr(t2), mkU8(16)),
+                              mkU32( X86G_CC_MASK_C | X86G_CC_MASK_P 
+                                     | X86G_CC_MASK_A | X86G_CC_MASK_Z 
+                                     | X86G_CC_MASK_S| X86G_CC_MASK_O )
+                             )
+                       )
+          );
+      /* Set NDEP even though it isn't used.  This makes
+         redundant-PUT elimination of previous stores to this field
+         work better. */
+      stmt( IRStmt_Put( OFFB_CC_NDEP, mkU32(0) ));
+
+      DIP(opc == 0xD4 ? "aam\n" : "aad\n");
+      break;
 
    /* ------------------------ CWD/CDQ -------------------- */
 
@@ -14708,9 +14767,9 @@ DisResult disInstr_X86_WRK (
          break;
 
       case 0xBF: /* MOVSXw Ew,Gv */
-         if (sz != 4)
+         if (sz != 4 && /* accept movsww, sigh, see #250799 */sz != 2)
             goto decode_failure;
-         delta = dis_movx_E_G ( sorb, delta, 2, 4, True );
+         delta = dis_movx_E_G ( sorb, delta, 2, sz, True );
          break;
 
 //--       /* =-=-=-=-=-=-=-=-=-=-= MOVNTI -=-=-=-=-=-=-=-=-= */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.c
index 1c3d012f7..3510927cd 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.c
@@ -737,11 +737,12 @@ AMD64Instr* AMD64Instr_CMov64 ( AMD64CondCode cond, AMD64RM* src, HReg dst ) {
    vassert(cond != Acc_ALWAYS);
    return i;
 }
-AMD64Instr* AMD64Instr_MovZLQ ( HReg src, HReg dst ) {
-   AMD64Instr* i     = LibVEX_Alloc(sizeof(AMD64Instr));
-   i->tag            = Ain_MovZLQ;
-   i->Ain.MovZLQ.src = src;
-   i->Ain.MovZLQ.dst = dst;
+AMD64Instr* AMD64Instr_MovxLQ ( Bool syned, HReg src, HReg dst ) {
+   AMD64Instr* i       = LibVEX_Alloc(sizeof(AMD64Instr));
+   i->tag              = Ain_MovxLQ;
+   i->Ain.MovxLQ.syned = syned;
+   i->Ain.MovxLQ.src   = src;
+   i->Ain.MovxLQ.dst   = dst;
    return i;
 }
 AMD64Instr* AMD64Instr_LoadEX ( UChar szSmall, Bool syned,
@@ -1138,11 +1139,11 @@ void ppAMD64Instr ( AMD64Instr* i, Bool mode64 )
          vex_printf(",");
          ppHRegAMD64(i->Ain.CMov64.dst);
          return;
-      case Ain_MovZLQ:
-         vex_printf("movzlq ");
-         ppHRegAMD64_lo32(i->Ain.MovZLQ.src);
+      case Ain_MovxLQ:
+         vex_printf("mov%clq ", i->Ain.MovxLQ.syned ? 's' : 'z');
+         ppHRegAMD64_lo32(i->Ain.MovxLQ.src);
          vex_printf(",");
-         ppHRegAMD64(i->Ain.MovZLQ.dst);
+         ppHRegAMD64(i->Ain.MovxLQ.dst);
          return;
       case Ain_LoadEX:
          if (i->Ain.LoadEX.szSmall==4 && !i->Ain.LoadEX.syned) {
@@ -1510,9 +1511,9 @@ void getRegUsage_AMD64Instr ( HRegUsage* u, AMD64Instr* i, Bool mode64 )
          addRegUsage_AMD64RM(u, i->Ain.CMov64.src, HRmRead);
          addHRegUse(u, HRmModify, i->Ain.CMov64.dst);
          return;
-      case Ain_MovZLQ:
-         addHRegUse(u, HRmRead,  i->Ain.MovZLQ.src);
-         addHRegUse(u, HRmWrite, i->Ain.MovZLQ.dst);
+      case Ain_MovxLQ:
+         addHRegUse(u, HRmRead,  i->Ain.MovxLQ.src);
+         addHRegUse(u, HRmWrite, i->Ain.MovxLQ.dst);
          return;
       case Ain_LoadEX:
          addRegUsage_AMD64AMode(u, i->Ain.LoadEX.src);
@@ -1740,9 +1741,9 @@ void mapRegs_AMD64Instr ( HRegRemap* m, AMD64Instr* i, Bool mode64 )
          mapRegs_AMD64RM(m, i->Ain.CMov64.src);
          mapReg(m, &i->Ain.CMov64.dst);
          return;
-      case Ain_MovZLQ:
-         mapReg(m, &i->Ain.MovZLQ.src);
-         mapReg(m, &i->Ain.MovZLQ.dst);
+      case Ain_MovxLQ:
+         mapReg(m, &i->Ain.MovxLQ.src);
+         mapReg(m, &i->Ain.MovxLQ.dst);
          return;
       case Ain_LoadEX:
          mapRegs_AMD64AMode(m, i->Ain.LoadEX.src);
@@ -2324,9 +2325,20 @@ Int emit_AMD64Instr ( UChar* buf, Int nbuf, AMD64Instr* i,
    switch (i->tag) {
 
    case Ain_Imm64:
-      *p++ = toUChar(0x48 + (1 & iregBit3(i->Ain.Imm64.dst)));
-      *p++ = toUChar(0xB8 + iregBits210(i->Ain.Imm64.dst));
-      p = emit64(p, i->Ain.Imm64.imm64);
+      if (i->Ain.Imm64.imm64 <= 0xFFFFFULL) {
+         /* Use the short form (load into 32 bit reg, + default
+            widening rule) for constants under 1 million.  We could
+            use this form for the range 0 to 0x7FFFFFFF inclusive, but
+            limit it to a smaller range for verifiability purposes. */
+         if (1 & iregBit3(i->Ain.Imm64.dst))
+            *p++ = 0x41;
+         *p++ = 0xB8 + iregBits210(i->Ain.Imm64.dst);
+         p = emit32(p, (UInt)i->Ain.Imm64.imm64);
+      } else {
+         *p++ = toUChar(0x48 + (1 & iregBit3(i->Ain.Imm64.dst)));
+         *p++ = toUChar(0xB8 + iregBits210(i->Ain.Imm64.dst));
+         p = emit64(p, i->Ain.Imm64.imm64);
+      }
       goto done;
 
    case Ain_Alu64R:
@@ -2334,7 +2346,7 @@ Int emit_AMD64Instr ( UChar* buf, Int nbuf, AMD64Instr* i,
       if (i->Ain.Alu64R.op == Aalu_MOV) {
          switch (i->Ain.Alu64R.src->tag) {
             case Armi_Imm:
-               if (0 == (i->Ain.Alu64R.src->Armi.Imm.imm32 & ~0xFFF)) {
+               if (0 == (i->Ain.Alu64R.src->Armi.Imm.imm32 & ~0xFFFFF)) {
                   /* Actually we could use this form for constants in
                      the range 0 through 0x7FFFFFFF inclusive, but
                      limit it to a small range for verifiability
@@ -2830,13 +2842,22 @@ Int emit_AMD64Instr ( UChar* buf, Int nbuf, AMD64Instr* i,
       }
       break;
 
-   case Ain_MovZLQ:
-      /* Produce a 32-bit reg-reg move, since the implicit zero-extend
-         does what we want. */
-      *p++ = clearWBit (
-                rexAMode_R(i->Ain.MovZLQ.src, i->Ain.MovZLQ.dst));
-      *p++ = 0x89;
-      p = doAMode_R(p, i->Ain.MovZLQ.src, i->Ain.MovZLQ.dst);
+   case Ain_MovxLQ:
+      /* No, _don't_ ask me why the sense of the args has to be
+         different in the S vs Z case.  I don't know. */
+      if (i->Ain.MovxLQ.syned) {
+         /* Need REX.W = 1 here, but rexAMode_R does that for us. */
+         *p++ = rexAMode_R(i->Ain.MovxLQ.dst, i->Ain.MovxLQ.src);
+         *p++ = 0x63;
+         p = doAMode_R(p, i->Ain.MovxLQ.dst, i->Ain.MovxLQ.src);
+      } else {
+         /* Produce a 32-bit reg-reg move, since the implicit
+            zero-extend does what we want. */
+         *p++ = clearWBit (
+                   rexAMode_R(i->Ain.MovxLQ.src, i->Ain.MovxLQ.dst));
+         *p++ = 0x89;
+         p = doAMode_R(p, i->Ain.MovxLQ.src, i->Ain.MovxLQ.dst);
+      }
       goto done;
 
    case Ain_LoadEX:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.h
index cf49ae148..cf19bac10 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_defs.h
@@ -366,7 +366,7 @@ typedef
       Ain_Call,        /* call to address in register */
       Ain_Goto,        /* conditional/unconditional jmp to dst */
       Ain_CMov64,      /* conditional move */
-      Ain_MovZLQ,      /* reg-reg move, zeroing out top half */
+      Ain_MovxLQ,      /* reg-reg move, zx-ing/sx-ing top half */
       Ain_LoadEX,      /* mov{s,z}{b,w,l}q from mem to reg */
       Ain_Store,       /* store 32/16/8 bit value in memory */
       Ain_Set64,       /* convert condition code to 64-bit value */
@@ -493,11 +493,12 @@ typedef
             AMD64RM*      src;
             HReg          dst;
          } CMov64;
-         /* reg-reg move, zeroing out top half */
+         /* reg-reg move, sx-ing/zx-ing top half */
          struct {
+            Bool syned;
             HReg src;
             HReg dst;
-         } MovZLQ;
+         } MovxLQ;
          /* Sign/Zero extending loads.  Dst size is always 64 bits. */
          struct {
             UChar       szSmall; /* only 1, 2 or 4 */
@@ -684,7 +685,7 @@ extern AMD64Instr* AMD64Instr_Push       ( AMD64RMI* );
 extern AMD64Instr* AMD64Instr_Call       ( AMD64CondCode, Addr64, Int );
 extern AMD64Instr* AMD64Instr_Goto       ( IRJumpKind, AMD64CondCode cond, AMD64RI* dst );
 extern AMD64Instr* AMD64Instr_CMov64     ( AMD64CondCode, AMD64RM* src, HReg dst );
-extern AMD64Instr* AMD64Instr_MovZLQ     ( HReg src, HReg dst );
+extern AMD64Instr* AMD64Instr_MovxLQ     ( Bool syned, HReg src, HReg dst );
 extern AMD64Instr* AMD64Instr_LoadEX     ( UChar szSmall, Bool syned,
                                            AMD64AMode* src, HReg dst );
 extern AMD64Instr* AMD64Instr_Store      ( UChar sz, HReg src, AMD64AMode* dst );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_isel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_isel.c
index 1e719e715..1198cec50 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_isel.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_amd64_isel.c
@@ -417,7 +417,7 @@ static AMD64Instr* iselIntExpr_single_instruction ( ISelEnv* env,
        && e->Iex.Unop.op == Iop_32Uto64 
        && e->Iex.Unop.arg->tag == Iex_RdTmp) {
       HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
-      return AMD64Instr_MovZLQ(src, dst);
+      return AMD64Instr_MovxLQ(False, src, dst);
    }
 
    if (0) { ppIRExpr(e); vex_printf("\n"); }
@@ -858,11 +858,15 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
    Bool second_is_UInt;
 
    MatchInfo mi;
-   DECLARE_PATTERN(p_8Uto64);
    DECLARE_PATTERN(p_1Uto8_64to1);
+   DECLARE_PATTERN(p_LDle8_then_8Uto64);
+   DECLARE_PATTERN(p_LDle16_then_16Uto64);
 
    IRType ty = typeOfIRExpr(env->type_env,e);
-   vassert(ty == Ity_I32 || Ity_I16 || Ity_I8);
+   switch (ty) {
+      case Ity_I64: case Ity_I32: case Ity_I16: case Ity_I8: break;
+      default: vassert(0);
+   }
 
    switch (e->tag) {
 
@@ -977,7 +981,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
                                 Aalu_AND, AMD64RMI_Imm(0xFFFF), dst));
                break;
             case Iop_Shr32:
-               addInstr(env, AMD64Instr_MovZLQ(dst,dst));
+               addInstr(env, AMD64Instr_MovxLQ(False, dst, dst));
                break;
             case Iop_Sar8:
                addInstr(env, AMD64Instr_Sh64(Ash_SHL, 56, dst));
@@ -988,8 +992,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
                addInstr(env, AMD64Instr_Sh64(Ash_SAR, 48, dst));
                break;
             case Iop_Sar32:
-               addInstr(env, AMD64Instr_Sh64(Ash_SHL, 32, dst));
-               addInstr(env, AMD64Instr_Sh64(Ash_SAR, 32, dst));
+               addInstr(env, AMD64Instr_MovxLQ(True, dst, dst));
                break;
             default: 
                ppIROp(e->Iex.Binop.op);
@@ -1159,7 +1162,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
          HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
          if (second_is_UInt)
-            addInstr(env, AMD64Instr_MovZLQ(argR, argR));
+            addInstr(env, AMD64Instr_MovxLQ(False, argR, argR));
          addInstr(env, mk_iMOVsd_RR(argL, hregAMD64_RDI()) );
          addInstr(env, mk_iMOVsd_RR(argR, hregAMD64_RSI()) );
          addInstr(env, AMD64Instr_Call( Acc_ALWAYS, (ULong)fn, 2 ));
@@ -1204,8 +1207,8 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          addInstr(env, mk_iMOVsd_RR(left64, rax));
          addInstr(env, AMD64Instr_Sh64(Ash_SHR, 32, rdx));
          addInstr(env, AMD64Instr_Div(syned, 4, rmRight));
-	 addInstr(env, AMD64Instr_MovZLQ(rdx,rdx));
-	 addInstr(env, AMD64Instr_MovZLQ(rax,rax));
+	 addInstr(env, AMD64Instr_MovxLQ(False, rdx, rdx));
+	 addInstr(env, AMD64Instr_MovxLQ(False, rax, rax));
          addInstr(env, AMD64Instr_Sh64(Ash_SHL, 32, rdx));
          addInstr(env, mk_iMOVsd_RR(rax, dst));
          addInstr(env, AMD64Instr_Alu64R(Aalu_OR, AMD64RMI_Reg(rdx), dst));
@@ -1220,7 +1223,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          addInstr(env, mk_iMOVsd_RR(hi32s, hi32));
          addInstr(env, mk_iMOVsd_RR(lo32s, lo32));
          addInstr(env, AMD64Instr_Sh64(Ash_SHL, 32, hi32));
-	 addInstr(env, AMD64Instr_MovZLQ(lo32,lo32));
+	 addInstr(env, AMD64Instr_MovxLQ(False, lo32, lo32));
          addInstr(env, AMD64Instr_Alu64R(
                           Aalu_OR, AMD64RMI_Reg(lo32), hi32));
          return hi32;
@@ -1377,59 +1380,55 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
 
    /* --------- UNARY OP --------- */
    case Iex_Unop: {
-      /* 32Uto64(8Uto32(expr8)) */
-      DEFINE_PATTERN(p_8Uto64,
-                     unop(Iop_32Uto64, unop(Iop_8Uto32, bind(0)) ) );
-      if (matchIRExpr(&mi,p_8Uto64,e)) {
-         IRExpr* expr8 = mi.bindee[0];
-         HReg    dst   = newVRegI(env);
-         HReg    src   = iselIntExpr_R(env, expr8);
-         addInstr(env, mk_iMOVsd_RR(src,dst) );
-         addInstr(env, AMD64Instr_Sh64(Ash_SHL, 56, dst));
-         addInstr(env, AMD64Instr_Sh64(Ash_SHR, 56, dst));
-         return dst;
-      }
 
       /* 1Uto8(64to1(expr64)) */
-      DEFINE_PATTERN( p_1Uto8_64to1,
-                      unop(Iop_1Uto8, unop(Iop_64to1, bind(0))) );
-      if (matchIRExpr(&mi,p_1Uto8_64to1,e)) {
-         IRExpr* expr64 = mi.bindee[0];
-         HReg    dst    = newVRegI(env);
-         HReg    src    = iselIntExpr_R(env, expr64);
-         addInstr(env, mk_iMOVsd_RR(src,dst) );
-         addInstr(env, AMD64Instr_Alu64R(Aalu_AND,
-                                         AMD64RMI_Imm(1), dst));
-         return dst;
+      {
+         DEFINE_PATTERN( p_1Uto8_64to1,
+                         unop(Iop_1Uto8, unop(Iop_64to1, bind(0))) );
+         if (matchIRExpr(&mi,p_1Uto8_64to1,e)) {
+            IRExpr* expr64 = mi.bindee[0];
+            HReg    dst    = newVRegI(env);
+            HReg    src    = iselIntExpr_R(env, expr64);
+            addInstr(env, mk_iMOVsd_RR(src,dst) );
+            addInstr(env, AMD64Instr_Alu64R(Aalu_AND,
+                                            AMD64RMI_Imm(1), dst));
+            return dst;
+         }
       }
 
-//..       /* 16Uto32(LDle(expr32)) */
-//..       {
-//..          DECLARE_PATTERN(p_LDle16_then_16Uto32);
-//..          DEFINE_PATTERN(p_LDle16_then_16Uto32,
-//..             unop(Iop_16Uto32,IRExpr_LDle(Ity_I16,bind(0))) );
-//..          if (matchIRExpr(&mi,p_LDle16_then_16Uto32,e)) {
-//..             HReg dst = newVRegI(env);
-//..             X86AMode* amode = iselIntExpr_AMode ( env, mi.bindee[0] );
-//..             addInstr(env, X86Instr_LoadEX(2,False,amode,dst));
-//..             return dst;
-//..          }
-//..       }
+      /* 8Uto64(LDle(expr64)) */
+      {
+         DEFINE_PATTERN(p_LDle8_then_8Uto64,
+                        unop(Iop_8Uto64,
+                             IRExpr_Load(Iend_LE,Ity_I8,bind(0))) );
+         if (matchIRExpr(&mi,p_LDle8_then_8Uto64,e)) {
+            HReg dst = newVRegI(env);
+            AMD64AMode* amode = iselIntExpr_AMode ( env, mi.bindee[0] );
+            addInstr(env, AMD64Instr_LoadEX(1,False,amode,dst));
+            return dst;
+         }
+      }
 
-      switch (e->Iex.Unop.op) {
-         case Iop_32Uto64: {
+      /* 16Uto64(LDle(expr64)) */
+      {
+         DEFINE_PATTERN(p_LDle16_then_16Uto64,
+                        unop(Iop_16Uto64,
+                             IRExpr_Load(Iend_LE,Ity_I16,bind(0))) );
+         if (matchIRExpr(&mi,p_LDle16_then_16Uto64,e)) {
             HReg dst = newVRegI(env);
-            HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
-            addInstr(env, AMD64Instr_MovZLQ(src,dst) );
+            AMD64AMode* amode = iselIntExpr_AMode ( env, mi.bindee[0] );
+            addInstr(env, AMD64Instr_LoadEX(2,False,amode,dst));
             return dst;
          }
+      }
+
+      switch (e->Iex.Unop.op) {
+         case Iop_32Uto64:
          case Iop_32Sto64: {
             HReg dst = newVRegI(env);
             HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
-            UInt amt = 32;
-            addInstr(env, mk_iMOVsd_RR(src,dst) );
-            addInstr(env, AMD64Instr_Sh64(Ash_SHL, amt, dst));
-            addInstr(env, AMD64Instr_Sh64(Ash_SAR, amt, dst));
+            addInstr(env, AMD64Instr_MovxLQ(e->Iex.Unop.op == Iop_32Sto64,
+                                            src, dst) );
             return dst;
          }
          case Iop_128HIto64: {
@@ -1566,7 +1565,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
             HReg dst = newVRegI(env);
             HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
             addInstr(env, mk_iMOVsd_RR(pre,src));
-            addInstr(env, AMD64Instr_MovZLQ(src,src));
+            addInstr(env, AMD64Instr_MovxLQ(False, src, src));
             addInstr(env, mk_iMOVsd_RR(src,dst));
             addInstr(env, AMD64Instr_Unary64(Aun_NEG,dst));
             addInstr(env, AMD64Instr_Alu64R(Aalu_OR,
@@ -1741,7 +1740,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
       if (e->Iex.CCall.retty == Ity_I64)
          addInstr(env, mk_iMOVsd_RR(hregAMD64_RAX(), dst));
       else
-         addInstr(env, AMD64Instr_MovZLQ(hregAMD64_RAX(), dst));
+         addInstr(env, AMD64Instr_MovxLQ(False, hregAMD64_RAX(), dst));
 
       return dst;
    }
@@ -2179,7 +2178,7 @@ static AMD64CondCode iselCondCode_wrk ( ISelEnv* env, IRExpr* e )
       HReg      r1   = iselIntExpr_R(env, e->Iex.Unop.arg);
       HReg      tmp  = newVRegI(env);
       AMD64RMI* rmi2 = AMD64RMI_Imm(0);
-      addInstr(env, AMD64Instr_MovZLQ(r1,tmp));
+      addInstr(env, AMD64Instr_MovxLQ(False, r1, tmp));
       addInstr(env, AMD64Instr_Alu64R(Aalu_CMP,rmi2,tmp));
       return Acc_NZ;
    }
@@ -2269,6 +2268,26 @@ static AMD64CondCode iselCondCode_wrk ( ISelEnv* env, IRExpr* e )
       }
    }
 
+   /* CmpNE64(ccall, 64-bit constant) (--smc-check=all optimisation).
+      Saves a "movq %rax, %tmp" compared to the default route. */
+   if (e->tag == Iex_Binop 
+       && e->Iex.Binop.op == Iop_CmpNE64
+       && e->Iex.Binop.arg1->tag == Iex_CCall
+       && e->Iex.Binop.arg2->tag == Iex_Const) {
+      IRExpr* cal = e->Iex.Binop.arg1;
+      IRExpr* con = e->Iex.Binop.arg2;
+      HReg    tmp = newVRegI(env);
+      /* clone & partial-eval of generic Iex_CCall and Iex_Const cases */
+      vassert(cal->Iex.CCall.retty == Ity_I64); /* else ill-typed IR */
+      vassert(con->Iex.Const.con->tag == Ico_U64);
+      /* Marshal args, do the call. */
+      doHelperCall( env, False, NULL, cal->Iex.CCall.cee, cal->Iex.CCall.args );
+      addInstr(env, AMD64Instr_Imm64(con->Iex.Const.con->Ico.U64, tmp));
+      addInstr(env, AMD64Instr_Alu64R(Aalu_CMP,
+                                      AMD64RMI_Reg(hregAMD64_RAX()), tmp));
+      return Acc_NZ;
+   }
+
    /* Cmp*64*(x,y) */
    if (e->tag == Iex_Binop 
        && (e->Iex.Binop.op == Iop_CmpEQ64
@@ -3663,6 +3682,54 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
          return dst;
       }
 
+      case Iop_SarN64x2: fn = (HWord)h_generic_calc_SarN64x2;
+                         goto do_SseAssistedVectorAndScalar;
+      case Iop_SarN8x16: fn = (HWord)h_generic_calc_SarN8x16;
+                         goto do_SseAssistedVectorAndScalar;
+      do_SseAssistedVectorAndScalar: {
+         /* RRRufff!  RRRufff code is what we're generating here.  Oh
+            well. */
+         vassert(fn != 0);
+         HReg dst = newVRegV(env);
+         HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
+         HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
+         HReg argp = newVRegI(env);
+         /* subq $112, %rsp         -- make a space*/
+         sub_from_rsp(env, 112);
+         /* leaq 48(%rsp), %r_argp  -- point into it */
+         addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(48, hregAMD64_RSP()),
+                                        argp));
+         /* andq $-16, %r_argp      -- 16-align the pointer */
+         addInstr(env, AMD64Instr_Alu64R(Aalu_AND,
+                                         AMD64RMI_Imm( ~(UInt)15 ), 
+                                         argp));
+         /* Prepare 2 vector arg regs:
+            leaq 0(%r_argp), %rdi
+            leaq 16(%r_argp), %rsi
+         */
+         addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(0, argp),
+                                        hregAMD64_RDI()));
+         addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(16, argp),
+                                        hregAMD64_RSI()));
+         /* Store the vector arg, at (%rsi):
+            movupd  %argL, 0(%rsi)
+         */
+         addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argL,
+                                          AMD64AMode_IR(0, hregAMD64_RSI())));
+         /* And get the scalar value into rdx */
+         addInstr(env, mk_iMOVsd_RR(argR, hregAMD64_RDX()));
+
+         /* call the helper */
+         addInstr(env, AMD64Instr_Call( Acc_ALWAYS, (ULong)fn, 3 ));
+         /* fetch the result from memory, using %r_argp, which the
+            register allocator will keep alive across the call. */
+         addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 16, dst,
+                                          AMD64AMode_IR(0, argp)));
+         /* and finally, clear the space */
+         add_to_rsp(env, 112);
+         return dst;
+      }
+
       default:
          break;
    } /* switch (e->Iex.Binop.op) */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.c
index 832eb6ca5..bf994d60c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.c
@@ -9,8 +9,11 @@
 
    Copyright (C) 2004-2010 OpenWorks LLP
       info@open-works.net
-   Copyright (C) 2010-2010 Dmitry Zhurikhin
-      zhur@ispras.ru
+
+   NEON support is
+   Copyright (C) 2010-2010 Samsung Electronics
+   contributed by Dmitry Zhurikhin 
+              and Kirill Batuzov 
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -119,7 +122,7 @@ HReg hregARM_Q15 ( void ) { return mkHReg(15, HRcVec128, False); }
 void getAllocableRegs_ARM ( Int* nregs, HReg** arr )
 {
    Int i = 0;
-   *nregs = 29;
+   *nregs = 26;
    *arr = LibVEX_Alloc(*nregs * sizeof(HReg));
    // callee saves ones are listed first, since we prefer them
    // if they're available
@@ -154,19 +157,21 @@ void getAllocableRegs_ARM ( Int* nregs, HReg** arr )
    (*arr)[i++] = hregARM_Q10();
    (*arr)[i++] = hregARM_Q11();
    (*arr)[i++] = hregARM_Q12();
-   (*arr)[i++] = hregARM_Q13();
-   (*arr)[i++] = hregARM_Q14();
-   (*arr)[i++] = hregARM_Q15();
+
+   //(*arr)[i++] = hregARM_Q13();
+   //(*arr)[i++] = hregARM_Q14();
+   //(*arr)[i++] = hregARM_Q15();
 
    // unavail: r8 as GSP
-   // r12 'cos we're not sure what it's for
+   // r12 is used as a spill/reload temporary
    // r13 as SP
    // r14 as LR
    // r15 as PC
    //
    // All in all, we have 11 allocatable integer registers:
-   // 0 1 2 3 4 5 6 7 9 10 11 plus r8 dedicated as GSP.
-   // 12 13 14 and 15 are not under the allocator's control.
+   // 0 1 2 3 4 5 6 7 9 10 11, with r8 dedicated as GSP
+   // and r12 dedicated as a spill temporary.
+   // 13 14 and 15 are not under the allocator's control.
    //
    // Hence for the allocatable registers we have:
    //
@@ -781,10 +786,8 @@ HChar* showARMNeonBinOp ( ARMNeonBinOp op ) {
       case ARMneon_VQRDMULH: return "vqrdmulh";
       case ARMneon_VQDMULL: return "vqdmull";
       case ARMneon_VTBL: return "vtbl";
-      case ARMneon_SETELEM: return "vmov";
-      case ARMneon_VABSFP: return "vabsfp";
-      case ARMneon_VRSQRTEFP: return "vrsqrtefp";
-      case ARMneon_VRSQRTE: return "vrsqrte";
+      case ARMneon_VRECPS: return "vrecps";
+      case ARMneon_VRSQRTS: return "vrecps";
       /* ... */
       default: vpanic("showARMNeonBinOp");
    }
@@ -800,7 +803,6 @@ HChar* showARMNeonBinOpDataType ( ARMNeonBinOp op ) {
       case ARMneon_VSUB:
       case ARMneon_VEXT:
       case ARMneon_VMUL:
-      case ARMneon_SETELEM:
       case ARMneon_VPADD:
       case ARMneon_VTBL:
       case ARMneon_VCEQ:
@@ -815,7 +817,6 @@ HChar* showARMNeonBinOpDataType ( ARMNeonBinOp op ) {
       case ARMneon_VMULLU:
       case ARMneon_VPMINU:
       case ARMneon_VPMAXU:
-      case ARMneon_VRSQRTE:
          return ".u";
       case ARMneon_VRHADDS:
       case ARMneon_VMINS:
@@ -841,13 +842,13 @@ HChar* showARMNeonBinOpDataType ( ARMNeonBinOp op ) {
       case ARMneon_VMULFP:
       case ARMneon_VMINF:
       case ARMneon_VMAXF:
-      case ARMneon_VABSFP:
-      case ARMneon_VRSQRTEFP:
       case ARMneon_VPMINF:
       case ARMneon_VPMAXF:
       case ARMneon_VCGTF:
       case ARMneon_VCGEF:
       case ARMneon_VCEQF:
+      case ARMneon_VRECPS:
+      case ARMneon_VRSQRTS:
          return ".f";
       /* ... */
       default: vpanic("showARMNeonBinOpDataType");
@@ -889,10 +890,11 @@ HChar* showARMNeonUnOp ( ARMNeonUnOp op ) {
       case ARMneon_VCVTF16toF32: return "vcvt";
       case ARMneon_VRECIP: return "vrecip";
       case ARMneon_VRECIPF: return "vrecipf";
-      case ARMneon_VRECPS: return "vrecps";
       case ARMneon_VNEGF: return "vneg";
-      case ARMneon_VRSQRTS: return "vrecps";
       case ARMneon_ABS: return "vabs";
+      case ARMneon_VABSFP: return "vabsfp";
+      case ARMneon_VRSQRTEFP: return "vrsqrtefp";
+      case ARMneon_VRSQRTE: return "vrsqrte";
       /* ... */
       default: vpanic("showARMNeonUnOp");
    }
@@ -916,6 +918,7 @@ HChar* showARMNeonUnOpDataType ( ARMNeonUnOp op ) {
       case ARMneon_COPYQNUU:
       case ARMneon_VQSHLNUU:
       case ARMneon_VRECIP:
+      case ARMneon_VRSQRTE:
          return ".u";
       case ARMneon_CLS:
       case ARMneon_CLZ:
@@ -928,9 +931,9 @@ HChar* showARMNeonUnOpDataType ( ARMNeonUnOp op ) {
       case ARMneon_ABS:
          return ".s";
       case ARMneon_VRECIPF:
-      case ARMneon_VRECPS:
       case ARMneon_VNEGF:
-      case ARMneon_VRSQRTS:
+      case ARMneon_VABSFP:
+      case ARMneon_VRSQRTEFP:
          return ".f";
       case ARMneon_VCVTFtoU: return ".u32.f32";
       case ARMneon_VCVTFtoS: return ".s32.f32";
@@ -1366,7 +1369,7 @@ ARMInstr* ARMInstr_NUnary ( ARMNeonUnOp op, HReg dQ, HReg nQ,
    return i;
 }
 
-ARMInstr* ARMInstr_NUnaryS ( ARMNeonUnOp op, ARMNRS* dst, ARMNRS* src,
+ARMInstr* ARMInstr_NUnaryS ( ARMNeonUnOpS op, ARMNRS* dst, ARMNRS* src,
                              UInt size, Bool Q ) {
    ARMInstr* i = LibVEX_Alloc(sizeof(ARMInstr));
    i->tag                = ARMin_NUnaryS;
@@ -1796,8 +1799,8 @@ void ppARMInstr ( ARMInstr* i ) {
          return;
       case ARMin_NUnaryS:
          vex_printf("%s%s%s  ",
-                    showARMNeonUnOpS(i->ARMin.NUnary.op),
-                    showARMNeonUnOpSDataType(i->ARMin.NUnary.op),
+                    showARMNeonUnOp(i->ARMin.NUnary.op),
+                    showARMNeonUnOpDataType(i->ARMin.NUnary.op),
                     showARMNeonDataSize(i));
          ppARMNRS(i->ARMin.NUnaryS.dst);
          vex_printf(", ");
@@ -2370,9 +2373,11 @@ void genSpill_ARM ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
          HReg base = r8;
          vassert(0 == (offsetB & 3));
          if (offsetB >= 1024) {
+            Int offsetKB = offsetB / 1024;
+            /* r12 = r8 + (1024 * offsetKB) */
             *i1 = ARMInstr_Alu(ARMalu_ADD, r12, r8,
-                               ARMRI84_I84(1,11)); /* 1024 */
-            offsetB -= 1024;
+                               ARMRI84_I84(offsetKB, 11));
+            offsetB -= (1024 * offsetKB);
             base = r12;
          }
          vassert(offsetB <= 1020);
@@ -2423,9 +2428,11 @@ void genReload_ARM ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
          HReg base = r8;
          vassert(0 == (offsetB & 3));
          if (offsetB >= 1024) {
+            Int offsetKB = offsetB / 1024;
+            /* r12 = r8 + (1024 * offsetKB) */
             *i1 = ARMInstr_Alu(ARMalu_ADD, r12, r8,
-                               ARMRI84_I84(1,11)); /* 1024 */
-            offsetB -= 1024;
+                               ARMRI84_I84(offsetKB, 11));
+            offsetB -= (1024 * offsetKB);
             base = r12;
          }
          vassert(offsetB <= 1020);
@@ -3299,7 +3306,7 @@ Int emit_ARMInstr ( UChar* buf, Int nbuf, ARMInstr* i,
          UInt insn;
          UInt opc, opc1, opc2;
          switch (i->ARMin.NUnaryS.op) {
-            case ARMneon_VDUP:
+	    case ARMneon_VDUP:
                if (i->ARMin.NUnaryS.size >= 16)
                   goto bad;
                if (i->ARMin.NUnaryS.dst->tag != ARMNRS_Reg)
@@ -3320,7 +3327,7 @@ Int emit_ARMInstr ( UChar* buf, Int nbuf, ARMInstr* i,
                                (i->ARMin.NUnaryS.size & 0xf), regD,
                                X1100, BITS4(0,Q,M,0), regM);
                *p++ = insn;
-               goto done;
+               goto done; 
             case ARMneon_SETELEM:
                regD = Q ? (qregNo(i->ARMin.NUnaryS.dst->reg) << 1) :
                                 dregNo(i->ARMin.NUnaryS.dst->reg);
@@ -3659,6 +3666,7 @@ Int emit_ARMInstr ( UChar* buf, Int nbuf, ARMInstr* i,
                insn = XXXXXXXX(0xF, X0011, BITS4(1,D,1,1), X1001, regD, X0111,
                                BITS4(1,Q,M,0), regM);
                break;
+
             default:
                goto bad;
          }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.h
index f775ce601..e65203c28 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_defs.h
@@ -195,7 +195,7 @@ extern void ppARMAModeV ( ARMAModeV* );
 /* --- Addressing Mode suitable for Neon --- */
 typedef
    enum {
-      ARMamN_R,
+      ARMamN_R=5,
       ARMamN_RR
       /* ... */
    }
@@ -227,7 +227,7 @@ extern void ppARMAModeN ( ARMAModeN* );
 
 typedef
    enum {
-      ARMri84_I84=5,   /* imm8 `ror` (2 * imm4) */
+      ARMri84_I84=7,   /* imm8 `ror` (2 * imm4) */
       ARMri84_R        /* reg */
    }
    ARMRI84Tag;
@@ -256,7 +256,7 @@ extern void ppARMRI84 ( ARMRI84* );
 /* --------- Reg or imm5 operands --------- */
 typedef
    enum {
-      ARMri5_I5=7,   /* imm5, 1 .. 31 only (no zero!) */
+      ARMri5_I5=9,   /* imm5, 1 .. 31 only (no zero!) */
       ARMri5_R       /* reg */
    }
    ARMRI5Tag;
@@ -321,7 +321,7 @@ extern void ppARMNImm ( ARMNImm* );
 
 typedef
    enum {
-      ARMNRS_Reg,
+      ARMNRS_Reg=11,
       ARMNRS_Scalar
    }
    ARMNRS_tag;
@@ -342,7 +342,7 @@ extern void ppARMNRS ( ARMNRS* );
 /* --------- */
 typedef
    enum {
-      ARMalu_ADD=10,   /* plain 32-bit add */
+      ARMalu_ADD=20,   /* plain 32-bit add */
       ARMalu_ADDS,     /* 32-bit add, and set the flags */
       ARMalu_ADC,      /* 32-bit add with carry */
       ARMalu_SUB,      /* plain 32-bit subtract */
@@ -360,7 +360,7 @@ extern HChar* showARMAluOp ( ARMAluOp op );
 
 typedef
    enum {
-      ARMsh_SHL=20,
+      ARMsh_SHL=40,
       ARMsh_SHR,
       ARMsh_SAR
    }
@@ -371,7 +371,7 @@ extern HChar* showARMShiftOp ( ARMShiftOp op );
 
 typedef
    enum {
-      ARMun_NEG=30,
+      ARMun_NEG=50,
       ARMun_NOT,
       ARMun_CLZ
    }
@@ -382,7 +382,7 @@ extern HChar* showARMUnaryOp ( ARMUnaryOp op );
 
 typedef
    enum {
-      ARMmul_PLAIN=40,
+      ARMmul_PLAIN=60,
       ARMmul_ZX,
       ARMmul_SX
    }
@@ -393,7 +393,7 @@ extern HChar* showARMMulOp ( ARMMulOp op );
 
 typedef
    enum {
-      ARMvfp_ADD=50,
+      ARMvfp_ADD=70,
       ARMvfp_SUB,
       ARMvfp_MUL,
       ARMvfp_DIV
@@ -405,7 +405,7 @@ extern HChar* showARMVfpOp ( ARMVfpOp op );
 
 typedef
    enum {
-      ARMvfpu_COPY=60,
+      ARMvfpu_COPY=80,
       ARMvfpu_NEG,
       ARMvfpu_ABS,
       ARMvfpu_SQRT
@@ -416,7 +416,7 @@ extern HChar* showARMVfpUnaryOp ( ARMVfpUnaryOp op );
 
 typedef
    enum {
-      ARMneon_VAND=70,
+      ARMneon_VAND=90,
       ARMneon_VORR,
       ARMneon_VXOR,
       ARMneon_VADD,
@@ -463,21 +463,15 @@ typedef
       ARMneon_VPMAXF,
       ARMneon_VTBL,
       ARMneon_VQDMULL,
-      ARMneon_VDUP,
-      ARMneon_VRECIP,
       ARMneon_VRECPS,
-      ARMneon_VRECIPF,
       ARMneon_VRSQRTS,
-      ARMneon_VABSFP,
-      ARMneon_VRSQRTEFP,
-      ARMneon_VRSQRTE
       /* ... */
    }
    ARMNeonBinOp;
 
 typedef
    enum {
-      ARMneon_VSHL,
+      ARMneon_VSHL=150,
       ARMneon_VSAL, /* Yah, not SAR but SAL */
       ARMneon_VQSHL,
       ARMneon_VQSAL
@@ -486,7 +480,7 @@ typedef
 
 typedef
    enum {
-      ARMneon_COPY,
+      ARMneon_COPY=160,
       ARMneon_COPYLU,
       ARMneon_COPYLS,
       ARMneon_COPYN,
@@ -520,21 +514,27 @@ typedef
       ARMneon_REV64,
       ARMneon_ABS,
       ARMneon_VNEGF,
+      ARMneon_VRECIP,
+      ARMneon_VRECIPF,
+      ARMneon_VABSFP,
+      ARMneon_VRSQRTEFP,
+      ARMneon_VRSQRTE
       /* ... */
    }
    ARMNeonUnOp;
 
 typedef
    enum {
-      ARMneon_SETELEM,
+      ARMneon_SETELEM=200,
       ARMneon_GETELEMU,
-      ARMneon_GETELEMS
+      ARMneon_GETELEMS,
+      ARMneon_VDUP,
    }
    ARMNeonUnOpS;
 
 typedef
    enum {
-      ARMneon_TRN=100,
+      ARMneon_TRN=210,
       ARMneon_ZIP,
       ARMneon_UZP
       /* ... */
@@ -555,7 +555,7 @@ extern HChar* showARMNeonDualOpDataType ( ARMNeonDualOp op );
 typedef
    enum {
       /* baseline */
-      ARMin_Alu=70,
+      ARMin_Alu=220,
       ARMin_Shift,
       ARMin_Unary,
       ARMin_CmpOrTst,
@@ -861,7 +861,7 @@ typedef
             ARMAModeN *amode;
          } NLdStD;
          struct {
-            ARMNeonUnOp op;
+            ARMNeonUnOpS op;
             ARMNRS*  dst;
             ARMNRS*  src;
             UInt size;
@@ -940,7 +940,7 @@ extern ARMInstr* ARMInstr_MFence   ( void );
 extern ARMInstr* ARMInstr_NLdStQ   ( Bool isLoad, HReg, ARMAModeN* );
 extern ARMInstr* ARMInstr_NLdStD   ( Bool isLoad, HReg, ARMAModeN* );
 extern ARMInstr* ARMInstr_NUnary   ( ARMNeonUnOp, HReg, HReg, UInt, Bool );
-extern ARMInstr* ARMInstr_NUnaryS  ( ARMNeonUnOp, ARMNRS*, ARMNRS*,
+extern ARMInstr* ARMInstr_NUnaryS  ( ARMNeonUnOpS, ARMNRS*, ARMNRS*,
                                      UInt, Bool );
 extern ARMInstr* ARMInstr_NDual    ( ARMNeonDualOp, HReg, HReg, UInt, Bool );
 extern ARMInstr* ARMInstr_NBinary  ( ARMNeonBinOp, HReg, HReg, HReg,
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_isel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_isel.c
index 28dfc684f..a2987eea5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_isel.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_arm_isel.c
@@ -9,8 +9,11 @@
 
    Copyright (C) 2004-2010 OpenWorks LLP
       info@open-works.net
-   Copyright (C) 2010-2010 Dmitry Zhurikhin
-      zhur@ispras.ru
+
+   NEON support is
+   Copyright (C) 2010-2010 Samsung Electronics
+   contributed by Dmitry Zhurikhin 
+              and Kirill Batuzov 
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -38,6 +41,7 @@
 #include "main_util.h"
 #include "main_globals.h"
 #include "host_generic_regs.h"
+#include "host_generic_simd64.h"  // for 32-bit SIMD helpers
 #include "host_arm_defs.h"
 
 
@@ -1304,6 +1308,62 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          return res;
       }
 
+      /* All cases involving host-side helper calls. */
+      void* fn = NULL;
+      switch (e->Iex.Binop.op) {
+         case Iop_Add16x2:
+            fn = &h_generic_calc_Add16x2; break;
+         case Iop_Sub16x2:
+            fn = &h_generic_calc_Sub16x2; break;
+         case Iop_HAdd16Ux2:
+            fn = &h_generic_calc_HAdd16Ux2; break;
+         case Iop_HAdd16Sx2:
+            fn = &h_generic_calc_HAdd16Sx2; break;
+         case Iop_HSub16Ux2:
+            fn = &h_generic_calc_HSub16Ux2; break;
+         case Iop_HSub16Sx2:
+            fn = &h_generic_calc_HSub16Sx2; break;
+         case Iop_QAdd16Sx2:
+            fn = &h_generic_calc_QAdd16Sx2; break;
+         case Iop_QSub16Sx2:
+            fn = &h_generic_calc_QSub16Sx2; break;
+         case Iop_Add8x4:
+            fn = &h_generic_calc_Add8x4; break;
+         case Iop_Sub8x4:
+            fn = &h_generic_calc_Sub8x4; break;
+         case Iop_HAdd8Ux4:
+            fn = &h_generic_calc_HAdd8Ux4; break;
+         case Iop_HAdd8Sx4:
+            fn = &h_generic_calc_HAdd8Sx4; break;
+         case Iop_HSub8Ux4:
+            fn = &h_generic_calc_HSub8Ux4; break;
+         case Iop_HSub8Sx4:
+            fn = &h_generic_calc_HSub8Sx4; break;
+         case Iop_QAdd8Sx4:
+            fn = &h_generic_calc_QAdd8Sx4; break;
+         case Iop_QAdd8Ux4:
+            fn = &h_generic_calc_QAdd8Ux4; break;
+         case Iop_QSub8Sx4:
+            fn = &h_generic_calc_QSub8Sx4; break;
+         case Iop_QSub8Ux4:
+            fn = &h_generic_calc_QSub8Ux4; break;
+         case Iop_Sad8Ux4:
+            fn = &h_generic_calc_Sad8Ux4; break;
+         default:
+            break;
+      }
+
+      if (fn) {
+         HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
+         HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
+         HReg res  = newVRegI(env);
+         addInstr(env, mk_iMOVds_RR(hregARM_R0(), regL));
+         addInstr(env, mk_iMOVds_RR(hregARM_R1(), regR));
+         addInstr(env, ARMInstr_Call( ARMcc_AL, (HWord)Ptr_to_ULong(fn), 2 ));
+         addInstr(env, mk_iMOVds_RR(res, hregARM_R0()));
+         return res;
+      }
+
       break;
    }
 
@@ -1570,6 +1630,27 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          default:
             break;
       }
+
+      /* All Unop cases involving host-side helper calls. */
+      void* fn = NULL;
+      switch (e->Iex.Unop.op) {
+         case Iop_CmpNEZ16x2:
+            fn = &h_generic_calc_CmpNEZ16x2; break;
+         case Iop_CmpNEZ8x4:
+            fn = &h_generic_calc_CmpNEZ8x4; break;
+         default:
+            break;
+      }
+
+      if (fn) {
+         HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
+         HReg res = newVRegI(env);
+         addInstr(env, mk_iMOVds_RR(hregARM_R0(), arg));
+         addInstr(env, ARMInstr_Call( ARMcc_AL, (HWord)Ptr_to_ULong(fn), 1 ));
+         addInstr(env, mk_iMOVds_RR(res, hregARM_R0()));
+         return res;
+      }
+
       break;
    }
 
@@ -5862,7 +5943,6 @@ HInstrArray* iselSB_ARM ( IRSB* bb, VexArch      arch_host,
    HReg     hreg, hregHI;
    ISelEnv* env;
    UInt     hwcaps_host = archinfo_host->hwcaps;
-   Bool     neon = False;
    static UInt counter = 0;
 
    /* sanity ... */
@@ -5900,7 +5980,6 @@ HInstrArray* iselSB_ARM ( IRSB* bb, VexArch      arch_host,
          case Ity_I64:
             if (arm_hwcaps & VEX_HWCAPS_ARM_NEON) {
                hreg = mkHReg(j++, HRcFlt64, True);
-               neon = True;
             } else {
                hregHI = mkHReg(j++, HRcInt32, True);
                hreg   = mkHReg(j++, HRcInt32, True);
@@ -5908,8 +5987,7 @@ HInstrArray* iselSB_ARM ( IRSB* bb, VexArch      arch_host,
             break;
          case Ity_F32:  hreg   = mkHReg(j++, HRcFlt32, True); break;
          case Ity_F64:  hreg   = mkHReg(j++, HRcFlt64, True); break;
-         case Ity_V128: hreg   = mkHReg(j++, HRcVec128, True);
-                        neon   = True; break;
+         case Ity_V128: hreg   = mkHReg(j++, HRcVec128, True); break;
          default: ppIRType(bb->tyenv->types[i]);
                   vpanic("iselBB: IRTemp type");
       }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.c
index 8ed516609..2430e67bb 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.c
@@ -94,6 +94,16 @@ static inline ULong cmpGT64S ( Long xx, Long yy )
              ? 0xFFFFFFFFFFFFFFFFULL : 0ULL;
 }
 
+static inline ULong sar64 ( ULong v, UInt n )
+{
+   return ((Long)v) >> n;
+}
+
+static inline UChar sar8 ( UChar v, UInt n )
+{
+   return toUChar(((Char)v) >> n);
+}
+
 void h_generic_calc_Mul32x4 ( /*OUT*/V128* res,
                               V128* argL, V128* argR )
 {
@@ -214,6 +224,44 @@ void h_generic_calc_CmpGT64Sx2 ( /*OUT*/V128* res,
    res->w64[1] = cmpGT64S(argL->w64[1], argR->w64[1]);
 }
 
+/* ------------ Shifting ------------ */
+/* Note that because these primops are undefined if the shift amount
+   equals or exceeds the lane width, the shift amount is masked so
+   that the scalar shifts are always in range.  In fact, given the
+   semantics of these primops (Sar64x2, etc) it is an error if in
+   fact we are ever given an out-of-range shift amount. 
+*/
+void h_generic_calc_SarN64x2 ( /*OUT*/V128* res,
+                               V128* argL, UInt nn)
+{
+   /* vassert(nn < 64); */
+   nn &= 63;
+   res->w64[0] = sar64(argL->w64[0], nn);
+   res->w64[1] = sar64(argL->w64[1], nn);
+}
+
+void h_generic_calc_SarN8x16 ( /*OUT*/V128* res,
+                              V128* argL, UInt nn)
+{
+   /* vassert(nn < 8); */
+   nn &= 7;
+   res->w8[ 0] = sar8(argL->w8[ 0], nn);
+   res->w8[ 1] = sar8(argL->w8[ 1], nn);
+   res->w8[ 2] = sar8(argL->w8[ 2], nn);
+   res->w8[ 3] = sar8(argL->w8[ 3], nn);
+   res->w8[ 4] = sar8(argL->w8[ 4], nn);
+   res->w8[ 5] = sar8(argL->w8[ 5], nn);
+   res->w8[ 6] = sar8(argL->w8[ 6], nn);
+   res->w8[ 7] = sar8(argL->w8[ 7], nn);
+   res->w8[ 8] = sar8(argL->w8[ 8], nn);
+   res->w8[ 9] = sar8(argL->w8[ 9], nn);
+   res->w8[10] = sar8(argL->w8[10], nn);
+   res->w8[11] = sar8(argL->w8[11], nn);
+   res->w8[12] = sar8(argL->w8[12], nn);
+   res->w8[13] = sar8(argL->w8[13], nn);
+   res->w8[14] = sar8(argL->w8[14], nn);
+   res->w8[15] = sar8(argL->w8[15], nn);
+}
 
 /*---------------------------------------------------------------*/
 /*--- end                              host_generic_simd128.c ---*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.h
index 53850cbdd..d764439e1 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd128.h
@@ -58,6 +58,8 @@ extern void h_generic_calc_Min16Ux8   ( /*OUT*/V128*, V128*, V128* );
 extern void h_generic_calc_Max8Sx16   ( /*OUT*/V128*, V128*, V128* );
 extern void h_generic_calc_Min8Sx16   ( /*OUT*/V128*, V128*, V128* );
 extern void h_generic_calc_CmpGT64Sx2 ( /*OUT*/V128*, V128*, V128* );
+extern void h_generic_calc_SarN64x2   ( /*OUT*/V128*, V128*, UInt );
+extern void h_generic_calc_SarN8x16   ( /*OUT*/V128*, V128*, UInt );
 
 
 #endif /* ndef __VEX_HOST_GENERIC_SIMD128_H */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.c
index 39aace9ac..03d6d2ff1 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.c
@@ -90,7 +90,7 @@ static inline UShort sel16x4_0 ( ULong w64 ) {
 static inline ULong mk8x8 ( UChar w7, UChar w6,
                             UChar w5, UChar w4,
                             UChar w3, UChar w2,
-			    UChar w1, UChar w0 ) {
+                            UChar w1, UChar w0 ) {
    UInt hi32 =   (((UInt)w7) << 24) | (((UInt)w6) << 16)
                | (((UInt)w5) << 8)  | (((UInt)w4) << 0);
    UInt lo32 =   (((UInt)w3) << 24) | (((UInt)w2) << 16)
@@ -375,6 +375,77 @@ static inline UChar min8U ( UChar xx, UChar yy )
    return toUChar((xx < yy) ? xx : yy);
 }
 
+static inline UShort hadd16U ( UShort xx, UShort yy )
+{
+   UInt xxi = (UInt)xx;
+   UInt yyi = (UInt)yy;
+   UInt r   = (xxi + yyi) >> 1;
+   return (UShort)r;
+}
+
+static inline Short hadd16S ( Short xx, Short yy )
+{
+   Int xxi = (Int)xx;
+   Int yyi = (Int)yy;
+   Int r   = (xxi + yyi) >> 1;
+   return (Short)r;
+}
+
+static inline UShort hsub16U ( UShort xx, UShort yy )
+{
+   UInt xxi = (UInt)xx;
+   UInt yyi = (UInt)yy;
+   UInt r   = (xxi - yyi) >> 1;
+   return (UShort)r;
+}
+
+static inline Short hsub16S ( Short xx, Short yy )
+{
+   Int xxi = (Int)xx;
+   Int yyi = (Int)yy;
+   Int r   = (xxi - yyi) >> 1;
+   return (Short)r;
+}
+
+static inline UChar hadd8U ( UChar xx, UChar yy )
+{
+   UInt xxi = (UInt)xx;
+   UInt yyi = (UInt)yy;
+   UInt r   = (xxi + yyi) >> 1;
+   return (UChar)r;
+}
+
+static inline Char hadd8S ( Char xx, Char yy )
+{
+   Int xxi = (Int)xx;
+   Int yyi = (Int)yy;
+   Int r   = (xxi + yyi) >> 1;
+   return (Char)r;
+}
+
+static inline UChar hsub8U ( UChar xx, UChar yy )
+{
+   UInt xxi = (UInt)xx;
+   UInt yyi = (UInt)yy;
+   UInt r   = (xxi - yyi) >> 1;
+   return (UChar)r;
+}
+
+static inline Char hsub8S ( Char xx, Char yy )
+{
+   Int xxi = (Int)xx;
+   Int yyi = (Int)yy;
+   Int r   = (xxi - yyi) >> 1;
+   return (Char)r;
+}
+
+static inline UInt absdiff8U ( UChar xx, UChar yy )
+{
+   UInt xxu = (UChar)xx;
+   UInt yyu = (UChar)yy;
+   return xxu >= yyu  ? xxu - yyu  : yyu - xxu;
+}
+
 /* ----------------------------------------------------- */
 /* Start of the externally visible functions.  These simply
    implement the corresponding IR primops. */
@@ -1030,6 +1101,236 @@ ULong h_generic_calc_Min8Ux8 ( ULong xx, ULong yy )
           );
 }
 
+/* ------------ SOME 32-bit SIMD HELPERS TOO ------------ */
+
+/* Tuple/select functions for 16x2 vectors. */
+static inline UInt mk16x2 ( UShort w1, UShort w2 ) {
+   return (((UInt)w1) << 16) | ((UInt)w2);
+}
+
+static inline UShort sel16x2_1 ( UInt w32 ) {
+   return 0xFFFF & (UShort)(w32 >> 16);
+}
+static inline UShort sel16x2_0 ( UInt w32 ) {
+   return 0xFFFF & (UShort)(w32);
+}
+
+static inline UInt mk8x4 ( UChar w3, UChar w2,
+                           UChar w1, UChar w0 ) {
+   UInt w32 =   (((UInt)w3) << 24) | (((UInt)w2) << 16)
+              | (((UInt)w1) << 8)  | (((UInt)w0) << 0);
+   return w32;
+}
+
+static inline UChar sel8x4_3 ( UInt w32 ) {
+   return toUChar(0xFF & (w32 >> 24));
+}
+static inline UChar sel8x4_2 ( UInt w32 ) {
+   return toUChar(0xFF & (w32 >> 16));
+}
+static inline UChar sel8x4_1 ( UInt w32 ) {
+   return toUChar(0xFF & (w32 >> 8));
+}
+static inline UChar sel8x4_0 ( UInt w32 ) {
+   return toUChar(0xFF & (w32 >> 0));
+}
+
+
+/* ----------------------------------------------------- */
+/* More externally visible functions.  These simply
+   implement the corresponding IR primops. */
+/* ----------------------------------------------------- */
+
+/* ------ 16x2 ------ */
+
+UInt h_generic_calc_Add16x2 ( UInt xx, UInt yy )
+{
+   return mk16x2( sel16x2_1(xx) + sel16x2_1(yy),
+                  sel16x2_0(xx) + sel16x2_0(yy) );
+}
+
+UInt h_generic_calc_Sub16x2 ( UInt xx, UInt yy )
+{
+   return mk16x2( sel16x2_1(xx) - sel16x2_1(yy),
+                  sel16x2_0(xx) - sel16x2_0(yy) );
+}
+
+UInt h_generic_calc_HAdd16Ux2 ( UInt xx, UInt yy )
+{
+   return mk16x2( hadd16U( sel16x2_1(xx), sel16x2_1(yy) ),
+                  hadd16U( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_HAdd16Sx2 ( UInt xx, UInt yy )
+{
+   return mk16x2( hadd16S( sel16x2_1(xx), sel16x2_1(yy) ),
+                  hadd16S( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_HSub16Ux2 ( UInt xx, UInt yy )
+{
+   return mk16x2( hsub16U( sel16x2_1(xx), sel16x2_1(yy) ),
+                  hsub16U( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_HSub16Sx2 ( UInt xx, UInt yy )
+{
+   return mk16x2( hsub16S( sel16x2_1(xx), sel16x2_1(yy) ),
+                  hsub16S( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_QAdd16Ux2 ( UInt xx, UInt yy )
+{
+   return mk16x2( qadd16U( sel16x2_1(xx), sel16x2_1(yy) ),
+                  qadd16U( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_QAdd16Sx2 ( UInt xx, UInt yy )
+{
+   return mk16x2( qadd16S( sel16x2_1(xx), sel16x2_1(yy) ),
+                  qadd16S( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_QSub16Ux2 ( UInt xx, UInt yy )
+{
+   return mk16x2( qsub16U( sel16x2_1(xx), sel16x2_1(yy) ),
+                  qsub16U( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+UInt h_generic_calc_QSub16Sx2 ( UInt xx, UInt yy )
+{
+   return mk16x2( qsub16S( sel16x2_1(xx), sel16x2_1(yy) ),
+                  qsub16S( sel16x2_0(xx), sel16x2_0(yy) ) );
+}
+
+/* ------ 8x4 ------ */
+
+UInt h_generic_calc_Add8x4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             sel8x4_3(xx) + sel8x4_3(yy),
+             sel8x4_2(xx) + sel8x4_2(yy),
+             sel8x4_1(xx) + sel8x4_1(yy),
+             sel8x4_0(xx) + sel8x4_0(yy)
+          );
+}
+
+UInt h_generic_calc_Sub8x4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             sel8x4_3(xx) - sel8x4_3(yy),
+             sel8x4_2(xx) - sel8x4_2(yy),
+             sel8x4_1(xx) - sel8x4_1(yy),
+             sel8x4_0(xx) - sel8x4_0(yy)
+          );
+}
+
+UInt h_generic_calc_HAdd8Ux4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             hadd8U( sel8x4_3(xx), sel8x4_3(yy) ),
+             hadd8U( sel8x4_2(xx), sel8x4_2(yy) ),
+             hadd8U( sel8x4_1(xx), sel8x4_1(yy) ),
+             hadd8U( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_HAdd8Sx4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             hadd8S( sel8x4_3(xx), sel8x4_3(yy) ),
+             hadd8S( sel8x4_2(xx), sel8x4_2(yy) ),
+             hadd8S( sel8x4_1(xx), sel8x4_1(yy) ),
+             hadd8S( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_HSub8Ux4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             hsub8U( sel8x4_3(xx), sel8x4_3(yy) ),
+             hsub8U( sel8x4_2(xx), sel8x4_2(yy) ),
+             hsub8U( sel8x4_1(xx), sel8x4_1(yy) ),
+             hsub8U( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_HSub8Sx4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             hsub8S( sel8x4_3(xx), sel8x4_3(yy) ),
+             hsub8S( sel8x4_2(xx), sel8x4_2(yy) ),
+             hsub8S( sel8x4_1(xx), sel8x4_1(yy) ),
+             hsub8S( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_QAdd8Ux4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             qadd8U( sel8x4_3(xx), sel8x4_3(yy) ),
+             qadd8U( sel8x4_2(xx), sel8x4_2(yy) ),
+             qadd8U( sel8x4_1(xx), sel8x4_1(yy) ),
+             qadd8U( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_QAdd8Sx4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             qadd8S( sel8x4_3(xx), sel8x4_3(yy) ),
+             qadd8S( sel8x4_2(xx), sel8x4_2(yy) ),
+             qadd8S( sel8x4_1(xx), sel8x4_1(yy) ),
+             qadd8S( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_QSub8Ux4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             qsub8U( sel8x4_3(xx), sel8x4_3(yy) ),
+             qsub8U( sel8x4_2(xx), sel8x4_2(yy) ),
+             qsub8U( sel8x4_1(xx), sel8x4_1(yy) ),
+             qsub8U( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_QSub8Sx4 ( UInt xx, UInt yy )
+{
+   return mk8x4(
+             qsub8S( sel8x4_3(xx), sel8x4_3(yy) ),
+             qsub8S( sel8x4_2(xx), sel8x4_2(yy) ),
+             qsub8S( sel8x4_1(xx), sel8x4_1(yy) ),
+             qsub8S( sel8x4_0(xx), sel8x4_0(yy) )
+          );
+}
+
+UInt h_generic_calc_CmpNEZ16x2 ( UInt xx )
+{
+   return mk16x2(
+             cmpnez16( sel16x2_1(xx) ),
+             cmpnez16( sel16x2_0(xx) )
+          );
+}
+
+UInt h_generic_calc_CmpNEZ8x4 ( UInt xx )
+{
+   return mk8x4(
+             cmpnez8( sel8x4_3(xx) ),
+             cmpnez8( sel8x4_2(xx) ),
+             cmpnez8( sel8x4_1(xx) ),
+             cmpnez8( sel8x4_0(xx) )
+          );
+}
+
+UInt h_generic_calc_Sad8Ux4 ( UInt xx, UInt yy )
+{
+   return absdiff8U( sel8x4_3(xx), sel8x4_3(yy) )
+          + absdiff8U( sel8x4_2(xx), sel8x4_2(yy) )
+          + absdiff8U( sel8x4_1(xx), sel8x4_1(yy) )
+          + absdiff8U( sel8x4_0(xx), sel8x4_0(yy) );
+}
+
 
 /*---------------------------------------------------------------*/
 /*--- end                               host_generic_simd64.c ---*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.h
index 18687d5da..e854fc726 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_generic_simd64.h
@@ -121,6 +121,38 @@ extern ULong h_generic_calc_Max8Ux8  ( ULong, ULong );
 extern ULong h_generic_calc_Min16Sx4 ( ULong, ULong );
 extern ULong h_generic_calc_Min8Ux8  ( ULong, ULong );
 
+/* 32-bit SIMD HELPERS */
+
+extern UInt h_generic_calc_Add16x2   ( UInt, UInt );
+extern UInt h_generic_calc_Sub16x2   ( UInt, UInt );
+
+extern UInt h_generic_calc_HAdd16Ux2 ( UInt, UInt );
+extern UInt h_generic_calc_HAdd16Sx2 ( UInt, UInt );
+extern UInt h_generic_calc_HSub16Ux2 ( UInt, UInt );
+extern UInt h_generic_calc_HSub16Sx2 ( UInt, UInt );
+
+extern UInt h_generic_calc_QAdd16Ux2 ( UInt, UInt );
+extern UInt h_generic_calc_QAdd16Sx2 ( UInt, UInt );
+extern UInt h_generic_calc_QSub16Ux2 ( UInt, UInt );
+extern UInt h_generic_calc_QSub16Sx2 ( UInt, UInt );
+
+extern UInt h_generic_calc_Add8x4   ( UInt, UInt );
+extern UInt h_generic_calc_Sub8x4   ( UInt, UInt );
+
+extern UInt h_generic_calc_HAdd8Ux4 ( UInt, UInt );
+extern UInt h_generic_calc_HAdd8Sx4 ( UInt, UInt );
+extern UInt h_generic_calc_HSub8Ux4 ( UInt, UInt );
+extern UInt h_generic_calc_HSub8Sx4 ( UInt, UInt );
+
+extern UInt h_generic_calc_QAdd8Ux4 ( UInt, UInt );
+extern UInt h_generic_calc_QAdd8Sx4 ( UInt, UInt );
+extern UInt h_generic_calc_QSub8Ux4 ( UInt, UInt );
+extern UInt h_generic_calc_QSub8Sx4 ( UInt, UInt );
+
+extern UInt h_generic_calc_Sad8Ux4  ( UInt, UInt );
+
+extern UInt h_generic_calc_CmpNEZ16x2 ( UInt );
+extern UInt h_generic_calc_CmpNEZ8x4  ( UInt );
 
 #endif /* ndef __VEX_HOST_GENERIC_SIMD64_H */
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.c
index 54fd2fd68..c28fc6215 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.c
@@ -286,6 +286,8 @@ HChar* showPPCCondCode ( PPCCondCode cond )
       return (cond.test == Pct_TRUE) ? "cr7.gt=1" : "cr7.gt=0";
    case Pcf_7LT:
       return (cond.test == Pct_TRUE) ? "cr7.lt=1" : "cr7.lt=0";
+   case Pcf_NONE:
+      return "no-flag";
    default: vpanic("ppPPCCondCode");
    }
 }
@@ -296,6 +298,11 @@ PPCCondCode mk_PPCCondCode ( PPCCondTest test, PPCCondFlag flag )
    PPCCondCode cc;
    cc.flag = flag;
    cc.test = test;
+   if (test == Pct_ALWAYS) { 
+      vassert(flag == Pcf_NONE);
+   } else {
+      vassert(flag != Pcf_NONE);
+   }
    return cc;
 }
 
@@ -962,15 +969,65 @@ PPCInstr* PPCInstr_FpRSP ( HReg dst, HReg src ) {
    i->Pin.FpRSP.src = src;
    return i;
 }
-PPCInstr* PPCInstr_FpCftI ( Bool fromI, Bool int32, 
-                            HReg dst, HReg src ) {
+
+/*
+Valid combo | fromI | int32 | syned | flt64 |
+--------------------------------------------
+            |  n       n       n       n    |
+--------------------------------------------
+ F64->I64U  |  n       n       n       y    |
+--------------------------------------------
+            |  n       n       y       n    |
+--------------------------------------------
+ F64->I64S  |  n       n       y       y    |
+--------------------------------------------
+            |  n       y       n       n    |
+--------------------------------------------
+ F64->I32U  |  n       y       n       y    |
+--------------------------------------------
+            |  n       y       y       n    |
+--------------------------------------------
+ F64->I32S  |  n       y       y       y    |
+--------------------------------------------
+ I64U->F32  |  y       n       n       n    |
+--------------------------------------------
+ I64U->F64  |  y       n       n       y    |
+--------------------------------------------
+            |  y       n       y       n    |
+--------------------------------------------
+ I64S->F64  |  y       n       y       y    |
+--------------------------------------------
+            |  y       y       n       n    |
+--------------------------------------------
+            |  y       y       n       y    |
+--------------------------------------------
+            |  y       y       y       n    |
+--------------------------------------------
+            |  y       y       y       y    |
+--------------------------------------------
+*/
+PPCInstr* PPCInstr_FpCftI ( Bool fromI, Bool int32, Bool syned,
+                            Bool flt64, HReg dst, HReg src ) {
+   Bool tmp = fromI | int32 | syned | flt64;
+   vassert(tmp == True || tmp == False); // iow, no high bits set
+   UShort conversion = 0;
+   conversion = (fromI << 3) | (int32 << 2) | (syned << 1) | flt64;
+   switch (conversion) {
+      // Supported conversion operations
+      case 1: case 3: case 5: case 7:
+      case 8: case 9: case 11:
+         break;
+      default:
+         vpanic("PPCInstr_FpCftI(ppc_host)");
+   }
    PPCInstr* i         = LibVEX_Alloc(sizeof(PPCInstr));
    i->tag              = Pin_FpCftI;
    i->Pin.FpCftI.fromI = fromI;
    i->Pin.FpCftI.int32 = int32;
+   i->Pin.FpCftI.syned = syned;
+   i->Pin.FpCftI.flt64 = flt64;
    i->Pin.FpCftI.dst   = dst;
    i->Pin.FpCftI.src   = src;
-   vassert(!(int32 && fromI)); /* no such insn ("fcfiw"). */
    return i;
 }
 PPCInstr* PPCInstr_FpCMov ( PPCCondCode cond, HReg dst, HReg src ) {
@@ -1065,7 +1122,7 @@ PPCInstr* PPCInstr_AvBin32x4 ( PPCAvOp op, HReg dst,
    i->Pin.AvBin32x4.srcR = srcR;
    return i;
 }
-PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst,
+PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvFpOp op, HReg dst,
                                 HReg srcL, HReg srcR ) {
    PPCInstr* i            = LibVEX_Alloc(sizeof(PPCInstr));
    i->tag                 = Pin_AvBin32Fx4;
@@ -1075,7 +1132,7 @@ PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst,
    i->Pin.AvBin32Fx4.srcR = srcR;
    return i;
 }
-PPCInstr* PPCInstr_AvUn32Fx4 ( PPCAvOp op, HReg dst, HReg src ) {
+PPCInstr* PPCInstr_AvUn32Fx4 ( PPCAvFpOp op, HReg dst, HReg src ) {
    PPCInstr* i          = LibVEX_Alloc(sizeof(PPCInstr));
    i->tag               = Pin_AvUn32Fx4;
    i->Pin.AvUn32Fx4.op  = op;
@@ -1433,15 +1490,21 @@ void ppPPCInstr ( PPCInstr* i, Bool mode64 )
       ppHRegPPC(i->Pin.FpRSP.src);
       return;
    case Pin_FpCftI: {
-      HChar* str = "fc???";
+      HChar* str = "fc?????";
       if (i->Pin.FpCftI.fromI == False && i->Pin.FpCftI.int32 == False)
          str = "fctid";
       else
       if (i->Pin.FpCftI.fromI == False && i->Pin.FpCftI.int32 == True)
          str = "fctiw";
       else
-      if (i->Pin.FpCftI.fromI == True && i->Pin.FpCftI.int32 == False)
-         str = "fcfid";
+      if (i->Pin.FpCftI.fromI == True && i->Pin.FpCftI.int32 == False) {
+         if (i->Pin.FpCftI.syned == True)
+            str = "fcfid";
+         else if (i->Pin.FpCftI.flt64 == True)
+            str = "fcfidu";
+         else
+            str = "fcfidus";
+      }
       vex_printf("%s ", str);
       ppHRegPPC(i->Pin.FpCftI.dst);
       vex_printf(",");
@@ -3144,6 +3207,7 @@ Int emit_PPCInstr ( UChar* buf, Int nbuf, PPCInstr* i,
          // Just load 1 to dst => li dst,1
          p = mkFormD(p, 14, r_dst, 0, 1);
       } else {
+         vassert(cond.flag != Pcf_NONE);
          rot_imm = 1 + cond.flag;
          r_tmp = 0;  // Not set in getAllocable, so no need to declare.
 
@@ -3385,9 +3449,19 @@ Int emit_PPCInstr ( UChar* buf, Int nbuf, PPCInstr* i,
          goto done;
       }
       if (i->Pin.FpCftI.fromI == True && i->Pin.FpCftI.int32 == False) {
-         // fcfid (conv i64 to f64), PPC64 p434
-         p = mkFormX(p, 63, fr_dst, 0, fr_src, 846, 0);
-         goto done;
+         if (i->Pin.FpCftI.syned == True) {
+            // fcfid (conv i64 to f64), PPC64 p434
+            p = mkFormX(p, 63, fr_dst, 0, fr_src, 846, 0);
+            goto done;
+         } else if (i->Pin.FpCftI.flt64 == True) {
+            // fcfidu (conv u64 to f64)
+            p = mkFormX(p, 63, fr_dst, 0, fr_src, 974, 0);
+            goto done;
+         } else {
+            // fcfidus (conv u64 to f32)
+            p = mkFormX(p, 59, fr_dst, 0, fr_src, 974, 0);
+            goto done;
+         }
       }
       goto bad;
    }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.h
index accfd58de..ba9e96315 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_defs.h
@@ -162,15 +162,16 @@ typedef
       Pcf_7LT  = 28,  /* neg  | lt          */
       Pcf_7GT  = 29,  /* pos  | gt          */
       Pcf_7EQ  = 30,  /* zero | equal       */
-      Pcf_7SO  = 31   /* summary overflow   */
+      Pcf_7SO  = 31,  /* summary overflow   */
+      Pcf_NONE = 32   /* no condition; used with Pct_ALWAYS */
    }
    PPCCondFlag;
 
 typedef
    enum {   /* Maps bc bitfield BO */
-      Pct_FALSE  = 0x4,
-      Pct_TRUE   = 0xC,
-      Pct_ALWAYS = 0x14
+      Pct_FALSE  = 0x4, /* associated PPCCondFlag must not be Pcf_NONE */
+      Pct_TRUE   = 0xC, /* associated PPCCondFlag must not be Pcf_NONE */
+      Pct_ALWAYS = 0x14 /* associated PPCCondFlag must be Pcf_NONE */
    }
    PPCCondTest;
 
@@ -461,7 +462,7 @@ typedef
       Pin_FpLdSt,     /* FP load/store */
       Pin_FpSTFIW,    /* stfiwx */
       Pin_FpRSP,      /* FP round IEEE754 double to IEEE754 single */
-      Pin_FpCftI,     /* fcfid/fctid/fctiw */
+      Pin_FpCftI,     /* fcfid[u,s,us]/fctid[u]/fctiw[u] */
       Pin_FpCMov,     /* FP floating point conditional move */
       Pin_FpLdFPSCR,  /* mtfsf */
       Pin_FpCmp,      /* FP compare, generating value into int reg */
@@ -662,11 +663,15 @@ typedef
             HReg src;
             HReg dst;
          } FpRSP;
-         /* fcfid/fctid/fctiw.  Note there's no fcfiw so fromI==True
-            && int32==True is not allowed. */
+         /* fcfid[u,s,us]/fctid[u]/fctiw[u].  Only some combinations
+            of the various fields are allowed.  This is asserted for
+            and documented in the code for the constructor,
+            PPCInstr_FpCftI, in host_ppc_defs.c.  */
          struct {
-            Bool fromI; /* False==F->I, True==I->F */
-            Bool int32; /* True== I is 32, False==I is 64 */
+            Bool fromI; /* True== I->F,    False== F->I */
+            Bool int32; /* True== I is 32, False== I is 64 */
+            Bool syned;
+            Bool flt64; /* True== F is 64, False== F is 32 */
             HReg src;
             HReg dst;
          } FpCftI;
@@ -811,8 +816,8 @@ extern PPCInstr* PPCInstr_FpMulAcc   ( PPCFpOp op, HReg dst, HReg srcML,
 extern PPCInstr* PPCInstr_FpLdSt     ( Bool isLoad, UChar sz, HReg, PPCAMode* );
 extern PPCInstr* PPCInstr_FpSTFIW    ( HReg addr, HReg data );
 extern PPCInstr* PPCInstr_FpRSP      ( HReg dst, HReg src );
-extern PPCInstr* PPCInstr_FpCftI     ( Bool fromI, Bool int32, 
-                                       HReg dst, HReg src );
+extern PPCInstr* PPCInstr_FpCftI     ( Bool fromI, Bool int32, Bool syned,
+                                       Bool dst64, HReg dst, HReg src );
 extern PPCInstr* PPCInstr_FpCMov     ( PPCCondCode, HReg dst, HReg src );
 extern PPCInstr* PPCInstr_FpLdFPSCR  ( HReg src );
 extern PPCInstr* PPCInstr_FpCmp      ( HReg dst, HReg srcL, HReg srcR );
@@ -825,8 +830,8 @@ extern PPCInstr* PPCInstr_AvBinary   ( PPCAvOp op, HReg dst, HReg srcL, HReg src
 extern PPCInstr* PPCInstr_AvBin8x16  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvBin16x8  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvBin32x4  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
-extern PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
-extern PPCInstr* PPCInstr_AvUn32Fx4  ( PPCAvOp op, HReg dst, HReg src );
+extern PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvFpOp op, HReg dst, HReg srcL, HReg srcR );
+extern PPCInstr* PPCInstr_AvUn32Fx4  ( PPCAvFpOp op, HReg dst, HReg src );
 extern PPCInstr* PPCInstr_AvPerm     ( HReg dst, HReg srcL, HReg srcR, HReg ctl );
 extern PPCInstr* PPCInstr_AvSel      ( HReg ctl, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvShlDbl   ( UChar shift, HReg dst, HReg srcL, HReg srcR );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_isel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_isel.c
index 4ae18f32e..4ad992539 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_isel.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_ppc_isel.c
@@ -126,7 +126,10 @@ fnabs[.]                 if .             n             n
 
 fadd[.]                  if .             y             y
 fadds[.]                 if .             y             y
-fcfid[.] (i64->dbl)      if .             y             y
+fcfid[.] (Si64->dbl)     if .             y             y
+fcfidU[.] (Ui64->dbl)    if .             y             y
+fcfids[.] (Si64->sngl)   if .             Y             Y
+fcfidus[.] (Ui64->sngl)  if .             Y             Y
 fcmpo (cmp, result       n                n             n
 fcmpu  to crfD)          n                n             n
 fctid[.]  (dbl->i64)     if .       ->undef             y
@@ -559,7 +562,7 @@ PPCAMode* genGuestArrayOffset ( ISelEnv* env, IRRegArray* descr,
 
    if (bias < -100 || bias > 100) /* somewhat arbitrarily */
       vpanic("genGuestArrayOffset(ppc host)(3)");
-   if (descr->base < 0 || descr->base > 4000) /* somewhat arbitrarily */
+   if (descr->base < 0 || descr->base > 5000) /* somewhat arbitrarily */
       vpanic("genGuestArrayOffset(ppc host)(4)");
 
    /* Compute off into a reg, %off.  Then return:
@@ -782,7 +785,7 @@ void doHelperCall ( ISelEnv* env,
       }
 
       /* Fast scheme only applies for unconditional calls.  Hence: */
-      cc.test = Pct_ALWAYS;
+      cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
 
    } else {
 
@@ -825,7 +828,7 @@ void doHelperCall ( ISelEnv* env,
          because the argument computations could trash the condition
          codes.  Be a bit clever to handle the common case where the
          guard is 1:Bit. */
-      cc.test = Pct_ALWAYS;
+      cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
       if (guard) {
          if (guard->tag == Iex_Const 
              && guard->Iex.Const.con->tag == Ico_U1
@@ -994,6 +997,16 @@ static HReg generate_zeroes_V128 ( ISelEnv* env )
    return dst;
 }
 
+/* Generate all-ones into a new vector register.
+*/
+static HReg generate_ones_V128 ( ISelEnv* env )
+{
+   HReg dst = newVRegV(env);
+   PPCVI5s * src = PPCVI5s_Imm(-1);
+   addInstr(env, PPCInstr_AvSplat(8, dst, src));
+   return dst;
+}
+
 
 /*
   Generates code for AvSplat
@@ -1458,7 +1471,8 @@ static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e )
          set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
 
          sub_from_sp( env, 16 );
-         addInstr(env, PPCInstr_FpCftI(False/*F->I*/, True/*int32*/, 
+         addInstr(env, PPCInstr_FpCftI(False/*F->I*/, True/*int32*/,
+                                       True/*syned*/, True/*flt64*/,
                                        ftmp, fsrc));
          addInstr(env, PPCInstr_FpSTFIW(r1, ftmp));
          addInstr(env, PPCInstr_Load(4, idst, zero_r1, mode64));
@@ -1486,8 +1500,8 @@ static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e )
             set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
 
             sub_from_sp( env, 16 );
-            addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/,
-                                          ftmp, fsrc));
+            addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/, True,
+                                          True, ftmp, fsrc));
             addInstr(env, PPCInstr_FpLdSt(False/*store*/, 8, ftmp, zero_r1));
             addInstr(env, PPCInstr_Load(8, idst, zero_r1, True/*mode64*/));
             add_to_sp( env, 16 );
@@ -1602,6 +1616,7 @@ static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e )
       case Iop_Not16:
       case Iop_Not32:
       case Iop_Not64: {
+         if (op_unop == Iop_Not64) vassert(mode64);
          HReg r_dst = newVRegI(env);
          HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
          addInstr(env, PPCInstr_Unary(Pun_NOT,r_dst,r_src));
@@ -2390,8 +2405,10 @@ static PPCCondCode iselCondCode_wrk ( ISelEnv* env, IRExpr* e )
       switch (e->Iex.Binop.op) {
       case Iop_CmpEQ32:  return mk_PPCCondCode( Pct_TRUE,  Pcf_7EQ );
       case Iop_CmpNE32:  return mk_PPCCondCode( Pct_FALSE, Pcf_7EQ );
-      case Iop_CmpLT32U: return mk_PPCCondCode( Pct_TRUE,  Pcf_7LT );
-      case Iop_CmpLE32U: return mk_PPCCondCode( Pct_FALSE, Pcf_7GT );
+      case Iop_CmpLT32U: case Iop_CmpLT32S:
+         return mk_PPCCondCode( Pct_TRUE,  Pcf_7LT );
+      case Iop_CmpLE32U: case Iop_CmpLE32S:
+         return mk_PPCCondCode( Pct_FALSE, Pcf_7GT );
       default: vpanic("iselCondCode(ppc): CmpXX32");
       }
    }
@@ -2736,8 +2753,8 @@ static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
             set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
 
             sub_from_sp( env, 16 );
-            addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/,
-                                          ftmp, fsrc));
+            addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/, True,
+                                          True, ftmp, fsrc));
             addInstr(env, PPCInstr_FpLdSt(False/*store*/, 8, ftmp, zero_r1));
             addInstr(env, PPCInstr_Load(4, tHi, zero_r1, False/*mode32*/));
             addInstr(env, PPCInstr_Load(4, tLo, four_r1, False/*mode32*/));
@@ -2870,6 +2887,18 @@ static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
          return;
       }
 
+      case Iop_Not64: {
+         HReg xLo, xHi;
+         HReg tmpLo = newVRegI(env);
+         HReg tmpHi = newVRegI(env);
+         iselInt64Expr(&xHi, &xLo, env, e->Iex.Unop.arg);
+         addInstr(env, PPCInstr_Unary(Pun_NOT,tmpLo,xLo));
+         addInstr(env, PPCInstr_Unary(Pun_NOT,tmpHi,xHi));
+         *rHi = tmpHi;
+         *rLo = tmpLo;
+         return;
+      }
+
       /* ReinterpF64asI64(e) */
       /* Given an IEEE754 double, produce an I64 with the same bit
          pattern. */
@@ -2931,6 +2960,8 @@ static HReg iselFltExpr ( ISelEnv* env, IRExpr* e )
 /* DO NOT CALL THIS DIRECTLY */
 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
 {
+   Bool        mode64 = env->mode64;
+
    IRType ty = typeOfIRExpr(env->type_env,e);
    vassert(ty == Ity_F32);
 
@@ -2999,6 +3030,60 @@ static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
       return fdst;
    }
 
+   if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64UtoF32) {
+      if (mode64) {
+         HReg fdst = newVRegF(env);
+         HReg isrc = iselWordExpr_R(env, e->Iex.Binop.arg2);
+         HReg r1   = StackFramePtr(env->mode64);
+         PPCAMode* zero_r1 = PPCAMode_IR( 0, r1 );
+
+         /* Set host rounding mode */
+         set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+         sub_from_sp( env, 16 );
+
+         addInstr(env, PPCInstr_Store(8, zero_r1, isrc, True/*mode64*/));
+         addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
+         addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/, 
+                                       False, False,
+                                       fdst, fdst));
+
+         add_to_sp( env, 16 );
+
+         ///* Restore default FPU rounding. */
+         //set_FPU_rounding_default( env );
+         return fdst;
+      } else {
+         /* 32-bit mode */
+         HReg fdst = newVRegF(env);
+         HReg isrcHi, isrcLo;
+         HReg r1   = StackFramePtr(env->mode64);
+         PPCAMode* zero_r1 = PPCAMode_IR( 0, r1 );
+         PPCAMode* four_r1 = PPCAMode_IR( 4, r1 );
+
+         iselInt64Expr(&isrcHi, &isrcLo, env, e->Iex.Binop.arg2);
+
+         /* Set host rounding mode */
+         set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+         sub_from_sp( env, 16 );
+
+         addInstr(env, PPCInstr_Store(4, zero_r1, isrcHi, False/*mode32*/));
+         addInstr(env, PPCInstr_Store(4, four_r1, isrcLo, False/*mode32*/));
+         addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
+         addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/, 
+                                       False, False,
+                                       fdst, fdst));
+
+         add_to_sp( env, 16 );
+
+         ///* Restore default FPU rounding. */
+         //set_FPU_rounding_default( env );
+         return fdst;
+      }
+
+   }
+
    vex_printf("iselFltExpr(ppc): No such tag(%u)\n", e->tag);
    ppIRExpr(e);
    vpanic("iselFltExpr_wrk(ppc)");
@@ -3175,7 +3260,7 @@ static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
          return r_dst;
       }
 
-      if (e->Iex.Binop.op == Iop_I64StoF64) {
+      if (e->Iex.Binop.op == Iop_I64StoF64 || e->Iex.Binop.op == Iop_I64UtoF64) {
          if (mode64) {
             HReg fdst = newVRegF(env);
             HReg isrc = iselWordExpr_R(env, e->Iex.Binop.arg2);
@@ -3190,6 +3275,8 @@ static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
             addInstr(env, PPCInstr_Store(8, zero_r1, isrc, True/*mode64*/));
             addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
             addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/, 
+                                          e->Iex.Binop.op == Iop_I64StoF64,
+                                          True/*fdst is 64 bit*/,
                                           fdst, fdst));
 
             add_to_sp( env, 16 );
@@ -3216,6 +3303,8 @@ static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
             addInstr(env, PPCInstr_Store(4, four_r1, isrcLo, False/*mode32*/));
             addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
             addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/, 
+                                          e->Iex.Binop.op == Iop_I64StoF64,
+                                          True/*fdst is 64 bit*/,
                                           fdst, fdst));
 
             add_to_sp( env, 16 );
@@ -3318,6 +3407,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
 {
    Bool mode64 = env->mode64;
    PPCAvOp op = Pav_INVALID;
+   PPCAvFpOp fpop = Pavfp_INVALID;
    IRType  ty = typeOfIRExpr(env->type_env,e);
    vassert(e);
    vassert(ty == Ity_V128);
@@ -3386,21 +3476,21 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
          return dst;
       }
 
-      case Iop_Recip32Fx4:    op = Pavfp_RCPF;    goto do_32Fx4_unary;
-      case Iop_RSqrt32Fx4:    op = Pavfp_RSQRTF;  goto do_32Fx4_unary;
-      case Iop_I32UtoFx4:     op = Pavfp_CVTU2F;  goto do_32Fx4_unary;
-      case Iop_I32StoFx4:     op = Pavfp_CVTS2F;  goto do_32Fx4_unary;
-      case Iop_QFtoI32Ux4_RZ: op = Pavfp_QCVTF2U; goto do_32Fx4_unary;
-      case Iop_QFtoI32Sx4_RZ: op = Pavfp_QCVTF2S; goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RM: op = Pavfp_ROUNDM;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RP: op = Pavfp_ROUNDP;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RN: op = Pavfp_ROUNDN;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RZ: op = Pavfp_ROUNDZ;  goto do_32Fx4_unary;
+      case Iop_Recip32Fx4:    fpop = Pavfp_RCPF;    goto do_32Fx4_unary;
+      case Iop_RSqrt32Fx4:    fpop = Pavfp_RSQRTF;  goto do_32Fx4_unary;
+      case Iop_I32UtoFx4:     fpop = Pavfp_CVTU2F;  goto do_32Fx4_unary;
+      case Iop_I32StoFx4:     fpop = Pavfp_CVTS2F;  goto do_32Fx4_unary;
+      case Iop_QFtoI32Ux4_RZ: fpop = Pavfp_QCVTF2U; goto do_32Fx4_unary;
+      case Iop_QFtoI32Sx4_RZ: fpop = Pavfp_QCVTF2S; goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RM: fpop = Pavfp_ROUNDM;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RP: fpop = Pavfp_ROUNDP;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RN: fpop = Pavfp_ROUNDN;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RZ: fpop = Pavfp_ROUNDZ;  goto do_32Fx4_unary;
       do_32Fx4_unary:
       {
          HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
          HReg dst = newVRegV(env);
-         addInstr(env, PPCInstr_AvUn32Fx4(op, dst, arg));
+         addInstr(env, PPCInstr_AvUn32Fx4(fpop, dst, arg));
          return dst;
       }
 
@@ -3503,20 +3593,20 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
          }
       }
 
-      case Iop_Add32Fx4:   op = Pavfp_ADDF;   goto do_32Fx4;
-      case Iop_Sub32Fx4:   op = Pavfp_SUBF;   goto do_32Fx4;
-      case Iop_Max32Fx4:   op = Pavfp_MAXF;   goto do_32Fx4;
-      case Iop_Min32Fx4:   op = Pavfp_MINF;   goto do_32Fx4;
-      case Iop_Mul32Fx4:   op = Pavfp_MULF;   goto do_32Fx4;
-      case Iop_CmpEQ32Fx4: op = Pavfp_CMPEQF; goto do_32Fx4;
-      case Iop_CmpGT32Fx4: op = Pavfp_CMPGTF; goto do_32Fx4;
-      case Iop_CmpGE32Fx4: op = Pavfp_CMPGEF; goto do_32Fx4;
+      case Iop_Add32Fx4:   fpop = Pavfp_ADDF;   goto do_32Fx4;
+      case Iop_Sub32Fx4:   fpop = Pavfp_SUBF;   goto do_32Fx4;
+      case Iop_Max32Fx4:   fpop = Pavfp_MAXF;   goto do_32Fx4;
+      case Iop_Min32Fx4:   fpop = Pavfp_MINF;   goto do_32Fx4;
+      case Iop_Mul32Fx4:   fpop = Pavfp_MULF;   goto do_32Fx4;
+      case Iop_CmpEQ32Fx4: fpop = Pavfp_CMPEQF; goto do_32Fx4;
+      case Iop_CmpGT32Fx4: fpop = Pavfp_CMPGTF; goto do_32Fx4;
+      case Iop_CmpGE32Fx4: fpop = Pavfp_CMPGEF; goto do_32Fx4;
       do_32Fx4:
       {
          HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
          HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
          HReg dst = newVRegV(env);
-         addInstr(env, PPCInstr_AvBin32Fx4(op, dst, argL, argR));
+         addInstr(env, PPCInstr_AvBin32Fx4(fpop, dst, argL, argR));
          return dst;
       }
 
@@ -3710,6 +3800,9 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
       vassert(e->Iex.Const.con->tag == Ico_V128);
       if (e->Iex.Const.con->Ico.V128 == 0x0000) {
          return generate_zeroes_V128(env);
+      } 
+      else if (e->Iex.Const.con->Ico.V128 == 0xffff) {
+         return generate_ones_V128(env);
       }
    }
 
@@ -4087,7 +4180,7 @@ static void iselNext ( ISelEnv* env, IRExpr* next, IRJumpKind jk )
       ppIRExpr(next);
       vex_printf("\n");
    }
-   cond = mk_PPCCondCode( Pct_ALWAYS, Pcf_7EQ );
+   cond = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
    ri = iselWordExpr_RI(env, next);
    addInstr(env, PPCInstr_RdWrLR(True, env->savedLR));
    addInstr(env, PPCInstr_Goto(jk, cond, ri));
@@ -4116,10 +4209,10 @@ HInstrArray* iselSB_PPC ( IRSB* bb, VexArch      arch_host,
 
    /* do some sanity checks */
    mask32 = VEX_HWCAPS_PPC32_F | VEX_HWCAPS_PPC32_V
-            | VEX_HWCAPS_PPC32_FX | VEX_HWCAPS_PPC32_GX;
+            | VEX_HWCAPS_PPC32_FX | VEX_HWCAPS_PPC32_GX | VEX_HWCAPS_PPC32_VX;
 
-   mask64 = VEX_HWCAPS_PPC64_V
-            | VEX_HWCAPS_PPC64_FX | VEX_HWCAPS_PPC64_GX;
+   mask64 = VEX_HWCAPS_PPC64_V | VEX_HWCAPS_PPC64_FX
+	   | VEX_HWCAPS_PPC64_GX | VEX_HWCAPS_PPC64_VX;
 
    if (mode64) {
       vassert((hwcaps_host & mask32) == 0);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.c
new file mode 100644
index 000000000..5e50d8f47
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.c
@@ -0,0 +1,7149 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                  host_s390_defs.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#include "libvex_basictypes.h"
+#include "libvex.h"
+#include "libvex_trc_values.h"
+#include "libvex_guest_offsets.h"
+#include "libvex_s390x_common.h"
+
+#include "main_util.h"
+#include "main_globals.h"
+#include "host_generic_regs.h"
+#include "host_s390_defs.h"
+#include "host_s390_disasm.h"
+#include 
+
+/* KLUDGE: We need to know the hwcaps of the host when generating
+   code. But that info is not passed to emit_S390Instr. Only mode64 is
+   being passed. So, ideally, we want this passed as an argument, too.
+   Until then, we use a global variable. This variable is set as a side
+   effect of iselSB_S390. This is safe because instructions are selected
+   before they are emitted. */
+const VexArchInfo *s390_archinfo_host;
+
+/*------------------------------------------------------------*/
+/*--- Registers                                            ---*/
+/*------------------------------------------------------------*/
+
+/* Decompile the given register into a static buffer and return it */
+const HChar *
+s390_hreg_as_string(HReg reg)
+{
+   static HChar buf[10];
+
+   static const HChar ireg_names[16][5] = {
+      "%r0",  "%r1",  "%r2",  "%r3",  "%r4",  "%r5",  "%r6",  "%r7",
+      "%r8",  "%r9",  "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
+   };
+
+   static const HChar freg_names[16][5] = {
+      "%f0",  "%f1",  "%f2",  "%f3",  "%f4",  "%f5",  "%f6",  "%f7",
+      "%f8",  "%f9",  "%f10", "%f11", "%f12", "%f13", "%f14", "%f15"
+   };
+
+   UInt r;  /* hregNumber() returns an UInt */
+
+   r = hregNumber(reg);
+
+   /* Be generic for all virtual regs. */
+   if (hregIsVirtual(reg)) {
+      buf[0] = '\0';
+      switch (hregClass(reg)) {
+      case HRcInt64: vex_sprintf(buf, "%%vR%d", r); break;
+      case HRcFlt64: vex_sprintf(buf, "%%vF%d", r); break;
+      default:       goto fail;
+      }
+      return buf;
+   }
+
+   /* But specific for real regs. */
+   vassert(r < 16);
+
+   switch (hregClass(reg)) {
+   case HRcInt64: return ireg_names[r];
+   case HRcFlt64: return freg_names[r];
+   default:       goto fail;
+   }
+
+ fail: vpanic("s390_hreg_as_string");
+}
+
+
+/* Tell the register allocator which registers can be allocated. */
+void
+s390_hreg_get_allocable(Int *nregs, HReg **arr)
+{
+   UInt i;
+
+   /* Total number of allocable registers (all classes) */
+   *nregs =  16 /* GPRs */
+      -  1 /* r0 */
+      -  1 /* r12 register holding VG_(dispatch_ctr) */
+      -  1 /* r13 guest state pointer */
+      -  1 /* r14 link register */
+      -  1 /* r15 stack pointer */
+      + 16 /* FPRs */
+      ;
+
+   *arr = LibVEX_Alloc(*nregs * sizeof(HReg));
+
+   i = 0;
+
+   /* GPR0 is not available because it is interpreted as 0, when used
+      as a base or index register. */
+   (*arr)[i++] = mkHReg(1,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(2,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(3,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(4,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(5,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(6,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(7,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(8,  HRcInt64, False);
+   (*arr)[i++] = mkHReg(9,  HRcInt64, False);
+   /* GPR10 and GPR11 are used for instructions that use register pairs.
+      Otherwise, they are available to the allocator */
+   (*arr)[i++] = mkHReg(10, HRcInt64, False);
+   (*arr)[i++] = mkHReg(11, HRcInt64, False);
+   /* GPR12 is not available because it caches VG_(dispatch_ctr) */
+   /* GPR13 is not available because it is used as guest state pointer */
+   /* GPR14 is not available because it is used as link register */
+   /* GPR15 is not available because it is used as stack pointer */
+
+   /* Add the available real (non-virtual) FPRs */
+   (*arr)[i++] = mkHReg(0,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(1,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(2,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(3,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(4,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(5,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(6,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(7,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(8,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(9,  HRcFlt64, False);
+   (*arr)[i++] = mkHReg(10, HRcFlt64, False);
+   (*arr)[i++] = mkHReg(11, HRcFlt64, False);
+   (*arr)[i++] = mkHReg(12, HRcFlt64, False);
+   (*arr)[i++] = mkHReg(13, HRcFlt64, False);
+   (*arr)[i++] = mkHReg(14, HRcFlt64, False);
+   (*arr)[i++] = mkHReg(15, HRcFlt64, False);
+   /* FPR12 - FPR15 are also used as register pairs for 128-bit
+      floating point operations */
+}
+
+
+/* Return the real register that holds the guest state pointer */
+HReg
+s390_hreg_guest_state_pointer(void)
+{
+   return mkHReg(S390_REGNO_GUEST_STATE_POINTER, HRcInt64, False);
+}
+
+/* Is VALUE within the domain of a 20-bit signed integer. */
+static __inline__ Bool
+fits_signed_20bit(Int value)
+{
+   return ((value << 12) >> 12) == value;
+}
+
+
+/* Is VALUE within the domain of a 12-bit unsigned integer. */
+static __inline__ Bool
+fits_unsigned_12bit(Int value)
+{
+   return (value & 0xFFF) == value;
+}
+
+/*------------------------------------------------------------*/
+/*--- Addressing modes (amodes)                            ---*/
+/*------------------------------------------------------------*/
+
+/* Construct a b12 amode. */
+s390_amode *
+s390_amode_b12(Int d, HReg b)
+{
+   s390_amode *am = LibVEX_Alloc(sizeof(s390_amode));
+
+   vassert(fits_unsigned_12bit(d));
+
+   am->tag = S390_AMODE_B12;
+   am->d = d;
+   am->b = b;
+   am->x = 0;  /* hregNumber(0) == 0 */
+
+   return am;
+}
+
+
+/* Construct a b20 amode. */
+s390_amode *
+s390_amode_b20(Int d, HReg b)
+{
+   s390_amode *am = LibVEX_Alloc(sizeof(s390_amode));
+
+   vassert(fits_signed_20bit(d));
+
+   am->tag = S390_AMODE_B20;
+   am->d = d;
+   am->b = b;
+   am->x = 0;  /* hregNumber(0) == 0 */
+
+   return am;
+}
+
+
+/* Construct a bx12 amode. */
+s390_amode *
+s390_amode_bx12(Int d, HReg b, HReg x)
+{
+   s390_amode *am = LibVEX_Alloc(sizeof(s390_amode));
+
+   vassert(fits_unsigned_12bit(d));
+   vassert(b != 0);
+   vassert(x != 0);
+
+   am->tag = S390_AMODE_BX12;
+   am->d = d;
+   am->b = b;
+   am->x = x;
+
+   return am;
+}
+
+
+/* Construct a bx20 amode. */
+s390_amode *
+s390_amode_bx20(Int d, HReg b, HReg x)
+{
+   s390_amode *am = LibVEX_Alloc(sizeof(s390_amode));
+
+   vassert(fits_signed_20bit(d));
+   vassert(b != 0);
+   vassert(x != 0);
+
+   am->tag = S390_AMODE_BX20;
+   am->d = d;
+   am->b = b;
+   am->x = x;
+
+   return am;
+}
+
+
+/* Construct an AMODE for accessing the guest state at OFFSET */
+s390_amode *
+s390_amode_for_guest_state(Int offset)
+{
+   if (fits_unsigned_12bit(offset))
+      return s390_amode_b12(offset, s390_hreg_guest_state_pointer());
+
+   vpanic("invalid guest state offset");
+}
+
+
+/* Decompile the given amode into a static buffer and return it. */
+const HChar *
+s390_amode_as_string(const s390_amode *am)
+{
+   static HChar buf[30];
+   HChar *p;
+
+   buf[0] = '\0';
+   p = buf;
+
+   switch (am->tag) {
+   case S390_AMODE_B12:
+   case S390_AMODE_B20:
+      vex_sprintf(p, "%d(%s)", am->d, s390_hreg_as_string(am->b));
+      break;
+
+   case S390_AMODE_BX12:
+   case S390_AMODE_BX20:
+      /* s390_hreg_as_string returns pointer to local buffer. Need to
+         split this into two printfs */
+      p += vex_sprintf(p, "%d(%s,", am->d, s390_hreg_as_string(am->x));
+      vex_sprintf(p, "%s)", s390_hreg_as_string(am->b));
+      break;
+
+   default:
+      vpanic("s390_amode_as_string");
+   }
+
+   return buf;
+}
+
+
+/* Helper function for s390_amode_is_sane */
+static __inline__ Bool
+is_virtual_gpr(HReg reg)
+{
+   return hregIsVirtual(reg) && hregClass(reg) == HRcInt64;
+}
+
+
+/* Sanity check for an amode */
+Bool
+s390_amode_is_sane(const s390_amode *am)
+{
+   switch (am->tag) {
+   case S390_AMODE_B12:
+      return is_virtual_gpr(am->b) && fits_unsigned_12bit(am->d);
+
+   case S390_AMODE_B20:
+      return is_virtual_gpr(am->b) && fits_signed_20bit(am->d);
+
+   case S390_AMODE_BX12:
+      return is_virtual_gpr(am->b) && is_virtual_gpr(am->x) &&
+             fits_unsigned_12bit(am->d);
+
+   case S390_AMODE_BX20:
+      return is_virtual_gpr(am->b) && is_virtual_gpr(am->x) &&
+             fits_signed_20bit(am->d);
+
+   default:
+      vpanic("s390_amode_is_sane");
+   }
+}
+
+
+/* Record the register use of an amode */
+void
+s390_amode_get_reg_usage(HRegUsage *u, const s390_amode *am)
+{
+   switch (am->tag) {
+   case S390_AMODE_B12:
+   case S390_AMODE_B20:
+      addHRegUse(u, HRmRead, am->b);
+      return;
+
+   case S390_AMODE_BX12:
+   case S390_AMODE_BX20:
+      addHRegUse(u, HRmRead, am->b);
+      addHRegUse(u, HRmRead, am->x);
+      return;
+
+   default:
+      vpanic("s390_amode_get_reg_usage");
+   }
+}
+
+
+void
+s390_amode_map_regs(HRegRemap *m, s390_amode *am)
+{
+   switch (am->tag) {
+   case S390_AMODE_B12:
+   case S390_AMODE_B20:
+      am->b = lookupHRegRemap(m, am->b);
+      return;
+
+   case S390_AMODE_BX12:
+   case S390_AMODE_BX20:
+      am->b = lookupHRegRemap(m, am->b);
+      am->x = lookupHRegRemap(m, am->x);
+      return;
+
+   default:
+      vpanic("s390_amode_map_regs");
+   }
+}
+
+
+
+void
+ppS390AMode(struct s390_amode *am)
+{
+   vex_printf("%s", s390_amode_as_string(am));
+}
+
+void
+ppS390Instr(struct s390_insn *insn, Bool mode64)
+{
+   vex_printf("%s", s390_insn_as_string(insn));
+}
+
+void
+ppHRegS390(HReg reg)
+{
+   vex_printf("%s", s390_hreg_as_string(reg));
+}
+
+/*------------------------------------------------------------*/
+/*--- Helpers for register allocation                      ---*/
+/*------------------------------------------------------------*/
+
+/* Called once per translation. */
+void
+getAllocableRegs_S390(Int *nregs, HReg **arr, Bool mode64)
+{
+   s390_hreg_get_allocable(nregs, arr);
+}
+
+
+/* Tell the register allocator how the given instruction uses the registers
+   it refers to. */
+void
+getRegUsage_S390Instr(HRegUsage *u, struct s390_insn *insn, Bool mode64)
+{
+   s390_insn_get_reg_usage(u, insn);
+}
+
+
+/* Map the registers of the given instruction */
+void
+mapRegs_S390Instr(HRegRemap *m, struct s390_insn *insn, Bool mode64)
+{
+   s390_insn_map_regs(m, insn);
+}
+
+
+/* Figure out if the given insn represents a reg-reg move, and if so
+   assign the source and destination to *src and *dst.  If in doubt say No.
+   Used by the register allocator to do move coalescing. */
+Bool
+isMove_S390Instr(struct s390_insn *insn, HReg *src, HReg *dst)
+{
+   return s390_insn_is_reg_reg_move(insn, src, dst);
+}
+
+
+/* Generate s390 spill/reload instructions under the direction of the
+   register allocator.  Note it's critical these don't write the
+   condition codes. This is like an Ist_Put */
+void
+genSpill_S390(HInstr **i1, HInstr **i2, HReg rreg, Int offsetB, Bool mode64)
+{
+   s390_amode *am;
+
+   vassert(offsetB >= 0);
+   vassert(offsetB <= (1 << 12));  /* because we use b12 amode */
+   vassert(!hregIsVirtual(rreg));
+
+   *i1 = *i2 = NULL;
+
+   am = s390_amode_for_guest_state(offsetB);
+
+   switch (hregClass(rreg)) {
+   case HRcInt64:
+   case HRcFlt64:
+      *i1 = s390_insn_store(8, am, rreg);
+      return;
+
+   default:
+      ppHRegClass(hregClass(rreg));
+      vpanic("genSpill_S390: unimplemented regclass");
+   }
+}
+
+
+/* This is like an Iex_Get */
+void
+genReload_S390(HInstr **i1, HInstr **i2, HReg rreg, Int offsetB, Bool mode64)
+{
+   s390_amode *am;
+
+   vassert(offsetB >= 0);
+   vassert(offsetB <= (1 << 12));  /* because we use b12 amode */
+   vassert(!hregIsVirtual(rreg));
+
+   *i1 = *i2 = NULL;
+
+   am = s390_amode_for_guest_state(offsetB);
+
+   switch (hregClass(rreg)) {
+   case HRcInt64:
+   case HRcFlt64:
+      *i1 = s390_insn_load(8, rreg, am);
+      return;
+
+   default:
+      ppHRegClass(hregClass(rreg));
+      vpanic("genReload_S390: unimplemented regclass");
+   }
+}
+
+/* Helper function for s390_insn_get_reg_usage */
+static void
+s390_opnd_RMI_get_reg_usage(HRegUsage *u, s390_opnd_RMI op)
+{
+   switch (op.tag) {
+   case S390_OPND_REG:
+      addHRegUse(u, HRmRead, op.variant.reg);
+      break;
+
+   case S390_OPND_AMODE:
+      s390_amode_get_reg_usage(u, op.variant.am);
+      break;
+
+   case S390_OPND_IMMEDIATE:
+      break;
+
+   default:
+      vpanic("s390_opnd_RMI_get_reg_usage");
+   }
+}
+
+
+/* Tell the register allocator how the given insn uses the registers */
+void
+s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *insn)
+{
+   initHRegUsage(u);
+
+   switch (insn->tag) {
+   case S390_INSN_LOAD:
+      addHRegUse(u, HRmWrite, insn->variant.load.dst);
+      s390_amode_get_reg_usage(u, insn->variant.load.src);
+      break;
+
+   case S390_INSN_LOAD_IMMEDIATE:
+      addHRegUse(u, HRmWrite, insn->variant.load_immediate.dst);
+      break;
+
+   case S390_INSN_STORE:
+      addHRegUse(u, HRmRead, insn->variant.store.src);
+      s390_amode_get_reg_usage(u, insn->variant.store.dst);
+      break;
+
+   case S390_INSN_MOVE:
+      addHRegUse(u, HRmRead,  insn->variant.move.src);
+      addHRegUse(u, HRmWrite, insn->variant.move.dst);
+      break;
+
+   case S390_INSN_COND_MOVE:
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.cond_move.src);
+      addHRegUse(u, HRmWrite, insn->variant.cond_move.dst);
+      break;
+
+   case S390_INSN_ALU:
+      addHRegUse(u, HRmWrite, insn->variant.alu.dst);
+      addHRegUse(u, HRmRead,  insn->variant.alu.dst);  /* op1 */
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.alu.op2);
+      break;
+
+   case S390_INSN_MUL:
+      addHRegUse(u, HRmRead,  insn->variant.mul.dst_lo);  /* op1 */
+      addHRegUse(u, HRmWrite, insn->variant.mul.dst_lo);
+      addHRegUse(u, HRmWrite, insn->variant.mul.dst_hi);
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.mul.op2);
+      break;
+
+   case S390_INSN_DIV:
+      addHRegUse(u, HRmRead,  insn->variant.div.op1_lo);
+      addHRegUse(u, HRmRead,  insn->variant.div.op1_hi);
+      addHRegUse(u, HRmWrite, insn->variant.div.op1_lo);
+      addHRegUse(u, HRmWrite, insn->variant.div.op1_hi);
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.div.op2);
+      break;
+
+   case S390_INSN_DIVS:
+      addHRegUse(u, HRmRead,  insn->variant.divs.op1);
+      addHRegUse(u, HRmWrite, insn->variant.divs.op1); /* quotient */
+      addHRegUse(u, HRmWrite, insn->variant.divs.rem); /* remainder */
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.divs.op2);
+      break;
+
+   case S390_INSN_CLZ:
+      addHRegUse(u, HRmWrite, insn->variant.clz.num_bits);
+      addHRegUse(u, HRmWrite, insn->variant.clz.clobber);
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.clz.src);
+      break;
+
+   case S390_INSN_UNOP:
+      addHRegUse(u, HRmWrite, insn->variant.unop.dst);
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.unop.src);
+      break;
+
+   case S390_INSN_TEST:
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.test.src);
+      break;
+
+   case S390_INSN_CC2BOOL:
+      addHRegUse(u, HRmWrite, insn->variant.cc2bool.dst);
+      break;
+
+   case S390_INSN_CAS:
+      addHRegUse(u, HRmRead,  insn->variant.cas.op1);
+      s390_amode_get_reg_usage(u, insn->variant.cas.op2);
+      addHRegUse(u, HRmRead,  insn->variant.cas.op3);
+      addHRegUse(u, HRmWrite,  insn->variant.cas.old_mem);
+      break;
+
+   case S390_INSN_COMPARE:
+      addHRegUse(u, HRmRead, insn->variant.compare.src1);
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.compare.src2);
+      break;
+
+   case S390_INSN_BRANCH:
+      s390_opnd_RMI_get_reg_usage(u, insn->variant.branch.dst);
+      /* The destination address is loaded into S390_REGNO_RETURN_VALUE.
+         See s390_insn_branch_emit. */
+      addHRegUse(u, HRmWrite,
+                 mkHReg(S390_REGNO_RETURN_VALUE, HRcInt64, False));
+      break;
+
+   case S390_INSN_HELPER_CALL: {
+      UInt i;
+
+      /* Assume that all volatile registers are clobbered. ABI says,
+         volatile registers are: r0 - r5. Valgrind's register allocator
+         does not know about r0, so we can leave that out */
+      for (i = 1; i <= 5; ++i) {
+         addHRegUse(u, HRmWrite, mkHReg(i, HRcInt64, False));
+      }
+
+      /* Ditto for floating point registers. f0 - f7 are volatile */
+      for (i = 0; i <= 7; ++i) {
+         addHRegUse(u, HRmWrite, mkHReg(i, HRcFlt64, False));
+      }
+
+      /* The registers that are used for passing arguments will be read.
+         Not all of them may, but in general we need to assume that. */
+      for (i = 0; i < insn->variant.helper_call.num_args; ++i) {
+         addHRegUse(u, HRmRead, mkHReg(s390_gprno_from_arg_index(i),
+                                       HRcInt64, False));
+      }
+
+      /* s390_insn_helper_call_emit also reads / writes the link register
+         and stack pointer. But those registers are not visible to the
+         register allocator. So we don't need to do anything for them. */
+      break;
+   }
+
+   case S390_INSN_BFP_TRIOP:
+      addHRegUse(u, HRmWrite, insn->variant.bfp_triop.dst);
+      addHRegUse(u, HRmRead,  insn->variant.bfp_triop.dst);  /* first */
+      addHRegUse(u, HRmRead,  insn->variant.bfp_triop.op2);  /* second */
+      addHRegUse(u, HRmRead,  insn->variant.bfp_triop.op3);  /* third */
+      break;
+
+   case S390_INSN_BFP_BINOP:
+      addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst);
+      addHRegUse(u, HRmRead,  insn->variant.bfp_binop.dst);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp_binop.op2);  /* right */
+      break;
+
+   case S390_INSN_BFP_UNOP:
+      addHRegUse(u, HRmWrite, insn->variant.bfp_unop.dst);
+      addHRegUse(u, HRmRead,  insn->variant.bfp_unop.op);  /* operand */
+      break;
+
+   case S390_INSN_BFP_COMPARE:
+      addHRegUse(u, HRmWrite, insn->variant.bfp_compare.dst);
+      addHRegUse(u, HRmRead,  insn->variant.bfp_compare.op1);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp_compare.op2);  /* right */
+      break;
+
+   case S390_INSN_BFP128_BINOP:
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_hi);
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_lo);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_binop.dst_hi);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_binop.dst_lo);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_binop.op2_hi);  /* right */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_binop.op2_lo);  /* right */
+      break;
+
+   case S390_INSN_BFP128_COMPARE:
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_compare.dst);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_compare.op1_hi);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_compare.op1_lo);  /* left */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_compare.op2_hi);  /* right */
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_compare.op2_lo);  /* right */
+      break;
+
+   case S390_INSN_BFP128_UNOP:
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_unop.op_hi);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_unop.op_lo);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_TO:
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_unop.op_hi);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_FROM:
+      addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_unop.op_hi);
+      addHRegUse(u, HRmRead,  insn->variant.bfp128_unop.op_lo);
+      break;
+
+   case S390_INSN_MFENCE:
+      break;
+
+   default:
+      vpanic("s390_insn_get_reg_usage");
+   }
+}
+
+
+/* Helper function for s390_insn_map_regs */
+static void
+s390_opnd_RMI_map_regs(HRegRemap *m, s390_opnd_RMI *op)
+{
+   switch (op->tag) {
+   case S390_OPND_REG:
+      op->variant.reg = lookupHRegRemap(m, op->variant.reg);
+      break;
+
+   case S390_OPND_IMMEDIATE:
+      break;
+
+   case S390_OPND_AMODE:
+      s390_amode_map_regs(m, op->variant.am);
+      break;
+
+   default:
+      vpanic("s390_opnd_RMI_map_regs");
+   }
+}
+
+
+void
+s390_insn_map_regs(HRegRemap *m, s390_insn *insn)
+{
+   switch (insn->tag) {
+   case S390_INSN_LOAD:
+      insn->variant.load.dst = lookupHRegRemap(m, insn->variant.load.dst);
+      s390_amode_map_regs(m, insn->variant.load.src);
+      break;
+
+   case S390_INSN_STORE:
+      s390_amode_map_regs(m, insn->variant.store.dst);
+      insn->variant.store.src = lookupHRegRemap(m, insn->variant.store.src);
+      break;
+
+   case S390_INSN_MOVE:
+      insn->variant.move.dst = lookupHRegRemap(m, insn->variant.move.dst);
+      insn->variant.move.src = lookupHRegRemap(m, insn->variant.move.src);
+      break;
+
+   case S390_INSN_COND_MOVE:
+      insn->variant.cond_move.dst = lookupHRegRemap(m, insn->variant.cond_move.dst);
+      s390_opnd_RMI_map_regs(m, &insn->variant.cond_move.src);
+      break;
+
+   case S390_INSN_LOAD_IMMEDIATE:
+      insn->variant.load_immediate.dst =
+         lookupHRegRemap(m, insn->variant.load_immediate.dst);
+      break;
+
+   case S390_INSN_ALU:
+      insn->variant.alu.dst = lookupHRegRemap(m, insn->variant.alu.dst);
+      s390_opnd_RMI_map_regs(m, &insn->variant.alu.op2);
+      break;
+
+   case S390_INSN_MUL:
+      insn->variant.mul.dst_hi = lookupHRegRemap(m, insn->variant.mul.dst_hi);
+      insn->variant.mul.dst_lo = lookupHRegRemap(m, insn->variant.mul.dst_lo);
+      s390_opnd_RMI_map_regs(m, &insn->variant.mul.op2);
+      break;
+
+   case S390_INSN_DIV:
+      insn->variant.div.op1_hi = lookupHRegRemap(m, insn->variant.div.op1_hi);
+      insn->variant.div.op1_lo = lookupHRegRemap(m, insn->variant.div.op1_lo);
+      s390_opnd_RMI_map_regs(m, &insn->variant.div.op2);
+      break;
+
+   case S390_INSN_DIVS:
+      insn->variant.divs.op1 = lookupHRegRemap(m, insn->variant.divs.op1);
+      insn->variant.divs.rem = lookupHRegRemap(m, insn->variant.divs.rem);
+      s390_opnd_RMI_map_regs(m, &insn->variant.divs.op2);
+      break;
+
+   case S390_INSN_CLZ:
+      insn->variant.clz.num_bits = lookupHRegRemap(m, insn->variant.clz.num_bits);
+      insn->variant.clz.clobber  = lookupHRegRemap(m, insn->variant.clz.clobber);
+      s390_opnd_RMI_map_regs(m, &insn->variant.clz.src);
+      break;
+
+   case S390_INSN_UNOP:
+      insn->variant.unop.dst = lookupHRegRemap(m, insn->variant.unop.dst);
+      s390_opnd_RMI_map_regs(m, &insn->variant.unop.src);
+      break;
+
+   case S390_INSN_TEST:
+      s390_opnd_RMI_map_regs(m, &insn->variant.test.src);
+      break;
+
+   case S390_INSN_CC2BOOL:
+      insn->variant.cc2bool.dst = lookupHRegRemap(m, insn->variant.cc2bool.dst);
+      break;
+
+   case S390_INSN_CAS:
+      insn->variant.cas.op1 = lookupHRegRemap(m, insn->variant.cas.op1);
+      s390_amode_map_regs(m, insn->variant.cas.op2);
+      insn->variant.cas.op3 = lookupHRegRemap(m, insn->variant.cas.op3);
+      insn->variant.cas.old_mem = lookupHRegRemap(m, insn->variant.cas.old_mem);
+      break;
+
+   case S390_INSN_COMPARE:
+      insn->variant.compare.src1 = lookupHRegRemap(m, insn->variant.compare.src1);
+      s390_opnd_RMI_map_regs(m, &insn->variant.compare.src2);
+      break;
+
+   case S390_INSN_BRANCH:
+      s390_opnd_RMI_map_regs(m, &insn->variant.branch.dst);
+      /* No need to map S390_REGNO_RETURN_VALUE. It's not virtual */
+      break;
+
+   case S390_INSN_HELPER_CALL:
+      /* s390_insn_helper_call_emit also reads / writes the link register
+         and stack pointer. But those registers are not visible to the
+         register allocator. So we don't need to do anything for them.
+         As for the arguments of the helper call -- they will be loaded into
+         non-virtual registers. Again, we don't need to do anything for those
+         here. */
+      break;
+
+   case S390_INSN_BFP_TRIOP:
+      insn->variant.bfp_triop.dst = lookupHRegRemap(m, insn->variant.bfp_triop.dst);
+      insn->variant.bfp_triop.op2 = lookupHRegRemap(m, insn->variant.bfp_triop.op2);
+      insn->variant.bfp_triop.op3 = lookupHRegRemap(m, insn->variant.bfp_triop.op3);
+      break;
+
+   case S390_INSN_BFP_BINOP:
+      insn->variant.bfp_binop.dst = lookupHRegRemap(m, insn->variant.bfp_binop.dst);
+      insn->variant.bfp_binop.op2 = lookupHRegRemap(m, insn->variant.bfp_binop.op2);
+      break;
+
+   case S390_INSN_BFP_UNOP:
+      insn->variant.bfp_unop.dst = lookupHRegRemap(m, insn->variant.bfp_unop.dst);
+      insn->variant.bfp_unop.op  = lookupHRegRemap(m, insn->variant.bfp_unop.op);
+      break;
+
+   case S390_INSN_BFP_COMPARE:
+      insn->variant.bfp_compare.dst = lookupHRegRemap(m, insn->variant.bfp_compare.dst);
+      insn->variant.bfp_compare.op1 = lookupHRegRemap(m, insn->variant.bfp_compare.op1);
+      insn->variant.bfp_compare.op2 = lookupHRegRemap(m, insn->variant.bfp_compare.op2);
+      break;
+
+   case S390_INSN_BFP128_BINOP:
+      insn->variant.bfp128_binop.dst_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_binop.dst_hi);
+      insn->variant.bfp128_binop.dst_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_binop.dst_lo);
+      insn->variant.bfp128_binop.op2_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_binop.op2_hi);
+      insn->variant.bfp128_binop.op2_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_binop.op2_lo);
+      break;
+
+   case S390_INSN_BFP128_COMPARE:
+      insn->variant.bfp128_compare.dst =
+         lookupHRegRemap(m, insn->variant.bfp128_compare.dst);
+      insn->variant.bfp128_compare.op1_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_compare.op1_hi);
+      insn->variant.bfp128_compare.op1_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_compare.op1_lo);
+      insn->variant.bfp128_compare.op2_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_compare.op2_hi);
+      insn->variant.bfp128_compare.op2_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_compare.op2_lo);
+      break;
+
+   case S390_INSN_BFP128_UNOP:
+      insn->variant.bfp128_unop.dst_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
+      insn->variant.bfp128_unop.dst_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo);
+      insn->variant.bfp128_unop.op_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
+      insn->variant.bfp128_unop.op_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_TO:
+      insn->variant.bfp128_unop.dst_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
+      insn->variant.bfp128_unop.dst_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo);
+      insn->variant.bfp128_unop.op_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_FROM:
+      insn->variant.bfp128_unop.dst_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
+      insn->variant.bfp128_unop.op_hi =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
+      insn->variant.bfp128_unop.op_lo =
+         lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo);
+      break;
+
+   case S390_INSN_MFENCE:
+      break;
+
+   default:
+      vpanic("s390_insn_map_regs");
+   }
+}
+
+
+/* Return True, if INSN is a move between two registers of the same class.
+   In that case assign the source and destination registers to SRC and DST,
+   respectively. */
+Bool
+s390_insn_is_reg_reg_move(const s390_insn *insn, HReg *src, HReg *dst)
+{
+   if (insn->tag == S390_INSN_MOVE &&
+       hregClass(insn->variant.move.src) == hregClass(insn->variant.move.dst)) {
+      *src = insn->variant.move.src;
+      *dst = insn->variant.move.dst;
+      return True;
+   }
+
+   return False;
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Functions to emit a sequence of bytes                ---*/
+/*------------------------------------------------------------*/
+
+
+static __inline__ UChar *
+emit_2bytes(UChar *p, ULong val)
+{
+   return (UChar *)__builtin_memcpy(p, ((UChar *)&val) + 6, 2) + 2;
+}
+
+
+static __inline__ UChar *
+emit_4bytes(UChar *p, ULong val)
+{
+   return (UChar *)__builtin_memcpy(p, ((UChar *)&val) + 4, 4) + 4;
+}
+
+
+static __inline__ UChar *
+emit_6bytes(UChar *p, ULong val)
+{
+   return (UChar *)__builtin_memcpy(p, ((UChar *)&val) + 2, 6) + 6;
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Functions to emit various instruction formats        ---*/
+/*------------------------------------------------------------*/
+
+
+static UChar *
+emit_RI(UChar *p, UInt op, UChar r1, UShort i2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 20;
+   the_insn |= ((ULong)i2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RIL(UChar *p, ULong op, UChar r1, UInt i2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 36;
+   the_insn |= ((ULong)i2) << 0;
+
+   return emit_6bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RR(UChar *p, UInt op, UChar r1, UChar r2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 4;
+   the_insn |= ((ULong)r2) << 0;
+
+   return emit_2bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RRE(UChar *p, UInt op, UChar r1, UChar r2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 4;
+   the_insn |= ((ULong)r2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RRF(UChar *p, UInt op, UChar r1, UChar r3, UChar r2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 12;
+   the_insn |= ((ULong)r3) << 4;
+   the_insn |= ((ULong)r2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RRF3(UChar *p, UInt op, UChar r3, UChar r1, UChar r2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r3) << 12;
+   the_insn |= ((ULong)r1) << 4;
+   the_insn |= ((ULong)r2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RS(UChar *p, UInt op, UChar r1, UChar r3, UChar b2, UShort d2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 20;
+   the_insn |= ((ULong)r3) << 16;
+   the_insn |= ((ULong)b2) << 12;
+   the_insn |= ((ULong)d2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RSY(UChar *p, ULong op, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 36;
+   the_insn |= ((ULong)r3) << 32;
+   the_insn |= ((ULong)b2) << 28;
+   the_insn |= ((ULong)dl2) << 16;
+   the_insn |= ((ULong)dh2) << 8;
+
+   return emit_6bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RX(UChar *p, UInt op, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 20;
+   the_insn |= ((ULong)x2) << 16;
+   the_insn |= ((ULong)b2) << 12;
+   the_insn |= ((ULong)d2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_RXY(UChar *p, ULong op, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)r1) << 36;
+   the_insn |= ((ULong)x2) << 32;
+   the_insn |= ((ULong)b2) << 28;
+   the_insn |= ((ULong)dl2) << 16;
+   the_insn |= ((ULong)dh2) << 8;
+
+   return emit_6bytes(p, the_insn);
+}
+
+
+static UChar *
+emit_S(UChar *p, UInt op, UChar b2, UShort d2)
+{
+   ULong the_insn = op;
+
+   the_insn |= ((ULong)b2) << 12;
+   the_insn |= ((ULong)d2) << 0;
+
+   return emit_4bytes(p, the_insn);
+}
+
+
+/*------------------------------------------------------------*/
+/*--- Functions to emit particular instructions            ---*/
+/*------------------------------------------------------------*/
+
+
+static UChar *
+s390_emit_AR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "ar", r1, r2);
+
+   return emit_RR(p, 0x1a00, r1, r2);
+}
+
+
+static UChar *
+s390_emit_AGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "agr", r1, r2);
+
+   return emit_RRE(p, 0xb9080000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_A(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "a", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x5a000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_AY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ay", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000005aULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_AG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ag", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000008ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_AFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "afi", r1, i2);
+
+   return emit_RIL(p, 0xc20900000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_AGFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "agfi", r1, i2);
+
+   return emit_RIL(p, 0xc20800000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_AH(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "ah", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x4a000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_AHY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ahy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000007aULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_AHI(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "ahi", r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa70a0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_AGHI(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "aghi", r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa70b0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_NR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "nr", r1, r2);
+
+   return emit_RR(p, 0x1400, r1, r2);
+}
+
+
+static UChar *
+s390_emit_NGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "ngr", r1, r2);
+
+   return emit_RRE(p, 0xb9800000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_N(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "n", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x54000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_NY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ny", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000054ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_NG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ng", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000080ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_NIHF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "nihf", r1, i2);
+
+   return emit_RIL(p, 0xc00a00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_NILF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "nilf", r1, i2);
+
+   return emit_RIL(p, 0xc00b00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_NILL(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "nill", r1, i2);
+
+   return emit_RI(p, 0xa5070000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_BASR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "basr", r1, r2);
+
+   return emit_RR(p, 0x0d00, r1, r2);
+}
+
+
+static UChar *
+s390_emit_BCR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(XMNM, GPR), S390_XMNM_BCR, r1, r2);
+
+   return emit_RR(p, 0x0700, r1, r2);
+}
+
+
+static UChar *
+s390_emit_BRC(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(XMNM, PCREL), S390_XMNM_BRC, r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa7040000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_CR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "cr", r1, r2);
+
+   return emit_RR(p, 0x1900, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "cgr", r1, r2);
+
+   return emit_RRE(p, 0xb9200000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_C(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "c", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x59000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_CY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "cy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000059ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "cg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000020ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "cfi", r1, i2);
+
+   return emit_RIL(p, 0xc20d00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_CS(UChar *p, UChar r1, UChar r3, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, UDXB), "cs", r1, r3, d2, 0, b2);
+
+   return emit_RS(p, 0xba000000, r1, r3, b2, d2);
+}
+
+
+static UChar *
+s390_emit_CSY(UChar *p, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), "csy", r1, r3, dh2, dl2, 0, b2);
+
+   return emit_RSY(p, 0xeb0000000014ULL, r1, r3, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CSG(UChar *p, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), "csg", r1, r3, dh2, dl2, 0, b2);
+
+   return emit_RSY(p, 0xeb0000000030ULL, r1, r3, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CLR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "clr", r1, r2);
+
+   return emit_RR(p, 0x1500, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CLGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "clgr", r1, r2);
+
+   return emit_RRE(p, 0xb9210000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CL(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "cl", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x55000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_CLY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "cly", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000055ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CLG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "clg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000021ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_CLFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "clfi", r1, i2);
+
+   return emit_RIL(p, 0xc20f00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_DR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "dr", r1, r2);
+
+   return emit_RR(p, 0x1d00, r1, r2);
+}
+
+
+static UChar *
+s390_emit_D(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "d", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x5d000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_DLR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "dlr", r1, r2);
+
+   return emit_RRE(p, 0xb9970000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DLGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "dlgr", r1, r2);
+
+   return emit_RRE(p, 0xb9870000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DL(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "dl", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000097ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_DLG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "dlg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000087ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_DSGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "dsgr", r1, r2);
+
+   return emit_RRE(p, 0xb90d0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DSG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "dsg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000000dULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_XR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "xr", r1, r2);
+
+   return emit_RR(p, 0x1700, r1, r2);
+}
+
+
+static UChar *
+s390_emit_XGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "xgr", r1, r2);
+
+   return emit_RRE(p, 0xb9820000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_X(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "x", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x57000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_XY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "xy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000057ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_XG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "xg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000082ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_XIHF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "xihf", r1, i2);
+
+   return emit_RIL(p, 0xc00600000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_XILF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "xilf", r1, i2);
+
+   return emit_RIL(p, 0xc00700000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_FLOGR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "flogr", r1, r2);
+
+   return emit_RRE(p, 0xb9830000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_IC(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "ic", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x43000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_ICY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "icy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000073ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_IIHF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iihf", r1, i2);
+
+   return emit_RIL(p, 0xc00800000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IIHH(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iihh", r1, i2);
+
+   return emit_RI(p, 0xa5000000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IIHL(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iihl", r1, i2);
+
+   return emit_RI(p, 0xa5010000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IILF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iilf", r1, i2);
+
+   return emit_RIL(p, 0xc00900000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IILH(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iilh", r1, i2);
+
+   return emit_RI(p, 0xa5020000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IILL(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "iill", r1, i2);
+
+   return emit_RI(p, 0xa5030000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_IPM(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, GPR), "ipm", r1);
+
+   return emit_RRE(p, 0xb2220000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lr", r1, r2);
+
+   return emit_RR(p, 0x1800, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lgr", r1, r2);
+
+   return emit_RRE(p, 0xb9040000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LGFR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lgfr", r1, r2);
+
+   return emit_RRE(p, 0xb9140000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_L(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "l", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x58000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_LY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ly", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000058ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000004ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LGF(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lgf", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000014ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LGFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "lgfi", r1, i2);
+
+   return emit_RIL(p, 0xc00100000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LTR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "ltr", r1, r2);
+
+   return emit_RR(p, 0x1200, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LTGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "ltgr", r1, r2);
+
+   return emit_RRE(p, 0xb9020000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LT(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lt", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000012ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LTG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ltg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000002ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LBR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lbr", r1, r2);
+
+   return emit_RRE(p, 0xb9260000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LGBR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lgbr", r1, r2);
+
+   return emit_RRE(p, 0xb9060000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LB(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lb", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000076ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LGB(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lgb", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000077ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LCR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lcr", r1, r2);
+
+   return emit_RR(p, 0x1300, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LCGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lcgr", r1, r2);
+
+   return emit_RRE(p, 0xb9030000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LHR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lhr", r1, r2);
+
+   return emit_RRE(p, 0xb9270000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LGHR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "lghr", r1, r2);
+
+   return emit_RRE(p, 0xb9070000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LH(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "lh", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x48000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_LHY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lhy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000078ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LGH(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "lgh", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000015ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LHI(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "lhi", r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa7080000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LGHI(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "lghi", r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa7090000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LLGFR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "llgfr", r1, r2);
+
+   return emit_RRE(p, 0xb9160000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LLGF(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "llgf", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000016ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LLCR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "llcr", r1, r2);
+
+   return emit_RRE(p, 0xb9940000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LLGCR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "llgcr", r1, r2);
+
+   return emit_RRE(p, 0xb9840000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LLC(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "llc", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000094ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LLGC(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "llgc", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000090ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LLHR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "llhr", r1, r2);
+
+   return emit_RRE(p, 0xb9950000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LLGHR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "llghr", r1, r2);
+
+   return emit_RRE(p, 0xb9850000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LLH(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "llh", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000095ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LLGH(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "llgh", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000091ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LLILF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "llilf", r1, i2);
+
+   return emit_RIL(p, 0xc00f00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LLILH(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "llilh", r1, i2);
+
+   return emit_RI(p, 0xa50e0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LLILL(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "llill", r1, i2);
+
+   return emit_RI(p, 0xa50f0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_MR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "mr", r1, r2);
+
+   return emit_RR(p, 0x1c00, r1, r2);
+}
+
+
+static UChar *
+s390_emit_M(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "m", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x5c000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_MFY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_gie);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "mfy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000005cULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MH(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "mh", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x4c000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_MHY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_gie);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "mhy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000007cULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MHI(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "mhi", r1, (Int)(Short)i2);
+
+   return emit_RI(p, 0xa70c0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_MLR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "mlr", r1, r2);
+
+   return emit_RRE(p, 0xb9960000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MLGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "mlgr", r1, r2);
+
+   return emit_RRE(p, 0xb9860000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_ML(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "ml", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000096ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MLG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "mlg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000086ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MSR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "msr", r1, r2);
+
+   return emit_RRE(p, 0xb2520000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MSGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "msgr", r1, r2);
+
+   return emit_RRE(p, 0xb90c0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MS(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "ms", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x71000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_MSY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "msy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000051ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MSG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "msg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000000cULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_MSFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_gie);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "msfi", r1, i2);
+
+   return emit_RIL(p, 0xc20100000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_MSGFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_gie);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, INT), "msgfi", r1, i2);
+
+   return emit_RIL(p, 0xc20000000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_OR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "or", r1, r2);
+
+   return emit_RR(p, 0x1600, r1, r2);
+}
+
+
+static UChar *
+s390_emit_OGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "ogr", r1, r2);
+
+   return emit_RRE(p, 0xb9810000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_O(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "o", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x56000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_OY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "oy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000056ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_OG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "og", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000081ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_OIHF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "oihf", r1, i2);
+
+   return emit_RIL(p, 0xc00c00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_OILF(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "oilf", r1, i2);
+
+   return emit_RIL(p, 0xc00d00000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_OILL(UChar *p, UChar r1, UShort i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "oill", r1, i2);
+
+   return emit_RI(p, 0xa50b0000, r1, i2);
+}
+
+
+static UChar *
+s390_emit_SLL(UChar *p, UChar r1, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "sll", r1, d2, 0, b2);
+
+   return emit_RS(p, 0x89000000, r1, 0, b2, d2);
+}
+
+
+static UChar *
+s390_emit_SLLG(UChar *p, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), "sllg", r1, r3, dh2, dl2, 0, b2);
+
+   return emit_RSY(p, 0xeb000000000dULL, r1, r3, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SRA(UChar *p, UChar r1, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "sra", r1, d2, 0, b2);
+
+   return emit_RS(p, 0x8a000000, r1, 0, b2, d2);
+}
+
+
+static UChar *
+s390_emit_SRAG(UChar *p, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), "srag", r1, r3, dh2, dl2, 0, b2);
+
+   return emit_RSY(p, 0xeb000000000aULL, r1, r3, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SRL(UChar *p, UChar r1, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "srl", r1, d2, 0, b2);
+
+   return emit_RS(p, 0x88000000, r1, 0, b2, d2);
+}
+
+
+static UChar *
+s390_emit_SRLG(UChar *p, UChar r1, UChar r3, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, GPR, SDXB), "srlg", r1, r3, dh2, dl2, 0, b2);
+
+   return emit_RSY(p, 0xeb000000000cULL, r1, r3, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_ST(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "st", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x50000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_STY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "sty", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000050ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_STG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "stg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000024ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_STC(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "stc", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x42000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_STCY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "stcy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000072ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_STH(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "sth", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x40000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_STHY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "sthy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000070ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "sr", r1, r2);
+
+   return emit_RR(p, 0x1b00, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SGR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, GPR), "sgr", r1, r2);
+
+   return emit_RRE(p, 0xb9090000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_S(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "s", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x5b000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_SY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "sy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000005bULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SG(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "sg", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe30000000009ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SH(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UDXB), "sh", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x4b000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_SHY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, SDXB), "shy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xe3000000007bULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_SLFI(UChar *p, UChar r1, UInt i2)
+{
+   vassert(s390_host_has_eimm);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "slfi", r1, i2);
+
+   return emit_RIL(p, 0xc20500000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_SLGFI(UChar *p, UChar r1, UInt i2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, UINT), "slgfi", r1, i2);
+
+   return emit_RIL(p, 0xc20400000000ULL, r1, i2);
+}
+
+
+static UChar *
+s390_emit_LDR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "ldr", r1, r2);
+
+   return emit_RR(p, 0x2800, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LE(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, UDXB), "le", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x78000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_LD(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, UDXB), "ld", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x68000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_LEY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, SDXB), "ley", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xed0000000064ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LDY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, SDXB), "ldy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xed0000000065ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_LFPC(UChar *p, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, UDXB), "lfpc", d2, 0, b2);
+
+   return emit_S(p, 0xb29d0000, b2, d2);
+}
+
+
+static UChar *
+s390_emit_LDGR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_fgx);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "ldgr", r1, r2);
+
+   return emit_RRE(p, 0xb3c10000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LGDR(UChar *p, UChar r1, UChar r2)
+{
+   vassert(s390_host_has_fgx);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, GPR, FPR), "lgdr", r1, r2);
+
+   return emit_RRE(p, 0xb3cd0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LZER(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, FPR), "lzer", r1);
+
+   return emit_RRE(p, 0xb3740000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LZDR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, FPR), "lzdr", r1);
+
+   return emit_RRE(p, 0xb3750000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SFPC(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, GPR), "sfpc", r1);
+
+   return emit_RRE(p, 0xb3840000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_STE(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, UDXB), "ste", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x70000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_STD(UChar *p, UChar r1, UChar x2, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, UDXB), "std", r1, d2, x2, b2);
+
+   return emit_RX(p, 0x60000000, r1, x2, b2, d2);
+}
+
+
+static UChar *
+s390_emit_STEY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, SDXB), "stey", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xed0000000066ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_STDY(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp);
+
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, SDXB), "stdy", r1, dh2, dl2, x2, b2);
+
+   return emit_RXY(p, 0xed0000000067ULL, r1, x2, b2, dl2, dh2);
+}
+
+
+static UChar *
+s390_emit_STFPC(UChar *p, UChar b2, UShort d2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC2(MNM, UDXB), "stfpc", d2, 0, b2);
+
+   return emit_S(p, 0xb29c0000, b2, d2);
+}
+
+
+static UChar *
+s390_emit_AEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "aebr", r1, r2);
+
+   return emit_RRE(p, 0xb30a0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_ADBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "adbr", r1, r2);
+
+   return emit_RRE(p, 0xb31a0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_AXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "axbr", r1, r2);
+
+   return emit_RRE(p, 0xb34a0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "cebr", r1, r2);
+
+   return emit_RRE(p, 0xb3090000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "cdbr", r1, r2);
+
+   return emit_RRE(p, 0xb3190000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "cxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3490000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CEFBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cefbr", r1, r2);
+
+   return emit_RRE(p, 0xb3940000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CDFBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cdfbr", r1, r2);
+
+   return emit_RRE(p, 0xb3950000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CXFBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cxfbr", r1, r2);
+
+   return emit_RRE(p, 0xb3960000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CEGBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cegbr", r1, r2);
+
+   return emit_RRE(p, 0xb3a40000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CDGBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cdgbr", r1, r2);
+
+   return emit_RRE(p, 0xb3a50000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CXGBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, GPR), "cxgbr", r1, r2);
+
+   return emit_RRE(p, 0xb3a60000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CFEBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cfebr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb3980000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CFDBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cfdbr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb3990000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CFXBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cfxbr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb39a0000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CGEBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cgebr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb3a80000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CGDBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cgdbr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb3a90000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_CGXBR(UChar *p, UChar r3, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, GPR, UINT, FPR), "cgxbr", r1, r3, r2);
+
+   return emit_RRF3(p, 0xb3aa0000, r3, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "debr", r1, r2);
+
+   return emit_RRE(p, 0xb30d0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "ddbr", r1, r2);
+
+   return emit_RRE(p, 0xb31d0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_DXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "dxbr", r1, r2);
+
+   return emit_RRE(p, 0xb34d0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LCEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lcebr", r1, r2);
+
+   return emit_RRE(p, 0xb3030000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LCDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lcdbr", r1, r2);
+
+   return emit_RRE(p, 0xb3130000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LCXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lcxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3430000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LDEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "ldebr", r1, r2);
+
+   return emit_RRE(p, 0xb3040000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LXDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lxdbr", r1, r2);
+
+   return emit_RRE(p, 0xb3050000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LXEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lxebr", r1, r2);
+
+   return emit_RRE(p, 0xb3060000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LNEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lnebr", r1, r2);
+
+   return emit_RRE(p, 0xb3010000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LNDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lndbr", r1, r2);
+
+   return emit_RRE(p, 0xb3110000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LNXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lnxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3410000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LPEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lpebr", r1, r2);
+
+   return emit_RRE(p, 0xb3000000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LPDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lpdbr", r1, r2);
+
+   return emit_RRE(p, 0xb3100000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LPXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lpxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3400000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LEDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "ledbr", r1, r2);
+
+   return emit_RRE(p, 0xb3440000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LDXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "ldxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3450000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_LEXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "lexbr", r1, r2);
+
+   return emit_RRE(p, 0xb3460000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MEEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "meebr", r1, r2);
+
+   return emit_RRE(p, 0xb3170000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "mdbr", r1, r2);
+
+   return emit_RRE(p, 0xb31c0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "mxbr", r1, r2);
+
+   return emit_RRE(p, 0xb34c0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_MAEBR(UChar *p, UChar r1, UChar r3, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), "maebr", r1, r3, r2);
+
+   return emit_RRF(p, 0xb30e0000, r1, r3, r2);
+}
+
+
+static UChar *
+s390_emit_MADBR(UChar *p, UChar r1, UChar r3, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), "madbr", r1, r3, r2);
+
+   return emit_RRF(p, 0xb31e0000, r1, r3, r2);
+}
+
+
+static UChar *
+s390_emit_MSEBR(UChar *p, UChar r1, UChar r3, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), "msebr", r1, r3, r2);
+
+   return emit_RRF(p, 0xb30f0000, r1, r3, r2);
+}
+
+
+static UChar *
+s390_emit_MSDBR(UChar *p, UChar r1, UChar r3, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC4(MNM, FPR, FPR, FPR), "msdbr", r1, r3, r2);
+
+   return emit_RRF(p, 0xb31f0000, r1, r3, r2);
+}
+
+
+static UChar *
+s390_emit_SQEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sqebr", r1, r2);
+
+   return emit_RRE(p, 0xb3140000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SQDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sqdbr", r1, r2);
+
+   return emit_RRE(p, 0xb3150000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SQXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sqxbr", r1, r2);
+
+   return emit_RRE(p, 0xb3160000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SEBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sebr", r1, r2);
+
+   return emit_RRE(p, 0xb30b0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SDBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sdbr", r1, r2);
+
+   return emit_RRE(p, 0xb31b0000, r1, r2);
+}
+
+
+static UChar *
+s390_emit_SXBR(UChar *p, UChar r1, UChar r2)
+{
+   if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+      s390_disasm(ENC3(MNM, FPR, FPR), "sxbr", r1, r2);
+
+   return emit_RRE(p, 0xb34b0000, r1, r2);
+}
+
+
+/* Provide a symbolic name for register "R0" */
+#define R0 0
+
+/* Split up a 20-bit displacement into its high and low piece
+   suitable for passing as function arguments */
+#define DISP20(d) (((UInt)d) & 0xFFF), ((((UInt)d) >> 12) & 0xFF)
+
+/*---------------------------------------------------------------*/
+/*--- Helper functions                                        ---*/
+/*---------------------------------------------------------------*/
+
+static __inline__ Bool
+uint_fits_signed_16bit(UInt val)
+{
+   int v = val & 0xFFFFu;
+
+   /* sign extend */
+   v = (v << 16) >> 16;
+
+   return val == (UInt)v;
+}
+
+
+static __inline__ Bool
+ulong_fits_signed_16bit(ULong val)
+{
+   Long v = val & 0xFFFFu;
+
+   /* sign extend */
+   v = (v << 48) >> 48;
+
+   return val == (ULong)v;
+}
+
+
+static __inline__ Bool
+ulong_fits_signed_32bit(ULong val)
+{
+   Long v = val & 0xFFFFFFFFu;
+
+   /* sign extend */
+   v = (v << 32) >> 32;
+
+   return val == (ULong)v;
+}
+
+
+static __inline__ Bool
+ulong_fits_unsigned_32bit(ULong val)
+{
+   return (val & 0xFFFFFFFFu) == val;
+}
+
+
+/* Load a 64-bit immediate VAL into register REG. */
+static UChar *
+s390_emit_load_64imm(UChar *p, UChar reg, ULong val)
+{
+   if (ulong_fits_signed_16bit(val)) {
+      return s390_emit_LGHI(p, reg, val);
+   }
+
+   if (s390_host_has_eimm) {
+      if (ulong_fits_unsigned_32bit(val)) {
+         return s390_emit_LLILF(p, reg, val);
+      }
+      if (ulong_fits_signed_32bit(val)) {
+         /* LGFI's sign extension will recreate the correct 64-bit value */
+         return s390_emit_LGFI(p, reg, val);
+      }
+      /* Do it in two steps: upper half [0:31] and lower half [32:63] */
+      p =  s390_emit_IIHF(p, reg, val >> 32);
+      return s390_emit_IILF(p, reg, val & 0xFFFFFFFF);
+   }
+
+   /* Fall back */
+   if (ulong_fits_unsigned_32bit(val)) {
+      p = s390_emit_LLILH(p, reg, (val >> 16) & 0xFFFF); /* sets val[32:47]
+                                                            val[0:31] = 0 */
+      p = s390_emit_IILL(p, reg, val & 0xFFFF);          /* sets val[48:63] */
+      return p;
+   }
+
+   p = s390_emit_IIHH(p, reg, (val >> 48) & 0xFFFF);
+   p = s390_emit_IIHL(p, reg, (val >> 32) & 0xFFFF);
+   p = s390_emit_IILH(p, reg, (val >> 16) & 0xFFFF);
+   p = s390_emit_IILL(p, reg, val & 0xFFFF);
+
+   return p;
+}
+
+/* Load a 32-bit immediate VAL into register REG. */
+static UChar *
+s390_emit_load_32imm(UChar *p, UChar reg, UInt val)
+{
+   if (uint_fits_signed_16bit(val)) {
+      /* LHI's sign extension will recreate the correct 32-bit value */
+      return s390_emit_LHI(p, reg, val);
+   }
+   if (s390_host_has_eimm) {
+      return s390_emit_IILF(p, reg, val);
+   }
+   /* val[0:15]  --> (val >> 16) & 0xFFFF
+      val[16:31] --> val & 0xFFFF */
+   p = s390_emit_IILH(p, reg, (val >> 16) & 0xFFFF);
+   return s390_emit_IILL(p, reg, val & 0xFFFF);
+}
+
+/*------------------------------------------------------------*/
+/*--- Wrapper functions                                    ---*/
+/*------------------------------------------------------------*/
+
+/* r1[32:63],r1+1[32:63] = r1+1[32:63] * memory[op2addr][0:31] */
+static UChar *
+s390_emit_MFYw(UChar *p, UChar r1, UChar x, UChar b,  UShort dl, UChar dh)
+{
+   if (s390_host_has_gie) {
+      return s390_emit_MFY(p, r1, x, b, dl, dh);
+   }
+
+   /* Load from memory into R0, then MULTIPLY with R1 */
+   p = s390_emit_LY(p, R0, x, b, dl, dh);
+   return s390_emit_MR(p, r1, R0);
+}
+
+/* r1[32:63] = r1[32:63] * memory[op2addr][0:15] */
+static UChar *
+s390_emit_MHYw(UChar *p, UChar r1, UChar x, UChar b,  UShort dl, UChar dh)
+{
+   if (s390_host_has_gie) {
+      return s390_emit_MHY(p, r1, x, b, dl, dh);
+   }
+
+   /* Load from memory into R0, then MULTIPLY with R1 */
+   p = s390_emit_LHY(p, R0, x, b, dl, dh);
+   return s390_emit_MSR(p, r1, R0);
+}
+
+/* r1[32:63] = r1[32:63] * i2 */
+static UChar *
+s390_emit_MSFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_gie) {
+      return s390_emit_MSFI(p, r1, i2);
+   }
+
+   /* Load I2 into R0; then MULTIPLY R0 with R1 */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_MSR(p, r1, R0);
+}
+
+
+/* r1[32:63] = r1[32:63] & i2 */
+static UChar *
+s390_emit_NILFw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_NILF(p, r1, i2);
+   }
+
+   /* Load I2 into R0; then AND R0 with R1 */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_NR(p, r1, R0);
+}
+
+
+/* r1[32:63] = r1[32:63] | i2 */
+static UChar *
+s390_emit_OILFw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_OILF(p, r1, i2);
+   }
+
+   /* Load I2 into R0; then AND R0 with R1 */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_OR(p, r1, R0);
+}
+
+
+/* r1[32:63] = r1[32:63] ^ i2 */
+static UChar *
+s390_emit_XILFw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_XILF(p, r1, i2);
+   }
+
+   /* Load I2 into R0; then AND R0 with R1 */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_XR(p, r1, R0);
+}
+
+
+/* r1[32:63] = sign_extend(mem[op2addr][0:7]) */
+static UChar *
+s390_emit_LBw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (s390_host_has_ldisp) {
+      return s390_emit_LB(p, r1, x2, b2, dl2, dh2);
+   }
+
+   p = s390_emit_IC(p, r1, x2, b2, dl2);    /* r1[56:63] = mem[op2addr][0:7] */
+   p = s390_emit_SLL(p, r1, R0, 24);        /* r1 = r1 << 24  */
+   return s390_emit_SRA(p, r1, R0, 24);     /* r1 = r1 >>a 24 */
+}
+
+
+/*  r1[32:63] = sign_extend(r2[56:63]) */
+static UChar *
+s390_emit_LBRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LBR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);               /* r1 = r2 */
+   p = s390_emit_SLL(p, r1, R0, 24);          /* r1 = r1 << 24  */
+   return s390_emit_SRA(p, r1, R0, 24);       /* r1 = r1 >>a 24 */
+}
+
+
+/* r1[0:63] = sign_extend(mem[op2addr][0:7]) */
+static UChar *
+s390_emit_LGBw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl2, UChar dh2)
+{
+   vassert(s390_host_has_ldisp || dh2 == 0);
+
+   if (s390_host_has_ldisp) {
+      return s390_emit_LGB(p, r1, x2, b2, dl2, dh2);
+   }
+
+   p = s390_emit_IC(p, r1, x2, b2, dl2);             /* r1[56:63] = mem[op2addr][0:7] */
+   p = s390_emit_SLLG(p, r1, r1, R0, DISP20(56));    /* r1 = r1 << 56  */
+   return s390_emit_SRAG(p, r1, r1, R0, DISP20(56)); /* r1 = r1 >>a 56 */
+}
+
+
+/*  r1[0:63] = sign_extend(r2[56:63]) */
+static UChar *
+s390_emit_LGBRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LGBR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);                       /* r1 = r2 */
+   p = s390_emit_SLLG(p, r1, r1, R0, DISP20(56));     /* r1 = r1 << 56  */
+   return s390_emit_SRAG(p, r1, r1, R0, DISP20(56));  /* r1 = r1 >>a 56 */
+}
+
+
+/* r1[32:63] = sign_extend(r2[48:63]) */
+static UChar *
+s390_emit_LHRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LHR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);               /* r1 = r2 */
+   p = s390_emit_SLL(p, r1, R0, 16);          /* r1 = r1 << 16  */
+   return s390_emit_SRA(p, r1, R0, 16);       /* r1 = r1 >>a 16 */
+}
+
+
+/* r1[0:63] = sign_extend(r2[48:63]) */
+static UChar *
+s390_emit_LGHRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LGHR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);               /* r1 = r2 */
+   p = s390_emit_SLLG(p, r1, r1, R0, DISP20(48));     /* r1 = r1 << 48  */
+   return s390_emit_SRAG(p, r1, r1, R0, DISP20(48));  /* r1 = r1 >>a 48 */
+}
+
+
+/* r1[0:63] = sign_extend(i2) */
+static UChar *
+s390_emit_LGFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LGFI(p, r1, i2);
+   }
+
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_LGFR(p, r1, R0);
+}
+
+
+/* r1[32:63] = zero_extend($r2[56:63]) */
+static UChar *
+s390_emit_LLCRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLCR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);
+   p = s390_emit_LHI(p, R0, 0xFF);
+   return s390_emit_NR(p, r1, R0);
+}
+
+
+/* r1[0:63] = zero_extend($r2[56:63]) */
+static UChar *
+s390_emit_LLGCRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLGCR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);
+   p = s390_emit_LLILL(p, R0, 0xFF);
+   return s390_emit_NGR(p, r1, R0);
+}
+
+
+/* r1[32:63] = zero_extend(r2[48:63]) */
+static UChar *
+s390_emit_LLHRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLHR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);
+   p = s390_emit_LLILL(p, R0, 0xFFFF);
+   return s390_emit_NR(p, r1, R0);
+}
+
+
+/* r1[0:63] = zero_extend(r2[48:63]) */
+static UChar *
+s390_emit_LLGHRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLGHR(p, r1, r2);
+   }
+
+   p = s390_emit_LR(p, r1, r2);
+   p = s390_emit_LLILL(p, R0, 0xFFFF);
+   return s390_emit_NGR(p, r1, R0);
+}
+
+
+/* r1[32:63] = zero_extend(mem[op2addr][0:7]) */
+static UChar *
+s390_emit_LLCw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl, UChar dh)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLC(p, r1, x2, b2, dl, dh);
+   }
+
+   if (dh == 0) {
+      p = s390_emit_IC(p, r1, x2, b2, dl);
+   } else {
+      p = s390_emit_ICY(p, r1, x2, b2, dl, dh);
+   }
+   p = s390_emit_LLILL(p, R0, 0xFF);
+   return s390_emit_NR(p, r1, R0);
+}
+
+
+/* r1[32:63] = zero_extend(mem[op2addr][0:15]) */
+static UChar *
+s390_emit_LLHw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl, UChar dh)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLH(p, r1, x2, b2, dl, dh);
+   }
+
+   p = s390_emit_LLGH(p, r1, x2, b2, dl, dh);
+   p = s390_emit_LLILL(p, R0, 0xFFFF);
+   return s390_emit_NR(p, r1, R0);
+}
+
+
+/* r1[0:63] = zero_extend(i2) */
+static UChar *
+s390_emit_LLILFw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LLILF(p, r1, i2);
+   }
+
+   p = s390_emit_LLILH(p, r1, (i2 >> 16) & 0xFFFF);  /* i2[0:15] */
+   return s390_emit_OILL(p, r1, i2 & 0xFFFF);
+}
+
+
+/* r1[32:63] = r1[32:63] + i2 */
+static UChar *
+s390_emit_AFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_AFI(p, r1, i2);
+   }
+   /* Load 32 bit immediate to R0 then add */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_AR(p, r1, R0);
+}
+
+
+/* r1[32:63] = r1[32:63] - i2 */
+static UChar *
+s390_emit_SLFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_SLFI(p, r1, i2);
+   }
+
+   /* Load 32 bit immediate to R0 then subtract */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_SR(p, r1, R0);
+}
+
+
+/* r1[0:63] = r1[0:63] - zero_extend(i2) */
+static UChar *
+s390_emit_SLGFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_SLGFI(p, r1, i2);
+   }
+
+   /* Load zero-extended 32 bit immediate to R0 then subtract */
+   p = s390_emit_load_64imm(p, R0, i2);
+   return s390_emit_SGR(p, r1, R0);
+}
+
+
+static UChar *
+s390_emit_LTw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl, UChar dh)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LT(p, r1, x2, b2, dl, dh);
+   }
+   /* Load 32 bit from memory to R0 then compare */
+   if (dh == 0) {
+      p = s390_emit_L(p, R0, x2, b2, dl);
+   } else {
+      p = s390_emit_LY(p, R0, x2, b2, dl, dh);
+   }
+   return s390_emit_LTR(p, r1, R0);
+}
+
+
+static UChar *
+s390_emit_LTGw(UChar *p, UChar r1, UChar x2, UChar b2, UShort dl, UChar dh)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_LTG(p, r1, x2, b2, dl, dh);
+   }
+   /* Load 64 bit from memory to R0 then compare */
+   p = s390_emit_LG(p, R0, x2, b2, dl, dh);
+   return s390_emit_LTGR(p, r1, R0);
+}
+
+
+static UChar *
+s390_emit_CFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_CFI(p, r1, i2);
+   }
+   /* Load 32 bit immediate to R0 then compare */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_CR(p, r1, R0);
+}
+
+
+static UChar *
+s390_emit_CLFIw(UChar *p, UChar r1, UInt i2)
+{
+   if (s390_host_has_eimm) {
+      return s390_emit_CLFI(p, r1, i2);
+   }
+   /* Load 32 bit immediate to R0 then compare */
+   p = s390_emit_load_32imm(p, R0, i2);
+   return s390_emit_CLR(p, r1, R0);
+}
+
+
+static UChar *
+s390_emit_LGDRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_fgx) {
+      return s390_emit_LGDR(p, r1, r2);
+   }
+
+   /* Store the FPR at memory[sp - 8]. This is safe because SP grows towards
+      smaller addresses and is 8-byte aligned. Then load the GPR from that
+      memory location/ */
+   if (s390_host_has_ldisp) {
+      p = s390_emit_STDY(p, r2, R0, S390_REGNO_STACK_POINTER, DISP20(-8));
+      return s390_emit_LG(p, r1, R0, S390_REGNO_STACK_POINTER, DISP20(-8));
+   }
+
+   /* No long displacement. Need to adjust SP explicitly as to avoid negative
+      displacements. */
+   p = s390_emit_AGHI(p, S390_REGNO_STACK_POINTER, -8);
+   p = s390_emit_STD(p, r2, R0, S390_REGNO_STACK_POINTER, 0);
+   p = s390_emit_LG(p, r1, R0, S390_REGNO_STACK_POINTER, DISP20(0));
+   return s390_emit_AGHI(p, S390_REGNO_STACK_POINTER, 8);
+}
+
+
+static UChar *
+s390_emit_LDGRw(UChar *p, UChar r1, UChar r2)
+{
+   if (s390_host_has_fgx) {
+      return s390_emit_LDGR(p, r1, r2);
+   }
+
+   /* Store the GPR at memory[sp - 8]. This is safe because SP grows towards
+      smaller addresses and is 8-byte aligned. Then load the FPR from that
+      memory location/ */
+   if (s390_host_has_ldisp) {
+      p = s390_emit_STG(p, r2, R0, S390_REGNO_STACK_POINTER, DISP20(-8));
+      return s390_emit_LDY(p, r1, R0, S390_REGNO_STACK_POINTER, DISP20(-8));
+   }
+
+   /* No long displacement. Need to adjust SP explicitly as to avoid negative
+      displacements. */
+   p = s390_emit_AGHI(p, S390_REGNO_STACK_POINTER, -8);
+   p = s390_emit_STG(p, r2, R0, S390_REGNO_STACK_POINTER, DISP20(0));
+   p = s390_emit_LD(p, r1, R0, S390_REGNO_STACK_POINTER, 0);
+   return s390_emit_AGHI(p, S390_REGNO_STACK_POINTER, 8);
+}
+
+
+/*---------------------------------------------------------------*/
+/*--- Constructors for the various s390_insn kinds            ---*/
+/*---------------------------------------------------------------*/
+
+s390_insn *
+s390_insn_load(UChar size, HReg dst, s390_amode *src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_LOAD;
+   insn->size = size;
+   insn->variant.load.src  = src;
+   insn->variant.load.dst  = dst;
+
+   vassert(size == 1 || size == 2 || size == 4 || size == 8);
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_store(UChar size, s390_amode *dst, HReg src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_STORE;
+   insn->size = size;
+   insn->variant.store.src  = src;
+   insn->variant.store.dst  = dst;
+
+   vassert(size == 1 || size == 2 || size == 4 || size == 8);
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_move(UChar size, HReg dst, HReg src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_MOVE;
+   insn->size = size;
+   insn->variant.move.src  = src;
+   insn->variant.move.dst  = dst;
+
+   vassert(size == 1 || size == 2 || size == 4 || size == 8);
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_cond_move(UChar size, s390_cc_t cond, HReg dst, s390_opnd_RMI src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_COND_MOVE;
+   insn->size = size;
+   insn->variant.cond_move.cond = cond;
+   insn->variant.cond_move.src  = src;
+   insn->variant.cond_move.dst  = dst;
+
+   vassert(size == 1 || size == 2 || size == 4 || size == 8);
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_load_immediate(UChar size, HReg dst, ULong value)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_LOAD_IMMEDIATE;
+   insn->size = size;
+   insn->variant.load_immediate.dst   = dst;
+   insn->variant.load_immediate.value = value;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_alu(UChar size, s390_alu_t tag, HReg dst, s390_opnd_RMI op2)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_ALU;
+   insn->size = size;
+   insn->variant.alu.tag = tag;
+   insn->variant.alu.dst = dst;
+   insn->variant.alu.op2 = op2;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_mul(UChar size, HReg dst_hi, HReg dst_lo, s390_opnd_RMI op2,
+              Bool signed_multiply)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(! hregIsVirtual(dst_hi));
+   vassert(! hregIsVirtual(dst_lo));
+
+   insn->tag  = S390_INSN_MUL;
+   insn->size = size;
+   insn->variant.mul.dst_hi = dst_hi;
+   insn->variant.mul.dst_lo = dst_lo;
+   insn->variant.mul.op2 = op2;
+   insn->variant.mul.signed_multiply = signed_multiply;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_div(UChar size, HReg op1_hi, HReg op1_lo, s390_opnd_RMI op2,
+              Bool signed_divide)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 4 || size == 8);
+   vassert(! hregIsVirtual(op1_hi));
+   vassert(! hregIsVirtual(op1_lo));
+
+   insn->tag  = S390_INSN_DIV;
+   insn->size = size;
+   insn->variant.div.op1_hi = op1_hi;
+   insn->variant.div.op1_lo = op1_lo;
+   insn->variant.div.op2 = op2;
+   insn->variant.div.signed_divide = signed_divide;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_divs(UChar size, HReg rem, HReg op1, s390_opnd_RMI op2)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 8);
+   vassert(! hregIsVirtual(op1));
+   vassert(! hregIsVirtual(rem));
+
+   insn->tag  = S390_INSN_DIVS;
+   insn->size = size;
+   insn->variant.divs.rem = rem;   /* remainder */
+   insn->variant.divs.op1 = op1;   /* also quotient */
+   insn->variant.divs.op2 = op2;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_clz(UChar size, HReg num_bits, HReg clobber, s390_opnd_RMI src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 8);
+   vassert(! hregIsVirtual(num_bits));
+   vassert(! hregIsVirtual(clobber));
+
+   insn->tag  = S390_INSN_CLZ;
+   insn->size = size;
+   insn->variant.clz.num_bits = num_bits;
+   insn->variant.clz.clobber  = clobber;
+   insn->variant.clz.src = src;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_unop(UChar size, s390_unop_t tag, HReg dst, s390_opnd_RMI opnd)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_UNOP;
+   insn->size = size;
+   insn->variant.unop.tag = tag;
+   insn->variant.unop.dst = dst;
+   insn->variant.unop.src = opnd;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_test(UChar size, s390_opnd_RMI src)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 4 || size == 8);
+
+   insn->tag  = S390_INSN_TEST;
+   insn->size = size;
+   insn->variant.test.src = src;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_cc2bool(HReg dst, s390_cc_t cond)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_CC2BOOL;
+   insn->size = 0;   /* does not matter */
+   insn->variant.cc2bool.cond = cond;
+   insn->variant.cc2bool.dst  = dst;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_cas(UChar size, HReg op1, s390_amode *op2, HReg op3, HReg old_mem)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 4 || size == 8);
+   vassert(op2->x == 0);
+
+   insn->tag  = S390_INSN_CAS;
+   insn->size = size;
+   insn->variant.cas.op1 = op1;
+   insn->variant.cas.op2 = op2;
+   insn->variant.cas.op3 = op3;
+   insn->variant.cas.old_mem = old_mem;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_compare(UChar size, HReg src1, s390_opnd_RMI src2,
+                  Bool signed_comparison)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 4 || size == 8);
+
+   insn->tag  = S390_INSN_COMPARE;
+   insn->size = size;
+   insn->variant.compare.src1 = src1;
+   insn->variant.compare.src2 = src2;
+   insn->variant.compare.signed_comparison = signed_comparison;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_branch(IRJumpKind kind, s390_cc_t cond, s390_opnd_RMI dst)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BRANCH;
+   insn->size = 0;  /* does not matter */
+   insn->variant.branch.kind = kind;
+   insn->variant.branch.dst  = dst;
+   insn->variant.branch.cond = cond;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_helper_call(s390_cc_t cond, Addr64 target, UInt num_args,
+                      HChar *name)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_HELPER_CALL;
+   insn->size = 0;  /* does not matter */
+   insn->variant.helper_call.cond = cond;
+   insn->variant.helper_call.target = target;
+   insn->variant.helper_call.num_args = num_args;
+   insn->variant.helper_call.name = name;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp_triop(UChar size, s390_bfp_triop_t tag, HReg dst, HReg op2,
+                    HReg op3, s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP_TRIOP;
+   insn->size = size;
+   insn->variant.bfp_triop.tag = tag;
+   insn->variant.bfp_triop.dst = dst;
+   insn->variant.bfp_triop.op2 = op2;
+   insn->variant.bfp_triop.op3 = op3;
+   insn->variant.bfp_triop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp_binop(UChar size, s390_bfp_binop_t tag, HReg dst, HReg op2,
+                    s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP_BINOP;
+   insn->size = size;
+   insn->variant.bfp_binop.tag = tag;
+   insn->variant.bfp_binop.dst = dst;
+   insn->variant.bfp_binop.op2 = op2;
+   insn->variant.bfp_binop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp_unop(UChar size, s390_bfp_unop_t tag, HReg dst, HReg op,
+                   s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP_UNOP;
+   insn->size = size;
+   insn->variant.bfp_unop.tag = tag;
+   insn->variant.bfp_unop.dst = dst;
+   insn->variant.bfp_unop.op  = op;
+   insn->variant.bfp_unop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp_compare(UChar size, HReg dst, HReg op1, HReg op2)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   vassert(size == 4 || size == 8);
+
+   insn->tag  = S390_INSN_BFP_COMPARE;
+   insn->size = size;
+   insn->variant.bfp_compare.dst = dst;
+   insn->variant.bfp_compare.op1 = op1;
+   insn->variant.bfp_compare.op2 = op2;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t tag, HReg dst_hi,
+                       HReg dst_lo, HReg op2_hi, HReg op2_lo,
+                       s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP128_BINOP;
+   insn->size = size;
+   insn->variant.bfp128_binop.tag = tag;
+   insn->variant.bfp128_binop.dst_hi = dst_hi;
+   insn->variant.bfp128_binop.dst_lo = dst_lo;
+   insn->variant.bfp128_binop.op2_hi = op2_hi;
+   insn->variant.bfp128_binop.op2_lo = op2_lo;
+   insn->variant.bfp128_binop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp128_unop(UChar size, s390_bfp_unop_t tag, HReg dst_hi,
+                      HReg dst_lo, HReg op_hi, HReg op_lo,
+                      s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP128_UNOP;
+   insn->size = size;
+   insn->variant.bfp128_unop.tag = tag;
+   insn->variant.bfp128_unop.dst_hi = dst_hi;
+   insn->variant.bfp128_unop.dst_lo = dst_lo;
+   insn->variant.bfp128_unop.op_hi = op_hi;
+   insn->variant.bfp128_unop.op_lo = op_lo;
+   insn->variant.bfp128_unop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp128_compare(UChar size, HReg dst, HReg op1_hi, HReg op1_lo,
+                         HReg op2_hi, HReg op2_lo)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP128_COMPARE;
+   insn->size = size;
+   insn->variant.bfp128_compare.dst = dst;
+   insn->variant.bfp128_compare.op1_hi = op1_hi;
+   insn->variant.bfp128_compare.op1_lo = op1_lo;
+   insn->variant.bfp128_compare.op2_hi = op2_hi;
+   insn->variant.bfp128_compare.op2_lo = op2_lo;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp128_convert_to(UChar size, s390_bfp_unop_t tag, HReg dst_hi,
+                            HReg dst_lo, HReg op)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP128_CONVERT_TO;
+   insn->size = size;
+   insn->variant.bfp128_unop.tag = tag;
+   insn->variant.bfp128_unop.dst_hi = dst_hi;
+   insn->variant.bfp128_unop.dst_lo = dst_lo;
+   insn->variant.bfp128_unop.op_hi = op;
+   insn->variant.bfp128_unop.op_lo = INVALID_HREG;  /* unused */
+   insn->variant.bfp128_unop.rounding_mode = S390_ROUND_NEAREST_EVEN; /* unused */
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_bfp128_convert_from(UChar size, s390_bfp_unop_t tag, HReg dst,
+                              HReg op_hi, HReg op_lo,
+                              s390_round_t rounding_mode)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_BFP128_CONVERT_FROM;
+   insn->size = size;
+   insn->variant.bfp128_unop.tag = tag;
+   insn->variant.bfp128_unop.dst_hi = dst;
+   insn->variant.bfp128_unop.dst_lo = INVALID_HREG;  /* unused */
+   insn->variant.bfp128_unop.op_hi = op_hi;
+   insn->variant.bfp128_unop.op_lo = op_lo;
+   insn->variant.bfp128_unop.rounding_mode = rounding_mode;
+
+   return insn;
+}
+
+
+s390_insn *
+s390_insn_mfence(void)
+{
+   s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+   insn->tag  = S390_INSN_MFENCE;
+   insn->size = 0;   /* not needed */
+
+   return insn;
+}
+
+
+/*---------------------------------------------------------------*/
+/*--- Debug print                                             ---*/
+/*---------------------------------------------------------------*/
+
+static const HChar *
+s390_cc_as_string(s390_cc_t cc)
+{
+   switch (cc) {
+   case S390_CC_NEVER:  return "never";
+   case S390_CC_OVFL:   return "overflow";
+   case S390_CC_H:      return "greater than";     /* A > B ; high */
+   case S390_CC_NLE:    return "not low or equal";
+   case S390_CC_L:      return "less than";        /* A < B ; low */
+   case S390_CC_NHE:    return "not high or equal";
+   case S390_CC_LH:     return "low or high";
+   case S390_CC_NE:     return "not equal";        /* A != B ; not zero */
+   case S390_CC_E:      return "equal";            /* A == B ; zero */
+   case S390_CC_NLH:    return "not low or high";
+   case S390_CC_HE:     return "greater or equal"; /* A >= B ; high or equal*/
+   case S390_CC_NL:     return "not low";          /* not low */
+   case S390_CC_LE:     return "less or equal";    /* A <= B ; low or equal */
+   case S390_CC_NH:     return "not high";
+   case S390_CC_NO:     return "not overflow";
+   case S390_CC_ALWAYS: return "always";
+   default:
+      vpanic("s390_cc_as_string");
+   }
+}
+
+
+/* Helper function for writing out a V insn */
+static void
+s390_sprintf(HChar *buf, HChar *fmt, ...)
+{
+   HChar *p;
+   ULong value;
+   va_list args;
+   va_start(args, fmt);
+
+   p = buf;
+   for ( ; *fmt; ++fmt) {
+      Int c = *fmt;
+
+      if (c != '%') {
+         *p++ = c;
+         continue;
+      }
+
+      c = *++fmt;  /* next char */
+      switch (c) {
+      case '%':
+         *p++ = c;   /* %% */
+         continue;
+
+      case 's':     /* %s */
+         p += vex_sprintf(p, "%s", va_arg(args, HChar *));
+         continue;
+
+      case 'M':     /* %M = mnemonic */
+         p += vex_sprintf(p, "%-8s", va_arg(args, HChar *));
+         continue;
+
+      case 'R':     /* %R = register */
+         p += vex_sprintf(p, "%s", s390_hreg_as_string(va_arg(args, HReg)));
+         continue;
+
+      case 'A':     /* %A = amode */
+         p += vex_sprintf(p, "%s",
+                          s390_amode_as_string(va_arg(args, s390_amode *)));
+         continue;
+
+      case 'C':     /* %C = condition code */
+         p += vex_sprintf(p, "%s", s390_cc_as_string(va_arg(args, s390_cc_t)));
+         continue;
+
+      case 'L': {   /* %L = argument list in helper call*/
+         UInt i, num_args;
+
+         num_args = va_arg(args, UInt);
+
+         for (i = 0; i < num_args; ++i) {
+            if (i != 0) p += vex_sprintf(p, ", ");
+            p += vex_sprintf(p, "r%d", s390_gprno_from_arg_index(i));
+         }
+         continue;
+      }
+
+      case 'O': {   /* %O = RMI operand */
+         s390_opnd_RMI *op = va_arg(args, s390_opnd_RMI *);
+
+         switch (op->tag) {
+         case S390_OPND_REG:
+            p += vex_sprintf(p, "%s", s390_hreg_as_string(op->variant.reg));
+            continue;
+
+         case S390_OPND_AMODE:
+            p += vex_sprintf(p, "%s", s390_amode_as_string(op->variant.am));
+            continue;
+
+         case S390_OPND_IMMEDIATE:
+            value = op->variant.imm;
+            goto print_value;
+
+         default:
+            goto fail;
+         }
+      }
+
+      case 'I':     /* %I = immediate value */
+         value = va_arg(args, ULong);
+         goto print_value;
+
+      print_value:
+         if ((Long)value < 0)
+            p += vex_sprintf(p, "%lld", (Long)value);
+         else if (value < 100)
+            p += vex_sprintf(p, "%llu", value);
+         else
+            p += vex_sprintf(p, "0x%llx", value);
+         continue;
+
+      default:
+         goto fail;
+      }
+   }
+   *p = '\0';
+   va_end(args);
+
+   return;
+
+ fail: vpanic("s390_printf");
+}
+
+
+/* Decompile the given insn into a static buffer and return it */
+const HChar *
+s390_insn_as_string(const s390_insn *insn)
+{
+   static HChar buf[300];
+   const HChar *op;
+   HChar *p;
+
+   buf[0] = '\0';
+
+   switch (insn->tag) {
+   case S390_INSN_LOAD:
+      s390_sprintf(buf, "%M %R,%A", "v-load", insn->variant.load.dst,
+                   insn->variant.load.src);
+      break;
+
+   case S390_INSN_STORE:
+      s390_sprintf(buf, "%M %R,%A", "v-store", insn->variant.store.src,
+                   insn->variant.store.dst);
+      break;
+
+   case S390_INSN_MOVE:
+      s390_sprintf(buf, "%M %R,%R", "v-move", insn->variant.move.dst,
+                   insn->variant.move.src);
+      break;
+
+   case S390_INSN_COND_MOVE:
+      s390_sprintf(buf, "%M if (%C) %R,%O", "v-move",
+                   insn->variant.cond_move.cond, insn->variant.cond_move.dst,
+                   &insn->variant.cond_move.src);
+      break;
+
+   case S390_INSN_LOAD_IMMEDIATE:
+      s390_sprintf(buf, "%M %R,%I", "v-loadi", insn->variant.load_immediate.dst,
+                   insn->variant.load_immediate.value);
+      break;
+
+   case S390_INSN_ALU:
+      switch (insn->variant.alu.tag) {
+      case S390_ALU_ADD:  op = "v-add";  break;
+      case S390_ALU_SUB:  op = "v-sub";  break;
+      case S390_ALU_MUL:  op = "v-mul";  break;
+      case S390_ALU_AND:  op = "v-and";  break;
+      case S390_ALU_OR:   op = "v-or";   break;
+      case S390_ALU_XOR:  op = "v-xor";  break;
+      case S390_ALU_LSH:  op = "v-lsh";  break;
+      case S390_ALU_RSH:  op = "v-rsh";  break;
+      case S390_ALU_RSHA: op = "v-rsha"; break;
+      default: goto fail;
+      }
+      s390_sprintf(buf, "%M %R,%R,%O", op, insn->variant.alu.dst,
+                   insn->variant.alu.dst   /* op1 same as dst */,
+                   &insn->variant.alu.op2);
+      break;
+
+   case S390_INSN_MUL:
+      if (insn->variant.mul.signed_multiply) {
+         op = "v-muls";
+      } else {
+         op = "v-mulu";
+      }
+      s390_sprintf(buf, "%M %R,%O", op, insn->variant.mul.dst_hi,
+                   &insn->variant.mul.op2);
+      break;
+
+   case S390_INSN_DIV:
+      if (insn->variant.div.signed_divide) {
+         op = "v-divs";
+      } else {
+         op = "v-divu";
+      }
+      s390_sprintf(buf, "%M %R,%O", op, insn->variant.div.op1_hi,
+                   &insn->variant.div.op2);
+      break;
+
+   case S390_INSN_DIVS:
+      s390_sprintf(buf, "%M %R,%O", "v-divsi", insn->variant.divs.op1,
+                   &insn->variant.divs.op2);
+      break;
+
+   case S390_INSN_CLZ:
+      s390_sprintf(buf, "%M %R,%O", "v-clz", insn->variant.clz.num_bits,
+                   &insn->variant.clz.src);
+      break;
+
+   case S390_INSN_UNOP:
+      switch (insn->variant.unop.tag) {
+      case S390_ZERO_EXTEND_8:
+      case S390_ZERO_EXTEND_16:
+      case S390_ZERO_EXTEND_32:
+         op = "v-zerox";
+         break;
+
+      case S390_SIGN_EXTEND_8:
+      case S390_SIGN_EXTEND_16:
+      case S390_SIGN_EXTEND_32:
+         op = "v-signx";
+         break;
+
+      case S390_NEGATE:
+         op = "v-neg";
+         break;
+
+      default:
+         goto fail;
+      }
+      s390_sprintf(buf, "%M %R,%O", op, insn->variant.unop.dst,
+                   &insn->variant.unop.src);
+      break;
+
+   case S390_INSN_TEST:
+      s390_sprintf(buf, "%M %O", "v-test", &insn->variant.test.src);
+      break;
+
+   case S390_INSN_CC2BOOL:
+      s390_sprintf(buf, "%M %R,%C", "v-cc2b", insn->variant.cc2bool.dst,
+                   insn->variant.cc2bool.cond);
+      break;
+
+   case S390_INSN_CAS:
+      s390_sprintf(buf, "%M %R,%A,%R,%R", "v-cas", insn->variant.cas.op1,
+                   insn->variant.cas.op2, insn->variant.cas.op3,
+                   insn->variant.cas.old_mem);
+      break;
+
+   case S390_INSN_COMPARE:
+      if (insn->variant.compare.signed_comparison) {
+         op = "v-cmps";
+      } else {
+         op = "v-cmpu";
+      }
+      s390_sprintf(buf, "%M %R,%O", op, insn->variant.compare.src1,
+                   &insn->variant.compare.src2);
+      break;
+
+   case S390_INSN_BRANCH:
+      switch (insn->variant.branch.kind) {
+      case Ijk_ClientReq:   op = "clientreq"; break;
+      case Ijk_Sys_syscall: op = "syscall";   break;
+      case Ijk_Yield:       op = "yield";     break;
+      case Ijk_EmWarn:      op = "emwarn";    break;
+      case Ijk_EmFail:      op = "emfail";    break;
+      case Ijk_MapFail:     op = "mapfail";   break;
+      case Ijk_NoDecode:    op = "nodecode";  break;
+      case Ijk_TInval:      op = "tinval";    break;
+      case Ijk_NoRedir:     op = "noredir";   break;
+      case Ijk_SigTRAP:     op = "sigtrap";   break;
+      case Ijk_Boring:      op = "goto";      break;
+      case Ijk_Call:        op = "call";      break;
+      case Ijk_Ret:         op = "return";    break;
+      default:
+         goto fail;
+      }
+      s390_sprintf(buf, "if (%C) %s %O", insn->variant.branch.cond, op,
+                   &insn->variant.branch.dst);
+      break;
+
+   case S390_INSN_HELPER_CALL: {
+
+      if (insn->variant.helper_call.cond != S390_CC_ALWAYS) {
+         s390_sprintf(buf, "%M if (%C) %s{%I}(%L)", "v-call",
+                      insn->variant.helper_call.cond,
+                      insn->variant.helper_call.name,
+                      insn->variant.helper_call.target,
+                      insn->variant.helper_call.num_args);
+      } else {
+         s390_sprintf(buf, "%M %s{%I}(%L)", "v-call",
+                      insn->variant.helper_call.name,
+                      insn->variant.helper_call.target,
+                      insn->variant.helper_call.num_args);
+      }
+      break;
+   }
+
+   case S390_INSN_BFP_TRIOP:
+      switch (insn->variant.bfp_triop.tag) {
+      case S390_BFP_MADD:  op = "v-fmadd";  break;
+      case S390_BFP_MSUB:  op = "v-fmsub";  break;
+      default: goto fail;
+      }
+      s390_sprintf(buf, "%M %R,%R,%R,%R", op, insn->variant.bfp_triop.dst,
+                   insn->variant.bfp_triop.dst  /* op1 same as dst */,
+                   insn->variant.bfp_triop.op2, insn->variant.bfp_triop.op3);
+      break;
+
+   case S390_INSN_BFP_BINOP:
+      switch (insn->variant.bfp_binop.tag) {
+      case S390_BFP_ADD:      op = "v-fadd";  break;
+      case S390_BFP_SUB:      op = "v-fsub";  break;
+      case S390_BFP_MUL:      op = "v-fmul";  break;
+      case S390_BFP_DIV:      op = "v-fdiv";  break;
+      default: goto fail;
+      }
+      s390_sprintf(buf, "%M %R,%R,%R", op, insn->variant.bfp_binop.dst,
+                   insn->variant.bfp_binop.dst  /* op1 same as dst */,
+                   insn->variant.bfp_binop.op2);
+      break;
+
+   case S390_INSN_BFP_COMPARE:
+      s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp_compare.dst,
+                   insn->variant.bfp_compare.op1, insn->variant.bfp_compare.op2);
+      break;
+
+   case S390_INSN_BFP_UNOP:
+      switch (insn->variant.bfp_unop.tag) {
+      case S390_BFP_ABS:         op = "v-fabs";  break;
+      case S390_BFP_NABS:        op = "v-fnabs"; break;
+      case S390_BFP_NEG:         op = "v-fneg";  break;
+      case S390_BFP_SQRT:        op = "v-fsqrt"; break;
+      case S390_BFP_I32_TO_F32:
+      case S390_BFP_I32_TO_F64:
+      case S390_BFP_I32_TO_F128:
+      case S390_BFP_I64_TO_F32:
+      case S390_BFP_I64_TO_F64:
+      case S390_BFP_I64_TO_F128: op = "v-i2f"; break;
+      case S390_BFP_F32_TO_I32:
+      case S390_BFP_F32_TO_I64:
+      case S390_BFP_F64_TO_I32:
+      case S390_BFP_F64_TO_I64:
+      case S390_BFP_F128_TO_I32:
+      case S390_BFP_F128_TO_I64: op = "v-f2i"; break;
+      case S390_BFP_F32_TO_F64:
+      case S390_BFP_F32_TO_F128:
+      case S390_BFP_F64_TO_F32:
+      case S390_BFP_F64_TO_F128:
+      case S390_BFP_F128_TO_F32:
+      case S390_BFP_F128_TO_F64: op = "v-f2f"; break;
+      default: goto fail;
+      }
+      s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst,
+                   insn->variant.bfp_unop.op);
+      break;
+
+   case S390_INSN_BFP128_BINOP:
+      switch (insn->variant.bfp128_binop.tag) {
+      case S390_BFP_ADD:      op = "v-fadd";  break;
+      case S390_BFP_SUB:      op = "v-fsub";  break;
+      case S390_BFP_MUL:      op = "v-fmul";  break;
+      case S390_BFP_DIV:      op = "v-fdiv";  break;
+      default: goto fail;
+      }
+      /* Only write the register that identifies the register pair */
+      s390_sprintf(buf, "%M %R,%R,%R", op, insn->variant.bfp128_binop.dst_hi,
+                   insn->variant.bfp128_binop.dst_hi  /* op1 same as dst */,
+                   insn->variant.bfp128_binop.op2_hi);
+      break;
+
+   case S390_INSN_BFP128_COMPARE:
+      /* Only write the register that identifies the register pair */
+      s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp128_compare.dst,
+                   insn->variant.bfp128_compare.op1_hi,
+                   insn->variant.bfp128_compare.op2_hi);
+      break;
+
+   case S390_INSN_BFP128_UNOP:
+   case S390_INSN_BFP128_CONVERT_TO:
+   case S390_INSN_BFP128_CONVERT_FROM:
+      switch (insn->variant.bfp128_unop.tag) {
+      case S390_BFP_ABS:         op = "v-fabs";  break;
+      case S390_BFP_NABS:        op = "v-fnabs"; break;
+      case S390_BFP_NEG:         op = "v-fneg";  break;
+      case S390_BFP_SQRT:        op = "v-fsqrt"; break;
+      case S390_BFP_I32_TO_F128:
+      case S390_BFP_I64_TO_F128: op = "v-i2f";   break;
+      case S390_BFP_F128_TO_I32:
+      case S390_BFP_F128_TO_I64: op = "v-f2i";   break;
+      case S390_BFP_F32_TO_F128:
+      case S390_BFP_F64_TO_F128:
+      case S390_BFP_F128_TO_F32:
+      case S390_BFP_F128_TO_F64: op = "v-f2f";   break;
+      default: goto fail;
+      }
+      /* Only write the register that identifies the register pair */
+      s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_unop.dst_hi,
+                   insn->variant.bfp128_unop.op_hi);
+      break;
+
+   case S390_INSN_MFENCE:
+      s390_sprintf(buf, "%M", "v-mfence");
+      return buf;   /* avoid printing "size = ..." which is meaningless */
+
+   default: goto fail;
+   }
+
+   /* Write out how many bytes are involved in the operation */
+
+   {
+      UInt len, i;
+
+      for (p = buf; *p; ++p)
+         continue;
+
+      len = p - buf;
+
+      if (len < 32) {
+         for (i = len; i < 32; ++i)
+            p += vex_sprintf(p, " ");
+      } else {
+         p += vex_sprintf(p, "\t");
+      }
+   }
+
+   /* Special cases first */
+   switch (insn->tag) {
+   case S390_INSN_UNOP:
+      switch (insn->variant.unop.tag) {
+      case S390_SIGN_EXTEND_8:
+      case S390_ZERO_EXTEND_8:  p += vex_sprintf(p, "1 -> "); goto common;
+      case S390_SIGN_EXTEND_16:
+      case S390_ZERO_EXTEND_16: p += vex_sprintf(p, "2 -> "); goto common;
+      case S390_SIGN_EXTEND_32:
+      case S390_ZERO_EXTEND_32: p += vex_sprintf(p, "4 -> "); goto common;
+      default:
+         goto common;
+      }
+
+   case S390_INSN_BFP_UNOP:
+      switch (insn->variant.bfp_unop.tag) {
+      case S390_BFP_I32_TO_F32:
+      case S390_BFP_I32_TO_F64:
+      case S390_BFP_I32_TO_F128:
+      case S390_BFP_F32_TO_I32:
+      case S390_BFP_F32_TO_I64:
+      case S390_BFP_F32_TO_F64:
+      case S390_BFP_F32_TO_F128: p += vex_sprintf(p, "4 -> "); goto common;
+      case S390_BFP_I64_TO_F32:
+      case S390_BFP_I64_TO_F64:
+      case S390_BFP_I64_TO_F128:
+      case S390_BFP_F64_TO_I32:
+      case S390_BFP_F64_TO_I64:
+      case S390_BFP_F64_TO_F32:
+      case S390_BFP_F64_TO_F128: p += vex_sprintf(p, "8 -> "); goto common;
+      case S390_BFP_F128_TO_I32:
+      case S390_BFP_F128_TO_I64:
+      case S390_BFP_F128_TO_F32:
+      case S390_BFP_F128_TO_F64: p += vex_sprintf(p, "16 -> "); goto common;
+      default:
+         goto common;
+      }
+
+   case S390_INSN_BFP128_UNOP:
+   case S390_INSN_BFP128_CONVERT_TO:
+   case S390_INSN_BFP128_CONVERT_FROM:
+      switch (insn->variant.bfp128_unop.tag) {
+      case S390_BFP_I32_TO_F128:
+      case S390_BFP_F32_TO_F128: p += vex_sprintf(p, "4 -> "); goto common;
+      case S390_BFP_I64_TO_F128:
+      case S390_BFP_F64_TO_F128: p += vex_sprintf(p, "8 -> "); goto common;
+      case S390_BFP_F128_TO_I32:
+      case S390_BFP_F128_TO_I64:
+      case S390_BFP_F128_TO_F32:
+      case S390_BFP_F128_TO_F64: p += vex_sprintf(p, "16 -> "); goto common;
+      default:
+         goto common;
+      }
+
+   default:
+      goto common;
+   }
+
+   /* Common case */
+ common:
+   vex_sprintf(p, "%u bytes", (UInt)insn->size);
+
+   return buf;
+
+ fail: vpanic("s390_insn_as_string");
+}
+
+
+
+/* Load NUM bytes from memory into register REG using addressing mode AM. */
+static UChar *
+s390_emit_load_mem(UChar *p, UInt num, UChar reg, const s390_amode *am)
+{
+   UInt b = hregNumber(am->b);
+   UInt x = hregNumber(am->x);  /* 0 for B12 and B20 */
+   UInt d = am->d;
+
+   switch (am->tag) {
+   case S390_AMODE_B12:
+   case S390_AMODE_BX12:
+      switch (num) {
+      case 1: return s390_emit_IC(p, reg, x, b, d);
+      case 2: return s390_emit_LH(p, reg, x, b, d);
+      case 4: return s390_emit_L(p, reg, x, b, d);
+      case 8: return s390_emit_LG(p, reg, x, b, DISP20(d));
+      default: goto fail;
+      }
+      break;
+
+   case S390_AMODE_B20:
+   case S390_AMODE_BX20:
+      switch (num) {
+      case 1: return s390_emit_ICY(p, reg, x, b, DISP20(d));
+      case 2: return s390_emit_LHY(p, reg, x, b, DISP20(d));
+      case 4: return s390_emit_LY(p, reg, x, b, DISP20(d));
+      case 8: return s390_emit_LG(p, reg, x, b, DISP20(d));
+      default: goto fail;
+      }
+      break;
+
+   default: goto fail;
+   }
+
+ fail:
+   vpanic("s390_emit_load_mem");
+}
+
+
+/* Load condition code into register REG */
+static UChar *
+s390_emit_load_cc(UChar *p, UChar reg)
+{
+   p = s390_emit_LGHI(p, reg, 0);  /* Clear out, cc not affected */
+   p = s390_emit_IPM(p, reg, reg);
+   /* Shift 28 bits to the right --> [0,1,2,3] */
+   return s390_emit_SRL(p, reg, 0, 28); /* REG = cc */
+}
+
+
+/*---------------------------------------------------------------*/
+/*--- Code generation                                         ---*/
+/*---------------------------------------------------------------*/
+
+/* Do not load more bytes than requested. */
+static UChar *
+s390_insn_load_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r, x, b, d;
+   const s390_amode *src;
+
+   src = insn->variant.load.src;
+
+   r = hregNumber(insn->variant.load.dst);
+
+   if (hregClass(insn->variant.load.dst) == HRcFlt64) {
+      b = hregNumber(src->b);
+      x = hregNumber(src->x);  /* 0 for B12 and B20 */
+      d = src->d;
+
+      switch (insn->size) {
+
+      case 4:
+         switch (src->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            return s390_emit_LE(buf, r, x, b, d);
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            return s390_emit_LEY(buf, r, x, b, DISP20(d));
+         }
+         break;
+
+      case 8:
+         switch (src->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            return s390_emit_LD(buf, r, x, b, d);
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            return s390_emit_LDY(buf, r, x, b, DISP20(d));
+         }
+         break;
+      }
+      vpanic("s390_insn_load_emit");
+   }
+
+   /* Integer stuff */
+   return s390_emit_load_mem(buf, insn->size, r, src);
+}
+
+
+static UChar *
+s390_insn_store_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r, x, b, d;
+   const s390_amode *dst;
+
+   dst = insn->variant.store.dst;
+
+   r = hregNumber(insn->variant.store.src);
+   b = hregNumber(dst->b);
+   x = hregNumber(dst->x);  /* 0 for B12 and B20 */
+   d = dst->d;
+
+   if (hregClass(insn->variant.store.src) == HRcFlt64) {
+      switch (insn->size) {
+
+      case 4:
+         switch (dst->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            return s390_emit_STE(buf, r, x, b, d);
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            return s390_emit_STEY(buf, r, x, b, DISP20(d));
+         }
+         break;
+
+      case 8:
+         switch (dst->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            return s390_emit_STD(buf, r, x, b, d);
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            return s390_emit_STDY(buf, r, x, b, DISP20(d));
+         }
+         break;
+      }
+      vpanic("s390_insn_store_emit");
+   }
+
+   /* Integer stuff */
+   switch (insn->size) {
+   case 1:
+      switch (dst->tag) {
+      case S390_AMODE_B12:
+      case S390_AMODE_BX12:
+         return s390_emit_STC(buf, r, x, b, d);
+
+      case S390_AMODE_B20:
+      case S390_AMODE_BX20:
+         return s390_emit_STCY(buf, r, x, b, DISP20(d));
+      }
+      break;
+
+   case 2:
+      switch (dst->tag) {
+      case S390_AMODE_B12:
+      case S390_AMODE_BX12:
+         return s390_emit_STH(buf, r, x, b, d);
+
+      case S390_AMODE_B20:
+      case S390_AMODE_BX20:
+         return s390_emit_STHY(buf, r, x, b, DISP20(d));
+      }
+      break;
+
+   case 4:
+      switch (dst->tag) {
+      case S390_AMODE_B12:
+      case S390_AMODE_BX12:
+         return s390_emit_ST(buf, r, x, b, d);
+
+      case S390_AMODE_B20:
+      case S390_AMODE_BX20:
+         return s390_emit_STY(buf, r, x, b, DISP20(d));
+      }
+      break;
+
+   case 8:
+      return s390_emit_STG(buf, r, x, b, DISP20(d));
+
+   default:
+      break;
+   }
+
+   vpanic("s390_insn_store_emit");
+}
+
+
+static UChar *
+s390_insn_move_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt dst, src;
+   HRegClass dst_class, src_class;
+
+   dst = hregNumber(insn->variant.move.dst);
+   src = hregNumber(insn->variant.move.src);
+
+   dst_class = hregClass(insn->variant.move.dst);
+   src_class = hregClass(insn->variant.move.src);
+
+   if (dst_class == src_class) {
+      if (dst_class == HRcInt64)
+         return s390_emit_LGR(buf, dst, src);
+      if (dst_class == HRcFlt64)
+         return s390_emit_LDR(buf, dst, src);
+   } else {
+      if (dst_class == HRcFlt64 && src_class == HRcInt64)
+         return s390_emit_LDGRw(buf, dst, src);
+      if (dst_class == HRcInt64 && src_class == HRcFlt64)
+         return s390_emit_LGDRw(buf, dst, src);
+      /* A move between floating point registers and general purpose
+         registers of different size should never occur and indicates
+         an error elsewhere. */
+   }
+
+   vpanic("s390_insn_move_emit");
+}
+
+
+static UChar *
+s390_insn_load_immediate_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt  r;
+   ULong value = insn->variant.load_immediate.value;
+
+   r = hregNumber(insn->variant.load_immediate.dst);
+
+   if (hregClass(insn->variant.load_immediate.dst) == HRcFlt64) {
+      vassert(value == 0);
+      switch (insn->size) {
+      case 4: return s390_emit_LZER(buf, r, value);
+      case 8: return s390_emit_LZDR(buf, r, value);
+      }
+      vpanic("s390_insn_load_immediate_emit");
+   }
+
+   switch (insn->size) {
+   case 1:
+   case 2:
+      /* Load the immediate values as a 4 byte value. That does not hurt as
+         those extra bytes will not be looked at. Fall through .... */
+   case 4:
+      return s390_emit_load_32imm(buf, r, value);
+
+   case 8:
+      return s390_emit_load_64imm(buf, r, value);
+   }
+
+   vpanic("s390_insn_load_immediate_emit");
+}
+
+
+/* There is no easy way to do ALU operations on 1-byte or 2-byte operands.
+   So we simply perform a 4-byte operation. Doing so uses possibly undefined
+   bits and produces an undefined result in those extra bit positions. But
+   upstream does not look at those positions, so this is OK. */
+static UChar *
+s390_insn_alu_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI op2;
+   UInt dst;
+
+   dst = hregNumber(insn->variant.alu.dst);
+   op2 = insn->variant.alu.op2;
+
+   /* Second operand is in a register */
+   if (op2.tag == S390_OPND_REG) {
+      UInt r2 = hregNumber(op2.variant.reg);
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+      case 4:
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD:  return s390_emit_AR(buf, dst, r2);
+         case S390_ALU_SUB:  return s390_emit_SR(buf, dst, r2);
+         case S390_ALU_MUL:  return s390_emit_MSR(buf, dst, r2);
+         case S390_ALU_AND:  return s390_emit_NR(buf, dst, r2);
+         case S390_ALU_OR:   return s390_emit_OR(buf, dst, r2);
+         case S390_ALU_XOR:  return s390_emit_XR(buf, dst, r2);
+         case S390_ALU_LSH:  return s390_emit_SLL(buf, dst, r2, 0);
+         case S390_ALU_RSH:  return s390_emit_SRL(buf, dst, r2, 0);
+         case S390_ALU_RSHA: return s390_emit_SRA(buf, dst, r2, 0);
+         }
+         goto fail;
+
+      case 8:
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD:  return s390_emit_AGR(buf, dst, r2);
+         case S390_ALU_SUB:  return s390_emit_SGR(buf, dst, r2);
+         case S390_ALU_MUL:  return s390_emit_MSGR(buf, dst, r2);
+         case S390_ALU_AND:  return s390_emit_NGR(buf, dst, r2);
+         case S390_ALU_OR:   return s390_emit_OGR(buf, dst, r2);
+         case S390_ALU_XOR:  return s390_emit_XGR(buf, dst, r2);
+         case S390_ALU_LSH:  return s390_emit_SLLG(buf, dst, dst, r2, DISP20(0));
+         case S390_ALU_RSH:  return s390_emit_SRLG(buf, dst, dst, r2, DISP20(0));
+         case S390_ALU_RSHA: return s390_emit_SRAG(buf, dst, dst, r2, DISP20(0));
+         }
+         goto fail;
+      }
+      goto fail;
+   }
+
+   /* 2nd operand is in memory */
+   if (op2.tag == S390_OPND_AMODE) {
+      UInt b, x, d;
+      const s390_amode *src = op2.variant.am;
+
+      b = hregNumber(src->b);
+      x = hregNumber(src->x);  /* 0 for B12 and B20 */
+      d = src->d;
+
+      /* Shift operands are special here as there are no opcodes that
+         allow a memory operand. So we first load the 2nd operand into
+         some register. R0 is used to save restore the contents of the
+         chosen register.. */
+
+      if (insn->variant.alu.tag == S390_ALU_LSH ||
+          insn->variant.alu.tag == S390_ALU_RSH ||
+          insn->variant.alu.tag == S390_ALU_RSHA) {
+         UInt b2;
+
+         /* Choose a register (other than DST or R0) into which to stick the
+            shift amount. The following works because r15 is reserved and
+            thusly dst != 15. */
+         vassert(dst != 15);  /* extra paranoia */
+         b2 = (dst + 1) % 16;
+         
+         buf = s390_emit_LGR(buf, R0, b2);  /* save */
+
+         /* Loading SRC to B2 does not modify R0. */
+         buf = s390_emit_load_mem(buf, insn->size, b2, src);
+
+         if (insn->size == 8) {
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_LSH:
+               buf = s390_emit_SLLG(buf, dst, dst, b2, DISP20(0));
+               break;
+            case S390_ALU_RSH:
+               buf = s390_emit_SRLG(buf, dst, dst, b2, DISP20(0));
+               break;
+            case S390_ALU_RSHA:
+               buf = s390_emit_SRAG(buf, dst, dst, b2, DISP20(0));
+               break;
+            default: /* unreachable */
+               goto fail;
+            }
+         } else {
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_LSH:
+               buf = s390_emit_SLL(buf, dst, b2, 0);
+               break;
+            case S390_ALU_RSH:
+               buf = s390_emit_SRL(buf, dst, b2, 0);
+               break;
+            case S390_ALU_RSHA:
+               buf = s390_emit_SRA(buf, dst, b2, 0);
+               break;
+            default: /* unreachable */
+               goto fail;
+            }
+         }
+         return s390_emit_LGR(buf, b2, R0);  /* restore */
+      }
+
+      switch (insn->size) {
+      case 1:
+         /* Move the byte from memory into scratch register r0 */
+         buf = s390_emit_load_mem(buf, 1, R0, src);
+
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD: return s390_emit_AR(buf, dst, R0);
+         case S390_ALU_SUB: return s390_emit_SR(buf, dst, R0);
+         case S390_ALU_MUL: return s390_emit_MSR(buf, dst, R0);
+         case S390_ALU_AND: return s390_emit_NR(buf, dst, R0);
+         case S390_ALU_OR:  return s390_emit_OR(buf, dst, R0);
+         case S390_ALU_XOR: return s390_emit_XR(buf, dst, R0);
+         case S390_ALU_LSH:
+         case S390_ALU_RSH:
+         case S390_ALU_RSHA: ; /* avoid GCC warning */
+         }
+         goto fail;
+
+      case 2:
+         switch (src->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_ADD:
+               return s390_emit_AH(buf, dst, x, b, d);
+
+            case S390_ALU_SUB:
+               return s390_emit_SH(buf, dst, x, b, d);
+
+            case S390_ALU_MUL:
+               return s390_emit_MH(buf, dst, x, b, d);
+
+               /* For bitwise operations: Move two bytes from memory into scratch
+                  register r0; then perform operation */
+            case S390_ALU_AND:
+               buf = s390_emit_LH(buf, R0, x, b, d);
+               return s390_emit_NR(buf, dst, R0);
+
+            case S390_ALU_OR:
+               buf = s390_emit_LH(buf, R0, x, b, d);
+               return s390_emit_OR(buf, dst, R0);
+
+            case S390_ALU_XOR:
+               buf = s390_emit_LH(buf, R0, x, b, d);
+               return s390_emit_XR(buf, dst, R0);
+
+            case S390_ALU_LSH:
+            case S390_ALU_RSH:
+            case S390_ALU_RSHA: ; /* avoid GCC warning */
+            }
+            goto fail;
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_ADD:
+               return s390_emit_AHY(buf, dst, x, b, DISP20(d));
+
+            case S390_ALU_SUB:
+               return s390_emit_SHY(buf, dst, x, b, DISP20(d));
+
+            case S390_ALU_MUL:
+               return s390_emit_MHYw(buf, dst, x, b, DISP20(d));
+
+               /* For bitwise operations: Move two bytes from memory into scratch
+                  register r0; then perform operation */
+            case S390_ALU_AND:
+               buf = s390_emit_LHY(buf, R0, x, b, DISP20(d));
+               return s390_emit_NR(buf, dst, R0);
+
+            case S390_ALU_OR:
+               buf = s390_emit_LHY(buf, R0, x, b, DISP20(d));
+               return s390_emit_OR(buf, dst, R0);
+
+            case S390_ALU_XOR:
+               buf = s390_emit_LHY(buf, R0, x, b, DISP20(d));
+               return s390_emit_XR(buf, dst, R0);
+
+            case S390_ALU_LSH:
+            case S390_ALU_RSH:
+            case S390_ALU_RSHA: ; /* avoid GCC warning */
+            }
+            goto fail;
+         }
+         goto fail;
+
+      case 4:
+         switch (src->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_ADD: return s390_emit_A(buf, dst, x, b, d);
+            case S390_ALU_SUB: return s390_emit_S(buf, dst, x, b, d);
+            case S390_ALU_MUL: return s390_emit_MS(buf, dst, x, b, d);
+            case S390_ALU_AND: return s390_emit_N(buf, dst, x, b, d);
+            case S390_ALU_OR:  return s390_emit_O(buf, dst, x, b, d);
+            case S390_ALU_XOR: return s390_emit_X(buf, dst, x, b, d);
+            case S390_ALU_LSH:
+            case S390_ALU_RSH:
+            case S390_ALU_RSHA: ; /* avoid GCC warning */
+            }
+            goto fail;
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            switch (insn->variant.alu.tag) {
+            case S390_ALU_ADD: return s390_emit_AY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_SUB: return s390_emit_SY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_MUL: return s390_emit_MSY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_AND: return s390_emit_NY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_OR:  return s390_emit_OY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_XOR: return s390_emit_XY(buf, dst, x, b, DISP20(d));
+            case S390_ALU_LSH:
+            case S390_ALU_RSH:
+            case S390_ALU_RSHA: ; /* avoid GCC warning */
+            }
+            goto fail;
+         }
+         goto fail;
+
+      case 8:
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD: return s390_emit_AG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_SUB: return s390_emit_SG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_MUL: return s390_emit_MSG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_AND: return s390_emit_NG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_OR:  return s390_emit_OG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_XOR: return s390_emit_XG(buf, dst, x, b, DISP20(d));
+         case S390_ALU_LSH:
+         case S390_ALU_RSH:
+         case S390_ALU_RSHA: ; /* avoid GCC warning */
+         }
+         goto fail;
+      }
+      goto fail;
+   }
+
+   /* 2nd operand is an immediate value */
+   if (op2.tag == S390_OPND_IMMEDIATE) {
+      ULong value;
+
+      /* No masking of the value is required as it is not sign extended */
+      value = op2.variant.imm;
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+         /* There is no 1-byte opcode. Do the computation in
+            2 bytes. The extra byte will be ignored. */
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD:
+            return s390_emit_AHI(buf, dst, value);
+
+         case S390_ALU_SUB:
+            return s390_emit_SLFIw(buf, dst, value);
+
+         case S390_ALU_MUL:
+            return s390_emit_MHI(buf, dst, value);
+
+         case S390_ALU_AND: return s390_emit_NILL(buf, dst, value);
+         case S390_ALU_OR:  return s390_emit_OILL(buf, dst, value);
+         case S390_ALU_XOR:
+            /* There is no XILL instruction.  Load the immediate value into
+               R0 and combine with the destination register. */
+            buf = s390_emit_LHI(buf, R0, value);
+            return s390_emit_XR(buf, dst, R0);
+
+         case S390_ALU_LSH:
+            return s390_emit_SLL(buf, dst, 0, value);
+
+         case S390_ALU_RSH:
+            return s390_emit_SRL(buf, dst, 0, value);
+
+         case S390_ALU_RSHA:
+            return s390_emit_SRA(buf, dst, 0, value);
+         }
+         goto fail;
+
+      case 4:
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD:
+            if (uint_fits_signed_16bit(value)) {
+               return s390_emit_AHI(buf, dst, value);
+            }
+            return s390_emit_AFIw(buf, dst, value);
+
+         case S390_ALU_SUB:  return s390_emit_SLFIw(buf, dst, value);
+         case S390_ALU_MUL:  return s390_emit_MSFIw(buf, dst, value);
+         case S390_ALU_AND:  return s390_emit_NILFw(buf, dst, value);
+         case S390_ALU_OR:   return s390_emit_OILFw(buf, dst, value);
+         case S390_ALU_XOR:  return s390_emit_XILFw(buf, dst, value);
+         case S390_ALU_LSH:  return s390_emit_SLL(buf, dst, 0, value);
+         case S390_ALU_RSH:  return s390_emit_SRL(buf, dst, 0, value);
+         case S390_ALU_RSHA: return s390_emit_SRA(buf, dst, 0, value);
+         }
+         goto fail;
+
+      case 8:
+         switch (insn->variant.alu.tag) {
+         case S390_ALU_ADD:
+            if (ulong_fits_signed_16bit(value)) {
+               return s390_emit_AGHI(buf, dst, value);
+            }
+            if (ulong_fits_signed_32bit(value) && s390_host_has_eimm) {
+               return s390_emit_AGFI(buf, dst, value);
+            }
+            /* Load constant into R0 then add */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_AGR(buf, dst, R0);
+
+         case S390_ALU_SUB:
+            if (ulong_fits_unsigned_32bit(value)) {
+               return s390_emit_SLGFIw(buf, dst, value);
+            }
+            /* Load value into R0; then subtract from destination reg */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_SGR(buf, dst, R0);
+
+         case S390_ALU_MUL:
+            if (ulong_fits_signed_32bit(value) && s390_host_has_gie) {
+               return s390_emit_MSGFI(buf, dst, value);
+            }
+            /* Load constant into R0 then add */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_MSGR(buf, dst, R0);
+
+            /* Do it in two steps: upper half [0:31] and lower half [32:63] */
+         case S390_ALU_AND:
+            if (s390_host_has_eimm) {
+               buf  = s390_emit_NIHF(buf, dst, value >> 32);
+               return s390_emit_NILF(buf, dst, value & 0xFFFFFFFF);
+            }
+            /* Load value into R0; then combine with destination reg */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_NGR(buf, dst, R0);
+
+         case S390_ALU_OR:
+            if (s390_host_has_eimm) {
+               buf  = s390_emit_OIHF(buf, dst, value >> 32);
+               return s390_emit_OILF(buf, dst, value & 0xFFFFFFFF);
+            }
+            /* Load value into R0; then combine with destination reg */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_OGR(buf, dst, R0);
+
+         case S390_ALU_XOR:
+            if (s390_host_has_eimm) {
+               buf  = s390_emit_XIHF(buf, dst, value >> 32);
+               return s390_emit_XILF(buf, dst, value & 0xFFFFFFFF);
+            }
+            /* Load value into R0; then combine with destination reg */
+            buf = s390_emit_load_64imm(buf, R0, value);
+            return s390_emit_XGR(buf, dst, R0);
+
+            /* No special considerations for long displacement here. Only the six
+               least significant bits of VALUE will be taken; all other bits are
+               ignored. So the DH2 bits are irrelevant and do not influence the
+               shift operation, independent of whether long-displacement is available
+               or not. */
+         case S390_ALU_LSH:  return s390_emit_SLLG(buf, dst, dst, 0, DISP20(value));
+         case S390_ALU_RSH:  return s390_emit_SRLG(buf, dst, dst, 0, DISP20(value));
+         case S390_ALU_RSHA: return s390_emit_SRAG(buf, dst, dst, 0, DISP20(value));
+         }
+         goto fail;
+      }
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_alu_emit");
+}
+
+
+static UChar *
+s390_widen_emit(UChar *buf, const s390_insn *insn, UInt from_size,
+                Bool sign_extend)
+{
+   s390_opnd_RMI opnd = insn->variant.unop.src;
+
+   switch (opnd.tag) {
+   case S390_OPND_REG: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+      UChar r2 = hregNumber(opnd.variant.reg);
+
+      switch (from_size) {
+      case 1:
+         /* Widening to a half-word is implemented like widening to a word
+            because the upper half-word will not be looked at. */
+         if (insn->size == 4 || insn->size == 2) {  /* 8 --> 32    8 --> 16 */
+            if (sign_extend)
+               return s390_emit_LBRw(buf, r1, r2);
+            else
+               return s390_emit_LLCRw(buf, r1, r2);
+         }
+         if (insn->size == 8) {  /* 8 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGBRw(buf, r1, r2);
+            else
+               return s390_emit_LLGCRw(buf, r1, r2);
+         }
+         goto fail;
+
+      case 2:
+         if (insn->size == 4) {  /* 16 --> 32 */
+            if (sign_extend)
+               return s390_emit_LHRw(buf, r1, r2);
+            else
+               return s390_emit_LLHRw(buf, r1, r2);
+         }
+         if (insn->size == 8) {  /* 16 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGHRw(buf, r1, r2);
+            else
+               return s390_emit_LLGHRw(buf, r1, r2);
+         }
+         goto fail;
+
+      case 4:
+         if (insn->size == 8) {  /* 32 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGFR(buf, r1, r2);
+            else
+               return s390_emit_LLGFR(buf, r1, r2);
+         }
+         goto fail;
+
+      default: /* unexpected "from" size */
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+      const s390_amode *src = opnd.variant.am;
+      UChar b = hregNumber(src->b);
+      UChar x = hregNumber(src->x);
+      Int   d = src->d;
+
+      switch (from_size) {
+      case 1:
+         if (insn->size == 4 || insn->size == 2) {
+            if (sign_extend)
+               return s390_emit_LBw(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_LLCw(buf, r1, x, b, DISP20(d));
+         }
+         if (insn->size == 8) {
+            if (sign_extend)
+               return s390_emit_LGBw(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_LLGC(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      case 2:
+         if (insn->size == 4) {  /* 16 --> 32 */
+            if (sign_extend == 0)
+               return s390_emit_LLHw(buf, r1, x, b, DISP20(d));
+
+            switch (src->tag) {
+            case S390_AMODE_B12:
+            case S390_AMODE_BX12:
+               return s390_emit_LH(buf, r1, x, b, d);
+
+            case S390_AMODE_B20:
+            case S390_AMODE_BX20:
+               return s390_emit_LHY(buf, r1, x, b, DISP20(d));
+            }
+            goto fail;
+         }
+         if (insn->size == 8) {  /* 16 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGH(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_LLGH(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      case 4:
+         if (insn->size == 8) {  /* 32 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGF(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_LLGF(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      default: /* unexpected "from" size */
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+      ULong value = opnd.variant.imm;
+
+      switch (from_size) {
+      case 1:
+         if (insn->size == 4 || insn->size == 2) {  /* 8 --> 32   8 --> 16 */
+            if (sign_extend) {
+               /* host can do the sign extension to 16-bit; LHI does the rest */
+               return s390_emit_LHI(buf, r1, (Short)(Char)(UChar)value);
+            } else {
+               return s390_emit_LHI(buf, r1, value);
+            }
+         }
+         if (insn->size == 8) {  /* 8 --> 64 */
+            if (sign_extend) {
+               /* host can do the sign extension to 16-bit; LGHI does the rest */
+               return s390_emit_LGHI(buf, r1, (Short)(Char)(UChar)value);
+            } else {
+               return s390_emit_LGHI(buf, r1, value);
+            }
+         }
+         goto fail;
+
+      case 2:
+         if (insn->size == 4) {  /* 16 --> 32 */
+            return s390_emit_LHI(buf, r1, value);
+         }
+         if (insn->size == 8) {  /* 16 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGHI(buf, r1, value);
+            else
+               return s390_emit_LLILL(buf, r1, value);
+         }
+         goto fail;
+
+      case 4:
+         if (insn->size == 8) {  /* 32 --> 64 */
+            if (sign_extend)
+               return s390_emit_LGFIw(buf, r1, value);
+            else
+               return s390_emit_LLILFw(buf, r1, value);
+         }
+         goto fail;
+
+      default: /* unexpected "from" size */
+         goto fail;
+      }
+   }
+   }
+
+ fail:
+   vpanic("s390_widen_emit");
+}
+
+
+static UChar *
+s390_negate_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI opnd;
+
+   opnd = insn->variant.unop.src;
+
+   switch (opnd.tag) {
+   case S390_OPND_REG: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+      UChar r2 = hregNumber(opnd.variant.reg);
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+      case 4:
+         return s390_emit_LCR(buf, r1, r2);
+
+      case 8:
+         return s390_emit_LCGR(buf, r1, r2);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+
+      /* Load bytes into scratch register R0, then negate */
+      buf = s390_emit_load_mem(buf, insn->size, R0, opnd.variant.am);
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+      case 4:
+         return s390_emit_LCR(buf, r1, R0);
+
+      case 8:
+         return s390_emit_LCGR(buf, r1, R0);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      UChar r1 = hregNumber(insn->variant.unop.dst);
+      ULong value = opnd.variant.imm;
+
+      value = ~value + 1;   /* two's complement */
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+         /* Load the immediate values as a 4 byte value. That does not hurt as
+            those extra bytes will not be looked at. Fall through .... */
+      case 4:
+         return s390_emit_load_32imm(buf, r1, value);
+
+      case 8:
+         return s390_emit_load_64imm(buf, r1, value);
+
+      default:
+         goto fail;
+      }
+   }
+   }
+
+ fail:
+   vpanic("s390_negate_emit");
+}
+
+
+static UChar *
+s390_insn_unop_emit(UChar *buf, const s390_insn *insn)
+{
+   switch (insn->variant.unop.tag) {
+   case S390_ZERO_EXTEND_8:  return s390_widen_emit(buf, insn, 1, 0);
+   case S390_ZERO_EXTEND_16: return s390_widen_emit(buf, insn, 2, 0);
+   case S390_ZERO_EXTEND_32: return s390_widen_emit(buf, insn, 4, 0);
+
+   case S390_SIGN_EXTEND_8:  return s390_widen_emit(buf, insn, 1, 1);
+   case S390_SIGN_EXTEND_16: return s390_widen_emit(buf, insn, 2, 1);
+   case S390_SIGN_EXTEND_32: return s390_widen_emit(buf, insn, 4, 1);
+
+   case S390_NEGATE:         return s390_negate_emit(buf, insn);
+   }
+
+   vpanic("s390_insn_unop_emit");
+}
+
+
+/* Only 4-byte and 8-byte operands are handled. 1-byte and 2-byte
+   comparisons will have been converted to 4-byte comparisons in
+   s390_isel_cc and should not occur here. */
+static UChar *
+s390_insn_test_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI opnd;
+
+   opnd = insn->variant.test.src;
+
+   switch (opnd.tag) {
+   case S390_OPND_REG: {
+      UInt reg = hregNumber(opnd.variant.reg);
+
+      switch (insn->size) {
+      case 4:
+         return s390_emit_LTR(buf, reg, reg);
+
+      case 8:
+         return s390_emit_LTGR(buf, reg, reg);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = opnd.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      switch (insn->size) {
+      case 4:
+         return s390_emit_LTw(buf, R0, x, b, DISP20(d));
+
+      case 8:
+         return s390_emit_LTGw(buf, R0, x, b, DISP20(d));
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = opnd.variant.imm;
+
+      switch (insn->size) {
+      case 4:
+         buf = s390_emit_load_32imm(buf, R0, value);
+         return s390_emit_LTR(buf, R0, R0);
+
+      case 8:
+         buf = s390_emit_load_64imm(buf, R0, value);
+         return s390_emit_LTGR(buf, R0, R0);
+
+      default:
+         goto fail;
+      }
+   }
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_test_emit");
+}
+
+
+static UChar *
+s390_insn_cc2bool_emit(UChar *buf, const s390_insn *insn)
+{
+   UChar r1 = hregNumber(insn->variant.cc2bool.dst);
+   s390_cc_t cond = insn->variant.cc2bool.cond;
+
+   /* Make the destination register be 1 or 0, depending on whether
+      the relevant condition holds. A 64-bit value is computed. */
+   if (cond == S390_CC_ALWAYS)
+      return s390_emit_LGHI(buf, r1, 1);  /* r1 = 1 */
+
+   buf = s390_emit_load_cc(buf, r1);                 /* r1 = cc */
+   buf = s390_emit_LGHI(buf, R0, cond);              /* r0 = mask */
+   buf = s390_emit_SLLG(buf, r1, R0, r1, DISP20(0)); /* r1 = mask << cc */
+   buf = s390_emit_SRLG(buf, r1, r1, 0,  DISP20(3)); /* r1 = r1 >> 3 */
+   buf = s390_emit_NILL(buf, r1, 1);                 /* r1 = r1 & 0x1 */
+
+   return buf;
+}
+
+
+/* Only 4-byte and 8-byte operands are handled. */
+static UChar *
+s390_insn_cas_emit(UChar *buf, const s390_insn *insn)
+{
+   UChar r1, r3, b, old;
+   Int d;
+   s390_amode *am;
+
+   r1 = hregNumber(insn->variant.cas.op1); /* expected value */
+   r3 = hregNumber(insn->variant.cas.op3);
+   old= hregNumber(insn->variant.cas.old_mem);
+   am = insn->variant.cas.op2;
+   b  = hregNumber(am->b);
+   d  = am->d;
+
+   switch (insn->size) {
+   case 4:
+      /* r1 must no be overwritten. So copy it to R0 and let CS clobber it */
+      buf = s390_emit_LR(buf, R0, r1);
+      if (am->tag == S390_AMODE_B12)
+         buf = s390_emit_CS(buf, R0, r3, b, d);
+      else
+         buf = s390_emit_CSY(buf, R0, r3, b, DISP20(d));
+      /* Now copy R0 which has the old memory value to OLD */
+      return s390_emit_LR(buf, old, R0);
+
+   case 8:
+      /* r1 must no be overwritten. So copy it to R0 and let CS clobber it */
+      buf = s390_emit_LGR(buf, R0, r1);
+      buf = s390_emit_CSG(buf, R0, r3, b, DISP20(d));
+      /* Now copy R0 which has the old memory value to OLD */
+      return s390_emit_LGR(buf, old, R0);
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_cas_emit");
+}
+
+
+/* Only 4-byte and 8-byte comparisons are handled. 1-byte and 2-byte
+   comparisons will have been converted to 4-byte comparisons in
+   s390_isel_cc and should not occur here. */
+static UChar *
+s390_insn_compare_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI op2;
+   HReg op1;
+   Bool signed_comparison;
+
+   op1 = insn->variant.compare.src1;
+   op2 = insn->variant.compare.src2;
+   signed_comparison = insn->variant.compare.signed_comparison;
+
+   switch (op2.tag) {
+   case S390_OPND_REG: {
+      UInt r1 = hregNumber(op1);
+      UInt r2 = hregNumber(op2.variant.reg);
+
+      switch (insn->size) {
+      case 4:
+         if (signed_comparison)
+            return s390_emit_CR(buf, r1, r2);
+         else
+            return s390_emit_CLR(buf, r1, r2);
+
+      case 8:
+         if (signed_comparison)
+            return s390_emit_CGR(buf, r1, r2);
+         else
+            return s390_emit_CLGR(buf, r1, r2);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      UChar r1 = hregNumber(op1);
+      const s390_amode *am = op2.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      switch (insn->size) {
+      case 4:
+         switch (am->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            if (signed_comparison)
+               return s390_emit_C(buf, r1, x, b, d);
+            else
+               return s390_emit_CL(buf, r1, x, b, d);
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            if (signed_comparison)
+               return s390_emit_CY(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_CLY(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      case 8:
+         if (signed_comparison)
+            return s390_emit_CG(buf, r1, x, b, DISP20(d));
+         else
+            return s390_emit_CLG(buf, r1, x, b, DISP20(d));
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      UChar r1 = hregNumber(op1);
+      ULong value = op2.variant.imm;
+
+      switch (insn->size) {
+      case 4:
+         if (signed_comparison)
+            return s390_emit_CFIw(buf, r1, value);
+         else
+            return s390_emit_CLFIw(buf, r1, value);
+
+      case 8:
+         buf = s390_emit_load_64imm(buf, R0, value);
+         if (signed_comparison)
+            return s390_emit_CGR(buf, r1, R0);
+         else
+            return s390_emit_CLGR(buf, r1, R0);
+
+      default:
+         goto fail;
+      }
+   }
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_compare_emit");
+}
+
+
+static UChar *
+s390_insn_mul_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI op2;
+   UChar r1;
+   Bool signed_multiply;
+
+   /* The register number identifying the register pair */
+   r1  = hregNumber(insn->variant.mul.dst_hi);
+
+   op2 = insn->variant.mul.op2;
+   signed_multiply = insn->variant.mul.signed_multiply;
+
+   switch (op2.tag) {
+   case S390_OPND_REG: {
+      UInt r2 = hregNumber(op2.variant.reg);
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+      case 4:
+         if (signed_multiply)
+            return s390_emit_MR(buf, r1, r2);
+         else
+            return s390_emit_MLR(buf, r1, r2);
+
+      case 8:
+         if (signed_multiply)
+            vpanic("s390_insn_mul_emit");
+         else
+            return s390_emit_MLGR(buf, r1, r2);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = op2.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+         /* Load bytes into scratch register R0, then multiply */
+         buf = s390_emit_load_mem(buf, insn->size, R0, am);
+         if (signed_multiply)
+            return s390_emit_MR(buf, r1, R0);
+         else
+            return s390_emit_MLR(buf, r1, R0);
+
+      case 4:
+         switch (am->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            if (signed_multiply)
+               return s390_emit_M(buf, r1, x, b, d);
+            else
+               return s390_emit_ML(buf, r1, x, b, DISP20(d));
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            if (signed_multiply)
+               return s390_emit_MFYw(buf, r1, x, b, DISP20(d));
+            else
+               return s390_emit_ML(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      case 8:
+         if (signed_multiply)
+            vpanic("s390_insn_mul_emit");
+         else
+            return s390_emit_MLG(buf, r1, x, b, DISP20(d));
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = op2.variant.imm;
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+      case 4:
+         buf = s390_emit_load_32imm(buf, R0, value);
+         if (signed_multiply)
+            return s390_emit_MR(buf, r1, R0);
+         else
+            return s390_emit_MLR(buf, r1, R0);
+
+      case 8:
+         buf = s390_emit_load_64imm(buf, R0, value);
+         if (signed_multiply)
+            vpanic("s390_insn_mul_emit");
+         else
+            return s390_emit_MLGR(buf, r1, R0);
+
+      default:
+         goto fail;
+      }
+   }
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_mul_emit");
+}
+
+
+static UChar *
+s390_insn_div_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI op2;
+   UChar r1;
+   Bool signed_divide;
+
+   r1  = hregNumber(insn->variant.div.op1_hi);
+   op2 = insn->variant.div.op2;
+   signed_divide = insn->variant.div.signed_divide;
+
+   switch (op2.tag) {
+   case S390_OPND_REG: {
+      UInt r2 = hregNumber(op2.variant.reg);
+
+      switch (insn->size) {
+      case 4:
+         if (signed_divide)
+            return s390_emit_DR(buf, r1, r2);
+         else
+            return s390_emit_DLR(buf, r1, r2);
+
+      case 8:
+         if (signed_divide)
+            vpanic("s390_insn_div_emit");
+         else
+            return s390_emit_DLGR(buf, r1, r2);
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = op2.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      switch (insn->size) {
+      case 4:
+         switch (am->tag) {
+         case S390_AMODE_B12:
+         case S390_AMODE_BX12:
+            if (signed_divide)
+               return s390_emit_D(buf, r1, x, b, d);
+            else
+               return s390_emit_DL(buf, r1, x, b, DISP20(d));
+
+         case S390_AMODE_B20:
+         case S390_AMODE_BX20:
+            if (signed_divide) {
+               buf = s390_emit_LY(buf, R0, x, b, DISP20(d));
+               return s390_emit_DR(buf, r1, R0);
+            } else
+               return s390_emit_DL(buf, r1, x, b, DISP20(d));
+         }
+         goto fail;
+
+      case 8:
+         if (signed_divide)
+            vpanic("s390_insn_div_emit");
+         else
+            return s390_emit_DLG(buf, r1, x, b, DISP20(d));
+
+      default:
+         goto fail;
+      }
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = op2.variant.imm;
+
+      switch (insn->size) {
+      case 4:
+         buf = s390_emit_load_32imm(buf, R0, value);
+         if (signed_divide)
+            return s390_emit_DR(buf, r1, R0);
+         else
+            return s390_emit_DLR(buf, r1, R0);
+
+      case 8:
+         buf = s390_emit_load_64imm(buf, R0, value);
+         if (signed_divide)
+            vpanic("s390_insn_div_emit");
+         else
+            return s390_emit_DLGR(buf, r1, R0);
+
+      default:
+         goto fail;
+      }
+   }
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_div_emit");
+}
+
+
+static UChar *
+s390_insn_divs_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI op2;
+   UChar r1;
+
+   r1  = hregNumber(insn->variant.divs.rem);
+   op2 = insn->variant.divs.op2;
+
+   switch (op2.tag) {
+   case S390_OPND_REG: {
+      UInt r2 = hregNumber(op2.variant.reg);
+
+      return s390_emit_DSGR(buf, r1, r2);
+   }
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = op2.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      return s390_emit_DSG(buf, r1, x, b, DISP20(d));
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = op2.variant.imm;
+
+      buf = s390_emit_load_64imm(buf, R0, value);
+      return s390_emit_DSGR(buf, r1, R0);
+   }
+
+   default:
+      goto fail;
+   }
+
+ fail:
+   vpanic("s390_insn_divs_emit");
+}
+
+
+static UChar *
+s390_insn_clz_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI src;
+   UChar r1, r1p1, r2, *p;
+
+   r1   = hregNumber(insn->variant.clz.num_bits);
+   r1p1 = hregNumber(insn->variant.clz.clobber);
+
+   vassert((r1 & 0x1) == 0);
+   vassert(r1p1 == r1 + 1);
+
+   p = buf;
+   src = insn->variant.clz.src;
+
+   /* Get operand and move it to r2 */
+   switch (src.tag) {
+   case S390_OPND_REG:
+      r2 = hregNumber(src.variant.reg);
+      break;
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = src.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      p  = s390_emit_LG(p, R0, x, b, DISP20(d));
+      r2 = R0;
+      break;
+   }
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = src.variant.imm;
+
+      p  = s390_emit_load_64imm(p, R0, value);
+      r2 = R0;
+      break;
+   }
+
+   default:
+      goto fail;
+   }
+
+   /* Use FLOGR if you can */
+   if (s390_host_has_eimm) {
+      return s390_emit_FLOGR(p, r1, r2);
+   }
+
+   /*
+      r0 = r2;
+      r1 = 64;
+      while (r0 != 0) {
+        r1 -= 1;
+        r0 >>= 1;
+      }
+   */
+   p = s390_emit_LTGR(p, R0, r2);
+   p = s390_emit_LLILL(p, r1,  64);
+
+   p = s390_emit_BRC(p, S390_CC_E, (4 + 4 + 6 + 4 + 4)/ 2);  /* 4 bytes */
+   p = s390_emit_AGHI(p, r1, (UShort)-1);         /* r1  -= 1;  4 bytes */
+   p = s390_emit_SRLG(p, R0, R0, R0, DISP20(1));  /* r0 >>= 1;  6 bytes */
+   p = s390_emit_LTGR(p, R0, R0);                 /* set cc     4 bytes */
+   p = s390_emit_BRC(p, S390_CC_NE,               /*            4 bytes */
+                     (UShort)(-(4 + 6 + 4) / 2));
+   return p;
+
+ fail:
+   vpanic("s390_insn_clz_emit");
+}
+
+
+static UChar *
+s390_insn_branch_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_opnd_RMI dst;
+   s390_cc_t cond;
+   UInt       trc;
+   UChar *p, *ptmp = 0;  /* avoid compiler warnings */
+
+   cond = insn->variant.branch.cond;
+   dst  = insn->variant.branch.dst;
+
+   p = buf;
+   trc = 0;
+
+   if (cond != S390_CC_ALWAYS) {
+      /* So we have something like this
+         if (cond) goto X;
+         Y: ...
+         We convert this into
+         if (! cond) goto Y;        // BRC insn; 4 bytes
+         return_reg = X;
+         return to dispatcher
+         Y:
+      */
+      ptmp = p; /* 4 bytes (a BRC insn) to be filled in here */
+      p += 4;
+   }
+
+   /* If a non-boring, set guest-state-pointer appropriately. */
+
+   switch (insn->variant.branch.kind) {
+   case Ijk_ClientReq:   trc = VEX_TRC_JMP_CLIENTREQ;   break;
+   case Ijk_Sys_syscall: trc = VEX_TRC_JMP_SYS_SYSCALL; break;
+   case Ijk_Yield:       trc = VEX_TRC_JMP_YIELD;       break;
+   case Ijk_EmWarn:      trc = VEX_TRC_JMP_EMWARN;      break;
+   case Ijk_EmFail:      trc = VEX_TRC_JMP_EMFAIL;      break;
+   case Ijk_MapFail:     trc = VEX_TRC_JMP_MAPFAIL;     break;
+   case Ijk_NoDecode:    trc = VEX_TRC_JMP_NODECODE;    break;
+   case Ijk_TInval:      trc = VEX_TRC_JMP_TINVAL;      break;
+   case Ijk_NoRedir:     trc = VEX_TRC_JMP_NOREDIR;     break;
+   case Ijk_SigTRAP:     trc = VEX_TRC_JMP_SIGTRAP;     break;
+   case Ijk_Ret:         trc = 0; break;
+   case Ijk_Call:        trc = 0; break;
+   case Ijk_Boring:      trc = 0; break;
+      break;
+
+   default:
+      vpanic("s390_insn_branch_emit: unknown jump kind");
+   }
+
+   /* Get the destination address into the return register */
+   switch (dst.tag) {
+   case S390_OPND_REG:
+      p = s390_emit_LGR(p, S390_REGNO_RETURN_VALUE, hregNumber(dst.variant.reg));
+      break;
+
+   case S390_OPND_AMODE: {
+      const s390_amode *am = dst.variant.am;
+      UChar b = hregNumber(am->b);
+      UChar x = hregNumber(am->x);
+      Int   d = am->d;
+
+      p = s390_emit_LG(p, S390_REGNO_RETURN_VALUE, x, b, DISP20(d));
+      break;
+   }
+
+   case S390_OPND_IMMEDIATE:
+      p = s390_emit_load_64imm(p, S390_REGNO_RETURN_VALUE, dst.variant.imm);
+      break;
+
+   default:
+      goto fail;
+   }
+
+   if (trc != 0) {
+      /* Something special. Set guest-state pointer appropriately */
+      p = s390_emit_LGHI(p, S390_REGNO_GUEST_STATE_POINTER, trc);
+   } else {
+      /* Nothing special needs to be done for calls and returns. */
+   }
+
+   p = s390_emit_BCR(p, S390_CC_ALWAYS, S390_REGNO_LINK_REGISTER);
+
+   if (cond != S390_CC_ALWAYS) {
+      Int delta = p - ptmp;
+
+      delta >>= 1;  /* immediate constant is #half-words */
+      vassert(delta > 0 && delta < (1 << 16));
+      s390_emit_BRC(ptmp, s390_cc_invert(cond), delta);
+   }
+
+   return p;
+
+ fail:
+   vpanic("s390_insn_branch_emit");
+}
+
+
+static UChar *
+s390_insn_helper_call_emit(UChar *buf, const s390_insn *insn)
+{
+   s390_cc_t cond;
+   ULong target;
+   UChar *ptmp = buf;
+
+   cond = insn->variant.helper_call.cond;
+   target = insn->variant.helper_call.target;
+
+   if (cond != S390_CC_ALWAYS) {
+      /* So we have something like this
+         if (cond) call X;
+         Y: ...
+         We convert this into
+         if (! cond) goto Y;        // BRC opcode; 4 bytes
+         call X;
+         Y:
+      */
+      /* 4 bytes (a BRC insn) to be filled in here */
+      buf += 4;
+   }
+
+   /* Load the target address into a register, that
+      (a) is not used for passing parameters to the helper and
+      (b) can be clobbered by the callee
+      r1 looks like a good choice.
+      Also, need to arrange for the return address be put into the
+      link-register */
+   buf = s390_emit_load_64imm(buf, 1, target);
+
+   /* Stash away the client's FPC register because the helper might change it. */
+   buf = s390_emit_STFPC(buf, S390_REGNO_STACK_POINTER, S390_OFFSET_SAVED_FPC_C);
+
+   /* Before we can call the helper, we need to save the link register,
+      because the BASR will overwrite it. We cannot use a register for that.
+      (a) Volatile registers will be modified by the helper.
+      (b) For saved registers the client code assumes that they have not
+          changed after the function returns. So we cannot use it to store
+          the link register.
+      In the dispatcher, before calling the client code, we have arranged for
+      a location on the stack for this purpose. See dispatch-s390x-linux.S. */
+   buf = s390_emit_STG(buf, S390_REGNO_LINK_REGISTER, 0,        // save LR
+                       S390_REGNO_STACK_POINTER, S390_OFFSET_SAVED_LR, 0);
+   buf = s390_emit_BASR(buf, S390_REGNO_LINK_REGISTER, 1);      // call helper
+   buf = s390_emit_LG(buf, S390_REGNO_LINK_REGISTER, 0,         // restore LR
+                      S390_REGNO_STACK_POINTER, S390_OFFSET_SAVED_LR, 0);
+   buf = s390_emit_LFPC(buf, S390_REGNO_STACK_POINTER,          // restore FPC
+                        S390_OFFSET_SAVED_FPC_C);
+
+   if (cond != S390_CC_ALWAYS) {
+      Int delta = buf - ptmp;
+
+      delta >>= 1;  /* immediate constant is #half-words */
+      vassert(delta > 0 && delta < (1 << 16));
+      s390_emit_BRC(ptmp, s390_cc_invert(cond), delta);
+   }
+
+   return buf;
+}
+
+
+static UChar *
+s390_insn_cond_move_emit(UChar *buf, const s390_insn *insn)
+{
+   HReg dst;
+   s390_opnd_RMI src;
+   s390_cc_t cond;
+   UChar *p, *ptmp = 0;   /* avoid compiler warnings */
+
+   cond = insn->variant.cond_move.cond;
+   dst  = insn->variant.cond_move.dst;
+   src  = insn->variant.cond_move.src;
+
+   p = buf;
+
+   /* Branch (if cond fails) over move instrs */
+   if (cond != S390_CC_ALWAYS) {
+      /* Don't know how many bytes to jump over yet.
+         Make space for a BRC instruction (4 bytes) and fill in later. */
+      ptmp = p;   /*  to be filled in here */
+      p += 4;
+   }
+
+   // cond true: move src => dst
+
+   switch (src.tag) {
+   case S390_OPND_REG:
+      p = s390_emit_LGR(p, hregNumber(dst), hregNumber(src.variant.reg));
+      break;
+
+   case S390_OPND_AMODE:
+      p = s390_emit_load_mem(p, insn->size, hregNumber(dst), src.variant.am);
+      break;
+
+   case S390_OPND_IMMEDIATE: {
+      ULong value = src.variant.imm;
+      UInt  r = hregNumber(dst);
+
+      switch (insn->size) {
+      case 1:
+      case 2:
+         /* Load the immediate values as a 4 byte value. That does not hurt as
+            those extra bytes will not be looked at. Fall through .... */
+      case 4:
+         p = s390_emit_load_32imm(p, r, value);
+         break;
+
+      case 8:
+         p = s390_emit_load_64imm(p, r, value);
+         break;
+      }
+      break;
+   }
+
+   default:
+      goto fail;
+   }
+
+   if (cond != S390_CC_ALWAYS) {
+      Int delta = p - ptmp;
+
+      delta >>= 1;  /* immediate constant is #half-words */
+      vassert(delta > 0 && delta < (1 << 16));
+      s390_emit_BRC(ptmp, s390_cc_invert(cond), delta);
+   }
+
+   return p;
+
+ fail:
+   vpanic("s390_insn_cond_move_emit");
+}
+
+
+/* Little helper function to the rounding mode in the real FPC
+   register */
+static UChar *
+s390_set_fpc_rounding_mode(UChar *buf, s390_round_t rounding_mode)
+{
+   UChar bits;
+
+   /* Determine BFP rounding bits */
+   switch (rounding_mode) {
+   case S390_ROUND_NEAREST_EVEN: bits = 0; break;
+   case S390_ROUND_ZERO:         bits = 1; break;
+   case S390_ROUND_POSINF:       bits = 2; break;
+   case S390_ROUND_NEGINF:       bits = 3; break;
+   default: vpanic("invalid rounding mode\n");
+   }
+
+   /* Copy FPC from guest state to R0 and OR in the new rounding mode */
+   buf = s390_emit_L(buf, R0, 0, S390_REGNO_GUEST_STATE_POINTER,
+                     OFFSET_s390x_fpc);   // r0 = guest_fpc
+
+   buf = s390_emit_NILL(buf, R0, 0xFFFC); /* Clear out right-most 2 bits */
+   buf = s390_emit_OILL(buf, R0, bits);   /* OR in the new rounding mode */
+   buf = s390_emit_SFPC(buf, R0, 0);      /* Load FPC register from R0 */
+
+   return buf;
+}
+
+
+static UChar *
+s390_insn_bfp_triop_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1 = hregNumber(insn->variant.bfp_triop.dst);
+   UInt r2 = hregNumber(insn->variant.bfp_triop.op2);
+   UInt r3 = hregNumber(insn->variant.bfp_triop.op3);
+   s390_round_t rounding_mode = insn->variant.bfp_triop.rounding_mode;
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+   }
+
+   switch (insn->size) {
+   case 4:
+      switch (insn->variant.bfp_triop.tag) {
+      case S390_BFP_MADD:  buf = s390_emit_MAEBR(buf, r1, r3, r2); break;
+      case S390_BFP_MSUB:  buf = s390_emit_MSEBR(buf, r1, r3, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   case 8:
+      switch (insn->variant.bfp_triop.tag) {
+      case S390_BFP_MADD:  buf = s390_emit_MADBR(buf, r1, r3, r2); break;
+      case S390_BFP_MSUB:  buf = s390_emit_MSDBR(buf, r1, r3, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   default:  goto fail;
+   }
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      /* Restore FPC register from guest state */
+      buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+                           OFFSET_s390x_fpc);   // fpc = guest_fpc
+   }
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp_triop_emit");
+}
+
+
+static UChar *
+s390_insn_bfp_binop_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1 = hregNumber(insn->variant.bfp_binop.dst);
+   UInt r2 = hregNumber(insn->variant.bfp_binop.op2);
+   s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+   }
+
+   switch (insn->size) {
+   case 4:
+      switch (insn->variant.bfp_binop.tag) {
+      case S390_BFP_ADD:     buf = s390_emit_AEBR(buf, r1, r2);  break;
+      case S390_BFP_SUB:     buf = s390_emit_SEBR(buf, r1, r2);  break;
+      case S390_BFP_MUL:     buf = s390_emit_MEEBR(buf, r1, r2); break;
+      case S390_BFP_DIV:     buf = s390_emit_DEBR(buf, r1, r2);  break;
+      default:  goto fail;
+      }
+      break;
+
+   case 8:
+      switch (insn->variant.bfp_binop.tag) {
+      case S390_BFP_ADD:     buf = s390_emit_ADBR(buf, r1, r2); break;
+      case S390_BFP_SUB:     buf = s390_emit_SDBR(buf, r1, r2); break;
+      case S390_BFP_MUL:     buf = s390_emit_MDBR(buf, r1, r2); break;
+      case S390_BFP_DIV:     buf = s390_emit_DDBR(buf, r1, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   default:  goto fail;
+   }
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      /* Restore FPC register from guest state */
+      buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+                           OFFSET_s390x_fpc);
+   }
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp_binop_emit");
+}
+
+
+static UChar *
+s390_insn_bfp_unop_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt  r1 = hregNumber(insn->variant.bfp_unop.dst);
+   UInt  r2 = hregNumber(insn->variant.bfp_unop.op);
+   s390_round_t rounding_mode = insn->variant.bfp_unop.rounding_mode;
+   s390_round_t m3 = rounding_mode;
+
+   /* The "convert to fixed" instructions have a field for the rounding
+      mode and no FPC modification is necessary. So we handle them
+      upfront. */
+   switch (insn->variant.bfp_unop.tag) {
+   case S390_BFP_F32_TO_I32:  return s390_emit_CFEBR(buf, m3, r1, r2);
+   case S390_BFP_F64_TO_I32:  return s390_emit_CFDBR(buf, m3, r1, r2);
+   case S390_BFP_F32_TO_I64:  return s390_emit_CGEBR(buf, m3, r1, r2);
+   case S390_BFP_F64_TO_I64:  return s390_emit_CGDBR(buf, m3, r1, r2);
+   default: break;
+   }
+
+   /* For all other insns if a special rounding mode is requested,
+      we need to set the FPC first and restore it later. */
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+   }
+
+   switch (insn->variant.bfp_unop.tag) {
+   case S390_BFP_ABS:
+      switch (insn->size) {
+      case 4:   buf = s390_emit_LPEBR(buf, r1, r2); break;
+      case 8:   buf = s390_emit_LPDBR(buf, r1, r2); break;
+      case 16:  buf = s390_emit_LPXBR(buf, r1, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   case S390_BFP_NABS:
+      switch (insn->size) {
+      case 4:   buf = s390_emit_LNEBR(buf, r1, r2); break;
+      case 8:   buf = s390_emit_LNDBR(buf, r1, r2); break;
+      case 16:  buf = s390_emit_LNXBR(buf, r1, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   case S390_BFP_NEG:
+      switch (insn->size) {
+      case 4:   buf = s390_emit_LCEBR(buf, r1, r2); break;
+      case 8:   buf = s390_emit_LCDBR(buf, r1, r2); break;
+      case 16:  buf = s390_emit_LCXBR(buf, r1, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   case S390_BFP_SQRT:
+      switch (insn->size) {
+      case 4:   buf = s390_emit_SQEBR(buf, r1, r2); break;
+      case 8:   buf = s390_emit_SQDBR(buf, r1, r2); break;
+      case 16:  buf = s390_emit_SQXBR(buf, r1, r2); break;
+      default:  goto fail;
+      }
+      break;
+
+   case S390_BFP_I32_TO_F32:  buf = s390_emit_CEFBR(buf, r1, r2); break;
+   case S390_BFP_I32_TO_F64:  buf = s390_emit_CDFBR(buf, r1, r2); break;
+   case S390_BFP_I32_TO_F128: buf = s390_emit_CXFBR(buf, r1, r2); break;
+   case S390_BFP_I64_TO_F32:  buf = s390_emit_CEGBR(buf, r1, r2); break;
+   case S390_BFP_I64_TO_F64:  buf = s390_emit_CDGBR(buf, r1, r2); break;
+   case S390_BFP_I64_TO_F128: buf = s390_emit_CXGBR(buf, r1, r2); break;
+
+   case S390_BFP_F32_TO_F64:  buf = s390_emit_LDEBR(buf, r1, r2); break;
+   case S390_BFP_F32_TO_F128: buf = s390_emit_LXEBR(buf, r1, r2); break;
+   case S390_BFP_F64_TO_F32:  buf = s390_emit_LEDBR(buf, r1, r2); break;
+   case S390_BFP_F64_TO_F128: buf = s390_emit_LXDBR(buf, r1, r2); break;
+
+   default: goto fail;
+   }
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      /* Restore FPC register from guest state */
+      buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+                           OFFSET_s390x_fpc);   // fpc = guest_fpc
+   }
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp_unop_emit");
+}
+
+
+static UChar *
+s390_insn_bfp_compare_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt dst = hregNumber(insn->variant.bfp_compare.dst);
+   UInt r1  = hregNumber(insn->variant.bfp_compare.op1);
+   UInt r2  = hregNumber(insn->variant.bfp_compare.op2);
+
+   switch (insn->size) {
+   case 4:
+      buf = s390_emit_CEBR(buf, r1, r2);
+      break;
+
+   case 8:
+      buf = s390_emit_CDBR(buf, r1, r2);
+      break;
+
+   default:  goto fail;
+   }
+
+   return s390_emit_load_cc(buf, dst);  /* Load condition code into DST */
+
+ fail:
+   vpanic("s390_insn_bfp_compare_emit");
+}
+
+
+static UChar *
+s390_insn_bfp128_binop_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1_hi = hregNumber(insn->variant.bfp128_binop.dst_hi);
+   UInt r1_lo = hregNumber(insn->variant.bfp128_binop.dst_lo);
+   UInt r2_hi = hregNumber(insn->variant.bfp128_binop.op2_hi);
+   UInt r2_lo = hregNumber(insn->variant.bfp128_binop.op2_lo);
+   s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
+
+   /* Paranoia */
+   vassert(insn->size == 16);
+   vassert(r1_lo == r1_hi + 2);
+   vassert(r2_lo == r2_hi + 2);
+   vassert((r1_hi & 0x2) == 0);
+   vassert((r2_hi & 0x2) == 0);
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+   }
+
+   switch (insn->variant.bfp128_binop.tag) {
+   case S390_BFP_ADD:     buf = s390_emit_AXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_SUB:     buf = s390_emit_SXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_MUL:     buf = s390_emit_MXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_DIV:     buf = s390_emit_DXBR(buf, r1_hi, r2_hi); break;
+   default:  goto fail;
+   }
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      /* Restore FPC register from guest state */
+      buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+                           OFFSET_s390x_fpc);   // fpc = guest_fpc
+   }
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp128_binop_emit");
+}
+
+
+static UChar *
+s390_insn_bfp128_compare_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt dst   = hregNumber(insn->variant.bfp128_compare.dst);
+   UInt r1_hi = hregNumber(insn->variant.bfp128_compare.op1_hi);
+   UInt r1_lo = hregNumber(insn->variant.bfp128_compare.op1_lo);
+   UInt r2_hi = hregNumber(insn->variant.bfp128_compare.op2_hi);
+   UInt r2_lo = hregNumber(insn->variant.bfp128_compare.op2_lo);
+
+   /* Paranoia */
+   vassert(insn->size == 16);
+   vassert(r1_lo == r1_hi + 2);
+   vassert(r2_lo == r2_hi + 2);
+   vassert((r1_hi & 0x2) == 0);
+   vassert((r2_hi & 0x2) == 0);
+
+   buf = s390_emit_CXBR(buf, r1_hi, r2_hi);
+
+   /* Load condition code into DST */
+   return s390_emit_load_cc(buf, dst);
+}
+
+
+static UChar *
+s390_insn_bfp128_unop_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi);
+   UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo);
+   UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi);
+   UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo);
+   s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
+
+   /* Paranoia */
+   vassert(insn->size == 16);
+   vassert(r1_lo == r1_hi + 2);
+   vassert(r2_lo == r2_hi + 2);
+   vassert((r1_hi & 0x2) == 0);
+   vassert((r2_hi & 0x2) == 0);
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+   }
+
+   switch (insn->variant.bfp128_unop.tag) {
+   case S390_BFP_ABS:         buf = s390_emit_LPXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_NABS:        buf = s390_emit_LNXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_NEG:         buf = s390_emit_LCXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_SQRT:        buf = s390_emit_SQXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_F128_TO_F32: buf = s390_emit_LEXBR(buf, r1_hi, r2_hi); break;
+   case S390_BFP_F128_TO_F64: buf = s390_emit_LDXBR(buf, r1_hi, r2_hi); break;
+   default:  goto fail;
+   }
+
+   if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+      /* Restore FPC register from guest state */
+      buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+                           OFFSET_s390x_fpc);   // fpc = guest_fpc
+   }
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp128_unop_emit");
+}
+
+
+/* Conversion to 128-bit BFP does not require a rounding mode */
+static UChar *
+s390_insn_bfp128_convert_to_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi);
+   UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo);
+   UInt r2    = hregNumber(insn->variant.bfp128_unop.op_hi);
+
+   /* Paranoia */
+   vassert(insn->size == 16);
+   vassert(r1_lo == r1_hi + 2);
+   vassert((r1_hi & 0x2) == 0);
+
+   switch (insn->variant.bfp128_unop.tag) {
+   case S390_BFP_I32_TO_F128: buf = s390_emit_CXFBR(buf, r1_hi, r2); break;
+   case S390_BFP_I64_TO_F128: buf = s390_emit_CXGBR(buf, r1_hi, r2); break;
+   case S390_BFP_F32_TO_F128: buf = s390_emit_LXEBR(buf, r1_hi, r2); break;
+   case S390_BFP_F64_TO_F128: buf = s390_emit_LXDBR(buf, r1_hi, r2); break;
+   default:  goto fail;
+   }
+
+   return buf;
+
+ fail:
+   vpanic("s390_insn_bfp128_convert_to_emit");
+}
+
+
+static UChar *
+s390_insn_bfp128_convert_from_emit(UChar *buf, const s390_insn *insn)
+{
+   UInt r1    = hregNumber(insn->variant.bfp128_unop.dst_hi);
+   UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi);
+   UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo);
+   s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
+
+   /* Paranoia */
+   vassert(insn->size != 16);
+   vassert(r2_lo == r2_hi + 2);
+   vassert((r2_hi & 0x2) == 0);
+
+   /* The "convert to fixed" instructions have a field for the rounding
+      mode and no FPC modification is necessary. So we handle them
+      upfront. */
+   switch (insn->variant.bfp_unop.tag) {
+   case S390_BFP_F128_TO_I32: return s390_emit_CFXBR(buf, rounding_mode,
+                                                     r1, r2_hi);  break;
+   case S390_BFP_F128_TO_I64: return s390_emit_CGXBR(buf, rounding_mode,
+                                                     r1, r2_hi);  break;
+   default: break;
+   }
+
+   vpanic("s390_insn_bfp128_convert_from_emit");
+}
+
+
+static UChar *
+s390_insn_mfence_emit(UChar *buf, const s390_insn *insn)
+{
+   return s390_emit_BCR(buf, 0xF, 0x0);
+}
+
+
+Int
+emit_S390Instr(UChar *buf, Int nbuf, struct s390_insn *insn,
+               Bool mode64, void *dispatch)
+{
+   UChar *end;
+
+   switch (insn->tag) {
+   case S390_INSN_LOAD:
+      end = s390_insn_load_emit(buf, insn);
+      break;
+
+   case S390_INSN_STORE:
+      end = s390_insn_store_emit(buf, insn);
+      break;
+
+   case S390_INSN_MOVE:
+      end = s390_insn_move_emit(buf, insn);
+      break;
+
+   case S390_INSN_COND_MOVE:
+      end = s390_insn_cond_move_emit(buf, insn);
+      break;
+
+   case S390_INSN_LOAD_IMMEDIATE:
+      end = s390_insn_load_immediate_emit(buf, insn);
+      break;
+
+   case S390_INSN_ALU:
+      end = s390_insn_alu_emit(buf, insn);
+      break;
+
+   case S390_INSN_MUL:
+      end = s390_insn_mul_emit(buf, insn);
+      break;
+
+   case S390_INSN_DIV:
+      end = s390_insn_div_emit(buf, insn);
+      break;
+
+   case S390_INSN_DIVS:
+      end = s390_insn_divs_emit(buf, insn);
+      break;
+
+   case S390_INSN_CLZ:
+      end = s390_insn_clz_emit(buf, insn);
+      break;
+
+   case S390_INSN_UNOP:
+      end = s390_insn_unop_emit(buf, insn);
+      break;
+
+   case S390_INSN_TEST:
+      end = s390_insn_test_emit(buf, insn);
+      break;
+
+   case S390_INSN_CC2BOOL:
+      end = s390_insn_cc2bool_emit(buf, insn);
+      break;
+
+   case S390_INSN_CAS:
+      end = s390_insn_cas_emit(buf, insn);
+      break;
+
+   case S390_INSN_COMPARE:
+      end = s390_insn_compare_emit(buf, insn);
+      break;
+
+   case S390_INSN_BRANCH:
+      end = s390_insn_branch_emit(buf, insn);
+      break;
+
+   case S390_INSN_HELPER_CALL:
+      end = s390_insn_helper_call_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP_TRIOP:
+      end = s390_insn_bfp_triop_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP_BINOP:
+      end = s390_insn_bfp_binop_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP_UNOP:
+      end = s390_insn_bfp_unop_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP_COMPARE:
+      end = s390_insn_bfp_compare_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP128_BINOP:
+      end = s390_insn_bfp128_binop_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP128_COMPARE:
+      end = s390_insn_bfp128_compare_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP128_UNOP:
+      end = s390_insn_bfp128_unop_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_TO:
+      end = s390_insn_bfp128_convert_to_emit(buf, insn);
+      break;
+
+   case S390_INSN_BFP128_CONVERT_FROM:
+      end = s390_insn_bfp128_convert_from_emit(buf, insn);
+      break;
+
+   case S390_INSN_MFENCE:
+      end = s390_insn_mfence_emit(buf, insn);
+      break;
+
+   default:
+      vpanic("s390_insn_emit");
+   }
+
+   vassert(end - buf <= nbuf);
+
+   return end - buf;
+}
+
+
+/*---------------------------------------------------------------*/
+/*--- end                                    host_s390_defs.c ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.h
new file mode 100644
index 000000000..3067172e7
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_defs.h
@@ -0,0 +1,503 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                  host_s390_defs.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#ifndef __VEX_HOST_S390_DEFS_H
+#define __VEX_HOST_S390_DEFS_H
+
+#include "libvex_basictypes.h"            /* Bool */
+#include "libvex.h"                       /* VexArchInfo */
+#include "main_util.h"                    /* needed for host_generic_regs.h */
+#include "host_generic_regs.h"            /* HReg */
+
+/* --------- Registers --------- */
+const HChar *s390_hreg_as_string(HReg);
+
+void s390_hreg_get_allocable(Int *nregs, HReg **arr);
+
+/* Dedicated registers */
+HReg s390_hreg_guest_state_pointer(void);
+
+
+/* Given the index of a function argument, return the number of the
+   general purpose register in which it is being passed. Arguments are
+   counted 0, 1, 2, ... and they are being passed in r2, r3, r4, ... */
+static __inline__ unsigned
+s390_gprno_from_arg_index(unsigned ix)
+{
+   return ix + 2;
+}
+
+/* --------- Memory address expressions (amodes). --------- */
+
+/* These are the address modes:
+   (1) b12:  base register + 12-bit unsigned offset   (e.g. RS)
+   (2) b20:  base register + 20-bit signed offset     (e.g. RSY)
+   (3) bx12: base register + index register + 12-bit unsigned offset (e.g. RX)
+   (4) bx20: base register + index register + 20-bit signed offset   (e.g. RXY)
+   fixs390: There is also pc-relative stuff.. e.g. LARL
+*/
+
+typedef enum {
+   S390_AMODE_B12,
+   S390_AMODE_B20,
+   S390_AMODE_BX12,
+   S390_AMODE_BX20
+} s390_amode_t;
+
+typedef struct s390_amode {
+   s390_amode_t tag;
+   HReg b;
+   HReg x;       /* hregNumber(x) == 0  for S390_AMODE_B12/B20 kinds */
+   Int  d;       /* 12 bit unsigned or 20 bit signed */
+} s390_amode;
+
+
+s390_amode *s390_amode_b12(Int d, HReg b);
+s390_amode *s390_amode_b20(Int d, HReg b);
+s390_amode *s390_amode_bx12(Int d, HReg b, HReg x);
+s390_amode *s390_amode_bx20(Int d, HReg b, HReg x);
+s390_amode *s390_amode_for_guest_state(Int d);
+Bool        s390_amode_is_sane(const s390_amode *);
+void        s390_amode_get_reg_usage(HRegUsage *, const s390_amode *);
+void        s390_amode_map_regs(HRegRemap *, s390_amode *);
+
+const HChar *s390_amode_as_string(const s390_amode *);
+
+struct s390_insn;
+struct s390_amode;
+/* ------------- 2nd (right) operand of binary operation ---------------- */
+
+typedef enum {
+   S390_OPND_REG,
+   S390_OPND_IMMEDIATE,
+   S390_OPND_AMODE
+} s390_opnd_t;
+
+
+/* Naming convention for operand locations:
+   R    - GPR
+   I    - immediate value
+   M    - memory (any Amode may be used)
+*/
+
+/* An operand that is either in a GPR or is addressable via a BX20 amode */
+typedef struct {
+   s390_opnd_t tag;
+   union {
+      HReg        reg;
+      s390_amode *am;
+      ULong       imm;
+   } variant;
+} s390_opnd_RMI;
+
+
+/* The kind of instructions */
+typedef enum {
+   S390_INSN_LOAD,   /* load register from memory */
+   S390_INSN_STORE,  /* store register to memory */
+   S390_INSN_MOVE,   /* from register to register */
+   S390_INSN_COND_MOVE, /* conditonal "move" to register */
+   S390_INSN_LOAD_IMMEDIATE,
+   S390_INSN_ALU,
+   S390_INSN_MUL,    /* n-bit operands; 2n-bit result */
+   S390_INSN_DIV,    /* 2n-bit dividend; n-bit divisor; n-bit quot/rem */
+   S390_INSN_DIVS,   /* n-bit dividend; n-bit divisor; n-bit quot/rem */
+   S390_INSN_CLZ,    /* count left-most zeroes */
+   S390_INSN_UNOP,
+   S390_INSN_TEST,   /* test operand and set cc */
+   S390_INSN_CC2BOOL,/* convert condition code to 0/1 */
+   S390_INSN_COMPARE,
+   S390_INSN_BRANCH, /* un/conditional goto */
+   S390_INSN_HELPER_CALL,
+   S390_INSN_CAS,    /* compare and swap */
+   S390_INSN_BFP_BINOP, /* Binary floating point 32-bit / 64-bit */
+   S390_INSN_BFP_UNOP,
+   S390_INSN_BFP_TRIOP,
+   S390_INSN_BFP_COMPARE,
+   S390_INSN_BFP128_BINOP, /* Binary floating point 128-bit */
+   S390_INSN_BFP128_UNOP,
+   S390_INSN_BFP128_COMPARE,
+   S390_INSN_BFP128_CONVERT_TO,
+   S390_INSN_BFP128_CONVERT_FROM,
+   S390_INSN_MFENCE
+} s390_insn_tag;
+
+
+/* The kind of ALU instructions */
+typedef enum {
+   S390_ALU_ADD,
+   S390_ALU_SUB,
+   S390_ALU_MUL,   /* n-bit operands; result is lower n-bit of product */
+   S390_ALU_AND,
+   S390_ALU_OR,
+   S390_ALU_XOR,
+   S390_ALU_LSH,
+   S390_ALU_RSH,
+   S390_ALU_RSHA   /* arithmetic */
+} s390_alu_t;
+
+
+/* The kind of unary integer operations */
+typedef enum {
+   S390_ZERO_EXTEND_8,
+   S390_ZERO_EXTEND_16,
+   S390_ZERO_EXTEND_32,
+   S390_SIGN_EXTEND_8,
+   S390_SIGN_EXTEND_16,
+   S390_SIGN_EXTEND_32,
+   S390_NEGATE
+} s390_unop_t;
+
+/* The kind of ternary BFP operations */
+typedef enum {
+   S390_BFP_MADD,
+   S390_BFP_MSUB,
+} s390_bfp_triop_t;
+
+/* The kind of binary BFP operations */
+typedef enum {
+   S390_BFP_ADD,
+   S390_BFP_SUB,
+   S390_BFP_MUL,
+   S390_BFP_DIV
+} s390_bfp_binop_t;
+
+
+/* The kind of unary BFP operations */
+typedef enum {
+   S390_BFP_ABS,
+   S390_BFP_NABS,
+   S390_BFP_NEG,
+   S390_BFP_SQRT,
+   S390_BFP_I32_TO_F32,
+   S390_BFP_I32_TO_F64,
+   S390_BFP_I32_TO_F128,
+   S390_BFP_I64_TO_F32,
+   S390_BFP_I64_TO_F64,
+   S390_BFP_I64_TO_F128,
+   S390_BFP_F32_TO_I32,
+   S390_BFP_F32_TO_I64,
+   S390_BFP_F32_TO_F64,
+   S390_BFP_F32_TO_F128,
+   S390_BFP_F64_TO_I32,
+   S390_BFP_F64_TO_I64,
+   S390_BFP_F64_TO_F32,
+   S390_BFP_F64_TO_F128,
+   S390_BFP_F128_TO_I32,
+   S390_BFP_F128_TO_I64,
+   S390_BFP_F128_TO_F32,
+   S390_BFP_F128_TO_F64
+} s390_bfp_unop_t;
+
+
+/* Condition code. The encoding of the enumerators matches the value of
+   the mask field in the various branch opcodes. */
+typedef enum {
+   S390_CC_NEVER=  0,
+   S390_CC_OVFL =  1,   /* overflow */
+   S390_CC_H    =  2,   /* A > B ; high */
+   S390_CC_NLE  =  3,   /* not low or equal */
+   S390_CC_L    =  4,   /* A < B ; low */
+   S390_CC_NHE  =  5,   /* not high or equal */
+   S390_CC_LH   =  6,   /* low or high */
+   S390_CC_NE   =  7,   /* A != B ; not zero */
+   S390_CC_E    =  8,   /* A == B ; zero */
+   S390_CC_NLH  =  9,   /* not low or high */
+   S390_CC_HE   = 10,   /* A >= B ; high or equal*/
+   S390_CC_NL   = 11,   /* not low */
+   S390_CC_LE   = 12,   /* A <= B ; low or equal */
+   S390_CC_NH   = 13,   /* not high */
+   S390_CC_NO   = 14,   /* not overflow */
+   S390_CC_ALWAYS = 15
+} s390_cc_t;
+
+
+/* Rounding mode as it is encoded in the m3/m4 fields of certain
+   instructions (e.g. CFEBR) */
+typedef enum {
+/* S390_ROUND_NEAREST_AWAY = 1, not supported */
+   S390_ROUND_NEAREST_EVEN = 4,
+   S390_ROUND_ZERO         = 5,
+   S390_ROUND_POSINF       = 6,
+   S390_ROUND_NEGINF       = 7
+} s390_round_t;
+
+
+/* Invert the condition code */
+static __inline__ s390_cc_t
+s390_cc_invert(s390_cc_t cond)
+{
+   return S390_CC_ALWAYS - cond;
+}
+
+
+typedef struct s390_insn {
+   s390_insn_tag tag;
+   UChar size;            /* size of the result in bytes */
+   union {
+      struct {
+         HReg        dst;
+         s390_amode *src;
+      } load;
+      struct {
+         s390_amode *dst;
+         HReg        src;
+      } store;
+      struct {
+         HReg        dst;
+         HReg        src;
+      } move;
+      struct {
+         s390_cc_t     cond;
+         HReg          dst;
+         s390_opnd_RMI src;
+      } cond_move;
+      struct {
+         HReg        dst;
+         ULong       value;  /* not sign extended */
+      } load_immediate;
+      /* add, and, or, xor */
+      struct {
+         s390_alu_t    tag;
+         HReg          dst; /* op1 */
+         s390_opnd_RMI op2;
+      } alu;
+      struct {
+         Bool          signed_multiply;
+         HReg          dst_hi;  /*           r10 */
+         HReg          dst_lo;  /* also op1  r11 */
+         s390_opnd_RMI op2;
+      } mul;
+      struct {
+         Bool          signed_divide;
+         HReg          op1_hi;  /* also remainder   r10 */
+         HReg          op1_lo;  /* also quotient    r11 */
+         s390_opnd_RMI op2;
+      } div;
+      struct {
+         HReg          rem; /* remainder      r10 */
+         HReg          op1; /* also quotient  r11 */
+         s390_opnd_RMI op2;
+      } divs;
+      struct {
+         HReg          num_bits; /* number of leftmost '0' bits  r10 */
+         HReg          clobber;  /* unspecified                  r11 */
+         s390_opnd_RMI src;
+      } clz;
+      struct {
+         s390_unop_t   tag;
+         HReg          dst;
+         s390_opnd_RMI src;
+      } unop;
+      struct {
+         Bool          signed_comparison;
+         HReg          src1;
+         s390_opnd_RMI src2;
+      } compare;
+      struct {
+         HReg          dst;  /* condition code in s390 encoding */
+         HReg          op1;
+         HReg          op2;
+      } bfp_compare;
+      struct {
+         s390_opnd_RMI src;
+      } test;
+      /* Convert the condition code to a boolean value. */
+      struct {
+         s390_cc_t cond;
+         HReg      dst;
+      } cc2bool;
+      struct {
+         HReg        op1;
+         s390_amode *op2;
+         HReg        op3;
+         HReg        old_mem;
+      } cas;
+      struct {
+         IRJumpKind    kind;
+         s390_cc_t     cond;
+         s390_opnd_RMI dst;
+      } branch;
+      /* Pseudo-insn for representing a helper call.
+         TARGET is the absolute address of the helper function
+         NUM_ARGS says how many arguments are being passed.
+         All arguments have integer type and are being passed according to ABI,
+         i.e. in registers r2, r3, r4, r5, and r6, with argument #0 being
+         passed in r2 and so forth. */
+      struct {
+         s390_cc_t cond;
+         Addr64    target;
+         UInt      num_args;
+         HChar    *name;      /* callee's name (for debugging) */
+      } helper_call;
+      struct {
+         s390_bfp_triop_t tag;
+         s390_round_t     rounding_mode;
+         HReg             dst; /* first operand */
+         HReg             op2; /* second operand */
+         HReg             op3; /* third operand */
+      } bfp_triop;
+      struct {
+         s390_bfp_binop_t tag;
+         s390_round_t     rounding_mode;
+         HReg             dst; /* left operand */
+         HReg             op2; /* right operand */
+      } bfp_binop;
+      struct {
+         s390_bfp_unop_t tag;
+         s390_round_t    rounding_mode;
+         HReg            dst;  /* result */
+         HReg            op;   /* operand */
+      } bfp_unop;
+      struct {
+         s390_bfp_binop_t tag;
+         s390_round_t     rounding_mode;
+         HReg             dst_hi; /* left operand; high part */
+         HReg             dst_lo; /* left operand; low part */
+         HReg             op2_hi; /* right operand; high part */
+         HReg             op2_lo; /* right operand; low part */
+      } bfp128_binop;
+      /* This variant is also used by the BFP128_CONVERT_TO and
+         BFP128_CONVERT_FROM insns. */
+      struct {
+         s390_bfp_unop_t  tag;
+         s390_round_t     rounding_mode;
+         HReg             dst_hi; /* result; high part */
+         HReg             dst_lo; /* result; low part */
+         HReg             op_hi;  /* operand; high part */
+         HReg             op_lo;  /* operand; low part */
+      } bfp128_unop;
+      struct {
+         HReg             dst;    /* condition code in s390 encoding */
+         HReg             op1_hi; /* left operand; high part */
+         HReg             op1_lo; /* left operand; low part */
+         HReg             op2_hi; /* right operand; high part */
+         HReg             op2_lo; /* right operand; low part */
+      } bfp128_compare;
+   } variant;
+} s390_insn;
+
+s390_insn *s390_insn_load(UChar size, HReg dst, s390_amode *src);
+s390_insn *s390_insn_store(UChar size, s390_amode *dst, HReg src);
+s390_insn *s390_insn_move(UChar size, HReg dst, HReg src);
+s390_insn *s390_insn_cond_move(UChar size, s390_cc_t cond, HReg dst,
+                               s390_opnd_RMI src);
+s390_insn *s390_insn_load_immediate(UChar size, HReg dst, ULong val);
+s390_insn *s390_insn_alu(UChar size, s390_alu_t, HReg dst,
+                         s390_opnd_RMI op2);
+s390_insn *s390_insn_mul(UChar size, HReg dst_hi, HReg dst_lo,
+                         s390_opnd_RMI op2, Bool signed_multiply);
+s390_insn *s390_insn_div(UChar size, HReg op1_hi, HReg op1_lo,
+                         s390_opnd_RMI op2, Bool signed_divide);
+s390_insn *s390_insn_divs(UChar size, HReg rem, HReg op1, s390_opnd_RMI op2);
+s390_insn *s390_insn_clz(UChar size, HReg num_bits, HReg clobber,
+                         s390_opnd_RMI op);
+s390_insn *s390_insn_cas(UChar size, HReg op1, s390_amode *op2, HReg op3,
+                         HReg old);
+s390_insn *s390_insn_unop(UChar size, s390_unop_t tag, HReg dst,
+                          s390_opnd_RMI opnd);
+s390_insn *s390_insn_cc2bool(HReg dst, s390_cc_t src);
+s390_insn *s390_insn_test(UChar size, s390_opnd_RMI src);
+s390_insn *s390_insn_compare(UChar size, HReg dst, s390_opnd_RMI opnd,
+                             Bool signed_comparison);
+s390_insn *s390_insn_branch(IRJumpKind jk, s390_cc_t cond, s390_opnd_RMI dst);
+s390_insn *s390_insn_helper_call(s390_cc_t cond, Addr64 target, UInt num_args,
+                                 HChar *name);
+s390_insn *s390_insn_bfp_triop(UChar size, s390_bfp_triop_t, HReg dst, HReg op2,
+                               HReg op3, s390_round_t);
+s390_insn *s390_insn_bfp_binop(UChar size, s390_bfp_binop_t, HReg dst, HReg op2,
+                               s390_round_t);
+s390_insn *s390_insn_bfp_unop(UChar size, s390_bfp_unop_t tag, HReg dst,
+                              HReg op, s390_round_t);
+s390_insn *s390_insn_bfp_compare(UChar size, HReg dst, HReg op1, HReg op2);
+s390_insn *s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t, HReg dst_hi,
+                                  HReg dst_lo, HReg op2_hi, HReg op2_lo,
+                                  s390_round_t);
+s390_insn *s390_insn_bfp128_unop(UChar size, s390_bfp_unop_t, HReg dst_hi,
+                                 HReg dst_lo, HReg op_hi, HReg op_lo,
+                                 s390_round_t);
+s390_insn *s390_insn_bfp128_compare(UChar size, HReg dst, HReg op1_hi,
+                                    HReg op1_lo, HReg op2_hi, HReg op2_lo);
+s390_insn *s390_insn_bfp128_convert_to(UChar size, s390_bfp_unop_t,
+                                       HReg dst_hi, HReg dst_lo, HReg op);
+s390_insn *s390_insn_bfp128_convert_from(UChar size, s390_bfp_unop_t,
+                                         HReg dst, HReg op_hi, HReg op_lo,
+                                         s390_round_t);
+s390_insn *s390_insn_mfence(void);
+void       s390_insn_map_regs(HRegRemap *, s390_insn *);
+Bool       s390_insn_is_reg_reg_move(const s390_insn *, HReg *, HReg *);
+void       s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *);
+UInt       s390_insn_emit(UChar *buf, Int nbuf, const struct s390_insn *insn,
+                          void *dispatch);
+
+const HChar *s390_insn_as_string(const s390_insn *);
+
+/*--------------------------------------------------------*/
+/* --- Interface exposed to VEX                       --- */
+/*--------------------------------------------------------*/
+
+void ppS390AMode(struct s390_amode *);
+void ppS390Instr(struct s390_insn *, Bool mode64);
+void ppHRegS390(HReg);
+
+/* Some functions that insulate the register allocator from details
+   of the underlying instruction set. */
+void  getRegUsage_S390Instr( HRegUsage *, struct s390_insn *, Bool );
+void  mapRegs_S390Instr    ( HRegRemap *, struct s390_insn *, Bool );
+Bool  isMove_S390Instr     ( struct s390_insn *, HReg *, HReg * );
+Int   emit_S390Instr       ( UChar *, Int, struct s390_insn *, Bool, void * );
+void  getAllocableRegs_S390( Int *, HReg **, Bool );
+void  genSpill_S390        ( HInstr **, HInstr **, HReg , Int , Bool );
+void  genReload_S390       ( HInstr **, HInstr **, HReg , Int , Bool );
+struct s390_insn *directReload_S390 ( struct s390_insn *, HReg, Short );
+HInstrArray *iselSB_S390   ( IRSB *, VexArch, VexArchInfo *, VexAbiInfo * );
+
+/* KLUDGE: See detailled comment in host_s390_defs.c. */
+extern const VexArchInfo *s390_archinfo_host;
+
+/* Convenience macros to test installed facilities */
+#define s390_host_has_ldisp \
+                      (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_LDISP))
+#define s390_host_has_eimm \
+                      (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_EIMM))
+#define s390_host_has_gie \
+                      (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_GIE))
+#define s390_host_has_dfp \
+                      (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_DFP))
+#define s390_host_has_fgx \
+                      (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_FGX))
+
+#endif /* ndef __VEX_HOST_S390_DEFS_H */
+
+/*---------------------------------------------------------------*/
+/*--- end                                    host_s390_defs.h ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.c
new file mode 100644
index 000000000..35f101011
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.c
@@ -0,0 +1,463 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                host_s390_disasm.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#include 
+#include "libvex_basictypes.h"
+#include "main_util.h"        // vassert
+#include "main_globals.h"     // vex_traceflags
+#include "host_s390_disasm.h"
+
+/* The format that is used to write out a mnemonic.
+   These should be declared as 'const HChar' but vex_printf needs
+   to be changed for that first */
+static HChar s390_mnm_fmt[] = "%-8s";
+
+
+/* Return the name of a general purpose register for dis-assembly purposes. */
+static const HChar *
+gpr_operand(UInt archreg)
+{
+   static const HChar names[16][5] = {
+      "%r0", "%r1", "%r2", "%r3",
+      "%r4", "%r5", "%r6", "%r7",
+      "%r8", "%r9", "%r10", "%r11",
+      "%r12", "%r13", "%r14", "%r15",
+   };
+
+   vassert(archreg < 16);
+
+   return names[archreg];
+}
+
+
+/* Return the name of a floating point register for dis-assembly purposes. */
+static const HChar *
+fpr_operand(UInt archreg)
+{
+   static const HChar names[16][5] = {
+      "%f0", "%f1", "%f2", "%f3",
+      "%f4", "%f5", "%f6", "%f7",
+      "%f8", "%f9", "%f10", "%f11",
+      "%f12", "%f13", "%f14", "%f15",
+   };
+
+   vassert(archreg < 16);
+
+   return names[archreg];
+}
+
+
+/* Return the name of an access register for dis-assembly purposes. */
+static const HChar *
+ar_operand(UInt archreg)
+{
+   static const HChar names[16][5] = {
+      "%a0", "%a1", "%a2", "%a3",
+      "%a4", "%a5", "%a6", "%a7",
+      "%a8", "%a9", "%a10", "%a11",
+      "%a12", "%a13", "%a14", "%a15",
+   };
+
+   vassert(archreg < 16);
+
+   return names[archreg];
+}
+
+
+/* Build and return the extended mnemonic for the compare and branch
+   opcodes as introduced by z10. See also the opcodes in file
+   opcodes/s390-opc.txt (from binutils) that have a '$' in their name. */
+static const HChar *
+cab_operand(const HChar *base, UInt mask)
+{
+   HChar *to;
+   const HChar *from;
+
+   static HChar buf[10];   /* Maximum is 6 + 2 */
+
+   static HChar *suffix[] = {
+      "", "h", "l", "ne", "e", "nl", "nh", ""
+   };
+
+   /* strcpy(buf, from); */
+   for (from = base, to = buf; *from; ++from, ++to) {
+      *to = *from;
+   }
+   /* strcat(buf, suffix); */
+   for (from = suffix[mask >> 1]; *from; ++from, ++to) {
+      *to = *from;
+   }
+   *to = '\0';
+
+   return buf;
+}
+
+/* Common function used to construct a mnemonic based on a condition code
+   mask. */
+static const HChar *
+construct_mnemonic(const HChar *prefix, const HChar *suffix, UInt mask)
+{
+   HChar *to;
+   const HChar *from;
+
+   static HChar buf[10];
+
+   static HChar mask_id[16][4] = {
+      "", /* 0 -> unused */
+      "o", "h", "nle", "l", "nhe", "lh", "ne",
+      "e", "nlh", "he", "nl", "le", "nh", "no",
+      ""  /* 15 -> unused */
+   };
+
+   /* Guard against buffer overflow */
+   vassert(vex_strlen(prefix) + vex_strlen(suffix) + sizeof mask_id[0] <= sizeof buf);
+
+   /* strcpy(buf, prefix); */
+   for (from = prefix, to = buf; *from; ++from, ++to) {
+      *to = *from;
+   }
+   /* strcat(buf, mask_id); */
+   for (from = mask_id[mask]; *from; ++from, ++to) {
+      *to = *from;
+   }
+   /* strcat(buf, suffix); */
+   for (from = suffix; *from; ++from, ++to) {
+      *to = *from;
+   }
+   *to = '\0';
+
+   return buf;
+}
+
+
+/* Return the special mnemonic for the BCR opcode */
+static const HChar *
+bcr_operand(UInt m1)
+{
+   if (m1 ==  0) return "nopr";
+   if (m1 == 15) return "br";
+
+   return construct_mnemonic("b", "r", m1);
+}
+
+
+/* Return the special mnemonic for the BC opcode */
+static const HChar *
+bc_operand(UInt m1)
+{
+   if (m1 ==  0) return "nop";
+   if (m1 == 15) return "b";
+
+   return construct_mnemonic("b", "", m1);
+}
+
+
+/* Return the special mnemonic for the BRC opcode */
+static const HChar *
+brc_operand(UInt m1)
+{
+   if (m1 == 0)  return "brc";
+   if (m1 == 15) return "j";
+
+   return construct_mnemonic("j", "", m1);
+}
+
+
+/* Return the special mnemonic for the BRCL opcode */
+static const HChar *
+brcl_operand(UInt m1)
+{
+   if (m1 == 0)  return "brcl";
+   if (m1 == 15) return "jg";
+
+   return construct_mnemonic("jg", "", m1);
+}
+
+
+/* Return the special mnemonic for a conditional load/store  opcode */
+static const HChar *
+cls_operand(Int kind, UInt mask)
+{
+   HChar *prefix;
+
+   switch (kind) {
+   case S390_XMNM_LOCR:   prefix = "locr";  break;
+   case S390_XMNM_LOCGR:  prefix = "locgr"; break;
+   case S390_XMNM_LOC:    prefix = "loc";   break;
+   case S390_XMNM_LOCG:   prefix = "locg";  break;
+   case S390_XMNM_STOC:   prefix = "stoc";  break;
+   case S390_XMNM_STOCG:  prefix = "stocg"; break;
+   default:
+      vpanic("cls_operand");
+   }
+
+   return construct_mnemonic(prefix, "", mask);
+}
+
+
+/* An operand with a base register, an index register, and a displacement.
+   If the displacement is signed, the rightmost 20 bit of D need to be
+   sign extended */
+static HChar *
+dxb_operand(HChar *p, UInt d, UInt x, UInt b, Bool displacement_is_signed)
+{
+   if (displacement_is_signed) {
+      Int displ = ((Int)d << 12) >> 12;  /* sign extend */
+
+      p += vex_sprintf(p, "%d", displ);
+   } else {
+      p += vex_sprintf(p, "%u", d);
+   }
+   if (x != 0) {
+      p += vex_sprintf(p, "(%s", gpr_operand(x));
+      if (b != 0) {
+         p += vex_sprintf(p, ",%s", gpr_operand(b));
+      }
+      p += vex_sprintf(p, ")");
+   } else {
+      if (b != 0) {
+         p += vex_sprintf(p, "(%s)", gpr_operand(b));
+      }
+   }
+
+   return p;
+}
+
+
+/* An operand with base register, unsigned length, and a 12-bit
+   unsigned displacement */
+static HChar *
+udlb_operand(HChar *p, UInt d, UInt length, UInt b)
+{
+   p += vex_sprintf(p, "%u", d);
+   p += vex_sprintf(p, "(%u", length + 1);  // actual length is +1
+   if (b != 0) {
+      p += vex_sprintf(p, ",%s", gpr_operand(b));
+   }
+   p += vex_sprintf(p, ")");
+
+   return p;
+}
+
+
+/* The first argument is the command that says how to write the disassembled
+   insn. It is understood that the mnemonic comes first and that arguments
+   are separated by a ','. The command holds the arguments. Each argument is
+   encoded using a 4-bit S390_ARG_xyz value. The first argument is placed
+   in the least significant bits of the command and so on. There are at most
+   5 arguments in an insn and a sentinel (S390_ARG_DONE) is needed to identify
+   the end of the argument list. 6 * 4 = 24 bits are required for the
+   command. */
+void
+s390_disasm(UInt command, ...)
+{
+   va_list  args;
+   unsigned argkind;
+   HChar buf[128];  /* holds the disassembled insn */
+   HChar *p;
+   HChar separator;
+   Int mask_suffix = -1;
+
+   va_start(args, command);
+
+   p = buf;
+   separator = 0;
+
+   while (42) {
+      argkind = command & 0xF;
+      command >>= 4;
+
+      if (argkind == S390_ARG_DONE) goto done;
+
+      if (argkind == S390_ARG_CABM) separator = 0;  /* optional */
+
+      /* Write out the separator */
+      if (separator) *p++ = separator;
+
+      /* argument */
+      switch (argkind) {
+      case S390_ARG_MNM:
+         p += vex_sprintf(p, s390_mnm_fmt, va_arg(args, HChar *));
+         separator = ' ';
+         continue;
+
+      case S390_ARG_XMNM: {
+         UInt mask, kind;
+         const HChar *mnm;
+
+         kind = va_arg(args, UInt);
+
+         separator = ' ';
+         switch (kind) {
+         case S390_XMNM_BC:
+         case S390_XMNM_BCR:
+            mask = va_arg(args, UInt);
+            mnm = kind == S390_XMNM_BCR ? bcr_operand(mask) : bc_operand(mask);
+            p  += vex_sprintf(p, s390_mnm_fmt, mnm);
+            /* mask == 0 is a NOP and has no argument */
+            if (mask == 0) goto done;
+            break;
+
+         case S390_XMNM_BRC:
+         case S390_XMNM_BRCL:
+            mask = va_arg(args, UInt);
+            mnm = kind == S390_XMNM_BRC ? brc_operand(mask) : brcl_operand(mask);
+            p  += vex_sprintf(p, s390_mnm_fmt, mnm);
+
+            /* mask == 0 has no special mnemonic */
+            if (mask == 0) {
+               p += vex_sprintf(p, " 0");
+               separator = ',';
+            }
+            break;
+
+         case S390_XMNM_CAB:
+            mnm  = va_arg(args, HChar *);
+            mask = va_arg(args, UInt);
+            p  += vex_sprintf(p, s390_mnm_fmt, cab_operand(mnm, mask));
+            break;
+
+         case S390_XMNM_LOCR:
+         case S390_XMNM_LOCGR:
+         case S390_XMNM_LOC:
+         case S390_XMNM_LOCG:
+         case S390_XMNM_STOC:
+         case S390_XMNM_STOCG:
+            mask = va_arg(args, UInt);
+            mnm = cls_operand(kind, mask);
+            p  += vex_sprintf(p, s390_mnm_fmt, mnm);
+            /* There are no special opcodes when mask == 0 or 15. In that case
+               the integer mask is appended as the final operand */
+            if (mask == 0 || mask == 15) mask_suffix = mask;
+            break;
+         }
+      }
+      continue;
+
+      case S390_ARG_GPR:
+         p += vex_sprintf(p, "%s", gpr_operand(va_arg(args, UInt)));
+         break;
+
+      case S390_ARG_FPR:
+         p += vex_sprintf(p, "%s", fpr_operand(va_arg(args, UInt)));
+         break;
+
+      case S390_ARG_AR:
+         p += vex_sprintf(p, "%s", ar_operand(va_arg(args, UInt)));
+         break;
+
+      case S390_ARG_UINT:
+         p += vex_sprintf(p, "%u", va_arg(args, UInt));
+         break;
+
+      case S390_ARG_INT:
+         p += vex_sprintf(p, "%d", (Int)(va_arg(args, UInt)));
+         break;
+
+      case S390_ARG_PCREL: {
+         Int offset = (Int)(va_arg(args, UInt));
+
+         /* Convert # halfwords to # bytes */
+         offset <<= 1;
+
+         if (offset < 0) {
+            p += vex_sprintf(p, ".%d", offset);
+         } else {
+            p += vex_sprintf(p, ".+%u", offset);
+         }
+         break;
+      }
+
+      case S390_ARG_SDXB: {
+         UInt dh, dl, x, b;
+
+         dh = va_arg(args, UInt);
+         dl = va_arg(args, UInt);
+         x  = va_arg(args, UInt);
+         b  = va_arg(args, UInt);
+
+         p = dxb_operand(p, (dh << 12) | dl, x, b, 1 /* signed_displacement */);
+         break;
+      }
+
+      case S390_ARG_UDXB: {
+         UInt d, x, b;
+
+         d = va_arg(args, UInt);
+         x = va_arg(args, UInt);
+         b = va_arg(args, UInt);
+
+         p = dxb_operand(p, d, x, b, 0 /* signed_displacement */);
+         break;
+      }
+
+      case S390_ARG_UDLB: {
+         UInt d, l, b;
+
+         d = va_arg(args, UInt);
+         l = va_arg(args, UInt);
+         b = va_arg(args, UInt);
+
+         p = udlb_operand(p, d, l, b);
+         break;
+      }
+
+      case S390_ARG_CABM: {
+         UInt mask;
+
+         mask = va_arg(args, UInt) & 0xE;
+         if (mask == 0 || mask == 14) {
+            p += vex_sprintf(p, ",%u", mask);
+         }
+         break;
+      }
+      }
+
+      separator = ',';
+   }
+
+ done:
+   va_end(args);
+
+   if (mask_suffix != -1)
+      p += vex_sprintf(p, ",%d", mask_suffix);
+   *p = '\0';
+
+   vassert(p < buf + sizeof buf);  /* detect buffer overwrite */
+
+   /* Finally, write out the disassembled insn */
+   vex_printf("%s\n", buf);
+}
+
+/*---------------------------------------------------------------*/
+/*--- end                                  host_s390_disasm.c ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.h
new file mode 100644
index 000000000..c01aa34b0
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_disasm.h
@@ -0,0 +1,93 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                host_s390_disasm.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __VEX_HOST_S390_DISASM_H
+#define __VEX_HOST_S390_DISASM_H
+
+#include "libvex_basictypes.h"
+
+/* Macros to encode a command for s390_disasm. */
+#undef  P
+#define P(a) (S390_ARG_##a)
+#undef  ENC1
+#define ENC1(a) ((P(DONE) << 4) | P(a))
+#undef  ENC2
+#define ENC2(a,b) ((P(DONE) << 8) | (P(b) << 4) | P(a))
+#undef  ENC3
+#define ENC3(a,b,c) ((P(DONE) << 12) | (P(c) << 8) | (P(b) << 4) | P(a))
+#undef  ENC4
+#define ENC4(a,b,c,d) ((P(DONE) << 16) | (P(d) << 12) | (P(c) << 8) | \
+                       (P(b) << 4) | P(a))
+#undef  ENC5
+#define ENC5(a,b,c,d,e) ((P(DONE) << 20) | (P(e) << 16) | (P(d) << 12) | \
+                         (P(c) << 8) | (P(b) << 4) | P(a))
+#undef  ENC6
+#define ENC6(a,b,c,d,e,f) ((P(DONE) << 24) | (P(f) << 20) | (P(e) << 16) | \
+                           (P(d) << 12) | (P(c) << 8) | (P(b) << 4) | P(a))
+
+/* The different kinds of operands in an asm insn */
+enum {
+   S390_ARG_DONE = 0,
+   S390_ARG_GPR = 1,
+   S390_ARG_FPR = 2,
+   S390_ARG_AR = 3,
+   S390_ARG_INT = 4,
+   S390_ARG_UINT = 5,
+   S390_ARG_PCREL = 6,
+   S390_ARG_SDXB = 7,
+   S390_ARG_UDXB = 8,
+   S390_ARG_UDLB = 9,
+   S390_ARG_CABM = 10,
+   S390_ARG_MNM = 11,
+   S390_ARG_XMNM = 12
+};
+
+/* The different kinds of extended mnemonics */
+enum {
+   S390_XMNM_CAB = 0,
+   S390_XMNM_BCR = 1,
+   S390_XMNM_BC = 2,
+   S390_XMNM_BRC = 3,
+   S390_XMNM_BRCL = 4,
+   S390_XMNM_LOCR = 5,
+   S390_XMNM_LOCGR = 6,
+   S390_XMNM_LOC = 7,
+   S390_XMNM_LOCG = 8,
+   S390_XMNM_STOC = 9,
+   S390_XMNM_STOCG = 10
+};
+
+void s390_disasm(UInt command, ...);
+
+/*---------------------------------------------------------------*/
+/*--- end                                  host_s390_disasm.h ---*/
+/*---------------------------------------------------------------*/
+
+#endif /* __VEX_HOST_S390_DISASM_H */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_isel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_isel.c
new file mode 100644
index 000000000..83da36e3a
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_s390_isel.c
@@ -0,0 +1,2446 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                                  host_s390_isel.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm */
+
+#include "libvex_basictypes.h"
+#include "libvex_ir.h"
+#include "libvex.h"
+#include "libvex_s390x_common.h"
+
+#include "ir_match.h"
+#include "main_util.h"
+#include "main_globals.h"
+#include "host_generic_regs.h"
+#include "host_s390_defs.h"
+
+/*---------------------------------------------------------*/
+/*--- ISelEnv                                           ---*/
+/*---------------------------------------------------------*/
+
+/* This carries around:
+
+   - A mapping from IRTemp to IRType, giving the type of any IRTemp we
+     might encounter.  This is computed before insn selection starts,
+     and does not change.
+
+   - A mapping from IRTemp to HReg.  This tells the insn selector
+     which virtual register(s) are associated with each IRTemp
+      temporary.  This is computed before insn selection starts, and
+      does not change.  We expect this mapping to map precisely the
+      same set of IRTemps as the type mapping does.
+
+         - vregmap   holds the primary register for the IRTemp.
+         - vregmapHI holds the secondary register for the IRTemp,
+              if any is needed.  That's only for Ity_I64 temps
+              in 32 bit mode or Ity_I128 temps in 64-bit mode.
+
+    - The code array, that is, the insns selected so far.
+
+    - A counter, for generating new virtual registers.
+
+    - The host subarchitecture we are selecting insns for.
+      This is set at the start and does not change.
+*/
+
+typedef struct {
+   IRTypeEnv   *type_env;
+
+   HReg        *vregmap;
+   HReg        *vregmapHI;
+   UInt         n_vregmap;
+
+   HInstrArray *code;
+
+   UInt         vreg_ctr;
+
+   UInt         hwcaps;
+
+} ISelEnv;
+
+
+/* Forward declarations */
+static HReg          s390_isel_int_expr(ISelEnv *, IRExpr *);
+static s390_amode   *s390_isel_amode(ISelEnv *, IRExpr *);
+static s390_cc_t     s390_isel_cc(ISelEnv *, IRExpr *);
+static s390_opnd_RMI s390_isel_int_expr_RMI(ISelEnv *, IRExpr *);
+static void          s390_isel_int128_expr(HReg *, HReg *, ISelEnv *, IRExpr *);
+static HReg          s390_isel_float_expr(ISelEnv *, IRExpr *);
+static void          s390_isel_float128_expr(HReg *, HReg *, ISelEnv *, IRExpr *);
+
+
+/* Add an instruction */
+static void
+addInstr(ISelEnv *env, s390_insn *insn)
+{
+   addHInstr(env->code, insn);
+
+   if (vex_traceflags & VEX_TRACE_VCODE) {
+      vex_printf("%s\n", s390_insn_as_string(insn));
+   }
+}
+
+
+static __inline__ IRExpr *
+mkU64(ULong value)
+{
+   return IRExpr_Const(IRConst_U64(value));
+}
+
+
+/*---------------------------------------------------------*/
+/*--- Registers                                         ---*/
+/*---------------------------------------------------------*/
+
+/* Return the virtual register to which a given IRTemp is mapped. */
+static HReg
+lookupIRTemp(ISelEnv *env, IRTemp tmp)
+{
+   vassert(tmp < env->n_vregmap);
+   vassert(env->vregmap[tmp] != INVALID_HREG);
+
+   return env->vregmap[tmp];
+}
+
+
+/* Return the two virtual registers to which the IRTemp is mapped. */
+static void
+lookupIRTemp128(HReg *hi, HReg *lo, ISelEnv *env, IRTemp tmp)
+{
+   vassert(tmp < env->n_vregmap);
+   vassert(env->vregmapHI[tmp] != INVALID_HREG);
+
+   *lo = env->vregmap[tmp];
+   *hi = env->vregmapHI[tmp];
+}
+
+
+/* Allocate a new integer register */
+static HReg
+newVRegI(ISelEnv *env)
+{
+   HReg reg = mkHReg(env->vreg_ctr, HRcInt64, True /* virtual */ );
+   env->vreg_ctr++;
+
+   return reg;
+}
+
+
+/* Allocate a new floating point register */
+static HReg
+newVRegF(ISelEnv *env)
+{
+   HReg reg = mkHReg(env->vreg_ctr, HRcFlt64, True /* virtual */ );
+
+   env->vreg_ctr++;
+
+   return reg;
+}
+
+
+/* Construct a non-virtual general purpose register */
+static __inline__ HReg
+make_gpr(ISelEnv *env, UInt regno)
+{
+   return mkHReg(regno, HRcInt64, False /* virtual */ );
+}
+
+
+/* Construct a non-virtual floating point register */
+static __inline__ HReg
+make_fpr(UInt regno)
+{
+   return mkHReg(regno, HRcFlt64, False /* virtual */ );
+}
+
+
+/*---------------------------------------------------------*/
+/*--- Amode                                             ---*/
+/*---------------------------------------------------------*/
+
+static __inline__ Bool
+ulong_fits_unsigned_12bit(ULong val)
+{
+   return (val & 0xFFFu) == val;
+}
+
+
+static __inline__ Bool
+ulong_fits_signed_20bit(ULong val)
+{
+   Long v = val & 0xFFFFFu;
+
+   v = (v << 44) >> 44;  /* sign extend */
+
+   return val == (ULong)v;
+}
+
+
+/* EXPR is an expression that is used as an address. Return an s390_amode
+   for it. */
+static s390_amode *
+s390_isel_amode_wrk(ISelEnv *env, IRExpr *expr)
+{
+   if (expr->tag == Iex_Binop && expr->Iex.Binop.op == Iop_Add64) {
+      IRExpr *arg1 = expr->Iex.Binop.arg1;
+      IRExpr *arg2 = expr->Iex.Binop.arg2;
+
+      /* Move constant into right subtree */
+      if (arg1->tag == Iex_Const) {
+         IRExpr *tmp;
+         tmp  = arg1;
+         arg1 = arg2;
+         arg2 = tmp;
+      }
+
+      /* r + constant: Check for b12 first, then b20 */
+      if (arg2->tag == Iex_Const && arg2->Iex.Const.con->tag == Ico_U64) {
+         ULong value = arg2->Iex.Const.con->Ico.U64;
+
+         if (ulong_fits_unsigned_12bit(value)) {
+            return s390_amode_b12((Int)value, s390_isel_int_expr(env, arg1));
+         }
+         /* If long-displacement is not available, do not construct B20 or
+            BX20 amodes because code generation cannot handle them. */
+         if (s390_host_has_ldisp && ulong_fits_signed_20bit(value)) {
+            return s390_amode_b20((Int)value, s390_isel_int_expr(env, arg1));
+         }
+      }
+   }
+
+   /* Doesn't match anything in particular.  Generate it into
+      a register and use that. */
+   return s390_amode_b12(0, s390_isel_int_expr(env, expr));
+}
+
+
+static s390_amode *
+s390_isel_amode(ISelEnv *env, IRExpr *expr)
+{
+   s390_amode *am = s390_isel_amode_wrk(env, expr);
+
+   /* Address computation should yield a 64-bit value */
+   vassert(typeOfIRExpr(env->type_env, expr) == Ity_I64);
+
+   am = s390_isel_amode_wrk(env, expr);
+
+   /* Check post-condition */
+   vassert(s390_amode_is_sane(am));
+
+   return am;
+}
+
+
+/*---------------------------------------------------------*/
+/*--- Helper functions                                  ---*/
+/*---------------------------------------------------------*/
+
+/* Constants and memory accesses should be right operands */
+#define order_commutative_operands(left, right)                   \
+        do {                                                      \
+          if (left->tag == Iex_Const || left->tag == Iex_Load ||  \
+              left->tag == Iex_Get) {                             \
+            IRExpr *tmp;                                          \
+            tmp   = left;                                         \
+            left  = right;                                        \
+            right = tmp;                                          \
+          }                                                       \
+        } while (0)
+
+
+/* Copy an RMI operand to the DST register */
+static s390_insn *
+s390_opnd_copy(UChar size, HReg dst, s390_opnd_RMI opnd)
+{
+   switch (opnd.tag) {
+   case S390_OPND_AMODE:
+      return s390_insn_load(size, dst, opnd.variant.am);
+
+   case S390_OPND_REG:
+      return s390_insn_move(size, dst, opnd.variant.reg);
+
+   case S390_OPND_IMMEDIATE:
+      return s390_insn_load_immediate(size, dst, opnd.variant.imm);
+
+   default:
+      vpanic("s390_opnd_copy");
+   }
+}
+
+
+/* Construct a RMI operand for a register */
+static __inline__ s390_opnd_RMI
+s390_opnd_reg(HReg reg)
+{
+   s390_opnd_RMI opnd;
+
+   opnd.tag  = S390_OPND_REG;
+   opnd.variant.reg = reg;
+
+   return opnd;
+}
+
+
+/* Construct a RMI operand for an immediate constant */
+static __inline__ s390_opnd_RMI
+s390_opnd_imm(ULong value)
+{
+   s390_opnd_RMI opnd;
+
+   opnd.tag  = S390_OPND_IMMEDIATE;
+   opnd.variant.imm = value;
+
+   return opnd;
+}
+
+
+/* Return 1, if EXPR represents the cosntant 0 */
+static int
+s390_expr_is_const_zero(IRExpr *expr)
+{
+   ULong value;
+
+   if (expr->tag == Iex_Const) {
+      switch (expr->Iex.Const.con->tag) {
+      case Ico_U1:  value = expr->Iex.Const.con->Ico.U1;  break;
+      case Ico_U8:  value = expr->Iex.Const.con->Ico.U8;  break;
+      case Ico_U16: value = expr->Iex.Const.con->Ico.U16; break;
+      case Ico_U32: value = expr->Iex.Const.con->Ico.U32; break;
+      case Ico_U64: value = expr->Iex.Const.con->Ico.U64; break;
+      default:
+         vpanic("s390_expr_is_const_zero");
+      }
+      return value == 0;
+   }
+
+   return 0;
+}
+
+
+/* Call a helper (clean or dirty)
+   Arguments must satisfy the following conditions:
+   (a) they are expressions yielding an integer result
+   (b) there can be no more than S390_NUM_GPRPARMS arguments
+       guard is a Ity_Bit expression indicating whether or not the
+       call happens.  If guard==NULL, the call is unconditional.
+*/
+static void
+doHelperCall(ISelEnv *env, Bool passBBP, IRExpr *guard,
+             IRCallee *callee, IRExpr **args)
+{
+   UInt n_args, i, argreg, size;
+   ULong target;
+   HReg tmpregs[S390_NUM_GPRPARMS];
+   s390_cc_t cc;
+
+   n_args = 0;
+   for (i = 0; args[i]; i++)
+      ++n_args;
+
+   if (n_args > (S390_NUM_GPRPARMS - (passBBP ? 1 : 0))) {
+      vpanic("doHelperCall: too many arguments");
+   }
+
+   /* This is the "slow scheme". fixs390: implement the fast one */
+   argreg = 0;
+
+   /* If we need the guest state pointer put it in a temporary arg reg */
+   if (passBBP) {
+      tmpregs[argreg] = newVRegI(env);
+      addInstr(env, s390_insn_move(sizeof(ULong), tmpregs[argreg],
+                                   s390_hreg_guest_state_pointer()));
+      argreg++;
+   }
+
+   /* Compute the function arguments into a temporary register each */
+   for (i = 0; i < n_args; i++) {
+      tmpregs[argreg] = s390_isel_int_expr(env, args[i]);
+      argreg++;
+   }
+
+   /* Compute the condition */
+   cc = S390_CC_ALWAYS;
+   if (guard) {
+      if (guard->tag == Iex_Const
+          && guard->Iex.Const.con->tag == Ico_U1
+          && guard->Iex.Const.con->Ico.U1 == True) {
+         /* unconditional -- do nothing */
+      } else {
+         cc = s390_isel_cc(env, guard);
+      }
+   }
+
+   /* Move the args to the final register */
+   for (i = 0; i < argreg; i++) {
+      HReg finalreg;
+
+      finalreg = mkHReg(s390_gprno_from_arg_index(i), HRcInt64, False);
+      size = sizeofIRType(Ity_I64);
+      addInstr(env, s390_insn_move(size, finalreg, tmpregs[i]));
+   }
+
+   target = Ptr_to_ULong(callee->addr);
+
+   /* Finally, the call itself. */
+   addInstr(env, s390_insn_helper_call(cc, (Addr64)target, n_args,
+                                       callee->name));
+}
+
+
+/* Given an expression representing a rounding mode using IRRoundingMode
+   encoding convert it to an s390_round_t value.  */
+static s390_round_t
+decode_rounding_mode(IRExpr *rounding_expr)
+{
+   if (rounding_expr->tag == Iex_Const &&
+       rounding_expr->Iex.Const.con->tag == Ico_U32) {
+      IRRoundingMode mode = rounding_expr->Iex.Const.con->Ico.U32;
+
+      switch (mode) {
+      case Irrm_NEAREST:       return S390_ROUND_NEAREST_EVEN;
+      case Irrm_ZERO:          return S390_ROUND_ZERO;
+      case Irrm_PosINF:        return S390_ROUND_POSINF;
+      case Irrm_NegINF:        return S390_ROUND_NEGINF;
+      }
+   }
+
+   vpanic("decode_rounding_mode");
+}
+
+
+/* CC_S390 holds the condition code in s390 encoding. Convert it to
+   VEX encoding
+
+   s390     VEX              b6 b2 b0   cc.1  cc.0
+   0      0x40 EQ             1  0  0     0     0
+   1      0x01 LT             0  0  1     0     1
+   2      0x00 GT             0  0  0     1     0
+   3      0x45 Unordered      1  1  1     1     1
+
+   b0 = cc.0
+   b2 = cc.0 & cc.1
+   b6 = ~(cc.0 ^ cc.1)   // ((cc.0 - cc.1) + 0x1 ) & 0x1
+
+   VEX = b0 | (b2 << 2) | (b6 << 6);
+*/
+static HReg
+convert_s390_fpcc_to_vex(ISelEnv *env, HReg cc_s390)
+{
+   HReg cc0, cc1, b2, b6, cc_vex;
+
+   cc0 = newVRegI(env);
+   addInstr(env, s390_insn_move(4, cc0, cc_s390));
+   addInstr(env, s390_insn_alu(4, S390_ALU_AND, cc0, s390_opnd_imm(1)));
+
+   cc1 = newVRegI(env);
+   addInstr(env, s390_insn_move(4, cc1, cc_s390));
+   addInstr(env, s390_insn_alu(4, S390_ALU_RSH, cc1, s390_opnd_imm(1)));
+
+   b2 = newVRegI(env);
+   addInstr(env, s390_insn_move(4, b2, cc0));
+   addInstr(env, s390_insn_alu(4, S390_ALU_AND, b2, s390_opnd_reg(cc1)));
+   addInstr(env, s390_insn_alu(4, S390_ALU_LSH, b2, s390_opnd_imm(2)));
+
+   b6 = newVRegI(env);
+   addInstr(env, s390_insn_move(4, b6, cc0));
+   addInstr(env, s390_insn_alu(4, S390_ALU_SUB, b6, s390_opnd_reg(cc1)));
+   addInstr(env, s390_insn_alu(4, S390_ALU_ADD, b6, s390_opnd_imm(1)));
+   addInstr(env, s390_insn_alu(4, S390_ALU_AND, b6, s390_opnd_imm(1)));
+   addInstr(env, s390_insn_alu(4, S390_ALU_LSH, b6, s390_opnd_imm(6)));
+
+   cc_vex = newVRegI(env);
+   addInstr(env, s390_insn_move(4, cc_vex, cc0));
+   addInstr(env, s390_insn_alu(4, S390_ALU_OR, cc_vex, s390_opnd_reg(b2)));
+   addInstr(env, s390_insn_alu(4, S390_ALU_OR, cc_vex, s390_opnd_reg(b6)));
+
+   return cc_vex;
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Integer expressions (128 bit)               ---*/
+/*---------------------------------------------------------*/
+static void
+s390_isel_int128_expr_wrk(HReg *dst_hi, HReg *dst_lo, ISelEnv *env,
+                          IRExpr *expr)
+{
+   IRType ty = typeOfIRExpr(env->type_env, expr);
+
+   vassert(ty == Ity_I128);
+
+   /* No need to consider the following
+      - 128-bit constants (they do not exist in VEX)
+      - 128-bit loads from memory (will not be generated)
+   */
+
+   /* Read 128-bit IRTemp */
+   if (expr->tag == Iex_RdTmp) {
+      lookupIRTemp128(dst_hi, dst_lo, env, expr->Iex.RdTmp.tmp);
+      return;
+   }
+
+   if (expr->tag == Iex_Binop) {
+      IRExpr *arg1 = expr->Iex.Binop.arg1;
+      IRExpr *arg2 = expr->Iex.Binop.arg2;
+      Bool is_signed_multiply, is_signed_divide;
+
+      switch (expr->Iex.Binop.op) {
+      case Iop_MullU64:
+         is_signed_multiply = False;
+         goto do_multiply64;
+
+      case Iop_MullS64:
+         is_signed_multiply = True;
+         goto do_multiply64;
+
+      case Iop_DivModU128to64:
+         is_signed_divide = False;
+         goto do_divide64;
+
+      case Iop_DivModS128to64:
+         is_signed_divide = True;
+         goto do_divide64;
+
+      case Iop_64HLto128:
+         *dst_hi = s390_isel_int_expr(env, arg1);
+         *dst_lo = s390_isel_int_expr(env, arg2);
+         return;
+
+      case Iop_DivModS64to64: {
+         HReg r10, r11, h1;
+         s390_opnd_RMI op2;
+
+         h1  = s390_isel_int_expr(env, arg1);       /* Process 1st operand */
+         op2 = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+
+         /* We use non-virtual registers r10 and r11 as pair */
+         r10  = make_gpr(env, 10);
+         r11  = make_gpr(env, 11);
+
+         /* Move 1st operand into r11 and */
+         addInstr(env, s390_insn_move(8, r11, h1));
+
+         /* Divide */
+         addInstr(env, s390_insn_divs(8, r10, r11, op2));
+
+         /* The result is in registers r10 (remainder) and r11 (quotient).
+            Move the result into the reg pair that is being returned such
+            such that the low 64 bits are the quotient and the upper 64 bits
+            are the remainder. (see libvex_ir.h). */
+         *dst_hi = newVRegI(env);
+         *dst_lo = newVRegI(env);
+         addInstr(env, s390_insn_move(8, *dst_hi, r10));
+         addInstr(env, s390_insn_move(8, *dst_lo, r11));
+         return;
+      }
+
+      default:
+         break;
+
+      do_multiply64: {
+            HReg r10, r11, h1;
+            s390_opnd_RMI op2;
+
+            order_commutative_operands(arg1, arg2);
+
+            h1   = s390_isel_int_expr(env, arg1);       /* Process 1st operand */
+            op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+
+            /* We use non-virtual registers r10 and r11 as pair */
+            r10  = make_gpr(env, 10);
+            r11  = make_gpr(env, 11);
+
+            /* Move the first operand to r11 */
+            addInstr(env, s390_insn_move(8, r11, h1));
+
+            /* Multiply */
+            addInstr(env, s390_insn_mul(8, r10, r11, op2, is_signed_multiply));
+
+            /* The result is in registers r10 and r11. Assign to two virtual regs
+               and return. */
+            *dst_hi = newVRegI(env);
+            *dst_lo = newVRegI(env);
+            addInstr(env, s390_insn_move(8, *dst_hi, r10));
+            addInstr(env, s390_insn_move(8, *dst_lo, r11));
+            return;
+         }
+
+      do_divide64: {
+         HReg r10, r11, hi, lo;
+         s390_opnd_RMI op2;
+
+         s390_isel_int128_expr(&hi, &lo, env, arg1);
+         op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+
+         /* We use non-virtual registers r10 and r11 as pair */
+         r10  = make_gpr(env, 10);
+         r11  = make_gpr(env, 11);
+
+         /* Move high 64 bits of the 1st operand into r10 and
+            the low 64 bits into r11. */
+         addInstr(env, s390_insn_move(8, r10, hi));
+         addInstr(env, s390_insn_move(8, r11, lo));
+
+         /* Divide */
+         addInstr(env, s390_insn_div(8, r10, r11, op2, is_signed_divide));
+
+         /* The result is in registers r10 (remainder) and r11 (quotient).
+            Move the result into the reg pair that is being returned such
+            such that the low 64 bits are the quotient and the upper 64 bits
+            are the remainder. (see libvex_ir.h). */
+         *dst_hi = newVRegI(env);
+         *dst_lo = newVRegI(env);
+         addInstr(env, s390_insn_move(8, *dst_hi, r10));
+         addInstr(env, s390_insn_move(8, *dst_lo, r11));
+         return;
+      }
+      }
+   }
+
+   vpanic("s390_isel_int128_expr");
+}
+
+
+/* Compute a 128-bit value into two 64-bit registers. These may be either
+   real or virtual regs; in any case they must not be changed by subsequent
+   code emitted by the caller. */
+static void
+s390_isel_int128_expr(HReg *dst_hi, HReg *dst_lo, ISelEnv *env, IRExpr *expr)
+{
+   s390_isel_int128_expr_wrk(dst_hi, dst_lo, env, expr);
+
+   /* Sanity checks ... */
+   vassert(hregIsVirtual(*dst_hi));
+   vassert(hregIsVirtual(*dst_lo));
+   vassert(hregClass(*dst_hi) == HRcInt64);
+   vassert(hregClass(*dst_lo) == HRcInt64);
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Integer expressions (64/32/16/8 bit)        ---*/
+/*---------------------------------------------------------*/
+
+/* Select insns for an integer-typed expression, and add them to the
+   code list.  Return a reg holding the result.  This reg will be a
+   virtual register.  THE RETURNED REG MUST NOT BE MODIFIED.  If you
+   want to modify it, ask for a new vreg, copy it in there, and modify
+   the copy.  The register allocator will do its best to map both
+   vregs to the same real register, so the copies will often disappear
+   later in the game.
+
+   This should handle expressions of 64, 32, 16 and 8-bit type.
+   All results are returned in a 64bit register.
+   For 16- and 8-bit expressions, the upper (32/48/56 : 16/24) bits
+   are arbitrary, so you should mask or sign extend partial values
+   if necessary.
+*/
+
+/* DO NOT CALL THIS DIRECTLY ! */
+static HReg
+s390_isel_int_expr_wrk(ISelEnv *env, IRExpr *expr)
+{
+   IRType ty = typeOfIRExpr(env->type_env, expr);
+   UChar size;
+   s390_bfp_unop_t bfpop;
+
+   vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 || ty == Ity_I64);
+
+   size = sizeofIRType(ty);   /* size of the result after evaluating EXPR */
+
+   switch (expr->tag) {
+
+      /* --------- TEMP --------- */
+   case Iex_RdTmp:
+      /* Return the virtual register that holds the temporary. */
+      return lookupIRTemp(env, expr->Iex.RdTmp.tmp);
+
+      /* --------- LOAD --------- */
+   case Iex_Load: {
+      HReg        dst = newVRegI(env);
+      s390_amode *am  = s390_isel_amode(env, expr->Iex.Load.addr);
+
+      if (expr->Iex.Load.end != Iend_BE)
+         goto irreducible;
+
+      addInstr(env, s390_insn_load(size, dst, am));
+
+      return dst;
+   }
+
+      /* --------- BINARY OP --------- */
+   case Iex_Binop: {
+      IRExpr *arg1 = expr->Iex.Binop.arg1;
+      IRExpr *arg2 = expr->Iex.Binop.arg2;
+      HReg h1, res;
+      s390_alu_t opkind;
+      s390_opnd_RMI op2, value, opnd;
+      s390_insn *insn;
+      Bool is_commutative, is_signed_multiply, is_signed_divide;
+
+      is_commutative = True;
+
+      switch (expr->Iex.Binop.op) {
+      case Iop_MullU8:
+      case Iop_MullU16:
+      case Iop_MullU32:
+         is_signed_multiply = False;
+         goto do_multiply;
+
+      case Iop_MullS8:
+      case Iop_MullS16:
+      case Iop_MullS32:
+         is_signed_multiply = True;
+         goto do_multiply;
+
+      do_multiply: {
+            HReg r10, r11;
+            UInt arg_size = size / 2;
+
+            order_commutative_operands(arg1, arg2);
+
+            h1   = s390_isel_int_expr(env, arg1);       /* Process 1st operand */
+            op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+
+            /* We use non-virtual registers r10 and r11 as pair */
+            r10  = make_gpr(env, 10);
+            r11  = make_gpr(env, 11);
+
+            /* Move the first operand to r11 */
+            addInstr(env, s390_insn_move(arg_size, r11, h1));
+
+            /* Multiply */
+            addInstr(env, s390_insn_mul(arg_size, r10, r11, op2, is_signed_multiply));
+
+            /* The result is in registers r10 and r11. Combine them into a SIZE-bit
+               value into the destination register. */
+            res  = newVRegI(env);
+            addInstr(env, s390_insn_move(arg_size, res, r10));
+            value = s390_opnd_imm(arg_size * 8);
+            addInstr(env, s390_insn_alu(size, S390_ALU_LSH, res, value));
+            value = s390_opnd_imm((((ULong)1) << arg_size * 8) - 1);
+            addInstr(env, s390_insn_alu(size, S390_ALU_AND, r11, value));
+            opnd = s390_opnd_reg(r11);
+            addInstr(env, s390_insn_alu(size, S390_ALU_OR,  res, opnd));
+            return res;
+         }
+
+      case Iop_DivModS64to32:
+         is_signed_divide = True;
+         goto do_divide;
+
+      case Iop_DivModU64to32:
+         is_signed_divide = False;
+         goto do_divide;
+
+      do_divide: {
+            HReg r10, r11;
+
+            h1   = s390_isel_int_expr(env, arg1);       /* Process 1st operand */
+            op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+
+            /* We use non-virtual registers r10 and r11 as pair */
+            r10  = make_gpr(env, 10);
+            r11  = make_gpr(env, 11);
+
+            /* Split the first operand and put the high 32 bits into r10 and
+               the low 32 bits into r11. */
+            addInstr(env, s390_insn_move(8, r10, h1));
+            addInstr(env, s390_insn_move(8, r11, h1));
+            value = s390_opnd_imm(32);
+            addInstr(env, s390_insn_alu(8, S390_ALU_RSH, r10, value));
+
+            /* Divide */
+            addInstr(env, s390_insn_div(4, r10, r11, op2, is_signed_divide));
+
+            /* The result is in registers r10 (remainder) and r11 (quotient).
+               Combine them into a 64-bit value such that the low 32 bits are
+               the quotient and the upper 32 bits are the remainder. (see
+               libvex_ir.h). */
+            res  = newVRegI(env);
+            addInstr(env, s390_insn_move(8, res, r10));
+            value = s390_opnd_imm(32);
+            addInstr(env, s390_insn_alu(8, S390_ALU_LSH, res, value));
+            value = s390_opnd_imm((((ULong)1) << 32) - 1);
+            addInstr(env, s390_insn_alu(8, S390_ALU_AND, r11, value));
+            opnd = s390_opnd_reg(r11);
+            addInstr(env, s390_insn_alu(8, S390_ALU_OR,  res, opnd));
+            return res;
+         }
+
+      case Iop_F32toI32S:  bfpop = S390_BFP_F32_TO_I32;  goto do_convert;
+      case Iop_F32toI64S:  bfpop = S390_BFP_F32_TO_I64;  goto do_convert;
+      case Iop_F64toI32S:  bfpop = S390_BFP_F64_TO_I32;  goto do_convert;
+      case Iop_F64toI64S:  bfpop = S390_BFP_F64_TO_I64;  goto do_convert;
+      case Iop_F128toI32S: bfpop = S390_BFP_F128_TO_I32; goto do_convert_128;
+      case Iop_F128toI64S: bfpop = S390_BFP_F128_TO_I64; goto do_convert_128;
+
+      do_convert: {
+         s390_round_t rounding_mode;
+
+         res  = newVRegI(env);
+         h1   = s390_isel_float_expr(env, arg2);   /* Process operand */
+
+         rounding_mode = decode_rounding_mode(arg1);
+         addInstr(env, s390_insn_bfp_unop(size, bfpop, res, h1, rounding_mode));
+         return res;
+      }
+
+      do_convert_128: {
+         s390_round_t rounding_mode;
+         HReg op_hi, op_lo, f13, f15;
+
+         res = newVRegI(env);
+         s390_isel_float128_expr(&op_hi, &op_lo, env, arg2); /* operand */
+
+         /* We use non-virtual registers r13 and r15 as pair */
+         f13 = make_fpr(13);
+         f15 = make_fpr(15);
+
+         /* operand --> (f13, f15) */
+         addInstr(env, s390_insn_move(8, f13, op_hi));
+         addInstr(env, s390_insn_move(8, f15, op_lo));
+
+         rounding_mode = decode_rounding_mode(arg1);
+         addInstr(env, s390_insn_bfp128_convert_from(size, bfpop, res, f13, f15,
+                                                     rounding_mode));
+         return res;
+      }
+
+      case Iop_8HLto16:
+      case Iop_16HLto32:
+      case Iop_32HLto64: {
+         HReg h2;
+         UInt arg_size = size / 2;
+
+         res  = newVRegI(env);
+         h1   = s390_isel_int_expr(env, arg1);   /* Process 1st operand */
+         h2   = s390_isel_int_expr(env, arg2);   /* Process 2nd operand */
+
+         addInstr(env, s390_insn_move(arg_size, res, h1));
+         value = s390_opnd_imm(arg_size * 8);
+         addInstr(env, s390_insn_alu(size, S390_ALU_LSH, res, value));
+         value = s390_opnd_imm((((ULong)1) << arg_size * 8) - 1);
+         addInstr(env, s390_insn_alu(size, S390_ALU_AND, h2, value));
+         opnd = s390_opnd_reg(h2);
+         addInstr(env, s390_insn_alu(size, S390_ALU_OR,  res, opnd));
+         return res;
+      }
+
+      case Iop_Max32U: {
+         /* arg1 > arg2 ? arg1 : arg2   using uint32_t arguments */
+         res = newVRegI(env);
+         h1  = s390_isel_int_expr(env, arg1);
+         op2 = s390_isel_int_expr_RMI(env, arg2);
+
+         addInstr(env, s390_insn_move(size, res, h1));
+         addInstr(env, s390_insn_compare(size, res, op2, False /* signed */));
+         addInstr(env, s390_insn_cond_move(size, S390_CC_L, res, op2));
+         return res;
+      }
+
+      case Iop_CmpF32:
+      case Iop_CmpF64: {
+         HReg cc_s390, h2;
+
+         h1 = s390_isel_float_expr(env, arg1);
+         h2 = s390_isel_float_expr(env, arg2);
+         cc_s390 = newVRegI(env);
+
+         size = (expr->Iex.Binop.op == Iop_CmpF32) ? 4 : 8;
+
+         addInstr(env, s390_insn_bfp_compare(size, cc_s390, h1, h2));
+
+         return convert_s390_fpcc_to_vex(env, cc_s390);
+      }
+
+      case Iop_CmpF128: {
+         HReg op1_hi, op1_lo, op2_hi, op2_lo, f12, f13, f14, f15, cc_s390;
+
+         s390_isel_float128_expr(&op1_hi, &op1_lo, env, arg1); /* 1st operand */
+         s390_isel_float128_expr(&op2_hi, &op2_lo, env, arg2); /* 2nd operand */
+         cc_s390 = newVRegI(env);
+
+         /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+         f12 = make_fpr(12);
+         f13 = make_fpr(13);
+         f14 = make_fpr(14);
+         f15 = make_fpr(15);
+
+         /* 1st operand --> (f12, f14) */
+         addInstr(env, s390_insn_move(8, f12, op1_hi));
+         addInstr(env, s390_insn_move(8, f14, op1_lo));
+
+         /* 2nd operand --> (f13, f15) */
+         addInstr(env, s390_insn_move(8, f13, op2_hi));
+         addInstr(env, s390_insn_move(8, f15, op2_lo));
+
+         res = newVRegI(env);
+         addInstr(env, s390_insn_bfp128_compare(16, cc_s390, f12, f14, f13, f15));
+
+         return convert_s390_fpcc_to_vex(env, cc_s390);
+      }
+
+      case Iop_Add8:
+      case Iop_Add16:
+      case Iop_Add32:
+      case Iop_Add64:
+         opkind = S390_ALU_ADD;
+         break;
+
+      case Iop_Sub8:
+      case Iop_Sub16:
+      case Iop_Sub32:
+      case Iop_Sub64:
+         opkind = S390_ALU_SUB;
+         is_commutative = False;
+         break;
+
+      case Iop_And8:
+      case Iop_And16:
+      case Iop_And32:
+      case Iop_And64:
+         opkind = S390_ALU_AND;
+         break;
+
+      case Iop_Or8:
+      case Iop_Or16:
+      case Iop_Or32:
+      case Iop_Or64:
+         opkind = S390_ALU_OR;
+         break;
+
+      case Iop_Xor8:
+      case Iop_Xor16:
+      case Iop_Xor32:
+      case Iop_Xor64:
+         opkind = S390_ALU_XOR;
+         break;
+
+      case Iop_Shl8:
+      case Iop_Shl16:
+      case Iop_Shl32:
+      case Iop_Shl64:
+         opkind = S390_ALU_LSH;
+         is_commutative = False;
+         break;
+
+      case Iop_Shr8:
+      case Iop_Shr16:
+      case Iop_Shr32:
+      case Iop_Shr64:
+         opkind = S390_ALU_RSH;
+         is_commutative = False;
+         break;
+
+      case Iop_Sar8:
+      case Iop_Sar16:
+      case Iop_Sar32:
+      case Iop_Sar64:
+         opkind = S390_ALU_RSHA;
+         is_commutative = False;
+         break;
+
+      default:
+         goto irreducible;
+      }
+
+      /* Pattern match: 0 - arg1  -->  -arg1   */
+      if (opkind == S390_ALU_SUB && s390_expr_is_const_zero(arg1)) {
+         res  = newVRegI(env);
+         op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+         insn = s390_insn_unop(size, S390_NEGATE, res, op2);
+         addInstr(env, insn);
+
+         return res;
+      }
+
+      if (is_commutative) {
+         order_commutative_operands(arg1, arg2);
+      }
+
+      h1   = s390_isel_int_expr(env, arg1);       /* Process 1st operand */
+      op2  = s390_isel_int_expr_RMI(env, arg2);   /* Process 2nd operand */
+      res  = newVRegI(env);
+      addInstr(env, s390_insn_move(size, res, h1));
+      insn = s390_insn_alu(size, opkind, res, op2);
+
+      addInstr(env, insn);
+
+      return res;
+   }
+
+      /* --------- UNARY OP --------- */
+   case Iex_Unop: {
+      static s390_opnd_RMI mask  = { S390_OPND_IMMEDIATE };
+      static s390_opnd_RMI shift = { S390_OPND_IMMEDIATE };
+      s390_opnd_RMI opnd;
+      s390_insn    *insn;
+      IRExpr *arg;
+      HReg    dst, h1;
+      IROp    unop, binop;
+
+      arg = expr->Iex.Unop.arg;
+
+      /* Special cases are handled here */
+
+      /* 32-bit multiply with 32-bit result or
+         64-bit multiply with 64-bit result */
+      unop  = expr->Iex.Unop.op;
+      binop = arg->Iex.Binop.op;
+
+      if ((arg->tag == Iex_Binop &&
+           ((unop == Iop_64to32 &&
+             (binop == Iop_MullS32 || binop == Iop_MullU32)) ||
+            (unop == Iop_128to64 &&
+             (binop == Iop_MullS64 || binop == Iop_MullU64))))) {
+         h1   = s390_isel_int_expr(env, arg->Iex.Binop.arg1);     /* 1st opnd */
+         opnd = s390_isel_int_expr_RMI(env, arg->Iex.Binop.arg2); /* 2nd opnd */
+         dst  = newVRegI(env);     /* Result goes into a new register */
+         addInstr(env, s390_insn_move(size, dst, h1));
+         addInstr(env, s390_insn_alu(size, S390_ALU_MUL, dst, opnd));
+
+         return dst;
+      }
+
+      if (unop == Iop_ReinterpF64asI64) {
+         dst = newVRegI(env);
+         h1  = s390_isel_float_expr(env, arg);     /* Process the operand */
+         addInstr(env, s390_insn_move(size, dst, h1));
+
+         return dst;
+      }
+
+      /* Expressions whose argument is 1-bit wide */
+      if (typeOfIRExpr(env->type_env, arg) == Ity_I1) {
+         s390_cc_t cond = s390_isel_cc(env, arg);
+         dst = newVRegI(env);     /* Result goes into a new register */
+         addInstr(env, s390_insn_cc2bool(dst, cond));
+
+         switch (unop) {
+         case Iop_1Uto8:
+         case Iop_1Uto32:
+         case Iop_1Uto64:
+            /* Nothing to do */
+            break;
+
+         case Iop_1Sto8:
+         case Iop_1Sto16:
+         case Iop_1Sto32:
+            shift.variant.imm = 31;
+            addInstr(env, s390_insn_alu(4, S390_ALU_LSH,  dst, shift));
+            addInstr(env, s390_insn_alu(4, S390_ALU_RSHA, dst, shift));
+            break;
+
+         case Iop_1Sto64:
+            shift.variant.imm = 63;
+            addInstr(env, s390_insn_alu(8, S390_ALU_LSH,  dst, shift));
+            addInstr(env, s390_insn_alu(8, S390_ALU_RSHA, dst, shift));
+            break;
+
+         default:
+            goto irreducible;
+         }
+
+         return dst;
+      }
+
+      /* Regular processing */
+
+      if (unop == Iop_128to64) {
+         HReg dst_hi, dst_lo;
+
+         s390_isel_int128_expr(&dst_hi, &dst_lo, env, arg);
+         return dst_lo;
+      }
+
+      if (unop == Iop_128HIto64) {
+         HReg dst_hi, dst_lo;
+
+         s390_isel_int128_expr(&dst_hi, &dst_lo, env, arg);
+         return dst_hi;
+      }
+
+      dst  = newVRegI(env);     /* Result goes into a new register */
+      opnd = s390_isel_int_expr_RMI(env, arg);     /* Process the operand */
+
+      switch (unop) {
+      case Iop_8Uto16:
+      case Iop_8Uto32:
+      case Iop_8Uto64:
+         insn = s390_insn_unop(size, S390_ZERO_EXTEND_8, dst, opnd);
+         break;
+
+      case Iop_16Uto32:
+      case Iop_16Uto64:
+         insn = s390_insn_unop(size, S390_ZERO_EXTEND_16, dst, opnd);
+         break;
+
+      case Iop_32Uto64:
+         insn = s390_insn_unop(size, S390_ZERO_EXTEND_32, dst, opnd);
+         break;
+
+      case Iop_8Sto16:
+      case Iop_8Sto32:
+      case Iop_8Sto64:
+         insn = s390_insn_unop(size, S390_SIGN_EXTEND_8, dst, opnd);
+         break;
+
+      case Iop_16Sto32:
+      case Iop_16Sto64:
+         insn = s390_insn_unop(size, S390_SIGN_EXTEND_16, dst, opnd);
+         break;
+
+      case Iop_32Sto64:
+         insn = s390_insn_unop(size, S390_SIGN_EXTEND_32, dst, opnd);
+         break;
+
+      case Iop_64to8:
+      case Iop_64to16:
+      case Iop_64to32:
+      case Iop_32to8:
+      case Iop_32to16:
+      case Iop_16to8:
+         /* Down-casts are no-ops. Upstream operations will only look at
+            the bytes that make up the result of the down-cast. So there
+            is no point setting the other bytes to 0. */
+         insn = s390_opnd_copy(8, dst, opnd);
+         break;
+
+      case Iop_64HIto32:
+         addInstr(env, s390_opnd_copy(8, dst, opnd));
+         shift.variant.imm = 32;
+         insn = s390_insn_alu(8, S390_ALU_RSH, dst, shift);
+         break;
+
+      case Iop_32HIto16:
+         addInstr(env, s390_opnd_copy(4, dst, opnd));
+         shift.variant.imm = 16;
+         insn = s390_insn_alu(4, S390_ALU_RSH, dst, shift);
+         break;
+
+      case Iop_16HIto8:
+         addInstr(env, s390_opnd_copy(2, dst, opnd));
+         shift.variant.imm = 8;
+         insn = s390_insn_alu(2, S390_ALU_RSH, dst, shift);
+         break;
+
+      case Iop_Not8:
+      case Iop_Not16:
+      case Iop_Not32:
+      case Iop_Not64:
+         /* XOR with ffff... */
+         mask.variant.imm = ~(ULong)0;
+         addInstr(env, s390_opnd_copy(size, dst, opnd));
+         insn = s390_insn_alu(size, S390_ALU_XOR, dst, mask);
+         break;
+
+      case Iop_Left8:
+      case Iop_Left16:
+      case Iop_Left32:
+      case Iop_Left64:
+         addInstr(env, s390_insn_unop(size, S390_NEGATE, dst, opnd));
+         insn = s390_insn_alu(size, S390_ALU_OR, dst, opnd);
+         break;
+
+      case Iop_CmpwNEZ32:
+      case Iop_CmpwNEZ64: {
+         /* Use the fact that x | -x == 0 iff x == 0. Otherwise, either X
+            or -X will have a 1 in the MSB. */
+         addInstr(env, s390_insn_unop(size, S390_NEGATE, dst, opnd));
+         addInstr(env, s390_insn_alu(size, S390_ALU_OR,  dst, opnd));
+         shift.variant.imm = (unop == Iop_CmpwNEZ32) ? 31 : 63;
+         addInstr(env, s390_insn_alu(size, S390_ALU_RSHA,  dst, shift));
+         return dst;
+      }
+
+      case Iop_Clz64: {
+         HReg r10, r11;
+
+         /* This will be implemented using FLOGR, if possible. So we need to
+            set aside a pair of non-virtual registers. The result (number of
+            left-most zero bits) will be in r10. The value in r11 is unspecified
+            and must not be used. */
+         r10  = make_gpr(env, 10);
+         r11  = make_gpr(env, 11);
+
+         addInstr(env, s390_insn_clz(8, r10, r11, opnd));
+         addInstr(env, s390_insn_move(8, dst, r10));
+         return dst;
+      }
+
+      default:
+         goto irreducible;
+      }
+
+      addInstr(env, insn);
+
+      return dst;
+   }
+
+      /* --------- GET --------- */
+   case Iex_Get: {
+      HReg dst = newVRegI(env);
+      s390_amode *am = s390_amode_for_guest_state(expr->Iex.Get.offset);
+
+      /* We never load more than 8 bytes from the guest state, because the
+         floating point register pair is not contiguous. */
+      vassert(size <= 8);
+
+      addInstr(env, s390_insn_load(size, dst, am));
+
+      return dst;
+   }
+
+   case Iex_GetI:
+      /* not needed */
+      break;
+
+      /* --------- CCALL --------- */
+   case Iex_CCall: {
+      HReg dst = newVRegI(env);
+
+      doHelperCall(env, False, NULL, expr->Iex.CCall.cee,
+                   expr->Iex.CCall.args);
+
+      /* Move the returned value into the return register */
+      addInstr(env, s390_insn_move(sizeofIRType(expr->Iex.CCall.retty), dst,
+                                   mkHReg(S390_REGNO_RETURN_VALUE,
+                                          HRcInt64, False)));
+      return dst;
+   }
+
+      /* --------- LITERAL --------- */
+
+      /* Load a literal into a register. Create a "load immediate"
+         v-insn and return the register. */
+   case Iex_Const: {
+      ULong value;
+      HReg  dst = newVRegI(env);
+      const IRConst *con = expr->Iex.Const.con;
+
+      /* Bitwise copy of the value. No sign/zero-extension */
+      switch (con->tag) {
+      case Ico_U64: value = con->Ico.U64; break;
+      case Ico_U32: value = con->Ico.U32; break;
+      case Ico_U16: value = con->Ico.U16; break;
+      case Ico_U8:  value = con->Ico.U8;  break;
+      default:      vpanic("s390_isel_int_expr: invalid constant");
+      }
+
+      addInstr(env, s390_insn_load_immediate(size, dst, value));
+
+      return dst;
+   }
+
+      /* --------- MULTIPLEX --------- */
+   case Iex_Mux0X: {
+      IRExpr *cond_expr;
+      HReg dst, tmp, rX;
+      s390_opnd_RMI cond, r0, zero;
+
+      cond_expr = expr->Iex.Mux0X.cond;
+
+      dst  = newVRegI(env);
+      r0   = s390_isel_int_expr_RMI(env, expr->Iex.Mux0X.expr0);
+      rX   = s390_isel_int_expr(env, expr->Iex.Mux0X.exprX);
+      size = sizeofIRType(typeOfIRExpr(env->type_env, expr->Iex.Mux0X.exprX));
+
+      if (cond_expr->tag == Iex_Unop && cond_expr->Iex.Unop.op == Iop_1Uto8) {
+         s390_cc_t cc = s390_isel_cc(env, cond_expr->Iex.Unop.arg);
+
+         addInstr(env, s390_insn_move(size, dst, rX));
+         addInstr(env, s390_insn_cond_move(size, s390_cc_invert(cc), dst, r0));
+         return dst;
+      }
+
+      /* Assume the condition is true and move rX to the destination reg. */
+      addInstr(env, s390_insn_move(size, dst, rX));
+
+      /* Compute the condition ... */
+      cond = s390_isel_int_expr_RMI(env, cond_expr);
+
+      /* tmp = cond & 0xFF */
+      tmp  = newVRegI(env);
+      addInstr(env, s390_insn_load_immediate(4, tmp, 0xFF));
+      addInstr(env, s390_insn_alu(4, S390_ALU_AND, tmp, cond));
+
+      /* ... and compare it with zero */
+      zero = s390_opnd_imm(0);
+      addInstr(env, s390_insn_compare(4, tmp, zero, 0 /* signed */));
+
+      /* ... and if it compared equal move r0 to the destination reg. */
+      size = sizeofIRType(typeOfIRExpr(env->type_env, expr->Iex.Mux0X.expr0));
+      addInstr(env, s390_insn_cond_move(size, S390_CC_E, dst, r0));
+
+      return dst;
+   }
+
+   default:
+      break;
+   }
+
+   /* We get here if no pattern matched. */
+ irreducible:
+   ppIRExpr(expr);
+   vpanic("s390_isel_int_expr: cannot reduce tree");
+}
+
+
+static HReg
+s390_isel_int_expr(ISelEnv *env, IRExpr *expr)
+{
+   HReg dst = s390_isel_int_expr_wrk(env, expr);
+
+   /* Sanity checks ... */
+   vassert(hregClass(dst) == HRcInt64);
+   vassert(hregIsVirtual(dst));
+
+   return dst;
+}
+
+
+static s390_opnd_RMI
+s390_isel_int_expr_RMI(ISelEnv *env, IRExpr *expr)
+{
+   IRType ty = typeOfIRExpr(env->type_env, expr);
+   s390_opnd_RMI dst;
+
+   vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 ||
+           ty == Ity_I64);
+
+   if (expr->tag == Iex_Load) {
+      dst.tag = S390_OPND_AMODE;
+      dst.variant.am = s390_isel_amode(env, expr->Iex.Load.addr);
+   } else if (expr->tag == Iex_Get) {
+      dst.tag = S390_OPND_AMODE;
+      dst.variant.am = s390_amode_for_guest_state(expr->Iex.Get.offset);
+   } else if (expr->tag == Iex_Const) {
+      ULong value;
+
+      /* The bit pattern for the value will be stored as is in the least
+         significant bits of VALUE. */
+      switch (expr->Iex.Const.con->tag) {
+      case Ico_U1:  value = expr->Iex.Const.con->Ico.U1;  break;
+      case Ico_U8:  value = expr->Iex.Const.con->Ico.U8;  break;
+      case Ico_U16: value = expr->Iex.Const.con->Ico.U16; break;
+      case Ico_U32: value = expr->Iex.Const.con->Ico.U32; break;
+      case Ico_U64: value = expr->Iex.Const.con->Ico.U64; break;
+      default:
+         vpanic("s390_isel_int_expr_RMI");
+      }
+
+      dst.tag = S390_OPND_IMMEDIATE;
+      dst.variant.imm = value;
+   } else {
+      dst.tag = S390_OPND_REG;
+      dst.variant.reg = s390_isel_int_expr(env, expr);
+   }
+
+   return dst;
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Floating point expressions (128 bit)        ---*/
+/*---------------------------------------------------------*/
+static void
+s390_isel_float128_expr_wrk(HReg *dst_hi, HReg *dst_lo, ISelEnv *env,
+                            IRExpr *expr)
+{
+   IRType ty = typeOfIRExpr(env->type_env, expr);
+
+   vassert(ty == Ity_F128);
+
+   /* Read 128-bit IRTemp */
+   if (expr->tag == Iex_RdTmp) {
+      lookupIRTemp128(dst_hi, dst_lo, env, expr->Iex.RdTmp.tmp);
+      return;
+   }
+
+   switch (expr->tag) {
+   case Iex_RdTmp:
+      /* Return the virtual registers that hold the temporary. */
+      lookupIRTemp128(dst_hi, dst_lo, env, expr->Iex.RdTmp.tmp);
+      return;
+
+      /* --------- LOAD --------- */
+   case Iex_Load: {
+      IRExpr *addr_hi, *addr_lo;
+      s390_amode *am_hi, *am_lo;
+
+      if (expr->Iex.Load.end != Iend_BE)
+         goto irreducible;
+
+      addr_hi = expr->Iex.Load.addr;
+      addr_lo = IRExpr_Binop(Iop_Add64, addr_hi, mkU64(8));
+
+      am_hi  = s390_isel_amode(env, addr_hi);
+      am_lo  = s390_isel_amode(env, addr_lo);
+
+      *dst_hi = newVRegF(env);
+      *dst_lo = newVRegF(env);
+      addInstr(env, s390_insn_load(8, *dst_hi, am_hi));
+      addInstr(env, s390_insn_load(8, *dst_hi, am_lo));
+      return;
+   }
+
+
+      /* --------- GET --------- */
+   case Iex_Get:
+      /* This is not supported because loading 128-bit from the guest
+         state is almost certainly wrong. Use get_fpr_pair instead. */
+      vpanic("Iex_Get with F128 data");
+
+      /* --------- 4-ary OP --------- */
+   case Iex_Qop:
+      vpanic("Iex_Qop with F128 data");
+
+      /* --------- TERNARY OP --------- */
+   case Iex_Triop: {
+      IROp    op    = expr->Iex.Triop.op;
+      IRExpr *left  = expr->Iex.Triop.arg2;
+      IRExpr *right = expr->Iex.Triop.arg3;
+      s390_bfp_binop_t bfpop;
+      s390_round_t rounding_mode;
+      HReg op1_hi, op1_lo, op2_hi, op2_lo, f12, f13, f14, f15;
+
+      s390_isel_float128_expr(&op1_hi, &op1_lo, env, left);  /* 1st operand */
+      s390_isel_float128_expr(&op2_hi, &op2_lo, env, right); /* 2nd operand */
+
+      /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+      f12 = make_fpr(12);
+      f13 = make_fpr(13);
+      f14 = make_fpr(14);
+      f15 = make_fpr(15);
+
+      /* 1st operand --> (f12, f14) */
+      addInstr(env, s390_insn_move(8, f12, op1_hi));
+      addInstr(env, s390_insn_move(8, f14, op1_lo));
+
+      /* 2nd operand --> (f13, f15) */
+      addInstr(env, s390_insn_move(8, f13, op2_hi));
+      addInstr(env, s390_insn_move(8, f15, op2_lo));
+
+      switch (op) {
+      case Iop_AddF128: bfpop = S390_BFP_ADD; break;
+      case Iop_SubF128: bfpop = S390_BFP_SUB; break;
+      case Iop_MulF128: bfpop = S390_BFP_MUL; break;
+      case Iop_DivF128: bfpop = S390_BFP_DIV; break;
+      default:
+         goto irreducible;
+      }
+
+      rounding_mode = decode_rounding_mode(expr->Iex.Triop.arg1);
+      addInstr(env, s390_insn_bfp128_binop(16, bfpop, f12, f14, f13,
+                                           f15, rounding_mode));
+
+      /* Move result to virtual destination register */
+      *dst_hi = newVRegF(env);
+      *dst_lo = newVRegF(env);
+      addInstr(env, s390_insn_move(8, *dst_hi, f12));
+      addInstr(env, s390_insn_move(8, *dst_lo, f14));
+
+      return;
+   }
+
+      /* --------- BINARY OP --------- */
+   case Iex_Binop: {
+      HReg op_hi, op_lo, f12, f13, f14, f15;
+      s390_bfp_unop_t bfpop;
+      s390_round_t rounding_mode;
+
+      /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+      f12 = make_fpr(12);
+      f13 = make_fpr(13);
+      f14 = make_fpr(14);
+      f15 = make_fpr(15);
+
+      switch (expr->Iex.Binop.op) {
+      case Iop_SqrtF128:
+         s390_isel_float128_expr(&op_hi, &op_lo, env, expr->Iex.Binop.arg2);
+
+         /* operand --> (f13, f15) */
+         addInstr(env, s390_insn_move(8, f13, op_hi));
+         addInstr(env, s390_insn_move(8, f15, op_lo));
+
+         bfpop = S390_BFP_SQRT;
+         rounding_mode = decode_rounding_mode(expr->Iex.Binop.arg1);
+
+         addInstr(env, s390_insn_bfp128_unop(16, bfpop, f12, f14, f13, f15,
+                                             rounding_mode));
+
+         /* Move result to virtual destination registers */
+         *dst_hi = newVRegF(env);
+         *dst_lo = newVRegF(env);
+         addInstr(env, s390_insn_move(8, *dst_hi, f12));
+         addInstr(env, s390_insn_move(8, *dst_lo, f14));
+         return;
+
+      case Iop_F64HLtoF128:
+         *dst_hi = s390_isel_float_expr(env, expr->Iex.Binop.arg1);
+         *dst_lo = s390_isel_float_expr(env, expr->Iex.Binop.arg2);
+         return;
+
+      default:
+         goto irreducible;
+      }
+   }
+
+      /* --------- UNARY OP --------- */
+   case Iex_Unop: {
+      IRExpr *left = expr->Iex.Binop.arg1;
+      s390_bfp_unop_t bfpop;
+      s390_round_t rounding_mode;
+      HReg op_hi, op_lo, op, f12, f13, f14, f15;
+
+      /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+      f12 = make_fpr(12);
+      f13 = make_fpr(13);
+      f14 = make_fpr(14);
+      f15 = make_fpr(15);
+
+      switch (expr->Iex.Binop.op) {
+      case Iop_NegF128:       bfpop = S390_BFP_NEG;          goto float128_opnd;
+      case Iop_AbsF128:       bfpop = S390_BFP_ABS;          goto float128_opnd;
+      case Iop_I32StoF128:    bfpop = S390_BFP_I32_TO_F128;  goto convert_int;
+      case Iop_I64StoF128:    bfpop = S390_BFP_I64_TO_F128;  goto convert_int;
+      case Iop_F32toF128:     bfpop = S390_BFP_F32_TO_F128;  goto convert_float;
+      case Iop_F64toF128:     bfpop = S390_BFP_F64_TO_F128;  goto convert_float;
+      default:
+         goto irreducible;
+      }
+
+   float128_opnd:
+      s390_isel_float128_expr(&op_hi, &op_lo, env, left);
+
+      /* operand --> (f13, f15) */
+      addInstr(env, s390_insn_move(8, f13, op_hi));
+      addInstr(env, s390_insn_move(8, f15, op_lo));
+
+      rounding_mode = S390_ROUND_NEAREST_EVEN;  /* will not be used later on */
+      addInstr(env, s390_insn_bfp128_unop(16, bfpop, f12, f14, f13, f15,
+                                          rounding_mode));
+      goto move_dst;
+
+   convert_float:
+      op  = s390_isel_float_expr(env, left);
+      addInstr(env, s390_insn_bfp128_convert_to(16, bfpop, f12, f14,
+                                                op));
+      goto move_dst;
+
+   convert_int:
+      op  = s390_isel_int_expr(env, left);
+      addInstr(env, s390_insn_bfp128_convert_to(16, bfpop, f12, f14,
+                                                op));
+      goto move_dst;
+
+   move_dst:
+      /* Move result to virtual destination registers */
+      *dst_hi = newVRegF(env);
+      *dst_lo = newVRegF(env);
+      addInstr(env, s390_insn_move(8, *dst_hi, f12));
+      addInstr(env, s390_insn_move(8, *dst_lo, f14));
+      return;
+   }
+
+   default:
+      goto irreducible;
+   }
+
+   /* We get here if no pattern matched. */
+ irreducible:
+   ppIRExpr(expr);
+   vpanic("s390_isel_int_expr: cannot reduce tree");
+}
+
+/* Compute a 128-bit value into two 64-bit registers. These may be either
+   real or virtual regs; in any case they must not be changed by subsequent
+   code emitted by the caller. */
+static void
+s390_isel_float128_expr(HReg *dst_hi, HReg *dst_lo, ISelEnv *env, IRExpr *expr)
+{
+   s390_isel_float128_expr_wrk(dst_hi, dst_lo, env, expr);
+
+   /* Sanity checks ... */
+   vassert(hregIsVirtual(*dst_hi));
+   vassert(hregIsVirtual(*dst_lo));
+   vassert(hregClass(*dst_hi) == HRcFlt64);
+   vassert(hregClass(*dst_lo) == HRcFlt64);
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Floating point expressions (64 bit)         ---*/
+/*---------------------------------------------------------*/
+
+static HReg
+s390_isel_float_expr_wrk(ISelEnv *env, IRExpr *expr)
+{
+   IRType ty = typeOfIRExpr(env->type_env, expr);
+   UChar size;
+
+   vassert(ty == Ity_F32 || ty == Ity_F64);
+
+   size = sizeofIRType(ty);
+
+   switch (expr->tag) {
+   case Iex_RdTmp:
+      /* Return the virtual register that holds the temporary. */
+      return lookupIRTemp(env, expr->Iex.RdTmp.tmp);
+
+      /* --------- LOAD --------- */
+   case Iex_Load: {
+      HReg        dst = newVRegF(env);
+      s390_amode *am  = s390_isel_amode(env, expr->Iex.Load.addr);
+
+      if (expr->Iex.Load.end != Iend_BE)
+         goto irreducible;
+
+      addInstr(env, s390_insn_load(size, dst, am));
+
+      return dst;
+   }
+
+      /* --------- GET --------- */
+   case Iex_Get: {
+      HReg dst = newVRegF(env);
+      s390_amode *am = s390_amode_for_guest_state(expr->Iex.Get.offset);
+
+      addInstr(env, s390_insn_load(size, dst, am));
+
+      return dst;
+   }
+
+      /* --------- LITERAL --------- */
+
+      /* Load a literal into a register. Create a "load immediate"
+         v-insn and return the register. */
+   case Iex_Const: {
+      ULong value;
+      HReg  dst = newVRegF(env);
+      const IRConst *con = expr->Iex.Const.con;
+
+      /* Bitwise copy of the value. No sign/zero-extension */
+      switch (con->tag) {
+      case Ico_F32i: value = con->Ico.F32i; break;
+      case Ico_F64i: value = con->Ico.F64i; break;
+      default:       vpanic("s390_isel_float_expr: invalid constant");
+      }
+
+      if (value != 0) vpanic("cannot load immediate floating point constant");
+
+      addInstr(env, s390_insn_load_immediate(size, dst, value));
+
+      return dst;
+   }
+
+      /* --------- 4-ary OP --------- */
+   case Iex_Qop: {
+      HReg op1, op2, op3, dst;
+      s390_bfp_triop_t bfpop;
+      s390_round_t rounding_mode;
+
+      op1 = s390_isel_float_expr(env, expr->Iex.Qop.arg2);
+      op2 = s390_isel_float_expr(env, expr->Iex.Qop.arg3);
+      op3 = s390_isel_float_expr(env, expr->Iex.Qop.arg4);
+      dst = newVRegF(env);
+      addInstr(env, s390_insn_move(size, dst, op1));
+
+      switch (expr->Iex.Qop.op) {
+      case Iop_MAddF32:
+      case Iop_MAddF64:  bfpop = S390_BFP_MADD; break;
+      case Iop_MSubF32:
+      case Iop_MSubF64:  bfpop = S390_BFP_MSUB; break;
+
+      default:
+         goto irreducible;
+      }
+
+      rounding_mode = decode_rounding_mode(expr->Iex.Qop.arg1);
+      addInstr(env, s390_insn_bfp_triop(size, bfpop, dst, op2, op3,
+                                        rounding_mode));
+      return dst;
+   }
+
+      /* --------- TERNARY OP --------- */
+   case Iex_Triop: {
+      IROp    op    = expr->Iex.Triop.op;
+      IRExpr *left  = expr->Iex.Triop.arg2;
+      IRExpr *right = expr->Iex.Triop.arg3;
+      s390_bfp_binop_t bfpop;
+      s390_round_t rounding_mode;
+      HReg h1, op2, dst;
+
+      h1   = s390_isel_float_expr(env, left);  /* Process 1st operand */
+      op2  = s390_isel_float_expr(env, right); /* Process 2nd operand */
+      dst  = newVRegF(env);
+      addInstr(env, s390_insn_move(size, dst, h1));
+      switch (op) {
+      case Iop_AddF32:
+      case Iop_AddF64:  bfpop = S390_BFP_ADD; break;
+      case Iop_SubF32:
+      case Iop_SubF64:  bfpop = S390_BFP_SUB; break;
+      case Iop_MulF32:
+      case Iop_MulF64:  bfpop = S390_BFP_MUL; break;
+      case Iop_DivF32:
+      case Iop_DivF64:  bfpop = S390_BFP_DIV; break;
+
+      default:
+         goto irreducible;
+      }
+
+      rounding_mode = decode_rounding_mode(expr->Iex.Triop.arg1);
+      addInstr(env, s390_insn_bfp_binop(size, bfpop, dst, op2, rounding_mode));
+      return dst;
+   }
+
+      /* --------- BINARY OP --------- */
+   case Iex_Binop: {
+      IROp    op   = expr->Iex.Binop.op;
+      IRExpr *left = expr->Iex.Binop.arg2;
+      HReg h1, dst;
+      s390_bfp_unop_t bfpop;
+      s390_round_t rounding_mode;
+      Int integer_operand;
+
+      integer_operand = 1;
+
+      switch (op) {
+      case Iop_SqrtF32:
+      case Iop_SqrtF64:
+         bfpop = S390_BFP_SQRT;
+         integer_operand = 0;
+         break;
+
+      case Iop_F64toF32:
+         bfpop = S390_BFP_F64_TO_F32;
+         integer_operand = 0;
+         break;
+
+      case Iop_I32StoF32: bfpop = S390_BFP_I32_TO_F32; break;
+      case Iop_I64StoF32: bfpop = S390_BFP_I64_TO_F32; break;
+      case Iop_I64StoF64: bfpop = S390_BFP_I64_TO_F64; break;
+      default:
+         goto irreducible;
+
+      case Iop_F128toF64:
+      case Iop_F128toF32: {
+         HReg op_hi, op_lo, f12, f13, f14, f15;
+
+         bfpop = op == Iop_F128toF32 ? S390_BFP_F128_TO_F32
+            : S390_BFP_F128_TO_F64;
+
+         rounding_mode = decode_rounding_mode(expr->Iex.Binop.arg1);
+
+         s390_isel_float128_expr(&op_hi, &op_lo, env, expr->Iex.Binop.arg2);
+
+         /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+         f12 = make_fpr(12);
+         f13 = make_fpr(13);
+         f14 = make_fpr(14);
+         f15 = make_fpr(15);
+
+         /* operand --> (f13, f15) */
+         addInstr(env, s390_insn_move(8, f13, op_hi));
+         addInstr(env, s390_insn_move(8, f15, op_lo));
+
+         dst = newVRegF(env);
+         addInstr(env, s390_insn_bfp128_unop(16, bfpop, f12, f14, f13, f15,
+                                             rounding_mode));
+
+         /* Move result to virtual destination registers */
+         addInstr(env, s390_insn_move(8, dst, f12));
+         return dst;
+      }
+      }
+
+      /* Process operand */
+      if (integer_operand) {
+         h1  = s390_isel_int_expr(env, left);
+      } else {
+         h1  = s390_isel_float_expr(env, left);
+      }
+
+      dst = newVRegF(env);
+      rounding_mode = decode_rounding_mode(expr->Iex.Binop.arg1);
+      addInstr(env, s390_insn_bfp_unop(size, bfpop, dst, h1, rounding_mode));
+      return dst;
+   }
+
+      /* --------- UNARY OP --------- */
+   case Iex_Unop: {
+      IROp    op   = expr->Iex.Unop.op;
+      IRExpr *left = expr->Iex.Unop.arg;
+      s390_bfp_unop_t bfpop;
+      s390_round_t rounding_mode;
+      HReg h1, dst;
+
+      if (op == Iop_F128HItoF64 || op == Iop_F128LOtoF64) {
+         HReg dst_hi, dst_lo;
+
+         s390_isel_float128_expr(&dst_hi, &dst_lo, env, left);
+         return op == Iop_F128LOtoF64 ? dst_lo : dst_hi;
+      }
+
+      if (op == Iop_ReinterpI64asF64) {
+         dst = newVRegF(env);
+         h1  = s390_isel_int_expr(env, left);     /* Process the operand */
+         addInstr(env, s390_insn_move(size, dst, h1));
+
+         return dst;
+      }
+
+      switch (op) {
+      case Iop_NegF32:
+      case Iop_NegF64:
+         if (left->tag == Iex_Unop &&
+             (left->Iex.Unop.op == Iop_AbsF32 || left->Iex.Unop.op == Iop_AbsF64))
+            bfpop = S390_BFP_NABS;
+         else
+            bfpop = S390_BFP_NEG;
+         break;
+
+      case Iop_AbsF32:
+      case Iop_AbsF64:        bfpop = S390_BFP_ABS;  break;
+      case Iop_I32StoF64:     bfpop = S390_BFP_I32_TO_F64;  break;
+      case Iop_F32toF64:      bfpop = S390_BFP_F32_TO_F64;  break;
+      default:
+         goto irreducible;
+      }
+
+      /* Process operand */
+      if (op == Iop_I32StoF64)
+         h1 = s390_isel_int_expr(env, left);
+      else if (bfpop == S390_BFP_NABS)
+         h1 = s390_isel_float_expr(env, left->Iex.Unop.arg);
+      else
+         h1 = s390_isel_float_expr(env, left);
+
+      dst = newVRegF(env);
+      rounding_mode = S390_ROUND_NEAREST_EVEN;  /* will not be used later on */
+      addInstr(env, s390_insn_bfp_unop(size, bfpop, dst, h1, rounding_mode));
+      return dst;
+   }
+
+   default:
+      goto irreducible;
+   }
+
+   /* We get here if no pattern matched. */
+ irreducible:
+   ppIRExpr(expr);
+   vpanic("s390_isel_float_expr: cannot reduce tree");
+}
+
+
+static HReg
+s390_isel_float_expr(ISelEnv *env, IRExpr *expr)
+{
+   HReg dst = s390_isel_float_expr_wrk(env, expr);
+
+   /* Sanity checks ... */
+   vassert(hregClass(dst) == HRcFlt64);
+   vassert(hregIsVirtual(dst));
+
+   return dst;
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Condition Code                              ---*/
+/*---------------------------------------------------------*/
+
+/* This function handles all operators that produce a 1-bit result */
+static s390_cc_t
+s390_isel_cc(ISelEnv *env, IRExpr *cond)
+{
+   UChar size;
+
+   vassert(typeOfIRExpr(env->type_env, cond) == Ity_I1);
+
+   /* Constant: either 1 or 0 */
+   if (cond->tag == Iex_Const) {
+      vassert(cond->Iex.Const.con->tag == Ico_U1);
+      vassert(cond->Iex.Const.con->Ico.U1 == True
+              || cond->Iex.Const.con->Ico.U1 == False);
+
+      return cond->Iex.Const.con->Ico.U1 == True ? S390_CC_ALWAYS : S390_CC_NEVER;
+   }
+
+   /* Variable: values are 1 or 0 */
+   if (cond->tag == Iex_RdTmp) {
+      IRTemp tmp = cond->Iex.RdTmp.tmp;
+      HReg   reg = lookupIRTemp(env, tmp);
+
+      /* Load-and-test does not modify REG; so this is OK. */
+      if (typeOfIRTemp(env->type_env, tmp) == Ity_I1)
+         size = 4;
+      else
+         size = sizeofIRType(typeOfIRTemp(env->type_env, tmp));
+      addInstr(env, s390_insn_test(size, s390_opnd_reg(reg)));
+      return S390_CC_NE;
+   }
+
+   /* Unary operators */
+   if (cond->tag == Iex_Unop) {
+      IRExpr *arg = cond->Iex.Unop.arg;
+
+      switch (cond->Iex.Unop.op) {
+      case Iop_Not1:  /* Not1(cond) */
+         /* Generate code for EXPR, and negate the test condition */
+         return s390_cc_invert(s390_isel_cc(env, arg));
+
+         /* Iop_32/64to1  select the LSB from their operand */
+      case Iop_32to1:
+      case Iop_64to1: {
+         HReg dst = s390_isel_int_expr(env, arg);
+
+         size = sizeofIRType(typeOfIRExpr(env->type_env, arg));
+
+         addInstr(env, s390_insn_alu(size, S390_ALU_AND, dst, s390_opnd_imm(1)));
+         addInstr(env, s390_insn_test(size, s390_opnd_reg(dst)));
+         return S390_CC_NE;
+      }
+
+      case Iop_CmpNEZ8:
+      case Iop_CmpNEZ16: {
+         s390_opnd_RMI src;
+         s390_unop_t   op;
+         HReg dst;
+
+         op  = (cond->Iex.Unop.op == Iop_CmpNEZ8) ? S390_ZERO_EXTEND_8
+            : S390_ZERO_EXTEND_16;
+         dst = newVRegI(env);
+         src = s390_isel_int_expr_RMI(env, arg);
+         addInstr(env, s390_insn_unop(4, op, dst, src));
+         addInstr(env, s390_insn_test(4, s390_opnd_reg(dst)));
+         return S390_CC_NE;
+      }
+
+      case Iop_CmpNEZ32:
+      case Iop_CmpNEZ64: {
+         s390_opnd_RMI src;
+
+         src = s390_isel_int_expr_RMI(env, arg);
+         size = sizeofIRType(typeOfIRExpr(env->type_env, arg));
+         addInstr(env, s390_insn_test(size, src));
+         return S390_CC_NE;
+      }
+
+      default:
+         goto fail;
+      }
+   }
+
+   /* Binary operators */
+   if (cond->tag == Iex_Binop) {
+      IRExpr *arg1 = cond->Iex.Binop.arg1;
+      IRExpr *arg2 = cond->Iex.Binop.arg2;
+      HReg reg1, reg2;
+
+      size = sizeofIRType(typeOfIRExpr(env->type_env, arg1));
+
+      switch (cond->Iex.Binop.op) {
+         s390_unop_t op;
+         s390_cc_t   result;
+
+      case Iop_CmpEQ8:
+      case Iop_CasCmpEQ8:
+         op     = S390_ZERO_EXTEND_8;
+         result = S390_CC_E;
+         goto do_compare_ze;
+
+      case Iop_CmpNE8:
+      case Iop_CasCmpNE8:
+         op     = S390_ZERO_EXTEND_8;
+         result = S390_CC_NE;
+         goto do_compare_ze;
+
+      case Iop_CmpEQ16:
+      case Iop_CasCmpEQ16:
+         op     = S390_ZERO_EXTEND_16;
+         result = S390_CC_E;
+         goto do_compare_ze;
+
+      case Iop_CmpNE16:
+      case Iop_CasCmpNE16:
+         op     = S390_ZERO_EXTEND_16;
+         result = S390_CC_NE;
+         goto do_compare_ze;
+
+      do_compare_ze: {
+            s390_opnd_RMI op1, op2;
+
+            op1  = s390_isel_int_expr_RMI(env, arg1);
+            reg1 = newVRegI(env);
+            addInstr(env, s390_insn_unop(4, op, reg1, op1));
+
+            op2  = s390_isel_int_expr_RMI(env, arg2);
+            reg2 = newVRegI(env);
+            addInstr(env, s390_insn_unop(4, op, reg2, op2));  /* zero extend */
+
+            op2 = s390_opnd_reg(reg2);
+            addInstr(env, s390_insn_compare(4, reg1, op2, False));
+
+            return result;
+         }
+
+      case Iop_CmpEQ32:
+      case Iop_CmpEQ64:
+      case Iop_CasCmpEQ32:
+      case Iop_CasCmpEQ64:
+         result = S390_CC_E;
+         goto do_compare;
+
+      case Iop_CmpNE32:
+      case Iop_CmpNE64:
+      case Iop_CasCmpNE32:
+      case Iop_CasCmpNE64:
+         result = S390_CC_NE;
+         goto do_compare;
+
+      do_compare: {
+            HReg op1;
+            s390_opnd_RMI op2;
+
+            order_commutative_operands(arg1, arg2);
+
+            op1 = s390_isel_int_expr(env, arg1);
+            op2 = s390_isel_int_expr_RMI(env, arg2);
+
+            addInstr(env, s390_insn_compare(size, op1, op2, False));
+
+            return result;
+         }
+
+      case Iop_CmpLT32S:
+      case Iop_CmpLE32S:
+      case Iop_CmpLT64S:
+      case Iop_CmpLE64S: {
+         HReg op1;
+         s390_opnd_RMI op2;
+
+         op1 = s390_isel_int_expr(env, arg1);
+         op2 = s390_isel_int_expr_RMI(env, arg2);
+
+         addInstr(env, s390_insn_compare(size, op1, op2, True));
+
+         return (cond->Iex.Binop.op == Iop_CmpLT32S ||
+                 cond->Iex.Binop.op == Iop_CmpLT64S) ? S390_CC_L : S390_CC_LE;
+      }
+
+      case Iop_CmpLT32U:
+      case Iop_CmpLE32U:
+      case Iop_CmpLT64U:
+      case Iop_CmpLE64U: {
+         HReg op1;
+         s390_opnd_RMI op2;
+
+         op1 = s390_isel_int_expr(env, arg1);
+         op2 = s390_isel_int_expr_RMI(env, arg2);
+
+         addInstr(env, s390_insn_compare(size, op1, op2, False));
+
+         return (cond->Iex.Binop.op == Iop_CmpLT32U ||
+                 cond->Iex.Binop.op == Iop_CmpLT64U) ? S390_CC_L : S390_CC_LE;
+      }
+
+      default:
+         goto fail;
+      }
+   }
+
+ fail:
+   ppIRExpr(cond);
+   vpanic("s390_isel_cc: unexpected operator");
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Statements                                  ---*/
+/*---------------------------------------------------------*/
+
+static void
+s390_isel_stmt(ISelEnv *env, IRStmt *stmt)
+{
+   if (vex_traceflags & VEX_TRACE_VCODE) {
+      vex_printf("\n -- ");
+      ppIRStmt(stmt);
+      vex_printf("\n");
+   }
+
+   switch (stmt->tag) {
+
+      /* --------- STORE --------- */
+   case Ist_Store: {
+      IRType tyd = typeOfIRExpr(env->type_env, stmt->Ist.Store.data);
+      s390_amode *am;
+      HReg src;
+
+      if (stmt->Ist.Store.end != Iend_BE) goto stmt_fail;
+
+      am = s390_isel_amode(env, stmt->Ist.Store.addr);
+
+      switch (tyd) {
+      case Ity_I8:
+      case Ity_I16:
+      case Ity_I32:
+      case Ity_I64:
+         src = s390_isel_int_expr(env, stmt->Ist.Store.data);
+         break;
+
+      case Ity_F32:
+      case Ity_F64:
+         src = s390_isel_float_expr(env, stmt->Ist.Store.data);
+         break;
+
+      case Ity_F128:
+         /* Cannot occur. No such instruction */
+         vpanic("Ist_Store with F128 data");
+
+      default:
+         goto stmt_fail;
+      }
+
+      addInstr(env, s390_insn_store(sizeofIRType(tyd), am, src));
+      return;
+   }
+
+      /* --------- PUT --------- */
+   case Ist_Put: {
+      IRType tyd = typeOfIRExpr(env->type_env, stmt->Ist.Put.data);
+      HReg src;
+      s390_amode *am;
+
+      am = s390_amode_for_guest_state(stmt->Ist.Put.offset);
+
+      switch (tyd) {
+      case Ity_I8:
+      case Ity_I16:
+      case Ity_I32:
+      case Ity_I64:
+         src = s390_isel_int_expr(env, stmt->Ist.Put.data);
+         break;
+
+      case Ity_F32:
+      case Ity_F64:
+         src = s390_isel_float_expr(env, stmt->Ist.Put.data);
+         break;
+
+      case Ity_F128:
+         /* Does not occur. See function put_fpr_pair. */
+         vpanic("Ist_Put with F128 data");
+
+      default:
+         goto stmt_fail;
+      }
+
+      addInstr(env, s390_insn_store(sizeofIRType(tyd), am, src));
+      return;
+   }
+
+      /* --------- TMP --------- */
+   case Ist_WrTmp: {
+      IRTemp tmp = stmt->Ist.WrTmp.tmp;
+      IRType tyd = typeOfIRTemp(env->type_env, tmp);
+      HReg src, dst;
+
+      switch (tyd) {
+      case Ity_I128: {
+         HReg dst_hi, dst_lo, res_hi, res_lo;
+
+         s390_isel_int128_expr(&res_hi, &res_lo, env, stmt->Ist.WrTmp.data);
+         lookupIRTemp128(&dst_hi, &dst_lo, env, tmp);
+
+         addInstr(env, s390_insn_move(8, dst_hi, res_hi));
+         addInstr(env, s390_insn_move(8, dst_lo, res_lo));
+         return;
+      }
+
+      case Ity_I8:
+      case Ity_I16:
+      case Ity_I32:
+      case Ity_I64:
+         src = s390_isel_int_expr(env, stmt->Ist.WrTmp.data);
+         dst = lookupIRTemp(env, tmp);
+         break;
+
+      case Ity_I1: {
+         s390_cc_t cond = s390_isel_cc(env, stmt->Ist.WrTmp.data);
+         dst = lookupIRTemp(env, tmp);
+         addInstr(env, s390_insn_cc2bool(dst, cond));
+         return;
+      }
+
+      case Ity_F32:
+      case Ity_F64:
+         src = s390_isel_float_expr(env, stmt->Ist.WrTmp.data);
+         dst = lookupIRTemp(env, tmp);
+         break;
+
+      case Ity_F128: {
+         HReg dst_hi, dst_lo, res_hi, res_lo;
+
+         s390_isel_float128_expr(&res_hi, &res_lo, env, stmt->Ist.WrTmp.data);
+         lookupIRTemp128(&dst_hi, &dst_lo, env, tmp);
+
+         addInstr(env, s390_insn_move(8, dst_hi, res_hi));
+         addInstr(env, s390_insn_move(8, dst_lo, res_lo));
+         return;
+      }
+
+      default:
+         goto stmt_fail;
+      }
+
+      addInstr(env, s390_insn_move(sizeofIRType(tyd), dst, src));
+      return;
+   }
+
+      /* --------- Call to DIRTY helper --------- */
+   case Ist_Dirty: {
+      IRType   retty;
+      IRDirty* d = stmt->Ist.Dirty.details;
+      Bool     passBBP;
+
+      if (d->nFxState == 0)
+         vassert(!d->needsBBP);
+
+      passBBP = toBool(d->nFxState > 0 && d->needsBBP);
+
+      doHelperCall(env, passBBP, d->guard, d->cee, d->args);
+
+      /* Now figure out what to do with the returned value, if any. */
+      if (d->tmp == IRTemp_INVALID)
+         /* No return value.  Nothing to do. */
+         return;
+
+      retty = typeOfIRTemp(env->type_env, d->tmp);
+      if (retty == Ity_I64 || retty == Ity_I32
+          || retty == Ity_I16 || retty == Ity_I8) {
+         /* Move the returned value into the return register */
+         HReg dst = lookupIRTemp(env, d->tmp);
+         addInstr(env, s390_insn_move(sizeofIRType(retty), dst,
+                                      mkHReg(S390_REGNO_RETURN_VALUE,
+                                             HRcInt64, False)));
+         return;
+      }
+      break;
+   }
+
+   case Ist_CAS:
+      if (stmt->Ist.CAS.details->oldHi == IRTemp_INVALID) {
+         IRCAS *cas = stmt->Ist.CAS.details;
+         s390_amode *op2 = s390_isel_amode(env, cas->addr);
+         HReg op3 = s390_isel_int_expr(env, cas->dataLo);  /* new value */
+         HReg op1 = s390_isel_int_expr(env, cas->expdLo);  /* expected value */
+         HReg old = lookupIRTemp(env, cas->oldLo);
+
+         if (typeOfIRTemp(env->type_env, cas->oldLo) == Ity_I32) {
+            addInstr(env, s390_insn_cas(4, op1, op2, op3, old));
+         } else {
+            addInstr(env, s390_insn_cas(8, op1, op2, op3, old));
+         }
+         return;
+      } else {
+         vpanic("compare double and swap not implemented\n");
+      }
+      break;
+
+      /* --------- EXIT --------- */
+   case Ist_Exit: {
+      s390_opnd_RMI dst;
+      s390_cc_t cond;
+      IRConstTag tag = stmt->Ist.Exit.dst->tag;
+
+      if (tag != Ico_U64)
+         vpanic("s390_isel_stmt: Ist_Exit: dst is not a 64-bit value");
+
+      dst  = s390_isel_int_expr_RMI(env, IRExpr_Const(stmt->Ist.Exit.dst));
+      cond = s390_isel_cc(env, stmt->Ist.Exit.guard);
+      addInstr(env, s390_insn_branch(stmt->Ist.Exit.jk, cond, dst));
+      return;
+   }
+
+      /* --------- MEM FENCE --------- */
+   case Ist_MBE:
+      switch (stmt->Ist.MBE.event) {
+         case Imbe_Fence:
+            addInstr(env, s390_insn_mfence());
+            return;
+         default:
+            break;
+      }
+      break;
+
+      /* --------- Miscellaneous --------- */
+
+   case Ist_PutI:    /* Not needed */
+   case Ist_IMark:   /* Doesn't generate any executable code */
+   case Ist_NoOp:    /* Doesn't generate any executable code */
+   case Ist_AbiHint: /* Meaningless in IR */
+      return;
+
+   default:
+      break;
+   }
+
+ stmt_fail:
+   ppIRStmt(stmt);
+   vpanic("s390_isel_stmt");
+}
+
+
+/*---------------------------------------------------------*/
+/*--- ISEL: Basic block terminators (Nexts)             ---*/
+/*---------------------------------------------------------*/
+
+static void
+iselNext(ISelEnv *env, IRExpr *next, IRJumpKind jk)
+{
+   s390_opnd_RMI dst;
+
+   if (vex_traceflags & VEX_TRACE_VCODE) {
+      vex_printf("\n-- goto {");
+      ppIRJumpKind(jk);
+      vex_printf("} ");
+      ppIRExpr(next);
+      vex_printf("\n");
+   }
+
+   dst = s390_isel_int_expr_RMI(env, next);
+   addInstr(env, s390_insn_branch(jk, S390_CC_ALWAYS, dst));
+}
+
+
+/*---------------------------------------------------------*/
+/*--- Insn selector top-level                           ---*/
+/*---------------------------------------------------------*/
+
+/* Translate an entire SB to s390 code. */
+
+HInstrArray *
+iselSB_S390(IRSB *bb, VexArch arch_host, VexArchInfo *archinfo_host,
+             VexAbiInfo *vbi)
+{
+   UInt     i, j;
+   HReg     hreg, hregHI;
+   ISelEnv *env;
+   UInt     hwcaps_host = archinfo_host->hwcaps;
+
+   /* KLUDGE: export archinfo_host. */
+   s390_archinfo_host = archinfo_host;
+
+   /* Do some sanity checks */
+   vassert((VEX_HWCAPS_S390X(hwcaps_host) & ~(VEX_HWCAPS_S390X_ALL)) == 0);
+
+   /* Make up an initial environment to use. */
+   env = LibVEX_Alloc(sizeof(ISelEnv));
+   env->vreg_ctr = 0;
+
+   /* Set up output code array. */
+   env->code = newHInstrArray();
+
+   /* Copy BB's type env. */
+   env->type_env = bb->tyenv;
+
+   /* Make up an IRTemp -> virtual HReg mapping.  This doesn't
+      change as we go along. For some reason types_used has Int type -- but
+      it should be unsigned. Internally we use an unsigned type; so we
+      assert it here. */
+   vassert(bb->tyenv->types_used >= 0);
+
+   env->n_vregmap = bb->tyenv->types_used;
+   env->vregmap   = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
+   env->vregmapHI = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
+
+   /* and finally ... */
+   env->hwcaps    = hwcaps_host;
+
+   /* For each IR temporary, allocate a suitably-kinded virtual
+      register. */
+   j = 0;
+   for (i = 0; i < env->n_vregmap; i++) {
+      hregHI = hreg = INVALID_HREG;
+      switch (bb->tyenv->types[i]) {
+      case Ity_I1:
+      case Ity_I8:
+      case Ity_I16:
+      case Ity_I32:
+         hreg = mkHReg(j++, HRcInt64, True);
+         break;
+
+      case Ity_I64:
+         hreg   = mkHReg(j++, HRcInt64, True);
+         break;
+
+      case Ity_I128:
+         hreg   = mkHReg(j++, HRcInt64, True);
+         hregHI = mkHReg(j++, HRcInt64, True);
+         break;
+
+      case Ity_F32:
+      case Ity_F64:
+         hreg = mkHReg(j++, HRcFlt64, True);
+         break;
+
+      case Ity_F128:
+         hreg   = mkHReg(j++, HRcFlt64, True);
+         hregHI = mkHReg(j++, HRcFlt64, True);
+         break;
+
+      case Ity_V128: /* fall through */
+      default:
+         ppIRType(bb->tyenv->types[i]);
+         vpanic("s390_isel_sb: IRTemp type");
+      }
+
+      env->vregmap[i]   = hreg;
+      env->vregmapHI[i] = hregHI;
+   }
+   env->vreg_ctr = j;
+
+   /* Ok, finally we can iterate over the statements. */
+   for (i = 0; i < bb->stmts_used; i++)
+      if (bb->stmts[i])
+         s390_isel_stmt(env, bb->stmts[i]);
+
+   iselNext(env, bb->next, bb->jumpkind);
+
+   /* Record the number of vregs we used. */
+   env->code->n_vregs = env->vreg_ctr;
+
+   return env->code;
+}
+
+/*---------------------------------------------------------------*/
+/*--- end                                    host_s390_isel.c ---*/
+/*---------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_x86_isel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_x86_isel.c
index e6d92e0e4..db2b8bcd0 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_x86_isel.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/host_x86_isel.c
@@ -1835,6 +1835,25 @@ static X86CondCode iselCondCode_wrk ( ISelEnv* env, IRExpr* e )
       }
    }
 
+   /* CmpNE32(ccall, 32-bit constant) (--smc-check=all optimisation).
+      Saves a "movl %eax, %tmp" compared to the default route. */
+   if (e->tag == Iex_Binop 
+       && e->Iex.Binop.op == Iop_CmpNE32
+       && e->Iex.Binop.arg1->tag == Iex_CCall
+       && e->Iex.Binop.arg2->tag == Iex_Const) {
+      IRExpr* cal = e->Iex.Binop.arg1;
+      IRExpr* con = e->Iex.Binop.arg2;
+      /* clone & partial-eval of generic Iex_CCall and Iex_Const cases */
+      vassert(cal->Iex.CCall.retty == Ity_I32); /* else ill-typed IR */
+      vassert(con->Iex.Const.con->tag == Ico_U32);
+      /* Marshal args, do the call. */
+      doHelperCall( env, False, NULL, cal->Iex.CCall.cee, cal->Iex.CCall.args );
+      addInstr(env, X86Instr_Alu32R(Xalu_CMP,
+                                    X86RMI_Imm(con->Iex.Const.con->Ico.U32),
+                                    hregX86_EAX()));
+      return Xcc_NZ;
+   }
+
    /* Cmp*32*(x,y) */
    if (e->tag == Iex_Binop 
        && (e->Iex.Binop.op == Iop_CmpEQ32
@@ -2488,6 +2507,20 @@ static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e )
             return;
          }
 
+         /* 16Uto64(e) */
+         case Iop_16Uto64: {
+            HReg tLo = newVRegI(env);
+            HReg tHi = newVRegI(env);
+            HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
+            addInstr(env, mk_iMOVsd_RR(src,tLo));
+            addInstr(env, X86Instr_Alu32R(Xalu_AND,
+                                          X86RMI_Imm(0xFFFF), tLo));
+            addInstr(env, X86Instr_Alu32R(Xalu_MOV, X86RMI_Imm(0), tHi));
+            *rHi = tHi;
+            *rLo = tLo;
+            return;
+         }
+
          /* V128{HI}to64 */
          case Iop_V128HIto64:
          case Iop_V128to64: {
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_defs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_defs.c
index f84f11d03..07bc8bb18 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_defs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_defs.c
@@ -56,6 +56,7 @@ void ppIRType ( IRType ty )
       case Ity_I128:    vex_printf( "I128"); break;
       case Ity_F32:     vex_printf( "F32");  break;
       case Ity_F64:     vex_printf( "F64");  break;
+      case Ity_F128:    vex_printf( "F128"); break;
       case Ity_V128:    vex_printf( "V128"); break;
       default: vex_printf("ty = 0x%x\n", (Int)ty);
                vpanic("ppIRType");
@@ -64,7 +65,7 @@ void ppIRType ( IRType ty )
 
 void ppIRConst ( IRConst* con )
 {
-   union { ULong i64; Double f64; } u;
+   union { ULong i64; Double f64; UInt i32; Float f32; } u;
    vassert(sizeof(ULong) == sizeof(Double));
    switch (con->tag) {
       case Ico_U1:   vex_printf( "%d:I1",        con->Ico.U1 ? 1 : 0); break;
@@ -72,6 +73,10 @@ void ppIRConst ( IRConst* con )
       case Ico_U16:  vex_printf( "0x%x:I16",     (UInt)(con->Ico.U16)); break;
       case Ico_U32:  vex_printf( "0x%x:I32",     (UInt)(con->Ico.U32)); break;
       case Ico_U64:  vex_printf( "0x%llx:I64",   (ULong)(con->Ico.U64)); break;
+      case Ico_F32:  u.f32 = con->Ico.F32;
+                     vex_printf( "F32{0x%x}",   u.i32);
+                     break;
+      case Ico_F32i: vex_printf( "F32i{0x%x}",   con->Ico.F32i); break;
       case Ico_F64:  u.f64 = con->Ico.F64;
                      vex_printf( "F64{0x%llx}",  u.i64);
                      break;
@@ -222,6 +227,8 @@ void ppIROp ( IROp op )
       case Iop_DivModU128to64: vex_printf("DivModU128to64"); return;
       case Iop_DivModS128to64: vex_printf("DivModS128to64"); return;
 
+      case Iop_DivModS64to64: vex_printf("DivModS64to64"); return;
+
       case Iop_16HIto8:  vex_printf("16HIto8"); return;
       case Iop_16to8:    vex_printf("16to8");   return;
       case Iop_8HLto16:  vex_printf("8HLto16"); return;
@@ -238,6 +245,14 @@ void ppIROp ( IROp op )
       case Iop_128to64:   vex_printf("128to64");   return;
       case Iop_64HLto128: vex_printf("64HLto128"); return;
 
+      case Iop_CmpF32:    vex_printf("CmpF32");    return;
+      case Iop_F32toI16S: vex_printf("F32toI16S");  return;
+      case Iop_F32toI32S: vex_printf("F32toI32S");  return;
+      case Iop_F32toI64S: vex_printf("F32toI64S");  return;
+      case Iop_I16StoF32: vex_printf("I16StoF32");  return;
+      case Iop_I32StoF32: vex_printf("I32StoF32");  return;
+      case Iop_I64StoF32: vex_printf("I64StoF32");  return;
+
       case Iop_AddF64:    vex_printf("AddF64"); return;
       case Iop_SubF64:    vex_printf("SubF64"); return;
       case Iop_MulF64:    vex_printf("MulF64"); return;
@@ -251,6 +266,32 @@ void ppIROp ( IROp op )
       case Iop_MulF32:    vex_printf("MulF32"); return;
       case Iop_DivF32:    vex_printf("DivF32"); return;
 
+        /* 128 bit floating point */
+      case Iop_AddF128:   vex_printf("AddF128");  return;
+      case Iop_SubF128:   vex_printf("SubF128");  return;
+      case Iop_MulF128:   vex_printf("MulF128");  return;
+      case Iop_DivF128:   vex_printf("DivF128");  return;
+      case Iop_AbsF128:   vex_printf("AbsF128");  return;
+      case Iop_NegF128:   vex_printf("NegF128");  return;
+      case Iop_SqrtF128:  vex_printf("SqrtF128"); return;
+      case Iop_CmpF128:   vex_printf("CmpF128");  return;
+
+      case Iop_F64HLtoF128: vex_printf("F64HLtoF128"); return;
+      case Iop_F128HItoF64: vex_printf("F128HItoF64"); return;
+      case Iop_F128LOtoF64: vex_printf("F128LOtoF64"); return;
+      case Iop_I32StoF128: vex_printf("I32StoF128"); return;
+      case Iop_I64StoF128: vex_printf("I64StoF128"); return;
+      case Iop_F128toI32S: vex_printf("F128toI32S"); return;
+      case Iop_F128toI64S: vex_printf("F128toI64S"); return;
+      case Iop_F32toF128:  vex_printf("F32toF128");  return;
+      case Iop_F64toF128:  vex_printf("F64toF128");  return;
+      case Iop_F128toF64:  vex_printf("F128toF64");  return;
+      case Iop_F128toF32:  vex_printf("F128toF32");  return;
+
+        /* s390 specific */
+      case Iop_MAddF32:    vex_printf("s390_MAddF32"); return;
+      case Iop_MSubF32:    vex_printf("s390_MSubF32"); return;
+
       case Iop_ScaleF64:      vex_printf("ScaleF64"); return;
       case Iop_AtanF64:       vex_printf("AtanF64"); return;
       case Iop_Yl2xF64:       vex_printf("Yl2xF64"); return;
@@ -284,6 +325,32 @@ void ppIROp ( IROp op )
       case Iop_TruncF64asF32: vex_printf("TruncF64asF32"); return;
       case Iop_CalcFPRF:      vex_printf("CalcFPRF"); return;
 
+      case Iop_Add16x2:   vex_printf("Add16x2"); return;
+      case Iop_Sub16x2:   vex_printf("Sub16x2"); return;
+      case Iop_QAdd16Sx2: vex_printf("QAdd16Sx2"); return;
+      case Iop_QAdd16Ux2: vex_printf("QAdd16Ux2"); return;
+      case Iop_QSub16Sx2: vex_printf("QSub16Sx2"); return;
+      case Iop_QSub16Ux2: vex_printf("QSub16Ux2"); return;
+      case Iop_HAdd16Ux2: vex_printf("HAdd16Ux2"); return;
+      case Iop_HAdd16Sx2: vex_printf("HAdd16Sx2"); return;
+      case Iop_HSub16Ux2: vex_printf("HSub16Ux2"); return;
+      case Iop_HSub16Sx2: vex_printf("HSub16Sx2"); return;
+
+      case Iop_Add8x4:   vex_printf("Add8x4"); return;
+      case Iop_Sub8x4:   vex_printf("Sub8x4"); return;
+      case Iop_QAdd8Sx4: vex_printf("QAdd8Sx4"); return;
+      case Iop_QAdd8Ux4: vex_printf("QAdd8Ux4"); return;
+      case Iop_QSub8Sx4: vex_printf("QSub8Sx4"); return;
+      case Iop_QSub8Ux4: vex_printf("QSub8Ux4"); return;
+      case Iop_HAdd8Ux4: vex_printf("HAdd8Ux4"); return;
+      case Iop_HAdd8Sx4: vex_printf("HAdd8Sx4"); return;
+      case Iop_HSub8Ux4: vex_printf("HSub8Ux4"); return;
+      case Iop_HSub8Sx4: vex_printf("HSub8Sx4"); return;
+      case Iop_Sad8Ux4:  vex_printf("Sad8Ux4"); return;
+
+      case Iop_CmpNEZ16x2: vex_printf("CmpNEZ16x2"); return;
+      case Iop_CmpNEZ8x4:  vex_printf("CmpNEZ8x4"); return;
+
       case Iop_CmpF64:    vex_printf("CmpF64"); return;
 
       case Iop_F64toI16S: vex_printf("F64toI16S"); return;
@@ -295,6 +362,8 @@ void ppIROp ( IROp op )
       case Iop_I16StoF64: vex_printf("I16StoF64"); return;
       case Iop_I32StoF64: vex_printf("I32StoF64"); return;
       case Iop_I64StoF64: vex_printf("I64StoF64"); return;
+      case Iop_I64UtoF64: vex_printf("I64UtoF64"); return;
+      case Iop_I64UtoF32: vex_printf("I64UtoF32"); return;
 
       case Iop_I32UtoF64: vex_printf("I32UtoF64"); return;
 
@@ -1242,6 +1311,20 @@ IRConst* IRConst_U64 ( ULong u64 )
    c->Ico.U64 = u64;
    return c;
 }
+IRConst* IRConst_F32 ( Float f32 )
+{
+   IRConst* c = LibVEX_Alloc(sizeof(IRConst));
+   c->tag     = Ico_F32;
+   c->Ico.F32 = f32;
+   return c;
+}
+IRConst* IRConst_F32i ( UInt f32i )
+{
+   IRConst* c  = LibVEX_Alloc(sizeof(IRConst));
+   c->tag      = Ico_F32i;
+   c->Ico.F32i = f32i;
+   return c;
+}
 IRConst* IRConst_F64 ( Double f64 )
 {
    IRConst* c = LibVEX_Alloc(sizeof(IRConst));
@@ -1690,6 +1773,8 @@ IRConst* deepCopyIRConst ( IRConst* c )
       case Ico_U16:  return IRConst_U16(c->Ico.U16);
       case Ico_U32:  return IRConst_U32(c->Ico.U32);
       case Ico_U64:  return IRConst_U64(c->Ico.U64);
+      case Ico_F32:  return IRConst_F32(c->Ico.F32);
+      case Ico_F32i: return IRConst_F32i(c->Ico.F32i);
       case Ico_F64:  return IRConst_F64(c->Ico.F64);
       case Ico_F64i: return IRConst_F64i(c->Ico.F64i);
       case Ico_V128: return IRConst_V128(c->Ico.V128);
@@ -1919,6 +2004,17 @@ void typeOfPrimop ( IROp op,
       case Iop_Add32: case Iop_Sub32: case Iop_Mul32:
       case Iop_Or32:  case Iop_And32: case Iop_Xor32:
       case Iop_Max32U:
+      case Iop_Add16x2: case Iop_Sub16x2:
+      case Iop_QAdd16Sx2: case Iop_QAdd16Ux2:
+      case Iop_QSub16Sx2: case Iop_QSub16Ux2:
+      case Iop_HAdd16Ux2: case Iop_HAdd16Sx2:
+      case Iop_HSub16Ux2: case Iop_HSub16Sx2:
+      case Iop_Add8x4: case Iop_Sub8x4:
+      case Iop_QAdd8Sx4: case Iop_QAdd8Ux4:
+      case Iop_QSub8Sx4: case Iop_QSub8Ux4:
+      case Iop_HAdd8Ux4: case Iop_HAdd8Sx4:
+      case Iop_HSub8Ux4: case Iop_HSub8Sx4:
+      case Iop_Sad8Ux4:
          BINARY(Ity_I32,Ity_I32, Ity_I32);
 
       case Iop_Add64: case Iop_Sub64: case Iop_Mul64:
@@ -2004,6 +2100,7 @@ void typeOfPrimop ( IROp op,
       case Iop_Not16:
          UNARY(Ity_I16, Ity_I16);
       case Iop_Not32:
+      case Iop_CmpNEZ16x2: case Iop_CmpNEZ8x4:
          UNARY(Ity_I32, Ity_I32);
 
       case Iop_Not64:
@@ -2080,6 +2177,9 @@ void typeOfPrimop ( IROp op,
       case Iop_DivModU128to64: case Iop_DivModS128to64:
          BINARY(Ity_I128,Ity_I64, Ity_I128);
 
+      case Iop_DivModS64to64:
+         BINARY(Ity_I64,Ity_I64, Ity_I128);
+
       case Iop_16HIto8: case Iop_16to8:
          UNARY(Ity_I16, Ity_I8);
       case Iop_8HLto16:
@@ -2156,9 +2256,15 @@ void typeOfPrimop ( IROp op,
       case Iop_RoundF32toInt:
          BINARY(ity_RMode,Ity_F32, Ity_F32);
 
+      case Iop_CmpF32:
+         BINARY(Ity_F32,Ity_F32, Ity_I32);
+
       case Iop_CmpF64:
          BINARY(Ity_F64,Ity_F64, Ity_I32);
 
+      case Iop_CmpF128:
+         BINARY(Ity_F128,Ity_F128, Ity_I32);
+
       case Iop_F64toI16S: BINARY(ity_RMode,Ity_F64, Ity_I16);
       case Iop_F64toI32S: BINARY(ity_RMode,Ity_F64, Ity_I32);
       case Iop_F64toI64S: BINARY(ity_RMode,Ity_F64, Ity_I64);
@@ -2168,9 +2274,19 @@ void typeOfPrimop ( IROp op,
       case Iop_I16StoF64: UNARY(Ity_I16, Ity_F64);
       case Iop_I32StoF64: UNARY(Ity_I32, Ity_F64);
       case Iop_I64StoF64: BINARY(ity_RMode,Ity_I64, Ity_F64);
+      case Iop_I64UtoF64: BINARY(ity_RMode,Ity_I64, Ity_F64);
+      case Iop_I64UtoF32: BINARY(ity_RMode,Ity_I64, Ity_F32);
 
       case Iop_I32UtoF64: UNARY(Ity_I32, Ity_F64);
 
+      case Iop_F32toI16S: BINARY(ity_RMode,Ity_F32, Ity_I16);
+      case Iop_F32toI32S: BINARY(ity_RMode,Ity_F32, Ity_I32);
+      case Iop_F32toI64S: BINARY(ity_RMode,Ity_F32, Ity_I64);
+
+      case Iop_I16StoF32: UNARY(Ity_I16, Ity_F32);
+      case Iop_I32StoF32: BINARY(ity_RMode,Ity_I32, Ity_F32);
+      case Iop_I64StoF32: BINARY(ity_RMode,Ity_I64, Ity_F32);
+
       case Iop_F32toF64: UNARY(Ity_F32, Ity_F64);
       case Iop_F64toF32: BINARY(ity_RMode,Ity_F64, Ity_F32);
 
@@ -2410,6 +2526,43 @@ void typeOfPrimop ( IROp op,
       case Iop_QDMulLong16Sx4: case Iop_QDMulLong32Sx2:
          BINARY(Ity_I64, Ity_I64, Ity_V128);
 
+         /* s390 specific */
+      case Iop_MAddF32:
+      case Iop_MSubF32:
+         QUATERNARY(ity_RMode,Ity_F32,Ity_F32,Ity_F32, Ity_F32);
+
+      case Iop_F64HLtoF128:
+        BINARY(Ity_F64,Ity_F64, Ity_F128);
+
+      case Iop_F128HItoF64:
+      case Iop_F128LOtoF64:
+        UNARY(Ity_F128, Ity_F64);
+
+      case Iop_AddF128:
+      case Iop_SubF128:
+      case Iop_MulF128:
+      case Iop_DivF128:
+         TERNARY(ity_RMode,Ity_F128,Ity_F128, Ity_F128);
+
+      case Iop_NegF128:
+      case Iop_AbsF128:
+         UNARY(Ity_F128, Ity_F128);
+
+      case Iop_SqrtF128:
+         BINARY(ity_RMode,Ity_F128, Ity_F128);
+
+      case Iop_I32StoF128: UNARY(Ity_I32, Ity_F128);
+      case Iop_I64StoF128: UNARY(Ity_I64, Ity_F128);
+
+      case Iop_F128toI32S: BINARY(ity_RMode,Ity_F128, Ity_I32);
+      case Iop_F128toI64S: BINARY(ity_RMode,Ity_F128, Ity_I64);
+
+      case Iop_F32toF128: UNARY(Ity_F32, Ity_F128);
+      case Iop_F64toF128: UNARY(Ity_F64, Ity_F128);
+
+      case Iop_F128toF32: BINARY(ity_RMode,Ity_F128, Ity_F32);
+      case Iop_F128toF64: BINARY(ity_RMode,Ity_F128, Ity_F64);
+
       default:
          ppIROp(op);
          vpanic("typeOfPrimop");
@@ -2492,6 +2645,8 @@ IRType typeOfIRConst ( IRConst* con )
       case Ico_U16:   return Ity_I16;
       case Ico_U32:   return Ity_I32;
       case Ico_U64:   return Ity_I64;
+      case Ico_F32:   return Ity_F32;
+      case Ico_F32i:  return Ity_F32;
       case Ico_F64:   return Ity_F64;
       case Ico_F64i:  return Ity_F64;
       case Ico_V128:  return Ity_V128;
@@ -2551,7 +2706,7 @@ Bool isPlausibleIRType ( IRType ty )
       case Ity_INVALID: case Ity_I1:
       case Ity_I8: case Ity_I16: case Ity_I32: 
       case Ity_I64: case Ity_I128:
-      case Ity_F32: case Ity_F64:
+      case Ity_F32: case Ity_F64: case Ity_F128:
       case Ity_V128:
          return True;
       default: 
@@ -3387,6 +3542,8 @@ Bool eqIRConst ( IRConst* c1, IRConst* c2 )
       case Ico_U16: return toBool( c1->Ico.U16 == c2->Ico.U16 );
       case Ico_U32: return toBool( c1->Ico.U32 == c2->Ico.U32 );
       case Ico_U64: return toBool( c1->Ico.U64 == c2->Ico.U64 );
+      case Ico_F32: return toBool( c1->Ico.F32 == c2->Ico.F32 );
+      case Ico_F32i: return toBool( c1->Ico.F32i == c2->Ico.F32i );
       case Ico_F64: return toBool( c1->Ico.F64 == c2->Ico.F64 );
       case Ico_F64i: return toBool( c1->Ico.F64i == c2->Ico.F64i );
       case Ico_V128: return toBool( c1->Ico.V128 == c2->Ico.V128 );
@@ -3408,8 +3565,10 @@ Int sizeofIRType ( IRType ty )
       case Ity_I16:  return 2;
       case Ity_I32:  return 4;
       case Ity_I64:  return 8;
+      case Ity_I128: return 16;
       case Ity_F32:  return 4;
       case Ity_F64:  return 8;
+      case Ity_F128: return 16;
       case Ity_V128: return 16;
       default: vex_printf("\n"); ppIRType(ty); vex_printf("\n");
                vpanic("sizeofIRType");
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_opt.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_opt.c
index 5696e22d5..5cf91dc45 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_opt.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/ir_opt.c
@@ -926,19 +926,61 @@ static Bool notBool ( Bool b )
 
 /* Make a zero which has the same type as the result of the given
    primop. */
-static IRExpr* mkZeroForXor ( IROp op )
+static IRExpr* mkZeroOfPrimopResultType ( IROp op )
 {
    switch (op) {
       case Iop_Xor8:  return IRExpr_Const(IRConst_U8(0));
       case Iop_Xor16: return IRExpr_Const(IRConst_U16(0));
       case Iop_Sub32:
       case Iop_Xor32: return IRExpr_Const(IRConst_U32(0));
+      case Iop_Sub64:
       case Iop_Xor64: return IRExpr_Const(IRConst_U64(0));
       case Iop_XorV128: return IRExpr_Const(IRConst_V128(0));
-      default: vpanic("mkZeroForXor: bad primop");
+      default: vpanic("mkZeroOfPrimopResultType: bad primop");
    }
 }
 
+/* Make a value containing all 1-bits, which has the same type as the
+   result of the given primop. */
+static IRExpr* mkOnesOfPrimopResultType ( IROp op )
+{
+   switch (op) {
+      case Iop_CmpEQ64:
+         return IRExpr_Const(IRConst_U1(toBool(1)));
+      case Iop_CmpEQ8x8:
+         return IRExpr_Const(IRConst_U64(0xFFFFFFFFFFFFFFFFULL));
+      case Iop_CmpEQ8x16:
+         return IRExpr_Const(IRConst_V128(0xFFFF));
+      default:
+         vpanic("mkOnesOfPrimopResultType: bad primop");
+   }
+}
+
+/* Helpers for folding Clz32/64. */
+static UInt fold_Clz64 ( ULong value )
+{
+   UInt i;
+   vassert(value != 0ULL); /* no defined semantics for arg==0 */
+   for (i = 0; i < 64; ++i) {
+      if (0ULL != (value & (((ULong)1) << (63 - i)))) return i;
+   }
+   vassert(0);
+   /*NOTREACHED*/
+   return 0;
+}
+
+static UInt fold_Clz32 ( UInt value )
+{
+   UInt i;
+   vassert(value != 0); /* no defined semantics for arg==0 */
+   for (i = 0; i < 32; ++i) {
+      if (0 != (value & (((UInt)1) << (31 - i)))) return i;
+   }
+   vassert(0);
+   /*NOTREACHED*/
+   return 0;
+}
+
 
 static IRExpr* fold_Expr ( IRExpr* e )
 {
@@ -993,6 +1035,13 @@ static IRExpr* fold_Expr ( IRExpr* e )
             e2 = IRExpr_Const(IRConst_U32((UInt)s32));
             break;
          }
+         case Iop_16Sto32: {
+            /* signed */ Int s32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
+            s32 <<= 16;
+            s32 >>= 16;
+            e2 = IRExpr_Const(IRConst_U32( (UInt)s32) );
+            break;
+         }
          case Iop_8Uto64:
             e2 = IRExpr_Const(IRConst_U64(
                     0xFFULL & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
@@ -1005,6 +1054,17 @@ static IRExpr* fold_Expr ( IRExpr* e )
             e2 = IRExpr_Const(IRConst_U32(
                     0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
             break;
+         case Iop_8Sto16: {
+            /* signed */ Short s16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U8;
+            s16 <<= 8;
+            s16 >>= 8;
+            e2 = IRExpr_Const(IRConst_U16( (UShort)s16) );
+            break;
+         }
+         case Iop_8Uto16:
+            e2 = IRExpr_Const(IRConst_U16(
+                    0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
+            break;
          case Iop_16Uto32:
             e2 = IRExpr_Const(IRConst_U32(
                     0xFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U16));
@@ -1079,6 +1139,13 @@ static IRExpr* fold_Expr ( IRExpr* e )
                     0xFFFFFFFFULL 
                     & e->Iex.Unop.arg->Iex.Const.con->Ico.U32));
             break;
+         case Iop_16Sto64: {
+            /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
+            s64 <<= 48;
+            s64 >>= 48;
+            e2 = IRExpr_Const(IRConst_U64((ULong)s64));
+            break;
+         }
          case Iop_32Sto64: {
             /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
             s64 <<= 32;
@@ -1086,6 +1153,21 @@ static IRExpr* fold_Expr ( IRExpr* e )
             e2 = IRExpr_Const(IRConst_U64((ULong)s64));
             break;
          }
+
+         case Iop_16to8: {
+            UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
+            w16 &= 0xFF;
+            e2 = IRExpr_Const(IRConst_U8( (UChar)w16 ));
+            break;
+         }
+         case Iop_16HIto8: {
+            UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
+            w16 >>= 8;
+            w16 &= 0xFF;
+            e2 = IRExpr_Const(IRConst_U8( (UChar)w16 ));
+            break;
+         }
+
          case Iop_CmpNEZ8:
             e2 = IRExpr_Const(IRConst_U1(toBool(
                     0 != 
@@ -1137,6 +1219,19 @@ static IRExpr* fold_Expr ( IRExpr* e )
             break;
          }
 
+         case Iop_Clz32: {
+            UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
+            if (u32 != 0)
+               e2 = IRExpr_Const(IRConst_U32(fold_Clz32(u32)));
+            break;
+         }
+         case Iop_Clz64: {
+            ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
+            if (u64 != 0ULL)
+               e2 = IRExpr_Const(IRConst_U64(fold_Clz64(u64)));
+            break;
+         }
+
          default: 
             goto unhandled;
       }
@@ -1199,6 +1294,11 @@ static IRExpr* fold_Expr ( IRExpr* e )
                        (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
                         & e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
                break;
+            case Iop_And16:
+               e2 = IRExpr_Const(IRConst_U16(toUShort(
+                       (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16
+                        & e->Iex.Binop.arg2->Iex.Const.con->Ico.U16))));
+               break;
             case Iop_And32:
                e2 = IRExpr_Const(IRConst_U32(
                        (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
@@ -1384,6 +1484,11 @@ static IRExpr* fold_Expr ( IRExpr* e )
                        ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
                         <= (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
                break;
+            case Iop_CmpLE64U:
+               e2 = IRExpr_Const(IRConst_U1(toBool(
+                       ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
+                        <= (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
+               break;
 
             /* -- CmpLES -- */
             case Iop_CmpLE32S:
@@ -1391,6 +1496,11 @@ static IRExpr* fold_Expr ( IRExpr* e )
                        ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
                         <= (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
                break;
+            case Iop_CmpLE64S:
+               e2 = IRExpr_Const(IRConst_U1(toBool(
+                       ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
+                        <= (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
+               break;
 
             /* -- CmpLTS -- */
             case Iop_CmpLT32S:
@@ -1398,6 +1508,11 @@ static IRExpr* fold_Expr ( IRExpr* e )
                        ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
                         < (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
                break;
+            case Iop_CmpLT64S:
+               e2 = IRExpr_Const(IRConst_U1(toBool(
+                       ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
+                        < (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
+               break;
 
             /* -- CmpLTU -- */
             case Iop_CmpLT32U:
@@ -1405,6 +1520,11 @@ static IRExpr* fold_Expr ( IRExpr* e )
                        ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
                         < (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
                break;
+            case Iop_CmpLT64U:
+               e2 = IRExpr_Const(IRConst_U1(toBool(
+                       ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
+                        < (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
+               break;
 
             /* -- CmpORD -- */
             case Iop_CmpORD32S: {
@@ -1568,32 +1688,45 @@ static IRExpr* fold_Expr ( IRExpr* e )
             e2 = e->Iex.Binop.arg2;
          } else
 
-         /* Or8/16/32/64(t,t) ==> t, for some IRTemp t */
+         /* Or8/16/32/64/V128(t,t) ==> t, for some IRTemp t */
          /* And8/16/32/64(t,t) ==> t, for some IRTemp t */
          /* Max32U(t,t) ==> t, for some IRTemp t */
-         if (   (e->Iex.Binop.op == Iop_And64
-              || e->Iex.Binop.op == Iop_And32
-              || e->Iex.Binop.op == Iop_And16
-              || e->Iex.Binop.op == Iop_And8
-              || e->Iex.Binop.op == Iop_Or64
-              || e->Iex.Binop.op == Iop_Or32
-              || e->Iex.Binop.op == Iop_Or16
-              || e->Iex.Binop.op == Iop_Or8
-              || e->Iex.Binop.op == Iop_Max32U)
-             && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
-            e2 = e->Iex.Binop.arg1;
+         switch (e->Iex.Binop.op) {
+            case Iop_And64: case Iop_And32:
+            case Iop_And16: case Iop_And8:
+            case Iop_Or64: case Iop_Or32:
+            case Iop_Or16: case Iop_Or8: case Iop_OrV128:
+            case Iop_Max32U:
+               if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
+                  e2 = e->Iex.Binop.arg1;
+               break;
+            default:
+               break;
          }
 
          /* Xor8/16/32/64/V128(t,t) ==> 0, for some IRTemp t */
-         /* Sub32(t,t) ==> 0, for some IRTemp t */
-         if (   (e->Iex.Binop.op == Iop_Xor64
-              || e->Iex.Binop.op == Iop_Xor32
-              || e->Iex.Binop.op == Iop_Xor16
-              || e->Iex.Binop.op == Iop_Xor8
-              || e->Iex.Binop.op == Iop_XorV128
-              || e->Iex.Binop.op == Iop_Sub32)
-             && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
-            e2 = mkZeroForXor(e->Iex.Binop.op);
+         /* Sub32/64(t,t) ==> 0, for some IRTemp t */
+         switch (e->Iex.Binop.op) {
+            case Iop_Xor64: case Iop_Xor32:
+            case Iop_Xor16: case Iop_Xor8:
+            case Iop_XorV128:
+            case Iop_Sub64: case Iop_Sub32:
+               if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
+                  e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op);
+               break;
+            default:
+               break;
+         }
+
+         switch (e->Iex.Binop.op) {
+            case Iop_CmpEQ64:
+            case Iop_CmpEQ8x8:
+            case Iop_CmpEQ8x16:
+               if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
+                  e2 = mkOnesOfPrimopResultType(e->Iex.Binop.op);
+               break;
+            default:
+               break;
          }
 
       }
@@ -1618,6 +1751,14 @@ static IRExpr* fold_Expr ( IRExpr* e )
       }
    }
 
+   /* Show cases where we've found but not folded 'op(t,t)'. */
+   if (0 && e == e2 && e->tag == Iex_Binop 
+       && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
+      vex_printf("IDENT: ");
+      ppIRExpr(e); vex_printf("\n");
+   }
+
+   /* Show the overall results of folding. */
    if (DEBUG_IROPT && e2 != e) {
       vex_printf("FOLD: "); 
       ppIRExpr(e); vex_printf("  ->  ");
@@ -3975,6 +4116,18 @@ static IRExpr* fold_IRExpr_Unop ( IROp op, IRExpr* aa )
       /* 64to32( 32Uto64 ( x )) --> x */
       if (is_Unop(aa, Iop_32Uto64))
          return aa->Iex.Unop.arg;
+      /* 64to32( 8Uto64 ( x )) --> 8Uto32(x) */
+      if (is_Unop(aa, Iop_8Uto64))
+         return IRExpr_Unop(Iop_8Uto32, aa->Iex.Unop.arg);
+      break;
+
+   case Iop_32Uto64:
+      /* 32Uto64( 8Uto32( x )) --> 8Uto64(x) */
+      if (is_Unop(aa, Iop_8Uto32))
+         return IRExpr_Unop(Iop_8Uto64, aa->Iex.Unop.arg);
+      /* 32Uto64( 16Uto32( x )) --> 16Uto64(x) */
+      if (is_Unop(aa, Iop_16Uto32))
+         return IRExpr_Unop(Iop_16Uto64, aa->Iex.Unop.arg);
       break;
 
    case Iop_1Sto32:
@@ -4456,7 +4609,7 @@ static void considerExpensives ( /*OUT*/Bool* hasGetIorPutI,
                case Ity_I1: case Ity_I8: case Ity_I16: 
                case Ity_I32: case Ity_I64: case Ity_I128: 
                   break;
-               case Ity_F32: case Ity_F64: case Ity_V128: 
+               case Ity_F32: case Ity_F64: case Ity_F128: case Ity_V128:
                   *hasVorFtemps = True;
                   break;
                default: 
@@ -4561,6 +4714,7 @@ IRSB* do_iropt_BB(
       bb = cprop_BB(bb);
       bb = spec_helpers_BB ( bb, specHelper );
       redundant_put_removal_BB ( bb, preciseMemExnsFn );
+      do_cse_BB( bb );
       do_deadcode_BB( bb );
    }
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_main.c
index ea0e5d0f5..9d939017c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_main.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_main.c
@@ -40,6 +40,7 @@
 #include "libvex_guest_arm.h"
 #include "libvex_guest_ppc32.h"
 #include "libvex_guest_ppc64.h"
+#include "libvex_guest_s390x.h"
 
 #include "main_globals.h"
 #include "main_util.h"
@@ -50,12 +51,14 @@
 #include "host_amd64_defs.h"
 #include "host_ppc_defs.h"
 #include "host_arm_defs.h"
+#include "host_s390_defs.h"
 
 #include "guest_generic_bb_to_IR.h"
 #include "guest_x86_defs.h"
 #include "guest_amd64_defs.h"
 #include "guest_arm_defs.h"
 #include "guest_ppc_defs.h"
+#include "guest_s390_defs.h"
 
 #include "host_generic_simd128.h"
 
@@ -195,7 +198,7 @@ VexTranslateResult LibVEX_Translate ( VexTranslateArgs* vta )
    HInstrArray*    rcode;
    Int             i, j, k, out_used, guest_sizeB;
    Int             offB_TISTART, offB_TILEN;
-   UChar           insn_bytes[32];
+   UChar           insn_bytes[48];
    IRType          guest_word_type;
    IRType          host_word_type;
    Bool            mode64;
@@ -316,6 +319,25 @@ VexTranslateResult LibVEX_Translate ( VexTranslateArgs* vta )
          vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */
          break;
 
+      case VexArchS390X:
+         mode64      = True;
+         getAllocableRegs_S390 ( &n_available_real_regs,
+                                 &available_real_regs, mode64 );
+         isMove      = (Bool(*)(HInstr*,HReg*,HReg*)) isMove_S390Instr;
+         getRegUsage = (void(*)(HRegUsage*,HInstr*, Bool)) getRegUsage_S390Instr;
+         mapRegs     = (void(*)(HRegRemap*,HInstr*, Bool)) mapRegs_S390Instr;
+         genSpill    = (void(*)(HInstr**,HInstr**,HReg,Int,Bool)) genSpill_S390;
+         genReload   = (void(*)(HInstr**,HInstr**,HReg,Int,Bool)) genReload_S390;
+         ppInstr     = (void(*)(HInstr*, Bool)) ppS390Instr;
+         ppReg       = (void(*)(HReg)) ppHRegS390;
+         iselSB      = iselSB_S390;
+         emit        = (Int(*)(UChar*,Int,HInstr*,Bool,void*)) emit_S390Instr;
+         host_is_bigendian = True;
+         host_word_type    = Ity_I64;
+         vassert(are_valid_hwcaps(VexArchS390X, vta->archinfo_host.hwcaps));
+         vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */
+         break;
+
       case VexArchARM:
          mode64      = False;
          getAllocableRegs_ARM ( &n_available_real_regs,
@@ -407,6 +429,22 @@ VexTranslateResult LibVEX_Translate ( VexTranslateArgs* vta )
          vassert(sizeof( ((VexGuestPPC64State*)0)->guest_NRADDR_GPR2) == 8);
          break;
 
+      case VexArchS390X:
+         preciseMemExnsFn = guest_s390x_state_requires_precise_mem_exns;
+         disInstrFn       = disInstr_S390;
+         specHelper       = guest_s390x_spechelper;
+         guest_sizeB      = sizeof(VexGuestS390XState);
+         guest_word_type  = Ity_I64;
+         guest_layout     = &s390xGuest_layout;
+         offB_TISTART     = offsetof(VexGuestS390XState,guest_TISTART);
+         offB_TILEN       = offsetof(VexGuestS390XState,guest_TILEN);
+         vassert(are_valid_hwcaps(VexArchS390X, vta->archinfo_guest.hwcaps));
+         vassert(0 == sizeof(VexGuestS390XState) % 16);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_TISTART    ) == 8);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_TILEN      ) == 8);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_NRADDR     ) == 8);
+         break;
+
       case VexArchARM:
          preciseMemExnsFn = guest_arm_state_requires_precise_mem_exns;
          disInstrFn       = disInstr_ARM;
@@ -644,7 +682,8 @@ VexTranslateResult LibVEX_Translate ( VexTranslateArgs* vta )
          ppInstr(rcode->arr[i], mode64);
          vex_printf("\n");
       }
-      j = (*emit)( insn_bytes, 32, rcode->arr[i], mode64, vta->dispatch );
+      j = (*emit)( insn_bytes, sizeof insn_bytes, rcode->arr[i], mode64,
+                   vta->dispatch );
       if (vex_traceflags & VEX_TRACE_ASM) {
          for (k = 0; k < j; k++)
             if (insn_bytes[k] < 16)
@@ -716,6 +755,7 @@ const HChar* LibVEX_ppVexArch ( VexArch arch )
       case VexArchARM:      return "ARM";
       case VexArchPPC32:    return "PPC32";
       case VexArchPPC64:    return "PPC64";
+      case VexArchS390X:    return "S390X";
       default:              return "VexArch???";
    }
 }
@@ -732,6 +772,9 @@ void LibVEX_default_VexArchInfo ( /*OUT*/VexArchInfo* vai )
 {
    vai->hwcaps             = 0;
    vai->ppc_cache_line_szB = 0;
+   vai->ppc_dcbz_szB       = 0;
+   vai->ppc_dcbzl_szB      = 0;
+
 }
 
 /* Write default settings info *vbi. */
@@ -812,6 +855,7 @@ static HChar* show_hwcaps_ppc32 ( UInt hwcaps )
    const UInt V  = VEX_HWCAPS_PPC32_V;
    const UInt FX = VEX_HWCAPS_PPC32_FX;
    const UInt GX = VEX_HWCAPS_PPC32_GX;
+   const UInt VX = VEX_HWCAPS_PPC32_VX;
          UInt c  = hwcaps;
    if (c == 0)           return "ppc32-int";
    if (c == F)           return "ppc32-int-flt";
@@ -822,6 +866,7 @@ static HChar* show_hwcaps_ppc32 ( UInt hwcaps )
    if (c == (F|V|FX))    return "ppc32-int-flt-vmx-FX";
    if (c == (F|V|GX))    return "ppc32-int-flt-vmx-GX";
    if (c == (F|V|FX|GX)) return "ppc32-int-flt-vmx-FX-GX";
+   if (c == (F|V|FX|GX|VX)) return "ppc32-int-flt-vmx-FX-GX-VX";
    return NULL;
 }
 
@@ -832,6 +877,7 @@ static HChar* show_hwcaps_ppc64 ( UInt hwcaps )
    const UInt V  = VEX_HWCAPS_PPC64_V;
    const UInt FX = VEX_HWCAPS_PPC64_FX;
    const UInt GX = VEX_HWCAPS_PPC64_GX;
+   const UInt VX = VEX_HWCAPS_PPC64_VX;
          UInt c  = hwcaps;
    if (c == 0)         return "ppc64-int-flt";
    if (c == FX)        return "ppc64-int-flt-FX";
@@ -841,6 +887,7 @@ static HChar* show_hwcaps_ppc64 ( UInt hwcaps )
    if (c == (V|FX))    return "ppc64-int-flt-vmx-FX";
    if (c == (V|GX))    return "ppc64-int-flt-vmx-GX";
    if (c == (V|FX|GX)) return "ppc64-int-flt-vmx-FX-GX";
+   if (c == (V|FX|GX|VX)) return "ppc64-int-flt-vmx-FX-GX-VX";
    return NULL;
 }
 
@@ -884,6 +931,42 @@ static HChar* show_hwcaps_arm ( UInt hwcaps )
    return NULL;
 }
 
+static HChar* show_hwcaps_s390x ( UInt hwcaps )
+{
+   static const HChar prefix[] = "s390x";
+   static const HChar facilities[][6] = {
+     { "ldisp" },
+     { "eimm" },
+     { "gie" },
+     { "dfp" },
+     { "fgx" },
+   };
+   static HChar buf[sizeof facilities + sizeof prefix + 1];
+   static HChar *p;
+
+   if (buf[0] != '\0') return buf;  /* already constructed */
+
+   hwcaps = VEX_HWCAPS_S390X(hwcaps);
+
+   p = buf + vex_sprintf(buf, "%s", prefix);
+   if (hwcaps & VEX_HWCAPS_S390X_LDISP)
+     p = p + vex_sprintf(p, "-%s", facilities[0]);
+   if (hwcaps & VEX_HWCAPS_S390X_EIMM)
+     p = p + vex_sprintf(p, "-%s", facilities[1]);
+   if (hwcaps & VEX_HWCAPS_S390X_GIE)
+     p = p + vex_sprintf(p, "-%s", facilities[2]);
+   if (hwcaps & VEX_HWCAPS_S390X_DFP)
+     p = p + vex_sprintf(p, "-%s", facilities[3]);
+   if (hwcaps & VEX_HWCAPS_S390X_FGX)
+     p = p + vex_sprintf(p, "-%s", facilities[4]);
+
+   /* If there are no facilities, add "zarch" */
+   if (hwcaps == 0)
+     vex_sprintf(p, "-%s", "zarch");
+
+   return buf;
+}
+
 /* ---- */
 static HChar* show_hwcaps ( VexArch arch, UInt hwcaps )
 {
@@ -893,6 +976,7 @@ static HChar* show_hwcaps ( VexArch arch, UInt hwcaps )
       case VexArchPPC32: return show_hwcaps_ppc32(hwcaps);
       case VexArchPPC64: return show_hwcaps_ppc64(hwcaps);
       case VexArchARM:   return show_hwcaps_arm(hwcaps);
+      case VexArchS390X: return show_hwcaps_s390x(hwcaps);
       default: return NULL;
    }
 }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.c
index a4f8fd576..a4706cf4c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.c
@@ -51,7 +51,7 @@
    MByte/sec.  Once the size increases enough to fall out of the cache
    into memory, the rate falls by about a factor of 3. 
 */
-#define N_TEMPORARY_BYTES 4000000
+#define N_TEMPORARY_BYTES 5000000
 
 static HChar  temporary[N_TEMPORARY_BYTES] __attribute__((aligned(8)));
 static HChar* temporary_first = &temporary[0];
@@ -235,7 +235,7 @@ void vpanic ( HChar* str )
    New code for vex_util.c should go above this point. */
 #include 
 
-static Int vex_strlen ( const HChar* str )
+Int vex_strlen ( const HChar* str )
 {
    Int i = 0;
    while (str[i] != 0) i++;
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.h
index 1392b4b1d..32afb7ed3 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/priv/main_util.h
@@ -43,13 +43,15 @@
 
 #define NULL ((void*)0)
 
+#define LIKELY(x)       __builtin_expect(!!(x), 1)
+#define UNLIKELY(x)     __builtin_expect(!!(x), 0)
 
 /* Stuff for panicking and assertion. */
 
 #define VG__STRING(__str)  #__str
 
 #define vassert(expr)                                           \
-  ((void) ((expr) ? 0 :                                         \
+  ((void) (LIKELY(expr) ? 0 :                                   \
            (vex_assert_fail (VG__STRING(expr),                  \
                              __FILE__, __LINE__,                \
                              __PRETTY_FUNCTION__), 0)))
@@ -73,6 +75,7 @@ extern UInt vex_sprintf ( HChar* buf, HChar *format, ... );
 /* String ops */
 
 extern Bool vex_streq ( const HChar* s1, const HChar* s2 );
+extern Int vex_strlen ( const HChar* str );
 
 
 /* Storage management: clear the area, and allocate from it. */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex.h
index edc9f17bc..1e2b38668 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex.h
@@ -56,7 +56,8 @@ typedef
       VexArchAMD64, 
       VexArchARM,
       VexArchPPC32,
-      VexArchPPC64
+      VexArchPPC64,
+      VexArchS390X
    }
    VexArch;
 
@@ -86,12 +87,56 @@ typedef
 #define VEX_HWCAPS_PPC32_FX    (1<<10) /* FP extns (fsqrt, fsqrts) */
 #define VEX_HWCAPS_PPC32_GX    (1<<11) /* Graphics extns
                                           (fres,frsqrte,fsel,stfiwx) */
+#define VEX_HWCAPS_PPC32_VX    (1<<12) /* Vector-scalar floating-point (VSX); implies ISA 2.06 or higher  */
 
 /* ppc64: baseline capability is integer and basic FP insns */
-#define VEX_HWCAPS_PPC64_V     (1<<12) /* Altivec (VMX) */
-#define VEX_HWCAPS_PPC64_FX    (1<<13) /* FP extns (fsqrt, fsqrts) */
-#define VEX_HWCAPS_PPC64_GX    (1<<14) /* Graphics extns
+#define VEX_HWCAPS_PPC64_V     (1<<13) /* Altivec (VMX) */
+#define VEX_HWCAPS_PPC64_FX    (1<<14) /* FP extns (fsqrt, fsqrts) */
+#define VEX_HWCAPS_PPC64_GX    (1<<15) /* Graphics extns
                                           (fres,frsqrte,fsel,stfiwx) */
+#define VEX_HWCAPS_PPC64_VX    (1<<16) /* Vector-scalar floating-point (VSX); implies ISA 2.06 or higher  */
+
+/* s390x: Hardware capability encoding
+
+   Bits    Information
+   [26:31] Machine model
+   [25]    Long displacement facility
+   [24]    Extended-immediate facility
+   [23]    General-instruction-extension facility
+   [22]    Decimal floating point facility
+   [21]    FPR-GR transfer facility
+   [0:20]  Currently unused; reserved for future use
+*/
+
+/* Model numbers must be assigned in chronological order.
+   They are used as array index. */
+#define VEX_S390X_MODEL_Z900     0
+#define VEX_S390X_MODEL_Z800     1
+#define VEX_S390X_MODEL_Z990     2
+#define VEX_S390X_MODEL_Z890     3
+#define VEX_S390X_MODEL_Z9_EC    4
+#define VEX_S390X_MODEL_Z9_BC    5
+#define VEX_S390X_MODEL_Z10_EC   6
+#define VEX_S390X_MODEL_Z10_BC   7
+#define VEX_S390X_MODEL_Z196     8
+#define VEX_S390X_MODEL_INVALID  9
+#define VEX_S390X_MODEL_MASK     0x3F
+
+#define VEX_HWCAPS_S390X_LDISP (1<<6)   /* Long-displacement facility */
+#define VEX_HWCAPS_S390X_EIMM  (1<<7)   /* Extended-immediate facility */
+#define VEX_HWCAPS_S390X_GIE   (1<<8)   /* General-instruction-extension facility */
+#define VEX_HWCAPS_S390X_DFP   (1<<9)   /* Decimal floating point facility */
+#define VEX_HWCAPS_S390X_FGX   (1<<10)  /* FPR-GR transfer facility */
+
+/* Special value representing all available s390x hwcaps */
+#define VEX_HWCAPS_S390X_ALL   (VEX_HWCAPS_S390X_LDISP | \
+                                VEX_HWCAPS_S390X_EIMM  | \
+                                VEX_HWCAPS_S390X_GIE   | \
+                                VEX_HWCAPS_S390X_DFP   | \
+                                VEX_HWCAPS_S390X_FGX)
+
+#define VEX_HWCAPS_S390X(x)  ((x) & ~VEX_S390X_MODEL_MASK)
+#define VEX_S390X_MODEL(x)   ((x) &  VEX_S390X_MODEL_MASK)
 
 /* arm: baseline capability is ARMv4 */
 /* Bits 5:0 - architecture level (e.g. 5 for v5, 6 for v6 etc) */
@@ -120,6 +165,10 @@ typedef
       UInt hwcaps;
       /* PPC32/PPC64 only: size of cache line */
       Int ppc_cache_line_szB;
+      /* PPC32/PPC64 only: sizes zeroed by the dcbz/dcbzl instructions
+       * (bug#135264) */
+      UInt ppc_dcbz_szB;
+      UInt ppc_dcbzl_szB; /* 0 means unsupported (SIGILL) */
    }
    VexArchInfo;
 
@@ -377,15 +426,25 @@ typedef
 /* Initialise the library.  You must call this first. */
 
 extern void LibVEX_Init (
+
    /* failure exit function */
+#  if __cplusplus == 1 && __GNUC__ && __GNUC__ <= 3
+   /* g++ 3.x doesn't understand attributes on function parameters.
+      See #265762. */
+#  else
    __attribute__ ((noreturn))
+#  endif
    void (*failure_exit) ( void ),
+
    /* logging output function */
    void (*log_bytes) ( HChar*, Int nbytes ),
+
    /* debug paranoia level */
    Int debuglevel,
+
    /* Are we supporting valgrind checking? */
    Bool valgrind_support,
+
    /* Control ... */
    /*READONLY*/VexControl* vcon
 );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_basictypes.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_basictypes.h
index a94591354..14c92ed48 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_basictypes.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_basictypes.h
@@ -130,26 +130,46 @@ typedef  unsigned long HWord;
    and ULong_to_Ptr in a way that doesn't cause compilers to complain.
    These functions allow us to cast pointers to and from 64-bit
    integers without complaints from compilers, regardless of the host
-   word size. */
+   word size.
+
+   Also set up VEX_REGPARM.
+*/
 
 #undef VEX_HOST_WORDSIZE
+#undef VEX_REGPARM
 
 /* The following 4 work OK for Linux. */
 #if defined(__x86_64__)
 #   define VEX_HOST_WORDSIZE 8
+#   define VEX_REGPARM(_n) /* */
+
 #elif defined(__i386__)
 #   define VEX_HOST_WORDSIZE 4
+#   define VEX_REGPARM(_n) __attribute__((regparm(_n)))
+
 #elif defined(__powerpc__) && defined(__powerpc64__)
 #   define VEX_HOST_WORDSIZE 8
+#   define VEX_REGPARM(_n) /* */
+
 #elif defined(__powerpc__) && !defined(__powerpc64__)
 #   define VEX_HOST_WORDSIZE 4
+#   define VEX_REGPARM(_n) /* */
+
 #elif defined(__arm__)
 #   define VEX_HOST_WORDSIZE 4
+#   define VEX_REGPARM(_n) /* */
 
 #elif defined(_AIX) && !defined(__64BIT__)
 #   define VEX_HOST_WORDSIZE 4
+#   define VEX_REGPARM(_n) /* */
+
 #elif defined(_AIX) && defined(__64BIT__)
 #   define VEX_HOST_WORDSIZE 8
+#   define VEX_REGPARM(_n) /* */
+
+#elif defined(__s390x__)
+#   define VEX_HOST_WORDSIZE 8
+#   define VEX_REGPARM(_n) /* */
 
 #else
 #   error "Vex: Fatal: Can't establish the host architecture"
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_amd64.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_amd64.h
index eb9e19eb1..c37e6c8ce 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_amd64.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_amd64.h
@@ -76,15 +76,15 @@ typedef
       /* The D flag is stored here, encoded as either -1 or +1 */
       /* 160 */ ULong  guest_DFLAG;
       /* 168 */ ULong  guest_RIP;
+      /* Bit 18 (AC) of eflags stored here, as either 0 or 1. */
+      /* ... */ ULong  guest_ACFLAG;
+      /* Bit 21 (ID) of eflags stored here, as either 0 or 1. */
+      /* 176 */ ULong guest_IDFLAG;
       /* Probably a lot more stuff too. 
          D,ID flags
          16  128-bit SSE registers
          all the old x87 FPU gunk
-         segment registers
-      */
-
-      /* Bit 21 (ID) of eflags stored here, as either 0 or 1. */
-      /* 176 */ ULong guest_IDFLAG;
+         segment registers */
 
       /* HACK to make tls on amd64-linux work.  %fs only ever seems to
          hold zero, and so guest_FS_ZERO holds the 64-bit offset
@@ -161,7 +161,7 @@ typedef
       ULong guest_IP_AT_SYSCALL;
 
       /* Padding to make it have an 16-aligned size */
-      /* ULong padding; */
+      ULong padding;
    }
    VexGuestAMD64State;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_arm.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_arm.h
index cfbf1222f..d7b47e0b2 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_arm.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_arm.h
@@ -81,6 +81,13 @@ typedef
          APSR.Q is currently one. */
       UInt guest_QFLAG32;
 
+      /* 32-bit values to represent APSR.GE0 .. GE3.  Same
+         zero-vs-nonzero scheme as for QFLAG32. */
+      UInt guest_GEFLAG0;
+      UInt guest_GEFLAG1;
+      UInt guest_GEFLAG2;
+      UInt guest_GEFLAG3;
+
       /* Various pseudo-regs mandated by Vex or Valgrind. */
       /* Emulation warnings */
       UInt guest_EMWARN;
@@ -101,11 +108,11 @@ typedef
          program counter at the last syscall insn (int 0x80/81/82,
          sysenter, syscall, svc).  Used when backing up to restart a
          syscall that has been interrupted by a signal. */
-      /* 96 */
+      /* 116 */
       UInt guest_IP_AT_SYSCALL;
 
       /* VFP state.  D0 .. D15 must be 8-aligned. */
-      /* 104 -- I guess there's 4 bytes of padding just prior to this? */
+      /* 120 -- I guess there's 4 bytes of padding just prior to this? */
       ULong guest_D0;
       ULong guest_D1;
       ULong guest_D2;
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc32.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc32.h
index 335331987..d90c11c1d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc32.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc32.h
@@ -82,120 +82,128 @@ typedef
       /* 120 */ UInt guest_GPR30;
       /* 124 */ UInt guest_GPR31;
 
-      // Floating Point Registers
-      /* 128 */ ULong guest_FPR0;
-      /* 136 */ ULong guest_FPR1;
-      /* 144 */ ULong guest_FPR2;
-      /* 152 */ ULong guest_FPR3;
-      /* 160 */ ULong guest_FPR4;
-      /* 168 */ ULong guest_FPR5;
-      /* 176 */ ULong guest_FPR6;
-      /* 184 */ ULong guest_FPR7;
-      /* 192 */ ULong guest_FPR8;
-      /* 200 */ ULong guest_FPR9;
-      /* 208 */ ULong guest_FPR10;
-      /* 216 */ ULong guest_FPR11;
-      /* 224 */ ULong guest_FPR12;
-      /* 232 */ ULong guest_FPR13;
-      /* 240 */ ULong guest_FPR14;
-      /* 248 */ ULong guest_FPR15;
-      /* 256 */ ULong guest_FPR16;
-      /* 264 */ ULong guest_FPR17;
-      /* 272 */ ULong guest_FPR18;
-      /* 280 */ ULong guest_FPR19;
-      /* 288 */ ULong guest_FPR20;
-      /* 296 */ ULong guest_FPR21;
-      /* 304 */ ULong guest_FPR22;
-      /* 312 */ ULong guest_FPR23;
-      /* 320 */ ULong guest_FPR24;
-      /* 328 */ ULong guest_FPR25;
-      /* 336 */ ULong guest_FPR26;
-      /* 344 */ ULong guest_FPR27;
-      /* 352 */ ULong guest_FPR28;
-      /* 360 */ ULong guest_FPR29;
-      /* 368 */ ULong guest_FPR30;
-      /* 376 */ ULong guest_FPR31;
-
-      // Vector Registers
+      // Vector Registers, Floating Point Registers, and VSX Registers
+      // With ISA 2.06, the "Vector-Scalar Floating-point" category
+      // provides facilities to support vector and scalar binary floating-
+      // point operations.  A unified register file is an integral part
+      // of this new facility, combining floating point and vector registers
+      // using a 64x128-bit vector.  These are referred to as VSR[0..63].
+      // The floating point registers are now mapped into double word element 0
+      // of VSR[0..31]. The 32x128-bit vector registers defined by the "Vector
+      // Facility [Category: Vector]" are now mapped to VSR[32..63].
+
       // IMPORTANT: the user of libvex must place the guest state so as
-      // to ensure that guest_VR{0..31}, and any shadows thereof, are
+      // to ensure that guest_VSR{0..63}, and any shadows thereof, are
       // 16-aligned.
-      /* 384 */ U128 guest_VR0;
-      /* 400 */ U128 guest_VR1;
-      /* 416 */ U128 guest_VR2;
-      /* 432 */ U128 guest_VR3;
-      /* 448 */ U128 guest_VR4;
-      /* 464 */ U128 guest_VR5;
-      /* 480 */ U128 guest_VR6;
-      /* 496 */ U128 guest_VR7;
-      /* 512 */ U128 guest_VR8;
-      /* 528 */ U128 guest_VR9;
-      /* 544 */ U128 guest_VR10;
-      /* 560 */ U128 guest_VR11;
-      /* 576 */ U128 guest_VR12;
-      /* 592 */ U128 guest_VR13;
-      /* 608 */ U128 guest_VR14;
-      /* 624 */ U128 guest_VR15;
-      /* 640 */ U128 guest_VR16;
-      /* 656 */ U128 guest_VR17;
-      /* 672 */ U128 guest_VR18;
-      /* 688 */ U128 guest_VR19;
-      /* 704 */ U128 guest_VR20;
-      /* 720 */ U128 guest_VR21;
-      /* 736 */ U128 guest_VR22;
-      /* 752 */ U128 guest_VR23;
-      /* 768 */ U128 guest_VR24;
-      /* 784 */ U128 guest_VR25;
-      /* 800 */ U128 guest_VR26;
-      /* 816 */ U128 guest_VR27;
-      /* 832 */ U128 guest_VR28;
-      /* 848 */ U128 guest_VR29;
-      /* 864 */ U128 guest_VR30;
-      /* 880 */ U128 guest_VR31;
-
-      /* 896 */ UInt guest_CIA;    // IP (no arch visible register)
-      /* 900 */ UInt guest_LR;     // Link Register
-      /* 904 */ UInt guest_CTR;    // Count Register
+
+      /*  128 */ U128 guest_VSR0;
+      /*  144 */ U128 guest_VSR1;
+      /*  160 */ U128 guest_VSR2;
+      /*  176 */ U128 guest_VSR3;
+      /*  192 */ U128 guest_VSR4;
+      /*  208 */ U128 guest_VSR5;
+      /*  224 */ U128 guest_VSR6;
+      /*  240 */ U128 guest_VSR7;
+      /*  256 */ U128 guest_VSR8;
+      /*  272 */ U128 guest_VSR9;
+      /*  288 */ U128 guest_VSR10;
+      /*  304 */ U128 guest_VSR11;
+      /*  320 */ U128 guest_VSR12;
+      /*  336 */ U128 guest_VSR13;
+      /*  352 */ U128 guest_VSR14;
+      /*  368 */ U128 guest_VSR15;
+      /*  384 */ U128 guest_VSR16;
+      /*  400 */ U128 guest_VSR17;
+      /*  416 */ U128 guest_VSR18;
+      /*  432 */ U128 guest_VSR19;
+      /*  448 */ U128 guest_VSR20;
+      /*  464 */ U128 guest_VSR21;
+      /*  480 */ U128 guest_VSR22;
+      /*  496 */ U128 guest_VSR23;
+      /*  512 */ U128 guest_VSR24;
+      /*  528 */ U128 guest_VSR25;
+      /*  544 */ U128 guest_VSR26;
+      /*  560 */ U128 guest_VSR27;
+      /*  576 */ U128 guest_VSR28;
+      /*  592 */ U128 guest_VSR29;
+      /*  608 */ U128 guest_VSR30;
+      /*  624 */ U128 guest_VSR31;
+      /*  640 */ U128 guest_VSR32;
+      /*  656 */ U128 guest_VSR33;
+      /*  672 */ U128 guest_VSR34;
+      /*  688 */ U128 guest_VSR35;
+      /*  704 */ U128 guest_VSR36;
+      /*  720 */ U128 guest_VSR37;
+      /*  736 */ U128 guest_VSR38;
+      /*  752 */ U128 guest_VSR39;
+      /*  768 */ U128 guest_VSR40;
+      /*  784 */ U128 guest_VSR41;
+      /*  800 */ U128 guest_VSR42;
+      /*  816 */ U128 guest_VSR43;
+      /*  832 */ U128 guest_VSR44;
+      /*  848 */ U128 guest_VSR45;
+      /*  864 */ U128 guest_VSR46;
+      /*  880 */ U128 guest_VSR47;
+      /*  896 */ U128 guest_VSR48;
+      /*  912 */ U128 guest_VSR49;
+      /*  928 */ U128 guest_VSR50;
+      /*  944 */ U128 guest_VSR51;
+      /*  960 */ U128 guest_VSR52;
+      /*  976 */ U128 guest_VSR53;
+      /*  992 */ U128 guest_VSR54;
+      /* 1008 */ U128 guest_VSR55;
+      /* 1024 */ U128 guest_VSR56;
+      /* 1040 */ U128 guest_VSR57;
+      /* 1056 */ U128 guest_VSR58;
+      /* 1072 */ U128 guest_VSR59;
+      /* 1088 */ U128 guest_VSR60;
+      /* 1104 */ U128 guest_VSR61;
+      /* 1120 */ U128 guest_VSR62;
+      /* 1136 */ U128 guest_VSR63;
+
+      /* 1152 */ UInt guest_CIA;    // IP (no arch visible register)
+      /* 1156 */ UInt guest_LR;     // Link Register
+      /* 1160 */ UInt guest_CTR;    // Count Register
 
       /* XER pieces */
-      /* 908 */ UChar guest_XER_SO; /* in lsb */
-      /* 909 */ UChar guest_XER_OV; /* in lsb */
-      /* 910 */ UChar guest_XER_CA; /* in lsb */
-      /* 911 */ UChar guest_XER_BC; /* all bits */
+      /* 1164 */ UChar guest_XER_SO; /* in lsb */
+      /* 1165 */ UChar guest_XER_OV; /* in lsb */
+      /* 1166 */ UChar guest_XER_CA; /* in lsb */
+      /* 1167 */ UChar guest_XER_BC; /* all bits */
 
       /* CR pieces */
-      /* 912 */ UChar guest_CR0_321; /* in [3:1] */
-      /* 913 */ UChar guest_CR0_0;   /* in lsb */
-      /* 914 */ UChar guest_CR1_321; /* in [3:1] */
-      /* 915 */ UChar guest_CR1_0;   /* in lsb */
-      /* 916 */ UChar guest_CR2_321; /* in [3:1] */
-      /* 917 */ UChar guest_CR2_0;   /* in lsb */
-      /* 918 */ UChar guest_CR3_321; /* in [3:1] */
-      /* 919 */ UChar guest_CR3_0;   /* in lsb */
-      /* 920 */ UChar guest_CR4_321; /* in [3:1] */
-      /* 921 */ UChar guest_CR4_0;   /* in lsb */
-      /* 922 */ UChar guest_CR5_321; /* in [3:1] */
-      /* 923 */ UChar guest_CR5_0;   /* in lsb */
-      /* 924 */ UChar guest_CR6_321; /* in [3:1] */
-      /* 925 */ UChar guest_CR6_0;   /* in lsb */
-      /* 926 */ UChar guest_CR7_321; /* in [3:1] */
-      /* 927 */ UChar guest_CR7_0;   /* in lsb */
+      /* 1168 */ UChar guest_CR0_321; /* in [3:1] */
+      /* 1169 */ UChar guest_CR0_0;   /* in lsb */
+      /* 1170 */ UChar guest_CR1_321; /* in [3:1] */
+      /* 1171 */ UChar guest_CR1_0;   /* in lsb */
+      /* 1172 */ UChar guest_CR2_321; /* in [3:1] */
+      /* 1173 */ UChar guest_CR2_0;   /* in lsb */
+      /* 1174 */ UChar guest_CR3_321; /* in [3:1] */
+      /* 1175 */ UChar guest_CR3_0;   /* in lsb */
+      /* 1176 */ UChar guest_CR4_321; /* in [3:1] */
+      /* 1177 */ UChar guest_CR4_0;   /* in lsb */
+      /* 1178 */ UChar guest_CR5_321; /* in [3:1] */
+      /* 1179 */ UChar guest_CR5_0;   /* in lsb */
+      /* 1180 */ UChar guest_CR6_321; /* in [3:1] */
+      /* 1181 */ UChar guest_CR6_0;   /* in lsb */
+      /* 1182 */ UChar guest_CR7_321; /* in [3:1] */
+      /* 1183 */ UChar guest_CR7_0;   /* in lsb */
 
       /* FP Status & Control Register fields */
-      /* 928 */ UInt guest_FPROUND; // FP Rounding Mode
+      /* 1184 */ UInt guest_FPROUND; // FP Rounding Mode
 
       /* Vector Save/Restore Register */
-      /* 932 */ UInt guest_VRSAVE;
+      /* 1188 */ UInt guest_VRSAVE;
 
       /* Vector Status and Control Register */
-      /* 936 */ UInt guest_VSCR;
+      /* 1192 */ UInt guest_VSCR;
 
       /* Emulation warnings */
-      /* 940 */ UInt guest_EMWARN;
+      /* 1196 */ UInt guest_EMWARN;
 
       /* For icbi: record start and length of area to invalidate */
-      /* 944 */ UInt guest_TISTART;
-      /* 948 */ UInt guest_TILEN;
+      /* 1200 */ UInt guest_TISTART;
+      /* 1204 */ UInt guest_TILEN;
 
       /* Used to record the unredirected guest address at the start of
          a translation whose start has been redirected.  By reading
@@ -203,27 +211,27 @@ typedef
          find out what the corresponding no-redirection address was.
          Note, this is only set for wrap-style redirects, not for
          replace-style ones. */
-      /* 952 */ UInt guest_NRADDR;
-      /* 956 */ UInt guest_NRADDR_GPR2; /* needed by aix */
+      /* 1208 */ UInt guest_NRADDR;
+      /* 1212 */ UInt guest_NRADDR_GPR2; /* needed by aix */
 
      /* A grows-upwards stack for hidden saves/restores of LR and R2
         needed for function interception and wrapping on ppc32-aix5.
         A horrible hack.  REDIR_SP points to the highest live entry,
         and so starts at -1. */
-      /* 960 */ UInt guest_REDIR_SP;
-      /* 964 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
+      /* 1216 */ UInt guest_REDIR_SP;
+      /* 1220 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
 
       /* Needed for AIX (but mandated for all guest architectures):
          CIA at the last SC insn.  Used when backing up to restart a
          syscall that has been interrupted by a signal. */
-      /* ??? */ UInt guest_IP_AT_SYSCALL; 
+      /* 1348 */ UInt guest_IP_AT_SYSCALL;
 
       /* SPRG3, which AIUI is readonly in user space.  Needed for
          threading on AIX. */
-      /* ??? */ UInt guest_SPRG3_RO;
+      /* 1352 */ UInt guest_SPRG3_RO;
 
       /* Padding to make it have an 8-aligned size */
-      /* UInt  padding; */
+      /* 1356 */ UInt  padding;
    }
    VexGuestPPC32State;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc64.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc64.h
index e2afcbb67..f43cb4836 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc64.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc64.h
@@ -120,123 +120,131 @@ typedef
       /* 240 */ ULong guest_GPR30;
       /* 248 */ ULong guest_GPR31;
 
-      // Floating Point Registers
-      /* 256 */ ULong guest_FPR0;
-      /* 264 */ ULong guest_FPR1;
-      /* 272 */ ULong guest_FPR2;
-      /* 280 */ ULong guest_FPR3;
-      /* 288 */ ULong guest_FPR4;
-      /* 296 */ ULong guest_FPR5;
-      /* 304 */ ULong guest_FPR6;
-      /* 312 */ ULong guest_FPR7;
-      /* 320 */ ULong guest_FPR8;
-      /* 328 */ ULong guest_FPR9;
-      /* 336 */ ULong guest_FPR10;
-      /* 344 */ ULong guest_FPR11;
-      /* 352 */ ULong guest_FPR12;
-      /* 360 */ ULong guest_FPR13;
-      /* 368 */ ULong guest_FPR14;
-      /* 376 */ ULong guest_FPR15;
-      /* 384 */ ULong guest_FPR16;
-      /* 392 */ ULong guest_FPR17;
-      /* 400 */ ULong guest_FPR18;
-      /* 408 */ ULong guest_FPR19;
-      /* 416 */ ULong guest_FPR20;
-      /* 424 */ ULong guest_FPR21;
-      /* 432 */ ULong guest_FPR22;
-      /* 440 */ ULong guest_FPR23;
-      /* 448 */ ULong guest_FPR24;
-      /* 456 */ ULong guest_FPR25;
-      /* 464 */ ULong guest_FPR26;
-      /* 472 */ ULong guest_FPR27;
-      /* 480 */ ULong guest_FPR28;
-      /* 488 */ ULong guest_FPR29;
-      /* 496 */ ULong guest_FPR30;
-      /* 504 */ ULong guest_FPR31;
-
-      // Vector Registers
+      // Vector Registers, Floating Point Registers, and VSX Registers
+      // With ISA 2.06, the "Vector-Scalar Floating-point" category
+      // provides facilities to support vector and scalar binary floating-
+      // point operations.  A unified register file is an integral part
+      // of this new facility, combining floating point and vector registers
+      // using a 64x128-bit vector.  These are referred to as VSR[0..63].
+      // The floating point registers are now mapped into double word element 0
+      // of VSR[0..31]. The 32x128-bit vector registers defined by the "Vector
+      // Facility [Category: Vector]" are now mapped to VSR[32..63].
+
       // IMPORTANT: the user of libvex must place the guest state so as
-      // to ensure that guest_VR{0..31}, and any shadows thereof, are
+      // to ensure that guest_VSR{0..63}, and any shadows thereof, are
       // 16-aligned.
-      /*  512 */ U128 guest_VR0;
-      /*  528 */ U128 guest_VR1;
-      /*  544 */ U128 guest_VR2;
-      /*  560 */ U128 guest_VR3;
-      /*  576 */ U128 guest_VR4;
-      /*  592 */ U128 guest_VR5;
-      /*  608 */ U128 guest_VR6;
-      /*  624 */ U128 guest_VR7;
-      /*  640 */ U128 guest_VR8;
-      /*  656 */ U128 guest_VR9;
-      /*  672 */ U128 guest_VR10;
-      /*  688 */ U128 guest_VR11;
-      /*  704 */ U128 guest_VR12;
-      /*  720 */ U128 guest_VR13;
-      /*  736 */ U128 guest_VR14;
-      /*  752 */ U128 guest_VR15;
-      /*  768 */ U128 guest_VR16;
-      /*  784 */ U128 guest_VR17;
-      /*  800 */ U128 guest_VR18;
-      /*  816 */ U128 guest_VR19;
-      /*  832 */ U128 guest_VR20;
-      /*  848 */ U128 guest_VR21;
-      /*  864 */ U128 guest_VR22;
-      /*  880 */ U128 guest_VR23;
-      /*  896 */ U128 guest_VR24;
-      /*  912 */ U128 guest_VR25;
-      /*  928 */ U128 guest_VR26;
-      /*  944 */ U128 guest_VR27;
-      /*  960 */ U128 guest_VR28;
-      /*  976 */ U128 guest_VR29;
-      /*  992 */ U128 guest_VR30;
-      /* 1008 */ U128 guest_VR31;
-
-      /* 1024 */ ULong guest_CIA;    // IP (no arch visible register)
-      /* 1032 */ ULong guest_LR;     // Link Register
-      /* 1040 */ ULong guest_CTR;    // Count Register
+
+      /*  256 */ U128 guest_VSR0;
+      /*  272 */ U128 guest_VSR1;
+      /*  288 */ U128 guest_VSR2;
+      /*  304 */ U128 guest_VSR3;
+      /*  320 */ U128 guest_VSR4;
+      /*  336 */ U128 guest_VSR5;
+      /*  352 */ U128 guest_VSR6;
+      /*  368 */ U128 guest_VSR7;
+      /*  384 */ U128 guest_VSR8;
+      /*  400 */ U128 guest_VSR9;
+      /*  416 */ U128 guest_VSR10;
+      /*  432 */ U128 guest_VSR11;
+      /*  448 */ U128 guest_VSR12;
+      /*  464 */ U128 guest_VSR13;
+      /*  480 */ U128 guest_VSR14;
+      /*  496 */ U128 guest_VSR15;
+      /*  512 */ U128 guest_VSR16;
+      /*  528 */ U128 guest_VSR17;
+      /*  544 */ U128 guest_VSR18;
+      /*  560 */ U128 guest_VSR19;
+      /*  576 */ U128 guest_VSR20;
+      /*  592 */ U128 guest_VSR21;
+      /*  608 */ U128 guest_VSR22;
+      /*  624 */ U128 guest_VSR23;
+      /*  640 */ U128 guest_VSR24;
+      /*  656 */ U128 guest_VSR25;
+      /*  672 */ U128 guest_VSR26;
+      /*  688 */ U128 guest_VSR27;
+      /*  704 */ U128 guest_VSR28;
+      /*  720 */ U128 guest_VSR29;
+      /*  736 */ U128 guest_VSR30;
+      /*  752 */ U128 guest_VSR31;
+      /*  768 */ U128 guest_VSR32;
+      /*  784 */ U128 guest_VSR33;
+      /*  800 */ U128 guest_VSR34;
+      /*  816 */ U128 guest_VSR35;
+      /*  832 */ U128 guest_VSR36;
+      /*  848 */ U128 guest_VSR37;
+      /*  864 */ U128 guest_VSR38;
+      /*  880 */ U128 guest_VSR39;
+      /*  896 */ U128 guest_VSR40;
+      /*  912 */ U128 guest_VSR41;
+      /*  928 */ U128 guest_VSR42;
+      /*  944 */ U128 guest_VSR43;
+      /*  960 */ U128 guest_VSR44;
+      /*  976 */ U128 guest_VSR45;
+      /*  992 */ U128 guest_VSR46;
+      /* 1008 */ U128 guest_VSR47;
+      /* 1024 */ U128 guest_VSR48;
+      /* 1040 */ U128 guest_VSR49;
+      /* 1056 */ U128 guest_VSR50;
+      /* 1072 */ U128 guest_VSR51;
+      /* 1088 */ U128 guest_VSR52;
+      /* 1104 */ U128 guest_VSR53;
+      /* 1120 */ U128 guest_VSR54;
+      /* 1136 */ U128 guest_VSR55;
+      /* 1152 */ U128 guest_VSR56;
+      /* 1168 */ U128 guest_VSR57;
+      /* 1184 */ U128 guest_VSR58;
+      /* 1200 */ U128 guest_VSR59;
+      /* 1216 */ U128 guest_VSR60;
+      /* 1232 */ U128 guest_VSR61;
+      /* 1248 */ U128 guest_VSR62;
+      /* 1264 */ U128 guest_VSR63;
+
+      /* 1280 */ ULong guest_CIA;    // IP (no arch visible register)
+      /* 1288 */ ULong guest_LR;     // Link Register
+      /* 1296 */ ULong guest_CTR;    // Count Register
 
       /* XER pieces */
-      /* 1048 */ UChar guest_XER_SO; /* in lsb */
-      /* 1049 */ UChar guest_XER_OV; /* in lsb */
-      /* 1050 */ UChar guest_XER_CA; /* in lsb */
-      /* 1051 */ UChar guest_XER_BC; /* all bits */
+      /* 1304 */ UChar guest_XER_SO; /* in lsb */
+      /* 1305 */ UChar guest_XER_OV; /* in lsb */
+      /* 1306 */ UChar guest_XER_CA; /* in lsb */
+      /* 1307 */ UChar guest_XER_BC; /* all bits */
 
       /* CR pieces */
-      /* 1052 */ UChar guest_CR0_321; /* in [3:1] */
-      /* 1053 */ UChar guest_CR0_0;   /* in lsb */
-      /* 1054 */ UChar guest_CR1_321; /* in [3:1] */
-      /* 1055 */ UChar guest_CR1_0;   /* in lsb */
-      /* 1056 */ UChar guest_CR2_321; /* in [3:1] */
-      /* 1057 */ UChar guest_CR2_0;   /* in lsb */
-      /* 1058 */ UChar guest_CR3_321; /* in [3:1] */
-      /* 1059 */ UChar guest_CR3_0;   /* in lsb */
-      /* 1060 */ UChar guest_CR4_321; /* in [3:1] */
-      /* 1061 */ UChar guest_CR4_0;   /* in lsb */
-      /* 1062 */ UChar guest_CR5_321; /* in [3:1] */
-      /* 1063 */ UChar guest_CR5_0;   /* in lsb */
-      /* 1064 */ UChar guest_CR6_321; /* in [3:1] */
-      /* 1065 */ UChar guest_CR6_0;   /* in lsb */
-      /* 1066 */ UChar guest_CR7_321; /* in [3:1] */
-      /* 1067 */ UChar guest_CR7_0;   /* in lsb */
+      /* 1308 */ UChar guest_CR0_321; /* in [3:1] */
+      /* 1309 */ UChar guest_CR0_0;   /* in lsb */
+      /* 1310 */ UChar guest_CR1_321; /* in [3:1] */
+      /* 1311 */ UChar guest_CR1_0;   /* in lsb */
+      /* 1312 */ UChar guest_CR2_321; /* in [3:1] */
+      /* 1313 */ UChar guest_CR2_0;   /* in lsb */
+      /* 1314 */ UChar guest_CR3_321; /* in [3:1] */
+      /* 1315 */ UChar guest_CR3_0;   /* in lsb */
+      /* 1316 */ UChar guest_CR4_321; /* in [3:1] */
+      /* 1317 */ UChar guest_CR4_0;   /* in lsb */
+      /* 1318 */ UChar guest_CR5_321; /* in [3:1] */
+      /* 1319 */ UChar guest_CR5_0;   /* in lsb */
+      /* 1320 */ UChar guest_CR6_321; /* in [3:1] */
+      /* 1321 */ UChar guest_CR6_0;   /* in lsb */
+      /* 1322 */ UChar guest_CR7_321; /* in [3:1] */
+      /* 1323 */ UChar guest_CR7_0;   /* in lsb */
 
       /* FP Status & Control Register fields */
-      /* 1068 */ UInt guest_FPROUND; // FP Rounding Mode
+      /* 1324 */ UInt guest_FPROUND; // FP Rounding Mode
 
       /* Vector Save/Restore Register */
-      /* 1072 */ UInt guest_VRSAVE;
+      /* 1328 */ UInt guest_VRSAVE;
 
       /* Vector Status and Control Register */
-      /* 1076 */ UInt guest_VSCR;
+      /* 1332 */ UInt guest_VSCR;
 
       /* Emulation warnings */
-      /* 1080 */ UInt guest_EMWARN;
+      /* 1336 */ UInt guest_EMWARN;
 
       /* gcc adds 4 bytes padding here: pre-empt it. */
-      /* 1084 */ UInt  padding;
+      /* 1340 */ UInt  padding;
 
       /* For icbi: record start and length of area to invalidate */
-      /* 1088 */ ULong guest_TISTART;
-      /* 1096 */ ULong guest_TILEN;
+      /* 1344 */ ULong guest_TISTART;
+      /* 1352 */ ULong guest_TILEN;
 
       /* Used to record the unredirected guest address at the start of
          a translation whose start has been redirected.  By reading
@@ -244,26 +252,26 @@ typedef
          find out what the corresponding no-redirection address was.
          Note, this is only set for wrap-style redirects, not for
          replace-style ones. */
-      /* 1104 */ ULong guest_NRADDR;
-      /* 1112 */ ULong guest_NRADDR_GPR2;
+      /* 1360 */ ULong guest_NRADDR;
+      /* 1368 */ ULong guest_NRADDR_GPR2;
 
      /* A grows-upwards stack for hidden saves/restores of LR and R2
         needed for function interception and wrapping on ppc64-linux.
         A horrible hack.  REDIR_SP points to the highest live entry,
         and so starts at -1. */
-      /* 1120 */ ULong guest_REDIR_SP;
-      /* 1128 */ ULong guest_REDIR_STACK[VEX_GUEST_PPC64_REDIR_STACK_SIZE];
+      /* 1376 */ ULong guest_REDIR_SP;
+      /* 1384 */ ULong guest_REDIR_STACK[VEX_GUEST_PPC64_REDIR_STACK_SIZE];
 
       /* Needed for AIX: CIA at the last SC insn.  Used when backing up
          to restart a syscall that has been interrupted by a signal. */
-      /* 1384 */ ULong guest_IP_AT_SYSCALL; 
+      /* 1640 */ ULong guest_IP_AT_SYSCALL;
 
       /* SPRG3, which AIUI is readonly in user space.  Needed for
          threading on AIX. */
-      /* ???? */ ULong guest_SPRG3_RO;
+      /* 1648 */ ULong guest_SPRG3_RO;
 
-      /* Padding to make it have an 8-aligned size */
-      /* ???? */ ULong padding2;
+      /* Padding to make it have an 16-aligned size */
+      /* 1656 */ ULong padding2;
    }
    VexGuestPPC64State;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_s390x.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_s390x.h
new file mode 100644
index 000000000..69ec782b5
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_s390x.h
@@ -0,0 +1,174 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*---------------------------------------------------------------*/
+/*--- begin                              libvex_guest_s390x.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __LIBVEX_PUB_GUEST_S390X_H
+#define __LIBVEX_PUB_GUEST_S390X_H
+
+#include "libvex_basictypes.h"
+#include "libvex_emwarn.h"
+
+/*------------------------------------------------------------*/
+/*--- Vex's representation of the s390 CPU state.          ---*/
+/*------------------------------------------------------------*/
+
+typedef struct {
+
+/*------------------------------------------------------------*/
+/*--- ar registers                                         ---*/
+/*------------------------------------------------------------*/
+
+   /*    0 */  UInt guest_a0;
+   /*    4 */  UInt guest_a1;
+   /*    8 */  UInt guest_a2;
+   /*   12 */  UInt guest_a3;
+   /*   16 */  UInt guest_a4;
+   /*   20 */  UInt guest_a5;
+   /*   24 */  UInt guest_a6;
+   /*   28 */  UInt guest_a7;
+   /*   32 */  UInt guest_a8;
+   /*   36 */  UInt guest_a9;
+   /*   40 */  UInt guest_a10;
+   /*   44 */  UInt guest_a11;
+   /*   48 */  UInt guest_a12;
+   /*   52 */  UInt guest_a13;
+   /*   56 */  UInt guest_a14;
+   /*   60 */  UInt guest_a15;
+
+/*------------------------------------------------------------*/
+/*--- fpr registers                                        ---*/
+/*------------------------------------------------------------*/
+
+   /*   64 */  ULong guest_f0;
+   /*   72 */  ULong guest_f1;
+   /*   80 */  ULong guest_f2;
+   /*   88 */  ULong guest_f3;
+   /*   96 */  ULong guest_f4;
+   /*  104 */  ULong guest_f5;
+   /*  112 */  ULong guest_f6;
+   /*  120 */  ULong guest_f7;
+   /*  128 */  ULong guest_f8;
+   /*  136 */  ULong guest_f9;
+   /*  144 */  ULong guest_f10;
+   /*  152 */  ULong guest_f11;
+   /*  160 */  ULong guest_f12;
+   /*  168 */  ULong guest_f13;
+   /*  176 */  ULong guest_f14;
+   /*  184 */  ULong guest_f15;
+
+/*------------------------------------------------------------*/
+/*--- gpr registers                                        ---*/
+/*------------------------------------------------------------*/
+
+   /*  192 */  ULong guest_r0;
+   /*  200 */  ULong guest_r1;
+   /*  208 */  ULong guest_r2;
+   /*  216 */  ULong guest_r3;
+   /*  224 */  ULong guest_r4;
+   /*  232 */  ULong guest_r5;
+   /*  240 */  ULong guest_r6;
+   /*  248 */  ULong guest_r7;
+   /*  256 */  ULong guest_r8;
+   /*  264 */  ULong guest_r9;
+   /*  272 */  ULong guest_r10;
+   /*  280 */  ULong guest_r11;
+   /*  288 */  ULong guest_r12;
+   /*  296 */  ULong guest_r13;
+   /*  304 */  ULong guest_r14;
+   /*  312 */  ULong guest_r15;
+
+/*------------------------------------------------------------*/
+/*--- S390 miscellaneous registers                         ---*/
+/*------------------------------------------------------------*/
+
+   /*  320 */  ULong guest_counter;
+   /*  328 */  UInt guest_fpc;
+   /* 4-byte hole to enforce alignment requirements */
+   /*  336 */  ULong guest_IA;
+
+/*------------------------------------------------------------*/
+/*--- S390 pseudo registers                                ---*/
+/*------------------------------------------------------------*/
+
+   /*  344 */  ULong guest_SYSNO;
+
+/*------------------------------------------------------------*/
+/*--- 4-word thunk used to calculate the condition code    ---*/
+/*------------------------------------------------------------*/
+
+   /*  352 */  ULong guest_CC_OP;
+   /*  360 */  ULong guest_CC_DEP1;
+   /*  368 */  ULong guest_CC_DEP2;
+   /*  376 */  ULong guest_CC_NDEP;
+
+/*------------------------------------------------------------*/
+/*--- Pseudo registers. Required by all architectures      ---*/
+/*------------------------------------------------------------*/
+
+   /* See comments at bottom of libvex.h */
+   /*  384 */  ULong guest_NRADDR;
+   /*  392 */  ULong guest_TISTART;
+   /*  400 */  ULong guest_TILEN;
+
+   /* Used when backing up to restart a syscall that has
+      been interrupted by a signal. See also comment in
+      libvex_ir.h */
+   /*  408 */  ULong guest_IP_AT_SYSCALL;
+
+   /* Emulation warnings; see comments in libvex_emwarn.h */
+   /*  416 */  UInt guest_EMWARN;
+
+/*------------------------------------------------------------*/
+/*--- Force alignment to 16 bytes                          ---*/
+/*------------------------------------------------------------*/
+   /*  420 */  UChar padding[12];
+
+   /*  432 */  /* This is the size of the guest state */
+} VexGuestS390XState;
+
+
+/*------------------------------------------------------------*/
+/*--- Function prototypes                                  ---*/
+/*------------------------------------------------------------*/
+
+void LibVEX_GuestS390X_initialise(VexGuestS390XState *);
+
+/*------------------------------------------------------------*/
+/*--- Dedicated registers                                  ---*/
+/*------------------------------------------------------------*/
+
+#define guest_LR guest_r14  /* Link register */
+#define guest_SP guest_r15  /* Stack pointer */
+#define guest_FP guest_r11  /* Frame pointer */
+
+/*---------------------------------------------------------------*/
+/*--- end                                libvex_guest_s390x.h ---*/
+/*---------------------------------------------------------------*/
+
+#endif /* __LIBVEX_PUB_GUEST_S390X_H */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_ir.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_ir.h
index 0d8a8472b..61b88334d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_ir.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_ir.h
@@ -227,6 +227,7 @@ typedef
       Ity_I128,  /* 128-bit scalar */
       Ity_F32,   /* IEEE 754 float */
       Ity_F64,   /* IEEE 754 double */
+      Ity_F128,  /* 128-bit floating point; implementation defined */
       Ity_V128   /* 128-bit SIMD */
    }
    IRType;
@@ -261,6 +262,9 @@ typedef
       Ico_U16, 
       Ico_U32, 
       Ico_U64,
+      Ico_F32,   /* 32-bit IEEE754 floating */
+      Ico_F32i,  /* 32-bit unsigned int to be interpreted literally
+                    as a IEEE754 single value. */
       Ico_F64,   /* 64-bit IEEE754 floating */
       Ico_F64i,  /* 64-bit unsigned int to be interpreted literally
                     as a IEEE754 double value. */
@@ -282,6 +286,8 @@ typedef
          UShort U16;
          UInt   U32;
          ULong  U64;
+         Float  F32;
+         UInt   F32i;
          Double F64;
          ULong  F64i;
          UShort V128;   /* 16-bit value; see Ico_V128 comment above */
@@ -295,6 +301,8 @@ extern IRConst* IRConst_U8   ( UChar );
 extern IRConst* IRConst_U16  ( UShort );
 extern IRConst* IRConst_U32  ( UInt );
 extern IRConst* IRConst_U64  ( ULong );
+extern IRConst* IRConst_F32  ( Float );
+extern IRConst* IRConst_F32i ( UInt );
 extern IRConst* IRConst_F64  ( Double );
 extern IRConst* IRConst_F64i ( ULong );
 extern IRConst* IRConst_V128 ( UShort );
@@ -314,9 +322,10 @@ extern Bool eqIRConst ( IRConst*, IRConst* );
 /* Describes a helper function to call.  The name part is purely for
    pretty printing and not actually used.  regparms=n tells the back
    end that the callee has been declared
-   "__attribute__((regparm(n)))".  On some targets (x86) the back end
-   will need to construct a non-standard sequence to call a function
-   declared like this. 
+   "__attribute__((regparm(n)))", although indirectly using the
+   VEX_REGPARM(n) macro.  On some targets (x86) the back end will need
+   to construct a non-standard sequence to call a function declared
+   like this.
 
    mcx_mask is a sop to Memcheck.  It indicates which args should be
    considered 'always defined' when lazily computing definedness of
@@ -469,6 +478,9 @@ typedef
                           // of which lo half is div and hi half is mod
       Iop_DivModS128to64, // ditto, signed
 
+      Iop_DivModS64to64, // :: I64,I64 -> I128
+                         // of which lo half is div and hi half is mod
+
       /* Integer conversions.  Some of these are redundant (eg
          Iop_64to8 is the same as Iop_64to32 and then Iop_32to8), but
          having a complete set reduces the typical dynamic size of IR
@@ -552,6 +564,8 @@ typedef
       */
       /* :: F64 x F64 -> IRCmpF64Result(I32) */
       Iop_CmpF64,
+      Iop_CmpF32,
+      Iop_CmpF128,
 
       /* --- Int to/from FP conversions. --- */
 
@@ -603,9 +617,19 @@ typedef
       Iop_I16StoF64, /*                       signed I16 -> F64 */
       Iop_I32StoF64, /*                       signed I32 -> F64 */
       Iop_I64StoF64, /* IRRoundingMode(I32) x signed I64 -> F64 */
+      Iop_I64UtoF64, /* IRRoundingMode(I32) x unsigned I64 -> F64 */
+      Iop_I64UtoF32, /* IRRoundingMode(I32) x unsigned I64 -> F32 */
 
       Iop_I32UtoF64, /*                       unsigned I32 -> F64 */
 
+      Iop_F32toI16S, /* IRRoundingMode(I32) x F32 -> signed I16 */
+      Iop_F32toI32S, /* IRRoundingMode(I32) x F32 -> signed I32 */
+      Iop_F32toI64S, /* IRRoundingMode(I32) x F32 -> signed I64 */
+
+      Iop_I16StoF32, /*                       signed I16 -> F32 */
+      Iop_I32StoF32, /* IRRoundingMode(I32) x signed I32 -> F32 */
+      Iop_I64StoF32, /* IRRoundingMode(I32) x signed I64 -> F32 */
+
       /* Conversion between floating point formats */
       Iop_F32toF64,  /*                       F32 -> F64 */
       Iop_F64toF32,  /* IRRoundingMode(I32) x F64 -> F32 */
@@ -615,6 +639,30 @@ typedef
       Iop_ReinterpF64asI64, Iop_ReinterpI64asF64,
       Iop_ReinterpF32asI32, Iop_ReinterpI32asF32,
 
+      /* Support for 128-bit floating point */
+      Iop_F64HLtoF128,/* (high half of F128,low half of F128) -> F128 */
+      Iop_F128HItoF64,/* F128 -> high half of F128 into a F64 register */
+      Iop_F128LOtoF64,/* F128 -> low  half of F128 into a F64 register */
+
+      /* :: IRRoundingMode(I32) x F128 x F128 -> F128 */
+      Iop_AddF128, Iop_SubF128, Iop_MulF128, Iop_DivF128,
+
+      /* :: F128 -> F128 */
+      Iop_NegF128, Iop_AbsF128,
+
+      /* :: IRRoundingMode(I32) x F128 -> F128 */
+      Iop_SqrtF128,
+
+      Iop_I32StoF128, /*                signed I32  -> F128 */
+      Iop_I64StoF128, /*                signed I64  -> F128 */
+      Iop_F32toF128,  /*                       F32  -> F128 */
+      Iop_F64toF128,  /*                       F64  -> F128 */
+
+      Iop_F128toI32S, /* IRRoundingMode(I32) x F128 -> signed I32  */
+      Iop_F128toI64S, /* IRRoundingMode(I32) x F128 -> signed I64  */
+      Iop_F128toF64,  /* IRRoundingMode(I32) x F128 -> F64         */
+      Iop_F128toF32,  /* IRRoundingMode(I32) x F128 -> F32         */
+
       /* --- guest x86/amd64 specifics, not mandated by 754. --- */
 
       /* Binary ops, with rounding. */
@@ -642,11 +690,19 @@ typedef
       Iop_RoundF32toInt, /* F32 value to nearest integral value (still
                             as F32) */
 
+      /* --- guest s390 specifics, not mandated by 754. --- */
+
+      /* Fused multiply-add/sub */
+      /* :: IRRoundingMode(I32) x F32 x F32 x F32 -> F32
+            (computes op3 * op2 +/- op1 */
+      Iop_MAddF32, Iop_MSubF32,
+
       /* --- guest ppc32/64 specifics, not mandated by 754. --- */
 
       /* Ternary operations, with rounding. */
       /* Fused multiply-add/sub, with 112-bit intermediate
-	 precision */
+         precision for ppc.
+         Also used to implement fused multiply-add/sub for s390. */
       /* :: IRRoundingMode(I32) x F64 x F64 x F64 -> F64 
             (computes arg2 * arg3 +/- arg4) */ 
       Iop_MAddF64, Iop_MSubF64,
@@ -675,6 +731,36 @@ typedef
       Iop_CalcFPRF, /* Calc 5 fpscr[FPRF] bits (Class, <, =, >, Unord)
                        from FP result */
 
+      /* ------------------ 32-bit SIMD Integer ------------------ */
+
+      /* 16x2 add/sub, also signed/unsigned saturating variants */
+      Iop_Add16x2, Iop_Sub16x2,
+      Iop_QAdd16Sx2, Iop_QAdd16Ux2,
+      Iop_QSub16Sx2, Iop_QSub16Ux2,
+
+      /* 16x2 signed/unsigned halving add/sub.  For each lane, these
+         compute bits 16:1 of (eg) sx(argL) + sx(argR),
+         or zx(argL) - zx(argR) etc. */
+      Iop_HAdd16Ux2, Iop_HAdd16Sx2,
+      Iop_HSub16Ux2, Iop_HSub16Sx2,
+
+      /* 8x4 add/sub, also signed/unsigned saturating variants */
+      Iop_Add8x4, Iop_Sub8x4,
+      Iop_QAdd8Sx4, Iop_QAdd8Ux4,
+      Iop_QSub8Sx4, Iop_QSub8Ux4,
+
+      /* 8x4 signed/unsigned halving add/sub.  For each lane, these
+         compute bits 8:1 of (eg) sx(argL) + sx(argR),
+         or zx(argL) - zx(argR) etc. */
+      Iop_HAdd8Ux4, Iop_HAdd8Sx4,
+      Iop_HSub8Ux4, Iop_HSub8Sx4,
+
+      /* 8x4 sum of absolute unsigned differences. */
+      Iop_Sad8Ux4,
+
+      /* MISC (vector integer cmp != 0) */
+      Iop_CmpNEZ16x2, Iop_CmpNEZ8x4,
+
       /* ------------------ 64-bit SIMD FP ------------------------ */
 
       /* Convertion to/from int */
@@ -717,7 +803,6 @@ typedef
       /* Unary */
       Iop_Neg32Fx2, Iop_Abs32Fx2,
 
-
       /* ------------------ 64-bit SIMD Integer. ------------------ */
 
       /* MISC (vector integer cmp != 0) */
@@ -1199,6 +1284,8 @@ typedef
    }
    IRCmpF64Result;
 
+typedef IRCmpF64Result IRCmpF32Result;
+typedef IRCmpF64Result IRCmpF128Result;
 
 /* ------------------ Expressions ------------------ */
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_s390x_common.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_s390x_common.h
new file mode 100644
index 000000000..7aa598883
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_s390x_common.h
@@ -0,0 +1,89 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Common defs for s390x                  libvex_s390x_common.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright IBM Corp. 2010-2011
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+#ifndef __LIBVEX_PUB_S390X_H
+#define __LIBVEX_PUB_S390X_H
+
+/* This file includes definitions for s390.
+
+   It must be suitable for inclusion in assembler source files. */
+
+
+/*--------------------------------------------------------------*/
+/*--- Dedicated registers                                    ---*/
+/*--------------------------------------------------------------*/
+
+#define S390_REGNO_RETURN_VALUE         2
+#define S390_REGNO_DISPATCH_CTR        12   /* Holds VG_(dispatch_ctr) */
+#define S390_REGNO_GUEST_STATE_POINTER 13
+#define S390_REGNO_LINK_REGISTER       14
+#define S390_REGNO_STACK_POINTER       15
+
+
+/*--------------------------------------------------------------*/
+/*--- Offsets in the stack frame allocated by the dispatcher ---*/
+/*--------------------------------------------------------------*/
+
+/* Where client's FPC register is saved. */
+#define S390_OFFSET_SAVED_FPC_C 160+88
+
+/* Where valgrind's FPC register is saved. */
+#define S390_OFFSET_SAVED_FPC_V 160+80
+
+/* Where client code will save the link register before calling a helper. */
+#define S390_OFFSET_SAVED_LR 160+72
+
+/* Location of saved guest state pointer */
+#define S390_OFFSET_SAVED_GSP 160+64
+
+/* Size of frame allocated by VG_(run_innerloop)
+   Need size for
+       8 FPRs
+     + 2 GPRs (SAVED_GSP and SAVED_LR)
+     + 2 FPCs (SAVED_FPC_C and SAVED_FPC_V).
+
+   Additionally, we need a standard frame for helper functions being called
+   from client code. (See figure 1-16 in zSeries ABI) */
+#define S390_INNERLOOP_FRAME_SIZE ((8+2+2)*8 + 160)
+
+
+/*--------------------------------------------------------------*/
+/*--- Miscellaneous                                          ---*/
+/*--------------------------------------------------------------*/
+
+/* Number of arguments that can be passed in registers */
+#define S390_NUM_GPRPARMS 5
+
+#endif /* __LIBVEX_PUB_S390X_H */
+
+/*--------------------------------------------------------------------*/
+/*--- end                                    libvex_s390x_common.h ---*/
+/*--------------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/test_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/test_main.c
index 2fc41a635..b036acd38 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/test_main.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/test_main.c
@@ -1732,20 +1732,20 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
       /* Scalar floating point */
 
          //      case Iop_RoundF64:
-      case Iop_F64toI64:
-      case Iop_I64toF64:
+      case Iop_F64toI64S:
+      case Iop_I64StoF64:
          /* First arg is I32 (rounding mode), second is F64 or I64
             (data). */
          return mkLazy2(mce, Ity_I64, vatom1, vatom2);
 
       case Iop_PRemC3210F64: case Iop_PRem1C3210F64:
          /* Takes two F64 args. */
-      case Iop_F64toI32:
+      case Iop_F64toI32S:
       case Iop_F64toF32:
          /* First arg is I32 (rounding mode), second is F64 (data). */
          return mkLazy2(mce, Ity_I32, vatom1, vatom2);
 
-      case Iop_F64toI16:
+      case Iop_F64toI16S:
          /* First arg is I32 (rounding mode), second is F64 (data). */
          return mkLazy2(mce, Ity_I16, vatom1, vatom2);
 
@@ -1931,7 +1931,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
          return assignNew(mce, Ity_V128, unop(op, vatom));
 
       case Iop_F32toF64: 
-      case Iop_I32toF64:
+      case Iop_I32StoF64:
       case Iop_NegF64:
       case Iop_SinF64:
       case Iop_CosF64:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/aclocal.m4 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/aclocal.m4
index 84ad65fb3..e26fdc2bf 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/aclocal.m4
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/aclocal.m4
@@ -19,164 +19,6 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
 
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-# 
-# Copyright © 2004 Scott James Remnant .
-#
-# 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.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=m4_default([$1], [0.9.0])
-	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		PKG_CONFIG=""
-	fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-		     [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-   	AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
-        else 
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-	m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])dnl
-        ])
-elif test $pkg_failed = untried; then
-     	AC_MSG_RESULT([no])
-	m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see .])dnl
-        ])
-else
-	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-	$3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
 # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/auxprogs/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/auxprogs/Makefile.in
index 3b2e3512f..de0a126ad 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/auxprogs/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/auxprogs/Makefile.in
@@ -119,6 +119,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -148,12 +150,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -306,7 +303,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -335,6 +332,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -363,6 +365,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 dist_noinst_SCRIPTS = \
 	gen-mdg \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.am
index 816808139..126365370 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.am
@@ -44,7 +44,8 @@ CACHEGRIND_SOURCES_COMMON = \
 	cg-x86-amd64.c \
 	cg-ppc32.c \
 	cg-ppc64.c \
-	cg-arm.c
+ 	cg-arm.c   \
+	cg-s390x.c
 
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES      = \
 	$(CACHEGRIND_SOURCES_COMMON)
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.in
index 03686c08a..99406f9bb 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/Makefile.in
@@ -70,19 +70,21 @@ am__objects_1 =  \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 am_cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am__objects_1)
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am_cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS)
 am__cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST = cg_main.c \
-	cg-x86-amd64.c cg-ppc32.c cg-ppc64.c cg-arm.c
+	cg-x86-amd64.c cg-ppc32.c cg-ppc64.c cg-arm.c cg-s390x.c
 am__objects_2 =  \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
@@ -212,6 +214,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -241,12 +245,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -400,7 +399,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -429,6 +428,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -457,6 +461,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 
 #----------------------------------------------------------------------------
@@ -509,6 +514,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -572,6 +580,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \
 LIBREPLACEMALLOC_X86_L4RE = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -614,6 +625,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \
 	$(LIBREPLACEMALLOC_X86_L4RE) \
 	-Wl,--no-whole-archive
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/cg-manual.xml \
 	docs/cg_annotate-manpage.xml
@@ -638,7 +654,8 @@ CACHEGRIND_SOURCES_COMMON = \
 	cg-x86-amd64.c \
 	cg-ppc32.c \
 	cg-ppc64.c \
-	cg-arm.c
+ 	cg-arm.c   \
+	cg-s390x.c
 
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
 	$(CACHEGRIND_SOURCES_COMMON)
@@ -821,11 +838,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cg_merge-cg_merge.Po@am__quote@
@@ -914,6 +933,20 @@ cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj: cg-arm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj `if test -f 'cg-arm.c'; then $(CYGPATH_W) 'cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/cg-arm.c'; fi`
 
+cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+
+cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+
 cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o: cg_main.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o `test -f 'cg_main.c' || echo '$(srcdir)/'`cg_main.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Po
@@ -984,6 +1017,20 @@ cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj: cg-arm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj `if test -f 'cg-arm.c'; then $(CYGPATH_W) 'cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/cg-arm.c'; fi`
 
+cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+
+cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+
 cg_merge-cg_merge.o: cg_merge.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cg_merge_CPPFLAGS) $(CPPFLAGS) $(cg_merge_CFLAGS) $(CFLAGS) -MT cg_merge-cg_merge.o -MD -MP -MF $(DEPDIR)/cg_merge-cg_merge.Tpo -c -o cg_merge-cg_merge.o `test -f 'cg_merge.c' || echo '$(srcdir)/'`cg_merge.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cg_merge-cg_merge.Tpo $(DEPDIR)/cg_merge-cg_merge.Po
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-arm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-arm.c
index 27f5d0da9..28edb5766 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-arm.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-arm.c
@@ -37,18 +37,18 @@
 
 #include "cg_arch.h"
 
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
                            Bool all_caches_clo_defined)
 {
    // Set caches to default (for Cortex-A8 ?)
    *I1c = (cache_t) {  16384, 4, 64 };
    *D1c = (cache_t) {  16384, 4, 64 };
-   *L2c = (cache_t) { 262144, 8, 64 };
+   *LLc = (cache_t) { 262144, 8, 64 };
 
    if (!all_caches_clo_defined) {
       VG_(message)(Vg_DebugMsg, 
                    "Warning: Cannot auto-detect cache config on ARM, using one "
-                   "or more defaults ");
+                   "or more defaults\n");
    }
 }
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc32.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc32.c
index ce39c2ee7..ea6d2cd20 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc32.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc32.c
@@ -37,13 +37,13 @@
 
 #include "cg_arch.h"
 
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
                            Bool all_caches_clo_defined)
 {
    // Set caches to default.
    *I1c = (cache_t) {  65536, 2, 64 };
    *D1c = (cache_t) {  65536, 2, 64 };
-   *L2c = (cache_t) { 262144, 8, 64 };
+   *LLc = (cache_t) { 262144, 8, 64 };
 
    // Warn if config not completely specified from cmd line.  Note that
    // this message is slightly different from the one we give on x86/AMD64
@@ -57,7 +57,7 @@ void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
    //
    if (!all_caches_clo_defined) {
       VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC32, using one "
-                "or more defaults \n");
+                "or more defaults\n");
    }
 }
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc64.c
index 82993f853..bb05ceee8 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc64.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-ppc64.c
@@ -37,13 +37,13 @@
 
 #include "cg_arch.h"
 
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
                            Bool all_caches_clo_defined)
 {
    // Set caches to default.
    *I1c = (cache_t) {  65536, 2, 64 };
    *D1c = (cache_t) {  65536, 2, 64 };
-   *L2c = (cache_t) { 262144, 8, 64 };
+   *LLc = (cache_t) { 262144, 8, 64 };
 
    // Warn if config not completely specified from cmd line.  Note that
    // this message is slightly different from the one we give on x86/AMD64
@@ -57,7 +57,7 @@ void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
    //
    if (!all_caches_clo_defined) {
       VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC64, using one "
-                "or more defaults \n");
+                "or more defaults\n");
    }
 }
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-s390x.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-s390x.c
new file mode 100644
index 000000000..905a15f55
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-s390x.c
@@ -0,0 +1,73 @@
+
+/*--------------------------------------------------------------------*/
+/*--- s390x-specific definitions.                       cg-s390x.c ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Cachegrind, a Valgrind tool for cache
+   profiling programs.
+
+   Copyright IBM Corp. 2010-2011
+
+   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.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Christian Borntraeger */
+
+#if defined(VGA_s390x)
+
+#include "pub_tool_basics.h"
+#include "pub_tool_libcbase.h"
+#include "pub_tool_libcassert.h"
+#include "pub_tool_libcprint.h"
+
+#include "cg_arch.h"
+
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+                           Bool all_caches_clo_defined)
+{
+   // Set caches to z10 default.
+   // See IBM Journal of Research and Development
+   // Issue Date: Jan. 2009
+   // Volume: 53 Issue:1
+   // fixs390: have a table for all available models and check /proc/cpuinfo
+   *I1c = (cache_t) {   65536,  4, 256 };
+   *D1c = (cache_t) {  131072,  8, 256 };
+   *L2c = (cache_t) { 3145728, 12, 256 };
+
+   // Warn if config not completely specified from cmd line.  Note that
+   // this message is slightly different from the one we give on x86/AMD64
+   // when auto-detection fails;  this lets us filter out this one (which is
+   // not important) in the regression test suite without filtering the
+   // x86/AMD64 one (which we want to see if it ever occurs in the
+   // regression test suite).
+   //
+   // If you change this message, please update
+   // cachegrind/tests/filter_stderr!
+   //
+   if (!all_caches_clo_defined) {
+      VG_(dmsg)("Warning: Cannot auto-detect cache config on s390x, using one "
+                "or more defaults \n");
+   }
+}
+
+#endif
+
+/*--------------------------------------------------------------------*/
+/*--- end                                               cg-s390x.c ---*/
+/*--------------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-x86-amd64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-x86-amd64.c
index 350606b2a..6794319b7 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-x86-amd64.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg-x86-amd64.c
@@ -54,9 +54,12 @@ static void micro_ops_warn(Int actual_size, Int used_size, Int line_size)
  * array of pre-defined configurations for various parts of the memory
  * hierarchy.
  * According to Intel Processor Identification, App Note 485.
+ * 
+ * If a L3 cache is found, then data for it rather than the L2
+ * is returned via *LLc.
  */
 static
-Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
+Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* LLc)
 {
    Int cpuid1_eax;
    Int cpuid1_ignore;
@@ -65,6 +68,14 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
    UChar info[16];
    Int   i, trials;
    Bool  L2_found = False;
+   /* If we see L3 cache info, copy it into L3c.  Then, at the end,
+      copy it into *LLc.  Hence if a L3 cache is specified, *LLc will
+      eventually contain a description of it rather than the L2 cache.
+      The use of the L3c intermediary makes this process independent
+      of the order in which the cache specifications appear in
+      info[]. */
+   Bool  L3_found = False;
+   cache_t L3c = { 0, 0, 0 };
 
    if (level < 2) {
       VG_(dmsg)("warning: CPUID level < 2 for Intel processor (%d)\n", level);
@@ -121,18 +132,39 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
       case 0x90: case 0x96: case 0x9b:
          VG_(tool_panic)("IA-64 cache detected?!");
 
-      case 0x22: case 0x23: case 0x25: case 0x29:
-      case 0x46: case 0x47: case 0x4a: case 0x4b: case 0x4c: case 0x4d:
-      case 0xe2: case 0xe3: case 0xe4: case 0xea: case 0xeb: case 0xec:
-          VG_(dmsg)("warning: L3 cache detected but ignored\n");
-          break;
+      /* L3 cache info. */
+      case 0x22: L3c = (cache_t) { 512,    4, 64 }; L3_found = True; break;
+      case 0x23: L3c = (cache_t) { 1024,   8, 64 }; L3_found = True; break;
+      case 0x25: L3c = (cache_t) { 2048,   8, 64 }; L3_found = True; break;
+      case 0x29: L3c = (cache_t) { 4096,   8, 64 }; L3_found = True; break;
+      case 0x46: L3c = (cache_t) { 4096,   4, 64 }; L3_found = True; break;
+      case 0x47: L3c = (cache_t) { 8192,   8, 64 }; L3_found = True; break;
+      case 0x4a: L3c = (cache_t) { 6144,  12, 64 }; L3_found = True; break;
+      case 0x4b: L3c = (cache_t) { 8192,  16, 64 }; L3_found = True; break;
+      case 0x4c: L3c = (cache_t) { 12288, 12, 64 }; L3_found = True; break;
+      case 0x4d: L3c = (cache_t) { 16384, 16, 64 }; L3_found = True; break;
+      case 0xd0: L3c = (cache_t) { 512,    4, 64 }; L3_found = True; break;
+      case 0xd1: L3c = (cache_t) { 1024,   4, 64 }; L3_found = True; break;
+      case 0xd2: L3c = (cache_t) { 2048,   4, 64 }; L3_found = True; break;
+      case 0xd6: L3c = (cache_t) { 1024,   8, 64 }; L3_found = True; break;
+      case 0xd7: L3c = (cache_t) { 2048,   8, 64 }; L3_found = True; break;
+      case 0xd8: L3c = (cache_t) { 4096,   8, 64 }; L3_found = True; break;
+      case 0xdc: L3c = (cache_t) { 1536,  12, 64 }; L3_found = True; break;
+      case 0xdd: L3c = (cache_t) { 3072,  12, 64 }; L3_found = True; break;
+      case 0xde: L3c = (cache_t) { 6144,  12, 64 }; L3_found = True; break;
+      case 0xe2: L3c = (cache_t) { 2048,  16, 64 }; L3_found = True; break;
+      case 0xe3: L3c = (cache_t) { 4096,  16, 64 }; L3_found = True; break;
+      case 0xe4: L3c = (cache_t) { 8192,  16, 64 }; L3_found = True; break;
+      case 0xea: L3c = (cache_t) { 12288, 24, 64 }; L3_found = True; break;
+      case 0xeb: L3c = (cache_t) { 18432, 24, 64 }; L3_found = True; break;
+      case 0xec: L3c = (cache_t) { 24576, 24, 64 }; L3_found = True; break;
 
       /* Described as "MLC" in Intel documentation */
-      case 0x21: *L2c = (cache_t) {  256, 8, 64 }; L2_found = True; break;
+      case 0x21: *LLc = (cache_t) {  256, 8, 64 }; L2_found = True; break;
 
       /* These are sectored, whatever that means */
-      case 0x39: *L2c = (cache_t) {  128, 4, 64 }; L2_found = True; break;
-      case 0x3c: *L2c = (cache_t) {  256, 4, 64 }; L2_found = True; break;
+      case 0x39: *LLc = (cache_t) {  128, 4, 64 }; L2_found = True; break;
+      case 0x3c: *LLc = (cache_t) {  256, 4, 64 }; L2_found = True; break;
 
       /* If a P6 core, this means "no L2 cache".  
          If a P4 core, this means "no L3 cache".
@@ -141,20 +173,21 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
       case 0x40:
           break;
 
-      case 0x41: *L2c = (cache_t) {  128, 4, 32 }; L2_found = True; break;
-      case 0x42: *L2c = (cache_t) {  256, 4, 32 }; L2_found = True; break;
-      case 0x43: *L2c = (cache_t) {  512, 4, 32 }; L2_found = True; break;
-      case 0x44: *L2c = (cache_t) { 1024, 4, 32 }; L2_found = True; break;
-      case 0x45: *L2c = (cache_t) { 2048, 4, 32 }; L2_found = True; break;
-      case 0x48: *L2c = (cache_t) { 3072,12, 64 }; L2_found = True; break;
+      case 0x41: *LLc = (cache_t) {  128,  4, 32 }; L2_found = True; break;
+      case 0x42: *LLc = (cache_t) {  256,  4, 32 }; L2_found = True; break;
+      case 0x43: *LLc = (cache_t) {  512,  4, 32 }; L2_found = True; break;
+      case 0x44: *LLc = (cache_t) { 1024,  4, 32 }; L2_found = True; break;
+      case 0x45: *LLc = (cache_t) { 2048,  4, 32 }; L2_found = True; break;
+      case 0x48: *LLc = (cache_t) { 3072, 12, 64 }; L2_found = True; break;
+      case 0x4e: *LLc = (cache_t) { 6144, 24, 64 }; L2_found = True; break;
       case 0x49:
-	  if ((family == 15) && (model == 6))
-	      /* On Xeon MP (family F, model 6), this is for L3 */
-	      VG_(dmsg)("warning: L3 cache detected but ignored\n");
-	  else
-	      *L2c = (cache_t) { 4096, 16, 64 }; L2_found = True;
-	  break;
-      case 0x4e: *L2c = (cache_t) { 6144, 24, 64 }; L2_found = True; break;
+         if (family == 15 && model == 6) {
+            /* On Xeon MP (family F, model 6), this is for L3 */
+            L3c = (cache_t) { 4096, 16, 64 }; L3_found = True;
+         } else {
+	    *LLc = (cache_t) { 4096, 16, 64 }; L2_found = True;
+         }
+         break;
 
       /* These are sectored, whatever that means */
       case 0x60: *D1c = (cache_t) { 16, 8, 64 };  break;      /* sectored */
@@ -181,26 +214,24 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
          break;  
 
       /* not sectored, whatever that might mean */
-      case 0x78: *L2c = (cache_t) { 1024, 4,  64 }; L2_found = True;  break;
+      case 0x78: *LLc = (cache_t) { 1024, 4,  64 }; L2_found = True;  break;
 
       /* These are sectored, whatever that means */
-      case 0x79: *L2c = (cache_t) {  128, 8,  64 }; L2_found = True;  break;
-      case 0x7a: *L2c = (cache_t) {  256, 8,  64 }; L2_found = True;  break;
-      case 0x7b: *L2c = (cache_t) {  512, 8,  64 }; L2_found = True;  break;
-      case 0x7c: *L2c = (cache_t) { 1024, 8,  64 }; L2_found = True;  break;
-      case 0x7d: *L2c = (cache_t) { 2048, 8,  64 }; L2_found = True;  break;
-      case 0x7e: *L2c = (cache_t) {  256, 8, 128 }; L2_found = True;  break;
-
-      case 0x7f: *L2c = (cache_t) {  512, 2, 64 };  L2_found = True;  break;
-      case 0x80: *L2c = (cache_t) {  512, 8, 64 };  L2_found = True;  break;
-
-      case 0x81: *L2c = (cache_t) {  128, 8, 32 };  L2_found = True;  break;
-      case 0x82: *L2c = (cache_t) {  256, 8, 32 };  L2_found = True;  break;
-      case 0x83: *L2c = (cache_t) {  512, 8, 32 };  L2_found = True;  break;
-      case 0x84: *L2c = (cache_t) { 1024, 8, 32 };  L2_found = True;  break;
-      case 0x85: *L2c = (cache_t) { 2048, 8, 32 };  L2_found = True;  break;
-      case 0x86: *L2c = (cache_t) {  512, 4, 64 };  L2_found = True;  break;
-      case 0x87: *L2c = (cache_t) { 1024, 8, 64 };  L2_found = True;  break;
+      case 0x79: *LLc = (cache_t) {  128, 8,  64 }; L2_found = True;  break;
+      case 0x7a: *LLc = (cache_t) {  256, 8,  64 }; L2_found = True;  break;
+      case 0x7b: *LLc = (cache_t) {  512, 8,  64 }; L2_found = True;  break;
+      case 0x7c: *LLc = (cache_t) { 1024, 8,  64 }; L2_found = True;  break;
+      case 0x7d: *LLc = (cache_t) { 2048, 8,  64 }; L2_found = True;  break;
+      case 0x7e: *LLc = (cache_t) {  256, 8, 128 }; L2_found = True;  break;
+      case 0x7f: *LLc = (cache_t) {  512, 2,  64 }; L2_found = True;  break;
+      case 0x80: *LLc = (cache_t) {  512, 8,  64 }; L2_found = True;  break;
+      case 0x81: *LLc = (cache_t) {  128, 8,  32 }; L2_found = True;  break;
+      case 0x82: *LLc = (cache_t) {  256, 8,  32 }; L2_found = True;  break;
+      case 0x83: *LLc = (cache_t) {  512, 8,  32 }; L2_found = True;  break;
+      case 0x84: *LLc = (cache_t) { 1024, 8,  32 }; L2_found = True;  break;
+      case 0x85: *LLc = (cache_t) { 2048, 8,  32 }; L2_found = True;  break;
+      case 0x86: *LLc = (cache_t) {  512, 4,  64 }; L2_found = True;  break;
+      case 0x87: *LLc = (cache_t) { 1024, 8,  64 }; L2_found = True;  break;
 
       /* Ignore prefetch information */
       case 0xf0: case 0xf1:
@@ -213,8 +244,15 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
       }
    }
 
+   /* If we found a L3 cache, throw away the L2 data and use the L3's instead. */
+   if (L3_found) {
+      VG_(dmsg)("warning: L3 cache found, using its data for the LL simulation.\n");
+      *LLc = L3c;
+      L2_found = True;
+   }
+
    if (!L2_found)
-      VG_(dmsg)("warning: L2 cache not installed, ignore L2 results.\n");
+      VG_(dmsg)("warning: L2 cache not installed, ignore LL results.\n");
 
    return 0;
 }
@@ -241,14 +279,37 @@ Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* L2c)
  * 0x630) have a bug and misreport their L2 size as 1KB (it's really 64KB),
  * so we detect that.
  * 
- * Returns 0 on success, non-zero on failure.
+ * Returns 0 on success, non-zero on failure.  As with the Intel code
+ * above, if a L3 cache is found, then data for it rather than the L2
+ * is returned via *LLc.
  */
+
+/* A small helper */
+static Int decode_AMD_cache_L2_L3_assoc ( Int bits_15_12 )
+{
+   /* Decode a L2/L3 associativity indication.  It is encoded
+      differently from the I1/D1 associativity.  Returns 1
+      (direct-map) as a safe but suboptimal result for unknown
+      encodings. */
+   switch (bits_15_12 & 0xF) {
+      case 1: return 1;    case 2: return 2;
+      case 4: return 4;    case 6: return 8;
+      case 8: return 16;   case 0xA: return 32;
+      case 0xB: return 48; case 0xC: return 64;
+      case 0xD: return 96; case 0xE: return 128;
+      case 0xF: /* fully associative */
+      case 0: /* L2/L3 cache or TLB is disabled */
+      default:
+        return 1;
+   }
+}
+
 static
-Int AMD_cache_info(cache_t* I1c, cache_t* D1c, cache_t* L2c)
+Int AMD_cache_info(cache_t* I1c, cache_t* D1c, cache_t* LLc)
 {
    UInt ext_level;
    UInt dummy, model;
-   UInt I1i, D1i, L2i;
+   UInt I1i, D1i, L2i, L3i;
    
    VG_(cpuid)(0x80000000, &ext_level, &dummy, &dummy, &dummy);
 
@@ -259,7 +320,7 @@ Int AMD_cache_info(cache_t* I1c, cache_t* D1c, cache_t* L2c)
    }
 
    VG_(cpuid)(0x80000005, &dummy, &dummy, &D1i, &I1i);
-   VG_(cpuid)(0x80000006, &dummy, &dummy, &L2i, &dummy);
+   VG_(cpuid)(0x80000006, &dummy, &dummy, &L2i, &L3i);
 
    VG_(cpuid)(0x1, &model, &dummy, &dummy, &dummy);
 
@@ -277,15 +338,26 @@ Int AMD_cache_info(cache_t* I1c, cache_t* D1c, cache_t* L2c)
    I1c->assoc     = (I1i >> 16) & 0xff;
    I1c->line_size = (I1i >>  0) & 0xff;
 
-   L2c->size      = (L2i >> 16) & 0xffff; /* Nb: different bits used for L2 */
-   L2c->assoc     = (L2i >> 12) & 0xf;
-   L2c->line_size = (L2i >>  0) & 0xff;
+   LLc->size      = (L2i >> 16) & 0xffff; /* Nb: different bits used for L2 */
+   LLc->assoc     = decode_AMD_cache_L2_L3_assoc((L2i >> 12) & 0xf);
+   LLc->line_size = (L2i >>  0) & 0xff;
+
+   if (((L3i >> 18) & 0x3fff) > 0) {
+      /* There's an L3 cache.  Replace *LLc contents with this info. */
+      /* NB: the test in the if is "if L3 size > 0 ".  I don't know if
+         this is the right way to test presence-vs-absence of L3.  I
+         can't see any guidance on this in the AMD documentation. */
+      LLc->size      = ((L3i >> 18) & 0x3fff) * 512;
+      LLc->assoc     = decode_AMD_cache_L2_L3_assoc((L3i >> 12) & 0xf);
+      LLc->line_size = (L3i >>  0) & 0xff;
+      VG_(dmsg)("warning: L3 cache found, using its data for the L2 simulation.\n");
+   }
 
    return 0;
 }
 
 static 
-Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* L2c)
+Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* LLc)
 {
    Int  level, ret;
    Char vendor_id[13];
@@ -306,10 +378,10 @@ Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* L2c)
 
    /* Only handling Intel and AMD chips... no Cyrix, Transmeta, etc */
    if (0 == VG_(strcmp)(vendor_id, "GenuineIntel")) {
-      ret = Intel_cache_info(level, I1c, D1c, L2c);
+      ret = Intel_cache_info(level, I1c, D1c, LLc);
 
    } else if (0 == VG_(strcmp)(vendor_id, "AuthenticAMD")) {
-      ret = AMD_cache_info(I1c, D1c, L2c);
+      ret = AMD_cache_info(I1c, D1c, LLc);
 
    } else if (0 == VG_(strcmp)(vendor_id, "CentaurHauls")) {
       /* Total kludge.  Pretend to be a VIA Nehemiah. */
@@ -319,9 +391,9 @@ Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* L2c)
       I1c->size      = 64;
       I1c->assoc     = 4;
       I1c->line_size = 16;
-      L2c->size      = 64;
-      L2c->assoc     = 16;
-      L2c->line_size = 16;
+      LLc->size      = 64;
+      LLc->assoc     = 16;
+      LLc->line_size = 16;
       ret = 0;
 
    } else {
@@ -332,13 +404,13 @@ Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* L2c)
    /* Successful!  Convert sizes from KB to bytes */
    I1c->size *= 1024;
    D1c->size *= 1024;
-   L2c->size *= 1024;
+   LLc->size *= 1024;
       
    return ret;
 }
 
 
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
                            Bool all_caches_clo_defined)
 {
    Int res;
@@ -346,10 +418,10 @@ void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
    // Set caches to default.
    *I1c = (cache_t) {  65536, 2, 64 };
    *D1c = (cache_t) {  65536, 2, 64 };
-   *L2c = (cache_t) { 262144, 8, 64 };
+   *LLc = (cache_t) { 262144, 8, 64 };
 
    // Then replace with any info we can get from CPUID.
-   res = get_caches_from_CPUID(I1c, D1c, L2c);
+   res = get_caches_from_CPUID(I1c, D1c, LLc);
 
    // Warn if CPUID failed and config not completely specified from cmd line.
    if (res != 0 && !all_caches_clo_defined) {
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_arch.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_arch.h
index 7a8d17103..23f1a2cd8 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_arch.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_arch.h
@@ -33,14 +33,14 @@
 
 // For cache simulation
 typedef struct {
-   int size;       // bytes
-   int assoc;
-   int line_size;  // bytes
+   Int size;       // bytes
+   Int assoc;
+   Int line_size;  // bytes
 } cache_t;
 
-// Gives the configuration of I1, D1 and L2 caches.  They get overridden
+// Gives the configuration of I1, D1 and LL caches.  They get overridden
 // by any cache configurations specified on the command line.
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
+void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
                            Bool all_caches_clo_defined);
 
 #endif   // __CG_ARCH_H
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_branchpred.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_branchpred.c
index 4eb6982a0..9bd6b2ee0 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_branchpred.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_branchpred.c
@@ -48,6 +48,8 @@
 #  define N_IADDR_LO_ZERO_BITS 2
 #elif defined(VGA_x86) || defined(VGA_amd64)
 #  define N_IADDR_LO_ZERO_BITS 0
+#elif defined(VGA_s390x)
+#  define N_IADDR_LO_ZERO_BITS 1
 #else
 #  error "Unsupported architecture"
 #endif
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_diff.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_diff.in
index 951066e40..bcbe7d6ef 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_diff.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_diff.in
@@ -50,6 +50,7 @@ usage: cg_diff [options]  
     -v --version          show version
     --mod-filename= a Perl search-and-replace expression that is applied
                           to filenames, eg. --mod-filename='s/prog[0-9]/projN/'
+    --mod-funcname= like --mod-filename, but applied to function names
 
   cg_diff is Copyright (C) 2010-2010 Nicholas Nethercote.
   and licensed under the GNU General Public License, version 2.
@@ -61,6 +62,9 @@ END
 # --mod-filename expression
 my $mod_filename = undef;
 
+# --mod-funcname expression
+my $mod_funcname = undef;
+
 #-----------------------------------------------------------------------------
 # Argument and option handling
 #-----------------------------------------------------------------------------
@@ -78,6 +82,9 @@ sub process_cmd_line()
             } elsif ($arg =~ /^--mod-filename=(.*)/) {
                 $mod_filename = $1;
 
+            } elsif ($arg =~ /^--mod-funcname=(.*)/) {
+                $mod_funcname = $1;
+
             } else {            # -h and --help fall under this case
                 die($usage);
             }
@@ -201,7 +208,11 @@ sub read_input_file($)
 
         } elsif (s/^fn=(.*)$//) {
             defined($currFileName) || die;
-            $currFileFuncName = "$currFileName#$1";
+            my $tmpFuncName = $1;
+            if (defined $mod_funcname) {
+                eval "\$tmpFuncName =~ $mod_funcname";
+            }
+            $currFileFuncName = "$currFileName#$tmpFuncName";
             $currCC = $CCs{$currFileFuncName};
             if (not defined $currCC) {
                 $currCC = [];
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_main.c
index cb0af5682..ecdd706f0 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_main.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_main.c
@@ -77,7 +77,7 @@ typedef
    struct {
       ULong a;  /* total # memory accesses of this kind */
       ULong m1; /* misses in the first level cache */
-      ULong m2; /* misses in the second level cache */
+      ULong mL; /* misses in the second level cache */
    }
    CacheCC;
 
@@ -268,13 +268,13 @@ static LineCC* get_lineCC(Addr origAddr)
       lineCC->loc.line = loc.line;
       lineCC->Ir.a     = 0;
       lineCC->Ir.m1    = 0;
-      lineCC->Ir.m2    = 0;
+      lineCC->Ir.mL    = 0;
       lineCC->Dr.a     = 0;
       lineCC->Dr.m1    = 0;
-      lineCC->Dr.m2    = 0;
+      lineCC->Dr.mL    = 0;
       lineCC->Dw.a     = 0;
       lineCC->Dw.m1    = 0;
-      lineCC->Dw.m2    = 0;
+      lineCC->Dw.mL    = 0;
       lineCC->Bc.b     = 0;
       lineCC->Bc.mp    = 0;
       lineCC->Bi.b     = 0;
@@ -289,13 +289,37 @@ static LineCC* get_lineCC(Addr origAddr)
 /*--- Cache simulation functions                           ---*/
 /*------------------------------------------------------------*/
 
+// Only used with --cache-sim=no.
+static VG_REGPARM(1)
+void log_1I(InstrInfo* n)
+{
+   n->parent->Ir.a++;
+}
+
+// Only used with --cache-sim=no.
+static VG_REGPARM(2)
+void log_2I(InstrInfo* n, InstrInfo* n2)
+{
+   n->parent->Ir.a++;
+   n2->parent->Ir.a++;
+}
+
+// Only used with --cache-sim=no.
+static VG_REGPARM(3)
+void log_3I(InstrInfo* n, InstrInfo* n2, InstrInfo* n3)
+{
+   n->parent->Ir.a++;
+   n2->parent->Ir.a++;
+   n3->parent->Ir.a++;
+}
+
 static VG_REGPARM(1)
 void log_1I_0D_cache_access(InstrInfo* n)
 {
    //VG_(printf)("1I_0D :  CCaddr=0x%010lx,  iaddr=0x%010lx,  isize=%lu\n",
    //             n, n->instr_addr, n->instr_len);
    cachesim_I1_doref(n->instr_addr, n->instr_len, 
-                     &n->parent->Ir.m1, &n->parent->Ir.m2);
+                     &n->parent->Ir.m1, &n->parent->Ir.mL);
    n->parent->Ir.a++;
 }
 
@@ -307,10 +331,10 @@ void log_2I_0D_cache_access(InstrInfo* n, InstrInfo* n2)
    //            n,  n->instr_addr,  n->instr_len,
    //            n2, n2->instr_addr, n2->instr_len);
    cachesim_I1_doref(n->instr_addr, n->instr_len, 
-                     &n->parent->Ir.m1, &n->parent->Ir.m2);
+                     &n->parent->Ir.m1, &n->parent->Ir.mL);
    n->parent->Ir.a++;
    cachesim_I1_doref(n2->instr_addr, n2->instr_len, 
-                     &n2->parent->Ir.m1, &n2->parent->Ir.m2);
+                     &n2->parent->Ir.m1, &n2->parent->Ir.mL);
    n2->parent->Ir.a++;
 }
 
@@ -324,13 +348,13 @@ void log_3I_0D_cache_access(InstrInfo* n, InstrInfo* n2, InstrInfo* n3)
    //            n2, n2->instr_addr, n2->instr_len,
    //            n3, n3->instr_addr, n3->instr_len);
    cachesim_I1_doref(n->instr_addr, n->instr_len, 
-                     &n->parent->Ir.m1, &n->parent->Ir.m2);
+                     &n->parent->Ir.m1, &n->parent->Ir.mL);
    n->parent->Ir.a++;
    cachesim_I1_doref(n2->instr_addr, n2->instr_len, 
-                     &n2->parent->Ir.m1, &n2->parent->Ir.m2);
+                     &n2->parent->Ir.m1, &n2->parent->Ir.mL);
    n2->parent->Ir.a++;
    cachesim_I1_doref(n3->instr_addr, n3->instr_len, 
-                     &n3->parent->Ir.m1, &n3->parent->Ir.m2);
+                     &n3->parent->Ir.m1, &n3->parent->Ir.mL);
    n3->parent->Ir.a++;
 }
 
@@ -341,11 +365,11 @@ void log_1I_1Dr_cache_access(InstrInfo* n, Addr data_addr, Word data_size)
    //            "                               daddr=0x%010lx,  dsize=%lu\n",
    //            n, n->instr_addr, n->instr_len, data_addr, data_size);
    cachesim_I1_doref(n->instr_addr, n->instr_len, 
-                     &n->parent->Ir.m1, &n->parent->Ir.m2);
+                     &n->parent->Ir.m1, &n->parent->Ir.mL);
    n->parent->Ir.a++;
 
    cachesim_D1_doref(data_addr, data_size, 
-                     &n->parent->Dr.m1, &n->parent->Dr.m2);
+                     &n->parent->Dr.m1, &n->parent->Dr.mL);
    n->parent->Dr.a++;
 }
 
@@ -356,11 +380,11 @@ void log_1I_1Dw_cache_access(InstrInfo* n, Addr data_addr, Word data_size)
    //            "                               daddr=0x%010lx,  dsize=%lu\n",
    //            n, n->instr_addr, n->instr_len, data_addr, data_size);
    cachesim_I1_doref(n->instr_addr, n->instr_len, 
-                     &n->parent->Ir.m1, &n->parent->Ir.m2);
+                     &n->parent->Ir.m1, &n->parent->Ir.mL);
    n->parent->Ir.a++;
 
    cachesim_D1_doref(data_addr, data_size, 
-                     &n->parent->Dw.m1, &n->parent->Dw.m2);
+                     &n->parent->Dw.m1, &n->parent->Dw.mL);
    n->parent->Dw.a++;
 }
 
@@ -370,7 +394,7 @@ void log_0I_1Dr_cache_access(InstrInfo* n, Addr data_addr, Word data_size)
    //VG_(printf)("0I_1Dr:  CCaddr=0x%010lx,  daddr=0x%010lx,  dsize=%lu\n",
    //            n, data_addr, data_size);
    cachesim_D1_doref(data_addr, data_size, 
-                     &n->parent->Dr.m1, &n->parent->Dr.m2);
+                     &n->parent->Dr.m1, &n->parent->Dr.mL);
    n->parent->Dr.a++;
 }
 
@@ -380,7 +404,7 @@ void log_0I_1Dw_cache_access(InstrInfo* n, Addr data_addr, Word data_size)
    //VG_(printf)("0I_1Dw:  CCaddr=0x%010lx,  daddr=0x%010lx,  dsize=%lu\n",
    //            n, data_addr, data_size);
    cachesim_D1_doref(data_addr, data_size, 
-                     &n->parent->Dw.m1, &n->parent->Dw.m2);
+                     &n->parent->Dw.m1, &n->parent->Dw.mL);
    n->parent->Dw.a++;
 }
 
@@ -708,8 +732,13 @@ static void flushEvents ( CgState* cgs )
             else
             if (ev2 && ev3 && ev2->tag == Ev_Ir && ev3->tag == Ev_Ir)
             {
-               helperName = "log_3I_0D_cache_access";
-               helperAddr = &log_3I_0D_cache_access;
+               if (clo_cache_sim) {
+                  helperName = "log_3I_0D_cache_access";
+                  helperAddr = &log_3I_0D_cache_access;
+               } else {
+                  helperName = "log_3I";
+                  helperAddr = &log_3I;
+               }
                argv = mkIRExprVec_3( i_node_expr, 
                                      mkIRExpr_HWord( (HWord)ev2->inode ), 
                                      mkIRExpr_HWord( (HWord)ev3->inode ) );
@@ -719,8 +748,13 @@ static void flushEvents ( CgState* cgs )
             /* Merge an Ir with one following Ir. */
             else
             if (ev2 && ev2->tag == Ev_Ir) {
-               helperName = "log_2I_0D_cache_access";
-               helperAddr = &log_2I_0D_cache_access;
+               if (clo_cache_sim) {
+                  helperName = "log_2I_0D_cache_access";
+                  helperAddr = &log_2I_0D_cache_access;
+               } else {
+                  helperName = "log_2I";
+                  helperAddr = &log_2I;
+               }
                argv = mkIRExprVec_2( i_node_expr,
                                      mkIRExpr_HWord( (HWord)ev2->inode ) );
                regparms = 2;
@@ -728,8 +762,13 @@ static void flushEvents ( CgState* cgs )
             }
             /* No merging possible; emit as-is. */
             else {
-               helperName = "log_1I_0D_cache_access";
-               helperAddr = &log_1I_0D_cache_access;
+               if (clo_cache_sim) {
+                  helperName = "log_1I_0D_cache_access";
+                  helperAddr = &log_1I_0D_cache_access;
+               } else {
+                  helperName = "log_1I";
+                  helperAddr = &log_1I;
+               }
                argv = mkIRExprVec_1( i_node_expr );
                regparms = 1;
                i++;
@@ -1070,60 +1109,66 @@ IRSB* cg_instrument ( VgCallbackClosure* closure,
          }
 
          case Ist_Exit: {
-            /* Stuff to widen the guard expression to a host word, so
-               we can pass it to the branch predictor simulation
-               functions easily. */
-            Bool     inverted;
-            Addr64   nia, sea;
-            IRConst* dst;
-            IRType   tyW    = hWordTy;
-            IROp     widen  = tyW==Ity_I32  ? Iop_1Uto32  : Iop_1Uto64;
-            IROp     opXOR  = tyW==Ity_I32  ? Iop_Xor32   : Iop_Xor64;
-            IRTemp   guard1 = newIRTemp(cgs.sbOut->tyenv, Ity_I1);
-            IRTemp   guardW = newIRTemp(cgs.sbOut->tyenv, tyW);
-            IRTemp   guard  = newIRTemp(cgs.sbOut->tyenv, tyW);
-            IRExpr*  one    = tyW==Ity_I32 ? IRExpr_Const(IRConst_U32(1))
-                                           : IRExpr_Const(IRConst_U64(1));
-
-            /* First we need to figure out whether the side exit got
-               inverted by the ir optimiser.  To do that, figure out
-               the next (fallthrough) instruction's address and the
-               side exit address and see if they are the same. */
-            nia = cia + (Addr64)isize;
-            if (tyW == Ity_I32) 
-               nia &= 0xFFFFFFFFULL;
-
-            /* Side exit address */
-            dst = st->Ist.Exit.dst;
-            if (tyW == Ity_I32) {
-               tl_assert(dst->tag == Ico_U32);
-               sea = (Addr64)(UInt)dst->Ico.U32;
-            } else {
-               tl_assert(tyW == Ity_I64);
-               tl_assert(dst->tag == Ico_U64);
-               sea = dst->Ico.U64;
+            // call branch predictor only if this is a branch in guest code
+            if ( (st->Ist.Exit.jk == Ijk_Boring) ||
+                 (st->Ist.Exit.jk == Ijk_Call) ||
+                 (st->Ist.Exit.jk == Ijk_Ret) )
+            {
+               /* Stuff to widen the guard expression to a host word, so
+                  we can pass it to the branch predictor simulation
+                  functions easily. */
+               Bool     inverted;
+               Addr64   nia, sea;
+               IRConst* dst;
+               IRType   tyW    = hWordTy;
+               IROp     widen  = tyW==Ity_I32  ? Iop_1Uto32  : Iop_1Uto64;
+               IROp     opXOR  = tyW==Ity_I32  ? Iop_Xor32   : Iop_Xor64;
+               IRTemp   guard1 = newIRTemp(cgs.sbOut->tyenv, Ity_I1);
+               IRTemp   guardW = newIRTemp(cgs.sbOut->tyenv, tyW);
+               IRTemp   guard  = newIRTemp(cgs.sbOut->tyenv, tyW);
+               IRExpr*  one    = tyW==Ity_I32 ? IRExpr_Const(IRConst_U32(1))
+                                              : IRExpr_Const(IRConst_U64(1));
+
+               /* First we need to figure out whether the side exit got
+                  inverted by the ir optimiser.  To do that, figure out
+                  the next (fallthrough) instruction's address and the
+                  side exit address and see if they are the same. */
+               nia = cia + (Addr64)isize;
+               if (tyW == Ity_I32)
+                  nia &= 0xFFFFFFFFULL;
+
+               /* Side exit address */
+               dst = st->Ist.Exit.dst;
+               if (tyW == Ity_I32) {
+                  tl_assert(dst->tag == Ico_U32);
+                  sea = (Addr64)(UInt)dst->Ico.U32;
+               } else {
+                  tl_assert(tyW == Ity_I64);
+                  tl_assert(dst->tag == Ico_U64);
+                  sea = dst->Ico.U64;
+               }
+
+               inverted = nia == sea;
+
+               /* Widen the guard expression. */
+               addStmtToIRSB( cgs.sbOut,
+                              IRStmt_WrTmp( guard1, st->Ist.Exit.guard ));
+               addStmtToIRSB( cgs.sbOut,
+                              IRStmt_WrTmp( guardW,
+                                            IRExpr_Unop(widen,
+                                                        IRExpr_RdTmp(guard1))) );
+               /* If the exit is inverted, invert the sense of the guard. */
+               addStmtToIRSB(
+                     cgs.sbOut,
+                     IRStmt_WrTmp(
+                           guard,
+                           inverted ? IRExpr_Binop(opXOR, IRExpr_RdTmp(guardW), one)
+                                    : IRExpr_RdTmp(guardW)
+                              ));
+               /* And post the event. */
+               addEvent_Bc( &cgs, curr_inode, IRExpr_RdTmp(guard) );
             }
 
-            inverted = nia == sea;
-
-            /* Widen the guard expression. */
-            addStmtToIRSB( cgs.sbOut, 
-                           IRStmt_WrTmp( guard1, st->Ist.Exit.guard ));
-            addStmtToIRSB( cgs.sbOut,
-                           IRStmt_WrTmp( guardW,
-                                         IRExpr_Unop(widen, 
-                                                     IRExpr_RdTmp(guard1))) );
-            /* If the exit is inverted, invert the sense of the guard. */
-            addStmtToIRSB( 
-               cgs.sbOut,
-               IRStmt_WrTmp( 
-                  guard,
-                  inverted ? IRExpr_Binop(opXOR, IRExpr_RdTmp(guardW), one)
-                           : IRExpr_RdTmp(guardW) 
-               ));
-            /* And post the event. */
-            addEvent_Bc( &cgs, curr_inode, IRExpr_RdTmp(guard) );
-
             /* We may never reach the next statement, so need to flush
                all outstanding transactions now. */
             flushEvents( &cgs );
@@ -1147,7 +1192,7 @@ IRSB* cg_instrument ( VgCallbackClosure* closure,
    /* Deal with branches to unknown destinations.  Except ignore ones
       which are function returns as we assume the return stack
       predictor never mispredicts. */
-   if (sbIn->jumpkind == Ijk_Boring) {
+   if ((sbIn->jumpkind == Ijk_Boring) || (sbIn->jumpkind == Ijk_Call)) {
       if (0) { ppIRExpr( sbIn->next ); VG_(printf)("\n"); }
       switch (sbIn->next->tag) {
          case Iex_Const: 
@@ -1189,7 +1234,7 @@ IRSB* cg_instrument ( VgCallbackClosure* closure,
 
 static cache_t clo_I1_cache = UNDEFINED_CACHE;
 static cache_t clo_D1_cache = UNDEFINED_CACHE;
-static cache_t clo_L2_cache = UNDEFINED_CACHE;
+static cache_t clo_LL_cache = UNDEFINED_CACHE;
 
 // Checks cache config is ok.  Returns NULL if ok, or a pointer to an error
 // string otherwise.
@@ -1228,7 +1273,7 @@ static Char* check_cache(cache_t* cache)
 }
 
 static 
-void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
+void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* LLc)
 {
 #define DEFINED(L)   (-1 != L.size  || -1 != L.assoc || -1 != L.line_size)
 
@@ -1238,22 +1283,22 @@ void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
    Bool all_caches_clo_defined =
       (DEFINED(clo_I1_cache) &&
        DEFINED(clo_D1_cache) &&
-       DEFINED(clo_L2_cache));
+       DEFINED(clo_LL_cache));
 
    // Set the cache config (using auto-detection, if supported by the
    // architecture).
-   VG_(configure_caches)( I1c, D1c, L2c, all_caches_clo_defined );
+   VG_(configure_caches)( I1c, D1c, LLc, all_caches_clo_defined );
 
    // Check the default/auto-detected values.
    checkRes = check_cache(I1c);  tl_assert(!checkRes);
    checkRes = check_cache(D1c);  tl_assert(!checkRes);
-   checkRes = check_cache(L2c);  tl_assert(!checkRes);
+   checkRes = check_cache(LLc);  tl_assert(!checkRes);
 
    // Then replace with any defined on the command line.  (Already checked in
    // parse_cache_opt().)
    if (DEFINED(clo_I1_cache)) { *I1c = clo_I1_cache; }
    if (DEFINED(clo_D1_cache)) { *D1c = clo_D1_cache; }
-   if (DEFINED(clo_L2_cache)) { *L2c = clo_L2_cache; }
+   if (DEFINED(clo_LL_cache)) { *LLc = clo_LL_cache; }
 
    if (VG_(clo_verbosity) >= 2) {
       VG_(umsg)("Cache configuration used:\n");
@@ -1261,8 +1306,8 @@ void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
                 I1c->size, I1c->assoc, I1c->line_size);
       VG_(umsg)("  D1: %dB, %d-way, %dB lines\n",
                 D1c->size, D1c->assoc, D1c->line_size);
-      VG_(umsg)("  L2: %dB, %d-way, %dB lines\n",
-                L2c->size, L2c->assoc, L2c->line_size);
+      VG_(umsg)("  LL: %dB, %d-way, %dB lines\n",
+                LLc->size, LLc->assoc, LLc->line_size);
    }
 #undef CMD_LINE_DEFINED
 }
@@ -1309,12 +1354,12 @@ static void fprint_CC_table_and_calc_totals(void)
       VG_(free)(cachegrind_out_file);
    }
 
-   // "desc:" lines (giving I1/D1/L2 cache configuration).  The spaces after
+   // "desc:" lines (giving I1/D1/LL cache configuration).  The spaces after
    // the 2nd colon makes cg_annotate's output look nicer.
    VG_(sprintf)(buf, "desc: I1 cache:         %s\n"
                      "desc: D1 cache:         %s\n"
-                     "desc: L2 cache:         %s\n",
-                     I1.desc_line, D1.desc_line, L2.desc_line);
+                     "desc: LL cache:         %s\n",
+                     I1.desc_line, D1.desc_line, LL.desc_line);
    VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
 
    // "cmd:" line
@@ -1334,19 +1379,20 @@ static void fprint_CC_table_and_calc_totals(void)
    }
    // "events:" line
    if (clo_cache_sim && clo_branch_sim) {
-      VG_(sprintf)(buf, "\nevents: Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw "
+      VG_(sprintf)(buf, "\nevents: Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw "
                                   "Bc Bcm Bi Bim\n");
    }
    else if (clo_cache_sim && !clo_branch_sim) {
-      VG_(sprintf)(buf, "\nevents: Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw "
+      VG_(sprintf)(buf, "\nevents: Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw "
                                   "\n");
    }
    else if (!clo_cache_sim && clo_branch_sim) {
       VG_(sprintf)(buf, "\nevents: Ir "
                                   "Bc Bcm Bi Bim\n");
    }
-   else
-      tl_assert(0); /* can't happen */
+   else {
+      VG_(sprintf)(buf, "\nevents: Ir\n");
+   }
 
    VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
 
@@ -1384,9 +1430,9 @@ static void fprint_CC_table_and_calc_totals(void)
                              " %llu %llu %llu"
                              " %llu %llu %llu %llu\n",
                             lineCC->loc.line,
-                            lineCC->Ir.a, lineCC->Ir.m1, lineCC->Ir.m2, 
-                            lineCC->Dr.a, lineCC->Dr.m1, lineCC->Dr.m2,
-                            lineCC->Dw.a, lineCC->Dw.m1, lineCC->Dw.m2,
+                            lineCC->Ir.a, lineCC->Ir.m1, lineCC->Ir.mL, 
+                            lineCC->Dr.a, lineCC->Dr.m1, lineCC->Dr.mL,
+                            lineCC->Dw.a, lineCC->Dw.m1, lineCC->Dw.mL,
                             lineCC->Bc.b, lineCC->Bc.mp, 
                             lineCC->Bi.b, lineCC->Bi.mp);
       }
@@ -1395,9 +1441,9 @@ static void fprint_CC_table_and_calc_totals(void)
                              " %llu %llu %llu"
                              " %llu %llu %llu\n",
                             lineCC->loc.line,
-                            lineCC->Ir.a, lineCC->Ir.m1, lineCC->Ir.m2, 
-                            lineCC->Dr.a, lineCC->Dr.m1, lineCC->Dr.m2,
-                            lineCC->Dw.a, lineCC->Dw.m1, lineCC->Dw.m2);
+                            lineCC->Ir.a, lineCC->Ir.m1, lineCC->Ir.mL, 
+                            lineCC->Dr.a, lineCC->Dr.m1, lineCC->Dr.mL,
+                            lineCC->Dw.a, lineCC->Dw.m1, lineCC->Dw.mL);
       }
       else if (!clo_cache_sim && clo_branch_sim) {
          VG_(sprintf)(buf, "%u %llu"
@@ -1407,21 +1453,24 @@ static void fprint_CC_table_and_calc_totals(void)
                             lineCC->Bc.b, lineCC->Bc.mp, 
                             lineCC->Bi.b, lineCC->Bi.mp);
       }
-      else
-         tl_assert(0);
+      else {
+         VG_(sprintf)(buf, "%u %llu\n",
+                            lineCC->loc.line,
+                            lineCC->Ir.a);
+      }
 
       VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
 
       // Update summary stats
       Ir_total.a  += lineCC->Ir.a;
       Ir_total.m1 += lineCC->Ir.m1;
-      Ir_total.m2 += lineCC->Ir.m2;
+      Ir_total.mL += lineCC->Ir.mL;
       Dr_total.a  += lineCC->Dr.a;
       Dr_total.m1 += lineCC->Dr.m1;
-      Dr_total.m2 += lineCC->Dr.m2;
+      Dr_total.mL += lineCC->Dr.mL;
       Dw_total.a  += lineCC->Dw.a;
       Dw_total.m1 += lineCC->Dw.m1;
-      Dw_total.m2 += lineCC->Dw.m2;
+      Dw_total.mL += lineCC->Dw.mL;
       Bc_total.b  += lineCC->Bc.b;
       Bc_total.mp += lineCC->Bc.mp;
       Bi_total.b  += lineCC->Bi.b;
@@ -1438,9 +1487,9 @@ static void fprint_CC_table_and_calc_totals(void)
                         " %llu %llu %llu"
                         " %llu %llu %llu"
                         " %llu %llu %llu %llu\n", 
-                        Ir_total.a, Ir_total.m1, Ir_total.m2,
-                        Dr_total.a, Dr_total.m1, Dr_total.m2,
-                        Dw_total.a, Dw_total.m1, Dw_total.m2,
+                        Ir_total.a, Ir_total.m1, Ir_total.mL,
+                        Dr_total.a, Dr_total.m1, Dr_total.mL,
+                        Dw_total.a, Dw_total.m1, Dw_total.mL,
                         Bc_total.b, Bc_total.mp, 
                         Bi_total.b, Bi_total.mp);
    }
@@ -1449,9 +1498,9 @@ static void fprint_CC_table_and_calc_totals(void)
                         " %llu %llu %llu"
                         " %llu %llu %llu"
                         " %llu %llu %llu\n",
-                        Ir_total.a, Ir_total.m1, Ir_total.m2,
-                        Dr_total.a, Dr_total.m1, Dr_total.m2,
-                        Dw_total.a, Dw_total.m1, Dw_total.m2);
+                        Ir_total.a, Ir_total.m1, Ir_total.mL,
+                        Dr_total.a, Dr_total.m1, Dr_total.mL,
+                        Dw_total.a, Dw_total.m1, Dw_total.mL);
    }
    else if (!clo_cache_sim && clo_branch_sim) {
       VG_(sprintf)(buf, "summary:"
@@ -1461,8 +1510,11 @@ static void fprint_CC_table_and_calc_totals(void)
                         Bc_total.b, Bc_total.mp, 
                         Bi_total.b, Bi_total.mp);
    }
-   else
-      tl_assert(0);
+   else {
+      VG_(sprintf)(buf, "summary:"
+                        " %llu\n", 
+                        Ir_total.a);
+   }
 
    VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
    VG_(close)(fd);
@@ -1485,14 +1537,10 @@ static void cg_fini(Int exitcode)
 
    CacheCC  D_total;
    BranchCC B_total;
-   ULong L2_total_m, L2_total_mr, L2_total_mw,
-         L2_total, L2_total_r, L2_total_w;
+   ULong LL_total_m, LL_total_mr, LL_total_mw,
+         LL_total, LL_total_r, LL_total_w;
    Int l1, l2, l3;
 
-   /* Running with both cache and branch simulation disabled is not
-      allowed (checked during command line option processing). */
-   tl_assert(clo_cache_sim || clo_branch_sim);
-
    fprint_CC_table_and_calc_totals();
 
    if (VG_(clo_verbosity) == 0) 
@@ -1517,21 +1565,21 @@ static void cg_fini(Int exitcode)
       miss numbers */
    if (clo_cache_sim) {
       VG_(umsg)(fmt, "I1  misses:   ", Ir_total.m1);
-      VG_(umsg)(fmt, "L2i misses:   ", Ir_total.m2);
+      VG_(umsg)(fmt, "LLi misses:   ", Ir_total.mL);
 
       if (0 == Ir_total.a) Ir_total.a = 1;
       VG_(percentify)(Ir_total.m1, Ir_total.a, 2, l1+1, buf1);
       VG_(umsg)("I1  miss rate: %s\n", buf1);
 
-      VG_(percentify)(Ir_total.m2, Ir_total.a, 2, l1+1, buf1);
-      VG_(umsg)("L2i miss rate: %s\n", buf1);
+      VG_(percentify)(Ir_total.mL, Ir_total.a, 2, l1+1, buf1);
+      VG_(umsg)("LLi miss rate: %s\n", buf1);
       VG_(umsg)("\n");
 
       /* D cache results.  Use the D_refs.rd and D_refs.wr values to
        * determine the width of columns 2 & 3. */
       D_total.a  = Dr_total.a  + Dw_total.a;
       D_total.m1 = Dr_total.m1 + Dw_total.m1;
-      D_total.m2 = Dr_total.m2 + Dw_total.m2;
+      D_total.mL = Dr_total.mL + Dw_total.mL;
 
       /* Make format string, getting width right for numbers */
       VG_(sprintf)(fmt, "%%s %%,%dllu  (%%,%dllu rd   + %%,%dllu wr)\n",
@@ -1541,8 +1589,8 @@ static void cg_fini(Int exitcode)
                      D_total.a, Dr_total.a, Dw_total.a);
       VG_(umsg)(fmt, "D1  misses:   ",
                      D_total.m1, Dr_total.m1, Dw_total.m1);
-      VG_(umsg)(fmt, "L2d misses:   ",
-                     D_total.m2, Dr_total.m2, Dw_total.m2);
+      VG_(umsg)(fmt, "LLd misses:   ",
+                     D_total.mL, Dr_total.mL, Dw_total.mL);
 
       if (0 == D_total.a)  D_total.a = 1;
       if (0 == Dr_total.a) Dr_total.a = 1;
@@ -1552,30 +1600,30 @@ static void cg_fini(Int exitcode)
       VG_(percentify)(Dw_total.m1, Dw_total.a, 1, l3+1, buf3);
       VG_(umsg)("D1  miss rate: %s (%s     + %s  )\n", buf1, buf2,buf3);
 
-      VG_(percentify)( D_total.m2,  D_total.a, 1, l1+1, buf1);
-      VG_(percentify)(Dr_total.m2, Dr_total.a, 1, l2+1, buf2);
-      VG_(percentify)(Dw_total.m2, Dw_total.a, 1, l3+1, buf3);
-      VG_(umsg)("L2d miss rate: %s (%s     + %s  )\n", buf1, buf2,buf3);
+      VG_(percentify)( D_total.mL,  D_total.a, 1, l1+1, buf1);
+      VG_(percentify)(Dr_total.mL, Dr_total.a, 1, l2+1, buf2);
+      VG_(percentify)(Dw_total.mL, Dw_total.a, 1, l3+1, buf3);
+      VG_(umsg)("LLd miss rate: %s (%s     + %s  )\n", buf1, buf2,buf3);
       VG_(umsg)("\n");
 
-      /* L2 overall results */
+      /* LL overall results */
 
-      L2_total   = Dr_total.m1 + Dw_total.m1 + Ir_total.m1;
-      L2_total_r = Dr_total.m1 + Ir_total.m1;
-      L2_total_w = Dw_total.m1;
-      VG_(umsg)(fmt, "L2 refs:      ",
-                     L2_total, L2_total_r, L2_total_w);
+      LL_total   = Dr_total.m1 + Dw_total.m1 + Ir_total.m1;
+      LL_total_r = Dr_total.m1 + Ir_total.m1;
+      LL_total_w = Dw_total.m1;
+      VG_(umsg)(fmt, "LL refs:      ",
+                     LL_total, LL_total_r, LL_total_w);
 
-      L2_total_m  = Dr_total.m2 + Dw_total.m2 + Ir_total.m2;
-      L2_total_mr = Dr_total.m2 + Ir_total.m2;
-      L2_total_mw = Dw_total.m2;
-      VG_(umsg)(fmt, "L2 misses:    ",
-                     L2_total_m, L2_total_mr, L2_total_mw);
+      LL_total_m  = Dr_total.mL + Dw_total.mL + Ir_total.mL;
+      LL_total_mr = Dr_total.mL + Ir_total.mL;
+      LL_total_mw = Dw_total.mL;
+      VG_(umsg)(fmt, "LL misses:    ",
+                     LL_total_m, LL_total_mr, LL_total_mw);
 
-      VG_(percentify)(L2_total_m,  (Ir_total.a + D_total.a),  1, l1+1, buf1);
-      VG_(percentify)(L2_total_mr, (Ir_total.a + Dr_total.a), 1, l2+1, buf2);
-      VG_(percentify)(L2_total_mw, Dw_total.a,                1, l3+1, buf3);
-      VG_(umsg)("L2 miss rate:  %s (%s     + %s  )\n", buf1, buf2,buf3);
+      VG_(percentify)(LL_total_m,  (Ir_total.a + D_total.a),  1, l1+1, buf1);
+      VG_(percentify)(LL_total_mr, (Ir_total.a + Dr_total.a), 1, l2+1, buf2);
+      VG_(percentify)(LL_total_mw, Dw_total.a,                1, l3+1, buf3);
+      VG_(umsg)("LL miss rate:  %s (%s     + %s  )\n", buf1, buf2,buf3);
    }
 
    /* If branch profiling is enabled, show branch overall results. */
@@ -1712,8 +1760,9 @@ static Bool cg_process_cmd_line_option(Char* arg)
       parse_cache_opt(&clo_I1_cache, arg, tmp_str);
    else if VG_STR_CLO(arg, "--D1", tmp_str)
       parse_cache_opt(&clo_D1_cache, arg, tmp_str);
-   else if VG_STR_CLO(arg, "--L2", tmp_str)
-      parse_cache_opt(&clo_L2_cache, arg, tmp_str);
+   else if (VG_STR_CLO(arg, "--L2", tmp_str) || // for backwards compatibility
+            VG_STR_CLO(arg, "--LL", tmp_str))
+      parse_cache_opt(&clo_LL_cache, arg, tmp_str);
 
    else if VG_STR_CLO( arg, "--cachegrind-out-file", clo_cachegrind_out_file) {}
    else if VG_BOOL_CLO(arg, "--cache-sim",  clo_cache_sim)  {}
@@ -1729,7 +1778,7 @@ static void cg_print_usage(void)
    VG_(printf)(
 "    --I1=,,  set I1 cache manually\n"
 "    --D1=,,  set D1 cache manually\n"
-"    --L2=,,  set L2 cache manually\n"
+"    --LL=,,  set LL cache manually\n"
 "    --cache-sim=yes|no  [yes]        collect cache stats?\n"
 "    --branch-sim=yes|no [no]         collect branch prediction stats?\n"
 "    --cachegrind-out-file=     output file name [cachegrind.out.%%p]\n"
@@ -1771,15 +1820,7 @@ static void cg_pre_clo_init(void)
 
 static void cg_post_clo_init(void)
 {
-   cache_t I1c, D1c, L2c; 
-
-   /* Can't disable both cache and branch profiling */
-   if ((!clo_cache_sim) && (!clo_branch_sim)) {
-      VG_(umsg)("ERROR: --cache-sim=no --branch-sim=no is not allowed.\n");
-      VG_(umsg)("You must select cache profiling, "
-                "or branch profiling, or both.\n");
-      VG_(exit)(2);
-   }
+   cache_t I1c, D1c, LLc; 
 
    CC_table =
       VG_(OSetGen_Create)(offsetof(LineCC, loc),
@@ -1797,11 +1838,11 @@ static void cg_post_clo_init(void)
                           VG_(malloc), "cg.main.cpci.3",
                           VG_(free));
 
-   configure_caches(&I1c, &D1c, &L2c);
+   configure_caches(&I1c, &D1c, &LLc);
 
    cachesim_I1_initcache(I1c);
    cachesim_D1_initcache(D1c);
-   cachesim_L2_initcache(L2c);
+   cachesim_LL_initcache(LLc);
 }
 
 VG_DETERMINE_INTERFACE_VERSION(cg_pre_clo_init)
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_sim.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_sim.c
index a55a1e4ca..0b8a1d7c9 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_sim.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/cg_sim.c
@@ -96,7 +96,7 @@ static void cachesim_##L##_initcache(cache_t config)                        \
 /* bigger than its usual limit.  Inlining gains around 5--10% speedup. */   \
 __attribute__((always_inline))                                              \
 static __inline__                                                           \
-void cachesim_##L##_doref(Addr a, UChar size, ULong* m1, ULong *m2)         \
+void cachesim_##L##_doref(Addr a, UChar size, ULong* m1, ULong *mL)         \
 {                                                                           \
    UInt  set1 = ( a         >> L.line_size_bits) & (L.sets_min_1);          \
    UInt  set2 = ((a+size-1) >> L.line_size_bits) & (L.sets_min_1);          \
@@ -188,9 +188,9 @@ miss_treatment:                                                             \
    return;                                                                  \
 }
 
-CACHESIM(L2, (*m2)++ );
-CACHESIM(I1, { (*m1)++; cachesim_L2_doref(a, size, m1, m2); } );
-CACHESIM(D1, { (*m1)++; cachesim_L2_doref(a, size, m1, m2); } );
+CACHESIM(LL, (*mL)++ );
+CACHESIM(I1, { (*m1)++; cachesim_LL_doref(a, size, m1, mL); } );
+CACHESIM(D1, { (*m1)++; cachesim_LL_doref(a, size, m1, mL); } );
 
 /*--------------------------------------------------------------------*/
 /*--- end                                                 cg_sim.c ---*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/docs/cg-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/docs/cg-manual.xml
index b312771f9..f48f2b4f3 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/docs/cg-manual.xml
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/docs/cg-manual.xml
@@ -16,33 +16,45 @@ Valgrind command line.
 
 Cachegrind simulates how your program interacts with a machine's cache
 hierarchy and (optionally) branch predictor.  It simulates a machine with
-independent first level instruction and data caches (I1 and D1), backed by a
-unified second level cache (L2).  This configuration is used by almost all
-modern machines.
+independent first-level instruction and data caches (I1 and D1), backed by a
+unified second-level cache (L2).  This exactly matches the configuration of
+many modern machines.
+
+However, some modern machines have three levels of cache.  For these
+machines (in the cases where Cachegrind can auto-detect the cache
+configuration) Cachegrind simulates the first-level and third-level caches.
+The reason for this choice is that the L3 cache has the most influence on
+runtime, as it masks accesses to main memory.  Furthermore, the L1 caches
+often have low associativity, so simulating them can detect cases where the
+code interacts badly with this cache (eg. traversing a matrix column-wise
+with the row length being a power of 2).
+
+Therefore, Cachegrind always refers to the I1, D1 and LL (last-level)
+caches.
 
 
-It gathers the following statistics (abbreviations used for each statistic
+Cachegrind gathers the following statistics (abbreviations used for each statistic
 is given in parentheses):
 
   
     I cache reads (Ir,
     which equals the number of instructions executed),
     I1 cache read misses (I1mr) and
-    L2 cache instruction read misses (I1mr).
+    LL cache instruction read misses (ILmr).
     
   
   
     D cache reads (Dr, which
     equals the number of memory reads),
     D1 cache read misses (D1mr), and
-    L2 cache data read misses (D2mr).
+    LL cache data read misses (DLmr).
     
   
   
     D cache writes (Dw, which equals
     the number of memory writes),
     D1 cache write misses (D1mw), and
-    L2 cache data write misses (D2mw).
+    LL cache data write misses (DLmw).
     
   
   
@@ -59,10 +71,10 @@ is given in parentheses):
 
 Note that D1 total accesses is given by
 D1mr +
-D1mw, and that L2 total
-accesses is given by I2mr +
-D2mr +
-D2mw.
+D1mw, and that LL total
+accesses is given by ILmr +
+DLmr +
+DLmw.
 
 
 These statistics are presented for the entire program and for each
@@ -70,7 +82,7 @@ function in the program.  You can also annotate each line of source code in
 the program with the counts that were caused directly by it.
 
 On a modern machine, an L1 miss will typically cost
-around 10 cycles, an L2 miss can cost as much as 200
+around 10 cycles, an LL miss can cost as much as 200
 cycles, and a mispredicted branch costs in the region of 10
 to 30 cycles.  Detailed cache and branch profiling can be very useful
 for understanding how your program interacts with the machine and thus how
@@ -118,24 +130,24 @@ summary statistics that look like this will be printed:
 
+==31751== LL misses:         23,360  (     4,262 rd +    19,098 wr)
+==31751== LL miss rate:         0.0% (       0.0%   +       0.4%)]]>
 
 Cache accesses for instruction fetches are summarised
 first, giving the number of fetches made (this is the number of
 instructions executed, which can be useful to know in its own
-right), the number of I1 misses, and the number of L2 instruction
-(L2i) misses.
+right), the number of I1 misses, and the number of LL instruction
+(LLi) misses.
 
 Cache accesses for data follow. The information is similar
 to that of the instruction fetches, except that the values are
@@ -144,12 +156,12 @@ also shown split between reads and writes (note each row's
 wr values add up to the row's
 total).
 
-Combined instruction and data figures for the L2 cache
-follow that.  Note that the L2 miss rate is computed relative to the total
+Combined instruction and data figures for the LL cache
+follow that.  Note that the LL miss rate is computed relative to the total
 number of memory accesses, not the number of L1 misses.  I.e.  it is
-(I2mr + D2mr + D2mw) / (Ir + Dr + Dw)
+(ILmr + DLmr + DLmw) / (Ir + Dr + Dw)
 not
-(I2mr + D2mr + D2mw) / (I1mr + D1mr + D1mw)
+(ILmr + DLmr + DLmw) / (I1mr + D1mr + D1mw)
 
 
 Branch prediction statistics are not collected by default.
@@ -208,11 +220,11 @@ wide if possible, as the output lines can be quite long.
 --------------------------------------------------------------------------------
 I1 cache:              65536 B, 64 B, 2-way associative
 D1 cache:              65536 B, 64 B, 2-way associative
-L2 cache:              262144 B, 64 B, 8-way associative
+LL cache:              262144 B, 64 B, 8-way associative
 Command:               concord vg_to_ucode.c
-Events recorded:       Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw
-Events shown:          Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw
-Event sort order:      Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw
+Events recorded:       Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw
+Events shown:          Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw
+Event sort order:      Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw
 Threshold:             99%
 Chosen for annotation:
 Auto-annotation:       off
@@ -224,7 +236,7 @@ Auto-annotation:       off
 
 
   
-    I1 cache, D1 cache, L2 cache: cache configuration.  So
+    I1 cache, D1 cache, LL cache: cache configuration.  So
     you know the configuration with which these results were
     obtained.
   
@@ -300,7 +312,7 @@ program:
   
 
 
@@ -312,7 +324,7 @@ These are similar to the summary provided when Cachegrind finishes running.
 
 Events: lines of all the inputs are
 identical, so as to ensure that the addition of costs makes sense.
 For example, it would be nonsensical for it to add a number indicating
-D1 read references to a number from a different file indicating L2
+D1 read references to a number from a different file indicating LL
 write misses.
 
 
@@ -746,7 +758,7 @@ programs.  It does however check that the
 Events: lines of all the inputs are
 identical, so as to ensure that the addition of costs makes sense.
 For example, it would be nonsensical for it to add a number indicating
-D1 read references to a number from a different file indicating L2
+D1 read references to a number from a different file indicating LL
 write misses.
 
 
@@ -775,6 +787,14 @@ remove minor differences in filenames.  For example, the option
  will suffice for
 this case.
 
+
+Similarly, sometimes compilers auto-generate certain functions and give them
+randomized names.  For example, GCC sometimes auto-generates functions with
+names like T.1234, and the suffixes vary from build to
+build.  You can use the  option to remove
+small differences like these;  it works in the same way as
+.
+
 
 
 
@@ -810,12 +830,12 @@ this case.
     
   
 
-  
+  
     
-      
+      
     
     
-      Specify the size, associativity and line size of the level 2
+      Specify the size, associativity and line size of the last-level
       cache.
     
   
@@ -903,9 +923,9 @@ this case.
       order). Default is to use all present in the
       cachegrind.out.<pid> file (and
       use the order in the file).  Useful if you want to concentrate on, for
-      example, I cache misses (), or data
-      read misses (), or L2 data misses
-      ().  Best used in conjunction with
+      example, I cache misses (), or data
+      read misses (), or LL data misses
+      ().  Best used in conjunction with
       .
     
   
@@ -935,9 +955,9 @@ this case.
       events by appending any events for the
        option with a colon
       and a number (no spaces, though).  E.g. if you want to see
-      each function that covers more than 1% of L2 read misses or 1% of L2
+      each function that covers more than 1% of LL read misses or 1% of LL
       write misses, use this option:
-      
+      
     
   
 
@@ -1017,6 +1037,17 @@ this case.
     
   
 
+  
+    
+      
+    
+    
+      Like , but for filenames.
+      Useful for removing minor differences in randomized names of
+      auto-generated functions generated by some compilers.
+    
+  
+
 
 
   
@@ -1059,13 +1090,13 @@ information, but they can still be very useful for identifying
 bottlenecks.
 
 
-After that, we have found that L2 misses are typically a much bigger source
+After that, we have found that LL misses are typically a much bigger source
 of slow-downs than L1 misses.  So it's worth looking for any snippets of
-code with high D2mr or
-D2mw counts.  (You can use
- with cg_annotate to focus just on
-D2mr counts, for example.) If you find any, it's still
+code with high DLmr or
+DLmw counts.  (You can use
+ with cg_annotate to focus just on
+DLmr counts, for example.) If you find any, it's still
 not always easy to work out how to improve things.  You need to have a
 reasonable understanding of how caches work, the principles of locality, and
 your program's data access patterns.  Improving things may require
@@ -1153,12 +1184,12 @@ follows:
   
 
   
-    Inclusive L2 cache: the L2 cache typically replicates all
+    Inclusive LL cache: the LL cache typically replicates all
     the entries of the L1 caches, because fetching into L1 involves
-    fetching into L2 first (this does not guarantee strict inclusiveness,
-    as lines evicted from L2 still could reside in L1).  This is
+    fetching into LL first (this does not guarantee strict inclusiveness,
+    as lines evicted from LL still could reside in L1).  This is
     standard on Pentium chips, but AMD Opterons, Athlons and Durons
-    use an exclusive L2 cache that only holds
+    use an exclusive LL cache that only holds
     blocks evicted from L1.  Ditto most modern VIA CPUs.
   
 
@@ -1172,10 +1203,10 @@ early incarnation that doesn't give any cache information, then
 Cachegrind will fall back to using a default configuration (that
 of a model 3/4 Athlon).  Cachegrind will tell you if this
 happens.  You can manually specify one, two or all three levels
-(I1/D1/L2) of the cache from the command line using the
+(I1/D1/LL) of the cache from the command line using the
 ,
  and
- options.
+ options.
 For cache parameters to be valid for simulation, the number
 of sets (with associativity being the number of cache lines in
 each set) has to be a power of two.
@@ -1186,7 +1217,7 @@ determine the cache configuration, so you will
 need to specify it with the
 ,
  and
- options.
+ options.
 
 
 Other noteworthy behaviour:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/Makefile.in
index ef96b1ba0..2efc603c5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/Makefile.in
@@ -165,6 +165,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -194,12 +196,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -352,7 +349,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -381,6 +378,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -409,6 +411,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/chdir.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/chdir.stderr.exp
index 8eaf65446..e8084c12c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/chdir.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/chdir.stderr.exp
@@ -2,16 +2,16 @@
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/dlclose.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/dlclose.stderr.exp
index 8eaf65446..e8084c12c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/dlclose.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/dlclose.stderr.exp
@@ -2,16 +2,16 @@
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/filter_stderr
index 6ec44bf7a..46340c93d 100755
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/filter_stderr
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/filter_stderr
@@ -7,14 +7,17 @@ $dir/../../tests/filter_stderr_basic                |
 # Remove "Cachegrind, ..." line and the following copyright line.
 sed "/^Cachegrind, a cache and branch-prediction profiler/ , /./ d" |
 
-# Remove numbers from I/D/L2 "refs:" lines
-perl -p -e 's/((I|D|L2) *refs:)[ 0-9,()+rdw]*$/\1/'  |
+# Remove numbers from I/D/LL "refs:" lines
+perl -p -e 's/((I|D|LL) *refs:)[ 0-9,()+rdw]*$/\1/'  |
 
-# Remove numbers from I1/D1/L2/L2i/L2d "misses:" and "miss rates:" lines
-perl -p -e 's/((I1|D1|L2|L2i|L2d) *(misses|miss rate):)[ 0-9,()+rdw%\.]*$/\1/' |
+# Remove numbers from I1/D1/LL/LLi/LLd "misses:" and "miss rates:" lines
+perl -p -e 's/((I1|D1|LL|LLi|LLd) *(misses|miss rate):)[ 0-9,()+rdw%\.]*$/\1/' |
 
 # Remove CPUID warnings lines for P4s and other machines
 sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
 sed "/Simulating a 16 KB I-cache with 32 B lines/d"   |
-sed "/warning: L3 cache detected but ignored/d" |
-sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d"
+sed "/warning: L3 cache found, using its data for the LL simulation./d" |
+sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d"
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.stderr.exp
index 8eaf65446..e8084c12c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.stderr.exp
@@ -2,16 +2,16 @@
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.vgtest
index 132cfe592..21caffe94 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.vgtest
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/notpower2.vgtest
@@ -1,3 +1,3 @@
 prog: ../../tests/true
-vgopts: --I1=32768,8,64 --D1=24576,6,64 --L2=3145728,12,64
+vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64
 cleanup: rm cachegrind.out.*
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/wrap5.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/wrap5.stderr.exp
index 8eaf65446..e8084c12c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/wrap5.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/wrap5.stderr.exp
@@ -2,16 +2,16 @@
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/Makefile.in
index c1bf39142..16f74a154 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/Makefile.in
@@ -117,6 +117,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -146,12 +148,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -304,7 +301,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -333,6 +330,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -361,6 +363,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/fpu-28-108.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/fpu-28-108.stderr.exp
index 8eaf65446..e8084c12c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/fpu-28-108.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/cachegrind/tests/x86/fpu-28-108.stderr.exp
@@ -2,16 +2,16 @@
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.am
index 74f3597ab..86e93133c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.am
@@ -49,7 +49,8 @@ CALLGRIND_SOURCES_COMMON = \
 	../cachegrind/cg-x86-amd64.c \
 	../cachegrind/cg-ppc32.c \
 	../cachegrind/cg-ppc64.c \
-	../cachegrind/cg-arm.c
+ 	../cachegrind/cg-arm.c   \
+	../cachegrind/cg-s390x.c
 
 CALLGRIND_CFLAGS_COMMON = -I$(top_srcdir)/cachegrind
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.in
index 7a4b6a68b..a1f96572d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/Makefile.in
@@ -80,7 +80,8 @@ am__objects_1 = callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-bb.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 am_callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = $(am__objects_1)
 callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am_callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS)
@@ -88,7 +89,8 @@ am__callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST = bb.c bbcc.c \
 	callstack.c clo.c command.c context.c costs.c debug.c dump.c \
 	events.c fn.c jumps.c main.c sim.c threads.c \
 	../cachegrind/cg-x86-amd64.c ../cachegrind/cg-ppc32.c \
-	../cachegrind/cg-ppc64.c ../cachegrind/cg-arm.c
+	../cachegrind/cg-ppc64.c ../cachegrind/cg-arm.c \
+	../cachegrind/cg-s390x.c
 am__objects_2 = callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bbcc.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-callstack.$(OBJEXT) \
@@ -107,7 +109,8 @@ am__objects_2 = callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
@@ -231,6 +234,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -260,12 +265,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -419,7 +419,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -448,6 +448,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -476,6 +481,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 
 #----------------------------------------------------------------------------
@@ -528,6 +534,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -591,6 +600,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \
 LIBREPLACEMALLOC_X86_L4RE = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -633,6 +645,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \
 	$(LIBREPLACEMALLOC_X86_L4RE) \
 	-Wl,--no-whole-archive
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/callgrind_annotate-manpage.xml \
 	docs/callgrind_control-manpage.xml \
@@ -672,7 +689,8 @@ CALLGRIND_SOURCES_COMMON = \
 	../cachegrind/cg-x86-amd64.c \
 	../cachegrind/cg-ppc32.c \
 	../cachegrind/cg-ppc64.c \
-	../cachegrind/cg-arm.c
+ 	../cachegrind/cg-arm.c   \
+	../cachegrind/cg-s390x.c
 
 CALLGRIND_CFLAGS_COMMON = -I$(top_srcdir)/cachegrind
 callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
@@ -819,6 +837,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-clo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-command.Po@am__quote@
@@ -838,6 +857,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-clo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-command.Po@am__quote@
@@ -1132,6 +1152,20 @@ callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj: ../cachegrind/cg-arm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj `if test -f '../cachegrind/cg-arm.c'; then $(CYGPATH_W) '../cachegrind/cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-arm.c'; fi`
 
+callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+
+callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+
 callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o: bb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o `test -f 'bb.c' || echo '$(srcdir)/'`bb.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Po
@@ -1397,6 +1431,20 @@ callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj: ../cachegrind/cg-arm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-arm.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj `if test -f '../cachegrind/cg-arm.c'; then $(CYGPATH_W) '../cachegrind/cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-arm.c'; fi`
+
+callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+
+callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
 install-pkgincludeHEADERS: $(pkginclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/bbcc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/bbcc.c
index 24862a80c..ccc850d1c 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/bbcc.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/bbcc.c
@@ -29,7 +29,7 @@
 #include "global.h"
 #include "costs.h"
 
-#include 
+#include "pub_tool_threadstate.h"
 
 /*------------------------------------------------------------*/
 /*--- BBCC operations                                      ---*/
@@ -693,6 +693,7 @@ void CLG_(setup_bbcc)(BB* bb)
 		/* change source for delayed push */
 		CLG_(current_state).bbcc = top_ce->jcc->from;
 		sp = top_ce->sp;
+		passed = top_ce->jcc->jmp;
 		CLG_(pop_call_stack)();
 	    }
 	    else {
@@ -741,7 +742,11 @@ void CLG_(setup_bbcc)(BB* bb)
     }
   }
   else {
-    CLG_(unwind_call_stack)(sp, 0);
+    Int unwind_count = CLG_(unwind_call_stack)(sp, 0);
+    if (unwind_count > 0) {
+      /* if unwinding was done, this actually is a return */
+      jmpkind = Ijk_Ret;
+    }
     
     if (jmpkind == Ijk_Call) {
       delayed_push = True;
@@ -836,6 +841,8 @@ void CLG_(setup_bbcc)(BB* bb)
     if (!skip && CLG_(current_state).nonskipped) {
       /* a call from skipped to nonskipped */
       CLG_(current_state).bbcc = CLG_(current_state).nonskipped;
+      /* FIXME: take the real passed count from shadow stack */
+      passed = CLG_(current_state).bbcc->bb->cjmp_count;
     }
     CLG_(push_call_stack)(CLG_(current_state).bbcc, passed,
 			 bbcc, sp, skip);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind.h
index d36b6f4eb..ff50911df 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind.h
@@ -82,53 +82,38 @@ typedef
    } Vg_CallgrindClientRequest;
 
 /* Dump current state of cost centers, and zero them afterwards */
-#define CALLGRIND_DUMP_STATS                                            \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__DUMP_STATS,                     \
-                            0, 0, 0, 0, 0);                             \
-   }
+#define CALLGRIND_DUMP_STATS                                    \
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DUMP_STATS,    \
+                                  0, 0, 0, 0, 0)
 
 /* Dump current state of cost centers, and zero them afterwards.
    The argument is appended to a string stating the reason which triggered
    the dump. This string is written as a description field into the
    profile data dump. */
-#define CALLGRIND_DUMP_STATS_AT(pos_str)                                \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__DUMP_STATS_AT,                  \
-                            pos_str, 0, 0, 0, 0);                       \
-   }
+#define CALLGRIND_DUMP_STATS_AT(pos_str)                        \
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DUMP_STATS_AT, \
+                                  pos_str, 0, 0, 0, 0)
 
 /* Zero cost centers */
-#define CALLGRIND_ZERO_STATS                                            \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__ZERO_STATS,                     \
-                            0, 0, 0, 0, 0);                             \
-   }
+#define CALLGRIND_ZERO_STATS                                    \
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__ZERO_STATS,    \
+                                  0, 0, 0, 0, 0)
 
 /* Toggles collection state.
    The collection state specifies whether the happening of events
    should be noted or if they are to be ignored. Events are noted
    by increment of counters in a cost center */
 #define CALLGRIND_TOGGLE_COLLECT                                        \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__TOGGLE_COLLECT,                 \
-                            0, 0, 0, 0, 0);                             \
-   }
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__TOGGLE_COLLECT,        \
+                                  0, 0, 0, 0, 0)
 
 /* Start full callgrind instrumentation if not already switched on.
    When cache simulation is done, it will flush the simulated cache;
    this will lead to an artifical cache warmup phase afterwards with
    cache misses which would not have happened in reality. */
 #define CALLGRIND_START_INSTRUMENTATION                                 \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__START_INSTRUMENTATION,          \
-                            0, 0, 0, 0, 0);                             \
-   }
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__START_INSTRUMENTATION, \
+                                  0, 0, 0, 0, 0)
 
 /* Stop full callgrind instrumentation if not already switched off.
    This flushes Valgrinds translation cache, and does no additional
@@ -138,10 +123,7 @@ typedef
    To start Callgrind in this mode to ignore the setup phase, use
    the option "--instr-atstart=no". */
 #define CALLGRIND_STOP_INSTRUMENTATION                                  \
-   {unsigned int _qzz_res;                                              \
-    VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0,                             \
-                            VG_USERREQ__STOP_INSTRUMENTATION,           \
-                            0, 0, 0, 0, 0);                             \
-   }
+  VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__STOP_INSTRUMENTATION,  \
+                                  0, 0, 0, 0, 0)
 
 #endif /* __CALLGRIND_H */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind_annotate.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind_annotate.in
index afa9e04bf..e2e2f5f2e 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind_annotate.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callgrind_annotate.in
@@ -541,14 +541,12 @@ sub read_input_file()
 	    if ($curr_call_counter>0) {
 #	      print "Read ($curr_name => $curr_cname) $curr_call_counter\n";
 
-	      if (defined $call_CCs{$curr_name,$curr_cname}) {
-		add_array_a_to_b($CC, $call_CCs{$curr_name,$curr_cname});
-		$call_counter{$curr_name,$curr_cname} += $curr_call_counter;
-	      }
-	      else {
-		$call_CCs{$curr_name,$curr_cname} = $CC;
-		$call_counter{$curr_name,$curr_cname} = $curr_call_counter;
+	      if (!defined $call_CCs{$curr_name,$curr_cname}) {
+		$call_CCs{$curr_name,$curr_cname} = [];
+		$call_counter{$curr_name,$curr_cname} = 0;
 	      }
+	      add_array_a_to_b($CC, $call_CCs{$curr_name,$curr_cname});
+	      $call_counter{$curr_name,$curr_cname} += $curr_call_counter;
 
 	      my $tmp = $called_from_line->{$curr_file,$curr_line_num};
 	      if (!defined $tmp) {
@@ -557,14 +555,12 @@ sub read_input_file()
 	      $tmp = {} unless defined $tmp;
 	      $$tmp{$curr_cname} = 1;
 	      $called_from_line->{$curr_file,$curr_line_num} = $tmp;
-	      if(defined $call_CCs{$curr_name,$curr_cname,$curr_line_num}) {
-	        add_array_a_to_b($CC, $call_CCs{$curr_name,$curr_cname,$curr_line_num});
-	        $call_counter{$curr_name,$curr_cname,$curr_line_num} += $curr_call_counter;
-              }
-              else {
-	        $call_CCs{$curr_name,$curr_cname,$curr_line_num} = $CC;
-	        $call_counter{$curr_name,$curr_cname,$curr_line_num} = $curr_call_counter;
-              }
+	      if (!defined $call_CCs{$curr_name,$curr_cname,$curr_line_num}) {
+		$call_CCs{$curr_name,$curr_cname,$curr_line_num} = [];
+		$call_counter{$curr_name,$curr_cname,$curr_line_num} = 0;
+	      }
+	      add_array_a_to_b($CC, $call_CCs{$curr_name,$curr_cname,$curr_line_num});
+	      $call_counter{$curr_name,$curr_cname,$curr_line_num} += $curr_call_counter;
 
 	      $curr_call_counter = 0;
 
@@ -611,7 +607,7 @@ sub read_input_file()
                 if (defined $curr_file);
 
             $curr_file = uncompressed_name("fl",$1);
-	    $curr_file =~ s/^$pwd//;
+            $curr_file =~ s/^\Q$pwd\E//;
             $curr_file_ind_CCs = $all_ind_CCs{$curr_file};
             $curr_file_ind_CCs = {} unless (defined $curr_file_ind_CCs);
 
@@ -621,7 +617,7 @@ sub read_input_file()
             $all_ind_CCs{$curr_file} = $curr_file_ind_CCs;
 
             $curr_file = uncompressed_name("fl",$2);
-	    $curr_file =~ s/^$pwd//;
+            $curr_file =~ s/^\Q$pwd\E//;
             $curr_name = "$curr_file:$curr_fn";
             $curr_file_ind_CCs = $all_ind_CCs{$curr_file};
             $curr_file_ind_CCs = {} unless (defined $curr_file_ind_CCs);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callstack.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callstack.c
index 24087f5bc..ec48369c7 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callstack.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/callstack.c
@@ -394,11 +394,13 @@ void CLG_(pop_call_stack)()
 }
 
 
-/* remove CallStack items to sync with current SP
+/* Unwind enough CallStack items to sync with current stack pointer.
+ * Returns the number of stack frames unwinded.
  */
-void CLG_(unwind_call_stack)(Addr sp, Int minpops)
+Int CLG_(unwind_call_stack)(Addr sp, Int minpops)
 {
     Int csp;
+    Int unwind_count = 0;
     CLG_DEBUG(4,"+ unwind_call_stack(sp %#lx, minpops %d): frame %d\n",
 	      sp, minpops, CLG_(current_call_stack).sp);
 
@@ -415,6 +417,7 @@ void CLG_(unwind_call_stack)(Addr sp, Int minpops)
 	    ((top_ce->sp == sp) && minpops>0)) {
 
 	    minpops--;
+	    unwind_count++;
 	    CLG_(pop_call_stack)();
 	    csp=CLG_(current_call_stack).sp;
 	    continue;
@@ -423,4 +426,5 @@ void CLG_(unwind_call_stack)(Addr sp, Int minpops)
     }
 
     CLG_DEBUG(4,"- unwind_call_stack\n");
+    return unwind_count;
 }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/command.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/command.c
index 1c68cd349..674fd0fa6 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/command.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/command.c
@@ -32,7 +32,7 @@
 #include "config.h"
 #include "global.h"
 
-#include  // VG_N_THREADS
+#include "pub_tool_threadstate.h" // VG_N_THREADS
 
 // Version for the syntax in command/result files for interactive control
 #define COMMAND_VERSION "1.0"
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/costs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/costs.c
index 2381044c0..e989d1127 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/costs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/costs.c
@@ -28,7 +28,7 @@
 
 #include "global.h"
 
-#include 
+#include "pub_tool_mallocfree.h"
 
 #define COSTCHUNK_SIZE 100000
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-format.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-format.xml
index 97b3543cb..f6199e005 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-format.xml
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-format.xml
@@ -112,7 +112,7 @@ called function, and a "cfl=" specification if the function is in another
 source file. The 2nd line looks like a regular cost line with the difference
 that inclusive cost spent inside of the function call has to be specified. 
 
-Other associations which or for example (conditional) jumps. See the
+Other associations are for example (conditional) jumps. See the
 reference below for details.
 
 
@@ -414,7 +414,7 @@ for "Ir and "Dr".
     This specifies various information for this dump.  For some 
     types, the semantic is defined, but any description type is allowed. 
     Unknown types should be ignored.
-    There are the types "I1 cache", "D1 cache", "L2 cache", which 
+    There are the types "I1 cache", "D1 cache", "LL cache", which 
     specify parameters used for the cache simulator.  These are the only
     types originally used by Cachegrind.  Additionally, Callgrind uses 
     the following types:  "Timerange" gives a rough range of the basic
@@ -457,7 +457,7 @@ for "Ir and "Dr".
           I1mr: Instruction Level 1 read cache miss
         
         
-          I2mr: Instruction Level 2 read cache miss
+          ILmr: Instruction last-level read cache miss
         
         
           ...
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-manual.xml
index e2289ff55..cb79bdc6b 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-manual.xml
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/docs/cl-manual.xml
@@ -933,9 +933,9 @@ Also see .
       Specify if you want to do full cache simulation.  By default,
       only instruction read accesses will be counted ("Ir").
       With cache simulation, further event counters are enabled:
-      Cache misses on instruction reads ("I1mr"/"I2mr"),
-      data read accesses ("Dr") and related cache misses ("D1mr"/"D2mr"),
-      data write accesses ("Dw") and related cache misses ("D1mw"/"D2mw").
+      Cache misses on instruction reads ("I1mr"/"ILmr"),
+      data read accesses ("Dr") and related cache misses ("D1mr"/"DLmr"),
+      data write accesses ("Dw") and related cache misses ("D1mw"/"DLmw").
       For more information, see .
       
     
@@ -972,13 +972,13 @@ Also see .
     
     
       Specify whether write-back behavior should be simulated, allowing
-      to distinguish L2 caches misses with and without write backs.
+      to distinguish LL caches misses with and without write backs.
       The cache model of Cachegrind/Callgrind does not specify write-through
       vs. write-back behavior, and this also is not relevant for the number
       of generated miss counts. However, with explicit write-back simulation
       it can be decided whether a miss triggers not only the loading of a new
       cache line, but also if a write back of a dirty cache line had to take
-      place before. The new dirty miss events are I2dmr, D2dmr, and D2dmw,
+      place before. The new dirty miss events are ILdmr, DLdmr, and DLdmw,
       for misses because of instruction read, data read, and data write,
       respectively. As they produce two memory transactions, they should
       account for a doubled time estimation in relation to a normal miss.
@@ -1016,13 +1016,13 @@ Also see .
       bad access behavior). The new counters are defined in a way such
       that worse behavior results in higher cost.
       AcCost1 and AcCost2 are counters showing bad temporal locality
-      for L1 and L2 caches, respectively. This is done by summing up
+      for L1 and LL caches, respectively. This is done by summing up
       reciprocal values of the numbers of accesses of each cache line,
       multiplied by 1000 (as only integer costs are allowed). E.g. for
       a given source line with 5 read accesses, a value of 5000 AcCost
       means that for every access, a new cache line was loaded and directly
       evicted afterwards without further accesses. Similarly, SpLoss1/2
-      shows bad spatial locality for L1 and L2 caches, respectively. It
+      shows bad spatial locality for L1 and LL caches, respectively. It
       gives the spatial loss count of bytes which
       were loaded into cache but never accessed. It pinpoints at code
       accessing data in a way such that cache space is wasted. This hints
@@ -1059,12 +1059,12 @@ Also see .
     
   
 
-  
+  
     
-      
+      
     
     
-      Specify the size, associativity and line size of the level 2
+      Specify the size, associativity and line size of the last-level
       cache.
     
   
@@ -1075,6 +1075,32 @@ Also see .
 
 
 
+
+Callgrind Monitor Commands
+The Callgrind tool provides monitor commands handled by the Valgrind
+gdbserver (see ).
+
+
+
+  
+    ct.dump [<dump_hint>] requests to dump the
+    profile data. 
+  
+
+  
+    ct.zero requests to zero the profile data
+    counters. 
+  
+
+  
+    It would be nice to have some more callgrind monitor
+    commands such as e.g. toggle collect and start instrumentation.
+    
+  
+
+
+
+
 
 Callgrind specific client requests
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/dump.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/dump.c
index 5c04e90bf..cd57f4bf7 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/dump.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/dump.c
@@ -29,8 +29,8 @@
 #include "config.h"
 #include "global.h"
 
-#include 
-#include 
+#include "pub_tool_threadstate.h"
+#include "pub_tool_libcfile.h"
 
 
 /* Dump Part Counter */
@@ -55,7 +55,7 @@ EventMapping* CLG_(dumpmap) = 0;
  *  print_fn_pos, fprint_apos, fprint_fcost, fprint_jcc,
  *  fprint_fcc_ln, dump_run_info, dump_state_info
  */
-static Char outbuf[FILENAME_LEN + FN_NAME_LEN + OBJ_NAME_LEN];
+static Char outbuf[FILENAME_LEN + FN_NAME_LEN + OBJ_NAME_LEN + COSTS_LEN];
 
 Int CLG_(get_dump_counter)(void)
 {
@@ -336,6 +336,8 @@ static Bool print_fn_pos(int fd, FnPos* last, BBCC* bbcc)
 {
     Bool res = False;
 
+    CLG_ASSERT(bbcc && bbcc->cxt);
+
     CLG_DEBUGIF(3) {
 	CLG_DEBUG(2, "+ print_fn_pos: ");
 	CLG_(print_cxt)(16, bbcc->cxt, bbcc->rec_index);
@@ -351,9 +353,9 @@ static Bool print_fn_pos(int fd, FnPos* last, BBCC* bbcc)
 	}
 	
 	if (last->cxt != bbcc->cxt) {
-	    fn_node* last_from = (last->cxt && last->cxt->size>1) ?
+	    fn_node* last_from = (last->cxt && last->cxt->size >1) ?
 				 last->cxt->fn[1] : 0;
-	    fn_node* curr_from = (bbcc->cxt && bbcc->cxt->size>1) ?
+	    fn_node* curr_from = (bbcc->cxt->size >1) ?
 				 bbcc->cxt->fn[1] : 0;
 	    if (curr_from == 0) {
 		if (last_from != 0) {
@@ -659,13 +661,15 @@ static void fprint_jcc(Int fd, jCC* jcc, AddrPos* curr, AddrPos* last, ULong eco
       CLG_(print_jcc)(-10, jcc);
     }
 
+    CLG_ASSERT(jcc->to !=0);
+    CLG_ASSERT(jcc->from !=0);
+    
     if (!get_debug_pos(jcc->to, bb_addr(jcc->to->bb), &target)) {
 	/* if we don't have debug info, don't switch to file "???" */
 	target.file = last->file;
     }
 
-    if (jcc->from &&
-	(jcc->jmpkind == JmpCond || jcc->jmpkind == Ijk_Boring)) {
+    if ((jcc->jmpkind == JmpCond) || (jcc->jmpkind == Ijk_Boring)) {
 	    
       /* this is a JCC for a followed conditional or boring jump. */
       CLG_ASSERT(CLG_(is_zero_cost)( CLG_(sets).full, jcc->cost));
@@ -720,8 +724,6 @@ static void fprint_jcc(Int fd, jCC* jcc, AddrPos* curr, AddrPos* last, ULong eco
 	return;
     }
 
-    CLG_ASSERT(jcc->to !=0);
-    
     file = jcc->to->cxt->fn[0]->file;
     obj  = jcc->to->bb->obj;
     
@@ -1635,15 +1637,19 @@ void CLG_(dump_profile)(Char* trigger, Bool only_current_thread)
      VG_(message)(Vg_DebugMsg, "Dumping done.\n");
 }
 
-/* copy command to cmd buffer (could change) */
+/* Copy command to cmd buffer. We want to original command line
+ * (can change at runtime)
+ */
 static
 void init_cmdbuf(void)
 {
   Int i,j,size = 0;
   HChar* argv;
 
-  if (VG_(args_the_exename))
+  if (VG_(args_the_exename)) {
+      CLG_ASSERT( VG_(strlen)( VG_(args_the_exename) ) < BUF_LEN-1);
       size = VG_(sprintf)(cmdbuf, " %s", VG_(args_the_exename));
+  }
 
   for(i = 0; i < VG_(sizeXA)( VG_(args_for_client) ); i++) {
       argv = * (HChar**) VG_(indexXA)( VG_(args_for_client), i );
@@ -1653,7 +1659,7 @@ void init_cmdbuf(void)
 	  if (size < BUF_LEN) cmdbuf[size++] = argv[j];
   }
 
-  if (size == BUF_LEN) size--;
+  if (size >= BUF_LEN) size = BUF_LEN-1;
   cmdbuf[size] = 0;
 }
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/global.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/global.h
index 706edec98..c56b11fad 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/global.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/global.h
@@ -115,12 +115,13 @@ struct _CommandLineOptions {
 #define MIN_LINE_SIZE   16
 
 /* Size of various buffers used for storing strings */
-#define FILENAME_LEN                    256
+#define FILENAME_LEN                    VKI_PATH_MAX
 #define FN_NAME_LEN                    4096 /* for C++ code :-) */
 #define OBJ_NAME_LEN                    256
+#define COSTS_LEN                       512 /* at least 17x 64bit values */
 #define BUF_LEN                         512
 #define COMMIFY_BUF_LEN                 128
-#define RESULTS_BUF_LEN                 128
+#define RESULTS_BUF_LEN                 256
 #define LINE_BUF_LEN                     64
 
 
@@ -778,7 +779,7 @@ call_entry* CLG_(get_call_entry)(Int n);
 
 void CLG_(push_call_stack)(BBCC* from, UInt jmp, BBCC* to, Addr sp, Bool skip);
 void CLG_(pop_call_stack)(void);
-void CLG_(unwind_call_stack)(Addr sp, Int);
+Int CLG_(unwind_call_stack)(Addr sp, Int);
 
 /* from context.c */
 void CLG_(init_fn_stack)(fn_stack*);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/jumps.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/jumps.c
index fc306af0d..50b35af2a 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/jumps.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/jumps.c
@@ -160,6 +160,8 @@ static jCC* new_jcc(BBCC* from, UInt jmp, BBCC* to)
     * This list is only used at dumping time */
 
    if (from) {
+       /* Prohibit corruption by array overrun */
+       CLG_ASSERT((0 <= jmp) && (jmp <= from->bb->cjmp_count));
        jcc->next_from = from->jmp[jmp].jcc_list;
        from->jmp[jmp].jcc_list = jcc;
    }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/main.c
index 2dd7e18a9..7de26557e 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/main.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/main.c
@@ -35,7 +35,8 @@
 #include "callgrind.h"
 #include "global.h"
 
-#include 
+#include "pub_tool_threadstate.h"
+#include "pub_tool_gdbserver.h"
 
 #include "cg_branchpred.c"
 
@@ -1355,11 +1356,56 @@ void CLG_(set_instrument_state)(Char* reason, Bool state)
 		 reason, state ? "ON" : "OFF");
 }
   
+static void print_monitor_help ( void )
+{
+   VG_(gdb_printf) ("\n");
+   VG_(gdb_printf) ("callgrind monitor commands:\n");
+   VG_(gdb_printf) ("  ct.dump []\n");
+   VG_(gdb_printf) ("        dump counters\n");
+   VG_(gdb_printf) ("  ct.zero\n");
+   VG_(gdb_printf) ("        zero counters\n");
+   VG_(gdb_printf) ("\n");
+}
+
+/* return True if request recognised, False otherwise */
+static Bool handle_gdb_monitor_command (ThreadId tid, Char *req)
+{
+   Char* wcmd;
+   Char s[VG_(strlen(req))]; /* copy for strtok_r */
+   Char *ssaveptr;
+
+   VG_(strcpy) (s, req);
+
+   wcmd = VG_(strtok_r) (s, " ", &ssaveptr);
+   switch (VG_(keyword_id) ("help ct.dump ct.zero", 
+                            wcmd, kwd_report_duplicated_matches)) {
+   case -2: /* multiple matches */
+      return True;
+   case -1: /* not found */
+      return False;
+   case  0: /* help */
+      print_monitor_help();
+      return True;
+   case  1: { /* ct.dump */
+      CLG_(dump_profile)(req, False);
+      return True;
+   }
+   case  2: { /* ct.zero */
+      CLG_(zero_all_cost)(False);
+      return True;
+   }
+
+   default: 
+      tl_assert(0);
+      return False;
+   }
+}
 
 static
 Bool CLG_(handle_client_request)(ThreadId tid, UWord *args, UWord *ret)
 {
-   if (!VG_IS_TOOL_USERREQ('C','T',args[0]))
+   if (!VG_IS_TOOL_USERREQ('C','T',args[0])
+       && VG_USERREQ__GDB_MONITOR_COMMAND   != args[0])
       return False;
 
    switch(args[0]) {
@@ -1399,6 +1445,14 @@ Bool CLG_(handle_client_request)(ThreadId tid, UWord *args, UWord *ret)
      *ret = 0;                 /* meaningless */
      break;
 
+   case VG_USERREQ__GDB_MONITOR_COMMAND: {
+      Bool handled = handle_gdb_monitor_command (tid, (Char*)args[1]);
+      if (handled)
+         *ret = 1;
+      else
+         *ret = 0;
+      return handled;
+   }
    default:
       return False;
    }
@@ -1519,7 +1573,7 @@ void branchsim_printstat(int l1, int l2, int l3)
 static
 void finish(void)
 {
-  Char buf[RESULTS_BUF_LEN], fmt[128];
+  Char buf[32+COSTS_LEN], fmt[128];
   Int l1, l2, l3;
   FullCost total;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/sim.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/sim.c
index cb41d57d1..60b2987cc 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/sim.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/sim.c
@@ -91,7 +91,7 @@ typedef struct {
  * States of flat caches in our model.
  * We use a 2-level hierarchy, 
  */
-static cache_t2 I1, D1, L2;
+static cache_t2 I1, D1, LL;
 
 /* Lower bits of cache tags are used as flags for a cache line */
 #define CACHELINE_FLAGMASK (MIN_LINE_SIZE-1)
@@ -123,8 +123,8 @@ static Int off_I1_AcCost  = 0;
 static Int off_I1_SpLoss  = 1;
 static Int off_D1_AcCost  = 0;
 static Int off_D1_SpLoss  = 1;
-static Int off_L2_AcCost  = 2;
-static Int off_L2_SpLoss  = 3;
+static Int off_LL_AcCost  = 2;
+static Int off_LL_SpLoss  = 3;
 
 /* Cache access types */
 typedef enum { Read = 0, Write = CACHELINE_DIRTY } RefType;
@@ -135,7 +135,7 @@ typedef enum { Hit  = 0, Miss, MissDirty } CacheResult;
 /* Result of a reference into a hierarchical cache model */
 typedef enum {
     L1_Hit, 
-    L2_Hit,
+    LL_Hit,
     MemAccess,
     WriteBackMemAccess } CacheModelResult;
 
@@ -231,7 +231,7 @@ static void print_cache(cache_t2* c)
 /*------------------------------------------------------------*/
 
 /*
- * Simple model: L1 & L2 Write Through
+ * Simple model: L1 & LL Write Through
  * Does not distinguish among read and write references
  *
  * Simulator functions:
@@ -305,7 +305,7 @@ static
 CacheModelResult cachesim_I1_ref(Addr a, UChar size)
 {
     if ( cachesim_ref( &I1, a, size) == Hit ) return L1_Hit;
-    if ( cachesim_ref( &L2, a, size) == Hit ) return L2_Hit;
+    if ( cachesim_ref( &LL, a, size) == Hit ) return LL_Hit;
     return MemAccess;
 }
 
@@ -313,7 +313,7 @@ static
 CacheModelResult cachesim_D1_ref(Addr a, UChar size)
 {
     if ( cachesim_ref( &D1, a, size) == Hit ) return L1_Hit;
-    if ( cachesim_ref( &L2, a, size) == Hit ) return L2_Hit;
+    if ( cachesim_ref( &LL, a, size) == Hit ) return LL_Hit;
     return MemAccess;
 }
 
@@ -323,7 +323,7 @@ CacheModelResult cachesim_D1_ref(Addr a, UChar size)
 /*------------------------------------------------------------*/
 
 /*
- * More complex model: L1 Write-through, L2 Write-back
+ * More complex model: L1 Write-through, LL Write-back
  * This needs to distinguish among read and write references.
  *
  * Simulator functions:
@@ -412,8 +412,8 @@ static
 CacheModelResult cachesim_I1_Read(Addr a, UChar size)
 {
     if ( cachesim_ref( &I1, a, size) == Hit ) return L1_Hit;
-    switch( cachesim_ref_wb( &L2, Read, a, size) ) {
-	case Hit: return L2_Hit;
+    switch( cachesim_ref_wb( &LL, Read, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -424,8 +424,8 @@ static
 CacheModelResult cachesim_D1_Read(Addr a, UChar size)
 {
     if ( cachesim_ref( &D1, a, size) == Hit ) return L1_Hit;
-    switch( cachesim_ref_wb( &L2, Read, a, size) ) {
-	case Hit: return L2_Hit;
+    switch( cachesim_ref_wb( &LL, Read, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -437,14 +437,14 @@ CacheModelResult cachesim_D1_Write(Addr a, UChar size)
 {
     if ( cachesim_ref( &D1, a, size) == Hit ) {
 	/* Even for a L1 hit, the write-trough L1 passes
-	 * the write to the L2 to make the L2 line dirty.
+	 * the write to the LL to make the LL line dirty.
 	 * But this causes no latency, so return the hit.
 	 */
-	cachesim_ref_wb( &L2, Write, a, size);
+	cachesim_ref_wb( &LL, Write, a, size);
 	return L1_Hit;
     }
-    switch( cachesim_ref_wb( &L2, Write, a, size) ) {
-	case Hit: return L2_Hit;
+    switch( cachesim_ref_wb( &LL, Write, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -479,10 +479,10 @@ void prefetch_clear(void)
  * One stream can be detected per 4k page.
  */
 static __inline__
-void prefetch_L2_doref(Addr a)
+void prefetch_LL_doref(Addr a)
 {
   UInt stream = (a >> PF_PAGEBITS) % PF_STREAMS;
-  UInt block = ( a >> L2.line_size_bits);
+  UInt block = ( a >> LL.line_size_bits);
 
   if (block != pf_lastblock[stream]) {
     if (pf_seqblocks[stream] == 0) {
@@ -494,7 +494,7 @@ void prefetch_L2_doref(Addr a)
 	pf_seqblocks[stream]++;
 	if (pf_seqblocks[stream] >= 2) {
 	  prefetch_up++;
-	  cachesim_ref(&L2, a + 5 * L2.line_size,1);
+	  cachesim_ref(&LL, a + 5 * LL.line_size,1);
 	}
       }
       else pf_seqblocks[stream] = 0;
@@ -504,7 +504,7 @@ void prefetch_L2_doref(Addr a)
 	pf_seqblocks[stream]--;
 	if (pf_seqblocks[stream] <= -2) {
 	  prefetch_down++;
-	  cachesim_ref(&L2, a - 5 * L2.line_size,1);
+	  cachesim_ref(&LL, a - 5 * LL.line_size,1);
 	}
       }
       else pf_seqblocks[stream] = 0;
@@ -519,8 +519,8 @@ static
 CacheModelResult prefetch_I1_ref(Addr a, UChar size)
 {
     if ( cachesim_ref( &I1, a, size) == Hit ) return L1_Hit;
-    prefetch_L2_doref(a);
-    if ( cachesim_ref( &L2, a, size) == Hit ) return L2_Hit;
+    prefetch_LL_doref(a);
+    if ( cachesim_ref( &LL, a, size) == Hit ) return LL_Hit;
     return MemAccess;
 }
 
@@ -528,8 +528,8 @@ static
 CacheModelResult prefetch_D1_ref(Addr a, UChar size)
 {
     if ( cachesim_ref( &D1, a, size) == Hit ) return L1_Hit;
-    prefetch_L2_doref(a);
-    if ( cachesim_ref( &L2, a, size) == Hit ) return L2_Hit;
+    prefetch_LL_doref(a);
+    if ( cachesim_ref( &LL, a, size) == Hit ) return LL_Hit;
     return MemAccess;
 }
 
@@ -540,9 +540,9 @@ static
 CacheModelResult prefetch_I1_Read(Addr a, UChar size)
 {
     if ( cachesim_ref( &I1, a, size) == Hit ) return L1_Hit;
-    prefetch_L2_doref(a);
-    switch( cachesim_ref_wb( &L2, Read, a, size) ) {
-	case Hit: return L2_Hit;
+    prefetch_LL_doref(a);
+    switch( cachesim_ref_wb( &LL, Read, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -553,9 +553,9 @@ static
 CacheModelResult prefetch_D1_Read(Addr a, UChar size)
 {
     if ( cachesim_ref( &D1, a, size) == Hit ) return L1_Hit;
-    prefetch_L2_doref(a);
-    switch( cachesim_ref_wb( &L2, Read, a, size) ) {
-	case Hit: return L2_Hit;
+    prefetch_LL_doref(a);
+    switch( cachesim_ref_wb( &LL, Read, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -565,17 +565,17 @@ CacheModelResult prefetch_D1_Read(Addr a, UChar size)
 static
 CacheModelResult prefetch_D1_Write(Addr a, UChar size)
 {
-    prefetch_L2_doref(a);
+    prefetch_LL_doref(a);
     if ( cachesim_ref( &D1, a, size) == Hit ) {
 	/* Even for a L1 hit, the write-trough L1 passes
-	 * the write to the L2 to make the L2 line dirty.
+	 * the write to the LL to make the LL line dirty.
 	 * But this causes no latency, so return the hit.
 	 */
-	cachesim_ref_wb( &L2, Write, a, size);
+	cachesim_ref_wb( &LL, Write, a, size);
 	return L1_Hit;
     }
-    switch( cachesim_ref_wb( &L2, Write, a, size) ) {
-	case Hit: return L2_Hit;
+    switch( cachesim_ref_wb( &LL, Write, a, size) ) {
+	case Hit: return LL_Hit;
 	case Miss: return MemAccess;
 	default: break;
     }
@@ -736,7 +736,7 @@ static CacheModelResult cacheuse##_##L##_doRead(Addr a, UChar size)         \
    /* Second case: word straddles two lines. */                             \
    /* Nb: this is a fast way of doing ((set1+1) % L.sets) */                \
    } else if (((set1 + 1) & (L.sets-1)) == set2) {                          \
-      Int miss1=0, miss2=0; /* 0: L1 hit, 1:L1 miss, 2:L2 miss */           \
+      Int miss1=0, miss2=0; /* 0: L1 hit, 1:L1 miss, 2:LL miss */           \
       set = &(L.tags[set1 * L.assoc]);                                      \
       use_mask = L.line_start_mask[a & L.line_size_mask];		    \
       if (tag == (set[0] & L.tag_mask)) {                                   \
@@ -809,7 +809,7 @@ block2:                                                                     \
       idx = (set2 * L.assoc) + tmp_tag;                                     \
       miss2 = update_##L##_use(&L, idx,			                    \
 		       use_mask, (a+size-1) &~ L.line_size_mask);	    \
-      return (miss1==MemAccess || miss2==MemAccess) ? MemAccess:L2_Hit;     \
+      return (miss1==MemAccess || miss2==MemAccess) ? MemAccess:LL_Hit;     \
                                                                             \
    } else {                                                                 \
        VG_(printf)("addr: %#lx  size: %u  sets: %d %d", a, size, set1, set2); \
@@ -837,13 +837,13 @@ static __inline__ unsigned int countBits(unsigned int bits)
   return c;
 }
 
-static void update_L2_use(int idx, Addr memline)
+static void update_LL_use(int idx, Addr memline)
 {
-  line_loaded* loaded = &(L2.loaded[idx]);
-  line_use* use = &(L2.use[idx]);
-  int i = ((32 - countBits(use->mask)) * L2.line_size)>>5;
+  line_loaded* loaded = &(LL.loaded[idx]);
+  line_use* use = &(LL.use[idx]);
+  int i = ((32 - countBits(use->mask)) * LL.line_size)>>5;
   
-  CLG_DEBUG(2, " L2.miss [%d]: at %#lx accessing memline %#lx\n",
+  CLG_DEBUG(2, " LL.miss [%d]: at %#lx accessing memline %#lx\n",
            idx, CLG_(bb_base) + current_ii->instr_offset, memline);
   if (use->count>0) {
     CLG_DEBUG(2, "   old: used %d, loss bits %d (%08x) [line %#lx from %#lx]\n",
@@ -852,8 +852,8 @@ static void update_L2_use(int idx, Addr memline)
 	     CLG_(current_state).collect, loaded->use_base);
     
     if (CLG_(current_state).collect && loaded->use_base) {
-      (loaded->use_base)[off_L2_AcCost] += 1000 / use->count;
-      (loaded->use_base)[off_L2_SpLoss] += i;
+      (loaded->use_base)[off_LL_AcCost] += 1000 / use->count;
+      (loaded->use_base)[off_LL_SpLoss] += i;
     }
    }
 
@@ -868,53 +868,53 @@ static void update_L2_use(int idx, Addr memline)
 }
 
 static
-CacheModelResult cacheuse_L2_access(Addr memline, line_loaded* l1_loaded)
+CacheModelResult cacheuse_LL_access(Addr memline, line_loaded* l1_loaded)
 {
-   UInt setNo = (memline >> L2.line_size_bits) & (L2.sets_min_1);
-   UWord* set = &(L2.tags[setNo * L2.assoc]);
-   UWord tag  = memline & L2.tag_mask;
+   UInt setNo = (memline >> LL.line_size_bits) & (LL.sets_min_1);
+   UWord* set = &(LL.tags[setNo * LL.assoc]);
+   UWord tag  = memline & LL.tag_mask;
 
    int i, j, idx;
    UWord tmp_tag;
    
-   CLG_DEBUG(6,"L2.Acc(Memline %#lx): Set %d\n", memline, setNo);
+   CLG_DEBUG(6,"LL.Acc(Memline %#lx): Set %d\n", memline, setNo);
 
-   if (tag == (set[0] & L2.tag_mask)) {
-     idx = (setNo * L2.assoc) + (set[0] & ~L2.tag_mask);
-     l1_loaded->dep_use = &(L2.use[idx]);
+   if (tag == (set[0] & LL.tag_mask)) {
+     idx = (setNo * LL.assoc) + (set[0] & ~LL.tag_mask);
+     l1_loaded->dep_use = &(LL.use[idx]);
 
      CLG_DEBUG(6," Hit0 [idx %d] (line %#lx from %#lx): => %08x, count %d\n",
-		 idx, L2.loaded[idx].memline,  L2.loaded[idx].iaddr,
-		 L2.use[idx].mask, L2.use[idx].count);
-     return L2_Hit;
+		 idx, LL.loaded[idx].memline,  LL.loaded[idx].iaddr,
+		 LL.use[idx].mask, LL.use[idx].count);
+     return LL_Hit;
    }
-   for (i = 1; i < L2.assoc; i++) {
-     if (tag == (set[i] & L2.tag_mask)) {
+   for (i = 1; i < LL.assoc; i++) {
+     if (tag == (set[i] & LL.tag_mask)) {
        tmp_tag = set[i];
        for (j = i; j > 0; j--) {
 	 set[j] = set[j - 1];
        }
        set[0] = tmp_tag;
-       idx = (setNo * L2.assoc) + (tmp_tag & ~L2.tag_mask);
-       l1_loaded->dep_use = &(L2.use[idx]);
+       idx = (setNo * LL.assoc) + (tmp_tag & ~LL.tag_mask);
+       l1_loaded->dep_use = &(LL.use[idx]);
 
 	CLG_DEBUG(6," Hit%d [idx %d] (line %#lx from %#lx): => %08x, count %d\n",
-		 i, idx, L2.loaded[idx].memline,  L2.loaded[idx].iaddr,
-		 L2.use[idx].mask, L2.use[idx].count);
-	return L2_Hit;
+		 i, idx, LL.loaded[idx].memline,  LL.loaded[idx].iaddr,
+		 LL.use[idx].mask, LL.use[idx].count);
+	return LL_Hit;
      }
    }
 
    /* A miss;  install this tag as MRU, shuffle rest down. */
-   tmp_tag = set[L2.assoc - 1] & ~L2.tag_mask;
-   for (j = L2.assoc - 1; j > 0; j--) {
+   tmp_tag = set[LL.assoc - 1] & ~LL.tag_mask;
+   for (j = LL.assoc - 1; j > 0; j--) {
      set[j] = set[j - 1];
    }
    set[0] = tag | tmp_tag;
-   idx = (setNo * L2.assoc) + tmp_tag;
-   l1_loaded->dep_use = &(L2.use[idx]);
+   idx = (setNo * LL.assoc) + tmp_tag;
+   l1_loaded->dep_use = &(LL.use[idx]);
 
-   update_L2_use(idx, memline);
+   update_LL_use(idx, memline);
 
    return MemAccess;
 }
@@ -943,7 +943,7 @@ static CacheModelResult update##_##L##_use(cache_t2* cache, int idx, \
       (loaded->use_base)[off_##L##_AcCost] += 1000 / use->count;     \
       (loaded->use_base)[off_##L##_SpLoss] += c;                     \
                                                                      \
-      /* FIXME (?): L1/L2 line sizes must be equal ! */              \
+      /* FIXME (?): L1/LL line sizes must be equal ! */              \
       loaded->dep_use->mask |= use->mask;                            \
       loaded->dep_use->count += use->count;                          \
     }                                                                \
@@ -957,8 +957,8 @@ static CacheModelResult update##_##L##_use(cache_t2* cache, int idx, \
     CLG_(current_state).nonskipped->skipped :                        \
     CLG_(cost_base) + current_ii->cost_offset;                       \
                                                                      \
-  if (memline == 0) return L2_Hit;                                   \
-  return cacheuse_L2_access(memline, loaded);                        \
+  if (memline == 0) return LL_Hit;                                   \
+  return cacheuse_LL_access(memline, loaded);                        \
 }
 
 UPDATE_USE(I1);
@@ -977,7 +977,7 @@ void cacheuse_finish(void)
   if (!CLG_(current_state).collect) return;
 
   CLG_(bb_base) = 0;
-  current_ii = ⅈ
+  current_ii = ⅈ /* needs to be set for update_XX_use */
   CLG_(cost_base) = 0;
 
   /* update usage counters */
@@ -991,10 +991,12 @@ void cacheuse_finish(void)
       if (D1.loaded[i].use_base)
 	update_D1_use( &D1, i, 0,0);
 
-  if (L2.use)
-    for (i = 0; i < L2.sets * L2.assoc; i++)
-      if (L2.loaded[i].use_base)
-	update_L2_use(i, 0);
+  if (LL.use)
+    for (i = 0; i < LL.sets * LL.assoc; i++)
+      if (LL.loaded[i].use_base)
+	update_LL_use(i, 0);
+
+  current_ii = 0;
 }
   
 
@@ -1020,7 +1022,7 @@ void inc_costs(CacheModelResult r, ULong* c1, ULong* c2)
 	    c2[2]++;
 	    // fall through
 
-	case L2_Hit:
+	case LL_Hit:
 	    c1[1]++;
 	    c2[1]++;
 	    // fall through
@@ -1036,9 +1038,9 @@ Char* cacheRes(CacheModelResult r)
 {
     switch(r) {
     case L1_Hit:    return "L1 Hit ";
-    case L2_Hit:    return "L2 Hit ";
-    case MemAccess: return "L2 Miss";
-    case WriteBackMemAccess: return "L2 Miss (dirty)";
+    case LL_Hit:    return "LL Hit ";
+    case MemAccess: return "LL Miss";
+    case WriteBackMemAccess: return "LL Miss (dirty)";
     default:
 	tl_assert(0);
     }
@@ -1268,7 +1270,7 @@ static void log_0I1Dw(InstrInfo* ii, Addr data_addr, Word data_size)
 
 static cache_t clo_I1_cache = UNDEFINED_CACHE;
 static cache_t clo_D1_cache = UNDEFINED_CACHE;
-static cache_t clo_L2_cache = UNDEFINED_CACHE;
+static cache_t clo_LL_cache = UNDEFINED_CACHE;
 
 
 // Checks cache config is ok.  Returns NULL if ok, or a pointer to an error
@@ -1308,7 +1310,7 @@ static Char* check_cache(cache_t* cache)
 }
 
 static
-void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
+void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* LLc)
 {
 #define DEFINED(L)   (-1 != L.size  || -1 != L.assoc || -1 != L.line_size)
 
@@ -1317,30 +1319,30 @@ void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
    Bool all_caches_clo_defined =
       (DEFINED(clo_I1_cache) &&
        DEFINED(clo_D1_cache) &&
-       DEFINED(clo_L2_cache));
+       DEFINED(clo_LL_cache));
 
    // Set the cache config (using auto-detection, if supported by the
    // architecture).
-   VG_(configure_caches)( I1c, D1c, L2c, all_caches_clo_defined );
+   VG_(configure_caches)( I1c, D1c, LLc, all_caches_clo_defined );
 
    // Check the default/auto-detected values.
    checkRes = check_cache(I1c);  tl_assert(!checkRes);
    checkRes = check_cache(D1c);  tl_assert(!checkRes);
-   checkRes = check_cache(L2c);  tl_assert(!checkRes);
+   checkRes = check_cache(LLc);  tl_assert(!checkRes);
 
    // Then replace with any defined on the command line.
    if (DEFINED(clo_I1_cache)) { *I1c = clo_I1_cache; }
    if (DEFINED(clo_D1_cache)) { *D1c = clo_D1_cache; }
-   if (DEFINED(clo_L2_cache)) { *L2c = clo_L2_cache; }
+   if (DEFINED(clo_LL_cache)) { *LLc = clo_LL_cache; }
 
    if (VG_(clo_verbosity) > 1) {
-      VG_(message)(Vg_UserMsg, "Cache configuration used:\n");
-      VG_(message)(Vg_UserMsg, "  I1: %dB, %d-way, %dB lines\n",
-                               I1c->size, I1c->assoc, I1c->line_size);
-      VG_(message)(Vg_UserMsg, "  D1: %dB, %d-way, %dB lines\n",
-                               D1c->size, D1c->assoc, D1c->line_size);
-      VG_(message)(Vg_UserMsg, "  L2: %dB, %d-way, %dB lines\n",
-                               L2c->size, L2c->assoc, L2c->line_size);
+      VG_(umsg)("Cache configuration used:\n");
+      VG_(umsg)("  I1: %dB, %d-way, %dB lines\n",
+                I1c->size, I1c->assoc, I1c->line_size);
+      VG_(umsg)("  D1: %dB, %d-way, %dB lines\n",
+                D1c->size, D1c->assoc, D1c->line_size);
+      VG_(umsg)("  LL: %dB, %d-way, %dB lines\n",
+                LLc->size, LLc->assoc, LLc->line_size);
    }
 #undef CMD_LINE_DEFINED
 }
@@ -1350,7 +1352,7 @@ void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* L2c)
 static void cachesim_post_clo_init(void)
 {
   /* Cache configurations. */
-  cache_t  I1c, D1c, L2c;
+  cache_t  I1c, D1c, LLc;
 
   /* Initialize access handlers */
   if (!CLG_(clo).simulate_cache) {
@@ -1374,15 +1376,15 @@ static void cachesim_post_clo_init(void)
   }
 
   /* Configuration of caches only needed with real cache simulation */
-  configure_caches(&I1c, &D1c, &L2c);
+  configure_caches(&I1c, &D1c, &LLc);
   
   I1.name = "I1";
   D1.name = "D1";
-  L2.name = "L2";
+  LL.name = "LL";
 
   cachesim_initcache(I1c, &I1);
   cachesim_initcache(D1c, &D1);
-  cachesim_initcache(L2c, &L2);
+  cachesim_initcache(LLc, &LL);
 
   /* the other cache simulators use the standard helpers
    * with dispatching via simulator struct */
@@ -1463,7 +1465,7 @@ void cachesim_clear(void)
 {
   cachesim_clearcache(&I1);
   cachesim_clearcache(&D1);
-  cachesim_clearcache(&L2);
+  cachesim_clearcache(&LL);
 
   prefetch_clear();
 }
@@ -1474,7 +1476,7 @@ static void cachesim_getdesc(Char* buf)
   Int p;
   p = VG_(sprintf)(buf, "\ndesc: I1 cache: %s\n", I1.desc_line);
   p += VG_(sprintf)(buf+p, "desc: D1 cache: %s\n", D1.desc_line);
-  VG_(sprintf)(buf+p, "desc: L2 cache: %s\n", L2.desc_line);
+  VG_(sprintf)(buf+p, "desc: LL cache: %s\n", LL.desc_line);
 }
 
 static
@@ -1490,11 +1492,12 @@ void cachesim_print_opts(void)
 "    --cacheuse=no|yes         Collect cache block use [no]\n"
 "    --I1=,,  set I1 cache manually\n"
 "    --D1=,,  set D1 cache manually\n"
-"    --L2=,,  set L2 cache manually\n"
+"    --LL=,,  set LL cache manually\n"
 	      );
 }
 
-static void parse_opt ( cache_t* cache, char* opt, Char* optval )
+static void parse_opt ( cache_t* cache,
+                        char* opt, Char* optval, UChar kind )
 {
    Long i1, i2, i3;
    Char* endptr;
@@ -1550,11 +1553,12 @@ static Bool cachesim_parse_opt(Char* arg)
    }
 
    else if VG_STR_CLO(arg, "--I1", tmp_str)
-      parse_opt(&clo_I1_cache, arg, tmp_str);
+      parse_opt(&clo_I1_cache, arg, tmp_str, 'i');
    else if VG_STR_CLO(arg, "--D1", tmp_str)
-      parse_opt(&clo_D1_cache, arg, tmp_str);
-   else if VG_STR_CLO(arg, "--L2", tmp_str)
-      parse_opt(&clo_L2_cache, arg, tmp_str);
+      parse_opt(&clo_D1_cache, arg, tmp_str, '1');
+   else if (VG_STR_CLO(arg, "--L2", tmp_str) || // for backwards compatibility
+            VG_STR_CLO(arg, "--LL", tmp_str))
+      parse_opt(&clo_LL_cache, arg, tmp_str, '2');
   else
     return False;
 
@@ -1613,8 +1617,8 @@ static
 void cachesim_printstat(Int l1, Int l2, Int l3)
 {
   FullCost total = CLG_(total_cost), D_total = 0;
-  ULong L2_total_m, L2_total_mr, L2_total_mw,
-    L2_total, L2_total_r, L2_total_w;
+  ULong LL_total_m, LL_total_mr, LL_total_mw,
+    LL_total, LL_total_r, LL_total_w;
   char buf1[RESULTS_BUF_LEN], 
     buf2[RESULTS_BUF_LEN], 
     buf3[RESULTS_BUF_LEN];
@@ -1632,7 +1636,7 @@ void cachesim_printstat(Int l1, Int l2, Int l3)
   VG_(message)(Vg_UserMsg, "I1  misses:    %s\n", buf1);
 
   commify(total[fullOffset(EG_IR) +2], l1, buf1);
-  VG_(message)(Vg_UserMsg, "L2i misses:    %s\n", buf1);
+  VG_(message)(Vg_UserMsg, "LLi misses:    %s\n", buf1);
 
   p = 100;
 
@@ -1645,7 +1649,7 @@ void cachesim_printstat(Int l1, Int l2, Int l3)
        
   percentify(total[fullOffset(EG_IR)+2] * 100 * p /
 	     total[fullOffset(EG_IR)], p, l1+1, buf1);
-  VG_(message)(Vg_UserMsg, "L2i miss rate: %s\n", buf1);
+  VG_(message)(Vg_UserMsg, "LLi miss rate: %s\n", buf1);
   VG_(message)(Vg_UserMsg, "\n");
    
   /* D cache results.
@@ -1673,7 +1677,7 @@ void cachesim_printstat(Int l1, Int l2, Int l3)
   commify( D_total[2], l1, buf1);
   commify(total[fullOffset(EG_DR)+2], l2, buf2);
   commify(total[fullOffset(EG_DW)+2], l3, buf3);
-  VG_(message)(Vg_UserMsg, "L2d misses:    %s  (%s rd + %s wr)\n",
+  VG_(message)(Vg_UserMsg, "LLd misses:    %s  (%s rd + %s wr)\n",
 	       buf1, buf2, buf3);
 
   p = 10;
@@ -1695,50 +1699,50 @@ void cachesim_printstat(Int l1, Int l2, Int l3)
 	     total[fullOffset(EG_DR)], p, l2+1, buf2);
   percentify(total[fullOffset(EG_DW)+2] * 100 * p /
 	     total[fullOffset(EG_DW)], p, l3+1, buf3);
-  VG_(message)(Vg_UserMsg, "L2d miss rate: %s (%s   + %s  )\n", 
+  VG_(message)(Vg_UserMsg, "LLd miss rate: %s (%s   + %s  )\n", 
                buf1, buf2,buf3);
   VG_(message)(Vg_UserMsg, "\n");
 
 
   
-  /* L2 overall results */
+  /* LL overall results */
   
-  L2_total   =
+  LL_total   =
     total[fullOffset(EG_DR) +1] +
     total[fullOffset(EG_DW) +1] +
     total[fullOffset(EG_IR) +1];
-  L2_total_r =
+  LL_total_r =
     total[fullOffset(EG_DR) +1] +
     total[fullOffset(EG_IR) +1];
-  L2_total_w = total[fullOffset(EG_DW) +1];
-  commify(L2_total,   l1, buf1);
-  commify(L2_total_r, l2, buf2);
-  commify(L2_total_w, l3, buf3);
-  VG_(message)(Vg_UserMsg, "L2 refs:       %s  (%s rd + %s wr)\n",
+  LL_total_w = total[fullOffset(EG_DW) +1];
+  commify(LL_total,   l1, buf1);
+  commify(LL_total_r, l2, buf2);
+  commify(LL_total_w, l3, buf3);
+  VG_(message)(Vg_UserMsg, "LL refs:       %s  (%s rd + %s wr)\n",
 	       buf1, buf2, buf3);
   
-  L2_total_m  =
+  LL_total_m  =
     total[fullOffset(EG_DR) +2] +
     total[fullOffset(EG_DW) +2] +
     total[fullOffset(EG_IR) +2];
-  L2_total_mr =
+  LL_total_mr =
     total[fullOffset(EG_DR) +2] +
     total[fullOffset(EG_IR) +2];
-  L2_total_mw = total[fullOffset(EG_DW) +2];
-  commify(L2_total_m,  l1, buf1);
-  commify(L2_total_mr, l2, buf2);
-  commify(L2_total_mw, l3, buf3);
-  VG_(message)(Vg_UserMsg, "L2 misses:     %s  (%s rd + %s wr)\n",
+  LL_total_mw = total[fullOffset(EG_DW) +2];
+  commify(LL_total_m,  l1, buf1);
+  commify(LL_total_mr, l2, buf2);
+  commify(LL_total_mw, l3, buf3);
+  VG_(message)(Vg_UserMsg, "LL misses:     %s  (%s rd + %s wr)\n",
 	       buf1, buf2, buf3);
   
-  percentify(L2_total_m  * 100 * p /
+  percentify(LL_total_m  * 100 * p /
 	     (total[fullOffset(EG_IR)] + D_total[0]),  p, l1+1, buf1);
-  percentify(L2_total_mr * 100 * p /
+  percentify(LL_total_mr * 100 * p /
 	     (total[fullOffset(EG_IR)] + total[fullOffset(EG_DR)]),
 	     p, l2+1, buf2);
-  percentify(L2_total_mw * 100 * p /
+  percentify(LL_total_mw * 100 * p /
 	     total[fullOffset(EG_DW)], p, l3+1, buf3);
-  VG_(message)(Vg_UserMsg, "L2 miss rate:  %s (%s   + %s  )\n",
+  VG_(message)(Vg_UserMsg, "LL miss rate:  %s (%s   + %s  )\n",
 	       buf1, buf2,buf3);
 }
 
@@ -1760,14 +1764,14 @@ void CLG_(init_eventsets)()
     if (!CLG_(clo).simulate_cache)
 	CLG_(register_event_group)(EG_IR, "Ir");
     else if (!clo_simulate_writeback) {
-	CLG_(register_event_group3)(EG_IR, "Ir", "I1mr", "I2mr");
-	CLG_(register_event_group3)(EG_DR, "Dr", "D1mr", "D2mr");
-	CLG_(register_event_group3)(EG_DW, "Dw", "D1mw", "D2mw");
+	CLG_(register_event_group3)(EG_IR, "Ir", "I1mr", "ILmr");
+	CLG_(register_event_group3)(EG_DR, "Dr", "D1mr", "DLmr");
+	CLG_(register_event_group3)(EG_DW, "Dw", "D1mw", "DLmw");
     }
     else { // clo_simulate_writeback
-	CLG_(register_event_group4)(EG_IR, "Ir", "I1mr", "I2mr", "I2dmr");
-        CLG_(register_event_group4)(EG_DR, "Dr", "D1mr", "D2mr", "D2dmr");
-        CLG_(register_event_group4)(EG_DW, "Dw", "D1mw", "D2mw", "D2dmw");
+	CLG_(register_event_group4)(EG_IR, "Ir", "I1mr", "ILmr", "ILdmr");
+        CLG_(register_event_group4)(EG_DR, "Dr", "D1mr", "DLmr", "DLdmr");
+        CLG_(register_event_group4)(EG_DW, "Dw", "D1mw", "DLmw", "DLdmw");
     }
 
     if (CLG_(clo).simulate_branch) {
@@ -1807,12 +1811,12 @@ void CLG_(init_eventsets)()
     CLG_(append_event)(CLG_(dumpmap), "I1mr");
     CLG_(append_event)(CLG_(dumpmap), "D1mr");
     CLG_(append_event)(CLG_(dumpmap), "D1mw");
-    CLG_(append_event)(CLG_(dumpmap), "I2mr");
-    CLG_(append_event)(CLG_(dumpmap), "D2mr");
-    CLG_(append_event)(CLG_(dumpmap), "D2mw");
-    CLG_(append_event)(CLG_(dumpmap), "I2dmr");
-    CLG_(append_event)(CLG_(dumpmap), "D2dmr");
-    CLG_(append_event)(CLG_(dumpmap), "D2dmw");
+    CLG_(append_event)(CLG_(dumpmap), "ILmr");
+    CLG_(append_event)(CLG_(dumpmap), "DLmr");
+    CLG_(append_event)(CLG_(dumpmap), "DLmw");
+    CLG_(append_event)(CLG_(dumpmap), "ILdmr");
+    CLG_(append_event)(CLG_(dumpmap), "DLdmr");
+    CLG_(append_event)(CLG_(dumpmap), "DLdmw");
     CLG_(append_event)(CLG_(dumpmap), "Bc");
     CLG_(append_event)(CLG_(dumpmap), "Bcm");
     CLG_(append_event)(CLG_(dumpmap), "Bi");
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/Makefile.in
index d7d283b0e..568868332 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/Makefile.in
@@ -158,6 +158,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -187,12 +189,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -345,7 +342,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -374,6 +371,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -402,6 +404,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/filter_stderr
index d2d754456..c791b6495 100755
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/filter_stderr
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/filter_stderr
@@ -13,11 +13,11 @@ sed "/^For interactive control,.*$/d" |
 # Remove numbers from "Collected" line
 sed "s/^\(Collected *:\)[ 0-9]*$/\1/" |
 
-# Remove numbers from I/D/L2 "refs:" lines
-perl -p -e 's/((I|D|L2) *refs:)[ 0-9,()+rdw]*$/\1/'  |
+# Remove numbers from I/D/LL "refs:" lines
+perl -p -e 's/((I|D|LL) *refs:)[ 0-9,()+rdw]*$/\1/'  |
 
-# Remove numbers from I1/D1/L2/L2i/L2d "misses:" and "miss rates:" lines
-perl -p -e 's/((I1|D1|L2|L2i|L2d) *(misses|miss rate):)[ 0-9,()+rdw%\.]*$/\1/' |
+# Remove numbers from I1/D1/LL/LLi/LLd "misses:" and "miss rates:" lines
+perl -p -e 's/((I1|D1|LL|LLi|LLd) *(misses|miss rate):)[ 0-9,()+rdw%\.]*$/\1/' |
 
 # Remove numbers from "Branches:", "Mispredicts:, and "Mispred rate:" lines
 perl -p -e 's/((Branches|Mispredicts|Mispred rate):)[ 0-9,()+condi%\.]*$/\1/' |
@@ -25,5 +25,7 @@ perl -p -e 's/((Branches|Mispredicts|Mispred rate):)[ 0-9,()+condi%\.]*$/\1/' |
 # Remove CPUID warnings lines for P4s and other machines
 sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
 sed "/Simulating a 16 KB I-cache with 32 B lines/d"   |
-sed "/warning: L3 cache detected but ignored/d" |
-sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d"
+sed "/warning: L3 cache found, using its data for the LL simulation./d" |
+sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d"
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.stderr.exp
index 0705c1c84..974550a01 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.vgtest
index 9da7dced2..1be3b13e3 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.vgtest
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-hwpref.vgtest
@@ -1,3 +1,3 @@
 prog: ../../tests/true
-vgopts: --I1=32768,8,64 --D1=24576,6,64 --L2=3145728,12,64 --simulate-hwpref=yes
+vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --simulate-hwpref=yes
 cleanup: rm callgrind.out.*
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.stderr.exp
index ea9acc89b..6d41645f5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw AcCost1 SpLoss1 AcCost2 SpLoss2
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.vgtest
index b8312a76b..23cec4a56 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.vgtest
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-use.vgtest
@@ -1,3 +1,3 @@
 prog: ../../tests/true
-vgopts: --I1=32768,8,64 --D1=24576,6,64 --L2=3145728,12,64 --cacheuse=yes
+vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --cacheuse=yes
 cleanup: rm callgrind.out.*
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.stderr.exp
index 90da3e4ce..461ac9601 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw I2dmr D2dmr D2dmw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw ILdmr DLdmr DLdmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.vgtest
index 34a1f6b33..6cd016f0b 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.vgtest
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2-wb.vgtest
@@ -1,3 +1,3 @@
 prog: ../../tests/true
-vgopts: --I1=32768,8,64 --D1=24576,6,64 --L2=3145728,12,64 --simulate-wb=yes
+vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --simulate-wb=yes
 cleanup: rm callgrind.out.*
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.stderr.exp
index 0705c1c84..974550a01 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.vgtest
index 73823d749..83b994652 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.vgtest
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/notpower2.vgtest
@@ -1,3 +1,3 @@
 prog: ../../tests/true
-vgopts: --I1=32768,8,64 --D1=24576,6,64 --L2=3145728,12,64
+vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64
 cleanup: rm callgrind.out.*
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-both.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-both.stderr.exp
index b742c213b..f8fb40278 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-both.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-both.stderr.exp
@@ -1,23 +1,23 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw Bc Bcm Bi Bim
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
 
 Branches:
 Mispredicts:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-cache.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-cache.stderr.exp
index 0705c1c84..974550a01 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-cache.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork-cache.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork1.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork1.stderr.exp
index 0705c1c84..974550a01 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork1.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork1.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork2.stderr.exp
index 90da3e4ce..461ac9601 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork2.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork2.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw I2dmr D2dmr D2dmw
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw ILdmr DLdmr DLdmw
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork3.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork3.stderr.exp
index ea9acc89b..6d41645f5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork3.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/simwork3.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw AcCost1 SpLoss1 AcCost2 SpLoss2
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/threads-use.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/threads-use.stderr.exp
index 4f0bb9948..c8fd75e04 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/threads-use.stderr.exp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/tests/threads-use.stderr.exp
@@ -1,20 +1,20 @@
 
 
-Events    : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw AcCost1 SpLoss1 AcCost2 SpLoss2 Ge sysCount sysTime
+Events    : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2 Ge sysCount sysTime
 Collected :
 
 I   refs:
 I1  misses:
-L2i misses:
+LLi misses:
 I1  miss rate:
-L2i miss rate:
+LLi miss rate:
 
 D   refs:
 D1  misses:
-L2d misses:
+LLd misses:
 D1  miss rate:
-L2d miss rate:
+LLd miss rate:
 
-L2 refs:
-L2 misses:
-L2 miss rate:
+LL refs:
+LL misses:
+LL miss rate:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/threads.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/threads.c
index fb8260bf9..562cc6d1d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/threads.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/callgrind/threads.c
@@ -28,7 +28,7 @@
 
 #include "global.h"
 
-#include 
+#include "pub_tool_threadstate.h"
 
 /* forward decls */
 static exec_state* exec_state_save(void);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/config.h.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/config.h.in
index 42bbc73da..b845d60c6 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/config.h.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/config.h.in
@@ -33,6 +33,9 @@
 /* Define to 1 if you're using glibc 2.12.x */
 #undef GLIBC_2_12
 
+/* Define to 1 if you're using glibc 2.13.x */
+#undef GLIBC_2_13
+
 /* Define to 1 if you're using glibc 2.2.x */
 #undef GLIBC_2_2
 
@@ -57,15 +60,23 @@
 /* Define to 1 if you're using glibc 2.9.x */
 #undef GLIBC_2_9
 
+/* Define to 1 if gcc/as can do Altivec. */
+#undef HAS_ALTIVEC
+
 /* Define to 1 if you have the  header file. */
 #undef HAVE_ASM_UNISTD_H
 
 /* Define to 1 if as supports mtocrf/mfocrf. */
 #undef HAVE_AS_PPC_MFTOCRF
 
-/* Define to 1 if gcc supports __sync_bool_compare_and_swap() a.o. */
+/* Define to 1 if gcc supports __sync_bool_compare_and_swap() and
+   __sync_add_and_fetch() */
 #undef HAVE_BUILTIN_ATOMIC
 
+/* Define to 1 if g++ supports __sync_bool_compare_and_swap() and
+   __sync_add_and_fetch() */
+#undef HAVE_BUILTIN_ATOMIC_CXX
+
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
@@ -87,9 +98,6 @@
 /* Define to 1 if you have the `eventfd_read' function. */
 #undef HAVE_EVENTFD_READ
 
-/* Define to 1 if you have the `floor' function. */
-#undef HAVE_FLOOR
-
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
@@ -99,6 +107,9 @@
 /* Define to 1 if you have the `klogctl' function. */
 #undef HAVE_KLOGCTL
 
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
 /* Define to 1 if you have the `rt' library (-lrt). */
 #undef HAVE_LIBRT
 
@@ -169,13 +180,6 @@
 /* Define to 1 if you have the `pthread_spin_lock' function. */
 #undef HAVE_PTHREAD_SPIN_LOCK
 
-/* Define to 1 if the installed version of Qt4 provides QAtomicInt. */
-#undef HAVE_QTCORE_QATOMICINT
-
-/* Define to 1 if the installed version of Qt4 provides QMutex::tryLock(int).
-   */
-#undef HAVE_QTCORE_QMUTEX_TRYLOCK_INT
-
 /* Define to 1 if you have the `readlinkat' function. */
 #undef HAVE_READLINKAT
 
@@ -254,9 +258,6 @@
 /* Define to 1 if you have the  header file. */
 #undef HAVE_SYS_TYPES_H
 
-/* Define to 1 if you have the `timerfd' function. */
-#undef HAVE_TIMERFD
-
 /* can use __thread to define thread-local variables */
 #undef HAVE_TLS
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure
index fa8cc3a0c..70ca369c7 100755
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure
@@ -1,13 +1,13 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for Valgrind 3.6.0.SVN.
+# Generated by GNU Autoconf 2.68 for Valgrind 3.7.0.SVN.
 #
 # Report bugs to .
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -91,6 +91,7 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -216,11 +217,18 @@ IFS=$as_save_IFS
   # We cannot yet assume a decent shell, so we have to provide a
 	# neutralization value for shells without unset; and this also
 	# works around shells that cannot unset nonexistent variables.
+	# Preserve -v and -x to the replacement shell.
 	BASH_ENV=/dev/null
 	ENV=/dev/null
 	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
 	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+	case $- in # ((((
+	  *v*x* | *x*v* ) as_opts=-vx ;;
+	  *v* ) as_opts=-v ;;
+	  *x* ) as_opts=-x ;;
+	  * ) as_opts= ;;
+	esac
+	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
 fi
 
     if test x$as_have_required = xno; then :
@@ -319,7 +327,7 @@ $as_echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -359,19 +367,19 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -533,7 +541,7 @@ test -n "$DJDIR" || exec 7<&0 &1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -552,8 +560,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='Valgrind'
 PACKAGE_TARNAME='valgrind'
-PACKAGE_VERSION='3.6.0.SVN'
-PACKAGE_STRING='Valgrind 3.6.0.SVN'
+PACKAGE_VERSION='3.7.0.SVN'
+PACKAGE_STRING='Valgrind 3.7.0.SVN'
 PACKAGE_BUGREPORT='valgrind-users@lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -598,6 +606,8 @@ ac_header_list=
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
+HAVE_BUILTIN_ATOMIC_CXX_FALSE
+HAVE_BUILTIN_ATOMIC_CXX_TRUE
 HAVE_BUILTIN_ATOMIC_FALSE
 HAVE_BUILTIN_ATOMIC_TRUE
 HAVE_OPENMP_FALSE
@@ -606,15 +616,6 @@ HAVE_BOOST_1_35_FALSE
 HAVE_BOOST_1_35_TRUE
 BOOST_LIBS
 BOOST_CFLAGS
-HAVE_QTCORE_QATOMICINT_FALSE
-HAVE_QTCORE_QATOMICINT_TRUE
-HAVE_QTCORE_FALSE
-HAVE_QTCORE_TRUE
-QTCORE_LIBS
-QTCORE_CFLAGS
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
 BUILD_MPIWRAP_SEC_FALSE
 BUILD_MPIWRAP_SEC_TRUE
 BUILD_MPIWRAP_PRI_FALSE
@@ -627,6 +628,12 @@ HAVE_PTHREAD_MUTEX_TIMEDLOCK_TRUE
 HAVE_PTHREAD_BARRIER_FALSE
 HAVE_PTHREAD_BARRIER_TRUE
 LIBOBJS
+BUILD_SSE42_TESTS_FALSE
+BUILD_SSE42_TESTS_TRUE
+BUILD_LZCNT_TESTS_FALSE
+BUILD_LZCNT_TESTS_TRUE
+BUILD_PCLMULQDQ_TESTS_FALSE
+BUILD_PCLMULQDQ_TESTS_TRUE
 BUILD_SSSE3_TESTS_FALSE
 BUILD_SSSE3_TESTS_TRUE
 BUILD_SSE3_TESTS_FALSE
@@ -636,6 +643,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH
 FLAG_FNO_STACK_PROTECTOR
 FLAG_W_EXTRA
 FLAG_W_NO_UNINITIALIZED
+FLAG_W_NO_OVERFLOW
+FLAG_W_NO_NONNULL
 FLAG_W_NO_FORMAT_ZERO_LENGTH
 FLAG_W_NO_EMPTY_BODY
 PREFERRED_STACK_BOUNDARY
@@ -647,8 +656,8 @@ FLAG_MAIX32
 FLAG_M32
 HAVE_PTHREAD_CREATE_GLIBC_2_0_FALSE
 HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE
-HAVE_ALTIVEC_H_FALSE
-HAVE_ALTIVEC_H_TRUE
+HAS_VSX_FALSE
+HAS_VSX_TRUE
 HAS_ALTIVEC_FALSE
 HAS_ALTIVEC_TRUE
 GLIBC_VERSION
@@ -678,6 +687,8 @@ VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE
 VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE
 VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE
 VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE
+VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE
+VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_FALSE
 VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX_FALSE
@@ -688,6 +699,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_FALSE
 VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE
 VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE
+VGCONF_ARCHS_INCLUDE_S390X_FALSE
+VGCONF_ARCHS_INCLUDE_S390X_TRUE
 VGCONF_ARCHS_INCLUDE_ARM_FALSE
 VGCONF_ARCHS_INCLUDE_ARM_TRUE
 VGCONF_ARCHS_INCLUDE_PPC64_FALSE
@@ -835,12 +848,7 @@ CXXFLAGS
 CCC
 AR
 CCAS
-CCASFLAGS
-PKG_CONFIG
-PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR
-QTCORE_CFLAGS
-QTCORE_LIBS'
+CCASFLAGS'
 
 
 # Initialize some variables set by options.
@@ -903,8 +911,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -949,7 +958,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -975,7 +984,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1179,7 +1188,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1195,7 +1204,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1225,8 +1234,8 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
@@ -1234,7 +1243,7 @@ Try \`$0 --help' for more information."
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1244,7 +1253,7 @@ Try \`$0 --help' for more information."
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1252,13 +1261,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1281,7 +1290,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1295,8 +1304,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1311,9 +1320,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error "working directory cannot be determined"
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error "pwd does not report name of working directory"
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1352,11 +1361,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1382,7 +1391,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Valgrind 3.6.0.SVN to adapt to many kinds of systems.
+\`configure' configures Valgrind 3.7.0.SVN to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1396,7 +1405,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1452,7 +1461,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Valgrind 3.6.0.SVN:";;
+     short | recursive ) echo "Configuration of Valgrind 3.7.0.SVN:";;
    esac
   cat <<\_ACEOF
 
@@ -1488,14 +1497,6 @@ Some influential environment variables:
   AR          Archiver command
   CCAS        assembler compiler command (defaults to CC)
   CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
-  PKG_CONFIG  path to pkg-config utility
-  PKG_CONFIG_PATH
-              directories to add to pkg-config's search path
-  PKG_CONFIG_LIBDIR
-              path overriding pkg-config's built-in search path
-  QTCORE_CFLAGS
-              C compiler flags for QTCORE, overriding pkg-config
-  QTCORE_LIBS linker flags for QTCORE, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1563,10 +1564,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Valgrind configure 3.6.0.SVN
-generated by GNU Autoconf 2.65
+Valgrind configure 3.7.0.SVN
+generated by GNU Autoconf 2.68
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1610,7 +1611,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_compile
@@ -1636,7 +1637,7 @@ $as_echo "$ac_try_echo"; } >&5
     mv -f conftest.er1 conftest.err
   fi
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
+  test $ac_status = 0; } > conftest.i && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then :
@@ -1647,7 +1648,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
     ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_cpp
@@ -1685,7 +1686,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_cxx_try_compile
@@ -1731,7 +1732,7 @@ fi
   # interfere with the next link command; also delete a directory that is
   # left behind by Apple's compiler.  We do this before executing the actions.
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_link
@@ -1744,10 +1745,10 @@ fi
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  if eval \${$3+:} false; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -1783,7 +1784,7 @@ if ac_fn_c_try_cpp "$LINENO"; then :
 else
   ac_header_preproc=no
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
 $as_echo "$ac_header_preproc" >&6; }
 
@@ -1806,17 +1807,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## --------------------------------------------------- ##
+( $as_echo "## --------------------------------------------------- ##
 ## Report this to valgrind-users@lists.sourceforge.net ##
-## --------------------------------------------------- ##
-_ASBOX
+## --------------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -1825,7 +1824,7 @@ eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_mongrel
 
@@ -1866,7 +1865,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
        ac_retval=$ac_status
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_run
@@ -1880,7 +1879,7 @@ ac_fn_c_check_header_compile ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1898,7 +1897,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_compile
 
@@ -1911,7 +1910,7 @@ ac_fn_c_check_type ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -1952,7 +1951,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
 
@@ -1964,7 +1963,7 @@ ac_fn_c_check_func ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2019,7 +2018,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_func
 
@@ -2064,7 +2063,7 @@ fi
   # interfere with the next link command; also delete a directory that is
   # left behind by Apple's compiler.  We do this before executing the actions.
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_cxx_try_link
@@ -2072,8 +2071,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Valgrind $as_me 3.6.0.SVN, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+It was created by Valgrind $as_me 3.7.0.SVN, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
 
@@ -2183,11 +2182,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -2221,11 +2218,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -2238,11 +2233,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -2256,11 +2249,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -2315,7 +2306,12 @@ _ACEOF
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -2330,7 +2326,11 @@ do
     { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -2409,7 +2409,7 @@ if $ac_cache_corrupted; then
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
   { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2429,16 +2429,22 @@ am__api_version='1.11'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
 done
 if test -z "$ac_aux_dir"; then
-  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2467,7 +2473,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
+if ${ac_cv_path_install+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2554,11 +2560,11 @@ am_lf='
 '
 case `pwd` in
   *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
 esac
 
 # Do `set' in a subshell so we don't clobber the current shell's
@@ -2580,7 +2586,7 @@ if (
       # if, for instance, CONFIG_SHELL is bash and it inherits a
       # broken ls alias from the environment.  This has actually
       # happened.  Such a system could not be considered "sane".
-      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" "$LINENO" 5
    fi
 
@@ -2590,7 +2596,7 @@ then
    # Ok.
    :
 else
-   as_fn_error "newly created file is older than distributed files!
+   as_fn_error $? "newly created file is older than distributed files!
 Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -2644,7 +2650,7 @@ if test "$cross_compiling" != no; then
 set dummy ${ac_tool_prefix}strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -2684,7 +2690,7 @@ if test -z "$ac_cv_prog_STRIP"; then
 set dummy strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -2737,7 +2743,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
 if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then :
+  if ${ac_cv_path_mkdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2788,7 +2794,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -2828,7 +2834,7 @@ done
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2836,7 +2842,7 @@ SHELL = /bin/sh
 all:
 	@echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2870,7 +2876,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   am__isrc=' -I$(srcdir)'
   # test to see if srcdir already configured
   if test -f $srcdir/config.status; then
-    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -2886,7 +2892,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='valgrind'
- VERSION='3.6.0.SVN'
+ VERSION='3.7.0.SVN'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2977,7 +2983,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3017,7 +3023,7 @@ if test -z "$ac_cv_prog_CC"; then
 set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -3070,7 +3076,7 @@ if test -z "$CC"; then
 set dummy ${ac_tool_prefix}cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3110,7 +3116,7 @@ if test -z "$CC"; then
 set dummy cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3169,7 +3175,7 @@ if test -z "$CC"; then
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3213,7 +3219,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -3267,8 +3273,8 @@ fi
 
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3382,9 +3388,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -3426,8 +3431,8 @@ done
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3484,9 +3489,9 @@ $as_echo "$ac_try_echo"; } >&5
     else
 	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
+as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
@@ -3497,7 +3502,7 @@ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
 ac_clean_files=$ac_clean_files_save
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 $as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3537,8 +3542,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -3548,7 +3553,7 @@ OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3585,7 +3590,7 @@ ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -3663,7 +3668,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -3824,7 +3829,7 @@ depcc="$CC"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -3956,7 +3961,7 @@ $as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
 set dummy $CC; ac_cc=`$as_echo "$2" |
 		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4085,7 +4090,7 @@ if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then :
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -4115,7 +4120,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -4131,11 +4136,11 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
   break
 fi
@@ -4174,7 +4179,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -4190,18 +4195,18 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
 
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -4226,7 +4231,7 @@ if test -z "$CXX"; then
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then :
+if ${ac_cv_prog_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CXX"; then
@@ -4270,7 +4275,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CXX"; then
@@ -4348,7 +4353,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4385,7 +4390,7 @@ ac_test_CXXFLAGS=${CXXFLAGS+set}
 ac_save_CXXFLAGS=$CXXFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
 $as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
+if ${ac_cv_prog_cxx_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_cxx_werror_flag=$ac_cxx_werror_flag
@@ -4471,7 +4476,7 @@ depcc="$CXX"  am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then :
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -4612,7 +4617,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -4652,7 +4657,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
 set dummy ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -4704,7 +4709,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then :
+if ${ac_cv_path_SED+:} false; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -4759,7 +4764,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_SED"; then
-    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
   fi
 else
   ac_cv_path_SED=$SED
@@ -4781,7 +4786,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_AR+set}" = set; then :
+if ${ac_cv_path_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $AR in
@@ -4826,7 +4831,7 @@ fi
 
 # Check for the compiler support
 if test "${GCC}" != "yes" ; then
-   as_fn_error "Valgrind relies on GCC to be compiled" "$LINENO" 5
+   as_fn_error $? "Valgrind relies on GCC to be compiled" "$LINENO" 5
 fi
 
 # figure out where perl lives
@@ -4834,7 +4839,7 @@ fi
 set dummy perl; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PERL+set}" = set; then :
+if ${ac_cv_path_PERL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $PERL in
@@ -4876,7 +4881,7 @@ fi
 set dummy gdb; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GDB+set}" = set; then :
+if ${ac_cv_path_GDB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $GDB in
@@ -4931,7 +4936,7 @@ depcc="$CCAS"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then :
+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -5086,7 +5091,7 @@ case "${gcc_version}" in
      2.*)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${gcc_version})" >&5
 $as_echo "no (${gcc_version})" >&6; }
-	as_fn_error "please use a recent (>= gcc-3.0) version of gcc" "$LINENO" 5
+	as_fn_error $? "please use a recent (>= gcc-3.0) version of gcc" "$LINENO" 5
 	;;
      *)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${gcc_version})" >&5
@@ -5104,27 +5109,27 @@ esac
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
+if ${ac_cv_build+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -5142,14 +5147,14 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
 $as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
+if ${ac_cv_host+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -5157,7 +5162,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -5216,6 +5221,12 @@ $as_echo "ok (${host_cpu})" >&6; }
         esac
         ;;
 
+     s390x)
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
+$as_echo "ok (${host_cpu})" >&6; }
+        ARCH_MAX="s390x"
+        ;;
+
      armv7*)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
 $as_echo "ok (${host_cpu})" >&6; }
@@ -5225,7 +5236,7 @@ $as_echo "ok (${host_cpu})" >&6; }
      *)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${host_cpu})" >&5
 $as_echo "no (${host_cpu})" >&6; }
-	as_fn_error "Unsupported host architecture. Sorry" "$LINENO" 5
+	as_fn_error $? "Unsupported host architecture. Sorry" "$LINENO" 5
 	;;
 esac
 
@@ -5242,7 +5253,7 @@ esac
 # Check if a 64-bit only build has been requested
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a 64-bit only build" >&5
 $as_echo_n "checking for a 64-bit only build... " >&6; }
-if test "${vg_cv_only64bit+set}" = set; then :
+if ${vg_cv_only64bit+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # Check whether --enable-only64bit was given.
@@ -5259,7 +5270,7 @@ $as_echo "$vg_cv_only64bit" >&6; }
 # Check if a 32-bit only build has been requested
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a 32-bit only build" >&5
 $as_echo_n "checking for a 32-bit only build... " >&6; }
-if test "${vg_cv_only32bit+set}" = set; then :
+if ${vg_cv_only32bit+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # Check whether --enable-only32bit was given.
@@ -5275,7 +5286,7 @@ $as_echo "$vg_cv_only32bit" >&6; }
 
 # Stay sane
 if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
-   as_fn_error "Nonsensical: both --enable-only64bit and --enable-only32bit." "$LINENO" 5
+   as_fn_error $? "Nonsensical: both --enable-only64bit and --enable-only32bit." "$LINENO" 5
 fi
 
 #----------------------------------------------------------------------------
@@ -5322,7 +5333,7 @@ $as_echo "#define KERNEL_2_4 1" >>confdefs.h
              *)
         	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5
 $as_echo "unsupported (${kernel})" >&6; }
-        	    as_fn_error "Valgrind works on kernels 2.4, 2.6" "$LINENO" 5
+        	    as_fn_error $? "Valgrind works on kernels 2.4, 2.6" "$LINENO" 5
         	    ;;
         esac
 
@@ -5398,7 +5409,7 @@ $as_echo "#define DARWIN_VERS DARWIN_10_6" >>confdefs.h
      *)
 		  { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5
 $as_echo "unsupported (${kernel})" >&6; }
-		  as_fn_error "Valgrind works on Darwin 9.x and 10.x (Mac OS X 10.5 and 10.6)" "$LINENO" 5
+		  as_fn_error $? "Valgrind works on Darwin 9.x and 10.x (Mac OS X 10.5 and 10.6)" "$LINENO" 5
 		  ;;
 	esac
         ;;
@@ -5406,7 +5417,7 @@ $as_echo "unsupported (${kernel})" >&6; }
      *)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${host_os})" >&5
 $as_echo "no (${host_os})" >&6; }
-	as_fn_error "Valgrind is operating system specific. Sorry." "$LINENO" 5
+	as_fn_error $? "Valgrind is operating system specific. Sorry." "$LINENO" 5
 	;;
 esac
 
@@ -5454,7 +5465,7 @@ rm -f core conftest.err conftest.$ac_objext \
 esac
 
 if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
-   as_fn_error "--enable-only32bit was specified but system does not support 32 bit builds" "$LINENO" 5
+   as_fn_error $? "--enable-only32bit was specified but system does not support 32 bit builds" "$LINENO" 5
 fi
 
 #----------------------------------------------------------------------------
@@ -5673,6 +5684,19 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; }
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu}-${host_os})" >&5
 $as_echo "ok (${host_cpu}-${host_os})" >&6; }
 	;;
+     s390x-linux)
+        VGCONF_ARCH_PRI="s390x"
+        VGCONF_ARCH_SEC=""
+        VGCONF_PLATFORM_PRI_CAPS="S390X_LINUX"
+        VGCONF_PLATFORM_SEC_CAPS=""
+        # we want to have the generated code close to the dispatcher
+        valt_load_address_pri_norml="0x401000000"
+        valt_load_address_pri_inner="0x410000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5
+$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; }
+        ;;
     *)
         VGCONF_ARCH_PRI="unknown"
         VGCONF_ARCH_SEC="unknown"
@@ -5684,7 +5708,7 @@ $as_echo "ok (${host_cpu}-${host_os})" >&6; }
         valt_load_address_sec_inner="0xUNSET"
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${ARCH_MAX}-${VGCONF_OS})" >&5
 $as_echo "no (${ARCH_MAX}-${VGCONF_OS})" >&6; }
-        as_fn_error "Valgrind is platform specific. Sorry. Please consider doing a port." "$LINENO" 5
+        as_fn_error $? "Valgrind is platform specific. Sorry. Please consider doing a port." "$LINENO" 5
         ;;
 esac
 
@@ -5740,6 +5764,14 @@ else
   VGCONF_ARCHS_INCLUDE_ARM_FALSE=
 fi
 
+ if test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
+  VGCONF_ARCHS_INCLUDE_S390X_TRUE=
+  VGCONF_ARCHS_INCLUDE_S390X_FALSE='#'
+else
+  VGCONF_ARCHS_INCLUDE_S390X_TRUE='#'
+  VGCONF_ARCHS_INCLUDE_S390X_FALSE=
+fi
+
 
 # Set up VGCONF_PLATFORMS_INCLUDE_.  Either one or two of these
 # become defined.
@@ -5785,6 +5817,15 @@ else
   VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_FALSE=
 fi
 
+ if test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xS390X_LINUX; then
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE=
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE='#'
+else
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE='#'
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE=
+fi
+
 
  if test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_AIX5; then
@@ -5838,7 +5879,8 @@ fi
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
-                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX ; then
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX; then
   VGCONF_OS_IS_LINUX_TRUE=
   VGCONF_OS_IS_LINUX_FALSE='#'
 else
@@ -5896,7 +5938,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for use as an inner Valgrind" >&5
 $as_echo_n "checking for use as an inner Valgrind... " >&6; }
-if test "${vg_cv_inner+set}" = set; then :
+if ${vg_cv_inner+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # Check whether --enable-inner was given.
@@ -5933,7 +5975,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -5982,7 +6024,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
@@ -5996,7 +6038,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -6048,7 +6090,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -6063,7 +6105,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6180,8 +6222,7 @@ do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6192,7 +6233,7 @@ done
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default"
-if test "x$ac_cv_header_features_h" = x""yes; then :
+if test "x$ac_cv_header_features_h" = xyes; then :
 
 fi
 
@@ -6355,6 +6396,26 @@ $as_echo "2.12 family" >&6; }
 
 $as_echo "#define GLIBC_2_12 1" >>confdefs.h
 
+	GENERATED_SUPP="glibc-2.X.supp ${GENERATED_SUPP}"
+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+	;;
+     2.13)
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.13 family" >&5
+$as_echo "2.13 family" >&6; }
+
+$as_echo "#define GLIBC_2_13 1" >>confdefs.h
+
+	GENERATED_SUPP="glibc-2.X.supp ${GENERATED_SUPP}"
+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+	;;
+     2.13)
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.13 family" >&5
+$as_echo "2.13 family" >&6; }
+
+$as_echo "#define GLIBC_2_13 1" >>confdefs.h
+
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
@@ -6379,9 +6440,9 @@ $as_echo "#define DARWIN_LIBC 1" >>confdefs.h
      *)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
 $as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
-	as_fn_error "Valgrind requires glibc version 2.2 - 2.12" "$LINENO" 5
-	as_fn_error "or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION" "$LINENO" 5
-	as_fn_error "or Darwin libc" "$LINENO" 5
+	as_fn_error $? "Valgrind requires glibc version 2.2 - 2.13" "$LINENO" 5
+	as_fn_error $? "or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION" "$LINENO" 5
+	as_fn_error $? "or Darwin libc" "$LINENO" 5
 	;;
 esac
 
@@ -6395,8 +6456,8 @@ esac
 DEFAULT_SUPP="xfree-4.supp ${DEFAULT_SUPP}"
 DEFAULT_SUPP="xfree-3.supp ${DEFAULT_SUPP}"
 
-# Add glibc and X11 suppressions for exp-ptrcheck
-DEFAULT_SUPP="exp-ptrcheck.supp ${DEFAULT_SUPP}"
+# Add glibc and X11 suppressions for exp-sgcheck
+DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
 
 
 #----------------------------------------------------------------------------
@@ -6701,6 +6762,9 @@ ac_have_altivec=yes
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
+$as_echo "#define HAS_ALTIVEC 1" >>confdefs.h
+
+
 else
 
 ac_have_altivec=no
@@ -6719,12 +6783,60 @@ else
   HAS_ALTIVEC_FALSE=
 fi
 
- if test x$ac_have_altivec = xyes; then
-  HAVE_ALTIVEC_H_TRUE=
-  HAVE_ALTIVEC_H_FALSE='#'
+
+
+# Check that both: the compiler supports -mvsx and that the assembler
+# understands VSX instructions.  If either of those doesn't work,
+# conclude that we can't do VSX.  NOTE: basically this is a kludge
+# in that it conflates two things that should be separate -- whether
+# the compiler understands the flag vs whether the assembler
+# understands the opcodes.  This really ought to be cleaned up
+# and done properly, like it is for x86/x86_64.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VSX" >&5
+$as_echo_n "checking for VSX... " >&6; }
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-mvsx"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include 
+
+int
+main ()
+{
+
+  vector unsigned int v;
+  __asm__ __volatile__("xsmaddadp 32, 32, 33" ::: "memory","cc");
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ac_have_vsx=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ac_have_vsx=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS=$safe_CFLAGS
+
+ if test x$ac_have_vsx = xyes; then
+  HAS_VSX_TRUE=
+  HAS_VSX_FALSE='#'
 else
-  HAVE_ALTIVEC_H_TRUE='#'
-  HAVE_ALTIVEC_H_FALSE=
+  HAS_VSX_TRUE='#'
+  HAS_VSX_FALSE=
 fi
 
 
@@ -7232,6 +7344,84 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 CFLAGS=$safe_CFLAGS
 
 
+# does this compiler support -Wno-nonnull ?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wno-nonnull" >&5
+$as_echo_n "checking if gcc accepts -Wno-nonnull... " >&6; }
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-nonnull"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+FLAG_W_NO_NONNULL=-Wno-nonnull
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -Wno-overflow ?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wno-overflow" >&5
+$as_echo_n "checking if gcc accepts -Wno-overflow... " >&6; }
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-overflow"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+FLAG_W_NO_OVERFLOW=-Wno-overflow
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS=$safe_CFLAGS
+
+
 # does this compiler support -Wno-uninitialized ?
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wno-uninitialized" >&5
@@ -7502,6 +7692,8 @@ $as_echo "#define HAVE_AS_PPC_MFTOCRF 1" >>confdefs.h
 fi
 
 
+CFLAGS=$safe_CFLAGS
+
 # does the x86/amd64 assembler understand SSE3 instructions?
 # Note, this doesn't generate a C-level symbol.  It generates a
 # automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's
@@ -7595,6 +7787,148 @@ fi
 
 
 
+# does the x86/amd64 assembler understand the PCLMULQDQ instruction?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_PCLMULQDQ_TESTS), used in test Makefile.am's
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'pclmulqdq'" >&5
+$as_echo_n "checking if x86/amd64 assembler supports 'pclmulqdq'... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  do {
+   __asm__ __volatile__(
+      "pclmulqdq \$17,%%xmm6,%%xmm7" : : : "xmm6", "xmm7" ); }
+  while (0)
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ac_have_as_pclmulqdq=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ac_have_as_pclmulqdq=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ if test x$ac_have_as_pclmulqdq = xyes; then
+  BUILD_PCLMULQDQ_TESTS_TRUE=
+  BUILD_PCLMULQDQ_TESTS_FALSE='#'
+else
+  BUILD_PCLMULQDQ_TESTS_TRUE='#'
+  BUILD_PCLMULQDQ_TESTS_FALSE=
+fi
+
+
+
+# does the x86/amd64 assembler understand the LZCNT instruction?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_LZCNT_TESTS), used in test Makefile.am's
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'lzcnt'" >&5
+$as_echo_n "checking if x86/amd64 assembler supports 'lzcnt'... " >&6; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  do {
+      __asm__ __volatile__("lzcnt %rax,%rax");
+  } while (0)
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+  ac_have_as_lzcnt=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+  ac_have_as_lzcnt=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ if test x$ac_have_as_lzcnt = xyes; then
+  BUILD_LZCNT_TESTS_TRUE=
+  BUILD_LZCNT_TESTS_FALSE='#'
+else
+  BUILD_LZCNT_TESTS_TRUE='#'
+  BUILD_LZCNT_TESTS_FALSE=
+fi
+
+
+
+# does the x86/amd64 assembler understand SSE 4.2 instructions?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_SSE42_TESTS), used in test Makefile.am's
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSE4.2" >&5
+$as_echo_n "checking if x86/amd64 assembler speaks SSE4.2... " >&6; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  do { long long int x;
+   __asm__ __volatile__(
+      "crc32q %%r15,%%r15" : : : "r15" ); }
+  while (0)
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ac_have_as_sse42=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ac_have_as_sse42=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ if test x$ac_have_as_sse42 = xyes; then
+  BUILD_SSE42_TESTS_TRUE=
+  BUILD_SSE42_TESTS_FALSE='#'
+else
+  BUILD_SSE42_TESTS_TRUE='#'
+  BUILD_SSE42_TESTS_FALSE=
+fi
+
+
+
+# XXX JRS 2010 Oct 13: what is this for?  For sure, we don't need this
+# when building the tool executables.  I think we should get rid of it.
+#
 # Check for TLS support in the compiler and linker
 if test "x${cross_compiling}" = "xno"; then
 # Native compilation: check whether running a program using TLS succeeds.
@@ -7602,7 +7936,7 @@ if test "x${cross_compiling}" = "xno"; then
 # succeeds but running programs using TLS fails.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TLS support" >&5
 $as_echo_n "checking for TLS support... " >&6; }
-if test "${vg_cv_tls+set}" = set; then :
+if ${vg_cv_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # Check whether --enable-tls was given.
@@ -7612,8 +7946,8 @@ else
   if test "$cross_compiling" = yes; then :
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run test program while cross compiling
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -7644,7 +7978,7 @@ else
 # Cross-compiling: check whether linking a program using TLS succeeds.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TLS support" >&5
 $as_echo_n "checking for TLS support... " >&6; }
-if test "${vg_cv_tls+set}" = set; then :
+if ${vg_cv_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # Check whether --enable-tls was given.
@@ -7689,7 +8023,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7817,8 +8151,7 @@ for ac_header in        \
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -7833,7 +8166,7 @@ done
 #----------------------------------------------------------------------------
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
 $as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if test "${ac_cv_type_uid_t+set}" = set; then :
+if ${ac_cv_type_uid_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7862,7 +8195,7 @@ $as_echo "#define gid_t int" >>confdefs.h
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = x""yes; then :
+if test "x$ac_cv_type_off_t" = xyes; then :
 
 else
 
@@ -7873,7 +8206,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = x""yes; then :
+if test "x$ac_cv_type_size_t" = xyes; then :
 
 else
 
@@ -7885,7 +8218,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then :
+if ${ac_cv_header_time+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7925,7 +8258,7 @@ fi
 #----------------------------------------------------------------------------
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
 $as_echo_n "checking for working memcmp... " >&6; }
-if test "${ac_cv_func_memcmp_working+set}" = set; then :
+if ${ac_cv_func_memcmp_working+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7993,8 +8326,7 @@ do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -8013,7 +8345,7 @@ done
 for ac_func in getpagesize
 do :
   ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = x""yes; then :
+if test "x$ac_cv_func_getpagesize" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETPAGESIZE 1
 _ACEOF
@@ -8023,7 +8355,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
 $as_echo_n "checking for working mmap... " >&6; }
-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then :
+if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8189,7 +8521,7 @@ rm -f conftest.mmap conftest.txt
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
 $as_echo_n "checking return type of signal handlers... " >&6; }
-if test "${ac_cv_type_signal+set}" = set; then :
+if ${ac_cv_type_signal+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8221,9 +8553,54 @@ _ACEOF
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
+$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_create+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_create ();
+int
+main ()
+{
+return pthread_create ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_create=yes
+else
+  ac_cv_lib_pthread_pthread_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+  LIBS="-lpthread $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
 $as_echo_n "checking for clock_gettime in -lrt... " >&6; }
-if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then :
+if ${ac_cv_lib_rt_clock_gettime+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8257,7 +8634,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
 $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
-if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then :
+if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBRT 1
 _ACEOF
@@ -8271,7 +8648,6 @@ for ac_func in      \
         clock_gettime\
         epoll_create \
         epoll_pwait  \
-        floor        \
         klogctl      \
         mallinfo     \
         memchr       \
@@ -8289,20 +8665,18 @@ for ac_func in      \
         semtimedop   \
         signalfd     \
         sigwaitinfo  \
-        syscall      \
         strchr       \
         strdup       \
         strpbrk      \
         strrchr      \
         strstr       \
-        timerfd      \
+        syscall      \
         utimensat    \
 
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -8362,7 +8736,8 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
      -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX ; then
   mflag_primary=$FLAG_M32
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
-       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX ; then
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
   mflag_primary=$FLAG_M64
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 ; then
   mflag_primary=-q32
@@ -8503,7 +8878,7 @@ fi
 #----------------------------------------------------------------------------
 # Other library checks
 #----------------------------------------------------------------------------
-# There now follow some tests for QtCore, Boost, and OpenMP.  These
+# There now follow some tests for Boost, and OpenMP.  These
 # tests are present because Drd has some regression tests that use
 # these packages.  All regression test programs all compiled only
 # for the primary target.  And so it is important that the configure
@@ -8519,416 +8894,6 @@ fi
 # NEEDED BY THE REGRESSION TEST PROGRAMS.
 
 
-# The test below verifies whether the QtCore package been installed.
-# This test works as follows:
-# - If pkg-config was not installed at the time autogen.sh was run,
-#   the definition of the PKG_CHECK_EXISTS() macro will not be found by
-#   autogen.sh. Augogen.sh will generate a configure script that prints
-#   a warning about pkg-config and proceeds as if Qt4 has not been installed.
-# - If pkg-config was installed at the time autogen.sh was run,
-#   the generated configure script will try to detect the presence of the
-#   Qt4 QtCore library by looking up compile and linker flags in the file
-#   called QtCore.pc.
-# - pkg-config settings can be overridden via the configure variables
-#   QTCORE_CFLAGS and QTCORE_LIBS (added by the pkg-config m4 macro's to the
-#   configure script -- see also ./configure --help).
-# - The QTCORE_CFLAGS and QTCORE_LIBS configure variables can be used even if
-#   the pkg-config executable is not present on the system on which the
-#   configure script is run.
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-fi
-
-if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QTCORE" >&5
-$as_echo_n "checking for QTCORE... " >&6; }
-
-if test -n "$QTCORE_CFLAGS"; then
-    pkg_cv_QTCORE_CFLAGS="$QTCORE_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QTCORE_CFLAGS=`$PKG_CONFIG --cflags "QtCore" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$QTCORE_LIBS"; then
-    pkg_cv_QTCORE_LIBS="$QTCORE_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QTCORE_LIBS=`$PKG_CONFIG --libs "QtCore" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        QTCORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "QtCore" 2>&1`
-        else
-	        QTCORE_PKG_ERRORS=`$PKG_CONFIG --print-errors "QtCore" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$QTCORE_PKG_ERRORS" >&5
-
-	as_fn_error "Package requirements (QtCore) were not met:
-
-$QTCORE_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables QTCORE_CFLAGS
-and QTCORE_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables QTCORE_CFLAGS
-and QTCORE_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see .
-See \`config.log' for more details." "$LINENO" 5; }
-else
-	QTCORE_CFLAGS=$pkg_cv_QTCORE_CFLAGS
-	QTCORE_LIBS=$pkg_cv_QTCORE_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-      # Paranoia: don't trust the result reported by pkg-config, but when
-      # pkg-config reports that QtCore has been found, verify whether linking
-      # programs with QtCore succeeds.
-      ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      safe_CXXFLAGS="${CXXFLAGS}"
-      CXXFLAGS="${QTCORE_CFLAGS} ${QTCORE_LIBS} $mflag_primary"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-QMutex Mutex;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_have_qtcore=yes
-else
-
-          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Although pkg-config detected Qt4, linking Qt4 programs fails. Skipping Qt4." >&5
-$as_echo "$as_me: WARNING: Although pkg-config detected Qt4, linking Qt4 programs fails. Skipping Qt4." >&2;}
-          ac_have_qtcore=no
-
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      CXXFLAGS="${safe_CXXFLAGS}"
-
-else
-
-      ac_have_qtcore=no
-
-
-fi
-
-
- if test x$ac_have_qtcore = xyes; then
-  HAVE_QTCORE_TRUE=
-  HAVE_QTCORE_FALSE='#'
-else
-  HAVE_QTCORE_TRUE='#'
-  HAVE_QTCORE_FALSE=
-fi
-
-
-
-# Test for QMutex::tryLock(int), which has been introduced in Qt 4.3.
-# See also http://doc.trolltech.com/4.3/qmutex.html.
-if test x$ac_have_qtcore = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt4 QMutex::tryLock(int)" >&5
-$as_echo_n "checking for Qt4 QMutex::tryLock(int)... " >&6; }
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-  safe_CXXFLAGS="${CXXFLAGS}"
-  CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    #include 
-
-int
-main ()
-{
-
-    QMutex M;
-    M.tryLock(1);
-    M.unlock();
-    return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_QTCORE_QMUTEX_TRYLOCK_INT 1" >>confdefs.h
-
-
-else
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CXXFLAGS="${safe_CXXFLAGS}"
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-
-# Test for QAtomicInt, which has been introduced in Qt 4.4.
-# See also http://doc.trolltech.com/4.4/qatomicint.html.
-if test x$ac_have_qtcore = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt4 QAtomicInt" >&5
-$as_echo_n "checking for Qt4 QAtomicInt... " >&6; }
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-  safe_CXXFLAGS="${CXXFLAGS}"
-  CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    #include 
-
-int
-main ()
-{
-
-    QAtomicInt I;
-    I.testAndSetOrdered(0, 1);
-    return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-    ac_have_qtcore_qatomicint=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_QTCORE_QATOMICINT 1" >>confdefs.h
-
-
-else
-
-    ac_have_qtcore_qatomicint=no
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CXXFLAGS="${safe_CXXFLAGS}"
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
- if test x$ac_have_qtcore_qatomicint = xyes; then
-  HAVE_QTCORE_QATOMICINT_TRUE=
-  HAVE_QTCORE_QATOMICINT_FALSE='#'
-else
-  HAVE_QTCORE_QATOMICINT_TRUE='#'
-  HAVE_QTCORE_QATOMICINT_FALSE=
-fi
-
-
-
-
 # Check whether the boost library 1.35 or later has been installed.
 # The Boost.Threads library has undergone a major rewrite in version 1.35.0.
 
@@ -8944,6 +8909,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 safe_CXXFLAGS=$CXXFLAGS
 CXXFLAGS="-lboost_thread-mt $mflag_primary"
 
+
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -9093,13 +9059,76 @@ else
 fi
 
 
+# does g++ have built-in functions for atomic memory access ?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports __sync_bool_compare_and_swap" >&5
+$as_echo_n "checking if g++ supports __sync_bool_compare_and_swap... " >&6; }
+
+safe_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="$mflag_primary"
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  int variable = 1;
+  return (__sync_bool_compare_and_swap(&variable, 1, 2)
+          && __sync_add_and_fetch(&variable, 1) ? 1 : 0)
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  ac_have_builtin_atomic_cxx=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_BUILTIN_ATOMIC_CXX 1" >>confdefs.h
+
+
+else
+
+  ac_have_builtin_atomic_cxx=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+CXXFLAGS=$safe_CXXFLAGS
+
+ if test x$ac_have_builtin_atomic_cxx = xyes; then
+  HAVE_BUILTIN_ATOMIC_CXX_TRUE=
+  HAVE_BUILTIN_ATOMIC_CXX_FALSE='#'
+else
+  HAVE_BUILTIN_ATOMIC_CXX_TRUE='#'
+  HAVE_BUILTIN_ATOMIC_CXX_FALSE=
+fi
+
 
 #----------------------------------------------------------------------------
 # Ok.  We're done checking.
 #----------------------------------------------------------------------------
 
 # Nb: VEX/Makefile is generated from Makefile.vex.in.
-ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/perf/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/perf/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/x86-linux/Makefile exp-ptrcheck/Makefile exp-ptrcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile"
+ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/perf/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/perf/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/s390x/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/x86-linux/Makefile exp-sgcheck/Makefile exp-sgcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-dhat/Makefile exp-dhat/tests/Makefile"
 
 ac_config_files="$ac_config_files coregrind/link_tool_exe_linux"
 
@@ -9173,10 +9202,21 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
+    if test "x$cache_file" != "x/dev/null"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -9192,6 +9232,7 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -9215,167 +9256,183 @@ else
 fi
 
 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error "conditional \"AMDEP\" was never defined.
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCCAS\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_ARCHS_INCLUDE_X86_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_X86_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_X86\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_X86\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_ARCHS_INCLUDE_AMD64_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_AMD64_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_AMD64\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_AMD64\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_ARCHS_INCLUDE_PPC32_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_PPC32_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_PPC32\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_PPC32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_ARCHS_INCLUDE_PPC64_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_PPC64_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_PPC64\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_PPC64\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_ARCHS_INCLUDE_ARM_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_ARM_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_ARM\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_ARM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${VGCONF_ARCHS_INCLUDE_S390X_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_S390X_FALSE}"; then
+  as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_S390X\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_ARM_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_ARM_LINUX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE}"; then
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_S390X_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_DARWIN\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_DARWIN\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_L4RE_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_L4RE_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_L4RE\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_L4RE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_OS_IS_LINUX_TRUE}" && test -z "${VGCONF_OS_IS_LINUX_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_OS_IS_LINUX\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_OS_IS_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_OS_IS_AIX5_TRUE}" && test -z "${VGCONF_OS_IS_AIX5_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_OS_IS_AIX5\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_OS_IS_AIX5\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_OS_IS_DARWIN_TRUE}" && test -z "${VGCONF_OS_IS_DARWIN_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_OS_IS_DARWIN\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_OS_IS_DARWIN\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_OS_IS_L4RE_TRUE}" && test -z "${VGCONF_OS_IS_L4RE_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_OS_IS_L4RE\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_OS_IS_L4RE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${VGCONF_HAVE_PLATFORM_SEC_TRUE}" && test -z "${VGCONF_HAVE_PLATFORM_SEC_FALSE}"; then
-  as_fn_error "conditional \"VGCONF_HAVE_PLATFORM_SEC\" was never defined.
+  as_fn_error $? "conditional \"VGCONF_HAVE_PLATFORM_SEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAS_ALTIVEC_TRUE}" && test -z "${HAS_ALTIVEC_FALSE}"; then
-  as_fn_error "conditional \"HAS_ALTIVEC\" was never defined.
+  as_fn_error $? "conditional \"HAS_ALTIVEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_ALTIVEC_H_TRUE}" && test -z "${HAVE_ALTIVEC_H_FALSE}"; then
-  as_fn_error "conditional \"HAVE_ALTIVEC_H\" was never defined.
+if test -z "${HAS_VSX_TRUE}" && test -z "${HAS_VSX_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_VSX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE}" && test -z "${HAVE_PTHREAD_CREATE_GLIBC_2_0_FALSE}"; then
-  as_fn_error "conditional \"HAVE_PTHREAD_CREATE_GLIBC_2_0\" was never defined.
+  as_fn_error $? "conditional \"HAVE_PTHREAD_CREATE_GLIBC_2_0\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_SSE3_TESTS_TRUE}" && test -z "${BUILD_SSE3_TESTS_FALSE}"; then
-  as_fn_error "conditional \"BUILD_SSE3_TESTS\" was never defined.
+  as_fn_error $? "conditional \"BUILD_SSE3_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_SSSE3_TESTS_TRUE}" && test -z "${BUILD_SSSE3_TESTS_FALSE}"; then
-  as_fn_error "conditional \"BUILD_SSSE3_TESTS\" was never defined.
+  as_fn_error $? "conditional \"BUILD_SSSE3_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_PCLMULQDQ_TESTS_TRUE}" && test -z "${BUILD_PCLMULQDQ_TESTS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_PCLMULQDQ_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_LZCNT_TESTS_TRUE}" && test -z "${BUILD_LZCNT_TESTS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_LZCNT_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_SSE42_TESTS_TRUE}" && test -z "${BUILD_SSE42_TESTS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_SSE42_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PTHREAD_BARRIER_TRUE}" && test -z "${HAVE_PTHREAD_BARRIER_FALSE}"; then
-  as_fn_error "conditional \"HAVE_PTHREAD_BARRIER\" was never defined.
+  as_fn_error $? "conditional \"HAVE_PTHREAD_BARRIER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PTHREAD_MUTEX_TIMEDLOCK_TRUE}" && test -z "${HAVE_PTHREAD_MUTEX_TIMEDLOCK_FALSE}"; then
-  as_fn_error "conditional \"HAVE_PTHREAD_MUTEX_TIMEDLOCK\" was never defined.
+  as_fn_error $? "conditional \"HAVE_PTHREAD_MUTEX_TIMEDLOCK\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PTHREAD_SPINLOCK_TRUE}" && test -z "${HAVE_PTHREAD_SPINLOCK_FALSE}"; then
-  as_fn_error "conditional \"HAVE_PTHREAD_SPINLOCK\" was never defined.
+  as_fn_error $? "conditional \"HAVE_PTHREAD_SPINLOCK\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_MPIWRAP_PRI_TRUE}" && test -z "${BUILD_MPIWRAP_PRI_FALSE}"; then
-  as_fn_error "conditional \"BUILD_MPIWRAP_PRI\" was never defined.
+  as_fn_error $? "conditional \"BUILD_MPIWRAP_PRI\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_MPIWRAP_SEC_TRUE}" && test -z "${BUILD_MPIWRAP_SEC_FALSE}"; then
-  as_fn_error "conditional \"BUILD_MPIWRAP_SEC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_QTCORE_TRUE}" && test -z "${HAVE_QTCORE_FALSE}"; then
-  as_fn_error "conditional \"HAVE_QTCORE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_QTCORE_QATOMICINT_TRUE}" && test -z "${HAVE_QTCORE_QATOMICINT_FALSE}"; then
-  as_fn_error "conditional \"HAVE_QTCORE_QATOMICINT\" was never defined.
+  as_fn_error $? "conditional \"BUILD_MPIWRAP_SEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BOOST_1_35_TRUE}" && test -z "${HAVE_BOOST_1_35_FALSE}"; then
-  as_fn_error "conditional \"HAVE_BOOST_1_35\" was never defined.
+  as_fn_error $? "conditional \"HAVE_BOOST_1_35\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_OPENMP_TRUE}" && test -z "${HAVE_OPENMP_FALSE}"; then
-  as_fn_error "conditional \"HAVE_OPENMP\" was never defined.
+  as_fn_error $? "conditional \"HAVE_OPENMP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BUILTIN_ATOMIC_TRUE}" && test -z "${HAVE_BUILTIN_ATOMIC_FALSE}"; then
-  as_fn_error "conditional \"HAVE_BUILTIN_ATOMIC\" was never defined.
+  as_fn_error $? "conditional \"HAVE_BUILTIN_ATOMIC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_BUILTIN_ATOMIC_CXX_TRUE}" && test -z "${HAVE_BUILTIN_ATOMIC_CXX_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_BUILTIN_ATOMIC_CXX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -9476,6 +9533,7 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9521,19 +9579,19 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -9729,7 +9787,7 @@ $as_echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -9782,8 +9840,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Valgrind $as_me 3.6.0.SVN, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+This file was extended by Valgrind $as_me 3.7.0.SVN, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -9848,11 +9906,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Valgrind config.status 3.6.0.SVN
-configured by $0, generated by GNU Autoconf 2.65,
+Valgrind config.status 3.7.0.SVN
+configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -9870,11 +9928,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -9896,6 +9959,7 @@ do
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -9908,7 +9972,7 @@ do
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error "ambiguous option: \`$1'
+    as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -9917,7 +9981,7 @@ Try \`$0 --help' for more information.";;
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
+  -*) as_fn_error $? "unrecognized option: \`$1'
 Try \`$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
@@ -9983,6 +10047,7 @@ do
     "tests/vg_regtest") CONFIG_FILES="$CONFIG_FILES tests/vg_regtest" ;;
     "perf/Makefile") CONFIG_FILES="$CONFIG_FILES perf/Makefile" ;;
     "perf/vg_perf") CONFIG_FILES="$CONFIG_FILES perf/vg_perf" ;;
+    "gdbserver_tests/Makefile") CONFIG_FILES="$CONFIG_FILES gdbserver_tests/Makefile" ;;
     "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
     "auxprogs/Makefile") CONFIG_FILES="$CONFIG_FILES auxprogs/Makefile" ;;
     "mpi/Makefile") CONFIG_FILES="$CONFIG_FILES mpi/Makefile" ;;
@@ -9995,6 +10060,8 @@ do
     "memcheck/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/darwin/Makefile" ;;
     "memcheck/tests/amd64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-linux/Makefile" ;;
     "memcheck/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-linux/Makefile" ;;
+    "memcheck/tests/ppc32/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/ppc32/Makefile" ;;
+    "memcheck/tests/ppc64/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/ppc64/Makefile" ;;
     "memcheck/perf/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/perf/Makefile" ;;
     "cachegrind/Makefile") CONFIG_FILES="$CONFIG_FILES cachegrind/Makefile" ;;
     "cachegrind/tests/Makefile") CONFIG_FILES="$CONFIG_FILES cachegrind/tests/Makefile" ;;
@@ -10020,11 +10087,12 @@ do
     "none/tests/ppc64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/ppc64/Makefile" ;;
     "none/tests/x86/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/x86/Makefile" ;;
     "none/tests/arm/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/arm/Makefile" ;;
+    "none/tests/s390x/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/s390x/Makefile" ;;
     "none/tests/linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/linux/Makefile" ;;
     "none/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/darwin/Makefile" ;;
     "none/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/x86-linux/Makefile" ;;
-    "exp-ptrcheck/Makefile") CONFIG_FILES="$CONFIG_FILES exp-ptrcheck/Makefile" ;;
-    "exp-ptrcheck/tests/Makefile") CONFIG_FILES="$CONFIG_FILES exp-ptrcheck/tests/Makefile" ;;
+    "exp-sgcheck/Makefile") CONFIG_FILES="$CONFIG_FILES exp-sgcheck/Makefile" ;;
+    "exp-sgcheck/tests/Makefile") CONFIG_FILES="$CONFIG_FILES exp-sgcheck/tests/Makefile" ;;
     "drd/Makefile") CONFIG_FILES="$CONFIG_FILES drd/Makefile" ;;
     "drd/scripts/download-and-build-splash2") CONFIG_FILES="$CONFIG_FILES drd/scripts/download-and-build-splash2" ;;
     "drd/tests/Makefile") CONFIG_FILES="$CONFIG_FILES drd/tests/Makefile" ;;
@@ -10034,12 +10102,14 @@ do
     "exp-bbv/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES exp-bbv/tests/x86-linux/Makefile" ;;
     "exp-bbv/tests/amd64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES exp-bbv/tests/amd64-linux/Makefile" ;;
     "exp-bbv/tests/ppc32-linux/Makefile") CONFIG_FILES="$CONFIG_FILES exp-bbv/tests/ppc32-linux/Makefile" ;;
+    "exp-dhat/Makefile") CONFIG_FILES="$CONFIG_FILES exp-dhat/Makefile" ;;
+    "exp-dhat/tests/Makefile") CONFIG_FILES="$CONFIG_FILES exp-dhat/tests/Makefile" ;;
     "coregrind/link_tool_exe_linux") CONFIG_FILES="$CONFIG_FILES coregrind/link_tool_exe_linux" ;;
     "coregrind/link_tool_exe_darwin") CONFIG_FILES="$CONFIG_FILES coregrind/link_tool_exe_darwin" ;;
     "coregrind/link_tool_exe_aix5") CONFIG_FILES="$CONFIG_FILES coregrind/link_tool_exe_aix5" ;;
     "coregrind/link_tool_exe_l4re") CONFIG_FILES="$CONFIG_FILES coregrind/link_tool_exe_l4re" ;;
 
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -10062,9 +10132,10 @@ fi
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
   trap 'as_fn_exit 1' 1 2 13 15
 }
@@ -10072,12 +10143,13 @@ $debug ||
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -10094,12 +10166,12 @@ if test "x$ac_cr" = x; then
 fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\r'
+  ac_cs_awk_cr='\\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -10108,18 +10180,18 @@ _ACEOF
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -10127,7 +10199,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -10175,7 +10247,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = ""
 
@@ -10207,21 +10279,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
@@ -10233,7 +10313,7 @@ fi # test -n "$CONFIG_FILES"
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -10245,11 +10325,11 @@ _ACEOF
 # handling of long lines.
 ac_delim='%!_!# '
 for ac_last_try in false false :; do
-  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -10334,7 +10414,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -10347,7 +10427,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -10366,7 +10446,7 @@ do
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 	 # because $ac_f cannot contain `:'.
@@ -10375,7 +10455,7 @@ do
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
@@ -10401,8 +10481,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -10538,23 +10618,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
 s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -10563,21 +10644,21 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
   if test x"$ac_file" != x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-	|| as_fn_error "could not create $ac_file" "$LINENO" 5
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error "could not create -" "$LINENO" 5
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -10731,7 +10812,7 @@ _ACEOF
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -10752,7 +10833,7 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit $?
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure.in
index 378ea13c4..c85187cc5 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/configure.in
@@ -8,7 +8,7 @@
 ##------------------------------------------------------------##
 
 # Process this file with autoconf to produce a configure script.
-AC_INIT(Valgrind, 3.6.0.SVN, valgrind-users@lists.sourceforge.net)
+AC_INIT(Valgrind, 3.7.0.SVN, valgrind-users@lists.sourceforge.net)
 AC_CONFIG_SRCDIR(coregrind/m_main.c)
 AM_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE([foreign])
@@ -158,6 +158,11 @@ case "${host_cpu}" in
         esac
         ;;
 
+     s390x)
+        AC_MSG_RESULT([ok (${host_cpu})])
+        ARCH_MAX="s390x"
+        ;;
+
      armv7*)
 	AC_MSG_RESULT([ok (${host_cpu})])
 	ARCH_MAX="arm"
@@ -536,6 +541,18 @@ case "$ARCH_MAX-$VGCONF_OS" in
         valt_load_address_sec_inner="0xUNSET"
 	AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
 	;;
+     s390x-linux)
+        VGCONF_ARCH_PRI="s390x"
+        VGCONF_ARCH_SEC=""
+        VGCONF_PLATFORM_PRI_CAPS="S390X_LINUX"
+        VGCONF_PLATFORM_SEC_CAPS=""
+        # we want to have the generated code close to the dispatcher
+        valt_load_address_pri_norml="0x401000000"
+        valt_load_address_pri_inner="0x410000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+        ;;
     *)
         VGCONF_ARCH_PRI="unknown"
         VGCONF_ARCH_SEC="unknown"
@@ -572,6 +589,8 @@ AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC64,
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5 )
 AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_ARM,   
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_S390X,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX )
 
 # Set up VGCONF_PLATFORMS_INCLUDE_.  Either one or two of these
 # become defined.
@@ -587,6 +606,9 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX,
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX)
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_ARM_LINUX, 
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_S390X_LINUX,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xS390X_LINUX)
 
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5, 
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \ 
@@ -611,7 +633,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX,
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
-                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX)
 AM_CONDITIONAL(VGCONF_OS_IS_AIX5,
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5)
@@ -769,6 +792,20 @@ case "${GLIBC_VERSION}" in
      2.12)
 	AC_MSG_RESULT(2.12 family)
 	AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x])
+	GENERATED_SUPP="glibc-2.X.supp ${GENERATED_SUPP}"
+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+	;;
+     2.13)
+	AC_MSG_RESULT(2.13 family)
+	AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x])
+	GENERATED_SUPP="glibc-2.X.supp ${GENERATED_SUPP}"
+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+	;;
+     2.13)
+	AC_MSG_RESULT(2.13 family)
+	AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x])
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
@@ -786,7 +823,7 @@ case "${GLIBC_VERSION}" in
 
      *)
 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.12])
+	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.13])
 	AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
 	AC_MSG_ERROR([or Darwin libc])
 	;;
@@ -802,8 +839,8 @@ AC_SUBST(GLIBC_VERSION)
 DEFAULT_SUPP="xfree-4.supp ${DEFAULT_SUPP}"
 DEFAULT_SUPP="xfree-3.supp ${DEFAULT_SUPP}"
 
-# Add glibc and X11 suppressions for exp-ptrcheck
-DEFAULT_SUPP="exp-ptrcheck.supp ${DEFAULT_SUPP}"
+# Add glibc and X11 suppressions for exp-sgcheck
+DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
 
 
 #----------------------------------------------------------------------------
@@ -967,6 +1004,8 @@ AC_TRY_COMPILE(
 [
 ac_have_altivec=yes
 AC_MSG_RESULT([yes])
+AC_DEFINE([HAS_ALTIVEC], 1,
+          [Define to 1 if gcc/as can do Altivec.])
 ], [
 ac_have_altivec=no
 AC_MSG_RESULT([no])
@@ -974,7 +1013,38 @@ AC_MSG_RESULT([no])
 CFLAGS=$safe_CFLAGS
 
 AM_CONDITIONAL([HAS_ALTIVEC], [test x$ac_have_altivec = xyes])
-AM_CONDITIONAL([HAVE_ALTIVEC_H], [test x$ac_have_altivec = xyes])
+
+
+# Check that both: the compiler supports -mvsx and that the assembler
+# understands VSX instructions.  If either of those doesn't work,
+# conclude that we can't do VSX.  NOTE: basically this is a kludge
+# in that it conflates two things that should be separate -- whether
+# the compiler understands the flag vs whether the assembler 
+# understands the opcodes.  This really ought to be cleaned up
+# and done properly, like it is for x86/x86_64.
+
+AC_MSG_CHECKING([for VSX])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-mvsx"
+
+AC_TRY_COMPILE(
+[
+#include 
+], [
+  vector unsigned int v;
+  __asm__ __volatile__("xsmaddadp 32, 32, 33" ::: "memory","cc");
+],
+[
+ac_have_vsx=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_vsx=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AM_CONDITIONAL(HAS_VSX, test x$ac_have_vsx = xyes)
 
 
 # Check for pthread_create@GLIBC2.0
@@ -1259,6 +1329,52 @@ AC_MSG_RESULT([no])
 CFLAGS=$safe_CFLAGS
 
 
+# does this compiler support -Wno-nonnull ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-nonnull])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-nonnull"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_NONNULL], [-Wno-nonnull])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_NONNULL], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -Wno-overflow ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-overflow])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-overflow"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_OVERFLOW], [-Wno-overflow])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_OVERFLOW], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
 # does this compiler support -Wno-uninitialized ?
 
 AC_MSG_CHECKING([if gcc accepts -Wno-uninitialized])
@@ -1406,6 +1522,8 @@ if test x$ac_have_as_ppc_mftocrf = xyes ; then
 fi
 
 
+CFLAGS=$safe_CFLAGS
+
 # does the x86/amd64 assembler understand SSE3 instructions?
 # Note, this doesn't generate a C-level symbol.  It generates a
 # automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's
@@ -1449,6 +1567,73 @@ AC_MSG_RESULT([no])
 AM_CONDITIONAL(BUILD_SSSE3_TESTS, test x$ac_have_as_ssse3 = xyes)
 
 
+# does the x86/amd64 assembler understand the PCLMULQDQ instruction?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_PCLMULQDQ_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'pclmulqdq'])
+AC_TRY_COMPILE(, [
+  do {
+   __asm__ __volatile__(
+      "pclmulqdq \$17,%%xmm6,%%xmm7" : : : "xmm6", "xmm7" ); }
+  while (0)
+],
+[
+ac_have_as_pclmulqdq=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_pclmulqdq=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_PCLMULQDQ_TESTS, test x$ac_have_as_pclmulqdq = xyes)
+
+
+# does the x86/amd64 assembler understand the LZCNT instruction?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_LZCNT_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'lzcnt'])
+
+AC_TRY_COMPILE([], [
+  do { 		 
+      __asm__ __volatile__("lzcnt %rax,%rax");
+  } while (0)
+],
+[
+  ac_have_as_lzcnt=yes
+  AC_MSG_RESULT([yes])
+], [
+  ac_have_as_lzcnt=no
+  AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL([BUILD_LZCNT_TESTS], [test x$ac_have_as_lzcnt = xyes])
+
+
+# does the x86/amd64 assembler understand SSE 4.2 instructions?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_SSE42_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks SSE4.2])
+
+AC_TRY_COMPILE(, [
+  do { long long int x; 
+   __asm__ __volatile__(
+      "crc32q %%r15,%%r15" : : : "r15" ); }
+  while (0)
+],
+[
+ac_have_as_sse42=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_sse42=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_SSE42_TESTS, test x$ac_have_as_sse42 = xyes)
+
+
+# XXX JRS 2010 Oct 13: what is this for?  For sure, we don't need this
+# when building the tool executables.  I think we should get rid of it.
+#
 # Check for TLS support in the compiler and linker
 if test "x${cross_compiling}" = "xno"; then
 # Native compilation: check whether running a program using TLS succeeds.
@@ -1514,13 +1699,13 @@ AC_FUNC_MEMCMP
 AC_FUNC_MMAP
 AC_TYPE_SIGNAL
 
+AC_CHECK_LIB([pthread], [pthread_create])
 AC_CHECK_LIB([rt], [clock_gettime])
 
 AC_CHECK_FUNCS([     \
         clock_gettime\
         epoll_create \
         epoll_pwait  \
-        floor        \
         klogctl      \
         mallinfo     \
         memchr       \
@@ -1538,13 +1723,12 @@ AC_CHECK_FUNCS([     \
         semtimedop   \
         signalfd     \
         sigwaitinfo  \
-        syscall      \
         strchr       \
         strdup       \
         strpbrk      \
         strrchr      \
         strstr       \
-        timerfd      \
+        syscall      \
         utimensat    \
         ])
 
@@ -1581,7 +1765,8 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
      -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX ; then
   mflag_primary=$FLAG_M32
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
-       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX ; then
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
   mflag_primary=$FLAG_M64
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 ; then
   mflag_primary=-q32
@@ -1665,7 +1850,7 @@ AM_CONDITIONAL(BUILD_MPIWRAP_SEC, test x$ac_have_mpi2_sec = xyes)
 #----------------------------------------------------------------------------
 # Other library checks
 #----------------------------------------------------------------------------
-# There now follow some tests for QtCore, Boost, and OpenMP.  These
+# There now follow some tests for Boost, and OpenMP.  These
 # tests are present because Drd has some regression tests that use
 # these packages.  All regression test programs all compiled only
 # for the primary target.  And so it is important that the configure
@@ -1681,119 +1866,6 @@ AM_CONDITIONAL(BUILD_MPIWRAP_SEC, test x$ac_have_mpi2_sec = xyes)
 # NEEDED BY THE REGRESSION TEST PROGRAMS.
 
 
-# The test below verifies whether the QtCore package been installed.
-# This test works as follows:
-# - If pkg-config was not installed at the time autogen.sh was run,
-#   the definition of the PKG_CHECK_EXISTS() macro will not be found by
-#   autogen.sh. Augogen.sh will generate a configure script that prints
-#   a warning about pkg-config and proceeds as if Qt4 has not been installed.
-# - If pkg-config was installed at the time autogen.sh was run,
-#   the generated configure script will try to detect the presence of the
-#   Qt4 QtCore library by looking up compile and linker flags in the file
-#   called QtCore.pc.
-# - pkg-config settings can be overridden via the configure variables
-#   QTCORE_CFLAGS and QTCORE_LIBS (added by the pkg-config m4 macro's to the
-#   configure script -- see also ./configure --help).
-# - The QTCORE_CFLAGS and QTCORE_LIBS configure variables can be used even if
-#   the pkg-config executable is not present on the system on which the
-#   configure script is run.
-
-ifdef(
-  [PKG_CHECK_EXISTS],
-  [PKG_CHECK_EXISTS(
-    [QtCore],
-    [
-      PKG_CHECK_MODULES([QTCORE], [QtCore])
-      # Paranoia: don't trust the result reported by pkg-config, but when
-      # pkg-config reports that QtCore has been found, verify whether linking
-      # programs with QtCore succeeds.
-      AC_LANG(C++)
-      safe_CXXFLAGS="${CXXFLAGS}"
-      CXXFLAGS="${QTCORE_CFLAGS} ${QTCORE_LIBS} $mflag_primary"
-      AC_TRY_LINK(
-        [#include ],
-        [QMutex Mutex;],
-        [ac_have_qtcore=yes],
-        [
-          AC_MSG_WARN([Although pkg-config detected Qt4, linking Qt4 programs fails. Skipping Qt4.])
-          ac_have_qtcore=no
-        ]
-        )
-      CXXFLAGS="${safe_CXXFLAGS}"
-    ],
-    [
-      ac_have_qtcore=no
-    ]
-    )
-  ],
-  AC_MSG_WARN([pkg-config has not been installed or is too old.])
-  AC_MSG_WARN([Detection of Qt4 will be skipped.])
-  [ac_have_qtcore=no]
-)
-
-AM_CONDITIONAL([HAVE_QTCORE], [test x$ac_have_qtcore = xyes])
-
-
-# Test for QMutex::tryLock(int), which has been introduced in Qt 4.3.
-# See also http://doc.trolltech.com/4.3/qmutex.html.
-if test x$ac_have_qtcore = xyes; then
-  AC_MSG_CHECKING([for Qt4 QMutex::tryLock(int)])
-  AC_LANG(C++)
-  safe_CXXFLAGS="${CXXFLAGS}"
-  CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
-  AC_TRY_COMPILE([
-    #include 
-  ],
-  [
-    QMutex M;
-    M.tryLock(1);
-    M.unlock();
-    return 0;
-  ],
-  [
-    AC_MSG_RESULT([yes])
-    AC_DEFINE([HAVE_QTCORE_QMUTEX_TRYLOCK_INT], [1], [Define to 1 if the installed version of Qt4 provides QMutex::tryLock(int).])
-  ],
-  [
-    AC_MSG_RESULT([no])
-  ])
-  CXXFLAGS="${safe_CXXFLAGS}"
-  AC_LANG(C)
-fi
-
-
-# Test for QAtomicInt, which has been introduced in Qt 4.4.
-# See also http://doc.trolltech.com/4.4/qatomicint.html.
-if test x$ac_have_qtcore = xyes; then
-  AC_MSG_CHECKING([for Qt4 QAtomicInt])
-  AC_LANG(C++)
-  safe_CXXFLAGS="${CXXFLAGS}"
-  CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
-  AC_TRY_COMPILE([
-    #include 
-  ],
-  [
-    QAtomicInt I;
-    I.testAndSetOrdered(0, 1);
-    return 0;
-  ],
-  [
-    ac_have_qtcore_qatomicint=yes
-    AC_MSG_RESULT([yes])
-    AC_DEFINE([HAVE_QTCORE_QATOMICINT], [1], [Define to 1 if the installed version of Qt4 provides QAtomicInt.])
-  ],
-  [
-    ac_have_qtcore_qatomicint=no
-    AC_MSG_RESULT([no])
-  ])
-  CXXFLAGS="${safe_CXXFLAGS}"
-  AC_LANG(C)
-fi
-
-AM_CONDITIONAL([HAVE_QTCORE_QATOMICINT], [test x$ac_have_qtcore_qatomicint = xyes])
-
-
-
 # Check whether the boost library 1.35 or later has been installed.
 # The Boost.Threads library has undergone a major rewrite in version 1.35.0.
 
@@ -1803,8 +1875,7 @@ AC_LANG(C++)
 safe_CXXFLAGS=$CXXFLAGS
 CXXFLAGS="-lboost_thread-mt $mflag_primary"
 
-AC_LINK_IFELSE(
-[
+AC_LINK_IFELSE([AC_LANG_SOURCE([
 #include 
 static void thread_func(void)
 { }
@@ -1813,7 +1884,7 @@ int main(int argc, char** argv)
   boost::thread t(thread_func);
   return 0;
 }
-],
+])],
 [
 ac_have_boost_1_35=yes
 AC_SUBST([BOOST_CFLAGS], [])
@@ -1838,15 +1909,14 @@ AC_MSG_CHECKING([for OpenMP])
 safe_CFLAGS=$CFLAGS
 CFLAGS="-fopenmp $mflag_primary"
 
-AC_LINK_IFELSE(
-[
+AC_LINK_IFELSE([AC_LANG_SOURCE([
 #include  
 int main(int argc, char** argv)
 {
   omp_set_dynamic(0);
   return 0;
 }
-],
+])],
 [
 ac_have_openmp=yes
 AC_MSG_RESULT([yes])
@@ -1874,7 +1944,7 @@ AC_TRY_LINK(,
 [
   ac_have_builtin_atomic=yes
   AC_MSG_RESULT([yes])
-  AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Define to 1 if gcc supports __sync_bool_compare_and_swap() a.o.])
+  AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Define to 1 if gcc supports __sync_bool_compare_and_swap() and __sync_add_and_fetch()])
 ],
 [
   ac_have_builtin_atomic=no
@@ -1885,6 +1955,33 @@ CFLAGS=$safe_CFLAGS
 
 AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC], [test x$ac_have_builtin_atomic = xyes])
 
+# does g++ have built-in functions for atomic memory access ?
+AC_MSG_CHECKING([if g++ supports __sync_bool_compare_and_swap])
+
+safe_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="$mflag_primary"
+
+AC_LANG_PUSH(C++)
+AC_TRY_LINK(,
+[
+  int variable = 1;
+  return (__sync_bool_compare_and_swap(&variable, 1, 2)
+          && __sync_add_and_fetch(&variable, 1) ? 1 : 0)
+],
+[
+  ac_have_builtin_atomic_cxx=yes
+  AC_MSG_RESULT([yes])
+  AC_DEFINE(HAVE_BUILTIN_ATOMIC_CXX, 1, [Define to 1 if g++ supports __sync_bool_compare_and_swap() and __sync_add_and_fetch()])
+],
+[
+  ac_have_builtin_atomic_cxx=no
+  AC_MSG_RESULT([no])
+])
+AC_LANG_POP(C++)
+
+CXXFLAGS=$safe_CXXFLAGS
+
+AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC_CXX], [test x$ac_have_builtin_atomic_cxx = xyes])
 
 #----------------------------------------------------------------------------
 # Ok.  We're done checking.
@@ -1902,6 +1999,7 @@ AC_CONFIG_FILES([
    tests/vg_regtest 
    perf/Makefile 
    perf/vg_perf
+   gdbserver_tests/Makefile
    include/Makefile 
    auxprogs/Makefile
    mpi/Makefile
@@ -1914,6 +2012,8 @@ AC_CONFIG_FILES([
    memcheck/tests/darwin/Makefile
    memcheck/tests/amd64-linux/Makefile
    memcheck/tests/x86-linux/Makefile
+   memcheck/tests/ppc32/Makefile
+   memcheck/tests/ppc64/Makefile
    memcheck/perf/Makefile
    cachegrind/Makefile
    cachegrind/tests/Makefile
@@ -1939,11 +2039,12 @@ AC_CONFIG_FILES([
    none/tests/ppc64/Makefile
    none/tests/x86/Makefile
    none/tests/arm/Makefile
+   none/tests/s390x/Makefile
    none/tests/linux/Makefile
    none/tests/darwin/Makefile
    none/tests/x86-linux/Makefile
-   exp-ptrcheck/Makefile
-   exp-ptrcheck/tests/Makefile
+   exp-sgcheck/Makefile
+   exp-sgcheck/tests/Makefile
    drd/Makefile
    drd/scripts/download-and-build-splash2
    drd/tests/Makefile
@@ -1953,6 +2054,8 @@ AC_CONFIG_FILES([
    exp-bbv/tests/x86-linux/Makefile
    exp-bbv/tests/amd64-linux/Makefile
    exp-bbv/tests/ppc32-linux/Makefile
+   exp-dhat/Makefile
+   exp-dhat/tests/Makefile
 ])
 AC_CONFIG_FILES([coregrind/link_tool_exe_linux],
                 [chmod +x coregrind/link_tool_exe_linux])
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.am
index c5a876c61..a5484c423 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.am
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.am
@@ -34,6 +34,7 @@ bin_PROGRAMS =
 else
 bin_PROGRAMS = \
 	valgrind \
+	vgdb \
 	no_op_client_for_valgrind
 endif
 
@@ -63,6 +64,15 @@ if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
 valgrind_LDFLAGS   += -Wl,-read_only_relocs -Wl,suppress
 endif
 
+vgdb_SOURCES = vgdb.c
+vgdb_CPPFLAGS  = $(AM_CPPFLAGS_PRI)
+vgdb_CFLAGS    = $(AM_CFLAGS_PRI)
+vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI)
+vgdb_LDFLAGS   = $(AM_CFLAGS_PRI) -lpthread
+if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
+vgdb_LDFLAGS   += -Wl,-read_only_relocs -Wl,suppress
+endif
+
 no_op_client_for_valgrind_SOURCES = no_op_client_for_valgrind.c
 no_op_client_for_valgrind_CPPFLAGS  = $(AM_CPPFLAGS_PRI)
 no_op_client_for_valgrind_CFLAGS    = $(AM_CFLAGS_PRI)
@@ -152,6 +162,7 @@ noinst_HEADERS = \
 	pub_core_dispatch_asm.h	\
 	pub_core_errormgr.h	\
 	pub_core_execontext.h	\
+	pub_core_gdbserver.h	\
 	pub_core_hashtable.h	\
 	pub_core_initimg.h	\
 	pub_core_libcbase.h	\
@@ -159,6 +170,7 @@ noinst_HEADERS = \
 	pub_core_libcfile.h	\
 	pub_core_libcprint.h	\
 	pub_core_libcproc.h	\
+	pub_core_libcsetjmp.h	\
 	pub_core_libcsignal.h	\
 	pub_core_mach.h		\
 	pub_core_machine.h	\
@@ -206,6 +218,12 @@ noinst_HEADERS = \
 	m_demangle/demangle.h	\
 	m_demangle/safe-ctype.h \
 	m_demangle/vg_libciface.h \
+	m_gdbserver/regcache.h \
+	m_gdbserver/regdef.h \
+	m_gdbserver/server.h \
+	m_gdbserver/target.h \
+	m_gdbserver/valgrind_low.h \
+	m_gdbserver/gdb/signals.h \
 	m_initimg/priv_initimg_pathscan.h \
 	m_initimg/simple_huffman.c \
 	m_scheduler/priv_sema.h \
@@ -244,6 +262,7 @@ COREGRIND_SOURCES_COMMON = \
 	m_libcfile.c \
 	m_libcprint.c \
 	m_libcproc.c \
+	m_libcsetjmp.c \
 	m_libcsignal.c \
 	m_machine.c \
 	m_main.c \
@@ -295,10 +314,28 @@ COREGRIND_SOURCES_COMMON = \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
 	m_dispatch/dispatch-amd64-darwin.S \
+	m_gdbserver/m_gdbserver.c \
+	m_gdbserver/inferiors.c \
+	m_gdbserver/m_gdbserver.c \
+	m_gdbserver/regcache.c \
+	m_gdbserver/remote-utils.c \
+	m_gdbserver/server.c \
+	m_gdbserver/signals.c \
+	m_gdbserver/target.c \
+	m_gdbserver/utils.c \
+	m_gdbserver/valgrind-low.c \
+	m_gdbserver/valgrind-low-x86.c \
+	m_gdbserver/valgrind-low-amd64.c \
+	m_gdbserver/valgrind-low-arm.c \
+	m_gdbserver/valgrind-low-ppc32.c \
+	m_gdbserver/valgrind-low-ppc64.c \
+	m_gdbserver/valgrind-low-s390x.c \
+	m_gdbserver/version.c \
 	m_initimg/initimg-linux.c \
 	m_initimg/initimg-aix5.c \
 	m_initimg/initimg-darwin.c \
@@ -315,6 +352,7 @@ COREGRIND_SOURCES_COMMON = \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -324,6 +362,7 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S \
 	m_syswrap/syscall-arm-linux.S \
+	m_syswrap/syscall-s390x-linux.S \
 	m_syswrap/syscall-ppc32-aix5.S \
 	m_syswrap/syscall-ppc64-aix5.S \
 	m_syswrap/syscall-x86-darwin.S \
@@ -339,6 +378,7 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c \
 	m_syswrap/syswrap-arm-linux.c \
+	m_syswrap/syswrap-s390x-linux.c \
 	m_syswrap/syswrap-ppc32-aix5.c \
 	m_syswrap/syswrap-ppc64-aix5.c \
 	m_syswrap/syswrap-x86-darwin.c \
@@ -460,13 +500,121 @@ vgpreload_core_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \
 	$(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
 endif
 
+#----------------------------------------------------------------------------
+# gdbserver xml target descriptions
+#----------------------------------------------------------------------------
+pkglib_DATA =
+
+if VGCONF_ARCHS_INCLUDE_ARM
+pkglib_DATA += 	m_gdbserver/arm-core-valgrind-s1.xml \
+		m_gdbserver/arm-core-valgrind-s2.xml \
+		m_gdbserver/arm-core.xml \
+		m_gdbserver/arm-vfpv3-valgrind-s1.xml \
+		m_gdbserver/arm-vfpv3-valgrind-s2.xml \
+		m_gdbserver/arm-vfpv3.xml \
+		m_gdbserver/arm-with-vfpv3-valgrind.xml \
+		m_gdbserver/arm-with-vfpv3.xml
+endif
+
+if VGCONF_ARCHS_INCLUDE_X86
+pkglib_DATA += 	m_gdbserver/32bit-core-valgrind-s1.xml \
+		m_gdbserver/32bit-core-valgrind-s2.xml \
+		m_gdbserver/32bit-core.xml \
+		m_gdbserver/32bit-sse-valgrind-s1.xml \
+		m_gdbserver/32bit-sse-valgrind-s2.xml \
+		m_gdbserver/32bit-sse.xml
+if VGCONF_OS_IS_LINUX
+pkglib_DATA +=	m_gdbserver/32bit-linux-valgrind-s1.xml \
+		m_gdbserver/32bit-linux-valgrind-s2.xml \
+		m_gdbserver/32bit-linux.xml \
+		m_gdbserver/i386-linux-valgrind.xml
+endif
+if VGCONF_OS_IS_DARWIN
+pkglib_DATA +=	m_gdbserver/i386-coresse-valgrind.xml
+endif
+endif
+
+if VGCONF_ARCHS_INCLUDE_AMD64
+pkglib_DATA +=	m_gdbserver/64bit-core-valgrind-s1.xml \
+		m_gdbserver/64bit-core-valgrind-s2.xml \
+		m_gdbserver/64bit-core.xml \
+		m_gdbserver/64bit-sse-valgrind-s1.xml \
+		m_gdbserver/64bit-sse-valgrind-s2.xml \
+		m_gdbserver/64bit-sse.xml
+
+if VGCONF_OS_IS_LINUX
+pkglib_DATA +=	m_gdbserver/64bit-linux-valgrind-s1.xml \
+		m_gdbserver/64bit-linux-valgrind-s2.xml \
+		m_gdbserver/64bit-linux.xml \
+		m_gdbserver/amd64-linux-valgrind.xml
+endif
+if VGCONF_OS_IS_DARWIN
+pkglib_DATA +=	m_gdbserver/amd64-coresse-valgrind.xml
+endif
+endif
+
+if VGCONF_ARCHS_INCLUDE_PPC32
+pkglib_DATA +=	m_gdbserver/power-altivec-valgrind-s1.xml \
+		m_gdbserver/power-altivec-valgrind-s2.xml \
+		m_gdbserver/power-altivec.xml \
+		m_gdbserver/power-core.xml \
+		m_gdbserver/power-fpu-valgrind-s1.xml \
+		m_gdbserver/power-fpu-valgrind-s2.xml \
+		m_gdbserver/power-fpu.xml \
+		m_gdbserver/power-linux-valgrind-s1.xml \
+		m_gdbserver/power-linux-valgrind-s2.xml \
+		m_gdbserver/power-linux.xml \
+		m_gdbserver/powerpc-altivec32l-valgrind.xml \
+		m_gdbserver/powerpc-altivec32l.xml
+endif
+
+if VGCONF_ARCHS_INCLUDE_PPC64
+pkglib_DATA +=	m_gdbserver/power64-core-valgrind-s1.xml \
+		m_gdbserver/power64-core-valgrind-s2.xml \
+		m_gdbserver/power64-core.xml \
+		m_gdbserver/power64-linux-valgrind-s1.xml \
+		m_gdbserver/power64-linux-valgrind-s2.xml \
+		m_gdbserver/power64-linux.xml \
+		m_gdbserver/powerpc-altivec64l-valgrind.xml \
+		m_gdbserver/powerpc-altivec64l.xml
+if ! VGCONF_ARCHS_INCLUDE_PPC32
+pkglib_DATA +=	m_gdbserver/power-altivec-valgrind-s1.xml \
+		m_gdbserver/power-altivec-valgrind-s2.xml \
+		m_gdbserver/power-altivec.xml \
+		m_gdbserver/power-fpu-valgrind-s1.xml \
+		m_gdbserver/power-fpu-valgrind-s2.xml \
+		m_gdbserver/power-fpu.xml
+endif
+endif
+
+
 #----------------------------------------------------------------------------
 # General stuff
 #----------------------------------------------------------------------------
 
 all-local: inplace-noinst_PROGRAMS inplace-noinst_DSYMS
+	mkdir -p $(inplacedir); \
+	for f in $(pkglib_DATA); do \
+	  rm -f $(inplacedir)/$$f; \
+	  ln -f -s ../$(subdir)/$$f $(inplacedir); \
+	done
 
 clean-local: clean-noinst_DSYMS
 
 install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS
 
+#----------------------------------------------------------------------------
+# Darwin linker kludges
+#----------------------------------------------------------------------------
+
+if VGCONF_OS_IS_DARWIN
+
+BUILT_SOURCES += fixup_macho_loadcmds
+fixup_macho_loadcmds: fixup_macho_loadcmds.c
+	$(CC) -g -Wall -o fixup_macho_loadcmds fixup_macho_loadcmds.c
+
+CLEANFILES += fixup_macho_loadcmds
+
+endif
+
+EXTRA_DIST += fixup_macho_loadcmds.c
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.in
index 8d3ef7b35..16aa98bed 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/Makefile.in
@@ -28,6 +28,7 @@
 
 
 
+
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -53,35 +54,37 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/link_tool_exe_l4re.in \
 	$(srcdir)/link_tool_exe_linux.in $(top_srcdir)/Makefile.all.am
 @VGCONF_OS_IS_L4RE_FALSE@bin_PROGRAMS = valgrind$(EXEEXT) \
+@VGCONF_OS_IS_L4RE_FALSE@	vgdb$(EXEEXT) \
 @VGCONF_OS_IS_L4RE_FALSE@	no_op_client_for_valgrind$(EXEEXT)
 @VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_1 = -Wl,-read_only_relocs -Wl,suppress
 @VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_2 = -Wl,-read_only_relocs -Wl,suppress
-@VGCONF_OS_IS_DARWIN_TRUE@am__append_3 = \
+@VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_3 = -Wl,-read_only_relocs -Wl,suppress
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_4 = \
 @VGCONF_OS_IS_DARWIN_TRUE@	m_mach/mach_vmUser.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/taskUser.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/thread_actUser.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/vm_mapUser.c
 
-@VGCONF_OS_IS_DARWIN_TRUE@am__append_4 = \
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_5 = \
 @VGCONF_OS_IS_DARWIN_TRUE@	m_mach/mach_vmServer.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/taskServer.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/thread_actServer.c \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/vm_mapServer.c
 
-@VGCONF_OS_IS_DARWIN_TRUE@am__append_5 = \
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_6 = \
 @VGCONF_OS_IS_DARWIN_TRUE@	m_mach/mach_vm.h \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/task.h \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/thread_act.h \
 @VGCONF_OS_IS_DARWIN_TRUE@        m_mach/vm_map.h
 
-@VGCONF_OS_IS_DARWIN_TRUE@am__append_6 = \
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_7 = \
 @VGCONF_OS_IS_DARWIN_TRUE@	/usr/include/mach/mach_vm.defs \
 @VGCONF_OS_IS_DARWIN_TRUE@        /usr/include/mach/task.defs \
 @VGCONF_OS_IS_DARWIN_TRUE@        /usr/include/mach/thread_act.defs \
 @VGCONF_OS_IS_DARWIN_TRUE@        /usr/include/mach/vm_map.defs
 
-@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_7 = libcoregrind-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
-@VGCONF_OS_IS_L4RE_TRUE@am__append_8 = \
+@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_8 = libcoregrind-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
+@VGCONF_OS_IS_L4RE_TRUE@am__append_9 = \
 @VGCONF_OS_IS_L4RE_TRUE@	l4re_helper.c \
 @VGCONF_OS_IS_L4RE_TRUE@	l4re_trampoline.c \
 @VGCONF_OS_IS_L4RE_TRUE@	l4re/vcap.cpp \
@@ -96,11 +99,81 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 @VGCONF_OS_IS_L4RE_TRUE@	m_initimg/initimg-l4re.c \
 @VGCONF_OS_IS_L4RE_TRUE@	m_dispatch/dispatch-x86-l4re.S
 
-@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_9 = libreplacemalloc_toolpreload-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
+@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_10 = libreplacemalloc_toolpreload-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
 noinst_PROGRAMS =  \
 	vgpreload_core-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT) \
 	$(am__EXEEXT_1)
-@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_10 = vgpreload_core-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so
+@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_11 = vgpreload_core-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@am__append_12 = m_gdbserver/arm-core-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-core-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-core.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-vfpv3-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-vfpv3-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-vfpv3.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-with-vfpv3-valgrind.xml \
+@VGCONF_ARCHS_INCLUDE_ARM_TRUE@		m_gdbserver/arm-with-vfpv3.xml
+
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@am__append_13 = m_gdbserver/32bit-core-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@		m_gdbserver/32bit-core-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@		m_gdbserver/32bit-core.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@		m_gdbserver/32bit-sse-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@		m_gdbserver/32bit-sse-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@		m_gdbserver/32bit-sse.xml
+
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@@VGCONF_OS_IS_LINUX_TRUE@am__append_14 = m_gdbserver/32bit-linux-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/32bit-linux-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/32bit-linux.xml \
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/i386-linux-valgrind.xml
+
+@VGCONF_ARCHS_INCLUDE_X86_TRUE@@VGCONF_OS_IS_DARWIN_TRUE@am__append_15 = m_gdbserver/i386-coresse-valgrind.xml
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@am__append_16 = m_gdbserver/64bit-core-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@		m_gdbserver/64bit-core-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@		m_gdbserver/64bit-core.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@		m_gdbserver/64bit-sse-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@		m_gdbserver/64bit-sse-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@		m_gdbserver/64bit-sse.xml
+
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@@VGCONF_OS_IS_LINUX_TRUE@am__append_17 = m_gdbserver/64bit-linux-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/64bit-linux-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/64bit-linux.xml \
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@@VGCONF_OS_IS_LINUX_TRUE@		m_gdbserver/amd64-linux-valgrind.xml
+
+@VGCONF_ARCHS_INCLUDE_AMD64_TRUE@@VGCONF_OS_IS_DARWIN_TRUE@am__append_18 = m_gdbserver/amd64-coresse-valgrind.xml
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@am__append_19 = m_gdbserver/power-altivec-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-altivec-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-altivec.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-core.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-fpu-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-fpu-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-fpu.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-linux-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-linux-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/power-linux.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/powerpc-altivec32l-valgrind.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@		m_gdbserver/powerpc-altivec32l.xml
+
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@am__append_20 = m_gdbserver/power64-core-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power64-core-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power64-core.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power64-linux-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power64-linux-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power64-linux.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/powerpc-altivec64l-valgrind.xml \
+@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/powerpc-altivec64l.xml
+
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@am__append_21 = m_gdbserver/power-altivec-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power-altivec-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power-altivec.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power-fpu-valgrind-s1.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power-fpu-valgrind-s2.xml \
+@VGCONF_ARCHS_INCLUDE_PPC32_FALSE@@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@		m_gdbserver/power-fpu.xml
+
+
+#----------------------------------------------------------------------------
+# Darwin linker kludges
+#----------------------------------------------------------------------------
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_22 = fixup_macho_loadcmds
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_23 = fixup_macho_loadcmds
 subdir = coregrind
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.in
@@ -132,7 +205,8 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)"
+am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(pkglibdir)"
 LIBRARIES = $(pkglib_LIBRARIES)
 ARFLAGS = cru
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_AR = $(AR) $(ARFLAGS)
@@ -141,35 +215,46 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_commandline.c m_clientstate.c m_cpuid.S m_debugger.c \
 	m_debuglog.c m_errormgr.c m_execontext.c m_hashtable.c \
 	m_libcbase.c m_libcassert.c m_libcfile.c m_libcprint.c \
-	m_libcproc.c m_libcsignal.c m_machine.c m_main.c \
-	m_mallocfree.c m_options.c m_oset.c m_redir.c m_seqmatch.c \
-	m_signals.c m_sparsewa.c m_stacks.c m_stacktrace.c m_syscall.c \
-	m_threadstate.c m_tooliface.c m_trampoline.S m_translate.c \
-	m_transtab.c m_vki.c m_vkiscnums.c m_wordfm.c m_xarray.c \
-	m_aspacehl.c m_aspacemgr/aspacemgr-common.c \
-	m_aspacemgr/aspacemgr-linux.c m_aspacemgr/aspacemgr-aix5.c \
-	m_coredump/coredump-elf.c m_coredump/coredump-macho.c \
-	m_coredump/coredump-xcoff.c m_debuginfo/misc.c \
-	m_debuginfo/d3basics.c m_debuginfo/debuginfo.c \
-	m_debuginfo/readdwarf.c m_debuginfo/readdwarf3.c \
-	m_debuginfo/readelf.c m_debuginfo/readmacho.c \
-	m_debuginfo/readpdb.c m_debuginfo/readstabs.c \
-	m_debuginfo/readxcoff.c m_debuginfo/storage.c \
-	m_debuginfo/tytypes.c m_demangle/cp-demangle.c \
-	m_demangle/cplus-dem.c m_demangle/demangle.c \
-	m_demangle/dyn-string.c m_demangle/safe-ctype.c \
-	m_dispatch/dispatch-x86-linux.S \
+	m_libcproc.c m_libcsetjmp.c m_libcsignal.c m_machine.c \
+	m_main.c m_mallocfree.c m_options.c m_oset.c m_redir.c \
+	m_seqmatch.c m_signals.c m_sparsewa.c m_stacks.c \
+	m_stacktrace.c m_syscall.c m_threadstate.c m_tooliface.c \
+	m_trampoline.S m_translate.c m_transtab.c m_vki.c \
+	m_vkiscnums.c m_wordfm.c m_xarray.c m_aspacehl.c \
+	m_aspacemgr/aspacemgr-common.c m_aspacemgr/aspacemgr-linux.c \
+	m_aspacemgr/aspacemgr-aix5.c m_coredump/coredump-elf.c \
+	m_coredump/coredump-macho.c m_coredump/coredump-xcoff.c \
+	m_debuginfo/misc.c m_debuginfo/d3basics.c \
+	m_debuginfo/debuginfo.c m_debuginfo/readdwarf.c \
+	m_debuginfo/readdwarf3.c m_debuginfo/readelf.c \
+	m_debuginfo/readmacho.c m_debuginfo/readpdb.c \
+	m_debuginfo/readstabs.c m_debuginfo/readxcoff.c \
+	m_debuginfo/storage.c m_debuginfo/tytypes.c \
+	m_demangle/cp-demangle.c m_demangle/cplus-dem.c \
+	m_demangle/demangle.c m_demangle/dyn-string.c \
+	m_demangle/safe-ctype.c m_dispatch/dispatch-x86-linux.S \
 	m_dispatch/dispatch-amd64-linux.S \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
-	m_dispatch/dispatch-amd64-darwin.S m_initimg/initimg-linux.c \
-	m_initimg/initimg-aix5.c m_initimg/initimg-darwin.c \
-	m_initimg/initimg-pathscan.c m_mach/mach_basics.c \
-	m_mach/mach_msg.c m_mach/mach_traps-x86-darwin.S \
+	m_dispatch/dispatch-amd64-darwin.S m_gdbserver/m_gdbserver.c \
+	m_gdbserver/inferiors.c m_gdbserver/regcache.c \
+	m_gdbserver/remote-utils.c m_gdbserver/server.c \
+	m_gdbserver/signals.c m_gdbserver/target.c m_gdbserver/utils.c \
+	m_gdbserver/valgrind-low.c m_gdbserver/valgrind-low-x86.c \
+	m_gdbserver/valgrind-low-amd64.c \
+	m_gdbserver/valgrind-low-arm.c \
+	m_gdbserver/valgrind-low-ppc32.c \
+	m_gdbserver/valgrind-low-ppc64.c \
+	m_gdbserver/valgrind-low-s390x.c m_gdbserver/version.c \
+	m_initimg/initimg-linux.c m_initimg/initimg-aix5.c \
+	m_initimg/initimg-darwin.c m_initimg/initimg-pathscan.c \
+	m_mach/mach_basics.c m_mach/mach_msg.c \
+	m_mach/mach_traps-x86-darwin.S \
 	m_mach/mach_traps-amd64-darwin.S \
 	m_replacemalloc/replacemalloc_core.c m_scheduler/scheduler.c \
 	m_scheduler/sema.c m_sigframe/sigframe-x86-linux.c \
@@ -177,6 +262,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -184,8 +270,8 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_syswrap/syscall-x86-linux.S m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S m_syswrap/syscall-arm-linux.S \
-	m_syswrap/syscall-ppc32-aix5.S m_syswrap/syscall-ppc64-aix5.S \
-	m_syswrap/syscall-x86-darwin.S \
+	m_syswrap/syscall-s390x-linux.S m_syswrap/syscall-ppc32-aix5.S \
+	m_syswrap/syscall-ppc64-aix5.S m_syswrap/syscall-x86-darwin.S \
 	m_syswrap/syscall-amd64-darwin.S m_syswrap/syswrap-main.c \
 	m_syswrap/syswrap-generic.c m_syswrap/syswrap-linux.c \
 	m_syswrap/syswrap-linux-variants.c m_syswrap/syswrap-aix5.c \
@@ -193,8 +279,8 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c m_syswrap/syswrap-arm-linux.c \
-	m_syswrap/syswrap-ppc32-aix5.c m_syswrap/syswrap-ppc64-aix5.c \
-	m_syswrap/syswrap-x86-darwin.c \
+	m_syswrap/syswrap-s390x-linux.c m_syswrap/syswrap-ppc32-aix5.c \
+	m_syswrap/syswrap-ppc64-aix5.c m_syswrap/syswrap-x86-darwin.c \
 	m_syswrap/syswrap-amd64-darwin.c m_ume/elf.c m_ume/macho.c \
 	m_ume/main.c m_ume/script.c l4re_helper.c l4re_trampoline.c \
 	l4re/vcap.cpp l4re/rm_init.cpp l4re/crt1.S l4re/__c_main.c \
@@ -227,6 +313,7 @@ am__objects_2 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcfile.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcprint.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcproc.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_machine.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_main.$(OBJEXT) \
@@ -278,10 +365,28 @@ am__objects_2 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-darwin.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-darwin.$(OBJEXT) \
@@ -298,6 +403,7 @@ am__objects_2 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \
@@ -307,6 +413,7 @@ am__objects_2 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \
@@ -322,6 +429,7 @@ am__objects_2 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \
@@ -338,9 +446,10 @@ am_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS =  \
 @VGCONF_OS_IS_DARWIN_TRUE@	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-thread_actUser.$(OBJEXT) \
 @VGCONF_OS_IS_DARWIN_TRUE@	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-vm_mapUser.$(OBJEXT)
 am__objects_4 = $(am__objects_3)
-am__objects_5 = $(am__objects_4)
+am__objects_5 =
+am__objects_6 = $(am__objects_4) $(am__objects_5)
 nodist_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS =  \
-	$(am__objects_5)
+	$(am__objects_6)
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS =  \
 	$(am_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS) \
 	$(nodist_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS)
@@ -350,35 +459,46 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_commandline.c m_clientstate.c m_cpuid.S m_debugger.c \
 	m_debuglog.c m_errormgr.c m_execontext.c m_hashtable.c \
 	m_libcbase.c m_libcassert.c m_libcfile.c m_libcprint.c \
-	m_libcproc.c m_libcsignal.c m_machine.c m_main.c \
-	m_mallocfree.c m_options.c m_oset.c m_redir.c m_seqmatch.c \
-	m_signals.c m_sparsewa.c m_stacks.c m_stacktrace.c m_syscall.c \
-	m_threadstate.c m_tooliface.c m_trampoline.S m_translate.c \
-	m_transtab.c m_vki.c m_vkiscnums.c m_wordfm.c m_xarray.c \
-	m_aspacehl.c m_aspacemgr/aspacemgr-common.c \
-	m_aspacemgr/aspacemgr-linux.c m_aspacemgr/aspacemgr-aix5.c \
-	m_coredump/coredump-elf.c m_coredump/coredump-macho.c \
-	m_coredump/coredump-xcoff.c m_debuginfo/misc.c \
-	m_debuginfo/d3basics.c m_debuginfo/debuginfo.c \
-	m_debuginfo/readdwarf.c m_debuginfo/readdwarf3.c \
-	m_debuginfo/readelf.c m_debuginfo/readmacho.c \
-	m_debuginfo/readpdb.c m_debuginfo/readstabs.c \
-	m_debuginfo/readxcoff.c m_debuginfo/storage.c \
-	m_debuginfo/tytypes.c m_demangle/cp-demangle.c \
-	m_demangle/cplus-dem.c m_demangle/demangle.c \
-	m_demangle/dyn-string.c m_demangle/safe-ctype.c \
-	m_dispatch/dispatch-x86-linux.S \
+	m_libcproc.c m_libcsetjmp.c m_libcsignal.c m_machine.c \
+	m_main.c m_mallocfree.c m_options.c m_oset.c m_redir.c \
+	m_seqmatch.c m_signals.c m_sparsewa.c m_stacks.c \
+	m_stacktrace.c m_syscall.c m_threadstate.c m_tooliface.c \
+	m_trampoline.S m_translate.c m_transtab.c m_vki.c \
+	m_vkiscnums.c m_wordfm.c m_xarray.c m_aspacehl.c \
+	m_aspacemgr/aspacemgr-common.c m_aspacemgr/aspacemgr-linux.c \
+	m_aspacemgr/aspacemgr-aix5.c m_coredump/coredump-elf.c \
+	m_coredump/coredump-macho.c m_coredump/coredump-xcoff.c \
+	m_debuginfo/misc.c m_debuginfo/d3basics.c \
+	m_debuginfo/debuginfo.c m_debuginfo/readdwarf.c \
+	m_debuginfo/readdwarf3.c m_debuginfo/readelf.c \
+	m_debuginfo/readmacho.c m_debuginfo/readpdb.c \
+	m_debuginfo/readstabs.c m_debuginfo/readxcoff.c \
+	m_debuginfo/storage.c m_debuginfo/tytypes.c \
+	m_demangle/cp-demangle.c m_demangle/cplus-dem.c \
+	m_demangle/demangle.c m_demangle/dyn-string.c \
+	m_demangle/safe-ctype.c m_dispatch/dispatch-x86-linux.S \
 	m_dispatch/dispatch-amd64-linux.S \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
-	m_dispatch/dispatch-amd64-darwin.S m_initimg/initimg-linux.c \
-	m_initimg/initimg-aix5.c m_initimg/initimg-darwin.c \
-	m_initimg/initimg-pathscan.c m_mach/mach_basics.c \
-	m_mach/mach_msg.c m_mach/mach_traps-x86-darwin.S \
+	m_dispatch/dispatch-amd64-darwin.S m_gdbserver/m_gdbserver.c \
+	m_gdbserver/inferiors.c m_gdbserver/regcache.c \
+	m_gdbserver/remote-utils.c m_gdbserver/server.c \
+	m_gdbserver/signals.c m_gdbserver/target.c m_gdbserver/utils.c \
+	m_gdbserver/valgrind-low.c m_gdbserver/valgrind-low-x86.c \
+	m_gdbserver/valgrind-low-amd64.c \
+	m_gdbserver/valgrind-low-arm.c \
+	m_gdbserver/valgrind-low-ppc32.c \
+	m_gdbserver/valgrind-low-ppc64.c \
+	m_gdbserver/valgrind-low-s390x.c m_gdbserver/version.c \
+	m_initimg/initimg-linux.c m_initimg/initimg-aix5.c \
+	m_initimg/initimg-darwin.c m_initimg/initimg-pathscan.c \
+	m_mach/mach_basics.c m_mach/mach_msg.c \
+	m_mach/mach_traps-x86-darwin.S \
 	m_mach/mach_traps-amd64-darwin.S \
 	m_replacemalloc/replacemalloc_core.c m_scheduler/scheduler.c \
 	m_scheduler/sema.c m_sigframe/sigframe-x86-linux.c \
@@ -386,6 +506,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -393,8 +514,8 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_syswrap/syscall-x86-linux.S m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S m_syswrap/syscall-arm-linux.S \
-	m_syswrap/syscall-ppc32-aix5.S m_syswrap/syscall-ppc64-aix5.S \
-	m_syswrap/syscall-x86-darwin.S \
+	m_syswrap/syscall-s390x-linux.S m_syswrap/syscall-ppc32-aix5.S \
+	m_syswrap/syscall-ppc64-aix5.S m_syswrap/syscall-x86-darwin.S \
 	m_syswrap/syscall-amd64-darwin.S m_syswrap/syswrap-main.c \
 	m_syswrap/syswrap-generic.c m_syswrap/syswrap-linux.c \
 	m_syswrap/syswrap-linux-variants.c m_syswrap/syswrap-aix5.c \
@@ -402,15 +523,15 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c m_syswrap/syswrap-arm-linux.c \
-	m_syswrap/syswrap-ppc32-aix5.c m_syswrap/syswrap-ppc64-aix5.c \
-	m_syswrap/syswrap-x86-darwin.c \
+	m_syswrap/syswrap-s390x-linux.c m_syswrap/syswrap-ppc32-aix5.c \
+	m_syswrap/syswrap-ppc64-aix5.c m_syswrap/syswrap-x86-darwin.c \
 	m_syswrap/syswrap-amd64-darwin.c m_ume/elf.c m_ume/macho.c \
 	m_ume/main.c m_ume/script.c l4re_helper.c l4re_trampoline.c \
 	l4re/vcap.cpp l4re/rm_init.cpp l4re/crt1.S l4re/__c_main.c \
 	l4re/myelf.c l4re/fd_names.cpp m_aspacemgr/aspacemgr-l4re.c \
 	m_syswrap/syswrap-x86-l4re.c m_syswrap/syswrap-l4re.c \
 	m_initimg/initimg-l4re.c m_dispatch/dispatch-x86-l4re.S
-@VGCONF_OS_IS_L4RE_TRUE@am__objects_6 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-l4re_helper.$(OBJEXT) \
+@VGCONF_OS_IS_L4RE_TRUE@am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-l4re_helper.$(OBJEXT) \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-l4re_trampoline.$(OBJEXT) \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-vcap.$(OBJEXT) \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-rm_init.$(OBJEXT) \
@@ -423,7 +544,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST =  \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-l4re.$(OBJEXT) \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-l4re.$(OBJEXT) \
 @VGCONF_OS_IS_L4RE_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-l4re.$(OBJEXT)
-am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJEXT) \
+am__objects_8 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_clientstate.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_cpuid.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_debugger.$(OBJEXT) \
@@ -436,6 +557,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcfile.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcprint.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcproc.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_machine.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_main.$(OBJEXT) \
@@ -487,10 +609,28 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-darwin.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-darwin.$(OBJEXT) \
@@ -507,6 +647,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \
@@ -516,6 +657,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \
@@ -531,6 +673,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \
@@ -539,17 +682,17 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJ
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-macho.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-script.$(OBJEXT) \
-	$(am__objects_6)
+	$(am__objects_7)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
-@VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_7)
-@VGCONF_OS_IS_DARWIN_TRUE@am__objects_8 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-mach_vmUser.$(OBJEXT) \
+@VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_8)
+@VGCONF_OS_IS_DARWIN_TRUE@am__objects_9 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-mach_vmUser.$(OBJEXT) \
 @VGCONF_OS_IS_DARWIN_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-taskUser.$(OBJEXT) \
 @VGCONF_OS_IS_DARWIN_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-thread_actUser.$(OBJEXT) \
 @VGCONF_OS_IS_DARWIN_TRUE@	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-vm_mapUser.$(OBJEXT)
-am__objects_9 = $(am__objects_8)
 am__objects_10 = $(am__objects_9)
+am__objects_11 = $(am__objects_10) $(am__objects_5)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@nodist_libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
-@VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_10)
+@VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_11)
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
 	$(am_libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS) \
 	$(nodist_libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS)
@@ -589,6 +732,11 @@ valgrind_OBJECTS = $(am_valgrind_OBJECTS)
 valgrind_LDADD = $(LDADD)
 valgrind_LINK = $(CCLD) $(valgrind_CFLAGS) $(CFLAGS) \
 	$(valgrind_LDFLAGS) $(LDFLAGS) -o $@
+am_vgdb_OBJECTS = vgdb-vgdb.$(OBJEXT)
+vgdb_OBJECTS = $(am_vgdb_OBJECTS)
+vgdb_LDADD = $(LDADD)
+vgdb_LINK = $(CCLD) $(vgdb_CFLAGS) $(CFLAGS) $(vgdb_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.$(OBJEXT)
 vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS =  \
 	$(am_vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS)
@@ -631,6 +779,7 @@ SOURCES = $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES) \
 	$(libreplacemalloc_toolpreload_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES) \
 	$(libreplacemalloc_toolpreload_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES) \
 	$(no_op_client_for_valgrind_SOURCES) $(valgrind_SOURCES) \
+	$(vgdb_SOURCES) \
 	$(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \
 	$(vgpreload_core_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES)
 DIST_SOURCES = $(am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST) \
@@ -638,9 +787,10 @@ DIST_SOURCES = $(am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST)
 	$(libreplacemalloc_toolpreload_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES) \
 	$(am__libreplacemalloc_toolpreload_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST) \
 	$(no_op_client_for_valgrind_SOURCES) \
-	$(am__valgrind_SOURCES_DIST) \
+	$(am__valgrind_SOURCES_DIST) $(vgdb_SOURCES) \
 	$(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \
 	$(am__vgpreload_core_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES_DIST)
+DATA = $(pkglib_DATA)
 HEADERS = $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -687,6 +837,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
 FLAG_W_EXTRA = @FLAG_W_EXTRA@
 FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@
 FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@
+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
 FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
 GDB = @GDB@
 GENERATED_SUPP = @GENERATED_SUPP@
@@ -716,12 +868,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@
-QTCORE_CFLAGS = @QTCORE_CFLAGS@
-QTCORE_LIBS = @QTCORE_LIBS@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -888,7 +1035,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
 AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 			 	$(AM_CFLAGS_BASE) -marm
 
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
 AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
 AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
 AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \
@@ -917,6 +1064,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
 AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g
 AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@
 #AM_CPPFLAGS_X86_L4RE   = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE)
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -945,11 +1097,10 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@
-EXTRA_DIST = \
-	m_debuginfo/UNUSED_STABS.txt \
-	m_debuginfo/README.txt
-
+EXTRA_DIST = m_debuginfo/UNUSED_STABS.txt m_debuginfo/README.txt \
+	fixup_macho_loadcmds.c
 @VGCONF_OS_IS_AIX5_TRUE@valgrind_SOURCES = \
 @VGCONF_OS_IS_AIX5_TRUE@	launcher-aix5.c \
 @VGCONF_OS_IS_AIX5_TRUE@	m_debuglog.c \
@@ -968,11 +1119,16 @@ valgrind_CFLAGS = $(AM_CFLAGS_PRI)
 valgrind_CXXFLAGS = $(AM_CXXFLAGS_PRI)
 valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI)
 valgrind_LDFLAGS = $(AM_CFLAGS_PRI) $(am__append_1)
+vgdb_SOURCES = vgdb.c
+vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI)
+vgdb_CFLAGS = $(AM_CFLAGS_PRI)
+vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI)
+vgdb_LDFLAGS = $(AM_CFLAGS_PRI) -lpthread $(am__append_2)
 no_op_client_for_valgrind_SOURCES = no_op_client_for_valgrind.c
 no_op_client_for_valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI)
 no_op_client_for_valgrind_CFLAGS = $(AM_CFLAGS_PRI)
 no_op_client_for_valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI)
-no_op_client_for_valgrind_LDFLAGS = $(AM_CFLAGS_PRI) $(am__append_2)
+no_op_client_for_valgrind_LDFLAGS = $(AM_CFLAGS_PRI) $(am__append_3)
 
 #----------------------------------------------------------------------------
 # Darwin Mach stuff
@@ -995,10 +1151,10 @@ no_op_client_for_valgrind_LDFLAGS = $(AM_CFLAGS_PRI) $(am__append_2)
 #	processor.defs \
 #	processor_set.defs \
 #
-mach_user_srcs = $(am__append_3)
-mach_server_srcs = $(am__append_4)
-mach_hdrs = $(am__append_5)
-mach_defs = $(am__append_6)
+mach_user_srcs = $(am__append_4)
+mach_server_srcs = $(am__append_5)
+mach_hdrs = $(am__append_6)
+mach_defs = $(am__append_7)
 
 #----------------------------------------------------------------------------
 # Headers
@@ -1022,6 +1178,7 @@ noinst_HEADERS = \
 	pub_core_dispatch_asm.h	\
 	pub_core_errormgr.h	\
 	pub_core_execontext.h	\
+	pub_core_gdbserver.h	\
 	pub_core_hashtable.h	\
 	pub_core_initimg.h	\
 	pub_core_libcbase.h	\
@@ -1029,6 +1186,7 @@ noinst_HEADERS = \
 	pub_core_libcfile.h	\
 	pub_core_libcprint.h	\
 	pub_core_libcproc.h	\
+	pub_core_libcsetjmp.h	\
 	pub_core_libcsignal.h	\
 	pub_core_mach.h		\
 	pub_core_machine.h	\
@@ -1076,6 +1234,12 @@ noinst_HEADERS = \
 	m_demangle/demangle.h	\
 	m_demangle/safe-ctype.h \
 	m_demangle/vg_libciface.h \
+	m_gdbserver/regcache.h \
+	m_gdbserver/regdef.h \
+	m_gdbserver/server.h \
+	m_gdbserver/target.h \
+	m_gdbserver/valgrind_low.h \
+	m_gdbserver/gdb/signals.h \
 	m_initimg/priv_initimg_pathscan.h \
 	m_initimg/simple_huffman.c \
 	m_scheduler/priv_sema.h \
@@ -1092,48 +1256,61 @@ noinst_HEADERS = \
 #----------------------------------------------------------------------------
 # libcoregrind-.a
 #----------------------------------------------------------------------------
-BUILT_SOURCES = $(mach_user_srcs)
-CLEANFILES = $(mach_user_srcs) $(mach_server_srcs) $(mach_hdrs)
+BUILT_SOURCES = $(mach_user_srcs) $(am__append_22)
+CLEANFILES = $(mach_user_srcs) $(mach_server_srcs) $(mach_hdrs) \
+	$(am__append_23)
 
 #----------------------------------------------------------------------------
 # libreplacemalloc_toolpreload-.a
 #----------------------------------------------------------------------------
 pkglib_LIBRARIES = libcoregrind-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
-	$(am__append_7) \
+	$(am__append_8) \
 	libreplacemalloc_toolpreload-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
-	$(am__append_9)
+	$(am__append_10)
 COREGRIND_SOURCES_COMMON = m_commandline.c m_clientstate.c m_cpuid.S \
 	m_debugger.c m_debuglog.c m_errormgr.c m_execontext.c \
 	m_hashtable.c m_libcbase.c m_libcassert.c m_libcfile.c \
-	m_libcprint.c m_libcproc.c m_libcsignal.c m_machine.c m_main.c \
-	m_mallocfree.c m_options.c m_oset.c m_redir.c m_seqmatch.c \
-	m_signals.c m_sparsewa.c m_stacks.c m_stacktrace.c m_syscall.c \
-	m_threadstate.c m_tooliface.c m_trampoline.S m_translate.c \
-	m_transtab.c m_vki.c m_vkiscnums.c m_wordfm.c m_xarray.c \
-	m_aspacehl.c m_aspacemgr/aspacemgr-common.c \
-	m_aspacemgr/aspacemgr-linux.c m_aspacemgr/aspacemgr-aix5.c \
-	m_coredump/coredump-elf.c m_coredump/coredump-macho.c \
-	m_coredump/coredump-xcoff.c m_debuginfo/misc.c \
-	m_debuginfo/d3basics.c m_debuginfo/debuginfo.c \
-	m_debuginfo/readdwarf.c m_debuginfo/readdwarf3.c \
-	m_debuginfo/readelf.c m_debuginfo/readmacho.c \
-	m_debuginfo/readpdb.c m_debuginfo/readstabs.c \
-	m_debuginfo/readxcoff.c m_debuginfo/storage.c \
-	m_debuginfo/tytypes.c m_demangle/cp-demangle.c \
-	m_demangle/cplus-dem.c m_demangle/demangle.c \
-	m_demangle/dyn-string.c m_demangle/safe-ctype.c \
-	m_dispatch/dispatch-x86-linux.S \
+	m_libcprint.c m_libcproc.c m_libcsetjmp.c m_libcsignal.c \
+	m_machine.c m_main.c m_mallocfree.c m_options.c m_oset.c \
+	m_redir.c m_seqmatch.c m_signals.c m_sparsewa.c m_stacks.c \
+	m_stacktrace.c m_syscall.c m_threadstate.c m_tooliface.c \
+	m_trampoline.S m_translate.c m_transtab.c m_vki.c \
+	m_vkiscnums.c m_wordfm.c m_xarray.c m_aspacehl.c \
+	m_aspacemgr/aspacemgr-common.c m_aspacemgr/aspacemgr-linux.c \
+	m_aspacemgr/aspacemgr-aix5.c m_coredump/coredump-elf.c \
+	m_coredump/coredump-macho.c m_coredump/coredump-xcoff.c \
+	m_debuginfo/misc.c m_debuginfo/d3basics.c \
+	m_debuginfo/debuginfo.c m_debuginfo/readdwarf.c \
+	m_debuginfo/readdwarf3.c m_debuginfo/readelf.c \
+	m_debuginfo/readmacho.c m_debuginfo/readpdb.c \
+	m_debuginfo/readstabs.c m_debuginfo/readxcoff.c \
+	m_debuginfo/storage.c m_debuginfo/tytypes.c \
+	m_demangle/cp-demangle.c m_demangle/cplus-dem.c \
+	m_demangle/demangle.c m_demangle/dyn-string.c \
+	m_demangle/safe-ctype.c m_dispatch/dispatch-x86-linux.S \
 	m_dispatch/dispatch-amd64-linux.S \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
-	m_dispatch/dispatch-amd64-darwin.S m_initimg/initimg-linux.c \
-	m_initimg/initimg-aix5.c m_initimg/initimg-darwin.c \
-	m_initimg/initimg-pathscan.c m_mach/mach_basics.c \
-	m_mach/mach_msg.c m_mach/mach_traps-x86-darwin.S \
+	m_dispatch/dispatch-amd64-darwin.S m_gdbserver/m_gdbserver.c \
+	m_gdbserver/inferiors.c m_gdbserver/m_gdbserver.c \
+	m_gdbserver/regcache.c m_gdbserver/remote-utils.c \
+	m_gdbserver/server.c m_gdbserver/signals.c \
+	m_gdbserver/target.c m_gdbserver/utils.c \
+	m_gdbserver/valgrind-low.c m_gdbserver/valgrind-low-x86.c \
+	m_gdbserver/valgrind-low-amd64.c \
+	m_gdbserver/valgrind-low-arm.c \
+	m_gdbserver/valgrind-low-ppc32.c \
+	m_gdbserver/valgrind-low-ppc64.c \
+	m_gdbserver/valgrind-low-s390x.c m_gdbserver/version.c \
+	m_initimg/initimg-linux.c m_initimg/initimg-aix5.c \
+	m_initimg/initimg-darwin.c m_initimg/initimg-pathscan.c \
+	m_mach/mach_basics.c m_mach/mach_msg.c \
+	m_mach/mach_traps-x86-darwin.S \
 	m_mach/mach_traps-amd64-darwin.S \
 	m_replacemalloc/replacemalloc_core.c m_scheduler/scheduler.c \
 	m_scheduler/sema.c m_sigframe/sigframe-x86-linux.c \
@@ -1141,6 +1318,7 @@ COREGRIND_SOURCES_COMMON = m_commandline.c m_clientstate.c m_cpuid.S \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -1148,8 +1326,8 @@ COREGRIND_SOURCES_COMMON = m_commandline.c m_clientstate.c m_cpuid.S \
 	m_syswrap/syscall-x86-linux.S m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S m_syswrap/syscall-arm-linux.S \
-	m_syswrap/syscall-ppc32-aix5.S m_syswrap/syscall-ppc64-aix5.S \
-	m_syswrap/syscall-x86-darwin.S \
+	m_syswrap/syscall-s390x-linux.S m_syswrap/syscall-ppc32-aix5.S \
+	m_syswrap/syscall-ppc64-aix5.S m_syswrap/syscall-x86-darwin.S \
 	m_syswrap/syscall-amd64-darwin.S m_syswrap/syswrap-main.c \
 	m_syswrap/syswrap-generic.c m_syswrap/syswrap-linux.c \
 	m_syswrap/syswrap-linux-variants.c m_syswrap/syswrap-aix5.c \
@@ -1157,10 +1335,10 @@ COREGRIND_SOURCES_COMMON = m_commandline.c m_clientstate.c m_cpuid.S \
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c m_syswrap/syswrap-arm-linux.c \
-	m_syswrap/syswrap-ppc32-aix5.c m_syswrap/syswrap-ppc64-aix5.c \
-	m_syswrap/syswrap-x86-darwin.c \
+	m_syswrap/syswrap-s390x-linux.c m_syswrap/syswrap-ppc32-aix5.c \
+	m_syswrap/syswrap-ppc64-aix5.c m_syswrap/syswrap-x86-darwin.c \
 	m_syswrap/syswrap-amd64-darwin.c m_ume/elf.c m_ume/macho.c \
-	m_ume/main.c m_ume/script.c $(am__append_8)
+	m_ume/main.c m_ume/script.c $(am__append_9)
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_DEPENDENCIES = blub.o
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
     $(COREGRIND_SOURCES_COMMON)
@@ -1240,6 +1418,14 @@ vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_core_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
 
+
+#----------------------------------------------------------------------------
+# gdbserver xml target descriptions
+#----------------------------------------------------------------------------
+pkglib_DATA = $(am__append_12) $(am__append_13) $(am__append_14) \
+	$(am__append_15) $(am__append_16) $(am__append_17) \
+	$(am__append_18) $(am__append_19) $(am__append_20) \
+	$(am__append_21)
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -1377,6 +1563,9 @@ no_op_client_for_valgrind$(EXEEXT): $(no_op_client_for_valgrind_OBJECTS) $(no_op
 valgrind$(EXEEXT): $(valgrind_OBJECTS) $(valgrind_DEPENDENCIES) 
 	@rm -f valgrind$(EXEEXT)
 	$(valgrind_LINK) $(valgrind_OBJECTS) $(valgrind_LDADD) $(LIBS)
+vgdb$(EXEEXT): $(vgdb_OBJECTS) $(vgdb_DEPENDENCIES) 
+	@rm -f vgdb$(EXEEXT)
+	$(vgdb_LINK) $(vgdb_OBJECTS) $(vgdb_LDADD) $(LIBS)
 vgpreload_core-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT): $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES) 
 	@rm -f vgpreload_core-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT)
 	$(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK) $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD) $(LIBS)
@@ -1411,12 +1600,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-l4re.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dyn-string.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-elf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-fd_names.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-l4re.Po@am__quote@
@@ -1432,12 +1623,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_debuglog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_errormgr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_execontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_hashtable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcassert.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcbase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcfile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcprint.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcproc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_machine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_main.Po@am__quote@
@@ -1476,12 +1669,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-readpdb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-readstabs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-readxcoff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-replacemalloc_core.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-rm_init.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-safe-ctype.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-scheduler.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-script.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sema.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-amd64-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-amd64-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@
@@ -1489,8 +1685,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-storage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-linux.Po@am__quote@
@@ -1499,6 +1697,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-aix5.Po@am__quote@
@@ -1515,13 +1714,24 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-l4re.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-taskUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-thread_actUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-tytypes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-vcap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-vm_mapUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-__c_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-aspacemgr-aix5.Po@am__quote@
@@ -1544,12 +1754,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-l4re.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dyn-string.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-elf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-fd_names.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-l4re.Po@am__quote@
@@ -1565,12 +1777,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_debuglog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_errormgr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_execontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_hashtable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcassert.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcbase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcfile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcprint.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcproc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_machine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_main.Po@am__quote@
@@ -1609,12 +1823,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-readpdb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-readstabs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-readxcoff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-replacemalloc_core.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-rm_init.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-safe-ctype.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-scheduler.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-script.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sema.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-amd64-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-amd64-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@
@@ -1622,8 +1839,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-storage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-linux.Po@am__quote@
@@ -1632,6 +1851,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-aix5.Po@am__quote@
@@ -1648,13 +1868,24 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-l4re.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-taskUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-thread_actUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-tytypes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-vcap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-vm_mapUser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libreplacemalloc_toolpreload_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-vg_replace_malloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libreplacemalloc_toolpreload_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-vg_replace_malloc.Po@am__quote@
@@ -1664,6 +1895,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valgrind-launcher-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valgrind-m_debuglog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valgrind-m_vkiscnums.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgdb-vgdb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_core_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-vg_preloaded.Po@am__quote@
 
@@ -1779,6 +2011,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.obj: m_dispatch/
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.obj `if test -f 'm_dispatch/dispatch-arm-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o: m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o `test -f 'm_dispatch/dispatch-ppc32-aix5.S' || echo '$(srcdir)/'`m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Po
@@ -1933,6 +2179,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.obj: m_syswrap/sy
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.obj `if test -f 'm_syswrap/syscall-arm-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o: m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o `test -f 'm_syswrap/syscall-ppc32-aix5.S' || echo '$(srcdir)/'`m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Po
@@ -2115,6 +2375,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.obj: m_dispatch/
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.obj `if test -f 'm_dispatch/dispatch-arm-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o: m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o `test -f 'm_dispatch/dispatch-ppc32-aix5.S' || echo '$(srcdir)/'`m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Po
@@ -2269,6 +2543,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.obj: m_syswrap/sy
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.obj `if test -f 'm_syswrap/syscall-arm-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o: m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o `test -f 'm_syswrap/syscall-ppc32-aix5.S' || echo '$(srcdir)/'`m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Po
@@ -2535,6 +2823,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcproc.obj: m_libcproc.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcproc.obj `if test -f 'm_libcproc.c'; then $(CYGPATH_W) 'm_libcproc.c'; else $(CYGPATH_W) '$(srcdir)/m_libcproc.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.o: m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.o `test -f 'm_libcsetjmp.c' || echo '$(srcdir)/'`m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_libcsetjmp.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.o `test -f 'm_libcsetjmp.c' || echo '$(srcdir)/'`m_libcsetjmp.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.obj: m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.obj `if test -f 'm_libcsetjmp.c'; then $(CYGPATH_W) 'm_libcsetjmp.c'; else $(CYGPATH_W) '$(srcdir)/m_libcsetjmp.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_libcsetjmp.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsetjmp.obj `if test -f 'm_libcsetjmp.c'; then $(CYGPATH_W) 'm_libcsetjmp.c'; else $(CYGPATH_W) '$(srcdir)/m_libcsetjmp.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.o: m_libcsignal.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.o `test -f 'm_libcsignal.c' || echo '$(srcdir)/'`m_libcsignal.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_libcsignal.Po
@@ -3165,6 +3467,230 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-safe-ctype.obj: m_demangle/safe-cty
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-safe-ctype.obj `if test -f 'm_demangle/safe-ctype.c'; then $(CYGPATH_W) 'm_demangle/safe-ctype.c'; else $(CYGPATH_W) '$(srcdir)/m_demangle/safe-ctype.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.o: m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.o `test -f 'm_gdbserver/m_gdbserver.c' || echo '$(srcdir)/'`m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/m_gdbserver.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.o `test -f 'm_gdbserver/m_gdbserver.c' || echo '$(srcdir)/'`m_gdbserver/m_gdbserver.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.obj: m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.obj `if test -f 'm_gdbserver/m_gdbserver.c'; then $(CYGPATH_W) 'm_gdbserver/m_gdbserver.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/m_gdbserver.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/m_gdbserver.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_gdbserver.obj `if test -f 'm_gdbserver/m_gdbserver.c'; then $(CYGPATH_W) 'm_gdbserver/m_gdbserver.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/m_gdbserver.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.o: m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.o `test -f 'm_gdbserver/inferiors.c' || echo '$(srcdir)/'`m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/inferiors.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.o `test -f 'm_gdbserver/inferiors.c' || echo '$(srcdir)/'`m_gdbserver/inferiors.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.obj: m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.obj `if test -f 'm_gdbserver/inferiors.c'; then $(CYGPATH_W) 'm_gdbserver/inferiors.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/inferiors.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/inferiors.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-inferiors.obj `if test -f 'm_gdbserver/inferiors.c'; then $(CYGPATH_W) 'm_gdbserver/inferiors.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/inferiors.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.o: m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.o `test -f 'm_gdbserver/regcache.c' || echo '$(srcdir)/'`m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/regcache.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.o `test -f 'm_gdbserver/regcache.c' || echo '$(srcdir)/'`m_gdbserver/regcache.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.obj: m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.obj `if test -f 'm_gdbserver/regcache.c'; then $(CYGPATH_W) 'm_gdbserver/regcache.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/regcache.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/regcache.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-regcache.obj `if test -f 'm_gdbserver/regcache.c'; then $(CYGPATH_W) 'm_gdbserver/regcache.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/regcache.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.o: m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.o `test -f 'm_gdbserver/remote-utils.c' || echo '$(srcdir)/'`m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/remote-utils.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.o `test -f 'm_gdbserver/remote-utils.c' || echo '$(srcdir)/'`m_gdbserver/remote-utils.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.obj: m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.obj `if test -f 'm_gdbserver/remote-utils.c'; then $(CYGPATH_W) 'm_gdbserver/remote-utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/remote-utils.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/remote-utils.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-remote-utils.obj `if test -f 'm_gdbserver/remote-utils.c'; then $(CYGPATH_W) 'm_gdbserver/remote-utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/remote-utils.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.o: m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.o `test -f 'm_gdbserver/server.c' || echo '$(srcdir)/'`m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/server.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.o `test -f 'm_gdbserver/server.c' || echo '$(srcdir)/'`m_gdbserver/server.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.obj: m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.obj `if test -f 'm_gdbserver/server.c'; then $(CYGPATH_W) 'm_gdbserver/server.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/server.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/server.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-server.obj `if test -f 'm_gdbserver/server.c'; then $(CYGPATH_W) 'm_gdbserver/server.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/server.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.o: m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.o `test -f 'm_gdbserver/signals.c' || echo '$(srcdir)/'`m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/signals.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.o `test -f 'm_gdbserver/signals.c' || echo '$(srcdir)/'`m_gdbserver/signals.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.obj: m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.obj `if test -f 'm_gdbserver/signals.c'; then $(CYGPATH_W) 'm_gdbserver/signals.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/signals.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/signals.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-signals.obj `if test -f 'm_gdbserver/signals.c'; then $(CYGPATH_W) 'm_gdbserver/signals.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/signals.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.o: m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.o `test -f 'm_gdbserver/target.c' || echo '$(srcdir)/'`m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/target.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.o `test -f 'm_gdbserver/target.c' || echo '$(srcdir)/'`m_gdbserver/target.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.obj: m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.obj `if test -f 'm_gdbserver/target.c'; then $(CYGPATH_W) 'm_gdbserver/target.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/target.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/target.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-target.obj `if test -f 'm_gdbserver/target.c'; then $(CYGPATH_W) 'm_gdbserver/target.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/target.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.o: m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.o `test -f 'm_gdbserver/utils.c' || echo '$(srcdir)/'`m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/utils.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.o `test -f 'm_gdbserver/utils.c' || echo '$(srcdir)/'`m_gdbserver/utils.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.obj: m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.obj `if test -f 'm_gdbserver/utils.c'; then $(CYGPATH_W) 'm_gdbserver/utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/utils.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/utils.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-utils.obj `if test -f 'm_gdbserver/utils.c'; then $(CYGPATH_W) 'm_gdbserver/utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/utils.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.o: m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.o `test -f 'm_gdbserver/valgrind-low.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.o `test -f 'm_gdbserver/valgrind-low.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.obj: m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.obj `if test -f 'm_gdbserver/valgrind-low.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low.obj `if test -f 'm_gdbserver/valgrind-low.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.o: m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.o `test -f 'm_gdbserver/valgrind-low-x86.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-x86.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.o `test -f 'm_gdbserver/valgrind-low-x86.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-x86.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.obj: m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.obj `if test -f 'm_gdbserver/valgrind-low-x86.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-x86.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-x86.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-x86.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-x86.obj `if test -f 'm_gdbserver/valgrind-low-x86.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-x86.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-x86.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.o: m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.o `test -f 'm_gdbserver/valgrind-low-amd64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-amd64.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.o `test -f 'm_gdbserver/valgrind-low-amd64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-amd64.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.obj: m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.obj `if test -f 'm_gdbserver/valgrind-low-amd64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-amd64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-amd64.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-amd64.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.obj `if test -f 'm_gdbserver/valgrind-low-amd64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-amd64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-amd64.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.o: m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.o `test -f 'm_gdbserver/valgrind-low-arm.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-arm.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.o `test -f 'm_gdbserver/valgrind-low-arm.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-arm.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.obj: m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.obj `if test -f 'm_gdbserver/valgrind-low-arm.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-arm.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-arm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-arm.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.obj `if test -f 'm_gdbserver/valgrind-low-arm.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-arm.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-arm.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.o: m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.o `test -f 'm_gdbserver/valgrind-low-ppc32.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc32.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.o `test -f 'm_gdbserver/valgrind-low-ppc32.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc32.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.obj: m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.obj `if test -f 'm_gdbserver/valgrind-low-ppc32.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc32.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc32.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc32.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc32.obj `if test -f 'm_gdbserver/valgrind-low-ppc32.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc32.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc32.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.o: m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.o `test -f 'm_gdbserver/valgrind-low-ppc64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc64.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.o `test -f 'm_gdbserver/valgrind-low-ppc64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc64.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.obj: m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.obj `if test -f 'm_gdbserver/valgrind-low-ppc64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc64.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc64.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-ppc64.obj `if test -f 'm_gdbserver/valgrind-low-ppc64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc64.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.o: m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.o `test -f 'm_gdbserver/valgrind-low-s390x.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-s390x.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.o `test -f 'm_gdbserver/valgrind-low-s390x.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-s390x.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.obj: m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.obj `if test -f 'm_gdbserver/valgrind-low-s390x.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-s390x.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-s390x.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-s390x.obj `if test -f 'm_gdbserver/valgrind-low-s390x.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-s390x.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-s390x.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/version.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.obj: m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.obj `if test -f 'm_gdbserver/version.c'; then $(CYGPATH_W) 'm_gdbserver/version.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/version.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/version.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.obj `if test -f 'm_gdbserver/version.c'; then $(CYGPATH_W) 'm_gdbserver/version.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/version.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.o: m_initimg/initimg-linux.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.o `test -f 'm_initimg/initimg-linux.c' || echo '$(srcdir)/'`m_initimg/initimg-linux.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.Po
@@ -3361,6 +3887,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.obj: m_sigframe/
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.obj `if test -f 'm_sigframe/sigframe-arm-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o: m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o `test -f 'm_sigframe/sigframe-ppc32-aix5.c' || echo '$(srcdir)/'`m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Po
@@ -3571,6 +4111,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-arm-linux.obj: m_syswrap/sy
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-arm-linux.obj `if test -f 'm_syswrap/syswrap-arm-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o: m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o `test -f 'm_syswrap/syswrap-ppc32-aix5.c' || echo '$(srcdir)/'`m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Po
@@ -4019,6 +4573,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcproc.obj: m_libcproc.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcproc.obj `if test -f 'm_libcproc.c'; then $(CYGPATH_W) 'm_libcproc.c'; else $(CYGPATH_W) '$(srcdir)/m_libcproc.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.o: m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.o `test -f 'm_libcsetjmp.c' || echo '$(srcdir)/'`m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_libcsetjmp.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.o `test -f 'm_libcsetjmp.c' || echo '$(srcdir)/'`m_libcsetjmp.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.obj: m_libcsetjmp.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.obj `if test -f 'm_libcsetjmp.c'; then $(CYGPATH_W) 'm_libcsetjmp.c'; else $(CYGPATH_W) '$(srcdir)/m_libcsetjmp.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_libcsetjmp.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsetjmp.obj `if test -f 'm_libcsetjmp.c'; then $(CYGPATH_W) 'm_libcsetjmp.c'; else $(CYGPATH_W) '$(srcdir)/m_libcsetjmp.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.o: m_libcsignal.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.o `test -f 'm_libcsignal.c' || echo '$(srcdir)/'`m_libcsignal.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_libcsignal.Po
@@ -4649,6 +5217,230 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-safe-ctype.obj: m_demangle/safe-cty
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-safe-ctype.obj `if test -f 'm_demangle/safe-ctype.c'; then $(CYGPATH_W) 'm_demangle/safe-ctype.c'; else $(CYGPATH_W) '$(srcdir)/m_demangle/safe-ctype.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.o: m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.o `test -f 'm_gdbserver/m_gdbserver.c' || echo '$(srcdir)/'`m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/m_gdbserver.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.o `test -f 'm_gdbserver/m_gdbserver.c' || echo '$(srcdir)/'`m_gdbserver/m_gdbserver.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.obj: m_gdbserver/m_gdbserver.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.obj `if test -f 'm_gdbserver/m_gdbserver.c'; then $(CYGPATH_W) 'm_gdbserver/m_gdbserver.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/m_gdbserver.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/m_gdbserver.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_gdbserver.obj `if test -f 'm_gdbserver/m_gdbserver.c'; then $(CYGPATH_W) 'm_gdbserver/m_gdbserver.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/m_gdbserver.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.o: m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.o `test -f 'm_gdbserver/inferiors.c' || echo '$(srcdir)/'`m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/inferiors.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.o `test -f 'm_gdbserver/inferiors.c' || echo '$(srcdir)/'`m_gdbserver/inferiors.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.obj: m_gdbserver/inferiors.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.obj `if test -f 'm_gdbserver/inferiors.c'; then $(CYGPATH_W) 'm_gdbserver/inferiors.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/inferiors.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/inferiors.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-inferiors.obj `if test -f 'm_gdbserver/inferiors.c'; then $(CYGPATH_W) 'm_gdbserver/inferiors.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/inferiors.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.o: m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.o `test -f 'm_gdbserver/regcache.c' || echo '$(srcdir)/'`m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/regcache.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.o `test -f 'm_gdbserver/regcache.c' || echo '$(srcdir)/'`m_gdbserver/regcache.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.obj: m_gdbserver/regcache.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.obj `if test -f 'm_gdbserver/regcache.c'; then $(CYGPATH_W) 'm_gdbserver/regcache.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/regcache.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/regcache.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-regcache.obj `if test -f 'm_gdbserver/regcache.c'; then $(CYGPATH_W) 'm_gdbserver/regcache.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/regcache.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.o: m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.o `test -f 'm_gdbserver/remote-utils.c' || echo '$(srcdir)/'`m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/remote-utils.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.o `test -f 'm_gdbserver/remote-utils.c' || echo '$(srcdir)/'`m_gdbserver/remote-utils.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.obj: m_gdbserver/remote-utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.obj `if test -f 'm_gdbserver/remote-utils.c'; then $(CYGPATH_W) 'm_gdbserver/remote-utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/remote-utils.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/remote-utils.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-remote-utils.obj `if test -f 'm_gdbserver/remote-utils.c'; then $(CYGPATH_W) 'm_gdbserver/remote-utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/remote-utils.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.o: m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.o `test -f 'm_gdbserver/server.c' || echo '$(srcdir)/'`m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/server.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.o `test -f 'm_gdbserver/server.c' || echo '$(srcdir)/'`m_gdbserver/server.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.obj: m_gdbserver/server.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.obj `if test -f 'm_gdbserver/server.c'; then $(CYGPATH_W) 'm_gdbserver/server.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/server.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/server.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-server.obj `if test -f 'm_gdbserver/server.c'; then $(CYGPATH_W) 'm_gdbserver/server.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/server.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.o: m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.o `test -f 'm_gdbserver/signals.c' || echo '$(srcdir)/'`m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/signals.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.o `test -f 'm_gdbserver/signals.c' || echo '$(srcdir)/'`m_gdbserver/signals.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.obj: m_gdbserver/signals.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.obj `if test -f 'm_gdbserver/signals.c'; then $(CYGPATH_W) 'm_gdbserver/signals.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/signals.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/signals.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-signals.obj `if test -f 'm_gdbserver/signals.c'; then $(CYGPATH_W) 'm_gdbserver/signals.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/signals.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.o: m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.o `test -f 'm_gdbserver/target.c' || echo '$(srcdir)/'`m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/target.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.o `test -f 'm_gdbserver/target.c' || echo '$(srcdir)/'`m_gdbserver/target.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.obj: m_gdbserver/target.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.obj `if test -f 'm_gdbserver/target.c'; then $(CYGPATH_W) 'm_gdbserver/target.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/target.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/target.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-target.obj `if test -f 'm_gdbserver/target.c'; then $(CYGPATH_W) 'm_gdbserver/target.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/target.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.o: m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.o `test -f 'm_gdbserver/utils.c' || echo '$(srcdir)/'`m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/utils.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.o `test -f 'm_gdbserver/utils.c' || echo '$(srcdir)/'`m_gdbserver/utils.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.obj: m_gdbserver/utils.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.obj `if test -f 'm_gdbserver/utils.c'; then $(CYGPATH_W) 'm_gdbserver/utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/utils.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/utils.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-utils.obj `if test -f 'm_gdbserver/utils.c'; then $(CYGPATH_W) 'm_gdbserver/utils.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/utils.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.o: m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.o `test -f 'm_gdbserver/valgrind-low.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.o `test -f 'm_gdbserver/valgrind-low.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.obj: m_gdbserver/valgrind-low.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.obj `if test -f 'm_gdbserver/valgrind-low.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low.obj `if test -f 'm_gdbserver/valgrind-low.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.o: m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.o `test -f 'm_gdbserver/valgrind-low-x86.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-x86.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.o `test -f 'm_gdbserver/valgrind-low-x86.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-x86.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.obj: m_gdbserver/valgrind-low-x86.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.obj `if test -f 'm_gdbserver/valgrind-low-x86.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-x86.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-x86.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-x86.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-x86.obj `if test -f 'm_gdbserver/valgrind-low-x86.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-x86.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-x86.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.o: m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.o `test -f 'm_gdbserver/valgrind-low-amd64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-amd64.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.o `test -f 'm_gdbserver/valgrind-low-amd64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-amd64.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.obj: m_gdbserver/valgrind-low-amd64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.obj `if test -f 'm_gdbserver/valgrind-low-amd64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-amd64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-amd64.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-amd64.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.obj `if test -f 'm_gdbserver/valgrind-low-amd64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-amd64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-amd64.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.o: m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.o `test -f 'm_gdbserver/valgrind-low-arm.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-arm.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.o `test -f 'm_gdbserver/valgrind-low-arm.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-arm.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.obj: m_gdbserver/valgrind-low-arm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.obj `if test -f 'm_gdbserver/valgrind-low-arm.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-arm.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-arm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-arm.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.obj `if test -f 'm_gdbserver/valgrind-low-arm.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-arm.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-arm.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.o: m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.o `test -f 'm_gdbserver/valgrind-low-ppc32.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc32.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.o `test -f 'm_gdbserver/valgrind-low-ppc32.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc32.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.obj: m_gdbserver/valgrind-low-ppc32.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.obj `if test -f 'm_gdbserver/valgrind-low-ppc32.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc32.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc32.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc32.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc32.obj `if test -f 'm_gdbserver/valgrind-low-ppc32.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc32.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc32.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.o: m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.o `test -f 'm_gdbserver/valgrind-low-ppc64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc64.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.o `test -f 'm_gdbserver/valgrind-low-ppc64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-ppc64.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.obj: m_gdbserver/valgrind-low-ppc64.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.obj `if test -f 'm_gdbserver/valgrind-low-ppc64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc64.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-ppc64.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-ppc64.obj `if test -f 'm_gdbserver/valgrind-low-ppc64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-ppc64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-ppc64.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.o: m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.o `test -f 'm_gdbserver/valgrind-low-s390x.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-s390x.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.o `test -f 'm_gdbserver/valgrind-low-s390x.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-s390x.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.obj: m_gdbserver/valgrind-low-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.obj `if test -f 'm_gdbserver/valgrind-low-s390x.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-s390x.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/valgrind-low-s390x.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-s390x.obj `if test -f 'm_gdbserver/valgrind-low-s390x.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-s390x.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-s390x.c'; fi`
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/version.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.obj: m_gdbserver/version.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.obj `if test -f 'm_gdbserver/version.c'; then $(CYGPATH_W) 'm_gdbserver/version.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/version.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_gdbserver/version.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.obj `if test -f 'm_gdbserver/version.c'; then $(CYGPATH_W) 'm_gdbserver/version.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/version.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.o: m_initimg/initimg-linux.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.o `test -f 'm_initimg/initimg-linux.c' || echo '$(srcdir)/'`m_initimg/initimg-linux.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.Po
@@ -4845,6 +5637,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.obj: m_sigframe/
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.obj `if test -f 'm_sigframe/sigframe-arm-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o: m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o `test -f 'm_sigframe/sigframe-ppc32-aix5.c' || echo '$(srcdir)/'`m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Po
@@ -5055,6 +5861,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-arm-linux.obj: m_syswrap/sy
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-arm-linux.obj `if test -f 'm_syswrap/syswrap-arm-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o: m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o `test -f 'm_syswrap/syswrap-ppc32-aix5.c' || echo '$(srcdir)/'`m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Po
@@ -5447,6 +6267,20 @@ valgrind-launcher-linux.obj: launcher-linux.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(valgrind_CPPFLAGS) $(CPPFLAGS) $(valgrind_CFLAGS) $(CFLAGS) -c -o valgrind-launcher-linux.obj `if test -f 'launcher-linux.c'; then $(CYGPATH_W) 'launcher-linux.c'; else $(CYGPATH_W) '$(srcdir)/launcher-linux.c'; fi`
 
+vgdb-vgdb.o: vgdb.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgdb_CPPFLAGS) $(CPPFLAGS) $(vgdb_CFLAGS) $(CFLAGS) -MT vgdb-vgdb.o -MD -MP -MF $(DEPDIR)/vgdb-vgdb.Tpo -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo '$(srcdir)/'`vgdb.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/vgdb-vgdb.Tpo $(DEPDIR)/vgdb-vgdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='vgdb.c' object='vgdb-vgdb.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgdb_CPPFLAGS) $(CPPFLAGS) $(vgdb_CFLAGS) $(CFLAGS) -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo '$(srcdir)/'`vgdb.c
+
+vgdb-vgdb.obj: vgdb.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgdb_CPPFLAGS) $(CPPFLAGS) $(vgdb_CFLAGS) $(CFLAGS) -MT vgdb-vgdb.obj -MD -MP -MF $(DEPDIR)/vgdb-vgdb.Tpo -c -o vgdb-vgdb.obj `if test -f 'vgdb.c'; then $(CYGPATH_W) 'vgdb.c'; else $(CYGPATH_W) '$(srcdir)/vgdb.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/vgdb-vgdb.Tpo $(DEPDIR)/vgdb-vgdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='vgdb.c' object='vgdb-vgdb.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgdb_CPPFLAGS) $(CPPFLAGS) $(vgdb_CFLAGS) $(CFLAGS) -c -o vgdb-vgdb.obj `if test -f 'vgdb.c'; then $(CYGPATH_W) 'vgdb.c'; else $(CYGPATH_W) '$(srcdir)/vgdb.c'; fi`
+
 vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.o: vg_preloaded.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.o -MD -MP -MF $(DEPDIR)/vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.Tpo -c -o vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.o `test -f 'vg_preloaded.c' || echo '$(srcdir)/'`vg_preloaded.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.Tpo $(DEPDIR)/vgpreload_core_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-vg_preloaded.Po
@@ -5572,6 +6406,26 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-fd_names.obj: l4re/fd_names.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='l4re/fd_names.cpp' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-fd_names.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-fd_names.obj `if test -f 'l4re/fd_names.cpp'; then $(CYGPATH_W) 'l4re/fd_names.cpp'; else $(CYGPATH_W) '$(srcdir)/l4re/fd_names.cpp'; fi`
+install-pkglibDATA: $(pkglib_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+	@list='$(pkglib_DATA)'; test -n "$(pkglibdir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkglibdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkglibdir)" || exit $$?; \
+	done
+
+uninstall-pkglibDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkglib_DATA)'; test -n "$(pkglibdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkglibdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkglibdir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -5658,9 +6512,9 @@ distdir: $(DISTFILES)
 check-am: all-am
 check: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) all-local
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) all-local
 installdirs:
-	for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)"; do \
+	for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -5721,7 +6575,7 @@ install-dvi: install-dvi-am
 install-dvi-am:
 
 install-exec-am: install-binPROGRAMS install-exec-local \
-	install-pkglibLIBRARIES
+	install-pkglibDATA install-pkglibLIBRARIES
 
 install-html: install-html-am
 
@@ -5760,7 +6614,8 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS uninstall-pkglibLIBRARIES
+uninstall-am: uninstall-binPROGRAMS uninstall-pkglibDATA \
+	uninstall-pkglibLIBRARIES
 
 .MAKE: all check install install-am install-strip
 
@@ -5772,12 +6627,13 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkglibLIBRARIES
 	install-binPROGRAMS install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-exec-local \
 	install-html install-html-am install-info install-info-am \
-	install-man install-pdf install-pdf-am install-pkglibLIBRARIES \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	install-man install-pdf install-pdf-am install-pkglibDATA \
+	install-pkglibLIBRARIES install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-pkglibLIBRARIES
+	uninstall-am uninstall-binPROGRAMS uninstall-pkglibDATA \
+	uninstall-pkglibLIBRARIES
 
 
 # This used to be required when Vex had a handwritten Makefile.  It
@@ -5865,10 +6721,17 @@ blub.o : libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-l4re_trampoline.o
 #----------------------------------------------------------------------------
 
 all-local: inplace-noinst_PROGRAMS inplace-noinst_DSYMS
+	mkdir -p $(inplacedir); \
+	for f in $(pkglib_DATA); do \
+	  rm -f $(inplacedir)/$$f; \
+	  ln -f -s ../$(subdir)/$$f $(inplacedir); \
+	done
 
 clean-local: clean-noinst_DSYMS
 
 install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS
+@VGCONF_OS_IS_DARWIN_TRUE@fixup_macho_loadcmds: fixup_macho_loadcmds.c
+@VGCONF_OS_IS_DARWIN_TRUE@	$(CC) -g -Wall -o fixup_macho_loadcmds fixup_macho_loadcmds.c
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/fixup_macho_loadcmds.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/fixup_macho_loadcmds.c
new file mode 100644
index 000000000..77524f882
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/fixup_macho_loadcmds.c
@@ -0,0 +1,609 @@
+
+/* Derived from Valgrind sources, coregrind/m_debuginfo/readmacho.c.
+   GPL 2+ therefore.
+
+   Can be compiled as either a 32- or 64-bit program (doesn't matter).
+*/
+
+/* What does this program do?  In short it postprocesses tool
+   executables on MacOSX, after linking using /usr/bin/ld.  This is so
+   as to work around a bug in the linker on Xcode 4.0.0 and Xcode
+   4.0.1.  Xcode versions prior to 4.0.0 are unaffected.
+
+   The tracking bug is https://bugs.kde.org/show_bug.cgi?id=267997
+
+   The bug causes 64-bit tool executables to segfault at startup,
+   because:
+
+   Comparing the MachO load commands vs a (working) tool executable
+   that was created by Xcode 3.2.x, it appears that the new linker has
+   partially ignored the build system's request to place the tool
+   executable's stack at a non standard location.  The build system
+   tells the linker "-stack_addr 0x134000000 -stack_size 0x800000".
+
+   With the Xcode 3.2 linker those flags produce two results:
+
+   (1) A load command to allocate the stack at the said location:
+          Load command 3
+                cmd LC_SEGMENT_64
+            cmdsize 72
+            segname __UNIXSTACK
+             vmaddr 0x0000000133800000
+             vmsize 0x0000000000800000
+            fileoff 2285568
+           filesize 0
+            maxprot 0x00000007
+           initprot 0x00000003
+             nsects 0
+              flags 0x0
+
+   (2) A request (in LC_UNIXTHREAD) to set %rsp to the correct value
+       at process startup, 0x134000000.
+
+   With Xcode 4.0.1, (1) is missing but (2) is still present.  The
+   tool executable therefore starts up with %rsp pointing to unmapped
+   memory and faults almost instantly.
+
+   The workaround implemented by this program is documented in comment
+   8 of bug 267997, viz:
+
+   One really sick workaround is to observe that the executables
+   contain a redundant MachO load command:
+
+      Load command 2
+            cmd LC_SEGMENT_64
+        cmdsize 72
+        segname __LINKEDIT
+         vmaddr 0x0000000138dea000
+         vmsize 0x00000000000ad000
+        fileoff 2658304
+       filesize 705632
+        maxprot 0x00000007
+       initprot 0x00000001
+         nsects 0
+          flags 0x0
+
+   The described section presumably contains information intended for
+   the dynamic linker, but is irrelevant because this is a statically
+   linked executable.  Hence it might be possible to postprocess the
+   executables after linking, to overwrite this entry with the
+   information that would have been in the missing __UNIXSTACK entry.
+   I tried this by hand (with a binary editor) earlier and got
+   something that worked.
+*/
+
+#define DEBUGPRINTING 0
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
+
+#if defined(__APPLE__) && defined(__i386__)
+#  define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+#  define PLAT_amd64_darwin 1
+#else
+#  error "Can't be compiled on this platform"
+#endif
+
+#include 
+#include 
+#include 
+#include 
+
+
+typedef  unsigned char   UChar;
+typedef    signed char   Char;
+typedef           char   HChar; /* signfulness depends on host */
+
+typedef  unsigned int    UInt;
+typedef    signed int    Int;
+
+typedef  unsigned char   Bool;
+#define  True   ((Bool)1)
+#define  False  ((Bool)0)
+
+typedef  unsigned long   UWord;
+
+typedef  UWord           SizeT;
+typedef  UWord           Addr;
+
+typedef  unsigned long long int   ULong;
+typedef    signed long long int   Long;
+
+
+
+__attribute__((noreturn))
+void fail ( HChar* msg )
+{
+   fprintf(stderr, "fixup_macho_loadcmds: fail: %s\n", msg);
+   exit(1);
+}
+
+
+/*------------------------------------------------------------*/
+/*---                                                      ---*/
+/*--- Mach-O file mapping/unmapping helpers                ---*/
+/*---                                                      ---*/
+/*------------------------------------------------------------*/
+
+typedef
+   struct {
+      /* These two describe the entire mapped-in ("primary") image,
+         fat headers, kitchen sink, whatnot: the entire file.  The
+         image is mapped into img[0 .. img_szB-1]. */
+      UChar* img;
+      SizeT  img_szB;
+      /* These two describe the Mach-O object of interest, which is
+         presumably somewhere inside the primary image.
+         map_image_aboard() below, which generates this info, will
+         carefully check that the macho_ fields denote a section of
+         memory that falls entirely inside img[0 .. img_szB-1]. */
+      UChar* macho_img;
+      SizeT  macho_img_szB;
+   }
+   ImageInfo;
+
+
+Bool is_macho_object_file( const void* buf, SizeT szB )
+{
+   /* (JRS: the Mach-O headers might not be in this mapped data,
+      because we only mapped a page for this initial check,
+      or at least not very much, and what's at the start of the file
+      is in general a so-called fat header.  The Mach-O object we're
+      interested in could be arbitrarily far along the image, and so
+      we can't assume its header will fall within this page.) */
+
+   /* But we can say that either it's a fat object, in which case it
+      begins with a fat header, or it's unadorned Mach-O, in which
+      case it starts with a normal header.  At least do what checks we
+      can to establish whether or not we're looking at something
+      sane. */
+
+   const struct fat_header*  fh_be = buf;
+   const struct mach_header_64* mh    = buf;
+
+   assert(buf);
+   if (szB < sizeof(struct fat_header))
+      return False;
+   if (ntohl(fh_be->magic) == FAT_MAGIC)
+      return True;
+
+   if (szB < sizeof(struct mach_header_64))
+      return False;
+   if (mh->magic == MH_MAGIC_64)
+      return True;
+
+   return False;
+}
+
+
+/* Unmap an image mapped in by map_image_aboard. */
+static void unmap_image ( /*MOD*/ImageInfo* ii )
+{
+   Int r;
+   assert(ii->img);
+   assert(ii->img_szB > 0);
+   r = munmap( ii->img, ii->img_szB );
+   /* Do we care if this fails?  I suppose so; it would indicate
+      some fairly serious snafu with the mapping of the file. */
+   assert( !r );
+   memset(ii, 0, sizeof(*ii));
+}
+
+
+/* Map a given fat or thin object aboard, find the thin part if
+   necessary, do some checks, and write details of both the fat and
+   thin parts into *ii.  Returns 32 (and leaves the file unmapped) if
+   the thin part is a 32 bit file.  Returns 64 if it's a 64 bit file.
+   Does not return on failure.  Guarantees to return pointers to a
+   valid(ish) Mach-O image if it succeeds. */
+static Int map_image_aboard ( /*OUT*/ImageInfo* ii, HChar* filename )
+{
+   memset(ii, 0, sizeof(*ii));
+
+   /* First off, try to map the thing in. */
+   { SizeT  size;
+     Int r, fd;
+     struct stat stat_buf;
+
+     r = stat(filename, &stat_buf);
+     if (r)
+        fail("Can't stat image (to determine its size)?!");
+     size = stat_buf.st_size;
+
+     fd = open(filename, O_RDWR, 0);
+     if (fd == -1)
+        fail("Can't open image for possible modification!");
+     if (DEBUGPRINTING)
+        printf("size %lu fd %d\n", size, fd);
+     void* v = mmap ( NULL, size, PROT_READ|PROT_WRITE,
+                                  MAP_FILE|MAP_SHARED, fd, 0 );
+     if (v == MAP_FAILED) {
+        perror("mmap failed");
+        fail("Can't mmap image for possible modification!");
+     }
+
+     close(fd);
+
+     ii->img     = (UChar*)v;
+     ii->img_szB = size;
+   }
+
+   /* Now it's mapped in and we have .img and .img_szB set.  Look for
+      the embedded Mach-O object.  If not findable, unmap and fail. */
+   { struct fat_header*  fh_be;
+     struct fat_header   fh;
+     struct mach_header_64* mh;
+     
+     // Assume initially that we have a thin image, and update
+     // these if it turns out to be fat.
+     ii->macho_img     = ii->img;
+     ii->macho_img_szB = ii->img_szB;
+
+     // Check for fat header.
+     if (ii->img_szB < sizeof(struct fat_header))
+        fail("Invalid Mach-O file (0 too small).");
+
+     // Fat header is always BIG-ENDIAN
+     fh_be = (struct fat_header *)ii->img;
+     fh.magic = ntohl(fh_be->magic);
+     fh.nfat_arch = ntohl(fh_be->nfat_arch);
+     if (fh.magic == FAT_MAGIC) {
+        // Look for a good architecture.
+        struct fat_arch *arch_be;
+        struct fat_arch arch;
+        Int f;
+        if (ii->img_szB < sizeof(struct fat_header)
+                          + fh.nfat_arch * sizeof(struct fat_arch))
+           fail("Invalid Mach-O file (1 too small).");
+
+        for (f = 0, arch_be = (struct fat_arch *)(fh_be+1); 
+             f < fh.nfat_arch;
+             f++, arch_be++) {
+           Int cputype;
+#          if defined(PLAT_x86_darwin)
+           cputype = CPU_TYPE_X86;
+#          elif defined(PLAT_amd64_darwin)
+           cputype = CPU_TYPE_X86_64;
+#          else
+#            error "unknown architecture"
+#          endif
+           arch.cputype    = ntohl(arch_be->cputype);
+           arch.cpusubtype = ntohl(arch_be->cpusubtype);
+           arch.offset     = ntohl(arch_be->offset);
+           arch.size       = ntohl(arch_be->size);
+           if (arch.cputype == cputype) {
+              if (ii->img_szB < arch.offset + arch.size)
+                 fail("Invalid Mach-O file (2 too small).");
+              ii->macho_img     = ii->img + arch.offset;
+              ii->macho_img_szB = arch.size;
+              break;
+           }
+        }
+        if (f == fh.nfat_arch)
+           fail("No acceptable architecture found in fat file.");
+     }
+
+     /* Sanity check what we found. */
+
+     /* assured by logic above */
+     assert(ii->img_szB >= sizeof(struct fat_header));
+
+     if (ii->macho_img_szB < sizeof(struct mach_header_64))
+        fail("Invalid Mach-O file (3 too small).");
+
+     if (ii->macho_img_szB > ii->img_szB)
+        fail("Invalid Mach-O file (thin bigger than fat).");
+
+     if (ii->macho_img >= ii->img
+         && ii->macho_img + ii->macho_img_szB <= ii->img + ii->img_szB) {
+        /* thin entirely within fat, as expected */
+     } else {
+        fail("Invalid Mach-O file (thin not inside fat).");
+     }
+
+     mh = (struct mach_header_64 *)ii->macho_img;
+     if (mh->magic == MH_MAGIC) {
+        assert(ii->img);
+        assert(ii->macho_img);
+        assert(ii->img_szB > 0);
+        assert(ii->macho_img_szB > 0);
+        assert(ii->macho_img >= ii->img);
+        assert(ii->macho_img + ii->macho_img_szB <= ii->img + ii->img_szB);
+        return 32;
+     }
+     if (mh->magic != MH_MAGIC_64)
+        fail("Invalid Mach-O file (bad magic).");
+
+     if (ii->macho_img_szB < sizeof(struct mach_header_64) + mh->sizeofcmds)
+        fail("Invalid Mach-O file (4 too small).");
+   }
+
+   assert(ii->img);
+   assert(ii->macho_img);
+   assert(ii->img_szB > 0);
+   assert(ii->macho_img_szB > 0);
+   assert(ii->macho_img >= ii->img);
+   assert(ii->macho_img + ii->macho_img_szB <= ii->img + ii->img_szB);
+   return 64;
+}
+
+
+/*------------------------------------------------------------*/
+/*---                                                      ---*/
+/*--- Mach-O top-level processing                          ---*/
+/*---                                                      ---*/
+/*------------------------------------------------------------*/
+
+void modify_macho_loadcmds ( HChar* filename,
+                             ULong  expected_stack_start,
+                             ULong  expected_stack_size )
+{
+   ImageInfo ii;
+   memset(&ii, 0, sizeof(ii));
+
+   Int size = map_image_aboard( &ii, filename );
+   if (size == 32) {
+      fprintf(stderr, "fixup_macho_loadcmds:   Is 32-bit MachO file;"
+              " no modifications needed.\n");
+      goto out;
+   }
+
+   assert(size == 64);
+
+   assert(ii.macho_img != NULL && ii.macho_img_szB > 0);
+
+   /* Poke around in the Mach-O header, to find some important
+      stuff.
+      * the location of the __UNIXSTACK load command, if any
+      * the location of the __LINKEDIT load command, if any
+      * the initial RSP value as stated in the LC_UNIXTHREAD
+   */
+
+   /* The collected data */
+   ULong init_rsp = 0;
+   Bool  have_rsp = False;
+   struct segment_command_64* seg__unixstack = NULL;
+   struct segment_command_64* seg__linkedit  = NULL;
+
+   /* Loop over the load commands and fill in the above 4 variables. */
+
+   { struct mach_header_64 *mh = (struct mach_header_64 *)ii.macho_img;
+      struct load_command *cmd;
+      Int c;
+
+      for (c = 0, cmd = (struct load_command *)(mh+1);
+           c < mh->ncmds;
+           c++, cmd = (struct load_command *)(cmd->cmdsize
+                                              + (unsigned long)cmd)) {
+         if (DEBUGPRINTING)
+            printf("load cmd: offset %4lu   size %3d   kind %2d = ",
+                   (unsigned long)((UChar*)cmd - (UChar*)ii.macho_img),
+                   cmd->cmdsize, cmd->cmd);
+
+         switch (cmd->cmd) {
+            case LC_SEGMENT_64:
+               if (DEBUGPRINTING)
+                  printf("LC_SEGMENT_64");
+               break;
+            case LC_SYMTAB:
+               if (DEBUGPRINTING)
+                  printf("LC_SYMTAB");
+               break;
+            case LC_DYSYMTAB:
+               if (DEBUGPRINTING)
+                  printf("LC_DYSYMTAB");
+               break;
+            case LC_UUID:
+               if (DEBUGPRINTING)
+                  printf("LC_UUID");
+               break;
+            case LC_UNIXTHREAD:
+               if (DEBUGPRINTING)
+                  printf("LC_UNIXTHREAD");
+               break;
+            default:
+                  printf("???");
+               fail("unexpected load command in Mach header");
+            break;
+         }
+         if (DEBUGPRINTING)
+            printf("\n");
+
+         /* Note what the stated initial RSP value is, so we can
+            check it is as expected. */
+         if (cmd->cmd == LC_UNIXTHREAD) {
+            struct thread_command* tcmd = (struct thread_command*)cmd;
+            UInt* w32s = (UInt*)( (UChar*)tcmd + sizeof(*tcmd) );
+            if (DEBUGPRINTING)
+               printf("UnixThread: flavor %u = ", w32s[0]);
+            if (w32s[0] == x86_THREAD_STATE64 && !have_rsp) {
+               if (DEBUGPRINTING)
+                  printf("x86_THREAD_STATE64\n");
+               x86_thread_state64_t* state64
+                  = (x86_thread_state64_t*)(&w32s[2]);
+               have_rsp = True;
+               init_rsp = state64->__rsp;
+               if (DEBUGPRINTING)
+                  printf("rsp = 0x%llx\n", init_rsp);
+            } else {
+               if (DEBUGPRINTING)
+                  printf("???");
+            }
+            if (DEBUGPRINTING)
+               printf("\n");
+         }
+
+         if (cmd->cmd == LC_SEGMENT_64) {
+            struct segment_command_64 *seg = (struct segment_command_64 *)cmd;
+            if (0 == strcmp(seg->segname, "__LINKEDIT"))
+               seg__linkedit = seg;
+            if (0 == strcmp(seg->segname, "__UNIXSTACK"))
+               seg__unixstack = seg;
+         }
+
+      }
+   }
+
+   /*
+      Actions are then as follows:
+
+      * (always) check the RSP value is as expected, and abort if not
+
+      * if there's a UNIXSTACK load command, check it is as expected.
+        If not abort, if yes, do nothing more.
+
+      * (so there's no UNIXSTACK load command).  if there's a LINKEDIT
+        load command, check if it is minimally usable (has 0 for
+        nsects and flags).  If yes, convert it to a UNIXSTACK load
+        command.  If there is none, or is unusable, then we're out of
+        options and have to abort.
+   */
+   if (!have_rsp)
+      fail("Can't find / check initial RSP setting");
+   if (init_rsp != expected_stack_start + expected_stack_size)
+      fail("Initial RSP value not as expected");
+
+   fprintf(stderr, "fixup_macho_loadcmds:   "
+                   "initial RSP is as expected (0x%llx)\n",
+                   expected_stack_start + expected_stack_size );
+
+   if (seg__unixstack) {
+      struct segment_command_64 *seg = seg__unixstack;
+      if (seg->vmaddr != expected_stack_start)
+         fail("has __UNIXSTACK, but wrong ::vmaddr");
+      if (seg->vmsize != expected_stack_size)
+         fail("has __UNIXSTACK, but wrong ::vmsize");
+      if (seg->maxprot != 7)
+         fail("has __UNIXSTACK, but wrong ::maxprot (should be 7)");
+      if (seg->initprot != 3)
+         fail("has __UNIXSTACK, but wrong ::initprot (should be 3)");
+      if (seg->nsects != 0)
+         fail("has __UNIXSTACK, but wrong ::nsects (should be 0)");
+      if (seg->flags != 0)
+         fail("has __UNIXSTACK, but wrong ::flags (should be 0)");
+      /* looks ok */
+      fprintf(stderr, "fixup_macho_loadcmds:   "
+              "acceptable __UNIXSTACK present; no modifications.\n" );
+      goto out;
+   }
+
+   if (seg__linkedit) {
+      struct segment_command_64 *seg = seg__linkedit;
+      if (seg->nsects != 0)
+         fail("has __LINKEDIT, but wrong ::nsects (should be 0)");
+      if (seg->flags != 0)
+         fail("has __LINKEDIT, but wrong ::flags (should be 0)");
+      fprintf(stderr, "fixup_macho_loadcmds:   "
+              "no __UNIXSTACK present.\n" );
+      fprintf(stderr, "fixup_macho_loadcmds:   "
+              "converting __LINKEDIT to __UNIXSTACK.\n" );
+      strcpy(seg->segname, "__UNIXSTACK");
+      seg->vmaddr   = expected_stack_start;
+      seg->vmsize   = expected_stack_size;
+      seg->fileoff  = 0;
+      seg->filesize = 0;
+      seg->maxprot  = 7;
+      seg->initprot = 3;
+      /* success */
+      goto out;
+   }
+
+   /* out of options */
+   fail("no __UNIXSTACK found and no usable __LINKEDIT found; "
+        "out of options.");
+   /* NOTREACHED */
+
+  out:
+   if (ii.img)
+      unmap_image(&ii);
+}
+
+
+static Bool is_plausible_tool_exe_name ( HChar* nm )
+{
+   HChar* p;
+   if (!nm)
+      return False;
+
+   // Does it end with this string?
+   p = strstr(nm, "-x86-darwin");
+   if (p && 0 == strcmp(p, "-x86-darwin"))
+      return True;
+
+   p = strstr(nm, "-amd64-darwin");
+   if (p && 0 == strcmp(p, "-amd64-darwin"))
+      return True;
+
+   return False;
+}
+
+
+int main ( int argc, char** argv )
+{
+   Int   r;
+   ULong req_stack_addr = 0;
+   ULong req_stack_size = 0;
+
+   if (argc != 4)
+      fail("args: -stack_addr-arg -stack_size-arg "
+           "name-of-tool-executable-to-modify"); 
+
+   r= sscanf(argv[1], "0x%llx", &req_stack_addr);
+   if (r != 1) fail("invalid stack_addr arg");
+
+   r= sscanf(argv[2], "0x%llx", &req_stack_size);
+   if (r != 1) fail("invalid stack_size arg");
+
+   fprintf(stderr, "fixup_macho_loadcmds: "
+           "requested stack_addr (top) 0x%llx, "
+           "stack_size 0x%llx\n", req_stack_addr, req_stack_size );
+
+   if (!is_plausible_tool_exe_name(argv[3]))
+      fail("implausible tool exe name -- not of the form *-{x86,amd64}-darwin");
+
+   fprintf(stderr, "fixup_macho_loadcmds: examining tool exe: %s\n", 
+           argv[3] );
+   modify_macho_loadcmds( argv[3], req_stack_addr - req_stack_size,
+                          req_stack_size );
+
+   return 0;
+}
+
+/*
+      cmd LC_SEGMENT_64
+  cmdsize 72
+  segname __LINKEDIT
+   vmaddr 0x0000000138dea000
+   vmsize 0x00000000000ad000
+  fileoff 2658304
+ filesize 705632
+  maxprot 0x00000007
+ initprot 0x00000001
+   nsects 0
+    flags 0x0
+*/
+
+/*
+      cmd LC_SEGMENT_64
+  cmdsize 72
+  segname __UNIXSTACK
+   vmaddr 0x0000000133800000
+   vmsize 0x0000000000800000
+  fileoff 2498560
+ filesize 0
+  maxprot 0x00000007
+ initprot 0x00000003
+   nsects 0
+    flags 0x0
+*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/__c_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/__c_main.c
index b9d4b2704..82cdf41eb 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/__c_main.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/__c_main.c
@@ -34,7 +34,9 @@
 #include 
 #ifdef __UCLIBC_HAS_THREADS_NATIVE__
 #include 
+#if 0 // l4-valgrind
 #include 
+#endif
 #include 
 #include 
 #endif
@@ -133,7 +135,14 @@ static __always_inline int not_null_ptr(const void *p)
  */
 extern int *weak_const_function __errno_location(void);
 extern int *weak_const_function __h_errno_location(void);
+/* aw11: hidden and weak in a statically linked library meaningless
+ *       and gold in x86_64 complains about
+ */
+#ifdef SHARED
 extern void weak_function _stdio_init(void) attribute_hidden;
+#else
+extern void weak_function _stdio_init(void);
+#endif
 #ifdef __UCLIBC_HAS_LOCALE__
 extern void weak_function _locale_init(void) attribute_hidden;
 #endif
@@ -388,15 +397,12 @@ void __c_main(int (*main)(int, char **, char **), int argc,
 #endif
 	aux_dat += 2;
     }
-#ifdef NOT_FOR_L4
-    // l4: should come out of libdl
 #ifndef SHARED
     /* Get the program headers (_dl_phdr) from the aux vector
        It will be used into __libc_setup_tls. */
 
     _dl_aux_init (auxvt);
 #endif
-#endif
 #endif
 
     /* We need to initialize uClibc.  If we are dynamically linked this
@@ -533,6 +539,14 @@ void __c_main(int (*main)(int, char **, char **), int argc,
 #ifdef ARCH_x86
       {
         unsigned long esp;
+        // save over stack change
+        typedef struct {
+          int (*main)(int, char **, char **);
+          int argc;
+          char **argv;
+        } xt;
+        xt x = { main, argc, argv };
+        xt *m = &x;
         __asm__ __volatile__ ("\n"
             /* set up the new stack in %eax */
             "\tmovl  $vgPlain_interim_stack, %%eax\n"
@@ -542,11 +556,13 @@ void __c_main(int (*main)(int, char **, char **), int argc,
             "\tandl  $~15, %%eax\n"
             /* install it, and collect the original one */
             "\txchgl %%eax, %%esp\n"
-            :
-            "=a" (esp)
+            : "=a" (esp), "=b" (m)
+            : "b" (m)
+            : "memory"
          /* The original code saves esp so that it can be passed to the
           * startup routine */
          );
+        exit (m->main(m->argc, m->argv, __environ));
       }
 #else
 #error Unknown arch, add it!
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/fd_names.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/fd_names.cpp
index e663924f0..e426d3986 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/fd_names.cpp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/fd_names.cpp
@@ -14,7 +14,6 @@ __BEGIN_DECLS
 #include "pub_tool_libcbase.h"
 #include "pub_tool_libcfile.h"
 #include "pub_core_libcprint.h"
-#include "pub_core_vki.h"
 #include "l4re_helper.h"
 __END_DECLS
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/rm_init.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/rm_init.cpp
index afc70ed97..4889058bd 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/rm_init.cpp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/rm_init.cpp
@@ -19,7 +19,9 @@ __BEGIN_DECLS
 #include "pub_tool_libcbase.h"
 #include "pub_tool_libcfile.h"
 #include "pub_core_libcprint.h"
+__END_DECLS
 #include "pub_core_vki.h"
+__BEGIN_DECLS
 #include "pub_core_tooliface.h"
 #include "pub_core_libcassert.h" // VG_(exit)
 #include "l4re_helper.h"
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/vcap.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/vcap.cpp
index 9497c3cd2..dddf8f390 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/vcap.cpp
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re/vcap.cpp
@@ -40,16 +40,23 @@
 
 
 __BEGIN_DECLS
-#include "pub_core_basics.h"
 #include "pub_l4re.h"
 #include "pub_l4re_consts.h"
+#include "pub_core_basics.h"
 #include "pub_core_ume.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_debuginfo.h"  //DebugInfo
 #include "pub_tool_libcbase.h"
 #include "pub_tool_libcfile.h"
 #include "pub_core_libcprint.h"
+__END_DECLS
+// HACK:
+// We include all the pub* headers as C declarations to work around a huge
+//   bunch of C++ warnings. However, pub_core_vki.h really contains a template
+//   definition, so we need to include it as proper C++ header.
 #include "pub_core_vki.h"
+__BEGIN_DECLS
+#include "pub_core_libcsetjmp.h"
 #include "pub_core_threadstate.h"
 #include "pub_core_scheduler.h"
 #include "pub_core_tooliface.h"
@@ -648,7 +655,7 @@ class rm
                 enter_kdebug("detach_area");
             }
 
-            VG_(debugLog)(4, "vcap", "area: %08lx - %08lx\n", info->_start, info->_end);
+            VG_(debugLog)(4, "vcap", "detach area: %08lx - %08lx\n", info->_start, info->_end);
             NSegment *seg = const_cast(VG_(am_find_nsegment)(info->_start));
             /*
              * Run through all segments within the area and unmap them if they are
@@ -743,11 +750,25 @@ class rm
             return NULL;
         }
 
+        Node lower_bound(Region const &) const throw()
+        {
+            enter_kdebug("lower_bound");
+            return NULL;
+        }
+
+        Node lower_bound_area(Region const &) const throw()
+        {
+            enter_kdebug("lower_bound_area");
+            return NULL;
+        }
+
         void get_lists( l4_addr_t) const throw()
         {
             enter_kdebug("get_lists");
         }
 
+        l4_addr_t max_addr() const { return ~0UL; }
+
 
 };
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re_trampoline.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re_trampoline.c
index cdbe8b575..4f34dc7b8 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re_trampoline.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/l4re_trampoline.c
@@ -6,6 +6,7 @@
 #include "pub_core_basics.h"
 #include "pub_tool_libcbase.h"
 #include "pub_core_vki.h"
+#include "pub_core_libcsetjmp.h"
 #include "pub_core_threadstate.h"
 
 #define L4RE_TRAP_MAGIC \
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/launcher-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/launcher-linux.c
index e7c9c7f7e..e70152dce 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/launcher-linux.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/launcher-linux.c
@@ -205,6 +205,10 @@ static const char *select_platform(const char *clientname)
                 (ehdr->e_ident[EI_OSABI] == ELFOSABI_SYSV ||
                  ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX)) {
                platform = "ppc64-linux";
+            } else if (ehdr->e_machine == EM_S390 &&
+                       (ehdr->e_ident[EI_OSABI] == ELFOSABI_SYSV ||
+                        ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX)) {
+               platform = "s390x-linux";
             }
          }
       }
@@ -278,7 +282,8 @@ int main(int argc, char** argv, char** envp)
        (0==strcmp(VG_PLATFORM,"amd64-linux")) ||
        (0==strcmp(VG_PLATFORM,"ppc32-linux")) ||
        (0==strcmp(VG_PLATFORM,"ppc64-linux")) ||
-       (0==strcmp(VG_PLATFORM,"arm-linux")))
+       (0==strcmp(VG_PLATFORM,"arm-linux"))   ||
+       (0==strcmp(VG_PLATFORM,"s390x-linux")))
       default_platform = VG_PLATFORM;
    else
       barf("Unknown VG_PLATFORM '%s'", VG_PLATFORM);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_darwin.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_darwin.in
index be1a1d9d3..e111738b4 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_darwin.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_darwin.in
@@ -160,14 +160,31 @@ foreach my $n (2 .. $#ARGV) {
     }
 }
 
-#print "link_tool_exe_darwin: $cmd\n";
-
+print "link_tool_exe_darwin: $cmd\n";
 
 # Execute the command:
 my $r = system("$cmd");
 
-if ($r == 0) {
-    exit 0;
-} else {
-    exit 1;
+if ($r != 0) {
+   exit 1;
+}
+
+
+# and now kludge the tool exe
+# see bug 267997
+
+$cmd = "../coregrind/fixup_macho_loadcmds";
+$cmd = "$cmd $stack_addr_str $stack_size_str $outname";
+
+print "link_tool_exe_darwin: $cmd\n";
+
+$r = system("$cmd");
+
+if ($r != 0) {
+   exit 1;
 }
+
+
+
+
+exit 0;
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_l4re.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_l4re.in
index 94d36a4fe..ce53a2abd 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_l4re.in
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/link_tool_exe_l4re.in
@@ -66,7 +66,7 @@ die "Bogus alt-load address"
 
 my $linkscript = $ENV{"L4_LDS_stat_bin"};
 my $cmdline = "";
-my $cmdadd  = " -static -Wl,-Ttext=$ala -Wl,-T$linkscript";
+my $cmdadd  = " -static -Wl,--defsym=__executable_start=$ala -Wl,-T$linkscript";
 
 # Add the rest of the parameters
 foreach my $n (1 .. $#ARGV) {
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-common.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-common.c
index ecedc6629..061743c37 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-common.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-common.c
@@ -177,7 +177,8 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr start, SizeT length, UInt prot,
    res = VG_(do_syscall6)(__NR_mmap2, (UWord)start, length,
                           prot, flags, fd, offset / 4096);
 #  elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux) \
-        || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
+        || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) \
+        || defined(VGP_s390x_linux)
    res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length, 
                          prot, flags, fd, offset);
 #  elif defined(VGP_x86_darwin)
@@ -593,15 +594,18 @@ VgStack* VG_(am_alloc_VgStack)( /*OUT*/Addr* initial_sp )
 /* Figure out how many bytes of the stack's active area have not
    been used.  Used for estimating if we are close to overflowing it. */
 
-Int VG_(am_get_VgStack_unused_szB)( VgStack* stack )
+SizeT VG_(am_get_VgStack_unused_szB)( VgStack* stack, SizeT limit )
 {
-   Int i;
+   SizeT i;
    UInt* p;
 
    p = (UInt*)&stack->bytes[VG_STACK_GUARD_SZB];
-   for (i = 0; i < VG_STACK_ACTIVE_SZB/sizeof(UInt); i++)
+   for (i = 0; i < VG_STACK_ACTIVE_SZB/sizeof(UInt); i++) {
       if (p[i] != 0xDEADBEEF)
          break;
+      if (i * sizeof(UInt) >= limit)
+         break;
+   }
 
    return i * sizeof(UInt);
 }
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-l4re.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-l4re.c
index 8fc2ab218..08871fe79 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-l4re.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-l4re.c
@@ -2490,6 +2490,112 @@ SysRes VG_(am_sbrk_anon_float_client) ( SizeT length, Int prot )
 }
 
 
+/* Map a file at an unconstrained address for V, and update the
+   segment array accordingly. Use the provided flags */
+
+static SysRes VG_(am_mmap_file_float_valgrind_flags) ( SizeT length, UInt prot,
+                                                       UInt flags,
+                                                       Int fd, Off64T offset )
+{
+   SysRes     sres;
+   NSegment   seg;
+   Addr       advised;
+   Bool       ok;
+   MapRequest req;
+   ULong      dev, ino;
+   UInt       mode;
+   HChar      buf[VKI_PATH_MAX];
+ 
+   /* Not allowable. */
+   if (length == 0 || !VG_IS_PAGE_ALIGNED(offset))
+      return VG_(mk_SysRes_Error)( VKI_EINVAL );
+
+   /* Ask for an advisory.  If it's negative, fail immediately. */
+   req.rkind = MAny;
+   req.start = 0;
+   req.len   = length;
+   advised = VG_(am_get_advisory)( &req, True/*client*/, &ok );
+   if (!ok)
+      return VG_(mk_SysRes_Error)( VKI_EINVAL );
+
+   /* We have been advised that the mapping is allowable at the
+      specified address.  So hand it off to the kernel, and propagate
+      any resulting failure immediately. */
+   sres = VG_(am_do_mmap_NO_NOTIFY)( 
+             advised, length, prot, 
+             flags,
+             fd, offset 
+          );
+   if (sr_isError(sres))
+      return sres;
+
+   if (sr_Res(sres) != advised) {
+      /* I don't think this can happen.  It means the kernel made a
+         fixed map succeed but not at the requested location.  Try to
+         repair the damage, then return saying the mapping failed. */
+      (void)ML_(am_do_munmap_NO_NOTIFY)( sr_Res(sres), length );
+      return VG_(mk_SysRes_Error)( VKI_EINVAL );
+   }
+
+#ifndef VGO_l4re
+   /* Ok, the mapping succeeded.  Now notify the interval map. */
+   init_nsegment( &seg );
+   seg.kind   = SkFileV;
+   seg.start  = sr_Res(sres);
+   seg.end    = seg.start + VG_PGROUNDUP(length) - 1;
+   seg.offset = offset;
+   seg.hasR   = toBool(prot & VKI_PROT_READ);
+   seg.hasW   = toBool(prot & VKI_PROT_WRITE);
+   seg.hasX   = toBool(prot & VKI_PROT_EXEC);
+   if (ML_(am_get_fd_d_i_m)(fd, &dev, &ino, &mode)) {
+      seg.dev  = dev;
+      seg.ino  = ino;
+      seg.mode = mode;
+   }
+   if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
+      seg.fnIdx = allocate_segname( buf );
+   }
+   add_segment( &seg );
+#else
+   (void)seg; (void)dev; (void)ino; (void)buf;
+   {
+       NSegment *s = VG_(am_find_nsegment)(sr_Res(sres));
+       if (!s)
+           VG_(printf)("error!!!\n");
+       s->kind   = SkFileV;
+       s->offset = offset;
+       s->hasR   = True;
+       s->hasW   = True;
+       s->hasX   = True;
+       if (get_name_for_fd(fd, buf, VKI_PATH_MAX)) {
+          s->fnIdx = allocate_segname( buf );
+       }
+   }
+#endif
+
+   AM_SANITY_CHECK;
+   return sres;
+}
+/* Map privately a file at an unconstrained address for V, and update the
+   segment array accordingly.  This is used by V for transiently
+   mapping in object files to read their debug info.  */
+
+SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot, 
+                                          Int fd, Off64T offset )
+{
+   return VG_(am_mmap_file_float_valgrind_flags) (length, prot,
+                                                  VKI_MAP_FIXED|VKI_MAP_PRIVATE,
+                                                  fd, offset );
+}
+
+extern SysRes VG_(am_shared_mmap_file_float_valgrind)
+   ( SizeT length, UInt prot, Int fd, Off64T offset )
+{
+   return VG_(am_mmap_file_float_valgrind_flags) (length, prot,
+                                                  VKI_MAP_FIXED|VKI_MAP_SHARED,
+                                                  fd, offset );
+}
+
 /* Map anonymously at an unconstrained address for V, and update the
    segment array accordingly.  This is fundamentally how V allocates
    itself more address space when needed. */
@@ -2582,95 +2688,6 @@ SysRes VG_(am_sbrk_anon_float_valgrind)( SizeT cszB )
 }
 
 
-/* Map a file at an unconstrained address for V, and update the
-   segment array accordingly.  This is used by V for transiently
-   mapping in object files to read their debug info.  */
-
-SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot,
-                                          Int fd, Off64T offset )
-{
-   SysRes     sres;
-   NSegment   seg;
-   Addr       advised;
-   Bool       ok;
-   MapRequest req;
-   ULong      dev, ino;
-   UInt       mode;
-   HChar      buf[VKI_PATH_MAX];
-
-   /* Not allowable. */
-   if (length == 0 || !VG_IS_PAGE_ALIGNED(offset))
-      return VG_(mk_SysRes_Error)( VKI_EINVAL );
-
-   /* Ask for an advisory.  If it's negative, fail immediately. */
-   req.rkind = MAny;
-   req.start = 0;
-   req.len   = length;
-   advised = VG_(am_get_advisory)( &req, True/*client*/, &ok );
-   if (!ok)
-      return VG_(mk_SysRes_Error)( VKI_EINVAL );
-
-   /* We have been advised that the mapping is allowable at the
-      specified address.  So hand it off to the kernel, and propagate
-      any resulting failure immediately. */
-   sres = VG_(am_do_mmap_NO_NOTIFY)(
-             advised, length, prot,
-             VKI_MAP_FIXED|VKI_MAP_PRIVATE,
-             fd, offset
-          );
-   if (sr_isError(sres))
-      return sres;
-
-   if (sr_Res(sres) != advised) {
-      /* I don't think this can happen.  It means the kernel made a
-         fixed map succeed but not at the requested location.  Try to
-         repair the damage, then return saying the mapping failed. */
-      (void)ML_(am_do_munmap_NO_NOTIFY)( sr_Res(sres), length );
-      return VG_(mk_SysRes_Error)( VKI_EINVAL );
-   }
-
-#ifndef VGO_l4re
-   /* Ok, the mapping succeeded.  Now notify the interval map. */
-   init_nsegment( &seg );
-   seg.kind   = SkFileV;
-   seg.start  = sr_Res(sres);
-   seg.end    = seg.start + VG_PGROUNDUP(length) - 1;
-   seg.offset = offset;
-   seg.hasR   = toBool(prot & VKI_PROT_READ);
-   seg.hasW   = toBool(prot & VKI_PROT_WRITE);
-   seg.hasX   = toBool(prot & VKI_PROT_EXEC);
-
-   if (get_inode_for_fd(fd, &dev, &ino, &mode)) {
-      seg.dev  = dev;
-      seg.ino  = ino;
-      seg.mode = mode;
-   }
-   if (get_name_for_fd(fd, buf, VKI_PATH_MAX)) {
-      seg.fnIdx = allocate_segname( buf );
-   }
-   add_segment( &seg );
-#else
-   (void)seg; (void)dev; (void)ino; (void)buf;
-   {
-       NSegment *s = VG_(am_find_nsegment)(sr_Res(sres));
-       if (!s)
-           VG_(printf)("error!!!\n");
-       s->kind   = SkFileV;
-       s->offset = offset;
-       s->hasR   = True;
-       s->hasW   = True;
-       s->hasX   = True;
-       if (get_name_for_fd(fd, buf, VKI_PATH_MAX)) {
-          s->fnIdx = allocate_segname( buf );
-       }
-   }
-#endif
-
-   AM_SANITY_CHECK;
-   return sres;
-}
-
-
 /* --- --- munmap helper --- --- */
 
 static 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-linux.c
index b911345e8..73c37c440 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-linux.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_aspacemgr/aspacemgr-linux.c
@@ -341,10 +341,17 @@ static void parse_procselfmaps (
 /* ----- Hacks to do with the "commpage" on arm-linux ----- */
 /* Not that I have anything against the commpage per se.  It's just
    that it's not listed in /proc/self/maps, which is a royal PITA --
-   we have to fake it up, in parse_procselfmaps. */
+   we have to fake it up, in parse_procselfmaps.
+
+   But note also bug 254556 comment #2: this is now fixed in newer
+   kernels -- it is listed as a "[vectors]" entry.  Presumably the
+   fake entry made here duplicates the [vectors] entry, and so, if at
+   some point in the future, we can stop supporting buggy kernels,
+   then this kludge can be removed entirely, since the procmap parser
+   below will read that entry in the normal way. */
 #if defined(VGP_arm_linux)
 #  define ARM_LINUX_FAKE_COMMPAGE_START 0xFFFF0000
-#  define ARM_LINUX_FAKE_COMMPAGE_END1  0xFFFFF000
+#  define ARM_LINUX_FAKE_COMMPAGE_END1  0xFFFF1000
 #endif
 
 
@@ -893,10 +900,10 @@ static void sync_check_mapping_callback ( Addr addr, SizeT len, UInt prot,
       These kernels report which mappings are really executable in
       the /proc/self/maps output rather than mirroring what was asked
       for when each mapping was created. In order to cope with this we
-      have a sloppyXcheck mode which we enable on x86 - in this mode we
-      allow the kernel to report execute permission when we weren't
+      have a sloppyXcheck mode which we enable on x86 and s390 - in this
+      mode we allow the kernel to report execute permission when we weren't
       expecting it but not vice versa. */
-#  if defined(VGA_x86)
+#  if defined(VGA_x86) || defined (VGA_s390x)
    sloppyXcheck = True;
 #  else
    sloppyXcheck = False;
@@ -2481,11 +2488,11 @@ SysRes VG_(am_sbrk_anon_float_valgrind)( SizeT cszB )
 
 
 /* Map a file at an unconstrained address for V, and update the
-   segment array accordingly.  This is used by V for transiently
-   mapping in object files to read their debug info.  */
+   segment array accordingly. Use the provided flags */
 
-SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot, 
-                                          Int fd, Off64T offset )
+static SysRes VG_(am_mmap_file_float_valgrind_flags) ( SizeT length, UInt prot,
+                                                       UInt flags,
+                                                       Int fd, Off64T offset )
 {
    SysRes     sres;
    NSegment   seg;
@@ -2513,7 +2520,7 @@ SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot,
       any resulting failure immediately. */
    sres = VG_(am_do_mmap_NO_NOTIFY)( 
              advised, length, prot, 
-             VKI_MAP_FIXED|VKI_MAP_PRIVATE, 
+             flags,
              fd, offset 
           );
    if (sr_isError(sres))
@@ -2549,7 +2556,25 @@ SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot,
    AM_SANITY_CHECK;
    return sres;
 }
+/* Map privately a file at an unconstrained address for V, and update the
+   segment array accordingly.  This is used by V for transiently
+   mapping in object files to read their debug info.  */
+
+SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot, 
+                                          Int fd, Off64T offset )
+{
+   return VG_(am_mmap_file_float_valgrind_flags) (length, prot,
+                                                  VKI_MAP_FIXED|VKI_MAP_PRIVATE,
+                                                  fd, offset );
+}
 
+extern SysRes VG_(am_shared_mmap_file_float_valgrind)
+   ( SizeT length, UInt prot, Int fd, Off64T offset )
+{
+   return VG_(am_mmap_file_float_valgrind_flags) (length, prot,
+                                                  VKI_MAP_FIXED|VKI_MAP_SHARED,
+                                                  fd, offset );
+}
 
 /* --- --- munmap helper --- --- */
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-elf.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-elf.c
index c47562ed7..b2b0f9c9d 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-elf.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-elf.c
@@ -42,6 +42,7 @@
 #include "pub_core_libcproc.h"    // VG_(geteuid), VG_(getegid)
 #include "pub_core_libcassert.h"  // VG_(exit), vg_assert
 #include "pub_core_mallocfree.h"  // VG_(malloc), VG_(free)
+#include "pub_core_libcsetjmp.h"  // to keep _threadstate.h happy
 #include "pub_core_threadstate.h"
 #include "pub_core_xarray.h"
 #include "pub_core_clientstate.h"
@@ -233,9 +234,14 @@ static void fill_prstatus(const ThreadState *tst,
    prs->pr_pgrp = VG_(getpgrp)();
    prs->pr_sid = VG_(getpgrp)();
    
+#ifdef VGP_s390x_linux
+   /* prs->pr_reg has struct type. Need to take address. */
+   regs = (struct vki_user_regs_struct *)&(prs->pr_reg);
+#else
    regs = (struct vki_user_regs_struct *)prs->pr_reg;
 
    vg_assert(sizeof(*regs) == sizeof(prs->pr_reg));
+#endif
 
 #if defined(VGP_x86_linux)
    regs->eflags = LibVEX_GuestX86_get_eflags( &arch->vex );
@@ -343,6 +349,16 @@ static void fill_prstatus(const ThreadState *tst,
    regs->ARM_pc   = arch->vex.guest_R15T;
    regs->ARM_cpsr = LibVEX_GuestARM_get_cpsr( &((ThreadArchState*)arch)->vex );
 
+#elif defined(VGP_s390x_linux)
+#  define DO(n)  regs->gprs[n] = arch->vex.guest_r##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+#  undef DO
+#  define DO(n)  regs->acrs[n] = arch->vex.guest_a##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+#  undef DO
+   regs->orig_gpr2 = arch->vex.guest_r2;
 #else
 #  error Unknown ELF platform
 #endif
@@ -394,8 +410,9 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu)
 
 #elif defined(VGP_ppc32_linux)
    /* The guest state has the FPR fields declared as ULongs, so need
-      to fish out the values without converting them. */
-#  define DO(n)  (*fpu)[n] = *(double*)(&arch->vex.guest_FPR##n)
+      to fish out the values without converting them.
+      NOTE: The 32 FP registers map to the first 32 VSX registers.*/
+#  define DO(n)  (*fpu)[n] = *(double*)(&arch->vex.guest_VSR##n)
    DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
    DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
    DO(16); DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23);
@@ -404,8 +421,9 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu)
 
 #elif defined(VGP_ppc64_linux)
    /* The guest state has the FPR fields declared as ULongs, so need
-      to fish out the values without converting them. */
-#  define DO(n)  (*fpu)[n] = *(double*)(&arch->vex.guest_FPR##n)
+      to fish out the values without converting them.
+      NOTE: The 32 FP registers map to the first 32 VSX registers.*/
+#  define DO(n)  (*fpu)[n] = *(double*)(&arch->vex.guest_VSR##n)
    DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
    DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
    DO(16); DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23);
@@ -415,6 +433,11 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu)
 #elif defined(VGP_arm_linux)
    // umm ...
 
+#elif defined(VGP_s390x_linux)
+#  define DO(n)  fpu->fprs[n].ui = arch->vex.guest_f##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+# undef DO
 #else
 #  error Unknown ELF platform
 #endif
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-macho.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-macho.c
index 5f74a869b..499bebabc 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-macho.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_coredump/coredump-macho.c
@@ -33,6 +33,7 @@
 #include "pub_core_basics.h"
 #include "pub_core_vki.h"
 #include "pub_core_coredump.h"
+#include "pub_core_libcsetjmp.h"   // to keep _threadstate.h happy
 #include "pub_core_threadstate.h"
 
 void VG_(make_coredump)(ThreadId tid, const vki_siginfo_t *si, UInt max_size)
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debugger.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debugger.c
index 8f3f9df69..5ea04efdc 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debugger.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debugger.c
@@ -30,6 +30,7 @@
 
 #include "pub_core_basics.h"
 #include "pub_core_vki.h"
+#include "pub_core_libcsetjmp.h"
 #include "pub_core_threadstate.h"
 #include "pub_core_xarray.h"
 #include "pub_core_clientstate.h"
@@ -223,7 +224,10 @@ static Int ptrace_setregs(Int pid, VexGuestArchState* vex)
    uregs.ARM_ip   = vex->guest_R12; 
    uregs.ARM_sp   = vex->guest_R13; 
    uregs.ARM_lr   = vex->guest_R14; 
-   uregs.ARM_pc   = vex->guest_R15T;
+   // Remove the T bit from the bottom of R15T.  It will get shipped
+   // over in CPSR.T instead, since LibVEX_GuestARM_get_cpsr copies
+   // it from R15T[0].
+   uregs.ARM_pc   = vex->guest_R15T & 0xFFFFFFFE;
    uregs.ARM_cpsr = LibVEX_GuestARM_get_cpsr(vex);
    return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, &uregs);
 
@@ -242,6 +246,76 @@ static Int ptrace_setregs(Int pid, VexGuestArchState* vex)
 #elif defined(VGP_x86_l4re)
    I_die_here;
 
+#elif defined(VGP_s390x_linux)
+   struct vki_user_regs_struct regs;
+   vki_ptrace_area pa;
+
+   /* We don't set the psw mask and start at offset 8 */
+   pa.vki_len = (unsigned long) ®s.per_info - (unsigned long) ®s.psw.addr;
+   pa.vki_process_addr = (unsigned long) ®s.psw.addr;
+   pa.vki_kernel_addr = 8;
+
+   VG_(memset)(®s, 0, sizeof(regs));
+   regs.psw.addr = vex->guest_IA;
+
+   /* We don't set the mask */
+   regs.gprs[0] = vex->guest_r0;
+   regs.gprs[1] = vex->guest_r1;
+   regs.gprs[2] = vex->guest_r2;
+   regs.gprs[3] = vex->guest_r3;
+   regs.gprs[4] = vex->guest_r4;
+   regs.gprs[5] = vex->guest_r5;
+   regs.gprs[6] = vex->guest_r6;
+   regs.gprs[7] = vex->guest_r7;
+   regs.gprs[8] = vex->guest_r8;
+   regs.gprs[9] = vex->guest_r9;
+   regs.gprs[10] = vex->guest_r10;
+   regs.gprs[11] = vex->guest_r11;
+   regs.gprs[12] = vex->guest_r12;
+   regs.gprs[13] = vex->guest_r13;
+   regs.gprs[14] = vex->guest_r14;
+   regs.gprs[15] = vex->guest_r15;
+
+   regs.acrs[0] = vex->guest_a0;
+   regs.acrs[1] = vex->guest_a1;
+   regs.acrs[2] = vex->guest_a2;
+   regs.acrs[3] = vex->guest_a3;
+   regs.acrs[4] = vex->guest_a4;
+   regs.acrs[5] = vex->guest_a5;
+   regs.acrs[6] = vex->guest_a6;
+   regs.acrs[7] = vex->guest_a7;
+   regs.acrs[8] = vex->guest_a8;
+   regs.acrs[9] = vex->guest_a9;
+   regs.acrs[10] = vex->guest_a10;
+   regs.acrs[11] = vex->guest_a11;
+   regs.acrs[12] = vex->guest_a12;
+   regs.acrs[13] = vex->guest_a13;
+   regs.acrs[14] = vex->guest_a14;
+   regs.acrs[15] = vex->guest_a15;
+
+   /* only used for system call restart and friends, just use r2 */
+   regs.orig_gpr2 = vex->guest_r2;
+
+   regs.fp_regs.fprs[0].ui = vex->guest_f0;
+   regs.fp_regs.fprs[1].ui = vex->guest_f1;
+   regs.fp_regs.fprs[2].ui = vex->guest_f2;
+   regs.fp_regs.fprs[3].ui = vex->guest_f3;
+   regs.fp_regs.fprs[4].ui = vex->guest_f4;
+   regs.fp_regs.fprs[5].ui = vex->guest_f5;
+   regs.fp_regs.fprs[6].ui = vex->guest_f6;
+   regs.fp_regs.fprs[7].ui = vex->guest_f7;
+   regs.fp_regs.fprs[8].ui = vex->guest_f8;
+   regs.fp_regs.fprs[9].ui = vex->guest_f9;
+   regs.fp_regs.fprs[10].ui = vex->guest_f10;
+   regs.fp_regs.fprs[11].ui = vex->guest_f11;
+   regs.fp_regs.fprs[12].ui = vex->guest_f12;
+   regs.fp_regs.fprs[13].ui = vex->guest_f13;
+   regs.fp_regs.fprs[14].ui = vex->guest_f14;
+   regs.fp_regs.fprs[15].ui = vex->guest_f15;
+   regs.fp_regs.fpc = vex->guest_fpc;
+
+   return VG_(ptrace)(VKI_PTRACE_POKEUSR_AREA, pid,  &pa, NULL);
+
 #else
 #  error Unknown arch
 #endif
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/d3basics.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/d3basics.c
index 18de8f50b..cdf7541aa 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/d3basics.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/d3basics.c
@@ -409,6 +409,9 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr* a, Word regno, RegSummary* regs )
    if (regno == 11) { *a = regs->fp; return True; } 
 #  elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
    vg_assert(0); /* this function should never be called */
+#  elif defined(VGP_s390x_linux)
+   if (regno == 15) { *a = regs->sp; return True; }
+   if (regno == 11) { *a = regs->fp; return True; }
 #  else
 #    error "Unknown platform"
 #  endif
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/debuginfo.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/debuginfo.c
index dabe3fc0d..d9c822c75 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/debuginfo.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/debuginfo.c
@@ -31,6 +31,7 @@
 
 #include "pub_core_basics.h"
 #include "pub_core_vki.h"
+#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
 #include "pub_core_threadstate.h"
 #include "pub_core_debuginfo.h"  /* self */
 #include "pub_core_demangle.h"
@@ -606,7 +607,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV )
    DebugInfo* di;
    ULong      di_handle;
    SysRes     fd;
-   Int        nread;
+   Int        nread, oflags;
    HChar      buf1k[1024];
    Bool       debug = False;
    SysRes     statres;
@@ -710,6 +711,15 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV )
 
       2009 Aug 16: apply similar kludge to ppc32-linux.
       See http://bugs.kde.org/show_bug.cgi?id=190820
+
+      There are two modes on s390x: with and without the noexec kernel
+      parameter. Together with some older kernels, this leads to several
+      variants:
+      executable: r and x
+      data:       r and w and x
+      or
+      executable: r and x
+      data:       r and w
    */
    is_rx_map = False;
    is_rw_map = False;
@@ -719,6 +729,9 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV )
 #  elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_arm)
    is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
    is_rw_map = seg->hasR && seg->hasW && !seg->hasX;
+#  elif defined(VGP_s390x_linux)
+   is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
+   is_rw_map = seg->hasR && seg->hasW;
 #  else
 #    error "Unknown platform"
 #  endif
@@ -734,7 +747,11 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV )
    /* Peer at the first few bytes of the file, to see if it is an ELF */
    /* object file. Ignore the file if we do not have read permission. */
    VG_(memset)(buf1k, 0, sizeof(buf1k));
-   fd = VG_(open)( filename, VKI_O_RDONLY, 0 );
+   oflags = VKI_O_RDONLY;
+#  if defined(VKI_O_LARGEFILE)
+   oflags |= VKI_O_LARGEFILE;
+#  endif
+   fd = VG_(open)( filename, oflags, 0 );
    if (sr_isError(fd)) {
       if (sr_Err(fd) != VKI_EACCES) {
          DebugInfo fake_di;
@@ -917,8 +934,8 @@ void VG_(di_notify_pdb_debuginfo)( Int fd_obj, Addr avma_obj,
    if (VG_(clo_verbosity) > 0) {
       VG_(message)(Vg_UserMsg, "\n");
       VG_(message)(Vg_UserMsg,
-         "LOAD_PDB_DEBUGINFO(fd=%d, avma=%#lx, total_size=%lu, "
-         "uu_reloc=%#lx)\n", 
+         "LOAD_PDB_DEBUGINFO: clreq:   fd=%d, avma=%#lx, total_size=%lu, "
+         "uu_reloc=%#lx\n", 
          fd_obj, avma_obj, total_size, unknown_purpose__reloc
       );
    }
@@ -1053,16 +1070,39 @@ void VG_(di_notify_pdb_debuginfo)( Int fd_obj, Addr avma_obj,
       goto out;
    }
 
-   /* Looks promising; go on to try and read stuff from it. */
+   /* Looks promising; go on to try and read stuff from it.  But don't
+      mmap the file.  Instead mmap free space and read the file into
+      it.  This is because files on CIFS filesystems that are mounted
+      '-o directio' can't be mmap'd, and that mount option is needed
+      to make CIFS work reliably.  (See
+      http://www.nabble.com/Corrupted-data-on-write-to-
+                            Windows-2003-Server-t2782623.html)
+      This is slower, but at least it works reliably. */
    fd_pdbimage = sr_Res(sres);
    n_pdbimage  = stat_buf.size;
-   sres = VG_(am_mmap_file_float_valgrind)( n_pdbimage, VKI_PROT_READ,
-                                            fd_pdbimage, 0 );
+   if (n_pdbimage == 0 || n_pdbimage > 0x7FFFFFFF) {
+      // 0x7FFFFFFF: why?  Because the VG_(read) just below only
+      // can deal with a signed int as the size of data to read,
+      // so we can't reliably check for read failure for files
+      // greater than that size.  Hence just skip them; we're
+      // unlikely to encounter a PDB that large anyway.
+      VG_(close)(fd_pdbimage);
+      goto out;
+   }
+   sres = VG_(am_mmap_anon_float_valgrind)( n_pdbimage );
    if (sr_isError(sres)) {
       VG_(close)(fd_pdbimage);
       goto out;
    }
 
+   void* pdbimage = (void*)sr_Res(sres);
+   r = VG_(read)( fd_pdbimage, pdbimage, (Int)n_pdbimage );
+   if (r < 0 || r != (Int)n_pdbimage) {
+      VG_(am_munmap_valgrind)( (Addr)pdbimage, n_pdbimage );
+      VG_(close)(fd_pdbimage);
+      goto out;
+   }
+
    if (VG_(clo_verbosity) > 0)
       VG_(message)(Vg_UserMsg, "LOAD_PDB_DEBUGINFO: pdbname: %s\n", pdbname);
 
@@ -1072,8 +1112,7 @@ void VG_(di_notify_pdb_debuginfo)( Int fd_obj, Addr avma_obj,
    /* dump old info for this range, if any */
    discard_syms_in_range( avma_obj, total_size );
 
-   { void* pdbimage = (void*)sr_Res(sres);
-     DebugInfo* di = find_or_create_DebugInfo_for(exename, NULL/*membername*/ );
+   { DebugInfo* di = find_or_create_DebugInfo_for(exename, NULL/*membername*/ );
 
      /* this di must be new, since we just nuked any old stuff in the range */
      vg_assert(di && !di->have_rx_map && !di->have_rw_map);
@@ -1088,6 +1127,12 @@ void VG_(di_notify_pdb_debuginfo)( Int fd_obj, Addr avma_obj,
      vg_assert(di->have_dinfo); // fails if PDB read failed
      VG_(am_munmap_valgrind)( (Addr)pdbimage, n_pdbimage );
      VG_(close)(fd_pdbimage);
+
+     if (VG_(clo_verbosity) > 0) {
+        VG_(message)(Vg_UserMsg, "LOAD_PDB_DEBUGINFO: done:    "
+                                 "%lu syms, %lu src locs, %lu fpo recs\n",
+                     di->symtab_used, di->loctab_used, di->fpo_size);
+     }
    }
 
   out:
@@ -1771,10 +1816,13 @@ Char* VG_(describe_IP)(Addr eip, Char* buf, Int n_buf)
    UInt  lineno; 
    UChar ibuf[50];
    Int   n = 0;
+
    static UChar buf_fn[BUF_LEN];
    static UChar buf_obj[BUF_LEN];
    static UChar buf_srcloc[BUF_LEN];
    static UChar buf_dirname[BUF_LEN];
+   buf_fn[0] = buf_obj[0] = buf_srcloc[0] = buf_dirname[0] = 0;
+
    Bool  know_dirinfo = False;
    Bool  know_fnname  = VG_(clo_sym_offsets)
                         ? VG_(get_fnname_w_offset) (eip, buf_fn, BUF_LEN)
@@ -1787,6 +1835,11 @@ Char* VG_(describe_IP)(Addr eip, Char* buf, Int n_buf)
                            &lineno 
                         );
 
+   buf_fn     [ sizeof(buf_fn)-1      ]  = 0;
+   buf_obj    [ sizeof(buf_obj)-1     ]  = 0;
+   buf_srcloc [ sizeof(buf_srcloc)-1  ]  = 0;
+   buf_dirname[ sizeof(buf_dirname)-1 ]  = 0;
+
    if (VG_(clo_xml)) {
 
       Bool   human_readable = True;
@@ -1858,8 +1911,32 @@ Char* VG_(describe_IP)(Addr eip, Char* buf, Int n_buf)
       }
       if (know_srcloc) {
          APPEND(" (");
-         APPEND(buf_dirname);
-         APPEND("/");
+         // Get the directory name, if any, possibly pruned, into dirname.
+         UChar* dirname = NULL;
+         if (VG_(clo_n_fullpath_after) > 0) {
+           Int i;
+           dirname = buf_dirname;
+           // Remove leading prefixes from the dirname.
+           // If user supplied --fullpath-after=foo, this will remove 
+           // a leading string which matches '.*foo' (not greedy).
+           for (i = 0; i < VG_(clo_n_fullpath_after); i++) {
+              UChar* prefix = VG_(clo_fullpath_after)[i];
+              UChar* str    = VG_(strstr)(dirname, prefix);
+              if (str) {
+                 dirname = str + VG_(strlen)(prefix);
+                 break;
+              }
+           }
+           /* remove leading "./" */
+           if (dirname[0] == '.' && dirname[1] == '/')
+              dirname += 2;
+         }
+         // do we have any interesting directory name to show?  If so
+         // add it in.
+         if (dirname && dirname[0] != 0) {
+            APPEND(dirname);
+            APPEND("/");
+         }
          APPEND(buf_srcloc);
          APPEND(":");
          VG_(sprintf)(ibuf,"%d",lineno);
@@ -1935,10 +2012,15 @@ UWord evalCfiExpr ( XArray* exprs, Int ix,
             case Creg_IA_SP: return eec->uregs->xsp;
             case Creg_IA_BP: return eec->uregs->xbp;
 #           elif defined(VGA_arm)
-            case Creg_ARM_R13: return eec->uregs->r13;
-            case Creg_ARM_R12: return eec->uregs->r12;
             case Creg_ARM_R15: return eec->uregs->r15;
             case Creg_ARM_R14: return eec->uregs->r14;
+            case Creg_ARM_R13: return eec->uregs->r13;
+            case Creg_ARM_R12: return eec->uregs->r12;
+#           elif defined(VGA_s390x)
+            case Creg_IA_IP: return eec->uregs->ia;
+            case Creg_IA_SP: return eec->uregs->sp;
+            case Creg_IA_BP: return eec->uregs->fp;
+            case Creg_S390_R14: return eec->uregs->lr;
 #           elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #           else
 #             error "Unsupported arch"
@@ -2146,6 +2228,27 @@ static Addr compute_cfa ( D3UnwindRegs* uregs,
       case CFIC_ARM_R11REL: 
          cfa = cfsi->cfa_off + uregs->r11;
          break;
+      case CFIC_ARM_R7REL: 
+         cfa = cfsi->cfa_off + uregs->r7;
+         break;
+#     elif defined(VGA_s390x)
+      case CFIC_IA_SPREL:
+         cfa = cfsi->cfa_off + uregs->sp;
+         break;
+      case CFIR_MEMCFAREL:
+      {
+         Addr a = uregs->sp + cfsi->cfa_off;
+         if (a < min_accessible || a > max_accessible-sizeof(Addr))
+            break;
+         cfa = *(Addr*)a;
+         break;
+      }
+      case CFIR_SAME:
+         cfa = uregs->fp;
+         break;
+      case CFIC_IA_BPREL:
+         cfa = cfsi->cfa_off + uregs->fp;
+         break;
 #     elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #     else
 #       error "Unsupported arch"
@@ -2178,7 +2281,7 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp,
 {
    CFSICacheEnt* ce;
    DebugInfo*    di;
-   DiCfSI*       cfsi;
+   DiCfSI*       cfsi __attribute__((unused));
 
    ce = cfsi_cache__find(ip);
 
@@ -2198,6 +2301,15 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp,
      return compute_cfa(&uregs,
                         min_accessible,  max_accessible, di, cfsi);
    }
+#elif defined(VGA_s390x)
+   { D3UnwindRegs uregs;
+     uregs.ia = ip;
+     uregs.sp = sp;
+     uregs.fp = fp;
+     return compute_cfa(&uregs,
+                        min_accessible,  max_accessible, di, cfsi);
+   }
+
 #  else
    return 0; /* indicates failure */
 #  endif
@@ -2212,24 +2324,25 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp,
    For x86 and amd64, the unwound registers are: {E,R}IP,
    {E,R}SP, {E,R}BP.
 
-   For arm, the unwound registers are: R11 R12 R13 R14 R15.
+   For arm, the unwound registers are: R7 R11 R12 R13 R14 R15.
 */
 Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
                         Addr min_accessible,
                         Addr max_accessible )
 {
-   Bool               ok;
    DebugInfo*         di;
    DiCfSI*            cfsi = NULL;
    Addr               cfa, ipHere = 0;
    CFSICacheEnt*      ce;
-   CfiExprEvalContext eec;
+   CfiExprEvalContext eec __attribute__((unused));
    D3UnwindRegs       uregsPrev;
 
 #  if defined(VGA_x86) || defined(VGA_amd64)
    ipHere = uregsHere->xip;
 #  elif defined(VGA_arm)
    ipHere = uregsHere->r15;
+#  elif defined(VGA_s390x)
+   ipHere = uregsHere->ia;
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
@@ -2282,7 +2395,7 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
                eec.uregs = uregsHere;                   \
                eec.min_accessible = min_accessible;     \
                eec.max_accessible = max_accessible;     \
-               ok = True;                               \
+               Bool ok = True;                          \
                _prev = evalCfiExpr(di->cfsi_exprs, _off, &eec, &ok ); \
                if (!ok) return False;                   \
                break;                                   \
@@ -2301,6 +2414,11 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
    COMPUTE(uregsPrev.r13, uregsHere->r13, cfsi->r13_how, cfsi->r13_off);
    COMPUTE(uregsPrev.r12, uregsHere->r12, cfsi->r12_how, cfsi->r12_off);
    COMPUTE(uregsPrev.r11, uregsHere->r11, cfsi->r11_how, cfsi->r11_off);
+   COMPUTE(uregsPrev.r7,  uregsHere->r7,  cfsi->r7_how,  cfsi->r7_off);
+#  elif defined(VGA_s390x)
+   COMPUTE(uregsPrev.ia, uregsHere->ia, cfsi->ra_how, cfsi->ra_off);
+   COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi->sp_how, cfsi->sp_off);
+   COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi->fp_how, cfsi->fp_off);
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
@@ -2550,7 +2668,16 @@ static void format_message ( /*MOD*/XArray* /* of HChar */ dn1,
    UChar* basetag   = "auxwhat"; /* a constant */
    UChar tagL[32], tagR[32], xagL[32], xagR[32];
 
-   vg_assert(frameNo >= -1);
+   if (frameNo < -1) {
+      vg_assert(0); /* Not allowed */
+   }
+   else if (frameNo == -1) {
+      vg_assert(tid == VG_INVALID_THREADID);
+   }
+   else /* (frameNo >= 0) */ {
+      vg_assert(tid != VG_INVALID_THREADID);
+   }
+
    vg_assert(dn1 && dn2);
    vg_assert(described);
    vg_assert(var && var->name);
@@ -3037,7 +3164,8 @@ Bool VG_(get_data_description)(
                                                     var->typeR, offset );
             format_message( dname1, dname2,
                             data_addr, var, offset, residual_offset,
-                            described, -1/*frameNo*/, tid );
+                            described, -1/*frameNo*/,
+                            VG_INVALID_THREADID );
             VG_(deleteXA)( described );
             zterm_XA( dname1 );
             zterm_XA( dname2 );
@@ -3295,7 +3423,6 @@ void* /* really, XArray* of StackBlock */
    /* This is a derivation of consider_vars_in_frame() above. */
    Word       i;
    DebugInfo* di;
-   RegSummary regs;
    Bool debug = False;
 
    XArray* res = VG_(newXA)( ML_(dinfo_zalloc), "di.debuginfo.dgsbai.1",
@@ -3347,9 +3474,6 @@ void* /* really, XArray* of StackBlock */
       variables on each such address range found are in scope right
       now.  Don't descend to level zero as that is the global
       scope. */
-   regs.ip = ip;
-   regs.sp = 0;
-   regs.fp = 0;
 
    /* "for each scope, working outwards ..." */
    for (i = VG_(sizeXA)(di->varinfo) - 1; i >= 1; i--) {
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_d3basics.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_d3basics.h
index 75fcb46a4..b6703e9b3 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_d3basics.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_d3basics.h
@@ -372,6 +372,8 @@ typedef enum
     DW_ATE_signed_fixed = 0xd,
     DW_ATE_unsigned_fixed = 0xe,
     DW_ATE_decimal_float = 0xf,
+    /* DWARF 4.  */
+    DW_ATE_UTF = 0x10,
     /* HP extensions.  */
     DW_ATE_HP_float80            = 0x80, /* Floating-point (80 bit).  */
     DW_ATE_HP_complex_float80    = 0x81, /* Complex floating-point (80 bit).  */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_storage.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_storage.h
index b26982516..9abff6d3b 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_storage.h
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/priv_storage.h
@@ -130,15 +130,32 @@ typedef
               CFIC_R13REL -> r13 + cfa_off
               CFIC_R12REL -> r12 + cfa_off
               CFIC_R11REL -> r11 + cfa_off
+              CFIC_R7REL  -> r7  + cfa_off
               CFIR_EXPR   -> expr whose index is in cfa_off
 
-     old_r14/r13/r12/r11/ra
-         = case r14/r13/r12/r11/ra_how of
+     old_r14/r13/r12/r11/r7/ra
+         = case r14/r13/r12/r11/r7/ra_how of
               CFIR_UNKNOWN   -> we don't know, sorry
-              CFIR_SAME      -> same as it was before (r14/r13/r12/r11 only)
-              CFIR_CFAREL    -> cfa + r14/r13/r12/r11/ra_off
-              CFIR_MEMCFAREL -> *( cfa + r14/r13/r12/r11/ra_off )
-              CFIR_EXPR      -> expr whose index is in r14/r13/r12/r11/ra_off
+              CFIR_SAME      -> same as it was before (r14/r13/r12/r11/r7 only)
+              CFIR_CFAREL    -> cfa + r14/r13/r12/r11/r7/ra_off
+              CFIR_MEMCFAREL -> *( cfa + r14/r13/r12/r11/r7/ra_off )
+              CFIR_EXPR      -> expr whose index is in r14/r13/r12/r11/r7/ra_off
+
+   On s390x we have a similar logic as x86 or amd64. We need the stack pointer
+   (r15), the frame pointer r11 (like BP) and together with the instruction
+   address in the PSW we can calculate the previous values:
+     cfa = case cfa_how of
+              CFIC_IA_SPREL -> r15 + cfa_off
+              CFIC_IA_BPREL -> r11 + cfa_off
+              CFIR_IA_EXPR  -> expr whose index is in cfa_off
+
+     old_sp/fp/ra
+         = case sp/fp/ra_how of
+              CFIR_UNKNOWN   -> we don't know, sorry
+              CFIR_SAME      -> same as it was before (sp/fp only)
+              CFIR_CFAREL    -> cfa + sp/fp/ra_off
+              CFIR_MEMCFAREL -> *( cfa + sp/fp/ra_off )
+              CFIR_EXPR      -> expr whose index is in sp/fp/ra_off
 */
 
 #define CFIC_IA_SPREL     ((UChar)1)
@@ -147,7 +164,8 @@ typedef
 #define CFIC_ARM_R13REL   ((UChar)4)
 #define CFIC_ARM_R12REL   ((UChar)5)
 #define CFIC_ARM_R11REL   ((UChar)6)
-#define CFIC_EXPR         ((UChar)7)  /* all targets */
+#define CFIC_ARM_R7REL    ((UChar)7)
+#define CFIC_EXPR         ((UChar)8)  /* all targets */
 
 #define CFIR_UNKNOWN      ((UChar)64)
 #define CFIR_SAME         ((UChar)65)
@@ -181,12 +199,14 @@ typedef
       UChar r13_how; /* a CFIR_ value */
       UChar r12_how; /* a CFIR_ value */
       UChar r11_how; /* a CFIR_ value */
+      UChar r7_how;  /* a CFIR_ value */
       Int   cfa_off;
       Int   ra_off;
       Int   r14_off;
       Int   r13_off;
       Int   r12_off;
       Int   r11_off;
+      Int   r7_off;
    }
    DiCfSI;
 #elif defined(VGA_ppc32) || defined(VGA_ppc64)
@@ -204,6 +224,21 @@ typedef
       Int   ra_off;
    }
    DiCfSI;
+#elif defined(VGA_s390x)
+typedef
+   struct {
+      Addr  base;
+      UInt  len;
+      UChar cfa_how; /* a CFIC_ value */
+      UChar sp_how;  /* a CFIR_ value */
+      UChar ra_how;  /* a CFIR_ value */
+      UChar fp_how;  /* a CFIR_ value */
+      Int   cfa_off;
+      Int   sp_off;
+      Int   ra_off;
+      Int   fp_off;
+   }
+   DiCfSI;
 #else
 #  error "Unknown arch"
 #endif
@@ -226,7 +261,8 @@ typedef
       Creg_ARM_R13,
       Creg_ARM_R12,
       Creg_ARM_R15,
-      Creg_ARM_R14
+      Creg_ARM_R14,
+      Creg_S390_R14
    }
    CfiReg;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf.c
index 00cd2af38..c22eaa1a4 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf.c
@@ -860,7 +860,7 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di,
             data += bytes_read;
             state_machine_regs.column = adv;
             if (di->ddump_line)
-               VG_(printf)("  DWARF2-line: set_column\n");
+               VG_(printf)("  Set column to %d\n", (Int)adv);
             break;
 
          case DW_LNS_negate_stmt:
@@ -990,7 +990,7 @@ void read_unitinfo_dwarf2( /*OUT*/UnitInfo* ui,
    UInt   acode, abcode;
    ULong  atoffs, blklen;
    Int    level;
-   UShort ver;
+   /* UShort ver; */
 
    UChar addr_size;
    UChar* p = unitblock_img;
@@ -1007,7 +1007,7 @@ void read_unitinfo_dwarf2( /*OUT*/UnitInfo* ui,
    p += ui->dw64 ? 12 : 4;
 
    /* version should be 2, 3 or 4 */
-   ver = *((UShort*)p);
+   /* ver = *((UShort*)p); */
    p += 2;
 
    /* get offset in abbrev */
@@ -1079,6 +1079,9 @@ void read_unitinfo_dwarf2( /*OUT*/UnitInfo* ui,
          /* TJH 27 Apr 10: in DWARF 4 lineptr (and loclistptr,macptr,
             rangelistptr classes) use FORM_sec_offset which is 64 bits
             in 64 bit DWARF and 32 bits in 32 bit DWARF. */
+         /* JRS 20 Apr 11: LLVM-2.9 encodes DW_AT_stmt_list using
+            FORM_addr rather than the FORM_data4 that GCC uses.  Hence
+            handle FORM_addr too. */
          switch( form ) {
             /* Those cases extract the data properly */
             case 0x05: /* FORM_data2 */     cval = *((UShort*)p); p +=2; break;
@@ -1101,13 +1104,16 @@ void read_unitinfo_dwarf2( /*OUT*/UnitInfo* ui,
                                             } else {
                                                cval = *((UInt*)p); p += 4;
                                             }; break;
+
+            case 0x07: /* FORM_data8 */     if (ui->dw64) cval = *((ULong*)p);
+                                            p += 8; break;
+                                            /* perhaps should assign
+                                               unconditionally to cval? */
+
             /* TODO : Following ones just skip data - implement if you need */
             case 0x01: /* FORM_addr */      p += addr_size; break;
             case 0x03: /* FORM_block2 */    p += *((UShort*)p) + 2; break;
             case 0x04: /* FORM_block4 */    p += *((UInt*)p) + 4; break;
-            case 0x07: /* FORM_data8 */     if (ui->dw64) cval = *((ULong*)p);
-                                            p += 8; break;
-                       /* perhaps should assign unconditionally to cval? */
             case 0x09: /* FORM_block */     p += read_leb128U( &p ); break;
             case 0x0a: /* FORM_block1 */    p += *p + 1; break;
             case 0x0c: /* FORM_flag */      p++; break;
@@ -1832,6 +1838,10 @@ void ML_(read_debuginfo_dwarf1) (
 #  define FP_REG         6
 #  define SP_REG         7
 #  define RA_REG_DEFAULT 16
+#elif defined(VGP_s390x_linux)
+#  define FP_REG         11    // sometimes s390 has a frame pointer in r11
+#  define SP_REG         15    // stack is always r15
+#  define RA_REG_DEFAULT 14    // the return address is in r14
 #elif defined(VGP_x86_l4re)
 #  define FP_REG         5
 #  define SP_REG         4
@@ -2063,6 +2073,7 @@ static void initUnwindContext ( /*OUT*/UnwindContext* ctx )
       /* ctx->state[j].reg[13].tag = RR_Same; */
       ctx->state[j].reg[14].tag = RR_Same;
       ctx->state[j].reg[12].tag = RR_Same;
+      ctx->state[j].reg[7].tag  = RR_Same;
       /* this can't be right though: R12 (IP) isn't callee saved. */
 #     endif
    }
@@ -2142,7 +2153,7 @@ static Bool summarise_context( /*OUT*/DiCfSI* si,
    else
    if (ctxs->cfa_is_regoff && ctxs->cfa_reg == SP_REG) {
       si->cfa_off = ctxs->cfa_off;
-#     if defined(VGA_x86) || defined(VGA_amd64)
+#     if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x)
       si->cfa_how = CFIC_IA_SPREL;
 #     elif defined(VGA_arm)
       si->cfa_how = CFIC_ARM_R13REL;
@@ -2153,7 +2164,7 @@ static Bool summarise_context( /*OUT*/DiCfSI* si,
    else
    if (ctxs->cfa_is_regoff && ctxs->cfa_reg == FP_REG) {
       si->cfa_off = ctxs->cfa_off;
-#     if defined(VGA_x86) || defined(VGA_amd64)
+#     if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x)
       si->cfa_how = CFIC_IA_BPREL;
 #     elif defined(VGA_arm)
       si->cfa_how = CFIC_ARM_R12REL;
@@ -2167,6 +2178,11 @@ static Bool summarise_context( /*OUT*/DiCfSI* si,
       si->cfa_how = CFIC_ARM_R11REL;
       si->cfa_off = ctxs->cfa_off;
    }
+   else
+   if (ctxs->cfa_is_regoff && ctxs->cfa_reg == 7/*??_REG*/) {
+      si->cfa_how = CFIC_ARM_R7REL;
+      si->cfa_off = ctxs->cfa_off;
+   }
 #  endif
    else {
       why = 1;
@@ -2261,6 +2277,9 @@ static Bool summarise_context( /*OUT*/DiCfSI* si,
    SUMMARISE_HOW(si->r11_how, si->r11_off,
                               ctxs->reg[11/*FP_REG*/] );
 
+   SUMMARISE_HOW(si->r7_how, si->r7_off,
+                             ctxs->reg[7] );
+
    if (ctxs->reg[14/*LR*/].tag == RR_Same
        && ctx->ra_reg == 14/*as we expect it always to be*/) {
       /* Generate a trivial CfiExpr, which merely says "r14".  First
@@ -2298,6 +2317,55 @@ static Bool summarise_context( /*OUT*/DiCfSI* si,
    return True;
 
 
+#  elif defined(VGA_s390x)
+
+   SUMMARISE_HOW(si->ra_how, si->ra_off,
+                             ctxs->reg[ctx->ra_reg] );
+   SUMMARISE_HOW(si->fp_how, si->fp_off,
+                             ctxs->reg[FP_REG] );
+   SUMMARISE_HOW(si->sp_how, si->sp_off,
+                             ctxs->reg[SP_REG] );
+
+   /* change some defaults to consumable values */
+   if (si->sp_how == CFIR_UNKNOWN)
+      si->sp_how = CFIR_SAME;
+
+   if (si->fp_how == CFIR_UNKNOWN)
+      si->fp_how = CFIR_SAME;
+
+   if (si->cfa_how == CFIR_UNKNOWN) {
+      si->cfa_how = CFIC_IA_SPREL;
+      si->cfa_off = 160;
+   }
+   if (si->ra_how == CFIR_UNKNOWN) {
+      if (!debuginfo->cfsi_exprs)
+         debuginfo->cfsi_exprs = VG_(newXA)( ML_(dinfo_zalloc),
+                                             "di.ccCt.2a",
+                                             ML_(dinfo_free),
+                                             sizeof(CfiExpr) );
+      si->ra_how = CFIR_EXPR;
+      si->ra_off = ML_(CfiExpr_CfiReg)( debuginfo->cfsi_exprs,
+                                        Creg_S390_R14);
+   }
+
+   /* knock out some obviously stupid cases */
+   if (si->ra_how == CFIR_SAME)
+      { why = 3; goto failed; }
+
+   /* bogus looking range?  Note, we require that the difference is
+      representable in 32 bits. */
+   if (loc_start >= ctx->loc)
+      { why = 4; goto failed; }
+   if (ctx->loc - loc_start > 10000000 /* let's say */)
+      { why = 5; goto failed; }
+
+   si->base = loc_start + ctx->initloc;
+   si->len  = (UInt)(ctx->loc - loc_start);
+
+   return True;
+
+
+
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
@@ -2326,7 +2394,7 @@ static Int copy_convert_CfiExpr_tree ( XArray*        dstxa,
                                        Int            srcix )
 {
    CfiExpr* src;
-   Int      cpL, cpR, cpA, dwreg;
+   Int      cpL, cpR, cpA;
    XArray*  srcxa = srcuc->exprs;
    vg_assert(srcxa);
    vg_assert(dstxa);
@@ -2354,8 +2422,9 @@ static Int copy_convert_CfiExpr_tree ( XArray*        dstxa,
          /* should not see these in input (are created only by this
             conversion step!) */
          VG_(core_panic)("copy_convert_CfiExpr_tree: CfiReg in input");
-      case Cex_DwReg:
+      case Cex_DwReg: {
          /* This is the only place where the conversion can fail. */
+         Int dwreg __attribute__((unused));
          dwreg = src->Cex.DwReg.reg;
 #        if defined(VGA_x86) || defined(VGA_amd64)
          if (dwreg == SP_REG)
@@ -2371,12 +2440,20 @@ static Int copy_convert_CfiExpr_tree ( XArray*        dstxa,
             return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R12 );
          if (dwreg == srcuc->ra_reg)
            return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R15 ); /* correct? */
+#        elif defined(VGA_s390x)
+         if (dwreg == SP_REG)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_SP );
+         if (dwreg == FP_REG)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_BP );
+         if (dwreg == srcuc->ra_reg)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_IP ); /* correct? */
 #        elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #        else
 #           error "Unknown arch"
 #        endif
          /* else we must fail - can't represent the reg */
          return -1;
+      }
       default:
          VG_(core_panic)("copy_convert_CfiExpr_tree: default");
    }
@@ -2419,70 +2496,110 @@ static inline Bool host_is_little_endian ( void )
 static Short read_Short ( UChar* data )
 {
    Short r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((UInt)data[1]) << 8 );
+   if (host_is_little_endian()) {
+      r = data[0]
+          | ( ((UInt)data[1]) << 8 );
+   } else {
+      r = data[1]
+          | ( ((UInt)data[0]) << 8 );
+   }
    return r;
 }
 
 static Int read_Int ( UChar* data )
 {
    Int r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((UInt)data[1]) << 8 ) 
-       | ( ((UInt)data[2]) << 16 ) 
-       | ( ((UInt)data[3]) << 24 );
+   if (host_is_little_endian()) {
+      r = data[0]
+          | ( ((UInt)data[1]) << 8 )
+          | ( ((UInt)data[2]) << 16 )
+          | ( ((UInt)data[3]) << 24 );
+   } else {
+      r = data[3]
+          | ( ((UInt)data[2]) << 8 )
+          | ( ((UInt)data[1]) << 16 )
+          | ( ((UInt)data[0]) << 24 );
+   }
    return r;
 }
 
 static Long read_Long ( UChar* data )
 {
    Long r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((ULong)data[1]) << 8 ) 
-       | ( ((ULong)data[2]) << 16 ) 
-       | ( ((ULong)data[3]) << 24 )
-       | ( ((ULong)data[4]) << 32 ) 
-       | ( ((ULong)data[5]) << 40 ) 
-       | ( ((ULong)data[6]) << 48 ) 
-       | ( ((ULong)data[7]) << 56 );
+   if (host_is_little_endian()) {
+      r = data[0]
+          | ( ((ULong)data[1]) << 8 )
+          | ( ((ULong)data[2]) << 16 )
+          | ( ((ULong)data[3]) << 24 )
+          | ( ((ULong)data[4]) << 32 )
+          | ( ((ULong)data[5]) << 40 )
+          | ( ((ULong)data[6]) << 48 )
+          | ( ((ULong)data[7]) << 56 );
+   } else {
+      r = data[7]
+          | ( ((ULong)data[6]) << 8 )
+          | ( ((ULong)data[5]) << 16 )
+          | ( ((ULong)data[4]) << 24 )
+          | ( ((ULong)data[3]) << 32 )
+          | ( ((ULong)data[2]) << 40 )
+          | ( ((ULong)data[1]) << 48 )
+          | ( ((ULong)data[0]) << 56 );
+   }
    return r;
 }
 
 static UShort read_UShort ( UChar* data )
 {
    UInt r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((UInt)data[1]) << 8 );
+   if (host_is_little_endian()) {
+      r = data[0]
+          | ( ((UInt)data[1]) << 8 );
+   } else {
+      r = data[1]
+          | ( ((UInt)data[0]) << 8 );
+   }
    return r;
 }
 
 static UInt read_UInt ( UChar* data )
 {
    UInt r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((UInt)data[1]) << 8 ) 
-       | ( ((UInt)data[2]) << 16 ) 
-       | ( ((UInt)data[3]) << 24 );
+   if (host_is_little_endian()) {
+      r = data[0]
+          | ( ((UInt)data[1]) << 8 )
+          | ( ((UInt)data[2]) << 16 )
+          | ( ((UInt)data[3]) << 24 );
+   } else {
+      r = data[3]
+          | ( ((UInt)data[2]) << 8 )
+          | ( ((UInt)data[1]) << 16 )
+          | ( ((UInt)data[0]) << 24 );
+   }
    return r;
 }
 
 static ULong read_ULong ( UChar* data )
 {
    ULong r = 0;
-   vg_assert(host_is_little_endian());
-   r = data[0] 
-       | ( ((ULong)data[1]) << 8 ) 
-       | ( ((ULong)data[2]) << 16 ) 
+   if (host_is_little_endian()) {
+      r = data[0]
+       | ( ((ULong)data[1]) << 8 )
+       | ( ((ULong)data[2]) << 16 )
        | ( ((ULong)data[3]) << 24 )
-       | ( ((ULong)data[4]) << 32 ) 
-       | ( ((ULong)data[5]) << 40 ) 
-       | ( ((ULong)data[6]) << 48 ) 
+       | ( ((ULong)data[4]) << 32 )
+       | ( ((ULong)data[5]) << 40 )
+       | ( ((ULong)data[6]) << 48 )
        | ( ((ULong)data[7]) << 56 );
+   } else {
+      r = data[7]
+       | ( ((ULong)data[6]) << 8 )
+       | ( ((ULong)data[5]) << 16 )
+       | ( ((ULong)data[4]) << 24 )
+       | ( ((ULong)data[3]) << 32 )
+       | ( ((ULong)data[2]) << 40 )
+       | ( ((ULong)data[1]) << 48 )
+       | ( ((ULong)data[0]) << 56 );
+   }
    return r;
 }
 
@@ -2856,6 +2973,7 @@ static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,
    ctxs = &ctx->state[ctx->state_sp];
    if (hi2 == DW_CFA_advance_loc) {
       delta = (UInt)lo6;
+      delta *= ctx->code_a_f;
       ctx->loc += delta;
       if (di->ddump_frames)
          VG_(printf)("  DW_CFA_advance_loc: %d to %08lx\n", 
@@ -2913,6 +3031,7 @@ static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,
          break;
       case DW_CFA_advance_loc1:
          delta = (UInt)read_UChar(&instr[i]); i+= sizeof(UChar);
+         delta *= ctx->code_a_f;
          ctx->loc += delta;
          if (di->ddump_frames)
             VG_(printf)("  DW_CFA_advance_loc1: %d to %08lx\n", 
@@ -2920,6 +3039,7 @@ static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,
          break;
       case DW_CFA_advance_loc2:
          delta = (UInt)read_UShort(&instr[i]); i+= sizeof(UShort);
+         delta *= ctx->code_a_f;
          ctx->loc += delta;
          if (di->ddump_frames)
             VG_(printf)("  DW_CFA_advance_loc2: %d to %08lx\n", 
@@ -2927,6 +3047,7 @@ static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,
          break;
       case DW_CFA_advance_loc4:
          delta = (UInt)read_UInt(&instr[i]); i+= sizeof(UInt);
+         delta *= ctx->code_a_f;
          ctx->loc += delta;
          if (di->ddump_frames)
             VG_(printf)("  DW_CFA_advance_loc4: %d to %08lx\n", 
@@ -3069,7 +3190,7 @@ static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,
          ctxs->cfa_reg       = reg;
          /* ->cfa_off unchanged */
          if (di->ddump_frames)
-            VG_(printf)("  DW_CFA_def_cfa_reg: r%d\n", (Int)reg );
+            VG_(printf)("  DW_CFA_def_cfa_register: r%d\n", (Int)reg );
          break;
 
       case DW_CFA_def_cfa_offset:
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf3.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf3.c
index 0b7d2bff1..a3c6257de 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf3.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readdwarf3.c
@@ -139,6 +139,7 @@
 #include "pub_core_libcbase.h"
 #include "pub_core_libcassert.h"
 #include "pub_core_libcprint.h"
+#include "pub_core_libcsetjmp.h"   // setjmp facilities
 #include "pub_core_options.h"
 #include "pub_core_tooliface.h"    /* VG_(needs) */
 #include "pub_core_xarray.h"
@@ -220,15 +221,6 @@ static UChar* get_address_of_Cursor ( Cursor* c ) {
    return &c->region_start_img[ c->region_next ];
 }
 
-__attribute__((noreturn)) 
-static void failWith ( Cursor* c, HChar* str ) {
-   vg_assert(c);
-   vg_assert(c->barf);
-   c->barf(str);
-   /*NOTREACHED*/
-   vg_assert(0);
-}
-
 /* FIXME: document assumptions on endianness for
    get_UShort/UInt/ULong. */
 static inline UChar get_UChar ( Cursor* c ) {
@@ -1952,7 +1944,10 @@ static void parse_var_DIE (
 
 typedef
    struct {
-      /* What source language?  'C'=C/C++, 'F'=Fortran, '?'=other
+      /* What source language?  'A'=Ada83/95,
+                                'C'=C/C++, 
+                                'F'=Fortran,
+                                '?'=other
          Established once per compilation unit. */
       UChar language;
       /* A stack of types which are currently under construction */
@@ -2040,6 +2035,22 @@ static void typestack_push ( CUConst* cc,
       typestack_show( parser, "after push" );
 }
 
+/* True if the subrange type being parsed gives the bounds of an array. */
+static Bool subrange_type_denotes_array_bounds ( D3TypeParser* parser,
+                                                 DW_TAG dtag ) {
+   vg_assert(dtag == DW_TAG_subrange_type);
+   /* For most languages, a subrange_type dtag always gives the 
+      bounds of an array.
+      For Ada, there are additional conditions as a subrange_type
+      is also used for other purposes. */
+   if (parser->language != 'A')
+      /* not Ada, so it definitely denotes an array bound. */
+      return True;
+   else
+      /* Extra constraints for Ada: it only denotes an array bound if .. */
+      return (! typestack_is_empty(parser)
+              && parser->qparentE[parser->sp].tag == Te_TyArray);
+}
 
 /* Parse a type-related DIE.  'parser' holds the current parser state.
    'admin' is where the completed types are dumped.  'dtag' is the tag
@@ -2123,10 +2134,12 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
             case DW_LANG_Fortran77: case DW_LANG_Fortran90:
             case DW_LANG_Fortran95:
                parser->language = 'F'; break;
-            case DW_LANG_Ada83: case DW_LANG_Cobol74:
+            case DW_LANG_Ada83: case DW_LANG_Ada95: 
+               parser->language = 'A'; break;
+            case DW_LANG_Cobol74:
             case DW_LANG_Cobol85: case DW_LANG_Pascal83:
             case DW_LANG_Modula2: case DW_LANG_Java:
-            case DW_LANG_Ada95: case DW_LANG_PLI:
+            case DW_LANG_PLI:
             case DW_LANG_D: case DW_LANG_Python:
             case DW_LANG_Mips_Assembler:
                parser->language = '?'; break;
@@ -2158,6 +2171,7 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
          if (attr == DW_AT_encoding && ctsSzB > 0) {
             switch (cts) {
                case DW_ATE_unsigned: case DW_ATE_unsigned_char:
+               case DW_ATE_UTF: /* since DWARF4, e.g. char16_t from C++ */
                case DW_ATE_boolean:/* FIXME - is this correct? */
                   typeE.Te.TyBase.enc = 'U'; break;
                case DW_ATE_signed: case DW_ATE_signed_char:
@@ -2277,7 +2291,11 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
                                  "" );
 
       /* Do we have something that looks sane? */
-      if (typeE.Te.TyEnum.szB == 0 /* we must know the size */)
+      if (typeE.Te.TyEnum.szB == 0 
+          /* we must know the size */
+          /* but not for Ada, which uses such dummy
+             enumerations as helper for gdb ada mode. */
+          && parser->language != 'A')
          goto bad_DIE;
       /* On't stack! */
       typestack_push( cc, parser, td3, &typeE, level );
@@ -2536,7 +2554,9 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
       goto acquire_Type;
    }
 
-   if (dtag == DW_TAG_subrange_type) {
+   /* this is a subrange type defining the bounds of an array. */
+   if (dtag == DW_TAG_subrange_type 
+       && subrange_type_denotes_array_bounds(parser, dtag)) {
       Bool have_lower = False;
       Bool have_upper = False;
       Bool have_count = False;
@@ -2547,6 +2567,7 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
          case 'C': have_lower = True;  lower = 0; break;
          case 'F': have_lower = True;  lower = 1; break;
          case '?': have_lower = False; break;
+         case 'A': have_lower = False; break;
          default:  vg_assert(0); /* assured us by handling of
                                     DW_TAG_compile_unit in this fn */
       }
@@ -2622,8 +2643,13 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
       goto acquire_Bound;
    }
 
-   if (dtag == DW_TAG_typedef) {
-      /* We can pick up a new typedef any time. */
+   /* typedef or subrange_type other than array bounds. */
+   if (dtag == DW_TAG_typedef 
+       || (dtag == DW_TAG_subrange_type 
+           && !subrange_type_denotes_array_bounds(parser, dtag))) {
+      /* subrange_type other than array bound is only for Ada. */
+      vg_assert (dtag == DW_TAG_typedef || parser->language == 'A');
+      /* We can pick up a new typedef/subrange_type any time. */
       VG_(memset)(&typeE, 0, sizeof(typeE));
       typeE.cuOff = D3_INVALID_CUOFF;
       typeE.tag   = Te_TyTyDef;
@@ -2647,6 +2673,12 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
       /* Do we have something that looks sane? */
       if (/* must have a name */
           typeE.Te.TyTyDef.name == NULL
+          /* However gcc gnat Ada generates minimal typedef
+             such as the below => accept no name for Ada.
+             <6><91cc>: DW_TAG_typedef
+                DW_AT_abstract_ori: <9066>
+          */
+          && parser->language != 'A'
           /* but the referred-to type can be absent */)
          goto bad_DIE;
       else
@@ -3759,8 +3791,11 @@ void new_dwarf3_reader_wrk (
          key.dioff = varp->absOri; /* this is what we want to find */
          found = VG_(lookupXA)( dioff_lookup_tab, &keyp,
                                 &ixFirst, &ixLast );
-         if (!found)
-            barf("DW_AT_abstract_origin can't be resolved");
+         if (!found) {
+            /* barf("DW_AT_abstract_origin can't be resolved"); */
+            TRACE_D3("  SKIP (DW_AT_abstract_origin can't be resolved)\n\n");
+            continue;
+         }
          /* If the following fails, there is more than one entry with
             the same dioff.  Which can't happen. */
          vg_assert(ixFirst == ixLast);
@@ -3918,18 +3953,14 @@ void new_dwarf3_reader_wrk (
 /*---                                                      ---*/
 /*------------------------------------------------------------*/
 
-/* --- !!! --- EXTERNAL HEADERS start --- !!! --- */
-#include    /* For jmp_buf */
-/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */
-
-static Bool    d3rd_jmpbuf_valid  = False;
-static HChar*  d3rd_jmpbuf_reason = NULL;
-static jmp_buf d3rd_jmpbuf;
+static Bool               d3rd_jmpbuf_valid  = False;
+static HChar*             d3rd_jmpbuf_reason = NULL;
+static VG_MINIMAL_JMP_BUF(d3rd_jmpbuf);
 
 static __attribute__((noreturn)) void barf ( HChar* reason ) {
    vg_assert(d3rd_jmpbuf_valid);
    d3rd_jmpbuf_reason = reason;
-   __builtin_longjmp(&d3rd_jmpbuf, 1);
+   VG_MINIMAL_LONGJMP(d3rd_jmpbuf);
    /*NOTREACHED*/
    vg_assert(0);
 }
@@ -3957,7 +3988,7 @@ ML_(new_dwarf3_reader) (
    vg_assert(d3rd_jmpbuf_reason == NULL);
 
    d3rd_jmpbuf_valid = True;
-   jumped = __builtin_setjmp(&d3rd_jmpbuf);
+   jumped = VG_MINIMAL_SETJMP(d3rd_jmpbuf);
    if (jumped == 0) {
       /* try this ... */
       new_dwarf3_reader_wrk( di, barf,
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readelf.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readelf.c
index 3b912b566..ba7b23a05 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readelf.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readelf.c
@@ -70,7 +70,9 @@
 #  define  ElfXX_Ehdr     Elf32_Ehdr
 #  define  ElfXX_Shdr     Elf32_Shdr
 #  define  ElfXX_Phdr     Elf32_Phdr
+#  define  ElfXX_Nhdr     Elf32_Nhdr
 #  define  ElfXX_Sym      Elf32_Sym
+#  define  ElfXX_Off      Elf32_Off
 #  define  ElfXX_Word     Elf32_Word
 #  define  ElfXX_Addr     Elf32_Addr
 #  define  ElfXX_Dyn      Elf32_Dyn
@@ -81,7 +83,9 @@
 #  define  ElfXX_Ehdr     Elf64_Ehdr
 #  define  ElfXX_Shdr     Elf64_Shdr
 #  define  ElfXX_Phdr     Elf64_Phdr
+#  define  ElfXX_Nhdr     Elf64_Nhdr
 #  define  ElfXX_Sym      Elf64_Sym
+#  define  ElfXX_Off      Elf64_Off
 #  define  ElfXX_Word     Elf64_Word
 #  define  ElfXX_Addr     Elf64_Addr
 #  define  ElfXX_Dyn      Elf64_Dyn
@@ -851,6 +855,56 @@ void read_elf_symtab__ppc64_linux(
 }
 
 
+/*
+ * Look for a build-id in an ELF image. The build-id specification
+ * can be found here:
+ *
+ * http://fedoraproject.org/wiki/RolandMcGrath/BuildID
+ */
+static
+Char *find_buildid(Addr image, UWord n_image)
+{
+   Char* buildid = NULL;
+   ElfXX_Ehdr* ehdr = (ElfXX_Ehdr*)image;
+
+#ifdef NT_GNU_BUILD_ID
+   if (n_image >= sizeof(ElfXX_Ehdr) &&
+       ML_(is_elf_object_file)(ehdr, n_image)) {
+      Word i;
+
+      for (i = 0; i < ehdr->e_phnum; i++) {
+         ElfXX_Phdr* phdr = (ElfXX_Phdr*)(image + ehdr->e_phoff + i * ehdr->e_phentsize);
+
+         if (phdr->p_type == PT_NOTE) {
+            ElfXX_Off offset =  phdr->p_offset;
+
+            while (offset < phdr->p_offset + phdr->p_filesz) {
+               ElfXX_Nhdr* note = (ElfXX_Nhdr*)(image + offset);
+               Char* name = (Char *)note + sizeof(ElfXX_Nhdr);
+               UChar *desc = (UChar *)name + ((note->n_namesz + 3) & ~3);
+               Word j;
+
+               if (VG_(strcmp)(name, ELF_NOTE_GNU) == 0 &&
+                   note->n_type == NT_GNU_BUILD_ID) {
+                  buildid = ML_(dinfo_zalloc)("di.fbi.1", note->n_descsz * 2 + 1);
+                  
+                  for (j = 0; j < note->n_descsz; j++) {
+                     VG_(sprintf)(buildid + VG_(strlen)(buildid), "%02x", desc[j]);
+                  }
+               }
+
+               offset = offset + sizeof(ElfXX_Nhdr)
+                               + ((note->n_namesz + 3) & ~3)
+                               + ((note->n_descsz + 3) & ~3);
+            }            
+         }
+      }    
+   }
+#endif
+
+   return buildid;
+}
+
 /*
  * This routine for calculating the CRC for a separate debug file
  * is GPLed code borrowed from GNU binutils.
@@ -926,7 +980,7 @@ calc_gnu_debuglink_crc32(UInt crc, const UChar *buf, Int len)
  * not match the value from the main object file.
  */
 static
-Addr open_debug_file( Char* name, UInt crc, /*OUT*/UWord* size )
+Addr open_debug_file( Char* name, Char* buildid, UInt crc, /*OUT*/UWord* size )
 {
    SysRes fd, sres;
    struct vg_stat stat_buf;
@@ -943,7 +997,7 @@ Addr open_debug_file( Char* name, UInt crc, /*OUT*/UWord* size )
 
    if (VG_(clo_verbosity) > 1)
       VG_(message)(Vg_DebugMsg, "  Considering %s ..\n", name);
-
+   
    *size = stat_buf.size;
    
    sres = VG_(am_mmap_file_float_valgrind)
@@ -954,18 +1008,35 @@ Addr open_debug_file( Char* name, UInt crc, /*OUT*/UWord* size )
    if (sr_isError(sres))
       return 0;
 
-   calccrc = calc_gnu_debuglink_crc32(0, (UChar*)sr_Res(sres), *size);
-   if (calccrc != crc) {
-      SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
-      vg_assert(!sr_isError(res));
+   if (buildid) {
+      Char* debug_buildid = find_buildid(sr_Res(sres), *size);
+      if (debug_buildid == NULL || VG_(strcmp)(buildid, debug_buildid) != 0) {
+         SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
+         vg_assert(!sr_isError(res));
+         if (VG_(clo_verbosity) > 1)
+            VG_(message)(Vg_DebugMsg, 
+               "  .. build-id mismatch (found %s wanted %s)\n", debug_buildid, buildid);
+         ML_(dinfo_free)(debug_buildid);
+         return 0;
+      }
+      ML_(dinfo_free)(debug_buildid);
+
       if (VG_(clo_verbosity) > 1)
-         VG_(message)(Vg_DebugMsg, 
-            "  .. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
-      return 0;
-   }
+         VG_(message)(Vg_DebugMsg, "  .. build-id is valid\n");
+   } else {
+      calccrc = calc_gnu_debuglink_crc32(0, (UChar*)sr_Res(sres), *size);
+      if (calccrc != crc) {
+         SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
+         vg_assert(!sr_isError(res));
+         if (VG_(clo_verbosity) > 1)
+            VG_(message)(Vg_DebugMsg, 
+               "  .. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
+         return 0;
+      }
 
-   if (VG_(clo_verbosity) > 1)
-      VG_(message)(Vg_DebugMsg, "  .. CRC is valid\n");
+      if (VG_(clo_verbosity) > 1)
+         VG_(message)(Vg_DebugMsg, "  .. CRC is valid\n");
+   }
    
    return sr_Res(sres);
 }
@@ -975,39 +1046,58 @@ Addr open_debug_file( Char* name, UInt crc, /*OUT*/UWord* size )
  */
 static
 Addr find_debug_file( struct _DebugInfo* di,
-                      Char* objpath, Char* debugname, 
-                      UInt crc, /*OUT*/UWord* size )
+                      Char* objpath, Char* buildid,
+                      Char* debugname, UInt crc,
+                      /*OUT*/UWord* size )
 {
-   Char *objdir = ML_(dinfo_strdup)("di.fdf.1", objpath);
-   Char *objdirptr;
-   Char *debugpath;
+   Char *debugpath = NULL;
    Addr addr = 0;
-  
-   if ((objdirptr = VG_(strrchr)(objdir, '/')) != NULL)
-      *objdirptr = '\0';
 
-   debugpath = ML_(dinfo_zalloc)(
-                  "di.fdf.2",
-                  VG_(strlen)(objdir) + VG_(strlen)(debugname) + 32);
-   
-   VG_(sprintf)(debugpath, "%s/%s", objdir, debugname);
+   if (buildid != NULL) {
+      debugpath = ML_(dinfo_zalloc)(
+                     "di.fdf.1",
+                     VG_(strlen)(buildid) + 33);
 
-   if ((addr = open_debug_file(debugpath, crc, size)) == 0) {
-      VG_(sprintf)(debugpath, "%s/.debug/%s", objdir, debugname);
-      if ((addr = open_debug_file(debugpath, crc, size)) == 0) {
-         VG_(sprintf)(debugpath, "/usr/lib/debug%s/%s", objdir, debugname);
-         addr = open_debug_file(debugpath, crc, size);
+      VG_(sprintf)(debugpath, "/usr/lib/debug/.build-id/%c%c/%s.debug",
+                   buildid[0], buildid[1], buildid + 2);
+
+      if ((addr = open_debug_file(debugpath, buildid, 0, size)) == 0) {
+         ML_(dinfo_free)(debugpath);
+         debugpath = NULL;
       }
    }
 
+   if (addr == 0 && debugname != NULL) {
+      Char *objdir = ML_(dinfo_strdup)("di.fdf.2", objpath);
+      Char *objdirptr;
+
+      if ((objdirptr = VG_(strrchr)(objdir, '/')) != NULL)
+         *objdirptr = '\0';
+
+      debugpath = ML_(dinfo_zalloc)(
+                     "di.fdf.3",
+                     VG_(strlen)(objdir) + VG_(strlen)(debugname) + 32);
+
+      VG_(sprintf)(debugpath, "%s/%s", objdir, debugname);
+
+      if ((addr = open_debug_file(debugpath, NULL, crc, size)) == 0) {
+         VG_(sprintf)(debugpath, "%s/.debug/%s", objdir, debugname);
+         if ((addr = open_debug_file(debugpath, NULL, crc, size)) == 0) {
+            VG_(sprintf)(debugpath, "/usr/lib/debug%s/%s", objdir, debugname);
+            addr = open_debug_file(debugpath, NULL, crc, size);
+         }
+      }
+
+      ML_(dinfo_free)(objdir);
+   }
+
    if (addr) {
       TRACE_SYMTAB("\n");
       TRACE_SYMTAB("------ Found a debuginfo file: %s\n", debugpath);
    }
 
    ML_(dinfo_free)(debugpath);
-   ML_(dinfo_free)(objdir);
-   
+
    return addr;
 }
 
@@ -1100,6 +1190,9 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
    Addr     rw_svma_limit = 0;
    PtrdiffT rw_bias = 0;
 
+   /* Build ID */
+   Char* buildid = NULL;
+
    vg_assert(di);
    vg_assert(di->have_rx_map == True);
    vg_assert(di->have_rw_map == True);
@@ -1646,7 +1739,8 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
 
       /* PLT is different on different platforms, it seems. */
 #     if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
-         || defined(VGP_arm_linux) || defined(VGP_x86_l4re)
+         || defined(VGP_arm_linux) || defined(VGP_s390x_linux) \
+         || defined(VGP_x86_l4re)
       /* Accept .plt where mapped as rx (code) */
       if (0 == VG_(strcmp)(name, ".plt")) {
          if (inrx && size > 0 && !di->plt_present) {
@@ -1849,20 +1943,31 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
 
 #        undef FIND
       }
-         
-      /* Did we find a debuglink section? */
-      if (debuglink_img != NULL) {
-         UInt crc_offset = VG_ROUNDUP(VG_(strlen)(debuglink_img)+1, 4);
-         UInt crc;
 
-         vg_assert(crc_offset + sizeof(UInt) <= debuglink_sz);
+      /* Look for a build-id */
+      buildid = find_buildid(oimage, n_oimage);
+
+      /* Look for a debug image */
+      if (buildid != NULL || debuglink_img != NULL) {
+         /* Do have a debuglink section? */
+         if (debuglink_img != NULL) {
+            UInt crc_offset = VG_ROUNDUP(VG_(strlen)(debuglink_img)+1, 4);
+            UInt crc;
 
-         /* Extract the CRC from the debuglink section */
-         crc = *(UInt *)(debuglink_img + crc_offset);
+            vg_assert(crc_offset + sizeof(UInt) <= debuglink_sz);
+
+            /* Extract the CRC from the debuglink section */
+            crc = *(UInt *)(debuglink_img + crc_offset);
+
+            /* See if we can find a matching debug file */
+            dimage = find_debug_file( di, di->filename, buildid,
+                                      debuglink_img, crc, &n_dimage );
+         } else {
+            /* See if we can find a matching debug file */
+            dimage = find_debug_file( di, di->filename, buildid, NULL, 0, &n_dimage );
+         }
 
-         /* See if we can find a matching debug file */
-         dimage = find_debug_file( di, di->filename, debuglink_img,
-                                   crc, &n_dimage );
+         ML_(dinfo_free)(buildid);
 
          if (dimage != 0 
              && n_dimage >= sizeof(ElfXX_Ehdr)
@@ -1881,10 +1986,10 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
             UChar*      shdr_strtab_dimg = NULL;
 
             /* SVMAs covered by rx and rw segments and corresponding bias. */
-            Addr     rx_dsvma_base = 0;
+            /* Addr     rx_dsvma_base = 0; */ /* UNUSED */
             Addr     rx_dsvma_limit = 0;
             PtrdiffT rx_dbias = 0;
-            Addr     rw_dsvma_base = 0;
+            /* Addr     rw_dsvma_base = 0; */ /* UNUSED */
             Addr     rw_dsvma_limit = 0;
             PtrdiffT rw_dbias = 0;
 
@@ -1941,15 +2046,16 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
                       && phdr->p_offset >= di->rx_map_foff
                       && phdr->p_offset < di->rx_map_foff + di->rx_map_size
                       && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size) {
-                     rx_dsvma_base = phdr->p_vaddr;
+                     /* rx_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
                      rx_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
                      rx_dbias = di->rx_map_avma - di->rx_map_foff + phdr->p_offset - phdr->p_vaddr;
                   }
-                  else if (rw_dsvma_limit == 0
-                           && phdr->p_offset >= di->rw_map_foff
-                           && phdr->p_offset < di->rw_map_foff + di->rw_map_size
-                           && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
-                     rw_dsvma_base = phdr->p_vaddr;
+                  else
+                  if (rw_dsvma_limit == 0
+                      && phdr->p_offset >= di->rw_map_foff
+                      && phdr->p_offset < di->rw_map_foff + di->rw_map_size
+                      && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
+                     /* rw_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
                      rw_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
                      rw_dbias = di->rw_map_avma - di->rw_map_foff + phdr->p_offset - phdr->p_vaddr;
                   }
@@ -2083,8 +2189,9 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
 
       /* Read the stabs and/or dwarf2 debug information, if any.  It
          appears reading stabs stuff on amd64-linux doesn't work, so
-         we ignore it. */
-#     if !defined(VGP_amd64_linux)
+         we ignore it. On s390x stabs also doesnt work and we always
+         have the dwarf info in the eh_frame. */
+#     if !defined(VGP_amd64_linux)  && !defined(VGP_s390x_linux)
       if (stab_img && stabstr_img) {
          ML_(read_debuginfo_stabs) ( di, stab_img, stab_sz, 
                                          stabstr_img, stabstr_sz );
@@ -2128,6 +2235,35 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
    }
    res = True;
 
+   /* If reading Dwarf3 variable type/location info, print a line
+      showing the number of variables read for each object.
+      (Currently disabled -- is a sanity-check mechanism for
+      exp-sgcheck.) */
+   if (0 && (VG_(needs).var_info || VG_(clo_read_var_info))) {
+      UWord nVars = 0;
+      Word  j;
+      if (di->varinfo) {
+         for (j = 0; j < VG_(sizeXA)(di->varinfo); j++) {
+            OSet* /* of DiAddrRange */ scope
+               = *(OSet**)VG_(indexXA)(di->varinfo, j);
+            vg_assert(scope);
+            VG_(OSetGen_ResetIter)( scope );
+            while (True) {
+               DiAddrRange* range  = VG_(OSetGen_Next)( scope );
+               if (!range) break;
+               vg_assert(range->vars);
+               Word w = VG_(sizeXA)(range->vars);
+               vg_assert(w >= 0);
+               if (0) VG_(printf)("range %#lx %#lx %ld\n",
+                                  range->aMin, range->aMax, w);
+               nVars += (UWord)w;
+            }
+         }
+      }
+      VG_(umsg)("VARINFO: %7lu vars   %7ld text_size   %s\n",
+                nVars, di->text_size, di->filename);
+   }
+
   out: {
    SysRes m_res;
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readpdb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readpdb.c
index 3920b0a01..792e028ba 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readpdb.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readpdb.c
@@ -2101,21 +2101,21 @@ static void pdb_dump( struct pdb_reader* pdb,
     */
    file = symbols_image + header_size;
    while ( file - symbols_image < header_size + symbols.module_size ) {
-      int file_nr, file_index, symbol_size, lineno_size;
+      int file_nr, /* file_index, */ symbol_size, lineno_size;
       char *file_name;
 
       if ( symbols.version < 19970000 ) {
          PDB_SYMBOL_FILE *sym_file = (PDB_SYMBOL_FILE *) file;
          file_nr     = sym_file->file;
          file_name   = sym_file->filename;
-         file_index  = sym_file->range.index;
+         /* file_index  = sym_file->range.index; */ /* UNUSED */
          symbol_size = sym_file->symbol_size;
          lineno_size = sym_file->lineno_size;
       } else {
          PDB_SYMBOL_FILE_EX *sym_file = (PDB_SYMBOL_FILE_EX *) file;
          file_nr     = sym_file->file;
          file_name   = sym_file->filename;
-         file_index  = sym_file->range.index;
+         /* file_index  = sym_file->range.index; */ /* UNUSED */
          symbol_size = sym_file->symbol_size;
          lineno_size = sym_file->lineno_size;
       }
@@ -2474,7 +2474,7 @@ HChar* ML_(find_name_of_pdb_file)( HChar* pename )
                 + 100/*misc*/;
    HChar* cmd = ML_(dinfo_zalloc)("di.readpe.fnopf.cmd", cmdlen);
    vg_assert(cmd);
-   VG_(sprintf)(cmd, "%s -c \"%s %s | %s '\\.pdb|\\.PDB' >> %s\"",
+   VG_(sprintf)(cmd, "%s -c \"%s '%s' | %s '\\.pdb|\\.PDB' >> %s\"",
                      sh, strings, pename, egrep, tmpname);
    vg_assert(cmd[cmdlen-1] == 0);
    if (0) VG_(printf)("QQQQQQQQ: %s\n", cmd);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readstabs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readstabs.c
index 00cbf6be7..30bfe6a44 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readstabs.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/readstabs.c
@@ -338,13 +338,11 @@ void ML_(read_debuginfo_stabs) ( DebugInfo* di,
 
          case N_FUN: {                /* function start/end */
             Addr addr = 0;        /* end address for prev line/scope */
-            Bool newfunc = False;
 
             /* if this the end of the function or we haven't
                previously finished the previous function... */
             if (*string == '\0' || func.start != 0) {
                /* end of function */
-               newfunc = False;
                line.first = False;
 
                /* end line at end of function */
@@ -358,7 +356,6 @@ void ML_(read_debuginfo_stabs) ( DebugInfo* di,
 
             if (*string != '\0') {
                /* new function */
-               newfunc = True;
                line.first = True;
 
                /* line ends at start of next function */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/storage.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/storage.c
index c5cb2a93b..c8c9187e4 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/storage.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/storage.c
@@ -141,6 +141,12 @@ void ML_(ppDiCfSI) ( XArray* /* of CfiExpr */ exprs, DiCfSI* si )
       case CFIC_ARM_R11REL: 
          VG_(printf)("let cfa=oldR11+%d", si->cfa_off); 
          break;
+      case CFIR_SAME:
+         VG_(printf)("let cfa=Same");
+         break;
+      case CFIC_ARM_R7REL: 
+         VG_(printf)("let cfa=oldR7+%d", si->cfa_off); 
+         break;
       case CFIC_EXPR: 
          VG_(printf)("let cfa={"); 
          ML_(ppCfiExpr)(exprs, si->cfa_off);
@@ -166,7 +172,14 @@ void ML_(ppDiCfSI) ( XArray* /* of CfiExpr */ exprs, DiCfSI* si )
    SHOW_HOW(si->r12_how, si->r12_off);
    VG_(printf)(" R11=");
    SHOW_HOW(si->r11_how, si->r11_off);
+   VG_(printf)(" R7=");
+   SHOW_HOW(si->r7_how, si->r7_off);
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
+#  elif defined(VGA_s390x)
+   VG_(printf)(" SP=");
+   SHOW_HOW(si->sp_how, si->sp_off);
+   VG_(printf)(" FP=");
+   SHOW_HOW(si->fp_how, si->fp_off);
 #  else
 #    error "Unknown arch"
 #  endif
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/tytypes.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/tytypes.c
index 10cc47364..c16813bbf 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/tytypes.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuginfo/tytypes.c
@@ -692,6 +692,8 @@ MaybeULong ML_(sizeOfType)( XArray* /* of TyEnt */ tyents,
                                                   - bo->Te.Bound.boundL + 1) ));
          }
          return eszB;
+      case Te_TyVoid:
+         return mk_MaybeULong_Nothing(); /*UNKNOWN*/
       default:
          VG_(printf)("ML_(sizeOfType): unhandled: ");
          ML_(pp_TyEnt)(ent);
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuglog.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuglog.c
index c018b60c0..345e2e9c4 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuglog.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_debuglog.c
@@ -87,7 +87,7 @@ static UInt local_sys_write_stderr ( HChar* buf, Int n )
       "movl  %%eax, 0(%%ebx)\n" /* block[0] = result */
       "popl  %%ebx\n"           /* restore ebx */
       : /*wr*/
-      : /*rd*/    "g" (block)
+      : /*rd*/    "r" (block)
       : /*trash*/ "eax", "edi", "ecx", "edx", "memory", "cc"
    );
    if (block[0] < 0) 
@@ -130,7 +130,7 @@ static UInt local_sys_write_stderr ( HChar* buf, Int n )
       "popq  %%r15\n"           /* restore r15 */
       "addq  $256, %%rsp\n"     /* restore stack ptr */
       : /*wr*/
-      : /*rd*/    "g" (block)
+      : /*rd*/    "r" (block)
       : /*trash*/ "rax", "rdi", "rsi", "rdx", "memory", "cc"
    );
    if (block[0] < 0) 
@@ -534,6 +534,48 @@ static UInt local_sys_getpid ( void )
   return (UInt)l4_utcb_tcr()->user[2];
 }
 
+#elif defined(VGP_s390x_linux)
+static UInt local_sys_write_stderr ( HChar* buf, Int n )
+{
+   register Int    r2     asm("2") = 2;      /* file descriptor STDERR */
+   register HChar* r3     asm("3") = buf;
+   register ULong  r4     asm("4") = n;
+   register ULong  r2_res asm("2");
+   ULong __res;
+
+   __asm__ __volatile__ (
+      "svc %b1\n"
+      : "=d" (r2_res)
+      : "i" (__NR_write),
+        "0" (r2),
+        "d" (r3),
+        "d" (r4)
+      : "cc", "memory");
+   __res = r2_res;
+
+   if (__res >= (ULong)(-125))
+      __res = -1;
+   return (UInt)(__res);
+}
+
+static UInt local_sys_getpid ( void )
+{
+   register ULong r2 asm("2");
+   ULong __res;
+
+   __asm__ __volatile__ (
+      "svc %b1\n"
+      : "=d" (r2)
+      : "i" (__NR_getpid)
+      : "cc", "memory");
+   __res = r2;
+
+   if (__res >= (ULong)(-125))
+      __res = -1;
+   return (UInt)(__res);
+}
+
+
 #else
 # error Unknown platform
 #endif
@@ -989,7 +1031,7 @@ static void add_to_buf ( HChar c, void* p )
 void VG_(debugLog) ( Int level, const HChar* modulename,
                                 const HChar* format, ... )
 {
-   UInt ret, pid;
+   UInt pid;
    Int indent, depth, i;
    va_list vargs;
    printf_buf buf;
@@ -1021,7 +1063,7 @@ void VG_(debugLog) ( Int level, const HChar* modulename,
 
    va_start(vargs,format);
    
-   ret = VG_(debugLog_vprintf) ( add_to_buf, &buf, format, vargs );
+   (void) VG_(debugLog_vprintf) ( add_to_buf, &buf, format, vargs );
 
    if (buf.n > 0) {
       emit( buf.buf, local_strlen(buf.buf) );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-arm-linux.S b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-arm-linux.S
index 8c9281415..f67aeefa7 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-arm-linux.S
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-arm-linux.S
@@ -99,7 +99,7 @@ VG_(run_innerloop__dispatch_unprofiled):
         /* try a fast lookup in the translation cache */
         // r0 = next guest, r1,r2,r3 scratch
 	ldr  r1, =VG_TT_FAST_MASK       // r1 = VG_TT_FAST_MASK
-	and  r2, r1, r0, LSR #2         // r2 = entry #
+	and  r2, r1, r0, LSR #1         // r2 = entry #
 	ldr  r1, =VG_(tt_fast)          // r1 = &tt_fast[0]
 	add  r1, r1, r2, LSL #3         // r1 = &tt_fast[entry#]
 	ldr  r3, [r1, #0]               /* .guest */
@@ -144,7 +144,7 @@ VG_(run_innerloop__dispatch_profiled):
         /* try a fast lookup in the translation cache */
         // r0 = next guest, r1,r2,r3 scratch
 	ldr  r1, =VG_TT_FAST_MASK       // r1 = VG_TT_FAST_MASK
-	and  r2, r1, r0, LSR #2         // r2 = entry #
+	and  r2, r1, r0, LSR #1         // r2 = entry #
 	ldr  r1, =VG_(tt_fast)          // r1 = &tt_fast[0]
 	add  r1, r1, r2, LSL #3         // r1 = &tt_fast[entry#]
 	ldr  r3, [r1, #0]               /* .guest */
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-ppc64-linux.S b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-ppc64-linux.S
index c75359b72..a8f463348 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-ppc64-linux.S
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-ppc64-linux.S
@@ -310,7 +310,7 @@ VG_(run_innerloop__dispatch_unprofiled):
 	/* start over */
 	b	.VG_(run_innerloop__dispatch_unprofiled)
 	/*NOTREACHED*/
-        .size VG_(run_innerloop), .-VG_(run_innerloop)
+        .size .VG_(run_innerloop), .-.VG_(run_innerloop)
 
 
 /*----------------------------------------------------*/
@@ -385,7 +385,7 @@ VG_(run_innerloop__dispatch_profiled):
 	/* start over */
 	b	.VG_(run_innerloop__dispatch_profiled)
 	/*NOTREACHED*/
-        .size VG_(run_a_noredir_translation), .-VG_(run_a_noredir_translation)
+        .size .VG_(run_a_noredir_translation), .-.VG_(run_a_noredir_translation)
 
 
 /*----------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-s390x-linux.S b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-s390x-linux.S
new file mode 100644
index 000000000..4b9a80022
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_dispatch/dispatch-s390x-linux.S
@@ -0,0 +1,397 @@
+
+/*--------------------------------------------------------------------*/
+/*--- The core dispatch loop, for jumping to a code address.       ---*/
+/*---                                       dispatch-s390x-linux.S ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+  This file is part of Valgrind, a dynamic binary instrumentation
+  framework.
+
+  Copyright IBM Corp. 2010-2011
+
+  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.
+
+  The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Florian Krohm and Christian Borntraeger */
+
+#include "pub_core_basics_asm.h"
+#include "pub_core_dispatch_asm.h"
+#include "pub_core_transtab_asm.h"
+#include "libvex_guest_offsets.h"
+#include "libvex_s390x_common.h"
+
+#if defined(VGA_s390x)
+
+/*------------------------------------------------------------*/
+/*---                                                      ---*/
+/*--- The dispatch loop.  VG_(run_innerloop) is used to    ---*/
+/*--- run all translations except no-redir ones.           ---*/
+/*---                                                      ---*/
+/*------------------------------------------------------------*/
+
+/* Convenience definitions for readability */
+#undef  SP
+#define SP S390_REGNO_STACK_POINTER
+
+#undef  LR
+#define LR S390_REGNO_LINK_REGISTER
+
+/* Location of valgrind's saved FPC register */
+#define S390_LOC_SAVED_FPC_V S390_OFFSET_SAVED_FPC_V(SP)
+
+/* Location of saved guest state pointer */
+#define S390_LOC_SAVED_GSP S390_OFFSET_SAVED_GSP(SP)
+
+/*----------------------------------------------------*/
+/*--- Preamble (set everything up)                 ---*/
+/*----------------------------------------------------*/
+
+/* signature:
+UWord VG_(run_innerloop) ( void* guest_state, UWord do_profiling );
+*/
+
+.text
+.align   4
+.globl VG_(run_innerloop)
+VG_(run_innerloop):
+        /* r2 holds address of guest_state */
+        /* r3 holds do_profiling (a flag) */
+
+        /* Save gprs   ABI: r6...r13 and r15 */
+        stmg %r6,%r15,48(SP)
+
+        /* New stack frame */
+        aghi SP,-S390_INNERLOOP_FRAME_SIZE
+
+        /* Save fprs:   ABI: f8...f15 */
+        std  %f8,160+0(SP)
+        std  %f9,160+8(SP)
+        std  %f10,160+16(SP)
+        std  %f11,160+24(SP)
+        std  %f12,160+32(SP)
+        std  %f13,160+40(SP)
+        std  %f14,160+48(SP)
+        std  %f15,160+56(SP)
+
+        /* Load address of guest state into guest state register (r13) */
+        lgr  %r13,%r2
+
+        /* Store address of guest state pointer on stack.
+           It will be needed later because upon return from a VEX translation
+           r13 may contain a special value. So the old value will be used to
+           determine whether r13 contains a special value. */
+        stg  %r13,S390_LOC_SAVED_GSP
+
+        /* Save valgrind's FPC on stack so run_innerloop_exit can restore
+           it later . */
+        stfpc S390_LOC_SAVED_FPC_V
+
+        /* Load the FPC the way the client code wants it. I.e. pull the
+           value from the guest state.
+        lfpc OFFSET_s390x_fpc(%r13)
+
+        /* Get the IA from the guest state */
+        lg   %r2,OFFSET_s390x_IA(%r13)
+
+        /* Get VG_(dispatch_ctr) -- a 32-bit value -- and store it in a reg */
+        larl %r6,VG_(dispatch_ctr)
+        l    S390_REGNO_DISPATCH_CTR,0(%r6)
+
+        /* Fall into main loop (the right one) */
+
+        /* r3 = 1 --> do_profiling. We may trash r3 later on. That's OK,
+           because it's a volatile register (does not need to be preserved). */
+        ltgr %r3,%r3
+        je   run_innerloop__dispatch_unprofiled
+        j    run_innerloop__dispatch_profiled
+
+/*----------------------------------------------------*/
+/*--- NO-PROFILING (standard) dispatcher           ---*/
+/*----------------------------------------------------*/
+
+run_innerloop__dispatch_unprofiled:
+        /* This is the story:
+
+           r2  = IA = next guest address
+           r12 = VG_(dispatch_ctr)
+           r13 = guest state pointer or (upon return from guest code) some
+                 special value
+           r15 = stack pointer (as usual)
+        */
+
+	/* Has the guest state pointer been messed with?  If yes, exit. */
+        cg   %r13,S390_LOC_SAVED_GSP    /* r13 = actual guest state pointer */
+        larl %r8, VG_(tt_fast)
+        jne  gsp_changed
+
+        /* Save the jump address in the guest state */
+        stg  %r2,OFFSET_s390x_IA(%r13)
+
+
+	/* Try a fast lookup in the translation cache:
+           Compute offset (not index) into VT_(tt_fast):
+
+           offset = VG_TT_FAST_HASH(addr) * sizeof(FastCacheEntry)
+
+           with VG_TT_FAST_HASH(addr) == (addr >> 1) & VG_TT_FAST_MASK
+           and  sizeof(FastCacheEntry) == 16
+
+           offset = ((addr >> 1) & VG_TT_FAST_MASK) << 4
+        */
+        lghi %r5,VG_TT_FAST_MASK
+        srlg %r7, %r2,1              /* next guest addr >> 1*/
+        ngr  %r7,%r5
+        sllg %r7,%r7,4
+
+        /* Set the return address to the beginning of the loop here to
+           have some instruction between setting r7 and using it as an
+           address */
+	larl LR,run_innerloop__dispatch_unprofiled
+
+	/* Are we out of timeslice?  If yes, defer to scheduler. */
+        ahi  S390_REGNO_DISPATCH_CTR,-1
+        jz   counter_is_zero
+
+
+        lg   %r10, 0(%r8,%r7)      /* .guest */
+        lg   %r11, 8(%r8,%r7)      /* .host */
+        cgr  %r2, %r10
+        jne  fast_lookup_failed
+
+        /* Found a match.  Call .host.
+           r11 is an address. There we will find the instrumented client code.
+           That code may modify the guest state register r13. The client code
+           will return to the beginning of this loop start by issuing br LR.
+           We can simply branch to the host code */
+        br %r11
+
+
+/*----------------------------------------------------*/
+/*--- PROFILING dispatcher (can be much slower)    ---*/
+/*----------------------------------------------------*/
+
+run_innerloop__dispatch_profiled:
+
+	/* Has the guest state pointer been messed with?  If yes, exit. */
+        cg   %r13,S390_LOC_SAVED_GSP    /* r13 = actual guest state pointer */
+        larl %r8, VG_(tt_fast)
+        jne  gsp_changed
+
+        /* Save the jump address in the guest state */
+        stg  %r2,OFFSET_s390x_IA(%r13)
+
+	/* Try a fast lookup in the translation cache:
+           Compute offset (not index) into VT_(tt_fast):
+
+           offset = VG_TT_FAST_HASH(addr) * sizeof(FastCacheEntry)
+
+           with VG_TT_FAST_HASH(addr) == (addr >> 1) & VG_TT_FAST_MASK
+           and  sizeof(FastCacheEntry) == 16
+
+           offset = ((addr >> 1) & VG_TT_FAST_MASK) << 4
+        */
+        lghi %r5,VG_TT_FAST_MASK
+        srlg %r7,%r2,1              /* next guest addr >> 1*/
+        ngr  %r7,%r5
+        sllg %r7,%r7,4
+
+        /* Set the return address to the beginning of the loop here to
+           have some instruction between setting r7 and using it as an
+           address */
+	larl LR,run_innerloop__dispatch_profiled
+
+	/* Are we out of timeslice?  If yes, defer to scheduler. */
+        ahi  S390_REGNO_DISPATCH_CTR,-1
+        jz   counter_is_zero
+
+        lg   %r10, 0(%r8,%r7)      /* .guest */
+        lg   %r11, 8(%r8,%r7)      /* .host */
+        cgr  %r2, %r10
+        jne  fast_lookup_failed
+
+        /* sizeof(FastCacheEntry) == 16, sizeof(*UInt)==8 */
+        srlg %r7,%r7,1
+
+        /* we got a hit: VG_(tt_fastN) is guaranteed to point to count */
+        larl %r8, VG_(tt_fastN)
+
+        /* increment bb profile counter */
+        lg   %r9,0(%r8,%r7)
+        l    %r10,0(%r9)
+        ahi  %r10,1
+        st   %r10,0(%r9)
+
+        /* Found a match.  Call .host.
+           r11 is an address. There we will find the instrumented client code.
+           That code may modify the guest state register r13. The client code
+           will return to the beginning of this loop start by issuing br LR.
+           We can simply branch to the host code */
+        br %r11
+
+/*----------------------------------------------------*/
+/*--- exit points                                  ---*/
+/*----------------------------------------------------*/
+
+gsp_changed:
+	/* Someone messed with the gsp (in r13).  Have to
+           defer to scheduler to resolve this.  The register
+           holding VG_(dispatch_ctr) is not yet decremented,
+           so no need to increment. */
+
+        /* Update the IA in the guest state */
+        lg  %r6,S390_LOC_SAVED_GSP       /* r6 = original guest state pointer */
+        stg %r2,OFFSET_s390x_IA(%r6)
+
+        /* Return the special guest state pointer value */
+        lgr %r2, %r13
+	j   run_innerloop_exit
+
+
+counter_is_zero:
+	/* IA is up to date */
+
+	/* Back out decrement of the dispatch counter */
+        ahi S390_REGNO_DISPATCH_CTR,1
+
+        /* Set return value for the scheduler */
+        lghi %r2,VG_TRC_INNER_COUNTERZERO
+        j    run_innerloop_exit
+
+
+fast_lookup_failed:
+	/* IA is up to date */
+
+	/* Back out decrement of the dispatch counter */
+        ahi S390_REGNO_DISPATCH_CTR,1
+
+        /* Set return value for the scheduler */
+        lghi %r2,VG_TRC_INNER_FASTMISS
+        j    run_innerloop_exit
+
+
+        /* All exits from the dispatcher go through here.
+           When we come here r2 holds the return value. */
+run_innerloop_exit:
+
+	/* Restore valgrind's FPC, as client code may have changed it. */
+        lfpc S390_LOC_SAVED_FPC_V
+
+        /* Write ctr to VG_(dispatch_ctr) (=32bit value) */
+        larl %r6,VG_(dispatch_ctr)
+        st   S390_REGNO_DISPATCH_CTR,0(%r6)
+
+        /* Restore callee-saved registers... */
+
+        /* Floating-point regs */
+        ld  %f8,160+0(SP)
+        ld  %f9,160+8(SP)
+        ld  %f10,160+16(SP)
+        ld  %f11,160+24(SP)
+        ld  %f12,160+32(SP)
+        ld  %f13,160+40(SP)
+        ld  %f14,160+48(SP)
+        ld  %f15,160+56(SP)
+
+        /* Remove atack frame */
+        aghi SP,S390_INNERLOOP_FRAME_SIZE
+
+        /* General-purpose regs. This also restores the original link
+           register (r14) and stack pointer (r15). */
+        lmg %r6,%r15,48(SP)
+
+        /* Return */
+        br  LR
+
+/*------------------------------------------------------------*/
+/*---                                                      ---*/
+/*--- A special dispatcher, for running no-redir           ---*/
+/*--- translations.  Just runs the given translation once. ---*/
+/*---                                                      ---*/
+/*------------------------------------------------------------*/
+
+/* signature:
+void VG_(run_a_noredir_translation) ( UWord* argblock );
+*/
+
+/* Run a no-redir translation.  argblock points to 4 UWords, 2 to carry args
+   and 2 to carry results:
+      0: input:  ptr to translation
+      1: input:  ptr to guest state
+      2: output: next guest PC
+      3: output: guest state pointer afterwards (== thread return code)
+*/
+.text
+.align   4
+.globl VG_(run_a_noredir_translation)
+VG_(run_a_noredir_translation):
+        stmg %r6,%r15,48(SP)
+        aghi SP,-S390_INNERLOOP_FRAME_SIZE
+        std  %f8,160+0(SP)
+        std  %f9,160+8(SP)
+        std  %f10,160+16(SP)
+        std  %f11,160+24(SP)
+        std  %f12,160+32(SP)
+        std  %f13,160+40(SP)
+        std  %f14,160+48(SP)
+        std  %f15,160+56(SP)
+
+        /* Load address of guest state into guest state register (r13) */
+        lg   %r13,8(%r2)
+
+        /* Get the IA */
+        lg   %r11,0(%r2)
+
+        /* save r2 (argblock) as it is clobbered */
+	stg  %r2,160+64(SP)
+
+        /* the call itself */
+        basr LR,%r11
+
+        /* restore argblock */
+	lg   %r1,160+64(SP)
+	/* save the next guest PC */
+	stg  %r2,16(%r1)
+
+	/* save the guest state */
+	stg  %r13,24(%r1)
+
+        /* Restore Floating-point regs */
+        ld  %f8,160+0(SP)
+        ld  %f9,160+8(SP)
+        ld  %f10,160+16(SP)
+        ld  %f11,160+24(SP)
+        ld  %f12,160+32(SP)
+        ld  %f13,160+40(SP)
+        ld  %f14,160+48(SP)
+        ld  %f15,160+56(SP)
+
+        aghi SP,S390_INNERLOOP_FRAME_SIZE
+
+        lmg %r6,%r15,48(SP)
+	br  %r14
+
+
+/* Let the linker know we don't need an executable stack */
+.section .note.GNU-stack,"",@progbits
+
+#endif /* VGA_s390x */
+
+/*--------------------------------------------------------------------*/
+/*--- end                                   dispatch-s390x-linux.S ---*/
+/*--------------------------------------------------------------------*/
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_errormgr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_errormgr.c
index 573f4277a..98e9d53a6 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_errormgr.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_errormgr.c
@@ -30,11 +30,13 @@
 
 #include "pub_core_basics.h"
 #include "pub_core_vki.h"
+#include "pub_core_libcsetjmp.h"
 #include "pub_core_threadstate.h"      // For VG_N_THREADS
 #include "pub_core_debugger.h"
 #include "pub_core_debuginfo.h"
 #include "pub_core_errormgr.h"
 #include "pub_core_execontext.h"
+#include "pub_core_gdbserver.h"
 #include "pub_core_libcbase.h"
 #include "pub_core_libcassert.h"
 #include "pub_core_libcfile.h"
@@ -376,10 +378,14 @@ static void gen_suppression(Error* err)
       VG_(xaprintf)(text, "   %s\n", xtra);
 
    // Print stack trace elements
+   UInt n_ips = VG_(get_ExeContext_n_ips)(ec);
+   tl_assert(n_ips > 0);
+   if (n_ips > VG_MAX_SUPP_CALLERS)
+      n_ips = VG_MAX_SUPP_CALLERS;
    VG_(apply_StackTrace)(printSuppForIp_nonXML,
                          text,
                          VG_(get_ExeContext_StackTrace)(ec),
-                         VG_(get_ExeContext_n_ips)(ec));
+                         n_ips);
 
    VG_(xaprintf)(text, "}\n");
    // zero terminate
@@ -489,7 +495,18 @@ void do_actions_on_error(Error* err, Bool allow_db_attach)
    /* Should be assured by caller */
    vg_assert( ! VG_(clo_xml) );
 
+   /* if user wants to debug from a certain error nr, then wait for gdb/vgdb */
+   if (VG_(clo_vgdb) != Vg_VgdbNo
+       && allow_db_attach 
+       && VG_(dyn_vgdb_error) <= n_errs_found) {
+      VG_(umsg)("(action on error) vgdb me ... \n");
+      VG_(gdbserver)( err->tid );
+      VG_(umsg)("Continuing ...\n");
+   }
+
    /* Perhaps we want a debugger attach at this point? */
+   /* GDBTD ??? maybe we should/could remove the below assuming the
+      gdbserver interface is better ??? */
    if (allow_db_attach &&
        VG_(is_action_requested)( "Attach to debugger", & VG_(clo_db_attach) ))
    {   
@@ -535,13 +552,13 @@ void do_actions_on_error(Error* err, Bool allow_db_attach)
      attach (and detach), and optionally prints a suppression; both
      of these may require user input.
 */
-static void pp_Error ( Error* err, Bool allow_db_attach )
+static void pp_Error ( Error* err, Bool allow_db_attach, Bool xml )
 {
    /* If this fails, you probably specified your tool's method
       dictionary incorrectly. */
    vg_assert(VG_(needs).tool_errors);
 
-   if (VG_(clo_xml)) {
+   if (xml) {
 
       /* Note, allow_db_attach is ignored in here. */
  
@@ -713,7 +730,8 @@ void VG_(maybe_record_error) ( ThreadId tid,
          }
 
          /* Move p to the front of the list so that future searches
-            for it are faster. */
+            for it are faster. It also allows to print the last
+            error (see VG_(show_last_error). */
          if (p_prev != NULL) {
             vg_assert(p_prev->next == p);
             p_prev->next = p->next;
@@ -775,7 +793,7 @@ void VG_(maybe_record_error) ( ThreadId tid,
       n_err_contexts++;
       n_errs_found++;
       /* Actually show the error; more complex than you might think. */
-      pp_Error( p, /*allow_db_attach*/True );
+      pp_Error( p, /*allow_db_attach*/True, VG_(clo_xml) );
       /* update stats */
       n_errs_shown++;
    } else {
@@ -820,7 +838,7 @@ Bool VG_(unique_error) ( ThreadId tid, ErrorKind ekind, Addr a, Char* s,
 
       if (print_error) {
          /* Actually show the error; more complex than you might think. */
-         pp_Error(&err, allow_db_attach);
+         pp_Error(&err, allow_db_attach, VG_(clo_xml));
          /* update stats */
          n_errs_shown++;
       }
@@ -876,20 +894,19 @@ static Bool show_used_suppressions ( void )
    return any_supp;
 }
 
-
 /* Show all the errors that occurred, and possibly also the
    suppressions used. */
-void VG_(show_all_errors) ( void )
+void VG_(show_all_errors) (  Int verbosity, Bool xml )
 {
    Int    i, n_min;
    Error *p, *p_min;
    Bool   any_supp;
 
-   if (VG_(clo_verbosity) == 0)
+   if (verbosity == 0)
       return;
 
    /* If we're printing XML, just show the suppressions and stop. */
-   if (VG_(clo_xml)) {
+   if (xml) {
       (void)show_used_suppressions();
       return;
    }
@@ -900,13 +917,15 @@ void VG_(show_all_errors) ( void )
              n_errs_found, n_err_contexts, 
              n_errs_suppressed, n_supp_contexts );
 
-   if (VG_(clo_verbosity) <= 1)
+   if (verbosity <= 1)
       return;
 
    // We do the following only at -v or above, and only in non-XML
    // mode
 
-   /* Print the contexts in order of increasing error count. */
+   /* Print the contexts in order of increasing error count. 
+      Once an error is shown, we add a huge value to its count to filter it
+      out. After having shown all errors, we reset count to the original value. */
    for (i = 0; i < n_err_contexts; i++) {
       n_min = (1 << 30) - 1;
       p_min = NULL;
@@ -923,10 +942,10 @@ void VG_(show_all_errors) ( void )
       VG_(umsg)("\n");
       VG_(umsg)("%d errors in context %d of %d:\n",
                 p_min->count, i+1, n_err_contexts);
-      pp_Error( p_min, False/*allow_db_attach*/ );
+      pp_Error( p_min, False/*allow_db_attach*/, False /* xml */ );
 
       // We're not printing XML -- we'd have exited above if so.
-      vg_assert(! VG_(clo_xml));
+      vg_assert(! xml);
 
       if ((i+1 == VG_(clo_dump_error))) {
          StackTrace ips = VG_(get_ExeContext_StackTrace)(p_min->where);
@@ -936,9 +955,16 @@ void VG_(show_all_errors) ( void )
                           /*allow redir?*/True);
       }
 
-      p_min->count = 1 << 30;
+      p_min->count = p_min->count + (1 << 30);
    } 
 
+   /* reset the counts, otherwise a 2nd call does not show anything anymore */ 
+   for (p = errors; p != NULL; p = p->next) {
+      if (p->count >= (1 << 30))
+         p->count = p->count - (1 << 30);
+   }
+
+
    any_supp = show_used_suppressions();
 
    if (any_supp) 
@@ -951,6 +977,16 @@ void VG_(show_all_errors) ( void )
              n_supp_contexts );
 }
 
+void VG_(show_last_error) ( void )
+{
+   if (n_err_contexts == 0) {
+      VG_(umsg)("No errors yet\n");
+      return;
+   }
+
+   pp_Error( errors, False/*allow_db_attach*/, False/*xml*/ );
+}
+
 
 /* Show occurrence counts of all errors, in XML form. */
 void VG_(show_error_counts_as_XML) ( void )
@@ -1114,7 +1150,7 @@ static void load_one_suppressions_file ( Char* filename )
    // Check it's not a directory.
    if (VG_(is_dir)( filename )) {
       if (VG_(clo_xml))
-         VG_(umsg)("\n");
+         VG_(printf_xml)("\n");
       VG_(umsg)("FATAL: suppressions file \"%s\" is a directory\n", filename );
       VG_(exit)(1);
    }
@@ -1123,7 +1159,7 @@ static void load_one_suppressions_file ( Char* filename )
    sres = VG_(open)( filename, VKI_O_RDONLY, 0 );
    if (sr_isError(sres)) {
       if (VG_(clo_xml))
-         VG_(umsg)("\n");
+         VG_(printf_xml)("\n");
       VG_(umsg)("FATAL: can't open suppressions file \"%s\"\n", filename );
       VG_(exit)(1);
    }
@@ -1275,7 +1311,7 @@ static void load_one_suppressions_file ( Char* filename )
 
   syntax_error:
    if (VG_(clo_xml))
-      VG_(umsg)("\n");
+      VG_(printf_xml)("\n");
    VG_(umsg)("FATAL: in suppressions file \"%s\" near line %d:\n",
            filename, lineno );
    VG_(umsg)("   %s\n", err_str );
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_execontext.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_execontext.c
index fcb45d7a5..80574feb0 100644
--- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_execontext.c
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_execontext.c
@@ -37,6 +37,7 @@
 #include "pub_core_stacktrace.h"
 #include "pub_core_machine.h"       // VG_(get_IP)
 #include "pub_core_vki.h"           // To keep pub_core_threadstate.h happy
+#include "pub_core_libcsetjmp.h"    // Ditto
 #include "pub_core_threadstate.h"   // VG_(is_valid_tid)
 #include "pub_core_execontext.h"    // self
 
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s1.xml
new file mode 100644
index 000000000..9a0582f52
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s1.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s2.xml
new file mode 100644
index 000000000..1b272c55d
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core-valgrind-s2.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core.xml
new file mode 100644
index 000000000..4d0377eb4
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-core.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s1.xml
new file mode 100644
index 000000000..fdf23f0c9
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s2.xml
new file mode 100644
index 000000000..137e3afb8
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux-valgrind-s2.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux.xml
new file mode 100644
index 000000000..975daf982
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-linux.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s1.xml
new file mode 100644
index 000000000..1a368c4ea
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s1.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s2.xml
new file mode 100644
index 000000000..c69da70f2
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse-valgrind-s2.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse.xml
new file mode 100644
index 000000000..cca94b375
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/32bit-sse.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s1.xml
new file mode 100644
index 000000000..67b497f15
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s1.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s2.xml
new file mode 100644
index 000000000..14f272601
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core-valgrind-s2.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core.xml
new file mode 100644
index 000000000..8cfe3fe05
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-core.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s1.xml
new file mode 100644
index 000000000..fc1c2dd05
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s2.xml
new file mode 100644
index 000000000..452ddec56
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux-valgrind-s2.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux.xml
new file mode 100644
index 000000000..860927210
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-linux.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s1.xml
new file mode 100644
index 000000000..9db6c746f
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s1.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s2.xml
new file mode 100644
index 000000000..189910e80
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse-valgrind-s2.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse.xml
new file mode 100644
index 000000000..d7f7925d6
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/64bit-sse.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+  
+  
+  
+  
+  
+  
+  
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/README_DEVELOPERS b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/README_DEVELOPERS
new file mode 100644
index 000000000..233407879
--- /dev/null
+++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/README_DEVELOPERS
@@ -0,0 +1,433 @@
+This file contains various notes/ideas/history/... related
+to gdbserver in valgrind.
+
+How to use Valgrind gdbserver ?
+-------------------------------
+This is described in the Valgrind user manual.
+Before reading the below, you better read the user manual first.
+
+What is gdbserver ?
+-------------------
+gdb debugger typically is used to debug a process running
+on the same machine : gdb uses system calls (such as ptrace) 
+to fetch data from the process being debugged
+or to change data in the process 
+or interrupt the process 
+or ...
+
+gdb can also debug processes running in a different computer
+(e.g. it can debug a process running on a small real time
+board).
+
+gdb does this by sending some commands (e.g. using tcp/ip) to a piece
+of code running on the remote computer. This piece of code (called a
+gdb stub in small boards, or gdbserver when the remote computer runs
+an OS such as GNU/linux) will provide a set of commands allowing gdb
+to remotely debug the process.  Examples of commands are: "get the
+registers", "get the list of running threads", "read xxx bytes at
+address yyyyyyyy", etc.  The definition of all these commands and the
+associated replies is the gdb remote serial protocol, which is
+documented in Appendix D of gdb user manual.
+
+The standard gdb distribution has a standalone gdbserver (a small
+executable) which implements this protocol and the needed system calls
+to allow gdb to remotely debug process running on a linux or MacOS or
+...
+
+Activation of gdbserver code inside valgrind
+--------------------------------------------
+The gdbserver code (from gdb 6.6, GPL2+) has been modified so as to
+link it with valgrind and allow the valgrind guest process to be
+debugged by a gdb speaking to this gdbserver embedded in valgrind.
+The ptrace system calls inside gdbserver have been replaced by reading
+the state of the guest.
+
+The gdbserver functionality is activated with valgrind command line
+options. If gdbserver is not enabled, then the impact on valgrind
+runtime is minimal: basically it just checks at startup the command
+line option to see that there is nothing to do for what concerns gdb
+server: there is a "if gdbserver is active" check in the translate
+function of translate.c and an "if" in the valgrind scheduler.
+If the valgrind gdbserver is activated (--vgdb=yes), the impact
+is minimal (from time to time, the valgrind scheduler checks a counter
+in memory). Option --vgdb-poll=yyyyy controls how often the scheduler
+will do a (somewhat) more heavy check to see if gdbserver needs to
+stop execution of the guest to allow debugging.
+If valgrind gdbserver is activated with --vgdb=full, then
+each instruction is instrumented with an additional call to a dirty
+helper. 
+
+How does gdbserver code interacts with valgrind ?
+-------------------------------------------------
+When an error is reported, the gdbserver code is called.  It reads
+commands from gdb using read system call on a FIFO (e.g. a command
+such as "get the registers").  It executes the command (e.g. fetches
+the registers from the guest state) and writes the reply (e.g. a
+packet containing the register data).  When gdb instructs gdbserver to
+"continue", the control is returned to valgrind, which then continues
+to execute guest code.  The FIFOs used to communication between
+valgrind and gdb are created at startup if gdbserver is activated
+according to the --vgdb=no/yes/full command line option.
+
+How are signals "handled" ?
+---------------------------
+When a signal is to be given to the guest, valgrind core first calls
+gdbserver (if a gdb is currently connected to valgrind, otherwise the
+signal is delivered immediately). If gdb instructs to give the signal
+to the process, the signal is delivered to the guest.  Otherwise, the
+signal is ignored (not given to the guest). The user can
+with gdb further decide to pass (or not pass) the signal.
+Note that some (fatal) signals cannot be ignored.
+
+How are "break/step/stepi/next/..." implemented ?
+-------------------------------------------------
+When a break is put by gdb on an instruction, a command is sent to the
+gdbserver in valgrind. This causes the basic block of this instruction
+to be discarded and then re-instrumented so as to insert calls to a
+dirty helper which calls the gdb server code.  When a block is
+instrumented for gdbserver, all the "jump targets" of this block are
+invalidated, so as to allow step/stepi/next to properly work: these
+blocks will themselves automatically be re-instrumented for gdbserver
+if they are jumped to.
+The valgrind gdbserver remembers which blocks have been instrumented
+due to this "lazy 'jump targets' debugging instrumentation" so as to
+discard these "debugging translation" when gdb instructs to continue
+the execution normally.
+The blocks in which an explicit break has been put by the user
+are kept instrumented for gdbserver.
+(but note that by default, gdb removes all breaks when the
+process is stopped, and re-inserts all breaks when the process
+is continued). This behaviour can be changed using the gdb
+command 'set breakpoint always-inserted'.
+
+How are watchpoints implemented ?
+---------------------------------
+Watchpoints implies support from the tool to detect that
+a location is read and/or written. Currently, only memcheck
+supports this : when a watchpoint is placed, memcheck changes
+the addressability bits of the watched memory zone to be unacessible.
+Before an access, memcheck then detects an error, but sees this error
+is due to a watchpoint and gives the control back to gdb.
+Stopping on the exact instruction for a write watchpoint implies
+to use --vgdb=full. This is because the error is detected by memcheck
+before modifying the value. gdb checks that the value has not changed
+and so "does not believe" the information that the write watchpoint
+was triggered, and continues the execution. At the next watchpoint
+occurence, gdb sees the value has changed. But the watchpoints are all
+reported "off by one". To avoid this, Valgrind gdbserver must
+terminate the current instruction before reporting the write watchpoint.
+Terminating precisely the current instruction implies to have
+instrumented all the instructions of the block for gdbserver even
+if there is no break in this block. This is ensured by --vgdb=full.
+See m_gdbserver.c Bool VG_(is_watched) where watchpoint handling
+is implemented.
+
+How is the Valgrind gdbserver receiving commands/packets from gdb ?
+-------------------------------------------------------------------
+The embedded gdbserver reads gdb commands on a named pipe having
+(by default) the name   /tmp/vgdb-pipe-from-vgdb-to-%d
+where %d will be replaced by the pid.
+The embedded gdbserver will reply to gdb commands on a named pipe
+/tmp/vgdb-pipe-to-vgdb-from-%d
+
+gdb does not speak directly with gdbserver in valgrind: a relay application
+called vgdb is needed between gdb and the valgrind-ified process.
+gdb writes commands on the stdin of vgdb. vgdb reads these
+commands and writes them on FIFO /tmp/vgdb-pipe-from-vgdb-to-%d.
+vgdb reads replies on FIFO /tmp/vgdb-pipe-to-vgdb-from-%d and writes
+them on its stdout. 
+
+Note: The solution of named pipes was preferred to tcp ip connections as
+it allows a discovery of which valgrind-ified processes are ready to accept
+command by looking at files starting with the /tmp/vgdb-pipe- prefix
+(changeable by a command line option).
+Also, the usual unix protections are protecting 
+the valgrind process against other users sending commands.
+The relay process also takes into account the wake up of the valgrind
+process in case all threads are blocked in a system call.
+The relay process can also be used in a shell to send commands
+without a gdb (this allows to have a standard mechanism to control
+valgrind tools from the command line, rather than specialized mechanism
+e.g. in callgrind).
+
+How is gdbserver activated if all Valgrind threads are blocked in a syscall ?
+-----------------------------------------------------------------------------
+vgdb relays characters from gdb to valgrind. The scheduler will from
+time to time check if gdbserver has to handle incoming characters.
+(the check is efficient i.e. most of the time consists in checking
+a counter in (shared) memory).
+
+However, it might be that all the threads in the valgrind process are
+blocked in a system call. In such a case, no polling will be done by
+the valgrind scheduler (as no activity takes place).  By default, vgdb
+will check after 100ms if the characters it has written have been read
+by valgrind. If not, vgdb will force the invocation of the gdbserver
+code inside the valgrind process.
+
+This forced invocation is implemented using the ptrace system call:
+using ptrace, vgdb will cause the valgrind process to call the
+gdbserver code.
+
+This wake up is *not* done using signals as this would imply to
+implement a syscall restart logic in valgrind for all system
+calls. When using ptrace as above, the linux kernel is responsible to
+restart the system call.
+
+This wakeup is also *not* implemented by having a "system thread"
+started by valgrind as this would transform all non-threaded programs
+in threaded programs when running under valgrind. Also, such a 'system
+thread' for gdbserver was tried by Greg Parker in the early MacOS
+port, and was unreliable.  
+
+So, the ptrace based solution was chosen instead.
+
+There used to be some bugs in the kernel when using ptrace on 
+a process blocked in a system call : the symptom is that the system
+call fails with an unknown errno 512. This typically happens
+with a vgdb in 64bits ptrace-ing a 32 bits process.
+A bypass for old kernels has been integrated in vgdb.c (sign extend
+register rax).
+
+At least on a fedora core 12 (kernel 2.6.32), syscall restart of read
+and select are working ok and red-hat 5.3 (an old kernel), everything
+works properly.
+
+Need to investigate if darwin and/or AIX can similarly do syscall
+restart with ptrace.
+
+The vgdb argument --max-invoke-ms=xxx allows to control the nr of
+milli-seconds after which vgdb will force the invocation of gdbserver
+code.  If xxx is 0, this disables the forced invocation.
+Also, disabling this ptrace mechanism is necessary in case you are
+debugging the valgrind code at the same time as debugging the guest
+process using gdbserver.
+
+Do not kill -9 vgdb while it has interrupted the valgrind process,
+otherwise the valgrind process will very probably stay stopped or die.
+
+
+Implementation is based on the gdbserver code from gdb 6.6
+----------------------------------------------------------
+The gdbserver implementation is derived from the gdbserver included
+in the gdb distribution.
+The files originating from gdb are : inferiors.c, regcache.[ch],
+regdef.h, remote-utils.c, server.[ch], signals.c, target.[ch], utils.c,
+version.c.
+valgrind-low-* are inspired from gdb files.
+
+This code had to be changed to integrate properly within valgrind
+(e.g. no libc usage).  Some of these changes have been ensured by
+using the preprocessor to replace calls by valgrind equivalent,
+e.g. #define memcpy(...) VG_(memcpy) (...).
+
+Some "control flow" changes are due to the fact that gdbserver inside
+valgrind must return the control to valgrind when the 'debugged'
+process has to run, while in a classical gdbserver usage, the
+gdbserver process waits for a debugged process to stop on a break or
+similar.  This has implied to have some variables to remember the
+state of gdbserver before returning to valgrind (search for
+resume_packet_needed in server.c) and "goto" the place where gdbserver
+expects a stopped process to return control to gdbserver.
+
+How does a tool need to be changed to be "debuggable" ?
+-------------------------------------------------------
+There is no need to modify a tool to have it "debuggable" via
+gdbserver : e.g. reports of errors, break etc will work "out of the
+box".  If an interactive usage of tool client requests or similar is
+desired for a tool, then simple code can be written for that via a
+specific client request VG_USERREQ__GDB_MONITOR_COMMAND code. The tool
+function "handle_client_request" must then parse the string received
+in argument and call the expected valgrind or tool code.  See
+e.g. massif ms_handle_client_request as an example.
+
+
+Automatic regression tests:
+---------------------------
+Automatic Valgrind gdbserver tests are in the directory
+$(top_srcdir)/gdbserver_tests.
+Read $(top_srcdir)/gdbserver_tests/README_DEVELOPPERS for more
+info about testing.
+
+How to integrate support for a new architecture xxx?
+----------------------------------------------------
+Let's imagine a new architecture hal9000 has to be supported.
+
+Mandatory:
+The main thing to do is to make a file valgrind-low-hal9000.c.
+Start from an existing file (e.g. valgrind-low-x86.c).
+The data structures 'struct reg regs'
+and 'const char *expedite_regs' are build from files
+in the gdb sources, e.g. for an new arch hal9000
+   cd gdb/regformats
+   ./regdat.sh reg-hal9000.dat hal9000
+
+From the generated file hal9000, you copy/paste in
+valgrind-low-hal9000.c the two needed data structures and change their
+name to 'regs' and 'expedite_regs'
+
+Then adapt the set of functions needed to initialize the structure
+'static struct valgrind_target_ops low_target'.
+
+Optional but heavily recommended:
+To have a proper wake up of a Valgrind process with all threads
+blocked in a system call, some architecture specific code
+has to be done in vgdb.c : search for PTRACEINVOKER processor symbol
+to see what has to be completed.
+
+For Linux based platforms, all the ptrace calls should be ok.
+The only thing needed is the code needed to "push a dummy call" on the stack,
+i.e. assign the relevant registers in the struct user_regs_struct, and push
+values on the stack according to the ABI.
+
+For other platforms (i.e. Macos), more work is needed as the ptrace calls
+on Macos are either different and/or incomplete (and so, 'Mach' specific
+things are needed e.g. to attach to threads etc).
+A courageous Mac aficionado is welcome on this aspect.
+
+Optional:
+To let gdb see the Valgrind shadow registers, xml description
+files have to be provided + valgrind-low-hal9000.c has
+to give the top xml file.
+Start from the xml files found in the gdb distribution directory
+gdb/features. You need to duplicate and modify these files to provide
+shadow1 and shadow2 register sets description.
+
+Modify coregrind/Makefile.am:
+    add valgrind-low-hal9000.c
+    If you have target xml description, also add them in pkglib_DATA 
+
+
+A not handled comment given by Julian at FOSDEM.
+------------------------------------------------
+* the check for vgdb-poll in scheduler.c could/should be moved to another place:
+    instead of having it in run_thread_for_a_while
+    the vgdb poll check could be in VG_(scheduler).
+  (not clear to me why one is better than the other ???)
+
+TODO and/or additional nice things to have
+------------------------------------------
+* many options can be changed on-line without problems.
+  => would be nice to have a vg.option command that would evaluate
+  its arguments like the  startup options of m_main.c and tool clo processing.
+
+* have a mc.who_points_at 
| + that would describe the addresses where a pointer is found + to address (or address leaked at loss_record_nr>) + This would allow to interactively searching who is "keeping" a piece + of memory. + +* some GDBTD in the code + +(GDBTD = GDB To Do = something still to look at and/or a question) + +* All architectures and platforms are done. + But there are still some "GDBTD" to convert between gdb registers + and VEX registers : + e.g. some registers in x86 or amd64 that I could not + translate to VEX registers. Someone with a good knowledge + of these architectures might complete this + (see the GDBTD in valgrind-low-*.c) + +* "hardware" watchpoint (read/write/access watchpoints) are implemented + but can't persuade gdb to insert a hw watchpoint of what valgrind + supports (i.e. of whatever length). + The reason why gdb does not accept a hardware watch of let's say + 10 bytes is: +default_region_ok_for_hw_watchpoint (addr=134520360, len=10) at target.c:2738 +2738 return (len <= gdbarch_ptr_bit (target_gdbarch) / TARGET_CHAR_BIT); +#0 default_region_ok_for_hw_watchpoint (addr=134520360, len=10) + at target.c:2738 +2738 return (len <= gdbarch_ptr_bit (target_gdbarch) / TARGET_CHAR_BIT); +#1 0x08132e65 in can_use_hardware_watchpoint (v=0x85a8ef0) + at breakpoint.c:8300 +8300 if (!target_region_ok_for_hw_watchpoint (vaddr, len)) +#2 0x0813bd17 in watch_command_1 (arg=0x84169f0 "", accessflag=2, + from_tty=) at breakpoint.c:8140 + A small patch in gdb remote.c allowed to control the remote target watchpoint + length limit. This patch is to be submitted. + +* Currently, at least on recent linux kernel, vgdb can properly wake + up a valgrind process which is blocked in system calls. Maybe we + need to see till which kernel version the ptrace + syscall restart + is broken, and put the default value of --max-invoke-ms to 0 in this + case. + +* more client requests can be programmed in various tools. Currently, + there are only a few standard valgrind or memcheck client requests + implemented. + vg.suppression [generate|add|delete] might be an interesting command: + generate would output a suppression, add/delete would add a suppression + in memory for the last (or selected?) error. + vg.break on fn calls/entry/exit + commands associated to it + (such as search leaks)? + + + +* currently jump(s) and inferior call(s) are somewhat dangerous + when called from a block not yet instrumented : instead + of continuing till the next Imark, where there will be a + debugger call that can properly jump at an instruction boundary, + the jump/call will quit the "middle" of an instruction. + We could detect if the current block is instrumented by a trick + like this: + /* Each time helperc_CallDebugger is called, we will store + the address from which is it called and the nr of bbs_done + when called. This allows to detect that gdbserver is called + from a block which is instrumented. */ + static HWord CallDebugger_addr; + static ULong CallDebugger_bbs_done; + + Bool VG_(gdbserver_current_IP_instrumented) (ThreadId tid) + { + if (VG_(get_IP) (tid) != CallDebugger_addr + || CallDebugger_bbs_done != VG_(bbs_done)()) + return False; + return True; + } + + Alternatively, we ensure we can re-instrument the current + block for gdbserver while executing it. + Something like: + keep current block till the end of the current instruction, then + go back to scheduler. + Unsure if and how this is do-able. + + +* ensure that all non static symbols of gdbserver files are #define + xxxxx VG_(xxxxx) ???? Is this really needed ? I have tried to put in + a test program variables and functions with the same name as valgrind + stuff, and everything seems to be ok. + I see that all exported symbols in valgrind have a unique prefix + created with VG_ or MC_ or ... + This is not done for the "gdb gdbserver code", where I have kept + the original names. Is this a problem ? I could not create + a "symbol" collision between the user symbol and the valgrind + core gdbserver symbol. + +* currently, gdbserver can only stop/continue the whole process. It + might be interesting to have a fine-grained thread control (vCont + packet) maybe for tools such as helgrind, drd. This would allow the + user to stop/resume specific threads. Also, maybe this would solve + the following problem: wait for a breakpoint to be encountered, + switch thread, next. This sometimes causes an internal error in gdb, + probably because gdb believes the current thread will be continued ? + +* would be nice to have some more tests. + +* better valgrind target support in gdb (see comments of Tom Tromey). + + +-------- description of how gdb invokes a function in the inferior +to call a function in the inferior (below is for x86): +gdb writes ESP and EBP to have some more stack space +push a return address equal to 0x8048390 <_start> +puts a break at 0x8048390 +put address of the function to call (e.g. hello_world in EIP (0x8048444)) +continue +break encountered at 0x8048391 (90 after decrement) + => report stop to gdb + => gdb restores esp/ebp/eip to what it was (eg. 0x804848C) + => gdb "s" => causes the EIP to go to the new EIP (i.e. 0x804848C) + gdbserver tells "resuming from 0x804848c" + "stop pc is 0x8048491" => informed gdb of this + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-coresse-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-coresse-valgrind.xml new file mode 100644 index 000000000..3008d5fa9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-coresse-valgrind.xml @@ -0,0 +1,19 @@ + + + + + + + + i386:x86-64 + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-linux-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-linux-valgrind.xml new file mode 100644 index 000000000..a18e557fc --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/amd64-linux-valgrind.xml @@ -0,0 +1,23 @@ + + + + + + + + i386:x86-64 + GNU/Linux + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s1.xml new file mode 100644 index 000000000..cc033a081 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s1.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s2.xml new file mode 100644 index 000000000..9c3aa69fe --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core-valgrind-s2.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core.xml new file mode 100644 index 000000000..16249011c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-core.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s1.xml new file mode 100644 index 000000000..619f73fc9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s1.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s2.xml new file mode 100644 index 000000000..c0e867713 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3-valgrind-s2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3.xml new file mode 100644 index 000000000..d0e9a59ec --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-vfpv3.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3-valgrind.xml new file mode 100644 index 000000000..6501c9b85 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3-valgrind.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3.xml new file mode 100644 index 000000000..319da1a72 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/arm-with-vfpv3.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/gdb/signals.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/gdb/signals.h new file mode 100644 index 000000000..c240f6b34 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/gdb/signals.h @@ -0,0 +1,238 @@ +/* Target signal numbers for GDB and the GDB remote protocol. + Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + 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. */ + +#ifndef GDB_SIGNALS_H +#define GDB_SIGNALS_H + +/* The numbering of these signals is chosen to match traditional unix + signals (insofar as various unices use the same numbers, anyway). + It is also the numbering of the GDB remote protocol. Other remote + protocols, if they use a different numbering, should make sure to + translate appropriately. + + Since these numbers have actually made it out into other software + (stubs, etc.), you mustn't disturb the assigned numbering. If you + need to add new signals here, add them to the end of the explicitly + numbered signals, at the comment marker. Add them unconditionally, + not within any #if or #ifdef. + + This is based strongly on Unix/POSIX signals for several reasons: + (1) This set of signals represents a widely-accepted attempt to + represent events of this sort in a portable fashion, (2) we want a + signal to make it from wait to child_wait to the user intact, (3) many + remote protocols use a similar encoding. However, it is + recognized that this set of signals has limitations (such as not + distinguishing between various kinds of SIGSEGV, or not + distinguishing hitting a breakpoint from finishing a single step). + So in the future we may get around this either by adding additional + signals for breakpoint, single-step, etc., or by adding signal + codes; the latter seems more in the spirit of what BSD, System V, + etc. are doing to address these issues. */ + +/* For an explanation of what each signal means, see + signals.c. */ + +enum target_signal + { + /* Used some places (e.g. stop_signal) to record the concept that + there is no signal. */ + TARGET_SIGNAL_0 = 0, + TARGET_SIGNAL_FIRST = 0, + TARGET_SIGNAL_HUP = 1, + TARGET_SIGNAL_INT = 2, + TARGET_SIGNAL_QUIT = 3, + TARGET_SIGNAL_ILL = 4, + TARGET_SIGNAL_TRAP = 5, + TARGET_SIGNAL_ABRT = 6, + TARGET_SIGNAL_EMT = 7, + TARGET_SIGNAL_FPE = 8, + TARGET_SIGNAL_KILL = 9, + TARGET_SIGNAL_BUS = 10, + TARGET_SIGNAL_SEGV = 11, + TARGET_SIGNAL_SYS = 12, + TARGET_SIGNAL_PIPE = 13, + TARGET_SIGNAL_ALRM = 14, + TARGET_SIGNAL_TERM = 15, + TARGET_SIGNAL_URG = 16, + TARGET_SIGNAL_STOP = 17, + TARGET_SIGNAL_TSTP = 18, + TARGET_SIGNAL_CONT = 19, + TARGET_SIGNAL_CHLD = 20, + TARGET_SIGNAL_TTIN = 21, + TARGET_SIGNAL_TTOU = 22, + TARGET_SIGNAL_IO = 23, + TARGET_SIGNAL_XCPU = 24, + TARGET_SIGNAL_XFSZ = 25, + TARGET_SIGNAL_VTALRM = 26, + TARGET_SIGNAL_PROF = 27, + TARGET_SIGNAL_WINCH = 28, + TARGET_SIGNAL_LOST = 29, + TARGET_SIGNAL_USR1 = 30, + TARGET_SIGNAL_USR2 = 31, + TARGET_SIGNAL_PWR = 32, + /* Similar to SIGIO. Perhaps they should have the same number. */ + TARGET_SIGNAL_POLL = 33, + TARGET_SIGNAL_WIND = 34, + TARGET_SIGNAL_PHONE = 35, + TARGET_SIGNAL_WAITING = 36, + TARGET_SIGNAL_LWP = 37, + TARGET_SIGNAL_DANGER = 38, + TARGET_SIGNAL_GRANT = 39, + TARGET_SIGNAL_RETRACT = 40, + TARGET_SIGNAL_MSG = 41, + TARGET_SIGNAL_SOUND = 42, + TARGET_SIGNAL_SAK = 43, + TARGET_SIGNAL_PRIO = 44, + TARGET_SIGNAL_REALTIME_33 = 45, + TARGET_SIGNAL_REALTIME_34 = 46, + TARGET_SIGNAL_REALTIME_35 = 47, + TARGET_SIGNAL_REALTIME_36 = 48, + TARGET_SIGNAL_REALTIME_37 = 49, + TARGET_SIGNAL_REALTIME_38 = 50, + TARGET_SIGNAL_REALTIME_39 = 51, + TARGET_SIGNAL_REALTIME_40 = 52, + TARGET_SIGNAL_REALTIME_41 = 53, + TARGET_SIGNAL_REALTIME_42 = 54, + TARGET_SIGNAL_REALTIME_43 = 55, + TARGET_SIGNAL_REALTIME_44 = 56, + TARGET_SIGNAL_REALTIME_45 = 57, + TARGET_SIGNAL_REALTIME_46 = 58, + TARGET_SIGNAL_REALTIME_47 = 59, + TARGET_SIGNAL_REALTIME_48 = 60, + TARGET_SIGNAL_REALTIME_49 = 61, + TARGET_SIGNAL_REALTIME_50 = 62, + TARGET_SIGNAL_REALTIME_51 = 63, + TARGET_SIGNAL_REALTIME_52 = 64, + TARGET_SIGNAL_REALTIME_53 = 65, + TARGET_SIGNAL_REALTIME_54 = 66, + TARGET_SIGNAL_REALTIME_55 = 67, + TARGET_SIGNAL_REALTIME_56 = 68, + TARGET_SIGNAL_REALTIME_57 = 69, + TARGET_SIGNAL_REALTIME_58 = 70, + TARGET_SIGNAL_REALTIME_59 = 71, + TARGET_SIGNAL_REALTIME_60 = 72, + TARGET_SIGNAL_REALTIME_61 = 73, + TARGET_SIGNAL_REALTIME_62 = 74, + TARGET_SIGNAL_REALTIME_63 = 75, + + /* Used internally by Solaris threads. See signal(5) on Solaris. */ + TARGET_SIGNAL_CANCEL = 76, + + /* Yes, this pains me, too. But LynxOS didn't have SIG32, and now + GNU/Linux does, and we can't disturb the numbering, since it's + part of the remote protocol. Note that in some GDB's + TARGET_SIGNAL_REALTIME_32 is number 76. */ + TARGET_SIGNAL_REALTIME_32, + /* Yet another pain, IRIX 6 has SIG64. */ + TARGET_SIGNAL_REALTIME_64, + /* Yet another pain, GNU/Linux MIPS might go up to 128. */ + TARGET_SIGNAL_REALTIME_65, + TARGET_SIGNAL_REALTIME_66, + TARGET_SIGNAL_REALTIME_67, + TARGET_SIGNAL_REALTIME_68, + TARGET_SIGNAL_REALTIME_69, + TARGET_SIGNAL_REALTIME_70, + TARGET_SIGNAL_REALTIME_71, + TARGET_SIGNAL_REALTIME_72, + TARGET_SIGNAL_REALTIME_73, + TARGET_SIGNAL_REALTIME_74, + TARGET_SIGNAL_REALTIME_75, + TARGET_SIGNAL_REALTIME_76, + TARGET_SIGNAL_REALTIME_77, + TARGET_SIGNAL_REALTIME_78, + TARGET_SIGNAL_REALTIME_79, + TARGET_SIGNAL_REALTIME_80, + TARGET_SIGNAL_REALTIME_81, + TARGET_SIGNAL_REALTIME_82, + TARGET_SIGNAL_REALTIME_83, + TARGET_SIGNAL_REALTIME_84, + TARGET_SIGNAL_REALTIME_85, + TARGET_SIGNAL_REALTIME_86, + TARGET_SIGNAL_REALTIME_87, + TARGET_SIGNAL_REALTIME_88, + TARGET_SIGNAL_REALTIME_89, + TARGET_SIGNAL_REALTIME_90, + TARGET_SIGNAL_REALTIME_91, + TARGET_SIGNAL_REALTIME_92, + TARGET_SIGNAL_REALTIME_93, + TARGET_SIGNAL_REALTIME_94, + TARGET_SIGNAL_REALTIME_95, + TARGET_SIGNAL_REALTIME_96, + TARGET_SIGNAL_REALTIME_97, + TARGET_SIGNAL_REALTIME_98, + TARGET_SIGNAL_REALTIME_99, + TARGET_SIGNAL_REALTIME_100, + TARGET_SIGNAL_REALTIME_101, + TARGET_SIGNAL_REALTIME_102, + TARGET_SIGNAL_REALTIME_103, + TARGET_SIGNAL_REALTIME_104, + TARGET_SIGNAL_REALTIME_105, + TARGET_SIGNAL_REALTIME_106, + TARGET_SIGNAL_REALTIME_107, + TARGET_SIGNAL_REALTIME_108, + TARGET_SIGNAL_REALTIME_109, + TARGET_SIGNAL_REALTIME_110, + TARGET_SIGNAL_REALTIME_111, + TARGET_SIGNAL_REALTIME_112, + TARGET_SIGNAL_REALTIME_113, + TARGET_SIGNAL_REALTIME_114, + TARGET_SIGNAL_REALTIME_115, + TARGET_SIGNAL_REALTIME_116, + TARGET_SIGNAL_REALTIME_117, + TARGET_SIGNAL_REALTIME_118, + TARGET_SIGNAL_REALTIME_119, + TARGET_SIGNAL_REALTIME_120, + TARGET_SIGNAL_REALTIME_121, + TARGET_SIGNAL_REALTIME_122, + TARGET_SIGNAL_REALTIME_123, + TARGET_SIGNAL_REALTIME_124, + TARGET_SIGNAL_REALTIME_125, + TARGET_SIGNAL_REALTIME_126, + TARGET_SIGNAL_REALTIME_127, + + TARGET_SIGNAL_INFO, + + /* Some signal we don't know about. */ + TARGET_SIGNAL_UNKNOWN, + + /* Use whatever signal we use when one is not specifically specified + (for passing to proceed and so on). */ + TARGET_SIGNAL_DEFAULT, + + /* Mach exceptions. In versions of GDB before 5.2, these were just before + TARGET_SIGNAL_INFO if you were compiling on a Mach host (and missing + otherwise). */ + TARGET_EXC_BAD_ACCESS, + TARGET_EXC_BAD_INSTRUCTION, + TARGET_EXC_ARITHMETIC, + TARGET_EXC_EMULATION, + TARGET_EXC_SOFTWARE, + TARGET_EXC_BREAKPOINT, + + /* If you are adding a new signal, add it just above this comment. */ + + /* Last and unused enum value, for sizing arrays, etc. */ + TARGET_SIGNAL_LAST + }; + +#endif /* #ifndef GDB_SIGNALS_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-coresse-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-coresse-valgrind.xml new file mode 100644 index 000000000..1ec7c9eb1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-coresse-valgrind.xml @@ -0,0 +1,19 @@ + + + + + + + + i386 + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-linux-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-linux-valgrind.xml new file mode 100644 index 000000000..872044098 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/i386-linux-valgrind.xml @@ -0,0 +1,23 @@ + + + + + + + + i386 + GNU/Linux + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/inferiors.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/inferiors.c new file mode 100644 index 000000000..cdfea0bc1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/inferiors.c @@ -0,0 +1,227 @@ +/* Inferior process information for the remote server for GDB. + Copyright (C) 2002, 2005, 2011 + Free Software Foundation, Inc. + + Contributed by MontaVista Software. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" + +struct thread_info +{ + struct inferior_list_entry entry; + void *target_data; + void *regcache_data; + unsigned int gdb_id; +}; + +struct inferior_list all_threads; + +struct thread_info *current_inferior; + +#define get_thread(inf) ((struct thread_info *)(inf)) + +void add_inferior_to_list (struct inferior_list *list, + struct inferior_list_entry *new_inferior) +{ + new_inferior->next = NULL; + if (list->tail != NULL) + list->tail->next = new_inferior; + else + list->head = new_inferior; + list->tail = new_inferior; +} + +void for_each_inferior (struct inferior_list *list, + void (*action) (struct inferior_list_entry *)) +{ + struct inferior_list_entry *cur = list->head, *next; + + while (cur != NULL) { + next = cur->next; + (*action) (cur); + cur = next; + } +} + +void change_inferior_id (struct inferior_list *list, + unsigned long new_id) +{ + if (list->head != list->tail) + error ("tried to change thread ID after multiple threads are created\n"); + + list->head->id = new_id; +} + +void remove_inferior (struct inferior_list *list, + struct inferior_list_entry *entry) +{ + struct inferior_list_entry **cur; + + if (list->head == entry) { + list->head = entry->next; + if (list->tail == entry) + list->tail = list->head; + return; + } + + cur = &list->head; + while (*cur && (*cur)->next != entry) + cur = &(*cur)->next; + + if (*cur == NULL) + return; + + (*cur)->next = entry->next; + + if (list->tail == entry) + list->tail = *cur; +} + +void add_thread (unsigned long thread_id, void *target_data, unsigned int gdb_id) +{ + struct thread_info *new_thread + = (struct thread_info *) malloc (sizeof (*new_thread)); + + VG_(memset) (new_thread, 0, sizeof (*new_thread)); + + new_thread->entry.id = thread_id; + + add_inferior_to_list (&all_threads, & new_thread->entry); + + if (current_inferior == NULL) + current_inferior = new_thread; + + new_thread->target_data = target_data; + set_inferior_regcache_data (new_thread, new_register_cache ()); + new_thread->gdb_id = gdb_id; +} + +unsigned int thread_id_to_gdb_id (unsigned long thread_id) +{ + struct inferior_list_entry *inf = all_threads.head; + + while (inf != NULL) { + struct thread_info *thread = get_thread (inf); + if (inf->id == thread_id) + return thread->gdb_id; + inf = inf->next; + } + + return 0; +} + +unsigned int thread_to_gdb_id (struct thread_info *thread) +{ + return thread->gdb_id; +} + +struct thread_info * gdb_id_to_thread (unsigned int gdb_id) +{ + struct inferior_list_entry *inf = all_threads.head; + + while (inf != NULL) { + struct thread_info *thread = get_thread (inf); + if (thread->gdb_id == gdb_id) + return thread; + inf = inf->next; + } + + return NULL; +} + +unsigned long gdb_id_to_thread_id (unsigned int gdb_id) +{ + struct thread_info *thread = gdb_id_to_thread (gdb_id); + + return thread ? thread->entry.id : 0; +} + +static +void free_one_thread (struct inferior_list_entry *inf) +{ + struct thread_info *thread = get_thread (inf); + free_register_cache (inferior_regcache_data (thread)); + free (thread); +} + +void remove_thread (struct thread_info *thread) +{ + remove_inferior (&all_threads, (struct inferior_list_entry *) thread); + free_one_thread (&thread->entry); +} + +void clear_inferiors (void) +{ + for_each_inferior (&all_threads, free_one_thread); + + all_threads.head = all_threads.tail = NULL; +} + +struct inferior_list_entry * find_inferior (struct inferior_list *list, + int (*func) + (struct inferior_list_entry *, + void *), + void *arg) +{ + struct inferior_list_entry *inf = list->head; + + while (inf != NULL) { + if ((*func) (inf, arg)) + return inf; + inf = inf->next; + } + + return NULL; +} + +struct inferior_list_entry * find_inferior_id (struct inferior_list *list, + unsigned long id) +{ + struct inferior_list_entry *inf = list->head; + + while (inf != NULL) { + if (inf->id == id) + return inf; + inf = inf->next; + } + + return NULL; +} + +void * inferior_target_data (struct thread_info *inferior) +{ + return inferior->target_data; +} + +void set_inferior_target_data (struct thread_info *inferior, void *data) +{ + inferior->target_data = data; +} + +void * inferior_regcache_data (struct thread_info *inferior) +{ + return inferior->regcache_data; +} + +void set_inferior_regcache_data (struct thread_info *inferior, void *data) +{ + inferior->regcache_data = data; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/m_gdbserver.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/m_gdbserver.c new file mode 100644 index 000000000..e3b0ffb71 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/m_gdbserver.c @@ -0,0 +1,1312 @@ + +/*--------------------------------------------------------------------*/ +/*--- Handle remote gdb protocol. m_gdbserver.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2011 Philippe Waroquiers + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_debuglog.h" +#include "pub_core_libcproc.h" +#include "pub_core_libcprint.h" +#include "pub_core_mallocfree.h" +#include "pub_core_gdbserver.h" +#include "pub_core_options.h" +#include "pub_core_libcsetjmp.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_tool_hashtable.h" +#include "pub_core_libcassert.h" +#include "pub_tool_libcbase.h" +#include "pub_core_libcsignal.h" +#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry) +#include "pub_tool_debuginfo.h" +#include "pub_core_scheduler.h" +#include "pub_core_syswrap.h" + +#include "server.h" + +Int VG_(dyn_vgdb_error); + +/* forward declarations */ +VG_REGPARM(1) +void VG_(helperc_CallDebugger) ( HWord iaddr ); +VG_REGPARM(1) +void VG_(helperc_invalidate_if_not_gdbserved) ( Addr addr ); +static void invalidate_current_ip (ThreadId tid, char *who); + +/* reasons of call to call_gdbserver. */ +typedef + enum { + init_reason, // initialises gdbserver resources + vgdb_reason, // gdbserver invocation by vgdb doing ptrace + core_reason, // gdbserver invocation by core (e.g. error encountered) + break_reason, // break encountered + watch_reason, // watchpoint detected by tool + signal_reason} // signal encountered + CallReason; + +static char* ppCallReason(CallReason reason) +{ + switch (reason) { + case init_reason: return "init_reason"; + case vgdb_reason: return "vgdb_reason"; + case core_reason: return "core_reason"; + case break_reason: return "break_reason"; + case watch_reason: return "watch_reason"; + case signal_reason: return "signal_reason"; + default: vg_assert (0); + } +} + +/* An instruction instrumented for gdbserver looks like this: + 1. Ist_Mark (0x1234) + 2. helperc_CallDebugger (0x1234) + This will give control to gdb if there is a break at 0x1234 + or if we are single stepping + 3. ... here the real IR for the instruction at 0x1234 + + When there is a break at 0x1234: + if user does "continue" or "step" or similar, + then - the call to debugger returns + - valgrind executes at 3. the real IR(s) for 0x1234 + + if as part of helperc_CallDebugger, the user calls + some code in gdb e.g print hello_world() + then - gdb prepares a dummy stack frame with a specific + return address (typically it uses _start) and + inserts a break at this address + - gdb then puts in EIP the address of hello_world() + - gdb then continues (so the helperc_CallDebugger + returns) + - call_gdbserver() function will then return the + control to the scheduler (using VG_MINIMAL_LONGJMP) + to allow the block of the new EIP + to be executed. + - hello_world code is executed. + - when hello_world() returns, it returns to + _start and encounters the break at _start. + - gdb then removes this break, put 0x1234 in EIP + and does a "step". This causes to jump from + _start to 0x1234, where the call to + helperc_CallDebugger is redone. + - This is all ok, the user can then give new gdb + commands. + + However, when continue is given, address 0x1234 is to + be executed: gdb gives a single step, which must not + report again the break at 0x1234. To avoid a 2nd report + of the same break, the below tells that the next + helperc_CallDebugger call must ignore a break/stop at + this address. +*/ +static Addr ignore_this_break_once = 0; + + +static void call_gdbserver ( ThreadId tid , CallReason reason); + +/* convert from CORE_ADDR to void* */ +static +void* C2v(CORE_ADDR addr) +{ + return (void*) addr; +} + +/* Describes the address addr (for debugging/printing purposes). + Last two results are kept. A third call will replace the + oldest result. */ +static char* sym (Addr addr, Bool is_code) +{ + static char buf[2][200]; + static int w = 0; + PtrdiffT offset; + if (w == 2) w = 0; + if (is_code) { + VG_(describe_IP) (addr, buf[w], 200); + } else { + VG_(get_datasym_and_offset) (addr, buf[w], 200, &offset); + } + return buf[w++]; +} + +/* Each time gdbserver is called, gdbserver_called is incremented + gdbserver_exited is incremented when gdbserver is asked to exit */ +static int gdbserver_called = 0; +static int gdbserver_exited = 0; + +typedef + enum { + GS_break, + GS_jump + } + GS_Kind; + +typedef + struct _GS_Address { + struct _GS_Address* next; + Addr addr; + GS_Kind kind; + } + GS_Address; + +/* gs_addresses contains a list of all addresses that have been invalidated + because they have been (or must be) instrumented for gdbserver. + An entry is added in this table when there is a break at this + address (kind == GS_break) or if this address is the jump target of an + exit of a block that has been instrumented for gdbserver while + single stepping (kind == GS_jump). + When gdbserver is not single stepping anymore, all GS_jump entries + are removed, their translations are invalidated. +*/ +static VgHashTable gs_addresses = NULL; + +static void add_gs_address (Addr addr, GS_Kind kind, char* from) +{ + GS_Address *p; + + p = VG_(arena_malloc)(VG_AR_CORE, from, sizeof(GS_Address)); + p->addr = addr; + p->kind = kind; + VG_(HT_add_node)(gs_addresses, p); + VG_(discard_translations) (addr, 1, from); +} + +static void remove_gs_address (GS_Address* g, char* from) +{ + VG_(HT_remove) (gs_addresses, g->addr); + VG_(discard_translations) (g->addr, 1, from); + VG_(arena_free) (VG_AR_CORE, g); +} + +char* VG_(ppPointKind) (PointKind kind) +{ + switch(kind) { + case software_breakpoint: return "software_breakpoint"; + case hardware_breakpoint: return "hardware_breakpoint"; + case write_watchpoint: return "write_watchpoint"; + case read_watchpoint: return "read_watchpoint"; + case access_watchpoint: return "access_watchpoint"; + default: vg_assert(0); + } +} + +typedef + struct _GS_Watch { + struct _GS_Watch* next; + Addr addr; + SizeT len; + PointKind kind; + } + GS_Watch; + +/* gs_watches contains a list of all addresses+len that are being watched. */ +static VgHashTable gs_watches = NULL; + + +/* protocol spec tells the below must be idempotent. */ +static void breakpoint (Bool insert, CORE_ADDR addr) +{ + GS_Address *g; + + g = VG_(HT_lookup) (gs_addresses, (UWord)addr); + if (insert) { + /* insert a breakpoint at addr or upgrade its kind */ + if (g == NULL) { + add_gs_address (addr, GS_break, "m_gdbserver breakpoint insert"); + } else { + /* already gdbserved. Normally, it must be because of a jump. + However, due to idempotent or if connection with gdb was + lost (kept breaks from the previous gdb), if already existing, + we just upgrade its kind. */ + g->kind = GS_break; + } + } else { + /* delete a breakpoint at addr or downgrade its kind */ + if (g != NULL && g->kind == GS_break) { + if (valgrind_single_stepping()) { + /* keep gdbserved instrumentation while single stepping */ + g->kind = GS_jump; + } else { + remove_gs_address (g, "m_gdbserver breakpoint remove"); + } + } else { + dlog (1, "remove break addr %p %s\n", + C2v(addr), (g == NULL ? + "NULL" : + (g->kind == GS_jump ? "GS_jump" : "GS_break"))); + } + } +} + +static Bool (*tool_watchpoint) (PointKind kind, + Bool insert, + Addr addr, + SizeT len) = NULL; +void VG_(needs_watchpoint) (Bool (*watchpoint) (PointKind kind, + Bool insert, + Addr addr, + SizeT len)) +{ + tool_watchpoint = watchpoint; +} + +Bool VG_(gdbserver_point) (PointKind kind, Bool insert, + CORE_ADDR addr, int len) +{ + Bool res; + GS_Watch *g; + Bool is_code = kind == software_breakpoint || kind == hardware_breakpoint; + + dlog(1, "%s %s at addr %p %s\n", + (insert ? "insert" : "remove"), + VG_(ppPointKind) (kind), + C2v(addr), + sym(addr, is_code)); + + if (is_code) { + breakpoint (insert, addr); + return True; + } + + vg_assert (kind == access_watchpoint + || kind == read_watchpoint + || kind == write_watchpoint); + + if (tool_watchpoint == NULL) + return False; + + res = (*tool_watchpoint) (kind, insert, addr, len); + if (!res) + return False; /* error or unsupported */ + + g = VG_(HT_lookup) (gs_watches, (UWord)addr); + if (insert) { + if (g == NULL) { + g = VG_(arena_malloc)(VG_AR_CORE, "gdbserver_point watchpoint", + sizeof(GS_Watch)); + g->addr = addr; + g->len = len; + g->kind = kind; + VG_(HT_add_node)(gs_watches, g); + } else { + g->kind = kind; + } + } else { + vg_assert (g != NULL); + VG_(HT_remove) (gs_watches, g->addr); + VG_(arena_free) (VG_AR_CORE, g); + } + return True; +} + +Bool VG_(is_watched)(PointKind kind, Addr addr, Int szB) +{ + GS_Watch* g; + Bool watched = False; + const ThreadId tid = VG_(running_tid); + + if (!gdbserver_called) + return False; + + Addr to = addr + szB; // semi-open interval [addr, to[ + + vg_assert (kind == access_watchpoint + || kind == read_watchpoint + || kind == write_watchpoint); + dlog(1, "tid %d VG_(is_watched) %s addr %p szB %d\n", + tid, VG_(ppPointKind) (kind), C2v(addr), szB); + VG_(HT_ResetIter) (gs_watches); + while ((g = VG_(HT_Next) (gs_watches))) { + switch (g->kind) { + case software_breakpoint: + case hardware_breakpoint: + break; + case access_watchpoint: + case read_watchpoint: + case write_watchpoint: + if (to <= g->addr || addr >= (g->addr + g->len)) + /* If no overlap, examine next watchpoint: */ + continue; + + watched = True; /* We have an overlap */ + + /* call gdbserver if access kind reported by the tool + matches the watchpoint kind. */ + if (kind == access_watchpoint + || g->kind == access_watchpoint + || g->kind == kind) { + /* Watchpoint encountered. + If this is a read watchpoint, we directly call gdbserver + to report it to gdb. + Otherwise, for a write watchpoint, we have to finish + the instruction so as to modify the value. + If we do not finish the instruction, then gdb sees no + value change and continues. + For a read watchpoint, we better call gdbserver directly: + in case the current block is not gdbserved, Valgrind + will execute instructions till the next block. */ + + /* set the watchpoint stop address to the first read or written. */ + if (g->addr <= addr) { + VG_(set_watchpoint_stop_address) (addr); + } else { + VG_(set_watchpoint_stop_address) (g->addr); + } + + if (kind == write_watchpoint) { + /* Let Valgrind stop as early as possible after this instruction + by switching to Single Stepping mode. */ + valgrind_set_single_stepping (True); + invalidate_current_ip (tid, "m_gdbserver write watchpoint"); + } else { + call_gdbserver (tid, watch_reason); + VG_(set_watchpoint_stop_address) ((Addr) 0); + } + return True; // we are watched here. + } + break; + default: + vg_assert (0); + } + } + return watched; +} + +/* Returns the reason for which gdbserver instrumentation is needed */ +static VgVgdb VG_(gdbserver_instrumentation_needed) (VexGuestExtents* vge) +{ + GS_Address* g; + int e; + + if (!gdbserver_called) + return Vg_VgdbNo; + + if (valgrind_single_stepping()) { + dlog(2, "gdbserver_instrumentation_needed due to single stepping\n"); + return Vg_VgdbYes; + } + + if (VG_(clo_vgdb) == Vg_VgdbYes && VG_(HT_count_nodes) (gs_addresses) == 0) + return Vg_VgdbNo; + + /* We assume we do not have a huge nr of breakpoints. + Otherwise, we need something more efficient e.g. + a sorted list of breakpoints or associate extents to it or ... + */ + VG_(HT_ResetIter) (gs_addresses); + while ((g = VG_(HT_Next) (gs_addresses))) { + for (e = 0; e < vge->n_used; e++) { + if (g->addr >= vge->base[e] && g->addr < vge->base[e] + vge->len[e]) { + dlog(2, + "gdbserver_instrumentation_needed %p %s reason %s\n", + C2v(g->addr), sym(g->addr, /* is_code */ True), + (g->kind == GS_jump ? "GS_jump" : "GS_break")); + return Vg_VgdbYes; + } + } + } + + if (VG_(clo_vgdb) == Vg_VgdbFull) { + dlog(4, "gdbserver_instrumentation_needed" + " due to VG_(clo_vgdb) == Vg_VgdbFull\n"); + return Vg_VgdbFull; + } + + + return Vg_VgdbNo; +} + +// Clear gdbserved_addresses in gs_addresses. +// If clear_only_jumps, clears only the addresses that are served +// for jump reasons. +// Otherwise, clear all the addresses. +// Cleared addresses are invalidated so as to have them re-translated. +static void clear_gdbserved_addresses(Bool clear_only_jumps) +{ + GS_Address** ag; + UInt n_elems; + int i; + + dlog(1, + "clear_gdbserved_addresses: scanning hash table nodes %d\n", + VG_(HT_count_nodes) (gs_addresses)); + ag = (GS_Address**) VG_(HT_to_array) (gs_addresses, &n_elems); + for (i = 0; i < n_elems; i++) + if (!clear_only_jumps || ag[i]->kind == GS_jump) + remove_gs_address (ag[i], "clear_gdbserved_addresses"); + VG_(free) (ag); +} + +// Clear watched addressed in gs_watches +static void clear_watched_addresses(void) +{ + GS_Watch** ag; + UInt n_elems; + int i; + + dlog(1, + "clear_watched_addresses: scanning hash table nodes %d\n", + VG_(HT_count_nodes) (gs_watches)); + ag = (GS_Watch**) VG_(HT_to_array) (gs_watches, &n_elems); + for (i = 0; i < n_elems; i++) { + if (!VG_(gdbserver_point) (ag[i]->kind, + /* insert */ False, + ag[i]->addr, + ag[i]->len)) { + vg_assert (0); + } + } + VG_(free) (ag); +} + +static void invalidate_if_jump_not_yet_gdbserved (Addr addr, char* from) +{ + if (VG_(HT_lookup) (gs_addresses, (UWord)addr)) + return; + add_gs_address (addr, GS_jump, from); +} + +static void invalidate_current_ip (ThreadId tid, char *who) +{ + invalidate_if_jump_not_yet_gdbserved (VG_(get_IP) (tid), who); +} + +void VG_(gdbserver_prerun_action) (ThreadId tid) +{ + // Using VG_(dyn_vgdb_error) allows the user to control if gdbserver + // stops after a fork. + if (VG_(dyn_vgdb_error) == 0) { + /* The below call allows gdb to attach at startup + before the first guest instruction is executed. */ + VG_(umsg)("(action at startup) vgdb me ... \n"); + VG_(gdbserver)(tid); + } else { + /* User has activated gdbserver => initialize now the FIFOs + to let vgdb/gdb contact us either via the scheduler poll + mechanism or via vgdb ptrace-ing valgrind. */ + if (VG_(gdbserver_activity) (tid)) + VG_(gdbserver) (tid); + } +} + +/* when fork is done, various cleanup is needed in the child process. + In particular, child must have its own connection to avoid stealing + data from its parent */ +static void gdbserver_cleanup_in_child_after_fork(ThreadId me) +{ + dlog(1, "thread %d gdbserver_cleanup_in_child_after_fork pid %d\n", + me, VG_(getpid) ()); + + /* finish connection inheritated from parent */ + remote_finish(reset_after_fork); + + /* ensure next call to gdbserver will be considered as a brand + new call that will initialize a fresh gdbserver. */ + if (gdbserver_called) { + gdbserver_called = 0; + vg_assert (gs_addresses != NULL); + vg_assert (gs_watches != NULL); + clear_gdbserved_addresses(/* clear only jumps */ False); + VG_(HT_destruct) (gs_addresses); + gs_addresses = NULL; + clear_watched_addresses(); + VG_(HT_destruct) (gs_watches); + gs_watches = NULL; + } else { + vg_assert (gs_addresses == NULL); + vg_assert (gs_watches == NULL); + } + + + if (VG_(clo_trace_children)) { + VG_(gdbserver_prerun_action) (me); + } +} + +/* If reason is init_reason, creates the connection resources (e.g. + the FIFOs) to allow a gdb connection to be detected by polling + using remote_desc_activity. + Otherwise (other reasons): + If connection with gdb not yet opened, opens the connection with gdb. + reads gdb remote protocol packets and executes the requested commands. +*/ +static void call_gdbserver ( ThreadId tid , CallReason reason) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int stepping; + Addr saved_pc; + + dlog(1, + "entering call_gdbserver %s ... pid %d tid %d status %s " + "sched_jmpbuf_valid %d\n", + ppCallReason (reason), + VG_(getpid) (), tid, VG_(name_of_ThreadStatus)(tst->status), + tst->sched_jmpbuf_valid); + + vg_assert(VG_(is_valid_tid)(tid)); + saved_pc = VG_(get_IP) (tid); + + if (gdbserver_exited) { + dlog(0, "call_gdbserver called when gdbserver_exited %d\n", + gdbserver_exited); + return; + } + + if (gdbserver_called == 0) { + vg_assert (gs_addresses == NULL); + vg_assert (gs_watches == NULL); + gs_addresses = VG_(HT_construct)( "gdbserved_addresses" ); + gs_watches = VG_(HT_construct)( "gdbserved_watches" ); + VG_(atfork)(NULL, NULL, gdbserver_cleanup_in_child_after_fork); + } + vg_assert (gs_addresses != NULL); + vg_assert (gs_watches != NULL); + + gdbserver_called++; + + /* call gdbserver_init if this is the first call to gdbserver. */ + if (gdbserver_called == 1) + gdbserver_init(); + + if (reason == init_reason || gdbserver_called == 1) + remote_open(VG_(clo_vgdb_prefix)); + + /* if the call reason is to initialize, then return control to + valgrind. After this initialization, gdbserver will be called + again either if there is an error detected by valgrind or + if vgdb sends data to the valgrind process. */ + if (reason == init_reason) { + return; + } + + stepping = valgrind_single_stepping(); + + server_main(); + + ignore_this_break_once = valgrind_get_ignore_break_once(); + if (ignore_this_break_once) + dlog(1, "!!! will ignore_this_break_once %s\n", + sym(ignore_this_break_once, /* is_code */ True)); + + + if (valgrind_single_stepping()) { + /* we are single stepping. If we were not stepping on entry, + then invalidate the current program counter so as to properly + do single step. In case the program counter was changed by + gdb, this will also invalidate the target address we will + jump to. */ + if (!stepping && tid != 0) { + invalidate_current_ip (tid, "m_gdbserver single step"); + } + } else { + /* We are not single stepping. If we were stepping on entry, + then clear the gdbserved addresses. This will cause all + these gdbserved blocks to be invalidated so that they can be + re-translated without being gdbserved. */ + if (stepping) + clear_gdbserved_addresses(/* clear only jumps */ True); + } + + /* can't do sanity check at beginning. At least the stack + check is not yet possible. */ + if (gdbserver_called > 1) + VG_(sanity_check_general) (/* force_expensive */ False); + + /* If the PC has been changed by gdb, then we VG_MINIMAL_LONGJMP to + the scheduler to execute the block of the new PC. + Otherwise we just return to continue executing the + current block. */ + if (VG_(get_IP) (tid) != saved_pc) { + dlog(1, "tid %d %s PC changed from %s to %s\n", + tid, VG_(name_of_ThreadStatus) (tst->status), + sym(saved_pc, /* is_code */ True), + sym(VG_(get_IP) (tid), /* is_code */ True)); + if (tst->status == VgTs_Yielding) { + SysRes sres; + VG_(memset)(&sres, 0, sizeof(SysRes)); + VG_(acquire_BigLock)(tid, "gdbsrv VG_MINIMAL_LONGJMP"); + } + if (tst->sched_jmpbuf_valid) { + /* resume scheduler */ + VG_MINIMAL_LONGJMP(tst->sched_jmpbuf); + } + /* else continue to run */ + } + /* continue to run */ +} + +/* busy > 0 when gdbserver is currently being called. + busy is used to to avoid vgdb invoking gdbserver + while gdbserver by Valgrind. */ +static volatile int busy = 0; + +void VG_(gdbserver) ( ThreadId tid ) +{ + busy++; + /* called by the rest of valgrind for + --vgdb-error=0 reason + or by scheduler "poll/debug/interrupt" reason + or to terminate. */ + if (tid != 0) { + call_gdbserver (tid, core_reason); + } else { + if (gdbserver_called == 0) { + dlog(1, "VG_(gdbserver) called to terminate, nothing to terminate\n"); + } else if (gdbserver_exited) { + dlog(0, "VG_(gdbserver) called to terminate again %d\n", + gdbserver_exited); + } else { + gdbserver_terminate(); + gdbserver_exited++; + } + } + busy--; +} + +// nr of invoke_gdbserver while gdbserver is already executing. +static int interrupts_while_busy = 0; + +// nr of invoke_gdbserver while gdbserver is not executing. +static int interrupts_non_busy = 0; + +// nr of invoke_gdbserver when some threads are not interruptible. +static int interrupts_non_interruptible = 0; + +/* When all threads are blocked in a system call, the Valgrind + scheduler cannot poll the shared memory for gdbserver activity. In + such a case, vgdb will force the invokation of gdbserver using + ptrace. To do that, vgdb 'pushes' a call to invoke_gdbserver + on the stack using ptrace. invoke_gdbserver must not return. + Instead, it must call give_control_back_to_vgdb. + vgdb expects to receive a SIGTRAP, which this function generates. + When vgdb gets this SIGTRAP, it knows invoke_gdbserver call + is finished and can reset the Valgrind process in the state prior to + the 'pushed call' (using ptrace again). + This all works well. However, the user must avoid + 'kill-9ing' vgdb during such a pushed call, otherwise + the SIGTRAP generated below will be seen by the Valgrind core, + instead of being handled by vgdb. When the Valgrind core gets + such a SIGTRAP, it will assert. */ + +static void give_control_back_to_vgdb(void) +{ + /* cause a SIGTRAP to be sent to ourself, so that vgdb takes control. + vgdb will then restore the stack so as to resume the activity + before the ptrace (typically do_syscall_WRK). */ + if (VG_(kill)(VG_(getpid)(), VKI_SIGTRAP) != 0) + vg_assert2(0, "SIGTRAP for vgdb could not be generated\n"); + + /* If we arrive here, it means a call was pushed on the stack + by vgdb, but during this call, vgdb and/or connection + died. Alternatively, it is a bug in the vgdb<=>Valgrind gdbserver + ptrace handling. */ + vg_assert2(0, + "vgdb did not took control. Did you kill vgdb ?\n" + "busy %d vgdb_interrupted_tid %d\n", + busy, vgdb_interrupted_tid); +} + +/* Using ptrace calls, vgdb will force an invocation of gdbserver. + VG_(invoke_gdbserver) is the entry point called through the + vgdb ptrace technique. */ +void VG_(invoke_gdbserver) ( int check ) +{ + /* ******* Avoid non-reentrant function call from here ..... + till the ".... till here" below. */ + + /* We need to determine the state of the various threads to decide + if we directly invoke gdbserver or if we rather indicate to the + scheduler to invoke the gdbserver. To decide that, it is + critical to avoid any "coregrind" function call as the ptrace + might have stopped the process in the middle of this (possibly) + non-rentrant function. So, it is only when all threads are in + an "interruptible" state that we can safely invoke + gdbserver. Otherwise, we let the valgrind scheduler invoke + gdbserver at the next poll. This poll will be made very soon + thanks to a call to VG_(force_vgdb_poll). */ + int n_tid; + + vg_assert (check == 0x8BADF00D); + + if (busy) { + interrupts_while_busy++; + give_control_back_to_vgdb(); + } + interrupts_non_busy++; + + /* check if all threads are in an "interruptible" state. If yes, + we invoke gdbserver. Otherwise, we tell the scheduler to wake up + asap. */ + for (n_tid = 1; n_tid < VG_N_THREADS; n_tid++) { + switch (VG_(threads)[n_tid].status) { + /* interruptible states. */ + case VgTs_WaitSys: + case VgTs_Yielding: + if (vgdb_interrupted_tid == 0) vgdb_interrupted_tid = n_tid; + break; + + case VgTs_Empty: + case VgTs_Zombie: + break; + + /* non interruptible states. */ + case VgTs_Init: + case VgTs_Runnable: + interrupts_non_interruptible++; + VG_(force_vgdb_poll) (); + give_control_back_to_vgdb(); + + default: vg_assert(0); + } + } + + /* .... till here. + From here onwards, function calls are ok: it is + safe to call valgrind core functions: all threads are blocked in + a system call or are yielding or ... */ + dlog(1, "invoke_gdbserver running_tid %d vgdb_interrupted_tid %d\n", + VG_(running_tid), vgdb_interrupted_tid); + call_gdbserver (vgdb_interrupted_tid, vgdb_reason); + vgdb_interrupted_tid = 0; + dlog(1, + "exit invoke_gdbserver running_tid %d\n", VG_(running_tid)); + give_control_back_to_vgdb(); + + vg_assert2(0, "end of invoke_gdbserver reached"); + +} + +Bool VG_(gdbserver_activity) (ThreadId tid) +{ + Bool ret; + busy++; + if (!gdbserver_called) + call_gdbserver (tid, init_reason); + switch (remote_desc_activity("VG_(gdbserver_activity)")) { + case 0: ret = False; break; + case 1: ret = True; break; + case 2: call_gdbserver (tid, init_reason); ret = False; break; + default: vg_assert (0); + } + busy--; + return ret; +} + +Bool VG_(gdbserver_report_signal) (Int sigNo, ThreadId tid) +{ + dlog(1, "signal %d tid %d\n", sigNo, tid); + + /* if gdbserver is currently not connected, then signal + is to be given to the process */ + if (!remote_connected()) { + dlog(1, "not connected => pass\n"); + return True; + } + if (pass_signals[sigNo]) { + dlog(1, "pass_signals => pass\n"); + return False; + } + + /* indicate to gdbserver that there is a signal */ + gdbserver_signal_encountered (sigNo); + + /* let gdbserver do some work, e.g. show the signal to the user */ + call_gdbserver (tid, signal_reason); + + /* ask gdbserver what is the final decision */ + if (gdbserver_deliver_signal (sigNo)) { + dlog(1, "gdbserver deliver signal\n"); + return True; + } else { + dlog(1, "gdbserver ignore signal\n"); + return False; + } +} + +// Check if single_stepping or if there is a break requested at iaddr. +// If yes, call debugger +VG_REGPARM(1) +void VG_(helperc_CallDebugger) ( HWord iaddr ) +{ + GS_Address* g; + + // For Vg_VgdbFull, after a fork, we might have calls to this helper + // while gdbserver is not yet initialized. + if (!gdbserver_called) + return; + + if (valgrind_single_stepping() || + ((g = VG_(HT_lookup) (gs_addresses, (UWord)iaddr)) && + (g->kind == GS_break))) { + if (iaddr == ignore_this_break_once) { + dlog(1, "ignoring ignore_this_break_once %s\n", + sym(ignore_this_break_once, /* is_code */ True)); + ignore_this_break_once = 0; + } else { + call_gdbserver (VG_(get_running_tid)(), break_reason); + } + } +} + +/* software_breakpoint support --------------------------------------*/ +/* When a block is instrumented for gdbserver, single step and breaks + will be obeyed in this block. However, if a jump to another block + is executed while single_stepping is active, we must ensure that + this block is also instrumented. For this, when a block is + instrumented for gdbserver while single_stepping, the target of all + the Jump instructions in this block will be checked to verify if + the block is already instrumented for gdbserver. The below will + ensure that if not already instrumented for gdbserver, the target + block translation containing addr will be invalidated. The list of + gdbserved Addr will also be kept so that translations can be + dropped automatically by gdbserver when going out of single step + mode. + + Call the below at translation time if the jump target is a constant. + Otherwise, rather use VG_(add_stmt_call_invalidate_if_not_gdbserved). + + To instrument the target exit statement, you can call + VG_(add_stmt_call_invalidate_exit_target_if_not_gdbserved) rather + than check the kind of target exit. */ +static void VG_(invalidate_if_not_gdbserved) (Addr addr) +{ + if (valgrind_single_stepping()) + invalidate_if_jump_not_yet_gdbserved + (addr, "gdbserver target jump (instrument)"); +} + +// same as VG_(invalidate_if_not_gdbserved) but is intended to be called +// at runtime (only difference is the invalidate reason which traces +// it is at runtime) +VG_REGPARM(1) +void VG_(helperc_invalidate_if_not_gdbserved) ( Addr addr ) +{ + if (valgrind_single_stepping()) + invalidate_if_jump_not_yet_gdbserved + (addr, "gdbserver target jump (runtime)"); +} + +static void VG_(add_stmt_call_invalidate_if_not_gdbserved) + ( IRSB* sb_in, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRTemp jmp, + IRSB* irsb) +{ + + void* fn; + HChar* nm; + IRExpr** args; + Int nargs; + IRDirty* di; + + fn = &VG_(helperc_invalidate_if_not_gdbserved); + nm = "VG_(helperc_invalidate_if_not_gdbserved)"; + args = mkIRExprVec_1(IRExpr_RdTmp (jmp)); + nargs = 1; + + di = unsafeIRDirty_0_N( nargs/*regparms*/, nm, + VG_(fnptr_to_fnentry)( fn ), args ); + + di->nFxState = 0; + + addStmtToIRSB(irsb, IRStmt_Dirty(di)); +} + +/* software_breakpoint support --------------------------------------*/ +/* If a tool wants to allow gdbserver to do something at Addr, then + VG_(add_stmt_call_gdbserver) will add in IRSB a call to a helper + function. This helper function will check if the process must be + stopped at the instruction Addr: either there is a break at Addr or + the process is being single-stepped. Typical usage of the below is to + instrument an Ist_IMark to allow the debugger to interact at any + instruction being executed. As soon as there is one break in a block, + then to allow single stepping in this block (and possible insertions + of other breaks in the same sb_in while the process is stopped), a + debugger statement will be inserted for all instructions of a block. */ +static void VG_(add_stmt_call_gdbserver) + (IRSB* sb_in, /* block being translated */ + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy, + Addr iaddr, /* Addr of instruction being instrumented */ + IRSB* irsb) /* irsb block to which call is added */ +{ + void* fn; + HChar* nm; + IRExpr** args; + Int nargs; + IRDirty* di; + + /* first store the address in the program counter so that the check + done by VG_(helperc_CallDebugger) will be based on the correct + program counter. We might make this more efficient by rather + searching for assignement to program counter and instrumenting + that but the below is easier and I guess that the optimiser will + remove the redundant store. And in any case, when debugging a + piece of code, the efficiency requirement is not critical: very + few blocks will be instrumented for debugging. */ + + addStmtToIRSB(irsb, IRStmt_Put(layout->offset_IP , mkIRExpr_HWord(iaddr))); + + fn = &VG_(helperc_CallDebugger); + nm = "VG_(helperc_CallDebugger)"; + args = mkIRExprVec_1(mkIRExpr_HWord (iaddr)); + nargs = 1; + + di = unsafeIRDirty_0_N( nargs/*regparms*/, nm, + VG_(fnptr_to_fnentry)( fn ), args ); + + /* Note: in fact, a debugger call can read whatever register + or memory. It can also write whatever register or memory. + So, in theory, we have to indicate the whole universe + can be read and modified. It is however not critical + to indicate precisely what is being read/written + as such indications are needed for tool error detection + and we do not want to have errors being detected for + gdb interactions. */ + + di->nFxState = 2; + di->fxState[0].fx = Ifx_Read; + di->fxState[0].offset = layout->offset_SP; + di->fxState[0].size = layout->sizeof_SP; + di->fxState[1].fx = Ifx_Modify; + di->fxState[1].offset = layout->offset_IP; + di->fxState[1].size = layout->sizeof_IP; + + addStmtToIRSB(irsb, IRStmt_Dirty(di)); + +} + + +/* Invalidate the target of the exit if needed: + If target is constant, it is invalidated at translation time. + Otherwise, a call to a helper function is generated to invalidate + the translation at run time. + The below is thus calling either VG_(invalidate_if_not_gdbserved) + or VG_(add_stmt_call_invalidate_if_not_gdbserved). */ +static void VG_(add_stmt_call_invalidate_exit_target_if_not_gdbserved) + (IRSB* sb_in, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, + IRSB* irsb) +{ + if (sb_in->next->tag == Iex_Const) { + VG_(invalidate_if_not_gdbserved) (gWordTy == Ity_I64 ? + sb_in->next->Iex.Const.con->Ico.U64 + : sb_in->next->Iex.Const.con->Ico.U32); + } else if (sb_in->next->tag == Iex_RdTmp) { + VG_(add_stmt_call_invalidate_if_not_gdbserved) + (sb_in, layout, vge, sb_in->next->Iex.RdTmp.tmp, irsb); + } else { + vg_assert (0); /* unexpected expression tag in exit. */ + } +} + +IRSB* VG_(instrument_for_gdbserver_if_needed) + (IRSB* sb_in, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy) +{ + IRSB* sb_out; + Int i; + const VgVgdb instr_needed = VG_(gdbserver_instrumentation_needed) (vge); + + if (instr_needed == Vg_VgdbNo) + return sb_in; + + + /* here, we need to instrument for gdbserver */ + sb_out = deepCopyIRSBExceptStmts(sb_in); + + for (i = 0; i < sb_in->stmts_used; i++) { + IRStmt* st = sb_in->stmts[i]; + + if (!st || st->tag == Ist_NoOp) continue; + + if (st->tag == Ist_Exit && instr_needed == Vg_VgdbYes) { + VG_(invalidate_if_not_gdbserved) + (hWordTy == Ity_I64 ? + st->Ist.Exit.dst->Ico.U64 : + st->Ist.Exit.dst->Ico.U32); + } + addStmtToIRSB( sb_out, st ); + if (st->tag == Ist_IMark) { + /* For an Ist_Mark, add a call to debugger. */ + switch (instr_needed) { + case Vg_VgdbNo: vg_assert (0); + case Vg_VgdbYes: + case Vg_VgdbFull: + VG_(add_stmt_call_gdbserver) ( sb_in, layout, vge, + gWordTy, hWordTy, + st->Ist.IMark.addr, + sb_out); + /* There is an optimisation possible here for Vg_VgdbFull: + Put a guard ensuring we only call gdbserver if 'FullCallNeeded'. + FullCallNeeded would be set to 1 we have just switched on + Single Stepping or have just encountered a watchpoint + or have just inserted a breakpoint. + (as gdb by default removes and re-insert breakpoints), we would + need to also implement the notion of 'breakpoint pending removal' + to remove at the next 'continue/step' packet. */ + break; + default: vg_assert (0); + } + } + } + + if (instr_needed == Vg_VgdbYes) { + VG_(add_stmt_call_invalidate_exit_target_if_not_gdbserved) (sb_in, + layout, vge, + gWordTy, + sb_out); + } + + return sb_out; +} + +struct mon_out_buf { + char buf[DATASIZ+1]; + int next; + UInt ret; +}; + +static void mon_out (HChar c, void *opaque) +{ + struct mon_out_buf *b = (struct mon_out_buf *) opaque; + b->ret++; + b->buf[b->next] = c; + b->next++; + if (b->next == DATASIZ) { + b->buf[b->next] = '\0'; + monitor_output(b->buf); + b->next = 0; + } +} +UInt VG_(gdb_printf) ( const HChar *format, ... ) +{ + struct mon_out_buf b; + + b.next = 0; + b.ret = 0; + + va_list vargs; + va_start(vargs, format); + VG_(vcbprintf) (mon_out, &b, format, vargs); + va_end(vargs); + + if (b.next > 0) { + b.buf[b.next] = '\0'; + monitor_output(b.buf); + } + return b.ret; +} + +Int VG_(keyword_id) (Char* keywords, Char* input_word, kwd_report_error report) +{ + const Int il = (input_word == NULL ? 0 : VG_(strlen) (input_word)); + Char iw[il+1]; + Char kwds[VG_(strlen)(keywords)+1]; + Char *kwdssaveptr; + + Char* kw; /* current keyword, its length, its position */ + Int kwl; + Int kpos = -1; + + Int pass; + /* pass 0 = search, optional pass 1 = output message multiple matches */ + + Int pass1needed = 0; + + Int partial_match = -1; + Int full_match = -1; + + if (input_word == NULL) { + iw[0] = 0; + partial_match = 0; /* to force an empty string to cause an error */ + } else { + VG_(strcpy) (iw, input_word); + } + + for (pass = 0; pass < 2; pass++) { + VG_(strcpy) (kwds, keywords); + if (pass == 1) + VG_(gdb_printf) ("%s can match", + (il == 0 ? "" : (char *) iw)); + for (kw = VG_(strtok_r) (kwds, " ", &kwdssaveptr); + kw != NULL; + kw = VG_(strtok_r) (NULL, " ", &kwdssaveptr)) { + kwl = VG_(strlen) (kw); + kpos++; + + if (il > kwl) { + ; /* ishtar !~ is */ + } else if (il == kwl) { + if (VG_(strcmp) (kw, iw) == 0) { + /* exact match */ + if (pass == 1) + VG_(gdb_printf) (" %s", kw); + if (full_match != -1) + pass1needed++; + full_match = kpos; + } + } else { + /* il < kwl */ + if (VG_(strncmp) (iw, kw, il) == 0) { + /* partial match */ + if (pass == 1) + VG_(gdb_printf) (" %s", kw); + if (partial_match != -1) + pass1needed++; + partial_match = kpos; + } + } + } + /* check for success or for no match at all */ + if (pass1needed == 0) { + if (full_match != -1) { + return full_match; + } else { + if (report == kwd_report_all && partial_match == -1) { + VG_(gdb_printf) ("%s does not match any of '%s'\n", + iw, keywords); + } + return partial_match; + } + } + + /* here we have duplicated match error */ + if (pass == 1 || report == kwd_report_none) { + if (report != kwd_report_none) { + VG_(gdb_printf) ("\n"); + } + if (partial_match != -1 || full_match != -1) + return -2; + else + return -1; + } + } + /* UNREACHED */ + vg_assert (0); +} + +/* True if string can be a 0x number */ +static Bool is_zero_x (Char *s) +{ + if (strlen (s) >= 3 && s[0] == '0' && s[1] == 'x') + return True; + else + return False; +} + +/* True if string can be a 0b number */ +static Bool is_zero_b (Char *s) +{ + if (strlen (s) >= 3 && s[0] == '0' && s[1] == 'b') + return True; + else + return False; +} + +void VG_(strtok_get_address_and_size) (Addr* address, + SizeT* szB, + Char **ssaveptr) +{ + Char* wa; + Char* ws; + Char* endptr; + UChar *ppc; + + wa = VG_(strtok_r) (NULL, " ", ssaveptr); + ppc = wa; + if (ppc == NULL || !VG_(parse_Addr) (&ppc, address)) { + VG_(gdb_printf) ("missing or malformed address\n"); + *address = (Addr) 0; + *szB = 0; + return; + } + ws = VG_(strtok_r) (NULL, " ", ssaveptr); + if (ws == NULL) { + /* Do nothing, i.e. keep current value of szB. */ ; + } else if (is_zero_x (ws)) { + *szB = VG_(strtoull16) (ws, &endptr); + } else if (is_zero_b (ws)) { + Int j; + Char *parsews = ws; + Int n_bits = VG_(strlen) (ws) - 2; + *szB = 0; + ws = NULL; // assume the below loop gives a correct nr. + for (j = 0; j < n_bits; j++) { + if ('0' == parsews[j+2]) { /* do nothing */ } + else if ('1' == parsews[j+2]) *szB |= (1 << (n_bits-j-1)); + else { + /* report malformed binary integer */ + ws = parsews; + endptr = ws + j + 2; + break; + } + } + } else { + *szB = VG_(strtoull10) (ws, &endptr); + } + + if (ws != NULL && *endptr != '\0') { + VG_(gdb_printf) ("malformed integer, expecting " + "hex 0x..... or dec ...... or binary .....b\n"); + *address = (Addr) 0; + *szB = 0; + return; + } +} + +void VG_(gdbserver_status_output)(void) +{ + const int nr_gdbserved_addresses + = (gs_addresses == NULL ? -1 : VG_(HT_count_nodes) (gs_addresses)); + const int nr_watchpoints + = (gs_watches == NULL ? -1 : VG_(HT_count_nodes) (gs_watches)); + remote_utils_output_status(); + VG_(umsg) + ("nr of calls to gdbserver: %d\n" + "single stepping %d\n" + "interrupts intr_tid %d gs_non_busy %d gs_busy %d tid_non_intr %d\n" + "gdbserved addresses %d (-1 = not initialized)\n" + "watchpoints %d (-1 = not initialized)\n" + "vgdb-error %d\n", + gdbserver_called, + valgrind_single_stepping(), + + vgdb_interrupted_tid, + interrupts_non_busy, + interrupts_while_busy, + interrupts_non_interruptible, + + nr_gdbserved_addresses, + nr_watchpoints, + VG_(dyn_vgdb_error)); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s1.xml new file mode 100644 index 000000000..8073622a7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s1.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s2.xml new file mode 100644 index 000000000..fe3a427af --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec-valgrind-s2.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec.xml new file mode 100644 index 000000000..45d31afa9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-altivec.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-core.xml new file mode 100644 index 000000000..9acb3ad52 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-core.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml new file mode 100644 index 000000000..01b852e8f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml new file mode 100644 index 000000000..2db1a4ab9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu.xml new file mode 100644 index 000000000..d896b47d1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-fpu.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s1.xml new file mode 100644 index 000000000..a02dd8ec9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s1.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s2.xml new file mode 100644 index 000000000..59f6ee3df --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux-valgrind-s2.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux.xml new file mode 100644 index 000000000..b8b75199a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power-linux.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s1.xml new file mode 100644 index 000000000..f6296bf71 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s1.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s2.xml new file mode 100644 index 000000000..663232e27 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core-valgrind-s2.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core.xml new file mode 100644 index 000000000..e0a6ee323 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-core.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml new file mode 100644 index 000000000..7f1d0acc1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml new file mode 100644 index 000000000..007bd04aa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux.xml new file mode 100644 index 000000000..a72a058c0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/power64-linux.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l-valgrind.xml new file mode 100644 index 000000000..07094a4d7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l-valgrind.xml @@ -0,0 +1,27 @@ + + + + + + + + powerpc:common + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l.xml new file mode 100644 index 000000000..8d77e107f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec32l.xml @@ -0,0 +1,19 @@ + + + + + + + + powerpc:common + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml new file mode 100644 index 000000000..a2cd61504 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml @@ -0,0 +1,27 @@ + + + + + + + + powerpc:common64 + + + + + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l.xml new file mode 100644 index 000000000..d06dad9bb --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/powerpc-altivec64l.xml @@ -0,0 +1,19 @@ + + + + + + + + powerpc:common64 + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.c new file mode 100644 index 000000000..a9202316f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.c @@ -0,0 +1,263 @@ +/* Register support routines for the remote server for GDB. + Copyright (C) 2001, 2002, 2004, 2005, 2011 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "regdef.h" + +/* The private data for the register cache. Note that we have one + per inferior; this is primarily for simplicity, as the performance + benefit is minimal. */ + +struct inferior_regcache_data +{ + int registers_valid; + unsigned char *registers; + Bool *register_supplied; /* set to True once it has been supplied */ +}; + +static int register_bytes; + +static struct reg *reg_defs; +static int num_registers; + +const char **gdbserver_expedite_regs; + +static +struct inferior_regcache_data * get_regcache (struct thread_info *inf, + int fetch) +{ + struct inferior_regcache_data *regcache; + + regcache = (struct inferior_regcache_data *) inferior_regcache_data (inf); + + if (regcache == NULL) + fatal ("no register cache\n"); + + /* FIXME - fetch registers for INF */ + if (fetch && regcache->registers_valid == 0) { + fetch_inferior_registers (0); + regcache->registers_valid = 1; + } + + return regcache; +} + +void regcache_invalidate_one (struct inferior_list_entry *entry) +{ + struct thread_info *thread = (struct thread_info *) entry; + struct inferior_regcache_data *regcache; + + regcache = (struct inferior_regcache_data *) inferior_regcache_data (thread); + + if (regcache->registers_valid) { + struct thread_info *saved_inferior = current_inferior; + + current_inferior = thread; + store_inferior_registers (-1); + current_inferior = saved_inferior; + } + + regcache->registers_valid = 0; +} + +void regcache_invalidate () +{ + for_each_inferior (&all_threads, regcache_invalidate_one); +} + +int registers_length (void) +{ + return 2 * register_bytes; +} + +void *new_register_cache (void) +{ + struct inferior_regcache_data *regcache; + + regcache = malloc (sizeof (*regcache)); + + /* Make sure to zero-initialize the register cache when it is created, + in case there are registers the target never fetches. This way they'll + read as zero instead of garbage. */ + regcache->registers = calloc (1, register_bytes); + if (regcache->registers == NULL) + fatal ("Could not allocate register cache.\n"); + + regcache->register_supplied = calloc (1, num_registers); + if (regcache->register_supplied == NULL) + fatal ("Could not allocate register_supplied cache.\n"); + + regcache->registers_valid = 0; + + return regcache; +} + +void free_register_cache (void *regcache_p) +{ + struct inferior_regcache_data *regcache + = (struct inferior_regcache_data *) regcache_p; + + free (regcache->registers); + free (regcache->register_supplied); + free (regcache); +} + +/* if a regcache exists for entry, reallocate it. + This is needed if the shadow registers are added. + In such a case, a 2nd call to set_register_cache is done + which will cause the reallocation of already created caches. */ +static +void regcache_realloc_one (struct inferior_list_entry *entry) +{ + struct thread_info *thread = (struct thread_info *) entry; + struct inferior_regcache_data *regcache; + + regcache = (struct inferior_regcache_data *) inferior_regcache_data (thread); + + if (regcache) { + free_register_cache (regcache); + set_inferior_regcache_data (thread, new_register_cache ()); + } +} + +void set_register_cache (struct reg *regs, int n) +{ + int offset, i; + + reg_defs = regs; + num_registers = n; + + offset = 0; + for (i = 0; i < n; i++) { + regs[i].offset = offset; + offset += regs[i].size; + } + + register_bytes = offset / 8; + + for_each_inferior (&all_threads, regcache_realloc_one); +} + +void registers_to_string (char *buf) +{ + unsigned char *registers = get_regcache (current_inferior, 1)->registers; + + convert_int_to_ascii (registers, buf, register_bytes); +} + +void registers_from_string (char *buf) +{ + int len = strlen (buf); + unsigned char *registers = get_regcache (current_inferior, 1)->registers; + + if (len != register_bytes * 2) { + warning ("Wrong sized register packet (expected %d bytes, got %d)\n", + 2*register_bytes, len); + if (len > register_bytes * 2) + len = register_bytes * 2; + } + convert_ascii_to_int (buf, registers, len / 2); +} + +int find_regno (const char *name) +{ + int i; + + for (i = 0; i < num_registers; i++) + if (!strcmp (name, reg_defs[i].name)) + return i; + fatal ("Unknown register %s requested\n", name); + return -1; +} + +struct reg *find_register_by_number (int n) +{ + return ®_defs[n]; +} + +int register_size (int n) +{ + return reg_defs[n].size / 8; +} + +static +unsigned char *register_data (int n, int fetch) +{ + unsigned char *registers + = get_regcache (current_inferior, fetch)->registers; + + return registers + (reg_defs[n].offset / 8); +} +static +unsigned char *register_data_for_supply (int n, int fetch, Bool *mod) +{ + struct inferior_regcache_data * cache + = get_regcache (current_inferior, fetch); + unsigned char *registers = cache->registers; + + if (cache->register_supplied[n]) + *mod = False; + else + *mod = True; + cache->register_supplied[n] = True; + return registers + (reg_defs[n].offset / 8); +} + +void supply_register (int n, const void *buf, Bool *mod) +{ + Bool new; + VG_(dmemcpy) (register_data_for_supply (n, 0, &new), + buf, register_size (n), mod); + if (new) + *mod = True; +} + +void supply_register_from_string (int n, const char *buf, Bool *mod) +{ + Bool new; + unsigned char bytes_register[register_size (n)]; + convert_ascii_to_int ((char *) buf, bytes_register, register_size (n)); + VG_(dmemcpy) (register_data_for_supply (n, 0, &new), + bytes_register, register_size (n), mod); + if (new) + *mod = True; +} + +void supply_register_by_name (const char *name, const void *buf, Bool *mod) +{ + supply_register (find_regno (name), buf, mod); +} + +void collect_register (int n, void *buf) +{ + VG_(memcpy) (buf, register_data (n, 1), register_size (n)); +} + +void collect_register_as_string (int n, char *buf) +{ + convert_int_to_ascii (register_data (n, 1), buf, register_size (n)); +} + +void collect_register_by_name (const char *name, void *buf) +{ + collect_register (find_regno (name), buf); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.h new file mode 100644 index 000000000..2f17d0a2e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regcache.h @@ -0,0 +1,80 @@ +/* Register support routines for the remote server for GDB. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef REGCACHE_H +#define REGCACHE_H + +struct inferior_list_entry; + +/* Create a new register cache for INFERIOR. */ + +void *new_register_cache (void); + +/* Release all memory associated with the register cache for INFERIOR. */ + +void free_register_cache (void *regcache); + +/* Invalidate cached registers for one or all threads. */ + +void regcache_invalidate_one (struct inferior_list_entry *); +void regcache_invalidate (void); + +/* Convert all registers to a string in the currently specified remote + format. */ + +void registers_to_string (char *buf); + +/* Convert a string to register values and fill our register cache. */ + +void registers_from_string (char *buf); + +/* Return the size in bytes of a string-encoded register packet. */ + +int registers_length (void); + +/* Return a pointer to the description of register ``n''. */ + +struct reg *find_register_by_number (int n); + +int register_size (int n); + +int find_regno (const char *name); + +extern const char **gdbserver_expedite_regs; + +/* *mod set to True if *buf provides a new value. */ +void supply_register (int n, const void *buf, Bool *mod); + +/* Reads register data from buf (hex string in target byte order) + and stores it in the register cache. + *mod set to True if *buf provides a new value. */ +void supply_register_from_string (int n, const char *buf, Bool *mod); + +/* *mod set to True if *buf provides a new value. */ +void supply_register_by_name (const char *name, const void *buf, Bool *mod); + +void collect_register (int n, void *buf); + +void collect_register_as_string (int n, char *buf); + +void collect_register_by_name (const char *name, void *buf); + +#endif /* REGCACHE_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regdef.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regdef.h new file mode 100644 index 000000000..60400fd66 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/regdef.h @@ -0,0 +1,47 @@ +/* Register protocol definition structures for the GNU Debugger + Copyright 2001, 2002 Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + 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. */ + +#ifndef REGDEF_H +#define REGDEF_H + +struct reg +{ + /* The name of this register - NULL for pad entries. */ + const char *name; + + /* At the moment, both of the following bit counts must be divisible + by eight (to match the representation as two hex digits) and divisible + by the size of a byte (to match the layout of each register in + memory). */ + + /* The offset (in bits) of the value of this register in the buffer. */ + int offset; + + /* The size (in bits) of the value of this register, as transmitted. */ + int size; +}; + +/* Set the current remote protocol and register cache according to the array + ``regs'', with ``n'' elements. */ + +void set_register_cache (struct reg *regs, int n); + +#endif /* REGDEF_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/remote-utils.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/remote-utils.c new file mode 100644 index 000000000..7797ff439 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/remote-utils.c @@ -0,0 +1,1038 @@ +/* Remote utility routines for the remote server for GDB. + Copyright (C) 1986, 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003, 2004, 2005, 2006, 2011 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_vkiscnums.h" +#include "pub_core_libcsignal.h" +#include "pub_core_options.h" + +#include "server.h" + +# if defined(VGO_linux) +#include +# endif + +Bool noack_mode; + +static int readchar (int single); + +void remote_utils_output_status(void); + +static int remote_desc; + +static VgdbShared *shared; +static int last_looked_cntr = -1; +static struct vki_pollfd remote_desc_pollfdread_activity; +#define INVALID_DESCRIPTOR -1 + +/* for a gdbserver embedded in valgrind, we read from a FIFO and write + to another FIFO So, we need two descriptors */ +static int write_remote_desc = INVALID_DESCRIPTOR; +static int pid_from_to_creator; +/* only this pid will remove the FIFOs: if an exec fails, we must avoid + that the exiting child believes it has to remove the FIFOs of its parent */ +static int mknod_done = 0; + +static char *from_gdb = NULL; +static char *to_gdb = NULL; +static char *shared_mem = NULL; + +static +int open_fifo (char *side, char *path, int flags) +{ + SysRes o; + int fd; + dlog(1, "Opening %s side %s\n", side, path); + o = VG_(open) (path, flags, 0); + if (sr_isError (o)) { + sr_perror(o, "open fifo %s\n", path); + fatal ("valgrind: fatal error: vgdb FIFO cannot be opened.\n"); + } else { + fd = sr_Res(o); + dlog(1, "result fd %d\n", fd); + } + fd = VG_(safe_fd)(fd); + dlog(1, "result safe_fd %d\n", fd); + if (fd == -1) + fatal("safe_fd for vgdb FIFO failed\n"); + return fd; +} + +void remote_utils_output_status(void) +{ + if (shared == NULL) + VG_(umsg)("remote communication not initialized\n"); + else + VG_(umsg)("shared->written_by_vgdb %d shared->seen_by_valgrind %d\n", + shared->written_by_vgdb, shared->seen_by_valgrind); +} + +/* Returns 0 if vgdb and connection state looks good, + otherwise returns an int value telling which check failed. */ +static +int vgdb_state_looks_bad(char* where) +{ + if (VG_(kill)(shared->vgdb_pid, 0) != 0) + return 1; // vgdb process does not exist anymore. + + if (remote_desc_activity(where) == 2) + return 2; // check for error on remote desc shows a problem + + if (remote_desc == INVALID_DESCRIPTOR) + return 3; // after check, remote_desc not ok anymore + + return 0; // all is ok. +} + +/* On systems that defines PR_SET_PTRACER, verify if ptrace_scope is + is permissive enough for vgdb. Otherwise, call set_ptracer. + This is especially aimed at Ubuntu >= 10.10 which has added + the ptrace_scope context. */ +static +void set_ptracer(void) +{ +#ifdef PR_SET_PTRACER + SysRes o; + char *ptrace_scope_setting_file = "/proc/sys/kernel/yama/ptrace_scope"; + int fd; + char ptrace_scope; + int ret; + + o = VG_(open) (ptrace_scope_setting_file, VKI_O_RDONLY, 0); + if (sr_isError(o)) { + if (VG_(debugLog_getLevel)() >= 1) { + sr_perror(o, "error VG_(open) %s\n", ptrace_scope_setting_file); + } + /* can't read setting. Assuming ptrace can be called by vgdb. */ + return; + } + fd = sr_Res(o); + if (VG_(read) (fd, &ptrace_scope, 1) == 1) { + dlog(1, "ptrace_scope %c\n", ptrace_scope); + if (ptrace_scope != '0') { + /* insufficient default ptrace_scope. + Indicate to the kernel that we accept to be + ptraced by our vgdb. */ + ret = VG_(prctl) (PR_SET_PTRACER, shared->vgdb_pid, 0, 0, 0); + dlog(1, "set_ptracer to vgdb_pid %d result %d\n", + shared->vgdb_pid, ret); + } + } else { + dlog(0, "Could not read the ptrace_scope setting from %s\n", + ptrace_scope_setting_file); + } + + VG_(close) (fd); +#endif +} + +/* returns 1 if one or more poll "errors" is set. + Errors are: VKI_POLLERR or VKI_POLLHUP or VKI_POLLNAL */ +static +int poll_cond (short revents) +{ + return (revents & (VKI_POLLERR | VKI_POLLHUP | VKI_POLLNVAL)); +} + +/* Ensures we have a valid write file descriptor. + Returns 1 if we have a valid write file descriptor, + 0 if the write fd could not be opened. */ +static +int ensure_write_remote_desc(void) +{ + struct vki_pollfd write_remote_desc_ok; + int ret; + if (write_remote_desc != INVALID_DESCRIPTOR) { + write_remote_desc_ok.fd = write_remote_desc; + write_remote_desc_ok.events = VKI_POLLOUT; + write_remote_desc_ok.revents = 0; + ret = VG_(poll)(&write_remote_desc_ok, 1, 0); + if (ret && poll_cond(write_remote_desc_ok.revents)) { + dlog(1, "POLLcond %d closing write_remote_desc %d\n", + write_remote_desc_ok.revents, write_remote_desc); + VG_(close) (write_remote_desc); + write_remote_desc = INVALID_DESCRIPTOR; + } + } + if (write_remote_desc == INVALID_DESCRIPTOR) { + /* open_fifo write will block if the receiving vgdb + process is dead. So, let's check for vgdb state to + be reasonably sure someone is reading on the other + side of the fifo. */ + if (!vgdb_state_looks_bad("bad?@ensure_write_remote_desc")) { + set_ptracer(); + write_remote_desc = open_fifo ("write", to_gdb, VKI_O_WRONLY); + } + } + + return (write_remote_desc != INVALID_DESCRIPTOR); +} + +#if defined(VGO_darwin) +#define VKI_S_IFIFO 0010000 +#endif +static +void safe_mknod (char *nod) +{ + SysRes m; + m = VG_(mknod) (nod, VKI_S_IFIFO|0666, 0); + if (sr_isError (m)) { + if (sr_Err (m) == VKI_EEXIST) { + if (VG_(clo_verbosity) > 1) { + VG_(umsg)("%s already created\n", nod); + } + } else { + sr_perror(m, "mknod %s\n", nod); + VG_(umsg) ("valgrind: fatal error: vgdb FIFOs cannot be created.\n"); + VG_(exit)(1); + } + } +} + +/* Open a connection to a remote debugger. + NAME is the filename used for communication. + For Valgrind, name is the prefix for the two read and write FIFOs + The two FIFOs names will be build by appending + -from-vgdb-to-pid and -to-vgdb-from-pid + with pid being the pidnr of the valgrind process These two FIFOs + will be created if not existing yet. They will be removed when + the gdbserver connection is closed or the process exits */ + +void remote_open (char *name) +{ + int save_fcntl_flags; + VgdbShared vgdbinit = + {0, 0, 0, (Addr) VG_(invoke_gdbserver), + (Addr) VG_(threads), sizeof(ThreadState), + offsetof(ThreadState, status), + offsetof(ThreadState, os_state) + offsetof(ThreadOSstate, lwpid)}; + const int pid = VG_(getpid)(); + const int name_default = strcmp(name, VG_CLO_VGDB_PREFIX_DEFAULT) == 0; + Addr addr_shared; + SysRes o; + int shared_mem_fd = INVALID_DESCRIPTOR; + + if (from_gdb != NULL) + free (from_gdb); + from_gdb = malloc (strlen(name) + 30); + if (to_gdb != NULL) + free (to_gdb); + to_gdb = malloc (strlen(name) + 30); + if (shared_mem != NULL) + free (shared_mem); + shared_mem = malloc (strlen(name) + 30); + /* below 3 lines must match the equivalent in vgdb.c */ + VG_(sprintf) (from_gdb, "%s-from-vgdb-to-%d", name, pid); + VG_(sprintf) (to_gdb, "%s-to-vgdb-from-%d", name, pid); + VG_(sprintf) (shared_mem, "%s-shared-mem-vgdb-%d", name, pid); + if (VG_(clo_verbosity) > 1) { + VG_(umsg)("embedded gdbserver: reading from %s\n", from_gdb); + VG_(umsg)("embedded gdbserver: writing to %s\n", to_gdb); + VG_(umsg)("embedded gdbserver: shared mem %s\n", shared_mem); + VG_(umsg)("CONTROL ME using: vgdb --pid=%d%s%s ...command...\n", + pid, (name_default ? "" : " --vgdb="), + (name_default ? "" : name)); + VG_(umsg)("DEBUG ME using: (gdb) target remote | vgdb --pid=%d%s%s\n", + pid, (name_default ? "" : " --vgdb="), + (name_default ? "" : name)); + VG_(umsg)(" --pid optional if only one valgrind process is running\n"); + } + + if (!mknod_done) { + mknod_done++; + safe_mknod(from_gdb); + safe_mknod(to_gdb); + + pid_from_to_creator = pid; + + o = VG_(open) (shared_mem, VKI_O_CREAT|VKI_O_RDWR, 0666); + if (sr_isError (o)) { + sr_perror(o, "cannot create shared_mem file %s\n", shared_mem); + fatal(""); + } else { + shared_mem_fd = sr_Res(o); + } + + if (VG_(write)(shared_mem_fd, &vgdbinit, sizeof(VgdbShared)) + != sizeof(VgdbShared)) { + fatal("error writing %d bytes to shared mem %s\n", + (int) sizeof(VgdbShared), shared_mem); + } + shared_mem_fd = VG_(safe_fd)(shared_mem_fd); + if (shared_mem_fd == -1) { + fatal("safe_fd for vgdb shared_mem %s failed\n", shared_mem); + } + { + SysRes res = VG_(am_shared_mmap_file_float_valgrind) + (sizeof(VgdbShared), VKI_PROT_READ|VKI_PROT_WRITE, + shared_mem_fd, (Off64T)0); + if (sr_isError(res)) { + sr_perror(res, "error VG_(am_shared_mmap_file_float_valgrind) %s\n", + shared_mem); + fatal(""); + } + addr_shared = sr_Res (res); + } + shared = (VgdbShared*) addr_shared; + } + + /* we open the read side FIFO in non blocking mode + We then set the fd in blocking mode. + Opening in non-blocking read mode always succeeds while opening + in non-blocking write mode succeeds only if the fifo is already + opened in read mode. So, we wait till we have read the first + character from the read side before opening the write side. */ + remote_desc = open_fifo ("read", from_gdb, VKI_O_RDONLY|VKI_O_NONBLOCK); + save_fcntl_flags = VG_(fcntl) (remote_desc, VKI_F_GETFL, 0); + VG_(fcntl) (remote_desc, VKI_F_SETFL, save_fcntl_flags & ~VKI_O_NONBLOCK); + remote_desc_pollfdread_activity.fd = remote_desc; + remote_desc_pollfdread_activity.events = VKI_POLLIN; + remote_desc_pollfdread_activity.revents = 0; +} + +/* sync_gdb_connection wait a time long enough to let the connection + be properly closed if needed when closing the connection (in case + of detach or error), if we reopen it too quickly, it seems there + are some events queued in the kernel concerning the "old" + connection/remote_desc which are discovered with poll or select on + the "new" connection/remote_desc. We bypass this by waiting some + time to let a proper cleanup to be donex */ +void sync_gdb_connection(void) +{ + VG_(poll)(0, 0, 100); +} + +static +char * ppFinishReason (FinishReason reason) +{ + switch (reason) { + case orderly_finish: return "orderly_finish"; + case reset_after_error: return "reset_after_error"; + case reset_after_fork: return "reset_after_fork"; + default: vg_assert (0); + } +} + +void remote_finish (FinishReason reason) +{ + dlog(1, "remote_finish (reason %s) %d %d\n", + ppFinishReason(reason), remote_desc, write_remote_desc); + reset_valgrind_sink(ppFinishReason(reason)); + if (write_remote_desc != INVALID_DESCRIPTOR) + VG_(close) (write_remote_desc); + write_remote_desc = INVALID_DESCRIPTOR; + if (remote_desc != INVALID_DESCRIPTOR) { + remote_desc_pollfdread_activity.fd = INVALID_DESCRIPTOR; + remote_desc_pollfdread_activity.events = 0; + remote_desc_pollfdread_activity.revents = 0; + VG_(close) (remote_desc); + } + remote_desc = INVALID_DESCRIPTOR; + noack_mode = False; + + /* ensure the child will create its own FIFOs */ + if (reason == reset_after_fork) + mknod_done = 0; + + if (reason == reset_after_error) + sync_gdb_connection(); +} + +/* orderly close, cleans up everything */ +void remote_close (void) +{ + const int pid = VG_(getpid)(); + remote_finish(orderly_finish); + if (pid == pid_from_to_creator) { + dlog(1, "unlinking\n %s\n %s\n %s\n", + from_gdb, to_gdb, shared_mem); + if (VG_(unlink) (from_gdb) == -1) + warning ("could not unlink %s\n", from_gdb); + if (VG_(unlink) (to_gdb) == -1) + warning ("could not unlink %s\n", to_gdb); + if (VG_(unlink) (shared_mem) == -1) + warning ("could not unlink %s\n", shared_mem); + } + else { + dlog(1, "not creator => not unlinking %s and %s\n", from_gdb, to_gdb); + } + free (from_gdb); + free (to_gdb); +} + +Bool remote_connected(void) +{ + return write_remote_desc != INVALID_DESCRIPTOR; +} + +/* cleanup after an error detected by poll_cond */ +static +void error_poll_cond(void) +{ + /* if we will close the connection, we assume either that + all characters have been seen or that they will be dropped. */ + shared->seen_by_valgrind = shared->written_by_vgdb; + remote_finish(reset_after_error); +} + +/* remote_desc_activity might be used at high frequency if the user + gives a small value to --vgdb-poll. So, the function avoids + doing repetitively system calls by rather looking at the + counter values maintained in shared memory by vgdb. */ +int remote_desc_activity(char *msg) +{ + int ret; + const int looking_at = shared->written_by_vgdb; + if (shared->seen_by_valgrind == looking_at) + // if (last_looked_cntr == looking_at) + return 0; + if (remote_desc == INVALID_DESCRIPTOR) + return 0; + + /* poll the remote desc */ + remote_desc_pollfdread_activity.revents = 0; + ret = VG_(poll) (&remote_desc_pollfdread_activity, 1, 0); + if (ret && poll_cond(remote_desc_pollfdread_activity.revents)) { + dlog(1, "POLLcond %d remote_desc_pollfdread %d\n", + remote_desc_pollfdread_activity.revents, remote_desc); + error_poll_cond(); + ret = 2; + } + dlog(1, + "remote_desc_activity %s %d last_looked_cntr %d looking_at %d" + " shared->written_by_vgdb %d shared->seen_by_valgrind %d" + " ret %d\n", + msg, remote_desc, last_looked_cntr, looking_at, + shared->written_by_vgdb, shared->seen_by_valgrind, + ret); + /* if no error from poll, indicate we have "seen" up to looking_at */ + if (ret != 2) + last_looked_cntr = looking_at; + return ret; +} + +/* Convert hex digit A to a number. */ + +static +int fromhex (int a) +{ + if (a >= '0' && a <= '9') + return a - '0'; + else if (a >= 'a' && a <= 'f') + return a - 'a' + 10; + else + error ("Reply contains invalid hex digit 0x%x\n", a); + return 0; +} + +int unhexify (char *bin, const char *hex, int count) +{ + int i; + + for (i = 0; i < count; i++) { + if (hex[0] == 0 || hex[1] == 0) { + /* Hex string is short, or of uneven length. + Return the count that has been converted so far. */ + return i; + } + *bin++ = fromhex (hex[0]) * 16 + fromhex (hex[1]); + hex += 2; + } + return i; +} + +void decode_address (CORE_ADDR *addrp, const char *start, int len) +{ + CORE_ADDR addr; + char ch; + int i; + + addr = 0; + for (i = 0; i < len; i++) { + ch = start[i]; + addr = addr << 4; + addr = addr | (fromhex (ch) & 0x0f); + } + *addrp = addr; +} + +/* Convert number NIB to a hex digit. */ + +static +int tohex (int nib) +{ + if (nib < 10) + return '0' + nib; + else + return 'a' + nib - 10; +} + +int hexify (char *hex, const char *bin, int count) +{ + int i; + + /* May use a length, or a nul-terminated string as input. */ + if (count == 0) + count = strlen (bin); + + for (i = 0; i < count; i++) { + *hex++ = tohex ((*bin >> 4) & 0xf); + *hex++ = tohex (*bin++ & 0xf); + } + *hex = 0; + return i; +} + +/* Convert BUFFER, binary data at least LEN bytes long, into escaped + binary data in OUT_BUF. Set *OUT_LEN to the length of the data + encoded in OUT_BUF, and return the number of bytes in OUT_BUF + (which may be more than *OUT_LEN due to escape characters). The + total number of bytes in the output buffer will be at most + OUT_MAXLEN. */ + +int +remote_escape_output (const gdb_byte *buffer, int len, + gdb_byte *out_buf, int *out_len, + int out_maxlen) +{ + int input_index, output_index; + + output_index = 0; + for (input_index = 0; input_index < len; input_index++) { + gdb_byte b = buffer[input_index]; + + if (b == '$' || b == '#' || b == '}' || b == '*') { + /* These must be escaped. */ + if (output_index + 2 > out_maxlen) + break; + out_buf[output_index++] = '}'; + out_buf[output_index++] = b ^ 0x20; + } else { + if (output_index + 1 > out_maxlen) + break; + out_buf[output_index++] = b; + } + } + + *out_len = input_index; + return output_index; +} + +/* Convert BUFFER, escaped data LEN bytes long, into binary data + in OUT_BUF. Return the number of bytes written to OUT_BUF. + Raise an error if the total number of bytes exceeds OUT_MAXLEN. + + This function reverses remote_escape_output. It allows more + escaped characters than that function does, in particular because + '*' must be escaped to avoid the run-length encoding processing + in reading packets. */ + +static +int remote_unescape_input (const gdb_byte *buffer, int len, + gdb_byte *out_buf, int out_maxlen) +{ + int input_index, output_index; + int escaped; + + output_index = 0; + escaped = 0; + for (input_index = 0; input_index < len; input_index++) { + gdb_byte b = buffer[input_index]; + + if (output_index + 1 > out_maxlen) + error ("Received too much data (len %d) from the target.\n", len); + + if (escaped) { + out_buf[output_index++] = b ^ 0x20; + escaped = 0; + } else if (b == '}') { + escaped = 1; + } else { + out_buf[output_index++] = b; + } + } + + if (escaped) + error ("Unmatched escape character in target response.\n"); + + return output_index; +} + +/* Look for a sequence of characters which can be run-length encoded. + If there are any, update *CSUM and *P. Otherwise, output the + single character. Return the number of characters consumed. */ + +static +int try_rle (char *buf, int remaining, unsigned char *csum, char **p) +{ + int n; + + /* Always output the character. */ + *csum += buf[0]; + *(*p)++ = buf[0]; + + /* Don't go past '~'. */ + if (remaining > 97) + remaining = 97; + + for (n = 1; n < remaining; n++) + if (buf[n] != buf[0]) + break; + + /* N is the index of the first character not the same as buf[0]. + buf[0] is counted twice, so by decrementing N, we get the number + of characters the RLE sequence will replace. */ + n--; + + if (n < 3) + return 1; + + /* Skip the frame characters. The manual says to skip '+' and '-' + also, but there's no reason to. Unfortunately these two unusable + characters double the encoded length of a four byte zero + value. */ + while (n + 29 == '$' || n + 29 == '#') + n--; + + *csum += '*'; + *(*p)++ = '*'; + *csum += n + 29; + *(*p)++ = n + 29; + + return n + 1; +} + +/* Send a packet to the remote machine, with error checking. + The data of the packet is in BUF, and the length of the + packet is in CNT. Returns >= 0 on success, -1 otherwise. */ + +int putpkt_binary (char *buf, int cnt) +{ + int i; + unsigned char csum = 0; + char *buf2; + char *p; + int cc; + + buf2 = malloc (PBUFSIZ); + + /* Copy the packet into buffer BUF2, encapsulating it + and giving it a checksum. */ + + p = buf2; + *p++ = '$'; + + for (i = 0; i < cnt;) + i += try_rle (buf + i, cnt - i, &csum, &p); + + *p++ = '#'; + *p++ = tohex ((csum >> 4) & 0xf); + *p++ = tohex (csum & 0xf); + + *p = '\0'; + + /* we might have to write a pkt when out FIFO not yet/anymore opened */ + if (!ensure_write_remote_desc()) { + warning ("putpkt(write) error: no write_remote_desc\n"); + return -1; + } + + /* Send it once (noack_mode) + or send it over and over until we get a positive ack. */ + + do { + if (VG_(write) (write_remote_desc, buf2, p - buf2) != p - buf2) { + warning ("putpkt(write) error\n"); + return -1; + } + + if (noack_mode) + dlog(1, "putpkt (\"%s\"); [no ack]\n", buf2); + else + dlog(1,"putpkt (\"%s\"); [looking for ack]\n", buf2); + + if (noack_mode) + break; + + cc = readchar (1); + if (cc > 0) + dlog(1, "[received '%c' (0x%x)]\n", cc, cc); + + if (cc <= 0) { + if (cc == 0) + dlog(1, "putpkt(read): Got EOF\n"); + else + warning ("putpkt(read) error\n"); + + free (buf2); + return -1; + } + + /* Check for an input interrupt while we're here. */ + if (cc == '\003') + (*the_target->send_signal) (VKI_SIGINT); + } + while (cc != '+'); + + free (buf2); + return 1; /* Success! */ +} + +/* Send a packet to the remote machine, with error checking. The data + of the packet is in BUF, and the packet should be a NUL-terminated + string. Returns >= 0 on success, -1 otherwise. */ + +int putpkt (char *buf) +{ + return putpkt_binary (buf, strlen (buf)); +} + +void monitor_output (char *s) +{ + const int len = strlen(s); + char *buf = malloc(1 + 2*len + 1); + + buf[0] = 'O'; + hexify(buf+1, s, len); + if (putpkt (buf) < 0) { + /* We probably have lost the connection with vgdb. */ + reset_valgrind_sink("Error writing monitor output"); + /* write again after reset */ + VG_(printf) ("%s", s); + } + + free (buf); +} + +/* Returns next char from remote GDB. -1 if error. */ +/* if single, only one character maximum can be read with + read system call. Otherwise, when reading an ack character + we might pile up the next gdb command in the static buf. + The read loop is then blocked in poll till gdb times out. */ +static +int readchar (int single) +{ + static unsigned char buf[PBUFSIZ]; + static int bufcnt = 0; + static unsigned char *bufp; + int ret; + + if (bufcnt-- > 0) + return *bufp++; + + if (remote_desc == INVALID_DESCRIPTOR) + return -1; + + /* No characters available in buf => + wait for some characters to arrive */ + remote_desc_pollfdread_activity.revents = 0; + ret = VG_(poll)(&remote_desc_pollfdread_activity, 1, -1); + if (ret != 1) { + dlog(0, "readchar: poll got %d\n", ret); + return -1; + } + if (single) + bufcnt = VG_(read) (remote_desc, buf, 1); + else + bufcnt = VG_(read) (remote_desc, buf, sizeof (buf)); + + if (bufcnt <= 0) { + if (bufcnt == 0) + dlog (1, "readchar: Got EOF\n"); + else + warning ("readchar read error\n"); + + return -1; + } + + shared->seen_by_valgrind += bufcnt; + + /* If we have received a character and we do not yet have a + connection, we better open our "write" fifo to let vgdb open its + read fifo side */ + if (write_remote_desc == INVALID_DESCRIPTOR + && !ensure_write_remote_desc()) { + dlog(1, "reachar: write_remote_desc could not be created"); + } + + bufp = buf; + bufcnt--; + + if (poll_cond(remote_desc_pollfdread_activity.revents)) { + dlog(1, "readchar: POLLcond got %d\n", + remote_desc_pollfdread_activity.revents); + error_poll_cond(); + } + + return *bufp++; +} + + +/* Read a packet from the remote machine, with error checking, + and store it in BUF. Returns length of packet, or negative if error. */ + +int getpkt (char *buf) +{ + char *bp; + unsigned char csum, c1, c2; + int c; + + while (1) { + csum = 0; + + while (1) { + c = readchar (0); + if (c == '$') + break; + dlog(1, "[getpkt: discarding char '%c']\n", c); + if (c < 0) + return -1; + } + + bp = buf; + while (1) { + c = readchar (0); + if (c < 0) + return -1; + if (c == '#') + break; + *bp++ = c; + csum += c; + } + *bp = 0; + + c1 = fromhex (readchar (0)); + c2 = fromhex (readchar (0)); + + if (csum == (c1 << 4) + c2) + break; + + dlog (0, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n", + (c1 << 4) + c2, csum, buf); + if (!ensure_write_remote_desc()) { + dlog(1, "getpkt(write nack) no write_remote_desc"); + } + VG_(write) (write_remote_desc, "-", 1); + } + + if (noack_mode) + dlog(1, "getpkt (\"%s\"); [no ack] \n", buf); + else + dlog(1, "getpkt (\"%s\"); [sending ack] \n", buf); + + if (!noack_mode) { + if (!ensure_write_remote_desc()) { + dlog(1, "getpkt(write ack) no write_remote_desc"); + } + VG_(write) (write_remote_desc, "+", 1); + dlog(1, "[sent ack]\n"); + } + + return bp - buf; +} + +void write_ok (char *buf) +{ + buf[0] = 'O'; + buf[1] = 'K'; + buf[2] = '\0'; +} + +void write_enn (char *buf) +{ + /* Some day, we should define the meanings of the error codes... */ + buf[0] = 'E'; + buf[1] = '0'; + buf[2] = '1'; + buf[3] = '\0'; +} + +void convert_int_to_ascii (unsigned char *from, char *to, int n) +{ + int nib; + int ch; + while (n--) { + ch = *from++; + nib = ((ch & 0xf0) >> 4) & 0x0f; + *to++ = tohex (nib); + nib = ch & 0x0f; + *to++ = tohex (nib); + } + *to++ = 0; +} + + +void convert_ascii_to_int (char *from, unsigned char *to, int n) +{ + int nib1, nib2; + while (n--) { + nib1 = fromhex (*from++); + nib2 = fromhex (*from++); + *to++ = (((nib1 & 0x0f) << 4) & 0xf0) | (nib2 & 0x0f); + } +} + +static +char * outreg (int regno, char *buf) +{ + if ((regno >> 12) != 0) + *buf++ = tohex ((regno >> 12) & 0xf); + if ((regno >> 8) != 0) + *buf++ = tohex ((regno >> 8) & 0xf); + *buf++ = tohex ((regno >> 4) & 0xf); + *buf++ = tohex (regno & 0xf); + *buf++ = ':'; + collect_register_as_string (regno, buf); + buf += 2 * register_size (regno); + *buf++ = ';'; + + return buf; +} + +void prepare_resume_reply (char *buf, char status, unsigned char sig) +{ + int nib; + + *buf++ = status; + + nib = ((sig & 0xf0) >> 4); + *buf++ = tohex (nib); + nib = sig & 0x0f; + *buf++ = tohex (nib); + + if (status == 'T') { + const char **regp = gdbserver_expedite_regs; + + if (the_target->stopped_by_watchpoint != NULL + && (*the_target->stopped_by_watchpoint) ()) { + CORE_ADDR addr; + int i; + + strncpy (buf, "watch:", 6); + buf += 6; + + addr = (*the_target->stopped_data_address) (); + + /* Convert each byte of the address into two hexadecimal chars. + Note that we take sizeof (void *) instead of sizeof (addr); + this is to avoid sending a 64-bit address to a 32-bit GDB. */ + for (i = sizeof (void *) * 2; i > 0; i--) { + *buf++ = tohex ((addr >> (i - 1) * 4) & 0xf); + } + *buf++ = ';'; + } + + while (*regp) { + buf = outreg (find_regno (*regp), buf); + regp ++; + } + + { + unsigned int gdb_id_from_wait; + + /* FIXME right place to set this? */ + thread_from_wait = + ((struct inferior_list_entry *)current_inferior)->id; + gdb_id_from_wait = thread_to_gdb_id (current_inferior); + + dlog(1, "Writing resume reply for %ld\n", thread_from_wait); + /* This if (1) ought to be unnecessary. But remote_wait in GDB + will claim this event belongs to inferior_ptid if we do not + specify a thread, and there's no way for gdbserver to know + what inferior_ptid is. */ + if (1 || old_thread_from_wait != thread_from_wait) { + general_thread = thread_from_wait; + VG_(sprintf) (buf, "thread:%x;", gdb_id_from_wait); + buf += strlen (buf); + old_thread_from_wait = thread_from_wait; + } + } + } + /* For W and X, we're done. */ + *buf++ = 0; +} + +void decode_m_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr) +{ + int i = 0, j = 0; + char ch; + *mem_addr_ptr = *len_ptr = 0; + + while ((ch = from[i++]) != ',') { + *mem_addr_ptr = *mem_addr_ptr << 4; + *mem_addr_ptr |= fromhex (ch) & 0x0f; + } + + for (j = 0; j < 4; j++) { + if ((ch = from[i++]) == 0) + break; + *len_ptr = *len_ptr << 4; + *len_ptr |= fromhex (ch) & 0x0f; + } +} + +void decode_M_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr, + unsigned char *to) +{ + int i = 0; + char ch; + *mem_addr_ptr = *len_ptr = 0; + + while ((ch = from[i++]) != ',') { + *mem_addr_ptr = *mem_addr_ptr << 4; + *mem_addr_ptr |= fromhex (ch) & 0x0f; + } + + while ((ch = from[i++]) != ':') { + *len_ptr = *len_ptr << 4; + *len_ptr |= fromhex (ch) & 0x0f; + } + + convert_ascii_to_int (&from[i++], to, *len_ptr); +} + +int decode_X_packet (char *from, int packet_len, CORE_ADDR *mem_addr_ptr, + unsigned int *len_ptr, unsigned char *to) +{ + int i = 0; + char ch; + *mem_addr_ptr = *len_ptr = 0; + + while ((ch = from[i++]) != ',') { + *mem_addr_ptr = *mem_addr_ptr << 4; + *mem_addr_ptr |= fromhex (ch) & 0x0f; + } + + while ((ch = from[i++]) != ':') { + *len_ptr = *len_ptr << 4; + *len_ptr |= fromhex (ch) & 0x0f; + } + + if (remote_unescape_input ((const gdb_byte *) &from[i], packet_len - i, + to, *len_ptr) != *len_ptr) + return -1; + + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.c new file mode 100644 index 000000000..546fe3b09 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.c @@ -0,0 +1,979 @@ +/* Main code for remote server for GDB. + Copyright (C) 1989, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003, + 2004, 2005, 2006, 2011 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "regdef.h" +#include "pub_core_options.h" +#include "pub_core_translate.h" +#include "pub_core_mallocfree.h" + +unsigned long cont_thread; +unsigned long general_thread; +unsigned long step_thread; +unsigned long thread_from_wait; +unsigned long old_thread_from_wait; + +int pass_signals[TARGET_SIGNAL_LAST]; + +/* for a gdbserver integrated in valgrind, resuming the process consists + in returning the control to valgrind. + Then at the next error or break or ..., valgrind calls gdbserver again. + A resume packet must then be built. + resume_packet_needed records the fact that the next call to gdbserver + must send a resume packet to gdb. */ +static Bool resume_packet_needed = False; + +VG_MINIMAL_JMP_BUF(toplevel); + +/* Decode a qXfer read request. Return 0 if everything looks OK, + or -1 otherwise. */ + +static +int decode_xfer_read (char *buf, char **annex, CORE_ADDR *ofs, unsigned int *len) +{ + /* Extract and NUL-terminate the annex. */ + *annex = buf; + while (*buf && *buf != ':') + buf++; + if (*buf == '\0') + return -1; + *buf++ = 0; + + /* After the read/write marker and annex, qXfer looks like a + traditional 'm' packet. */ + decode_m_packet (buf, ofs, len); + + return 0; +} + +/* Write the response to a successful qXfer read. Returns the + length of the (binary) data stored in BUF, corresponding + to as much of DATA/LEN as we could fit. IS_MORE controls + the first character of the response. */ +static +int write_qxfer_response (char *buf, unsigned char *data, int len, int is_more) +{ + int out_len; + + if (is_more) + buf[0] = 'm'; + else + buf[0] = 'l'; + + return remote_escape_output (data, len, (unsigned char *) buf + 1, &out_len, + PBUFSIZ - POVERHSIZ - 1) + 1; +} + +static Bool initial_valgrind_sink_saved = False; +/* True <=> valgrind log sink saved in initial_valgrind_sink */ +static OutputSink initial_valgrind_sink; + +static Bool command_output_to_log = False; +/* True <=> command output goes to log instead of gdb */ + +void reset_valgrind_sink(char *info) +{ + if (VG_(log_output_sink).fd != initial_valgrind_sink.fd + && initial_valgrind_sink_saved) { + VG_(log_output_sink).fd = initial_valgrind_sink.fd; + VG_(umsg) ("Reset valgrind output to log (%s)\n", + (info = NULL ? "" : info)); + } +} + +static +void kill_request (char *msg) +{ + VG_(umsg) ("%s", msg); + remote_close(); + VG_(exit) (0); +} + +/* handle_gdb_valgrind_command handles the provided mon string command. + If command is recognised, return 1 else return 0. + Note that in case of ambiguous command, 1 is returned. + + *sink_wanted_at_return is modified if one of the commands + 'vg.set *_output' is handled. +*/ +static +int handle_gdb_valgrind_command (char* mon, OutputSink* sink_wanted_at_return) +{ + UWord ret = 0; + char s[strlen(mon)+1]; /* copy for strtok_r */ + char* wcmd; + Char* ssaveptr; + char* endptr; + int kwdid; + int int_value; + + vg_assert (initial_valgrind_sink_saved); + + strcpy (s, mon); + wcmd = strtok_r (s, " ", &ssaveptr); + /* NB: if possible, avoid introducing a new command below which + starts with the same 4 first letters as an already existing + command. This ensures a shorter abbreviation for the user. */ + switch (VG_(keyword_id) ("help vg.set vg.info vg.wait vg.kill vg.translate", + wcmd, kwd_report_duplicated_matches)) { + case -2: + ret = 1; + break; + case -1: + break; + case 0: /* help */ + ret = 1; + wcmd = strtok_r (NULL, " ", &ssaveptr); + if (wcmd == NULL) { + int_value = 0; + } else { + switch (VG_(keyword_id) ("debug", wcmd, kwd_report_all)) { + case -2: int_value = 0; break; + case -1: int_value = 0; break; + case 0: int_value = 1; break; + default: tl_assert (0); + } + } + + VG_(gdb_printf) ( +"general valgrind monitor commands:\n" +" help [debug] : monitor command help. With debug: + debugging commands\n" +" vg.wait [] : sleep (default 0) then continue\n" +" vg.info all_errors : show all errors found so far\n" +" vg.info last_error : show last error found\n" +" vg.info n_errs_found : show the nr of errors found so far\n" +" vg.kill : kill the Valgrind process\n" +" vg.set gdb_output : set valgrind output to gdb\n" +" vg.set log_output : set valgrind output to log\n" +" vg.set mixed_output : set valgrind output to log, interactive output to gdb\n" +" vg.set vgdb-error : debug me at error >= \n"); + if (int_value) { VG_(gdb_printf) ( +"debugging valgrind internals monitor commands:\n" +" vg.info gdbserver_status : show gdbserver status\n" +" vg.info memory : show valgrind heap memory stats\n" +" vg.set debuglog : set valgrind debug log level to \n" +" vg.translate [] : debug translation of with \n" +" (default traceflags 0b00100000 : show after instrumentation)\n" +" An additional flag 0b100000000 allows to show gdbserver instrumentation\n"); + } + break; + case 1: /* vg.set */ + ret = 1; + wcmd = strtok_r (NULL, " ", &ssaveptr); + switch (kwdid = VG_(keyword_id) + ("vgdb-error debuglog gdb_output log_output mixed_output", + wcmd, kwd_report_all)) { + case -2: + case -1: + break; + case 0: /* vgdb-error */ + case 1: /* debuglog */ + wcmd = strtok_r (NULL, " ", &ssaveptr); + if (wcmd == NULL) { + int_value = 0; + endptr = "empty"; /* to report an error below */ + } else { + int_value = strtol (wcmd, &endptr, 10); + } + if (*endptr != '\0') { + VG_(gdb_printf) ("missing or malformed integer value\n"); + } else if (kwdid == 0) { + VG_(gdb_printf) ("vgdb-error value changed from %d to %d\n", + VG_(dyn_vgdb_error), int_value); + VG_(dyn_vgdb_error) = int_value; + } else if (kwdid == 1) { + VG_(gdb_printf) ("debuglog value changed from %d to %d\n", + VG_(debugLog_getLevel)(), int_value); + VG_(debugLog_startup) (int_value, "gdbsrv"); + } else { + vg_assert (0); + } + break; + case 2: /* gdb_output */ + (*sink_wanted_at_return).fd = -2; + command_output_to_log = False; + VG_(gdb_printf) ("valgrind output will go to gdb\n"); + break; + case 3: /* log_output */ + (*sink_wanted_at_return).fd = initial_valgrind_sink.fd; + command_output_to_log = True; + VG_(gdb_printf) ("valgrind output will go to log\n"); + break; + case 4: /* mixed output */ + (*sink_wanted_at_return).fd = initial_valgrind_sink.fd; + command_output_to_log = False; + VG_(gdb_printf) + ("valgrind output will go to log, interactive output will go to gdb\n"); + break; + default: + vg_assert (0); + } + break; + case 2: /* vg.info */ { + ret = 1; + wcmd = strtok_r (NULL, " ", &ssaveptr); + switch (kwdid = VG_(keyword_id) + ("all_errors n_errs_found last_error gdbserver_status memory", + wcmd, kwd_report_all)) { + case -2: + case -1: + break; + case 0: // all_errors + // A verbosity of minimum 2 is needed to show the errors. + VG_(show_all_errors)(/* verbosity */ 2, /* xml */ False); + break; + case 1: // n_errs_found + VG_(gdb_printf) ("n_errs_found %d (vgdb-error %d)\n", + VG_(get_n_errs_found) (), + VG_(dyn_vgdb_error)); + break; + case 2: // last_error + VG_(show_last_error)(); + break; + case 3: // gdbserver_status + VG_(gdbserver_status_output)(); + break; + case 4: /* memory */ + VG_(print_all_arena_stats) (); + if (VG_(clo_profile_heap)) + VG_(print_arena_cc_analysis) (); + ret = 1; + break; + default: + vg_assert(0); + } + break; + } + case 3: /* vg.wait */ + wcmd = strtok_r (NULL, " ", &ssaveptr); + if (wcmd != NULL) { + int_value = strtol (wcmd, &endptr, 10); + VG_(gdb_printf) ("gdbserver: continuing in %d ms ...\n", int_value); + VG_(poll)(NULL, 0, int_value); + } + VG_(gdb_printf) ("gdbserver: continuing after wait ...\n"); + ret = 1; + break; + case 4: /* vg.kill */ + kill_request ("monitor command request to kill this process\n"); + break; + case 5: { /* vg.translate */ + Addr address; + SizeT verbosity = 0x20; + + ret = 1; + + VG_(strtok_get_address_and_size) (&address, &verbosity, &ssaveptr); + if (address != (Addr) 0 || verbosity != 0) { + /* we need to force the output to log for the translation trace, + as low level VEX tracing cannot be redirected to gdb. */ + int saved_command_output_to_log = command_output_to_log; + int saved_fd = VG_(log_output_sink).fd; + Bool single_stepping_on_entry = valgrind_single_stepping(); + int vex_verbosity = verbosity & 0xff; + VG_(log_output_sink).fd = initial_valgrind_sink.fd; + if ((verbosity & 0x100) && !single_stepping_on_entry) { + valgrind_set_single_stepping(True); + // to force gdbserver instrumentation. + } +# if defined(VGA_arm) + // on arm, we need to (potentially) convert this address + // to the thumb form. + address = thumb_pc (address); +# endif + + VG_(translate) ( 0 /* dummy ThreadId; irrelevant due to debugging*/, + address, + /*debugging*/True, + (Int) vex_verbosity, + /*bbs_done*/0, + /*allow redir?*/True); + if ((verbosity & 0x100) && !single_stepping_on_entry) { + valgrind_set_single_stepping(False); + // reset single stepping. + } + command_output_to_log = saved_command_output_to_log; + VG_(log_output_sink).fd = saved_fd; + } + break; + } + + default: + vg_assert (0); + } + return ret; +} + +/* handle_gdb_monitor_command handles the provided mon string command, + which can be either a "standard" valgrind monitor command + or a tool specific monitor command. + If command recognised, return 1 else return 0. + Note that in case of ambiguous command, 1 is returned. +*/ +static +int handle_gdb_monitor_command (char* mon) +{ + UWord ret = 0; + UWord tool_ret = 0; + // initially, we assume that when returning, the desired sink is the + // one we have when entering. It can however be changed by the standard + // valgrind command handling. + OutputSink sink_wanted_at_return = VG_(log_output_sink); + + if (!initial_valgrind_sink_saved) { + /* first time we enter here, we save the valgrind default log sink */ + initial_valgrind_sink = sink_wanted_at_return; + initial_valgrind_sink_saved = True; + } + + if (!command_output_to_log) + VG_(log_output_sink).fd = -2; /* redirect to monitor_output */ + + ret = handle_gdb_valgrind_command (mon, &sink_wanted_at_return); + + /* Even if command was recognised by valgrind core, we call the + tool command handler : this is needed to handle help command + and/or to let the tool do some additional processing of a + valgrind standard command. Note however that if valgrind + recognised the command, we will always return success. */ + if (VG_(needs).client_requests) { + /* If the tool reports an error when handling a monitor command, + we need to avoid calling gdbserver during this command + handling. So, we temporarily set VG_(dyn_vgdb_error) to + a huge value to ensure m_errormgr.c does not call gdbserver. */ + Int save_dyn_vgdb_error = VG_(dyn_vgdb_error); + UWord arg[2]; + VG_(dyn_vgdb_error) = 999999999; + arg[0] = (UWord) VG_USERREQ__GDB_MONITOR_COMMAND; + arg[1] = (UWord) mon; + VG_TDICT_CALL(tool_handle_client_request, VG_(running_tid), arg, + &tool_ret); + VG_(dyn_vgdb_error) = save_dyn_vgdb_error; + } + + /* restore or set the desired output */ + VG_(log_output_sink).fd = sink_wanted_at_return.fd; + if (ret | tool_ret) + return 1; + else + return 0; +} + + +/* Handle all of the extended 'Q' packets. */ +static +void handle_set (char *arg_own_buf, int *new_packet_len_p) +{ + if (strcmp ("QStartNoAckMode", arg_own_buf) == 0) { + noack_mode = True; + write_ok (arg_own_buf); + return; + } + + if (strncmp ("QPassSignals:", arg_own_buf, 13) == 0) { + int i; + char *from, *to; + char *end = arg_own_buf + strlen(arg_own_buf); + CORE_ADDR sig; + for (i = 0; i < TARGET_SIGNAL_LAST; i++) + pass_signals[i] = 0; + + from = arg_own_buf + 13; + while (from < end) { + to = strchr(from, ';'); + if (to == NULL) to = end; + decode_address (&sig, from, to - from); + pass_signals[(int)sig] = 1; + dlog(1, "pass_signal %d\n", (int)sig); + from = to; + if (*from == ';') from++; + } + write_ok (arg_own_buf); + return; + } + /* Otherwise we didn't know what packet it was. Say we didn't + understand it. */ + arg_own_buf[0] = 0; +} + +/* Handle all of the extended 'q' packets. */ +static +void handle_query (char *arg_own_buf, int *new_packet_len_p) +{ + static struct inferior_list_entry *thread_ptr; + + /* qRcmd, monitor command handling. */ + if (strncmp ("qRcmd,", arg_own_buf, 6) == 0) { + char *p = arg_own_buf + 6; + int cmdlen = strlen(p)/2; + char cmd[cmdlen+1]; + + if (unhexify (cmd, p, cmdlen) != cmdlen) { + write_enn (arg_own_buf); + return; + } + cmd[cmdlen] = '\0'; + + if (handle_gdb_monitor_command (cmd)) { + /* In case the command is from a standalone vgdb, + connection will be closed soon => flush the output. */ + VG_(message_flush) (); + write_ok (arg_own_buf); + return; + } else { + /* cmd not recognised */ + VG_(gdb_printf) + ("command '%s' not recognised\n" + "In gdb, try 'monitor help'\n" + "In a shell, try 'vgdb help'\n", + cmd); + write_ok (arg_own_buf); + return; + } + } + + /* provide some valgrind specific info in return to qThreadExtraInfo. */ + if (strncmp ("qThreadExtraInfo,", arg_own_buf, 17) == 0) { + unsigned long gdb_id; + struct thread_info *ti; + ThreadState *tst; + char status[100]; + + gdb_id = strtoul (&arg_own_buf[17], NULL, 16); + ti = gdb_id_to_thread (gdb_id); + if (ti != NULL) { + tst = (ThreadState *) inferior_target_data (ti); + /* Additional info is the tid and the thread status. */ + VG_(snprintf) (status, sizeof(status), "tid %d %s", + tst->tid, + VG_(name_of_ThreadStatus)(tst->status)); + hexify (arg_own_buf, status, strlen(status)); + return; + } else { + write_enn (arg_own_buf); + return; + } + } + + if (strcmp ("qAttached", arg_own_buf) == 0) { + /* tell gdb to always detach, never kill the process */ + arg_own_buf[0] = '1'; + arg_own_buf[1] = 0; + return; + } + + if (strcmp ("qSymbol::", arg_own_buf) == 0) { + /* We have no symbol to read. */ + write_ok (arg_own_buf); + return; + } + + if (strcmp ("qfThreadInfo", arg_own_buf) == 0) { + thread_ptr = all_threads.head; + VG_(sprintf) (arg_own_buf, "m%x", + thread_to_gdb_id ((struct thread_info *)thread_ptr)); + thread_ptr = thread_ptr->next; + return; + } + + if (strcmp ("qsThreadInfo", arg_own_buf) == 0) { + if (thread_ptr != NULL) { + VG_(sprintf) (arg_own_buf, "m%x", + thread_to_gdb_id ((struct thread_info *)thread_ptr)); + thread_ptr = thread_ptr->next; + return; + } else { + VG_(sprintf) (arg_own_buf, "l"); + return; + } + } + + if ( ((*the_target->target_xml)() != NULL + || (*the_target->shadow_target_xml)() != NULL) + && strncmp ("qXfer:features:read:", arg_own_buf, 20) == 0) { + CORE_ADDR ofs; + unsigned int len, doc_len; + char *annex = NULL; + // First, the annex is extracted from the packet received. + // Then, it is replaced by the corresponding file name. + int fd; + + /* Grab the annex, offset, and length. */ + if (decode_xfer_read (arg_own_buf + 20, &annex, &ofs, &len) < 0) { + strcpy (arg_own_buf, "E00"); + return; + } + + if (strcmp (annex, "target.xml") == 0) { + annex = NULL; // to replace it by the corresponding filename. + + /* If VG_(clo_vgdb_shadow_registers), try to use + shadow_target_xml. Fallback to target_xml + if not defined. */ + if (VG_(clo_vgdb_shadow_registers)) { + annex = (*the_target->shadow_target_xml)(); + if (annex != NULL) + /* Ensure the shadow registers are initialized. */ + initialize_shadow_low(True); + } + if (annex == NULL) + annex = (*the_target->target_xml)(); + if (annex == NULL) { + strcpy (arg_own_buf, "E00"); + return; + } + } + + { + char doc[VG_(strlen)(VG_(libdir)) + 1 + VG_(strlen)(annex)]; + struct vg_stat stat_doc; + char toread[len]; + int len_read; + + VG_(sprintf)(doc, "%s/%s", VG_(libdir), annex); + fd = VG_(fd_open) (doc, VKI_O_RDONLY, 0); + if (fd == -1) { + strcpy (arg_own_buf, "E00"); + return; + } + if (VG_(fstat) (fd, &stat_doc) != 0) { + VG_(close) (fd); + strcpy (arg_own_buf, "E00"); + return; + } + doc_len = stat_doc.size; + + if (len > PBUFSIZ - POVERHSIZ) + len = PBUFSIZ - POVERHSIZ; + + if (ofs > doc_len) { + write_enn (arg_own_buf); + VG_(close) (fd); + return; + } + VG_(lseek) (fd, ofs, VKI_SEEK_SET); + len_read = VG_(read) (fd, toread, len); + *new_packet_len_p = write_qxfer_response (arg_own_buf, toread, + len_read, ofs + len_read < doc_len); + VG_(close) (fd); + return; + } + } + + /* Protocol features query. */ + if (strncmp ("qSupported", arg_own_buf, 10) == 0 + && (arg_own_buf[10] == ':' || arg_own_buf[10] == '\0')) { + VG_(sprintf) (arg_own_buf, "PacketSize=%x", PBUFSIZ - 1); + /* Note: max packet size including frame and checksum, but without + trailing null byte, which is not sent/received. */ + + strcat (arg_own_buf, ";QStartNoAckMode+"); + strcat (arg_own_buf, ";QPassSignals+"); + + if ((*the_target->target_xml)() != NULL + || (*the_target->shadow_target_xml)() != NULL) { + strcat (arg_own_buf, ";qXfer:features:read+"); + /* if a new gdb connects to us, we have to reset the register + set to the normal register sets to allow this new gdb to + decide to use or not the shadow registers. + + Note that the reset is only done for gdb that are sending + qSupported packets. If a user first connected with a recent + gdb using shadow registers and then with a very old gdb + that does not use qSupported packet, then the old gdb will + not properly connect. */ + initialize_shadow_low(False); + } + return; + } + + /* Otherwise we didn't know what packet it was. Say we didn't + understand it. */ + arg_own_buf[0] = 0; +} + +/* Handle all of the extended 'v' packets. */ +static +void handle_v_requests (char *arg_own_buf, char *status, int *signal) +{ + /* vcont packet code from gdb 6.6 removed */ + + /* Otherwise we didn't know what packet it was. Say we didn't + understand it. */ + arg_own_buf[0] = 0; + return; +} + +static +void myresume (int step, int sig) +{ + struct thread_resume resume_info[2]; + int n = 0; + + if (step || sig || (cont_thread != 0 && cont_thread != -1)) { + resume_info[0].thread + = ((struct inferior_list_entry *) current_inferior)->id; + resume_info[0].step = step; + resume_info[0].sig = sig; + resume_info[0].leave_stopped = 0; + n++; + } + resume_info[n].thread = -1; + resume_info[n].step = 0; + resume_info[n].sig = 0; + resume_info[n].leave_stopped = (cont_thread != 0 && cont_thread != -1); + + resume_packet_needed = True; + (*the_target->resume) (resume_info); +} + +/* server_main global variables */ +static char *own_buf; +static unsigned char *mem_buf; + +void gdbserver_init (void) +{ + dlog(1, "gdbserver_init gdbserver embedded in valgrind: %s\n", version); + noack_mode = False; + initialize_low (); + own_buf = malloc (PBUFSIZ); + mem_buf = malloc (PBUFSIZ); +} + +void gdbserver_terminate (void) +{ + /* last call to gdbserver is cleanup call */ + if (VG_MINIMAL_SETJMP(toplevel)) { + dlog(0, "error caused VG_MINIMAL_LONGJMP to gdbserver_terminate\n"); + return; + } + remote_close(); +} + +void server_main (void) +{ + static char status; + static int signal; + + char ch; + int i = 0; + unsigned int len; + CORE_ADDR mem_addr; + + signal = mywait (&status); + if (VG_MINIMAL_SETJMP(toplevel)) { + dlog(0, "error caused VG_MINIMAL_LONGJMP to server_main\n"); + } + while (1) { + unsigned char sig; + int packet_len; + int new_packet_len = -1; + + if (resume_packet_needed) { + resume_packet_needed = False; + prepare_resume_reply (own_buf, status, signal); + putpkt (own_buf); + } + + packet_len = getpkt (own_buf); + if (packet_len <= 0) + break; + + i = 0; + ch = own_buf[i++]; + switch (ch) { + case 'Q': + handle_set (own_buf, &new_packet_len); + break; + case 'q': + handle_query (own_buf, &new_packet_len); + break; + case 'd': + /* set/unset debugging is done through valgrind debug level. */ + own_buf[0] = '\0'; + break; + case 'D': + reset_valgrind_sink("gdb detaching from process"); + + /* When detaching or kill the process, gdb expects to get + an packet OK back. Any other output will make gdb + believes detach did not work. */ + write_ok (own_buf); + putpkt (own_buf); + remote_finish (reset_after_error); + remote_open (VG_(clo_vgdb_prefix)); + myresume (0, 0); + resume_packet_needed = False; + return; + case '!': + /* We can not use the extended protocol with valgrind, + because we can not restart the running + program. So return unrecognized. */ + own_buf[0] = '\0'; + break; + case '?': + prepare_resume_reply (own_buf, status, signal); + break; + case 'H': + if (own_buf[1] == 'c' || own_buf[1] == 'g' || own_buf[1] == 's') { + unsigned long gdb_id, thread_id; + + gdb_id = strtoul (&own_buf[2], NULL, 16); + thread_id = gdb_id_to_thread_id (gdb_id); + if (thread_id == 0) { + write_enn (own_buf); + break; + } + + if (own_buf[1] == 'g') { + general_thread = thread_id; + set_desired_inferior (1); + } else if (own_buf[1] == 'c') { + cont_thread = thread_id; + } else if (own_buf[1] == 's') { + step_thread = thread_id; + } + + write_ok (own_buf); + } else { + /* Silently ignore it so that gdb can extend the protocol + without compatibility headaches. */ + own_buf[0] = '\0'; + } + break; + case 'g': + set_desired_inferior (1); + registers_to_string (own_buf); + break; + case 'G': + set_desired_inferior (1); + registers_from_string (&own_buf[1]); + write_ok (own_buf); + break; + case 'P': { + int regno; + char *regbytes; + Bool mod; + ThreadState *tst; + regno = strtol(&own_buf[1], NULL, 16); + regbytes = strchr(&own_buf[0], '=') + 1; + set_desired_inferior (1); + tst = (ThreadState *) inferior_target_data (current_inferior); + /* Only accept changing registers in "runnable state3. + In fact, it would be ok to change most of the registers + except a few "sensitive" registers such as the PC, SP, BP. + We assume we do not need to very specific here, and that we + can just refuse all of these. */ + if (tst->status == VgTs_Runnable || tst->status == VgTs_Yielding) { + supply_register_from_string (regno, regbytes, &mod); + write_ok (own_buf); + } else { + /* at least from gdb 6.6 onwards, an E. error + reply is shown to the user. So, we do an error + msg which both is accepted by gdb as an error msg + and is readable by the user. */ + VG_(sprintf) + (own_buf, +"E.\n" +"ERROR changing register %s regno %d\n" +"gdb commands changing registers (pc, sp, ...) (e.g. 'jump',\n" +"set pc, calling from gdb a function in the debugged process, ...)\n" +"can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state\n" +"Thread status is %s\n", + find_register_by_number (regno)->name, regno, + VG_(name_of_ThreadStatus)(tst->status)); + if (VG_(clo_verbosity) > 1) + VG_(umsg) ("%s\n", own_buf); + } + break; + } + case 'm': + decode_m_packet (&own_buf[1], &mem_addr, &len); + if (read_inferior_memory (mem_addr, mem_buf, len) == 0) + convert_int_to_ascii (mem_buf, own_buf, len); + else + write_enn (own_buf); + break; + case 'M': + decode_M_packet (&own_buf[1], &mem_addr, &len, mem_buf); + if (write_inferior_memory (mem_addr, mem_buf, len) == 0) + write_ok (own_buf); + else + write_enn (own_buf); + break; + case 'X': + if (decode_X_packet (&own_buf[1], packet_len - 1, + &mem_addr, &len, mem_buf) < 0 + || write_inferior_memory (mem_addr, mem_buf, len) != 0) + write_enn (own_buf); + else + write_ok (own_buf); + break; + case 'C': + convert_ascii_to_int (own_buf + 1, &sig, 1); + if (target_signal_to_host_p (sig)) + signal = target_signal_to_host (sig); + else + signal = 0; + set_desired_inferior (0); + myresume (0, signal); + return; // return control to valgrind + case 'S': + convert_ascii_to_int (own_buf + 1, &sig, 1); + if (target_signal_to_host_p (sig)) + signal = target_signal_to_host (sig); + else + signal = 0; + set_desired_inferior (0); + myresume (1, signal); + return; // return control to valgrind + case 'c': + set_desired_inferior (0); + myresume (0, 0); + return; // return control to valgrind + case 's': + set_desired_inferior (0); + myresume (1, 0); + return; // return control to valgrind + case 'Z': { + char *lenptr; + char *dataptr; + CORE_ADDR addr = strtoul (&own_buf[3], &lenptr, 16); + int zlen = strtol (lenptr + 1, &dataptr, 16); + char type = own_buf[1]; + + if (the_target->insert_watchpoint == NULL + || (type < '0' || type > '4')) { + /* No watchpoint support or not a watchpoint command; + unrecognized either way. */ + own_buf[0] = '\0'; + } else { + int res; + + res = (*the_target->insert_watchpoint) (type, addr, zlen); + if (res == 0) + write_ok (own_buf); + else if (res == 1) + /* Unsupported. */ + own_buf[0] = '\0'; + else + write_enn (own_buf); + } + break; + } + case 'z': { + char *lenptr; + char *dataptr; + CORE_ADDR addr = strtoul (&own_buf[3], &lenptr, 16); + int zlen = strtol (lenptr + 1, &dataptr, 16); + char type = own_buf[1]; + + if (the_target->remove_watchpoint == NULL + || (type < '0' || type > '4')) { + /* No watchpoint support or not a watchpoint command; + unrecognized either way. */ + own_buf[0] = '\0'; + } else { + int res; + + res = (*the_target->remove_watchpoint) (type, addr, zlen); + if (res == 0) + write_ok (own_buf); + else if (res == 1) + /* Unsupported. */ + own_buf[0] = '\0'; + else + write_enn (own_buf); + } + break; + } + case 'k': + kill_request("Gdb request to kill this process\n"); + break; + case 'T': { + unsigned long gdb_id, thread_id; + + gdb_id = strtoul (&own_buf[1], NULL, 16); + thread_id = gdb_id_to_thread_id (gdb_id); + if (thread_id == 0) { + write_enn (own_buf); + break; + } + + if (mythread_alive (thread_id)) + write_ok (own_buf); + else + write_enn (own_buf); + break; + } + case 'R': + /* Restarting the inferior is only supported in the + extended protocol. + => It is a request we don't understand. Respond with an + empty packet so that gdb knows that we don't support this + request. */ + own_buf[0] = '\0'; + break; + case 'v': + /* Extended (long) request. */ + handle_v_requests (own_buf, &status, &signal); + break; + default: + /* It is a request we don't understand. Respond with an + empty packet so that gdb knows that we don't support this + request. */ + own_buf[0] = '\0'; + break; + } + + if (new_packet_len != -1) + putpkt_binary (own_buf, new_packet_len); + else + putpkt (own_buf); + + if (status == 'W') + VG_(umsg) ("\nChild exited with status %d\n", signal); + if (status == 'X') + VG_(umsg) ("\nChild terminated with signal = 0x%x (%s)\n", + target_signal_to_host (signal), + target_signal_to_name (signal)); + if (status == 'W' || status == 'X') { + VG_(umsg) ("Process exiting\n"); + VG_(exit) (0); + } + } + + /* We come here when getpkt fails => close the connection, + and re-open. Then return control to valgrind. + We return the control to valgrind as we assume that + the connection was closed due to vgdb having finished + to execute a command. */ + if (VG_(clo_verbosity) > 1) + VG_(umsg) ("Remote side has terminated connection. " + "GDBserver will reopen the connection.\n"); + remote_finish (reset_after_error); + remote_open (VG_(clo_vgdb_prefix)); + myresume (0, 0); + resume_packet_needed = False; + return; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.h new file mode 100644 index 000000000..dc1b1280e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/server.h @@ -0,0 +1,383 @@ +/* Common definitions for remote server for GDB. + Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, + 2006 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef SERVER_H +#define SERVER_H + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_xarray.h" +#include "pub_core_clientstate.h" +#include "pub_core_debuglog.h" +#include "pub_core_errormgr.h" +#include "pub_core_libcassert.h" +#include "pub_core_libcfile.h" +#include "pub_core_libcprint.h" +#include "pub_core_mallocfree.h" +#include "pub_core_syscall.h" +#include "pub_tool_libcproc.h" +#include "pub_core_tooliface.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_libcbase.h" +#include "pub_tool_options.h" +#include "pub_core_gdbserver.h" +#include "pub_tool_libcsetjmp.h" +#include "pub_core_threadstate.h" +#include "pub_core_aspacemgr.h" +#include "pub_tool_vki.h" +#include "valgrind.h" + +/*------------- interface m_gdbserver <=> low level gdbserver */ + +/* Initializes gdbserver. After a call to gdbserver_init, vgdb + can contact the gdbserver embedded in valgrind. + The rest of the low level gdbserver interface can only + be called */ +extern void gdbserver_init (void); + +extern void server_main (void); + +/* To be called to indicate that gdbserver usage is finished. + Resources (e.g. FIFOs) will be destroyed. */ +extern void gdbserver_terminate (void); + + +/* Output string s to the gdb debugging this process or to vgdb. + Do not call this directly. Rather use VG_(monitor_print) + to output something to gdb, use normal valgrind messaging + (e.g. VG_(umsg)) to send output that can either go + to gdb or to log. */ +extern void monitor_output (char *s); + +/* returns 0 if there is no connection or no event on the connection + with gdb. + returns 1 if there are some data which has been received from gdb + and that must (still) be handled. + returns 2 if remote_desc_activity detected the connection has been + lost and should be reopened. + msg is used for debug logging.*/ +extern int remote_desc_activity(char *msg); + +/* output some status of gdbserver communication */ +extern void remote_utils_output_status(void); + +/* True if there is a connection with gdb. */ +extern Bool remote_connected(void); + +/* Finish the connection with gdb and reset_valgrind_sink. + Keeps the FIFOs and shared mem so as to allow connection + to be reopened. */ +extern void remote_finish(FinishReason reason); + +/* If Valgrind sink was changed by gdbserver: + Resets the valgrind sink to before the changes done by gdbserver, + and does VG_(umsg). If info != NULL, info added in VG_(usmg). */ +extern void reset_valgrind_sink(char* info); + +/* For ARM usage. + Guesses if pc is a thumb pc. + In this case, returns pc with the thumb bit set (bit0) + else just returns pc. + + The guess is based on the following set of check: + if bit0 set => thumb + else if bit1 set => thumb + else uses the debuginfo to guess. + + If debug info not found for this pc, assumes arm */ +extern Addr thumb_pc (Addr pc); + +/* True if gdbserver is single stepping the valgrind process */ +extern Bool valgrind_single_stepping(void); + +/* Set Valgrind in single stepping mode or not according to Bool. */ +extern void valgrind_set_single_stepping(Bool); + +/* gets the addr at which a (possible) break must be ignored once. + If there is no such break to be ignored once, 0 is returned. + This is needed for the following case: + The user sets a break at address AAA. + The break is encountered. Then the user does stepi + (i.e. step one instruction). + In such a case, the already encountered break must be ignored + to ensure the stepi will advance by one instruction: a "break" + is implemented in valgrind by some helper code just after the + instruction mark at which the break is set. This helper code + verifies if either there is a break at the current PC + or if we are in stepping mode. If we are in stepping mode, + the already encountered break must be ignored once to advance + to the next instruction. + ??? need to check if this is *really* needed. */ +extern Addr valgrind_get_ignore_break_once(void); + +/* When addr > 0, ensures the next stop reply packet informs + gdb about the encountered watchpoint. + Use addr 0x0 to reset. */ +extern void VG_(set_watchpoint_stop_address) (Addr addr); + +/* when invoked by vgdb using ptrace, contains the tid chosen + by vgdb (if vgdb gives a tid different of 0: a 0 tid by + vgdb means use the running_tid if there is one running + or tid 1 otherwise). */ +extern ThreadId vgdb_interrupted_tid; + +/*------------ end of interface to low level gdbserver */ + + +#define dlog(level, ...) \ + do { if (UNLIKELY(VG_(debugLog_getLevel)() >= level)) \ + VG_(debugLog) (level, "gdbsrv",__VA_ARGS__); } \ + while (0) + + +/* vki only defines VKI_POLLIN but even not on all OS. + Below is from linux bits/poll.h */ +#ifndef VKI_POLLIN +#define VKI_POLLIN 0x0001 +#endif +#define VKI_POLLPRI 0x0002 +#define VKI_POLLOUT 0x0004 +#define VKI_POLLERR 0x0008 +#define VKI_POLLHUP 0x0010 +#define VKI_POLLNVAL 0x0020 + +/* a bunch of macros to avoid libc usage in valgrind-ified gdbserver */ +#define strcmp(s1,s2) VG_(strcmp) ((Char *)(s1),(Char *)(s2)) +#define strncmp(s1,s2,nmax) VG_(strncmp) ((Char *)(s1),(Char *)(s2),nmax) +#define strcat(s1,s2) VG_(strcat) ((Char *)(s1),(Char *)(s2)) +#define strcpy(s1,s2) VG_(strcpy) ((Char *)(s1),(Char *)(s2)) +#define strncpy(s1,s2,nmax) VG_(strncpy) ((Char *)(s1),(Char *)(s2),nmax) +#define strlen(s) VG_(strlen) ((Char *)(s)) +#define strtok(p,s) (char *) VG_(strtok) ((Char *)(p),(Char *)(s)) +#define strtok_r(p,s,ss) (char *) VG_(strtok_r) ((Char *)(p),(Char *)(s),(Char **)(ss)) +#define strchr(s,c) (char *) VG_(strchr) ((Char *)(s),c) +/* strtol and strtoul supports base 16 or else assumes it is base 10 */ +#define strtol(s,r,b) ((b) == 16 ? \ + VG_(strtoll16) ((Char *)(s),(Char **)(r)) \ + : VG_(strtoll10) ((Char *)(s),(Char **)(r))) +#define strtoul(s,r,b) ((b) == 16 ? \ + VG_(strtoull16) ((Char *)(s),(Char **)(r)) \ + : VG_(strtoull10) ((Char *)(s),(Char **)(r))) + +#define malloc(sz) VG_(arena_malloc) (VG_AR_CORE, "gdbsrv", sz) +#define calloc(n,sz) VG_(arena_calloc) (VG_AR_CORE, "gdbsrv", n, sz) +#define realloc(p,size) VG_(arena_realloc) (VG_AR_CORE, "gdbsrv", p, size) +#define strdup(s) (char *) VG_(arena_strdup) (VG_AR_CORE, "gdbsrv", (Char *)(s)) +#define free(b) VG_(arena_free) (VG_AR_CORE, b) + +#ifndef ATTR_NORETURN +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) +#define ATTR_NORETURN __attribute__ ((noreturn)) +#else +#define ATTR_NORETURN /* nothing */ +#endif +#endif + +#ifndef ATTR_FORMAT +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4)) +#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y))) +#else +#define ATTR_FORMAT(type, x, y) /* nothing */ +#endif +#endif + +/* A type used for binary buffers. */ +typedef unsigned char gdb_byte; + +typedef Addr CORE_ADDR; + +/* Generic information for tracking a list of ``inferiors'' - threads, + processes, etc. */ +struct inferior_list +{ + struct inferior_list_entry *head; + struct inferior_list_entry *tail; +}; +struct inferior_list_entry +{ + unsigned long id; + struct inferior_list_entry *next; +}; + +/* Opaque type for user-visible threads. */ +struct thread_info; + +#include "regcache.h" +#include "gdb/signals.h" + +/* signal handling with gdbserver: before delivering a signal, + call gdbserver_signal_encountered then give control to + gdbserver by calling call_gdbserver. + On return, call gdbserver_deliver_signal to effectively + deliver the signal or not. */ +extern void gdbserver_signal_encountered (Int sigNo); +/* between these two calls, call call_gdbserver */ +/* If gdbserver_deliver_signal True, then gdb did not ask + to ignore the signal, so signal can be delivered to the guest. */ +extern Bool gdbserver_deliver_signal (Int sigNo); + +/* To optimise signal handling, gdb can instruct gdbserver to + not stop on some signals. In the below, a 1 indicates the signal + has to be passed directly to the guest, without asking gdb. + A 0 indicates gdb has to be consulted to see if signal has + or has not to be passed. The gdb consultation is to + be done using the above two functions. */ +extern int pass_signals[]; + + +#include "target.h" + +/* Target-specific functions */ + +void initialize_low (void); + +/* initialize or re-initialize the register set of the low target. + if shadow_mode, then (re-)define the normal and valgrind shadow registers + else (re-)define only the normal registers. */ +void initialize_shadow_low (Bool shadow_mode); + +/* From inferiors.c. */ + +extern struct inferior_list all_threads; +void add_inferior_to_list (struct inferior_list *list, + struct inferior_list_entry *new_inferior); +void for_each_inferior (struct inferior_list *list, + void (*action) (struct inferior_list_entry *)); +extern struct thread_info *current_inferior; +void remove_inferior (struct inferior_list *list, + struct inferior_list_entry *entry); +void remove_thread (struct thread_info *thread); +void add_thread (unsigned long thread_id, void *target_data, unsigned int); +unsigned int thread_id_to_gdb_id (unsigned long); +unsigned int thread_to_gdb_id (struct thread_info *); +unsigned long gdb_id_to_thread_id (unsigned int); +struct thread_info *gdb_id_to_thread (unsigned int); +void clear_inferiors (void); +struct inferior_list_entry *find_inferior (struct inferior_list *, + int (*func) (struct + inferior_list_entry *, + void *), + void *arg); +struct inferior_list_entry *find_inferior_id (struct inferior_list *list, + unsigned long id); +void *inferior_target_data (struct thread_info *); +void set_inferior_target_data (struct thread_info *, void *); +void *inferior_regcache_data (struct thread_info *); +void set_inferior_regcache_data (struct thread_info *, void *); +void change_inferior_id (struct inferior_list *list, + unsigned long new_id); + +/* Public variables in server.c */ + +extern unsigned long cont_thread; +extern unsigned long general_thread; +extern unsigned long step_thread; +extern unsigned long thread_from_wait; +extern unsigned long old_thread_from_wait; + +extern VG_MINIMAL_JMP_BUF(toplevel); + +/* From remote-utils.c */ + +extern Bool noack_mode; +int putpkt (char *buf); +int putpkt_binary (char *buf, int len); +int getpkt (char *buf); +void remote_open (char *name); +void remote_close (void); + +void sync_gdb_connection (void); +void write_ok (char *buf); +void write_enn (char *buf); +void convert_ascii_to_int (char *from, unsigned char *to, int n); +void convert_int_to_ascii (unsigned char *from, char *to, int n); +void prepare_resume_reply (char *buf, char status, unsigned char sig); + +void decode_address (CORE_ADDR *addrp, const char *start, int len); +void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr, + unsigned int *len_ptr); +void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr, + unsigned int *len_ptr, unsigned char *to); +int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr, + unsigned int *len_ptr, unsigned char *to); + +int unhexify (char *bin, const char *hex, int count); +int hexify (char *hex, const char *bin, int count); +int remote_escape_output (const gdb_byte *buffer, int len, + gdb_byte *out_buf, int *out_len, + int out_maxlen); + +/* Functions from ``signals.c''. */ +enum target_signal target_signal_from_host (int hostsig); +int target_signal_to_host_p (enum target_signal oursig); +int target_signal_to_host (enum target_signal oursig); +char *target_signal_to_name (enum target_signal); + +/* Functions from utils.c */ + +/* error is like VG_(umsg), then VG_MINIMAL_LONGJMP to gdbserver toplevel. */ +void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2); +/* first output a description of the error inside sr, then like VG_(umsg). */ +void sr_perror (SysRes sr,char *string,...) ATTR_FORMAT (printf, 2, 3); +/* fatal is like VG_(umsg), then exit(1). */ +void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2); +/* warning is like VG_(umsg). */ +void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2); + +/* Functions from the register cache definition. */ + +void init_registers (void); + +/* Maximum number of bytes to read/write at once. The value here + is chosen to fill up a packet (the headers account for the 32). */ +#define MAXBUFBYTES(N) (((N)-32)/2) + +/* PBUFSIZ : Buffers size for transferring memory, registers, etc. + Must be big enough to hold all the registers, at least. + Must be at least big as 2*DATASIZ + 5: + 1 : packet begin ($ or %) + + 2*DATASIZ : encoded string + + 1 : packet end (#) + + 2 : packet checksum + + 1 : \0 + + Max value gdb likes is 16384. + + Note that what is sent/received to/from gdb does + not have a trailing null byte. We are adding 1 here to allow + null terminating the strings e.g. for printf. + + => packet Packet OVERHead SIZe is 5:*/ + +/* keep PBUFSIZ value in sync with vgdb.c */ +#define PBUFSIZ 16384 +#define POVERHSIZ 5 + +/* Max size of a string encoded in a packet. Hex Encoding can + multiply the size by 2 (trailing null byte not sent). */ +#define DATASIZ ((PBUFSIZ-POVERHSIZ)/2) + +/* Version information, from version.c. */ +extern const char version[]; + +#endif /* SERVER_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/signals.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/signals.c new file mode 100644 index 000000000..07b0c248a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/signals.c @@ -0,0 +1,744 @@ +/* Target signal translation functions for GDB. + Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2011 Free Software Foundation, Inc. + Contributed by Cygnus Support. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" + +#if defined(VGO_darwin) +// ???? darwin signal.h defines SIGPOLL conditionnally ???? +#ifndef SIGPOLL +#define SIGPOLL 7 +#endif +#endif + +enum target_signal target_signal_from_name (char *name); +enum target_signal target_signal_from_command (int num); + +/* This table must match in order and size the signals in enum target_signal + in gdb/signals.h. */ +/* *INDENT-OFF* */ +static struct { + char *name; + char *string; +} signals [] = + { + {"0", "Signal 0"}, + {"SIGHUP", "Hangup"}, + {"SIGINT", "Interrupt"}, + {"SIGQUIT", "Quit"}, + {"SIGILL", "Illegal instruction"}, + {"SIGTRAP", "Trace/breakpoint trap"}, + {"SIGABRT", "Aborted"}, + {"SIGEMT", "Emulation trap"}, + {"SIGFPE", "Arithmetic exception"}, + {"SIGKILL", "Killed"}, + {"SIGBUS", "Bus error"}, + {"SIGSEGV", "Segmentation fault"}, + {"SIGSYS", "Bad system call"}, + {"SIGPIPE", "Broken pipe"}, + {"SIGALRM", "Alarm clock"}, + {"SIGTERM", "Terminated"}, + {"SIGURG", "Urgent I/O condition"}, + {"SIGSTOP", "Stopped (signal)"}, + {"SIGTSTP", "Stopped (user)"}, + {"SIGCONT", "Continued"}, + {"SIGCHLD", "Child status changed"}, + {"SIGTTIN", "Stopped (tty input)"}, + {"SIGTTOU", "Stopped (tty output)"}, + {"SIGIO", "I/O possible"}, + {"SIGXCPU", "CPU time limit exceeded"}, + {"SIGXFSZ", "File size limit exceeded"}, + {"SIGVTALRM", "Virtual timer expired"}, + {"SIGPROF", "Profiling timer expired"}, + {"SIGWINCH", "Window size changed"}, + {"SIGLOST", "Resource lost"}, + {"SIGUSR1", "User defined signal 1"}, + {"SIGUSR2", "User defined signal 2"}, + {"SIGPWR", "Power fail/restart"}, + {"SIGPOLL", "Pollable event occurred"}, + {"SIGWIND", "SIGWIND"}, + {"SIGPHONE", "SIGPHONE"}, + {"SIGWAITING", "Process's LWPs are blocked"}, + {"SIGLWP", "Signal LWP"}, + {"SIGDANGER", "Swap space dangerously low"}, + {"SIGGRANT", "Monitor mode granted"}, + {"SIGRETRACT", "Need to relinquish monitor mode"}, + {"SIGMSG", "Monitor mode data available"}, + {"SIGSOUND", "Sound completed"}, + {"SIGSAK", "Secure attention"}, + {"SIGPRIO", "SIGPRIO"}, + {"SIG33", "Real-time event 33"}, + {"SIG34", "Real-time event 34"}, + {"SIG35", "Real-time event 35"}, + {"SIG36", "Real-time event 36"}, + {"SIG37", "Real-time event 37"}, + {"SIG38", "Real-time event 38"}, + {"SIG39", "Real-time event 39"}, + {"SIG40", "Real-time event 40"}, + {"SIG41", "Real-time event 41"}, + {"SIG42", "Real-time event 42"}, + {"SIG43", "Real-time event 43"}, + {"SIG44", "Real-time event 44"}, + {"SIG45", "Real-time event 45"}, + {"SIG46", "Real-time event 46"}, + {"SIG47", "Real-time event 47"}, + {"SIG48", "Real-time event 48"}, + {"SIG49", "Real-time event 49"}, + {"SIG50", "Real-time event 50"}, + {"SIG51", "Real-time event 51"}, + {"SIG52", "Real-time event 52"}, + {"SIG53", "Real-time event 53"}, + {"SIG54", "Real-time event 54"}, + {"SIG55", "Real-time event 55"}, + {"SIG56", "Real-time event 56"}, + {"SIG57", "Real-time event 57"}, + {"SIG58", "Real-time event 58"}, + {"SIG59", "Real-time event 59"}, + {"SIG60", "Real-time event 60"}, + {"SIG61", "Real-time event 61"}, + {"SIG62", "Real-time event 62"}, + {"SIG63", "Real-time event 63"}, + {"SIGCANCEL", "LWP internal signal"}, + {"SIG32", "Real-time event 32"}, + {"SIG64", "Real-time event 64"}, + {"SIG65", "Real-time event 65"}, + {"SIG66", "Real-time event 66"}, + {"SIG67", "Real-time event 67"}, + {"SIG68", "Real-time event 68"}, + {"SIG69", "Real-time event 69"}, + {"SIG70", "Real-time event 70"}, + {"SIG71", "Real-time event 71"}, + {"SIG72", "Real-time event 72"}, + {"SIG73", "Real-time event 73"}, + {"SIG74", "Real-time event 74"}, + {"SIG75", "Real-time event 75"}, + {"SIG76", "Real-time event 76"}, + {"SIG77", "Real-time event 77"}, + {"SIG78", "Real-time event 78"}, + {"SIG79", "Real-time event 79"}, + {"SIG80", "Real-time event 80"}, + {"SIG81", "Real-time event 81"}, + {"SIG82", "Real-time event 82"}, + {"SIG83", "Real-time event 83"}, + {"SIG84", "Real-time event 84"}, + {"SIG85", "Real-time event 85"}, + {"SIG86", "Real-time event 86"}, + {"SIG87", "Real-time event 87"}, + {"SIG88", "Real-time event 88"}, + {"SIG89", "Real-time event 89"}, + {"SIG90", "Real-time event 90"}, + {"SIG91", "Real-time event 91"}, + {"SIG92", "Real-time event 92"}, + {"SIG93", "Real-time event 93"}, + {"SIG94", "Real-time event 94"}, + {"SIG95", "Real-time event 95"}, + {"SIG96", "Real-time event 96"}, + {"SIG97", "Real-time event 97"}, + {"SIG98", "Real-time event 98"}, + {"SIG99", "Real-time event 99"}, + {"SIG100", "Real-time event 100"}, + {"SIG101", "Real-time event 101"}, + {"SIG102", "Real-time event 102"}, + {"SIG103", "Real-time event 103"}, + {"SIG104", "Real-time event 104"}, + {"SIG105", "Real-time event 105"}, + {"SIG106", "Real-time event 106"}, + {"SIG107", "Real-time event 107"}, + {"SIG108", "Real-time event 108"}, + {"SIG109", "Real-time event 109"}, + {"SIG110", "Real-time event 110"}, + {"SIG111", "Real-time event 111"}, + {"SIG112", "Real-time event 112"}, + {"SIG113", "Real-time event 113"}, + {"SIG114", "Real-time event 114"}, + {"SIG115", "Real-time event 115"}, + {"SIG116", "Real-time event 116"}, + {"SIG117", "Real-time event 117"}, + {"SIG118", "Real-time event 118"}, + {"SIG119", "Real-time event 119"}, + {"SIG120", "Real-time event 120"}, + {"SIG121", "Real-time event 121"}, + {"SIG122", "Real-time event 122"}, + {"SIG123", "Real-time event 123"}, + {"SIG124", "Real-time event 124"}, + {"SIG125", "Real-time event 125"}, + {"SIG126", "Real-time event 126"}, + {"SIG127", "Real-time event 127"}, + + {"SIGINFO", "Information request"}, + + {NULL, "Unknown signal"}, + {NULL, "Internal error: printing TARGET_SIGNAL_DEFAULT"}, + + /* Mach exceptions */ + {"EXC_BAD_ACCESS", "Could not access memory"}, + {"EXC_BAD_INSTRUCTION", "Illegal instruction/operand"}, + {"EXC_ARITHMETIC", "Arithmetic exception"}, + {"EXC_EMULATION", "Emulation instruction"}, + {"EXC_SOFTWARE", "Software generated exception"}, + {"EXC_BREAKPOINT", "Breakpoint"}, + + /* Last entry, used to check whether the table is the right size. */ + {NULL, "TARGET_SIGNAL_MAGIC"} + }; +/* *INDENT-ON* */ + + + +/* Return the name for a signal. */ +char *target_signal_to_name (enum target_signal sig) +{ + if ((sig >= TARGET_SIGNAL_FIRST) && (sig <= TARGET_SIGNAL_LAST) + && signals[sig].name != NULL) + return signals[sig].name; + else + /* I think the code which prints this will always print it along + with the string, so no need to be verbose (very old comment). */ + return "?"; +} + +/* Given a name, return its signal. */ +enum target_signal target_signal_from_name (char *name) +{ + enum target_signal sig; + + /* It's possible we also should allow "SIGCLD" as well as "SIGCHLD" + for TARGET_SIGNAL_SIGCHLD. SIGIOT, on the other hand, is more + questionable; seems like by now people should call it SIGABRT + instead. */ + + /* This ugly cast brought to you by the native VAX compiler. */ + for (sig = TARGET_SIGNAL_HUP; + sig < TARGET_SIGNAL_LAST; + sig = (enum target_signal) ((int) sig + 1)) + if (signals[sig].name != NULL + && strcmp (name, signals[sig].name) == 0) + return sig; + return TARGET_SIGNAL_UNKNOWN; +} + + +/* The following functions are to help certain targets deal + with the signal/waitstatus stuff. They could just as well be in + a file called native-utils.c or unixwaitstatus-utils.c or whatever. */ + +/* Convert host signal to our signals. */ +enum target_signal target_signal_from_host (int hostsig) +{ + /* A switch statement would make sense but would require special kludges + to deal with the cases where more than one signal has the same number. */ + + if (hostsig == 0) + return TARGET_SIGNAL_0; + +#if defined (VKI_SIGHUP) + if (hostsig == VKI_SIGHUP) + return TARGET_SIGNAL_HUP; +#endif +#if defined (VKI_SIGINT) + if (hostsig == VKI_SIGINT) + return TARGET_SIGNAL_INT; +#endif +#if defined (VKI_SIGQUIT) + if (hostsig == VKI_SIGQUIT) + return TARGET_SIGNAL_QUIT; +#endif +#if defined (VKI_SIGILL) + if (hostsig == VKI_SIGILL) + return TARGET_SIGNAL_ILL; +#endif +#if defined (VKI_SIGTRAP) + if (hostsig == VKI_SIGTRAP) + return TARGET_SIGNAL_TRAP; +#endif +#if defined (VKI_SIGABRT) + if (hostsig == VKI_SIGABRT) + return TARGET_SIGNAL_ABRT; +#endif +#if defined (VKI_SIGEMT) + if (hostsig == VKI_SIGEMT) + return TARGET_SIGNAL_EMT; +#endif +#if defined (VKI_SIGFPE) + if (hostsig == VKI_SIGFPE) + return TARGET_SIGNAL_FPE; +#endif +#if defined (VKI_SIGKILL) + if (hostsig == VKI_SIGKILL) + return TARGET_SIGNAL_KILL; +#endif +#if defined (VKI_SIGBUS) + if (hostsig == VKI_SIGBUS) + return TARGET_SIGNAL_BUS; +#endif +#if defined (VKI_SIGSEGV) + if (hostsig == VKI_SIGSEGV) + return TARGET_SIGNAL_SEGV; +#endif +#if defined (VKI_SIGSYS) + if (hostsig == VKI_SIGSYS) + return TARGET_SIGNAL_SYS; +#endif +#if defined (VKI_SIGPIPE) + if (hostsig == VKI_SIGPIPE) + return TARGET_SIGNAL_PIPE; +#endif +#if defined (VKI_SIGALRM) + if (hostsig == VKI_SIGALRM) + return TARGET_SIGNAL_ALRM; +#endif +#if defined (VKI_SIGTERM) + if (hostsig == VKI_SIGTERM) + return TARGET_SIGNAL_TERM; +#endif +#if defined (VKI_SIGUSR1) + if (hostsig == VKI_SIGUSR1) + return TARGET_SIGNAL_USR1; +#endif +#if defined (VKI_SIGUSR2) + if (hostsig == VKI_SIGUSR2) + return TARGET_SIGNAL_USR2; +#endif +#if defined (VKI_SIGCLD) + if (hostsig == VKI_SIGCLD) + return TARGET_SIGNAL_CHLD; +#endif +#if defined (VKI_SIGCHLD) + if (hostsig == VKI_SIGCHLD) + return TARGET_SIGNAL_CHLD; +#endif +#if defined (VKI_SIGPWR) + if (hostsig == VKI_SIGPWR) + return TARGET_SIGNAL_PWR; +#endif +#if defined (VKI_SIGWINCH) + if (hostsig == VKI_SIGWINCH) + return TARGET_SIGNAL_WINCH; +#endif +#if defined (VKI_SIGURG) + if (hostsig == VKI_SIGURG) + return TARGET_SIGNAL_URG; +#endif +#if defined (VKI_SIGIO) + if (hostsig == VKI_SIGIO) + return TARGET_SIGNAL_IO; +#endif +#if defined (VKI_SIGPOLL) + if (hostsig == VKI_SIGPOLL) + return TARGET_SIGNAL_POLL; +#endif +#if defined (VKI_SIGSTOP) + if (hostsig == VKI_SIGSTOP) + return TARGET_SIGNAL_STOP; +#endif +#if defined (VKI_SIGTSTP) + if (hostsig == VKI_SIGTSTP) + return TARGET_SIGNAL_TSTP; +#endif +#if defined (VKI_SIGCONT) + if (hostsig == VKI_SIGCONT) + return TARGET_SIGNAL_CONT; +#endif +#if defined (VKI_SIGTTIN) + if (hostsig == VKI_SIGTTIN) + return TARGET_SIGNAL_TTIN; +#endif +#if defined (VKI_SIGTTOU) + if (hostsig == VKI_SIGTTOU) + return TARGET_SIGNAL_TTOU; +#endif +#if defined (VKI_SIGVTALRM) + if (hostsig == VKI_SIGVTALRM) + return TARGET_SIGNAL_VTALRM; +#endif +#if defined (VKI_SIGPROF) + if (hostsig == VKI_SIGPROF) + return TARGET_SIGNAL_PROF; +#endif +#if defined (VKI_SIGXCPU) + if (hostsig == VKI_SIGXCPU) + return TARGET_SIGNAL_XCPU; +#endif +#if defined (VKI_SIGXFSZ) + if (hostsig == VKI_SIGXFSZ) + return TARGET_SIGNAL_XFSZ; +#endif +#if defined (VKI_SIGWIND) + if (hostsig == VKI_SIGWIND) + return TARGET_SIGNAL_WIND; +#endif +#if defined (VKI_SIGPHONE) + if (hostsig == VKI_SIGPHONE) + return TARGET_SIGNAL_PHONE; +#endif +#if defined (VKI_SIGLOST) + if (hostsig == VKI_SIGLOST) + return TARGET_SIGNAL_LOST; +#endif +#if defined (VKI_SIGWAITING) + if (hostsig == VKI_SIGWAITING) + return TARGET_SIGNAL_WAITING; +#endif +#if defined (VKI_SIGCANCEL) + if (hostsig == VKI_SIGCANCEL) + return TARGET_SIGNAL_CANCEL; +#endif +#if defined (VKI_SIGLWP) + if (hostsig == VKI_SIGLWP) + return TARGET_SIGNAL_LWP; +#endif +#if defined (VKI_SIGDANGER) + if (hostsig == VKI_SIGDANGER) + return TARGET_SIGNAL_DANGER; +#endif +#if defined (VKI_SIGGRANT) + if (hostsig == VKI_SIGGRANT) + return TARGET_SIGNAL_GRANT; +#endif +#if defined (VKI_SIGRETRACT) + if (hostsig == VKI_SIGRETRACT) + return TARGET_SIGNAL_RETRACT; +#endif +#if defined (VKI_SIGMSG) + if (hostsig == VKI_SIGMSG) + return TARGET_SIGNAL_MSG; +#endif +#if defined (VKI_SIGSOUND) + if (hostsig == VKI_SIGSOUND) + return TARGET_SIGNAL_SOUND; +#endif +#if defined (VKI_SIGSAK) + if (hostsig == VKI_SIGSAK) + return TARGET_SIGNAL_SAK; +#endif +#if defined (VKI_SIGPRIO) + if (hostsig == VKI_SIGPRIO) + return TARGET_SIGNAL_PRIO; +#endif + + /* Mach exceptions. Assumes that the values for EXC_ are positive! */ +#if defined (EXC_BAD_ACCESS) && defined (_NSIG) + if (hostsig == _NSIG + EXC_BAD_ACCESS) + return TARGET_EXC_BAD_ACCESS; +#endif +#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG) + if (hostsig == _NSIG + EXC_BAD_INSTRUCTION) + return TARGET_EXC_BAD_INSTRUCTION; +#endif +#if defined (EXC_ARITHMETIC) && defined (_NSIG) + if (hostsig == _NSIG + EXC_ARITHMETIC) + return TARGET_EXC_ARITHMETIC; +#endif +#if defined (EXC_EMULATION) && defined (_NSIG) + if (hostsig == _NSIG + EXC_EMULATION) + return TARGET_EXC_EMULATION; +#endif +#if defined (EXC_SOFTWARE) && defined (_NSIG) + if (hostsig == _NSIG + EXC_SOFTWARE) + return TARGET_EXC_SOFTWARE; +#endif +#if defined (EXC_BREAKPOINT) && defined (_NSIG) + if (hostsig == _NSIG + EXC_BREAKPOINT) + return TARGET_EXC_BREAKPOINT; +#endif + +#if defined (VKI_SIGINFO) + if (hostsig == VKI_SIGINFO) + return TARGET_SIGNAL_INFO; +#endif + + return TARGET_SIGNAL_UNKNOWN; +} + +/* Convert a OURSIG (an enum target_signal) to the form used by the + target operating system (refered to as the ``host'') or zero if the + equivalent host signal is not available. Set/clear OURSIG_OK + accordingly. */ + +static +int do_target_signal_to_host (enum target_signal oursig, + int *oursig_ok) +{ + *oursig_ok = 1; + switch (oursig) { + case TARGET_SIGNAL_0: + return 0; + +#if defined (VKI_SIGHUP) + case TARGET_SIGNAL_HUP: + return VKI_SIGHUP; +#endif +#if defined (VKI_SIGINT) + case TARGET_SIGNAL_INT: + return VKI_SIGINT; +#endif +#if defined (VKI_SIGQUIT) + case TARGET_SIGNAL_QUIT: + return VKI_SIGQUIT; +#endif +#if defined (VKI_SIGILL) + case TARGET_SIGNAL_ILL: + return VKI_SIGILL; +#endif +#if defined (VKI_SIGTRAP) + case TARGET_SIGNAL_TRAP: + return VKI_SIGTRAP; +#endif +#if defined (VKI_SIGABRT) + case TARGET_SIGNAL_ABRT: + return VKI_SIGABRT; +#endif +#if defined (VKI_SIGEMT) + case TARGET_SIGNAL_EMT: + return VKI_SIGEMT; +#endif +#if defined (VKI_SIGFPE) + case TARGET_SIGNAL_FPE: + return VKI_SIGFPE; +#endif +#if defined (VKI_SIGKILL) + case TARGET_SIGNAL_KILL: + return VKI_SIGKILL; +#endif +#if defined (VKI_SIGBUS) + case TARGET_SIGNAL_BUS: + return VKI_SIGBUS; +#endif +#if defined (VKI_SIGSEGV) + case TARGET_SIGNAL_SEGV: + return VKI_SIGSEGV; +#endif +#if defined (VKI_SIGSYS) + case TARGET_SIGNAL_SYS: + return VKI_SIGSYS; +#endif +#if defined (VKI_SIGPIPE) + case TARGET_SIGNAL_PIPE: + return VKI_SIGPIPE; +#endif +#if defined (VKI_SIGALRM) + case TARGET_SIGNAL_ALRM: + return VKI_SIGALRM; +#endif +#if defined (VKI_SIGTERM) + case TARGET_SIGNAL_TERM: + return VKI_SIGTERM; +#endif +#if defined (VKI_SIGUSR1) + case TARGET_SIGNAL_USR1: + return VKI_SIGUSR1; +#endif +#if defined (VKI_SIGUSR2) + case TARGET_SIGNAL_USR2: + return VKI_SIGUSR2; +#endif +#if defined (VKI_SIGCHLD) || defined (VKI_SIGCLD) + case TARGET_SIGNAL_CHLD: +#if defined (VKI_SIGCHLD) + return VKI_SIGCHLD; +#else + return VKI_SIGCLD; +#endif +#endif /* SIGCLD or SIGCHLD */ +#if defined (VKI_SIGPWR) + case TARGET_SIGNAL_PWR: + return VKI_SIGPWR; +#endif +#if defined (VKI_SIGWINCH) + case TARGET_SIGNAL_WINCH: + return VKI_SIGWINCH; +#endif +#if defined (VKI_SIGURG) + case TARGET_SIGNAL_URG: + return VKI_SIGURG; +#endif +#if defined (VKI_SIGIO) + case TARGET_SIGNAL_IO: + return VKI_SIGIO; +#endif +#if defined (VKI_SIGPOLL) + case TARGET_SIGNAL_POLL: + return VKI_SIGPOLL; +#endif +#if defined (VKI_SIGSTOP) + case TARGET_SIGNAL_STOP: + return VKI_SIGSTOP; +#endif +#if defined (VKI_SIGTSTP) + case TARGET_SIGNAL_TSTP: + return VKI_SIGTSTP; +#endif +#if defined (VKI_SIGCONT) + case TARGET_SIGNAL_CONT: + return VKI_SIGCONT; +#endif +#if defined (VKI_SIGTTIN) + case TARGET_SIGNAL_TTIN: + return VKI_SIGTTIN; +#endif +#if defined (VKI_SIGTTOU) + case TARGET_SIGNAL_TTOU: + return VKI_SIGTTOU; +#endif +#if defined (VKI_SIGVTALRM) + case TARGET_SIGNAL_VTALRM: + return VKI_SIGVTALRM; +#endif +#if defined (VKI_SIGPROF) + case TARGET_SIGNAL_PROF: + return VKI_SIGPROF; +#endif +#if defined (VKI_SIGXCPU) + case TARGET_SIGNAL_XCPU: + return VKI_SIGXCPU; +#endif +#if defined (VKI_SIGXFSZ) + case TARGET_SIGNAL_XFSZ: + return VKI_SIGXFSZ; +#endif +#if defined (VKI_SIGWIND) + case TARGET_SIGNAL_WIND: + return VKI_SIGWIND; +#endif +#if defined (VKI_SIGPHONE) + case TARGET_SIGNAL_PHONE: + return VKI_SIGPHONE; +#endif +#if defined (VKI_SIGLOST) + case TARGET_SIGNAL_LOST: + return VKI_SIGLOST; +#endif +#if defined (VKI_SIGWAITING) + case TARGET_SIGNAL_WAITING: + return VKI_SIGWAITING; +#endif +#if defined (VKI_SIGCANCEL) + case TARGET_SIGNAL_CANCEL: + return VKI_SIGCANCEL; +#endif +#if defined (VKI_SIGLWP) + case TARGET_SIGNAL_LWP: + return VKI_SIGLWP; +#endif +#if defined (VKI_SIGDANGER) + case TARGET_SIGNAL_DANGER: + return VKI_SIGDANGER; +#endif +#if defined (VKI_SIGGRANT) + case TARGET_SIGNAL_GRANT: + return VKI_SIGGRANT; +#endif +#if defined (VKI_SIGRETRACT) + case TARGET_SIGNAL_RETRACT: + return VKI_SIGRETRACT; +#endif +#if defined (VKI_SIGMSG) + case TARGET_SIGNAL_MSG: + return VKI_SIGMSG; +#endif +#if defined (VKI_SIGSOUND) + case TARGET_SIGNAL_SOUND: + return VKI_SIGSOUND; +#endif +#if defined (VKI_SIGSAK) + case TARGET_SIGNAL_SAK: + return VKI_SIGSAK; +#endif +#if defined (VKI_SIGPRIO) + case TARGET_SIGNAL_PRIO: + return VKI_SIGPRIO; +#endif + + /* Mach exceptions. Assumes that the values for EXC_ are positive! */ +#if defined (EXC_BAD_ACCESS) && defined (_NSIG) + case TARGET_EXC_BAD_ACCESS: + return _NSIG + EXC_BAD_ACCESS; +#endif +#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG) + case TARGET_EXC_BAD_INSTRUCTION: + return _NSIG + EXC_BAD_INSTRUCTION; +#endif +#if defined (EXC_ARITHMETIC) && defined (_NSIG) + case TARGET_EXC_ARITHMETIC: + return _NSIG + EXC_ARITHMETIC; +#endif +#if defined (EXC_EMULATION) && defined (_NSIG) + case TARGET_EXC_EMULATION: + return _NSIG + EXC_EMULATION; +#endif +#if defined (EXC_SOFTWARE) && defined (_NSIG) + case TARGET_EXC_SOFTWARE: + return _NSIG + EXC_SOFTWARE; +#endif +#if defined (EXC_BREAKPOINT) && defined (_NSIG) + case TARGET_EXC_BREAKPOINT: + return _NSIG + EXC_BREAKPOINT; +#endif + +#if defined (VKI_SIGINFO) + case TARGET_SIGNAL_INFO: + return VKI_SIGINFO; +#endif + + default: + *oursig_ok = 0; + return 0; + } +} + +int target_signal_to_host_p (enum target_signal oursig) +{ + int oursig_ok; + do_target_signal_to_host (oursig, &oursig_ok); + return oursig_ok; +} + +int target_signal_to_host (enum target_signal oursig) +{ + int oursig_ok; + int targ_signo = do_target_signal_to_host (oursig, &oursig_ok); + if (!oursig_ok) { + /* The user might be trying to do "signal SIGSAK" where this system + doesn't have SIGSAK. */ + warning ("Signal %s does not exist on this system.\n", + target_signal_to_name (oursig)); + return 0; + } else { + return targ_signo; + } +} + +/* In some circumstances we allow a command to specify a numeric + signal. The idea is to keep these circumstances limited so that + users (and scripts) develop portable habits. For comparison, + POSIX.2 `kill' requires that 1,2,3,6,9,14, and 15 work (and using a + numeric signal at all is obsolescent. We are slightly more + lenient and allow 1-15 which should match host signal numbers on + most systems. Use of symbolic signal names is strongly encouraged. */ + +enum target_signal target_signal_from_command (int num) +{ + if (num >= 1 && num <= 15) + return (enum target_signal) num; + error ("Only signals 1-15 are valid as numeric signals.\n\ +Use \"info signals\" for a list of symbolic signals.\n"); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.c new file mode 100644 index 000000000..ae61c94c6 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.c @@ -0,0 +1,121 @@ +/* Target operations for the remote server for GDB. + Copyright (C) 2002, 2004, 2005, 2011 + Free Software Foundation, Inc. + + Contributed by MontaVista Software. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" + +struct target_ops *the_target; + +void set_desired_inferior (int use_general) +{ + struct thread_info *found; + + if (use_general == 1) { + found = (struct thread_info *) find_inferior_id (&all_threads, + general_thread); + } else { + found = NULL; + + /* If we are continuing any (all) thread(s), use step_thread + to decide which thread to step and/or send the specified + signal to. */ + if ((step_thread != 0 && step_thread != -1) + && (cont_thread == 0 || cont_thread == -1)) + found = (struct thread_info *) find_inferior_id (&all_threads, + step_thread); + + if (found == NULL) + found = (struct thread_info *) find_inferior_id (&all_threads, + cont_thread); + } + + if (found == NULL) + current_inferior = (struct thread_info *) all_threads.head; + else + current_inferior = found; + { + ThreadState *tst = (ThreadState *) inferior_target_data (current_inferior); + ThreadId tid = tst->tid; + dlog(1, "set_desired_inferior use_general %d found %p tid %d lwpid %d\n", + use_general, found, tid, tst->os_state.lwpid); + } +} + +int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) +{ + int res; + res = (*the_target->read_memory) (memaddr, myaddr, len); + return res; +} + +int write_inferior_memory (CORE_ADDR memaddr, const unsigned char *myaddr, + int len) +{ + /* Lacking cleanups, there is some potential for a memory leak if the + write fails and we go through error(). Make sure that no more than + one buffer is ever pending by making BUFFER static. */ + static unsigned char *buffer = 0; + int res; + + if (buffer != NULL) + free (buffer); + + buffer = malloc (len); + VG_(memcpy) (buffer, myaddr, len); + res = (*the_target->write_memory) (memaddr, buffer, len); + free (buffer); + buffer = NULL; + + return res; +} + +void set_target_ops (struct target_ops *target) +{ + the_target = (struct target_ops *) malloc (sizeof (*the_target)); + VG_(memcpy) (the_target, target, sizeof (*the_target)); +} + +void* VG_(dmemcpy) ( void *d, const void *s, SizeT sz, Bool *mod ) +{ + if (VG_(memcmp) (d, s, sz)) { + *mod = True; + return VG_(memcpy) (d, s, sz); + } else { + *mod = False; + return d; + } +} + +void VG_(transfer) (void *valgrind, + void *gdbserver, + transfer_direction dir, + SizeT sz, + Bool *mod) +{ + if (dir == valgrind_to_gdbserver) + VG_(dmemcpy) (gdbserver, valgrind, sz, mod); + else if (dir == gdbserver_to_valgrind) + VG_(dmemcpy) (valgrind, gdbserver, sz, mod); + else + vg_assert (0); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.h new file mode 100644 index 000000000..d657438ad --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/target.h @@ -0,0 +1,176 @@ +/* Target operations for the remote server for GDB. + Copyright (C) 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + Contributed by MontaVista Software. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef TARGET_H +#define TARGET_H + +/* This structure describes how to resume a particular thread (or + all threads) based on the client's request. If thread is -1, then + this entry applies to all threads. These are generally passed around + as an array, and terminated by a thread == -1 entry. */ + +struct thread_resume +{ + unsigned long thread; + + /* If non-zero, leave this thread stopped. */ + int leave_stopped; + + /* If non-zero, we want to single-step. */ + int step; + + /* If non-zero, send this signal when we resume. */ + int sig; +}; + +struct target_ops +{ + /* Return 1 iff the thread with process ID PID is alive. */ + + int (*thread_alive) (unsigned long pid); + + /* Resume the inferior process. */ + + void (*resume) (struct thread_resume *resume_info); + + /* Wait for the inferior process to change state. + + STATUS will be filled in with a response code to send to GDB. + + Returns the signal which caused the process to stop, in the + remote protocol numbering (e.g. TARGET_SIGNAL_STOP), or the + exit code as an integer if *STATUS is 'W'. */ + + unsigned char (*wait) (char *status); + + /* Fetch registers from the inferior process. + + If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */ + + void (*fetch_registers) (int regno); + + /* Store registers to the inferior process. + + If REGNO is -1, store all registers; otherwise, store at least REGNO. */ + + void (*store_registers) (int regno); + + /* Read memory from the inferior process. This should generally be + called through read_inferior_memory, which handles breakpoint shadowing. + + Read LEN bytes at MEMADDR into a buffer at MYADDR. + + Returns 0 on success and errno on failure. */ + + int (*read_memory) (CORE_ADDR memaddr, unsigned char *myaddr, int len); + + /* Write memory to the inferior process. This should generally be + called through write_inferior_memory, which handles breakpoint shadowing. + + Write LEN bytes from the buffer at MYADDR to MEMADDR. + + Returns 0 on success and errno on failure. */ + + int (*write_memory) (CORE_ADDR memaddr, const unsigned char *myaddr, + int len); + + /* Send a signal to the inferior process, however is appropriate. */ + void (*send_signal) (int); + + /* Returns the name of the xml target description file. + returns NULL if no xml target description available. */ + char* (*target_xml)(void); + + /* Same but describes also the shadow registers. */ + char* (*shadow_target_xml)(void); + + /* Insert and remove a hardware watchpoint. + Returns 0 on success, -1 on failure and 1 on unsupported. + The type is coded as follows: + 2 = write watchpoint + 3 = read watchpoint + 4 = access watchpoint + */ + + int (*insert_watchpoint) (char type, CORE_ADDR addr, int len); + int (*remove_watchpoint) (char type, CORE_ADDR addr, int len); + + /* Returns 1 if target was stopped due to a watchpoint hit, 0 otherwise. */ + + int (*stopped_by_watchpoint) (void); + + /* Returns the address associated with the watchpoint that hit, if any; + returns 0 otherwise. */ + + CORE_ADDR (*stopped_data_address) (void); + +}; + +extern struct target_ops *the_target; + +void set_target_ops (struct target_ops *); + +#define detach_inferior() \ + (*the_target->detach) () + +#define mythread_alive(pid) \ + (*the_target->thread_alive) (pid) + +#define fetch_inferior_registers(regno) \ + (*the_target->fetch_registers) (regno) + +#define store_inferior_registers(regno) \ + (*the_target->store_registers) (regno) + +#define mywait(statusp) \ + (*the_target->wait) (statusp) + +int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len); + +int write_inferior_memory (CORE_ADDR memaddr, const unsigned char *myaddr, + int len); + +void set_desired_inferior (int id); + +/* like memcpy but first check if content of destination and source + differs. If no difference, no copy is done, *mod set to False. + If different; copy is done, *mod set to True. */ +extern void* VG_(dmemcpy) ( void *d, const void *s, SizeT sz, Bool *mod ); + +typedef + enum { + valgrind_to_gdbserver, + gdbserver_to_valgrind} transfer_direction; + +// According to dir, calls VG_(dmemcpy) +// to copy data from/to valgrind to/from gdbserver. +// If the transferred data differs from what is currently stored, +// sets *mod to True otherwise set *mod to False. +extern void VG_(transfer) (void *valgrind, + void *gdbserver, + transfer_direction dir, + SizeT sz, + Bool *mod); + +#endif /* TARGET_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/utils.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/utils.c new file mode 100644 index 000000000..57db1751f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/utils.c @@ -0,0 +1,88 @@ +/* General utility routines for the remote server for GDB. + Copyright (C) 1986, 1989, 1993, 1995, 1996, 1997, 1999, 2000, 2002, 2003, + 2011 + Free Software Foundation, Inc. + + This file is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +/* Generally useful subroutines used throughout the program. */ + +/* Print the system error message for sr. + Then print the rest of the args. */ +void sr_perror (SysRes sr,char *string,...) +{ + va_list args; + if (sr_isError (sr)) + VG_(umsg) ("error %ld %s\n", sr_Err(sr), VG_(strerror) (sr_Err(sr))); + else + VG_(umsg) ("sr_perror called with no error!!!\n"); + va_start (args, string); + VG_(vmessage) ( Vg_UserMsg, string, args ); + va_end (args); +} + +/* Print an error message and return to command level. + STRING is the error message, used as a fprintf string, + and ARG is passed as an argument to it. */ + +void error (const char *string,...) +{ + va_list args; + va_start (args, string); + VG_(vmessage) ( Vg_UserMsg, string, args ); + va_end(args); + VG_MINIMAL_LONGJMP(toplevel); +} + +/* Print an error message and exit reporting failure. + This is for a error that we cannot continue from. + STRING and ARG are passed to fprintf. */ + +/* VARARGS */ +void fatal (const char *string,...) +{ + va_list args; + va_start (args, string); + VG_(vmessage) ( Vg_UserMsg, string, args ); + va_end (args); + VG_(exit) (1); +} + +/* VARARGS */ +void warning (const char *string,...) +{ + va_list args; + va_start (args, string); + VG_(vmessage) ( Vg_UserMsg, string, args ); + va_end (args); +} + +#if 0 +/* print timestamp */ +static +void dbgts(void) +{ + struct vki_timeval dbgtv; + SysRes res; + res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&dbgtv, (UWord)NULL); + // gettimeofday(&dbgtv, NULL); + dlog(0, "%ld.%6ld ", dbgtv.tv_sec, dbgtv.tv_usec); +} +#endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-amd64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-amd64.c new file mode 100644 index 000000000..0dc0382af --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-amd64.c @@ -0,0 +1,306 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_amd64.h" +/* GDBTD: ??? have a cleaner way to get the f80 <> f64 conversion functions */ +/* below include needed for conversion f80 <> f64 */ +#include "../../VEX/priv/guest_generic_x87.h" + +/* below loosely inspired from file generated with gdb regdat.sh */ + +struct reg regs[] = { + { "rax", 0, 64 }, + { "rbx", 64, 64 }, + { "rcx", 128, 64 }, + { "rdx", 192, 64 }, + { "rsi", 256, 64 }, + { "rdi", 320, 64 }, + { "rbp", 384, 64 }, + { "rsp", 448, 64 }, + { "r8", 512, 64 }, + { "r9", 576, 64 }, + { "r10", 640, 64 }, + { "r11", 704, 64 }, + { "r12", 768, 64 }, + { "r13", 832, 64 }, + { "r14", 896, 64 }, + { "r15", 960, 64 }, + { "rip", 1024, 64 }, + { "eflags", 1088, 32 }, + { "cs", 1120, 32 }, + { "ss", 1152, 32 }, + { "ds", 1184, 32 }, + { "es", 1216, 32 }, + { "fs", 1248, 32 }, + { "gs", 1280, 32 }, + { "st0", 1312, 80 }, + { "st1", 1392, 80 }, + { "st2", 1472, 80 }, + { "st3", 1552, 80 }, + { "st4", 1632, 80 }, + { "st5", 1712, 80 }, + { "st6", 1792, 80 }, + { "st7", 1872, 80 }, + { "fctrl", 1952, 32 }, + { "fstat", 1984, 32 }, + { "ftag", 2016, 32 }, + { "fiseg", 2048, 32 }, + { "fioff", 2080, 32 }, + { "foseg", 2112, 32 }, + { "fooff", 2144, 32 }, + { "fop", 2176, 32 }, + { "xmm0", 2208, 128 }, + { "xmm1", 2336, 128 }, + { "xmm2", 2464, 128 }, + { "xmm3", 2592, 128 }, + { "xmm4", 2720, 128 }, + { "xmm5", 2848, 128 }, + { "xmm6", 2976, 128 }, + { "xmm7", 3104, 128 }, + { "xmm8", 3232, 128 }, + { "xmm9", 3360, 128 }, + { "xmm10", 3488, 128 }, + { "xmm11", 3616, 128 }, + { "xmm12", 3744, 128 }, + { "xmm13", 3872, 128 }, + { "xmm14", 4000, 128 }, + { "xmm15", 4128, 128 }, + { "mxcsr", 4256, 32 }, +#if defined(VGO_linux) + { "orig_rax", 4288, 64 } +#endif +}; +static const char *expedite_regs[] = { "rbp", "rsp", "rip", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("rip", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("rip", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestAMD64State* amd64 = (VexGuestAMD64State*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above. + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&amd64->guest_RAX, buf, dir, size, mod); break; + case 1: VG_(transfer) (&amd64->guest_RBX, buf, dir, size, mod); break; + case 2: VG_(transfer) (&amd64->guest_RCX, buf, dir, size, mod); break; + case 3: VG_(transfer) (&amd64->guest_RDX, buf, dir, size, mod); break; + case 4: VG_(transfer) (&amd64->guest_RSI, buf, dir, size, mod); break; + case 5: VG_(transfer) (&amd64->guest_RDI, buf, dir, size, mod); break; + case 6: VG_(transfer) (&amd64->guest_RBP, buf, dir, size, mod); break; + case 7: VG_(transfer) (&amd64->guest_RSP, buf, dir, size, mod); break; + case 8: VG_(transfer) (&amd64->guest_R8, buf, dir, size, mod); break; + case 9: VG_(transfer) (&amd64->guest_R9, buf, dir, size, mod); break; + case 10: VG_(transfer) (&amd64->guest_R10, buf, dir, size, mod); break; + case 11: VG_(transfer) (&amd64->guest_R11, buf, dir, size, mod); break; + case 12: VG_(transfer) (&amd64->guest_R12, buf, dir, size, mod); break; + case 13: VG_(transfer) (&amd64->guest_R13, buf, dir, size, mod); break; + case 14: VG_(transfer) (&amd64->guest_R14, buf, dir, size, mod); break; + case 15: VG_(transfer) (&amd64->guest_R15, buf, dir, size, mod); break; + case 16: + VG_(transfer) (&amd64->guest_RIP, buf, dir, size, mod); + if (*mod && VG_(debugLog_getLevel)() > 2) { + char bufimage [2*sizeof(amd64->guest_IP_AT_SYSCALL) + 1]; + heximage (bufimage, + (char *) &amd64->guest_IP_AT_SYSCALL, + sizeof(amd64->guest_IP_AT_SYSCALL)); + dlog(3, "guest_IP_AT_SYSCALL %s\n", bufimage); + } + break; + case 17: + if (dir == valgrind_to_gdbserver) { + ULong rflags; + /* we can only retrieve the real flags (set 0) + retrieving shadow flags is not ok */ + if (set == 0) + rflags = LibVEX_GuestAMD64_get_rflags (amd64); + else + rflags = 0; + VG_(transfer) (&rflags, buf, dir, size, mod); + } else { + *mod = False; //GDBTD? how do we store rflags in libvex_guest_amd64.h ??? + } + break; + case 18: *mod = False; break; //GDBTD VG_(transfer) (&amd64->guest_CS, buf, dir, size, mod); + case 19: *mod = False; break; //GDBTD VG_(transfer) (&amd64->guest_SS, buf, dir, size, mod); + case 20: *mod = False; break; //GDBTD VG_(transfer) (&amd64->guest_DS, buf, dir, size, mod); + case 21: *mod = False; break; //GDBTD VG_(transfer) (&amd64->guest_ES, buf, dir, size, mod); + case 22: *mod = False; break; //GDBTD VG_(transfer) (&amd64->guest_FS, buf, dir, size, mod); + case 23: VG_(transfer) (&amd64->guest_GS_0x60, buf, dir, size, mod); break; + case 24: + case 25: + case 26: + case 27: /* register 24 to 31 are float registers 80 bits but 64 bits in valgrind */ + case 28: + case 29: + case 30: + case 31: + if (dir == valgrind_to_gdbserver) { + UChar fpreg80[10]; + convert_f64le_to_f80le ((UChar *)&amd64->guest_FPREG[regno-16], + fpreg80); + VG_(transfer) (&fpreg80, buf, dir, sizeof(fpreg80), mod); + } else { + ULong fpreg64; + convert_f80le_to_f64le (buf, (UChar *)&fpreg64); + VG_(transfer) (&amd64->guest_FPREG[regno-16], &fpreg64, + dir, sizeof(fpreg64), mod); + } + break; + case 32: + if (dir == valgrind_to_gdbserver) { + // vex only models the rounding bits (see libvex_guest_amd64.h) + UWord value = 0x037f; + value |= amd64->guest_FPROUND << 10; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX equivalent fcrtl + } + break; + case 33: + if (dir == valgrind_to_gdbserver) { + UWord value = amd64->guest_FC3210; + value |= (amd64->guest_FTOP & 7) << 11; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX equivalent fstat + } + break; + case 34: + if (dir == valgrind_to_gdbserver) { + // vex doesn't model these precisely + UWord value = + ((amd64->guest_FPTAG[0] ? 0 : 3) << 0) | + ((amd64->guest_FPTAG[1] ? 0 : 3) << 2) | + ((amd64->guest_FPTAG[2] ? 0 : 3) << 4) | + ((amd64->guest_FPTAG[3] ? 0 : 3) << 6) | + ((amd64->guest_FPTAG[4] ? 0 : 3) << 8) | + ((amd64->guest_FPTAG[5] ? 0 : 3) << 10) | + ((amd64->guest_FPTAG[6] ? 0 : 3) << 12) | + ((amd64->guest_FPTAG[7] ? 0 : 3) << 14); + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX equivalent ftag + } + break; + case 35: *mod = False; break; // GDBTD ??? equivalent of fiseg + case 36: *mod = False; break; // GDBTD ??? equivalent of fioff + case 37: *mod = False; break; // GDBTD ??? equivalent of foseg + case 38: *mod = False; break; // GDBTD ??? equivalent of fooff + case 39: *mod = False; break; // GDBTD ??? equivalent of fop + case 40: VG_(transfer) (&amd64->guest_XMM0, buf, dir, size, mod); break; + case 41: VG_(transfer) (&amd64->guest_XMM1, buf, dir, size, mod); break; + case 42: VG_(transfer) (&amd64->guest_XMM2, buf, dir, size, mod); break; + case 43: VG_(transfer) (&amd64->guest_XMM3, buf, dir, size, mod); break; + case 44: VG_(transfer) (&amd64->guest_XMM4, buf, dir, size, mod); break; + case 45: VG_(transfer) (&amd64->guest_XMM5, buf, dir, size, mod); break; + case 46: VG_(transfer) (&amd64->guest_XMM6, buf, dir, size, mod); break; + case 47: VG_(transfer) (&amd64->guest_XMM7, buf, dir, size, mod); break; + case 48: VG_(transfer) (&amd64->guest_XMM8, buf, dir, size, mod); break; + case 49: VG_(transfer) (&amd64->guest_XMM9, buf, dir, size, mod); break; + case 50: VG_(transfer) (&amd64->guest_XMM10, buf, dir, size, mod); break; + case 51: VG_(transfer) (&amd64->guest_XMM11, buf, dir, size, mod); break; + case 52: VG_(transfer) (&amd64->guest_XMM12, buf, dir, size, mod); break; + case 53: VG_(transfer) (&amd64->guest_XMM13, buf, dir, size, mod); break; + case 54: VG_(transfer) (&amd64->guest_XMM14, buf, dir, size, mod); break; + case 55: VG_(transfer) (&amd64->guest_XMM15, buf, dir, size, mod); break; + case 56: + if (dir == valgrind_to_gdbserver) { + // vex only models the rounding bits (see libvex_guest_x86.h) + UWord value = 0x1f80; + value |= amd64->guest_SSEROUND << 13; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX equivalent mxcsr + } + break; + case 57: *mod = False; break; // GDBTD???? VEX equivalent { "orig_rax"}, + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 7, //RSP + transfer_register, + get_pc, + set_pc, + "amd64", + NULL, // target_xml not needed. +#if defined(VGO_linux) + "amd64-linux-valgrind.xml" +#else + "amd64-coresse-valgrind.xml" +#endif +}; + +void amd64_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-arm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-arm.c new file mode 100644 index 000000000..5767793e9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-arm.c @@ -0,0 +1,297 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" +#include "pub_core_debuginfo.h" + +#include "valgrind_low.h" + +#include "libvex_guest_arm.h" + +struct reg regs[] = { + { "r0", 0, 32 }, + { "r1", 32, 32 }, + { "r2", 64, 32 }, + { "r3", 96, 32 }, + { "r4", 128, 32 }, + { "r5", 160, 32 }, + { "r6", 192, 32 }, + { "r7", 224, 32 }, + { "r8", 256, 32 }, + { "r9", 288, 32 }, + { "r10", 320, 32 }, + { "r11", 352, 32 }, + { "r12", 384, 32 }, + { "sp", 416, 32 }, + { "lr", 448, 32 }, + { "pc", 480, 32 }, + { "", 512, 0 }, // It seems these entries are needed + { "", 512, 0 }, // as previous versions of arm <-> gdb placed + { "", 512, 0 }, // some floating point registers here. So, cpsr + { "", 512, 0 }, // must be register 25. + { "", 512, 0 }, + { "", 512, 0 }, + { "", 512, 0 }, + { "", 512, 0 }, + { "", 512, 0 }, + { "cpsr", 512, 32 }, + { "d0", 544, 64 }, + { "d1", 608, 64 }, + { "d2", 672, 64 }, + { "d3", 736, 64 }, + { "d4", 800, 64 }, + { "d5", 864, 64 }, + { "d6", 928, 64 }, + { "d7", 992, 64 }, + { "d8", 1056, 64 }, + { "d9", 1120, 64 }, + { "d10", 1184, 64 }, + { "d11", 1248, 64 }, + { "d12", 1312, 64 }, + { "d13", 1376, 64 }, + { "d14", 1440, 64 }, + { "d15", 1504, 64 }, + { "d16", 1568, 64 }, + { "d17", 1632, 64 }, + { "d18", 1696, 64 }, + { "d19", 1760, 64 }, + { "d20", 1824, 64 }, + { "d21", 1888, 64 }, + { "d22", 1952, 64 }, + { "d23", 2016, 64 }, + { "d24", 2080, 64 }, + { "d25", 2144, 64 }, + { "d26", 2208, 64 }, + { "d27", 2272, 64 }, + { "d28", 2336, 64 }, + { "d29", 2400, 64 }, + { "d30", 2464, 64 }, + { "d31", 2528, 64 }, + { "fpscr", 2592, 32 } +}; +static const char *expedite_regs[] = { "r11", "sp", "pc", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("pc", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("pc", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +Addr thumb_pc (Addr pc) +{ + // If the thumb bit (bit 0) is already set, we trust it. + if (pc & 1) { + dlog (1, "%p = thumb (bit0 is set)\n", C2v (pc)); + return pc; + } + + // Here, bit 0 is not set. + // For a pc aligned on 4 bytes, we have to use the debug + // info to determine the thumb-ness. + // else (aligned on 2 bytes), we trust this is a thumb + // address and we set the thumb bit. + + if (pc & 2) { + dlog (1, "bit0 not set, bit1 set => %p = thumb\n", C2v (pc)); + return pc | 1; + } + + // pc aligned on 4 bytes. We need to use debug info. + { + Char fnname[200]; // ??? max size + Addr entrypoint; + Addr ptoc; // unused but needed. + // If this is a thumb instruction, we need to ask + // the debug info with the bit0 set + // (why can't debug info do that for us ???) + // (why if this is a 4 bytes thumb instruction ???) + if (VG_(get_fnname_raw) (pc | 1, fnname, 200)) { + if (VG_(lookup_symbol_SLOW)( "*", fnname, &entrypoint, &ptoc )) { + dlog (1, "fnname %s lookupsym %p => %p %s.\n", + fnname, C2v(entrypoint), C2v(pc), + (entrypoint & 1 ? "thumb" : "arm")); + if (entrypoint & 1) + return pc | 1; + else + return pc; + + } else { + dlog (1, "%p fnname %s lookupsym failed?. Assume arm\n", + C2v (pc), fnname); + return pc; + } + } else { + // Can't find function name. We assume this is arm + dlog (1, "%p unknown fnname?. Assume arm\n", C2v (pc)); + return pc; + } + } +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestARMState* arm = (VexGuestARMState*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&arm->guest_R0, buf, dir, size, mod); break; + case 1: VG_(transfer) (&arm->guest_R1, buf, dir, size, mod); break; + case 2: VG_(transfer) (&arm->guest_R2, buf, dir, size, mod); break; + case 3: VG_(transfer) (&arm->guest_R3, buf, dir, size, mod); break; + case 4: VG_(transfer) (&arm->guest_R4, buf, dir, size, mod); break; + case 5: VG_(transfer) (&arm->guest_R5, buf, dir, size, mod); break; + case 6: VG_(transfer) (&arm->guest_R6, buf, dir, size, mod); break; + case 7: VG_(transfer) (&arm->guest_R7, buf, dir, size, mod); break; + case 8: VG_(transfer) (&arm->guest_R8, buf, dir, size, mod); break; + case 9: VG_(transfer) (&arm->guest_R9, buf, dir, size, mod); break; + case 10: VG_(transfer) (&arm->guest_R10, buf, dir, size, mod); break; + case 11: VG_(transfer) (&arm->guest_R11, buf, dir, size, mod); break; + case 12: VG_(transfer) (&arm->guest_R12, buf, dir, size, mod); break; + case 13: VG_(transfer) (&arm->guest_R13, buf, dir, size, mod); break; + case 14: VG_(transfer) (&arm->guest_R14, buf, dir, size, mod); break; + case 15: { + VG_(transfer) (&arm->guest_R15T, buf, dir, size, mod); + if (dir == gdbserver_to_valgrind && *mod) { + // If gdb is changing the PC, we have to set the thumb bit + // if needed. + arm->guest_R15T = thumb_pc(arm->guest_R15T); + } + break; + } + case 16: + case 17: + case 18: + case 19: + case 20: /* 9 "empty registers". See struct reg regs above. */ + case 21: + case 22: + case 23: + case 24: *mod = False; break; + case 25: { + UInt cpsr = LibVEX_GuestARM_get_cpsr (arm); + if (dir == valgrind_to_gdbserver) { + VG_(transfer) (&cpsr, buf, dir, size, mod); + } else { +# if 0 + UInt newcpsr; + VG_(transfer) (&newcpsr, buf, dir, size, mod); + *mod = newcpsr != cpsr; + // GDBTD ???? see FIXME in guest_arm_helpers.c + LibVEX_GuestARM_put_flags (newcpsr, arm); +# else + *mod = False; +# endif + } + break; + } + case 26: VG_(transfer) (&arm->guest_D0, buf, dir, size, mod); break; + case 27: VG_(transfer) (&arm->guest_D1, buf, dir, size, mod); break; + case 28: VG_(transfer) (&arm->guest_D2, buf, dir, size, mod); break; + case 29: VG_(transfer) (&arm->guest_D3, buf, dir, size, mod); break; + case 30: VG_(transfer) (&arm->guest_D4, buf, dir, size, mod); break; + case 31: VG_(transfer) (&arm->guest_D5, buf, dir, size, mod); break; + case 32: VG_(transfer) (&arm->guest_D6, buf, dir, size, mod); break; + case 33: VG_(transfer) (&arm->guest_D7, buf, dir, size, mod); break; + case 34: VG_(transfer) (&arm->guest_D8, buf, dir, size, mod); break; + case 35: VG_(transfer) (&arm->guest_D9, buf, dir, size, mod); break; + case 36: VG_(transfer) (&arm->guest_D10, buf, dir, size, mod); break; + case 37: VG_(transfer) (&arm->guest_D11, buf, dir, size, mod); break; + case 38: VG_(transfer) (&arm->guest_D12, buf, dir, size, mod); break; + case 39: VG_(transfer) (&arm->guest_D13, buf, dir, size, mod); break; + case 40: VG_(transfer) (&arm->guest_D14, buf, dir, size, mod); break; + case 41: VG_(transfer) (&arm->guest_D15, buf, dir, size, mod); break; + case 42: VG_(transfer) (&arm->guest_D16, buf, dir, size, mod); break; + case 43: VG_(transfer) (&arm->guest_D17, buf, dir, size, mod); break; + case 44: VG_(transfer) (&arm->guest_D18, buf, dir, size, mod); break; + case 45: VG_(transfer) (&arm->guest_D19, buf, dir, size, mod); break; + case 46: VG_(transfer) (&arm->guest_D20, buf, dir, size, mod); break; + case 47: VG_(transfer) (&arm->guest_D21, buf, dir, size, mod); break; + case 48: VG_(transfer) (&arm->guest_D22, buf, dir, size, mod); break; + case 49: VG_(transfer) (&arm->guest_D23, buf, dir, size, mod); break; + case 50: VG_(transfer) (&arm->guest_D24, buf, dir, size, mod); break; + case 51: VG_(transfer) (&arm->guest_D25, buf, dir, size, mod); break; + case 52: VG_(transfer) (&arm->guest_D26, buf, dir, size, mod); break; + case 53: VG_(transfer) (&arm->guest_D27, buf, dir, size, mod); break; + case 54: VG_(transfer) (&arm->guest_D28, buf, dir, size, mod); break; + case 55: VG_(transfer) (&arm->guest_D29, buf, dir, size, mod); break; + case 56: VG_(transfer) (&arm->guest_D30, buf, dir, size, mod); break; + case 57: VG_(transfer) (&arm->guest_D31, buf, dir, size, mod); break; + case 58: VG_(transfer) (&arm->guest_FPSCR, buf, dir, size, mod); break; + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 13, //SP + transfer_register, + get_pc, + set_pc, + "arm", + "arm-with-vfpv3.xml", + "arm-with-vfpv3-valgrind.xml" +}; + +void arm_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc32.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc32.c new file mode 100644 index 000000000..a7e282ed6 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc32.c @@ -0,0 +1,343 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_ppc32.h" + +/* this is only the basic set of registers. + Need to look at what is the exact ppc32 model to support. +*/ +struct reg regs[] = { + { "r0", 0, 32 }, + { "r1", 32, 32 }, + { "r2", 64, 32 }, + { "r3", 96, 32 }, + { "r4", 128, 32 }, + { "r5", 160, 32 }, + { "r6", 192, 32 }, + { "r7", 224, 32 }, + { "r8", 256, 32 }, + { "r9", 288, 32 }, + { "r10", 320, 32 }, + { "r11", 352, 32 }, + { "r12", 384, 32 }, + { "r13", 416, 32 }, + { "r14", 448, 32 }, + { "r15", 480, 32 }, + { "r16", 512, 32 }, + { "r17", 544, 32 }, + { "r18", 576, 32 }, + { "r19", 608, 32 }, + { "r20", 640, 32 }, + { "r21", 672, 32 }, + { "r22", 704, 32 }, + { "r23", 736, 32 }, + { "r24", 768, 32 }, + { "r25", 800, 32 }, + { "r26", 832, 32 }, + { "r27", 864, 32 }, + { "r28", 896, 32 }, + { "r29", 928, 32 }, + { "r30", 960, 32 }, + { "r31", 992, 32 }, + { "f0", 1024, 64 }, + { "f1", 1088, 64 }, + { "f2", 1152, 64 }, + { "f3", 1216, 64 }, + { "f4", 1280, 64 }, + { "f5", 1344, 64 }, + { "f6", 1408, 64 }, + { "f7", 1472, 64 }, + { "f8", 1536, 64 }, + { "f9", 1600, 64 }, + { "f10", 1664, 64 }, + { "f11", 1728, 64 }, + { "f12", 1792, 64 }, + { "f13", 1856, 64 }, + { "f14", 1920, 64 }, + { "f15", 1984, 64 }, + { "f16", 2048, 64 }, + { "f17", 2112, 64 }, + { "f18", 2176, 64 }, + { "f19", 2240, 64 }, + { "f20", 2304, 64 }, + { "f21", 2368, 64 }, + { "f22", 2432, 64 }, + { "f23", 2496, 64 }, + { "f24", 2560, 64 }, + { "f25", 2624, 64 }, + { "f26", 2688, 64 }, + { "f27", 2752, 64 }, + { "f28", 2816, 64 }, + { "f29", 2880, 64 }, + { "f30", 2944, 64 }, + { "f31", 3008, 64 }, + { "pc", 3072, 32 }, + { "msr", 3104, 32 }, + { "cr", 3136, 32 }, + { "lr", 3168, 32 }, + { "ctr", 3200, 32 }, + { "xer", 3232, 32 }, + { "fpscr", 3264, 32 }, + { "orig_r3", 3296, 32 }, + { "trap", 3328, 32 }, + { "vr0", 3360, 128 }, + { "vr1", 3488, 128 }, + { "vr2", 3616, 128 }, + { "vr3", 3744, 128 }, + { "vr4", 3872, 128 }, + { "vr5", 4000, 128 }, + { "vr6", 4128, 128 }, + { "vr7", 4256, 128 }, + { "vr8", 4384, 128 }, + { "vr9", 4512, 128 }, + { "vr10", 4640, 128 }, + { "vr11", 4768, 128 }, + { "vr12", 4896, 128 }, + { "vr13", 5024, 128 }, + { "vr14", 5152, 128 }, + { "vr15", 5280, 128 }, + { "vr16", 5408, 128 }, + { "vr17", 5536, 128 }, + { "vr18", 5664, 128 }, + { "vr19", 5792, 128 }, + { "vr20", 5920, 128 }, + { "vr21", 6048, 128 }, + { "vr22", 6176, 128 }, + { "vr23", 6304, 128 }, + { "vr24", 6432, 128 }, + { "vr25", 6560, 128 }, + { "vr26", 6688, 128 }, + { "vr27", 6816, 128 }, + { "vr28", 6944, 128 }, + { "vr29", 7072, 128 }, + { "vr30", 7200, 128 }, + { "vr31", 7328, 128 }, + { "vscr", 7456, 32 }, + { "vrsave", 7488, 32 } +}; +static const char *expedite_regs[] = { "r1", "pc", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("pc", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("pc", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestPPC32State* ppc32 = (VexGuestPPC32State*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&ppc32->guest_GPR0, buf, dir, size, mod); break; + case 1: VG_(transfer) (&ppc32->guest_GPR1, buf, dir, size, mod); break; + case 2: VG_(transfer) (&ppc32->guest_GPR2, buf, dir, size, mod); break; + case 3: VG_(transfer) (&ppc32->guest_GPR3, buf, dir, size, mod); break; + case 4: VG_(transfer) (&ppc32->guest_GPR4, buf, dir, size, mod); break; + case 5: VG_(transfer) (&ppc32->guest_GPR5, buf, dir, size, mod); break; + case 6: VG_(transfer) (&ppc32->guest_GPR6, buf, dir, size, mod); break; + case 7: VG_(transfer) (&ppc32->guest_GPR7, buf, dir, size, mod); break; + case 8: VG_(transfer) (&ppc32->guest_GPR8, buf, dir, size, mod); break; + case 9: VG_(transfer) (&ppc32->guest_GPR9, buf, dir, size, mod); break; + case 10: VG_(transfer) (&ppc32->guest_GPR10, buf, dir, size, mod); break; + case 11: VG_(transfer) (&ppc32->guest_GPR11, buf, dir, size, mod); break; + case 12: VG_(transfer) (&ppc32->guest_GPR12, buf, dir, size, mod); break; + case 13: VG_(transfer) (&ppc32->guest_GPR13, buf, dir, size, mod); break; + case 14: VG_(transfer) (&ppc32->guest_GPR14, buf, dir, size, mod); break; + case 15: VG_(transfer) (&ppc32->guest_GPR15, buf, dir, size, mod); break; + case 16: VG_(transfer) (&ppc32->guest_GPR16, buf, dir, size, mod); break; + case 17: VG_(transfer) (&ppc32->guest_GPR17, buf, dir, size, mod); break; + case 18: VG_(transfer) (&ppc32->guest_GPR18, buf, dir, size, mod); break; + case 19: VG_(transfer) (&ppc32->guest_GPR19, buf, dir, size, mod); break; + case 20: VG_(transfer) (&ppc32->guest_GPR20, buf, dir, size, mod); break; + case 21: VG_(transfer) (&ppc32->guest_GPR21, buf, dir, size, mod); break; + case 22: VG_(transfer) (&ppc32->guest_GPR22, buf, dir, size, mod); break; + case 23: VG_(transfer) (&ppc32->guest_GPR23, buf, dir, size, mod); break; + case 24: VG_(transfer) (&ppc32->guest_GPR24, buf, dir, size, mod); break; + case 25: VG_(transfer) (&ppc32->guest_GPR25, buf, dir, size, mod); break; + case 26: VG_(transfer) (&ppc32->guest_GPR26, buf, dir, size, mod); break; + case 27: VG_(transfer) (&ppc32->guest_GPR27, buf, dir, size, mod); break; + case 28: VG_(transfer) (&ppc32->guest_GPR28, buf, dir, size, mod); break; + case 29: VG_(transfer) (&ppc32->guest_GPR29, buf, dir, size, mod); break; + case 30: VG_(transfer) (&ppc32->guest_GPR30, buf, dir, size, mod); break; + case 31: VG_(transfer) (&ppc32->guest_GPR31, buf, dir, size, mod); break; + case 32: VG_(transfer) (&ppc32->guest_VSR0, buf, dir, size, mod); break; + case 33: VG_(transfer) (&ppc32->guest_VSR1, buf, dir, size, mod); break; + case 34: VG_(transfer) (&ppc32->guest_VSR2, buf, dir, size, mod); break; + case 35: VG_(transfer) (&ppc32->guest_VSR3, buf, dir, size, mod); break; + case 36: VG_(transfer) (&ppc32->guest_VSR4, buf, dir, size, mod); break; + case 37: VG_(transfer) (&ppc32->guest_VSR5, buf, dir, size, mod); break; + case 38: VG_(transfer) (&ppc32->guest_VSR6, buf, dir, size, mod); break; + case 39: VG_(transfer) (&ppc32->guest_VSR7, buf, dir, size, mod); break; + case 40: VG_(transfer) (&ppc32->guest_VSR8, buf, dir, size, mod); break; + case 41: VG_(transfer) (&ppc32->guest_VSR9, buf, dir, size, mod); break; + case 42: VG_(transfer) (&ppc32->guest_VSR10, buf, dir, size, mod); break; + case 43: VG_(transfer) (&ppc32->guest_VSR11, buf, dir, size, mod); break; + case 44: VG_(transfer) (&ppc32->guest_VSR12, buf, dir, size, mod); break; + case 45: VG_(transfer) (&ppc32->guest_VSR13, buf, dir, size, mod); break; + case 46: VG_(transfer) (&ppc32->guest_VSR14, buf, dir, size, mod); break; + case 47: VG_(transfer) (&ppc32->guest_VSR15, buf, dir, size, mod); break; + case 48: VG_(transfer) (&ppc32->guest_VSR16, buf, dir, size, mod); break; + case 49: VG_(transfer) (&ppc32->guest_VSR17, buf, dir, size, mod); break; + case 50: VG_(transfer) (&ppc32->guest_VSR18, buf, dir, size, mod); break; + case 51: VG_(transfer) (&ppc32->guest_VSR19, buf, dir, size, mod); break; + case 52: VG_(transfer) (&ppc32->guest_VSR20, buf, dir, size, mod); break; + case 53: VG_(transfer) (&ppc32->guest_VSR21, buf, dir, size, mod); break; + case 54: VG_(transfer) (&ppc32->guest_VSR22, buf, dir, size, mod); break; + case 55: VG_(transfer) (&ppc32->guest_VSR23, buf, dir, size, mod); break; + case 56: VG_(transfer) (&ppc32->guest_VSR24, buf, dir, size, mod); break; + case 57: VG_(transfer) (&ppc32->guest_VSR25, buf, dir, size, mod); break; + case 58: VG_(transfer) (&ppc32->guest_VSR26, buf, dir, size, mod); break; + case 59: VG_(transfer) (&ppc32->guest_VSR27, buf, dir, size, mod); break; + case 60: VG_(transfer) (&ppc32->guest_VSR28, buf, dir, size, mod); break; + case 61: VG_(transfer) (&ppc32->guest_VSR29, buf, dir, size, mod); break; + case 62: VG_(transfer) (&ppc32->guest_VSR30, buf, dir, size, mod); break; + case 63: VG_(transfer) (&ppc32->guest_VSR31, buf, dir, size, mod); break; + case 64: VG_(transfer) (&ppc32->guest_CIA, buf, dir, size, mod); break; + case 65: *mod = False; break; // VEX does not model Machine State Register + case 66: { + UInt cr = LibVEX_GuestPPC32_get_CR (ppc32); + if (dir == valgrind_to_gdbserver) { + VG_(transfer) (&cr, buf, dir, size, mod); + } else { + UInt newcr; + VG_(transfer) (&newcr, buf, dir, size, mod); + *mod = newcr != cr; + LibVEX_GuestPPC32_put_CR (newcr, ppc32); + } + break; + } + case 67: VG_(transfer) (&ppc32->guest_LR, buf, dir, size, mod); break; + case 68: VG_(transfer) (&ppc32->guest_CTR, buf, dir, size, mod); break; + case 69: { + UInt xer = LibVEX_GuestPPC32_get_XER (ppc32); + if (dir == valgrind_to_gdbserver) { + VG_(transfer) (&xer, buf, dir, size, mod); + } else { + UInt newxer; + VG_(transfer) (&newxer, buf, dir, size, mod); + *mod = newxer != xer; + LibVEX_GuestPPC32_put_XER (newxer, ppc32); + } + break; + } + case 70: VG_(transfer) (&ppc32->guest_FPROUND, buf, dir, size, mod); break; + case 71: *mod = False; break; // GDBTD???? VEX { "orig_r3", 3296, 32 }, + case 72: *mod = False; break; // GDBTD???? VEX { "trap", 3328, 32 }, + case 73: VG_(transfer) (&ppc32->guest_VSR32, buf, dir, size, mod); break; + case 74: VG_(transfer) (&ppc32->guest_VSR33, buf, dir, size, mod); break; + case 75: VG_(transfer) (&ppc32->guest_VSR34, buf, dir, size, mod); break; + case 76: VG_(transfer) (&ppc32->guest_VSR35, buf, dir, size, mod); break; + case 77: VG_(transfer) (&ppc32->guest_VSR36, buf, dir, size, mod); break; + case 78: VG_(transfer) (&ppc32->guest_VSR37, buf, dir, size, mod); break; + case 79: VG_(transfer) (&ppc32->guest_VSR38, buf, dir, size, mod); break; + case 80: VG_(transfer) (&ppc32->guest_VSR39, buf, dir, size, mod); break; + case 81: VG_(transfer) (&ppc32->guest_VSR40, buf, dir, size, mod); break; + case 82: VG_(transfer) (&ppc32->guest_VSR41, buf, dir, size, mod); break; + case 83: VG_(transfer) (&ppc32->guest_VSR42, buf, dir, size, mod); break; + case 84: VG_(transfer) (&ppc32->guest_VSR43, buf, dir, size, mod); break; + case 85: VG_(transfer) (&ppc32->guest_VSR44, buf, dir, size, mod); break; + case 86: VG_(transfer) (&ppc32->guest_VSR45, buf, dir, size, mod); break; + case 87: VG_(transfer) (&ppc32->guest_VSR46, buf, dir, size, mod); break; + case 88: VG_(transfer) (&ppc32->guest_VSR47, buf, dir, size, mod); break; + case 89: VG_(transfer) (&ppc32->guest_VSR48, buf, dir, size, mod); break; + case 90: VG_(transfer) (&ppc32->guest_VSR49, buf, dir, size, mod); break; + case 91: VG_(transfer) (&ppc32->guest_VSR50, buf, dir, size, mod); break; + case 92: VG_(transfer) (&ppc32->guest_VSR51, buf, dir, size, mod); break; + case 93: VG_(transfer) (&ppc32->guest_VSR52, buf, dir, size, mod); break; + case 94: VG_(transfer) (&ppc32->guest_VSR53, buf, dir, size, mod); break; + case 95: VG_(transfer) (&ppc32->guest_VSR54, buf, dir, size, mod); break; + case 96: VG_(transfer) (&ppc32->guest_VSR55, buf, dir, size, mod); break; + case 97: VG_(transfer) (&ppc32->guest_VSR56, buf, dir, size, mod); break; + case 98: VG_(transfer) (&ppc32->guest_VSR57, buf, dir, size, mod); break; + case 99: VG_(transfer) (&ppc32->guest_VSR58, buf, dir, size, mod); break; + case 100: VG_(transfer) (&ppc32->guest_VSR59, buf, dir, size, mod); break; + case 101: VG_(transfer) (&ppc32->guest_VSR60, buf, dir, size, mod); break; + case 102: VG_(transfer) (&ppc32->guest_VSR61, buf, dir, size, mod); break; + case 103: VG_(transfer) (&ppc32->guest_VSR62, buf, dir, size, mod); break; + case 104: VG_(transfer) (&ppc32->guest_VSR63, buf, dir, size, mod); break; + case 105: VG_(transfer) (&ppc32->guest_VSCR, buf, dir, size, mod); break; + case 106: VG_(transfer) (&ppc32->guest_VRSAVE, buf, dir, size, mod); break; + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 1, //r1 + transfer_register, + get_pc, + set_pc, + "ppc32", + "powerpc-altivec32l.xml", + "powerpc-altivec32l-valgrind.xml" +}; + +void ppc32_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc64.c new file mode 100644 index 000000000..f2fdbecc8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-ppc64.c @@ -0,0 +1,339 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_ppc64.h" + +struct reg regs[] = { + { "r0", 0, 64 }, + { "r1", 64, 64 }, + { "r2", 128, 64 }, + { "r3", 192, 64 }, + { "r4", 256, 64 }, + { "r5", 320, 64 }, + { "r6", 384, 64 }, + { "r7", 448, 64 }, + { "r8", 512, 64 }, + { "r9", 576, 64 }, + { "r10", 640, 64 }, + { "r11", 704, 64 }, + { "r12", 768, 64 }, + { "r13", 832, 64 }, + { "r14", 896, 64 }, + { "r15", 960, 64 }, + { "r16", 1024, 64 }, + { "r17", 1088, 64 }, + { "r18", 1152, 64 }, + { "r19", 1216, 64 }, + { "r20", 1280, 64 }, + { "r21", 1344, 64 }, + { "r22", 1408, 64 }, + { "r23", 1472, 64 }, + { "r24", 1536, 64 }, + { "r25", 1600, 64 }, + { "r26", 1664, 64 }, + { "r27", 1728, 64 }, + { "r28", 1792, 64 }, + { "r29", 1856, 64 }, + { "r30", 1920, 64 }, + { "r31", 1984, 64 }, + { "f0", 2048, 64 }, + { "f1", 2112, 64 }, + { "f2", 2176, 64 }, + { "f3", 2240, 64 }, + { "f4", 2304, 64 }, + { "f5", 2368, 64 }, + { "f6", 2432, 64 }, + { "f7", 2496, 64 }, + { "f8", 2560, 64 }, + { "f9", 2624, 64 }, + { "f10", 2688, 64 }, + { "f11", 2752, 64 }, + { "f12", 2816, 64 }, + { "f13", 2880, 64 }, + { "f14", 2944, 64 }, + { "f15", 3008, 64 }, + { "f16", 3072, 64 }, + { "f17", 3136, 64 }, + { "f18", 3200, 64 }, + { "f19", 3264, 64 }, + { "f20", 3328, 64 }, + { "f21", 3392, 64 }, + { "f22", 3456, 64 }, + { "f23", 3520, 64 }, + { "f24", 3584, 64 }, + { "f25", 3648, 64 }, + { "f26", 3712, 64 }, + { "f27", 3776, 64 }, + { "f28", 3840, 64 }, + { "f29", 3904, 64 }, + { "f30", 3968, 64 }, + { "f31", 4032, 64 }, + { "pc", 4096, 64 }, + { "msr", 4160, 64 }, + { "cr", 4224, 32 }, + { "lr", 4256, 64 }, + { "ctr", 4320, 64 }, + { "xer", 4384, 32 }, + { "fpscr", 4416, 32 }, + { "orig_r3", 4448, 64 }, + { "trap", 4512, 64 }, + { "vr0", 4576, 128 }, + { "vr1", 4704, 128 }, + { "vr2", 4832, 128 }, + { "vr3", 4960, 128 }, + { "vr4", 5088, 128 }, + { "vr5", 5216, 128 }, + { "vr6", 5344, 128 }, + { "vr7", 5472, 128 }, + { "vr8", 5600, 128 }, + { "vr9", 5728, 128 }, + { "vr10", 5856, 128 }, + { "vr11", 5984, 128 }, + { "vr12", 6112, 128 }, + { "vr13", 6240, 128 }, + { "vr14", 6368, 128 }, + { "vr15", 6496, 128 }, + { "vr16", 6624, 128 }, + { "vr17", 6752, 128 }, + { "vr18", 6880, 128 }, + { "vr19", 7008, 128 }, + { "vr20", 7136, 128 }, + { "vr21", 7264, 128 }, + { "vr22", 7392, 128 }, + { "vr23", 7520, 128 }, + { "vr24", 7648, 128 }, + { "vr25", 7776, 128 }, + { "vr26", 7904, 128 }, + { "vr27", 8032, 128 }, + { "vr28", 8160, 128 }, + { "vr29", 8288, 128 }, + { "vr30", 8416, 128 }, + { "vr31", 8544, 128 }, + { "vscr", 8672, 32 }, + { "vrsave", 8704, 32 }, +}; +static const char *expedite_regs[] = { "r1", "pc", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("pc", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("pc", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestPPC64State* ppc64 = (VexGuestPPC64State*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&ppc64->guest_GPR0, buf, dir, size, mod); break; + case 1: VG_(transfer) (&ppc64->guest_GPR1, buf, dir, size, mod); break; + case 2: VG_(transfer) (&ppc64->guest_GPR2, buf, dir, size, mod); break; + case 3: VG_(transfer) (&ppc64->guest_GPR3, buf, dir, size, mod); break; + case 4: VG_(transfer) (&ppc64->guest_GPR4, buf, dir, size, mod); break; + case 5: VG_(transfer) (&ppc64->guest_GPR5, buf, dir, size, mod); break; + case 6: VG_(transfer) (&ppc64->guest_GPR6, buf, dir, size, mod); break; + case 7: VG_(transfer) (&ppc64->guest_GPR7, buf, dir, size, mod); break; + case 8: VG_(transfer) (&ppc64->guest_GPR8, buf, dir, size, mod); break; + case 9: VG_(transfer) (&ppc64->guest_GPR9, buf, dir, size, mod); break; + case 10: VG_(transfer) (&ppc64->guest_GPR10, buf, dir, size, mod); break; + case 11: VG_(transfer) (&ppc64->guest_GPR11, buf, dir, size, mod); break; + case 12: VG_(transfer) (&ppc64->guest_GPR12, buf, dir, size, mod); break; + case 13: VG_(transfer) (&ppc64->guest_GPR13, buf, dir, size, mod); break; + case 14: VG_(transfer) (&ppc64->guest_GPR14, buf, dir, size, mod); break; + case 15: VG_(transfer) (&ppc64->guest_GPR15, buf, dir, size, mod); break; + case 16: VG_(transfer) (&ppc64->guest_GPR16, buf, dir, size, mod); break; + case 17: VG_(transfer) (&ppc64->guest_GPR17, buf, dir, size, mod); break; + case 18: VG_(transfer) (&ppc64->guest_GPR18, buf, dir, size, mod); break; + case 19: VG_(transfer) (&ppc64->guest_GPR19, buf, dir, size, mod); break; + case 20: VG_(transfer) (&ppc64->guest_GPR20, buf, dir, size, mod); break; + case 21: VG_(transfer) (&ppc64->guest_GPR21, buf, dir, size, mod); break; + case 22: VG_(transfer) (&ppc64->guest_GPR22, buf, dir, size, mod); break; + case 23: VG_(transfer) (&ppc64->guest_GPR23, buf, dir, size, mod); break; + case 24: VG_(transfer) (&ppc64->guest_GPR24, buf, dir, size, mod); break; + case 25: VG_(transfer) (&ppc64->guest_GPR25, buf, dir, size, mod); break; + case 26: VG_(transfer) (&ppc64->guest_GPR26, buf, dir, size, mod); break; + case 27: VG_(transfer) (&ppc64->guest_GPR27, buf, dir, size, mod); break; + case 28: VG_(transfer) (&ppc64->guest_GPR28, buf, dir, size, mod); break; + case 29: VG_(transfer) (&ppc64->guest_GPR29, buf, dir, size, mod); break; + case 30: VG_(transfer) (&ppc64->guest_GPR30, buf, dir, size, mod); break; + case 31: VG_(transfer) (&ppc64->guest_GPR31, buf, dir, size, mod); break; + case 32: VG_(transfer) (&ppc64->guest_VSR0, buf, dir, size, mod); break; + case 33: VG_(transfer) (&ppc64->guest_VSR1, buf, dir, size, mod); break; + case 34: VG_(transfer) (&ppc64->guest_VSR2, buf, dir, size, mod); break; + case 35: VG_(transfer) (&ppc64->guest_VSR3, buf, dir, size, mod); break; + case 36: VG_(transfer) (&ppc64->guest_VSR4, buf, dir, size, mod); break; + case 37: VG_(transfer) (&ppc64->guest_VSR5, buf, dir, size, mod); break; + case 38: VG_(transfer) (&ppc64->guest_VSR6, buf, dir, size, mod); break; + case 39: VG_(transfer) (&ppc64->guest_VSR7, buf, dir, size, mod); break; + case 40: VG_(transfer) (&ppc64->guest_VSR8, buf, dir, size, mod); break; + case 41: VG_(transfer) (&ppc64->guest_VSR9, buf, dir, size, mod); break; + case 42: VG_(transfer) (&ppc64->guest_VSR10, buf, dir, size, mod); break; + case 43: VG_(transfer) (&ppc64->guest_VSR11, buf, dir, size, mod); break; + case 44: VG_(transfer) (&ppc64->guest_VSR12, buf, dir, size, mod); break; + case 45: VG_(transfer) (&ppc64->guest_VSR13, buf, dir, size, mod); break; + case 46: VG_(transfer) (&ppc64->guest_VSR14, buf, dir, size, mod); break; + case 47: VG_(transfer) (&ppc64->guest_VSR15, buf, dir, size, mod); break; + case 48: VG_(transfer) (&ppc64->guest_VSR16, buf, dir, size, mod); break; + case 49: VG_(transfer) (&ppc64->guest_VSR17, buf, dir, size, mod); break; + case 50: VG_(transfer) (&ppc64->guest_VSR18, buf, dir, size, mod); break; + case 51: VG_(transfer) (&ppc64->guest_VSR19, buf, dir, size, mod); break; + case 52: VG_(transfer) (&ppc64->guest_VSR20, buf, dir, size, mod); break; + case 53: VG_(transfer) (&ppc64->guest_VSR21, buf, dir, size, mod); break; + case 54: VG_(transfer) (&ppc64->guest_VSR22, buf, dir, size, mod); break; + case 55: VG_(transfer) (&ppc64->guest_VSR23, buf, dir, size, mod); break; + case 56: VG_(transfer) (&ppc64->guest_VSR24, buf, dir, size, mod); break; + case 57: VG_(transfer) (&ppc64->guest_VSR25, buf, dir, size, mod); break; + case 58: VG_(transfer) (&ppc64->guest_VSR26, buf, dir, size, mod); break; + case 59: VG_(transfer) (&ppc64->guest_VSR27, buf, dir, size, mod); break; + case 60: VG_(transfer) (&ppc64->guest_VSR28, buf, dir, size, mod); break; + case 61: VG_(transfer) (&ppc64->guest_VSR29, buf, dir, size, mod); break; + case 62: VG_(transfer) (&ppc64->guest_VSR30, buf, dir, size, mod); break; + case 63: VG_(transfer) (&ppc64->guest_VSR31, buf, dir, size, mod); break; + case 64: VG_(transfer) (&ppc64->guest_CIA, buf, dir, size, mod); break; + case 65: *mod = False; break; // VEX does not model Machine State Register + case 66: { + UInt cr = LibVEX_GuestPPC64_get_CR (ppc64); + if (dir == valgrind_to_gdbserver) { + VG_(transfer) (&cr, buf, dir, size, mod); + } else { + UInt newcr; + VG_(transfer) (&newcr, buf, dir, size, mod); + *mod = newcr != cr; + LibVEX_GuestPPC64_put_CR (newcr, ppc64); + } + break; + } + case 67: VG_(transfer) (&ppc64->guest_LR, buf, dir, size, mod); break; + case 68: VG_(transfer) (&ppc64->guest_CTR, buf, dir, size, mod); break; + case 69: { + UInt xer = LibVEX_GuestPPC64_get_XER (ppc64); + if (dir == valgrind_to_gdbserver) { + VG_(transfer) (&xer, buf, dir, size, mod); + } else { + UInt newxer; + VG_(transfer) (&newxer, buf, dir, size, mod); + *mod = newxer != xer; + LibVEX_GuestPPC64_put_XER (newxer, ppc64); + } + break; + } + case 70: VG_(transfer) (&ppc64->guest_FPROUND, buf, dir, size, mod); break; + case 71: *mod = False; break; // GDBTD???? VEX { "orig_r3", 4448, 64 }, + case 72: *mod = False; break; // GDBTD???? VEX { "trap", 4512, 64 }, + case 73: VG_(transfer) (&ppc64->guest_VSR32, buf, dir, size, mod); break; + case 74: VG_(transfer) (&ppc64->guest_VSR33, buf, dir, size, mod); break; + case 75: VG_(transfer) (&ppc64->guest_VSR34, buf, dir, size, mod); break; + case 76: VG_(transfer) (&ppc64->guest_VSR35, buf, dir, size, mod); break; + case 77: VG_(transfer) (&ppc64->guest_VSR36, buf, dir, size, mod); break; + case 78: VG_(transfer) (&ppc64->guest_VSR37, buf, dir, size, mod); break; + case 79: VG_(transfer) (&ppc64->guest_VSR38, buf, dir, size, mod); break; + case 80: VG_(transfer) (&ppc64->guest_VSR39, buf, dir, size, mod); break; + case 81: VG_(transfer) (&ppc64->guest_VSR40, buf, dir, size, mod); break; + case 82: VG_(transfer) (&ppc64->guest_VSR41, buf, dir, size, mod); break; + case 83: VG_(transfer) (&ppc64->guest_VSR42, buf, dir, size, mod); break; + case 84: VG_(transfer) (&ppc64->guest_VSR43, buf, dir, size, mod); break; + case 85: VG_(transfer) (&ppc64->guest_VSR44, buf, dir, size, mod); break; + case 86: VG_(transfer) (&ppc64->guest_VSR45, buf, dir, size, mod); break; + case 87: VG_(transfer) (&ppc64->guest_VSR46, buf, dir, size, mod); break; + case 88: VG_(transfer) (&ppc64->guest_VSR47, buf, dir, size, mod); break; + case 89: VG_(transfer) (&ppc64->guest_VSR48, buf, dir, size, mod); break; + case 90: VG_(transfer) (&ppc64->guest_VSR49, buf, dir, size, mod); break; + case 91: VG_(transfer) (&ppc64->guest_VSR50, buf, dir, size, mod); break; + case 92: VG_(transfer) (&ppc64->guest_VSR51, buf, dir, size, mod); break; + case 93: VG_(transfer) (&ppc64->guest_VSR52, buf, dir, size, mod); break; + case 94: VG_(transfer) (&ppc64->guest_VSR53, buf, dir, size, mod); break; + case 95: VG_(transfer) (&ppc64->guest_VSR54, buf, dir, size, mod); break; + case 96: VG_(transfer) (&ppc64->guest_VSR55, buf, dir, size, mod); break; + case 97: VG_(transfer) (&ppc64->guest_VSR56, buf, dir, size, mod); break; + case 98: VG_(transfer) (&ppc64->guest_VSR57, buf, dir, size, mod); break; + case 99: VG_(transfer) (&ppc64->guest_VSR58, buf, dir, size, mod); break; + case 100: VG_(transfer) (&ppc64->guest_VSR59, buf, dir, size, mod); break; + case 101: VG_(transfer) (&ppc64->guest_VSR60, buf, dir, size, mod); break; + case 102: VG_(transfer) (&ppc64->guest_VSR61, buf, dir, size, mod); break; + case 103: VG_(transfer) (&ppc64->guest_VSR62, buf, dir, size, mod); break; + case 104: VG_(transfer) (&ppc64->guest_VSR63, buf, dir, size, mod); break; + case 105: VG_(transfer) (&ppc64->guest_VSCR, buf, dir, size, mod); break; + case 106: VG_(transfer) (&ppc64->guest_VRSAVE, buf, dir, size, mod); break; + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 1, //r1 + transfer_register, + get_pc, + set_pc, + "ppc64", + "powerpc-altivec64l.xml", + "powerpc-altivec64l-valgrind.xml" +}; + +void ppc64_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-s390x.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-s390x.c new file mode 100644 index 000000000..baa3ffcd0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-s390x.c @@ -0,0 +1,205 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_s390x.h" + +struct reg regs[] = { + { "pswm", 0, 64 }, + { "pswa", 64, 64 }, + { "r0", 128, 64 }, + { "r1", 192, 64 }, + { "r2", 256, 64 }, + { "r3", 320, 64 }, + { "r4", 384, 64 }, + { "r5", 448, 64 }, + { "r6", 512, 64 }, + { "r7", 576, 64 }, + { "r8", 640, 64 }, + { "r9", 704, 64 }, + { "r10", 768, 64 }, + { "r11", 832, 64 }, + { "r12", 896, 64 }, + { "r13", 960, 64 }, + { "r14", 1024, 64 }, + { "r15", 1088, 64 }, + { "acr0", 1152, 32 }, + { "acr1", 1184, 32 }, + { "acr2", 1216, 32 }, + { "acr3", 1248, 32 }, + { "acr4", 1280, 32 }, + { "acr5", 1312, 32 }, + { "acr6", 1344, 32 }, + { "acr7", 1376, 32 }, + { "acr8", 1408, 32 }, + { "acr9", 1440, 32 }, + { "acr10", 1472, 32 }, + { "acr11", 1504, 32 }, + { "acr12", 1536, 32 }, + { "acr13", 1568, 32 }, + { "acr14", 1600, 32 }, + { "acr15", 1632, 32 }, + { "fpc", 1664, 32 }, + { "f0", 1696, 64 }, + { "f1", 1760, 64 }, + { "f2", 1824, 64 }, + { "f3", 1888, 64 }, + { "f4", 1952, 64 }, + { "f5", 2016, 64 }, + { "f6", 2080, 64 }, + { "f7", 2144, 64 }, + { "f8", 2208, 64 }, + { "f9", 2272, 64 }, + { "f10", 2336, 64 }, + { "f11", 2400, 64 }, + { "f12", 2464, 64 }, + { "f13", 2528, 64 }, + { "f14", 2592, 64 }, + { "f15", 2656, 64 }, +}; +static const char *expedite_regs[] = { "r14", "r15", "pswa", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("pswa", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("pswa", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestS390XState* s390x = (VexGuestS390XState*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: *mod = False; break; //GDBTD??? { "pswm", 0, 64 }, + case 1: VG_(transfer) (&s390x->guest_IA, buf, dir, size, mod); break; + case 2: VG_(transfer) (&s390x->guest_r0, buf, dir, size, mod); break; + case 3: VG_(transfer) (&s390x->guest_r1, buf, dir, size, mod); break; + case 4: VG_(transfer) (&s390x->guest_r2, buf, dir, size, mod); break; + case 5: VG_(transfer) (&s390x->guest_r3, buf, dir, size, mod); break; + case 6: VG_(transfer) (&s390x->guest_r4, buf, dir, size, mod); break; + case 7: VG_(transfer) (&s390x->guest_r5, buf, dir, size, mod); break; + case 8: VG_(transfer) (&s390x->guest_r6, buf, dir, size, mod); break; + case 9: VG_(transfer) (&s390x->guest_r7, buf, dir, size, mod); break; + case 10: VG_(transfer) (&s390x->guest_r8, buf, dir, size, mod); break; + case 11: VG_(transfer) (&s390x->guest_r9, buf, dir, size, mod); break; + case 12: VG_(transfer) (&s390x->guest_r10, buf, dir, size, mod); break; + case 13: VG_(transfer) (&s390x->guest_r11, buf, dir, size, mod); break; + case 14: VG_(transfer) (&s390x->guest_r12, buf, dir, size, mod); break; + case 15: VG_(transfer) (&s390x->guest_r13, buf, dir, size, mod); break; + case 16: VG_(transfer) (&s390x->guest_r14, buf, dir, size, mod); break; + case 17: VG_(transfer) (&s390x->guest_r15, buf, dir, size, mod); break; + case 18: VG_(transfer) (&s390x->guest_a0, buf, dir, size, mod); break; + case 19: VG_(transfer) (&s390x->guest_a1, buf, dir, size, mod); break; + case 20: VG_(transfer) (&s390x->guest_a2, buf, dir, size, mod); break; + case 21: VG_(transfer) (&s390x->guest_a3, buf, dir, size, mod); break; + case 22: VG_(transfer) (&s390x->guest_a4, buf, dir, size, mod); break; + case 23: VG_(transfer) (&s390x->guest_a5, buf, dir, size, mod); break; + case 24: VG_(transfer) (&s390x->guest_a6, buf, dir, size, mod); break; + case 25: VG_(transfer) (&s390x->guest_a7, buf, dir, size, mod); break; + case 26: VG_(transfer) (&s390x->guest_a8, buf, dir, size, mod); break; + case 27: VG_(transfer) (&s390x->guest_a9, buf, dir, size, mod); break; + case 28: VG_(transfer) (&s390x->guest_a10, buf, dir, size, mod); break; + case 29: VG_(transfer) (&s390x->guest_a11, buf, dir, size, mod); break; + case 30: VG_(transfer) (&s390x->guest_a12, buf, dir, size, mod); break; + case 31: VG_(transfer) (&s390x->guest_a13, buf, dir, size, mod); break; + case 32: VG_(transfer) (&s390x->guest_a14, buf, dir, size, mod); break; + case 33: VG_(transfer) (&s390x->guest_a15, buf, dir, size, mod); break; + case 34: VG_(transfer) (&s390x->guest_fpc, buf, dir, size, mod); break; + case 35: VG_(transfer) (&s390x->guest_f0, buf, dir, size, mod); break; + case 36: VG_(transfer) (&s390x->guest_f1, buf, dir, size, mod); break; + case 37: VG_(transfer) (&s390x->guest_f2, buf, dir, size, mod); break; + case 38: VG_(transfer) (&s390x->guest_f3, buf, dir, size, mod); break; + case 39: VG_(transfer) (&s390x->guest_f4, buf, dir, size, mod); break; + case 40: VG_(transfer) (&s390x->guest_f5, buf, dir, size, mod); break; + case 41: VG_(transfer) (&s390x->guest_f6, buf, dir, size, mod); break; + case 42: VG_(transfer) (&s390x->guest_f7, buf, dir, size, mod); break; + case 43: VG_(transfer) (&s390x->guest_f8, buf, dir, size, mod); break; + case 44: VG_(transfer) (&s390x->guest_f9, buf, dir, size, mod); break; + case 45: VG_(transfer) (&s390x->guest_f10, buf, dir, size, mod); break; + case 46: VG_(transfer) (&s390x->guest_f11, buf, dir, size, mod); break; + case 47: VG_(transfer) (&s390x->guest_f12, buf, dir, size, mod); break; + case 48: VG_(transfer) (&s390x->guest_f13, buf, dir, size, mod); break; + case 49: VG_(transfer) (&s390x->guest_f14, buf, dir, size, mod); break; + case 50: VG_(transfer) (&s390x->guest_f15, buf, dir, size, mod); break; + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 17, //sp = r15, which is register offset 17 in regs + transfer_register, + get_pc, + set_pc, + "s390x", + NULL, // target_xml not needed. + NULL // no xml shadow target description (yet?) +}; + +void s390x_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-x86.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-x86.c new file mode 100644 index 000000000..89ef32977 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low-x86.c @@ -0,0 +1,276 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_x86.h" +/* GDBTD: ??? have a cleaner way to get the f80 <> f64 conversion functions */ +/* below include needed for conversion f80 <> f64 */ +#include "../../VEX/priv/guest_generic_x87.h" + + +/* below loosely inspired from file generated with gdb regdat.sh */ + +static struct reg regs[] = { + { "eax", 0, 32 }, + { "ecx", 32, 32 }, + { "edx", 64, 32 }, + { "ebx", 96, 32 }, + { "esp", 128, 32 }, + { "ebp", 160, 32 }, + { "esi", 192, 32 }, + { "edi", 224, 32 }, + { "eip", 256, 32 }, + { "eflags", 288, 32 }, + { "cs", 320, 32 }, + { "ss", 352, 32 }, + { "ds", 384, 32 }, + { "es", 416, 32 }, + { "fs", 448, 32 }, + { "gs", 480, 32 }, + { "st0", 512, 80 }, + { "st1", 592, 80 }, + { "st2", 672, 80 }, + { "st3", 752, 80 }, + { "st4", 832, 80 }, + { "st5", 912, 80 }, + { "st6", 992, 80 }, + { "st7", 1072, 80 }, + { "fctrl", 1152, 32 }, + { "fstat", 1184, 32 }, + { "ftag", 1216, 32 }, + { "fiseg", 1248, 32 }, + { "fioff", 1280, 32 }, + { "foseg", 1312, 32 }, + { "fooff", 1344, 32 }, + { "fop", 1376, 32 }, + { "xmm0", 1408, 128 }, + { "xmm1", 1536, 128 }, + { "xmm2", 1664, 128 }, + { "xmm3", 1792, 128 }, + { "xmm4", 1920, 128 }, + { "xmm5", 2048, 128 }, + { "xmm6", 2176, 128 }, + { "xmm7", 2304, 128 }, + { "mxcsr", 2432, 32 }, +#if defined(VGO_linux) + { "orig_eax", 2464, 32 } +#endif +}; +static const char *expedite_regs[] = { "ebp", "esp", "eip", 0 }; +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("eip", &pc); + + dlog(1, "stop pc is %p\n", (void *) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("eip", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void * buf, + transfer_direction dir, int size, Bool *mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestX86State* x86 = (VexGuestX86State*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&x86->guest_EAX, buf, dir, size, mod); break; + case 1: VG_(transfer) (&x86->guest_ECX, buf, dir, size, mod); break; + case 2: VG_(transfer) (&x86->guest_EDX, buf, dir, size, mod); break; + case 3: VG_(transfer) (&x86->guest_EBX, buf, dir, size, mod); break; + case 4: VG_(transfer) (&x86->guest_ESP, buf, dir, size, mod); break; + case 5: VG_(transfer) (&x86->guest_EBP, buf, dir, size, mod); break; + case 6: VG_(transfer) (&x86->guest_ESI, buf, dir, size, mod); break; + case 7: VG_(transfer) (&x86->guest_EDI, buf, dir, size, mod); break; + case 8: + VG_(transfer) (&x86->guest_EIP, buf, dir, size, mod); + if (*mod && VG_(debugLog_getLevel)() > 2) { + char bufimage [2*sizeof(x86->guest_IP_AT_SYSCALL) + 1]; + heximage (bufimage, + (char *) &x86->guest_IP_AT_SYSCALL, + sizeof(x86->guest_IP_AT_SYSCALL)); + dlog(3, "guest_IP_AT_SYSCALL %s\n", bufimage); + } + break; + case 9: + if (dir == valgrind_to_gdbserver) { + UInt eflags; + /* we can only retrieve the real flags (set 0) + retrieving shadow flags is not ok */ + if (set == 0) + eflags = LibVEX_GuestX86_get_eflags (x86); + else + eflags = 0; + VG_(transfer) (&eflags, buf, dir, size, mod); break; + } else { + *mod = False; //GDBTD? how do we store eflags in libvex_guest_x86.h ??? + } + break; + case 10: VG_(transfer) (&x86->guest_CS, buf, dir, size, mod); break; + case 11: VG_(transfer) (&x86->guest_SS, buf, dir, size, mod); break; + case 12: VG_(transfer) (&x86->guest_DS, buf, dir, size, mod); break; + case 13: VG_(transfer) (&x86->guest_ES, buf, dir, size, mod); break; + case 14: VG_(transfer) (&x86->guest_FS, buf, dir, size, mod); break; + case 15: VG_(transfer) (&x86->guest_GS, buf, dir, size, mod); break; + case 16: + case 17: + case 18: + case 19: /* register 16 to 23 are float registers 80 bits but 64 bits in valgrind */ + case 20: + case 21: + case 22: + case 23: { + if (dir == valgrind_to_gdbserver) { + UChar fpreg80[10]; + convert_f64le_to_f80le ((UChar *)&x86->guest_FPREG[regno-16], + fpreg80); + VG_(transfer) (&fpreg80, buf, dir, sizeof(fpreg80), mod); + } else { + ULong fpreg64; + convert_f80le_to_f64le (buf, (UChar *)&fpreg64); + VG_(transfer) (&x86->guest_FPREG[regno-16], &fpreg64, + dir, sizeof(fpreg64), mod); + } + break; + } + case 24: + if (dir == valgrind_to_gdbserver) { + // vex only models the rounding bits (see libvex_guest_x86.h) + UWord value = 0x037f; + value |= x86->guest_FPROUND << 10; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX { "fctrl", 1152, 32 }, + } + break; + case 25: + if (dir == valgrind_to_gdbserver) { + UWord value = x86->guest_FC3210; + value |= (x86->guest_FTOP & 7) << 11; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX { "fstat", 1184, 32 }, + } + break; + case 26: + if (dir == valgrind_to_gdbserver) { + // vex doesn't model these precisely + UWord value = + ((x86->guest_FPTAG[0] ? 0 : 3) << 0) | + ((x86->guest_FPTAG[1] ? 0 : 3) << 2) | + ((x86->guest_FPTAG[2] ? 0 : 3) << 4) | + ((x86->guest_FPTAG[3] ? 0 : 3) << 6) | + ((x86->guest_FPTAG[4] ? 0 : 3) << 8) | + ((x86->guest_FPTAG[5] ? 0 : 3) << 10) | + ((x86->guest_FPTAG[6] ? 0 : 3) << 12) | + ((x86->guest_FPTAG[7] ? 0 : 3) << 14); + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX { "ftag", 1216, 32 }, + } + break; + case 27: *mod = False; break; // GDBTD???? VEX { "fiseg", 1248, 32 }, + case 28: *mod = False; break; // GDBTD???? VEX { "fioff", 1280, 32 }, + case 29: *mod = False; break; // GDBTD???? VEX { "foseg", 1312, 32 }, + case 30: *mod = False; break; // GDBTD???? VEX { "fooff", 1344, 32 }, + case 31: *mod = False; break; // GDBTD???? VEX { "fop", 1376, 32 }, + case 32: VG_(transfer) (&x86->guest_XMM0, buf, dir, size, mod); break; + case 33: VG_(transfer) (&x86->guest_XMM1, buf, dir, size, mod); break; + case 34: VG_(transfer) (&x86->guest_XMM2, buf, dir, size, mod); break; + case 35: VG_(transfer) (&x86->guest_XMM3, buf, dir, size, mod); break; + case 36: VG_(transfer) (&x86->guest_XMM4, buf, dir, size, mod); break; + case 37: VG_(transfer) (&x86->guest_XMM5, buf, dir, size, mod); break; + case 38: VG_(transfer) (&x86->guest_XMM6, buf, dir, size, mod); break; + case 39: VG_(transfer) (&x86->guest_XMM7, buf, dir, size, mod); break; + case 40: + if (dir == valgrind_to_gdbserver) { + // vex only models the rounding bits (see libvex_guest_x86.h) + UWord value = 0x1f80; + value |= x86->guest_SSEROUND << 13; + VG_(transfer)(&value, buf, dir, size, mod); + } else { + *mod = False; // GDBTD???? VEX { "mxcsr", 2432, 32 }, + } + break; + case 41: *mod = False; break; // GDBTD???? VEX { "orig_eax", 2464, 32 }, + default: vg_assert(0); + } +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 4, //ESP + transfer_register, + get_pc, + set_pc, + "i386", + NULL, // target_xml not needed. +#if defined(VGO_linux) + "i386-linux-valgrind.xml" +#else + "i386-coresse-valgrind.xml" +#endif +}; + +void x86_init_architecture (struct valgrind_target_ops *target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low.c new file mode 100644 index 000000000..5d3f70843 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind-low.c @@ -0,0 +1,639 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from a file from gdbserver in gdb 6.6. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" +#include "valgrind_low.h" +#include "gdb/signals.h" +#include "pub_core_aspacemgr.h" +#include "pub_tool_machine.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" +#include "pub_tool_debuginfo.h" + +/* the_low_target defines the architecture specific aspects depending + on the cpu */ +static struct valgrind_target_ops the_low_target; + +/* builds an image of bin according to byte order of the architecture + Useful for register and int image */ +char* heximage (char *buf, char *bin, int count) +{ +#if defined(VGA_x86) || defined(VGA_amd64) + char rev[count]; + /* note: no need for trailing \0, length is known with count */ + int i; + for (i = 0; i < count; i++) + rev[i] = bin[count - i - 1]; + hexify (buf, rev, count); +#else + hexify (buf, bin, count); +#endif + return buf; +} + +void* C2v(CORE_ADDR addr) +{ + return (void*) addr; +} + +static +char *image_ptid(unsigned long ptid) +{ + static char result[100]; + VG_(sprintf) (result, "id %ld", ptid); + return result; +} +#define get_thread(inf) ((struct thread_info *)(inf)) +static +void remove_thread_if_not_in_vg_threads (struct inferior_list_entry *inf) +{ + struct thread_info *thread = get_thread (inf); + if (!VG_(lwpid_to_vgtid)(thread_to_gdb_id(thread))) { + dlog(1, "removing gdb ptid %s\n", + image_ptid(thread_to_gdb_id(thread))); + remove_thread (thread); + } +} + +/* synchronize threads known by valgrind and threads known by gdbserver */ +static +void valgrind_update_threads (int pid) +{ + ThreadId tid; + ThreadState *ts; + unsigned long ptid; + struct thread_info *ti; + + /* call remove_thread for all gdb threads not in valgrind threads */ + for_each_inferior (&all_threads, remove_thread_if_not_in_vg_threads); + + /* call add_thread for all valgrind threads not known in gdb all_threads */ + for (tid = 1; tid < VG_N_THREADS; tid++) { + +#define LOCAL_THREAD_TRACE " ti* %p vgtid %d status %s as gdb ptid %s lwpid %d\n", \ + ti, tid, VG_(name_of_ThreadStatus) (ts->status), \ + image_ptid (ptid), ts->os_state.lwpid + + if (VG_(is_valid_tid) (tid)) { + ts = VG_(get_ThreadState) (tid); + ptid = ts->os_state.lwpid; + ti = gdb_id_to_thread (ptid); + if (!ti) { + /* we do not report the threads which are not yet fully + initialized otherwise this creates duplicated threads + in gdb: once with pid xxx lwpid 0, then after that + with pid xxx lwpid yyy. */ + if (ts->status != VgTs_Init) { + dlog(1, "adding_thread" LOCAL_THREAD_TRACE); + add_thread (ptid, ts, ptid); + } + } else { + dlog(2, "(known thread)" LOCAL_THREAD_TRACE); + } + } +#undef LOCAL_THREAD_TRACE + } +} + +/* Return nonzero if the given thread is still alive. */ +static +int valgrind_thread_alive (unsigned long tid) +{ + struct thread_info *ti = gdb_id_to_thread(tid); + ThreadState *tst; + + if (ti != NULL) { + tst = (ThreadState *) inferior_target_data (ti); + return tst->status != VgTs_Zombie; + } + else { + return 0; + } +} + +/* allocate and build a register structure containing the shadow registers. + reg_defs is the normal registers, n is their numbers */ +static +struct reg* build_shadow_arch (struct reg *reg_defs, int n) { + int i, r; + static char *postfix[3] = { "", "s1", "s2" }; + struct reg *new_regs = malloc(3 * n * sizeof(reg_defs[0])); + int reg_set_len = reg_defs[n-1].offset + reg_defs[n-1].size; + + for (i = 0; i < 3; i++) { + for (r = 0; r < n; r++) { + new_regs[i*n + r].name = malloc(strlen(reg_defs[r].name) + + strlen (postfix[i]) + 1); + strcpy (new_regs[i*n + r].name, reg_defs[r].name); + strcat (new_regs[i*n + r].name, postfix[i]); + new_regs[i*n + r].offset = i*reg_set_len + reg_defs[r].offset; + new_regs[i*n + r].size = reg_defs[r].size; + dlog(1, + "%10s Nr %d offset(bit) %d offset(byte) %d size(bit) %d\n", + new_regs[i*n + r].name, i*n + r, new_regs[i*n + r].offset, + (new_regs[i*n + r].offset) / 8, new_regs[i*n + r].size); + } + } + + return new_regs; +} + +/* Fetch one register from valgrind VEX guest state. */ +static +void fetch_register (int regno) +{ + int size; + ThreadState *tst = (ThreadState *) inferior_target_data (current_inferior); + ThreadId tid = tst->tid; + + if (regno >= the_low_target.num_regs) { + dlog(0, "error fetch_register regno %d max %d\n", + regno, the_low_target.num_regs); + return; + } + size = register_size (regno); + if (size > 0) { + Bool mod; + char buf [size]; + VG_(memset) (buf, 0, size); // registers not fetched will be seen as 0. + (*the_low_target.transfer_register) (tid, regno, buf, + valgrind_to_gdbserver, size, &mod); + // Note: the *mod received from transfer_register is not interesting. + // We are interested to see if the register data in the register cache is modified. + supply_register (regno, buf, &mod); + if (mod && VG_(debugLog_getLevel)() > 1) { + char bufimage [2*size + 1]; + heximage (bufimage, buf, size); + dlog(2, "fetched register %d size %d name %s value %s tid %d status %s\n", + regno, size, the_low_target.reg_defs[regno].name, bufimage, + tid, VG_(name_of_ThreadStatus) (tst->status)); + } + } +} + +/* Fetch all registers, or just one, from the child process. */ +static +void usr_fetch_inferior_registers (int regno) +{ + if (regno == -1 || regno == 0) + for (regno = 0; regno < the_low_target.num_regs; regno++) + fetch_register (regno); + else + fetch_register (regno); +} + +/* Store our register values back into the inferior. + If REGNO is -1, do this for all registers. + Otherwise, REGNO specifies which register (so we can save time). */ +static +void usr_store_inferior_registers (int regno) +{ + int size; + ThreadState *tst = (ThreadState *) inferior_target_data (current_inferior); + ThreadId tid = tst->tid; + + if (regno >= 0) { + + if (regno >= the_low_target.num_regs) { + dlog(0, "error store_register regno %d max %d\n", + regno, the_low_target.num_regs); + return; + } + + size = register_size (regno); + if (size > 0) { + Bool mod; + Addr old_SP, new_SP; + char buf[size]; + + if (regno == the_low_target.stack_pointer_regno) { + /* When the stack pointer register is changed such that + the stack is extended, we better inform the tool of the + stack increase. This is needed in particular to avoid + spurious Memcheck errors during Inferior calls. So, we + save in old_SP the SP before the change. A change of + stack pointer is also assumed to have initialised this + new stack space. For the typical example of an inferior + call, gdb writes arguments on the stack, and then + changes the stack pointer. As the stack increase tool + function might mark it as undefined, we have to call it + at the good moment. */ + VG_(memset) ((void *) &old_SP, 0, size); + (*the_low_target.transfer_register) (tid, regno, (void *) &old_SP, + valgrind_to_gdbserver, size, &mod); + } + + VG_(memset) (buf, 0, size); + collect_register (regno, buf); + (*the_low_target.transfer_register) (tid, regno, buf, + gdbserver_to_valgrind, size, &mod); + if (mod && VG_(debugLog_getLevel)() > 1) { + char bufimage [2*size + 1]; + heximage (bufimage, buf, size); + dlog(2, + "stored register %d size %d name %s value %s " + "tid %d status %s\n", + regno, size, the_low_target.reg_defs[regno].name, bufimage, + tid, VG_(name_of_ThreadStatus) (tst->status)); + } + if (regno == the_low_target.stack_pointer_regno) { + VG_(memcpy) (&new_SP, buf, size); + if (old_SP > new_SP) { + Word delta = (Word)new_SP - (Word)old_SP; + dlog(1, + " stack increase by stack pointer changed from %p to %p " + "delta %ld\n", + (void*) old_SP, (void *) new_SP, + delta); + VG_TRACK( new_mem_stack_w_ECU, new_SP, -delta, 0 ); + VG_TRACK( new_mem_stack, new_SP, -delta ); + if (VG_(tdict).track_post_mem_write) { + VG_(tdict).track_post_mem_write( Vg_CoreClientReq, tid, + new_SP, -delta); + } + } + } + } + } + else { + for (regno = 0; regno < the_low_target.num_regs; regno++) + usr_store_inferior_registers (regno); + } +} + +static +void valgrind_fetch_registers (int regno) +{ + usr_fetch_inferior_registers (regno); +} + +static +void valgrind_store_registers (int regno) +{ + usr_store_inferior_registers (regno); +} + +/* Copy LEN bytes from inferior's memory starting at MEMADDR + to debugger memory starting at MYADDR. */ + +static +int valgrind_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) +{ + const void *sourceaddr = C2v (memaddr); + dlog(2, "reading memory %p size %d\n", sourceaddr, len); + if (!VG_(am_is_valid_for_client_or_free_or_resvn) ((Addr) sourceaddr, + len, VKI_PROT_READ)) { + dlog(1, "error reading memory %p size %d\n", sourceaddr, len); + return -1; + } + VG_(memcpy) (myaddr, sourceaddr, len); + return 0; +} + +/* Copy LEN bytes of data from debugger memory at MYADDR + to inferior's memory at MEMADDR. + On failure (cannot write the inferior) + returns the value of errno. */ + +static +int valgrind_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) +{ + void *targetaddr = C2v (memaddr); + dlog(2, "writing memory %p size %d\n", targetaddr, len); + if (!VG_(am_is_valid_for_client_or_free_or_resvn) ((Addr)targetaddr, + len, VKI_PROT_WRITE)) { + dlog(1, "error writing memory %p size %d\n", targetaddr, len); + return -1; + } + if (len > 0) { + VG_(memcpy) (targetaddr, myaddr, len); + if (VG_(tdict).track_post_mem_write) { + /* Inform the tool of the post memwrite. Note that we do the + minimum necessary to avoid complains from e.g. + memcheck. The idea is that the debugger is as least + intrusive as possible. So, we do not inform of the pre + mem write (and in any case, this would cause problems with + memcheck that does not like our CorePart in + pre_mem_write. */ + ThreadState *tst = (ThreadState *) inferior_target_data (current_inferior); + ThreadId tid = tst->tid; + VG_(tdict).track_post_mem_write( Vg_CoreClientReq, tid, (Addr) targetaddr, len ); + } + } + return 0; +} + +/* insert or remove a breakpoint */ +static +int valgrind_point (Bool insert, char type, CORE_ADDR addr, int len) +{ + PointKind kind; + switch (type) { + case '0': /* implemented by inserting checks at each instruction in sb */ + kind = software_breakpoint; + break; + case '1': /* hw breakpoint, same implementation as sw breakpoint */ + kind = hardware_breakpoint; + break; + case '2': + kind = write_watchpoint; + break; + case '3': + kind = read_watchpoint; + break; + case '4': + kind = access_watchpoint; + break; + default: + vg_assert (0); + } + + /* Attention: gdbserver convention differs: 0 means ok; 1 means not ok */ + if (VG_(gdbserver_point) (kind, insert, addr, len)) + return 0; + else + return 1; /* error or unsupported */ +} + +static +void valgrind_send_signal (int sig) +{ + dlog(1, "valgrind_send_signal %d called ????\n", sig); +} + +static +char* valgrind_target_xml (void) +{ + return (char *) the_low_target.target_xml; +} + +static +char* valgrind_shadow_target_xml (void) +{ + return (char *) the_low_target.shadow_target_xml; +} + +static +int valgrind_insert_point (char type, CORE_ADDR addr, int len) +{ + return valgrind_point (/* insert */ True, type, addr, len); +} + +static +int valgrind_remove_point (char type, CORE_ADDR addr, int len) +{ + return valgrind_point (/* insert*/ False, type, addr, len); +} + +static CORE_ADDR stopped_data_address = 0; +void VG_(set_watchpoint_stop_address) (Addr addr) +{ + stopped_data_address = addr; +} + +static +int valgrind_stopped_by_watchpoint (void) +{ + return stopped_data_address != 0; +} + +static +CORE_ADDR valgrind_stopped_data_address (void) +{ + return stopped_data_address; +} + +/* pc at which we last stopped */ +static CORE_ADDR stop_pc; + +/* pc at which we resume. + If stop_pc != resume_pc, it means + gdb/gdbserver has changed the pc so as to have either + a "continue by jumping at that address" + or a "continue at that address to call some code from gdb". +*/ +static CORE_ADDR resume_pc; + +static int signal_to_report; + +void gdbserver_signal_encountered (Int sigNo) +{ + signal_to_report = sigNo; +} + +static int signal_to_deliver; +Bool gdbserver_deliver_signal (Int sigNo) +{ + return sigNo == signal_to_deliver; +} + +static +char* sym (Addr addr) +{ + static char buf[200]; + VG_(describe_IP) (addr, buf, 200); + return buf; +} + +ThreadId vgdb_interrupted_tid = 0; +/* called to wait for the process to stop */ +static +unsigned char valgrind_wait (char *ourstatus) +{ + int pid; + unsigned long wptid; + ThreadState *tst; + enum target_signal sig; + + pid = VG_(getpid) (); + dlog(1, "enter valgrind_wait pid %d\n", pid); + + regcache_invalidate(); + valgrind_update_threads(pid); + + /* in valgrind, we consider that a wait always succeeds with STOPPED 'T' + and with a signal TRAP (i.e. a breakpoint), unless there is + a signal to report. */ + *ourstatus = 'T'; + if (signal_to_report == 0) + sig = TARGET_SIGNAL_TRAP; + else + sig = target_signal_from_host(signal_to_report); + + if (vgdb_interrupted_tid != 0) + tst = VG_(get_ThreadState) (vgdb_interrupted_tid); + else + tst = VG_(get_ThreadState) (VG_(running_tid)); + wptid = tst->os_state.lwpid; + /* we can only change the current_inferior when the wptid references + an existing thread. Otherwise, we are still in the init phase. + (hack similar to main thread hack in valgrind_update_threads) */ + if (tst->os_state.lwpid) + current_inferior = gdb_id_to_thread (wptid); + stop_pc = (*the_low_target.get_pc) (); + + dlog(1, + "exit valgrind_wait returns ptid %s stop_pc %s signal %d\n", + image_ptid (wptid), sym (stop_pc), sig); + return sig; +} + +/* 0 => not single stepping. + 1 => single stepping asked by gdb + 2 => single stepping asked by valgrind (watchpoint) */ +static int stepping = 0; + +/* called when the process is to be resumed */ +static +void valgrind_resume (struct thread_resume *resume_info) +{ + dlog(1, + "resume_info thread %ld leave_stopped %d step %d sig %d stepping %d\n", + resume_info->thread, + resume_info->leave_stopped, + resume_info->step, + resume_info->sig, + stepping); + if (valgrind_stopped_by_watchpoint()) { + dlog(1, "clearing watchpoint stopped_data_address %p\n", + C2v(stopped_data_address)); + VG_(set_watchpoint_stop_address) ((Addr) 0); + } + signal_to_deliver = resume_info->sig; + + stepping = resume_info->step; + resume_pc = (*the_low_target.get_pc) (); + if (resume_pc != stop_pc) { + dlog(1, + "stop_pc %p changed to be resume_pc %s\n", + C2v(stop_pc), sym(resume_pc)); + } + regcache_invalidate(); +} + +Addr valgrind_get_ignore_break_once(void) +{ + if (valgrind_single_stepping()) + return resume_pc; + else + return 0; +} + + +void valgrind_set_single_stepping(Bool set) +{ + if (set) + stepping = 2; + else + stepping = 0; +} + +Bool valgrind_single_stepping(void) +{ + if (stepping) + return True; + else + return False; +} + +static struct target_ops valgrind_target_ops = { + valgrind_thread_alive, + valgrind_resume, + valgrind_wait, + valgrind_fetch_registers, + valgrind_store_registers, + valgrind_read_memory, + valgrind_write_memory, + valgrind_send_signal, + valgrind_target_xml, + valgrind_shadow_target_xml, + valgrind_insert_point, + valgrind_remove_point, + valgrind_stopped_by_watchpoint, + valgrind_stopped_data_address, +}; + + +/* returns a pointer to the architecture state corresponding to + the provided register set: 0 => normal guest registers, + 1 => shadow1 + 2 => shadow2 +*/ +VexGuestArchState* get_arch (int set, ThreadState* tst) +{ + switch (set) { + case 0: return &tst->arch.vex; + case 1: return &tst->arch.vex_shadow1; + case 2: return &tst->arch.vex_shadow2; + default: vg_assert(0); + } +} + +static int non_shadow_num_regs = 0; +static struct reg *non_shadow_reg_defs = NULL; +void initialize_shadow_low(Bool shadow_mode) +{ + if (non_shadow_reg_defs == NULL) { + non_shadow_reg_defs = the_low_target.reg_defs; + non_shadow_num_regs = the_low_target.num_regs; + } + + regcache_invalidate(); + if (the_low_target.reg_defs != non_shadow_reg_defs) { + free (the_low_target.reg_defs); + } + if (shadow_mode) { + the_low_target.num_regs = 3 * non_shadow_num_regs; + the_low_target.reg_defs = build_shadow_arch (non_shadow_reg_defs, non_shadow_num_regs); + } else { + the_low_target.num_regs = non_shadow_num_regs; + the_low_target.reg_defs = non_shadow_reg_defs; + } + set_register_cache (the_low_target.reg_defs, the_low_target.num_regs); +} + +void initialize_low(void) +{ + set_target_ops (&valgrind_target_ops); + +#if defined(VGA_x86) + x86_init_architecture(&the_low_target); +#elif defined(VGA_amd64) + amd64_init_architecture(&the_low_target); +#elif defined(VGA_arm) + arm_init_architecture(&the_low_target); +#elif defined(VGA_ppc32) + ppc32_init_architecture(&the_low_target); +#elif defined(VGA_ppc64) + ppc64_init_architecture(&the_low_target); +#elif defined(VGA_s390x) + s390x_init_architecture(&the_low_target); +#else + architecture missing in valgrind-low.c +#endif + +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind_low.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind_low.h new file mode 100644 index 000000000..6817110eb --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/valgrind_low.h @@ -0,0 +1,91 @@ +/* Definitions of interface to the "low" (arch specific) functions + needed for interfacing the Valgrind gdbserver with the Valgrind + guest. + + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file has been inspired from a file that is part of GDB. + It has been modified to integrate it in valgrind + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef VALGRIND_LOW_H +#define VALGRIND_LOW_H + +/* defines the characteristics of the "low" valgrind target architecture. + In other words, struct valgrind_target_ops defines the functions and + data which are specific to the architecture (x86 or amd64 or + ppc32 or ...). */ +struct valgrind_target_ops +{ + int num_regs; + struct reg *reg_defs; + + int stack_pointer_regno; + /* register number of the stack pointer register */ + + /* transfer the register regno from/to valgrind (guest state) + to/from buf + according to transfer_direction. + *mod set to True if destination content is modified by the transfer + otherwise it is set to False. */ + void (*transfer_register) (ThreadId tid, int regno, void * buf, + transfer_direction dir, int size, Bool *mod); + + + CORE_ADDR (*get_pc) (void); + void (*set_pc) (CORE_ADDR newpc); + + /* What string to report to GDB when it asks for the architecture, + or NULL not to answer. */ + const char *arch_string; + + /* Description of the set of registers. + For some architectures (e.g. arm), it is mandatory + to give a description of the registers, otherwise + gdb does not understand the reply to the 'g' packet + (which is used to get the registers). */ + const char *target_xml; + + /* Same as target_xml, but describes also the two shadow + registers set. + This is mandatory to use the option --vgdb-shadow-registers=yes. */ + const char *shadow_target_xml; +}; + + +/* convert from CORE_ADDR to void* */ +extern void* C2v(CORE_ADDR addr); + +/* builds an image of bin according to byte order of the architecture + Useful for register and int image */ +extern char* heximage (char *buf, char *bin, int count); + +/* returns a pointer to the architecture state corresponding to + the provided register set: 0 => normal guest registers, + 1 => shadow1 + 2 => shadow2 */ +VexGuestArchState* get_arch (int set, ThreadState* tst); + +extern void x86_init_architecture (struct valgrind_target_ops *target); +extern void amd64_init_architecture (struct valgrind_target_ops *target); +extern void arm_init_architecture (struct valgrind_target_ops *target); +extern void ppc32_init_architecture (struct valgrind_target_ops *target); +extern void ppc64_init_architecture (struct valgrind_target_ops *target); +extern void s390x_init_architecture (struct valgrind_target_ops *target); + +#endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/version.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/version.c new file mode 100644 index 000000000..7b2af402c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_gdbserver/version.c @@ -0,0 +1,2 @@ +#include "server.h" +const char version[] = "gdbserver protocol box extracted from gdb 6.6"; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-darwin.c index d11ae3a17..a1132bbb6 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-darwin.c @@ -47,6 +47,7 @@ #include "pub_core_ume.h" #include "pub_core_options.h" #include "pub_core_tooliface.h" /* VG_TRACK */ +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" /* ThreadArchState */ #include "priv_initimg_pathscan.h" #include "pub_core_initimg.h" /* self */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-l4re.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-l4re.c index 06df8cb33..a387765ff 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-l4re.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-l4re.c @@ -1145,6 +1145,10 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) asm volatile("movw %%ds, %0" : : "m" (arch->vex.guest_DS)); asm volatile("movw %%ss, %0" : : "m" (arch->vex.guest_SS)); + /* allocate GDT */ + enum { GDT_ENTRY_SIZE = 2 * sizeof(long), GDT_NUM_ENTRIES = 11 }; + arch->vex.guest_GDT = VG_(malloc)("gdt", GDT_ENTRY_SIZE * GDT_NUM_ENTRIES); + VG_(debugLog)(0, "sched", "GDT @ %p\n", arch->vex.guest_GDT); # else # error Unknown platform diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-linux.c index 19535039d..3250343b5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-linux.c @@ -48,6 +48,7 @@ #include "pub_core_options.h" #include "pub_core_syscall.h" #include "pub_core_tooliface.h" /* VG_TRACK */ +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" /* ThreadArchState */ #include "priv_initimg_pathscan.h" #include "pub_core_initimg.h" /* self */ @@ -455,7 +456,7 @@ Addr setup_client_stack( void* init_sp, stringsize += VG_(strlen)(cauxv->u.a_ptr) + 1; else if (cauxv->a_type == AT_RANDOM) stringsize += 16; - else if (cauxv->a_type == AT_EXECFN) + else if (cauxv->a_type == AT_EXECFN && have_exename) stringsize += VG_(strlen)(VG_(args_the_exename)) + 1; auxsize += sizeof(*cauxv); } @@ -620,7 +621,6 @@ Addr setup_client_stack( void* init_sp, # endif for (; orig_auxv->a_type != AT_NULL; auxv++, orig_auxv++) { - const NSegment *ehdrseg; /* copy the entry... */ *auxv = *orig_auxv; @@ -672,6 +672,14 @@ Addr setup_client_stack( void* init_sp, break; case AT_HWCAP: +# if defined(VGP_arm_linux) + { Bool has_neon = (auxv->u.a_val & VKI_HWCAP_NEON) > 0; + VG_(debugLog)(2, "initimg", + "ARM has-neon from-auxv: %s\n", + has_neon ? "YES" : "NO"); + VG_(machine_arm_set_has_NEON)( has_neon ); + } +# endif break; case AT_DCACHEBSIZE: @@ -717,13 +725,14 @@ Addr setup_client_stack( void* init_sp, break; # if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64_linux) - case AT_SYSINFO_EHDR: + case AT_SYSINFO_EHDR: { /* Trash this, because we don't reproduce it */ - ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr); + const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr); vg_assert(ehdrseg); VG_(am_munmap_valgrind)(ehdrseg->start, ehdrseg->end - ehdrseg->start); auxv->a_type = AT_IGNORE; break; + } # endif case AT_RANDOM: @@ -1032,6 +1041,21 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) // FIXME jrs: what's this for? arch->vex.guest_R1 = iifii.initial_client_SP; +# elif defined(VGP_s390x_linux) + vg_assert(0 == sizeof(VexGuestS390XState) % 16); + + /* Zero out the initial state. This also sets the guest_fpc to 0, which + is also done by the kernel for the fpc during execve. */ + LibVEX_GuestS390X_initialise(&arch->vex); + + /* Zero out the shadow area. */ + VG_(memset)(&arch->vex_shadow1, 0, sizeof(VexGuestS390XState)); + VG_(memset)(&arch->vex_shadow2, 0, sizeof(VexGuestS390XState)); + + /* Put essential stuff into the new state. */ + arch->vex.guest_SP = iifii.initial_client_SP; + arch->vex.guest_IA = iifii.initial_client_IP; + # else # error Unknown platform # endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-pathscan.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-pathscan.c index df47316bd..cca58170c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-pathscan.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_initimg/initimg-pathscan.c @@ -44,7 +44,6 @@ #include "pub_core_ume.h" #include "pub_core_options.h" #include "pub_core_tooliface.h" /* VG_TRACK */ -#include "pub_core_threadstate.h" /* ThreadArchState */ #include "pub_core_initimg.h" /* self */ #include "priv_initimg_pathscan.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcassert.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcassert.c index 0984a4bbc..74fdb2456 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcassert.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcassert.c @@ -31,6 +31,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" @@ -116,13 +117,14 @@ } #elif defined(VGP_arm_linux) # define GET_STARTREGS(srP) \ - { UInt block[5]; \ + { UInt block[6]; \ __asm__ __volatile__( \ "str r15, [%0, #+0];" \ "str r14, [%0, #+4];" \ "str r13, [%0, #+8];" \ "str r12, [%0, #+12];" \ "str r11, [%0, #+16];" \ + "str r7, [%0, #+20];" \ : /* out */ \ : /* in */ "r"(&block[0]) \ : /* trash */ "memory" \ @@ -132,6 +134,23 @@ (srP)->misc.ARM.r14 = block[2]; \ (srP)->misc.ARM.r12 = block[3]; \ (srP)->misc.ARM.r11 = block[4]; \ + (srP)->misc.ARM.r7 = block[5]; \ + } +#elif defined(VGP_s390x_linux) +# define GET_STARTREGS(srP) \ + { ULong ia, sp, fp, lr; \ + __asm__ __volatile__( \ + "bras %0,0f;" \ + "0: lgr %1,15;" \ + "lgr %2,11;" \ + "lgr %3,14;" \ + : "=r" (ia), "=r" (sp),"=r" (fp),"=r" (lr) \ + /* no read & clobber */ \ + ); \ + (srP)->r_pc = ia; \ + (srP)->r_sp = sp; \ + (srP)->misc.S390X.r_fp = fp; \ + (srP)->misc.S390X.r_lr = lr; \ } #else # error Unknown platform diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcbase.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcbase.c index 98ff96b35..6d6a2740f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcbase.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcbase.c @@ -89,6 +89,31 @@ Long VG_(strtoll10) ( Char* str, Char** endptr ) return n; } +ULong VG_(strtoull10) ( Char* str, Char** endptr ) +{ + Bool converted = False; + ULong n = 0; + Long digit = 0; + Char* str0 = str; + + // Skip leading whitespace. + while (VG_(isspace)(*str)) str++; + + // Allow a leading '+'. + if (*str == '+') { str++; } + + while (is_dec_digit(*str, &digit)) { + converted = True; // Ok, we've actually converted a digit. + n = 10*n + digit; + str++; + } + + if (!converted) str = str0; // If nothing converted, endptr points to + // the start of the string. + if (endptr) *endptr = str; // Record first failing character. + return n; +} + Long VG_(strtoll16) ( Char* str, Char** endptr ) { Bool neg = False, converted = False; @@ -122,6 +147,39 @@ Long VG_(strtoll16) ( Char* str, Char** endptr ) return n; } +ULong VG_(strtoull16) ( Char* str, Char** endptr ) +{ + Bool converted = False; + ULong n = 0; + Long digit = 0; + Char* str0 = str; + + // Skip leading whitespace. + while (VG_(isspace)(*str)) str++; + + // Allow a leading '+'. + if (*str == '+') { str++; } + + // Allow leading "0x", but only if there's a hex digit + // following it. + if (*str == '0' + && (*(str+1) == 'x' || *(str+1) == 'X') + && is_hex_digit( *(str+2), &digit )) { + str += 2; + } + + while (is_hex_digit(*str, &digit)) { + converted = True; // Ok, we've actually converted a digit. + n = 16*n + digit; + str++; + } + + if (!converted) str = str0; // If nothing converted, endptr points to + // the start of the string. + if (endptr) *endptr = str; // Record first failing character. + return n; +} + double VG_(strtod) ( Char* str, Char** endptr ) { Bool neg = False; @@ -356,6 +414,88 @@ Char* VG_(strrchr) ( const Char* s, Char c ) return NULL; } +/* (code copied from glib then updated to valgrind types) */ +static Char *olds; +Char * +VG_(strtok) (Char *s, const Char *delim) +{ + return VG_(strtok_r) (s, delim, &olds); +} + +Char * +VG_(strtok_r) (Char* s, const Char* delim, Char** saveptr) +{ + Char *token; + + if (s == NULL) + s = *saveptr; + + /* Scan leading delimiters. */ + s += VG_(strspn (s, delim)); + if (*s == '\0') + { + *saveptr = s; + return NULL; + } + + /* Find the end of the token. */ + token = s; + s = VG_(strpbrk (token, delim)); + if (s == NULL) + /* This token finishes the string. */ + *saveptr = token + VG_(strlen) (token); + else + { + /* Terminate the token and make OLDS point past it. */ + *s = '\0'; + *saveptr = s + 1; + } + return token; +} + +static Bool isHex ( UChar c ) +{ + return ((c >= '0' && c <= '9') || + (c >= 'a' && c <= 'f') || + (c >= 'A' && c <= 'F')); +} + +static UInt fromHex ( UChar c ) +{ + if (c >= '0' && c <= '9') + return (UInt)c - (UInt)'0'; + if (c >= 'a' && c <= 'f') + return 10 + (UInt)c - (UInt)'a'; + if (c >= 'A' && c <= 'F') + return 10 + (UInt)c - (UInt)'A'; + /*NOTREACHED*/ + // ??? need to vg_assert(0); + return 0; +} + +Bool VG_(parse_Addr) ( UChar** ppc, Addr* result ) +{ + Int used, limit = 2 * sizeof(Addr); + if (**ppc != '0') + return False; + (*ppc)++; + if (**ppc != 'x') + return False; + (*ppc)++; + *result = 0; + used = 0; + while (isHex(**ppc)) { + // ??? need to vg_assert(d < fromHex(**ppc)); + *result = ((*result) << 4) | fromHex(**ppc); + (*ppc)++; + used++; + if (used > limit) return False; + } + if (used == 0) + return False; + return True; +} + SizeT VG_(strspn) ( const Char* s, const Char* accpt ) { const Char *p, *a; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcfile.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcfile.c index 112b3c8de..313b9475a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcfile.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcfile.c @@ -120,6 +120,22 @@ Bool VG_(resolve_filename) ( Int fd, HChar* buf, Int n_buf ) # endif } +SysRes VG_(mknod) ( const Char* pathname, Int mode, UWord dev ) +{ +# if defined(VGO_linux) || defined(VGO_aix5) || defined(VGO_darwin) + SysRes res = VG_(do_syscall3)(__NR_mknod, + (UWord)pathname, mode, dev); + +# elif defined(VGO_l4re) + SysRes res; + enter_kdebug("mknod"); + +# else +# error Unknown OS +# endif + return res; +} + SysRes VG_(open) ( const Char* pathname, Int flags, Int mode ) { # if defined(VGO_linux) || defined(VGO_aix5) @@ -159,12 +175,13 @@ SysRes VG_(open) ( const Char* pathname, Int flags, Int mode ) if ((ret = open(pathname, flags, mode)) < 0) { VG_(debugLog)(0, "libcfile", "error opening file %s: %d\n", pathname, ret); - res._isError = True; + res._isError = True; res._err = ret; } else { Int pathname_len; res._isError = False; + res._res = ret; vrm_register_filename(ret, pathname); // XXX: L4Re's read-only file system does an mmap() somewhen! @@ -198,8 +215,6 @@ SysRes VG_(open) ( const Char* pathname, Int flags, Int mode ) VG_(debugLog)(0, "libcfile", "## %s: open %s ret=%d\n", __func__, sr_isError(res) ? "failed" : "successful", ret ); #endif - res._isError = False; - res._res = ret; #undef DEBUG_MYSELF # else @@ -208,6 +223,16 @@ SysRes VG_(open) ( const Char* pathname, Int flags, Int mode ) return res; } +Int VG_(fd_open) (const Char* pathname, Int flags, Int mode) +{ + SysRes sr; + sr = VG_(open) (pathname, flags, mode); + if (sr_isError (sr)) + return -1; + else + return sr_Res (sr); +} + void VG_(close) ( Int fd ) { /* Hmm. Return value is not checked. That's uncool. */ @@ -619,6 +644,19 @@ Bool VG_(get_startup_wd) ( Char* buf, SizeT size ) return True; } +Int VG_(poll) (struct vki_pollfd *fds, Int nfds, Int timeout) +{ +#ifdef VGO_l4re + enter_kdebug("poll"); + return -1; +#else + SysRes res; + res = VG_(do_syscall3)(__NR_poll, (UWord)fds, nfds, timeout); + return sr_isError(res) ? -1 : sr_Res(res); +#endif +} + + Int VG_(readlink) (const Char* path, Char* buf, UInt bufsiz) { #ifdef VGO_l4re @@ -832,7 +870,7 @@ Int VG_(mkstemp) ( HChar* part_of_name, /*OUT*/HChar* fullname ) tries = 0; while (True) { - if (tries > 10) + if (tries++ > 10) return -1; VG_(sprintf)( buf, "/tmp/valgrind_%s_%08x", part_of_name, VG_(random)( &seed )); @@ -1015,7 +1053,7 @@ static Int parse_inet_addr_and_port ( UChar* str, UInt* ip_addr, UShort* port ) Int VG_(socket) ( Int domain, Int type, Int protocol ) { # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[3]; args[0] = domain; @@ -1056,7 +1094,7 @@ static Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen ) { # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[3]; args[0] = sockfd; @@ -1096,7 +1134,7 @@ Int VG_(write_socket)( Int sd, void *msg, Int count ) SIGPIPE */ # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[4]; args[0] = sd; @@ -1128,7 +1166,7 @@ Int VG_(write_socket)( Int sd, void *msg, Int count ) Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen) { # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[3]; args[0] = sd; @@ -1160,7 +1198,7 @@ Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen) Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen) { # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[3]; args[0] = sd; @@ -1193,7 +1231,7 @@ Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval, Int *optlen) { # if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \ - || defined(VGP_ppc64_linux) + || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) SysRes res; UWord args[5]; args[0] = sd; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcprint.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcprint.c index 389fd4c18..fb2544d51 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcprint.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcprint.c @@ -31,6 +31,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_debuglog.h" +#include "pub_core_gdbserver.h" #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcfile.h" // VG_(write)(), VG_(write_socket)() @@ -47,7 +48,10 @@ /* The destination sinks for normal and XML output. These have their initial values here; they are set to final values by m_main.main_process_cmd_line_options(). See comment at the top of - that function for the associated logic. */ + that function for the associated logic. + After startup, the gdbserver monitor command might temporarily + set the fd of log_output_sink to -2 to indicate that output is + to be given to gdb rather than output to the startup fd */ OutputSink VG_(log_output_sink) = { 2, False }; /* 2 = stderr */ OutputSink VG_(xml_output_sink) = { -1, False }; /* disabled */ @@ -70,6 +74,8 @@ void send_bytes_to_logging_sink ( OutputSink* sink, Char* msg, Int nbytes ) any more output. */ if (sink->fd >= 0) VG_(write)( sink->fd, msg, nbytes ); + else if (sink->fd == -2) + VG_(gdb_printf)("%s", msg); } } @@ -107,7 +113,7 @@ static UInt vprintf_to_buf ( printf_buf_t* b, const HChar *format, va_list vargs ) { UInt ret = 0; - if (b->sink->fd >= 0) { + if (b->sink->fd >= 0 || b->sink->fd == -2) { ret = VG_(debugLog_vprintf) ( add_to__printf_buf, b, format, vargs ); } @@ -233,14 +239,13 @@ static void add_to__snprintf_buf ( HChar c, void* p ) UInt VG_(vsnprintf) ( Char* buf, Int size, const HChar *format, va_list vargs ) { - Int ret; snprintf_buf_t b; b.buf = buf; b.buf_size = size < 0 ? 0 : size; b.buf_used = 0; - ret = VG_(debugLog_vprintf) - ( add_to__snprintf_buf, &b, format, vargs ); + (void) VG_(debugLog_vprintf) + ( add_to__snprintf_buf, &b, format, vargs ); return b.buf_used; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcproc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcproc.c index 1ac94ec2d..64519c93c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcproc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcproc.c @@ -96,8 +96,10 @@ Char *VG_(getenv)(Char *varname) void VG_(env_unsetenv) ( Char **env, const Char *varname ) { - Char **from; - Char **to = NULL; + Char **from, **to; + vg_assert(env); + vg_assert(varname); + to = NULL; Int len = VG_(strlen)(varname); for (from = to = env; from && *from; from++) { @@ -310,6 +312,7 @@ Char **VG_(env_clone) ( Char **oldenv ) Char **newenv; Int envlen; + vg_assert(oldenv); for (oldenvp = oldenv; oldenvp && *oldenvp; oldenvp++); envlen = oldenvp - oldenv + 1; @@ -439,6 +442,21 @@ Int VG_(setrlimit) (Int resource, const struct vki_rlimit *rlim) #endif } +/* Support for prctl. */ +Int VG_(prctl) (Int option, + ULong arg2, ULong arg3, ULong arg4, ULong arg5) +{ + SysRes res = VG_(mk_SysRes_Error)(VKI_ENOSYS); +# if defined(VGO_linux) + /* res = prctl( option, arg2, arg3, arg4, arg5 ); */ + res = VG_(do_syscall5)(__NR_prctl, (UWord) option, + (UWord) arg2, (UWord) arg3, (UWord) arg4, + (UWord) arg5); +# endif + + return sr_isError(res) ? -1 : sr_Res(res); +} + /* --------------------------------------------------------------------- pids, etc ------------------------------------------------------------------ */ @@ -592,7 +610,7 @@ Int VG_(getgroups)( Int size, UInt* list ) # elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux) \ || defined(VGP_arm_linux) \ || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) \ - || defined(VGO_darwin) + || defined(VGO_darwin) || defined(VGP_s390x_linux) SysRes sres; sres = VG_(do_syscall2)(__NR_getgroups, size, (Addr)list); if (sr_isError(sres)) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcsetjmp.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcsetjmp.c new file mode 100644 index 000000000..3ca3303e4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_libcsetjmp.c @@ -0,0 +1,276 @@ + +/*--------------------------------------------------------------------*/ +/*--- A minimal setjmp/longjmp implementation. m_libcsetjmp.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2010-2010 Mozilla 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Julian Seward */ + + +#include "pub_core_basics.h" +#include "pub_core_libcsetjmp.h" /* self */ + + +/* See include/pub_tool_libcsetjmp.h for background and rationale. */ + +/* The only alternative implementations are for ppc{32,64}-linux. See + #259977. */ + +/* ------------ ppc32-linux ------------ */ + +#if defined(VGP_ppc32_linux) + +__asm__( +".text" "\n" +"" "\n" +".global VG_MINIMAL_SETJMP" "\n" // r3 = jmp_buf +"VG_MINIMAL_SETJMP:" "\n" +" stw 0, 0(3)" "\n" +" stw 1, 4(3)" "\n" +" stw 2, 8(3)" "\n" +" stw 3, 12(3)" "\n" +" stw 4, 16(3)" "\n" +" stw 5, 20(3)" "\n" +" stw 6, 24(3)" "\n" +" stw 7, 28(3)" "\n" +" stw 8, 32(3)" "\n" +" stw 9, 36(3)" "\n" +" stw 10, 40(3)" "\n" +" stw 11, 44(3)" "\n" +" stw 12, 48(3)" "\n" +" stw 13, 52(3)" "\n" +" stw 14, 56(3)" "\n" +" stw 15, 60(3)" "\n" +" stw 16, 64(3)" "\n" +" stw 17, 68(3)" "\n" +" stw 18, 72(3)" "\n" +" stw 19, 76(3)" "\n" +" stw 20, 80(3)" "\n" +" stw 21, 84(3)" "\n" +" stw 22, 88(3)" "\n" +" stw 23, 92(3)" "\n" +" stw 24, 96(3)" "\n" +" stw 25, 100(3)" "\n" +" stw 26, 104(3)" "\n" +" stw 27, 108(3)" "\n" +" stw 28, 112(3)" "\n" +" stw 29, 116(3)" "\n" +" stw 30, 120(3)" "\n" +" stw 31, 124(3)" "\n" + // must use a caller-save register here as scratch, hence r4 +" mflr 4" "\n" +" stw 4, 128(3)" "\n" +" mfcr 4" "\n" +" stw 4, 132(3)" "\n" +" li 3, 0" "\n" +" blr" "\n" +"" "\n" + + +".global VG_MINIMAL_LONGJMP" "\n" +"VG_MINIMAL_LONGJMP:" "\n" // r3 = jmp_buf + // do r4 = 1 + // and park it in the restore slot for r3 (the ret reg) +" li 4, 1" "\n" +" stw 4, 12(3)" "\n" + // restore everything except r3 + // then r3 last of all + // then blr +" lwz 0, 128(3)" "\n" +" mtlr 0" "\n" +" lwz 0, 132(3)" "\n" +" mtcr 0" "\n" +" lwz 0, 0(3)" "\n" +" lwz 1, 4(3)" "\n" +" lwz 2, 8(3)" "\n" + // r3 is done at the end +" lwz 4, 16(3)" "\n" +" lwz 5, 20(3)" "\n" +" lwz 6, 24(3)" "\n" +" lwz 7, 28(3)" "\n" +" lwz 8, 32(3)" "\n" +" lwz 9, 36(3)" "\n" +" lwz 10, 40(3)" "\n" +" lwz 11, 44(3)" "\n" +" lwz 12, 48(3)" "\n" +" lwz 13, 52(3)" "\n" +" lwz 14, 56(3)" "\n" +" lwz 15, 60(3)" "\n" +" lwz 16, 64(3)" "\n" +" lwz 17, 68(3)" "\n" +" lwz 18, 72(3)" "\n" +" lwz 19, 76(3)" "\n" +" lwz 20, 80(3)" "\n" +" lwz 21, 84(3)" "\n" +" lwz 22, 88(3)" "\n" +" lwz 23, 92(3)" "\n" +" lwz 24, 96(3)" "\n" +" lwz 25, 100(3)" "\n" +" lwz 26, 104(3)" "\n" +" lwz 27, 108(3)" "\n" +" lwz 28, 112(3)" "\n" +" lwz 29, 116(3)" "\n" +" lwz 30, 120(3)" "\n" +" lwz 31, 124(3)" "\n" +" lwz 3, 12(3)" "\n" +" blr" "\n" +"" "\n" + +".previous" "\n" +); + +#endif /* VGP_ppc32_linux */ + + +/* ------------ ppc64-linux ------------ */ + +#if defined(VGP_ppc64_linux) + +__asm__( +".section \".toc\",\"aw\"" "\n" + +".section \".text\"" "\n" +".align 2" "\n" +".p2align 4,,15" "\n" +".globl VG_MINIMAL_SETJMP" "\n" + +".section \".opd\",\"aw\"" "\n" +".align 3" "\n" +"VG_MINIMAL_SETJMP:" "\n" +".quad .L.VG_MINIMAL_SETJMP,.TOC.@tocbase,0" "\n" +".previous" "\n" + +".type VG_MINIMAL_SETJMP, @function" "\n" +".L.VG_MINIMAL_SETJMP:" "\n" +" std 0, 0(3)" "\n" +" std 1, 8(3)" "\n" +" std 2, 16(3)" "\n" +" std 3, 24(3)" "\n" +" std 4, 32(3)" "\n" +" std 5, 40(3)" "\n" +" std 6, 48(3)" "\n" +" std 7, 56(3)" "\n" +" std 8, 64(3)" "\n" +" std 9, 72(3)" "\n" +" std 10, 80(3)" "\n" +" std 11, 88(3)" "\n" +" std 12, 96(3)" "\n" +" std 13, 104(3)" "\n" +" std 14, 112(3)" "\n" +" std 15, 120(3)" "\n" +" std 16, 128(3)" "\n" +" std 17, 136(3)" "\n" +" std 18, 144(3)" "\n" +" std 19, 152(3)" "\n" +" std 20, 160(3)" "\n" +" std 21, 168(3)" "\n" +" std 22, 176(3)" "\n" +" std 23, 184(3)" "\n" +" std 24, 192(3)" "\n" +" std 25, 200(3)" "\n" +" std 26, 208(3)" "\n" +" std 27, 216(3)" "\n" +" std 28, 224(3)" "\n" +" std 29, 232(3)" "\n" +" std 30, 240(3)" "\n" +" std 31, 248(3)" "\n" + // must use a caller-save register here as scratch, hence r4 +" mflr 4" "\n" +" std 4, 256(3)" "\n" +" mfcr 4" "\n" +" std 4, 264(3)" "\n" +" li 3, 0" "\n" +" blr" "\n" +"" "\n" + + +".globl VG_MINIMAL_LONGJMP" "\n" + +".section \".opd\",\"aw\"" "\n" +".align 3" "\n" +"VG_MINIMAL_LONGJMP:" "\n" +".quad .L.VG_MINIMAL_LONGJMP,.TOC.@tocbase,0" "\n" +".previous" "\n" + +".type VG_MINIMAL_LONGJMP, @function" "\n" +".L.VG_MINIMAL_LONGJMP:" "\n" + // do r4 = 1 + // and park it in the restore slot for r3 (the ret reg) +" li 4, 1" "\n" +" std 4, 24(3)" "\n" + // restore everything except r3 + // then r3 last of all + // then blr +" ld 0, 256(3)" "\n" +" mtlr 0" "\n" +" ld 0, 264(3)" "\n" +" mtcr 0" "\n" +" ld 0, 0(3)" "\n" +" ld 1, 8(3)" "\n" +" ld 2, 16(3)" "\n" + // r3 is done at the end +" ld 4, 32(3)" "\n" +" ld 5, 40(3)" "\n" +" ld 6, 48(3)" "\n" +" ld 7, 56(3)" "\n" +" ld 8, 64(3)" "\n" +" ld 9, 72(3)" "\n" +" ld 10, 80(3)" "\n" +" ld 11, 88(3)" "\n" +" ld 12, 96(3)" "\n" +" ld 13, 104(3)" "\n" +" ld 14, 112(3)" "\n" +" ld 15, 120(3)" "\n" +" ld 16, 128(3)" "\n" +" ld 17, 136(3)" "\n" +" ld 18, 144(3)" "\n" +" ld 19, 152(3)" "\n" +" ld 20, 160(3)" "\n" +" ld 21, 168(3)" "\n" +" ld 22, 176(3)" "\n" +" ld 23, 184(3)" "\n" +" ld 24, 192(3)" "\n" +" ld 25, 200(3)" "\n" +" ld 26, 208(3)" "\n" +" ld 27, 216(3)" "\n" +" ld 28, 224(3)" "\n" +" ld 29, 232(3)" "\n" +" ld 30, 240(3)" "\n" +" ld 31, 248(3)" "\n" +" ld 3, 24(3)" "\n" +" blr" "\n" +"" "\n" + +".previous" "\n" +".previous" "\n" +); + + +#endif /* VGP_ppc64_linux */ + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_machine.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_machine.c index 76e62290d..41248b8fe 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_machine.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_machine.c @@ -1,4 +1,3 @@ - /*--------------------------------------------------------------------*/ /*--- Machine-related stuff. m_machine.c ---*/ /*--------------------------------------------------------------------*/ @@ -30,9 +29,12 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // setjmp facilities #include "pub_core_threadstate.h" #include "pub_core_libcassert.h" #include "pub_core_libcbase.h" +#include "pub_core_libcfile.h" +#include "pub_core_mallocfree.h" #include "pub_core_machine.h" #include "pub_core_cpuid.h" #include "pub_core_libcsignal.h" // for ppc32 messing with SIGILL and SIGFPE @@ -92,6 +94,15 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, = VG_(threads)[tid].arch.vex.guest_R12; regs->misc.ARM.r11 = VG_(threads)[tid].arch.vex.guest_R11; + regs->misc.ARM.r7 + = VG_(threads)[tid].arch.vex.guest_R7; +# elif defined(VGA_s390x) + regs->r_pc = (ULong)VG_(threads)[tid].arch.vex.guest_IA; + regs->r_sp = (ULong)VG_(threads)[tid].arch.vex.guest_SP; + regs->misc.S390X.r_fp + = VG_(threads)[tid].arch.vex.guest_r11; + regs->misc.S390X.r_lr + = VG_(threads)[tid].arch.vex.guest_r14; # else # error "Unknown arch" # endif @@ -123,6 +134,9 @@ void VG_(set_syscall_return_shadows) ( ThreadId tid, VG_(threads)[tid].arch.vex_shadow2.guest_GPR4 = s2err; # elif defined(VGO_darwin) // GrP fixme darwin syscalls may return more values (2 registers plus error) +# elif defined(VGP_s390x_linux) + VG_(threads)[tid].arch.vex_shadow1.guest_r2 = s1res; + VG_(threads)[tid].arch.vex_shadow2.guest_r2 = s2res; # else # error "Unknown plat" # endif @@ -255,6 +269,23 @@ static void apply_to_GPs_of_tid(VexGuestArchState* vex, void (*f)(Addr)) (*f)(vex->guest_R12); (*f)(vex->guest_R13); (*f)(vex->guest_R14); +#elif defined(VGA_s390x) + (*f)(vex->guest_r0); + (*f)(vex->guest_r1); + (*f)(vex->guest_r2); + (*f)(vex->guest_r3); + (*f)(vex->guest_r4); + (*f)(vex->guest_r5); + (*f)(vex->guest_r6); + (*f)(vex->guest_r7); + (*f)(vex->guest_r8); + (*f)(vex->guest_r9); + (*f)(vex->guest_r10); + (*f)(vex->guest_r11); + (*f)(vex->guest_r12); + (*f)(vex->guest_r13); + (*f)(vex->guest_r14); + (*f)(vex->guest_r15); #else # error Unknown arch #endif @@ -310,6 +341,20 @@ SizeT VG_(thread_get_stack_size)(ThreadId tid) return VG_(threads)[tid].client_stack_szB; } +Addr VG_(thread_get_altstack_min)(ThreadId tid) +{ + vg_assert(0 <= tid && tid < VG_N_THREADS && tid != VG_INVALID_THREADID); + vg_assert(VG_(threads)[tid].status != VgTs_Empty); + return (Addr)VG_(threads)[tid].altstack.ss_sp; +} + +SizeT VG_(thread_get_altstack_size)(ThreadId tid) +{ + vg_assert(0 <= tid && tid < VG_N_THREADS && tid != VG_INVALID_THREADID); + vg_assert(VG_(threads)[tid].status != VgTs_Empty); + return VG_(threads)[tid].altstack.ss_size; +} + //------------------------------------------------------------- /* Details about the capabilities of the underlying (host) CPU. These details are acquired by (1) enquiring with the CPU at startup, or @@ -341,6 +386,11 @@ SizeT VG_(thread_get_stack_size)(ThreadId tid) then safe to use VG_(machine_get_VexArchInfo) and VG_(machine_ppc64_has_VMX) + ------------- + s390x: initially: call VG_(machine_get_hwcaps) + + then safe to use VG_(machine_get_VexArchInfo) + VG_(machine_get_hwcaps) may use signals (although it attempts to leave signal state unchanged) and therefore should only be called before m_main sets up the client's signal state. @@ -367,17 +417,191 @@ ULong VG_(machine_ppc64_has_VMX) = 0; Int VG_(machine_arm_archlevel) = 4; #endif +/* fixs390: anything for s390x here ? */ + +/* For hwcaps detection on ppc32/64, s390x, and arm we'll need to do SIGILL + testing, so we need a VG_MINIMAL_JMP_BUF. */ +#if defined(VGA_ppc32) || defined(VGA_ppc64) \ + || defined(VGA_arm) || defined(VGA_s390x) +#include "pub_tool_libcsetjmp.h" +static VG_MINIMAL_JMP_BUF(env_unsup_insn); +static void handler_unsup_insn ( Int x ) { + VG_MINIMAL_LONGJMP(env_unsup_insn); +} +#endif + + +/* Helper function for VG_(machine_get_hwcaps), assumes the SIGILL/etc + * handlers are installed. Determines the the sizes affected by dcbz + * and dcbzl instructions and updates the given VexArchInfo structure + * accordingly. + * + * Not very defensive: assumes that as long as the dcbz/dcbzl + * instructions don't raise a SIGILL, that they will zero an aligned, + * contiguous block of memory of a sensible size. */ +#if defined(VGA_ppc32) || defined(VGA_ppc64) +static void find_ppc_dcbz_sz(VexArchInfo *arch_info) +{ + Int dcbz_szB = 0; + Int dcbzl_szB; +# define MAX_DCBZL_SZB (128) /* largest known effect of dcbzl */ + char test_block[4*MAX_DCBZL_SZB]; + char *aligned = test_block; + Int i; + + /* round up to next max block size, assumes MAX_DCBZL_SZB is pof2 */ + aligned = (char *)(((HWord)aligned + MAX_DCBZL_SZB) & ~(MAX_DCBZL_SZB - 1)); + vg_assert((aligned + MAX_DCBZL_SZB) <= &test_block[sizeof(test_block)]); + + /* dcbz often clears 32B, although sometimes whatever the native cache + * block size is */ + VG_(memset)(test_block, 0xff, sizeof(test_block)); + __asm__ __volatile__("dcbz 0,%0" + : /*out*/ + : "r" (aligned) /*in*/ + : "memory" /*clobber*/); + for (dcbz_szB = 0, i = 0; i < sizeof(test_block); ++i) { + if (!test_block[i]) + ++dcbz_szB; + } + vg_assert(dcbz_szB == 32 || dcbz_szB == 64 || dcbz_szB == 128); + + /* dcbzl clears 128B on G5/PPC970, and usually 32B on other platforms */ + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + dcbzl_szB = 0; /* indicates unsupported */ + } + else { + VG_(memset)(test_block, 0xff, sizeof(test_block)); + /* some older assemblers won't understand the dcbzl instruction + * variant, so we directly emit the instruction ourselves */ + __asm__ __volatile__("mr 9, %0 ; .long 0x7C204FEC" /*dcbzl 0,9*/ + : /*out*/ + : "r" (aligned) /*in*/ + : "memory", "r9" /*clobber*/); + for (dcbzl_szB = 0, i = 0; i < sizeof(test_block); ++i) { + if (!test_block[i]) + ++dcbzl_szB; + } + vg_assert(dcbzl_szB == 32 || dcbzl_szB == 64 || dcbzl_szB == 128); + } + + arch_info->ppc_dcbz_szB = dcbz_szB; + arch_info->ppc_dcbzl_szB = dcbzl_szB; + + VG_(debugLog)(1, "machine", "dcbz_szB=%d dcbzl_szB=%d\n", + dcbz_szB, dcbzl_szB); +# undef MAX_DCBZL_SZB +} +#endif /* defined(VGA_ppc32) || defined(VGA_ppc64) */ + +#ifdef VGA_s390x + +/* Read /proc/cpuinfo. Look for lines like these + + processor 0: version = FF, identification = 0117C9, machine = 2064 + + and return the machine model or VEX_S390X_MODEL_INVALID on error. */ + +static UInt VG_(get_machine_model)(void) +{ + static struct model_map { + HChar name[5]; + UInt id; + } model_map[] = { + { "2064", VEX_S390X_MODEL_Z900 }, + { "2066", VEX_S390X_MODEL_Z800 }, + { "2084", VEX_S390X_MODEL_Z990 }, + { "2086", VEX_S390X_MODEL_Z890 }, + { "2094", VEX_S390X_MODEL_Z9_EC }, + { "2096", VEX_S390X_MODEL_Z9_BC }, + { "2097", VEX_S390X_MODEL_Z10_EC }, + { "2098", VEX_S390X_MODEL_Z10_BC }, + { "2817", VEX_S390X_MODEL_Z196 }, + }; + + Int model, n, fh; + SysRes fd; + SizeT num_bytes, file_buf_size; + HChar *p, *m, *model_name, *file_buf; + + /* Slurp contents of /proc/cpuinfo into FILE_BUF */ + fd = VG_(open)( "/proc/cpuinfo", 0, VKI_S_IRUSR ); + if ( sr_isError(fd) ) return VEX_S390X_MODEL_INVALID; + + fh = sr_Res(fd); + + /* Determine the size of /proc/cpuinfo. + Work around broken-ness in /proc file system implementation. + fstat returns a zero size for /proc/cpuinfo although it is + claimed to be a regular file. */ + num_bytes = 0; + file_buf_size = 1000; + file_buf = VG_(malloc)("cpuinfo", file_buf_size + 1); + while (42) { + n = VG_(read)(fh, file_buf, file_buf_size); + if (n < 0) break; + + num_bytes += n; + if (n < file_buf_size) break; /* reached EOF */ + } + + if (n < 0) num_bytes = 0; /* read error; ignore contents */ + + if (num_bytes > file_buf_size) { + VG_(free)( file_buf ); + VG_(lseek)( fh, 0, VKI_SEEK_SET ); + file_buf = VG_(malloc)( "cpuinfo", num_bytes + 1 ); + n = VG_(read)( fh, file_buf, num_bytes ); + if (n < 0) num_bytes = 0; + } + + file_buf[num_bytes] = '\0'; + VG_(close)(fh); + + /* Parse file */ + model = VEX_S390X_MODEL_INVALID; + for (p = file_buf; *p; ++p) { + /* Beginning of line */ + if (VG_(strncmp)( p, "processor", sizeof "processor" - 1 ) != 0) continue; + + m = VG_(strstr)( p, "machine" ); + if (m == NULL) continue; + + p = m + sizeof "machine" - 1; + while ( VG_(isspace)( *p ) || *p == '=') { + if (*p == '\n') goto next_line; + ++p; + } + + model_name = p; + for (n = 0; n < sizeof model_map / sizeof model_map[0]; ++n) { + struct model_map *mm = model_map + n; + SizeT len = VG_(strlen)( mm->name ); + if ( VG_(strncmp)( mm->name, model_name, len ) == 0 && + VG_(isspace)( model_name[len] )) { + if (mm->id < model) model = mm->id; + p = model_name + len; + break; + } + } + /* Skip until end-of-line */ + while (*p != '\n') + ++p; + next_line: ; + } + + VG_(free)( file_buf ); + VG_(debugLog)(1, "machine", "model = %s\n", model_map[model].name); + + return model; +} + +#endif /* VGA_s390x */ /* Determine what insn set and insn set variant the host has, and record it. To be called once at system startup. Returns False if this a CPU incapable of running Valgrind. */ -#if defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm) -#include // For jmp_buf -static jmp_buf env_unsup_insn; -static void handler_unsup_insn ( Int x ) { __builtin_longjmp(env_unsup_insn,1); } -#endif - Bool VG_(machine_get_hwcaps)( void ) { vg_assert(hwcaps_done == False); @@ -389,7 +613,7 @@ Bool VG_(machine_get_hwcaps)( void ) #if defined(VGA_x86) { Bool have_sse1, have_sse2, have_cx8, have_lzcnt; - UInt eax, ebx, ecx, edx, max_basic, max_extended; + UInt eax, ebx, ecx, edx, max_extended; UChar vstr[13]; vstr[0] = 0; @@ -404,7 +628,6 @@ Bool VG_(machine_get_hwcaps)( void ) /* Get processor ID string, and max basic/extended index values. */ - max_basic = eax; VG_(memcpy)(&vstr[0], &ebx, 4); VG_(memcpy)(&vstr[4], &edx, 4); VG_(memcpy)(&vstr[8], &ecx, 4); @@ -458,9 +681,9 @@ Bool VG_(machine_get_hwcaps)( void ) } #elif defined(VGA_amd64) - { Bool have_sse1, have_sse2, have_sse3, have_cx8, have_cx16; + { Bool have_sse3, have_cx8, have_cx16; Bool have_lzcnt; - UInt eax, ebx, ecx, edx, max_basic, max_extended; + UInt eax, ebx, ecx, edx, max_extended; UChar vstr[13]; vstr[0] = 0; @@ -475,7 +698,6 @@ Bool VG_(machine_get_hwcaps)( void ) /* Get processor ID string, and max basic/extended index values. */ - max_basic = eax; VG_(memcpy)(&vstr[0], &ebx, 4); VG_(memcpy)(&vstr[4], &edx, 4); VG_(memcpy)(&vstr[8], &ecx, 4); @@ -487,8 +709,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* get capabilities bits into edx */ VG_(cpuid)(1, &eax, &ebx, &ecx, &edx); - have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */ - have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */ + // we assume that SSE1 and SSE2 are available by default have_sse3 = (ecx & (1<<0)) != 0; /* True => have sse3 insns */ // ssse3 is ecx:9 // sse41 is ecx:19 @@ -531,7 +752,7 @@ Bool VG_(machine_get_hwcaps)( void ) vki_sigaction_fromK_t saved_sigill_act, saved_sigfpe_act; vki_sigaction_toK_t tmp_sigill_act, tmp_sigfpe_act; - volatile Bool have_F, have_V, have_FX, have_GX; + volatile Bool have_F, have_V, have_FX, have_GX, have_VX; Int r; /* This is a kludge. Really we ought to back-convert saved_act @@ -575,7 +796,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* standard FP insns */ have_F = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_F = False; } else { __asm__ __volatile__(".long 0xFC000090"); /*fmr 0,0 */ @@ -583,7 +804,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* Altivec insns */ have_V = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_V = False; } else { /* Unfortunately some older assemblers don't speak Altivec (or @@ -596,7 +817,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* General-Purpose optional (fsqrt, fsqrts) */ have_FX = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_FX = False; } else { __asm__ __volatile__(".long 0xFC00002C"); /*fsqrt 0,0 */ @@ -604,20 +825,34 @@ Bool VG_(machine_get_hwcaps)( void ) /* Graphics optional (stfiwx, fres, frsqrte, fsel) */ have_GX = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_GX = False; } else { __asm__ __volatile__(".long 0xFC000034"); /* frsqrte 0,0 */ } + /* VSX support implies Power ISA 2.06 */ + have_VX = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_VX = False; + } else { + __asm__ __volatile__(".long 0xf0000564"); /* xsabsdp XT,XB */ + } + + + /* determine dcbz/dcbzl sizes while we still have the signal + * handlers registered */ + find_ppc_dcbz_sz(&vai); + r = VG_(sigaction)(VKI_SIGILL, &saved_sigill_act, NULL); vg_assert(r == 0); r = VG_(sigaction)(VKI_SIGFPE, &saved_sigfpe_act, NULL); vg_assert(r == 0); r = VG_(sigprocmask)(VKI_SIG_SETMASK, &saved_set, NULL); vg_assert(r == 0); - VG_(debugLog)(1, "machine", "F %d V %d FX %d GX %d\n", - (Int)have_F, (Int)have_V, (Int)have_FX, (Int)have_GX); + VG_(debugLog)(1, "machine", "F %d V %d FX %d GX %d VX %d\n", + (Int)have_F, (Int)have_V, (Int)have_FX, + (Int)have_GX, (Int)have_VX); /* Make FP a prerequisite for VMX (bogusly so), and for FX and GX. */ if (have_V && !have_F) have_V = False; @@ -636,6 +871,7 @@ Bool VG_(machine_get_hwcaps)( void ) if (have_V) vai.hwcaps |= VEX_HWCAPS_PPC32_V; if (have_FX) vai.hwcaps |= VEX_HWCAPS_PPC32_FX; if (have_GX) vai.hwcaps |= VEX_HWCAPS_PPC32_GX; + if (have_VX) vai.hwcaps |= VEX_HWCAPS_PPC32_VX; /* But we're not done yet: VG_(machine_ppc32_set_clszB) must be called before we're ready to go. */ @@ -649,7 +885,7 @@ Bool VG_(machine_get_hwcaps)( void ) vki_sigaction_fromK_t saved_sigill_act, saved_sigfpe_act; vki_sigaction_toK_t tmp_sigill_act, tmp_sigfpe_act; - volatile Bool have_F, have_V, have_FX, have_GX; + volatile Bool have_F, have_V, have_FX, have_GX, have_VX; Int r; /* This is a kludge. Really we ought to back-convert saved_act @@ -690,7 +926,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* standard FP insns */ have_F = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_F = False; } else { __asm__ __volatile__("fmr 0,0"); @@ -698,7 +934,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* Altivec insns */ have_V = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_V = False; } else { __asm__ __volatile__(".long 0x10000484"); /*vor 0,0,0*/ @@ -706,7 +942,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* General-Purpose optional (fsqrt, fsqrts) */ have_FX = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_FX = False; } else { __asm__ __volatile__(".long 0xFC00002C"); /*fsqrt 0,0*/ @@ -714,17 +950,30 @@ Bool VG_(machine_get_hwcaps)( void ) /* Graphics optional (stfiwx, fres, frsqrte, fsel) */ have_GX = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_GX = False; } else { __asm__ __volatile__(".long 0xFC000034"); /*frsqrte 0,0*/ } + /* VSX support implies Power ISA 2.06 */ + have_VX = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_VX = False; + } else { + __asm__ __volatile__(".long 0xf0000564"); /* xsabsdp XT,XB */ + } + + /* determine dcbz/dcbzl sizes while we still have the signal + * handlers registered */ + find_ppc_dcbz_sz(&vai); + VG_(sigaction)(VKI_SIGILL, &saved_sigill_act, NULL); VG_(sigaction)(VKI_SIGFPE, &saved_sigfpe_act, NULL); VG_(sigprocmask)(VKI_SIG_SETMASK, &saved_set, NULL); - VG_(debugLog)(1, "machine", "F %d V %d FX %d GX %d\n", - (Int)have_F, (Int)have_V, (Int)have_FX, (Int)have_GX); + VG_(debugLog)(1, "machine", "F %d V %d FX %d GX %d VX %d\n", + (Int)have_F, (Int)have_V, (Int)have_FX, + (Int)have_GX, (Int)have_VX); /* on ppc64, if we don't even have FP, just give up. */ if (!have_F) return False; @@ -737,12 +986,120 @@ Bool VG_(machine_get_hwcaps)( void ) if (have_V) vai.hwcaps |= VEX_HWCAPS_PPC64_V; if (have_FX) vai.hwcaps |= VEX_HWCAPS_PPC64_FX; if (have_GX) vai.hwcaps |= VEX_HWCAPS_PPC64_GX; + if (have_VX) vai.hwcaps |= VEX_HWCAPS_PPC64_VX; /* But we're not done yet: VG_(machine_ppc64_set_clszB) must be called before we're ready to go. */ return True; } +#elif defined(VGA_s390x) + { + /* Instruction set detection code borrowed from ppc above. */ + vki_sigset_t saved_set, tmp_set; + vki_sigaction_fromK_t saved_sigill_act; + vki_sigaction_toK_t tmp_sigill_act; + + volatile Bool have_LDISP, have_EIMM, have_GIE, have_DFP, have_FGX; + Int r, model; + + /* Unblock SIGILL and stash away the old action for that signal */ + VG_(sigemptyset)(&tmp_set); + VG_(sigaddset)(&tmp_set, VKI_SIGILL); + + r = VG_(sigprocmask)(VKI_SIG_UNBLOCK, &tmp_set, &saved_set); + vg_assert(r == 0); + + r = VG_(sigaction)(VKI_SIGILL, NULL, &saved_sigill_act); + vg_assert(r == 0); + tmp_sigill_act = saved_sigill_act; + + /* NODEFER: signal handler does not return (from the kernel's point of + view), hence if it is to successfully catch a signal more than once, + we need the NODEFER flag. */ + tmp_sigill_act.sa_flags &= ~VKI_SA_RESETHAND; + tmp_sigill_act.sa_flags &= ~VKI_SA_SIGINFO; + tmp_sigill_act.sa_flags |= VKI_SA_NODEFER; + tmp_sigill_act.ksa_handler = handler_unsup_insn; + VG_(sigaction)(VKI_SIGILL, &tmp_sigill_act, NULL); + + /* Determine hwcaps. Note, we cannot use the stfle insn because it + is not supported on z900. */ + + have_LDISP = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_LDISP = False; + } else { + /* BASR loads the address of the next insn into r1. Needed to avoid + a segfault in XY. */ + __asm__ __volatile__("basr %%r1,%%r0\n\t" + ".long 0xe3001000\n\t" /* XY 0,0(%r1) */ + ".short 0x0057" : : : "r0", "r1", "cc", "memory"); + } + + have_EIMM = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_EIMM = False; + } else { + __asm__ __volatile__(".long 0xc0090000\n\t" /* iilf r0,0 */ + ".short 0x0000" : : : "r0", "memory"); + } + + have_GIE = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_GIE = False; + } else { + __asm__ __volatile__(".long 0xc2010000\n\t" /* msfi r0,0 */ + ".short 0x0000" : : : "r0", "memory"); + } + + have_DFP = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_DFP = False; + } else { + __asm__ __volatile__(".long 0xb3d20000" + : : : "r0", "cc", "memory"); /* adtr r0,r0,r0 */ + } + + have_FGX = True; + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { + have_FGX = False; + } else { + __asm__ __volatile__(".long 0xb3cd0000" : : : "r0"); /* lgdr r0,f0 */ + } + + /* Restore signals */ + r = VG_(sigaction)(VKI_SIGILL, &saved_sigill_act, NULL); + vg_assert(r == 0); + r = VG_(sigprocmask)(VKI_SIG_SETMASK, &saved_set, NULL); + vg_assert(r == 0); + va = VexArchS390X; + + model = VG_(get_machine_model)(); + + VG_(debugLog)(1, "machine", "machine %d LDISP %d EIMM %d GIE %d DFP %d " + "FGX %d\n", model, have_LDISP, have_EIMM, have_GIE, + have_DFP, have_FGX); + + if (model == VEX_S390X_MODEL_INVALID) return False; + + vai.hwcaps = model; + if (have_LDISP) { + /* Use long displacement only on machines >= z990. For all other machines + it is millicoded and therefore slow. */ + if (model >= VEX_S390X_MODEL_Z990) + vai.hwcaps |= VEX_HWCAPS_S390X_LDISP; + } + if (have_EIMM) vai.hwcaps |= VEX_HWCAPS_S390X_EIMM; + if (have_GIE) vai.hwcaps |= VEX_HWCAPS_S390X_GIE; + if (have_DFP) vai.hwcaps |= VEX_HWCAPS_S390X_DFP; + if (have_FGX) vai.hwcaps |= VEX_HWCAPS_S390X_FGX; + + VG_(debugLog)(1, "machine", "hwcaps = 0x%x\n", vai.hwcaps); + + return True; + } + #elif defined(VGA_arm) { /* Same instruction set detection algorithm as for ppc32. */ @@ -792,7 +1149,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* VFP insns */ have_VFP = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_VFP = False; } else { __asm__ __volatile__(".word 0xEEB02B42"); /* VMOV.F64 d2, d2 */ @@ -804,7 +1161,7 @@ Bool VG_(machine_get_hwcaps)( void ) /* NEON insns */ have_NEON = True; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { have_NEON = False; } else { __asm__ __volatile__(".word 0xF2244154"); /* VMOV q2, q2 */ @@ -814,7 +1171,7 @@ Bool VG_(machine_get_hwcaps)( void ) archlevel = 5; /* v5 will be base level */ if (archlevel < 7) { archlevel = 7; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { archlevel = 5; } else { __asm__ __volatile__(".word 0xF45FF000"); /* PLI [PC,#-0] */ @@ -822,7 +1179,7 @@ Bool VG_(machine_get_hwcaps)( void ) } if (archlevel < 6) { archlevel = 6; - if (__builtin_setjmp(env_unsup_insn)) { + if (VG_MINIMAL_SETJMP(env_unsup_insn)) { archlevel = 5; } else { __asm__ __volatile__(".word 0xE6822012"); /* PKHBT r2, r2, r2 */ @@ -893,6 +1250,22 @@ void VG_(machine_ppc64_set_clszB)( Int szB ) #endif +/* Notify host's ability to handle NEON instructions. */ +#if defined(VGA_arm) +void VG_(machine_arm_set_has_NEON)( Bool has_neon ) +{ + vg_assert(hwcaps_done); + /* There's nothing else we can sanity check. */ + + if (has_neon) { + vai.hwcaps |= VEX_HWCAPS_ARM_NEON; + } else { + vai.hwcaps &= ~VEX_HWCAPS_ARM_NEON; + } +} +#endif + + /* Fetch host cpu info, once established. */ void VG_(machine_get_VexArchInfo)( /*OUT*/VexArch* pVa, /*OUT*/VexArchInfo* pVai ) @@ -910,7 +1283,7 @@ void* VG_(fnptr_to_fnentry)( void* f ) #if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \ || defined(VGP_arm_linux) \ || defined(VGP_ppc32_linux) || defined(VGO_darwin) \ - || defined(VGO_l4re) + || defined(VGP_s390x_linux) || defined(VGO_l4re) return f; #elif defined(VGP_ppc64_linux) || defined(VGP_ppc32_aix5) \ || defined(VGP_ppc64_aix5) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_main.c index 89683d8d1..12727c458 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_main.c @@ -31,6 +31,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_xarray.h" #include "pub_core_clientstate.h" @@ -40,6 +41,7 @@ #include "pub_core_debuglog.h" #include "pub_core_errormgr.h" #include "pub_core_execontext.h" +#include "pub_core_gdbserver.h" #include "pub_core_initimg.h" #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" @@ -134,7 +136,13 @@ static void usage_NORETURN ( Bool debug_help ) " --trace-children=no|yes Valgrind-ise child processes (follow execve)? [no]\n" " --trace-children-skip=patt1,patt2,... specifies a list of executables\n" " that --trace-children=yes should not trace into\n" +" --trace-children-skip-by-arg=patt1,patt2,... same as --trace-children-skip=\n" +" but check the argv[] entries for children, rather\n" +" than the exe name, to make a follow/no-follow decision\n" " --child-silent-after-fork=no|yes omit child output between fork & exec? [no]\n" +" --vgdb=no|yes|full activate gdbserver? [yes]\n" +" full is slower but provides precise watchpoint/step\n" +" --vgdb-error= invoke gdbserver after errors [%d] \n" " --track-fds=no|yes track open file descriptors? [no]\n" " --time-stamp=no|yes add timestamps to log messages? [no]\n" " --log-fd= log messages to file descriptor [2=stderr]\n" @@ -167,12 +175,21 @@ static void usage_NORETURN ( Bool debug_help ) " --alignment= set minimum alignment of heap allocations [%ld]\n" "\n" " uncommon user options for all Valgrind tools:\n" +" --fullpath-after= (with nothing after the '=')\n" +" show full source paths in call stacks\n" +" --fullpath-after=string like --fullpath-after=, but only show the\n" +" part of the path after 'string'. Allows removal\n" +" of path prefixes. Use this flag multiple times\n" +" to specify a set of prefixes to remove.\n" " --smc-check=none|stack|all checks for self-modifying code: none,\n" " only for code found in stacks, or all [stack]\n" " --read-var-info=yes|no read debug info on stack and global variables\n" " and use it to print better error messages in\n" " tools that make use of it (Memcheck, Helgrind,\n" " DRD) [no]\n" +" --vgdb-poll= gdbserver poll max every basic blocks [%d] \n" +" --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no]\n" +" --vgdb-prefix= prefix for vgdb FIFOs [%s]\n" " --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]\n" " --sim-hints=hint1,hint2,... known hints:\n" " lax-ioctls, enable-outer [none]\n" @@ -240,7 +257,7 @@ static void usage_NORETURN ( Bool debug_help ) "\n" " %s is %s\n" " Valgrind is Copyright (C) 2000-2010, and GNU GPL'd, by Julian Seward et al.\n" -" LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP.\n" +" LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP et al.\n" "\n" " Bug reports, feedback, admiration, abuse, etc, to: %s.\n" "\n"; @@ -251,8 +268,10 @@ static void usage_NORETURN ( Bool debug_help ) VG_(log_output_sink).fd = 1; VG_(log_output_sink).is_socket = False; - /* 'usage1' expects one char* argument and one SizeT argument. */ - VG_(printf)(usage1, gdb_path, VG_MIN_MALLOC_SZB); + /* 'usage1' expects two int, two char* argument, and one SizeT argument. */ + VG_(printf)(usage1, + VG_(clo_vgdb_error), gdb_path, VG_MIN_MALLOC_SZB, + VG_(clo_vgdb_poll), VG_(clo_vgdb_prefix)); if (VG_(details).name) { VG_(printf)(" user options for %s:\n", VG_(details).name); if (VG_(needs).command_line_options) @@ -458,6 +477,14 @@ void main_process_cmd_line_options ( /*OUT*/Bool* logging_to_fd, else if VG_BOOL_CLO(arg, "--stats", VG_(clo_stats)) {} else if VG_BOOL_CLO(arg, "--xml", VG_(clo_xml)) {} + else if VG_XACT_CLO(arg, "--vgdb=no", VG_(clo_vgdb), Vg_VgdbNo) {} + else if VG_XACT_CLO(arg, "--vgdb=yes", VG_(clo_vgdb), Vg_VgdbYes) {} + else if VG_XACT_CLO(arg, "--vgdb=full", VG_(clo_vgdb), Vg_VgdbFull) {} + else if VG_INT_CLO (arg, "--vgdb-poll", VG_(clo_vgdb_poll)) {} + else if VG_INT_CLO (arg, "--vgdb-error", VG_(clo_vgdb_error)) {} + else if VG_STR_CLO (arg, "--vgdb-prefix", VG_(clo_vgdb_prefix)) {} + else if VG_BOOL_CLO(arg, "--vgdb-shadow-registers", + VG_(clo_vgdb_shadow_registers)) {} else if VG_BOOL_CLO(arg, "--db-attach", VG_(clo_db_attach)) {} else if VG_BOOL_CLO(arg, "--demangle", VG_(clo_demangle)) {} else if VG_BOOL_CLO(arg, "--error-limit", VG_(clo_error_limit)) {} @@ -508,7 +535,10 @@ void main_process_cmd_line_options ( /*OUT*/Bool* logging_to_fd, else if VG_BOOL_CLO(arg, "--dsymutil", VG_(clo_dsymutil)) {} - else if VG_STR_CLO (arg, "--trace-children-skip", VG_(clo_trace_children_skip)) {} + else if VG_STR_CLO (arg, "--trace-children-skip", + VG_(clo_trace_children_skip)) {} + else if VG_STR_CLO (arg, "--trace-children-skip-by-arg", + VG_(clo_trace_children_skip_by_arg)) {} else if VG_BINT_CLO(arg, "--vex-iropt-verbosity", VG_(clo_vex_control).iropt_verbosity, 0, 10) {} @@ -559,6 +589,16 @@ void main_process_cmd_line_options ( /*OUT*/Bool* logging_to_fd, VG_(clo_n_suppressions)++; } + else if VG_STR_CLO (arg, "--fullpath-after", tmp_str) { + if (VG_(clo_n_fullpath_after) >= VG_CLO_MAX_FULLPATH_AFTER) { + VG_(fmsg_bad_option)(arg, + "Too many --fullpath-after= specifications.\n" + "Increase VG_CLO_MAX_FULLPATH_AFTER and recompile.\n"); + } + VG_(clo_fullpath_after)[VG_(clo_n_fullpath_after)] = tmp_str; + VG_(clo_n_fullpath_after)++; + } + else if VG_STR_CLO(arg, "--require-text-symbol", tmp_str) { if (VG_(clo_n_req_tsyms) >= VG_CLO_MAX_REQ_TSYMS) { VG_(fmsg_bad_option)(arg, @@ -657,6 +697,8 @@ void main_process_cmd_line_options ( /*OUT*/Bool* logging_to_fd, if (VG_(clo_verbosity) < 0) VG_(clo_verbosity) = 0; + VG_(dyn_vgdb_error) = VG_(clo_vgdb_error); + if (VG_(clo_gen_suppressions) > 0 && !VG_(needs).core_errors && !VG_(needs).tool_errors) { VG_(fmsg_bad_option)("--gen-suppressions=yes", @@ -1703,6 +1745,7 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) "AMD Athlon or above)\n"); VG_(printf)(" * AMD Athlon64/Opteron\n"); VG_(printf)(" * PowerPC (most; ppc405 and above)\n"); + VG_(printf)(" * System z (64bit only - s390x; z900 and above)\n"); VG_(printf)("\n"); VG_(exit)(1); } @@ -1902,8 +1945,7 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) nul[0] = 0; exename = VG_(args_the_exename) ? VG_(args_the_exename) : "unknown_exename"; - VG_(write)(fd, VG_(args_the_exename), - VG_(strlen)( VG_(args_the_exename) )); + VG_(write)(fd, exename, VG_(strlen)( exename )); VG_(write)(fd, nul, 1); for (i = 0; i < VG_(sizeXA)( VG_(args_for_client) ); i++) { @@ -2029,6 +2071,8 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) iters = 5; # elif defined(VGP_arm_linux) iters = 1; +# elif defined(VGP_s390x_linux) + iters = 10; # elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) iters = 4; # elif defined(VGO_darwin) @@ -2285,7 +2329,9 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) VG_(deleteXA)( addr2dihandle ); /* Also do the initial stack permissions. */ - { NSegment const* seg + { + SSizeT inaccessible_len; + NSegment const* seg = VG_(am_find_nsegment)( the_iifii.initial_client_SP ); vg_assert(seg); vg_assert(seg->kind == SkAnonC); @@ -2301,12 +2347,13 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) is required (VG_STACK_REDZONE_SZB). setup_client_stack() will have allocated an extra page if a red zone is required, to be on the safe side. */ - vg_assert(the_iifii.initial_client_SP - VG_STACK_REDZONE_SZB - >= seg->start); - VG_TRACK( die_mem_stack, - seg->start, - the_iifii.initial_client_SP - VG_STACK_REDZONE_SZB - - seg->start ); + inaccessible_len = the_iifii.initial_client_SP - VG_STACK_REDZONE_SZB + - seg->start; + vg_assert(inaccessible_len >= 0); + if (inaccessible_len > 0) + VG_TRACK( die_mem_stack, + seg->start, + inaccessible_len ); VG_(debugLog)(2, "main", "mark stack inaccessible %010lx-%010lx\n", seg->start, the_iifii.initial_client_SP-1 - VG_STACK_REDZONE_SZB); @@ -2534,7 +2581,7 @@ void shutdown_actions_NORETURN( ThreadId tid, /* In XML mode, this merely prints the used suppressions. */ if (VG_(needs).core_errors || VG_(needs).tool_errors) - VG_(show_all_errors)(); + VG_(show_all_errors)(VG_(clo_verbosity), VG_(clo_xml)); if (VG_(clo_xml)) { VG_(printf_xml)("\n"); @@ -2569,6 +2616,10 @@ void shutdown_actions_NORETURN( ThreadId tid, /* Flush any output cached by previous calls to VG_(message). */ VG_(message_flush)(); + /* terminate gdbserver if ever it was started. We terminate it here so that it get + the output above if output was redirected to gdb */ + VG_(gdbserver) (0); + /* Ok, finally exit in the os-specific way, according to the scheduler's return code. In short, if the (last) thread exited by calling sys_exit, do likewise; if the (last) thread stopped due to a fatal @@ -2888,9 +2939,52 @@ asm("\n" "\tnop\n" "\ttrap\n" ); +#elif defined(VGP_s390x_linux) +/* + This is the canonical entry point, usually the first thing in the text + segment. Most registers' values are unspecified, except for: + + %r14 Contains a function pointer to be registered with `atexit'. + This is how the dynamic linker arranges to have DT_FINI + functions called for shared libraries that have been loaded + before this code runs. + + %r15 The stack contains the arguments and environment: + 0(%r15) argc + 8(%r15) argv[0] + ... + (8*argc)(%r15) NULL + (8*(argc+1))(%r15) envp[0] + ... + NULL +*/ +asm("\n\t" + ".text\n\t" + ".globl _start\n\t" + ".type _start,@function\n\t" + "_start:\n\t" + /* set up the new stack in %r1 */ + "larl %r1, vgPlain_interim_stack\n\t" + "larl %r5, 1f\n\t" + "ag %r1, 0(%r5)\n\t" + "ag %r1, 2f-1f(%r5)\n\t" + "nill %r1, 0xFFF0\n\t" + /* install it, and collect the original one */ + "lgr %r2, %r15\n\t" + "lgr %r15, %r1\n\t" + /* call _start_in_C_linux, passing it the startup %r15 */ + "brasl %r14, _start_in_C_linux\n\t" + /* trigger execution of an invalid opcode -> halt machine */ + "j .+2\n\t" + "1: .quad "VG_STRINGIFY(VG_STACK_GUARD_SZB)"\n\t" + "2: .quad "VG_STRINGIFY(VG_STACK_ACTIVE_SZB)"\n\t" + ".previous\n" +); #elif defined(VGP_arm_linux) asm("\n" - "\t.align 2\n" + "\t.text\n" + "\t.align 4\n" + "\t.type _start,#function\n" "\t.global _start\n" "_start:\n" "\tldr r0, [pc, #36]\n" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_mallocfree.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_mallocfree.c index dabc39ac4..6199f16e3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_mallocfree.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_mallocfree.c @@ -38,6 +38,7 @@ #include "pub_core_libcprint.h" #include "pub_core_mallocfree.h" #include "pub_core_options.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" // For VG_INVALID_THREADID #include "pub_core_tooliface.h" #include "valgrind.h" @@ -186,9 +187,14 @@ typedef SizeT sblocks_used; Superblock* sblocks_initial[SBLOCKS_SIZE_INITIAL]; // Stats only. - SizeT bytes_on_loan; - SizeT bytes_mmaped; - SizeT bytes_on_loan_max; + SizeT stats__bytes_on_loan; + SizeT stats__bytes_mmaped; + SizeT stats__bytes_on_loan_max; + ULong stats__tot_blocks; /* total # blocks alloc'd */ + ULong stats__tot_bytes; /* total # bytes alloc'd */ + ULong stats__nsearches; /* total # freelist checks */ + // If profiling, when should the next profile happen at + // (in terms of stats__bytes_on_loan_max) ? SizeT next_profile_at; } Arena; @@ -477,13 +483,16 @@ void arena_init ( ArenaId aid, Char* name, SizeT rz_szB, SizeT min_sblock_szB ) a->min_sblock_szB = min_sblock_szB; for (i = 0; i < N_MALLOC_LISTS; i++) a->freelist[i] = NULL; - a->sblocks = & a->sblocks_initial[0]; - a->sblocks_size = SBLOCKS_SIZE_INITIAL; - a->sblocks_used = 0; - a->bytes_on_loan = 0; - a->bytes_mmaped = 0; - a->bytes_on_loan_max = 0; - a->next_profile_at = 25 * 1000 * 1000; + a->sblocks = & a->sblocks_initial[0]; + a->sblocks_size = SBLOCKS_SIZE_INITIAL; + a->sblocks_used = 0; + a->stats__bytes_on_loan = 0; + a->stats__bytes_mmaped = 0; + a->stats__bytes_on_loan_max = 0; + a->stats__tot_blocks = 0; + a->stats__tot_bytes = 0; + a->stats__nsearches = 0; + a->next_profile_at = 25 * 1000 * 1000; vg_assert(sizeof(a->sblocks_initial) == SBLOCKS_SIZE_INITIAL * sizeof(Superblock*)); } @@ -495,8 +504,14 @@ void VG_(print_all_arena_stats) ( void ) for (i = 0; i < VG_N_ARENAS; i++) { Arena* a = arenaId_to_ArenaP(i); VG_(message)(Vg_DebugMsg, - "%8s: %8ld mmap'd, %8ld/%8ld max/curr\n", - a->name, a->bytes_mmaped, a->bytes_on_loan_max, a->bytes_on_loan + "%8s: %8ld mmap'd, %8ld/%8ld max/curr, " + "%10llu/%10llu totalloc-blocks/bytes," + " %10llu searches\n", + a->name, a->stats__bytes_mmaped, + a->stats__bytes_on_loan_max, + a->stats__bytes_on_loan, + a->stats__tot_blocks, a->stats__tot_bytes, + a->stats__nsearches ); } } @@ -695,7 +710,7 @@ Superblock* newSuperblock ( Arena* a, SizeT cszB ) //zzVALGRIND_MAKE_MEM_UNDEFINED(sb, cszB); vg_assert(0 == (Addr)sb % VG_MIN_MALLOC_SZB); sb->n_payload_bytes = cszB - sizeof(Superblock); - a->bytes_mmaped += cszB; + a->stats__bytes_mmaped += cszB; VG_(debugLog)(1, "mallocfree", "newSuperblock at %p (pszB %7ld) owner %s/%s\n", sb, sb->n_payload_bytes, @@ -993,7 +1008,7 @@ static void sanity_check_malloc_arena ( ArenaId aid ) } } - if (arena_bytes_on_loan != a->bytes_on_loan) { + if (arena_bytes_on_loan != a->stats__bytes_on_loan) { # ifdef VERBOSE_MALLOC VG_(printf)( "sanity_check_malloc_arena: a->bytes_on_loan %ld, " "arena_bytes_on_loan %ld: " @@ -1051,7 +1066,7 @@ static void sanity_check_malloc_arena ( ArenaId aid ) a->name, superblockctr, blockctr_sb, blockctr_sb_free, blockctr_li, - a->bytes_mmaped, a->bytes_on_loan); + a->stats__bytes_mmaped, a->stats__bytes_on_loan); # undef BOMB } @@ -1092,7 +1107,8 @@ static void cc_analyse_alloc_arena ( ArenaId aid ) VG_(printf)( "-------- Arena \"%s\": %ld mmap'd, %ld/%ld max/curr --------\n", - a->name, a->bytes_mmaped, a->bytes_on_loan_max, a->bytes_on_loan + a->name, a->stats__bytes_mmaped, + a->stats__bytes_on_loan_max, a->stats__bytes_on_loan ); for (j = 0; j < a->sblocks_used; ++j) { @@ -1269,6 +1285,7 @@ void* VG_(arena_malloc) ( ArenaId aid, HChar* cc, SizeT req_pszB ) Block* b = NULL; Arena* a; void* v; + UWord stats__nsearches = 0; ensure_mm_init(aid); a = arenaId_to_ArenaP(aid); @@ -1301,9 +1318,25 @@ void* VG_(arena_malloc) ( ArenaId aid, HChar* cc, SizeT req_pszB ) // behaviour. // for (lno = pszB_to_listNo(req_pszB); lno < N_MALLOC_LISTS; lno++) { + UWord nsearches_this_level = 0; b = a->freelist[lno]; if (NULL == b) continue; // If this list is empty, try the next one. while (True) { + stats__nsearches++; + nsearches_this_level++; + if (UNLIKELY(nsearches_this_level >= 100) + && lno < N_MALLOC_LISTS-1) { + /* Avoid excessive scanning on this freelist, and instead + try the next one up. But first, move this freelist's + start pointer one element along, so as to ensure that + subsequent searches of this list don't endlessly + revisit only these 100 elements, but in fact slowly + progress through the entire list. */ + b = a->freelist[lno]; + vg_assert(b); // this list must be nonempty! + a->freelist[lno] = get_next_b(b); // step one along + break; + } b_bszB = get_bszB(b); if (b_bszB >= req_bszB) goto obtained_block; // success! b = get_next_b(b); @@ -1396,18 +1429,22 @@ void* VG_(arena_malloc) ( ArenaId aid, HChar* cc, SizeT req_pszB ) } // Update stats - a->bytes_on_loan += bszB_to_pszB(a, b_bszB); - if (a->bytes_on_loan > a->bytes_on_loan_max) { - a->bytes_on_loan_max = a->bytes_on_loan; - if (a->bytes_on_loan_max >= a->next_profile_at) { + SizeT loaned = bszB_to_pszB(a, b_bszB); + a->stats__bytes_on_loan += loaned; + if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) { + a->stats__bytes_on_loan_max = a->stats__bytes_on_loan; + if (a->stats__bytes_on_loan_max >= a->next_profile_at) { /* next profile after 10% more growth */ a->next_profile_at = (SizeT)( - (((ULong)a->bytes_on_loan_max) * 110ULL) / 100ULL ); + (((ULong)a->stats__bytes_on_loan_max) * 110ULL) / 100ULL ); if (VG_(clo_profile_heap)) cc_analyse_alloc_arena(aid); } } + a->stats__tot_blocks += (ULong)1; + a->stats__tot_bytes += (ULong)loaned; + a->stats__nsearches += (ULong)stats__nsearches; # ifdef DEBUG_MALLOC sanity_check_malloc_arena(aid); @@ -1462,7 +1499,7 @@ void VG_(arena_free) ( ArenaId aid, void* ptr ) sb_start = &sb->payload_bytes[0]; sb_end = &sb->payload_bytes[sb->n_payload_bytes - 1]; - a->bytes_on_loan -= b_pszB; + a->stats__bytes_on_loan -= b_pszB; /* If this is one of V's areas, fill it up with junk to enhance the chances of catching any later reads of it. Note, 0xDD is @@ -1610,9 +1647,9 @@ void* VG_(arena_memalign) ( ArenaId aid, HChar* cc, /* Payload ptr for the block we are going to split. Note this changes a->bytes_on_loan; we save and restore it ourselves. */ - saved_bytes_on_loan = a->bytes_on_loan; + saved_bytes_on_loan = a->stats__bytes_on_loan; base_p = VG_(arena_malloc) ( aid, cc, base_pszB_req ); - a->bytes_on_loan = saved_bytes_on_loan; + a->stats__bytes_on_loan = saved_bytes_on_loan; /* Give up if we couldn't allocate enough space */ if (base_p == 0) @@ -1655,9 +1692,13 @@ void* VG_(arena_memalign) ( ArenaId aid, HChar* cc, vg_assert(req_pszB <= get_pszB(a, get_payload_block(a, align_p))); - a->bytes_on_loan += get_pszB(a, get_payload_block(a, align_p)); - if (a->bytes_on_loan > a->bytes_on_loan_max) - a->bytes_on_loan_max = a->bytes_on_loan; + a->stats__bytes_on_loan += get_pszB(a, get_payload_block(a, align_p)); + if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) { + a->stats__bytes_on_loan_max = a->stats__bytes_on_loan; + } + /* a->stats__tot_blocks, a->stats__tot_bytes, a->stats__nsearches + are updated by the call to VG_(arena_malloc) just a few lines + above. So we don't need to update them here. */ # ifdef DEBUG_MALLOC sanity_check_malloc_arena(aid); @@ -1727,14 +1768,14 @@ void VG_(mallinfo) ( ThreadId tid, struct vg_mallinfo* mi ) // We don't have fastbins so smblks & fsmblks are always 0. Also we don't // have a separate mmap allocator so set hblks & hblkhd to 0. - mi->arena = a->bytes_mmaped; + mi->arena = a->stats__bytes_mmaped; mi->ordblks = free_blocks + VG_(free_queue_length); mi->smblks = 0; mi->hblks = 0; mi->hblkhd = 0; mi->usmblks = 0; mi->fsmblks = 0; - mi->uordblks = a->bytes_on_loan - VG_(free_queue_volume); + mi->uordblks = a->stats__bytes_on_loan - VG_(free_queue_volume); mi->fordblks = free_blocks_size + VG_(free_queue_volume); mi->keepcost = 0; // may want some value in here } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_options.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_options.c index 90672c1c3..7b2881a4b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_options.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_options.c @@ -46,6 +46,15 @@ VexControl VG_(clo_vex_control); Bool VG_(clo_error_limit) = True; Int VG_(clo_error_exitcode) = 0; +#if (VGO_l4re) +VgVgdb VG_(clo_vgdb) = Vg_VgdbNo; +#else +VgVgdb VG_(clo_vgdb) = Vg_VgdbYes; +#endif +Int VG_(clo_vgdb_poll) = 5000; +Int VG_(clo_vgdb_error) = 999999999; +Char* VG_(clo_vgdb_prefix) = VG_CLO_VGDB_PREFIX_DEFAULT; +Bool VG_(clo_vgdb_shadow_registers) = False; Bool VG_(clo_db_attach) = False; Char* VG_(clo_db_command) = GDB_PATH " -nw %f %p"; Int VG_(clo_gen_suppressions) = 0; @@ -57,6 +66,7 @@ HChar* VG_(clo_xml_user_comment) = NULL; Bool VG_(clo_demangle) = True; Bool VG_(clo_trace_children) = False; HChar* VG_(clo_trace_children_skip) = NULL; +HChar* VG_(clo_trace_children_skip_by_arg) = NULL; Bool VG_(clo_child_silent_after_fork) = False; Char* VG_(clo_log_fname_expanded) = NULL; Char* VG_(clo_xml_fname_expanded) = NULL; @@ -64,6 +74,8 @@ Bool VG_(clo_time_stamp) = False; Int VG_(clo_input_fd) = 0; /* stdin */ Int VG_(clo_n_suppressions) = 0; Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES]; +Int VG_(clo_n_fullpath_after) = 0; +Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER]; UChar VG_(clo_trace_flags) = 0; // 00000000b UChar VG_(clo_profile_flags) = 0; // 00000000b Int VG_(clo_trace_notbelow) = 999999999; @@ -253,9 +265,13 @@ static HChar const* consume_field ( HChar const* c ) { } /* Should we trace into this child executable (across execve etc) ? - This involves considering --trace-children=, --trace-children-skip= - and the name of the executable. */ -Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name ) + This involves considering --trace-children=, + --trace-children-skip=, --trace-children-skip-by-arg=, and the name + of the executable. 'child_argv' must not include the name of the + executable itself; iow child_argv[0] must be the first arg, if any, + for the child. */ +Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name, + HChar** child_argv ) { // child_exe_name is pulled out of the guest's space. We // should be at least marginally cautious with it, lest it @@ -263,13 +279,13 @@ Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name ) if (child_exe_name == NULL || VG_(strlen)(child_exe_name) == 0) return VG_(clo_trace_children); // we know narfink - // the main logic // If --trace-children=no, the answer is simply NO. if (! VG_(clo_trace_children)) return False; - // otherwise, return True, unless the exe name matches any of the - // patterns specified by --trace-children-skip=. + // Otherwise, look for other reasons to say NO. First, + // see if the exe name matches any of the patterns specified + // by --trace-children-skip=. if (VG_(clo_trace_children_skip)) { HChar const* last = VG_(clo_trace_children_skip); HChar const* name = (HChar const*)child_exe_name; @@ -292,7 +308,36 @@ Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name ) return False; } } - + + // Check if any of the args match any of the patterns specified + // by --trace-children-skip-by-arg=. + if (VG_(clo_trace_children_skip_by_arg) && child_argv != NULL) { + HChar const* last = VG_(clo_trace_children_skip_by_arg); + while (*last) { + Int i; + Bool matches; + HChar* patt; + HChar const* first = consume_commas(last); + last = consume_field(first); + if (first == last) + break; + vg_assert(last > first); + /* copy the candidate string into a temporary malloc'd block + so we can use VG_(string_match) on it. */ + patt = VG_(calloc)("m_options.swttc.1", last - first + 1, 1); + VG_(memcpy)(patt, first, last - first); + vg_assert(patt[last-first] == 0); + for (i = 0; child_argv[i]; i++) { + matches = VG_(string_match)(patt, child_argv[i]); + if (matches) { + VG_(free)(patt); + return False; + } + } + VG_(free)(patt); + } + } + // --trace-children=yes, and this particular executable isn't // excluded return True; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_redir.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_redir.c index d6a827402..ef5c90ab4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_redir.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_redir.c @@ -930,7 +930,11 @@ static const HChar* complain_about_stripped_glibc_ldso[] "for your Linux distribution to please in future ship a non-", "stripped ld.so (or whatever the dynamic linker .so is called)", "that exports the above-named function using the standard", - "calling conventions for this platform.", + "calling conventions for this platform. The package you need", + "to install for fix (1) is called", + "", + " On Debian, Ubuntu: libc6-dbg", + " On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo", NULL }; @@ -959,11 +963,23 @@ void VG_(redir_initialise) ( void ) /* If we're using memcheck, use this intercept right from the start, otherwise ld.so (glibc-2.3.5) makes a lot of noise. */ if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { + const HChar** mandatory; +# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \ + || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \ + || defined(GLIBC_2_8) || defined(GLIBC_2_9) \ + || defined(GLIBC_2_10) || defined(GLIBC_2_11) + mandatory = NULL; +# else + /* for glibc-2.12 and later, this is mandatory - can't sanely + continue without it */ + mandatory = complain_about_stripped_glibc_ldso; +# endif add_hardwired_spec( "ld-linux.so.2", "index", - (Addr)&VG_(x86_linux_REDIR_FOR_index), - NULL - ); + (Addr)&VG_(x86_linux_REDIR_FOR_index), mandatory); + add_hardwired_spec( + "ld-linux.so.2", "strlen", + (Addr)&VG_(x86_linux_REDIR_FOR_strlen), mandatory); } # elif defined(VGP_amd64_linux) @@ -1104,6 +1120,9 @@ void VG_(redir_initialise) ( void ) (Addr)&VG_(amd64_darwin_REDIR_FOR_arc4random), NULL); } +# elif defined(VGP_s390x_linux) + /* nothing so far */ + # elif defined(VGO_l4re) add_hardwired_active((Addr) SYSCALL_PAGE, (Addr) (Addr) &VG_(x86_l4re_REDIR_FOR_syscall_page)); @@ -1219,6 +1238,7 @@ void handle_maybe_load_notifier( const UChar* soname, /* Normal load-notifier handling after here. First, ignore all symbols lacking the right prefix. */ + vg_assert(symbol); // assert rather than segfault if it is NULL if (0 != VG_(strncmp)(symbol, VG_NOTIFY_ON_LOAD_PREFIX, VG_NOTIFY_ON_LOAD_PREFIX_LEN)) /* Doesn't have the right prefix */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_replacemalloc/vg_replace_malloc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_replacemalloc/vg_replace_malloc.c index b861e06dd..612bf417d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_replacemalloc/vg_replace_malloc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_replacemalloc/vg_replace_malloc.c @@ -747,7 +747,7 @@ static void panic(const char *str) { VALGRIND_PRINTF_BACKTRACE("Program aborting because of call to %s\n", str); _exit(99); - *(int *)0 = 'x'; + *(volatile int *)0 = 'x'; } #define PANIC(soname, fnname) \ @@ -850,8 +850,6 @@ ZONE_CHECK(VG_Z_LIBC_SONAME, malloc_zone_check); __attribute__((constructor)) static void init(void) { - int res; - // This doesn't look thread-safe, but it should be ok... Bart says: // // Every program I know of calls malloc() at least once before calling @@ -873,8 +871,8 @@ static void init(void) init_done = 1; - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__GET_MALLOCFUNCS, &info, - 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__GET_MALLOCFUNCS, &info, + 0, 0, 0, 0); } /*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_scheduler/scheduler.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_scheduler/scheduler.c index fc21dfe78..84b13d4eb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_scheduler/scheduler.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_scheduler/scheduler.c @@ -61,11 +61,13 @@ #include "pub_core_debuglog.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" // __NR_sched_yield +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_clreq.h" // for VG_USERREQ__* #include "pub_core_dispatch.h" #include "pub_core_errormgr.h" // For VG_(get_n_errs_found)() +#include "pub_core_gdbserver.h" // for VG_(gdbserver) and VG_(gdbserver_activity) #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcprint.h" @@ -111,6 +113,13 @@ UInt VG_(dispatch_ctr); /* 64-bit counter for the number of basic blocks done. */ static ULong bbs_done = 0; +/* Counter to see if vgdb activity is to be verified. + When nr of bbs done reaches vgdb_next_poll, scheduler will + poll for gdbserver activity. VG_(force_vgdb_poll) and + VG_(disable_vgdb_poll) allows the valgrind core (e.g. m_gdbserver) + to control when the next poll will be done. */ +static ULong vgdb_next_poll; + /* Forwards */ static void do_client_request ( ThreadId tid ); static void scheduler_sanity ( ThreadId tid ); @@ -182,8 +191,8 @@ HChar* name_of_sched_event ( UInt event ) case VEX_TRC_JMP_SYS_INT48: return "INT 0x30"; case VEX_TRC_JMP_SYS_INT50: return "INT 0x32"; case VEX_TRC_JMP_SIGTRAP: return "SIGTRAP (INT3)"; - case VEX_TRC_JMP_L4_UD2: return "L4: UD2"; - case VEX_TRC_JMP_L4_ARTIFICIAL: return "L4: Artificial"; + case VEX_TRC_JMP_L4_UD2: return "L4: UD2"; + case VEX_TRC_JMP_L4_ARTIFICIAL: return "L4: Artificial"; #endif default: return "??UNKNOWN??"; } @@ -625,7 +634,7 @@ void VG_(scheduler_init_phase2) ( ThreadId tid_main, do { \ ThreadState * volatile _qq_tst = VG_(get_ThreadState)(tid); \ \ - (jumped) = __builtin_setjmp(_qq_tst->sched_jmpbuf); \ + (jumped) = VG_MINIMAL_SETJMP(_qq_tst->sched_jmpbuf); \ if ((jumped) == 0) { \ vg_assert(!_qq_tst->sched_jmpbuf_valid); \ _qq_tst->sched_jmpbuf_valid = True; \ @@ -701,13 +710,13 @@ static void do_pre_run_checks ( ThreadState* tst ) # if defined(VGA_ppc32) || defined(VGA_ppc64) /* ppc guest_state vector regs must be 16 byte aligned for loads/stores. This is important! */ - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VR0)); - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow1.guest_VR0)); - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow2.guest_VR0)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VSR0)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow1.guest_VSR0)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow2.guest_VSR0)); /* be extra paranoid .. */ - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VR1)); - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow1.guest_VR1)); - vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow2.guest_VR1)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VSR1)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow1.guest_VSR1)); + vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow2.guest_VSR1)); # endif # if defined(VGA_arm) @@ -721,8 +730,26 @@ static void do_pre_run_checks ( ThreadState* tst ) vg_assert(VG_IS_8_ALIGNED(& tst->arch.vex_shadow1.guest_D1)); vg_assert(VG_IS_8_ALIGNED(& tst->arch.vex_shadow2.guest_D1)); # endif + +# if defined(VGA_s390x) + /* no special requirements */ +# endif } +// NO_VGDB_POLL value ensures vgdb is not polled, while +// VGDB_POLL_ASAP ensures that the next scheduler call +// will cause a poll. +#define NO_VGDB_POLL 0xffffffffffffffffULL +#define VGDB_POLL_ASAP 0x0ULL + +void VG_(disable_vgdb_poll) (void ) +{ + vgdb_next_poll = NO_VGDB_POLL; +} +void VG_(force_vgdb_poll) ( void ) +{ + vgdb_next_poll = VGDB_POLL_ASAP; +} /* Run the thread tid for a while, and return a VG_TRC_* value indicating why VG_(run_innerloop) stopped. */ @@ -785,8 +812,8 @@ static UInt run_thread_for_a_while ( ThreadId tid ) #if defined(L4RE_DEBUG_EXECUTION) //VG_(get_and_pp_StackTrace)( tid, VG_(clo_backtrace_size) ); VG_(debugLog)(0, "sched", "bbs_done=%lld ip = %p guest ip = %p\n", - bbs_done, (void *)VG_(get_IP)(tid), - (void*)&tst->arch.vex.guest_EIP); + bbs_done, (void *)VG_(get_IP)(tid), + (void*)&tst->arch.vex.guest_EIP); #endif #endif SCHEDSETJMP( @@ -817,6 +844,16 @@ static UInt run_thread_for_a_while ( ThreadId tid ) // Tell the tool this thread has stopped running client code VG_TRACK( stop_client_code, tid, bbs_done ); + if (bbs_done >= vgdb_next_poll) { + if (VG_(clo_vgdb_poll)) + vgdb_next_poll = bbs_done + (ULong)VG_(clo_vgdb_poll); + else + /* value was changed due to gdbserver invocation via ptrace */ + vgdb_next_poll = NO_VGDB_POLL; + if (VG_(gdbserver_activity) (tid)) + VG_(gdbserver) (tid); + } + return trc; } @@ -904,6 +941,11 @@ static UInt run_noredir_translation ( Addr hcode, ThreadId tid ) return retval; } +ULong VG_(bbs_done) (void) +{ + return bbs_done; +} + /* --------------------------------------------------------------------- The scheduler proper. @@ -1019,10 +1061,59 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) { UInt trc; ThreadState *tst = VG_(get_ThreadState)(tid); + static Bool vgdb_startup_action_done = False; + if (VG_(clo_trace_sched)) print_sched_event(tid, "entering VG_(scheduler)"); + /* Do vgdb initialization (but once). Only the first (main) task + starting up will do the below. + Initialize gdbserver earlier than at the first + thread VG_(scheduler) is causing problems: + * at the end of VG_(scheduler_init_phase2) : + The main thread is in VgTs_Init state, but in a not yet + consistent state => the thread cannot be reported to gdb + (e.g. causes an assert in LibVEX_GuestX86_get_eflags when giving + back the guest registers to gdb). + * at end of valgrind_main, just + before VG_(main_thread_wrapper_NORETURN)(1) : + The main thread is still in VgTs_Init state but in a + more advanced state. However, the thread state is not yet + completely initialized : a.o., the os_state is not yet fully + set => the thread is then not properly reported to gdb, + which is then confused (causing e.g. a duplicate thread be + shown, without thread id). + * it would be possible to initialize gdbserver "lower" in the + call stack (e.g. in VG_(main_thread_wrapper_NORETURN)) but + these are platform dependent and the place at which + the thread state is completely initialized is not + specific anymore to the main thread (so a similar "do it only + once" would be needed). + + => a "once only" initialization here is the best compromise. */ + if (!vgdb_startup_action_done) { + vg_assert(tid == 1); // it must be the main thread. + vgdb_startup_action_done = True; + if (VG_(clo_vgdb) != Vg_VgdbNo) { + /* If we have to poll, ensures we do an initial poll at first + scheduler call. Otherwise, ensure no poll (unless interrupted + by ptrace). */ + if (VG_(clo_vgdb_poll)) + VG_(force_vgdb_poll) (); + else + VG_(disable_vgdb_poll) (); + + vg_assert (VG_(dyn_vgdb_error) == VG_(clo_vgdb_error)); + /* As we are initializing, VG_(dyn_vgdb_error) can't have been + changed yet. */ + + VG_(gdbserver_prerun_action) (1); + } else { + VG_(disable_vgdb_poll) (); + } + } + #if !defined(VGO_l4re) /* set the proper running signal mask */ block_signals(); @@ -1197,11 +1288,11 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) DEBUG_UTCB TRACK_UTCB break; - case VEX_TRC_JMP_SYS_INT48: /* L4Re: Invoke */ - case VEX_TRC_JMP_SYS_INT50: /* L4Re: Debug */ - case VEX_TRC_JMP_SYS_INT128: /* L4Re/UX: INT80 */ - case VEX_TRC_JMP_L4_UD2: /* L4Re: UD2 */ - case VEX_TRC_JMP_L4_ARTIFICIAL: /* L4Re: artificial trap */ + case VEX_TRC_JMP_SYS_INT48: /* L4Re: Invoke */ + case VEX_TRC_JMP_SYS_INT50: /* L4Re: Debug */ + case VEX_TRC_JMP_SYS_INT128: /* L4Re/UX: INT80 */ + case VEX_TRC_JMP_L4_UD2: /* L4Re: UD2 */ + case VEX_TRC_JMP_L4_ARTIFICIAL: /* L4Re: artificial trap */ handle_syscall(tid, trc); if (VG_(clo_sanity_level) > 2) VG_(sanity_check_general)(True); /* sanity-check every syscall */ @@ -1243,6 +1334,7 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) /* Failure of arch-specific address translation (x86/amd64 segment override use) */ /* jrs 2005 03 11: is this correct? */ + VG_(message)(Vg_DebugMsg, "TRC_JMP_MAPFAIL\n"); VG_(synth_fault)(tid); break; @@ -1305,6 +1397,7 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) break; case VEX_TRC_JMP_SIGSEGV: + VG_(message)(Vg_DebugMsg, "TRC_JMP_SIGSEGV\n"); VG_(synth_fault)(tid); break; @@ -1316,6 +1409,7 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) VG_(umsg)( "valgrind: Unrecognised instruction at address %#lx.\n", VG_(get_IP)(tid)); + VG_(get_and_pp_StackTrace)(tid, 50); #define M(a) VG_(umsg)(a "\n"); M("Your program just tried to execute an instruction that Valgrind" ); M("did not recognise. There are two possible reasons for this." ); @@ -1447,6 +1541,9 @@ void VG_(nuke_all_threads_except) ( ThreadId me, VgSchedReturnCode src ) #elif defined(VGA_arm) # define VG_CLREQ_ARGS guest_R4 # define VG_CLREQ_RET guest_R3 +#elif defined (VGA_s390x) +# define VG_CLREQ_ARGS guest_r2 +# define VG_CLREQ_RET guest_r3 #else # error Unknown arch #endif @@ -1713,6 +1810,7 @@ void do_client_request ( ThreadId tid ) } case VG_USERREQ__MALLOCLIKE_BLOCK: + case VG_USERREQ__RESIZEINPLACE_BLOCK: case VG_USERREQ__FREELIKE_BLOCK: // Ignore them if the addr is NULL; otherwise pass onto the tool. if (!arg[1]) { @@ -1890,10 +1988,12 @@ void VG_(sanity_check_general) ( Bool force_expensive ) stack = (VgStack*) VG_(get_ThreadState)(tid)->os_state.valgrind_stack_base; - remains - = VG_(am_get_VgStack_unused_szB)(stack); - if (remains < VKI_PAGE_SIZE) - VG_(message)(Vg_DebugMsg, + SizeT limit + = 4096; // Let's say. Checking more causes lots of L2 misses. + remains + = VG_(am_get_VgStack_unused_szB)(stack, limit); + if (remains < limit) + VG_(message)(Vg_DebugMsg, "WARNING: Thread %d is within %ld bytes " "of running out of stack!\n", tid, remains); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-darwin.c index 273dea53b..ed0913439 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-darwin.c @@ -34,6 +34,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-linux.c index b234e3a95..710a34bcf 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-amd64-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-arm-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-arm-linux.c index 01c1c058c..47677005a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-arm-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-arm-linux.c @@ -38,6 +38,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc32-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc32-linux.c index 9710b3726..f19f71fe1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc32-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc32-linux.c @@ -36,6 +36,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc64-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc64-linux.c index 03283784e..2e6dc0fdf 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc64-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-ppc64-linux.c @@ -36,6 +36,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" @@ -189,7 +190,7 @@ void VG_(sigframe_create)( ThreadId tid, Addr sp; ThreadState* tst; Int sigNo = siginfo->si_signo; - Addr faultaddr; + /* Addr faultaddr; */ /* UNUSED */ struct rt_sigframe* frame; /* Stack must be 16-byte aligned */ @@ -225,9 +226,11 @@ void VG_(sigframe_create)( ThreadId tid, VG_TRACK( post_mem_write, Vg_CoreSignal, tid, sp, sizeof(UWord) ); + /* UNUSED: faultaddr = (Addr)siginfo->_sifields._sigfault._addr; if (sigNo == VKI_SIGILL && siginfo->si_code > 0) faultaddr = tst->arch.vex.guest_CIA; + */ VG_(memcpy)(&frame->info, siginfo, sizeof(*siginfo)); VG_TRACK( post_mem_write, Vg_CoreSignal, tid, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-s390x-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-s390x-linux.c new file mode 100644 index 000000000..9d3afca1e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-s390x-linux.c @@ -0,0 +1,571 @@ + +/*--------------------------------------------------------------------*/ +/*--- Create/destroy signal delivery frames. ---*/ +/*--- sigframe-s390x-linux.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Christian Borntraeger */ + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy +#include "pub_core_threadstate.h" +#include "pub_core_aspacemgr.h" +#include "pub_core_libcbase.h" +#include "pub_core_libcassert.h" +#include "pub_core_libcprint.h" +#include "pub_core_machine.h" +#include "pub_core_options.h" +#include "pub_core_sigframe.h" +#include "pub_core_signals.h" +#include "pub_core_tooliface.h" +#include "pub_core_trampoline.h" + +#if defined(VGA_s390x) + +/* This module creates and removes signal frames for signal deliveries + on s390x-linux. + + Note, this file contains kernel-specific knowledge in the form of + 'struct sigframe' and 'struct rt_sigframe'. + + Either a 'struct sigframe' or a 'struct rtsigframe' is pushed + onto the client's stack. This contains a subsidiary + vki_ucontext. That holds the vcpu's state across the signal, + so that the sighandler can mess with the vcpu state if it + really wants. +*/ + +#define SET_SIGNAL_GPR(zztst, zzn, zzval) \ + do { zztst->arch.vex.guest_r##zzn = (unsigned long)(zzval); \ + VG_TRACK( post_reg_write, Vg_CoreSignal, zztst->tid, \ + offsetof(VexGuestS390XState,guest_r##zzn), \ + sizeof(UWord) ); \ + } while (0) + +/*------------------------------------------------------------*/ +/*--- Signal frame layouts ---*/ +/*------------------------------------------------------------*/ + +// A structure in which to save the application's registers +// during the execution of signal handlers. + +// Linux has 2 signal frame structures: one for normal signal +// deliveries, and one for SA_SIGINFO deliveries (also known as RT +// signals). +// +// In theory, so long as we get the arguments to the handler function +// right, it doesn't matter what the exact layout of the rest of the +// frame is. Unfortunately, things like gcc's exception unwinding +// make assumptions about the locations of various parts of the frame, +// so we need to duplicate it exactly. + +/* Valgrind-specific parts of the signal frame */ +struct vg_sigframe +{ + /* Sanity check word. */ + UInt magicPI; + + UInt handlerflags; /* flags for signal handler */ + + + /* Safely-saved version of sigNo, as described above. */ + Int sigNo_private; + + /* XXX This is wrong. Surely we should store the shadow values + into the shadow memory behind the actual values? */ + VexGuestS390XState vex_shadow1; + VexGuestS390XState vex_shadow2; + + /* HACK ALERT */ + VexGuestS390XState vex; + /* end HACK ALERT */ + + /* saved signal mask to be restored when handler returns */ + vki_sigset_t mask; + + /* Sanity check word. Is the highest-addressed word; do not + move!*/ + UInt magicE; +}; + +#define S390_SYSCALL_SIZE 2 + +struct sigframe +{ + UChar callee_used_stack[__VKI_SIGNAL_FRAMESIZE]; + struct vki_sigcontext sc; + _vki_sigregs sregs; + Int sigNo; + UChar retcode[S390_SYSCALL_SIZE]; + + struct vg_sigframe vg; +}; + +struct rt_sigframe +{ + UChar callee_used_stack[__VKI_SIGNAL_FRAMESIZE]; + UChar retcode[S390_SYSCALL_SIZE]; + struct vki_siginfo info; + struct vki_ucontext uc; + + struct vg_sigframe vg; +}; + +/*------------------------------------------------------------*/ +/*--- Creating signal frames ---*/ +/*------------------------------------------------------------*/ + +/* Saves all user-controlled register into a _vki_sigregs structure */ +static void save_sigregs(ThreadState *tst, _vki_sigregs *sigregs) +{ + sigregs->regs.gprs[0] = tst->arch.vex.guest_r0; + sigregs->regs.gprs[1] = tst->arch.vex.guest_r1; + sigregs->regs.gprs[2] = tst->arch.vex.guest_r2; + sigregs->regs.gprs[3] = tst->arch.vex.guest_r3; + sigregs->regs.gprs[4] = tst->arch.vex.guest_r4; + sigregs->regs.gprs[5] = tst->arch.vex.guest_r5; + sigregs->regs.gprs[6] = tst->arch.vex.guest_r6; + sigregs->regs.gprs[7] = tst->arch.vex.guest_r7; + sigregs->regs.gprs[8] = tst->arch.vex.guest_r8; + sigregs->regs.gprs[9] = tst->arch.vex.guest_r9; + sigregs->regs.gprs[10] = tst->arch.vex.guest_r10; + sigregs->regs.gprs[11] = tst->arch.vex.guest_r11; + sigregs->regs.gprs[12] = tst->arch.vex.guest_r12; + sigregs->regs.gprs[13] = tst->arch.vex.guest_r13; + sigregs->regs.gprs[14] = tst->arch.vex.guest_r14; + sigregs->regs.gprs[15] = tst->arch.vex.guest_r15; + + sigregs->regs.acrs[0] = tst->arch.vex.guest_a0; + sigregs->regs.acrs[1] = tst->arch.vex.guest_a1; + sigregs->regs.acrs[2] = tst->arch.vex.guest_a2; + sigregs->regs.acrs[3] = tst->arch.vex.guest_a3; + sigregs->regs.acrs[4] = tst->arch.vex.guest_a4; + sigregs->regs.acrs[5] = tst->arch.vex.guest_a5; + sigregs->regs.acrs[6] = tst->arch.vex.guest_a6; + sigregs->regs.acrs[7] = tst->arch.vex.guest_a7; + sigregs->regs.acrs[8] = tst->arch.vex.guest_a8; + sigregs->regs.acrs[9] = tst->arch.vex.guest_a9; + sigregs->regs.acrs[10] = tst->arch.vex.guest_a10; + sigregs->regs.acrs[11] = tst->arch.vex.guest_a11; + sigregs->regs.acrs[12] = tst->arch.vex.guest_a12; + sigregs->regs.acrs[13] = tst->arch.vex.guest_a13; + sigregs->regs.acrs[14] = tst->arch.vex.guest_a14; + sigregs->regs.acrs[15] = tst->arch.vex.guest_a15; + + sigregs->fpregs.fprs[0] = tst->arch.vex.guest_f0; + sigregs->fpregs.fprs[1] = tst->arch.vex.guest_f1; + sigregs->fpregs.fprs[2] = tst->arch.vex.guest_f2; + sigregs->fpregs.fprs[3] = tst->arch.vex.guest_f3; + sigregs->fpregs.fprs[4] = tst->arch.vex.guest_f4; + sigregs->fpregs.fprs[5] = tst->arch.vex.guest_f5; + sigregs->fpregs.fprs[6] = tst->arch.vex.guest_f6; + sigregs->fpregs.fprs[7] = tst->arch.vex.guest_f7; + sigregs->fpregs.fprs[8] = tst->arch.vex.guest_f8; + sigregs->fpregs.fprs[9] = tst->arch.vex.guest_f9; + sigregs->fpregs.fprs[10] = tst->arch.vex.guest_f10; + sigregs->fpregs.fprs[11] = tst->arch.vex.guest_f11; + sigregs->fpregs.fprs[12] = tst->arch.vex.guest_f12; + sigregs->fpregs.fprs[13] = tst->arch.vex.guest_f13; + sigregs->fpregs.fprs[14] = tst->arch.vex.guest_f14; + sigregs->fpregs.fprs[15] = tst->arch.vex.guest_f15; + sigregs->fpregs.fpc = tst->arch.vex.guest_fpc; + + sigregs->regs.psw.addr = tst->arch.vex.guest_IA; + /* save a sane dummy mask */ + sigregs->regs.psw.mask = 0x0705000180000000UL; +} + +static void restore_sigregs(ThreadState *tst, _vki_sigregs *sigregs) +{ + tst->arch.vex.guest_r0 = sigregs->regs.gprs[0]; + tst->arch.vex.guest_r1 = sigregs->regs.gprs[1]; + tst->arch.vex.guest_r2 = sigregs->regs.gprs[2]; + tst->arch.vex.guest_r3 = sigregs->regs.gprs[3]; + tst->arch.vex.guest_r4 = sigregs->regs.gprs[4]; + tst->arch.vex.guest_r5 = sigregs->regs.gprs[5]; + tst->arch.vex.guest_r6 = sigregs->regs.gprs[6]; + tst->arch.vex.guest_r7 = sigregs->regs.gprs[7]; + tst->arch.vex.guest_r8 = sigregs->regs.gprs[8]; + tst->arch.vex.guest_r9 = sigregs->regs.gprs[9]; + tst->arch.vex.guest_r10 = sigregs->regs.gprs[10]; + tst->arch.vex.guest_r11 = sigregs->regs.gprs[11]; + tst->arch.vex.guest_r12 = sigregs->regs.gprs[12]; + tst->arch.vex.guest_r13 = sigregs->regs.gprs[13]; + tst->arch.vex.guest_r14 = sigregs->regs.gprs[14]; + tst->arch.vex.guest_r15 = sigregs->regs.gprs[15]; + + tst->arch.vex.guest_a0 = sigregs->regs.acrs[0]; + tst->arch.vex.guest_a1 = sigregs->regs.acrs[1]; + tst->arch.vex.guest_a2 = sigregs->regs.acrs[2]; + tst->arch.vex.guest_a3 = sigregs->regs.acrs[3]; + tst->arch.vex.guest_a4 = sigregs->regs.acrs[4]; + tst->arch.vex.guest_a5 = sigregs->regs.acrs[5]; + tst->arch.vex.guest_a6 = sigregs->regs.acrs[6]; + tst->arch.vex.guest_a7 = sigregs->regs.acrs[7]; + tst->arch.vex.guest_a8 = sigregs->regs.acrs[8]; + tst->arch.vex.guest_a9 = sigregs->regs.acrs[9]; + tst->arch.vex.guest_a10 = sigregs->regs.acrs[10]; + tst->arch.vex.guest_a11 = sigregs->regs.acrs[11]; + tst->arch.vex.guest_a12 = sigregs->regs.acrs[12]; + tst->arch.vex.guest_a13 = sigregs->regs.acrs[13]; + tst->arch.vex.guest_a14 = sigregs->regs.acrs[14]; + tst->arch.vex.guest_a15 = sigregs->regs.acrs[15]; + + tst->arch.vex.guest_f0 = sigregs->fpregs.fprs[0]; + tst->arch.vex.guest_f1 = sigregs->fpregs.fprs[1]; + tst->arch.vex.guest_f2 = sigregs->fpregs.fprs[2]; + tst->arch.vex.guest_f3 = sigregs->fpregs.fprs[3]; + tst->arch.vex.guest_f4 = sigregs->fpregs.fprs[4]; + tst->arch.vex.guest_f5 = sigregs->fpregs.fprs[5]; + tst->arch.vex.guest_f6 = sigregs->fpregs.fprs[6]; + tst->arch.vex.guest_f7 = sigregs->fpregs.fprs[7]; + tst->arch.vex.guest_f8 = sigregs->fpregs.fprs[8]; + tst->arch.vex.guest_f9 = sigregs->fpregs.fprs[9]; + tst->arch.vex.guest_f10 = sigregs->fpregs.fprs[10]; + tst->arch.vex.guest_f11 = sigregs->fpregs.fprs[11]; + tst->arch.vex.guest_f12 = sigregs->fpregs.fprs[12]; + tst->arch.vex.guest_f13 = sigregs->fpregs.fprs[13]; + tst->arch.vex.guest_f14 = sigregs->fpregs.fprs[14]; + tst->arch.vex.guest_f15 = sigregs->fpregs.fprs[15]; + tst->arch.vex.guest_fpc = sigregs->fpregs.fpc; + + tst->arch.vex.guest_IA = sigregs->regs.psw.addr; +} + +/* Extend the stack segment downwards if needed so as to ensure the + new signal frames are mapped to something. Return a Bool + indicating whether or not the operation was successful. +*/ +static Bool extend ( ThreadState *tst, Addr addr, SizeT size ) +{ + ThreadId tid = tst->tid; + NSegment const* stackseg = NULL; + + if (VG_(extend_stack)(addr, tst->client_stack_szB)) { + stackseg = VG_(am_find_nsegment)(addr); + if (0 && stackseg) + VG_(printf)("frame=%#lx seg=%#lx-%#lx\n", + addr, stackseg->start, stackseg->end); + } + + if (stackseg == NULL || !stackseg->hasR || !stackseg->hasW) { + VG_(message)( + Vg_UserMsg, + "Can't extend stack to %#lx during signal delivery for thread %d:\n", + addr, tid); + if (stackseg == NULL) + VG_(message)(Vg_UserMsg, " no stack segment\n"); + else + VG_(message)(Vg_UserMsg, " too small or bad protection modes\n"); + + /* set SIGSEGV to default handler */ + VG_(set_default_handler)(VKI_SIGSEGV); + VG_(synth_fault_mapping)(tid, addr); + + /* The whole process should be about to die, since the default + action of SIGSEGV to kill the whole process. */ + return False; + } + + /* For tracking memory events, indicate the entire frame has been + allocated. */ + VG_TRACK( new_mem_stack_signal, addr - VG_STACK_REDZONE_SZB, + size + VG_STACK_REDZONE_SZB, tid ); + + return True; +} + + +/* Build the Valgrind-specific part of a signal frame. */ + +static void build_vg_sigframe(struct vg_sigframe *frame, + ThreadState *tst, + UInt flags, + Int sigNo) +{ + frame->sigNo_private = sigNo; + frame->magicPI = 0x31415927; + frame->vex_shadow1 = tst->arch.vex_shadow1; + frame->vex_shadow2 = tst->arch.vex_shadow2; + /* HACK ALERT */ + frame->vex = tst->arch.vex; + /* end HACK ALERT */ + frame->mask = tst->sig_mask; + frame->handlerflags = flags; + frame->magicE = 0x27182818; +} + + +static Addr build_sigframe(ThreadState *tst, + Addr sp_top_of_frame, + const vki_siginfo_t *siginfo, + const struct vki_ucontext *siguc, + UInt flags, + const vki_sigset_t *mask, + void *restorer) +{ + struct sigframe *frame; + Addr sp = sp_top_of_frame; + + vg_assert((flags & VKI_SA_SIGINFO) == 0); + vg_assert((sizeof(*frame) & 7) == 0); + vg_assert((sp & 7) == 0); + + sp -= sizeof(*frame); + frame = (struct sigframe *)sp; + + if (!extend(tst, sp, sizeof(*frame))) + return sp_top_of_frame; + + /* retcode, sigNo, sc, sregs fields are to be written */ + VG_TRACK( pre_mem_write, Vg_CoreSignal, tst->tid, "signal handler frame", + sp, offsetof(struct sigframe, vg) ); + + save_sigregs(tst, &frame->sregs); + + frame->sigNo = siginfo->si_signo; + frame->sc.sregs = &frame->sregs; + VG_(memcpy)(frame->sc.oldmask, mask->sig, sizeof(frame->sc.oldmask)); + + if (flags & VKI_SA_RESTORER) { + SET_SIGNAL_GPR(tst, 14, restorer); + } else { + frame->retcode[0] = 0x0a; + frame->retcode[1] = __NR_sigreturn; + /* This normally should be &frame->recode. but since there + might be problems with non-exec stack and we must discard + the translation for the on-stack sigreturn we just use the + trampoline like x86,ppc. We still fill in the retcode, lets + just hope that nobody actually jumps here */ + SET_SIGNAL_GPR(tst, 14, (Addr)&VG_(s390x_linux_SUBST_FOR_sigreturn)); + } + + SET_SIGNAL_GPR(tst, 2, siginfo->si_signo); + SET_SIGNAL_GPR(tst, 3, &frame->sc); + /* fixs390: we dont fill in trapno and prot_addr in r4 and r5*/ + + /* Set up backchain. */ + *((Addr *) sp) = sp_top_of_frame; + + VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid, + sp, offsetof(struct sigframe, vg) ); + + build_vg_sigframe(&frame->vg, tst, flags, siginfo->si_signo); + + return sp; +} + +static Addr build_rt_sigframe(ThreadState *tst, + Addr sp_top_of_frame, + const vki_siginfo_t *siginfo, + const struct vki_ucontext *siguc, + UInt flags, + const vki_sigset_t *mask, + void *restorer) +{ + struct rt_sigframe *frame; + Addr sp = sp_top_of_frame; + Int sigNo = siginfo->si_signo; + + vg_assert((flags & VKI_SA_SIGINFO) != 0); + vg_assert((sizeof(*frame) & 7) == 0); + vg_assert((sp & 7) == 0); + + sp -= sizeof(*frame); + frame = (struct rt_sigframe *)sp; + + if (!extend(tst, sp, sizeof(*frame))) + return sp_top_of_frame; + + /* retcode, sigNo, sc, sregs fields are to be written */ + VG_TRACK( pre_mem_write, Vg_CoreSignal, tst->tid, "signal handler frame", + sp, offsetof(struct rt_sigframe, vg) ); + + save_sigregs(tst, &frame->uc.uc_mcontext); + + if (flags & VKI_SA_RESTORER) { + frame->retcode[0] = 0; + frame->retcode[1] = 0; + SET_SIGNAL_GPR(tst, 14, restorer); + } else { + frame->retcode[0] = 0x0a; + frame->retcode[1] = __NR_rt_sigreturn; + /* This normally should be &frame->recode. but since there + might be problems with non-exec stack and we must discard + the translation for the on-stack sigreturn we just use the + trampoline like x86,ppc. We still fill in the retcode, lets + just hope that nobody actually jumps here */ + SET_SIGNAL_GPR(tst, 14, (Addr)&VG_(s390x_linux_SUBST_FOR_rt_sigreturn)); + } + + VG_(memcpy)(&frame->info, siginfo, sizeof(vki_siginfo_t)); + frame->uc.uc_flags = 0; + frame->uc.uc_link = 0; + frame->uc.uc_sigmask = *mask; + frame->uc.uc_stack = tst->altstack; + + SET_SIGNAL_GPR(tst, 2, siginfo->si_signo); + SET_SIGNAL_GPR(tst, 3, &frame->info); + SET_SIGNAL_GPR(tst, 4, &frame->uc); + + /* Set up backchain. */ + *((Addr *) sp) = sp_top_of_frame; + + VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid, + sp, offsetof(struct rt_sigframe, vg) ); + + build_vg_sigframe(&frame->vg, tst, flags, sigNo); + return sp; +} + +/* EXPORTED */ +void VG_(sigframe_create)( ThreadId tid, + Addr sp_top_of_frame, + const vki_siginfo_t *siginfo, + const struct vki_ucontext *siguc, + void *handler, + UInt flags, + const vki_sigset_t *mask, + void *restorer ) +{ + Addr sp; + ThreadState* tst = VG_(get_ThreadState)(tid); + + if (flags & VKI_SA_SIGINFO) + sp = build_rt_sigframe(tst, sp_top_of_frame, siginfo, siguc, + flags, mask, restorer); + else + sp = build_sigframe(tst, sp_top_of_frame, siginfo, siguc, + flags, mask, restorer); + + /* Set the thread so it will next run the handler. */ + VG_(set_SP)(tid, sp); + VG_TRACK( post_reg_write, Vg_CoreSignal, tid, VG_O_STACK_PTR, sizeof(Addr)); + + tst->arch.vex.guest_IA = (Addr) handler; + /* We might have interrupted a repeating instruction that uses the guest + counter. Since our VEX requires that a new instruction will see a + guest counter == 0, we have to set it here. The old value will be + restored by restore_vg_sigframe. */ + tst->arch.vex.guest_counter = 0; + /* This thread needs to be marked runnable, but we leave that the + caller to do. */ +} + + +/*------------------------------------------------------------*/ +/*--- Destroying signal frames ---*/ +/*------------------------------------------------------------*/ + +/* Return False and don't do anything, just set the client to take a + segfault, if it looks like the frame is corrupted. */ +static +Bool restore_vg_sigframe ( ThreadState *tst, + struct vg_sigframe *frame, Int *sigNo ) +{ + if (frame->magicPI != 0x31415927 || + frame->magicE != 0x27182818) { + VG_(message)(Vg_UserMsg, "Thread %d return signal frame " + "corrupted. Killing process.\n", + tst->tid); + VG_(set_default_handler)(VKI_SIGSEGV); + VG_(synth_fault)(tst->tid); + *sigNo = VKI_SIGSEGV; + return False; + } + tst->sig_mask = frame->mask; + tst->tmp_sig_mask = frame->mask; + tst->arch.vex_shadow1 = frame->vex_shadow1; + tst->arch.vex_shadow2 = frame->vex_shadow2; + /* HACK ALERT */ + tst->arch.vex = frame->vex; + /* end HACK ALERT */ + *sigNo = frame->sigNo_private; + return True; +} + +static +SizeT restore_sigframe ( ThreadState *tst, + struct sigframe *frame, Int *sigNo ) +{ + if (restore_vg_sigframe(tst, &frame->vg, sigNo)) + restore_sigregs(tst, frame->sc.sregs); + + return sizeof(*frame); +} + +static +SizeT restore_rt_sigframe ( ThreadState *tst, + struct rt_sigframe *frame, Int *sigNo ) +{ + if (restore_vg_sigframe(tst, &frame->vg, sigNo)) { + restore_sigregs(tst, &frame->uc.uc_mcontext); + } + return sizeof(*frame); +} + + +/* EXPORTED */ +void VG_(sigframe_destroy)( ThreadId tid, Bool isRT ) +{ + Addr sp; + ThreadState* tst; + SizeT size; + Int sigNo; + + tst = VG_(get_ThreadState)(tid); + + /* Correctly reestablish the frame base address. */ + sp = tst->arch.vex.guest_SP; + + if (!isRT) + size = restore_sigframe(tst, (struct sigframe *)sp, &sigNo); + else + size = restore_rt_sigframe(tst, (struct rt_sigframe *)sp, &sigNo); + + /* same as for creation: we must announce the full memory (including + alignment), otherwise massif might fail on longjmp */ + VG_TRACK( die_mem_stack_signal, sp - VG_STACK_REDZONE_SZB, + size + VG_STACK_REDZONE_SZB ); + + if (VG_(clo_trace_signals)) + VG_(message)( + Vg_DebugMsg, + "VG_(sigframe_destroy) (thread %d): isRT=%d valid magic; IP=%#llx\n", + tid, isRT, tst->arch.vex.guest_IA); + + /* tell the tools */ + VG_TRACK( post_deliver_signal, tid, sigNo ); +} + +#endif /* VGA_s390x */ + +/*--------------------------------------------------------------------*/ +/*--- end sigframe-s390x-linux.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-darwin.c index 383a8d3dc..47348e275 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-darwin.c @@ -34,6 +34,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-linux.c index 6b6105586..079fc710a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_sigframe/sigframe-x86-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" /* find_segment */ #include "pub_core_libcbase.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_signals.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_signals.c index dd29fc43b..a40b9be69 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_signals.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_signals.c @@ -191,18 +191,25 @@ VG_(sigtimedwait_zero). This is trivial on Linux, since it's just a syscall. But on Darwin and AIX, we have to cobble together the functionality in a tedious, longwinded and probably error-prone way. + + Finally, if a gdb is debugging the process under valgrind, + the signal can be ignored if gdb tells this. So, before resuming the + scheduler/delivering the signal, a call to VG_(gdbserver_report_signal) + is done. If this returns True, the signal is delivered. */ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" #include "pub_core_debuglog.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_xarray.h" #include "pub_core_clientstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debugger.h" // For VG_(start_debugger) #include "pub_core_errormgr.h" +#include "pub_core_gdbserver.h" #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcprint.h" @@ -378,6 +385,7 @@ typedef struct SigQueue { (srP)->misc.ARM.r14 = (uc)->uc_mcontext.arm_lr; \ (srP)->misc.ARM.r12 = (uc)->uc_mcontext.arm_ip; \ (srP)->misc.ARM.r11 = (uc)->uc_mcontext.arm_fp; \ + (srP)->misc.ARM.r7 = (uc)->uc_mcontext.arm_r7; \ } #elif defined(VGP_ppc32_aix5) @@ -533,6 +541,23 @@ typedef struct SigQueue { # define VG_UCONTEXT_LINK_REG(uc) 0 /* Dude, where's my LR? */ +#elif defined(VGP_s390x_linux) + +# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.regs.psw.addr) +# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.regs.gprs[15]) +# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.regs.gprs[11]) +# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \ + VG_(mk_SysRes_s390x_linux)((uc)->uc_mcontext.regs.gprs[2]) +# define VG_UCONTEXT_LINK_REG(uc) ((uc)->uc_mcontext.regs.gprs[14]) + +# define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc) \ + { (srP)->r_pc = (ULong)((uc)->uc_mcontext.regs.psw.addr); \ + (srP)->r_sp = (ULong)((uc)->uc_mcontext.regs.gprs[15]); \ + (srP)->misc.S390X.r_fp = (uc)->uc_mcontext.regs.gprs[11]; \ + (srP)->misc.S390X.r_lr = (uc)->uc_mcontext.regs.gprs[14]; \ + } + + #else # error Unknown platform #endif @@ -651,11 +676,14 @@ typedef static SKSS skss; -static Bool is_sig_ign(Int sigNo) +/* returns True if signal is to be ignored. + To check this, possibly call gdbserver with tid. */ +static Bool is_sig_ign(Int sigNo, ThreadId tid) { vg_assert(sigNo >= 1 && sigNo <= _VKI_NSIG); - return scss.scss_per_sig[sigNo].scss_handler == VKI_SIG_IGN; + return scss.scss_per_sig[sigNo].scss_handler == VKI_SIG_IGN + || !VG_(gdbserver_report_signal) (sigNo, tid); } /* --------------------------------------------------------------------- @@ -871,6 +899,13 @@ extern void my_sigreturn(void); "my_sigreturn:\n" \ ".long 0\n" +#elif defined(VGP_s390x_linux) +# define _MY_SIGRETURN(name) \ + ".text\n" \ + "my_sigreturn:\n" \ + " svc " #name "\n" \ + ".previous\n" + #else # error Unknown platform #endif @@ -1421,8 +1456,10 @@ void VG_(kill_self)(Int sigNo) VG_(sigprocmask)(VKI_SIG_UNBLOCK, &mask, &origmask); r = VG_(kill)(VG_(getpid)(), sigNo); +# if defined(VGO_linux) /* This sometimes fails with EPERM on Darwin. I don't know why. */ - /* vg_assert(r == 0); */ + vg_assert(r == 0); +# endif VG_(convert_sigaction_fromK_to_toK)( &origsa, &origsa2 ); VG_(sigaction)(sigNo, &origsa2, NULL); @@ -1790,7 +1827,7 @@ static void resume_scheduler(ThreadId tid) if (tst->sched_jmpbuf_valid) { /* Can't continue; must longjmp back to the scheduler and thus enter the sighandler immediately. */ - __builtin_longjmp(tst->sched_jmpbuf, True); + VG_MINIMAL_LONGJMP(tst->sched_jmpbuf); } } @@ -1812,6 +1849,9 @@ static void synth_fault_common(ThreadId tid, Addr addr, Int si_code) info.si_code = si_code; info.VKI_SIGINFO_si_addr = (void*)addr; + /* even if gdbserver indicates to ignore the signal, we will deliver it */ + VG_(gdbserver_report_signal) (VKI_SIGSEGV, tid); + /* If they're trying to block the signal, force it to be delivered */ if (VG_(sigismember)(&VG_(threads)[tid].sig_mask, VKI_SIGSEGV)) VG_(set_default_handler)(VKI_SIGSEGV); @@ -1851,8 +1891,12 @@ void VG_(synth_sigill)(ThreadId tid, Addr addr) info.si_code = VKI_ILL_ILLOPC; /* jrs: no idea what this should be */ info.VKI_SIGINFO_si_addr = (void*)addr; - resume_scheduler(tid); - deliver_signal(tid, &info, NULL); + if (VG_(gdbserver_report_signal) (VKI_SIGILL, tid)) { + resume_scheduler(tid); + deliver_signal(tid, &info, NULL); + } + else + resume_scheduler(tid); } // Synthesise a SIGBUS. @@ -1872,8 +1916,12 @@ void VG_(synth_sigbus)(ThreadId tid) in .si_addr. Oh well. */ /* info.VKI_SIGINFO_si_addr = (void*)addr; */ - resume_scheduler(tid); - deliver_signal(tid, &info, NULL); + if (VG_(gdbserver_report_signal) (VKI_SIGBUS, tid)) { + resume_scheduler(tid); + deliver_signal(tid, &info, NULL); + } + else + resume_scheduler(tid); } // Synthesise a SIGTRAP. @@ -1907,8 +1955,13 @@ void VG_(synth_sigtrap)(ThreadId tid) uc.uc_mcontext->__es.__err = 0; # endif - resume_scheduler(tid); - deliver_signal(tid, &info, &uc); + /* fixs390: do we need to do anything here for s390 ? */ + if (VG_(gdbserver_report_signal) (VKI_SIGTRAP, tid)) { + resume_scheduler(tid); + deliver_signal(tid, &info, &uc); + } + else + resume_scheduler(tid); } /* Make a signal pending for a thread, for later delivery. @@ -2088,7 +2141,7 @@ void async_signalhandler ( Int sigNo, /* (2) */ /* Set up the thread's state to deliver a signal */ - if (!is_sig_ign(info->si_signo)) + if (!is_sig_ign(info->si_signo, tid)) deliver_signal(tid, info, uc); /* It's crucial that (1) and (2) happen in the order (1) then (2) @@ -2259,6 +2312,19 @@ void sync_signalhandler_from_user ( ThreadId tid, } } +/* Returns the reported fault address for an exact address */ +static Addr fault_mask(Addr in) +{ + /* We have to use VG_PGROUNDDN because faults on s390x only deliver + the page address but not the address within a page. + */ +# if defined(VGA_s390x) + return VG_PGROUNDDN(in); +# else + return in; +#endif +} + /* Returns True if the sync signal was due to the stack requiring extension and the extension was successful. */ @@ -2296,7 +2362,7 @@ static Bool extend_stack_if_appropriate(ThreadId tid, vki_siginfo_t* info) && seg_next && seg_next->kind == SkAnonC && seg->end+1 == seg_next->start - && fault >= (esp - VG_STACK_REDZONE_SZB)) { + && fault >= fault_mask(esp - VG_STACK_REDZONE_SZB)) { /* If the fault address is above esp but below the current known stack segment base, and it was a fault because there was nothing mapped there (as opposed to a permissions fault), @@ -2350,10 +2416,15 @@ void sync_signalhandler_from_kernel ( ThreadId tid, } if (VG_(in_generated_code)) { - /* Can't continue; must longjmp back to the scheduler and thus - enter the sighandler immediately. */ - deliver_signal(tid, info, uc); - resume_scheduler(tid); + if (VG_(gdbserver_report_signal) (sigNo, tid) + || VG_(sigismember)(&tst->sig_mask, sigNo)) { + /* Can't continue; must longjmp back to the scheduler and thus + enter the sighandler immediately. */ + deliver_signal(tid, info, uc); + resume_scheduler(tid); + } + else + resume_scheduler(tid); } /* If resume_scheduler returns or its our fault, it means we @@ -2553,7 +2624,7 @@ void VG_(poll_signals)(ThreadId tid) /* OK, something to do; deliver it */ if (VG_(clo_trace_signals)) VG_(dmsg)("Polling found signal %d for tid %d\n", sip->si_signo, tid); - if (!is_sig_ign(sip->si_signo)) + if (!is_sig_ign(sip->si_signo, tid)) deliver_signal(tid, sip, NULL); else if (VG_(clo_trace_signals)) VG_(dmsg)(" signal %d ignored\n", sip->si_signo); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_stacktrace.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_stacktrace.c index 9003c896a..029210da1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_stacktrace.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_stacktrace.c @@ -30,6 +30,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_debuginfo.h" // XXX: circular dependency #include "pub_core_aspacemgr.h" // For VG_(is_addressable)() @@ -264,7 +265,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, // On Darwin, this kicks in for pthread-related stack traces, so they're // only 1 entry long which is wrong. # if !defined(VGO_darwin) - if (fp_min + 512 >= fp_max) { + if (fp_min + 256 >= fp_max) { /* If the stack limits look bogus, don't poke around ... but don't bomb out either. */ if (sps) sps[0] = uregs.xsp; @@ -593,11 +594,12 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, vg_assert(sizeof(Addr) == sizeof(void*)); D3UnwindRegs uregs; - uregs.r15 = startRegs->r_pc; + uregs.r15 = startRegs->r_pc & 0xFFFFFFFE; uregs.r14 = startRegs->misc.ARM.r14; uregs.r13 = startRegs->r_sp; uregs.r12 = startRegs->misc.ARM.r12; uregs.r11 = startRegs->misc.ARM.r11; + uregs.r7 = startRegs->misc.ARM.r7; Addr fp_min = uregs.r13; /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], @@ -612,7 +614,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, fp_max -= sizeof(Addr); if (debug) - VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, " + VG_(printf)("\nmax_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, " "fp_max=0x%lx r15=0x%lx r13=0x%lx\n", max_n_ips, fp_min, fp_max_orig, fp_max, uregs.r15, uregs.r13); @@ -652,11 +654,11 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, if (VG_(use_CF_info)( &uregs, fp_min, fp_max )) { if (sps) sps[i] = uregs.r13; if (fps) fps[i] = 0; - ips[i++] = uregs.r15 -1; + ips[i++] = (uregs.r15 & 0xFFFFFFFE) - 1; if (debug) VG_(printf)("USING CFI: r15: 0x%lx, r13: 0x%lx\n", uregs.r15, uregs.r13); - uregs.r15 = uregs.r15 - 1; + uregs.r15 = (uregs.r15 & 0xFFFFFFFE) - 1; continue; } /* No luck. We have to give up. */ @@ -669,6 +671,85 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, #endif +/* ------------------------ s390x ------------------------- */ +#if defined(VGP_s390x_linux) +UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, + /*OUT*/Addr* ips, UInt max_n_ips, + /*OUT*/Addr* sps, /*OUT*/Addr* fps, + UnwindStartRegs* startRegs, + Addr fp_max_orig ) +{ + Bool debug = False; + Int i; + Addr fp_max; + UInt n_found = 0; + + vg_assert(sizeof(Addr) == sizeof(UWord)); + vg_assert(sizeof(Addr) == sizeof(void*)); + + D3UnwindRegs uregs; + uregs.ia = startRegs->r_pc; + uregs.sp = startRegs->r_sp; + Addr fp_min = uregs.sp; + uregs.fp = startRegs->misc.S390X.r_fp; + uregs.lr = startRegs->misc.S390X.r_lr; + + fp_max = VG_PGROUNDUP(fp_max_orig); + if (fp_max >= sizeof(Addr)) + fp_max -= sizeof(Addr); + + if (debug) + VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, " + "fp_max=0x%lx IA=0x%lx SP=0x%lx FP=0x%lx\n", + max_n_ips, fp_min, fp_max_orig, fp_max, + uregs.ia, uregs.sp,uregs.fp); + + /* The first frame is pretty obvious */ + ips[0] = uregs.ia; + if (sps) sps[0] = uregs.sp; + if (fps) fps[0] = uregs.fp; + i = 1; + + /* for everything else we have to rely on the eh_frame. gcc defaults to + not create a backchain and all the other tools (like gdb) also have + to use the CFI. */ + while (True) { + if (i >= max_n_ips) + break; + + if (VG_(use_CF_info)( &uregs, fp_min, fp_max )) { + if (sps) sps[i] = uregs.sp; + if (fps) fps[i] = uregs.fp; + ips[i++] = uregs.ia - 1; + uregs.ia = uregs.ia - 1; + continue; + } + /* A problem on the first frame? Lets assume it was a bad jump. + We will use the link register and the current stack and frame + pointers and see if we can use the CFI in the next round. */ + if (i == 1) { + if (sps) { + sps[i] = sps[0]; + uregs.sp = sps[0]; + } + if (fps) { + fps[i] = fps[0]; + uregs.fp = fps[0]; + } + uregs.ia = uregs.lr - 1; + ips[i++] = uregs.lr - 1; + continue; + } + + /* No luck. We have to give up. */ + break; + } + + n_found = i; + return n_found; +} +#endif + /*------------------------------------------------------------*/ /*--- ---*/ /*--- END platform-dependent unwinder worker functions ---*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syscall.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syscall.c index 2c681d882..3d6c8906b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syscall.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syscall.c @@ -115,6 +115,17 @@ SysRes VG_(mk_SysRes_ppc64_linux) ( ULong val, ULong cr0so ) { return res; } +SysRes VG_(mk_SysRes_s390x_linux) ( Long val ) { + SysRes res; + res._isError = val >= -4095 && val <= -1; + if (res._isError) { + res._val = -val; + } else { + res._val = val; + } + return res; +} + SysRes VG_(mk_SysRes_arm_linux) ( Int val ) { SysRes res; res._isError = val >= -4095 && val <= -1; @@ -881,6 +892,38 @@ UWord handle_ud2(SyscallArgs *a) ); } +#elif defined(VGP_s390x_linux) + +static UWord do_syscall_WRK ( + UWord syscall_no, + UWord arg1, UWord arg2, UWord arg3, + UWord arg4, UWord arg5, UWord arg6 + ) +{ + register UWord __arg1 asm("2") = arg1; + register UWord __arg2 asm("3") = arg2; + register UWord __arg3 asm("4") = arg3; + register UWord __arg4 asm("5") = arg4; + register UWord __arg5 asm("6") = arg5; + register UWord __arg6 asm("7") = arg6; + register ULong __svcres asm("2"); + + __asm__ __volatile__ ( + "lgr %%r1,%1\n\t" + "svc 0\n\t" + : "=d" (__svcres) + : "a" (syscall_no), + "0" (__arg1), + "d" (__arg2), + "d" (__arg3), + "d" (__arg4), + "d" (__arg5), + "d" (__arg6) + : "1", "cc", "memory"); + + return (UWord) (__svcres); +} + #else # error Unknown platform #endif @@ -1275,6 +1318,26 @@ SysRes VG_(do_syscall) ( UWord sysno, UWord a1, UWord a2, UWord a3, break; } return VG_(mk_SysRes_amd64_darwin)( scclass, err ? True : False, wHI, wLO ); + +#elif defined(VGP_s390x_linux) + UWord val; + + if (sysno == __NR_mmap) { + ULong argbuf[6]; + + argbuf[0] = a1; + argbuf[1] = a2; + argbuf[2] = a3; + argbuf[3] = a4; + argbuf[4] = a5; + argbuf[5] = a6; + val = do_syscall_WRK(sysno,(UWord)&argbuf[0],0,0,0,0,0); + } else { + val = do_syscall_WRK(sysno,a1,a2,a3,a4,a5,a6); + } + + return VG_(mk_SysRes_s390x_linux)( val ); + #elif defined(VGO_l4re) VG_(unimplemented)("unimplemented function VG_(do_syscall)"); return VG_(mk_SysRes_Error)(1); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-darwin.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-darwin.h index 17ffcc689..ec99d8b65 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-darwin.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-darwin.h @@ -295,8 +295,8 @@ DECL_TEMPLATE(darwin, getxattr); // 234 DECL_TEMPLATE(darwin, fgetxattr); // 235 DECL_TEMPLATE(darwin, setxattr); // 236 DECL_TEMPLATE(darwin, fsetxattr); // 237 -// NYI removexattr 238 -// NYI fremovexattr 239 +DECL_TEMPLATE(darwin, removexattr); // 238 +DECL_TEMPLATE(darwin, fremovexattr); // 239 DECL_TEMPLATE(darwin, listxattr); // 240 DECL_TEMPLATE(darwin, flistxattr); // 241 DECL_TEMPLATE(darwin, fsctl); // 242 @@ -334,7 +334,7 @@ DECL_TEMPLATE(darwin, sem_post); // 273 // NYI sem_getvalue 274 DECL_TEMPLATE(darwin, sem_init); // 275 DECL_TEMPLATE(darwin, sem_destroy); // 276 -// NYI open_extended 277 +DECL_TEMPLATE(darwin, open_extended) // 277 // NYI umask_extended 278 DECL_TEMPLATE(darwin, stat_extended); // 279 DECL_TEMPLATE(darwin, lstat_extended); // 280 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-linux.h index c8fc00698..e2a21d6ba 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-linux.h @@ -53,6 +53,7 @@ DECL_TEMPLATE(linux, sys_pwritev); DECL_TEMPLATE(linux, sys_dup3); DECL_TEMPLATE(linux, sys_getcpu); DECL_TEMPLATE(linux, sys_splice); +DECL_TEMPLATE(linux, sys_readahead); // POSIX, but various sub-cases differ between Linux and Darwin. DECL_TEMPLATE(linux, sys_fcntl); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_types_n_macros.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_types_n_macros.h index 5ba105d96..e7d6da6c0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_types_n_macros.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_types_n_macros.h @@ -89,7 +89,7 @@ typedef Int o_sysno; # if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \ || defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \ - || defined(VGP_arm_linux) + || defined(VGP_arm_linux) || defined(VGP_s390x_linux) Int o_arg1; Int o_arg2; Int o_arg3; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syscall-s390x-linux.S b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syscall-s390x-linux.S new file mode 100644 index 000000000..72cf74038 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syscall-s390x-linux.S @@ -0,0 +1,172 @@ + +/*--------------------------------------------------------------------*/ +/*--- Support for doing system calls. syscall-s390x-linux.S ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Christian Borntraeger */ + +#include "pub_core_basics_asm.h" +#include "pub_core_vkiscnums_asm.h" +#include "libvex_guest_offsets.h" + +#if defined(VGA_s390x) + +/*----------------------------------------------------------------*/ +/* + Perform a syscall for the client. This will run a syscall + with the client's specific per-thread signal mask. + + The structure of this function is such that, if the syscall is + interrupted by a signal, we can determine exactly what + execution state we were in with respect to the execution of + the syscall by examining the value of NIP in the signal + handler. This means that we can always do the appropriate + thing to precisely emulate the kernel's signal/syscall + interactions. + + The syscall number is taken from the argument, since the syscall + number can be encoded in the svc instruction itself. + The syscall result is written back to guest register r2. + + Returns 0 if the syscall was successfully called (even if the + syscall itself failed), or a nonzero error code in the lowest + 8 bits if one of the sigprocmasks failed (there's no way to + determine which one failed). And there's no obvious way to + recover from that either, but nevertheless we want to know. + + VG_(fixup_guest_state_after_syscall_interrupted) does the + thread state fixup in the case where we were interrupted by a + signal. + + Prototype: + + UWord ML_(do_syscall_for_client_WRK)( + Int syscallno, // r2 + void* guest_state, // r3 + const vki_sigset_t *sysmask, // r4 + const vki_sigset_t *postmask, // r5 + Int nsigwords) // r6 +*/ +/* from vki_arch.h */ +#define VKI_SIG_SETMASK 2 + +#define SP_SAVE 16 +#define SP_R2 SP_SAVE + 0*8 +#define SP_R3 SP_SAVE + 1*8 +#define SP_R4 SP_SAVE + 2*8 +#define SP_R5 SP_SAVE + 3*8 +#define SP_R6 SP_SAVE + 4*8 +#define SP_R7 SP_SAVE + 5*8 +#define SP_R8 SP_SAVE + 6*8 +#define SP_R9 SP_SAVE + 7*8 + +.align 4 +.globl ML_(do_syscall_for_client_WRK) +ML_(do_syscall_for_client_WRK): +1: /* Even though we can't take a signal until the sigprocmask completes, + start the range early. + If IA is in the range [1,2), the syscall hasn't been started yet */ + + /* Set the signal mask which should be current during the syscall. */ + /* Save and restore all the parameters and all the registers that + we clobber (r6-r9) */ + stmg %r2,%r9, SP_R2(%r15) + + lghi %r2, VKI_SIG_SETMASK /* how */ + lgr %r3, %r4 /* sysmask */ + lgr %r4, %r5 /* postmask */ + lgr %r5, %r6 /* nsigwords */ + svc __NR_rt_sigprocmask + cghi %r2, 0x0 + jne 7f /* sigprocmask failed */ + + /* OK, that worked. Now do the syscall proper. */ + lg %r9, SP_R3(%r15) /* guest state --> r9 */ + lg %r2, OFFSET_s390x_r2(%r9) /* guest r2 --> real r2 */ + lg %r3, OFFSET_s390x_r3(%r9) /* guest r3 --> real r3 */ + lg %r4, OFFSET_s390x_r4(%r9) /* guest r4 --> real r4 */ + lg %r5, OFFSET_s390x_r5(%r9) /* guest r5 --> real r5 */ + lg %r6, OFFSET_s390x_r6(%r9) /* guest r6 --> real r6 */ + lg %r7, OFFSET_s390x_r7(%r9) /* guest r7 --> real r7 */ + lg %r1, SP_R2(%r15) /* syscallno -> r1 */ + +2: svc 0 + +3: + stg %r2, OFFSET_s390x_r2(%r9) + +4: /* Re-block signals. If IA is in [4,5), then the syscall + is complete and we needn't worry about it. */ + lghi %r2, VKI_SIG_SETMASK /* how */ + lg %r3, SP_R5(%r15) /* postmask */ + lghi %r4, 0x0 /* NULL */ + lg %r5, SP_R6(%r15) /* nsigwords */ + svc __NR_rt_sigprocmask + cghi %r2, 0x0 + jne 7f /* sigprocmask failed */ + +5: /* Everyting ok. Return 0 and restore the call-saved + registers, that we have clobbered */ + lghi %r2, 0x0 + lmg %r6,%r9, SP_R6(%r15) + br %r14 + +7: /* Some problem. Return 0x8000 | error and restore the call-saved + registers we have clobbered. */ + nill %r2, 0x7fff + oill %r2, 0x8000 + lmg %r6,%r9, SP_R6(%r15) + br %r14 + +.section .rodata +/* Export the ranges so that + VG_(fixup_guest_state_after_syscall_interrupted) can do the + right thing */ + +.globl ML_(blksys_setup) +.globl ML_(blksys_restart) +.globl ML_(blksys_complete) +.globl ML_(blksys_committed) +.globl ML_(blksys_finished) + +/* The compiler can assume that 8 byte data elements are aligned on 8 byte */ +.align 8 +ML_(blksys_setup): .quad 1b +ML_(blksys_restart): .quad 2b +ML_(blksys_complete): .quad 3b +ML_(blksys_committed): .quad 4b +ML_(blksys_finished): .quad 5b +.previous + +/* Let the linker know we don't need an executable stack */ +.section .note.GNU-stack,"",@progbits + +#endif /* VGA_s390x */ + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-aix5.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-aix5.c index 8c4560682..c765a3bdb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-aix5.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-aix5.c @@ -45,6 +45,7 @@ #include "pub_core_xarray.h" #include "pub_core_clientstate.h" #include "pub_core_debuglog.h" +#include "pub_tool_gdbserver.h" // VG_(gdbserver) #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcfile.h" @@ -892,6 +893,15 @@ PRE(sys_execve) /* After this point, we can't recover if the execve fails. */ VG_(debugLog)(1, "syswrap", "Exec of %s\n", (Char*)ARG1); + // Terminate gdbserver if it is active. + if (VG_(clo_vgdb) != Vg_VgdbNo) { + // If the child will not be traced, we need to terminate gdbserver + // to cleanup the gdbserver resources (e.g. the FIFO files). + // If child will be traced, we also terminate gdbserver: the new + // Valgrind will start a fresh gdbserver after exec. + VG_(gdbserver) (0); + } + /* Resistance is futile. Nuke all other threads. POSIX mandates this. (Really, nuke them all, since the new process will make its own new thread.) */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-darwin.c index 1057bb108..03bad5e02 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-darwin.c @@ -32,6 +32,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_xarray.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-linux.c index 466fe1fb5..ece1a73b4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -1276,7 +1277,7 @@ static SyscallTableEntry syscall_table[] = { // (__NR_security, sys_ni_syscall), // 185 LINX_(__NR_gettid, sys_gettid), // 186 - // (__NR_readahead, sys_readahead), // 187 + LINX_(__NR_readahead, sys_readahead), // 187 LINX_(__NR_setxattr, sys_setxattr), // 188 LINX_(__NR_lsetxattr, sys_lsetxattr), // 189 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-arm-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-arm-linux.c index 875f9680b..076508908 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-arm-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-arm-linux.c @@ -35,6 +35,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -342,6 +343,7 @@ DECL_TEMPLATE(arm_linux, sys_sigreturn); DECL_TEMPLATE(arm_linux, sys_rt_sigreturn); DECL_TEMPLATE(arm_linux, sys_set_tls); DECL_TEMPLATE(arm_linux, sys_cacheflush); +DECL_TEMPLATE(arm_linux, sys_ptrace); PRE(sys_socketcall) { @@ -831,6 +833,12 @@ PRE(wrap_sys_shmat) PRINT("wrap_sys_shmat ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3); PRE_REG_READ3(long, "shmat", int, shmid, const void *, shmaddr, int, shmflg); + /* Round the attach address down to an VKI_SHMLBA boundary if the + client requested rounding. See #222545. This is necessary only + on arm-linux because VKI_SHMLBA is 4 * VKI_PAGE size; on all + other linux targets it is the same as the page size. */ + if (ARG3 & VKI_SHM_RND) + ARG2 = VG_ROUNDDN(ARG2, VKI_SHMLBA); arg2tmp = ML_(generic_PRE_sys_shmat)(tid, ARG1,ARG2,ARG3); if (arg2tmp == 0) SET_STATUS_Failure( VKI_EINVAL ); @@ -1199,6 +1207,124 @@ PRE(sys_cacheflush) SET_STATUS_Success(0); } +// ARG3 is only used for pointers into the traced process's address +// space and for offsets into the traced process's struct +// user_regs_struct. It is never a pointer into this process's memory +// space, and we should therefore not check anything it points to. +PRE(sys_ptrace) +{ + PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(int, "ptrace", + long, request, long, pid, long, addr, long, data); + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + PRE_MEM_WRITE( "ptrace(peek)", ARG4, + sizeof (long)); + break; + case VKI_PTRACE_GETREGS: + PRE_MEM_WRITE( "ptrace(getregs)", ARG4, + sizeof (struct vki_user_regs_struct)); + break; + case VKI_PTRACE_GETFPREGS: + PRE_MEM_WRITE( "ptrace(getfpregs)", ARG4, + sizeof (struct vki_user_fp)); + break; + case VKI_PTRACE_GETWMMXREGS: + PRE_MEM_WRITE( "ptrace(getwmmxregs)", ARG4, + VKI_IWMMXT_SIZE); + break; + case VKI_PTRACE_GETCRUNCHREGS: + PRE_MEM_WRITE( "ptrace(getcrunchregs)", ARG4, + VKI_CRUNCH_SIZE); + break; + case VKI_PTRACE_GETVFPREGS: + PRE_MEM_WRITE( "ptrace(getvfpregs)", ARG4, + sizeof (struct vki_user_vfp) ); + break; + case VKI_PTRACE_GETHBPREGS: + PRE_MEM_WRITE( "ptrace(gethbpregs)", ARG4, + sizeof (unsigned long) ); + break; + case VKI_PTRACE_SETREGS: + PRE_MEM_READ( "ptrace(setregs)", ARG4, + sizeof (struct vki_user_regs_struct)); + break; + case VKI_PTRACE_SETFPREGS: + PRE_MEM_READ( "ptrace(setfpregs)", ARG4, + sizeof (struct vki_user_fp)); + break; + case VKI_PTRACE_SETWMMXREGS: + PRE_MEM_READ( "ptrace(setwmmxregs)", ARG4, + VKI_IWMMXT_SIZE); + break; + case VKI_PTRACE_SETCRUNCHREGS: + PRE_MEM_READ( "ptrace(setcrunchregs)", ARG4, + VKI_CRUNCH_SIZE); + break; + case VKI_PTRACE_SETVFPREGS: + PRE_MEM_READ( "ptrace(setvfpregs)", ARG4, + sizeof (struct vki_user_vfp)); + break; + case VKI_PTRACE_SETHBPREGS: + PRE_MEM_READ( "ptrace(sethbpregs)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GET_THREAD_AREA: + PRE_MEM_WRITE( "ptrace(get_thread_area)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETEVENTMSG: + PRE_MEM_WRITE( "ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + PRE_MEM_WRITE( "ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_SETSIGINFO: + PRE_MEM_READ( "ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + default: + break; + } +} + +POST(sys_ptrace) +{ + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + POST_MEM_WRITE( ARG4, sizeof (long)); + break; + case VKI_PTRACE_GETREGS: + POST_MEM_WRITE( ARG4, sizeof (struct vki_user_regs_struct)); + break; + case VKI_PTRACE_GETFPREGS: + POST_MEM_WRITE( ARG4, sizeof (struct vki_user_fp)); + break; + case VKI_PTRACE_GETWMMXREGS: + POST_MEM_WRITE( ARG4, VKI_IWMMXT_SIZE); + break; + case VKI_PTRACE_GETCRUNCHREGS: + POST_MEM_WRITE( ARG4, VKI_CRUNCH_SIZE); + break; + case VKI_PTRACE_GETVFPREGS: + POST_MEM_WRITE( ARG4, sizeof(struct vki_user_vfp)); + break; + case VKI_PTRACE_GET_THREAD_AREA: + case VKI_PTRACE_GETHBPREGS: + case VKI_PTRACE_GETEVENTMSG: + POST_MEM_WRITE( ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + /* XXX: This is a simplification. Different parts of the + * siginfo_t are valid depending on the type of signal. + */ + POST_MEM_WRITE( ARG4, sizeof(vki_siginfo_t)); + break; + default: + break; + } +} #undef PRE #undef POST @@ -1256,7 +1382,7 @@ static SyscallTableEntry syscall_main_table[] = { LINX_(__NR_getuid, sys_getuid16), // 24 ## P //zz //zz // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN) -// PLAXY(__NR_ptrace, sys_ptrace), // 26 + PLAXY(__NR_ptrace, sys_ptrace), // 26 GENX_(__NR_alarm, sys_alarm), // 27 //zz // (__NR_oldfstat, sys_fstat), // 28 * L -- obsolete GENX_(__NR_pause, sys_pause), // 29 @@ -1444,7 +1570,7 @@ static SyscallTableEntry syscall_main_table[] = { LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 179 GENXY(__NR_pread64, sys_pread64), // 180 - //GENX_(__NR_pwrite64, sys_pwrite64_on32bitplat), // 181 + GENX_(__NR_pwrite64, sys_pwrite64), // 181 LINX_(__NR_chown, sys_chown16), // 182 GENXY(__NR_getcwd, sys_getcwd), // 183 LINXY(__NR_capget, sys_capget), // 184 @@ -1498,7 +1624,7 @@ static SyscallTableEntry syscall_main_table[] = { // PLAXY(223, sys_syscall223), // 223 // sys_bproc? LINX_(__NR_gettid, sys_gettid), // 224 -//zz // (__NR_readahead, sys_readahead), // 225 */(Linux?) + LINX_(__NR_readahead, sys_readahead), // 225 */Linux LINX_(__NR_setxattr, sys_setxattr), // 226 LINX_(__NR_lsetxattr, sys_lsetxattr), // 227 LINX_(__NR_fsetxattr, sys_fsetxattr), // 228 @@ -1626,7 +1752,6 @@ static SyscallTableEntry syscall_main_table[] = { PLAX_(__NR_shmget, sys_shmget), //307 PLAXY(__NR_shmctl, sys_shmctl), // 308 // LINX_(__NR_pselect6, sys_pselect6), // -// LINXY(__NR_ppoll, sys_ppoll), // 309 // LINX_(__NR_unshare, sys_unshare), // 310 LINX_(__NR_set_robust_list, sys_set_robust_list), // 311 @@ -1657,7 +1782,8 @@ static SyscallTableEntry syscall_main_table[] = { // correspond to what's in include/vki/vki-scnums-arm-linux.h. // From here onwards, please ensure the numbers are correct. - LINX_(__NR_pselect6, sys_pselect6), // 335 + LINX_(__NR_pselect6, sys_pselect6), // 335 + LINXY(__NR_ppoll, sys_ppoll), // 336 LINXY(__NR_signalfd4, sys_signalfd4), // 355 LINX_(__NR_eventfd2, sys_eventfd2), // 356 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-darwin.c index d2c46d83c..463b33fbd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-darwin.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_xarray.h" @@ -40,6 +41,7 @@ #include "pub_core_debuglog.h" #include "pub_core_debuginfo.h" // VG_(di_notify_*) #include "pub_core_transtab.h" // VG_(discard_translations) +#include "pub_tool_gdbserver.h" // VG_(gdbserver) #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcfile.h" @@ -689,9 +691,23 @@ void ML_(sync_mappings)(const HChar *when, const HChar *where, Int num) PRE(ioctl) { *flags |= SfMayBlock; - PRINT("ioctl ( %ld, 0x%lx, %#lx )",ARG1,ARG2,ARG3); - PRE_REG_READ3(long, "ioctl", - unsigned int, fd, unsigned int, request, unsigned long, arg); + + /* Handle ioctls that don't take an arg first */ + switch (ARG2 /* request */) { + case VKI_TIOCSCTTY: + case VKI_TIOCEXCL: + case VKI_TIOCPTYGRANT: + case VKI_TIOCPTYUNLK: + case VKI_DTRACEHIOC_REMOVE: + PRINT("ioctl ( %ld, 0x%lx )",ARG1,ARG2); + PRE_REG_READ2(long, "ioctl", + unsigned int, fd, unsigned int, request); + return; + default: + PRINT("ioctl ( %ld, 0x%lx, %#lx )",ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "ioctl", + unsigned int, fd, unsigned int, request, unsigned long, arg); + } switch (ARG2 /* request */) { case VKI_TIOCGWINSZ: @@ -720,9 +736,6 @@ PRE(ioctl) /* Set a process group ID? */ PRE_MEM_WRITE( "ioctl(TIOCGPGRP)", ARG3, sizeof(vki_pid_t) ); break; - case VKI_TIOCSCTTY: - /* Just takes an int value. */ - break; case VKI_FIONBIO: PRE_MEM_READ( "ioctl(FIONBIO)", ARG3, sizeof(int) ); break; @@ -845,7 +858,6 @@ PRE(ioctl) PRE_MEM_WRITE( "ioctl(FIONREAD)", ARG3, sizeof(int) ); break; - case VKI_DTRACEHIOC_REMOVE: case VKI_DTRACEHIOC_ADDDOF: break; @@ -865,9 +877,6 @@ PRE(ioctl) case VKI_TIOCPTYGNAME: PRE_MEM_WRITE( "ioctl(TIOCPTYGNAME)", ARG3, 128 ); break; - case VKI_TIOCPTYGRANT: - case VKI_TIOCPTYUNLK: - break; default: ML_(PRE_unknown_ioctl)(tid, ARG2, ARG3); @@ -1773,6 +1782,27 @@ PRE(fsetxattr) } +PRE(removexattr) +{ + PRINT( "removexattr ( %#lx(%s), %#lx(%s), %ld )", + ARG1, (HChar*)ARG1, ARG2, (HChar*)ARG2, ARG3 ); + PRE_REG_READ3(int, "removexattr", + const char*, "path", char*, "attrname", int, "options"); + PRE_MEM_RASCIIZ( "removexattr(path)", ARG1 ); + PRE_MEM_RASCIIZ( "removexattr(attrname)", ARG2 ); +} + + +PRE(fremovexattr) +{ + PRINT( "fremovexattr ( %ld, %#lx(%s), %ld )", + ARG1, ARG2, (HChar*)ARG2, ARG3 ); + PRE_REG_READ3(int, "fremovexattr", + int, "fd", char*, "attrname", int, "options"); + PRE_MEM_RASCIIZ( "removexattr(attrname)", ARG2 ); +} + + PRE(listxattr) { PRINT( "listxattr ( %#lx(%s), %#lx, %lu, %ld )", @@ -2011,7 +2041,7 @@ PRE(fchmod_extended) chmod_extended is broken in the same way. */ PRINT("fchmod_extended ( %ld, %ld, %ld, %ld, %#lx )", ARG1, ARG2, ARG3, ARG4, ARG5); - PRE_REG_READ5(long, "fchmod", + PRE_REG_READ5(long, "fchmod_extended", unsigned int, fildes, uid_t, uid, gid_t, gid, @@ -2020,8 +2050,10 @@ PRE(fchmod_extended) /* DDD: relative to the xnu sources (kauth_copyinfilesec), this is just way wrong. [The trouble is with the size, which depends on a non-trival kernel computation] */ - PRE_MEM_READ( "fchmod_extended(xsecurity)", ARG5, - sizeof(struct vki_kauth_filesec) ); + if (ARG5) { + PRE_MEM_READ( "fchmod_extended(xsecurity)", ARG5, + sizeof(struct vki_kauth_filesec) ); + } } PRE(chmod_extended) @@ -2030,7 +2062,7 @@ PRE(chmod_extended) fchmod_extended is broken in the same way. */ PRINT("chmod_extended ( %#lx(%s), %ld, %ld, %ld, %#lx )", ARG1, ARG1 ? (HChar*)ARG1 : "(null)", ARG2, ARG3, ARG4, ARG5); - PRE_REG_READ5(long, "chmod", + PRE_REG_READ5(long, "chmod_extended", unsigned int, fildes, uid_t, uid, gid_t, gid, @@ -2040,10 +2072,34 @@ PRE(chmod_extended) /* DDD: relative to the xnu sources (kauth_copyinfilesec), this is just way wrong. [The trouble is with the size, which depends on a non-trival kernel computation] */ - PRE_MEM_READ( "chmod_extended(xsecurity)", ARG5, - sizeof(struct vki_kauth_filesec) ); + if (ARG5) { + PRE_MEM_READ( "chmod_extended(xsecurity)", ARG5, + sizeof(struct vki_kauth_filesec) ); + } } +PRE(open_extended) +{ + /* DDD: Note: this is not really correct. Handling of + {,f}chmod_extended is broken in the same way. */ + PRINT("open_extended ( %#lx(%s), 0x%lx, %ld, %ld, %ld, %#lx )", + ARG1, ARG1 ? (HChar*)ARG1 : "(null)", + ARG2, ARG3, ARG4, ARG5, ARG6); + PRE_REG_READ6(long, "open_extended", + char*, path, + int, flags, + uid_t, uid, + gid_t, gid, + vki_mode_t, mode, + void* /*really,user_addr_t*/, xsecurity); + PRE_MEM_RASCIIZ("open_extended(path)", ARG1); + /* DDD: relative to the xnu sources (kauth_copyinfilesec), this + is just way wrong. [The trouble is with the size, which depends on a + non-trival kernel computation] */ + if (ARG6) + PRE_MEM_READ( "open_extended(xsecurity)", ARG6, + sizeof(struct vki_kauth_filesec) ); +} // This is a ridiculous syscall. Specifically, the 'entries' argument points // to a buffer that contains one or more 'accessx_descriptor' structs followed @@ -2702,7 +2758,13 @@ PRE(posix_spawn) } // Decide whether or not we want to follow along - trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG2 ); + { // Make 'child_argv' be a pointer to the child's arg vector + // (skipping the exe name) + HChar** child_argv = (HChar**)ARG4; + if (child_argv && child_argv[0] == NULL) + child_argv = NULL; + trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG2, child_argv ); + } // Do the important checks: it is a file, is executable, permissions are // ok, etc. We allow setuid executables to run only in the case when @@ -2726,6 +2788,15 @@ PRE(posix_spawn) /* Ok. So let's give it a try. */ VG_(debugLog)(1, "syswrap", "Posix_spawn of %s\n", (Char*)ARG2); + // Terminate gdbserver if it is active. + if (VG_(clo_vgdb) != Vg_VgdbNo) { + // If the child will not be traced, we need to terminate gdbserver + // to cleanup the gdbserver resources (e.g. the FIFO files). + // If child will be traced, we also terminate gdbserver: the new + // Valgrind will start a fresh gdbserver after exec. + VG_(gdbserver) (tid); + } + // Set up the child's exe path. // if (trace_this_child) { @@ -7802,8 +7873,8 @@ const SyscallTableEntry ML_(syscall_table)[] = { MACXY(__NR_fgetxattr, fgetxattr), MACX_(__NR_setxattr, setxattr), MACX_(__NR_fsetxattr, fsetxattr), -// _____(__NR_removexattr), -// _____(__NR_fremovexattr), + MACX_(__NR_removexattr, removexattr), + MACX_(__NR_fremovexattr, fremovexattr), MACXY(__NR_listxattr, listxattr), // 240 MACXY(__NR_flistxattr, flistxattr), MACXY(__NR_fsctl, fsctl), @@ -7845,7 +7916,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { // _____(__NR_sem_getvalue), MACXY(__NR_sem_init, sem_init), MACX_(__NR_sem_destroy, sem_destroy), -// _____(__NR_open_extended), + MACX_(__NR_open_extended, open_extended), // 277 // _____(__NR_umask_extended), MACXY(__NR_stat_extended, stat_extended), MACXY(__NR_lstat_extended, lstat_extended), // 280 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-generic.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-generic.c index f58cca136..b6696b59e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-generic.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-generic.c @@ -34,6 +34,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_debuginfo.h" // VG_(di_notify_*) #include "pub_core_aspacemgr.h" @@ -42,6 +43,7 @@ #include "pub_core_clientstate.h" // VG_(brk_base), VG_(brk_limit) #include "pub_core_debuglog.h" #include "pub_core_errormgr.h" +#include "pub_tool_gdbserver.h" // VG_(gdbserver) #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcfile.h" @@ -427,6 +429,9 @@ SysRes do_mremap( Addr old_addr, SizeT old_len, /* that failed. Look elsewhere. */ advised = VG_(am_get_advisory_client_simple)( 0, new_len, &ok ); if (ok) { + Bool oldR = old_seg->hasR; + Bool oldW = old_seg->hasW; + Bool oldX = old_seg->hasX; /* assert new area does not overlap old */ vg_assert(advised+new_len-1 < old_addr || advised > old_addr+old_len-1); @@ -437,8 +442,7 @@ SysRes do_mremap( Addr old_addr, SizeT old_len, MIN_SIZET(old_len,new_len) ); if (new_len > old_len) VG_TRACK( new_mem_mmap, advised+old_len, new_len-old_len, - old_seg->hasR, old_seg->hasW, old_seg->hasX, - 0/*di_handle*/ ); + oldR, oldW, oldX, 0/*di_handle*/ ); VG_TRACK(die_mem_munmap, old_addr, old_len); if (d) { VG_(discard_translations)( old_addr, old_len, "do_remap(4)" ); @@ -1719,11 +1723,18 @@ UInt get_shm_size ( Int shmid ) #ifdef __NR_shmctl # ifdef VKI_IPC_64 struct vki_shmid64_ds buf; - SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, VKI_IPC_STAT, (UWord)&buf); -# else +# ifdef VGP_amd64_linux + /* See bug 222545 comment 7 */ + SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, + VKI_IPC_STAT, (UWord)&buf); +# else + SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, + VKI_IPC_STAT|VKI_IPC_64, (UWord)&buf); +# endif +# else /* !def VKI_IPC_64 */ struct vki_shmid_ds buf; SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, VKI_IPC_STAT, (UWord)&buf); -# endif +# endif /* def VKI_IPC_64 */ #else struct vki_shmid_ds buf; SysRes __res = VG_(do_syscall5)(__NR_ipc, 24 /* IPCOP_shmctl */, shmid, @@ -1745,9 +1756,26 @@ ML_(generic_PRE_sys_shmat) ( ThreadId tid, UWord tmp; Bool ok; if (arg1 == 0) { + /* arm-linux only: work around the fact that + VG_(am_get_advisory_client_simple) produces something that is + VKI_PAGE_SIZE aligned, whereas what we want is something + VKI_SHMLBA aligned, and VKI_SHMLBA >= VKI_PAGE_SIZE. Hence + increase the request size by VKI_SHMLBA - VKI_PAGE_SIZE and + then round the result up to the next VKI_SHMLBA boundary. + See bug 222545 comment 15. So far, arm-linux is the only + platform where this is known to be necessary. */ + vg_assert(VKI_SHMLBA >= VKI_PAGE_SIZE); + if (VKI_SHMLBA > VKI_PAGE_SIZE) { + segmentSize += VKI_SHMLBA - VKI_PAGE_SIZE; + } tmp = VG_(am_get_advisory_client_simple)(0, segmentSize, &ok); - if (ok) - arg1 = tmp; + if (ok) { + if (VKI_SHMLBA > VKI_PAGE_SIZE) { + arg1 = VG_ROUNDUP(tmp, VKI_SHMLBA); + } else { + arg1 = tmp; + } + } } else if (!ML_(valid_client_addr)(arg1, segmentSize, tid, "shmat")) arg1 = 0; @@ -1759,7 +1787,7 @@ ML_(generic_POST_sys_shmat) ( ThreadId tid, UWord res, UWord arg0, UWord arg1, UWord arg2 ) { - UInt segmentSize = get_shm_size ( arg0 ); + UInt segmentSize = VG_PGROUNDUP(get_shm_size(arg0)); if ( segmentSize > 0 ) { UInt prot = VKI_PROT_READ|VKI_PROT_WRITE; Bool d; @@ -1776,7 +1804,7 @@ ML_(generic_POST_sys_shmat) ( ThreadId tid, cope with the discrepancy, aspacem's sync checker omits the dev/ino correspondence check in cases where V does not know the dev/ino. */ - d = VG_(am_notify_client_shmat)( res, VG_PGROUNDUP(segmentSize), prot ); + d = VG_(am_notify_client_shmat)( res, segmentSize, prot ); /* we don't distinguish whether it's read-only or * read-write -- it doesn't matter really. */ @@ -1945,6 +1973,11 @@ ML_(generic_POST_sys_shmctl) ( ThreadId tid, * call, mmap (aka sys_mmap) which takes the arguments in the * normal way and the offset in bytes. * + * - On s390x-linux there is mmap (aka old_mmap) which takes the + * arguments in a memory block and the offset in bytes. mmap2 + * is also available (but not exported via unistd.h) with + * arguments in a memory block and the offset in pages. + * * To cope with all this we provide a generic handler function here * and then each platform implements one or more system call handlers * which call this generic routine after extracting and normalising @@ -2540,8 +2573,29 @@ PRE(sys_execve) return; } + // debug-only printing + if (0) { + VG_(printf)("ARG1 = %p(%s)\n", (void*)ARG1, (HChar*)ARG1); + if (ARG2) { + VG_(printf)("ARG2 = "); + Int q; + HChar** vec = (HChar**)ARG2; + for (q = 0; vec[q]; q++) + VG_(printf)("%p(%s) ", vec[q], vec[q]); + VG_(printf)("\n"); + } else { + VG_(printf)("ARG2 = null\n"); + } + } + // Decide whether or not we want to follow along - trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG1 ); + { // Make 'child_argv' be a pointer to the child's arg vector + // (skipping the exe name) + HChar** child_argv = (HChar**)ARG2; + if (child_argv && child_argv[0] == NULL) + child_argv = NULL; + trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG1, child_argv ); + } // Do the important checks: it is a file, is executable, permissions are // ok, etc. We allow setuid executables to run only in the case when @@ -2566,6 +2620,16 @@ PRE(sys_execve) /* After this point, we can't recover if the execve fails. */ VG_(debugLog)(1, "syswrap", "Exec of %s\n", (Char*)ARG1); + + // Terminate gdbserver if it is active. + if (VG_(clo_vgdb) != Vg_VgdbNo) { + // If the child will not be traced, we need to terminate gdbserver + // to cleanup the gdbserver resources (e.g. the FIFO files). + // If child will be traced, we also terminate gdbserver: the new + // Valgrind will start a fresh gdbserver after exec. + VG_(gdbserver) (0); + } + /* Resistance is futile. Nuke all other threads. POSIX mandates this. (Really, nuke them all, since the new process will make its own new thread.) */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-l4re.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-l4re.c index 0747ff589..040643eb9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-l4re.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-l4re.c @@ -30,6 +30,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuginfo.h" // VG_(di_notify_*) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux-variants.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux-variants.c index 27463edef..dc433ec3a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux-variants.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux-variants.c @@ -48,6 +48,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuginfo.h" // VG_(di_notify_*) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux.c index c5fc108f2..e3c57d69b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuginfo.h" // VG_(di_notify_*) @@ -206,6 +207,14 @@ static void run_a_thread_NORETURN ( Word tidW ) "svc 0x00000000\n" /* exit(tst->os_state.exitcode) */ : "=m" (tst->status) : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)); +#elif defined(VGP_s390x_linux) + asm volatile ( + "st %1, %0\n" /* set tst->status = VgTs_Empty */ + "lg 2, %3\n" /* set r2 = tst->os_state.exitcode */ + "svc %2\n" /* exit(tst->os_state.exitcode) */ + : "=m" (tst->status) + : "d" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode) + : "2"); #else # error Unknown platform #endif @@ -288,6 +297,11 @@ void VG_(main_thread_wrapper_NORETURN)(ThreadId tid) sp -= 112; sp &= ~((Addr)0xF); *(UWord *)sp = 0; +#elif defined(VGP_s390x_linux) + /* make a stack frame */ + sp -= 160; + sp &= ~((Addr)0xF); + *(UWord *)sp = 0; #endif /* If we can't even allocate the first thread's stack, we're hosed. @@ -342,6 +356,10 @@ SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, res = VG_(do_syscall5)( __NR_clone, flags, (UWord)NULL, (UWord)parent_tidptr, (UWord)child_tidptr, (UWord)NULL ); +#elif defined(VGP_s390x_linux) + /* Note that s390 has the stack first and then the flags */ + res = VG_(do_syscall4)( __NR_clone, (UWord) NULL, flags, + (UWord)parent_tidptr, (UWord)child_tidptr); #else # error Unknown platform #endif @@ -2637,6 +2655,29 @@ PRE(sys_lseek) unsigned int, fd, vki_off_t, offset, unsigned int, whence); } +/* --------------------------------------------------------------------- + readahead wrapper + ------------------------------------------------------------------ */ + +PRE(sys_readahead) +{ + *flags |= SfMayBlock; +#if VG_WORDSIZE == 4 + PRINT("sys_readahead ( %ld, %lld, %ld )", ARG1, MERGE64(ARG2,ARG3), ARG4); + PRE_REG_READ4(vki_off_t, "readahead", + int, fd, unsigned, MERGE64_FIRST(offset), + unsigned, MERGE64_SECOND(offset), vki_size_t, count); +#elif VG_WORDSIZE == 8 + PRINT("sys_readahead ( %ld, %lld, %ld )", ARG1, (Long)ARG2, ARG3); + PRE_REG_READ3(vki_off_t, "readahead", + int, fd, vki_loff_t, offset, vki_size_t, count); +#else +# error Unexpected word size +#endif + if (!ML_(fd_allowed)(ARG1, "readahead", tid, False)) + SET_STATUS_Failure( VKI_EBADF ); +} + /* --------------------------------------------------------------------- sig* wrappers ------------------------------------------------------------------ */ @@ -3543,7 +3584,7 @@ POST(sys_lookup_dcookie) } #endif -#if defined(VGP_amd64_linux) +#if defined(VGP_amd64_linux) || defined(VGP_s390x_linux) PRE(sys_lookup_dcookie) { *flags |= SfMayBlock; @@ -3582,6 +3623,7 @@ PRE(sys_fcntl) // These ones use ARG3 as "arg". case VKI_F_DUPFD: + case VKI_F_DUPFD_CLOEXEC: case VKI_F_SETFD: case VKI_F_SETFL: case VKI_F_SETLEASE: @@ -3634,6 +3676,15 @@ POST(sys_fcntl) ML_(record_fd_open_named)(tid, RES); } } + else if (ARG2 == VKI_F_DUPFD_CLOEXEC) { + if (!ML_(fd_allowed)(RES, "fcntl(DUPFD_CLOEXEC)", tid, True)) { + VG_(close)(RES); + SET_STATUS_Failure( VKI_EMFILE ); + } else { + if (VG_(clo_track_fds)) + ML_(record_fd_open_named)(tid, RES); + } + } } // XXX: wrapper only suitable for 32-bit systems @@ -3654,6 +3705,7 @@ PRE(sys_fcntl64) // These ones use ARG3 as "arg". case VKI_F_DUPFD: + case VKI_F_DUPFD_CLOEXEC: case VKI_F_SETFD: case VKI_F_SETFL: case VKI_F_SETLEASE: @@ -3699,6 +3751,15 @@ POST(sys_fcntl64) ML_(record_fd_open_named)(tid, RES); } } + else if (ARG2 == VKI_F_DUPFD_CLOEXEC) { + if (!ML_(fd_allowed)(RES, "fcntl64(DUPFD_CLOEXEC)", tid, True)) { + VG_(close)(RES); + SET_STATUS_Failure( VKI_EMFILE ); + } else { + if (VG_(clo_track_fds)) + ML_(record_fd_open_named)(tid, RES); + } + } } /* --------------------------------------------------------------------- @@ -3708,9 +3769,6 @@ POST(sys_fcntl64) PRE(sys_ioctl) { *flags |= SfMayBlock; - PRINT("sys_ioctl ( %ld, 0x%lx, %#lx )",ARG1,ARG2,ARG3); - PRE_REG_READ3(long, "ioctl", - unsigned int, fd, unsigned int, request, unsigned long, arg); // We first handle the ones that don't use ARG3 (even as a // scalar/non-pointer argument). @@ -4717,6 +4775,8 @@ PRE(sys_ioctl) } } break; + case VKI_USBDEVFS_RESET: + break; /* I2C (/dev/i2c-*) ioctls */ case VKI_I2C_SLAVE: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-main.c index 922389a1a..6fcd4dd59 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-main.c @@ -34,6 +34,7 @@ #include "pub_core_aspacemgr.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_libcbase.h" #include "pub_core_libcassert.h" @@ -60,14 +61,20 @@ /* Useful info which needs to be recorded somewhere: Use of registers in syscalls is: - NUM ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 RESULT + NUM ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 RESULT LINUX: - x86 eax ebx ecx edx esi edi ebp n/a n/a eax (== NUM) - amd64 rax rdi rsi rdx r10 r8 r9 n/a n/a rax (== NUM) - ppc32 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) - ppc64 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) - arm r7 r0 r1 r2 r3 r4 r5 n/a n/a r0 (== ARG1) - + x86 eax ebx ecx edx esi edi ebp n/a n/a eax (== NUM) + amd64 rax rdi rsi rdx r10 r8 r9 n/a n/a rax (== NUM) + ppc32 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) + ppc64 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) + arm r7 r0 r1 r2 r3 r4 r5 n/a n/a r0 (== ARG1) + On s390x the svc instruction is used for system calls. The system call + number is encoded in the instruction (8 bit immediate field). Since Linux + 2.6 it is also allowed to use svc 0 with the system call number in r1. + This was introduced for system calls >255, but works for all. It is + also possible to see the svc 0 together with an EXecute instruction, that + fills in the immediate field. + s390x r1/SVC r2 r3 r4 r5 r6 r7 n/a n/a r2 (== ARG1) AIX: ppc32 r2 r3 r4 r5 r6 r7 r8 r9 r10 r3(res),r4(err) ppc64 r2 r3 r4 r5 r6 r7 r8 r9 r10 r3(res),r4(err) @@ -163,6 +170,9 @@ x86: Success(N) ==> edx:eax = N, cc = 0 Fail(N) ==> edx:eax = N, cc = 1 + s390x: Success(N) ==> r2 = N + Fail(N) ==> r2 = -N + * The post wrapper is called if: - it exists, and @@ -669,6 +679,17 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs* canonical, canonical->arg7 = gst->guest_EBP; canonical->arg8 = 0; +#elif defined(VGP_s390x_linux) + VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla; + canonical->sysno = gst->guest_SYSNO; + canonical->arg1 = gst->guest_r2; + canonical->arg2 = gst->guest_r3; + canonical->arg3 = gst->guest_r4; + canonical->arg4 = gst->guest_r5; + canonical->arg5 = gst->guest_r6; + canonical->arg6 = gst->guest_r7; + canonical->arg7 = 0; + canonical->arg8 = 0; #else # error "getSyscallArgsFromGuestState: unknown arch" #endif @@ -796,6 +817,16 @@ void putSyscallArgsIntoGuestState ( /*IN*/ SyscallArgs* canonical, gst->guest_EDI = canonical->arg6; gst->guest_EBP = canonical->arg7; +#elif defined(VGP_s390x_linux) + VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla; + gst->guest_SYSNO = canonical->sysno; + gst->guest_r2 = canonical->arg1; + gst->guest_r3 = canonical->arg2; + gst->guest_r4 = canonical->arg3; + gst->guest_r5 = canonical->arg4; + gst->guest_r6 = canonical->arg5; + gst->guest_r7 = canonical->arg6; + #else # error "putSyscallArgsIntoGuestState: unknown arch" #endif @@ -911,10 +942,18 @@ void getSyscallStatusFromGuestState ( /*OUT*/SyscallStatus* canonical, canonical->what = SsComplete; # elif defined(VGP_x86_l4re) + // XXX // We need real expected statuses here to make the ifdef in lines + // 1803-1822 go away. + //VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; canonical->sres = VG_(mk_SysRes_x86_l4re)( 0 ); canonical->what = SsComplete; +# elif defined(VGP_s390x_linux) + VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla; + canonical->sres = VG_(mk_SysRes_s390x_linux)( gst->guest_r2 ); + canonical->what = SsComplete; + # else # error "getSyscallStatusFromGuestState: unknown arch" # endif @@ -1088,6 +1127,15 @@ void putSyscallStatusIntoGuestState ( /*IN*/ ThreadId tid, vg_assert(0); break; } + +# elif defined(VGP_s390x_linux) + VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla; + vg_assert(canonical->what == SsComplete); + if (sr_isError(canonical->sres)) { + gst->guest_r2 = - (Long)sr_Err(canonical->sres); + } else { + gst->guest_r2 = sr_Res(canonical->sres); + } # elif defined(VGP_x86_l4re) //VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; @@ -1218,6 +1266,16 @@ void getSyscallArgLayout ( /*OUT*/SyscallArgLayout* layout ) layout->o_arg8 = -1; /* impossible value */ layout->o_retval = OFFSET_x86_EAX; +#elif defined(VGP_s390x_linux) + layout->o_sysno = OFFSET_s390x_SYSNO; + layout->o_arg1 = OFFSET_s390x_r2; + layout->o_arg2 = OFFSET_s390x_r3; + layout->o_arg3 = OFFSET_s390x_r4; + layout->o_arg4 = OFFSET_s390x_r5; + layout->o_arg5 = OFFSET_s390x_r6; + layout->o_arg6 = OFFSET_s390x_r7; + layout->uu_arg7 = -1; /* impossible value */ + layout->uu_arg8 = -1; /* impossible value */ #else # error "getSyscallLayout: unknown arch" #endif @@ -1798,6 +1856,7 @@ void VG_(post_syscall) (ThreadId tid) previously written the result into the guest state. */ vg_assert(sci->status.what == SsComplete); +#if !defined(VGO_l4re) getSyscallStatusFromGuestState( &test_status, &tst->arch.vex ); if (!(sci->flags & SfNoWriteResult)) vg_assert(eq_SyscallStatus( &sci->status, &test_status )); @@ -1815,7 +1874,6 @@ void VG_(post_syscall) (ThreadId tid) /* Get the system call number. Because the pre-handler isn't allowed to mess with it, it should be the same for both the original and potentially-modified args. */ -#if !defined(VGO_l4re) vg_assert(sci->args.sysno == sci->orig_args.sysno); #endif @@ -2091,6 +2149,25 @@ void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch ) #elif defined(VGP_amd64_darwin) // DDD: #warning GrP fixme amd64 restart unimplemented vg_assert(0); + +#elif defined(VGP_s390x_linux) + arch->vex.guest_IA -= 2; // sizeof(syscall) + + /* Make sure our caller is actually sane, and we're really backing + back over a syscall. + + syscall == 0A + */ + { + UChar *p = (UChar *)arch->vex.guest_IA; + if (p[0] != 0x0A) + VG_(message)(Vg_DebugMsg, + "?! restarting over syscall at %#llx %02x %02x\n", + arch->vex.guest_IA, p[0], p[1]); + + vg_assert(p[0] == 0x0A); + } + #elif defined(VGO_l4re) VG_(unimplemented)("unimplemented function ML_(fixup_guest_state_to_restart_syscall)()"); @@ -2335,7 +2412,7 @@ void ML_(wqthread_continue_NORETURN)(ThreadId tid) sci->status.what = SsIdle; vg_assert(tst->sched_jmpbuf_valid); - __builtin_longjmp(tst->sched_jmpbuf, True); + VG_MINIMAL_LONGJMP(tst->sched_jmpbuf); /* NOTREACHED */ vg_assert(0); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc32-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc32-linux.c index e0bb3312a..9baf8d8e0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -1061,7 +1062,7 @@ PRE(sys_sigreturn) /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for an explanation of what follows. */ - ThreadState* tst; + //ThreadState* tst; PRINT("sys_sigreturn ( )"); vg_assert(VG_(is_valid_tid)(tid)); @@ -1070,7 +1071,7 @@ PRE(sys_sigreturn) ///* Adjust esp to point to start of frame; skip back up over // sigreturn sequence's "popl %eax" and handler ret addr */ - tst = VG_(get_ThreadState)(tid); + //tst = VG_(get_ThreadState)(tid); //tst->arch.vex.guest_ESP -= sizeof(Addr)+sizeof(Word); // Should we do something equivalent on ppc32? Who knows. @@ -1096,7 +1097,7 @@ PRE(sys_rt_sigreturn) /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for an explanation of what follows. */ - ThreadState* tst; + //ThreadState* tst; PRINT("rt_sigreturn ( )"); vg_assert(VG_(is_valid_tid)(tid)); @@ -1105,7 +1106,7 @@ PRE(sys_rt_sigreturn) ///* Adjust esp to point to start of frame; skip back up over handler // ret addr */ - tst = VG_(get_ThreadState)(tid); + //tst = VG_(get_ThreadState)(tid); //tst->arch.vex.guest_ESP -= sizeof(Addr); // Should we do something equivalent on ppc32? Who knows. @@ -1746,7 +1747,7 @@ static SyscallTableEntry syscall_table[] = { // Nb: we treat vfork as fork GENX_(__NR_vfork, sys_fork), // 189 GENXY(__NR_ugetrlimit, sys_getrlimit), // 190 -//__NR_readahead // 191 ppc/Linux only? + LINX_(__NR_readahead, sys_readahead), // 191 */Linux PLAX_(__NR_mmap2, sys_mmap2), // 192 GENX_(__NR_truncate64, sys_truncate64), // 193 GENX_(__NR_ftruncate64, sys_ftruncate64), // 194 @@ -1854,6 +1855,8 @@ static SyscallTableEntry syscall_table[] = { PLAXY(__NR_spu_run, sys_spu_run), // 278 PLAX_(__NR_spu_create, sys_spu_create), // 279 + LINXY(__NR_ppoll, sys_ppoll), // 281 + LINXY(__NR_openat, sys_openat), // 286 LINX_(__NR_mkdirat, sys_mkdirat), // 287 LINX_(__NR_mknodat, sys_mknodat), // 288 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc64-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc64-linux.c index 4f1bf29b9..6e91052d7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc64-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-ppc64-linux.c @@ -33,6 +33,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -1046,7 +1047,7 @@ PRE(sys_rt_sigreturn) /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for an explanation of what follows. */ - ThreadState* tst; + //ThreadState* tst; PRINT("sys_rt_sigreturn ( )"); vg_assert(VG_(is_valid_tid)(tid)); @@ -1055,7 +1056,7 @@ PRE(sys_rt_sigreturn) ///* Adjust esp to point to start of frame; skip back up over handler // ret addr */ - tst = VG_(get_ThreadState)(tid); + //tst = VG_(get_ThreadState)(tid); //tst->arch.vex.guest_ESP -= sizeof(Addr); // Should we do something equivalent on ppc64-linux? Who knows. @@ -1379,7 +1380,7 @@ static SyscallTableEntry syscall_table[] = { // _____(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178 GENXY(__NR_pread64, sys_pread64), // 179 -// _____(__NR_pwrite64, sys_pwrite64), // 180 + GENX_(__NR_pwrite64, sys_pwrite64), // 180 GENX_(__NR_chown, sys_chown), // 181 GENXY(__NR_getcwd, sys_getcwd), // 182 LINXY(__NR_capget, sys_capget), // 183 @@ -1392,7 +1393,7 @@ static SyscallTableEntry syscall_table[] = { GENX_(__NR_vfork, sys_fork), // 189 treat as fork GENXY(__NR_ugetrlimit, sys_getrlimit), // 190 -// _____(__NR_readahead, sys_readahead), // 191 + LINX_(__NR_readahead, sys_readahead), // 191 // /* #define __NR_mmap2 192 32bit only */ // /* #define __NR_truncate64 193 32bit only */ // /* #define __NR_ftruncate64 194 32bit only */ @@ -1495,6 +1496,8 @@ static SyscallTableEntry syscall_table[] = { LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 276 LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 277 + LINXY(__NR_ppoll, sys_ppoll), // 281 + LINXY(__NR_openat, sys_openat), // 286 LINX_(__NR_mkdirat, sys_mkdirat), // 287 LINX_(__NR_mknodat, sys_mknodat), // 288 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-s390x-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-s390x-linux.c new file mode 100644 index 000000000..02acbf4ac --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-s390x-linux.c @@ -0,0 +1,1528 @@ + +/*--------------------------------------------------------------------*/ +/*--- Platform-specific syscalls stuff. syswrap-s390x-linux.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Christian Borntraeger */ + +#if defined(VGP_s390x_linux) + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy +#include "pub_core_threadstate.h" +#include "pub_core_aspacemgr.h" +#include "pub_core_debuglog.h" +#include "pub_core_libcbase.h" +#include "pub_core_libcassert.h" +#include "pub_core_libcprint.h" +#include "pub_core_libcproc.h" +#include "pub_core_libcsignal.h" +#include "pub_core_mallocfree.h" +#include "pub_core_options.h" +#include "pub_core_scheduler.h" +#include "pub_core_sigframe.h" // For VG_(sigframe_destroy)() +#include "pub_core_signals.h" +#include "pub_core_syscall.h" +#include "pub_core_syswrap.h" +#include "pub_core_tooliface.h" +#include "pub_core_stacks.h" // VG_(register_stack) + +#include "priv_types_n_macros.h" +#include "priv_syswrap-generic.h" /* for decls of generic wrappers */ +#include "priv_syswrap-linux.h" /* for decls of linux-ish wrappers */ +#include "priv_syswrap-linux-variants.h" /* decls of linux variant wrappers */ +#include "priv_syswrap-main.h" + + +/* --------------------------------------------------------------------- + clone() handling + ------------------------------------------------------------------ */ + +/* Call f(arg1), but first switch stacks, using 'stack' as the new + stack, and use 'retaddr' as f's return-to address. Also, clear all + the integer registers before entering f. + Thought: Why are we clearing the GPRs ? The callee pointed to by f + is a regular C function which will play by the ABI rules. So there is + no need to zero out the GPRs. If we assumed that f accesses registers at + will, then it would make sense to create a defined register state. + But then, why only for the GPRs and not the FPRs ? */ +__attribute__((noreturn)) +void ML_(call_on_new_stack_0_1) ( Addr stack, + Addr retaddr, + void (*f)(Word), + Word arg1 ); +/* Upon entering this function we have the following setup: + r2 = stack + r3 = retaddr + r4 = f_desc + r5 = arg1 +*/ +asm( + ".text\n" + ".align 4\n" + ".globl vgModuleLocal_call_on_new_stack_0_1\n" + ".type vgModuleLocal_call_on_new_stack_0_1, @function\n" + "vgModuleLocal_call_on_new_stack_0_1:\n" + " lgr %r15,%r2\n" // stack to r15 + " lgr %r14,%r3\n" // retaddr to r14 + " lgr %r2,%r5\n" // arg1 to r2 + // zero all gprs to get a defined state + " lghi %r0,0\n" + " lghi %r1,0\n" + // r2 holds the argument for the callee + " lghi %r3,0\n" + // r4 holds the callee address + " lghi %r5,0\n" + " lghi %r6,0\n" + " lghi %r7,0\n" + " lghi %r8,0\n" + " lghi %r9,0\n" + " lghi %r10,0\n" + " lghi %r11,0\n" + " lghi %r12,0\n" + " lghi %r13,0\n" + // r14 holds the return address for the callee + // r15 is the stack pointer + " br %r4\n" // jump to f + ".previous\n" + ); + +/* + Perform a clone system call. clone is strange because it has + fork()-like return-twice semantics, so it needs special + handling here. + + Upon entry, we have: + void* child_stack in r2 + long flags in r3 + int* parent_tid in r4 + int* child_tid in r5 + int* child_tid in r6 + Word (*fn)(void *) 160(r15) + void *arg 168(r15) + + System call requires: + void* child_stack in r2 (sc arg1) + long flags in r3 (sc arg2) + int* parent_tid in r4 (sc arg3) + int* child_tid in r5 (sc arg4) + void* tlsaddr in r6 (sc arg5) + + Returns a ULong encoded as: top half is %cr following syscall, + low half is syscall return value (r3). + */ +#define __NR_CLONE VG_STRINGIFY(__NR_clone) +#define __NR_EXIT VG_STRINGIFY(__NR_exit) + +extern +ULong do_syscall_clone_s390x_linux ( void *stack, + ULong flags, + Int *child_tid, + Int *parent_tid, + Addr tlsaddr, + Word (*fn)(void *), + void *arg); +asm( + " .text\n" + " .align 4\n" + "do_syscall_clone_s390x_linux:\n" + " lg %r1, 160(%r15)\n" // save fn from parent stack into r1 + " lg %r0, 168(%r15)\n" // save arg from parent stack into r0 + " aghi %r2, -160\n" // create stack frame for child + // all syscall parameters are already in place (r2-r6) + " svc " __NR_CLONE"\n" // clone() + " ltgr %r2,%r2\n" // child if retval == 0 + " jne 1f\n" + + // CHILD - call thread function + " lgr %r2, %r0\n" // get arg from r0 + " basr %r14,%r1\n" // call fn + + // exit. The result is already in r2 + " svc " __NR_EXIT"\n" + + // Exit returned?! + " j +2\n" + + "1:\n" // PARENT or ERROR + " br %r14\n" + ".previous\n" +); + +#undef __NR_CLONE +#undef __NR_EXIT + +void VG_(cleanup_thread) ( ThreadArchState* arch ) +{ + /* only used on x86 for descriptor tables */ +} + +static void setup_child ( /*OUT*/ ThreadArchState *child, + /*IN*/ ThreadArchState *parent ) +{ + /* We inherit our parent's guest state. */ + child->vex = parent->vex; + child->vex_shadow1 = parent->vex_shadow1; + child->vex_shadow2 = parent->vex_shadow2; +} + + +/* + When a client clones, we need to keep track of the new thread. This means: + 1. allocate a ThreadId+ThreadState+stack for the the thread + + 2. initialize the thread's new VCPU state + + 3. create the thread using the same args as the client requested, + but using the scheduler entrypoint for IP, and a separate stack + for SP. + */ +static SysRes do_clone ( ThreadId ptid, + Addr sp, ULong flags, + Int *parent_tidptr, + Int *child_tidptr, + Addr tlsaddr) +{ + static const Bool debug = False; + + ThreadId ctid = VG_(alloc_ThreadState)(); + ThreadState* ptst = VG_(get_ThreadState)(ptid); + ThreadState* ctst = VG_(get_ThreadState)(ctid); + UWord* stack; + NSegment const* seg; + SysRes res; + ULong r2; + vki_sigset_t blockall, savedmask; + + VG_(sigfillset)(&blockall); + + vg_assert(VG_(is_running_thread)(ptid)); + vg_assert(VG_(is_valid_tid)(ctid)); + + stack = (UWord*)ML_(allocstack)(ctid); + if (stack == NULL) { + res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); + goto out; + } + + /* Copy register state + + Both parent and child return to the same place, and the code + following the clone syscall works out which is which, so we + don't need to worry about it. + + The parent gets the child's new tid returned from clone, but the + child gets 0. + + If the clone call specifies a NULL sp for the new thread, then + it actually gets a copy of the parent's sp. + */ + setup_child( &ctst->arch, &ptst->arch ); + + /* Make sys_clone appear to have returned Success(0) in the + child. */ + ctst->arch.vex.guest_r2 = 0; + + if (sp != 0) + ctst->arch.vex.guest_r15 = sp; + + ctst->os_state.parent = ptid; + + /* inherit signal mask */ + ctst->sig_mask = ptst->sig_mask; + ctst->tmp_sig_mask = ptst->sig_mask; + + /* have the parents thread group */ + ctst->os_state.threadgroup = ptst->os_state.threadgroup; + + /* We don't really know where the client stack is, because its + allocated by the client. The best we can do is look at the + memory mappings and try to derive some useful information. We + assume that esp starts near its highest possible value, and can + only go down to the start of the mmaped segment. */ + seg = VG_(am_find_nsegment)((Addr)sp); + if (seg && seg->kind != SkResvn) { + ctst->client_stack_highest_word = (Addr)VG_PGROUNDUP(sp); + ctst->client_stack_szB = ctst->client_stack_highest_word - seg->start; + + VG_(register_stack)(seg->start, ctst->client_stack_highest_word); + + if (debug) + VG_(printf)("tid %d: guessed client stack range %#lx-%#lx\n", + ctid, seg->start, VG_PGROUNDUP(sp)); + } else { + VG_(message)(Vg_UserMsg, + "!? New thread %d starts with SP(%#lx) unmapped\n", + ctid, sp); + ctst->client_stack_szB = 0; + } + + /* Assume the clone will succeed, and tell any tool that wants to + know that this thread has come into existence. If the clone + fails, we'll send out a ll_exit notification for it at the out: + label below, to clean up. */ + VG_TRACK ( pre_thread_ll_create, ptid, ctid ); + + if (flags & VKI_CLONE_SETTLS) { + if (debug) + VG_(printf)("clone child has SETTLS: tls at %#lx\n", tlsaddr); + ctst->arch.vex.guest_a0 = (UInt) (tlsaddr >> 32); + ctst->arch.vex.guest_a1 = (UInt) tlsaddr; + } + flags &= ~VKI_CLONE_SETTLS; + + /* start the thread with everything blocked */ + VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); + + /* Create the new thread */ + r2 = do_syscall_clone_s390x_linux( + stack, flags, child_tidptr, parent_tidptr, tlsaddr, + ML_(start_thread_NORETURN), &VG_(threads)[ctid]); + + res = VG_(mk_SysRes_s390x_linux)( r2 ); + + VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); + + out: + if (sr_isError(res)) { + /* clone failed */ + ctst->status = VgTs_Empty; + /* oops. Better tell the tool the thread exited in a hurry :-) */ + VG_TRACK( pre_thread_ll_exit, ctid ); + } + + return res; + +} + + + +/* --------------------------------------------------------------------- + PRE/POST wrappers for s390x/Linux-specific syscalls + ------------------------------------------------------------------ */ + +#define PRE(name) DEFN_PRE_TEMPLATE(s390x_linux, name) +#define POST(name) DEFN_POST_TEMPLATE(s390x_linux, name) + +/* Add prototypes for the wrappers declared here, so that gcc doesn't + harass us for not having prototypes. Really this is a kludge -- + the right thing to do is to make these wrappers 'static' since they + aren't visible outside this file, but that requires even more macro + magic. */ + +DECL_TEMPLATE(s390x_linux, sys_ptrace); +DECL_TEMPLATE(s390x_linux, sys_socketcall); +DECL_TEMPLATE(s390x_linux, sys_mmap); +DECL_TEMPLATE(s390x_linux, sys_ipc); +DECL_TEMPLATE(s390x_linux, sys_clone); +DECL_TEMPLATE(s390x_linux, sys_sigreturn); +DECL_TEMPLATE(s390x_linux, sys_rt_sigreturn); +DECL_TEMPLATE(s390x_linux, sys_fadvise64); + +// PEEK TEXT,DATA and USER are common to all architectures +// PEEKUSR_AREA and POKEUSR_AREA are special, having a memory area +// containing the real addr, data, and len field pointed to by ARG3 +// instead of ARG4 +PRE(sys_ptrace) +{ + PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(int, "ptrace", + long, request, long, pid, long, addr, long, data); + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + PRE_MEM_WRITE( "ptrace(peek)", ARG4, + sizeof (long)); + break; + case VKI_PTRACE_GETEVENTMSG: + PRE_MEM_WRITE( "ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + PRE_MEM_WRITE( "ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_SETSIGINFO: + PRE_MEM_READ( "ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_PEEKUSR_AREA: + { + vki_ptrace_area *pa; + + /* Reads a part of the user area into memory at pa->process_addr */ + pa = (vki_ptrace_area *) ARG3; + PRE_MEM_READ("ptrace(peekusrarea ptrace_area->len)", + (unsigned long) &pa->vki_len, sizeof(pa->vki_len)); + PRE_MEM_READ("ptrace(peekusrarea ptrace_area->kernel_addr)", + (unsigned long) &pa->vki_kernel_addr, sizeof(pa->vki_kernel_addr)); + PRE_MEM_READ("ptrace(peekusrarea ptrace_area->process_addr)", + (unsigned long) &pa->vki_process_addr, sizeof(pa->vki_process_addr)); + PRE_MEM_WRITE("ptrace(peekusrarea *(ptrace_area->process_addr))", + pa->vki_process_addr, pa->vki_len); + break; + } + case VKI_PTRACE_POKEUSR_AREA: + { + vki_ptrace_area *pa; + + /* Updates a part of the user area from memory at pa->process_addr */ + pa = (vki_ptrace_area *) ARG3; + PRE_MEM_READ("ptrace(pokeusrarea ptrace_area->len)", + (unsigned long) &pa->vki_len, sizeof(pa->vki_len)); + PRE_MEM_READ("ptrace(pokeusrarea ptrace_area->kernel_addr)", + (unsigned long) &pa->vki_kernel_addr, + sizeof(pa->vki_kernel_addr)); + PRE_MEM_READ("ptrace(pokeusrarea ptrace_area->process_addr)", + (unsigned long) &pa->vki_process_addr, + sizeof(pa->vki_process_addr)); + PRE_MEM_READ("ptrace(pokeusrarea *(ptrace_area->process_addr))", + pa->vki_process_addr, pa->vki_len); + break; + } + default: + break; + } +} + +POST(sys_ptrace) +{ + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + POST_MEM_WRITE( ARG4, sizeof (long)); + break; + case VKI_PTRACE_GETEVENTMSG: + POST_MEM_WRITE( ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + /* XXX: This is a simplification. Different parts of the + * siginfo_t are valid depending on the type of signal. + */ + POST_MEM_WRITE( ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_PEEKUSR_AREA: + { + vki_ptrace_area *pa; + + pa = (vki_ptrace_area *) ARG3; + POST_MEM_WRITE(pa->vki_process_addr, pa->vki_len); + } + default: + break; + } +} + + +PRE(sys_socketcall) +{ +# define ARG2_0 (((UWord*)ARG2)[0]) +# define ARG2_1 (((UWord*)ARG2)[1]) +# define ARG2_2 (((UWord*)ARG2)[2]) +# define ARG2_3 (((UWord*)ARG2)[3]) +# define ARG2_4 (((UWord*)ARG2)[4]) +# define ARG2_5 (((UWord*)ARG2)[5]) + + *flags |= SfMayBlock; + PRINT("sys_socketcall ( %ld, %#lx )",ARG1,ARG2); + PRE_REG_READ2(long, "socketcall", int, call, unsigned long *, args); + + switch (ARG1 /* request */) { + + case VKI_SYS_SOCKETPAIR: + /* int socketpair(int d, int type, int protocol, int sv[2]); */ + PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 4*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_socketpair)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3 ); + break; + + case VKI_SYS_SOCKET: + /* int socket(int domain, int type, int protocol); */ + PRE_MEM_READ( "socketcall.socket(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + break; + + case VKI_SYS_BIND: + /* int bind(int sockfd, struct sockaddr *my_addr, + int addrlen); */ + PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_bind)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_LISTEN: + /* int listen(int s, int backlog); */ + PRE_MEM_READ( "socketcall.listen(args)", ARG2, 2*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 2*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + break; + + case VKI_SYS_ACCEPT: { + /* int accept(int s, struct sockaddr *addr, int *addrlen); */ + PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + } + + case VKI_SYS_SENDTO: + /* int sendto(int s, const void *msg, int len, + unsigned int flags, + const struct sockaddr *to, int tolen); */ + PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 6*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_sendto)( tid, ARG2_0, ARG2_1, ARG2_2, + ARG2_3, ARG2_4, ARG2_5 ); + break; + + case VKI_SYS_SEND: + /* int send(int s, const void *msg, size_t len, int flags); */ + PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 4*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_send)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_RECVFROM: + /* int recvfrom(int s, void *buf, int len, unsigned int flags, + struct sockaddr *from, int *fromlen); */ + PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 6*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_recvfrom)( tid, ARG2_0, ARG2_1, ARG2_2, + ARG2_3, ARG2_4, ARG2_5 ); + break; + + case VKI_SYS_RECV: + /* int recv(int s, void *buf, int len, unsigned int flags); */ + /* man 2 recv says: + The recv call is normally used only on a connected socket + (see connect(2)) and is identical to recvfrom with a NULL + from parameter. + */ + PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 4*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_CONNECT: + /* int connect(int sockfd, + struct sockaddr *serv_addr, int addrlen ); */ + PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_connect)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_SETSOCKOPT: + /* int setsockopt(int s, int level, int optname, + const void *optval, int optlen); */ + PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 5*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_setsockopt)( tid, ARG2_0, ARG2_1, ARG2_2, + ARG2_3, ARG2_4 ); + break; + + case VKI_SYS_GETSOCKOPT: + /* int getsockopt(int s, int level, int optname, + void *optval, socklen_t *optlen); */ + PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 5*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(linux_PRE_sys_getsockopt)( tid, ARG2_0, ARG2_1, ARG2_2, + ARG2_3, ARG2_4 ); + break; + + case VKI_SYS_GETSOCKNAME: + /* int getsockname(int s, struct sockaddr* name, int* namelen) */ + PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_getsockname)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_GETPEERNAME: + /* int getpeername(int s, struct sockaddr* name, int* namelen) */ + PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_getpeername)( tid, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_SHUTDOWN: + /* int shutdown(int s, int how); */ + PRE_MEM_READ( "socketcall.shutdown(args)", ARG2, 2*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 2*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + break; + + case VKI_SYS_SENDMSG: { + /* int sendmsg(int s, const struct msghdr *msg, int flags); */ + PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_sendmsg)( tid, ARG2_0, ARG2_1 ); + break; + } + + case VKI_SYS_RECVMSG: { + /* int recvmsg(int s, struct msghdr *msg, int flags); */ + PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr) ); + if (!ML_(valid_client_addr)(ARG2, 3*sizeof(Addr), tid, NULL)) { + SET_STATUS_Failure( VKI_EFAULT ); + break; + } + ML_(generic_PRE_sys_recvmsg)( tid, ARG2_0, ARG2_1 ); + break; + } + + default: + VG_(message)(Vg_DebugMsg,"Warning: unhandled socketcall 0x%lx\n",ARG1); + SET_STATUS_Failure( VKI_EINVAL ); + break; + } +# undef ARG2_0 +# undef ARG2_1 +# undef ARG2_2 +# undef ARG2_3 +# undef ARG2_4 +# undef ARG2_5 +} + +POST(sys_socketcall) +{ +# define ARG2_0 (((UWord*)ARG2)[0]) +# define ARG2_1 (((UWord*)ARG2)[1]) +# define ARG2_2 (((UWord*)ARG2)[2]) +# define ARG2_3 (((UWord*)ARG2)[3]) +# define ARG2_4 (((UWord*)ARG2)[4]) +# define ARG2_5 (((UWord*)ARG2)[5]) + + SysRes r; + vg_assert(SUCCESS); + switch (ARG1 /* request */) { + + case VKI_SYS_SOCKETPAIR: + r = ML_(generic_POST_sys_socketpair)( + tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, ARG2_2, ARG2_3 + ); + SET_STATUS_from_SysRes(r); + break; + + case VKI_SYS_SOCKET: + r = ML_(generic_POST_sys_socket)( tid, VG_(mk_SysRes_Success)(RES) ); + SET_STATUS_from_SysRes(r); + break; + + case VKI_SYS_BIND: + /* int bind(int sockfd, struct sockaddr *my_addr, + int addrlen); */ + break; + + case VKI_SYS_LISTEN: + /* int listen(int s, int backlog); */ + break; + + case VKI_SYS_ACCEPT: + /* int accept(int s, struct sockaddr *addr, int *addrlen); */ + r = ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, ARG2_2 ); + SET_STATUS_from_SysRes(r); + break; + + case VKI_SYS_SENDTO: + break; + + case VKI_SYS_SEND: + break; + + case VKI_SYS_RECVFROM: + ML_(generic_POST_sys_recvfrom)( tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, ARG2_2, + ARG2_3, ARG2_4, ARG2_5 ); + break; + + case VKI_SYS_RECV: + ML_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_CONNECT: + break; + + case VKI_SYS_SETSOCKOPT: + break; + + case VKI_SYS_GETSOCKOPT: + ML_(linux_POST_sys_getsockopt)( tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, + ARG2_2, ARG2_3, ARG2_4 ); + break; + + case VKI_SYS_GETSOCKNAME: + ML_(generic_POST_sys_getsockname)( tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_GETPEERNAME: + ML_(generic_POST_sys_getpeername)( tid, VG_(mk_SysRes_Success)(RES), + ARG2_0, ARG2_1, ARG2_2 ); + break; + + case VKI_SYS_SHUTDOWN: + break; + + case VKI_SYS_SENDMSG: + break; + + case VKI_SYS_RECVMSG: + ML_(generic_POST_sys_recvmsg)( tid, ARG2_0, ARG2_1 ); + break; + + default: + VG_(message)(Vg_DebugMsg,"FATAL: unhandled socketcall 0x%lx\n",ARG1); + VG_(core_panic)("... bye!\n"); + break; /*NOTREACHED*/ + } +# undef ARG2_0 +# undef ARG2_1 +# undef ARG2_2 +# undef ARG2_3 +# undef ARG2_4 +# undef ARG2_5 +} + +PRE(sys_mmap) +{ + UWord a0, a1, a2, a3, a4, a5; + SysRes r; + + UWord* args = (UWord*)ARG1; + PRE_REG_READ1(long, "sys_mmap", struct mmap_arg_struct *, args); + PRE_MEM_READ( "sys_mmap(args)", (Addr) args, 6*sizeof(UWord) ); + + a0 = args[0]; + a1 = args[1]; + a2 = args[2]; + a3 = args[3]; + a4 = args[4]; + a5 = args[5]; + + PRINT("sys_mmap ( %#lx, %llu, %ld, %ld, %ld, %ld )", + a0, (ULong)a1, a2, a3, a4, a5 ); + + r = ML_(generic_PRE_sys_mmap)( tid, a0, a1, a2, a3, a4, (Off64T)a5 ); + SET_STATUS_from_SysRes(r); +} + +static Addr deref_Addr ( ThreadId tid, Addr a, Char* s ) +{ + Addr* a_p = (Addr*)a; + PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) ); + return *a_p; +} + +PRE(sys_ipc) +{ + PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", + ARG1,ARG2,ARG3,ARG4,ARG5,ARG6); + // XXX: this is simplistic -- some args are not used in all circumstances. + PRE_REG_READ6(int, "ipc", + vki_uint, call, int, first, int, second, int, third, + void *, ptr, long, fifth) + + switch (ARG1 /* call */) { + case VKI_SEMOP: + ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 ); + *flags |= SfMayBlock; + break; + case VKI_SEMGET: + break; + case VKI_SEMCTL: + { + UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" ); + ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg ); + break; + } + case VKI_SEMTIMEDOP: + ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 ); + *flags |= SfMayBlock; + break; + case VKI_MSGSND: + ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 ); + if ((ARG4 & VKI_IPC_NOWAIT) == 0) + *flags |= SfMayBlock; + break; + case VKI_MSGRCV: + { + Addr msgp; + Word msgtyp; + + msgp = deref_Addr( tid, + (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp), + "msgrcv(msgp)" ); + msgtyp = deref_Addr( tid, + (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp), + "msgrcv(msgp)" ); + + ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 ); + + if ((ARG4 & VKI_IPC_NOWAIT) == 0) + *flags |= SfMayBlock; + break; + } + case VKI_MSGGET: + break; + case VKI_MSGCTL: + ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 ); + break; + case VKI_SHMAT: + { + UWord w; + PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) ); + w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 ); + if (w == 0) + SET_STATUS_Failure( VKI_EINVAL ); + else + ARG5 = w; + break; + } + case VKI_SHMDT: + if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5)) + SET_STATUS_Failure( VKI_EINVAL ); + break; + case VKI_SHMGET: + break; + case VKI_SHMCTL: /* IPCOP_shmctl */ + ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 ); + break; + default: + VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld", ARG1 ); + VG_(core_panic)("... bye!\n"); + break; /*NOTREACHED*/ + } +} + +POST(sys_ipc) +{ + vg_assert(SUCCESS); + switch (ARG1 /* call */) { + case VKI_SEMOP: + case VKI_SEMGET: + break; + case VKI_SEMCTL: + { + UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" ); + ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg ); + break; + } + case VKI_SEMTIMEDOP: + case VKI_MSGSND: + break; + case VKI_MSGRCV: + { + Addr msgp; + Word msgtyp; + + msgp = deref_Addr( tid, + (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp), + "msgrcv(msgp)" ); + msgtyp = deref_Addr( tid, + (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp), + "msgrcv(msgp)" ); + + ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 ); + break; + } + case VKI_MSGGET: + break; + case VKI_MSGCTL: + ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 ); + break; + case VKI_SHMAT: + { + Addr addr; + + /* force readability. before the syscall it is + * indeed uninitialized, as can be seen in + * glibc/sysdeps/unix/sysv/linux/shmat.c */ + POST_MEM_WRITE( ARG4, sizeof( Addr ) ); + + addr = deref_Addr ( tid, ARG4, "shmat(addr)" ); + ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 ); + break; + } + case VKI_SHMDT: + ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 ); + break; + case VKI_SHMGET: + break; + case VKI_SHMCTL: + ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 ); + break; + default: + VG_(message)(Vg_DebugMsg, + "FATAL: unhandled syscall(ipc) %ld", + ARG1 ); + VG_(core_panic)("... bye!\n"); + break; /*NOTREACHED*/ + } +} + +PRE(sys_clone) +{ + UInt cloneflags; + + PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4, ARG5); + PRE_REG_READ4(int, "clone", + void *, child_stack, + unsigned long, flags, + int *, parent_tidptr, + int *, child_tidptr); + + if (ARG2 & VKI_CLONE_PARENT_SETTID) { + PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); + if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), + VKI_PROT_WRITE)) { + SET_STATUS_Failure( VKI_EFAULT ); + return; + } + } + if (ARG2 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { + PRE_MEM_WRITE("clone(child_tidptr)", ARG4, sizeof(Int)); + if (!VG_(am_is_valid_for_client)(ARG4, sizeof(Int), + VKI_PROT_WRITE)) { + SET_STATUS_Failure( VKI_EFAULT ); + return; + } + } + + cloneflags = ARG2; + + if (!ML_(client_signal_OK)(ARG2 & VKI_CSIGNAL)) { + SET_STATUS_Failure( VKI_EINVAL ); + return; + } + + /* Only look at the flags we really care about */ + switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS + | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { + case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: + /* thread creation */ + SET_STATUS_from_SysRes( + do_clone(tid, + (Addr)ARG1, /* child SP */ + ARG2, /* flags */ + (Int *)ARG3, /* parent_tidptr */ + (Int *)ARG4, /* child_tidptr */ + (Addr)ARG5)); /* tlsaddr */ + break; + + case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ + /* FALLTHROUGH - assume vfork == fork */ + cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); + + case 0: /* plain fork */ + SET_STATUS_from_SysRes( + ML_(do_fork_clone)(tid, + cloneflags, /* flags */ + (Int *)ARG3, /* parent_tidptr */ + (Int *)ARG4)); /* child_tidptr */ + break; + + default: + /* should we just ENOSYS? */ + VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx", ARG2); + VG_(message)(Vg_UserMsg, ""); + VG_(message)(Vg_UserMsg, "The only supported clone() uses are:"); + VG_(message)(Vg_UserMsg, " - via a threads library (NPTL)"); + VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork"); + VG_(unimplemented) + ("Valgrind does not support general clone()."); + } + + if (SUCCESS) { + if (ARG2 & VKI_CLONE_PARENT_SETTID) + POST_MEM_WRITE(ARG3, sizeof(Int)); + if (ARG2 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) + POST_MEM_WRITE(ARG4, sizeof(Int)); + + /* Thread creation was successful; let the child have the chance + to run */ + *flags |= SfYieldAfter; + } +} + +PRE(sys_sigreturn) +{ + ThreadState* tst; + PRINT("sys_sigreturn ( )"); + + vg_assert(VG_(is_valid_tid)(tid)); + vg_assert(tid >= 1 && tid < VG_N_THREADS); + vg_assert(VG_(is_running_thread)(tid)); + + tst = VG_(get_ThreadState)(tid); + + /* This is only so that the IA is (might be) useful to report if + something goes wrong in the sigreturn */ + ML_(fixup_guest_state_to_restart_syscall)(&tst->arch); + + /* Restore register state from frame and remove it */ + VG_(sigframe_destroy)(tid, False); + + /* Tell the driver not to update the guest state with the "result", + and set a bogus result to keep it happy. */ + *flags |= SfNoWriteResult; + SET_STATUS_Success(0); + + /* Check to see if any signals arose as a result of this. */ + *flags |= SfPollAfter; +} + + +PRE(sys_rt_sigreturn) +{ + /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for + an explanation of what follows. */ + + ThreadState* tst; + PRINT("sys_rt_sigreturn ( )"); + + vg_assert(VG_(is_valid_tid)(tid)); + vg_assert(tid >= 1 && tid < VG_N_THREADS); + vg_assert(VG_(is_running_thread)(tid)); + + tst = VG_(get_ThreadState)(tid); + + /* This is only so that the IA is (might be) useful to report if + something goes wrong in the sigreturn */ + ML_(fixup_guest_state_to_restart_syscall)(&tst->arch); + + /* Restore register state from frame and remove it */ + VG_(sigframe_destroy)(tid, True); + + /* Tell the driver not to update the guest state with the "result", + and set a bogus result to keep it happy. */ + *flags |= SfNoWriteResult; + SET_STATUS_Success(0); + + /* Check to see if any signals arose as a result of this. */ + *flags |= SfPollAfter; +} + +/* we cant use the LINX_ version for 64 bit */ +PRE(sys_fadvise64) +{ + PRINT("sys_fadvise64 ( %ld, %ld, %ld, %ld )", ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "fadvise64", + int, fd, vki_loff_t, offset, vki_loff_t, len, int, advice); +} + +#undef PRE +#undef POST + +/* --------------------------------------------------------------------- + The s390x/Linux syscall table + ------------------------------------------------------------------ */ + +/* Add an s390x-linux specific wrapper to a syscall table. */ +#define PLAX_(sysno, name) WRAPPER_ENTRY_X_(s390x_linux, sysno, name) +#define PLAXY(sysno, name) WRAPPER_ENTRY_XY(s390x_linux, sysno, name) + +// This table maps from __NR_xxx syscall numbers from +// linux/arch/s390/kernel/syscalls.S to the appropriate PRE/POST sys_foo() +// wrappers on s390x. There are several unused numbers, which are only +// defined on s390 (31bit mode) but no longer available on s390x (64 bit). +// For those syscalls not handled by Valgrind, the annotation indicate its +// arch/OS combination, eg. */* (generic), */Linux (Linux only), ?/? +// (unknown). + +static SyscallTableEntry syscall_table[] = { + GENX_(0, sys_ni_syscall), /* unimplemented (by the kernel) */ // 0 + GENX_(__NR_exit, sys_exit), // 1 + GENX_(__NR_fork, sys_fork), // 2 + GENXY(__NR_read, sys_read), // 3 + GENX_(__NR_write, sys_write), // 4 + + GENXY(__NR_open, sys_open), // 5 + GENXY(__NR_close, sys_close), // 6 +// ?????(__NR_restart_syscall, ), // 7 + GENXY(__NR_creat, sys_creat), // 8 + GENX_(__NR_link, sys_link), // 9 + + GENX_(__NR_unlink, sys_unlink), // 10 + GENX_(__NR_execve, sys_execve), // 11 + GENX_(__NR_chdir, sys_chdir), // 12 + GENX_(13, sys_ni_syscall), /* unimplemented (by the kernel) */ // 13 + GENX_(__NR_mknod, sys_mknod), // 14 + + GENX_(__NR_chmod, sys_chmod), // 15 + GENX_(16, sys_ni_syscall), /* unimplemented (by the kernel) */ // 16 + GENX_(17, sys_ni_syscall), /* unimplemented (by the kernel) */ // 17 + GENX_(18, sys_ni_syscall), /* unimplemented (by the kernel) */ // 18 + LINX_(__NR_lseek, sys_lseek), // 19 + + GENX_(__NR_getpid, sys_getpid), // 20 + LINX_(__NR_mount, sys_mount), // 21 + LINX_(__NR_umount, sys_oldumount), // 22 + GENX_(23, sys_ni_syscall), /* unimplemented (by the kernel) */ // 23 + GENX_(24, sys_ni_syscall), /* unimplemented (by the kernel) */ // 24 + + GENX_(25, sys_ni_syscall), /* unimplemented (by the kernel) */ // 25 + PLAXY(__NR_ptrace, sys_ptrace), // 26 + GENX_(__NR_alarm, sys_alarm), // 27 + GENX_(28, sys_ni_syscall), /* unimplemented (by the kernel) */ // 28 + GENX_(__NR_pause, sys_pause), // 29 + + LINX_(__NR_utime, sys_utime), // 30 + GENX_(31, sys_ni_syscall), /* unimplemented (by the kernel) */ // 31 + GENX_(32, sys_ni_syscall), /* unimplemented (by the kernel) */ // 32 + GENX_(__NR_access, sys_access), // 33 + GENX_(__NR_nice, sys_nice), // 34 + + GENX_(35, sys_ni_syscall), /* unimplemented (by the kernel) */ // 35 + GENX_(__NR_sync, sys_sync), // 36 + GENX_(__NR_kill, sys_kill), // 37 + GENX_(__NR_rename, sys_rename), // 38 + GENX_(__NR_mkdir, sys_mkdir), // 39 + + GENX_(__NR_rmdir, sys_rmdir), // 40 + GENXY(__NR_dup, sys_dup), // 41 + LINXY(__NR_pipe, sys_pipe), // 42 + GENXY(__NR_times, sys_times), // 43 + GENX_(44, sys_ni_syscall), /* unimplemented (by the kernel) */ // 44 + + GENX_(__NR_brk, sys_brk), // 45 + GENX_(46, sys_ni_syscall), /* unimplemented (by the kernel) */ // 46 + GENX_(47, sys_ni_syscall), /* unimplemented (by the kernel) */ // 47 +// ?????(__NR_signal, ), // 48 + GENX_(49, sys_ni_syscall), /* unimplemented (by the kernel) */ // 49 + + GENX_(50, sys_ni_syscall), /* unimplemented (by the kernel) */ // 50 + GENX_(__NR_acct, sys_acct), // 51 + LINX_(__NR_umount2, sys_umount), // 52 + GENX_(53, sys_ni_syscall), /* unimplemented (by the kernel) */ // 53 + LINXY(__NR_ioctl, sys_ioctl), // 54 + + LINXY(__NR_fcntl, sys_fcntl), // 55 + GENX_(56, sys_ni_syscall), /* unimplemented (by the kernel) */ // 56 + GENX_(__NR_setpgid, sys_setpgid), // 57 + GENX_(58, sys_ni_syscall), /* unimplemented (by the kernel) */ // 58 + GENX_(59, sys_ni_syscall), /* unimplemented (by the kernel) */ // 59 + + GENX_(__NR_umask, sys_umask), // 60 + GENX_(__NR_chroot, sys_chroot), // 61 +// ?????(__NR_ustat, sys_ustat), /* deprecated in favor of statfs */ // 62 + GENXY(__NR_dup2, sys_dup2), // 63 + GENX_(__NR_getppid, sys_getppid), // 64 + + GENX_(__NR_getpgrp, sys_getpgrp), // 65 + GENX_(__NR_setsid, sys_setsid), // 66 +// ?????(__NR_sigaction, ), /* userspace uses rt_sigaction */ // 67 + GENX_(68, sys_ni_syscall), /* unimplemented (by the kernel) */ // 68 + GENX_(69, sys_ni_syscall), /* unimplemented (by the kernel) */ // 69 + + GENX_(70, sys_ni_syscall), /* unimplemented (by the kernel) */ // 70 + GENX_(71, sys_ni_syscall), /* unimplemented (by the kernel) */ // 71 +// ?????(__NR_sigsuspend, ), // 72 +// ?????(__NR_sigpending, ), // 73 +// ?????(__NR_sethostname, ), // 74 + + GENX_(__NR_setrlimit, sys_setrlimit), // 75 + GENXY(76, sys_getrlimit), /* see also 191 */ // 76 + GENXY(__NR_getrusage, sys_getrusage), // 77 + GENXY(__NR_gettimeofday, sys_gettimeofday), // 78 + GENX_(__NR_settimeofday, sys_settimeofday), // 79 + + GENX_(80, sys_ni_syscall), /* unimplemented (by the kernel) */ // 80 + GENX_(81, sys_ni_syscall), /* unimplemented (by the kernel) */ // 81 + GENX_(82, sys_ni_syscall), /* unimplemented (by the kernel) */ // 82 + GENX_(__NR_symlink, sys_symlink), // 83 + GENX_(84, sys_ni_syscall), /* unimplemented (by the kernel) */ // 84 + + GENX_(__NR_readlink, sys_readlink), // 85 +// ?????(__NR_uselib, ), // 86 +// ?????(__NR_swapon, ), // 87 +// ?????(__NR_reboot, ), // 88 + GENX_(89, sys_ni_syscall), /* unimplemented (by the kernel) */ // 89 + + PLAX_(__NR_mmap, sys_mmap ), // 90 + GENXY(__NR_munmap, sys_munmap), // 91 + GENX_(__NR_truncate, sys_truncate), // 92 + GENX_(__NR_ftruncate, sys_ftruncate), // 93 + GENX_(__NR_fchmod, sys_fchmod), // 94 + + GENX_(95, sys_ni_syscall), /* unimplemented (by the kernel) */ // 95 + GENX_(__NR_getpriority, sys_getpriority), // 96 + GENX_(__NR_setpriority, sys_setpriority), // 97 + GENX_(98, sys_ni_syscall), /* unimplemented (by the kernel) */ // 98 + GENXY(__NR_statfs, sys_statfs), // 99 + + GENXY(__NR_fstatfs, sys_fstatfs), // 100 + GENX_(101, sys_ni_syscall), /* unimplemented (by the kernel) */ // 101 + PLAXY(__NR_socketcall, sys_socketcall), // 102 + LINXY(__NR_syslog, sys_syslog), // 103 + GENXY(__NR_setitimer, sys_setitimer), // 104 + + GENXY(__NR_getitimer, sys_getitimer), // 105 + GENXY(__NR_stat, sys_newstat), // 106 + GENXY(__NR_lstat, sys_newlstat), // 107 + GENXY(__NR_fstat, sys_newfstat), // 108 + GENX_(109, sys_ni_syscall), /* unimplemented (by the kernel) */ // 109 + + LINXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 110 + LINX_(__NR_vhangup, sys_vhangup), // 111 + GENX_(112, sys_ni_syscall), /* unimplemented (by the kernel) */ // 112 + GENX_(113, sys_ni_syscall), /* unimplemented (by the kernel) */ // 113 + GENXY(__NR_wait4, sys_wait4), // 114 + +// ?????(__NR_swapoff, ), // 115 + LINXY(__NR_sysinfo, sys_sysinfo), // 116 + PLAXY(__NR_ipc, sys_ipc), // 117 + GENX_(__NR_fsync, sys_fsync), // 118 + PLAX_(__NR_sigreturn, sys_sigreturn), // 119 + + PLAX_(__NR_clone, sys_clone), // 120 +// ?????(__NR_setdomainname, ), // 121 + GENXY(__NR_uname, sys_newuname), // 122 + GENX_(123, sys_ni_syscall), /* unimplemented (by the kernel) */ // 123 +// ?????(__NR_adjtimex, ), // 124 + + GENXY(__NR_mprotect, sys_mprotect), // 125 +// LINXY(__NR_sigprocmask, sys_sigprocmask), // 126 + GENX_(127, sys_ni_syscall), /* unimplemented (by the kernel) */ // 127 + LINX_(__NR_init_module, sys_init_module), // 128 + LINX_(__NR_delete_module, sys_delete_module), // 129 + + GENX_(130, sys_ni_syscall), /* unimplemented (by the kernel) */ // 130 + LINX_(__NR_quotactl, sys_quotactl), // 131 + GENX_(__NR_getpgid, sys_getpgid), // 132 + GENX_(__NR_fchdir, sys_fchdir), // 133 +// ?????(__NR_bdflush, ), // 134 + +// ?????(__NR_sysfs, ), // 135 + LINX_(__NR_personality, sys_personality), // 136 + GENX_(137, sys_ni_syscall), /* unimplemented (by the kernel) */ // 137 + GENX_(138, sys_ni_syscall), /* unimplemented (by the kernel) */ // 138 + GENX_(139, sys_ni_syscall), /* unimplemented (by the kernel) */ // 139 + +// LINXY(__NR__llseek, sys_llseek), /* 64 bit --> lseek */ // 140 + GENXY(__NR_getdents, sys_getdents), // 141 + GENX_(__NR_select, sys_select), // 142 + GENX_(__NR_flock, sys_flock), // 143 + GENX_(__NR_msync, sys_msync), // 144 + + GENXY(__NR_readv, sys_readv), // 145 + GENX_(__NR_writev, sys_writev), // 146 + GENX_(__NR_getsid, sys_getsid), // 147 + GENX_(__NR_fdatasync, sys_fdatasync), // 148 + LINXY(__NR__sysctl, sys_sysctl), // 149 + + GENX_(__NR_mlock, sys_mlock), // 150 + GENX_(__NR_munlock, sys_munlock), // 151 + GENX_(__NR_mlockall, sys_mlockall), // 152 + LINX_(__NR_munlockall, sys_munlockall), // 153 + LINXY(__NR_sched_setparam, sys_sched_setparam), // 154 + + LINXY(__NR_sched_getparam, sys_sched_getparam), // 155 + LINX_(__NR_sched_setscheduler, sys_sched_setscheduler), // 156 + LINX_(__NR_sched_getscheduler, sys_sched_getscheduler), // 157 + LINX_(__NR_sched_yield, sys_sched_yield), // 158 + LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max), // 159 + + LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min), // 160 +// ?????(__NR_sched_rr_get_interval, ), // 161 + GENXY(__NR_nanosleep, sys_nanosleep), // 162 + GENX_(__NR_mremap, sys_mremap), // 163 + GENX_(164, sys_ni_syscall), /* unimplemented (by the kernel) */ // 164 + + GENX_(165, sys_ni_syscall), /* unimplemented (by the kernel) */ // 165 + GENX_(166, sys_ni_syscall), /* unimplemented (by the kernel) */ // 166 + GENX_(167, sys_ni_syscall), /* unimplemented (by the kernel) */ // 167 + GENXY(__NR_poll, sys_poll), // 168 +// ?????(__NR_nfsservctl, ), // 169 + + GENX_(170, sys_ni_syscall), /* unimplemented (by the kernel) */ // 170 + GENX_(171, sys_ni_syscall), /* unimplemented (by the kernel) */ // 171 + LINXY(__NR_prctl, sys_prctl), // 172 + PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 173 + LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 174 + + LINXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 175 + LINXY(__NR_rt_sigpending, sys_rt_sigpending), // 176 + LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 177 + LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 178 + LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 179 + + GENXY(__NR_pread64, sys_pread64), // 180 + GENX_(__NR_pwrite64, sys_pwrite64), // 181 + GENX_(182, sys_ni_syscall), /* unimplemented (by the kernel) */ // 182 + GENXY(__NR_getcwd, sys_getcwd), // 183 + LINXY(__NR_capget, sys_capget), // 184 + + LINX_(__NR_capset, sys_capset), // 185 + GENXY(__NR_sigaltstack, sys_sigaltstack), // 186 + LINXY(__NR_sendfile, sys_sendfile), // 187 + GENX_(188, sys_ni_syscall), /* unimplemented (by the kernel) */ // 188 + GENX_(189, sys_ni_syscall), /* unimplemented (by the kernel) */ // 189 + + GENX_(__NR_vfork, sys_fork), // 190 + GENXY(__NR_getrlimit, sys_getrlimit), // 191 + GENX_(192, sys_ni_syscall), /* not exported on 64bit*/ // 192 + GENX_(193, sys_ni_syscall), /* unimplemented (by the kernel) */ // 193 + GENX_(194, sys_ni_syscall), /* unimplemented (by the kernel) */ // 194 + + GENX_(195, sys_ni_syscall), /* unimplemented (by the kernel) */ // 195 + GENX_(196, sys_ni_syscall), /* unimplemented (by the kernel) */ // 196 + GENX_(197, sys_ni_syscall), /* unimplemented (by the kernel) */ // 197 + GENX_(__NR_lchown, sys_lchown), // 198 + GENX_(__NR_getuid, sys_getuid), // 199 + + GENX_(__NR_getgid, sys_getgid), // 200 + GENX_(__NR_geteuid, sys_geteuid), // 201 + GENX_(__NR_getegid, sys_getegid), // 202 + GENX_(__NR_setreuid, sys_setreuid), // 203 + GENX_(__NR_setregid, sys_setregid), // 204 + + GENXY(__NR_getgroups, sys_getgroups), // 205 + GENX_(__NR_setgroups, sys_setgroups), // 206 + GENX_(__NR_fchown, sys_fchown), // 207 + LINX_(__NR_setresuid, sys_setresuid), // 208 + LINXY(__NR_getresuid, sys_getresuid), // 209 + + LINX_(__NR_setresgid, sys_setresgid), // 210 + LINXY(__NR_getresgid, sys_getresgid), // 211 + GENX_(__NR_chown, sys_chown), // 212 + GENX_(__NR_setuid, sys_setuid), // 213 + GENX_(__NR_setgid, sys_setgid), // 214 + + LINX_(__NR_setfsuid, sys_setfsuid), // 215 + LINX_(__NR_setfsgid, sys_setfsgid), // 216 +// ?????(__NR_pivot_root, ), + GENX_(__NR_mincore, sys_mincore), // 218 + GENX_(__NR_madvise, sys_madvise), // 219 + + GENXY(__NR_getdents64, sys_getdents64), // 220 + GENX_(221, sys_ni_syscall), /* unimplemented (by the kernel) */ // 221 + LINX_(__NR_readahead, sys_readahead), // 222 + GENX_(223, sys_ni_syscall), /* unimplemented (by the kernel) */ // 223 + LINX_(__NR_setxattr, sys_setxattr), // 224 + + LINX_(__NR_lsetxattr, sys_lsetxattr), // 225 + LINX_(__NR_fsetxattr, sys_fsetxattr), // 226 + LINXY(__NR_getxattr, sys_getxattr), // 227 + LINXY(__NR_lgetxattr, sys_lgetxattr), // 228 + LINXY(__NR_fgetxattr, sys_fgetxattr), // 229 + + LINXY(__NR_listxattr, sys_listxattr), // 230 + LINXY(__NR_llistxattr, sys_llistxattr), // 231 + LINXY(__NR_flistxattr, sys_flistxattr), // 232 + LINX_(__NR_removexattr, sys_removexattr), // 233 + LINX_(__NR_lremovexattr, sys_lremovexattr), // 234 + + LINX_(__NR_fremovexattr, sys_fremovexattr), // 235 + LINX_(__NR_gettid, sys_gettid), // 236 + LINXY(__NR_tkill, sys_tkill), // 237 + LINXY(__NR_futex, sys_futex), // 238 + LINX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 239 + + LINXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 240 + LINXY(__NR_tgkill, sys_tgkill), // 241 + GENX_(242, sys_ni_syscall), /* unimplemented (by the kernel) */ // 242 + LINXY(__NR_io_setup, sys_io_setup), // 243 + LINX_(__NR_io_destroy, sys_io_destroy), // 244 + + LINXY(__NR_io_getevents, sys_io_getevents), // 245 + LINX_(__NR_io_submit, sys_io_submit), // 246 + LINXY(__NR_io_cancel, sys_io_cancel), // 247 + LINX_(__NR_exit_group, sys_exit_group), // 248 + LINXY(__NR_epoll_create, sys_epoll_create), // 249 + + LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 250 + LINXY(__NR_epoll_wait, sys_epoll_wait), // 251 + LINX_(__NR_set_tid_address, sys_set_tid_address), // 252 + PLAX_(__NR_fadvise64, sys_fadvise64), // 253 + LINXY(__NR_timer_create, sys_timer_create), // 254 + + LINXY(__NR_timer_settime, sys_timer_settime), // 255 + LINXY(__NR_timer_gettime, sys_timer_gettime), // 256 + LINX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 257 + LINX_(__NR_timer_delete, sys_timer_delete), // 258 + LINX_(__NR_clock_settime, sys_clock_settime), // 259 + + LINXY(__NR_clock_gettime, sys_clock_gettime), // 260 + LINXY(__NR_clock_getres, sys_clock_getres), // 261 + LINXY(__NR_clock_nanosleep, sys_clock_nanosleep), // 262 + GENX_(263, sys_ni_syscall), /* unimplemented (by the kernel) */ // 263 + GENX_(264, sys_ni_syscall), /* unimplemented (by the kernel) */ // 264 + + GENXY(__NR_statfs64, sys_statfs64), // 265 + GENXY(__NR_fstatfs64, sys_fstatfs64), // 266 +// ?????(__NR_remap_file_pages, ), + GENX_(268, sys_ni_syscall), /* unimplemented (by the kernel) */ // 268 + GENX_(269, sys_ni_syscall), /* unimplemented (by the kernel) */ // 269 + + GENX_(270, sys_ni_syscall), /* unimplemented (by the kernel) */ // 270 + LINXY(__NR_mq_open, sys_mq_open), // 271 + LINX_(__NR_mq_unlink, sys_mq_unlink), // 272 + LINX_(__NR_mq_timedsend, sys_mq_timedsend), // 273 + LINXY(__NR_mq_timedreceive, sys_mq_timedreceive), // 274 + + LINX_(__NR_mq_notify, sys_mq_notify), // 275 + LINXY(__NR_mq_getsetattr, sys_mq_getsetattr), // 276 +// ?????(__NR_kexec_load, ), + LINX_(__NR_add_key, sys_add_key), // 278 + LINX_(__NR_request_key, sys_request_key), // 279 + + LINXY(__NR_keyctl, sys_keyctl), // 280 + LINXY(__NR_waitid, sys_waitid), // 281 + LINX_(__NR_ioprio_set, sys_ioprio_set), // 282 + LINX_(__NR_ioprio_get, sys_ioprio_get), // 283 + LINX_(__NR_inotify_init, sys_inotify_init), // 284 + + LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 285 + LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 286 + GENX_(287, sys_ni_syscall), /* unimplemented (by the kernel) */ // 287 + LINXY(__NR_openat, sys_openat), // 288 + LINX_(__NR_mkdirat, sys_mkdirat), // 289 + + LINX_(__NR_mknodat, sys_mknodat), // 290 + LINX_(__NR_fchownat, sys_fchownat), // 291 + LINX_(__NR_futimesat, sys_futimesat), // 292 + LINXY(__NR_newfstatat, sys_newfstatat), // 293 + LINX_(__NR_unlinkat, sys_unlinkat), // 294 + + LINX_(__NR_renameat, sys_renameat), // 295 + LINX_(__NR_linkat, sys_linkat), // 296 + LINX_(__NR_symlinkat, sys_symlinkat), // 297 + LINX_(__NR_readlinkat, sys_readlinkat), // 298 + LINX_(__NR_fchmodat, sys_fchmodat), // 299 + + LINX_(__NR_faccessat, sys_faccessat), // 300 + LINX_(__NR_pselect6, sys_pselect6), // 301 + LINXY(__NR_ppoll, sys_ppoll), // 302 +// ?????(__NR_unshare, ), + LINX_(__NR_set_robust_list, sys_set_robust_list), // 304 + + LINXY(__NR_get_robust_list, sys_get_robust_list), // 305 +// ?????(__NR_splice, ), + LINX_(__NR_sync_file_range, sys_sync_file_range), // 307 +// ?????(__NR_tee, ), +// ?????(__NR_vmsplice, ), + + GENX_(310, sys_ni_syscall), /* unimplemented (by the kernel) */ // 310 +// ?????(__NR_getcpu, ), + LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 312 + GENX_(__NR_utimes, sys_utimes), // 313 + LINX_(__NR_fallocate, sys_fallocate), // 314 + + LINX_(__NR_utimensat, sys_utimensat), // 315 + LINXY(__NR_signalfd, sys_signalfd), // 316 + GENX_(317, sys_ni_syscall), /* unimplemented (by the kernel) */ // 317 + LINX_(__NR_eventfd, sys_eventfd), // 318 + LINXY(__NR_timerfd_create, sys_timerfd_create), // 319 + + LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 320 + LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 321 + LINXY(__NR_signalfd4, sys_signalfd4), // 322 + LINX_(__NR_eventfd2, sys_eventfd2), // 323 + LINXY(__NR_inotify_init1, sys_inotify_init1), // 324 + + LINXY(__NR_pipe2, sys_pipe2), // 325 + // (__NR_dup3, ), + LINXY(__NR_epoll_create1, sys_epoll_create1), // 327 + LINXY(__NR_preadv, sys_preadv), // 328 + LINX_(__NR_pwritev, sys_pwritev), // 329 + +// ?????(__NR_rt_tgsigqueueinfo, ), + LINXY(__NR_perf_event_open, sys_perf_counter_open), // 331 +}; + +SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +{ + const UInt syscall_table_size + = sizeof(syscall_table) / sizeof(syscall_table[0]); + + /* Is it in the contiguous initial section of the table? */ + if (sysno < syscall_table_size) { + SyscallTableEntry* sys = &syscall_table[sysno]; + if (sys->before == NULL) + return NULL; /* no entry */ + else + return sys; + } + + /* Can't find a wrapper */ + return NULL; +} + +#endif + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-darwin.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-darwin.c index 1e2e1d87b..108a8afd0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-darwin.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-darwin.c @@ -32,6 +32,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_xarray.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-l4re.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-l4re.c index 04f098190..9dd66de43 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-l4re.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-l4re.c @@ -35,6 +35,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -60,9 +61,9 @@ #include "priv_syswrap-main.h" #if defined(VGO_l4re) -#include -#include -#include +#include +#include +#include #include #include #include @@ -110,7 +111,7 @@ asm( static void setup_child ( ThreadArchState*, ThreadArchState*, Bool, Word ); static SysRes sys_set_thread_area ( ThreadId, vki_modify_ldt_t* ); -/* +/* When a client creates a new thread, we need to keep track of the new thread. This means: 1. allocate a ThreadId+ThreadState+stack for the the thread @@ -121,8 +122,8 @@ static SysRes sys_set_thread_area ( ThreadId, vki_modify_ldt_t* ); but using the scheduler entrypoint for EIP, and a separate stack for ESP. */ -static SysRes do_create_new_thread ( ThreadId ptid, - Addr esp, +static SysRes do_create_new_thread ( ThreadId ptid, + Addr esp, l4_umword_t flags, Word client_ip) { @@ -161,7 +162,7 @@ static SysRes do_create_new_thread ( ThreadId ptid, */ /* Note: the clone call done by the Quadrics Elan3 driver specifies clone flags of 0xF00, and it seems to rely on the assumption - that the child inherits a copy of the parent's GDT. + that the child inherits a copy of the parent's GDT. setup_child takes care of setting that up. */ setup_child( &ctst->arch, &ptst->arch, True, client_ip ); @@ -219,16 +220,16 @@ static SysRes do_create_new_thread ( ThreadId ptid, /* Therefore Valgrind doesn't lose control over the client thread * a special function is called in valgrinds context */ vg_eip = (l4_umword_t) &ML_(start_thread_NORETURN); - - *stack = (UWord) &VG_(threads)[ctid]; + + *stack = (UWord) &VG_(threads)[ctid]; stack--; - + vg_stack = (l4_umword_t) stack; VG_(debugLog)(0, "syswrap", "creating new thread\n" "\t\t\t (vg) ip = 0x%08lx\n" "\t\t\t (vg) stack = 0x%08x\n" - "\t\t\t (cl) ip = 0x%08x\n" + "\t\t\t (cl) ip = 0x%08x\n" "\t\t\t (cl) stack = 0x%08x\n" "\t\t\t flags = 0x%08x\n", vg_eip, @@ -243,12 +244,12 @@ static SysRes do_create_new_thread ( ThreadId ptid, (l4_umword_t *) &flags, /* flags */ l4_utcb_wrap()); - /* Every thread in Valgrind gets a name - a nice feature + /* Every thread in Valgrind gets a name - a nice feature * of the fiasco micro kernel, good for debugging */ if (VG_(snprintf)(thread_name, 15, "VG::thread%d", ctid) > 0) l4_debugger_set_object_name(ptst->arch.vex.guest_EDX, thread_name); - + eax = 1; res = VG_(mk_SysRes_x86_l4re)( eax ); out: @@ -270,10 +271,10 @@ static SysRes do_create_new_thread ( ThreadId ptid, void VG_(cleanup_thread) ( ThreadArchState* arch ) { /* Release arch-specific resources held by this thread. */ -} +} -static void setup_child ( /*OUT*/ ThreadArchState *child, +static void setup_child ( /*OUT*/ ThreadArchState *child, /*IN*/ ThreadArchState *parent, Bool inherit_parents_GDT, Word client_ip) @@ -285,7 +286,7 @@ static void setup_child ( /*OUT*/ ThreadArchState *child, /* In L4Re creating a new thread means not cloning like in linux, * instead a new instruction pointer is required */ child->vex.guest_EIP = client_ip; -} +} /* --------------------------------------------------------------------- @@ -298,13 +299,13 @@ static void setup_child ( /*OUT*/ ThreadArchState *child, #define FOO(name) case L4_PROTO_##name : VG_(printf)(#name); break; enum { - L4_PROTO_DATASPACE = 0x4000, - L4_PROTO_NAMESPACE, - L4_PROTO_PARENT, - L4_PROTO_GOOS, - L4_PROTO_MEMALLOC, - L4_PROTO_RM, - L4_PROTO_EVENT, + L4_PROTO_DATASPACE = 0x4000, + L4_PROTO_NAMESPACE, + L4_PROTO_PARENT, + L4_PROTO_GOOS, + L4_PROTO_MEMALLOC, + L4_PROTO_RM, + L4_PROTO_EVENT, }; /* * print some informations about current syscall @@ -332,13 +333,13 @@ void print_infos_to_syscall(l4_msgtag_t *tag, ThreadId tid) { FOO(THREAD); FOO(LOG); FOO(SCHEDULER); - FOO(DATASPACE); - FOO(NAMESPACE); - FOO(PARENT); - FOO(GOOS); - FOO(RM); - FOO(MEMALLOC); - FOO(EVENT); + FOO(DATASPACE); + FOO(NAMESPACE); + FOO(PARENT); + FOO(GOOS); + FOO(RM); + FOO(MEMALLOC); + FOO(EVENT); default: VG_(printf)("unknown"); break; } @@ -348,6 +349,81 @@ void print_infos_to_syscall(l4_msgtag_t *tag, ThreadId tid) { #undef FOO +/* + * Determine if system call arguments indicate task termination. + */ +Bool syscall_is_exit(SyscallArgs* args) +{ + return (args->arg4 /* EDX */ == (L4_INVALID_CAP | L4_SYSF_RECV)) + && (args->arg3 /* ECX */ == L4_IPC_NEVER.raw ); +} + +/* + * Determine if syscall arguments are for thread_ex_regs + */ +Bool syscall_is_threadexregs(SyscallArgs *args, l4_msg_regs_t *mr, l4_msgtag_t tag) +{ + return (l4_msgtag_label(tag) == L4_PROTO_THREAD) + && (mr->mr[0] & L4_THREAD_EX_REGS_OP); +} + + +/* + * Determine if system call would perform a GDT set. + */ +Bool syscall_is_setgdt(l4_msg_regs_t *mr, l4_msgtag_t tag) +{ + return (l4_msgtag_label(tag) == L4_PROTO_THREAD) + && (mr->mr[0] == L4_THREAD_GDT_X86_OP); +} + + +/* + * Determine if syscall is a PARENT signal IPC. + */ +Bool syscall_is_parentsignal(l4_msg_regs_t *mr, l4_msgtag_t tag) +{ + return (l4_msgtag_label(tag) == L4_PROTO_PARENT) + && (mr->mr[1] == 0); +} + + +/* + * Handle GDT set system call. + * + * This code basically does what Fiasco does, but uses the guest_GDT + * that was allocated upon thread creation instead of performing a + * system call. + */ +int handle_gdt_set(l4_msg_regs_t *mr, l4_msgtag_t tag, ThreadState *ts) +{ + enum { GDT_USER_ENTRY1 = 0x48 }; + unsigned idx = mr->mr[1]; + unsigned words = l4_msgtag_words(tag); + Addr gdt_user_start = (Addr)(ts->arch.vex.guest_GDT + GDT_USER_ENTRY1); + + if (words == 0) { + return 1; // invalid + } + if (words == 1) { // case 1: read entry + mr->mr[0] = *(unsigned int *)gdt_user_start; + } else { + words -= 2; // -2 words are opcode and index + + VG_(memcpy)(gdt_user_start + 2 * idx, + &mr->mr[2], words * sizeof(unsigned)); + + /* + * Return value is a msgtag with the label set to the proper GDT entry. + * This needs to be correct as it will later on be used to index the GDT. + */ + ts->arch.vex.guest_EAX = ((idx << 3) + GDT_USER_ENTRY1 + 3) << 16; + } + + return 0; +} + + PRE(generic) { #define DEBUG_MYSELF 0 @@ -357,8 +433,8 @@ PRE(generic) l4_msgtag_t *tag; if (0) VG_(printf)("PRE_generic: sysno = %08lx arg0 = %8lx arg1 = %8lx arg2 = %8lx\n" " arg3 = %8lx arg4 = %8lx arg5 = %8lx arg6 = %8lx\n", - arrghs->sysno, arrghs->arg1, arrghs->arg2, arrghs->arg3, arrghs->arg4, - arrghs->arg5, arrghs->arg6, arrghs->arg7); + arrghs->sysno, arrghs->arg1, arrghs->arg2, arrghs->arg3, arrghs->arg4, + arrghs->arg5, arrghs->arg6, arrghs->arg7); /* get access to virtual utcb of client */ u = ts_utcb(&VG_(threads)[tid]); v = l4_utcb_mr_u(u); @@ -370,18 +446,14 @@ PRE(generic) print_infos_to_syscall(tag, tid); VG_(get_and_pp_StackTrace)( tid, VG_(clo_backtrace_size) ); #endif - if ((arrghs->arg4 /* EDX */ == (L4_INVALID_CAP | L4_SYSF_RECV)) && - (arrghs->arg3 /* ECX */ == L4_IPC_NEVER.raw ) ) { + if (syscall_is_exit(arrghs)) { /* l4_sleep_forever */ tst->exitreason = VgSrc_ExitThread; tst->os_state.exitcode = 1; SET_STATUS_Success(0); //enter_kdebug("l4_sleep_forever"); - } else - if ((l4_msgtag_label(*tag) == L4_PROTO_THREAD) && - (v->mr[0] & L4_THREAD_EX_REGS_OP) ) - { + } else if (syscall_is_threadexregs(arrghs, v, *tag)) { // TODO is this really a thread-create?? // TODO store thread cap // catch cap mappings @@ -393,27 +465,30 @@ PRE(generic) "\t\t\t (cl) ip = 0x%x\n" "\t\t\t (cl) sp = 0x%x\n" "\t\t\t flags = 0x%x\n", - (unsigned int) v->mr[1], + (unsigned int) v->mr[1], (unsigned int) v->mr[2], (unsigned int) v->mr[0]); #endif if (0) enter_kdebug("before thread create"); - - do_create_new_thread ( tid, + + do_create_new_thread ( tid, v->mr[2], /*stack pointer*/ v->mr[0], /*flags*/ v->mr[1] /*instruction pointer*/ ); - + if (0) enter_kdebug("after thread create"); SET_STATUS_Success(0); *flags |= SfYieldAfter; - } else if ((l4_msgtag_label(*tag) == L4_PROTO_PARENT) && - (v->mr[1] == 0)) { + + } else if (syscall_is_setgdt(v, *tag)) { + SET_STATUS_Success(handle_gdt_set(v, *tag, tst)); + + } else if (syscall_is_parentsignal(v, *tag)) { /* the guest signals his parent that he would exit now */ #if DEBUG_MYSELF - VG_(debugLog)(0, "syswrap", "The client would like to exit\n"); - VG_(debugLog)(0, "syswrap", "exit code = 0x%x\n", (unsigned int) v->mr[2]); + VG_(debugLog)(0, "syswrap", "The client would like to exit\n"); + VG_(debugLog)(0, "syswrap", "exit code = 0x%x\n", (unsigned int) v->mr[2]); #endif tst->exitreason = VgSrc_ExitThread; tst->os_state.exitcode = v->mr[2]; @@ -435,7 +510,11 @@ PRE(generic) } } SET_STATUS_Success(0); + } else { + /* + * In all other cases this might be a "normal" IPC and thus might block. + */ *flags |= SfMayBlock; } #undef DEBUG_MYSELF @@ -463,7 +542,7 @@ POST(dummy) { } ------------------------------------------------------------------ */ /* Add an x86-l4re specific wrapper to a syscall table. */ -#define PLAX_(sysno, name) WRAPPER_ENTRY_X_(x86_l4re, sysno, name) +#define PLAX_(sysno, name) WRAPPER_ENTRY_X_(x86_l4re, sysno, name) #define PLAXY(sysno, name) WRAPPER_ENTRY_XY(x86_l4re, sysno, name) @@ -484,7 +563,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { PLAXY(SYS_ARTIFICIAL, dummy), }; -const UInt ML_(syscall_table_size) = +const UInt ML_(syscall_table_size) = sizeof(ML_(syscall_table)) / sizeof(ML_(syscall_table)[0]); /*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-linux.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-linux.c index ef0561ac9..4b526563b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/syswrap-x86-linux.c @@ -38,6 +38,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" #include "pub_core_vkiscnums.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_aspacemgr.h" #include "pub_core_debuglog.h" @@ -2146,7 +2147,7 @@ static SyscallTableEntry syscall_table[] = { PLAXY(223, sys_syscall223), // 223 // sys_bproc? LINX_(__NR_gettid, sys_gettid), // 224 -//zz // (__NR_readahead, sys_readahead), // 225 */(Linux?) + LINX_(__NR_readahead, sys_readahead), // 225 */Linux LINX_(__NR_setxattr, sys_setxattr), // 226 LINX_(__NR_lsetxattr, sys_lsetxattr), // 227 LINX_(__NR_fsetxattr, sys_fsetxattr), // 228 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_threadstate.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_threadstate.c index d047110de..c45ce214b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_threadstate.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_threadstate.c @@ -30,6 +30,7 @@ #include "pub_core_basics.h" #include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" #include "pub_core_libcassert.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_trampoline.S b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_trampoline.S index e225efed5..9f1174bcd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_trampoline.S +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_trampoline.S @@ -112,6 +112,27 @@ VG_(x86_linux_REDIR_FOR_index): ret .size VG_(x86_linux_REDIR_FOR_index), .-VG_(x86_linux_REDIR_FOR_index) +/* There's no particular reason that this needs to be handwritten + assembly, but since that's what this file contains, here's a + simple strlen implementation (written in C and compiled by gcc.) +*/ +.global VG_(x86_linux_REDIR_FOR_strlen) +.type VG_(x86_linux_REDIR_FOR_strlen), @function +VG_(x86_linux_REDIR_FOR_strlen): + pushl %ebp + movl %esp, %ebp + movl 8(%ebp), %edx + movl %edx, %eax + jmp 2f +1: incl %eax +2: cmpb $0, (%eax) + jne 1b + subl %edx, %eax + popl %ebp + ret +.size VG_(x86_linux_REDIR_FOR_strlen), .-VG_(x86_linux_REDIR_FOR_strlen) + + .global VG_(trampoline_stuff_end) VG_(trampoline_stuff_end): @@ -1301,6 +1322,39 @@ VG_(trampoline_stuff_end): # undef UD2_1024 # undef UD2_PAGE +/*---------------- s390x-linux ----------------*/ +#else +#if defined(VGP_s390x_linux) + + /* a leading page of unexecutable code */ + .fill 2048, 2, 0x0000 + +.global VG_(trampoline_stuff_start) +VG_(trampoline_stuff_start): + +.global VG_(s390x_linux_SUBST_FOR_sigreturn) +VG_(s390x_linux_SUBST_FOR_sigreturn): + svc __NR_sigreturn + .short 0 + +.global VG_(s390x_linux_SUBST_FOR_rt_sigreturn) +VG_(s390x_linux_SUBST_FOR_rt_sigreturn): + /* Old gcc unwinding code checks for a sig(_rt)_return svc and then + for ra = cfa to decide if it is a sig_rt_frame or not. Since we + set ra to this trampoline, but the cfa is still in the stack, + the unwinder thinks, that this is a non-rt frame and causes a + crash in the gcc unwinder - which is used by the thread library + and others. Therefore we add a lr 1,1 nop, to let the gcc + unwinder bail out gracefully. This might also affect unwinding + across the signal frame - tough luck. fixs390 */ + lr 1,1 + svc __NR_rt_sigreturn + .short 0 + +.globl VG_(trampoline_stuff_end) +VG_(trampoline_stuff_end): + .fill 2048, 2, 0x0000 + /*---------------- unknown ----------------*/ #else # error Unknown platform @@ -1314,6 +1368,7 @@ VG_(trampoline_stuff_end): #endif #endif #endif +#endif #if defined(VGO_linux) /* Let the linker know we don't need an executable stack */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_translate.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_translate.c index 41a2e71b4..17d1b6995 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_translate.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_translate.c @@ -53,11 +53,13 @@ #include "pub_core_dispatch.h" // VG_(run_innerloop__dispatch_{un}profiled) // VG_(run_a_noredir_translation__return_point) +#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" // VexGuestArchState #include "pub_core_trampoline.h" // VG_(ppctoc_magic_redirect_return_stub) #include "pub_core_execontext.h" // VG_(make_depth_1_ExeContext_from_Addr) +#include "pub_core_gdbserver.h" // VG_(tool_instrument_then_gdbserver_if_needed) /*------------------------------------------------------------*/ /*--- Stats ---*/ @@ -209,6 +211,30 @@ static IRExpr* mk_ecu_Expr ( Addr64 guest_IP ) return mkIRExpr_HWord( (HWord)ecu ); } +/* When gdbserver is activated, the translation of a block must + first be done by the tool function, then followed by a pass + which (if needed) instruments the code for gdbserver. +*/ +static +IRSB* tool_instrument_then_gdbserver_if_needed ( VgCallbackClosure* closureV, + IRSB* sb_in, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, + IRType hWordTy ) +{ + return VG_(instrument_for_gdbserver_if_needed) + (VG_(tdict).tool_instrument (closureV, + sb_in, + layout, + vge, + gWordTy, + hWordTy), + layout, + vge, + gWordTy, + hWordTy); +} /* For tools that want to know about SP changes, this pass adds in the appropriate hooks. We have to do it after the tool's @@ -692,7 +718,7 @@ void log_bytes ( HChar* bytes, Int nbytes ) static Bool translations_allowable_from_seg ( NSegment const* seg ) { -# if defined(VGA_x86) +# if defined(VGA_x86) || defined(VGA_s390x) Bool allowR = True; # else Bool allowR = False; @@ -743,7 +769,6 @@ static Bool chase_into_ok ( void* closureV, Addr64 addr64 ) { Addr addr = (Addr)addr64; NSegment const* seg = VG_(am_find_nsegment)(addr); - VgCallbackClosure* closure = (VgCallbackClosure*)closureV; /* Work through a list of possibilities why we might not want to allow a chase. */ @@ -752,10 +777,6 @@ static Bool chase_into_ok ( void* closureV, Addr64 addr64 ) if (!translations_allowable_from_seg(seg)) goto dontchase; - /* Destination requires a self-check? */ - if (self_check_required(seg, closure->tid)) - goto dontchase; - /* Destination is redirected? */ if (addr != VG_(redir_do_lookup)(addr, NULL)) goto dontchase; @@ -1263,8 +1284,7 @@ Bool VG_(translate) ( ThreadId tid, Addr64 addr; T_Kind kind; Int tmpbuf_used, verbosity, i; - Bool notrace_until_done, do_self_check; - UInt notrace_until_limit = 0; + Bool do_self_check; Bool (*preamble_fn)(void*,IRSB*); VexArch vex_arch; VexArchInfo vex_archinfo; @@ -1325,15 +1345,6 @@ Bool VG_(translate) ( ThreadId tid, addr, name2 ); } - /* If codegen tracing, don't start tracing until - notrace_until_limit blocks have gone by. This avoids printing - huge amounts of useless junk when all we want to see is the last - few blocks translated prior to a failure. Set - notrace_until_limit to be the number of translations to be made - before --trace-codegen= style printing takes effect. */ - notrace_until_done - = VG_(get_bbs_translated)() >= notrace_until_limit; - if (!debugging_translation) VG_TRACK( pre_mem_read, Vg_CoreTranslate, tid, "(translator)", addr, 1 ); @@ -1364,11 +1375,19 @@ Bool VG_(translate) ( ThreadId tid, if (seg != NULL) { /* There's some kind of segment at the requested place, but we aren't allowed to execute code here. */ - VG_(synth_fault_perms)(tid, addr); + if (debugging_translation) + VG_(printf)("translations not allowed here (segment not executable)" + "(0x%llx)\n", addr); + else + VG_(synth_fault_perms)(tid, addr); } else { /* There is no segment at all; we are attempting to execute in the middle of nowhere. */ - VG_(synth_fault_mapping)(tid, addr); + if (debugging_translation) + VG_(printf)("translations not allowed here (no segment)" + "(0x%llx)\n", addr); + else + VG_(synth_fault_mapping)(tid, addr); } return False; } @@ -1474,7 +1493,9 @@ Bool VG_(translate) ( ThreadId tid, IRSB*(*f)(VgCallbackClosure*, IRSB*,VexGuestLayout*,VexGuestExtents*, IRType,IRType) - = VG_(tdict).tool_instrument; + = VG_(clo_vgdb) != Vg_VgdbNo + ? tool_instrument_then_gdbserver_if_needed + : VG_(tdict).tool_instrument; IRSB*(*g)(void*, IRSB*,VexGuestLayout*,VexGuestExtents*, IRType,IRType) @@ -1508,7 +1529,8 @@ Bool VG_(translate) ( ThreadId tid, ? (void*) &VG_(run_innerloop__dispatch_profiled) : (void*) &VG_(run_innerloop__dispatch_unprofiled); # elif defined(VGA_ppc32) || defined(VGA_ppc64) \ - || defined(VGA_arm) + || defined(VGA_arm) || defined(VGA_s390x) + /* See comment libvex.h; machine has link register --> dipatch = NULL */ vta.dispatch = NULL; # else # error "Unknown arch" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_transtab.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_transtab.c index 4a1547f18..f08afa930 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_transtab.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_transtab.c @@ -901,6 +901,9 @@ static void invalidate_icache ( void *ptr, Int nbytes ) # elif defined(VGA_amd64) /* no need to do anything, hardware provides coherence */ +# elif defined(VGA_s390x) + /* no need to do anything, hardware provides coherence */ + # elif defined(VGP_arm_linux) /* ARM cache flushes are privileged, so we must defer to the kernel. */ Addr startaddr = (Addr) ptr; @@ -1556,7 +1559,7 @@ void VG_(init_tt_tc) ( void ) /* Ensure the calculated value is not way crazy. */ vg_assert(tc_sector_szQ >= 2 * N_TTES_PER_SECTOR_USABLE); - vg_assert(tc_sector_szQ <= 80 * N_TTES_PER_SECTOR_USABLE); + vg_assert(tc_sector_szQ <= 100 * N_TTES_PER_SECTOR_USABLE); /* Initialise the sectors */ youngest_sector = 0; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_ume/elf.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_ume/elf.c index ea1639ee9..351103601 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_ume/elf.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_ume/elf.c @@ -310,7 +310,7 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info) ESZ(Addr) maxaddr = 0; /* highest mapped address */ ESZ(Addr) interp_addr = 0; /* interpreter (ld.so) address */ ESZ(Word) interp_size = 0; /* interpreter size */ - ESZ(Word) interp_align = VKI_PAGE_SIZE; + /* ESZ(Word) interp_align = VKI_PAGE_SIZE; */ /* UNUSED */ Int i; void *entry; ESZ(Addr) ebase = 0; @@ -400,7 +400,7 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info) if (!baseaddr_set) { interp_addr = iph->p_vaddr; - interp_align = iph->p_align; + /* interp_align = iph->p_align; */ /* UNUSED */ baseaddr_set = 1; } @@ -509,6 +509,7 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info) #else info->init_ip = (Addr)entry; info->init_toc = 0; /* meaningless on this platform */ + (void) interp_offset; /* stop gcc complaining it is unused */ #endif VG_(free)(e->p); VG_(free)(e); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_aspacemgr.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_aspacemgr.h index 581cb3356..00c179fc9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_aspacemgr.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_aspacemgr.h @@ -295,12 +295,18 @@ extern SysRes VG_(am_mmap_anon_float_valgrind)( SizeT cszB ); extern SysRes VG_(am_sbrk_anon_float_valgrind)( SizeT cszB ); -/* Map a file at an unconstrained address for V, and update the +/* Map privately a file at an unconstrained address for V, and update the segment array accordingly. This is used by V for transiently mapping in object files to read their debug info. */ extern SysRes VG_(am_mmap_file_float_valgrind) ( SizeT length, UInt prot, Int fd, Off64T offset ); +/* Map shared a file at an unconstrained address for V, and update the + segment array accordingly. This is used by V for communicating + with vgdb. */ +extern SysRes VG_(am_shared_mmap_file_float_valgrind) + ( SizeT length, UInt prot, Int fd, Off64T offset ); + /* Unmap the given address range and update the segment array accordingly. This fails if the range isn't valid for the client. If *need_discard is True after a successful return, the caller @@ -408,10 +414,10 @@ typedef extern VgStack* VG_(am_alloc_VgStack)( /*OUT*/Addr* initial_sp ); -/* Figure out how many bytes of the stack's active area have not - been used. Used for estimating if we are close to overflowing it. */ - -extern Int VG_(am_get_VgStack_unused_szB)( VgStack* stack ); +/* Figure out how many bytes of the stack's active area have not been + used. Used for estimating if we are close to overflowing it. If + the free area is larger than 'limit', just return 'limit'. */ +extern SizeT VG_(am_get_VgStack_unused_szB)( VgStack* stack, SizeT limit ); // DDD: this is ugly #if defined(VGO_darwin) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_basics.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_basics.h index fdfd733f6..760cccd34 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_basics.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_basics.h @@ -58,13 +58,12 @@ # include "libvex_guest_ppc64.h" #elif defined(VGA_arm) # include "libvex_guest_arm.h" +#elif defined(VGA_s390x) +# include "libvex_guest_s390x.h" #else # error Unknown arch #endif -// For jmp_buf -#include - /* --------------------------------------------------------------------- A struct to hold starting values for stack unwinding. @@ -103,7 +102,12 @@ typedef UInt r14; UInt r12; UInt r11; + UInt r7; } ARM; + struct { + ULong r_fp; + ULong r_lr; + } S390X; } misc; } UnwindStartRegs; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_debuginfo.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_debuginfo.h index 101e2d3c8..ba7551b6d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_debuginfo.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_debuginfo.h @@ -117,12 +117,16 @@ typedef D3UnwindRegs; #elif defined(VGA_arm) typedef - struct { Addr r15; Addr r14; Addr r13; Addr r12; Addr r11; } + struct { Addr r15; Addr r14; Addr r13; Addr r12; Addr r11; Addr r7; } D3UnwindRegs; #elif defined(VGA_ppc32) || defined(VGA_ppc64) typedef UChar /* should be void, but gcc complains at use points */ D3UnwindRegs; +#elif defined(VGA_s390x) +typedef + struct { Addr ia; Addr sp; Addr fp; Addr lr;} + D3UnwindRegs; #else # error "Unsupported arch" #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_errormgr.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_errormgr.h index 2b72b038f..c3462e039 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_errormgr.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_errormgr.h @@ -51,7 +51,14 @@ typedef extern void VG_(load_suppressions) ( void ); -extern void VG_(show_all_errors) ( void ); +// if verbosity == 0, print nothing. +// else if xml print suppressions used (in xml format) +// else if verbosity == 1 print Error summary +// else print all errors and suppressions used. +extern void VG_(show_all_errors) ( Int verbosity, Bool xml ); + +/* Print (in readable format) the last error that occured. */ +extern void VG_(show_last_error) ( void ); extern void VG_(show_error_counts_as_XML) ( void ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_gdbserver.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_gdbserver.h new file mode 100644 index 000000000..202d89bc8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_gdbserver.h @@ -0,0 +1,194 @@ + +/*--------------------------------------------------------------------*/ +/*--- Handle remote gdb protocol. pub_core_gdbserver.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2011 Philippe Waroquiers + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __PUB_CORE_GDBSERVER_H +#define __PUB_CORE_GDBSERVER_H + +#include "pub_tool_gdbserver.h" + + +// After a fork or after an exec, call the below to (possibly) terminate +// the previous gdbserver and then activate a new gdbserver +// before any guest code execution, to e.g. allow the user to set +// breakpoints before execution. +// If VG_(clo_vgdb) == No, the below has no effect. +void VG_(gdbserver_prerun_action) (ThreadId tid); + +// True if there is some activity from vgdb +// If it returns True, then extern void VG_(gdbserver) can be called +// to handle this incoming vgdb request. +extern Bool VG_(gdbserver_activity) (ThreadId tid); + + +/* Called by low level to insert or remove a break or watch point. + Break or watch point implementation is done using help from the tool. + break point support implies some (small) specific instrumentation + taken in charge for all tools by m_translate.c. + + Write/read/access watchpoint can only be provided by tools which are + tracking addressability and/or accessibility of memory + (so typically memcheck can provide it). Note that memcheck addressability + bits do not differentiate between read and write accessibility. + However, when accessing unaddressable byte, memcheck can differentiate + reads from write, thereby providing read/write or access watchpoints. + + Note that gdbserver assumes that software breakpoint is supported + (as this will be done by re-instrumenting the code). + Note that len is ignored for sofware breakpoints. hardware_breakpoint + are not supported. + + Returns True if the point has properly been inserted or removed + Returns False otherwise. */ +Bool VG_(gdbserver_point) (PointKind kind, Bool insert, + Addr addr, int len); + +/* Entry point invoked by vgdb when it uses ptrace to cause a gdbserver + invocation. A magic value is passed by vgdb in check as a verification + that the call has been properly pushed by vgdb. */ +extern void VG_(invoke_gdbserver) ( int check ); + +// To be called before delivering a signal. +// Returns True if gdb user asks to pass the signal to the client. +// Note that if the below returns True, the signal might +// still be ignored if this is the action desired by the +// guest program. +extern Bool VG_(gdbserver_report_signal) (Int signo, ThreadId tid); + +/* software_breakpoint, single step and jump support ------------------------*/ +/* VG_(instrument_for_gdbserver_if_needed) allows to do "standard and easy" + instrumentation for gdbserver. + VG_(instrument_for_gdbserver_if_needed) does the following: + * checks if gdbserver instrumentation is needed for vge. + * if no gdbserver instrumentation needed, + returns sb_in + * otherwise + It will instrument sb_in to allow gdbserver to properly + handle breakpoints and single_stepping in sb_in. + All the target jumps of sb_in will also be invalidated + if these are not yet instrumented for gdbserver. + This allows to have single_step working, using a lazily + translation of the blocks which are being single stepped + in. + + The typical usage of this function is to call it on the block + instrumented by the tool instrument function i.e. : + return VG_(instrument_for_gdbserver_if_needed) (sb_out, + layout, + vge, + gWordTy, + hWordTy); + where sb_out is the block instrumented by the tool. + + If the block contains a call to a dirty helper that indirectly + calls gdbserver, then this dirty helper can (indirectly) change + the IP. This implies to jump to this IP after the call to + gdbserver. */ +extern IRSB* VG_(instrument_for_gdbserver_if_needed) + (IRSB* sb_in, /* block to be instrumented */ + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy); + +/* reason for which gdbserver connection must be finished */ +typedef + enum { + orderly_finish, + reset_after_error, + reset_after_fork} FinishReason; + +/* output various gdbserver statistics and status. */ +extern void VG_(gdbserver_status_output)(void); + +/* Shared structure between vgdb and the process running + under valgrind. + We define two variants: a 32 bit and a 64 bit. + The valgrind process will use the appropriate size, + according to the architecture. + vgdb will use what the valgrind process is using. */ +/* The below takes care that sizes will be 32 or 64 bits, + whatever the architecture. A.o., vgdb.c cannot use directly + the types from pub_core_threadstate.h as we want vgdb.c to + be independent of the arch it is debugging in case of bi-arch + Valgrind (e.g. x86 and amd64). So, the valgrind process must + give all the needed info/offset to vgdb in the below structure. */ + +typedef + struct { + // PID of the vgdb that last connected to the Valgrind gdbserver. + // It will be set by vgdb after connecting. + int vgdb_pid; + + // nr of bytes vgdb has written to valgrind + volatile int written_by_vgdb; + // nr of bytes seen by valgrind + volatile int seen_by_valgrind; + + // address at which gdbserver can be invoked + Addr32 invoke_gdbserver; + + // address of VG_(threads) and various sizes + // and offset needed by vgdb. + Addr32 threads; + int sizeof_ThreadState; + int offset_status; + int offset_lwpid; + } VgdbShared32; + +/* Same as VgdbShared32 but for 64 bits arch. */ +typedef + struct { + int vgdb_pid; + + volatile int written_by_vgdb; + volatile int seen_by_valgrind; + + Addr64 invoke_gdbserver; + + Addr64 threads; + int sizeof_ThreadState; + int offset_status; + int offset_lwpid; + } VgdbShared64; + +// The below typedef makes the life of valgrind easier. +// vgdb must however work explicitely with the specific 32 or 64 bits version. + +#if VEX_HOST_WORDSIZE == 8 +typedef VgdbShared64 VgdbShared; +#elif VEX_HOST_WORDSIZE == 4 +typedef VgdbShared32 VgdbShared; +#else +# error "unexpected wordsize" +#endif + + +#endif // __PUB_CORE_GDBSERVER_H +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcassert.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcassert.h index 3512100a0..427bd5f52 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcassert.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcassert.h @@ -47,14 +47,14 @@ "valgrind", VG_BUGS_TO, "") #define vg_assert(expr) \ - ((void) ((expr) ? 0 : \ + ((void) (LIKELY(expr) ? 0 : \ (VG_(assert_fail) (/*isCore*/True, #expr, \ __FILE__, __LINE__, __PRETTY_FUNCTION__, \ ""), \ 0))) #define vg_assert2(expr, format, args...) \ - ((void) ((expr) ? 0 : \ + ((void) (LIKELY(expr) ? 0 : \ (VG_(assert_fail) (/*isCore*/True, #expr, \ __FILE__, __LINE__, __PRETTY_FUNCTION__, \ format, ##args), \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcsetjmp.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcsetjmp.h new file mode 100644 index 000000000..215eacc80 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_libcsetjmp.h @@ -0,0 +1,49 @@ + +/*--------------------------------------------------------------------*/ +/*--- A minimal setjmp/longjmp facility. pub_core_libcsetjmp.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2010-2010 Mozilla 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Julian Seward */ + +#ifndef __PUB_CORE_LIBCSETJMP_H +#define __PUB_CORE_LIBCSETJMP_H + +//-------------------------------------------------------------------- +// PURPOSE: Provides a minimal setjmp/longjmp facility, that saves/ +// restores integer registers, but not necessarily anything more. +//-------------------------------------------------------------------- + +// No core-only exports; everything in this module is visible to both +// the core and tools. + +#include "pub_tool_libcsetjmp.h" + +#endif // __PUB_CORE_LIBCSETJMP_H + +/*--------------------------------------------------------------------*/ +/*--- end pub_core_libcsetjmp.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_machine.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_machine.h index 979bdf701..6fb699e45 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_machine.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_machine.h @@ -80,6 +80,11 @@ # define VG_ELF_MACHINE EM_386 # define VG_ELF_CLASS ELFCLASS32 # undef VG_PLAT_USES_PPCTOC +#elif defined(VGP_s390x_linux) +# define VG_ELF_DATA2XXX ELFDATA2MSB +# define VG_ELF_MACHINE EM_S390 +# define VG_ELF_CLASS ELFCLASS64 +# undef VG_PLAT_USES_PPCTOC #else # error Unknown platform #endif @@ -104,6 +109,10 @@ # define VG_INSTR_PTR guest_R15T # define VG_STACK_PTR guest_R13 # define VG_FRAME_PTR guest_R11 +#elif defined(VGA_s390x) +# define VG_INSTR_PTR guest_IA +# define VG_STACK_PTR guest_SP +# define VG_FRAME_PTR guest_FP #else # error Unknown arch #endif @@ -163,6 +172,11 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, then safe to use VG_(machine_get_VexArchInfo) and VG_(machine_ppc64_has_VMX) + ------------- + arm: initially: call VG_(machine_get_hwcaps) + call VG_(machine_arm_set_has_NEON) + + then safe to use VG_(machine_get_VexArchInfo) VG_(machine_get_hwcaps) may use signals (although it attempts to leave signal state unchanged) and therefore should only be @@ -187,6 +201,10 @@ extern void VG_(machine_ppc32_set_clszB)( Int ); extern void VG_(machine_ppc64_set_clszB)( Int ); #endif +#if defined(VGA_arm) +extern void VG_(machine_arm_set_has_NEON)( Bool ); +#endif + /* X86: set to 1 if the host is able to do {ld,st}mxcsr (load/store the SSE control/status register), else zero. Is referenced from assembly code, so do not change from a 32-bit int. */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_mallocfree.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_mallocfree.h index aabea6924..a88ecb299 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_mallocfree.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_mallocfree.h @@ -70,14 +70,15 @@ typedef Int ArenaId; // minimum alignment. Must be a power of 2 greater than 4, and should be // greater than 8. #if defined(VGP_x86_linux) || \ - defined(VGP_ppc32_linux) || \ defined(VGP_arm_linux) || \ defined(VGP_x86_l4re) # define VG_MIN_MALLOC_SZB 8 // Nb: We always use 16 bytes for Darwin, even on 32-bits, so it can be used // for any AltiVec- or SSE-related type. This matches the Darwin libc. #elif defined(VGP_amd64_linux) || \ + defined(VGP_ppc32_linux) || \ defined(VGP_ppc64_linux) || \ + defined(VGP_s390x_linux) || \ defined(VGP_ppc64_aix5) || \ defined(VGP_ppc32_aix5) || \ defined(VGP_x86_darwin) || \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_options.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_options.h index 24125bc89..bb7cb6c4d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_options.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_options.h @@ -45,12 +45,36 @@ /* The max number of --require-text-symbol= specification strings. */ #define VG_CLO_MAX_REQ_TSYMS 100 +/* The max number of --fullpath-after= parameters. */ +#define VG_CLO_MAX_FULLPATH_AFTER 100 + /* Should we stop collecting errors if too many appear? default: YES */ extern Bool VG_(clo_error_limit); /* Alternative exit code to hand to parent if errors were found. default: 0 (no, return the application's exit code in the normal way. */ extern Int VG_(clo_error_exitcode); + +typedef + enum { + Vg_VgdbNo, // Do not activate gdbserver. + Vg_VgdbYes, // Activate gdbserver (default). + Vg_VgdbFull, // ACtivate gdbserver in full mode, allowing + // a precise handling of watchpoints and single stepping + // at any moment. + } + VgVgdb; +/* if != Vg_VgdbNo, allows valgrind to serve vgdb/gdb. */ +extern VgVgdb VG_(clo_vgdb); +/* if > 0, checks every VG_(clo_vgdb_poll) BBS if vgdb wants to be served. */ +extern Int VG_(clo_vgdb_poll); +/* prefix for the named pipes (FIFOs) used by vgdb/gdb to communicate with valgrind */ +extern Char* VG_(clo_vgdb_prefix); +/* if True, gdbserver in valgrind will expose a target description containing + shadow registers */ +extern Bool VG_(clo_vgdb_shadow_registers); +#define VG_CLO_VGDB_PREFIX_DEFAULT "/tmp/vgdb-pipe" + /* Enquire about whether to attach to a debugger at errors? default: NO */ extern Bool VG_(clo_db_attach); /* The debugger command? default: whatever gdb ./configure found */ @@ -67,6 +91,10 @@ extern Bool VG_(clo_trace_children); /* String containing comma-separated patterns for executable names that should not be traced into even when --trace-children=yes */ extern HChar* VG_(clo_trace_children_skip); +/* The same as VG_(clo_trace_children), except that these patterns are + tested against the arguments for child processes, rather than the + executable name. */ +extern HChar* VG_(clo_trace_children_skip_by_arg); /* After a fork, the child's output can become confusingly intermingled with the parent's output. This is especially problematic when VG_(clo_xml) is True. Setting @@ -91,6 +119,10 @@ extern Int VG_(clo_n_suppressions); /* The names of the suppression files. */ extern Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES]; +/* An array of strings harvested from --fullpath-after= flags. */ +extern Int VG_(clo_n_fullpath_after); +extern Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER]; + /* DEBUG: print generated code? default: 00000000 ( == NO ) */ extern UChar VG_(clo_trace_flags); /* DEBUG: do bb profiling? default: 00000000 ( == NO ) */ @@ -128,6 +160,8 @@ extern Char* VG_(clo_sim_hints); extern Bool VG_(clo_sym_offsets); /* Read DWARF3 variable info even if tool doesn't ask for it? */ extern Bool VG_(clo_read_var_info); +/* Which prefix to strip from full source file paths, if any. */ +extern Char* VG_(clo_prefix_to_strip); /* An array of strings harvested from --require-text-symbol= flags. @@ -211,9 +245,13 @@ extern HChar* VG_(clo_kernel_variant); extern Bool VG_(clo_dsymutil); /* Should we trace into this child executable (across execve etc) ? - This involves considering --trace-children=, --trace-children-skip= - and the name of the executable. */ -extern Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name ); + This involves considering --trace-children=, + --trace-children-skip=, --trace-children-skip-by-arg=, and the name + of the executable. 'child_argv' must not include the name of the + executable itself; iow child_argv[0] must be the first arg, if any, + for the child. */ +extern Bool VG_(should_we_trace_this_child) ( HChar* child_exe_name, + HChar** child_argv ); #endif // __PUB_CORE_OPTIONS_H diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_scheduler.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_scheduler.h index 73773d795..0458aaa67 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_scheduler.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_scheduler.h @@ -95,6 +95,14 @@ extern void VG_(scheduler_init_phase2) ( ThreadId main_tid, Addr clstack_end, SizeT clstack_size ); +// Allows to disable the polling done to detect vgdb input +// or to force a poll at next scheduler call. +extern void VG_(disable_vgdb_poll) (void ); +extern void VG_(force_vgdb_poll) ( void ); + +/* nr of bbs done since startup. */ +extern ULong VG_(bbs_done) (void); + /* Stats ... */ extern void VG_(print_scheduler_stats) ( void ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_syscall.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_syscall.h index c46841611..d621f2bf8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_syscall.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_syscall.h @@ -32,6 +32,7 @@ #define __PUB_CORE_SYSCALL_H #if defined(VGO_l4re) +#include "pub_core_libcsetjmp.h" #include "pub_core_threadstate.h" #include "coregrind/m_syswrap/priv_types_n_macros.h" #include @@ -90,6 +91,7 @@ extern SysRes VG_(mk_SysRes_x86_darwin) ( UChar scclass, Bool isErr, UInt wHI, UInt wLO ); extern SysRes VG_(mk_SysRes_amd64_darwin)( UChar scclass, Bool isErr, ULong wHI, ULong wLO ); +extern SysRes VG_(mk_SysRes_s390x_linux) ( Long val ); extern SysRes VG_(mk_SysRes_x86_l4re) ( UInt val ); extern SysRes VG_(mk_SysRes_Error) ( UWord val ); extern SysRes VG_(mk_SysRes_Success) ( UWord val ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_threadstate.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_threadstate.h index f9a37b45e..efeccdb49 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_threadstate.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_threadstate.h @@ -93,6 +93,8 @@ typedef typedef VexGuestPPC64State VexGuestArchState; #elif defined(VGA_arm) typedef VexGuestARMState VexGuestArchState; +#elif defined(VGA_s390x) + typedef VexGuestS390XState VexGuestArchState; #else # error Unknown architecture #endif @@ -373,8 +375,8 @@ typedef struct { ThreadOSstate os_state; /* Per-thread jmp_buf to resume scheduler after a signal */ - Bool sched_jmpbuf_valid; - jmp_buf sched_jmpbuf; + Bool sched_jmpbuf_valid; + VG_MINIMAL_JMP_BUF(sched_jmpbuf); } ThreadState; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_trampoline.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_trampoline.h index 56025ad7d..515ff729e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_trampoline.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_trampoline.h @@ -60,6 +60,7 @@ extern Addr VG_(trampoline_stuff_end); extern Addr VG_(x86_linux_SUBST_FOR_sigreturn); extern Addr VG_(x86_linux_SUBST_FOR_rt_sigreturn); extern Char* VG_(x86_linux_REDIR_FOR_index) ( const Char*, Int ); +extern UInt VG_(x86_linux_REDIR_FOR_strlen)( void* ); #endif #if defined(VGP_amd64_linux) @@ -150,6 +151,11 @@ extern void VG_(l4re_trampoline_stuff_start); extern void VG_(l4re_trampoline_stuff_end); #endif +#if defined(VGP_s390x_linux) +extern Addr VG_(s390x_linux_SUBST_FOR_sigreturn); +extern Addr VG_(s390x_linux_SUBST_FOR_rt_sigreturn); +#endif + #endif // __PUB_CORE_TRAMPOLINE_H /*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_transtab_asm.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_transtab_asm.h index d3292f19f..f76924764 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_transtab_asm.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/pub_core_transtab_asm.h @@ -43,7 +43,10 @@ 2)[VG_TT_FAST_BITS-1 : 0]' on those targets. On ARM we do like ppc32/ppc64, although that will have to be - revisited when we come to implement Thumb. */ + revisited when we come to implement Thumb. + + On s390x the rightmost bit of an instruction address is zero. + For best table utilization shift the address to the right by 1 bit. */ #define VG_TT_FAST_BITS 15 #define VG_TT_FAST_SIZE (1 << VG_TT_FAST_BITS) @@ -51,10 +54,16 @@ /* This macro isn't usable in asm land; nevertheless this seems like a good place to put it. */ + #if defined(VGA_x86) || defined(VGA_amd64) # define VG_TT_FAST_HASH(_addr) ((((UWord)(_addr)) ) & VG_TT_FAST_MASK) -#elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm) + +#elif defined(VGA_s390x) || defined(VGA_arm) +# define VG_TT_FAST_HASH(_addr) ((((UWord)(_addr)) >> 1) & VG_TT_FAST_MASK) + +#elif defined(VGA_ppc32) || defined(VGA_ppc64) # define VG_TT_FAST_HASH(_addr) ((((UWord)(_addr)) >> 2) & VG_TT_FAST_MASK) + #else # error "VG_TT_FAST_HASH: unknown platform" #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vg_preloaded.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vg_preloaded.c index 8d69b16dd..d97a9107b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vg_preloaded.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vg_preloaded.c @@ -56,16 +56,15 @@ void VG_NOTIFY_ON_LOAD(freeres)( void ); void VG_NOTIFY_ON_LOAD(freeres)( void ) { - int res; #if !defined(__UCLIBC__) && !defined(VGO_aix5) extern void __libc_freeres(void); __libc_freeres(); #endif - VALGRIND_DO_CLIENT_REQUEST(res, 0 /* default */, - VG_USERREQ__LIBC_FREERES_DONE, - 0, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default */, + VG_USERREQ__LIBC_FREERES_DONE, + 0, 0, 0, 0, 0); /*NOTREACHED*/ - *(int *)0 = 'x'; + *(volatile int *)0 = 'x'; } /* --------------------------------------------------------------------- @@ -77,7 +76,6 @@ void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void) { OrigFn fn; Addr result = 0; - int res; /* Call the original indirect function and get it's result */ VALGRIND_GET_ORIG_FN(fn); @@ -87,9 +85,8 @@ void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void) code which runs on the emulated CPU) to update the redirection that led to this function. This client request eventually gives control to the function VG_(redir_add_ifunc_target) in m_redir.c */ - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__ADD_IFUNC_TARGET, - fn.nraddr, result, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__ADD_IFUNC_TARGET, + fn.nraddr, result, 0, 0, 0); return (void*)result; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vgdb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vgdb.c new file mode 100644 index 000000000..d26c692ea --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/vgdb.c @@ -0,0 +1,4399 @@ +/*--------------------------------------------------------------------*/ +/*--- Relay between gdb and gdbserver embedded in valgrind vgdb.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2011 Philippe Waroquiers + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" +#include "pub_core_threadstate.h" +#include "pub_core_gdbserver.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "assert.h" +#include + +# if defined(VGO_linux) +#include +#include +# endif + +/* vgdb has two usages: + 1. relay application between gdb and the gdbserver embedded in valgrind. + 2. standalone to send monitor commands to a running valgrind-ified process + + It is made of a main program which reads arguments. If no + arguments are given or only --pid and --vgdb-prefix, then usage 1 is + assumed. + + As relay application, vgdb reads bytes from gdb on stdin and + writes these bytes to valgrind. Bytes read from valgrind are + written to gdb on stdout. Read/Write from/to valgrind is done + using FIFOs. There is one thread reading from stdin, writing to + valgrind on a FIFO. There is one thread reading from valgrind on a + FIFO, writing to gdb on stdout + + As a standalone utility, vgdb builds command packets to write to valgrind, + sends it and reads the reply. The same two threads are used to write/read. + Once all the commands are sent and their replies received, vgdb will exit. + +*/ + +/* define PTRACEINVOKER to compile the ptrace related code + which ensures a valgrind process blocked in a system call + can be "waken up". PTRACEINVOKER implies some architecture + specific code and/or some OS specific code. */ +#if defined(VGA_arm) || defined(VGA_x86) || defined(VGA_amd64) \ + || defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_s390x) +#define PTRACEINVOKER +#else +I_die_here : (PTRACEINVOKER) architecture missing in vgdb.c +#endif + +/* Some darwin specific stuff is needed as ptrace is not + fully supported on MacOS. Till we find someone courageous + having access to Darwin, there is no PTRACEINVOKER. */ +#if defined(VGO_darwin) +#undef PTRACEINVOKER +#endif + +static int debuglevel; +static struct timeval dbgtv; +/* if level <= debuglevel, print timestamp, then print provided by debug info */ +#define DEBUG(level, ...) (level <= debuglevel ? \ + gettimeofday(&dbgtv, NULL), \ + fprintf(stderr, "%ld.%6.6ld ", \ + (long int)dbgtv.tv_sec, \ + (long int)dbgtv.tv_usec), \ + fprintf(stderr, __VA_ARGS__),fflush(stderr) \ + : 0) + +/* same as DEBUG but does not print time stamp info */ +#define PDEBUG(level, ...) (level <= debuglevel ? \ + fprintf(stderr, __VA_ARGS__),fflush(stderr) \ + : 0) + +/* if errno != 0, + report the errno and fprintf the ... varargs on stderr. */ +#define ERROR(errno, ...) ((errno == 0 ? 0 : perror("syscall failed")), \ + fprintf(stderr, __VA_ARGS__), \ + fflush(stderr)) +/* same as ERROR, but also exits with status 1 */ +#define XERROR(errno, ...) ((errno == 0 ? 0 : perror("syscall failed")), \ + fprintf(stderr, __VA_ARGS__), \ + fflush(stderr), \ + exit(1)) + +static char *vgdb_prefix = "/tmp/vgdb-pipe"; + +/* Will be set to True when any condition indicating we have to shutdown + is encountered. */ +static Bool shutting_down = False; + +static VgdbShared32 *shared32; +static VgdbShared64 *shared64; +#define VS_written_by_vgdb (shared32 != NULL ? \ + shared32->written_by_vgdb \ + : shared64->written_by_vgdb) +#define VS_seen_by_valgrind (shared32 != NULL ? \ + shared32->seen_by_valgrind \ + : shared64->seen_by_valgrind) + +#define VS_vgdb_pid (shared32 != NULL ? shared32->vgdb_pid : shared64->vgdb_pid) + +/* Calls malloc (size). Exits if memory can't be allocated. */ +static +void *vmalloc(size_t size) +{ + void * mem = malloc(size); + if (mem == NULL) + XERROR (errno, "can't allocate memory\n"); + return mem; +} + +/* Calls realloc (size). Exits if memory can't be allocated. */ +static +void *vrealloc(void *ptr,size_t size) +{ + void * mem = realloc(ptr, size); + if (mem == NULL) + XERROR (errno, "can't reallocate memory\n"); + return mem; +} + +/* add nrw to the written_by_vgdb field of shared32 or shared64 */ +static +void add_written(int nrw) +{ + if (shared32 != NULL) + shared32->written_by_vgdb += nrw; + else if (shared64 != NULL) + shared64->written_by_vgdb += nrw; + else + assert(0); +} + +static int shared_mem_fd = -1; +static +void map_vgdbshared (char* shared_mem) +{ + struct stat fdstat; + void **s; + shared_mem_fd = open(shared_mem, O_RDWR); + /* shared_mem_fd will not be closed till vgdb exits. */ + + if (shared_mem_fd == -1) + XERROR (errno, "error opening %s shared memory file\n", shared_mem); + + if (fstat(shared_mem_fd, &fdstat) != 0) + XERROR (errno, "fstat"); + + if (fdstat.st_size == sizeof(VgdbShared64)) + s = (void*) &shared64; + else if (fdstat.st_size == sizeof(VgdbShared32)) + s = (void*) &shared32; + else +#if VEX_HOST_WORDSIZE == 8 + XERROR (0, + "error size shared memory file %s.\n" + "expecting size %d (64bits) or %d (32bits) got %ld.\n", + shared_mem, + (int) sizeof(VgdbShared64), (int) sizeof(VgdbShared32), + (long int)fdstat.st_size); +#elif VEX_HOST_WORDSIZE == 4 + XERROR (0, + "error size shared memory file %s.\n" + "expecting size %d (32bits) got %ld.\n", + shared_mem, + (int) sizeof(VgdbShared32), + fdstat.st_size); +#else +# error "unexpected wordsize" +#endif + +#if VEX_HOST_WORDSIZE == 4 + if (shared64 != NULL) + XERROR (0, "cannot use 32 bits vgdb with a 64bits valgrind process\n"); + /* But we can use a 64 bits vgdb with a 32 bits valgrind */ +#endif + + *s = (void*) mmap (NULL, fdstat.st_size, + PROT_READ|PROT_WRITE, MAP_SHARED, + shared_mem_fd, 0); + + if (*s == (void *) -1) + XERROR (errno, "error mmap shared memory file %s\n", shared_mem); + +} + +#if VEX_HOST_WORDSIZE == 8 +typedef Addr64 CORE_ADDR; +typedef Addr64 PTRACE_XFER_TYPE; +typedef void* PTRACE_ARG3_TYPE; +#elif VEX_HOST_WORDSIZE == 4 +typedef Addr32 CORE_ADDR; +typedef Addr32 PTRACE_XFER_TYPE; +typedef void* PTRACE_ARG3_TYPE; +#else +# error "unexpected wordsize" +#endif + +static Bool pid_of_save_regs_continued = False; +// True if we have continued pid_of_save_regs after PTRACE_ATTACH + +static Bool dying = False; +// Set to True when loss of connection indicating that the Valgrind +// process is dying. + +/* To be called when connection with valgrind is lost. In case we +have lost the connection, it means that Valgrind has closed the +connection and is busy exiting. We can't and don't have to stop it in +this case. */ +static +void valgrind_dying(void) +{ + pid_of_save_regs_continued = False; + dying = True; +} + + +#ifdef PTRACEINVOKER +/* ptrace_(read|write)_memory are modified extracts of linux-low.c + from gdb 6.6. Copyrighted FSF */ +/* Copy LEN bytes from inferior's memory starting at MEMADDR + to debugger memory starting at MYADDR. */ + +static +int ptrace_read_memory (pid_t inferior_pid, CORE_ADDR memaddr, + unsigned char *myaddr, int len) +{ + register int i; + /* Round starting address down to longword boundary. */ + register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE); + /* Round ending address up; get number of longwords that makes. */ + register int count + = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1) + / sizeof (PTRACE_XFER_TYPE); + /* Allocate buffer of that many longwords. */ + register PTRACE_XFER_TYPE *buffer + = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE)); + + /* Read all the longwords */ + for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE)) { + errno = 0; + buffer[i] = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, 0); + if (errno) + return errno; + } + + /* Copy appropriate bytes out of the buffer. */ + memcpy (myaddr, + (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), len); + + return 0; +} + +/* Copy LEN bytes of data from debugger memory at MYADDR + to inferior's memory at MEMADDR. + On failure (cannot write the inferior) + returns the value of errno. */ + +static +int ptrace_write_memory (pid_t inferior_pid, CORE_ADDR memaddr, + const unsigned char *myaddr, int len) +{ + register int i; + /* Round starting address down to longword boundary. */ + register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE); + /* Round ending address up; get number of longwords that makes. */ + register int count + = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1) + / sizeof (PTRACE_XFER_TYPE); + /* Allocate buffer of that many longwords. */ + register PTRACE_XFER_TYPE *buffer + = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE)); + + if (debuglevel >= 1) { + DEBUG (1, "Writing "); + for (i = 0; i < len; i++) + PDEBUG (1, "%02x", (unsigned)myaddr[i]); + PDEBUG(1, " to %p\n", (void *) memaddr); + } + + /* Fill start and end extra bytes of buffer with existing memory data. */ + + buffer[0] = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, 0); + + if (count > 1) { + buffer[count - 1] + = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) (addr + (count - 1) + * sizeof (PTRACE_XFER_TYPE)), + 0); + } + + /* Copy data to be written over corresponding part of buffer */ + + memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), + myaddr, len); + + /* Write the entire buffer. */ + + for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE)) { + errno = 0; + ptrace (PTRACE_POKETEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, buffer[i]); + if (errno) + return errno; + } + + return 0; +} + +/* subset of VG_(threads) needed for vgdb ptrace. + This is initialized when process is attached. */ +typedef struct { + ThreadStatus status; + Int lwpid; +} +VgdbThreadState; +static VgdbThreadState vgdb_threads[VG_N_THREADS]; + +static const +HChar* name_of_ThreadStatus ( ThreadStatus status ) +{ + switch (status) { + case VgTs_Empty: return "VgTs_Empty"; + case VgTs_Init: return "VgTs_Init"; + case VgTs_Runnable: return "VgTs_Runnable"; + case VgTs_WaitSys: return "VgTs_WaitSys"; + case VgTs_Yielding: return "VgTs_Yielding"; + case VgTs_Zombie: return "VgTs_Zombie"; + default: return "VgTs_???"; + } +} + +static +char *status_image (int status) +{ + static char result[256]; + int sz = 0; +#define APPEND(...) sz += snprintf (result+sz, 256 - sz - 1, __VA_ARGS__) + + result[0] = 0; + + if (WIFEXITED(status)) + APPEND ("WIFEXITED %d ", WEXITSTATUS(status)); + + if (WIFSIGNALED(status)) { + APPEND ("WIFSIGNALED %d ", WTERMSIG(status)); + if (WCOREDUMP(status)) APPEND ("WCOREDUMP "); + } + + if (WIFSTOPPED(status)) + APPEND ("WIFSTOPPED %d ", WSTOPSIG(status)); + + if (WIFCONTINUED(status)) + APPEND ("WIFCONTINUED "); + + return result; +#undef APPEND +} + +/* Wait till the process pid is reported as stopped with signal_expected. + If other signal(s) than signal_expected are received, waitstopped + will pass them to pid, waiting for signal_expected to stop pid. + Returns True when process is in stopped state with signal_expected. + Returns False if a problem was encountered while waiting for pid + to be stopped. + + If pid is reported as being dead/exited, waitstopped will return False. +*/ +static +Bool waitstopped (int pid, int signal_expected, char *msg) +{ + pid_t p; + int status = 0; + int signal_received; + int res; + + while (1) { + DEBUG(1, "waitstopped %s before waitpid signal_expected %d\n", + msg, signal_expected); + p = waitpid(pid, &status, __WALL); + DEBUG(1, "after waitpid pid %d p %d status 0x%x %s\n", pid, p, + status, status_image (status)); + if (p != pid) { + ERROR(errno, "%s waitpid pid %d in waitstopped %d status 0x%x %s\n", + msg, pid, p, status, status_image (status)); + return False; + } + + if (WIFEXITED(status)) { + shutting_down = True; + return False; + } + + assert (WIFSTOPPED(status)); + signal_received = WSTOPSIG(status); + if (signal_received == signal_expected) + break; + + /* pid received a signal which is not the signal we are waiting for. + We continue pid, transmitting this signal. */ + DEBUG(1, "waitstopped PTRACE_CONT with signal %d\n", signal_received); + res = ptrace (PTRACE_CONT, pid, NULL, signal_received); + if (res != 0) { + ERROR(errno, "waitstopped PTRACE_CONT\n"); + return False; + } + } + + return True; +} + +/* Stops the given pid, wait for the process to be stopped. + Returns True if succesful, False otherwise. + msg is used in tracing and error reporting. */ +static +Bool stop (int pid, char *msg) +{ + long res; + + DEBUG(1, "%s SIGSTOP pid %d\n", msg, pid); + res = kill (pid, SIGSTOP); + if (res != 0) { + ERROR(errno, "%s SIGSTOP pid %d %ld\n", msg, pid, res); + return False; + } + + return waitstopped (pid, SIGSTOP, msg); + +} + +/* Attaches to given pid, wait for the process to be stopped. + Returns True if succesful, False otherwise. + msg is used in tracing and error reporting. */ +static +Bool attach (int pid, char *msg) +{ + long res; + + DEBUG(1, "%s PTRACE_ATTACH pid %d\n", msg, pid); + res = ptrace (PTRACE_ATTACH, pid, NULL, NULL); + if (res != 0) { + ERROR(errno, "%s PTRACE_ATTACH pid %d %ld\n", msg, pid, res); + return False; + } + + return waitstopped(pid, SIGSTOP, msg); +} + +/* once we are attached to the pid, get the list of threads and stop + them all. + Returns True if all threads properly suspended, False otherwise. */ +static +Bool acquire_and_suspend_threads(int pid) +{ + int i; + int rw; + Bool pid_found = False; + Addr vgt; + int sz_tst; + int off_status; + int off_lwpid; + int nr_live_threads = 0; + + if (shared32 != NULL) { + vgt = shared32->threads; + sz_tst = shared32->sizeof_ThreadState; + off_status = shared32->offset_status; + off_lwpid = shared32->offset_lwpid; + } + else if (shared64 != NULL) { + vgt = shared64->threads; + sz_tst = shared64->sizeof_ThreadState; + off_status = shared64->offset_status; + off_lwpid = shared64->offset_lwpid; + } else { + assert (0); + } + + /* note: the entry 0 is unused */ + for (i = 1; i < VG_N_THREADS; i++) { + vgt += sz_tst; + rw = ptrace_read_memory(pid, vgt+off_status, + (unsigned char *)&(vgdb_threads[i].status), + sizeof(ThreadStatus)); + if (rw != 0) { + ERROR(rw, "status ptrace_read_memory\n"); + return False; + } + + rw = ptrace_read_memory(pid, vgt+off_lwpid, + (unsigned char *)&(vgdb_threads[i].lwpid), + sizeof(Int)); + if (rw != 0) { + ERROR(rw, "lwpid ptrace_read_memory\n"); + return False; + } + + if (vgdb_threads[i].status != VgTs_Empty) { + DEBUG(1, "found tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + nr_live_threads++; + if (vgdb_threads[i].lwpid <= 1) { + if (vgdb_threads[i].lwpid == 0 + && vgdb_threads[i].status == VgTs_Init) { + DEBUG(1, "not set lwpid tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + } else { + ERROR(1, "unexpected lwpid tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + } + /* in case we have a VtTs_Init thread with lwpid not yet set, + we try again later. */ + return False; + } + if (vgdb_threads[i].lwpid == pid) { + assert (!pid_found); + assert (i == 1); + pid_found = True; + } else { + if (!attach(vgdb_threads[i].lwpid, "attach_thread")) { + ERROR(0, "ERROR attach pid %d tid %d\n", + vgdb_threads[i].lwpid, i); + return False; + } + } + } + } + /* If we found no thread, it means the process is stopping, and + we better do not force anything to happen during that. */ + if (nr_live_threads > 0) + return True; + else + return False; +} + +static +void detach_from_all_threads(int pid) +{ + int i; + long res; + Bool pid_found = False; + + /* detach from all the threads */ + for (i = 1; i < VG_N_THREADS; i++) { + if (vgdb_threads[i].status != VgTs_Empty) { + if (vgdb_threads[i].status == VgTs_Init + && vgdb_threads[i].lwpid == 0) { + DEBUG(1, "skipping PTRACE_DETACH pid %d tid %d status %s\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status)); + } else { + if (vgdb_threads[i].lwpid == pid) { + assert (!pid_found); + pid_found = True; + } + DEBUG(1, "PTRACE_DETACH pid %d tid %d status %s\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status)); + res = ptrace (PTRACE_DETACH, vgdb_threads[i].lwpid, NULL, NULL); + if (res != 0) { + ERROR(errno, "PTRACE_DETACH pid %d tid %d status %s res %ld\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status), + res); + } + } + } + } + + if (!pid_found && pid) { + /* No threads are live. Process is busy stopping. + We need to detach from pid explicitely. */ + DEBUG(1, "no thread live => PTRACE_DETACH pid %d\n", pid); + res = ptrace (PTRACE_DETACH, pid, NULL, NULL); + if (res != 0) + ERROR(errno, "PTRACE_DETACH pid %d res %ld\n", pid, res); + } +} + +// if > 0, pid for which registers have to be restored. +static int pid_of_save_regs = 0; +static struct user user_save; + +// The below indicates if ptrace_getregs (and ptrace_setregs) can be used. +// Note that some linux versions are defining PTRACE_GETREGS but using +// it gives back EIO. +// has_working_ptrace_getregs can take the following values: +// -1 : PTRACE_GETREGS is defined +// runtime check not yet done. +// 0 : PTRACE_GETREGS runtime check has failed. +// 1 : PTRACE_GETREGS defined and runtime check ok. +#ifdef PTRACE_GETREGS +static int has_working_ptrace_getregs = -1; +#endif + +/* Get the registers from pid into regs. + regs_bsz value gives the length of *regs. + Returns True if all ok, otherwise False. */ +static +Bool getregs (int pid, void *regs, long regs_bsz) +{ + DEBUG(1, "getregs regs_bsz %ld\n", regs_bsz); +# ifdef PTRACE_GETREGS + if (has_working_ptrace_getregs) { + // Platforms having GETREGS + long res; + DEBUG(1, "getregs PTRACE_GETREGS\n"); + res = ptrace (PTRACE_GETREGS, pid, NULL, regs); + if (res == 0) { + if (has_working_ptrace_getregs == -1) { + // First call to PTRACE_GETREGS succesful => + has_working_ptrace_getregs = 1; + DEBUG(1, "detected a working PTRACE_GETREGS\n"); + } + assert (has_working_ptrace_getregs == 1); + return True; + } + else if (has_working_ptrace_getregs == 1) { + // We had a working call, but now it fails. + // This is unexpected. + ERROR(errno, "PTRACE_GETREGS %ld\n", res); + return False; + } else { + // Check this is the first call: + assert (has_working_ptrace_getregs == -1); + if (errno == EIO) { + DEBUG(1, "detected a broken PTRACE_GETREGS with EIO\n"); + has_working_ptrace_getregs = 0; + // Fall over to the PTRACE_PEEKUSER case. + } else { + ERROR(errno, "broken PTRACE_GETREGS unexpected errno %ld\n", res); + return False; + } + } + } +# endif + + // We assume PTRACE_PEEKUSER is defined everywhere. + { +# ifdef PT_ENDREGS + long peek_bsz = PT_ENDREGS; + assert (peek_bsz <= regs_bsz); +# else + long peek_bsz = regs_bsz-1; +# endif + char *pregs = (char *) regs; + long offset; + errno = 0; + DEBUG(1, "getregs PTRACE_PEEKUSER(s) peek_bsz %ld\n", peek_bsz); + for (offset = 0; offset < peek_bsz; offset = offset + sizeof(long)) { + *(long *)(pregs+offset) = ptrace(PTRACE_PEEKUSER, pid, offset, NULL); + if (errno != 0) { + ERROR(errno, "PTRACE_PEEKUSER offset %ld\n", offset); + return False; + } + } + return True; + } + + // If neither PTRACE_GETREGS not PTRACE_PEEKUSER have returned, + // then we are in serious trouble. + assert (0); +} + +/* Set the registers of pid to regs. + regs_bsz value gives the length of *regs. + Returns True if all ok, otherwise False. */ +static +Bool setregs (int pid, void *regs, long regs_bsz) +{ + DEBUG(1, "setregs regs_bsz %ld\n", regs_bsz); +// Note : the below is checking for GETREGS, not SETREGS +// as if one is defined and working, the other one should also work. +# ifdef PTRACE_GETREGS + if (has_working_ptrace_getregs) { + // Platforms having SETREGS + long res; + // setregs can never be called before getregs has done a runtime check. + assert (has_working_ptrace_getregs == 1); + DEBUG(1, "setregs PTRACE_SETREGS\n"); + res = ptrace (PTRACE_SETREGS, pid, NULL, regs); + if (res != 0) { + ERROR(errno, "PTRACE_SETREGS %ld\n", res); + return False; + } + return True; + } +# endif + + { + char *pregs = (char *) regs; + long offset; + long res; +# ifdef PT_ENDREGS + long peek_bsz = PT_ENDREGS; + assert (peek_bsz <= regs_bsz); +# else + long peek_bsz = regs_bsz-1; +# endif + errno = 0; + DEBUG(1, "setregs PTRACE_POKEUSER(s) %ld\n", peek_bsz); + for (offset = 0; offset < peek_bsz; offset = offset + sizeof(long)) { + res = ptrace(PTRACE_POKEUSER, pid, offset, *(long*)(pregs+offset)); + if (errno != 0) { + ERROR(errno, "PTRACE_POKEUSER offset %ld res %ld\n", offset, res); + return False; + } + } + return True; + } + + // If neither PTRACE_SETREGS not PTRACE_POKEUSER have returned, + // then we are in serious trouble. + assert (0); +} + +/* Restore the registers to the saved value, then detaches from all threads */ +static +void restore_and_detach(int pid) +{ + if (pid_of_save_regs) { + /* In case the 'main pid' has been continued, we need to stop it + before resetting the registers. */ + if (pid_of_save_regs_continued) { + pid_of_save_regs_continued = False; + if (!stop(pid_of_save_regs, "sigstop before reset regs")) + DEBUG(0, "Could not sigstop before reset"); + } + + DEBUG(1, "setregs restore registers pid %d\n", pid_of_save_regs); + if (!setregs(pid_of_save_regs, &user_save.regs, sizeof(user_save.regs))) { + ERROR(errno, "setregs restore registers pid %d after cont\n", + pid_of_save_regs); + } + pid_of_save_regs = 0; + } else { + DEBUG(1, "PTRACE_SETREGS restore registers: no pid\n"); + } + detach_from_all_threads(pid); +} + +/* Ensures that the gdbserver code is invoked by pid. + If an error occurs, resets to the valgrind process + to the state it has before being ptrace-d. + Returns True if invoke successful, False otherwise. +*/ +static +Bool invoke_gdbserver (int pid) +{ + long res; + Bool stopped; + struct user user_mod; + Addr sp; + /* A specific int value is passed to invoke_gdbserver, to check + everything goes according to the plan. */ + const int check = 0x8BADF00D; // ate bad food. + + const Addr bad_return = 0; + // A bad return address will be pushed on the stack. + // The function invoke_gdbserver cannot return. If ever it returns, a NULL + // address pushed on the stack should ensure this is detected. + + /* Not yet attached. If problem, vgdb can abort, + no cleanup needed. + + On Ubuntu>= 10.10, a /proc setting can disable ptrace. + So, Valgrind has to SET_PTRACER this vgdb. Once this + is done, this vgdb can ptrace the valgrind process. */ + + DEBUG(1, "attach to 'main' pid %d\n", pid); + if (!attach(pid, "attach main pid")) { + ERROR(0, "error attach main pid %d\n", pid); + return False; + } + + /* Now, we are attached. If problem, detach and return. */ + + if (!acquire_and_suspend_threads(pid)) { + detach_from_all_threads(pid); + /* if the pid does not exist anymore, we better stop */ + if (kill(pid, 0) != 0) + XERROR (errno, "invoke_gdbserver: check for pid %d existence failed\n", + pid); + return False; + } + + if (!getregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { + detach_from_all_threads(pid); + return False; + } + user_save = user_mod; + +#if defined(VGA_x86) + sp = user_mod.regs.esp; +#elif defined(VGA_amd64) + sp = user_mod.regs.rsp; + if (shared32 != NULL) { + /* 64bit vgdb speaking with a 32bit executable. + To have system call restart properly, we need to sign extend rax. + For more info: + web search '[patch] Fix syscall restarts for amd64->i386 biarch' + e.g. http://sourceware.org/ml/gdb-patches/2009-11/msg00592.html */ + *(long *)&user_save.regs.rax = *(int*)&user_save.regs.rax; + DEBUG(1, "Sign extending %8.8lx to %8.8lx\n", + user_mod.regs.rax, user_save.regs.rax); + } +#elif defined(VGA_arm) + sp = user_mod.regs.uregs[13]; +#elif defined(VGA_ppc32) + sp = user_mod.regs.gpr[1]; +#elif defined(VGA_ppc64) + sp = user_mod.regs.gpr[1]; +#elif defined(VGA_s390x) + sp = user_mod.regs.gprs[15]; +#else + I_die_here : (sp) architecture missing in vgdb.c +#endif + + + // the magic below is derived from spying what gdb sends to + // the (classical) gdbserver when invoking a C function. + if (shared32 != NULL) { + // vgdb speaking with a 32bit executable. +#if defined(VGA_x86) || defined(VGA_amd64) + const int regsize = 4; + int rw; + /* push check arg on the stack */ + sp = sp - regsize; + DEBUG(1, "push check arg ptrace_write_memory\n"); + assert(regsize == sizeof(check)); + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &check, + regsize); + if (rw != 0) { + ERROR(rw, "push check arg ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } + + sp = sp - regsize; + DEBUG(1, "push bad_return return address ptrace_write_memory\n"); + // Note that for a 64 bits vgdb, only 4 bytes of NULL bad_return + // are written. + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &bad_return, + regsize); + if (rw != 0) { + ERROR(rw, "push bad_return return address ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } +#if defined(VGA_x86) + /* set ebp, esp, eip and orig_eax to invoke gdbserver */ + // compiled in 32bits, speaking with a 32bits exe + user_mod.regs.ebp = sp; // bp set to sp + user_mod.regs.esp = sp; + user_mod.regs.eip = shared32->invoke_gdbserver; + user_mod.regs.orig_eax = -1L; +#elif defined(VGA_amd64) + /* set ebp, esp, eip and orig_eax to invoke gdbserver */ + // compiled in 64bits, speaking with a 32bits exe + user_mod.regs.rbp = sp; // bp set to sp + user_mod.regs.rsp = sp; + user_mod.regs.rip = shared32->invoke_gdbserver; + user_mod.regs.orig_rax = -1L; +#else + I_die_here : not x86 or amd64 in x86/amd64 section/ +#endif + +#elif defined(VGA_ppc32) || defined(VGA_ppc64) + user_mod.regs.nip = shared32->invoke_gdbserver; + user_mod.regs.trap = -1L; + /* put check arg in register 3 */ + user_mod.regs.gpr[3] = check; + /* put NULL return address in Link Register */ + user_mod.regs.link = bad_return; + +#elif defined(VGA_arm) + /* put check arg in register 0 */ + user_mod.regs.uregs[0] = check; + /* put NULL return address in Link Register */ + user_mod.regs.uregs[14] = bad_return; + user_mod.regs.uregs[15] = shared32->invoke_gdbserver; + +#elif defined(VGA_s390x) + XERROR(0, "(fn32) s390x has no 32bits implementation"); +#else + I_die_here : architecture missing in vgdb.c +#endif + } + + else if (shared64 != NULL) { +#if defined(VGA_x86) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_amd64) + // vgdb speaking with a 64 bit executable. + const int regsize = 8; + int rw; + + /* give check arg in rdi */ + user_mod.regs.rdi = check; + + /* push return address on stack : return to breakaddr */ + sp = sp - regsize; + DEBUG(1, "push bad_return return address ptrace_write_memory\n"); + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &bad_return, + sizeof(bad_return)); + if (rw != 0) { + ERROR(rw, "push bad_return return address ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } + + /* set rbp, rsp, rip and orig_rax to invoke gdbserver */ + user_mod.regs.rbp = sp; // bp set to sp + user_mod.regs.rsp = sp; + user_mod.regs.rip = shared64->invoke_gdbserver; + user_mod.regs.orig_rax = -1L; + +#elif defined(VGA_arm) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_ppc32) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_ppc64) + Addr64 func_addr; + Addr64 toc_addr; + int rw; + rw = ptrace_read_memory(pid, shared64->invoke_gdbserver, + (unsigned char *)&func_addr, + sizeof(Addr64)); + if (rw != 0) { + ERROR(rw, "ppc64 read func_addr\n"); + detach_from_all_threads(pid); + return False; + } + rw = ptrace_read_memory(pid, shared64->invoke_gdbserver+8, + (unsigned char *)&toc_addr, + sizeof(Addr64)); + if (rw != 0) { + ERROR(rw, "ppc64 read toc_addr\n"); + detach_from_all_threads(pid); + return False; + } + // We are not pushing anything on the stack, so it is not + // very clear why the sp has to be decreased, but it seems + // needed. The ppc64 ABI might give some lights on this ? + user_mod.regs.gpr[1] = sp - 220; + user_mod.regs.gpr[2] = toc_addr; + user_mod.regs.nip = func_addr; + user_mod.regs.trap = -1L; + /* put check arg in register 3 */ + user_mod.regs.gpr[3] = check; + /* put bad_return return address in Link Register */ + user_mod.regs.link = bad_return; +#elif defined(VGA_s390x) + /* put check arg in register r2 */ + user_mod.regs.gprs[2] = check; + /* bad_return Return address is in r14 */ + user_mod.regs.gprs[14] = bad_return; + /* minimum stack frame */ + sp = sp - 160; + user_mod.regs.gprs[15] = sp; + /* set program counter */ + user_mod.regs.psw.addr = shared64->invoke_gdbserver; +#else + I_die_here: architecture missing in vgdb.c +#endif + } + else { + assert(0); + } + + if (!setregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { + detach_from_all_threads(pid); + return False; + } + /* Now that we have modified the registers, we set + pid_of_save_regs to indicate that restore_and_detach + must restore the registers in case of cleanup. */ + pid_of_save_regs = pid; + pid_of_save_regs_continued = False; + + + /* We PTRACE_CONT-inue pid. + Either gdbserver will be invoked directly (if all + threads are interruptible) or gdbserver will be + called soon by the scheduler. In the first case, + pid will stop on the break inserted above when + gdbserver returns. In the 2nd case, the break will + be encountered directly. */ + DEBUG(1, "PTRACE_CONT to invoke\n"); + res = ptrace (PTRACE_CONT, pid, NULL, NULL); + if (res != 0) { + ERROR(errno, "PTRACE_CONT\n"); + restore_and_detach(pid); + return False; + } + pid_of_save_regs_continued = True; + + stopped = waitstopped (pid, SIGTRAP, + "waitpid status after PTRACE_CONT to invoke"); + if (stopped) { + /* Here pid has properly stopped on the break. */ + pid_of_save_regs_continued = False; + restore_and_detach(pid); + return True; + } else { + /* Whatever kind of problem happened. We shutdown */ + shutting_down = True; + return False; + } +} +#endif + +static +void cleanup_restore_and_detach(void *v_pid) +{ + DEBUG(1, "cleanup_restore_and_detach dying: %d\n", dying); +#ifdef PTRACEINVOKER + if (!dying) + restore_and_detach(*(int*)v_pid); +#endif +} + +/* This function loops till shutting_down becomes true. In this loop, + it verifies if valgrind process is reading the characters written + by vgdb. The verification is done every max_invoke_ms ms. If + valgrind is not reading characters, it will use invoke_gdbserver + (if PTRACE_INVOKER is defined) to ensure that the gdbserver code is + called soon by valgrind. */ +static int max_invoke_ms = 100; +static +void *invoke_gdbserver_in_valgrind(void *v_pid) +{ + int pid = *(int *)v_pid; + int written_by_vgdb_before_sleep; + int seen_by_valgrind_before_sleep; + + int invoked_written = -1; + + pthread_cleanup_push(cleanup_restore_and_detach, v_pid); + + while (!shutting_down) { + written_by_vgdb_before_sleep = VS_written_by_vgdb; + seen_by_valgrind_before_sleep = VS_seen_by_valgrind; + DEBUG(3, + "written_by_vgdb_before_sleep %d " + "seen_by_valgrind_before_sleep %d\n", + written_by_vgdb_before_sleep, + seen_by_valgrind_before_sleep); + if (usleep(1000 * max_invoke_ms) != 0) { + if (errno == EINTR) + continue; + XERROR (errno, "error usleep\n"); + } + /* if nothing happened during our sleep, let's try to wake up valgrind */ + if (written_by_vgdb_before_sleep == VS_written_by_vgdb + && seen_by_valgrind_before_sleep == VS_seen_by_valgrind + && VS_written_by_vgdb > VS_seen_by_valgrind) { + DEBUG(2, + "after sleep " + "written_by_vgdb %d " + "seen_by_valgrind %d " + "invoked_written %d\n", + VS_written_by_vgdb, + VS_seen_by_valgrind, + invoked_written); + /* if the pid does not exist anymore, we better stop */ + if (kill(pid, 0) != 0) + XERROR (errno, + "invoke_gdbserver_in_valgrind: " + "check for pid %d existence failed\n", pid); + + #if defined(PTRACEINVOKER) + /* only need to wake up if the nr written has changed since + last invoke. */ + if (invoked_written != written_by_vgdb_before_sleep) { + if (invoke_gdbserver(pid)) { + /* If invoke succesful, no need to invoke again + for the same value of written_by_vgdb_before_sleep. */ + invoked_written = written_by_vgdb_before_sleep; + } + } + #else + DEBUG(2, "invoke_gdbserver via ptrace not (yet) implemented\n"); + #endif + } + } + pthread_cleanup_pop(0); + return NULL; +} + +static +int open_fifo (char* name, int flags, char* desc) +{ + int fd; + DEBUG(1, "opening %s %s\n", name, desc); + fd = open(name, flags); + if (fd == -1) + XERROR (errno, "error opening %s %s\n", name, desc); + + DEBUG(1, "opened %s %s fd %d\n", name, desc, fd); + return fd; +} + +/* acquire a lock on the first byte of the given fd. If not successful, + exits with error. + This allows to avoid having two vgdb speaking with the same Valgrind + gdbserver as this causes serious headaches to the protocol. */ +static +void acquire_lock (int fd, int valgrind_pid) +{ + if (lockf(fd, F_TLOCK, 1) < 0) { + if (errno == EAGAIN || errno == EACCES) { + XERROR(errno, + "Cannot acquire lock.\n" + "Probably vgdb pid %d already speaks with Valgrind pid %d\n", + VS_vgdb_pid, + valgrind_pid); + } else { + XERROR(errno, "cannot acquire lock.\n"); + } + } + + /* Here, we have the lock. It will be released when fd will be closed. */ + /* We indicate our pid to Valgrind gdbserver */ + if (shared32 != NULL) + shared32->vgdb_pid = getpid(); + else if (shared64 != NULL) + shared64->vgdb_pid = getpid(); + else + assert(0); +} + +#define PBUFSIZ 16384 /* keep in sync with server.h */ + +/* read some characters from fd. + Returns the nr of characters read, -1 if error. + desc is a string used in tracing */ +static +int read_buf (int fd, char* buf, char* desc) +{ + int nrread; + DEBUG(2, "reading %s\n", desc); + nrread = read(fd, buf, PBUFSIZ); + if (nrread == -1) { + ERROR (errno, "error reading %s\n", desc); + return -1; + } + buf[nrread] = '\0'; + DEBUG(2, "read %s %s\n", desc, buf); + return nrread; +} + +/* write size bytes from buf to fd. + desc is a description of the action for which the write is done. + If notify, then add size to the shared cntr indicating to the + valgrind process that there is new data. + Returns True if write is ok, False if there was a problem. */ +static +Bool write_buf(int fd, char* buf, int size, char* desc, Bool notify) +{ + int nrwritten; + int nrw; + DEBUG(2, "writing %s len %d %s notify: %d\n", desc, size, buf, notify); + nrwritten = 0; + while (nrwritten < size) { + nrw = write (fd, buf+nrwritten, size - nrwritten); + if (nrw == -1) { + ERROR(errno, "error write %s\n", desc); + return False; + } + nrwritten = nrwritten + nrw; + if (notify) + add_written(nrw); + } + return True; +} + +typedef enum { + FROM_GDB, + TO_GDB, + FROM_PID, + TO_PID } ConnectionKind; +static const int NumConnectionKind = TO_PID+1; +static +char *ppConnectionKind (ConnectionKind con) +{ + switch (con) { + case FROM_GDB: return "FROM_GDB"; + case TO_GDB: return "TO_GDB"; + case FROM_PID: return "FROM_PID"; + case TO_PID: return "TO_PID"; + default: return "invalid connection kind"; + } +} + +static char *shared_mem; + +static const int from_gdb = 0; +static char *from_gdb_to_pid; /* fifo name to write gdb command to pid */ +/* Returns True in case read/write operations were done properly. + Returns False in case of error. + to_pid is the file descriptor to write to the process pid. */ +static +Bool read_from_gdb_write_to_pid(int to_pid) +{ + char buf[PBUFSIZ]; + int nrread; + + nrread = read_buf(from_gdb, buf, "from gdb on stdin"); + if (nrread <= 0) { + if (nrread == 0) + DEBUG(1, "read 0 bytes from gdb => assume exit\n"); + else + DEBUG(1, "error reading bytes from gdb\n"); + close (from_gdb); + shutting_down = True; + return False; + } + return write_buf(to_pid, buf, nrread, "to_pid", /* notify */ True); +} + +static const int to_gdb = 1; +static char *to_gdb_from_pid; /* fifo name to read pid replies */ +/* Returns True in case read/write operations were done properly. + Returns False in case of error. + from_pid is the file descriptor to read data from the process pid. */ +static +Bool read_from_pid_write_to_gdb(int from_pid) +{ + char buf[PBUFSIZ]; + int nrread; + + nrread = read_buf(from_pid, buf, "from pid"); + if (nrread <= 0) { + if (nrread == 0) + DEBUG(1, "read 0 bytes from pid => assume exit\n"); + else + DEBUG(1, "error reading bytes from pid\n"); + close (from_pid); + shutting_down = True; + return False; + } + return write_buf(to_gdb, buf, nrread, "to_gdb", /* notify */ False); +} + +/* prepares the FIFOs filenames, map the shared memory. */ +static +void prepare_fifos_and_shared_mem(int pid) +{ + from_gdb_to_pid = vmalloc (strlen(vgdb_prefix) + 30); + to_gdb_from_pid = vmalloc (strlen(vgdb_prefix) + 30); + shared_mem = vmalloc (strlen(vgdb_prefix) + 30); + /* below 3 lines must match the equivalent in remote-utils.c */ + sprintf(from_gdb_to_pid, "%s-from-vgdb-to-%d", vgdb_prefix, pid); + sprintf(to_gdb_from_pid, "%s-to-vgdb-from-%d", vgdb_prefix, pid); + sprintf(shared_mem, "%s-shared-mem-vgdb-%d", vgdb_prefix, pid); + DEBUG (1, "vgdb: using %s %s %s\n", + from_gdb_to_pid, to_gdb_from_pid, shared_mem); + + map_vgdbshared(shared_mem); +} + +/* Convert hex digit A to a number. */ + +static int +fromhex (int a) +{ + if (a >= '0' && a <= '9') + return a - '0'; + else if (a >= 'a' && a <= 'f') + return a - 'a' + 10; + else + XERROR(0, "Reply contains invalid hex digit %c\n", a); + return 0; +} + +/* Returns next char from fd. -1 if error, -2 if EOF. + NB: must always call it with the same fd */ +static int +readchar (int fd) +{ + static unsigned char buf[PBUFSIZ]; + static int bufcnt = 0; + static unsigned char *bufp; + + if (bufcnt-- > 0) + return *bufp++; + + bufcnt = read (fd, buf, sizeof (buf)); + + if (bufcnt <= 0) { + if (bufcnt == 0) { + fprintf (stderr, "readchar: Got EOF\n"); + return -2; + } else { + ERROR (errno, "readchar\n"); + return -1; + } + } + + bufp = buf; + bufcnt--; + return *bufp++; +} + +/* Read a packet from fromfd, with error checking, + and store it in BUF. + Returns length of packet, or -1 if error or -2 if EOF. + Writes ack on ackfd */ + +static int +getpkt (char *buf, int fromfd, int ackfd) +{ + char *bp; + unsigned char csum, c1, c2; + int c; + + while (1) { + csum = 0; + + while (1) { + c = readchar (fromfd); + if (c == '$') + break; + DEBUG(2, "[getpkt: discarding char '%c']\n", c); + if (c < 0) + return c; + } + + bp = buf; + while (1) { + c = readchar (fromfd); + if (c < 0) + return c; + if (c == '#') + break; + if (c == '*') { + int repeat; + int r; + int prev; + prev = *(bp-1); + csum += c; + repeat = readchar (fromfd); + csum += repeat; + for (r = 0; r < repeat - 29; r ++) + *bp++ = prev; + } else { + *bp++ = c; + csum += c; + } + } + *bp = 0; + + c1 = fromhex (readchar (fromfd)); + c2 = fromhex (readchar (fromfd)); + + if (csum == (c1 << 4) + c2) + break; + + fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n", + (c1 << 4) + c2, csum, buf); + if (write (ackfd, "-", 1) != 1) + ERROR(0, "error when writing - (nack)\n"); + else + add_written(1); + } + + DEBUG(2, "getpkt (\"%s\"); [sending ack] \n", buf); + if (write (ackfd, "+", 1) != 1) + ERROR(0, "error when writing + (ack)\n"); + else + add_written(1); + return bp - buf; +} + +static int sigint = 0; +static int sigterm = 0; +static int sigpipe = 0; +static int sighup = 0; +static int sigusr1 = 0; +static int sigalrm = 0; +static int sigusr1_fd = -1; +static pthread_t invoke_gdbserver_in_valgrind_thread; + +static +void received_signal (int signum) +{ + if (signum == SIGINT) + sigint++; + else if (signum == SIGUSR1) { + sigusr1++; + if (sigusr1_fd >= 0) { + char control_c = '\003'; + write_buf(sigusr1_fd, &control_c, 1, + "write \\003 on SIGUSR1", /* notify */ True); + } + } + else if (signum == SIGTERM) { + shutting_down = True; + sigterm++; + } else if (signum == SIGHUP) { + shutting_down = True; + sighup++; + } else if (signum == SIGPIPE) { + sigpipe++; + } else if (signum == SIGALRM) { + sigalrm++; + DEBUG(1, "pthread_cancel invoke_gdbserver_in_valgrind_thread\n"); + /* Note: we cannot directly invoke restore_and_detach : this must + be done by the thread that has attached. + We have in this thread pushed a cleanup handler that will + cleanup what is needed. */ + pthread_cancel(invoke_gdbserver_in_valgrind_thread); + } else { + ERROR(0, "unexpected signal %d\n", signum); + } +} + +/* install the signal handlers allowing e.g. vgdb to cleanup in + case of termination. */ +static +void install_handlers(void) +{ + struct sigaction action, oldaction; + + action.sa_handler = received_signal; + sigemptyset (&action.sa_mask); + action.sa_flags = 0; + + /* SIGINT: when user types C-c in gdb, this sends + a SIGINT to vgdb + causes a character to be sent to remote gdbserver. + The later is enough to wakeup the valgrind process. */ + if (sigaction (SIGINT, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGINT\n"); + /* We might do something more intelligent than just + reporting this SIGINT E.g. behave similarly to the gdb: two + control-C without feedback from the debugged process would + mean to stop debugging it. */ + + /* SIGUSR1: this is used to facilitate automatic testing. When + vgdb receives this signal, it will simulate the user typing C-c. */ + if (sigaction (SIGUSR1, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGUSR1\n"); + + + /* SIGTERM: can receive this signal (e.g. from gdb) to terminate vgdb + when detaching or similar. A clean shutdown will be done as both + the read and write side will detect an end of file. */ + if (sigaction (SIGTERM, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGTERM\n"); + + /* SIGPIPE: can receive this signal when gdb detaches or kill the + process debugged: gdb will close its pipes to vgdb. vgdb + must resist to this signal to allow a clean shutdown. */ + if (sigaction (SIGPIPE, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGPIPE\n"); + + /* SIGALRM: in case invoke thread is blocked, alarm is used + to cleanup. */ + if (sigaction (SIGALRM, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGALRM\n"); +} + +/* close the FIFOs provided connections, terminate the invoker thread. */ +static +void close_connection(int to_pid, int from_pid) +{ + DEBUG(1, "nr received signals: sigint %d sigterm %d sighup %d sigpipe %d\n", + sigint, sigterm, sighup, sigpipe); + /* Note that we do not forward sigterm to the valgrind process: + a sigterm signal is (probably) received from gdb if the user wants to + kill the debugged process. The kill instruction has been given to + the valgrind process, which should execute a clean exit. */ + + /* We first close the connection to pid. The pid will then + terminates its gdbserver work. We keep the from pid + fifo opened till the invoker thread is finished. + This allows the gdbserver to finish sending its last reply. */ + if (close(to_pid) != 0) + ERROR(errno, "close to_pid\n"); + + /* if there is a task that was busy trying to wake up valgrind + process, we wait for it to be terminated otherwise threads + in the valgrind process can stay stopped if vgdb main + exits before the invoke thread had time to detach from + all valgrind threads. */ + if (max_invoke_ms > 0) { + int join; + + /* It is surprisingly complex to properly shutdown or exit the + valgrind process in which gdbserver has been invoked through + ptrace. In the normal case (gdb detaches from the process, + or process is continued), the valgrind process will reach the + breakpoint place. Using ptrace, vgdb will ensure the + previous activity of the process is resumed (e.g. restart a + blocking system call). The special case is when gdb asks the + valgrind process to exit (using either the "kill" command or + "monitor exit"). In such a case, the valgrind process will + call exit. But a ptraced process will be blocked in exit, + waiting for the ptracing process to detach or die. vgdb + cannot detach unconditionally as otherwise, in the normal + case, the valgrind process would die abnormally with SIGTRAP + (as vgdb would not be there to catch it). vgdb can also not + die unconditionally otherwise again, similar problem. So, we + assume that most of the time, we arrive here in the normal + case, and so, the breakpoint has been encountered by the + valgrind process, so the invoker thread will exit and the + join will succeed. For the "kill" case, we cause an alarm + signal to be sent after a few seconds. This means that in the + normal case, the gdbserver code in valgrind process must have + returned the control in less than the alarm nr of seconds, + otherwise, valgrind will die abnormally with SIGTRAP. */ + (void) alarm (3); + + DEBUG(1, "joining with invoke_gdbserver_in_valgrind_thread\n"); + join = pthread_join(invoke_gdbserver_in_valgrind_thread, NULL); + if (join != 0) + XERROR + (join, + "vgdb error pthread_join invoke_gdbserver_in_valgrind_thread\n"); + } + if (close(from_pid) != 0) + ERROR(errno, "close from_pid\n"); +} + +/* Relay data between gdb and Valgrind gdbserver, till EOF or an + error is encountered. */ +static +void gdb_relay (int pid) +{ + int from_pid = -1; /* fd to read from pid */ + int to_pid = -1; /* fd to write to pid */ + + int shutdown_loop = 0; + fprintf (stderr, "relaying data between gdb and process %d\n", pid); + fflush (stderr); + + if (max_invoke_ms > 0) + pthread_create(&invoke_gdbserver_in_valgrind_thread, NULL, + invoke_gdbserver_in_valgrind, (void *) &pid); + to_pid = open_fifo(from_gdb_to_pid, O_WRONLY, "write to pid"); + acquire_lock (shared_mem_fd, pid); + + from_pid = open_fifo (to_gdb_from_pid, O_RDONLY|O_NONBLOCK, + "read mode from pid"); + + sigusr1_fd = to_pid; /* allow simulating user typing control-c */ + + while (1) { + ConnectionKind ck; + int ret; + struct pollfd pollfds[NumConnectionKind]; + + /* watch data written by gdb, watch POLLERR on both gdb fd */ + pollfds[FROM_GDB].fd = from_gdb; + pollfds[FROM_GDB].events = POLLIN; + pollfds[FROM_GDB].revents = 0; + pollfds[TO_GDB].fd = to_gdb; + pollfds[TO_GDB].events = 0; + pollfds[TO_GDB].revents = 0; + + /* watch data written by pid, watch POLLERR on both pid fd */ + pollfds[FROM_PID].fd = from_pid; + pollfds[FROM_PID].events = POLLIN; + pollfds[FROM_PID].revents = 0; + pollfds[TO_PID].fd = to_pid; + pollfds[TO_PID].events = 0; + pollfds[TO_PID].revents = 0; + + ret = poll(pollfds, + NumConnectionKind, + (shutting_down ? + 1 /* one second */ + : -1 /* infinite */)); + DEBUG(2, "poll ret %d errno %d\n", ret, errno); + + /* check for unexpected error */ + if (ret <= 0 && errno != EINTR) { + ERROR (errno, "unexpected poll ret %d\n", ret); + shutting_down = True; + break; + } + + /* check for data to read */ + for (ck = 0; ck < NumConnectionKind; ck ++) { + if (pollfds[ck].revents & POLLIN) { + switch (ck) { + case FROM_GDB: + if (!read_from_gdb_write_to_pid(to_pid)) + shutting_down = True; + break; + case FROM_PID: + if (!read_from_pid_write_to_gdb(from_pid)) + shutting_down = True; + break; + default: XERROR(0, "unexpected POLLIN on %s\n", + ppConnectionKind(ck)); + } + } + } + + /* check for an fd being in error condition */ + for (ck = 0; ck < NumConnectionKind; ck ++) { + if (pollfds[ck].revents & POLLERR) { + DEBUG(1, "connection %s fd %d POLLERR error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + if (pollfds[ck].revents & POLLHUP) { + DEBUG(1, "connection %s fd %d POLLHUP error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + if (pollfds[ck].revents & POLLNVAL) { + DEBUG(1, "connection %s fd %d POLLNVAL error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + } + + if (shutting_down) { + /* we let some time to the final packets to be transferred */ + shutdown_loop++; + if (shutdown_loop > 3) + break; + } + } + close_connection(to_pid, from_pid); +} + +static int packet_len_for_command(char *cmd) +{ + /* cmd will be send as a packet $qRcmd,xxxx....................xx#cc */ + return 7+ 2*strlen(cmd) +3 + 1; +} + +/* hyper-minimal protocol implementation that + sends the provided commands (using qRcmd packets) + and read and display their replies. */ +static +void standalone_send_commands(int pid, + int last_command, + char *commands[] ) +{ + int from_pid = -1; /* fd to read from pid */ + int to_pid = -1; /* fd to write to pid */ + + int i; + int hi; + unsigned char hex[3]; + unsigned char cksum; + unsigned char *hexcommand; + unsigned char buf[PBUFSIZ]; + int buflen; + int nc; + + + if (max_invoke_ms > 0) + pthread_create(&invoke_gdbserver_in_valgrind_thread, NULL, + invoke_gdbserver_in_valgrind, (void *) &pid); + + to_pid = open_fifo(from_gdb_to_pid, O_WRONLY, "write to pid"); + acquire_lock (shared_mem_fd, pid); + + /* first send a C-c \003 to pid, so that it wakes up the process + After that, we can open the fifo from the pid in read mode + We then start to wait for packets (normally first a resume reply) + At that point, we send our command and expect replies */ + buf[0] = '\003'; + write_buf(to_pid, buf, 1, "write \\003 to wake up", /* notify */ True); + from_pid = open_fifo(to_gdb_from_pid, O_RDONLY, + "read cmd result from pid"); + + for (nc = 0; nc <= last_command; nc++) { + fprintf (stderr, "sending command %s to pid %d\n", commands[nc], pid); + fflush (stderr); + + /* prepare hexcommand $qRcmd,xxxx....................xx#cc */ + hexcommand = vmalloc (packet_len_for_command(commands[nc])); + hexcommand[0] = 0; + strcat (hexcommand, "$qRcmd,"); + for (i = 0; i < strlen(commands[nc]); i++) { + sprintf(hex, "%02x", commands[nc][i]); + strcat (hexcommand, hex); + } + /* checksum (but without the $) */ + cksum = 0; + for (hi = 1; hi < strlen(hexcommand); hi++) + cksum+=hexcommand[hi]; + strcat(hexcommand, "#"); + sprintf(hex, "%02x", cksum); + strcat(hexcommand, hex); + write_buf(to_pid, hexcommand, strlen(hexcommand), + "writing hex command to pid", /* notify */ True); + + /* we exit of the below loop explicitely when the command has + been handled or because a signal handler will set + shutting_down. */ + while (!shutting_down) { + buflen = getpkt(buf, from_pid, to_pid); + if (buflen < 0) { + ERROR (0, "error reading packet\n"); + if (buflen == -2) + valgrind_dying(); + break; + } + if (strlen(buf) == 0) { + DEBUG(0, "empty packet rcvd (packet qRcmd not recognised?)\n"); + break; + } + if (strcmp(buf, "OK") == 0) { + DEBUG(1, "OK packet rcvd\n"); + break; + } + if (buf[0] == 'E') { + DEBUG(0, + "E NN error packet rcvd: %s (unknown monitor command?)\n", + buf); + break; + } + if (buf[0] == 'W') { + DEBUG(0, "W stopped packet rcvd: %s\n", buf); + break; + } + if (buf[0] == 'T') { + DEBUG(1, "T resume reply packet received: %s\n", buf); + continue; + } + + /* must be here an O packet with hex encoded string reply + => decode and print it */ + if (buf[0] != 'O') { + DEBUG(0, "expecting O packet, received: %s\n", buf); + continue; + } + { + char buf_print[buflen/2 + 1]; + for (i = 1; i < buflen; i = i + 2) + buf_print[i/2] = (fromhex(*(buf+i)) << 4) + + fromhex(*(buf+i+1)); + buf_print[buflen/2] = 0; + printf("%s", buf_print); + fflush(stdout); + } + } + free (hexcommand); + } + shutting_down = True; + + close_connection(to_pid, from_pid); +} + +/* report to user the existence of a vgdb-able valgrind process + with given pid */ +static +void report_pid (int pid) +{ + char cmdline_file[100]; + char cmdline[1000]; + int fd; + int i, sz; + + sprintf(cmdline_file, "/proc/%d/cmdline", pid); + fd = open (cmdline_file, O_RDONLY); + if (fd == -1) { + DEBUG(1, "error opening cmdline file %s %s\n", + cmdline_file, strerror(errno)); + sprintf(cmdline, "(could not obtain process command line)"); + } else { + sz = read(fd, cmdline, 1000); + for (i = 0; i < sz; i++) + if (cmdline[i] == 0) + cmdline[i] = ' '; + cmdline[sz] = 0; + close (fd); + } + fprintf(stderr, "use --pid=%d for %s\n", pid, cmdline); + fflush(stderr); +} + +/* Eventually produces additional usage information documenting the + ptrace restrictions. */ +static +void ptrace_restrictions(void) +{ +# ifdef PR_SET_PTRACER + char *ptrace_scope_setting_file = "/proc/sys/kernel/yama/ptrace_scope"; + int fd = -1; + char ptrace_scope = 'X'; + fd = open (ptrace_scope_setting_file, O_RDONLY, 0); + if (fd >= 0 && (read (fd, &ptrace_scope, 1) == 1) && (ptrace_scope != '0')) { + fprintf (stderr, + "Note: your kernel restricts ptrace invoker using %s\n" + "vgdb will only be able to attach to a Valgrind process\n" + "blocked in a system call *after* an initial successful attach\n", + ptrace_scope_setting_file); + } else if (ptrace_scope == 'X') { + DEBUG (1, + "PR_SET_PTRACER defined" + " but could not determine ptrace scope from %s\n", + ptrace_scope_setting_file); + } + if (fd >= 0) + close (fd); +# endif + +# ifndef PTRACEINVOKER + fprintf(stderr, + "Note: ptrace invoker not implemented\n" + "For more info: read user manual section" + " 'Limitations of the Valgrind gdbserver'\n"); +# endif +} + +static +void usage(void) +{ + fprintf(stderr, +"Usage: vgdb [OPTION]... [[-c] COMMAND]...\n" +"vgdb (valgrind gdb) has two usages\n" +" 1. standalone to send monitor commands to a Valgrind gdbserver.\n" +" The OPTION(s) must be followed by the command to send\n" +" To send more than one command, separate the commands with -c\n" +" 2. relay application between gdb and a Valgrind gdbserver.\n" +" Only OPTION(s) can be given.\n" +"\n" +" OPTIONS are [--pid=] [--vgdb-prefix=]\n" +" [--max-invoke-ms=] [--wait=] [-d] [-D] [-l]\n" +" --pid arg must be given if multiple Valgrind gdbservers are found.\n" +" --vgdb-prefix arg must be given to both Valgrind and vgdb utility\n" +" if you want to change the default prefix for the FIFOs communication\n" +" between the Valgrind gdbserver and vgdb.\n" +" --wait arg tells vgdb to check during the specified number\n" +" of seconds if a Valgrind gdbserver can be found.\n" +" --max-invoke-ms gives the nr of milli-seconds after which vgdb will force\n" +" the invocation of the Valgrind gdbserver (if the Valgrind process\n" +" is blocked in a system call).\n" +" -d arg tells to show debug info. Multiple -d args for more debug info\n" +" -D arg tells to show shared mem status and then exit.\n" +" -l arg tells to show the list of running Valgrind gdbserver and then exit.\n" +"\n" +" -h --help shows this message\n" +" To get help from the Valgrind gdbserver, use vgdb help\n" +"\n" + ); + ptrace_restrictions(); +} + +/* If show_list, shows the list of Valgrind processes with gdbserver activated. + and then exits. + + else if arg_pid == -1, waits maximum check_trials seconds to discover + a valgrind pid appearing. + + Otherwise verify arg_pid is valid and corresponds to a Valgrind process + with gdbserver activated. + + Returns the pid to work with + or exits in case of error (e.g. no pid found corresponding to arg_pid */ + +static +int search_arg_pid(int arg_pid, int check_trials, Bool show_list) +{ + int i; + int pid = -1; + + if (arg_pid == 0 || arg_pid < -1) { + fprintf (stderr, "vgdb error: invalid pid %d given\n", arg_pid); + exit (1); + } else { + /* search for a matching named fifo. + If we have been given a pid, we will check that the matching FIFO is + there (or wait the nr of check_trials for this to appear). + If no pid has been given, then if we find only one FIFO, + we will use this to build the pid to use. + If we find multiple processes with valid FIFO, we report them and will + exit with an error. */ + DIR *vgdb_dir; + char *vgdb_dir_name = vmalloc (strlen (vgdb_prefix) + 3); + struct dirent *f; + int is; + int nr_valid_pid = 0; + const char *suffix = "-from-vgdb-to-"; /* followed by pid */ + char *vgdb_format = vmalloc (strlen(vgdb_prefix) + strlen(suffix) + 1); + + strcpy (vgdb_format, vgdb_prefix); + strcat (vgdb_format, suffix); + + strcpy (vgdb_dir_name, vgdb_prefix); + + for (is = strlen(vgdb_prefix) - 1; is >= 0; is--) + if (vgdb_dir_name[is] == '/') { + vgdb_dir_name[is+1] = '\0'; + break; + } + if (strlen(vgdb_dir_name) == 0) + strcpy (vgdb_dir_name, "./"); + + DEBUG(1, "searching pid in directory %s format %s\n", + vgdb_dir_name, vgdb_format); + + /* try to find FIFOs with valid pid. + On exit of the loop, pid is set to: + the last pid found if show_list (or -1 if no process was listed) + -1 if no FIFOs matching a running process is found + -2 if multiple FIFOs of running processes are found + otherwise it is set to the (only) pid found that can be debugged + */ + for (i = 0; i < check_trials; i++) { + DEBUG(1, "check_trial %d \n", i); + if (i > 0) + /* wait one second before checking again */ + sleep(1); + + vgdb_dir = opendir (vgdb_dir_name); + if (vgdb_dir == NULL) + XERROR (errno, + "vgdb error: opening directory %s searching vgdb fifo\n", + vgdb_dir_name); + + errno = 0; /* avoid complain if vgdb_dir is empty */ + while ((f = readdir (vgdb_dir))) { + struct stat st; + char pathname[strlen(vgdb_dir_name) + strlen(f->d_name)]; + char *wrongpid; + int newpid; + + strcpy (pathname, vgdb_dir_name); + strcat (pathname, f->d_name); + DEBUG(3, "trying %s\n", pathname); + if (stat (pathname, &st) != 0) { + if (debuglevel >= 3) + ERROR (errno, "vgdb error: stat %s searching vgdb fifo\n", + pathname); + } else if (S_ISFIFO (st.st_mode)) { + DEBUG(3, "trying %s\n", pathname); + if (strncmp (pathname, vgdb_format, + strlen (vgdb_format)) == 0) { + newpid = strtol(pathname + strlen (vgdb_format), + &wrongpid, 10); + if (*wrongpid == '\0' && newpid > 0 + && kill (newpid, 0) == 0) { + nr_valid_pid++; + if (show_list) { + report_pid (newpid); + pid = newpid; + } else if (arg_pid != -1) { + if (arg_pid == newpid) { + pid = newpid; + } + } else if (nr_valid_pid > 1) { + if (nr_valid_pid == 2) { + fprintf + (stderr, + "no --pid= arg given" + " and multiple valgrind pids found:\n"); + report_pid (pid); + } + pid = -2; + report_pid (newpid); + } else { + pid = newpid; + } + } + } + } + errno = 0; /* avoid complain if at the end of vgdb_dir */ + } + if (f == NULL && errno != 0) + XERROR (errno, "vgdb error: reading directory %s for vgdb fifo\n", + vgdb_dir_name); + + closedir (vgdb_dir); + if (pid != -1) + break; + } + + free (vgdb_dir_name); + free (vgdb_format); + } + + if (show_list) { + exit (1); + } else if (pid == -1) { + if (arg_pid == -1) + fprintf (stderr, "vgdb error: no FIFO found and no pid given\n"); + else + fprintf (stderr, "vgdb error: no FIFO found matching pid %d\n", + arg_pid); + exit (1); + } + else if (pid == -2) { + /* no arg_pid given, multiple FIFOs found */ + exit (1); + } + else { + return pid; + } +} + +/* return true if the numeric value of an option of the + form --xxxxxxxxx= could properly be extracted + from arg. If True is returned, *value contains the + extracted value.*/ +static +Bool numeric_val(char* arg, int *value) +{ + const char *eq_pos = strchr(arg, '='); + char *wrong; + + if (eq_pos == NULL) + return False; + + *value = strtol(eq_pos+1, &wrong, 10); + if (*wrong) + return False; + + return True; +} + +/* true if arg matches the provided option */ +static +Bool is_opt(char* arg, char *option) +{ + int option_len = strlen(option); + if (option[option_len-1] == '=') + return (0 == strncmp(option, arg, option_len)); + else + return (0 == strcmp(option, arg)); +} + +/* Parse command lines options. If error(s), exits. + Otherwise returns the options in *p_... args. + commands must be big enough for the commands extracted from argv. + On return, *p_last_command gives the position in commands where + the last command has been allocated (using vmalloc). */ +static +void parse_options(int argc, char** argv, + Bool *p_show_shared_mem, + Bool *p_show_list, + int *p_arg_pid, + int *p_check_trials, + int *p_last_command, + char *commands[]) +{ + Bool show_shared_mem = False; + Bool show_list = False; + int arg_pid = -1; + int check_trials = 1; + int last_command = -1; + + int i; + int arg_errors = 0; + + for (i = 1; i < argc; i++) { + if (is_opt(argv[i], "--help") || is_opt(argv[i], "-h")) { + usage(); + exit(0); + } else if (is_opt(argv[i], "-d")) { + debuglevel++; + } else if (is_opt(argv[i], "-D")) { + show_shared_mem = True; + } else if (is_opt(argv[i], "-l")) { + show_list = True; + } else if (is_opt(argv[i], "--pid=")) { + int newpid; + if (!numeric_val(argv[i], &newpid)) { + fprintf (stderr, "invalid pid argument %s\n", argv[i]); + arg_errors++; + } else if (arg_pid != -1) { + fprintf (stderr, "multiple pid arguments given\n"); + arg_errors++; + } else { + arg_pid = newpid; + } + } else if (is_opt(argv[i], "--wait=")) { + if (!numeric_val(argv[i], &check_trials)) { + fprintf (stderr, "invalid wait argument %s\n", argv[i]); + arg_errors++; + } + } else if (is_opt(argv[i], "--max-invoke-ms=")) { + if (!numeric_val(argv[i], &max_invoke_ms)) { + fprintf (stderr, "invalid max-invoke-ms argument %s\n", argv[i]); + arg_errors++; + } + } else if (is_opt(argv[i], "--vgdb-prefix=")) { + vgdb_prefix = argv[i] + 14; + } else if (is_opt(argv[i], "-c")) { + last_command++; + commands[last_command] = vmalloc (1); + commands[last_command][0] = '\0'; + } else if (0 == strncmp(argv[i], "-", 1)) { + fprintf (stderr, "unknown or invalid argument %s\n", argv[i]); + arg_errors++; + } else { + int len; + if (last_command == -1) { + /* only one command, no -c command indicator */ + last_command++; + commands[last_command] = vmalloc (1); + commands[last_command][0] = '\0'; + } + len = strlen(commands[last_command]); + commands[last_command] = vrealloc (commands[last_command], + len + 1 + strlen(argv[i]) + 1); + if (len > 0) + strcat (commands[last_command], " "); + strcat (commands[last_command], argv[i]); + if (packet_len_for_command(commands[last_command]) > PBUFSIZ) { + fprintf (stderr, "command %s too long\n", commands[last_command]); + arg_errors++; + } + + } + } + + if (isatty(0) + && !show_shared_mem + && !show_list + && last_command == -1) { + arg_errors++; + fprintf (stderr, + "Using vgdb standalone implies to give -D or -l or a COMMAND\n"); + } + + if (show_shared_mem && show_list) { + arg_errors++; + fprintf (stderr, + "Can't use both -D and -l options\n"); + } + + if (show_list && arg_pid != -1) { + arg_errors++; + fprintf (stderr, + "Can't use both --pid and -l options\n"); + } + + if (arg_errors > 0) { + fprintf (stderr, "args error. Try `vgdb --help` for more information\n"); + exit(1); + } + + *p_show_shared_mem = show_shared_mem; + *p_show_list = show_list; + *p_arg_pid = arg_pid; + *p_check_trials = check_trials; + *p_last_command = last_command; +} + +int main(int argc, char** argv) +{ + int i; + int pid; + + Bool show_shared_mem; + Bool show_list; + int arg_pid; + int check_trials; + int last_command; + char *commands[argc]; // we will never have more commands than args. + + parse_options(argc, argv, + &show_shared_mem, + &show_list, + &arg_pid, + &check_trials, + &last_command, + commands); + + /* when we are working as a relay for gdb, handle some signals by + only reporting them (according to debug level). Also handle these + when ptrace will be used: vgdb must clean up the ptrace effect before + dying. */ + if (max_invoke_ms > 0 || last_command == -1) + install_handlers(); + + pid = search_arg_pid (arg_pid, check_trials, show_list); + + prepare_fifos_and_shared_mem(pid); + + if (show_shared_mem) { + fprintf(stderr, + "vgdb %d " + "written_by_vgdb %d " + "seen_by_valgrind %d\n" + "vgdb pid %d\n", + VS_vgdb_pid, + VS_written_by_vgdb, + VS_seen_by_valgrind, + VS_vgdb_pid); + exit (0); + } + + if (last_command >= 0) { + standalone_send_commands(pid, last_command, commands); + } else { + gdb_relay(pid); + } + + + free (from_gdb_to_pid); + free (to_gdb_from_pid); + free (shared_mem); + + for (i = 0; i <= last_command; i++) + free (commands[i]); + return 0; +} +/*--------------------------------------------------------------------*/ +/*--- Relay between gdb and gdbserver embedded in valgrind vgdb.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2011 Philippe Waroquiers + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_libcsetjmp.h" +#include "pub_core_threadstate.h" +#include "pub_core_gdbserver.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "assert.h" +#include + +# if defined(VGO_linux) +#include +# endif + +/* vgdb has two usages: + 1. relay application between gdb and the gdbserver embedded in valgrind. + 2. standalone to send monitor commands to a running valgrind-ified process + + It is made of a main program which reads arguments. If no + arguments are given or only --pid and --vgdb-prefix, then usage 1 is + assumed. + + As relay application, vgdb reads bytes from gdb on stdin and + writes these bytes to valgrind. Bytes read from valgrind are + written to gdb on stdout. Read/Write from/to valgrind is done + using FIFOs. There is one thread reading from stdin, writing to + valgrind on a FIFO. There is one thread reading from valgrind on a + FIFO, writing to gdb on stdout + + As a standalone utility, vgdb builds command packets to write to valgrind, + sends it and reads the reply. The same two threads are used to write/read. + Once all the commands are sent and their replies received, vgdb will exit. + +*/ + +/* define PTRACEINVOKER to compile the ptrace related code + which ensures a valgrind process blocked in a system call + can be "waken up". PTRACEINVOKER implies some architecture + specific code and/or some OS specific code. */ +#if defined(VGA_arm) || defined(VGA_x86) || defined(VGA_amd64) \ + || defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_s390x) +#define PTRACEINVOKER +#else +I_die_here : (PTRACEINVOKER) architecture missing in vgdb.c +#endif + +/* Some darwin specific stuff is needed as ptrace is not + fully supported on MacOS. Till we find someone courageous + having access to Darwin, there is no PTRACEINVOKER. */ +#if defined(VGO_darwin) +#undef PTRACEINVOKER +#endif + +static int debuglevel; +static struct timeval dbgtv; +/* if level <= debuglevel, print timestamp, then print provided by debug info */ +#define DEBUG(level, ...) (level <= debuglevel ? \ + gettimeofday(&dbgtv, NULL), \ + fprintf(stderr, "%ld.%6.6ld ", \ + (long int)dbgtv.tv_sec, \ + (long int)dbgtv.tv_usec), \ + fprintf(stderr, __VA_ARGS__),fflush(stderr) \ + : 0) + +/* same as DEBUG but does not print time stamp info */ +#define PDEBUG(level, ...) (level <= debuglevel ? \ + fprintf(stderr, __VA_ARGS__),fflush(stderr) \ + : 0) + +/* if errno != 0, + report the errno and fprintf the ... varargs on stderr. */ +#define ERROR(errno, ...) ((errno == 0 ? 0 : perror("syscall failed")), \ + fprintf(stderr, __VA_ARGS__), \ + fflush(stderr)) +/* same as ERROR, but also exits with status 1 */ +#define XERROR(errno, ...) ((errno == 0 ? 0 : perror("syscall failed")), \ + fprintf(stderr, __VA_ARGS__), \ + fflush(stderr), \ + exit(1)) + +static char *vgdb_prefix = "/tmp/vgdb-pipe"; + +/* Will be set to True when any condition indicating we have to shutdown + is encountered. */ +static Bool shutting_down = False; + +static VgdbShared32 *shared32; +static VgdbShared64 *shared64; +#define VS_written_by_vgdb (shared32 != NULL ? \ + shared32->written_by_vgdb \ + : shared64->written_by_vgdb) +#define VS_seen_by_valgrind (shared32 != NULL ? \ + shared32->seen_by_valgrind \ + : shared64->seen_by_valgrind) + +#define VS_vgdb_pid (shared32 != NULL ? shared32->vgdb_pid : shared64->vgdb_pid) + +/* Calls malloc (size). Exits if memory can't be allocated. */ +static +void *vmalloc(size_t size) +{ + void * mem = malloc(size); + if (mem == NULL) + XERROR (errno, "can't allocate memory\n"); + return mem; +} + +/* Calls realloc (size). Exits if memory can't be allocated. */ +static +void *vrealloc(void *ptr,size_t size) +{ + void * mem = realloc(ptr, size); + if (mem == NULL) + XERROR (errno, "can't reallocate memory\n"); + return mem; +} + +/* add nrw to the written_by_vgdb field of shared32 or shared64 */ +static +void add_written(int nrw) +{ + if (shared32 != NULL) + shared32->written_by_vgdb += nrw; + else if (shared64 != NULL) + shared64->written_by_vgdb += nrw; + else + assert(0); +} + +static int shared_mem_fd = -1; +static +void map_vgdbshared (char* shared_mem) +{ + struct stat fdstat; + void **s; + shared_mem_fd = open(shared_mem, O_RDWR); + /* shared_mem_fd will not be closed till vgdb exits. */ + + if (shared_mem_fd == -1) + XERROR (errno, "error opening %s shared memory file\n", shared_mem); + + if (fstat(shared_mem_fd, &fdstat) != 0) + XERROR (errno, "fstat"); + + if (fdstat.st_size == sizeof(VgdbShared64)) + s = (void*) &shared64; + else if (fdstat.st_size == sizeof(VgdbShared32)) + s = (void*) &shared32; + else +#if VEX_HOST_WORDSIZE == 8 + XERROR (0, + "error size shared memory file %s.\n" + "expecting size %d (64bits) or %d (32bits) got %ld.\n", + shared_mem, + (int) sizeof(VgdbShared64), (int) sizeof(VgdbShared32), + (long int)fdstat.st_size); +#elif VEX_HOST_WORDSIZE == 4 + XERROR (0, + "error size shared memory file %s.\n" + "expecting size %d (32bits) got %ld.\n", + shared_mem, + (int) sizeof(VgdbShared32), + fdstat.st_size); +#else +# error "unexpected wordsize" +#endif + +#if VEX_HOST_WORDSIZE == 4 + if (shared64 != NULL) + XERROR (0, "cannot use 32 bits vgdb with a 64bits valgrind process\n"); + /* But we can use a 64 bits vgdb with a 32 bits valgrind */ +#endif + + *s = (void*) mmap (NULL, fdstat.st_size, + PROT_READ|PROT_WRITE, MAP_SHARED, + shared_mem_fd, 0); + + if (*s == (void *) -1) + XERROR (errno, "error mmap shared memory file %s\n", shared_mem); + +} + +#if VEX_HOST_WORDSIZE == 8 +typedef Addr64 CORE_ADDR; +typedef Addr64 PTRACE_XFER_TYPE; +typedef void* PTRACE_ARG3_TYPE; +#elif VEX_HOST_WORDSIZE == 4 +typedef Addr32 CORE_ADDR; +typedef Addr32 PTRACE_XFER_TYPE; +typedef void* PTRACE_ARG3_TYPE; +#else +# error "unexpected wordsize" +#endif + +static Bool pid_of_save_regs_continued = False; +// True if we have continued pid_of_save_regs after PTRACE_ATTACH + +static Bool dying = False; +// Set to True when loss of connection indicating that the Valgrind +// process is dying. + +/* To be called when connection with valgrind is lost. In case we +have lost the connection, it means that Valgrind has closed the +connection and is busy exiting. We can't and don't have to stop it in +this case. */ +static +void valgrind_dying(void) +{ + pid_of_save_regs_continued = False; + dying = True; +} + + +#ifdef PTRACEINVOKER +/* ptrace_(read|write)_memory are modified extracts of linux-low.c + from gdb 6.6. Copyrighted FSF */ +/* Copy LEN bytes from inferior's memory starting at MEMADDR + to debugger memory starting at MYADDR. */ + +static +int ptrace_read_memory (pid_t inferior_pid, CORE_ADDR memaddr, + unsigned char *myaddr, int len) +{ + register int i; + /* Round starting address down to longword boundary. */ + register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE); + /* Round ending address up; get number of longwords that makes. */ + register int count + = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1) + / sizeof (PTRACE_XFER_TYPE); + /* Allocate buffer of that many longwords. */ + register PTRACE_XFER_TYPE *buffer + = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE)); + + /* Read all the longwords */ + for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE)) { + errno = 0; + buffer[i] = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, 0); + if (errno) + return errno; + } + + /* Copy appropriate bytes out of the buffer. */ + memcpy (myaddr, + (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), len); + + return 0; +} + +/* Copy LEN bytes of data from debugger memory at MYADDR + to inferior's memory at MEMADDR. + On failure (cannot write the inferior) + returns the value of errno. */ + +static +int ptrace_write_memory (pid_t inferior_pid, CORE_ADDR memaddr, + const unsigned char *myaddr, int len) +{ + register int i; + /* Round starting address down to longword boundary. */ + register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE); + /* Round ending address up; get number of longwords that makes. */ + register int count + = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1) + / sizeof (PTRACE_XFER_TYPE); + /* Allocate buffer of that many longwords. */ + register PTRACE_XFER_TYPE *buffer + = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE)); + + if (debuglevel >= 1) { + DEBUG (1, "Writing "); + for (i = 0; i < len; i++) + PDEBUG (1, "%02x", (unsigned)myaddr[i]); + PDEBUG(1, " to %p\n", (void *) memaddr); + } + + /* Fill start and end extra bytes of buffer with existing memory data. */ + + buffer[0] = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, 0); + + if (count > 1) { + buffer[count - 1] + = ptrace (PTRACE_PEEKTEXT, inferior_pid, + (PTRACE_ARG3_TYPE) (addr + (count - 1) + * sizeof (PTRACE_XFER_TYPE)), + 0); + } + + /* Copy data to be written over corresponding part of buffer */ + + memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), + myaddr, len); + + /* Write the entire buffer. */ + + for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE)) { + errno = 0; + ptrace (PTRACE_POKETEXT, inferior_pid, + (PTRACE_ARG3_TYPE) addr, buffer[i]); + if (errno) + return errno; + } + + return 0; +} + +/* subset of VG_(threads) needed for vgdb ptrace. + This is initialized when process is attached. */ +typedef struct { + ThreadStatus status; + Int lwpid; +} +VgdbThreadState; +static VgdbThreadState vgdb_threads[VG_N_THREADS]; + +static const +HChar* name_of_ThreadStatus ( ThreadStatus status ) +{ + switch (status) { + case VgTs_Empty: return "VgTs_Empty"; + case VgTs_Init: return "VgTs_Init"; + case VgTs_Runnable: return "VgTs_Runnable"; + case VgTs_WaitSys: return "VgTs_WaitSys"; + case VgTs_Yielding: return "VgTs_Yielding"; + case VgTs_Zombie: return "VgTs_Zombie"; + default: return "VgTs_???"; + } +} + +static +char *status_image (int status) +{ + static char result[256]; + int sz = 0; +#define APPEND(...) sz += snprintf (result+sz, 256 - sz - 1, __VA_ARGS__) + + result[0] = 0; + + if (WIFEXITED(status)) + APPEND ("WIFEXITED %d ", WEXITSTATUS(status)); + + if (WIFSIGNALED(status)) { + APPEND ("WIFSIGNALED %d ", WTERMSIG(status)); + if (WCOREDUMP(status)) APPEND ("WCOREDUMP "); + } + + if (WIFSTOPPED(status)) + APPEND ("WIFSTOPPED %d ", WSTOPSIG(status)); + + if (WIFCONTINUED(status)) + APPEND ("WIFCONTINUED "); + + return result; +#undef APPEND +} + +/* Wait till the process pid is reported as stopped with signal_expected. + If other signal(s) than signal_expected are received, waitstopped + will pass them to pid, waiting for signal_expected to stop pid. + Returns True when process is in stopped state with signal_expected. + Returns False if a problem was encountered while waiting for pid + to be stopped. + + If pid is reported as being dead/exited, waitstopped will return False. +*/ +static +Bool waitstopped (int pid, int signal_expected, char *msg) +{ + pid_t p; + int status = 0; + int signal_received; + int res; + + while (1) { + DEBUG(1, "waitstopped %s before waitpid signal_expected %d\n", + msg, signal_expected); + p = waitpid(pid, &status, __WALL); + DEBUG(1, "after waitpid pid %d p %d status 0x%x %s\n", pid, p, + status, status_image (status)); + if (p != pid) { + ERROR(errno, "%s waitpid pid %d in waitstopped %d status 0x%x %s\n", + msg, pid, p, status, status_image (status)); + return False; + } + + if (WIFEXITED(status)) { + shutting_down = True; + return False; + } + + assert (WIFSTOPPED(status)); + signal_received = WSTOPSIG(status); + if (signal_received == signal_expected) + break; + + /* pid received a signal which is not the signal we are waiting for. + We continue pid, transmitting this signal. */ + DEBUG(1, "waitstopped PTRACE_CONT with signal %d\n", signal_received); + res = ptrace (PTRACE_CONT, pid, NULL, signal_received); + if (res != 0) { + ERROR(errno, "waitstopped PTRACE_CONT\n"); + return False; + } + } + + return True; +} + +/* Stops the given pid, wait for the process to be stopped. + Returns True if succesful, False otherwise. + msg is used in tracing and error reporting. */ +static +Bool stop (int pid, char *msg) +{ + long res; + + DEBUG(1, "%s SIGSTOP pid %d\n", msg, pid); + res = kill (pid, SIGSTOP); + if (res != 0) { + ERROR(errno, "%s SIGSTOP pid %d %ld\n", msg, pid, res); + return False; + } + + return waitstopped (pid, SIGSTOP, msg); + +} + +/* Attaches to given pid, wait for the process to be stopped. + Returns True if succesful, False otherwise. + msg is used in tracing and error reporting. */ +static +Bool attach (int pid, char *msg) +{ + long res; + + DEBUG(1, "%s PTRACE_ATTACH pid %d\n", msg, pid); + res = ptrace (PTRACE_ATTACH, pid, NULL, NULL); + if (res != 0) { + ERROR(errno, "%s PTRACE_ATTACH pid %d %ld\n", msg, pid, res); + return False; + } + + return waitstopped(pid, SIGSTOP, msg); +} + +/* once we are attached to the pid, get the list of threads and stop + them all. + Returns True if all threads properly suspended, False otherwise. */ +static +Bool acquire_and_suspend_threads(int pid) +{ + int i; + int rw; + Bool pid_found = False; + Addr vgt; + int sz_tst; + int off_status; + int off_lwpid; + int nr_live_threads = 0; + + if (shared32 != NULL) { + vgt = shared32->threads; + sz_tst = shared32->sizeof_ThreadState; + off_status = shared32->offset_status; + off_lwpid = shared32->offset_lwpid; + } + else if (shared64 != NULL) { + vgt = shared64->threads; + sz_tst = shared64->sizeof_ThreadState; + off_status = shared64->offset_status; + off_lwpid = shared64->offset_lwpid; + } else { + assert (0); + } + + /* note: the entry 0 is unused */ + for (i = 1; i < VG_N_THREADS; i++) { + vgt += sz_tst; + rw = ptrace_read_memory(pid, vgt+off_status, + (unsigned char *)&(vgdb_threads[i].status), + sizeof(ThreadStatus)); + if (rw != 0) { + ERROR(rw, "status ptrace_read_memory\n"); + return False; + } + + rw = ptrace_read_memory(pid, vgt+off_lwpid, + (unsigned char *)&(vgdb_threads[i].lwpid), + sizeof(Int)); + if (rw != 0) { + ERROR(rw, "lwpid ptrace_read_memory\n"); + return False; + } + + if (vgdb_threads[i].status != VgTs_Empty) { + DEBUG(1, "found tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + nr_live_threads++; + if (vgdb_threads[i].lwpid <= 1) { + if (vgdb_threads[i].lwpid == 0 + && vgdb_threads[i].status == VgTs_Init) { + DEBUG(1, "not set lwpid tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + } else { + ERROR(1, "unexpected lwpid tid %d status %s lwpid %d\n", + i, name_of_ThreadStatus(vgdb_threads[i].status), + vgdb_threads[i].lwpid); + } + /* in case we have a VtTs_Init thread with lwpid not yet set, + we try again later. */ + return False; + } + if (vgdb_threads[i].lwpid == pid) { + assert (!pid_found); + assert (i == 1); + pid_found = True; + } else { + if (!attach(vgdb_threads[i].lwpid, "attach_thread")) { + ERROR(0, "ERROR attach pid %d tid %d\n", + vgdb_threads[i].lwpid, i); + return False; + } + } + } + } + /* If we found no thread, it means the process is stopping, and + we better do not force anything to happen during that. */ + if (nr_live_threads > 0) + return True; + else + return False; +} + +static +void detach_from_all_threads(int pid) +{ + int i; + long res; + Bool pid_found = False; + + /* detach from all the threads */ + for (i = 1; i < VG_N_THREADS; i++) { + if (vgdb_threads[i].status != VgTs_Empty) { + if (vgdb_threads[i].status == VgTs_Init + && vgdb_threads[i].lwpid == 0) { + DEBUG(1, "skipping PTRACE_DETACH pid %d tid %d status %s\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status)); + } else { + if (vgdb_threads[i].lwpid == pid) { + assert (!pid_found); + pid_found = True; + } + DEBUG(1, "PTRACE_DETACH pid %d tid %d status %s\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status)); + res = ptrace (PTRACE_DETACH, vgdb_threads[i].lwpid, NULL, NULL); + if (res != 0) { + ERROR(errno, "PTRACE_DETACH pid %d tid %d status %s res %ld\n", + vgdb_threads[i].lwpid, i, + name_of_ThreadStatus (vgdb_threads[i].status), + res); + } + } + } + } + + if (!pid_found && pid) { + /* No threads are live. Process is busy stopping. + We need to detach from pid explicitely. */ + DEBUG(1, "no thread live => PTRACE_DETACH pid %d\n", pid); + res = ptrace (PTRACE_DETACH, pid, NULL, NULL); + if (res != 0) + ERROR(errno, "PTRACE_DETACH pid %d res %ld\n", pid, res); + } +} + +// if > 0, pid for which registers have to be restored. +static int pid_of_save_regs = 0; +static struct user user_save; + +/* Get the registers from pid into regs. + Returns True if all ok, otherwise False. */ +static +Bool getregs (int pid, void *regs) +{ +# ifdef VGA_s390x + char *pregs = (char *) regs; + long offset; + errno = 0; + DEBUG(1, "getregs PTRACE_PEEKUSER(s)\n"); + for (offset = 0; offset < PT_ENDREGS; offset = offset + sizeof(long)) { + *(long *)(pregs+offset) = ptrace(PTRACE_PEEKUSER, pid, offset, NULL); + if (errno != 0) { + ERROR(errno, "PTRACE_PEEKUSER offset %ld\n", offset); + return False; + } + } + return True; +# else + // Platforms having GETREGS + long res; + DEBUG(1, "getregs PTRACE_GETREGS\n"); + res = ptrace (PTRACE_GETREGS, pid, NULL, regs); + if (res != 0) { + ERROR(errno, "PTRACE_GETREGS %ld\n", res); + return False; + } + return True; +# endif +} + +/* Set the registers of pid to regs. + Returns True if all ok, otherwise False. */ +static +Bool setregs (int pid, void *regs) +{ +# ifdef VGA_s390x + char *pregs = (char *) regs; + long offset; + long res; + errno = 0; + DEBUG(1, "setregs PTRACE_POKEUSER(s)\n"); + for (offset = 0; offset < PT_ENDREGS; offset = offset + sizeof(long)) { + res = ptrace(PTRACE_POKEUSER, pid, offset, *(long*)(pregs+offset)); + if (errno != 0) { + ERROR(errno, "PTRACE_POKEUSER offset %ld res %ld\n", offset, res); + return False; + } + } + return True; +# else + // Platforms having SETREGS + long res; + DEBUG(1, "setregs PTRACE_SETREGS\n"); + res = ptrace (PTRACE_SETREGS, pid, NULL, regs); + if (res != 0) { + ERROR(errno, "PTRACE_SETREGS %ld\n", res); + return False; + } + return True; +# endif +} + +/* Restore the registers to the saved value, then detaches from all threads */ +static +void restore_and_detach(int pid) +{ + if (pid_of_save_regs) { + /* In case the 'main pid' has been continued, we need to stop it + before resetting the registers. */ + if (pid_of_save_regs_continued) { + pid_of_save_regs_continued = False; + if (!stop(pid_of_save_regs, "sigstop before reset regs")) + DEBUG(0, "Could not sigstop before reset"); + } + + DEBUG(1, "setregs restore registers pid %d\n", pid_of_save_regs); + if (!setregs(pid_of_save_regs, &user_save.regs)) { + ERROR(errno, "setregs restore registers pid %d after cont\n", + pid_of_save_regs); + } + pid_of_save_regs = 0; + } else { + DEBUG(1, "PTRACE_SETREGS restore registers: no pid\n"); + } + detach_from_all_threads(pid); +} + +/* Ensures that the gdbserver code is invoked by pid. + If an error occurs, resets to the valgrind process + to the state it has before being ptrace-d. + Returns True if invoke successful, False otherwise. +*/ +static +Bool invoke_gdbserver (int pid) +{ + long res; + Bool stopped; + struct user user_mod; + Addr sp; + /* A specific int value is passed to invoke_gdbserver, to check + everything goes according to the plan. */ + const int check = 0x8BADF00D; // ate bad food. + + const Addr bad_return = 0; + // A bad return address will be pushed on the stack. + // The function invoke_gdbserver cannot return. If ever it returns, a NULL + // address pushed on the stack should ensure this is detected. + + /* Not yet attached. If problem, vgdb can abort, + no cleanup needed. + + On Ubuntu>= 10.10, a /proc setting can disable ptrace. + So, Valgrind has to SET_PTRACER this vgdb. Once this + is done, this vgdb can ptrace the valgrind process. */ + + DEBUG(1, "attach to 'main' pid %d\n", pid); + if (!attach(pid, "attach main pid")) { + ERROR(0, "error attach main pid %d\n", pid); + return False; + } + + /* Now, we are attached. If problem, detach and return. */ + + if (!acquire_and_suspend_threads(pid)) { + detach_from_all_threads(pid); + /* if the pid does not exist anymore, we better stop */ + if (kill(pid, 0) != 0) + XERROR (errno, "invoke_gdbserver: check for pid %d existence failed\n", + pid); + return False; + } + + if (!getregs(pid, &user_mod.regs)) { + detach_from_all_threads(pid); + return False; + } + user_save = user_mod; + +#if defined(VGA_x86) + sp = user_mod.regs.esp; +#elif defined(VGA_amd64) + sp = user_mod.regs.rsp; + if (shared32 != NULL) { + /* 64bit vgdb speaking with a 32bit executable. + To have system call restart properly, we need to sign extend rax. + For more info: + web search '[patch] Fix syscall restarts for amd64->i386 biarch' + e.g. http://sourceware.org/ml/gdb-patches/2009-11/msg00592.html */ + *(long *)&user_save.regs.rax = *(int*)&user_save.regs.rax; + DEBUG(1, "Sign extending %8.8lx to %8.8lx\n", + user_mod.regs.rax, user_save.regs.rax); + } +#elif defined(VGA_arm) + sp = user_mod.regs.uregs[13]; +#elif defined(VGA_ppc32) + sp = user_mod.regs.gpr[1]; +#elif defined(VGA_ppc64) + sp = user_mod.regs.gpr[1]; +#elif defined(VGA_s390x) + sp = user_mod.regs.gprs[15]; +#else + I_die_here : (sp) architecture missing in vgdb.c +#endif + + + // the magic below is derived from spying what gdb sends to + // the (classical) gdbserver when invoking a C function. + if (shared32 != NULL) { + // vgdb speaking with a 32bit executable. +#if defined(VGA_x86) || defined(VGA_amd64) + const int regsize = 4; + int rw; + /* push check arg on the stack */ + sp = sp - regsize; + DEBUG(1, "push check arg ptrace_write_memory\n"); + assert(regsize == sizeof(check)); + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &check, + regsize); + if (rw != 0) { + ERROR(rw, "push check arg ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } + + sp = sp - regsize; + DEBUG(1, "push bad_return return address ptrace_write_memory\n"); + // Note that for a 64 bits vgdb, only 4 bytes of NULL bad_return + // are written. + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &bad_return, + regsize); + if (rw != 0) { + ERROR(rw, "push bad_return return address ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } +#if defined(VGA_x86) + /* set ebp, esp, eip and orig_eax to invoke gdbserver */ + // compiled in 32bits, speaking with a 32bits exe + user_mod.regs.ebp = sp; // bp set to sp + user_mod.regs.esp = sp; + user_mod.regs.eip = shared32->invoke_gdbserver; + user_mod.regs.orig_eax = -1L; +#elif defined(VGA_amd64) + /* set ebp, esp, eip and orig_eax to invoke gdbserver */ + // compiled in 64bits, speaking with a 32bits exe + user_mod.regs.rbp = sp; // bp set to sp + user_mod.regs.rsp = sp; + user_mod.regs.rip = shared32->invoke_gdbserver; + user_mod.regs.orig_rax = -1L; +#else + I_die_here : not x86 or amd64 in x86/amd64 section/ +#endif + +#elif defined(VGA_ppc32) || defined(VGA_ppc64) + user_mod.regs.nip = shared32->invoke_gdbserver; + user_mod.regs.trap = -1L; + /* put check arg in register 3 */ + user_mod.regs.gpr[3] = check; + /* put NULL return address in Link Register */ + user_mod.regs.link = bad_return; + +#elif defined(VGA_arm) + /* put check arg in register 0 */ + user_mod.regs.uregs[0] = check; + /* put NULL return address in Link Register */ + user_mod.regs.uregs[14] = bad_return; + user_mod.regs.uregs[15] = shared32->invoke_gdbserver; + +#elif defined(VGA_s390x) + XERROR(0, "(fn32) s390x has no 32bits implementation"); +#else + I_die_here : architecture missing in vgdb.c +#endif + } + + else if (shared64 != NULL) { +#if defined(VGA_x86) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_amd64) + // vgdb speaking with a 64 bit executable. + const int regsize = 8; + int rw; + + /* give check arg in rdi */ + user_mod.regs.rdi = check; + + /* push return address on stack : return to breakaddr */ + sp = sp - regsize; + DEBUG(1, "push bad_return return address ptrace_write_memory\n"); + rw = ptrace_write_memory(pid, sp, + (unsigned char *) &bad_return, + sizeof(bad_return)); + if (rw != 0) { + ERROR(rw, "push bad_return return address ptrace_write_memory"); + detach_from_all_threads(pid); + return False; + } + + /* set rbp, rsp, rip and orig_rax to invoke gdbserver */ + user_mod.regs.rbp = sp; // bp set to sp + user_mod.regs.rsp = sp; + user_mod.regs.rip = shared64->invoke_gdbserver; + user_mod.regs.orig_rax = -1L; + +#elif defined(VGA_arm) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_ppc32) + assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe +#elif defined(VGA_ppc64) + Addr64 func_addr; + Addr64 toc_addr; + int rw; + rw = ptrace_read_memory(pid, shared64->invoke_gdbserver, + (unsigned char *)&func_addr, + sizeof(Addr64)); + if (rw != 0) { + ERROR(rw, "ppc64 read func_addr\n"); + detach_from_all_threads(pid); + return False; + } + rw = ptrace_read_memory(pid, shared64->invoke_gdbserver+8, + (unsigned char *)&toc_addr, + sizeof(Addr64)); + if (rw != 0) { + ERROR(rw, "ppc64 read toc_addr\n"); + detach_from_all_threads(pid); + return False; + } + // We are not pushing anything on the stack, so it is not + // very clear why the sp has to be decreased, but it seems + // needed. The ppc64 ABI might give some lights on this ? + user_mod.regs.gpr[1] = sp - 220; + user_mod.regs.gpr[2] = toc_addr; + user_mod.regs.nip = func_addr; + user_mod.regs.trap = -1L; + /* put check arg in register 3 */ + user_mod.regs.gpr[3] = check; + /* put bad_return return address in Link Register */ + user_mod.regs.link = bad_return; +#elif defined(VGA_s390x) + /* put check arg in register r2 */ + user_mod.regs.gprs[2] = check; + /* bad_return Return address is in r14 */ + user_mod.regs.gprs[14] = bad_return; + /* minimum stack frame */ + sp = sp - 160; + user_mod.regs.gprs[15] = sp; + /* set program counter */ + user_mod.regs.psw.addr = shared64->invoke_gdbserver; +#else + I_die_here: architecture missing in vgdb.c +#endif + } + else { + assert(0); + } + + if (!setregs(pid, &user_mod.regs)) { + detach_from_all_threads(pid); + return False; + } + /* Now that we have modified the registers, we set + pid_of_save_regs to indicate that restore_and_detach + must restore the registers in case of cleanup. */ + pid_of_save_regs = pid; + pid_of_save_regs_continued = False; + + + /* We PTRACE_CONT-inue pid. + Either gdbserver will be invoked directly (if all + threads are interruptible) or gdbserver will be + called soon by the scheduler. In the first case, + pid will stop on the break inserted above when + gdbserver returns. In the 2nd case, the break will + be encountered directly. */ + DEBUG(1, "PTRACE_CONT to invoke\n"); + res = ptrace (PTRACE_CONT, pid, NULL, NULL); + if (res != 0) { + ERROR(errno, "PTRACE_CONT\n"); + restore_and_detach(pid); + return False; + } + pid_of_save_regs_continued = True; + + stopped = waitstopped (pid, SIGTRAP, + "waitpid status after PTRACE_CONT to invoke"); + if (stopped) { + /* Here pid has properly stopped on the break. */ + pid_of_save_regs_continued = False; + restore_and_detach(pid); + return True; + } else { + /* Whatever kind of problem happened. We shutdown */ + shutting_down = True; + return False; + } +} +#endif + +static +void cleanup_restore_and_detach(void *v_pid) +{ + DEBUG(1, "cleanup_restore_and_detach dying: %d\n", dying); +#ifdef PTRACEINVOKER + if (!dying) + restore_and_detach(*(int*)v_pid); +#endif +} + +/* This function loops till shutting_down becomes true. In this loop, + it verifies if valgrind process is reading the characters written + by vgdb. The verification is done every max_invoke_ms ms. If + valgrind is not reading characters, it will use invoke_gdbserver + (if PTRACE_INVOKER is defined) to ensure that the gdbserver code is + called soon by valgrind. */ +static int max_invoke_ms = 100; +static +void *invoke_gdbserver_in_valgrind(void *v_pid) +{ + int pid = *(int *)v_pid; + int written_by_vgdb_before_sleep; + int seen_by_valgrind_before_sleep; + + int invoked_written = -1; + + pthread_cleanup_push(cleanup_restore_and_detach, v_pid); + + while (!shutting_down) { + written_by_vgdb_before_sleep = VS_written_by_vgdb; + seen_by_valgrind_before_sleep = VS_seen_by_valgrind; + DEBUG(3, + "written_by_vgdb_before_sleep %d " + "seen_by_valgrind_before_sleep %d\n", + written_by_vgdb_before_sleep, + seen_by_valgrind_before_sleep); + if (usleep(1000 * max_invoke_ms) != 0) { + if (errno == EINTR) + continue; + XERROR (errno, "error usleep\n"); + } + /* if nothing happened during our sleep, let's try to wake up valgrind */ + if (written_by_vgdb_before_sleep == VS_written_by_vgdb + && seen_by_valgrind_before_sleep == VS_seen_by_valgrind + && VS_written_by_vgdb > VS_seen_by_valgrind) { + DEBUG(2, + "after sleep " + "written_by_vgdb %d " + "seen_by_valgrind %d " + "invoked_written %d\n", + VS_written_by_vgdb, + VS_seen_by_valgrind, + invoked_written); + /* if the pid does not exist anymore, we better stop */ + if (kill(pid, 0) != 0) + XERROR (errno, + "invoke_gdbserver_in_valgrind: " + "check for pid %d existence failed\n", pid); + + #if defined(PTRACEINVOKER) + /* only need to wake up if the nr written has changed since + last invoke. */ + if (invoked_written != written_by_vgdb_before_sleep) { + if (invoke_gdbserver(pid)) { + /* If invoke succesful, no need to invoke again + for the same value of written_by_vgdb_before_sleep. */ + invoked_written = written_by_vgdb_before_sleep; + } + } + #else + DEBUG(2, "invoke_gdbserver via ptrace not (yet) implemented\n"); + #endif + } + } + pthread_cleanup_pop(0); + return NULL; +} + +static +int open_fifo (char* name, int flags, char* desc) +{ + int fd; + DEBUG(1, "opening %s %s\n", name, desc); + fd = open(name, flags); + if (fd == -1) + XERROR (errno, "error opening %s %s\n", name, desc); + + DEBUG(1, "opened %s %s fd %d\n", name, desc, fd); + return fd; +} + +/* acquire a lock on the first byte of the given fd. If not successful, + exits with error. + This allows to avoid having two vgdb speaking with the same Valgrind + gdbserver as this causes serious headaches to the protocol. */ +static +void acquire_lock (int fd, int valgrind_pid) +{ + if (lockf(fd, F_TLOCK, 1) < 0) { + if (errno == EAGAIN || errno == EACCES) { + XERROR(errno, + "Cannot acquire lock.\n" + "Probably vgdb pid %d already speaks with Valgrind pid %d\n", + VS_vgdb_pid, + valgrind_pid); + } else { + XERROR(errno, "cannot acquire lock.\n"); + } + } + + /* Here, we have the lock. It will be released when fd will be closed. */ + /* We indicate our pid to Valgrind gdbserver */ + if (shared32 != NULL) + shared32->vgdb_pid = getpid(); + else if (shared64 != NULL) + shared64->vgdb_pid = getpid(); + else + assert(0); +} + +#define PBUFSIZ 16384 /* keep in sync with server.h */ + +/* read some characters from fd. + Returns the nr of characters read, -1 if error. + desc is a string used in tracing */ +static +int read_buf (int fd, char* buf, char* desc) +{ + int nrread; + DEBUG(2, "reading %s\n", desc); + nrread = read(fd, buf, PBUFSIZ); + if (nrread == -1) { + ERROR (errno, "error reading %s\n", desc); + return -1; + } + buf[nrread] = '\0'; + DEBUG(2, "read %s %s\n", desc, buf); + return nrread; +} + +/* write size bytes from buf to fd. + desc is a description of the action for which the write is done. + If notify, then add size to the shared cntr indicating to the + valgrind process that there is new data. + Returns True if write is ok, False if there was a problem. */ +static +Bool write_buf(int fd, char* buf, int size, char* desc, Bool notify) +{ + int nrwritten; + int nrw; + DEBUG(2, "writing %s len %d %s notify: %d\n", desc, size, buf, notify); + nrwritten = 0; + while (nrwritten < size) { + nrw = write (fd, buf+nrwritten, size - nrwritten); + if (nrw == -1) { + ERROR(errno, "error write %s\n", desc); + return False; + } + nrwritten = nrwritten + nrw; + if (notify) + add_written(nrw); + } + return True; +} + +typedef enum { + FROM_GDB, + TO_GDB, + FROM_PID, + TO_PID } ConnectionKind; +static const int NumConnectionKind = TO_PID+1; +static +char *ppConnectionKind (ConnectionKind con) +{ + switch (con) { + case FROM_GDB: return "FROM_GDB"; + case TO_GDB: return "TO_GDB"; + case FROM_PID: return "FROM_PID"; + case TO_PID: return "TO_PID"; + default: return "invalid connection kind"; + } +} + +static char *shared_mem; + +static const int from_gdb = 0; +static char *from_gdb_to_pid; /* fifo name to write gdb command to pid */ +/* Returns True in case read/write operations were done properly. + Returns False in case of error. + to_pid is the file descriptor to write to the process pid. */ +static +Bool read_from_gdb_write_to_pid(int to_pid) +{ + char buf[PBUFSIZ]; + int nrread; + + nrread = read_buf(from_gdb, buf, "from gdb on stdin"); + if (nrread <= 0) { + if (nrread == 0) + DEBUG(1, "read 0 bytes from gdb => assume exit\n"); + else + DEBUG(1, "error reading bytes from gdb\n"); + close (from_gdb); + shutting_down = True; + return False; + } + return write_buf(to_pid, buf, nrread, "to_pid", /* notify */ True); +} + +static const int to_gdb = 1; +static char *to_gdb_from_pid; /* fifo name to read pid replies */ +/* Returns True in case read/write operations were done properly. + Returns False in case of error. + from_pid is the file descriptor to read data from the process pid. */ +static +Bool read_from_pid_write_to_gdb(int from_pid) +{ + char buf[PBUFSIZ]; + int nrread; + + nrread = read_buf(from_pid, buf, "from pid"); + if (nrread <= 0) { + if (nrread == 0) + DEBUG(1, "read 0 bytes from pid => assume exit\n"); + else + DEBUG(1, "error reading bytes from pid\n"); + close (from_pid); + shutting_down = True; + return False; + } + return write_buf(to_gdb, buf, nrread, "to_gdb", /* notify */ False); +} + +/* prepares the FIFOs filenames, map the shared memory. */ +static +void prepare_fifos_and_shared_mem(int pid) +{ + from_gdb_to_pid = vmalloc (strlen(vgdb_prefix) + 30); + to_gdb_from_pid = vmalloc (strlen(vgdb_prefix) + 30); + shared_mem = vmalloc (strlen(vgdb_prefix) + 30); + /* below 3 lines must match the equivalent in remote-utils.c */ + sprintf(from_gdb_to_pid, "%s-from-vgdb-to-%d", vgdb_prefix, pid); + sprintf(to_gdb_from_pid, "%s-to-vgdb-from-%d", vgdb_prefix, pid); + sprintf(shared_mem, "%s-shared-mem-vgdb-%d", vgdb_prefix, pid); + DEBUG (1, "vgdb: using %s %s %s\n", + from_gdb_to_pid, to_gdb_from_pid, shared_mem); + + map_vgdbshared(shared_mem); +} + +/* Convert hex digit A to a number. */ + +static int +fromhex (int a) +{ + if (a >= '0' && a <= '9') + return a - '0'; + else if (a >= 'a' && a <= 'f') + return a - 'a' + 10; + else + XERROR(0, "Reply contains invalid hex digit %c\n", a); + return 0; +} + +/* Returns next char from fd. -1 if error, -2 if EOF. + NB: must always call it with the same fd */ +static int +readchar (int fd) +{ + static unsigned char buf[PBUFSIZ]; + static int bufcnt = 0; + static unsigned char *bufp; + + if (bufcnt-- > 0) + return *bufp++; + + bufcnt = read (fd, buf, sizeof (buf)); + + if (bufcnt <= 0) { + if (bufcnt == 0) { + fprintf (stderr, "readchar: Got EOF\n"); + return -2; + } else { + ERROR (errno, "readchar\n"); + return -1; + } + } + + bufp = buf; + bufcnt--; + return *bufp++; +} + +/* Read a packet from fromfd, with error checking, + and store it in BUF. + Returns length of packet, or -1 if error or -2 if EOF. + Writes ack on ackfd */ + +static int +getpkt (char *buf, int fromfd, int ackfd) +{ + char *bp; + unsigned char csum, c1, c2; + int c; + + while (1) { + csum = 0; + + while (1) { + c = readchar (fromfd); + if (c == '$') + break; + DEBUG(2, "[getpkt: discarding char '%c']\n", c); + if (c < 0) + return c; + } + + bp = buf; + while (1) { + c = readchar (fromfd); + if (c < 0) + return c; + if (c == '#') + break; + if (c == '*') { + int repeat; + int r; + int prev; + prev = *(bp-1); + csum += c; + repeat = readchar (fromfd); + csum += repeat; + for (r = 0; r < repeat - 29; r ++) + *bp++ = prev; + } else { + *bp++ = c; + csum += c; + } + } + *bp = 0; + + c1 = fromhex (readchar (fromfd)); + c2 = fromhex (readchar (fromfd)); + + if (csum == (c1 << 4) + c2) + break; + + fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n", + (c1 << 4) + c2, csum, buf); + if (write (ackfd, "-", 1) != 1) + ERROR(0, "error when writing - (nack)\n"); + else + add_written(1); + } + + DEBUG(2, "getpkt (\"%s\"); [sending ack] \n", buf); + if (write (ackfd, "+", 1) != 1) + ERROR(0, "error when writing + (ack)\n"); + else + add_written(1); + return bp - buf; +} + +static int sigint = 0; +static int sigterm = 0; +static int sigpipe = 0; +static int sighup = 0; +static int sigusr1 = 0; +static int sigalrm = 0; +static int sigusr1_fd = -1; +static pthread_t invoke_gdbserver_in_valgrind_thread; + +static +void received_signal (int signum) +{ + if (signum == SIGINT) + sigint++; + else if (signum == SIGUSR1) { + sigusr1++; + if (sigusr1_fd >= 0) { + char control_c = '\003'; + write_buf(sigusr1_fd, &control_c, 1, + "write \\003 on SIGUSR1", /* notify */ True); + } + } + else if (signum == SIGTERM) { + shutting_down = True; + sigterm++; + } else if (signum == SIGHUP) { + shutting_down = True; + sighup++; + } else if (signum == SIGPIPE) { + sigpipe++; + } else if (signum == SIGALRM) { + sigalrm++; + DEBUG(1, "pthread_cancel invoke_gdbserver_in_valgrind_thread\n"); + /* Note: we cannot directly invoke restore_and_detach : this must + be done by the thread that has attached. + We have in this thread pushed a cleanup handler that will + cleanup what is needed. */ + pthread_cancel(invoke_gdbserver_in_valgrind_thread); + } else { + ERROR(0, "unexpected signal %d\n", signum); + } +} + +/* install the signal handlers allowing e.g. vgdb to cleanup in + case of termination. */ +static +void install_handlers(void) +{ + struct sigaction action, oldaction; + + action.sa_handler = received_signal; + sigemptyset (&action.sa_mask); + action.sa_flags = 0; + + /* SIGINT: when user types C-c in gdb, this sends + a SIGINT to vgdb + causes a character to be sent to remote gdbserver. + The later is enough to wakeup the valgrind process. */ + if (sigaction (SIGINT, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGINT\n"); + /* We might do something more intelligent than just + reporting this SIGINT E.g. behave similarly to the gdb: two + control-C without feedback from the debugged process would + mean to stop debugging it. */ + + /* SIGUSR1: this is used to facilitate automatic testing. When + vgdb receives this signal, it will simulate the user typing C-c. */ + if (sigaction (SIGUSR1, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGUSR1\n"); + + + /* SIGTERM: can receive this signal (e.g. from gdb) to terminate vgdb + when detaching or similar. A clean shutdown will be done as both + the read and write side will detect an end of file. */ + if (sigaction (SIGTERM, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGTERM\n"); + + /* SIGPIPE: can receive this signal when gdb detaches or kill the + process debugged: gdb will close its pipes to vgdb. vgdb + must resist to this signal to allow a clean shutdown. */ + if (sigaction (SIGPIPE, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGPIPE\n"); + + /* SIGALRM: in case invoke thread is blocked, alarm is used + to cleanup. */ + if (sigaction (SIGALRM, &action, &oldaction) != 0) + XERROR (errno, "vgdb error sigaction SIGALRM\n"); +} + +/* close the FIFOs provided connections, terminate the invoker thread. */ +static +void close_connection(int to_pid, int from_pid) +{ + DEBUG(1, "nr received signals: sigint %d sigterm %d sighup %d sigpipe %d\n", + sigint, sigterm, sighup, sigpipe); + /* Note that we do not forward sigterm to the valgrind process: + a sigterm signal is (probably) received from gdb if the user wants to + kill the debugged process. The kill instruction has been given to + the valgrind process, which should execute a clean exit. */ + + /* We first close the connection to pid. The pid will then + terminates its gdbserver work. We keep the from pid + fifo opened till the invoker thread is finished. + This allows the gdbserver to finish sending its last reply. */ + if (close(to_pid) != 0) + ERROR(errno, "close to_pid\n"); + + /* if there is a task that was busy trying to wake up valgrind + process, we wait for it to be terminated otherwise threads + in the valgrind process can stay stopped if vgdb main + exits before the invoke thread had time to detach from + all valgrind threads. */ + if (max_invoke_ms > 0) { + int join; + + /* It is surprisingly complex to properly shutdown or exit the + valgrind process in which gdbserver has been invoked through + ptrace. In the normal case (gdb detaches from the process, + or process is continued), the valgrind process will reach the + breakpoint place. Using ptrace, vgdb will ensure the + previous activity of the process is resumed (e.g. restart a + blocking system call). The special case is when gdb asks the + valgrind process to exit (using either the "kill" command or + "monitor exit"). In such a case, the valgrind process will + call exit. But a ptraced process will be blocked in exit, + waiting for the ptracing process to detach or die. vgdb + cannot detach unconditionally as otherwise, in the normal + case, the valgrind process would die abnormally with SIGTRAP + (as vgdb would not be there to catch it). vgdb can also not + die unconditionally otherwise again, similar problem. So, we + assume that most of the time, we arrive here in the normal + case, and so, the breakpoint has been encountered by the + valgrind process, so the invoker thread will exit and the + join will succeed. For the "kill" case, we cause an alarm + signal to be sent after a few seconds. This means that in the + normal case, the gdbserver code in valgrind process must have + returned the control in less than the alarm nr of seconds, + otherwise, valgrind will die abnormally with SIGTRAP. */ + (void) alarm (3); + + DEBUG(1, "joining with invoke_gdbserver_in_valgrind_thread\n"); + join = pthread_join(invoke_gdbserver_in_valgrind_thread, NULL); + if (join != 0) + XERROR + (join, + "vgdb error pthread_join invoke_gdbserver_in_valgrind_thread\n"); + } + if (close(from_pid) != 0) + ERROR(errno, "close from_pid\n"); +} + +/* Relay data between gdb and Valgrind gdbserver, till EOF or an + error is encountered. */ +static +void gdb_relay (int pid) +{ + int from_pid = -1; /* fd to read from pid */ + int to_pid = -1; /* fd to write to pid */ + + int shutdown_loop = 0; + fprintf (stderr, "relaying data between gdb and process %d\n", pid); + fflush (stderr); + + if (max_invoke_ms > 0) + pthread_create(&invoke_gdbserver_in_valgrind_thread, NULL, + invoke_gdbserver_in_valgrind, (void *) &pid); + to_pid = open_fifo(from_gdb_to_pid, O_WRONLY, "write to pid"); + acquire_lock (shared_mem_fd, pid); + + from_pid = open_fifo (to_gdb_from_pid, O_RDONLY|O_NONBLOCK, + "read mode from pid"); + + sigusr1_fd = to_pid; /* allow simulating user typing control-c */ + + while (1) { + ConnectionKind ck; + int ret; + struct pollfd pollfds[NumConnectionKind]; + + /* watch data written by gdb, watch POLLERR on both gdb fd */ + pollfds[FROM_GDB].fd = from_gdb; + pollfds[FROM_GDB].events = POLLIN; + pollfds[FROM_GDB].revents = 0; + pollfds[TO_GDB].fd = to_gdb; + pollfds[TO_GDB].events = 0; + pollfds[TO_GDB].revents = 0; + + /* watch data written by pid, watch POLLERR on both pid fd */ + pollfds[FROM_PID].fd = from_pid; + pollfds[FROM_PID].events = POLLIN; + pollfds[FROM_PID].revents = 0; + pollfds[TO_PID].fd = to_pid; + pollfds[TO_PID].events = 0; + pollfds[TO_PID].revents = 0; + + ret = poll(pollfds, + NumConnectionKind, + (shutting_down ? + 1 /* one second */ + : -1 /* infinite */)); + DEBUG(2, "poll ret %d errno %d\n", ret, errno); + + /* check for unexpected error */ + if (ret <= 0 && errno != EINTR) { + ERROR (errno, "unexpected poll ret %d\n", ret); + shutting_down = True; + break; + } + + /* check for data to read */ + for (ck = 0; ck < NumConnectionKind; ck ++) { + if (pollfds[ck].revents & POLLIN) { + switch (ck) { + case FROM_GDB: + if (!read_from_gdb_write_to_pid(to_pid)) + shutting_down = True; + break; + case FROM_PID: + if (!read_from_pid_write_to_gdb(from_pid)) + shutting_down = True; + break; + default: XERROR(0, "unexpected POLLIN on %s\n", + ppConnectionKind(ck)); + } + } + } + + /* check for an fd being in error condition */ + for (ck = 0; ck < NumConnectionKind; ck ++) { + if (pollfds[ck].revents & POLLERR) { + DEBUG(1, "connection %s fd %d POLLERR error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + if (pollfds[ck].revents & POLLHUP) { + DEBUG(1, "connection %s fd %d POLLHUP error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + if (pollfds[ck].revents & POLLNVAL) { + DEBUG(1, "connection %s fd %d POLLNVAL error condition\n", + ppConnectionKind(ck), pollfds[ck].fd); + valgrind_dying(); + shutting_down = True; + } + } + + if (shutting_down) { + /* we let some time to the final packets to be transferred */ + shutdown_loop++; + if (shutdown_loop > 3) + break; + } + } + close_connection(to_pid, from_pid); +} + +static int packet_len_for_command(char *cmd) +{ + /* cmd will be send as a packet $qRcmd,xxxx....................xx#cc */ + return 7+ 2*strlen(cmd) +3 + 1; +} + +/* hyper-minimal protocol implementation that + sends the provided commands (using qRcmd packets) + and read and display their replies. */ +static +void standalone_send_commands(int pid, + int last_command, + char *commands[] ) +{ + int from_pid = -1; /* fd to read from pid */ + int to_pid = -1; /* fd to write to pid */ + + int i; + int hi; + unsigned char hex[3]; + unsigned char cksum; + unsigned char *hexcommand; + unsigned char buf[PBUFSIZ]; + int buflen; + int nc; + + + if (max_invoke_ms > 0) + pthread_create(&invoke_gdbserver_in_valgrind_thread, NULL, + invoke_gdbserver_in_valgrind, (void *) &pid); + + to_pid = open_fifo(from_gdb_to_pid, O_WRONLY, "write to pid"); + acquire_lock (shared_mem_fd, pid); + + /* first send a C-c \003 to pid, so that it wakes up the process + After that, we can open the fifo from the pid in read mode + We then start to wait for packets (normally first a resume reply) + At that point, we send our command and expect replies */ + buf[0] = '\003'; + write_buf(to_pid, buf, 1, "write \\003 to wake up", /* notify */ True); + from_pid = open_fifo(to_gdb_from_pid, O_RDONLY, + "read cmd result from pid"); + + for (nc = 0; nc <= last_command; nc++) { + fprintf (stderr, "sending command %s to pid %d\n", commands[nc], pid); + fflush (stderr); + + /* prepare hexcommand $qRcmd,xxxx....................xx#cc */ + hexcommand = vmalloc (packet_len_for_command(commands[nc])); + hexcommand[0] = 0; + strcat (hexcommand, "$qRcmd,"); + for (i = 0; i < strlen(commands[nc]); i++) { + sprintf(hex, "%02x", commands[nc][i]); + strcat (hexcommand, hex); + } + /* checksum (but without the $) */ + cksum = 0; + for (hi = 1; hi < strlen(hexcommand); hi++) + cksum+=hexcommand[hi]; + strcat(hexcommand, "#"); + sprintf(hex, "%02x", cksum); + strcat(hexcommand, hex); + write_buf(to_pid, hexcommand, strlen(hexcommand), + "writing hex command to pid", /* notify */ True); + + /* we exit of the below loop explicitely when the command has + been handled or because a signal handler will set + shutting_down. */ + while (!shutting_down) { + buflen = getpkt(buf, from_pid, to_pid); + if (buflen < 0) { + ERROR (0, "error reading packet\n"); + if (buflen == -2) + valgrind_dying(); + break; + } + if (strlen(buf) == 0) { + DEBUG(0, "empty packet rcvd (packet qRcmd not recognised?)\n"); + break; + } + if (strcmp(buf, "OK") == 0) { + DEBUG(1, "OK packet rcvd\n"); + break; + } + if (buf[0] == 'E') { + DEBUG(0, + "E NN error packet rcvd: %s (unknown monitor command?)\n", + buf); + break; + } + if (buf[0] == 'W') { + DEBUG(0, "W stopped packet rcvd: %s\n", buf); + break; + } + if (buf[0] == 'T') { + DEBUG(1, "T resume reply packet received: %s\n", buf); + continue; + } + + /* must be here an O packet with hex encoded string reply + => decode and print it */ + if (buf[0] != 'O') { + DEBUG(0, "expecting O packet, received: %s\n", buf); + continue; + } + { + char buf_print[buflen/2 + 1]; + for (i = 1; i < buflen; i = i + 2) + buf_print[i/2] = (fromhex(*(buf+i)) << 4) + + fromhex(*(buf+i+1)); + buf_print[buflen/2] = 0; + printf("%s", buf_print); + fflush(stdout); + } + } + free (hexcommand); + } + shutting_down = True; + + close_connection(to_pid, from_pid); +} + +/* report to user the existence of a vgdb-able valgrind process + with given pid */ +static +void report_pid (int pid) +{ + char cmdline_file[100]; + char cmdline[1000]; + int fd; + int i, sz; + + sprintf(cmdline_file, "/proc/%d/cmdline", pid); + fd = open (cmdline_file, O_RDONLY); + if (fd == -1) { + DEBUG(1, "error opening cmdline file %s %s\n", + cmdline_file, strerror(errno)); + sprintf(cmdline, "(could not obtain process command line)"); + } else { + sz = read(fd, cmdline, 1000); + for (i = 0; i < sz; i++) + if (cmdline[i] == 0) + cmdline[i] = ' '; + cmdline[sz] = 0; + } + fprintf(stderr, "use --pid=%d for %s\n", pid, cmdline); + fflush(stderr); +} + +/* Eventually produces additional usage information documenting the + ptrace restrictions. */ +static +void ptrace_restrictions(void) +{ +# ifdef PR_SET_PTRACER + char *ptrace_scope_setting_file = "/proc/sys/kernel/yama/ptrace_scope"; + int fd = -1; + char ptrace_scope = 'X'; + fd = open (ptrace_scope_setting_file, O_RDONLY, 0); + if (fd >= 0 && (read (fd, &ptrace_scope, 1) == 1) && (ptrace_scope != '0')) { + fprintf (stderr, + "Note: your kernel restricts ptrace invoker using %s\n" + "vgdb will only be able to attach to a Valgrind process\n" + "blocked in a system call *after* an initial successful attach\n", + ptrace_scope_setting_file); + } else if (ptrace_scope == 'X') { + fprintf(stderr, "Could not determine ptrace scope from %s\n", + ptrace_scope_setting_file); + } + if (fd >= 0) + close (fd); +# endif + +# ifndef PTRACEINVOKER + fprintf(stderr, + "Note: ptrace invoker not implemented\n" + "For more info: read user manual section" + " 'Limitations of the Valgrind gdbserver'\n"); +# endif +} + +static +void usage(void) +{ + fprintf(stderr, +"Usage: vgdb [OPTION]... [[-c] COMMAND]...\n" +"vgdb (valgrind gdb) has two usages\n" +" 1. standalone to send monitor commands to a Valgrind gdbserver.\n" +" The OPTION(s) must be followed by the command to send\n" +" To send more than one command, separate the commands with -c\n" +" 2. relay application between gdb and a Valgrind gdbserver.\n" +" Only OPTION(s) can be given.\n" +"\n" +" OPTIONS are [--pid=] [--vgdb-prefix=]\n" +" [--max-invoke-ms=] [--wait=] [-d] -D]\n" +" --pid arg must be given if multiple Valgrind gdbservers are found.\n" +" --vgdb-prefix arg must be given to both Valgrind and vgdb utility\n" +" if you want to change the default prefix for the FIFOs communication\n" +" between the Valgrind gdbserver and vgdb.\n" +" --wait arg tells vgdb to check during the specified number\n" +" of seconds if a Valgrind gdbserver can be found.\n" +" --max-invoke-ms gives the nr of milli-seconds after which vgdb will force\n" +" the invocation of the Valgrind gdbserver (if the Valgrind process\n" +" is blocked in a system call).\n" +" -d arg tells to show debug info. Multiple -d args for more debug info\n" +" -D arg tells to show shared mem status and then exit.\n" +"\n" + ); + ptrace_restrictions(); +} + +/* If arg_pid == -1, waits maximum check_trials seconds to discover + a valgrind pid appearing. + Otherwise verify arg_pid is valid and corresponds to a Valgrind process + with gdbserver activated. + + Returns the pid to work with + or exits in case of error (e.g. no pid found corresponding to arg_pid */ + +static +int search_arg_pid(int arg_pid, int check_trials) +{ + int i; + int pid = -1; + + if (arg_pid == 0 || arg_pid < -1) { + fprintf (stderr, "vgdb error: invalid pid %d given\n", arg_pid); + exit (1); + } else { + /* search for a matching named fifo. + If we have been given a pid, we will check that the matching FIFO is + there (or wait the nr of check_trials for this to appear). + If no pid has been given, then if we find only one FIFO, + we will use this to build the pid to use. + If we find multiple processes with valid FIFO, we report them and will + exit with an error. */ + DIR *vgdb_dir; + char *vgdb_dir_name = vmalloc (strlen (vgdb_prefix) + 3); + struct dirent *f; + int is; + int nr_valid_pid = 0; + const char *suffix = "-from-vgdb-to-"; /* followed by pid */ + char *vgdb_format = vmalloc (strlen(vgdb_prefix) + strlen(suffix) + 1); + + strcpy (vgdb_format, vgdb_prefix); + strcat (vgdb_format, suffix); + + strcpy (vgdb_dir_name, vgdb_prefix); + + for (is = strlen(vgdb_prefix) - 1; is >= 0; is--) + if (vgdb_dir_name[is] == '/') { + vgdb_dir_name[is+1] = '\0'; + break; + } + if (strlen(vgdb_dir_name) == 0) + strcpy (vgdb_dir_name, "./"); + + DEBUG(1, "searching pid in directory %s format %s\n", + vgdb_dir_name, vgdb_format); + + /* try to find FIFOs with valid pid. + On exit of the loop, pid is set to: + -1 if no FIFOs matching a running process is found + -2 if multiple FIFOs of running processes are found + otherwise it is set to the (only) pid found that can be debugged + */ + for (i = 0; i < check_trials; i++) { + DEBUG(1, "check_trial %d \n", i); + if (i > 0) + /* wait one second before checking again */ + sleep(1); + + vgdb_dir = opendir (vgdb_dir_name); + if (vgdb_dir == NULL) + XERROR (errno, + "vgdb error: opening directory %s searching vgdb fifo\n", + vgdb_dir_name); + + errno = 0; /* avoid complain if vgdb_dir is empty */ + while ((f = readdir (vgdb_dir))) { + struct stat st; + char pathname[strlen(vgdb_dir_name) + strlen(f->d_name)]; + char *wrongpid; + int newpid; + + strcpy (pathname, vgdb_dir_name); + strcat (pathname, f->d_name); + DEBUG(3, "trying %s\n", pathname); + if (stat (pathname, &st) != 0) { + if (debuglevel >= 3) + ERROR (errno, "vgdb error: stat %s searching vgdb fifo\n", + pathname); + } else if (S_ISFIFO (st.st_mode)) { + DEBUG(3, "trying %s\n", pathname); + if (strncmp (pathname, vgdb_format, + strlen (vgdb_format)) == 0) { + newpid = strtol(pathname + strlen (vgdb_format), + &wrongpid, 10); + if (*wrongpid == '\0' && newpid > 0 + && kill (newpid, 0) == 0) { + nr_valid_pid++; + if (arg_pid != -1) { + if (arg_pid == newpid) { + pid = newpid; + } + } else if (nr_valid_pid > 1) { + if (nr_valid_pid == 2) { + fprintf + (stderr, + "no --pid= arg given" + " and multiple valgrind pids found:\n"); + report_pid (pid); + } + pid = -2; + report_pid (newpid); + } else { + pid = newpid; + } + } + } + } + errno = 0; /* avoid complain if at the end of vgdb_dir */ + } + if (f == NULL && errno != 0) + XERROR (errno, "vgdb error: reading directory %s for vgdb fifo\n", + vgdb_dir_name); + + closedir (vgdb_dir); + if (pid != -1) + break; + } + + free (vgdb_dir_name); + free (vgdb_format); + } + + if (pid == -1) { + if (arg_pid == -1) + fprintf (stderr, "vgdb error: no FIFO found and no pid given\n"); + else + fprintf (stderr, "vgdb error: no FIFO found matching pid %d\n", + arg_pid); + exit (1); + } + else if (pid == -2) { + /* no arg_pid given, multiple FIFOs found */ + exit (1); + } + else { + return pid; + } +} + +/* return true if the numeric value of an option of the + form --xxxxxxxxx= could properly be extracted + from arg. If True is returned, *value contains the + extracted value.*/ +static +Bool numeric_val(char* arg, int *value) +{ + const char *eq_pos = strchr(arg, '='); + char *wrong; + + if (eq_pos == NULL) + return False; + + *value = strtol(eq_pos+1, &wrong, 10); + if (*wrong) + return False; + + return True; +} + +/* true if arg matches the provided option */ +static +Bool is_opt(char* arg, char *option) +{ + int option_len = strlen(option); + if (option[option_len-1] == '=') + return (0 == strncmp(option, arg, option_len)); + else + return (0 == strcmp(option, arg)); +} + +/* Parse command lines options. If error(s), exits. + Otherwise returns the options in *p_... args. + commands must be big enough for the commands extracted from argv. + On return, *p_last_command gives the position in commands where + the last command has been allocated (using vmalloc). */ +static +void parse_options(int argc, char** argv, + Bool *p_show_shared_mem, + int *p_arg_pid, + int *p_check_trials, + int *p_last_command, + char *commands[]) +{ + Bool show_shared_mem = False; + int arg_pid = -1; + int check_trials = 1; + int last_command = -1; + + int i; + int arg_errors = 0; + + for (i = 1; i < argc; i++) { + if (is_opt(argv[i], "--help") || is_opt(argv[i], "-h")) { + usage(); + exit(0); + } else if (is_opt(argv[i], "-d")) { + debuglevel++; + } else if (is_opt(argv[i], "-D")) { + show_shared_mem = True; + } else if (is_opt(argv[i], "--pid=")) { + int newpid; + if (!numeric_val(argv[i], &newpid)) { + fprintf (stderr, "invalid pid argument %s\n", argv[i]); + arg_errors++; + } else if (arg_pid != -1) { + fprintf (stderr, "multiple pid arguments given\n"); + arg_errors++; + } else { + arg_pid = newpid; + } + } else if (is_opt(argv[i], "--wait=")) { + if (!numeric_val(argv[i], &check_trials)) { + fprintf (stderr, "invalid wait argument %s\n", argv[i]); + arg_errors++; + } + } else if (is_opt(argv[i], "--max-invoke-ms=")) { + if (!numeric_val(argv[i], &max_invoke_ms)) { + fprintf (stderr, "invalid max-invoke-ms argument %s\n", argv[i]); + arg_errors++; + } + } else if (is_opt(argv[i], "--vgdb-prefix=")) { + vgdb_prefix = argv[i] + 14; + } else if (is_opt(argv[i], "-c")) { + last_command++; + commands[last_command] = vmalloc (1); + commands[last_command][0] = '\0'; + } else if (0 == strncmp(argv[i], "-", 1)) { + fprintf (stderr, "unknown or invalid argument %s\n", argv[i]); + arg_errors++; + } else { + int len; + if (last_command == -1) { + /* only one command, no -c command indicator */ + last_command++; + commands[last_command] = vmalloc (1); + commands[last_command][0] = '\0'; + } + len = strlen(commands[last_command]); + commands[last_command] = vrealloc (commands[last_command], + len + 1 + strlen(argv[i]) + 1); + if (len > 0) + strcat (commands[last_command], " "); + strcat (commands[last_command], argv[i]); + if (packet_len_for_command(commands[last_command]) > PBUFSIZ) { + fprintf (stderr, "command %s too long\n", commands[last_command]); + arg_errors++; + } + + } + } + if (arg_errors > 0) { + fprintf (stderr, "args error. Try `vgdb --help` for more information\n"); + exit(1); + } + + *p_show_shared_mem = show_shared_mem; + *p_arg_pid = arg_pid; + *p_check_trials = check_trials; + *p_last_command = last_command; +} + +int main(int argc, char** argv) +{ + int i; + int pid; + + Bool show_shared_mem; + int arg_pid; + int check_trials; + int last_command; + char *commands[argc]; // we will never have more commands than args. + + parse_options(argc, argv, + &show_shared_mem, + &arg_pid, + &check_trials, + &last_command, + commands); + + /* when we are working as a relay for gdb, handle some signals by + only reporting them (according to debug level). Also handle these + when ptrace will be used: vgdb must clean up the ptrace effect before + dying. */ + if (max_invoke_ms > 0 || last_command == -1) + install_handlers(); + + pid = search_arg_pid (arg_pid, check_trials); + + prepare_fifos_and_shared_mem(pid); + + if (show_shared_mem) { + fprintf(stderr, + "vgdb %d " + "written_by_vgdb %d " + "seen_by_valgrind %d\n" + "vgdb pid %d\n", + VS_vgdb_pid, + VS_written_by_vgdb, + VS_seen_by_valgrind, + VS_vgdb_pid); + exit (0); + } + + if (last_command >= 0) { + standalone_send_commands(pid, last_command, commands); + } else { + gdb_relay(pid); + } + + + free (from_gdb_to_pid); + free (to_gdb_from_pid); + free (shared_mem); + + for (i = 0; i <= last_command; i++) + free (commands[i]); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10-drd.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10-drd.supp index 385d6c9d8..5e14236da 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10-drd.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10-drd.supp @@ -1,2 +1,156 @@ - # DRD suppressions for Darwin 10.x / Mac OS X 10.6 Snow Leopard + +# +# dyld +# +{ + dyld_mutex_not_locked + drd:MutexErr + fun:pthread_mutex_unlock + fun:_dyld_register_func_for_*_image +} +{ + dyld_mutex_reinitialization + drd:MutexErr + fun:pthread_mutex_init + fun:_Z24dyldGlobalLockInitializev + fun:_dyld_initializer +} +{ + dyld_stub_binder + drd:ConflictingAccess + ... + fun:_ZN4dyld18fastBindLazySymbolEPP11ImageLoaderm + fun:dyld_stub_binder +} +{ + dyld ImageLoaderMachOCompressed::findExportedSymbol(char const*, ImageLoader const**) const + drd:ConflictingAccess + fun:_ZNK26ImageLoaderMachOCompressed18findExportedSymbolEPKcPPK11ImageLoader +} +{ + dyld dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + drd:ConflictingAccess + ... + fun:_ZN4dyld18fastBindLazySymbolEPP11ImageLoaderm +} +{ + dyld ImageLoaderMachOCompressed::doBindFastLazySymbol(unsigned int, ImageLoader::LinkContext const&) + drd:ConflictingAccess + ... + fun:_ZN26ImageLoaderMachOCompressed20doBindFastLazySymbolEjRKN11ImageLoader11LinkContextE +} + +# +# C library +# +{ + __umodti3 + drd:ConflictingAccess + fun:__umodti3 +} +{ + fork() + drd:ConflictingAccess + ... + fun:_cthread_fork_child + fun:fork +} +{ + flockfile + drd:ConflictingAccess + fun:flockfile +} +{ + funlockfile + drd:ConflictingAccess + fun:funlockfile +} +{ + vfprintf_l + drd:ConflictingAccess + fun:vfprintf_l +} +{ + localeconv_l + drd:ConflictingAccess + fun:localeconv_l +} +{ + __vfprintf + drd:ConflictingAccess + fun:__vfprintf +} +{ + fflush + drd:ConflictingAccess + fun:fflush +} +{ + cerror + drd:ConflictingAccess + ... + fun:cerror +} +{ + do_rand + drd:ConflictingAccess + fun:do_rand +} +{ + mig_dealloc_reply_port + drd:ConflictingAccess + fun:mig_dealloc_reply_port +} + +# +# pthread library +# +{ + thread_start + drd:ConflictingAccess + obj:* + fun:thread_start +} +{ + pthread_create() + drd:ConflictingAccess + ... + fun:pthread_create +} +{ + pthread_join() + drd:ConflictingAccess + ... + fun:pthread_join + fun:pthread_join +} +{ + _pthread_exit() + drd:ConflictingAccess + ... + fun:_pthread_exit +} +{ + pthread_detach() + drd:ConflictingAccess + ... + fun:pthread_detach + fun:pthread_detach +} +{ + pthread_kill() + drd:ConflictingAccess + ... + fun:pthread_kill +} +{ + spin_unlock() + drd:ConflictingAccess + fun:spin_unlock +} +{ + _pthread_testcancel() + drd:ConflictingAccess + fun:_pthread_testcancel +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10.supp index f9515a573..d43cb3dc7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin10.supp @@ -5,6 +5,14 @@ # Memcheck ##----------------------------------------------------------------------## +# afaict this is legit. Might be caused by setenv("VAR=") +# where the value string is empty (not sure) +{ + macos-Cond-7 + Memcheck:Cond + fun:__setenv +} + # From Jesse Ruderman. { Mac OS X 10.6.4. rdar://8145289. "new[]" paired with "delete" in the DesktopServicesPriv framework. @@ -19,4 +27,30 @@ Memcheck:Cond fun:_ZN13HIMenuBarView31SetAdjustTextTitleBoundsAtIndexEih fun:_ZN13HIMenuBarView15MeasureAppMenusEv - } +} + +{ + TFontFeatures::TFontFeatures(CGFont*) (in CoreText.framework) + Memcheck:Cond + fun:_ZN13TFontFeaturesC2EP6CGFont + fun:_ZNK9TBaseFont12CopyFeaturesEv +} + +# See https://bugs.kde.org/show_bug.cgi?id=188572 about this; it's +# unavoidable due to BSD setenv() semantics. +{ + macos-__setenv-leak-see-our-bug-188572 + Memcheck:Leak + fun:malloc_zone_malloc + fun:__setenv +} + +{ + libSystem-keymgr-leak-at-exit + Memcheck:Leak + fun:malloc + fun:get_or_create_key_element + fun:_keymgr_get_and_lock_processwide_ptr_2 + fun:__keymgr_initializer + fun:libSystem_initializer +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin9.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin9.supp index d49fcdd5b..f7769c7c5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin9.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/darwin9.supp @@ -187,6 +187,23 @@ fun:_ZNK9TBaseFont12CopyFeaturesEv } +# Conditional jump or move depends on uninitialised value(s) +# at 0x4E5CD59: _DPSNextEvent (in /System/Library/Frameworks +# /AppKit.framework/Versions/C/AppKit) +# by 0x4E5BF87: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] +# (in /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit) +# by 0x4E54F9E: -[NSApplication run] (in /System/Library/Frameworks +# /AppKit.framework/Versions/C/AppKit) +# Uninitialised value was created by a stack allocation +# at 0x4E5C450: _DPSNextEvent (in /System/Library/Frameworks +# /AppKit.framework/Versions/C/AppKit) +{ + macos-_DPSNextEvent-stack-allocated-uninit + Memcheck:Cond + fun:_DPSNextEvent +} + + ##----------------------------------------------------------------------## # Helgrind ##----------------------------------------------------------------------## diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/Makefile.in index 087a43c96..5cbdd3c32 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/Makefile.in @@ -88,6 +88,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -117,12 +119,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/internals/release-HOWTO.txt b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/internals/release-HOWTO.txt index df2152232..bba60fe22 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/internals/release-HOWTO.txt +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/internals/release-HOWTO.txt @@ -130,7 +130,7 @@ For the official release: external for VALGRIND_X_Y_Z to VEX_X_Y_Z. If it's a X.Y.0 release, make "VALGRIND_X_Y_BRANCH" and "VEX_X_Y_BRANCH" - branches too. Useful examples: + branches too. Useful examples (X.Y.0 major release): cd valgrind svn copy trunk tags/VALGRIND_3_3_0 @@ -148,6 +148,20 @@ For the official release: svn propset svn:externals \ "VEX svn://svn.valgrind.org/vex/branches/VEX_3_3_BRANCH" . + (X.Y.Z minor release): + + cd vex + svn copy branches/VEX_3_6_BRANCH tags/VEX_3_6_1 + + cd valgrind + svn copy branches/VALGRIND_3_6_BRANCH tags/VALGRIND_3_6_1 + + cd tags/VALGRIND_3_6_1 + svn propset svn:externals \ + "VEX svn://svn.valgrind.org/vex/tags/VEX_3_6_1" . + + + - Update website: - Put the tarball up. - Update the docs -- both the tarball'd docs, and the online-readable docs. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/FAQ.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/FAQ.xml index 983e02add..af197f856 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/FAQ.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/FAQ.xml @@ -528,8 +528,9 @@ int main(void) "possibly lost" means your program is leaking - memory, unless you're doing funny things with pointers. - This is sometimes reasonable. Use + memory, unless you're doing unusual things with pointers that could + cause them to point into the middle of an allocated block; see the + user manual for some possible causes. Use if you don't want to see these reports. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core-adv.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core-adv.xml index 10929b7ff..4d00ebfcd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core-adv.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core-adv.xml @@ -55,10 +55,10 @@ use the macros in this file. Also, you are not required to link your program with any extra supporting libraries. The code added to your binary has negligible performance impact: -on x86, amd64, ppc32 and ppc64, the overhead is 6 simple integer instructions -and is probably undetectable except in tight loops. -However, if you really wish to compile out the client requests, you can -compile with (analogous to +on x86, amd64, ppc32, ppc64 and ARM, the overhead is 6 simple integer +instructions and is probably undetectable except in tight loops. +However, if you really wish to compile out the client requests, you +can compile with (analogous to 's effect on assert). @@ -106,7 +106,7 @@ tool-specific macros). Alternatively, for transparent self-modifying-code support, use, or run - on ppc32/Linux or ppc64/Linux. + on ppc32/Linux, ppc64/Linux or ARM/Linux. @@ -151,6 +151,15 @@ tool-specific macros). + + VALGRIND_RESIZEINPLACE_BLOCK: + + Informs a Valgrind tool that the size of an allocated block has been + modified but not its address. See valgrind.h for + more information on how to use it. + + + VALGRIND_CREATE_MEMPOOL, @@ -567,7 +576,7 @@ functions and merely replaced functions malloc etc safely from within wrappers. -The above comments are true for {x86,amd64,ppc32}-linux. On +The above comments are true for {x86,amd64,ppc32,arm}-linux. On ppc64-linux function wrapping is more fragile due to the (arguably poorly designed) ppc64-linux ABI. This mandates the use of a shadow stack which tracks entries/exits of both wrapper and replacement @@ -578,7 +587,7 @@ finite size, recursion between wrapper/replacement functions is only possible to a limited depth, beyond which Valgrind has to abort the run. This depth is currently 16 calls. -For all platforms ({x86,amd64,ppc32,ppc64}-linux) all the above +For all platforms ({x86,amd64,ppc32,ppc64,arm}-linux) all the above comments apply on a per-thread basis. In other words, wrapping is thread-safe: each thread must individually observe the above restrictions, but there is no need for any kind of inter-thread diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core.xml index 8a75292d3..8ca935aea 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-core.xml @@ -130,11 +130,11 @@ unaffected by optimisation level, and for profiling tools like Cachegrind it is better to compile your program at its normal optimisation level. Valgrind understands both the older "stabs" debugging format, used -by GCC versions prior to 3.1, and the newer DWARF2 and DWARF3 formats +by GCC versions prior to 3.1, and the newer DWARF2/3/4 formats used by GCC 3.1 and later. We continue to develop our debug-info readers, although the majority of effort will naturally enough go into the newer -DWARF2/3 reader. +DWARF readers. When you're ready to roll, run Valgrind as described above. Note that you should run the real @@ -663,7 +663,7 @@ in most cases. We group the available options by rough categories. - + This option only has an effect when @@ -687,6 +687,20 @@ in most cases. We group the available options by rough categories. + + + + + + This is the same as + , with one difference: + the decision as to whether to trace into a child process is + made by examining the arguments to the child process, rather + than the name of its executable. + + + @@ -706,6 +720,92 @@ in most cases. We group the available options by rough categories. + + + + + + Valgrind will enable its embedded gdbserver if value yes + or full is given. This allows an + external gdb debuggger to debug + your program running under Valgrind. See + for a detailed + description. + + + If the embedded gdbserver is enabled but no gdb is + currently being used, the + command line utility can send "monitor commands" to Valgrind + from a shell. The Valgrind core provides a set of + . A tool + can optionally provide tool specific monitor commands, which are + documented in the tool specific chapter. + + + The value 'full' has a significant overhead + + + + + + + + + + Use this option when the Valgrind gdbserver is enabled with + yes or full value. Tools that report + errors will invoke the embedded gdbserver for each error above + number. The value 0 will cause gdbserver to be invoked before + executing your program. This is typically used to insert gdb + breakpoints before execution, and will also work with tools that + do not report errors, such as Massif. + + + + + + + + + + Valgrind will enable its embedded gdbserver if value yes + or full is given. This allows an + external gdb debuggger to debug + your program running under Valgrind. See + for a detailed + description. + + + If the embedded gdbserver is enabled but no gdb is + currently being used, the + command line utility can send "monitor commands" to Valgrind + from a shell. The Valgrind core provides a set of + . A tool + can optionally provide tool specific monitor commands, which are + documented in the tool specific chapter. + + + The value 'full' has a significant overhead + + + + + + + + + + Use this option when the Valgrind gdbserver is enabled with + yes or full value. Tools that report + errors will invoke the embedded gdbserver for each error above + number. The value 0 will cause gdbserver to be invoked before + executing your program. This is typically used to insert gdb + breakpoints before execution, and will also work with tools that + do not report errors, such as Massif. + + + + @@ -997,6 +1097,57 @@ that can report errors, e.g. Memcheck, but not Cachegrind. + + + + + + By default Valgrind only shows the filenames in stack + traces, but not full paths to source files. When using Valgrind + in large projects where the sources reside in multiple different + directories, this can be inconvenient. + provides a flexible solution + to this problem. When this option is present, the path to each + source file is shown, with the following all-important caveat: + if is found in the path, then the path + up to and including is omitted, else the + path is shown unmodified. Note that is + not required to be a prefix of the path. + + For example, consider a file named + /home/janedoe/blah/src/foo/bar/xyzzy.c. + Specifying + will cause Valgrind to show the name + as foo/bar/xyzzy.c. + + Because the string is not required to be a prefix, + will produce the same + output. This is useful when the path contains arbitrary + machine-generated characters. For example, the + path + /my/build/dir/C32A1B47/blah/src/foo/xyzzy + can be pruned to foo/xyzzy + using + . + + If you simply want to see the full path, just specify an + empty string: . This isn't a + special case, merely a logical consequence of the above rules. + + Finally, you can use + multiple times. Any appearance of it causes Valgrind to switch + to producing full paths and applying the above filtering rule. + Each produced path is compared against all + the -specified strings, in the + order specified. The first string to match causes the path to + be truncated as described above. If none match, the full path + is shown. This facilitates chopping off prefixes when the + sources are drawn from a number of unrelated directories. + + + + @@ -1075,6 +1226,20 @@ that can report errors, e.g. Memcheck, but not Cachegrind. debugger, quit from it, and the program will continue. Trying to continue from inside the debugger doesn't work. + + Note : if you use gdb, a more powerful debugging support is + provided by the yes or full value, + allowing among others to insert breakpoints, continue from + inside the debugger, etc. + + + + Note : if you use gdb, a more powerful debugging support is + provided by the yes or full value, + allowing among others to insert breakpoints, continue from + inside the debugger, etc. + + C Ret or c Ret causes Valgrind not to start a debugger, and not to ask again. @@ -1184,7 +1349,7 @@ that can report errors, e.g. Memcheck, but not Cachegrind. Be careful when using , since it will cause pre-existing .dSYM - directories to be silently deleted and re-created. Also note the + directories to be silently deleted and re-created. Also note that dsymutil is quite slow, sometimes excessively so. @@ -1287,7 +1452,7 @@ that can report errors, e.g. Memcheck, but not Cachegrind. -<computeroutput>malloc</computeroutput>-related Options +malloc-related Options For tools that use their own version of @@ -1339,13 +1504,13 @@ need to use these. will likely lead to incorrect behaviour and/or crashes. Valgrind has three levels of self-modifying code detection: - no detection, detect self-modifying code on the stack (which used by + no detection, detect self-modifying code on the stack (which is used by GCC to implement nested functions), or detect self-modifying code everywhere. Note that the default option will catch the vast majority of cases. The main case it will not catch is programs such as JIT compilers that dynamically generate code and subsequently overwrite part or all of it. Running with - all will slow Valgrind down greatly. Running with + all will slow Valgrind down noticeably. Running with none will rarely speed things up, since very little code gets put on the stack for most programs. The VALGRIND_DISCARD_TRANSLATIONS client request is @@ -1357,11 +1522,11 @@ need to use these. --> - Some architectures (including ppc32 and ppc64) require + Some architectures (including ppc32, ppc64 and ARM) require programs which create code at runtime to flush the instruction cache in between code generation and first use. Valgrind - observes and honours such instructions. Hence, on ppc32/Linux - and ppc64/Linux, Valgrind always provides complete, transparent + observes and honours such instructions. Hence, on ppc32/Linux, + ppc64/Linux and ARM/Linux, Valgrind always provides complete, transparent support for self-modifying code. It is only on platforms such as x86/Linux, AMD64/Linux and x86/Darwin that you need to use this option. @@ -1408,6 +1573,108 @@ need to use these. + + + + + + As part of its main loop, the Valgrind scheduler will + poll to check if some activity (such as an external command or + some input from a gdb) has to be handled by gdbserver. This + activity poll will be done after having run the given number of + basic blocks (or slightly more than the given number of basic + blocks). This poll is quite cheap so the default value is set + relatively low. You might further decrease this value if vgdb + cannot use ptrace system call to interrupt Valgrind if all + threads are (most of the time) blocked in a system call. + + GDBTD??? unclear why we have sometimes slightly more BB: + it seems that from time to time, some BB are run outside of + run_thread_for_a_while. Maybe this is due to block chasing ? I + do not think this is a problem, as I never saw more than a few + additional basic blocks being run without being visible in the + blocks executed by run_thread_for_a_while. + + + + + + + + + + When activated, gdbserver will expose the Valgrind shadow registers + to gdb. With this, the value of the Valgrind shadow registers can be examined + or changed using gdb. Exposing shadows registers only works with a gdb version + >= 7.1. + + + + + + + + + + To communicate with gdb/vgdb, the Valgrind gdbserver + creates 3 files (2 named FIFOs and a mmap shared memory + file). The prefix option controls the directory and prefix for + the creation of these files. + + + + + + + + + + As part of its main loop, the Valgrind scheduler will + poll to check if some activity (such as an external command or + some input from a gdb) has to be handled by gdbserver. This + activity poll will be done after having run the given number of + basic blocks (or slightly more than the given number of basic + blocks). This poll is quite cheap so the default value is set + relatively low. You might further decrease this value if vgdb + cannot use ptrace system call to interrupt Valgrind if all + threads are (most of the time) blocked in a system call. + + GDBTD??? unclear why we have sometimes slightly more BB: + it seems that from time to time, some BB are run outside of + run_thread_for_a_while. Maybe this is due to block chasing ? I + do not think this is a problem, as I never saw more than a few + additional basic blocks being run without being visible in the + blocks executed by run_thread_for_a_while. + + + + + + + + + + When activated, gdbserver will expose the Valgrind shadow registers + to gdb. With this, the value of the Valgrind shadow registers can be examined + or changed using gdb. Exposing shadows registers only works with a gdb version + >= 7.1. + + + + + + + + + + To communicate with gdb/vgdb, the Valgrind gdbserver + creates 3 files (2 named FIFOs and a mmap shared memory + file). The prefix option controls the directory and prefix for + the creation of these files. + + + + @@ -1565,6 +1832,13 @@ need to use these. Valgrind itself. You shouldn't need to use them in the normal run of things. If you wish to see the list, use the option. + +If you wish to debug your program rather than debugging +Valgrind itself, then you should use the options + or +or . + + @@ -1627,7 +1901,876 @@ don't understand + +Debugging your program using Valgrind gdbserver and gdb + +A program running under Valgrind is not executed directly by the +CPU. It rather runs on a synthetic CPU provided by Valgrind. This is +why a debugger cannot debug your program under Valgrind the usual way. + + +This section describes the special way gdb can interact with the +Valgrind gdbserver to provide a fully debuggable program under +Valgrind. Used in this way, gdb also provides an interactive usage of +Valgrind core or tool functionalities (such as incremental leak search +under Memcheck, on-demand Massif snapshot production, ...). + + + +Quick Start : debugging in 3 steps + +If you want to debug a program with gdb when using Memcheck +tool, start Valgrind the following way: + + +In another window, start a gdb the following way: + + +Then give the following command to gdb: + + +You can now debug your program e.g. by inserting a breakpoint +and then using the gdb 'continue' command. + + The above quick start is enough for a basic usage of the +Valgrind gdbserver. Read the sections below to learn about the +advanced functionalities provided by the combination of Valgrind and +gdb. Note that the option --vgdb=yes can be omitted, as this is the +default value. + + + + + +Valgrind gdbserver concept +The gdb debugger is typically used to debug a process running on +the same machine : gdb uses system calls to do actions such as read +the values of the process variables or registers. This technique only +allows gdb to debug a program running on the same computer. + + +Gdb can also debug processes running on a different computer. +For this, gdb defines a protocol (i.e. a set of query and reply +packets) that allows to e.g. fetch the value of memory or registers, +to set breakpoints, etc. A gdbserver is an implementation of this +'gdb remote debugging' protocol. To debug a process running on a +remote computer, a gdbserver (sometimes also called a gdb stub) must +run at the remote computer side. + + +The Valgrind core integrates an embedded gdbserver +implementation, which is activated using +or . This gdbserver allows the process +running on the Valgrind synthetic CPU to be debugged 'remotely' by gdb +: gdb sends protocol query packets (such as 'get registers values') to +the Valgrind embedded gdbserver. The embedded gdbserver executes the +queries (for example, it will get the registers values of the +synthetic CPU) and give the result back to gdb. + + + Gdb can use various ways (tcp/ip, serial line, ...) to send and +receive the remote protocol packets to a gdbserver. In the case of the +Valgrind gdbserver, gdb communicates using a pipe and the + command as a relay application. If +no gdb is currently being used, vgdb can also be used to send monitor +commands to the Valgrind gdbserver from the shell command line. + + + + + +Connecting gdb to a Valgrind gdbserver +To debug a program prog running under +Valgrind, ensures that the Valgrind gdbserver is activated +(i.e. --vgdb=yes or --vgdb=full). The option + ]]> can be used to ask an invocation of +the gdbserver for each error above number. A zero value will cause an +invocation of the Valgrind gdbserver at startup, allowing to insert +breakpoints before starting the execution. Example: + + +With the above command, the Valgrind gdbserver is invoked at startup +and indicates it is waiting for a connection from a gdb: + + + + +A gdb in another window can then be connected to the Valgrind gdbserver. +For this, gdb must be started on the program prog: + + + +You then indicate to gdb that a remote target debugging is to be done: + +gdb then starts a vgdb relay application to communicate with the +Valgrind embedded gdbserver: + + + + In case vgdb detects that multiple Valgrind gdbserver can be connected +to, it will exit after reporting the list of the debuggable Valgrind +processes and their PIDs. You can then relaunch the gdb 'target' command, but +specifying the process id of the process you want to debug: + + + + +Once gdb is connected to the Valgrind gdbserver, gdb can be used +similarly to a native debugging session: + + + Breakpoints can be inserted or deleted. + + + Variables and registers values can be examined or modified. + + + + Signal handling can be configured (printing, ignoring, ...). + + + + Execution can be controlled (continue, step, next, stepi, ...). + + + + Program execution can be interrupted using Control-C. + + + ... + + + + Refer to the gdb user manual for a complete list of gdb functionalities. + + + + + +Monitor command handling by the Valgrind gdbserver + + The Valgrind gdbserver provides a set of additional specific +functionalities through "monitor commands". Such monitor commands can +be sent from the gdb command line or from the shell command line. See + for the list +of the Valgrind core monitor commands. + + + Each tool can also provide tool specific monitor commands. An +example of a tool specific monitor command is the Memcheck monitor +command mc.leak_check any full +reachable. This requests a full reporting of the +allocated memory blocks. To have this leak check executed, use the gdb +command: + + + + gdb will send the mc.leak_check command to the Valgrind gdbserver. The +Valgrind gdbserver will either execute the monitor command itself (if +it recognises a Valgrind core monitor command) or let the tool execute the +tool specific monitor commands: + + + + Like for the gdb commands, the Valgrind gdbserver will accept +abbreviated monitor command names and arguments, as long as the given +abbreviation is non ambiguous. For example, the above mc.leak_check +command can also be typed as: + + +The letters mo are recognised by gdb as being +monitor. So, gdb sends the +string mc.l a f r to the Valgrind +gdbserver. The letters provided in this string are unambiguous for the +Valgrind gdbserver. So, this will give the same output as the non +abbreviated command and arguments. If the provided abbreviation is +ambiguous, the Valgrind gdbserver will report the list of commands (or +argument values) that can match: + + + Instead of sending a monitor command from gdb, you can also +send these from a shell command line. For example, the below command lines +given in a shell will cause the same leak search to be executed by the +process 3145: + + +Note that the Valgrind gdbserver automatically continues the +execution of the program after a standalone invocation of +vgdb. Monitor commands sent from gdb do not cause the program to +continue: the program execution is controlled explicitely using gdb +commands such as 'continue' or 'next'. + + + + +Valgrind gdbserver thread info + + The Valgrind gdbserver enriches the output of the +gdb info threads with Valgrind +specific information. The operating system thread number is followed +by the Valgrind 'tid' and the Valgrind scheduler thread state: + + + + + + +Examining and modifying Valgrind shadow registers + + When the option is +given, the Valgrind gdbserver will let gdb examine and/or modify the +Valgrind shadow registers. A gdb version >= 7.1 is needed for this +to work. + + For each CPU register, the Valgrind core maintains two +shadow registers. These shadow registers can be accessed from +gdb by giving a postfix s1 or s2 for respectively the first +and second shadow registers. As an example, the x86 register +eax and its two shadow +registers can be examined using the following commands: + + + + + + + +Limitations of the Valgrind gdbserver + +Debugging with the Valgrind gdbserver is very similar to native +debugging. The implementation of the Valgrind gdbserver is quite +complete, and so provides most of the gdb debugging facilities. There +are however some limitations or particularities described in details +in this section: + + + Precision of 'stopped at instruction'. + Gdb commands such as 'step', 'next', 'stepi', breakpoints, + watchpoints, ... will stop the execution of the process. With + the option --vgdb=yes, the process might not stop at the exact + instruction needed. Instead, it might continue execution of the + current block and stop at one of the following blocks. This is + linked to the fact that Valgrind gdbserver has to instrument a + block to allow stopping at the exact instruction requested. + Currently, re-instrumenting the current block being executed is + not supported. So, if the action requested by gdb (e.g. single + stepping or inserting a breakpoint) implies to re-instrument the + current block, the gdb action might not be executed precisely. + + This limitation will be triggered when the current block + being executed has not (yet) been instrumented for debugging. + This typically happens when the gdbserver is activated due to the + tool reporting an error or to a watchpoint. If the gdbserver + block has been activated following a breakpoint (or if a + breakpoint has been inserted in the block before its execution), + then the block has already been instrumented for debugging. + + If you use the option --vgdb=full, then gdb 'stop actions' + will always be obeyed precisely, but this implies that each + instruction will be instrumented with an additional call to a + gdbserver helper function, which implies some overhead compared + to --vgdb=no. Option --vgdb=yes has neglectible overhead compared + to --vgdb=no. + + + + + Hardware watchpoint support by the Valgrind + gdbserver. + + The Valgrind gdbserver can simulate hardware watchpoints + (but only if the tool provides the support for this). Currently, + only Memcheck provides hardware watchpoint simulation. The + hardware watchpoint simulation provided by Memcheck is much + faster that gdb software watchpoints (which are implemented by + gdb checking the value of the watched zone(s) after each + instruction). Hardware watchpoint simulation also provides read + watchpoints. The hardware watchpoint simulation by Memcheck has + some limitations compared to the real hardware + watchpoints. However, the number and length of simulated + watchpoints are not limited. + + Typically, the number of (real) hardware watchpoint is + limited. For example, the x86 architecture supports a maximum of + 4 hardware watchpoints, each watchpoint watching 1, 2, 4 or 8 + bytes. The Valgrind gdbserver does not have a limitation on the + number of simulated hardware watchpoints. It also has no + limitation on the length of the memory zone being + watched. However, gdb currently does not (yet) understand that + Valgrind gdbserver watchpoints have no length limit. A gdb patch + providing a command 'set remote hardware-watchpoint-length-limit' + has been developped. The integration of this patch in gdb would + allow to fully use the flexibility of the Valgrind gdbserver + simulated hardware watchpoints (is there a gdb developper reading + this ?). + + Memcheck implements hardware watchpoint simulation by + marking the watched zone(s) as being unaddressable. In case a + hardware watchpoint is removed, the zone is marked as addressable + and defined. Hardware watchpoint simulation of addressable + undefined memory zones will properly work, but will have as a + side effect to mark the zone as defined when the watchpoint is + removed. + Write watchpoints might not be reported at the instruction + which is modifying the value unless option --vgdb=full is + given. Read watchpoints will always be reported at the exact + instruction reading the watched memory. + It is better to avoid using hardware watchpoint of not + addressable (yet) memory: in such a case, gdb will fallback to + extremely slow software watchpoints. Also, if you do not quit gdb + between two debugging sessions, the hardware watchpoints of the + previous sessions will be re-inserted as software watchpoints if + the watched memory zone is not addressable at program startup. + + + + + Stepping inside shared libraries on ARM. + For a not (yet?) clear reason, stepping inside a shared + library on ARM might fail. The bypass is to use the ldd command + to find the list of shared libraries and their loading address + and inform gdb of the loading address using the gdb command + 'add-symbol-file'. Example (for a ./p executable): + /lib/libc.so.6 (0x4002c000) + /lib/ld-linux.so.3 (0x40000000) +(gdb) add-symbol-file /lib/libc.so.6 0x4002c000 +add symbol table from file "/lib/libc.so.6" at + .text_addr = 0x4002c000 +(y or n) y +Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done. +(gdb) +]]> + + + + + gdb version needed for ARM and PPC32/64. + You must use a gdb version which is able to read XML + target description sent by gdbserver (this is the standard setup + if the gdb was configured on a computer with the expat + library). If your gdb was not configured with XML support, it + will report an error message when using the target + command. Debugging will not work because gdb will then not be + able to fetch the registers from the Valgrind gdbserver. + + + + + Stack unwinding on PPC32/PPC64. + On PPC32/PPC64, stack unwinding for leaf functions + (i.e. functions not calling other functions) does work properly + only with . + You must also pass this option to have a precise stack when + a signal is trapped by gdb. + + + + + Breakpoint encountered multiple times. + Some instructions (e.g. the x86 "rep movsb") + are translated by Valgrind using a loop. If a breakpoint is placed + on such an instruction, the breakpoint will be encountered + multiple times (i.e. once for each step of the "implicit" loop + implementing the instruction). + + + + + Execution of Inferior function calls by the Valgrind + gdbserver. + + gdb allows the user to "call" functions inside the process + being debugged. Such calls are named 'Inferior calls' in the gdb + terminology. A typical usage of an 'Inferior call' is to execute + a function that outputs a readable image of a complex data + structure. To make an Inferior call, use the gdb 'print' command + followed by the function to call and its arguments. As an + example, the following gdb command causes an Inferior call to the + libc printf function to be executed by (and inside) the process + being debugged: + + + + The Valgrind gdbserver accepts Inferior function + calls. During Inferior calls, the Valgrind tool will report + errors as usual. If you do not want to have such errors stopping + the execution of the Inferior call, you can use 'vg.set + vgdb-error' to set a big value before the call, and reset the + value after the Inferior call. + + To execute Inferior calls, gdb changes registers such as + the program counter, and then continues the execution of the + program. In a multi-thread program, all threads are continued, + not only the thread instructed to make an Inferior call. If + another thread reports an error or encounters a break, the + evaluation of the Inferior call is abandonned. + + Note that Inferior function calls is a powerful gdb + functionality but it has to be used with caution. For example, if + the program being debugged is stopped inside the function printf, + 'forcing' a recursive call to printf via an Inferior call will + very probably create problems. The Valgrind tool might also add + another level of complexity to Inferior calls, e.g. by reporting + tool errors during the Inferior call or due to the + instrumentation done. + + + + + + Connecting to or interrupting a Valgrind process blocked in + a system call. + + Connecting to or interrupting a Valgrind process blocked + in a system call is depending on ptrace system call, which might + be disabled on your kernel. + + At regular interval, after having executed some basic + blocks, the Valgrind scheduler checks if some input is to be + handled by the Valgrind gdbserver. However, this check is only + done if at least one thread of the process is executing (enough) + basic blocks. If all the threads of the process are blocked in a + system call, then no basic blocks are being executed, and the + Valgrind scheduler will not invoke the Valgrind gdbserver. In + such a case, the vgdb relay application will 'force' the Valgrind + gdbserver to be invoked, without the intervention of the Valgrind + scheduler. + + + Such forced invocation of the Valgrind gdbserver is + implemented by vgdb using ptrace system calls. On a properly + implemented kernel, the ptrace calls done by vgdb will not + influence the behaviour of the program running under Valgrind. In + case of unexpected impact, giving the option --max-invoke-ms=0 to + the vgdb relay application will disable the usage of ptrace + system call. The consequence of disabling ptrace system call in + vgdb is that a Valgrind process blocked in a system call cannot + be waken up or interrupted from gdb till it executes (enough) + basic blocks to let the scheduler poll invoke the gdbserver.. + + When ptrace is disabled in vgdb, you might increase the + responsiveness of the Valgrind gdbserver to commands or + interrupts by giving a lower value to the option --vgdb-poll: if + your application is most of the time blocked in a system call, + using a very low value for vgdb-poll will cause a faster + invocation of gdbserver. As the gdbserver poll done by the + scheduler is very efficient, the more frequent check by the + scheduler should not cause significant performance degradation. + + When ptrace is disabled in vgdb, a query packet sent by gdb + might take a significant time to be handled by the Valgrind + gdbserver. In such a case, gdb might encounter a protocol + timeout. To avoid having gdb encountering such a timeout error, + you can increase the value of this timeout by using the gdb + command 'set remotetimeout'. + + + Ubuntu version >= 10.10 can also restrict the scope of + ptrace to the children of the process calling ptrace. As the + Valgrind process is not a child of vgdb, such restricted scope + causes ptrace system call to fail. To avoid that, when Valgrind + gdbserver receives the first packet from a vgdb, it calls + prctl(PR_SET_PTRACER, vgdb_pid, 0, 0, 0) to ensure vgdb can use + ptrace. Once vgdb_pid has been set as ptracer, vgdb can then + properly force the invocation of Valgrind gdbserver when + needed. To ensure the vgdb is set as ptracer before the Valgrind + process could be blocked in a system call, connect your gdb to + the Valgrind gdbserver at startup (i.e. use --vgdb-error=0). + Note that this 'set ptracer' is not solving the problem for the + connection of a standalone vgdb: the first command to be sent by + a standalone vgdb must wake up the Valgrind process before + Valgrind gdbserver will set vgdb as ptracer. + + + Unblocking a process blocked in a system call is + not implemented on Darwin. So, waiting for vgdb on Darwin to + be enhanced, you cannot connect/interrupt a process blocked + in a system call on Darwin. + + + + + + Changing registers of a thread. + The Valgrind gdbserver only accepts to modify the values + of the registers of a thread when the thread is in status + Runnable or Yielding. In other states (typically, WaitSys), changing + registers values will not be accepted. This among others ensures + that Inferior calls are not executed for a thread which is in a + system call : the Valgrind gdbserver does not implement system + call restart. + + + + + gdb functionalities not supported. + gdb provides an awful lot of debugging functionalities. + At least the following are not supported: reversible debugging, + tracepoints. + + + + + Unknown limitations or problems. + The combination of gdb, Valgrind and the Valgrind + gdbserver has for sure some still unknown other + limitations/problems but we do not know about these unknown + limitations/problems :). If you encounter such (annoying) + limitations or problems, feel free to report a bug. But first + verify if the limitation or problem is not inherent to gdb or the + gdb remote protocol e.g. by checking the behaviour with the + standard gdbserver part of the gdb package. + + + + + + + + + + +vgdb command line options + Usage: vgdb [OPTION]... [[-c] COMMAND]... + + vgdb (Valgrind to gdb) has two usages: + + + As a standalone utility, it is used from a shell command + line to send monitor commands to a process running under + Valgrind. For this usage, the vgdb OPTION(s) must be followed by + the monitor command to send. To send more than one command, + separate them with the -c option. + + + + + In combination with gdb 'target remote |' command, it is + used as the relay application between gdb and the Valgrind + gdbserver. For this usage, only OPTION(s) can be given, no + command can be given. + + + + + +vgdb accepts the following +options: + + + : specifies the pid of + the process to which vgdb must connect to. This option is useful + in case more than one Valgrind gdbserver can be connected to. If + --pid argument is not given and multiple Valgrind gdbserver + processes are running, vgdb will report the list of such processes + and then exit. + + + + must be given to both + Valgrind and vgdb utility if you want to change the default prefix + for the FIFOs communication between the Valgrind gdbserver and + vgdb. + + + + gives the + number of milli-seconds after which vgdb will force the invocation + of gdbserver embedded in valgrind. Default value is 100 + milli-seconds. A value of 0 disables the forced invocation. + + + If you specify a big value here, you might need to increase + the gdb remote timeout. The default value of the gdb remotetimeout + is 2 seconds. You should ensure that the gdb remotetimeout (in + seconds) is bigger than the max-invoke-ms value. For example, for + a 5000 --max-invoke-ms, the following gdb command will set a value + big enough: + + + + + + instructs vgdb to + check during the specified number of seconds if a Valgrind + gdbserver can be found. This allows to start a vgdb before the + Valgrind gdbserver is started. This option will be more useful in + combination with a --vgdb-prefix unique for the process you want + to wait for. Also, if you use the --wait argument in the gdb + 'target remote' command, you must set the gdb remotetimeout to a + value bigger than the --wait argument value. See option + --max-invoke-ms for an example of setting this remotetimeout + value. + + + + To give more than one command, separate + the commands by an option -c. Example: + + + + + instructs vgdb to produce debugging + output. Give multiple -d args for more debug info. + + + + instructs vgdb to show the state of the + shared memory used by the Valgrind gdbserver. vgdb will exit after + having shown the Valgrind gdbserver shared memory state. + + + + instructs vgdb to report the list of + the Valgrind gdbserver processes running and then exit. + + + + + + + +Valgrind monitor commands + +The Valgrind monitor commands are available whatever the +tool. They can be sent either from a shell command line (using a +standalone vgdb) or from gdb (using the gdb 'monitor' command). + + + + help [debug] instructs Valgrind gdbserver + to give the list of all monitor commands of the Valgrind core and + of the tool. The optional 'debug' argument tells to also give help + for the monitor commands aimed at Valgrind internals debugging. + + + + + vg.info all_errors shows all errors found + so far. + + + vg.info last_error shows the last error + found. + + + + vg.info n_errs_found shows the nr of + errors found so far and the current value of the --vgdb-error + argument. + + + + vg.set {gdb_output | log_output | + mixed_output} allows to redirect the Valgrind output + (e.g. the errors detected by the tool). By default, the setting is + mixed_output. + + With mixed_output, the Valgrind output goes to the Valgrind + log (typically stderr) while the output of the interactive gdb + monitor commands (e.g. vg.info last_error) is displayed by + gdb. + + With gdb_output, both the Valgrind output and the + interactive gdb monitor commands output is displayed by + gdb. + + With log_output, both the Valgrind output and the + interactive gdb monitor commands output go to the Valgrind + log. + + + + vg.wait [ms (default 0)] instructs + Valgrind gdbserver to sleep 'ms' milli-seconds and then + continue. When sent from a standalone vgdb, if this is the last + command, the Valgrind process will continue the execution of the + guest process. The typical usage of this is to use vgdb to send a + "no-op" command to a Valgrind gdbserver so as to continue the + execution of the guess process. + + + + + vg.kill; requests the gdbserver to kill + the process. This can be used from a standalone vgdb to properly + kill a Valgrind process which is currently expecting a vgdb + connection. + + + + vg.set vgdb-error <errornr> + dynamically changes the value of the --vgdb-error argument. A + typical usage of this is to start with --vgdb-error=0 on the + command line, then set a few breakpoints, set the vgdb-error value + to a huge value and continue execution. + + + + +The below Valgrind monitor commands are useful to investigate +the behaviour of Valgrind or Valgrind gdbserver in case of problem or +bug. + + + + + vg.info gdbserver_status shows the + gdbserver status. In case of problem (e.g. of communications), + this gives the value of some relevant Valgrind gdbserver internal + variables. Note that the variables related to breakpoints and + watchpoints (e.g. the nr of gdbserved addresses and the nr of + watchpoints) will be zero, as gdb by default removes all + watchpoints and breakpoints when execution stops, and re-inserts + them when resuming the execution of the debugged process. You can + change this gdb behaviour by using the gdb command 'set breakpoint + always-inserted on'. + + + + + vg.info memory shows the statistics of + the Valgrind heap management. If + option was given, detailed + statistics will be output. + + + + + vg.set debuglog <intvalue> sets the + valgrind debug log level to <intvalue>. This allows to + dynamically change the log level of Valgrind e.g. when a problem + is detected. + + + + vg.translate <address> + [<traceflags>] traces the translation of the block + containing address with the given trace flags. The traceflags is a + bit pattern similar to the --trace-flags option. It can be given + in hexadecimal (e.g. 0x20) or decimal (e.g. 32) or in binary 1s + and 0s bit (e.g. 0b00100000). The default value of the traceflags + is 0b00100000, corresponding to 'show after instrumentation'. Note + that the output of this command always goes to the Valgrind + log. The additional bit flag 0b100000000 traces in addition the + gdbserver specific instrumentation. Note that bit can only enable + the addition of the gdbserver instrumentation in the trace. + Keeping this flag to 0 will not disable the tracing of the + gdbserver instrumentation if it is active for another reason + (e.g. because there is a breakpoint at this address or because + gdbserver is in single stepping mode). + + + + + Support for Threads @@ -1660,8 +2803,7 @@ tools Helgrind and/or DRD to track them down. futex and so on. clone is supported where either everything is shared (a thread) or nothing is shared (fork-like); partial -sharing will fail. Again, any use of atomic instruction sequences in shared -memory between processes will not work reliably. +sharing will fail. @@ -1705,16 +2847,15 @@ will create a core dump in the usual way. We use the standard Unix ./configure, make, make -install mechanism, and we have attempted to -ensure that it works on machines with kernel 2.4 or 2.6 and glibc -2.2.X to 2.10.X. Once you have completed +install mechanism. Once you have completed make install you may then want to run the regression tests with make regtest. -There are five options (in addition to the usual - which affect how Valgrind is built: +In addition to the usual +, there are three + options which affect how Valgrind is built: @@ -1726,25 +2867,17 @@ with make regtest. - - - TLS (Thread Local Storage) is a relatively new mechanism which - requires compiler, linker and kernel support. Valgrind tries to - automatically test if TLS is supported and if so enables this option. - Sometimes it cannot test for TLS, so this option allows you to - override the automatic test. - - - On 64-bit - platforms (amd64-linux, ppc64-linux), Valgrind is by default built - in such a way that both 32-bit and 64-bit executables can be run. - Sometimes this cleverness is a problem for a variety of reasons. - These two options allow for single-target builds in this situation. - If you issue both, the configure script will complain. Note they - are ignored on 32-bit-only platforms (x86-linux, ppc32-linux). + On 64-bit platforms (amd64-linux, ppc64-linux, + amd64-darwin), Valgrind is by default built in such a way that + both 32-bit and 64-bit executables can be run. Sometimes this + cleverness is a problem for a variety of reasons. These two + options allow for single-target builds in this situation. If you + issue both, the configure script will complain. Note they are + ignored on 32-bit-only platforms (x86-linux, ppc32-linux, + arm-linux, x86-darwin). @@ -1808,29 +2941,45 @@ subject to the following constraints: - On x86 and amd64, there is no support for 3DNow! instructions. - If the translator encounters these, Valgrind will generate a SIGILL - when the instruction is executed. Apart from that, on x86 and amd64, - essentially all instructions are supported, up to and including SSSE3. + On x86 and amd64, there is no support for 3DNow! + instructions. If the translator encounters these, Valgrind will + generate a SIGILL when the instruction is executed. Apart from + that, on x86 and amd64, essentially all instructions are supported, + up to and including SSE4.2 in 64-bit mode and SSSE3 in 32-bit mode. + Some exceptions: SSE4.2 AES instructions are not supported in + 64-bit mode, and 32-bit mode does in fact support the bare minimum + SSE4 instructions to needed to run programs on MacOSX 10.6 on + 32-bit targets. - On ppc32 and ppc64, almost all integer, floating point and Altivec - instructions are supported. Specifically: integer and FP insns that are - mandatory for PowerPC, the "General-purpose optional" group (fsqrt, fsqrts, - stfiwx), the "Graphics optional" group (fre, fres, frsqrte, frsqrtes), and - the Altivec (also known as VMX) SIMD instruction set, are supported. + On ppc32 and ppc64, almost all integer, floating point and + Altivec instructions are supported. Specifically: integer and FP + insns that are mandatory for PowerPC, the "General-purpose + optional" group (fsqrt, fsqrts, stfiwx), the "Graphics optional" + group (fre, fres, frsqrte, frsqrtes), and the Altivec (also known + as VMX) SIMD instruction set, are supported. Also, instructions + from the Power ISA 2.05 specification, as present in POWER6 CPUs, + are supported. + + + + On ARM, essentially the entire ARMv7-A instruction set + is supported, in both ARM and Thumb mode. ThumbEE and Jazelle are + not supported. NEON and VFPv3 support is fairly complete. ARMv6 + media instruction support is mostly done but not yet complete. + If your program does its own memory management, rather than using malloc/new/free/delete, it should still work, but Memcheck's - error checking won't be so effective. If you describe your program's - memory management scheme using "client requests" - (see ), Memcheck can do - better. Nevertheless, using malloc/new and free/delete is still the - best approach. + error checking won't be so effective. If you describe your + program's memory management scheme using "client requests" (see + ), Memcheck can do + better. Nevertheless, using malloc/new and free/delete is still + the best approach. @@ -1851,25 +3000,32 @@ subject to the following constraints: - Memory consumption of your program is majorly increased whilst - running under Valgrind. This is due to the large amount of - administrative information maintained behind the scenes. Another - cause is that Valgrind dynamically translates the original - executable. Translated, instrumented code is 12-18 times larger than - the original so you can easily end up with 50+ MB of translations - when running (eg) a web browser. + Memory consumption of your program is majorly increased + whilst running under Valgrind's Memcheck tool. This is due to the + large amount of administrative information maintained behind the + scenes. Another cause is that Valgrind dynamically translates the + original executable. Translated, instrumented code is 12-18 times + larger than the original so you can easily end up with 100+ MB of + translations when running (eg) a web browser. Valgrind can handle dynamically-generated code just fine. If - you regenerate code over the top of old code (ie. at the same memory - addresses), if the code is on the stack Valgrind will realise the - code has changed, and work correctly. This is necessary to handle - the trampolines GCC uses to implemented nested functions. If you - regenerate code somewhere other than the stack, you will need to use - the option, and Valgrind will run more - slowly than normal. Or you can add client requests that tell Valgrind - when your program has overwritten code. + you regenerate code over the top of old code (ie. at the same + memory addresses), if the code is on the stack Valgrind will + realise the code has changed, and work correctly. This is + necessary to handle the trampolines GCC uses to implemented nested + functions. If you regenerate code somewhere other than the stack, + and you are running on an 32- or 64-bit x86 CPU, you will need to + use the option, and Valgrind will + run more slowly than normal. Or you can add client requests that + tell Valgrind when your program has overwritten code. + + On other platforms (ARM, PowerPC) Valgrind observes and + honours the cache invalidation hints that programs are obliged to + emit to notify new code, and so self-modifying-code support should + work automatically, without the need + for . @@ -1945,6 +3101,19 @@ subject to the following constraints: warn about, attempts to enable either mode. + + Valgrind has the following limitations in + its implementation of ARM VFPv3 arithmetic, relative to + IEEE754. + + Essentially the same: no exceptions, and limited observance + of rounding mode. Also, switching the VFP unit into vector mode + will cause Valgrind to abort the program -- it has no way to + emulate vector uses of VFP at a reasonable performance level. This + is no big deal given that non-scalar uses of VFP instructions are + in any case deprecated. + + Valgrind has the following limitations in its implementation of PPC32 and PPC64 floating point diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-intro.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-intro.xml index 452effd36..3efbdeea9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-intro.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual-intro.xml @@ -53,6 +53,12 @@ and without disturbing the existing structure. make your programs use less memory. + + DHAT is a different kind of heap + profiler. It helps you understand issues of block lifetimes, + block utilisation, and layout inefficiencies. + + Ptrcheck is an experimental heap, stack and global array overrun detector. Its functionality overlaps somewhat diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual.xml index 5a01af2a7..333e5b778 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/manual.xml @@ -36,7 +36,9 @@ xmlns:xi="http://www.w3.org/2001/XInclude" /> - + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/quick-start-guide.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/quick-start-guide.xml index 306c90866..f7bbf6874 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/quick-start-guide.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/quick-start-guide.xml @@ -48,7 +48,8 @@ numbers. Using is also a good idea, if you can tolerate the slowdown. With line numbers in error messages can be inaccurate, although generally speaking running Memcheck on code compiled -at works fairly well. +at works fairly well, and the speed improvement +compared to running is quite significant. Use of and above is not recommended as Memcheck occasionally reports uninitialised-value errors which don't diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/vg-entities.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/vg-entities.xml index bc6ea16cb..52c1d0ec9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/vg-entities.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/docs/xml/vg-entities.xml @@ -2,12 +2,12 @@ - + - - + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.am index f28c7524d..6295fbd0e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.am @@ -41,6 +41,8 @@ DRD_CFLAGS = \ -Wno-inline \ -Wno-unused-parameter +#DRD_CFLAGS += -DENABLE_DRD_CONSISTENCY_CHECKS + #---------------------------------------------------------------------------- # drd- #---------------------------------------------------------------------------- @@ -125,6 +127,10 @@ VGPRELOAD_DRD_SOURCES_COMMON = \ drd_qtcore_intercepts.c \ drd_strmem_intercepts.c +if VGCONF_OS_IS_DARWIN +VGPRELOAD_DRD_SOURCES_COMMON += drd_darwin_intercepts.c +endif + vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ $(VGPRELOAD_DRD_SOURCES_COMMON) vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.in index 740a38578..b92bbfebe 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/Makefile.in @@ -52,6 +52,7 @@ noinst_PROGRAMS = drd-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT) \ @VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_1 = drd-@VGCONF_ARCH_SEC@-@VGCONF_OS@ @VGCONF_HAVE_PLATFORM_SEC_FALSE@drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = @VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_2 = vgpreload_drd-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so +@VGCONF_OS_IS_DARWIN_TRUE@am__append_3 = drd_darwin_intercepts.c subdir = drd ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -108,11 +109,16 @@ am__objects_2 = \ @VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_2) drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS = \ $(am_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) -am__objects_3 = vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_pthread_intercepts.$(OBJEXT) \ +am__vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES_DIST = \ + drd_pthread_intercepts.c drd_qtcore_intercepts.c \ + drd_strmem_intercepts.c drd_darwin_intercepts.c +@VGCONF_OS_IS_DARWIN_TRUE@am__objects_3 = vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.$(OBJEXT) +am__objects_4 = vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_pthread_intercepts.$(OBJEXT) \ vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_qtcore_intercepts.$(OBJEXT) \ - vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_strmem_intercepts.$(OBJEXT) -am_vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = \ + vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_strmem_intercepts.$(OBJEXT) \ $(am__objects_3) +am_vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = \ + $(am__objects_4) vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = \ $(am_vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD = $(LDADD) @@ -123,12 +129,14 @@ vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK = $(CCLD) \ $(LDFLAGS) -o $@ am__vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES_DIST = \ drd_pthread_intercepts.c drd_qtcore_intercepts.c \ - drd_strmem_intercepts.c -am__objects_4 = vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.$(OBJEXT) \ + drd_strmem_intercepts.c drd_darwin_intercepts.c +@VGCONF_OS_IS_DARWIN_TRUE@am__objects_5 = vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.$(OBJEXT) +am__objects_6 = vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.$(OBJEXT) \ vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_qtcore_intercepts.$(OBJEXT) \ - vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.$(OBJEXT) + vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.$(OBJEXT) \ + $(am__objects_5) @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = \ -@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_4) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_6) vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = \ $(am_vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDADD = $(LDADD) @@ -151,7 +159,7 @@ SOURCES = $(drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES) DIST_SOURCES = $(drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ $(am__drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST) \ - $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \ + $(am__vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES_DIST) \ $(am__vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ @@ -259,6 +267,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -288,12 +298,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -447,7 +452,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -476,6 +481,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -504,6 +514,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -556,6 +567,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -619,6 +633,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -661,6 +678,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/drd-manual.xml #---------------------------------------------------------------------------- @@ -768,11 +790,9 @@ drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \ @VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS) @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(noinst_PROGRAMS) -VGPRELOAD_DRD_SOURCES_COMMON = \ - drd_pthread_intercepts.c \ - drd_qtcore_intercepts.c \ - drd_strmem_intercepts.c - +VGPRELOAD_DRD_SOURCES_COMMON = drd_pthread_intercepts.c \ + drd_qtcore_intercepts.c drd_strmem_intercepts.c \ + $(am__append_3) vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ $(VGPRELOAD_DRD_SOURCES_COMMON) @@ -891,9 +911,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@-drd_rwlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@-drd_semaphore.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@-drd_suppression.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_pthread_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_qtcore_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_strmem_intercepts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_qtcore_intercepts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.Po@am__quote@ @@ -1374,6 +1396,20 @@ vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_strmem_intercepts.obj: drd_st @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_strmem_intercepts.obj `if test -f 'drd_strmem_intercepts.c'; then $(CYGPATH_W) 'drd_strmem_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_strmem_intercepts.c'; fi` +vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.o: drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.o -MD -MP -MF $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo -c -o vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.o `test -f 'drd_darwin_intercepts.c' || echo '$(srcdir)/'`drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drd_darwin_intercepts.c' object='vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.o `test -f 'drd_darwin_intercepts.c' || echo '$(srcdir)/'`drd_darwin_intercepts.c + +vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.obj: drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.obj -MD -MP -MF $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo -c -o vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.obj `if test -f 'drd_darwin_intercepts.c'; then $(CYGPATH_W) 'drd_darwin_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_darwin_intercepts.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drd_darwin_intercepts.c' object='vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-drd_darwin_intercepts.obj `if test -f 'drd_darwin_intercepts.c'; then $(CYGPATH_W) 'drd_darwin_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_darwin_intercepts.c'; fi` + vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.o: drd_pthread_intercepts.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.o -MD -MP -MF $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.Tpo -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.o `test -f 'drd_pthread_intercepts.c' || echo '$(srcdir)/'`drd_pthread_intercepts.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.Tpo $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_pthread_intercepts.Po @@ -1415,6 +1451,20 @@ vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.obj: drd_st @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drd_strmem_intercepts.c' object='vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_strmem_intercepts.obj `if test -f 'drd_strmem_intercepts.c'; then $(CYGPATH_W) 'drd_strmem_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_strmem_intercepts.c'; fi` + +vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.o: drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.o -MD -MP -MF $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.o `test -f 'drd_darwin_intercepts.c' || echo '$(srcdir)/'`drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drd_darwin_intercepts.c' object='vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.o `test -f 'drd_darwin_intercepts.c' || echo '$(srcdir)/'`drd_darwin_intercepts.c + +vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.obj: drd_darwin_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.obj -MD -MP -MF $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.obj `if test -f 'drd_darwin_intercepts.c'; then $(CYGPATH_W) 'drd_darwin_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_darwin_intercepts.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Tpo $(DEPDIR)/vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drd_darwin_intercepts.c' object='vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-drd_darwin_intercepts.obj `if test -f 'drd_darwin_intercepts.c'; then $(CYGPATH_W) 'drd_darwin_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/drd_darwin_intercepts.c'; fi` install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/TODO.txt b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/TODO.txt index da036877d..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/TODO.txt +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/TODO.txt @@ -1,36 +0,0 @@ -Last updated August 7, 2009. -~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -The DRD tool -~~~~~~~~~~~~ -- Improve the code for suppressing races reported on glibc FILE objects, e.g. by - intercepting all operations on FILE objects and by associating mutex semantics - with FILE objects. Verify that races on unsynchronized *_unlocked() operations - are reported. Remove FILE-I/O suppression patterns from glibc-2.X-drd.supp. - See also http://www.unix.org/whitepapers/reentrant.html. -- Add locking order checking. Start from the following information: - * http://sourceforge.net/mailarchive/message.php?msg_id=alpine.LNX.1.10.0803270822080.17890%40mudge.stoecker.eu - * http://lwn.net/Articles/185605/ - * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/lockdep-design.txt;h=488773018152056ea159685e732e42452a7ae142;hb=HEAD -- Make sure tc14_laog_dinphils is run during drd regression tests - (only possible after locking order checking is implemented). -- Evaluate whether integration of drd with one of the available Valgrind GUI's - makes sense (http://valgrind.org/downloads/guis.html). - - -Testing -~~~~~~~ -- Measure the performance and the memory overhead of drd on the PARSEC - benchmark (http://parsec.cs.princeton.edu/license.htm). -- Test with Synfig Studio (see also http://bugs.kde.org/show_bug.cgi?id=158555) -- Test with a multithreaded Python application. - - -Documentation -~~~~~~~~~~~~~ -- Document the algorithms used in drd. -- Add comment on double checked locking. -- Add comment on lockless algorithms in general and circular buffers in - particular. -- Explain how to handle transactions (with regard to locking order). diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/docs/drd-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/docs/drd-manual.xml index 076e08401..4b0090a4a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/docs/drd-manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/docs/drd-manual.xml @@ -361,6 +361,42 @@ behavior of the DRD tool itself: + + + + + + + Whether to report races between accessing memory and freeing + memory. Enabling this option may cause DRD to run slightly + slower. Notes: + + + + Don't enable this option when using custom memory allocators + that use + the VG_USERREQ__MALLOCLIKE_BLOCK + and VG_USERREQ__FREELIKE_BLOCK + because that would result in false positives. + + + + Don't enable this option when using reference-counted + objects because that will result in false positives, even when + that code has been annotated properly with + ANNOTATE_HAPPENS_BEFORE + and ANNOTATE_HAPPENS_AFTER. See + e.g. the output of the following command for an example: + valgrind --tool=drd --free-is-write=yes + drd/tests/annotate_smart_pointer. + + + + + + + + + + + + + Trace all memory allocations and deallocations. May produce a huge + amount of output. + + + @@ -965,9 +1012,11 @@ available macros and client requests are: the next access to the variable at the specified address should be considered to have happened after the access just before the latest ANNOTATE_HAPPENS_BEFORE(addr) annotation that - references the same variable. The purpose of these two macros is to - tell DRD about the order of inter-thread memory accesses implemented via - atomic memory operations. + references the same variable. The purpose of these two macros is to tell + DRD about the order of inter-thread memory accesses implemented via + atomic memory operations. See + also drd/tests/annotate_smart_pointer.cpp for an + example. @@ -975,7 +1024,8 @@ available macros and client requests are: The macro ANNOTATE_RWLOCK_CREATE(rwlock) tells DRD that the object at address rwlock is a reader-writer synchronization object that is not a - pthread_rwlock_t synchronization object. + pthread_rwlock_t synchronization object. See + also drd/tests/annotate_rwlock.c for an example. @@ -1033,11 +1083,50 @@ available macros and client requests are: - The macro ANNOTATE_BENIGN_RACE(addr, descr) tells - DRD that any races detected on the specified address are benign and - hence should not be reported. The descr argument is - ignored but can be used to document why data races - on addr are benign. + The macro ANNOTATE_BARRIER_INIT(barrier, count, + reinitialization_allowed) tells DRD that a new barrier object + at the address barrier has been initialized, + that count threads participate in each barrier and + also whether or not barrier reinitialization without intervening + destruction should be reported as an error. See + also drd/tests/annotate_barrier.c for an example. + + + + + The macro ANNOTATE_BARRIER_DESTROY(barrier) + tells DRD that a barrier object is about to be destroyed. + + + + + The macro ANNOTATE_BARRIER_WAIT_BEFORE(barrier) + tells DRD that waiting for a barrier will start. + + + + + The macro ANNOTATE_BARRIER_WAIT_AFTER(barrier) + tells DRD that waiting for a barrier has finished. + + + + + The macro ANNOTATE_BENIGN_RACE_SIZED(addr, size, + descr) tells DRD that any races detected on the specified + address are benign and hence should not be + reported. The descr argument is ignored but can be + used to document why data races on addr are benign. + + + + + The macro ANNOTATE_BENIGN_RACE_STATIC(var, descr) + tells DRD that any races detected on the specified static variable are + benign and hence should not be reported. The descr + argument is ignored but can be used to document why data races + on var are benign. Note: this macro can only be + used in C++ programs and not in C programs. @@ -1102,17 +1191,6 @@ available macros and client requests are: - -For an example of how to use the annotations for user-defined reader-writer -synchronization objects, see -also the source file drd/tests/annotate_rwlock.c in the -Valgrind source archive. And an example of how to -use the ANNOTATE_HAPPENS_BEFORE and -the ANNOTATE_HAPPENS_AFTER annotations can be found -in the source code of the Chromium -web browser. - - Note: if you compiled Valgrind yourself, the header file <valgrind/drd.h> will have been installed in @@ -1156,34 +1234,6 @@ Reference Manual for more information. - -Debugging Qt Programs - - -The Qt library is the GUI library used by the KDE project. Currently -there are two versions of the Qt library in use: Qt3 by KDE 3 and Qt4 -by KDE 4. If possible, use Qt4 instead of Qt3. Qt3 is no longer -supported, and there are known problems with multithreading support in -Qt3. As an example, using QString objects in more than one thread will -trigger race reports (this has been confirmed by Trolltech -- see also -Trolltech task #206152). - - - -Qt4 applications are supported by DRD, but only if the -libqt4-debuginfo package has been installed. Some -of the synchronization and threading primitives in Qt4 bypass the -POSIX threads library, and DRD can only intercept these if symbol -information for the Qt4 library is available. DRD won't tell you if it -has not been able to load the Qt4 debug information, but a huge number -of data races will be reported on data protected via -QMutex objects. - - - - - Debugging Boost.Thread Programs @@ -1578,7 +1628,7 @@ concept. -<function>pthread_cond_timedwait</function> and timeouts +pthread_cond_timedwait and timeouts Historically the function @@ -1619,46 +1669,6 @@ example. - -Assigning names to threads - - -Many applications log information about changes in internal or -external state to a file. When analyzing log files of a multithreaded -application it can be very convenient to know which thread logged -which information. One possible approach is to identify threads in -logging output by including the result of -pthread_self in every log line. However, this approach -has two disadvantages: there is no direct relationship between these -values and the source code and these values can be different in each -run. A better approach is to assign a brief name to each thread and to -include the assigned thread name in each log line. One possible -approach for managing thread names is as follows: - - - - Allocate a key for the pointer to the thread name through - pthread_key_create. - - - - - Just after thread creation, set the thread name through - pthread_setspecific. - - - - - In the code that generates the logging information, query the thread - name by calling pthread_getspecific. - - - - - - - - @@ -1668,18 +1678,6 @@ approach for managing thread names is as follows: DRD currently has the following limitations: - - - DRD has only been tested on Linux and Mac OS X. - - - - - Of the two POSIX threads implementations for Linux, only the - NPTL (Native POSIX Thread Library) is supported. The older - LinuxThreads library is not supported. - - DRD, just like Memcheck, will refuse to start on Linux @@ -1692,12 +1690,19 @@ approach for managing thread names is as follows: url="http://bugs.gentoo.org/214065">214065. + + + With gcc 4.4.3 and before, DRD may report data races on the C++ + class std::string in a multithreaded program. This is + a know libstdc++ issue -- see also GCC bug + 40518 + for more information. + + When address tracing is enabled, no information on atomic stores - will be displayed. This functionality is easy to add - however. Please contact the Valgrind authors if you would like - to see this functionality enabled. + will be displayed. @@ -1706,6 +1711,13 @@ approach for managing thread names is as follows: later. GCC 2.95 is not supported. + + + Of the two POSIX threads implementations for Linux, only the + NPTL (Native POSIX Thread Library) is supported. The older + LinuxThreads library is not supported. + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd.h index 3935cabfd..55f72279a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd.h @@ -1,4 +1,4 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* ---------------------------------------------------------------- @@ -14,7 +14,7 @@ This file is part of DRD, a Valgrind tool for verification of multithreaded programs. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -65,27 +65,34 @@ #include "valgrind.h" -/** Prefix for the (inline) functions defined in this header file. */ -#define DRDCL_(str) vgDrdCl_##str - - /** Obtain the thread ID assigned by Valgrind's core. */ -#define DRD_GET_VALGRIND_THREADID (DRDCL_(get_valgrind_threadid)()) +#define DRD_GET_VALGRIND_THREADID \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_GET_VALGRIND_THREAD_ID, \ + 0, 0, 0, 0, 0) /** Obtain the thread ID assigned by DRD. */ -#define DRD_GET_DRD_THREADID (DRDCL_(get_drd_threadid)()) +#define DRD_GET_DRD_THREADID \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_GET_DRD_THREAD_ID, \ + 0, 0, 0, 0, 0) + /** Tell DRD not to complain about data races for the specified variable. */ -#define DRD_IGNORE_VAR(x) DRDCL_(ignore_range)(&(x), sizeof(x)) +#define DRD_IGNORE_VAR(x) ANNOTATE_BENIGN_RACE_SIZED(&(x), sizeof(x), "") /** Tell DRD to no longer ignore data races for the specified variable. */ -#define DRD_STOP_IGNORING_VAR(x) DRDCL_(ignore_range)(&(x), sizeof(x)) +#define DRD_STOP_IGNORING_VAR(x) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_FINISH_SUPPRESSION, \ + &(x), sizeof(x), 0, 0, 0) /** * Tell DRD to trace all memory accesses on the specified variable. * until the memory that was allocated for the variable is freed. */ -#define DRD_TRACE_VAR(x) DRDCL_(trace_range)(&(x), sizeof(x)) +#define DRD_TRACE_VAR(x) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_START_TRACE_ADDR, \ + &(x), sizeof(x), 0, 0, 0) /** * @defgroup RaceDetectionAnnotations Data race detection annotations. @@ -100,7 +107,10 @@ * Tell DRD to insert a happens-before mark. addr is the address of an object * that is not a pthread synchronization object. */ -#define ANNOTATE_HAPPENS_BEFORE(addr) DRDCL_(annotate_happens_before)(addr) +#define ANNOTATE_HAPPENS_BEFORE(addr) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_HAPPENS_BEFORE, \ + addr, 0, 0, 0, 0) /** * Tell DRD that the memory accesses executed after this annotation will @@ -110,7 +120,10 @@ * before any other thread has passed by a happens-before annotation for the * same address is an error. */ -#define ANNOTATE_HAPPENS_AFTER(addr) DRDCL_(annotate_happens_after)(addr) +#define ANNOTATE_HAPPENS_AFTER(addr) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_HAPPENS_AFTER, \ + addr, 0, 0, 0, 0) /** * Tell DRD that waiting on the condition variable at address cv has succeeded @@ -166,20 +179,26 @@ #define ANNOTATE_SWAP_MEMORY_RANGE(addr, size) do { } while(0) /** Tell DRD that a reader-writer lock object has been initialized. */ -#define ANNOTATE_RWLOCK_CREATE(rwlock) \ - DRDCL_(annotate_rwlock_create)(rwlock) +#define ANNOTATE_RWLOCK_CREATE(rwlock) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_RWLOCK_CREATE, \ + rwlock, 0, 0, 0, 0); /** Tell DRD that a reader-writer lock object has been destroyed. */ -#define ANNOTATE_RWLOCK_DESTROY(rwlock) \ - DRDCL_(annotate_rwlock_destroy)(rwlock) +#define ANNOTATE_RWLOCK_DESTROY(rwlock) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_RWLOCK_DESTROY, \ + rwlock, 0, 0, 0, 0); /** * Tell DRD that a reader-writer lock has been acquired. is_w == 1 means that * a write lock has been obtained, is_w == 0 means that a read lock has been * obtained. */ -#define ANNOTATE_RWLOCK_ACQUIRED(rwlock, is_w) \ - DRDCL_(annotate_rwlock_acquired)(rwlock, is_w) +#define ANNOTATE_RWLOCK_ACQUIRED(rwlock, is_w) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_RWLOCK_ACQUIRED, \ + rwlock, is_w, 0, 0, 0) /** * Tell DRD that a reader lock has been acquired on a reader-writer @@ -198,8 +217,10 @@ * that a write lock is about to be released, is_w == 0 means that a read lock * is about to be released. */ -#define ANNOTATE_RWLOCK_RELEASED(rwlock, is_w) \ - DRDCL_(annotate_rwlock_released)(rwlock, is_w) +#define ANNOTATE_RWLOCK_RELEASED(rwlock, is_w) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__DRD_ANNOTATE_RWLOCK_RELEASED, \ + rwlock, is_w, 0, 0, 0); /** * Tell DRD that a reader lock is about to be released. @@ -217,20 +238,28 @@ * is, whether or not it is allowed to call barrier_init() several times * without calling barrier_destroy(). */ -#define ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) \ - DRDCL_(annotate_barrier_init)(barrier, count, reinitialization_allowed) +#define ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_ANNOTATION_UNIMP, \ + "ANNOTATE_BARRIER_INIT", barrier, \ + count, reinitialization_allowed, 0) /* Report that a barrier has been destroyed. */ -#define ANNOTATE_BARRIER_DESTROY(barrier) \ - DRDCL_(annotate_barrier_destroy)(barrier) +#define ANNOTATE_BARRIER_DESTROY(barrier) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_ANNOTATION_UNIMP, \ + "ANNOTATE_BARRIER_DESTROY", \ + barrier, 0, 0, 0) /* Report that the calling thread is about to start waiting for a barrier. */ -#define ANNOTATE_BARRIER_WAIT_BEFORE(barrier) \ - DRDCL_(annotate_barrier_wait_before)(barrier) +#define ANNOTATE_BARRIER_WAIT_BEFORE(barrier) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_ANNOTATION_UNIMP, \ + "ANNOTATE_BARRIER_WAIT_BEFORE", \ + barrier, 0, 0, 0) /* Report that the calling thread has just finished waiting for a barrier. */ -#define ANNOTATE_BARRIER_WAIT_AFTER(barrier) \ - DRDCL_(annotate_barrier_wait_after)(barrier) +#define ANNOTATE_BARRIER_WAIT_AFTER(barrier) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_ANNOTATION_UNIMP, \ + "ANNOTATE_BARRIER_WAIT_AFTER", \ + barrier, 0, 0, 0) /** * Tell DRD that a FIFO queue has been created. The abbreviation PCQ stands for @@ -262,50 +291,64 @@ * be reported. */ #define ANNOTATE_BENIGN_RACE(addr, descr) \ - DRDCL_(ignore_range)(addr, sizeof(*addr)) + ANNOTATE_BENIGN_RACE_SIZED(addr, sizeof(*addr), descr) -/* Same as ANNOTATE_BENIGN_RACE(address, description), but applies to - the memory range [address, address+size). */ -#define ANNOTATE_BENIGN_RACE_SIZED(address, size, description) \ - DRDCL_(ignore_range)(addr, size) +/* Same as ANNOTATE_BENIGN_RACE(addr, descr), but applies to + the memory range [addr, addr + size). */ +#define ANNOTATE_BENIGN_RACE_SIZED(addr, size, descr) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_START_SUPPRESSION, \ + addr, size, 0, 0, 0) /** Tell DRD to ignore all reads performed by the current thread. */ -#define ANNOTATE_IGNORE_READS_BEGIN() DRDCL_(set_record_loads)(0) +#define ANNOTATE_IGNORE_READS_BEGIN() \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_RECORD_LOADS, \ + 0, 0, 0, 0, 0); + /** Tell DRD to no longer ignore the reads performed by the current thread. */ -#define ANNOTATE_IGNORE_READS_END() DRDCL_(set_record_loads)(1) +#define ANNOTATE_IGNORE_READS_END() \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_RECORD_LOADS, \ + 1, 0, 0, 0, 0); /** Tell DRD to ignore all writes performed by the current thread. */ -#define ANNOTATE_IGNORE_WRITES_BEGIN() DRDCL_(set_record_stores)(0) +#define ANNOTATE_IGNORE_WRITES_BEGIN() \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_RECORD_STORES, \ + 0, 0, 0, 0, 0) /** Tell DRD to no longer ignore the writes performed by the current thread. */ -#define ANNOTATE_IGNORE_WRITES_END() DRDCL_(set_record_stores)(1) +#define ANNOTATE_IGNORE_WRITES_END() \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_RECORD_STORES, \ + 1, 0, 0, 0, 0) /** Tell DRD to ignore all memory accesses performed by the current thread. */ #define ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() \ - do { DRDCL_(set_record_loads)(0); DRDCL_(set_record_stores)(0); } while(0) + do { ANNOTATE_IGNORE_READS_BEGIN(); ANNOTATE_IGNORE_WRITES_BEGIN(); } while(0) /** * Tell DRD to no longer ignore the memory accesses performed by the current * thread. */ #define ANNOTATE_IGNORE_READS_AND_WRITES_END() \ - do { DRDCL_(set_record_loads)(1); DRDCL_(set_record_stores)(1); } while(0) + do { ANNOTATE_IGNORE_READS_END(); ANNOTATE_IGNORE_WRITES_END(); } while(0) /** * Tell DRD that size bytes starting at addr has been allocated by a custom * memory allocator. */ -#define ANNOTATE_NEW_MEMORY(addr, size) DRDCL_(clean_memory)(addr, size) +#define ANNOTATE_NEW_MEMORY(addr, size) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_CLEAN_MEMORY, \ + addr, size, 0, 0, 0) -/** Ask DRD to report every access to the specified address range. */ -#define ANNOTATE_TRACE_MEMORY(addr) DRDCL_(trace_range)(addr, 1) +/** Ask DRD to report every access to the specified address. */ +#define ANNOTATE_TRACE_MEMORY(addr) DRD_TRACE_VAR(*(char*)(addr)) /** * Tell DRD to assign the specified name to the current thread. This name will * be used in error messages printed by DRD. */ -#define ANNOTATE_THREAD_NAME(name) DRDCL_(set_thread_name)(name) +#define ANNOTATE_THREAD_NAME(name) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_SET_THREAD_NAME, \ + name, 0, 0, 0, 0) /*@}*/ @@ -398,176 +441,6 @@ enum { }; -/* - * Do not call the inline functions below directly but use the macro's defined - * above. The names of these inline functions may change from one release to - * another. - */ - -static __inline__ -void DRDCL_(clean_memory)(const void* const addr, const int size) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_CLEAN_MEMORY, - addr, size, 0, 0, 0); -} - -static __inline__ -int DRDCL_(get_valgrind_threadid)(void) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_GET_VALGRIND_THREAD_ID, - 0, 0, 0, 0, 0); - return res; -} - -static __inline__ -int DRDCL_(get_drd_threadid)(void) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_GET_DRD_THREAD_ID, - 0, 0, 0, 0, 0); - return res; -} - -static __inline__ -void DRDCL_(ignore_range)(const void* const addr, const int size) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_SUPPRESSION, - addr, size, 0, 0, 0); -} - -static __inline__ -void DRDCL_(stop_ignoring_range)(const void* const addr, const int size) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_FINISH_SUPPRESSION, - addr, size, 0, 0, 0); -} - -static __inline__ -void DRDCL_(trace_range)(const void* const addr, const int size) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_TRACE_ADDR, - addr, size, 0, 0, 0); -} - -static __inline__ -void DRDCL_(set_record_loads)(const int enabled) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_RECORD_LOADS, - enabled, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(set_record_stores)(const int enabled) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_RECORD_STORES, - enabled, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(set_thread_name)(const char* const name) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_SET_THREAD_NAME, - name, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_happens_before)(const void* const addr) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_ANNOTATE_HAPPENS_BEFORE, - addr, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_happens_after)(const void* const addr) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_ANNOTATE_HAPPENS_AFTER, - addr, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_rwlock_create)(const void* const rwlock) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATE_RWLOCK_CREATE, - rwlock, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_rwlock_destroy)(const void* const rwlock) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATE_RWLOCK_DESTROY, - rwlock, 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_rwlock_acquired)(const void* const rwlock, const int is_w) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATE_RWLOCK_ACQUIRED, - rwlock, is_w, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_rwlock_released)(const void* const rwlock, const int is_w) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATE_RWLOCK_RELEASED, - rwlock, is_w, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_barrier_init)(const void* barrier, const unsigned count, - const int reinitialization_allowed) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATION_UNIMP, - "ANNOTATE_BARRIER_INIT", 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_barrier_destroy)(const void* barrier) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATION_UNIMP, - "ANNOTATE_BARRIER_DESTROY", 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_barrier_wait_before)(const void* barrier) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATION_UNIMP, - "ANNOTATE_BARRIER_WAIT_BEFORE", 0, 0, 0, 0); -} - -static __inline__ -void DRDCL_(annotate_barrier_wait_after)(const void* barrier) -{ - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, - VG_USERREQ__DRD_ANNOTATION_UNIMP, - "ANNOTATE_BARRIER_WAIT_AFTER", 0, 0, 0, 0); -} - - /** * @addtogroup RaceDetectionAnnotations */ @@ -597,7 +470,8 @@ inline T ANNOTATE_UNPROTECTED_READ(const volatile T& x) { public: \ static_var##_annotator() \ { \ - ANNOTATE_BENIGN_RACE(&static_var, #static_var ": " description); \ + ANNOTATE_BENIGN_RACE_SIZED(&static_var, sizeof(static_var), \ + #static_var ": " description); \ } \ } the_##static_var##_annotator; \ } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.c index d8e06cb18..0863de362 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.h index 77c8cd911..0af536b17 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_barrier.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_basics.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_basics.h index 78b1794d7..26700cf26 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_basics.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_basics.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of DRD, a thread error detector. - Copyright (C) 2009 Bart Van Assche . + Copyright (C) 2009 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.c index 8e0e4c08c..19284b445 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -129,7 +129,7 @@ void DRD_(bm_access_range_load)(struct bitmap* const bm, Addr a1, Addr a2) Addr b, b_next; tl_assert(bm); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); tl_assert(a2 < first_address_with_higher_msb(a2)); tl_assert(a1 == first_address_with_same_lsb(a1)); tl_assert(a2 == first_address_with_same_lsb(a2)); @@ -226,7 +226,7 @@ void DRD_(bm_access_range_store)(struct bitmap* const bm, Addr b, b_next; tl_assert(bm); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); tl_assert(a2 < first_address_with_higher_msb(a2)); tl_assert(a1 == first_address_with_same_lsb(a1)); tl_assert(a2 == first_address_with_same_lsb(a2)); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.h index f903945c0..85bb767b0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -31,6 +31,9 @@ #include "pub_tool_basics.h" #include "pub_tool_oset.h" #include "pub_tool_libcbase.h" +#ifdef ENABLE_DRD_CONSISTENCY_CHECKS +#include "pub_tool_libcassert.h" +#endif /* Bitmap representation. A bitmap is a data structure in which two bits are @@ -136,7 +139,7 @@ Addr make_address(const UWord a1, const UWord a0) /** Log2 of BITS_PER_UWORD. */ #if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm) #define BITS_PER_BITS_PER_UWORD 5 -#elif defined(VGA_amd64) || defined(VGA_ppc64) +#elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_s390x) #define BITS_PER_BITS_PER_UWORD 6 #else #error Unknown platform. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap2_node.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap2_node.c index 9dc3ef562..3b21dd279 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap2_node.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_bitmap2_node.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -154,24 +154,22 @@ void DRD_(bm2_free_node)(void* const bm2) { struct block_allocator_chunk* p; - tl_assert(s_bm2_node_size > 0); tl_assert(bm2); - for (p = s_first; p; p = p->next) - { - if (p->data <= bm2 && bm2 < p->data_end) - { - /* Free the memory that was allocated for a non-root AVL tree node. */ - tl_assert(((char*)bm2 - (char*)(p->data)) % s_bm2_node_size == 0); - *(void**)bm2 = p->first_free; - p->first_free = bm2; - tl_assert(p->nallocated >= 1); - if (--(p->nallocated) == 0) - free_chunk(p); - return; + if (s_bm2_node_size > 0) { + for (p = s_first; p; p = p->next) { + if (p->data <= bm2 && bm2 < p->data_end) { + /* Free a non-root AVL tree node. */ + tl_assert(((char*)bm2 - (char*)(p->data)) % s_bm2_node_size == 0); + *(void**)bm2 = p->first_free; + p->first_free = bm2; + tl_assert(p->nallocated >= 1); + if (--(p->nallocated) == 0) + free_chunk(p); + return; + } } } - /* Free the memory that was allocated for an AVL tree root node. */ VG_(free)(bm2); } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.c index 780b793c9..7dc3d15fb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -107,7 +107,7 @@ Bool DRD_(clientobj_present)(const Addr a1, const Addr a2) { DrdClientobj *p; - tl_assert(a1 < a2); + tl_assert(a1 <= a2); VG_(OSetGen_ResetIter)(s_clientobj_set); for ( ; (p = VG_(OSetGen_Next)(s_clientobj_set)) != 0; ) { diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.h index dd1a541aa..86e58d6d5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientobj.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -95,7 +95,6 @@ struct hb_info void (*delete_thread)(union drd_clientobj*, DrdThreadId); ExeContext* first_observed_at; OSet* oset; // Per-thread order annotation information. - Bool done; // Whether happens-done has already been invoked. }; struct semaphore_info diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.c index 9a78b7964..ba0a5a449 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -45,6 +45,11 @@ #include "pub_tool_tooliface.h" // VG_(needs_...)() +/* Global variables. */ + +Bool DRD_(g_free_is_write); + + /* Local function declarations. */ static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret); @@ -76,12 +81,40 @@ static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret) switch (arg[0]) { case VG_USERREQ__MALLOCLIKE_BLOCK: + if (DRD_(g_free_is_write)) { + GenericErrInfo GEI = { + .tid = DRD_(thread_get_running_tid)(), + .addr = 0, + }; + VG_(maybe_record_error)(vg_tid, + GenericErr, + VG_(get_IP)(vg_tid), + "--free-is-write=yes is incompatible with" + " custom memory allocator client requests", + &GEI); + } if (arg[1]) DRD_(malloclike_block)(vg_tid, arg[1]/*addr*/, arg[2]/*size*/); break; + case VG_USERREQ__RESIZEINPLACE_BLOCK: + if (!DRD_(freelike_block)(vg_tid, arg[1]/*addr*/, False)) + { + GenericErrInfo GEI = { + .tid = DRD_(thread_get_running_tid)(), + .addr = 0, + }; + VG_(maybe_record_error)(vg_tid, + GenericErr, + VG_(get_IP)(vg_tid), + "Invalid VG_USERREQ__RESIZEINPLACE_BLOCK request", + &GEI); + } + DRD_(malloclike_block)(vg_tid, arg[1]/*addr*/, arg[3]/*newSize*/); + break; + case VG_USERREQ__FREELIKE_BLOCK: - if (arg[1] && ! DRD_(freelike_block)(vg_tid, arg[1]/*addr*/)) + if (arg[1] && ! DRD_(freelike_block)(vg_tid, arg[1]/*addr*/, False)) { GenericErrInfo GEI = { .tid = DRD_(thread_get_running_tid)(), @@ -108,10 +141,14 @@ static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret) break; case VG_USERREQ__DRD_START_SUPPRESSION: + /*_VG_USERREQ__HG_ARANGE_MAKE_UNTRACKED*/ + case VG_USERREQ_TOOL_BASE('H','G') + 256 + 39: DRD_(start_suppression)(arg[1], arg[1] + arg[2], "client"); break; case VG_USERREQ__DRD_FINISH_SUPPRESSION: + /*_VG_USERREQ__HG_ARANGE_MAKE_TRACKED*/ + case VG_USERREQ_TOOL_BASE('H','G') + 256 + 40: DRD_(finish_suppression)(arg[1], arg[1] + arg[2]); break; @@ -206,9 +243,20 @@ static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret) break; case VG_USERREQ__SET_JOINABLE: - DRD_(thread_set_joinable)(DRD_(PtThreadIdToDrdThreadId)(arg[1]), - (Bool)arg[2]); + { + const DrdThreadId drd_joinable = DRD_(PtThreadIdToDrdThreadId)(arg[1]); + if (drd_joinable != DRD_INVALID_THREADID) + DRD_(thread_set_joinable)(drd_joinable, (Bool)arg[2]); + else { + InvalidThreadIdInfo ITI = { DRD_(thread_get_running_tid)(), arg[1] }; + VG_(maybe_record_error)(vg_tid, + InvalidThreadId, + VG_(get_IP)(vg_tid), + "pthread_detach(): invalid thread ID", + &ITI); + } break; + } case VG_USERREQ__ENTERING_PTHREAD_CREATE: DRD_(thread_entering_pthread_create)(drd_tid); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.h index 2f6317039..3b8d1d56c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_clientreq.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -258,6 +258,8 @@ typedef enum { } BarrierT; +extern Bool DRD_(g_free_is_write); + void DRD_(clientreq_init)(void); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.c index bef880f82..fd6df0568 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -46,12 +46,6 @@ static Bool DRD_(s_report_signal_unlocked) = True; static Bool DRD_(s_trace_cond); -/* Global variables. */ - -Addr DRD_(pthread_cond_initializer); -int DRD_(pthread_cond_initializer_size); - - /* Function definitions. */ void DRD_(cond_set_report_signal_unlocked)(const Bool r) @@ -300,22 +294,15 @@ void DRD_(cond_post_wait)(const Addr cond) p = DRD_(cond_get)(cond); if (!p) { - struct mutex_info* q; - q = &(DRD_(clientobj_get)(p->mutex, ClientMutex)->mutex); - { - CondDestrErrInfo cde = { - DRD_(thread_get_running_tid)(), - p->a1, - q ? q->a1 : 0, - q ? q->owner : DRD_INVALID_THREADID - }; - VG_(maybe_record_error)(VG_(get_running_tid)(), - CondDestrErr, - VG_(get_IP)(VG_(get_running_tid)()), - "condition variable has been destroyed while" - " being waited upon", - &cde); - } + CondDestrErrInfo cde = { + DRD_(thread_get_running_tid)(), cond, 0, DRD_INVALID_THREADID + }; + VG_(maybe_record_error)(VG_(get_running_tid)(), + CondDestrErr, + VG_(get_IP)(VG_(get_running_tid)()), + "condition variable has been destroyed while" + " being waited upon", + &cde); return; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.h index 755fe82b3..4e82411d2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_cond.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_darwin_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_darwin_intercepts.c new file mode 100644 index 000000000..0dec939cf --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_darwin_intercepts.c @@ -0,0 +1,55 @@ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ +/* + This file is part of drd, a thread error detector. + + Copyright (C) 2006-2011 Bart Van Assche . + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#include +#include +#include "valgrind.h" +#include "drd.h" +#include "pub_tool_redir.h" + +/* + * On Mac OS X shared library functions are lazily bound. The binding mechanism + * uses self-modifying code. Intercept fastBindLazySymbol() in order to suppress + * the data accesses involved in this mechanism. + * + * See also the Mac OS X ABI Dynamic Loader Reference (http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/MachOReference/Reference/reference.html#//apple_ref/c/func/dyld_stub_binding_helper). + * See also the dyld_stub_binder() source code (http://www.opensource.apple.com/source/dyld/dyld-132.13/src/dyld_stub_binder.s). + * See also the dyld::fastBindLazySymbol() source code (http://opensource.apple.com/source/dyld/dyld-132.13/src/dyld.cpp). + */ +void* VG_WRAP_FUNCTION_ZZ(dyld, ZuZZN4dyld18fastBindLazySymbolEPP11ImageLoaderm) + (void** imageLoaderCache, uintptr_t lazyBindingInfoOffset); +void* VG_WRAP_FUNCTION_ZZ(dyld, ZuZZN4dyld18fastBindLazySymbolEPP11ImageLoaderm) + (void** imageLoaderCache, uintptr_t lazyBindingInfoOffset) +{ + void* res; + OrigFn fn; + + VALGRIND_GET_ORIG_FN(fn); + + ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN(); + CALL_FN_W_WW(res, fn, imageLoaderCache, lazyBindingInfoOffset); + ANNOTATE_IGNORE_READS_AND_WRITES_END(); + + return res; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.c index 461fe6cb1..cf8c34e1f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.h index 9c6bf7a78..2126aca1e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_error.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.c index 268643afd..3a3f4706c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -94,7 +94,6 @@ void DRD_(hb_initialize)(struct hb_info* const p, const Addr hb) p->delete_thread = 0; p->oset = VG_(OSetGen_Create)(0, 0, VG_(malloc), "drd.hb", VG_(free)); - p->done = False; } /** @@ -176,20 +175,6 @@ void DRD_(hb_happens_before)(const DrdThreadId tid, Addr const hb) if (!p) return; - if (p->done) - { - GenericErrInfo gei = { - .tid = DRD_(thread_get_running_tid)(), - .addr = hb, - }; - VG_(maybe_record_error)(VG_(get_running_tid)(), - GenericErr, - VG_(get_IP)(VG_(get_running_tid)()), - "happens-before after happens-after", - &gei); - return; - } - /* Allocate the per-thread data structure if necessary. */ q = VG_(OSetGen_Lookup)(p->oset, &word_tid); if (!q) @@ -215,29 +200,16 @@ void DRD_(hb_happens_after)(const DrdThreadId tid, const Addr hb) struct hb_thread_info* q; VectorClock old_vc; - p = DRD_(hb_get)(hb); + p = DRD_(hb_get_or_allocate)(hb); if (DRD_(s_trace_hb)) { - VG_(message)(Vg_UserMsg, "[%d] happens_after 0x%lx\n", + VG_(message)(Vg_UserMsg, "[%d] happens_after 0x%lx\n", DRD_(thread_get_running_tid)(), hb); } if (!p) - { - GenericErrInfo gei = { - .tid = DRD_(thread_get_running_tid)(), - .addr = hb, - }; - VG_(maybe_record_error)(VG_(get_running_tid)(), - GenericErr, - VG_(get_IP)(VG_(get_running_tid)()), - "missing happens-before annotation", - &gei); return; - } - - p->done = True; DRD_(thread_new_segment)(tid); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.h index 8ea59fb76..7b69082e2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_hb.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.c index 2b6d6f502..a1888347e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -48,6 +48,8 @@ #define STACK_POINTER_OFFSET OFFSET_ppc64_GPR1 #elif defined(VGA_arm) #define STACK_POINTER_OFFSET OFFSET_arm_R13 +#elif defined(VGA_s390x) +#define STACK_POINTER_OFFSET OFFSET_s390x_r15 #else #error Unknown architecture. #endif @@ -149,8 +151,8 @@ VG_REGPARM(2) void DRD_(trace_load)(Addr addr, SizeT size) { #ifdef ENABLE_DRD_CONSISTENCY_CHECKS /* The assert below has been commented out because of performance reasons.*/ - tl_assert(thread_get_running_tid() - == VgThreadIdToDrdThreadId(VG_(get_running_tid()))); + tl_assert(DRD_(thread_get_running_tid)() + == DRD_(VgThreadIdToDrdThreadId)(VG_(get_running_tid()))); #endif if (DRD_(running_thread_is_recording_loads)() @@ -215,8 +217,8 @@ VG_REGPARM(2) void DRD_(trace_store)(Addr addr, SizeT size) { #ifdef ENABLE_DRD_CONSISTENCY_CHECKS /* The assert below has been commented out because of performance reasons.*/ - tl_assert(thread_get_running_tid() - == VgThreadIdToDrdThreadId(VG_(get_running_tid()))); + tl_assert(DRD_(thread_get_running_tid)() + == DRD_(VgThreadIdToDrdThreadId)(VG_(get_running_tid()))); #endif if (DRD_(running_thread_is_recording_stores)() diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.h index be6df7b93..c67e285d4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_load_store.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_main.c index 36c5dd6ec..070fb5be8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_main.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -28,6 +28,7 @@ #include "drd_clientreq.h" #include "drd_cond.h" #include "drd_error.h" +#include "drd_hb.h" #include "drd_load_store.h" #include "drd_malloc_wrappers.h" #include "drd_mutex.h" @@ -51,13 +52,15 @@ #include "pub_tool_replacemalloc.h" #include "pub_tool_threadstate.h" // VG_(get_running_tid)() #include "pub_tool_tooliface.h" +#include "pub_tool_aspacemgr.h" // VG_(am_is_valid_for_client) /* Local variables. */ -static Bool DRD_(s_print_stats) = False; -static Bool DRD_(s_var_info) = False; -static Bool DRD_(s_show_stack_usage) = False; +static Bool s_print_stats; +static Bool s_var_info; +static Bool s_show_stack_usage; +static Bool s_trace_alloc; /** @@ -78,6 +81,7 @@ static Bool DRD_(process_cmd_line_option)(Char* arg) int trace_cond = -1; int trace_csw = -1; int trace_fork_join = -1; + int trace_hb = -1; int trace_conflict_set = -1; int trace_conflict_set_bm = -1; int trace_mutex = -1; @@ -88,16 +92,17 @@ static Bool DRD_(process_cmd_line_option)(Char* arg) Char* trace_address = 0; if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {} - else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {} + else if VG_BOOL_CLO(arg, "--drd-stats", s_print_stats) {} else if VG_BOOL_CLO(arg, "--first-race-only", first_race_only) {} + else if VG_BOOL_CLO(arg, "--free-is-write", DRD_(g_free_is_write)) {} else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {} else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {} else if VG_INT_CLO (arg, "--segment-merging-interval", segment_merge_interval) {} else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {} - else if VG_BOOL_CLO(arg, "--show-stack-usage", - DRD_(s_show_stack_usage)) {} + else if VG_BOOL_CLO(arg, "--show-stack-usage", s_show_stack_usage) {} + else if VG_BOOL_CLO(arg, "--trace-alloc", s_trace_alloc) {} else if VG_BOOL_CLO(arg, "--trace-barrier", trace_barrier) {} else if VG_BOOL_CLO(arg, "--trace-clientobj", trace_clientobj) {} else if VG_BOOL_CLO(arg, "--trace-cond", trace_cond) {} @@ -105,12 +110,13 @@ static Bool DRD_(process_cmd_line_option)(Char* arg) else if VG_BOOL_CLO(arg, "--trace-conflict-set-bm", trace_conflict_set_bm){} else if VG_BOOL_CLO(arg, "--trace-csw", trace_csw) {} else if VG_BOOL_CLO(arg, "--trace-fork-join", trace_fork_join) {} + else if VG_BOOL_CLO(arg, "--trace-hb", trace_hb) {} else if VG_BOOL_CLO(arg, "--trace-mutex", trace_mutex) {} else if VG_BOOL_CLO(arg, "--trace-rwlock", trace_rwlock) {} else if VG_BOOL_CLO(arg, "--trace-segment", trace_segment) {} else if VG_BOOL_CLO(arg, "--trace-semaphore", trace_semaphore) {} else if VG_BOOL_CLO(arg, "--trace-suppr", trace_suppression) {} - else if VG_BOOL_CLO(arg, "--var-info", DRD_(s_var_info)) {} + else if VG_BOOL_CLO(arg, "--var-info", s_var_info) {} else if VG_INT_CLO (arg, "--exclusive-threshold", exclusive_threshold_ms) {} else if VG_INT_CLO (arg, "--shared-threshold", shared_threshold_ms) {} else if VG_STR_CLO (arg, "--trace-addr", trace_address) {} @@ -157,6 +163,8 @@ static Bool DRD_(process_cmd_line_option)(Char* arg) DRD_(thread_trace_context_switches)(trace_csw); if (trace_fork_join != -1) DRD_(thread_set_trace_fork_join)(trace_fork_join); + if (trace_hb != -1) + DRD_(hb_set_trace)(trace_hb); if (trace_conflict_set != -1) DRD_(thread_trace_conflict_set)(trace_conflict_set); if (trace_conflict_set_bm != -1) @@ -181,9 +189,12 @@ static void DRD_(print_usage)(void) " --check-stack-var=yes|no Whether or not to report data races on\n" " stack variables [no].\n" " --exclusive-threshold= Print an error message if any mutex or\n" -" writer lock is held longer than the specified time (in milliseconds).\n" +" writer lock is held longer than the specified\n" +" time (in milliseconds) [off].\n" " --first-race-only=yes|no Only report the first data race that occurs on\n" " a memory location instead of all races [no].\n" +" --free-is-write=yes|no Whether to report races between freeing memory\n" +" and subsequent accesses of that memory[no].\n" " --report-signal-unlocked=yes|no Whether to report calls to\n" " pthread_cond_signal() where the mutex associated\n" " with the signal via pthread_cond_wait() is not\n" @@ -196,13 +207,15 @@ static void DRD_(print_usage)(void) " --segment-merging-interval= Perform segment merging every time n new\n" " segments have been created. Default: %d.\n" " --shared-threshold= Print an error message if a reader lock\n" -" is held longer than the specified time (in milliseconds).\n" +" is held longer than the specified time (in\n" +" milliseconds) [off]\n" " --show-confl-seg=yes|no Show conflicting segments in race reports [yes].\n" " --show-stack-usage=yes|no Print stack usage at thread exit time [no].\n" "\n" " drd options for monitoring process behavior:\n" " --trace-addr=
Trace all load and store activity for the.\n" " specified address [off].\n" +" --trace-alloc=yes|no Trace all memory allocations and deallocations\n"" [no].\n" " --trace-barrier=yes|no Trace all barrier activity [no].\n" " --trace-cond=yes|no Trace all condition variable activity [no].\n" " --trace-fork-join=yes|no Trace all thread fork/join activity [no].\n" @@ -253,6 +266,13 @@ static void drd_pre_mem_read_asciiz(const CorePart part, const char* p = (void*)a; SizeT size = 0; + // Don't segfault if the string starts in an obviously stupid + // place. Actually we should check the whole string, not just + // the start address, but that's too much trouble. At least + // checking the first byte is better than nothing. See #255009. + if (!VG_(am_is_valid_for_client) (a, 1, VKI_PROT_READ)) + return; + /* Note: the expression '*p' reads client memory and may crash if the */ /* client provided an invalid pointer ! */ while (*p) @@ -279,9 +299,20 @@ static void drd_post_mem_write(const CorePart part, } static __inline__ -void drd_start_using_mem(const Addr a1, const SizeT len) +void drd_start_using_mem(const Addr a1, const SizeT len, + const Bool is_stack_mem) { - tl_assert(a1 < a1 + len); + const Addr a2 = a1 + len; + + tl_assert(a1 <= a2); + + if (!is_stack_mem && s_trace_alloc) + VG_(message)(Vg_UserMsg, "Started using memory range 0x%lx + %ld%s\n", + a1, len, DRD_(running_thread_inside_pthread_create)() + ? " (inside pthread_create())" : ""); + + if (!is_stack_mem && DRD_(g_free_is_write)) + DRD_(thread_stop_using_mem)(a1, a2); if (UNLIKELY(DRD_(any_address_is_traced)())) { @@ -290,7 +321,7 @@ void drd_start_using_mem(const Addr a1, const SizeT len) if (UNLIKELY(DRD_(running_thread_inside_pthread_create)())) { - DRD_(start_suppression)(a1, a1 + len, "pthread_create()"); + DRD_(start_suppression)(a1, a2, "pthread_create()"); } } @@ -298,14 +329,14 @@ static void drd_start_using_mem_w_ecu(const Addr a1, const SizeT len, UInt ec_uniq) { - drd_start_using_mem(a1, len); + drd_start_using_mem(a1, len, False); } static void drd_start_using_mem_w_tid(const Addr a1, const SizeT len, ThreadId tid) { - drd_start_using_mem(a1, len); + drd_start_using_mem(a1, len, False); } static __inline__ @@ -314,15 +345,21 @@ void drd_stop_using_mem(const Addr a1, const SizeT len, { const Addr a2 = a1 + len; - tl_assert(a1 < a2); + tl_assert(a1 <= a2); if (UNLIKELY(DRD_(any_address_is_traced)())) - { DRD_(trace_mem_access)(a1, len, eEnd); - } - if (! is_stack_mem || DRD_(get_check_stack_accesses)()) + + if (!is_stack_mem && s_trace_alloc) + VG_(message)(Vg_UserMsg, "Stopped using memory range 0x%lx + %ld\n", + a1, len); + + if (!is_stack_mem || DRD_(get_check_stack_accesses)()) { - DRD_(thread_stop_using_mem)(a1, a2); + if (is_stack_mem || !DRD_(g_free_is_write)) + DRD_(thread_stop_using_mem)(a1, a2); + else if (DRD_(g_free_is_write)) + DRD_(trace_store)(a1, len); DRD_(clientobj_stop_using_mem)(a1, a2); DRD_(suppression_stop_using_mem)(a1, a2); } @@ -342,7 +379,7 @@ void DRD_(clean_memory)(const Addr a1, const SizeT len) { const Bool is_stack_memory = DRD_(thread_address_on_any_stack)(a1); drd_stop_using_mem(a1, len, is_stack_memory); - drd_start_using_mem(a1, len); + drd_start_using_mem(a1, len, is_stack_memory); } /** @@ -401,7 +438,7 @@ void drd_start_using_mem_w_perms(const Addr a, const SizeT len, { DRD_(thread_set_vg_running_tid)(VG_(get_running_tid)()); - drd_start_using_mem(a, len); + drd_start_using_mem(a, len, False); DRD_(suppress_relocation_conflicts)(a, len); } @@ -415,7 +452,8 @@ void drd_start_using_mem_stack(const Addr a, const SizeT len) DRD_(thread_set_stack_min)(DRD_(thread_get_running_tid)(), a - VG_STACK_REDZONE_SZB); drd_start_using_mem(a - VG_STACK_REDZONE_SZB, - len + VG_STACK_REDZONE_SZB); + len + VG_STACK_REDZONE_SZB, + True); } /* Called by the core when the stack of a thread shrinks, to indicate that */ @@ -430,6 +468,74 @@ void drd_stop_using_mem_stack(const Addr a, const SizeT len) True); } +static +Bool on_alt_stack(const Addr a) +{ + ThreadId vg_tid; + Addr alt_min; + SizeT alt_size; + + vg_tid = VG_(get_running_tid)(); + alt_min = VG_(thread_get_altstack_min)(vg_tid); + alt_size = VG_(thread_get_altstack_size)(vg_tid); + return (SizeT)(a - alt_min) < alt_size; +} + +static +void drd_start_using_mem_alt_stack(const Addr a, const SizeT len) +{ + if (!on_alt_stack(a)) + drd_start_using_mem_stack(a, len); +} + +static +void drd_stop_using_mem_alt_stack(const Addr a, const SizeT len) +{ + if (!on_alt_stack(a)) + drd_stop_using_mem_stack(a, len); +} + +/** + * Callback function invoked by the Valgrind core before a signal is delivered. + */ +static +void drd_pre_deliver_signal(const ThreadId vg_tid, const Int sigNo, + const Bool alt_stack) +{ + DrdThreadId drd_tid; + + drd_tid = DRD_(VgThreadIdToDrdThreadId)(vg_tid); + DRD_(thread_set_on_alt_stack)(drd_tid, alt_stack); + if (alt_stack) + { + /* + * As soon a signal handler has been invoked on the alternate stack, + * switch to stack memory handling functions that can handle the + * alternate stack. + */ + VG_(track_new_mem_stack)(drd_start_using_mem_alt_stack); + VG_(track_die_mem_stack)(drd_stop_using_mem_alt_stack); + } +} + +/** + * Callback function invoked by the Valgrind core after a signal is delivered, + * at least if the signal handler did not longjmp(). + */ +static +void drd_post_deliver_signal(const ThreadId vg_tid, const Int sigNo) +{ + DrdThreadId drd_tid; + + drd_tid = DRD_(VgThreadIdToDrdThreadId)(vg_tid); + DRD_(thread_set_on_alt_stack)(drd_tid, False); + if (DRD_(thread_get_threads_on_alt_stack)() == 0) + { + VG_(track_new_mem_stack)(drd_start_using_mem_stack); + VG_(track_die_mem_stack)(drd_stop_using_mem_stack); + } +} + /** * Callback function called by the Valgrind core before a stack area is * being used by a signal handler. @@ -443,7 +549,7 @@ static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len, ThreadId tid) { DRD_(thread_set_vg_running_tid)(VG_(get_running_tid)()); - drd_start_using_mem(a, len); + drd_start_using_mem(a, len, True); } static void drd_stop_using_mem_stack_signal(Addr a, SizeT len) @@ -512,7 +618,7 @@ static void drd_thread_finished(ThreadId vg_tid) ? "" : " (which is a detached thread)"); } - if (DRD_(s_show_stack_usage)) + if (s_show_stack_usage) { const SizeT stack_size = DRD_(thread_get_stack_size)(drd_tid); const SizeT used_stack @@ -539,6 +645,18 @@ static void drd_thread_finished(ThreadId vg_tid) DRD_(thread_finished)(drd_tid); } +/* + * Called immediately after fork for the child process only. 'tid' is the + * only surviving thread in the child process. Cleans up thread state. + * See also http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_atfork.html for a detailed discussion of using fork() in combination with mutexes. + */ +static +void drd__atfork_child(ThreadId tid) +{ + DRD_(drd_thread_atfork_child)(tid); +} + + // // Implementation of the tool interface. // @@ -551,7 +669,7 @@ static void DRD_(post_clo_init)(void) VG_(printf)("\nWARNING: DRD has not yet been tested on this operating system.\n\n"); # endif - if (DRD_(s_var_info)) + if (s_var_info) { VG_(needs_var_info)(); } @@ -572,7 +690,7 @@ static void DRD_(fini)(Int exitcode) "rerun with: -v\n"); } - if (VG_(clo_stats) || DRD_(s_print_stats)) + if (VG_(clo_stats) || s_print_stats) { ULong pu = DRD_(thread_get_update_conflict_set_count)(); ULong pu_seg_cr = DRD_(thread_get_update_conflict_set_new_sg_count)(); @@ -633,7 +751,7 @@ void drd_pre_clo_init(void) VG_(details_name) ("drd"); VG_(details_version) (NULL); VG_(details_description) ("a thread error detector"); - VG_(details_copyright_author)("Copyright (C) 2006-2010, and GNU GPL'd," + VG_(details_copyright_author)("Copyright (C) 2006-2011, and GNU GPL'd," " by Bart Van Assche."); VG_(details_bug_reports_to) (VG_BUGS_TO); @@ -662,10 +780,14 @@ void drd_pre_clo_init(void) VG_(track_die_mem_munmap) (drd_stop_using_nonstack_mem); VG_(track_die_mem_stack) (drd_stop_using_mem_stack); VG_(track_die_mem_stack_signal) (drd_stop_using_mem_stack_signal); + VG_(track_pre_deliver_signal) (drd_pre_deliver_signal); + VG_(track_post_deliver_signal) (drd_post_deliver_signal); VG_(track_start_client_code) (drd_start_client_code); VG_(track_pre_thread_ll_create) (drd_pre_thread_create); VG_(track_pre_thread_first_insn)(drd_post_thread_create); VG_(track_pre_thread_ll_exit) (drd_thread_finished); + VG_(atfork) (NULL/*pre*/, NULL/*parent*/, + drd__atfork_child/*child*/); // Other stuff. DRD_(register_malloc_wrappers)(drd_start_using_mem_w_ecu, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.c index 914498b6d..026b3b8d4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -109,19 +109,18 @@ void DRD_(malloclike_block)(const ThreadId tid, const Addr p, const SizeT size) static void handle_free(ThreadId tid, void* p) { - tl_assert(p); + Bool success; - if (DRD_(freelike_block)(tid, (Addr)p)) - VG_(cli_free)(p); - else - tl_assert(False); + tl_assert(p); + success = DRD_(freelike_block)(tid, (Addr)p, True); + tl_assert(success); } /** * Remove the information that was stored by DRD_(malloclike_block)() about * a memory block. */ -Bool DRD_(freelike_block)(const ThreadId tid, const Addr p) +Bool DRD_(freelike_block)(const ThreadId tid, const Addr p, const Bool dealloc) { DRD_Chunk* mc; @@ -129,12 +128,15 @@ Bool DRD_(freelike_block)(const ThreadId tid, const Addr p) s_cmalloc_n_frees++; - mc = VG_(HT_remove)(s_malloc_list, (UWord)p); + mc = VG_(HT_lookup)(s_malloc_list, (UWord)p); if (mc) { tl_assert(p == mc->data); + if (dealloc) + VG_(cli_free)((void*)p); if (mc->size > 0) s_stop_using_mem_callback(mc->data, mc->size); + VG_(HT_remove)(s_malloc_list, (UWord)p); VG_(free)(mc); return True; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.h index 175acce51..e10fb27ed 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_malloc_wrappers.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -38,7 +38,7 @@ typedef void (*StopUsingMem)(const Addr a1, const SizeT len); void DRD_(register_malloc_wrappers)(const StartUsingMem start_callback, const StopUsingMem stop_callback); void DRD_(malloclike_block)(const ThreadId tid, const Addr p, const SizeT size); -Bool DRD_(freelike_block)(const ThreadId tid, const Addr p); +Bool DRD_(freelike_block)(const ThreadId tid, const Addr p, const Bool dealloc); Bool DRD_(heap_addrinfo)(Addr const a, Addr* const data, SizeT* const size, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.c index 2cb1a3047..425eafe36 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -49,7 +49,7 @@ static void mutex_delete_thread(struct mutex_info* p, const DrdThreadId tid); static Bool s_trace_mutex; static ULong s_mutex_lock_count; static ULong s_mutex_segment_creation_count; -static UInt s_mutex_lock_threshold_ms = 1000 * 1000; +static UInt s_mutex_lock_threshold_ms; /* Function definitions. */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.h index 18ccab6d2..d2c05d3be 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_mutex.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_pthread_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_pthread_intercepts.c index f3026edd3..ac648e998 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_pthread_intercepts.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_pthread_intercepts.c @@ -1,4 +1,4 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /*--------------------------------------------------------------------*/ /*--- Client-space code for DRD. drd_pthread_intercepts.c ---*/ @@ -7,7 +7,7 @@ /* This file is part of DRD, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -51,6 +51,7 @@ #include /* assert() */ #include /* pthread_mutex_t */ #include /* sem_t */ +#include /* uintptr_t */ #include /* fprintf() */ #include /* malloc(), free() */ #include /* confstr() */ @@ -60,23 +61,18 @@ #include "pub_tool_redir.h" /* VG_WRAP_FUNCTION_ZZ() */ -/* Defines. */ - /* - * Do not undefine the two macro's below, or the following two subtle race - * conditions will be introduced in the data race detection algorithm: - * - sg_init() runs on the context of the created thread and copies the - * vector clock of the creator thread. This only works reliably if - * the creator thread waits until this copy has been performed. - * - Since DRD_(thread_compute_minimum_vc)() does not take the vector - * clocks into account that are involved in thread creation but - * for which the corresponding thread has not yet been created, by - * undefining the macro below it becomes possible that segments get - * discarded that should not yet be discarded. Or: some data races - * are not detected. + * Notes regarding thread creation: + * - sg_init() runs on the context of the created thread and copies the vector + * clock of the creator thread. This only works reliably if the creator + * thread waits until this copy has been performed. + * - DRD_(thread_compute_minimum_vc)() does not take the vector clocks into + * account that are involved in thread creation and for which the + * corresponding thread has not yet been created. So not waiting until the + * created thread has been started would make it possible that segments get + * discarded that should not yet be discarded. Or: some data races are not + * detected. */ -#define WAIT_UNTIL_CREATED_THREAD_STARTED -#define ALLOCATE_THREAD_ARGS_ON_THE_STACK /** * Macro for generating a Valgrind interception function. @@ -86,10 +82,25 @@ * @param[in] arg_decl Argument declaration list enclosed in parentheses. * @param[in] argl Argument list enclosed in parentheses. */ +#ifdef VGO_darwin +static int never_true; +#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ + { \ + ret_ty pth_func_result = implf argl; \ + /* Apparently inserting a function call in wrapper functions */ \ + /* is sufficient to avoid misaligned stack errors. */ \ + if (never_true) \ + fflush(stdout); \ + return pth_func_result; \ + } +#else #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ { return implf argl; } +#endif /** * Macro for generating three Valgrind interception functions: one with the @@ -123,9 +134,7 @@ typedef struct void* (*start)(void*); void* arg; int detachstate; -#if defined(WAIT_UNTIL_CREATED_THREAD_STARTED) int wrapper_started; -#endif } DrdPosixThreadArgs; @@ -181,6 +190,8 @@ static MutexT DRD_(pthread_to_drd_mutex_type)(const int kind) } } +#define IS_ALIGNED(p) (((uintptr_t)(p) & (sizeof(*(p)) - 1)) == 0) + /** * Read the mutex type stored in the client memory used for the mutex * implementation. @@ -198,19 +209,25 @@ static __always_inline MutexT DRD_(mutex_type)(pthread_mutex_t* mutex) { #if defined(HAVE_PTHREAD_MUTEX_T__M_KIND) /* glibc + LinuxThreads. */ - const int kind = mutex->__m_kind & 3; - return DRD_(pthread_to_drd_mutex_type)(kind); + if (IS_ALIGNED(&mutex->__m_kind)) + { + const int kind = mutex->__m_kind & 3; + return DRD_(pthread_to_drd_mutex_type)(kind); + } #elif defined(HAVE_PTHREAD_MUTEX_T__DATA__KIND) /* glibc + NPTL. */ - const int kind = mutex->__data.__kind & 3; - return DRD_(pthread_to_drd_mutex_type)(kind); + if (IS_ALIGNED(&mutex->__data.__kind)) + { + const int kind = mutex->__data.__kind & 3; + return DRD_(pthread_to_drd_mutex_type)(kind); + } #else /* * Another POSIX threads implementation. The mutex type won't be printed * when enabling --trace-mutex=yes. */ - return mutex_type_unknown; #endif + return mutex_type_unknown; } /** @@ -218,26 +235,23 @@ static __always_inline MutexT DRD_(mutex_type)(pthread_mutex_t* mutex) */ static void DRD_(set_joinable)(const pthread_t tid, const int joinable) { - int res; assert(joinable == 0 || joinable == 1); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__SET_JOINABLE, - tid, joinable, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__SET_JOINABLE, + tid, joinable, 0, 0, 0); } /** Tell DRD that the calling thread is about to enter pthread_create(). */ static __always_inline void DRD_(entering_pthread_create)(void) { - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__ENTERING_PTHREAD_CREATE, - 0, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__ENTERING_PTHREAD_CREATE, + 0, 0, 0, 0, 0); } /** Tell DRD that the calling thread has left pthread_create(). */ static __always_inline void DRD_(left_pthread_create)(void) { - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__LEFT_PTHREAD_CREATE, - 0, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__LEFT_PTHREAD_CREATE, + 0, 0, 0, 0, 0); } /** @@ -246,29 +260,25 @@ static __always_inline void DRD_(left_pthread_create)(void) */ static void* DRD_(thread_wrapper)(void* arg) { - int res; DrdPosixThreadArgs* arg_ptr; DrdPosixThreadArgs arg_copy; arg_ptr = (DrdPosixThreadArgs*)arg; arg_copy = *arg_ptr; -#if defined(WAIT_UNTIL_CREATED_THREAD_STARTED) - arg_ptr->wrapper_started = 1; -#else -#if defined(ALLOCATE_THREAD_ARGS_ON_THE_STACK) -#error Defining ALLOCATE_THREAD_ARGS_ON_THE_STACK but not \ - WAIT_UNTIL_CREATED_THREAD_STARTED is not supported. -#else - free(arg_ptr); -#endif -#endif - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__SET_PTHREADID, - pthread_self(), 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__SET_PTHREADID, + pthread_self(), 0, 0, 0, 0); DRD_(set_joinable)(pthread_self(), arg_copy.detachstate == PTHREAD_CREATE_JOINABLE); + /* + * Only set 'wrapper_started' after VG_USERREQ__SET_PTHREADID and + * DRD_(set_joinable)() have been invoked to avoid a race with + * a pthread_detach() invocation for this thread from another thread. + */ + arg_ptr->wrapper_started = 1; + return (arg_copy.start)(arg_copy.arg); } @@ -334,11 +344,9 @@ static void DRD_(check_threading_library)(void) */ static void DRD_(set_main_thread_state)(void) { - int res; - // Make sure that DRD knows about the main thread's POSIX thread ID. - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__SET_PTHREADID, - pthread_self(), 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__SET_PTHREADID, + pthread_self(), 0, 0, 0, 0); } /* @@ -363,73 +371,43 @@ static __always_inline int pthread_create_intercept(pthread_t* thread, const pthread_attr_t* attr, void* (*start)(void*), void* arg) { - int res; int ret; OrigFn fn; -#if defined(ALLOCATE_THREAD_ARGS_ON_THE_STACK) DrdPosixThreadArgs thread_args; -#endif - DrdPosixThreadArgs* thread_args_p; VALGRIND_GET_ORIG_FN(fn); -#if defined(ALLOCATE_THREAD_ARGS_ON_THE_STACK) - thread_args_p = &thread_args; -#else - thread_args_p = malloc(sizeof(*thread_args_p)); -#endif - assert(thread_args_p); - - thread_args_p->start = start; - thread_args_p->arg = arg; -#if defined(WAIT_UNTIL_CREATED_THREAD_STARTED) - DRD_IGNORE_VAR(thread_args_p->wrapper_started); - thread_args_p->wrapper_started = 0; -#endif + thread_args.start = start; + thread_args.arg = arg; + DRD_IGNORE_VAR(thread_args.wrapper_started); + thread_args.wrapper_started = 0; /* * Find out whether the thread will be started as a joinable thread * or as a detached thread. If no thread attributes have been specified, * this means that the new thread will be started as a joinable thread. */ - thread_args_p->detachstate = PTHREAD_CREATE_JOINABLE; + thread_args.detachstate = PTHREAD_CREATE_JOINABLE; if (attr) { - if (pthread_attr_getdetachstate(attr, &thread_args_p->detachstate) != 0) - { + if (pthread_attr_getdetachstate(attr, &thread_args.detachstate) != 0) assert(0); - } } - assert(thread_args_p->detachstate == PTHREAD_CREATE_JOINABLE - || thread_args_p->detachstate == PTHREAD_CREATE_DETACHED); - + assert(thread_args.detachstate == PTHREAD_CREATE_JOINABLE + || thread_args.detachstate == PTHREAD_CREATE_DETACHED); DRD_(entering_pthread_create)(); - CALL_FN_W_WWWW(ret, fn, thread, attr, DRD_(thread_wrapper), thread_args_p); + CALL_FN_W_WWWW(ret, fn, thread, attr, DRD_(thread_wrapper), &thread_args); DRD_(left_pthread_create)(); -#if defined(WAIT_UNTIL_CREATED_THREAD_STARTED) if (ret == 0) { - /* - * Wait until the thread wrapper started. - * @todo Find out why some regression tests fail if thread arguments are - * passed via dynamically allocated memory and if the loop below is - * removed. - */ - while (! thread_args_p->wrapper_started) - { + /* Wait until the thread wrapper started. */ + while (!thread_args.wrapper_started) sched_yield(); - } } -#if defined(ALLOCATE_THREAD_ARGS_DYNAMICALLY) - free(thread_args_p); -#endif - -#endif - - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__DRD_START_NEW_SEGMENT, - pthread_self(), 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__DRD_START_NEW_SEGMENT, + pthread_self(), 0, 0, 0, 0); return ret; } @@ -443,15 +421,14 @@ static __always_inline int pthread_join_intercept(pthread_t pt_joinee, void **thread_return) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); CALL_FN_W_WW(ret, fn, pt_joinee, thread_return); if (ret == 0) { - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_THREAD_JOIN, - pt_joinee, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_THREAD_JOIN, + pt_joinee, 0, 0, 0, 0); } return ret; } @@ -465,14 +442,11 @@ int pthread_detach_intercept(pthread_t pt_thread) { int ret; OrigFn fn; + VALGRIND_GET_ORIG_FN(fn); - { - CALL_FN_W_W(ret, fn, pt_thread); - if (ret == 0) - { - DRD_(set_joinable)(pt_thread, 0); - } - } + CALL_FN_W_W(ret, fn, pt_thread); + DRD_(set_joinable)(pt_thread, 0); + return ret; } @@ -485,15 +459,14 @@ PTH_FUNCS(int, pthreadZudetach, pthread_detach_intercept, static __always_inline int pthread_cancel_intercept(pthread_t pt_thread) { - int res; int ret; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_THREAD_CANCEL, - pt_thread, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_THREAD_CANCEL, + pt_thread, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, pt_thread); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_THREAD_CANCEL, - pt_thread, ret==0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_THREAD_CANCEL, + pt_thread, ret==0, 0, 0, 0); return ret; } @@ -527,19 +500,18 @@ int pthread_mutex_init_intercept(pthread_mutex_t *mutex, const pthread_mutexattr_t* attr) { int ret; - int res; OrigFn fn; int mt; VALGRIND_GET_ORIG_FN(fn); mt = PTHREAD_MUTEX_DEFAULT; if (attr) pthread_mutexattr_gettype(attr, &mt); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT, - mutex, DRD_(pthread_to_drd_mutex_type)(mt), - 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_INIT, + mutex, DRD_(pthread_to_drd_mutex_type)(mt), + 0, 0, 0); CALL_FN_W_WW(ret, fn, mutex, attr); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_INIT, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_INIT, + mutex, 0, 0, 0, 0); return ret; } @@ -551,14 +523,13 @@ static __always_inline int pthread_mutex_destroy_intercept(pthread_mutex_t* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_DESTROY, + mutex, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_DESTROY, - mutex, DRD_(mutex_type)(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_DESTROY, + mutex, DRD_(mutex_type)(mutex), 0, 0, 0); return ret; } @@ -569,14 +540,13 @@ static __always_inline int pthread_mutex_lock_intercept(pthread_mutex_t* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, DRD_(mutex_type)(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, DRD_(mutex_type)(mutex), 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__POST_MUTEX_LOCK, - mutex, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__POST_MUTEX_LOCK, + mutex, ret == 0, 0, 0, 0); return ret; } @@ -587,14 +557,13 @@ static __always_inline int pthread_mutex_trylock_intercept(pthread_mutex_t* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, DRD_(mutex_type)(mutex), 1, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, DRD_(mutex_type)(mutex), 1, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - mutex, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + mutex, ret == 0, 0, 0, 0); return ret; } @@ -606,14 +575,13 @@ int pthread_mutex_timedlock_intercept(pthread_mutex_t *mutex, const struct timespec *abs_timeout) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, DRD_(mutex_type)(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, DRD_(mutex_type)(mutex), 0, 0, 0); CALL_FN_W_WW(ret, fn, mutex, abs_timeout); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - mutex, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + mutex, ret == 0, 0, 0, 0); return ret; } @@ -625,16 +593,13 @@ static __always_inline int pthread_mutex_unlock_intercept(pthread_mutex_t *mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, - VG_USERREQ__PRE_MUTEX_UNLOCK, - mutex, DRD_(mutex_type)(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_UNLOCK, + mutex, DRD_(mutex_type)(mutex), 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, - VG_USERREQ__POST_MUTEX_UNLOCK, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_UNLOCK, + mutex, 0, 0, 0, 0); return ret; } @@ -646,14 +611,13 @@ int pthread_cond_init_intercept(pthread_cond_t* cond, const pthread_condattr_t* attr) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_INIT, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_INIT, + cond, 0, 0, 0, 0); CALL_FN_W_WW(ret, fn, cond, attr); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_INIT, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_INIT, + cond, 0, 0, 0, 0); return ret; } @@ -665,14 +629,13 @@ static __always_inline int pthread_cond_destroy_intercept(pthread_cond_t* cond) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_DESTROY, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_DESTROY, + cond, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, cond); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_DESTROY, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_DESTROY, + cond, 0, 0, 0, 0); return ret; } @@ -683,14 +646,13 @@ static __always_inline int pthread_cond_wait_intercept(pthread_cond_t *cond, pthread_mutex_t *mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_WAIT, - cond, mutex, DRD_(mutex_type)(mutex), 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_WAIT, + cond, mutex, DRD_(mutex_type)(mutex), 0, 0); CALL_FN_W_WW(ret, fn, cond, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_WAIT, - cond, mutex, 1, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_WAIT, + cond, mutex, 1, 0, 0); return ret; } @@ -704,14 +666,13 @@ int pthread_cond_timedwait_intercept(pthread_cond_t *cond, const struct timespec* abstime) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_WAIT, - cond, mutex, DRD_(mutex_type)(mutex), 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_WAIT, + cond, mutex, DRD_(mutex_type)(mutex), 0, 0); CALL_FN_W_WWW(ret, fn, cond, mutex, abstime); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_WAIT, - cond, mutex, 1, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_WAIT, + cond, mutex, 1, 0, 0); return ret; } @@ -730,14 +691,13 @@ static __always_inline int pthread_cond_signal_intercept(pthread_cond_t* cond) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_SIGNAL, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_SIGNAL, + cond, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, cond); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_SIGNAL, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_SIGNAL, + cond, 0, 0, 0, 0); return ret; } @@ -748,14 +708,13 @@ static __always_inline int pthread_cond_broadcast_intercept(pthread_cond_t* cond) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_BROADCAST, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_COND_BROADCAST, + cond, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, cond); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_BROADCAST, - cond, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_COND_BROADCAST, + cond, 0, 0, 0, 0); return ret; } @@ -767,14 +726,13 @@ static __always_inline int pthread_spin_init_intercept(pthread_spinlock_t *spinlock, int pshared) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK, - spinlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK, + spinlock, 0, 0, 0, 0); CALL_FN_W_WW(ret, fn, spinlock, pshared); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SPIN_INIT_OR_UNLOCK, - spinlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SPIN_INIT_OR_UNLOCK, + spinlock, 0, 0, 0, 0); return ret; } @@ -785,14 +743,13 @@ static __always_inline int pthread_spin_destroy_intercept(pthread_spinlock_t *spinlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY, - spinlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_DESTROY, + spinlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, spinlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_DESTROY, - spinlock, mutex_type_spinlock, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_DESTROY, + spinlock, mutex_type_spinlock, 0, 0, 0); return ret; } @@ -803,14 +760,13 @@ static __always_inline int pthread_spin_lock_intercept(pthread_spinlock_t *spinlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - spinlock, mutex_type_spinlock, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + spinlock, mutex_type_spinlock, 0, 0, 0); CALL_FN_W_W(ret, fn, spinlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - spinlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + spinlock, ret == 0, 0, 0, 0); return ret; } @@ -821,14 +777,13 @@ static __always_inline int pthread_spin_trylock_intercept(pthread_spinlock_t *spinlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - spinlock, mutex_type_spinlock, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + spinlock, mutex_type_spinlock, 0, 0, 0); CALL_FN_W_W(ret, fn, spinlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - spinlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + spinlock, ret == 0, 0, 0, 0); return ret; } @@ -839,14 +794,13 @@ static __always_inline int pthread_spin_unlock_intercept(pthread_spinlock_t *spinlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK, - spinlock, mutex_type_spinlock, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK, + spinlock, mutex_type_spinlock, 0, 0, 0); CALL_FN_W_W(ret, fn, spinlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SPIN_INIT_OR_UNLOCK, - spinlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SPIN_INIT_OR_UNLOCK, + spinlock, 0, 0, 0, 0); return ret; } @@ -862,14 +816,13 @@ int pthread_barrier_init_intercept(pthread_barrier_t* barrier, unsigned count) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_INIT, - barrier, pthread_barrier, count, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_BARRIER_INIT, + barrier, pthread_barrier, count, 0, 0); CALL_FN_W_WWW(ret, fn, barrier, attr, count); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_INIT, - barrier, pthread_barrier, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_BARRIER_INIT, + barrier, pthread_barrier, 0, 0, 0); return ret; } @@ -881,14 +834,13 @@ static __always_inline int pthread_barrier_destroy_intercept(pthread_barrier_t* barrier) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_DESTROY, - barrier, pthread_barrier, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_BARRIER_DESTROY, + barrier, pthread_barrier, 0, 0, 0); CALL_FN_W_W(ret, fn, barrier); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_DESTROY, - barrier, pthread_barrier, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_BARRIER_DESTROY, + barrier, pthread_barrier, 0, 0, 0); return ret; } @@ -899,13 +851,12 @@ static __always_inline int pthread_barrier_wait_intercept(pthread_barrier_t* barrier) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_WAIT, - barrier, pthread_barrier, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_BARRIER_WAIT, + barrier, pthread_barrier, 0, 0, 0); CALL_FN_W_W(ret, fn, barrier); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_WAIT, + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_BARRIER_WAIT, barrier, pthread_barrier, ret == 0 || ret == PTHREAD_BARRIER_SERIAL_THREAD, ret == PTHREAD_BARRIER_SERIAL_THREAD, 0); @@ -921,14 +872,13 @@ static __always_inline int sem_init_intercept(sem_t *sem, int pshared, unsigned int value) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_INIT, - sem, pshared, value, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_INIT, + sem, pshared, value, 0, 0); CALL_FN_W_WWW(ret, fn, sem, pshared, value); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_INIT, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_INIT, + sem, 0, 0, 0, 0); return ret; } @@ -939,14 +889,13 @@ static __always_inline int sem_destroy_intercept(sem_t *sem) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_DESTROY, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_DESTROY, + sem, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, sem); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_DESTROY, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_DESTROY, + sem, 0, 0, 0, 0); return ret; } @@ -957,15 +906,14 @@ sem_t* sem_open_intercept(const char *name, int oflag, mode_t mode, unsigned int value) { sem_t *ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_OPEN, - name, oflag, mode, value, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_OPEN, + name, oflag, mode, value, 0); CALL_FN_W_WWWW(ret, fn, name, oflag, mode, value); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_OPEN, - ret != SEM_FAILED ? ret : 0, - name, oflag, mode, value); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_OPEN, + ret != SEM_FAILED ? ret : 0, + name, oflag, mode, value); return ret; } @@ -976,14 +924,13 @@ PTH_FUNCS(sem_t *, semZuopen, sem_open_intercept, static __always_inline int sem_close_intercept(sem_t *sem) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_CLOSE, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_CLOSE, + sem, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, sem); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_CLOSE, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_CLOSE, + sem, 0, 0, 0, 0); return ret; } @@ -992,14 +939,13 @@ PTH_FUNCS(int, semZuclose, sem_close_intercept, (sem_t *sem), (sem)); static __always_inline int sem_wait_intercept(sem_t *sem) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_WAIT, + sem, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, sem); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_WAIT, - sem, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_WAIT, + sem, ret == 0, 0, 0, 0); return ret; } @@ -1008,14 +954,13 @@ PTH_FUNCS(int, semZuwait, sem_wait_intercept, (sem_t *sem), (sem)); static __always_inline int sem_trywait_intercept(sem_t *sem) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_WAIT, + sem, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, sem); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_WAIT, - sem, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_WAIT, + sem, ret == 0, 0, 0, 0); return ret; } @@ -1025,14 +970,13 @@ static __always_inline int sem_timedwait_intercept(sem_t *sem, const struct timespec *abs_timeout) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_WAIT, + sem, 0, 0, 0, 0); CALL_FN_W_WW(ret, fn, sem, abs_timeout); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_WAIT, - sem, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_WAIT, + sem, ret == 0, 0, 0, 0); return ret; } @@ -1043,14 +987,13 @@ PTH_FUNCS(int, semZutimedwait, sem_timedwait_intercept, static __always_inline int sem_post_intercept(sem_t *sem) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_POST, - sem, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_SEM_POST, + sem, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, sem); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_SEM_POST, - sem, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_SEM_POST, + sem, ret == 0, 0, 0, 0); return ret; } @@ -1061,11 +1004,10 @@ int pthread_rwlock_init_intercept(pthread_rwlock_t* rwlock, const pthread_rwlockattr_t* attr) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_INIT, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_INIT, + rwlock, 0, 0, 0, 0); CALL_FN_W_WW(ret, fn, rwlock, attr); return ret; } @@ -1079,12 +1021,11 @@ static __always_inline int pthread_rwlock_destroy_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_DESTROY, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_DESTROY, + rwlock, 0, 0, 0, 0); return ret; } @@ -1096,14 +1037,13 @@ static __always_inline int pthread_rwlock_rdlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_RDLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_RDLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1115,14 +1055,13 @@ static __always_inline int pthread_rwlock_wrlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_WRLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_WRLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1134,14 +1073,13 @@ static __always_inline int pthread_rwlock_timedrdlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_RDLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_RDLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1153,14 +1091,13 @@ static __always_inline int pthread_rwlock_timedwrlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_WRLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_WRLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1172,14 +1109,13 @@ static __always_inline int pthread_rwlock_tryrdlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_RDLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_RDLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1191,14 +1127,13 @@ static __always_inline int pthread_rwlock_trywrlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_WRLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_WRLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } @@ -1210,14 +1145,13 @@ static __always_inline int pthread_rwlock_unlock_intercept(pthread_rwlock_t* rwlock) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_UNLOCK, - rwlock, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_RWLOCK_UNLOCK, + rwlock, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_UNLOCK, - rwlock, ret == 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_RWLOCK_UNLOCK, + rwlock, ret == 0, 0, 0, 0); return ret; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_qtcore_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_qtcore_intercepts.c index 3c256f884..bd55fa44b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_qtcore_intercepts.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_qtcore_intercepts.c @@ -1,4 +1,4 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /*--------------------------------------------------------------------*/ /*--- Client-space code for drd. drd_qtcore_intercepts.c ---*/ @@ -7,7 +7,7 @@ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -90,14 +90,13 @@ QT4CORE_FUNC(void, _ZN6QMutexC1ENS_13RecursionModeE, qt_mutex_mode mode) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT, - mutex, qt_to_drd_mutex_type(mode), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_INIT, + mutex, qt_to_drd_mutex_type(mode), 0, 0, 0); CALL_FN_W_WW(ret, fn, mutex, mode); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_INIT, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_INIT, + mutex, 0, 0, 0, 0); } // QMutex::QMutex(RecursionMode) -- _ZN6QMutexC2ENS_13RecursionModeE @@ -106,14 +105,13 @@ QT4CORE_FUNC(void, _ZN6QMutexC2ENS_13RecursionModeE, qt_mutex_mode mode) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT, - mutex, qt_to_drd_mutex_type(mode), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_INIT, + mutex, qt_to_drd_mutex_type(mode), 0, 0, 0); CALL_FN_W_WW(ret, fn, mutex, mode); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_INIT, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_INIT, + mutex, 0, 0, 0, 0); } // QMutex::~QMutex() -- _ZN6QMutexD1Ev @@ -121,14 +119,13 @@ QT4CORE_FUNC(void, _ZN6QMutexD1Ev, void* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_DESTROY, + mutex, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_DESTROY, - mutex, mutex_type(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_DESTROY, + mutex, mutex_type(mutex), 0, 0, 0); } // QMutex::~QMutex() -- _ZN6QMutexD2Ev @@ -136,14 +133,13 @@ QT4CORE_FUNC(void, _ZN6QMutexD2Ev, void** mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_DESTROY, + mutex, 0, 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_DESTROY, - mutex, mutex_type(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_DESTROY, + mutex, mutex_type(mutex), 0, 0, 0); } // QMutex::lock() -- _ZN6QMutex4lockEv @@ -151,14 +147,13 @@ QT4CORE_FUNC(void, _ZN6QMutex4lockEv, void* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, mutex_type(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, mutex_type(mutex), 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__POST_MUTEX_LOCK, - mutex, 1, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__POST_MUTEX_LOCK, + mutex, 1, 0, 0, 0); } // QMutex::tryLock() -- _ZN6QMutex7tryLockEv @@ -166,14 +161,13 @@ QT4CORE_FUNC(int, _ZN6QMutex7tryLockEv, void* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, mutex_type(mutex), 1, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, mutex_type(mutex), 1, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - mutex, ret, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + mutex, ret, 0, 0, 0); return ret; } @@ -183,14 +177,13 @@ QT4CORE_FUNC(int, _ZN6QMutex7tryLockEi, int timeout_ms) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK, - mutex, mutex_type(mutex), 1, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRE_MUTEX_LOCK, + mutex, mutex_type(mutex), 1, 0, 0); CALL_FN_W_WW(ret, fn, mutex, timeout_ms); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_LOCK, - mutex, ret, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_LOCK, + mutex, ret, 0, 0, 0); return ret; } @@ -199,14 +192,11 @@ QT4CORE_FUNC(void, _ZN6QMutex6unlockEv, void* mutex) { int ret; - int res; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); - VALGRIND_DO_CLIENT_REQUEST(res, -1, - VG_USERREQ__PRE_MUTEX_UNLOCK, - mutex, mutex_type(mutex), 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__PRE_MUTEX_UNLOCK, + mutex, mutex_type(mutex), 0, 0, 0); CALL_FN_W_W(ret, fn, mutex); - VALGRIND_DO_CLIENT_REQUEST(res, -1, - VG_USERREQ__POST_MUTEX_UNLOCK, - mutex, 0, 0, 0, 0); + VALGRIND_DO_CLIENT_REQUEST_EXPR(-1, VG_USERREQ__POST_MUTEX_UNLOCK, + mutex, 0, 0, 0, 0); } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.c index 56fa2163a..3a0c601a9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.h index da0b4aec3..291402746 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_rwlock.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.c index ffd0c598f..a8d11454f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.h index ba31cb0f1..8eeceb9d2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_segment.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.c index 1cb03a570..5c8298322 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -202,7 +202,7 @@ struct semaphore_info* DRD_(semaphore_init)(const Addr semaphore, { #if defined(VGO_darwin) const ThreadId vg_tid = VG_(get_running_tid)(); - GenericErrInfo GEI = { DRD_(thread_get_running_tid)(), NULL }; + GenericErrInfo GEI = { DRD_(thread_get_running_tid)(), 0 }; VG_(maybe_record_error)(vg_tid, GenericErr, VG_(get_IP)(vg_tid), @@ -405,18 +405,15 @@ void DRD_(semaphore_post_wait)(const DrdThreadId tid, const Addr semaphore, { sg = drd_segment_pop(p); tl_assert(sg); - if (sg) + if (p->last_sem_post_tid != tid + && p->last_sem_post_tid != DRD_INVALID_THREADID) { - if (p->last_sem_post_tid != tid - && p->last_sem_post_tid != DRD_INVALID_THREADID) - { - DRD_(thread_new_segment_and_combine_vc)(tid, sg); - } - else - DRD_(thread_new_segment)(tid); - s_semaphore_segment_creation_count++; - DRD_(sg_put)(sg); + DRD_(thread_new_segment_and_combine_vc)(tid, sg); } + else + DRD_(thread_new_segment)(tid); + s_semaphore_segment_creation_count++; + DRD_(sg_put)(sg); } } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.h index 8bcdf2510..07ebf3913 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_semaphore.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_strmem_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_strmem_intercepts.c index 1a87f4260..70beee57b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_strmem_intercepts.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_strmem_intercepts.c @@ -1,4 +1,4 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /*--------------------------------------------------------------------*/ /*--- Replacements for strlen() and strnlen(), which run on the ---*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.c index cfe4b037d..bf0041183 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -69,7 +69,7 @@ void DRD_(start_suppression)(const Addr a1, const Addr a2, a1, a2 - a1, reason); } - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_access_range_store)(DRD_(s_suppressed), a1, a2); } @@ -82,7 +82,7 @@ void DRD_(finish_suppression)(const Addr a1, const Addr a2) VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), 12); } - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear_store)(DRD_(s_suppressed), a1, a2); } @@ -118,7 +118,7 @@ Bool DRD_(range_contains_suppression_or_hbvar)(const Addr a1, const Addr a2) void DRD_(start_tracing_address_range)(const Addr a1, const Addr a2) { - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_access_range_load)(DRD_(s_traced), a1, a2); if (! DRD_(g_any_address_traced)) @@ -129,7 +129,7 @@ void DRD_(start_tracing_address_range)(const Addr a1, const Addr a2) void DRD_(stop_tracing_address_range)(const Addr a1, const Addr a2) { - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear_load)(DRD_(s_traced), a1, a2); if (DRD_(g_any_address_traced)) @@ -160,7 +160,7 @@ void DRD_(suppression_stop_using_mem)(const Addr a1, const Addr a2) } } tl_assert(a1); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear)(DRD_(s_suppressed), a1, a2); DRD_(bm_clear)(DRD_(s_traced), a1, a2); } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.h index 40e0f4c54..94cc34f0c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_suppression.h @@ -1,4 +1,4 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ #ifndef __PUB_CORE_DRD_H #define __PUB_CORE_DRD_H diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.c index a12553a42..1b3262e99 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -181,6 +181,7 @@ static DrdThreadId DRD_(VgThreadIdToNewDrdThreadId)(const ThreadId tid) DRD_(g_threadinfo)[i].stack_startup = 0; DRD_(g_threadinfo)[i].stack_max = 0; DRD_(thread_set_name)(i, ""); + DRD_(g_threadinfo)[i].on_alt_stack = False; DRD_(g_threadinfo)[i].is_recording_loads = True; DRD_(g_threadinfo)[i].is_recording_stores = True; DRD_(g_threadinfo)[i].pthread_create_nesting_level = 0; @@ -366,7 +367,7 @@ void DRD_(thread_post_join)(DrdThreadId drd_joiner, DrdThreadId drd_joinee) DRD_(thread_get_stack_max)(drd_joinee)); } DRD_(clientobj_delete_thread)(drd_joinee); - DRD_(thread_delete)(drd_joinee); + DRD_(thread_delete)(drd_joinee, False); } /** @@ -420,11 +421,36 @@ SizeT DRD_(thread_get_stack_size)(const DrdThreadId tid) return DRD_(g_threadinfo)[tid].stack_size; } +Bool DRD_(thread_get_on_alt_stack)(const DrdThreadId tid) +{ + tl_assert(0 <= (int)tid && tid < DRD_N_THREADS + && tid != DRD_INVALID_THREADID); + return DRD_(g_threadinfo)[tid].on_alt_stack; +} + +void DRD_(thread_set_on_alt_stack)(const DrdThreadId tid, + const Bool on_alt_stack) +{ + tl_assert(0 <= (int)tid && tid < DRD_N_THREADS + && tid != DRD_INVALID_THREADID); + tl_assert(on_alt_stack == !!on_alt_stack); + DRD_(g_threadinfo)[tid].on_alt_stack = on_alt_stack; +} + +Int DRD_(thread_get_threads_on_alt_stack)(void) +{ + int i, n = 0; + + for (i = 1; i < DRD_N_THREADS; i++) + n += DRD_(g_threadinfo)[i].on_alt_stack; + return n; +} + /** * Clean up thread-specific data structures. Call this just after * pthread_join(). */ -void DRD_(thread_delete)(const DrdThreadId tid) +void DRD_(thread_delete)(const DrdThreadId tid, const Bool detached) { Segment* sg; Segment* sg_prev; @@ -441,7 +467,10 @@ void DRD_(thread_delete)(const DrdThreadId tid) } DRD_(g_threadinfo)[tid].vg_thread_exists = False; DRD_(g_threadinfo)[tid].posix_thread_exists = False; - tl_assert(DRD_(g_threadinfo)[tid].detached_posix_thread == False); + if (detached) + DRD_(g_threadinfo)[tid].detached_posix_thread = False; + else + tl_assert(!DRD_(g_threadinfo)[tid].detached_posix_thread); DRD_(g_threadinfo)[tid].first = 0; DRD_(g_threadinfo)[tid].last = 0; @@ -478,6 +507,21 @@ void DRD_(thread_finished)(const DrdThreadId tid) } } +/** Called just after fork() in the child process. */ +void DRD_(drd_thread_atfork_child)(const DrdThreadId tid) +{ + unsigned i; + + for (i = 1; i < DRD_N_THREADS; i++) + { + if (i == tid) + continue; + if (DRD_(IsValidDrdThreadId(i))) + DRD_(thread_delete)(i, True); + tl_assert(!DRD_(IsValidDrdThreadId(i))); + } +} + /** Called just before pthread_cancel(). */ void DRD_(thread_pre_cancel)(const DrdThreadId tid) { @@ -485,7 +529,9 @@ void DRD_(thread_pre_cancel)(const DrdThreadId tid) && tid != DRD_INVALID_THREADID); tl_assert(DRD_(g_threadinfo)[tid].pt_threadid != INVALID_POSIX_THREADID); - DRD_(g_threadinfo)[tid].synchr_nesting = 0; + if (DRD_(thread_get_trace_fork_join)()) + VG_(message)(Vg_UserMsg, "[%d] drd_thread_pre_cancel %d\n", + DRD_(g_drd_running_tid), tid); } /** @@ -1114,18 +1160,13 @@ void DRD_(thread_stop_using_mem)(const Addr a1, const Addr a2) for (i = 0; i < DRD_N_THREADS; i++) { Segment* p; - for (p = DRD_(g_threadinfo)[i].first; p; p = p->next) - { + for (p = DRD_(g_threadinfo)[i].first; p; p = p->next) { if (other_user == DRD_INVALID_THREADID - && i != DRD_(g_drd_running_tid)) - { + && i != DRD_(g_drd_running_tid)) { if (UNLIKELY(DRD_(bm_test_and_clear)(DRD_(sg_bm)(p), a1, a2))) - { other_user = i; - } - continue; - } - DRD_(bm_clear)(DRD_(sg_bm)(p), a1, a2); + } else + DRD_(bm_clear)(DRD_(sg_bm)(p), a1, a2); } } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.h index a3601896d..50c2e0db8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -77,6 +77,7 @@ typedef struct Addr stack_max; /**< Top of stack. */ SizeT stack_size; /**< Maximum size of stack. */ char name[64]; /**< User-assigned thread name. */ + Bool on_alt_stack; /** Indicates whether the Valgrind core knows about this thread. */ Bool vg_thread_exists; /** Indicates whether there is an associated POSIX thread ID. */ @@ -133,8 +134,9 @@ DrdThreadId DRD_(thread_pre_create)(const DrdThreadId creator, const ThreadId vg_created); DrdThreadId DRD_(thread_post_create)(const ThreadId vg_created); void DRD_(thread_post_join)(DrdThreadId drd_joiner, DrdThreadId drd_joinee); -void DRD_(thread_delete)(const DrdThreadId tid); +void DRD_(thread_delete)(const DrdThreadId tid, Bool detached); void DRD_(thread_finished)(const DrdThreadId tid); +void DRD_(drd_thread_atfork_child)(const DrdThreadId tid); void DRD_(thread_pre_cancel)(const DrdThreadId tid); void DRD_(thread_set_stack_startup)(const DrdThreadId tid, const Addr stack_startup); @@ -142,6 +144,10 @@ Addr DRD_(thread_get_stack_min)(const DrdThreadId tid); Addr DRD_(thread_get_stack_min_min)(const DrdThreadId tid); Addr DRD_(thread_get_stack_max)(const DrdThreadId tid); SizeT DRD_(thread_get_stack_size)(const DrdThreadId tid); +Bool DRD_(thread_get_on_alt_stack)(const DrdThreadId tid); +void DRD_(thread_set_on_alt_stack)(const DrdThreadId tid, + const Bool on_alt_stack); +Int DRD_(thread_get_threads_on_alt_stack)(void); void DRD_(thread_set_pthreadid)(const DrdThreadId tid, const PThreadId ptid); Bool DRD_(thread_get_joinable)(const DrdThreadId tid); void DRD_(thread_set_joinable)(const DrdThreadId tid, const Bool joinable); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread_bitmap.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread_bitmap.h index bd8e8a8a4..1303d1445 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread_bitmap.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_thread_bitmap.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.c index 05e138b02..88d541f73 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.c @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.h index 49d2ebaa0..7ce2c6503 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/drd_vc.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/pub_drd_bitmap.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/pub_drd_bitmap.h index b7d5f2658..80a02bcd7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/pub_drd_bitmap.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/pub_drd_bitmap.h @@ -1,8 +1,8 @@ -/* -*- mode: C; c-basic-offset: 3; -*- */ +/* -*- mode: C; c-basic-offset: 3; indent-tabs-mode: nil; -*- */ /* This file is part of drd, a thread error detector. - Copyright (C) 2006-2010 Bart Van Assche . + Copyright (C) 2006-2011 Bart Van Assche . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/scripts/ppc-cross/download-and-build-ppc-crosscompiler b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/scripts/ppc-cross/download-and-build-ppc-crosscompiler index f478a250f..8b132bb9a 100755 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/scripts/ppc-cross/download-and-build-ppc-crosscompiler +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/scripts/ppc-cross/download-and-build-ppc-crosscompiler @@ -4,7 +4,7 @@ # # Script for generating a PowerPC cross compiler using crosstool. # -# Copyright (C) 2009 Bart Van Assche . +# Copyright (C) 2009 Bart Van Assche . # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.am index 857d2275e..2a259558b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.am @@ -68,10 +68,16 @@ EXTRA_DIST = \ circular_buffer.vgtest \ custom_alloc.stderr.exp \ custom_alloc.vgtest \ + custom_alloc_fiw.stderr.exp \ + custom_alloc_fiw.vgtest \ fp_race.stderr.exp \ fp_race.vgtest \ fp_race2.stderr.exp \ fp_race2.vgtest \ + free_is_write.stderr.exp \ + free_is_write.vgtest \ + free_is_write2.stderr.exp \ + free_is_write2.vgtest \ hg01_all_ok.stderr.exp \ hg01_all_ok.vgtest \ hg02_deadlock.stderr.exp \ @@ -146,6 +152,9 @@ EXTRA_DIST = \ pth_detached2.stderr.exp \ pth_detached2.stdout.exp \ pth_detached2.vgtest \ + pth_detached3.stderr.exp1 \ + pth_detached3.stderr.exp2 \ + pth_detached3.vgtest \ pth_detached_sem.stderr.exp \ pth_detached_sem.stdout.exp \ pth_detached_sem.vgtest \ @@ -170,6 +179,8 @@ EXTRA_DIST = \ qt4_rwlock.vgtest \ qt4_semaphore.stderr.exp \ qt4_semaphore.vgtest \ + read_and_free_race.stderr.exp \ + read_and_free_race.vgtest \ recursive_mutex.stderr.exp-linux \ recursive_mutex.stderr.exp-darwin \ recursive_mutex.vgtest \ @@ -196,6 +207,8 @@ EXTRA_DIST = \ sem_open_traced.vgtest \ sigalrm.stderr.exp \ sigalrm.vgtest \ + sigaltstack.stderr.exp \ + sigaltstack.vgtest \ tc01_simple_race.stderr.exp \ tc01_simple_race.vgtest \ tc02_simple_tls.stderr.exp \ @@ -244,12 +257,15 @@ EXTRA_DIST = \ tc22_exit_w_lock.vgtest \ tc23_bogus_condwait.stderr.exp-linux-x86 \ tc23_bogus_condwait.stderr.exp-linux-ppc \ - tc23_bogus_condwait.stderr.exp-darwin \ + tc23_bogus_condwait.stderr.exp-darwin-x86 \ + tc23_bogus_condwait.stderr.exp-darwin-amd64 \ tc23_bogus_condwait.vgtest \ tc24_nonzero_sem.stderr.exp \ tc24_nonzero_sem.vgtest \ thread_name.stderr.exp \ thread_name.vgtest \ + threaded-fork.stderr.exp \ + threaded-fork.vgtest \ trylock.stderr.exp \ trylock.vgtest \ unit_bitmap.stderr.exp \ @@ -268,6 +284,7 @@ check_PROGRAMS = \ bug-235681 \ custom_alloc \ fp_race \ + free_is_write \ hold_lock \ linuxthreads_det \ memory_allocation \ @@ -280,6 +297,7 @@ check_PROGRAMS = \ pth_create_chain \ pth_detached \ pth_detached_sem \ + pth_detached3 \ pth_inconsistent_cond_wait \ pth_mutex_reinit \ pth_process_shared_mutex \ @@ -292,6 +310,7 @@ check_PROGRAMS = \ sem_open \ sigalrm \ thread_name \ + threaded-fork \ trylock \ unit_bitmap \ unit_vc @@ -304,9 +323,13 @@ if HAVE_BUILTIN_ATOMIC check_PROGRAMS += \ annotate_barrier \ annotate_rwlock \ - annotate_smart_pointer \ atomic_var \ - circular_buffer \ + circular_buffer +endif + +if HAVE_BUILTIN_ATOMIC_CXX +check_PROGRAMS += \ + annotate_smart_pointer \ tsan_unittest endif @@ -326,14 +349,6 @@ if HAVE_PTHREAD_SPINLOCK check_PROGRAMS += pth_spinlock endif -if HAVE_QTCORE -check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore -endif - -if HAVE_QTCORE_QATOMICINT -check_PROGRAMS += qt4_atomic -endif - AM_CFLAGS += $(AM_FLAG_M3264_PRI) @FLAG_W_EXTRA@ -Wno-inline -Wno-unused-parameter AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) @FLAG_W_EXTRA@ -Wno-inline -Wno-unused-parameter @@ -387,23 +402,3 @@ endif if HAVE_PTHREAD_BARRIER matinv_LDADD = $(LDADD) -lm endif - -if HAVE_QTCORE -qt4_mutex_SOURCES = qt4_mutex.cpp -qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_mutex_LDADD = $(LDADD) $(QTCORE_LIBS) - -qt4_rwlock_SOURCES = qt4_rwlock.cpp -qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_rwlock_LDADD = $(LDADD) $(QTCORE_LIBS) - -qt4_semaphore_SOURCES = qt4_semaphore.cpp -qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_semaphore_LDADD = $(LDADD) $(QTCORE_LIBS) -endif - -if HAVE_QTCORE_QATOMICINT -qt4_atomic_SOURCES = qt4_atomic.cpp -qt4_atomic_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_atomic_LDADD = $(LDADD) $(QTCORE_LIBS) -endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.in index e3594acbe..58e310238 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/Makefile.in @@ -52,37 +52,38 @@ check_PROGRAMS = annotate_hb_err$(EXEEXT) annotate_hb_race$(EXEEXT) \ annotate_ignore_rw$(EXEEXT) annotate_ignore_write$(EXEEXT) \ annotate_publish_hg$(EXEEXT) annotate_static$(EXEEXT) \ bug-235681$(EXEEXT) custom_alloc$(EXEEXT) fp_race$(EXEEXT) \ - hold_lock$(EXEEXT) linuxthreads_det$(EXEEXT) \ - memory_allocation$(EXEEXT) monitor_example$(EXEEXT) \ - new_delete$(EXEEXT) pth_broadcast$(EXEEXT) \ - pth_cancel_locked$(EXEEXT) pth_cleanup_handler$(EXEEXT) \ - pth_cond_race$(EXEEXT) pth_create_chain$(EXEEXT) \ - pth_detached$(EXEEXT) pth_detached_sem$(EXEEXT) \ + free_is_write$(EXEEXT) hold_lock$(EXEEXT) \ + linuxthreads_det$(EXEEXT) memory_allocation$(EXEEXT) \ + monitor_example$(EXEEXT) new_delete$(EXEEXT) \ + pth_broadcast$(EXEEXT) pth_cancel_locked$(EXEEXT) \ + pth_cleanup_handler$(EXEEXT) pth_cond_race$(EXEEXT) \ + pth_create_chain$(EXEEXT) pth_detached$(EXEEXT) \ + pth_detached_sem$(EXEEXT) pth_detached3$(EXEEXT) \ pth_inconsistent_cond_wait$(EXEEXT) pth_mutex_reinit$(EXEEXT) \ pth_process_shared_mutex$(EXEEXT) \ pth_uninitialized_cond$(EXEEXT) recursive_mutex$(EXEEXT) \ rwlock_race$(EXEEXT) rwlock_test$(EXEEXT) \ rwlock_type_checking$(EXEEXT) sem_as_mutex$(EXEEXT) \ sem_open$(EXEEXT) sigalrm$(EXEEXT) thread_name$(EXEEXT) \ - trylock$(EXEEXT) unit_bitmap$(EXEEXT) unit_vc$(EXEEXT) \ - $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ - $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \ - $(am__EXEEXT_7) $(am__EXEEXT_8) + threaded-fork$(EXEEXT) trylock$(EXEEXT) unit_bitmap$(EXEEXT) \ + unit_vc$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ + $(am__EXEEXT_3) $(am__EXEEXT_4) $(am__EXEEXT_5) \ + $(am__EXEEXT_6) $(am__EXEEXT_7) @HAVE_BOOST_1_35_TRUE@am__append_1 = boost_thread @HAVE_BUILTIN_ATOMIC_TRUE@am__append_2 = \ @HAVE_BUILTIN_ATOMIC_TRUE@ annotate_barrier \ @HAVE_BUILTIN_ATOMIC_TRUE@ annotate_rwlock \ -@HAVE_BUILTIN_ATOMIC_TRUE@ annotate_smart_pointer \ @HAVE_BUILTIN_ATOMIC_TRUE@ atomic_var \ -@HAVE_BUILTIN_ATOMIC_TRUE@ circular_buffer \ -@HAVE_BUILTIN_ATOMIC_TRUE@ tsan_unittest - -@HAVE_OPENMP_TRUE@am__append_3 = omp_matinv omp_prime omp_printf -@HAVE_PTHREAD_BARRIER_TRUE@am__append_4 = matinv pth_barrier pth_barrier_race pth_barrier_reinit -@HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE@am__append_5 = pth_create_glibc_2_0 -@HAVE_PTHREAD_SPINLOCK_TRUE@am__append_6 = pth_spinlock -@HAVE_QTCORE_TRUE@am__append_7 = qt4_mutex qt4_rwlock qt4_semaphore -@HAVE_QTCORE_QATOMICINT_TRUE@am__append_8 = qt4_atomic +@HAVE_BUILTIN_ATOMIC_TRUE@ circular_buffer + +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@am__append_3 = \ +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@ annotate_smart_pointer \ +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@ tsan_unittest + +@HAVE_OPENMP_TRUE@am__append_4 = omp_matinv omp_prime omp_printf +@HAVE_PTHREAD_BARRIER_TRUE@am__append_5 = matinv pth_barrier pth_barrier_race pth_barrier_reinit +@HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE@am__append_6 = pth_create_glibc_2_0 +@HAVE_PTHREAD_SPINLOCK_TRUE@am__append_7 = pth_spinlock subdir = drd/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -95,21 +96,19 @@ CONFIG_CLEAN_VPATH_FILES = @HAVE_BOOST_1_35_TRUE@am__EXEEXT_1 = boost_thread$(EXEEXT) @HAVE_BUILTIN_ATOMIC_TRUE@am__EXEEXT_2 = annotate_barrier$(EXEEXT) \ @HAVE_BUILTIN_ATOMIC_TRUE@ annotate_rwlock$(EXEEXT) \ -@HAVE_BUILTIN_ATOMIC_TRUE@ annotate_smart_pointer$(EXEEXT) \ @HAVE_BUILTIN_ATOMIC_TRUE@ atomic_var$(EXEEXT) \ -@HAVE_BUILTIN_ATOMIC_TRUE@ circular_buffer$(EXEEXT) \ -@HAVE_BUILTIN_ATOMIC_TRUE@ tsan_unittest$(EXEEXT) -@HAVE_OPENMP_TRUE@am__EXEEXT_3 = omp_matinv$(EXEEXT) \ +@HAVE_BUILTIN_ATOMIC_TRUE@ circular_buffer$(EXEEXT) +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@am__EXEEXT_3 = \ +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@ annotate_smart_pointer$(EXEEXT) \ +@HAVE_BUILTIN_ATOMIC_CXX_TRUE@ tsan_unittest$(EXEEXT) +@HAVE_OPENMP_TRUE@am__EXEEXT_4 = omp_matinv$(EXEEXT) \ @HAVE_OPENMP_TRUE@ omp_prime$(EXEEXT) omp_printf$(EXEEXT) -@HAVE_PTHREAD_BARRIER_TRUE@am__EXEEXT_4 = matinv$(EXEEXT) \ +@HAVE_PTHREAD_BARRIER_TRUE@am__EXEEXT_5 = matinv$(EXEEXT) \ @HAVE_PTHREAD_BARRIER_TRUE@ pth_barrier$(EXEEXT) \ @HAVE_PTHREAD_BARRIER_TRUE@ pth_barrier_race$(EXEEXT) \ @HAVE_PTHREAD_BARRIER_TRUE@ pth_barrier_reinit$(EXEEXT) -@HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE@am__EXEEXT_5 = pth_create_glibc_2_0$(EXEEXT) -@HAVE_PTHREAD_SPINLOCK_TRUE@am__EXEEXT_6 = pth_spinlock$(EXEEXT) -@HAVE_QTCORE_TRUE@am__EXEEXT_7 = qt4_mutex$(EXEEXT) \ -@HAVE_QTCORE_TRUE@ qt4_rwlock$(EXEEXT) qt4_semaphore$(EXEEXT) -@HAVE_QTCORE_QATOMICINT_TRUE@am__EXEEXT_8 = qt4_atomic$(EXEEXT) +@HAVE_PTHREAD_CREATE_GLIBC_2_0_TRUE@am__EXEEXT_6 = pth_create_glibc_2_0$(EXEEXT) +@HAVE_PTHREAD_SPINLOCK_TRUE@am__EXEEXT_7 = pth_spinlock$(EXEEXT) annotate_barrier_SOURCES = annotate_barrier.c annotate_barrier_OBJECTS = annotate_barrier.$(OBJEXT) annotate_barrier_LDADD = $(LDADD) @@ -177,6 +176,10 @@ fp_race_SOURCES = fp_race.c fp_race_OBJECTS = fp_race.$(OBJEXT) fp_race_LDADD = $(LDADD) fp_race_DEPENDENCIES = +free_is_write_SOURCES = free_is_write.c +free_is_write_OBJECTS = free_is_write.$(OBJEXT) +free_is_write_LDADD = $(LDADD) +free_is_write_DEPENDENCIES = hold_lock_SOURCES = hold_lock.c hold_lock_OBJECTS = hold_lock.$(OBJEXT) hold_lock_LDADD = $(LDADD) @@ -259,6 +262,10 @@ pth_detached_SOURCES = pth_detached.c pth_detached_OBJECTS = pth_detached.$(OBJEXT) pth_detached_LDADD = $(LDADD) pth_detached_DEPENDENCIES = +pth_detached3_SOURCES = pth_detached3.c +pth_detached3_OBJECTS = pth_detached3.$(OBJEXT) +pth_detached3_LDADD = $(LDADD) +pth_detached3_DEPENDENCIES = pth_detached_sem_SOURCES = pth_detached_sem.c pth_detached_sem_OBJECTS = pth_detached_sem.$(OBJEXT) pth_detached_sem_LDADD = $(LDADD) @@ -284,39 +291,6 @@ pth_uninitialized_cond_SOURCES = pth_uninitialized_cond.c pth_uninitialized_cond_OBJECTS = pth_uninitialized_cond.$(OBJEXT) pth_uninitialized_cond_LDADD = $(LDADD) pth_uninitialized_cond_DEPENDENCIES = -am__qt4_atomic_SOURCES_DIST = qt4_atomic.cpp -@HAVE_QTCORE_QATOMICINT_TRUE@am_qt4_atomic_OBJECTS = \ -@HAVE_QTCORE_QATOMICINT_TRUE@ qt4_atomic-qt4_atomic.$(OBJEXT) -qt4_atomic_OBJECTS = $(am_qt4_atomic_OBJECTS) -@HAVE_QTCORE_QATOMICINT_TRUE@qt4_atomic_DEPENDENCIES = \ -@HAVE_QTCORE_QATOMICINT_TRUE@ $(am__DEPENDENCIES_1) \ -@HAVE_QTCORE_QATOMICINT_TRUE@ $(am__DEPENDENCIES_1) -qt4_atomic_LINK = $(CXXLD) $(qt4_atomic_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__qt4_mutex_SOURCES_DIST = qt4_mutex.cpp -@HAVE_QTCORE_TRUE@am_qt4_mutex_OBJECTS = \ -@HAVE_QTCORE_TRUE@ qt4_mutex-qt4_mutex.$(OBJEXT) -qt4_mutex_OBJECTS = $(am_qt4_mutex_OBJECTS) -@HAVE_QTCORE_TRUE@qt4_mutex_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@HAVE_QTCORE_TRUE@ $(am__DEPENDENCIES_1) -qt4_mutex_LINK = $(CXXLD) $(qt4_mutex_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__qt4_rwlock_SOURCES_DIST = qt4_rwlock.cpp -@HAVE_QTCORE_TRUE@am_qt4_rwlock_OBJECTS = \ -@HAVE_QTCORE_TRUE@ qt4_rwlock-qt4_rwlock.$(OBJEXT) -qt4_rwlock_OBJECTS = $(am_qt4_rwlock_OBJECTS) -@HAVE_QTCORE_TRUE@qt4_rwlock_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@HAVE_QTCORE_TRUE@ $(am__DEPENDENCIES_1) -qt4_rwlock_LINK = $(CXXLD) $(qt4_rwlock_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__qt4_semaphore_SOURCES_DIST = qt4_semaphore.cpp -@HAVE_QTCORE_TRUE@am_qt4_semaphore_OBJECTS = \ -@HAVE_QTCORE_TRUE@ qt4_semaphore-qt4_semaphore.$(OBJEXT) -qt4_semaphore_OBJECTS = $(am_qt4_semaphore_OBJECTS) -@HAVE_QTCORE_TRUE@qt4_semaphore_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@HAVE_QTCORE_TRUE@ $(am__DEPENDENCIES_1) -qt4_semaphore_LINK = $(CXXLD) $(qt4_semaphore_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ recursive_mutex_SOURCES = recursive_mutex.c recursive_mutex_OBJECTS = recursive_mutex.$(OBJEXT) recursive_mutex_LDADD = $(LDADD) @@ -349,6 +323,10 @@ thread_name_SOURCES = thread_name.c thread_name_OBJECTS = thread_name.$(OBJEXT) thread_name_LDADD = $(LDADD) thread_name_DEPENDENCIES = +threaded_fork_SOURCES = threaded-fork.c +threaded_fork_OBJECTS = threaded-fork.$(OBJEXT) +threaded_fork_LDADD = $(LDADD) +threaded_fork_DEPENDENCIES = trylock_SOURCES = trylock.c trylock_OBJECTS = trylock.$(OBJEXT) trylock_LDADD = $(LDADD) @@ -388,41 +366,37 @@ SOURCES = annotate_barrier.c annotate_hb_err.c annotate_hb_race.c \ annotate_publish_hg.c annotate_rwlock.c \ $(annotate_smart_pointer_SOURCES) $(annotate_static_SOURCES) \ atomic_var.c $(boost_thread_SOURCES) bug-235681.c \ - circular_buffer.c custom_alloc.c fp_race.c hold_lock.c \ - linuxthreads_det.c matinv.c memory_allocation.c \ + circular_buffer.c custom_alloc.c fp_race.c free_is_write.c \ + hold_lock.c linuxthreads_det.c matinv.c memory_allocation.c \ $(monitor_example_SOURCES) $(new_delete_SOURCES) omp_matinv.c \ omp_prime.c omp_printf.c pth_barrier.c pth_barrier_race.c \ pth_barrier_reinit.c pth_broadcast.c pth_cancel_locked.c \ pth_cleanup_handler.c pth_cond_race.c pth_create_chain.c \ - pth_create_glibc_2_0.c pth_detached.c pth_detached_sem.c \ - pth_inconsistent_cond_wait.c pth_mutex_reinit.c \ - pth_process_shared_mutex.c pth_spinlock.c \ - pth_uninitialized_cond.c $(qt4_atomic_SOURCES) \ - $(qt4_mutex_SOURCES) $(qt4_rwlock_SOURCES) \ - $(qt4_semaphore_SOURCES) recursive_mutex.c rwlock_race.c \ + pth_create_glibc_2_0.c pth_detached.c pth_detached3.c \ + pth_detached_sem.c pth_inconsistent_cond_wait.c \ + pth_mutex_reinit.c pth_process_shared_mutex.c pth_spinlock.c \ + pth_uninitialized_cond.c recursive_mutex.c rwlock_race.c \ rwlock_test.c rwlock_type_checking.c sem_as_mutex.c sem_open.c \ - sigalrm.c thread_name.c trylock.c $(tsan_unittest_SOURCES) \ - unit_bitmap.c unit_vc.c + sigalrm.c thread_name.c threaded-fork.c trylock.c \ + $(tsan_unittest_SOURCES) unit_bitmap.c unit_vc.c DIST_SOURCES = annotate_barrier.c annotate_hb_err.c annotate_hb_race.c \ annotate_ignore_rw.c annotate_ignore_write.c \ annotate_publish_hg.c annotate_rwlock.c \ $(am__annotate_smart_pointer_SOURCES_DIST) \ $(annotate_static_SOURCES) atomic_var.c \ $(am__boost_thread_SOURCES_DIST) bug-235681.c \ - circular_buffer.c custom_alloc.c fp_race.c hold_lock.c \ - linuxthreads_det.c matinv.c memory_allocation.c \ + circular_buffer.c custom_alloc.c fp_race.c free_is_write.c \ + hold_lock.c linuxthreads_det.c matinv.c memory_allocation.c \ $(monitor_example_SOURCES) $(new_delete_SOURCES) omp_matinv.c \ omp_prime.c omp_printf.c pth_barrier.c pth_barrier_race.c \ pth_barrier_reinit.c pth_broadcast.c pth_cancel_locked.c \ pth_cleanup_handler.c pth_cond_race.c pth_create_chain.c \ - pth_create_glibc_2_0.c pth_detached.c pth_detached_sem.c \ - pth_inconsistent_cond_wait.c pth_mutex_reinit.c \ - pth_process_shared_mutex.c pth_spinlock.c \ - pth_uninitialized_cond.c $(am__qt4_atomic_SOURCES_DIST) \ - $(am__qt4_mutex_SOURCES_DIST) $(am__qt4_rwlock_SOURCES_DIST) \ - $(am__qt4_semaphore_SOURCES_DIST) recursive_mutex.c \ - rwlock_race.c rwlock_test.c rwlock_type_checking.c \ - sem_as_mutex.c sem_open.c sigalrm.c thread_name.c trylock.c \ + pth_create_glibc_2_0.c pth_detached.c pth_detached3.c \ + pth_detached_sem.c pth_inconsistent_cond_wait.c \ + pth_mutex_reinit.c pth_process_shared_mutex.c pth_spinlock.c \ + pth_uninitialized_cond.c recursive_mutex.c rwlock_race.c \ + rwlock_test.c rwlock_type_checking.c sem_as_mutex.c sem_open.c \ + sigalrm.c thread_name.c threaded-fork.c trylock.c \ $(tsan_unittest_SOURCES) unit_bitmap.c unit_vc.c HEADERS = $(noinst_HEADERS) ETAGS = etags @@ -470,6 +444,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -499,12 +475,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -657,7 +628,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -686,6 +657,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -714,6 +690,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -799,10 +776,16 @@ EXTRA_DIST = \ circular_buffer.vgtest \ custom_alloc.stderr.exp \ custom_alloc.vgtest \ + custom_alloc_fiw.stderr.exp \ + custom_alloc_fiw.vgtest \ fp_race.stderr.exp \ fp_race.vgtest \ fp_race2.stderr.exp \ fp_race2.vgtest \ + free_is_write.stderr.exp \ + free_is_write.vgtest \ + free_is_write2.stderr.exp \ + free_is_write2.vgtest \ hg01_all_ok.stderr.exp \ hg01_all_ok.vgtest \ hg02_deadlock.stderr.exp \ @@ -877,6 +860,9 @@ EXTRA_DIST = \ pth_detached2.stderr.exp \ pth_detached2.stdout.exp \ pth_detached2.vgtest \ + pth_detached3.stderr.exp1 \ + pth_detached3.stderr.exp2 \ + pth_detached3.vgtest \ pth_detached_sem.stderr.exp \ pth_detached_sem.stdout.exp \ pth_detached_sem.vgtest \ @@ -901,6 +887,8 @@ EXTRA_DIST = \ qt4_rwlock.vgtest \ qt4_semaphore.stderr.exp \ qt4_semaphore.vgtest \ + read_and_free_race.stderr.exp \ + read_and_free_race.vgtest \ recursive_mutex.stderr.exp-linux \ recursive_mutex.stderr.exp-darwin \ recursive_mutex.vgtest \ @@ -927,6 +915,8 @@ EXTRA_DIST = \ sem_open_traced.vgtest \ sigalrm.stderr.exp \ sigalrm.vgtest \ + sigaltstack.stderr.exp \ + sigaltstack.vgtest \ tc01_simple_race.stderr.exp \ tc01_simple_race.vgtest \ tc02_simple_tls.stderr.exp \ @@ -975,12 +965,15 @@ EXTRA_DIST = \ tc22_exit_w_lock.vgtest \ tc23_bogus_condwait.stderr.exp-linux-x86 \ tc23_bogus_condwait.stderr.exp-linux-ppc \ - tc23_bogus_condwait.stderr.exp-darwin \ + tc23_bogus_condwait.stderr.exp-darwin-x86 \ + tc23_bogus_condwait.stderr.exp-darwin-amd64 \ tc23_bogus_condwait.vgtest \ tc24_nonzero_sem.stderr.exp \ tc24_nonzero_sem.vgtest \ thread_name.stderr.exp \ thread_name.vgtest \ + threaded-fork.stderr.exp \ + threaded-fork.vgtest \ trylock.stderr.exp \ trylock.vgtest \ unit_bitmap.stderr.exp \ @@ -1018,18 +1011,6 @@ annotate_static_SOURCES = annotate_static.cpp @HAVE_OPENMP_TRUE@omp_printf_LDFLAGS = -fopenmp @HAVE_OPENMP_TRUE@omp_printf_LDADD = $(LDADD) -lm @HAVE_PTHREAD_BARRIER_TRUE@matinv_LDADD = $(LDADD) -lm -@HAVE_QTCORE_TRUE@qt4_mutex_SOURCES = qt4_mutex.cpp -@HAVE_QTCORE_TRUE@qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -@HAVE_QTCORE_TRUE@qt4_mutex_LDADD = $(LDADD) $(QTCORE_LIBS) -@HAVE_QTCORE_TRUE@qt4_rwlock_SOURCES = qt4_rwlock.cpp -@HAVE_QTCORE_TRUE@qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -@HAVE_QTCORE_TRUE@qt4_rwlock_LDADD = $(LDADD) $(QTCORE_LIBS) -@HAVE_QTCORE_TRUE@qt4_semaphore_SOURCES = qt4_semaphore.cpp -@HAVE_QTCORE_TRUE@qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -@HAVE_QTCORE_TRUE@qt4_semaphore_LDADD = $(LDADD) $(QTCORE_LIBS) -@HAVE_QTCORE_QATOMICINT_TRUE@qt4_atomic_SOURCES = qt4_atomic.cpp -@HAVE_QTCORE_QATOMICINT_TRUE@qt4_atomic_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -@HAVE_QTCORE_QATOMICINT_TRUE@qt4_atomic_LDADD = $(LDADD) $(QTCORE_LIBS) all: all-am .SUFFIXES: @@ -1112,6 +1093,9 @@ custom_alloc$(EXEEXT): $(custom_alloc_OBJECTS) $(custom_alloc_DEPENDENCIES) fp_race$(EXEEXT): $(fp_race_OBJECTS) $(fp_race_DEPENDENCIES) @rm -f fp_race$(EXEEXT) $(LINK) $(fp_race_OBJECTS) $(fp_race_LDADD) $(LIBS) +free_is_write$(EXEEXT): $(free_is_write_OBJECTS) $(free_is_write_DEPENDENCIES) + @rm -f free_is_write$(EXEEXT) + $(LINK) $(free_is_write_OBJECTS) $(free_is_write_LDADD) $(LIBS) hold_lock$(EXEEXT): $(hold_lock_OBJECTS) $(hold_lock_DEPENDENCIES) @rm -f hold_lock$(EXEEXT) $(LINK) $(hold_lock_OBJECTS) $(hold_lock_LDADD) $(LIBS) @@ -1169,6 +1153,9 @@ pth_create_glibc_2_0$(EXEEXT): $(pth_create_glibc_2_0_OBJECTS) $(pth_create_glib pth_detached$(EXEEXT): $(pth_detached_OBJECTS) $(pth_detached_DEPENDENCIES) @rm -f pth_detached$(EXEEXT) $(LINK) $(pth_detached_OBJECTS) $(pth_detached_LDADD) $(LIBS) +pth_detached3$(EXEEXT): $(pth_detached3_OBJECTS) $(pth_detached3_DEPENDENCIES) + @rm -f pth_detached3$(EXEEXT) + $(LINK) $(pth_detached3_OBJECTS) $(pth_detached3_LDADD) $(LIBS) pth_detached_sem$(EXEEXT): $(pth_detached_sem_OBJECTS) $(pth_detached_sem_DEPENDENCIES) @rm -f pth_detached_sem$(EXEEXT) $(LINK) $(pth_detached_sem_OBJECTS) $(pth_detached_sem_LDADD) $(LIBS) @@ -1187,18 +1174,6 @@ pth_spinlock$(EXEEXT): $(pth_spinlock_OBJECTS) $(pth_spinlock_DEPENDENCIES) pth_uninitialized_cond$(EXEEXT): $(pth_uninitialized_cond_OBJECTS) $(pth_uninitialized_cond_DEPENDENCIES) @rm -f pth_uninitialized_cond$(EXEEXT) $(LINK) $(pth_uninitialized_cond_OBJECTS) $(pth_uninitialized_cond_LDADD) $(LIBS) -qt4_atomic$(EXEEXT): $(qt4_atomic_OBJECTS) $(qt4_atomic_DEPENDENCIES) - @rm -f qt4_atomic$(EXEEXT) - $(qt4_atomic_LINK) $(qt4_atomic_OBJECTS) $(qt4_atomic_LDADD) $(LIBS) -qt4_mutex$(EXEEXT): $(qt4_mutex_OBJECTS) $(qt4_mutex_DEPENDENCIES) - @rm -f qt4_mutex$(EXEEXT) - $(qt4_mutex_LINK) $(qt4_mutex_OBJECTS) $(qt4_mutex_LDADD) $(LIBS) -qt4_rwlock$(EXEEXT): $(qt4_rwlock_OBJECTS) $(qt4_rwlock_DEPENDENCIES) - @rm -f qt4_rwlock$(EXEEXT) - $(qt4_rwlock_LINK) $(qt4_rwlock_OBJECTS) $(qt4_rwlock_LDADD) $(LIBS) -qt4_semaphore$(EXEEXT): $(qt4_semaphore_OBJECTS) $(qt4_semaphore_DEPENDENCIES) - @rm -f qt4_semaphore$(EXEEXT) - $(qt4_semaphore_LINK) $(qt4_semaphore_OBJECTS) $(qt4_semaphore_LDADD) $(LIBS) recursive_mutex$(EXEEXT): $(recursive_mutex_OBJECTS) $(recursive_mutex_DEPENDENCIES) @rm -f recursive_mutex$(EXEEXT) $(LINK) $(recursive_mutex_OBJECTS) $(recursive_mutex_LDADD) $(LIBS) @@ -1223,6 +1198,9 @@ sigalrm$(EXEEXT): $(sigalrm_OBJECTS) $(sigalrm_DEPENDENCIES) thread_name$(EXEEXT): $(thread_name_OBJECTS) $(thread_name_DEPENDENCIES) @rm -f thread_name$(EXEEXT) $(LINK) $(thread_name_OBJECTS) $(thread_name_LDADD) $(LIBS) +threaded-fork$(EXEEXT): $(threaded_fork_OBJECTS) $(threaded_fork_DEPENDENCIES) + @rm -f threaded-fork$(EXEEXT) + $(LINK) $(threaded_fork_OBJECTS) $(threaded_fork_LDADD) $(LIBS) trylock$(EXEEXT): $(trylock_OBJECTS) $(trylock_DEPENDENCIES) @rm -f trylock$(EXEEXT) $(LINK) $(trylock_OBJECTS) $(trylock_LDADD) $(LIBS) @@ -1257,6 +1235,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/circular_buffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom_alloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fp_race.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/free_is_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hold_lock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linuxthreads_det.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matinv.Po@am__quote@ @@ -1276,16 +1255,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_create_chain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_create_glibc_2_0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_detached.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_detached3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_detached_sem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_inconsistent_cond_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_mutex_reinit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_process_shared_mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_spinlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_uninitialized_cond.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qt4_atomic-qt4_atomic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qt4_mutex-qt4_mutex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qt4_rwlock-qt4_rwlock.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qt4_semaphore-qt4_semaphore.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recursive_mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rwlock_race.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rwlock_test.Po@am__quote@ @@ -1294,6 +1270,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sem_open.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigalrm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread_name.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threaded-fork.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trylock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsan_unittest-tsan_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit_bitmap-unit_bitmap.Po@am__quote@ @@ -1425,62 +1402,6 @@ boost_thread-boost_thread.obj: boost_thread.cpp @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(boost_thread_CXXFLAGS) $(CXXFLAGS) -c -o boost_thread-boost_thread.obj `if test -f 'boost_thread.cpp'; then $(CYGPATH_W) 'boost_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/boost_thread.cpp'; fi` -qt4_atomic-qt4_atomic.o: qt4_atomic.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_atomic_CXXFLAGS) $(CXXFLAGS) -MT qt4_atomic-qt4_atomic.o -MD -MP -MF $(DEPDIR)/qt4_atomic-qt4_atomic.Tpo -c -o qt4_atomic-qt4_atomic.o `test -f 'qt4_atomic.cpp' || echo '$(srcdir)/'`qt4_atomic.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_atomic-qt4_atomic.Tpo $(DEPDIR)/qt4_atomic-qt4_atomic.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_atomic.cpp' object='qt4_atomic-qt4_atomic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_atomic_CXXFLAGS) $(CXXFLAGS) -c -o qt4_atomic-qt4_atomic.o `test -f 'qt4_atomic.cpp' || echo '$(srcdir)/'`qt4_atomic.cpp - -qt4_atomic-qt4_atomic.obj: qt4_atomic.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_atomic_CXXFLAGS) $(CXXFLAGS) -MT qt4_atomic-qt4_atomic.obj -MD -MP -MF $(DEPDIR)/qt4_atomic-qt4_atomic.Tpo -c -o qt4_atomic-qt4_atomic.obj `if test -f 'qt4_atomic.cpp'; then $(CYGPATH_W) 'qt4_atomic.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_atomic.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_atomic-qt4_atomic.Tpo $(DEPDIR)/qt4_atomic-qt4_atomic.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_atomic.cpp' object='qt4_atomic-qt4_atomic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_atomic_CXXFLAGS) $(CXXFLAGS) -c -o qt4_atomic-qt4_atomic.obj `if test -f 'qt4_atomic.cpp'; then $(CYGPATH_W) 'qt4_atomic.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_atomic.cpp'; fi` - -qt4_mutex-qt4_mutex.o: qt4_mutex.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_mutex_CXXFLAGS) $(CXXFLAGS) -MT qt4_mutex-qt4_mutex.o -MD -MP -MF $(DEPDIR)/qt4_mutex-qt4_mutex.Tpo -c -o qt4_mutex-qt4_mutex.o `test -f 'qt4_mutex.cpp' || echo '$(srcdir)/'`qt4_mutex.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_mutex-qt4_mutex.Tpo $(DEPDIR)/qt4_mutex-qt4_mutex.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_mutex.cpp' object='qt4_mutex-qt4_mutex.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_mutex_CXXFLAGS) $(CXXFLAGS) -c -o qt4_mutex-qt4_mutex.o `test -f 'qt4_mutex.cpp' || echo '$(srcdir)/'`qt4_mutex.cpp - -qt4_mutex-qt4_mutex.obj: qt4_mutex.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_mutex_CXXFLAGS) $(CXXFLAGS) -MT qt4_mutex-qt4_mutex.obj -MD -MP -MF $(DEPDIR)/qt4_mutex-qt4_mutex.Tpo -c -o qt4_mutex-qt4_mutex.obj `if test -f 'qt4_mutex.cpp'; then $(CYGPATH_W) 'qt4_mutex.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_mutex.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_mutex-qt4_mutex.Tpo $(DEPDIR)/qt4_mutex-qt4_mutex.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_mutex.cpp' object='qt4_mutex-qt4_mutex.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_mutex_CXXFLAGS) $(CXXFLAGS) -c -o qt4_mutex-qt4_mutex.obj `if test -f 'qt4_mutex.cpp'; then $(CYGPATH_W) 'qt4_mutex.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_mutex.cpp'; fi` - -qt4_rwlock-qt4_rwlock.o: qt4_rwlock.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_rwlock_CXXFLAGS) $(CXXFLAGS) -MT qt4_rwlock-qt4_rwlock.o -MD -MP -MF $(DEPDIR)/qt4_rwlock-qt4_rwlock.Tpo -c -o qt4_rwlock-qt4_rwlock.o `test -f 'qt4_rwlock.cpp' || echo '$(srcdir)/'`qt4_rwlock.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_rwlock-qt4_rwlock.Tpo $(DEPDIR)/qt4_rwlock-qt4_rwlock.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_rwlock.cpp' object='qt4_rwlock-qt4_rwlock.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_rwlock_CXXFLAGS) $(CXXFLAGS) -c -o qt4_rwlock-qt4_rwlock.o `test -f 'qt4_rwlock.cpp' || echo '$(srcdir)/'`qt4_rwlock.cpp - -qt4_rwlock-qt4_rwlock.obj: qt4_rwlock.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_rwlock_CXXFLAGS) $(CXXFLAGS) -MT qt4_rwlock-qt4_rwlock.obj -MD -MP -MF $(DEPDIR)/qt4_rwlock-qt4_rwlock.Tpo -c -o qt4_rwlock-qt4_rwlock.obj `if test -f 'qt4_rwlock.cpp'; then $(CYGPATH_W) 'qt4_rwlock.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_rwlock.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_rwlock-qt4_rwlock.Tpo $(DEPDIR)/qt4_rwlock-qt4_rwlock.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_rwlock.cpp' object='qt4_rwlock-qt4_rwlock.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_rwlock_CXXFLAGS) $(CXXFLAGS) -c -o qt4_rwlock-qt4_rwlock.obj `if test -f 'qt4_rwlock.cpp'; then $(CYGPATH_W) 'qt4_rwlock.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_rwlock.cpp'; fi` - -qt4_semaphore-qt4_semaphore.o: qt4_semaphore.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_semaphore_CXXFLAGS) $(CXXFLAGS) -MT qt4_semaphore-qt4_semaphore.o -MD -MP -MF $(DEPDIR)/qt4_semaphore-qt4_semaphore.Tpo -c -o qt4_semaphore-qt4_semaphore.o `test -f 'qt4_semaphore.cpp' || echo '$(srcdir)/'`qt4_semaphore.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_semaphore-qt4_semaphore.Tpo $(DEPDIR)/qt4_semaphore-qt4_semaphore.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_semaphore.cpp' object='qt4_semaphore-qt4_semaphore.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_semaphore_CXXFLAGS) $(CXXFLAGS) -c -o qt4_semaphore-qt4_semaphore.o `test -f 'qt4_semaphore.cpp' || echo '$(srcdir)/'`qt4_semaphore.cpp - -qt4_semaphore-qt4_semaphore.obj: qt4_semaphore.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_semaphore_CXXFLAGS) $(CXXFLAGS) -MT qt4_semaphore-qt4_semaphore.obj -MD -MP -MF $(DEPDIR)/qt4_semaphore-qt4_semaphore.Tpo -c -o qt4_semaphore-qt4_semaphore.obj `if test -f 'qt4_semaphore.cpp'; then $(CYGPATH_W) 'qt4_semaphore.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_semaphore.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/qt4_semaphore-qt4_semaphore.Tpo $(DEPDIR)/qt4_semaphore-qt4_semaphore.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='qt4_semaphore.cpp' object='qt4_semaphore-qt4_semaphore.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(qt4_semaphore_CXXFLAGS) $(CXXFLAGS) -c -o qt4_semaphore-qt4_semaphore.obj `if test -f 'qt4_semaphore.cpp'; then $(CYGPATH_W) 'qt4_semaphore.cpp'; else $(CYGPATH_W) '$(srcdir)/qt4_semaphore.cpp'; fi` - tsan_unittest-tsan_unittest.o: tsan_unittest.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tsan_unittest_CXXFLAGS) $(CXXFLAGS) -MT tsan_unittest-tsan_unittest.o -MD -MP -MF $(DEPDIR)/tsan_unittest-tsan_unittest.Tpo -c -o tsan_unittest-tsan_unittest.o `test -f 'tsan_unittest.cpp' || echo '$(srcdir)/'`tsan_unittest.cpp @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tsan_unittest-tsan_unittest.Tpo $(DEPDIR)/tsan_unittest-tsan_unittest.Po diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_barrier.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_barrier.stderr.exp index 18e39e2bb..1ae8934c3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_barrier.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_barrier.stderr.exp @@ -1,25 +1,25 @@ The annotation macro ANNOTATE_BARRIER_INIT has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_init (drd.h:?) - by 0x........: barrier_init (annotate_barrier.c:?) + at 0x........: barrier_init (annotate_barrier.c:?) by 0x........: barriers_and_races (annotate_barrier.c:?) + by 0x........: main (annotate_barrier.c:?) Thread 2: The annotation macro ANNOTATE_BARRIER_WAIT_BEFORE has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_wait_before (drd.h:?) - by 0x........: barrier_wait (annotate_barrier.c:?) + at 0x........: barrier_wait (annotate_barrier.c:?) by 0x........: threadfunc (annotate_barrier.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) Thread 3: The annotation macro ANNOTATE_BARRIER_WAIT_AFTER has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_wait_after (drd.h:?) - by 0x........: barrier_wait (annotate_barrier.c:?) + at 0x........: barrier_wait (annotate_barrier.c:?) by 0x........: threadfunc (annotate_barrier.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) The annotation macro ANNOTATE_BARRIER_WAIT_BEFORE has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_wait_before (drd.h:?) - by 0x........: barrier_wait (annotate_barrier.c:?) + at 0x........: barrier_wait (annotate_barrier.c:?) by 0x........: threadfunc (annotate_barrier.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) Thread 2: Conflicting store by thread 2 at 0x........ size 4 @@ -32,15 +32,15 @@ Address 0x........ is at offset 0 from 0x......... Allocation context: by 0x........: main (annotate_barrier.c:?) The annotation macro ANNOTATE_BARRIER_WAIT_AFTER has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_wait_after (drd.h:?) - by 0x........: barrier_wait (annotate_barrier.c:?) + at 0x........: barrier_wait (annotate_barrier.c:?) by 0x........: threadfunc (annotate_barrier.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) Thread 1: The annotation macro ANNOTATE_BARRIER_DESTROY has not yet been implemented in - at 0x........: vgDrdCl_annotate_barrier_destroy (drd.h:?) - by 0x........: barrier_destroy (annotate_barrier.c:?) + at 0x........: barrier_destroy (annotate_barrier.c:?) by 0x........: barriers_and_races (annotate_barrier.c:?) + by 0x........: main (annotate_barrier.c:?) Done. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.c index 946dbd373..3ed15b9a7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.c @@ -17,30 +17,30 @@ int main(int argc, char** argv) pthread_cond_init(&cv, NULL); /* happens-after without preceding happens-before. */ - ANNOTATE_HAPPENS_AFTER(&i); + U_ANNOTATE_HAPPENS_AFTER(&i); /* happens-after on a mutex. */ - ANNOTATE_HAPPENS_BEFORE(&m); + U_ANNOTATE_HAPPENS_BEFORE(&m); /* happens-after on a condition variable. */ - ANNOTATE_HAPPENS_BEFORE(&cv); + U_ANNOTATE_HAPPENS_BEFORE(&cv); /* condition variable operation on a h.b. annotated object. */ - ANNOTATE_HAPPENS_BEFORE(&i); + U_ANNOTATE_HAPPENS_BEFORE(&i); pthread_cond_init((pthread_cond_t*)&i, NULL); /* The sequence below is fine. */ - ANNOTATE_NEW_MEMORY(&i, sizeof(i)); - ANNOTATE_HAPPENS_BEFORE(&i); - ANNOTATE_HAPPENS_AFTER(&i); - ANNOTATE_NEW_MEMORY(&i, sizeof(i)); - ANNOTATE_HAPPENS_BEFORE(&i); - ANNOTATE_NEW_MEMORY(&i, sizeof(i)); + U_ANNOTATE_NEW_MEMORY(&i, sizeof(i)); + U_ANNOTATE_HAPPENS_BEFORE(&i); + U_ANNOTATE_HAPPENS_AFTER(&i); + U_ANNOTATE_NEW_MEMORY(&i, sizeof(i)); + U_ANNOTATE_HAPPENS_BEFORE(&i); + U_ANNOTATE_NEW_MEMORY(&i, sizeof(i)); /* happens-before after happens-after. */ - ANNOTATE_HAPPENS_BEFORE(&i); - ANNOTATE_HAPPENS_AFTER(&i); - ANNOTATE_HAPPENS_BEFORE(&i); + U_ANNOTATE_HAPPENS_BEFORE(&i); + U_ANNOTATE_HAPPENS_AFTER(&i); + U_ANNOTATE_HAPPENS_BEFORE(&i); fprintf(stderr, "Done.\n"); return 0; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.stderr.exp index bf96a09b7..b52069bf1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_err.stderr.exp @@ -1,17 +1,13 @@ -missing happens-before annotation - at 0x........: vgDrdCl_annotate_happens_after (drd.h:?) - by 0x........: main (annotate_hb_err.c:?) - wrong type of synchronization object - at 0x........: vgDrdCl_annotate_happens_before (drd.h:?) + at 0x........: U_AnnotateHappensBefore (unified_annotations.h:?) by 0x........: main (annotate_hb_err.c:?) mutex 0x........ was first observed at: at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) by 0x........: main (annotate_hb_err.c:?) wrong type of synchronization object - at 0x........: vgDrdCl_annotate_happens_before (drd.h:?) + at 0x........: U_AnnotateHappensBefore (unified_annotations.h:?) by 0x........: main (annotate_hb_err.c:?) cond 0x........ was first observed at: at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) @@ -21,16 +17,9 @@ wrong type of synchronization object at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) by 0x........: main (annotate_hb_err.c:?) order annotation 0x........ was first observed at: - at 0x........: vgDrdCl_annotate_happens_before (drd.h:?) - by 0x........: main (annotate_hb_err.c:?) - -happens-before after happens-after - at 0x........: vgDrdCl_annotate_happens_before (drd.h:?) - by 0x........: main (annotate_hb_err.c:?) -order annotation 0x........ was first observed at: - at 0x........: vgDrdCl_annotate_happens_before (drd.h:?) + at 0x........: U_AnnotateHappensAfter (unified_annotations.h:?) by 0x........: main (annotate_hb_err.c:?) Done. -ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_race.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_race.c index 76c3a9483..0c2b450f9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_race.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_hb_race.c @@ -18,9 +18,9 @@ static void* thread_func(void* arg) { int i; - ANNOTATE_HAPPENS_AFTER(&s_i); + U_ANNOTATE_HAPPENS_AFTER(&s_i); i = s_i; - ANNOTATE_HAPPENS_AFTER(&s_i); + U_ANNOTATE_HAPPENS_AFTER(&s_i); *(int*)arg = i; return NULL; } @@ -30,7 +30,7 @@ int main(int argc, char** argv) pthread_t tid[2]; int result[2]; - ANNOTATE_HAPPENS_BEFORE(&s_i); + U_ANNOTATE_HAPPENS_BEFORE(&s_i); pthread_create(&tid[0], 0, thread_func, &result[0]); pthread_create(&tid[1], 0, thread_func, &result[1]); s_i = 1; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_ignore_rw.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_ignore_rw.c index f6a63b658..c57117d99 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_ignore_rw.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_ignore_rw.c @@ -24,7 +24,6 @@ int main(int argc, char** argv) { int optchar; int ign_rw = 1; - int tmp; pthread_t tid; while ((optchar = getopt(argc, argv, "r")) != EOF) @@ -54,7 +53,7 @@ int main(int argc, char** argv) sleep(1); /* Read s_c. */ - tmp = s_c; + fprintf(stderr, "%s", "x" + s_c); pthread_join(tid, 0); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_smart_pointer.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_smart_pointer.cpp index 2ad4fb5a1..7ef5e7c1f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_smart_pointer.cpp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_smart_pointer.cpp @@ -236,11 +236,11 @@ private: if (m_count_ptr) { if (s_enable_annotations) - ANNOTATE_HAPPENS_BEFORE(m_count_ptr); + U_ANNOTATE_HAPPENS_BEFORE(m_count_ptr); if (--(*m_count_ptr) == 0) { if (s_enable_annotations) - ANNOTATE_HAPPENS_AFTER(m_count_ptr); + U_ANNOTATE_HAPPENS_AFTER(m_count_ptr); delete m_ptr; m_ptr = NULL; delete m_count_ptr; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_static.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_static.cpp index 154ee030d..25ffd47e6 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_static.cpp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/annotate_static.cpp @@ -16,9 +16,20 @@ ANNOTATE_BENIGN_RACE_STATIC(s_i, "Benign because duplicate assignment."); /* Local functions. */ +static inline void AnnotateIgnoreReadsBegin() { ANNOTATE_IGNORE_READS_BEGIN(); } +static inline void AnnotateIgnoreReadsEnd() { ANNOTATE_IGNORE_READS_END(); } + static void* thread_func(void*) { +#if defined(__powerpc__) && __GNUC__ -0 == 4 && __GNUC_MINOR__ -0 == 3 \ + && __GNUC_PATCHLEVEL__ -0 == 0 + AnnotateIgnoreReadsBegin(); + int i = s_j; + AnnotateIgnoreReadsEnd(); + s_i = i; +#else s_i = ANNOTATE_UNPROTECTED_READ(s_j); +#endif return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/circular_buffer.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/circular_buffer.c index 68035215c..b7ab56416 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/circular_buffer.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/circular_buffer.c @@ -59,8 +59,14 @@ int fetch_and_add(int* p, int i) static sem_t* create_semaphore(const char* const name, const int value) { -#ifdef __APPLE__ - sem_t* p = sem_open(name, O_CREAT, 0600, value); +#ifdef VGO_darwin + char name_and_pid[32]; + snprintf(name_and_pid, sizeof(name_and_pid), "%s-%d", name, getpid()); + sem_t* p = sem_open(name_and_pid, O_CREAT | O_EXCL, 0600, value); + if (p == SEM_FAILED) { + perror("sem_open"); + return NULL; + } return p; #else sem_t* p = malloc(sizeof(*p)); @@ -72,7 +78,7 @@ static sem_t* create_semaphore(const char* const name, const int value) static void destroy_semaphore(const char* const name, sem_t* p) { -#ifdef __APPLE__ +#ifdef VGO_darwin sem_close(p); sem_unlink(name); #else diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc.c index 9faead569..858155ef8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc.c @@ -57,7 +57,7 @@ static void custom_free(void* p) void make_leak(void) { - int* array2 = custom_alloc(sizeof(int) * 10); + int* array2 __attribute__((unused)) = custom_alloc(sizeof(int) * 10); array2 = 0; // leak return; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.stderr.exp new file mode 100644 index 000000000..ef056f1ca --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.stderr.exp @@ -0,0 +1,12 @@ + +--free-is-write=yes is incompatible with custom memory allocator client requests + at 0x........: custom_alloc (custom_alloc.c:?) + by 0x........: main (custom_alloc.c:?) + +--free-is-write=yes is incompatible with custom memory allocator client requests + at 0x........: custom_alloc (custom_alloc.c:?) + by 0x........: make_leak (custom_alloc.c:?) + by 0x........: main (custom_alloc.c:?) + + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.vgtest new file mode 100644 index 000000000..26b9cf3e8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/custom_alloc_fiw.vgtest @@ -0,0 +1,2 @@ +vgopts: --free-is-write=yes +prog: custom_alloc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/filter_stderr index 05f54d076..33c875657 100755 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/filter_stderr +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/filter_stderr @@ -31,6 +31,7 @@ sed \ -e "s/ (\([a-zA-Z_]*\.c\):[0-9]*)/ (\1:?)/" \ -e "s/ (\([a-zA-Z_]*\.h\):[0-9]*)/ (\1:?)/" \ -e "s/ (\([a-zA-Z_]*\.cpp\):[0-9]*)/ (\1:?)/" \ +-e "s/\( name [^ ]*\)-[0-9]*\( oflag \)/\1\2/" \ -e "/^For counts of detected and suppressed errors, rerun with: -v$/d" | # Remove the message that more than hundred errors have been detected diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.c new file mode 100644 index 000000000..899a853a4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.c @@ -0,0 +1,70 @@ +/* Stress test for the --free-is-write command-line option. */ + +#include +#include +#include +#include +#include +#include +#include + +#define MALLOC_SIZE 22816 +#define THREAD_COUNT 10 +#define MALLOC_COUNT 1000 + +static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; +// 'mutex' protects 'count'. +static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +static unsigned count; + +void* thread_func(void* arg) +{ + unsigned i; + + for (i = 0; i < MALLOC_COUNT; ++i) { + void* ptr; + + ptr = malloc(MALLOC_SIZE); + memset(ptr, 0, MALLOC_SIZE); + free(ptr); + } + + pthread_mutex_lock(&mutex); + ++count; + pthread_cond_signal(&cond); + pthread_mutex_unlock(&mutex); + + return 0; +} + +int main(int argc, char **argv) +{ + pthread_t thread[THREAD_COUNT]; + int result; + int i; + + for (i = 0; i < THREAD_COUNT; i++) { + result = pthread_create(&thread[i], 0, thread_func, 0); + assert(result == 0); + } + + pthread_mutex_lock(&mutex); + while (count < THREAD_COUNT && pthread_cond_wait(&cond, &mutex) == 0) + ; + pthread_mutex_unlock(&mutex); + + for (i = 0; i < THREAD_COUNT; i++) + pthread_join(thread[i], 0); + + fflush(stdout); + + fprintf(stderr, "Done.\n"); + + return 0; +} + +/* + * Local variables: + * c-basic-offset: 2 + * End: + */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.stderr.exp new file mode 100644 index 000000000..d16127fb5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.stderr.exp @@ -0,0 +1,4 @@ + +Done. + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.vgtest new file mode 100644 index 000000000..915109847 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write.vgtest @@ -0,0 +1,4 @@ +prereq: test -e free_is_write && ./supported_libpthread +vgopts: --read-var-info=yes --free-is-write=yes --show-confl-seg=no +prog: free_is_write +args: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.stderr.exp new file mode 100644 index 000000000..d16127fb5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.stderr.exp @@ -0,0 +1,4 @@ + +Done. + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.vgtest new file mode 100644 index 000000000..256959fd2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/free_is_write2.vgtest @@ -0,0 +1,4 @@ +prereq: test -e free_is_write && ./supported_libpthread +vgopts: --read-var-info=yes --free-is-write=yes --check-stack-var=yes --show-confl-seg=no +prog: free_is_write +args: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/memory_allocation.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/memory_allocation.c index 1072489d0..d6d638823 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/memory_allocation.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/memory_allocation.c @@ -26,7 +26,7 @@ int main() * is zero, while Darwin's C library returns a non-NULL pointer. Both are * allowed by POSIX. */ -#if defined(__APPLE__) +#if defined(VGO_darwin) if (p) free(p); #else diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached.c index 696cd4b59..88d22d9b3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached.c @@ -1,33 +1,24 @@ /* Test whether detached threads are handled properly. */ - #include +#include /* PTHREAD_STACK_MIN */ #include #include #include #include - static int s_finished_count; static pthread_mutex_t s_mutex; - +static pthread_cond_t s_cond; static void increment_finished_count() { pthread_mutex_lock(&s_mutex); s_finished_count++; + pthread_cond_signal(&s_cond); pthread_mutex_unlock(&s_mutex); } -static int get_finished_count() -{ - int result; - pthread_mutex_lock(&s_mutex); - result = s_finished_count; - pthread_mutex_unlock(&s_mutex); - return result; -} - static void* thread_func1(void* arg) { write(STDOUT_FILENO, ".", 1); @@ -47,27 +38,24 @@ int main(int argc, char** argv) { const int count1 = argc > 1 ? atoi(argv[1]) : 100; const int count2 = argc > 2 ? atoi(argv[2]) : 100; - int thread_arg[count1 > count2 ? count1 : count2]; int i; int detachstate; pthread_attr_t attr; - for (i = 0; i < count1 || i < count2; i++) - thread_arg[i] = i; - pthread_mutex_init(&s_mutex, 0); + pthread_cond_init(&s_cond, 0); pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); assert(pthread_attr_getdetachstate(&attr, &detachstate) == 0); assert(detachstate == PTHREAD_CREATE_DETACHED); - pthread_attr_setstacksize(&attr, 16384); + pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + 4096); // Create count1 detached threads by setting the "detached" property via // thread attributes. for (i = 0; i < count1; i++) { pthread_t thread; - pthread_create(&thread, &attr, thread_func1, &thread_arg[i]); + pthread_create(&thread, &attr, thread_func1, NULL); } // Create count2 detached threads by letting the threads detach themselves. pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); @@ -76,22 +64,23 @@ int main(int argc, char** argv) for (i = 0; i < count2; i++) { pthread_t thread; - pthread_create(&thread, &attr, thread_func2, &thread_arg[i]); + pthread_create(&thread, &attr, thread_func2, NULL); } pthread_attr_destroy(&attr); // Wait until all detached threads have written their output to stdout. - while (get_finished_count() < count1 + count2) - { - struct timespec delay = { 0, 1 * 1000 * 1000 }; - nanosleep(&delay, 0); - } - - write(STDOUT_FILENO, "\n", 1); + pthread_mutex_lock(&s_mutex); + while (s_finished_count < count1 + count2 + && pthread_cond_wait(&s_cond, &s_mutex) == 0) + ; + pthread_mutex_unlock(&s_mutex); + pthread_cond_destroy(&s_cond); pthread_mutex_destroy(&s_mutex); sleep(1); + write(STDOUT_FILENO, "\n", 1); + return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.c new file mode 100644 index 000000000..12a7a14de --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.c @@ -0,0 +1,29 @@ +/* Invoke pthread_detach() with an invalid thread ID. */ + +#include +#include +#include +#include + +static void* thread_func(void* arg) +{ + return 0; +} + +int main(int argc, char** argv) +{ + pthread_t thread; + + pthread_create(&thread, NULL, thread_func, NULL); + pthread_join(thread, NULL); + + /* Invoke pthread_detach() with the thread ID of a joined thread. */ + pthread_detach(thread); + + /* Invoke pthread_detach() with an invalid thread ID. */ + pthread_detach(thread + 1); + + fprintf(stderr, "Finished.\n"); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp1 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp1 new file mode 100644 index 000000000..58412ec4c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp1 @@ -0,0 +1,12 @@ + +pthread_detach(): invalid thread ID 0x........ + at 0x........: pthread_detach (drd_pthread_intercepts.c:?) + by 0x........: main (pth_detached3.c:21) + +pthread_detach(): invalid thread ID 0x........ + at 0x........: pthread_detach (drd_pthread_intercepts.c:?) + by 0x........: main (pth_detached3.c:24) + +Finished. + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp2 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp2 new file mode 100644 index 000000000..bdc5cf8c9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.stderr.exp2 @@ -0,0 +1,14 @@ + +pthread_detach(): invalid thread ID 0x........ + at 0x........: vgDrd_set_joinable (drd_pthread_intercepts.c:?) + by 0x........: pthread_detach (drd_pthread_intercepts.c:?) + by 0x........: main (pth_detached3.c:21) + +pthread_detach(): invalid thread ID 0x........ + at 0x........: vgDrd_set_joinable (drd_pthread_intercepts.c:?) + by 0x........: pthread_detach (drd_pthread_intercepts.c:?) + by 0x........: main (pth_detached3.c:24) + +Finished. + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.vgtest new file mode 100644 index 000000000..9c72be745 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_detached3.vgtest @@ -0,0 +1,2 @@ +prereq: ./supported_libpthread +prog: pth_detached3 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_inconsistent_cond_wait.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_inconsistent_cond_wait.c index 618b5401a..fb95fd8a9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_inconsistent_cond_wait.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/pth_inconsistent_cond_wait.c @@ -44,8 +44,14 @@ static int s_quiet; static sem_t* create_semaphore(const char* const name) { -#ifdef __APPLE__ - sem_t* p = sem_open(name, O_CREAT, 0600, 0); +#ifdef VGO_darwin + char name_and_pid[32]; + snprintf(name_and_pid, sizeof(name_and_pid), "%s-%d", name, getpid()); + sem_t* p = sem_open(name_and_pid, O_CREAT | O_EXCL, 0600, 0); + if (p == SEM_FAILED) { + perror("sem_open"); + return NULL; + } return p; #else sem_t* p = malloc(sizeof(*p)); @@ -57,7 +63,7 @@ static sem_t* create_semaphore(const char* const name) static void destroy_semaphore(const char* const name, sem_t* p) { -#ifdef __APPLE__ +#ifdef VGO_darwin sem_close(p); sem_unlink(name); #else diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.stderr.exp new file mode 100644 index 000000000..83b1f0116 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.stderr.exp @@ -0,0 +1,14 @@ + +Start. +Thread 2: +Conflicting store by thread 2 at 0x........ size 10 + at 0x........: free (vg_replace_malloc.c:...) + by 0x........: thread_func (free_is_write.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +Address 0x........ is at offset 0 from 0x......... Allocation context: + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: main (free_is_write.c:?) + +Done. + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.vgtest new file mode 100644 index 000000000..eac2d097b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/read_and_free_race.vgtest @@ -0,0 +1,2 @@ +prog: ../../helgrind/tests/free_is_write +vgopts: --free-is-write=yes --num-callers=3 --show-confl-seg=no diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_race.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_race.c index e07524f09..6650c81b9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_race.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_race.c @@ -38,9 +38,9 @@ int main(int argc, char** argv) pthread_t thread2; #if 0 - int res; - VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_TRACE_ADDR, - &s_racy, 0, 0, 0, 0); + + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__DRD_TRACE_ADDR, + &s_racy, 0, 0, 0, 0); #endif pthread_rwlock_init(&s_rwlock, 0); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_type_checking.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_type_checking.stderr.exp index c1ee6dbed..b3d2dc9f1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_type_checking.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/rwlock_type_checking.stderr.exp @@ -3,12 +3,10 @@ Attempt to use a user-defined rwlock as a POSIX rwlock: rwlock 0x......... at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?) by 0x........: main (rwlock_type_checking.c:?) rwlock 0x........ was first observed at: - at 0x........: vgDrdCl_annotate_rwlock_create (drd.h:?) - by 0x........: main (rwlock_type_checking.c:?) + at 0x........: main (rwlock_type_checking.c:?) Attempt to use a POSIX rwlock as a user-defined rwlock: rwlock 0x......... - at 0x........: vgDrdCl_annotate_rwlock_released (drd.h:?) - by 0x........: main (rwlock_type_checking.c:?) + at 0x........: main (rwlock_type_checking.c:?) rwlock 0x........ was first observed at: at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?) by 0x........: main (rwlock_type_checking.c:?) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sem_open.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sem_open.c index d45200950..65ee28b3d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sem_open.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sem_open.c @@ -58,8 +58,9 @@ int main(int argc, char** argv) * Use the ipcs and ipcrm commands to clean up named semaphores left by * aborted instances of this process. */ - snprintf(semaphore_name, sizeof(semaphore_name), "drd-sem-open-test"); - s_sem = sem_open(semaphore_name, O_CREAT, 0600, 1); + snprintf(semaphore_name, sizeof(semaphore_name), "drd-sem-open-test-%d", + getpid()); + s_sem = sem_open(semaphore_name, O_CREAT | O_EXCL, 0600, 1); if (s_sem == SEM_FAILED) { fprintf(stderr, "Failed to create a semaphore with name %s\n", diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigalrm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigalrm.c index 408eaf8cb..38b979c56 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigalrm.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigalrm.c @@ -55,7 +55,6 @@ void* thread_func(void* thread_arg) int main(int argc, char** argv) { - int vgthreadid; pthread_t threadid; struct timespec tsDelay; @@ -63,8 +62,6 @@ int main(int argc, char** argv) if (argc > 1) s_debug = 1; - vgthreadid = DRD_GET_VALGRIND_THREADID; - print_thread_id("main: "); { diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.stderr.exp new file mode 100644 index 000000000..b95833f61 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.stderr.exp @@ -0,0 +1,6 @@ +calling sigaltstack, stack base is 0x........ +setting sigaction +res = 0 +raising the signal +caught signal, local var is on 0x........ +done diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.vgtest new file mode 100644 index 000000000..a079d603c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/sigaltstack.vgtest @@ -0,0 +1,2 @@ +prog: ../../memcheck/tests/sigaltstack +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin index 7832a6f6d..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin @@ -1,63 +0,0 @@ - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:69) - -Mutex not locked: mutex 0x........, recursion count 0, owner 0. - at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:72) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:51) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:20) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:56) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:51) - -Thread 1: -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:75) -rwlock 0x........ was first observed at: - at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:57) - -Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2. - at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:78) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:53) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:24) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:56) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:53) - -The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) ! -Thread 2: -Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1. - at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) - by 0x........: grab_the_lock (tc23_bogus_condwait.c:42) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:53) - - -ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-amd64 new file mode 100644 index 000000000..26e3b9a5c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-amd64 @@ -0,0 +1,69 @@ + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +Mutex not locked: mutex 0x........, recursion count 0, owner 0. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:72) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:51) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:20) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:56) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:51) + +Thread 1: +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:75) +rwlock 0x........ was first observed at: + at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:57) + +Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:78) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:24) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:56) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + +The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) ! +Thread 2: +Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: grab_the_lock (tc23_bogus_condwait.c:42) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + +Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86. + +Process terminating with default action of signal 6 (SIGABRT) + at 0x........: __kill (in /...libc...) + by 0x........: __assert_rtn (in /...libc...) + by 0x........: main (tc23_bogus_condwait.c:86) + +ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-x86 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-x86 new file mode 100644 index 000000000..7832a6f6d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tc23_bogus_condwait.stderr.exp-darwin-x86 @@ -0,0 +1,63 @@ + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +Mutex not locked: mutex 0x........, recursion count 0, owner 0. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:72) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:51) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:20) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:56) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:51) + +Thread 1: +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:75) +rwlock 0x........ was first observed at: + at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:57) + +Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2. + at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:78) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:24) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:56) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + +The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) ! +Thread 2: +Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: grab_the_lock (tc23_bogus_condwait.c:42) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:53) + + +ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.c new file mode 100644 index 000000000..a83bf35dd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.c @@ -0,0 +1,55 @@ +/* fork a process that has created a detached thread. */ + +#include +#include +#include +#include +#include +#include +#include + +static void *threadmain(void *dummy) +{ + sleep((unsigned long)dummy); + return NULL; +} + +int main(int argc, char **argv) +{ + int ctr; + pid_t childpid; + pthread_t childthread; + void *res; + int status; + + pthread_create(&childthread, NULL, threadmain, (void *)2); + pthread_detach(childthread); + + childpid = fork(); + switch (childpid) { + case 0: + pthread_create(&childthread, NULL, threadmain, 0); + pthread_join(childthread, &res); + exit(0); + break; + case -1: + perror("FAILED: fork failed\n"); + break; + default: + break; + } + + ctr = 0; + while (waitpid(childpid, &status, 0) != childpid) { + sleep(1); + ctr++; + if (ctr >= 10) { + fprintf(stderr, "FAILED - timeout waiting for child\n"); + return 0; + } + } + + fprintf(stderr, "PASS\n"); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.stderr.exp new file mode 100644 index 000000000..79bbd8e94 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.stderr.exp @@ -0,0 +1,6 @@ + + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +PASS + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.vgtest new file mode 100644 index 000000000..94497290e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/threaded-fork.vgtest @@ -0,0 +1,2 @@ +prereq: ./supported_libpthread +prog: threaded-fork diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_thread_wrappers_pthread.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_thread_wrappers_pthread.h index 05461c56f..7072fead1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_thread_wrappers_pthread.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_thread_wrappers_pthread.h @@ -51,7 +51,7 @@ #include #include // INT_MAX -#ifdef __APPLE__ +#ifdef VGO_darwin #include #define NO_BARRIER #define NO_TLS @@ -65,7 +65,8 @@ using namespace std; #include "../../drd/drd.h" #define ANNOTATE_NO_OP(arg) do { } while(0) -#define ANNOTATE_EXPECT_RACE(addr, descr) DRDCL_(ignore_range)(addr, 4) +#define ANNOTATE_EXPECT_RACE(addr, descr) \ + ANNOTATE_BENIGN_RACE_SIZED(addr, 4, "expected race") static inline bool RunningOnValgrind() { return RUNNING_ON_VALGRIND; } #include @@ -105,7 +106,7 @@ class CondVar; #ifndef NO_SPINLOCK /// helgrind does not (yet) support spin locks, so we annotate them. -#ifndef __APPLE__ +#ifndef VGO_darwin class SpinLock { public: SpinLock() { @@ -150,7 +151,7 @@ class SpinLock { private: OSSpinLock mu_; }; -#endif // __APPLE__ +#endif // VGO_darwin #endif // NO_SPINLOCK @@ -588,7 +589,7 @@ class BlockingCounter { int AtomicIncrement(volatile int *value, int increment); -#ifndef __APPLE__ +#ifndef VGO_darwin inline int AtomicIncrement(volatile int *value, int increment) { return __sync_add_and_fetch(value, increment); } @@ -607,7 +608,7 @@ int posix_memalign(void **out, size_t al, size_t size) { *out = memalign(al, size); return (*out == 0); } -#endif // __APPLE__ +#endif // VGO_darwin #endif // THREAD_WRAPPERS_PTHREAD_H // vim:shiftwidth=2:softtabstop=2:expandtab:foldmethod=marker diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_unittest.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_unittest.cpp index 6ba123d76..1ff34b72c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_unittest.cpp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/tsan_unittest.cpp @@ -93,7 +93,7 @@ static inline void IGNORE_RETURN_VALUE(T v) #include #include -#ifndef __APPLE__ +#ifndef VGO_darwin #include #endif @@ -3469,7 +3469,7 @@ void Worker() { n %= Nlog; long t0 = clock(); - long t = t0; + long t __attribute__((unused)) = t0; for (int it = 0; it < N_iter; it++) { if(n == 0) { @@ -4786,7 +4786,7 @@ void Run() { // but the files are actually the same (symlinked). sprintf(out_name, "/tmp/racecheck_unittest_out.%d", getpid()); fd_out = creat(out_name, O_WRONLY | S_IRWXU); -#ifdef __APPLE__ +#ifdef VGO_darwin // symlink() is not supported on Darwin. Copy the output file name. strcpy(in_name, out_name); #else @@ -5047,7 +5047,7 @@ namespace test105 { int GLOB = 0; void F1() { - int ar[32]; + int ar[32] __attribute__((unused)); // ANNOTATE_TRACE_MEMORY(&ar[0]); // ANNOTATE_TRACE_MEMORY(&ar[31]); ar[0] = 1; @@ -5055,7 +5055,7 @@ void F1() { } void Worker() { - int ar[32]; + int ar[32] __attribute__((unused)); // ANNOTATE_TRACE_MEMORY(&ar[0]); // ANNOTATE_TRACE_MEMORY(&ar[31]); ar[0] = 1; @@ -7142,7 +7142,7 @@ BlockingCounter *blocking_counter; int GLOB = 0; // Worker(N) will do 2^N increments of GLOB, each increment in a separate thread -void Worker(int depth) { +void Worker(long depth) { CHECK(depth >= 0); if (depth > 0) { ThreadPool pool(2); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unified_annotations.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unified_annotations.h index 8bf66888b..13259d6fc 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unified_annotations.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unified_annotations.h @@ -6,26 +6,16 @@ /* - * Redefine the happens before/after/done annotation macros such that these - * can be intercepted by DRD, Helgrind and ThreadSanitizer. See also + * Define annotation macros such that these can be intercepted by DRD, Helgrind + * and ThreadSanitizer. See also * http://code.google.com/p/data-race-test/source/browse/trunk/dynamic_annotations/dynamic_annotations.h */ -#undef ANNOTATE_HAPPENS_BEFORE -#define ANNOTATE_HAPPENS_BEFORE(addr) \ - do { \ - DRDCL_(annotate_happens_before)(addr); \ - AnnotateCondVarSignal(__FILE__, __LINE__, addr); \ - } while(0) -#undef ANNOTATE_HAPPENS_AFTER -#define ANNOTATE_HAPPENS_AFTER(addr) \ - do { \ - DRDCL_(annotate_happens_after)(addr); \ - AnnotateCondVarWait(__FILE__, __LINE__, addr, NULL); \ - } while(0) -#undef ANNOTATE_HAPPENS_DONE -#define ANNOTATE_HAPPENS_DONE(addr) \ +#define U_ANNOTATE_NEW_MEMORY(addr, size) ANNOTATE_NEW_MEMORY(addr, size) +#define U_ANNOTATE_HAPPENS_BEFORE(addr) U_AnnotateHappensBefore(addr) +#define U_ANNOTATE_HAPPENS_AFTER(addr) U_AnnotateHappensAfter(addr) +#define U_ANNOTATE_HAPPENS_DONE(addr) \ do { \ - DRDCL_(annotate_happens_done)(addr); \ + ANNOTATE_HAPPENS_DONE(addr); \ } while(0) @@ -50,6 +40,18 @@ AnnotateCondVarWait(const char *file, int line, const volatile void *cv, asm(""); } +static __inline__ void U_AnnotateHappensBefore(void* addr) +{ + ANNOTATE_HAPPENS_BEFORE(addr); + AnnotateCondVarSignal(__FILE__, __LINE__, addr); +} + +static __inline__ void U_AnnotateHappensAfter(void *addr) +{ + ANNOTATE_HAPPENS_AFTER(addr); + AnnotateCondVarWait(__FILE__, __LINE__, addr, NULL); +} + #if 0 { diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unit_bitmap.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unit_bitmap.c index 280943c6c..236cf0681 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unit_bitmap.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/unit_bitmap.c @@ -63,6 +63,7 @@ static int s_verbose = 1; static struct { Addr address; SizeT size; BmAccessTypeT access_type; } s_test1_args[] = { + { 0, 0, eLoad }, { 0, 1, eLoad }, { 666, 4, eLoad }, { 667, 2, eStore }, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/Makefile.in index 9781d4f64..696c30f50 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/Makefile.in @@ -165,6 +165,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -194,12 +196,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -353,7 +350,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -382,6 +379,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -410,6 +412,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -462,6 +465,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -525,6 +531,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -567,6 +576,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/bbv-manual.xml BBV_SOURCES_COMMON = bbv_main.c exp_bbv_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/Makefile.in index 8f603b819..9b24e5389 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/Makefile.in @@ -148,6 +148,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -177,12 +179,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -335,7 +332,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -364,6 +361,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -392,6 +394,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/amd64-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/amd64-linux/Makefile.in index 7a9f172f2..8ceb78614 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/amd64-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/amd64-linux/Makefile.in @@ -137,6 +137,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -166,12 +168,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -324,7 +321,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -353,6 +350,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -381,6 +383,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/arm-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/arm-linux/Makefile.in new file mode 100644 index 000000000..e69de29bb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.am index d022cf73c..c09495956 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.am @@ -14,9 +14,9 @@ EXTRA_DIST = \ million.post.exp \ million.vgtest -AM_CCASFLAGS += -ffreestanding +AM_CCASFLAGS += -ffreestanding -m32 -LDFLAGS += -nostartfiles -nodefaultlibs +LDFLAGS += -nostartfiles -nodefaultlibs -m32 ll_SOURCES = ll.S million_SOURCES = million.S diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.in index c61fac04e..4ede05d0d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/ppc32-linux/Makefile.in @@ -120,6 +120,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -130,7 +132,7 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -nostartfiles -nodefaultlibs +LDFLAGS = @LDFLAGS@ -nostartfiles -nodefaultlibs -m32 LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ @@ -149,12 +151,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -307,7 +304,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -336,6 +333,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -364,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -378,7 +381,7 @@ AM_CFLAGS = -Winline -Wall -Wshadow -g AM_CXXFLAGS = -Winline -Wall -Wshadow -g # Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of # automake; see comments in Makefile.all.am for more detail. -AM_CCASFLAGS = $(AM_CPPFLAGS) -ffreestanding +AM_CCASFLAGS = $(AM_CPPFLAGS) -ffreestanding -m32 @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86-linux/Makefile.in index 7a61225de..1f1b400e8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86-linux/Makefile.in @@ -120,6 +120,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -149,12 +151,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -307,7 +304,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -336,6 +333,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -364,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86/Makefile.in index ef4940950..5ed2612e0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-bbv/tests/x86/Makefile.in @@ -129,6 +129,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -158,12 +160,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -316,7 +313,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -345,6 +342,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -373,6 +375,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.am new file mode 100644 index 000000000..9ee6497d7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.am @@ -0,0 +1,100 @@ +include $(top_srcdir)/Makefile.tool.am + +#SUBDIRS += perf + +EXTRA_DIST = docs/dh-manual.xml + +#---------------------------------------------------------------------------- +# Headers, etc +#---------------------------------------------------------------------------- + +#bin_SCRIPTS = dh_print + +#---------------------------------------------------------------------------- +# exp_dhat- +#---------------------------------------------------------------------------- + +noinst_PROGRAMS = exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@ +if VGCONF_HAVE_PLATFORM_SEC +noinst_PROGRAMS += exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@ +endif + +EXP_DHAT_SOURCES_COMMON = dh_main.c + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ + $(EXP_DHAT_SOURCES_COMMON) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_PRI@ \ + $(LINK) \ + $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \ + $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS) + +if VGCONF_HAVE_PLATFORM_SEC +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \ + $(EXP_DHAT_SOURCES_COMMON) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_SEC@ \ + $(LINK) \ + $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \ + $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS) +endif + +#---------------------------------------------------------------------------- +# vgpreload_exp_dhat-.so +#---------------------------------------------------------------------------- + +noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so +if VGCONF_HAVE_PLATFORM_SEC +noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so +endif + +if VGCONF_OS_IS_DARWIN +noinst_DSYMS = $(noinst_PROGRAMS) +endif + +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(AM_CFLAGS_PIC) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +if VGCONF_HAVE_PLATFORM_SEC +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(AM_CFLAGS_PIC) +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@) +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +endif + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.in new file mode 100644 index 000000000..2a8a2b0b9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/Makefile.in @@ -0,0 +1,1181 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.all.am $(top_srcdir)/Makefile.tool.am +noinst_PROGRAMS = exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT) \ + $(am__EXEEXT_1) \ + vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT) \ + $(am__EXEEXT_2) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_1 = exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@ +@VGCONF_HAVE_PLATFORM_SEC_FALSE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_2 = vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so +subdir = exp-dhat +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__EXEEXT_1 = exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__EXEEXT_2 = vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +am__objects_1 = \ + exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.$(OBJEXT) +am_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = $(am__objects_1) +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = \ + $(am_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) +am__exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST = dh_main.c +am__objects_2 = \ + exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.$(OBJEXT) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_2) +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS = \ + $(am_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) +am_vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = $(am_vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD = $(LDADD) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK = $(CCLD) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) \ + $(CFLAGS) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = $(am_vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDADD = $(LDADD) +vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LINK = $(CCLD) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) \ + $(CFLAGS) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ + $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES) +DIST_SOURCES = $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ + $(am__exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \ + $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . tests +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ + +#---------------------------------------------------------------------------- +# - stuff +#---------------------------------------------------------------------------- +TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@ = \ + $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \ + $(top_builddir)/VEX/libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/VEX/libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a + +TOOL_LDADD_COMMON = -lgcc +TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@ = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) $(TOOL_LDADD_COMMON) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) $(TOOL_LDADD_COMMON) + + +# -Wl,--build-id=none is needed when linking tools on Linux. Without this +# flag newer ld versions (2.20 and later) create a .note.gnu.build-id at the +# default text segment address, which of course means the resulting executable +# is unusable. So we have to tell ld not to generate that, with --build-id=none. +TOOL_LDFLAGS_COMMON_LINUX = \ + -static -nodefaultlibs -nostartfiles -u _start @FLAG_NO_BUILD_ID@ + +TOOL_LDFLAGS_COMMON_AIX5 = \ + -static -Wl,-e_start_valgrind + +TOOL_LDFLAGS_COMMON_DARWIN = \ + -nodefaultlibs -nostartfiles -Wl,-u,__start -Wl,-e,__start + +TOOL_LDFLAGS_COMMON_L4RE = \ + -static -nodefaultlibs -nostartfiles -u _start + +TOOL_LDFLAGS_X86_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_AMD64_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_PPC32_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_PPC64_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_ARM_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_PPC32_AIX5 = \ + $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ + +TOOL_LDFLAGS_PPC64_AIX5 = \ + $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ -Wl,-bbigtoc + +TOOL_LDFLAGS_X86_DARWIN = \ + $(TOOL_LDFLAGS_COMMON_DARWIN) -arch i386 + +TOOL_LDADD_X86_L4RE = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(L4_LDFLAGS) $(L4_CRTN) $(TOOL_LDADD_COMMON) + +TOOL_LDFLAGS_X86_L4RE = \ + -nostdinc -nostdlib $(L4_CRT0) $(TOOL_LDFLAGS_COMMON_L4RE) @FLAG_M32@ + + +# pagezero can't be unmapped and remapped. Use stack instead. +# GrP fixme no stack guard +TOOL_LDFLAGS_AMD64_DARWIN = \ + $(TOOL_LDFLAGS_COMMON_DARWIN) -arch x86_64 + + +# NB for 64-bit darwin. We may want to set -Wl,-pagezero_size to +# something smaller than the default of 4G, so as to facilitate +# loading clients who are also linked thusly (currently m_ume.c +# will fail to load them). Although such setting is probably +# better done in link_tool_exe.c. +# -Wl,-pagezero_size,0x100000000 + +#---------------------------------------------------------------------------- +# vgpreload_-.a stuff +#---------------------------------------------------------------------------- +LIBREPLACEMALLOC_X86_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-linux.a + +LIBREPLACEMALLOC_AMD64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-linux.a + +LIBREPLACEMALLOC_PPC32_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-linux.a + +LIBREPLACEMALLOC_PPC64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-linux.a + +LIBREPLACEMALLOC_ARM_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm-linux.a + +LIBREPLACEMALLOC_PPC32_AIX5 = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-aix5.a + +LIBREPLACEMALLOC_PPC64_AIX5 = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-aix5.a + +LIBREPLACEMALLOC_X86_DARWIN = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-darwin.a + +LIBREPLACEMALLOC_AMD64_DARWIN = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a + +LIBREPLACEMALLOC_X86_L4RE = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a + +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + +LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_X86_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_AMD64_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_PPC32_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_PPC64_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_ARM_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_ARM_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5 = \ + $(LIBREPLACEMALLOC_PPC32_AIX5) + +LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5 = \ + $(LIBREPLACEMALLOC_PPC64_AIX5) + +LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \ + $(LIBREPLACEMALLOC_X86_DARWIN) + +LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \ + $(LIBREPLACEMALLOC_AMD64_DARWIN) + +LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_X86_L4RE) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + + +#SUBDIRS += perf +EXTRA_DIST = docs/dh-manual.xml +EXP_DHAT_SOURCES_COMMON = dh_main.c +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ + $(EXP_DHAT_SOURCES_COMMON) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_PRI@ \ + $(LINK) \ + $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \ + $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(EXP_DHAT_SOURCES_COMMON) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ @VALT_LOAD_ADDRESS_SEC@ \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LINK) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS) + +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(noinst_PROGRAMS) +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(AM_CFLAGS_PIC) + +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@) + +vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(AM_CFLAGS_PIC) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-dhat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign exp-dhat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT): $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES) + @rm -f exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT) + $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD) $(LIBS) +exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT): $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES) + @rm -f exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT) + $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD) $(LIBS) +vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT): $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES) + @rm -f vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT) + $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK) $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD) $(LIBS) +vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT): $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES) + @rm -f vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT) + $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LINK) $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.o: dh_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.o -MD -MP -MF $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Tpo -c -o exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.o `test -f 'dh_main.c' || echo '$(srcdir)/'`dh_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Tpo $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dh_main.c' object='exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.o `test -f 'dh_main.c' || echo '$(srcdir)/'`dh_main.c + +exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.obj: dh_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.obj -MD -MP -MF $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Tpo -c -o exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.obj `if test -f 'dh_main.c'; then $(CYGPATH_W) 'dh_main.c'; else $(CYGPATH_W) '$(srcdir)/dh_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Tpo $(DEPDIR)/exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dh_main.c' object='exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@-dh_main.obj `if test -f 'dh_main.c'; then $(CYGPATH_W) 'dh_main.c'; else $(CYGPATH_W) '$(srcdir)/dh_main.c'; fi` + +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.o: dh_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.o -MD -MP -MF $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Tpo -c -o exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.o `test -f 'dh_main.c' || echo '$(srcdir)/'`dh_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Tpo $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dh_main.c' object='exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.o `test -f 'dh_main.c' || echo '$(srcdir)/'`dh_main.c + +exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.obj: dh_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.obj -MD -MP -MF $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Tpo -c -o exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.obj `if test -f 'dh_main.c'; then $(CYGPATH_W) 'dh_main.c'; else $(CYGPATH_W) '$(srcdir)/dh_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Tpo $(DEPDIR)/exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dh_main.c' object='exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@-dh_main.obj `if test -f 'dh_main.c'; then $(CYGPATH_W) 'dh_main.c'; else $(CYGPATH_W) '$(srcdir)/dh_main.c'; fi` + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) all-local +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-local clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-exec-local + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am all-local check check-am clean clean-generic \ + clean-local clean-noinstPROGRAMS ctags ctags-recursive \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-local \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +#---------------------------------------------------------------------------- +# General stuff +#---------------------------------------------------------------------------- + +all-local: inplace-noinst_PROGRAMS inplace-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/dh_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/dh_main.c new file mode 100644 index 000000000..810a289a3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/dh_main.c @@ -0,0 +1,1402 @@ + +//--------------------------------------------------------------------*/ +//--- DHAT: a Dynamic Heap Analysis Tool dh_main.c ---*/ +//--------------------------------------------------------------------*/ + +/* + This file is part of DHAT, a Valgrind tool for profiling the + heap usage of programs. + + Copyright (C) 2010-2010 Mozilla 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Julian Seward */ + + +#include "pub_tool_basics.h" +#include "pub_tool_libcbase.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_libcprint.h" +#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry) +#include "pub_tool_mallocfree.h" +#include "pub_tool_options.h" +#include "pub_tool_replacemalloc.h" +#include "pub_tool_tooliface.h" +#include "pub_tool_wordfm.h" + +#define HISTOGRAM_SIZE_LIMIT 1024 + + +//------------------------------------------------------------// +//--- Globals ---// +//------------------------------------------------------------// + +// Number of guest instructions executed so far. This is +// incremented directly from the generated code. +static ULong g_guest_instrs_executed = 0; + +// Summary statistics for the entire run. +static ULong g_tot_blocks = 0; // total blocks allocated +static ULong g_tot_bytes = 0; // total bytes allocated + +static ULong g_cur_blocks_live = 0; // curr # blocks live +static ULong g_cur_bytes_live = 0; // curr # bytes live + +static ULong g_max_blocks_live = 0; // bytes and blocks at +static ULong g_max_bytes_live = 0; // the max residency point + + +//------------------------------------------------------------// +//--- an Interval Tree of live blocks ---// +//------------------------------------------------------------// + +/* Tracks information about live blocks. */ +typedef + struct { + Addr payload; + SizeT req_szB; + ExeContext* ap; /* allocation ec */ + ULong allocd_at; /* instruction number */ + ULong n_reads; + ULong n_writes; + /* Approx histogram, one byte per payload byte. Counts latch up + therefore at 0xFFFF. Can be NULL if the block is resized or if + the block is larger than HISTOGRAM_SIZE_LIMIT. */ + UShort* histoW; /* [0 .. req_szB-1] */ + } + Block; + +/* May not contain zero-sized blocks. May not contain + overlapping blocks. */ +static WordFM* interval_tree = NULL; /* WordFM* Block* void */ + +/* Here's the comparison function. Since the tree is required +to contain non-zero sized, non-overlapping blocks, it's good +enough to consider any overlap as a match. */ +static Word interval_tree_Cmp ( UWord k1, UWord k2 ) +{ + Block* b1 = (Block*)k1; + Block* b2 = (Block*)k2; + tl_assert(b1->req_szB > 0); + tl_assert(b2->req_szB > 0); + if (b1->payload + b1->req_szB <= b2->payload) return -1; + if (b2->payload + b2->req_szB <= b1->payload) return 1; + return 0; +} + +// 2-entry cache for find_Block_containing +static Block* fbc_cache0 = NULL; +static Block* fbc_cache1 = NULL; + +static UWord stats__n_fBc_cached = 0; +static UWord stats__n_fBc_uncached = 0; +static UWord stats__n_fBc_notfound = 0; + +static Block* find_Block_containing ( Addr a ) +{ + if (LIKELY(fbc_cache0 + && fbc_cache0->payload <= a + && a < fbc_cache0->payload + fbc_cache0->req_szB)) { + // found at 0 + stats__n_fBc_cached++; + return fbc_cache0; + } + if (LIKELY(fbc_cache1 + && fbc_cache1->payload <= a + && a < fbc_cache1->payload + fbc_cache1->req_szB)) { + // found at 1; swap 0 and 1 + Block* tmp = fbc_cache0; + fbc_cache0 = fbc_cache1; + fbc_cache1 = tmp; + stats__n_fBc_cached++; + return fbc_cache0; + } + Block fake; + fake.payload = a; + fake.req_szB = 1; + UWord foundkey = 1; + UWord foundval = 1; + Bool found = VG_(lookupFM)( interval_tree, + &foundkey, &foundval, (UWord)&fake ); + if (!found) { + stats__n_fBc_notfound++; + return NULL; + } + tl_assert(foundval == 0); // we don't store vals in the interval tree + tl_assert(foundkey != 1); + Block* res = (Block*)foundkey; + tl_assert(res != &fake); + // put at the top position + fbc_cache1 = fbc_cache0; + fbc_cache0 = res; + stats__n_fBc_uncached++; + return res; +} + +// delete a block; asserts if not found. (viz, 'a' must be +// known to be present.) +static void delete_Block_starting_at ( Addr a ) +{ + Block fake; + fake.payload = a; + fake.req_szB = 1; + Bool found = VG_(delFromFM)( interval_tree, + NULL, NULL, (Addr)&fake ); + tl_assert(found); + fbc_cache0 = fbc_cache1 = NULL; +} + + +//------------------------------------------------------------// +//--- a FM of allocation points (APs) ---// +//------------------------------------------------------------// + +typedef + struct { + // the allocation point that we're summarising stats for + ExeContext* ap; + // used when printing results + Bool shown; + // The current number of blocks and bytes live for this AP + ULong cur_blocks_live; + ULong cur_bytes_live; + // The number of blocks and bytes live at the max-liveness + // point. Note this is a bit subtle. max_blocks_live is not + // the maximum number of live blocks, but rather the number of + // blocks live at the point of maximum byte liveness. These are + // not necessarily the same thing. + ULong max_blocks_live; + ULong max_bytes_live; + // Total number of blocks and bytes allocated by this AP. + ULong tot_blocks; + ULong tot_bytes; + // Sum of death ages for all blocks allocated by this AP, + // that have subsequently been freed. + ULong death_ages_sum; + ULong deaths; + // Total number of reads and writes in all blocks allocated + // by this AP. + ULong n_reads; + ULong n_writes; + /* Histogram information. We maintain a histogram aggregated for + all retiring Blocks allocated by this AP, but only if: + - this AP has only ever allocated objects of one size + - that size is <= HISTOGRAM_SIZE_LIMIT + What we need therefore is a mechanism to see if this AP + has only ever allocated blocks of one size. + + 3 states: + Unknown because no retirement yet + Exactly xsize all retiring blocks are of this size + Mixed multiple different sizes seen + */ + enum { Unknown=999, Exactly, Mixed } xsize_tag; + SizeT xsize; + UInt* histo; /* [0 .. xsize-1] */ + } + APInfo; + +/* maps ExeContext*'s to APInfo*'s. Note that the keys must match the + .ap field in the values. */ +static WordFM* apinfo = NULL; /* WordFM* ExeContext* APInfo* */ + + +/* 'bk' is being introduced (has just been allocated). Find the + relevant APInfo entry for it, or create one, based on the block's + allocation EC. Then, update the APInfo to the extent that we + actually can, to reflect the allocation. */ +static void intro_Block ( Block* bk ) +{ + tl_assert(bk); + tl_assert(bk->ap); + + APInfo* api = NULL; + UWord keyW = 0; + UWord valW = 0; + Bool found = VG_(lookupFM)( apinfo, + &keyW, &valW, (UWord)bk->ap ); + if (found) { + api = (APInfo*)valW; + tl_assert(keyW == (UWord)bk->ap); + } else { + api = VG_(malloc)( "dh.main.intro_Block.1", sizeof(APInfo) ); + VG_(memset)(api, 0, sizeof(*api)); + api->ap = bk->ap; + Bool present = VG_(addToFM)( apinfo, + (UWord)bk->ap, (UWord)api ); + tl_assert(!present); + // histo stuff + tl_assert(api->deaths == 0); + api->xsize_tag = Unknown; + api->xsize = 0; + if (0) VG_(printf)("api %p --> Unknown\n", api); + } + + tl_assert(api->ap == bk->ap); + + /* So: update stats to reflect an allocation */ + + // # live blocks + api->cur_blocks_live++; + + // # live bytes + api->cur_bytes_live += bk->req_szB; + if (api->cur_bytes_live > api->max_bytes_live) { + api->max_bytes_live = api->cur_bytes_live; + api->max_blocks_live = api->cur_blocks_live; + } + + // total blocks and bytes allocated here + api->tot_blocks++; + api->tot_bytes += bk->req_szB; + + // update summary globals + g_tot_blocks++; + g_tot_bytes += bk->req_szB; + + g_cur_blocks_live++; + g_cur_bytes_live += bk->req_szB; + if (g_cur_bytes_live > g_max_bytes_live) { + g_max_bytes_live = g_cur_bytes_live; + g_max_blocks_live = g_cur_blocks_live; + } +} + + +/* 'bk' is retiring (being freed). Find the relevant APInfo entry for + it, which must already exist. Then, fold info from 'bk' into that + entry. 'because_freed' is True if the block is retiring because + the client has freed it. If it is False then the block is retiring + because the program has finished, in which case we want to skip the + updates of the total blocks live etc for this AP, but still fold in + the access counts and histo data that have so far accumulated for + the block. */ +static void retire_Block ( Block* bk, Bool because_freed ) +{ + tl_assert(bk); + tl_assert(bk->ap); + + APInfo* api = NULL; + UWord keyW = 0; + UWord valW = 0; + Bool found = VG_(lookupFM)( apinfo, + &keyW, &valW, (UWord)bk->ap ); + + tl_assert(found); + api = (APInfo*)valW; + tl_assert(api->ap == bk->ap); + + // update stats following this free. + if (0) + VG_(printf)("ec %p api->c_by_l %llu bk->rszB %llu\n", + bk->ap, api->cur_bytes_live, (ULong)bk->req_szB); + + // update total blocks live etc for this AP + if (because_freed) { + tl_assert(api->cur_blocks_live >= 1); + tl_assert(api->cur_bytes_live >= bk->req_szB); + api->cur_blocks_live--; + api->cur_bytes_live -= bk->req_szB; + + api->deaths++; + + tl_assert(bk->allocd_at <= g_guest_instrs_executed); + api->death_ages_sum += (g_guest_instrs_executed - bk->allocd_at); + + // update global summary stats + tl_assert(g_cur_blocks_live > 0); + g_cur_blocks_live--; + tl_assert(g_cur_bytes_live >= bk->req_szB); + g_cur_bytes_live -= bk->req_szB; + } + + // access counts + api->n_reads += bk->n_reads; + api->n_writes += bk->n_writes; + + // histo stuff. First, do state transitions for xsize/xsize_tag. + switch (api->xsize_tag) { + + case Unknown: + tl_assert(api->xsize == 0); + tl_assert(api->deaths == 1 || api->deaths == 0); + tl_assert(!api->histo); + api->xsize_tag = Exactly; + api->xsize = bk->req_szB; + if (0) VG_(printf)("api %p --> Exactly(%lu)\n", api, api->xsize); + // and allocate the histo + if (bk->histoW) { + api->histo = VG_(malloc)("dh.main.retire_Block.1", + api->xsize * sizeof(UInt)); + VG_(memset)(api->histo, 0, api->xsize * sizeof(UInt)); + } + break; + + case Exactly: + //tl_assert(api->deaths > 1); + if (bk->req_szB != api->xsize) { + if (0) VG_(printf)("api %p --> Mixed(%lu -> %lu)\n", + api, api->xsize, bk->req_szB); + api->xsize_tag = Mixed; + api->xsize = 0; + // deallocate the histo, if any + if (api->histo) { + VG_(free)(api->histo); + api->histo = NULL; + } + } + break; + + case Mixed: + //tl_assert(api->deaths > 1); + break; + + default: + tl_assert(0); + } + + // See if we can fold the histo data from this block into + // the data for the AP + if (api->xsize_tag == Exactly && api->histo && bk->histoW) { + tl_assert(api->xsize == bk->req_szB); + UWord i; + for (i = 0; i < api->xsize; i++) { + // FIXME: do something better in case of overflow of api->histo[..] + // Right now, at least don't let it overflow/wrap around + if (api->histo[i] <= 0xFFFE0000) + api->histo[i] += (UInt)bk->histoW[i]; + } + if (0) VG_(printf)("fold in, AP = %p\n", api); + } + + + +#if 0 + if (bk->histoB) { + VG_(printf)("block retiring, histo %lu: ", bk->req_szB); + UWord i; + for (i = 0; i < bk->req_szB; i++) + VG_(printf)("%u ", (UInt)bk->histoB[i]); + VG_(printf)("\n"); + } else { + VG_(printf)("block retiring, no histo %lu\n", bk->req_szB); + } +#endif +} + +/* This handles block resizing. When a block with AP 'ec' has a + size change of 'delta', call here to update the APInfo. */ +static void apinfo_change_cur_bytes_live( ExeContext* ec, Long delta ) +{ + APInfo* api = NULL; + UWord keyW = 0; + UWord valW = 0; + Bool found = VG_(lookupFM)( apinfo, + &keyW, &valW, (UWord)ec ); + + tl_assert(found); + api = (APInfo*)valW; + tl_assert(api->ap == ec); + + if (delta < 0) { + tl_assert(api->cur_bytes_live >= -delta); + tl_assert(g_cur_bytes_live >= -delta); + } + + // adjust current live size + api->cur_bytes_live += delta; + g_cur_bytes_live += delta; + + if (delta > 0 && api->cur_bytes_live > api->max_bytes_live) { + api->max_bytes_live = api->cur_bytes_live; + api->max_blocks_live = api->cur_blocks_live; + } + + // update global summary stats + if (delta > 0 && g_cur_bytes_live > g_max_bytes_live) { + g_max_bytes_live = g_cur_bytes_live; + g_max_blocks_live = g_cur_blocks_live; + } + if (delta > 0) + g_tot_bytes += delta; + + // adjust total allocation size + if (delta > 0) + api->tot_bytes += delta; +} + + +//------------------------------------------------------------// +//--- update both Block and APInfos after {m,re}alloc/free ---// +//------------------------------------------------------------// + +static +void* new_block ( ThreadId tid, void* p, SizeT req_szB, SizeT req_alignB, + Bool is_zeroed ) +{ + tl_assert(p == NULL); // don't handle custom allocators right now + SizeT actual_szB /*, slop_szB*/; + + if ((SSizeT)req_szB < 0) return NULL; + + if (req_szB == 0) + req_szB = 1; /* can't allow zero-sized blocks in the interval tree */ + + // Allocate and zero if necessary + if (!p) { + p = VG_(cli_malloc)( req_alignB, req_szB ); + if (!p) { + return NULL; + } + if (is_zeroed) VG_(memset)(p, 0, req_szB); + actual_szB = VG_(malloc_usable_size)(p); + tl_assert(actual_szB >= req_szB); + /* slop_szB = actual_szB - req_szB; */ + } else { + /* slop_szB = 0; */ + } + + // Make new HP_Chunk node, add to malloc_list + Block* bk = VG_(malloc)("dh.new_block.1", sizeof(Block)); + bk->payload = (Addr)p; + bk->req_szB = req_szB; + bk->ap = VG_(record_ExeContext)(tid, 0/*first word delta*/); + bk->allocd_at = g_guest_instrs_executed; + bk->n_reads = 0; + bk->n_writes = 0; + // set up histogram array, if the block isn't too large + bk->histoW = NULL; + if (req_szB <= HISTOGRAM_SIZE_LIMIT) { + bk->histoW = VG_(malloc)("dh.new_block.2", req_szB * sizeof(UShort)); + VG_(memset)(bk->histoW, 0, req_szB * sizeof(UShort)); + } + + Bool present = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/); + tl_assert(!present); + fbc_cache0 = fbc_cache1 = NULL; + + intro_Block(bk); + + if (0) VG_(printf)("ALLOC %ld -> %p\n", req_szB, p); + + return p; +} + +static +void die_block ( void* p, Bool custom_free ) +{ + tl_assert(!custom_free); // at least for now + + Block* bk = find_Block_containing( (Addr)p ); + + if (!bk) { + return; // bogus free + } + + tl_assert(bk->req_szB > 0); + // assert the block finder is behaving sanely + tl_assert(bk->payload <= (Addr)p); + tl_assert( (Addr)p < bk->payload + bk->req_szB ); + + if (bk->payload != (Addr)p) { + return; // bogus free + } + + if (0) VG_(printf)(" FREE %p %llu\n", + p, g_guest_instrs_executed - bk->allocd_at); + + retire_Block(bk, True/*because_freed*/); + + VG_(cli_free)( (void*)bk->payload ); + delete_Block_starting_at( bk->payload ); + if (bk->histoW) { + VG_(free)( bk->histoW ); + bk->histoW = NULL; + } + VG_(free)( bk ); +} + + +static +void* renew_block ( ThreadId tid, void* p_old, SizeT new_req_szB ) +{ + if (0) VG_(printf)("REALL %p %ld\n", p_old, new_req_szB); + void* p_new = NULL; + + tl_assert(new_req_szB > 0); // map 0 to 1 + + // Find the old block. + Block* bk = find_Block_containing( (Addr)p_old ); + if (!bk) { + return NULL; // bogus realloc + } + + tl_assert(bk->req_szB > 0); + // assert the block finder is behaving sanely + tl_assert(bk->payload <= (Addr)p_old); + tl_assert( (Addr)p_old < bk->payload + bk->req_szB ); + + if (bk->payload != (Addr)p_old) { + return NULL; // bogus realloc + } + + // Keeping the histogram alive in any meaningful way across + // block resizing is too darn complicated. Just throw it away. + if (bk->histoW) { + VG_(free)(bk->histoW); + bk->histoW = NULL; + } + + // Actually do the allocation, if necessary. + if (new_req_szB <= bk->req_szB) { + + // New size is smaller or same; block not moved. + apinfo_change_cur_bytes_live(bk->ap, + (Long)new_req_szB - (Long)bk->req_szB); + bk->req_szB = new_req_szB; + return p_old; + + } else { + + // New size is bigger; make new block, copy shared contents, free old. + p_new = VG_(cli_malloc)(VG_(clo_alignment), new_req_szB); + if (!p_new) { + // Nb: if realloc fails, NULL is returned but the old block is not + // touched. What an awful function. + return NULL; + } + tl_assert(p_new != p_old); + + VG_(memcpy)(p_new, p_old, bk->req_szB); + VG_(cli_free)(p_old); + + // Since the block has moved, we need to re-insert it into the + // interval tree at the new place. Do this by removing + // and re-adding it. + delete_Block_starting_at( (Addr)p_old ); + // now 'bk' is no longer in the tree, but the Block itself + // is still alive + + // Update the metadata. + apinfo_change_cur_bytes_live(bk->ap, + (Long)new_req_szB - (Long)bk->req_szB); + bk->payload = (Addr)p_new; + bk->req_szB = new_req_szB; + + // and re-add + Bool present + = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/); + tl_assert(!present); + fbc_cache0 = fbc_cache1 = NULL; + + return p_new; + } + /*NOTREACHED*/ + tl_assert(0); +} + + +//------------------------------------------------------------// +//--- malloc() et al replacement wrappers ---// +//------------------------------------------------------------// + +static void* dh_malloc ( ThreadId tid, SizeT szB ) +{ + return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False ); +} + +static void* dh___builtin_new ( ThreadId tid, SizeT szB ) +{ + return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False ); +} + +static void* dh___builtin_vec_new ( ThreadId tid, SizeT szB ) +{ + return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False ); +} + +static void* dh_calloc ( ThreadId tid, SizeT m, SizeT szB ) +{ + return new_block( tid, NULL, m*szB, VG_(clo_alignment), /*is_zeroed*/True ); +} + +static void *dh_memalign ( ThreadId tid, SizeT alignB, SizeT szB ) +{ + return new_block( tid, NULL, szB, alignB, False ); +} + +static void dh_free ( ThreadId tid __attribute__((unused)), void* p ) +{ + die_block( p, /*custom_free*/False ); +} + +static void dh___builtin_delete ( ThreadId tid, void* p ) +{ + die_block( p, /*custom_free*/False); +} + +static void dh___builtin_vec_delete ( ThreadId tid, void* p ) +{ + die_block( p, /*custom_free*/False ); +} + +static void* dh_realloc ( ThreadId tid, void* p_old, SizeT new_szB ) +{ + if (p_old == NULL) { + return dh_malloc(tid, new_szB); + } + if (new_szB == 0) { + dh_free(tid, p_old); + return NULL; + } + return renew_block(tid, p_old, new_szB); +} + +static SizeT dh_malloc_usable_size ( ThreadId tid, void* p ) +{ + tl_assert(0); +//zz HP_Chunk* hc = VG_(HT_lookup)( malloc_list, (UWord)p ); +//zz +//zz return ( hc ? hc->req_szB + hc->slop_szB : 0 ); +} + +//------------------------------------------------------------// +//--- memory references ---// +//------------------------------------------------------------// + +static +void inc_histo_for_block ( Block* bk, Addr addr, UWord szB ) +{ + UWord i, offMin, offMax1; + offMin = addr - bk->payload; + tl_assert(offMin < bk->req_szB); + offMax1 = offMin + szB; + if (offMax1 > bk->req_szB) + offMax1 = bk->req_szB; + //VG_(printf)("%lu %lu (size of block %lu)\n", offMin, offMax1, bk->req_szB); + for (i = offMin; i < offMax1; i++) { + UShort n = bk->histoW[i]; + if (n < 0xFFFF) n++; + bk->histoW[i] = n; + } +} + +static VG_REGPARM(2) +void dh_handle_write ( Addr addr, UWord szB ) +{ + Block* bk = find_Block_containing(addr); + if (bk) { + bk->n_writes += szB; + if (bk->histoW) + inc_histo_for_block(bk, addr, szB); + } +} + +static VG_REGPARM(2) +void dh_handle_read ( Addr addr, UWord szB ) +{ + Block* bk = find_Block_containing(addr); + if (bk) { + bk->n_reads += szB; + if (bk->histoW) + inc_histo_for_block(bk, addr, szB); + } +} + + +// Handle reads and writes by syscalls (read == kernel +// reads user space, write == kernel writes user space). +// Assumes no such read or write spans a heap block +// boundary and so we can treat it just as one giant +// read or write. +static +void dh_handle_noninsn_read ( CorePart part, ThreadId tid, Char* s, + Addr base, SizeT size ) +{ + switch (part) { + case Vg_CoreSysCall: + dh_handle_read(base, size); + break; + case Vg_CoreSysCallArgInMem: + break; + case Vg_CoreTranslate: + break; + default: + tl_assert(0); + } +} + +static +void dh_handle_noninsn_write ( CorePart part, ThreadId tid, + Addr base, SizeT size ) +{ + switch (part) { + case Vg_CoreSysCall: + dh_handle_write(base, size); + break; + case Vg_CoreSignal: + break; + default: + tl_assert(0); + } +} + + +//------------------------------------------------------------// +//--- Instrumentation ---// +//------------------------------------------------------------// + +#define binop(_op, _arg1, _arg2) IRExpr_Binop((_op),(_arg1),(_arg2)) +#define mkexpr(_tmp) IRExpr_RdTmp((_tmp)) +#define mkU32(_n) IRExpr_Const(IRConst_U32(_n)) +#define mkU64(_n) IRExpr_Const(IRConst_U64(_n)) +#define assign(_t, _e) IRStmt_WrTmp((_t), (_e)) + +static +void add_counter_update(IRSB* sbOut, Int n) +{ + #if defined(VG_BIGENDIAN) + # define END Iend_BE + #elif defined(VG_LITTLEENDIAN) + # define END Iend_LE + #else + # error "Unknown endianness" + #endif + // Add code to increment 'g_guest_instrs_executed' by 'n', like this: + // WrTmp(t1, Load64(&g_guest_instrs_executed)) + // WrTmp(t2, Add64(RdTmp(t1), Const(n))) + // Store(&g_guest_instrs_executed, t2) + IRTemp t1 = newIRTemp(sbOut->tyenv, Ity_I64); + IRTemp t2 = newIRTemp(sbOut->tyenv, Ity_I64); + IRExpr* counter_addr = mkIRExpr_HWord( (HWord)&g_guest_instrs_executed ); + + IRStmt* st1 = assign(t1, IRExpr_Load(END, Ity_I64, counter_addr)); + IRStmt* st2 = assign(t2, binop(Iop_Add64, mkexpr(t1), mkU64(n))); + IRStmt* st3 = IRStmt_Store(END, counter_addr, mkexpr(t2)); + + addStmtToIRSB( sbOut, st1 ); + addStmtToIRSB( sbOut, st2 ); + addStmtToIRSB( sbOut, st3 ); +} + +static +void addMemEvent(IRSB* sbOut, Bool isWrite, Int szB, IRExpr* addr, + Int goff_sp) +{ + IRType tyAddr = Ity_INVALID; + HChar* hName = NULL; + void* hAddr = NULL; + IRExpr** argv = NULL; + IRDirty* di = NULL; + + const Int THRESH = 4096 * 4; // somewhat arbitrary + const Int rz_szB = VG_STACK_REDZONE_SZB; + + tyAddr = typeOfIRExpr( sbOut->tyenv, addr ); + tl_assert(tyAddr == Ity_I32 || tyAddr == Ity_I64); + + if (isWrite) { + hName = "dh_handle_write"; + hAddr = &dh_handle_write; + } else { + hName = "dh_handle_read"; + hAddr = &dh_handle_read; + } + + argv = mkIRExprVec_2( addr, mkIRExpr_HWord(szB) ); + + /* Add the helper. */ + tl_assert(hName); + tl_assert(hAddr); + tl_assert(argv); + di = unsafeIRDirty_0_N( 2/*regparms*/, + hName, VG_(fnptr_to_fnentry)( hAddr ), + argv ); + + /* Generate the guard condition: "(addr - (SP - RZ)) >u N", for + some arbitrary N. If that fails then addr is in the range (SP - + RZ .. SP + N - RZ). If N is smallish (a page?) then we can say + addr is within a page of SP and so can't possibly be a heap + access, and so can be skipped. */ + IRTemp sp = newIRTemp(sbOut->tyenv, tyAddr); + addStmtToIRSB( sbOut, assign(sp, IRExpr_Get(goff_sp, tyAddr))); + + IRTemp sp_minus_rz = newIRTemp(sbOut->tyenv, tyAddr); + addStmtToIRSB( + sbOut, + assign(sp_minus_rz, + tyAddr == Ity_I32 + ? binop(Iop_Sub32, mkexpr(sp), mkU32(rz_szB)) + : binop(Iop_Sub64, mkexpr(sp), mkU64(rz_szB))) + ); + + IRTemp diff = newIRTemp(sbOut->tyenv, tyAddr); + addStmtToIRSB( + sbOut, + assign(diff, + tyAddr == Ity_I32 + ? binop(Iop_Sub32, addr, mkexpr(sp_minus_rz)) + : binop(Iop_Sub64, addr, mkexpr(sp_minus_rz))) + ); + + IRTemp guard = newIRTemp(sbOut->tyenv, Ity_I1); + addStmtToIRSB( + sbOut, + assign(guard, + tyAddr == Ity_I32 + ? binop(Iop_CmpLT32U, mkU32(THRESH), mkexpr(diff)) + : binop(Iop_CmpLT64U, mkU64(THRESH), mkexpr(diff))) + ); + di->guard = mkexpr(guard); + + addStmtToIRSB( sbOut, IRStmt_Dirty(di) ); +} + +static +IRSB* dh_instrument ( VgCallbackClosure* closure, + IRSB* sbIn, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy ) +{ + Int i, n = 0; + IRSB* sbOut; + IRTypeEnv* tyenv = sbIn->tyenv; + + const Int goff_sp = layout->offset_SP; + + // We increment the instruction count in two places: + // - just before any Ist_Exit statements; + // - just before the IRSB's end. + // In the former case, we zero 'n' and then continue instrumenting. + + sbOut = deepCopyIRSBExceptStmts(sbIn); + + // Copy verbatim any IR preamble preceding the first IMark + i = 0; + while (i < sbIn->stmts_used && sbIn->stmts[i]->tag != Ist_IMark) { + addStmtToIRSB( sbOut, sbIn->stmts[i] ); + i++; + } + + for (/*use current i*/; i < sbIn->stmts_used; i++) { + IRStmt* st = sbIn->stmts[i]; + + if (!st || st->tag == Ist_NoOp) continue; + + switch (st->tag) { + + case Ist_IMark: { + n++; + break; + } + + case Ist_Exit: { + if (n > 0) { + // Add an increment before the Exit statement, then reset 'n'. + add_counter_update(sbOut, n); + n = 0; + } + break; + } + + case Ist_WrTmp: { + IRExpr* data = st->Ist.WrTmp.data; + if (data->tag == Iex_Load) { + IRExpr* aexpr = data->Iex.Load.addr; + // Note also, endianness info is ignored. I guess + // that's not interesting. + addMemEvent( sbOut, False/*!isWrite*/, + sizeofIRType(data->Iex.Load.ty), + aexpr, goff_sp ); + } + break; + } + + case Ist_Store: { + IRExpr* data = st->Ist.Store.data; + IRExpr* aexpr = st->Ist.Store.addr; + addMemEvent( sbOut, True/*isWrite*/, + sizeofIRType(typeOfIRExpr(tyenv, data)), + aexpr, goff_sp ); + break; + } + + case Ist_Dirty: { + Int dataSize; + IRDirty* d = st->Ist.Dirty.details; + if (d->mFx != Ifx_None) { + /* This dirty helper accesses memory. Collect the details. */ + tl_assert(d->mAddr != NULL); + tl_assert(d->mSize != 0); + dataSize = d->mSize; + // Large (eg. 28B, 108B, 512B on x86) data-sized + // instructions will be done inaccurately, but they're + // very rare and this avoids errors from hitting more + // than two cache lines in the simulation. + if (d->mFx == Ifx_Read || d->mFx == Ifx_Modify) + addMemEvent( sbOut, False/*!isWrite*/, + dataSize, d->mAddr, goff_sp ); + if (d->mFx == Ifx_Write || d->mFx == Ifx_Modify) + addMemEvent( sbOut, True/*isWrite*/, + dataSize, d->mAddr, goff_sp ); + } else { + tl_assert(d->mAddr == NULL); + tl_assert(d->mSize == 0); + } + break; + } + + case Ist_CAS: { + /* We treat it as a read and a write of the location. I + think that is the same behaviour as it was before IRCAS + was introduced, since prior to that point, the Vex + front ends would translate a lock-prefixed instruction + into a (normal) read followed by a (normal) write. */ + Int dataSize; + IRCAS* cas = st->Ist.CAS.details; + tl_assert(cas->addr != NULL); + tl_assert(cas->dataLo != NULL); + dataSize = sizeofIRType(typeOfIRExpr(tyenv, cas->dataLo)); + if (cas->dataHi != NULL) + dataSize *= 2; /* since it's a doubleword-CAS */ + addMemEvent( sbOut, False/*!isWrite*/, + dataSize, cas->addr, goff_sp ); + addMemEvent( sbOut, True/*isWrite*/, + dataSize, cas->addr, goff_sp ); + break; + } + + case Ist_LLSC: { + IRType dataTy; + if (st->Ist.LLSC.storedata == NULL) { + /* LL */ + dataTy = typeOfIRTemp(tyenv, st->Ist.LLSC.result); + addMemEvent( sbOut, False/*!isWrite*/, + sizeofIRType(dataTy), + st->Ist.LLSC.addr, goff_sp ); + } else { + /* SC */ + dataTy = typeOfIRExpr(tyenv, st->Ist.LLSC.storedata); + addMemEvent( sbOut, True/*isWrite*/, + sizeofIRType(dataTy), + st->Ist.LLSC.addr, goff_sp ); + } + break; + } + + default: + break; + } + + addStmtToIRSB( sbOut, st ); + } + + if (n > 0) { + // Add an increment before the SB end. + add_counter_update(sbOut, n); + } + return sbOut; +} + +#undef binop +#undef mkexpr +#undef mkU32 +#undef mkU64 +#undef assign + + +//------------------------------------------------------------// +//--- Command line args ---// +//------------------------------------------------------------// + +// FORWARDS +static Bool identify_metric ( /*OUT*/ULong(**get_metricP)(APInfo*), + /*OUT*/Bool* increasingP, + Char* metric_name ); + +static Int clo_show_top_n = 10; +static HChar* clo_sort_by = "max-bytes-live"; + +static Bool dh_process_cmd_line_option(Char* arg) +{ + if VG_BINT_CLO(arg, "--show-top-n", clo_show_top_n, 1, 100000) {} + + else if VG_STR_CLO(arg, "--sort-by", clo_sort_by) { + ULong (*dummyFn)(APInfo*); + Bool dummyB; + Bool ok = identify_metric( &dummyFn, &dummyB, clo_sort_by); + if (!ok) + return False; + // otherwise it's OK, in which case leave it alone. + // show_top_n_apinfos will later convert the string by a + // second call to identify_metric. + } + + else + return VG_(replacement_malloc_process_cmd_line_option)(arg); + + return True; +} + + +static void dh_print_usage(void) +{ + VG_(printf)( +" --show-top-n=number show the top alloc points [10]\n" +" --sort-by=string\n" +" sort the allocation points by the metric\n" +" defined by , thusly:\n" +" max-bytes-live maximum live bytes [default]\n" +" tot-bytes-allocd total allocation (turnover)\n" +" max-blocks-live maximum live blocks\n" + ); +} + +static void dh_print_debug_usage(void) +{ + VG_(printf)( +" (none)\n" + ); +} + + +//------------------------------------------------------------// +//--- Finalisation ---// +//------------------------------------------------------------// + +static void show_N_div_100( /*OUT*/HChar* buf, ULong n ) +{ + ULong nK = n / 100; + ULong nR = n % 100; + VG_(sprintf)(buf, "%llu.%s%llu", nK, + nR < 10 ? "0" : "", + nR); +} + +static void show_APInfo ( APInfo* api ) +{ + HChar bufA[80]; + VG_(memset)(bufA, 0, sizeof(bufA)); + if (api->tot_blocks > 0) { + show_N_div_100( bufA, ((ULong)api->tot_bytes * 100ULL) + / (ULong)api->tot_blocks ); + } else { + bufA[0] = 'N'; bufA[1] = 'a'; bufA[2] = 'N'; + } + + VG_(umsg)("max-live: %'llu in %'llu blocks\n", + api->max_bytes_live, api->max_blocks_live); + VG_(umsg)("tot-alloc: %'llu in %'llu blocks (avg size %s)\n", + api->tot_bytes, api->tot_blocks, bufA); + + tl_assert(api->tot_blocks >= api->max_blocks_live); + tl_assert(api->tot_bytes >= api->max_bytes_live); + + if (api->deaths > 0) { + // Average Age at Death + ULong aad = api->deaths == 0 + ? 0 : (api->death_ages_sum / api->deaths); + // AAD as a fraction of the total program lifetime (so far) + // measured in ten-thousand-ths (aad_frac_10k == 10000 means the + // complete lifetime of the program. + ULong aad_frac_10k + = g_guest_instrs_executed == 0 + ? 0 : (10000ULL * aad) / g_guest_instrs_executed; + HChar buf[16]; + show_N_div_100(buf, aad_frac_10k); + VG_(umsg)("deaths: %'llu, at avg age %'llu " + "(%s%% of prog lifetime)\n", + api->deaths, aad, buf ); + } else { + VG_(umsg)("deaths: none (none of these blocks were freed)\n"); + } + + HChar bufR[80], bufW[80]; + VG_(memset)(bufR, 0, sizeof(bufR)); + VG_(memset)(bufW, 0, sizeof(bufW)); + if (api->tot_bytes > 0) { + show_N_div_100(bufR, (100ULL * api->n_reads) / api->tot_bytes); + show_N_div_100(bufW, (100ULL * api->n_writes) / api->tot_bytes); + } else { + VG_(strcat)(bufR, "Inf"); + VG_(strcat)(bufW, "Inf"); + } + + VG_(umsg)("acc-ratios: %s rd, %s wr " + " (%'llu b-read, %'llu b-written)\n", + bufR, bufW, + api->n_reads, api->n_writes); + + VG_(pp_ExeContext)(api->ap); + + if (api->histo && api->xsize_tag == Exactly) { + VG_(umsg)("\nAggregated access counts by offset:\n"); + VG_(umsg)("\n"); + UWord i; + if (api->xsize > 0) + VG_(umsg)("[ 0] "); + for (i = 0; i < api->xsize; i++) { + if (i > 0 && (i % 16) == 0 && i != api->xsize-1) { + VG_(umsg)("\n"); + VG_(umsg)("[%4lu] ", i); + } + VG_(umsg)("%u ", api->histo[i]); + } + VG_(umsg)("\n"); + } +} + + +/* Metric-access functions for APInfos. */ +static ULong get_metric__max_bytes_live ( APInfo* api ) { + return api->max_bytes_live; +} +static ULong get_metric__tot_bytes ( APInfo* api ) { + return api->tot_bytes; +} +static ULong get_metric__max_blocks_live ( APInfo* api ) { + return api->max_blocks_live; +} + +/* Given a string, return the metric-access function and also a Bool + indicating whether we want increasing or decreasing values of the + metric. This is used twice, once in command line processing, and + then again in show_top_n_apinfos. Returns False if the given + string could not be identified.*/ +static Bool identify_metric ( /*OUT*/ULong(**get_metricP)(APInfo*), + /*OUT*/Bool* increasingP, + Char* metric_name ) +{ + if (0 == VG_(strcmp)(metric_name, "max-bytes-live")) { + *get_metricP = get_metric__max_bytes_live; + *increasingP = False; + return True; + } + if (0 == VG_(strcmp)(metric_name, "tot-bytes-allocd")) { + *get_metricP = get_metric__tot_bytes; + *increasingP = False; + return True; + } + if (0 == VG_(strcmp)(metric_name, "max-blocks-live")) { + *get_metricP = get_metric__max_blocks_live; + *increasingP = False; + return True; + } + return False; +} + + +static void show_top_n_apinfos ( void ) +{ + Int i; + UWord keyW, valW; + ULong (*get_metric)(APInfo*); + Bool increasing; + + HChar* metric_name = clo_sort_by; + tl_assert(metric_name); // ensured by clo processing + + Bool ok = identify_metric( &get_metric, &increasing, metric_name ); + tl_assert(ok); // ensured by clo processing + + VG_(umsg)("\n"); + VG_(umsg)("======== ORDERED BY %s \"%s\": " + "top %d allocators ========\n", + increasing ? "increasing" : "decreasing", + metric_name, clo_show_top_n ); + + // Clear all .shown bits + VG_(initIterFM)( apinfo ); + while (VG_(nextIterFM)( apinfo, &keyW, &valW )) { + APInfo* api = (APInfo*)valW; + tl_assert(api && api->ap == (ExeContext*)keyW); + api->shown = False; + } + VG_(doneIterFM)( apinfo ); + + // Now print the top N entries. Each one requires a + // complete scan of the set. Duh. + for (i = 0; i < clo_show_top_n; i++) { + ULong best_metric = increasing ? ~0ULL : 0ULL; + APInfo* best_api = NULL; + + VG_(initIterFM)( apinfo ); + while (VG_(nextIterFM)( apinfo, &keyW, &valW )) { + APInfo* api = (APInfo*)valW; + if (api->shown) + continue; + ULong metric = get_metric(api); + if (increasing ? (metric < best_metric) : (metric > best_metric)) { + best_metric = metric; + best_api = api; + } + } + VG_(doneIterFM)( apinfo ); + + if (!best_api) + break; // all APIs have been shown. Stop. + + VG_(umsg)("\n"); + VG_(umsg)("-------------------- %d of %d --------------------\n", + i+1, clo_show_top_n ); + show_APInfo(best_api); + best_api->shown = True; + } + + VG_(umsg)("\n"); +} + + +static void dh_fini(Int exit_status) +{ + // Before printing statistics, we must harvest access counts for + // all the blocks that are still alive. Not doing so gives + // access ratios which are too low (zero, in the worst case) + // for such blocks, since the accesses that do get made will + // (if we skip this step) not get folded into the AP summaries. + UWord keyW, valW; + VG_(initIterFM)( interval_tree ); + while (VG_(nextIterFM)( interval_tree, &keyW, &valW )) { + Block* bk = (Block*)keyW; + tl_assert(valW == 0); + tl_assert(bk); + retire_Block(bk, False/*!because_freed*/); + } + VG_(doneIterFM)( interval_tree ); + + // show results + VG_(umsg)("======== SUMMARY STATISTICS ========\n"); + VG_(umsg)("\n"); + VG_(umsg)("guest_insns: %'llu\n", g_guest_instrs_executed); + VG_(umsg)("\n"); + VG_(umsg)("max_live: %'llu in %'llu blocks\n", + g_max_bytes_live, g_max_blocks_live); + VG_(umsg)("\n"); + VG_(umsg)("tot_alloc: %'llu in %'llu blocks\n", + g_tot_bytes, g_tot_blocks); + VG_(umsg)("\n"); + if (g_tot_bytes > 0) { + VG_(umsg)("insns per allocated byte: %'llu\n", + g_guest_instrs_executed / g_tot_bytes); + VG_(umsg)("\n"); + } + + show_top_n_apinfos(); + + VG_(umsg)("\n"); + VG_(umsg)("\n"); + VG_(umsg)("==============================================================\n"); + VG_(umsg)("\n"); + VG_(umsg)("Some hints: (see --help for command line option details):\n"); + VG_(umsg)("\n"); + VG_(umsg)("* summary stats for whole program are at the top of this output\n"); + VG_(umsg)("\n"); + VG_(umsg)("* --show-top-n= controls how many alloc points are shown.\n"); + VG_(umsg)(" You probably want to set it much higher than\n"); + VG_(umsg)(" the default value (10)\n"); + VG_(umsg)("\n"); + VG_(umsg)("* --sort-by= specifies the sort key for output.\n"); + VG_(umsg)(" See --help for details.\n"); + VG_(umsg)("\n"); + VG_(umsg)("* Each allocation stack, by default 12 frames, counts as\n"); + VG_(umsg)(" a separate alloc point. This causes the data to be spread out\n"); + VG_(umsg)(" over far too many alloc points. I strongly suggest using\n"); + VG_(umsg)(" --num-callers=4 or some such, to reduce the spreading.\n"); + VG_(umsg)("\n"); + + if (VG_(clo_stats)) { + VG_(dmsg)(" dhat: find_Block_containing:\n"); + VG_(dmsg)(" found: %'lu (%'lu cached + %'lu uncached)\n", + stats__n_fBc_cached + stats__n_fBc_uncached, + stats__n_fBc_cached, + stats__n_fBc_uncached); + VG_(dmsg)(" notfound: %'lu\n", stats__n_fBc_notfound); + VG_(dmsg)("\n"); + } +} + + +//------------------------------------------------------------// +//--- Initialisation ---// +//------------------------------------------------------------// + +static void dh_post_clo_init(void) +{ +} + +static void dh_pre_clo_init(void) +{ + VG_(details_name) ("DHAT"); + VG_(details_version) (NULL); + VG_(details_description) ("a dynamic heap analysis tool"); + VG_(details_copyright_author)( + "Copyright (C) 2010-2010, and GNU GPL'd, by Mozilla Inc"); + VG_(details_bug_reports_to) (VG_BUGS_TO); + + // Basic functions. + VG_(basic_tool_funcs) (dh_post_clo_init, + dh_instrument, + dh_fini); +//zz + // Needs. + VG_(needs_libc_freeres)(); + VG_(needs_command_line_options)(dh_process_cmd_line_option, + dh_print_usage, + dh_print_debug_usage); +//zz VG_(needs_client_requests) (dh_handle_client_request); +//zz VG_(needs_sanity_checks) (dh_cheap_sanity_check, +//zz dh_expensive_sanity_check); + VG_(needs_malloc_replacement) (dh_malloc, + dh___builtin_new, + dh___builtin_vec_new, + dh_memalign, + dh_calloc, + dh_free, + dh___builtin_delete, + dh___builtin_vec_delete, + dh_realloc, + dh_malloc_usable_size, + 0 ); + + VG_(track_pre_mem_read) ( dh_handle_noninsn_read ); + //VG_(track_pre_mem_read_asciiz) ( check_mem_is_defined_asciiz ); + VG_(track_post_mem_write) ( dh_handle_noninsn_write ); + + tl_assert(!interval_tree); + tl_assert(!fbc_cache0); + tl_assert(!fbc_cache1); + + interval_tree = VG_(newFM)( VG_(malloc), + "dh.main.interval_tree.1", + VG_(free), + interval_tree_Cmp ); + + apinfo = VG_(newFM)( VG_(malloc), + "dh.main.apinfo.1", + VG_(free), + NULL/*unboxedcmp*/ ); +} + +VG_DETERMINE_INTERFACE_VERSION(dh_pre_clo_init) + +//--------------------------------------------------------------------// +//--- end dh_main.c ---// +//--------------------------------------------------------------------// diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/docs/dh-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/docs/dh-manual.xml new file mode 100644 index 000000000..49df7a6b7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/docs/dh-manual.xml @@ -0,0 +1,400 @@ + + %vg-entities; ]> + + + + DHAT: a dynamic heap analysis tool + +To use this tool, you must specify + on the Valgrind +command line. + + + + +Overview + +DHAT is a tool for examining how programs use their heap +allocations. + +It tracks the allocated blocks, and inspects every memory access +to find which block, if any, it is to. The following data is +collected and presented per allocation point (allocation +stack): + + + Total allocation (number of bytes and + blocks) + + maximum live volume (number of bytes and + blocks) + + average block lifetime (number of instructions + between allocation and freeing) + + average number of reads and writes to each byte in + the block ("access ratios") + + for allocation points which always allocate blocks + only of one size, and that size is 4096 bytes or less: counts + showing how often each byte offset inside the block is + accessed. + + +Using these statistics it is possible to identify allocation +points with the following characteristics: + + + + potential process-lifetime leaks: blocks allocated + by the point just accumulate, and are freed only at the end of the + run. + + excessive turnover: points which chew through a lot + of heap, even if it is not held onto for very long + + excessively transient: points which allocate very + short lived blocks + + useless or underused allocations: blocks which are + allocated but not completely filled in, or are filled in but not + subsequently read. + + blocks with inefficient layout -- areas never + accessed, or with hot fields scattered throughout the + block. + + +As with the Massif heap profiler, DHAT measures program progress +by counting instructions, and so presents all age/time related figures +as instruction counts. This sounds a little odd at first, but it +makes runs repeatable in a way which is not possible if CPU time is +used. + + + + + + + +Understanding DHAT's output + + +DHAT provides a lot of useful information on dynamic heap usage. +Most of the art of using it is in interpretation of the resulting +numbers. That is best illustrated via a set of examples. + + + +Interpreting the max-live, tot-alloc and deaths fields + +A simple example + + + +Over the entire run of the program, this stack (allocation +point) allocated 29,520 blocks in total, containing 1,904,700 bytes in +total. By looking at the max-live data, we see that not many blocks +were simultaneously live, though: at the peak, there were 63,490 +allocated bytes in 984 blocks. This tells us that the program is +steadily freeing such blocks as it runs, rather than hanging on to all +of them until the end and freeing them all. + +The deaths entry tells us that 29,520 blocks allocated by this stack +died (were freed) during the run of the program. Since 29,520 is +also the number of blocks allocated in total, that tells us that +all allocated blocks were freed by the end of the program. + +It also tells us that the average age at death was 22,227,424 +instructions. From the summary statistics we see that the program ran +for 1,045,339,534 instructions, and so the average age at death is +about 2% of the program's total run time. + +Example of a potential process-lifetime leak + +This next example (from a different program than the above) +shows a potential process lifetime leak. A process lifetime leak +occurs when a program keeps allocating data, but only frees the +data just before it exits. Hence the program's heap grows constantly +in size, yet Memcheck reports no leak, because the program has +freed up everything at exit. This is particularly a hazard for +long running programs. + + + +There are two tell-tale signs that this might be a +process-lifetime leak. Firstly, the max-live and tot-alloc numbers +are identical. The only way that can happen is if these blocks are +all allocated and then all deallocated. + +Secondly, the average age at death (300 million insns) is 71% of +the total program lifetime (419 million insns), hence this is not a +transient allocation-free spike -- rather, it is spread out over a +large part of the entire run. One interpretation is, roughly, that +all 254 blocks were allocated in the first half of the run, held onto +for the second half, and then freed just before exit. + + + + + +Interpreting the acc-ratios fields + + +A fairly harmless allocation point record + + + +The acc-ratios field tells us that each byte in the blocks +allocated here is read an average of 2.13 times before the block is +deallocated. Given that the blocks have an average age at death of +34,611,026, that's one read per block per approximately every 15 +million instructions. So from that standpoint the blocks aren't +"working" very hard. + +More interesting is the write ratio: each byte is written an +average of 0.91 times. This tells us that some parts of the allocated +blocks are never written, at least 9% on average. To completely +initialise the block would require writing each byte at least once, +and that would give a write ratio of 1.0. The fact that some block +areas are evidently unused might point to data alignment holes or +other layout inefficiencies. + +Well, at least all the blocks are freed (24,240 allocations, +24,240 deaths). + +If all the blocks had been the same size, DHAT would also show +the access counts by block offset, so we could see where exactly these +unused areas are. However, that isn't the case: the blocks have +varying sizes, so DHAT can't perform such an analysis. We can see +that they must have varying sizes since the average block size, 61.13, +isn't a whole number. + + +A more suspicious looking example + + + +Here, both the read and write access ratios are zero. Hence +this point is allocating blocks which are never used, neither read nor +written. Indeed, they are also not freed ("deaths: none") and are +simply leaked. So, here is 180k of completely useless allocation that +could be removed. + +Re-running with Memcheck does indeed report the same leak. What +DHAT can tell us, that Memcheck can't, is that not only are the blocks +leaked, they are also never used. + +Another suspicious example + +Here's one where blocks are allocated, written to, +but never read from. We see this immediately from the zero read +access ratio. They do get freed, though: + + + +In the previous two examples, it is easy to see blocks that are +never written to, or never read from, or some combination of both. +Unfortunately, in C++ code, the situation is less clear. That's +because an object's constructor will write to the underlying block, +and its destructor will read from it. So the block's read and write +ratios will be non-zero even if the object, once constructed, is never +used, but only eventually destructed. + +Really, what we want is to measure only memory accesses in +between the end of an object's construction and the start of its +destruction. Unfortunately I do not know of a reliable way to +determine when those transitions are made. + + + + + +Interpreting "Aggregated access counts by offset" data + +For allocation points that always allocate blocks of the same +size, and which are 4096 bytes or smaller, DHAT counts accesses +per offset, for example: + + + +This is fairly typical, for C++ code running on a 64-bit +platform. Here, we have aggregated access statistics for 5668 blocks, +all of size 56 bytes. Each byte has been accessed at least 5668 +times, except for offsets 12--15, 36--39 and 52--55. These are likely +to be alignment holes. + +Careful interpretation of the numbers reveals useful information. +Groups of N consecutive identical numbers that begin at an N-aligned +offset, for N being 2, 4 or 8, are likely to indicate an N-byte object +in the structure at that point. For example, the first 32 bytes of +this object are likely to have the layout + + + +As a counterexample, it's also clear that, whatever is at offset 32, +it is not a 32-bit value. That's because the last number of the group +(37422) is not the same as the first three (18883 18883 18883). + +This example leads one to enquire (by reading the source code) +whether the zeroes at 12--15 and 52--55 are alignment holes, and +whether 48--51 is indeed a 32-bit type. If so, it might be possible +to place what's at 48--51 at 12--15 instead, which would reduce +the object size from 56 to 48 bytes. + +Bear in mind that the above inferences are all only "maybes". That's +because they are based on dynamic data, not static analysis of the +object layout. For example, the zeroes might not be alignment +holes, but rather just parts of the structure which were not used +at all for this particular run. Experience shows that's unlikely +to be the case, but it could happen. + + + + + + + + + + + + +DHAT Command-line Options + +DHAT-specific command-line options are: + + + + + + + + + + At the end of the run, DHAT sorts the accumulated + allocation points according to some metric, and shows the + highest scoring entries. --show-top-n + controls how many entries are shown. The default of 10 is + quite small. For realistic applications you will probably need + to set it much higher, at least several hundred. + + + + + + + + + At the end of the run, DHAT sorts the accumulated + allocation points according to some metric, and shows the + highest scoring entries. --sort-by + selects the metric used for sorting: + max-bytes-live maximum live bytes [default] + tot-bytes-allocd total allocation (turnover) + max-blocks-live maximum live blocks + This controls the order in which allocation points are + displayed. You can choose to look at allocation points with + the highest maximum liveness, or the highest total turnover, or + by the highest number of live blocks. These give usefully + different pictures of program behaviour. For example, sorting + by maximum live blocks tends to show up allocation points + creating large numbers of small objects. + + + + + +One important point to note is that each allocation stack counts +as a seperate allocation point. Because stacks by default have 12 +frames, this tends to spread data out over multiple allocation points. +You may want to use the flag --num-callers=4 or some such small +number, to reduce the spreading. + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.am new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.am @@ -0,0 +1 @@ + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.in new file mode 100644 index 000000000..efa5ed340 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-dhat/tests/Makefile.in @@ -0,0 +1,367 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = exp-dhat/tests +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-dhat/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign exp-dhat/tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck.supp index fd077d60c..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck.supp @@ -1,87 +0,0 @@ -{ - lib-X11-used-old-pointer-after-realloc-1 - exp-ptrcheck:Heap - fun:strlen - obj:/usr/lib*/libX11.so* - obj:/usr/lib*/libX11.so* -} -{ - lib-X11-used-old-pointer-after-realloc-2 - exp-ptrcheck:Heap - obj:/usr/lib*/libX11.so* - obj:/usr/lib*/libX11.so* -} - -{ - ld-2.X-invalid-Add32/64-who-knows - exp-ptrcheck:Arith - obj:/*lib*/ld-2.*so* - obj:/*lib*/ld-2.*so* -} - -{ - ld-2.X possibly applying relocations - exp-ptrcheck:SorG - obj:/*lib*/ld-2.*so* - obj:/*lib*/ld-2.*so* -} - -# I'm pretty sure this is a false positive caused by the sg_ stuff -{ - glibc realpath false positive - exp-ptrcheck:SorG - fun:realpath - fun:* -} - -{ - If I had to guess, inlined or nameless strlen etc in ld.so - exp-ptrcheck:Heap - obj:/*lib*/ld-2.*so* - obj:/*lib*/ld-2.*so* -} - -{ - I think this is glibc's ultra optimised getenv doing 2 byte reads - exp-ptrcheck:SorG - fun:getenv -} - -{ - Occurs on Fedora 7--9? - exp-ptrcheck:Heap - fun:_dl_fini - fun:exit - fun:(below main) -} - - -# Invalid read of size 16 -# at 0x5643A5C: ??? (strcpy.S:94) -# by 0x50C6A99: XtResolvePathname (in /usr/lib/libXt.so.6.0.0) -# by 0x50C3856: XtScreenDatabase (in /usr/lib/libXt.so.6.0.0) -# by 0x50C4386: _XtDisplayInitialize (in /usr/lib/libXt.so.6.0.0) -{ - Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - exp-ptrcheck:Heap - obj:/*lib*/libc-2.*so* - obj:/*lib*/libX*so* -} -{ - Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 2 - exp-ptrcheck:Heap - obj:/*lib*/libc-2.*so* - obj:/*lib*/libICE*so* -} -{ - Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 3 - exp-ptrcheck:Heap - obj:/*lib*/libc-2.*so* - obj:/*lib*/libglib*so* -} -{ - Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 4 - exp-ptrcheck:Heap - obj:/*lib*/libc-2.*so* - obj:/*lib*/libfontconfig*so* -} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/Makefile.in index f64036e67..0293b2dbf 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/Makefile.in @@ -239,12 +239,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -398,7 +393,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -427,6 +422,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -455,6 +455,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -507,6 +508,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -570,6 +574,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -612,6 +619,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/pc-manual.xml #---------------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/docs/pc-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/docs/pc-manual.xml index 01c549e06..863219972 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/docs/pc-manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/docs/pc-manual.xml @@ -4,141 +4,49 @@ [ %vg-entities; ]> - - Ptrcheck: an experimental heap, stack and global array overrun detector + + SGCheck: an experimental stack and global array overrun detector To use this tool, you must specify - on the Valgrind + on the Valgrind command line. - + Overview -Ptrcheck is a tool for finding overruns of heap, stack -and global arrays. Its functionality overlaps somewhat with -Memcheck's, but it is able to catch invalid accesses in a number of -cases that Memcheck would miss. A detailed comparison against -Memcheck is presented below. - -Ptrcheck is composed of two almost completely independent tools -that have been glued together. One part, -in h_main.[ch], checks accesses -through heap-derived pointers. The other part, in -sg_main.[ch], checks accesses to -stack and global arrays. The remaining -files pc_{common,main}.[ch], provide -common error-management and coordination functions, so as to make it -appear as a single tool. - -The heap-check part is an extensively-hacked (largely rewritten) -version of the experimental "Annelid" tool developed and described by -Nicholas Nethercote and Jeremy Fitzhardinge. The stack- and global- -check part uses a heuristic approach derived from an observation about -the likely forms of stack and global array accesses, and, as far as is -known, is entirely novel. - - - - - - - -Ptrcheck Command-line Options - -Ptrcheck-specific command-line options are: - - - - - - - - - - By default, Ptrcheck checks for overruns of stack, global - and heap arrays. - With --enable-sg-checks=no, the stack and - global array checks are omitted, and only heap checking is - performed. This can be useful because the stack and global - checks are quite expensive, so omitting them speeds Ptrcheck up - a lot. - - - - - - - - - - This option has the same meaning as it does for - Memcheck. - Controls how Ptrcheck handles word-sized, word-aligned - loads which partially overlap the end of heap blocks -- that is, - some of the bytes in the word are validly addressable, but - others are not. When yes, such loads do not - produce an address error. When no (the - default), loads from partially invalid addresses are treated the - same as loads from completely invalid addresses: an illegal heap - access error is issued. - - Note that code that behaves in this way is in violation of - the the ISO C/C++ standards, and should be considered broken. If - at all possible, such code should be fixed. This option should be - used only as a last resort. - - - - - +SGCheck is a tool for finding overruns of stack and global +arrays. It works by using a heuristic approach derived from an +observation about the likely forms of stack and global array accesses. + - -How Ptrcheck Works: Heap Checks + +SGCheck Command-line Options -Ptrcheck can check for invalid uses of heap pointers, including -out of range accesses and accesses to freed memory. The mechanism is -however completely different from Memcheck's, and the checking is more -powerful. +There are no SGCheck-specific command-line options at present. + - -How Ptrcheck Works: Stack and Global Checks + +How SGCheck Works When a source file is compiled with , the compiler attaches DWARF3 @@ -150,7 +58,7 @@ simple, if the compiler could also tell us which array (if any) each memory referencing instruction was supposed to access. Unfortunately the DWARF3 debugging format does not provide a way to represent such information, so we have to resort to a heuristic technique to -approximate the same information. The key observation is that +approximate it. The key observation is that if a memory referencing instruction accesses inside a stack or global array once, then it is highly likely to always access that @@ -173,7 +81,7 @@ we will (correctly) assume that that instruction is intended always to access a[]. Then, on the 11th iteration, it accesses somewhere else, possibly a different local, possibly an un-accounted for area of the stack (eg, spill slot), so -Ptrcheck reports an error. +SGCheck reports an error. There is an important caveat. @@ -184,86 +92,31 @@ copying loop only ever access one particular stack or global variable, we will be flooded with errors resulting from calls to memcpy. -To avoid this problem, Ptrcheck instantiates fresh likely-target +To avoid this problem, SGCheck instantiates fresh likely-target records for each entry to a function, and discards them on exit. This -allows detection of cases where (e.g.) memcpy overflows -its source or destination buffers for any specific call, but does not carry -any restriction from one call to the next. Indeed, multiple threads may be -multiple simultaneous calls to (e.g.) memcpy without -mutual interference. +allows detection of cases where (e.g.) memcpy +overflows its source or destination buffers for any specific call, but +does not carry any restriction from one call to the next. Indeed, +multiple threads may make multiple simultaneous calls to +(e.g.) memcpy without mutual interference. - Comparison with Memcheck -Memcheck does not do any access checks for stack or global arrays, so -the presence of those in Ptrcheck is a straight win. (But see -"Limitations" below). - -Memcheck and Ptrcheck use different approaches for checking heap -accesses. Memcheck maintains bitmaps telling it which areas of memory -are accessible and which are not. If a memory access falls in an -unaccessible area, it reports an error. By marking the 16 bytes -before and after an allocated block unaccessible, Memcheck is able to -detect small over- and underruns of the block. Similarly, by marking -freed memory as unaccessible, Memcheck can detect all accesses to -freed memory. - -Memcheck's approach is simple. But it's also weak. It can't -catch block overruns beyond 16 bytes. And, more generally, because it -focusses only on the question "is the target address accessible", it -fails to detect invalid accesses which just happen to fall within some -other valid area. This is not improbable, especially in crowded areas -of the process' address space. - -Ptrcheck's approach is to keep track of pointers derived from -heap blocks. It tracks pointers which are derived directly from calls -to malloc et al, but also ones derived indirectly, by -adding or subtracting offsets from the directly-derived pointers. When a -pointer is finally used to access memory, Ptrcheck compares the access -address with that of the block it was originally derived from, and -reports an error if the access address is not within the block -bounds. - -Consequently Ptrcheck can detect any out of bounds access -through a heap-derived pointer, no matter how far from the original -block it is. - -A second advantage is that Ptrcheck is better at detecting -accesses to blocks freed very far in the past. Memcheck can detect -these too, but only for blocks freed relatively recently. To detect -accesses to a freed block, Memcheck must make it inaccessible, hence -requiring a space overhead proportional to the size of the block. If -the blocks are large, Memcheck will have to make them available for -re-allocation relatively quickly, thereby losing the ability to detect -invalid accesses to them. - -By contrast, Ptrcheck has a constant per-block space requirement -of four machine words, for detection of accesses to freed blocks. A -freed block can be reallocated immediately, yet Ptrcheck can still -detect all invalid accesses through any pointers derived from the old -allocation, providing only that the four-word descriptor for the old -allocation is stored. For example, on a 64-bit machine, to detect -accesses in any of the most recently freed 10 million blocks, Ptrcheck -will require only 320MB of extra storage. Achieving the same level of -detection with Memcheck is close to impossible and would likely -involve several gigabytes of extra storage. - -Having said all that, remember that Memcheck performs uninitialised -value checking, invalid and mismatched free checking, overlap checking, and -leak checking, none of which Ptrcheck do. Memcheck has also benefitted from -years of refinement, tuning, and experience with production-level usage, and -so is much faster than Ptrcheck as it currently stands. - +SGCheck and Memcheck are complementary: their capabilities do +not overlap. Memcheck performs bounds checks and use-after-free +checks for heap arrays. It also finds uses of uninitialised values +created by heap or stack allocations. But it does not perform bounds +checking for stack or global arrays. -Consequently we recommend you first make your programs run Memcheck -clean. Once that's done, try Ptrcheck to see if you can shake out any -further heap, global or stack errors. +SGCheck, on the other hand, does do bounds checking for stack or +global arrays, but it doesn't do anything else. @@ -271,7 +124,7 @@ further heap, global or stack errors. - Limitations @@ -283,46 +136,23 @@ of. - Heap checks: Ptrcheck can occasionally lose track of, or - become confused about, which heap block a given pointer has been - derived from. This can cause it to falsely report errors, or to - miss some errors. This is not believed to be a serious - problem. - - - - Heap checks: Ptrcheck only tracks pointers that are stored - properly aligned in memory. If a pointer is stored at a misaligned - address, and then later read again, Ptrcheck will lose track of - what it points at. Similar problem if a pointer is split into - pieces and later reconsitituted. - - - - Heap checks: Ptrcheck needs to "understand" which system - calls return pointers and which don't. Many, but not all system - calls are handled. If an unhandled one is encountered, Ptrcheck will - abort. Fortunately, adding support for a new syscall is very - easy. - - - - Stack checks: It follows from the description above () that the first access by a - memory referencing instruction to a stack or global array creates an - association between that instruction and the array, which is checked on - subsequent accesses by that instruction, until the containing function - exits. Hence, the first access by an instruction to an array (in any - given function instantiation) is not checked for overrun, since Ptrcheck + False negatives (missed errors): it follows from the + description above () + that the first access by a memory referencing instruction to a + stack or global array creates an association between that + instruction and the array, which is checked on subsequent accesses + by that instruction, until the containing function exits. Hence, + the first access by an instruction to an array (in any given + function instantiation) is not checked for overrun, since SGCheck uses that as the "example" of how subsequent accesses should behave. - Stack checks: Similarly, and more serious, it is clearly - possible to write legitimate pieces of code which break the basic - assumption upon which the stack/global checking rests. For - example: + False positives (false errors): similarly, and more serious, + it is clearly possible to write legitimate pieces of code which + break the basic assumption upon which the checking algorithm + depends. For example: - Performance: the stack/global checks require reading all of + Performance: SGCheck has to read all of the DWARF3 type and variable information on the executable and its shared objects. This is computationally expensive and makes startup quite slow. You can expect debuginfo reading time to be in the region of a minute for an OpenOffice sized application, on a 2.4 GHz Core 2 machine. Reading this information also requires a - lot of memory. To make it viable, Ptrcheck goes to considerable + lot of memory. To make it viable, SGCheck goes to considerable trouble to compress the in-memory representation of the DWARF3 data, which is why the process of reading it appears slow. - Performance: Ptrcheck runs slower than Memcheck. This is + Performance: SGCheck runs slower than Memcheck. This is partly due to a lack of tuning, but partly due to algorithmic - difficulties. The heap-check side is potentially quite fast. The + difficulties. The stack and global checks can sometimes require a number of range - checks per memory access, and these are difficult to short-circuit - (despite considerable efforts having been made). + checks per memory access, and these are difficult to short-circuit, + despite considerable efforts having been made. A + redesign and reimplementation could potentially make it much faster. - Coverage: the heap checking is relatively robust, requiring - only that Ptrcheck can see calls to malloc et al. - In that sense it has debug-info requirements comparable with Memcheck, - and is able to heap-check programs even with no debugging information - attached. - - Stack/global checking is much more fragile. If a shared - object does not have debug information attached, then Ptrcheck will + Coverage: Stack and global checking is fragile. If a shared + object does not have debug information attached, then SGCheck will not be able to determine the bounds of any stack or global arrays defined within that shared object, and so will not be able to check accesses to them. This is true even when those arrays are accessed from some other shared object which was compiled with debug info. - At the moment Ptrcheck accepts objects lacking debuginfo - without comment. This is dangerous as it causes Ptrcheck to + At the moment SGCheck accepts objects lacking debuginfo + without comment. This is dangerous as it causes SGCheck to silently skip stack and global checking for such objects. It would be better to print a warning in such circumstances. - Coverage: Ptrcheck checks that the areas read or written by - system calls do not overrun heap blocks. But it doesn't currently - check them for overruns stack and global arrays. This would be - easy to add. + Coverage: SGCheck does not check whether the the areas read + or written by system calls do overrun stack or global arrays. This + would be easy to add. - Platforms: the stack/global checks won't work properly on any - PowerPC platforms, only on x86 and amd64 targets. That's because - the stack and global checking requires tracking function calls and - exits reliably, and there's no obvious way to do it with the PPC - ABIs. (In comparison, with the x86 and amd64 ABIs this is relatively - straightforward.) + Platforms: the stack/global checks won't work properly on + PowerPC, ARM or S390X platforms, only on X86 and AMD64 targets. + That's because the stack and global checking requires tracking + function calls and exits reliably, and there's no obvious way to do + it on ABIs that use a link register for function returns. + Robustness: related to the previous point. Function - call/exit tracking for x86/amd64 is believed to work properly even - in the presence of longjmps within the same stack (although this - has not been tested). However, code which switches stacks is + call/exit tracking for X86 and AMD64 is believed to work properly + even in the presence of longjmps within the same stack (although + this has not been tested). However, code which switches stacks is likely to cause breakage/chaos. @@ -422,7 +246,7 @@ of. - Still To Do: User-visible Functionality @@ -438,6 +262,13 @@ of. found, or read. + + Add some heuristic filtering that removes obvious false + positives. This would be easy to do. For example, an access + transition from a heap to a stack object almost certainly isn't a + bug and so should not be reported to the user. + + @@ -445,7 +276,7 @@ of. - Still To Do: Implementation Tidying @@ -456,9 +287,12 @@ in real use. - h_main.c: make N_FREED_SEGS command-line configurable. + sg_main.c: Redesign and reimplement the basic checking + algorithm. It could be done much faster than it is -- the current + implementation isn't very good. + - + sg_main.c: Improve the performance of the stack / global checks by doing some up-front filtering to ignore references in @@ -467,34 +301,6 @@ in real use. space layout. - - h_main.c: get rid of the last_seg_added hack; add suitable - plumbing to the core/tool interface to do this cleanly. - - - - h_main.c: move vast amounts of arch-dependent ugliness - (get_IntRegInfo et al) to its own source file, a la - mc_machine.c. - - - - h_main.c: make the lossage-check stuff work again, as a way - of doing quality assurance on the implementation. - - - - h_main.c: schemeEw_Atom: don't generate a call to - nonptr_or_unknown, this is really stupid, since it could be done at - translation time instead. - - - - CRITICAL: h_main.c: h_instrument (main instrumentation fn): - generate shadows for word-sized temps defined in the block's - preamble. (Why does this work at all, as it stands?) - - sg_main.c: fix compute_II_hash to make it a bit more sensible for ppc32/64 targets (except that sg_ doesn't work on ppc32/64 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.c index 03b2bfa76..b168959d3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.c @@ -11,12 +11,12 @@ Initial version (Annelid): - Copyright (C) 2003-2010 Nicholas Nethercote + Copyright (C) 2003-2009 Nicholas Nethercote njn@valgrind.org Valgrind-3.X port: - Copyright (C) 2008-2010 OpenWorks Ltd + Copyright (C) 2008-2009 OpenWorks Ltd info@open-works.co.uk This program is free software; you can redistribute it and/or @@ -37,180 +37,6 @@ The GNU General Public License is contained in the file COPYING. */ -// FIXME: 64-bit cleanness, check the following -// struct _ISNode.ownerCount is 32-bit -// struct _ISNode.topLevel is 32-bit -// or is that not really right now? add assertion checks about -// the max size of a node - -// FIXME: should we shadow %RIP? Maybe not. - -// FIXME: shadows of temporaries created in preamble, a la memcheck? - -// FIXME: result of add_new_segment is always ignored - -// FIXME: the mechanism involving last_seg_added is really ugly. -// Do something cleaner. - -// FIXME: post_reg_write_clientcall: check function pointer comparisons -// are safe on toc-afflicted platforms - -// FIXME: tidy up findShadowTmp - -// FIXME: post_reg_write_demux(Vg_CoreSysCall) is redundant w.r.t. -// the default 'NONPTR' behaviour of post_syscall. post_reg_write_demux -// is called first, then post_syscall. - -// FIXME: check nothing is mapped in the lowest 1M of memory at -// startup, or quit (to do with nonptr_or_unknown, also sync 1M -// magic value with PIE default load address in m_ume.c. - -// FIXME: consider whether we could paint memory acquired from -// sys_read etc as NONPTR rather than UNKNOWN. - -// XXX: recycle freed segments - -//-------------------------------------------------------------- -// Metadata: -// HeapBlock.id :: Seg (stored as heap shadowchunk; always non-zero) -// MemLoc.aseg :: Seg (implicitly stored) -// MemLoc.vseg :: Seg (explicitly stored as the shadow memory) -// RegLoc.vseg :: Seg (explicitly stored as shadow registers) -// -// A Seg is made when new memory is created, eg. with malloc() or mmap(). -// There are two other Segs: -// - NONPTR: for something that's definitely not a pointer -// - UNKNOWN: for something that could be a pointer -// - BOTTOM: used with pointer differences (see below) -// -// MemLoc.vseg is done at word granularity. If a pointer is written -// to memory misaligned, the information about it will be lost -- it's -// treated as two sub-word writes to two adjacent words. This avoids -// certain nasty cases that could arise if we tried to track unaligned -// pointers. Fortunately, misalignment is rare so we don't lose much -// information this way. -// -// MemLoc.aseg is done at byte granularity, and *implicitly* -- ie. not -// directly accessible like MemLoc.vseg, but only by searching through all -// the segments. Fortunately, it's mostly checked at LOADs/STOREs; at that -// point we have a pointer p to the MemLoc m as the other arg of the -// LOAD/STORE, so we can check to see if the p.vseg's range includes m. If -// not, it's an error and we have to search through all segments to find out -// what m.aseg really is. That's still pretty fast though, thanks to the -// interval skip-list used. With syscalls we must also do the skip-list -// search, but only on the first and last bytes touched. -//-------------------------------------------------------------- - -//-------------------------------------------------------------- -// Assumptions, etc: -// - see comment at top of SK_(instrument)() for how sub-word ops are -// handled. -// -// - ioctl(), socketcall() (and ipc() will be) assumed to return non-pointers -// -// - FPU_W is assumed to never write pointers. -// -// - Assuming none of the post_mem_writes create segments worth tracking. -// -// - Treating mmap'd segments (all! including code) like heap segments. But -// their ranges can change, new ones can be created by unmapping parts of -// old segments, etc. But this nasty behaviour seems to never happen -- -// there are assertions checking it. -//-------------------------------------------------------------- - -//-------------------------------------------------------------- -// What I am checking: -// - Type errors: -// * ADD, OR, LEA2: error if two pointer inputs. -// * ADC, SBB: error if one or two pointer inputs. -// * AND, OR: error if two unequal pointer inputs. -// * NEG: error if pointer input. -// * {,i}mul_32_64 if either input is a pointer. -// * shldl/shrdl, bsf/bsr if any inputs are pointers. -// -// - LOAD, STORE: -// * ptr.vseg must match ptee.aseg. -// * ptee.aseg must not be a freed segment. -// -// - syscalls: for those accessing memory, look at first and last bytes: -// * check first.aseg == last.aseg -// * check first.aseg and last.aseg are not freed segments. -// -// What I am not checking, that I expected to when I started: -// - AND, XOR: allowing two pointers to be used if both from the same segment, -// because "xor %r,%r" is commonly used to zero %r, and "test %r,%r" -// (which is translated with an AND) is common too. -// -// - div_64_32/idiv_64_32 can take pointer inputs for the dividend; -// division doesn't make sense, but modulo does, and they're done with the -// same instruction. (Could try to be super-clever and watch the outputs -// to see if the quotient is used, but not worth it.) -// -// - mul_64_32/imul_64_32 can take pointers inputs for one arg or the -// other, but not both. This is because some programs (eg. Mozilla -// Firebird) multiply pointers in hash routines. -// -// - NEG: can take a pointer. It happens in glibc in a few places. I've -// seen the code, didn't understand it, but it's done deliberately. -// -// What I am not checking/doing, but could, but it would require more -// instrumentation and/or slow things down a bit: -// - SUB: when differencing two pointers, result is BOTTOM, ie. "don't -// check". Could link segments instead, slower but a bit more accurate. -// Also use BOTTOM when doing (ptr - unknown), which could be a pointer -// difference with a stack/static pointer. -// -// - PUTF: input should be non-pointer -// -// - arithmetic error messages: eg. for adding two pointers, just giving the -// segments, not the actual pointers. -// -// What I am not checking, and would be difficult: -// - mmap(...MAP_FIXED...) is not handled specially. It might be used in -// ways that fool Ptrcheck into giving false positives. -// -// - syscalls: for those accessing memory, not checking that the asegs of the -// accessed words match the vseg of the accessing pointer, because the -// vseg is not easily accessible at the required time (would required -// knowing for every syscall which register each arg came in, and looking -// there). -// -// What I am not checking, and would be difficult, but doesn't matter: -// - free(p): similar to syscalls, not checking that the p.vseg matches the -// aseg of the first byte in the block. However, Memcheck does an -// equivalent "bad free" check using shadow_chunks; indeed, Ptrcheck could -// do the same check, but there's no point duplicating functionality. So -// no loss, really. -// -// Other: -// - not doing anything with mprotect(); probably not worth the effort. -//-------------------------------------------------------------- - -//-------------------------------------------------------------- -// Todo: -// - Segments for stack frames. Would detect (some, large) stack -// over/under-runs, dangling pointers. -// -// - Segments for static data. Would detect over/under-runs. Requires -// reading debug info. -//-------------------------------------------------------------- - -//-------------------------------------------------------------- -// Some profiling results: -// twolf konq date sz -// 1. started 35.0s 14.7 -// 2. introduced GETV/PUTV 30.2s 10.1 -// 3. inlined check_load_or_store 5.6s 27.5s 10.1 -// 4. (made check_load, check_store4 regparm(0)) (27.9s) (11.0) -// 5. um, not sure 5.3s 27.3s 10.6 -// ... -// 6. after big changes, corrections 11.2s 32.8s 14.0 -// 7. removed link-segment chasing in check/L/S 8.9s 30.8s 14.0 -// 8. avoiding do_lea1 if k is a nonptr 8.0s 28.0s 12.9 -//-------------------------------------------------------------- - -//#include "vg_skin.h" - #include "pub_tool_basics.h" #include "pub_tool_libcbase.h" #include "pub_tool_libcprint.h" @@ -246,11 +72,6 @@ /*--- Debug/trace options ---*/ /*------------------------------------------------------------*/ -/* Set to 1 to do sanity checks on Seg values in many places, which - checks if bogus Segs are in circulation. Quite expensive from a - performance point of view. */ -#define SC_SEGS 0 - static ULong stats__client_mallocs = 0; static ULong stats__client_frees = 0; static ULong stats__segs_allocd = 0; @@ -295,7 +116,7 @@ void Seg__cmp(Seg* seg, Addr a, Int* cmp, UWord* n) } } -inline Bool Seg__is_freed(Seg* seg) +/*inline*/ Bool Seg__is_freed(Seg* seg) { if (!is_known_segment(seg)) return False; @@ -461,9 +282,6 @@ static void unbind_addr_from_Seg ( Addr ga ) ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// -// So that post_reg_write_clientcall knows the segment just allocated. -static Seg* last_seg_added = NULL; - // Returns the added heap segment static Seg* add_new_segment ( ThreadId tid, Addr p, SizeT size ) { @@ -476,16 +294,10 @@ static Seg* add_new_segment ( ThreadId tid, Addr p, SizeT size ) bind_addr_to_Seg(p, seg); - last_seg_added = seg; - return seg; } -// Forward declarations -static void copy_mem( Addr from, Addr to, SizeT len ); -static void set_mem_unknown ( Addr a, SizeT len ); -static inline VG_REGPARM(1) Seg* nonptr_or_unknown(UWord x); /*fwds*/ static void* alloc_and_new_mem_heap ( ThreadId tid, @@ -498,7 +310,6 @@ void* alloc_and_new_mem_heap ( ThreadId tid, p = (Addr)VG_(cli_malloc)(alignment, size); if (is_zeroed) VG_(memset)((void*)p, 0, size); - set_mem_unknown( p, size ); add_new_segment( tid, p, size ); stats__client_mallocs++; @@ -509,7 +320,6 @@ static void die_and_free_mem_heap ( ThreadId tid, Seg* seg ) { // Empty and free the actual block tl_assert(!Seg__is_freed(seg)); - set_mem_unknown( seg->addr, seg->szB ); VG_(cli_free)( (void*)seg->addr ); @@ -533,359 +343,6 @@ static void handle_free_heap( ThreadId tid, void* p ) } -/*------------------------------------------------------------*/ -/*--- Shadow memory ---*/ -/*------------------------------------------------------------*/ - -/* Shadow memory holds one Seg for each naturally aligned (guest) - word. For a 32 bit target (assuming host word size == guest word - size) that means one Seg per 4 bytes, and each Seg occupies 4 - bytes. For a 64 bit target that means one Seg per 8 bytes, and - each Seg occupies 8 bytes. Hence in each case the overall space - overhead for shadow memory is 1:1. - - This does however make it a bit tricky to size SecMap.vseg[], simce - it needs to hold 16384 entries for 32 bit targets but only 8192 - entries for 64 bit targets. */ - -#if 0 -__attribute__((unused)) -static void pp_curr_ExeContext(void) -{ - VG_(pp_ExeContext)( - VG_(get_ExeContext)( - VG_(get_current_or_recent_tid)() ) ); - VG_(message)(Vg_UserMsg, ""); -} -#endif - -#if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm) -# define SHMEM_SECMAP_MASK 0xFFFC -# define SHMEM_SECMAP_SHIFT 2 -# define SHMEM_IS_WORD_ALIGNED(_a) VG_IS_4_ALIGNED(_a) -# define SEC_MAP_WORDS (0x10000UL / 4UL) /* 16k */ -#elif defined(VGA_amd64) || defined(VGA_ppc64) -# define SHMEM_SECMAP_MASK 0xFFF8 -# define SHMEM_SECMAP_SHIFT 3 -# define SHMEM_IS_WORD_ALIGNED(_a) VG_IS_8_ALIGNED(_a) -# define SEC_MAP_WORDS (0x10000UL / 8UL) /* 8k */ -#else -# error "Unknown arch" -#endif - -typedef - struct { - Seg* vseg[SEC_MAP_WORDS]; - } - SecMap; - -static SecMap distinguished_secondary_map; - -/* An entry in the primary map. base must be a 64k-aligned value, and - sm points at the relevant secondary map. The secondary may be - either a real secondary, or the distinguished secondary. DO NOT - CHANGE THIS LAYOUT: the first word has to be the key for OSet fast - lookups. -*/ -typedef - struct { - Addr base; - SecMap* sm; - } - PriMapEnt; - -/* Primary map is an OSet of PriMapEnt (primap_L2), "fronted" by a - cache (primap_L1). */ - -/* Tunable parameter: How big is the L1 queue? */ -#define N_PRIMAP_L1 24 - -/* Tunable parameter: How far along the L1 queue to insert - entries resulting from L2 lookups? */ -#define PRIMAP_L1_INSERT_IX 12 - -static struct { - Addr base; // must be 64k aligned - PriMapEnt* ent; // pointer to the matching primap_L2 node - } - primap_L1[N_PRIMAP_L1]; - -static OSet* primap_L2 = NULL; - - -/* # searches initiated in auxmap_L1, and # base cmps required */ -static ULong n_primap_L1_searches = 0; -static ULong n_primap_L1_cmps = 0; -/* # of searches that missed in auxmap_L1 and therefore had to - be handed to auxmap_L2. And the number of nodes inserted. */ -static ULong n_primap_L2_searches = 0; -static ULong n_primap_L2_nodes = 0; - - -static void init_shadow_memory ( void ) -{ - Int i; - - for (i = 0; i < SEC_MAP_WORDS; i++) - distinguished_secondary_map.vseg[i] = NONPTR; - - for (i = 0; i < N_PRIMAP_L1; i++) { - primap_L1[i].base = 1; /* not 64k aligned, so doesn't match any - request ==> slot is empty */ - primap_L1[i].ent = NULL; - } - - tl_assert(0 == offsetof(PriMapEnt,base)); - tl_assert(sizeof(Addr) == sizeof(void*)); - primap_L2 = VG_(OSetGen_Create)( /*keyOff*/ offsetof(PriMapEnt,base), - /*fastCmp*/ NULL, - VG_(malloc), "pc.h_main.ism.1", - VG_(free) ); - tl_assert(primap_L2); -} - -static void insert_into_primap_L1_at ( Word rank, PriMapEnt* ent ) -{ - Word i; - tl_assert(ent); - tl_assert(rank >= 0 && rank < N_PRIMAP_L1); - for (i = N_PRIMAP_L1-1; i > rank; i--) - primap_L1[i] = primap_L1[i-1]; - primap_L1[rank].base = ent->base; - primap_L1[rank].ent = ent; -} - -static inline PriMapEnt* maybe_find_in_primap ( Addr a ) -{ - PriMapEnt key; - PriMapEnt* res; - Word i; - - a &= ~(Addr)0xFFFF; - - /* First search the front-cache, which is a self-organising - list containing the most popular entries. */ - - if (LIKELY(primap_L1[0].base == a)) - return primap_L1[0].ent; - if (LIKELY(primap_L1[1].base == a)) { - Addr t_base = primap_L1[0].base; - PriMapEnt* t_ent = primap_L1[0].ent; - primap_L1[0].base = primap_L1[1].base; - primap_L1[0].ent = primap_L1[1].ent; - primap_L1[1].base = t_base; - primap_L1[1].ent = t_ent; - return primap_L1[0].ent; - } - - n_primap_L1_searches++; - - for (i = 0; i < N_PRIMAP_L1; i++) { - if (primap_L1[i].base == a) { - break; - } - } - tl_assert(i >= 0 && i <= N_PRIMAP_L1); - - n_primap_L1_cmps += (ULong)(i+1); - - if (i < N_PRIMAP_L1) { - if (i > 0) { - Addr t_base = primap_L1[i-1].base; - PriMapEnt* t_ent = primap_L1[i-1].ent; - primap_L1[i-1].base = primap_L1[i-0].base; - primap_L1[i-1].ent = primap_L1[i-0].ent; - primap_L1[i-0].base = t_base; - primap_L1[i-0].ent = t_ent; - i--; - } - return primap_L1[i].ent; - } - - n_primap_L2_searches++; - - /* First see if we already have it. */ - key.base = a; - key.sm = 0; - - res = VG_(OSetGen_Lookup)(primap_L2, &key); - if (res) - insert_into_primap_L1_at( PRIMAP_L1_INSERT_IX, res ); - return res; -} - -static SecMap* alloc_secondary_map ( void ) -{ - SecMap* map; - UInt i; - - // JRS 2008-June-25: what's the following assertion for? - tl_assert(0 == (sizeof(SecMap) % VKI_MAX_PAGE_SIZE)); - - map = VG_(am_shadow_alloc)( sizeof(SecMap) ); - if (map == NULL) - VG_(out_of_memory_NORETURN)( "annelid:allocate new SecMap", - sizeof(SecMap) ); - - for (i = 0; i < SEC_MAP_WORDS; i++) - map->vseg[i] = NONPTR; - if (0) VG_(printf)("XXX new secmap %p\n", map); - return map; -} - -static PriMapEnt* find_or_alloc_in_primap ( Addr a ) -{ - PriMapEnt *nyu, *res; - - /* First see if we already have it. */ - res = maybe_find_in_primap( a ); - if (LIKELY(res)) - return res; - - /* Ok, there's no entry in the secondary map, so we'll have - to allocate one. */ - a &= ~(Addr)0xFFFF; - - nyu = (PriMapEnt*) VG_(OSetGen_AllocNode)( - primap_L2, sizeof(PriMapEnt) ); - tl_assert(nyu); - nyu->base = a; - nyu->sm = alloc_secondary_map(); - tl_assert(nyu->sm); - VG_(OSetGen_Insert)( primap_L2, nyu ); - insert_into_primap_L1_at( PRIMAP_L1_INSERT_IX, nyu ); - n_primap_L2_nodes++; - return nyu; -} - -///////////////////////////////////////////////// - -// Nb: 'a' must be naturally word aligned for the host. -static inline Seg* get_mem_vseg ( Addr a ) -{ - SecMap* sm = find_or_alloc_in_primap(a)->sm; - UWord sm_off = (a & SHMEM_SECMAP_MASK) >> SHMEM_SECMAP_SHIFT; - tl_assert(SHMEM_IS_WORD_ALIGNED(a)); - return sm->vseg[sm_off]; -} - -// Nb: 'a' must be naturally word aligned for the host. -static inline void set_mem_vseg ( Addr a, Seg* vseg ) -{ - SecMap* sm = find_or_alloc_in_primap(a)->sm; - UWord sm_off = (a & SHMEM_SECMAP_MASK) >> SHMEM_SECMAP_SHIFT; - tl_assert(SHMEM_IS_WORD_ALIGNED(a)); - sm->vseg[sm_off] = vseg; -} - -// Find the Seg which contains the given address. -// Returns UNKNOWN if no matches. Never returns BOTTOM or NONPTR. -// Also, only returns in-use segments, not freed ones. -/* Doing this fast is distinctly difficult when there are more than a - few heap allocated blocks live. Basically it is done by searching - addr_to_seg_map for 'a'. - - First, if 'a' is the start address of a segment, then we can detect - that by simply doing a VG_(lookupFM) of 'a', and we are done (nice - and easy). - - If 'a' is within some segment, but does not point to the start, it - is much more complex. We use VG_(findBoundsFM) to find the segment - with the largest .addr field which is <= a, and we then inspect the - segment to see if 'a' really falls inside it or not. This is all a - bit complex and fragile, and so there's a lot of assertery in the - code below. It has been crosschecked however against the trivial - _SLOW implementation shown after the end of this fn. -*/ -static Seg* get_Seg_containing_addr( Addr a ) -{ - UWord keyW, valW; - Seg* s2; - - /* Since we are going to poke around in it */ - addr_to_seg_map_ENSURE_INIT(); - - /* first, see if 'a' is at the start of a block. We do this both - because it's easy and more imporantly because VG_(findBoundsFM) - will fail in this case, so we need to exclude it first. */ - if (VG_(lookupFM)( addr_to_seg_map, &keyW, &valW, a )) { - tl_assert(keyW == a); - s2 = (Seg*)valW; - tl_assert(s2->addr == a); - } else { - Bool ok; - UWord kMin, vMin, kMax, vMax; - Seg minSeg; - Seg maxSeg; - UWord minAddr = 0; - UWord maxAddr = ~minAddr; - VG_(memset)(&minSeg, 0, sizeof(minSeg)); - VG_(memset)(&maxSeg, 0, sizeof(maxSeg)); - minSeg.addr = minAddr; - maxSeg.addr = maxAddr; - ok = VG_(findBoundsFM)( addr_to_seg_map, - &kMin, &vMin, &kMax, &vMax, - minAddr, (UWord)&minSeg, - maxAddr, (UWord)&maxSeg, a ); - tl_assert(ok); /* must be so, since False is only returned when - 'a' is directly present in the map, and we - just established that it isn't. */ - /* At this point, either vMin points at minSeg, or it points at a - real Seg. In the former case, there is no live heap-allocated - Seg which has a start address <= a, so a is not in any block. - In the latter case, the Seg vMin points at may or may not - actually contain 'a'; we can only tell that by inspecting the - Seg itself. */ - s2 = (Seg*)vMin; - tl_assert(kMin == s2->addr); - if (s2 == &minSeg) { - /* the former */ - s2 = UNKNOWN; - } else { - /* the latter */ - tl_assert(s2->addr <= a); - /* if s2 doesn't actually contain 'a', we must forget about it. */ - if (s2->szB == 0 /* a zero sized block can't contain anything */ - || s2->addr + s2->szB < a /* the usual range check */) - s2 = UNKNOWN; - } - /* while we're at it, do as much assertery as we can, since this - is all rather complex. Either vMax points at maxSeg, or it - points to a real block, which must have a start address - greater than a. */ - tl_assert(kMax == ((Seg*)vMax)->addr); - if (vMax == (UWord)&maxSeg) { - /* nothing we can check */ - } else { - tl_assert(a < kMax); /* hence also a < ((Seg*)vMax)->addr */ - } - } - - return s2; -} - -/* XXXX very slow reference implementation. Do not use. -static Seg* get_Seg_containing_addr_SLOW( Addr a ) -{ - SegGroup* group; - UWord i; - stats__slow_searches++; - for (group = group_list; group; group = group->admin) { - for (i = 0; i < group->nextfree; i++) { - stats__slow_totcmps++; - if (Seg__is_freed(&group->segs[i])) - continue; - if (group->segs[i].addr <= a - && a < group->segs[i].addr + group->segs[i].szB) - return &group->segs[i]; - } - } - return UNKNOWN; -} -*/ - - - /*------------------------------------------------------------*/ /*--- malloc() et al replacements ---*/ /*------------------------------------------------------------*/ @@ -964,9 +421,6 @@ void* h_replace_realloc ( ThreadId tid, void* p_old, SizeT new_size ) Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size); VG_(memcpy)((void*)p_new, p_old, new_size); - /* Notification: copy retained part */ - copy_mem ( (Addr)p_old, p_new, new_size ); - /* Free old memory */ die_and_free_mem_heap( tid, seg ); @@ -981,10 +435,6 @@ void* h_replace_realloc ( ThreadId tid, void* p_old, SizeT new_size ) Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size); VG_(memcpy)((void*)p_new, p_old, seg->szB); - /* Notification: first half kept and copied, second half new */ - copy_mem ( (Addr)p_old, p_new, seg->szB ); - set_mem_unknown( p_new + seg->szB, new_size - seg->szB ); - /* Free old memory */ die_and_free_mem_heap( tid, seg ); @@ -1009,4295 +459,167 @@ SizeT h_replace_malloc_usable_size ( ThreadId tid, void* p ) } -/*------------------------------------------------------------*/ -/*--- Memory events ---*/ -/*------------------------------------------------------------*/ - -static inline -void set_mem ( Addr a, SizeT len, Seg* seg ) -{ - Addr end; +/*--------------------------------------------------------------------*/ +/*--- Instrumentation ---*/ +/*--------------------------------------------------------------------*/ - if (0 == len) - return; +/* The h_ instrumenter that follows is complex, since it deals with + shadow value computation. - if (len > 100 * 1000 * 1000) - VG_(message)(Vg_UserMsg, - "Warning: set address range state: large range %lu\n", - len); + It also needs to generate instrumentation for the sg_ side of + things. That's relatively straightforward. However, rather than + confuse the code herein any further, we simply delegate the problem + to sg_main.c, by using the four functions + sg_instrument_{init,fini,IRStmt,final_jump}. These four completely + abstractify the sg_ instrumentation. See comments in sg_main.c's + instrumentation section for further details. */ - a = VG_ROUNDDN(a, sizeof(UWord)); - end = VG_ROUNDUP(a + len, sizeof(UWord)); - for ( ; a < end; a += sizeof(UWord)) - set_mem_vseg(a, seg); -} -static void set_mem_unknown( Addr a, SizeT len ) -{ - set_mem( a, len, UNKNOWN ); -} +/* Carries info about a particular tmp. The tmp's number is not + recorded, as this is implied by (equal to) its index in the tmpMap + in PCEnv. The tmp's type is also not recorded, as this is present + in PCEnv.sb->tyenv. -//zz static void set_mem_nonptr( Addr a, UInt len ) -//zz { -//zz set_mem( a, len, NONPTR ); -//zz } + When .kind is NonShad, .shadow may give the identity of the temp + currently holding the associated shadow value, or it may be + IRTemp_INVALID if code to compute the shadow has not yet been + emitted. -void h_new_mem_startup( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ) -{ - if (0) VG_(printf)("new_mem_startup(%#lx,%lu)\n", a, len); - set_mem_unknown( a, len ); - //add_new_segment( VG_(get_running_tid)(), a, len, SegMmap ); -} + When .kind is Shad tmp holds a shadow value, and so .shadow must be + IRTemp_INVALID, since it is illogical for a shadow tmp itself to be + shadowed. +*/ +typedef + enum { NonShad=1, Shad=2 } + TempKind; -//zz // XXX: Currently not doing anything with brk() -- new segments, or not? -//zz // Proper way to do it would be to grow/shrink a single, special brk segment. -//zz // -//zz // brk is difficult: it defines a single segment, of changeable size. -//zz // It starts off with size zero, at the address given by brk(0). There are -//zz // no pointers within the program to it. Any subsequent calls by the -//zz // program to brk() (possibly growing or shrinking it) return pointers to -//zz // the *end* of the segment (nb: this is the kernel brk(), which is -//zz // different to the libc brk()). -//zz // -//zz // If fixing this, don't forget to update the brk case in SK_(post_syscall). -//zz // -//zz // Nb: not sure if the return value is the last byte addressible, or one -//zz // past the end of the segment. -//zz // -//zz static void new_mem_brk( Addr a, UInt len ) -//zz { -//zz set_mem_unknown(a, len); -//zz //VG_(skin_panic)("can't handle new_mem_brk"); -//zz } - -// Not quite right: if you mmap a segment into a specified place, it could -// be legitimate to do certain arithmetic with the pointer that it wouldn't -// otherwise. Hopefully this is rare, though. -void h_new_mem_mmap( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ) -{ - if (0) VG_(printf)("new_mem_mmap(%#lx,%lu)\n", a, len); -//zz #if 0 -//zz Seg seg = NULL; -//zz -//zz // Check for overlapping segments -//zz #if 0 -//zz is_overlapping_seg___a = a; // 'free' variable -//zz is_overlapping_seg___len = len; // 'free' variable -//zz seg = (Seg)VG_(HT_first_match) ( mlist, is_overlapping_seg ); -//zz is_overlapping_seg___a = 0; // paranoia, reset -//zz is_overlapping_seg___len = 0; // paranoia, reset -//zz #endif -//zz -//zz // XXX: do this check properly with ISLists -//zz -//zz if ( ISList__findI( seglist, a, &seg )) { -//zz sk_assert(SegMmap == seg->status || SegMmapFree == seg->status); -//zz if (SegMmap == seg->status) -//zz -//zz } -//zz -//zz if (NULL != seg) { -//zz // Right, we found an overlap -//zz if (VG_(clo_verbosity) > 1) -//zz VG_(message)(Vg_UserMsg, "mmap overlap: old: %#lx, %d; new: %#lx, %d", -//zz seg->left, Seg__size(seg), a, len); -//zz if (seg->left <= a && a <= seg->right) { -//zz // New one truncates end of the old one. Nb: we don't adjust its -//zz // size, because the first segment's pointer can be (and for -//zz // Konqueror, is) legitimately used to access parts of the second -//zz // segment. At least, I assume Konqueror is doing something legal. -//zz // so that a size mismatch upon munmap isn't a problem. -//zz // seg->size = a - seg->data; -//zz // seg->is_truncated_map = True; -//zz // if (VG_(clo_verbosity) > 1) -//zz // VG_(message)(Vg_UserMsg, "old seg truncated to length %d", -//zz // seg->size); -//zz } else { -//zz VG_(skin_panic)("Can't handle this mmap() overlap case"); -//zz } -//zz } - set_mem_unknown( a, len ); - //add_new_segment( VG_(get_running_tid)(), a, len, SegMmap ); -//zz #endif -} +typedef + struct { + TempKind kind; + IRTemp shadow; + } + TempMapEnt; -static void copy_mem( Addr from, Addr to, SizeT len ) -{ - Addr fromend = from + len; - // Must be aligned due to malloc always returning aligned objects. - tl_assert(VG_IS_8_ALIGNED(from) && VG_IS_8_ALIGNED(to)); - // Must only be called with positive len. - if (0 == len) - return; +/* Carries around state during Ptrcheck instrumentation. */ +typedef + struct { + /* MODIFIED: the superblock being constructed. IRStmts are + added. */ + IRSB* sb; + Bool trace; - for ( ; from < fromend; from += sizeof(UWord), to += sizeof(UWord)) - set_mem_vseg( to, get_mem_vseg(from) ); -} + /* MODIFIED: a table [0 .. #temps_in_sb-1] which gives the + current kind and possibly shadow temps for each temp in the + IRSB being constructed. Note that it does not contain the + type of each tmp. If you want to know the type, look at the + relevant entry in sb->tyenv. It follows that at all times + during the instrumentation process, the valid indices for + tmpMap and sb->tyenv are identical, being 0 .. N-1 where N is + total number of NonShad and Shad temps allocated so far. -//zz // Similar to SK_(realloc)() -//zz static void copy_mem_remap( Addr from, Addr to, UInt len ) -//zz { -//zz VG_(skin_panic)("argh: copy_mem_remap"); -//zz } -//zz -//zz static void die_mem_brk( Addr a, UInt len ) -//zz { -//zz set_mem_unknown(a, len); -//zz // VG_(skin_panic)("can't handle die_mem_brk()"); -//zz } - -void h_die_mem_munmap( Addr a, SizeT len ) -{ -// handle_free_munmap( (void*)a, len ); -} + The reason for this strange split (types in one place, all + other info in another) is that we need the types to be + attached to sb so as to make it possible to do + "typeOfIRExpr(mce->bb->tyenv, ...)" at various places in the + instrumentation process. -// Don't need to check all addresses within the block; in the absence of -// discontiguous segments, the segments for the first and last bytes should -// be the same. Can't easily check the pointer segment matches the block -// segment, unfortunately, but the first/last check should catch most -// errors. -static void pre_mem_access2 ( CorePart part, ThreadId tid, Char* str, - Addr s/*tart*/, Addr e/*nd*/ ) -{ - Seg *seglo, *seghi; + Note that only integer temps of the guest word size are + shadowed, since it is impossible (or meaningless) to hold a + pointer in any other type of temp. */ + XArray* /* of TempMapEnt */ qmpMap; - // Don't check code being translated -- very slow, and not much point - if (Vg_CoreTranslate == part) return; + /* READONLY: the host word type. Needed for constructing + arguments of type 'HWord' to be passed to helper functions. + Ity_I32 or Ity_I64 only. */ + IRType hWordTy; - // Don't check the signal case -- only happens in core, no need to check - if (Vg_CoreSignal == part) return; + /* READONLY: the guest word type, Ity_I32 or Ity_I64 only. */ + IRType gWordTy; - // Only expect syscalls after this point - if (part != Vg_CoreSysCall) { - VG_(printf)("part = %d\n", part); - VG_(tool_panic)("unknown corepart in pre_mem_access2"); + /* READONLY: the guest state size, so we can generate shadow + offsets correctly. */ + Int guest_state_sizeB; } + PCEnv; - // Check first and last bytes match - seglo = get_Seg_containing_addr( s ); - seghi = get_Seg_containing_addr( e ); - tl_assert( BOTTOM != seglo && NONPTR != seglo ); - tl_assert( BOTTOM != seghi && NONPTR != seghi ); - - /* record an error if start and end are in different, but known segments */ - if (is_known_segment(seglo) && is_known_segment(seghi) - && seglo != seghi) { - h_record_sysparam_error(tid, part, str, s, e, seglo, seghi); - } - else - /* record an error if start is in a known segment but end isn't */ - if (is_known_segment(seglo) && !is_known_segment(seghi)) { - h_record_sysparam_error(tid, part, str, s, e, seglo, UNKNOWN); - } - else - /* record an error if end is in a known segment but start isn't */ - if (!is_known_segment(seglo) && is_known_segment(seghi)) { - h_record_sysparam_error(tid, part, str, s, e, UNKNOWN, seghi); - } -} +/* SHADOW TMP MANAGEMENT. Shadow tmps are allocated lazily (on + demand), as they are encountered. This is for two reasons. -void h_pre_mem_access ( CorePart part, ThreadId tid, Char* s, - Addr base, SizeT size ) -{ - pre_mem_access2( part, tid, s, base, base + size - 1 ); -} + (1) (less important reason): Many original tmps are unused due to + initial IR optimisation, and we do not want to spaces in tables + tracking them. -void h_pre_mem_read_asciiz ( CorePart part, ThreadId tid, - Char* s, Addr lo ) -{ - Addr hi = lo; + Shadow IRTemps are therefore allocated on demand. pce.tmpMap is a + table indexed [0 .. n_types-1], which gives the current shadow for + each original tmp, or INVALID_IRTEMP if none is so far assigned. + It is necessary to support making multiple assignments to a shadow + -- specifically, after testing a shadow for definedness, it needs + to be made defined. But IR's SSA property disallows this. - // Nb: the '\0' must be included in the lo...hi range - while ('\0' != *(Char*)hi) hi++; - pre_mem_access2( part, tid, s, lo, hi ); -} + (2) (more important reason): Therefore, when a shadow needs to get + a new value, a new temporary is created, the value is assigned to + that, and the tmpMap is updated to reflect the new binding. -//zz static void post_mem_write(Addr a, UInt len) -//zz { -//zz set_mem_unknown(a, len); -//zz } + A corollary is that if the tmpMap maps a given tmp to + IRTemp_INVALID and we are hoping to read that shadow tmp, it means + there's a read-before-write error in the original tmps. The IR + sanity checker should catch all such anomalies, however. +*/ +/* Create a new IRTemp of type 'ty' and kind 'kind', and add it to + both the table in pce->sb and to our auxiliary mapping. Note that + newTemp may cause pce->tmpMap to resize, hence previous results + from VG_(indexXA)(pce->tmpMap) are invalidated. */ +static IRTemp newTemp ( PCEnv* pce, IRType ty, TempKind kind ) +{ + Word newIx; + TempMapEnt ent; + IRTemp tmp = newIRTemp(pce->sb->tyenv, ty); + ent.kind = kind; + ent.shadow = IRTemp_INVALID; + newIx = VG_(addToXA)( pce->qmpMap, &ent ); + tl_assert(newIx == (Word)tmp); + return tmp; +} /*------------------------------------------------------------*/ -/*--- Register event handlers ---*/ +/*--- Constructing IR fragments ---*/ /*------------------------------------------------------------*/ -//zz static void post_regs_write_init ( void ) -//zz { -//zz UInt i; -//zz for (i = R_EAX; i <= R_EDI; i++) -//zz VG_(set_shadow_archreg)( i, (UInt)UNKNOWN ); -//zz -//zz // Don't bother about eflags -//zz } - -// BEGIN move this uglyness to pc_machine.c - -static inline Bool host_is_big_endian ( void ) { - UInt x = 0x11223344; - return 0x1122 == *(UShort*)(&x); -} -static inline Bool host_is_little_endian ( void ) { - UInt x = 0x11223344; - return 0x3344 == *(UShort*)(&x); +/* add stmt to a bb */ +static /*inline*/ void stmt ( HChar cat, PCEnv* pce, IRStmt* st ) { + if (pce->trace) { + VG_(printf)(" %c: ", cat); + ppIRStmt(st); + VG_(printf)("\n"); + } + addStmtToIRSB(pce->sb, st); } -#define N_INTREGINFO_OFFSETS 4 +static IRTemp for_sg__newIRTemp_cb ( IRType ty, void* opaque ) +{ + PCEnv* pce = (PCEnv*)opaque; + return newTemp( pce, ty, NonShad ); +} -/* Holds the result of a query to 'get_IntRegInfo'. Valid values for - n_offsets are: - -1: means the queried guest state slice exactly matches - one integer register +IRSB* h_instrument ( VgCallbackClosure* closure, + IRSB* sbIn, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy ) +{ + Bool verboze = 0||False; + Int i /*, j*/; + PCEnv pce; + struct _SGEnv* sgenv; - 0: means the queried guest state slice does not overlap any - integer registers - - 1 .. N_INTREGINFO_OFFSETS: means the queried guest state offset - overlaps n_offsets different integer registers, and their base - offsets are placed in the offsets array. -*/ -typedef - struct { - Int offsets[N_INTREGINFO_OFFSETS]; - Int n_offsets; - } - IntRegInfo; - - -#if defined(VGA_x86) -# include "libvex_guest_x86.h" -# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestX86State) -#endif - -#if defined(VGA_amd64) -# include "libvex_guest_amd64.h" -# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestAMD64State) -# define PC_OFF_FS_ZERO offsetof(VexGuestAMD64State,guest_FS_ZERO) -# define PC_SZB_FS_ZERO sizeof( ((VexGuestAMD64State*)0)->guest_FS_ZERO) -#endif - -#if defined(VGA_ppc32) -# include "libvex_guest_ppc32.h" -# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State) -#endif - -#if defined(VGA_ppc64) -# include "libvex_guest_ppc64.h" -# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State) -#endif - -#if defined(VGA_arm) -# include "libvex_guest_arm.h" -# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState) -#endif - - -/* See description on definition of type IntRegInfo. */ -static void get_IntRegInfo ( /*OUT*/IntRegInfo* iii, Int offset, Int szB ) -{ - /* --------------------- x86 --------------------- */ - -# if defined(VGA_x86) - -# define GOF(_fieldname) \ - (offsetof(VexGuestX86State,guest_##_fieldname)) - - Int o = offset; - Int sz = szB; - Bool is4 = sz == 4; - Bool is21 = sz == 2 || sz == 1; - - tl_assert(sz > 0); - tl_assert(host_is_little_endian()); - - /* Set default state to "does not intersect any int register". */ - VG_(memset)( iii, 0, sizeof(*iii) ); - - /* Exact accesses to integer registers */ - if (o == GOF(EAX) && is4) goto exactly1; - if (o == GOF(ECX) && is4) goto exactly1; - if (o == GOF(EDX) && is4) goto exactly1; - if (o == GOF(EBX) && is4) goto exactly1; - if (o == GOF(ESP) && is4) goto exactly1; - if (o == GOF(EBP) && is4) goto exactly1; - if (o == GOF(ESI) && is4) goto exactly1; - if (o == GOF(EDI) && is4) goto exactly1; - if (o == GOF(EIP) && is4) goto none; - if (o == GOF(IP_AT_SYSCALL) && is4) goto none; - if (o == GOF(CC_OP) && is4) goto none; - if (o == GOF(CC_DEP1) && is4) goto none; - if (o == GOF(CC_DEP2) && is4) goto none; - if (o == GOF(CC_NDEP) && is4) goto none; - if (o == GOF(DFLAG) && is4) goto none; - if (o == GOF(IDFLAG) && is4) goto none; - if (o == GOF(ACFLAG) && is4) goto none; - - /* Partial accesses to integer registers */ - if (o == GOF(EAX) && is21) { o -= 0; goto contains_o; } - if (o == GOF(EAX)+1 && is21) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(ECX) && is21) { o -= 0; goto contains_o; } - if (o == GOF(ECX)+1 && is21) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(EBX) && is21) { o -= 0; goto contains_o; } - if (o == GOF(EBX)+1 && is21) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(EDX) && is21) { o -= 0; goto contains_o; } - if (o == GOF(EDX)+1 && is21) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(ESI) && is21) { o -= 0; goto contains_o; } - if (o == GOF(EDI) && is21) { o -= 0; goto contains_o; } - - /* Segment related guff */ - if (o == GOF(GS) && sz == 2) goto none; - if (o == GOF(LDT) && is4) goto none; - if (o == GOF(GDT) && is4) goto none; - - /* FP admin related */ - if (o == GOF(SSEROUND) && is4) goto none; - if (o == GOF(FPROUND) && is4) goto none; - if (o == GOF(EMWARN) && is4) goto none; - if (o == GOF(FTOP) && is4) goto none; - if (o == GOF(FPTAG) && sz == 8) goto none; - if (o == GOF(FC3210) && is4) goto none; - - /* xmm registers, including arbitrary sub-parts */ - if (o >= GOF(XMM0) && o+sz <= GOF(XMM0)+16) goto none; - if (o >= GOF(XMM1) && o+sz <= GOF(XMM1)+16) goto none; - if (o >= GOF(XMM2) && o+sz <= GOF(XMM2)+16) goto none; - if (o >= GOF(XMM3) && o+sz <= GOF(XMM3)+16) goto none; - if (o >= GOF(XMM4) && o+sz <= GOF(XMM4)+16) goto none; - if (o >= GOF(XMM5) && o+sz <= GOF(XMM5)+16) goto none; - if (o >= GOF(XMM6) && o+sz <= GOF(XMM6)+16) goto none; - if (o >= GOF(XMM7) && o+sz <= GOF(XMM7)+16) goto none; - - /* mmx/x87 registers (a bit of a kludge, since 'o' is not checked - to be exactly equal to one of FPREG[0] .. FPREG[7]) */ - if (o >= GOF(FPREG[0]) && o < GOF(FPREG[7])+8 && sz == 8) goto none; - - /* the entire mmx/x87 register bank in one big piece */ - if (o == GOF(FPREG) && sz == 64) goto none; - - VG_(printf)("get_IntRegInfo(x86):failing on (%d,%d)\n", o, sz); - tl_assert(0); -# undef GOF - - /* -------------------- amd64 -------------------- */ - -# elif defined(VGA_amd64) - -# define GOF(_fieldname) \ - (offsetof(VexGuestAMD64State,guest_##_fieldname)) - - Int o = offset; - Int sz = szB; - Bool is421 = sz == 4 || sz == 2 || sz == 1; - Bool is8 = sz == 8; - - tl_assert(sz > 0); - tl_assert(host_is_little_endian()); - - /* Set default state to "does not intersect any int register". */ - VG_(memset)( iii, 0, sizeof(*iii) ); - - /* Exact accesses to integer registers */ - if (o == GOF(RAX) && is8) goto exactly1; - if (o == GOF(RCX) && is8) goto exactly1; - if (o == GOF(RDX) && is8) goto exactly1; - if (o == GOF(RBX) && is8) goto exactly1; - if (o == GOF(RSP) && is8) goto exactly1; - if (o == GOF(RBP) && is8) goto exactly1; - if (o == GOF(RSI) && is8) goto exactly1; - if (o == GOF(RDI) && is8) goto exactly1; - if (o == GOF(R8) && is8) goto exactly1; - if (o == GOF(R9) && is8) goto exactly1; - if (o == GOF(R10) && is8) goto exactly1; - if (o == GOF(R11) && is8) goto exactly1; - if (o == GOF(R12) && is8) goto exactly1; - if (o == GOF(R13) && is8) goto exactly1; - if (o == GOF(R14) && is8) goto exactly1; - if (o == GOF(R15) && is8) goto exactly1; - if (o == GOF(RIP) && is8) goto exactly1; - if (o == GOF(IP_AT_SYSCALL) && is8) goto none; - if (o == GOF(CC_OP) && is8) goto none; - if (o == GOF(CC_DEP1) && is8) goto none; - if (o == GOF(CC_DEP2) && is8) goto none; - if (o == GOF(CC_NDEP) && is8) goto none; - if (o == GOF(DFLAG) && is8) goto none; - if (o == GOF(IDFLAG) && is8) goto none; - - /* Partial accesses to integer registers */ - if (o == GOF(RAX) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RAX)+1 && is421) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(RCX) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RCX)+1 && is421) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(RDX) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RDX)+1 && is421) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(RBX) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RBX)+1 && is421) { o -= 1; o -= 0; goto contains_o; } - if (o == GOF(RBP) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RSI) && is421) { o -= 0; goto contains_o; } - if (o == GOF(RDI) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R8) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R9) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R10) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R11) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R12) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R13) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R14) && is421) { o -= 0; goto contains_o; } - if (o == GOF(R15) && is421) { o -= 0; goto contains_o; } - - /* Segment related guff */ - if (o == GOF(FS_ZERO) && is8) goto exactly1; - - /* FP admin related */ - if (o == GOF(SSEROUND) && is8) goto none; - if (o == GOF(FPROUND) && is8) goto none; - if (o == GOF(EMWARN) && sz == 4) goto none; - if (o == GOF(FTOP) && sz == 4) goto none; - if (o == GOF(FPTAG) && is8) goto none; - if (o == GOF(FC3210) && is8) goto none; - - /* xmm registers, including arbitrary sub-parts */ - if (o >= GOF(XMM0) && o+sz <= GOF(XMM0)+16) goto none; - if (o >= GOF(XMM1) && o+sz <= GOF(XMM1)+16) goto none; - if (o >= GOF(XMM2) && o+sz <= GOF(XMM2)+16) goto none; - if (o >= GOF(XMM3) && o+sz <= GOF(XMM3)+16) goto none; - if (o >= GOF(XMM4) && o+sz <= GOF(XMM4)+16) goto none; - if (o >= GOF(XMM5) && o+sz <= GOF(XMM5)+16) goto none; - if (o >= GOF(XMM6) && o+sz <= GOF(XMM6)+16) goto none; - if (o >= GOF(XMM7) && o+sz <= GOF(XMM7)+16) goto none; - if (o >= GOF(XMM8) && o+sz <= GOF(XMM8)+16) goto none; - if (o >= GOF(XMM9) && o+sz <= GOF(XMM9)+16) goto none; - if (o >= GOF(XMM10) && o+sz <= GOF(XMM10)+16) goto none; - if (o >= GOF(XMM11) && o+sz <= GOF(XMM11)+16) goto none; - if (o >= GOF(XMM12) && o+sz <= GOF(XMM12)+16) goto none; - if (o >= GOF(XMM13) && o+sz <= GOF(XMM13)+16) goto none; - if (o >= GOF(XMM14) && o+sz <= GOF(XMM14)+16) goto none; - if (o >= GOF(XMM15) && o+sz <= GOF(XMM15)+16) goto none; - - /* mmx/x87 registers (a bit of a kludge, since 'o' is not checked - to be exactly equal to one of FPREG[0] .. FPREG[7]) */ - if (o >= GOF(FPREG[0]) && o < GOF(FPREG[7])+8 && sz == 8) goto none; - - VG_(printf)("get_IntRegInfo(amd64):failing on (%d,%d)\n", o, sz); - tl_assert(0); -# undef GOF - - /* -------------------- ppc32 -------------------- */ - -# elif defined(VGA_ppc32) - -# define GOF(_fieldname) \ - (offsetof(VexGuestPPC32State,guest_##_fieldname)) - - Int o = offset; - Int sz = szB; - Bool is4 = sz == 4; - Bool is8 = sz == 8; - - tl_assert(sz > 0); - tl_assert(host_is_big_endian()); - - /* Set default state to "does not intersect any int register". */ - VG_(memset)( iii, 0, sizeof(*iii) ); - - /* Exact accesses to integer registers */ - if (o == GOF(GPR0) && is4) goto exactly1; - if (o == GOF(GPR1) && is4) goto exactly1; - if (o == GOF(GPR2) && is4) goto exactly1; - if (o == GOF(GPR3) && is4) goto exactly1; - if (o == GOF(GPR4) && is4) goto exactly1; - if (o == GOF(GPR5) && is4) goto exactly1; - if (o == GOF(GPR6) && is4) goto exactly1; - if (o == GOF(GPR7) && is4) goto exactly1; - if (o == GOF(GPR8) && is4) goto exactly1; - if (o == GOF(GPR9) && is4) goto exactly1; - if (o == GOF(GPR10) && is4) goto exactly1; - if (o == GOF(GPR11) && is4) goto exactly1; - if (o == GOF(GPR12) && is4) goto exactly1; - if (o == GOF(GPR13) && is4) goto exactly1; - if (o == GOF(GPR14) && is4) goto exactly1; - if (o == GOF(GPR15) && is4) goto exactly1; - if (o == GOF(GPR16) && is4) goto exactly1; - if (o == GOF(GPR17) && is4) goto exactly1; - if (o == GOF(GPR18) && is4) goto exactly1; - if (o == GOF(GPR19) && is4) goto exactly1; - if (o == GOF(GPR20) && is4) goto exactly1; - if (o == GOF(GPR21) && is4) goto exactly1; - if (o == GOF(GPR22) && is4) goto exactly1; - if (o == GOF(GPR23) && is4) goto exactly1; - if (o == GOF(GPR24) && is4) goto exactly1; - if (o == GOF(GPR25) && is4) goto exactly1; - if (o == GOF(GPR26) && is4) goto exactly1; - if (o == GOF(GPR27) && is4) goto exactly1; - if (o == GOF(GPR28) && is4) goto exactly1; - if (o == GOF(GPR29) && is4) goto exactly1; - if (o == GOF(GPR30) && is4) goto exactly1; - if (o == GOF(GPR31) && is4) goto exactly1; - - /* Misc integer reg and condition code accesses */ - if (o == GOF(LR) && is4) goto exactly1; - if (o == GOF(CTR) && is4) goto exactly1; - if (o == GOF(CIA) && is4) goto none; - if (o == GOF(IP_AT_SYSCALL) && is4) goto none; - if (o == GOF(TISTART) && is4) goto none; - if (o == GOF(TILEN) && is4) goto none; - if (o == GOF(REDIR_SP) && is4) goto none; - - if (sz == 1) { - if (o == GOF(XER_SO)) goto none; - if (o == GOF(XER_OV)) goto none; - if (o == GOF(XER_CA)) goto none; - if (o == GOF(XER_BC)) goto none; - if (o == GOF(CR0_321)) goto none; - if (o == GOF(CR0_0)) goto none; - if (o == GOF(CR1_321)) goto none; - if (o == GOF(CR1_0)) goto none; - if (o == GOF(CR2_321)) goto none; - if (o == GOF(CR2_0)) goto none; - if (o == GOF(CR3_321)) goto none; - if (o == GOF(CR3_0)) goto none; - if (o == GOF(CR4_321)) goto none; - if (o == GOF(CR4_0)) goto none; - if (o == GOF(CR5_321)) goto none; - if (o == GOF(CR5_0)) goto none; - if (o == GOF(CR6_321)) goto none; - if (o == GOF(CR6_0)) goto none; - if (o == GOF(CR7_321)) goto none; - if (o == GOF(CR7_0)) goto none; - } - - /* Exact accesses to FP registers */ - if (o == GOF(FPR0) && is8) goto none; - if (o == GOF(FPR1) && is8) goto none; - if (o == GOF(FPR2) && is8) goto none; - if (o == GOF(FPR3) && is8) goto none; - if (o == GOF(FPR4) && is8) goto none; - if (o == GOF(FPR5) && is8) goto none; - if (o == GOF(FPR6) && is8) goto none; - if (o == GOF(FPR7) && is8) goto none; - if (o == GOF(FPR8) && is8) goto none; - if (o == GOF(FPR9) && is8) goto none; - if (o == GOF(FPR10) && is8) goto none; - if (o == GOF(FPR11) && is8) goto none; - if (o == GOF(FPR12) && is8) goto none; - if (o == GOF(FPR13) && is8) goto none; - if (o == GOF(FPR14) && is8) goto none; - if (o == GOF(FPR15) && is8) goto none; - if (o == GOF(FPR16) && is8) goto none; - if (o == GOF(FPR17) && is8) goto none; - if (o == GOF(FPR18) && is8) goto none; - if (o == GOF(FPR19) && is8) goto none; - if (o == GOF(FPR20) && is8) goto none; - if (o == GOF(FPR21) && is8) goto none; - if (o == GOF(FPR22) && is8) goto none; - if (o == GOF(FPR23) && is8) goto none; - if (o == GOF(FPR24) && is8) goto none; - if (o == GOF(FPR25) && is8) goto none; - if (o == GOF(FPR26) && is8) goto none; - if (o == GOF(FPR27) && is8) goto none; - if (o == GOF(FPR28) && is8) goto none; - if (o == GOF(FPR29) && is8) goto none; - if (o == GOF(FPR30) && is8) goto none; - if (o == GOF(FPR31) && is8) goto none; - - /* FP admin related */ - if (o == GOF(FPROUND) && is4) goto none; - if (o == GOF(EMWARN) && is4) goto none; - - /* Altivec registers */ - if (o == GOF(VR0) && sz == 16) goto none; - if (o == GOF(VR1) && sz == 16) goto none; - if (o == GOF(VR2) && sz == 16) goto none; - if (o == GOF(VR3) && sz == 16) goto none; - if (o == GOF(VR4) && sz == 16) goto none; - if (o == GOF(VR5) && sz == 16) goto none; - if (o == GOF(VR6) && sz == 16) goto none; - if (o == GOF(VR7) && sz == 16) goto none; - if (o == GOF(VR8) && sz == 16) goto none; - if (o == GOF(VR9) && sz == 16) goto none; - if (o == GOF(VR10) && sz == 16) goto none; - if (o == GOF(VR11) && sz == 16) goto none; - if (o == GOF(VR12) && sz == 16) goto none; - if (o == GOF(VR13) && sz == 16) goto none; - if (o == GOF(VR14) && sz == 16) goto none; - if (o == GOF(VR15) && sz == 16) goto none; - if (o == GOF(VR16) && sz == 16) goto none; - if (o == GOF(VR17) && sz == 16) goto none; - if (o == GOF(VR18) && sz == 16) goto none; - if (o == GOF(VR19) && sz == 16) goto none; - if (o == GOF(VR20) && sz == 16) goto none; - if (o == GOF(VR21) && sz == 16) goto none; - if (o == GOF(VR22) && sz == 16) goto none; - if (o == GOF(VR23) && sz == 16) goto none; - if (o == GOF(VR24) && sz == 16) goto none; - if (o == GOF(VR25) && sz == 16) goto none; - if (o == GOF(VR26) && sz == 16) goto none; - if (o == GOF(VR27) && sz == 16) goto none; - if (o == GOF(VR28) && sz == 16) goto none; - if (o == GOF(VR29) && sz == 16) goto none; - if (o == GOF(VR30) && sz == 16) goto none; - if (o == GOF(VR31) && sz == 16) goto none; - - /* Altivec admin related */ - if (o == GOF(VRSAVE) && is4) goto none; - - VG_(printf)("get_IntRegInfo(ppc32):failing on (%d,%d)\n", o, sz); - tl_assert(0); -# undef GOF - - /* -------------------- ppc64 -------------------- */ - -# elif defined(VGA_ppc64) - -# define GOF(_fieldname) \ - (offsetof(VexGuestPPC64State,guest_##_fieldname)) - - Int o = offset; - Int sz = szB; - Bool is4 = sz == 4; - Bool is8 = sz == 8; - - tl_assert(sz > 0); - tl_assert(host_is_big_endian()); - - /* Set default state to "does not intersect any int register". */ - VG_(memset)( iii, 0, sizeof(*iii) ); - - /* Exact accesses to integer registers */ - if (o == GOF(GPR0) && is8) goto exactly1; - if (o == GOF(GPR1) && is8) goto exactly1; - if (o == GOF(GPR2) && is8) goto exactly1; - if (o == GOF(GPR3) && is8) goto exactly1; - if (o == GOF(GPR4) && is8) goto exactly1; - if (o == GOF(GPR5) && is8) goto exactly1; - if (o == GOF(GPR6) && is8) goto exactly1; - if (o == GOF(GPR7) && is8) goto exactly1; - if (o == GOF(GPR8) && is8) goto exactly1; - if (o == GOF(GPR9) && is8) goto exactly1; - if (o == GOF(GPR10) && is8) goto exactly1; - if (o == GOF(GPR11) && is8) goto exactly1; - if (o == GOF(GPR12) && is8) goto exactly1; - if (o == GOF(GPR13) && is8) goto exactly1; - if (o == GOF(GPR14) && is8) goto exactly1; - if (o == GOF(GPR15) && is8) goto exactly1; - if (o == GOF(GPR16) && is8) goto exactly1; - if (o == GOF(GPR17) && is8) goto exactly1; - if (o == GOF(GPR18) && is8) goto exactly1; - if (o == GOF(GPR19) && is8) goto exactly1; - if (o == GOF(GPR20) && is8) goto exactly1; - if (o == GOF(GPR21) && is8) goto exactly1; - if (o == GOF(GPR22) && is8) goto exactly1; - if (o == GOF(GPR23) && is8) goto exactly1; - if (o == GOF(GPR24) && is8) goto exactly1; - if (o == GOF(GPR25) && is8) goto exactly1; - if (o == GOF(GPR26) && is8) goto exactly1; - if (o == GOF(GPR27) && is8) goto exactly1; - if (o == GOF(GPR28) && is8) goto exactly1; - if (o == GOF(GPR29) && is8) goto exactly1; - if (o == GOF(GPR30) && is8) goto exactly1; - if (o == GOF(GPR31) && is8) goto exactly1; - - /* Misc integer reg and condition code accesses */ - if (o == GOF(LR) && is8) goto exactly1; - if (o == GOF(CTR) && is8) goto exactly1; - if (o == GOF(CIA) && is8) goto none; - if (o == GOF(IP_AT_SYSCALL) && is8) goto none; - if (o == GOF(TISTART) && is8) goto none; - if (o == GOF(TILEN) && is8) goto none; - if (o == GOF(REDIR_SP) && is8) goto none; - - if (sz == 1) { - if (o == GOF(XER_SO)) goto none; - if (o == GOF(XER_OV)) goto none; - if (o == GOF(XER_CA)) goto none; - if (o == GOF(XER_BC)) goto none; - if (o == GOF(CR0_321)) goto none; - if (o == GOF(CR0_0)) goto none; - if (o == GOF(CR1_321)) goto none; - if (o == GOF(CR1_0)) goto none; - if (o == GOF(CR2_321)) goto none; - if (o == GOF(CR2_0)) goto none; - if (o == GOF(CR3_321)) goto none; - if (o == GOF(CR3_0)) goto none; - if (o == GOF(CR4_321)) goto none; - if (o == GOF(CR4_0)) goto none; - if (o == GOF(CR5_321)) goto none; - if (o == GOF(CR5_0)) goto none; - if (o == GOF(CR6_321)) goto none; - if (o == GOF(CR6_0)) goto none; - if (o == GOF(CR7_321)) goto none; - if (o == GOF(CR7_0)) goto none; - } - - /* Exact accesses to FP registers */ - if (o == GOF(FPR0) && is8) goto none; - if (o == GOF(FPR1) && is8) goto none; - if (o == GOF(FPR2) && is8) goto none; - if (o == GOF(FPR3) && is8) goto none; - if (o == GOF(FPR4) && is8) goto none; - if (o == GOF(FPR5) && is8) goto none; - if (o == GOF(FPR6) && is8) goto none; - if (o == GOF(FPR7) && is8) goto none; - if (o == GOF(FPR8) && is8) goto none; - if (o == GOF(FPR9) && is8) goto none; - if (o == GOF(FPR10) && is8) goto none; - if (o == GOF(FPR11) && is8) goto none; - if (o == GOF(FPR12) && is8) goto none; - if (o == GOF(FPR13) && is8) goto none; - if (o == GOF(FPR14) && is8) goto none; - if (o == GOF(FPR15) && is8) goto none; - if (o == GOF(FPR16) && is8) goto none; - if (o == GOF(FPR17) && is8) goto none; - if (o == GOF(FPR18) && is8) goto none; - if (o == GOF(FPR19) && is8) goto none; - if (o == GOF(FPR20) && is8) goto none; - if (o == GOF(FPR21) && is8) goto none; - if (o == GOF(FPR22) && is8) goto none; - if (o == GOF(FPR23) && is8) goto none; - if (o == GOF(FPR24) && is8) goto none; - if (o == GOF(FPR25) && is8) goto none; - if (o == GOF(FPR26) && is8) goto none; - if (o == GOF(FPR27) && is8) goto none; - if (o == GOF(FPR28) && is8) goto none; - if (o == GOF(FPR29) && is8) goto none; - if (o == GOF(FPR30) && is8) goto none; - if (o == GOF(FPR31) && is8) goto none; - - /* FP admin related */ - if (o == GOF(FPROUND) && is4) goto none; - if (o == GOF(EMWARN) && is4) goto none; - - /* Altivec registers */ - if (o == GOF(VR0) && sz == 16) goto none; - if (o == GOF(VR1) && sz == 16) goto none; - if (o == GOF(VR2) && sz == 16) goto none; - if (o == GOF(VR3) && sz == 16) goto none; - if (o == GOF(VR4) && sz == 16) goto none; - if (o == GOF(VR5) && sz == 16) goto none; - if (o == GOF(VR6) && sz == 16) goto none; - if (o == GOF(VR7) && sz == 16) goto none; - if (o == GOF(VR8) && sz == 16) goto none; - if (o == GOF(VR9) && sz == 16) goto none; - if (o == GOF(VR10) && sz == 16) goto none; - if (o == GOF(VR11) && sz == 16) goto none; - if (o == GOF(VR12) && sz == 16) goto none; - if (o == GOF(VR13) && sz == 16) goto none; - if (o == GOF(VR14) && sz == 16) goto none; - if (o == GOF(VR15) && sz == 16) goto none; - if (o == GOF(VR16) && sz == 16) goto none; - if (o == GOF(VR17) && sz == 16) goto none; - if (o == GOF(VR18) && sz == 16) goto none; - if (o == GOF(VR19) && sz == 16) goto none; - if (o == GOF(VR20) && sz == 16) goto none; - if (o == GOF(VR21) && sz == 16) goto none; - if (o == GOF(VR22) && sz == 16) goto none; - if (o == GOF(VR23) && sz == 16) goto none; - if (o == GOF(VR24) && sz == 16) goto none; - if (o == GOF(VR25) && sz == 16) goto none; - if (o == GOF(VR26) && sz == 16) goto none; - if (o == GOF(VR27) && sz == 16) goto none; - if (o == GOF(VR28) && sz == 16) goto none; - if (o == GOF(VR29) && sz == 16) goto none; - if (o == GOF(VR30) && sz == 16) goto none; - if (o == GOF(VR31) && sz == 16) goto none; - - /* Altivec admin related */ - if (o == GOF(VRSAVE) && is4) goto none; - - VG_(printf)("get_IntRegInfo(ppc64):failing on (%d,%d)\n", o, sz); - tl_assert(0); -# undef GOF - - /* -------------------- arm -------------------- */ - -# elif defined(VGA_arm) - -# define GOF(_fieldname) \ - (offsetof(VexGuestARMState,guest_##_fieldname)) - - Int o = offset; - Int sz = szB; - Bool is4 = sz == 4; - Bool is8 = sz == 8; - - tl_assert(sz > 0); - tl_assert(host_is_big_endian()); - - /* Set default state to "does not intersect any int register". */ - VG_(memset)( iii, 0, sizeof(*iii) ); - - VG_(printf)("get_IntRegInfo(arm):failing on (%d,%d)\n", o, sz); - tl_assert(0); - - -# else -# error "FIXME: not implemented for this architecture" -# endif - - exactly1: - iii->n_offsets = -1; - return; - none: - iii->n_offsets = 0; - return; - contains_o: - tl_assert(o >= 0 && 0 == (o % sizeof(UWord))); - iii->n_offsets = 1; - iii->offsets[0] = o; - return; -} - - -/* Does 'arr' describe an indexed guest state section containing host - words, that we want to shadow? */ - -static Bool is_integer_guest_reg_array ( IRRegArray* arr ) -{ - /* --------------------- x86 --------------------- */ -# if defined(VGA_x86) - /* The x87 tag array. */ - if (arr->base == offsetof(VexGuestX86State,guest_FPTAG[0]) - && arr->elemTy == Ity_I8 && arr->nElems == 8) - return False; - /* The x87 register array. */ - if (arr->base == offsetof(VexGuestX86State,guest_FPREG[0]) - && arr->elemTy == Ity_F64 && arr->nElems == 8) - return False; - - VG_(printf)("is_integer_guest_reg_array(x86): unhandled: "); - ppIRRegArray(arr); - VG_(printf)("\n"); - tl_assert(0); - - /* -------------------- amd64 -------------------- */ -# elif defined(VGA_amd64) - /* The x87 tag array. */ - if (arr->base == offsetof(VexGuestAMD64State,guest_FPTAG[0]) - && arr->elemTy == Ity_I8 && arr->nElems == 8) - return False; - /* The x87 register array. */ - if (arr->base == offsetof(VexGuestAMD64State,guest_FPREG[0]) - && arr->elemTy == Ity_F64 && arr->nElems == 8) - return False; - - VG_(printf)("is_integer_guest_reg_array(amd64): unhandled: "); - ppIRRegArray(arr); - VG_(printf)("\n"); - tl_assert(0); - - /* -------------------- ppc32 -------------------- */ -# elif defined(VGA_ppc32) - /* The redir stack. */ - if (arr->base == offsetof(VexGuestPPC32State,guest_REDIR_STACK[0]) - && arr->elemTy == Ity_I32 - && arr->nElems == VEX_GUEST_PPC32_REDIR_STACK_SIZE) - return True; - - VG_(printf)("is_integer_guest_reg_array(ppc32): unhandled: "); - ppIRRegArray(arr); - VG_(printf)("\n"); - tl_assert(0); - - /* -------------------- ppc64 -------------------- */ -# elif defined(VGA_ppc64) - /* The redir stack. */ - if (arr->base == offsetof(VexGuestPPC64State,guest_REDIR_STACK[0]) - && arr->elemTy == Ity_I64 - && arr->nElems == VEX_GUEST_PPC64_REDIR_STACK_SIZE) - return True; - - VG_(printf)("is_integer_guest_reg_array(ppc64): unhandled: "); - ppIRRegArray(arr); - VG_(printf)("\n"); - tl_assert(0); - - /* -------------------- arm -------------------- */ -# elif defined(VGA_arm) - /* There are no rotating register sections on ARM. */ - VG_(printf)("is_integer_guest_reg_array(arm): unhandled: "); - ppIRRegArray(arr); - VG_(printf)("\n"); - tl_assert(0); - -# else -# error "FIXME: not implemented for this architecture" -# endif -} - - -// END move this uglyness to pc_machine.c - -/* returns True iff given slice exactly matches an int reg. Merely - a convenience wrapper around get_IntRegInfo. */ -static Bool is_integer_guest_reg ( Int offset, Int szB ) -{ - IntRegInfo iii; - get_IntRegInfo( &iii, offset, szB ); - tl_assert(iii.n_offsets >= -1 && iii.n_offsets <= N_INTREGINFO_OFFSETS); - return iii.n_offsets == -1; -} - -/* these assume guest and host have the same endianness and - word size (probably). */ -static UWord get_guest_intreg ( ThreadId tid, Int shadowNo, - PtrdiffT offset, SizeT size ) -{ - UChar tmp[ 2 + sizeof(UWord) ]; - tl_assert(size == sizeof(UWord)); - tl_assert(0 == (offset % sizeof(UWord))); - VG_(memset)(tmp, 0, sizeof(tmp)); - tmp[0] = 0x31; - tmp[ sizeof(tmp)-1 ] = 0x27; - VG_(get_shadow_regs_area)(tid, &tmp[1], shadowNo, offset, size); - tl_assert(tmp[0] == 0x31); - tl_assert(tmp[ sizeof(tmp)-1 ] == 0x27); - return * ((UWord*) &tmp[1] ); /* MISALIGNED LOAD */ -} -static void put_guest_intreg ( ThreadId tid, Int shadowNo, - PtrdiffT offset, SizeT size, UWord w ) -{ - tl_assert(size == sizeof(UWord)); - tl_assert(0 == (offset % sizeof(UWord))); - VG_(set_shadow_regs_area)(tid, shadowNo, offset, size, - (const UChar*)&w); -} - -/* Initialise the integer shadow registers to UNKNOWN. This is a bit - of a nasty kludge, but it does mean we don't need to know which - registers we really need to initialise -- simply assume that all - integer registers will be naturally aligned w.r.t. the start of the - guest state, and fill in all possible entries. */ -static void init_shadow_registers ( ThreadId tid ) -{ - Int i, wordSzB = sizeof(UWord); - for (i = 0; i < PC_SIZEOF_GUEST_STATE-wordSzB; i += wordSzB) { - put_guest_intreg( tid, 1, i, wordSzB, (UWord)UNKNOWN ); - } -} - -static void post_reg_write_nonptr ( ThreadId tid, PtrdiffT offset, SizeT size ) -{ - // syscall_return: Default is non-pointer. If it really is a pointer - // (eg. for mmap()), SK_(post_syscall) sets it again afterwards. - // - // clientreq_return: All the global client requests return non-pointers - // (except possibly CLIENT_CALL[0123], but they're handled by - // post_reg_write_clientcall, not here). - // - if (is_integer_guest_reg( (Int)offset, (Int)size )) { - put_guest_intreg( tid, 1, offset, size, (UWord)NONPTR ); - } - else - if (size == 1 || size == 2) { - /* can't possibly be an integer guest reg. Ignore. */ - } - else { - // DDD: on Darwin, this assertion fails because we currently do a - // 'post_reg_write' on the 'guest_CC_DEP1' pseudo-register. - // JRS 2009July13: we should change is_integer_guest_reg() - // to accept guest_CC_DEP* and guest_CC_NDEP - // as legitimate pointer-holding registers - tl_assert(0); - } - // VG_(set_thread_shadow_archreg)( tid, reg, (UInt)NONPTR ); -} - -static void post_reg_write_nonptr_or_unknown ( ThreadId tid, - PtrdiffT offset, SizeT size ) -{ - // deliver_signal: called from two places; one sets the reg to zero, the - // other sets the stack pointer. - // - if (is_integer_guest_reg( (Int)offset, (Int)size )) { - put_guest_intreg( - tid, 1/*shadowno*/, offset, size, - (UWord)nonptr_or_unknown( - get_guest_intreg( tid, 0/*shadowno*/, - offset, size ))); - } else { - tl_assert(0); - } -} - -void h_post_reg_write_demux ( CorePart part, ThreadId tid, - PtrdiffT guest_state_offset, SizeT size) -{ - if (0) - VG_(printf)("post_reg_write_demux: tid %d part %d off %ld size %ld\n", - (Int)tid, (Int)part, - guest_state_offset, size); - switch (part) { - case Vg_CoreStartup: - /* This is a bit of a kludge since for any Vg_CoreStartup - event we overwrite the entire shadow register set. But - that's ok - we're only called once with - part==Vg_CoreStartup event, and in that case the supplied - offset & size cover the entire guest state anyway. */ - init_shadow_registers(tid); - break; - case Vg_CoreSysCall: - if (0) VG_(printf)("ZZZZZZZ p_r_w -> NONPTR\n"); - post_reg_write_nonptr( tid, guest_state_offset, size ); - break; - case Vg_CoreClientReq: - post_reg_write_nonptr( tid, guest_state_offset, size ); - break; - case Vg_CoreSignal: - post_reg_write_nonptr_or_unknown( tid, guest_state_offset, size ); - break; - default: - tl_assert(0); - } -} - -void h_post_reg_write_clientcall(ThreadId tid, PtrdiffT guest_state_offset, - SizeT size, Addr f ) -{ - UWord p; - - // Having to do this is a bit nasty... - if (f == (Addr)h_replace_malloc - || f == (Addr)h_replace___builtin_new - || f == (Addr)h_replace___builtin_vec_new - || f == (Addr)h_replace_calloc - || f == (Addr)h_replace_memalign - || f == (Addr)h_replace_realloc) - { - // We remembered the last added segment; make sure it's the right one. - /* What's going on: at this point, the scheduler has just called - 'f' -- one of our malloc replacement functions -- and it has - returned. The return value has been written to the guest - state of thread 'tid', offset 'guest_state_offset' length - 'size'. We need to look at that return value and set the - shadow return value accordingly. The shadow return value - required is handed to us "under the counter" through the - global variable 'last_seg_added'. This is all very ugly, not - to mention, non-thread-safe should V ever become - multithreaded. */ - /* assert the place where the return value is is a legit int reg */ - tl_assert(is_integer_guest_reg(guest_state_offset, size)); - /* Now we need to look at the returned value, to see whether the - malloc succeeded or not. */ - p = get_guest_intreg(tid, 0/*non-shadow*/, guest_state_offset, size); - if ((UWord)NULL == p) { - // if alloc failed, eg. realloc on bogus pointer - put_guest_intreg(tid, 1/*first-shadow*/, - guest_state_offset, size, (UWord)NONPTR ); - } else { - // alloc didn't fail. Check we have the correct segment. - tl_assert(p == last_seg_added->addr); - put_guest_intreg(tid, 1/*first-shadow*/, - guest_state_offset, size, (UWord)last_seg_added ); - } - } - else if (f == (Addr)h_replace_free - || f == (Addr)h_replace___builtin_delete - || f == (Addr)h_replace___builtin_vec_delete - // || f == (Addr)VG_(cli_block_size) - || f == (Addr)VG_(message)) - { - // Probably best to set the (non-existent!) return value to - // non-pointer. - tl_assert(is_integer_guest_reg(guest_state_offset, size)); - put_guest_intreg(tid, 1/*first-shadow*/, - guest_state_offset, size, (UWord)NONPTR ); - } - else { - // Anything else, probably best to set return value to non-pointer. - //VG_(set_thread_shadow_archreg)(tid, reg, (UInt)UNKNOWN); - Char fbuf[100]; - VG_(printf)("f = %#lx\n", f); - VG_(get_fnname)(f, fbuf, 100); - VG_(printf)("name = %s\n", fbuf); - VG_(tool_panic)("argh: clientcall"); - } -} - - -//zz /*--------------------------------------------------------------------*/ -//zz /*--- Sanity checking ---*/ -//zz /*--------------------------------------------------------------------*/ -//zz -//zz /* Check that nobody has spuriously claimed that the first or last 16 -//zz pages (64 KB) of address space have become accessible. Failure of -//zz the following do not per se indicate an internal consistency -//zz problem, but they are so likely to that we really want to know -//zz about it if so. */ -//zz Bool pc_replace_cheap_sanity_check) ( void ) -//zz { -//zz if (IS_DISTINGUISHED_SM(primary_map[0]) -//zz /* kludge: kernel drops a page up at top of address range for -//zz magic "optimized syscalls", so we can no longer check the -//zz highest page */ -//zz /* && IS_DISTINGUISHED_SM(primary_map[65535]) */ -//zz ) -//zz return True; -//zz else -//zz return False; -//zz } -//zz -//zz Bool SK_(expensive_sanity_check) ( void ) -//zz { -//zz Int i; -//zz -//zz /* Make sure nobody changed the distinguished secondary. */ -//zz for (i = 0; i < SEC_MAP_WORDS; i++) -//zz if (distinguished_secondary_map.vseg[i] != UNKNOWN) -//zz return False; -//zz -//zz return True; -//zz } - - -/*--------------------------------------------------------------------*/ -/*--- System calls ---*/ -/*--------------------------------------------------------------------*/ - -void h_pre_syscall ( ThreadId tid, UInt sysno, - UWord* args, UInt nArgs ) -{ - /* we don't do anything at the pre-syscall point */ -} - -/* The post-syscall table is a table of pairs (number, flag). - - 'flag' is only ever zero or one. If it is zero, it indicates that - default handling for that syscall is required -- namely that the - syscall is deemed to return NONPTR. This is the case for the vast - majority of syscalls. If it is one then some special - syscall-specific handling is is required. No further details of it - are stored in the table. - - On Linux and Darwin, 'number' is a __NR_xxx constant. - - On AIX5, 'number' is an Int*, which points to the Int variable - holding the currently assigned number for this syscall. - - When querying the table, we compare the supplied syscall number - with the 'number' field (directly on Linux and Darwin, after - dereferencing on AIX5), to find the relevant entry. This requires a - linear search of the table. To stop the costs getting too high, the - table is incrementally rearranged after each search, to move commonly - requested items a bit closer to the front. - - The table is built once, the first time it is used. After that we - merely query it (and reorder the entries as a result). */ - -static XArray* /* of UWordPair */ post_syscall_table = NULL; - -static void setup_post_syscall_table ( void ) -{ - tl_assert(!post_syscall_table); - post_syscall_table = VG_(newXA)( VG_(malloc), "pc.h_main.spst.1", - VG_(free), sizeof(UWordPair) ); - tl_assert(post_syscall_table); - - /* --------------- LINUX --------------- */ - -# if defined(VGO_linux) - -# define ADD(_flag, _syscallname) \ - do { UWordPair p; p.uw1 = (_syscallname); p.uw2 = (_flag); \ - VG_(addToXA)( post_syscall_table, &p ); \ - } while (0) - - /* These ones definitely don't return pointers. They're not - particularly grammatical, either. */ - -# if defined(__NR__llseek) - ADD(0, __NR__llseek); -# endif - ADD(0, __NR__sysctl); -# if defined(__NR__newselect) - ADD(0, __NR__newselect); -# endif -# if defined(__NR_accept) - ADD(0, __NR_accept); -# endif - ADD(0, __NR_access); - ADD(0, __NR_alarm); -# if defined(__NR_bind) - ADD(0, __NR_bind); -# endif -# if defined(__NR_chdir) - ADD(0, __NR_chdir); -# endif - ADD(0, __NR_chmod); - ADD(0, __NR_chown); -# if defined(__NR_chown32) - ADD(0, __NR_chown32); -# endif - ADD(0, __NR_clock_getres); - ADD(0, __NR_clock_gettime); - ADD(0, __NR_clone); - ADD(0, __NR_close); -# if defined(__NR_connect) - ADD(0, __NR_connect); -# endif - ADD(0, __NR_creat); - ADD(0, __NR_dup); - ADD(0, __NR_dup2); - ADD(0, __NR_epoll_create); -# if defined(__NR_epoll_create1) - ADD(0, __NR_epoll_create1); -# endif - ADD(0, __NR_epoll_ctl); -# if defined(__NR_epoll_pwait) - ADD(0, __NR_epoll_pwait); -# endif - ADD(0, __NR_epoll_wait); - ADD(0, __NR_execve); /* presumably we see this because the call failed? */ - ADD(0, __NR_exit); /* hmm, why are we still alive? */ - ADD(0, __NR_exit_group); - ADD(0, __NR_fadvise64); - ADD(0, __NR_fallocate); - ADD(0, __NR_fchmod); - ADD(0, __NR_fchown); -# if defined(__NR_fchown32) - ADD(0, __NR_fchown32); -# endif - ADD(0, __NR_fcntl); -# if defined(__NR_fcntl64) - ADD(0, __NR_fcntl64); -# endif - ADD(0, __NR_fdatasync); - ADD(0, __NR_flock); - ADD(0, __NR_fstat); -# if defined(__NR_fstat64) - ADD(0, __NR_fstat64); -# endif - ADD(0, __NR_fstatfs); - # if defined(__NR_fstatfs64) - ADD(0, __NR_fstatfs64); -# endif - ADD(0, __NR_fsync); - ADD(0, __NR_ftruncate); -# if defined(__NR_ftruncate64) - ADD(0, __NR_ftruncate64); -# endif - ADD(0, __NR_futex); - ADD(0, __NR_getcwd); - ADD(0, __NR_getdents); // something to do with teeth - ADD(0, __NR_getdents64); - ADD(0, __NR_getegid); -# if defined(__NR_getegid32) - ADD(0, __NR_getegid32); -# endif - ADD(0, __NR_geteuid); -# if defined(__NR_geteuid32) - ADD(0, __NR_geteuid32); -# endif - ADD(0, __NR_getgid); -# if defined(__NR_getgid32) - ADD(0, __NR_getgid32); -# endif - ADD(0, __NR_getgroups); -# if defined(__NR_getgroups32) - ADD(0, __NR_getgroups32); -# endif - ADD(0, __NR_getitimer); -# if defined(__NR_getpeername) - ADD(0, __NR_getpeername); -# endif - ADD(0, __NR_getpid); - ADD(0, __NR_getpgrp); - ADD(0, __NR_getppid); - ADD(0, __NR_getpriority); - ADD(0, __NR_getresgid); -# if defined(__NR_getresgid32) - ADD(0, __NR_getresgid32); -# endif - ADD(0, __NR_getresuid); -# if defined(__NR_getresuid32) - ADD(0, __NR_getresuid32); -# endif - ADD(0, __NR_getrlimit); - ADD(0, __NR_getrusage); - ADD(0, __NR_getsid); -# if defined(__NR_getsockname) - ADD(0, __NR_getsockname); -# endif -# if defined(__NR_getsockopt) - ADD(0, __NR_getsockopt); -# endif - ADD(0, __NR_gettid); - ADD(0, __NR_gettimeofday); - ADD(0, __NR_getuid); -# if defined(__NR_getuid32) - ADD(0, __NR_getuid32); -# endif - ADD(0, __NR_getxattr); -# if defined(__NR_ioperm) - ADD(0, __NR_ioperm); -# endif - ADD(0, __NR_inotify_add_watch); - ADD(0, __NR_inotify_init); -# if defined(__NR_inotify_init1) - ADD(0, __NR_inotify_init1); -# endif - ADD(0, __NR_inotify_rm_watch); - ADD(0, __NR_ioctl); // ioctl -- assuming no pointers returned - ADD(0, __NR_ioprio_get); - ADD(0, __NR_kill); - ADD(0, __NR_link); -# if defined(__NR_listen) - ADD(0, __NR_listen); -# endif - ADD(0, __NR_lseek); - ADD(0, __NR_lstat); -# if defined(__NR_lstat64) - ADD(0, __NR_lstat64); -# endif - ADD(0, __NR_madvise); - ADD(0, __NR_mkdir); - ADD(0, __NR_mlock); - ADD(0, __NR_mlockall); - ADD(0, __NR_mprotect); - ADD(0, __NR_munmap); // die_mem_munmap already called, segment remove); - ADD(0, __NR_nanosleep); - ADD(0, __NR_open); - ADD(0, __NR_personality); - ADD(0, __NR_pipe); -# if defined(__NR_pipe2) - ADD(0, __NR_pipe2); -# endif - ADD(0, __NR_poll); - ADD(0, __NR_prctl); - ADD(0, __NR_pread64); - ADD(0, __NR_pwrite64); - ADD(0, __NR_read); - ADD(0, __NR_readlink); - ADD(0, __NR_readv); -# if defined(__NR_recvfrom) - ADD(0, __NR_recvfrom); -# endif -# if defined(__NR_recvmsg) - ADD(0, __NR_recvmsg); -# endif - ADD(0, __NR_rename); - ADD(0, __NR_rmdir); - ADD(0, __NR_rt_sigaction); - ADD(0, __NR_rt_sigprocmask); - ADD(0, __NR_rt_sigreturn); /* not sure if we should see this or not */ - ADD(0, __NR_rt_sigsuspend); - ADD(0, __NR_rt_sigtimedwait); - ADD(0, __NR_sched_get_priority_max); - ADD(0, __NR_sched_get_priority_min); - ADD(0, __NR_sched_getaffinity); - ADD(0, __NR_sched_getparam); - ADD(0, __NR_sched_getscheduler); - ADD(0, __NR_sched_setaffinity); - ADD(0, __NR_sched_setscheduler); - ADD(0, __NR_sched_yield); - ADD(0, __NR_select); -# if defined(__NR_semctl) - ADD(0, __NR_semctl); -# endif -# if defined(__NR_semget) - ADD(0, __NR_semget); -# endif -# if defined(__NR_semop) - ADD(0, __NR_semop); -# endif - ADD(0, __NR_sendfile); -# if defined(__NR_sendto) - ADD(0, __NR_sendto); -# endif -# if defined(__NR_sendmsg) - ADD(0, __NR_sendmsg); -# endif - ADD(0, __NR_set_robust_list); -# if defined(__NR_set_thread_area) - ADD(0, __NR_set_thread_area); -# endif - ADD(0, __NR_set_tid_address); - ADD(0, __NR_setgid); - ADD(0, __NR_setfsgid); - ADD(0, __NR_setfsuid); - ADD(0, __NR_setgid); - ADD(0, __NR_setgroups); - ADD(0, __NR_setitimer); - ADD(0, __NR_setpgid); - ADD(0, __NR_setpriority); - ADD(0, __NR_setregid); - ADD(0, __NR_setresgid); - ADD(0, __NR_setresuid); - ADD(0, __NR_setreuid); - ADD(0, __NR_setrlimit); - ADD(0, __NR_setsid); -# if defined(__NR_setsockopt) - ADD(0, __NR_setsockopt); -# endif - ADD(0, __NR_setuid); -# if defined(__NR_shmctl) - ADD(0, __NR_shmctl); - ADD(0, __NR_shmdt); -# endif -# if defined(__NR_shutdown) - ADD(0, __NR_shutdown); -# endif - ADD(0, __NR_sigaltstack); -# if defined(__NR_socket) - ADD(0, __NR_socket); -# endif -# if defined(__NR_socketcall) - ADD(0, __NR_socketcall); /* the nasty x86-linux socket multiplexor */ -# endif -# if defined(__NR_socketpair) - ADD(0, __NR_socketpair); -# endif -# if defined(__NR_statfs64) - ADD(0, __NR_statfs64); -# endif -# if defined(__NR_sigreturn) - ADD(0, __NR_sigreturn); /* not sure if we should see this or not */ -# endif -# if defined(__NR_stat64) - ADD(0, __NR_stat64); -# endif - ADD(0, __NR_stat); - ADD(0, __NR_statfs); - ADD(0, __NR_symlink); - ADD(0, __NR_sysinfo); - ADD(0, __NR_tgkill); - ADD(0, __NR_time); - ADD(0, __NR_times); - ADD(0, __NR_truncate); -# if defined(__NR_truncate64) - ADD(0, __NR_truncate64); -# endif -# if defined(__NR_ugetrlimit) - ADD(0, __NR_ugetrlimit); -# endif - ADD(0, __NR_umask); - ADD(0, __NR_uname); - ADD(0, __NR_unlink); - ADD(0, __NR_utime); - ADD(0, __NR_vfork); -# if defined(__NR_waitpid) - ADD(0, __NR_waitpid); -# endif - ADD(0, __NR_wait4); - ADD(0, __NR_write); - ADD(0, __NR_writev); - - /* Whereas the following need special treatment */ -# if defined(__NR_arch_prctl) - ADD(1, __NR_arch_prctl); -# endif - ADD(1, __NR_brk); - ADD(1, __NR_mmap); -# if defined(__NR_mmap2) - ADD(1, __NR_mmap2); -# endif -# if defined(__NR_shmat) - ADD(1, __NR_shmat); -# endif -# if defined(__NR_shmget) - ADD(1, __NR_shmget); -# endif -# if defined(__NR_ipc) && defined(VKI_SHMAT) - ADD(1, __NR_ipc); /* ppc{32,64}-linux horrors */ -# endif - - /* --------------- AIX5 --------------- */ - -# elif defined(VGO_aix5) - -# define ADD(_flag, _syscallname) \ - do { \ - UWordPair p; \ - if ((_syscallname) != __NR_AIX5_UNKNOWN) { \ - p.uw1 = (UWord)&(_syscallname); p.uw2 = (_flag); \ - VG_(addToXA)( post_syscall_table, &p ); \ - } \ - } while (0) - - /* Just a minimal set of handlers, enough to make - a 32- and 64-bit hello-world program run. */ - ADD(1, __NR_AIX5___loadx); /* not sure what to do here */ - ADD(0, __NR_AIX5__exit); - ADD(0, __NR_AIX5_access); - ADD(0, __NR_AIX5_getgidx); - ADD(0, __NR_AIX5_getuidx); - ADD(0, __NR_AIX5_kfcntl); - ADD(0, __NR_AIX5_kioctl); - ADD(1, __NR_AIX5_kload); /* not sure what to do here */ - ADD(0, __NR_AIX5_kwrite); - - /* --------------- DARWIN ------------- */ - -# elif defined(VGO_darwin) - -# define ADD(_flag, _syscallname) \ - do { UWordPair p; p.uw1 = (_syscallname); p.uw2 = (_flag); \ - VG_(addToXA)( post_syscall_table, &p ); \ - } while (0) - - // DDD: a desultory attempt thus far... - - // Unix/BSD syscalls. - - // Mach traps. - ADD(0, __NR_host_self_trap); - ADD(0, __NR_mach_msg_trap); - ADD(0, __NR_mach_reply_port); - ADD(0, __NR_task_self_trap); - - // Machine-dependent syscalls. - ADD(0, __NR_thread_fast_set_cthread_self); - - /* ------------------------------------ */ - -# else -# error "Unsupported OS" -# endif - -# undef ADD -} - - -void h_post_syscall ( ThreadId tid, UInt sysno, - UWord* args, UInt nArgs, SysRes res ) -{ - Word i, n; - UWordPair* pair; - - if (!post_syscall_table) - setup_post_syscall_table(); - - /* search for 'sysno' in the post_syscall_table */ - n = VG_(sizeXA)( post_syscall_table ); - for (i = 0; i < n; i++) { - pair = VG_(indexXA)( post_syscall_table, i ); -# if defined(VGO_linux) || defined(VGO_darwin) - if (pair->uw1 == (UWord)sysno) - break; -# elif defined(VGO_aix5) - if (*(Int*)(pair->uw1) == (Int)sysno) - break; -# else -# error "Unsupported OS" -# endif - } - - tl_assert(i >= 0 && i <= n); - - if (i == n) { - VG_(printf)("sysno == %s", VG_SYSNUM_STRING_EXTRA(sysno)); - VG_(tool_panic)("unhandled syscall"); - } - - /* So we found the relevant entry. Move it one step - forward so as to speed future accesses to it. */ - if (i > 0) { - UWordPair tmp, *p, *q; - p = VG_(indexXA)( post_syscall_table, i-1 ); - q = VG_(indexXA)( post_syscall_table, i-0 ); - tmp = *p; - *p = *q; - *q = tmp; - i--; - } - - /* Deal with the common case */ - pair = VG_(indexXA)( post_syscall_table, i ); - if (pair->uw2 == 0) - /* the common case */ - goto res_NONPTR_err_NONPTR; - - /* Special handling for all remaining cases */ - tl_assert(pair->uw2 == 1); - -# if defined(__NR_arch_prctl) - if (sysno == __NR_arch_prctl) { - /* This is nasty. On amd64-linux, arch_prctl may write a - value to guest_FS_ZERO, and we need to shadow that value. - Hence apply nonptr_or_unknown to it here, after the - syscall completes. */ - post_reg_write_nonptr_or_unknown( tid, PC_OFF_FS_ZERO, - PC_SZB_FS_ZERO ); - goto res_NONPTR_err_NONPTR; - } -# endif - -# if defined(__NR_brk) - // With brk(), result (of kernel syscall, not glibc wrapper) is a heap - // pointer. Make the shadow UNKNOWN. - if (sysno == __NR_brk) - goto res_UNKNOWN_err_NONPTR; -# endif - - // With mmap, new_mem_mmap() has already been called and added the - // segment (we did it there because we had the result address and size - // handy). So just set the return value shadow. - if (sysno == __NR_mmap -# if defined(__NR_mmap2) - || sysno == __NR_mmap2 -# endif -# if defined(__NR_AIX5___loadx) - || (sysno == __NR_AIX5___loadx && __NR_AIX5___loadx != __NR_AIX5_UNKNOWN) -# endif -# if defined(__NR_AIX5_kload) - || (sysno == __NR_AIX5_kload && __NR_AIX5_kload != __NR_AIX5_UNKNOWN) -# endif - ) { - if (sr_isError(res)) { - // mmap() had an error, return value is a small negative integer - goto res_NONPTR_err_NONPTR; - } else { - goto res_UNKNOWN_err_NONPTR; - } - return; - } - - // shmat uses the same scheme. We will just have had a - // notification via new_mem_mmap. Just set the return value shadow. -# if defined(__NR_shmat) - if (sysno == __NR_shmat) { - if (sr_isError(res)) { - goto res_NONPTR_err_NONPTR; - } else { - goto res_UNKNOWN_err_NONPTR; - } - } -# endif - -# if defined(__NR_shmget) - if (sysno == __NR_shmget) - // FIXME: is this correct? - goto res_UNKNOWN_err_NONPTR; -# endif - -# if defined(__NR_ipc) && defined(VKI_SHMAT) - /* perhaps this should be further conditionalised with - && (defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) - Note, this just copies the behaviour of __NR_shmget above. - - JRS 2009 June 02: it seems that the return value from - sys_ipc(VKI_SHMAT, ...) doesn't have much relationship to the - result returned by the originating user-level shmat call. It's - different (and much lower) by a large but integral number of - pages. I don't have time to chase this right now. Observed on - ppc{32,64}-linux. Result appears to be false errors from apps - using shmat. Confusion though -- shouldn't be related to the - actual numeric values returned by the syscall, though, should - it? Confused. Maybe some bad interaction with a - nonpointer-or-unknown heuristic? */ - if (sysno == __NR_ipc) { - if (args[0] == VKI_SHMAT) { - goto res_UNKNOWN_err_NONPTR; - } else { - goto res_NONPTR_err_NONPTR; - } - } -# endif - - /* If we get here, it implies the corresponding entry in - post_syscall_table has .w2 == 1, which in turn implies there - should be special-case code for it above. */ - tl_assert(0); - - res_NONPTR_err_NONPTR: - VG_(set_syscall_return_shadows)( tid, /* retval */ (UWord)NONPTR, 0, - /* error */ (UWord)NONPTR, 0 ); - return; - - res_UNKNOWN_err_NONPTR: - VG_(set_syscall_return_shadows)( tid, /* retval */ (UWord)UNKNOWN, 0, - /* error */ (UWord)NONPTR, 0 ); - return; -} - - -/*--------------------------------------------------------------------*/ -/*--- Functions called from generated code ---*/ -/*--------------------------------------------------------------------*/ - -#if SC_SEGS -static void checkSeg ( Seg vseg ) { - tl_assert(vseg == UNKNOWN || vseg == NONPTR || vseg == BOTTOM - || Seg__plausible(vseg) ); -} -#endif - -// XXX: could be more sophisticated -- actually track the lowest/highest -// valid address used by the program, and then return False for anything -// below that (using a suitable safety margin). Also, nothing above -// 0xc0000000 is valid [unless you've changed that in your kernel] -static inline Bool looks_like_a_pointer(Addr a) -{ -# if defined(VGA_x86) || defined(VGA_ppc32) - tl_assert(sizeof(UWord) == 4); - return (a > 0x01000000UL && a < 0xFF000000UL); - -# elif defined(VGA_amd64) || defined(VGA_ppc64) - tl_assert(sizeof(UWord) == 8); - return (a >= 16 * 0x10000UL && a < 0xFF00000000000000UL); - -# elif defined(VGA_arm) - /* Unfortunately arm-linux seems to load the exe at very low, at - 0x8000, so we have to assume any value above that is a pointer, - which is pretty dismal. */ - tl_assert(sizeof(UWord) == 4); - return (a >= 0x00008000UL && a < 0xFF000000UL); - -# else -# error "Unsupported architecture" -# endif -} - -static inline VG_REGPARM(1) -Seg* nonptr_or_unknown(UWord x) -{ - Seg* res = looks_like_a_pointer(x) ? UNKNOWN : NONPTR; - if (0) VG_(printf)("nonptr_or_unknown %s %#lx\n", - res==UNKNOWN ? "UUU" : "nnn", x); - return res; -} - -//zz static __attribute__((regparm(1))) -//zz void print_BB_entry(UInt bb) -//zz { -//zz VG_(printf)("%u =\n", bb); -//zz } - -//static ULong stats__tot_mem_refs = 0; -//static ULong stats__refs_in_a_seg = 0; -//static ULong stats__refs_lost_seg = 0; - -typedef - struct { ExeContext* ec; UWord count; } - Lossage; - -static OSet* lossage = NULL; - -//static void inc_lossage ( ExeContext* ec ) -//{ -// Lossage key, *res, *nyu; -// key.ec = ec; -// key.count = 0; /* frivolous */ -// res = VG_(OSetGen_Lookup)(lossage, &key); -// if (res) { -// tl_assert(res->ec == ec); -// res->count++; -// } else { -// nyu = (Lossage*)VG_(OSetGen_AllocNode)(lossage, sizeof(Lossage)); -// tl_assert(nyu); -// nyu->ec = ec; -// nyu->count = 1; -// VG_(OSetGen_Insert)( lossage, nyu ); -// } -//} - -static void init_lossage ( void ) -{ - lossage = VG_(OSetGen_Create)( /*keyOff*/ offsetof(Lossage,ec), - /*fastCmp*/NULL, - VG_(malloc), "pc.h_main.il.1", - VG_(free) ); - tl_assert(lossage); -} - -//static void show_lossage ( void ) -//{ -// Lossage* elem; -// VG_(OSetGen_ResetIter)( lossage ); -// while ( (elem = VG_(OSetGen_Next)(lossage)) ) { -// if (elem->count < 10) continue; -// //Char buf[100]; -// //(void)VG_(describe_IP)(elem->ec, buf, sizeof(buf)-1); -// //buf[sizeof(buf)-1] = 0; -// //VG_(printf)(" %,8lu %s\n", elem->count, buf); -// VG_(message)(Vg_UserMsg, "Lossage count %'lu at", elem->count); -// VG_(pp_ExeContext)(elem->ec); -// } -//} - -// This function is called *a lot*; inlining it sped up Konqueror by 20%. -static inline -void check_load_or_store(Bool is_write, Addr m, UWord sz, Seg* mptr_vseg) -{ -#if 0 - tl_assert(0); - if (h_clo_lossage_check) { - Seg* seg; - stats__tot_mem_refs++; - if (ISList__findI0( seglist, (Addr)m, &seg )) { - /* m falls inside 'seg' (that is, we are making a memory - reference inside 'seg'). Now, really mptr_vseg should be - a tracked segment of some description. Badness is when - mptr_vseg is UNKNOWN, BOTTOM or NONPTR at this point, - since that means we've lost the type of it somehow: it - shoud say that m points into a real segment (preferable - 'seg'), but it doesn't. */ - if (Seg__status_is_SegHeap(seg)) { - stats__refs_in_a_seg++; - if (UNKNOWN == mptr_vseg - || BOTTOM == mptr_vseg || NONPTR == mptr_vseg) { - ExeContext* ec; - Char buf[100]; - static UWord xx = 0; - stats__refs_lost_seg++; - ec = VG_(record_ExeContext)( VG_(get_running_tid)(), 0 ); - inc_lossage(ec); - if (0) { - VG_(message)(Vg_DebugMsg, ""); - VG_(message)(Vg_DebugMsg, - "Lossage %s %#lx sz %lu inside block alloc'd", - is_write ? "wr" : "rd", m, (UWord)sz); - VG_(pp_ExeContext)(Seg__where(seg)); - } - if (xx++ < 0) { - Addr ip = VG_(get_IP)( VG_(get_running_tid)() ); - (void)VG_(describe_IP)( ip, buf, sizeof(buf)-1); - buf[sizeof(buf)-1] = 0; - VG_(printf)("lossage at %p %s\n", ec, buf ); - } - } - } - } - } /* clo_lossage_check */ -#endif - -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - - if (UNKNOWN == mptr_vseg) { - // do nothing - - } else if (BOTTOM == mptr_vseg) { - // do nothing - - } else if (NONPTR == mptr_vseg) { - h_record_heap_error( m, sz, mptr_vseg, is_write ); - - } else { - // check all segment ranges in the circle - // if none match, warn about 1st seg - // else, check matching one isn't freed - Bool is_ok = False; - Seg* curr = mptr_vseg; - Addr mhi; - - // Accesses partly outside range are an error, unless it's an aligned - // word-sized read, and --partial-loads-ok=yes. This is to cope with - // gcc's/glibc's habits of doing word-sized accesses that read past - // the ends of arrays/strings. - // JRS 2008-sept-11: couldn't this be moved off the critical path? - if (!is_write && sz == sizeof(UWord) - && h_clo_partial_loads_ok && SHMEM_IS_WORD_ALIGNED(m)) { - mhi = m; - } else { - mhi = m+sz-1; - } - - if (0) VG_(printf)("calling seg_ci %p %#lx %#lx\n", curr,m,mhi); - is_ok = curr->addr <= m && mhi < curr->addr + curr->szB; - - // If it's an overrun/underrun of a freed block, don't give both - // warnings, since the first one mentions that the block has been - // freed. - if ( ! is_ok || Seg__is_freed(curr) ) - h_record_heap_error( m, sz, mptr_vseg, is_write ); - } -} - -// ------------------ Load handlers ------------------ // - -/* On 32 bit targets, we will use: - check_load1 check_load2 check_load4_P - check_load4 (for 32-bit FP reads) - check_load8 (for 64-bit FP reads) - check_load16 (for xmm/altivec reads) - On 64 bit targets, we will use: - check_load1 check_load2 check_load4 check_load8_P - check_load8 (for 64-bit FP reads) - check_load16 (for xmm/altivec reads) - - A "_P" handler reads a pointer from memory, and so returns a value - to the generated code -- the pointer's shadow value. That implies - that check_load4_P is only to be called on a 32 bit host and - check_load8_P is only to be called on a 64 bit host. For all other - cases no shadow value is returned; we merely check that the pointer - (m) matches the block described by its shadow value (mptr_vseg). -*/ - -// This handles 128 bit loads on both 32 bit and 64 bit targets. -static VG_REGPARM(2) -void check_load16(Addr m, Seg* mptr_vseg) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 16, mptr_vseg); -} - -// This handles 64 bit FP-or-otherwise-nonpointer loads on both -// 32 bit and 64 bit targets. -static VG_REGPARM(2) -void check_load8(Addr m, Seg* mptr_vseg) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 8, mptr_vseg); -} - -// This handles 64 bit loads on 64 bit targets. It must -// not be called on 32 bit targets. -// return m.vseg -static VG_REGPARM(2) -Seg* check_load8_P(Addr m, Seg* mptr_vseg) -{ - Seg* vseg; - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 8, mptr_vseg); - if (VG_IS_8_ALIGNED(m)) { - vseg = get_mem_vseg(m); - } else { - vseg = nonptr_or_unknown( *(ULong*)m ); - } - return vseg; -} - -// This handles 32 bit loads on 32 bit targets. It must -// not be called on 64 bit targets. -// return m.vseg -static VG_REGPARM(2) -Seg* check_load4_P(Addr m, Seg* mptr_vseg) -{ - Seg* vseg; - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 4, mptr_vseg); - if (VG_IS_4_ALIGNED(m)) { - vseg = get_mem_vseg(m); - } else { - vseg = nonptr_or_unknown( *(UInt*)m ); - } - return vseg; -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(2) -void check_load4(Addr m, Seg* mptr_vseg) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 4, mptr_vseg); -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(2) -void check_load2(Addr m, Seg* mptr_vseg) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 2, mptr_vseg); -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(2) -void check_load1(Addr m, Seg* mptr_vseg) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/False, m, 1, mptr_vseg); -} - -// ------------------ Store handlers ------------------ // - -/* On 32 bit targets, we will use: - check_store1 check_store2 check_store4_P check_store4C_P - check_store4 (for 32-bit nonpointer stores) - check_store8_ms4B_ls4B (for 64-bit stores) - check_store16_ms4B_4B_4B_ls4B (for xmm/altivec stores) - - On 64 bit targets, we will use: - check_store1 check_store2 check_store4 check_store4C - check_store8_P check_store_8C_P - check_store8_all8B (for 64-bit nonpointer stores) - check_store16_ms8B_ls8B (for xmm/altivec stores) - - A "_P" handler writes a pointer to memory, and so has an extra - argument -- the pointer's shadow value. That implies that - check_store4{,C}_P is only to be called on a 32 bit host and - check_store8{,C}_P is only to be called on a 64 bit host. For all - other cases, and for the misaligned _P cases, the strategy is to - let the store go through, and then snoop around with - nonptr_or_unknown to fix up the shadow values of any affected - words. */ - -/* Helpers for store-conditionals. Ugly kludge :-( - They all return 1 if the SC was successful and 0 if it failed. */ -static inline UWord do_store_conditional_32( Addr m/*dst*/, UInt t/*val*/ ) -{ -# if defined(VGA_ppc32) || defined(VGA_ppc64) - UWord success; - /* If this assertion fails, the underlying IR is (semantically) ill-formed - as per the IR spec for IRStmt_Store. */ - tl_assert(VG_IS_4_ALIGNED(m)); - __asm__ __volatile__( - "stwcx. %2,0,%1" "\n\t" /* data,0,addr */ - "mfcr %0" "\n\t" - "srwi %0,%0,29" "\n\t" /* move relevant CR bit to LSB */ - : /*out*/"=b"(success) - : /*in*/ "b"(m), "b"( (UWord)t ) - : /*trash*/ "memory", "cc" - /* Note: srwi is OK even on 64-bit host because the we're - after bit 29 (normal numbering) and we mask off all the - other junk just below. */ - ); - return success & (UWord)1; -# else - tl_assert(0); /* not implemented on other platforms */ -# endif -} - -static inline UWord do_store_conditional_64( Addr m/*dst*/, ULong t/*val*/ ) -{ -# if defined(VGA_ppc64) - UWord success; - /* If this assertion fails, the underlying IR is (semantically) ill-formed - as per the IR spec for IRStmt_Store. */ - tl_assert(VG_IS_8_ALIGNED(m)); - __asm__ __volatile__( - "stdcx. %2,0,%1" "\n\t" /* data,0,addr */ - "mfcr %0" "\n\t" - "srdi %0,%0,29" "\n\t" /* move relevant CR bit to LSB */ - : /*out*/"=b"(success) - : /*in*/ "b"(m), "b"( (UWord)t ) - : /*trash*/ "memory", "cc" - ); - return success & (UWord)1; -# else - tl_assert(0); /* not implemented on other platforms */ -# endif -} - -/* Apply nonptr_or_unknown to all the words intersecting - [a, a+len). */ -static inline VG_REGPARM(2) -void nonptr_or_unknown_range ( Addr a, SizeT len ) -{ - const SizeT wszB = sizeof(UWord); - Addr wfirst = VG_ROUNDDN(a, wszB); - Addr wlast = VG_ROUNDDN(a+len-1, wszB); - Addr a2; - tl_assert(wfirst <= wlast); - for (a2 = wfirst ; a2 <= wlast; a2 += wszB) { - set_mem_vseg( a2, nonptr_or_unknown( *(UWord*)a2 )); - } -} - -// Write to shadow memory, for a 32-bit store. Must only -// be used on 32-bit targets. -static inline VG_REGPARM(2) -void do_shadow_store4_P( Addr m, Seg* vseg ) -{ - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ - if (VG_IS_4_ALIGNED(m)) { - set_mem_vseg( m, vseg ); - } else { - // straddling two words - nonptr_or_unknown_range(m, 4); - } -} - -// Write to shadow memory, for a 64-bit store. Must only -// be used on 64-bit targets. -static inline VG_REGPARM(2) -void do_shadow_store8_P( Addr m, Seg* vseg ) -{ - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ - if (VG_IS_8_ALIGNED(m)) { - set_mem_vseg( m, vseg ); - } else { - // straddling two words - nonptr_or_unknown_range(m, 8); - } -} - -// This handles 128 bit stores on 64 bit targets. The -// store data is passed in 2 pieces, the most significant -// bits first. -static VG_REGPARM(3) -void check_store16_ms8B_ls8B(Addr m, Seg* mptr_vseg, - UWord ms8B, UWord ls8B) -{ - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 16, mptr_vseg); - // Actually *do* the STORE here - if (host_is_little_endian()) { - // FIXME: aren't we really concerned whether the guest - // is little endian, not whether the host is? - *(ULong*)(m + 0) = ls8B; - *(ULong*)(m + 8) = ms8B; - } else { - *(ULong*)(m + 0) = ms8B; - *(ULong*)(m + 8) = ls8B; - } - nonptr_or_unknown_range(m, 16); -} - -// This handles 128 bit stores on 64 bit targets. The -// store data is passed in 2 pieces, the most significant -// bits first. -static VG_REGPARM(3) -void check_store16_ms4B_4B_4B_ls4B(Addr m, Seg* mptr_vseg, - UWord ms4B, UWord w2, - UWord w1, UWord ls4B) -{ - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 16, mptr_vseg); - // Actually *do* the STORE here - if (host_is_little_endian()) { - // FIXME: aren't we really concerned whether the guest - // is little endian, not whether the host is? - *(UInt*)(m + 0) = ls4B; - *(UInt*)(m + 4) = w1; - *(UInt*)(m + 8) = w2; - *(UInt*)(m + 12) = ms4B; - } else { - *(UInt*)(m + 0) = ms4B; - *(UInt*)(m + 4) = w2; - *(UInt*)(m + 8) = w1; - *(UInt*)(m + 12) = ls4B; - } - nonptr_or_unknown_range(m, 16); -} - -// This handles 64 bit stores on 32 bit targets. The -// store data is passed in 2 pieces, the most significant -// bits first. -static VG_REGPARM(3) -void check_store8_ms4B_ls4B(Addr m, Seg* mptr_vseg, - UWord ms4B, UWord ls4B) -{ - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 8, mptr_vseg); - // Actually *do* the STORE here - if (host_is_little_endian()) { - // FIXME: aren't we really concerned whether the guest - // is little endian, not whether the host is? - *(UInt*)(m + 0) = ls4B; - *(UInt*)(m + 4) = ms4B; - } else { - *(UInt*)(m + 0) = ms4B; - *(UInt*)(m + 4) = ls4B; - } - nonptr_or_unknown_range(m, 8); -} - -// This handles 64 bit non pointer stores on 64 bit targets. -// It must not be called on 32 bit targets. -static VG_REGPARM(3) -void check_store8_all8B(Addr m, Seg* mptr_vseg, UWord all8B) -{ - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 8, mptr_vseg); - // Actually *do* the STORE here - *(ULong*)m = all8B; - nonptr_or_unknown_range(m, 8); -} - -// This handles 64 bit stores on 64 bit targets. It must -// not be called on 32 bit targets. -static VG_REGPARM(3) -void check_store8_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg) -{ - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(t_vseg); - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 8, mptr_vseg); - // Actually *do* the STORE here - *(ULong*)m = t; - do_shadow_store8_P( m, t_vseg ); -} - -// This handles 64 bit store-conditionals on 64 bit targets. It must -// not be called on 32 bit targets. -static VG_REGPARM(3) -UWord check_store8C_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg) -{ - UWord success; - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(t_vseg); - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 8, mptr_vseg); - // Actually *do* the STORE here - success = do_store_conditional_64( m, t ); - if (success) - do_shadow_store8_P( m, t_vseg ); - return success; -} - -// This handles 32 bit stores on 32 bit targets. It must -// not be called on 64 bit targets. -static VG_REGPARM(3) -void check_store4_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg) -{ - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(t_vseg); - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 4, mptr_vseg); - // Actually *do* the STORE here - *(UInt*)m = t; - do_shadow_store4_P( m, t_vseg ); -} - -// This handles 32 bit store-conditionals on 32 bit targets. It must -// not be called on 64 bit targets. -static VG_REGPARM(3) -UWord check_store4C_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg) -{ - UWord success; - tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(t_vseg); - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 4, mptr_vseg); - // Actually *do* the STORE here - success = do_store_conditional_32( m, t ); - if (success) - do_shadow_store4_P( m, t_vseg ); - return success; -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(3) -void check_store4(Addr m, Seg* mptr_vseg, UWord t) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 4, mptr_vseg); - // Actually *do* the STORE here (Nb: cast must be to 4-byte type!) - *(UInt*)m = t; - nonptr_or_unknown_range(m, 4); -} - -// Used for 32-bit store-conditionals on 64 bit targets only. It must -// not be called on 32 bit targets. -static VG_REGPARM(3) -UWord check_store4C(Addr m, Seg* mptr_vseg, UWord t) -{ - UWord success; - tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 4, mptr_vseg); - // Actually *do* the STORE here - success = do_store_conditional_32( m, t ); - if (success) - nonptr_or_unknown_range(m, 4); - return success; -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(3) -void check_store2(Addr m, Seg* mptr_vseg, UWord t) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 2, mptr_vseg); - // Actually *do* the STORE here (Nb: cast must be to 2-byte type!) - *(UShort*)m = t; - nonptr_or_unknown_range(m, 2); -} - -// Used for both 32 bit and 64 bit targets. -static VG_REGPARM(3) -void check_store1(Addr m, Seg* mptr_vseg, UWord t) -{ -# if SC_SEGS - checkSeg(mptr_vseg); -# endif - check_load_or_store(/*is_write*/True, m, 1, mptr_vseg); - // Actually *do* the STORE here (Nb: cast must be to 1-byte type!) - *(UChar*)m = t; - nonptr_or_unknown_range(m, 1); -} - - -// Nb: if the result is BOTTOM, return immedately -- don't let BOTTOM -// be changed to NONPTR by a range check on the result. -#define BINOP(bt, nn, nu, np, un, uu, up, pn, pu, pp) \ - if (BOTTOM == seg1 || BOTTOM == seg2) { bt; \ - } else if (NONPTR == seg1) { if (NONPTR == seg2) { nn; } \ - else if (UNKNOWN == seg2) { nu; } \ - else { np; } \ - } else if (UNKNOWN == seg1) { if (NONPTR == seg2) { un; } \ - else if (UNKNOWN == seg2) { uu; } \ - else { up; } \ - } else { if (NONPTR == seg2) { pn; } \ - else if (UNKNOWN == seg2) { pu; } \ - else { pp; } \ - } - -#define BINERROR(opname) \ - h_record_arith_error(seg1, seg2, opname); \ - out = NONPTR - - -// ------------- -// + | n ? p -// ------------- -// n | n ? p -// ? | ? ? ? -// p | p ? e (all results become n if they look like a non-pointer) -// ------------- -static Seg* do_addW_result(Seg* seg1, Seg* seg2, UWord result, HChar* opname) -{ - Seg* out; -# if SC_SEGS - checkSeg(seg1); - checkSeg(seg2); -# endif - BINOP( - return BOTTOM, - out = NONPTR, out = UNKNOWN, out = seg2, - out = UNKNOWN, out = UNKNOWN, out = UNKNOWN, - out = seg1, out = UNKNOWN, BINERROR(opname) - ); - return ( looks_like_a_pointer(result) ? out : NONPTR ); -} - -static VG_REGPARM(3) Seg* do_addW(Seg* seg1, Seg* seg2, UWord result) -{ - Seg* out; -# if SC_SEGS - checkSeg(seg1); - checkSeg(seg2); -# endif - out = do_addW_result(seg1, seg2, result, "Add32/Add64"); -# if SC_SEGS - checkSeg(out); -# endif - return out; -} - -// ------------- -// - | n ? p (Nb: operation is seg1 - seg2) -// ------------- -// n | n ? n+ (+) happens a lot due to "cmp", but result should never -// ? | ? ? n/B be used, so give 'n' -// p | p p? n*/B (*) and possibly link the segments -// ------------- -static VG_REGPARM(3) Seg* do_subW(Seg* seg1, Seg* seg2, UWord result) -{ - Seg* out; -# if SC_SEGS - checkSeg(seg1); - checkSeg(seg2); -# endif - // Nb: when returning BOTTOM, don't let it go through the range-check; - // a segment linking offset can easily look like a nonptr. - BINOP( - return BOTTOM, - out = NONPTR, out = UNKNOWN, out = NONPTR, - out = UNKNOWN, out = UNKNOWN, return BOTTOM, - out = seg1, out = seg1/*??*/, return BOTTOM - ); - #if 0 - // This is for the p-p segment-linking case - Seg end2 = seg2; - while (end2->links != seg2) end2 = end2->links; - end2->links = seg1->links; - seg1->links = seg2; - return NONPTR; - #endif - return ( looks_like_a_pointer(result) ? out : NONPTR ); -} - -// ------------- -// & | n ? p -// ------------- -// n | n ? p -// ? | ? ? ? -// p | p ? * (*) if p1==p2 then p else e (see comment) -// ------------- -/* Seems to be OK to And two pointers: - testq %ptr1,%ptr2 - jnz .. - which possibly derives from - if (ptr1 & ptr2) { A } else { B } - not sure what that means -*/ -static VG_REGPARM(3) Seg* do_andW(Seg* seg1, Seg* seg2, - UWord result, UWord args_diff) -{ - Seg* out; - if (0 == args_diff) { - // p1==p2 - out = seg1; - } else { - BINOP( - return BOTTOM, - out = NONPTR, out = UNKNOWN, out = seg2, - out = UNKNOWN, out = UNKNOWN, out = UNKNOWN, - out = seg1, out = UNKNOWN, out = NONPTR - /*BINERROR("And32/And64")*/ - ); - } - out = ( looks_like_a_pointer(result) ? out : NONPTR ); - return out; -} - -// ------------- -// `|`| n ? p -// ------------- -// n | n ? p -// ? | ? ? ? -// p | p ? n -// ------------- -/* It's OK to Or two pointers together, but the result definitely - isn't a pointer. Why would you want to do that? Because of this: - char* p1 = malloc(..); - char* p2 = malloc(..); - ... - if (p1 || p2) { .. } - In this case gcc on x86/amd64 quite literally or-s the two pointers - together and throws away the result, the purpose of which is merely - to sets %eflags.Z/%rflags.Z. So we have to allow it. -*/ -static VG_REGPARM(3) Seg* do_orW(Seg* seg1, Seg* seg2, UWord result) -{ - Seg* out; - BINOP( - return BOTTOM, - out = NONPTR, out = UNKNOWN, out = seg2, - out = UNKNOWN, out = UNKNOWN, out = UNKNOWN, - out = seg1, out = UNKNOWN, out = NONPTR - ); - out = ( looks_like_a_pointer(result) ? out : NONPTR ); - return out; -} - -// ------------- -// ~ | n ? p -// ------------- -// | n n n -// ------------- -static VG_REGPARM(2) Seg* do_notW(Seg* seg1, UWord result) -{ -# if SC_SEGS - checkSeg(seg1); -# endif - if (BOTTOM == seg1) return BOTTOM; - return NONPTR; -} - -// Pointers are rarely multiplied, but sometimes legitimately, eg. as hash -// function inputs. But two pointers args --> error. -// Pretend it always returns a nonptr. Maybe improve later. -static VG_REGPARM(2) Seg* do_mulW(Seg* seg1, Seg* seg2) -{ -# if SC_SEGS - checkSeg(seg1); - checkSeg(seg2); -# endif - if (is_known_segment(seg1) && is_known_segment(seg2)) - h_record_arith_error(seg1, seg2, "Mul32/Mul64"); - return NONPTR; -} - - -/*--------------------------------------------------------------------*/ -/*--- Instrumentation ---*/ -/*--------------------------------------------------------------------*/ - -/* The h_ instrumenter that follows is complex, since it deals with - shadow value computation. - - It also needs to generate instrumentation for the sg_ side of - things. That's relatively straightforward. However, rather than - confuse the code herein any further, we simply delegate the problem - to sg_main.c, by using the four functions - sg_instrument_{init,fini,IRStmt,final_jump}. These four completely - abstractify the sg_ instrumentation. See comments in sg_main.c's - instrumentation section for further details. */ - - -/* Carries info about a particular tmp. The tmp's number is not - recorded, as this is implied by (equal to) its index in the tmpMap - in PCEnv. The tmp's type is also not recorded, as this is present - in PCEnv.sb->tyenv. - - When .kind is NonShad, .shadow may give the identity of the temp - currently holding the associated shadow value, or it may be - IRTemp_INVALID if code to compute the shadow has not yet been - emitted. - - When .kind is Shad tmp holds a shadow value, and so .shadow must be - IRTemp_INVALID, since it is illogical for a shadow tmp itself to be - shadowed. -*/ -typedef - enum { NonShad=1, Shad=2 } - TempKind; - -typedef - struct { - TempKind kind; - IRTemp shadow; - } - TempMapEnt; - - - -/* Carries around state during Ptrcheck instrumentation. */ -typedef - struct { - /* MODIFIED: the superblock being constructed. IRStmts are - added. */ - IRSB* sb; - Bool trace; - - /* MODIFIED: a table [0 .. #temps_in_sb-1] which gives the - current kind and possibly shadow temps for each temp in the - IRSB being constructed. Note that it does not contain the - type of each tmp. If you want to know the type, look at the - relevant entry in sb->tyenv. It follows that at all times - during the instrumentation process, the valid indices for - tmpMap and sb->tyenv are identical, being 0 .. N-1 where N is - total number of NonShad and Shad temps allocated so far. - - The reason for this strange split (types in one place, all - other info in another) is that we need the types to be - attached to sb so as to make it possible to do - "typeOfIRExpr(mce->bb->tyenv, ...)" at various places in the - instrumentation process. - - Note that only integer temps of the guest word size are - shadowed, since it is impossible (or meaningless) to hold a - pointer in any other type of temp. */ - XArray* /* of TempMapEnt */ qmpMap; - - /* READONLY: the host word type. Needed for constructing - arguments of type 'HWord' to be passed to helper functions. - Ity_I32 or Ity_I64 only. */ - IRType hWordTy; - - /* READONLY: the guest word type, Ity_I32 or Ity_I64 only. */ - IRType gWordTy; - - /* READONLY: the guest state size, so we can generate shadow - offsets correctly. */ - Int guest_state_sizeB; - } - PCEnv; - -/* SHADOW TMP MANAGEMENT. Shadow tmps are allocated lazily (on - demand), as they are encountered. This is for two reasons. - - (1) (less important reason): Many original tmps are unused due to - initial IR optimisation, and we do not want to spaces in tables - tracking them. - - Shadow IRTemps are therefore allocated on demand. pce.tmpMap is a - table indexed [0 .. n_types-1], which gives the current shadow for - each original tmp, or INVALID_IRTEMP if none is so far assigned. - It is necessary to support making multiple assignments to a shadow - -- specifically, after testing a shadow for definedness, it needs - to be made defined. But IR's SSA property disallows this. - - (2) (more important reason): Therefore, when a shadow needs to get - a new value, a new temporary is created, the value is assigned to - that, and the tmpMap is updated to reflect the new binding. - - A corollary is that if the tmpMap maps a given tmp to - IRTemp_INVALID and we are hoping to read that shadow tmp, it means - there's a read-before-write error in the original tmps. The IR - sanity checker should catch all such anomalies, however. -*/ - -/* Create a new IRTemp of type 'ty' and kind 'kind', and add it to - both the table in pce->sb and to our auxiliary mapping. Note that - newTemp may cause pce->tmpMap to resize, hence previous results - from VG_(indexXA)(pce->tmpMap) are invalidated. */ -static IRTemp newTemp ( PCEnv* pce, IRType ty, TempKind kind ) -{ - Word newIx; - TempMapEnt ent; - IRTemp tmp = newIRTemp(pce->sb->tyenv, ty); - ent.kind = kind; - ent.shadow = IRTemp_INVALID; - newIx = VG_(addToXA)( pce->qmpMap, &ent ); - tl_assert(newIx == (Word)tmp); - return tmp; -} - -/* Find the tmp currently shadowing the given original tmp. If none - so far exists, allocate one. */ -static IRTemp findShadowTmp ( PCEnv* pce, IRTemp orig ) -{ - TempMapEnt* ent; - /* VG_(indexXA) range-checks 'orig', hence no need to check - here. */ - ent = (TempMapEnt*)VG_(indexXA)( pce->qmpMap, (Word)orig ); - tl_assert(ent->kind == NonShad); - if (ent->shadow == IRTemp_INVALID) { - IRTemp shadow = newTemp( pce, pce->gWordTy, Shad ); - /* newTemp may cause pce->tmpMap to resize, hence previous results - from VG_(indexXA) are invalid. */ - ent = (TempMapEnt*)VG_(indexXA)( pce->qmpMap, (Word)orig ); - tl_assert(ent->kind == NonShad); - tl_assert(ent->shadow == IRTemp_INVALID); - ent->shadow = shadow; - } - return ent->shadow; -} - -/* Allocate a new shadow for the given original tmp. This means any - previous shadow is abandoned. This is needed because it is - necessary to give a new value to a shadow once it has been tested - for undefinedness, but unfortunately IR's SSA property disallows - this. Instead we must abandon the old shadow, allocate a new one - and use that instead. - - This is the same as findShadowTmp, except we don't bother to see - if a shadow temp already existed -- we simply allocate a new one - regardless. */ -static IRTemp newShadowTmp ( PCEnv* pce, IRTemp orig ) -{ - TempMapEnt* ent; - /* VG_(indexXA) range-checks 'orig', hence no need to check - here. */ - ent = (TempMapEnt*)VG_(indexXA)( pce->qmpMap, (Word)orig ); - tl_assert(ent->kind == NonShad); - if (1) { - IRTemp shadow = newTemp( pce, pce->gWordTy, Shad ); - /* newTemp may cause pce->tmpMap to resize, hence previous results - from VG_(indexXA) are invalid. */ - ent = (TempMapEnt*)VG_(indexXA)( pce->qmpMap, (Word)orig ); - tl_assert(ent->kind == NonShad); - ent->shadow = shadow; - return shadow; - } - /* NOTREACHED */ - tl_assert(0); -} - - -/*------------------------------------------------------------*/ -/*--- IRAtoms -- a subset of IRExprs ---*/ -/*------------------------------------------------------------*/ - -/* An atom is either an IRExpr_Const or an IRExpr_Tmp, as defined by - isIRAtom() in libvex_ir.h. Because this instrumenter expects flat - input, most of this code deals in atoms. Usefully, a value atom - always has a V-value which is also an atom: constants are shadowed - by constants, and temps are shadowed by the corresponding shadow - temporary. */ - -typedef IRExpr IRAtom; - -//zz /* (used for sanity checks only): is this an atom which looks -//zz like it's from original code? */ -//zz static Bool isOriginalAtom ( PCEnv* pce, IRAtom* a1 ) -//zz { -//zz if (a1->tag == Iex_Const) -//zz return True; -//zz if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp < pce->n_originalTmps) -//zz return True; -//zz return False; -//zz } -//zz -//zz /* (used for sanity checks only): is this an atom which looks -//zz like it's from shadow code? */ -//zz static Bool isShadowAtom ( PCEnv* pce, IRAtom* a1 ) -//zz { -//zz if (a1->tag == Iex_Const) -//zz return True; -//zz if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp >= pce->n_originalTmps) -//zz return True; -//zz return False; -//zz } -//zz -//zz /* (used for sanity checks only): check that both args are atoms and -//zz are identically-kinded. */ -//zz static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 ) -//zz { -//zz if (a1->tag == Iex_RdTmp && a2->tag == Iex_RdTmp) -//zz return True; -//zz if (a1->tag == Iex_Const && a2->tag == Iex_Const) -//zz return True; -//zz return False; -//zz } - - -/*------------------------------------------------------------*/ -/*--- Constructing IR fragments ---*/ -/*------------------------------------------------------------*/ - -/* add stmt to a bb */ -static inline void stmt ( HChar cat, PCEnv* pce, IRStmt* st ) { - if (pce->trace) { - VG_(printf)(" %c: ", cat); - ppIRStmt(st); - VG_(printf)("\n"); - } - addStmtToIRSB(pce->sb, st); -} - -/* assign value to tmp */ -static inline -void assign ( HChar cat, PCEnv* pce, IRTemp tmp, IRExpr* expr ) { - stmt(cat, pce, IRStmt_WrTmp(tmp,expr)); -} - -/* build various kinds of expressions */ -#define binop(_op, _arg1, _arg2) IRExpr_Binop((_op),(_arg1),(_arg2)) -#define unop(_op, _arg) IRExpr_Unop((_op),(_arg)) -#define mkU8(_n) IRExpr_Const(IRConst_U8(_n)) -#define mkU16(_n) IRExpr_Const(IRConst_U16(_n)) -#define mkU32(_n) IRExpr_Const(IRConst_U32(_n)) -#define mkU64(_n) IRExpr_Const(IRConst_U64(_n)) -#define mkV128(_n) IRExpr_Const(IRConst_V128(_n)) -#define mkexpr(_tmp) IRExpr_RdTmp((_tmp)) - -/* Bind the given expression to a new temporary, and return the - temporary. This effectively converts an arbitrary expression into - an atom. - - 'ty' is the type of 'e' and hence the type that the new temporary - needs to be. But passing it is redundant, since we can deduce the - type merely by inspecting 'e'. So at least that fact to assert - that the two types agree. */ -static IRAtom* assignNew ( HChar cat, PCEnv* pce, IRType ty, IRExpr* e ) { - IRTemp t; - IRType tyE = typeOfIRExpr(pce->sb->tyenv, e); - tl_assert(tyE == ty); /* so 'ty' is redundant (!) */ - t = newTemp(pce, ty, Shad); - assign(cat, pce, t, e); - return mkexpr(t); -} - - - -//----------------------------------------------------------------------- -// Approach taken for range-checking for NONPTR/UNKNOWN-ness as follows. -// -// Range check (NONPTR/seg): -// - after modifying a word-sized value in/into a TempReg: -// - {ADD, SUB, ADC, SBB, AND, OR, XOR, LEA, LEA2, NEG, NOT}L -// - BSWAP -// -// Range check (NONPTR/UNKNOWN): -// - when introducing a new word-sized value into a TempReg: -// - MOVL l, t2 -// -// - when copying a word-sized value which lacks a corresponding segment -// into a TempReg: -// - straddled LDL -// -// - when a sub-word of a word (or two) is updated: -// - SHROTL -// - {ADD, SUB, ADC, SBB, AND, OR, XOR, SHROT, NEG, NOT}[WB] -// - PUT[WB] -// - straddled STL (2 range checks) -// - straddled STW (2 range checks) -// - unstraddled STW -// - STB -// -// Just copy: -// - when copying word-sized values: -// - MOVL t1, t2 (--optimise=no only) -// - CMOV -// - GETL, PUTL -// - unstraddled LDL, unstraddled STL -// -// - when barely changing -// - INC[LWB]/DEC[LWB] -// -// Set to NONPTR: -// - after copying a sub-word value into a TempReg: -// - MOV[WB] l, t2 -// - GET[WB] -// - unstraddled LDW -// - straddled LDW -// - LDB -// - POP[WB] -// -// - after copying an obvious non-ptr into a TempReg: -// - GETF -// - CC2VAL -// - POPL -// -// - after copying an obvious non-ptr into a memory word: -// - FPU_W -// -// Do nothing: -// - LOCK, INCEIP -// - WIDEN[WB] -// - JMP, JIFZ -// - CALLM_[SE], PUSHL, CALLM, CLEAR -// - FPU, FPU_R (and similar MMX/SSE ones) -// - - - - -/* Call h_fn (name h_nm) with the given arg, and return a new IRTemp - holding the result. The arg must be a word-typed atom. Callee - must be a VG_REGPARM(1) function. */ -__attribute__((noinline)) -static IRTemp gen_dirty_W_W ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1 ) -{ - IRTemp res; - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - res = newTemp(pce, pce->gWordTy, Shad); - di = unsafeIRDirty_1_N( res, 1/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_1( a1 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); - return res; -} - -/* Two-arg version of gen_dirty_W_W. Callee must be a VG_REGPARM(2) - function.*/ -static IRTemp gen_dirty_W_WW ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2 ) -{ - IRTemp res; - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - res = newTemp(pce, pce->gWordTy, Shad); - di = unsafeIRDirty_1_N( res, 2/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_2( a1, a2 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); - return res; -} - -/* Three-arg version of gen_dirty_W_W. Callee must be a VG_REGPARM(3) - function.*/ -static IRTemp gen_dirty_W_WWW ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2, IRExpr* a3 ) -{ - IRTemp res; - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(isIRAtom(a3)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a3) == pce->gWordTy); - res = newTemp(pce, pce->gWordTy, Shad); - di = unsafeIRDirty_1_N( res, 3/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_3( a1, a2, a3 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); - return res; -} - -/* Four-arg version of gen_dirty_W_W. Callee must be a VG_REGPARM(3) - function.*/ -static IRTemp gen_dirty_W_WWWW ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2, - IRExpr* a3, IRExpr* a4 ) -{ - IRTemp res; - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(isIRAtom(a3)); - tl_assert(isIRAtom(a4)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a3) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a4) == pce->gWordTy); - res = newTemp(pce, pce->gWordTy, Shad); - di = unsafeIRDirty_1_N( res, 3/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_4( a1, a2, a3, a4 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); - return res; -} - -/* Version of gen_dirty_W_WW with no return value. Callee must be a - VG_REGPARM(2) function. If guard is non-NULL then it is used to - conditionalise the call. */ -static void gen_dirty_v_WW ( PCEnv* pce, IRExpr* guard, - void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2 ) -{ - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - di = unsafeIRDirty_0_N( 2/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_2( a1, a2 ) ); - if (guard) - di->guard = guard; - stmt( 'I', pce, IRStmt_Dirty(di) ); -} - -/* Version of gen_dirty_W_WWW with no return value. Callee must be a - VG_REGPARM(3) function.*/ -static void gen_dirty_v_WWW ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2, IRExpr* a3 ) -{ - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(isIRAtom(a3)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a3) == pce->gWordTy); - di = unsafeIRDirty_0_N( 3/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_3( a1, a2, a3 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); -} - -/* Version of gen_dirty_v_WWW for 4 arguments. Callee must be a - VG_REGPARM(3) function.*/ -static void gen_dirty_v_WWWW ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2, - IRExpr* a3, IRExpr* a4 ) -{ - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(isIRAtom(a3)); - tl_assert(isIRAtom(a4)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a3) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a4) == pce->gWordTy); - di = unsafeIRDirty_0_N( 3/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_4( a1, a2, a3, a4 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); -} - -/* Version of gen_dirty_v_WWW for 6 arguments. Callee must be a - VG_REGPARM(3) function.*/ -static void gen_dirty_v_6W ( PCEnv* pce, void* h_fn, HChar* h_nm, - IRExpr* a1, IRExpr* a2, IRExpr* a3, - IRExpr* a4, IRExpr* a5, IRExpr* a6 ) -{ - IRDirty* di; - tl_assert(isIRAtom(a1)); - tl_assert(isIRAtom(a2)); - tl_assert(isIRAtom(a3)); - tl_assert(isIRAtom(a4)); - tl_assert(isIRAtom(a5)); - tl_assert(isIRAtom(a6)); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a1) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a2) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a3) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a4) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a5) == pce->gWordTy); - tl_assert(typeOfIRExpr(pce->sb->tyenv, a6) == pce->gWordTy); - di = unsafeIRDirty_0_N( 3/*regparms*/, - h_nm, VG_(fnptr_to_fnentry)( h_fn ), - mkIRExprVec_6( a1, a2, a3, a4, a5, a6 ) ); - stmt( 'I', pce, IRStmt_Dirty(di) ); -} - -static IRAtom* uwiden_to_host_word ( PCEnv* pce, IRAtom* a ) -{ - IRType a_ty = typeOfIRExpr(pce->sb->tyenv, a); - tl_assert(isIRAtom(a)); - if (pce->hWordTy == Ity_I32) { - switch (a_ty) { - case Ity_I8: - return assignNew( 'I', pce, Ity_I32, unop(Iop_8Uto32, a) ); - case Ity_I16: - return assignNew( 'I', pce, Ity_I32, unop(Iop_16Uto32, a) ); - default: - ppIRType(a_ty); - tl_assert(0); - } - } else { - tl_assert(pce->hWordTy == Ity_I64); - switch (a_ty) { - case Ity_I8: - return assignNew( 'I', pce, Ity_I64, unop(Iop_8Uto64, a) ); - case Ity_I16: - return assignNew( 'I', pce, Ity_I64, unop(Iop_16Uto64, a) ); - case Ity_I32: - return assignNew( 'I', pce, Ity_I64, unop(Iop_32Uto64, a) ); - default: - ppIRType(a_ty); - tl_assert(0); - } - } -} - -/* 'e' is a word-sized atom. Call nonptr_or_unknown with it, bind the - results to a new temporary, and return the temporary. Note this - takes an original expression but returns a shadow value. */ -static IRTemp gen_call_nonptr_or_unknown_w ( PCEnv* pce, IRExpr* e ) -{ - return gen_dirty_W_W( pce, &nonptr_or_unknown, - "nonptr_or_unknown", e ); -} - - -/* Generate the shadow value for an IRExpr which is an atom and - guaranteed to be word-sized. */ -static IRAtom* schemeEw_Atom ( PCEnv* pce, IRExpr* e ) -{ - if (pce->gWordTy == Ity_I32) { - if (e->tag == Iex_Const && e->Iex.Const.con->tag == Ico_U32) { - IRTemp t; - tl_assert(sizeof(UWord) == 4); - t = gen_call_nonptr_or_unknown_w(pce, e); - return mkexpr(t); - } - if (e->tag == Iex_RdTmp - && typeOfIRExpr(pce->sb->tyenv, e) == Ity_I32) { - return mkexpr( findShadowTmp(pce, e->Iex.RdTmp.tmp) ); - } - /* there are no other word-sized atom cases */ - } else { - if (e->tag == Iex_Const && e->Iex.Const.con->tag == Ico_U64) { - IRTemp t; - tl_assert(sizeof(UWord) == 8); - //return mkU64( (ULong)(UWord)NONPTR ); - t = gen_call_nonptr_or_unknown_w(pce, e); - return mkexpr(t); - } - if (e->tag == Iex_RdTmp - && typeOfIRExpr(pce->sb->tyenv, e) == Ity_I64) { - return mkexpr( findShadowTmp(pce, e->Iex.RdTmp.tmp) ); - } - /* there are no other word-sized atom cases */ - } - ppIRExpr(e); - tl_assert(0); -} - - -static -void instrument_arithop ( PCEnv* pce, - IRTemp dst, /* already holds result */ - IRTemp dstv, /* generate an assignment to this */ - IROp op, - /* original args, guaranteed to be atoms */ - IRExpr* a1, IRExpr* a2, IRExpr* a3, IRExpr* a4 ) -{ - HChar* nm = NULL; - void* fn = NULL; - IRExpr* a1v = NULL; - IRExpr* a2v = NULL; - //IRExpr* a3v = NULL; - //IRExpr* a4v = NULL; - IRTemp res = IRTemp_INVALID; - - if (pce->gWordTy == Ity_I32) { - - tl_assert(pce->hWordTy == Ity_I32); - switch (op) { - - /* For these cases, pass Segs for both arguments, and the - result value. */ - case Iop_Add32: nm = "do_addW"; fn = &do_addW; goto ssr32; - case Iop_Sub32: nm = "do_subW"; fn = &do_subW; goto ssr32; - case Iop_Or32: nm = "do_orW"; fn = &do_orW; goto ssr32; - ssr32: - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WWW( pce, fn, nm, a1v, a2v, mkexpr(dst) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* In this case, pass Segs for both arguments, the result - value, and the difference between the (original) values of - the arguments. */ - case Iop_And32: - nm = "do_andW"; fn = &do_andW; - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WWWW( - pce, fn, nm, a1v, a2v, mkexpr(dst), - assignNew( 'I', pce, Ity_I32, - binop(Iop_Sub32,a1,a2) ) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* Pass one shadow arg and the result to the helper. */ - case Iop_Not32: nm = "do_notW"; fn = &do_notW; goto vr32; - vr32: - a1v = schemeEw_Atom( pce, a1 ); - res = gen_dirty_W_WW( pce, fn, nm, a1v, mkexpr(dst) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* Pass two shadow args only to the helper. */ - case Iop_Mul32: nm = "do_mulW"; fn = &do_mulW; goto vv32; - vv32: - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WW( pce, fn, nm, a1v, a2v ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* We don't really know what the result could be; test at run - time. */ - case Iop_64HIto32: goto n_or_u_32; - case Iop_64to32: goto n_or_u_32; - case Iop_Xor32: goto n_or_u_32; - n_or_u_32: - assign( 'I', pce, dstv, - mkexpr( - gen_call_nonptr_or_unknown_w( pce, - mkexpr(dst) ) ) ); - break; - - /* Cases where it's very obvious that the result cannot be a - pointer. Hence declare directly that it's NONPTR; don't - bother with the overhead of calling nonptr_or_unknown. */ - - /* cases where it makes no sense for the result to be a ptr */ - /* FIXME: for Shl/Shr/Sar, really should do a test on the 2nd - arg, so that shift by zero preserves the original - value. */ - case Iop_Shl32: goto n32; - case Iop_Sar32: goto n32; - case Iop_Shr32: goto n32; - case Iop_16Uto32: goto n32; - case Iop_16Sto32: goto n32; - case Iop_F64toI32S: goto n32; - case Iop_16HLto32: goto n32; - case Iop_MullS16: goto n32; - case Iop_MullU16: goto n32; - case Iop_PRemC3210F64: goto n32; - case Iop_DivU32: goto n32; - case Iop_DivS32: goto n32; - case Iop_V128to32: goto n32; - - /* cases where result range is very limited and clearly cannot - be a pointer */ - case Iop_1Uto32: goto n32; - case Iop_1Sto32: goto n32; - case Iop_8Uto32: goto n32; - case Iop_8Sto32: goto n32; - case Iop_Clz32: goto n32; - case Iop_Ctz32: goto n32; - case Iop_CmpF64: goto n32; - case Iop_CmpORD32S: goto n32; - case Iop_CmpORD32U: goto n32; - n32: - assign( 'I', pce, dstv, mkU32( (UWord)NONPTR )); - break; - - default: - VG_(printf)("instrument_arithop(32-bit): unhandled: "); - ppIROp(op); - tl_assert(0); - } - - } else { - - tl_assert(pce->gWordTy == Ity_I64); - switch (op) { - - /* For these cases, pass Segs for both arguments, and the - result value. */ - case Iop_Add64: nm = "do_addW"; fn = &do_addW; goto ssr64; - case Iop_Sub64: nm = "do_subW"; fn = &do_subW; goto ssr64; - case Iop_Or64: nm = "do_orW"; fn = &do_orW; goto ssr64; - ssr64: - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WWW( pce, fn, nm, a1v, a2v, mkexpr(dst) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* In this case, pass Segs for both arguments, the result - value, and the difference between the (original) values of - the arguments. */ - case Iop_And64: - nm = "do_andW"; fn = &do_andW; - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WWWW( - pce, fn, nm, a1v, a2v, mkexpr(dst), - assignNew( 'I', pce, Ity_I64, - binop(Iop_Sub64,a1,a2) ) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* Pass one shadow arg and the result to the helper. */ - case Iop_Not64: nm = "do_notW"; fn = &do_notW; goto vr64; - vr64: - a1v = schemeEw_Atom( pce, a1 ); - res = gen_dirty_W_WW( pce, fn, nm, a1v, mkexpr(dst) ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* Pass two shadow args only to the helper. */ - case Iop_Mul64: nm = "do_mulW"; fn = &do_mulW; goto vv64; - vv64: - a1v = schemeEw_Atom( pce, a1 ); - a2v = schemeEw_Atom( pce, a2 ); - res = gen_dirty_W_WW( pce, fn, nm, a1v, a2v ); - assign( 'I', pce, dstv, mkexpr(res) ); - break; - - /* We don't really know what the result could be; test at run - time. */ - case Iop_Xor64: goto n_or_u_64; - case Iop_128HIto64: goto n_or_u_64; - case Iop_128to64: goto n_or_u_64; - case Iop_V128HIto64: goto n_or_u_64; - case Iop_V128to64: goto n_or_u_64; - n_or_u_64: - assign( 'I', pce, dstv, - mkexpr( - gen_call_nonptr_or_unknown_w( pce, - mkexpr(dst) ) ) ); - break; - - /* Cases where it's very obvious that the result cannot be a - pointer. Hence declare directly that it's NONPTR; don't - bother with the overhead of calling nonptr_or_unknown. */ - - /* cases where it makes no sense for the result to be a ptr */ - /* FIXME: for Shl/Shr/Sar, really should do a test on the 2nd - arg, so that shift by zero preserves the original - value. */ - case Iop_Shl64: goto n64; - case Iop_Sar64: goto n64; - case Iop_Shr64: goto n64; - case Iop_32Uto64: goto n64; - case Iop_32Sto64: goto n64; - case Iop_16Uto64: goto n64; - case Iop_16Sto64: goto n64; - case Iop_32HLto64: goto n64; - case Iop_DivModU64to32: goto n64; - case Iop_DivModS64to32: goto n64; - case Iop_F64toI64S: goto n64; - case Iop_MullS32: goto n64; - case Iop_MullU32: goto n64; - case Iop_DivU64: goto n64; - case Iop_DivS64: goto n64; - case Iop_ReinterpF64asI64: goto n64; - - /* cases where result range is very limited and clearly cannot - be a pointer */ - case Iop_1Uto64: goto n64; - case Iop_8Uto64: goto n64; - case Iop_8Sto64: goto n64; - case Iop_Ctz64: goto n64; - case Iop_Clz64: goto n64; - case Iop_CmpORD64S: goto n64; - case Iop_CmpORD64U: goto n64; - /* 64-bit simd */ - case Iop_Avg8Ux8: case Iop_Avg16Ux4: - case Iop_Max16Sx4: case Iop_Max8Ux8: case Iop_Min16Sx4: - case Iop_Min8Ux8: case Iop_MulHi16Ux4: - case Iop_QNarrow32Sx2: case Iop_QNarrow16Sx4: - case Iop_QNarrow16Ux4: case Iop_Add8x8: case Iop_Add32x2: - case Iop_QAdd8Sx8: case Iop_QAdd16Sx4: case Iop_QAdd8Ux8: - case Iop_QAdd16Ux4: case Iop_Add16x4: case Iop_CmpEQ8x8: - case Iop_CmpEQ32x2: case Iop_CmpEQ16x4: case Iop_CmpGT8Sx8: - case Iop_CmpGT32Sx2: case Iop_CmpGT16Sx4: case Iop_MulHi16Sx4: - case Iop_Mul16x4: case Iop_ShlN32x2: case Iop_ShlN16x4: - case Iop_SarN32x2: case Iop_SarN16x4: case Iop_ShrN32x2: case Iop_ShrN8x8: - case Iop_ShrN16x4: case Iop_Sub8x8: case Iop_Sub32x2: - case Iop_QSub8Sx8: case Iop_QSub16Sx4: case Iop_QSub8Ux8: - case Iop_QSub16Ux4: case Iop_Sub16x4: case Iop_InterleaveHI8x8: - case Iop_InterleaveHI32x2: case Iop_InterleaveHI16x4: - case Iop_InterleaveLO8x8: case Iop_InterleaveLO32x2: - case Iop_InterleaveLO16x4: case Iop_SarN8x8: - case Iop_Perm8x8: case Iop_ShlN8x8: case Iop_Mul32x2: - case Iop_CatEvenLanes16x4: case Iop_CatOddLanes16x4: - n64: - assign( 'I', pce, dstv, mkU64( (UWord)NONPTR )); - break; - - default: - VG_(printf)("instrument_arithop(64-bit): unhandled: "); - ppIROp(op); - tl_assert(0); - } - } -} - -static -void gen_call_nonptr_or_unknown_range ( PCEnv* pce, - IRExpr* guard, - IRAtom* addr, IRAtom* len ) -{ - gen_dirty_v_WW( pce, guard, - &nonptr_or_unknown_range, - "nonptr_or_unknown_range", - addr, len ); -} - -/* iii describes zero or more non-exact integer register updates. For - each one, generate IR to get the containing register, apply - nonptr_or_unknown to it, and write it back again. */ -static void gen_nonptr_or_unknown_for_III( PCEnv* pce, IntRegInfo* iii ) -{ - Int i; - tl_assert(iii && iii->n_offsets >= 0); - for (i = 0; i < iii->n_offsets; i++) { - IRAtom* a1 = assignNew( 'I', pce, pce->gWordTy, - IRExpr_Get( iii->offsets[i], pce->gWordTy )); - IRTemp a2 = gen_call_nonptr_or_unknown_w( pce, a1 ); - stmt( 'I', pce, IRStmt_Put( iii->offsets[i] - + pce->guest_state_sizeB, - mkexpr(a2) )); - } -} - - -/* schemeS helper for doing stores, pulled out into a function because - it needs to handle both normal stores and store-conditionals. - Returns False if we see a case we don't know how to handle. -*/ -static Bool schemeS_store ( PCEnv* pce, - IRExpr* data, IRExpr* addr, IRTemp resSC ) -{ - /* We have: STle(addr) = data - if data is int-word sized, do - check_store4(addr, addr#, data, data#) - for all other stores - check_store{1,2}(addr, addr#, data) - - The helper actually *does* the store, so that it can do the - post-hoc ugly hack of inspecting and "improving" the shadow data - after the store, in the case where it isn't an aligned word - store. - - Only word-sized values are shadowed. If this is a - store-conditional, .resSC will denote a non-word-typed temp, and - so we don't need to shadow it. Assert about the type, tho. - However, since we're not re-emitting the original IRStmt_Store, - but rather doing it as part of the helper function, we need to - actually do a SC in the helper, and assign the result bit to - .resSC. Ugly. - */ - IRType d_ty = typeOfIRExpr(pce->sb->tyenv, data); - IRExpr* addrv = schemeEw_Atom( pce, addr ); - if (resSC != IRTemp_INVALID) { - tl_assert(typeOfIRTemp(pce->sb->tyenv, resSC) == Ity_I1); - /* viz, not something we want to shadow */ - /* also, throw out all store-conditional cases that - we can't handle */ - if (pce->gWordTy == Ity_I32 && d_ty != Ity_I32) - return False; - if (pce->gWordTy == Ity_I64 && d_ty != Ity_I32 && d_ty != Ity_I64) - return False; - } - if (pce->gWordTy == Ity_I32) { - /* ------ 32 bit host/guest (cough, cough) ------ */ - switch (d_ty) { - /* Integer word case */ - case Ity_I32: { - IRExpr* datav = schemeEw_Atom( pce, data ); - if (resSC == IRTemp_INVALID) { - /* "normal" store */ - gen_dirty_v_WWWW( pce, - &check_store4_P, "check_store4_P", - addr, addrv, data, datav ); - } else { - /* store-conditional; need to snarf the success bit */ - IRTemp resSC32 - = gen_dirty_W_WWWW( pce, - &check_store4C_P, - "check_store4C_P", - addr, addrv, data, datav ); - /* presumably resSC32 will really be Ity_I32. In - any case we'll get jumped by the IR sanity - checker if it's not, when it sees the - following statement. */ - assign( 'I', pce, resSC, unop(Iop_32to1, mkexpr(resSC32)) ); - } - break; - } - /* Integer subword cases */ - case Ity_I16: - gen_dirty_v_WWW( pce, - &check_store2, "check_store2", - addr, addrv, - uwiden_to_host_word( pce, data )); - break; - case Ity_I8: - gen_dirty_v_WWW( pce, - &check_store1, "check_store1", - addr, addrv, - uwiden_to_host_word( pce, data )); - break; - /* 64-bit float. Pass store data in 2 32-bit pieces. */ - case Ity_F64: { - IRAtom* d64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_ReinterpF64asI64, data) ); - IRAtom* dLo32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64to32, d64) ); - IRAtom* dHi32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64HIto32, d64) ); - gen_dirty_v_WWWW( pce, - &check_store8_ms4B_ls4B, - "check_store8_ms4B_ls4B", - addr, addrv, dHi32, dLo32 ); - break; - } - /* 32-bit float. We can just use _store4, but need - to futz with the argument type. */ - case Ity_F32: { - IRAtom* i32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_ReinterpF32asI32, - data ) ); - gen_dirty_v_WWW( pce, - &check_store4, - "check_store4", - addr, addrv, i32 ); - break; - } - /* 64-bit int. Pass store data in 2 32-bit pieces. */ - case Ity_I64: { - IRAtom* dLo32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64to32, data) ); - IRAtom* dHi32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64HIto32, data) ); - gen_dirty_v_WWWW( pce, - &check_store8_ms4B_ls4B, - "check_store8_ms4B_ls4B", - addr, addrv, dHi32, dLo32 ); - break; - } - /* 128-bit vector. Pass store data in 4 32-bit pieces. - This is all very ugly and inefficient, but it is - hard to better without considerably complicating the - store-handling schemes. */ - case Ity_V128: { - IRAtom* dHi64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_V128HIto64, data) ); - IRAtom* dLo64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_V128to64, data) ); - IRAtom* w3 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64HIto32, dHi64) ); - IRAtom* w2 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64to32, dHi64) ); - IRAtom* w1 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64HIto32, dLo64) ); - IRAtom* w0 = assignNew( 'I', pce, Ity_I32, - unop(Iop_64to32, dLo64) ); - gen_dirty_v_6W( pce, - &check_store16_ms4B_4B_4B_ls4B, - "check_store16_ms4B_4B_4B_ls4B", - addr, addrv, w3, w2, w1, w0 ); - break; - } - default: - ppIRType(d_ty); tl_assert(0); - } - } else { - /* ------ 64 bit host/guest (cough, cough) ------ */ - switch (d_ty) { - /* Integer word case */ - case Ity_I64: { - IRExpr* datav = schemeEw_Atom( pce, data ); - if (resSC == IRTemp_INVALID) { - /* "normal" store */ - gen_dirty_v_WWWW( pce, - &check_store8_P, "check_store8_P", - addr, addrv, data, datav ); - } else { - IRTemp resSC64 - = gen_dirty_W_WWWW( pce, - &check_store8C_P, - "check_store8C_P", - addr, addrv, data, datav ); - assign( 'I', pce, resSC, unop(Iop_64to1, mkexpr(resSC64)) ); - } - break; - } - /* Integer subword cases */ - case Ity_I32: - if (resSC == IRTemp_INVALID) { - /* "normal" store */ - gen_dirty_v_WWW( pce, - &check_store4, "check_store4", - addr, addrv, - uwiden_to_host_word( pce, data )); - } else { - /* store-conditional; need to snarf the success bit */ - IRTemp resSC64 - = gen_dirty_W_WWW( pce, - &check_store4C, - "check_store4C", - addr, addrv, - uwiden_to_host_word( pce, data )); - assign( 'I', pce, resSC, unop(Iop_64to1, mkexpr(resSC64)) ); - } - break; - case Ity_I16: - gen_dirty_v_WWW( pce, - &check_store2, "check_store2", - addr, addrv, - uwiden_to_host_word( pce, data )); - break; - case Ity_I8: - gen_dirty_v_WWW( pce, - &check_store1, "check_store1", - addr, addrv, - uwiden_to_host_word( pce, data )); - break; - /* 128-bit vector. Pass store data in 2 64-bit pieces. */ - case Ity_V128: { - IRAtom* dHi64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_V128HIto64, data) ); - IRAtom* dLo64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_V128to64, data) ); - gen_dirty_v_WWWW( pce, - &check_store16_ms8B_ls8B, - "check_store16_ms8B_ls8B", - addr, addrv, dHi64, dLo64 ); - break; - } - /* 64-bit float. */ - case Ity_F64: { - IRAtom* dI = assignNew( 'I', pce, Ity_I64, - unop(Iop_ReinterpF64asI64, - data ) ); - gen_dirty_v_WWW( pce, - &check_store8_all8B, - "check_store8_all8B", - addr, addrv, dI ); - break; - } - /* 32-bit float. We can just use _store4, but need - to futz with the argument type. */ - case Ity_F32: { - IRAtom* i32 = assignNew( 'I', pce, Ity_I32, - unop(Iop_ReinterpF32asI32, - data ) ); - IRAtom* i64 = assignNew( 'I', pce, Ity_I64, - unop(Iop_32Uto64, - i32 ) ); - gen_dirty_v_WWW( pce, - &check_store4, - "check_store4", - addr, addrv, i64 ); - break; - } - default: - ppIRType(d_ty); tl_assert(0); - } - } - /* And don't copy the original, since the helper does the store. - Ick. */ - return True; /* store was successfully instrumented */ -} - - -/* schemeS helper for doing loads, pulled out into a function because - it needs to handle both normal loads and load-linked's. -*/ -static void schemeS_load ( PCEnv* pce, IRExpr* addr, IRType e_ty, IRTemp dstv ) -{ - HChar* h_nm = NULL; - void* h_fn = NULL; - IRExpr* addrv = NULL; - if (e_ty == pce->gWordTy) { - tl_assert(dstv != IRTemp_INVALID); - } else { - tl_assert(dstv == IRTemp_INVALID); - } - if (pce->gWordTy == Ity_I32) { - /* 32 bit host/guest (cough, cough) */ - switch (e_ty) { - /* Ity_I32: helper returns shadow value. */ - case Ity_I32: h_fn = &check_load4_P; - h_nm = "check_load4_P"; break; - /* all others: helper does not return a shadow - value. */ - case Ity_V128: h_fn = &check_load16; - h_nm = "check_load16"; break; - case Ity_I64: - case Ity_F64: h_fn = &check_load8; - h_nm = "check_load8"; break; - case Ity_F32: h_fn = &check_load4; - h_nm = "check_load4"; break; - case Ity_I16: h_fn = &check_load2; - h_nm = "check_load2"; break; - case Ity_I8: h_fn = &check_load1; - h_nm = "check_load1"; break; - default: ppIRType(e_ty); tl_assert(0); - } - addrv = schemeEw_Atom( pce, addr ); - if (e_ty == Ity_I32) { - assign( 'I', pce, dstv, - mkexpr( gen_dirty_W_WW( pce, h_fn, h_nm, - addr, addrv )) ); - } else { - gen_dirty_v_WW( pce, NULL, h_fn, h_nm, addr, addrv ); - } - } else { - /* 64 bit host/guest (cough, cough) */ - switch (e_ty) { - /* Ity_I64: helper returns shadow value. */ - case Ity_I64: h_fn = &check_load8_P; - h_nm = "check_load8_P"; break; - /* all others: helper does not return a shadow - value. */ - case Ity_V128: h_fn = &check_load16; - h_nm = "check_load16"; break; - case Ity_F64: h_fn = &check_load8; - h_nm = "check_load8"; break; - case Ity_F32: - case Ity_I32: h_fn = &check_load4; - h_nm = "check_load4"; break; - case Ity_I16: h_fn = &check_load2; - h_nm = "check_load2"; break; - case Ity_I8: h_fn = &check_load1; - h_nm = "check_load1"; break; - default: ppIRType(e_ty); tl_assert(0); - } - addrv = schemeEw_Atom( pce, addr ); - if (e_ty == Ity_I64) { - assign( 'I', pce, dstv, - mkexpr( gen_dirty_W_WW( pce, h_fn, h_nm, - addr, addrv )) ); - } else { - gen_dirty_v_WW( pce, NULL, h_fn, h_nm, addr, addrv ); - } - } -} - - -/* Generate into 'pce', instrumentation for 'st'. Also copy 'st' - itself into 'pce' (the caller does not do so). This is somewhat - complex and relies heavily on the assumption that the incoming IR - is in flat form. - - Generally speaking, the instrumentation is placed after the - original statement, so that results computed by the original can be - used in the instrumentation. However, that isn't safe for memory - references, since we need the instrumentation (hence bounds check - and potential error message) to happen before the reference itself, - as the latter could cause a fault. */ -static void schemeS ( PCEnv* pce, IRStmt* st ) -{ - tl_assert(st); - tl_assert(isFlatIRStmt(st)); - - switch (st->tag) { - - case Ist_CAS: { - /* In all these CAS cases, the did-we-succeed? comparison is - done using Iop_CasCmpEQ{8,16,32,64} rather than the plain - Iop_CmpEQ equivalents. This isn't actually necessary, - since the generated IR is not going to be subsequently - instrumented by Memcheck. But it's done for consistency. - See COMMENT_ON_CasCmpEQ in memcheck/mc_translate.c for - background/rationale. */ - IRCAS* cas = st->Ist.CAS.details; - IRType elTy = typeOfIRExpr(pce->sb->tyenv, cas->expdLo); - if (cas->oldHi == IRTemp_INVALID) { - /* ------------ SINGLE CAS ------------ */ - /* -- single cas -- 32 bits, on 32-bit host -- */ - /* -- single cas -- 64 bits, on 64-bit host -- */ - /* -- viz, single cas, native-word case -- */ - if ( (pce->gWordTy == Ity_I32 && elTy == Ity_I32) - || (pce->gWordTy == Ity_I64 && elTy == Ity_I64) ) { - // 32 bit host translation scheme; 64-bit is analogous - // old# = check_load4_P(addr, addr#) - // old = CAS(addr:expd->new) [COPY] - // success = CasCmpEQ32(old,expd) - // if (success) do_shadow_store4_P(addr, new#) - IRTemp success; - Bool is64 = elTy == Ity_I64; - IROp cmpEQ = is64 ? Iop_CasCmpEQ64 : Iop_CasCmpEQ32; - void* r_fn = is64 ? &check_load8_P : &check_load4_P; - HChar* r_nm = is64 ? "check_load8_P" : "check_load4_P"; - void* w_fn = is64 ? &do_shadow_store8_P : &do_shadow_store4_P; - void* w_nm = is64 ? "do_shadow_store8_P" : "do_shadow_store4_P"; - IRExpr* addr = cas->addr; - IRExpr* addrV = schemeEw_Atom(pce, addr); - IRTemp old = cas->oldLo; - IRTemp oldV = newShadowTmp(pce, old); - IRExpr* nyu = cas->dataLo; - IRExpr* nyuV = schemeEw_Atom(pce, nyu); - IRExpr* expd = cas->expdLo; - assign( 'I', pce, oldV, - mkexpr( gen_dirty_W_WW( pce, r_fn, r_nm, addr, addrV ))); - stmt( 'C', pce, st ); - success = newTemp(pce, Ity_I1, NonShad); - assign('I', pce, success, binop(cmpEQ, mkexpr(old), expd)); - gen_dirty_v_WW( pce, mkexpr(success), w_fn, w_nm, addr, nyuV ); - } - else - /* -- single cas -- 8 or 16 bits, on 32-bit host -- */ - /* -- viz, single cas, 32-bit subword cases -- */ - if (pce->gWordTy == Ity_I32 - && (elTy == Ity_I8 || elTy == Ity_I16)) { - // 8-bit translation scheme; 16-bit is analogous - // check_load1(addr, addr#) - // old = CAS(addr:expd->new) [COPY] - // success = CasCmpEQ8(old,expd) - // if (success) nonptr_or_unknown_range(addr, 1) - IRTemp success; - Bool is16 = elTy == Ity_I16; - IRExpr* addr = cas->addr; - IRExpr* addrV = schemeEw_Atom(pce, addr); - IRTemp old = cas->oldLo; - IRExpr* expd = cas->expdLo; - void* h_fn = is16 ? &check_load2 : &check_load1; - HChar* h_nm = is16 ? "check_load2" : "check_load1"; - IROp cmpEQ = is16 ? Iop_CasCmpEQ16 : Iop_CasCmpEQ8; - Int szB = is16 ? 2 : 1; - gen_dirty_v_WW( pce, NULL, h_fn, h_nm, addr, addrV ); - stmt( 'C', pce, st ); - success = newTemp(pce, Ity_I1, NonShad); - assign('I', pce, success, - binop(cmpEQ, mkexpr(old), expd)); - gen_call_nonptr_or_unknown_range( pce, mkexpr(success), - addr, mkIRExpr_HWord(szB) ); - } - else - /* -- single cas -- 8, 16 or 32 bits, on 64-bit host -- */ - /* -- viz, single cas, 64-bit subword cases -- */ - if (pce->gWordTy == Ity_I64 - && (elTy == Ity_I8 || elTy == Ity_I16 || elTy == Ity_I32)) { - // 8-bit translation scheme; 16/32-bit are analogous - // check_load1(addr, addr#) - // old = CAS(addr:expd->new) [COPY] - // success = CasCmpEQ8(old,expd) - // if (success) nonptr_or_unknown_range(addr, 1) - IRTemp success; - Bool is16 = elTy == Ity_I16; - Bool is32 = elTy == Ity_I32; - IRExpr* addr = cas->addr; - IRExpr* addrV = schemeEw_Atom(pce, addr); - IRTemp old = cas->oldLo; - IRExpr* expd = cas->expdLo; - void* h_fn = is32 ? &check_load4 - : (is16 ? &check_load2 : &check_load1); - HChar* h_nm = is32 ? "check_load4" - : (is16 ? "check_load2" : "check_load1"); - IROp cmpEQ = is32 ? Iop_CasCmpEQ32 - : (is16 ? Iop_CasCmpEQ16 : Iop_CasCmpEQ8); - Int szB = is32 ? 4 : (is16 ? 2 : 1); - gen_dirty_v_WW( pce, NULL, h_fn, h_nm, addr, addrV ); - stmt( 'C', pce, st ); - success = newTemp(pce, Ity_I1, NonShad); - assign('I', pce, success, - binop(cmpEQ, mkexpr(old), expd)); - gen_call_nonptr_or_unknown_range( pce, mkexpr(success), - addr, mkIRExpr_HWord(szB) ); - } - else - goto unhandled; - } else { - /* ------------ DOUBLE CAS ------------ */ - /* Punt on bigendian DCAS. In fact it's probably trivial - to do; just swap the individual shadow loads/stores - around in memory, but we'd have to verify it, and there - is no use case. So punt. */ - if (cas->end != Iend_LE) - goto unhandled; - /* -- double cas -- 2 x 32 bits, on 32-bit host -- */ - /* -- double cas -- 2 x 64 bits, on 64-bit host -- */ - /* -- viz, double cas, native-word case -- */ - if ( (pce->gWordTy == Ity_I32 && elTy == Ity_I32) - || (pce->gWordTy == Ity_I64 && elTy == Ity_I64) ) { - // 32 bit host translation scheme; 64-bit is analogous - // oldHi# = check_load4_P(addr+4, addr#) - // oldLo# = check_load4_P(addr+0, addr#) - // oldHi/Lo = DCAS(addr:expdHi/Lo->newHi/Lo) [COPY] - // success = CasCmpEQ32(oldHi,expdHi) && CasCmpEQ32(oldLo,expdLo) - // = ((oldHi ^ expdHi) | (oldLo ^ expdLo)) == 0 - // if (success) do_shadow_store4_P(addr+4, newHi#) - // if (success) do_shadow_store4_P(addr+0, newLo#) - IRTemp diffHi, diffLo, diff, success, addrpp; - Bool is64 = elTy == Ity_I64; - void* r_fn = is64 ? &check_load8_P : &check_load4_P; - HChar* r_nm = is64 ? "check_load8_P" : "check_load4_P"; - void* w_fn = is64 ? &do_shadow_store8_P - : &do_shadow_store4_P; - void* w_nm = is64 ? "do_shadow_store8_P" - : "do_shadow_store4_P"; - IROp opADD = is64 ? Iop_Add64 : Iop_Add32; - IROp opXOR = is64 ? Iop_Xor64 : Iop_Xor32; - IROp opOR = is64 ? Iop_Or64 : Iop_Or32; - IROp opCasCmpEQ = is64 ? Iop_CasCmpEQ64 : Iop_CasCmpEQ32; - IRExpr* step = is64 ? mkU64(8) : mkU32(4); - IRExpr* zero = is64 ? mkU64(0) : mkU32(0); - IRExpr* addr = cas->addr; - IRExpr* addrV = schemeEw_Atom(pce, addr); - IRTemp oldLo = cas->oldLo; - IRTemp oldLoV = newShadowTmp(pce, oldLo); - IRTemp oldHi = cas->oldHi; - IRTemp oldHiV = newShadowTmp(pce, oldHi); - IRExpr* nyuLo = cas->dataLo; - IRExpr* nyuLoV = schemeEw_Atom(pce, nyuLo); - IRExpr* nyuHi = cas->dataHi; - IRExpr* nyuHiV = schemeEw_Atom(pce, nyuHi); - IRExpr* expdLo = cas->expdLo; - IRExpr* expdHi = cas->expdHi; - tl_assert(elTy == Ity_I32 || elTy == Ity_I64); - tl_assert(pce->gWordTy == elTy); - addrpp = newTemp(pce, elTy, NonShad); - assign('I', pce, addrpp, binop(opADD, addr, step)); - assign('I', pce, oldHiV, - mkexpr( gen_dirty_W_WW( pce, r_fn, r_nm, - mkexpr(addrpp), addrV )) - ); - assign('I', pce, oldLoV, - mkexpr( gen_dirty_W_WW( pce, r_fn, r_nm, - addr, addrV )) - ); - stmt( 'C', pce, st ); - diffHi = newTemp(pce, elTy, NonShad); - assign('I', pce, diffHi, - binop(opXOR, mkexpr(oldHi), expdHi)); - diffLo = newTemp(pce, elTy, NonShad); - assign('I', pce, diffLo, - binop(opXOR, mkexpr(oldLo), expdLo)); - diff = newTemp(pce, elTy, NonShad); - assign('I', pce, diff, - binop(opOR, mkexpr(diffHi), mkexpr(diffLo))); - success = newTemp(pce, Ity_I1, NonShad); - assign('I', pce, success, - binop(opCasCmpEQ, mkexpr(diff), zero)); - gen_dirty_v_WW( pce, mkexpr(success), - w_fn, w_nm, mkexpr(addrpp), nyuHiV ); - gen_dirty_v_WW( pce, mkexpr(success), - w_fn, w_nm, addr, nyuLoV ); - } - else - /* -- double cas -- 2 x 32 bits, on 64-bit host -- */ - if (pce->gWordTy == Ity_I64 && elTy == Ity_I32) { - // check_load8(addr, addr#) - // oldHi/Lo = DCAS(addr:expdHi/Lo->newHi/Lo) [COPY] - // success = CasCmpEQ32(oldHi,expdHi) && CasCmpEQ32(oldLo,expdLo) - // = ((oldHi ^ expdHi) | (oldLo ^ expdLo)) == 0 - // if (success) nonptr_or_unknown_range(addr, 8) - IRTemp diffHi, diffLo, diff, success; - IRExpr* addr = cas->addr; - IRExpr* addrV = schemeEw_Atom(pce, addr); - IRTemp oldLo = cas->oldLo; - IRTemp oldHi = cas->oldHi; - IRExpr* expdLo = cas->expdLo; - IRExpr* expdHi = cas->expdHi; - gen_dirty_v_WW( pce, NULL, &check_load8, "check_load8", - addr, addrV ); - stmt( 'C', pce, st ); - diffHi = newTemp(pce, Ity_I32, NonShad); - assign('I', pce, diffHi, - binop(Iop_Xor32, mkexpr(oldHi), expdHi)); - diffLo = newTemp(pce, Ity_I32, NonShad); - assign('I', pce, diffLo, - binop(Iop_Xor32, mkexpr(oldLo), expdLo)); - diff = newTemp(pce, Ity_I32, NonShad); - assign('I', pce, diff, - binop(Iop_Or32, mkexpr(diffHi), mkexpr(diffLo))); - success = newTemp(pce, Ity_I1, NonShad); - assign('I', pce, success, - binop(Iop_CasCmpEQ32, mkexpr(diff), mkU32(0))); - gen_call_nonptr_or_unknown_range( pce, mkexpr(success), - addr, mkU64(8) ); - } - else - goto unhandled; - } - break; - } - - case Ist_LLSC: { - if (st->Ist.LLSC.storedata == NULL) { - /* LL */ - IRTemp dst = st->Ist.LLSC.result; - IRType dataTy = typeOfIRTemp(pce->sb->tyenv, dst); - Bool isWord = dataTy == pce->gWordTy; - IRTemp dstv = isWord ? newShadowTmp( pce, dst ) - : IRTemp_INVALID; - schemeS_load( pce, st->Ist.LLSC.addr, dataTy, dstv ); - /* copy the original -- must happen after the helper call */ - stmt( 'C', pce, st ); - } else { - /* SC */ - schemeS_store( pce, - st->Ist.LLSC.storedata, - st->Ist.LLSC.addr, - st->Ist.LLSC.result ); - /* Don't copy the original, since the helper does the - store itself. */ - } - break; - } - - case Ist_Dirty: { - Int i; - IRDirty* di; - stmt( 'C', pce, st ); - /* nasty. assumes that (1) all helpers are unconditional, - and (2) all outputs are non-ptr */ - di = st->Ist.Dirty.details; - /* deal with the return tmp, if any */ - if (di->tmp != IRTemp_INVALID - && typeOfIRTemp(pce->sb->tyenv, di->tmp) == pce->gWordTy) { - /* di->tmp is shadowed. Set it to NONPTR. */ - IRTemp dstv = newShadowTmp( pce, di->tmp ); - if (pce->gWordTy == Ity_I32) { - assign( 'I', pce, dstv, mkU32( (UWord)NONPTR )); - } else { - assign( 'I', pce, dstv, mkU64( (UWord)NONPTR )); - } - } - /* apply the nonptr_or_unknown technique to any parts of - the guest state that happen to get written */ - for (i = 0; i < di->nFxState; i++) { - IntRegInfo iii; - tl_assert(di->fxState[i].fx != Ifx_None); - if (di->fxState[i].fx == Ifx_Read) - continue; /* this bit is only read -- not interesting */ - get_IntRegInfo( &iii, di->fxState[i].offset, - di->fxState[i].size ); - tl_assert(iii.n_offsets >= -1 - && iii.n_offsets <= N_INTREGINFO_OFFSETS); - /* Deal with 3 possible cases, same as with Ist_Put - elsewhere in this function. */ - if (iii.n_offsets == -1) { - /* case (1): exact write of an integer register. */ - IRAtom* a1 - = assignNew( 'I', pce, pce->gWordTy, - IRExpr_Get( iii.offsets[i], pce->gWordTy )); - IRTemp a2 = gen_call_nonptr_or_unknown_w( pce, a1 ); - stmt( 'I', pce, IRStmt_Put( iii.offsets[i] - + pce->guest_state_sizeB, - mkexpr(a2) )); - } else { - /* when == 0: case (3): no instrumentation needed */ - /* when > 0: case (2) .. complex case. Fish out the - stored value for the whole register, heave it - through nonptr_or_unknown, and use that as the new - shadow value. */ - tl_assert(iii.n_offsets >= 0 - && iii.n_offsets <= N_INTREGINFO_OFFSETS); - gen_nonptr_or_unknown_for_III( pce, &iii ); - } - } /* for (i = 0; i < di->nFxState; i++) */ - /* finally, deal with memory outputs */ - if (di->mFx != Ifx_None) { - tl_assert(di->mAddr && isIRAtom(di->mAddr)); - tl_assert(di->mSize > 0); - gen_call_nonptr_or_unknown_range( pce, NULL, di->mAddr, - mkIRExpr_HWord(di->mSize)); - } - break; - } - - case Ist_NoOp: - break; - - /* nothing interesting in these; just copy them through */ - case Ist_AbiHint: - case Ist_MBE: - case Ist_Exit: - case Ist_IMark: - stmt( 'C', pce, st ); - break; - - case Ist_PutI: { - IRRegArray* descr = st->Ist.PutI.descr; - stmt( 'C', pce, st ); - tl_assert(descr && descr->elemTy); - if (is_integer_guest_reg_array(descr)) { - /* if this fails, is_integer_guest_reg_array is returning - bogus results */ - tl_assert(descr->elemTy == pce->gWordTy); - stmt( - 'I', pce, - IRStmt_PutI( - mkIRRegArray(descr->base + pce->guest_state_sizeB, - descr->elemTy, descr->nElems), - st->Ist.PutI.ix, - st->Ist.PutI.bias, - schemeEw_Atom( pce, st->Ist.PutI.data) - ) - ); - } - break; - } - - case Ist_Put: { - /* PUT(offset) = atom */ - /* 3 cases: - 1. It's a complete write of an integer register. Get hold of - 'atom's shadow value and write it in the shadow state. - 2. It's a partial write of an integer register. Let the write - happen, then fish out the complete register value and see if, - via range checking, consultation of tea leaves, etc, its - shadow value can be upgraded to anything useful. - 3. It is none of the above. Generate no instrumentation. */ - IntRegInfo iii; - IRType ty; - stmt( 'C', pce, st ); - ty = typeOfIRExpr(pce->sb->tyenv, st->Ist.Put.data); - get_IntRegInfo( &iii, st->Ist.Put.offset, - sizeofIRType(ty) ); - if (iii.n_offsets == -1) { - /* case (1): exact write of an integer register. */ - tl_assert(ty == pce->gWordTy); - stmt( 'I', pce, - IRStmt_Put( st->Ist.Put.offset - + pce->guest_state_sizeB, - schemeEw_Atom( pce, st->Ist.Put.data)) ); - } else { - /* when == 0: case (3): no instrumentation needed */ - /* when > 0: case (2) .. complex case. Fish out the - stored value for the whole register, heave it through - nonptr_or_unknown, and use that as the new shadow - value. */ - tl_assert(iii.n_offsets >= 0 - && iii.n_offsets <= N_INTREGINFO_OFFSETS); - gen_nonptr_or_unknown_for_III( pce, &iii ); - } - break; - } /* case Ist_Put */ - - case Ist_Store: { - Bool ok = schemeS_store( pce, - st->Ist.Store.data, - st->Ist.Store.addr, - IRTemp_INVALID/*not a SC*/ ); - if (!ok) goto unhandled; - /* Don't copy the original, since the helper does the store - itself. */ - break; - } - - case Ist_WrTmp: { - /* This is the only place we have to deal with the full - IRExpr range. In all other places where an IRExpr could - appear, we in fact only get an atom (Iex_RdTmp or - Iex_Const). */ - IRExpr* e = st->Ist.WrTmp.data; - IRType e_ty = typeOfIRExpr( pce->sb->tyenv, e ); - Bool isWord = e_ty == pce->gWordTy; - IRTemp dst = st->Ist.WrTmp.tmp; - IRTemp dstv = isWord ? newShadowTmp( pce, dst ) - : IRTemp_INVALID; - - switch (e->tag) { - - case Iex_Const: { - stmt( 'C', pce, st ); - if (isWord) - assign( 'I', pce, dstv, schemeEw_Atom( pce, e ) ); - break; - } - - case Iex_CCall: { - stmt( 'C', pce, st ); - if (isWord) - assign( 'I', pce, dstv, - mkexpr( gen_call_nonptr_or_unknown_w( - pce, mkexpr(dst)))); - break; - } - - case Iex_Mux0X: { - /* Just steer the shadow values in the same way as the - originals. */ - stmt( 'C', pce, st ); - if (isWord) - assign( 'I', pce, dstv, - IRExpr_Mux0X( - e->Iex.Mux0X.cond, - schemeEw_Atom( pce, e->Iex.Mux0X.expr0 ), - schemeEw_Atom( pce, e->Iex.Mux0X.exprX ) )); - break; - } - - case Iex_RdTmp: { - stmt( 'C', pce, st ); - if (isWord) - assign( 'I', pce, dstv, schemeEw_Atom( pce, e )); - break; - } - - case Iex_Load: { - schemeS_load( pce, e->Iex.Load.addr, e_ty, dstv ); - /* copy the original -- must happen after the helper call */ - stmt( 'C', pce, st ); - break; - } - - case Iex_GetI: { - IRRegArray* descr = e->Iex.GetI.descr; - stmt( 'C', pce, st ); - tl_assert(descr && descr->elemTy); - if (is_integer_guest_reg_array(descr)) { - /* if this fails, is_integer_guest_reg_array is - returning bogus results */ - tl_assert(isWord); - assign( - 'I', pce, dstv, - IRExpr_GetI( - mkIRRegArray(descr->base + pce->guest_state_sizeB, - descr->elemTy, descr->nElems), - e->Iex.GetI.ix, - e->Iex.GetI.bias - ) - ); - } - break; - } - - case Iex_Get: { - stmt( 'C', pce, st ); - if (isWord) { - /* guest-word-typed tmp assignment, so it will have a - shadow tmp, and we must make an assignment to - that */ - if (is_integer_guest_reg(e->Iex.Get.offset, - sizeofIRType(e->Iex.Get.ty))) { - assign( 'I', pce, dstv, - IRExpr_Get( e->Iex.Get.offset - + pce->guest_state_sizeB, - e->Iex.Get.ty) ); - } else { - if (pce->hWordTy == Ity_I32) { - assign( 'I', pce, dstv, mkU32( (UWord)NONPTR )); - } else { - assign( 'I', pce, dstv, mkU64( (UWord)NONPTR )); - } - } - } else { - /* tmp isn't guest-word-typed, so isn't shadowed, so - generate no instrumentation */ - } - break; - } - - case Iex_Unop: { - stmt( 'C', pce, st ); - tl_assert(isIRAtom(e->Iex.Unop.arg)); - if (isWord) - instrument_arithop( pce, dst, dstv, e->Iex.Unop.op, - e->Iex.Unop.arg, - NULL, NULL, NULL ); - break; - } - - case Iex_Binop: { - stmt( 'C', pce, st ); - tl_assert(isIRAtom(e->Iex.Binop.arg1)); - tl_assert(isIRAtom(e->Iex.Binop.arg2)); - if (isWord) - instrument_arithop( pce, dst, dstv, e->Iex.Binop.op, - e->Iex.Binop.arg1, e->Iex.Binop.arg2, - NULL, NULL ); - break; - } - - case Iex_Triop: { - stmt( 'C', pce, st ); - tl_assert(isIRAtom(e->Iex.Triop.arg1)); - tl_assert(isIRAtom(e->Iex.Triop.arg2)); - tl_assert(isIRAtom(e->Iex.Triop.arg3)); - if (isWord) - instrument_arithop( pce, dst, dstv, e->Iex.Triop.op, - e->Iex.Triop.arg1, e->Iex.Triop.arg2, - e->Iex.Triop.arg3, NULL ); - break; - } - - case Iex_Qop: { - stmt( 'C', pce, st ); - tl_assert(isIRAtom(e->Iex.Qop.arg1)); - tl_assert(isIRAtom(e->Iex.Qop.arg2)); - tl_assert(isIRAtom(e->Iex.Qop.arg3)); - tl_assert(isIRAtom(e->Iex.Qop.arg4)); - if (isWord) - instrument_arithop( pce, dst, dstv, e->Iex.Qop.op, - e->Iex.Qop.arg1, e->Iex.Qop.arg2, - e->Iex.Qop.arg3, e->Iex.Qop.arg4 ); - break; - } - - default: - goto unhandled; - } /* switch (e->tag) */ - - break; - - } /* case Ist_WrTmp */ - - default: - unhandled: - ppIRStmt(st); - tl_assert(0); - } -} - - -static IRTemp for_sg__newIRTemp_cb ( IRType ty, void* opaque ) -{ - PCEnv* pce = (PCEnv*)opaque; - return newTemp( pce, ty, NonShad ); -} - - -IRSB* h_instrument ( VgCallbackClosure* closure, - IRSB* sbIn, - VexGuestLayout* layout, - VexGuestExtents* vge, - IRType gWordTy, IRType hWordTy ) -{ - Bool verboze = 0||False; - Int i /*, j*/; - PCEnv pce; - struct _SGEnv* sgenv; - - if (gWordTy != hWordTy) { - /* We don't currently support this case. */ - VG_(tool_panic)("host/guest word size mismatch"); - } + if (gWordTy != hWordTy) { + /* We don't currently support this case. */ + VG_(tool_panic)("host/guest word size mismatch"); + } /* Check we're not completely nuts */ tl_assert(sizeof(UWord) == sizeof(void*)); @@ -5337,9 +659,6 @@ IRSB* h_instrument ( VgCallbackClosure* closure, sgenv = sg_instrument_init( for_sg__newIRTemp_cb, (void*)&pce ); - /* Stay sane. These two should agree! */ - tl_assert(layout->total_sizeB == PC_SIZEOF_GUEST_STATE); - /* Copy verbatim any IR preamble preceding the first IMark */ i = 0; @@ -5351,44 +670,6 @@ IRSB* h_instrument ( VgCallbackClosure* closure, i++; } - /* Nasty problem. IR optimisation of the pre-instrumented IR may - cause the IR following the preamble to contain references to IR - temporaries defined in the preamble. Because the preamble isn't - instrumented, these temporaries don't have any shadows. - Nevertheless uses of them following the preamble will cause - memcheck to generate references to their shadows. End effect is - to cause IR sanity check failures, due to references to - non-existent shadows. This is only evident for the complex - preambles used for function wrapping on TOC-afflicted platforms - (ppc64-linux, ppc32-aix5, ppc64-aix5). - - The following loop therefore scans the preamble looking for - assignments to temporaries. For each one found it creates an - assignment to the corresponding shadow temp, marking it as - 'defined'. This is the same resulting IR as if the main - instrumentation loop before had been applied to the statement - 'tmp = CONSTANT'. - */ -#if 0 - // FIXME: this isn't exactly right; only needs to generate shadows - // for guest-word-typed temps - for (j = 0; j < i; j++) { - if (sbIn->stmts[j]->tag == Ist_WrTmp) { - /* findShadowTmpV checks its arg is an original tmp; - no need to assert that here. */ - IRTemp tmp_o = sbIn->stmts[j]->Ist.WrTmp.tmp; - IRTemp tmp_s = findShadowTmp(&pce, tmp_o); - IRType ty_s = typeOfIRTemp(sbIn->tyenv, tmp_s); - assign( 'V', &pce, tmp_s, definedOfType( ty_s ) ); - if (0) { - VG_(printf)("create shadow tmp for preamble tmp [%d] ty ", j); - ppIRType( ty_s ); - VG_(printf)("\n"); - } - } - } -#endif - /* Iterate over the remaining stmts to generate instrumentation. */ tl_assert(sbIn->stmts_used > 0); @@ -5400,8 +681,8 @@ IRSB* h_instrument ( VgCallbackClosure* closure, /* generate sg_ instrumentation for this stmt */ sg_instrument_IRStmt( sgenv, pce.sb, sbIn->stmts[i], layout, gWordTy, hWordTy ); - /* generate h_ instrumentation for this stmt */ - schemeS( &pce, sbIn->stmts[i] ); + + stmt( 'C', &pce, sbIn->stmts[i] ); } /* generate sg_ instrumentation for the final jump */ @@ -5420,21 +701,6 @@ IRSB* h_instrument ( VgCallbackClosure* closure, } -/*--------------------------------------------------------------------*/ -/*--- Initialisation ---*/ -/*--------------------------------------------------------------------*/ - -void h_pre_clo_init ( void ) -{ - // Other initialisation - init_shadow_memory(); - init_lossage(); -} - -void h_post_clo_init ( void ) -{ -} - /*--------------------------------------------------------------------*/ /*--- Finalisation ---*/ /*--------------------------------------------------------------------*/ @@ -5455,23 +721,6 @@ void h_fini ( Int exitcode ) " h_: %'10llu Segs allocd, %'10llu Segs recycled\n", stats__segs_allocd, stats__segs_recycled); } - -#if 0 - if (h_clo_lossage_check) { - VG_(message)(Vg_UserMsg, "\n"); - VG_(message)(Vg_UserMsg, "%12lld total memory references\n", - stats__tot_mem_refs); - VG_(message)(Vg_UserMsg, "%12lld of which are in a known segment\n", - stats__refs_in_a_seg); - VG_(message)(Vg_UserMsg, "%12lld of which are 'lost' w.r.t the seg\n", - stats__refs_lost_seg); - VG_(message)(Vg_UserMsg, "\n"); - show_lossage(); - VG_(message)(Vg_UserMsg, "\n"); - } else { - tl_assert( 0 == VG_(OSetGen_Size)(lossage) ); - } -#endif } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.h index 37324fa6e..21be3bb57 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/h_main.h @@ -67,26 +67,6 @@ void h_replace___builtin_vec_delete ( ThreadId tid, void* p ); void* h_replace_realloc ( ThreadId tid, void* p_old, SizeT new_size ); SizeT h_replace_malloc_usable_size ( ThreadId tid, void* p ); -void h_new_mem_startup( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ); -void h_new_mem_mmap( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ); -void h_die_mem_munmap( Addr a, SizeT len ); -void h_pre_mem_access ( CorePart part, ThreadId tid, Char* s, - Addr base, SizeT size ); -void h_pre_mem_read_asciiz ( CorePart part, ThreadId tid, - Char* s, Addr lo ); - -void h_post_reg_write_demux ( CorePart part, ThreadId tid, - PtrdiffT guest_state_offset, SizeT size); -void h_post_reg_write_clientcall(ThreadId tid, PtrdiffT guest_state_offset, - SizeT size, Addr f ); - -void h_pre_syscall ( ThreadId tid, UInt syscallno, - UWord* args, UInt nArgs ); -void h_post_syscall ( ThreadId tid, UInt syscallno, - UWord* args, UInt nArgs, SysRes res ); - /* Note that this also does the sg_ instrumentation. */ IRSB* h_instrument ( VgCallbackClosure* closure, IRSB* sbIn, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.c index f6aa3b35f..429579f76 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.c @@ -126,6 +126,7 @@ typedef SSizeT sszB; /* -ve is write, +ve is read */ HChar expect[128]; HChar actual[128]; + HChar delta[32]; // text showing relation to expected } SorG; struct { Addr addr; @@ -155,7 +156,7 @@ typedef void sg_record_error_SorG ( ThreadId tid, Addr addr, SSizeT sszB, - HChar* expect, HChar* actual ) + HChar* expect, HChar* actual, HChar* delta ) { XError xe; VG_(memset)(&xe, 0, sizeof(xe)); @@ -166,8 +167,11 @@ void sg_record_error_SorG ( ThreadId tid, expect, sizeof(xe.XE.SorG.expect) ); VG_(strncpy)( &xe.XE.SorG.actual[0], actual, sizeof(xe.XE.SorG.actual) ); + VG_(strncpy)( &xe.XE.SorG.delta[0], + delta, sizeof(xe.XE.SorG.delta) ); xe.XE.SorG.expect[ sizeof(xe.XE.SorG.expect)-1 ] = 0; xe.XE.SorG.actual[ sizeof(xe.XE.SorG.actual)-1 ] = 0; + xe.XE.SorG.delta[ sizeof(xe.XE.SorG.delta)-1 ] = 0; VG_(maybe_record_error)( tid, XE_SorG, 0, NULL, &xe ); } @@ -335,7 +339,8 @@ void pc_pp_Error ( Error* err ) emit( " Address %#lx expected vs actual:\n", xe->XE.SorG.addr ); emit( " Expected: %s\n", &xe->XE.SorG.expect[0] ); emit( " Actual: %s\n", &xe->XE.SorG.actual[0] ); - + if (xe->XE.SorG.delta[0] != 0) + emit(" Actual: is %s Expected\n", &xe->XE.SorG.delta[0]); } break; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.h index 7fb98f8ce..676efe5f5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_common.h @@ -38,7 +38,7 @@ typedef struct _Seg Seg; /* abstract every except in h_main.c */ void sg_record_error_SorG ( ThreadId tid, Addr addr, SSizeT sszB, - HChar* expect, HChar* actual ); + HChar* expect, HChar* actual, HChar* delta ); void h_record_heap_error( Addr a, SizeT size, Seg* vseg, Bool is_write ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_main.c index 782cfd431..6997bb44a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/pc_main.c @@ -47,104 +47,12 @@ #include "h_main.h" -////////////////////////////////////////////////////////////// -// // -// // -// // -////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////// // // // main // // // ////////////////////////////////////////////////////////////// -static void pc_fini ( Int exitcode ) { - h_fini( exitcode ); - sg_fini( exitcode ); -} - -static void pc_die_mem_stack ( Addr old_SP, SizeT len ) { - /* h_die_mem_stack( old_SP, len ); */ - sg_die_mem_stack( old_SP, len ); -} - -static -void pc_pre_thread_ll_create ( ThreadId parent, ThreadId child ) { - /* h_pre_thread_ll_create(); */ - sg_pre_thread_ll_create(parent,child); -} - -static void pc_pre_thread_first_insn ( ThreadId tid ) { - /* h_pre_thread_first_insn(tid); */ - sg_pre_thread_first_insn(tid); -} - -static -void pc_new_mem_mmap ( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ) -{ - h_new_mem_mmap(a, len, rr, ww, xx, di_handle); - sg_new_mem_mmap(a, len, rr, ww, xx, di_handle); -} - -static -void pc_new_mem_startup ( Addr a, SizeT len, - Bool rr, Bool ww, Bool xx, ULong di_handle ) -{ - h_new_mem_startup(a, len, rr, ww, xx, di_handle); - sg_new_mem_startup(a, len, rr, ww, xx, di_handle); -} - -static void pc_die_mem_munmap ( Addr a, SizeT len ) { - h_die_mem_munmap(a, len); - sg_die_mem_munmap(a, len); -} - -static void pc_pre_mem_read ( CorePart part, ThreadId tid, Char* s, - Addr base, SizeT size ) { - h_pre_mem_access(part, tid, s, base, size ); - /* sg_pre_mem_read(part, tid, s, base, size); */ -} - -static void pc_pre_mem_read_asciiz ( CorePart part, ThreadId tid, - Char* s, Addr lo ) -{ - h_pre_mem_read_asciiz(part, tid, s, lo); - /* sg_pre_mem_read_asciiz(part, tid, s, lo); */ -} - -static void pc_pre_mem_write ( CorePart part, ThreadId tid, Char* s, - Addr base, SizeT size ) { - h_pre_mem_access(part, tid, s, base, size); - /* sg_pre_mem_write(part, tid, s, base, size); */ -} - -static void pc_post_clo_init ( void ) -{ - h_post_clo_init(); - sg_post_clo_init(); -# if defined(VGA_x86) || defined(VGA_amd64) - /* nothing */ -# elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm) - if (VG_(clo_verbosity) >= 1 && sg_clo_enable_sg_checks) { - VG_(message)(Vg_UserMsg, - "WARNING: exp-ptrcheck on ppc32/ppc64/arm platforms: " - "stack and global array\n"); - VG_(message)(Vg_UserMsg, - "WARNING: checking is not currently supported. " - "Only heap checking is\n"); - VG_(message)(Vg_UserMsg, - "WARNING: supported. Disabling s/g checks " - "(like --enable-sg-checks=no).\n"); - } - sg_clo_enable_sg_checks = False; -# else -# error "Unsupported architecture" -# endif -} - static void pc_pre_clo_init(void) { #if defined(VGO_darwin) @@ -152,19 +60,26 @@ static void pc_pre_clo_init(void) VG_(printf)("Ptrcheck doesn't work on Darwin yet, sorry.\n"); VG_(exit)(1); #endif +#if defined(VGA_s390x) + /* fixs390: to be done. */ + VG_(printf)("Ptrcheck doesn't work s390x yet, sorry.\n"); + VG_(exit)(1); +#endif + // Can't change the name until we change the names in suppressions + // too. VG_(details_name) ("exp-ptrcheck"); VG_(details_version) (NULL); - VG_(details_description) ("a heap, stack and global array " + VG_(details_description) ("a stack and global array " "overrun detector"); VG_(details_copyright_author)( "Copyright (C) 2003-2010, and GNU GPL'd, by OpenWorks Ltd et al."); VG_(details_bug_reports_to) (VG_BUGS_TO); VG_(details_avg_translation_sizeB) ( 496 ); - VG_(basic_tool_funcs) (pc_post_clo_init, + VG_(basic_tool_funcs) (sg_post_clo_init, h_instrument, - pc_fini); + sg_fini); VG_(needs_malloc_replacement)( h_replace_malloc, h_replace___builtin_new, @@ -194,29 +109,29 @@ static void pc_pre_clo_init(void) VG_(needs_xml_output) (); - VG_(needs_syscall_wrapper)( h_pre_syscall, - h_post_syscall ); + //VG_(needs_syscall_wrapper)( h_pre_syscall, + // h_post_syscall ); VG_(needs_command_line_options)( pc_process_cmd_line_options, pc_print_usage, pc_print_debug_usage ); - VG_(track_die_mem_stack) ( pc_die_mem_stack ); - VG_(track_pre_thread_ll_create) ( pc_pre_thread_ll_create ); - VG_(track_pre_thread_first_insn)( pc_pre_thread_first_insn ); - - VG_(track_new_mem_mmap) ( pc_new_mem_mmap ); - VG_(track_new_mem_startup) ( pc_new_mem_startup); - VG_(track_die_mem_munmap) ( pc_die_mem_munmap ); + VG_(track_die_mem_stack) ( sg_die_mem_stack ); + VG_(track_pre_thread_ll_create) ( sg_pre_thread_ll_create ); + VG_(track_pre_thread_first_insn)( sg_pre_thread_first_insn ); - VG_(track_pre_mem_read) ( pc_pre_mem_read ); - VG_(track_pre_mem_read_asciiz) ( pc_pre_mem_read_asciiz ); - VG_(track_pre_mem_write) ( pc_pre_mem_write ); + VG_(track_new_mem_mmap) ( sg_new_mem_mmap ); + VG_(track_new_mem_startup) ( sg_new_mem_startup); + VG_(track_die_mem_munmap) ( sg_die_mem_munmap ); - VG_(track_post_reg_write_clientcall_return) ( h_post_reg_write_clientcall ); - VG_(track_post_reg_write)( h_post_reg_write_demux ); + /* Really we ought to give handlers for these, to + check that syscalls don't read across array boundaries. */ + /* + VG_(track_pre_mem_read) ( NULL ); + VG_(track_pre_mem_read_asciiz) ( NULL ); + VG_(track_pre_mem_write) ( NULL ); + */ - h_pre_clo_init(); sg_pre_clo_init(); VG_(clo_vex_control).iropt_unroll_thresh = 0; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/sg_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/sg_main.c index 3f0a675ab..f125abe83 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/sg_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/sg_main.c @@ -890,12 +890,62 @@ static Bool eq_Invar ( Invar* i1, Invar* i2 ) tl_assert(0); } +/* Generate a piece of text showing 'ea' is relative to 'invar', if + known. If unknown, generate an empty string. 'buf' must be at + least 32 bytes in size. Also return the absolute value of the + delta, if known, or zero if not known. +*/ +static void gen_delta_str ( /*OUT*/HChar* buf, + /*OUT*/UWord* absDelta, + Invar* inv, Addr ea ) +{ + Addr block = 0; + SizeT szB = 0; + + buf[0] = 0; + *absDelta = 0; + + switch (inv->tag) { + case Inv_Unknown: + case Inv_Unset: + return; /* unknown */ + case Inv_Stack0: + block = inv->Inv.Stack0.addr; + szB = inv->Inv.Stack0.szB; + break; + case Inv_StackN: + block = inv->Inv.StackN.nd->addr; + szB = inv->Inv.StackN.nd->szB; + break; + case Inv_Global: + block = inv->Inv.Global.nd->addr; + szB = inv->Inv.Global.nd->szB; + break; + default: + tl_assert(0); + } + tl_assert(szB > 0); + if (ea < block) { + *absDelta = block - ea; + VG_(sprintf)(buf, "%'lu before", *absDelta); + } + else if (ea >= block + szB) { + *absDelta = ea - (block + szB); + VG_(sprintf)(buf, "%'lu after", *absDelta); + } + else { + // Leave *absDelta at zero. + VG_(sprintf)(buf, "%'lu inside", ea - block); + } +} + + /* Print selected parts of an Invar, suitable for use in error messages. */ static void show_Invar( HChar* buf, Word nBuf, Invar* inv, Word depth ) { HChar* str; - tl_assert(nBuf >= 96); + tl_assert(nBuf >= 128); buf[0] = 0; switch (inv->tag) { case Inv_Unknown: @@ -903,19 +953,22 @@ static void show_Invar( HChar* buf, Word nBuf, Invar* inv, Word depth ) break; case Inv_Stack0: str = "array"; - VG_(sprintf)(buf, "stack %s \"%s\" in this frame", - str, inv->Inv.Stack0.descr->name ); + VG_(sprintf)(buf, "stack %s \"%s\" of size %'lu in this frame", + str, inv->Inv.Stack0.descr->name, + inv->Inv.Stack0.szB ); break; case Inv_StackN: str = "array"; - VG_(sprintf)(buf, "stack %s \"%s\" in frame %lu back from here", + VG_(sprintf)(buf, "stack %s \"%s\" of size %'lu in frame %lu back from here", str, inv->Inv.StackN.nd->descr->name, + inv->Inv.StackN.nd->descr->szB, depth - inv->Inv.StackN.nd->depth ); break; case Inv_Global: str = "array"; - VG_(sprintf)(buf, "global %s \"%s\" in object with soname \"%s\"", + VG_(sprintf)(buf, "global %s \"%s\" of size %'lu in object with soname \"%s\"", str, inv->Inv.Global.nd->descr->name, + inv->Inv.Global.nd->descr->szB, inv->Inv.Global.nd->descr->soname ); break; case Inv_Unset: @@ -1718,7 +1771,7 @@ void helperc__mem_access ( /* Known only at run time: */ Invar new_inv; ThreadId tid = VG_(get_running_tid)(); StackFrame* frame; - HChar bufE[128], bufA[128]; + HChar bufE[160], bufA[160], bufD[32]; stats__total_accesses++; @@ -1757,7 +1810,7 @@ void helperc__mem_access ( /* Known only at run time: */ /* Did we see something different from before? If no, then there's no error. */ - if (eq_Invar(&new_inv, inv)) + if (LIKELY(eq_Invar(&new_inv, inv))) return; tl_assert(inv->tag != Inv_Unset); @@ -1768,7 +1821,12 @@ void helperc__mem_access ( /* Known only at run time: */ VG_(memset)(bufA, 0, sizeof(bufA)); show_Invar( bufA, sizeof(bufA)-1, &new_inv, frame->depth ); - sg_record_error_SorG( tid, ea, sszB, bufE, bufA ); + VG_(memset)(bufD, 0, sizeof(bufD)); + UWord absDelta; + gen_delta_str( bufD, &absDelta, inv, ea ); + + if (absDelta < 1024) + sg_record_error_SorG( tid, ea, sszB, bufE, bufA, bufD ); /* And now install the new observation as "standard", so as to make future error messages make more sense. */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.am index 02c7d5690..cc2bc3af4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.am @@ -5,6 +5,7 @@ dist_noinst_SCRIPTS = filter_stderr filter_add filter_suppgen \ sh_script EXTRA_DIST = \ + is_arch_supported \ add.vgtest-disabled add.stderr.exp \ and.vgtest-disabled and.stderr.exp \ arith.vgtest-disabled arith.stderr.exp \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.in index 0e77fe99a..218df94e4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/Makefile.in @@ -288,12 +288,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -446,7 +441,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -475,6 +470,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -503,6 +503,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -523,6 +524,7 @@ dist_noinst_SCRIPTS = filter_stderr filter_add filter_suppgen \ sh_script EXTRA_DIST = \ + is_arch_supported \ add.vgtest-disabled add.stderr.exp \ and.vgtest-disabled and.stderr.exp \ arith.vgtest-disabled arith.stderr.exp \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/arith_include2.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/arith_include2.c index 2cc7e41cb..524ca997f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/arith_include2.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/arith_include2.c @@ -15,7 +15,7 @@ struct sigaction sigsegv; // Scratch values - long a, tn; + long a, tn __attribute__((unused)); long* tp; // Known pointers diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/bad_percentify.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/bad_percentify.vgtest index ab3e21d0b..1f390b02b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/bad_percentify.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/bad_percentify.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: bad_percentify diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/base.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/base.vgtest index 4359690fd..7aa99d00b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/base.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/base.vgtest @@ -1,2 +1,3 @@ +prereq: ./is_arch_supported prog: base stderr_filter: filter_add diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/ccc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/ccc.vgtest index 7c0c72889..d6d7ae160 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/ccc.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/ccc.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: ccc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/filter_stderr index 1397ed5fc..f315d9e18 100755 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/filter_stderr +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/filter_stderr @@ -30,7 +30,8 @@ sed \ -e "s/ printf (.*)/ .../" \ -e "s/ strdup (.*)/ .../" \ -e "s/(pthread_key_create.c:[0-9]*)/(in \/...libpthread...)/" \ --e "s/(genops.c:[0-9]*)/(in \/...libc...)/" | +-e "s/(genops.c:[0-9]*)/(in \/...libc...)/" \ +-e "s/(syscall-template.S:[0-9]*)/(in \/...libc...)/" | # Anonymise line numbers in h_intercepts.c. sed "s/h_intercepts.c:[0-9]*/h_intercepts.c:.../" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/fp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/fp.vgtest index d17874595..bd93cf800 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/fp.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/fp.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: fp diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/globalerr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/globalerr.vgtest index f75fceef7..c6749cb47 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/globalerr.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/globalerr.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: globalerr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hackedbz2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hackedbz2.vgtest index 41d177252..ea8f5e8c4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hackedbz2.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hackedbz2.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: hackedbz2 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.c index c285e535a..e456cabe8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.c @@ -2,7 +2,7 @@ int main(void) { - int y; + int y __attribute__((unused)); int* x = malloc(sizeof(int) * 100); y = x[95]; // ok diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.vgtest index f92fc5475..96a983e5a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_bounds.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: hp_bounds diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.c index 271e0ef60..31470df42 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.c @@ -11,7 +11,7 @@ int* mk_dangle(void) int main(void) { - int y; + int y __attribute__((unused)); int* x = mk_dangle(); y = x[5]; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.vgtest index 82785c9b8..42cbe6c53 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hp_dangle.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: hp_dangle diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hsg.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hsg.vgtest index 663a523db..b6f653668 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hsg.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/hsg.vgtest @@ -1,3 +1,4 @@ +prereq: ./is_arch_supported prog: hsg vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null stderr_filter: ../../memcheck/tests/filter_xml diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/is_arch_supported b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/is_arch_supported new file mode 100644 index 000000000..bdf2e7f8f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/is_arch_supported @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Not all architectures are supported by exp-ptr. Currently, PowerPC, s390x +# and ARM are not supported and will fail these tests as follows: +# WARNING: exp-ptrcheck on platforms: stack and global array +# WARNING: checking is not currently supported. Only heap checking is +# WARNING: supported. +# +# So we use this script to prevent these tests from running on unsupported +# architectures. + +case `uname -i` in + ppc*|arm*|s390x) exit 1;; + *) exit 0;; +esac diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.c index 0cc5295a0..366c78ba3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.c @@ -10,7 +10,7 @@ int main ( void ) { - char c; + char c __attribute__((unused)); char *c0, *c1; c0 = malloc(10000); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.vgtest index aef13f658..3052c7e65 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/justify.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: justify diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/mm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/mm.c index 0f1a9bd24..0d78cf36a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/mm.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/mm.c @@ -15,7 +15,7 @@ int main(void) { struct sigaction sigsegv; - char c; + char c __attribute__((unused)); // This fails due to a bad fd (at one point I was not handling failing // mmap() calls, and would have got a seg fault). diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial.c index 7bdc35648..af0728150 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial.c @@ -3,12 +3,12 @@ int main ( void ) { - int* x3 = malloc(3); float f, *f3 = malloc(3); - int* x4 = malloc(4); double d, *d7 = malloc(7); - int* x5 = malloc(5); long long int lli, *lli7 = malloc(7); - int* x6 = malloc(6); char c, *c0 = malloc(0); - int* x7 = malloc(7); short int s, *s1 = malloc(1); - int x; + int* x3 = malloc(3); float f __attribute__((unused)), *f3 = malloc(3); + int* x4 = malloc(4); double d __attribute__((unused)), *d7 = malloc(7); + int* x5 = malloc(5); long long int lli __attribute__((unused)), *lli7 = malloc(7); + int* x6 = malloc(6); char c __attribute__((unused)), *c0 = malloc(0); + int* x7 = malloc(7); short int s __attribute__((unused)), *s1 = malloc(1); + int x __attribute__((unused)); int* y4 = malloc(4); int* y5 = malloc(5); int* y6 = malloc(6); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_bad.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_bad.vgtest index 86e13e8e8..094946b6f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_bad.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_bad.vgtest @@ -1,2 +1,3 @@ +prereq: ./is_arch_supported prog: partial vgopts: --partial-loads-ok=no diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_good.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_good.vgtest index 29fd892be..ea7d28552 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_good.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/partial_good.vgtest @@ -1,2 +1,3 @@ +prereq: ./is_arch_supported prog: partial vgopts: --partial-loads-ok=yes diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/preen_invars.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/preen_invars.vgtest index c654c181d..49da4bb97 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/preen_invars.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/preen_invars.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: preen_invars diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_create.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_create.vgtest index c98abc696..91fa9b131 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_create.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_create.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: pth_create diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.c index d679bb79a..9b8ca919d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.c @@ -12,7 +12,7 @@ int main(void) { pthread_key_t key; char *x, *z; - char y; + char y __attribute__((unused)); x = malloc(100); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.vgtest index f2a2a34af..5e6789b61 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/pth_specific.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: pth_specific diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.c index f588d536b..8884664eb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.c @@ -3,11 +3,11 @@ int main(void) { - int i; - int* y; + int i __attribute__((unused)); + int* y __attribute__((unused)); int** x = malloc(sizeof(int*) * 100); int* x2 = malloc(sizeof(int) * 100); - void* sink; + void* sink __attribute__((unused)); x[0] = x2; // this is to check the pointerness is copied across ok x[49] = x2; // this is to check the pointerness is copied across ok diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.vgtest index 0b9a00c76..1cc74ede7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/realloc.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: realloc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/stackerr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/stackerr.vgtest index b81660b22..0a1139dfa 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/stackerr.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/stackerr.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: stackerr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strcpy.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strcpy.vgtest index 809bbf6ca..d686e9f32 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strcpy.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strcpy.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: strcpy diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strlen.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strlen.c index 92b5c148a..92abf4611 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strlen.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/strlen.c @@ -13,7 +13,7 @@ int main(void) char* h = "hello, world"; char* p = strdup(h); char u[20]; - char* c; + char* c __attribute__((unused)); int len; len = strlen(p); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/supp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/supp.vgtest index c0d71e7f9..b991f5721 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/supp.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/supp.vgtest @@ -1,2 +1,3 @@ +prereq: ./is_arch_supported vgopts: --suppressions=supp.supp prog: supp diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/tricky.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/tricky.vgtest index 3f22f2bd2..8ebfc09f3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/tricky.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/tricky.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: tricky diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.c index 181e9176e..6c7ba39d0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.c @@ -6,7 +6,7 @@ int main ( void ) { char* x = strdup("hello"); - char c; + char c __attribute__((unused)); char c0[8], c1[8], c2[8], c3[8], c4[8]; // Each of these pointers has a different alignment diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.vgtest index e5076d2b5..240dc60a4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/unaligned.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: unaligned diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.c index adea4d6a1..7077bb446 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.c @@ -5,7 +5,7 @@ int main ( void ) { - char c, *c0 = malloc(0), *c1; + char c __attribute__((unused)), *c0 = malloc(0), *c1; c = *c0; // bad diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.vgtest index d5af1b425..3d6333c47 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-ptrcheck/tests/zero.vgtest @@ -1 +1,2 @@ +prereq: ./is_arch_supported prog: zero diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck.supp new file mode 100644 index 000000000..a0553f0d8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck.supp @@ -0,0 +1,20 @@ +{ + ld-2.X possibly applying relocations + exp-sgcheck:SorG + obj:/*lib*/ld-2.*so* + obj:/*lib*/ld-2.*so* +} + +# I'm pretty sure this is a false positive caused by the sg_ stuff +{ + glibc realpath false positive + exp-sgcheck:SorG + fun:realpath + fun:* +} + +{ + I think this is glibc's ultra optimised getenv doing 2 byte reads + exp-sgcheck:SorG + fun:getenv +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.am new file mode 100644 index 000000000..a1c5d897b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.am @@ -0,0 +1,109 @@ +include $(top_srcdir)/Makefile.tool.am + +EXTRA_DIST = docs/sg-manual.xml + +#---------------------------------------------------------------------------- +# Headers, etc +#---------------------------------------------------------------------------- + +noinst_HEADERS = \ + h_main.h \ + pc_common.h \ + sg_main.h + +#---------------------------------------------------------------------------- +# exp-sgcheck- +#---------------------------------------------------------------------------- + +noinst_PROGRAMS = exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@ +if VGCONF_HAVE_PLATFORM_SEC +noinst_PROGRAMS += exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@ +endif + +EXP_PTRCHECK_SOURCES_COMMON = \ + h_main.c \ + pc_common.c \ + pc_main.c \ + sg_main.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ + $(EXP_PTRCHECK_SOURCES_COMMON) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_PRI@ \ + $(LINK) \ + $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \ + $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS) + +if VGCONF_HAVE_PLATFORM_SEC +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \ + $(EXP_PTRCHECK_SOURCES_COMMON) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_SEC@ \ + $(LINK) \ + $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \ + $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS) +endif + +#---------------------------------------------------------------------------- +# vgpreload_exp-sgcheck-.so +#---------------------------------------------------------------------------- + +noinst_PROGRAMS += vgpreload_exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so +if VGCONF_HAVE_PLATFORM_SEC +noinst_PROGRAMS += vgpreload_exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so +endif + +if VGCONF_OS_IS_DARWIN +noinst_DSYMS = $(noinst_PROGRAMS) +endif + +VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON = h_intercepts.c + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ + $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(AM_CFLAGS_PIC) -O2 +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +if VGCONF_HAVE_PLATFORM_SEC +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = \ + $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(AM_CFLAGS_PIC) -O2 +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) +endif + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.in new file mode 100644 index 000000000..5b602453d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/Makefile.in @@ -0,0 +1,1337 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool.am +noinst_PROGRAMS = exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT) \ + $(am__EXEEXT_1) \ + vgpreload_exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT) \ + $(am__EXEEXT_2) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_1 = exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@ +@VGCONF_HAVE_PLATFORM_SEC_FALSE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_2 = vgpreload_exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so +subdir = exp-sgcheck +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__EXEEXT_1 = exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__EXEEXT_2 = vgpreload_exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +am__objects_1 = \ + exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.$(OBJEXT) +am_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = \ + $(am__objects_1) +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = \ + $(am_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) +am__exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST = h_main.c \ + pc_common.c pc_main.c sg_main.c +am__objects_2 = \ + exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.$(OBJEXT) \ + exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.$(OBJEXT) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_2) +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS = \ + $(am_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) +am__objects_3 = vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.$(OBJEXT) +am_vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = \ + $(am__objects_3) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS = $(am_vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD = \ + $(LDADD) +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK = $(CCLD) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) \ + $(CFLAGS) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES_DIST = \ + h_intercepts.c +am__objects_4 = vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.$(OBJEXT) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am_vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_4) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS = $(am_vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDADD = \ + $(LDADD) +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LINK = $(CCLD) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) \ + $(CFLAGS) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ + $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES) +DIST_SOURCES = $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES) \ + $(am__exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST) \ + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES) \ + $(am__vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . tests +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ + +#---------------------------------------------------------------------------- +# - stuff +#---------------------------------------------------------------------------- +TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@ = \ + $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \ + $(top_builddir)/VEX/libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/VEX/libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a + +TOOL_LDADD_COMMON = -lgcc +TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@ = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) $(TOOL_LDADD_COMMON) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) $(TOOL_LDADD_COMMON) + + +# -Wl,--build-id=none is needed when linking tools on Linux. Without this +# flag newer ld versions (2.20 and later) create a .note.gnu.build-id at the +# default text segment address, which of course means the resulting executable +# is unusable. So we have to tell ld not to generate that, with --build-id=none. +TOOL_LDFLAGS_COMMON_LINUX = \ + -static -nodefaultlibs -nostartfiles -u _start @FLAG_NO_BUILD_ID@ + +TOOL_LDFLAGS_COMMON_AIX5 = \ + -static -Wl,-e_start_valgrind + +TOOL_LDFLAGS_COMMON_DARWIN = \ + -nodefaultlibs -nostartfiles -Wl,-u,__start -Wl,-e,__start + +TOOL_LDFLAGS_COMMON_L4RE = \ + -static -nodefaultlibs -nostartfiles -u _start + +TOOL_LDFLAGS_X86_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_AMD64_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_PPC32_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_PPC64_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_ARM_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ + +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + +TOOL_LDFLAGS_PPC32_AIX5 = \ + $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ + +TOOL_LDFLAGS_PPC64_AIX5 = \ + $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ -Wl,-bbigtoc + +TOOL_LDFLAGS_X86_DARWIN = \ + $(TOOL_LDFLAGS_COMMON_DARWIN) -arch i386 + +TOOL_LDADD_X86_L4RE = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(L4_LDFLAGS) $(L4_CRTN) $(TOOL_LDADD_COMMON) + +TOOL_LDFLAGS_X86_L4RE = \ + -nostdinc -nostdlib $(L4_CRT0) $(TOOL_LDFLAGS_COMMON_L4RE) @FLAG_M32@ + + +# pagezero can't be unmapped and remapped. Use stack instead. +# GrP fixme no stack guard +TOOL_LDFLAGS_AMD64_DARWIN = \ + $(TOOL_LDFLAGS_COMMON_DARWIN) -arch x86_64 + + +# NB for 64-bit darwin. We may want to set -Wl,-pagezero_size to +# something smaller than the default of 4G, so as to facilitate +# loading clients who are also linked thusly (currently m_ume.c +# will fail to load them). Although such setting is probably +# better done in link_tool_exe.c. +# -Wl,-pagezero_size,0x100000000 + +#---------------------------------------------------------------------------- +# vgpreload_-.a stuff +#---------------------------------------------------------------------------- +LIBREPLACEMALLOC_X86_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-linux.a + +LIBREPLACEMALLOC_AMD64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-linux.a + +LIBREPLACEMALLOC_PPC32_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-linux.a + +LIBREPLACEMALLOC_PPC64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-linux.a + +LIBREPLACEMALLOC_ARM_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm-linux.a + +LIBREPLACEMALLOC_PPC32_AIX5 = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-aix5.a + +LIBREPLACEMALLOC_PPC64_AIX5 = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-aix5.a + +LIBREPLACEMALLOC_X86_DARWIN = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-darwin.a + +LIBREPLACEMALLOC_AMD64_DARWIN = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a + +LIBREPLACEMALLOC_X86_L4RE = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a + +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + +LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_X86_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_AMD64_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_PPC32_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_PPC64_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_ARM_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_ARM_LINUX) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5 = \ + $(LIBREPLACEMALLOC_PPC32_AIX5) + +LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5 = \ + $(LIBREPLACEMALLOC_PPC64_AIX5) + +LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \ + $(LIBREPLACEMALLOC_X86_DARWIN) + +LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \ + $(LIBREPLACEMALLOC_AMD64_DARWIN) + +LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_X86_L4RE) \ + -Wl,--no-whole-archive + +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + +EXTRA_DIST = docs/sg-manual.xml + +#---------------------------------------------------------------------------- +# Headers, etc +#---------------------------------------------------------------------------- +noinst_HEADERS = \ + h_main.h \ + pc_common.h \ + sg_main.h + +EXP_PTRCHECK_SOURCES_COMMON = \ + h_main.c \ + pc_common.c \ + pc_main.c \ + sg_main.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ + $(EXP_PTRCHECK_SOURCES_COMMON) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \ + $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \ + $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \ + $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \ + $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ + @VALT_LOAD_ADDRESS_PRI@ \ + $(LINK) \ + $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \ + $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(EXP_PTRCHECK_SOURCES_COMMON) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ @VALT_LOAD_ADDRESS_SEC@ \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LINK) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS) + +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(noinst_PROGRAMS) +VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON = h_intercepts.c +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ + $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON) + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ + $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \ + $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(AM_CFLAGS_PIC) -O2 + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \ + $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@) + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \ + $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \ + $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(AM_CFLAGS_PIC) -O2 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@) + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-sgcheck/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign exp-sgcheck/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT): $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES) + @rm -f exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@$(EXEEXT) + $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD) $(LIBS) +exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT): $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES) + @rm -f exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@$(EXEEXT) + $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD) $(LIBS) +vgpreload_exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT): $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES) + @rm -f vgpreload_exp-sgcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so$(EXEEXT) + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LINK) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDADD) $(LIBS) +vgpreload_exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT): $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES) + @rm -f vgpreload_exp-sgcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so$(EXEEXT) + $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LINK) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_OBJECTS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.o: h_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.o `test -f 'h_main.c' || echo '$(srcdir)/'`h_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.o `test -f 'h_main.c' || echo '$(srcdir)/'`h_main.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.obj: h_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.obj `if test -f 'h_main.c'; then $(CYGPATH_W) 'h_main.c'; else $(CYGPATH_W) '$(srcdir)/h_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-h_main.obj `if test -f 'h_main.c'; then $(CYGPATH_W) 'h_main.c'; else $(CYGPATH_W) '$(srcdir)/h_main.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.o: pc_common.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.o `test -f 'pc_common.c' || echo '$(srcdir)/'`pc_common.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_common.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.o `test -f 'pc_common.c' || echo '$(srcdir)/'`pc_common.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.obj: pc_common.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.obj `if test -f 'pc_common.c'; then $(CYGPATH_W) 'pc_common.c'; else $(CYGPATH_W) '$(srcdir)/pc_common.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_common.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_common.obj `if test -f 'pc_common.c'; then $(CYGPATH_W) 'pc_common.c'; else $(CYGPATH_W) '$(srcdir)/pc_common.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.o: pc_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.o `test -f 'pc_main.c' || echo '$(srcdir)/'`pc_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.o `test -f 'pc_main.c' || echo '$(srcdir)/'`pc_main.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.obj: pc_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.obj `if test -f 'pc_main.c'; then $(CYGPATH_W) 'pc_main.c'; else $(CYGPATH_W) '$(srcdir)/pc_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-pc_main.obj `if test -f 'pc_main.c'; then $(CYGPATH_W) 'pc_main.c'; else $(CYGPATH_W) '$(srcdir)/pc_main.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.o: sg_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.o `test -f 'sg_main.c' || echo '$(srcdir)/'`sg_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sg_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.o `test -f 'sg_main.c' || echo '$(srcdir)/'`sg_main.c + +exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.obj: sg_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.obj `if test -f 'sg_main.c'; then $(CYGPATH_W) 'sg_main.c'; else $(CYGPATH_W) '$(srcdir)/sg_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sg_main.c' object='exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@-sg_main.obj `if test -f 'sg_main.c'; then $(CYGPATH_W) 'sg_main.c'; else $(CYGPATH_W) '$(srcdir)/sg_main.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.o: h_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.o `test -f 'h_main.c' || echo '$(srcdir)/'`h_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.o `test -f 'h_main.c' || echo '$(srcdir)/'`h_main.c + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.obj: h_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.obj `if test -f 'h_main.c'; then $(CYGPATH_W) 'h_main.c'; else $(CYGPATH_W) '$(srcdir)/h_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-h_main.obj `if test -f 'h_main.c'; then $(CYGPATH_W) 'h_main.c'; else $(CYGPATH_W) '$(srcdir)/h_main.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.o: pc_common.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.o `test -f 'pc_common.c' || echo '$(srcdir)/'`pc_common.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_common.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.o `test -f 'pc_common.c' || echo '$(srcdir)/'`pc_common.c + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.obj: pc_common.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.obj `if test -f 'pc_common.c'; then $(CYGPATH_W) 'pc_common.c'; else $(CYGPATH_W) '$(srcdir)/pc_common.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_common.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_common.obj `if test -f 'pc_common.c'; then $(CYGPATH_W) 'pc_common.c'; else $(CYGPATH_W) '$(srcdir)/pc_common.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.o: pc_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.o `test -f 'pc_main.c' || echo '$(srcdir)/'`pc_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.o `test -f 'pc_main.c' || echo '$(srcdir)/'`pc_main.c + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.obj: pc_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.obj `if test -f 'pc_main.c'; then $(CYGPATH_W) 'pc_main.c'; else $(CYGPATH_W) '$(srcdir)/pc_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pc_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-pc_main.obj `if test -f 'pc_main.c'; then $(CYGPATH_W) 'pc_main.c'; else $(CYGPATH_W) '$(srcdir)/pc_main.c'; fi` + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.o: sg_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.o -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.o `test -f 'sg_main.c' || echo '$(srcdir)/'`sg_main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sg_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.o `test -f 'sg_main.c' || echo '$(srcdir)/'`sg_main.c + +exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.obj: sg_main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.obj -MD -MP -MF $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Tpo -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.obj `if test -f 'sg_main.c'; then $(CYGPATH_W) 'sg_main.c'; else $(CYGPATH_W) '$(srcdir)/sg_main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Tpo $(DEPDIR)/exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sg_main.c' object='exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@-sg_main.obj `if test -f 'sg_main.c'; then $(CYGPATH_W) 'sg_main.c'; else $(CYGPATH_W) '$(srcdir)/sg_main.c'; fi` + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.o: h_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.o -MD -MP -MF $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Tpo -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.o `test -f 'h_intercepts.c' || echo '$(srcdir)/'`h_intercepts.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Tpo $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_intercepts.c' object='vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.o `test -f 'h_intercepts.c' || echo '$(srcdir)/'`h_intercepts.c + +vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.obj: h_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.obj -MD -MP -MF $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Tpo -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.obj `if test -f 'h_intercepts.c'; then $(CYGPATH_W) 'h_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/h_intercepts.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Tpo $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_intercepts.c' object='vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so-h_intercepts.obj `if test -f 'h_intercepts.c'; then $(CYGPATH_W) 'h_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/h_intercepts.c'; fi` + +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.o: h_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.o -MD -MP -MF $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Tpo -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.o `test -f 'h_intercepts.c' || echo '$(srcdir)/'`h_intercepts.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Tpo $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_intercepts.c' object='vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.o `test -f 'h_intercepts.c' || echo '$(srcdir)/'`h_intercepts.c + +vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.obj: h_intercepts.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -MT vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.obj -MD -MP -MF $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Tpo -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.obj `if test -f 'h_intercepts.c'; then $(CYGPATH_W) 'h_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/h_intercepts.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Tpo $(DEPDIR)/vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='h_intercepts.c' object='vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS) $(CPPFLAGS) $(vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS) $(CFLAGS) -c -o vgpreload_exp_sgcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so-h_intercepts.obj `if test -f 'h_intercepts.c'; then $(CYGPATH_W) 'h_intercepts.c'; else $(CYGPATH_W) '$(srcdir)/h_intercepts.c'; fi` + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(HEADERS) all-local +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-local clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-exec-local + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am all-local check check-am clean clean-generic \ + clean-local clean-noinstPROGRAMS ctags ctags-recursive \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-local \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +#---------------------------------------------------------------------------- +# General stuff +#---------------------------------------------------------------------------- + +all-local: inplace-noinst_PROGRAMS inplace-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/docs/sg-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/docs/sg-manual.xml new file mode 100644 index 000000000..863219972 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/docs/sg-manual.xml @@ -0,0 +1,316 @@ + + %vg-entities; ]> + + + + SGCheck: an experimental stack and global array overrun detector + +To use this tool, you must specify + on the Valgrind +command line. + + + + + +Overview + +SGCheck is a tool for finding overruns of stack and global +arrays. It works by using a heuristic approach derived from an +observation about the likely forms of stack and global array accesses. + + + + + + + + +SGCheck Command-line Options + +There are no SGCheck-specific command-line options at present. + + + + + + + +How SGCheck Works + +When a source file is compiled +with , the compiler attaches DWARF3 +debugging information which describes the location of all stack and +global arrays in the file. + +Checking of accesses to such arrays would then be relatively +simple, if the compiler could also tell us which array (if any) each +memory referencing instruction was supposed to access. Unfortunately +the DWARF3 debugging format does not provide a way to represent such +information, so we have to resort to a heuristic technique to +approximate it. The key observation is that + + if a memory referencing instruction accesses inside a stack or + global array once, then it is highly likely to always access that + same array. + +To see how this might be useful, consider the following buggy +fragment: + + +At run time we will know the precise address +of a[] on the stack, and so we can +observe that the first store resulting from a[i] = +42 writes a[], and +we will (correctly) assume that that instruction is intended always to +access a[]. Then, on the 11th +iteration, it accesses somewhere else, possibly a different local, +possibly an un-accounted for area of the stack (eg, spill slot), so +SGCheck reports an error. + +There is an important caveat. + +Imagine a function such as memcpy, which is used +to read and write many different areas of memory over the lifetime of the +program. If we insist that the read and write instructions in its memory +copying loop only ever access one particular stack or global variable, we +will be flooded with errors resulting from calls to +memcpy. + +To avoid this problem, SGCheck instantiates fresh likely-target +records for each entry to a function, and discards them on exit. This +allows detection of cases where (e.g.) memcpy +overflows its source or destination buffers for any specific call, but +does not carry any restriction from one call to the next. Indeed, +multiple threads may make multiple simultaneous calls to +(e.g.) memcpy without mutual interference. + + + + + + + +Comparison with Memcheck + +SGCheck and Memcheck are complementary: their capabilities do +not overlap. Memcheck performs bounds checks and use-after-free +checks for heap arrays. It also finds uses of uninitialised values +created by heap or stack allocations. But it does not perform bounds +checking for stack or global arrays. + +SGCheck, on the other hand, does do bounds checking for stack or +global arrays, but it doesn't do anything else. + + + + + + + + +Limitations + +This is an experimental tool, which relies rather too heavily on some +not-as-robust-as-I-would-like assumptions on the behaviour of correct +programs. There are a number of limitations which you should be aware +of. + + + + + False negatives (missed errors): it follows from the + description above () + that the first access by a memory referencing instruction to a + stack or global array creates an association between that + instruction and the array, which is checked on subsequent accesses + by that instruction, until the containing function exits. Hence, + the first access by an instruction to an array (in any given + function instantiation) is not checked for overrun, since SGCheck + uses that as the "example" of how subsequent accesses should + behave. + + + + False positives (false errors): similarly, and more serious, + it is clearly possible to write legitimate pieces of code which + break the basic assumption upon which the checking algorithm + depends. For example: + + + + In this case the store sometimes + accesses a[] and + sometimes b[], but in no cases is + the addressed array overrun. Nevertheless the change in target + will cause an error to be reported. + + It is hard to see how to get around this problem. The only + mitigating factor is that such constructions appear very rare, at + least judging from the results using the tool so far. Such a + construction appears only once in the Valgrind sources (running + Valgrind on Valgrind) and perhaps two or three times for a start + and exit of Firefox. The best that can be done is to suppress the + errors. + + + + Performance: SGCheck has to read all of + the DWARF3 type and variable information on the executable and its + shared objects. This is computationally expensive and makes + startup quite slow. You can expect debuginfo reading time to be in + the region of a minute for an OpenOffice sized application, on a + 2.4 GHz Core 2 machine. Reading this information also requires a + lot of memory. To make it viable, SGCheck goes to considerable + trouble to compress the in-memory representation of the DWARF3 + data, which is why the process of reading it appears slow. + + + + Performance: SGCheck runs slower than Memcheck. This is + partly due to a lack of tuning, but partly due to algorithmic + difficulties. The + stack and global checks can sometimes require a number of range + checks per memory access, and these are difficult to short-circuit, + despite considerable efforts having been made. A + redesign and reimplementation could potentially make it much faster. + + + + + Coverage: Stack and global checking is fragile. If a shared + object does not have debug information attached, then SGCheck will + not be able to determine the bounds of any stack or global arrays + defined within that shared object, and so will not be able to check + accesses to them. This is true even when those arrays are accessed + from some other shared object which was compiled with debug + info. + + At the moment SGCheck accepts objects lacking debuginfo + without comment. This is dangerous as it causes SGCheck to + silently skip stack and global checking for such objects. It would + be better to print a warning in such circumstances. + + + + Coverage: SGCheck does not check whether the the areas read + or written by system calls do overrun stack or global arrays. This + would be easy to add. + + + + Platforms: the stack/global checks won't work properly on + PowerPC, ARM or S390X platforms, only on X86 and AMD64 targets. + That's because the stack and global checking requires tracking + function calls and exits reliably, and there's no obvious way to do + it on ABIs that use a link register for function returns. + + + + + Robustness: related to the previous point. Function + call/exit tracking for X86 and AMD64 is believed to work properly + even in the presence of longjmps within the same stack (although + this has not been tested). However, code which switches stacks is + likely to cause breakage/chaos. + + + + + + + + + + +Still To Do: User-visible Functionality + + + + + Extend system call checking to work on stack and global arrays. + + + + Print a warning if a shared object does not have debug info + attached, or if, for whatever reason, debug info could not be + found, or read. + + + + Add some heuristic filtering that removes obvious false + positives. This would be easy to do. For example, an access + transition from a heap to a stack object almost certainly isn't a + bug and so should not be reported to the user. + + + + + + + + + + +Still To Do: Implementation Tidying + +Items marked CRITICAL are considered important for correctness: +non-fixage of them is liable to lead to crashes or assertion failures +in real use. + + + + + sg_main.c: Redesign and reimplement the basic checking + algorithm. It could be done much faster than it is -- the current + implementation isn't very good. + + + + + sg_main.c: Improve the performance of the stack / global + checks by doing some up-front filtering to ignore references in + areas which "obviously" can't be stack or globals. This will + require using information that m_aspacemgr knows about the address + space layout. + + + + sg_main.c: fix compute_II_hash to make it a bit more sensible + for ppc32/64 targets (except that sg_ doesn't work on ppc32/64 + targets, so this is a bit academic at the moment). + + + + + + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_intercepts.c new file mode 100644 index 000000000..54fbc624d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_intercepts.c @@ -0,0 +1,398 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. pc_intercepts.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2003-2010 Nicholas Nethercote + njn@valgrind.org + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Nothing actually in here. However it appears this file is needed + to make malloc intercepting work. (jrs, 2 july 08 -- not sure about + that). +*/ + +#include "pub_tool_basics.h" +#include "pub_tool_hashtable.h" +#include "pub_tool_redir.h" +#include "pub_tool_tooliface.h" +#include "valgrind.h" + + +/* The following intercepts are copied verbatim from + memcheck/mc_replace_strmem.c. If you copy more in, please keep + them in the same order as in mc_replace_strmem.c. */ + + +#define STRRCHR(soname, fnname) \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \ + { \ + UChar ch = (UChar)((UInt)c); \ + UChar* p = (UChar*)s; \ + UChar* last = NULL; \ + while (True) { \ + if (*p == ch) last = p; \ + if (*p == 0) return last; \ + p++; \ + } \ + } + +// Apparently rindex() is the same thing as strrchr() +STRRCHR(VG_Z_LIBC_SONAME, strrchr) +STRRCHR(VG_Z_LIBC_SONAME, rindex) +#if defined(VGO_linux) +STRRCHR(VG_Z_LIBC_SONAME, __GI_strrchr) +STRRCHR(VG_Z_LD_LINUX_SO_2, rindex) +#elif defined(VGO_darwin) +STRRCHR(VG_Z_DYLD, strrchr) +STRRCHR(VG_Z_DYLD, rindex) +#endif + + +#define STRCHR(soname, fnname) \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \ + { \ + UChar ch = (UChar)((UInt)c); \ + UChar* p = (UChar*)s; \ + while (True) { \ + if (*p == ch) return p; \ + if (*p == 0) return NULL; \ + p++; \ + } \ + } + +// Apparently index() is the same thing as strchr() +STRCHR(VG_Z_LIBC_SONAME, strchr) +STRCHR(VG_Z_LIBC_SONAME, index) +#if defined(VGO_linux) +STRCHR(VG_Z_LIBC_SONAME, __GI_strchr) +STRCHR(VG_Z_LD_LINUX_SO_2, strchr) +STRCHR(VG_Z_LD_LINUX_SO_2, index) +STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr) +STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index) +#elif defined(VGO_darwin) +STRCHR(VG_Z_DYLD, strchr) +STRCHR(VG_Z_DYLD, index) +#endif + + +#define STRNLEN(soname, fnname) \ + SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \ + SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \ + { \ + SizeT i = 0; \ + while (i < n && str[i] != 0) i++; \ + return i; \ + } + +STRNLEN(VG_Z_LIBC_SONAME, strnlen) + + +// Note that this replacement often doesn't get used because gcc inlines +// calls to strlen() with its own built-in version. This can be very +// confusing if you aren't expecting it. Other small functions in this file +// may also be inline by gcc. +#define STRLEN(soname, fnname) \ + SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ); \ + SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ) \ + { \ + SizeT i = 0; \ + while (str[i] != 0) i++; \ + return i; \ + } + +STRLEN(VG_Z_LIBC_SONAME, strlen) +#if defined(VGO_linux) +STRLEN(VG_Z_LIBC_SONAME, __GI_strlen) +STRLEN(VG_Z_LD_LINUX_SO_2, strlen) +STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen) +STRLEN(VG_Z_LD_SO_1, strlen) +#endif + + +#define STRCPY(soname, fnname) \ + char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ); \ + char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ) \ + { \ + Char* dst_orig = dst; \ + \ + while (*src) *dst++ = *src++; \ + *dst = 0; \ + \ + return dst_orig; \ + } + +STRCPY(VG_Z_LIBC_SONAME, strcpy) +#if defined(VGO_linux) +STRCPY(VG_Z_LIBC_SONAME, __GI_strcpy) +#elif defined(VGO_darwin) +STRCPY(VG_Z_DYLD, strcpy) +#endif + + +#define STRNCMP(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax ) \ + { \ + SizeT n = 0; \ + while (True) { \ + if (n >= nmax) return 0; \ + if (*s1 == 0 && *s2 == 0) return 0; \ + if (*s1 == 0) return -1; \ + if (*s2 == 0) return 1; \ + \ + if (*(unsigned char*)s1 < *(unsigned char*)s2) return -1; \ + if (*(unsigned char*)s1 > *(unsigned char*)s2) return 1; \ + \ + s1++; s2++; n++; \ + } \ + } + +STRNCMP(VG_Z_LIBC_SONAME, strncmp) +#if defined(VGO_linux) +STRNCMP(VG_Z_LIBC_SONAME, __GI_strncmp) +#elif defined(VGO_darwin) +STRNCMP(VG_Z_DYLD, strncmp) +#endif + + +#define STRCMP(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2 ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2 ) \ + { \ + register unsigned char c1; \ + register unsigned char c2; \ + while (True) { \ + c1 = *(unsigned char *)s1; \ + c2 = *(unsigned char *)s2; \ + if (c1 != c2) break; \ + if (c1 == 0) break; \ + s1++; s2++; \ + } \ + if ((unsigned char)c1 < (unsigned char)c2) return -1; \ + if ((unsigned char)c1 > (unsigned char)c2) return 1; \ + return 0; \ + } + +STRCMP(VG_Z_LIBC_SONAME, strcmp) +#if defined(VGO_linux) +STRCMP(VG_Z_LIBC_SONAME, __GI_strcmp) +STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp) +STRCMP(VG_Z_LD64_SO_1, strcmp) +#endif + + +#define MEMCHR(soname, fnname) \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n); \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n) \ + { \ + SizeT i; \ + UChar c0 = (UChar)c; \ + UChar* p = (UChar*)s; \ + for (i = 0; i < n; i++) \ + if (p[i] == c0) return (void*)(&p[i]); \ + return NULL; \ + } + +MEMCHR(VG_Z_LIBC_SONAME, memchr) +#if defined(VGO_darwin) +MEMCHR(VG_Z_DYLD, memchr) +#endif + + +#define MEMCPY(soname, fnname) \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( void *dst, const void *src, SizeT sz ); \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( void *dest, const void *src, SizeT sz ) \ + { \ + const UChar* s = (const UChar*)src; \ + UChar* d = (UChar*)dest; \ + const UWord* sW = (const UWord*)src; \ + UWord* dW = (UWord*)dest; \ + const UWord al = sizeof(UWord)-1; \ + \ + if (0 == (((UWord)dW) & al) && 0 == (((UWord)sW) & al)) { \ + while (sz >= 4 * sizeof(UWord)) { \ + dW[0] = sW[0]; \ + dW[1] = sW[1]; \ + dW[2] = sW[2]; \ + dW[3] = sW[3]; \ + sz -= 4 * sizeof(UWord); \ + dW += 4; \ + sW += 4; \ + } \ + if (sz == 0) \ + return dest; \ + while (sz >= 1 * sizeof(UWord)) { \ + dW[0] = sW[0]; \ + sz -= 1 * sizeof(UWord); \ + dW += 1; \ + sW += 1; \ + } \ + if (sz == 0) \ + return dest; \ + s = (const UChar*)sW; \ + d = (UChar*)dW; \ + } \ + \ + while (sz--) \ + *d++ = *s++; \ + \ + return dest; \ + } + +MEMCPY(VG_Z_LIBC_SONAME, memcpy) +#if defined(VGO_linux) +MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */ +MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */ +#endif + + +/* Copy SRC to DEST, returning the address of the terminating '\0' in + DEST. (minor variant of strcpy) */ +#define STPCPY(soname, fnname) \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ); \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ) \ + { \ + while (*src) *dst++ = *src++; \ + *dst = 0; \ + \ + return dst; \ + } + +STPCPY(VG_Z_LIBC_SONAME, stpcpy) +#if defined(VGO_linux) +STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy) +STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy) +#endif + + +/* Find the first occurrence of C in S. */ +#define GLIBC232_RAWMEMCHR(soname, fnname) \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \ + char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \ + { \ + unsigned char c = (unsigned char) c_in; \ + unsigned char* char_ptr = (unsigned char *)s; \ + while (1) { \ + if (*char_ptr == c) return char_ptr; \ + char_ptr++; \ + } \ + } + +GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr) +#if defined (VGO_linux) +GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, __GI___rawmemchr) +#endif + + +#define STRSTR(soname, fnname) \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + (void* haystack, void* needle); \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + (void* haystack, void* needle) \ + { \ + UChar* h = (UChar*)haystack; \ + UChar* n = (UChar*)needle; \ + \ + /* find the length of n, not including terminating zero */ \ + UWord nlen = 0; \ + while (n[nlen]) nlen++; \ + \ + /* if n is the empty string, match immediately. */ \ + if (nlen == 0) return h; \ + \ + /* assert(nlen >= 1); */ \ + UChar n0 = n[0]; \ + \ + while (1) { \ + UChar hh = *h; \ + if (hh == 0) return NULL; \ + if (hh != n0) { h++; continue; } \ + \ + UWord i; \ + for (i = 0; i < nlen; i++) { \ + if (n[i] != h[i]) \ + break; \ + } \ + /* assert(i >= 0 && i <= nlen); */ \ + if (i == nlen) \ + return h; \ + \ + h++; \ + } \ + } + +#if defined(VGO_linux) +STRSTR(VG_Z_LIBC_SONAME, strstr) +#endif + + +#define STRPBRK(soname, fnname) \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + (void* sV, void* acceptV); \ + void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + (void* sV, void* acceptV) \ + { \ + UChar* s = (UChar*)sV; \ + UChar* accept = (UChar*)acceptV; \ + \ + /* find the length of 'accept', not including terminating zero */ \ + UWord nacc = 0; \ + while (accept[nacc]) nacc++; \ + \ + /* if n is the empty string, fail immediately. */ \ + if (nacc == 0) return NULL; \ + \ + /* assert(nacc >= 1); */ \ + while (1) { \ + UWord i; \ + UChar sc = *s; \ + if (sc == 0) \ + break; \ + for (i = 0; i < nacc; i++) { \ + if (sc == accept[i]) \ + return s; \ + } \ + s++; \ + } \ + \ + return NULL; \ + } + +#if defined(VGO_linux) +STRPBRK(VG_Z_LIBC_SONAME, strpbrk) +#endif + + +/*--------------------------------------------------------------------*/ +/*--- end pc_intercepts.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.c new file mode 100644 index 000000000..b168959d3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.c @@ -0,0 +1,729 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- This file checks heap accesses. ---*/ +/*--- h_main.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Initial version (Annelid): + + Copyright (C) 2003-2009 Nicholas Nethercote + njn@valgrind.org + + Valgrind-3.X port: + + Copyright (C) 2008-2009 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "pub_tool_basics.h" +#include "pub_tool_libcbase.h" +#include "pub_tool_libcprint.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_mallocfree.h" +#include "pub_tool_execontext.h" +#include "pub_tool_hashtable.h" +#include "pub_tool_tooliface.h" +#include "pub_tool_replacemalloc.h" +#include "pub_tool_options.h" +#include "pub_tool_execontext.h" +#include "pub_tool_aspacemgr.h" // VG_(am_shadow_malloc) +#include "pub_tool_vki.h" // VKI_MAX_PAGE_SIZE +#include "pub_tool_machine.h" // VG_({get,set}_shadow_regs_area) et al +#include "pub_tool_debuginfo.h" // VG_(get_fnname) +#include "pub_tool_threadstate.h" // VG_(get_running_tid) +#include "pub_tool_oset.h" +#include "pub_tool_vkiscnums.h" +#include "pub_tool_machine.h" +#include "pub_tool_wordfm.h" +#include "pub_tool_xarray.h" + +#include "pc_common.h" + +//#include "h_list.h" +#include "h_main.h" + +#include "sg_main.h" // sg_instrument_*, and struct _SGEnv + + + +/*------------------------------------------------------------*/ +/*--- Debug/trace options ---*/ +/*------------------------------------------------------------*/ + +static ULong stats__client_mallocs = 0; +static ULong stats__client_frees = 0; +static ULong stats__segs_allocd = 0; +static ULong stats__segs_recycled = 0; + + +////////////////////////////////////////////////////////////// +// // +// Segments low level storage // +// // +////////////////////////////////////////////////////////////// + +// NONPTR, UNKNOWN, BOTTOM defined in h_main.h since +// pc_common.c needs to see them, for error processing + +// we only start recycling segs when this many exist +#define N_FREED_SEGS (1 * 1000 * 1000) + +struct _Seg { + Addr addr; + SizeT szB; /* may be zero */ + ExeContext* ec; /* where malloc'd or freed */ + /* When 1, indicates block is in use. Otherwise, used to form a + linked list of freed blocks, running from oldest freed block to + the most recently freed block. */ + struct _Seg* nextfree; +}; + +// Determines if 'a' is before, within, or after seg's range. Sets 'cmp' to +// -1/0/1 accordingly. Sets 'n' to the number of bytes before/within/after. +void Seg__cmp(Seg* seg, Addr a, Int* cmp, UWord* n) +{ + if (a < seg->addr) { + *cmp = -1; + *n = seg->addr - a; + } else if (a < seg->addr + seg->szB && seg->szB > 0) { + *cmp = 0; + *n = a - seg->addr; + } else { + *cmp = 1; + *n = a - (seg->addr + seg->szB); + } +} + +/*inline*/ Bool Seg__is_freed(Seg* seg) +{ + if (!is_known_segment(seg)) + return False; + else + return seg->nextfree != (Seg*)1; +} + +ExeContext* Seg__where(Seg* seg) +{ + tl_assert(is_known_segment(seg)); + return seg->ec; +} + +SizeT Seg__size(Seg* seg) +{ + tl_assert(is_known_segment(seg)); + return seg->szB; +} + +Addr Seg__addr(Seg* seg) +{ + tl_assert(is_known_segment(seg)); + return seg->addr; +} + + +#define N_SEGS_PER_GROUP 10000 + +typedef + struct _SegGroup { + struct _SegGroup* admin; + UWord nextfree; /* 0 .. N_SEGS_PER_GROUP */ + Seg segs[N_SEGS_PER_GROUP]; + } + SegGroup; + +static SegGroup* group_list = NULL; +static UWord nFreeSegs = 0; +static Seg* freesegs_youngest = NULL; +static Seg* freesegs_oldest = NULL; + + +static SegGroup* new_SegGroup ( void ) { + SegGroup* g = VG_(malloc)("pc.h_main.nTG.1", sizeof(SegGroup)); + VG_(memset)(g, 0, sizeof(*g)); + return g; +} + +/* Get a completely new Seg */ +static Seg* new_Seg ( void ) +{ + Seg* teg; + SegGroup* g; + if (group_list == NULL) { + g = new_SegGroup(); + g->admin = NULL; + group_list = g; + } + tl_assert(group_list->nextfree <= N_SEGS_PER_GROUP); + if (group_list->nextfree == N_SEGS_PER_GROUP) { + g = new_SegGroup(); + g->admin = group_list; + group_list = g; + } + tl_assert(group_list->nextfree < N_SEGS_PER_GROUP); + teg = &group_list->segs[ group_list->nextfree ]; + group_list->nextfree++; + stats__segs_allocd++; + return teg; +} + +static Seg* get_Seg_for_malloc ( void ) +{ + Seg* seg; + if (nFreeSegs < N_FREED_SEGS) { + seg = new_Seg(); + seg->nextfree = (Seg*)1; + return seg; + } + /* else recycle the oldest Seg in the free list */ + tl_assert(freesegs_youngest); + tl_assert(freesegs_oldest); + tl_assert(freesegs_youngest != freesegs_oldest); + seg = freesegs_oldest; + freesegs_oldest = seg->nextfree; + nFreeSegs--; + seg->nextfree = (Seg*)1; + stats__segs_recycled++; + return seg; +} + +static void set_Seg_freed ( Seg* seg ) +{ + tl_assert(seg); + tl_assert(!Seg__is_freed(seg)); + if (nFreeSegs == 0) { + tl_assert(freesegs_oldest == NULL); + tl_assert(freesegs_youngest == NULL); + seg->nextfree = NULL; + freesegs_youngest = seg; + freesegs_oldest = seg; + nFreeSegs++; + } else { + tl_assert(freesegs_youngest); + tl_assert(freesegs_oldest); + if (nFreeSegs == 1) { + tl_assert(freesegs_youngest == freesegs_oldest); + } else { + tl_assert(freesegs_youngest != freesegs_oldest); + } + tl_assert(freesegs_youngest->nextfree == NULL); + tl_assert(seg != freesegs_youngest && seg != freesegs_oldest); + seg->nextfree = NULL; + freesegs_youngest->nextfree = seg; + freesegs_youngest = seg; + nFreeSegs++; + } +} + +static WordFM* addr_to_seg_map = NULL; /* GuestAddr -> Seg* */ + +static void addr_to_seg_map_ENSURE_INIT ( void ) +{ + if (UNLIKELY(addr_to_seg_map == NULL)) { + addr_to_seg_map = VG_(newFM)( VG_(malloc), "pc.h_main.attmEI.1", + VG_(free), NULL/*unboxedcmp*/ ); + } +} + +static Seg* find_Seg_by_addr ( Addr ga ) +{ + UWord keyW, valW; + addr_to_seg_map_ENSURE_INIT(); + if (VG_(lookupFM)( addr_to_seg_map, &keyW, &valW, (UWord)ga )) { + tl_assert(keyW == ga); + return (Seg*)valW; + } else { + return NULL; + } +} + +static void bind_addr_to_Seg ( Addr ga, Seg* seg ) +{ + Bool b; + addr_to_seg_map_ENSURE_INIT(); + b = VG_(addToFM)( addr_to_seg_map, (UWord)ga, (UWord)seg ); + tl_assert(!b); /* else ga is already bound */ +} + +static void unbind_addr_from_Seg ( Addr ga ) +{ + Bool b; + UWord keyW, valW; + addr_to_seg_map_ENSURE_INIT(); + b = VG_(delFromFM)( addr_to_seg_map, &keyW, &valW, (UWord)ga ); + tl_assert(b); /* else ga was not already bound */ + tl_assert(keyW == ga); + tl_assert(valW != 0); +} + + +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// + +// Returns the added heap segment +static Seg* add_new_segment ( ThreadId tid, Addr p, SizeT size ) +{ + Seg* seg = get_Seg_for_malloc(); + tl_assert(seg != (Seg*)1); /* since we're using 1 as a special value */ + seg->addr = p; + seg->szB = size; + seg->ec = VG_(record_ExeContext)( tid, 0/*first_ip_delta*/ ); + tl_assert(!Seg__is_freed(seg)); + + bind_addr_to_Seg(p, seg); + + return seg; +} + + + +static +void* alloc_and_new_mem_heap ( ThreadId tid, + SizeT size, SizeT alignment, Bool is_zeroed ) +{ + Addr p; + + if ( ((SSizeT)size) < 0) return NULL; + + p = (Addr)VG_(cli_malloc)(alignment, size); + if (is_zeroed) VG_(memset)((void*)p, 0, size); + + add_new_segment( tid, p, size ); + + stats__client_mallocs++; + return (void*)p; +} + +static void die_and_free_mem_heap ( ThreadId tid, Seg* seg ) +{ + // Empty and free the actual block + tl_assert(!Seg__is_freed(seg)); + + VG_(cli_free)( (void*)seg->addr ); + + // Remember where freed + seg->ec = VG_(record_ExeContext)( tid, 0/*first_ip_delta*/ ); + + set_Seg_freed(seg); + unbind_addr_from_Seg( seg->addr ); + + stats__client_frees++; +} + +static void handle_free_heap( ThreadId tid, void* p ) +{ + Seg* seg = find_Seg_by_addr( (Addr)p ); + if (!seg) { + /* freeing a block that wasn't malloc'd. Ignore. */ + return; + } + die_and_free_mem_heap( tid, seg ); +} + + +/*------------------------------------------------------------*/ +/*--- malloc() et al replacements ---*/ +/*------------------------------------------------------------*/ + +void* h_replace_malloc ( ThreadId tid, SizeT n ) +{ + return alloc_and_new_mem_heap ( tid, n, VG_(clo_alignment), + /*is_zeroed*/False ); +} + +void* h_replace___builtin_new ( ThreadId tid, SizeT n ) +{ + return alloc_and_new_mem_heap ( tid, n, VG_(clo_alignment), + /*is_zeroed*/False ); +} + +void* h_replace___builtin_vec_new ( ThreadId tid, SizeT n ) +{ + return alloc_and_new_mem_heap ( tid, n, VG_(clo_alignment), + /*is_zeroed*/False ); +} + +void* h_replace_memalign ( ThreadId tid, SizeT align, SizeT n ) +{ + return alloc_and_new_mem_heap ( tid, n, align, + /*is_zeroed*/False ); +} + +void* h_replace_calloc ( ThreadId tid, SizeT nmemb, SizeT size1 ) +{ + return alloc_and_new_mem_heap ( tid, nmemb*size1, VG_(clo_alignment), + /*is_zeroed*/True ); +} + +void h_replace_free ( ThreadId tid, void* p ) +{ + // Should arguably check here if p.vseg matches the segID of the + // pointed-to block... unfortunately, by this stage, we don't know what + // p.vseg is, because we don't know the address of p (the p here is a + // copy, and we've lost the address of its source). To do so would + // require passing &p in, which would require rewriting part of + // vg_replace_malloc.c... argh. + // + // However, Memcheck does free checking, and will catch almost all + // violations this checking would have caught. (Would only miss if we + // unluckily passed an unrelated pointer to the very start of a heap + // block that was unrelated to that block. This is very unlikely!) So + // we haven't lost much. + + handle_free_heap(tid, p); +} + +void h_replace___builtin_delete ( ThreadId tid, void* p ) +{ + handle_free_heap(tid, p); +} + +void h_replace___builtin_vec_delete ( ThreadId tid, void* p ) +{ + handle_free_heap(tid, p); +} + +void* h_replace_realloc ( ThreadId tid, void* p_old, SizeT new_size ) +{ + Seg* seg; + + /* First try and find the block. */ + seg = find_Seg_by_addr( (Addr)p_old ); + if (!seg) + return NULL; + + tl_assert(seg->addr == (Addr)p_old); + + if (new_size <= seg->szB) { + /* new size is smaller: allocate, copy from old to new */ + Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size); + VG_(memcpy)((void*)p_new, p_old, new_size); + + /* Free old memory */ + die_and_free_mem_heap( tid, seg ); + + /* This has to be after die_and_free_mem_heap, otherwise the + former succeeds in shorting out the new block, not the + old, in the case when both are on the same list. */ + add_new_segment ( tid, p_new, new_size ); + + return (void*)p_new; + } else { + /* new size is bigger: allocate, copy from old to new */ + Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size); + VG_(memcpy)((void*)p_new, p_old, seg->szB); + + /* Free old memory */ + die_and_free_mem_heap( tid, seg ); + + /* This has to be after die_and_free_mem_heap, otherwise the + former succeeds in shorting out the new block, not the old, + in the case when both are on the same list. NB jrs + 2008-Sept-11: not sure if this comment is valid/correct any + more -- I suspect not. */ + add_new_segment ( tid, p_new, new_size ); + + return (void*)p_new; + } +} + +SizeT h_replace_malloc_usable_size ( ThreadId tid, void* p ) +{ + Seg* seg = find_Seg_by_addr( (Addr)p ); + + // There may be slop, but pretend there isn't because only the asked-for + // area will have been shadowed properly. + return ( seg ? seg->szB : 0 ); +} + + +/*--------------------------------------------------------------------*/ +/*--- Instrumentation ---*/ +/*--------------------------------------------------------------------*/ + +/* The h_ instrumenter that follows is complex, since it deals with + shadow value computation. + + It also needs to generate instrumentation for the sg_ side of + things. That's relatively straightforward. However, rather than + confuse the code herein any further, we simply delegate the problem + to sg_main.c, by using the four functions + sg_instrument_{init,fini,IRStmt,final_jump}. These four completely + abstractify the sg_ instrumentation. See comments in sg_main.c's + instrumentation section for further details. */ + + +/* Carries info about a particular tmp. The tmp's number is not + recorded, as this is implied by (equal to) its index in the tmpMap + in PCEnv. The tmp's type is also not recorded, as this is present + in PCEnv.sb->tyenv. + + When .kind is NonShad, .shadow may give the identity of the temp + currently holding the associated shadow value, or it may be + IRTemp_INVALID if code to compute the shadow has not yet been + emitted. + + When .kind is Shad tmp holds a shadow value, and so .shadow must be + IRTemp_INVALID, since it is illogical for a shadow tmp itself to be + shadowed. +*/ +typedef + enum { NonShad=1, Shad=2 } + TempKind; + +typedef + struct { + TempKind kind; + IRTemp shadow; + } + TempMapEnt; + + + +/* Carries around state during Ptrcheck instrumentation. */ +typedef + struct { + /* MODIFIED: the superblock being constructed. IRStmts are + added. */ + IRSB* sb; + Bool trace; + + /* MODIFIED: a table [0 .. #temps_in_sb-1] which gives the + current kind and possibly shadow temps for each temp in the + IRSB being constructed. Note that it does not contain the + type of each tmp. If you want to know the type, look at the + relevant entry in sb->tyenv. It follows that at all times + during the instrumentation process, the valid indices for + tmpMap and sb->tyenv are identical, being 0 .. N-1 where N is + total number of NonShad and Shad temps allocated so far. + + The reason for this strange split (types in one place, all + other info in another) is that we need the types to be + attached to sb so as to make it possible to do + "typeOfIRExpr(mce->bb->tyenv, ...)" at various places in the + instrumentation process. + + Note that only integer temps of the guest word size are + shadowed, since it is impossible (or meaningless) to hold a + pointer in any other type of temp. */ + XArray* /* of TempMapEnt */ qmpMap; + + /* READONLY: the host word type. Needed for constructing + arguments of type 'HWord' to be passed to helper functions. + Ity_I32 or Ity_I64 only. */ + IRType hWordTy; + + /* READONLY: the guest word type, Ity_I32 or Ity_I64 only. */ + IRType gWordTy; + + /* READONLY: the guest state size, so we can generate shadow + offsets correctly. */ + Int guest_state_sizeB; + } + PCEnv; + +/* SHADOW TMP MANAGEMENT. Shadow tmps are allocated lazily (on + demand), as they are encountered. This is for two reasons. + + (1) (less important reason): Many original tmps are unused due to + initial IR optimisation, and we do not want to spaces in tables + tracking them. + + Shadow IRTemps are therefore allocated on demand. pce.tmpMap is a + table indexed [0 .. n_types-1], which gives the current shadow for + each original tmp, or INVALID_IRTEMP if none is so far assigned. + It is necessary to support making multiple assignments to a shadow + -- specifically, after testing a shadow for definedness, it needs + to be made defined. But IR's SSA property disallows this. + + (2) (more important reason): Therefore, when a shadow needs to get + a new value, a new temporary is created, the value is assigned to + that, and the tmpMap is updated to reflect the new binding. + + A corollary is that if the tmpMap maps a given tmp to + IRTemp_INVALID and we are hoping to read that shadow tmp, it means + there's a read-before-write error in the original tmps. The IR + sanity checker should catch all such anomalies, however. +*/ + +/* Create a new IRTemp of type 'ty' and kind 'kind', and add it to + both the table in pce->sb and to our auxiliary mapping. Note that + newTemp may cause pce->tmpMap to resize, hence previous results + from VG_(indexXA)(pce->tmpMap) are invalidated. */ +static IRTemp newTemp ( PCEnv* pce, IRType ty, TempKind kind ) +{ + Word newIx; + TempMapEnt ent; + IRTemp tmp = newIRTemp(pce->sb->tyenv, ty); + ent.kind = kind; + ent.shadow = IRTemp_INVALID; + newIx = VG_(addToXA)( pce->qmpMap, &ent ); + tl_assert(newIx == (Word)tmp); + return tmp; +} + +/*------------------------------------------------------------*/ +/*--- Constructing IR fragments ---*/ +/*------------------------------------------------------------*/ + +/* add stmt to a bb */ +static /*inline*/ void stmt ( HChar cat, PCEnv* pce, IRStmt* st ) { + if (pce->trace) { + VG_(printf)(" %c: ", cat); + ppIRStmt(st); + VG_(printf)("\n"); + } + addStmtToIRSB(pce->sb, st); +} + +static IRTemp for_sg__newIRTemp_cb ( IRType ty, void* opaque ) +{ + PCEnv* pce = (PCEnv*)opaque; + return newTemp( pce, ty, NonShad ); +} + + +IRSB* h_instrument ( VgCallbackClosure* closure, + IRSB* sbIn, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy ) +{ + Bool verboze = 0||False; + Int i /*, j*/; + PCEnv pce; + struct _SGEnv* sgenv; + + if (gWordTy != hWordTy) { + /* We don't currently support this case. */ + VG_(tool_panic)("host/guest word size mismatch"); + } + + /* Check we're not completely nuts */ + tl_assert(sizeof(UWord) == sizeof(void*)); + tl_assert(sizeof(Word) == sizeof(void*)); + tl_assert(sizeof(Addr) == sizeof(void*)); + tl_assert(sizeof(ULong) == 8); + tl_assert(sizeof(Long) == 8); + tl_assert(sizeof(Addr64) == 8); + tl_assert(sizeof(UInt) == 4); + tl_assert(sizeof(Int) == 4); + + /* Set up the running environment. Both .sb and .tmpMap are + modified as we go along. Note that tmps are added to both + .sb->tyenv and .tmpMap together, so the valid index-set for + those two arrays should always be identical. */ + VG_(memset)(&pce, 0, sizeof(pce)); + pce.sb = deepCopyIRSBExceptStmts(sbIn); + pce.trace = verboze; + pce.hWordTy = hWordTy; + pce.gWordTy = gWordTy; + pce.guest_state_sizeB = layout->total_sizeB; + + pce.qmpMap = VG_(newXA)( VG_(malloc), "pc.h_instrument.1", VG_(free), + sizeof(TempMapEnt)); + for (i = 0; i < sbIn->tyenv->types_used; i++) { + TempMapEnt ent; + ent.kind = NonShad; + ent.shadow = IRTemp_INVALID; + VG_(addToXA)( pce.qmpMap, &ent ); + } + tl_assert( VG_(sizeXA)( pce.qmpMap ) == sbIn->tyenv->types_used ); + + /* Also set up for the sg_ instrumenter. See comments at the top + of this instrumentation section for details. The two parameters + constitute a closure, which sg_ can use to correctly generate + new IRTemps as needed. */ + sgenv = sg_instrument_init( for_sg__newIRTemp_cb, + (void*)&pce ); + + /* Copy verbatim any IR preamble preceding the first IMark */ + + i = 0; + while (i < sbIn->stmts_used && sbIn->stmts[i]->tag != Ist_IMark) { + IRStmt* st = sbIn->stmts[i]; + tl_assert(st); + tl_assert(isFlatIRStmt(st)); + stmt( 'C', &pce, sbIn->stmts[i] ); + i++; + } + + /* Iterate over the remaining stmts to generate instrumentation. */ + + tl_assert(sbIn->stmts_used > 0); + tl_assert(i >= 0); + tl_assert(i < sbIn->stmts_used); + tl_assert(sbIn->stmts[i]->tag == Ist_IMark); + + for (/*use current i*/; i < sbIn->stmts_used; i++) { + /* generate sg_ instrumentation for this stmt */ + sg_instrument_IRStmt( sgenv, pce.sb, sbIn->stmts[i], + layout, gWordTy, hWordTy ); + + stmt( 'C', &pce, sbIn->stmts[i] ); + } + + /* generate sg_ instrumentation for the final jump */ + sg_instrument_final_jump( sgenv, pce.sb, sbIn->next, sbIn->jumpkind, + layout, gWordTy, hWordTy ); + + /* and finalise .. */ + sg_instrument_fini( sgenv ); + + /* If this fails, there's been some serious snafu with tmp management, + that should be investigated. */ + tl_assert( VG_(sizeXA)( pce.qmpMap ) == pce.sb->tyenv->types_used ); + VG_(deleteXA)( pce.qmpMap ); + + return pce.sb; +} + + +/*--------------------------------------------------------------------*/ +/*--- Finalisation ---*/ +/*--------------------------------------------------------------------*/ + +void h_fini ( Int exitcode ) +{ + if (VG_(clo_verbosity) == 1 && !VG_(clo_xml)) { + VG_(message)(Vg_UserMsg, + "For counts of detected and suppressed errors, " + "rerun with: -v\n"); + } + + if (VG_(clo_stats)) { + VG_(message)(Vg_DebugMsg, + " h_: %'10llu client allocs, %'10llu client frees\n", + stats__client_mallocs, stats__client_frees); + VG_(message)(Vg_DebugMsg, + " h_: %'10llu Segs allocd, %'10llu Segs recycled\n", + stats__segs_allocd, stats__segs_recycled); + } +} + + +/*--------------------------------------------------------------------*/ +/*--- end h_main.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.h new file mode 100644 index 000000000..21be3bb57 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/h_main.h @@ -0,0 +1,81 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- Exports for heap access checking. ---*/ +/*--- h_main.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2003-2010 Nicholas Nethercote + njn@valgrind.org + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __H_MAIN_H + +#define __H_MAIN_H + +// Choose values that couldn't possibly be pointers +#define NONPTR ((Seg*)0xA1) +#define UNKNOWN ((Seg*)0xB2) +#define BOTTOM ((Seg*)0xC3) + +static inline Bool is_known_segment(Seg* teg) { + return (UNKNOWN != teg && BOTTOM != teg && NONPTR != teg); + // better? teg <= BOTTOM +} + +void Seg__cmp(Seg* seg, Addr a, Int* cmp, UWord* n); +Bool Seg__is_freed(Seg* seg); +ExeContext* Seg__where(Seg* seg); +SizeT Seg__size(Seg* seg); +Addr Seg__addr(Seg* seg); + +void h_pre_clo_init ( void ); +void h_post_clo_init ( void ); +void h_fini ( Int exitcode ); + +void* h_replace_malloc ( ThreadId tid, SizeT n ); +void* h_replace___builtin_new ( ThreadId tid, SizeT n ); +void* h_replace___builtin_vec_new ( ThreadId tid, SizeT n ); +void* h_replace_memalign ( ThreadId tid, SizeT align, SizeT n ); +void* h_replace_calloc ( ThreadId tid, SizeT nmemb, SizeT size1 ); +void h_replace_free ( ThreadId tid, void* p ); +void h_replace___builtin_delete ( ThreadId tid, void* p ); +void h_replace___builtin_vec_delete ( ThreadId tid, void* p ); +void* h_replace_realloc ( ThreadId tid, void* p_old, SizeT new_size ); +SizeT h_replace_malloc_usable_size ( ThreadId tid, void* p ); + +/* Note that this also does the sg_ instrumentation. */ +IRSB* h_instrument ( VgCallbackClosure* closure, + IRSB* sbIn, + VexGuestLayout* layout, + VexGuestExtents* vge, + IRType gWordTy, IRType hWordTy ); + +#endif + +/*--------------------------------------------------------------------*/ +/*--- end h_main.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.c new file mode 100644 index 000000000..429579f76 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.c @@ -0,0 +1,802 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- Provides stuff shared between sg_ and h_ subtools. ---*/ +/*--- pc_common.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. + + Neither the names of the U.S. Department of Energy nor the + University of California nor the names of its contributors may be + used to endorse or promote products derived from this software + without prior written permission. +*/ + +#include "pub_tool_basics.h" +#include "pub_tool_libcbase.h" +#include "pub_tool_libcprint.h" +#include "pub_tool_xarray.h" +#include "pub_tool_mallocfree.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_options.h" +#include "pub_tool_replacemalloc.h" +#include "pub_tool_execontext.h" +#include "pub_tool_tooliface.h" // CorePart +#include "pub_tool_threadstate.h" // VG_(get_running_tid) +#include "pub_tool_debuginfo.h" + +#include "pc_common.h" // self, & Seg + +#include "h_main.h" // NONPTR, BOTTOM, UNKNOWN + + +////////////////////////////////////////////////////////////// +// // +// Command line options // +// // +////////////////////////////////////////////////////////////// + +Bool h_clo_partial_loads_ok = True; /* user visible */ +/* Bool h_clo_lossage_check = False; */ /* dev flag only */ +Bool sg_clo_enable_sg_checks = True; /* user visible */ + +Bool pc_process_cmd_line_options(Char* arg) +{ + if VG_BOOL_CLO(arg, "--partial-loads-ok", h_clo_partial_loads_ok) {} + /* else if VG_BOOL_CLO(arg, "--lossage-check", h_clo_lossage_check) {} */ + else if VG_BOOL_CLO(arg, "--enable-sg-checks", sg_clo_enable_sg_checks) {} + else + return VG_(replacement_malloc_process_cmd_line_option)(arg); + + return True; +} + +void pc_print_usage(void) +{ + VG_(printf)( + " --partial-loads-ok=no|yes same as for Memcheck [yes]\n" + " --enable-sg-checks=no|yes enable stack & global array checking? [yes]\n" + ); +} + +void pc_print_debug_usage(void) +{ + VG_(printf)( +" (none)\n" +//" --lossage-check=no|yes gather stats for quality control [no]\n" + ); +} + + + +////////////////////////////////////////////////////////////// +// // +// Error management -- storage // +// // +////////////////////////////////////////////////////////////// + +/* What kind of error it is. */ +typedef + enum { + XE_SorG=1202, // sg: stack or global array inconsistency + XE_Heap, // h: mismatched ptr/addr segments on load/store + XE_Arith, // h: bad arithmetic between two segment pointers + XE_SysParam // h: block straddling >1 segment passed to syscall + } + XErrorTag; + +typedef + enum { + XS_SorG=2021, + XS_Heap, + XS_Arith, + XS_SysParam + } + XSuppTag; + +typedef + struct { + XErrorTag tag; + union { + struct { + Addr addr; + SSizeT sszB; /* -ve is write, +ve is read */ + HChar expect[128]; + HChar actual[128]; + HChar delta[32]; // text showing relation to expected + } SorG; + struct { + Addr addr; + SSizeT sszB; /* -ve is write, +ve is read */ + Seg* vseg; + XArray* descr1; /* XArray* of HChar */ + XArray* descr2; /* XArray* of HChar */ + Char datasym[96]; + PtrdiffT datasymoff; + } Heap; + struct { + Seg* seg1; + Seg* seg2; + const HChar* opname; // user-understandable text name + } Arith; + struct { + CorePart part; + Addr lo; + Addr hi; + Seg* seglo; + Seg* seghi; + } SysParam; + } XE; + } + XError; + + +void sg_record_error_SorG ( ThreadId tid, + Addr addr, SSizeT sszB, + HChar* expect, HChar* actual, HChar* delta ) +{ + XError xe; + VG_(memset)(&xe, 0, sizeof(xe)); + xe.tag = XE_SorG; + xe.XE.SorG.addr = addr; + xe.XE.SorG.sszB = sszB; + VG_(strncpy)( &xe.XE.SorG.expect[0], + expect, sizeof(xe.XE.SorG.expect) ); + VG_(strncpy)( &xe.XE.SorG.actual[0], + actual, sizeof(xe.XE.SorG.actual) ); + VG_(strncpy)( &xe.XE.SorG.delta[0], + delta, sizeof(xe.XE.SorG.delta) ); + xe.XE.SorG.expect[ sizeof(xe.XE.SorG.expect)-1 ] = 0; + xe.XE.SorG.actual[ sizeof(xe.XE.SorG.actual)-1 ] = 0; + xe.XE.SorG.delta[ sizeof(xe.XE.SorG.delta)-1 ] = 0; + VG_(maybe_record_error)( tid, XE_SorG, 0, NULL, &xe ); +} + +void h_record_heap_error( Addr a, SizeT size, Seg* vseg, Bool is_write ) +{ + XError xe; + tl_assert(size > 0); + VG_(memset)(&xe, 0, sizeof(xe)); + xe.tag = XE_Heap; + xe.XE.Heap.addr = a; + xe.XE.Heap.sszB = is_write ? -size : size; + xe.XE.Heap.vseg = vseg; + VG_(maybe_record_error)( VG_(get_running_tid)(), XE_Heap, + /*a*/0, /*str*/NULL, /*extra*/(void*)&xe); +} + +void h_record_arith_error( Seg* seg1, Seg* seg2, HChar* opname ) +{ + XError xe; + VG_(memset)(&xe, 0, sizeof(xe)); + xe.tag = XE_Arith; + xe.XE.Arith.seg1 = seg1; + xe.XE.Arith.seg2 = seg2; + xe.XE.Arith.opname = opname; + VG_(maybe_record_error)( VG_(get_running_tid)(), XE_Arith, + /*a*/0, /*str*/NULL, /*extra*/(void*)&xe); +} + +void h_record_sysparam_error( ThreadId tid, CorePart part, Char* s, + Addr lo, Addr hi, Seg* seglo, Seg* seghi ) +{ + XError xe; + VG_(memset)(&xe, 0, sizeof(xe)); + xe.tag = XE_SysParam; + xe.XE.SysParam.part = part; + xe.XE.SysParam.lo = lo; + xe.XE.SysParam.hi = hi; + xe.XE.SysParam.seglo = seglo; + xe.XE.SysParam.seghi = seghi; + VG_(maybe_record_error)( tid, XE_SysParam, /*a*/(Addr)0, /*str*/s, + /*extra*/(void*)&xe); +} + + +Bool pc_eq_Error ( VgRes res, Error* e1, Error* e2 ) +{ + XError *xe1, *xe2; + tl_assert(VG_(get_error_kind)(e1) == VG_(get_error_kind)(e2)); + //tl_assert(VG_(get_error_string)(e1) == NULL); + //tl_assert(VG_(get_error_string)(e2) == NULL); + + xe1 = (XError*)VG_(get_error_extra)(e1); + xe2 = (XError*)VG_(get_error_extra)(e2); + tl_assert(xe1); + tl_assert(xe2); + + if (xe1->tag != xe2->tag) + return False; + + switch (xe1->tag) { + case XE_SorG: + return //xe1->XE.SorG.addr == xe2->XE.SorG.addr + //&& + xe1->XE.SorG.sszB == xe2->XE.SorG.sszB + && 0 == VG_(strncmp)( &xe1->XE.SorG.expect[0], + &xe2->XE.SorG.expect[0], + sizeof(xe1->XE.SorG.expect) ) + && 0 == VG_(strncmp)( &xe1->XE.SorG.actual[0], + &xe2->XE.SorG.actual[0], + sizeof(xe1->XE.SorG.actual) ); + case XE_Heap: + case XE_Arith: + case XE_SysParam: + return True; + default: + VG_(tool_panic)("eq_Error: unrecognised error kind"); + } +} + + +////////////////////////////////////////////////////////////// +// // +// Error management -- printing // +// // +////////////////////////////////////////////////////////////// + +/* This is the "this error is due to be printed shortly; so have a + look at it any print any preamble you want" function. Which, in + Ptrcheck, we don't use. Hence a no-op. +*/ +void pc_before_pp_Error ( Error* err ) { +} + +/* Do a printf-style operation on either the XML or normal output + channel, depending on the setting of VG_(clo_xml). +*/ +static void emit_WRK ( HChar* format, va_list vargs ) +{ + if (VG_(clo_xml)) { + VG_(vprintf_xml)(format, vargs); + } else { + VG_(vmessage)(Vg_UserMsg, format, vargs); + } +} +static void emit ( HChar* format, ... ) PRINTF_CHECK(1, 2); +static void emit ( HChar* format, ... ) +{ + va_list vargs; + va_start(vargs, format); + emit_WRK(format, vargs); + va_end(vargs); +} +static void emiN ( HChar* format, ... ) /* With NO FORMAT CHECK */ +{ + va_list vargs; + va_start(vargs, format); + emit_WRK(format, vargs); + va_end(vargs); +} + + +static Char* readwrite(SSizeT sszB) +{ + return ( sszB < 0 ? "write" : "read" ); +} + +static Word Word__abs ( Word w ) { + return w < 0 ? -w : w; +} + +void pc_pp_Error ( Error* err ) +{ + const Bool xml = VG_(clo_xml); /* a shorthand, that's all */ + + XError *xe = (XError*)VG_(get_error_extra)(err); + tl_assert(xe); + + switch (VG_(get_error_kind)(err)) { + + //---------------------------------------------------------- + case XE_SorG: + + if (xml) { + + emit( " SorG\n"); + emit( " Invalid %s of size %ld\n", + xe->XE.SorG.sszB < 0 ? "write" : "read", + Word__abs(xe->XE.SorG.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx expected vs actual:\n", + xe->XE.SorG.addr ); + emiN( " Expected: %t\n", + &xe->XE.SorG.expect[0] ); + emiN( " Actual: %t\n", + &xe->XE.SorG.actual[0] ); + + } else { + + emit( "Invalid %s of size %ld\n", + xe->XE.SorG.sszB < 0 ? "write" : "read", + Word__abs(xe->XE.SorG.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx expected vs actual:\n", xe->XE.SorG.addr ); + emit( " Expected: %s\n", &xe->XE.SorG.expect[0] ); + emit( " Actual: %s\n", &xe->XE.SorG.actual[0] ); + if (xe->XE.SorG.delta[0] != 0) + emit(" Actual: is %s Expected\n", &xe->XE.SorG.delta[0]); + } + break; + + //---------------------------------------------------------- + case XE_Heap: { + Char *place, *legit, *how_invalid; + Addr a = xe->XE.Heap.addr; + Seg* vseg = xe->XE.Heap.vseg; + + tl_assert(is_known_segment(vseg) || NONPTR == vseg); + + if (NONPTR == vseg) { + // Access via a non-pointer + + if (xml) { + + emit( " Heap\n"); + emit( " Invalid %s of size %ld\n", + readwrite(xe->XE.Heap.sszB), + Word__abs(xe->XE.Heap.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is not derived from " + "any known block\n", a ); + + } else { + + emit( "Invalid %s of size %ld\n", + readwrite(xe->XE.Heap.sszB), + Word__abs(xe->XE.Heap.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is not derived from " + "any known block\n", a ); + + } + + } else { + // Access via a pointer, but outside its range. + Int cmp; + UWord miss_size; + Seg__cmp(vseg, a, &cmp, &miss_size); + if (cmp < 0) place = "before"; + else if (cmp == 0) place = "inside"; + else place = "after"; + how_invalid = ( ( Seg__is_freed(vseg) && 0 != cmp ) + ? "Doubly-invalid" : "Invalid" ); + legit = ( Seg__is_freed(vseg) ? "once-" : "" ); + + if (xml) { + + emit( " Heap\n"); + emit( " %s %s of size %ld\n", + how_invalid, + readwrite(xe->XE.Heap.sszB), + Word__abs(xe->XE.Heap.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is %lu bytes %s " + "the accessing pointer's\n", + a, miss_size, place ); + emit( " %slegitimate range, " + "a block of size %lu %s\n", + legit, Seg__size(vseg), + Seg__is_freed(vseg) ? "free'd" : "alloc'd" ); + VG_(pp_ExeContext)(Seg__where(vseg)); + + } else { + + emit( "%s %s of size %ld\n", + how_invalid, + readwrite(xe->XE.Heap.sszB), + Word__abs(xe->XE.Heap.sszB) ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is %lu bytes %s the accessing pointer's\n", + a, miss_size, place ); + emit( " %slegitimate range, a block of size %lu %s\n", + legit, Seg__size(vseg), + Seg__is_freed(vseg) ? "free'd" : "alloc'd" ); + VG_(pp_ExeContext)(Seg__where(vseg)); + + } + } + + /* If we have a better description of the address, show it. + Note that in XML mode, it will already by nicely wrapped up + in tags, either or , so we can just emit + it verbatim. */ + if (xml) { + + if (xe->XE.Heap.descr1) + emiN( " %t\n", + (HChar*)VG_(indexXA)( xe->XE.Heap.descr1, 0 ) ); + if (xe->XE.Heap.descr2) + emiN( " %t\n", + (HChar*)VG_(indexXA)( xe->XE.Heap.descr2, 0 ) ); + if (xe->XE.Heap.datasym[0] != 0) + emiN( " Address 0x%llx is %llu bytes " + "inside data symbol \"%t\"\n", + (ULong)xe->XE.Heap.addr, + (ULong)xe->XE.Heap.datasymoff, + xe->XE.Heap.datasym ); + + } else { + + if (xe->XE.Heap.descr1) + emit( " %s\n", + (HChar*)VG_(indexXA)( xe->XE.Heap.descr1, 0 ) ); + if (xe->XE.Heap.descr2) + emit( " %s\n", + (HChar*)VG_(indexXA)( xe->XE.Heap.descr2, 0 ) ); + if (xe->XE.Heap.datasym[0] != 0) + emit( " Address 0x%llx is %llu bytes " + "inside data symbol \"%s\"\n", + (ULong)xe->XE.Heap.addr, + (ULong)xe->XE.Heap.datasymoff, + xe->XE.Heap.datasym ); + + } + break; + } + + //---------------------------------------------------------- + case XE_Arith: { + Seg* seg1 = xe->XE.Arith.seg1; + Seg* seg2 = xe->XE.Arith.seg2; + Char* which; + + tl_assert(BOTTOM != seg1); + tl_assert(BOTTOM != seg2 && UNKNOWN != seg2); + + if (xml) { + + emit( " Arith\n"); + emit( " Invalid arguments to %s\n", + xe->XE.Arith.opname ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + if (seg1 != seg2) { + if (NONPTR == seg1) { + emit( " First arg not a pointer\n" ); + } else if (UNKNOWN == seg1) { + emit( " First arg may be a pointer\n" ); + } else { + emit( " First arg derived from address %#lx of " + "%lu-byte block alloc'd\n", + Seg__addr(seg1), Seg__size(seg1) ); + VG_(pp_ExeContext)(Seg__where(seg1)); + } + which = "Second arg"; + } else { + which = "Both args"; + } + if (NONPTR == seg2) { + emit( " %s not a pointer\n", which ); + } else { + emit( " %s derived from address %#lx of " + "%lu-byte block alloc'd\n", + which, Seg__addr(seg2), Seg__size(seg2) ); + VG_(pp_ExeContext)(Seg__where(seg2)); + } + + } else { + + emit( "Invalid arguments to %s\n", + xe->XE.Arith.opname ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + if (seg1 != seg2) { + if (NONPTR == seg1) { + emit( " First arg not a pointer\n" ); + } else if (UNKNOWN == seg1) { + emit( " First arg may be a pointer\n" ); + } else { + emit( " First arg derived from address %#lx of " + "%lu-byte block alloc'd\n", + Seg__addr(seg1), Seg__size(seg1) ); + VG_(pp_ExeContext)(Seg__where(seg1)); + } + which = "Second arg"; + } else { + which = "Both args"; + } + if (NONPTR == seg2) { + emit( " %s not a pointer\n", which ); + } else { + emit( " %s derived from address %#lx of " + "%lu-byte block alloc'd\n", + which, Seg__addr(seg2), Seg__size(seg2) ); + VG_(pp_ExeContext)(Seg__where(seg2)); + } + + } + + break; + } + + //---------------------------------------------------------- + case XE_SysParam: { + Addr lo = xe->XE.SysParam.lo; + Addr hi = xe->XE.SysParam.hi; + Seg* seglo = xe->XE.SysParam.seglo; + Seg* seghi = xe->XE.SysParam.seghi; + Char* s = VG_(get_error_string) (err); + Char* what; + + tl_assert(BOTTOM != seglo && BOTTOM != seghi); + + if (Vg_CoreSysCall == xe->XE.SysParam.part) + what = "Syscall param "; + else VG_(tool_panic)("bad CorePart"); + + if (seglo == seghi) { + // freed block + tl_assert(is_known_segment(seglo)); + tl_assert(Seg__is_freed(seglo)); // XXX what if it's now recycled? + + if (xml) { + + emit( " SysParam\n"); + emit( " %s%s contains unaddressable byte(s)\n", + what, s ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is %ld bytes inside a " + "%ld-byte block free'd\n", + lo, lo-Seg__addr(seglo), Seg__size(seglo) ); + VG_(pp_ExeContext)(Seg__where(seglo)); + + } else { + + emit( " %s%s contains unaddressable byte(s)\n", + what, s ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + emit( " Address %#lx is %ld bytes inside a " + "%ld-byte block free'd\n", + lo, lo-Seg__addr(seglo), Seg__size(seglo) ); + VG_(pp_ExeContext)(Seg__where(seglo)); + + } + + } else { + // mismatch + + if (xml) { + + emit( " SysParam\n"); + emit( " %s%s is non-contiguous\n", + what, s ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + if (UNKNOWN == seglo) { + emit( " First byte is " + "not inside a known block\n" ); + } else { + emit( " First byte (%#lx) is %ld bytes inside a " + "%ld-byte block alloc'd\n", + lo, lo-Seg__addr(seglo), Seg__size(seglo) ); + VG_(pp_ExeContext)(Seg__where(seglo)); + } + + if (UNKNOWN == seghi) { + emit( " Last byte is " + "not inside a known block\n" ); + } else { + emit( " Last byte (%#lx) is %ld bytes inside a " + "%ld-byte block alloc'd\n", + hi, hi-Seg__addr(seghi), Seg__size(seghi) ); + VG_(pp_ExeContext)(Seg__where(seghi)); + } + + } else { + + emit( "%s%s is non-contiguous\n", + what, s ); + VG_(pp_ExeContext)( VG_(get_error_where)(err) ); + + if (UNKNOWN == seglo) { + emit( " First byte is not inside a known block\n" ); + } else { + emit( " First byte (%#lx) is %ld bytes inside a " + "%ld-byte block alloc'd\n", + lo, lo-Seg__addr(seglo), Seg__size(seglo) ); + VG_(pp_ExeContext)(Seg__where(seglo)); + } + + if (UNKNOWN == seghi) { + emit( " Last byte is not inside a known block\n" ); + } else { + emit( " Last byte (%#lx) is %ld bytes inside a " + "%ld-byte block alloc'd\n", + hi, hi-Seg__addr(seghi), Seg__size(seghi) ); + VG_(pp_ExeContext)(Seg__where(seghi)); + } + + } + + } + break; + } + + default: + VG_(tool_panic)("pp_Error: unrecognised error kind"); + } +} + + +UInt pc_update_Error_extra ( Error* err ) +{ + XError *xe = (XError*)VG_(get_error_extra)(err); + tl_assert(xe); + switch (xe->tag) { + case XE_SorG: + break; + case XE_Heap: { + Bool have_descr; + + tl_assert(sizeof(xe->XE.Heap.datasym) > 0); + xe->XE.Heap.datasymoff = 0; + xe->XE.Heap.datasym[0] = 0; + + tl_assert(!xe->XE.Heap.descr1); + tl_assert(!xe->XE.Heap.descr2); + + xe->XE.Heap.descr1 + = VG_(newXA)( VG_(malloc), "pc.update_extra.Heap.descr1", + VG_(free), sizeof(HChar) ); + xe->XE.Heap.descr2 + = VG_(newXA)( VG_(malloc), "pc.update_extra.Heap.descr1", + VG_(free), sizeof(HChar) ); + + VG_(memset)(&xe->XE.Heap.datasym, 0, sizeof(xe->XE.Heap.datasym)); + xe->XE.Heap.datasymoff = 0; + + have_descr + = VG_(get_data_description)( xe->XE.Heap.descr1, + xe->XE.Heap.descr2, + xe->XE.Heap.addr ); + + /* If there's nothing in descr1/2, free it. Why is it safe to + to VG_(indexXA) at zero here? Because + VG_(get_data_description) guarantees to zero terminate + descr1/2 regardless of the outcome of the call. So there's + always at least one element in each XA after the call. + */ + if (0 == VG_(strlen)( VG_(indexXA)( xe->XE.Heap.descr1, 0 )) + || !have_descr) { + VG_(deleteXA)( xe->XE.Heap.descr1 ); + xe->XE.Heap.descr1 = NULL; + } + if (0 == VG_(strlen)( VG_(indexXA)( xe->XE.Heap.descr2, 0 )) + || !have_descr) { + VG_(deleteXA)( xe->XE.Heap.descr2 ); + xe->XE.Heap.descr2 = NULL; + } + + /* If Dwarf3 info produced nothing useful, see at least if + we can fish something useful out of the ELF symbol info. */ + if (!have_descr) { + if (VG_(get_datasym_and_offset)( + xe->XE.Heap.addr, &xe->XE.Heap.datasym[0], + sizeof(xe->XE.Heap.datasym)-1, + &xe->XE.Heap.datasymoff ) + ) { + tl_assert(xe->XE.Heap.datasym[sizeof(xe->XE.Heap.datasym)-1] + == 0); + } + } + break; + } + case XE_Arith: + break; + case XE_SysParam: + break; + default: + VG_(tool_panic)("update_extra"); + } + return sizeof(XError); +} + +Bool pc_is_recognised_suppression ( Char* name, Supp *su ) +{ + SuppKind skind; + + if (VG_STREQ(name, "SorG")) skind = XS_SorG; + else if (VG_STREQ(name, "Heap")) skind = XS_Heap; + else if (VG_STREQ(name, "Arith")) skind = XS_Arith; + else if (VG_STREQ(name, "SysParam")) skind = XS_SysParam; + else + return False; + + VG_(set_supp_kind)(su, skind); + return True; +} + +Bool pc_read_extra_suppression_info ( Int fd, Char** bufpp, + SizeT* nBufp, Supp* su ) +{ + Bool eof; + if (VG_(get_supp_kind)(su) == XS_SysParam) { + eof = VG_(get_line) ( fd, bufpp, nBufp, NULL ); + if (eof) return False; + VG_(set_supp_string)(su, VG_(strdup)("pc.common.presi.1", *bufpp)); + } + return True; +} + +Bool pc_error_matches_suppression (Error* err, Supp* su) +{ + ErrorKind ekind = VG_(get_error_kind)(err); + switch (VG_(get_supp_kind)(su)) { + case XS_SorG: return ekind == XE_SorG; + case XS_Heap: return ekind == XE_Heap; + case XS_Arith: return ekind == XE_Arith; + case XS_SysParam: return ekind == XE_SysParam; + default: + VG_(printf)("Error:\n" + " unknown suppression type %d\n", + VG_(get_supp_kind)(su)); + VG_(tool_panic)("unknown suppression type in " + "pc_error_matches_suppression"); + } +} + +Char* pc_get_error_name ( Error* err ) +{ + XError *xe = (XError*)VG_(get_error_extra)(err); + tl_assert(xe); + switch (xe->tag) { + case XE_SorG: return "SorG"; + case XE_Heap: return "Heap"; + case XE_Arith: return "Arith"; + case XE_SysParam: return "SysParam"; + default: VG_(tool_panic)("get_error_name: unexpected type"); + } +} + +Bool pc_get_extra_suppression_info ( Error* err, + /*OUT*/Char* buf, Int nBuf ) +{ + ErrorKind ekind = VG_(get_error_kind )(err); + tl_assert(buf); + tl_assert(nBuf >= 16); // stay sane + if (XE_SysParam == ekind) { + Char* errstr = VG_(get_error_string)(err); + tl_assert(errstr); + VG_(snprintf)(buf, nBuf-1, "%s", errstr); + return True; + } else { + return False; + } +} + + +/*--------------------------------------------------------------------*/ +/*--- end pc_common.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.h new file mode 100644 index 000000000..676efe5f5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_common.h @@ -0,0 +1,75 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- Exports for stuff shared between sg_ and h_ subtools. ---*/ +/*--- pc_common.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __PC_COMMON_H + +#define __PC_COMMON_H + +typedef struct _Seg Seg; /* abstract every except in h_main.c */ + +void sg_record_error_SorG ( ThreadId tid, + Addr addr, SSizeT sszB, + HChar* expect, HChar* actual, HChar* delta ); + +void h_record_heap_error( Addr a, SizeT size, Seg* vseg, Bool is_write ); + +void h_record_arith_error( Seg* seg1, Seg* seg2, HChar* opname ); + +void h_record_sysparam_error( ThreadId tid, CorePart part, Char* s, + Addr lo, Addr hi, Seg* seglo, Seg* seghi ); + +Bool pc_eq_Error ( VgRes res, Error* e1, Error* e2 ); +void pc_before_pp_Error ( Error* err ); +void pc_pp_Error ( Error* err ); +UInt pc_update_Error_extra ( Error* err ); +Bool pc_is_recognised_suppression ( Char* name, Supp *su ); +Bool pc_read_extra_suppression_info ( Int fd, Char** bufpp, + SizeT* nBufp, Supp* su ); +Bool pc_error_matches_suppression (Error* err, Supp* su); +Char* pc_get_error_name ( Error* err ); +Bool pc_get_extra_suppression_info ( Error* err, + /*OUT*/Char* buf, Int nBuf ); + +extern Bool h_clo_partial_loads_ok; +/* extern Bool h_clo_lossage_check; */ +extern Bool sg_clo_enable_sg_checks; + +Bool pc_process_cmd_line_options(Char* arg); +void pc_print_usage(void); +void pc_print_debug_usage(void); + + +#endif + +/*--------------------------------------------------------------------*/ +/*--- end pc_common.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_main.c new file mode 100644 index 000000000..21edef182 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/pc_main.c @@ -0,0 +1,146 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- This file coordinates the h_ and sg_ subtools. ---*/ +/*--- pc_main.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. + + Neither the names of the U.S. Department of Energy nor the + University of California nor the names of its contributors may be + used to endorse or promote products derived from this software + without prior written permission. +*/ + +#include "pub_tool_basics.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_libcprint.h" +#include "pub_tool_execontext.h" +#include "pub_tool_tooliface.h" +#include "pub_tool_options.h" + +#include "sg_main.h" +#include "pc_common.h" +#include "h_main.h" + + +////////////////////////////////////////////////////////////// +// // +// main // +// // +////////////////////////////////////////////////////////////// + +static void pc_pre_clo_init(void) +{ +#if defined(VGO_darwin) + // This makes the (all-failing) regtests run much faster. + VG_(printf)("SGCheck doesn't work on Darwin yet, sorry.\n"); + VG_(exit)(1); +#endif +#if defined(VGA_s390x) + /* fixs390: to be done. */ + VG_(printf)("SGCheck doesn't work s390x yet, sorry.\n"); + VG_(exit)(1); +#endif + + // Can't change the name until we change the names in suppressions + // too. + VG_(details_name) ("exp-sgcheck"); + VG_(details_version) (NULL); + VG_(details_description) ("a stack and global array " + "overrun detector"); + VG_(details_copyright_author)( + "Copyright (C) 2003-2010, and GNU GPL'd, by OpenWorks Ltd et al."); + VG_(details_bug_reports_to) (VG_BUGS_TO); + VG_(details_avg_translation_sizeB) ( 496 ); + + VG_(basic_tool_funcs) (sg_post_clo_init, + h_instrument, + sg_fini); + + VG_(needs_malloc_replacement)( h_replace_malloc, + h_replace___builtin_new, + h_replace___builtin_vec_new, + h_replace_memalign, + h_replace_calloc, + h_replace_free, + h_replace___builtin_delete, + h_replace___builtin_vec_delete, + h_replace_realloc, + h_replace_malloc_usable_size, + 0 /* no need for client heap redzones */ ); + + VG_(needs_var_info) (); + + VG_(needs_core_errors) (); + VG_(needs_tool_errors) (pc_eq_Error, + pc_before_pp_Error, + pc_pp_Error, + True,/*show TIDs for errors*/ + pc_update_Error_extra, + pc_is_recognised_suppression, + pc_read_extra_suppression_info, + pc_error_matches_suppression, + pc_get_error_name, + pc_get_extra_suppression_info); + + VG_(needs_xml_output) (); + + //VG_(needs_syscall_wrapper)( h_pre_syscall, + // h_post_syscall ); + + VG_(needs_command_line_options)( pc_process_cmd_line_options, + pc_print_usage, + pc_print_debug_usage ); + + VG_(track_die_mem_stack) ( sg_die_mem_stack ); + VG_(track_pre_thread_ll_create) ( sg_pre_thread_ll_create ); + VG_(track_pre_thread_first_insn)( sg_pre_thread_first_insn ); + + VG_(track_new_mem_mmap) ( sg_new_mem_mmap ); + VG_(track_new_mem_startup) ( sg_new_mem_startup); + VG_(track_die_mem_munmap) ( sg_die_mem_munmap ); + + /* Really we ought to give handlers for these, to + check that syscalls don't read across array boundaries. */ + /* + VG_(track_pre_mem_read) ( NULL ); + VG_(track_pre_mem_read_asciiz) ( NULL ); + VG_(track_pre_mem_write) ( NULL ); + */ + + sg_pre_clo_init(); + + VG_(clo_vex_control).iropt_unroll_thresh = 0; + VG_(clo_vex_control).guest_chase_thresh = 0; +} + +VG_DETERMINE_INTERFACE_VERSION(pc_pre_clo_init) + + +/*--------------------------------------------------------------------*/ +/*--- end pc_main.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.c new file mode 100644 index 000000000..ea384c945 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.c @@ -0,0 +1,2548 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- This file checks stack and global array accesses. ---*/ +/*--- sg_main.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. + + Neither the names of the U.S. Department of Energy nor the + University of California nor the names of its contributors may be + used to endorse or promote products derived from this software + without prior written permission. +*/ + +#include "pub_tool_basics.h" +#include "pub_tool_libcbase.h" +#include "pub_tool_libcassert.h" +#include "pub_tool_libcprint.h" +#include "pub_tool_tooliface.h" +#include "pub_tool_wordfm.h" +#include "pub_tool_xarray.h" +#include "pub_tool_threadstate.h" +#include "pub_tool_mallocfree.h" +#include "pub_tool_machine.h" +#include "pub_tool_debuginfo.h" +#include "pub_tool_options.h" + +#include "pc_common.h" + +#include "sg_main.h" // self + + +static +void preen_global_Invars ( Addr a, SizeT len ); /*fwds*/ + + +////////////////////////////////////////////////////////////// +// // +// Basic Stuff // +// // +////////////////////////////////////////////////////////////// + +static inline Bool is_sane_TId ( ThreadId tid ) +{ + return tid >= 0 && tid < VG_N_THREADS + && tid != VG_INVALID_THREADID; +} + +static void* sg_malloc ( HChar* cc, SizeT n ) { + void* p; + tl_assert(n > 0); + p = VG_(malloc)( cc, n ); + tl_assert(p); + return p; +} + +static void sg_free ( void* p ) { + tl_assert(p); + VG_(free)(p); +} + + +/* Compare the intervals [a1,a1+n1) and [a2,a2+n2). Return -1 if the + first interval is lower, 1 if the first interval is higher, and 0 + if there is any overlap. Redundant paranoia with casting is there + following what looked distinctly like a bug in gcc-4.1.2, in which + some of the comparisons were done signedly instead of + unsignedly. */ +inline +static Word cmp_nonempty_intervals ( Addr a1, SizeT n1, + Addr a2, SizeT n2 ) { + UWord a1w = (UWord)a1; + UWord n1w = (UWord)n1; + UWord a2w = (UWord)a2; + UWord n2w = (UWord)n2; + tl_assert(n1w > 0 && n2w > 0); + if (a1w + n1w <= a2w) return -1L; + if (a2w + n2w <= a1w) return 1L; + return 0; +} + +/* Return true iff [aSmall,aSmall+nSmall) is entirely contained + within [aBig,aBig+nBig). */ +inline +static Bool is_subinterval_of ( Addr aBig, SizeT nBig, + Addr aSmall, SizeT nSmall ) { + tl_assert(nBig > 0 && nSmall > 0); + return aBig <= aSmall && aSmall + nSmall <= aBig + nBig; +} + +inline +static Addr Addr__min ( Addr a1, Addr a2 ) { + return a1 < a2 ? a1 : a2; +} + +inline +static Addr Addr__max ( Addr a1, Addr a2 ) { + return a1 < a2 ? a2 : a1; +} + + +////////////////////////////////////////////////////////////// +// // +// StackBlocks Persistent Cache // +// // +////////////////////////////////////////////////////////////// + +/* We maintain a set of XArray* of StackBlocks. These are never + freed. When a new StackBlock vector is acquired from + VG_(di_get_local_blocks_at_ip), we compare it to the existing set. + If not present, it is added. If present, the just-acquired one is + freed and the copy used. + + This simplifies storage management elsewhere. It allows us to + assume that a pointer to an XArray* of StackBlock is valid forever. + It also means there are no duplicates anywhere, which could be + important from a space point of view for programs that generate a + lot of translations, or where translations are frequently discarded + and re-made. + + Note that we normalise the arrays by sorting the elements according + to an arbitrary total order, so as to avoid the situation that two + vectors describe the same set of variables but are not structurally + identical. */ + +static inline Bool StackBlock__sane ( StackBlock* fb ) +{ + if (fb->name[ sizeof(fb->name)-1 ] != 0) + return False; + if (fb->spRel != False && fb->spRel != True) + return False; + if (fb->isVec != False && fb->isVec != True) + return False; + return True; +} + +/* Generate an arbitrary total ordering on StackBlocks. */ +static Word StackBlock__cmp ( StackBlock* fb1, StackBlock* fb2 ) +{ + Word r; + tl_assert(StackBlock__sane(fb1)); + tl_assert(StackBlock__sane(fb2)); + /* Hopefully the .base test hits most of the time. For the blocks + associated with any particular instruction, if the .base values + are the same then probably it doesn't make sense for the other + fields to be different. But this is supposed to be a completely + general structural total order, so we have to compare everything + anyway. */ + if (fb1->base < fb2->base) return -1; + if (fb1->base > fb2->base) return 1; + /* compare sizes */ + if (fb1->szB < fb2->szB) return -1; + if (fb1->szB > fb2->szB) return 1; + /* compare sp/fp flag */ + if (fb1->spRel < fb2->spRel) return -1; + if (fb1->spRel > fb2->spRel) return 1; + /* compare is/is-not array-typed flag */ + if (fb1->isVec < fb2->isVec) return -1; + if (fb1->isVec > fb2->isVec) return 1; + /* compare the name */ + r = (Word)VG_(strcmp)(fb1->name, fb2->name); + return r; +} + +/* Returns True if all fields except .szB are the same. szBs may or + may not be the same; they are simply not consulted. */ +static Bool StackBlock__all_fields_except_szB_are_equal ( + StackBlock* fb1, + StackBlock* fb2 + ) +{ + tl_assert(StackBlock__sane(fb1)); + tl_assert(StackBlock__sane(fb2)); + return fb1->base == fb2->base + && fb1->spRel == fb2->spRel + && fb1->isVec == fb2->isVec + && 0 == VG_(strcmp)(fb1->name, fb2->name); +} + + +/* Generate an arbitrary total ordering on vectors of StackBlocks. */ +static Word StackBlocks__cmp ( XArray* fb1s, XArray* fb2s ) +{ + Word i, r, n1, n2; + n1 = VG_(sizeXA)( fb1s ); + n2 = VG_(sizeXA)( fb2s ); + if (n1 < n2) return -1; + if (n1 > n2) return 1; + for (i = 0; i < n1; i++) { + StackBlock *fb1, *fb2; + fb1 = VG_(indexXA)( fb1s, i ); + fb2 = VG_(indexXA)( fb2s, i ); + r = StackBlock__cmp( fb1, fb2 ); + if (r != 0) return r; + } + tl_assert(i == n1 && i == n2); + return 0; +} + +static void pp_StackBlocks ( XArray* sbs ) +{ + Word i, n = VG_(sizeXA)( sbs ); + VG_(message)(Vg_DebugMsg, "<<< STACKBLOCKS\n" ); + for (i = 0; i < n; i++) { + StackBlock* sb = (StackBlock*)VG_(indexXA)( sbs, i ); + VG_(message)(Vg_DebugMsg, + " StackBlock{ off %ld szB %lu spRel:%c isVec:%c \"%s\" }\n", + sb->base, sb->szB, sb->spRel ? 'Y' : 'N', + sb->isVec ? 'Y' : 'N', &sb->name[0] + ); + } + VG_(message)(Vg_DebugMsg, ">>> STACKBLOCKS\n" ); +} + + +/* ---------- The StackBlock vector cache ---------- */ + +static WordFM* /* XArray* of StackBlock -> nothing */ + frameBlocks_set = NULL; + +static void init_StackBlocks_set ( void ) +{ + tl_assert(!frameBlocks_set); + frameBlocks_set + = VG_(newFM)( sg_malloc, "di.sg_main.iSBs.1", sg_free, + (Word(*)(UWord,UWord))StackBlocks__cmp ); + tl_assert(frameBlocks_set); +} + +/* Find the given StackBlock-vector in our collection thereof. If + found, deallocate the supplied one, and return the address of the + copy. If not found, add the supplied one to our collection and + return its address. */ +static XArray* /* of StackBlock */ + StackBlocks__find_and_dealloc__or_add + ( XArray* /* of StackBlock */ orig ) +{ + UWord key, val; + + /* First, normalise, as per comments above. */ + VG_(setCmpFnXA)( orig, (Int(*)(void*,void*))StackBlock__cmp ); + VG_(sortXA)( orig ); + + /* Now get rid of any exact duplicates. */ + nuke_dups: + { Word r, w, nEQ, n = VG_(sizeXA)( orig ); + if (n >= 2) { + w = 0; + nEQ = 0; + for (r = 0; r < n; r++) { + if (r+1 < n) { + StackBlock* pR0 = VG_(indexXA)( orig, r+0 ); + StackBlock* pR1 = VG_(indexXA)( orig, r+1 ); + Word c = StackBlock__cmp(pR0,pR1); + tl_assert(c == -1 || c == 0); + if (c == 0) { nEQ++; continue; } + } + if (w != r) { + StackBlock* pW = VG_(indexXA)( orig, w ); + StackBlock* pR = VG_(indexXA)( orig, r ); + *pW = *pR; + } + w++; + } + tl_assert(r == n); + tl_assert(w + nEQ == n); + if (w < n) { + VG_(dropTailXA)( orig, n-w ); + } + if (0) VG_(printf)("delta %ld\n", n-w); + } + } + + /* Deal with the following strangeness, where two otherwise + identical blocks are claimed to have different sizes. In which + case we use the larger size. */ + /* StackBlock{ off 16 szB 66 spRel:Y isVec:Y "sz" } + StackBlock{ off 16 szB 130 spRel:Y isVec:Y "sz" } + StackBlock{ off 208 szB 16 spRel:Y isVec:Y "ar" } + */ + { Word i, n = VG_(sizeXA)( orig ); + if (n >= 2) { + for (i = 0; i < n-1; i++) { + StackBlock* sb0 = VG_(indexXA)( orig, i+0 ); + StackBlock* sb1 = VG_(indexXA)( orig, i+1 ); + if (StackBlock__all_fields_except_szB_are_equal(sb0, sb1)) { + /* They can't be identical because the previous tidying + pass would have removed the duplicates. And they + can't be > because the earlier sorting pass would + have ordered otherwise-identical descriptors + according to < on .szB fields. Hence: */ + tl_assert(sb0->szB < sb1->szB); + sb0->szB = sb1->szB; + /* This makes the blocks identical, at the size of the + larger one. Rather than go to all the hassle of + sliding the rest down, simply go back to the + remove-duplicates stage. The assertion guarantees + that we eventually make progress, since the rm-dups + stage will get rid of one of the blocks. This is + expected to happen only exceedingly rarely. */ + tl_assert(StackBlock__cmp(sb0,sb1) == 0); + goto nuke_dups; + } + } + } + } + + /* If there are any blocks which overlap and have the same + fpRel-ness, junk the whole descriptor; it's obviously bogus. + Icc11 certainly generates bogus info from time to time. + + This check is pretty weak; really we ought to have a stronger + sanity check. */ + { Word i, n = VG_(sizeXA)( orig ); + static Int moans = 3; + for (i = 0; i < n-1; i++) { + StackBlock* sb1 = (StackBlock*)VG_(indexXA)( orig, i ); + StackBlock* sb2 = (StackBlock*)VG_(indexXA)( orig, i+1 ); + if (sb1->spRel == sb2->spRel + && (sb1->base >= sb2->base + || sb1->base + sb1->szB > sb2->base)) { + if (moans > 0 && !VG_(clo_xml)) { + moans--; + VG_(message)(Vg_UserMsg, "Warning: bogus DWARF3 info: " + "overlapping stack blocks\n"); + if (VG_(clo_verbosity) >= 2) + pp_StackBlocks(orig); + if (moans == 0) + VG_(message)(Vg_UserMsg, "Further instances of this " + "message will not be shown\n" ); + } + VG_(dropTailXA)( orig, VG_(sizeXA)( orig )); + break; + } + } + } + + /* Now, do we have it already? */ + if (VG_(lookupFM)( frameBlocks_set, &key, &val, (UWord)orig )) { + /* yes */ + XArray* res; + tl_assert(val == 0); + tl_assert(key != (UWord)orig); + VG_(deleteXA)(orig); + res = (XArray*)key; + return res; + } else { + /* no */ + VG_(addToFM)( frameBlocks_set, (UWord)orig, 0 ); + return orig; + } +} + +/* Top level function for getting the StackBlock vector for a given + instruction. It is guaranteed that the returned pointer will be + valid for the entire rest of the run, and also that the addresses + of the individual elements of the array will not change. */ + +static XArray* /* of StackBlock */ get_StackBlocks_for_IP ( Addr ip ) +{ + XArray* blocks = VG_(di_get_stack_blocks_at_ip)( ip, True/*arrays only*/ ); + tl_assert(blocks); + return StackBlocks__find_and_dealloc__or_add( blocks ); +} + + +////////////////////////////////////////////////////////////// +// // +// GlobalBlocks Persistent Cache // +// // +////////////////////////////////////////////////////////////// + +/* Generate an arbitrary total ordering on GlobalBlocks. */ +static Word GlobalBlock__cmp ( GlobalBlock* gb1, GlobalBlock* gb2 ) +{ + Word r; + /* compare addrs */ + if (gb1->addr < gb2->addr) return -1; + if (gb1->addr > gb2->addr) return 1; + /* compare sizes */ + if (gb1->szB < gb2->szB) return -1; + if (gb1->szB > gb2->szB) return 1; + /* compare is/is-not array-typed flag */ + if (gb1->isVec < gb2->isVec) return -1; + if (gb1->isVec > gb2->isVec) return 1; + /* compare the name */ + r = (Word)VG_(strcmp)(gb1->name, gb2->name); + if (r != 0) return r; + /* compare the soname */ + r = (Word)VG_(strcmp)(gb1->soname, gb2->soname); + return r; +} + +static WordFM* /* GlobalBlock* -> nothing */ + globalBlock_set = NULL; + +static void init_GlobalBlock_set ( void ) +{ + tl_assert(!globalBlock_set); + globalBlock_set + = VG_(newFM)( sg_malloc, "di.sg_main.iGBs.1", sg_free, + (Word(*)(UWord,UWord))GlobalBlock__cmp ); + tl_assert(globalBlock_set); +} + + +/* Top level function for making GlobalBlocks persistent. Call here + with a non-persistent version, and the returned one is guaranteed + to be valid for the entire rest of the run. The supplied one is + copied, not stored, so can be freed after the call. */ + +static GlobalBlock* get_persistent_GlobalBlock ( GlobalBlock* orig ) +{ + UWord key, val; + /* Now, do we have it already? */ + if (VG_(lookupFM)( globalBlock_set, &key, &val, (UWord)orig )) { + /* yes, return the copy */ + GlobalBlock* res; + tl_assert(val == 0); + res = (GlobalBlock*)key; + tl_assert(res != orig); + return res; + } else { + /* no. clone it, store the clone and return the clone's + address. */ + GlobalBlock* clone = sg_malloc( "di.sg_main.gpGB.1", + sizeof(GlobalBlock) ); + tl_assert(clone); + *clone = *orig; + VG_(addToFM)( globalBlock_set, (UWord)clone, 0 ); + return clone; + } +} + + +////////////////////////////////////////////////////////////// +// // +// Interval tree of StackTreeBlock // +// // +////////////////////////////////////////////////////////////// + +/* A node in a stack interval tree. Zero length intervals (.szB == 0) + are not allowed. + + A stack interval tree is a (WordFM StackTreeNode* void). There is + one stack interval tree for each thread. +*/ +typedef + struct { + Addr addr; + SizeT szB; /* copied from .descr->szB */ + StackBlock* descr; /* it's an instance of this block */ + UWord depth; /* depth of stack at time block was pushed */ + } + StackTreeNode; + +static void pp_StackTree ( WordFM* sitree, HChar* who ) +{ + UWord keyW, valW; + VG_(printf)("<<< BEGIN pp_StackTree %s\n", who ); + VG_(initIterFM)( sitree ); + while (VG_(nextIterFM)( sitree, &keyW, &valW )) { + StackTreeNode* nd = (StackTreeNode*)keyW; + VG_(printf)(" [%#lx,+%lu) descr=%p %s %lu\n", nd->addr, nd->szB, + nd->descr, nd->descr->name, nd->descr->szB); + } + VG_(printf)(">>> END pp_StackTree %s\n", who ); +} + +/* Interval comparison function for StackTreeNode */ +static Word cmp_intervals_StackTreeNode ( StackTreeNode* sn1, + StackTreeNode* sn2 ) +{ + return cmp_nonempty_intervals(sn1->addr, sn1->szB, + sn2->addr, sn2->szB); +} + +/* Find the node holding 'a', if any. */ +static StackTreeNode* find_StackTreeNode ( WordFM* sitree, Addr a ) +{ + UWord keyW, valW; + StackTreeNode key; + tl_assert(sitree); + key.addr = a; + key.szB = 1; + if (VG_(lookupFM)( sitree, &keyW, &valW, (UWord)&key )) { + StackTreeNode* res = (StackTreeNode*)keyW; + tl_assert(valW == 0); + tl_assert(res != &key); + return res; + } else { + return NULL; + } +} + +/* Note that the supplied XArray of FrameBlock must have been + made persistent already. */ +__attribute__((noinline)) +static void add_blocks_to_StackTree ( + /*MOD*/WordFM* sitree, + XArray* /* FrameBlock */ descrs, + XArray* /* Addr */ bases, + UWord depth + ) +{ + Bool debug = (Bool)0; + Word i, nDescrs, nBases; + + nDescrs = VG_(sizeXA)( descrs ), + nBases = VG_(sizeXA)( bases ); + tl_assert(nDescrs == nBases); + + if (nDescrs == 0) return; + + tl_assert(sitree); + if (debug) { + VG_(printf)("\ndepth = %lu\n", depth); + pp_StackTree( sitree, "add_blocks_to_StackTree-pre" ); + pp_StackBlocks(descrs); + } + + for (i = 0; i < nDescrs; i++) { + Bool already_present; + StackTreeNode* nyu; + Addr addr = *(Addr*)VG_(indexXA)( bases, i ); + StackBlock* descr = (StackBlock*)VG_(indexXA)( descrs, i ); + tl_assert(descr->szB > 0); + nyu = sg_malloc( "di.sg_main.abtST.1", sizeof(StackTreeNode) ); + nyu->addr = addr; + nyu->szB = descr->szB; + nyu->descr = descr; + nyu->depth = depth; + if (debug) VG_(printf)("ADD %#lx %lu\n", addr, descr->szB); + already_present = VG_(addToFM)( sitree, (UWord)nyu, 0 ); + /* The interval can't already be there; else we have + overlapping stack blocks. */ + tl_assert(!already_present); + if (debug) { + pp_StackTree( sitree, "add_blocks_to_StackTree-step" ); + } + } + if (debug) { + pp_StackTree( sitree, "add_blocks_to_StackTree-post" ); + VG_(printf)("\n"); + } +} + +static void del_blocks_from_StackTree ( /*MOD*/WordFM* sitree, + XArray* /* Addr */ bases ) +{ + UWord oldK, oldV; + Word i, nBases = VG_(sizeXA)( bases ); + for (i = 0; i < nBases; i++) { + Bool b; + Addr addr = *(Addr*)VG_(indexXA)( bases, i ); + StackTreeNode* nd = find_StackTreeNode(sitree, addr); + /* The interval must be there; we added it earlier when + the associated frame was created. */ + tl_assert(nd); + b = VG_(delFromFM)( sitree, &oldK, &oldV, (UWord)nd ); + /* we just found the block! */ + tl_assert(b); + tl_assert(oldV == 0); + tl_assert(nd == (StackTreeNode*)oldK); + sg_free(nd); + } +} + + +static void delete_StackTree__kFin ( UWord keyW ) { + StackTreeNode* nd = (StackTreeNode*)keyW; + tl_assert(nd); + sg_free(nd); +} +static void delete_StackTree__vFin ( UWord valW ) { + tl_assert(valW == 0); +} +static void delete_StackTree ( WordFM* sitree ) +{ + VG_(deleteFM)( sitree, + delete_StackTree__kFin, delete_StackTree__vFin ); +} + +static WordFM* new_StackTree ( void ) { + return VG_(newFM)( sg_malloc, "di.sg_main.nST.1", sg_free, + (Word(*)(UWord,UWord))cmp_intervals_StackTreeNode ); +} + + +////////////////////////////////////////////////////////////// +// // +// Interval tree of GlobalTreeBlock // +// // +////////////////////////////////////////////////////////////// + +/* A node in a global interval tree. Zero length intervals + (.szB == 0) are not allowed. + + A global interval tree is a (WordFM GlobalTreeNode* void). There + is one global interval tree for the entire process. +*/ +typedef + struct { + Addr addr; /* copied from .descr->addr */ + SizeT szB; /* copied from .descr->szB */ + GlobalBlock* descr; /* it's this block */ + } + GlobalTreeNode; + +static void GlobalTreeNode__pp ( GlobalTreeNode* nd ) { + tl_assert(nd->descr); + VG_(printf)("GTNode [%#lx,+%ld) %s", + nd->addr, nd->szB, nd->descr->name); +} + +static void GlobalTree__pp ( WordFM* /* of (GlobalTreeNode,void) */ gitree, + HChar* who ) +{ + UWord keyW, valW; + GlobalTreeNode* nd; + VG_(printf)("<<< GlobalBlockTree (%s)\n", who); + VG_(initIterFM)( gitree ); + while (VG_(nextIterFM)( gitree, &keyW, &valW )) { + tl_assert(valW == 0); + nd = (GlobalTreeNode*)keyW; + VG_(printf)(" "); + GlobalTreeNode__pp(nd); + VG_(printf)("\n"); + } + VG_(doneIterFM)( gitree ); + VG_(printf)(">>>\n"); +} + +/* Interval comparison function for GlobalTreeNode */ +static Word cmp_intervals_GlobalTreeNode ( GlobalTreeNode* gn1, + GlobalTreeNode* gn2 ) +{ + return cmp_nonempty_intervals( gn1->addr, gn1->szB, + gn2->addr, gn2->szB ); +} + +/* Find the node holding 'a', if any. */ +static GlobalTreeNode* find_GlobalTreeNode ( WordFM* gitree, Addr a ) +{ + UWord keyW, valW; + GlobalTreeNode key; + key.addr = a; + key.szB = 1; + if (VG_(lookupFM)( gitree, &keyW, &valW, (UWord)&key )) { + GlobalTreeNode* res = (GlobalTreeNode*)keyW; + tl_assert(valW == 0); + tl_assert(res != &key); + return res; + } else { + return NULL; + } +} + +/* Note that the supplied GlobalBlock must have been made persistent + already. */ +static void add_block_to_GlobalTree ( + /*MOD*/WordFM* gitree, + GlobalBlock* descr + ) +{ + Bool already_present; + GlobalTreeNode *nyu, *nd; + UWord keyW, valW; + static Int moans = 3; + + tl_assert(descr->szB > 0); + nyu = sg_malloc( "di.sg_main.abtG.1", sizeof(GlobalTreeNode) ); + nyu->addr = descr->addr; + nyu->szB = descr->szB; + nyu->descr = descr; + + /* Basically it's an error to add a global block to the tree that + is already in the tree. However, detect and ignore attempts to + insert exact duplicates; they do appear for some reason + (possible a bug in m_debuginfo?) */ + already_present = VG_(lookupFM)( gitree, &keyW, &valW, (UWord)nyu ); + if (already_present) { + tl_assert(valW == 0); + nd = (GlobalTreeNode*)keyW; + tl_assert(nd); + tl_assert(nd != nyu); + tl_assert(nd->descr); + tl_assert(nyu->descr); + if (nd->addr == nyu->addr && nd->szB == nyu->szB + /* && 0 == VG_(strcmp)(nd->descr->name, nyu->descr->name) */ + /* Although it seems reasonable to demand that duplicate + blocks have identical names, that is too strict. For + example, reading debuginfo from glibc produces two + otherwise identical blocks with names "tzname" and + "__tzname". A constraint of the form "must be identical, + or one must be a substring of the other" would fix that. + However, such trickery is scuppered by the fact that we + truncate all variable names to 15 characters to make + storage management simpler, hence giving pairs like + "__EI___pthread_" (truncated) vs "__pthread_keys". So + it's simplest just to skip the name comparison + completely. */ + && 0 == VG_(strcmp)(nd->descr->soname, nyu->descr->soname)) { + /* exact duplicate; ignore it */ + sg_free(nyu); + return; + } + /* else fall through; the assertion below will catch it */ + } + + already_present = VG_(addToFM)( gitree, (UWord)nyu, 0 ); + /* The interval can't already be there; else we have + overlapping global blocks. */ + /* Unfortunately (25 Jan 09) at least icc11 has been seen to + generate overlapping block descriptions in the Dwarf3; clearly + bogus. */ + if (already_present && moans > 0 && !VG_(clo_xml)) { + moans--; + VG_(message)(Vg_UserMsg, "Warning: bogus DWARF3 info: " + "overlapping global blocks\n"); + if (VG_(clo_verbosity) >= 2) { + GlobalTree__pp( gitree, + "add_block_to_GlobalTree: non-exact duplicate" ); + VG_(printf)("Overlapping block: "); + GlobalTreeNode__pp(nyu); + VG_(printf)("\n"); + } + if (moans == 0) + VG_(message)(Vg_UserMsg, "Further instances of this " + "message will not be shown\n" ); + } + /* tl_assert(!already_present); */ +} + +static Bool del_GlobalTree_range ( /*MOD*/WordFM* gitree, + Addr a, SizeT szB ) +{ + /* One easy way to do this: look up [a,a+szB) in the tree. That + will either succeed, producing a block which intersects that + range, in which case we delete it and repeat; or it will fail, + in which case there are no blocks intersecting the range, and we + can bring the process to a halt. */ + UWord keyW, valW, oldK, oldV; + GlobalTreeNode key, *nd; + Bool b, anyFound; + + tl_assert(szB > 0); + + anyFound = False; + + key.addr = a; + key.szB = szB; + + while (VG_(lookupFM)( gitree, &keyW, &valW, (UWord)&key )) { + anyFound = True; + nd = (GlobalTreeNode*)keyW; + tl_assert(valW == 0); + tl_assert(nd != &key); + tl_assert(cmp_nonempty_intervals(a, szB, nd->addr, nd->szB) == 0); + + b = VG_(delFromFM)( gitree, &oldK, &oldV, (UWord)&key ); + tl_assert(b); + tl_assert(oldV == 0); + tl_assert(oldK == keyW); /* check we deleted the node we just found */ + } + + return anyFound; +} + + +////////////////////////////////////////////////////////////// +// // +// Invar // +// // +////////////////////////////////////////////////////////////// + +/* An invariant, as resulting from watching the destination of a + memory referencing instruction. Initially is Inv_Unset until the + instruction makes a first access. */ + +typedef + enum { + Inv_Unset=1, /* not established yet */ + Inv_Unknown, /* unknown location */ + Inv_Stack0, /* array-typed stack block in innermost frame */ + Inv_StackN, /* array-typed stack block in non-innermost frame */ + Inv_Global, /* array-typed global block */ + } + InvarTag; + +typedef + struct { + InvarTag tag; + union { + struct { + } Unset; + struct { + } Unknown; + struct { + Addr addr; + SizeT szB; + StackBlock* descr; + } Stack0; /* innermost stack frame */ + struct { + /* Pointer to a node in the interval tree for + this thread. */ + StackTreeNode* nd; + } StackN; /* non-innermost stack frame */ + struct { + /* Pointer to a GlobalBlock in the interval tree of + global blocks. */ + GlobalTreeNode* nd; + } Global; + } + Inv; + } + Invar; + +/* Partial debugging printing for an Invar. */ +static void pp_Invar ( Invar* i ) +{ + switch (i->tag) { + case Inv_Unset: + VG_(printf)("Unset"); + break; + case Inv_Unknown: + VG_(printf)("Unknown"); + break; + case Inv_Stack0: + VG_(printf)("Stack0 [%#lx,+%lu)", + i->Inv.Stack0.addr, i->Inv.Stack0.szB); + break; + case Inv_StackN: + VG_(printf)("StackN [%#lx,+%lu)", + i->Inv.StackN.nd->addr, i->Inv.StackN.nd->szB); + break; + case Inv_Global: + VG_(printf)("Global [%#lx,+%lu)", + i->Inv.Global.nd->addr, i->Inv.Global.nd->szB); + break; + default: + tl_assert(0); + } +} + +/* Compare two Invars for equality. */ +static Bool eq_Invar ( Invar* i1, Invar* i2 ) +{ + tl_assert(i1->tag != Inv_Unset); + tl_assert(i2->tag != Inv_Unset); + if (i1->tag != i2->tag) + return False; + switch (i1->tag) { + case Inv_Unknown: + return True; + case Inv_Stack0: + return i1->Inv.Stack0.addr == i2->Inv.Stack0.addr + && i1->Inv.Stack0.szB == i2->Inv.Stack0.szB; + case Inv_StackN: + return i1->Inv.StackN.nd == i2->Inv.StackN.nd; + case Inv_Global: + return i1->Inv.Global.nd == i2->Inv.Global.nd; + default: + tl_assert(0); + } + /*NOTREACHED*/ + tl_assert(0); +} + +/* Generate a piece of text showing 'ea' is relative to 'invar', if + known. If unknown, generate an empty string. 'buf' must be at + least 32 bytes in size. Also return the absolute value of the + delta, if known, or zero if not known. +*/ +static void gen_delta_str ( /*OUT*/HChar* buf, + /*OUT*/UWord* absDelta, + Invar* inv, Addr ea ) +{ + Addr block = 0; + SizeT szB = 0; + + buf[0] = 0; + *absDelta = 0; + + switch (inv->tag) { + case Inv_Unknown: + case Inv_Unset: + return; /* unknown */ + case Inv_Stack0: + block = inv->Inv.Stack0.addr; + szB = inv->Inv.Stack0.szB; + break; + case Inv_StackN: + block = inv->Inv.StackN.nd->addr; + szB = inv->Inv.StackN.nd->szB; + break; + case Inv_Global: + block = inv->Inv.Global.nd->addr; + szB = inv->Inv.Global.nd->szB; + break; + default: + tl_assert(0); + } + tl_assert(szB > 0); + if (ea < block) { + *absDelta = block - ea; + VG_(sprintf)(buf, "%'lu before", *absDelta); + } + else if (ea >= block + szB) { + *absDelta = ea - (block + szB); + VG_(sprintf)(buf, "%'lu after", *absDelta); + } + else { + // Leave *absDelta at zero. + VG_(sprintf)(buf, "%'lu inside", ea - block); + } +} + + +/* Print selected parts of an Invar, suitable for use in error + messages. */ +static void show_Invar( HChar* buf, Word nBuf, Invar* inv, Word depth ) +{ + HChar* str; + tl_assert(nBuf >= 128); + buf[0] = 0; + switch (inv->tag) { + case Inv_Unknown: + VG_(sprintf)(buf, "%s", "unknown"); + break; + case Inv_Stack0: + str = "array"; + VG_(sprintf)(buf, "stack %s \"%s\" of size %'lu in this frame", + str, inv->Inv.Stack0.descr->name, + inv->Inv.Stack0.szB ); + break; + case Inv_StackN: + str = "array"; + VG_(sprintf)(buf, "stack %s \"%s\" of size %'lu in frame %lu back from here", + str, inv->Inv.StackN.nd->descr->name, + inv->Inv.StackN.nd->descr->szB, + depth - inv->Inv.StackN.nd->depth ); + break; + case Inv_Global: + str = "array"; + VG_(sprintf)(buf, "global %s \"%s\" of size %'lu in object with soname \"%s\"", + str, inv->Inv.Global.nd->descr->name, + inv->Inv.Global.nd->descr->szB, + inv->Inv.Global.nd->descr->soname ); + break; + case Inv_Unset: + VG_(sprintf)(buf, "%s", "Unset!"); + break; + default: + tl_assert(0); + } +} + + +////////////////////////////////////////////////////////////// +// // +// our globals // +// // +////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////// +/// + +#define N_QCACHE 16 + +/* Powers of two only, else the result will be chaos */ +#define QCACHE_ADVANCE_EVERY 16 + +/* Per-thread query cache. Note that the invar can only be Inv_StackN + (but not Inv_Stack0), Inv_Global or Inv_Unknown. */ +typedef + struct { + Addr addr; + SizeT szB; + Invar inv; + } + QCElem; + +typedef + struct { + Word nInUse; + QCElem elems[N_QCACHE]; + } + QCache; + +static void QCache__invalidate ( QCache* qc ) { + tl_assert(qc->nInUse >= 0); + qc->nInUse = 0; +} + +static void QCache__pp ( QCache* qc, HChar* who ) +{ + Word i; + VG_(printf)("<<< QCache with %ld elements (%s)\n", qc->nInUse, who); + for (i = 0; i < qc->nInUse; i++) { + VG_(printf)(" [%#lx,+%#lx) ", qc->elems[i].addr, qc->elems[i].szB); + pp_Invar(&qc->elems[i].inv); + VG_(printf)("\n"); + } + VG_(printf)(">>>\n"); +} + +static ULong stats__qcache_queries = 0; +static ULong stats__qcache_misses = 0; +static ULong stats__qcache_probes = 0; + +/// +////////////////////////////////////////////////////////////// + +/* Each thread has: + * a shadow stack of StackFrames, which is a double-linked list + * an stack block interval tree +*/ +static struct _StackFrame* shadowStacks[VG_N_THREADS]; + +static WordFM* /* StackTreeNode */ siTrees[VG_N_THREADS]; + +static QCache qcaches[VG_N_THREADS]; + + +/* Additionally, there is one global variable interval tree + for the entire process. +*/ +static WordFM* /* GlobalTreeNode */ giTree; + + +static void invalidate_all_QCaches ( void ) +{ + Word i; + for (i = 0; i < VG_N_THREADS; i++) { + QCache__invalidate( &qcaches[i] ); + } +} + +static void ourGlobals_init ( void ) +{ + Word i; + for (i = 0; i < VG_N_THREADS; i++) { + shadowStacks[i] = NULL; + siTrees[i] = NULL; + } + invalidate_all_QCaches(); + giTree = VG_(newFM)( sg_malloc, "di.sg_main.oGi.1", sg_free, + (Word(*)(UWord,UWord))cmp_intervals_GlobalTreeNode ); +} + + +////////////////////////////////////////////////////////////// +// // +// Handle global variable load/unload events // +// // +////////////////////////////////////////////////////////////// + +static void acquire_globals ( ULong di_handle ) +{ + Word n, i; + XArray* /* of GlobalBlock */ gbs; + if (0) VG_(printf)("ACQUIRE GLOBALS %llu\n", di_handle ); + gbs = VG_(di_get_global_blocks_from_dihandle) + (di_handle, True/*arrays only*/); + if (0) VG_(printf)(" GOT %ld globals\n", VG_(sizeXA)( gbs )); + + n = VG_(sizeXA)( gbs ); + for (i = 0; i < n; i++) { + GlobalBlock* gbp; + GlobalBlock* gb = VG_(indexXA)( gbs, i ); + if (0) VG_(printf)(" new Global size %2lu at %#lx: %s %s\n", + gb->szB, gb->addr, gb->soname, gb->name ); + tl_assert(gb->szB > 0); + /* Make a persistent copy of each GlobalBlock, and add it + to the tree. */ + gbp = get_persistent_GlobalBlock( gb ); + add_block_to_GlobalTree( giTree, gbp ); + } + + VG_(deleteXA)( gbs ); +} + + +/* We only intercept these two because we need to see any di_handles + that might arise from the mappings/allocations. */ +void sg_new_mem_mmap( Addr a, SizeT len, + Bool rr, Bool ww, Bool xx, ULong di_handle ) +{ + if (di_handle > 0) + acquire_globals(di_handle); +} +void sg_new_mem_startup( Addr a, SizeT len, + Bool rr, Bool ww, Bool xx, ULong di_handle ) +{ + if (di_handle > 0) + acquire_globals(di_handle); +} +void sg_die_mem_munmap ( Addr a, SizeT len ) +{ + Bool debug = (Bool)0; + Bool overlap = False; + + if (debug) VG_(printf)("MUNMAP %#lx %lu\n", a, len ); + + if (len == 0) + return; + + overlap = del_GlobalTree_range(giTree, a, len); + + { /* redundant sanity check */ + UWord keyW, valW; + VG_(initIterFM)( giTree ); + while (VG_(nextIterFM)( giTree, &keyW, &valW )) { + GlobalTreeNode* nd = (GlobalTreeNode*)keyW; + tl_assert(valW == 0); + tl_assert(nd->szB > 0); + tl_assert(nd->addr + nd->szB <= a + || a + len <= nd->addr); + } + VG_(doneIterFM)( giTree ); + } + + if (!overlap) + return; + + /* Ok, the range contained some blocks. Therefore we'll need to + visit all the Invars in all the thread shadow stacks, and + convert all Inv_Global entries that intersect [a,a+len) to + Inv_Unknown. */ + tl_assert(len > 0); + preen_global_Invars( a, len ); + invalidate_all_QCaches(); +} + + +////////////////////////////////////////////////////////////// +// // +// StackFrame // +// // +////////////////////////////////////////////////////////////// + +static ULong stats__total_accesses = 0; +static ULong stats__classify_Stack0 = 0; +static ULong stats__classify_StackN = 0; +static ULong stats__classify_Global = 0; +static ULong stats__classify_Unknown = 0; +static ULong stats__Invars_preened = 0; +static ULong stats__Invars_changed = 0; +static ULong stats__t_i_b_empty = 0; +static ULong stats__htab_fast = 0; +static ULong stats__htab_searches = 0; +static ULong stats__htab_probes = 0; +static ULong stats__htab_resizes = 0; + + +/* A dynamic instance of an instruction */ +typedef + struct { + /* IMMUTABLE */ + Addr insn_addr; /* NB! zero means 'not in use' */ + XArray* blocks; /* XArray* of StackBlock, or NULL if none */ + /* MUTABLE */ + Invar invar; + } + IInstance; + + +#define N_HTAB_FIXED 64 + +typedef + struct _StackFrame { + /* The sp when the frame was created, so we know when to get rid + of it. */ + Addr creation_sp; + /* The stack frames for a thread are arranged as a doubly linked + list. Obviously the outermost frame in the stack has .outer + as NULL and the innermost in theory has .inner as NULL. + However, when a function returns, we don't delete the + just-vacated StackFrame. Instead, it is retained in the list + and will be re-used when the next call happens. This is so + as to avoid constantly having to dynamically allocate and + deallocate frames. */ + struct _StackFrame* inner; + struct _StackFrame* outer; + Word depth; /* 0 for outermost; increases inwards */ + /* Information for each memory referencing instruction, for this + instantiation of the function. The iinstances array is + operated as a simple linear-probe hash table, which is + dynamically expanded as necessary. Once critical thing is + that an IInstance with a .insn_addr of zero is interpreted to + mean that hash table slot is unused. This means we can't + store an IInstance for address zero. */ + /* Note that htab initially points to htab_fixed. If htab_fixed + turns out not to be big enough then htab is made to point to + dynamically allocated memory. But it's often the case that + htab_fixed is big enough, so this optimisation saves a huge + number of sg_malloc/sg_free call pairs. */ + IInstance* htab; + UWord htab_size; /* size of hash table, MAY ONLY BE A POWER OF 2 */ + UWord htab_used; /* number of hash table slots currently in use */ + /* If this frame is currently making a call, then the following + are relevant. */ + Addr sp_at_call; + Addr fp_at_call; + XArray* /* of Addr */ blocks_added_by_call; + /* See comment just above */ + IInstance htab_fixed[N_HTAB_FIXED]; + } + StackFrame; + + + + + +/* Move this somewhere else? */ +/* Visit all Invars in the entire system. If 'isHeap' is True, change + all Inv_Heap Invars that intersect [a,a+len) to Inv_Unknown. If + 'isHeap' is False, do the same but to the Inv_Global{S,V} Invars + instead. */ + +__attribute__((noinline)) +static void preen_global_Invar ( Invar* inv, Addr a, SizeT len ) +{ + stats__Invars_preened++; + tl_assert(len > 0); + tl_assert(inv); + switch (inv->tag) { + case Inv_Global: + tl_assert(inv->Inv.Global.nd); + tl_assert(inv->Inv.Global.nd->szB > 0); + if (0) VG_(printf)("preen_Invar Global %#lx %lu\n", + inv->Inv.Global.nd->addr, + inv->Inv.Global.nd->szB); + if (0 == cmp_nonempty_intervals(a, len, inv->Inv.Global.nd->addr, + inv->Inv.Global.nd->szB)) { + inv->tag = Inv_Unknown; + stats__Invars_changed++; + } + break; + case Inv_Stack0: + case Inv_StackN: + case Inv_Unknown: + break; + default: + tl_assert(0); + } +} + +__attribute__((noinline)) +static void preen_global_Invars ( Addr a, SizeT len ) +{ + Int i; + UWord u; + StackFrame* frame; + tl_assert(len > 0); + for (i = 0; i < VG_N_THREADS; i++) { + frame = shadowStacks[i]; + if (!frame) + continue; /* no frames for this thread */ + /* start from the innermost frame */ + while (frame->inner) + frame = frame->inner; + tl_assert(frame->outer); + /* work through the frames from innermost to outermost. The + order isn't important; we just need to ensure we visit each + frame once (including those which are not actually active, + more 'inner' than the 'innermost active frame', viz, just + hanging around waiting to be used, when the current innermost + active frame makes more calls. See comments on definition of + struct _StackFrame. */ + for (; frame; frame = frame->outer) { + UWord xx = 0; /* sanity check only; count of used htab entries */ + if (!frame->htab) + continue; /* frame not in use. See shadowStack_unwind(). */ + for (u = 0; u < frame->htab_size; u++) { + IInstance* ii = &frame->htab[u]; + if (ii->insn_addr == 0) + continue; /* not in use */ + if (0) { pp_Invar(&ii->invar); VG_(printf)(" x\n"); } + preen_global_Invar( &ii->invar, a, len ); + xx++; + } + tl_assert(xx == frame->htab_used); + } + } +} + + +/* XXX this should be >> 2 on ppc32/64 since the bottom two bits + of the ip are guaranteed to be zero */ +inline static UWord compute_II_hash ( Addr ip, UWord htab_size ) { + return (ip >> 0) & (htab_size - 1); +} + +__attribute__((noinline)) +static void initialise_II_hash_table ( StackFrame* sf ) +{ + UWord i; + sf->htab_size = N_HTAB_FIXED; /* initial hash table size */ + sf->htab = &sf->htab_fixed[0]; + tl_assert(sf->htab); + sf->htab_used = 0; + for (i = 0; i < sf->htab_size; i++) + sf->htab[i].insn_addr = 0; /* NOT IN USE */ +} + + +__attribute__((noinline)) +static void resize_II_hash_table ( StackFrame* sf ) +{ + UWord i, j, ix, old_size, new_size; + IInstance *old_htab, *new_htab, *old; + + tl_assert(sf && sf->htab); + old_size = sf->htab_size; + new_size = 2 * old_size; + old_htab = sf->htab; + new_htab = sg_malloc( "di.sg_main.rIht.1", + new_size * sizeof(IInstance) ); + for (i = 0; i < new_size; i++) { + new_htab[i].insn_addr = 0; /* NOT IN USE */ + } + for (i = 0; i < old_size; i++) { + old = &old_htab[i]; + if (old->insn_addr == 0 /* NOT IN USE */) + continue; + ix = compute_II_hash(old->insn_addr, new_size); + /* find out where to put this, in the new table */ + j = new_size; + while (1) { + if (new_htab[ix].insn_addr == 0) + break; + /* This can't ever happen, because it would mean the new + table is full; that isn't allowed -- even the old table is + only allowed to become half full. */ + tl_assert(j > 0); + j--; + ix++; if (ix == new_size) ix = 0; + } + /* copy the old entry to this location */ + tl_assert(ix < new_size); + tl_assert(new_htab[ix].insn_addr == 0); + new_htab[ix] = *old; + tl_assert(new_htab[ix].insn_addr != 0); + } + /* all entries copied; free old table. */ + if (old_htab != &sf->htab_fixed[0]) + sg_free(old_htab); + sf->htab = new_htab; + sf->htab_size = new_size; + /* check sf->htab_used is correct. Optional and a bit expensive + but anyway: */ + j = 0; + for (i = 0; i < new_size; i++) { + if (new_htab[i].insn_addr != 0) { + j++; + } + } + tl_assert(j == sf->htab_used); + if (0) VG_(printf)("resized tab for SF %p to %lu\n", sf, new_size); +} + + +__attribute__((noinline)) +static IInstance* find_or_create_IInstance_SLOW ( + StackFrame* sf, + Addr ip, + XArray* /* StackBlock */ ip_frameblocks + ) +{ + UWord i, ix; + + stats__htab_searches++; + + tl_assert(sf); + tl_assert(sf->htab); + + /* Make sure the table loading doesn't get too high. */ + if (UNLIKELY(2 * sf->htab_used >= 1 * sf->htab_size)) { + stats__htab_resizes++; + resize_II_hash_table(sf); + } + tl_assert(2 * sf->htab_used <= sf->htab_size); + + ix = compute_II_hash(ip, sf->htab_size); + i = sf->htab_size; + while (1) { + stats__htab_probes++; + /* Note that because of the way the fast-case handler works, + these two tests are actually redundant in the first iteration + of this loop. (Except they aren't redundant if the code just + above resized the table first. :-) */ + if (sf->htab[ix].insn_addr == ip) + return &sf->htab[ix]; + if (sf->htab[ix].insn_addr == 0) + break; + /* If i ever gets to zero and we have found neither what we're + looking for nor an empty slot, the table must be full. Which + isn't possible -- we monitor the load factor to ensure it + doesn't get above say 50%; if that ever does happen the table + is resized. */ + tl_assert(i > 0); + i--; + ix++; + if (ix == sf->htab_size) ix = 0; + } + + /* So now we've found a free slot at ix, and we can use that. */ + tl_assert(sf->htab[ix].insn_addr == 0); + + /* Add a new record in this slot. */ + tl_assert(ip != 0); /* CAN'T REPRESENT THIS */ + sf->htab[ix].insn_addr = ip; + sf->htab[ix].blocks = ip_frameblocks; + sf->htab[ix].invar.tag = Inv_Unset; + sf->htab_used++; + return &sf->htab[ix]; +} + + +inline +static IInstance* find_or_create_IInstance ( + StackFrame* sf, + Addr ip, + XArray* /* StackBlock */ ip_frameblocks + ) +{ + UWord ix = compute_II_hash(ip, sf->htab_size); + /* Is it in the first slot we come to? */ + if (LIKELY(sf->htab[ix].insn_addr == ip)) { + stats__htab_fast++; + return &sf->htab[ix]; + } + /* If the first slot we come to is empty, bag it. */ + if (LIKELY(sf->htab[ix].insn_addr == 0)) { + stats__htab_fast++; + tl_assert(ip != 0); + sf->htab[ix].insn_addr = ip; + sf->htab[ix].blocks = ip_frameblocks; + sf->htab[ix].invar.tag = Inv_Unset; + sf->htab_used++; + return &sf->htab[ix]; + } + /* Otherwise we hand off to the slow case, which searches other + slots, and optionally resizes the table if necessary. */ + return find_or_create_IInstance_SLOW( sf, ip, ip_frameblocks ); +} + + +__attribute__((noinline)) +static Addr calculate_StackBlock_EA ( StackBlock* descr, + Addr sp, Addr fp ) { + UWord w1 = (UWord)descr->base; + UWord w2 = (UWord)(descr->spRel ? sp : fp); + UWord ea = w1 + w2; + return ea; +} + +/* Given an array of StackBlocks, return an array of Addrs, holding + their effective addresses. Caller deallocates result array. */ +__attribute__((noinline)) +static XArray* /* Addr */ calculate_StackBlock_EAs ( + XArray* /* StackBlock */ blocks, + Addr sp, Addr fp + ) +{ + XArray* res; + Word i, n = VG_(sizeXA)( blocks ); + tl_assert(n > 0); + res = VG_(newXA)( sg_malloc, "di.sg_main.cSBE.1", sg_free, sizeof(Addr) ); + for (i = 0; i < n; i++) { + StackBlock* blk = VG_(indexXA)( blocks, i ); + Addr ea = calculate_StackBlock_EA( blk, sp, fp ); + VG_(addToXA)( res, &ea ); + } + return res; +} + + +/* Try to classify the block into which a memory access falls, and + write the result in 'inv'. This writes all relevant fields of + 'inv'. */ +__attribute__((noinline)) +static void classify_address ( /*OUT*/Invar* inv, + ThreadId tid, + Addr ea, Addr sp, Addr fp, + UWord szB, + XArray* /* of StackBlock */ thisInstrBlocks ) +{ + tl_assert(szB > 0); + /* First, look in the stack blocks accessible in this instruction's + frame. */ + { + Word i, nBlocks = VG_(sizeXA)( thisInstrBlocks ); + if (nBlocks == 0) stats__t_i_b_empty++; + for (i = 0; i < nBlocks; i++) { + StackBlock* descr = VG_(indexXA)( thisInstrBlocks, i ); + Addr bea = calculate_StackBlock_EA( descr, sp, fp ); + if (bea <= ea && ea + szB <= bea + descr->szB) { + /* found it */ + inv->tag = Inv_Stack0; + inv->Inv.Stack0.addr = bea; + inv->Inv.Stack0.szB = descr->szB; + inv->Inv.Stack0.descr = descr; + stats__classify_Stack0++; + return; + } + } + } + /* Look in this thread's query cache */ + { Word i; + QCache* cache = &qcaches[tid]; + static UWord ctr = 0; + stats__qcache_queries++; + for (i = 0; i < cache->nInUse; i++) { + if (0) /* expensive in a loop like this */ + tl_assert(cache->elems[i].addr + cache->elems[i].szB != 0); + stats__qcache_probes++; + if (is_subinterval_of(cache->elems[i].addr, + cache->elems[i].szB, ea, szB)) { + if (i > 0 + && (ctr++ & (QCACHE_ADVANCE_EVERY-1)) == 0) { + QCElem tmp; + tmp = cache->elems[i-1]; + cache->elems[i-1] = cache->elems[i]; + cache->elems[i] = tmp; + i--; + } + *inv = cache->elems[i].inv; + return; + } + } + stats__qcache_misses++; + } + /* Ok, so it's not a block in the top frame. Perhaps it's a block + in some calling frame? Consult this thread's stack-block + interval tree to find out. */ + { StackTreeNode* nd = find_StackTreeNode( siTrees[tid], ea ); + /* We know that [ea,ea+1) is in the block, but we need to + restrict to the case where the whole access falls within + it. */ + if (nd && !is_subinterval_of(nd->addr, nd->szB, ea, szB)) { + nd = NULL; + } + if (nd) { + /* found it */ + inv->tag = Inv_StackN; + inv->Inv.StackN.nd = nd; + stats__classify_StackN++; + goto out; + } + } + /* Not in a stack block. Try the global pool. */ + { GlobalTreeNode* nd = find_GlobalTreeNode(giTree, ea); + /* We know that [ea,ea+1) is in the block, but we need to + restrict to the case where the whole access falls within + it. */ + if (nd && !is_subinterval_of(nd->addr, nd->szB, ea, szB)) { + nd = NULL; + } + if (nd) { + /* found it */ + inv->tag = Inv_Global; + inv->Inv.Global.nd = nd; + stats__classify_Global++; + goto out; + } + } + /* No idea - give up. */ + inv->tag = Inv_Unknown; + stats__classify_Unknown++; + + /* Update the cache */ + out: + { Addr toadd_addr = 0; + SizeT toadd_szB = 0; + QCache* cache = &qcaches[tid]; + + static UWord ctr = 0; + Bool show = False; + if (0 && 0 == (ctr++ & 0x1FFFFF)) show = True; + + if (show) QCache__pp(cache, "before upd"); + + switch (inv->tag) { + case Inv_Global: + toadd_addr = inv->Inv.Global.nd->addr; + toadd_szB = inv->Inv.Global.nd->szB; + break; + case Inv_StackN: + toadd_addr = inv->Inv.StackN.nd->addr; + toadd_szB = inv->Inv.StackN.nd->szB; + break; + case Inv_Unknown: { + /* This is more complex. We need to figure out the + intersection of the "holes" in the global and stack + interval trees into which [ea,ea+szB) falls. This is + further complicated by the fact that [ea,ea+szB) might + not fall cleanly into a hole; it may instead fall across + the boundary of a stack or global block. In that case + we just ignore it and don't update the cache, since we + have no way to represent this situation precisely. */ + StackTreeNode sNegInf, sPosInf, sKey, *sLB, *sUB; + GlobalTreeNode gNegInf, gPosInf, gKey, *gLB, *gUB; + Addr gMin, gMax, sMin, sMax, uMin, uMax; + Bool sOK, gOK; + sNegInf.addr = 0; + sNegInf.szB = 1; + sPosInf.addr = ~(UWord)0; + sPosInf.szB = 1; + gNegInf.addr = 0; + gNegInf.szB = 1; + gPosInf.addr = ~(UWord)0; + gPosInf.szB = 1; + sKey.addr = ea; + sKey.szB = szB; + gKey.addr = ea; + gKey.szB = szB; + if (0) VG_(printf)("Tree sizes %ld %ld\n", + VG_(sizeFM)(siTrees[tid]), VG_(sizeFM)(giTree)); + sOK = VG_(findBoundsFM)( siTrees[tid], + (UWord*)&sLB, NULL/*unused*/, + (UWord*)&sUB, NULL/*unused*/, + (UWord)&sNegInf, 0/*unused*/, + (UWord)&sPosInf, 0/*unused*/, + (UWord)&sKey ); + gOK = VG_(findBoundsFM)( giTree, + (UWord*)&gLB, NULL/*unused*/, + (UWord*)&gUB, NULL/*unused*/, + (UWord)&gNegInf, 0/*unused*/, + (UWord)&gPosInf, 0/*unused*/, + (UWord)&gKey ); + if (!(sOK && gOK)) { + /* If this happens, then [ea,ea+szB) partially overlaps + a heap or stack block. We can't represent that, so + just forget it (should be very rare). However, do + maximum sanity checks first. In such a + partial overlap case, it can't be the case that both + [ea] and [ea+szB-1] overlap the same block, since if + that were indeed the case then it wouldn't be a + partial overlap; rather it would simply fall inside + that block entirely and we shouldn't be inside this + conditional at all. */ + if (!sOK) { + StackTreeNode *ndFirst, *ndLast; + ndFirst = find_StackTreeNode( siTrees[tid], ea ); + ndLast = find_StackTreeNode( siTrees[tid], ea+szB-1 ); + /* if both ends of the range fall inside a block, + they can't be in the same block. */ + if (ndFirst && ndLast) + tl_assert(ndFirst != ndLast); + /* for each end of the range, if it is in a block, + the range as a whole can't be entirely within the + block. */ + if (ndFirst) + tl_assert(!is_subinterval_of(ndFirst->addr, + ndFirst->szB, ea, szB)); + if (ndLast) + tl_assert(!is_subinterval_of(ndLast->addr, + ndLast->szB, ea, szB)); + } + if (!gOK) { + GlobalTreeNode *ndFirst, *ndLast; + ndFirst = find_GlobalTreeNode( giTree, ea ); + ndLast = find_GlobalTreeNode( giTree, ea+szB-1 ); + /* if both ends of the range fall inside a block, + they can't be in the same block. */ + if (ndFirst && ndLast) + tl_assert(ndFirst != ndLast); + /* for each end of the range, if it is in a block, + the range as a whole can't be entirely within the + block. */ + if (ndFirst) + tl_assert(!is_subinterval_of(ndFirst->addr, + ndFirst->szB, ea, szB)); + if (ndLast) + tl_assert(!is_subinterval_of(ndLast->addr, + ndLast->szB, ea, szB)); + } + if (0) VG_(printf)("overlapping blocks in cache\n"); + return; + } + sMin = sLB == &sNegInf ? 0 : (sLB->addr + sLB->szB); + sMax = sUB == &sPosInf ? ~(UWord)0 : (sUB->addr - 1); + gMin = gLB == &gNegInf ? 0 : (gLB->addr + gLB->szB); + gMax = gUB == &gPosInf ? ~(UWord)0 : (gUB->addr - 1); + if (0) VG_(printf)("sMin %lx sMax %lx gMin %lx gMax %lx\n", + sMin, sMax, gMin, gMax); + /* [sMin,sMax] and [gMin,gMax] must both contain + [ea,ea+szB) (right?) That implies they must overlap at + at least over [ea,ea+szB). */ + tl_assert(sMin <= ea && ea+szB-1 <= sMax); + tl_assert(gMin <= ea && ea+szB-1 <= gMax); + /* So now compute their intersection. */ + uMin = Addr__max( sMin, gMin ); + uMax = Addr__min( sMax, gMax ); + if (0) VG_(printf)("uMin %lx uMax %lx\n", uMin, uMax); + tl_assert(uMin <= uMax); + tl_assert(uMin <= ea && ea+szB-1 <= uMax); + /* Finally, we can park [uMin,uMax] in the cache. However, + if uMax is ~0, we can't represent the difference; hence + fudge uMax. */ + if (uMin < uMax && uMax == ~(UWord)0) + uMax--; + toadd_addr = uMin; + toadd_szB = uMax - uMin + 1; + break; + } + default: + /* We should only be caching info for the above 3 cases */ + tl_assert(0); + } /* switch (inv->tag) */ + + { /* and actually add this to the cache, finally */ + Word i; + Word ip = cache->nInUse / 2; /* doesn't seem critical */ + + if (cache->nInUse < N_QCACHE) + cache->nInUse++; + for (i = cache->nInUse-1; i > ip; i--) { + cache->elems[i] = cache->elems[i-1]; + } + + tl_assert(toadd_szB > 0); + cache->elems[ip].addr = toadd_addr; + cache->elems[ip].szB = toadd_szB; + cache->elems[ip].inv = *inv; + } + + if (show) QCache__pp(cache, "after upd"); + + } +} + + +/* CALLED FROM GENERATED CODE */ +static +VG_REGPARM(3) +void helperc__mem_access ( /* Known only at run time: */ + Addr ea, Addr sp, Addr fp, + /* Known at translation time: */ + Word sszB, Addr ip, XArray* ip_frameBlocks ) +{ + UWord szB; + IInstance* iinstance; + Invar* inv; + Invar new_inv; + ThreadId tid = VG_(get_running_tid)(); + StackFrame* frame; + HChar bufE[160], bufA[160], bufD[32]; + + stats__total_accesses++; + + tl_assert(is_sane_TId(tid)); + frame = shadowStacks[tid]; + tl_assert(frame); + + /* Find the instance info for this instruction. */ + tl_assert(ip_frameBlocks); + iinstance = find_or_create_IInstance( frame, ip, ip_frameBlocks ); + tl_assert(iinstance); + tl_assert(iinstance->blocks == ip_frameBlocks); + + szB = (sszB < 0) ? (-sszB) : sszB; + tl_assert(szB > 0); + + inv = &iinstance->invar; + + /* Deal with first uses of instruction instances. */ + if (inv->tag == Inv_Unset) { + /* This is the first use of this instance of the instruction, so + we can't make any check; we merely record what we saw, so we + can compare it against what happens for 2nd and subsequent + accesses. */ + classify_address( inv, + tid, ea, sp, fp, szB, iinstance->blocks ); + tl_assert(inv->tag != Inv_Unset); + return; + } + + /* So generate an Invar and see if it's different from what + we had before. */ + classify_address( &new_inv, + tid, ea, sp, fp, szB, iinstance->blocks ); + tl_assert(new_inv.tag != Inv_Unset); + + /* Did we see something different from before? If no, then there's + no error. */ + if (LIKELY(eq_Invar(&new_inv, inv))) + return; + + tl_assert(inv->tag != Inv_Unset); + + VG_(memset)(bufE, 0, sizeof(bufE)); + show_Invar( bufE, sizeof(bufE)-1, inv, frame->depth ); + + VG_(memset)(bufA, 0, sizeof(bufA)); + show_Invar( bufA, sizeof(bufA)-1, &new_inv, frame->depth ); + + VG_(memset)(bufD, 0, sizeof(bufD)); + UWord absDelta; + gen_delta_str( bufD, &absDelta, inv, ea ); + + if (absDelta < 1024) + sg_record_error_SorG( tid, ea, sszB, bufE, bufA, bufD ); + + /* And now install the new observation as "standard", so as to + make future error messages make more sense. */ + *inv = new_inv; +} + + +//////////////////////////////////////// +/* Primary push-a-new-frame routine. Called indirectly from + generated code. */ + +static UWord stats__max_sitree_size = 0; +static UWord stats__max_gitree_size = 0; + +static +void shadowStack_new_frame ( ThreadId tid, + Addr sp_at_call_insn, + Addr sp_post_call_insn, + Addr fp_at_call_insn, + Addr ip_post_call_insn, + XArray* descrs_at_call_insn ) +{ + StackFrame *callee, *caller; + tl_assert(is_sane_TId(tid)); + + caller = shadowStacks[tid]; + tl_assert(caller); + + if (caller->outer) { /* "this is not the outermost frame" */ + tl_assert(caller->outer->inner == caller); + tl_assert(caller->outer->depth >= 0); + tl_assert(1 + caller->outer->depth == caller->depth); + } else { + tl_assert(caller->depth == 0); + } + + caller->sp_at_call = sp_at_call_insn; + caller->fp_at_call = fp_at_call_insn; + + if (descrs_at_call_insn) { + tl_assert( VG_(sizeXA)(descrs_at_call_insn) > 0 ); + caller->blocks_added_by_call + = calculate_StackBlock_EAs( descrs_at_call_insn, + sp_at_call_insn, fp_at_call_insn ); + if (caller->blocks_added_by_call) + add_blocks_to_StackTree( siTrees[tid], + descrs_at_call_insn, + caller->blocks_added_by_call, + caller->depth /* stack depth at which + these blocks are + considered to exist*/ ); + if (1) { + UWord s = VG_(sizeFM)( siTrees[tid] ); + UWord g = VG_(sizeFM)( giTree ); + Bool sb = s > stats__max_sitree_size; + Bool gb = g > stats__max_gitree_size; + if (sb) stats__max_sitree_size = s; + if (gb) stats__max_gitree_size = g; + if (0 && (sb || gb)) + VG_(message)(Vg_DebugMsg, + "exp-sgcheck: new max tree sizes: " + "StackTree %ld, GlobalTree %ld\n", + stats__max_sitree_size, stats__max_gitree_size ); + } + } else { + caller->blocks_added_by_call = NULL; + } + + /* caller->blocks_added_by_call is used again (and then freed) when + this frame is removed from the stack. */ + + if (caller->inner) { + callee = caller->inner; + } else { + callee = sg_malloc("di.sg_main.sSnf.1", sizeof(StackFrame)); + VG_(memset)(callee, 0, sizeof(StackFrame)); + callee->outer = caller; + caller->inner = callee; + callee->depth = 1 + caller->depth; + tl_assert(callee->inner == NULL); + } + + /* This sets up .htab, .htab_size and .htab_used */ + initialise_II_hash_table( callee ); + + callee->creation_sp = sp_post_call_insn; + callee->sp_at_call = 0; // not actually required .. + callee->fp_at_call = 0; // .. these 3 initialisations are .. + callee->blocks_added_by_call = NULL; // .. just for cleanness + + /* record the new running stack frame */ + shadowStacks[tid] = callee; + + /* and this thread's query cache is now invalid */ + QCache__invalidate( &qcaches[tid] ); + + if (0) + { Word d = callee->depth; + HChar fnname[80]; + Bool ok; + Addr ip = ip_post_call_insn; + ok = VG_(get_fnname_w_offset)( ip, fnname, sizeof(fnname) ); + while (d > 0) { + VG_(printf)(" "); + d--; + } + VG_(printf)("> %s %#lx\n", ok ? fnname : "???", ip); + } +} + +/* CALLED FROM GENERATED CODE */ +static +VG_REGPARM(3) +void helperc__new_frame ( Addr sp_post_call_insn, + Addr fp_at_call_insn, + Addr ip_post_call_insn, + XArray* blocks_at_call_insn, + Word sp_adjust ) +{ + ThreadId tid = VG_(get_running_tid)(); + Addr sp_at_call_insn = sp_post_call_insn + sp_adjust; + shadowStack_new_frame( tid, + sp_at_call_insn, + sp_post_call_insn, + fp_at_call_insn, + ip_post_call_insn, + blocks_at_call_insn ); +} + + +//////////////////////////////////////// +/* Primary remove-frame(s) routine. Called indirectly from + generated code. */ + +__attribute__((noinline)) +static void shadowStack_unwind ( ThreadId tid, Addr sp_now ) +{ + StackFrame *innermost, *innermostOrig; + tl_assert(is_sane_TId(tid)); + innermost = shadowStacks[tid]; + tl_assert(innermost); + innermostOrig = innermost; + //VG_(printf)("UNWIND sp_new = %p\n", sp_now); + while (1) { + if (!innermost->outer) + break; + if (innermost->inner) + tl_assert(innermost->inner->outer == innermost); + tl_assert(innermost->outer->inner == innermost); + tl_assert(innermost->blocks_added_by_call == NULL); + if (sp_now <= innermost->creation_sp) break; + //VG_(printf)("UNWIND dump %p\n", innermost->creation_sp); + tl_assert(innermost->htab); + if (innermost->htab != &innermost->htab_fixed[0]) + sg_free(innermost->htab); + /* be on the safe side */ + innermost->creation_sp = 0; + innermost->htab = NULL; + innermost->htab_size = 0; + innermost->htab_used = 0; + innermost->sp_at_call = 0; + innermost->fp_at_call = 0; + innermost->blocks_added_by_call = NULL; + innermost = innermost->outer; + + /* So now we're "back" in the calling frame. Remove from this + thread's stack-interval-tree, the blocks added at the time of + the call. */ + + if (innermost->outer) { /* not at the outermost frame */ + if (innermost->blocks_added_by_call == NULL) { + } else { + del_blocks_from_StackTree( siTrees[tid], + innermost->blocks_added_by_call ); + VG_(deleteXA)( innermost->blocks_added_by_call ); + innermost->blocks_added_by_call = NULL; + } + } + /* That completes the required tidying of the interval tree + associated with the frame we just removed. */ + + if (0) { + Word d = innermost->depth; + while (d > 0) { + VG_(printf)(" "); + d--; + } + VG_(printf)("X\n"); + } + + } + + tl_assert(innermost); + + if (innermost != innermostOrig) { + shadowStacks[tid] = innermost; + /* this thread's query cache is now invalid */ + QCache__invalidate( &qcaches[tid] ); + } +} + + + +////////////////////////////////////////////////////////////// +// // +// Instrumentation // +// // +////////////////////////////////////////////////////////////// + +/* What does instrumentation need to do? + + - at each Call transfer, generate a call to shadowStack_new_frame + do this by manually inspecting the IR + + - at each sp change, if the sp change is negative, + call shadowStack_unwind + do this by asking for SP-change analysis + + - for each memory referencing instruction, + call helperc__mem_access +*/ + +/* A complication: sg_ instrumentation and h_ instrumentation need to + be interleaved. Since the latter is a lot more complex than the + former, we split the sg_ instrumentation here into four functions + and let the h_ instrumenter call the four functions as it goes. + Hence the h_ instrumenter drives the sg_ instrumenter. + + To make this viable, the sg_ instrumenter carries what running + state it needs in 'struct _SGEnv'. This is exported only + abstractly from this file. +*/ + +struct _SGEnv { + /* the current insn's IP */ + Addr64 curr_IP; + /* whether the above is actually known */ + Bool curr_IP_known; + /* if we find a mem ref, is it the first for this insn? Used for + detecting insns which make more than one memory ref, a situation + we basically can't really handle properly; and so we ignore all + but the first ref. */ + Bool firstRef; + /* READONLY */ + IRTemp (*newIRTemp_cb)(IRType,void*); + void* newIRTemp_opaque; +}; + + +/* --- Helper fns for instrumentation --- */ + +static IRTemp gen_Get_SP ( struct _SGEnv* sge, + IRSB* bbOut, + VexGuestLayout* layout, + Int hWordTy_szB ) +{ + IRExpr* sp_expr; + IRTemp sp_temp; + IRType sp_type; + /* This in effect forces the host and guest word sizes to be the + same. */ + tl_assert(hWordTy_szB == layout->sizeof_SP); + sp_type = layout->sizeof_SP == 8 ? Ity_I64 : Ity_I32; + sp_expr = IRExpr_Get( layout->offset_SP, sp_type ); + sp_temp = sge->newIRTemp_cb( sp_type, sge->newIRTemp_opaque ); + addStmtToIRSB( bbOut, IRStmt_WrTmp( sp_temp, sp_expr ) ); + return sp_temp; +} + +static IRTemp gen_Get_FP ( struct _SGEnv* sge, + IRSB* bbOut, + VexGuestLayout* layout, + Int hWordTy_szB ) +{ + IRExpr* fp_expr; + IRTemp fp_temp; + IRType fp_type; + /* This in effect forces the host and guest word sizes to be the + same. */ + tl_assert(hWordTy_szB == layout->sizeof_SP); + fp_type = layout->sizeof_FP == 8 ? Ity_I64 : Ity_I32; + fp_expr = IRExpr_Get( layout->offset_FP, fp_type ); + fp_temp = sge->newIRTemp_cb( fp_type, sge->newIRTemp_opaque ); + addStmtToIRSB( bbOut, IRStmt_WrTmp( fp_temp, fp_expr ) ); + return fp_temp; +} + +static void instrument_mem_access ( struct _SGEnv* sge, + IRSB* bbOut, + IRExpr* addr, + Int szB, + Bool isStore, + Int hWordTy_szB, + Addr curr_IP, + VexGuestLayout* layout ) +{ + IRType tyAddr = Ity_INVALID; + XArray* frameBlocks = NULL; + + tl_assert(isIRAtom(addr)); + tl_assert(hWordTy_szB == 4 || hWordTy_szB == 8); + + tyAddr = typeOfIRExpr( bbOut->tyenv, addr ); + tl_assert(tyAddr == Ity_I32 || tyAddr == Ity_I64); + +#if defined(VGA_x86) + { UChar* p = (UChar*)curr_IP; + // pop %ebp; RET + if (p[0] == 0xc3 && p[-1] == 0x5d) return; + // pop %ebp; RET $imm16 + if (p[0] == 0xc2 && p[-1] == 0x5d) return; + // PUSH %EBP; mov %esp,%ebp + if (p[0] == 0x55 && p[1] == 0x89 && p[2] == 0xe5) return; + } +#endif + + /* First off, find or create the StackBlocks for this instruction. */ + frameBlocks = get_StackBlocks_for_IP( curr_IP ); + tl_assert(frameBlocks); + //if (VG_(sizeXA)( frameBlocks ) == 0) + // frameBlocks = NULL; + + /* Generate a call to "helperc__mem_access", passing: + addr current_SP current_FP szB curr_IP frameBlocks + */ + { IRTemp t_SP = gen_Get_SP( sge, bbOut, layout, hWordTy_szB ); + IRTemp t_FP = gen_Get_FP( sge, bbOut, layout, hWordTy_szB ); + IRExpr** args + = mkIRExprVec_6( addr, + IRExpr_RdTmp(t_SP), + IRExpr_RdTmp(t_FP), + mkIRExpr_HWord( isStore ? (-szB) : szB ), + mkIRExpr_HWord( curr_IP ), + mkIRExpr_HWord( (HWord)frameBlocks ) ); + IRDirty* di + = unsafeIRDirty_0_N( 3/*regparms*/, + "helperc__mem_access", + VG_(fnptr_to_fnentry)( &helperc__mem_access ), + args ); + + addStmtToIRSB( bbOut, IRStmt_Dirty(di) ); + } +} + + +/* --- Instrumentation main (4 fns) --- */ + +struct _SGEnv * sg_instrument_init ( IRTemp (*newIRTemp_cb)(IRType,void*), + void* newIRTemp_opaque ) +{ + struct _SGEnv * env = sg_malloc("di.sg_main.sii.1", + sizeof(struct _SGEnv)); + tl_assert(env); + env->curr_IP = 0; + env->curr_IP_known = False; + env->firstRef = True; + env->newIRTemp_cb = newIRTemp_cb; + env->newIRTemp_opaque = newIRTemp_opaque; + return env; +} + +void sg_instrument_fini ( struct _SGEnv * env ) +{ + sg_free(env); +} + +/* Add instrumentation for 'st' to 'sbOut', and possibly modify 'env' + as required. This must be called before 'st' itself is added to + 'sbOut'. */ +void sg_instrument_IRStmt ( /*MOD*/struct _SGEnv * env, + /*MOD*/IRSB* sbOut, + IRStmt* st, + VexGuestLayout* layout, + IRType gWordTy, IRType hWordTy ) +{ + if (!sg_clo_enable_sg_checks) + return; + + tl_assert(st); + tl_assert(isFlatIRStmt(st)); + switch (st->tag) { + case Ist_NoOp: + case Ist_AbiHint: + case Ist_Put: + case Ist_PutI: + case Ist_MBE: + /* None of these can contain any memory references. */ + break; + + case Ist_Exit: + tl_assert(st->Ist.Exit.jk != Ijk_Call); + /* else we must deal with a conditional call */ + break; + + case Ist_IMark: + env->curr_IP_known = True; + env->curr_IP = (Addr)st->Ist.IMark.addr; + env->firstRef = True; + break; + + case Ist_Store: + tl_assert(env->curr_IP_known); + if (env->firstRef) { + instrument_mem_access( + env, sbOut, + st->Ist.Store.addr, + sizeofIRType(typeOfIRExpr(sbOut->tyenv, st->Ist.Store.data)), + True/*isStore*/, + sizeofIRType(hWordTy), + env->curr_IP, layout + ); + env->firstRef = False; + } + break; + + case Ist_WrTmp: { + IRExpr* data = st->Ist.WrTmp.data; + if (data->tag == Iex_Load) { + tl_assert(env->curr_IP_known); + if (env->firstRef) { + instrument_mem_access( + env, sbOut, + data->Iex.Load.addr, + sizeofIRType(data->Iex.Load.ty), + False/*!isStore*/, + sizeofIRType(hWordTy), + env->curr_IP, layout + ); + env->firstRef = False; + } + } + break; + } + + case Ist_Dirty: { + Int dataSize; + IRDirty* d = st->Ist.Dirty.details; + if (d->mFx != Ifx_None) { + /* This dirty helper accesses memory. Collect the + details. */ + tl_assert(env->curr_IP_known); + if (env->firstRef) { + tl_assert(d->mAddr != NULL); + tl_assert(d->mSize != 0); + dataSize = d->mSize; + if (d->mFx == Ifx_Read || d->mFx == Ifx_Modify) { + instrument_mem_access( + env, sbOut, d->mAddr, dataSize, False/*!isStore*/, + sizeofIRType(hWordTy), env->curr_IP, layout + ); + } + if (d->mFx == Ifx_Write || d->mFx == Ifx_Modify) { + instrument_mem_access( + env, sbOut, d->mAddr, dataSize, True/*isStore*/, + sizeofIRType(hWordTy), env->curr_IP, layout + ); + } + env->firstRef = False; + } + } else { + tl_assert(d->mAddr == NULL); + tl_assert(d->mSize == 0); + } + break; + } + + case Ist_CAS: { + /* We treat it as a read and a write of the location. I + think that is the same behaviour as it was before IRCAS + was introduced, since prior to that point, the Vex front + ends would translate a lock-prefixed instruction into a + (normal) read followed by a (normal) write. */ + if (env->firstRef) { + Int dataSize; + IRCAS* cas = st->Ist.CAS.details; + tl_assert(cas->addr != NULL); + tl_assert(cas->dataLo != NULL); + dataSize = sizeofIRType(typeOfIRExpr(sbOut->tyenv, cas->dataLo)); + if (cas->dataHi != NULL) + dataSize *= 2; /* since it's a doubleword-CAS */ + instrument_mem_access( + env, sbOut, cas->addr, dataSize, False/*!isStore*/, + sizeofIRType(hWordTy), env->curr_IP, layout + ); + instrument_mem_access( + env, sbOut, cas->addr, dataSize, True/*isStore*/, + sizeofIRType(hWordTy), env->curr_IP, layout + ); + env->firstRef = False; + } + break; + } + + default: + tl_assert(0); + + } /* switch (st->tag) */ +} + + +/* Add instrumentation for the final jump of an IRSB 'sbOut', and + possibly modify 'env' as required. This must be the last + instrumentation statement in the block. */ +void sg_instrument_final_jump ( /*MOD*/struct _SGEnv * env, + /*MOD*/IRSB* sbOut, + IRExpr* next, + IRJumpKind jumpkind, + VexGuestLayout* layout, + IRType gWordTy, IRType hWordTy ) +{ + if (!sg_clo_enable_sg_checks) + return; + + if (jumpkind == Ijk_Call) { + // Assumes x86 or amd64 + IRTemp sp_post_call_insn, fp_post_call_insn; + XArray* frameBlocks; + IRExpr** args; + IRDirty* di; + sp_post_call_insn + = gen_Get_SP( env, sbOut, layout, sizeofIRType(hWordTy) ); + fp_post_call_insn + = gen_Get_FP( env, sbOut, layout, sizeofIRType(hWordTy) ); + tl_assert(env->curr_IP_known); + frameBlocks = get_StackBlocks_for_IP( env->curr_IP ); + tl_assert(frameBlocks); + if (VG_(sizeXA)(frameBlocks) == 0) + frameBlocks = NULL; + args + = mkIRExprVec_5( + IRExpr_RdTmp(sp_post_call_insn), + IRExpr_RdTmp(fp_post_call_insn), + /* assume the call doesn't change FP */ + next, + mkIRExpr_HWord( (HWord)frameBlocks ), + mkIRExpr_HWord( sizeofIRType(gWordTy) ) + ); + di = unsafeIRDirty_0_N( + 3/*regparms*/, + "helperc__new_frame", + VG_(fnptr_to_fnentry)( &helperc__new_frame ), + args ); + addStmtToIRSB( sbOut, IRStmt_Dirty(di) ); + } +} + + +////////////////////////////////////////////////////////////// +// // +// end Instrumentation // +// // +////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////////////// +// // +// misc // +// // +////////////////////////////////////////////////////////////// + +/* Make a new empty stack frame that is suitable for being the + outermost frame in a stack. It has a creation_sp of effectively + infinity, so it can never be removed. */ +static StackFrame* new_root_StackFrame ( void ) +{ + StackFrame* sframe = sg_malloc("di.sg_main.nrS.1", sizeof(StackFrame)); + VG_(memset)( sframe, 0, sizeof(*sframe) ); + sframe->creation_sp = ~0UL; + + /* This sets up .htab, .htab_size and .htab_used */ + initialise_II_hash_table( sframe ); + + /* ->depth, ->outer, ->inner are 0, NULL, NULL */ + + return sframe; +} + +/* Primary routine for setting up the shadow stack for a new thread. + Note that this is used to create not only child thread stacks, but + the root thread's stack too. We create a new stack with + .creation_sp set to infinity, so that the outermost frame can never + be removed (by shadowStack_unwind). The core calls this function + as soon as a thread is created. We cannot yet get its SP value, + since that may not yet be set. */ +static void shadowStack_thread_create ( ThreadId parent, ThreadId child ) +{ + tl_assert(is_sane_TId(child)); + if (parent == VG_INVALID_THREADID) { + /* creating the main thread's stack */ + } else { + tl_assert(is_sane_TId(parent)); + tl_assert(parent != child); + tl_assert(shadowStacks[parent] != NULL); + tl_assert(siTrees[parent] != NULL); + } + + /* Create the child's stack. Bear in mind we may be re-using + it. */ + if (shadowStacks[child] == NULL) { + /* First use of this stack. Just allocate an initial frame. */ + tl_assert(siTrees[child] == NULL); + } else { + StackFrame *frame, *frame2; + /* re-using a stack. */ + /* get rid of the interval tree */ + tl_assert(siTrees[child] != NULL); + delete_StackTree( siTrees[child] ); + siTrees[child] = NULL; + /* Throw away all existing frames. */ + frame = shadowStacks[child]; + while (frame->outer) + frame = frame->outer; + tl_assert(frame->depth == 0); + while (frame) { + frame2 = frame->inner; + if (frame2) tl_assert(1 + frame->depth == frame2->depth); + sg_free(frame); + frame = frame2; + } + shadowStacks[child] = NULL; + } + + tl_assert(shadowStacks[child] == NULL); + tl_assert(siTrees[child] == NULL); + + /* Set up the initial stack frame. */ + shadowStacks[child] = new_root_StackFrame(); + + /* and set up the child's stack block interval tree. */ + siTrees[child] = new_StackTree(); +} + +/* Once a thread is ready to go, the core calls here. We take the + opportunity to push a second frame on its stack, with the + presumably valid SP value that is going to be used for the thread's + startup. Hence we should always wind up with a valid outermost + frame for the thread. */ +static void shadowStack_set_initial_SP ( ThreadId tid ) +{ + StackFrame* sf; + tl_assert(is_sane_TId(tid)); + sf = shadowStacks[tid]; + tl_assert(sf != NULL); + tl_assert(sf->outer == NULL); + tl_assert(sf->inner == NULL); + tl_assert(sf->creation_sp == ~0UL); + shadowStack_new_frame( tid, 0, VG_(get_SP)(tid), + 0, VG_(get_IP)(tid), NULL ); +} + + +////////////////////////////////////////////////////////////// +// // +// main-ish // +// // +////////////////////////////////////////////////////////////// + +/* CALLED indirectly FROM GENERATED CODE. Calls here are created by + sp-change analysis, as requested in pc_pre_clo_int(). */ +void sg_die_mem_stack ( Addr old_SP, SizeT len ) { + ThreadId tid = VG_(get_running_tid)(); + shadowStack_unwind( tid, old_SP+len ); +} + +void sg_pre_clo_init ( void ) { + ourGlobals_init(); + init_StackBlocks_set(); + init_GlobalBlock_set(); +} + +void sg_post_clo_init ( void ) { +} + +void sg_pre_thread_ll_create ( ThreadId parent, ThreadId child ) { + shadowStack_thread_create(parent, child); +} + +void sg_pre_thread_first_insn ( ThreadId tid ) { + shadowStack_set_initial_SP(tid); +} + +void sg_fini(Int exitcode) +{ + if (VG_(clo_stats)) { + VG_(message)(Vg_DebugMsg, + " sg_: %'llu total accesses, of which:\n", stats__total_accesses); + VG_(message)(Vg_DebugMsg, + " sg_: stack0: %'12llu classify\n", + stats__classify_Stack0); + VG_(message)(Vg_DebugMsg, + " sg_: stackN: %'12llu classify\n", + stats__classify_StackN); + VG_(message)(Vg_DebugMsg, + " sg_: global: %'12llu classify\n", + stats__classify_Global); + VG_(message)(Vg_DebugMsg, + " sg_: unknown: %'12llu classify\n", + stats__classify_Unknown); + VG_(message)(Vg_DebugMsg, + " sg_: %'llu Invars preened, of which %'llu changed\n", + stats__Invars_preened, stats__Invars_changed); + VG_(message)(Vg_DebugMsg, + " sg_: t_i_b_MT: %'12llu\n", stats__t_i_b_empty); + VG_(message)(Vg_DebugMsg, + " sg_: qcache: %'llu searches, %'llu probes, %'llu misses\n", + stats__qcache_queries, stats__qcache_probes, stats__qcache_misses); + VG_(message)(Vg_DebugMsg, + " sg_: htab-fast: %'llu hits\n", + stats__htab_fast); + VG_(message)(Vg_DebugMsg, + " sg_: htab-slow: %'llu searches, %'llu probes, %'llu resizes\n", + stats__htab_searches, stats__htab_probes, stats__htab_resizes); + } +} + + +/*--------------------------------------------------------------------*/ +/*--- end sg_main.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.h new file mode 100644 index 000000000..31d2fb69d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/sg_main.h @@ -0,0 +1,78 @@ + +/*--------------------------------------------------------------------*/ +/*--- Ptrcheck: a pointer-use checker. ---*/ +/*--- Exports for stack and global access checking. ---*/ +/*--- sg_main.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Ptrcheck, a Valgrind tool for checking pointer + use in programs. + + Copyright (C) 2008-2010 OpenWorks Ltd + info@open-works.co.uk + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __SG_MAIN_H + +#define __SG_MAIN_H + +void sg_pre_clo_init ( void ); +void sg_post_clo_init ( void ); +void sg_fini(Int exitcode); + +void sg_die_mem_stack ( Addr old_SP, SizeT len ); +void sg_pre_thread_ll_create ( ThreadId parent, ThreadId child ); +void sg_pre_thread_first_insn ( ThreadId tid ); + +void sg_new_mem_mmap( Addr a, SizeT len, + Bool rr, Bool ww, Bool xx, ULong di_handle ); +void sg_new_mem_startup( Addr a, SizeT len, + Bool rr, Bool ww, Bool xx, ULong di_handle ); +void sg_die_mem_munmap ( Addr a, SizeT len ); + +/* These really ought to be moved elsewhere, so that we don't have to + include this file in h_main.c. See comments in sg_main.c and + h_main.c for what this is about. */ + +struct _SGEnv; /* abstract export */ + +struct _SGEnv* sg_instrument_init ( IRTemp (*newIRTemp_cb)(IRType,void*), + void* newIRTemp_opaque ); + +void sg_instrument_fini ( struct _SGEnv * env ); + +void sg_instrument_IRStmt ( /*MOD*/struct _SGEnv * env, + /*MOD*/IRSB* sbOut, + IRStmt* st, + VexGuestLayout* layout, + IRType gWordTy, IRType hWordTy ); + +void sg_instrument_final_jump ( /*MOD*/struct _SGEnv * env, + /*MOD*/IRSB* sbOut, + IRExpr* next, + IRJumpKind jumpkind, + VexGuestLayout* layout, + IRType gWordTy, IRType hWordTy ); +#endif + +/*--------------------------------------------------------------------*/ +/*--- end sg_main.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.am new file mode 100644 index 000000000..fc74c9147 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.am @@ -0,0 +1,87 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr filter_add filter_suppgen + +EXTRA_DIST = \ + is_arch_supported \ + bad_percentify.vgtest bad_percentify.c \ + bad_percentify.stdout.exp bad_percentify.stderr.exp-glibc28-amd64 \ + globalerr.vgtest globalerr.stdout.exp \ + globalerr.stderr.exp-glibc28-amd64 \ + hackedbz2.vgtest hackedbz2.stdout.exp \ + hackedbz2.stderr.exp-glibc28-amd64 \ + hsg.vgtest hsg.stdout.exp hsg.stderr.exp \ + preen_invars.vgtest preen_invars.stdout.exp \ + preen_invars.stderr.exp-glibc28-amd64 \ + stackerr.vgtest stackerr.stdout.exp \ + stackerr.stderr.exp-glibc28-amd64 stackerr.stderr.exp-glibc27-x86 + +check_PROGRAMS = \ + bad_percentify \ + globalerr hackedbz2 \ + hsg \ + preen_invars preen_invars_so.so \ + stackerr + +# DDD: not sure if these ones should work on Darwin or not... if not, should +# be moved into x86-linux/. +#if ! VGCONF_OS_IS_DARWIN +# check_PROGRAMS += \ +# ccc +#endif + + +AM_CFLAGS += $(AM_FLAG_M3264_PRI) +AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) + +# To make it a bit more realistic, build hackedbz2.c with at +# least some optimisation. +hackedbz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline + +# C ones +#pth_create_LDADD = -lpthread + +# C++ ones +#ccc_SOURCES = ccc.cpp + +# Build shared object for preen_invars +preen_invars_DEPENDENCIES = preen_invars_so.so +if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5 + preen_invars_LDADD = -ldl + preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) +else +if VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5 + preen_invars_LDADD = -ldl + preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) -Wl,-G -Wl,-bnogc +else +if VGCONF_OS_IS_DARWIN + preen_invars_LDADD = -ldl + preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) +else + preen_invars_LDADD = -ldl + preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) \ + -Wl,-rpath,$(top_builddir)/memcheck/tests +endif +endif +endif + +preen_invars_so_so_SOURCES = preen_invars_so.c # For automake-1.7. +preen_invars_so_so_CFLAGS = $(AM_CFLAGS) -fpic +if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5 + preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared +else +if VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5 + preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ + -Wl,-G -Wl,-bnogc +else +if VGCONF_OS_IS_DARWIN + preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -dynamic \ + -dynamiclib -all_load +else + preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ + -Wl,-soname -Wl,preen_invars_so.so +endif +endif +endif + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.in new file mode 100644 index 000000000..cf0771854 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/Makefile.in @@ -0,0 +1,850 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am +check_PROGRAMS = bad_percentify$(EXEEXT) globalerr$(EXEEXT) \ + hackedbz2$(EXEEXT) hsg$(EXEEXT) preen_invars$(EXEEXT) \ + preen_invars_so.so$(EXEEXT) stackerr$(EXEEXT) +subdir = exp-sgcheck/tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +bad_percentify_SOURCES = bad_percentify.c +bad_percentify_OBJECTS = bad_percentify.$(OBJEXT) +bad_percentify_LDADD = $(LDADD) +globalerr_SOURCES = globalerr.c +globalerr_OBJECTS = globalerr.$(OBJEXT) +globalerr_LDADD = $(LDADD) +hackedbz2_SOURCES = hackedbz2.c +hackedbz2_OBJECTS = hackedbz2-hackedbz2.$(OBJEXT) +hackedbz2_LDADD = $(LDADD) +hackedbz2_LINK = $(CCLD) $(hackedbz2_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +hsg_SOURCES = hsg.c +hsg_OBJECTS = hsg.$(OBJEXT) +hsg_LDADD = $(LDADD) +preen_invars_SOURCES = preen_invars.c +preen_invars_OBJECTS = preen_invars.$(OBJEXT) +preen_invars_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(preen_invars_LDFLAGS) $(LDFLAGS) -o $@ +am_preen_invars_so_so_OBJECTS = \ + preen_invars_so_so-preen_invars_so.$(OBJEXT) +preen_invars_so_so_OBJECTS = $(am_preen_invars_so_so_OBJECTS) +preen_invars_so_so_LDADD = $(LDADD) +preen_invars_so_so_LINK = $(CCLD) $(preen_invars_so_so_CFLAGS) \ + $(CFLAGS) $(preen_invars_so_so_LDFLAGS) $(LDFLAGS) -o $@ +stackerr_SOURCES = stackerr.c +stackerr_OBJECTS = stackerr.$(OBJEXT) +stackerr_LDADD = $(LDADD) +SCRIPTS = $(dist_noinst_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = bad_percentify.c globalerr.c hackedbz2.c hsg.c \ + preen_invars.c $(preen_invars_so_so_SOURCES) stackerr.c +DIST_SOURCES = bad_percentify.c globalerr.c hackedbz2.c hsg.c \ + preen_invars.c $(preen_invars_so_so_SOURCES) stackerr.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub \ + -DVGA_$(VGCONF_ARCH_PRI)=1 \ + -DVGO_$(VGCONF_OS)=1 \ + -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1 + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). + +# DDD: not sure if these ones should work on Darwin or not... if not, should +# be moved into x86-linux/. +#if ! VGCONF_OS_IS_DARWIN +# check_PROGRAMS += \ +# ccc +#endif +AM_CFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) +AM_CXXFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = filter_stderr filter_add filter_suppgen +EXTRA_DIST = \ + is_arch_supported \ + bad_percentify.vgtest bad_percentify.c \ + bad_percentify.stdout.exp bad_percentify.stderr.exp-glibc28-amd64 \ + globalerr.vgtest globalerr.stdout.exp \ + globalerr.stderr.exp-glibc28-amd64 \ + hackedbz2.vgtest hackedbz2.stdout.exp \ + hackedbz2.stderr.exp-glibc28-amd64 \ + hsg.vgtest hsg.stdout.exp hsg.stderr.exp \ + preen_invars.vgtest preen_invars.stdout.exp \ + preen_invars.stderr.exp-glibc28-amd64 \ + stackerr.vgtest stackerr.stdout.exp \ + stackerr.stderr.exp-glibc28-amd64 stackerr.stderr.exp-glibc27-x86 + + +# To make it a bit more realistic, build hackedbz2.c with at +# least some optimisation. +hackedbz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline + +# C ones +#pth_create_LDADD = -lpthread + +# C++ ones +#ccc_SOURCES = ccc.cpp + +# Build shared object for preen_invars +preen_invars_DEPENDENCIES = preen_invars_so.so +@VGCONF_OS_IS_DARWIN_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDADD = -ldl +@VGCONF_OS_IS_DARWIN_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDADD = -ldl +@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDADD = -ldl +@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE@preen_invars_LDADD = -ldl +@VGCONF_OS_IS_DARWIN_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) \ +@VGCONF_OS_IS_DARWIN_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@ -Wl,-rpath,$(top_builddir)/memcheck/tests + +@VGCONF_OS_IS_DARWIN_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) +@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) -Wl,-G -Wl,-bnogc +@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE@preen_invars_LDFLAGS = $(AM_FLAG_M3264_PRI) +preen_invars_so_so_SOURCES = preen_invars_so.c # For automake-1.7. +preen_invars_so_so_CFLAGS = $(AM_CFLAGS) -fpic +@VGCONF_OS_IS_DARWIN_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ +@VGCONF_OS_IS_DARWIN_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@ -Wl,-soname -Wl,preen_invars_so.so + +@VGCONF_OS_IS_DARWIN_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -dynamic \ +@VGCONF_OS_IS_DARWIN_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@ -dynamiclib -all_load + +@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ +@VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE@@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALSE@ -Wl,-G -Wl,-bnogc + +@VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE@preen_invars_so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-sgcheck/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign exp-sgcheck/tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +bad_percentify$(EXEEXT): $(bad_percentify_OBJECTS) $(bad_percentify_DEPENDENCIES) + @rm -f bad_percentify$(EXEEXT) + $(LINK) $(bad_percentify_OBJECTS) $(bad_percentify_LDADD) $(LIBS) +globalerr$(EXEEXT): $(globalerr_OBJECTS) $(globalerr_DEPENDENCIES) + @rm -f globalerr$(EXEEXT) + $(LINK) $(globalerr_OBJECTS) $(globalerr_LDADD) $(LIBS) +hackedbz2$(EXEEXT): $(hackedbz2_OBJECTS) $(hackedbz2_DEPENDENCIES) + @rm -f hackedbz2$(EXEEXT) + $(hackedbz2_LINK) $(hackedbz2_OBJECTS) $(hackedbz2_LDADD) $(LIBS) +hsg$(EXEEXT): $(hsg_OBJECTS) $(hsg_DEPENDENCIES) + @rm -f hsg$(EXEEXT) + $(LINK) $(hsg_OBJECTS) $(hsg_LDADD) $(LIBS) +preen_invars$(EXEEXT): $(preen_invars_OBJECTS) $(preen_invars_DEPENDENCIES) + @rm -f preen_invars$(EXEEXT) + $(preen_invars_LINK) $(preen_invars_OBJECTS) $(preen_invars_LDADD) $(LIBS) +preen_invars_so.so$(EXEEXT): $(preen_invars_so_so_OBJECTS) $(preen_invars_so_so_DEPENDENCIES) + @rm -f preen_invars_so.so$(EXEEXT) + $(preen_invars_so_so_LINK) $(preen_invars_so_so_OBJECTS) $(preen_invars_so_so_LDADD) $(LIBS) +stackerr$(EXEEXT): $(stackerr_OBJECTS) $(stackerr_DEPENDENCIES) + @rm -f stackerr$(EXEEXT) + $(LINK) $(stackerr_OBJECTS) $(stackerr_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bad_percentify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globalerr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hackedbz2-hackedbz2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hsg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preen_invars.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preen_invars_so_so-preen_invars_so.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stackerr.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +hackedbz2-hackedbz2.o: hackedbz2.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hackedbz2_CFLAGS) $(CFLAGS) -MT hackedbz2-hackedbz2.o -MD -MP -MF $(DEPDIR)/hackedbz2-hackedbz2.Tpo -c -o hackedbz2-hackedbz2.o `test -f 'hackedbz2.c' || echo '$(srcdir)/'`hackedbz2.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hackedbz2-hackedbz2.Tpo $(DEPDIR)/hackedbz2-hackedbz2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hackedbz2.c' object='hackedbz2-hackedbz2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hackedbz2_CFLAGS) $(CFLAGS) -c -o hackedbz2-hackedbz2.o `test -f 'hackedbz2.c' || echo '$(srcdir)/'`hackedbz2.c + +hackedbz2-hackedbz2.obj: hackedbz2.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hackedbz2_CFLAGS) $(CFLAGS) -MT hackedbz2-hackedbz2.obj -MD -MP -MF $(DEPDIR)/hackedbz2-hackedbz2.Tpo -c -o hackedbz2-hackedbz2.obj `if test -f 'hackedbz2.c'; then $(CYGPATH_W) 'hackedbz2.c'; else $(CYGPATH_W) '$(srcdir)/hackedbz2.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hackedbz2-hackedbz2.Tpo $(DEPDIR)/hackedbz2-hackedbz2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hackedbz2.c' object='hackedbz2-hackedbz2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hackedbz2_CFLAGS) $(CFLAGS) -c -o hackedbz2-hackedbz2.obj `if test -f 'hackedbz2.c'; then $(CYGPATH_W) 'hackedbz2.c'; else $(CYGPATH_W) '$(srcdir)/hackedbz2.c'; fi` + +preen_invars_so_so-preen_invars_so.o: preen_invars_so.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(preen_invars_so_so_CFLAGS) $(CFLAGS) -MT preen_invars_so_so-preen_invars_so.o -MD -MP -MF $(DEPDIR)/preen_invars_so_so-preen_invars_so.Tpo -c -o preen_invars_so_so-preen_invars_so.o `test -f 'preen_invars_so.c' || echo '$(srcdir)/'`preen_invars_so.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/preen_invars_so_so-preen_invars_so.Tpo $(DEPDIR)/preen_invars_so_so-preen_invars_so.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='preen_invars_so.c' object='preen_invars_so_so-preen_invars_so.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(preen_invars_so_so_CFLAGS) $(CFLAGS) -c -o preen_invars_so_so-preen_invars_so.o `test -f 'preen_invars_so.c' || echo '$(srcdir)/'`preen_invars_so.c + +preen_invars_so_so-preen_invars_so.obj: preen_invars_so.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(preen_invars_so_so_CFLAGS) $(CFLAGS) -MT preen_invars_so_so-preen_invars_so.obj -MD -MP -MF $(DEPDIR)/preen_invars_so_so-preen_invars_so.Tpo -c -o preen_invars_so_so-preen_invars_so.obj `if test -f 'preen_invars_so.c'; then $(CYGPATH_W) 'preen_invars_so.c'; else $(CYGPATH_W) '$(srcdir)/preen_invars_so.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/preen_invars_so_so-preen_invars_so.Tpo $(DEPDIR)/preen_invars_so_so-preen_invars_so.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='preen_invars_so.c' object='preen_invars_so_so-preen_invars_so.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(preen_invars_so_so_CFLAGS) $(CFLAGS) -c -o preen_invars_so_so-preen_invars_so.obj `if test -f 'preen_invars_so.c'; then $(CYGPATH_W) 'preen_invars_so.c'; else $(CYGPATH_W) '$(srcdir)/preen_invars_so.c'; fi` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-local ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.c new file mode 100644 index 000000000..94f5559e1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.c @@ -0,0 +1,643 @@ + +/* This demonstrates a stack overrun bug that exp-ptrcheck found while + running Valgrind itself (self hosting). As at 12 Sept 08 this bug + is still in Valgrind. */ + +#include +#include +#include + +typedef unsigned long long int ULong; +typedef signed long long int Long; +typedef unsigned int UInt; +typedef signed int Int; +typedef signed char Char; +typedef char HChar; +typedef unsigned long UWord; +typedef signed long Word; + + + +typedef unsigned char Bool; +#define True ((Bool)1) +#define False ((Bool)0) + +#define VG_(_str) VG_##_str + + +/* --------------------------------------------------------------------- + vg_sprintf, copied from m_libcprint.c + ------------------------------------------------------------------ */ +UInt +VG_(debugLog_vprintf) ( + void(*send)(HChar,void*), + void* send_arg2, + const HChar* format, + va_list vargs + ); + +/* --------------------------------------------------------------------- + printf() and friends + ------------------------------------------------------------------ */ +typedef + struct { Int fd; Bool is_socket; } + OutputSink; + + +OutputSink VG_(log_output_sink) = { 2, False }; /* 2 = stderr */ + +/* Do the low-level send of a message to the logging sink. */ +static +void send_bytes_to_logging_sink ( OutputSink* sink, HChar* msg, Int nbytes ) +{ + fwrite(msg, 1, nbytes, stdout); + fflush(stdout); +} + + +/* --------- printf --------- */ + +typedef + struct { + HChar buf[512]; + Int buf_used; + OutputSink* sink; + } + printf_buf_t; + +// Adds a single char to the buffer. When the buffer gets sufficiently +// full, we write its contents to the logging sink. +static void add_to__printf_buf ( HChar c, void *p ) +{ + printf_buf_t *b = (printf_buf_t *)p; + + if (b->buf_used > sizeof(b->buf) - 2 ) { + send_bytes_to_logging_sink( b->sink, b->buf, b->buf_used ); + b->buf_used = 0; + } + b->buf[b->buf_used++] = c; + b->buf[b->buf_used] = 0; + assert(b->buf_used < sizeof(b->buf)); +} + +__attribute__((noinline)) +static UInt vprintf_to_buf ( printf_buf_t* b, + const HChar *format, va_list vargs ) +{ + UInt ret = 0; + if (b->sink->fd >= 0 || b->sink->fd == -2) { + ret = VG_(debugLog_vprintf) + ( add_to__printf_buf, b, format, vargs ); + } + return ret; +} + +__attribute__((noinline)) +static UInt vprintf_WRK ( OutputSink* sink, + const HChar *format, va_list vargs ) +{ + printf_buf_t myprintf_buf + = { "", 0, sink }; + UInt ret + = vprintf_to_buf(&myprintf_buf, format, vargs); + // Write out any chars left in the buffer. + if (myprintf_buf.buf_used > 0) { + send_bytes_to_logging_sink( myprintf_buf.sink, + myprintf_buf.buf, + myprintf_buf.buf_used ); + } + return ret; +} + +__attribute__((noinline)) +UInt VG_(vprintf) ( const HChar *format, va_list vargs ) +{ + return vprintf_WRK( &VG_(log_output_sink), format, vargs ); +} + +__attribute__((noinline)) +UInt VG_(printf) ( const HChar *format, ... ) +{ + UInt ret; + va_list vargs; + va_start(vargs, format); + ret = VG_(vprintf)(format, vargs); + va_end(vargs); + return ret; +} + +static Bool toBool ( Int x ) { + Int r = (x == 0) ? False : True; + return (Bool)r; +} + +__attribute__((noinline)) +static Int local_strlen ( const HChar* str ) +{ + Int i = 0; + while (str[i] != 0) i++; + return i; +} + +__attribute__((noinline)) +static HChar local_toupper ( HChar c ) +{ + if (c >= 'a' && c <= 'z') + return c + ('A' - 'a'); + else + return c; +} + + +/*------------------------------------------------------------*/ +/*--- A simple, generic, vprintf implementation. ---*/ +/*------------------------------------------------------------*/ + +/* ----------------------------------------------- + Distantly derived from: + + vprintf replacement for Checker. + Copyright 1993, 1994, 1995 Tristan Gingold + Written September 1993 Tristan Gingold + Tristan Gingold, 8 rue Parmentier, F-91120 PALAISEAU, FRANCE + + (Checker itself was GPL'd.) + ----------------------------------------------- */ + +/* Some flags. */ +#define VG_MSG_SIGNED 1 /* The value is signed. */ +#define VG_MSG_ZJUSTIFY 2 /* Must justify with '0'. */ +#define VG_MSG_LJUSTIFY 4 /* Must justify on the left. */ +#define VG_MSG_PAREN 8 /* Parenthesize if present (for %y) */ +#define VG_MSG_COMMA 16 /* Add commas to numbers (for %d, %u) */ +#define VG_MSG_ALTFORMAT 32 /* Convert the value to alternate format */ + +/* Copy a string into the buffer. */ +static __attribute__((noinline)) +UInt myvprintf_str ( void(*send)(HChar,void*), + void* send_arg2, + Int flags, + Int width, + HChar* str, + Bool capitalise ) +{ +# define MAYBE_TOUPPER(ch) (capitalise ? local_toupper(ch) : (ch)) + UInt ret = 0; + Int i, extra; + Int len = local_strlen(str); + + if (width == 0) { + ret += len; + for (i = 0; i < len; i++) + send(MAYBE_TOUPPER(str[i]), send_arg2); + return ret; + } + + if (len > width) { + ret += width; + for (i = 0; i < width; i++) + send(MAYBE_TOUPPER(str[i]), send_arg2); + return ret; + } + + extra = width - len; + if (flags & VG_MSG_LJUSTIFY) { + ret += extra; + for (i = 0; i < extra; i++) + send(' ', send_arg2); + } + ret += len; + for (i = 0; i < len; i++) + send(MAYBE_TOUPPER(str[i]), send_arg2); + if (!(flags & VG_MSG_LJUSTIFY)) { + ret += extra; + for (i = 0; i < extra; i++) + send(' ', send_arg2); + } + +# undef MAYBE_TOUPPER + return ret; +} + + +/* Copy a string into the buffer, escaping bad XML chars. */ +static +UInt myvprintf_str_XML_simplistic ( void(*send)(HChar,void*), + void* send_arg2, + HChar* str ) +{ + UInt ret = 0; + Int i; + Int len = local_strlen(str); + HChar* alt; + + for (i = 0; i < len; i++) { + switch (str[i]) { + case '&': alt = "&"; break; + case '<': alt = "<"; break; + case '>': alt = ">"; break; + default: alt = NULL; + } + + if (alt) { + while (*alt) { + send(*alt, send_arg2); + ret++; + alt++; + } + } else { + send(str[i], send_arg2); + ret++; + } + } + + return ret; +} + + +/* Write P into the buffer according to these args: + * If SIGN is true, p is a signed. + * BASE is the base. + * If WITH_ZERO is true, '0' must be added. + * WIDTH is the width of the field. + */ +static +UInt myvprintf_int64 ( void(*send)(HChar,void*), + void* send_arg2, + Int flags, + Int base, + Int width, + Bool capitalised, + ULong p ) +{ + HChar buf[40]; + Int ind = 0; + Int i, nc = 0; + Bool neg = False; + HChar* digits = capitalised ? "0123456789ABCDEF" : "0123456789abcdef"; + UInt ret = 0; + + if (base < 2 || base > 16) + return ret; + + if ((flags & VG_MSG_SIGNED) && (Long)p < 0) { + p = - (Long)p; + neg = True; + } + + if (p == 0) + buf[ind++] = '0'; + else { + while (p > 0) { + if (flags & VG_MSG_COMMA && 10 == base && + 0 == (ind-nc) % 3 && 0 != ind) + { + buf[ind++] = ','; + nc++; + } + buf[ind++] = digits[p % base]; + p /= base; + } + } + + if (neg) + buf[ind++] = '-'; + + if (width > 0 && !(flags & VG_MSG_LJUSTIFY)) { + for(; ind < width; ind++) { + /* assert(ind < 39); */ + if (ind > 39) { + buf[39] = 0; + break; + } + buf[ind] = (flags & VG_MSG_ZJUSTIFY) ? '0': ' '; + } + } + + /* Reverse copy to buffer. */ + ret += ind; + for (i = ind -1; i >= 0; i--) { + send(buf[i], send_arg2); + } + if (width > 0 && (flags & VG_MSG_LJUSTIFY)) { + for(; ind < width; ind++) { + ret++; + /* Never pad with zeroes on RHS -- changes the value! */ + send(' ', send_arg2); + } + } + return ret; +} + + +/* A simple vprintf(). */ +/* EXPORTED */ +__attribute__((noinline)) +UInt +VG_(debugLog_vprintf) ( + void(*send)(HChar,void*), + void* send_arg2, + const HChar* format, + va_list vargs +) +{ + UInt ret = 0; + Int i; + Int flags; + Int width; + Int n_ls = 0; + Bool is_long, caps; + + /* We assume that vargs has already been initialised by the + caller, using va_start, and that the caller will similarly + clean up with va_end. + */ + + for (i = 0; format[i] != 0; i++) { + if (format[i] != '%') { + send(format[i], send_arg2); + ret++; + continue; + } + i++; + /* A '%' has been found. Ignore a trailing %. */ + if (format[i] == 0) + break; + if (format[i] == '%') { + /* '%%' is replaced by '%'. */ + send('%', send_arg2); + ret++; + continue; + } + flags = 0; + n_ls = 0; + width = 0; /* length of the field. */ + while (1) { + switch (format[i]) { + case '(': + flags |= VG_MSG_PAREN; + break; + case ',': + case '\'': + /* If ',' or '\'' follows '%', commas will be inserted. */ + flags |= VG_MSG_COMMA; + break; + case '-': + /* If '-' follows '%', justify on the left. */ + flags |= VG_MSG_LJUSTIFY; + break; + case '0': + /* If '0' follows '%', pads will be inserted. */ + flags |= VG_MSG_ZJUSTIFY; + break; + case '#': + /* If '#' follows '%', alternative format will be used. */ + flags |= VG_MSG_ALTFORMAT; + break; + default: + goto parse_fieldwidth; + } + i++; + } + parse_fieldwidth: + /* Compute the field length. */ + while (format[i] >= '0' && format[i] <= '9') { + width *= 10; + width += format[i++] - '0'; + } + while (format[i] == 'l') { + i++; + n_ls++; + } + + // %d means print a 32-bit integer. + // %ld means print a word-size integer. + // %lld means print a 64-bit integer. + if (0 == n_ls) { is_long = False; } + else if (1 == n_ls) { is_long = ( sizeof(void*) == sizeof(Long) ); } + else { is_long = True; } + + switch (format[i]) { + case 'o': /* %o */ + if (flags & VG_MSG_ALTFORMAT) { + ret += 2; + send('0',send_arg2); + } + if (is_long) + ret += myvprintf_int64(send, send_arg2, flags, 8, width, False, + (ULong)(va_arg (vargs, ULong))); + else + ret += myvprintf_int64(send, send_arg2, flags, 8, width, False, + (ULong)(va_arg (vargs, UInt))); + break; + case 'd': /* %d */ + flags |= VG_MSG_SIGNED; + if (is_long) + ret += myvprintf_int64(send, send_arg2, flags, 10, width, False, + (ULong)(va_arg (vargs, Long))); + else + ret += myvprintf_int64(send, send_arg2, flags, 10, width, False, + (ULong)(va_arg (vargs, Int))); + break; + case 'u': /* %u */ + if (is_long) + ret += myvprintf_int64(send, send_arg2, flags, 10, width, False, + (ULong)(va_arg (vargs, ULong))); + else + ret += myvprintf_int64(send, send_arg2, flags, 10, width, False, + (ULong)(va_arg (vargs, UInt))); + break; + case 'p': /* %p */ + ret += 2; + send('0',send_arg2); + send('x',send_arg2); + ret += myvprintf_int64(send, send_arg2, flags, 16, width, True, + (ULong)((UWord)va_arg (vargs, void *))); + break; + case 'x': /* %x */ + case 'X': /* %X */ + caps = toBool(format[i] == 'X'); + if (flags & VG_MSG_ALTFORMAT) { + ret += 2; + send('0',send_arg2); + send('x',send_arg2); + } + if (is_long) + ret += myvprintf_int64(send, send_arg2, flags, 16, width, caps, + (ULong)(va_arg (vargs, ULong))); + else + ret += myvprintf_int64(send, send_arg2, flags, 16, width, caps, + (ULong)(va_arg (vargs, UInt))); + break; + case 'c': /* %c */ + ret++; + send(va_arg (vargs, int), send_arg2); + break; + case 's': case 'S': { /* %s */ + char *str = va_arg (vargs, char *); + if (str == (char*) 0) str = "(null)"; + ret += myvprintf_str(send, send_arg2, + flags, width, str, format[i]=='S'); + break; + } + case 't': { /* %t, like %s but escaping chars for XML safety */ + /* Note: simplistic; ignores field width and flags */ + char *str = va_arg (vargs, char *); + if (str == (char*) 0) str = "(null)"; + ret += myvprintf_str_XML_simplistic(send, send_arg2, str); + break; + } + +// case 'y': { /* %y - print symbol */ +// Char buf[100]; +// Char *cp = buf; +// Addr a = va_arg(vargs, Addr); +// +// if (flags & VG_MSG_PAREN) +// *cp++ = '('; +// if (VG_(get_fnname_w_offset)(a, cp, sizeof(buf)-4)) { +// if (flags & VG_MSG_PAREN) { +// cp += local_strlen(cp); +// *cp++ = ')'; +// *cp = '\0'; +// } +// ret += myvprintf_str(send, send_arg2, flags, width, buf, 0); +// } +// break; +// } + default: + break; + } + } + return ret; +} + + +static void add_to__sprintf_buf ( HChar c, void *p ) +{ + HChar** b = p; + *(*b)++ = c; +} + +UInt VG_(vsprintf) ( HChar* buf, const HChar *format, va_list vargs ) +{ + Int ret; + HChar* sprintf_ptr = buf; + + ret = VG_(debugLog_vprintf) + ( add_to__sprintf_buf, &sprintf_ptr, format, vargs ); + add_to__sprintf_buf('\0', &sprintf_ptr); + + assert(local_strlen(buf) == ret); + + return ret; +} + +UInt VG_(sprintf) ( HChar* buf, const HChar *format, ... ) +{ + UInt ret; + va_list vargs; + va_start(vargs,format); + ret = VG_(vsprintf)(buf, format, vargs); + va_end(vargs); + return ret; +} + + + +/* --------------------------------------------------------------------- + percentify() + ------------------------------------------------------------------ */ + +/* This part excerpted from coregrind/m_libcbase.c */ + +// Percentify n/m with d decimal places. Includes the '%' symbol at the end. +// Right justifies in 'buf'. +__attribute__((noinline)) +void VG_percentify(ULong n, ULong m, UInt d, Int n_buf, HChar buf[]) +{ + Int i, len, space; + ULong p1; + HChar fmt[32]; + + if (m == 0) { + // Have to generate the format string in order to be flexible about + // the width of the field. + VG_(sprintf)(fmt, "%%-%ds", n_buf); + // fmt is now "%s" where is 1,2,3... + VG_(sprintf)(buf, fmt, "--%"); + return; + } + + p1 = (100*n) / m; + + if (d == 0) { + VG_(sprintf)(buf, "%lld%%", p1); + } else { + ULong p2; + UInt ex; + switch (d) { + case 1: ex = 10; break; + case 2: ex = 100; break; + case 3: ex = 1000; break; + default: assert(0); + /* was: VG_(tool_panic)("Currently can only handle 3 decimal places"); */ + } + p2 = ((100*n*ex) / m) % ex; + // Have to generate the format string in order to be flexible about + // the width of the post-decimal-point part. + VG_(sprintf)(fmt, "%%lld.%%0%dlld%%%%", d); + // fmt is now "%lld.%0lld%%" where is 1,2,3... + VG_(sprintf)(buf, fmt, p1, p2); + } + + len = local_strlen(buf); + space = n_buf - len; + if (space < 0) space = 0; /* Allow for v. small field_width */ + i = len; + + /* Right justify in field */ + for ( ; i >= 0; i--) buf[i + space] = buf[i]; + for (i = 0; i < space; i++) buf[i] = ' '; +} + + +/*------------------------------------------------------------*/ +/*--- Stats ---*/ +/*------------------------------------------------------------*/ + +/* This part excerpted from coregrind/m_translate.c */ + +static UInt n_SP_updates_fast = 0; +static UInt n_SP_updates_generic_known = 0; +static UInt n_SP_updates_generic_unknown = 0; + +__attribute__((noinline)) +void VG_print_translation_stats ( void ) +{ + HChar buf[6]; + UInt n_SP_updates = n_SP_updates_fast + n_SP_updates_generic_known + + n_SP_updates_generic_unknown; + VG_percentify(n_SP_updates_fast, n_SP_updates, 1, 6, buf); + VG_(printf)( + "translate: fast SP updates identified: %'u (%s)\n", + n_SP_updates_fast, buf ); + + VG_percentify(n_SP_updates_generic_known, n_SP_updates, 1, 6, buf); + VG_(printf)( + "translate: generic_known SP updates identified: %'u (%s)\n", + n_SP_updates_generic_known, buf ); + + VG_percentify(n_SP_updates_generic_unknown, n_SP_updates, 1, 6, buf); + VG_(printf)( + "translate: generic_unknown SP updates identified: %'u (%s)\n", + n_SP_updates_generic_unknown, buf ); +} + + + +int main ( void ) +{ + VG_print_translation_stats(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 new file mode 100644 index 000000000..3fbf2b661 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 @@ -0,0 +1,30 @@ + +Invalid read of size 1 + at 0x........: local_strlen (bad_percentify.c:138) + by 0x........: VG_vsprintf (bad_percentify.c:531) + by 0x........: VG_sprintf (bad_percentify.c:541) + by 0x........: VG_percentify (bad_percentify.c:568) + by 0x........: VG_print_translation_stats (bad_percentify.c:621) + by 0x........: main (bad_percentify.c:641) + Address 0x........ expected vs actual: + Expected: stack array "buf" of size 6 in frame 4 back from here + Actual: unknown + Actual: is 0 after Expected + +Invalid read of size 1 + at 0x........: local_strlen (bad_percentify.c:138) + by 0x........: myvprintf_str (bad_percentify.c:187) + by 0x........: VG_debugLog_vprintf (bad_percentify.c:479) + by 0x........: vprintf_to_buf (bad_percentify.c:89) + by 0x........: vprintf_WRK (bad_percentify.c:102) + by 0x........: VG_vprintf (bad_percentify.c:115) + by 0x........: VG_printf (bad_percentify.c:124) + by 0x........: VG_print_translation_stats (bad_percentify.c:622) + by 0x........: main (bad_percentify.c:641) + Address 0x........ expected vs actual: + Expected: stack array "buf" of size 6 in frame 7 back from here + Actual: unknown + Actual: is 0 after Expected + + +ERROR SUMMARY: 6 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stdout.exp new file mode 100644 index 000000000..a4ab2ff3e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.stdout.exp @@ -0,0 +1,3 @@ +translate: fast SP updates identified: 0 ( --%) +translate: generic_known SP updates identified: 0 ( --%) +translate: generic_unknown SP updates identified: 0 ( --%) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.vgtest new file mode 100644 index 000000000..1f390b02b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/bad_percentify.vgtest @@ -0,0 +1,2 @@ +prereq: ./is_arch_supported +prog: bad_percentify diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_add b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_add new file mode 100644 index 000000000..ad8fbbc90 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_add @@ -0,0 +1,8 @@ +#! /bin/sh + +dir=`dirname $0` + +$dir/filter_stderr | + +# Anonymise "before" distances (if greater than 9 bytes) +sed "s/Address 0x........ is [0-9][0-9]\+ bytes /Address 0x........ is ... bytes /" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_stderr new file mode 100644 index 000000000..174bc9437 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_stderr @@ -0,0 +1,38 @@ +#! /bin/sh + +dir=`dirname $0` + +$dir/../../tests/filter_stderr_basic | + +# Anonymise addresses +$dir/../../tests/filter_addresses | + +# Anonymise paths like "(in /foo/bar/libc-baz.so)" +sed "s/(in \/.*libc.*)$/(in \/...libc...)/" | +sed "s/(in \/.*libpthread.*)$/(in \/...libpthread...)/" | + +# Anonymise paths like "__libc_start_main (../foo/bar/libc-quux.c:129)" +sed "s/__libc_\(.*\) (.*)$/__libc_\1 (...libc...)/" | + +# Remove preambly stuff; also postambly stuff +sed \ +-e "/^exp-sgcheck, a stack and global array overrun detector$/d" \ +-e "/^NOTE: This is an Experimental-Class Valgrind Tool$/d" \ +-e "/^Copyright (C) 2003-201., and GNU GPL'd, by OpenWorks Ltd et al.$/d" \ +-e "/^For counts of detected and suppressed errors, rerun with: -v$/d" | + +# Tidy up in cases where glibc (+ libdl + libpthread + ld) have +# been built with debugging information, hence source locs are present. +sed \ +-e "s/ vfprintf (.*)/ .../" \ +-e "s/ vsprintf (.*)/ .../" \ +-e "s/ sprintf (.*)/ .../" \ +-e "s/ printf (.*)/ .../" \ +-e "s/ strdup (.*)/ .../" \ +-e "s/(pthread_key_create.c:[0-9]*)/(in \/...libpthread...)/" \ +-e "s/(genops.c:[0-9]*)/(in \/...libc...)/" \ +-e "s/(syscall-template.S:[0-9]*)/(in \/...libc...)/" | + +# Anonymise line numbers in h_intercepts.c. +sed "s/h_intercepts.c:[0-9]*/h_intercepts.c:.../" + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_suppgen b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_suppgen new file mode 100644 index 000000000..6a95de531 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/filter_suppgen @@ -0,0 +1,11 @@ + +#! /bin/sh + +dir=`dirname $0` + +$dir/filter_stderr | + +# Anonymise "obj:" path +sed "s/obj:.*\/annelid\/tests\/supp/obj:*\/annelid\/tests\/supp/" + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.c new file mode 100644 index 000000000..5b42763e7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.c @@ -0,0 +1,15 @@ + +#include + +short a[7]; +static short b[7]; + +int main ( void ) +{ + int i; + short sum; + for (i = 0; i < 7+1; i++) { + sum += a[i] * b[i]; + } + return 1 & ((unsigned int)sum / 1000000); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.stderr.exp-glibc28-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.stderr.exp-glibc28-amd64 new file mode 100644 index 000000000..3e9903785 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.stderr.exp-glibc28-amd64 @@ -0,0 +1,17 @@ + +Invalid read of size 2 + at 0x........: main (globalerr.c:12) + Address 0x........ expected vs actual: + Expected: global array "a" of size 14 in object with soname "NONE" + Actual: unknown + Actual: is 0 after Expected + +Invalid read of size 2 + at 0x........: main (globalerr.c:12) + Address 0x........ expected vs actual: + Expected: global array "b" of size 14 in object with soname "NONE" + Actual: unknown + Actual: is 0 after Expected + + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.vgtest new file mode 100644 index 000000000..c6749cb47 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/globalerr.vgtest @@ -0,0 +1,2 @@ +prereq: ./is_arch_supported +prog: globalerr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.c new file mode 100644 index 000000000..0d3d8d464 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.c @@ -0,0 +1,6537 @@ + +/* This is a very slightly modified version of perf/bz2.c, with a + single change that causes it to overrun a global array by one byte. + The change in question is a change of the size of myprintf_buf from + 1000 to 70, at line 1278. ptrcheck should report exactly one + error, resulting from an out of range access to this array. */ + +// This benchmark is basically bzip2 (mashed to be a single file) +// compressing and decompressing some data. It tests Valgrind's handling of +// realistic and "difficult" (ie. lots of branches and memory accesses) +// integer code. Execution is spread out over quite a few basic blocks; +// --profile-flags indicates that to get to the top 90%th percentile of +// dynamic BB counts requires considering the top 51 basic blocks + +// This program can be used both as part of the performance test +// suite, in which case we want it to run for quite a while, +// and as part of the regression (correctness) test suite, in +// which case we want it to run quickly and be verbose. +// So it does the latter iff given a command line arg. + +// Licensing: the code within is mostly taken from bzip2, which has a BSD +// license. There is a little code from VEX, which is licensed under GPLv2 +// And it's all written by Julian Seward. + +#define BZ_NO_STDIO + + +/*-------------------------------------------------------------*/ +/*--- Private header file for the library. ---*/ +/*--- bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + +#ifndef _BZLIB_PRIVATE_H +#define _BZLIB_PRIVATE_H + +#include + +#ifndef BZ_NO_STDIO +#include +#include +#include +#endif + + +/*-------------------------------------------------------------*/ +/*--- Public header file for the library. ---*/ +/*--- bzlib.h ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + +#ifndef _BZLIB_H +#define _BZLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define BZ_RUN 0 +#define BZ_FLUSH 1 +#define BZ_FINISH 2 + +#define BZ_OK 0 +#define BZ_RUN_OK 1 +#define BZ_FLUSH_OK 2 +#define BZ_FINISH_OK 3 +#define BZ_STREAM_END 4 +#define BZ_SEQUENCE_ERROR (-1) +#define BZ_PARAM_ERROR (-2) +#define BZ_MEM_ERROR (-3) +#define BZ_DATA_ERROR (-4) +#define BZ_DATA_ERROR_MAGIC (-5) +#define BZ_IO_ERROR (-6) +#define BZ_UNEXPECTED_EOF (-7) +#define BZ_OUTBUFF_FULL (-8) +#define BZ_CONFIG_ERROR (-9) + +typedef + struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; + } + bz_stream; + + +#ifndef BZ_IMPORT +#define BZ_EXPORT +#endif + +#ifndef BZ_NO_STDIO +/* Need a definitition for FILE */ +#include +#endif + +#ifdef _WIN32 +# include +# ifdef small + /* windows.h define small to char */ +# undef small +# endif +# ifdef BZ_EXPORT +# define BZ_API(func) WINAPI func +# define BZ_EXTERN extern +# else + /* import windows dll dynamically */ +# define BZ_API(func) (WINAPI * func) +# define BZ_EXTERN +# endif +#else +# define BZ_API(func) func +# define BZ_EXTERN extern +#endif + + +/*-- Core (low-level) library functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompress) ( + bz_stream* strm, + int action + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( + bz_stream *strm, + int verbosity, + int small + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( + bz_stream *strm + ); + + + +/*-- High(er) level library functions --*/ + +#ifndef BZ_NO_STDIO +#define BZ_MAX_UNUSED 5000 + +typedef void BZFILE; + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( + int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( + int* bzerror, + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( + int* bzerror, + BZFILE* b, + void** unused, + int* nUnused + ); + +BZ_EXTERN int BZ_API(BZ2_bzRead) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( + int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN void BZ_API(BZ2_bzWrite) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 + ); +#endif + + +/*-- Utility functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity + ); + + +/*-- + Code contributed by Yoshioka Tsuneo + (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ + +BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( + void + ); + +#ifndef BZ_NO_STDIO +BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( + const char *path, + const char *mode + ); + +BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( + int fd, + const char *mode + ); + +BZ_EXTERN int BZ_API(BZ2_bzread) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzwrite) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzflush) ( + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzclose) ( + BZFILE* b + ); + +BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( + BZFILE *b, + int *errnum + ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +/*-------------------------------------------------------------*/ +/*--- end bzlib.h ---*/ +/*-------------------------------------------------------------*/ + + + + +/*-- General stuff. --*/ + +#define BZ_VERSION "1.0.3, 17-Oct-2004" + +typedef char Char; +typedef unsigned char Bool; +typedef unsigned char UChar; +typedef int Int32; +typedef unsigned int UInt32; +typedef short Int16; +typedef unsigned short UInt16; + +#define True ((Bool)1) +#define False ((Bool)0) + +#ifndef __GNUC__ +#define __inline__ /* */ +#endif + +#ifndef BZ_NO_STDIO +extern void BZ2_bz__AssertH__fail ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } +#if BZ_DEBUG +#define AssertD(cond,msg) \ + { if (!(cond)) { \ + fprintf ( stderr, \ + "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ + exit(1); \ + }} +#else +#define AssertD(cond,msg) /* */ +#endif +#define VPrintf0(zf) \ + fprintf(stderr,zf) +#define VPrintf1(zf,za1) \ + fprintf(stderr,zf,za1) +#define VPrintf2(zf,za1,za2) \ + fprintf(stderr,zf,za1,za2) +#define VPrintf3(zf,za1,za2,za3) \ + fprintf(stderr,zf,za1,za2,za3) +#define VPrintf4(zf,za1,za2,za3,za4) \ + fprintf(stderr,zf,za1,za2,za3,za4) +#define VPrintf5(zf,za1,za2,za3,za4,za5) \ + fprintf(stderr,zf,za1,za2,za3,za4,za5) +#else +extern void bz_internal_error ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) bz_internal_error ( errcode ); } +#define AssertD(cond,msg) /* */ +#define VPrintf0(zf) \ + vex_printf(zf) +#define VPrintf1(zf,za1) \ + vex_printf(zf,za1) +#define VPrintf2(zf,za1,za2) \ + vex_printf(zf,za1,za2) +#define VPrintf3(zf,za1,za2,za3) \ + vex_printf(zf,za1,za2,za3) +#define VPrintf4(zf,za1,za2,za3,za4) \ + vex_printf(zf,za1,za2,za3,za4) +#define VPrintf5(zf,za1,za2,za3,za4,za5) \ + vex_printf(zf,za1,za2,za3,za4,za5) +#endif + + +#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) +#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) + + +/*-- Header bytes. --*/ + +#define BZ_HDR_B 0x42 /* 'B' */ +#define BZ_HDR_Z 0x5a /* 'Z' */ +#define BZ_HDR_h 0x68 /* 'h' */ +#define BZ_HDR_0 0x30 /* '0' */ + +/*-- Constants for the back end. --*/ + +#define BZ_MAX_ALPHA_SIZE 258 +#define BZ_MAX_CODE_LEN 23 + +#define BZ_RUNA 0 +#define BZ_RUNB 1 + +#define BZ_N_GROUPS 6 +#define BZ_G_SIZE 50 +#define BZ_N_ITERS 4 + +#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) + + + +/*-- Stuff for randomising repetitive blocks. --*/ + +extern Int32 BZ2_rNums[512]; + +#define BZ_RAND_DECLS \ + Int32 rNToGo; \ + Int32 rTPos \ + +#define BZ_RAND_INIT_MASK \ + s->rNToGo = 0; \ + s->rTPos = 0 \ + +#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) + +#define BZ_RAND_UPD_MASK \ + if (s->rNToGo == 0) { \ + s->rNToGo = BZ2_rNums[s->rTPos]; \ + s->rTPos++; \ + if (s->rTPos == 512) s->rTPos = 0; \ + } \ + s->rNToGo--; + + + +/*-- Stuff for doing CRCs. --*/ + +extern UInt32 BZ2_crc32Table[256]; + +#define BZ_INITIALISE_CRC(crcVar) \ +{ \ + crcVar = 0xffffffffL; \ +} + +#define BZ_FINALISE_CRC(crcVar) \ +{ \ + crcVar = ~(crcVar); \ +} + +#define BZ_UPDATE_CRC(crcVar,cha) \ +{ \ + crcVar = (crcVar << 8) ^ \ + BZ2_crc32Table[(crcVar >> 24) ^ \ + ((UChar)cha)]; \ +} + + + +/*-- States and modes for compression. --*/ + +#define BZ_M_IDLE 1 +#define BZ_M_RUNNING 2 +#define BZ_M_FLUSHING 3 +#define BZ_M_FINISHING 4 + +#define BZ_S_OUTPUT 1 +#define BZ_S_INPUT 2 + +#define BZ_N_RADIX 2 +#define BZ_N_QSORT 12 +#define BZ_N_SHELL 18 +#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) + + + + +/*-- Structure holding all the compression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* mode this stream is in, and whether inputting */ + /* or outputting data */ + Int32 mode; + Int32 state; + + /* remembers avail_in when flush/finish requested */ + UInt32 avail_in_expect; + + /* for doing the block sorting */ + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 origPtr; + + /* aliases for arr1 and arr2 */ + UInt32* ptr; + UChar* block; + UInt16* mtfv; + UChar* zbits; + + /* for deciding when to use the fallback sorting algorithm */ + Int32 workFactor; + + /* run-length-encoding of the input */ + UInt32 state_in_ch; + Int32 state_in_len; + BZ_RAND_DECLS; + + /* input and output limits and current posns */ + Int32 nblock; + Int32 nblockMAX; + Int32 numZ; + Int32 state_out_pos; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + UChar unseqToSeq[256]; + + /* the buffer for bit stream creation */ + UInt32 bsBuff; + Int32 bsLive; + + /* block and combined CRCs */ + UInt32 blockCRC; + UInt32 combinedCRC; + + /* misc administratium */ + Int32 verbosity; + Int32 blockNo; + Int32 blockSize100k; + + /* stuff for coding the MTF values */ + Int32 nMTF; + Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + /* second dimension: only 3 needed; 4 makes index calculations faster */ + UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; + + } + EState; + + + +/*-- externs for compression. --*/ + +extern void +BZ2_blockSort ( EState* ); + +extern void +BZ2_compressBlock ( EState*, Bool ); + +extern void +BZ2_bsInitWrite ( EState* ); + +extern void +BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); + +extern void +BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); + + + +/*-- states for decompression. --*/ + +#define BZ_X_IDLE 1 +#define BZ_X_OUTPUT 2 + +#define BZ_X_MAGIC_1 10 +#define BZ_X_MAGIC_2 11 +#define BZ_X_MAGIC_3 12 +#define BZ_X_MAGIC_4 13 +#define BZ_X_BLKHDR_1 14 +#define BZ_X_BLKHDR_2 15 +#define BZ_X_BLKHDR_3 16 +#define BZ_X_BLKHDR_4 17 +#define BZ_X_BLKHDR_5 18 +#define BZ_X_BLKHDR_6 19 +#define BZ_X_BCRC_1 20 +#define BZ_X_BCRC_2 21 +#define BZ_X_BCRC_3 22 +#define BZ_X_BCRC_4 23 +#define BZ_X_RANDBIT 24 +#define BZ_X_ORIGPTR_1 25 +#define BZ_X_ORIGPTR_2 26 +#define BZ_X_ORIGPTR_3 27 +#define BZ_X_MAPPING_1 28 +#define BZ_X_MAPPING_2 29 +#define BZ_X_SELECTOR_1 30 +#define BZ_X_SELECTOR_2 31 +#define BZ_X_SELECTOR_3 32 +#define BZ_X_CODING_1 33 +#define BZ_X_CODING_2 34 +#define BZ_X_CODING_3 35 +#define BZ_X_MTF_1 36 +#define BZ_X_MTF_2 37 +#define BZ_X_MTF_3 38 +#define BZ_X_MTF_4 39 +#define BZ_X_MTF_5 40 +#define BZ_X_MTF_6 41 +#define BZ_X_ENDHDR_2 42 +#define BZ_X_ENDHDR_3 43 +#define BZ_X_ENDHDR_4 44 +#define BZ_X_ENDHDR_5 45 +#define BZ_X_ENDHDR_6 46 +#define BZ_X_CCRC_1 47 +#define BZ_X_CCRC_2 48 +#define BZ_X_CCRC_3 49 +#define BZ_X_CCRC_4 50 + + + +/*-- Constants for the fast MTF decoder. --*/ + +#define MTFA_SIZE 4096 +#define MTFL_SIZE 16 + + + +/*-- Structure holding all the decompression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* state indicator for this stream */ + Int32 state; + + /* for doing the final run-length decoding */ + UChar state_out_ch; + Int32 state_out_len; + Bool blockRandomised; + BZ_RAND_DECLS; + + /* the buffer for bit stream reading */ + UInt32 bsBuff; + Int32 bsLive; + + /* misc administratium */ + Int32 blockSize100k; + Bool smallDecompress; + Int32 currBlockNo; + Int32 verbosity; + + /* for undoing the Burrows-Wheeler transform */ + Int32 origPtr; + UInt32 tPos; + Int32 k0; + Int32 unzftab[256]; + Int32 nblock_used; + Int32 cftab[257]; + Int32 cftabCopy[257]; + + /* for undoing the Burrows-Wheeler transform (FAST) */ + UInt32 *tt; + + /* for undoing the Burrows-Wheeler transform (SMALL) */ + UInt16 *ll16; + UChar *ll4; + + /* stored and calculated CRCs */ + UInt32 storedBlockCRC; + UInt32 storedCombinedCRC; + UInt32 calculatedBlockCRC; + UInt32 calculatedCombinedCRC; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + Bool inUse16[16]; + UChar seqToUnseq[256]; + + /* for decoding the MTF values */ + UChar mtfa [MTFA_SIZE]; + Int32 mtfbase[256 / MTFL_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + + Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 minLens[BZ_N_GROUPS]; + + /* save area for scalars in the main decompress code */ + Int32 save_i; + Int32 save_j; + Int32 save_t; + Int32 save_alphaSize; + Int32 save_nGroups; + Int32 save_nSelectors; + Int32 save_EOB; + Int32 save_groupNo; + Int32 save_groupPos; + Int32 save_nextSym; + Int32 save_nblockMAX; + Int32 save_nblock; + Int32 save_es; + Int32 save_N; + Int32 save_curr; + Int32 save_zt; + Int32 save_zn; + Int32 save_zvec; + Int32 save_zj; + Int32 save_gSel; + Int32 save_gMinlen; + Int32* save_gLimit; + Int32* save_gBase; + Int32* save_gPerm; + + } + DState; + + + +/*-- Macros for decompression. --*/ + +#define BZ_GET_FAST(cccc) \ + s->tPos = s->tt[s->tPos]; \ + cccc = (UChar)(s->tPos & 0xff); \ + s->tPos >>= 8; + +#define BZ_GET_FAST_C(cccc) \ + c_tPos = c_tt[c_tPos]; \ + cccc = (UChar)(c_tPos & 0xff); \ + c_tPos >>= 8; + +#define SET_LL4(i,n) \ + { if (((i) & 0x1) == 0) \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ + } + +#define GET_LL4(i) \ + ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) + +#define SET_LL(i,n) \ + { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ + SET_LL4(i, n >> 16); \ + } + +#define GET_LL(i) \ + (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) + +#define BZ_GET_SMALL(cccc) \ + cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ + s->tPos = GET_LL(s->tPos); + + +/*-- externs for decompression. --*/ + +extern Int32 +BZ2_indexIntoF ( Int32, Int32* ); + +extern Int32 +BZ2_decompress ( DState* ); + +extern void +BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, + Int32, Int32, Int32 ); + + +#endif + + +/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ + +#ifdef BZ_NO_STDIO +#ifndef NULL +#define NULL 0 +#endif +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ + + +/* Something which has the same size as void* on the host. That is, + it is 32 bits on a 32-bit host and 64 bits on a 64-bit host, and so + it can safely be coerced to and from a pointer type on the host + machine. */ +typedef unsigned long HWord; +typedef char HChar; +typedef signed int Int; +typedef unsigned int UInt; + +typedef signed long long int Long; +typedef unsigned long long int ULong; + + +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// + +static HWord (*serviceFn)(HWord,HWord) = 0; + +#if 0 +static char* my_strcpy ( char* dest, const char* src ) +{ + char* dest_orig = dest; + while (*src) *dest++ = *src++; + *dest = 0; + return dest_orig; +} + +static void* my_memcpy ( void *dest, const void *src, int sz ) +{ + const char *s = (const char *)src; + char *d = (char *)dest; + + while (sz--) + *d++ = *s++; + + return dest; +} + +static void* my_memmove( void *dst, const void *src, unsigned int len ) +{ + register char *d; + register char *s; + if ( dst > src ) { + d = (char *)dst + len - 1; + s = (char *)src + len - 1; + while ( len >= 4 ) { + *d-- = *s--; + *d-- = *s--; + *d-- = *s--; + *d-- = *s--; + len -= 4; + } + while ( len-- ) { + *d-- = *s--; + } + } else if ( dst < src ) { + d = (char *)dst; + s = (char *)src; + while ( len >= 4 ) { + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + len -= 4; + } + while ( len-- ) { + *d++ = *s++; + } + } + return dst; +} +#endif + +char* my_strcat ( char* dest, const char* src ) +{ + char* dest_orig = dest; + while (*dest) dest++; + while (*src) *dest++ = *src++; + *dest = 0; + return dest_orig; +} + + +///////////////////////////////////////////////////////////////////// + +static void vex_log_bytes ( char* p, int n ) +{ + int i; + for (i = 0; i < n; i++) + (*serviceFn)( 1, (int)p[i] ); +} + +/*---------------------------------------------------------*/ +/*--- vex_printf ---*/ +/*---------------------------------------------------------*/ + +/* This should be the only <...> include in the entire VEX library. + New code for vex_util.c should go above this point. */ +#include + +static HChar vex_toupper ( HChar c ) +{ + if (c >= 'a' && c <= 'z') + return c + ('A' - 'a'); + else + return c; +} + +static Int vex_strlen ( const HChar* str ) +{ + Int i = 0; + while (str[i] != 0) i++; + return i; +} + +Bool vex_streq ( const HChar* s1, const HChar* s2 ) +{ + while (True) { + if (*s1 == 0 && *s2 == 0) + return True; + if (*s1 != *s2) + return False; + s1++; + s2++; + } +} + +/* Some flags. */ +#define VG_MSG_SIGNED 1 /* The value is signed. */ +#define VG_MSG_ZJUSTIFY 2 /* Must justify with '0'. */ +#define VG_MSG_LJUSTIFY 4 /* Must justify on the left. */ +#define VG_MSG_PAREN 8 /* Parenthesize if present (for %y) */ +#define VG_MSG_COMMA 16 /* Add commas to numbers (for %d, %u) */ + +/* Copy a string into the buffer. */ +static UInt +myvprintf_str ( void(*send)(HChar), Int flags, Int width, HChar* str, + Bool capitalise ) +{ +# define MAYBE_TOUPPER(ch) (capitalise ? vex_toupper(ch) : (ch)) + UInt ret = 0; + Int i, extra; + Int len = vex_strlen(str); + + if (width == 0) { + ret += len; + for (i = 0; i < len; i++) + send(MAYBE_TOUPPER(str[i])); + return ret; + } + + if (len > width) { + ret += width; + for (i = 0; i < width; i++) + send(MAYBE_TOUPPER(str[i])); + return ret; + } + + extra = width - len; + if (flags & VG_MSG_LJUSTIFY) { + ret += extra; + for (i = 0; i < extra; i++) + send(' '); + } + ret += len; + for (i = 0; i < len; i++) + send(MAYBE_TOUPPER(str[i])); + if (!(flags & VG_MSG_LJUSTIFY)) { + ret += extra; + for (i = 0; i < extra; i++) + send(' '); + } + +# undef MAYBE_TOUPPER + + return ret; +} + +/* Write P into the buffer according to these args: + * If SIGN is true, p is a signed. + * BASE is the base. + * If WITH_ZERO is true, '0' must be added. + * WIDTH is the width of the field. + */ +static UInt +myvprintf_int64 ( void(*send)(HChar), Int flags, Int base, Int width, ULong pL) +{ + HChar buf[40]; + Int ind = 0; + Int i, nc = 0; + Bool neg = False; + HChar *digits = "0123456789ABCDEF"; + UInt ret = 0; + UInt p = (UInt)pL; + + if (base < 2 || base > 16) + return ret; + + if ((flags & VG_MSG_SIGNED) && (Int)p < 0) { + p = - (Int)p; + neg = True; + } + + if (p == 0) + buf[ind++] = '0'; + else { + while (p > 0) { + if ((flags & VG_MSG_COMMA) && 10 == base && + 0 == (ind-nc) % 3 && 0 != ind) + { + buf[ind++] = ','; + nc++; + } + buf[ind++] = digits[p % base]; + p /= base; + } + } + + if (neg) + buf[ind++] = '-'; + + if (width > 0 && !(flags & VG_MSG_LJUSTIFY)) { + for(; ind < width; ind++) { + //vassert(ind < 39); + buf[ind] = ((flags & VG_MSG_ZJUSTIFY) ? '0': ' '); + } + } + + /* Reverse copy to buffer. */ + ret += ind; + for (i = ind -1; i >= 0; i--) { + send(buf[i]); + } + if (width > 0 && (flags & VG_MSG_LJUSTIFY)) { + for(; ind < width; ind++) { + ret++; + send(' '); // Never pad with zeroes on RHS -- changes the value! + } + } + return ret; +} + + +/* A simple vprintf(). */ +static +UInt vprintf_wrk ( void(*send)(HChar), const HChar *format, va_list vargs ) +{ + UInt ret = 0; + int i; + int flags; + int width; + Bool is_long; + + /* We assume that vargs has already been initialised by the + caller, using va_start, and that the caller will similarly + clean up with va_end. + */ + + for (i = 0; format[i] != 0; i++) { + if (format[i] != '%') { + send(format[i]); + ret++; + continue; + } + i++; + /* A '%' has been found. Ignore a trailing %. */ + if (format[i] == 0) + break; + if (format[i] == '%') { + /* `%%' is replaced by `%'. */ + send('%'); + ret++; + continue; + } + flags = 0; + is_long = False; + width = 0; /* length of the field. */ + if (format[i] == '(') { + flags |= VG_MSG_PAREN; + i++; + } + /* If ',' follows '%', commas will be inserted. */ + if (format[i] == ',') { + flags |= VG_MSG_COMMA; + i++; + } + /* If '-' follows '%', justify on the left. */ + if (format[i] == '-') { + flags |= VG_MSG_LJUSTIFY; + i++; + } + /* If '0' follows '%', pads will be inserted. */ + if (format[i] == '0') { + flags |= VG_MSG_ZJUSTIFY; + i++; + } + /* Compute the field length. */ + while (format[i] >= '0' && format[i] <= '9') { + width *= 10; + width += format[i++] - '0'; + } + while (format[i] == 'l') { + i++; + is_long = True; + } + + switch (format[i]) { + case 'd': /* %d */ + flags |= VG_MSG_SIGNED; + if (is_long) + ret += myvprintf_int64(send, flags, 10, width, + (ULong)(va_arg (vargs, Long))); + else + ret += myvprintf_int64(send, flags, 10, width, + (ULong)(va_arg (vargs, Int))); + break; + case 'u': /* %u */ + if (is_long) + ret += myvprintf_int64(send, flags, 10, width, + (ULong)(va_arg (vargs, ULong))); + else + ret += myvprintf_int64(send, flags, 10, width, + (ULong)(va_arg (vargs, UInt))); + break; + case 'p': /* %p */ + ret += 2; + send('0'); + send('x'); + ret += myvprintf_int64(send, flags, 16, width, + (ULong)((HWord)va_arg (vargs, void *))); + break; + case 'x': /* %x */ + if (is_long) + ret += myvprintf_int64(send, flags, 16, width, + (ULong)(va_arg (vargs, ULong))); + else + ret += myvprintf_int64(send, flags, 16, width, + (ULong)(va_arg (vargs, UInt))); + break; + case 'c': /* %c */ + ret++; + send((va_arg (vargs, int))); + break; + case 's': case 'S': { /* %s */ + char *str = va_arg (vargs, char *); + if (str == (char*) 0) str = "(null)"; + ret += myvprintf_str(send, flags, width, str, + (format[i]=='S')); + break; + } +# if 0 + case 'y': { /* %y - print symbol */ + Char buf[100]; + Char *cp = buf; + Addr a = va_arg(vargs, Addr); + + if (flags & VG_MSG_PAREN) + *cp++ = '('; + if (VG_(get_fnname_w_offset)(a, cp, sizeof(buf)-4)) { + if (flags & VG_MSG_PAREN) { + cp += VG_(strlen)(cp); + *cp++ = ')'; + *cp = '\0'; + } + ret += myvprintf_str(send, flags, width, buf, 0); + } + break; + } +# endif + default: + break; + } + } + return ret; +} + + +/* A general replacement for printf(). Note that only low-level + debugging info should be sent via here. The official route is to + to use vg_message(). This interface is deprecated. +*/ +/* XXX re 930: make the buffer just to small (by 1 byte) to be OK + for this particular run. */ +static HChar myprintf_buf[1000 -930]; +static Int n_myprintf_buf; + +static void add_to_myprintf_buf ( HChar c ) +{ + if (c == '\n' || n_myprintf_buf >= 1000-10 /*paranoia*/ ) { + (*vex_log_bytes)( myprintf_buf, vex_strlen(myprintf_buf) ); + n_myprintf_buf = 0; + myprintf_buf[n_myprintf_buf] = 0; + } + myprintf_buf[n_myprintf_buf++] = c; + myprintf_buf[n_myprintf_buf] = 0; +} + +static UInt vex_printf ( const char *format, ... ) +{ + UInt ret; + va_list vargs; + va_start(vargs,format); + + n_myprintf_buf = 0; + myprintf_buf[n_myprintf_buf] = 0; + ret = vprintf_wrk ( add_to_myprintf_buf, format, vargs ); + + if (n_myprintf_buf > 0) { + (*vex_log_bytes)( myprintf_buf, n_myprintf_buf ); + } + + va_end(vargs); + + return ret; +} + +/*---------------------------------------------------------------*/ +/*--- end vex_util.c ---*/ +/*---------------------------------------------------------------*/ + + +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// + + +/*-------------------------------------------------------------*/ +/*--- Decompression machinery ---*/ +/*--- decompress.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + + + +/*---------------------------------------------------*/ +static +void makeMaps_d ( DState* s ) +{ + Int32 i; + s->nInUse = 0; + for (i = 0; i < 256; i++) + if (s->inUse[i]) { + s->seqToUnseq[s->nInUse] = i; + s->nInUse++; + } +} + + +/*---------------------------------------------------*/ +#define RETURN(rrr) \ + { retVal = rrr; goto save_state_and_return; }; + +#define GET_BITS(lll,vvv,nnn) \ + case lll: s->state = lll; \ + while (True) { \ + if (s->bsLive >= nnn) { \ + UInt32 v; \ + v = (s->bsBuff >> \ + (s->bsLive-nnn)) & ((1 << nnn)-1); \ + s->bsLive -= nnn; \ + vvv = v; \ + break; \ + } \ + if (s->strm->avail_in == 0) RETURN(BZ_OK); \ + s->bsBuff \ + = (s->bsBuff << 8) | \ + ((UInt32) \ + (*((UChar*)(s->strm->next_in)))); \ + s->bsLive += 8; \ + s->strm->next_in++; \ + s->strm->avail_in--; \ + s->strm->total_in_lo32++; \ + if (s->strm->total_in_lo32 == 0) \ + s->strm->total_in_hi32++; \ + } + +#define GET_UCHAR(lll,uuu) \ + GET_BITS(lll,uuu,8) + +#define GET_BIT(lll,uuu) \ + GET_BITS(lll,uuu,1) + +/*---------------------------------------------------*/ +#define GET_MTF_VAL(label1,label2,lval) \ +{ \ + if (groupPos == 0) { \ + groupNo++; \ + if (groupNo >= nSelectors) \ + RETURN(BZ_DATA_ERROR); \ + groupPos = BZ_G_SIZE; \ + gSel = s->selector[groupNo]; \ + gMinlen = s->minLens[gSel]; \ + gLimit = &(s->limit[gSel][0]); \ + gPerm = &(s->perm[gSel][0]); \ + gBase = &(s->base[gSel][0]); \ + } \ + groupPos--; \ + zn = gMinlen; \ + GET_BITS(label1, zvec, zn); \ + while (1) { \ + if (zn > 20 /* the longest code */) \ + RETURN(BZ_DATA_ERROR); \ + if (zvec <= gLimit[zn]) break; \ + zn++; \ + GET_BIT(label2, zj); \ + zvec = (zvec << 1) | zj; \ + }; \ + if (zvec - gBase[zn] < 0 \ + || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \ + RETURN(BZ_DATA_ERROR); \ + lval = gPerm[zvec - gBase[zn]]; \ +} + + + +/*---------------------------------------------------*/ +__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) +{ + Int32 nb, na, mid; + nb = 0; + na = 256; + do { + mid = (nb + na) >> 1; + if (indx >= cftab[mid]) nb = mid; else na = mid; + } + while (na - nb != 1); + return nb; +} + +/*---------------------------------------------------*/ +Int32 BZ2_decompress ( DState* s ) +{ + UChar uc; + Int32 retVal; + Int32 minLen, maxLen; + bz_stream* strm = s->strm; + + /* stuff that needs to be saved/restored */ + Int32 i; + Int32 j; + Int32 t; + Int32 alphaSize; + Int32 nGroups; + Int32 nSelectors; + Int32 EOB; + Int32 groupNo; + Int32 groupPos; + Int32 nextSym; + Int32 nblockMAX; + Int32 nblock; + Int32 es; + Int32 N; + Int32 curr; + Int32 zt; + Int32 zn; + Int32 zvec; + Int32 zj; + Int32 gSel; + Int32 gMinlen; + Int32* gLimit; + Int32* gBase; + Int32* gPerm; + + if (s->state == BZ_X_MAGIC_1) { + /*initialise the save area*/ + s->save_i = 0; + s->save_j = 0; + s->save_t = 0; + s->save_alphaSize = 0; + s->save_nGroups = 0; + s->save_nSelectors = 0; + s->save_EOB = 0; + s->save_groupNo = 0; + s->save_groupPos = 0; + s->save_nextSym = 0; + s->save_nblockMAX = 0; + s->save_nblock = 0; + s->save_es = 0; + s->save_N = 0; + s->save_curr = 0; + s->save_zt = 0; + s->save_zn = 0; + s->save_zvec = 0; + s->save_zj = 0; + s->save_gSel = 0; + s->save_gMinlen = 0; + s->save_gLimit = NULL; + s->save_gBase = NULL; + s->save_gPerm = NULL; + } + + /*restore from the save area*/ + i = s->save_i; + j = s->save_j; + t = s->save_t; + alphaSize = s->save_alphaSize; + nGroups = s->save_nGroups; + nSelectors = s->save_nSelectors; + EOB = s->save_EOB; + groupNo = s->save_groupNo; + groupPos = s->save_groupPos; + nextSym = s->save_nextSym; + nblockMAX = s->save_nblockMAX; + nblock = s->save_nblock; + es = s->save_es; + N = s->save_N; + curr = s->save_curr; + zt = s->save_zt; + zn = s->save_zn; + zvec = s->save_zvec; + zj = s->save_zj; + gSel = s->save_gSel; + gMinlen = s->save_gMinlen; + gLimit = s->save_gLimit; + gBase = s->save_gBase; + gPerm = s->save_gPerm; + + retVal = BZ_OK; + + switch (s->state) { + + GET_UCHAR(BZ_X_MAGIC_1, uc); + if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_UCHAR(BZ_X_MAGIC_2, uc); + if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_UCHAR(BZ_X_MAGIC_3, uc) + if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) + if (s->blockSize100k < (BZ_HDR_0 + 1) || + s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); + s->blockSize100k -= BZ_HDR_0; + + if (s->smallDecompress) { + s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); + s->ll4 = BZALLOC( + ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) + ); + if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); + } else { + s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); + if (s->tt == NULL) RETURN(BZ_MEM_ERROR); + } + + GET_UCHAR(BZ_X_BLKHDR_1, uc); + + if (uc == 0x17) goto endhdr_2; + if (uc != 0x31) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_2, uc); + if (uc != 0x41) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_3, uc); + if (uc != 0x59) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_4, uc); + if (uc != 0x26) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_5, uc); + if (uc != 0x53) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_6, uc); + if (uc != 0x59) RETURN(BZ_DATA_ERROR); + + s->currBlockNo++; + if (s->verbosity >= 2) + VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); + + s->storedBlockCRC = 0; + GET_UCHAR(BZ_X_BCRC_1, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_2, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_3, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_4, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + + GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1); + + s->origPtr = 0; + GET_UCHAR(BZ_X_ORIGPTR_1, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + GET_UCHAR(BZ_X_ORIGPTR_2, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + GET_UCHAR(BZ_X_ORIGPTR_3, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + + if (s->origPtr < 0) + RETURN(BZ_DATA_ERROR); + if (s->origPtr > 10 + 100000*s->blockSize100k) + RETURN(BZ_DATA_ERROR); + + /*--- Receive the mapping table ---*/ + for (i = 0; i < 16; i++) { + GET_BIT(BZ_X_MAPPING_1, uc); + if (uc == 1) + s->inUse16[i] = True; else + s->inUse16[i] = False; + } + + for (i = 0; i < 256; i++) s->inUse[i] = False; + + for (i = 0; i < 16; i++) + if (s->inUse16[i]) + for (j = 0; j < 16; j++) { + GET_BIT(BZ_X_MAPPING_2, uc); + if (uc == 1) s->inUse[i * 16 + j] = True; + } + makeMaps_d ( s ); + if (s->nInUse == 0) RETURN(BZ_DATA_ERROR); + alphaSize = s->nInUse+2; + + /*--- Now the selectors ---*/ + GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); + if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); + GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); + if (nSelectors < 1) RETURN(BZ_DATA_ERROR); + for (i = 0; i < nSelectors; i++) { + j = 0; + while (True) { + GET_BIT(BZ_X_SELECTOR_3, uc); + if (uc == 0) break; + j++; + if (j >= nGroups) RETURN(BZ_DATA_ERROR); + } + s->selectorMtf[i] = j; + } + + /*--- Undo the MTF values for the selectors. ---*/ + { + UChar pos[BZ_N_GROUPS], tmp, v; + for (v = 0; v < nGroups; v++) pos[v] = v; + + for (i = 0; i < nSelectors; i++) { + v = s->selectorMtf[i]; + tmp = pos[v]; + while (v > 0) { pos[v] = pos[v-1]; v--; } + pos[0] = tmp; + s->selector[i] = tmp; + } + } + + /*--- Now the coding tables ---*/ + for (t = 0; t < nGroups; t++) { + GET_BITS(BZ_X_CODING_1, curr, 5); + for (i = 0; i < alphaSize; i++) { + while (True) { + if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR); + GET_BIT(BZ_X_CODING_2, uc); + if (uc == 0) break; + GET_BIT(BZ_X_CODING_3, uc); + if (uc == 0) curr++; else curr--; + } + s->len[t][i] = curr; + } + } + + /*--- Create the Huffman decoding tables ---*/ + for (t = 0; t < nGroups; t++) { + minLen = 32; + maxLen = 0; + for (i = 0; i < alphaSize; i++) { + if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; + if (s->len[t][i] < minLen) minLen = s->len[t][i]; + } + BZ2_hbCreateDecodeTables ( + &(s->limit[t][0]), + &(s->base[t][0]), + &(s->perm[t][0]), + &(s->len[t][0]), + minLen, maxLen, alphaSize + ); + s->minLens[t] = minLen; + } + + /*--- Now the MTF values ---*/ + + EOB = s->nInUse+1; + nblockMAX = 100000 * s->blockSize100k; + groupNo = -1; + groupPos = 0; + + for (i = 0; i <= 255; i++) s->unzftab[i] = 0; + + /*-- MTF init --*/ + { + Int32 ii, jj, kk; + kk = MTFA_SIZE-1; + for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) { + for (jj = MTFL_SIZE-1; jj >= 0; jj--) { + s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj); + kk--; + } + s->mtfbase[ii] = kk + 1; + } + } + /*-- end MTF init --*/ + + nblock = 0; + GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym); + + while (True) { + + if (nextSym == EOB) break; + + if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) { + + es = -1; + N = 1; + do { + if (nextSym == BZ_RUNA) es = es + (0+1) * N; else + if (nextSym == BZ_RUNB) es = es + (1+1) * N; + N = N * 2; + GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym); + } + while (nextSym == BZ_RUNA || nextSym == BZ_RUNB); + + es++; + uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ]; + s->unzftab[uc] += es; + + if (s->smallDecompress) + while (es > 0) { + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + s->ll16[nblock] = (UInt16)uc; + nblock++; + es--; + } + else + while (es > 0) { + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + s->tt[nblock] = (UInt32)uc; + nblock++; + es--; + }; + + continue; + + } else { + + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + + /*-- uc = MTF ( nextSym-1 ) --*/ + { + Int32 ii, jj, kk, pp, lno, off; + UInt32 nn; + nn = (UInt32)(nextSym - 1); + + if (nn < MTFL_SIZE) { + /* avoid general-case expense */ + pp = s->mtfbase[0]; + uc = s->mtfa[pp+nn]; + while (nn > 3) { + Int32 z = pp+nn; + s->mtfa[(z) ] = s->mtfa[(z)-1]; + s->mtfa[(z)-1] = s->mtfa[(z)-2]; + s->mtfa[(z)-2] = s->mtfa[(z)-3]; + s->mtfa[(z)-3] = s->mtfa[(z)-4]; + nn -= 4; + } + while (nn > 0) { + s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; + }; + s->mtfa[pp] = uc; + } else { + /* general case */ + lno = nn / MTFL_SIZE; + off = nn % MTFL_SIZE; + pp = s->mtfbase[lno] + off; + uc = s->mtfa[pp]; + while (pp > s->mtfbase[lno]) { + s->mtfa[pp] = s->mtfa[pp-1]; pp--; + }; + s->mtfbase[lno]++; + while (lno > 0) { + s->mtfbase[lno]--; + s->mtfa[s->mtfbase[lno]] + = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; + lno--; + } + s->mtfbase[0]--; + s->mtfa[s->mtfbase[0]] = uc; + if (s->mtfbase[0] == 0) { + kk = MTFA_SIZE-1; + for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) { + for (jj = MTFL_SIZE-1; jj >= 0; jj--) { + s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj]; + kk--; + } + s->mtfbase[ii] = kk + 1; + } + } + } + } + /*-- end uc = MTF ( nextSym-1 ) --*/ + + s->unzftab[s->seqToUnseq[uc]]++; + if (s->smallDecompress) + s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else + s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]); + nblock++; + + GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym); + continue; + } + } + + /* Now we know what nblock is, we can do a better sanity + check on s->origPtr. + */ + if (s->origPtr < 0 || s->origPtr >= nblock) + RETURN(BZ_DATA_ERROR); + + /*-- Set up cftab to facilitate generation of T^(-1) --*/ + s->cftab[0] = 0; + for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1]; + for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1]; + for (i = 0; i <= 256; i++) { + if (s->cftab[i] < 0 || s->cftab[i] > nblock) { + /* s->cftab[i] can legitimately be == nblock */ + RETURN(BZ_DATA_ERROR); + } + } + + s->state_out_len = 0; + s->state_out_ch = 0; + BZ_INITIALISE_CRC ( s->calculatedBlockCRC ); + s->state = BZ_X_OUTPUT; + if (s->verbosity >= 2) VPrintf0 ( "rt+rld" ); + + if (s->smallDecompress) { + + /*-- Make a copy of cftab, used in generation of T --*/ + for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i]; + + /*-- compute the T vector --*/ + for (i = 0; i < nblock; i++) { + uc = (UChar)(s->ll16[i]); + SET_LL(i, s->cftabCopy[uc]); + s->cftabCopy[uc]++; + } + + /*-- Compute T^(-1) by pointer reversal on T --*/ + i = s->origPtr; + j = GET_LL(i); + do { + Int32 tmp = GET_LL(j); + SET_LL(j, i); + i = j; + j = tmp; + } + while (i != s->origPtr); + + s->tPos = s->origPtr; + s->nblock_used = 0; + if (s->blockRandomised) { + BZ_RAND_INIT_MASK; + BZ_GET_SMALL(s->k0); s->nblock_used++; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + } else { + BZ_GET_SMALL(s->k0); s->nblock_used++; + } + + } else { + + /*-- compute the T^(-1) vector --*/ + for (i = 0; i < nblock; i++) { + uc = (UChar)(s->tt[i] & 0xff); + s->tt[s->cftab[uc]] |= (i << 8); + s->cftab[uc]++; + } + + s->tPos = s->tt[s->origPtr] >> 8; + s->nblock_used = 0; + if (s->blockRandomised) { + BZ_RAND_INIT_MASK; + BZ_GET_FAST(s->k0); s->nblock_used++; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + } else { + BZ_GET_FAST(s->k0); s->nblock_used++; + } + + } + + RETURN(BZ_OK); + + + + endhdr_2: + + GET_UCHAR(BZ_X_ENDHDR_2, uc); + if (uc != 0x72) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_3, uc); + if (uc != 0x45) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_4, uc); + if (uc != 0x38) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_5, uc); + if (uc != 0x50) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_6, uc); + if (uc != 0x90) RETURN(BZ_DATA_ERROR); + + s->storedCombinedCRC = 0; + GET_UCHAR(BZ_X_CCRC_1, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_2, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_3, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_4, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + + s->state = BZ_X_IDLE; + RETURN(BZ_STREAM_END); + + default: AssertH ( False, 4001 ); + } + + AssertH ( False, 4002 ); + + save_state_and_return: + + s->save_i = i; + s->save_j = j; + s->save_t = t; + s->save_alphaSize = alphaSize; + s->save_nGroups = nGroups; + s->save_nSelectors = nSelectors; + s->save_EOB = EOB; + s->save_groupNo = groupNo; + s->save_groupPos = groupPos; + s->save_nextSym = nextSym; + s->save_nblockMAX = nblockMAX; + s->save_nblock = nblock; + s->save_es = es; + s->save_N = N; + s->save_curr = curr; + s->save_zt = zt; + s->save_zn = zn; + s->save_zvec = zvec; + s->save_zj = zj; + s->save_gSel = gSel; + s->save_gMinlen = gMinlen; + s->save_gLimit = gLimit; + s->save_gBase = gBase; + s->save_gPerm = gPerm; + + return retVal; +} + + +/*-------------------------------------------------------------*/ +/*--- end decompress.c ---*/ +/*-------------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/*--- Block sorting machinery ---*/ +/*--- blocksort.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. + + To get some idea how the block sorting algorithms in this file + work, read my paper + On the Performance of BWT Sorting Algorithms + in Proceedings of the IEEE Data Compression Conference 2000, + Snowbird, Utah, USA, 27-30 March 2000. The main sort in this + file implements the algorithm called cache in the paper. +--*/ + + + +/*---------------------------------------------*/ +/*--- Fallback O(N log(N)^2) sorting ---*/ +/*--- algorithm, for repetitive blocks ---*/ +/*---------------------------------------------*/ + +/*---------------------------------------------*/ +static +__inline__ +void fallbackSimpleSort ( UInt32* fmap, + UInt32* eclass, + Int32 lo, + Int32 hi ) +{ + Int32 i, j, tmp; + UInt32 ec_tmp; + + if (lo == hi) return; + + if (hi - lo > 3) { + for ( i = hi-4; i >= lo; i-- ) { + tmp = fmap[i]; + ec_tmp = eclass[tmp]; + for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 ) + fmap[j-4] = fmap[j]; + fmap[j-4] = tmp; + } + } + + for ( i = hi-1; i >= lo; i-- ) { + tmp = fmap[i]; + ec_tmp = eclass[tmp]; + for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ ) + fmap[j-1] = fmap[j]; + fmap[j-1] = tmp; + } +} + + +/*---------------------------------------------*/ +#define fswap(zz1, zz2) \ + { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } + +#define fvswap(zzp1, zzp2, zzn) \ +{ \ + Int32 yyp1 = (zzp1); \ + Int32 yyp2 = (zzp2); \ + Int32 yyn = (zzn); \ + while (yyn > 0) { \ + fswap(fmap[yyp1], fmap[yyp2]); \ + yyp1++; yyp2++; yyn--; \ + } \ +} + + +#define fmin(a,b) ((a) < (b)) ? (a) : (b) + +#define fpush(lz,hz) { stackLo[sp] = lz; \ + stackHi[sp] = hz; \ + sp++; } + +#define fpop(lz,hz) { sp--; \ + lz = stackLo[sp]; \ + hz = stackHi[sp]; } + +#define FALLBACK_QSORT_SMALL_THRESH 10 +#define FALLBACK_QSORT_STACK_SIZE 100 + + +static +void fallbackQSort3 ( UInt32* fmap, + UInt32* eclass, + Int32 loSt, + Int32 hiSt ) +{ + Int32 unLo, unHi, ltLo, gtHi, n, m; + Int32 sp, lo, hi; + UInt32 med, r, r3; + Int32 stackLo[FALLBACK_QSORT_STACK_SIZE]; + Int32 stackHi[FALLBACK_QSORT_STACK_SIZE]; + + r = 0; + + sp = 0; + fpush ( loSt, hiSt ); + + while (sp > 0) { + + AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 ); + + fpop ( lo, hi ); + if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) { + fallbackSimpleSort ( fmap, eclass, lo, hi ); + continue; + } + + /* Random partitioning. Median of 3 sometimes fails to + avoid bad cases. Median of 9 seems to help but + looks rather expensive. This too seems to work but + is cheaper. Guidance for the magic constants + 7621 and 32768 is taken from Sedgewick's algorithms + book, chapter 35. + */ + r = ((r * 7621) + 1) % 32768; + r3 = r % 3; + if (r3 == 0) med = eclass[fmap[lo]]; else + if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else + med = eclass[fmap[hi]]; + + unLo = ltLo = lo; + unHi = gtHi = hi; + + while (1) { + while (1) { + if (unLo > unHi) break; + n = (Int32)eclass[fmap[unLo]] - (Int32)med; + if (n == 0) { + fswap(fmap[unLo], fmap[ltLo]); + ltLo++; unLo++; + continue; + }; + if (n > 0) break; + unLo++; + } + while (1) { + if (unLo > unHi) break; + n = (Int32)eclass[fmap[unHi]] - (Int32)med; + if (n == 0) { + fswap(fmap[unHi], fmap[gtHi]); + gtHi--; unHi--; + continue; + }; + if (n < 0) break; + unHi--; + } + if (unLo > unHi) break; + fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--; + } + + AssertD ( unHi == unLo-1, "fallbackQSort3(2)" ); + + if (gtHi < ltLo) continue; + + n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n); + m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m); + + n = lo + unLo - ltLo - 1; + m = hi - (gtHi - unHi) + 1; + + if (n - lo > hi - m) { + fpush ( lo, n ); + fpush ( m, hi ); + } else { + fpush ( m, hi ); + fpush ( lo, n ); + } + } +} + +#undef fmin +#undef fpush +#undef fpop +#undef fswap +#undef fvswap +#undef FALLBACK_QSORT_SMALL_THRESH +#undef FALLBACK_QSORT_STACK_SIZE + + +/*---------------------------------------------*/ +/* Pre: + nblock > 0 + eclass exists for [0 .. nblock-1] + ((UChar*)eclass) [0 .. nblock-1] holds block + ptr exists for [0 .. nblock-1] + + Post: + ((UChar*)eclass) [0 .. nblock-1] holds block + All other areas of eclass destroyed + fmap [0 .. nblock-1] holds sorted order + bhtab [ 0 .. 2+(nblock/32) ] destroyed +*/ + +#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) +#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) +#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) +#define WORD_BH(zz) bhtab[(zz) >> 5] +#define UNALIGNED_BH(zz) ((zz) & 0x01f) + +static +void fallbackSort ( UInt32* fmap, + UInt32* eclass, + UInt32* bhtab, + Int32 nblock, + Int32 verb ) +{ + Int32 ftab[257]; + Int32 ftabCopy[256]; + Int32 H, i, j, k, l, r, cc, cc1; + Int32 nNotDone; + Int32 nBhtab; + UChar* eclass8 = (UChar*)eclass; + + /*-- + Initial 1-char radix sort to generate + initial fmap and initial BH bits. + --*/ + if (verb >= 4) + VPrintf0 ( " bucket sorting ...\n" ); + for (i = 0; i < 257; i++) ftab[i] = 0; + for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; + for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; + for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; + + for (i = 0; i < nblock; i++) { + j = eclass8[i]; + k = ftab[j] - 1; + ftab[j] = k; + fmap[k] = i; + } + + nBhtab = 2 + (nblock / 32); + for (i = 0; i < nBhtab; i++) bhtab[i] = 0; + for (i = 0; i < 256; i++) SET_BH(ftab[i]); + + /*-- + Inductively refine the buckets. Kind-of an + "exponential radix sort" (!), inspired by the + Manber-Myers suffix array construction algorithm. + --*/ + + /*-- set sentinel bits for block-end detection --*/ + for (i = 0; i < 32; i++) { + SET_BH(nblock + 2*i); + CLEAR_BH(nblock + 2*i + 1); + } + + /*-- the log(N) loop --*/ + H = 1; + while (1) { + + if (verb >= 4) + VPrintf1 ( " depth %6d has ", H ); + + j = 0; + for (i = 0; i < nblock; i++) { + if (ISSET_BH(i)) j = i; + k = fmap[i] - H; if (k < 0) k += nblock; + eclass[k] = j; + } + + nNotDone = 0; + r = -1; + while (1) { + + /*-- find the next non-singleton bucket --*/ + k = r + 1; + while (ISSET_BH(k) && UNALIGNED_BH(k)) k++; + if (ISSET_BH(k)) { + while (WORD_BH(k) == 0xffffffff) k += 32; + while (ISSET_BH(k)) k++; + } + l = k - 1; + if (l >= nblock) break; + while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++; + if (!ISSET_BH(k)) { + while (WORD_BH(k) == 0x00000000) k += 32; + while (!ISSET_BH(k)) k++; + } + r = k - 1; + if (r >= nblock) break; + + /*-- now [l, r] bracket current bucket --*/ + if (r > l) { + nNotDone += (r - l + 1); + fallbackQSort3 ( fmap, eclass, l, r ); + + /*-- scan bucket and generate header bits-- */ + cc = -1; + for (i = l; i <= r; i++) { + cc1 = eclass[fmap[i]]; + if (cc != cc1) { SET_BH(i); cc = cc1; }; + } + } + } + + if (verb >= 4) + VPrintf1 ( "%6d unresolved strings\n", nNotDone ); + + H *= 2; + if (H > nblock || nNotDone == 0) break; + } + + /*-- + Reconstruct the original block in + eclass8 [0 .. nblock-1], since the + previous phase destroyed it. + --*/ + if (verb >= 4) + VPrintf0 ( " reconstructing block ...\n" ); + j = 0; + for (i = 0; i < nblock; i++) { + while (ftabCopy[j] == 0) j++; + ftabCopy[j]--; + eclass8[fmap[i]] = (UChar)j; + } + AssertH ( j < 256, 1005 ); +} + +#undef SET_BH +#undef CLEAR_BH +#undef ISSET_BH +#undef WORD_BH +#undef UNALIGNED_BH + + +/*---------------------------------------------*/ +/*--- The main, O(N^2 log(N)) sorting ---*/ +/*--- algorithm. Faster for "normal" ---*/ +/*--- non-repetitive blocks. ---*/ +/*---------------------------------------------*/ + +/*---------------------------------------------*/ +static +__inline__ +Bool mainGtU ( UInt32 i1, + UInt32 i2, + UChar* block, + UInt16* quadrant, + UInt32 nblock, + Int32* budget ) +{ + Int32 k; + UChar c1, c2; + UInt16 s1, s2; + + AssertD ( i1 != i2, "mainGtU" ); + /* 1 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 2 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 3 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 4 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 5 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 6 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 7 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 8 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 9 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 10 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 11 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 12 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + + k = nblock + 8; + + do { + /* 1 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 2 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 3 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 4 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 5 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 6 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 7 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 8 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + + if (i1 >= nblock) i1 -= nblock; + if (i2 >= nblock) i2 -= nblock; + + k -= 8; + (*budget)--; + } + while (k >= 0); + + return False; +} + + +/*---------------------------------------------*/ +/*-- + Knuth's increments seem to work better + than Incerpi-Sedgewick here. Possibly + because the number of elems to sort is + usually small, typically <= 20. +--*/ +static +Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280, + 9841, 29524, 88573, 265720, + 797161, 2391484 }; + +static +void mainSimpleSort ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + Int32 nblock, + Int32 lo, + Int32 hi, + Int32 d, + Int32* budget ) +{ + Int32 i, j, h, bigN, hp; + UInt32 v; + + bigN = hi - lo + 1; + if (bigN < 2) return; + + hp = 0; + while (incs[hp] < bigN) hp++; + hp--; + + for (; hp >= 0; hp--) { + h = incs[hp]; + + i = lo + h; + while (True) { + + /*-- copy 1 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + /*-- copy 2 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + /*-- copy 3 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + if (*budget < 0) return; + } + } +} + + +/*---------------------------------------------*/ +/*-- + The following is an implementation of + an elegant 3-way quicksort for strings, + described in a paper "Fast Algorithms for + Sorting and Searching Strings", by Robert + Sedgewick and Jon L. Bentley. +--*/ + +#define mswap(zz1, zz2) \ + { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } + +#define mvswap(zzp1, zzp2, zzn) \ +{ \ + Int32 yyp1 = (zzp1); \ + Int32 yyp2 = (zzp2); \ + Int32 yyn = (zzn); \ + while (yyn > 0) { \ + mswap(ptr[yyp1], ptr[yyp2]); \ + yyp1++; yyp2++; yyn--; \ + } \ +} + +static +__inline__ +UChar mmed3 ( UChar a, UChar b, UChar c ) +{ + UChar t; + if (a > b) { t = a; a = b; b = t; }; + if (b > c) { + b = c; + if (a > b) b = a; + } + return b; +} + +#define mmin(a,b) ((a) < (b)) ? (a) : (b) + +#define mpush(lz,hz,dz) { stackLo[sp] = lz; \ + stackHi[sp] = hz; \ + stackD [sp] = dz; \ + sp++; } + +#define mpop(lz,hz,dz) { sp--; \ + lz = stackLo[sp]; \ + hz = stackHi[sp]; \ + dz = stackD [sp]; } + + +#define mnextsize(az) (nextHi[az]-nextLo[az]) + +#define mnextswap(az,bz) \ + { Int32 tz; \ + tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \ + tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \ + tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; } + + +#define MAIN_QSORT_SMALL_THRESH 20 +#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) +#define MAIN_QSORT_STACK_SIZE 100 + +static +void mainQSort3 ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + Int32 nblock, + Int32 loSt, + Int32 hiSt, + Int32 dSt, + Int32* budget ) +{ + Int32 unLo, unHi, ltLo, gtHi, n, m, med; + Int32 sp, lo, hi, d; + + Int32 stackLo[MAIN_QSORT_STACK_SIZE]; + Int32 stackHi[MAIN_QSORT_STACK_SIZE]; + Int32 stackD [MAIN_QSORT_STACK_SIZE]; + + Int32 nextLo[3]; + Int32 nextHi[3]; + Int32 nextD [3]; + + sp = 0; + mpush ( loSt, hiSt, dSt ); + + while (sp > 0) { + + AssertH ( sp < MAIN_QSORT_STACK_SIZE, 1001 ); + + mpop ( lo, hi, d ); + if (hi - lo < MAIN_QSORT_SMALL_THRESH || + d > MAIN_QSORT_DEPTH_THRESH) { + mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget ); + if (*budget < 0) return; + continue; + } + + med = (Int32) + mmed3 ( block[ptr[ lo ]+d], + block[ptr[ hi ]+d], + block[ptr[ (lo+hi)>>1 ]+d] ); + + unLo = ltLo = lo; + unHi = gtHi = hi; + + while (True) { + while (True) { + if (unLo > unHi) break; + n = ((Int32)block[ptr[unLo]+d]) - med; + if (n == 0) { + mswap(ptr[unLo], ptr[ltLo]); + ltLo++; unLo++; continue; + }; + if (n > 0) break; + unLo++; + } + while (True) { + if (unLo > unHi) break; + n = ((Int32)block[ptr[unHi]+d]) - med; + if (n == 0) { + mswap(ptr[unHi], ptr[gtHi]); + gtHi--; unHi--; continue; + }; + if (n < 0) break; + unHi--; + } + if (unLo > unHi) break; + mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--; + } + + AssertD ( unHi == unLo-1, "mainQSort3(2)" ); + + if (gtHi < ltLo) { + mpush(lo, hi, d+1 ); + continue; + } + + n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n); + m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m); + + n = lo + unLo - ltLo - 1; + m = hi - (gtHi - unHi) + 1; + + nextLo[0] = lo; nextHi[0] = n; nextD[0] = d; + nextLo[1] = m; nextHi[1] = hi; nextD[1] = d; + nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1; + + if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); + if (mnextsize(1) < mnextsize(2)) mnextswap(1,2); + if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); + + AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" ); + AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" ); + + mpush (nextLo[0], nextHi[0], nextD[0]); + mpush (nextLo[1], nextHi[1], nextD[1]); + mpush (nextLo[2], nextHi[2], nextD[2]); + } +} + +#undef mswap +#undef mvswap +#undef mpush +#undef mpop +#undef mmin +#undef mnextsize +#undef mnextswap +#undef MAIN_QSORT_SMALL_THRESH +#undef MAIN_QSORT_DEPTH_THRESH +#undef MAIN_QSORT_STACK_SIZE + + +/*---------------------------------------------*/ +/* Pre: + nblock > N_OVERSHOOT + block32 exists for [0 .. nblock-1 +N_OVERSHOOT] + ((UChar*)block32) [0 .. nblock-1] holds block + ptr exists for [0 .. nblock-1] + + Post: + ((UChar*)block32) [0 .. nblock-1] holds block + All other areas of block32 destroyed + ftab [0 .. 65536 ] destroyed + ptr [0 .. nblock-1] holds sorted order + if (*budget < 0), sorting was abandoned +*/ + +#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8]) +#define SETMASK (1 << 21) +#define CLEARMASK (~(SETMASK)) + +static +void mainSort ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + UInt32* ftab, + Int32 nblock, + Int32 verb, + Int32* budget ) +{ + Int32 i, j, k, ss, sb; + Int32 runningOrder[256]; + Bool bigDone[256]; + Int32 copyStart[256]; + Int32 copyEnd [256]; + UChar c1; + Int32 numQSorted; + UInt16 s; + if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" ); + + /*-- set up the 2-byte frequency table --*/ + for (i = 65536; i >= 0; i--) ftab[i] = 0; + + j = block[0] << 8; + i = nblock-1; + for (; i >= 3; i -= 4) { + quadrant[i] = 0; + j = (j >> 8) | ( ((UInt16)block[i]) << 8); + ftab[j]++; + quadrant[i-1] = 0; + j = (j >> 8) | ( ((UInt16)block[i-1]) << 8); + ftab[j]++; + quadrant[i-2] = 0; + j = (j >> 8) | ( ((UInt16)block[i-2]) << 8); + ftab[j]++; + quadrant[i-3] = 0; + j = (j >> 8) | ( ((UInt16)block[i-3]) << 8); + ftab[j]++; + } + for (; i >= 0; i--) { + quadrant[i] = 0; + j = (j >> 8) | ( ((UInt16)block[i]) << 8); + ftab[j]++; + } + + /*-- (emphasises close relationship of block & quadrant) --*/ + for (i = 0; i < BZ_N_OVERSHOOT; i++) { + block [nblock+i] = block[i]; + quadrant[nblock+i] = 0; + } + + if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" ); + + /*-- Complete the initial radix sort --*/ + for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1]; + + s = block[0] << 8; + i = nblock-1; + for (; i >= 3; i -= 4) { + s = (s >> 8) | (block[i] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i; + s = (s >> 8) | (block[i-1] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-1; + s = (s >> 8) | (block[i-2] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-2; + s = (s >> 8) | (block[i-3] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-3; + } + for (; i >= 0; i--) { + s = (s >> 8) | (block[i] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i; + } + + /*-- + Now ftab contains the first loc of every small bucket. + Calculate the running order, from smallest to largest + big bucket. + --*/ + for (i = 0; i <= 255; i++) { + bigDone [i] = False; + runningOrder[i] = i; + } + + { + Int32 vv; + Int32 h = 1; + do h = 3 * h + 1; while (h <= 256); + do { + h = h / 3; + for (i = h; i <= 255; i++) { + vv = runningOrder[i]; + j = i; + while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) { + runningOrder[j] = runningOrder[j-h]; + j = j - h; + if (j <= (h - 1)) goto zero; + } + zero: + runningOrder[j] = vv; + } + } while (h != 1); + } + + /*-- + The main sorting loop. + --*/ + + numQSorted = 0; + + for (i = 0; i <= 255; i++) { + + /*-- + Process big buckets, starting with the least full. + Basically this is a 3-step process in which we call + mainQSort3 to sort the small buckets [ss, j], but + also make a big effort to avoid the calls if we can. + --*/ + ss = runningOrder[i]; + + /*-- + Step 1: + Complete the big bucket [ss] by quicksorting + any unsorted small buckets [ss, j], for j != ss. + Hopefully previous pointer-scanning phases have already + completed many of the small buckets [ss, j], so + we don't have to sort them at all. + --*/ + for (j = 0; j <= 255; j++) { + if (j != ss) { + sb = (ss << 8) + j; + if ( ! (ftab[sb] & SETMASK) ) { + Int32 lo = ftab[sb] & CLEARMASK; + Int32 hi = (ftab[sb+1] & CLEARMASK) - 1; + if (hi > lo) { + if (verb >= 4) + VPrintf4 ( " qsort [0x%x, 0x%x] " + "done %d this %d\n", + ss, j, numQSorted, hi - lo + 1 ); + mainQSort3 ( + ptr, block, quadrant, nblock, + lo, hi, BZ_N_RADIX, budget + ); + numQSorted += (hi - lo + 1); + if (*budget < 0) return; + } + } + ftab[sb] |= SETMASK; + } + } + + AssertH ( !bigDone[ss], 1006 ); + + /*-- + Step 2: + Now scan this big bucket [ss] so as to synthesise the + sorted order for small buckets [t, ss] for all t, + including, magically, the bucket [ss,ss] too. + This will avoid doing Real Work in subsequent Step 1's. + --*/ + { + for (j = 0; j <= 255; j++) { + copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK; + copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; + } + for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { + k = ptr[j]-1; if (k < 0) k += nblock; + c1 = block[k]; + if (!bigDone[c1]) + ptr[ copyStart[c1]++ ] = k; + } + for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { + k = ptr[j]-1; if (k < 0) k += nblock; + c1 = block[k]; + if (!bigDone[c1]) + ptr[ copyEnd[c1]-- ] = k; + } + } + + AssertH ( (copyStart[ss]-1 == copyEnd[ss]) + || + /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1. + Necessity for this case is demonstrated by compressing + a sequence of approximately 48.5 million of character + 251; 1.0.0/1.0.1 will then die here. */ + (copyStart[ss] == 0 && copyEnd[ss] == nblock-1), + 1007 ) + + for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK; + + /*-- + Step 3: + The [ss] big bucket is now done. Record this fact, + and update the quadrant descriptors. Remember to + update quadrants in the overshoot area too, if + necessary. The "if (i < 255)" test merely skips + this updating for the last bucket processed, since + updating for the last bucket is pointless. + + The quadrant array provides a way to incrementally + cache sort orderings, as they appear, so as to + make subsequent comparisons in fullGtU() complete + faster. For repetitive blocks this makes a big + difference (but not big enough to be able to avoid + the fallback sorting mechanism, exponential radix sort). + + The precise meaning is: at all times: + + for 0 <= i < nblock and 0 <= j <= nblock + + if block[i] != block[j], + + then the relative values of quadrant[i] and + quadrant[j] are meaningless. + + else { + if quadrant[i] < quadrant[j] + then the string starting at i lexicographically + precedes the string starting at j + + else if quadrant[i] > quadrant[j] + then the string starting at j lexicographically + precedes the string starting at i + + else + the relative ordering of the strings starting + at i and j has not yet been determined. + } + --*/ + bigDone[ss] = True; + + if (i < 255) { + Int32 bbStart = ftab[ss << 8] & CLEARMASK; + Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart; + Int32 shifts = 0; + + while ((bbSize >> shifts) > 65534) shifts++; + + for (j = bbSize-1; j >= 0; j--) { + Int32 a2update = ptr[bbStart + j]; + UInt16 qVal = (UInt16)(j >> shifts); + quadrant[a2update] = qVal; + if (a2update < BZ_N_OVERSHOOT) + quadrant[a2update + nblock] = qVal; + } + AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 ); + } + + } + + if (verb >= 4) + VPrintf3 ( " %d pointers, %d sorted, %d scanned\n", + nblock, numQSorted, nblock - numQSorted ); +} + +#undef BIGFREQ +#undef SETMASK +#undef CLEARMASK + + +/*---------------------------------------------*/ +/* Pre: + nblock > 0 + arr2 exists for [0 .. nblock-1 +N_OVERSHOOT] + ((UChar*)arr2) [0 .. nblock-1] holds block + arr1 exists for [0 .. nblock-1] + + Post: + ((UChar*)arr2) [0 .. nblock-1] holds block + All other areas of block destroyed + ftab [ 0 .. 65536 ] destroyed + arr1 [0 .. nblock-1] holds sorted order +*/ +void BZ2_blockSort ( EState* s ) +{ + UInt32* ptr = s->ptr; + UChar* block = s->block; + UInt32* ftab = s->ftab; + Int32 nblock = s->nblock; + Int32 verb = s->verbosity; + Int32 wfact = s->workFactor; + UInt16* quadrant; + Int32 budget; + Int32 budgetInit; + Int32 i; + + if (nblock < /* 10000 */1000 ) { + fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); + } else { + /* Calculate the location for quadrant, remembering to get + the alignment right. Assumes that &(block[0]) is at least + 2-byte aligned -- this should be ok since block is really + the first section of arr2. + */ + i = nblock+BZ_N_OVERSHOOT; + if (i & 1) i++; + quadrant = (UInt16*)(&(block[i])); + + /* (wfact-1) / 3 puts the default-factor-30 + transition point at very roughly the same place as + with v0.1 and v0.9.0. + Not that it particularly matters any more, since the + resulting compressed stream is now the same regardless + of whether or not we use the main sort or fallback sort. + */ + if (wfact < 1 ) wfact = 1; + if (wfact > 100) wfact = 100; + budgetInit = nblock * ((wfact-1) / 3); + budget = budgetInit; + + mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget ); + if (0 && verb >= 3) + VPrintf3 ( " %d work, %d block, ratio %5.2f\n", + budgetInit - budget, + nblock, + (float)(budgetInit - budget) / + (float)(nblock==0 ? 1 : nblock) ); + if (budget < 0) { + if (verb >= 2) + VPrintf0 ( " too repetitive; using fallback" + " sorting algorithm\n" ); + fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); + } + } + + s->origPtr = -1; + for (i = 0; i < s->nblock; i++) + if (ptr[i] == 0) + { s->origPtr = i; break; }; + + AssertH( s->origPtr != -1, 1003 ); +} + + +/*-------------------------------------------------------------*/ +/*--- end blocksort.c ---*/ +/*-------------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/*--- Huffman coding low-level stuff ---*/ +/*--- huffman.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + + +/*---------------------------------------------------*/ +#define WEIGHTOF(zz0) ((zz0) & 0xffffff00) +#define DEPTHOF(zz1) ((zz1) & 0x000000ff) +#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) + +#define ADDWEIGHTS(zw1,zw2) \ + (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ + (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) + +#define UPHEAP(z) \ +{ \ + Int32 zz, tmp; \ + zz = z; tmp = heap[zz]; \ + while (weight[tmp] < weight[heap[zz >> 1]]) { \ + heap[zz] = heap[zz >> 1]; \ + zz >>= 1; \ + } \ + heap[zz] = tmp; \ +} + +#define DOWNHEAP(z) \ +{ \ + Int32 zz, yy, tmp; \ + zz = z; tmp = heap[zz]; \ + while (True) { \ + yy = zz << 1; \ + if (yy > nHeap) break; \ + if (yy < nHeap && \ + weight[heap[yy+1]] < weight[heap[yy]]) \ + yy++; \ + if (weight[tmp] < weight[heap[yy]]) break; \ + heap[zz] = heap[yy]; \ + zz = yy; \ + } \ + heap[zz] = tmp; \ +} + + +/*---------------------------------------------------*/ +void BZ2_hbMakeCodeLengths ( UChar *len, + Int32 *freq, + Int32 alphaSize, + Int32 maxLen ) +{ + /*-- + Nodes and heap entries run from 1. Entry 0 + for both the heap and nodes is a sentinel. + --*/ + Int32 nNodes, nHeap, n1, n2, i, j, k; + Bool tooLong; + + Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; + Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; + Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; + + for (i = 0; i < alphaSize; i++) + weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; + + while (True) { + + nNodes = alphaSize; + nHeap = 0; + + heap[0] = 0; + weight[0] = 0; + parent[0] = -2; + + for (i = 1; i <= alphaSize; i++) { + parent[i] = -1; + nHeap++; + heap[nHeap] = i; + UPHEAP(nHeap); + } + + AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); + + while (nHeap > 1) { + n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); + n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); + nNodes++; + parent[n1] = parent[n2] = nNodes; + weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); + parent[nNodes] = -1; + nHeap++; + heap[nHeap] = nNodes; + UPHEAP(nHeap); + } + + AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); + + tooLong = False; + for (i = 1; i <= alphaSize; i++) { + j = 0; + k = i; + while (parent[k] >= 0) { k = parent[k]; j++; } + len[i-1] = j; + if (j > maxLen) tooLong = True; + } + + if (! tooLong) break; + + /* 17 Oct 04: keep-going condition for the following loop used + to be 'i < alphaSize', which missed the last element, + theoretically leading to the possibility of the compressor + looping. However, this count-scaling step is only needed if + one of the generated Huffman code words is longer than + maxLen, which up to and including version 1.0.2 was 20 bits, + which is extremely unlikely. In version 1.0.3 maxLen was + changed to 17 bits, which has minimal effect on compression + ratio, but does mean this scaling step is used from time to + time, enough to verify that it works. + + This means that bzip2-1.0.3 and later will only produce + Huffman codes with a maximum length of 17 bits. However, in + order to preserve backwards compatibility with bitstreams + produced by versions pre-1.0.3, the decompressor must still + handle lengths of up to 20. */ + + for (i = 1; i <= alphaSize; i++) { + j = weight[i] >> 8; + j = 1 + (j / 2); + weight[i] = j << 8; + } + } +} + + +/*---------------------------------------------------*/ +void BZ2_hbAssignCodes ( Int32 *code, + UChar *length, + Int32 minLen, + Int32 maxLen, + Int32 alphaSize ) +{ + Int32 n, vec, i; + + vec = 0; + for (n = minLen; n <= maxLen; n++) { + for (i = 0; i < alphaSize; i++) + if (length[i] == n) { code[i] = vec; vec++; }; + vec <<= 1; + } +} + + +/*---------------------------------------------------*/ +void BZ2_hbCreateDecodeTables ( Int32 *limit, + Int32 *base, + Int32 *perm, + UChar *length, + Int32 minLen, + Int32 maxLen, + Int32 alphaSize ) +{ + Int32 pp, i, j, vec; + + pp = 0; + for (i = minLen; i <= maxLen; i++) + for (j = 0; j < alphaSize; j++) + if (length[j] == i) { perm[pp] = j; pp++; }; + + for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; + for (i = 0; i < alphaSize; i++) base[length[i]+1]++; + + for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; + + for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; + vec = 0; + + for (i = minLen; i <= maxLen; i++) { + vec += (base[i+1] - base[i]); + limit[i] = vec-1; + vec <<= 1; + } + for (i = minLen + 1; i <= maxLen; i++) + base[i] = ((limit[i-1] + 1) << 1) - base[i]; +} + + +/*-------------------------------------------------------------*/ +/*--- end huffman.c ---*/ +/*-------------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/*--- Compression machinery (not incl block sorting) ---*/ +/*--- compress.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + +/*-- + CHANGES + ~~~~~~~ + 0.9.0 -- original version. + + 0.9.0a/b -- no changes in this file. + + 0.9.0c + * changed setting of nGroups in sendMTFValues() so as to + do a bit better on small files +--*/ + + + +/*---------------------------------------------------*/ +/*--- Bit stream I/O ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +void BZ2_bsInitWrite ( EState* s ) +{ + s->bsLive = 0; + s->bsBuff = 0; +} + + +/*---------------------------------------------------*/ +static +void bsFinishWrite ( EState* s ) +{ + while (s->bsLive > 0) { + s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); + s->numZ++; + s->bsBuff <<= 8; + s->bsLive -= 8; + } +} + + +/*---------------------------------------------------*/ +#define bsNEEDW(nz) \ +{ \ + while (s->bsLive >= 8) { \ + s->zbits[s->numZ] \ + = (UChar)(s->bsBuff >> 24); \ + s->numZ++; \ + s->bsBuff <<= 8; \ + s->bsLive -= 8; \ + } \ +} + + +/*---------------------------------------------------*/ +static +__inline__ +void bsW ( EState* s, Int32 n, UInt32 v ) +{ + bsNEEDW ( n ); + s->bsBuff |= (v << (32 - s->bsLive - n)); + s->bsLive += n; +} + + +/*---------------------------------------------------*/ +static +void bsPutUInt32 ( EState* s, UInt32 u ) +{ + bsW ( s, 8, (u >> 24) & 0xffL ); + bsW ( s, 8, (u >> 16) & 0xffL ); + bsW ( s, 8, (u >> 8) & 0xffL ); + bsW ( s, 8, u & 0xffL ); +} + + +/*---------------------------------------------------*/ +static +void bsPutUChar ( EState* s, UChar c ) +{ + bsW( s, 8, (UInt32)c ); +} + + +/*---------------------------------------------------*/ +/*--- The back end proper ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +static +void makeMaps_e ( EState* s ) +{ + Int32 i; + s->nInUse = 0; + for (i = 0; i < 256; i++) + if (s->inUse[i]) { + s->unseqToSeq[i] = s->nInUse; + s->nInUse++; + } +} + + +/*---------------------------------------------------*/ +static +void generateMTFValues ( EState* s ) +{ + UChar yy[256]; + Int32 i, j; + Int32 zPend; + Int32 wr; + Int32 EOB; + + /* + After sorting (eg, here), + s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, + and + ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] + holds the original block data. + + The first thing to do is generate the MTF values, + and put them in + ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ]. + Because there are strictly fewer or equal MTF values + than block values, ptr values in this area are overwritten + with MTF values only when they are no longer needed. + + The final compressed bitstream is generated into the + area starting at + (UChar*) (&((UChar*)s->arr2)[s->nblock]) + + These storage aliases are set up in bzCompressInit(), + except for the last one, which is arranged in + compressBlock(). + */ + UInt32* ptr = s->ptr; + UChar* block = s->block; + UInt16* mtfv = s->mtfv; + + makeMaps_e ( s ); + EOB = s->nInUse+1; + + for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; + + wr = 0; + zPend = 0; + for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; + + for (i = 0; i < s->nblock; i++) { + UChar ll_i; + AssertD ( wr <= i, "generateMTFValues(1)" ); + j = ptr[i]-1; if (j < 0) j += s->nblock; + ll_i = s->unseqToSeq[block[j]]; + AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); + + if (yy[0] == ll_i) { + zPend++; + } else { + + if (zPend > 0) { + zPend--; + while (True) { + if (zPend & 1) { + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; + } else { + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; + } + if (zPend < 2) break; + zPend = (zPend - 2) / 2; + }; + zPend = 0; + } + { + register UChar rtmp; + register UChar* ryy_j; + register UChar rll_i; + rtmp = yy[1]; + yy[1] = yy[0]; + ryy_j = &(yy[1]); + rll_i = ll_i; + while ( rll_i != rtmp ) { + register UChar rtmp2; + ryy_j++; + rtmp2 = rtmp; + rtmp = *ryy_j; + *ryy_j = rtmp2; + }; + yy[0] = rtmp; + j = ryy_j - &(yy[0]); + mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; + } + + } + } + + if (zPend > 0) { + zPend--; + while (True) { + if (zPend & 1) { + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; + } else { + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; + } + if (zPend < 2) break; + zPend = (zPend - 2) / 2; + }; + zPend = 0; + } + + mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; + + s->nMTF = wr; +} + + +/*---------------------------------------------------*/ +#define BZ_LESSER_ICOST 0 +#define BZ_GREATER_ICOST 15 + +static +void sendMTFValues ( EState* s ) +{ + Int32 v, t, i, j, gs, ge, totc, bt, bc, iter; + Int32 nSelectors, alphaSize, minLen, maxLen, selCtr; + Int32 nGroups, nBytes; + + /*-- + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + is a global since the decoder also needs it. + + Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + are also globals only used in this proc. + Made global to keep stack frame size small. + --*/ + + + UInt16 cost[BZ_N_GROUPS]; + Int32 fave[BZ_N_GROUPS]; + + UInt16* mtfv = s->mtfv; + + if (s->verbosity >= 3) + VPrintf3( " %d in block, %d after MTF & 1-2 coding, " + "%d+2 syms in use\n", + s->nblock, s->nMTF, s->nInUse ); + + alphaSize = s->nInUse+2; + for (t = 0; t < BZ_N_GROUPS; t++) + for (v = 0; v < alphaSize; v++) + s->len[t][v] = BZ_GREATER_ICOST; + + /*--- Decide how many coding tables to use ---*/ + AssertH ( s->nMTF > 0, 3001 ); + if (s->nMTF < 200) nGroups = 2; else + if (s->nMTF < 600) nGroups = 3; else + if (s->nMTF < 1200) nGroups = 4; else + if (s->nMTF < 2400) nGroups = 5; else + nGroups = 6; + + /*--- Generate an initial set of coding tables ---*/ + { + Int32 nPart, remF, tFreq, aFreq; + + nPart = nGroups; + remF = s->nMTF; + gs = 0; + while (nPart > 0) { + tFreq = remF / nPart; + ge = gs-1; + aFreq = 0; + while (aFreq < tFreq && ge < alphaSize-1) { + ge++; + aFreq += s->mtfFreq[ge]; + } + + if (ge > gs + && nPart != nGroups && nPart != 1 + && ((nGroups-nPart) % 2 == 1)) { + aFreq -= s->mtfFreq[ge]; + ge--; + } + + if (0 && s->verbosity >= 3) + VPrintf5( " initial group %d, [%d .. %d], " + "has %d syms (%4.1f%%)\n", + nPart, gs, ge, aFreq, + (100.0 * (float)aFreq) / (float)(s->nMTF) ); + + for (v = 0; v < alphaSize; v++) + if (v >= gs && v <= ge) + s->len[nPart-1][v] = BZ_LESSER_ICOST; else + s->len[nPart-1][v] = BZ_GREATER_ICOST; + + nPart--; + gs = ge+1; + remF -= aFreq; + } + } + + /*--- + Iterate up to BZ_N_ITERS times to improve the tables. + ---*/ + for (iter = 0; iter < BZ_N_ITERS; iter++) { + + for (t = 0; t < nGroups; t++) fave[t] = 0; + + for (t = 0; t < nGroups; t++) + for (v = 0; v < alphaSize; v++) + s->rfreq[t][v] = 0; + + /*--- + Set up an auxiliary length table which is used to fast-track + the common case (nGroups == 6). + ---*/ + if (nGroups == 6) { + for (v = 0; v < alphaSize; v++) { + s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; + s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; + s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; + } + } + + nSelectors = 0; + totc = 0; + gs = 0; + while (True) { + + /*--- Set group start & end marks. --*/ + if (gs >= s->nMTF) break; + ge = gs + BZ_G_SIZE - 1; + if (ge >= s->nMTF) ge = s->nMTF-1; + + /*-- + Calculate the cost of this group as coded + by each of the coding tables. + --*/ + for (t = 0; t < nGroups; t++) cost[t] = 0; + + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + register UInt32 cost01, cost23, cost45; + register UInt16 icv; + cost01 = cost23 = cost45 = 0; + +# define BZ_ITER(nn) \ + icv = mtfv[gs+(nn)]; \ + cost01 += s->len_pack[icv][0]; \ + cost23 += s->len_pack[icv][1]; \ + cost45 += s->len_pack[icv][2]; \ + + BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4); + BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9); + BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14); + BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19); + BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24); + BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29); + BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34); + BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39); + BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44); + BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49); + +# undef BZ_ITER + + cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16; + cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16; + cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16; + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) { + UInt16 icv = mtfv[i]; + for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; + } + } + + /*-- + Find the coding table which is best for this group, + and record its identity in the selector table. + --*/ + bc = 999999999; bt = -1; + for (t = 0; t < nGroups; t++) + if (cost[t] < bc) { bc = cost[t]; bt = t; }; + totc += bc; + fave[bt]++; + s->selector[nSelectors] = bt; + nSelectors++; + + /*-- + Increment the symbol frequencies for the selected table. + --*/ + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + +# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ + + BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4); + BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9); + BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14); + BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19); + BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24); + BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29); + BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34); + BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39); + BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44); + BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49); + +# undef BZ_ITUR + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) + s->rfreq[bt][ mtfv[i] ]++; + } + + gs = ge+1; + } + if (s->verbosity >= 3) { + VPrintf2 ( " pass %d: size is %d, grp uses are ", + iter+1, totc/8 ); + for (t = 0; t < nGroups; t++) + VPrintf1 ( "%d ", fave[t] ); + VPrintf0 ( "\n" ); + } + + /*-- + Recompute the tables based on the accumulated frequencies. + --*/ + /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See + comment in huffman.c for details. */ + for (t = 0; t < nGroups; t++) + BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), + alphaSize, 17 /*20*/ ); + } + + + AssertH( nGroups < 8, 3002 ); + AssertH( nSelectors < 32768 && + nSelectors <= (2 + (900000 / BZ_G_SIZE)), + 3003 ); + + + /*--- Compute MTF values for the selectors. ---*/ + { + UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp; + for (i = 0; i < nGroups; i++) pos[i] = i; + for (i = 0; i < nSelectors; i++) { + ll_i = s->selector[i]; + j = 0; + tmp = pos[j]; + while ( ll_i != tmp ) { + j++; + tmp2 = tmp; + tmp = pos[j]; + pos[j] = tmp2; + }; + pos[0] = tmp; + s->selectorMtf[i] = j; + } + }; + + /*--- Assign actual codes for the tables. --*/ + for (t = 0; t < nGroups; t++) { + minLen = 32; + maxLen = 0; + for (i = 0; i < alphaSize; i++) { + if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; + if (s->len[t][i] < minLen) minLen = s->len[t][i]; + } + AssertH ( !(maxLen > 17 /*20*/ ), 3004 ); + AssertH ( !(minLen < 1), 3005 ); + BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), + minLen, maxLen, alphaSize ); + } + + /*--- Transmit the mapping table. ---*/ + { + Bool inUse16[16]; + for (i = 0; i < 16; i++) { + inUse16[i] = False; + for (j = 0; j < 16; j++) + if (s->inUse[i * 16 + j]) inUse16[i] = True; + } + + nBytes = s->numZ; + for (i = 0; i < 16; i++) + if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); + + for (i = 0; i < 16; i++) + if (inUse16[i]) + for (j = 0; j < 16; j++) { + if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); + } + + if (s->verbosity >= 3) + VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); + } + + /*--- Now the selectors. ---*/ + nBytes = s->numZ; + bsW ( s, 3, nGroups ); + bsW ( s, 15, nSelectors ); + for (i = 0; i < nSelectors; i++) { + for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); + bsW(s,1,0); + } + if (s->verbosity >= 3) + VPrintf1( "selectors %d, ", s->numZ-nBytes ); + + /*--- Now the coding tables. ---*/ + nBytes = s->numZ; + + for (t = 0; t < nGroups; t++) { + Int32 curr = s->len[t][0]; + bsW ( s, 5, curr ); + for (i = 0; i < alphaSize; i++) { + while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; + while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; + bsW ( s, 1, 0 ); + } + } + + if (s->verbosity >= 3) + VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); + + /*--- And finally, the block data proper ---*/ + nBytes = s->numZ; + selCtr = 0; + gs = 0; + while (True) { + if (gs >= s->nMTF) break; + ge = gs + BZ_G_SIZE - 1; + if (ge >= s->nMTF) ge = s->nMTF-1; + AssertH ( s->selector[selCtr] < nGroups, 3006 ); + + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + UInt16 mtfv_i; + UChar* s_len_sel_selCtr + = &(s->len[s->selector[selCtr]][0]); + Int32* s_code_sel_selCtr + = &(s->code[s->selector[selCtr]][0]); + +# define BZ_ITAH(nn) \ + mtfv_i = mtfv[gs+(nn)]; \ + bsW ( s, \ + s_len_sel_selCtr[mtfv_i], \ + s_code_sel_selCtr[mtfv_i] ) + + BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4); + BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9); + BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14); + BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19); + BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24); + BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29); + BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34); + BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39); + BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44); + BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49); + +# undef BZ_ITAH + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) { + bsW ( s, + s->len [s->selector[selCtr]] [mtfv[i]], + s->code [s->selector[selCtr]] [mtfv[i]] ); + } + } + + + gs = ge+1; + selCtr++; + } + AssertH( selCtr == nSelectors, 3007 ); + + if (s->verbosity >= 3) + VPrintf1( "codes %d\n", s->numZ-nBytes ); +} + + +/*---------------------------------------------------*/ +void BZ2_compressBlock ( EState* s, Bool is_last_block ) +{ + if (s->nblock > 0) { + + BZ_FINALISE_CRC ( s->blockCRC ); + s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); + s->combinedCRC ^= s->blockCRC; + if (s->blockNo > 1) s->numZ = 0; + + if (s->verbosity >= 2) + VPrintf4( " block %d: crc = 0x%08x, " + "combined CRC = 0x%08x, size = %d\n", + s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); + + BZ2_blockSort ( s ); + } + + s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); + + /*-- If this is the first block, create the stream header. --*/ + if (s->blockNo == 1) { + BZ2_bsInitWrite ( s ); + bsPutUChar ( s, BZ_HDR_B ); + bsPutUChar ( s, BZ_HDR_Z ); + bsPutUChar ( s, BZ_HDR_h ); + bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); + } + + if (s->nblock > 0) { + + bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); + bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); + bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); + + /*-- Now the block's CRC, so it is in a known place. --*/ + bsPutUInt32 ( s, s->blockCRC ); + + /*-- + Now a single bit indicating (non-)randomisation. + As of version 0.9.5, we use a better sorting algorithm + which makes randomisation unnecessary. So always set + the randomised bit to 'no'. Of course, the decoder + still needs to be able to handle randomised blocks + so as to maintain backwards compatibility with + older versions of bzip2. + --*/ + bsW(s,1,0); + + bsW ( s, 24, s->origPtr ); + generateMTFValues ( s ); + sendMTFValues ( s ); + } + + + /*-- If this is the last block, add the stream trailer. --*/ + if (is_last_block) { + + bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); + bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); + bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); + bsPutUInt32 ( s, s->combinedCRC ); + if (s->verbosity >= 2) + VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC ); + bsFinishWrite ( s ); + } +} + + +/*-------------------------------------------------------------*/ +/*--- end compress.c ---*/ +/*-------------------------------------------------------------*/ + + +/*-------------------------------------------------------------*/ +/*--- Table for randomising repetitive blocks ---*/ +/*--- randtable.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + + + +/*---------------------------------------------*/ +Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, + 936, 638 +}; + + +/*-------------------------------------------------------------*/ +/*--- end randtable.c ---*/ +/*-------------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/*--- Table for doing CRCs ---*/ +/*--- crctable.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + + + + + +/*-- + I think this is an implementation of the AUTODIN-II, + Ethernet & FDDI 32-bit CRC standard. Vaguely derived + from code by Rob Warnock, in Section 51 of the + comp.compression FAQ. +--*/ + +UInt32 BZ2_crc32Table[256] = { + + /*-- Ugly, innit? --*/ + + 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, + 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, + 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, + 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, + 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, + 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, + 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, + 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, + 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, + 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, + 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, + 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, + 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, + 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, + 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, + 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, + 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, + 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, + 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, + 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, + 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, + 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, + 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, + 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, + 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, + 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, + 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, + 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, + 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, + 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, + 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, + 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, + 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, + 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, + 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, + 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, + 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, + 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, + 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, + 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, + 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, + 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, + 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, + 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, + 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, + 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, + 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, + 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, + 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, + 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, + 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, + 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, + 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, + 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, + 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, + 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, + 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, + 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, + 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, + 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, + 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, + 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, + 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, + 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L +}; + + +/*-------------------------------------------------------------*/ +/*--- end crctable.c ---*/ +/*-------------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/*--- Library top-level functions. ---*/ +/*--- bzlib.c ---*/ +/*-------------------------------------------------------------*/ + +/*-- + This file is a part of bzip2 and/or libbzip2, a program and + library for lossless, block-sorting data compression. + + Copyright (C) 1996-2004 Julian R Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@bzip.org + bzip2/libbzip2 version 1.0 of 21 March 2000 + + This program is based on (at least) the work of: + Mike Burrows + David Wheeler + Peter Fenwick + Alistair Moffat + Radford Neal + Ian H. Witten + Robert Sedgewick + Jon L. Bentley + + For more information on these sources, see the manual. +--*/ + +/*-- + CHANGES + ~~~~~~~ + 0.9.0 -- original version. + + 0.9.0a/b -- no changes in this file. + + 0.9.0c + * made zero-length BZ_FLUSH work correctly in bzCompress(). + * fixed bzWrite/bzRead to ignore zero-length requests. + * fixed bzread to correctly handle read requests after EOF. + * wrong parameter order in call to bzDecompressInit in + bzBuffToBuffDecompress. Fixed. +--*/ + + + +/*---------------------------------------------------*/ +/*--- Compression stuff ---*/ +/*---------------------------------------------------*/ + + +/*---------------------------------------------------*/ +void BZ2_bz__AssertH__fail ( int errcode ) +{ + vex_printf("BZ2_bz__AssertH__fail(%d) called, exiting\n", errcode); + (*serviceFn)(0,0); +} + +void bz_internal_error ( int errcode ) +{ + vex_printf("bz_internal_error called, exiting\n", errcode); + (*serviceFn)(0,0); +} + +/*---------------------------------------------------*/ +static +int bz_config_ok ( void ) +{ + if (sizeof(int) != 4) return 0; + if (sizeof(short) != 2) return 0; + if (sizeof(char) != 1) return 0; + return 1; +} + + +/*---------------------------------------------------*/ +static +void* default_bzalloc ( void* opaque, Int32 items, Int32 size ) +{ + void* v = (void*) (*serviceFn)(2, items * size ); + return v; +} + +static +void default_bzfree ( void* opaque, void* addr ) +{ + if (addr != NULL) (*serviceFn)( 3, (HWord)addr ); +} + + +/*---------------------------------------------------*/ +static +void prepare_new_block ( EState* s ) +{ + Int32 i; + s->nblock = 0; + s->numZ = 0; + s->state_out_pos = 0; + BZ_INITIALISE_CRC ( s->blockCRC ); + for (i = 0; i < 256; i++) s->inUse[i] = False; + s->blockNo++; +} + + +/*---------------------------------------------------*/ +static +void init_RL ( EState* s ) +{ + s->state_in_ch = 256; + s->state_in_len = 0; +} + + +static +Bool isempty_RL ( EState* s ) +{ + if (s->state_in_ch < 256 && s->state_in_len > 0) + return False; else + return True; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompressInit) + ( bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor ) +{ + Int32 n; + EState* s; + + if (!bz_config_ok()) return BZ_CONFIG_ERROR; + + if (strm == NULL || + blockSize100k < 1 || blockSize100k > 9 || + workFactor < 0 || workFactor > 250) + return BZ_PARAM_ERROR; + + if (workFactor == 0) workFactor = 30; + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + + s = BZALLOC( sizeof(EState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + + s->arr1 = NULL; + s->arr2 = NULL; + s->ftab = NULL; + + n = 100000 * blockSize100k; + s->arr1 = BZALLOC( n * sizeof(UInt32) ); + s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); + s->ftab = BZALLOC( 65537 * sizeof(UInt32) ); + + if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { + if (s->arr1 != NULL) BZFREE(s->arr1); + if (s->arr2 != NULL) BZFREE(s->arr2); + if (s->ftab != NULL) BZFREE(s->ftab); + if (s != NULL) BZFREE(s); + return BZ_MEM_ERROR; + } + + s->blockNo = 0; + s->state = BZ_S_INPUT; + s->mode = BZ_M_RUNNING; + s->combinedCRC = 0; + s->blockSize100k = blockSize100k; + s->nblockMAX = 100000 * blockSize100k - 19; + s->verbosity = verbosity; + s->workFactor = workFactor; + + s->block = (UChar*)s->arr2; + s->mtfv = (UInt16*)s->arr1; + s->zbits = NULL; + s->ptr = (UInt32*)s->arr1; + + strm->state = s; + strm->total_in_lo32 = 0; + strm->total_in_hi32 = 0; + strm->total_out_lo32 = 0; + strm->total_out_hi32 = 0; + init_RL ( s ); + prepare_new_block ( s ); + return BZ_OK; +} + + +/*---------------------------------------------------*/ +static +void add_pair_to_block ( EState* s ) +{ + Int32 i; + UChar ch = (UChar)(s->state_in_ch); + for (i = 0; i < s->state_in_len; i++) { + BZ_UPDATE_CRC( s->blockCRC, ch ); + } + s->inUse[s->state_in_ch] = True; + switch (s->state_in_len) { + case 1: + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + case 2: + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + case 3: + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + default: + s->inUse[s->state_in_len-4] = True; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = ((UChar)(s->state_in_len-4)); + s->nblock++; + break; + } +} + + +/*---------------------------------------------------*/ +static +void flush_RL ( EState* s ) +{ + if (s->state_in_ch < 256) add_pair_to_block ( s ); + init_RL ( s ); +} + + +/*---------------------------------------------------*/ +#define ADD_CHAR_TO_BLOCK(zs,zchh0) \ +{ \ + UInt32 zchh = (UInt32)(zchh0); \ + /*-- fast track the common case --*/ \ + if (zchh != zs->state_in_ch && \ + zs->state_in_len == 1) { \ + UChar ch = (UChar)(zs->state_in_ch); \ + BZ_UPDATE_CRC( zs->blockCRC, ch ); \ + zs->inUse[zs->state_in_ch] = True; \ + zs->block[zs->nblock] = (UChar)ch; \ + zs->nblock++; \ + zs->state_in_ch = zchh; \ + } \ + else \ + /*-- general, uncommon cases --*/ \ + if (zchh != zs->state_in_ch || \ + zs->state_in_len == 255) { \ + if (zs->state_in_ch < 256) \ + add_pair_to_block ( zs ); \ + zs->state_in_ch = zchh; \ + zs->state_in_len = 1; \ + } else { \ + zs->state_in_len++; \ + } \ +} + + +/*---------------------------------------------------*/ +static +Bool copy_input_until_stop ( EState* s ) +{ + Bool progress_in = False; + + if (s->mode == BZ_M_RUNNING) { + + /*-- fast track the common case --*/ + while (True) { + /*-- block full? --*/ + if (s->nblock >= s->nblockMAX) break; + /*-- no input? --*/ + if (s->strm->avail_in == 0) break; + progress_in = True; + ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); + s->strm->next_in++; + s->strm->avail_in--; + s->strm->total_in_lo32++; + if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; + } + + } else { + + /*-- general, uncommon case --*/ + while (True) { + /*-- block full? --*/ + if (s->nblock >= s->nblockMAX) break; + /*-- no input? --*/ + if (s->strm->avail_in == 0) break; + /*-- flush/finish end? --*/ + if (s->avail_in_expect == 0) break; + progress_in = True; + ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); + s->strm->next_in++; + s->strm->avail_in--; + s->strm->total_in_lo32++; + if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; + s->avail_in_expect--; + } + } + return progress_in; +} + + +/*---------------------------------------------------*/ +static +Bool copy_output_until_stop ( EState* s ) +{ + Bool progress_out = False; + + while (True) { + + /*-- no output space? --*/ + if (s->strm->avail_out == 0) break; + + /*-- block done? --*/ + if (s->state_out_pos >= s->numZ) break; + + progress_out = True; + *(s->strm->next_out) = s->zbits[s->state_out_pos]; + s->state_out_pos++; + s->strm->avail_out--; + s->strm->next_out++; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + return progress_out; +} + + +/*---------------------------------------------------*/ +static +Bool handle_compress ( bz_stream* strm ) +{ + Bool progress_in = False; + Bool progress_out = False; + EState* s = strm->state; + + while (True) { + + if (s->state == BZ_S_OUTPUT) { + progress_out |= copy_output_until_stop ( s ); + if (s->state_out_pos < s->numZ) break; + if (s->mode == BZ_M_FINISHING && + s->avail_in_expect == 0 && + isempty_RL(s)) break; + prepare_new_block ( s ); + s->state = BZ_S_INPUT; + if (s->mode == BZ_M_FLUSHING && + s->avail_in_expect == 0 && + isempty_RL(s)) break; + } + + if (s->state == BZ_S_INPUT) { + progress_in |= copy_input_until_stop ( s ); + if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) { + flush_RL ( s ); + BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) ); + s->state = BZ_S_OUTPUT; + } + else + if (s->nblock >= s->nblockMAX) { + BZ2_compressBlock ( s, False ); + s->state = BZ_S_OUTPUT; + } + else + if (s->strm->avail_in == 0) { + break; + } + } + + } + + return progress_in || progress_out; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) +{ + Bool progress; + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + preswitch: + switch (s->mode) { + + case BZ_M_IDLE: + return BZ_SEQUENCE_ERROR; + + case BZ_M_RUNNING: + if (action == BZ_RUN) { + progress = handle_compress ( strm ); + return progress ? BZ_RUN_OK : BZ_PARAM_ERROR; + } + else + if (action == BZ_FLUSH) { + s->avail_in_expect = strm->avail_in; + s->mode = BZ_M_FLUSHING; + goto preswitch; + } + else + if (action == BZ_FINISH) { + s->avail_in_expect = strm->avail_in; + s->mode = BZ_M_FINISHING; + goto preswitch; + } + else + return BZ_PARAM_ERROR; + + case BZ_M_FLUSHING: + if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect != s->strm->avail_in) + return BZ_SEQUENCE_ERROR; + progress = handle_compress ( strm ); + if (s->avail_in_expect > 0 || !isempty_RL(s) || + s->state_out_pos < s->numZ) return BZ_FLUSH_OK; + s->mode = BZ_M_RUNNING; + return BZ_RUN_OK; + + case BZ_M_FINISHING: + if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect != s->strm->avail_in) + return BZ_SEQUENCE_ERROR; + progress = handle_compress ( strm ); + if (!progress) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect > 0 || !isempty_RL(s) || + s->state_out_pos < s->numZ) return BZ_FINISH_OK; + s->mode = BZ_M_IDLE; + return BZ_STREAM_END; + } + return BZ_OK; /*--not reached--*/ +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) +{ + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + if (s->arr1 != NULL) BZFREE(s->arr1); + if (s->arr2 != NULL) BZFREE(s->arr2); + if (s->ftab != NULL) BZFREE(s->ftab); + BZFREE(strm->state); + + strm->state = NULL; + + return BZ_OK; +} + + +/*---------------------------------------------------*/ +/*--- Decompression stuff ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompressInit) + ( bz_stream* strm, + int verbosity, + int small ) +{ + DState* s; + + if (!bz_config_ok()) return BZ_CONFIG_ERROR; + + if (strm == NULL) return BZ_PARAM_ERROR; + if (small != 0 && small != 1) return BZ_PARAM_ERROR; + if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR; + + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + + s = BZALLOC( sizeof(DState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + strm->state = s; + s->state = BZ_X_MAGIC_1; + s->bsLive = 0; + s->bsBuff = 0; + s->calculatedCombinedCRC = 0; + strm->total_in_lo32 = 0; + strm->total_in_hi32 = 0; + strm->total_out_lo32 = 0; + strm->total_out_hi32 = 0; + s->smallDecompress = (Bool)small; + s->ll4 = NULL; + s->ll16 = NULL; + s->tt = NULL; + s->currBlockNo = 0; + s->verbosity = verbosity; + + return BZ_OK; +} + + +/*---------------------------------------------------*/ +/* Return True iff data corruption is discovered. + Returns False if there is no problem. +*/ +static +Bool unRLE_obuf_to_output_FAST ( DState* s ) +{ + UChar k1; + + if (s->blockRandomised) { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; + s->k0 ^= BZ_RAND_MASK; s->nblock_used++; + } + + } else { + + /* restore */ + UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC; + UChar c_state_out_ch = s->state_out_ch; + Int32 c_state_out_len = s->state_out_len; + Int32 c_nblock_used = s->nblock_used; + Int32 c_k0 = s->k0; + UInt32* c_tt = s->tt; + UInt32 c_tPos = s->tPos; + char* cs_next_out = s->strm->next_out; + unsigned int cs_avail_out = s->strm->avail_out; + /* end restore */ + + UInt32 avail_out_INIT = cs_avail_out; + Int32 s_save_nblockPP = s->save_nblock+1; + unsigned int total_out_lo32_old; + + while (True) { + + /* try to finish existing run */ + if (c_state_out_len > 0) { + while (True) { + if (cs_avail_out == 0) goto return_notr; + if (c_state_out_len == 1) break; + *( (UChar*)(cs_next_out) ) = c_state_out_ch; + BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); + c_state_out_len--; + cs_next_out++; + cs_avail_out--; + } + s_state_out_len_eq_one: + { + if (cs_avail_out == 0) { + c_state_out_len = 1; goto return_notr; + }; + *( (UChar*)(cs_next_out) ) = c_state_out_ch; + BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); + cs_next_out++; + cs_avail_out--; + } + } + /* Only caused by corrupt data stream? */ + if (c_nblock_used > s_save_nblockPP) + return True; + + /* can a new run be started? */ + if (c_nblock_used == s_save_nblockPP) { + c_state_out_len = 0; goto return_notr; + }; + c_state_out_ch = c_k0; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (k1 != c_k0) { + c_k0 = k1; goto s_state_out_len_eq_one; + }; + if (c_nblock_used == s_save_nblockPP) + goto s_state_out_len_eq_one; + + c_state_out_len = 2; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (c_nblock_used == s_save_nblockPP) continue; + if (k1 != c_k0) { c_k0 = k1; continue; }; + + c_state_out_len = 3; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (c_nblock_used == s_save_nblockPP) continue; + if (k1 != c_k0) { c_k0 = k1; continue; }; + + BZ_GET_FAST_C(k1); c_nblock_used++; + c_state_out_len = ((Int32)k1) + 4; + BZ_GET_FAST_C(c_k0); c_nblock_used++; + } + + return_notr: + total_out_lo32_old = s->strm->total_out_lo32; + s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out); + if (s->strm->total_out_lo32 < total_out_lo32_old) + s->strm->total_out_hi32++; + + /* save */ + s->calculatedBlockCRC = c_calculatedBlockCRC; + s->state_out_ch = c_state_out_ch; + s->state_out_len = c_state_out_len; + s->nblock_used = c_nblock_used; + s->k0 = c_k0; + s->tt = c_tt; + s->tPos = c_tPos; + s->strm->next_out = cs_next_out; + s->strm->avail_out = cs_avail_out; + /* end save */ + } + return False; +} + + + +/*---------------------------------------------------*/ +/* Return True iff data corruption is discovered. + Returns False if there is no problem. +*/ +static +Bool unRLE_obuf_to_output_SMALL ( DState* s ) +{ + UChar k1; + + if (s->blockRandomised) { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; + s->k0 ^= BZ_RAND_MASK; s->nblock_used++; + } + + } else { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_SMALL(k1); s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_SMALL(s->k0); s->nblock_used++; + } + + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) +{ + Bool corrupt; + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + while (True) { + if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; + if (s->state == BZ_X_OUTPUT) { + if (s->smallDecompress) + corrupt = unRLE_obuf_to_output_SMALL ( s ); else + corrupt = unRLE_obuf_to_output_FAST ( s ); + if (corrupt) return BZ_DATA_ERROR; + if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { + BZ_FINALISE_CRC ( s->calculatedBlockCRC ); + if (s->verbosity >= 3) + VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, + s->calculatedBlockCRC ); + if (s->verbosity >= 2) VPrintf0 ( "]" ); + if (s->calculatedBlockCRC != s->storedBlockCRC) + return BZ_DATA_ERROR; + s->calculatedCombinedCRC + = (s->calculatedCombinedCRC << 1) | + (s->calculatedCombinedCRC >> 31); + s->calculatedCombinedCRC ^= s->calculatedBlockCRC; + s->state = BZ_X_BLKHDR_1; + } else { + return BZ_OK; + } + } + if (s->state >= BZ_X_MAGIC_1) { + Int32 r = BZ2_decompress ( s ); + if (r == BZ_STREAM_END) { + if (s->verbosity >= 3) + VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x", + s->storedCombinedCRC, s->calculatedCombinedCRC ); + if (s->calculatedCombinedCRC != s->storedCombinedCRC) + return BZ_DATA_ERROR; + return r; + } + if (s->state != BZ_X_OUTPUT) return r; + } + } + + AssertH ( 0, 6001 ); + + return 0; /*NOTREACHED*/ +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) +{ + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + if (s->tt != NULL) BZFREE(s->tt); + if (s->ll16 != NULL) BZFREE(s->ll16); + if (s->ll4 != NULL) BZFREE(s->ll4); + + BZFREE(strm->state); + strm->state = NULL; + + return BZ_OK; +} + + +#ifndef BZ_NO_STDIO +/*---------------------------------------------------*/ +/*--- File I/O stuff ---*/ +/*---------------------------------------------------*/ + +#define BZ_SETERR(eee) \ +{ \ + if (bzerror != NULL) *bzerror = eee; \ + if (bzf != NULL) bzf->lastErr = eee; \ +} + +typedef + struct { + FILE* handle; + Char buf[BZ_MAX_UNUSED]; + Int32 bufN; + Bool writing; + bz_stream strm; + Int32 lastErr; + Bool initialisedOk; + } + bzFile; + + +/*---------------------------------------------*/ +static Bool myfeof ( FILE* f ) +{ + Int32 c = fgetc ( f ); + if (c == EOF) return True; + ungetc ( c, f ); + return False; +} + + +/*---------------------------------------------------*/ +BZFILE* BZ_API(BZ2_bzWriteOpen) + ( int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor ) +{ + Int32 ret; + bzFile* bzf = NULL; + + BZ_SETERR(BZ_OK); + + if (f == NULL || + (blockSize100k < 1 || blockSize100k > 9) || + (workFactor < 0 || workFactor > 250) || + (verbosity < 0 || verbosity > 4)) + { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; + + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + + bzf = malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + + BZ_SETERR(BZ_OK); + bzf->initialisedOk = False; + bzf->bufN = 0; + bzf->handle = f; + bzf->writing = True; + bzf->strm.bzalloc = NULL; + bzf->strm.bzfree = NULL; + bzf->strm.opaque = NULL; + + if (workFactor == 0) workFactor = 30; + ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, + verbosity, workFactor ); + if (ret != BZ_OK) + { BZ_SETERR(ret); free(bzf); return NULL; }; + + bzf->strm.avail_in = 0; + bzf->initialisedOk = True; + return bzf; +} + + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzWrite) + ( int* bzerror, + BZFILE* b, + void* buf, + int len ) +{ + Int32 n, n2, ret; + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + if (bzf == NULL || buf == NULL || len < 0) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + if (!(bzf->writing)) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + + if (len == 0) + { BZ_SETERR(BZ_OK); return; }; + + bzf->strm.avail_in = len; + bzf->strm.next_in = buf; + + while (True) { + bzf->strm.avail_out = BZ_MAX_UNUSED; + bzf->strm.next_out = bzf->buf; + ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN ); + if (ret != BZ_RUN_OK) + { BZ_SETERR(ret); return; }; + + if (bzf->strm.avail_out < BZ_MAX_UNUSED) { + n = BZ_MAX_UNUSED - bzf->strm.avail_out; + n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), + n, bzf->handle ); + if (n != n2 || ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (bzf->strm.avail_in == 0) + { BZ_SETERR(BZ_OK); return; }; + } +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzWriteClose) + ( int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out ) +{ + BZ2_bzWriteClose64 ( bzerror, b, abandon, + nbytes_in, NULL, nbytes_out, NULL ); +} + + +void BZ_API(BZ2_bzWriteClose64) + ( int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 ) +{ + Int32 n, n2, ret; + bzFile* bzf = (bzFile*)b; + + if (bzf == NULL) + { BZ_SETERR(BZ_OK); return; }; + if (!(bzf->writing)) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + + if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0; + if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0; + if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0; + if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0; + + if ((!abandon) && bzf->lastErr == BZ_OK) { + while (True) { + bzf->strm.avail_out = BZ_MAX_UNUSED; + bzf->strm.next_out = bzf->buf; + ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH ); + if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END) + { BZ_SETERR(ret); return; }; + + if (bzf->strm.avail_out < BZ_MAX_UNUSED) { + n = BZ_MAX_UNUSED - bzf->strm.avail_out; + n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), + n, bzf->handle ); + if (n != n2 || ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (ret == BZ_STREAM_END) break; + } + } + + if ( !abandon && !ferror ( bzf->handle ) ) { + fflush ( bzf->handle ); + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (nbytes_in_lo32 != NULL) + *nbytes_in_lo32 = bzf->strm.total_in_lo32; + if (nbytes_in_hi32 != NULL) + *nbytes_in_hi32 = bzf->strm.total_in_hi32; + if (nbytes_out_lo32 != NULL) + *nbytes_out_lo32 = bzf->strm.total_out_lo32; + if (nbytes_out_hi32 != NULL) + *nbytes_out_hi32 = bzf->strm.total_out_hi32; + + BZ_SETERR(BZ_OK); + BZ2_bzCompressEnd ( &(bzf->strm) ); + free ( bzf ); +} + + +/*---------------------------------------------------*/ +BZFILE* BZ_API(BZ2_bzReadOpen) + ( int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused ) +{ + bzFile* bzf = NULL; + int ret; + + BZ_SETERR(BZ_OK); + + if (f == NULL || + (small != 0 && small != 1) || + (verbosity < 0 || verbosity > 4) || + (unused == NULL && nUnused != 0) || + (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED))) + { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; + + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + + bzf = malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + + BZ_SETERR(BZ_OK); + + bzf->initialisedOk = False; + bzf->handle = f; + bzf->bufN = 0; + bzf->writing = False; + bzf->strm.bzalloc = NULL; + bzf->strm.bzfree = NULL; + bzf->strm.opaque = NULL; + + while (nUnused > 0) { + bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++; + unused = ((void*)( 1 + ((UChar*)(unused)) )); + nUnused--; + } + + ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small ); + if (ret != BZ_OK) + { BZ_SETERR(ret); free(bzf); return NULL; }; + + bzf->strm.avail_in = bzf->bufN; + bzf->strm.next_in = bzf->buf; + + bzf->initialisedOk = True; + return bzf; +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b ) +{ + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + if (bzf == NULL) + { BZ_SETERR(BZ_OK); return; }; + + if (bzf->writing) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + + if (bzf->initialisedOk) + (void)BZ2_bzDecompressEnd ( &(bzf->strm) ); + free ( bzf ); +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzRead) + ( int* bzerror, + BZFILE* b, + void* buf, + int len ) +{ + Int32 n, ret; + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + + if (bzf == NULL || buf == NULL || len < 0) + { BZ_SETERR(BZ_PARAM_ERROR); return 0; }; + + if (bzf->writing) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; }; + + if (len == 0) + { BZ_SETERR(BZ_OK); return 0; }; + + bzf->strm.avail_out = len; + bzf->strm.next_out = buf; + + while (True) { + + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return 0; }; + + if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) { + n = fread ( bzf->buf, sizeof(UChar), + BZ_MAX_UNUSED, bzf->handle ); + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return 0; }; + bzf->bufN = n; + bzf->strm.avail_in = bzf->bufN; + bzf->strm.next_in = bzf->buf; + } + + ret = BZ2_bzDecompress ( &(bzf->strm) ); + + if (ret != BZ_OK && ret != BZ_STREAM_END) + { BZ_SETERR(ret); return 0; }; + + if (ret == BZ_OK && myfeof(bzf->handle) && + bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0) + { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; }; + + if (ret == BZ_STREAM_END) + { BZ_SETERR(BZ_STREAM_END); + return len - bzf->strm.avail_out; }; + if (bzf->strm.avail_out == 0) + { BZ_SETERR(BZ_OK); return len; }; + + } + + return 0; /*not reached*/ +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzReadGetUnused) + ( int* bzerror, + BZFILE* b, + void** unused, + int* nUnused ) +{ + bzFile* bzf = (bzFile*)b; + if (bzf == NULL) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + if (bzf->lastErr != BZ_STREAM_END) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (unused == NULL || nUnused == NULL) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + + BZ_SETERR(BZ_OK); + *nUnused = bzf->strm.avail_in; + *unused = bzf->strm.next_in; +} +#endif + + +/*---------------------------------------------------*/ +/*--- Misc convenience stuff ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzBuffToBuffCompress) + ( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor ) +{ + bz_stream strm; + int ret; + + if (dest == NULL || destLen == NULL || + source == NULL || + blockSize100k < 1 || blockSize100k > 9 || + verbosity < 0 || verbosity > 4 || + workFactor < 0 || workFactor > 250) + return BZ_PARAM_ERROR; + + if (workFactor == 0) workFactor = 30; + strm.bzalloc = NULL; + strm.bzfree = NULL; + strm.opaque = NULL; + ret = BZ2_bzCompressInit ( &strm, blockSize100k, + verbosity, workFactor ); + if (ret != BZ_OK) return ret; + + strm.next_in = source; + strm.next_out = dest; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + + ret = BZ2_bzCompress ( &strm, BZ_FINISH ); + if (ret == BZ_FINISH_OK) goto output_overflow; + if (ret != BZ_STREAM_END) goto errhandler; + + /* normal termination */ + *destLen -= strm.avail_out; + BZ2_bzCompressEnd ( &strm ); + return BZ_OK; + + output_overflow: + BZ2_bzCompressEnd ( &strm ); + return BZ_OUTBUFF_FULL; + + errhandler: + BZ2_bzCompressEnd ( &strm ); + return ret; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzBuffToBuffDecompress) + ( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity ) +{ + bz_stream strm; + int ret; + + if (dest == NULL || destLen == NULL || + source == NULL || + (small != 0 && small != 1) || + verbosity < 0 || verbosity > 4) + return BZ_PARAM_ERROR; + + strm.bzalloc = NULL; + strm.bzfree = NULL; + strm.opaque = NULL; + ret = BZ2_bzDecompressInit ( &strm, verbosity, small ); + if (ret != BZ_OK) return ret; + + strm.next_in = source; + strm.next_out = dest; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + + ret = BZ2_bzDecompress ( &strm ); + if (ret == BZ_OK) goto output_overflow_or_eof; + if (ret != BZ_STREAM_END) goto errhandler; + + /* normal termination */ + *destLen -= strm.avail_out; + BZ2_bzDecompressEnd ( &strm ); + return BZ_OK; + + output_overflow_or_eof: + if (strm.avail_out > 0) { + BZ2_bzDecompressEnd ( &strm ); + return BZ_UNEXPECTED_EOF; + } else { + BZ2_bzDecompressEnd ( &strm ); + return BZ_OUTBUFF_FULL; + }; + + errhandler: + BZ2_bzDecompressEnd ( &strm ); + return ret; +} + + +/*---------------------------------------------------*/ +/*-- + Code contributed by Yoshioka Tsuneo + (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +/*-- + return version like "0.9.0c". +--*/ +const char * BZ_API(BZ2_bzlibVersion)(void) +{ + return BZ_VERSION; +} + + +#ifndef BZ_NO_STDIO +/*---------------------------------------------------*/ + +#if defined(_WIN32) || defined(OS2) || defined(MSDOS) +# include +# include +# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY) +#else +# define SET_BINARY_MODE(file) +#endif +static +BZFILE * bzopen_or_bzdopen + ( const char *path, /* no use when bzdopen */ + int fd, /* no use when bzdopen */ + const char *mode, + int open_mode) /* bzopen: 0, bzdopen:1 */ +{ + int bzerr; + char unused[BZ_MAX_UNUSED]; + int blockSize100k = 9; + int writing = 0; + char mode2[10] = ""; + FILE *fp = NULL; + BZFILE *bzfp = NULL; + int verbosity = 0; + int workFactor = 30; + int smallMode = 0; + int nUnused = 0; + + if (mode == NULL) return NULL; + while (*mode) { + switch (*mode) { + case 'r': + writing = 0; break; + case 'w': + writing = 1; break; + case 's': + smallMode = 1; break; + default: + if (isdigit((int)(*mode))) { + blockSize100k = *mode-BZ_HDR_0; + } + } + mode++; + } + strcat(mode2, writing ? "w" : "r" ); + strcat(mode2,"b"); /* binary mode */ + + if (open_mode==0) { + if (path==NULL || strcmp(path,"")==0) { + fp = (writing ? stdout : stdin); + SET_BINARY_MODE(fp); + } else { + fp = fopen(path,mode2); + } + } else { +#ifdef BZ_STRICT_ANSI + fp = NULL; +#else + fp = fdopen(fd,mode2); +#endif + } + if (fp == NULL) return NULL; + + if (writing) { + /* Guard against total chaos and anarchy -- JRS */ + if (blockSize100k < 1) blockSize100k = 1; + if (blockSize100k > 9) blockSize100k = 9; + bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k, + verbosity,workFactor); + } else { + bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode, + unused,nUnused); + } + if (bzfp == NULL) { + if (fp != stdin && fp != stdout) fclose(fp); + return NULL; + } + return bzfp; +} + + +/*---------------------------------------------------*/ +/*-- + open file for read or write. + ex) bzopen("file","w9") + case path="" or NULL => use stdin or stdout. +--*/ +BZFILE * BZ_API(BZ2_bzopen) + ( const char *path, + const char *mode ) +{ + return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0); +} + + +/*---------------------------------------------------*/ +BZFILE * BZ_API(BZ2_bzdopen) + ( int fd, + const char *mode ) +{ + return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1); +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len ) +{ + int bzerr, nread; + if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0; + nread = BZ2_bzRead(&bzerr,b,buf,len); + if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) { + return nread; + } else { + return -1; + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len ) +{ + int bzerr; + + BZ2_bzWrite(&bzerr,b,buf,len); + if(bzerr == BZ_OK){ + return len; + }else{ + return -1; + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzflush) (BZFILE *b) +{ + /* do nothing now... */ + return 0; +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzclose) (BZFILE* b) +{ + int bzerr; + FILE *fp = ((bzFile *)b)->handle; + + if (b==NULL) {return;} + if(((bzFile*)b)->writing){ + BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL); + if(bzerr != BZ_OK){ + BZ2_bzWriteClose(NULL,b,1,NULL,NULL); + } + }else{ + BZ2_bzReadClose(&bzerr,b); + } + if(fp!=stdin && fp!=stdout){ + fclose(fp); + } +} + + +/*---------------------------------------------------*/ +/*-- + return last error code +--*/ +static char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"CONFIG_ERROR" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; + + +const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum) +{ + int err = ((bzFile *)b)->lastErr; + + if(err>0) err = 0; + *errnum = err; + return bzerrorstrings[err*-1]; +} +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib.c ---*/ +/*-------------------------------------------------------------*/ + + +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// + + +/* A test program written to test robustness to decompression of + corrupted data. Usage is + unzcrash filename + and the program will read the specified file, compress it (in memory), + and then repeatedly decompress it, each time with a different bit of + the compressed data inverted, so as to test all possible one-bit errors. + This should not cause any invalid memory accesses. If it does, + I want to know about it! + + p.s. As you can see from the above description, the process is + incredibly slow. A file of size eg 5KB will cause it to run for + many hours. +*/ + +//#include +//#include +//#include "bzlib.h" + +#define M_BLOCK 1000000 + + +#define M_BLOCK_OUT (M_BLOCK + 1000000) + char inbuf[M_BLOCK]; + char outbuf[M_BLOCK_OUT]; + char zbuf[M_BLOCK + 600 + (M_BLOCK / 100)]; + +int nIn; +unsigned int nOut; +unsigned int nZ; + +#if 0 +static char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; +#endif + +void flip_bit ( int bit ) +{ + int byteno = bit / 8; + int bitno = bit % 8; + UChar mask = 1 << bitno; + //fprintf ( stderr, "(byte %d bit %d mask %d)", + // byteno, bitno, (int)mask ); + zbuf[byteno] ^= mask; +} + +void set_inbuf ( void ) +{ + inbuf[0] = 0; + my_strcat(inbuf, "At her sixtieth birthday party, Margaret Thatcher "); + my_strcat(inbuf, "blew on the cake to light the candles.\n"); + my_strcat(inbuf, "This program, bzip2, the associated library libbzip2, and all\n"); + my_strcat(inbuf, "documentation, are copyright (C) 1996-2004 Julian R Seward. All\n"); + my_strcat(inbuf, "rights reserved.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "Redistribution and use in source and binary forms, with or without\n"); + my_strcat(inbuf, "modification, are permitted provided that the following conditions\n"); + my_strcat(inbuf, "are met:\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "1. Redistributions of source code must retain the above copyright\n"); + my_strcat(inbuf, " notice, this list of conditions and the following disclaimer.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "2. The origin of this software must not be misrepresented; you must\n"); + my_strcat(inbuf, " not claim that you wrote the original software. If you use this\n"); + my_strcat(inbuf, " software in a product, an acknowledgment in the product\n"); + my_strcat(inbuf, " documentation would be appreciated but is not required.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "3. Altered source versions must be plainly marked as such, and must\n"); + my_strcat(inbuf, " not be misrepresented as being the original software.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "4. The name of the author may not be used to endorse or promote\n"); + my_strcat(inbuf, " products derived from this software without specific prior written\n"); + my_strcat(inbuf, " permission.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS\n"); + my_strcat(inbuf, "OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n"); + my_strcat(inbuf, "WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"); + my_strcat(inbuf, "ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\n"); + my_strcat(inbuf, "DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n"); + my_strcat(inbuf, "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n"); + my_strcat(inbuf, "GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n"); + my_strcat(inbuf, "INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n"); + my_strcat(inbuf, "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n"); + my_strcat(inbuf, "NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n"); + my_strcat(inbuf, "SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, "ababababababababababababababababababababababababababababababab"); + my_strcat(inbuf, " GNU GENERAL PUBLIC LICENSE\n"); + my_strcat(inbuf, " Version 2, June 1991\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n"); + my_strcat(inbuf, " 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n"); + my_strcat(inbuf, " Everyone is permitted to copy and distribute verbatim copies\n"); + my_strcat(inbuf, " of this license document, but changing it is not allowed.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Preamble\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " The licenses for most software are designed to take away your\n"); + my_strcat(inbuf, "freedom to share and change it. By contrast, the GNU General Public\n"); + my_strcat(inbuf, "License is intended to guarantee your freedom to share and change free\n"); + my_strcat(inbuf, "software--to make sure the software is free for all its users. This\n"); + my_strcat(inbuf, "General Public License applies to most of the Free Software\n"); + my_strcat(inbuf, "Foundation's software and to any other program whose authors commit to\n"); + my_strcat(inbuf, "using it. (Some other Free Software Foundation software is covered by\n"); + my_strcat(inbuf, "the GNU Library General Public License instead.) You can apply it to\n"); + my_strcat(inbuf, "your programs, too.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " When we speak of free software, we are referring to freedom, not\n"); + my_strcat(inbuf, "price. Our General Public Licenses are designed to make sure that you\n"); + my_strcat(inbuf, "have the freedom to distribute copies of free software (and charge for\n"); + my_strcat(inbuf, "this service if you wish), that you receive source code or can get it\n"); + my_strcat(inbuf, "if you want it, that you can change the software or use pieces of it\n"); + my_strcat(inbuf, "in new free programs; and that you know you can do these things.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " To protect your rights, we need to make restrictions that forbid\n"); + my_strcat(inbuf, "anyone to deny you these rights or to ask you to surrender the rights.\n"); + my_strcat(inbuf, "These restrictions translate to certain responsibilities for you if you\n"); + my_strcat(inbuf, "distribute copies of the software, or if you modify it.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " For example, if you distribute copies of such a program, whether\n"); + my_strcat(inbuf, "gratis or for a fee, you must give the recipients all the rights that\n"); + my_strcat(inbuf, "you have. You must make sure that they, too, receive or can get the\n"); + my_strcat(inbuf, "source code. And you must show them these terms so they know their\n"); + my_strcat(inbuf, "rights.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " We protect your rights with two steps: (1) copyright the software, and\n"); + my_strcat(inbuf, "(2) offer you this license which gives you legal permission to copy,\n"); + my_strcat(inbuf, "distribute and/or modify the software.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Also, for each author's protection and ours, we want to make certain\n"); + my_strcat(inbuf, "that everyone understands that there is no warranty for this free\n"); + my_strcat(inbuf, "software. If the software is modified by someone else and passed on, we\n"); + my_strcat(inbuf, "want its recipients to know that what they have is not the original, so\n"); + my_strcat(inbuf, "that any problems introduced by others will not reflect on the original\n"); + my_strcat(inbuf, "authors' reputations.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Finally, any free program is threatened constantly by software\n"); + my_strcat(inbuf, "patents. We wish to avoid the danger that redistributors of a free\n"); + my_strcat(inbuf, "program will individually obtain patent licenses, in effect making the\n"); + my_strcat(inbuf, "program proprietary. To prevent this, we have made it clear that any\n"); + my_strcat(inbuf, "patent must be licensed for everyone's free use or not licensed at all.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " The precise terms and conditions for copying, distribution and\n"); + my_strcat(inbuf, "modification follow.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " GNU GENERAL PUBLIC LICENSE\n"); + my_strcat(inbuf, " TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 0. This License applies to any program or other work which contains\n"); + my_strcat(inbuf, "a notice placed by the copyright holder saying it may be distributed\n"); + my_strcat(inbuf, "under the terms of this General Public License. The Program, below,\n"); + my_strcat(inbuf, "refers to any such program or work, and a work based on the Program\n"); + my_strcat(inbuf, "means either the Program or any derivative work under copyright law:\n"); + my_strcat(inbuf, "that is to say, a work containing the Program or a portion of it,\n"); + my_strcat(inbuf, "either verbatim or with modifications and/or translated into another\n"); + my_strcat(inbuf, "language. (Hereinafter, translation is included without limitation in\n"); + my_strcat(inbuf, "the term modification.) Each licensee is addressed as you.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "Activities other than copying, distribution and modification are not\n"); + my_strcat(inbuf, "covered by this License; they are outside its scope. The act of\n"); + my_strcat(inbuf, "running the Program is not restricted, and the output from the Program\n"); + my_strcat(inbuf, "is covered only if its contents constitute a work based on the\n"); + my_strcat(inbuf, "Program (independent of having been made by running the Program).\n"); + my_strcat(inbuf, "Whether that is true depends on what the Program does.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 1. You may copy and distribute verbatim copies of the Program's\n"); + my_strcat(inbuf, "source code as you receive it, in any medium, provided that you\n"); + my_strcat(inbuf, "conspicuously and appropriately publish on each copy an appropriate\n"); + my_strcat(inbuf, "copyright notice and disclaimer of warranty; keep intact all the\n"); + my_strcat(inbuf, "notices that refer to this License and to the absence of any warranty;\n"); + my_strcat(inbuf, "and give any other recipients of the Program a copy of this License\n"); + my_strcat(inbuf, "along with the Program.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "You may charge a fee for the physical act of transferring a copy, and\n"); + my_strcat(inbuf, "you may at your option offer warranty protection in exchange for a fee.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 2. You may modify your copy or copies of the Program or any portion\n"); + my_strcat(inbuf, "of it, thus forming a work based on the Program, and copy and\n"); + my_strcat(inbuf, "distribute such modifications or work under the terms of Section 1\n"); + my_strcat(inbuf, "above, provided that you also meet all of these conditions:\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " a) You must cause the modified files to carry prominent notices\n"); + my_strcat(inbuf, " stating that you changed the files and the date of any change.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " b) You must cause any work that you distribute or publish, that in\n"); + my_strcat(inbuf, " whole or in part contains or is derived from the Program or any\n"); + my_strcat(inbuf, " part thereof, to be licensed as a whole at no charge to all third\n"); + my_strcat(inbuf, " parties under the terms of this License.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " c) If the modified program normally reads commands interactively\n"); + my_strcat(inbuf, " when run, you must cause it, when started running for such\n"); + my_strcat(inbuf, " interactive use in the most ordinary way, to print or display an\n"); + my_strcat(inbuf, " announcement including an appropriate copyright notice and a\n"); + my_strcat(inbuf, " notice that there is no warranty (or else, saying that you provide\n"); + my_strcat(inbuf, " a warranty) and that users may redistribute the program under\n"); + my_strcat(inbuf, " these conditions, and telling the user how to view a copy of this\n"); + my_strcat(inbuf, " License. (Exception: if the Program itself is interactive but\n"); + my_strcat(inbuf, " does not normally print such an announcement, your work based on\n"); + my_strcat(inbuf, " the Program is not required to print an announcement.)\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "These requirements apply to the modified work as a whole. If\n"); + my_strcat(inbuf, "identifiable sections of that work are not derived from the Program,\n"); + my_strcat(inbuf, "and can be reasonably considered independent and separate works in\n"); + my_strcat(inbuf, "themselves, then this License, and its terms, do not apply to those\n"); + my_strcat(inbuf, "sections when you distribute them as separate works. But when you\n"); + my_strcat(inbuf, "distribute the same sections as part of a whole which is a work based\n"); + my_strcat(inbuf, "on the Program, the distribution of the whole must be on the terms of\n"); + my_strcat(inbuf, "this License, whose permissions for other licensees extend to the\n"); + my_strcat(inbuf, "entire whole, and thus to each and every part regardless of who wrote it.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "Thus, it is not the intent of this section to claim rights or contest\n"); + my_strcat(inbuf, "your rights to work written entirely by you; rather, the intent is to\n"); + my_strcat(inbuf, "exercise the right to control the distribution of derivative or\n"); + my_strcat(inbuf, "collective works based on the Program.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "In addition, mere aggregation of another work not based on the Program\n"); + my_strcat(inbuf, "with the Program (or with a work based on the Program) on a volume of\n"); + my_strcat(inbuf, "a storage or distribution medium does not bring the other work under\n"); + my_strcat(inbuf, "the scope of this License.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 3. You may copy and distribute the Program (or a work based on it,\n"); + my_strcat(inbuf, "under Section 2) in object code or executable form under the terms of\n"); + my_strcat(inbuf, "Sections 1 and 2 above provided that you also do one of the following:\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " a) Accompany it with the complete corresponding machine-readable\n"); + my_strcat(inbuf, " source code, which must be distributed under the terms of Sections\n"); + my_strcat(inbuf, " 1 and 2 above on a medium customarily used for software interchange; or,\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " b) Accompany it with a written offer, valid for at least three\n"); + my_strcat(inbuf, " years, to give any third party, for a charge no more than your\n"); + my_strcat(inbuf, " cost of physically performing source distribution, a complete\n"); + my_strcat(inbuf, " machine-readable copy of the corresponding source code, to be\n"); + my_strcat(inbuf, " distributed under the terms of Sections 1 and 2 above on a medium\n"); + my_strcat(inbuf, " customarily used for software interchange; or,\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " c) Accompany it with the information you received as to the offer\n"); + my_strcat(inbuf, " to distribute corresponding source code. (This alternative is\n"); + my_strcat(inbuf, " allowed only for noncommercial distribution and only if you\n"); + my_strcat(inbuf, " received the program in object code or executable form with such\n"); + my_strcat(inbuf, " an offer, in accord with Subsection b above.)\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "The source code for a work means the preferred form of the work for\n"); + my_strcat(inbuf, "making modifications to it. For an executable work, complete source\n"); + my_strcat(inbuf, "code means all the source code for all modules it contains, plus any\n"); + my_strcat(inbuf, "associated interface definition files, plus the scripts used to\n"); + my_strcat(inbuf, "control compilation and installation of the executable. However, as a\n"); + my_strcat(inbuf, "special exception, the source code distributed need not include\n"); + my_strcat(inbuf, "anything that is normally distributed (in either source or binary\n"); + my_strcat(inbuf, "form) with the major components (compiler, kernel, and so on) of the\n"); + my_strcat(inbuf, "operating system on which the executable runs, unless that component\n"); + my_strcat(inbuf, "itself accompanies the executable.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "If distribution of executable or object code is made by offering\n"); + my_strcat(inbuf, "access to copy from a designated place, then offering equivalent\n"); + my_strcat(inbuf, "access to copy the source code from the same place counts as\n"); + my_strcat(inbuf, "distribution of the source code, even though third parties are not\n"); + my_strcat(inbuf, "compelled to copy the source along with the object code.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 4. You may not copy, modify, sublicense, or distribute the Program\n"); + my_strcat(inbuf, "except as expressly provided under this License. Any attempt\n"); + my_strcat(inbuf, "otherwise to copy, modify, sublicense or distribute the Program is\n"); + my_strcat(inbuf, "void, and will automatically terminate your rights under this License.\n"); + my_strcat(inbuf, "However, parties who have received copies, or rights, from you under\n"); + my_strcat(inbuf, "this License will not have their licenses terminated so long as such\n"); + my_strcat(inbuf, "parties remain in full compliance.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 5. You are not required to accept this License, since you have not\n"); + my_strcat(inbuf, "signed it. However, nothing else grants you permission to modify or\n"); + my_strcat(inbuf, "distribute the Program or its derivative works. These actions are\n"); + my_strcat(inbuf, "prohibited by law if you do not accept this License. Therefore, by\n"); + my_strcat(inbuf, "modifying or distributing the Program (or any work based on the\n"); + my_strcat(inbuf, "Program), you indicate your acceptance of this License to do so, and\n"); + my_strcat(inbuf, "all its terms and conditions for copying, distributing or modifying\n"); + my_strcat(inbuf, "the Program or works based on it.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 6. Each time you redistribute the Program (or any work based on the\n"); + my_strcat(inbuf, "Program), the recipient automatically receives a license from the\n"); + my_strcat(inbuf, "original licensor to copy, distribute or modify the Program subject to\n"); + my_strcat(inbuf, "these terms and conditions. You may not impose any further\n"); + my_strcat(inbuf, "restrictions on the recipients' exercise of the rights granted herein.\n"); + my_strcat(inbuf, "You are not responsible for enforcing compliance by third parties to\n"); + my_strcat(inbuf, "this License.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 7. If, as a consequence of a court judgment or allegation of patent\n"); + my_strcat(inbuf, "infringement or for any other reason (not limited to patent issues),\n"); + my_strcat(inbuf, "conditions are imposed on you (whether by court order, agreement or\n"); + my_strcat(inbuf, "otherwise) that contradict the conditions of this License, they do not\n"); + my_strcat(inbuf, "excuse you from the conditions of this License. If you cannot\n"); + my_strcat(inbuf, "distribute so as to satisfy simultaneously your obligations under this\n"); + my_strcat(inbuf, "License and any other pertinent obligations, then as a consequence you\n"); + my_strcat(inbuf, "may not distribute the Program at all. For example, if a patent\n"); + my_strcat(inbuf, "license would not permit royalty-free redistribution of the Program by\n"); + my_strcat(inbuf, "all those who receive copies directly or indirectly through you, then\n"); + my_strcat(inbuf, "the only way you could satisfy both it and this License would be to\n"); + my_strcat(inbuf, "refrain entirely from distribution of the Program.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "If any portion of this section is held invalid or unenforceable under\n"); + my_strcat(inbuf, "any particular circumstance, the balance of the section is intended to\n"); + my_strcat(inbuf, "apply and the section as a whole is intended to apply in other\n"); + my_strcat(inbuf, "circumstances.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "It is not the purpose of this section to induce you to infringe any\n"); + my_strcat(inbuf, "patents or other property right claims or to contest validity of any\n"); + my_strcat(inbuf, "such claims; this section has the sole purpose of protecting the\n"); + my_strcat(inbuf, "integrity of the free software distribution system, which is\n"); + my_strcat(inbuf, "implemented by public license practices. Many people have made\n"); + my_strcat(inbuf, "generous contributions to the wide range of software distributed\n"); + my_strcat(inbuf, "through that system in reliance on consistent application of that\n"); + my_strcat(inbuf, "system; it is up to the author/donor to decide if he or she is willing\n"); + my_strcat(inbuf, "to distribute software through any other system and a licensee cannot\n"); + my_strcat(inbuf, "impose that choice.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "This section is intended to make thoroughly clear what is believed to\n"); + my_strcat(inbuf, "be a consequence of the rest of this License.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 8. If the distribution and/or use of the Program is restricted in\n"); + my_strcat(inbuf, "certain countries either by patents or by copyrighted interfaces, the\n"); + my_strcat(inbuf, "original copyright holder who places the Program under this License\n"); + my_strcat(inbuf, "may add an explicit geographical distribution limitation excluding\n"); + my_strcat(inbuf, "those countries, so that distribution is permitted only in or among\n"); + my_strcat(inbuf, "countries not thus excluded. In such case, this License incorporates\n"); + my_strcat(inbuf, "the limitation as if written in the body of this License.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 9. The Free Software Foundation may publish revised and/or new versions\n"); + my_strcat(inbuf, "of the General Public License from time to time. Such new versions will\n"); + my_strcat(inbuf, "be similar in spirit to the present version, but may differ in detail to\n"); + my_strcat(inbuf, "address new problems or concerns.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "Each version is given a distinguishing version number. If the Program\n"); + my_strcat(inbuf, "specifies a version number of this License which applies to it and any\n"); + my_strcat(inbuf, "later version, you have the option of following the terms and conditions\n"); + my_strcat(inbuf, "either of that version or of any later version published by the Free\n"); + my_strcat(inbuf, "Software Foundation. If the Program does not specify a version number of\n"); + my_strcat(inbuf, "this License, you may choose any version ever published by the Free Software\n"); + my_strcat(inbuf, "Foundation.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 10. If you wish to incorporate parts of the Program into other free\n"); + my_strcat(inbuf, "programs whose distribution conditions are different, write to the author\n"); + my_strcat(inbuf, "to ask for permission. For software which is copyrighted by the Free\n"); + my_strcat(inbuf, "Software Foundation, write to the Free Software Foundation; we sometimes\n"); + my_strcat(inbuf, "make exceptions for this. Our decision will be guided by the two goals\n"); + my_strcat(inbuf, "of preserving the free status of all derivatives of our free software and\n"); + my_strcat(inbuf, "of promoting the sharing and reuse of software generally.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " NO WARRANTY\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n"); + my_strcat(inbuf, "FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\n"); + my_strcat(inbuf, "OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n"); + my_strcat(inbuf, "PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n"); + my_strcat(inbuf, "OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"); + my_strcat(inbuf, "MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\n"); + my_strcat(inbuf, "TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\n"); + my_strcat(inbuf, "PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n"); + my_strcat(inbuf, "REPAIR OR CORRECTION.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n"); + my_strcat(inbuf, "WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n"); + my_strcat(inbuf, "REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n"); + my_strcat(inbuf, "INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n"); + my_strcat(inbuf, "OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n"); + my_strcat(inbuf, "TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n"); + my_strcat(inbuf, "YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n"); + my_strcat(inbuf, "PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n"); + my_strcat(inbuf, "POSSIBILITY OF SUCH DAMAGES.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " END OF TERMS AND CONDITIONS\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " How to Apply These Terms to Your New Programs\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " If you develop a new program, and you want it to be of the greatest\n"); + my_strcat(inbuf, "possible use to the public, the best way to achieve this is to make it\n"); + my_strcat(inbuf, "free software which everyone can redistribute and change under these terms.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " To do so, attach the following notices to the program. It is safest\n"); + my_strcat(inbuf, "to attach them to the start of each source file to most effectively\n"); + my_strcat(inbuf, "convey the exclusion of warranty; and each file should have at least\n"); + my_strcat(inbuf, "the copyright line and a pointer to where the full notice is found.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " \n"); + my_strcat(inbuf, " Copyright (C) \n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " This program is free software; you can redistribute it and/or modify\n"); + my_strcat(inbuf, " it under the terms of the GNU General Public License as published by\n"); + my_strcat(inbuf, " the Free Software Foundation; either version 2 of the License, or\n"); + my_strcat(inbuf, " (at your option) any later version.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " This program is distributed in the hope that it will be useful,\n"); + my_strcat(inbuf, " but WITHOUT ANY WARRANTY; without even the implied warranty of\n"); + my_strcat(inbuf, " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"); + my_strcat(inbuf, " GNU General Public License for more details.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " You should have received a copy of the GNU General Public License\n"); + my_strcat(inbuf, " along with this program; if not, write to the Free Software\n"); + my_strcat(inbuf, " Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "Also add information on how to contact you by electronic and paper mail.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "If the program is interactive, make it output a short notice like this\n"); + my_strcat(inbuf, "when it starts in an interactive mode:\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Gnomovision version 69, Copyright (C) year name of author\n"); + my_strcat(inbuf, " Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n"); + my_strcat(inbuf, " This is free software, and you are welcome to redistribute it\n"); + my_strcat(inbuf, " under certain conditions; type `show c' for details.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "The hypothetical commands `show w' and `show c' should show the appropriate\n"); + my_strcat(inbuf, "parts of the General Public License. Of course, the commands you use may\n"); + my_strcat(inbuf, "be called something other than `show w' and `show c'; they could even be\n"); + my_strcat(inbuf, "mouse-clicks or menu items--whatever suits your program.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "You should also get your employer (if you work as a programmer) or your\n"); + my_strcat(inbuf, "school, if any, to sign a copyright disclaimer for the program, if\n"); + my_strcat(inbuf, "necessary. Here is a sample; alter the names:\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n"); + my_strcat(inbuf, " `Gnomovision' (which makes passes at compilers) written by James Hacker.\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, " , 1 April 1989\n"); + my_strcat(inbuf, " Ty Coon, President of Vice\n"); + my_strcat(inbuf, "\n"); + my_strcat(inbuf, "This General Public License does not permit incorporating your program into\n"); + my_strcat(inbuf, "proprietary programs. If your program is a subroutine library, you may\n"); + my_strcat(inbuf, "consider it more useful to permit linking proprietary applications with the\n"); + my_strcat(inbuf, "library. If this is what you want to do, use the GNU Library General\n"); + my_strcat(inbuf, "Public License instead of this License.\n"); + + my_strcat(inbuf, "\n"); +} + +#include +#include + +/* For providing services. */ +static HWord g_serviceFn ( HWord arg1, HWord arg2 ) +{ + switch (arg1) { + case 0: /* EXIT */ + exit(0); + case 1: /* PUTC */ + putchar(arg2); + return 0; + case 2: /* MALLOC */ + return (HWord)malloc(arg2); + case 3: /* FREE */ + free((void*)arg2); + return 0; + default: + assert(0); + } +} + +static char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"CONFIG_ERROR" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; + +// If given a cmd line arg, behave as a correctness regtest +// (run fast and be verbose). If not, run for a long time +// which is what is needed for the performance suite. +int main ( int argc, char** argv ) +{ + int r; + int bit; + int i; + + int regtest; + assert(argc == 1 || argc == 2); + regtest = argc==2; + regtest = 1; + serviceFn = g_serviceFn; + + set_inbuf(); + nIn = vex_strlen(inbuf)+1; + vex_printf( "%d bytes read\n", nIn ); + + nZ = M_BLOCK; + r = BZ2_bzBuffToBuffCompress ( + zbuf, &nZ, inbuf, nIn, 9, 3/*verb*/, 30 ); + + if (r != BZ_OK) { + vex_printf("initial compress failed!\n"); + (*serviceFn)(0,0); + } + vex_printf( "%d after compression\n", nZ ); + + for (bit = 0; bit < nZ*8; bit += (bit < 35 ? 1 : (regtest?2377:137))) { + if (regtest) + vex_printf( "bit %d ", bit ); + flip_bit ( bit ); + nOut = M_BLOCK_OUT; + r = BZ2_bzBuffToBuffDecompress ( + outbuf, &nOut, zbuf, nZ, 1/*small*/, 0 ); + if (regtest) + vex_printf( " %d %s ", r, bzerrorstrings[-r] ); + + if (r != BZ_OK) { + if (regtest) + vex_printf( "\n" ); + } else { + if (nOut != nIn) { + vex_printf( "nIn/nOut mismatch %d %d\n", nIn, nOut ); + (*serviceFn)(0,0); + } else { + for (i = 0; i < nOut; i++) + if (inbuf[i] != outbuf[i]) { + vex_printf( "mismatch at %d\n", i ); + (*serviceFn)(0,0); + } + if (i == nOut) vex_printf( "really ok!\n" ); + } + } + + flip_bit ( bit ); + } + +#if 0 + assert (nOut == nIn); + for (i = 0; i < nOut; i++) { + if (inbuf[i] != outbuf[i]) { + vex_printf( "difference at %d !\n", i ); + return 1; + } + } +#endif + + vex_printf( "all ok\n" ); + (*serviceFn)(0,0); + /*NOTREACHED*/ + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stderr.exp-glibc28-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stderr.exp-glibc28-amd64 new file mode 100644 index 000000000..6ff30bd10 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stderr.exp-glibc28-amd64 @@ -0,0 +1,17 @@ + +Invalid read of size 1 + at 0x........: vex_strlen (hackedbz2.c:1006) + by 0x........: add_to_myprintf_buf (hackedbz2.c:1284) + by 0x........: vex_printf (hackedbz2.c:1155) + by 0x........: BZ2_compressBlock (hackedbz2.c:4039) + by 0x........: handle_compress (hackedbz2.c:4761) + by 0x........: BZ2_bzCompress (hackedbz2.c:4831) + by 0x........: BZ2_bzBuffToBuffCompress (hackedbz2.c:5638) + by 0x........: main (hackedbz2.c:6484) + Address 0x........ expected vs actual: + Expected: global array "myprintf_buf" of size 70 in object with soname "NONE" + Actual: unknown + Actual: is 0 after Expected + + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stdout.exp new file mode 100644 index 000000000..3bfc54ec5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.stdout.exp @@ -0,0 +1,70 @@ +22323 bytes read + block 1: crc = 0xA212ABF8, combined CRC = 0xA212ABF8, size = 22373 + too repetitive; using fallback sorting algorithm + 22373 in block, 13504 after MTF & 1-2 coding, 79+2 syms in use + pass 1: size is 17143, grp uses are 38 62 2 92 6 71 + pass 2: size is 6506, grp uses are 28 71 0 86 9 77 + pass 3: size is 6479, grp uses are 26 70 0 81 11 83 + pass 4: size is 6469, grp uses are 26 69 0 74 17 85 + bytes: mapping 19, selectors 66, code lengths 134, codes 6465 + final combined CRC = 0xA212ABF8 + 6710 after compression +bit 0 -5 DATA_ERROR_MAGIC +bit 1 -5 DATA_ERROR_MAGIC +bit 2 -5 DATA_ERROR_MAGIC +bit 3 -5 DATA_ERROR_MAGIC +bit 4 -5 DATA_ERROR_MAGIC +bit 5 -5 DATA_ERROR_MAGIC +bit 6 -5 DATA_ERROR_MAGIC +bit 7 -5 DATA_ERROR_MAGIC +bit 8 -5 DATA_ERROR_MAGIC +bit 9 -5 DATA_ERROR_MAGIC +bit 10 -5 DATA_ERROR_MAGIC +bit 11 -5 DATA_ERROR_MAGIC +bit 12 -5 DATA_ERROR_MAGIC +bit 13 -5 DATA_ERROR_MAGIC +bit 14 -5 DATA_ERROR_MAGIC +bit 15 -5 DATA_ERROR_MAGIC +bit 16 -5 DATA_ERROR_MAGIC +bit 17 -5 DATA_ERROR_MAGIC +bit 18 -5 DATA_ERROR_MAGIC +bit 19 -5 DATA_ERROR_MAGIC +bit 20 -5 DATA_ERROR_MAGIC +bit 21 -5 DATA_ERROR_MAGIC +bit 22 -5 DATA_ERROR_MAGIC +bit 23 -5 DATA_ERROR_MAGIC +bit 24 0 OK really ok! +bit 25 -5 DATA_ERROR_MAGIC +bit 26 -5 DATA_ERROR_MAGIC +bit 27 0 OK really ok! +bit 28 -5 DATA_ERROR_MAGIC +bit 29 -5 DATA_ERROR_MAGIC +bit 30 -5 DATA_ERROR_MAGIC +bit 31 -5 DATA_ERROR_MAGIC +bit 32 -4 DATA_ERROR +bit 33 -4 DATA_ERROR +bit 34 -4 DATA_ERROR +bit 35 -4 DATA_ERROR +bit 2412 -4 DATA_ERROR +bit 4789 -4 DATA_ERROR +bit 7166 -4 DATA_ERROR +bit 9543 -4 DATA_ERROR +bit 11920 -4 DATA_ERROR +bit 14297 -4 DATA_ERROR +bit 16674 -4 DATA_ERROR +bit 19051 -4 DATA_ERROR +bit 21428 -4 DATA_ERROR +bit 23805 -4 DATA_ERROR +bit 26182 -4 DATA_ERROR +bit 28559 -4 DATA_ERROR +bit 30936 -4 DATA_ERROR +bit 33313 -4 DATA_ERROR +bit 35690 -4 DATA_ERROR +bit 38067 -4 DATA_ERROR +bit 40444 -4 DATA_ERROR +bit 42821 -4 DATA_ERROR +bit 45198 -4 DATA_ERROR +bit 47575 -4 DATA_ERROR +bit 49952 -4 DATA_ERROR +bit 52329 -4 DATA_ERROR +all ok diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.vgtest new file mode 100644 index 000000000..ea8f5e8c4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hackedbz2.vgtest @@ -0,0 +1,2 @@ +prereq: ./is_arch_supported +prog: hackedbz2 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.c new file mode 100644 index 000000000..7f497b460 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.c @@ -0,0 +1,48 @@ + +/* A simple test to demonstrate heap, stack, and global overrun + detection. */ + +#include +#include + +short ga[100]; + +__attribute__((noinline)) +int addup_wrongly ( short* arr ) +{ + int sum = 0, i; + for (i = 0; i <= 100; i++) + sum += (int)arr[i]; + return sum; +} + +__attribute__((noinline)) +int do_other_stuff ( void ) +{ + short la[100]; + return 123 + addup_wrongly(la); +} + +__attribute__((noinline)) +int do_stupid_malloc_stuff ( void ) +{ + int sum = 0; + unsigned char* duh = malloc(100 * sizeof(char)); + sum += duh[-1]; + free(duh); + sum += duh[50]; + return sum; +} + +int main ( void ) +{ + long s = addup_wrongly(ga); + s += do_other_stuff(); + s += do_stupid_malloc_stuff(); + if (s == 123456789) { + fprintf(stdout, "well, i never!\n"); + } else { + fprintf(stdout, "boringly as expected\n"); + } + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stderr.exp new file mode 100644 index 000000000..89640708b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stderr.exp @@ -0,0 +1,116 @@ + + + + +4 +exp-sgcheck + + + ... + ... + ... + ... + ... + + +... +... +exp-sgcheck + + + ... + + ./hsg + + + + + RUNNING + + + + + 0x........ + ... + SorG + Invalid read of size 2 + + + 0x........ + ... + addup_wrongly + ... + hsg.c + ... + + + 0x........ + ... + main + ... + hsg.c + ... + + + Address 0x........ expected vs actual: + Expected: global array "ga" of size 200 in object with soname "NONE" + Actual: unknown + + + + 0x........ + ... + SorG + Invalid read of size 2 + + + 0x........ + ... + addup_wrongly + ... + hsg.c + ... + + + 0x........ + ... + do_other_stuff + ... + hsg.c + ... + + + 0x........ + ... + main + ... + hsg.c + ... + + + Address 0x........ expected vs actual: + Expected: stack array "la" of size 200 in frame 1 back from here + Actual: unknown + + + + + FINISHED + + + + + + ... + 0x........ + + + ... + 0x........ + + + +... + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stdout.exp new file mode 100644 index 000000000..e5b8e6d67 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.stdout.exp @@ -0,0 +1 @@ +boringly as expected diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.vgtest new file mode 100644 index 000000000..b6f653668 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/hsg.vgtest @@ -0,0 +1,4 @@ +prereq: ./is_arch_supported +prog: hsg +vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null +stderr_filter: ../../memcheck/tests/filter_xml diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/is_arch_supported b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/is_arch_supported new file mode 100644 index 000000000..bdf2e7f8f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/is_arch_supported @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Not all architectures are supported by exp-ptr. Currently, PowerPC, s390x +# and ARM are not supported and will fail these tests as follows: +# WARNING: exp-ptrcheck on platforms: stack and global array +# WARNING: checking is not currently supported. Only heap checking is +# WARNING: supported. +# +# So we use this script to prevent these tests from running on unsupported +# architectures. + +case `uname -i` in + ppc*|arm*|s390x) exit 1;; + *) exit 0;; +esac diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.c new file mode 100644 index 000000000..cef91be38 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.c @@ -0,0 +1,52 @@ + +#include +#include +#include + +/* see comments in preen_invar_so.c for explanation of this */ + + +int main ( void ) +{ + int i, r, sum = 0; + char* im_a_global_array; + void* hdl = dlopen("./preen_invars_so.so", RTLD_NOW); + assert(hdl); + im_a_global_array = dlsym(hdl, "im_a_global_array"); + assert(im_a_global_array); + /* printf("%p %p\n", im_a_global_array, me_too_me_too); */ + + /* poke around in the global array, so as to cause exp-ptrcheck + to generate an Inv_Global invar for it. */ + for (i = 10/*ERROR*/; i >= 0; i--) { + sum += im_a_global_array[i]; + } + /* iterating 10 .. 0 causes an Unknown->Global transition at i = 9. + We do it this way in order that at the end of a loop, there is a + Global invar in place for the memory read in the loop, so that + the subsequent dlclose (hence munmap) causes it to get preened. + + Unfortunately there's nothing to show that the preen was + successful or happened at all. The only way to see is from the + -v output: + + --686-- sg_: 251 Invars preened, of which 1 changed + + It's the "1 changed" bit which is significant. + */ + + /* let's hope gcc is not clever enough to optimise this away, since + if it does, then it will also nuke the preceding loop, and + thereby render this test program useless. */ + + if (sum & 1) printf("%s bar %d\n", "foo", sum & 1); else + printf("foo %s %d\n", "bar", 1 - (sum & 1)); + + /* Now close (== unmap) the array, so that exp-ptrcheck has to check + its collection of Inv_Global invars, and remove this one from + it. */ + r = dlclose(hdl); + assert(r == 0); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stderr.exp-glibc28-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stderr.exp-glibc28-amd64 new file mode 100644 index 000000000..3d08101b5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stderr.exp-glibc28-amd64 @@ -0,0 +1,9 @@ + +Invalid read of size 1 + at 0x........: main (preen_invars.c:22) + Address 0x........ expected vs actual: + Expected: unknown + Actual: global array "im_a_global_arr" of size 10 in object with soname "preen_invars_so" + + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stdout.exp new file mode 100644 index 000000000..b3162beae --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.stdout.exp @@ -0,0 +1 @@ +foo bar 1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.vgtest new file mode 100644 index 000000000..49da4bb97 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars.vgtest @@ -0,0 +1,2 @@ +prereq: ./is_arch_supported +prog: preen_invars diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars_so.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars_so.c new file mode 100644 index 000000000..0e59d9cec --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/preen_invars_so.c @@ -0,0 +1,12 @@ + +/* This file contains a global array. It is compiled into a .so, + which is dlopened by preen_invar.c. That then accesses the global + array, hence generating Inv_Global invariants in sg_main.c. + + preen_invar.c then dlcloses this object, causing it to get + unmapped; and we then need to be sure that the Inv_Global is + removed by preen_Invars (or, at least, that the system doesn't + crash..). */ + +char im_a_global_array[10]; + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.c new file mode 100644 index 000000000..36b8e6725 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.c @@ -0,0 +1,53 @@ + +/* Check basic stack overflow detection. + + It's difficult to get consistent behaviour across all platforms. + For example, x86 w/ gcc-4.3.1 gives + + Expected: stack array "a" in frame 2 back from here + Actual: stack array "beforea" in frame 2 back from here + + whereas amd64 w/ gcc-4.3.1 gives + + Expected: stack array "a" in frame 2 back from here + Actual: unknown + + This happens because on x86 the arrays are placed on the + stack without holes in between, but not so for amd64. I don't + know why. +*/ + + +#include + +__attribute__((noinline)) void foo ( long* sa, int n ) +{ + int i; + for (i = 0; i < n; i++) + sa[i] = 0; +} + +__attribute__((noinline)) void bar ( long* sa, int n ) +{ + foo(sa, n); +} + +int main ( void ) +{ + int i; + long beforea[3]; + long a[7]; + long aftera[3]; + bar(a, 7+1); /* generates error */ + bar(a, 7+0); /* generates no error */ + for (i = 0; i < 7+1; i++) { + a[i] = 0; + } + {char beforebuf[8]; + char buf[8]; + char afterbuf[8]; + sprintf(buf, "%d", 123456789); + return 1 & ((a[4] + beforea[1] + aftera[1] + beforebuf[1] + + buf[2] + afterbuf[3]) / 100000) ; + } +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc27-x86 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc27-x86 new file mode 100644 index 000000000..b876eafd3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc27-x86 @@ -0,0 +1,27 @@ + +Invalid write of size 4 + at 0x........: foo (stackerr.c:27) + by 0x........: bar (stackerr.c:32) + by 0x........: main (stackerr.c:41) + Address 0x........ expected vs actual: + Expected: stack array "a" in frame 2 back from here + Actual: stack array "beforea" in frame 2 back from here + +Invalid write of size 4 + at 0x........: main (stackerr.c:44) + Address 0x........ expected vs actual: + Expected: stack array "a" in this frame + Actual: stack array "beforea" in this frame + +Invalid write of size 1 + at 0x........: _IO_default_xsputn (in /...libc...) + by 0x........: ... + by 0x........: ... + by 0x........: ... + by 0x........: main (stackerr.c:49) + Address 0x........ expected vs actual: + Expected: stack array "buf" in frame 4 back from here + Actual: stack array "beforebuf" in frame 4 back from here + + +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc28-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc28-amd64 new file mode 100644 index 000000000..c1b01a822 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.stderr.exp-glibc28-amd64 @@ -0,0 +1,30 @@ + +Invalid write of size 8 + at 0x........: foo (stackerr.c:27) + by 0x........: bar (stackerr.c:32) + by 0x........: main (stackerr.c:41) + Address 0x........ expected vs actual: + Expected: stack array "a" of size 56 in frame 2 back from here + Actual: unknown + Actual: is 0 after Expected + +Invalid write of size 8 + at 0x........: main (stackerr.c:44) + Address 0x........ expected vs actual: + Expected: stack array "a" of size 56 in this frame + Actual: unknown + Actual: is 0 after Expected + +Invalid write of size 1 + at 0x........: _IO_default_xsputn (in /...libc...) + by 0x........: ... + by 0x........: ... + by 0x........: ... + by 0x........: main (stackerr.c:49) + Address 0x........ expected vs actual: + Expected: stack array "buf" of size 8 in frame 4 back from here + Actual: unknown + Actual: is 0 after Expected + + +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.vgtest new file mode 100644 index 000000000..0a1139dfa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/exp-sgcheck/tests/stackerr.vgtest @@ -0,0 +1,2 @@ +prereq: ./is_arch_supported +prog: stackerr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.am new file mode 100644 index 000000000..6d9951905 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.am @@ -0,0 +1,86 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = \ + invoker simulate_control_c make_local_links \ + filter_gdb filter_make_empty \ + filter_memcheck_monitor filter_stderr filter_vgdb + +EXTRA_DIST = \ + mcbreak.stderrB.exp \ + mcbreak.stderr.exp \ + mcbreak.stdinB.gdb \ + mcbreak.stdoutB.exp \ + mcbreak.stdout.exp \ + mcbreak.vgtest \ + mcclean_after_fork.stderrB.exp \ + mcclean_after_fork.stderr.exp \ + mcclean_after_fork.stdinB.gdb \ + mcclean_after_fork.stdoutB.exp \ + mcclean_after_fork.vgtest \ + mchelp.stderrB.exp \ + mchelp.stderr.exp \ + mchelp.stdoutB.exp \ + mchelp.vgtest \ + mcinfcallRU.stderrB.exp \ + mcinfcallRU.stderr.exp \ + mcinfcallRU.stdinB.gdb \ + mcinfcallRU.vgtest \ + mcinfcallWSRU.stderrB.exp \ + mcinfcallWSRU.stderr.exp \ + mcinfcallWSRU.stdinB.gdb \ + mcinfcallWSRU.vgtest \ + mcinvokeRU.stderrB.exp \ + mcinvokeRU.stderr.exp \ + mcinvokeRU.stdoutB.exp \ + mcinvokeRU.vgtest \ + mcinvokeWS.stderrB.exp \ + mcinvokeWS.stderr.exp \ + mcinvokeWS.stdoutB.exp \ + mcinvokeWS.vgtest \ + mcleak.stderrB.exp \ + mcleak.stderr.exp \ + mcleak.stdinB.gdb \ + mcleak.stdoutB.exp \ + mcleak.vgtest \ + mcsignopass.stderrB.exp \ + mcsignopass.stderr.exp \ + mcsignopass.stdinB.gdb \ + mcsignopass.stdoutB.exp \ + mcsignopass.vgtest \ + mcsigpass.stderrB.exp \ + mcsigpass.stderr.exp \ + mcsigpass.stdinB.gdb \ + mcsigpass.stdoutB.exp \ + mcsigpass.vgtest \ + mcvabits.stderrB.exp \ + mcvabits.stderr.exp \ + mcvabits.stdinB.gdb \ + mcvabits.stdoutB.exp \ + mcvabits.vgtest \ + mcwatchpoints.stderrB.exp \ + mcwatchpoints.stderr.exp \ + mcwatchpoints.stdinB.gdb \ + mcwatchpoints.stdoutB.exp \ + mcwatchpoints.vgtest \ + mssnapshot.stderrB.exp \ + mssnapshot.stderr.exp \ + mssnapshot.stdinB.gdb \ + mssnapshot.stdoutB.exp \ + mssnapshot.vgtest \ + nlcontrolc.stderrB.exp \ + nlcontrolc.stderr.exp \ + nlcontrolc.stdinB.gdb \ + nlcontrolc.stdoutB.exp \ + nlcontrolc.vgtest + +check_PROGRAMS = \ + clean_after_fork \ + sleepers \ + t \ + watchpoints + +AM_CFLAGS += $(AM_FLAG_M3264_PRI) +AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) + +LDADD = -lpthread diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.in new file mode 100644 index 000000000..a83858409 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/Makefile.in @@ -0,0 +1,813 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am +check_PROGRAMS = clean_after_fork$(EXEEXT) sleepers$(EXEEXT) \ + t$(EXEEXT) watchpoints$(EXEEXT) +subdir = gdbserver_tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +clean_after_fork_SOURCES = clean_after_fork.c +clean_after_fork_OBJECTS = clean_after_fork.$(OBJEXT) +clean_after_fork_LDADD = $(LDADD) +clean_after_fork_DEPENDENCIES = +sleepers_SOURCES = sleepers.c +sleepers_OBJECTS = sleepers.$(OBJEXT) +sleepers_LDADD = $(LDADD) +sleepers_DEPENDENCIES = +t_SOURCES = t.c +t_OBJECTS = t.$(OBJEXT) +t_LDADD = $(LDADD) +t_DEPENDENCIES = +watchpoints_SOURCES = watchpoints.c +watchpoints_OBJECTS = watchpoints.$(OBJEXT) +watchpoints_LDADD = $(LDADD) +watchpoints_DEPENDENCIES = +SCRIPTS = $(dist_noinst_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = clean_after_fork.c sleepers.c t.c watchpoints.c +DIST_SOURCES = clean_after_fork.c sleepers.c t.c watchpoints.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub \ + -DVGA_$(VGCONF_ARCH_PRI)=1 \ + -DVGO_$(VGCONF_OS)=1 \ + -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1 + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) +AM_CXXFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = \ + invoker simulate_control_c make_local_links \ + filter_gdb filter_make_empty \ + filter_memcheck_monitor filter_stderr filter_vgdb + +EXTRA_DIST = \ + mcbreak.stderrB.exp \ + mcbreak.stderr.exp \ + mcbreak.stdinB.gdb \ + mcbreak.stdoutB.exp \ + mcbreak.stdout.exp \ + mcbreak.vgtest \ + mcclean_after_fork.stderrB.exp \ + mcclean_after_fork.stderr.exp \ + mcclean_after_fork.stdinB.gdb \ + mcclean_after_fork.stdoutB.exp \ + mcclean_after_fork.vgtest \ + mchelp.stderrB.exp \ + mchelp.stderr.exp \ + mchelp.stdoutB.exp \ + mchelp.vgtest \ + mcinfcallRU.stderrB.exp \ + mcinfcallRU.stderr.exp \ + mcinfcallRU.stdinB.gdb \ + mcinfcallRU.vgtest \ + mcinfcallWSRU.stderrB.exp \ + mcinfcallWSRU.stderr.exp \ + mcinfcallWSRU.stdinB.gdb \ + mcinfcallWSRU.vgtest \ + mcinvokeRU.stderrB.exp \ + mcinvokeRU.stderr.exp \ + mcinvokeRU.stdoutB.exp \ + mcinvokeRU.vgtest \ + mcinvokeWS.stderrB.exp \ + mcinvokeWS.stderr.exp \ + mcinvokeWS.stdoutB.exp \ + mcinvokeWS.vgtest \ + mcleak.stderrB.exp \ + mcleak.stderr.exp \ + mcleak.stdinB.gdb \ + mcleak.stdoutB.exp \ + mcleak.vgtest \ + mcsignopass.stderrB.exp \ + mcsignopass.stderr.exp \ + mcsignopass.stdinB.gdb \ + mcsignopass.stdoutB.exp \ + mcsignopass.vgtest \ + mcsigpass.stderrB.exp \ + mcsigpass.stderr.exp \ + mcsigpass.stdinB.gdb \ + mcsigpass.stdoutB.exp \ + mcsigpass.vgtest \ + mcvabits.stderrB.exp \ + mcvabits.stderr.exp \ + mcvabits.stdinB.gdb \ + mcvabits.stdoutB.exp \ + mcvabits.vgtest \ + mcwatchpoints.stderrB.exp \ + mcwatchpoints.stderr.exp \ + mcwatchpoints.stdinB.gdb \ + mcwatchpoints.stdoutB.exp \ + mcwatchpoints.vgtest \ + mssnapshot.stderrB.exp \ + mssnapshot.stderr.exp \ + mssnapshot.stdinB.gdb \ + mssnapshot.stdoutB.exp \ + mssnapshot.vgtest \ + nlcontrolc.stderrB.exp \ + nlcontrolc.stderr.exp \ + nlcontrolc.stdinB.gdb \ + nlcontrolc.stdoutB.exp \ + nlcontrolc.vgtest + +LDADD = -lpthread +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gdbserver_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign gdbserver_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +clean_after_fork$(EXEEXT): $(clean_after_fork_OBJECTS) $(clean_after_fork_DEPENDENCIES) + @rm -f clean_after_fork$(EXEEXT) + $(LINK) $(clean_after_fork_OBJECTS) $(clean_after_fork_LDADD) $(LIBS) +sleepers$(EXEEXT): $(sleepers_OBJECTS) $(sleepers_DEPENDENCIES) + @rm -f sleepers$(EXEEXT) + $(LINK) $(sleepers_OBJECTS) $(sleepers_LDADD) $(LIBS) +t$(EXEEXT): $(t_OBJECTS) $(t_DEPENDENCIES) + @rm -f t$(EXEEXT) + $(LINK) $(t_OBJECTS) $(t_LDADD) $(LIBS) +watchpoints$(EXEEXT): $(watchpoints_OBJECTS) $(watchpoints_DEPENDENCIES) + @rm -f watchpoints$(EXEEXT) + $(LINK) $(watchpoints_OBJECTS) $(watchpoints_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clean_after_fork.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleepers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/watchpoints.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-local ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/README_DEVELOPPERS b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/README_DEVELOPPERS new file mode 100644 index 000000000..5eae785e1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/README_DEVELOPPERS @@ -0,0 +1,241 @@ +Automatic regression tests: +--------------------------- +The Valgrind gdbserver automatic tests are by default +executed as part of the Valgrind test suite: + make regtest + +By default, these tests are running with the gdb found at +Valgrind configure time. + +If you want to test with another gdb version, you can do: + make regtest GDB=/path/to/another/gdb + +or (to just run the gdbserver tests with another gdb): + cd gdbserver_tests + make check + cd .. + gdbserver_tests/make_local_links /path/to/another/gdb + perl tests/vg_regtest gdbserver_tests + +The minimum version to use the Valgrind gdbserver is gdb >= 6.5. + Previous versions do not have the 'target remote |' command. It + would be possible to use an older version by having a tcp relay + application between gdb and vgdb (or, alternatively, change vgdb + so that it could read/write from/to a tcpip socket rather than + read/write from stdin/stdout. + +The tests have been run on various platforms using gdb 7.2 +and on some platforms gdb 7.0 and 7.1. +Some gdb tests implies a gdb >= 7.2. (these are automatically disabled +if testing with a lower version). +Test behaviour with gdb < 7.0 is unknown: some might fail, +some might block or loop for a very long time. + +Some tests implies to have a vgdb "ptrace invoker" capable. + +The prerequisite are established during make regtest (using marker files). +Each test verifies the prerequisite using the prereq: line. + +In case of failing tests +------------------------ +When executed with a new gdb version and/or depending on the OS version, +gdbserver tests might often fail due to (irrelevant) differences. +Such irrelevant differences have to be filtered by gdbserver_tests/filter_gdb. + +You are welcome to fix such bugs by enhancing filter_gdb. + +Alternatively, to report such problems, the best is to re-run +the gdbserver tests the following way: + perl tests/vg_regtest --keep-unfiltered gdbserver_tests + +Then file a bug in bugzilla, giving the following information: + output of + gdbserver_tests/gdb --version + uname -a + cat /etc/issue + valgrind --version (and/or svn version) + and attach a tar file containing all the *.out and *.diff + files in gdbserver_tests directory + +If a gdbserver test fails for other reasons, you can run the test +manually in two windows: + In one window, the valgrind + In another window, you launch gdb yourself, and you copy paste + the command from xxxx.stdinB.gdb. This might help to see what is + wrong. + +Another good trick is also to execute the same kind of actions +using a gdb connected to the gdbserver part of gdb. +You can examine what is happening by enabling the trace +of the packets being sent using the gdb command: + set debug remote 1 +Note however that the packets might be different +(e.g. the Valgrind gdbserver understands the 'P' packet, +which might not be understood by the gdbserver of gdb). + +Naming conventions: +------------------- + +The gdbserver tests are done with various Valgrind tools. A gdbserver +test using a tool xxxxxx should have its name starting with the 'short +two letters code' of this tool. For example, the test mcvabits.vgtest +is using Memcheck tool, while the test mssnapshot.vgtest is using +massif tool. + +Typically, a gdbserver test implies to launch two programs: + prog: a program running under valgrind + progB: another program (typically, either gdb or vgdb standalone) +The conventions about how to specify the 2nd program in a .vgtest +are explained in the file ../tests/vg_regtest.in +Many tests are using gdb as progB. The input for gdb is named +xxxxxx.stdinB.gdb. + +One day, we might imagine to run tests in parallel. +So, each test gets its own '--vgdb-prefix' argument. +This also help to avoid interactions between two successive tests: +if a previous test stayed blocked, the vgdb of the next test +will not report an error due to multiple possible FIFOs. + + +Rational for test approach +-------------------------- +Two approaches have been looked at: + V: use the 'vg_regtest' approach used by the rest of Valgrind tests + G: use the gdb Dejagnu test framework. + +Advantages of V: much simpler that G, known by Valgrind developpers, +no additional dependency for the Valgrind build and test. + +Disadvantages of V: not well suited to testing of interactive tools, +very unflexible way to test the results (everything is in "template" +files), templates contains often irrelevant data for the test but it +can make the test fail. After writing 13 tests, it looks like the +template diff approach is quite fragile (e.g. changing the gdb version +and/or the OS version influences the output of irrelevant things which +are part of the template). + +A more flexible template filtering is needed. +Maybe something like: +The program under test is outputting its instructions to be filtered in +special markers e.g. +#pushf filter_addresses | filter_messages +... some output +#pushf an_additional_filter +... some other output, filtered by both the first and second push +#popf +... here output filtered only by the first pushf +#popf + +Advantages of G: much more powerful, well suited to test a gdb with a +gdbserver, tests can verify specifically some output without being +impacted by other output, allow to test Valgrind gdbserver with the +all of the gdb test suite (but a lot of tests will rather test gdb +than Valgrind gdbserver). + +Disadvantages: not an easy beast to understand and master, running the +whole gdb testsuite with Valgrind gdbserver looks to be a challenge. + +Currently, tests are written with vg_regtest. Approach G will be looked at it +again (e.g. to complement V) once a basic set of tests are available. + + +Manual tests still to automate: +------------------------------- + +Validate monitor commands abbreviation recognition +*************************************************** +mo vg.info all_errors # to show all errors recorded so far +mo vg.i a # the same +mo v # must give an error: v can match vg.set vg.info +mo vg # the same vg +mo vg. # the same vg. + +test of gdb detaching or dying +****************************** +valgrind --vgdb=yes --vgdb-error=0 --vgdb-poll=500 ./t + +in another window + +gdb ./t +set remotetimeout 100 +target remote|vgdb +detach valgrind continues +target remote|vgdb reattach +detach valgrind continues +target remote|vgdb reattach +monitor vg.wait no effect + + + +test of valgrind/gdb output redirection +*************************************** +valgrind --vgdb=yes --vgdb-error=1 --vgdb-poll=500 ./t + +in another window + +**** command to type*** ****** expected behaviour +gdb ./t +set remotetimeout 1000 +target remote | vgdb +mo vg.set vgdb-error 1000 # so that valgrind does stop only at error 1000 and after +mo vg.set gdb_output # to have further valgrind errors output in gdb +c # continue, some errors will appear +C-c # interrupt program +mo vg.set log_output # to set back the valgrind output to normal process log output +mo mc.l # leak output to appear in log of process +mo vg.set mixed_output +mo mc.l # leak output to appear in gdb + + + +test with a big executable: firefox +*********************************** +valgrind --vgdb=yes --vgdb-error=1000 --vgdb-poll=50000 --trace-children=yes firefox 2>&1 | tee f.out + +wait for some messages from the "big" firefox executable to appear. +Then: + +gdb /usr/lib/firefox-3.5/firefox +target remote | vgdb +... then you can do various next/print/bt/bt full/break/... to see it is working + +bulk test with the above +************************ +to verify there is no race condition/no reentrance problem +between gdbserver code and valgrind: +start firefox like in the previous test. +In another window, do: + while true + do + vgdb mc.leak + sleep 1 + done + +NB: this will make firefox run extremely slow, as it will do a leak +search every second. + + +Test of "jump" functionality +---------------------------- +... to be done : put two breaks, jump over one. +... same but when error is encountered + + +* test with --max-invoke-ms=0 +----------------------------- +valgrind --vgdb=yes ./t +... wait till you see "petachounok sleeping 4 of 15 +then try to gdb it + +!!!! this often causes gdb to report a protocol timeout. +use gdb set remotetimeout to avoid that. +The symptoms of a timeout are: + (gdb) tar rem|vgdb --max-invoke-ms=0 + Remote debugging using |vgdb --max-invoke-ms=0 + relaying data between gdb and process 2930 + Ignoring packet error, continuing... + warning: unrecognized item "timeout" in "qSupported" response + +* tests of shadow registers +---------------------------- +Show/modify shadow registers diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/clean_after_fork.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/clean_after_fork.c new file mode 100644 index 000000000..b8a7037fd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/clean_after_fork.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include +int main() +{ + int mem = 0, pid; + pid = fork(); + if (pid == -1) { + mem = 1; + perror("fork"); + exit(1); + } + + if (pid == 0) { + if (mem == 0) + exit(0); + else + exit(1); + } else { + int ret; + int status; + while((ret = waitpid(pid, &status, 0)) != pid) { + if (errno != EINTR) { + perror("waitpid"); + exit(1); + } + } + mem = status; + } + if (mem == 0) + printf("mem is zero\n"); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_gdb new file mode 100644 index 000000000..42f494d13 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_gdb @@ -0,0 +1,100 @@ +#! /bin/sh + +# filter the output of gdb. + +dir=`dirname $0` + +$dir/filter_stderr | + +# Anonymise addresses +$dir/../tests/filter_addresses | + +# memcheck stuff +$dir/filter_memcheck_monitor | + + +# Anonymise or remove : +# delete the initial lines between the launch of vgdb and the +# output of the echo command telling it is launched. +# This removes a whole lot of uninteresting lines varying +# with OS/glibc/gdb dep +# initial tty control character sent by gdb 7.0 +# remove missing debuginfos +# vgdb message +# pid numbers +# Thread numbers +# delete thread switches +# info threads output (e.g. which thread is running and syscall) +# delete Reading symbols file lines +# delete Loaded symbols file lines +# delete language switch messages. +# remove gdb prompts. +# remove gdb continuation prompts. +# remove gdb done prompts. +# a 'general' system calls stack trace part +# a more specialised system call select stack trace part +# (on 32 bits, we have an int_80, on 64 bits, directly select) +# and yet another (gdb 7.0 way) to get a system call +# and yet another (gdb 7.0 arm way) to get a system call +# and cleanup some lines for a system call (on ubuntu 10 64 bits) +# (pay attention : there are tab characters there in) +# + yet another way to get a select system call +# which registers can't be modified +# special transform for arm/ppc watchpoints which have an additional address +# at the beginning +# special transform for backtrace of arm or ppc division by zero which gives +# a location in the nptl lib rather than our sources (same as +# standard gdb gdbserver) gdb 7.0 +# same special transform but for gdb 7.2 +# delete lines telling that some memory can't be accessed: this is +# a.o. produced by gdb 7.2 on arm (same with standard gdbserver) +# delete empty lines (the last line (only made of prompts) sometimes +# finishes with a new line, sometimes not ???). +sed -e '/Remote debugging using/,/vgdb launched process attached/d' \ + -e 's/^\[?1034hReading symbols/Reading symbols/' \ + -e '/^Missing separate debuginfo/d' \ + -e '/^Try: zypper install -C/d' \ + -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../' \ + -e 's/pid [0-9][0-9]*/pid ..../g' \ + -e 's/Thread [0-9][0-9]*/Thread ..../g' \ + -e '/\[Switching to Thread ....\]/d' \ + -e 's/^\([ \* ] [0-9] Thread .... (tid [0-9] VgTs_WaitSys) 0x........ in\).*$/\1 syscall .../' \ + -e 's/#[0-9]\( 0x........ in sleeper_or_burner\)/#.\1/' \ + -e '/^Reading symbols from .*\.\.\.done\./d' \ + -e '/^Loaded symbols for .*$/d' \ + -e '/^Current language.*/d' \ + -e '/^The current source language is.*/d' \ + -e 's/(gdb) //g' \ + -e 's/^>[> ]*//' \ + -e '/^done\.$/d' \ + -e 's/in _dl_sysinfo_int80 () from \/lib\/ld-linux.so.*/in syscall .../' \ + -e 's/in _dl_sysinfo_int80 ()/in syscall .../' \ + -e '/^ from \/lib\/ld-linux.so.*$/d' \ + -e 's/\(0x........\) in ?? () from \/lib.*$/\1 in syscall .../' \ + -e 's/\(0x........\) in ?? ()$/\1 in syscall .../' \ + -e 's/in \(.__\)\{0,1\}select () from \/.*$/in syscall .../' \ + -e '/^ from \/lib\/libc.so.*$/d' \ + -e '/^ from \/lib64\/libc.so.*$/d' \ + -e '/^ from \/lib64\/tls\/libc.so.*$/d' \ + -e 's/in select ()$/in syscall .../' \ + -e 's/in \.__select ()$/in syscall .../' \ + -e 's/in select () at \.\.\/sysdeps\/unix\/syscall-template\.S.*$/in syscall .../' \ + -e '/^[ ]*at \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e '/^[ ]*in \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e '/^[1-9][0-9]*[ ]*\.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e '/^[1-9][0-9]*[ ]in *\.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e 's/\(Could not write register \)".*"/\1 "xxx"/' \ + -e 's/\(ERROR changing register \).*$/\1 xxx regno y/' \ + -e 's/0x........ in \(main (argc=1, argv=0x........) at watchpoints.c:[24][3689]\)/\1/' \ + -e 's/0x........ in \(main () at clean_after_fork.c:32\)/\1/' \ + -e 's/^0x........ in \*__GI_raise (sig=8).*/0x........ in test4 () at faultstatus.c:120\n120 volatile int v = 44\/zero();/' \ + -e '/ at ..\/nptl\/sysdeps\/unix\/sysv\/linux\/raise.c:[0-9]*/d' \ + -e '/ in ..\/nptl\/sysdeps\/unix\/sysv\/linux\/raise.c/d' \ + -e 's/^0x........ in \.\{0,1\}raise () from \/lib[0-9]\{0,2\}\/libc\.so\../0x........ in test4 () at faultstatus.c:120\n120 volatile int v = 44\/zero();'/ \ + -e '/Cannot access memory at address 0x......../d' \ + -e '/^$/d' | + +# join together two lines that gdb 7.1 splits in two (???) +# (in a separate sed, as the below influences the behaviour of the other expressions) +sed -e :a -e '$!N;s/\n at sleepers.c:39/ at sleepers.c:39/;ta' -e 'P;D' + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_make_empty b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_make_empty new file mode 100644 index 000000000..f22998b7b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_make_empty @@ -0,0 +1,10 @@ +#! /bin/sh + +# A filter filtering everything. + +# To still allow to see what is happening, the content +# is copied to a file, together with date and process. + +ps -lf -p $PPID >> garbage.filtered.out +date >> garbage.filtered.out +cat >> garbage.filtered.out diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_memcheck_monitor b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_memcheck_monitor new file mode 100644 index 000000000..73eb82e99 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_memcheck_monitor @@ -0,0 +1,29 @@ +#! /bin/sh + +# used to filter memcheck output shown by gdb/vgdb. + +dir=`dirname $0` + +$dir/../memcheck/tests/filter_stderr | + +# filter vgdb messages +$dir/filter_vgdb | + + + +# filter some normal error messages provided by some gdb +# +# gdb 7.2 sometimes tries to access address 0x0 (same as with standard gdbserver) +# +# filter a debian 6.0/ppc32 line +# +# filter some missing info msg from s390 +# +# Bypass a s390x kernel bug which makes faultstatus test3 fail. In our case, we are +# not interested in checking the si_code, but rather the signal passing +# in mcsig(no)pass +sed -e '/Cannot access memory at address 0x......../d' \ + -e '/^[1-9][0-9]* \.\.\/sysdeps\/powerpc\/powerpc32\/dl-start\.S: No such file or directory\./d' \ + -e '/^Missing separate debuginfo/d' \ + -e '/^Try: zypper install -C/d' \ + -e 's/Test 3: FAIL: expected si_code==2, not 128/Test 3: PASS/' diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_stderr new file mode 100644 index 000000000..1d26ab79b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_stderr @@ -0,0 +1,6 @@ +#! /bin/sh + +dir=`dirname $0` + +$dir/../tests/filter_stderr_basic | +sed -e '/^Copyright (C) /d' diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_vgdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_vgdb new file mode 100644 index 000000000..2edc75a66 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/filter_vgdb @@ -0,0 +1,17 @@ +#! /bin/sh + +dir=`dirname $0` + +$dir/filter_stderr | + +# Anonymise addresses +$dir/../tests/filter_addresses | + +# filter vgdb process id, +# pid +# gdb 7.2 sometimes tries to access address 0x0 (same as with standard gdbserver) +# filter a debian 6.0/ppc32 line +sed -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../' \ + -e 's/\(sending command .* to pid \)[0-9][0-9]*/\1..../' \ + -e '/Cannot access memory at address 0x......../d' \ + -e '/^[1-9][0-9]* \.\.\/sysdeps\/powerpc\/powerpc32\/dl-start\.S: No such file or directory\./d' diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/invoker b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/invoker new file mode 100644 index 000000000..b9fba58bd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/invoker @@ -0,0 +1,19 @@ +#! /bin/sh + +# invoker is used to test the invocation of gdbserver. +# The first argument is the nr of times vgdb has to be called. +# rest of args are given to vgdb +# At the end of the loop, an additional call is done +# but adding " -c vg.kill" to kill Valgrind process. + +LOOPS=$1 +shift + +i=0 +while [ $i -lt $LOOPS ] +do + ./vgdb "$@" + i=`expr $i + 1` +done + +./vgdb "$@" -c vg.kill diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/make_local_links b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/make_local_links new file mode 100644 index 000000000..c1355cad3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/make_local_links @@ -0,0 +1,58 @@ +#! /bin/sh + +# (must be called from the valgrind top source dir). +# +# Make local links in the gdbserver_tests directory +# so that tests needing gdb can be disabled if +# a tool old version of gdb is provided or if no gdb is +# provided. +# +# The vgdb link is needed either for gdb tests +# or for standalone vgdb tests. + +if [ -x "$1" ] +then + ln -f -s "$1" gdbserver_tests/gdb + # Try to extract the gdb version. + VERSIONLINE=`gdbserver_tests/gdb --version | head -n 1` + VERSION=`echo $VERSIONLINE | + sed -e 's/[^0-9\.]//g' -e 's/\./ /g'` + + # We need at least a 6.5 version to run any gdb test + VERSIONOK=`echo $VERSION | + awk '{ if ( ($1 >= 7) || (($1 == 6) && ($2 >= 5)) ) print "version ok"}'` + if [ "$VERSIONOK" = "" ] + then + echo "gdbserver tests suppressed as $1 version is not >= 6.5: " $VERSIONLINE + rm gdbserver_tests/gdb + fi + + # We need at least a 7.2 version for gdb tests using eval command + VERSIONOK=`echo $VERSION | + awk '{ if ( ($1 >= 8) || (($1 == 7) && ($2 >= 2)) ) print "version ok"}'` + if [ "$VERSIONOK" = "" ] + then + echo "gdbserver eval tests suppressed as $1 version is not >= 7.2: " $VERSIONLINE + rm -f gdbserver_tests/gdb.eval + else + touch gdbserver_tests/gdb.eval + fi +else + echo "gdbserver gdb tests suppressed as $1 is not executable" +fi + +ln -f -s ../coregrind/vgdb gdbserver_tests/vgdb + +# if ptrace not implemented in vgdb or OS restricts the initial attach, +# some tests would block for a loooonnnng time. +if gdbserver_tests/vgdb --help 2>&1 | + grep -e 'ptrace invoker not implemented' \ + -e 'kernel restricts ptrace invoker' > /dev/null +then + rm -f gdbserver_tests/vgdb.ptraceinvoker +else + touch gdbserver_tests/vgdb.ptraceinvoker +fi + +# cleanup the possibly big garbage previously collected output +rm -f gdbserver_tests/garbage.filtered.out diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stderrB.exp new file mode 100644 index 000000000..d5eaecf10 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stderrB.exp @@ -0,0 +1,7 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +vgdb-error value changed from 999999 to 0 +n_errs_found 1 (vgdb-error 0) +vgdb-error value changed from 0 to 0 +monitor command request to kill this process +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdinB.gdb new file mode 100644 index 000000000..19f3d8637 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdinB.gdb @@ -0,0 +1,69 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcbreak +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +define checkstep + set $old_pc=$pc + step + if $old_pc == $pc + echo Bizarre the oldpc has not changed after step\n + print $oldpc + print $pc + else + echo old_pc has changed after step\n + end +end +# +# break1 and break2 +break t.c:112 +break t.c:117 +# +continue +# first break encountered. +checkstep +checkstep +checkstep +# +monitor vg.set vgdb-error 0 +# +next +print whoami("first") +print undefined +print i +checkstep +checkstep +next +print whoami("second") +print undefined +print i +next +print whoami("third") +print undefined +print i +next +print whoami("fourth") +print undefined +print i +# modify sleeps so as to have a shorter test: +print sleeps=1 +# +print whoami("after next: inferior call pushed from mcbreak.stdinB.gdb") +continue +# +# encountered second break +step +finish +# delete all breaks +delete +continue +monitor vg.info n_errs_found +# inferior call "in the middle" of an instruction is not working at least +# on all platforms, so comment the below. +# print whoami("after error: inferior call pushed from mcbreak.stdinB.gdb") +checkstep +monitor vg.set vgdb-error 0 +continue +# stop the process a.o. to avoid non deterministic output +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdout.exp new file mode 100644 index 000000000..8907c6fb2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdout.exp @@ -0,0 +1,8 @@ +pid .... Thread .... first +pid .... Thread .... second +pid .... Thread .... third +pid .... Thread .... fourth +pid .... Thread .... after next: inferior call pushed from mcbreak.stdinB.gdb +pid .... Thread .... called from level +called from level int_und is not zero +pid .... Thread .... called from main diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdoutB.exp new file mode 100644 index 000000000..e12d2e448 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.stdoutB.exp @@ -0,0 +1,54 @@ +Breakpoint 1 at 0x........: file t.c, line 112. +Breakpoint 2 at 0x........: file t.c, line 117. +Continuing. +Breakpoint 1, main (argc=1, argv=0x........) at t.c:112 +112 breakme(__LINE__); //break1 +breakme (line=112) at t.c:100 +100 if (line > 1000) +old_pc has changed after step +102 } +old_pc has changed after step +main (argc=1, argv=0x........) at t.c:113 +113 for (i = len-1; i >= 0; i=i-2) +old_pc has changed after step +114 undefined[i] = undef; +$1 = void +$2 = "undefined" +$3 = 8 +113 for (i = len-1; i >= 0; i=i-2) +old_pc has changed after step +114 undefined[i] = undef; +old_pc has changed after step +113 for (i = len-1; i >= 0; i=i-2) +$4 = void +$5 = "undefi?e?" +$6 = 6 +114 undefined[i] = undef; +$7 = void +$8 = "undefi?e?" +$9 = 4 +113 for (i = len-1; i >= 0; i=i-2) +$10 = void +$11 = "unde?i?e?" +$12 = 4 +$13 = 1 +$14 = void +Continuing. +Breakpoint 2, main (argc=1, argv=0x........) at t.c:117 +117 breakme(__LINE__); //break2 +breakme (line=117) at t.c:100 +100 if (line > 1000) +Run till exit from #0 breakme (line=117) at t.c:100 +main (argc=1, argv=0x........) at t.c:119 +119 if (argc > 1) +Delete all breakpoints? (y or n) [answered Y; input not from terminal] +Continuing. +Program received signal SIGTRAP, Trace/breakpoint trap. +0x........ in make_error (s=0x........ "called from level") at t.c:40 +40 if (int_und == 0) +43 printf ("%s int_und is not zero\n", s); +old_pc has changed after step +Continuing. +Program received signal SIGTRAP, Trace/breakpoint trap. +0x........ in make_error (s=0x........ "called from main") at t.c:40 +40 if (int_und == 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.vgtest new file mode 100644 index 000000000..afa6ad583 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcbreak.vgtest @@ -0,0 +1,12 @@ +# test execution control (break, next, step) and inferior calls +# when stopped on these events +prereq: test -e gdb +prog: t +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcbreak +stdout_filter: filter_gdb +stderr_filter: filter_make_empty +progB: gdb +argsB: --quiet -l 60 --nx ./t +stdinB: mcbreak.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_memcheck_monitor diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderr.exp new file mode 100644 index 000000000..0e8e017bb --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderr.exp @@ -0,0 +1,12 @@ + +(action at startup) vgdb me ... + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +Reset valgrind output to log (orderly_finish) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderrB.exp new file mode 100644 index 000000000..995b42fd4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stderrB.exp @@ -0,0 +1,4 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +monitor command request to kill this process +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdinB.gdb new file mode 100644 index 000000000..f91ca9e68 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdinB.gdb @@ -0,0 +1,25 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcclean_after_fork +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# put a break in main, and then a watch +# also put breaks in code that only the child will execute. +# These breaks should not be encountered. +break clean_after_fork.c:9 +break clean_after_fork.c:18 +break clean_after_fork.c:20 +# +continue +# first break encountered. +# put a read watchpoint on mem +# we expect that the read watchpoint is not triggered in the child +# (as we expect it will be cleared at fork). +rwatch mem +# +continue +# +# we should now have encountered the read watchpoint in the parent. +# let's kill the parent: +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdoutB.exp new file mode 100644 index 000000000..6db3d3a2d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.stdoutB.exp @@ -0,0 +1,12 @@ +Breakpoint 1 at 0x........: file clean_after_fork.c, line 9. +Breakpoint 2 at 0x........: file clean_after_fork.c, line 18. +Breakpoint 3 at 0x........: file clean_after_fork.c, line 20. +Continuing. +Breakpoint 1, main () at clean_after_fork.c:9 +9 pid = fork(); +Hardware read watchpoint 4: mem +Continuing. +Hardware read watchpoint 4: mem +Value = 0 +main () at clean_after_fork.c:32 +32 if (mem == 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.vgtest new file mode 100644 index 000000000..25ca47132 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcclean_after_fork.vgtest @@ -0,0 +1,10 @@ +# test cleanup of break and watchpoints after fork +prereq: test -e gdb +prog: clean_after_fork +vgopts: --tool=memcheck --vgdb=full --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcclean_after_fork +stderr_filter: filter_memcheck_monitor +progB: gdb +argsB: --quiet -l 60 --nx ./clean_after_fork +stdinB: mcclean_after_fork.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_memcheck_monitor diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stderrB.exp new file mode 100644 index 000000000..55888e32a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stderrB.exp @@ -0,0 +1,5 @@ +sending command help to pid .... +sending command help debug to pid .... +sending command vg.kill to pid .... +readchar: Got EOF +error reading packet diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stdoutB.exp new file mode 100644 index 000000000..6499f334a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.stdoutB.exp @@ -0,0 +1,66 @@ +general valgrind monitor commands: + help [debug] : monitor command help. With debug: + debugging commands + vg.wait [] : sleep (default 0) then continue + vg.info all_errors : show all errors found so far + vg.info last_error : show last error found + vg.info n_errs_found : show the nr of errors found so far + vg.kill : kill the Valgrind process + vg.set gdb_output : set valgrind output to gdb + vg.set log_output : set valgrind output to log + vg.set mixed_output : set valgrind output to log, interactive output to gdb + vg.set vgdb-error : debug me at error >= + +memcheck monitor commands: + mc.get_vbits [] + returns validity bits for (or 1) bytes at + bit values 0 = valid, 1 = invalid, __ = unaddressable byte + Example: mc.get_vbits 0x........ 10 + mc.make_memory [noaccess|undefined + |defined|ifaddressabledefined] [] + mark (or 1) bytes at with the given accessibility + mc.check_memory [addressable|defined] [] + check that (or 1) bytes at have the given accessibility + and outputs a description of + mc.leak_check [full*|summary] + [reachable|leakpossible*|definiteleak] + * = defaults + Examples: mc.leak_check + mc.leak_check any summary + +general valgrind monitor commands: + help [debug] : monitor command help. With debug: + debugging commands + vg.wait [] : sleep (default 0) then continue + vg.info all_errors : show all errors found so far + vg.info last_error : show last error found + vg.info n_errs_found : show the nr of errors found so far + vg.kill : kill the Valgrind process + vg.set gdb_output : set valgrind output to gdb + vg.set log_output : set valgrind output to log + vg.set mixed_output : set valgrind output to log, interactive output to gdb + vg.set vgdb-error : debug me at error >= +debugging valgrind internals monitor commands: + vg.info gdbserver_status : show gdbserver status + vg.info memory : show valgrind heap memory stats + vg.set debuglog : set valgrind debug log level to + vg.translate [] : debug translation of with + (default traceflags 0b00100000 : show after instrumentation) + An additional flag 0b100000000 allows to show gdbserver instrumentation + +memcheck monitor commands: + mc.get_vbits [] + returns validity bits for (or 1) bytes at + bit values 0 = valid, 1 = invalid, __ = unaddressable byte + Example: mc.get_vbits 0x........ 10 + mc.make_memory [noaccess|undefined + |defined|ifaddressabledefined] [] + mark (or 1) bytes at with the given accessibility + mc.check_memory [addressable|defined] [] + check that (or 1) bytes at have the given accessibility + and outputs a description of + mc.leak_check [full*|summary] + [reachable|leakpossible*|definiteleak] + * = defaults + Examples: mc.leak_check + mc.leak_check any summary + +monitor command request to kill this process diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.vgtest new file mode 100644 index 000000000..9f88c4980 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mchelp.vgtest @@ -0,0 +1,9 @@ +# test the memcheck monitor help +prog: t +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mchelp +stdout_filter: filter_make_empty +stderr_filter: filter_make_empty +progB: vgdb +argsB: --wait=60 --vgdb-prefix=./vgdb-prefix-mchelp -c help -c help debug -c vg.kill +stdoutB_filter: filter_memcheck_monitor +stderrB_filter: filter_vgdb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stderr.exp new file mode 100644 index 000000000..502dd8a37 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stderr.exp @@ -0,0 +1,4 @@ +loops/sleep_ms/burn/threads_spec: 1 0 2000000000 ------B- +main ready to sleep and/or burn +pid .... Thread .... inferior call pushed from gdb in mcinfcallRU.stdinB.gdb +Reset valgrind output to log (orderly_finish) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stdinB.gdb new file mode 100644 index 000000000..7ca7290a9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.stdinB.gdb @@ -0,0 +1,22 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcinfcallRU +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# We will interrupt in a few seconds (be sure all tasks are in +# Runnable/Yielding state). We need to wait enough seconds to be sure +# Valgrind has started to execute the threads. +# On a heavily loaded slow arm gcc compile farm system, 5 seconds +# was not enough. +shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-mcinfcallRU 10 +# +continue +info threads +thread apply all bt full +# Would like to call this for all threads with 'thread apply all', but due to unfair scheduling, +# the below can either take a long time and/or have threads finished +# before they have a chance to execute the whoami +# thread apply all +print whoami("inferior call pushed from gdb in mcinfcallRU.stdinB.gdb") +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.vgtest new file mode 100644 index 000000000..a193acf6b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallRU.vgtest @@ -0,0 +1,15 @@ +# test inferior calls when all threads are in Runnable or Yielding mode +prog: sleepers +# We would like to use B-B-B-B- instead of ------B- but this gives +# too much dependencies to the scheduler fairness. +args: 1 0 2000000000 ------B- +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcinfcallRU +# filter_gdb to replace pid and Thread numbers in the output of the program: +stderr_filter: filter_gdb +# Disable on Darwin: inferior call rejected as it cannot find malloc. +prereq: test -e gdb && ../tests/os_test linux +progB: gdb +argsB: --quiet -l 60 --nx ./sleepers +stdinB: mcinfcallRU.stdinB.gdb +stdoutB_filter: filter_make_empty +stderrB_filter: filter_make_empty diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderr.exp new file mode 100644 index 000000000..a6ac61769 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderr.exp @@ -0,0 +1,7 @@ +loops/sleep_ms/burn/threads_spec: 100 100000000 1000000000 -S-S-SB- +Brussels ready to sleep and/or burn +London ready to sleep and/or burn +Petaouchnok ready to sleep and/or burn +main ready to sleep and/or burn +pid .... Thread .... thread 1 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb +Reset valgrind output to log (orderly_finish) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderrB.exp new file mode 100644 index 000000000..860e07ef6 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stderrB.exp @@ -0,0 +1,51 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +Breakpoint 1 at 0x........: file sleepers.c, line 72. +Continuing. +[New Thread ....] +Breakpoint 1, sleeper_or_burner (v=0x........) at sleepers.c:72 +72 int i = 0; +Continuing. +[New Thread ....] +Breakpoint 1, sleeper_or_burner (v=0x........) at sleepers.c:72 +72 int i = 0; +Continuing. +[New Thread ....] +Breakpoint 1, sleeper_or_burner (v=0x........) at sleepers.c:72 +72 int i = 0; +Continuing. +Breakpoint 1, sleeper_or_burner (v=0x........) at sleepers.c:72 +72 int i = 0; +Continuing. +Program received signal SIGTRAP, Trace/breakpoint trap. +0x........ in do_burn () at sleepers.c:39 +39 for (i = 0; i < burn; i++) loopnr++; +[Switching to thread 1 (Thread ....)]#0 0x........ in do_burn () at sleepers.c:39 +39 for (i = 0; i < burn; i++) loopnr++; +$1 = void +[Switching to thread 2 (Thread ....)]#0 0x........ in syscall ... +Could not write register "xxx"; remote failure reply 'E. +ERROR changing register xxx regno y +gdb commands changing registers (pc, sp, ...) (e.g. 'jump', +set pc, calling from gdb a function in the debugged process, ...) +can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state +Thread status is VgTs_WaitSys +' +[Switching to thread 3 (Thread ....)]#0 0x........ in syscall ... +Could not write register "xxx"; remote failure reply 'E. +ERROR changing register xxx regno y +gdb commands changing registers (pc, sp, ...) (e.g. 'jump', +set pc, calling from gdb a function in the debugged process, ...) +can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state +Thread status is VgTs_WaitSys +' +[Switching to thread 4 (Thread ....)]#0 0x........ in syscall ... +Could not write register "xxx"; remote failure reply 'E. +ERROR changing register xxx regno y +gdb commands changing registers (pc, sp, ...) (e.g. 'jump', +set pc, calling from gdb a function in the debugged process, ...) +can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state +Thread status is VgTs_WaitSys +' +monitor command request to kill this process +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stdinB.gdb new file mode 100644 index 000000000..4ccbcdccf --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.stdinB.gdb @@ -0,0 +1,29 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcinfcallWSRU +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# ensure all threads are known +break sleeper_or_burner +continue +continue +continue +continue +# +# Here the 4 threads have been started. +# We will interrupt in a few seconds (be sure all tasks are in Runnable/Yielding state +# or in WaitSys state. +shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-mcinfcallWSRU 10 +# +continue +# +thread 1 +print whoami("thread 1 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb") +thread 2 +print whoami("thread 2 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb") +thread 3 +print whoami("thread 3 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb") +thread 4 +print whoami("thread 4 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb") +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.vgtest new file mode 100644 index 000000000..0bb4b6ad2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinfcallWSRU.vgtest @@ -0,0 +1,15 @@ +# test inferior calls when some threads are in Runnable or Yielding mode, +# some threads are in WaitSys. +prog: sleepers +# We would like to have two threads running (i.e. -S-SB-B-) +# but this introduces too much dependencies to scheduler fairness. +args: 100 100000000 1000000000 -S-S-SB- +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcinfcallWSRU +# Disable on Darwin: inferior call rejected as it cannot find malloc. +prereq: test -e gdb && ../tests/os_test linux +# filter_gdb to replace pid and Thread numbers in the output of the program: +stderr_filter: filter_gdb +progB: gdb +argsB: --quiet -l 60 --nx 1>&2 ./sleepers +stdinB: mcinfcallWSRU.stdinB.gdb +stderrB_filter: filter_gdb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stderrB.exp new file mode 100644 index 000000000..41e660bd3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stderrB.exp @@ -0,0 +1,14 @@ +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.kill to pid .... +readchar: Got EOF +error reading packet diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stdoutB.exp new file mode 100644 index 000000000..e12ed9055 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.stdoutB.exp @@ -0,0 +1,23 @@ +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +monitor command request to kill this process diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.vgtest new file mode 100644 index 000000000..ab933bbe7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeRU.vgtest @@ -0,0 +1,12 @@ +# test that vgdb can invoke a process when all threads are in Runnable or Yielding mode +# If the test goes wrong, it might consume CPU during a long time. +prog: sleepers +args: 1 0 1000000000 B-B-B-B- +vgopts: --tool=memcheck --vgdb=yes --vgdb-prefix=./vgdb-prefix-mcinvokeRU +stderr_filter: filter_make_empty +# as the Valgrind process is always busy, we do not need the vgdb.ptraceinvoker prereq. +progB: invoker +argsB: 10 --vgdb-prefix=./vgdb-prefix-mcinvokeRU --wait=60 -c vg.wait 0 +# if the --wait is not enough, the test will fail or block. +stdoutB_filter: filter_memcheck_monitor +stderrB_filter: filter_vgdb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stderrB.exp new file mode 100644 index 000000000..41e660bd3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stderrB.exp @@ -0,0 +1,14 @@ +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.wait 0 to pid .... +sending command vg.kill to pid .... +readchar: Got EOF +error reading packet diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stdoutB.exp new file mode 100644 index 000000000..e12ed9055 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.stdoutB.exp @@ -0,0 +1,23 @@ +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +gdbserver: continuing in 0 ms ... +gdbserver: continuing after wait ... +monitor command request to kill this process diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.vgtest new file mode 100644 index 000000000..1be48e837 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcinvokeWS.vgtest @@ -0,0 +1,12 @@ +# test that vgdb can invoke a process when all threads are in WaitSys mode. +# If the test goes wrong, it might be blocked during 10000 seconds. +prog: sleepers +args: 1 10000000 0 -S-S-S-S +vgopts: --tool=memcheck --vgdb=yes --vgdb-prefix=./vgdb-prefix-mcinvokeWS +stderr_filter: filter_make_empty +prereq: test -f vgdb.ptraceinvoker +progB: invoker +argsB: 10 --vgdb-prefix=./vgdb-prefix-mcinvokeWS --wait=60 -c vg.wait 0 +# if the --wait is not enough, the test will fail or block +stdoutB_filter: filter_memcheck_monitor +stderrB_filter: filter_vgdb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderr.exp new file mode 100644 index 000000000..734ff4a54 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderr.exp @@ -0,0 +1,40 @@ +(action at startup) vgdb me ... +expecting details 10 bytes reachable +10 bytes in 1 blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +expecting to have NO details +expecting details +10 bytes lost, +21 bytes reachable +expecting details +65 bytes reachable +expecting to have NO details +expecting details +10 bytes reachable +expecting details -10 bytes reachable, +10 bytes lost +expecting details -10 bytes lost, +10 bytes reachable +expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable +finished +leaked: 32 bytes in 1 blocks +dubious: 0 bytes in 0 blocks +reachable: 64 bytes in 3 blocks +suppressed: 0 bytes in 0 blocks +10 bytes in 1 blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +21 bytes in 1 blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:23) + by 0x........: main (leak-delta.c:60) + +32 bytes in 1 blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:28) + by 0x........: main (leak-delta.c:60) + +33 bytes in 1 blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:28) + by 0x........: main (leak-delta.c:60) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderrB.exp new file mode 100644 index 000000000..081cde75f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stderrB.exp @@ -0,0 +1,58 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +10 bytes in 1 blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +10 (+10) bytes in 1 (+1) blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +21 (+21) bytes in 1 (+1) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:23) + by 0x........: main (leak-delta.c:60) + +65 (+65) bytes in 2 (+2) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:28) + by 0x........: main (leak-delta.c:60) + +10 (+10) bytes in 1 (+1) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +0 (-10) bytes in 0 (-1) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +10 (+10) bytes in 1 (+1) blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +0 (-10) bytes in 0 (-1) blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +10 (+10) bytes in 1 (+1) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:14) + by 0x........: main (leak-delta.c:60) + +32 (+32) bytes in 1 (+1) blocks are definitely lost in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:28) + by 0x........: main (leak-delta.c:60) + +33 (-32) bytes in 1 (-1) blocks are still reachable in loss record ... of ... + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: f (leak-delta.c:28) + by 0x........: main (leak-delta.c:60) + +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdinB.gdb new file mode 100644 index 000000000..15c533b4a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdinB.gdb @@ -0,0 +1,76 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcleak +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# +# insert break: +break breakme +# +# continue till each break and execute via gdb the leak search as done in the C code. +continue +# +# +# fprintf(stderr, "expecting details 10 bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check any reachable full +continue +# VALGRIND_DO_LEAK_CHECK; +# +# fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); +up +monitor mc.leak_check increased reachable full +continue +# VALGRIND_DO_ADDED_LEAK_CHECK; +# +# b10--; // lose b10 +# b21 = malloc (21); +# fprintf(stderr, "expecting details +10 bytes lost, +21 bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check increased reachable full +continue +# VALGRIND_DO_ADDED_LEAK_CHECK; +# +# for (i = 0; i < 2; i ++) +# b32_33[i] = malloc (32+i); +# fprintf(stderr, "expecting details +65 bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check increased reachable full +continue +# VALGRIND_DO_ADDED_LEAK_CHECK; +# +# fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check increased reachable full +continue +# VALGRIND_DO_ADDED_LEAK_CHECK; +# +# b10++; +# fprintf(stderr, "expecting details +10 bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check increased reachable full +continue +# VALGRIND_DO_ADDED_LEAK_CHECK; +# +# b10--; +# fprintf(stderr, "expecting details -10 bytes reachable, +10 bytes lost\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check changed reachable full +continue +# VALGRIND_DO_CHANGED_LEAK_CHECK; +# +# b10++; +# fprintf(stderr, "expecting details -10 bytes lost, +10 bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check changed reachable full +continue +# VALGRIND_DO_CHANGED_LEAK_CHECK; +# +# b32_33[0]--; +# fprintf(stderr, "expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable\n"); fflush(stderr); breakme(); +up +monitor mc.leak_check changed reachable full +continue +# VALGRIND_DO_CHANGED_LEAK_CHECK; +# +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdoutB.exp new file mode 100644 index 000000000..b3e1aec61 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.stdoutB.exp @@ -0,0 +1,49 @@ +Remote debugging using | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcleak +0x........ in _start () from ...start file... +Breakpoint 1 at 0x........: file leak-delta.c, line 9. +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:16 +16 fprintf(stderr, "expecting details 10 bytes reachable\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:19 +19 fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:24 +24 fprintf(stderr, "expecting details +10 bytes lost, +21 bytes reachable\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:29 +29 fprintf(stderr, "expecting details +65 bytes reachable\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:32 +32 fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:36 +36 fprintf(stderr, "expecting details +10 bytes reachable\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:40 +40 fprintf(stderr, "expecting details -10 bytes reachable, +10 bytes lost\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:44 +44 fprintf(stderr, "expecting details -10 bytes lost, +10 bytes reachable\n"); fflush(stderr); breakme(); +Continuing. +Breakpoint 1, breakme () at leak-delta.c:9 +9 static void breakme() {}; +#1 0x........ in f () at leak-delta.c:48 +48 fprintf(stderr, "expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable\n"); fflush(stderr); breakme(); +Continuing. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.vgtest new file mode 100644 index 000000000..71d87bc28 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcleak.vgtest @@ -0,0 +1,12 @@ +# test the memcheck leak functionality. +prog: ../memcheck/tests/leak-delta +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcleak -q --leak-check=yes --show-reachable=yes --leak-resolution=high +# temorarily disabled, waiting for leak-delta test program (next patch) +prereq: test -e gdb -a -x ../memcheck/tests/leak-delta +stdout_filter: filter_memcheck_monitor +stderr_filter: filter_memcheck_monitor +progB: gdb +argsB: --quiet -l 60 --nx ../memcheck/tests/leak-delta +stdinB: mcleak.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_memcheck_monitor diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stderr.exp new file mode 100644 index 000000000..f60f30e84 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stderr.exp @@ -0,0 +1,20 @@ + +(action at startup) vgdb me ... +Test 1: Invalid write of size 4 + at 0x........: test1 (faultstatus.c:105) + by 0x........: main (faultstatus.c:168) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + PASS +Test 2: PASS +Test 3: PASS +Test 4: PASS + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 11 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdinB.gdb new file mode 100644 index 000000000..ef904d80a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdinB.gdb @@ -0,0 +1,42 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcsignopass +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# instruct gdb to not pass (i.e. ignore) these signals. +# +# Trap the below signals, we make them stop and then continue. +# For SIGSEGV, we make it continue a few times, till we pass it. +handle SIGSEGV nopass print stop +handle SIGBUS pass print stop +handle SIGFPE pass print stop +# +continue +# +# SIGTRAP : caused by invalid write error detected by memcheck +continue +# +# SIGSEGV can't be ignored, so it is re-signaled. We continue many times +# to be sure it is this signal which is re-signalled. Then will pass it. +continue +continue +continue +continue +continue +continue +continue +continue +continue +# +# Change handling so that we just see the 2nd SIGSEGV +handle SIGSEGV pass print nostop +continue +# +# SIGBUS will be shown and passed: +continue +# +# then SIGFPE is shown and passed: +continue +# +# program will exit +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdoutB.exp new file mode 100644 index 000000000..06c00cab1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.stdoutB.exp @@ -0,0 +1,62 @@ +Signal Stop Print Pass to program Description +SIGSEGV Yes Yes No Segmentation fault +Signal Stop Print Pass to program Description +SIGBUS Yes Yes Yes Bus error +Signal Stop Print Pass to program Description +SIGFPE Yes Yes Yes Arithmetic exception +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Signal Stop Print Pass to program Description +SIGSEGV No Yes Yes Segmentation fault +Continuing. +Program received signal SIGSEGV, Segmentation fault. +Program received signal SIGBUS, Bus error. +0x........ in test3 () at faultstatus.c:115 +115 mapping[FILESIZE+10]; +Continuing. +Program received signal SIGFPE, Arithmetic exception. +0x........ in test4 () at faultstatus.c:120 +120 volatile int v = 44/zero(); +Continuing. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.vgtest new file mode 100644 index 000000000..a5a2ff6c1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsignopass.vgtest @@ -0,0 +1,16 @@ +# test the signal handling, when signals are *not* passed to the Valgrind guest. +# We detect this two ways: +# the gdb output will not contain the signal handling +# faultstatus C code will report a failure for the signal not passed +# (i.e. SIGBUG, Test 3). Other tests will be succesful, because signals +# are eventually passed. +prereq: test -e gdb +prog: ../none/tests/faultstatus +vgopts: --tool=memcheck --vgdb=full --vex-iropt-precise-memory-exns=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcsignopass +stderr_filter: filter_memcheck_monitor +progB: gdb +argsB: --quiet -l 60 --nx ../none/tests/faultstatus +stdinB: mcsignopass.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_make_empty + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stderr.exp new file mode 100644 index 000000000..af2b53aa5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stderr.exp @@ -0,0 +1,20 @@ + +(action at startup) vgdb me ... +Test 1: Invalid write of size 4 + at 0x........: test1 (faultstatus.c:105) + by 0x........: main (faultstatus.c:168) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + PASS +Test 2: PASS +Test 3: PASS +Test 4: PASS + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdinB.gdb new file mode 100644 index 000000000..0e1799a5e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdinB.gdb @@ -0,0 +1,26 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcsigpass +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# After this continue, we will receive 5 signals. +continue +# +# SIGTRAP : caused by invalid write error detected by memcheck +continue +# +# SIGSEGV : line 99 +continue +# +# SIGSEGV : line 104 +continue +# +# SIGBUS : line 109 +continue +# +# SIGFPE : line 114 +continue +# +# program will exit +quit + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdoutB.exp new file mode 100644 index 000000000..c7723dc32 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.stdoutB.exp @@ -0,0 +1,17 @@ +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test1 () at faultstatus.c:105 +105 *BADADDR = 'x'; +Continuing. +Program received signal SIGSEGV, Segmentation fault. +0x........ in test2 () at faultstatus.c:110 +110 mapping[0] = 'x'; +Continuing. +Program received signal SIGBUS, Bus error. +0x........ in test3 () at faultstatus.c:115 +115 mapping[FILESIZE+10]; +Continuing. +Program received signal SIGFPE, Arithmetic exception. +0x........ in test4 () at faultstatus.c:120 +120 volatile int v = 44/zero(); +Continuing. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.vgtest new file mode 100644 index 000000000..532a62e3c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcsigpass.vgtest @@ -0,0 +1,11 @@ +# test the signal handling, when signals are passed to the Valgrind guest. +prereq: test -e gdb +prog: ../none/tests/faultstatus +vgopts: --tool=memcheck --vgdb=full --vex-iropt-precise-memory-exns=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcsigpass +stderr_filter: filter_memcheck_monitor +progB: gdb +argsB: --quiet -l 60 --nx ../none/tests/faultstatus +stdinB: mcsigpass.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_make_empty + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stderrB.exp new file mode 100644 index 000000000..6b4635e5a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stderrB.exp @@ -0,0 +1,55 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +Address 0x........ len 10 addressable + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 10 defined + Address 0x........ is 0 bytes inside data symbol "undefined" +00000000 00000000 0000 +Address 0x........ len 10 addressable + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 10 not defined: +Uninitialised value at 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +ff00ff00 ff00ff00 ff00 +Address 0x........ len 10 addressable + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 10 not defined: +Uninitialised value at 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +ff000000 0000ff00 ff00 +Address 0x........ len 10 addressable + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 10 not defined: +Uninitialised value at 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +ff00ffff ffffff00 ff00 +Address 0x........ len 2 addressable + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 2 not defined: +Uninitialised value at 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +ff00 +Address 0x........ len 2 not addressable: +bad address 0x........ + Address 0x........ is 2 bytes inside data symbol "undefined" +Address 0x........ len 2 not addressable: +bad address 0x........ + Address 0x........ is 2 bytes inside data symbol "undefined" +____ +Address 0x........ len 2 has 2 bytes unaddressable +Address 0x........ len 6 addressable + Address 0x........ is 4 bytes inside data symbol "undefined" +Address 0x........ len 6 not defined: +Uninitialised value at 0x........ + Address 0x........ is 4 bytes inside data symbol "undefined" +ffffff00 ff00 +Address 0x........ len 10 not addressable: +bad address 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +Address 0x........ len 10 not addressable: +bad address 0x........ + Address 0x........ is 0 bytes inside data symbol "undefined" +0000____ 00000000 0000 +Address 0x........ len 10 has 2 bytes unaddressable +monitor command request to kill this process +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdinB.gdb new file mode 100644 index 000000000..4fc1eeb3f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdinB.gdb @@ -0,0 +1,74 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcvabits +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# +# insert break: +break breakme +# +# continue till //1break: +continue +# +# up to main: +up +# +# print local string variables: +print main_name +print undefined +# save address of undefined +set $0xundefined = &undefined +# +# Verif A-bits, V-bits, Get V-bits: A,V,G [0..9] +eval "monitor mc.check_memory addressable 0x%x 10", $0xundefined +eval "monitor mc.check_memory defined 0x%x 10", $0xundefined +eval "monitor mc.get_vbits 0x%x 10", $0xundefined +# +# continue till //2break: +continue +# +# A,V,G [0..9] after the undefinition of some bytes by executable: +eval "monitor mc.check_memory addressable 0x%x 10", $0xundefined +eval "monitor mc.check_memory defined 0x%x 10", $0xundefined +eval "monitor mc.get_vbits 0x%x 10", $0xundefined +# +# Redefine [2..4] +set $0xundefined_2 = (char*)$0xundefined + 2 +eval "monitor mc.make_memory defined 0x%x 3", $0xundefined_2 +# A,V,G +eval "monitor mc.check_memory addressable 0x%x 10", $0xundefined +eval "monitor mc.check_memory defined 0x%x 10", $0xundefined +eval "monitor mc.get_vbits 0x%x 10", $0xundefined +# +# Undefine [2..5] +eval "monitor mc.make_memory undefined 0x%x 4", $0xundefined_2 +# A,V,G [0..9] +eval "monitor mc.check_memory addressable 0x%x 10", $0xundefined +eval "monitor mc.check_memory defined 0x%x 10", $0xundefined +eval "monitor mc.get_vbits 0x%x 10", $0xundefined +# +# noaccess [2..3] +eval "monitor mc.make_memory noaccess 0x%x 2", $0xundefined_2 +# A,V,G [0..1] +eval "monitor mc.check_memory addressable 0x%x 2", $0xundefined +eval "monitor mc.check_memory defined 0x%x 2", $0xundefined +eval "monitor mc.get_vbits 0x%x 2", $0xundefined +# A,V,G [2..3] +eval "monitor mc.check_memory addressable 0x%x 2", $0xundefined_2 +eval "monitor mc.check_memory defined 0x%x 2", $0xundefined_2 +eval "monitor mc.get_vbits 0x%x 2", $0xundefined_2 +# A,V,G [4..9] +set $0xundefined_4 = (char*) $0xundefined_2 + 2 +eval "monitor mc.check_memory addressable 0x%x 6", $0xundefined_4 +eval "monitor mc.check_memory defined 0x%x 6", $0xundefined_4 +eval "monitor mc.get_vbits 0x%x 6", $0xundefined_4 +# +# ifaddressabledefined undefined[0..9] +eval "monitor mc.make_memory ifaddressabledefined 0x%x 10", $0xundefined +# A,V,G +eval "monitor mc.check_memory addressable 0x%x 10", $0xundefined +eval "monitor mc.check_memory defined 0x%x 10", $0xundefined +eval "monitor mc.get_vbits 0x%x 10", $0xundefined +# +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdoutB.exp new file mode 100644 index 000000000..e8d366156 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.stdoutB.exp @@ -0,0 +1,11 @@ +Breakpoint 1 at 0x........: file t.c, line 100. +Continuing. +Breakpoint 1, breakme (line=112) at t.c:100 +100 if (line > 1000) +#1 0x........ in main (argc=1, argv=0x........) at t.c:112 +112 breakme(__LINE__); //break1 +$1 = 0x........ "main name" +$2 = "undefined" +Continuing. +Breakpoint 1, breakme (line=117) at t.c:100 +100 if (line > 1000) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.vgtest new file mode 100644 index 000000000..48b35e8a3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcvabits.vgtest @@ -0,0 +1,13 @@ +# test the memcheck V and A bits monitor functionality +prereq: test -e gdb +prog: t +vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcvabits +stdout_filter: filter_make_empty +stderr_filter: filter_make_empty +prereq: test -e ./gdb.eval +progB: gdb +argsB: --quiet -l 60 --nx ./t +stdinB: mcvabits.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_memcheck_monitor + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stderr.exp new file mode 100644 index 000000000..b73233a98 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stderr.exp @@ -0,0 +1,25 @@ + +(action at startup) vgdb me ... +breakme function called from line 19 +before reading 0/4/8 +u: Expected value at 0 +f: Expected value at 4 +d: Expected value at 8 +before writing 0 +before writing 4 +before writing 8 +after writing 8 +value UndeFineD +before rewriting 0 +before rewriting 4 +before rewriting 8 +value 0nde4ine8 + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdinB.gdb new file mode 100644 index 000000000..243453bd4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdinB.gdb @@ -0,0 +1,25 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcwatchpoints +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# +# insert break: +break breakme +# +# continue till //break1: +continue +# +# insert the watchpoints +rwatch undefined[0] +awatch undefined[4] +watch undefined[8] +# +# now we should encounter 4 break points +continue +continue +continue +continue +del +continue +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdoutB.exp new file mode 100644 index 000000000..0604aebcb --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.stdoutB.exp @@ -0,0 +1,31 @@ +Breakpoint 1 at 0x........: file watchpoints.c, line 7. +Continuing. +Breakpoint 1, breakme (line=19) at watchpoints.c:7 +7 fprintf(stderr, "breakme function called from line %d\n", line); +Hardware read watchpoint 2: undefined[0] +Hardware access (read/write) watchpoint 3: undefined[4] +Hardware watchpoint 4: undefined[8] +Continuing. +Hardware read watchpoint 2: undefined[0] +Value = 117 'u' +main (argc=1, argv=0x........) at watchpoints.c:23 +23 if (undefined[0] == 'u') +Continuing. +Hardware access (read/write) watchpoint 3: undefined[4] +Value = 102 'f' +main (argc=1, argv=0x........) at watchpoints.c:28 +28 if (undefined[4] == 'f') +Continuing. +Hardware access (read/write) watchpoint 3: undefined[4] +Old value = 102 'f' +New value = 70 'F' +main (argc=1, argv=0x........) at watchpoints.c:46 +46 fprintf(stderr, "before writing 8\n"); +Continuing. +Hardware watchpoint 4: undefined[8] +Old value = 100 'd' +New value = 68 'D' +main (argc=1, argv=0x........) at watchpoints.c:49 +49 fprintf(stderr, "after writing 8\n"); +Delete all breakpoints? (y or n) [answered Y; input not from terminal] +Continuing. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.vgtest new file mode 100644 index 000000000..f50405327 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mcwatchpoints.vgtest @@ -0,0 +1,13 @@ +# test the memcheck watchpoint functionality +# Note: we need --vgdb=full to stop at the instruction following the watchpoint. +prereq: test -e gdb +prog: watchpoints +vgopts: --tool=memcheck --vgdb=full --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcwatchpoints +stdout_filter: filter_make_empty +stderr_filter: filter_memcheck_monitor +progB: gdb +argsB: --quiet -l 60 --nx ./watchpoints +stdinB: mcwatchpoints.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_make_empty + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stderrB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stderrB.exp new file mode 100644 index 000000000..b9b311de9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stderrB.exp @@ -0,0 +1,23 @@ +relaying data between gdb and process .... +vgdb-error value changed from 0 to 999999 +general valgrind monitor commands: + help [debug] : monitor command help. With debug: + debugging commands + vg.wait [] : sleep (default 0) then continue + vg.info all_errors : show all errors found so far + vg.info last_error : show last error found + vg.info n_errs_found : show the nr of errors found so far + vg.kill : kill the Valgrind process + vg.set gdb_output : set valgrind output to gdb + vg.set log_output : set valgrind output to log + vg.set mixed_output : set valgrind output to log, interactive output to gdb + vg.set vgdb-error : debug me at error >= + +massif monitor commands: + ms.snapshot [] + ms.detailed_snapshot [] + takes a snapshot (or a detailed snapshot) + and saves it in + default is massif.vgdb.out + +monitor command request to kill this process +Remote connection closed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdinB.gdb new file mode 100644 index 000000000..5c403781b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdinB.gdb @@ -0,0 +1,22 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mssnapshot +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# +# insert break: +break main +# +# continue till main +continue +# +# test the massif help +monitor help +# +# test non detailed and detailed snapshot +monitor ms.snapshot +monitor ms.detailed_snapshot +# +# +monitor vg.kill +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdoutB.exp new file mode 100644 index 000000000..a2a7c5531 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.stdoutB.exp @@ -0,0 +1,4 @@ +Breakpoint 1 at 0x........: file t.c, line 105. +Continuing. +Breakpoint 1, main (argc=1, argv=0x........) at t.c:105 +105 char *main_name __attribute__((unused)) = "main name"; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.vgtest new file mode 100644 index 000000000..cc111b1dd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/mssnapshot.vgtest @@ -0,0 +1,11 @@ +# test the memcheck monitor help +prereq: test -e gdb +prog: t +vgopts: --tool=massif --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mssnapshot +stdout_filter: filter_make_empty +stderr_filter: filter_make_empty +progB: gdb +argsB: --quiet -l 60 --nx ./t +stdinB: mssnapshot.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_vgdb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stderr.exp new file mode 100644 index 000000000..f6eef783a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stderr.exp @@ -0,0 +1,9 @@ +Nulgrind, the minimal Valgrind tool + +(action at startup) vgdb me ... +loops/sleep_ms/burn/threads_spec: 1000000000 1000000000 1000000000 BSBSBSBS +Brussels ready to sleep and/or burn +London ready to sleep and/or burn +Petaouchnok ready to sleep and/or burn +main ready to sleep and/or burn + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdinB.gdb b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdinB.gdb new file mode 100644 index 000000000..9fc513286 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdinB.gdb @@ -0,0 +1,39 @@ +# connect gdb to Valgrind gdbserver: +target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-nlcontrolc +echo vgdb launched process attached\n +monitor vg.set vgdb-error 999999 +# +# +# simulate control-c in a few seconds +shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 10 +# +continue +# +# Here, all tasks should be blocked in a loooonnnng select, all in WaitSys +info threads +# We will unblock them by changing their timeout argument +# To avoid going into the frame where the timeval arg is, +# it has been defined as global variables, as the nr +# of calls on the stack differs between 32bits and 64bits, +# and/or between OS. +# ensure select finishes in a few milliseconds max: +p t[0].tv_sec = 0 +p t[1].tv_sec = 0 +p t[2].tv_sec = 0 +p t[3].tv_sec = 0 +# +# We will change the burning parameters in a few seconds +shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 10 +# +continue +# +# Threads are burning cpu now +# We would like to test info threads here, but which thread are Runnable or Yielding +# is unpredictable. +# info threads +p burn = 0 +p loops = 0 +p report_finished = 0 +continue +# and the process should stop very quickly now +quit diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdoutB.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdoutB.exp new file mode 100644 index 000000000..90d6d3c79 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.stdoutB.exp @@ -0,0 +1,22 @@ +Continuing. +Program received signal SIGTRAP, Trace/breakpoint trap. +0x........ in syscall ... +[New Thread ....] +[New Thread ....] +[New Thread ....] + 4 Thread .... (tid 4 VgTs_WaitSys) 0x........ in syscall ... + 3 Thread .... (tid 3 VgTs_WaitSys) 0x........ in syscall ... + 2 Thread .... (tid 2 VgTs_WaitSys) 0x........ in syscall ... +* 1 Thread .... (tid 1 VgTs_WaitSys) 0x........ in syscall ... +$1 = 0 +$2 = 0 +$3 = 0 +$4 = 0 +Continuing. +Program received signal SIGTRAP, Trace/breakpoint trap. +0x........ in do_burn () at sleepers.c:39 +39 for (i = 0; i < burn; i++) loopnr++; +$5 = 0 +$6 = 0 +$7 = 0 +Continuing. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.vgtest new file mode 100644 index 000000000..64d21e317 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/nlcontrolc.vgtest @@ -0,0 +1,18 @@ +# test : +# info threads valgrind specific output +# the user can control-c an process with all threads in WaitSys +# and modify some variables +# the user can control-c an process with all threads in Running/Yielding +# and modify some variables +# sleepers is started with argument so that it will compute during ages. +# The variable modifications means it will exit in a reasonable time. +prog: sleepers +args: 1000000000 1000000000 1000000000 BSBSBSBS +vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlcontrolc +stderr_filter: filter_stderr +prereq: test -e gdb -a -f vgdb.ptraceinvoker +progB: gdb +argsB: --quiet -l 60 --nx ./sleepers +stdinB: nlcontrolc.stdinB.gdb +stdoutB_filter: filter_gdb +stderrB_filter: filter_make_empty diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/simulate_control_c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/simulate_control_c new file mode 100644 index 000000000..cea1e5963 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/simulate_control_c @@ -0,0 +1,11 @@ +#! /bin/sh + +# simulate control_c by sending SIGUSR1 to the vgdb using prefix $1 in $2 seconds +VGDBPID=`./vgdb -D $1 2>&1 | awk '/vgdb pid/ {print $3}'` +if [ "$VGDBPID" = "" ] +then + echo "simulate_control_c could not determine the vgdb pid with " $1 + exit 1 +fi +(sleep $2; kill -10 $VGDBPID) & + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/sleepers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/sleepers.c new file mode 100644 index 000000000..13cc1e0d8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/sleepers.c @@ -0,0 +1,196 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int loops = 15; // each thread+main will do this amount of loop +static int sleepms = 1000; // in each loop, will sleep "sleepms" milliseconds +static int burn = 0; // after each sleep, will burn cpu in a tight 'burn' loop + + +static pid_t gettid() +{ +#ifdef __NR_gettid + return syscall(__NR_gettid); +#else + return getpid(); +#endif +} +// will be invoked from gdb. +static void whoami(char *msg) __attribute__((unused)); +static void whoami(char *msg) +{ + fprintf(stderr, "pid %d Thread %d %s\n", getpid(), gettid(), msg); + fflush(stderr); +} + + +static void do_burn () +{ + int i; + int loopnr = 0; + // one single line for the below, to ensure interrupt on this line. + for (i = 0; i < burn; i++) loopnr++; +} + +static int thread_ready = 0; +static pthread_cond_t ready = PTHREAD_COND_INITIALIZER; +static pthread_mutex_t ready_mutex = PTHREAD_MUTEX_INITIALIZER; +static void signal_ready (void) +{ + int rc; + rc = pthread_mutex_lock(&ready_mutex); + if (rc != 0) + fprintf(stderr, "signal_ready lock error %d_n", rc); + thread_ready = 1; + rc = pthread_cond_signal(&ready); + if (rc != 0) + fprintf(stderr, "signal_ready signal error %d_n", rc); + rc = pthread_mutex_unlock(&ready_mutex); + if (rc != 0) + fprintf(stderr, "signal_ready unlock error %d_n", rc); +} + +struct spec { + char *name; + int sleep; + int burn; + int t; +}; +static struct timeval t[4]; +static int nr_sleeper_or_burner = 0; +static volatile int report_finished = 1; +// set to 0 to have no finish msg (as order is non-deterministic) +static void *sleeper_or_burner(void *v) +{ + int i = 0; + struct spec* s = (struct spec*)v; + + fprintf(stderr, "%s ready to sleep and/or burn\n", s->name); + fflush (stderr); + signal_ready(); + nr_sleeper_or_burner++; + + for (i = 0; i < loops; i++) { + if (sleepms > 0 && s->sleep) { + t[s->t].tv_sec = sleepms / 1000; + t[s->t].tv_usec = (sleepms % 1000) * 1000; + select (0, NULL, NULL, NULL, &t[s->t]); + } + if (burn > 0 && s->burn) + do_burn(); + } + if (report_finished) { + fprintf(stderr, "%s finished to sleep and/or burn\n", s->name); + fflush (stderr); + } + return NULL; +} + +// wait till a thread signals it is ready +static void wait_ready(void) +{ + int rc; + rc = pthread_mutex_lock(&ready_mutex); + if (rc != 0) + fprintf(stderr, "wait_ready lock error %d_n", rc); + while (! thread_ready && rc == 0) { + rc = pthread_cond_wait(&ready, &ready_mutex); + if (rc != 0) + fprintf(stderr, "wait_ready wait error %d_n", rc); + } + thread_ready = 0; + rc = pthread_mutex_unlock(&ready_mutex); + if (rc != 0) + fprintf(stderr, "wait_ready unlock error %d_n", rc); +} + +// We will lock ourselves on one single cpu. +// This bypasses the unfairness of the Valgrind scheduler +// when a multi-cpu machine has enough cpu to run all the +// threads wanting to burn cpu. +static void setaffinity(void) +{ +#ifdef VGO_linux + cpu_set_t single_cpu; + CPU_ZERO(&single_cpu); + CPU_SET(1, &single_cpu); + (void) sched_setaffinity(0, sizeof(single_cpu), &single_cpu); +#endif + // GDBTD: equivalent for Darwin ? +} + +int main (int argc, char *argv[]) +{ + char *threads_spec; + pthread_t ebbr, egll, zzzz; + struct spec b, l, p, m; + char *some_mem __attribute__((unused)) = malloc(100); + setaffinity(); + + if (argc > 1) + loops = atoi(argv[1]); + + if (argc > 2) + sleepms = atoi(argv[2]); + + if (argc > 3) + burn = atoll(argv[3]); + + if (argc > 4) + threads_spec = argv[4]; + else + threads_spec = "BSBSBSBS"; + + fprintf(stderr, "loops/sleep_ms/burn/threads_spec: %d %d %d %s\n", + loops, sleepms, burn, threads_spec); + fflush(stderr); + + b.name = "Brussels"; + b.burn = *threads_spec++ == 'B'; + b.sleep = *threads_spec++ == 'S'; + b.t = -1; + if (b.burn || b.sleep) { + b.t = 1; + pthread_create(&ebbr, NULL, sleeper_or_burner, &b); + wait_ready(); + } + + l.name = "London"; + l.burn = *threads_spec++ == 'B'; + l.sleep = *threads_spec++ == 'S'; + l.t = -1; + if (l.burn || l.sleep) { + l.t = 2; + pthread_create(&egll, NULL, sleeper_or_burner, &l); + wait_ready(); + } + + p.name = "Petaouchnok"; + p.burn = *threads_spec++ == 'B'; + p.sleep = *threads_spec++ == 'S'; + p.t = -1; + if (p.burn || p.sleep) { + p.t = 3; + pthread_create(&zzzz, NULL, sleeper_or_burner, &p); + wait_ready(); + } + + m.name = "main"; + m.burn = *threads_spec++ == 'B'; + m.sleep = *threads_spec++ == 'S'; + m.t = 0; + sleeper_or_burner(&m); + + if (b.t != -1) pthread_join(ebbr, NULL); + if (l.t != -1) pthread_join(egll, NULL); + if (p.t != -1) pthread_join(zzzz, NULL); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/t.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/t.c new file mode 100644 index 000000000..89ce57d04 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/t.c @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "../memcheck/memcheck.h" +int using_threads = 0; /* test collision with a global in gdbserver */ +/* we will undefine one char on two */ +static char undefined[10] = "undefined"; + +#define LOOPS 10000000 +static int loopmain, loopt1, loopt2; + +static double pi = 3.14159265358979323846264338327950288; + +static pid_t gettid() +{ +#ifdef __NT_gettid + return syscall(__NR_gettid); +#else + return getpid(); +#endif +} +static void whoami(char *msg) +{ + printf("pid %d Thread %d %s\n", getpid(), gettid(), msg); fflush(stdout); +} + +static int int_und; +static int sleeps = 15; +static void make_error (char *s) +{ + char *make_error_name __attribute__((unused)) = "make_error name"; + char c __attribute__((unused)); + double pi2 __attribute__((unused)) = 2.0 * pi; + whoami(s); + if (int_und == 0) + printf ("%s int_und is zero %d\n", s, int_und); + else + printf ("%s int_und is not zero\n", s); + fflush(stdout); +} + +static void level () +{ + char *level_name __attribute__((unused)) = "level name"; + make_error ("called from level"); +} + +static void loops (int *loopnr) +{ + int i, j; + for (i = 0; i < LOOPS; i++) + for (j = 0; j < LOOPS; j++) + (*loopnr)++; +} + +static void *brussels_fn(void *v) +{ + char *brussels_name __attribute__((unused)) = "Brussels"; + make_error ("called from Brussels"); + loopt1 = 1; + while (! (loopt1 && loopt2 && loopmain)) + loopt1++; + loops (&loopt1); + return NULL; +} +static void *london_fn(void *v) +{ + char *london_name __attribute__((unused)) = "London"; + make_error ("called from London"); + loopt2 = 1; + while (! (loopt1 && loopt2 && loopmain)) + loopt2++; + loops (&loopt2); + sleep(10); + return NULL; +} +static void *petaouchnok_fn(void *v) +{ + char *petaouchnok_name __attribute__((unused)) = "Petaouchnok"; + struct timeval t; + int i; + for (i = 1; i <= sleeps; i++) { + t.tv_sec = 5; + t.tv_usec = 0; + fprintf (stderr, "Petaouchnok sleep nr %d out of %d sleeping 5 seconds\n", + i, sleeps); + fflush(stderr); + select (0, NULL, NULL, NULL, &t); + } + return NULL; +} +static void leaf(void) {} +static void breakme(int line) +{ + if (line > 1000) + leaf(); // ensures not leaf, as ppc unwind implies VEX iropt precise exns +} +int main (int argc, char *argv[]) +{ + char *main_name __attribute__((unused)) = "main name"; + pthread_t ebbr, egll, zzzz; + int i = 1234; + char undef = '?'; + char *some_mem __attribute__((unused)) = malloc(100); + VALGRIND_MAKE_MEM_UNDEFINED(&undef, 1); + int len = strlen(undefined); + breakme(__LINE__); //break1 + for (i = len-1; i >= 0; i=i-2) + undefined[i] = undef; + *(char*)&int_und = undef; + + breakme(__LINE__); //break2 + + if (argc > 1) + sleeps = atoi(argv[1]); + + level(); + make_error ("called from main"); + + pthread_create(&ebbr, NULL, brussels_fn, NULL); + pthread_create(&egll, NULL, london_fn, NULL); + pthread_create(&zzzz, NULL, petaouchnok_fn, NULL); + + loopmain = 1; + while (! (loopt1 && loopt2 && loopmain)) + loopmain++; + for (i = 0; i < LOOPS; i++) { + loopmain++; + + if (loopmain == 10000) + make_error ("in main loop"); + } + + pthread_join(ebbr, NULL); + + make_error ("called from main (the end, before joining t3)"); + + pthread_join(zzzz, NULL); + + if (argc > 2) { + for (i = 0; i < 100; i++) + if ((*(&undef + i*4000) == 0) || (*(&undef - i*4000) == 0)) { + printf ("there are some null bytes here and there %d\n", i); + fflush(stdout); + } + } + exit(0); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/watchpoints.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/watchpoints.c new file mode 100644 index 000000000..ae05d8fce --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/gdbserver_tests/watchpoints.c @@ -0,0 +1,67 @@ +#include +#include +#include + +static void breakme(int line) +{ + fprintf(stderr, "breakme function called from line %d\n", line); + fflush(stderr); +} +static char undefined[10] = "undefined"; +int main (int argc, char *argv[]) +{ + + /* we will test + read watchpoint at 0, + read/write watchpoints at 4 + write watchpoints at 8 */ + + breakme(__LINE__); //break1 + + /* We verify read watchpoints are triggered at 0 and 4, not at 8 */ + fprintf(stderr, "before reading 0/4/8\n"); + if (undefined[0] == 'u') + fprintf(stderr, "u: Expected value at 0\n"); + else + fprintf(stderr, "u: Unexpected value at 0\n"); + + if (undefined[4] == 'f') + fprintf(stderr, "f: Expected value at 4\n"); + else + fprintf(stderr, "f: Unexpected value at 4\n"); + + if (undefined[8] == 'd') + fprintf(stderr, "d: Expected value at 8\n"); + else + fprintf(stderr, "d: Unexpected value at 8\n"); + + + /* We verify write watchpoints are triggered at 4 and 8, not at 0 */ + fprintf(stderr, "before writing 0\n"); + undefined[0] = 'U'; + + fprintf(stderr, "before writing 4\n"); + undefined[4] = 'F'; + + fprintf(stderr, "before writing 8\n"); + undefined[8] = 'D'; + + fprintf(stderr, "after writing 8\n"); + + /* after having remove the watchpoints, check we can read and write + without break. */ + fprintf(stderr, "value %s\n", undefined); + + fprintf(stderr, "before rewriting 0\n"); + undefined[0] = '0'; + + fprintf(stderr, "before rewriting 4\n"); + undefined[4] = '4'; + + fprintf(stderr, "before rewriting 8\n"); + undefined[8] = '8'; + + fprintf(stderr, "value %s\n", undefined); + + exit(0); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/glibc-2.X-drd.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/glibc-2.X-drd.supp index 98b594b64..441e7a81c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/glibc-2.X-drd.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/glibc-2.X-drd.supp @@ -93,6 +93,16 @@ fun:pthread_detach fun:pthread_detach } +{ + drd-libpthread-pthread_once + drd:ConflictingAccess + fun:pthread_once +} +{ + drd-libpthread-pthread_cancel_init + drd:ConflictingAccess + fun:pthread_cancel_init +} { drd-libpthread-_Unwind_ForcedUnwind drd:ConflictingAccess @@ -114,7 +124,6 @@ drd-libpthread-? drd:ConflictingAccess obj:/lib/libgcc_s.so.1 - obj:/lib/libpthread-2.11.2.so } { drd-libpthread-nanosleep diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/Makefile.in index 6f5b29c26..ad3c13e87 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/Makefile.in @@ -232,6 +232,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -261,12 +263,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -420,7 +417,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -449,6 +446,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -477,6 +479,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -529,6 +532,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -592,6 +598,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -634,6 +643,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = \ docs/hg-manual.xml \ README_MSMProp2.txt \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/docs/hg-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/docs/hg-manual.xml index 08ab3d546..25c2a69df 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/docs/hg-manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/docs/hg-manual.xml @@ -229,7 +229,7 @@ Thread #1: lock order "0x7FEFFFAB0 before 0x7FEFFFA80" violated When there are more than two locks in the cycle, the error is equally serious. However, at present Helgrind does not show the locks involved, so as to avoid flooding you with information. That could be -fixed in future. For example, here is a an example involving a cycle +fixed in future. For example, here is an example involving a cycle of five locks from a naive implementation the famous Dining Philosophers problem (see helgrind/tests/tc14_laog_dinphils.c). @@ -262,7 +262,7 @@ are race-free is one of the central difficulties of threaded programming. Reliably detecting races is a difficult problem, and most -of Helgrind's internals are devoted to do dealing with it. +of Helgrind's internals are devoted to dealing with it. We begin with a simple example. @@ -955,6 +955,28 @@ unlock(mx) unlock(mx) + + + + + + When enabled (not the default), Helgrind treats freeing of + heap memory as if the memory was written immediately before + the free. This exposes races where memory is referenced by + one thread, and freed by another, but there is no observable + synchronisation event to ensure that the reference happens + before the free. + + This functionality is new in Valgrind 3.7.0, and is + regarded as experimental. It is not enabled by default + because its interaction with custom memory allocators is not + well understood at present. User feedback is welcomed. + + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/helgrind.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/helgrind.h index 2c30a5aa5..148087708 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/helgrind.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/helgrind.h @@ -108,7 +108,7 @@ typedef _VG_USERREQ__HG_CLIENTREQ_UNIMP, /* char* */ _VG_USERREQ__HG_USERSO_SEND_PRE, /* arbitrary UWord SO-tag */ _VG_USERREQ__HG_USERSO_RECV_POST, /* arbitrary UWord SO-tag */ - _VG_USERREQ__HG_RESERVED1, /* Do not use */ + _VG_USERREQ__HG_USERSO_FORGET_ALL, /* arbitrary UWord SO-tag */ _VG_USERREQ__HG_RESERVED2, /* Do not use */ _VG_USERREQ__HG_RESERVED3, /* Do not use */ _VG_USERREQ__HG_RESERVED4, /* Do not use */ @@ -144,20 +144,21 @@ typedef #define DO_CREQ_v_W(_creqF, _ty1F,_arg1F) \ do { \ - long int _unused_res, _arg1; \ + long int _arg1; \ /* assert(sizeof(_ty1F) == sizeof(long int)); */ \ _arg1 = (long int)(_arg1F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ (_creqF), \ _arg1, 0,0,0,0); \ } while (0) #define DO_CREQ_W_W(_resF, _dfltF, _creqF, _ty1F,_arg1F) \ do { \ - long int _qzz_res, _arg1; \ + long int arg1; \ /* assert(sizeof(_ty1F) == sizeof(long int)); */ \ _arg1 = (long int)(_arg1F); \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, (_dfltF), \ + _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + (_dfltF), \ (_creqF), \ _arg1, 0,0,0,0); \ _resF = _qzz_res; \ @@ -165,12 +166,12 @@ typedef #define DO_CREQ_v_WW(_creqF, _ty1F,_arg1F, _ty2F,_arg2F) \ do { \ - long int _unused_res, _arg1, _arg2; \ + long int _arg1, _arg2; \ /* assert(sizeof(_ty1F) == sizeof(long int)); */ \ /* assert(sizeof(_ty2F) == sizeof(long int)); */ \ _arg1 = (long int)(_arg1F); \ _arg2 = (long int)(_arg2F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ (_creqF), \ _arg1,_arg2,0,0,0); \ } while (0) @@ -178,14 +179,14 @@ typedef #define DO_CREQ_v_WWW(_creqF, _ty1F,_arg1F, \ _ty2F,_arg2F, _ty3F, _arg3F) \ do { \ - long int _unused_res, _arg1, _arg2, _arg3; \ + long int _arg1, _arg2, _arg3; \ /* assert(sizeof(_ty1F) == sizeof(long int)); */ \ /* assert(sizeof(_ty2F) == sizeof(long int)); */ \ /* assert(sizeof(_ty3F) == sizeof(long int)); */ \ _arg1 = (long int)(_arg1F); \ _arg2 = (long int)(_arg2F); \ _arg3 = (long int)(_arg3F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ (_creqF), \ _arg1,_arg2,_arg3,0,0); \ } while (0) @@ -433,13 +434,15 @@ typedef /* ---------------------------------------------------------------- Create completely arbitrary happens-before edges between threads. - If thread T1 does ANNOTATE_HAPPENS_BEFORE(obj) and later (w.r.t. - some notional global clock for the computation) thread T2 does - ANNOTATE_HAPPENS_AFTER(obj), then Helgrind will regard all memory - accesses done by T1 before the ..BEFORE.. call as happening-before - all memory accesses done by T2 after the ..AFTER.. call. Hence - Helgrind won't complain about races if T2's accesses afterwards are - to the same locations as T1's accesses before. + + If threads T1 .. Tn all do ANNOTATE_HAPPENS_BEFORE(obj) and later + (w.r.t. some notional global clock for the computation) thread Tm + does ANNOTATE_HAPPENS_AFTER(obj), then Helgrind will regard all + memory accesses done by T1 .. Tn before the ..BEFORE.. call as + happening-before all memory accesses done by Tm after the + ..AFTER.. call. Hence Helgrind won't complain about races if Tm's + accesses afterwards are to the same locations as accesses before by + any of T1 .. Tn. OBJ is a machine word (unsigned long, or void*), is completely arbitrary, and denotes the identity of some synchronisation object @@ -453,6 +456,23 @@ typedef take the time to understand these two. They form the very essence of describing arbitrary inter-thread synchronisation events to Helgrind. You can get a long way just with them alone. + + See also, extensive discussion on semantics of this in + https://bugs.kde.org/show_bug.cgi?id=243935 + + ANNOTATE_HAPPENS_BEFORE_FORGET_ALL(obj) is interim until such time + as bug 243935 is fully resolved. It instructs Helgrind to forget + about any ANNOTATE_HAPPENS_BEFORE calls on the specified object, in + effect putting it back in its original state. Once in that state, + a use of ANNOTATE_HAPPENS_AFTER on it has no effect on the calling + thread. + + An implementation may optionally release resources it has + associated with 'obj' when ANNOTATE_HAPPENS_BEFORE_FORGET_ALL(obj) + happens. Users are recommended to use + ANNOTATE_HAPPENS_BEFORE_FORGET_ALL to indicate when a + synchronisation object is no longer needed, so as to avoid + potential indefinite resource leaks. ---------------------------------------------------------------- */ #define ANNOTATE_HAPPENS_BEFORE(obj) \ @@ -461,6 +481,8 @@ typedef #define ANNOTATE_HAPPENS_AFTER(obj) \ DO_CREQ_v_W(_VG_USERREQ__HG_USERSO_RECV_POST, void*,(obj)) +#define ANNOTATE_HAPPENS_BEFORE_FORGET_ALL(obj) \ + DO_CREQ_v_W(_VG_USERREQ__HG_USERSO_FORGET_ALL, void*,(obj)) /* ---------------------------------------------------------------- Memory publishing. The TSan sources say: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.c index 7cef39db7..172b1dae9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.c @@ -80,6 +80,8 @@ UWord HG_(clo_conflict_cache_size) = 1000000; Word HG_(clo_sanity_flags) = 0; +Bool HG_(clo_free_is_write) = False; + /*--------------------------------------------------------------------*/ /*--- end hg_basics.c ---*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.h index fc34a39e1..edf05e833 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_basics.h @@ -103,6 +103,12 @@ extern UWord HG_(clo_conflict_cache_size); SCE_{THREADS,LOCKS,BIGRANGE,ACCESS,LAOG}. */ extern Word HG_(clo_sanity_flags); +/* Treat heap frees as if the memory was written immediately prior to + the free. This shakes out races in which memory is referenced by + one thread, and freed by another, and there's no observable + synchronisation event to guarantee that the reference happens + before the free. */ +extern Bool HG_(clo_free_is_write); #endif /* ! __HG_BASICS_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_errors.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_errors.c index 497fe58f0..6076f475d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_errors.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_errors.c @@ -123,7 +123,8 @@ static Lock* mk_LockP_from_LockN ( Lock* lkn ) if (!VG_(lookupFM)( map_LockN_to_P, NULL, (Word*)&lkp, (Word)lkn)) { lkp = HG_(zalloc)( "hg.mLPfLN.2", sizeof(Lock) ); *lkp = *lkn; - lkp->admin = NULL; + lkp->admin_next = NULL; + lkp->admin_prev = NULL; lkp->magic = LockP_MAGIC; /* Forget about the bag of lock holders - don't copy that. Also, acquired_at should be NULL whenever heldBy is, and vice @@ -340,7 +341,7 @@ UInt HG_(update_extra) ( Error* err ) Thread* threadp; tl_assert(wherep); tl_assert(thrp); - threadp = libhb_get_Thr_opaque( thrp ); + threadp = libhb_get_Thr_hgthread( thrp ); tl_assert(threadp); xe->XE.Race.h2_ct_accEC = wherep; xe->XE.Race.h2_ct = threadp; @@ -473,8 +474,7 @@ void HG_(record_error_LockOrder)( { XError xe; tl_assert( HG_(is_sane_Thread)(thr) ); - if (!HG_(clo_track_lockorders)) - return; + tl_assert(HG_(clo_track_lockorders)); init_XError(&xe); xe.tag = XE_LockOrder; xe.XE.LockOrder.thr = thr; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_intercepts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_intercepts.c index 01e6ab27c..798ee6cd8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_intercepts.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_intercepts.c @@ -86,34 +86,33 @@ #define DO_CREQ_v_W(_creqF, _ty1F,_arg1F) \ do { \ - Word _unused_res, _arg1; \ + Word _arg1; \ assert(sizeof(_ty1F) == sizeof(Word)); \ _arg1 = (Word)(_arg1F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ - (_creqF), \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, (_creqF), \ _arg1, 0,0,0,0); \ } while (0) #define DO_CREQ_v_WW(_creqF, _ty1F,_arg1F, _ty2F,_arg2F) \ do { \ - Word _unused_res, _arg1, _arg2; \ + Word _arg1, _arg2; \ assert(sizeof(_ty1F) == sizeof(Word)); \ assert(sizeof(_ty2F) == sizeof(Word)); \ _arg1 = (Word)(_arg1F); \ _arg2 = (Word)(_arg2F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ - (_creqF), \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, (_creqF), \ _arg1,_arg2,0,0,0); \ } while (0) -#define DO_CREQ_W_WW(_resF, _creqF, _ty1F,_arg1F, _ty2F,_arg2F) \ +#define DO_CREQ_W_WW(_resF, _creqF, _ty1F,_arg1F, \ + _ty2F,_arg2F) \ do { \ Word _res, _arg1, _arg2; \ assert(sizeof(_ty1F) == sizeof(Word)); \ assert(sizeof(_ty2F) == sizeof(Word)); \ _arg1 = (Word)(_arg1F); \ _arg2 = (Word)(_arg2F); \ - VALGRIND_DO_CLIENT_REQUEST(_res, 2, \ + _res = VALGRIND_DO_CLIENT_REQUEST_EXPR(2, \ (_creqF), \ _arg1,_arg2,0,0,0); \ _resF = _res; \ @@ -122,15 +121,14 @@ #define DO_CREQ_v_WWW(_creqF, _ty1F,_arg1F, \ _ty2F,_arg2F, _ty3F, _arg3F) \ do { \ - Word _unused_res, _arg1, _arg2, _arg3; \ + Word _arg1, _arg2, _arg3; \ assert(sizeof(_ty1F) == sizeof(Word)); \ assert(sizeof(_ty2F) == sizeof(Word)); \ assert(sizeof(_ty3F) == sizeof(Word)); \ _arg1 = (Word)(_arg1F); \ _arg2 = (Word)(_arg2F); \ _arg3 = (Word)(_arg3F); \ - VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \ - (_creqF), \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, (_creqF), \ _arg1,_arg2,_arg3,0,0); \ } while (0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_lock_n_thread.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_lock_n_thread.h index dc983a5fb..e109b551e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_lock_n_thread.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_lock_n_thread.h @@ -54,8 +54,13 @@ typedef WordSet WordSetID; /* Synchronisation Objects, exported abstractly by libhb. */ typedef struct _SO SO; -/* Thr, libhb's private thread record, exported abstractly */ +/* Thr, libhb's private thread record, exported abstractly. Thr's are + allocated and never deallocated (simply leaked). Also ThrID, which + is a small integer which uniquely identifies a Thr and which is + used in ScalarTS because it is smaller than a Thr*. There is a 1-1 + mapping between Thr's and ThrIDs. */ typedef struct _Thr Thr; +typedef UInt ThrID; /* Stores information about a thread. Addresses of these also serve @@ -78,8 +83,8 @@ typedef /* ADMIN */ struct _Thread* admin; UInt magic; - Thr* hbthr; - ThreadId coretid; + Thr* hbthr; /* which in turn points back here .. */ + ThreadId coretid; /* .. via its hgthread field */ /* USEFUL */ WordSetID locksetA; /* WordSet of Lock* currently held by thread */ WordSetID locksetW; /* subset of locksetA held in w-mode */ @@ -114,7 +119,8 @@ typedef typedef struct _Lock { /* ADMIN */ - struct _Lock* admin; + struct _Lock* admin_next; /* fields for a double linked */ + struct _Lock* admin_prev; /* list of these locks */ ULong unique; /* used for persistence-hashing */ UInt magic; /* LockN_MAGIC or LockP_MAGIC */ /* EXPOSITION */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_main.c index 1be4f1382..bbda2c033 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_main.c @@ -52,6 +52,8 @@ #include "pub_tool_debuginfo.h" // VG_(find_seginfo), VG_(seginfo_soname) #include "pub_tool_redir.h" // sonames for the dynamic linkers #include "pub_tool_vki.h" // VKI_PAGE_SIZE +#include "pub_tool_libcproc.h" // VG_(atfork) +#include "pub_tool_aspacemgr.h" // VG_(am_is_valid_for_client) #include "hg_basics.h" #include "hg_wordset.h" @@ -79,11 +81,6 @@ worthwhile performance benefits over -O. */ -// FIXME catch sync signals (SEGV, basically) and unlock BHL, -// if held. Otherwise a LOCK-prefixed insn which segfaults -// gets Helgrind into a total muddle as the BHL will not be -// released after the insn. - // FIXME what is supposed to happen to locks in memory which // is relocated as a result of client realloc? @@ -99,12 +96,6 @@ /* ------------ Debug/trace options ------------ */ -// this is: -// shadow_mem_make_NoAccess: 29156 SMs, 1728 scanned -// happens_before_wrk: 1000 -// ev__post_thread_join: 3360 SMs, 29 scanned, 252 re-Excls -#define SHOW_EXPENSIVE_STUFF 0 - // 0 for silent, 1 for some stuff, 2 for lots of stuff #define SHOW_EVENTS 0 @@ -130,7 +121,9 @@ static void all__sanity_check ( Char* who ); /* fwds */ /* Admin linked list of Threads */ static Thread* admin_threads = NULL; -/* Admin linked list of Locks */ +/* Admin double linked list of Locks */ +/* We need a double linked list to properly and efficiently + handle del_LockN. */ static Lock* admin_locks = NULL; /* Mapping table for core ThreadIds to Thread* */ @@ -139,17 +132,10 @@ static Thread** map_threads = NULL; /* Array[VG_N_THREADS] of Thread* */ /* Mapping table for lock guest addresses to Lock* */ static WordFM* map_locks = NULL; /* WordFM LockAddr Lock* */ -/* The word-set universes for thread sets and lock sets. */ -static WordSetU* univ_tsets = NULL; /* sets of Thread* */ +/* The word-set universes for lock sets. */ static WordSetU* univ_lsets = NULL; /* sets of Lock* */ static WordSetU* univ_laog = NULL; /* sets of Lock*, for LAOG */ -/* never changed; we only care about its address. Is treated as if it - was a standard userspace lock. Also we have a Lock* describing it - so it can participate in lock sets in the usual way. */ -static Int __bus_lock = 0; -static Lock* __bus_lock_Lock = NULL; - /*----------------------------------------------------------------*/ /*--- Simple helpers for the data structures ---*/ @@ -180,10 +166,17 @@ static Thread* mk_Thread ( Thr* hbthr ) { } // Make a new lock which is unlocked (hence ownerless) +// and insert the new lock in admin_locks double linked list. static Lock* mk_LockN ( LockKind kind, Addr guestaddr ) { static ULong unique = 0; Lock* lock = HG_(zalloc)( "hg.mk_Lock.1", sizeof(Lock) ); - lock->admin = admin_locks; + /* begin: add to double linked list */ + if (admin_locks) + admin_locks->admin_prev = lock; + lock->admin_next = admin_locks; + lock->admin_prev = NULL; + admin_locks = lock; + /* end: add */ lock->unique = unique++; lock->magic = LockN_MAGIC; lock->appeared_at = NULL; @@ -194,12 +187,11 @@ static Lock* mk_LockN ( LockKind kind, Addr guestaddr ) { lock->heldW = False; lock->heldBy = NULL; tl_assert(HG_(is_sane_LockN)(lock)); - admin_locks = lock; return lock; } /* Release storage for a Lock. Also release storage in .heldBy, if - any. */ + any. Removes from admin_locks double linked list. */ static void del_LockN ( Lock* lk ) { tl_assert(HG_(is_sane_LockN)(lk)); @@ -207,6 +199,20 @@ static void del_LockN ( Lock* lk ) libhb_so_dealloc(lk->hbso); if (lk->heldBy) VG_(deleteBag)( lk->heldBy ); + /* begin: del lock from double linked list */ + if (lk == admin_locks) { + tl_assert(lk->admin_prev == NULL); + if (lk->admin_next) + lk->admin_next->admin_prev = NULL; + admin_locks = lk->admin_next; + } + else { + tl_assert(lk->admin_prev != NULL); + lk->admin_prev->admin_next = lk->admin_next; + if (lk->admin_next) + lk->admin_next->admin_prev = lk->admin_prev; + } + /* end: del */ VG_(memset)(lk, 0xAA, sizeof(*lk)); HG_(free)(lk); } @@ -360,8 +366,6 @@ static void remove_Lock_from_locksets_of_all_owning_Threads( Lock* lk ) /*--- Print out the primary data structures ---*/ /*----------------------------------------------------------------*/ -//static WordSetID del_BHL ( WordSetID lockset ); /* fwds */ - #define PP_THREADS (1<<1) #define PP_LOCKS (1<<2) #define PP_ALL (PP_THREADS | PP_LOCKS) @@ -444,8 +448,9 @@ static void pp_Lock ( Int d, Lock* lk ) { space(d+0); VG_(printf)("Lock %p (ga %#lx) {\n", lk, lk->guestaddr); if (sHOW_ADMIN) { - space(d+3); VG_(printf)("admin %p\n", lk->admin); - space(d+3); VG_(printf)("magic 0x%x\n", (UInt)lk->magic); + space(d+3); VG_(printf)("admin_n %p\n", lk->admin_next); + space(d+3); VG_(printf)("admin_p %p\n", lk->admin_prev); + space(d+3); VG_(printf)("magic 0x%x\n", (UInt)lk->magic); } space(d+3); VG_(printf)("unique %llu\n", lk->unique); space(d+3); VG_(printf)("kind %s\n", show_LockKind(lk->kind)); @@ -469,11 +474,11 @@ static void pp_admin_locks ( Int d ) { Int i, n; Lock* lk; - for (n = 0, lk = admin_locks; lk; n++, lk = lk->admin) { + for (n = 0, lk = admin_locks; lk; n++, lk = lk->admin_next) { /* nothing */ } space(d); VG_(printf)("admin_locks (%d records) {\n", n); - for (i = 0, lk = admin_locks; lk; i++, lk = lk->admin) { + for (i = 0, lk = admin_locks; lk; i++, lk = lk->admin_next) { if (0) { space(n); VG_(printf)("admin_locks record %d of %d:\n", i, n); @@ -549,24 +554,17 @@ static void initialise_data_structures ( Thr* hbthr_root ) NULL/*unboxed Word cmp*/); tl_assert(map_locks != NULL); - __bus_lock_Lock = mk_LockN( LK_nonRec, (Addr)&__bus_lock ); - tl_assert(HG_(is_sane_LockN)(__bus_lock_Lock)); - VG_(addToFM)( map_locks, (Word)&__bus_lock, (Word)__bus_lock_Lock ); - - tl_assert(univ_tsets == NULL); - univ_tsets = HG_(newWordSetU)( HG_(zalloc), "hg.ids.3", HG_(free), - 8/*cacheSize*/ ); - tl_assert(univ_tsets != NULL); - tl_assert(univ_lsets == NULL); univ_lsets = HG_(newWordSetU)( HG_(zalloc), "hg.ids.4", HG_(free), 8/*cacheSize*/ ); tl_assert(univ_lsets != NULL); tl_assert(univ_laog == NULL); - univ_laog = HG_(newWordSetU)( HG_(zalloc), "hg.ids.5 (univ_laog)", - HG_(free), 24/*cacheSize*/ ); - tl_assert(univ_laog != NULL); + if (HG_(clo_track_lockorders)) { + univ_laog = HG_(newWordSetU)( HG_(zalloc), "hg.ids.5 (univ_laog)", + HG_(free), 24/*cacheSize*/ ); + tl_assert(univ_laog != NULL); + } /* Set up entries for the root thread */ // FIXME: this assumes that the first real ThreadId is 1 @@ -575,8 +573,8 @@ static void initialise_data_structures ( Thr* hbthr_root ) thr = mk_Thread(hbthr_root); thr->coretid = 1; /* FIXME: hardwires an assumption about the identity of the root thread. */ - tl_assert( libhb_get_Thr_opaque(hbthr_root) == NULL ); - libhb_set_Thr_opaque(hbthr_root, thr); + tl_assert( libhb_get_Thr_hgthread(hbthr_root) == NULL ); + libhb_set_Thr_hgthread(hbthr_root, thr); /* and bind it in the thread-map table. */ tl_assert(HG_(is_sane_ThreadId)(thr->coretid)); @@ -586,10 +584,6 @@ static void initialise_data_structures ( Thr* hbthr_root ) tl_assert(VG_INVALID_THREADID == 0); - /* Mark the new bus lock correctly (to stop the sanity checks - complaining) */ - tl_assert( sizeof(__bus_lock) == 4 ); - all__sanity_check("initialise_data_structures"); } @@ -839,7 +833,7 @@ static void locks__sanity_check ( Char* who ) Lock* lk; Int i; // # entries in admin_locks == # entries in map_locks - for (i = 0, lk = admin_locks; lk; i++, lk = lk->admin) + for (i = 0, lk = admin_locks; lk; i++, lk = lk->admin_next) ; if (i != VG_(sizeFM)(map_locks)) BAD("1"); // for each entry (gla, lk) in map_locks @@ -851,7 +845,7 @@ static void locks__sanity_check ( Char* who ) } VG_(doneIterFM)( map_locks ); // scan through admin_locks ... - for (lk = admin_locks; lk; lk = lk->admin) { + for (lk = admin_locks; lk; lk = lk->admin_next) { // lock is sane. Quite comprehensive, also checks that // referenced (holder) threads are sane. if (!HG_(is_sane_LockN)(lk)) BAD("3"); @@ -899,7 +893,8 @@ static void all_except_Locks__sanity_check ( Char* who ) { stats__sanity_checks++; if (0) VG_(printf)("all_except_Locks__sanity_check(%s)\n", who); threads__sanity_check(who); - laog__sanity_check(who); + if (HG_(clo_track_lockorders)) + laog__sanity_check(who); } static void all__sanity_check ( Char* who ) { all_except_Locks__sanity_check(who); @@ -907,136 +902,6 @@ static void all__sanity_check ( Char* who ) { } -/*----------------------------------------------------------------*/ -/*--- the core memory state machine (msm__* functions) ---*/ -/*----------------------------------------------------------------*/ - -//static WordSetID add_BHL ( WordSetID lockset ) { -// return HG_(addToWS)( univ_lsets, lockset, (Word)__bus_lock_Lock ); -//} -//static WordSetID del_BHL ( WordSetID lockset ) { -// return HG_(delFromWS)( univ_lsets, lockset, (Word)__bus_lock_Lock ); -//} - - -///* Last-lock-lossage records. This mechanism exists to help explain -// to programmers why we are complaining about a race. The idea is to -// monitor all lockset transitions. When a previously nonempty -// lockset becomes empty, the lock(s) that just disappeared (the -// "lossage") are the locks that have consistently protected the -// location (ga_of_access) in question for the longest time. Most of -// the time the lossage-set is a single lock. Because the -// lossage-lock is the one that has survived longest, there is there -// is a good chance that it is indeed the lock that the programmer -// intended to use to protect the location. -// -// Note that we cannot in general just look at the lossage set when we -// see a transition to ShM(...,empty-set), because a transition to an -// empty lockset can happen arbitrarily far before the point where we -// want to report an error. This is in the case where there are many -// transitions ShR -> ShR, all with an empty lockset, and only later -// is there a transition to ShM. So what we want to do is note the -// lossage lock at the point where a ShR -> ShR transition empties out -// the lockset, so we can present it later if there should be a -// transition to ShM. -// -// So this function finds such transitions. For each, it associates -// in ga_to_lastlock, the guest address and the lossage lock. In fact -// we do not record the Lock* directly as that may disappear later, -// but instead the ExeContext inside the Lock which says where it was -// initialised or first locked. ExeContexts are permanent so keeping -// them indefinitely is safe. -// -// A boring detail: the hardware bus lock is not interesting in this -// respect, so we first remove that from the pre/post locksets. -//*/ -// -//static UWord stats__ga_LL_adds = 0; -// -//static WordFM* ga_to_lastlock = NULL; /* GuestAddr -> ExeContext* */ -// -//static -//void record_last_lock_lossage ( Addr ga_of_access, -// WordSetID lset_old, WordSetID lset_new ) -//{ -// Lock* lk; -// Int card_old, card_new; -// -// tl_assert(lset_old != lset_new); -// -// if (0) VG_(printf)("XX1: %d (card %ld) -> %d (card %ld) %#lx\n", -// (Int)lset_old, -// HG_(cardinalityWS)(univ_lsets,lset_old), -// (Int)lset_new, -// HG_(cardinalityWS)(univ_lsets,lset_new), -// ga_of_access ); -// -// /* This is slow, but at least it's simple. The bus hardware lock -// just confuses the logic, so remove it from the locksets we're -// considering before doing anything else. */ -// lset_new = del_BHL( lset_new ); -// -// if (!HG_(isEmptyWS)( univ_lsets, lset_new )) { -// /* The post-transition lock set is not empty. So we are not -// interested. We're only interested in spotting transitions -// that make locksets become empty. */ -// return; -// } -// -// /* lset_new is now empty */ -// card_new = HG_(cardinalityWS)( univ_lsets, lset_new ); -// tl_assert(card_new == 0); -// -// lset_old = del_BHL( lset_old ); -// card_old = HG_(cardinalityWS)( univ_lsets, lset_old ); -// -// if (0) VG_(printf)(" X2: %d (card %d) -> %d (card %d)\n", -// (Int)lset_old, card_old, (Int)lset_new, card_new ); -// -// if (card_old == 0) { -// /* The old lockset was also empty. Not interesting. */ -// return; -// } -// -// tl_assert(card_old > 0); -// tl_assert(!HG_(isEmptyWS)( univ_lsets, lset_old )); -// -// /* Now we know we've got a transition from a nonempty lockset to an -// empty one. So lset_old must be the set of locks lost. Record -// some details. If there is more than one element in the lossage -// set, just choose one arbitrarily -- not the best, but at least -// it's simple. */ -// -// lk = (Lock*)HG_(anyElementOfWS)( univ_lsets, lset_old ); -// if (0) VG_(printf)("lossage %ld %p\n", -// HG_(cardinalityWS)( univ_lsets, lset_old), lk ); -// if (lk->appeared_at) { -// if (ga_to_lastlock == NULL) -// ga_to_lastlock = VG_(newFM)( HG_(zalloc), "hg.rlll.1", HG_(free), NULL ); -// VG_(addToFM)( ga_to_lastlock, ga_of_access, (Word)lk->appeared_at ); -// stats__ga_LL_adds++; -// } -//} -// -///* This queries the table (ga_to_lastlock) made by -// record_last_lock_lossage, when constructing error messages. It -// attempts to find the ExeContext of the allocation or initialisation -// point for the lossage lock associated with 'ga'. */ -// -//static ExeContext* maybe_get_lastlock_initpoint ( Addr ga ) -//{ -// ExeContext* ec_hint = NULL; -// if (ga_to_lastlock != NULL -// && VG_(lookupFM)(ga_to_lastlock, -// NULL, (Word*)&ec_hint, ga)) { -// tl_assert(ec_hint != NULL); -// return ec_hint; -// } else { -// return NULL; -// } -//} - - /*----------------------------------------------------------------*/ /*--- Shadow value and address range handlers ---*/ /*----------------------------------------------------------------*/ @@ -1077,11 +942,20 @@ static void shadow_mem_make_New ( Thread* thr, Addr a, SizeT len ) libhb_srange_new( thr->hbthr, a, len ); } -static void shadow_mem_make_NoAccess ( Thread* thr, Addr aIN, SizeT len ) +static void shadow_mem_make_NoAccess_NoFX ( Thread* thr, Addr aIN, SizeT len ) { if (0 && len > 500) - VG_(printf)("make NoAccess ( %#lx, %ld )\n", aIN, len ); - libhb_srange_noaccess( thr->hbthr, aIN, len ); + VG_(printf)("make NoAccess_NoFX ( %#lx, %ld )\n", aIN, len ); + // has no effect (NoFX) + libhb_srange_noaccess_NoFX( thr->hbthr, aIN, len ); +} + +static void shadow_mem_make_NoAccess_AHAE ( Thread* thr, Addr aIN, SizeT len ) +{ + if (0 && len > 500) + VG_(printf)("make NoAccess_AHAE ( %#lx, %ld )\n", aIN, len ); + // Actually Has An Effect (AHAE) + libhb_srange_noaccess_AHAE( thr->hbthr, aIN, len ); } static void shadow_mem_make_Untracked ( Thread* thr, Addr aIN, SizeT len ) @@ -1205,9 +1079,11 @@ void evhH__post_thread_w_acquires_lock ( Thread* thr, goto noerror; noerror: - /* check lock order acquisition graph, and update. This has to - happen before the lock is added to the thread's locksetA/W. */ - laog__pre_thread_acquires_lock( thr, lk ); + if (HG_(clo_track_lockorders)) { + /* check lock order acquisition graph, and update. This has to + happen before the lock is added to the thread's locksetA/W. */ + laog__pre_thread_acquires_lock( thr, lk ); + } /* update the thread's held-locks set */ thr->locksetA = HG_(addToWS)( univ_lsets, thr->locksetA, (Word)lk ); thr->locksetW = HG_(addToWS)( univ_lsets, thr->locksetW, (Word)lk ); @@ -1278,9 +1154,11 @@ void evhH__post_thread_r_acquires_lock ( Thread* thr, goto noerror; noerror: - /* check lock order acquisition graph, and update. This has to - happen before the lock is added to the thread's locksetA/W. */ - laog__pre_thread_acquires_lock( thr, lk ); + if (HG_(clo_track_lockorders)) { + /* check lock order acquisition graph, and update. This has to + happen before the lock is added to the thread's locksetA/W. */ + laog__pre_thread_acquires_lock( thr, lk ); + } /* update the thread's held-locks set */ thr->locksetA = HG_(addToWS)( univ_lsets, thr->locksetA, (Word)lk ); /* but don't update thr->locksetW, since lk is only rd-held */ @@ -1534,31 +1412,49 @@ void evh__new_mem_w_perms ( Addr a, SizeT len, static void evh__set_perms ( Addr a, SizeT len, Bool rr, Bool ww, Bool xx ) { + // This handles mprotect requests. If the memory is being put + // into no-R no-W state, paint it as NoAccess, for the reasons + // documented at evh__die_mem_munmap(). if (SHOW_EVENTS >= 1) - VG_(printf)("evh__set_perms(%p, %lu, %d,%d,%d)\n", + VG_(printf)("evh__set_perms(%p, %lu, r=%d w=%d x=%d)\n", (void*)a, len, (Int)rr, (Int)ww, (Int)xx ); /* Hmm. What should we do here, that actually makes any sense? Let's say: if neither readable nor writable, then declare it NoAccess, else leave it alone. */ if (!(rr || ww)) - shadow_mem_make_NoAccess( get_current_Thread(), a, len ); + shadow_mem_make_NoAccess_AHAE( get_current_Thread(), a, len ); if (len >= SCE_BIGRANGE_T && (HG_(clo_sanity_flags) & SCE_BIGRANGE)) all__sanity_check("evh__set_perms-post"); } static void evh__die_mem ( Addr a, SizeT len ) { - // urr, libhb ignores this. + // Urr, libhb ignores this. if (SHOW_EVENTS >= 2) VG_(printf)("evh__die_mem(%p, %lu)\n", (void*)a, len ); - shadow_mem_make_NoAccess( get_current_Thread(), a, len ); + shadow_mem_make_NoAccess_NoFX( get_current_Thread(), a, len ); if (len >= SCE_BIGRANGE_T && (HG_(clo_sanity_flags) & SCE_BIGRANGE)) all__sanity_check("evh__die_mem-post"); } +static +void evh__die_mem_munmap ( Addr a, SizeT len ) { + // It's important that libhb doesn't ignore this. If, as is likely, + // the client is subject to address space layout randomization, + // then unmapped areas may never get remapped over, even in long + // runs. If we just ignore them we wind up with large resource + // (VTS) leaks in libhb. So force them to NoAccess, so that all + // VTS references in the affected area are dropped. Marking memory + // as NoAccess is expensive, but we assume that munmap is sufficiently + // rare that the space gains of doing this are worth the costs. + if (SHOW_EVENTS >= 2) + VG_(printf)("evh__die_mem_munmap(%p, %lu)\n", (void*)a, len ); + shadow_mem_make_NoAccess_AHAE( get_current_Thread(), a, len ); +} + static void evh__untrack_mem ( Addr a, SizeT len ) { - // whereas it doesn't ignore this + // Libhb doesn't ignore this. if (SHOW_EVENTS >= 2) VG_(printf)("evh__untrack_mem(%p, %lu)\n", (void*)a, len ); shadow_mem_make_Untracked( get_current_Thread(), a, len ); @@ -1600,15 +1496,15 @@ void evh__pre_thread_ll_create ( ThreadId parent, ThreadId child ) hbthr_p = thr_p->hbthr; tl_assert(hbthr_p != NULL); - tl_assert( libhb_get_Thr_opaque(hbthr_p) == thr_p ); + tl_assert( libhb_get_Thr_hgthread(hbthr_p) == thr_p ); hbthr_c = libhb_create ( hbthr_p ); /* Create a new thread record for the child. */ /* a Thread for the new thread ... */ thr_c = mk_Thread( hbthr_c ); - tl_assert( libhb_get_Thr_opaque(hbthr_c) == NULL ); - libhb_set_Thr_opaque(hbthr_c, thr_c); + tl_assert( libhb_get_Thr_hgthread(hbthr_c) == NULL ); + libhb_set_Thr_hgthread(hbthr_c, thr_c); /* and bind it in the thread-map table */ map_threads[child] = thr_c; @@ -1679,6 +1575,8 @@ void evh__pre_thread_ll_exit ( ThreadId quit_tid ) - tell libhb the thread is gone - clear the map_threads entry, in order that the Valgrind core can re-use it. */ + /* Cleanup actions (next 5 lines) copied in evh__atfork_child; keep + in sync. */ tl_assert(thr_q->hbthr); libhb_async_exit(thr_q->hbthr); tl_assert(thr_q->coretid == quit_tid); @@ -1689,6 +1587,35 @@ void evh__pre_thread_ll_exit ( ThreadId quit_tid ) all__sanity_check("evh__pre_thread_ll_exit-post"); } +/* This is called immediately after fork, for the child only. 'tid' + is the only surviving thread (as per POSIX rules on fork() in + threaded programs), so we have to clean up map_threads to remove + entries for any other threads. */ +static +void evh__atfork_child ( ThreadId tid ) +{ + UInt i; + Thread* thr; + /* Slot 0 should never be used. */ + thr = map_threads_maybe_lookup( 0/*INVALID*/ ); + tl_assert(!thr); + /* Clean up all other slots except 'tid'. */ + for (i = 1; i < VG_N_THREADS; i++) { + if (i == tid) + continue; + thr = map_threads_maybe_lookup(i); + if (!thr) + continue; + /* Cleanup actions (next 5 lines) copied from end of + evh__pre_thread_ll_exit; keep in sync. */ + tl_assert(thr->hbthr); + libhb_async_exit(thr->hbthr); + tl_assert(thr->coretid == i); + thr->coretid = VG_INVALID_THREADID; + map_threads_delete(i); + } +} + static void evh__HG_PTHREAD_JOIN_POST ( ThreadId stay_tid, Thread* quit_thr ) @@ -1714,8 +1641,8 @@ void evh__HG_PTHREAD_JOIN_POST ( ThreadId stay_tid, Thread* quit_thr ) hbthr_s = thr_s->hbthr; hbthr_q = thr_q->hbthr; tl_assert(hbthr_s != hbthr_q); - tl_assert( libhb_get_Thr_opaque(hbthr_s) == thr_s ); - tl_assert( libhb_get_Thr_opaque(hbthr_q) == thr_q ); + tl_assert( libhb_get_Thr_hgthread(hbthr_s) == thr_s ); + tl_assert( libhb_get_Thr_hgthread(hbthr_q) == thr_q ); /* Allocate a temporary synchronisation object and use it to send an imaginary message from the quitter to the stayer, the purpose @@ -1765,7 +1692,12 @@ void evh__pre_mem_read_asciiz ( CorePart part, ThreadId tid, if (SHOW_EVENTS >= 1) VG_(printf)("evh__pre_mem_asciiz(ctid=%d, \"%s\", %p)\n", (Int)tid, s, (void*)a ); - // FIXME: think of a less ugly hack + // Don't segfault if the string starts in an obviously stupid + // place. Actually we should check the whole string, not just + // the start address, but that's too much trouble. At least + // checking the first byte is better than nothing. See #255009. + if (!VG_(am_is_valid_for_client) (a, 1, VKI_PROT_READ)) + return; len = VG_(strlen)( (Char*) a ); shadow_mem_cread_range( map_threads_lookup(tid), a, len+1 ); if (len >= SCE_BIGRANGE_T && (HG_(clo_sanity_flags) & SCE_BIGRANGE)) @@ -1800,9 +1732,20 @@ void evh__new_mem_heap ( Addr a, SizeT len, Bool is_inited ) { static void evh__die_mem_heap ( Addr a, SizeT len ) { + Thread* thr; if (SHOW_EVENTS >= 1) VG_(printf)("evh__die_mem_heap(%p, %lu)\n", (void*)a, len ); - shadow_mem_make_NoAccess( get_current_Thread(), a, len ); + thr = get_current_Thread(); + tl_assert(thr); + if (HG_(clo_free_is_write)) { + /* Treat frees as if the memory was written immediately prior to + the free. This shakes out more races, specifically, cases + where memory is referenced by one thread, and freed by + another, and there's no observable synchronisation event to + guarantee that the reference happens before the free. */ + shadow_mem_cwrite_range(thr, a, len); + } + shadow_mem_make_NoAccess_NoFX( thr, a, len ); if (len >= SCE_BIGRANGE_T && (HG_(clo_sanity_flags) & SCE_BIGRANGE)) all__sanity_check("evh__pre_mem_read-post"); } @@ -1938,8 +1881,9 @@ void evh__HG_PTHREAD_MUTEX_DESTROY_PRE( ThreadId tid, void* mutex ) } tl_assert( !lk->heldBy ); tl_assert( HG_(is_sane_LockN)(lk) ); - - laog__handle_one_lock_deletion(lk); + + if (HG_(clo_track_lockorders)) + laog__handle_one_lock_deletion(lk); map_locks_delete( lk->guestaddr ); del_LockN( lk ); } @@ -2413,8 +2357,9 @@ void evh__HG_PTHREAD_RWLOCK_DESTROY_PRE( ThreadId tid, void* rwl ) } tl_assert( !lk->heldBy ); tl_assert( HG_(is_sane_LockN)(lk) ); - - laog__handle_one_lock_deletion(lk); + + if (HG_(clo_track_lockorders)) + laog__handle_one_lock_deletion(lk); map_locks_delete( lk->guestaddr ); del_LockN( lk ); } @@ -3114,17 +3059,16 @@ static SO* map_usertag_to_SO_lookup_or_alloc ( UWord usertag ) { } } -// If it's ever needed (XXX check before use) -//static void map_usertag_to_SO_delete ( UWord usertag ) { -// UWord keyW, valW; -// map_usertag_to_SO_INIT(); -// if (VG_(delFromFM)( map_usertag_to_SO, &keyW, &valW, usertag )) { -// SO* so = (SO*)valW; -// tl_assert(keyW == usertag); -// tl_assert(so); -// libhb_so_dealloc(so); -// } -//} +static void map_usertag_to_SO_delete ( UWord usertag ) { + UWord keyW, valW; + map_usertag_to_SO_INIT(); + if (VG_(delFromFM)( map_usertag_to_SO, &keyW, &valW, usertag )) { + SO* so = (SO*)valW; + tl_assert(keyW == usertag); + tl_assert(so); + libhb_so_dealloc(so); + } +} static @@ -3133,9 +3077,12 @@ void evh__HG_USERSO_SEND_PRE ( ThreadId tid, UWord usertag ) /* TID is just about to notionally sent a message on a notional abstract synchronisation object whose identity is given by USERTAG. Bind USERTAG to a real SO if it is not already so - bound, and do a 'strong send' on the SO. This is later used by + bound, and do a 'weak send' on the SO. This joins the vector + clocks from this thread into any vector clocks already present + in the SO. The resulting SO vector clocks are later used by other thread(s) which successfully 'receive' from the SO, - thereby acquiring a dependency on this signalling event. */ + thereby acquiring a dependency on all the events that have + previously signalled on this SO. */ Thread* thr; SO* so; @@ -3149,7 +3096,7 @@ void evh__HG_USERSO_SEND_PRE ( ThreadId tid, UWord usertag ) so = map_usertag_to_SO_lookup_or_alloc( usertag ); tl_assert(so); - libhb_so_send( thr->hbthr, so, True/*strong_send*/ ); + libhb_so_send( thr->hbthr, so, False/*!strong_send*/ ); } static @@ -3180,6 +3127,21 @@ void evh__HG_USERSO_RECV_POST ( ThreadId tid, UWord usertag ) libhb_so_recv( thr->hbthr, so, True/*strong_recv*/ ); } +static +void evh__HG_USERSO_FORGET_ALL ( ThreadId tid, UWord usertag ) +{ + /* TID declares that any happens-before edges notionally stored in + USERTAG can be deleted. If (as would normally be the case) a + SO is associated with USERTAG, then the assocation is removed + and all resources associated with SO are freed. Importantly, + that frees up any VTSs stored in SO. */ + if (SHOW_EVENTS >= 1) + VG_(printf)("evh__HG_USERSO_FORGET_ALL(ctid=%d, usertag=%#lx)\n", + (Int)tid, usertag ); + + map_usertag_to_SO_delete( usertag ); +} + /*--------------------------------------------------------------*/ /*--- Lock acquisition order monitoring ---*/ @@ -3253,6 +3215,7 @@ static void laog__init ( void ) { tl_assert(!laog); tl_assert(!laog_exposition); + tl_assert(HG_(clo_track_lockorders)); laog = VG_(newFM)( HG_(zalloc), "hg.laog__init.1", HG_(free), NULL/*unboxedcmp*/ ); @@ -3429,8 +3392,6 @@ static void laog__sanity_check ( Char* who ) { UWord* ws_words; Lock* me; LAOGLinks* links; - if (UNLIKELY(!laog || !laog_exposition)) - laog__init(); VG_(initIterFM)( laog ); me = NULL; links = NULL; @@ -3542,9 +3503,6 @@ static void laog__pre_thread_acquires_lock ( if (HG_(elemWS)( univ_lsets, thr->locksetA, (Word)lk )) return; - if (UNLIKELY(!laog || !laog_exposition)) - laog__init(); - /* First, the check. Complain if there is any path in laog from lk to any of the locks already held by thr, since if any such path existed, it would mean that previously lk was acquired before @@ -3616,9 +3574,6 @@ static void laog__handle_one_lock_deletion ( Lock* lk ) Word preds_size, succs_size, i, j; UWord *preds_words, *succs_words; - if (UNLIKELY(!laog || !laog_exposition)) - laog__init(); - preds = laog__preds( lk ); succs = laog__succs( lk ); @@ -3650,8 +3605,6 @@ static void laog__handle_one_lock_deletion ( Lock* lk ) // Word i, ws_size; // UWord* ws_words; // -// if (UNLIKELY(!laog || !laog_exposition)) -// laog__init(); // // HG_(getPayloadWS)( &ws_words, &ws_size, univ_lsets, locksToDelete ); // for (i = 0; i < ws_size; i++) @@ -4604,6 +4557,11 @@ Bool hg_handle_client_request ( ThreadId tid, UWord* args, UWord* ret) evh__HG_USERSO_RECV_POST( tid, args[1] ); break; + case _VG_USERREQ__HG_USERSO_FORGET_ALL: + /* UWord arbitrary-SO-tag */ + evh__HG_USERSO_FORGET_ALL( tid, args[1] ); + break; + default: /* Unhandled Helgrind client request! */ tl_assert2(0, "unhandled Helgrind client request 0x%lx", @@ -4660,6 +4618,8 @@ static Bool hg_process_cmd_line_option ( Char* arg ) if (0) VG_(printf)("XXX sanity flags: 0x%lx\n", HG_(clo_sanity_flags)); } + else if VG_BOOL_CLO(arg, "--free-is-write", + HG_(clo_free_is_write)) {} else return VG_(replacement_malloc_process_cmd_line_option)(arg); @@ -4669,6 +4629,7 @@ static Bool hg_process_cmd_line_option ( Char* arg ) static void hg_print_usage ( void ) { VG_(printf)( +" --free-is-write=no|yes treat heap frees as writes [no]\n" " --track-lockorders=no|yes show lock ordering errors? [yes]\n" " --history-level=none|approx|full [full]\n" " full: show both stack traces for a data race (can be very slow)\n" @@ -4694,10 +4655,6 @@ static void hg_print_debug_usage ( void ) VG_(printf)(" 000001 at thread create/join events\n"); } -static void hg_post_clo_init ( void ) -{ -} - static void hg_fini ( Int exitcode ) { if (VG_(clo_verbosity) == 1 && !VG_(clo_xml)) { @@ -4722,12 +4679,12 @@ static void hg_fini ( Int exitcode ) if (VG_(clo_stats)) { if (1) { - VG_(printf)("\n"); - HG_(ppWSUstats)( univ_tsets, "univ_tsets" ); VG_(printf)("\n"); HG_(ppWSUstats)( univ_lsets, "univ_lsets" ); - VG_(printf)("\n"); - HG_(ppWSUstats)( univ_laog, "univ_laog" ); + if (HG_(clo_track_lockorders)) { + VG_(printf)("\n"); + HG_(ppWSUstats)( univ_laog, "univ_laog" ); + } } //zz VG_(printf)("\n"); @@ -4745,10 +4702,10 @@ static void hg_fini ( Int exitcode ) VG_(printf)("\n"); VG_(printf)(" locksets: %'8d unique lock sets\n", (Int)HG_(cardinalityWSU)( univ_lsets )); - VG_(printf)(" threadsets: %'8d unique thread sets\n", - (Int)HG_(cardinalityWSU)( univ_tsets )); - VG_(printf)(" univ_laog: %'8d unique lock sets\n", - (Int)HG_(cardinalityWSU)( univ_laog )); + if (HG_(clo_track_lockorders)) { + VG_(printf)(" univ_laog: %'8d unique lock sets\n", + (Int)HG_(cardinalityWSU)( univ_laog )); + } //VG_(printf)("L(ast)L(ock) map: %'8lu inserts (%d map size)\n", // stats__ga_LL_adds, @@ -4761,10 +4718,13 @@ static void hg_fini ( Int exitcode ) VG_(printf)("string table map: %'8llu queries (%llu map size)\n", HG_(stats__string_table_queries), HG_(stats__string_table_get_map_size)() ); - VG_(printf)(" LAOG: %'8d map size\n", - (Int)(laog ? VG_(sizeFM)( laog ) : 0)); - VG_(printf)(" LAOG exposition: %'8d map size\n", - (Int)(laog_exposition ? VG_(sizeFM)( laog_exposition ) : 0)); + if (HG_(clo_track_lockorders)) { + VG_(printf)(" LAOG: %'8d map size\n", + (Int)(laog ? VG_(sizeFM)( laog ) : 0)); + VG_(printf)(" LAOG exposition: %'8d map size\n", + (Int)(laog_exposition ? VG_(sizeFM)( laog_exposition ) : 0)); + } + VG_(printf)(" locks: %'8lu acquires, " "%'lu releases\n", stats__lockN_acquires, @@ -4786,7 +4746,7 @@ void for_libhb__get_stacktrace ( Thr* hbt, Addr* frames, UWord nRequest ) ThreadId tid; UWord nActual; tl_assert(hbt); - thr = libhb_get_Thr_opaque( hbt ); + thr = libhb_get_Thr_hgthread( hbt ); tl_assert(thr); tid = map_threads_maybe_reverse_lookup_SLOW(thr); nActual = (UWord)VG_(get_StackTrace)( tid, frames, (UInt)nRequest, @@ -4803,7 +4763,7 @@ ExeContext* for_libhb__get_EC ( Thr* hbt ) ThreadId tid; ExeContext* ec; tl_assert(hbt); - thr = libhb_get_Thr_opaque( hbt ); + thr = libhb_get_Thr_hgthread( hbt ); tl_assert(thr); tid = map_threads_maybe_reverse_lookup_SLOW(thr); /* this will assert if tid is invalid */ @@ -4812,17 +4772,31 @@ ExeContext* for_libhb__get_EC ( Thr* hbt ) } -static void hg_pre_clo_init ( void ) +static void hg_post_clo_init ( void ) { Thr* hbthr_root; + ///////////////////////////////////////////// + hbthr_root = libhb_init( for_libhb__get_stacktrace, + for_libhb__get_EC ); + ///////////////////////////////////////////// + + + if (HG_(clo_track_lockorders)) + laog__init(); + + initialise_data_structures(hbthr_root); +} + +static void hg_pre_clo_init ( void ) +{ VG_(details_name) ("Helgrind"); VG_(details_version) (NULL); VG_(details_description) ("a thread error detector"); VG_(details_copyright_author)( "Copyright (C) 2007-2010, and GNU GPL'd, by OpenWorks LLP et al."); VG_(details_bug_reports_to) (VG_BUGS_TO); - VG_(details_avg_translation_sizeB) ( 200 ); + VG_(details_avg_translation_sizeB) ( 320 ); VG_(basic_tool_funcs) (hg_post_clo_init, hg_instrument, @@ -4881,8 +4855,8 @@ static void hg_pre_clo_init ( void ) VG_(track_change_mem_mprotect) ( evh__set_perms ); VG_(track_die_mem_stack_signal)( evh__die_mem ); - VG_(track_die_mem_brk) ( evh__die_mem ); - VG_(track_die_mem_munmap) ( evh__die_mem ); + VG_(track_die_mem_brk) ( evh__die_mem_munmap ); + VG_(track_die_mem_munmap) ( evh__die_mem_munmap ); VG_(track_die_mem_stack) ( evh__die_mem ); // FIXME: what is this for? @@ -4901,13 +4875,6 @@ static void hg_pre_clo_init ( void ) VG_(track_start_client_code)( evh__start_client_code ); VG_(track_stop_client_code)( evh__stop_client_code ); - ///////////////////////////////////////////// - hbthr_root = libhb_init( for_libhb__get_stacktrace, - for_libhb__get_EC ); - ///////////////////////////////////////////// - - initialise_data_structures(hbthr_root); - /* Ensure that requirements for "dodgy C-as-C++ style inheritance" as described in comments at the top of pub_tool_hashtable.h, are met. Blargh. */ @@ -4916,6 +4883,8 @@ static void hg_pre_clo_init ( void ) hg_mallocmeta_table = VG_(HT_construct)( "hg_malloc_metadata_table" ); + // add a callback to clean up on (threaded) fork. + VG_(atfork)(NULL/*pre*/, NULL/*parent*/, evh__atfork_child/*child*/); } VG_DETERMINE_INTERFACE_VERSION(hg_pre_clo_init) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_wordset.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_wordset.c index 330c2e663..a7cb81477 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_wordset.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_wordset.c @@ -205,8 +205,17 @@ static Word cmp_WordVecs_for_FM ( UWord wv1W, UWord wv2W ) UWord i; WordVec* wv1 = (WordVec*)wv1W; WordVec* wv2 = (WordVec*)wv2W; - UWord common = wv1->size < wv2->size ? wv1->size : wv2->size; - for (i = 0; i < common; i++) { + + // WordVecs with smaller size are smaller. + if (wv1->size < wv2->size) { + return -1; + } + if (wv1->size > wv2->size) { + return 1; + } + + // Sizes are equal => order based on content. + for (i = 0; i < wv1->size; i++) { if (wv1->words[i] == wv2->words[i]) continue; if (wv1->words[i] < wv2->words[i]) @@ -215,19 +224,6 @@ static Word cmp_WordVecs_for_FM ( UWord wv1W, UWord wv2W ) return 1; tl_assert(0); } - /* Ok, the common sections are identical. So now consider the - tails. Both sets are considered to finish in an implied - sequence of -infinity. */ - if (wv1->size < wv2->size) { - tl_assert(common == wv1->size); - return -1; /* impliedly, wv1 contains some -infinitys in places - where wv2 doesn't. */ - } - if (wv1->size > wv2->size) { - tl_assert(common == wv2->size); - return 1; - } - tl_assert(common == wv1->size); return 0; /* identical */ } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb.h index 8d88de639..4cfc3ed2e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb.h @@ -124,15 +124,16 @@ void zsm_sapplyNN_f__msmcread ( Thr* thr, Addr a, SizeT len ); void libhb_Thr_resumes ( Thr* thr ); /* Set memory address ranges to new (freshly allocated), or noaccess - (no longer accessible). */ + (no longer accessible). NB: "AHAE" == "Actually Has An Effect" :-) */ void libhb_srange_new ( Thr*, Addr, SizeT ); -void libhb_srange_noaccess ( Thr*, Addr, SizeT ); /* IS IGNORED */ void libhb_srange_untrack ( Thr*, Addr, SizeT ); +void libhb_srange_noaccess_NoFX ( Thr*, Addr, SizeT ); /* IS IGNORED */ +void libhb_srange_noaccess_AHAE ( Thr*, Addr, SizeT ); /* IS NOT IGNORED */ -/* For the convenience of callers, we offer to store one void* item in - a Thr, which we ignore, but the caller can get or set any time. */ -void* libhb_get_Thr_opaque ( Thr* ); -void libhb_set_Thr_opaque ( Thr*, void* ); +/* Get and set the hgthread (pointer to corresponding Thread + structure). */ +Thread* libhb_get_Thr_hgthread ( Thr* ); +void libhb_set_Thr_hgthread ( Thr*, Thread* ); /* Low level copy of shadow state from [src,src+len) to [dst,dst+len). Overlapping moves are checked for and asserted against. */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb_core.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb_core.c index ce3f889fb..cb4530d9c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb_core.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/libhb_core.c @@ -345,11 +345,19 @@ static UWord stats__vts__tick = 0; // # calls to VTS__tick static UWord stats__vts__join = 0; // # calls to VTS__join static UWord stats__vts__cmpLEQ = 0; // # calls to VTS__cmpLEQ static UWord stats__vts__cmp_structural = 0; // # calls to VTS__cmp_structural -static UWord stats__vts__cmp_structural_slow = 0; // # calls to VTS__cmp_structural w/ slow case -static UWord stats__vts__indexat_slow = 0; // # calls to VTS__indexAt_SLOW -static UWord stats__vts_set__fadoa = 0; // # calls to vts_set__find_and_dealloc__or_add -static UWord stats__vts_set__fadoa_d = 0; // # calls to vts_set__find_and_dealloc__or_add - // that lead to a deallocation + +// # calls to VTS__cmp_structural w/ slow case +static UWord stats__vts__cmp_structural_slow = 0; + +// # calls to VTS__indexAt_SLOW +static UWord stats__vts__indexat_slow = 0; + +// # calls to vts_set__find__or__clone_and_add +static UWord stats__vts_set__focaa = 0; + +// # calls to vts_set__find__or__clone_and_add that lead to an +// allocation +static UWord stats__vts_set__focaa_a = 0; static inline Addr shmem__round_to_SecMap_base ( Addr a ) { @@ -1524,11 +1532,95 @@ static void zsm_init ( void(*p_rcinc)(SVal), void(*p_rcdec)(SVal) ) ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// -#ifndef __HB_VTS_H -#define __HB_VTS_H -/* VtsIDs can't exceed 30 bits, since they have to be packed into the - lowest 30 bits of an SVal. */ +/* There's a 1-1 mapping between Thr and ThrIDs -- the latter merely + being compact stand-ins for Thr*'s. Use these functions to map + between them. */ +static ThrID Thr__to_ThrID ( Thr* thr ); /* fwds */ +static Thr* Thr__from_ThrID ( ThrID thrid ); /* fwds */ + + +/* Scalar Timestamp. We have to store a lot of these, so there is + some effort to make them as small as possible. Logically they are + a pair, (Thr*, ULong), but that takes 16 bytes on a 64-bit target. + We pack it into 64 bits by representing the Thr* using a ThrID, a + small integer (18 bits), and a 46 bit integer for the timestamp + number. The 46/18 split is arbitary, but has the effect that + Helgrind can only handle programs that create 2^18 or fewer threads + over their entire lifetime, and have no more than 2^46 timestamp + ticks (synchronisation operations on the same thread). + + This doesn't seem like much of a limitation. 2^46 ticks is + 7.06e+13, and if each tick (optimistically) takes the machine 1000 + cycles to process, then the minimum time to process that many ticks + at a clock rate of 5 GHz is 162.9 days. And that's doing nothing + but VTS ticks, which isn't realistic. + + NB1: SCALARTS_N_THRBITS must be 32 or lower, so they fit in a ThrID + (== a UInt). + + NB2: thrid values are issued upwards from 1024, and values less + than that aren't valid. This isn't per se necessary (any order + will do, so long as they are unique), but it does help ensure they + are less likely to get confused with the various other kinds of + small-integer thread ids drifting around (eg, TId). + + NB3: this probably also relies on the fact that Thr's are never + deallocated -- they exist forever. Hence the 1-1 mapping from + Thr's to thrid values (set up in Thr__new) persists forever. + + NB4: temp_max_sized_VTS is allocated at startup and never freed. + It is a maximum sized VTS, so has (1 << SCALARTS_N_TYMBITS) + ScalarTSs. So we can't make SCALARTS_N_THRBITS too large without + making the memory use for this go sky-high. With + SCALARTS_N_THRBITS at 18, it occupies 2MB of memory, which seems + like an OK tradeoff. If more than 256k threads need to be + supported, we could change SCALARTS_N_THRBITS to 20, which would + facilitate supporting 1 million threads at the cost of 8MB storage + for temp_max_sized_VTS. +*/ +#define SCALARTS_N_THRBITS 18 /* valid range: 11 to 32 inclusive */ +#define SCALARTS_N_TYMBITS (64 - SCALARTS_N_THRBITS) +typedef + struct { + ThrID thrid : SCALARTS_N_THRBITS; + ULong tym : SCALARTS_N_TYMBITS; + } + ScalarTS; + +#define ThrID_MAX_VALID ((1 << SCALARTS_N_THRBITS) - 1) + + +__attribute__((noreturn)) +static void scalarts_limitations_fail_NORETURN ( Bool due_to_nThrs ) +{ + if (due_to_nThrs) { + HChar* s = + "\n" + "Helgrind: cannot continue, run aborted: too many threads.\n" + "Sorry. Helgrind can only handle programs that create\n" + "%'llu or fewer threads over their entire lifetime.\n" + "\n"; + VG_(umsg)(s, (ULong)(ThrID_MAX_VALID - 1024)); + } else { + HChar* s = + "\n" + "Helgrind: cannot continue, run aborted: too many\n" + "synchronisation events. Sorry. Helgrind can only handle\n" + "programs which perform %'llu or fewer\n" + "inter-thread synchronisation events (locks, unlocks, etc).\n" + "\n"; + VG_(umsg)(s, (1ULL << SCALARTS_N_TYMBITS) - 1); + } + VG_(exit)(1); + /*NOTREACHED*/ + tl_assert(0); /*wtf?!*/ +} + + +/* VtsIDs: Unique small-integer IDs for VTSs. VtsIDs can't exceed 30 + bits, since they have to be packed into the lowest 30 bits of an + SVal. */ typedef UInt VtsID; #define VtsID_INVALID 0xFFFFFFFF @@ -1538,41 +1630,51 @@ typedef UInt VtsID; VtsID_INVALID. */ typedef struct { - VtsID id; - XArray* ts; /* XArray* ScalarTS(abstract) */ + VtsID id; + UInt usedTS; + UInt sizeTS; + ScalarTS ts[0]; } VTS; +/* Allocate a VTS capable of storing 'sizeTS' entries. */ +static VTS* VTS__new ( HChar* who, UInt sizeTS ); -/* Create a new, empty VTS. */ -static VTS* VTS__new ( void ); +/* Make a clone of 'vts', resizing the array to exactly match the + number of ScalarTSs present. */ +static VTS* VTS__clone ( HChar* who, VTS* vts ); /* Delete this VTS in its entirety. */ static void VTS__delete ( VTS* vts ); -/* Create a new singleton VTS. */ -static VTS* VTS__singleton ( Thr* thr, ULong tym ); +/* Create a new singleton VTS in 'out'. Caller must have + pre-allocated 'out' sufficiently big to hold the result in all + possible cases. */ +static void VTS__singleton ( /*OUT*/VTS* out, Thr* thr, ULong tym ); -/* Return a new VTS in which vts[me]++, so to speak. 'vts' itself is - not modified. */ -static VTS* VTS__tick ( Thr* me, VTS* vts ); +/* Create in 'out' a VTS which is the same as 'vts' except with + vts[me]++, so to speak. Caller must have pre-allocated 'out' + sufficiently big to hold the result in all possible cases. */ +static void VTS__tick ( /*OUT*/VTS* out, Thr* me, VTS* vts ); -/* Return a new VTS constructed as the join (max) of the 2 args. - Neither arg is modified. */ -static VTS* VTS__join ( VTS* a, VTS* b ); +/* Create in 'out' a VTS which is the join (max) of 'a' and + 'b'. Caller must have pre-allocated 'out' sufficiently big to hold + the result in all possible cases. */ +static void VTS__join ( /*OUT*/VTS* out, VTS* a, VTS* b ); /* Compute the partial ordering relation of the two args. Although we could be completely general and return an enumeration value (EQ, LT, GT, UN), in fact we only need LEQ, and so we may as well hardwire that fact. - Returns NULL iff LEQ(A,B), or non-NULL if not. In the latter case, - the returned Thr* indicates the discovered point for which they are - not. There may be more than one such point, but we only care about - seeing one of them, not all of them. This rather strange - convention is used because sometimes we want to know the actual - index at which they first differ. */ -static Thr* VTS__cmpLEQ ( VTS* a, VTS* b ); + Returns zero iff LEQ(A,B), or a valid ThrID if not (zero is an + invald ThrID). In the latter case, the returned ThrID indicates + the discovered point for which they are not. There may be more + than one such point, but we only care about seeing one of them, not + all of them. This rather strange convention is used because + sometimes we want to know the actual index at which they first + differ. */ +static UInt VTS__cmpLEQ ( VTS* a, VTS* b ); /* Compute an arbitrary structural (total) ordering on the two args, based on their VCs, so they can be looked up in a table, tree, etc. @@ -1585,32 +1687,28 @@ static void VTS__show ( HChar* buf, Int nBuf, VTS* vts ); /* Debugging only. Return vts[index], so to speak. */ static ULong VTS__indexAt_SLOW ( VTS* vts, Thr* idx ); -#endif /* ! __HB_VTS_H */ - /*--------------- to do with Vector Timestamps ---------------*/ -/* Scalar Timestamp */ -typedef - struct { - Thr* thr; - ULong tym; - } - ScalarTS; - - static Bool is_sane_VTS ( VTS* vts ) { UWord i, n; ScalarTS *st1, *st2; if (!vts) return False; if (!vts->ts) return False; - n = VG_(sizeXA)( vts->ts ); + if (vts->usedTS > vts->sizeTS) return False; + n = vts->usedTS; + if (n == 1) { + st1 = &vts->ts[0]; + if (st1->tym == 0) + return False; + } + else if (n >= 2) { for (i = 0; i < n-1; i++) { - st1 = VG_(indexXA)( vts->ts, i ); - st2 = VG_(indexXA)( vts->ts, i+1 ); - if (st1->thr >= st2->thr) + st1 = &vts->ts[i]; + st2 = &vts->ts[i+1]; + if (st1->thrid >= st2->thrid) return False; if (st1->tym == 0 || st2->tym == 0) return False; @@ -1622,141 +1720,170 @@ static Bool is_sane_VTS ( VTS* vts ) /* Create a new, empty VTS. */ -VTS* VTS__new ( void ) +static VTS* VTS__new ( HChar* who, UInt sizeTS ) { - VTS* vts; - vts = HG_(zalloc)( "libhb.VTS__new.1", sizeof(VTS) ); - tl_assert(vts); - vts->id = VtsID_INVALID; - vts->ts = VG_(newXA)( HG_(zalloc), "libhb.VTS__new.2", - HG_(free), sizeof(ScalarTS) ); - tl_assert(vts->ts); + VTS* vts = HG_(zalloc)(who, sizeof(VTS) + (sizeTS+1) * sizeof(ScalarTS)); + tl_assert(vts->usedTS == 0); + vts->sizeTS = sizeTS; + *(ULong*)(&vts->ts[sizeTS]) = 0x0ddC0ffeeBadF00dULL; return vts; } +/* Clone this VTS. +*/ +static VTS* VTS__clone ( HChar* who, VTS* vts ) +{ + tl_assert(vts); + tl_assert( *(ULong*)(&vts->ts[vts->sizeTS]) == 0x0ddC0ffeeBadF00dULL); + UInt nTS = vts->usedTS; + VTS* clone = VTS__new(who, nTS); + clone->id = vts->id; + clone->sizeTS = nTS; + clone->usedTS = nTS; + UInt i; + for (i = 0; i < nTS; i++) { + clone->ts[i] = vts->ts[i]; + } + tl_assert( *(ULong*)(&clone->ts[clone->sizeTS]) == 0x0ddC0ffeeBadF00dULL); + return clone; +} + /* Delete this VTS in its entirety. */ -void VTS__delete ( VTS* vts ) +static void VTS__delete ( VTS* vts ) { tl_assert(vts); - tl_assert(vts->ts); - VG_(deleteXA)( vts->ts ); + tl_assert(vts->usedTS <= vts->sizeTS); + tl_assert( *(ULong*)(&vts->ts[vts->sizeTS]) == 0x0ddC0ffeeBadF00dULL); HG_(free)(vts); } /* Create a new singleton VTS. */ -VTS* VTS__singleton ( Thr* thr, ULong tym ) { - ScalarTS st; - VTS* vts; +static void VTS__singleton ( /*OUT*/VTS* out, Thr* thr, ULong tym ) +{ tl_assert(thr); tl_assert(tym >= 1); - vts = VTS__new(); - st.thr = thr; - st.tym = tym; - VG_(addToXA)( vts->ts, &st ); - return vts; + tl_assert(out); + tl_assert(out->usedTS == 0); + tl_assert(out->sizeTS >= 1); + UInt hi = out->usedTS++; + out->ts[hi].thrid = Thr__to_ThrID(thr); + out->ts[hi].tym = tym; } /* Return a new VTS in which vts[me]++, so to speak. 'vts' itself is not modified. */ -VTS* VTS__tick ( Thr* me, VTS* vts ) +static void VTS__tick ( /*OUT*/VTS* out, Thr* me, VTS* vts ) { - ScalarTS* here = NULL; - ScalarTS tmp; - VTS* res; - Word i, n; + UInt i, n; + ThrID me_thrid; + Bool found = False; stats__vts__tick++; + tl_assert(out); + tl_assert(out->usedTS == 0); + if (vts->usedTS >= ThrID_MAX_VALID) + scalarts_limitations_fail_NORETURN( True/*due_to_nThrs*/ ); + tl_assert(out->sizeTS >= 1 + vts->usedTS); + tl_assert(me); + me_thrid = Thr__to_ThrID(me); tl_assert(is_sane_VTS(vts)); - //if (0) VG_(printf)("tick vts thrno %ld szin %d\n", - // (Word)me->errmsg_index, (Int)VG_(sizeXA)(vts) ); - res = VTS__new(); - n = VG_(sizeXA)( vts->ts ); - - /* main loop doesn't handle zero-entry case correctly, so - special-case it. */ - if (n == 0) { - tmp.thr = me; - tmp.tym = 1; - VG_(addToXA)( res->ts, &tmp ); - tl_assert(is_sane_VTS(res)); - return res; - } + n = vts->usedTS; + /* Copy all entries which precede 'me'. */ for (i = 0; i < n; i++) { - here = VG_(indexXA)( vts->ts, i ); - if (me < here->thr) { - /* We just went past 'me', without seeing it. */ - tmp.thr = me; - tmp.tym = 1; - VG_(addToXA)( res->ts, &tmp ); - tmp = *here; - VG_(addToXA)( res->ts, &tmp ); - i++; - break; - } - else if (me == here->thr) { - tmp = *here; - tmp.tym++; - VG_(addToXA)( res->ts, &tmp ); - i++; + ScalarTS* here = &vts->ts[i]; + if (UNLIKELY(here->thrid >= me_thrid)) break; - } - else /* me > here->thr */ { - tmp = *here; - VG_(addToXA)( res->ts, &tmp ); - } - } + UInt hi = out->usedTS++; + out->ts[hi] = *here; + } + + /* 'i' now indicates the next entry to copy, if any. + There are 3 possibilities: + (a) there is no next entry (we used them all up already): + add (me_thrid,1) to the output, and quit + (b) there is a next entry, and its thrid > me_thrid: + add (me_thrid,1) to the output, then copy the remaining entries + (c) there is a next entry, and its thrid == me_thrid: + copy it to the output but increment its timestamp value. + Then copy the remaining entries. (c) is the common case. + */ tl_assert(i >= 0 && i <= n); - if (i == n && here && here->thr < me) { - tmp.thr = me; - tmp.tym = 1; - VG_(addToXA)( res->ts, &tmp ); + if (i == n) { /* case (a) */ + UInt hi = out->usedTS++; + out->ts[hi].thrid = me_thrid; + out->ts[hi].tym = 1; } else { + /* cases (b) and (c) */ + ScalarTS* here = &vts->ts[i]; + if (me_thrid == here->thrid) { /* case (c) */ + if (UNLIKELY(here->tym >= (1ULL << SCALARTS_N_TYMBITS) - 2ULL)) { + /* We're hosed. We have to stop. */ + scalarts_limitations_fail_NORETURN( False/*!due_to_nThrs*/ ); + } + UInt hi = out->usedTS++; + out->ts[hi].thrid = here->thrid; + out->ts[hi].tym = here->tym + 1; + i++; + found = True; + } else { /* case (b) */ + UInt hi = out->usedTS++; + out->ts[hi].thrid = me_thrid; + out->ts[hi].tym = 1; + } + /* And copy any remaining entries. */ for (/*keepgoing*/; i < n; i++) { - here = VG_(indexXA)( vts->ts, i ); - tmp = *here; - VG_(addToXA)( res->ts, &tmp ); + ScalarTS* here2 = &vts->ts[i]; + UInt hi = out->usedTS++; + out->ts[hi] = *here2; } } - tl_assert(is_sane_VTS(res)); - //if (0) VG_(printf)("tick vts thrno %ld szou %d\n", - // (Word)me->errmsg_index, (Int)VG_(sizeXA)(res) ); - return res; + + tl_assert(is_sane_VTS(out)); + tl_assert(out->usedTS == vts->usedTS + (found ? 0 : 1)); + tl_assert(out->usedTS <= out->sizeTS); } /* Return a new VTS constructed as the join (max) of the 2 args. Neither arg is modified. */ -VTS* VTS__join ( VTS* a, VTS* b ) +static void VTS__join ( /*OUT*/VTS* out, VTS* a, VTS* b ) { - Word ia, ib, useda, usedb; + UInt ia, ib, useda, usedb; ULong tyma, tymb, tymMax; - Thr* thr; - VTS* res; + ThrID thrid; + UInt ncommon = 0; stats__vts__join++; - tl_assert(a && a->ts); - tl_assert(b && b->ts); - useda = VG_(sizeXA)( a->ts ); - usedb = VG_(sizeXA)( b->ts ); + tl_assert(a); + tl_assert(b); + useda = a->usedTS; + usedb = b->usedTS; + + tl_assert(out); + tl_assert(out->usedTS == 0); + /* overly conservative test, but doing better involves comparing + the two VTSs, which we don't want to do at this point. */ + if (useda + usedb >= ThrID_MAX_VALID) + scalarts_limitations_fail_NORETURN( True/*due_to_nThrs*/ ); + tl_assert(out->sizeTS >= useda + usedb); - res = VTS__new(); ia = ib = 0; while (1) { - /* This logic is to enumerate triples (thr, tyma, tymb) drawn - from a and b in order, where thr is the next Thr* + /* This logic is to enumerate triples (thrid, tyma, tymb) drawn + from a and b in order, where thrid is the next ThrID occurring in either a or b, and tyma/b are the relevant scalar timestamps, taking into account implicit zeroes. */ tl_assert(ia >= 0 && ia <= useda); @@ -1768,44 +1895,45 @@ VTS* VTS__join ( VTS* a, VTS* b ) } else if (ia == useda && ib != usedb) { /* a empty, use up b */ - ScalarTS* tmpb = VG_(indexXA)( b->ts, ib ); - thr = tmpb->thr; - tyma = 0; - tymb = tmpb->tym; + ScalarTS* tmpb = &b->ts[ib]; + thrid = tmpb->thrid; + tyma = 0; + tymb = tmpb->tym; ib++; } else if (ia != useda && ib == usedb) { /* b empty, use up a */ - ScalarTS* tmpa = VG_(indexXA)( a->ts, ia ); - thr = tmpa->thr; - tyma = tmpa->tym; - tymb = 0; + ScalarTS* tmpa = &a->ts[ia]; + thrid = tmpa->thrid; + tyma = tmpa->tym; + tymb = 0; ia++; } else { - /* both not empty; extract lowest-Thr*'d triple */ - ScalarTS* tmpa = VG_(indexXA)( a->ts, ia ); - ScalarTS* tmpb = VG_(indexXA)( b->ts, ib ); - if (tmpa->thr < tmpb->thr) { - /* a has the lowest unconsidered Thr* */ - thr = tmpa->thr; - tyma = tmpa->tym; - tymb = 0; + /* both not empty; extract lowest-ThrID'd triple */ + ScalarTS* tmpa = &a->ts[ia]; + ScalarTS* tmpb = &b->ts[ib]; + if (tmpa->thrid < tmpb->thrid) { + /* a has the lowest unconsidered ThrID */ + thrid = tmpa->thrid; + tyma = tmpa->tym; + tymb = 0; ia++; - } else if (tmpa->thr > tmpb->thr) { - /* b has the lowest unconsidered Thr* */ - thr = tmpb->thr; - tyma = 0; - tymb = tmpb->tym; + } else if (tmpa->thrid > tmpb->thrid) { + /* b has the lowest unconsidered ThrID */ + thrid = tmpb->thrid; + tyma = 0; + tymb = tmpb->tym; ib++; } else { - /* they both next mention the same Thr* */ - tl_assert(tmpa->thr == tmpb->thr); - thr = tmpa->thr; /* == tmpb->thr */ - tyma = tmpa->tym; - tymb = tmpb->tym; + /* they both next mention the same ThrID */ + tl_assert(tmpa->thrid == tmpb->thrid); + thrid = tmpa->thrid; /* == tmpb->thrid */ + tyma = tmpa->tym; + tymb = tmpb->tym; ia++; ib++; + ncommon++; } } @@ -1813,35 +1941,35 @@ VTS* VTS__join ( VTS* a, VTS* b ) useful with it. */ tymMax = tyma > tymb ? tyma : tymb; if (tymMax > 0) { - ScalarTS st; - st.thr = thr; - st.tym = tymMax; - VG_(addToXA)( res->ts, &st ); + UInt hi = out->usedTS++; + out->ts[hi].thrid = thrid; + out->ts[hi].tym = tymMax; } } - tl_assert(is_sane_VTS( res )); - - return res; + tl_assert(is_sane_VTS(out)); + tl_assert(out->usedTS <= out->sizeTS); + tl_assert(out->usedTS == useda + usedb - ncommon); } -/* Determine if 'a' <= 'b', in the partial ordering. Returns NULL if - they are, or the first Thr* for which they are not. This rather - strange convention is used because sometimes we want to know the - actual index at which they first differ. */ -static Thr* VTS__cmpLEQ ( VTS* a, VTS* b ) +/* Determine if 'a' <= 'b', in the partial ordering. Returns zero if + they are, or the first ThrID for which they are not (no valid ThrID + has the value zero). This rather strange convention is used + because sometimes we want to know the actual index at which they + first differ. */ +static UInt/*ThrID*/ VTS__cmpLEQ ( VTS* a, VTS* b ) { Word ia, ib, useda, usedb; ULong tyma, tymb; stats__vts__cmpLEQ++; - tl_assert(a && a->ts); - tl_assert(b && b->ts); - useda = VG_(sizeXA)( a->ts ); - usedb = VG_(sizeXA)( b->ts ); + tl_assert(a); + tl_assert(b); + useda = a->usedTS; + usedb = b->usedTS; ia = ib = 0; @@ -1850,7 +1978,7 @@ static Thr* VTS__cmpLEQ ( VTS* a, VTS* b ) /* This logic is to enumerate doubles (tyma, tymb) drawn from a and b in order, and tyma/b are the relevant scalar timestamps, taking into account implicit zeroes. */ - Thr* thr; + ThrID thrid; tl_assert(ia >= 0 && ia <= useda); tl_assert(ib >= 0 && ib <= usedb); @@ -1861,44 +1989,44 @@ static Thr* VTS__cmpLEQ ( VTS* a, VTS* b ) } else if (ia == useda && ib != usedb) { /* a empty, use up b */ - ScalarTS* tmpb = VG_(indexXA)( b->ts, ib ); - tyma = 0; - tymb = tmpb->tym; - thr = tmpb->thr; + ScalarTS* tmpb = &b->ts[ib]; + tyma = 0; + tymb = tmpb->tym; + thrid = tmpb->thrid; ib++; } else if (ia != useda && ib == usedb) { /* b empty, use up a */ - ScalarTS* tmpa = VG_(indexXA)( a->ts, ia ); - tyma = tmpa->tym; - thr = tmpa->thr; - tymb = 0; + ScalarTS* tmpa = &a->ts[ia]; + tyma = tmpa->tym; + thrid = tmpa->thrid; + tymb = 0; ia++; } else { - /* both not empty; extract lowest-Thr*'d triple */ - ScalarTS* tmpa = VG_(indexXA)( a->ts, ia ); - ScalarTS* tmpb = VG_(indexXA)( b->ts, ib ); - if (tmpa->thr < tmpb->thr) { - /* a has the lowest unconsidered Thr* */ - tyma = tmpa->tym; - thr = tmpa->thr; - tymb = 0; + /* both not empty; extract lowest-ThrID'd triple */ + ScalarTS* tmpa = &a->ts[ia]; + ScalarTS* tmpb = &b->ts[ib]; + if (tmpa->thrid < tmpb->thrid) { + /* a has the lowest unconsidered ThrID */ + tyma = tmpa->tym; + thrid = tmpa->thrid; + tymb = 0; ia++; } else - if (tmpa->thr > tmpb->thr) { - /* b has the lowest unconsidered Thr* */ - tyma = 0; - tymb = tmpb->tym; - thr = tmpb->thr; + if (tmpa->thrid > tmpb->thrid) { + /* b has the lowest unconsidered ThrID */ + tyma = 0; + tymb = tmpb->tym; + thrid = tmpb->thrid; ib++; } else { - /* they both next mention the same Thr* */ - tl_assert(tmpa->thr == tmpb->thr); - tyma = tmpa->tym; - thr = tmpa->thr; - tymb = tmpb->tym; + /* they both next mention the same ThrID */ + tl_assert(tmpa->thrid == tmpb->thrid); + tyma = tmpa->tym; + thrid = tmpa->thrid; + tymb = tmpb->tym; ia++; ib++; } @@ -1909,12 +2037,12 @@ static Thr* VTS__cmpLEQ ( VTS* a, VTS* b ) if (tyma > tymb) { /* not LEQ at this index. Quit, since the answer is determined already. */ - tl_assert(thr); - return thr; + tl_assert(thrid >= 1024); + return thrid; } } - return NULL; /* all points are LEQ */ + return 0; /* all points are LEQ => return an invalid ThrID */ } @@ -1938,8 +2066,8 @@ Word VTS__cmp_structural ( VTS* a, VTS* b ) tl_assert(a); tl_assert(b); - VG_(getContentsXA_UNSAFE)( a->ts, (void**)&ctsa, &useda ); - VG_(getContentsXA_UNSAFE)( b->ts, (void**)&ctsb, &usedb ); + ctsa = &a->ts[0]; useda = a->usedTS; + ctsb = &b->ts[0]; usedb = b->usedTS; if (LIKELY(useda == usedb)) { ScalarTS *tmpa = NULL, *tmpb = NULL; @@ -1949,7 +2077,8 @@ Word VTS__cmp_structural ( VTS* a, VTS* b ) for (i = 0; i < useda; i++) { tmpa = &ctsa[i]; tmpb = &ctsb[i]; - if (LIKELY(tmpa->tym == tmpb->tym && tmpa->thr == tmpb->thr)) + if (LIKELY(tmpa->tym == tmpb->tym + && tmpa->thrid == tmpb->thrid)) continue; else break; @@ -1961,8 +2090,8 @@ Word VTS__cmp_structural ( VTS* a, VTS* b ) tl_assert(i >= 0 && i < useda); if (tmpa->tym < tmpb->tym) return -1; if (tmpa->tym > tmpb->tym) return 1; - if (tmpa->thr < tmpb->thr) return -1; - if (tmpa->thr > tmpb->thr) return 1; + if (tmpa->thrid < tmpb->thrid) return -1; + if (tmpa->thrid > tmpb->thrid) return 1; /* we just established them as non-identical, hence: */ } /*NOTREACHED*/ @@ -1978,7 +2107,8 @@ Word VTS__cmp_structural ( VTS* a, VTS* b ) /* Debugging only. Display the given VTS in the buffer. */ -void VTS__show ( HChar* buf, Int nBuf, VTS* vts ) { +void VTS__show ( HChar* buf, Int nBuf, VTS* vts ) +{ ScalarTS* st; HChar unit[64]; Word i, n; @@ -1987,13 +2117,13 @@ void VTS__show ( HChar* buf, Int nBuf, VTS* vts ) { tl_assert(nBuf > 16); buf[0] = '['; buf[1] = 0; - n = VG_(sizeXA)( vts->ts ); + n = vts->usedTS; for (i = 0; i < n; i++) { tl_assert(avail >= 40); - st = VG_(indexXA)( vts->ts, i ); + st = &vts->ts[i]; VG_(memset)(unit, 0, sizeof(unit)); - VG_(sprintf)(unit, i < n-1 ? "%p:%lld " : "%p:%lld", - st->thr, st->tym); + VG_(sprintf)(unit, i < n-1 ? "%u:%llu " : "%u:%llu", + st->thrid, (ULong)st->tym); if (avail < VG_(strlen)(unit) + 40/*let's say*/) { VG_(strcat)(buf, " ...]"); buf[nBuf-1] = 0; @@ -2009,14 +2139,16 @@ void VTS__show ( HChar* buf, Int nBuf, VTS* vts ) { /* Debugging only. Return vts[index], so to speak. */ -ULong VTS__indexAt_SLOW ( VTS* vts, Thr* idx ) { +ULong VTS__indexAt_SLOW ( VTS* vts, Thr* idx ) +{ UWord i, n; + ThrID idx_thrid = Thr__to_ThrID(idx); stats__vts__indexat_slow++; tl_assert(vts && vts->ts); - n = VG_(sizeXA)( vts->ts ); + n = vts->usedTS; for (i = 0; i < n; i++) { - ScalarTS* st = VG_(indexXA)( vts->ts, i ); - if (st->thr == idx) + ScalarTS* st = &vts->ts[i]; + if (st->thrid == idx_thrid) return st->tym; } return 0; @@ -2059,30 +2191,31 @@ static void vts_set_init ( void ) tl_assert(vts_set); } -/* Given a newly made VTS, look in vts_set to see if we already have - an identical one. If yes, free up this one and return instead a - pointer to the existing one. If no, add this one to the set and - return the same pointer. Caller differentiates the two cases by - comparing returned pointer with the supplied one (although that - does require that the supplied VTS is not already in the set). -*/ -static VTS* vts_set__find_and_dealloc__or_add ( VTS* cand ) +/* Given a VTS, look in vts_set to see if we already have a + structurally identical one. If yes, return the pair (True, pointer + to the existing one). If no, clone this one, add the clone to the + set, and return (False, pointer to the clone). */ +static Bool vts_set__find__or__clone_and_add ( /*OUT*/VTS** res, VTS* cand ) { UWord keyW, valW; - stats__vts_set__fadoa++; + stats__vts_set__focaa++; + tl_assert(cand->id == VtsID_INVALID); /* lookup cand (by value) */ if (VG_(lookupFM)( vts_set, &keyW, &valW, (UWord)cand )) { /* found it */ tl_assert(valW == 0); /* if this fails, cand (by ref) was already present (!) */ tl_assert(keyW != (UWord)cand); - stats__vts_set__fadoa_d++; - VTS__delete(cand); - return (VTS*)keyW; + *res = (VTS*)keyW; + return True; } else { - /* not present. Add and return pointer to same. */ - VG_(addToFM)( vts_set, (UWord)cand, 0/*val is unused*/ ); - return cand; + /* not present. Clone, add and return address of clone. */ + stats__vts_set__focaa_a++; + VTS* clone = VTS__clone( "libhb.vts_set_focaa.1", cand ); + tl_assert(clone != cand); + VG_(addToFM)( vts_set, (UWord)clone, 0/*val is unused*/ ); + *res = clone; + return False; } } @@ -2206,29 +2339,30 @@ static void VtsID__rcdec ( VtsID ii ) } -/* Look up 'cand' in our collection of VTSs. If present, deallocate - it and return the VtsID for the pre-existing version. If not - present, add it to both vts_tab and vts_set, allocate a fresh VtsID - for it, and return that. */ -static VtsID vts_tab__find_and_dealloc__or_add ( VTS* cand ) +/* Look up 'cand' in our collection of VTSs. If present, return the + VtsID for the pre-existing version. If not present, clone it, add + the clone to both vts_tab and vts_set, allocate a fresh VtsID for + it, and return that. */ +static VtsID vts_tab__find__or__clone_and_add ( VTS* cand ) { - VTS* auld; + VTS* in_tab = NULL; tl_assert(cand->id == VtsID_INVALID); - auld = vts_set__find_and_dealloc__or_add(cand); - if (auld != cand) { - /* We already have an Aulde one. Use that. */ + Bool already_have = vts_set__find__or__clone_and_add( &in_tab, cand ); + tl_assert(in_tab); + if (already_have) { + /* We already have a copy of 'cand'. Use that. */ VtsTE* ie; - tl_assert(auld->id != VtsID_INVALID); - ie = VG_(indexXA)( vts_tab, auld->id ); - tl_assert(ie->vts == auld); - return auld->id; + tl_assert(in_tab->id != VtsID_INVALID); + ie = VG_(indexXA)( vts_tab, in_tab->id ); + tl_assert(ie->vts == in_tab); + return in_tab->id; } else { VtsID ii = get_new_VtsID(); VtsTE* ie = VG_(indexXA)( vts_tab, ii ); - ie->vts = cand; + ie->vts = in_tab; ie->rc = 0; ie->freelink = VtsID_INVALID; - cand->id = ii; + in_tab->id = ii; return ii; } } @@ -2347,6 +2481,11 @@ static void vts_tab__do_GC ( Bool show_stats ) // // ///////////////////////////////////////////////////////// +////////////////////////// +/* A temporary, max-sized VTS which is used as a temporary (the first + argument) in VTS__singleton, VTS__tick and VTS__join operations. */ +static VTS* temp_max_sized_VTS = NULL; + ////////////////////////// static ULong stats__cmpLEQ_queries = 0; static ULong stats__cmpLEQ_misses = 0; @@ -2430,7 +2569,7 @@ static Bool VtsID__cmpLEQ_WRK ( VtsID vi1, VtsID vi2 ) { ////-- v1 = VtsID__to_VTS(vi1); v2 = VtsID__to_VTS(vi2); - leq = VTS__cmpLEQ( v1, v2 ) == NULL; + leq = VTS__cmpLEQ( v1, v2 ) == 0; ////++ cmpLEQ_cache[hash].vi1 = vi1; cmpLEQ_cache[hash].vi2 = vi2; @@ -2447,7 +2586,7 @@ __attribute__((noinline)) static VtsID VtsID__join2_WRK ( VtsID vi1, VtsID vi2 ) { UInt hash; VtsID res; - VTS *vts1, *vts2, *nyu; + VTS *vts1, *vts2; //if (vi1 == vi2) return vi1; tl_assert(vi1 != vi2); ////++ @@ -2460,8 +2599,9 @@ static VtsID VtsID__join2_WRK ( VtsID vi1, VtsID vi2 ) { ////-- vts1 = VtsID__to_VTS(vi1); vts2 = VtsID__to_VTS(vi2); - nyu = VTS__join(vts1,vts2); - res = vts_tab__find_and_dealloc__or_add(nyu); + temp_max_sized_VTS->usedTS = 0; + VTS__join(temp_max_sized_VTS, vts1,vts2); + res = vts_tab__find__or__clone_and_add(temp_max_sized_VTS); ////++ join2_cache[hash].vi1 = vi1; join2_cache[hash].vi2 = vi2; @@ -2475,15 +2615,17 @@ static inline VtsID VtsID__join2 ( VtsID vi1, VtsID vi2 ) { /* create a singleton VTS, namely [thr:1] */ static VtsID VtsID__mk_Singleton ( Thr* thr, ULong tym ) { - VTS* nyu = VTS__singleton(thr,tym); - return vts_tab__find_and_dealloc__or_add(nyu); + temp_max_sized_VTS->usedTS = 0; + VTS__singleton(temp_max_sized_VTS, thr,tym); + return vts_tab__find__or__clone_and_add(temp_max_sized_VTS); } /* tick operation, creates value 1 if specified index is absent */ static VtsID VtsID__tick ( VtsID vi, Thr* idx ) { VTS* vts = VtsID__to_VTS(vi); - VTS* nyu = VTS__tick(idx,vts); - return vts_tab__find_and_dealloc__or_add(nyu); + temp_max_sized_VTS->usedTS = 0; + VTS__tick(temp_max_sized_VTS, idx,vts); + return vts_tab__find__or__clone_and_add(temp_max_sized_VTS); } /* index into a VTS (only for assertions) */ @@ -2500,12 +2642,14 @@ static ULong VtsID__indexAt ( VtsID vi, Thr* idx ) { static Thr* VtsID__findFirst_notLEQ ( VtsID vi1, VtsID vi2 ) { VTS *vts1, *vts2; - Thr* diffthr; + Thr* diffthr; + ThrID diffthrid; tl_assert(vi1 != vi2); vts1 = VtsID__to_VTS(vi1); vts2 = VtsID__to_VTS(vi2); tl_assert(vts1 != vts2); - diffthr = VTS__cmpLEQ(vts1, vts2); + diffthrid = VTS__cmpLEQ(vts1, vts2); + diffthr = Thr__from_ThrID(diffthrid); tl_assert(diffthr); /* else they are LEQ ! */ return diffthr; } @@ -2907,13 +3051,20 @@ struct _Thr { has done a low-level exit. */ Bool still_alive; + /* A small integer giving a unique identity to this Thr. See + comments on the definition of ScalarTS for details. */ + ThrID thrid : SCALARTS_N_THRBITS; + /* A filter that removes references for which we believe that msmcread/msmcwrite will not change the state, nor report a race. */ Filter* filter; - /* opaque (to us) data we hold on behalf of the library's user. */ - void* opaque; + /* A pointer back to the top level Thread structure. There is a + 1-1 mapping between Thread and Thr structures -- each Thr points + at its corresponding Thread, and vice versa. Really, Thr and + Thread should be merged into a single structure. */ + Thread* hgthread; /* The ULongs (scalar Kws) in this accumulate in strictly increasing order, without duplicates. This is important because @@ -2922,7 +3073,27 @@ struct _Thr { XArray* /* ULong_n_EC */ local_Kws_n_stacks; }; -static Thr* Thr__new ( void ) { + +/* Maps ThrID values to their Thr*s (which contain ThrID values that + should point back to the relevant slot in the array. Lowest + numbered slot (0) is for thrid = 1024, (1) is for 1025, etc. */ +static XArray* /* of Thr* */ thrid_to_thr_map = NULL; + +/* And a counter to dole out ThrID values. For rationale/background, + see comments on definition of ScalarTS (far) above. */ +static ThrID thrid_counter = 1024; /* runs up to ThrID_MAX_VALID */ + +static ThrID Thr__to_ThrID ( Thr* thr ) { + return thr->thrid; +} +static Thr* Thr__from_ThrID ( UInt thrid ) { + Thr* thr = *(Thr**)VG_(indexXA)( thrid_to_thr_map, thrid - 1024 ); + tl_assert(thr->thrid == thrid); + return thr; +} + +static Thr* Thr__new ( void ) +{ Thr* thr = HG_(zalloc)( "libhb.Thr__new.1", sizeof(Thr) ); thr->viR = VtsID_INVALID; thr->viW = VtsID_INVALID; @@ -2936,6 +3107,24 @@ static Thr* Thr__new ( void ) { = VG_(newXA)( HG_(zalloc), "libhb.Thr__new.3 (local_Kws_and_stacks)", HG_(free), sizeof(ULong_n_EC) ); + + /* Add this Thr* <-> ThrID binding to the mapping, and + cross-check */ + if (!thrid_to_thr_map) { + thrid_to_thr_map = VG_(newXA)( HG_(zalloc), "libhb.Thr__new.4", + HG_(free), sizeof(Thr*) ); + tl_assert(thrid_to_thr_map); + } + + if (thrid_counter >= ThrID_MAX_VALID) { + /* We're hosed. We have to stop. */ + scalarts_limitations_fail_NORETURN( True/*due_to_nThrs*/ ); + } + + thr->thrid = thrid_counter++; + Word ix = VG_(addToXA)( thrid_to_thr_map, &thr ); + tl_assert(ix + 1024 == thr->thrid); + return thr; } @@ -4173,7 +4362,8 @@ static void record_race_info ( Thr* acc_thr, Thread* hist1_conf_thr = NULL; tl_assert(acc_thr); - tl_assert(acc_thr->opaque); + tl_assert(acc_thr->hgthread); + tl_assert(acc_thr->hgthread->hbthr == acc_thr); tl_assert(HG_(clo_history_level) >= 0 && HG_(clo_history_level) <= 2); if (HG_(clo_history_level) == 1) { @@ -4257,11 +4447,11 @@ static void record_race_info ( Thr* acc_thr, // seg_start could be NULL iff this is the first stack in the thread //if (seg_start) VG_(pp_ExeContext)(seg_start); //if (seg_end) VG_(pp_ExeContext)(seg_end); - hist1_conf_thr = confThr->opaque; + hist1_conf_thr = confThr->hgthread; } } - HG_(record_error_Race)( acc_thr->opaque, acc_addr, + HG_(record_error_Race)( acc_thr->hgthread, acc_addr, szB, isWrite, hist1_conf_thr, hist1_seg_start, hist1_seg_end ); } @@ -5380,6 +5570,13 @@ Thr* libhb_init ( { Thr* thr; VtsID vi; + + // We will have to have to store a large number of these, + // so make sure they're the size we expect them to be. + tl_assert(sizeof(ScalarTS) == 8); + tl_assert(SCALARTS_N_THRBITS >= 11); /* because first 1024 unusable */ + tl_assert(SCALARTS_N_THRBITS <= 32); /* so as to fit in a UInt */ + tl_assert(get_stacktrace); tl_assert(get_EC); main_get_stacktrace = get_stacktrace; @@ -5388,6 +5585,10 @@ Thr* libhb_init ( // No need to initialise hg_wordfm. // No need to initialise hg_wordset. + /* Allocated once and never deallocated. Used as a temporary in + VTS singleton, tick and join operations. */ + temp_max_sized_VTS = VTS__new( "libhb.libhb_init.1", ThrID_MAX_VALID ); + temp_max_sized_VTS->id = VtsID_INVALID; vts_set_init(); vts_tab_init(); event_map_init(); @@ -5525,8 +5726,8 @@ void libhb_shutdown ( Bool show_stats ) stats__vts__tick, stats__vts__join, stats__vts__cmpLEQ ); VG_(printf)( " libhb: VTSops: cmp_structural %'lu (%'lu slow)\n", stats__vts__cmp_structural, stats__vts__cmp_structural_slow ); - VG_(printf)( " libhb: VTSset: find_and_dealloc__or_add %'lu (%'lu deallocd)\n", - stats__vts_set__fadoa, stats__vts_set__fadoa_d ); + VG_(printf)( " libhb: VTSset: find__or__clone_and_add %'lu (%'lu allocd)\n", + stats__vts_set__focaa, stats__vts_set__focaa_a ); VG_(printf)( " libhb: VTSops: indexAt_SLOW %'lu\n", stats__vts__indexat_slow ); @@ -5764,11 +5965,21 @@ void libhb_srange_new ( Thr* thr, Addr a, SizeT szB ) if (0 && TRACEME(a,szB)) trace(thr,a,szB,"nw-after "); } -void libhb_srange_noaccess ( Thr* thr, Addr a, SizeT szB ) +void libhb_srange_noaccess_NoFX ( Thr* thr, Addr a, SizeT szB ) { /* do nothing */ } +void libhb_srange_noaccess_AHAE ( Thr* thr, Addr a, SizeT szB ) +{ + /* This really does put the requested range in NoAccess. It's + expensive though. */ + SVal sv = SVal_NOACCESS; + tl_assert(is_sane_SVal_C(sv)); + zsm_sset_range( a, szB, sv ); + Filter__clear_range( thr->filter, a, szB ); +} + void libhb_srange_untrack ( Thr* thr, Addr a, SizeT szB ) { SVal sv = SVal_NOACCESS; @@ -5779,14 +5990,14 @@ void libhb_srange_untrack ( Thr* thr, Addr a, SizeT szB ) if (0 && TRACEME(a,szB)) trace(thr,a,szB,"untrack-after "); } -void* libhb_get_Thr_opaque ( Thr* thr ) { +Thread* libhb_get_Thr_hgthread ( Thr* thr ) { tl_assert(thr); - return thr->opaque; + return thr->hgthread; } -void libhb_set_Thr_opaque ( Thr* thr, void* v ) { +void libhb_set_Thr_hgthread ( Thr* thr, Thread* hgthread ) { tl_assert(thr); - thr->opaque = v; + thr->hgthread = hgthread; } void libhb_copy_shadow_state ( Thr* thr, Addr src, Addr dst, SizeT len ) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.am index ff8bcb3e3..f48293a7b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.am @@ -8,8 +8,12 @@ EXTRA_DIST = \ annotate_hbefore.stderr.exp \ annotate_rwlock.vgtest annotate_rwlock.stdout.exp \ annotate_rwlock.stderr.exp \ + annotate_smart_pointer.vgtest annotate_smart_pointer.stdout.exp \ + annotate_smart_pointer.stderr.exp \ bar_bad.vgtest bar_bad.stdout.exp bar_bad.stderr.exp \ bar_trivial.vgtest bar_trivial.stdout.exp bar_trivial.stderr.exp \ + free_is_write.vgtest free_is_write.stdout.exp \ + free_is_write.stderr.exp \ hg01_all_ok.vgtest hg01_all_ok.stdout.exp hg01_all_ok.stderr.exp \ hg02_deadlock.vgtest hg02_deadlock.stdout.exp hg02_deadlock.stderr.exp \ hg03_inherit.vgtest hg03_inherit.stdout.exp hg03_inherit.stderr.exp \ @@ -77,6 +81,7 @@ EXTRA_DIST = \ # should be conditionally compiled like tc20_verifywrap is. check_PROGRAMS = \ annotate_hbefore \ + free_is_write \ hg01_all_ok \ hg02_deadlock \ hg03_inherit \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.in index 630d77b64..8d249db25 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/Makefile.in @@ -46,9 +46,9 @@ host_triplet = @host@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am -check_PROGRAMS = annotate_hbefore$(EXEEXT) hg01_all_ok$(EXEEXT) \ - hg02_deadlock$(EXEEXT) hg03_inherit$(EXEEXT) \ - hg04_race$(EXEEXT) hg05_race2$(EXEEXT) \ +check_PROGRAMS = annotate_hbefore$(EXEEXT) free_is_write$(EXEEXT) \ + hg01_all_ok$(EXEEXT) hg02_deadlock$(EXEEXT) \ + hg03_inherit$(EXEEXT) hg04_race$(EXEEXT) hg05_race2$(EXEEXT) \ hg06_readshared$(EXEEXT) tc01_simple_race$(EXEEXT) \ tc02_simple_tls$(EXEEXT) tc03_re_excl$(EXEEXT) \ tc04_free_lock$(EXEEXT) tc05_simple_race$(EXEEXT) \ @@ -121,6 +121,10 @@ bar_trivial_SOURCES = bar_trivial.c bar_trivial_OBJECTS = bar_trivial.$(OBJEXT) bar_trivial_LDADD = $(LDADD) bar_trivial_DEPENDENCIES = +free_is_write_SOURCES = free_is_write.c +free_is_write_OBJECTS = free_is_write.$(OBJEXT) +free_is_write_LDADD = $(LDADD) +free_is_write_DEPENDENCIES = hg01_all_ok_SOURCES = hg01_all_ok.c hg01_all_ok_OBJECTS = hg01_all_ok.$(OBJEXT) hg01_all_ok_LDADD = $(LDADD) @@ -255,18 +259,7 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = annotate_hbefore.c annotate_rwlock.c bar_bad.c bar_trivial.c \ - hg01_all_ok.c hg02_deadlock.c hg03_inherit.c hg04_race.c \ - hg05_race2.c hg06_readshared.c tc01_simple_race.c \ - tc02_simple_tls.c tc03_re_excl.c tc04_free_lock.c \ - tc05_simple_race.c tc06_two_races.c tc07_hbl1.c tc08_hbl2.c \ - tc09_bad_unlock.c tc10_rec_lock.c tc11_XCHG.c \ - tc12_rwl_trivial.c tc13_laog1.c tc14_laog_dinphils.c \ - tc15_laog_lockdel.c tc16_byterace.c tc17_sembar.c \ - tc18_semabuse.c tc19_shadowmem.c tc20_verifywrap.c \ - tc21_pthonce.c tc22_exit_w_lock.c tc23_bogus_condwait.c \ - tc24_nonzero_sem.c -DIST_SOURCES = annotate_hbefore.c annotate_rwlock.c bar_bad.c \ - bar_trivial.c hg01_all_ok.c hg02_deadlock.c hg03_inherit.c \ + free_is_write.c hg01_all_ok.c hg02_deadlock.c hg03_inherit.c \ hg04_race.c hg05_race2.c hg06_readshared.c tc01_simple_race.c \ tc02_simple_tls.c tc03_re_excl.c tc04_free_lock.c \ tc05_simple_race.c tc06_two_races.c tc07_hbl1.c tc08_hbl2.c \ @@ -276,6 +269,17 @@ DIST_SOURCES = annotate_hbefore.c annotate_rwlock.c bar_bad.c \ tc18_semabuse.c tc19_shadowmem.c tc20_verifywrap.c \ tc21_pthonce.c tc22_exit_w_lock.c tc23_bogus_condwait.c \ tc24_nonzero_sem.c +DIST_SOURCES = annotate_hbefore.c annotate_rwlock.c bar_bad.c \ + bar_trivial.c free_is_write.c hg01_all_ok.c hg02_deadlock.c \ + hg03_inherit.c hg04_race.c hg05_race2.c hg06_readshared.c \ + tc01_simple_race.c tc02_simple_tls.c tc03_re_excl.c \ + tc04_free_lock.c tc05_simple_race.c tc06_two_races.c \ + tc07_hbl1.c tc08_hbl2.c tc09_bad_unlock.c tc10_rec_lock.c \ + tc11_XCHG.c tc12_rwl_trivial.c tc13_laog1.c \ + tc14_laog_dinphils.c tc15_laog_lockdel.c tc16_byterace.c \ + tc17_sembar.c tc18_semabuse.c tc19_shadowmem.c \ + tc20_verifywrap.c tc21_pthonce.c tc22_exit_w_lock.c \ + tc23_bogus_condwait.c tc24_nonzero_sem.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -321,6 +325,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -350,12 +356,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -508,7 +509,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -537,6 +538,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -565,6 +571,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -587,8 +594,12 @@ EXTRA_DIST = \ annotate_hbefore.stderr.exp \ annotate_rwlock.vgtest annotate_rwlock.stdout.exp \ annotate_rwlock.stderr.exp \ + annotate_smart_pointer.vgtest annotate_smart_pointer.stdout.exp \ + annotate_smart_pointer.stderr.exp \ bar_bad.vgtest bar_bad.stdout.exp bar_bad.stderr.exp \ bar_trivial.vgtest bar_trivial.stdout.exp bar_trivial.stderr.exp \ + free_is_write.vgtest free_is_write.stdout.exp \ + free_is_write.stderr.exp \ hg01_all_ok.vgtest hg01_all_ok.stdout.exp hg01_all_ok.stderr.exp \ hg02_deadlock.vgtest hg02_deadlock.stdout.exp hg02_deadlock.stderr.exp \ hg03_inherit.vgtest hg03_inherit.stdout.exp hg03_inherit.stderr.exp \ @@ -710,6 +721,9 @@ bar_bad$(EXEEXT): $(bar_bad_OBJECTS) $(bar_bad_DEPENDENCIES) bar_trivial$(EXEEXT): $(bar_trivial_OBJECTS) $(bar_trivial_DEPENDENCIES) @rm -f bar_trivial$(EXEEXT) $(LINK) $(bar_trivial_OBJECTS) $(bar_trivial_LDADD) $(LIBS) +free_is_write$(EXEEXT): $(free_is_write_OBJECTS) $(free_is_write_DEPENDENCIES) + @rm -f free_is_write$(EXEEXT) + $(LINK) $(free_is_write_OBJECTS) $(free_is_write_LDADD) $(LIBS) hg01_all_ok$(EXEEXT): $(hg01_all_ok_OBJECTS) $(hg01_all_ok_DEPENDENCIES) @rm -f hg01_all_ok$(EXEEXT) $(LINK) $(hg01_all_ok_OBJECTS) $(hg01_all_ok_LDADD) $(LIBS) @@ -811,6 +825,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/annotate_rwlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bar_bad.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bar_trivial.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/free_is_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hg01_all_ok.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hg02_deadlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hg03_inherit.Po@am__quote@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_hbefore.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_hbefore.c index 704e4aef0..82e32f006 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_hbefore.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_hbefore.c @@ -167,6 +167,25 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) return success; } +#elif defined(VGA_s390x) + +// s390x +/* return 1 if success, 0 if failure */ +UWord do_acasW(UWord* addr, UWord expected, UWord nyu ) +{ + int cc; + + __asm__ __volatile__ ( + "csg %2,%3,%1\n\t" + "ipm %0\n\t" + "srl %0,28\n\t" + : /* out */ "=r" (cc) + : /* in */ "Q" (*addr), "d" (expected), "d" (nyu) + : "memory", "cc" + ); + return cc == 0; +} + #endif void atomic_incW ( UWord* w ) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.stderr.exp new file mode 100644 index 000000000..d16127fb5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.stderr.exp @@ -0,0 +1,4 @@ + +Done. + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.vgtest new file mode 100644 index 000000000..efed72933 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/annotate_smart_pointer.vgtest @@ -0,0 +1,2 @@ +prog: ../../drd/tests/annotate_smart_pointer +args: 50 5 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.c new file mode 100644 index 000000000..0dc53f8d1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.c @@ -0,0 +1,42 @@ + +#include +#include +#include +#include +#include + +static char* s_mem; + +/* wait a second, so as to guarantee that the parent access + the malloc'd area, then free it. */ +static void* thread_func(void* arg) +{ + sleep(1); + free(s_mem); + return NULL; +} + +int main(int argc, char** argv) +{ + pthread_t tid; + int quiet; + + fprintf(stderr, "Start.\n"); + + quiet = argc > 1; + + s_mem = malloc(10); + if (0 && !quiet) + fprintf(stderr, "Pointer to allocated memory: %p\n", s_mem); + assert(s_mem); + pthread_create(&tid, NULL, thread_func, NULL); + + /* Write, which isn't coordinated with the free ==> a race + should be reported. */ + char c = s_mem[5]; + __asm__ __volatile__("" : : "r"((long)c) ); + + pthread_join(tid, NULL); + fprintf(stderr, "Done.\n"); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.stderr.exp new file mode 100644 index 000000000..672915d7d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.stderr.exp @@ -0,0 +1,20 @@ + +Start. +Thread #x was created + ... + by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:32) + +Thread #x is the program's root thread + +Possible data race during write of size 1 at 0x........ by thread #x + at 0x........: free (vg_replace_malloc.c:...) + by 0x........: thread_func (free_is_write.c:15) + by 0x........: mythread_wrapper (hg_intercepts.c:...) + ... + This conflicts with a previous read of size 1 by thread #x + at 0x........: main (free_is_write.c:36) + +Done. + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.vgtest new file mode 100644 index 000000000..5ba9d3423 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/free_is_write.vgtest @@ -0,0 +1,2 @@ +prog: free_is_write +vgopts: --free-is-write=yes diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/pth_spinlock.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/pth_spinlock.vgtest index 512b28767..90280a512 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/pth_spinlock.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/pth_spinlock.vgtest @@ -1,3 +1,7 @@ -prereq: test -e ../../drd/tests/pth_spinlock +# Disabled this test because it fails intermittently. +# See also https://bugs.kde.org/show_bug.cgi?id=205452. + +#prereq: test -e ../../drd/tests/pth_spinlock +prereq: false vgopts: -q prog: ../../drd/tests/pth_spinlock diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc03_re_excl.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc03_re_excl.c index 4f3ce5127..6fd5a1b09 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc03_re_excl.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc03_re_excl.c @@ -10,7 +10,7 @@ /* A simple function to "use" a value, so that gcc can't possibly optimise it into nothing. */ static void use ( int x ) { - __asm__ __volatile__( "nop" : : "r"(x) : "cc","memory" ); + __asm__ __volatile__( "" : : "r"(x) : "cc","memory" ); } static void* worker_thread ( void* argV ) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc07_hbl1.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc07_hbl1.c index d48f7bb99..2834c5d8b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc07_hbl1.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc07_hbl1.c @@ -15,6 +15,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -34,6 +35,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif #if defined(PLAT_amd64_linux) || defined(PLAT_x86_linux) \ @@ -45,26 +48,36 @@ || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) # define INC(_lval,_lqual) \ __asm__ __volatile__( \ - "L1xyzzy1" _lqual ":\n" \ + "1:\n" \ " lwarx 15,0,%0\n" \ " addi 15,15,1\n" \ " stwcx. 15,0,%0\n" \ - " bne- L1xyzzy1" _lqual \ + " bne- 1b\n" \ : /*out*/ : /*in*/ "b"(&(_lval)) \ : /*trash*/ "r15", "cr0", "memory" \ ) #elif defined(PLAT_arm_linux) # define INC(_lval,_lqual) \ __asm__ __volatile__( \ - "L1xyzzy1" _lqual ":\n" \ + "1:\n" \ " ldrex r8, [%0, #0]\n" \ " add r8, r8, #1\n" \ " strex r9, r8, [%0, #0]\n" \ " cmp r9, #0\n" \ - " bne L1xyzzy1" _lqual \ + " bne 1b\n" \ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "r8", "r9", "cc", "memory" \ ); +#elif defined(PLAT_s390x_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__( \ + "1: l 0,%0\n" \ + " lr 1,0\n" \ + " ahi 1,1\n" \ + " cs 0,1,%0\n" \ + " jl 1b\n" \ + : "+m" (_lval) :: "cc", "1","2" \ + ) #else # error "Fix Me for this platform" #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc08_hbl2.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc08_hbl2.c index 0ca3f3aec..7821cde2c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc08_hbl2.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc08_hbl2.c @@ -31,6 +31,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -50,6 +51,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif @@ -62,26 +65,36 @@ || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) # define INC(_lval,_lqual) \ __asm__ __volatile__( \ - "L1xyzzy1" _lqual ":\n" \ + "1:\n" \ " lwarx 15,0,%0\n" \ " addi 15,15,1\n" \ " stwcx. 15,0,%0\n" \ - " bne- L1xyzzy1" _lqual \ + " bne- 1b\n" \ : /*out*/ : /*in*/ "b"(&(_lval)) \ : /*trash*/ "r15", "cr0", "memory" \ ) #elif defined(PLAT_arm_linux) # define INC(_lval,_lqual) \ __asm__ __volatile__( \ - "L1xyzzy1" _lqual ":\n" \ + "1:\n" \ " ldrex r8, [%0, #0]\n" \ " add r8, r8, #1\n" \ " strex r9, r8, [%0, #0]\n" \ " cmp r9, #0\n" \ - " bne L1xyzzy1" _lqual \ + " bne 1b\n" \ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "r8", "r9", "cc", "memory" \ ); +#elif defined(PLAT_s390x_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__( \ + "1: l 0,%0\n" \ + " lr 1,0\n" \ + " ahi 1,1\n" \ + " cs 0,1,%0\n" \ + " jl 1b\n" \ + : "+m" (_lval) :: "cc", "0","1" \ + ) #else # error "Fix Me for this platform" #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 index 5c6a8fc0e..f8e4a5050 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 @@ -51,6 +51,10 @@ Thread #x: Attempt to re-lock a non-recursive lock I already hold at 0x........: pthread_mutex_lock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:32) by 0x........: main (tc09_bad_unlock.c:50) + Lock was previously acquired + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + by 0x........: nearly_main (tc09_bad_unlock.c:32) + by 0x........: main (tc09_bad_unlock.c:49) Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion at 0x........: pthread_mutex_lock (hg_intercepts.c:...) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc11_XCHG.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc11_XCHG.c index 54cb494a1..584d896ac 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc11_XCHG.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc11_XCHG.c @@ -18,6 +18,7 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -37,6 +38,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #endif @@ -59,7 +62,7 @@ #elif defined(PLAT_ppc32_linux) || defined(PLAT_ppc64_linux) \ || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) \ - || defined(PLAT_arm_linux) + || defined(PLAT_arm_linux) || defined(PLAT_s390x_linux) # if defined(HAVE_BUILTIN_ATOMIC) # define XCHG_M_R(_addr,_lval) \ do { \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc17_sembar.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc17_sembar.c index 1113a6767..7b2281649 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc17_sembar.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc17_sembar.c @@ -25,18 +25,18 @@ but it is used to create enough extra inter-thread dependencies that the barrier-like behaviour of gomp_barrier_t is evident to Thrcheck. There is no other purpose for the .xxx field. */ -static int my_sem_init(sem_t*, char*, int, unsigned); +static sem_t* my_sem_init(char*, int, unsigned); static int my_sem_destroy(sem_t*); static int my_sem_wait(sem_t*); static int my_sem_post(sem_t*); typedef struct { pthread_mutex_t mutex1; pthread_mutex_t mutex2; - sem_t sem1; - sem_t sem2; + sem_t* sem1; + sem_t* sem2; unsigned total; unsigned arrived; - sem_t xxx; + sem_t* xxx; } gomp_barrier_t; typedef long bool; @@ -46,9 +46,9 @@ gomp_barrier_init (gomp_barrier_t *bar, unsigned count) { pthread_mutex_init (&bar->mutex1, NULL); pthread_mutex_init (&bar->mutex2, NULL); - my_sem_init (&bar->sem1, "sem1", 0, 0); - my_sem_init (&bar->sem2, "sem2", 0, 0); - my_sem_init (&bar->xxx, "xxx", 0, 0); + bar->sem1 = my_sem_init ("sem1", 0, 0); + bar->sem2 = my_sem_init ("sem2", 0, 0); + bar->xxx = my_sem_init ("xxx", 0, 0); bar->total = count; bar->arrived = 0; } @@ -62,9 +62,9 @@ gomp_barrier_destroy (gomp_barrier_t *bar) pthread_mutex_destroy (&bar->mutex1); pthread_mutex_destroy (&bar->mutex2); - my_sem_destroy (&bar->sem1); - my_sem_destroy (&bar->sem2); - my_sem_destroy(&bar->xxx); + my_sem_destroy(bar->sem1); + my_sem_destroy(bar->sem2); + my_sem_destroy(bar->xxx); } void @@ -91,17 +91,17 @@ gomp_barrier_wait (gomp_barrier_t *bar) { { unsigned int i; for (i = 0; i < n; i++) - my_sem_wait(&bar->xxx); // acquire an obvious dependency from + my_sem_wait(bar->xxx); // acquire an obvious dependency from // all other threads arriving at the barrier } // 1 up n times, 2 down once // now let all the other threads past the barrier, giving them // an obvious dependency with this thread. do - my_sem_post (&bar->sem1); // 1 up + my_sem_post (bar->sem1); // 1 up while (--n != 0); // and wait till the last thread has left - my_sem_wait (&bar->sem2); // 2 down + my_sem_wait (bar->sem2); // 2 down } pthread_mutex_unlock (&bar->mutex1); /* «Resultats professionnels!» First we made this thread have an @@ -115,16 +115,16 @@ gomp_barrier_wait (gomp_barrier_t *bar) else { pthread_mutex_unlock (&bar->mutex1); - my_sem_post(&bar->xxx); + my_sem_post(bar->xxx); // first N-1 threads wind up waiting here - my_sem_wait (&bar->sem1); // 1 down + my_sem_wait (bar->sem1); // 1 down pthread_mutex_lock (&bar->mutex2); n = --bar->arrived; /* XXX see below */ pthread_mutex_unlock (&bar->mutex2); if (n == 0) - my_sem_post (&bar->sem2); // 2 up + my_sem_post (bar->sem2); // 2 up } } @@ -218,58 +218,47 @@ int main (int argc, char *argv[]) -static int my_sem_init (sem_t* s, char* identity, int pshared, unsigned count) +static sem_t* my_sem_init (char* identity, int pshared, unsigned count) { + sem_t* s; + #if defined(VGO_linux) - return sem_init(s, pshared, count); + s = malloc(sizeof(*s)); + if (s) { + if (sem_init(s, pshared, count) < 0) { + perror("sem_init"); + free(s); + s = NULL; + } + } #elif defined(VGO_darwin) char name[100]; - sem_t** fakeptr = (sem_t**)s; - assert(sizeof(sem_t) >= sizeof(sem_t*)); - { int i; for (i = 0; i < sizeof(name); i++) name[i] = 0; } sprintf(name, "anonsem_%s_pid%d", identity, (int)getpid()); name[ sizeof(name)-1 ] = 0; if (0) printf("name = %s\n", name); - *fakeptr = sem_open(name, O_CREAT, 0600, count); - if (*fakeptr == (sem_t*)SEM_FAILED) - return -1; - else - return 0; + s = sem_open(name, O_CREAT | O_EXCL, 0600, count); + if (s == SEM_FAILED) { + perror("sem_open"); + s = NULL; + } #else # error "Unsupported OS" #endif + + return s; } static int my_sem_destroy ( sem_t* s ) { -#if defined(VGO_linux) return sem_destroy(s); -#elif defined(VGO_darwin) - sem_t** fakeptr = (sem_t**)s; - return sem_close(*fakeptr); -#else -# error "Unsupported OS" -#endif } static int my_sem_wait(sem_t* s) { -#if defined(VGO_linux) return sem_wait(s); -#elif defined(VGO_darwin) - return sem_wait( *(sem_t**)s ); -#else -# error "Unsupported OS" -#endif } static int my_sem_post(sem_t* s) { -#if defined(VGO_linux) return sem_post(s); -#elif defined(VGO_darwin) - return sem_post( *(sem_t**)s ); -#else -# error "Unsupported OS" -#endif } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc18_semabuse.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc18_semabuse.c index 40c068bde..7395251ed 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc18_semabuse.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc18_semabuse.c @@ -16,7 +16,7 @@ void start_watchdog ( void ); int main ( void ) { - int r; + int r __attribute__((unused)); sem_t s1; start_watchdog(); /* Do sem_init with huge initial count */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 index ad3758a16..cf042ec55 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 @@ -71,12 +71,14 @@ Thread #x's call to pthread_mutex_unlock failed ---------------- pthread_cond_wait et al ---------------- Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc20_verifywrap.c:147) Thread #x's call to pthread_cond_wait failed with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc20_verifywrap.c:147) @@ -86,12 +88,14 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal FIXME: can't figure out how to verify wrap of pthread_broadcast_signal Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) by 0x........: main (tc20_verifywrap.c:165) Thread #x's call to pthread_cond_timedwait failed with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) by 0x........: main (tc20_verifywrap.c:165) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.c index 77276a183..4c7e55bcc 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.c @@ -6,11 +6,11 @@ #include #include #include -pthread_mutex_t mx[4]; -pthread_cond_t cv; -pthread_rwlock_t rwl; -sem_t quit_now; -static int my_sem_init(sem_t*, char*, int, unsigned); +#include +pthread_mutex_t mx[4]; +pthread_cond_t cv; pthread_rwlock_t rwl; +sem_t* quit_now; +static sem_t* my_sem_init(char*, int, unsigned); static int my_sem_destroy(sem_t*); static int my_sem_wait(sem_t*); static int my_sem_post(sem_t*); void* rescue_me ( void* uu ) @@ -31,14 +31,14 @@ void* rescue_me ( void* uu ) sleep(1); pthread_cond_signal( &cv ); - my_sem_wait( &quit_now ); + my_sem_wait( quit_now ); return NULL; } void* grab_the_lock ( void* uu ) { int r= pthread_mutex_lock( &mx[2] ); assert(!r); - my_sem_wait( &quit_now ); + my_sem_wait( quit_now ); r= pthread_mutex_unlock( &mx[2] ); assert(!r); return NULL; } @@ -56,7 +56,7 @@ int main ( void ) r= pthread_cond_init(&cv, NULL); assert(!r); r= pthread_rwlock_init(&rwl, NULL); assert(!r); - r= my_sem_init( &quit_now, "quit_now", 0,0 ); assert(!r); + quit_now = my_sem_init( "quit_now", 0,0 ); assert(quit_now); r= pthread_create( &grabber, NULL, grab_the_lock, NULL ); assert(!r); sleep(1); /* let the grabber get there first */ @@ -77,13 +77,13 @@ int main ( void ) /* mx is held by someone else. */ r= pthread_cond_wait(&cv, &mx[2] ); - r= my_sem_post( &quit_now ); assert(!r); - r= my_sem_post( &quit_now ); assert(!r); + r= my_sem_post( quit_now ); assert(!r); + r= my_sem_post( quit_now ); assert(!r); r= pthread_join( my_rescuer, NULL ); assert(!r); r= pthread_join( grabber, NULL ); assert(!r); - r= my_sem_destroy( &quit_now ); assert(!r); + r= my_sem_destroy( quit_now ); assert(!r); return 0; } @@ -94,58 +94,47 @@ int main ( void ) -static int my_sem_init (sem_t* s, char* identity, int pshared, unsigned count) +static sem_t* my_sem_init (char* identity, int pshared, unsigned count) { + sem_t* s; + #if defined(VGO_linux) - return sem_init(s, pshared, count); + s = malloc(sizeof(*s)); + if (s) { + if (sem_init(s, pshared, count) < 0) { + perror("sem_init"); + free(s); + s = NULL; + } + } #elif defined(VGO_darwin) char name[100]; - sem_t** fakeptr = (sem_t**)s; - assert(sizeof(sem_t) >= sizeof(sem_t*)); - { int i; for (i = 0; i < sizeof(name); i++) name[i] = 0; } sprintf(name, "anonsem_%s_pid%d", identity, (int)getpid()); name[ sizeof(name)-1 ] = 0; if (0) printf("name = %s\n", name); - *fakeptr = sem_open(name, O_CREAT, 0600, count); - if (*fakeptr == (sem_t*)SEM_FAILED) - return -1; - else - return 0; + s = sem_open(name, O_CREAT | O_EXCL, 0600, count); + if (s == SEM_FAILED) { + perror("sem_open"); + s = NULL; + } #else # error "Unsupported OS" #endif + + return s; } static int my_sem_destroy ( sem_t* s ) { -#if defined(VGO_linux) return sem_destroy(s); -#elif defined(VGO_darwin) - sem_t** fakeptr = (sem_t**)s; - return sem_close(*fakeptr); -#else -# error "Unsupported OS" -#endif } static int my_sem_wait(sem_t* s) { -#if defined(VGO_linux) return sem_wait(s); -#elif defined(VGO_darwin) - return sem_wait( *(sem_t**)s ); -#else -# error "Unsupported OS" -#endif } static int my_sem_post(sem_t* s) { -#if defined(VGO_linux) return sem_post(s); -#elif defined(VGO_darwin) - return sem_post( *(sem_t**)s ); -#else -# error "Unsupported OS" -#endif } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.stderr.exp index fbe0238f0..15f48a5ca 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc23_bogus_condwait.stderr.exp @@ -2,31 +2,38 @@ Thread #x is the program's root thread Thread #x: pthread_cond_{timed}wait called with invalid mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:69) Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:72) Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:72) Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t* - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:75) Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:75) Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:78) Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex - at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) + at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) + by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) by 0x........: main (tc23_bogus_condwait.c:78) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc24_nonzero_sem.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc24_nonzero_sem.c index e88ab5c8f..5e990f5fd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc24_nonzero_sem.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc24_nonzero_sem.c @@ -2,15 +2,20 @@ nonzero initial value, when said semaphores are correctly used. Also useful for generating VCG of simple semaphore activity, for inspection. */ + #include #include #include #include +#include #include + #define N_THREADS 3 -static int my_sem_init(sem_t*, char*, int, unsigned); + +static sem_t* my_sem_init(char*, int, unsigned); static int my_sem_destroy(sem_t*); static int my_sem_wait(sem_t*); //static int my_sem_post(sem_t*); + void* child_fn ( void* semV ) { int r; sem_t* sem = (sem_t*)semV; @@ -21,13 +26,13 @@ void* child_fn ( void* semV ) { int main ( void ) { int r, i; - sem_t sem; + sem_t* sem; pthread_t child[N_THREADS]; - r= my_sem_init(&sem, "sem1", 0, N_THREADS); assert(!r); + sem= my_sem_init("sem1", 0, N_THREADS); assert(sem); for (i = 0; i < N_THREADS; i++) { - r= pthread_create( &child[i], NULL, child_fn, (void*)&sem ); + r= pthread_create( &child[i], NULL, child_fn, sem ); assert(!r); } @@ -36,63 +41,54 @@ int main ( void ) assert(!r); } - r= my_sem_destroy(&sem); assert(!r); + r= my_sem_destroy(sem); assert(!r); return 0; } -static int my_sem_init (sem_t* s, char* identity, int pshared, unsigned count) +static sem_t* my_sem_init (char* identity, int pshared, unsigned count) { + sem_t* s; + #if defined(VGO_linux) - return sem_init(s, pshared, count); + s = malloc(sizeof(*s)); + if (s) { + if (sem_init(s, pshared, count) < 0) { + perror("sem_init"); + free(s); + s = NULL; + } + } #elif defined(VGO_darwin) char name[100]; - sem_t** fakeptr = (sem_t**)s; - assert(sizeof(sem_t) >= sizeof(sem_t*)); - { int i; for (i = 0; i < sizeof(name); i++) name[i] = 0; } sprintf(name, "anonsem_%s_pid%d", identity, (int)getpid()); name[ sizeof(name)-1 ] = 0; if (0) printf("name = %s\n", name); - *fakeptr = sem_open(name, O_CREAT, 0600, count); - if (*fakeptr == (sem_t*)SEM_FAILED) - return -1; - else - return 0; + s = sem_open(name, O_CREAT | O_EXCL, 0600, count); + if (s == SEM_FAILED) { + perror("sem_open"); + s = NULL; + } #else # error "Unsupported OS" #endif + + return s; } static int my_sem_destroy ( sem_t* s ) { -#if defined(VGO_linux) return sem_destroy(s); -#elif defined(VGO_darwin) - sem_t** fakeptr = (sem_t**)s; - return sem_close(*fakeptr); -#else -# error "Unsupported OS" -#endif } static int my_sem_wait(sem_t* s) { -#if defined(VGO_linux) return sem_wait(s); -#elif defined(VGO_darwin) - return sem_wait( *(sem_t**)s ); -#else -# error "Unsupported OS" -#endif } -//static int my_sem_post(sem_t* s) -//{ -//#if defined(VGO_linux) -// return sem_post(s); -//#elif defined(VGO_darwin) -// return sem_post( *(sem_t**)s ); -//#else -//# error "Unsupported OS" -//#endif -//} +#if 0 +static int my_sem_post(sem_t* s) +{ + return sem_post(s); +} +#endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.am index 33d085797..ae1f0cae9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.am @@ -18,6 +18,7 @@ nobase_pkginclude_HEADERS = \ pub_tool_libcfile.h \ pub_tool_libcprint.h \ pub_tool_libcproc.h \ + pub_tool_libcsetjmp.h \ pub_tool_libcsignal.h \ pub_tool_machine.h \ pub_tool_mallocfree.h \ @@ -43,17 +44,20 @@ nobase_pkginclude_HEADERS = \ vki/vki-posixtypes-ppc32-linux.h \ vki/vki-posixtypes-ppc64-linux.h \ vki/vki-posixtypes-x86-linux.h \ - vki/vki-posixtypes-arm-linux.h \ + vki/vki-posixtypes-arm-linux.h \ + vki/vki-posixtypes-s390x-linux.h \ vki/vki-amd64-linux.h \ vki/vki-ppc32-linux.h \ vki/vki-ppc64-linux.h \ vki/vki-x86-linux.h \ - vki/vki-arm-linux.h \ + vki/vki-arm-linux.h \ + vki/vki-s390x-linux.h \ vki/vki-scnums-amd64-linux.h \ vki/vki-scnums-ppc32-linux.h \ vki/vki-scnums-ppc64-linux.h \ vki/vki-scnums-x86-linux.h \ - vki/vki-scnums-arm-linux.h \ + vki/vki-scnums-arm-linux.h \ + vki/vki-scnums-s390x-linux.h \ vki/vki-scnums-darwin.h noinst_HEADERS = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.in index 8df74bbbe..b6d1d46d7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/Makefile.in @@ -115,6 +115,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -144,12 +146,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -234,6 +231,7 @@ nobase_pkginclude_HEADERS = \ pub_tool_libcfile.h \ pub_tool_libcprint.h \ pub_tool_libcproc.h \ + pub_tool_libcsetjmp.h \ pub_tool_libcsignal.h \ pub_tool_machine.h \ pub_tool_mallocfree.h \ @@ -259,17 +257,20 @@ nobase_pkginclude_HEADERS = \ vki/vki-posixtypes-ppc32-linux.h \ vki/vki-posixtypes-ppc64-linux.h \ vki/vki-posixtypes-x86-linux.h \ - vki/vki-posixtypes-arm-linux.h \ + vki/vki-posixtypes-arm-linux.h \ + vki/vki-posixtypes-s390x-linux.h \ vki/vki-amd64-linux.h \ vki/vki-ppc32-linux.h \ vki/vki-ppc64-linux.h \ vki/vki-x86-linux.h \ - vki/vki-arm-linux.h \ + vki/vki-arm-linux.h \ + vki/vki-s390x-linux.h \ vki/vki-scnums-amd64-linux.h \ vki/vki-scnums-ppc32-linux.h \ vki/vki-scnums-ppc64-linux.h \ vki/vki-scnums-x86-linux.h \ - vki/vki-scnums-arm-linux.h \ + vki/vki-scnums-arm-linux.h \ + vki/vki-scnums-s390x-linux.h \ vki/vki-scnums-darwin.h noinst_HEADERS = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_l4re.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_l4re.h index 8975c1e0e..125376781 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_l4re.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_l4re.h @@ -30,12 +30,13 @@ #ifndef __PUB_L4RE_H #define __PUB_L4RE_H -#include "pub_tool_basics.h" //#include "pub_core_ume.h" #include +#undef offsetof #include #include +#include "pub_tool_basics.h" /* * Therefore coregrind knows which tool actually runs, * every tool must export his name. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_basics.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_basics.h index b55456771..87e29866c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_basics.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_basics.h @@ -323,7 +323,7 @@ static inline Bool sr_EQ ( SysRes sr1, SysRes sr2 ) { #if defined(VGA_x86) || defined(VGA_amd64) || defined (VGA_arm) # define VG_LITTLEENDIAN 1 -#elif defined(VGA_ppc32) || defined(VGA_ppc64) +#elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_s390x) # define VG_BIGENDIAN 1 #else # error Unknown arch @@ -333,7 +333,7 @@ static inline Bool sr_EQ ( SysRes sr1, SysRes sr2 ) { #if defined(VGA_x86) # define VG_REGPARM(n) __attribute__((regparm(n))) #elif defined(VGA_amd64) || defined(VGA_ppc32) \ - || defined(VGA_ppc64) || defined(VGA_arm) + || defined(VGA_ppc64) || defined(VGA_arm) || defined(VGA_s390x) # define VG_REGPARM(n) /* */ #else # error Unknown arch @@ -347,9 +347,9 @@ static inline Bool sr_EQ ( SysRes sr1, SysRes sr2 ) { #define VG_BUGS_TO "www.valgrind.org" /* Branch prediction hints. */ -#if 1 /*HAVE_BUILTIN_EXPECT*/ +#if defined(__GNUC__) # define LIKELY(x) __builtin_expect(!!(x), 1) -# define UNLIKELY(x) __builtin_expect((x), 0) +# define UNLIKELY(x) __builtin_expect(!!(x), 0) #else # define LIKELY(x) (x) # define UNLIKELY(x) (x) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_gdbserver.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_gdbserver.h new file mode 100644 index 000000000..514bcaa99 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_gdbserver.h @@ -0,0 +1,179 @@ + +/*--------------------------------------------------------------------*/ +/*--- Handle remote gdb protocol. pub_tool_gdbserver.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2011 Philippe Waroquiers + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __PUB_TOOL_GDBSERVER_H +#define __PUB_TOOL_GDBSERVER_H + +#include "libvex.h" +#include "libvex_ir.h" + +//-------------------------------------------------------------------- +// PURPOSE: This module provides the support to have a gdb +// connecting to a valgrind process using remote gdb protocol. It provides +// * A function to allow a tool (or the valgrind core) to +// wait for a gdb to connect and then handle gdb commands. +// Typically, this can be used to let the user debug the process +// when valgrind reports an error. +// * A function allowing to instrument the code to support gdb breakpoints. +// * A function allowing the tool to support watchpoints. +// * A utility function to help implementing the processing of the +// gdb_monitor_command strings. + + +// Function to be used by tool or coregrind to allow a gdb to connect +// to this process. +// Calling VG_(gdbserver) with tid > 0 means to let a debugger attach +// to the valgrind process. gdbserver will report to gdb that the +// process stopped in thread tid. +// tid == 0 indicates to stop gdbserver and report to gdb +// that the valgrind-ified process has exited. +//-------------------------------------------------------------------- +extern void VG_(gdbserver) ( ThreadId tid ); + +/* VG_(dyn_vgdb_error) gets its initial value from + VG_(clo_vgdb_error). It can be changed after initial command + processing in order to enable/disable the call to VG_(gdbserver) in + m_errormgr.c. The main reasons to change the below is either + because the user updates it via a monitor command or to + (temporarily) avoid calling gdbserver for error reporting during + monitor command handling. +*/ +extern Int VG_(dyn_vgdb_error); + +/* defines the various kinds of breakpoints that gdbserver + might ask to insert/remove. Note that the below matches + the gdbserver protocol definition. The level of support + of the various breakpoint kinds depends on the tool. + + For the moment, it is unclear how a tool would implement + hardware_breakpoint in valgrind :). + + software_breakpoint implies some (small) specific + instrumentation to be done for gdbserver. This instrumentation + is implemented for all tools in m_translate.c. + + write/read/access watchpoints can only be done by tools + which are maintaining some notion of address accessibility + as part of their instrumentation. watchpoints can then + be done by marking the watched address(es) as not accessible. + But instead of giving back an error (or whatever the tool + wants to do with unaccessible mechanism), the tool must then + just call gdbserver. See memcheck for an example of reusing + accessibility for watchpoint support. +*/ +typedef + enum { + software_breakpoint, + hardware_breakpoint, + write_watchpoint, + read_watchpoint, + access_watchpoint } PointKind; +extern char* VG_(ppPointKind) (PointKind kind); + + +/* watchpoint support --------------------------------------*/ +/* True if one or more bytes in [addr, addr+len[ are being watched by + gdbserver for write or read or access. + In addition, VG_(is_watched) will invoke gdbserver if + the access provided by the tool matches the watchpoint kind. + For this, the tool must pass the kind of access it has detected: + write_watchpoint indicates the tool has detected a write + read_watchpoint indicates the tool has detected a read + access_watchpoint indicates the tool has detected an access but does + not know if this is a read or a write +*/ +extern Bool VG_(is_watched)(PointKind kind, Addr addr, Int szB); + +extern void VG_(needs_watchpoint) ( + // indicates the given Addr/len is being watched (insert) + // or not watched anymore (! insert). + // gdbserver will maintain the list of watched addresses. + // The tool can use VG_(is_watched) to verify if an + // access to an Addr is in one of the watched intervals. + // Must return True if the watchpoint has been properly inserted or + // removed. False if not supported. + // Note that an address can only be watched for a single kind. + // The tool must be ready to be called successively with + // multiple kinds for the same addr and len and with + // different kinds. The last kind must replace the previous values. + // Behaviour with multiple watches having overlapping addr+len + // is undefined. + Bool (*watchpoint) (PointKind kind, Bool insert, Addr addr, SizeT len) +); + + +// can be used during the processing of the VG_USERREQ__GDB_MONITOR_COMMAND +// tool client request to output information to gdb or vgdb. +extern UInt VG_(gdb_printf) ( const HChar *format, ... ) PRINTF_CHECK(1, 2); + +/* Utility functions to (e.g.) parse gdb monitor commands. + + keywords is a set of keywords separated by a space + keyword_id will search for the keyword starting with the string input_word + and return its position. + It returns -1 if no keyword matches. + It returns -2 if two or more keywords are starting with input_word + and none of these matches exactly input_word + Example with keywords = "hello world here is hell" : + input_word result + ---------- ------ + paradise => -1 + i => 3 + hell => 4 + hel => -2 + ishtar => -1 + + report indicates when to output an error msg with VG_(gdb_printf). + kwd_report_none : no error is reported. + kwd_report_all : the error msg will show all possible keywords + kwd_report_duplicated_matches : the error msg will show only the + ambiguous matches. +*/ +typedef + enum { + kwd_report_none, + kwd_report_all, + kwd_report_duplicated_matches } kwd_report_error; +extern Int VG_(keyword_id) (Char* keywords, Char* input_word, + kwd_report_error report); + +/* Extract an address and (optionally) a size from the string + currently being parsed by strtok_r (see pub_tool_libcbase.h). + If no size in the string, keeps the current value of szB. + Returns address 0 and szB 0 if there is an error. Reports to the + user problems via VG_(gdb_printf). */ +extern void VG_(strtok_get_address_and_size) (Addr* address, + SizeT* szB, + Char **ssaveptr); + +#endif // __PUB_TOOL_GDBSERVER_H + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcassert.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcassert.h index af921128c..665ab0e18 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcassert.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcassert.h @@ -32,7 +32,7 @@ #define __PUB_TOOL_LIBCBASSERT_H #define tl_assert(expr) \ - ((void) ((expr) ? 0 : \ + ((void) (LIKELY(expr) ? 0 : \ (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \ (const Char*)__FILE__, __LINE__, \ (const Char*)__PRETTY_FUNCTION__, \ @@ -40,7 +40,7 @@ 0))) #define tl_assert2(expr, format, args...) \ - ((void) ((expr) ? 0 : \ + ((void) (LIKELY(expr) ? 0 : \ (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \ (const Char*)__FILE__, __LINE__, \ (const Char*)__PRETTY_FUNCTION__, \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcbase.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcbase.h index 2897235c6..0e616913f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcbase.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcbase.h @@ -63,6 +63,8 @@ extern Char VG_(tolower) ( Char c ); // If you really want that behaviour, you can use "VG_(strtoll10)(str, NULL)". extern Long VG_(strtoll10) ( Char* str, Char** endptr ); extern Long VG_(strtoll16) ( Char* str, Char** endptr ); +extern ULong VG_(strtoull10) ( Char* str, Char** endptr ); +extern ULong VG_(strtoull16) ( Char* str, Char** endptr ); // Convert a string to a double. After leading whitespace is ignored, a // '+' or '-' is allowed, and then it accepts a non-empty sequence of @@ -97,6 +99,16 @@ extern Char* VG_(strrchr) ( const Char* s, Char c ); extern SizeT VG_(strspn) ( const Char* s, const Char* accpt ); extern SizeT VG_(strcspn) ( const Char* s, const char* reject ); +/* strtok* functions and some parsing utilities. */ +extern Char* VG_(strtok_r) (Char* s, const Char* delim, Char** saveptr); +extern Char* VG_(strtok) (Char* s, const Char* delim); + +/* Parse a 32- or 64-bit hex number, including leading 0x, from string + starting at *ppc, putting result in *result, and return True. Or + fail, in which case *ppc and *result are undefined, and return + False. */ +extern Bool VG_(parse_Addr) ( UChar** ppc, Addr* result ); + /* Like strncpy(), but if 'src' is longer than 'ndest' inserts a '\0' as the last character. */ extern void VG_(strncpy_safely) ( Char* dest, const Char* src, SizeT ndest ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcfile.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcfile.h index 8f08cd2cf..4b63a5374 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcfile.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcfile.h @@ -68,7 +68,11 @@ struct vg_stat { ULong ctime_nsec; }; +extern SysRes VG_(mknod) ( const Char* pathname, Int mode, UWord dev ); extern SysRes VG_(open) ( const Char* pathname, Int flags, Int mode ); +/* fd_open words like the open(2) system call: + returns fd if success, -1 otherwise */ +extern Int VG_(fd_open) (const Char* pathname, Int flags, Int mode); extern void VG_(close) ( Int fd ); extern Int VG_(read) ( Int fd, void* buf, Int count); extern Int VG_(write) ( Int fd, const void* buf, Int count); @@ -82,6 +86,8 @@ extern SysRes VG_(dup2) ( Int oldfd, Int newfd ); extern Int VG_(rename) ( const Char* old_name, const Char* new_name ); extern Int VG_(unlink) ( const Char* file_name ); +extern Int VG_(poll) (struct vki_pollfd *fds, Int nfds, Int timeout); + extern Int VG_(readlink)( const Char* path, Char* buf, UInt bufsize ); extern Int VG_(getdents)( Int fd, struct vki_dirent *dirp, UInt count ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcproc.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcproc.h index 2770dda6a..423a7f75d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcproc.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcproc.h @@ -58,11 +58,13 @@ extern Int VG_(fork) ( void); extern void VG_(execv) ( Char* filename, Char** argv ); /* --------------------------------------------------------------------- - Resource limits + Resource limits and capabilities ------------------------------------------------------------------ */ extern Int VG_(getrlimit) ( Int resource, struct vki_rlimit *rlim ); extern Int VG_(setrlimit) ( Int resource, const struct vki_rlimit *rlim ); +extern Int VG_(prctl) (Int option, + ULong arg2, ULong arg3, ULong arg4, ULong arg5); /* --------------------------------------------------------------------- pids, etc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcsetjmp.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcsetjmp.h new file mode 100644 index 000000000..5733af095 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_libcsetjmp.h @@ -0,0 +1,101 @@ + +/*--------------------------------------------------------------------*/ +/*--- A minimal setjmp/longjmp facility. pub_tool_libcsetjmp.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2010-2010 Mozilla 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Julian Seward */ + +#ifndef __PUB_TOOL_LIBCSETJMP_H +#define __PUB_TOOL_LIBCSETJMP_H + +//-------------------------------------------------------------------- +// PURPOSE: Provides a minimal setjmp/longjmp facility, that saves/ +// restores integer registers, but not necessarily anything more. +//-------------------------------------------------------------------- + + +/* This provides an extremely minimal setjmp/longjmp facility, in + which only the host's integer registers are saved/restored. Or at + least, that is the minimal guaranteed functionality. + + Until Apr 2011 we used __builtin_setjmp and __builtin_longjmp, but + it appears that that is not always correctly implemented. See + https://bugs.kde.org/show_bug.cgi?id=259977. So this module wraps + those functions up and facilitates replacing them with our own + implementations where necessary. +*/ + +/* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ +#include +/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ + + +/* Don't use jmp_buf, __builtin_setjmp or __builtin_longjmp directly. + They don't always work reliably. Instead use these macros, which + provide the opportunity to supply alternative implementations as + necessary. + + Note that the abstraction is done with macros (ick) rather than + functions and typedefs, since wrapping __builtin_setjmp up in a + second function (eg, VG_(minimal_setjmp)) doesn't seem to work for + whatever reason -- returns via a VG_(minimal_longjmp) go wrong. +*/ + +#if defined(VGP_ppc32_linux) + +#define VG_MINIMAL_JMP_BUF(_name) UInt _name [32+1+1] +Int VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +__attribute__((noreturn)) +void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + +#elif defined(VGP_ppc64_linux) + +#define VG_MINIMAL_JMP_BUF(_name) ULong _name [32+1+1] +Int VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +__attribute__((noreturn)) +void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + +#elif defined(VGP_ppc64_linux) + +#define VG_MINIMAL_JMP_BUF(_name) ULong _name [32+1+1] +Int VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + +#else + +/* The default implementation. */ +#define VG_MINIMAL_JMP_BUF(_name) jmp_buf _name +#define VG_MINIMAL_SETJMP(_env) __builtin_setjmp((_env)) +#define VG_MINIMAL_LONGJMP(_env) __builtin_longjmp((_env),1) + +#endif + +#endif // __PUB_TOOL_LIBCSETJMP_H + +/*--------------------------------------------------------------------*/ +/*--- end pub_tool_libcsetjmp.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_machine.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_machine.h index 2c9e19c74..0e362294a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_machine.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_machine.h @@ -61,7 +61,7 @@ #elif defined(VGP_arm_linux) # define VG_MIN_INSTR_SZB 2 # define VG_MAX_INSTR_SZB 4 -# define VG_CLREQ_SZB 28 +# define VG_CLREQ_SZB 20 # define VG_STACK_REDZONE_SZB 0 #elif defined(VGP_ppc32_aix5) @@ -81,6 +81,12 @@ # define VG_CLREQ_SZB 20 # define VG_STACK_REDZONE_SZB 288 // is this right? +#elif defined(VGP_s390x_linux) +# define VG_MIN_INSTR_SZB 2 +# define VG_MAX_INSTR_SZB 6 +# define VG_CLREQ_SZB 10 +# define VG_STACK_REDZONE_SZB 0 // s390 has no redzone + #elif defined(VGP_x86_darwin) # define VG_MIN_INSTR_SZB 1 // min length of native instruction # define VG_MAX_INSTR_SZB 16 // max length of native instruction @@ -153,7 +159,15 @@ extern Bool VG_(thread_stack_next) ( /*MOD*/ThreadId* tid, extern Addr VG_(thread_get_stack_max) ( ThreadId tid ); // Returns how many bytes have been allocated for the stack of the given thread -extern Addr VG_(thread_get_stack_size) ( ThreadId tid ); +extern SizeT VG_(thread_get_stack_size) ( ThreadId tid ); + +// Returns the bottommost address of the alternate signal stack. +// See also the man page of sigaltstack(). +extern Addr VG_(thread_get_altstack_min) ( ThreadId tid ); + +// Returns how many bytes have been allocated for the alternate signal stack. +// See also the man page of sigaltstack(). +extern SizeT VG_(thread_get_altstack_size) ( ThreadId tid ); // Given a pointer to a function as obtained by "& functionname" in C, // produce a pointer to the actual entry point for the function. For diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_options.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_options.h index 7f8549251..50493d772 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_options.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_options.h @@ -54,6 +54,8 @@ Char* val = &(qq_arg)[ VG_(strlen)(qq_option)+1 ]; \ if VG_STREQ(val, "yes") (qq_var) = True; \ else if VG_STREQ(val, "no") (qq_var) = False; \ + else VG_(fmsg_bad_option)(qq_arg, "Invalid boolean value '%s'" \ + " (should be 'yes' or 'no')\n", val); \ True; \ }) \ ) @@ -146,6 +148,12 @@ extern Int VG_(clo_verbosity); /* Show tool and core statistics */ extern Bool VG_(clo_stats); +/* wait for vgdb/gdb after reporting that amount of error. + Note that this is the initial value provided from the command line. + The real value is maintained in VG_(dyn_vgdb_error) and + can be changed dynamically.*/ +extern Int VG_(clo_vgdb_error); + /* Emit all messages as XML? default: NO */ /* If clo_xml is set, various other options are set in a non-default way. See vg_main.c and mc_main.c. */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_vkiscnums_asm.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_vkiscnums_asm.h index 9df39693b..3946e6dcf 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_vkiscnums_asm.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/pub_tool_vkiscnums_asm.h @@ -45,6 +45,9 @@ #elif defined(VGP_ppc64_linux) # include "vki/vki-scnums-ppc64-linux.h" +#elif defined(VGP_s390x_linux) +# include "vki/vki-scnums-s390x-linux.h" + #elif defined(VGP_arm_linux) # include "vki/vki-scnums-arm-linux.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/valgrind.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/valgrind.h index 4f0f4de24..631dafdc5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/valgrind.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/valgrind.h @@ -118,6 +118,8 @@ #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux + #if defined(_AIX) && defined(__64BIT__) # define PLAT_ppc64_aix5 1 @@ -139,6 +141,8 @@ # define PLAT_ppc64_linux 1 #elif defined(__linux__) && defined(__arm__) # define PLAT_arm_linux 1 +#elif defined(__linux__) && defined(__s390__) && defined(__s390x__) +# define PLAT_s390x_linux 1 #else /* If we're not compiling for our target platform, don't generate any inline asms. */ @@ -153,17 +157,31 @@ /* in here of use to end-users -- skip to the next section. */ /* ------------------------------------------------------------------ */ +/* + * VALGRIND_DO_CLIENT_REQUEST(): a statement that invokes a Valgrind client + * request. Accepts both pointers and integers as arguments. + * + * VALGRIND_DO_CLIENT_REQUEST_EXPR(): a C expression that invokes a Valgrind + * client request and whose value equals the client request result. Accepts + * both pointers and integers as arguments. + */ + +#define VALGRIND_DO_CLIENT_REQUEST(_zzq_rlval, _zzq_default, \ + _zzq_request, _zzq_arg1, _zzq_arg2, \ + _zzq_arg3, _zzq_arg4, _zzq_arg5) \ + { (_zzq_rlval) = VALGRIND_DO_CLIENT_REQUEST_EXPR((_zzq_default), \ + (_zzq_request), (_zzq_arg1), (_zzq_arg2), \ + (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } + #if defined(NVALGRIND) /* Define NVALGRIND to completely remove the Valgrind magic sequence from the compiled code (analogous to NDEBUG's effects on assert()) */ -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ - { \ - (_zzq_rlval) = (_zzq_default); \ - } + (_zzq_default) #else /* ! NVALGRIND */ @@ -204,7 +222,8 @@ /* ------------------------- x86-{linux,darwin} ---------------- */ -#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin) || defined(PLAT_x86_win32) && defined(__GNUC__) +#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin) \ + || (defined(PLAT_x86_win32) && defined(__GNUC__)) typedef struct { @@ -216,10 +235,11 @@ typedef "roll $3, %%edi ; roll $13, %%edi\n\t" \ "roll $29, %%edi ; roll $19, %%edi\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ - { volatile unsigned int _zzq_args[6]; \ + __extension__ \ + ({volatile unsigned int _zzq_args[6]; \ volatile unsigned int _zzq_result; \ _zzq_args[0] = (unsigned int)(_zzq_request); \ _zzq_args[1] = (unsigned int)(_zzq_arg1); \ @@ -234,8 +254,8 @@ typedef : "a" (&_zzq_args[0]), "0" (_zzq_default) \ : "cc", "memory" \ ); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -254,7 +274,7 @@ typedef __SPECIAL_INSTRUCTION_PREAMBLE \ /* call-noredir *%EAX */ \ "xchgl %%edx,%%edx\n\t" -#endif /* PLAT_x86_linux || PLAT_x86_darwin || PLAT_x86_win32 && __GNUC__ */ +#endif /* PLAT_x86_linux || PLAT_x86_darwin || (PLAT_x86_win32 && __GNUC__) */ /* ------------------------- x86-Win32 ------------------------- */ @@ -272,25 +292,36 @@ typedef __asm rol edi, 3 __asm rol edi, 13 \ __asm rol edi, 29 __asm rol edi, 19 -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ - { volatile unsigned int _zzq_args[6]; \ - volatile unsigned int _zzq_result; \ - _zzq_args[0] = (unsigned int)(ptrdiff_t)(_zzq_request); \ - _zzq_args[1] = (unsigned int)(ptrdiff_t)(_zzq_arg1); \ - _zzq_args[2] = (unsigned int)(ptrdiff_t)(_zzq_arg2); \ - _zzq_args[3] = (unsigned int)(ptrdiff_t)(_zzq_arg3); \ - _zzq_args[4] = (unsigned int)(ptrdiff_t)(_zzq_arg4); \ - _zzq_args[5] = (unsigned int)(ptrdiff_t)(_zzq_arg5); \ - __asm { __asm lea eax, _zzq_args __asm mov edx, _zzq_default \ - __SPECIAL_INSTRUCTION_PREAMBLE \ - /* %EDX = client_request ( %EAX ) */ \ - __asm xchg ebx,ebx \ - __asm mov _zzq_result, edx \ - } \ - _zzq_rlval = _zzq_result; \ - } + valgrind_do_client_request_expr((uintptr_t)(_zzq_default), \ + (uintptr_t)(_zzq_request), (uintptr_t)(_zzq_arg1), \ + (uintptr_t)(_zzq_arg2), (uintptr_t)(_zzq_arg3), \ + (uintptr_t)(_zzq_arg4), (uintptr_t)(_zzq_arg5)) + +static __inline uintptr_t +valgrind_do_client_request_expr(uintptr_t _zzq_default, uintptr_t _zzq_request, + uintptr_t _zzq_arg1, uintptr_t _zzq_arg2, + uintptr_t _zzq_arg3, uintptr_t _zzq_arg4, + uintptr_t _zzq_arg5) +{ + volatile uintptr_t _zzq_args[6]; + volatile unsigned int _zzq_result; + _zzq_args[0] = (uintptr_t)(_zzq_request); + _zzq_args[1] = (uintptr_t)(_zzq_arg1); + _zzq_args[2] = (uintptr_t)(_zzq_arg2); + _zzq_args[3] = (uintptr_t)(_zzq_arg3); + _zzq_args[4] = (uintptr_t)(_zzq_arg4); + _zzq_args[5] = (uintptr_t)(_zzq_arg5); + __asm { __asm lea eax, _zzq_args __asm mov edx, _zzq_default + __SPECIAL_INSTRUCTION_PREAMBLE + /* %EDX = client_request ( %EAX ) */ + __asm xchg ebx,ebx + __asm mov _zzq_result, edx + } + return _zzq_result; +} #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -325,10 +356,11 @@ typedef "rolq $3, %%rdi ; rolq $13, %%rdi\n\t" \ "rolq $61, %%rdi ; rolq $51, %%rdi\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ - { volatile unsigned long long int _zzq_args[6]; \ + __extension__ \ + ({ volatile unsigned long long int _zzq_args[6]; \ volatile unsigned long long int _zzq_result; \ _zzq_args[0] = (unsigned long long int)(_zzq_request); \ _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \ @@ -343,8 +375,8 @@ typedef : "a" (&_zzq_args[0]), "0" (_zzq_default) \ : "cc", "memory" \ ); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -379,11 +411,12 @@ typedef "rlwinm 0,0,3,0,0 ; rlwinm 0,0,13,0,0\n\t" \ "rlwinm 0,0,29,0,0 ; rlwinm 0,0,19,0,0\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ - { unsigned int _zzq_args[6]; \ + __extension__ \ + ({ unsigned int _zzq_args[6]; \ unsigned int _zzq_result; \ unsigned int* _zzq_ptr; \ _zzq_args[0] = (unsigned int)(_zzq_request); \ @@ -402,8 +435,8 @@ typedef : "=b" (_zzq_result) \ : "b" (_zzq_default), "b" (_zzq_ptr) \ : "cc", "memory", "r3", "r4"); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -440,11 +473,12 @@ typedef "rotldi 0,0,3 ; rotldi 0,0,13\n\t" \ "rotldi 0,0,61 ; rotldi 0,0,51\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ - { unsigned long long int _zzq_args[6]; \ + __extension__ \ + ({ unsigned long long int _zzq_args[6]; \ register unsigned long long int _zzq_result __asm__("r3"); \ register unsigned long long int* _zzq_ptr __asm__("r4"); \ _zzq_args[0] = (unsigned long long int)(_zzq_request); \ @@ -460,8 +494,8 @@ typedef : "=r" (_zzq_result) \ : "0" (_zzq_default), "r" (_zzq_ptr) \ : "cc", "memory"); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -505,11 +539,12 @@ typedef "mov r12, r12, ror #3 ; mov r12, r12, ror #13 \n\t" \ "mov r12, r12, ror #29 ; mov r12, r12, ror #19 \n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ - { volatile unsigned int _zzq_args[6]; \ + __extension__ \ + ({volatile unsigned int _zzq_args[6]; \ volatile unsigned int _zzq_result; \ _zzq_args[0] = (unsigned int)(_zzq_request); \ _zzq_args[1] = (unsigned int)(_zzq_arg1); \ @@ -526,8 +561,8 @@ typedef : "=r" (_zzq_result) \ : "r" (_zzq_default), "r" (&_zzq_args[0]) \ : "cc","memory", "r3", "r4"); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -565,11 +600,12 @@ typedef "rlwinm 0,0,3,0,0 ; rlwinm 0,0,13,0,0\n\t" \ "rlwinm 0,0,29,0,0 ; rlwinm 0,0,19,0,0\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ - { unsigned int _zzq_args[7]; \ + __extension__ \ + ({ unsigned int _zzq_args[7]; \ register unsigned int _zzq_result; \ register unsigned int* _zzq_ptr; \ _zzq_args[0] = (unsigned int)(_zzq_request); \ @@ -589,8 +625,8 @@ typedef : "=b" (_zzq_result) \ : "b" (_zzq_ptr) \ : "r3", "r4", "cc", "memory"); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -637,11 +673,12 @@ typedef "rotldi 0,0,3 ; rotldi 0,0,13\n\t" \ "rotldi 0,0,61 ; rotldi 0,0,51\n\t" -#define VALGRIND_DO_CLIENT_REQUEST( \ - _zzq_rlval, _zzq_default, _zzq_request, \ +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ - { unsigned long long int _zzq_args[7]; \ + __extension__ \ + ({ unsigned long long int _zzq_args[7]; \ register unsigned long long int _zzq_result; \ register unsigned long long int* _zzq_ptr; \ _zzq_args[0] = (unsigned int long long)(_zzq_request); \ @@ -661,8 +698,8 @@ typedef : "=b" (_zzq_result) \ : "b" (_zzq_ptr) \ : "r3", "r4", "cc", "memory"); \ - _zzq_rlval = _zzq_result; \ - } + _zzq_result; \ + }) #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ @@ -694,6 +731,76 @@ typedef #endif /* PLAT_ppc64_aix5 */ +/* ------------------------ s390x-linux ------------------------ */ + +#if defined(PLAT_s390x_linux) + +typedef + struct { + unsigned long long int nraddr; /* where's the code? */ + } + OrigFn; + +/* __SPECIAL_INSTRUCTION_PREAMBLE will be used to identify Valgrind specific + * code. This detection is implemented in platform specific toIR.c + * (e.g. VEX/priv/guest_s390_decoder.c). + */ +#define __SPECIAL_INSTRUCTION_PREAMBLE \ + "lr 15,15\n\t" \ + "lr 1,1\n\t" \ + "lr 2,2\n\t" \ + "lr 3,3\n\t" + +#define __CLIENT_REQUEST_CODE "lr 2,2\n\t" +#define __GET_NR_CONTEXT_CODE "lr 3,3\n\t" +#define __CALL_NO_REDIR_CODE "lr 4,4\n\t" + +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ + _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ + __extension__ \ + ({volatile unsigned long long int _zzq_args[6]; \ + volatile unsigned long long int _zzq_result; \ + _zzq_args[0] = (unsigned long long int)(_zzq_request); \ + _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \ + _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \ + _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \ + _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \ + _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \ + __asm__ volatile(/* r2 = args */ \ + "lgr 2,%1\n\t" \ + /* r3 = default */ \ + "lgr 3,%2\n\t" \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + __CLIENT_REQUEST_CODE \ + /* results = r3 */ \ + "lgr %0, 3\n\t" \ + : "=d" (_zzq_result) \ + : "a" (&_zzq_args[0]), "0" (_zzq_default) \ + : "cc", "2", "3", "memory" \ + ); \ + _zzq_result; \ + }) + +#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ + { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ + volatile unsigned long long int __addr; \ + __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + __GET_NR_CONTEXT_CODE \ + "lgr %0, 3\n\t" \ + : "=a" (__addr) \ + : \ + : "cc", "3", "memory" \ + ); \ + _zzq_orig->nraddr = __addr; \ + } + +#define VALGRIND_CALL_NOREDIR_R1 \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + __CALL_NO_REDIR_CODE + +#endif /* PLAT_s390x_linux */ + /* Insert assembly code for other platforms here... */ #endif /* NVALGRIND */ @@ -811,10 +918,11 @@ typedef _argvec[0] = (unsigned long)_orig.nraddr; \ _argvec[1] = (unsigned long)(arg1); \ __asm__ volatile( \ + "subl $12, %%esp\n\t" \ "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $4, %%esp\n" \ + "addl $16, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -831,11 +939,12 @@ typedef _argvec[1] = (unsigned long)(arg1); \ _argvec[2] = (unsigned long)(arg2); \ __asm__ volatile( \ + "subl $8, %%esp\n\t" \ "pushl 8(%%eax)\n\t" \ "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $8, %%esp\n" \ + "addl $16, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -853,12 +962,13 @@ typedef _argvec[2] = (unsigned long)(arg2); \ _argvec[3] = (unsigned long)(arg3); \ __asm__ volatile( \ + "subl $4, %%esp\n\t" \ "pushl 12(%%eax)\n\t" \ "pushl 8(%%eax)\n\t" \ "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $12, %%esp\n" \ + "addl $16, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -903,6 +1013,7 @@ typedef _argvec[4] = (unsigned long)(arg4); \ _argvec[5] = (unsigned long)(arg5); \ __asm__ volatile( \ + "subl $12, %%esp\n\t" \ "pushl 20(%%eax)\n\t" \ "pushl 16(%%eax)\n\t" \ "pushl 12(%%eax)\n\t" \ @@ -910,7 +1021,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $20, %%esp\n" \ + "addl $32, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -931,6 +1042,7 @@ typedef _argvec[5] = (unsigned long)(arg5); \ _argvec[6] = (unsigned long)(arg6); \ __asm__ volatile( \ + "subl $8, %%esp\n\t" \ "pushl 24(%%eax)\n\t" \ "pushl 20(%%eax)\n\t" \ "pushl 16(%%eax)\n\t" \ @@ -939,7 +1051,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $24, %%esp\n" \ + "addl $32, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -962,6 +1074,7 @@ typedef _argvec[6] = (unsigned long)(arg6); \ _argvec[7] = (unsigned long)(arg7); \ __asm__ volatile( \ + "subl $4, %%esp\n\t" \ "pushl 28(%%eax)\n\t" \ "pushl 24(%%eax)\n\t" \ "pushl 20(%%eax)\n\t" \ @@ -971,7 +1084,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $28, %%esp\n" \ + "addl $32, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -1030,6 +1143,7 @@ typedef _argvec[8] = (unsigned long)(arg8); \ _argvec[9] = (unsigned long)(arg9); \ __asm__ volatile( \ + "subl $12, %%esp\n\t" \ "pushl 36(%%eax)\n\t" \ "pushl 32(%%eax)\n\t" \ "pushl 28(%%eax)\n\t" \ @@ -1041,7 +1155,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $36, %%esp\n" \ + "addl $48, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -1067,6 +1181,7 @@ typedef _argvec[9] = (unsigned long)(arg9); \ _argvec[10] = (unsigned long)(arg10); \ __asm__ volatile( \ + "subl $8, %%esp\n\t" \ "pushl 40(%%eax)\n\t" \ "pushl 36(%%eax)\n\t" \ "pushl 32(%%eax)\n\t" \ @@ -1079,7 +1194,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $40, %%esp\n" \ + "addl $48, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -1107,6 +1222,7 @@ typedef _argvec[10] = (unsigned long)(arg10); \ _argvec[11] = (unsigned long)(arg11); \ __asm__ volatile( \ + "subl $4, %%esp\n\t" \ "pushl 44(%%eax)\n\t" \ "pushl 40(%%eax)\n\t" \ "pushl 36(%%eax)\n\t" \ @@ -1120,7 +1236,7 @@ typedef "pushl 4(%%eax)\n\t" \ "movl (%%eax), %%eax\n\t" /* target->%eax */ \ VALGRIND_CALL_NOREDIR_EAX \ - "addl $44, %%esp\n" \ + "addl $48, %%esp\n" \ : /*out*/ "=a" (_res) \ : /*in*/ "a" (&_argvec[0]) \ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ @@ -1183,6 +1299,78 @@ typedef #define __CALLER_SAVED_REGS /*"rax",*/ "rcx", "rdx", "rsi", \ "rdi", "r8", "r9", "r10", "r11" +/* This is all pretty complex. It's so as to make stack unwinding + work reliably. See bug 243270. The basic problem is the sub and + add of 128 of %rsp in all of the following macros. If gcc believes + the CFA is in %rsp, then unwinding may fail, because what's at the + CFA is not what gcc "expected" when it constructs the CFIs for the + places where the macros are instantiated. + + But we can't just add a CFI annotation to increase the CFA offset + by 128, to match the sub of 128 from %rsp, because we don't know + whether gcc has chosen %rsp as the CFA at that point, or whether it + has chosen some other register (eg, %rbp). In the latter case, + adding a CFI annotation to change the CFA offset is simply wrong. + + So the solution is to get hold of the CFA using + __builtin_dwarf_cfa(), put it in a known register, and add a + CFI annotation to say what the register is. We choose %rbp for + this (perhaps perversely), because: + + (1) %rbp is already subject to unwinding. If a new register was + chosen then the unwinder would have to unwind it in all stack + traces, which is expensive, and + + (2) %rbp is already subject to precise exception updates in the + JIT. If a new register was chosen, we'd have to have precise + exceptions for it too, which reduces performance of the + generated code. + + However .. one extra complication. We can't just whack the result + of __builtin_dwarf_cfa() into %rbp and then add %rbp to the + list of trashed registers at the end of the inline assembly + fragments; gcc won't allow %rbp to appear in that list. Hence + instead we need to stash %rbp in %r15 for the duration of the asm, + and say that %r15 is trashed instead. gcc seems happy to go with + that. + + Oh .. and this all needs to be conditionalised so that it is + unchanged from before this commit, when compiled with older gccs + that don't support __builtin_dwarf_cfa. Furthermore, since + this header file is freestanding, it has to be independent of + config.h, and so the following conditionalisation cannot depend on + configure time checks. + + Although it's not clear from + 'defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)', + this expression excludes Darwin. + .cfi directives in Darwin assembly appear to be completely + different and I haven't investigated how they work. + + For even more entertainment value, note we have to use the + completely undocumented __builtin_dwarf_cfa(), which appears to + really compute the CFA, whereas __builtin_frame_address(0) claims + to but actually doesn't. See + https://bugs.kde.org/show_bug.cgi?id=243270#c47 +*/ +#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM) +# define __FRAME_POINTER \ + ,"r"(__builtin_dwarf_cfa()) +# define VALGRIND_CFI_PROLOGUE \ + "movq %%rbp, %%r15\n\t" \ + "movq %2, %%rbp\n\t" \ + ".cfi_remember_state\n\t" \ + ".cfi_def_cfa rbp, 0\n\t" +# define VALGRIND_CFI_EPILOGUE \ + "movq %%r15, %%rbp\n\t" \ + ".cfi_restore_state\n\t" +#else +# define __FRAME_POINTER +# define VALGRIND_CFI_PROLOGUE +# define VALGRIND_CFI_EPILOGUE +#endif + + /* These CALL_FN_ macros assume that on amd64-linux, sizeof(unsigned long) == 8. */ @@ -1214,13 +1402,15 @@ typedef volatile unsigned long _res; \ _argvec[0] = (unsigned long)_orig.nraddr; \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1233,14 +1423,16 @@ typedef _argvec[0] = (unsigned long)_orig.nraddr; \ _argvec[1] = (unsigned long)(arg1); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 8(%%rax), %%rdi\n\t" \ "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1254,15 +1446,17 @@ typedef _argvec[1] = (unsigned long)(arg1); \ _argvec[2] = (unsigned long)(arg2); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 16(%%rax), %%rsi\n\t" \ "movq 8(%%rax), %%rdi\n\t" \ "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1277,6 +1471,7 @@ typedef _argvec[2] = (unsigned long)(arg2); \ _argvec[3] = (unsigned long)(arg3); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 24(%%rax), %%rdx\n\t" \ "movq 16(%%rax), %%rsi\n\t" \ @@ -1284,9 +1479,10 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1302,6 +1498,7 @@ typedef _argvec[3] = (unsigned long)(arg3); \ _argvec[4] = (unsigned long)(arg4); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 32(%%rax), %%rcx\n\t" \ "movq 24(%%rax), %%rdx\n\t" \ @@ -1310,9 +1507,10 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1329,6 +1527,7 @@ typedef _argvec[4] = (unsigned long)(arg4); \ _argvec[5] = (unsigned long)(arg5); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 40(%%rax), %%r8\n\t" \ "movq 32(%%rax), %%rcx\n\t" \ @@ -1338,9 +1537,10 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1358,6 +1558,7 @@ typedef _argvec[5] = (unsigned long)(arg5); \ _argvec[6] = (unsigned long)(arg6); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "movq 48(%%rax), %%r9\n\t" \ "movq 40(%%rax), %%r8\n\t" \ @@ -1366,11 +1567,12 @@ typedef "movq 16(%%rax), %%rsi\n\t" \ "movq 8(%%rax), %%rdi\n\t" \ "movq (%%rax), %%rax\n\t" /* target->%rax */ \ - "addq $128,%%rsp\n\t" \ VALGRIND_CALL_NOREDIR_RAX \ + "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1390,7 +1592,8 @@ typedef _argvec[6] = (unsigned long)(arg6); \ _argvec[7] = (unsigned long)(arg7); \ __asm__ volatile( \ - "subq $128,%%rsp\n\t" \ + VALGRIND_CFI_PROLOGUE \ + "subq $136,%%rsp\n\t" \ "pushq 56(%%rax)\n\t" \ "movq 48(%%rax), %%r9\n\t" \ "movq 40(%%rax), %%r8\n\t" \ @@ -1401,10 +1604,11 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $8, %%rsp\n" \ - "addq $128,%%rsp\n\t" \ + "addq $136,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1425,6 +1629,7 @@ typedef _argvec[7] = (unsigned long)(arg7); \ _argvec[8] = (unsigned long)(arg8); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "pushq 64(%%rax)\n\t" \ "pushq 56(%%rax)\n\t" \ @@ -1438,9 +1643,10 @@ typedef VALGRIND_CALL_NOREDIR_RAX \ "addq $16, %%rsp\n" \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1462,7 +1668,8 @@ typedef _argvec[8] = (unsigned long)(arg8); \ _argvec[9] = (unsigned long)(arg9); \ __asm__ volatile( \ - "subq $128,%%rsp\n\t" \ + VALGRIND_CFI_PROLOGUE \ + "subq $136,%%rsp\n\t" \ "pushq 72(%%rax)\n\t" \ "pushq 64(%%rax)\n\t" \ "pushq 56(%%rax)\n\t" \ @@ -1475,10 +1682,11 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $24, %%rsp\n" \ - "addq $128,%%rsp\n\t" \ + "addq $136,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1501,6 +1709,7 @@ typedef _argvec[9] = (unsigned long)(arg9); \ _argvec[10] = (unsigned long)(arg10); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "pushq 80(%%rax)\n\t" \ "pushq 72(%%rax)\n\t" \ @@ -1516,9 +1725,10 @@ typedef VALGRIND_CALL_NOREDIR_RAX \ "addq $32, %%rsp\n" \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1542,7 +1752,8 @@ typedef _argvec[10] = (unsigned long)(arg10); \ _argvec[11] = (unsigned long)(arg11); \ __asm__ volatile( \ - "subq $128,%%rsp\n\t" \ + VALGRIND_CFI_PROLOGUE \ + "subq $136,%%rsp\n\t" \ "pushq 88(%%rax)\n\t" \ "pushq 80(%%rax)\n\t" \ "pushq 72(%%rax)\n\t" \ @@ -1557,10 +1768,11 @@ typedef "movq (%%rax), %%rax\n\t" /* target->%rax */ \ VALGRIND_CALL_NOREDIR_RAX \ "addq $40, %%rsp\n" \ - "addq $128,%%rsp\n\t" \ + "addq $136,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -1585,6 +1797,7 @@ typedef _argvec[11] = (unsigned long)(arg11); \ _argvec[12] = (unsigned long)(arg12); \ __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ "subq $128,%%rsp\n\t" \ "pushq 96(%%rax)\n\t" \ "pushq 88(%%rax)\n\t" \ @@ -1602,9 +1815,10 @@ typedef VALGRIND_CALL_NOREDIR_RAX \ "addq $48, %%rsp\n" \ "addq $128,%%rsp\n\t" \ + VALGRIND_CFI_EPILOGUE \ : /*out*/ "=a" (_res) \ - : /*in*/ "a" (&_argvec[0]) \ - : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r15" \ ); \ lval = (__typeof__(lval)) _res; \ } while (0) @@ -4140,6 +4354,484 @@ typedef #endif /* PLAT_ppc64_aix5 */ +/* ------------------------- s390x-linux ------------------------- */ + +#if defined(PLAT_s390x_linux) + +/* Similar workaround as amd64 (see above), but we use r11 as frame + pointer and save the old r11 in r7. r11 might be used for + argvec, therefore we copy argvec in r1 since r1 is clobbered + after the call anyway. */ +#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM) +# define __FRAME_POINTER \ + ,"d"(__builtin_dwarf_cfa()) +# define VALGRIND_CFI_PROLOGUE \ + ".cfi_remember_state\n\t" \ + "lgr 1,%1\n\t" /* copy the argvec pointer in r1 */ \ + "lgr 7,11\n\t" \ + "lgr 11,%2\n\t" \ + ".cfi_def_cfa r11, 0\n\t" +# define VALGRIND_CFI_EPILOGUE \ + "lgr 11, 7\n\t" \ + ".cfi_restore_state\n\t" +#else +# define __FRAME_POINTER +# define VALGRIND_CFI_PROLOGUE \ + "lgr 1,%1\n\t" +# define VALGRIND_CFI_EPILOGUE +#endif + + + + +/* These regs are trashed by the hidden call. Note that we overwrite + r14 in s390_irgen_noredir (VEX/priv/guest_s390_irgen.c) to give the + function a proper return address. All others are ABI defined call + clobbers. */ +#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \ + "f0","f1","f2","f3","f4","f5","f6","f7" + + +#define CALL_FN_W_v(lval, orig) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[1]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 1, 0(1)\n\t" /* target->r1 */ \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "d" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +/* The call abi has the arguments in r2-r6 and stack */ +#define CALL_FN_W_W(lval, orig, arg1) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[2]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WW(lval, orig, arg1, arg2) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[3]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[4]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[5]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[6]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-160\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[7]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-168\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,168\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[8]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-176\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,176\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7 ,arg8) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[9]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + _argvec[8] = (unsigned long)arg8; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-184\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "mvc 176(8,15), 64(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,184\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7 ,arg8, arg9) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[10]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + _argvec[8] = (unsigned long)arg8; \ + _argvec[9] = (unsigned long)arg9; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-192\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "mvc 176(8,15), 64(1)\n\t" \ + "mvc 184(8,15), 72(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,192\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7 ,arg8, arg9, arg10) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[11]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + _argvec[8] = (unsigned long)arg8; \ + _argvec[9] = (unsigned long)arg9; \ + _argvec[10] = (unsigned long)arg10; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-200\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "mvc 176(8,15), 64(1)\n\t" \ + "mvc 184(8,15), 72(1)\n\t" \ + "mvc 192(8,15), 80(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,200\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7 ,arg8, arg9, arg10, arg11) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[12]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + _argvec[8] = (unsigned long)arg8; \ + _argvec[9] = (unsigned long)arg9; \ + _argvec[10] = (unsigned long)arg10; \ + _argvec[11] = (unsigned long)arg11; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-208\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "mvc 176(8,15), 64(1)\n\t" \ + "mvc 184(8,15), 72(1)\n\t" \ + "mvc 192(8,15), 80(1)\n\t" \ + "mvc 200(8,15), 88(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,208\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7 ,arg8, arg9, arg10, arg11, arg12)\ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[13]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)arg1; \ + _argvec[2] = (unsigned long)arg2; \ + _argvec[3] = (unsigned long)arg3; \ + _argvec[4] = (unsigned long)arg4; \ + _argvec[5] = (unsigned long)arg5; \ + _argvec[6] = (unsigned long)arg6; \ + _argvec[7] = (unsigned long)arg7; \ + _argvec[8] = (unsigned long)arg8; \ + _argvec[9] = (unsigned long)arg9; \ + _argvec[10] = (unsigned long)arg10; \ + _argvec[11] = (unsigned long)arg11; \ + _argvec[12] = (unsigned long)arg12; \ + __asm__ volatile( \ + VALGRIND_CFI_PROLOGUE \ + "aghi 15,-216\n\t" \ + "lg 2, 8(1)\n\t" \ + "lg 3,16(1)\n\t" \ + "lg 4,24(1)\n\t" \ + "lg 5,32(1)\n\t" \ + "lg 6,40(1)\n\t" \ + "mvc 160(8,15), 48(1)\n\t" \ + "mvc 168(8,15), 56(1)\n\t" \ + "mvc 176(8,15), 64(1)\n\t" \ + "mvc 184(8,15), 72(1)\n\t" \ + "mvc 192(8,15), 80(1)\n\t" \ + "mvc 200(8,15), 88(1)\n\t" \ + "mvc 208(8,15), 96(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ + "lgr %0, 2\n\t" \ + "aghi 15,216\n\t" \ + VALGRIND_CFI_EPILOGUE \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + + +#endif /* PLAT_s390x_linux */ + /* ------------------------------------------------------------------ */ /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ @@ -4184,9 +4876,14 @@ typedef errors. */ VG_USERREQ__COUNT_ERRORS = 0x1201, + /* Allows a string (gdb monitor command) to be passed to the tool + Used for interaction with vgdb/gdb */ + VG_USERREQ__GDB_MONITOR_COMMAND = 0x1202, + /* These are useful and can be interpreted by any tool that tracks malloc() et al, by using vg_replace_malloc.c. */ VG_USERREQ__MALLOCLIKE_BLOCK = 0x1301, + VG_USERREQ__RESIZEINPLACE_BLOCK = 0x130b, VG_USERREQ__FREELIKE_BLOCK = 0x1302, /* Memory pool support. */ VG_USERREQ__CREATE_MEMPOOL = 0x1303, @@ -4227,29 +4924,15 @@ typedef # define __extension__ /* */ #endif + /* Returns the number of Valgrinds this code is running under. That is, 0 if running natively, 1 if running under Valgrind, 2 if running under Valgrind which is running under another Valgrind, etc. */ -#if !defined(_MSC_VER) -#define RUNNING_ON_VALGRIND __extension__ \ - ({unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* if not */, \ - VG_USERREQ__RUNNING_ON_VALGRIND, \ - 0, 0, 0, 0, 0); \ - _qzz_res; \ - }) -#else /* defined(_MSC_VER) */ -#define RUNNING_ON_VALGRIND vg_RunningOnValgrind() -static __inline unsigned int vg_RunningOnValgrind(void) -{ - unsigned int _qzz_res; - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* if not */, - VG_USERREQ__RUNNING_ON_VALGRIND, - 0, 0, 0, 0, 0); - return _qzz_res; -} -#endif +#define RUNNING_ON_VALGRIND \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */, \ + VG_USERREQ__RUNNING_ON_VALGRIND, \ + 0, 0, 0, 0, 0) \ /* Discard translation of code in the range [_qzz_addr .. _qzz_addr + @@ -4257,11 +4940,9 @@ static __inline unsigned int vg_RunningOnValgrind(void) since it provides a way to make sure valgrind will retranslate the invalidated area. Returns no value. */ #define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__DISCARD_TRANSLATIONS, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - } + _qzz_addr, _qzz_len, 0, 0, 0) /* These requests are for getting Valgrind itself to print something. @@ -4269,54 +4950,83 @@ static __inline unsigned int vg_RunningOnValgrind(void) is the number of characters printed, excluding the "**** " part at the start and the backtrace (if present). */ -#if defined(NVALGRIND) - -# define VALGRIND_PRINTF(...) -# define VALGRIND_PRINTF_BACKTRACE(...) - -#else /* NVALGRIND */ - -#if !defined(_MSC_VER) +#if defined(__GNUC__) || defined(__INTEL_COMPILER) /* Modern GCC will optimize the static routine out if unused, and unused attribute will shut down warnings about it. */ static int VALGRIND_PRINTF(const char *format, ...) __attribute__((format(__printf__, 1, 2), __unused__)); #endif static int +#if defined(_MSC_VER) +__inline +#endif VALGRIND_PRINTF(const char *format, ...) { +#if defined(NVALGRIND) + return 0; +#else /* NVALGRIND */ +#if defined(_MSC_VER) + uintptr_t _qzz_res; +#else unsigned long _qzz_res; +#endif va_list vargs; va_start(vargs, format); - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, +#if defined(_MSC_VER) + _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0, + VG_USERREQ__PRINTF_VALIST_BY_REF, + (uintptr_t)format, + (uintptr_t)&vargs, + 0, 0, 0); +#else + _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRINTF_VALIST_BY_REF, (unsigned long)format, (unsigned long)&vargs, 0, 0, 0); +#endif va_end(vargs); return (int)_qzz_res; +#endif /* NVALGRIND */ } -#if !defined(_MSC_VER) +#if defined(__GNUC__) || defined(__INTEL_COMPILER) static int VALGRIND_PRINTF_BACKTRACE(const char *format, ...) __attribute__((format(__printf__, 1, 2), __unused__)); #endif static int +#if defined(_MSC_VER) +__inline +#endif VALGRIND_PRINTF_BACKTRACE(const char *format, ...) { +#if defined(NVALGRIND) + return 0; +#else /* NVALGRIND */ +#if defined(_MSC_VER) + uintptr_t _qzz_res; +#else unsigned long _qzz_res; +#endif va_list vargs; va_start(vargs, format); - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, +#if defined(_MSC_VER) + _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0, + VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF, + (uintptr_t)format, + (uintptr_t)&vargs, + 0, 0, 0); +#else + _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF, (unsigned long)format, (unsigned long)&vargs, 0, 0, 0); +#endif va_end(vargs); return (int)_qzz_res; -} - #endif /* NVALGRIND */ +} /* These requests allow control to move from the simulated CPU to the @@ -4343,58 +5053,39 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) with a lot in the past. */ #define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \ - __extension__ \ - ({unsigned long _qyy_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ - VG_USERREQ__CLIENT_CALL0, \ - _qyy_fn, \ - 0, 0, 0, 0); \ - _qyy_res; \ - }) - -#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \ - __extension__ \ - ({unsigned long _qyy_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ - VG_USERREQ__CLIENT_CALL1, \ - _qyy_fn, \ - _qyy_arg1, 0, 0, 0); \ - _qyy_res; \ - }) - -#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \ - __extension__ \ - ({unsigned long _qyy_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ - VG_USERREQ__CLIENT_CALL2, \ - _qyy_fn, \ - _qyy_arg1, _qyy_arg2, 0, 0); \ - _qyy_res; \ - }) + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ + VG_USERREQ__CLIENT_CALL0, \ + _qyy_fn, \ + 0, 0, 0, 0) + +#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ + VG_USERREQ__CLIENT_CALL1, \ + _qyy_fn, \ + _qyy_arg1, 0, 0, 0) + +#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ + VG_USERREQ__CLIENT_CALL2, \ + _qyy_fn, \ + _qyy_arg1, _qyy_arg2, 0, 0) #define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3) \ - __extension__ \ - ({unsigned long _qyy_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ - VG_USERREQ__CLIENT_CALL3, \ - _qyy_fn, \ - _qyy_arg1, _qyy_arg2, \ - _qyy_arg3, 0); \ - _qyy_res; \ - }) + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ + VG_USERREQ__CLIENT_CALL3, \ + _qyy_fn, \ + _qyy_arg1, _qyy_arg2, \ + _qyy_arg3, 0) /* Counts the number of errors that have been recorded by a tool. Nb: the tool must record the errors with VG_(maybe_record_error)() or VG_(unique_error)() for them to be counted. */ #define VALGRIND_COUNT_ERRORS \ - __extension__ \ - ({unsigned int _qyy_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + 0 /* default return */, \ VG_USERREQ__COUNT_ERRORS, \ - 0, 0, 0, 0, 0); \ - _qyy_res; \ - }) + 0, 0, 0, 0, 0) /* Several Valgrind tools (Memcheck, Massif, Helgrind, DRD) rely on knowing when heap blocks are allocated in order to give accurate results. This @@ -4460,7 +5151,24 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) VALGRIND_FREELIKE_BLOCK should be put immediately after the point where a heap block is deallocated. - In many cases, these two client requests will not be enough to get your + VALGRIND_RESIZEINPLACE_BLOCK informs a tool about reallocation. For + Memcheck, it does four things: + + - It records that the size of a block has been changed. This assumes that + the block was annotated as having been allocated via + VALGRIND_MALLOCLIKE_BLOCK. Otherwise, an error will be issued. + + - If the block shrunk, it marks the freed memory as being unaddressable. + + - If the block grew, it marks the new area as undefined and defines a red + zone past the end of the new block. + + - The V-bits of the overlap between the old and the new block are preserved. + + VALGRIND_RESIZEINPLACE_BLOCK should be put after allocation of the new block + and before deallocation of the old block. + + In many cases, these three client requests will not be enough to get your allocator working well with Memcheck. More specifically, if your allocator writes to freed blocks in any way then a VALGRIND_MAKE_MEM_UNDEFINED call will be necessary to mark the memory as addressable just before the zeroing @@ -4478,139 +5186,110 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) understand the distinction between the allocator and the rest of the program. - Note: there is currently no VALGRIND_REALLOCLIKE_BLOCK client request; it - has to be emulated with MALLOCLIKE/FREELIKE and memory copying. - Ignored if addr == 0. */ #define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MALLOCLIKE_BLOCK, \ - addr, sizeB, rzB, is_zeroed, 0); \ - } + addr, sizeB, rzB, is_zeroed, 0) + +/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details. + Ignored if addr == 0. +*/ +#define VALGRIND_RESIZEINPLACE_BLOCK(addr, oldSizeB, newSizeB, rzB) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__RESIZEINPLACE_BLOCK, \ + addr, oldSizeB, newSizeB, rzB, 0) /* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details. Ignored if addr == 0. */ #define VALGRIND_FREELIKE_BLOCK(addr, rzB) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__FREELIKE_BLOCK, \ - addr, rzB, 0, 0, 0); \ - } + addr, rzB, 0, 0, 0) /* Create a memory pool. */ #define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__CREATE_MEMPOOL, \ - pool, rzB, is_zeroed, 0, 0); \ - } + pool, rzB, is_zeroed, 0, 0) /* Destroy a memory pool. */ #define VALGRIND_DESTROY_MEMPOOL(pool) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__DESTROY_MEMPOOL, \ - pool, 0, 0, 0, 0); \ - } + pool, 0, 0, 0, 0) /* Associate a piece of memory with a memory pool. */ #define VALGRIND_MEMPOOL_ALLOC(pool, addr, size) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MEMPOOL_ALLOC, \ - pool, addr, size, 0, 0); \ - } + pool, addr, size, 0, 0) /* Disassociate a piece of memory from a memory pool. */ #define VALGRIND_MEMPOOL_FREE(pool, addr) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MEMPOOL_FREE, \ - pool, addr, 0, 0, 0); \ - } + pool, addr, 0, 0, 0) /* Disassociate any pieces outside a particular range. */ #define VALGRIND_MEMPOOL_TRIM(pool, addr, size) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MEMPOOL_TRIM, \ - pool, addr, size, 0, 0); \ - } + pool, addr, size, 0, 0) /* Resize and/or move a piece associated with a memory pool. */ #define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MOVE_MEMPOOL, \ - poolA, poolB, 0, 0, 0); \ - } + poolA, poolB, 0, 0, 0) /* Resize and/or move a piece associated with a memory pool. */ #define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MEMPOOL_CHANGE, \ - pool, addrA, addrB, size, 0); \ - } + pool, addrA, addrB, size, 0) /* Return 1 if a mempool exists, else 0. */ #define VALGRIND_MEMPOOL_EXISTS(pool) \ - __extension__ \ - ({unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MEMPOOL_EXISTS, \ - pool, 0, 0, 0, 0); \ - _qzz_res; \ - }) + pool, 0, 0, 0, 0) /* Mark a piece of memory as being a stack. Returns a stack id. */ #define VALGRIND_STACK_REGISTER(start, end) \ - __extension__ \ - ({unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__STACK_REGISTER, \ - start, end, 0, 0, 0); \ - _qzz_res; \ - }) + start, end, 0, 0, 0) /* Unmark the piece of memory associated with a stack id as being a stack. */ #define VALGRIND_STACK_DEREGISTER(id) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__STACK_DEREGISTER, \ - id, 0, 0, 0, 0); \ - } + id, 0, 0, 0, 0) /* Change the start and end address of the stack id. */ #define VALGRIND_STACK_CHANGE(id, start, end) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__STACK_CHANGE, \ - id, start, end, 0, 0); \ - } + id, start, end, 0, 0) /* Load PDB debug info for Wine PE image_map. */ #define VALGRIND_LOAD_PDB_DEBUGINFO(fd, ptr, total_size, delta) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__LOAD_PDB_DEBUGINFO, \ - fd, ptr, total_size, delta, 0); \ - } + fd, ptr, total_size, delta, 0) /* Map a code address to a source file name and line number. buf64 must point to a 64-byte buffer in the caller's address space. The result will be dumped in there and is guaranteed to be zero terminated. If no info is found, the first byte is set to zero. */ #define VALGRIND_MAP_IP_TO_SRCLOC(addr, buf64) \ - {unsigned int _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__MAP_IP_TO_SRCLOC, \ - addr, buf64, 0, 0, 0); \ - } + addr, buf64, 0, 0, 0) #undef PLAT_x86_linux @@ -4618,6 +5297,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) #undef PLAT_ppc32_linux #undef PLAT_ppc64_linux #undef PLAT_arm_linux +#undef PLAT_s390x_linux #undef PLAT_ppc32_aix5 #undef PLAT_ppc64_aix5 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-amd64-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-amd64-linux.h index 57f2e871e..de3fd41ee 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-amd64-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-amd64-linux.h @@ -62,6 +62,12 @@ typedef unsigned int vki_u32; #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + //---------------------------------------------------------------------- // From linux-2.6.9/include/asm-x86_64/signal.h //---------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-arm-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-arm-linux.h index 65da4e037..21ed42739 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-arm-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-arm-linux.h @@ -34,6 +34,10 @@ // arm is little-endian. #define VKI_LITTLE_ENDIAN 1 +// The various comments below indicating i386-ness should be regarded +// with great skepticism -- they are quite possibly wrong. But see +// also bug 269079 comment 0. + //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/types.h //---------------------------------------------------------------------- @@ -63,6 +67,12 @@ typedef unsigned int vki_u32; #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/arm/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) + //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/signal.h //---------------------------------------------------------------------- @@ -184,43 +194,6 @@ typedef struct vki_sigaltstack { // From linux-2.6.8.1/include/asm-i386/sigcontext.h //---------------------------------------------------------------------- -struct _vki_fpreg { - unsigned short significand[4]; - unsigned short exponent; -}; - -struct _vki_fpxreg { - unsigned short significand[4]; - unsigned short exponent; - unsigned short padding[3]; -}; - -struct _vki_xmmreg { - unsigned long element[4]; -}; - -struct _vki_fpstate { - /* Regular FPU environment */ - unsigned long cw; - unsigned long sw; - unsigned long tag; - unsigned long ipoff; - unsigned long cssel; - unsigned long dataoff; - unsigned long datasel; - struct _vki_fpreg _st[8]; - unsigned short status; - unsigned short magic; /* 0xffff = regular FPU data only */ - - /* FXSR FPU environment */ - unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */ - unsigned long mxcsr; - unsigned long reserved; - struct _vki_fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */ - struct _vki_xmmreg _xmm[8]; - unsigned long padding[56]; -}; - struct vki_sigcontext { unsigned long trap_no; unsigned long error_code; @@ -540,33 +513,41 @@ struct vki_pollfd { // From linux-2.6.8.1/include/asm-i386/user.h //---------------------------------------------------------------------- -struct vki_user_i387_struct { - long cwd; - long swd; - long twd; - long fip; - long fcs; - long foo; - long fos; - long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ +struct vki_user_fp { + struct vki_fp_reg { + unsigned int sign1:1; + unsigned int unused:15; + unsigned int sign2:1; + unsigned int exponent:14; + unsigned int j:1; + unsigned int mantissa1:31; + unsigned int mantissa0:32; + } fpregs[8]; + unsigned int fpsr:32; + unsigned int fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; +}; + +struct vki_user_vfp { + unsigned long long fpregs[32]; + unsigned long fpscr; +}; + +#define VKI_IWMMXT_SIZE 0x98 + +struct vki_iwmmxt_struct { + unsigned int save[VKI_IWMMXT_SIZE / sizeof(unsigned int)]; }; -struct vki_user_fxsr_struct { - unsigned short cwd; - unsigned short swd; - unsigned short twd; - unsigned short fop; - long fip; - long fcs; - long foo; - long fos; - long mxcsr; - long reserved; - long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ - long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ - long padding[56]; +struct vki_crunch_state { + unsigned int mvdx[16][2]; + unsigned int mvax[4][3]; + unsigned int dspsc[2]; }; +#define VKI_CRUNCH_SIZE sizeof(struct vki_crunch_state) + struct vki_user_regs_struct { long uregs[18]; }; @@ -597,8 +578,7 @@ typedef unsigned long vki_elf_greg_t; #define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; -typedef struct vki_user_i387_struct vki_elf_fpregset_t; -typedef struct vki_user_fxsr_struct vki_elf_fpxregset_t; +typedef struct vki_user_fp vki_elf_fpregset_t; #define VKI_AT_SYSINFO 32 @@ -731,7 +711,6 @@ struct vki_ipc_kludge { #define VKI_SHMGET 23 #define VKI_SHMCTL 24 - //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/shmbuf.h //---------------------------------------------------------------------- @@ -794,8 +773,16 @@ struct vki_shminfo64 { #define VKI_PTRACE_SETREGS 13 #define VKI_PTRACE_GETFPREGS 14 #define VKI_PTRACE_SETFPREGS 15 -#define VKI_PTRACE_GETFPXREGS 18 -#define VKI_PTRACE_SETFPXREGS 19 +#define VKI_PTRACE_GETWMMXREGS 18 +#define VKI_PTRACE_SETWMMXREGS 19 +#define VKI_PTRACE_GET_THREAD_AREA 22 +#define VKI_PTRACE_SET_SYSCALL 23 +#define VKI_PTRACE_GETCRUNCHREGS 25 +#define VKI_PTRACE_SETCRUNCHREGS 26 +#define VKI_PTRACE_GETVFPREGS 27 +#define VKI_PTRACE_SETVFPREGS 28 +#define VKI_PTRACE_GETHBPREGS 29 +#define VKI_PTRACE_SETHBPREGS 30 //---------------------------------------------------------------------- // From linux-2.6.15.4/include/asm-i386/vm86.h @@ -871,6 +858,12 @@ struct vki_vm86plus_struct { struct vki_vm86plus_info_struct vm86plus; }; +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/arm/include/asm/hwcap.h +//---------------------------------------------------------------------- + +#define VKI_HWCAP_NEON 4096 + //---------------------------------------------------------------------- // And that's it! //---------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-darwin.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-darwin.h index e1663b8b0..e4d28d748 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-darwin.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-darwin.h @@ -706,6 +706,7 @@ typedef #define VKI_SHM_RDONLY SHM_RDONLY #define VKI_SHM_RND SHM_RND +#define VKI_SHMLBA SHMLBA #define vki_shmid_ds shmid_ds diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-l4re.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-l4re.h index b62fd2d88..4458ae53e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-l4re.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-l4re.h @@ -7,7 +7,7 @@ This file is part of Valgrind, a dynamic binary instrumentation framework. - Copyright (C) 2000-2009 Julian Seward + Copyright (C) 2000-2010 Julian Seward jseward@acm.org This program is free software; you can redistribute it and/or @@ -85,6 +85,34 @@ # error Unknown platform #endif +//---------------------------------------------------------------------- +// VKI_STATIC_ASSERT(). Inspired by BUILD_BUG_ON() from +// linux-2.6.34/include/linux/kernel.h +//---------------------------------------------------------------------- + +/* + * Evaluates to zero if 'expr' is true and forces a compilation error if + * 'expr' is false. Can be used in a context where no comma expressions + * are allowed. + */ +#ifdef __cplusplus +template struct vki_static_assert { int m_bitfield:(2*b-1); }; +#define VKI_STATIC_ASSERT(expr) \ + (sizeof(vki_static_assert<(expr)>) - sizeof(int)) +#else +#define VKI_STATIC_ASSERT(expr) (sizeof(struct { int:-!(expr); })) +#endif + +//---------------------------------------------------------------------- +// Based on _IOC_TYPECHECK() from linux-2.6.34/asm-generic/ioctl.h +//---------------------------------------------------------------------- + +/* provoke compile error for invalid uses of size argument */ +#define _VKI_IOC_TYPECHECK(t) \ + (VKI_STATIC_ASSERT((sizeof(t) == sizeof(t[1]) \ + && sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) \ + + sizeof(t)) + //---------------------------------------------------------------------- // From linux-2.6.8.1/include/linux/compiler.h //---------------------------------------------------------------------- @@ -1260,10 +1288,17 @@ struct vki_dirent { // From linux-2.6.8.1/include/linux/fcntl.h //---------------------------------------------------------------------- -#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE+0) -#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE+1) +#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 0) +#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 1) + +#define VKI_F_CANCELLK (VKI_F_LINUX_SPECIFIC_BASE + 5) + +#define VKI_F_DUPFD_CLOEXEC (VKI_F_LINUX_SPECIFIC_BASE + 6) + +#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE + 2) -#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE+2) +#define VKI_F_SETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 7) +#define VKI_F_GETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 8) //---------------------------------------------------------------------- // From linux-2.6.8.1/include/linux/sysctl.h @@ -1408,6 +1443,7 @@ struct vki_shmid_ds { }; #define VKI_SHM_RDONLY 010000 /* read-only access */ +#define VKI_SHM_RND 020000 /* round attach address to SHMLBA boundary */ #define VKI_SHM_STAT 13 #define VKI_SHM_INFO 14 @@ -1860,6 +1896,7 @@ struct vki_cdrom_generic_command #define VKI_SNDCTL_DSP_SETFRAGMENT _VKI_SIOWR('P',10, int) #define VKI_SNDCTL_DSP_GETFMTS _VKI_SIOR ('P',11, int) /* Returns a mask */ +#define VKI_SNDCTL_DSP_SETFMT _VKI_SIOWR('P', 5, int) /* Selects ONE fmt */ typedef struct vki_audio_buf_info { int fragments; /* # of available fragments (partially usend ones not counted) */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-linux.h index beff378b3..eee044d56 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-linux.h @@ -89,6 +89,8 @@ # include "vki-posixtypes-ppc64-linux.h" #elif defined(VGA_arm) # include "vki-posixtypes-arm-linux.h" +#elif defined(VGA_s390x) +# include "vki-posixtypes-s390x-linux.h" #else # error Unknown platform #endif @@ -201,6 +203,8 @@ typedef unsigned int vki_uint; # include "vki-ppc64-linux.h" #elif defined(VGA_arm) # include "vki-arm-linux.h" +#elif defined(VGA_s390x) +# include "vki-s390x-linux.h" #else # error Unknown platform #endif @@ -1296,10 +1300,17 @@ struct vki_dirent { // From linux-2.6.8.1/include/linux/fcntl.h //---------------------------------------------------------------------- -#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE+0) -#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE+1) +#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 0) +#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 1) -#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE+2) +#define VKI_F_CANCELLK (VKI_F_LINUX_SPECIFIC_BASE + 5) + +#define VKI_F_DUPFD_CLOEXEC (VKI_F_LINUX_SPECIFIC_BASE + 6) + +#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE + 2) + +#define VKI_F_SETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 7) +#define VKI_F_GETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 8) //---------------------------------------------------------------------- // From linux-2.6.8.1/include/linux/sysctl.h @@ -1444,6 +1455,7 @@ struct vki_shmid_ds { }; #define VKI_SHM_RDONLY 010000 /* read-only access */ +#define VKI_SHM_RND 020000 /* round attach address to SHMLBA boundary */ #define VKI_SHM_STAT 13 #define VKI_SHM_INFO 14 @@ -2382,6 +2394,7 @@ struct vki_usbdevfs_ioctl { #define VKI_USBDEVFS_REAPURBNDELAY _VKI_IOW('U', 13, void *) #define VKI_USBDEVFS_CONNECTINFO _VKI_IOW('U', 17, struct vki_usbdevfs_connectinfo) #define VKI_USBDEVFS_IOCTL _VKI_IOWR('U', 18, struct vki_usbdevfs_ioctl) +#define VKI_USBDEVFS_RESET _VKI_IO('U', 20) #define VKI_USBDEVFS_URB_TYPE_ISO 0 #define VKI_USBDEVFS_URB_TYPE_INTERRUPT 1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-posixtypes-s390x-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-posixtypes-s390x-linux.h new file mode 100644 index 000000000..1dc753e9a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-posixtypes-s390x-linux.h @@ -0,0 +1,77 @@ + +/*--------------------------------------------------------------------*/ +/*--- s390x/Linux-specific kernel interface: posix types. ---*/ +/*--- vki-posixtypes-s390x-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Florian Krohm and Volker Sameske */ + +#ifndef __VKI_POSIXTYPES_S390X_LINUX_H +#define __VKI_POSIXTYPES_S390X_LINUX_H + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/posix_types.h +//---------------------------------------------------------------------- + +typedef long __vki_kernel_off_t; +typedef int __vki_kernel_pid_t; +typedef unsigned long __vki_kernel_size_t; +typedef long __vki_kernel_time_t; +typedef long __vki_kernel_suseconds_t; +typedef long __vki_kernel_clock_t; +typedef int __vki_kernel_timer_t; +typedef int __vki_kernel_clockid_t; +typedef int __vki_kernel_daddr_t; +typedef char * __vki_kernel_caddr_t; +typedef unsigned short __vki_kernel_uid16_t; +typedef unsigned short __vki_kernel_gid16_t; +typedef long long __vki_kernel_loff_t; + +typedef unsigned int __vki_kernel_ino_t; +typedef unsigned int __vki_kernel_mode_t; +typedef unsigned int __vki_kernel_nlink_t; +typedef int __vki_kernel_ipc_pid_t; +typedef unsigned int __vki_kernel_uid_t; +typedef unsigned int __vki_kernel_gid_t; +typedef long __vki_kernel_ssize_t; +typedef long __vki_kernel_ptrdiff_t; +typedef unsigned long __vki_kernel_sigset_t; /* at least 32 bits */ +typedef __vki_kernel_uid_t __vki_kernel_old_uid_t; +typedef __vki_kernel_gid_t __vki_kernel_old_gid_t; +typedef __vki_kernel_uid_t __vki_kernel_uid32_t; +typedef __vki_kernel_gid_t __vki_kernel_gid32_t; +typedef unsigned short __vki_kernel_old_dev_t; + +typedef struct { + int val[2]; +} __vki_kernel_fsid_t; + +#endif // __VKI_POSIXTYPES_S390X_LINUX_H + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc32-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc32-linux.h index 858f9417a..6b4438607 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc32-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc32-linux.h @@ -68,6 +68,12 @@ extern unsigned long VKI_PAGE_SIZE; #define VKI_MAX_PAGE_SHIFT 16 #define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/powerpc/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + //---------------------------------------------------------------------- // From linux-2.6.9/include/asm-ppc/signal.h //---------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc64-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc64-linux.h index 4d786bb24..5af8470f4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc64-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc64-linux.h @@ -69,6 +69,12 @@ extern unsigned long VKI_PAGE_SIZE; #define VKI_MAX_PAGE_SHIFT 16 #define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/powerpc/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + //---------------------------------------------------------------------- // From linux-2.6.13/include/asm-ppc64/signal.h //---------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-s390x-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-s390x-linux.h new file mode 100644 index 000000000..ccc73a4c4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-s390x-linux.h @@ -0,0 +1,944 @@ + +/*--------------------------------------------------------------------*/ +/*--- s390x/Linux-specific kernel interface. vki-s390x-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Florian Krohm and Volker Sameske */ + +#ifndef __VKI_S390X_LINUX_H +#define __VKI_S390X_LINUX_H + +#define __force + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/types.h +//---------------------------------------------------------------------- + +typedef __signed__ char __vki_s8; +typedef unsigned char __vki_u8; + +typedef __signed__ short __vki_s16; +typedef unsigned short __vki_u16; + +typedef __signed__ int __vki_s32; +typedef unsigned int __vki_u32; + +typedef __signed__ long __vki_s64; +typedef unsigned long __vki_u64; + +typedef unsigned short vki_u16; + +typedef unsigned int vki_u32; + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/page.h +//---------------------------------------------------------------------- + +/* PAGE_SHIFT determines the page size */ +#define VKI_PAGE_SHIFT 12 +#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/siginfo.h +//---------------------------------------------------------------------- + +/* We need that to ensure that sizeof(siginfo) == 128. */ +#ifdef __s390x__ +#define __VKI_ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#endif + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/sigcontext.h +//---------------------------------------------------------------------- + +#define __VKI_NUM_GPRS 16 +#define __VKI_NUM_FPRS 16 +#define __VKI_NUM_ACRS 16 + +#ifndef VGA_s390x + +/* Has to be at least _NSIG_WORDS from asm/signal.h */ +#define _VKI_SIGCONTEXT_NSIG 64 +#define _VKI_SIGCONTEXT_NSIG_BPW 32 +/* Size of stack frame allocated when calling signal handler. */ +#define __VKI_SIGNAL_FRAMESIZE 96 + +#else /* VGA_s390x */ + +/* Has to be at least _NSIG_WORDS from asm/signal.h */ +#define _VKI_SIGCONTEXT_NSIG 64 +#define _VKI_SIGCONTEXT_NSIG_BPW 64 +/* Size of stack frame allocated when calling signal handler. */ +#define __VKI_SIGNAL_FRAMESIZE 160 + +#endif /* VGA_s390x */ + + +#define _VKI_SIGCONTEXT_NSIG_WORDS (_VKI_SIGCONTEXT_NSIG / _VKI_SIGCONTEXT_NSIG_BPW) +#define _VKI_SIGMASK_COPY_SIZE (sizeof(unsigned long)*_VKI_SIGCONTEXT_NSIG_WORDS) + +typedef struct +{ + unsigned long mask; + unsigned long addr; +} __attribute__ ((aligned(8))) _vki_psw_t; + +typedef struct +{ + _vki_psw_t psw; + unsigned long gprs[__VKI_NUM_GPRS]; + unsigned int acrs[__VKI_NUM_ACRS]; +} _vki_s390_regs_common; + +typedef struct +{ + unsigned int fpc; + double fprs[__VKI_NUM_FPRS]; +} _vki_s390_fp_regs; + +typedef struct +{ + _vki_s390_regs_common regs; + _vki_s390_fp_regs fpregs; +} _vki_sigregs; + + +struct vki_sigcontext +{ + unsigned long oldmask[_VKI_SIGCONTEXT_NSIG_WORDS]; + _vki_sigregs __user *sregs; +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/signal.h +//---------------------------------------------------------------------- + +#define _VKI_NSIG _VKI_SIGCONTEXT_NSIG +#define _VKI_NSIG_BPW _VKI_SIGCONTEXT_NSIG_BPW +#define _VKI_NSIG_WORDS _VKI_SIGCONTEXT_NSIG_WORDS + +typedef unsigned long vki_old_sigset_t; + +typedef struct { + unsigned long sig[_VKI_NSIG_WORDS]; +} vki_sigset_t; + +#define VKI_SIGHUP 1 +#define VKI_SIGINT 2 +#define VKI_SIGQUIT 3 +#define VKI_SIGILL 4 +#define VKI_SIGTRAP 5 +#define VKI_SIGABRT 6 +#define VKI_SIGIOT 6 +#define VKI_SIGBUS 7 +#define VKI_SIGFPE 8 +#define VKI_SIGKILL 9 +#define VKI_SIGUSR1 10 +#define VKI_SIGSEGV 11 +#define VKI_SIGUSR2 12 +#define VKI_SIGPIPE 13 +#define VKI_SIGALRM 14 +#define VKI_SIGTERM 15 +#define VKI_SIGSTKFLT 16 +#define VKI_SIGCHLD 17 +#define VKI_SIGCONT 18 +#define VKI_SIGSTOP 19 +#define VKI_SIGTSTP 20 +#define VKI_SIGTTIN 21 +#define VKI_SIGTTOU 22 +#define VKI_SIGURG 23 +#define VKI_SIGXCPU 24 +#define VKI_SIGXFSZ 25 +#define VKI_SIGVTALRM 26 +#define VKI_SIGPROF 27 +#define VKI_SIGWINCH 28 +#define VKI_SIGIO 29 +#define VKI_SIGPOLL VKI_SIGIO +/* +#define VKI_SIGLOST 29 +*/ +#define VKI_SIGPWR 30 +#define VKI_SIGSYS 31 +#define VKI_SIGUNUSED 31 + +/* These should not be considered constants from userland. */ +#define VKI_SIGRTMIN 32 +#define VKI_SIGRTMAX _VKI_NSIG + +/* + * SA_FLAGS values: + * + * SA_ONSTACK indicates that a registered stack_t will be used. + * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the + * SA_RESTART flag to get restarting signals (which were the default long ago) + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. + * SA_RESETHAND clears the handler when the signal is delivered. + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. + * SA_NODEFER prevents the current signal from being masked in the handler. + * + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single + * Unix names RESETHAND and NODEFER respectively. + */ +#define VKI_SA_NOCLDSTOP 0x00000001 +#define VKI_SA_NOCLDWAIT 0x00000002 +#define VKI_SA_SIGINFO 0x00000004 +#define VKI_SA_ONSTACK 0x08000000 +#define VKI_SA_RESTART 0x10000000 +#define VKI_SA_NODEFER 0x40000000 +#define VKI_SA_RESETHAND 0x80000000 + +#define VKI_SA_NOMASK VKI_SA_NODEFER +#define VKI_SA_ONESHOT VKI_SA_RESETHAND +#define VKI_SA_INTERRUPT 0x20000000 /* dummy -- ignored */ + +#define VKI_SA_RESTORER 0x04000000 + +/* + * sigaltstack controls + */ +#define VKI_SS_ONSTACK 1 +#define VKI_SS_DISABLE 2 + +#define VKI_MINSIGSTKSZ 2048 +#define VKI_SIGSTKSZ 8192 + + +/* Next lines asm-generic/signal.h */ +#define VKI_SIG_BLOCK 0 /* for blocking signals */ +#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ +#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ + +typedef void __vki_signalfn_t(int); +typedef __vki_signalfn_t __user *__vki_sighandler_t; + +/* default signal handling */ +#define VKI_SIG_DFL ((__force __vki_sighandler_t)0) +/* ignore signal */ +#define VKI_SIG_IGN ((__force __vki_sighandler_t)1) +/* error return from signal */ +#define VKI_SIG_ERR ((__force __vki_sighandler_t)-1) +/* Back to asm-s390/signal.h */ + +struct vki_old_sigaction { + // [[Nb: a 'k' prefix is added to "sa_handler" because + // bits/sigaction.h (which gets dragged in somehow via signal.h) + // #defines it as something else. Since that is done for glibc's + // purposes, which we don't care about here, we use our own name.]] + __vki_sighandler_t ksa_handler; + vki_old_sigset_t sa_mask; + unsigned long sa_flags; + void (*sa_restorer)(void); +}; + +struct vki_sigaction { + // [[See comment about extra 'k' above]] + __vki_sighandler_t ksa_handler; + unsigned long sa_flags; + void (*sa_restorer)(void); + vki_sigset_t sa_mask; /* mask last for extensibility */ +}; + +struct vki_k_sigaction { + struct vki_sigaction sa; +}; + + +/* On Linux we use the same type for passing sigactions to + and from the kernel. Hence: */ +typedef struct vki_sigaction vki_sigaction_toK_t; +typedef struct vki_sigaction vki_sigaction_fromK_t; + + +typedef struct vki_sigaltstack { + void __user *ss_sp; + int ss_flags; + vki_size_t ss_size; +} vki_stack_t; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/mman.h +//---------------------------------------------------------------------- + +#define VKI_PROT_NONE 0x0 /* No page permissions */ +#define VKI_PROT_READ 0x1 /* page can be read */ +#define VKI_PROT_WRITE 0x2 /* page can be written */ +#define VKI_PROT_EXEC 0x4 /* page can be executed */ +#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend + change to start of + growsdown vma */ +#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: + extend change to end + of growsup vma */ + +#define VKI_MAP_SHARED 0x0001 /* Share changes */ +#define VKI_MAP_PRIVATE 0x0002 /* */ +#define VKI_MAP_FIXED 0x0010 /* */ +#define VKI_MAP_ANONYMOUS 0x0020 /* */ + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/fcntl.h +//---------------------------------------------------------------------- + +#define VKI_O_RDONLY 00000000 +#define VKI_O_WRONLY 00000001 +#define VKI_O_RDWR 00000002 +#define VKI_O_ACCMODE 00000003 +#define VKI_O_CREAT 00000100 /* not fcntl */ +#define VKI_O_EXCL 00000200 /* not fcntl */ +#define VKI_O_NOCTTY 00000400 /* not fcntl */ +#define VKI_O_TRUNC 00001000 /* not fcntl */ +#define VKI_O_APPEND 00002000 +#define VKI_O_NONBLOCK 00004000 + +#define VKI_AT_FDCWD -100 + +#define VKI_F_DUPFD 0 /* dup */ +#define VKI_F_GETFD 1 /* get close_on_exec */ +#define VKI_F_SETFD 2 /* set/clear close_on_exec */ +#define VKI_F_GETFL 3 /* get file->f_flags */ +#define VKI_F_SETFL 4 /* set file->f_flags */ +#define VKI_F_GETLK 5 +#define VKI_F_SETLK 6 +#define VKI_F_SETLKW 7 +#define VKI_F_SETOWN 8 /* for sockets. */ +#define VKI_F_GETOWN 9 /* for sockets. */ +#define VKI_F_SETSIG 10 /* for sockets. */ +#define VKI_F_GETSIG 11 /* for sockets. */ + +#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ + +#define VKI_F_LINUX_SPECIFIC_BASE 1024 + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390x/resource.h +//---------------------------------------------------------------------- + +// which just does #include + +#define VKI_RLIMIT_DATA 2 /* max data size */ +#define VKI_RLIMIT_STACK 3 /* max stack size */ +#define VKI_RLIMIT_CORE 4 /* max core file size */ +#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/socket.h +//---------------------------------------------------------------------- + +#define VKI_SOL_SOCKET 1 + +#define VKI_SO_TYPE 3 + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/sockios.h +//---------------------------------------------------------------------- + +#define VKI_SIOCSPGRP 0x8902 +#define VKI_SIOCGPGRP 0x8904 +#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ +/* since 2.6.22 */ +#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/stat.h +//---------------------------------------------------------------------- + +#ifndef VGA_s390x +struct vki_stat { + unsigned short st_dev; + unsigned short __pad1; + unsigned long st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned short st_rdev; + unsigned short __pad2; + unsigned long st_size; + unsigned long st_blksize; + unsigned long st_blocks; + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; + unsigned long st_mtime_nsec; + unsigned long st_ctime; + unsigned long st_ctime_nsec; + unsigned long __unused4; + unsigned long __unused5; +}; + +/* This matches struct stat64 in glibc2.1, hence the absolutely + * insane amounts of padding around dev_t's. + */ +struct vki_stat64 { + unsigned long long st_dev; + unsigned int __pad1; + unsigned long __st_ino; + unsigned int st_mode; + unsigned int st_nlink; + unsigned long st_uid; + unsigned long st_gid; + unsigned long long st_rdev; + unsigned int __pad3; + long long st_size; + unsigned long st_blksize; + unsigned char __pad4[4]; + unsigned long __pad5; /* future possible st_blocks high bits */ + unsigned long st_blocks; /* Number 512-byte blocks allocated. */ + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; + unsigned long st_mtime_nsec; + unsigned long st_ctime; + unsigned long st_ctime_nsec; /* will be high 32 bits of ctime someday */ + unsigned long long st_ino; +}; + +#else + +struct vki_stat { + unsigned long st_dev; + unsigned long st_ino; + unsigned long st_nlink; + unsigned int st_mode; + unsigned int st_uid; + unsigned int st_gid; + unsigned int __pad1; + unsigned long st_rdev; + unsigned long st_size; + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; + unsigned long st_mtime_nsec; + unsigned long st_ctime; + unsigned long st_ctime_nsec; + unsigned long st_blksize; + long st_blocks; + unsigned long __unused[3]; +}; + +#endif /* VGA_s390x */ + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/statfs.h +//---------------------------------------------------------------------- + +struct vki_statfs { + int f_type; + int f_bsize; + long f_blocks; + long f_bfree; + long f_bavail; + long f_files; + long f_ffree; + __vki_kernel_fsid_t f_fsid; + int f_namelen; + int f_frsize; + int f_spare[5]; +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/termios.h +//---------------------------------------------------------------------- + +struct vki_winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#define VKI_NCC 8 +struct vki_termio { + unsigned short c_iflag; /* input mode flags */ + unsigned short c_oflag; /* output mode flags */ + unsigned short c_cflag; /* control mode flags */ + unsigned short c_lflag; /* local mode flags */ + unsigned char c_line; /* line discipline */ + unsigned char c_cc[VKI_NCC]; /* control characters */ +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/termbits.h +//---------------------------------------------------------------------- + +typedef unsigned char vki_cc_t; +typedef unsigned int vki_tcflag_t; + +#define VKI_NCCS 19 +struct vki_termios { + vki_tcflag_t c_iflag; /* input mode flags */ + vki_tcflag_t c_oflag; /* output mode flags */ + vki_tcflag_t c_cflag; /* control mode flags */ + vki_tcflag_t c_lflag; /* local mode flags */ + vki_cc_t c_line; /* line discipline */ + vki_cc_t c_cc[VKI_NCCS]; /* control characters */ +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ioctl.h +//---------------------------------------------------------------------- + +#define _VKI_IOC_NRBITS 8 +#define _VKI_IOC_TYPEBITS 8 +#define _VKI_IOC_SIZEBITS 14 +#define _VKI_IOC_DIRBITS 2 + +#define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1) +#define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1) +#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) +#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) + +#define _VKI_IOC_NRSHIFT 0 +#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) +#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) +#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) + +#define _VKI_IOC_NONE 0U +#define _VKI_IOC_WRITE 1U +#define _VKI_IOC_READ 2U + +#define _VKI_IOC(dir,type,nr,size) \ + (((dir) << _VKI_IOC_DIRSHIFT) | \ + ((type) << _VKI_IOC_TYPESHIFT) | \ + ((nr) << _VKI_IOC_NRSHIFT) | \ + ((size) << _VKI_IOC_SIZESHIFT)) + +/* used to create numbers */ +#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) +#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size))) +#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) +#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) + +/* used to decode ioctl numbers.. */ +#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) +#define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK) +#define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK) +#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ioctls.h +//---------------------------------------------------------------------- + +/* 0x54 is just a magic number to make these relatively unique ('T') */ + +#define VKI_TCGETS 0x5401 +#define VKI_TCSETS 0x5402 +#define VKI_TCSETSW 0x5403 +#define VKI_TCSETSF 0x5404 +#define VKI_TCGETA 0x5405 +#define VKI_TCSETA 0x5406 +#define VKI_TCSETAW 0x5407 +#define VKI_TCSETAF 0x5408 +#define VKI_TCSBRK 0x5409 +#define VKI_TCXONC 0x540A +#define VKI_TCFLSH 0x540B + +#define VKI_TIOCSCTTY 0x540E +#define VKI_TIOCGPGRP 0x540F +#define VKI_TIOCSPGRP 0x5410 +#define VKI_TIOCOUTQ 0x5411 + +#define VKI_TIOCGWINSZ 0x5413 +#define VKI_TIOCSWINSZ 0x5414 +#define VKI_TIOCMGET 0x5415 +#define VKI_TIOCMBIS 0x5416 +#define VKI_TIOCMBIC 0x5417 +#define VKI_TIOCMSET 0x5418 + +#define VKI_FIONREAD 0x541B +#define VKI_TIOCLINUX 0x541C + +#define VKI_FIONBIO 0x5421 + +#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ + +#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ +#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ + +#define VKI_FIOASYNC 0x5452 + +#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ + +#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/poll.h +//---------------------------------------------------------------------- + +struct vki_pollfd { + int fd; + short events; + short revents; +}; + +#define VKI_POLLIN 0x0001 + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ptrace.h +//---------------------------------------------------------------------- +#define VKI_NUM_GPRS 16 +#define VKI_NUM_FPRS 16 +#define VKI_NUM_CRS 16 +#define VKI_NUM_ACRS 16 + +typedef union +{ + float f; + double d; + __vki_u64 ui; + struct + { + __vki_u32 hi; + __vki_u32 lo; + } fp; +} vki_freg_t; + +typedef struct +{ + __vki_u32 fpc; + vki_freg_t fprs[VKI_NUM_FPRS]; +} vki_s390_fp_regs; + +typedef struct +{ + unsigned long mask; + unsigned long addr; +} __attribute__ ((aligned(8))) vki_psw_t; + +typedef struct +{ + vki_psw_t psw; + unsigned long gprs[VKI_NUM_GPRS]; + unsigned int acrs[VKI_NUM_ACRS]; + unsigned long orig_gpr2; +} vki_s390_regs; + +/* + * Now for the program event recording (trace) definitions. + */ +typedef struct +{ + unsigned long cr[3]; +} vki_per_cr_words; + +typedef struct +{ +#ifdef VGA_s390x + unsigned : 32; +#endif /* VGA_s390x */ + unsigned em_branching : 1; + unsigned em_instruction_fetch : 1; + /* + * Switching on storage alteration automatically fixes + * the storage alteration event bit in the users std. + */ + unsigned em_storage_alteration : 1; + unsigned em_gpr_alt_unused : 1; + unsigned em_store_real_address : 1; + unsigned : 3; + unsigned branch_addr_ctl : 1; + unsigned : 1; + unsigned storage_alt_space_ctl : 1; + unsigned : 21; + unsigned long starting_addr; + unsigned long ending_addr; +} vki_per_cr_bits; + +typedef struct +{ + unsigned short perc_atmid; + unsigned long address; + unsigned char access_id; +} vki_per_lowcore_words; + +typedef struct +{ + unsigned perc_branching : 1; + unsigned perc_instruction_fetch : 1; + unsigned perc_storage_alteration : 1; + unsigned perc_gpr_alt_unused : 1; + unsigned perc_store_real_address : 1; + unsigned : 3; + unsigned atmid_psw_bit_31 : 1; + unsigned atmid_validity_bit : 1; + unsigned atmid_psw_bit_32 : 1; + unsigned atmid_psw_bit_5 : 1; + unsigned atmid_psw_bit_16 : 1; + unsigned atmid_psw_bit_17 : 1; + unsigned si : 2; + unsigned long address; + unsigned : 4; + unsigned access_id : 4; +} vki_per_lowcore_bits; + +typedef struct +{ + union { + vki_per_cr_words words; + vki_per_cr_bits bits; + } control_regs; + /* + * Use these flags instead of setting em_instruction_fetch + * directly they are used so that single stepping can be + * switched on & off while not affecting other tracing + */ + unsigned single_step : 1; + unsigned instruction_fetch : 1; + unsigned : 30; + /* + * These addresses are copied into cr10 & cr11 if single + * stepping is switched off + */ + unsigned long starting_addr; + unsigned long ending_addr; + union { + vki_per_lowcore_words words; + vki_per_lowcore_bits bits; + } lowcore; +} vki_per_struct; + +/* + * The user_regs_struct defines the way the user registers are + * store on the stack for signal handling. + */ +struct vki_user_regs_struct +{ + vki_psw_t psw; + unsigned long gprs[VKI_NUM_GPRS]; + unsigned int acrs[VKI_NUM_ACRS]; + unsigned long orig_gpr2; + vki_s390_fp_regs fp_regs; + /* + * These per registers are in here so that gdb can modify them + * itself as there is no "official" ptrace interface for hardware + * watchpoints. This is the way intel does it. + */ + vki_per_struct per_info; + unsigned long ieee_instruction_pointer; + /* Used to give failing instruction back to user for ieee exceptions */ +}; + +typedef struct +{ + unsigned int vki_len; + unsigned long vki_kernel_addr; + unsigned long vki_process_addr; +} vki_ptrace_area; + +/* + * S/390 specific non posix ptrace requests + */ +#define VKI_PTRACE_PEEKUSR_AREA 0x5000 +#define VKI_PTRACE_POKEUSR_AREA 0x5001 + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/elf.h +//---------------------------------------------------------------------- + +typedef vki_s390_fp_regs vki_elf_fpregset_t; +typedef vki_s390_regs vki_elf_gregset_t; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ucontext.h +//---------------------------------------------------------------------- + +struct vki_ucontext { + unsigned long uc_flags; + struct vki_ucontext *uc_link; + vki_stack_t uc_stack; + _vki_sigregs uc_mcontext; + vki_sigset_t uc_sigmask; /* mask last for extensibility */ +}; + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ipcbuf.h +//---------------------------------------------------------------------- + +struct vki_ipc64_perm +{ + __vki_kernel_key_t key; + __vki_kernel_uid32_t uid; + __vki_kernel_gid32_t gid; + __vki_kernel_uid32_t cuid; + __vki_kernel_gid32_t cgid; + __vki_kernel_mode_t mode; + unsigned short __pad1; + unsigned short seq; +#ifndef VGA_s390x + unsigned short __pad2; +#endif /* ! VGA_s390x */ + unsigned long __unused1; + unsigned long __unused2; +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/sembuf.h +//---------------------------------------------------------------------- + +struct vki_semid64_ds { + struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ + __vki_kernel_time_t sem_otime; /* last semop time */ +#ifndef VGA_s390x + unsigned long __unused1; +#endif /* ! VGA_s390x */ + __vki_kernel_time_t sem_ctime; /* last change time */ +#ifndef VGA_s390x + unsigned long __unused2; +#endif /* ! VGA_s390x */ + unsigned long sem_nsems; /* no. of semaphores in array */ + unsigned long __unused3; + unsigned long __unused4; +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/msgbuf.h +//---------------------------------------------------------------------- + +struct vki_msqid64_ds { + struct vki_ipc64_perm msg_perm; + __vki_kernel_time_t msg_stime; /* last msgsnd time */ +#ifndef VGA_s390x + unsigned long __unused1; +#endif /* ! VGA_s390x */ + __vki_kernel_time_t msg_rtime; /* last msgrcv time */ +#ifndef VGA_s390x + unsigned long __unused2; +#endif /* ! VGA_s390x */ + __vki_kernel_time_t msg_ctime; /* last change time */ +#ifndef VGA_s390x + unsigned long __unused3; +#endif /* ! VGA_s390x */ + unsigned long msg_cbytes; /* current number of bytes on queue */ + unsigned long msg_qnum; /* number of messages in queue */ + unsigned long msg_qbytes; /* max number of bytes on queue */ + __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ + __vki_kernel_pid_t msg_lrpid; /* last receive pid */ + unsigned long __unused4; + unsigned long __unused5; +}; + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/ipc.h +//---------------------------------------------------------------------- + +struct vki_ipc_kludge { + struct vki_msgbuf __user *msgp; + long msgtyp; +}; + +#define VKI_SEMOP 1 +#define VKI_SEMGET 2 +#define VKI_SEMCTL 3 +#define VKI_SEMTIMEDOP 4 +#define VKI_MSGSND 11 +#define VKI_MSGRCV 12 +#define VKI_MSGGET 13 +#define VKI_MSGCTL 14 +#define VKI_SHMAT 21 +#define VKI_SHMDT 22 +#define VKI_SHMGET 23 +#define VKI_SHMCTL 24 + + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/shmbuf.h +//---------------------------------------------------------------------- + +struct vki_shmid64_ds { + struct vki_ipc64_perm shm_perm; /* operation perms */ + vki_size_t shm_segsz; /* size of segment (bytes) */ + __vki_kernel_time_t shm_atime; /* last attach time */ +#ifndef VGA_s390x + unsigned long __unused1; +#endif /* ! VGA_s390x */ + __vki_kernel_time_t shm_dtime; /* last detach time */ +#ifndef VGA_s390x + unsigned long __unused2; +#endif /* ! VGA_s390x */ + __vki_kernel_time_t shm_ctime; /* last change time */ +#ifndef VGA_s390x + unsigned long __unused3; +#endif /* ! VGA_s390x */ + __vki_kernel_pid_t shm_cpid; /* pid of creator */ + __vki_kernel_pid_t shm_lpid; /* pid of last operator */ + unsigned long shm_nattch; /* no. of current attaches */ + unsigned long __unused4; + unsigned long __unused5; +}; + +struct vki_shminfo64 { + unsigned long shmmax; + unsigned long shmmin; + unsigned long shmmni; + unsigned long shmseg; + unsigned long shmall; + unsigned long __unused1; + unsigned long __unused2; + unsigned long __unused3; + unsigned long __unused4; +}; + + +//---------------------------------------------------------------------- +// The following are defined in the VKI namespace but are nowhere found +// in the linux headers. +//---------------------------------------------------------------------- +#define VKI_BIG_ENDIAN 1 +#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT +#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE + +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/s390x/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + +/* If a system call returns a value >= VKI_MAX_ERRNO then that is considered + an error condition. I.e. the system call failed. */ +#define VKI_MAX_ERRNO -125 + +#endif // __VKI_S390X_LINUX_H + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-arm-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-arm-linux.h index 24f28054b..630089700 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-arm-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-arm-linux.h @@ -371,7 +371,7 @@ #define __NR_fchmodat 333 #define __NR_faccessat 334 #define __NR_pselect6 335 /* JRS 20100812: is this correct? */ - /* 336 for ppoll */ +#define __NR_ppoll 336 #define __NR_unshare 337 #define __NR_set_robust_list 338 #define __NR_get_robust_list 339 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-s390x-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-s390x-linux.h new file mode 100644 index 000000000..949157861 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-s390x-linux.h @@ -0,0 +1,447 @@ + +/*--------------------------------------------------------------------*/ +/*--- System call numbers for s390x-linux. ---*/ +/*--- vki-scnums-s390x-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright IBM Corp. 2010-2011 + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Contributed by Florian Krohm and Christian Borntraeger. */ + +#ifndef __VKI_SCNUMS_S390X_LINUX_H +#define __VKI_SCNUMS_S390X_LINUX_H + +//---------------------------------------------------------------------- +// From linux-2.6.16.60/include/asm-s390/unistd.h +//---------------------------------------------------------------------- + + +#define __NR_exit 1 +#define __NR_fork 2 +#define __NR_read 3 +#define __NR_write 4 +#define __NR_open 5 +#define __NR_close 6 +#define __NR_restart_syscall 7 +#define __NR_creat 8 +#define __NR_link 9 +#define __NR_unlink 10 +#define __NR_execve 11 +#define __NR_chdir 12 +#define __NR_time 13 +#define __NR_mknod 14 +#define __NR_chmod 15 +#define __NR_lchown 16 +#define __NR_lseek 19 +#define __NR_getpid 20 +#define __NR_mount 21 +#define __NR_umount 22 +#define __NR_setuid 23 +#define __NR_getuid 24 +#define __NR_stime 25 +#define __NR_ptrace 26 +#define __NR_alarm 27 +#define __NR_pause 29 +#define __NR_utime 30 +#define __NR_access 33 +#define __NR_nice 34 +#define __NR_sync 36 +#define __NR_kill 37 +#define __NR_rename 38 +#define __NR_mkdir 39 +#define __NR_rmdir 40 +#define __NR_dup 41 +#define __NR_pipe 42 +#define __NR_times 43 +#define __NR_brk 45 +#define __NR_setgid 46 +#define __NR_getgid 47 +#define __NR_signal 48 +#define __NR_geteuid 49 +#define __NR_getegid 50 +#define __NR_acct 51 +#define __NR_umount2 52 +#define __NR_ioctl 54 +#define __NR_fcntl 55 +#define __NR_setpgid 57 +#define __NR_umask 60 +#define __NR_chroot 61 +#define __NR_ustat 62 +#define __NR_dup2 63 +#define __NR_getppid 64 +#define __NR_getpgrp 65 +#define __NR_setsid 66 +#define __NR_sigaction 67 +#define __NR_setreuid 70 +#define __NR_setregid 71 +#define __NR_sigsuspend 72 +#define __NR_sigpending 73 +#define __NR_sethostname 74 +#define __NR_setrlimit 75 +#define __NR_getrlimit 76 +#define __NR_getrusage 77 +#define __NR_gettimeofday 78 +#define __NR_settimeofday 79 +#define __NR_getgroups 80 +#define __NR_setgroups 81 +#define __NR_symlink 83 +#define __NR_readlink 85 +#define __NR_uselib 86 +#define __NR_swapon 87 +#define __NR_reboot 88 +#define __NR_readdir 89 +#define __NR_mmap 90 +#define __NR_munmap 91 +#define __NR_truncate 92 +#define __NR_ftruncate 93 +#define __NR_fchmod 94 +#define __NR_fchown 95 +#define __NR_getpriority 96 +#define __NR_setpriority 97 +#define __NR_statfs 99 +#define __NR_fstatfs 100 +#define __NR_ioperm 101 +#define __NR_socketcall 102 +#define __NR_syslog 103 +#define __NR_setitimer 104 +#define __NR_getitimer 105 +#define __NR_stat 106 +#define __NR_lstat 107 +#define __NR_fstat 108 +#define __NR_lookup_dcookie 110 +#define __NR_vhangup 111 +#define __NR_idle 112 +#define __NR_wait4 114 +#define __NR_swapoff 115 +#define __NR_sysinfo 116 +#define __NR_ipc 117 +#define __NR_fsync 118 +#define __NR_sigreturn 119 +#define __NR_clone 120 +#define __NR_setdomainname 121 +#define __NR_uname 122 +#define __NR_adjtimex 124 +#define __NR_mprotect 125 +#define __NR_sigprocmask 126 +#define __NR_create_module 127 +#define __NR_init_module 128 +#define __NR_delete_module 129 +#define __NR_get_kernel_syms 130 +#define __NR_quotactl 131 +#define __NR_getpgid 132 +#define __NR_fchdir 133 +#define __NR_bdflush 134 +#define __NR_sysfs 135 +#define __NR_personality 136 +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */ +#define __NR_setfsuid 138 +#define __NR_setfsgid 139 +#define __NR__llseek 140 +#define __NR_getdents 141 +#define __NR__newselect 142 +#define __NR_flock 143 +#define __NR_msync 144 +#define __NR_readv 145 +#define __NR_writev 146 +#define __NR_getsid 147 +#define __NR_fdatasync 148 +#define __NR__sysctl 149 +#define __NR_mlock 150 +#define __NR_munlock 151 +#define __NR_mlockall 152 +#define __NR_munlockall 153 +#define __NR_sched_setparam 154 +#define __NR_sched_getparam 155 +#define __NR_sched_setscheduler 156 +#define __NR_sched_getscheduler 157 +#define __NR_sched_yield 158 +#define __NR_sched_get_priority_max 159 +#define __NR_sched_get_priority_min 160 +#define __NR_sched_rr_get_interval 161 +#define __NR_nanosleep 162 +#define __NR_mremap 163 +#define __NR_setresuid 164 +#define __NR_getresuid 165 +#define __NR_query_module 167 +#define __NR_poll 168 +#define __NR_nfsservctl 169 +#define __NR_setresgid 170 +#define __NR_getresgid 171 +#define __NR_prctl 172 +#define __NR_rt_sigreturn 173 +#define __NR_rt_sigaction 174 +#define __NR_rt_sigprocmask 175 +#define __NR_rt_sigpending 176 +#define __NR_rt_sigtimedwait 177 +#define __NR_rt_sigqueueinfo 178 +#define __NR_rt_sigsuspend 179 +#define __NR_pread64 180 +#define __NR_pwrite64 181 +#define __NR_chown 182 +#define __NR_getcwd 183 +#define __NR_capget 184 +#define __NR_capset 185 +#define __NR_sigaltstack 186 +#define __NR_sendfile 187 +#define __NR_getpmsg 188 +#define __NR_putpmsg 189 +#define __NR_vfork 190 +#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ +#define __NR_mmap2 192 +#define __NR_truncate64 193 +#define __NR_ftruncate64 194 +#define __NR_stat64 195 +#define __NR_lstat64 196 +#define __NR_fstat64 197 +#define __NR_lchown32 198 +#define __NR_getuid32 199 +#define __NR_getgid32 200 +#define __NR_geteuid32 201 +#define __NR_getegid32 202 +#define __NR_setreuid32 203 +#define __NR_setregid32 204 +#define __NR_getgroups32 205 +#define __NR_setgroups32 206 +#define __NR_fchown32 207 +#define __NR_setresuid32 208 +#define __NR_getresuid32 209 +#define __NR_setresgid32 210 +#define __NR_getresgid32 211 +#define __NR_chown32 212 +#define __NR_setuid32 213 +#define __NR_setgid32 214 +#define __NR_setfsuid32 215 +#define __NR_setfsgid32 216 +#define __NR_pivot_root 217 +#define __NR_mincore 218 +#define __NR_madvise 219 +#define __NR_getdents64 220 +#define __NR_fcntl64 221 +#define __NR_readahead 222 +#define __NR_sendfile64 223 +#define __NR_setxattr 224 +#define __NR_lsetxattr 225 +#define __NR_fsetxattr 226 +#define __NR_getxattr 227 +#define __NR_lgetxattr 228 +#define __NR_fgetxattr 229 +#define __NR_listxattr 230 +#define __NR_llistxattr 231 +#define __NR_flistxattr 232 +#define __NR_removexattr 233 +#define __NR_lremovexattr 234 +#define __NR_fremovexattr 235 +#define __NR_gettid 236 +#define __NR_tkill 237 +#define __NR_futex 238 +#define __NR_sched_setaffinity 239 +#define __NR_sched_getaffinity 240 +#define __NR_tgkill 241 +/* Number 242 is reserved for tux */ +#define __NR_io_setup 243 +#define __NR_io_destroy 244 +#define __NR_io_getevents 245 +#define __NR_io_submit 246 +#define __NR_io_cancel 247 +#define __NR_exit_group 248 +#define __NR_epoll_create 249 +#define __NR_epoll_ctl 250 +#define __NR_epoll_wait 251 +#define __NR_set_tid_address 252 +#define __NR_fadvise64 253 +#define __NR_timer_create 254 +#define __NR_timer_settime (__NR_timer_create+1) +#define __NR_timer_gettime (__NR_timer_create+2) +#define __NR_timer_getoverrun (__NR_timer_create+3) +#define __NR_timer_delete (__NR_timer_create+4) +#define __NR_clock_settime (__NR_timer_create+5) +#define __NR_clock_gettime (__NR_timer_create+6) +#define __NR_clock_getres (__NR_timer_create+7) +#define __NR_clock_nanosleep (__NR_timer_create+8) +/* Number 263 is reserved for vserver */ +#define __NR_fadvise64_64 264 +#define __NR_statfs64 265 +#define __NR_fstatfs64 266 +#define __NR_remap_file_pages 267 +/* Number 268 is reserved for new sys_mbind */ +/* Number 269 is reserved for new sys_get_mempolicy */ +/* Number 270 is reserved for new sys_set_mempolicy */ +#define __NR_mq_open 271 +#define __NR_mq_unlink 272 +#define __NR_mq_timedsend 273 +#define __NR_mq_timedreceive 274 +#define __NR_mq_notify 275 +#define __NR_mq_getsetattr 276 +#define __NR_kexec_load 277 +#define __NR_add_key 278 +#define __NR_request_key 279 +#define __NR_keyctl 280 +#define __NR_waitid 281 +#define __NR_ioprio_set 282 +#define __NR_ioprio_get 283 +#define __NR_inotify_init 284 +#define __NR_inotify_add_watch 285 +#define __NR_inotify_rm_watch 286 +/* Number 287 is reserved for new sys_migrate_pages */ +#define __NR_openat 288 +#define __NR_mkdirat 289 +#define __NR_mknodat 290 +#define __NR_fchownat 291 +#define __NR_futimesat 292 +#define __NR_fstatat64 293 +#define __NR_unlinkat 294 +#define __NR_renameat 295 +#define __NR_linkat 296 +#define __NR_symlinkat 297 +#define __NR_readlinkat 298 +#define __NR_fchmodat 299 +#define __NR_faccessat 300 +#define __NR_pselect6 301 +#define __NR_ppoll 302 +#define __NR_unshare 303 +/* the following system calls from 2.6.32 unistd.h*/ +#define __NR_set_robust_list 304 +#define __NR_get_robust_list 305 +#define __NR_splice 306 +#define __NR_sync_file_range 307 +#define __NR_tee 308 +#define __NR_vmsplice 309 +/* Number 310 is reserved for new sys_move_pages */ +#define __NR_getcpu 311 +#define __NR_epoll_pwait 312 +#define __NR_utimes 313 +#define __NR_fallocate 314 +#define __NR_utimensat 315 +#define __NR_signalfd 316 +#define __NR_timerfd 317 +#define __NR_eventfd 318 +#define __NR_timerfd_create 319 +#define __NR_timerfd_settime 320 +#define __NR_timerfd_gettime 321 +#define __NR_signalfd4 322 +#define __NR_eventfd2 323 +#define __NR_inotify_init1 324 +#define __NR_pipe2 325 +#define __NR_dup3 326 +#define __NR_epoll_create1 327 +#define __NR_preadv 328 +#define __NR_pwritev 329 +#define __NR_rt_tgsigqueueinfo 330 +#define __NR_perf_event_open 331 + +#define NR_syscalls 332 + +/* + * There are some system calls that are not present on 64 bit, some + * have a different name although they do the same (e.g. __NR_chown32 + * is __NR_chown on 64 bit). + */ +#ifdef VGA_s390x +#undef __NR_time +#undef __NR_lchown +#undef __NR_setuid +#undef __NR_getuid +#undef __NR_stime +#undef __NR_setgid +#undef __NR_getgid +#undef __NR_geteuid +#undef __NR_getegid +#undef __NR_setreuid +#undef __NR_setregid +#undef __NR_getrlimit +#undef __NR_getgroups +#undef __NR_setgroups +#undef __NR_fchown +#undef __NR_ioperm +#undef __NR_setfsuid +#undef __NR_setfsgid +#undef __NR__llseek +#undef __NR__newselect +#undef __NR_setresuid +#undef __NR_getresuid +#undef __NR_setresgid +#undef __NR_getresgid +#undef __NR_chown +#undef __NR_ugetrlimit +#undef __NR_mmap2 +#undef __NR_truncate64 +#undef __NR_ftruncate64 +#undef __NR_stat64 +#undef __NR_lstat64 +#undef __NR_fstat64 +#undef __NR_lchown32 +#undef __NR_getuid32 +#undef __NR_getgid32 +#undef __NR_geteuid32 +#undef __NR_getegid32 +#undef __NR_setreuid32 +#undef __NR_setregid32 +#undef __NR_getgroups32 +#undef __NR_setgroups32 +#undef __NR_fchown32 +#undef __NR_setresuid32 +#undef __NR_getresuid32 +#undef __NR_setresgid32 +#undef __NR_getresgid32 +#undef __NR_chown32 +#undef __NR_setuid32 +#undef __NR_setgid32 +#undef __NR_setfsuid32 +#undef __NR_setfsgid32 +#undef __NR_fcntl64 +#undef __NR_sendfile64 +#undef __NR_fadvise64_64 +#undef __NR_fstatat64 + +#define __NR_select 142 +#define __NR_getrlimit 191 /* SuS compliant getrlimit */ +#define __NR_lchown 198 +#define __NR_getuid 199 +#define __NR_getgid 200 +#define __NR_geteuid 201 +#define __NR_getegid 202 +#define __NR_setreuid 203 +#define __NR_setregid 204 +#define __NR_getgroups 205 +#define __NR_setgroups 206 +#define __NR_fchown 207 +#define __NR_setresuid 208 +#define __NR_getresuid 209 +#define __NR_setresgid 210 +#define __NR_getresgid 211 +#define __NR_chown 212 +#define __NR_setuid 213 +#define __NR_setgid 214 +#define __NR_setfsuid 215 +#define __NR_setfsgid 216 +#define __NR_newfstatat 293 + +#endif + +#endif /* __VKI_SCNUMS_S390X_LINUX_H */ + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-x86-l4re.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-x86-l4re.h index 59cec6cbc..b8d6706fd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-x86-l4re.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-scnums-x86-l4re.h @@ -8,7 +8,7 @@ This file is part of Valgrind, a dynamic binary instrumentation framework. - Copyright (C) 2000-2009 Julian Seward + Copyright (C) 2000-2010 Julian Seward jseward@acm.org This program is free software; you can redistribute it and/or diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-l4re.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-l4re.h index 1b5f4e751..76572f068 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-l4re.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-l4re.h @@ -7,7 +7,7 @@ This file is part of Valgrind, a dynamic binary instrumentation framework. - Copyright (C) 2000-2009 Julian Seward + Copyright (C) 2000-2010 Julian Seward jseward@acm.org This program is free software; you can redistribute it and/or @@ -63,6 +63,12 @@ typedef unsigned int vki_u32; #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/signal.h //---------------------------------------------------------------------- @@ -483,11 +489,10 @@ struct vki_termios { ((size) << _VKI_IOC_SIZESHIFT)) /* provoke compile error for invalid uses of size argument */ -#define _VKI_IOC_TYPECHECK(t) \ - ((sizeof(t) == sizeof(t[1]) && \ - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \ - ? sizeof(t) \ - : /*cause gcc to complain about division by zero*/(1/0) ) +#define _VKI_IOC_TYPECHECK(t) \ + (VKI_STATIC_ASSERT((sizeof(t) == sizeof(t[1]) \ + && sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) \ + + sizeof(t)) /* used to create numbers */ #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-linux.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-linux.h index 0d5052946..8f8aec8f3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-linux.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-x86-linux.h @@ -63,6 +63,12 @@ typedef unsigned int vki_u32; #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE +//---------------------------------------------------------------------- +// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA VKI_PAGE_SIZE + //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/signal.h //---------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/Makefile.in index 7c7f54f54..821e6edbd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/Makefile.in @@ -165,6 +165,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -194,12 +196,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -353,7 +350,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -382,6 +379,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -410,6 +412,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -462,6 +465,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -525,6 +531,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -567,6 +576,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/lk-manual.xml LACKEY_SOURCES_COMMON = lk_main.c lackey_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/lk_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/lk_main.c index 35e3599f2..e57860418 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/lk_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/lk_main.c @@ -314,7 +314,8 @@ static Int type2index ( IRType ty ) case Ity_I128: return 5; case Ity_F32: return 6; case Ity_F64: return 7; - case Ity_V128: return 8; + case Ity_F128: return 8; + case Ity_V128: return 9; default: tl_assert(0); } } @@ -330,7 +331,8 @@ static HChar* nameOfTypeIndex ( Int i ) case 5: return "I128"; break; case 6: return "F32"; break; case 7: return "F64"; break; - case 8: return "V128"; break; + case 8: return "F128"; break; + case 9: return "V128"; break; default: tl_assert(0); } } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/tests/Makefile.in index 9c0dd75b1..13b9a2711 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/lackey/tests/Makefile.in @@ -91,6 +91,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -120,12 +122,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/Makefile.in index fc8c022a0..3bc647513 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/Makefile.in @@ -214,6 +214,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -243,12 +245,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -402,7 +399,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -431,6 +428,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -459,6 +461,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -511,6 +514,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -574,6 +580,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -616,6 +625,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = \ docs/ms-manual.xml \ docs/ms_print-manpage.xml diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/docs/ms-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/docs/ms-manual.xml index 9e318c51f..1389eb924 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/docs/ms-manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/docs/ms-manual.xml @@ -688,6 +688,17 @@ in a particular column, which makes following the allocation chains easier. + + + + + + Tells Massif to profile memory at the page level rather + than at the malloc'd block level. See above for details. + + + + @@ -847,6 +858,27 @@ in a particular column, which makes following the allocation chains easier. + +Massif Monitor Commands +The Massif tool provides monitor commands handled by the Valgrind +gdbserver (see ). + + + + + ms.snapshot [<filename>] requests + to take a snapshot and save it in the given <filename> + (default massif.vgdb.out). + + + + ms.detailed_snapshot [<filename>] + requests to take a detailed snapshot and save it in the given + <filename> (default massif.vgdb.out). + + + + Massif Client Requests diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/ms_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/ms_main.c index c34d27b80..7dcc3dd49 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/ms_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/ms_main.c @@ -180,6 +180,7 @@ Number of snapshots: 50 #include "pub_tool_tooliface.h" #include "pub_tool_xarray.h" #include "pub_tool_clientstate.h" +#include "pub_tool_gdbserver.h" #include "valgrind.h" // For {MALLOC,FREE}LIKE_BLOCK @@ -455,7 +456,7 @@ static Bool ms_process_cmd_line_option(Char* arg) else if VG_XACT_CLO(arg, "--time-unit=ms", clo_time_unit, TimeMS) {} else if VG_XACT_CLO(arg, "--time-unit=B", clo_time_unit, TimeB) {} - else if VG_BINT_CLO(arg, "--detailed-freq", clo_detailed_freq, 1, 10000) {} + else if VG_BINT_CLO(arg, "--detailed-freq", clo_detailed_freq, 1, 1000000) {} else if VG_BINT_CLO(arg, "--max-snapshots", clo_max_snapshots, 10, 1000) {} @@ -1977,6 +1978,22 @@ static void die_mem_stack_signal(Addr a, SizeT len) //--- Client Requests ---// //------------------------------------------------------------// +static void print_monitor_help ( void ) +{ + VG_(gdb_printf) ("\n"); + VG_(gdb_printf) ("massif monitor commands:\n"); + VG_(gdb_printf) (" ms.snapshot []\n"); + VG_(gdb_printf) (" ms.detailed_snapshot []\n"); + VG_(gdb_printf) (" takes a snapshot (or a detailed snapshot)\n"); + VG_(gdb_printf) (" and saves it in \n"); + VG_(gdb_printf) (" default is massif.vgdb.out\n"); + VG_(gdb_printf) ("\n"); +} + + +/* Forward declaration. + return True if request recognised, False otherwise */ +static Bool handle_gdb_monitor_command (ThreadId tid, Char *req); static Bool ms_handle_client_request ( ThreadId tid, UWord* argv, UWord* ret ) { switch (argv[0]) { @@ -1988,12 +2005,30 @@ static Bool ms_handle_client_request ( ThreadId tid, UWord* argv, UWord* ret ) *ret = 0; return True; } + case VG_USERREQ__RESIZEINPLACE_BLOCK: { + void* p = (void*)argv[1]; + SizeT newSizeB = argv[3]; + + unrecord_block(p, /*maybe_snapshot*/True); + record_block(tid, p, newSizeB, /*slop_szB*/0, + /*exclude_first_entry*/False, /*maybe_snapshot*/True); + return True; + } case VG_USERREQ__FREELIKE_BLOCK: { void* p = (void*)argv[1]; unrecord_block(p, /*maybe_snapshot*/True); *ret = 0; return True; } + case VG_USERREQ__GDB_MONITOR_COMMAND: { + Bool handled = handle_gdb_monitor_command (tid, (Char*)argv[1]); + if (handled) + *ret = 1; + else + *ret = 0; + return handled; + } + default: *ret = 0; return False; @@ -2106,14 +2141,11 @@ Char FP_buf[BUF_LEN]; }) // Nb: uses a static buffer, each call trashes the last string returned. -static Char* make_perc(ULong x, ULong y) +static Char* make_perc(double x) { static Char mbuf[32]; -// tl_assert(x <= y); XXX; put back in later... - - // XXX: I'm not confident that VG_(percentify) works as it should... - VG_(percentify)(x, y, 2, 6, mbuf); + VG_(percentify)((ULong)(x * 100), 10000, 2, 6, mbuf); // XXX: this is bogus if the denominator was zero -- resulting string is // something like "0 --%") if (' ' == mbuf[0]) mbuf[0] = '0'; @@ -2239,7 +2271,7 @@ static void pp_snapshot_SXPt(Int fd, SXPt* sxpt, Int depth, Char* depth_str, Char* s = ( 1 == sxpt->Insig.n_xpts ? "," : "s, all" ); FP("%sn0: %lu in %d place%s below massif's threshold (%s)\n", depth_str, sxpt->szB, sxpt->Insig.n_xpts, s, - make_perc((ULong)clo_threshold, 100)); + make_perc(clo_threshold)); break; } @@ -2281,19 +2313,13 @@ static void pp_snapshot(Int fd, Snapshot* snapshot, Int snapshot_n) } } -static void write_snapshots_to_file(void) +static void write_snapshots_to_file(Char* massif_out_file, + Snapshot snapshots_array[], + Int nr_elements) { Int i, fd; SysRes sres; - // Setup output filename. Nb: it's important to do this now, ie. as late - // as possible. If we do it at start-up and the program forks and the - // output file format string contains a %p (pid) specifier, both the - // parent and child will incorrectly write to the same file; this - // happened in 3.3.0. - Char* massif_out_file = - VG_(expand_file_name)("--massif-out-file", clo_massif_out_file); - sres = VG_(open)(massif_out_file, VKI_O_CREAT|VKI_O_TRUNC|VKI_O_WRONLY, VKI_S_IRUSR|VKI_S_IWUSR); if (sr_isError(sres)) { @@ -2301,11 +2327,9 @@ static void write_snapshots_to_file(void) // between multiple cachegrinded processes?), give up now. VG_(umsg)("error: can't open output file '%s'\n", massif_out_file ); VG_(umsg)(" ... so profiling results will be missing.\n"); - VG_(free)(massif_out_file); return; } else { fd = sr_Res(sres); - VG_(free)(massif_out_file); } // Print massif-specific options that were used. @@ -2336,12 +2360,73 @@ static void write_snapshots_to_file(void) FP("time_unit: %s\n", TimeUnit_to_string(clo_time_unit)); - for (i = 0; i < next_snapshot_i; i++) { - Snapshot* snapshot = & snapshots[i]; + for (i = 0; i < nr_elements; i++) { + Snapshot* snapshot = & snapshots_array[i]; pp_snapshot(fd, snapshot, i); // Detailed snapshot! } + VG_(close) (fd); +} + +static void write_snapshots_array_to_file(void) +{ + // Setup output filename. Nb: it's important to do this now, ie. as late + // as possible. If we do it at start-up and the program forks and the + // output file format string contains a %p (pid) specifier, both the + // parent and child will incorrectly write to the same file; this + // happened in 3.3.0. + Char* massif_out_file = + VG_(expand_file_name)("--massif-out-file", clo_massif_out_file); + write_snapshots_to_file (massif_out_file, snapshots, next_snapshot_i); + VG_(free)(massif_out_file); } +static void handle_snapshot_monitor_command (Char *filename, Bool detailed) +{ + Snapshot snapshot; + + clear_snapshot(&snapshot, /* do_sanity_check */ False); + take_snapshot(&snapshot, Normal, get_time(), detailed); + write_snapshots_to_file ((filename == NULL) ? (Char*) "massif.vgdb.out" : filename, + &snapshot, + 1); + delete_snapshot(&snapshot); +} + +static Bool handle_gdb_monitor_command (ThreadId tid, Char *req) +{ + Char* wcmd; + Char s[VG_(strlen(req))]; /* copy for strtok_r */ + Char *ssaveptr; + + VG_(strcpy) (s, req); + + wcmd = VG_(strtok_r) (s, " ", &ssaveptr); + switch (VG_(keyword_id) ("help ms.snapshot ms.detailed_snapshot", + wcmd, kwd_report_duplicated_matches)) { + case -2: /* multiple matches */ + return True; + case -1: /* not found */ + return False; + case 0: /* help */ + print_monitor_help(); + return True; + case 1: { /* ms.snapshot */ + Char* filename; + filename = VG_(strtok_r) (NULL, " ", &ssaveptr); + handle_snapshot_monitor_command (filename, False /* detailed */); + return True; + } + case 2: { /* ms.detailed_snapshot */ + Char* filename; + filename = VG_(strtok_r) (NULL, " ", &ssaveptr); + handle_snapshot_monitor_command (filename, True /* detailed */); + return True; + } + default: + tl_assert(0); + return False; + } +} //------------------------------------------------------------// //--- Finalisation ---// @@ -2350,7 +2435,7 @@ static void write_snapshots_to_file(void) static void ms_fini(Int exit_status) { // Output. - write_snapshots_to_file(); + write_snapshots_array_to_file(); // Stats tl_assert(n_xpts > 0); // always have alloc_xpt @@ -2491,6 +2576,8 @@ static void ms_pre_clo_init(void) "Copyright (C) 2003-2010, and GNU GPL'd, by Nicholas Nethercote"); VG_(details_bug_reports_to) (VG_BUGS_TO); + VG_(details_avg_translation_sizeB) ( 330 ); + // Basic functions. VG_(basic_tool_funcs) (ms_post_clo_init, ms_instrument, diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/perf/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/perf/Makefile.in index cd0dec024..b365dc36d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/perf/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/perf/Makefile.in @@ -113,6 +113,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -142,12 +144,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -300,7 +297,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -329,6 +326,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -357,6 +359,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/Makefile.in index 8e244c43e..4a91abdbb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/Makefile.in @@ -194,6 +194,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -223,12 +225,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -381,7 +378,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -410,6 +407,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -438,6 +440,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.post.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.post.exp index b402eaef1..5963decfe 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.post.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.post.exp @@ -1,6 +1,6 @@ -------------------------------------------------------------------------------- Command: ./insig -Massif arguments: --stacks=no --time-unit=B --heap-admin=128 --massif-out-file=massif.out --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element +Massif arguments: --stacks=no --time-unit=B --heap-admin=128 --massif-out-file=massif.out --threshold=0.99 --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element ms_print arguments: massif.out -------------------------------------------------------------------------------- @@ -70,7 +70,7 @@ Number of snapshots: 24 87.28% (16,688B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->83.68% (16,000B) 0x........: main (insig.c:8) | -->01.34% (256B) in 16 places, all below massif's threshold (01.00%) +->01.34% (256B) in 16 places, all below massif's threshold (00.99%) | ->01.26% (240B) 0x........: main (insig.c:9) | diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.vgtest index cb167dfa8..4c3807fb6 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/insig.vgtest @@ -1,5 +1,6 @@ +# At one point, thresholds less than 1.0% were misprinted as 00.00%, so test that here. prog: insig -vgopts: --stacks=no --time-unit=B --heap-admin=128 --massif-out-file=massif.out +vgopts: --stacks=no --time-unit=B --heap-admin=128 --massif-out-file=massif.out --threshold=0.99 vgopts: --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element post: perl ../../massif/ms_print massif.out | ../../tests/filter_addresses cleanup: rm massif.out diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/realloc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/realloc.c index 9c772761b..f6a37f867 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/realloc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/massif/tests/realloc.c @@ -3,7 +3,7 @@ int main(void) { // All sizes are multiples of 16 -- no slop. int* x = realloc(NULL, 800); // equivalent to malloc(800), and ends up - int* y; // calling Valgrind's (and Massif's) malloc + int* y __attribute__((unused)); // calling Valgrind's (and Massif's) malloc x = realloc(x, 800); // same size diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/Makefile.in index 484648bc0..85e33261c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/Makefile.in @@ -232,6 +232,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -261,12 +263,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -420,7 +417,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -449,6 +446,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -477,6 +479,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -529,6 +532,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -592,6 +598,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -634,6 +643,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/mc-manual.xml docs/mc-tech-docs.xml #---------------------------------------------------------------------------- diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/docs/mc-manual.xml b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/docs/mc-manual.xml index 4c75629d1..8c6294c6f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/docs/mc-manual.xml +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/docs/mc-manual.xml @@ -401,7 +401,11 @@ three ways we know of that an interior-pointer can occur: The pointer might have originally been a start-pointer and have been - moved along deliberately (or not deliberately) by the program. + moved along deliberately (or not deliberately) by the program. In + particular, this can happen if your program uses tagged pointers, i.e. + if it uses the bottom one, two or three bits of a pointer, which are + normally always zero due to alignment, in order to store extra + information. @@ -763,7 +767,7 @@ criteria: - + When the client program releases memory using @@ -779,7 +783,7 @@ criteria: have been freed. This option specifies the maximum total size, in bytes, of the - blocks in the queue. The default value is ten million bytes. + blocks in the queue. The default value is twenty million bytes. Increasing this increases the total amount of memory used by Memcheck but may detect invalid uses of freed blocks which would otherwise go undetected. @@ -1085,7 +1089,7 @@ location. We now consider the latter question. associated valid-value (V) bit. In addition, all bytes in memory, but not in the CPU, have an associated valid-address (A) bit. This indicates whether or not the program can legitimately read or write that -location. It does not give any indication of the validity or the data +location. It does not give any indication of the validity of the data at that location -- that's the job of the V bits -- only whether or not the location may be accessed. @@ -1153,8 +1157,8 @@ follows: Each byte in memory has 8 associated V (valid-value) bits, saying whether or not the byte has a defined value, and a single A (valid-address) bit, saying whether or not the program currently has - the right to read/write that address. (But, as mentioned above, heavy - use of compression means the overhead is typically less than 25%.) + the right to read/write that address. As mentioned above, heavy + use of compression means the overhead is typically around 25%. @@ -1266,7 +1270,126 @@ is: + +Memcheck Monitor Commands +The Memcheck tool provides monitor commands handled by the Valgrind +gdbserver (see ). + + + + + mc.get_vbits <addr> [<len>] + outputs the validity bits for the range of <len> (default 1) + bytes at <addr>. The validity of each byte of the range is + given using two hexadecimal digits. These hexadecimal digits are + encoding the validity of each bit of the corresponding byte, using + 0 if the bit is valid and 1 if the bit is invalid. In the + following example, 'string10' is an array of 10 characters in + which one byte on two is undefined. If a byte is not addressable, + its validity bits are replaced by __. In the below example, the byte 6 + is not addressable. + + + + + mc.make_memory [noaccess|undefined|defined|ifaddressabledefined] <addr> [<len>] + marks the range of <len> (default 1) bytes at <addr> + with the given accessibility. Marking with 'noaccess' changes the + (A) bits of the range to be not addressable. Marking with + 'undefined' or 'defined' are changing the definedness of the + range. 'ifaddressabledefined' marks the range as defined but only + if the range is addressable. In the following example, the first + byte of the 'string10' is marked as defined. + + + + + + mc.check_memory [addressable|defined] <addr> + [<len>] checks that the range of <len> + (default 1) bytes at <addr> has the given accessibility. It + then outputs a description of <addr>. In the below case, a + detailed description is given as the option --read-var-info=yes + was used to start Valgrind. + + + + + mc.leak_check + [full*|summary] [reachable|leakpossible*|definiteleak] + starts a leak checking. The * in the arguments above indicates the + default value. + + If the first argument is 'summary', only a summary of + the leak search is given. + + + The second argument controls which entries are output + for a 'full' leak search. The value 'definiteleak' indicates to + output only the definitely leaked blocks. The value 'leakpossible' + will output in addition the possibly leaked blocks. The value + 'reachable' will output all blocks (reachable, possibly leaked, + definitely leaked). + + The below is an example of using the mc.leak_check monitor + command on the leak-cases Memcheck regression tests. + + Note that when using the Valgrind gdbserver, it is not + needed to rerun with --leak-check=full --show-reachable=yes to see + the reachable blocks. You can obtain the same information without + rerunning by using the gdb command 'monitor mc.leak_check full + reachable' (or, using abbreviation: 'mo mc.l f r'). + + + + + Client Requests @@ -1284,10 +1407,7 @@ arguments. VALGRIND_MAKE_MEM_DEFINED. These mark address ranges as completely inaccessible, accessible but containing undefined data, and accessible and - containing defined data, respectively. Subsequent errors may - have their faulting addresses described in terms of these - blocks. Returns a "block handle". Returns zero when not run - on Valgrind. + containing defined data, respectively. @@ -1296,21 +1416,6 @@ arguments. affects those bytes that are already addressable. - - VALGRIND_DISCARD: At some point you may - want Valgrind to stop reporting errors in terms of the blocks - defined by the previous three macros. To do this, the above macros - return a small-integer "block handle". You can pass this block - handle to VALGRIND_DISCARD. After doing so, - Valgrind will no longer be able to relate addressing errors to the - user-defined block associated with the handle. The permissions - settings associated with the handle remain in place; this just - affects how errors are reported, not whether they are reported. - Returns 1 for an invalid handle and 0 for a valid handle (although - passing invalid handles is harmless). Always returns 0 when not run - on Valgrind. - - VALGRIND_CHECK_MEM_IS_ADDRESSABLE and VALGRIND_CHECK_MEM_IS_DEFINED: check immediately @@ -1368,6 +1473,30 @@ arguments. know what they are doing. + + VALGRIND_CREATE_BLOCK and + VALGRIND_DISCARD. VALGRIND_CREATE_BLOCK + takes an address, a number of bytes and a character string. The + specified address range is then associated with that string. When + Memcheck reports an invalid access to an address in the range, it + will describe it in terms of this block rather than in terms of + any other block it knows about. Note that the use of this macro + does not actually change the state of memory in any way -- it + merely gives a name for the range. + + + At some point you may want Memcheck to stop reporting errors + in terms of the block named + by VALGRIND_CREATE_BLOCK. To make this + possible, VALGRIND_CREATE_BLOCK returns a + "block handle", which is a C int value. You + can pass this block handle to VALGRIND_DISCARD. + After doing so, Valgrind will no longer relate addressing errors + in the specified range to the block. Passing invalid handles to + VALGRIND_DISCARD is harmless. + + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_errors.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_errors.c index 64cb805b6..a15584179 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_errors.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_errors.c @@ -30,6 +30,7 @@ */ #include "pub_tool_basics.h" +#include "pub_tool_gdbserver.h" #include "pub_tool_hashtable.h" // For mc_include.h #include "pub_tool_libcbase.h" #include "pub_tool_libcassert.h" @@ -584,12 +585,13 @@ void MC_(pp_Error) ( Error* err ) case Err_Free: if (xml) { emit( " InvalidFree\n" ); - emit( " Invalid free() / delete / delete[]\n" ); + emit( " Invalid free() / delete / delete[]" + " / realloc()\n" ); VG_(pp_ExeContext)( VG_(get_error_where)(err) ); mc_pp_AddrInfo( VG_(get_error_address)(err), &extra->Err.Free.ai, False ); } else { - emit( "Invalid free() / delete / delete[]\n" ); + emit( "Invalid free() / delete / delete[] / realloc()\n" ); VG_(pp_ExeContext)( VG_(get_error_where)(err) ); mc_pp_AddrInfo( VG_(get_error_address)(err), &extra->Err.Free.ai, False ); @@ -788,6 +790,9 @@ void MC_(record_address_error) ( ThreadId tid, Addr a, Int szB, if (MC_(in_ignored_range)(a)) return; + if (VG_(is_watched)( (isWrite ? write_watchpoint : read_watchpoint), a, szB)) + return; + # if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) /* AIX zero-page handling. On AIX, reads from page zero are, bizarrely enough, legitimate. Writes to page zero aren't, @@ -1044,21 +1049,23 @@ Bool MC_(eq_Error) ( VgRes res, Error* e1, Error* e2 ) } } -/* Function used when searching MC_Chunk lists */ -static Bool addr_is_in_MC_Chunk(MC_Chunk* mc, Addr a) +/* Functions used when searching MC_Chunk lists */ +static +Bool addr_is_in_MC_Chunk_default_REDZONE_SZB(MC_Chunk* mc, Addr a) { - // Nb: this is not quite right! It assumes that the heap block has - // a redzone of size MC_MALLOC_REDZONE_SZB. That's true for malloc'd - // blocks, but not necessarily true for custom-alloc'd blocks. So - // in some cases this could result in an incorrect description (eg. - // saying "12 bytes after block A" when really it's within block B. - // Fixing would require adding redzone size to MC_Chunks, though. return VG_(addr_is_in_block)( a, mc->data, mc->szB, MC_MALLOC_REDZONE_SZB ); } +static +Bool addr_is_in_MC_Chunk_with_REDZONE_SZB(MC_Chunk* mc, Addr a, SizeT rzB) +{ + return VG_(addr_is_in_block)( a, mc->data, mc->szB, + rzB ); +} -// Forward declaration +// Forward declarations static Bool client_block_maybe_describe( Addr a, AddrInfo* ai ); +static Bool mempool_block_maybe_describe( Addr a, AddrInfo* ai ); /* Describe an address as best you can, for error messages, @@ -1072,14 +1079,18 @@ static void describe_addr ( Addr a, /*OUT*/AddrInfo* ai ) tl_assert(Addr_Undescribed == ai->tag); - /* -- Perhaps it's a user-def'd block? -- */ + /* -- Perhaps it's a user-named block? -- */ if (client_block_maybe_describe( a, ai )) { return; } + /* -- Perhaps it's in mempool block? -- */ + if (mempool_block_maybe_describe( a, ai )) { + return; + } /* -- Search for a recently freed block which might bracket it. -- */ mc = MC_(get_freed_list_head)(); while (mc) { - if (addr_is_in_MC_Chunk(mc, a)) { + if (addr_is_in_MC_Chunk_default_REDZONE_SZB(mc, a)) { ai->tag = Addr_Block; ai->Addr.Block.block_kind = Block_Freed; ai->Addr.Block.block_desc = "block"; @@ -1093,7 +1104,7 @@ static void describe_addr ( Addr a, /*OUT*/AddrInfo* ai ) /* -- Search for a currently malloc'd block which might bracket it. -- */ VG_(HT_ResetIter)(MC_(malloc_list)); while ( (mc = VG_(HT_Next)(MC_(malloc_list))) ) { - if (addr_is_in_MC_Chunk(mc, a)) { + if (addr_is_in_MC_Chunk_default_REDZONE_SZB(mc, a)) { ai->tag = Addr_Block; ai->Addr.Block.block_kind = Block_Mallocd; ai->Addr.Block.block_desc = "block"; @@ -1177,6 +1188,15 @@ static void describe_addr ( Addr a, /*OUT*/AddrInfo* ai ) return; } +void MC_(pp_describe_addr) ( Addr a ) +{ + AddrInfo ai; + + ai.tag = Addr_Undescribed; + describe_addr (a, &ai); + mc_pp_AddrInfo (a, &ai, /* maybe_gcc */ False); +} + /* Fill in *origin_ec as specified by otag, or NULL it out if otag does not refer to a known origin. */ static void update_origin ( /*OUT*/ExeContext** origin_ec, @@ -1269,8 +1289,7 @@ UInt MC_(update_Error_extra)( Error* err ) } } -// FIXME: does this perhaps want to live somewhere else -// in this file? + static Bool client_block_maybe_describe( Addr a, /*OUT*/AddrInfo* ai ) { @@ -1288,33 +1307,6 @@ static Bool client_block_maybe_describe( Addr a, continue; // Use zero as the redzone for client blocks. if (VG_(addr_is_in_block)(a, cgbs[i].start, cgbs[i].size, 0)) { - /* OK - maybe it's a mempool, too? */ - MC_Mempool* mp = VG_(HT_lookup)(MC_(mempool_list), - (UWord)cgbs[i].start); - if (mp != NULL) { - if (mp->chunks != NULL) { - MC_Chunk* mc; - VG_(HT_ResetIter)(mp->chunks); - while ( (mc = VG_(HT_Next)(mp->chunks)) ) { - if (addr_is_in_MC_Chunk(mc, a)) { - ai->tag = Addr_Block; - ai->Addr.Block.block_kind = Block_MempoolChunk; - ai->Addr.Block.block_desc = "block"; - ai->Addr.Block.block_szB = mc->szB; - ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data; - ai->Addr.Block.lastchange = mc->where; - return True; - } - } - } - ai->tag = Addr_Block; - ai->Addr.Block.block_kind = Block_Mempool; - ai->Addr.Block.block_desc = "mempool"; - ai->Addr.Block.block_szB = cgbs[i].size; - ai->Addr.Block.rwoffset = (Word)(a) - (Word)(cgbs[i].start); - ai->Addr.Block.lastchange = cgbs[i].where; - return True; - } ai->tag = Addr_Block; ai->Addr.Block.block_kind = Block_UserG; ai->Addr.Block.block_desc = cgbs[i].desc; @@ -1328,6 +1320,34 @@ static Bool client_block_maybe_describe( Addr a, } +static Bool mempool_block_maybe_describe( Addr a, + /*OUT*/AddrInfo* ai ) +{ + MC_Mempool* mp; + tl_assert( MC_(mempool_list) ); + + VG_(HT_ResetIter)( MC_(mempool_list) ); + while ( (mp = VG_(HT_Next)(MC_(mempool_list))) ) { + if (mp->chunks != NULL) { + MC_Chunk* mc; + VG_(HT_ResetIter)(mp->chunks); + while ( (mc = VG_(HT_Next)(mp->chunks)) ) { + if (addr_is_in_MC_Chunk_with_REDZONE_SZB(mc, a, mp->rzB)) { + ai->tag = Addr_Block; + ai->Addr.Block.block_kind = Block_MempoolChunk; + ai->Addr.Block.block_desc = "block"; + ai->Addr.Block.block_szB = mc->szB; + ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data; + ai->Addr.Block.lastchange = mc->where; + return True; + } + } + } + } + return False; +} + + /*------------------------------------------------------------*/ /*--- Suppressions ---*/ /*------------------------------------------------------------*/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_include.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_include.h index c2ef03eb6..d6edbf2d7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_include.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_include.h @@ -127,6 +127,9 @@ void MC_(__builtin_vec_delete) ( ThreadId tid, void* p ); void* MC_(realloc) ( ThreadId tid, void* p, SizeT new_size ); SizeT MC_(malloc_usable_size) ( ThreadId tid, void* p ); +void MC_(handle_resizeInPlace)(ThreadId tid, Addr p, + SizeT oldSizeB, SizeT newSizeB, SizeT rzB); + /*------------------------------------------------------------*/ /*--- Origin tracking translate-time support ---*/ @@ -352,6 +355,9 @@ Bool MC_(record_leak_error) ( ThreadId tid, Bool print_record, Bool count_error ); +/* prints a description of address a */ +void MC_(pp_describe_addr) (Addr a); + /* Is this address in a user-specified "ignored range" ? */ Bool MC_(in_ignored_range) ( Addr a ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_leakcheck.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_leakcheck.c index 2d3e6d6b7..016109c75 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_leakcheck.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_leakcheck.c @@ -43,12 +43,11 @@ #include "pub_tool_options.h" #include "pub_tool_oset.h" #include "pub_tool_signals.h" +#include "pub_tool_libcsetjmp.h" // setjmp facilities #include "pub_tool_tooliface.h" // Needed for mc_include.h #include "mc_include.h" -#include // For jmp_buf - /*------------------------------------------------------------*/ /*--- An overview of leak checking. ---*/ /*------------------------------------------------------------*/ @@ -425,7 +424,8 @@ find_active_chunks(UInt* pn_chunks) typedef struct { UInt state:2; // Reachedness. - SizeT indirect_szB : (sizeof(SizeT)*8)-2; // If Unreached, how many bytes + UInt pending:1; // Scan pending. + SizeT indirect_szB : (sizeof(SizeT)*8)-3; // If Unreached, how many bytes // are unreachable from here. } LC_Extra; @@ -510,12 +510,16 @@ lc_is_a_chunk_ptr(Addr ptr, Int* pch_no, MC_Chunk** pch, LC_Extra** pex) // Push a chunk (well, just its index) onto the mark stack. static void lc_push(Int ch_no, MC_Chunk* ch) { - if (0) { - VG_(printf)("pushing %#lx-%#lx\n", ch->data, ch->data + ch->szB); + if (!lc_extras[ch_no].pending) { + if (0) { + VG_(printf)("pushing %#lx-%#lx\n", ch->data, ch->data + ch->szB); + } + lc_markstack_top++; + tl_assert(lc_markstack_top < lc_n_chunks); + lc_markstack[lc_markstack_top] = ch_no; + tl_assert(!lc_extras[ch_no].pending); + lc_extras[ch_no].pending = True; } - lc_markstack_top++; - tl_assert(lc_markstack_top < lc_n_chunks); - lc_markstack[lc_markstack_top] = ch_no; } // Return the index of the chunk on the top of the mark stack, or -1 if @@ -528,6 +532,8 @@ static Bool lc_pop(Int* ret) tl_assert(0 <= lc_markstack_top && lc_markstack_top < lc_n_chunks); *ret = lc_markstack[lc_markstack_top]; lc_markstack_top--; + tl_assert(lc_extras[*ret].pending); + lc_extras[*ret].pending = False; return True; } } @@ -544,25 +550,28 @@ lc_push_without_clique_if_a_chunk_ptr(Addr ptr, Bool is_prior_definite) if ( ! lc_is_a_chunk_ptr(ptr, &ch_no, &ch, &ex) ) return; - - // Only push it if it hasn't been seen previously. - if (ex->state == Unreached) { - lc_push(ch_no, ch); - } - + // Possibly upgrade the state, ie. one of: // - Unreached --> Possible // - Unreached --> Reachable // - Possible --> Reachable - if (ptr == ch->data && is_prior_definite) { + if (ptr == ch->data && is_prior_definite && ex->state != Reachable) { // 'ptr' points to the start of the block, and the prior node is // definite, which means that this block is definitely reachable. ex->state = Reachable; + // State has changed to Reachable so (re)scan the block to make + // sure any blocks it points to are correctly marked. + lc_push(ch_no, ch); + } else if (ex->state == Unreached) { // Either 'ptr' is a interior-pointer, or the prior node isn't definite, // which means that we can only mark this block as possibly reachable. ex->state = Possible; + + // State has changed to Possible so (re)scan the block to make + // sure any blocks it points to are correctly marked. + lc_push(ch_no, ch); } } @@ -626,7 +635,7 @@ lc_push_if_a_chunk_ptr(Addr ptr, Int clique, Bool is_prior_definite) } -static jmp_buf memscan_jmpbuf; +static VG_MINIMAL_JMP_BUF(memscan_jmpbuf); static void scan_all_valid_memory_catcher ( Int sigNo, Addr addr ) @@ -634,7 +643,7 @@ void scan_all_valid_memory_catcher ( Int sigNo, Addr addr ) if (0) VG_(printf)("OUCH! sig=%d addr=%#lx\n", sigNo, addr); if (sigNo == VKI_SIGSEGV || sigNo == VKI_SIGBUS) - __builtin_longjmp(memscan_jmpbuf, 1); + VG_MINIMAL_LONGJMP(memscan_jmpbuf); } // Scan a block of memory between [start, start+len). This range may @@ -676,7 +685,7 @@ lc_scan_memory(Addr start, SizeT len, Bool is_prior_definite, Int clique) } } - if (__builtin_setjmp(memscan_jmpbuf) == 0) { + if (VG_MINIMAL_SETJMP(memscan_jmpbuf) == 0) { if ( MC_(is_valid_aligned_word)(ptr) ) { lc_scanned_szB += sizeof(Addr); addr = *(Addr *)ptr; @@ -708,7 +717,7 @@ static void lc_process_markstack(Int clique) Bool is_prior_definite; while (lc_pop(&top)) { - tl_assert(top >= 0 && top < lc_n_chunks); + tl_assert(top >= 0 && top < lc_n_chunks); // See comment about 'is_prior_definite' at the top to understand this. is_prior_definite = ( Possible != lc_extras[top].state ); @@ -996,7 +1005,7 @@ void MC_(detect_memory_leaks) ( ThreadId tid, LeakCheckMode mode ) } else { VG_(umsg)("Block 0x%lx..0x%lx overlaps with block 0x%lx..0x%lx", - start1, end1, start1, end2); + start1, end1, start2, end2); VG_(umsg)("This is usually caused by using VALGRIND_MALLOCLIKE_BLOCK"); VG_(umsg)("in an inappropriate way."); tl_assert (0); @@ -1007,6 +1016,7 @@ void MC_(detect_memory_leaks) ( ThreadId tid, LeakCheckMode mode ) lc_extras = VG_(malloc)( "mc.dml.2", lc_n_chunks * sizeof(LC_Extra) ); for (i = 0; i < lc_n_chunks; i++) { lc_extras[i].state = Unreached; + lc_extras[i].pending = False; lc_extras[i].indirect_szB = 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_machine.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_machine.c index 61494d9e3..0c72b2dd9 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_machine.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_machine.c @@ -65,6 +65,11 @@ # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State) #endif +#if defined(VGA_s390x) +# include "libvex_guest_s390x.h" +# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestS390XState) +#endif + #if defined(VGA_arm) # include "libvex_guest_arm.h" # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState) @@ -195,98 +200,139 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(VRSAVE) && sz == 4) return -1; if (o == GOF(REDIR_SP) && sz == 8) return -1; - tl_assert(SZB(FPR0) == 8); - if (o == GOF(FPR0) && sz == 8) return o; - if (o == GOF(FPR1) && sz == 8) return o; - if (o == GOF(FPR2) && sz == 8) return o; - if (o == GOF(FPR3) && sz == 8) return o; - if (o == GOF(FPR4) && sz == 8) return o; - if (o == GOF(FPR5) && sz == 8) return o; - if (o == GOF(FPR6) && sz == 8) return o; - if (o == GOF(FPR7) && sz == 8) return o; - if (o == GOF(FPR8) && sz == 8) return o; - if (o == GOF(FPR9) && sz == 8) return o; - if (o == GOF(FPR10) && sz == 8) return o; - if (o == GOF(FPR11) && sz == 8) return o; - if (o == GOF(FPR12) && sz == 8) return o; - if (o == GOF(FPR13) && sz == 8) return o; - if (o == GOF(FPR14) && sz == 8) return o; - if (o == GOF(FPR15) && sz == 8) return o; - if (o == GOF(FPR16) && sz == 8) return o; - if (o == GOF(FPR17) && sz == 8) return o; - if (o == GOF(FPR18) && sz == 8) return o; - if (o == GOF(FPR19) && sz == 8) return o; - if (o == GOF(FPR20) && sz == 8) return o; - if (o == GOF(FPR21) && sz == 8) return o; - if (o == GOF(FPR22) && sz == 8) return o; - if (o == GOF(FPR23) && sz == 8) return o; - if (o == GOF(FPR24) && sz == 8) return o; - if (o == GOF(FPR25) && sz == 8) return o; - if (o == GOF(FPR26) && sz == 8) return o; - if (o == GOF(FPR27) && sz == 8) return o; - if (o == GOF(FPR28) && sz == 8) return o; - if (o == GOF(FPR29) && sz == 8) return o; - if (o == GOF(FPR30) && sz == 8) return o; - if (o == GOF(FPR31) && sz == 8) return o; + // With ISA 2.06, the "Vector-Scalar Floating-point" category + // provides facilities to support vector and scalar binary floating- + // point operations. A unified register file is an integral part + // of this new facility, combining floating point and vector registers + // using a 64x128-bit vector. These are referred to as VSR[0..63]. + // The floating point registers are now mapped into double word element 0 + // of VSR[0..31]. The 32x128-bit vector registers defined by the "Vector + // Facility [Category: Vector]" are now mapped to VSR[32..63]. + + // Floating point registers . . . + if (o == GOF(VSR0) && sz == 8) return o; + if (o == GOF(VSR1) && sz == 8) return o; + if (o == GOF(VSR2) && sz == 8) return o; + if (o == GOF(VSR3) && sz == 8) return o; + if (o == GOF(VSR4) && sz == 8) return o; + if (o == GOF(VSR5) && sz == 8) return o; + if (o == GOF(VSR6) && sz == 8) return o; + if (o == GOF(VSR7) && sz == 8) return o; + if (o == GOF(VSR8) && sz == 8) return o; + if (o == GOF(VSR9) && sz == 8) return o; + if (o == GOF(VSR10) && sz == 8) return o; + if (o == GOF(VSR11) && sz == 8) return o; + if (o == GOF(VSR12) && sz == 8) return o; + if (o == GOF(VSR13) && sz == 8) return o; + if (o == GOF(VSR14) && sz == 8) return o; + if (o == GOF(VSR15) && sz == 8) return o; + if (o == GOF(VSR16) && sz == 8) return o; + if (o == GOF(VSR17) && sz == 8) return o; + if (o == GOF(VSR18) && sz == 8) return o; + if (o == GOF(VSR19) && sz == 8) return o; + if (o == GOF(VSR20) && sz == 8) return o; + if (o == GOF(VSR21) && sz == 8) return o; + if (o == GOF(VSR22) && sz == 8) return o; + if (o == GOF(VSR23) && sz == 8) return o; + if (o == GOF(VSR24) && sz == 8) return o; + if (o == GOF(VSR25) && sz == 8) return o; + if (o == GOF(VSR26) && sz == 8) return o; + if (o == GOF(VSR27) && sz == 8) return o; + if (o == GOF(VSR28) && sz == 8) return o; + if (o == GOF(VSR29) && sz == 8) return o; + if (o == GOF(VSR30) && sz == 8) return o; + if (o == GOF(VSR31) && sz == 8) return o; /* For the various byte sized XER/CR pieces, use offset 8 - in VR0 .. VR31. */ - tl_assert(SZB(VR0) == 16); - if (o == GOF(XER_SO) && sz == 1) return 8 +GOF(VR0); - if (o == GOF(XER_OV) && sz == 1) return 8 +GOF(VR1); - if (o == GOF(XER_CA) && sz == 1) return 8 +GOF(VR2); - if (o == GOF(XER_BC) && sz == 1) return 8 +GOF(VR3); - - if (o == GOF(CR0_321) && sz == 1) return 8 +GOF(VR4); - if (o == GOF(CR0_0) && sz == 1) return 8 +GOF(VR5); - if (o == GOF(CR1_321) && sz == 1) return 8 +GOF(VR6); - if (o == GOF(CR1_0) && sz == 1) return 8 +GOF(VR7); - if (o == GOF(CR2_321) && sz == 1) return 8 +GOF(VR8); - if (o == GOF(CR2_0) && sz == 1) return 8 +GOF(VR9); - if (o == GOF(CR3_321) && sz == 1) return 8 +GOF(VR10); - if (o == GOF(CR3_0) && sz == 1) return 8 +GOF(VR11); - if (o == GOF(CR4_321) && sz == 1) return 8 +GOF(VR12); - if (o == GOF(CR4_0) && sz == 1) return 8 +GOF(VR13); - if (o == GOF(CR5_321) && sz == 1) return 8 +GOF(VR14); - if (o == GOF(CR5_0) && sz == 1) return 8 +GOF(VR15); - if (o == GOF(CR6_321) && sz == 1) return 8 +GOF(VR16); - if (o == GOF(CR6_0) && sz == 1) return 8 +GOF(VR17); - if (o == GOF(CR7_321) && sz == 1) return 8 +GOF(VR18); - if (o == GOF(CR7_0) && sz == 1) return 8 +GOF(VR19); - - /* Vector registers .. use offset 0 in VR0 .. VR31. */ - if (o >= GOF(VR0) && o+sz <= GOF(VR0) +SZB(VR0)) return 0+ GOF(VR0); - if (o >= GOF(VR1) && o+sz <= GOF(VR1) +SZB(VR1)) return 0+ GOF(VR1); - if (o >= GOF(VR2) && o+sz <= GOF(VR2) +SZB(VR2)) return 0+ GOF(VR2); - if (o >= GOF(VR3) && o+sz <= GOF(VR3) +SZB(VR3)) return 0+ GOF(VR3); - if (o >= GOF(VR4) && o+sz <= GOF(VR4) +SZB(VR4)) return 0+ GOF(VR4); - if (o >= GOF(VR5) && o+sz <= GOF(VR5) +SZB(VR5)) return 0+ GOF(VR5); - if (o >= GOF(VR6) && o+sz <= GOF(VR6) +SZB(VR6)) return 0+ GOF(VR6); - if (o >= GOF(VR7) && o+sz <= GOF(VR7) +SZB(VR7)) return 0+ GOF(VR7); - if (o >= GOF(VR8) && o+sz <= GOF(VR8) +SZB(VR8)) return 0+ GOF(VR8); - if (o >= GOF(VR9) && o+sz <= GOF(VR9) +SZB(VR9)) return 0+ GOF(VR9); - if (o >= GOF(VR10) && o+sz <= GOF(VR10)+SZB(VR10)) return 0+ GOF(VR10); - if (o >= GOF(VR11) && o+sz <= GOF(VR11)+SZB(VR11)) return 0+ GOF(VR11); - if (o >= GOF(VR12) && o+sz <= GOF(VR12)+SZB(VR12)) return 0+ GOF(VR12); - if (o >= GOF(VR13) && o+sz <= GOF(VR13)+SZB(VR13)) return 0+ GOF(VR13); - if (o >= GOF(VR14) && o+sz <= GOF(VR14)+SZB(VR14)) return 0+ GOF(VR14); - if (o >= GOF(VR15) && o+sz <= GOF(VR15)+SZB(VR15)) return 0+ GOF(VR15); - if (o >= GOF(VR16) && o+sz <= GOF(VR16)+SZB(VR16)) return 0+ GOF(VR16); - if (o >= GOF(VR17) && o+sz <= GOF(VR17)+SZB(VR17)) return 0+ GOF(VR17); - if (o >= GOF(VR18) && o+sz <= GOF(VR18)+SZB(VR18)) return 0+ GOF(VR18); - if (o >= GOF(VR19) && o+sz <= GOF(VR19)+SZB(VR19)) return 0+ GOF(VR19); - if (o >= GOF(VR20) && o+sz <= GOF(VR20)+SZB(VR20)) return 0+ GOF(VR20); - if (o >= GOF(VR21) && o+sz <= GOF(VR21)+SZB(VR21)) return 0+ GOF(VR21); - if (o >= GOF(VR22) && o+sz <= GOF(VR22)+SZB(VR22)) return 0+ GOF(VR22); - if (o >= GOF(VR23) && o+sz <= GOF(VR23)+SZB(VR23)) return 0+ GOF(VR23); - if (o >= GOF(VR24) && o+sz <= GOF(VR24)+SZB(VR24)) return 0+ GOF(VR24); - if (o >= GOF(VR25) && o+sz <= GOF(VR25)+SZB(VR25)) return 0+ GOF(VR25); - if (o >= GOF(VR26) && o+sz <= GOF(VR26)+SZB(VR26)) return 0+ GOF(VR26); - if (o >= GOF(VR27) && o+sz <= GOF(VR27)+SZB(VR27)) return 0+ GOF(VR27); - if (o >= GOF(VR28) && o+sz <= GOF(VR28)+SZB(VR28)) return 0+ GOF(VR28); - if (o >= GOF(VR29) && o+sz <= GOF(VR29)+SZB(VR29)) return 0+ GOF(VR29); - if (o >= GOF(VR30) && o+sz <= GOF(VR30)+SZB(VR30)) return 0+ GOF(VR30); - if (o >= GOF(VR31) && o+sz <= GOF(VR31)+SZB(VR31)) return 0+ GOF(VR31); + in VSR0 .. VSR19. */ + tl_assert(SZB(VSR0) == 16); + if (o == GOF(XER_SO) && sz == 1) return 8 +GOF(VSR0); + if (o == GOF(XER_OV) && sz == 1) return 8 +GOF(VSR1); + if (o == GOF(XER_CA) && sz == 1) return 8 +GOF(VSR2); + if (o == GOF(XER_BC) && sz == 1) return 8 +GOF(VSR3); + + if (o == GOF(CR0_321) && sz == 1) return 8 +GOF(VSR4); + if (o == GOF(CR0_0) && sz == 1) return 8 +GOF(VSR5); + if (o == GOF(CR1_321) && sz == 1) return 8 +GOF(VSR6); + if (o == GOF(CR1_0) && sz == 1) return 8 +GOF(VSR7); + if (o == GOF(CR2_321) && sz == 1) return 8 +GOF(VSR8); + if (o == GOF(CR2_0) && sz == 1) return 8 +GOF(VSR9); + if (o == GOF(CR3_321) && sz == 1) return 8 +GOF(VSR10); + if (o == GOF(CR3_0) && sz == 1) return 8 +GOF(VSR11); + if (o == GOF(CR4_321) && sz == 1) return 8 +GOF(VSR12); + if (o == GOF(CR4_0) && sz == 1) return 8 +GOF(VSR13); + if (o == GOF(CR5_321) && sz == 1) return 8 +GOF(VSR14); + if (o == GOF(CR5_0) && sz == 1) return 8 +GOF(VSR15); + if (o == GOF(CR6_321) && sz == 1) return 8 +GOF(VSR16); + if (o == GOF(CR6_0) && sz == 1) return 8 +GOF(VSR17); + if (o == GOF(CR7_321) && sz == 1) return 8 +GOF(VSR18); + if (o == GOF(CR7_0) && sz == 1) return 8 +GOF(VSR19); + + /* Vector registers .. use offset 0 in VSR0 .. VSR63. */ + if (o >= GOF(VSR0) && o+sz <= GOF(VSR0) +SZB(VSR0)) return 0+ GOF(VSR0); + if (o >= GOF(VSR1) && o+sz <= GOF(VSR1) +SZB(VSR1)) return 0+ GOF(VSR1); + if (o >= GOF(VSR2) && o+sz <= GOF(VSR2) +SZB(VSR2)) return 0+ GOF(VSR2); + if (o >= GOF(VSR3) && o+sz <= GOF(VSR3) +SZB(VSR3)) return 0+ GOF(VSR3); + if (o >= GOF(VSR4) && o+sz <= GOF(VSR4) +SZB(VSR4)) return 0+ GOF(VSR4); + if (o >= GOF(VSR5) && o+sz <= GOF(VSR5) +SZB(VSR5)) return 0+ GOF(VSR5); + if (o >= GOF(VSR6) && o+sz <= GOF(VSR6) +SZB(VSR6)) return 0+ GOF(VSR6); + if (o >= GOF(VSR7) && o+sz <= GOF(VSR7) +SZB(VSR7)) return 0+ GOF(VSR7); + if (o >= GOF(VSR8) && o+sz <= GOF(VSR8) +SZB(VSR8)) return 0+ GOF(VSR8); + if (o >= GOF(VSR9) && o+sz <= GOF(VSR9) +SZB(VSR9)) return 0+ GOF(VSR9); + if (o >= GOF(VSR10) && o+sz <= GOF(VSR10)+SZB(VSR10)) return 0+ GOF(VSR10); + if (o >= GOF(VSR11) && o+sz <= GOF(VSR11)+SZB(VSR11)) return 0+ GOF(VSR11); + if (o >= GOF(VSR12) && o+sz <= GOF(VSR12)+SZB(VSR12)) return 0+ GOF(VSR12); + if (o >= GOF(VSR13) && o+sz <= GOF(VSR13)+SZB(VSR13)) return 0+ GOF(VSR13); + if (o >= GOF(VSR14) && o+sz <= GOF(VSR14)+SZB(VSR14)) return 0+ GOF(VSR14); + if (o >= GOF(VSR15) && o+sz <= GOF(VSR15)+SZB(VSR15)) return 0+ GOF(VSR15); + if (o >= GOF(VSR16) && o+sz <= GOF(VSR16)+SZB(VSR16)) return 0+ GOF(VSR16); + if (o >= GOF(VSR17) && o+sz <= GOF(VSR17)+SZB(VSR17)) return 0+ GOF(VSR17); + if (o >= GOF(VSR18) && o+sz <= GOF(VSR18)+SZB(VSR18)) return 0+ GOF(VSR18); + if (o >= GOF(VSR19) && o+sz <= GOF(VSR19)+SZB(VSR19)) return 0+ GOF(VSR19); + if (o >= GOF(VSR20) && o+sz <= GOF(VSR20)+SZB(VSR20)) return 0+ GOF(VSR20); + if (o >= GOF(VSR21) && o+sz <= GOF(VSR21)+SZB(VSR21)) return 0+ GOF(VSR21); + if (o >= GOF(VSR22) && o+sz <= GOF(VSR22)+SZB(VSR22)) return 0+ GOF(VSR22); + if (o >= GOF(VSR23) && o+sz <= GOF(VSR23)+SZB(VSR23)) return 0+ GOF(VSR23); + if (o >= GOF(VSR24) && o+sz <= GOF(VSR24)+SZB(VSR24)) return 0+ GOF(VSR24); + if (o >= GOF(VSR25) && o+sz <= GOF(VSR25)+SZB(VSR25)) return 0+ GOF(VSR25); + if (o >= GOF(VSR26) && o+sz <= GOF(VSR26)+SZB(VSR26)) return 0+ GOF(VSR26); + if (o >= GOF(VSR27) && o+sz <= GOF(VSR27)+SZB(VSR27)) return 0+ GOF(VSR27); + if (o >= GOF(VSR28) && o+sz <= GOF(VSR28)+SZB(VSR28)) return 0+ GOF(VSR28); + if (o >= GOF(VSR29) && o+sz <= GOF(VSR29)+SZB(VSR29)) return 0+ GOF(VSR29); + if (o >= GOF(VSR30) && o+sz <= GOF(VSR30)+SZB(VSR30)) return 0+ GOF(VSR30); + if (o >= GOF(VSR31) && o+sz <= GOF(VSR31)+SZB(VSR31)) return 0+ GOF(VSR31); + if (o >= GOF(VSR32) && o+sz <= GOF(VSR32)+SZB(VSR32)) return 0+ GOF(VSR32); + if (o >= GOF(VSR33) && o+sz <= GOF(VSR33)+SZB(VSR33)) return 0+ GOF(VSR33); + if (o >= GOF(VSR34) && o+sz <= GOF(VSR34)+SZB(VSR34)) return 0+ GOF(VSR34); + if (o >= GOF(VSR35) && o+sz <= GOF(VSR35)+SZB(VSR35)) return 0+ GOF(VSR35); + if (o >= GOF(VSR36) && o+sz <= GOF(VSR36)+SZB(VSR36)) return 0+ GOF(VSR36); + if (o >= GOF(VSR37) && o+sz <= GOF(VSR37)+SZB(VSR37)) return 0+ GOF(VSR37); + if (o >= GOF(VSR38) && o+sz <= GOF(VSR38)+SZB(VSR38)) return 0+ GOF(VSR38); + if (o >= GOF(VSR39) && o+sz <= GOF(VSR39)+SZB(VSR39)) return 0+ GOF(VSR39); + if (o >= GOF(VSR40) && o+sz <= GOF(VSR40)+SZB(VSR40)) return 0+ GOF(VSR40); + if (o >= GOF(VSR41) && o+sz <= GOF(VSR41)+SZB(VSR41)) return 0+ GOF(VSR41); + if (o >= GOF(VSR42) && o+sz <= GOF(VSR42)+SZB(VSR42)) return 0+ GOF(VSR42); + if (o >= GOF(VSR43) && o+sz <= GOF(VSR43)+SZB(VSR43)) return 0+ GOF(VSR43); + if (o >= GOF(VSR44) && o+sz <= GOF(VSR44)+SZB(VSR44)) return 0+ GOF(VSR44); + if (o >= GOF(VSR45) && o+sz <= GOF(VSR45)+SZB(VSR45)) return 0+ GOF(VSR45); + if (o >= GOF(VSR46) && o+sz <= GOF(VSR46)+SZB(VSR46)) return 0+ GOF(VSR46); + if (o >= GOF(VSR47) && o+sz <= GOF(VSR47)+SZB(VSR47)) return 0+ GOF(VSR47); + if (o >= GOF(VSR48) && o+sz <= GOF(VSR48)+SZB(VSR48)) return 0+ GOF(VSR48); + if (o >= GOF(VSR49) && o+sz <= GOF(VSR49)+SZB(VSR49)) return 0+ GOF(VSR49); + if (o >= GOF(VSR50) && o+sz <= GOF(VSR50)+SZB(VSR50)) return 0+ GOF(VSR50); + if (o >= GOF(VSR51) && o+sz <= GOF(VSR51)+SZB(VSR51)) return 0+ GOF(VSR51); + if (o >= GOF(VSR52) && o+sz <= GOF(VSR52)+SZB(VSR52)) return 0+ GOF(VSR52); + if (o >= GOF(VSR53) && o+sz <= GOF(VSR53)+SZB(VSR53)) return 0+ GOF(VSR53); + if (o >= GOF(VSR54) && o+sz <= GOF(VSR54)+SZB(VSR54)) return 0+ GOF(VSR54); + if (o >= GOF(VSR55) && o+sz <= GOF(VSR55)+SZB(VSR55)) return 0+ GOF(VSR55); + if (o >= GOF(VSR56) && o+sz <= GOF(VSR56)+SZB(VSR56)) return 0+ GOF(VSR56); + if (o >= GOF(VSR57) && o+sz <= GOF(VSR57)+SZB(VSR57)) return 0+ GOF(VSR57); + if (o >= GOF(VSR58) && o+sz <= GOF(VSR58)+SZB(VSR58)) return 0+ GOF(VSR58); + if (o >= GOF(VSR59) && o+sz <= GOF(VSR59)+SZB(VSR59)) return 0+ GOF(VSR59); + if (o >= GOF(VSR60) && o+sz <= GOF(VSR60)+SZB(VSR60)) return 0+ GOF(VSR60); + if (o >= GOF(VSR61) && o+sz <= GOF(VSR61)+SZB(VSR61)) return 0+ GOF(VSR61); + if (o >= GOF(VSR62) && o+sz <= GOF(VSR62)+SZB(VSR62)) return 0+ GOF(VSR62); + if (o >= GOF(VSR63) && o+sz <= GOF(VSR63)+SZB(VSR63)) return 0+ GOF(VSR63); VG_(printf)("MC_(get_otrack_shadow_offset)(ppc64)(off=%d,sz=%d)\n", offset,szB); @@ -354,98 +400,139 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(REDIR_SP) && sz == 4) return -1; if (o == GOF(SPRG3_RO) && sz == 4) return -1; - tl_assert(SZB(FPR0) == 8); - if (o == GOF(FPR0) && sz == 8) return o; - if (o == GOF(FPR1) && sz == 8) return o; - if (o == GOF(FPR2) && sz == 8) return o; - if (o == GOF(FPR3) && sz == 8) return o; - if (o == GOF(FPR4) && sz == 8) return o; - if (o == GOF(FPR5) && sz == 8) return o; - if (o == GOF(FPR6) && sz == 8) return o; - if (o == GOF(FPR7) && sz == 8) return o; - if (o == GOF(FPR8) && sz == 8) return o; - if (o == GOF(FPR9) && sz == 8) return o; - if (o == GOF(FPR10) && sz == 8) return o; - if (o == GOF(FPR11) && sz == 8) return o; - if (o == GOF(FPR12) && sz == 8) return o; - if (o == GOF(FPR13) && sz == 8) return o; - if (o == GOF(FPR14) && sz == 8) return o; - if (o == GOF(FPR15) && sz == 8) return o; - if (o == GOF(FPR16) && sz == 8) return o; - if (o == GOF(FPR17) && sz == 8) return o; - if (o == GOF(FPR18) && sz == 8) return o; - if (o == GOF(FPR19) && sz == 8) return o; - if (o == GOF(FPR20) && sz == 8) return o; - if (o == GOF(FPR21) && sz == 8) return o; - if (o == GOF(FPR22) && sz == 8) return o; - if (o == GOF(FPR23) && sz == 8) return o; - if (o == GOF(FPR24) && sz == 8) return o; - if (o == GOF(FPR25) && sz == 8) return o; - if (o == GOF(FPR26) && sz == 8) return o; - if (o == GOF(FPR27) && sz == 8) return o; - if (o == GOF(FPR28) && sz == 8) return o; - if (o == GOF(FPR29) && sz == 8) return o; - if (o == GOF(FPR30) && sz == 8) return o; - if (o == GOF(FPR31) && sz == 8) return o; + // With ISA 2.06, the "Vector-Scalar Floating-point" category + // provides facilities to support vector and scalar binary floating- + // point operations. A unified register file is an integral part + // of this new facility, combining floating point and vector registers + // using a 64x128-bit vector. These are referred to as VSR[0..63]. + // The floating point registers are now mapped into double word element 0 + // of VSR[0..31]. The 32x128-bit vector registers defined by the "Vector + // Facility [Category: Vector]" are now mapped to VSR[32..63]. + + // Floating point registers . . . + if (o == GOF(VSR0) && sz == 8) return o; + if (o == GOF(VSR1) && sz == 8) return o; + if (o == GOF(VSR2) && sz == 8) return o; + if (o == GOF(VSR3) && sz == 8) return o; + if (o == GOF(VSR4) && sz == 8) return o; + if (o == GOF(VSR5) && sz == 8) return o; + if (o == GOF(VSR6) && sz == 8) return o; + if (o == GOF(VSR7) && sz == 8) return o; + if (o == GOF(VSR8) && sz == 8) return o; + if (o == GOF(VSR9) && sz == 8) return o; + if (o == GOF(VSR10) && sz == 8) return o; + if (o == GOF(VSR11) && sz == 8) return o; + if (o == GOF(VSR12) && sz == 8) return o; + if (o == GOF(VSR13) && sz == 8) return o; + if (o == GOF(VSR14) && sz == 8) return o; + if (o == GOF(VSR15) && sz == 8) return o; + if (o == GOF(VSR16) && sz == 8) return o; + if (o == GOF(VSR17) && sz == 8) return o; + if (o == GOF(VSR18) && sz == 8) return o; + if (o == GOF(VSR19) && sz == 8) return o; + if (o == GOF(VSR20) && sz == 8) return o; + if (o == GOF(VSR21) && sz == 8) return o; + if (o == GOF(VSR22) && sz == 8) return o; + if (o == GOF(VSR23) && sz == 8) return o; + if (o == GOF(VSR24) && sz == 8) return o; + if (o == GOF(VSR25) && sz == 8) return o; + if (o == GOF(VSR26) && sz == 8) return o; + if (o == GOF(VSR27) && sz == 8) return o; + if (o == GOF(VSR28) && sz == 8) return o; + if (o == GOF(VSR29) && sz == 8) return o; + if (o == GOF(VSR30) && sz == 8) return o; + if (o == GOF(VSR31) && sz == 8) return o; /* For the various byte sized XER/CR pieces, use offset 8 - in VR0 .. VR31. */ - tl_assert(SZB(VR0) == 16); - if (o == GOF(XER_SO) && sz == 1) return 8 +GOF(VR0); - if (o == GOF(XER_OV) && sz == 1) return 8 +GOF(VR1); - if (o == GOF(XER_CA) && sz == 1) return 8 +GOF(VR2); - if (o == GOF(XER_BC) && sz == 1) return 8 +GOF(VR3); - - if (o == GOF(CR0_321) && sz == 1) return 8 +GOF(VR4); - if (o == GOF(CR0_0) && sz == 1) return 8 +GOF(VR5); - if (o == GOF(CR1_321) && sz == 1) return 8 +GOF(VR6); - if (o == GOF(CR1_0) && sz == 1) return 8 +GOF(VR7); - if (o == GOF(CR2_321) && sz == 1) return 8 +GOF(VR8); - if (o == GOF(CR2_0) && sz == 1) return 8 +GOF(VR9); - if (o == GOF(CR3_321) && sz == 1) return 8 +GOF(VR10); - if (o == GOF(CR3_0) && sz == 1) return 8 +GOF(VR11); - if (o == GOF(CR4_321) && sz == 1) return 8 +GOF(VR12); - if (o == GOF(CR4_0) && sz == 1) return 8 +GOF(VR13); - if (o == GOF(CR5_321) && sz == 1) return 8 +GOF(VR14); - if (o == GOF(CR5_0) && sz == 1) return 8 +GOF(VR15); - if (o == GOF(CR6_321) && sz == 1) return 8 +GOF(VR16); - if (o == GOF(CR6_0) && sz == 1) return 8 +GOF(VR17); - if (o == GOF(CR7_321) && sz == 1) return 8 +GOF(VR18); - if (o == GOF(CR7_0) && sz == 1) return 8 +GOF(VR19); - - /* Vector registers .. use offset 0 in VR0 .. VR31. */ - if (o >= GOF(VR0) && o+sz <= GOF(VR0) +SZB(VR0)) return 0+ GOF(VR0); - if (o >= GOF(VR1) && o+sz <= GOF(VR1) +SZB(VR1)) return 0+ GOF(VR1); - if (o >= GOF(VR2) && o+sz <= GOF(VR2) +SZB(VR2)) return 0+ GOF(VR2); - if (o >= GOF(VR3) && o+sz <= GOF(VR3) +SZB(VR3)) return 0+ GOF(VR3); - if (o >= GOF(VR4) && o+sz <= GOF(VR4) +SZB(VR4)) return 0+ GOF(VR4); - if (o >= GOF(VR5) && o+sz <= GOF(VR5) +SZB(VR5)) return 0+ GOF(VR5); - if (o >= GOF(VR6) && o+sz <= GOF(VR6) +SZB(VR6)) return 0+ GOF(VR6); - if (o >= GOF(VR7) && o+sz <= GOF(VR7) +SZB(VR7)) return 0+ GOF(VR7); - if (o >= GOF(VR8) && o+sz <= GOF(VR8) +SZB(VR8)) return 0+ GOF(VR8); - if (o >= GOF(VR9) && o+sz <= GOF(VR9) +SZB(VR9)) return 0+ GOF(VR9); - if (o >= GOF(VR10) && o+sz <= GOF(VR10)+SZB(VR10)) return 0+ GOF(VR10); - if (o >= GOF(VR11) && o+sz <= GOF(VR11)+SZB(VR11)) return 0+ GOF(VR11); - if (o >= GOF(VR12) && o+sz <= GOF(VR12)+SZB(VR12)) return 0+ GOF(VR12); - if (o >= GOF(VR13) && o+sz <= GOF(VR13)+SZB(VR13)) return 0+ GOF(VR13); - if (o >= GOF(VR14) && o+sz <= GOF(VR14)+SZB(VR14)) return 0+ GOF(VR14); - if (o >= GOF(VR15) && o+sz <= GOF(VR15)+SZB(VR15)) return 0+ GOF(VR15); - if (o >= GOF(VR16) && o+sz <= GOF(VR16)+SZB(VR16)) return 0+ GOF(VR16); - if (o >= GOF(VR17) && o+sz <= GOF(VR17)+SZB(VR17)) return 0+ GOF(VR17); - if (o >= GOF(VR18) && o+sz <= GOF(VR18)+SZB(VR18)) return 0+ GOF(VR18); - if (o >= GOF(VR19) && o+sz <= GOF(VR19)+SZB(VR19)) return 0+ GOF(VR19); - if (o >= GOF(VR20) && o+sz <= GOF(VR20)+SZB(VR20)) return 0+ GOF(VR20); - if (o >= GOF(VR21) && o+sz <= GOF(VR21)+SZB(VR21)) return 0+ GOF(VR21); - if (o >= GOF(VR22) && o+sz <= GOF(VR22)+SZB(VR22)) return 0+ GOF(VR22); - if (o >= GOF(VR23) && o+sz <= GOF(VR23)+SZB(VR23)) return 0+ GOF(VR23); - if (o >= GOF(VR24) && o+sz <= GOF(VR24)+SZB(VR24)) return 0+ GOF(VR24); - if (o >= GOF(VR25) && o+sz <= GOF(VR25)+SZB(VR25)) return 0+ GOF(VR25); - if (o >= GOF(VR26) && o+sz <= GOF(VR26)+SZB(VR26)) return 0+ GOF(VR26); - if (o >= GOF(VR27) && o+sz <= GOF(VR27)+SZB(VR27)) return 0+ GOF(VR27); - if (o >= GOF(VR28) && o+sz <= GOF(VR28)+SZB(VR28)) return 0+ GOF(VR28); - if (o >= GOF(VR29) && o+sz <= GOF(VR29)+SZB(VR29)) return 0+ GOF(VR29); - if (o >= GOF(VR30) && o+sz <= GOF(VR30)+SZB(VR30)) return 0+ GOF(VR30); - if (o >= GOF(VR31) && o+sz <= GOF(VR31)+SZB(VR31)) return 0+ GOF(VR31); + in VSR0 .. VSR19. */ + tl_assert(SZB(VSR0) == 16); + if (o == GOF(XER_SO) && sz == 1) return 8 +GOF(VSR0); + if (o == GOF(XER_OV) && sz == 1) return 8 +GOF(VSR1); + if (o == GOF(XER_CA) && sz == 1) return 8 +GOF(VSR2); + if (o == GOF(XER_BC) && sz == 1) return 8 +GOF(VSR3); + + if (o == GOF(CR0_321) && sz == 1) return 8 +GOF(VSR4); + if (o == GOF(CR0_0) && sz == 1) return 8 +GOF(VSR5); + if (o == GOF(CR1_321) && sz == 1) return 8 +GOF(VSR6); + if (o == GOF(CR1_0) && sz == 1) return 8 +GOF(VSR7); + if (o == GOF(CR2_321) && sz == 1) return 8 +GOF(VSR8); + if (o == GOF(CR2_0) && sz == 1) return 8 +GOF(VSR9); + if (o == GOF(CR3_321) && sz == 1) return 8 +GOF(VSR10); + if (o == GOF(CR3_0) && sz == 1) return 8 +GOF(VSR11); + if (o == GOF(CR4_321) && sz == 1) return 8 +GOF(VSR12); + if (o == GOF(CR4_0) && sz == 1) return 8 +GOF(VSR13); + if (o == GOF(CR5_321) && sz == 1) return 8 +GOF(VSR14); + if (o == GOF(CR5_0) && sz == 1) return 8 +GOF(VSR15); + if (o == GOF(CR6_321) && sz == 1) return 8 +GOF(VSR16); + if (o == GOF(CR6_0) && sz == 1) return 8 +GOF(VSR17); + if (o == GOF(CR7_321) && sz == 1) return 8 +GOF(VSR18); + if (o == GOF(CR7_0) && sz == 1) return 8 +GOF(VSR19); + + /* Vector registers .. use offset 0 in VSR0 .. VSR63. */ + if (o >= GOF(VSR0) && o+sz <= GOF(VSR0) +SZB(VSR0)) return 0+ GOF(VSR0); + if (o >= GOF(VSR1) && o+sz <= GOF(VSR1) +SZB(VSR1)) return 0+ GOF(VSR1); + if (o >= GOF(VSR2) && o+sz <= GOF(VSR2) +SZB(VSR2)) return 0+ GOF(VSR2); + if (o >= GOF(VSR3) && o+sz <= GOF(VSR3) +SZB(VSR3)) return 0+ GOF(VSR3); + if (o >= GOF(VSR4) && o+sz <= GOF(VSR4) +SZB(VSR4)) return 0+ GOF(VSR4); + if (o >= GOF(VSR5) && o+sz <= GOF(VSR5) +SZB(VSR5)) return 0+ GOF(VSR5); + if (o >= GOF(VSR6) && o+sz <= GOF(VSR6) +SZB(VSR6)) return 0+ GOF(VSR6); + if (o >= GOF(VSR7) && o+sz <= GOF(VSR7) +SZB(VSR7)) return 0+ GOF(VSR7); + if (o >= GOF(VSR8) && o+sz <= GOF(VSR8) +SZB(VSR8)) return 0+ GOF(VSR8); + if (o >= GOF(VSR9) && o+sz <= GOF(VSR9) +SZB(VSR9)) return 0+ GOF(VSR9); + if (o >= GOF(VSR10) && o+sz <= GOF(VSR10)+SZB(VSR10)) return 0+ GOF(VSR10); + if (o >= GOF(VSR11) && o+sz <= GOF(VSR11)+SZB(VSR11)) return 0+ GOF(VSR11); + if (o >= GOF(VSR12) && o+sz <= GOF(VSR12)+SZB(VSR12)) return 0+ GOF(VSR12); + if (o >= GOF(VSR13) && o+sz <= GOF(VSR13)+SZB(VSR13)) return 0+ GOF(VSR13); + if (o >= GOF(VSR14) && o+sz <= GOF(VSR14)+SZB(VSR14)) return 0+ GOF(VSR14); + if (o >= GOF(VSR15) && o+sz <= GOF(VSR15)+SZB(VSR15)) return 0+ GOF(VSR15); + if (o >= GOF(VSR16) && o+sz <= GOF(VSR16)+SZB(VSR16)) return 0+ GOF(VSR16); + if (o >= GOF(VSR17) && o+sz <= GOF(VSR17)+SZB(VSR17)) return 0+ GOF(VSR17); + if (o >= GOF(VSR18) && o+sz <= GOF(VSR18)+SZB(VSR18)) return 0+ GOF(VSR18); + if (o >= GOF(VSR19) && o+sz <= GOF(VSR19)+SZB(VSR19)) return 0+ GOF(VSR19); + if (o >= GOF(VSR20) && o+sz <= GOF(VSR20)+SZB(VSR20)) return 0+ GOF(VSR20); + if (o >= GOF(VSR21) && o+sz <= GOF(VSR21)+SZB(VSR21)) return 0+ GOF(VSR21); + if (o >= GOF(VSR22) && o+sz <= GOF(VSR22)+SZB(VSR22)) return 0+ GOF(VSR22); + if (o >= GOF(VSR23) && o+sz <= GOF(VSR23)+SZB(VSR23)) return 0+ GOF(VSR23); + if (o >= GOF(VSR24) && o+sz <= GOF(VSR24)+SZB(VSR24)) return 0+ GOF(VSR24); + if (o >= GOF(VSR25) && o+sz <= GOF(VSR25)+SZB(VSR25)) return 0+ GOF(VSR25); + if (o >= GOF(VSR26) && o+sz <= GOF(VSR26)+SZB(VSR26)) return 0+ GOF(VSR26); + if (o >= GOF(VSR27) && o+sz <= GOF(VSR27)+SZB(VSR27)) return 0+ GOF(VSR27); + if (o >= GOF(VSR28) && o+sz <= GOF(VSR28)+SZB(VSR28)) return 0+ GOF(VSR28); + if (o >= GOF(VSR29) && o+sz <= GOF(VSR29)+SZB(VSR29)) return 0+ GOF(VSR29); + if (o >= GOF(VSR30) && o+sz <= GOF(VSR30)+SZB(VSR30)) return 0+ GOF(VSR30); + if (o >= GOF(VSR31) && o+sz <= GOF(VSR31)+SZB(VSR31)) return 0+ GOF(VSR31); + if (o >= GOF(VSR32) && o+sz <= GOF(VSR32)+SZB(VSR32)) return 0+ GOF(VSR32); + if (o >= GOF(VSR33) && o+sz <= GOF(VSR33)+SZB(VSR33)) return 0+ GOF(VSR33); + if (o >= GOF(VSR34) && o+sz <= GOF(VSR34)+SZB(VSR34)) return 0+ GOF(VSR34); + if (o >= GOF(VSR35) && o+sz <= GOF(VSR35)+SZB(VSR35)) return 0+ GOF(VSR35); + if (o >= GOF(VSR36) && o+sz <= GOF(VSR36)+SZB(VSR36)) return 0+ GOF(VSR36); + if (o >= GOF(VSR37) && o+sz <= GOF(VSR37)+SZB(VSR37)) return 0+ GOF(VSR37); + if (o >= GOF(VSR38) && o+sz <= GOF(VSR38)+SZB(VSR38)) return 0+ GOF(VSR38); + if (o >= GOF(VSR39) && o+sz <= GOF(VSR39)+SZB(VSR39)) return 0+ GOF(VSR39); + if (o >= GOF(VSR40) && o+sz <= GOF(VSR40)+SZB(VSR40)) return 0+ GOF(VSR40); + if (o >= GOF(VSR41) && o+sz <= GOF(VSR41)+SZB(VSR41)) return 0+ GOF(VSR41); + if (o >= GOF(VSR42) && o+sz <= GOF(VSR42)+SZB(VSR42)) return 0+ GOF(VSR42); + if (o >= GOF(VSR43) && o+sz <= GOF(VSR43)+SZB(VSR43)) return 0+ GOF(VSR43); + if (o >= GOF(VSR44) && o+sz <= GOF(VSR44)+SZB(VSR44)) return 0+ GOF(VSR44); + if (o >= GOF(VSR45) && o+sz <= GOF(VSR45)+SZB(VSR45)) return 0+ GOF(VSR45); + if (o >= GOF(VSR46) && o+sz <= GOF(VSR46)+SZB(VSR46)) return 0+ GOF(VSR46); + if (o >= GOF(VSR47) && o+sz <= GOF(VSR47)+SZB(VSR47)) return 0+ GOF(VSR47); + if (o >= GOF(VSR48) && o+sz <= GOF(VSR48)+SZB(VSR48)) return 0+ GOF(VSR48); + if (o >= GOF(VSR49) && o+sz <= GOF(VSR49)+SZB(VSR49)) return 0+ GOF(VSR49); + if (o >= GOF(VSR50) && o+sz <= GOF(VSR50)+SZB(VSR50)) return 0+ GOF(VSR50); + if (o >= GOF(VSR51) && o+sz <= GOF(VSR51)+SZB(VSR51)) return 0+ GOF(VSR51); + if (o >= GOF(VSR52) && o+sz <= GOF(VSR52)+SZB(VSR52)) return 0+ GOF(VSR52); + if (o >= GOF(VSR53) && o+sz <= GOF(VSR53)+SZB(VSR53)) return 0+ GOF(VSR53); + if (o >= GOF(VSR54) && o+sz <= GOF(VSR54)+SZB(VSR54)) return 0+ GOF(VSR54); + if (o >= GOF(VSR55) && o+sz <= GOF(VSR55)+SZB(VSR55)) return 0+ GOF(VSR55); + if (o >= GOF(VSR56) && o+sz <= GOF(VSR56)+SZB(VSR56)) return 0+ GOF(VSR56); + if (o >= GOF(VSR57) && o+sz <= GOF(VSR57)+SZB(VSR57)) return 0+ GOF(VSR57); + if (o >= GOF(VSR58) && o+sz <= GOF(VSR58)+SZB(VSR58)) return 0+ GOF(VSR58); + if (o >= GOF(VSR59) && o+sz <= GOF(VSR59)+SZB(VSR59)) return 0+ GOF(VSR59); + if (o >= GOF(VSR60) && o+sz <= GOF(VSR60)+SZB(VSR60)) return 0+ GOF(VSR60); + if (o >= GOF(VSR61) && o+sz <= GOF(VSR61)+SZB(VSR61)) return 0+ GOF(VSR61); + if (o >= GOF(VSR62) && o+sz <= GOF(VSR62)+SZB(VSR62)) return 0+ GOF(VSR62); + if (o >= GOF(VSR63) && o+sz <= GOF(VSR63)+SZB(VSR63)) return 0+ GOF(VSR63); VG_(printf)("MC_(get_otrack_shadow_offset)(ppc32)(off=%d,sz=%d)\n", offset,szB); @@ -493,6 +580,7 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(RIP) && sz == 8) return -1; /* slot unused */ if (o == GOF(IP_AT_SYSCALL) && sz == 8) return -1; /* slot unused */ if (o == GOF(IDFLAG) && sz == 8) return -1; /* slot used for %DH */ + if (o == GOF(ACFLAG) && sz == 8) return -1; /* slot unused */ if (o == GOF(FS_ZERO) && sz == 8) return -1; /* slot unused */ if (o == GOF(GS_0x60) && sz == 8) return -1; /* slot unused */ if (o == GOF(TISTART) && sz == 8) return -1; /* slot unused */ @@ -609,6 +697,7 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(ACFLAG) && sz == 4) return -1; /* slot unused */ if (o == GOF(TISTART) && sz == 4) return -1; /* slot unused */ if (o == GOF(TILEN) && sz == 4) return -1; /* slot unused */ + if (o == GOF(NRADDR) && sz == 4) return -1; /* slot unused */ /* Treat %AH, %BH, %CH, %DH as independent registers. To do this requires finding 4 unused 32-bit slots in the second-shadow @@ -680,6 +769,54 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) # undef GOF # undef SZB + /* -------------------- s390x -------------------- */ + +# elif defined(VGA_s390x) +# define GOF(_fieldname) \ + (offsetof(VexGuestS390XState,guest_##_fieldname)) + Int o = offset; + Int sz = szB; + tl_assert(sz > 0); + tl_assert(host_is_big_endian()); + + /* no matter what byte(s) we change, we have changed the full 8 byte value + and need to track this change for the whole register */ + if (o >= GOF(r0) && sz <= 8 && o <= (GOF(r15) + 8 - sz)) + return GOF(r0) + ((o-GOF(r0)) & -8) ; + + + /* fprs are accessed 4 or 8 byte at once. Again, we track that change for + the full register */ + if ((sz == 8 || sz == 4) && o >= GOF(f0) && o <= GOF(f15)+8-sz) + return GOF(f0) + ((o-GOF(f0)) & -8) ; + + /* access registers are accessed 4 bytes at once */ + if (sz == 4 && o >= GOF(a0) && o <= GOF(a15)) + return o; + + /* we access the guest counter either fully or one of the 4byte words */ + if (o == GOF(counter) && (sz == 8 || sz ==4)) + return o; + if (o == GOF(counter) + 4 && sz == 4) + return o; + + if (o == GOF(CC_OP)) return -1; + if (o == GOF(CC_DEP1)) return o; + if (o == GOF(CC_DEP2)) return o; + if (o == GOF(CC_NDEP)) return -1; + if (o == GOF(TISTART)) return -1; + if (o == GOF(TILEN)) return -1; + if (o == GOF(NRADDR)) return -1; + if (o == GOF(IP_AT_SYSCALL)) return -1; + if (o == GOF(fpc)) return -1; + if (o == GOF(IA)) return -1; + if (o == GOF(SYSNO)) return -1; + VG_(printf)("MC_(get_otrack_shadow_offset)(s390x)(off=%d,sz=%d)\n", + offset,szB); + tl_assert(0); +# undef GOF + + /* --------------------- arm --------------------- */ # elif defined(VGA_arm) @@ -721,6 +858,11 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(QFLAG32) && sz == 4) return o; + if (o == GOF(GEFLAG0) && sz == 4) return o; + if (o == GOF(GEFLAG1) && sz == 4) return o; + if (o == GOF(GEFLAG2) && sz == 4) return o; + if (o == GOF(GEFLAG3) && sz == 4) return o; + //if (o == GOF(SYSCALLNO) && sz == 4) return -1; /* slot unused */ //if (o == GOF(CC) && sz == 4) return -1; /* slot unused */ //if (o == GOF(EMWARN) && sz == 4) return -1; /* slot unused */ @@ -731,22 +873,61 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) if (o == GOF(TPIDRURO) && sz == 4) return -1; if (o == GOF(ITSTATE) && sz == 4) return -1; - if (o >= GOF(D0) && o+sz <= GOF(D0) +SZB(D0)) return GOF(D0); - if (o >= GOF(D1) && o+sz <= GOF(D1) +SZB(D1)) return GOF(D1); - if (o >= GOF(D2) && o+sz <= GOF(D2) +SZB(D2)) return GOF(D2); - if (o >= GOF(D3) && o+sz <= GOF(D3) +SZB(D3)) return GOF(D3); - if (o >= GOF(D4) && o+sz <= GOF(D4) +SZB(D4)) return GOF(D4); - if (o >= GOF(D5) && o+sz <= GOF(D5) +SZB(D5)) return GOF(D5); - if (o >= GOF(D6) && o+sz <= GOF(D6) +SZB(D6)) return GOF(D6); - if (o >= GOF(D7) && o+sz <= GOF(D7) +SZB(D7)) return GOF(D7); - if (o >= GOF(D8) && o+sz <= GOF(D8) +SZB(D8)) return GOF(D8); - if (o >= GOF(D9) && o+sz <= GOF(D9) +SZB(D9)) return GOF(D9); - if (o >= GOF(D10) && o+sz <= GOF(D10)+SZB(D10)) return GOF(D10); - if (o >= GOF(D11) && o+sz <= GOF(D11)+SZB(D11)) return GOF(D11); - if (o >= GOF(D12) && o+sz <= GOF(D12)+SZB(D12)) return GOF(D12); - if (o >= GOF(D13) && o+sz <= GOF(D13)+SZB(D13)) return GOF(D13); - if (o >= GOF(D14) && o+sz <= GOF(D14)+SZB(D14)) return GOF(D14); - if (o >= GOF(D15) && o+sz <= GOF(D15)+SZB(D15)) return GOF(D15); + /* Accesses to F or D registers */ + if (sz == 4 || sz == 8) { + if (o >= GOF(D0) && o+sz <= GOF(D0) +SZB(D0)) return GOF(D0); + if (o >= GOF(D1) && o+sz <= GOF(D1) +SZB(D1)) return GOF(D1); + if (o >= GOF(D2) && o+sz <= GOF(D2) +SZB(D2)) return GOF(D2); + if (o >= GOF(D3) && o+sz <= GOF(D3) +SZB(D3)) return GOF(D3); + if (o >= GOF(D4) && o+sz <= GOF(D4) +SZB(D4)) return GOF(D4); + if (o >= GOF(D5) && o+sz <= GOF(D5) +SZB(D5)) return GOF(D5); + if (o >= GOF(D6) && o+sz <= GOF(D6) +SZB(D6)) return GOF(D6); + if (o >= GOF(D7) && o+sz <= GOF(D7) +SZB(D7)) return GOF(D7); + if (o >= GOF(D8) && o+sz <= GOF(D8) +SZB(D8)) return GOF(D8); + if (o >= GOF(D9) && o+sz <= GOF(D9) +SZB(D9)) return GOF(D9); + if (o >= GOF(D10) && o+sz <= GOF(D10)+SZB(D10)) return GOF(D10); + if (o >= GOF(D11) && o+sz <= GOF(D11)+SZB(D11)) return GOF(D11); + if (o >= GOF(D12) && o+sz <= GOF(D12)+SZB(D12)) return GOF(D12); + if (o >= GOF(D13) && o+sz <= GOF(D13)+SZB(D13)) return GOF(D13); + if (o >= GOF(D14) && o+sz <= GOF(D14)+SZB(D14)) return GOF(D14); + if (o >= GOF(D15) && o+sz <= GOF(D15)+SZB(D15)) return GOF(D15); + if (o >= GOF(D16) && o+sz <= GOF(D16)+SZB(D16)) return GOF(D16); + if (o >= GOF(D17) && o+sz <= GOF(D17)+SZB(D17)) return GOF(D17); + if (o >= GOF(D18) && o+sz <= GOF(D18)+SZB(D18)) return GOF(D18); + if (o >= GOF(D19) && o+sz <= GOF(D19)+SZB(D19)) return GOF(D19); + if (o >= GOF(D20) && o+sz <= GOF(D20)+SZB(D20)) return GOF(D20); + if (o >= GOF(D21) && o+sz <= GOF(D21)+SZB(D21)) return GOF(D21); + if (o >= GOF(D22) && o+sz <= GOF(D22)+SZB(D22)) return GOF(D22); + if (o >= GOF(D23) && o+sz <= GOF(D23)+SZB(D23)) return GOF(D23); + if (o >= GOF(D24) && o+sz <= GOF(D24)+SZB(D24)) return GOF(D24); + if (o >= GOF(D25) && o+sz <= GOF(D25)+SZB(D25)) return GOF(D25); + if (o >= GOF(D26) && o+sz <= GOF(D26)+SZB(D26)) return GOF(D26); + if (o >= GOF(D27) && o+sz <= GOF(D27)+SZB(D27)) return GOF(D27); + if (o >= GOF(D28) && o+sz <= GOF(D28)+SZB(D28)) return GOF(D28); + if (o >= GOF(D29) && o+sz <= GOF(D29)+SZB(D29)) return GOF(D29); + if (o >= GOF(D30) && o+sz <= GOF(D30)+SZB(D30)) return GOF(D30); + if (o >= GOF(D31) && o+sz <= GOF(D31)+SZB(D31)) return GOF(D31); + } + + /* Accesses to Q registers */ + if (sz == 16) { + if (o >= GOF(D0) && o+sz <= GOF(D0) +2*SZB(D0)) return GOF(D0); // Q0 + if (o >= GOF(D2) && o+sz <= GOF(D2) +2*SZB(D2)) return GOF(D2); // Q1 + if (o >= GOF(D4) && o+sz <= GOF(D4) +2*SZB(D4)) return GOF(D4); // Q2 + if (o >= GOF(D6) && o+sz <= GOF(D6) +2*SZB(D6)) return GOF(D6); // Q3 + if (o >= GOF(D8) && o+sz <= GOF(D8) +2*SZB(D8)) return GOF(D8); // Q4 + if (o >= GOF(D10) && o+sz <= GOF(D10)+2*SZB(D10)) return GOF(D10); // Q5 + if (o >= GOF(D12) && o+sz <= GOF(D12)+2*SZB(D12)) return GOF(D12); // Q6 + if (o >= GOF(D14) && o+sz <= GOF(D14)+2*SZB(D14)) return GOF(D14); // Q7 + if (o >= GOF(D16) && o+sz <= GOF(D16)+2*SZB(D16)) return GOF(D16); // Q8 + if (o >= GOF(D18) && o+sz <= GOF(D18)+2*SZB(D18)) return GOF(D18); // Q9 + if (o >= GOF(D20) && o+sz <= GOF(D20)+2*SZB(D20)) return GOF(D20); // Q10 + if (o >= GOF(D22) && o+sz <= GOF(D22)+2*SZB(D22)) return GOF(D22); // Q11 + if (o >= GOF(D24) && o+sz <= GOF(D24)+2*SZB(D24)) return GOF(D24); // Q12 + if (o >= GOF(D26) && o+sz <= GOF(D26)+2*SZB(D26)) return GOF(D26); // Q13 + if (o >= GOF(D28) && o+sz <= GOF(D28)+2*SZB(D28)) return GOF(D28); // Q14 + if (o >= GOF(D30) && o+sz <= GOF(D30)+2*SZB(D30)) return GOF(D30); // Q15 + } VG_(printf)("MC_(get_otrack_shadow_offset)(arm)(off=%d,sz=%d)\n", offset,szB); @@ -843,6 +1024,11 @@ IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr ) VG_(printf)("\n"); tl_assert(0); + /* --------------------- s390x --------------------- */ +# elif defined(VGA_s390x) + /* Should never het here because s390x does not use Ist_PutI + and Iex_GetI. */ + tl_assert(0); # else # error "FIXME: not implemented for this architecture" # endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_main.c index 0dee75c06..de6f84414 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_main.c @@ -32,6 +32,7 @@ #include "pub_tool_basics.h" #include "pub_tool_aspacemgr.h" +#include "pub_tool_gdbserver.h" #include "pub_tool_hashtable.h" // For mc_include.h #include "pub_tool_libcbase.h" #include "pub_tool_libcassert.h" @@ -1052,67 +1053,17 @@ INLINE Bool MC_(in_ignored_range) ( Addr a ) return False; } - -/* Parse a 32- or 64-bit hex number, including leading 0x, from string - starting at *ppc, putting result in *result, and return True. Or - fail, in which case *ppc and *result are undefined, and return - False. */ - -static Bool isHex ( UChar c ) -{ - return ((c >= '0' && c <= '9') || - (c >= 'a' && c <= 'f') || - (c >= 'A' && c <= 'F')); -} - -static UInt fromHex ( UChar c ) -{ - if (c >= '0' && c <= '9') - return (UInt)c - (UInt)'0'; - if (c >= 'a' && c <= 'f') - return 10 + (UInt)c - (UInt)'a'; - if (c >= 'A' && c <= 'F') - return 10 + (UInt)c - (UInt)'A'; - /*NOTREACHED*/ - tl_assert(0); - return 0; -} - -static Bool parse_Addr ( UChar** ppc, Addr* result ) -{ - Int used, limit = 2 * sizeof(Addr); - if (**ppc != '0') - return False; - (*ppc)++; - if (**ppc != 'x') - return False; - (*ppc)++; - *result = 0; - used = 0; - while (isHex(**ppc)) { - UInt d = fromHex(**ppc); - tl_assert(d < 16); - *result = ((*result) << 4) | fromHex(**ppc); - (*ppc)++; - used++; - if (used > limit) return False; - } - if (used == 0) - return False; - return True; -} - -/* Parse two such numbers separated by a dash, or fail. */ +/* Parse two Addr separated by a dash, or fail. */ static Bool parse_range ( UChar** ppc, Addr* result1, Addr* result2 ) { - Bool ok = parse_Addr(ppc, result1); + Bool ok = VG_(parse_Addr) (ppc, result1); if (!ok) return False; if (**ppc != '-') return False; (*ppc)++; - ok = parse_Addr(ppc, result2); + ok = VG_(parse_Addr) (ppc, result2); if (!ok) return False; return True; @@ -3867,7 +3818,7 @@ static UInt mb_get_origin_for_guest_offset ( ThreadId tid, static void mc_post_reg_write ( CorePart part, ThreadId tid, PtrdiffT offset, SizeT size) { -# define MAX_REG_WRITE_SIZE 1408 +# define MAX_REG_WRITE_SIZE 1664 UChar area[MAX_REG_WRITE_SIZE]; tl_assert(size <= MAX_REG_WRITE_SIZE); VG_(memset)(area, V_BITS8_DEFINED, size); @@ -4516,17 +4467,20 @@ static Int mc_get_or_set_vbits_for_client ( Addr a, Addr vbits, SizeT szB, - Bool setting /* True <=> set vbits, False <=> get vbits */ + Bool setting, /* True <=> set vbits, False <=> get vbits */ + Bool is_client_request /* True <=> real user request + False <=> internal call from gdbserver */ ) { SizeT i; Bool ok; UChar vbits8; - /* Check that arrays are addressible before doing any getting/setting. */ + /* Check that arrays are addressible before doing any getting/setting. + vbits to be checked only for real user request. */ for (i = 0; i < szB; i++) { if (VA_BITS2_NOACCESS == get_vabits2(a + i) || - VA_BITS2_NOACCESS == get_vabits2(vbits + i)) { + (is_client_request && VA_BITS2_NOACCESS == get_vabits2(vbits + i))) { return 3; } } @@ -4545,8 +4499,9 @@ static Int mc_get_or_set_vbits_for_client ( tl_assert(ok); ((UChar*)vbits)[i] = vbits8; } - // The bytes in vbits[] have now been set, so mark them as such. - MC_(make_mem_defined)(vbits, szB); + if (is_client_request) + // The bytes in vbits[] have now been set, so mark them as such. + MC_(make_mem_defined)(vbits, szB); } return 1; @@ -4743,7 +4698,7 @@ static Bool mc_expensive_sanity_check ( void ) /*------------------------------------------------------------*/ Bool MC_(clo_partial_loads_ok) = False; -Long MC_(clo_freelist_vol) = 10*1000*1000LL; +Long MC_(clo_freelist_vol) = 20*1000*1000LL; LeakCheckMode MC_(clo_leak_check) = LC_Summary; VgRes MC_(clo_leak_resolution) = Vg_HighRes; Bool MC_(clo_show_reachable) = False; @@ -4874,7 +4829,7 @@ static void mc_print_usage(void) " --undef-value-errors=no|yes check for undefined value errors [yes]\n" " --track-origins=no|yes show origins of undefined values? [no]\n" " --partial-loads-ok=no|yes too hard to explain here; see manual [no]\n" -" --freelist-vol= volume of freed blocks queue [10000000]\n" +" --freelist-vol= volume of freed blocks queue [20000000]\n" " --workaround-gcc296-bugs=no|yes self explanatory [no]\n" " --ignore-ranges=0xPP-0xQQ[,0xRR-0xSS] assume given addresses are OK\n" " --malloc-fill= fill malloc'd areas with given value\n" @@ -4977,6 +4932,220 @@ static void show_client_block_stats ( void ) ); } +static void print_monitor_help ( void ) +{ + VG_(gdb_printf) + ( +"\n" +"memcheck monitor commands:\n" +" mc.get_vbits []\n" +" returns validity bits for (or 1) bytes at \n" +" bit values 0 = valid, 1 = invalid, __ = unaddressable byte\n" +" Example: mc.get_vbits 0x8049c78 10\n" +" mc.make_memory [noaccess|undefined\n" +" |defined|ifaddressabledefined] []\n" +" mark (or 1) bytes at with the given accessibility\n" +" mc.check_memory [addressable|defined] []\n" +" check that (or 1) bytes at have the given accessibility\n" +" and outputs a description of \n" +" mc.leak_check [full*|summary]\n" +" [reachable|leakpossible*|definiteleak]\n" +" * = defaults\n" +" Examples: mc.leak_check\n" +" mc.leak_check any summary\n" +"\n"); +} + +/* return True if request recognised, False otherwise */ +static Bool handle_gdb_monitor_command (ThreadId tid, Char *req) +{ + Char* wcmd; + Char s[VG_(strlen(req))]; /* copy for strtok_r */ + Char *ssaveptr; + + VG_(strcpy) (s, req); + + wcmd = VG_(strtok_r) (s, " ", &ssaveptr); + /* NB: if possible, avoid introducing a new command below which + starts with the same 4 first letters as an already existing + command. This ensures a shorter abbreviation for the user. */ + switch (VG_(keyword_id) + ("help mc.get_vbits mc.leak_check mc.make_memory mc.check_memory", + wcmd, kwd_report_duplicated_matches)) { + case -2: /* multiple matches */ + return True; + case -1: /* not found */ + return False; + case 0: /* help */ + print_monitor_help(); + return True; + case 1: { /* mc.get_vbits */ + Addr address; + SizeT szB = 1; + VG_(strtok_get_address_and_size) (&address, &szB, &ssaveptr); + if (szB != 0) { + UChar vbits; + Int i; + Int unaddressable = 0; + for (i = 0; i < szB; i++) { + Int res = mc_get_or_set_vbits_for_client + (address+i, (Addr) &vbits, 1, + False, /* get them */ + False /* is client request */ ); + if ((i % 32) == 0 && i != 0) + VG_(gdb_printf) ("\n"); + else if ((i % 4) == 0 && i != 0) + VG_(gdb_printf) (" "); + if (res == 1) { + VG_(gdb_printf) ("%02x", vbits); + } else { + tl_assert(3 == res); + unaddressable++; + VG_(gdb_printf) ("__"); + } + } + if ((i % 80) != 0) + VG_(gdb_printf) ("\n"); + if (unaddressable) { + VG_(gdb_printf) + ("Address %p len %ld has %d bytes unaddressable\n", + (void *)address, szB, unaddressable); + } + } + return True; + } + case 2: { /* mc.leak_check */ + Int err = 0; + Bool save_clo_show_reachable = MC_(clo_show_reachable); + Bool save_clo_show_possibly_lost = MC_(clo_show_possibly_lost); + Char* kw; + + LeakCheckMode mode; + + MC_(clo_show_reachable) = False; + mode = LC_Full; + + for (kw = VG_(strtok_r) (NULL, " ", &ssaveptr); + kw != NULL; + kw = VG_(strtok_r) (NULL, " ", &ssaveptr)) { + switch (VG_(keyword_id) + ("full summary " + "reachable leakpossible definiteleak", + kw, kwd_report_all)) { + case -2: err++; break; + case -1: err++; break; + case 0: mode = LC_Full; break; + case 1: mode = LC_Summary; break; + case 2: MC_(clo_show_reachable) = True; + MC_(clo_show_possibly_lost) = True; break; + case 3: MC_(clo_show_reachable) = False; + MC_(clo_show_possibly_lost) = True; break; + case 4: MC_(clo_show_reachable) = False; + MC_(clo_show_possibly_lost) = False; break; + default: tl_assert (0); + } + } + if (!err) + MC_(detect_memory_leaks)(tid, mode); + + MC_(clo_show_reachable) = save_clo_show_reachable; + MC_(clo_show_possibly_lost) = save_clo_show_possibly_lost; + return True; + } + + case 3: { /* mc.make_memory */ + Addr address; + SizeT szB = 1; + int kwdid = VG_(keyword_id) + ("noaccess undefined defined ifaddressabledefined", + VG_(strtok_r) (NULL, " ", &ssaveptr), kwd_report_all); + VG_(strtok_get_address_and_size) (&address, &szB, &ssaveptr); + if (address == (Addr) 0 && szB == 0) return True; + switch (kwdid) { + case -2: break; + case -1: break; + case 0: MC_(make_mem_noaccess) (address, szB); break; + case 1: make_mem_undefined_w_tid_and_okind ( address, szB, tid, + MC_OKIND_USER ); break; + case 2: MC_(make_mem_defined) ( address, szB ); break; + case 3: make_mem_defined_if_addressable ( address, szB ); break;; + default: tl_assert(0); + } + return True; + } + + case 4: { /* mc.check_memory */ + Addr address; + SizeT szB = 1; + Addr bad_addr; + UInt okind; + char* src; + UInt otag; + UInt ecu; + ExeContext* origin_ec; + MC_ReadResult res; + + int kwdid = VG_(keyword_id) + ("addressable defined", + VG_(strtok_r) (NULL, " ", &ssaveptr), kwd_report_all); + VG_(strtok_get_address_and_size) (&address, &szB, &ssaveptr); + if (address == (Addr) 0 && szB == 0) return True; + switch (kwdid) { + case -2: break; + case -1: break; + case 0: + if (is_mem_addressable ( address, szB, &bad_addr )) + VG_(gdb_printf) ("Address %p len %ld addressable\n", + (void *)address, szB); + else + VG_(gdb_printf) + ("Address %p len %ld not addressable:\nbad address %p\n", + (void *)address, szB, (void *) bad_addr); + MC_(pp_describe_addr) (address); + break; + case 1: res = is_mem_defined ( address, szB, &bad_addr, &otag ); + if (MC_AddrErr == res) + VG_(gdb_printf) + ("Address %p len %ld not addressable:\nbad address %p\n", + (void *)address, szB, (void *) bad_addr); + else if (MC_ValueErr == res) { + okind = otag & 3; + switch (okind) { + case MC_OKIND_STACK: + src = " was created by a stack allocation"; break; + case MC_OKIND_HEAP: + src = " was created by a heap allocation"; break; + case MC_OKIND_USER: + src = " was created by a client request"; break; + case MC_OKIND_UNKNOWN: + src = ""; break; + default: tl_assert(0); + } + VG_(gdb_printf) + ("Address %p len %ld not defined:\n" + "Uninitialised value at %p%s\n", + (void *)address, szB, (void *) bad_addr, src); + ecu = otag & ~3; + if (VG_(is_plausible_ECU)(ecu)) { + origin_ec = VG_(get_ExeContext_from_ECU)( ecu ); + VG_(pp_ExeContext)( origin_ec ); + } + } + else + VG_(gdb_printf) ("Address %p len %ld defined\n", + (void *)address, szB); + MC_(pp_describe_addr) (address); + break; + default: tl_assert(0); + } + return True; + } + + default: + tl_assert(0); + return False; + } +} /*------------------------------------------------------------*/ /*--- Client requests ---*/ @@ -4990,6 +5159,7 @@ static Bool mc_handle_client_request ( ThreadId tid, UWord* arg, UWord* ret ) if (!VG_IS_TOOL_USERREQ('M','C',arg[0]) && VG_USERREQ__MALLOCLIKE_BLOCK != arg[0] + && VG_USERREQ__RESIZEINPLACE_BLOCK != arg[0] && VG_USERREQ__FREELIKE_BLOCK != arg[0] && VG_USERREQ__CREATE_MEMPOOL != arg[0] && VG_USERREQ__DESTROY_MEMPOOL != arg[0] @@ -4998,7 +5168,8 @@ static Bool mc_handle_client_request ( ThreadId tid, UWord* arg, UWord* ret ) && VG_USERREQ__MEMPOOL_TRIM != arg[0] && VG_USERREQ__MOVE_MEMPOOL != arg[0] && VG_USERREQ__MEMPOOL_CHANGE != arg[0] - && VG_USERREQ__MEMPOOL_EXISTS != arg[0]) + && VG_USERREQ__MEMPOOL_EXISTS != arg[0] + && VG_USERREQ__GDB_MONITOR_COMMAND != arg[0]) return False; switch (arg[0]) { @@ -5076,12 +5247,16 @@ static Bool mc_handle_client_request ( ThreadId tid, UWord* arg, UWord* ret ) case VG_USERREQ__GET_VBITS: *ret = mc_get_or_set_vbits_for_client - ( arg[1], arg[2], arg[3], False /* get them */ ); + ( arg[1], arg[2], arg[3], + False /* get them */, + True /* is client request */ ); break; case VG_USERREQ__SET_VBITS: *ret = mc_get_or_set_vbits_for_client - ( arg[1], arg[2], arg[3], True /* set them */ ); + ( arg[1], arg[2], arg[3], + True /* set them */, + True /* is client request */ ); break; case VG_USERREQ__COUNT_LEAKS: { /* count leaked bytes */ @@ -5124,6 +5299,15 @@ static Bool mc_handle_client_request ( ThreadId tid, UWord* arg, UWord* ret ) MC_AllocCustom, MC_(malloc_list) ); return True; } + case VG_USERREQ__RESIZEINPLACE_BLOCK: { + Addr p = (Addr)arg[1]; + SizeT oldSizeB = arg[2]; + SizeT newSizeB = arg[3]; + UInt rzB = arg[4]; + + MC_(handle_resizeInPlace) ( tid, p, oldSizeB, newSizeB, rzB ); + return True; + } case VG_USERREQ__FREELIKE_BLOCK: { Addr p = (Addr)arg[1]; UInt rzB = arg[2]; @@ -5208,6 +5392,14 @@ static Bool mc_handle_client_request ( ThreadId tid, UWord* arg, UWord* ret ) return True; } + case VG_USERREQ__GDB_MONITOR_COMMAND: { + Bool handled = handle_gdb_monitor_command (tid, (Char*)arg[1]); + if (handled) + *ret = 1; + else + *ret = 0; + return handled; + } default: VG_(message)( @@ -5783,6 +5975,22 @@ static void mc_fini ( Int exitcode ) } } +/* mark the given addr/len unaddressable for watchpoint implementation + The PointKind will be handled at access time */ +static Bool mc_mark_unaddressable_for_watchpoint (PointKind kind, Bool insert, + Addr addr, SizeT len) +{ + /* GDBTD this is somewhat fishy. We might rather have to save the previous + accessibility and definedness in gdbserver so as to allow restoring it + properly. Currently, we assume that the user only watches things + which are properly addressable and defined */ + if (insert) + MC_(make_mem_noaccess) (addr, len); + else + MC_(make_mem_defined) (addr, len); + return True; +} + static void mc_pre_clo_init(void) { VG_(details_name) ("Memcheck"); @@ -5791,7 +5999,7 @@ static void mc_pre_clo_init(void) VG_(details_copyright_author)( "Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al."); VG_(details_bug_reports_to) (VG_BUGS_TO); - VG_(details_avg_translation_sizeB) ( 556 ); + VG_(details_avg_translation_sizeB) ( 640 ); VG_(basic_tool_funcs) (mc_post_clo_init, MC_(instrument), @@ -5928,6 +6136,8 @@ static void mc_pre_clo_init(void) VG_(track_post_reg_write) ( mc_post_reg_write ); VG_(track_post_reg_write_clientcall_return)( mc_post_reg_write_clientcall ); + VG_(needs_watchpoint) ( mc_mark_unaddressable_for_watchpoint ); + init_shadow_memory(); MC_(malloc_list) = VG_(HT_construct)( "MC_(malloc_list)" ); MC_(mempool_list) = VG_(HT_construct)( "MC_(mempool_list)" ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_malloc_wrappers.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_malloc_wrappers.c index 4466aa525..d8f40a869 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_malloc_wrappers.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_malloc_wrappers.c @@ -65,7 +65,8 @@ static ULong cmalloc_bs_mallocd = 0; /* Record malloc'd blocks. */ VgHashTable MC_(malloc_list) = NULL; -/* Memory pools. */ +/* Memory pools: a hash table of MC_Mempools. Search key is + MC_Mempool::pool. */ VgHashTable MC_(mempool_list) = NULL; /* Records blocks after freeing. */ @@ -120,7 +121,8 @@ static void add_to_freed_queue ( MC_Chunk* mc ) mc1->next = NULL; /* just paranoia */ /* free MC_Chunk */ - VG_(cli_free) ( (void*)(mc1->data) ); + if (MC_AllocCustom != mc1->allockind) + VG_(cli_free) ( (void*)(mc1->data) ); VG_(free) ( mc1 ); } } @@ -290,14 +292,10 @@ void die_and_free_mem ( ThreadId tid, MC_Chunk* mc, SizeT rzB ) accessible with a client request... */ MC_(make_mem_noaccess)( mc->data-rzB, mc->szB + 2*rzB ); - /* Put it out of harm's way for a while, if not from a client request */ - if (MC_AllocCustom != mc->allockind) { - /* Record where freed */ - mc->where = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ ); - add_to_freed_queue ( mc ); - } else { - VG_(free) ( mc ); - } + /* Record where freed */ + mc->where = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ ); + /* Put it out of harm's way for a while */ + add_to_freed_queue ( mc ); } void MC_(handle_free) ( ThreadId tid, Addr p, UInt rzB, MC_AllocKind kind ) @@ -488,8 +486,48 @@ SizeT MC_(malloc_usable_size) ( ThreadId tid, void* p ) return ( mc ? mc->szB : 0 ); } +/* This handles the in place resize of a block, as performed by the + VALGRIND_RESIZEINPLACE_BLOCK client request. It is unrelated to, + and not used for, handling of the normal libc realloc() + function. */ +void MC_(handle_resizeInPlace)(ThreadId tid, Addr p, + SizeT oldSizeB, SizeT newSizeB, SizeT rzB) +{ + MC_Chunk* mc = VG_(HT_lookup) ( MC_(malloc_list), (UWord)p ); + if (!mc || mc->szB != oldSizeB || newSizeB == 0) { + /* Reject if: p is not found, or oldSizeB is wrong, + or new block would be empty. */ + MC_(record_free_error) ( tid, p ); + return; + } + + if (oldSizeB == newSizeB) + return; + + mc->szB = newSizeB; + if (newSizeB < oldSizeB) { + MC_(make_mem_noaccess)( p + newSizeB, oldSizeB - newSizeB + rzB ); + } else { + ExeContext* ec = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/); + UInt ecu = VG_(get_ECU_from_ExeContext)(ec); + MC_(make_mem_undefined_w_otag)( p + oldSizeB, newSizeB - oldSizeB, + ecu | MC_OKIND_HEAP ); + if (rzB > 0) + MC_(make_mem_noaccess)( p + newSizeB, rzB ); + } +} + + +/*------------------------------------------------------------*/ +/*--- Memory pool stuff. ---*/ +/*------------------------------------------------------------*/ + +/* Set to 1 for intensive sanity checking. Is very expensive though + and should not be used in production scenarios. See #255966. */ +#define MP_DETAILED_SANITY_CHECKS 0 + +static void check_mempool_sane(MC_Mempool* mp); /*forward*/ -/* Memory pool stuff. */ void MC_(create_mempool)(Addr pool, UInt rzB, Bool is_zeroed) { @@ -512,6 +550,7 @@ void MC_(create_mempool)(Addr pool, UInt rzB, Bool is_zeroed) mp->rzB = rzB; mp->is_zeroed = is_zeroed; mp->chunks = VG_(HT_construct)( "MC_(create_mempool)" ); + check_mempool_sane(mp); /* Paranoia ... ensure this area is off-limits to the client, so the mp->data field isn't visible to the leak checker. If memory @@ -543,6 +582,7 @@ void MC_(destroy_mempool)(Addr pool) MC_(record_illegal_mempool_error) ( tid, pool ); return; } + check_mempool_sane(mp); // Clean up the chunks, one by one VG_(HT_ResetIter)(mp->chunks); @@ -657,10 +697,10 @@ void MC_(mempool_alloc)(ThreadId tid, Addr pool, Addr addr, SizeT szB) if (mp == NULL) { MC_(record_illegal_mempool_error) ( tid, pool ); } else { - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); MC_(new_block)(tid, addr, szB, /*ignored*/0, mp->is_zeroed, MC_AllocCustom, mp->chunks); - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); } } @@ -681,7 +721,7 @@ void MC_(mempool_free)(Addr pool, Addr addr) VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH); } - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); mc = VG_(HT_remove)(mp->chunks, (UWord)addr); if (mc == NULL) { MC_(record_free_error)(tid, (Addr)addr); @@ -695,7 +735,7 @@ void MC_(mempool_free)(Addr pool, Addr addr) } die_and_free_mem ( tid, mc, mp->rzB ); - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); } @@ -754,7 +794,7 @@ void MC_(mempool_trim)(Addr pool, Addr addr, SizeT szB) if (VG_(HT_remove)(mp->chunks, (UWord)mc->data) == NULL) { MC_(record_free_error)(tid, (Addr)mc->data); VG_(free)(chunks); - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); return; } die_and_free_mem ( tid, mc, mp->rzB ); @@ -769,7 +809,7 @@ void MC_(mempool_trim)(Addr pool, Addr addr, SizeT szB) if (VG_(HT_remove)(mp->chunks, (UWord)mc->data) == NULL) { MC_(record_free_error)(tid, (Addr)mc->data); VG_(free)(chunks); - check_mempool_sane(mp); + if (MP_DETAILED_SANITY_CHECKS) check_mempool_sane(mp); return; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_replace_strmem.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_replace_strmem.c index d500367f3..c45d270b0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_replace_strmem.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_replace_strmem.c @@ -89,13 +89,10 @@ Bool is_overlap ( void* dst, const void* src, SizeT dstlen, SizeT srclen ) // This is a macro rather than a function because we don't want to have an // extra function in the stack trace. -#define RECORD_OVERLAP_ERROR(s, src, dst, len) \ -{ \ - Word unused_res; \ - VALGRIND_DO_CLIENT_REQUEST(unused_res, 0, \ - _VG_USERREQ__MEMCHECK_RECORD_OVERLAP_ERROR, \ - s, src, dst, len, 0); \ -} +#define RECORD_OVERLAP_ERROR(s, src, dst, len) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + _VG_USERREQ__MEMCHECK_RECORD_OVERLAP_ERROR, \ + s, src, dst, len, 0) #define STRRCHR(soname, fnname) \ @@ -403,6 +400,118 @@ STRNCMP(VG_Z_DYLD, strncmp) #endif +#define STRCASECMP(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2 ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2 ) \ + { \ + extern int tolower(int); \ + register unsigned char c1; \ + register unsigned char c2; \ + while (True) { \ + c1 = tolower(*(unsigned char *)s1); \ + c2 = tolower(*(unsigned char *)s2); \ + if (c1 != c2) break; \ + if (c1 == 0) break; \ + s1++; s2++; \ + } \ + if ((unsigned char)c1 < (unsigned char)c2) return -1; \ + if ((unsigned char)c1 > (unsigned char)c2) return 1; \ + return 0; \ + } + +STRCASECMP(VG_Z_LIBC_SONAME, strcasecmp) +#if defined(VGO_linux) +STRCASECMP(VG_Z_LIBC_SONAME, __GI_strcasecmp) +#endif + + +#define STRNCASECMP(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax ) \ + { \ + extern int tolower(int); \ + SizeT n = 0; \ + while (True) { \ + if (n >= nmax) return 0; \ + if (*s1 == 0 && *s2 == 0) return 0; \ + if (*s1 == 0) return -1; \ + if (*s2 == 0) return 1; \ + \ + if (tolower(*(unsigned char*)s1) < tolower(*(unsigned char*)s2)) return -1; \ + if (tolower(*(unsigned char*)s1) > tolower(*(unsigned char*)s2)) return 1; \ + \ + s1++; s2++; n++; \ + } \ + } + +STRNCASECMP(VG_Z_LIBC_SONAME, strncasecmp) +#if defined(VGO_linux) +STRNCASECMP(VG_Z_LIBC_SONAME, __GI_strncasecmp) +#elif defined(VGO_darwin) +STRNCASECMP(VG_Z_DYLD, strncasecmp) +#endif + + +#define STRCASECMP_L(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, void* locale ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, void* locale ) \ + { \ + extern int tolower_l(int, void*) __attribute__((weak)); \ + register unsigned char c1; \ + register unsigned char c2; \ + while (True) { \ + c1 = tolower_l(*(unsigned char *)s1, locale); \ + c2 = tolower_l(*(unsigned char *)s2, locale); \ + if (c1 != c2) break; \ + if (c1 == 0) break; \ + s1++; s2++; \ + } \ + if ((unsigned char)c1 < (unsigned char)c2) return -1; \ + if ((unsigned char)c1 > (unsigned char)c2) return 1; \ + return 0; \ + } + +STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l) +#if defined(VGO_linux) +STRCASECMP_L(VG_Z_LIBC_SONAME, __GI_strcasecmp_l) +#endif + + +#define STRNCASECMP_L(soname, fnname) \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax, void* locale ); \ + int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ + ( const char* s1, const char* s2, SizeT nmax, void* locale ) \ + { \ + extern int tolower_l(int, void*) __attribute__((weak)); \ + SizeT n = 0; \ + while (True) { \ + if (n >= nmax) return 0; \ + if (*s1 == 0 && *s2 == 0) return 0; \ + if (*s1 == 0) return -1; \ + if (*s2 == 0) return 1; \ + \ + if (tolower_l(*(unsigned char*)s1, locale) < tolower_l(*(unsigned char*)s2, locale)) return -1; \ + if (tolower_l(*(unsigned char*)s1, locale) > tolower_l(*(unsigned char*)s2, locale)) return 1; \ + \ + s1++; s2++; n++; \ + } \ + } + +STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l) +#if defined(VGO_linux) +STRNCASECMP_L(VG_Z_LIBC_SONAME, __GI_strncasecmp_l) +#elif defined(VGO_darwin) +STRNCASECMP_L(VG_Z_DYLD, strncasecmp_l) +#endif + + #define STRCMP(soname, fnname) \ int VG_REPLACE_FUNCTION_ZU(soname,fnname) \ ( const char* s1, const char* s2 ); \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_translate.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_translate.c index 394bec29c..3f027fccc 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_translate.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/mc_translate.c @@ -121,6 +121,7 @@ static IRType shadowTypeV ( IRType ty ); static IRExpr* expr2vbits ( struct _MCEnv* mce, IRExpr* e ); static IRTemp findShadowTmpB ( struct _MCEnv* mce, IRTemp orig ); +static IRExpr *i128_const_zero(void); /*------------------------------------------------------------*/ /*--- Memcheck running state, and tmp management. ---*/ @@ -343,7 +344,7 @@ static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 ) /* Shadow state is always accessed using integer types. This returns an integer type with the same size (as per sizeofIRType) as the given type. The only valid shadow types are Bit, I8, I16, I32, - I64, V128. */ + I64, I128, V128. */ static IRType shadowTypeV ( IRType ty ) { @@ -356,6 +357,7 @@ static IRType shadowTypeV ( IRType ty ) case Ity_I128: return ty; case Ity_F32: return Ity_I32; case Ity_F64: return Ity_I64; + case Ity_F128: return Ity_I128; case Ity_V128: return Ity_V128; default: ppIRType(ty); VG_(tool_panic)("memcheck:shadowTypeV"); @@ -371,6 +373,7 @@ static IRExpr* definedOfType ( IRType ty ) { case Ity_I16: return IRExpr_Const(IRConst_U16(0)); case Ity_I32: return IRExpr_Const(IRConst_U32(0)); case Ity_I64: return IRExpr_Const(IRConst_U64(0)); + case Ity_I128: return i128_const_zero(); case Ity_V128: return IRExpr_Const(IRConst_V128(0x0000)); default: VG_(tool_panic)("memcheck:definedOfType"); } @@ -437,6 +440,18 @@ static IRAtom* assignNew ( HChar cat, MCEnv* mce, IRType ty, IRExpr* e ) } +/*------------------------------------------------------------*/ +/*--- Helper functions for 128-bit ops ---*/ +/*------------------------------------------------------------*/ +static IRExpr *i128_const_zero(void) +{ + return binop(Iop_64HLto128, IRExpr_Const(IRConst_U64(0)), + IRExpr_Const(IRConst_U64(0))); +} + +/* There are no 128-bit loads and/or stores. So we do not need to worry + about that in expr2vbits_Load */ + /*------------------------------------------------------------*/ /*--- Constructing definedness primitive ops ---*/ /*------------------------------------------------------------*/ @@ -499,6 +514,20 @@ static IRAtom* mkUifU64 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) { return assignNew('V', mce, Ity_I64, binop(Iop_Or64, a1, a2)); } +static IRAtom* mkUifU128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) { + IRAtom *tmp1, *tmp2, *tmp3, *tmp4, *tmp5, *tmp6; + tl_assert(isShadowAtom(mce,a1)); + tl_assert(isShadowAtom(mce,a2)); + tmp1 = assignNew('V', mce, Ity_I64, unop(Iop_128to64, a1)); + tmp2 = assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, a1)); + tmp3 = assignNew('V', mce, Ity_I64, unop(Iop_128to64, a2)); + tmp4 = assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, a2)); + tmp5 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp1, tmp3)); + tmp6 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp2, tmp4)); + + return assignNew('V', mce, Ity_I128, binop(Iop_64HLto128, tmp6, tmp5)); +} + static IRAtom* mkUifUV128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) { tl_assert(isShadowAtom(mce,a1)); tl_assert(isShadowAtom(mce,a2)); @@ -511,6 +540,7 @@ static IRAtom* mkUifU ( MCEnv* mce, IRType vty, IRAtom* a1, IRAtom* a2 ) { case Ity_I16: return mkUifU16(mce, a1, a2); case Ity_I32: return mkUifU32(mce, a1, a2); case Ity_I64: return mkUifU64(mce, a1, a2); + case Ity_I128: return mkUifU128(mce, a1, a2); case Ity_V128: return mkUifUV128(mce, a1, a2); default: VG_(printf)("\n"); ppIRType(vty); VG_(printf)("\n"); @@ -650,6 +680,10 @@ static IRAtom* mkImproveORV128 ( MCEnv* mce, IRAtom* data, IRAtom* vbits ) /* --------- Pessimising casts. --------- */ +/* The function returns an expression of type DST_TY. If any of the VBITS + is undefined (value == 1) the resulting expression has all bits set to + 1. Otherwise, all bits are 0. */ + static IRAtom* mkPCastTo( MCEnv* mce, IRType dst_ty, IRAtom* vbits ) { IRType src_ty; @@ -1202,6 +1236,7 @@ void do_shadow_PUT ( MCEnv* mce, Int offset, ty = typeOfIRExpr(mce->sb->tyenv, vatom); tl_assert(ty != Ity_I1); + tl_assert(ty != Ity_I128); if (isAlwaysDefd(mce, offset, sizeofIRType(ty))) { /* later: no ... */ /* emit code to emit a complaint if any of the vbits are 1. */ @@ -1263,6 +1298,7 @@ IRExpr* shadow_GET ( MCEnv* mce, Int offset, IRType ty ) { IRType tyS = shadowTypeV(ty); tl_assert(ty != Ity_I1); + tl_assert(ty != Ity_I128); if (isAlwaysDefd(mce, offset, sizeofIRType(ty))) { /* Always defined, return all zeroes of the relevant type */ return definedOfType(tyS); @@ -1414,6 +1450,22 @@ IRAtom* mkLazy3 ( MCEnv* mce, IRType finalVty, return at; } + /* I32 x I128 x I128 -> I128 */ + /* Standard FP idiom: rm x FParg1 x FParg2 -> FPresult */ + if (t1 == Ity_I32 && t2 == Ity_I128 && t3 == Ity_I128 + && finalVty == Ity_I128) { + if (0) VG_(printf)("mkLazy3: I32 x I128 x I128 -> I128\n"); + /* Widen 1st arg to I128. Since 1st arg is typically a rounding + mode indication which is fully defined, this should get + folded out later. */ + at = mkPCastTo(mce, Ity_I128, va1); + /* Now fold in 2nd and 3rd args. */ + at = mkUifU(mce, Ity_I128, at, va2); + at = mkUifU(mce, Ity_I128, at, va3); + /* and PCast once again. */ + at = mkPCastTo(mce, Ity_I128, at); + return at; + } if (1) { VG_(printf)("mkLazy3: "); ppIRType(t1); @@ -1474,6 +1526,19 @@ IRAtom* mkLazy4 ( MCEnv* mce, IRType finalVty, at = mkPCastTo(mce, Ity_I64, at); return at; } + /* I32 x I32 x I32 x I32 -> I32 */ + /* Standard FP idiom: rm x FParg1 x FParg2 x FParg3 -> FPresult */ + if (t1 == Ity_I32 && t2 == Ity_I32 && t3 == Ity_I32 && t4 == Ity_I32 + && finalVty == Ity_I32) { + if (0) VG_(printf)("mkLazy4: I32 x I32 x I32 x I32 -> I32\n"); + at = va1; + /* Now fold in 2nd, 3rd, 4th args. */ + at = mkUifU(mce, Ity_I32, at, va2); + at = mkUifU(mce, Ity_I32, at, va3); + at = mkUifU(mce, Ity_I32, at, va4); + at = mkPCastTo(mce, Ity_I32, at); + return at; + } if (1) { VG_(printf)("mkLazy4: "); @@ -1506,7 +1571,7 @@ IRAtom* mkLazyN ( MCEnv* mce, IRAtom* here; IRAtom* curr; IRType mergeTy; - IRType mergeTy64 = True; + Bool mergeTy64 = True; /* Decide on the type of the merge intermediary. If all relevant args are I64, then it's I64. In all other circumstances, use @@ -1724,6 +1789,16 @@ static IRAtom* mkPCast8x8 ( MCEnv* mce, IRAtom* at ) return assignNew('V', mce, Ity_I64, unop(Iop_CmpNEZ8x8, at)); } +static IRAtom* mkPCast16x2 ( MCEnv* mce, IRAtom* at ) +{ + return assignNew('V', mce, Ity_I32, unop(Iop_CmpNEZ16x2, at)); +} + +static IRAtom* mkPCast8x4 ( MCEnv* mce, IRAtom* at ) +{ + return assignNew('V', mce, Ity_I32, unop(Iop_CmpNEZ8x4, at)); +} + /* Here's a simple scheme capable of handling ops derived from SSE1 code and while only generating ops that can be efficiently @@ -2071,6 +2146,26 @@ IRAtom* binary64Ix1 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 ) return at; } +/* --- 32-bit versions --- */ + +static +IRAtom* binary8Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 ) +{ + IRAtom* at; + at = mkUifU32(mce, vatom1, vatom2); + at = mkPCast8x4(mce, at); + return at; +} + +static +IRAtom* binary16Ix2 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 ) +{ + IRAtom* at; + at = mkUifU32(mce, vatom1, vatom2); + at = mkPCast16x2(mce, at); + return at; +} + /*------------------------------------------------------------*/ /*--- Generate shadow values from all kinds of IRExprs. ---*/ @@ -2106,6 +2201,12 @@ IRAtom* expr2vbits_Qop ( MCEnv* mce, case Iop_MSubF64r32: /* I32(rm) x F64 x F64 x F64 -> F64 */ return mkLazy4(mce, Ity_I64, vatom1, vatom2, vatom3, vatom4); + + case Iop_MAddF32: + case Iop_MSubF32: + /* I32(rm) x F32 x F32 x F32 -> F32 */ + return mkLazy4(mce, Ity_I32, vatom1, vatom2, vatom3, vatom4); + default: ppIROp(op); VG_(tool_panic)("memcheck:expr2vbits_Qop"); @@ -2132,6 +2233,12 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, tl_assert(sameKindedAtoms(atom2,vatom2)); tl_assert(sameKindedAtoms(atom3,vatom3)); switch (op) { + case Iop_AddF128: + case Iop_SubF128: + case Iop_MulF128: + case Iop_DivF128: + /* I32(rm) x F128 x F128 -> F128 */ + return mkLazy3(mce, Ity_I128, vatom1, vatom2, vatom3); case Iop_AddF64: case Iop_AddF64r32: case Iop_SubF64: @@ -2197,6 +2304,30 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, tl_assert(sameKindedAtoms(atom2,vatom2)); switch (op) { + /* 32-bit SIMD */ + + case Iop_Add16x2: + case Iop_HAdd16Ux2: + case Iop_HAdd16Sx2: + case Iop_Sub16x2: + case Iop_HSub16Ux2: + case Iop_HSub16Sx2: + case Iop_QAdd16Sx2: + case Iop_QSub16Sx2: + return binary16Ix2(mce, vatom1, vatom2); + + case Iop_Add8x4: + case Iop_HAdd8Ux4: + case Iop_HAdd8Sx4: + case Iop_Sub8x4: + case Iop_HSub8Ux4: + case Iop_HSub8Sx4: + case Iop_QSub8Ux4: + case Iop_QAdd8Ux4: + case Iop_QSub8Sx4: + case Iop_QAdd8Sx4: + return binary8Ix4(mce, vatom1, vatom2); + /* 64-bit SIMD */ case Iop_ShrN8x8: @@ -2793,10 +2924,19 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, /* Scalar floating point */ + case Iop_F32toI64S: + /* I32(rm) x F32 -> I64 */ + return mkLazy2(mce, Ity_I64, vatom1, vatom2); + + case Iop_I64StoF32: + /* I32(rm) x I64 -> F32 */ + return mkLazy2(mce, Ity_I32, vatom1, vatom2); + case Iop_RoundF64toInt: case Iop_RoundF64toF32: case Iop_F64toI64S: case Iop_I64StoF64: + case Iop_I64UtoF64: case Iop_SinF64: case Iop_CosF64: case Iop_TanF64: @@ -2810,9 +2950,30 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, /* I32(rm) x I32/F32 -> I32/F32 */ return mkLazy2(mce, Ity_I32, vatom1, vatom2); + case Iop_SqrtF128: + /* I32(rm) x F128 -> F128 */ + return mkLazy2(mce, Ity_I128, vatom1, vatom2); + + case Iop_I32StoF32: + case Iop_F32toI32S: + /* First arg is I32 (rounding mode), second is F32/I32 (data). */ + return mkLazy2(mce, Ity_I32, vatom1, vatom2); + + case Iop_F128toI32S: /* IRRoundingMode(I32) x F128 -> signed I32 */ + case Iop_F128toF32: /* IRRoundingMode(I32) x F128 -> F32 */ + return mkLazy2(mce, Ity_I32, vatom1, vatom2); + + case Iop_F128toI64S: /* IRRoundingMode(I32) x F128 -> signed I64 */ + case Iop_F128toF64: /* IRRoundingMode(I32) x F128 -> F64 */ + return mkLazy2(mce, Ity_I64, vatom1, vatom2); + + case Iop_F64HLtoF128: + return assignNew('V', mce, Ity_I128, binop(Iop_64HLto128, vatom1, vatom2)); + case Iop_F64toI32U: case Iop_F64toI32S: case Iop_F64toF32: + case Iop_I64UtoF32: /* First arg is I32 (rounding mode), second is F64 (data). */ return mkLazy2(mce, Ity_I32, vatom1, vatom2); @@ -2820,7 +2981,9 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, /* First arg is I32 (rounding mode), second is F64 (data). */ return mkLazy2(mce, Ity_I16, vatom1, vatom2); + case Iop_CmpF32: case Iop_CmpF64: + case Iop_CmpF128: return mkLazy2(mce, Ity_I32, vatom1, vatom2); /* non-FP after here */ @@ -2838,6 +3001,7 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_32HLto64: return assignNew('V', mce, Ity_I64, binop(op, vatom1, vatom2)); + case Iop_DivModS64to64: case Iop_MullS64: case Iop_MullU64: { IRAtom* vLo64 = mkLeft64(mce, mkUifU64(mce, vatom1,vatom2)); @@ -2866,6 +3030,7 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, return assignNew('V', mce, Ity_I16, binop(Iop_8HLto16, vHi8, vLo8)); } + case Iop_Sad8Ux4: /* maybe we could do better? ftm, do mkLazy2. */ case Iop_DivS32: case Iop_DivU32: return mkLazy2(mce, Ity_I32, vatom1, vatom2); @@ -3087,6 +3252,21 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) case Iop_Reverse64_32x4: return assignNew('V', mce, Ity_V128, unop(op, vatom)); + case Iop_F128HItoF64: /* F128 -> high half of F128 */ + return assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, vatom)); + case Iop_F128LOtoF64: /* F128 -> low half of F128 */ + return assignNew('V', mce, Ity_I64, unop(Iop_128to64, vatom)); + + case Iop_NegF128: + case Iop_AbsF128: + return mkPCastTo(mce, Ity_I128, vatom); + + case Iop_I32StoF128: /* signed I32 -> F128 */ + case Iop_I64StoF128: /* signed I64 -> F128 */ + case Iop_F32toF128: /* F32 -> F128 */ + case Iop_F64toF128: /* F64 -> F128 */ + return mkPCastTo(mce, Ity_I128, vatom); + case Iop_F32toF64: case Iop_I32StoF64: case Iop_I32UtoF64: @@ -3130,6 +3310,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) case Iop_Reverse64_32x2: return assignNew('V', mce, Ity_I64, unop(op, vatom)); + case Iop_I16StoF32: case Iop_64to32: case Iop_64HIto32: case Iop_1Uto32: @@ -3273,6 +3454,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) return mkPCast16x8(mce, assignNew('V', mce, Ity_V128, unop(op, mkPCast8x16(mce, vatom)))); + case Iop_I64UtoF32: default: ppIROp(op); VG_(tool_panic)("memcheck:expr2vbits_Unop"); @@ -4481,6 +4663,7 @@ static Bool isBogusAtom ( IRAtom* at ) case Ico_U32: n = (ULong)con->Ico.U32; break; case Ico_U64: n = (ULong)con->Ico.U64; break; case Ico_F64: return False; + case Ico_F32i: return False; case Ico_F64i: return False; case Ico_V128: return False; default: ppIRExpr(at); tl_assert(0); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/memcheck.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/memcheck.h index 46d234324..628511be0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/memcheck.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/memcheck.h @@ -107,66 +107,48 @@ typedef /* Mark memory at _qzz_addr as unaddressable for _qzz_len bytes. */ #define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ VG_USERREQ__MAKE_MEM_NOACCESS, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Similarly, mark memory at _qzz_addr as addressable but undefined for _qzz_len bytes. */ #define VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ VG_USERREQ__MAKE_MEM_UNDEFINED, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Similarly, mark memory at _qzz_addr as addressable and defined for _qzz_len bytes. */ #define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ VG_USERREQ__MAKE_MEM_DEFINED, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Similar to VALGRIND_MAKE_MEM_DEFINED except that addressability is not altered: bytes which are addressable are marked as defined, but those which are not addressable are left unchanged. */ -#define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ +#define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ VG_USERREQ__MAKE_MEM_DEFINED_IF_ADDRESSABLE, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Create a block-description handle. The description is an ascii string which is included in any messages pertaining to addresses within the specified memory range. Has no other effect on the properties of the memory range. */ -#define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len, _qzz_desc) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ - VG_USERREQ__CREATE_BLOCK, \ - _qzz_addr, _qzz_len, _qzz_desc, \ - 0, 0); \ - _qzz_res; \ - })) +#define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len, _qzz_desc) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ + VG_USERREQ__CREATE_BLOCK, \ + (_qzz_addr), (_qzz_len), (_qzz_desc), \ + 0, 0) /* Discard a block-description-handle. Returns 1 for an invalid handle, 0 for a valid handle. */ #define VALGRIND_DISCARD(_qzz_blkindex) \ - (__extension__ ({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* default return */, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \ VG_USERREQ__DISCARD, \ - 0, _qzz_blkindex, 0, 0, 0); \ - _qzz_res; \ - })) + 0, (_qzz_blkindex), 0, 0, 0) /* Client-code macros to check the state of memory. */ @@ -175,25 +157,19 @@ typedef If suitable addressibility is not established, Valgrind prints an error message and returns the address of the first offending byte. Otherwise it returns zero. */ -#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ - VG_USERREQ__CHECK_MEM_IS_ADDRESSABLE,\ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len) \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__CHECK_MEM_IS_ADDRESSABLE, \ + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Check that memory at _qzz_addr is addressable and defined for _qzz_len bytes. If suitable addressibility and definedness are not established, Valgrind prints an error message and returns the address of the first offending byte. Otherwise it returns zero. */ #define VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len) \ - (__extension__({unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__CHECK_MEM_IS_DEFINED, \ - _qzz_addr, _qzz_len, 0, 0, 0); \ - _qzz_res; \ - })) + (_qzz_addr), (_qzz_len), 0, 0, 0) /* Use this macro to force the definedness and addressibility of an lvalue to be checked. If suitable addressibility and definedness @@ -208,19 +184,15 @@ typedef /* Do a full memory leak check (like --leak-check=full) mid-execution. */ #define VALGRIND_DO_LEAK_CHECK \ - {unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__DO_LEAK_CHECK, \ - 0, 0, 0, 0, 0); \ - } + 0, 0, 0, 0, 0) /* Do a summary memory leak check (like --leak-check=summary) mid-execution. */ -#define VALGRIND_DO_QUICK_LEAK_CHECK \ - {unsigned long _qzz_res; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ +#define VALGRIND_DO_QUICK_LEAK_CHECK \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__DO_LEAK_CHECK, \ - 1, 0, 0, 0, 0); \ - } + 1, 0, 0, 0, 0) /* Return number of leaked, dubious, reachable and suppressed bytes found by all previous leak checks. They must be lvalues. */ @@ -231,10 +203,10 @@ typedef are. We also initialise '_qzz_leaked', etc because VG_USERREQ__COUNT_LEAKS doesn't mark the values returned as defined. */ \ - {unsigned long _qzz_res; \ + { \ unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \ unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__COUNT_LEAKS, \ &_qzz_leaked, &_qzz_dubious, \ &_qzz_reachable, &_qzz_suppressed, 0); \ @@ -253,10 +225,10 @@ typedef are. We also initialise '_qzz_leaked', etc because VG_USERREQ__COUNT_LEAKS doesn't mark the values returned as defined. */ \ - {unsigned long _qzz_res; \ + { \ unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \ unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ + VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ VG_USERREQ__COUNT_LEAK_BLOCKS, \ &_qzz_leaked, &_qzz_dubious, \ &_qzz_reachable, &_qzz_suppressed, 0); \ @@ -276,15 +248,12 @@ typedef The metadata is not copied in cases 0, 2 or 3 so it should be impossible to segfault your system by using this call. */ -#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \ - (__extension__({unsigned long _qzz_res; \ - char* czza = (char*)zza; \ - char* czzvbits = (char*)zzvbits; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ - VG_USERREQ__GET_VBITS, \ - czza, czzvbits, zznbytes, 0, 0 ); \ - _qzz_res; \ - })) +#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__GET_VBITS, \ + (const char*)(zza), \ + (char*)(zzvbits), \ + (zznbytes), 0, 0) /* Set the validity data for addresses [zza..zza+zznbytes-1], copying it from the provided zzvbits array. Return values: @@ -295,15 +264,12 @@ typedef The metadata is not copied in cases 0, 2 or 3 so it should be impossible to segfault your system by using this call. */ -#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \ - (__extension__({unsigned int _qzz_res; \ - char* czza = (char*)zza; \ - char* czzvbits = (char*)zzvbits; \ - VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ - VG_USERREQ__SET_VBITS, \ - czza, czzvbits, zznbytes, 0, 0 ); \ - _qzz_res; \ - })) +#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \ + (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \ + VG_USERREQ__SET_VBITS, \ + (const char*)(zza), \ + (const char*)(zzvbits), \ + (zznbytes), 0, 0 ) #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/perf/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/perf/Makefile.in index 169c3b173..10755dffd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/perf/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/perf/Makefile.in @@ -113,6 +113,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -142,12 +144,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -300,7 +297,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -329,6 +326,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -357,6 +359,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.am index c8914762b..1d54f374f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.am @@ -11,6 +11,13 @@ if VGCONF_ARCHS_INCLUDE_AMD64 SUBDIRS += amd64 endif +if VGCONF_ARCHS_INCLUDE_PPC32 +SUBDIRS += ppc32 +endif +if VGCONF_ARCHS_INCLUDE_PPC64 +SUBDIRS += ppc64 +endif + # OS-specific tests if VGCONF_OS_IS_LINUX SUBDIRS += linux @@ -27,7 +34,7 @@ if VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX SUBDIRS += amd64-linux endif -DIST_SUBDIRS = x86 amd64 linux darwin x86-linux amd64-linux . +DIST_SUBDIRS = x86 amd64 ppc32 ppc64 linux darwin x86-linux amd64-linux . dist_noinst_SCRIPTS = \ filter_addressable \ @@ -46,8 +53,11 @@ EXTRA_DIST = \ badaddrvalue.stdout.exp badaddrvalue.vgtest \ badfree-2trace.stderr.exp badfree-2trace.vgtest \ badfree.stderr.exp badfree.vgtest \ + badfree3.stderr.exp badfree3.vgtest \ badjump.stderr.exp badjump.vgtest \ badjump2.stderr.exp badjump2.vgtest \ + badjump.stderr.exp-s390x \ + badjump2.stderr.exp-s390x \ badloop.stderr.exp badloop.vgtest \ badpoll.stderr.exp badpoll.vgtest \ badrw.stderr.exp badrw.vgtest \ @@ -85,8 +95,6 @@ EXTRA_DIST = \ leak-pool-4.vgtest leak-pool-4.stderr.exp \ leak-pool-5.vgtest leak-pool-5.stderr.exp \ leak-tree.vgtest leak-tree.stderr.exp \ - linux-syslog-syscall linux-syslog-syscall.stderr.exp \ - linux-syscalls-2007 linux-syscalls-2007.stderr.exp \ long_namespace_xml.vgtest long_namespace_xml.stdout.exp \ long_namespace_xml.stderr.exp \ long-supps.vgtest long-supps.stderr.exp long-supps.supp \ @@ -106,6 +114,7 @@ EXTRA_DIST = \ memcmptest.stderr.exp memcmptest.stderr.exp2 \ memcmptest.stdout.exp memcmptest.vgtest \ mempool.stderr.exp mempool.vgtest \ + mempool2.stderr.exp mempool2.vgtest \ metadata.stderr.exp metadata.stdout.exp metadata.vgtest \ mismatches.stderr.exp mismatches.vgtest \ mmaptest.stderr.exp mmaptest.vgtest \ @@ -126,11 +135,14 @@ EXTRA_DIST = \ origin5-bz2.stderr.exp-glibc25-x86 \ origin5-bz2.stderr.exp-glibc25-amd64 \ origin5-bz2.stderr.exp-glibc27-ppc64 \ + origin5-bz2.stderr.exp-glibc212-s390x \ origin6-fp.vgtest origin6-fp.stdout.exp \ origin6-fp.stderr.exp-glibc25-amd64 \ origin6-fp.stderr.exp-glibc27-ppc64 \ overlap.stderr.exp overlap.stdout.exp overlap.vgtest \ partiallydefinedeq.vgtest partiallydefinedeq.stderr.exp \ + partiallydefinedeq.stderr.exp4 \ + partiallydefinedeq.stderr.exp3 \ partiallydefinedeq.stderr.exp2 \ partiallydefinedeq.stdout.exp \ partial_load_ok.vgtest partial_load_ok.stderr.exp partial_load_ok.stderr.exp64 \ @@ -156,6 +168,7 @@ EXTRA_DIST = \ str_tester.stderr.exp str_tester.vgtest \ supp-dir.vgtest supp-dir.stderr.exp \ supp_unknown.stderr.exp supp_unknown.vgtest supp_unknown.supp \ + supp_unknown.stderr.exp-s390x \ supp1.stderr.exp supp1.vgtest \ supp2.stderr.exp supp2.vgtest \ supp.supp \ @@ -163,12 +176,12 @@ EXTRA_DIST = \ trivialleak.stderr.exp trivialleak.vgtest \ unit_libcbase.stderr.exp unit_libcbase.vgtest \ unit_oset.stderr.exp unit_oset.stdout.exp unit_oset.vgtest \ - varinfo1.vgtest varinfo1.stdout.exp varinfo1.stderr.exp \ - varinfo2.vgtest varinfo2.stdout.exp varinfo2.stderr.exp \ - varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp \ - varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp \ - varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp \ - varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp \ + varinfo1.vgtest varinfo1.stdout.exp varinfo1.stderr.exp varinfo1.stderr.exp-ppc64\ + varinfo2.vgtest varinfo2.stdout.exp varinfo2.stderr.exp varinfo2.stderr.exp-ppc64\ + varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp varinfo3.stderr.exp-ppc64\ + varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp varinfo4.stderr.exp-ppc64\ + varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp varinfo5.stderr.exp-ppc64\ + varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp varinfo6.stderr.exp-ppc64\ vcpu_bz2.stdout.exp vcpu_bz2.stderr.exp vcpu_bz2.vgtest \ vcpu_fbench.stdout.exp vcpu_fbench.stderr.exp vcpu_fbench.vgtest \ vcpu_fnfns.stdout.exp vcpu_fnfns.stdout.exp-glibc28-amd64 \ @@ -208,15 +221,13 @@ check_PROGRAMS = \ leak-cycle \ leak-pool \ leak-tree \ - linux-syslog-syscall \ - linux-syscalls-2007 \ long_namespace_xml \ long-supps \ mallinfo \ malloc_free_fill \ malloc_usable malloc1 malloc2 malloc3 manuel1 manuel2 manuel3 \ match-overrun \ - memalign_test memalign2 memcmptest mempool mmaptest \ + memalign_test memalign2 memcmptest mempool mempool2 mmaptest \ mismatches new_override metadata \ nanoleak_supp nanoleak2 new_nothrow \ noisy_child \ @@ -263,6 +274,10 @@ deep_templates_CXXFLAGS = $(AM_CFLAGS) -O -gstabs error_counts_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ +execve_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ + +execve2_CFLAGS = $(AM_CFLASG) @FLAG_W_NO_NONNULL@ + inits_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ long_namespace_xml_SOURCES = long_namespace_xml.cpp @@ -287,8 +302,9 @@ origin4_many_CFLAGS = $(AM_CFLAGS) -O origin5_bz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline origin6_fp_CFLAGS = $(AM_CFLAGS) -O -# Don't allow GCC to inline memcpy(), because then we can't intercept it -overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy +# Don't allow GCC to inline memcpy() and strcpy(), +# because then we can't intercept it +overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.in index 550f12df8..f8c576e71 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/Makefile.in @@ -52,14 +52,16 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(noinst_HEADERS) \ # Arch-specific tests. @VGCONF_ARCHS_INCLUDE_X86_TRUE@am__append_1 = x86 @VGCONF_ARCHS_INCLUDE_AMD64_TRUE@am__append_2 = amd64 +@VGCONF_ARCHS_INCLUDE_PPC32_TRUE@am__append_3 = ppc32 +@VGCONF_ARCHS_INCLUDE_PPC64_TRUE@am__append_4 = ppc64 # OS-specific tests -@VGCONF_OS_IS_LINUX_TRUE@am__append_3 = linux -@VGCONF_OS_IS_DARWIN_TRUE@am__append_4 = darwin +@VGCONF_OS_IS_LINUX_TRUE@am__append_5 = linux +@VGCONF_OS_IS_DARWIN_TRUE@am__append_6 = darwin # Platform-specific tests -@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_5 = x86-linux -@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_6 = amd64-linux +@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_7 = x86-linux +@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_8 = amd64-linux check_PROGRAMS = addressable$(EXEEXT) atomic_incs$(EXEEXT) \ badaddrvalue$(EXEEXT) badfree$(EXEEXT) badjump$(EXEEXT) \ badjump2$(EXEEXT) badloop$(EXEEXT) badpoll$(EXEEXT) \ @@ -72,37 +74,37 @@ check_PROGRAMS = addressable$(EXEEXT) atomic_incs$(EXEEXT) \ erringfds$(EXEEXT) file_locking$(EXEEXT) fprw$(EXEEXT) \ fwrite$(EXEEXT) inits$(EXEEXT) inline$(EXEEXT) leak-0$(EXEEXT) \ leak-cases$(EXEEXT) leak-cycle$(EXEEXT) leak-pool$(EXEEXT) \ - leak-tree$(EXEEXT) linux-syslog-syscall$(EXEEXT) \ - linux-syscalls-2007$(EXEEXT) long_namespace_xml$(EXEEXT) \ + leak-tree$(EXEEXT) long_namespace_xml$(EXEEXT) \ long-supps$(EXEEXT) mallinfo$(EXEEXT) \ malloc_free_fill$(EXEEXT) malloc_usable$(EXEEXT) \ malloc1$(EXEEXT) malloc2$(EXEEXT) malloc3$(EXEEXT) \ manuel1$(EXEEXT) manuel2$(EXEEXT) manuel3$(EXEEXT) \ match-overrun$(EXEEXT) memalign_test$(EXEEXT) \ memalign2$(EXEEXT) memcmptest$(EXEEXT) mempool$(EXEEXT) \ - mmaptest$(EXEEXT) mismatches$(EXEEXT) new_override$(EXEEXT) \ - metadata$(EXEEXT) nanoleak_supp$(EXEEXT) nanoleak2$(EXEEXT) \ - new_nothrow$(EXEEXT) noisy_child$(EXEEXT) null_socket$(EXEEXT) \ - origin1-yes$(EXEEXT) origin2-not-quite$(EXEEXT) \ - origin3-no$(EXEEXT) origin4-many$(EXEEXT) origin5-bz2$(EXEEXT) \ - origin6-fp$(EXEEXT) overlap$(EXEEXT) \ - partiallydefinedeq$(EXEEXT) partial_load$(EXEEXT) \ - pdb-realloc$(EXEEXT) pdb-realloc2$(EXEEXT) pipe$(EXEEXT) \ - pointer-trace$(EXEEXT) post-syscall$(EXEEXT) realloc1$(EXEEXT) \ - realloc2$(EXEEXT) realloc3$(EXEEXT) sh-mem$(EXEEXT) \ - sh-mem-random$(EXEEXT) sigaltstack$(EXEEXT) signal2$(EXEEXT) \ - sigprocmask$(EXEEXT) sigkill$(EXEEXT) strchr$(EXEEXT) \ - str_tester$(EXEEXT) supp_unknown$(EXEEXT) supp1$(EXEEXT) \ - supp2$(EXEEXT) suppfree$(EXEEXT) trivialleak$(EXEEXT) \ - unit_libcbase$(EXEEXT) unit_oset$(EXEEXT) varinfo1$(EXEEXT) \ - varinfo2$(EXEEXT) varinfo3$(EXEEXT) varinfo4$(EXEEXT) \ - varinfo5$(EXEEXT) varinfo5so.so$(EXEEXT) varinfo6$(EXEEXT) \ - vcpu_fbench$(EXEEXT) vcpu_fnfns$(EXEEXT) xml1$(EXEEXT) \ - wrap1$(EXEEXT) wrap2$(EXEEXT) wrap3$(EXEEXT) wrap4$(EXEEXT) \ - wrap5$(EXEEXT) wrap6$(EXEEXT) wrap7$(EXEEXT) \ - wrap7so.so$(EXEEXT) wrap8$(EXEEXT) writev$(EXEEXT) -@VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE@am__append_7 = -mfloat-abi=softfp -@VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE@am__append_8 = -mfloat-abi=softfp + mempool2$(EXEEXT) mmaptest$(EXEEXT) mismatches$(EXEEXT) \ + new_override$(EXEEXT) metadata$(EXEEXT) nanoleak_supp$(EXEEXT) \ + nanoleak2$(EXEEXT) new_nothrow$(EXEEXT) noisy_child$(EXEEXT) \ + null_socket$(EXEEXT) origin1-yes$(EXEEXT) \ + origin2-not-quite$(EXEEXT) origin3-no$(EXEEXT) \ + origin4-many$(EXEEXT) origin5-bz2$(EXEEXT) origin6-fp$(EXEEXT) \ + overlap$(EXEEXT) partiallydefinedeq$(EXEEXT) \ + partial_load$(EXEEXT) pdb-realloc$(EXEEXT) \ + pdb-realloc2$(EXEEXT) pipe$(EXEEXT) pointer-trace$(EXEEXT) \ + post-syscall$(EXEEXT) realloc1$(EXEEXT) realloc2$(EXEEXT) \ + realloc3$(EXEEXT) sh-mem$(EXEEXT) sh-mem-random$(EXEEXT) \ + sigaltstack$(EXEEXT) signal2$(EXEEXT) sigprocmask$(EXEEXT) \ + sigkill$(EXEEXT) strchr$(EXEEXT) str_tester$(EXEEXT) \ + supp_unknown$(EXEEXT) supp1$(EXEEXT) supp2$(EXEEXT) \ + suppfree$(EXEEXT) trivialleak$(EXEEXT) unit_libcbase$(EXEEXT) \ + unit_oset$(EXEEXT) varinfo1$(EXEEXT) varinfo2$(EXEEXT) \ + varinfo3$(EXEEXT) varinfo4$(EXEEXT) varinfo5$(EXEEXT) \ + varinfo5so.so$(EXEEXT) varinfo6$(EXEEXT) vcpu_fbench$(EXEEXT) \ + vcpu_fnfns$(EXEEXT) xml1$(EXEEXT) wrap1$(EXEEXT) \ + wrap2$(EXEEXT) wrap3$(EXEEXT) wrap4$(EXEEXT) wrap5$(EXEEXT) \ + wrap6$(EXEEXT) wrap7$(EXEEXT) wrap7so.so$(EXEEXT) \ + wrap8$(EXEEXT) writev$(EXEEXT) +@VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE@am__append_9 = -mfloat-abi=softfp +@VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE@am__append_10 = -mfloat-abi=softfp subdir = memcheck/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -182,11 +184,15 @@ errs1_SOURCES = errs1.c errs1_OBJECTS = errs1.$(OBJEXT) errs1_LDADD = $(LDADD) execve_SOURCES = execve.c -execve_OBJECTS = execve.$(OBJEXT) +execve_OBJECTS = execve-execve.$(OBJEXT) execve_LDADD = $(LDADD) +execve_LINK = $(CCLD) $(execve_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ execve2_SOURCES = execve2.c -execve2_OBJECTS = execve2.$(OBJEXT) +execve2_OBJECTS = execve2-execve2.$(OBJEXT) execve2_LDADD = $(LDADD) +execve2_LINK = $(CCLD) $(execve2_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ exitprog_SOURCES = exitprog.c exitprog_OBJECTS = exitprog.$(OBJEXT) exitprog_LDADD = $(LDADD) @@ -222,12 +228,6 @@ leak_pool_LDADD = $(LDADD) leak_tree_SOURCES = leak-tree.c leak_tree_OBJECTS = leak-tree.$(OBJEXT) leak_tree_LDADD = $(LDADD) -linux_syscalls_2007_SOURCES = linux-syscalls-2007.c -linux_syscalls_2007_OBJECTS = linux-syscalls-2007.$(OBJEXT) -linux_syscalls_2007_LDADD = $(LDADD) -linux_syslog_syscall_SOURCES = linux-syslog-syscall.c -linux_syslog_syscall_OBJECTS = linux-syslog-syscall.$(OBJEXT) -linux_syslog_syscall_LDADD = $(LDADD) long_supps_SOURCES = long-supps.c long_supps_OBJECTS = long-supps.$(OBJEXT) long_supps_LDADD = $(LDADD) @@ -280,6 +280,9 @@ memcmptest_LINK = $(CCLD) $(memcmptest_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ mempool_SOURCES = mempool.c mempool_OBJECTS = mempool.$(OBJEXT) mempool_LDADD = $(LDADD) +mempool2_SOURCES = mempool2.c +mempool2_OBJECTS = mempool2.$(OBJEXT) +mempool2_LDADD = $(LDADD) metadata_SOURCES = metadata.c metadata_OBJECTS = metadata.$(OBJEXT) metadata_LDADD = $(LDADD) @@ -537,16 +540,15 @@ SOURCES = addressable.c atomic_incs.c badaddrvalue.c badfree.c \ doublefree.c erringfds.c error_counts.c errs1.c execve.c \ execve2.c exitprog.c file_locking.c fprw.c fwrite.c inits.c \ inline.c leak-0.c leak-cases.c leak-cycle.c leak-pool.c \ - leak-tree.c linux-syscalls-2007.c linux-syslog-syscall.c \ - long-supps.c $(long_namespace_xml_SOURCES) mallinfo.c \ - malloc1.c malloc2.c malloc3.c malloc_free_fill.c \ + leak-tree.c long-supps.c $(long_namespace_xml_SOURCES) \ + mallinfo.c malloc1.c malloc2.c malloc3.c malloc_free_fill.c \ malloc_usable.c manuel1.c manuel2.c manuel3.c match-overrun.c \ - memalign2.c memalign_test.c memcmptest.c mempool.c metadata.c \ - $(mismatches_SOURCES) mmaptest.c nanoleak2.c nanoleak_supp.c \ - $(new_nothrow_SOURCES) $(new_override_SOURCES) noisy_child.c \ - null_socket.c origin1-yes.c origin2-not-quite.c origin3-no.c \ - origin4-many.c origin5-bz2.c origin6-fp.c overlap.c \ - partial_load.c partiallydefinedeq.c pdb-realloc.c \ + memalign2.c memalign_test.c memcmptest.c mempool.c mempool2.c \ + metadata.c $(mismatches_SOURCES) mmaptest.c nanoleak2.c \ + nanoleak_supp.c $(new_nothrow_SOURCES) $(new_override_SOURCES) \ + noisy_child.c null_socket.c origin1-yes.c origin2-not-quite.c \ + origin3-no.c origin4-many.c origin5-bz2.c origin6-fp.c \ + overlap.c partial_load.c partiallydefinedeq.c pdb-realloc.c \ pdb-realloc2.c pipe.c pointer-trace.c post-syscall.c \ realloc1.c realloc2.c realloc3.c sh-mem.c sh-mem-random.c \ sigaltstack.c sigkill.c signal2.c sigprocmask.c str_tester.c \ @@ -564,16 +566,15 @@ DIST_SOURCES = addressable.c atomic_incs.c badaddrvalue.c badfree.c \ doublefree.c erringfds.c error_counts.c errs1.c execve.c \ execve2.c exitprog.c file_locking.c fprw.c fwrite.c inits.c \ inline.c leak-0.c leak-cases.c leak-cycle.c leak-pool.c \ - leak-tree.c linux-syscalls-2007.c linux-syslog-syscall.c \ - long-supps.c $(long_namespace_xml_SOURCES) mallinfo.c \ - malloc1.c malloc2.c malloc3.c malloc_free_fill.c \ + leak-tree.c long-supps.c $(long_namespace_xml_SOURCES) \ + mallinfo.c malloc1.c malloc2.c malloc3.c malloc_free_fill.c \ malloc_usable.c manuel1.c manuel2.c manuel3.c match-overrun.c \ - memalign2.c memalign_test.c memcmptest.c mempool.c metadata.c \ - $(mismatches_SOURCES) mmaptest.c nanoleak2.c nanoleak_supp.c \ - $(new_nothrow_SOURCES) $(new_override_SOURCES) noisy_child.c \ - null_socket.c origin1-yes.c origin2-not-quite.c origin3-no.c \ - origin4-many.c origin5-bz2.c origin6-fp.c overlap.c \ - partial_load.c partiallydefinedeq.c pdb-realloc.c \ + memalign2.c memalign_test.c memcmptest.c mempool.c mempool2.c \ + metadata.c $(mismatches_SOURCES) mmaptest.c nanoleak2.c \ + nanoleak_supp.c $(new_nothrow_SOURCES) $(new_override_SOURCES) \ + noisy_child.c null_socket.c origin1-yes.c origin2-not-quite.c \ + origin3-no.c origin4-many.c origin5-bz2.c origin6-fp.c \ + overlap.c partial_load.c partiallydefinedeq.c pdb-realloc.c \ pdb-realloc2.c pipe.c pointer-trace.c post-syscall.c \ realloc1.c realloc2.c realloc3.c sh-mem.c sh-mem-random.c \ sigaltstack.c sigkill.c signal2.c sigprocmask.c str_tester.c \ @@ -668,6 +669,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -697,12 +700,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -855,7 +853,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -884,6 +882,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -912,6 +915,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -923,16 +927,17 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ # Nb: Tools need to augment these flags with an arch-selection option, such # as $(AM_FLAG_M3264_PRI). AM_CFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) \ - $(am__append_7) + $(am__append_9) AM_CXXFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) \ - $(am__append_8) + $(am__append_10) # Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of # automake; see comments in Makefile.all.am for more detail. AM_CCASFLAGS = $(AM_CPPFLAGS) @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) SUBDIRS = . $(am__append_1) $(am__append_2) $(am__append_3) \ - $(am__append_4) $(am__append_5) $(am__append_6) -DIST_SUBDIRS = x86 amd64 linux darwin x86-linux amd64-linux . + $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_7) $(am__append_8) +DIST_SUBDIRS = x86 amd64 ppc32 ppc64 linux darwin x86-linux amd64-linux . dist_noinst_SCRIPTS = \ filter_addressable \ filter_allocs \ @@ -949,8 +954,11 @@ EXTRA_DIST = \ badaddrvalue.stdout.exp badaddrvalue.vgtest \ badfree-2trace.stderr.exp badfree-2trace.vgtest \ badfree.stderr.exp badfree.vgtest \ + badfree3.stderr.exp badfree3.vgtest \ badjump.stderr.exp badjump.vgtest \ badjump2.stderr.exp badjump2.vgtest \ + badjump.stderr.exp-s390x \ + badjump2.stderr.exp-s390x \ badloop.stderr.exp badloop.vgtest \ badpoll.stderr.exp badpoll.vgtest \ badrw.stderr.exp badrw.vgtest \ @@ -988,8 +996,6 @@ EXTRA_DIST = \ leak-pool-4.vgtest leak-pool-4.stderr.exp \ leak-pool-5.vgtest leak-pool-5.stderr.exp \ leak-tree.vgtest leak-tree.stderr.exp \ - linux-syslog-syscall linux-syslog-syscall.stderr.exp \ - linux-syscalls-2007 linux-syscalls-2007.stderr.exp \ long_namespace_xml.vgtest long_namespace_xml.stdout.exp \ long_namespace_xml.stderr.exp \ long-supps.vgtest long-supps.stderr.exp long-supps.supp \ @@ -1009,6 +1015,7 @@ EXTRA_DIST = \ memcmptest.stderr.exp memcmptest.stderr.exp2 \ memcmptest.stdout.exp memcmptest.vgtest \ mempool.stderr.exp mempool.vgtest \ + mempool2.stderr.exp mempool2.vgtest \ metadata.stderr.exp metadata.stdout.exp metadata.vgtest \ mismatches.stderr.exp mismatches.vgtest \ mmaptest.stderr.exp mmaptest.vgtest \ @@ -1029,11 +1036,14 @@ EXTRA_DIST = \ origin5-bz2.stderr.exp-glibc25-x86 \ origin5-bz2.stderr.exp-glibc25-amd64 \ origin5-bz2.stderr.exp-glibc27-ppc64 \ + origin5-bz2.stderr.exp-glibc212-s390x \ origin6-fp.vgtest origin6-fp.stdout.exp \ origin6-fp.stderr.exp-glibc25-amd64 \ origin6-fp.stderr.exp-glibc27-ppc64 \ overlap.stderr.exp overlap.stdout.exp overlap.vgtest \ partiallydefinedeq.vgtest partiallydefinedeq.stderr.exp \ + partiallydefinedeq.stderr.exp4 \ + partiallydefinedeq.stderr.exp3 \ partiallydefinedeq.stderr.exp2 \ partiallydefinedeq.stdout.exp \ partial_load_ok.vgtest partial_load_ok.stderr.exp partial_load_ok.stderr.exp64 \ @@ -1059,6 +1069,7 @@ EXTRA_DIST = \ str_tester.stderr.exp str_tester.vgtest \ supp-dir.vgtest supp-dir.stderr.exp \ supp_unknown.stderr.exp supp_unknown.vgtest supp_unknown.supp \ + supp_unknown.stderr.exp-s390x \ supp1.stderr.exp supp1.vgtest \ supp2.stderr.exp supp2.vgtest \ supp.supp \ @@ -1066,12 +1077,12 @@ EXTRA_DIST = \ trivialleak.stderr.exp trivialleak.vgtest \ unit_libcbase.stderr.exp unit_libcbase.vgtest \ unit_oset.stderr.exp unit_oset.stdout.exp unit_oset.vgtest \ - varinfo1.vgtest varinfo1.stdout.exp varinfo1.stderr.exp \ - varinfo2.vgtest varinfo2.stdout.exp varinfo2.stderr.exp \ - varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp \ - varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp \ - varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp \ - varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp \ + varinfo1.vgtest varinfo1.stdout.exp varinfo1.stderr.exp varinfo1.stderr.exp-ppc64\ + varinfo2.vgtest varinfo2.stdout.exp varinfo2.stderr.exp varinfo2.stderr.exp-ppc64\ + varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp varinfo3.stderr.exp-ppc64\ + varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp varinfo4.stderr.exp-ppc64\ + varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp varinfo5.stderr.exp-ppc64\ + varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp varinfo6.stderr.exp-ppc64\ vcpu_bz2.stdout.exp vcpu_bz2.stderr.exp vcpu_bz2.vgtest \ vcpu_fbench.stdout.exp vcpu_fbench.stderr.exp vcpu_fbench.vgtest \ vcpu_fnfns.stdout.exp vcpu_fnfns.stdout.exp-glibc28-amd64 \ @@ -1093,6 +1104,8 @@ EXTRA_DIST = \ deep_templates_SOURCES = deep_templates.cpp deep_templates_CXXFLAGS = $(AM_CFLAGS) -O -gstabs error_counts_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ +execve_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ +execve2_CFLAGS = $(AM_CFLASG) @FLAG_W_NO_NONNULL@ inits_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ long_namespace_xml_SOURCES = long_namespace_xml.cpp manuel1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ @@ -1110,8 +1123,9 @@ origin4_many_CFLAGS = $(AM_CFLAGS) -O origin5_bz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline origin6_fp_CFLAGS = $(AM_CFLAGS) -O -# Don't allow GCC to inline memcpy(), because then we can't intercept it -overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy +# Don't allow GCC to inline memcpy() and strcpy(), +# because then we can't intercept it +overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow supp_unknown_SOURCES = badjump.c supp1_SOURCES = supp.c @@ -1287,10 +1301,10 @@ errs1$(EXEEXT): $(errs1_OBJECTS) $(errs1_DEPENDENCIES) $(LINK) $(errs1_OBJECTS) $(errs1_LDADD) $(LIBS) execve$(EXEEXT): $(execve_OBJECTS) $(execve_DEPENDENCIES) @rm -f execve$(EXEEXT) - $(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) + $(execve_LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) execve2$(EXEEXT): $(execve2_OBJECTS) $(execve2_DEPENDENCIES) @rm -f execve2$(EXEEXT) - $(LINK) $(execve2_OBJECTS) $(execve2_LDADD) $(LIBS) + $(execve2_LINK) $(execve2_OBJECTS) $(execve2_LDADD) $(LIBS) exitprog$(EXEEXT): $(exitprog_OBJECTS) $(exitprog_DEPENDENCIES) @rm -f exitprog$(EXEEXT) $(LINK) $(exitprog_OBJECTS) $(exitprog_LDADD) $(LIBS) @@ -1324,12 +1338,6 @@ leak-pool$(EXEEXT): $(leak_pool_OBJECTS) $(leak_pool_DEPENDENCIES) leak-tree$(EXEEXT): $(leak_tree_OBJECTS) $(leak_tree_DEPENDENCIES) @rm -f leak-tree$(EXEEXT) $(LINK) $(leak_tree_OBJECTS) $(leak_tree_LDADD) $(LIBS) -linux-syscalls-2007$(EXEEXT): $(linux_syscalls_2007_OBJECTS) $(linux_syscalls_2007_DEPENDENCIES) - @rm -f linux-syscalls-2007$(EXEEXT) - $(LINK) $(linux_syscalls_2007_OBJECTS) $(linux_syscalls_2007_LDADD) $(LIBS) -linux-syslog-syscall$(EXEEXT): $(linux_syslog_syscall_OBJECTS) $(linux_syslog_syscall_DEPENDENCIES) - @rm -f linux-syslog-syscall$(EXEEXT) - $(LINK) $(linux_syslog_syscall_OBJECTS) $(linux_syslog_syscall_LDADD) $(LIBS) long-supps$(EXEEXT): $(long_supps_OBJECTS) $(long_supps_DEPENDENCIES) @rm -f long-supps$(EXEEXT) $(LINK) $(long_supps_OBJECTS) $(long_supps_LDADD) $(LIBS) @@ -1378,6 +1386,9 @@ memcmptest$(EXEEXT): $(memcmptest_OBJECTS) $(memcmptest_DEPENDENCIES) mempool$(EXEEXT): $(mempool_OBJECTS) $(mempool_DEPENDENCIES) @rm -f mempool$(EXEEXT) $(LINK) $(mempool_OBJECTS) $(mempool_LDADD) $(LIBS) +mempool2$(EXEEXT): $(mempool2_OBJECTS) $(mempool2_DEPENDENCIES) + @rm -f mempool2$(EXEEXT) + $(LINK) $(mempool2_OBJECTS) $(mempool2_LDADD) $(LIBS) metadata$(EXEEXT): $(metadata_OBJECTS) $(metadata_DEPENDENCIES) @rm -f metadata$(EXEEXT) $(LINK) $(metadata_OBJECTS) $(metadata_LDADD) $(LIBS) @@ -1589,8 +1600,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erringfds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error_counts-error_counts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errs1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-execve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve2-execve2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitprog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_locking.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprw.Po@am__quote@ @@ -1602,8 +1613,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leak-cycle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leak-pool.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leak-tree.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-syscalls-2007.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-syslog-syscall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-supps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long_namespace_xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mallinfo.Po@am__quote@ @@ -1620,6 +1629,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memalign_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcmptest-memcmptest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempool2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metadata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mismatches.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmaptest.Po@am__quote@ @@ -1722,6 +1732,34 @@ error_counts-error_counts.obj: error_counts.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(error_counts_CFLAGS) $(CFLAGS) -c -o error_counts-error_counts.obj `if test -f 'error_counts.c'; then $(CYGPATH_W) 'error_counts.c'; else $(CYGPATH_W) '$(srcdir)/error_counts.c'; fi` +execve-execve.o: execve.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -MT execve-execve.o -MD -MP -MF $(DEPDIR)/execve-execve.Tpo -c -o execve-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve-execve.Tpo $(DEPDIR)/execve-execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve.c' object='execve-execve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -c -o execve-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c + +execve-execve.obj: execve.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -MT execve-execve.obj -MD -MP -MF $(DEPDIR)/execve-execve.Tpo -c -o execve-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve-execve.Tpo $(DEPDIR)/execve-execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve.c' object='execve-execve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -c -o execve-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi` + +execve2-execve2.o: execve2.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve2_CFLAGS) $(CFLAGS) -MT execve2-execve2.o -MD -MP -MF $(DEPDIR)/execve2-execve2.Tpo -c -o execve2-execve2.o `test -f 'execve2.c' || echo '$(srcdir)/'`execve2.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve2-execve2.Tpo $(DEPDIR)/execve2-execve2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve2.c' object='execve2-execve2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve2_CFLAGS) $(CFLAGS) -c -o execve2-execve2.o `test -f 'execve2.c' || echo '$(srcdir)/'`execve2.c + +execve2-execve2.obj: execve2.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve2_CFLAGS) $(CFLAGS) -MT execve2-execve2.obj -MD -MP -MF $(DEPDIR)/execve2-execve2.Tpo -c -o execve2-execve2.obj `if test -f 'execve2.c'; then $(CYGPATH_W) 'execve2.c'; else $(CYGPATH_W) '$(srcdir)/execve2.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve2-execve2.Tpo $(DEPDIR)/execve2-execve2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve2.c' object='execve2-execve2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve2_CFLAGS) $(CFLAGS) -c -o execve2-execve2.obj `if test -f 'execve2.c'; then $(CYGPATH_W) 'execve2.c'; else $(CYGPATH_W) '$(srcdir)/execve2.c'; fi` + inits-inits.o: inits.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(inits_CFLAGS) $(CFLAGS) -MT inits-inits.o -MD -MP -MF $(DEPDIR)/inits-inits.Tpo -c -o inits-inits.o `test -f 'inits.c' || echo '$(srcdir)/'`inits.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/inits-inits.Tpo $(DEPDIR)/inits-inits.Po diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64-linux/Makefile.in index cbbe02b17..7b0c9994c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64-linux/Makefile.in @@ -120,6 +120,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -149,12 +151,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -307,7 +304,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -336,6 +333,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -364,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/Makefile.in index bbe9a368d..f8e083f0c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/Makefile.in @@ -136,6 +136,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -165,12 +167,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -323,7 +320,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -352,6 +349,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -380,6 +382,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.c index b83efe8d8..49281dd8e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.c @@ -1,6 +1,9 @@ #include #include +#include "tests/asm.h" +#include "tests/malloc.h" +#include const unsigned int vec0[4] = { 0x12345678, 0x11223344, 0x55667788, 0x87654321 }; @@ -8,8 +11,83 @@ const unsigned int vec0[4] const unsigned int vec1[4] = { 0xABCDEF01, 0xAABBCCDD, 0xEEFF0011, 0x10FEDCBA }; +const unsigned int vecZ[4] + = { 0, 0, 0, 0 }; + +__attribute__((noinline)) +void do_fxsave ( void* p, int rexw ) { + if (rexw) { + asm __volatile__("rex64/fxsave (%0)" : : "r" (p) : "memory" ); + } else { + asm __volatile__("fxsave (%0)" : : "r" (p) : "memory" ); + } +} + +__attribute__((noinline)) +void do_fxrstor ( void* p, int rexw ) { + if (rexw) { + asm __volatile__("rex64/fxrstor (%0)" : : "r" (p) : "memory" ); + } else { + asm __volatile__("fxrstor (%0)" : : "r" (p) : "memory" ); + } +} + +void do_zeroise ( void ) +{ + asm __volatile__("finit"); + asm __volatile__( + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "fldz\n\t" + "finit\n"); +#ifndef VGP_amd64_darwin + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm0"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm1"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm2"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm3"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm4"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm5"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm6"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm7"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm8"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm9"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm10"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm11"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm12"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm13"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm14"); + asm __volatile__("movups " VG_SYM(vecZ) ", %xmm15"); +#else + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm0"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm1"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm2"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm3"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm4"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm5"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm6"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm7"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm8"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm9"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm10"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm11"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm12"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm13"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm14"); + asm __volatile__("movups " VG_SYM(vecZ) "(%rip), %xmm15"); +#endif + asm __volatile__( + "pushq $0\n\t" + "ldmxcsr 0(%rsp)\n\t" + "addq $8,%rsp\n"); +} + /* set up the FP and SSE state, and then dump it. */ -void do_fxsave ( void* p ) +void do_setup_then_fxsave ( void* p, int rexw ) { asm __volatile__("finit"); asm __volatile__("fldpi"); @@ -35,7 +113,7 @@ void do_fxsave ( void* p ) asm __volatile__("movaps %xmm2, %xmm13"); asm __volatile__("movaps %xmm0, %xmm14"); asm __volatile__("movaps %xmm1, %xmm15"); - asm __volatile__("fxsave (%0)" : : "r" (p) : "memory" ); + do_fxsave(p, rexw); } int isFPLsbs ( int i ) @@ -52,28 +130,81 @@ int isFPLsbs ( int i ) return 0; } -int main ( int argc, char** argv ) +void show ( unsigned char* buf, int xx ) { - int i, j; - unsigned char* buf = malloc(512); - int xx = 1; /* argc > 1; - printf("Re-run with any arg to suppress least-significant\n" - " 16 bits of FP numbers\n"); - */ - for (i = 0; i < 512; i++) - buf[i] = 0x55; - - do_fxsave(buf); - for (j = 0; j < 512; j++) { - i = (j & 0xFFF0) + (15 - (j & 0xF)); - if ((j % 16) == 0) - printf("%3d ", j); + int i; + for (i = 0; i < 512; i++) { + if ((i % 16) == 0) + printf("%3d ", i); if (xx && isFPLsbs(i)) printf("xx "); else printf("%02x ", buf[i]); - if (j > 0 && ((j % 16) == 15)) + if (i > 0 && ((i % 16) == 15)) printf("\n"); } +} + + +int main ( int argc, char** argv ) +{ + unsigned char* buf1 = memalign16(512); + unsigned char* buf2 = memalign16(512); + unsigned char* buf3 = memalign16(512); + int xx = argc > 1; + printf("Re-run with any arg to suppress least-significant\n" + " 16 bits of FP numbers\n"); + + printf("\n-------- FXSAVE non-64 (REX.W == 0) --------\n"); + + memset(buf1, 0x55, 512); + memset(buf2, 0x55, 512); + memset(buf3, 0x55, 512); + + /* Load up x87/xmm state and dump it. */ + do_setup_then_fxsave(buf1, 0); + printf("\nBEFORE\n"); + show(buf1, xx); + + /* Zeroise x87/xmm state and dump it, to show that the + regs have been cleared out. */ + do_zeroise(); + do_fxsave(buf2, 0); + printf("\nZEROED\n"); + show(buf2, xx); + + /* Reload x87/xmm state from buf1 and dump it in buf3. */ + do_fxrstor(buf1, 0); + do_fxsave(buf3, 0); + printf("\nRESTORED\n"); + show(buf3, xx); + + printf("\n-------- FXSAVE 64 (REX.W == 1) --------\n\n"); + + memset(buf1, 0x55, 512); + memset(buf2, 0x55, 512); + memset(buf3, 0x55, 512); + + /* Load up x87/xmm state and dump it. */ + do_setup_then_fxsave(buf1, 1); + printf("\nBEFORE\n"); + show(buf1, xx); + + /* Zeroise x87/xmm state and dump it, to show that the + regs have been cleared out. */ + do_zeroise(); + do_fxsave(buf2, 1); + printf("\nZEROED\n"); + show(buf2, xx); + + /* Reload x87/xmm state from buf1 and dump it in buf3. */ + do_fxrstor(buf1, 1); + do_fxsave(buf3, 1); + printf("\nRESTORED\n"); + show(buf3, xx); + + + free(buf1); free(buf2); free(buf3); + return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.stdout.exp index 1796d5b8b..adc0d5a00 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.stdout.exp @@ -1,29 +1,208 @@ - 0 00 00 00 00 00 00 00 00 00 00 00 fe 08 00 03 7f - 16 00 00 ff ff 00 00 1f 80 00 00 00 00 00 00 00 00 - 32 00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx - 48 00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx - 64 00 00 00 00 00 00 40 00 c9 0f da a2 21 68 xx xx - 80 00 00 00 00 00 00 3f fd 9a 20 9a 84 fb cf xx xx - 96 00 00 00 00 00 00 3f fe b1 72 17 f7 d1 cf xx xx -112 00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx -128 00 00 00 00 00 00 40 00 c9 0f da a2 21 68 xx xx -144 00 00 00 00 00 00 00 00 00 00 00 00 00 00 xx xx -160 87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 -176 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 +Re-run with any arg to suppress least-significant + 16 bits of FP numbers + +-------- FXSAVE non-64 (REX.W == 0) -------- + +BEFORE + 0 7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 64 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 + 80 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 + 96 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 +128 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -208 87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 -224 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 +208 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +224 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -256 87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 -272 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 -288 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 +256 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +272 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +288 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -320 87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 -336 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 -352 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 +320 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +336 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +352 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -384 87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 -400 10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 +384 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +400 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 + +ZEROED + 0 7f 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 64 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 80 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 96 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +128 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +176 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +272 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +288 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +336 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +352 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +384 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 + +RESTORED + 0 7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 64 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 + 80 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 + 96 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 +128 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +208 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +224 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +256 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +272 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +288 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +336 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +352 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +384 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +400 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 + +-------- FXSAVE 64 (REX.W == 1) -------- + + +BEFORE + 0 7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 64 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 + 80 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 + 96 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 +128 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +208 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +224 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +256 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +272 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +288 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +336 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +352 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +384 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +400 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 + +ZEROED + 0 7f 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 64 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 80 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 96 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +128 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +176 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +272 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +288 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +336 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +352 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +384 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 + +RESTORED + 0 7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 + 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 + 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 48 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 + 64 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 + 80 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 + 96 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 +112 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 +128 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 +144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +208 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +224 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +256 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +272 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +288 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +320 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +336 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +352 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 +368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +384 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 +400 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.vgtest index 19f13f09f..3daf525e4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/amd64/fxsave-amd64.vgtest @@ -1,2 +1,3 @@ prog: fxsave-amd64 vgopts: -q +args: x diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/atomic_incs.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/atomic_incs.c index e8c1b4c35..97e166401 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/atomic_incs.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/atomic_incs.c @@ -76,6 +76,20 @@ __attribute__((noinline)) void atomic_add_8bit ( char* p, int n ) } while (success != 1); #elif defined(VGA_arm) *p += n; +#elif defined(VGA_s390x) + int dummy; + __asm__ __volatile__( + " l 0,%0\n\t" + "0: st 0,%1\n\t" + " icm 1,1,%1\n\t" + " ar 1,%2\n\t" + " stcm 1,1,%1\n\t" + " l 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p), "+m" (dummy) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -140,6 +154,20 @@ __attribute__((noinline)) void atomic_add_16bit ( short* p, int n ) } while (success != 1); #elif defined(VGA_arm) *p += n; +#elif defined(VGA_s390x) + int dummy; + __asm__ __volatile__( + " l 0,%0\n\t" + "0: st 0,%1\n\t" + " icm 1,3,%1\n\t" + " ar 1,%2\n\t" + " stcm 1,3,%1\n\t" + " l 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p), "+m" (dummy) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -200,7 +228,32 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n ) ); } while (success != 1); #elif defined(VGA_arm) - *p += n; + unsigned int block[3] + = { (unsigned int)p, (unsigned int)n, 0xFFFFFFFF }; + do { + __asm__ __volatile__( + "mov r5, %0" "\n\t" + "ldr r9, [r5, #0]" "\n\t" // p + "ldr r10, [r5, #4]" "\n\t" // n + "ldrex r8, [r9]" "\n\t" + "add r8, r8, r10" "\n\t" + "strex r11, r8, [r9]" "\n\t" + "str r11, [r5, #8]" "\n\t" + : /*out*/ + : /*in*/ "r"(&block[0]) + : /*trash*/ "memory", "cc", "r5", "r8", "r9", "r10" + ); + } while (block[2] != 0); +#elif defined(VGA_s390x) + __asm__ __volatile__( + " l 0,%0\n\t" + "0: lr 1,0\n\t" + " ar 1,%1\n\t" + " cs 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif @@ -237,6 +290,16 @@ __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n ) : /*trash*/ "memory", "cc", "r15" ); } while (success != 1); +#elif defined(VGA_s390x) + __asm__ __volatile__( + " lg 0,%0\n\t" + "0: lgr 1,0\n\t" + " agr 1,%1\n\t" + " csg 0,1,%0\n\t" + " jl 0b\n\t" + : "+m" (*p) + : "d" (n) + : "cc", "memory", "0", "1"); #else # error "Unsupported arch" #endif diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree-2trace.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree-2trace.stderr.exp index 5b937c19e..a3ea7a413 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree-2trace.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree-2trace.stderr.exp @@ -1,9 +1,9 @@ -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (badfree.c:12) Address 0x........ is not stack'd, malloc'd or (recently) free'd -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (badfree.c:15) Address 0x........ is on thread 1's stack diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree.stderr.exp index 5b937c19e..a3ea7a413 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree.stderr.exp @@ -1,9 +1,9 @@ -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (badfree.c:12) Address 0x........ is not stack'd, malloc'd or (recently) free'd -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (badfree.c:15) Address 0x........ is on thread 1's stack diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.stderr.exp new file mode 100644 index 000000000..f276c3578 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.stderr.exp @@ -0,0 +1,10 @@ +Invalid free() / delete / delete[] / realloc() + at 0x........: free (coregrind/vg_replace_malloc.c:...) + by 0x........: main (memcheck/tests/badfree.c:12) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Invalid free() / delete / delete[] / realloc() + at 0x........: free (coregrind/vg_replace_malloc.c:...) + by 0x........: main (memcheck/tests/badfree.c:15) + Address 0x........ is on thread 1's stack + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.vgtest new file mode 100644 index 000000000..876cced87 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badfree3.vgtest @@ -0,0 +1,2 @@ +prog: badfree +vgopts: -q --fullpath-after=${PWD}/ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump.stderr.exp-s390x b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump.stderr.exp-s390x new file mode 100644 index 000000000..a6be684f4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump.stderr.exp-s390x @@ -0,0 +1,25 @@ + +Jump to the invalid address stated on the next line + at 0x........: ??? + by 0x........: main (badjump.c:17) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + +Process terminating with default action of signal 11 (SIGSEGV) + Access not within mapped region at address 0x........ + at 0x........: ??? + by 0x........: main (badjump.c:17) + If you believe this happened as a result of a stack + overflow in your program's main thread (unlikely but + possible), you can try to increase the size of the + main thread stack using the --main-stacksize= flag. + The main thread stack size used in this run was .... + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump2.stderr.exp-s390x b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump2.stderr.exp-s390x new file mode 100644 index 000000000..1b87d2732 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/badjump2.stderr.exp-s390x @@ -0,0 +1,6 @@ +Jump to the invalid address stated on the next line + at 0x........: ??? + by 0x........: main (badjump2.c:46) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Signal caught, as expected diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.c index 9f22851b0..2f91c6fe8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.c @@ -53,7 +53,7 @@ static void custom_free(void* p) // don't actually free any memory... but mark it as freed VALGRIND_FREELIKE_BLOCK( p, RZ ); } -#undef RZ + @@ -63,7 +63,7 @@ static void custom_free(void* p) void make_leak(void) { - int* array2 = custom_alloc(sizeof(int) * 10); + int* array2 __attribute__((unused)) = custom_alloc(sizeof(int) * 10); array2 = 0; // leak return; } @@ -78,6 +78,23 @@ int main(void) array[9] = 8; array[10] = 10; // invalid write (ok w/o MALLOCLIKE -- in superblock) + VALGRIND_RESIZEINPLACE_BLOCK(array, sizeof(int) * 10, sizeof(int) * 5, RZ); + array[4] = 7; + array[5] = 9; // invalid write + + // Make the entire array defined again such that it can be verified whether + // the red zone is marked properly when resizing in place. + VALGRIND_MAKE_MEM_DEFINED(array, sizeof(int) * 10); + + VALGRIND_RESIZEINPLACE_BLOCK(array, sizeof(int) * 5, sizeof(int) * 7, RZ); + if (array[5]) array[4]++; // uninitialized read of array[5] + array[5] = 11; + array[6] = 7; + array[7] = 8; // invalid write + + // invalid realloc + VALGRIND_RESIZEINPLACE_BLOCK(array+1, sizeof(int) * 7, sizeof(int) * 8, RZ); + custom_free(array); // ok custom_free((void*)0x1); // invalid free @@ -101,3 +118,5 @@ int main(void) // leak from make_leak() } + +#undef RZ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.stderr.exp index 140f56ea9..bb55f8c0c 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/custom_alloc.stderr.exp @@ -4,19 +4,42 @@ Invalid write of size 4 at 0x........: custom_alloc (custom_alloc.c:47) by 0x........: main (custom_alloc.c:76) -Invalid free() / delete / delete[] +Invalid write of size 4 + at 0x........: main (custom_alloc.c:83) + Address 0x........ is 0 bytes after a block of size 20 alloc'd + at 0x........: custom_alloc (custom_alloc.c:47) + by 0x........: main (custom_alloc.c:76) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: main (custom_alloc.c:90) + +Invalid write of size 4 + at 0x........: main (custom_alloc.c:93) + Address 0x........ is 0 bytes after a block of size 28 alloc'd + at 0x........: custom_alloc (custom_alloc.c:47) + by 0x........: main (custom_alloc.c:76) + +Invalid free() / delete / delete[] / realloc() + at 0x........: main (custom_alloc.c:96) + Address 0x........ is 4 bytes inside a block of size 28 alloc'd + at 0x........: custom_alloc (custom_alloc.c:47) + by 0x........: main (custom_alloc.c:76) + +Invalid free() / delete / delete[] / realloc() at 0x........: custom_free (custom_alloc.c:54) - by 0x........: main (custom_alloc.c:83) + by 0x........: main (custom_alloc.c:100) Address 0x........ is not stack'd, malloc'd or (recently) free'd Mismatched free() / delete / delete [] at 0x........: custom_free (custom_alloc.c:54) - by 0x........: main (custom_alloc.c:86) + by 0x........: main (custom_alloc.c:103) Address 0x........ is 0 bytes inside a block of size 40 alloc'd at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: main (custom_alloc.c:85) + by 0x........: main (custom_alloc.c:102) Invalid read of size 4 - at 0x........: main (custom_alloc.c:89) - Address 0x........ is not stack'd, malloc'd or (recently) free'd + at 0x........: main (custom_alloc.c:106) + Address 0x........ is 0 bytes inside a block of size 28 free'd + at 0x........: custom_free (custom_alloc.c:54) + by 0x........: main (custom_alloc.c:98) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.am index 9ef89645b..5b216b6c7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.am @@ -24,7 +24,7 @@ check_PROGRAMS = \ scalar_vfork -AM_CFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE) -AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE) -AM_CCASFLAGS += @FLAG_M32@ +AM_CFLAGS += $(AM_FLAG_M3264_PRI) $(FLAG_MMMX) $(FLAG_MSSE) +AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) $(FLAG_MMMX) $(FLAG_MSSE) +AM_CCASFLAGS += $(AM_FLAG_M3264_PRI) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.in index dd2c35b45..c775c751d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/darwin/Makefile.in @@ -140,6 +140,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -169,12 +171,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -327,7 +324,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -356,6 +353,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -384,6 +386,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -394,13 +397,13 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ # Nb: Tools need to augment these flags with an arch-selection option, such # as $(AM_FLAG_M3264_PRI). -AM_CFLAGS = -Winline -Wall -Wshadow -g @FLAG_M32@ $(FLAG_MMMX) \ - $(FLAG_MSSE) -AM_CXXFLAGS = -Winline -Wall -Wshadow -g @FLAG_M32@ $(FLAG_MMMX) \ - $(FLAG_MSSE) +AM_CFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) \ + $(FLAG_MMMX) $(FLAG_MSSE) +AM_CXXFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) \ + $(FLAG_MMMX) $(FLAG_MSSE) # Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of # automake; see comments in Makefile.all.am for more detail. -AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M32@ +AM_CCASFLAGS = $(AM_CPPFLAGS) $(AM_FLAG_M3264_PRI) @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) dist_noinst_SCRIPTS = filter_stderr noinst_HEADERS = scalar.h diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/doublefree.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/doublefree.stderr.exp index 672eda01b..9ed5375c7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/doublefree.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/doublefree.stderr.exp @@ -1,4 +1,4 @@ -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (doublefree.c:10) Address 0x........ is 0 bytes inside a block of size 177 free'd diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/error_counts.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/error_counts.c index 5268cdbc0..271dc9a43 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/error_counts.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/error_counts.c @@ -8,9 +8,9 @@ int main(void) { int x; int y = 0; - int* reachable; + int* reachable __attribute__((unused)); int* dubious; - int* leaked; + int* leaked __attribute__((unused)); DECLARE_LEAK_COUNTERS; /* we require these longs to have same size as a machine word */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/fprw.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/fprw.stderr.exp index d083387ce..4719f80b4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/fprw.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/fprw.stderr.exp @@ -28,7 +28,7 @@ Invalid write of size 4 at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (fprw.c:19) -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (fprw.c:22) Address 0x........ is not stack'd, malloc'd or (recently) free'd diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cases.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cases.c index e6a010a16..026e7d2f4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cases.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cases.c @@ -106,6 +106,7 @@ int main(void) // counting in main() avoids the problem. f(); + CLEAR_CALLER_SAVED_REGS; GET_FINAL_LEAK_COUNTS; PRINT_LEAK_COUNTS(stderr); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cycle.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cycle.c index 76dae77d5..cee967b32 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cycle.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak-cycle.c @@ -68,6 +68,8 @@ int main() c1 = c2 = 0; + CLEAR_CALLER_SAVED_REGS; + GET_FINAL_LEAK_COUNTS; PRINT_LEAK_COUNTS(stderr); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak.h index ec94fe05c..ac8a64cf0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak.h +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/leak.h @@ -41,3 +41,27 @@ S_bytes,S_blocks); \ } while (0) +/* Upon a call to a function, some architectures store pointers into + * into registers. Valgrind may consider these registers when determining + * whether an address is reachable, so we need to zero-out these registers + * as needed. + */ +#if defined __powerpc__ +#define CLEAR_CALLER_SAVED_REGS \ + do { \ + __asm__ __volatile__( "li 3, 0" : : :/*trash*/"r3" ); \ + __asm__ __volatile__( "li 4, 0" : : :/*trash*/"r4" ); \ + __asm__ __volatile__( "li 5, 0" : : :/*trash*/"r5" ); \ + __asm__ __volatile__( "li 6, 0" : : :/*trash*/"r6" ); \ + __asm__ __volatile__( "li 7, 0" : : :/*trash*/"r7" ); \ + __asm__ __volatile__( "li 8, 0" : : :/*trash*/"r8" ); \ + __asm__ __volatile__( "li 9, 0" : : :/*trash*/"r9" ); \ + __asm__ __volatile__( "li 10, 0" : : :/*trash*/"r10" ); \ + __asm__ __volatile__( "li 11, 0" : : :/*trash*/"r11" ); \ + __asm__ __volatile__( "li 12, 0" : : :/*trash*/"r12" ); \ + } while (0) +#else +#define CLEAR_CALLER_SAVED_REGS /*nothing*/ +#endif + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.c index b61c6d56e..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.c @@ -1,83 +0,0 @@ -/** - * Test program for some Linux syscalls introduced during 2006 and 2007: - * - epoll_pwait() was introduced in the 2.6.19 kernel, released in November - * 2006. - * - utimensat(), eventfd(), timerfd() and signalfd() were introduced in the - * 2.6.22 kernel, released in July 2007. - * - * See also http://bugs.kde.org/show_bug.cgi?id=160907. - */ - -#define _GNU_SOURCE - -#include "../../config.h" -#include -#include -#include -#if defined(HAVE_SYS_EPOLL_H) -#include -#endif -#if defined(HAVE_SYS_EVENTFD_H) -#include -#endif -#if defined(HAVE_SYS_POLL_H) -#include -#endif -#if defined(HAVE_SYS_SIGNALFD_H) -#include -#endif -#include -#include - -int main (void) -{ -#if defined(HAVE_SIGNALFD) && defined(HAVE_EVENTFD) \ - && defined(HAVE_EVENTFD_READ) && defined(HAVE_PPOLL) - { - sigset_t mask; - int fd, fd2; - eventfd_t ev; - struct timespec ts = { .tv_sec = 1, .tv_nsec = 0 }; - struct pollfd pfd[2]; - - sigemptyset (&mask); - sigaddset (&mask, SIGUSR1); - fd = signalfd (-1, &mask, 0); - sigaddset (&mask, SIGUSR2); - fd = signalfd (fd, &mask, 0); - fd2 = eventfd (5, 0); - eventfd_read (fd2, &ev); - pfd[0].fd = fd; - pfd[0].events = POLLIN|POLLOUT; - pfd[1].fd = fd2; - pfd[1].events = POLLIN|POLLOUT; - ppoll (pfd, 2, &ts, &mask); - } -#endif - -#if defined(HAVE_UTIMENSAT) - unlink("/tmp/valgrind-utimensat-test"); - close (creat ("/tmp/valgrind-utimensat-test", S_IRUSR | S_IWUSR)); - { - struct timespec ts2[2] = { [0].tv_sec = 10000000, [1].tv_sec = 20000000 }; - utimensat (AT_FDCWD, "/tmp/valgrind-utimensat-test", ts2, 0); - } - unlink("/tmp/valgrind-utimensat-test"); -#endif - -#if defined(HAVE_EPOLL_CREATE) && defined(HAVE_EPOLL_PWAIT) - { - int fd3; - struct epoll_event evs[10]; - sigset_t mask; - - sigemptyset (&mask); - sigaddset (&mask, SIGUSR1); - sigaddset (&mask, SIGUSR2); - fd3 = epoll_create (10); - epoll_pwait (fd3, evs, 10, 0, &mask); - } -#endif - - return 0; -} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.stderr.exp index d0330e591..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.stderr.exp @@ -1,10 +0,0 @@ - - -HEAP SUMMARY: - in use at exit: ... bytes in ... blocks - total heap usage: ... allocs, ... frees, ... bytes allocated - -For a detailed leak analysis, rerun with: --leak-check=full - -For counts of detected and suppressed errors, rerun with: -v -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.vgtest index 1a9af546d..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syscalls-2007.vgtest @@ -1,2 +0,0 @@ -prog: linux-syscalls-2007 -stderr_filter: filter_allocs diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.c index d47140264..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.c @@ -1,23 +0,0 @@ -/** Test program for the syslog() system call. - * From the syslog(2) man page: - * If you need the libc function syslog() (which talks to syslogd(8)), - * then look at syslog(3). The system call of this name is about control‐ - * ling the kernel printk() buffer, and the glibc version is called - * klogctl(). - */ - -#include "../../config.h" -#include -#if defined(HAVE_SYS_KLOG_H) -#include -#endif - -int main(int argc, char** argv) -{ - int number_of_unread_characters; -#if defined HAVE_KLOGCTL - number_of_unread_characters = klogctl(9, 0, 0); -#endif - fprintf(stderr, "Done.\n"); - return 0 * number_of_unread_characters; -} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.stderr.exp index c8fe7b9f2..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.stderr.exp @@ -1,11 +0,0 @@ - -Done. - -HEAP SUMMARY: - in use at exit: ... bytes in ... blocks - total heap usage: ... allocs, ... frees, ... bytes allocated - -For a detailed leak analysis, rerun with: --leak-check=full - -For counts of detected and suppressed errors, rerun with: -v -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.vgtest index 7ffb1279b..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux-syslog-syscall.vgtest @@ -1,2 +0,0 @@ -prog: linux-syslog-syscall -stderr_filter: filter_allocs diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.am index 4bd775130..2b887470e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.am @@ -5,13 +5,15 @@ dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ brk.stderr.exp brk.vgtest \ - capget capget.stderr.exp \ + capget capget.stderr.exp capget.stderr.exp2 \ lsframe1.vgtest lsframe1.stdout.exp lsframe1.stderr.exp \ lsframe2.vgtest lsframe2.stdout.exp lsframe2.stderr.exp \ sigqueue.vgtest sigqueue.stderr.exp \ stack_changes.stderr.exp stack_changes.stdout.exp \ stack_changes.stdout.exp2 stack_changes.vgtest \ stack_switch.stderr.exp stack_switch.vgtest \ + syscalls-2007 syscalls-2007.stderr.exp \ + syslog-syscall syslog-syscall.stderr.exp \ timerfd-syscall timerfd-syscall.stderr.exp \ with-space.stderr.exp with-space.stdout.exp with-space.vgtest @@ -23,6 +25,8 @@ check_PROGRAMS = \ sigqueue \ stack_changes \ stack_switch \ + syscalls-2007 \ + syslog-syscall \ timerfd-syscall diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.in index 4204097aa..d5213206e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/Makefile.in @@ -48,7 +48,8 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(top_srcdir)/Makefile.tool-tests.am check_PROGRAMS = brk$(EXEEXT) capget$(EXEEXT) lsframe1$(EXEEXT) \ lsframe2$(EXEEXT) sigqueue$(EXEEXT) stack_changes$(EXEEXT) \ - stack_switch$(EXEEXT) timerfd-syscall$(EXEEXT) + stack_switch$(EXEEXT) syscalls-2007$(EXEEXT) \ + syslog-syscall$(EXEEXT) timerfd-syscall$(EXEEXT) subdir = memcheck/tests/linux ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -79,6 +80,12 @@ stack_changes_LDADD = $(LDADD) stack_switch_SOURCES = stack_switch.c stack_switch_OBJECTS = stack_switch.$(OBJEXT) stack_switch_DEPENDENCIES = +syscalls_2007_SOURCES = syscalls-2007.c +syscalls_2007_OBJECTS = syscalls-2007.$(OBJEXT) +syscalls_2007_LDADD = $(LDADD) +syslog_syscall_SOURCES = syslog-syscall.c +syslog_syscall_OBJECTS = syslog-syscall.$(OBJEXT) +syslog_syscall_LDADD = $(LDADD) timerfd_syscall_SOURCES = timerfd-syscall.c timerfd_syscall_OBJECTS = timerfd-syscall.$(OBJEXT) timerfd_syscall_DEPENDENCIES = @@ -92,9 +99,11 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = brk.c capget.c lsframe1.c lsframe2.c sigqueue.c \ - stack_changes.c stack_switch.c timerfd-syscall.c + stack_changes.c stack_switch.c syscalls-2007.c \ + syslog-syscall.c timerfd-syscall.c DIST_SOURCES = brk.c capget.c lsframe1.c lsframe2.c sigqueue.c \ - stack_changes.c stack_switch.c timerfd-syscall.c + stack_changes.c stack_switch.c syscalls-2007.c \ + syslog-syscall.c timerfd-syscall.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -140,6 +149,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -169,12 +180,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -327,7 +333,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -356,6 +362,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -384,6 +395,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -403,13 +415,15 @@ AM_CCASFLAGS = $(AM_CPPFLAGS) dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ brk.stderr.exp brk.vgtest \ - capget capget.stderr.exp \ + capget capget.stderr.exp capget.stderr.exp2 \ lsframe1.vgtest lsframe1.stdout.exp lsframe1.stderr.exp \ lsframe2.vgtest lsframe2.stdout.exp lsframe2.stderr.exp \ sigqueue.vgtest sigqueue.stderr.exp \ stack_changes.stderr.exp stack_changes.stdout.exp \ stack_changes.stdout.exp2 stack_changes.vgtest \ stack_switch.stderr.exp stack_switch.vgtest \ + syscalls-2007 syscalls-2007.stderr.exp \ + syslog-syscall syslog-syscall.stderr.exp \ timerfd-syscall timerfd-syscall.stderr.exp \ with-space.stderr.exp with-space.stdout.exp with-space.vgtest @@ -473,6 +487,12 @@ stack_changes$(EXEEXT): $(stack_changes_OBJECTS) $(stack_changes_DEPENDENCIES) stack_switch$(EXEEXT): $(stack_switch_OBJECTS) $(stack_switch_DEPENDENCIES) @rm -f stack_switch$(EXEEXT) $(LINK) $(stack_switch_OBJECTS) $(stack_switch_LDADD) $(LIBS) +syscalls-2007$(EXEEXT): $(syscalls_2007_OBJECTS) $(syscalls_2007_DEPENDENCIES) + @rm -f syscalls-2007$(EXEEXT) + $(LINK) $(syscalls_2007_OBJECTS) $(syscalls_2007_LDADD) $(LIBS) +syslog-syscall$(EXEEXT): $(syslog_syscall_OBJECTS) $(syslog_syscall_DEPENDENCIES) + @rm -f syslog-syscall$(EXEEXT) + $(LINK) $(syslog_syscall_OBJECTS) $(syslog_syscall_LDADD) $(LIBS) timerfd-syscall$(EXEEXT): $(timerfd_syscall_OBJECTS) $(timerfd_syscall_DEPENDENCIES) @rm -f timerfd-syscall$(EXEEXT) $(LINK) $(timerfd_syscall_OBJECTS) $(timerfd_syscall_LDADD) $(LIBS) @@ -490,6 +510,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigqueue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack_changes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack_switch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syscalls-2007.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-syscall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd-syscall.Po@am__quote@ .c.o: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/brk.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/brk.c index 21bf84ec6..5ca054f86 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/brk.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/brk.c @@ -12,7 +12,7 @@ int main(void) void* orig_ds = sbrk(0); void* ds = orig_ds; void* vals[10]; - void* res; + void* res __attribute__((unused)); #define EOL ((void*)( ~(long)0 )) vals[0] = (void*)0; vals[1] = (void*)1; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.c index 31d819567..ce9b18b0b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.c @@ -4,6 +4,7 @@ #include /* printf() */ #include /* syscall() */ #include /* __NR_capget */ +#include /* uid_t */ #include /* _LINUX_CAPABILITY_VERSION */ @@ -13,6 +14,8 @@ int main() struct __user_cap_data_struct d; int syscall_result; + if (getuid() == 0) + fprintf(stderr, "Running as root\n"); h.version = _LINUX_CAPABILITY_VERSION; h.pid = 0; syscall_result = syscall(__NR_capget, &h, &d); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.stderr.exp2 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.stderr.exp2 new file mode 100644 index 000000000..7aef7a2e4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/capget.stderr.exp2 @@ -0,0 +1,15 @@ + +Running as root +capget result: +effective 0x........ +permitted 0x........ +inheritable 0 + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_changes.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_changes.c index a978fc2b0..de39cd754 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_changes.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_changes.c @@ -62,9 +62,9 @@ int main(int argc, char **argv) swapcontext(&oldc, &ctx1); - VALGRIND_STACK_DEREGISTER(c1); + (void)VALGRIND_STACK_DEREGISTER(c1); //free(ctx1.uc_stack.ss_sp); - VALGRIND_STACK_DEREGISTER(c2); + (void)VALGRIND_STACK_DEREGISTER(c2); //free(ctx2.uc_stack.ss_sp); return 0; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_switch.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_switch.c index 1d179351d..d54870dc7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_switch.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/stack_switch.c @@ -32,7 +32,7 @@ static int thread_main(void *arg) int main(int argc, char **argv) { void *stack; - int stackid; + int stackid __attribute__((unused)); pid_t pid; /* "2*" is a ppc64-linux hack */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.c new file mode 100644 index 000000000..b61c6d56e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.c @@ -0,0 +1,83 @@ +/** + * Test program for some Linux syscalls introduced during 2006 and 2007: + * - epoll_pwait() was introduced in the 2.6.19 kernel, released in November + * 2006. + * - utimensat(), eventfd(), timerfd() and signalfd() were introduced in the + * 2.6.22 kernel, released in July 2007. + * + * See also http://bugs.kde.org/show_bug.cgi?id=160907. + */ + +#define _GNU_SOURCE + +#include "../../config.h" +#include +#include +#include +#if defined(HAVE_SYS_EPOLL_H) +#include +#endif +#if defined(HAVE_SYS_EVENTFD_H) +#include +#endif +#if defined(HAVE_SYS_POLL_H) +#include +#endif +#if defined(HAVE_SYS_SIGNALFD_H) +#include +#endif +#include +#include + +int main (void) +{ +#if defined(HAVE_SIGNALFD) && defined(HAVE_EVENTFD) \ + && defined(HAVE_EVENTFD_READ) && defined(HAVE_PPOLL) + { + sigset_t mask; + int fd, fd2; + eventfd_t ev; + struct timespec ts = { .tv_sec = 1, .tv_nsec = 0 }; + struct pollfd pfd[2]; + + sigemptyset (&mask); + sigaddset (&mask, SIGUSR1); + fd = signalfd (-1, &mask, 0); + sigaddset (&mask, SIGUSR2); + fd = signalfd (fd, &mask, 0); + fd2 = eventfd (5, 0); + eventfd_read (fd2, &ev); + pfd[0].fd = fd; + pfd[0].events = POLLIN|POLLOUT; + pfd[1].fd = fd2; + pfd[1].events = POLLIN|POLLOUT; + ppoll (pfd, 2, &ts, &mask); + } +#endif + +#if defined(HAVE_UTIMENSAT) + unlink("/tmp/valgrind-utimensat-test"); + close (creat ("/tmp/valgrind-utimensat-test", S_IRUSR | S_IWUSR)); + { + struct timespec ts2[2] = { [0].tv_sec = 10000000, [1].tv_sec = 20000000 }; + utimensat (AT_FDCWD, "/tmp/valgrind-utimensat-test", ts2, 0); + } + unlink("/tmp/valgrind-utimensat-test"); +#endif + +#if defined(HAVE_EPOLL_CREATE) && defined(HAVE_EPOLL_PWAIT) + { + int fd3; + struct epoll_event evs[10]; + sigset_t mask; + + sigemptyset (&mask); + sigaddset (&mask, SIGUSR1); + sigaddset (&mask, SIGUSR2); + fd3 = epoll_create (10); + epoll_pwait (fd3, evs, 10, 0, &mask); + } +#endif + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.stderr.exp new file mode 100644 index 000000000..d0330e591 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.stderr.exp @@ -0,0 +1,10 @@ + + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.vgtest new file mode 100644 index 000000000..7ba82c459 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syscalls-2007.vgtest @@ -0,0 +1,2 @@ +prog: syscalls-2007 +stderr_filter: ../filter_allocs diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.c new file mode 100644 index 000000000..114372266 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.c @@ -0,0 +1,23 @@ +/** Test program for the syslog() system call. + * From the syslog(2) man page: + * If you need the libc function syslog() (which talks to syslogd(8)), + * then look at syslog(3). The system call of this name is about control- + * ling the kernel printk() buffer, and the glibc version is called + * klogctl(). + */ + +#include "../../config.h" +#include +#if defined(HAVE_SYS_KLOG_H) +#include +#endif + +int main(int argc, char** argv) +{ + int number_of_unread_characters; +#if defined HAVE_KLOGCTL + number_of_unread_characters = klogctl(9, 0, 0); +#endif + fprintf(stderr, "Done.\n"); + return 0 * number_of_unread_characters; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.stderr.exp new file mode 100644 index 000000000..c8fe7b9f2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.stderr.exp @@ -0,0 +1,11 @@ + +Done. + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.vgtest new file mode 100644 index 000000000..c96ccf13b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/syslog-syscall.vgtest @@ -0,0 +1,2 @@ +prog: syslog-syscall +stderr_filter: ../filter_allocs diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.c index 1e5ba5381..f9ad38f3b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.c @@ -5,7 +5,7 @@ * timerfd-test2 by Davide Libenzi (test app for timerfd) * Copyright (C) 2007 Davide Libenzi * Modified for inclusion in Valgrind. - * Copyright (C) 2008 Bart Van Assche + * Copyright (C) 2008 Bart Van Assche * * 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 @@ -61,6 +61,8 @@ #define __NR_timerfd_create 322 #elif defined(__powerpc__) #define __NR_timerfd_create 306 +#elif defined(__s390x__) +#define __NR_timerfd_create 319 #else #error Cannot detect your architecture! #endif @@ -76,6 +78,9 @@ #elif defined(__powerpc__) #define __NR_timerfd_settime 311 #define __NR_timerfd_gettime 312 +#elif defined(__s390x__) +#define __NR_timerfd_settime 320 +#define __NR_timerfd_gettime 321 #else #error Cannot detect your architecture! #endif @@ -153,7 +158,7 @@ long waittmr(int tfd, int timeo) } if ((pfd.revents & POLLIN) == 0) { - fprintf(stdout, "no ticks happened\n"); + fprintf(stderr, "no ticks happened\n"); return -1; } if (read(tfd, &ticks, sizeof(ticks)) != sizeof(ticks)) @@ -182,11 +187,11 @@ int main(int ac, char **av) for (i = 0; i < sizeof(clks) / sizeof(clks[0]); i++) { - fprintf(stdout, "\n\n---------------------------------------\n"); - fprintf(stdout, "| testing %s\n", clks[i].name); - fprintf(stdout, "---------------------------------------\n\n"); + fprintf(stderr, "\n\n---------------------------------------\n"); + fprintf(stderr, "| testing %s\n", clks[i].name); + fprintf(stderr, "---------------------------------------\n\n"); - fprintf(stdout, "relative timer test (at 500 ms) ...\n"); + fprintf(stderr, "relative timer test (at 500 ms) ...\n"); set_timespec(&tmr.it_value, 500 * 1000); set_timespec(&tmr.it_interval, 0); tnow = getustime(clks[i].id); @@ -202,17 +207,17 @@ int main(int ac, char **av) return 1; } - fprintf(stdout, "wating timer ...\n"); + fprintf(stderr, "waiting timer ...\n"); ticks = waittmr(tfd, -1); ttmr = getustime(clks[i].id); if (ticks <= 0) - fprintf(stdout, "whooops! no timer showed up!\n"); + fprintf(stderr, "whooops! no timer showed up!\n"); else - fprintf(stdout, "got timer ticks (%ld) after %.1f s\n", + fprintf(stderr, "got timer ticks (%ld) after %.1f s\n", ticks, (ttmr - tnow) * 1e-6); - fprintf(stdout, "absolute timer test (at 500 ms) ...\n"); + fprintf(stderr, "absolute timer test (at 500 ms) ...\n"); tnow = getustime(clks[i].id); set_timespec(&tmr.it_value, tnow + 500 * 1000); set_timespec(&tmr.it_interval, 0); @@ -222,16 +227,16 @@ int main(int ac, char **av) return 1; } - fprintf(stdout, "wating timer ...\n"); + fprintf(stderr, "waiting timer ...\n"); ticks = waittmr(tfd, -1); ttmr = getustime(clks[i].id); if (ticks <= 0) - fprintf(stdout, "whooops! no timer showed up!\n"); + fprintf(stderr, "whooops! no timer showed up!\n"); else - fprintf(stdout, "got timer ticks (%ld) after %.1f s\n", + fprintf(stderr, "got timer ticks (%ld) after %.1f s\n", ticks, (ttmr - tnow) * 1e-6); - fprintf(stdout, "sequential timer test (100 ms clock) ...\n"); + fprintf(stderr, "sequential timer test (100 ms clock) ...\n"); tnow = getustime(clks[i].id); set_timespec(&tmr.it_value, tnow + 100 * 1000); set_timespec(&tmr.it_interval, 100 * 1000); @@ -241,31 +246,36 @@ int main(int ac, char **av) return 1; } - fprintf(stdout, "sleeping one second ...\n"); + fprintf(stderr, "sleeping one second ...\n"); sleep(1); if (timerfd_gettime(tfd, &tmr)) { perror("timerfd_gettime"); return 1; } - fprintf(stdout, "timerfd_gettime returned:\n" + fprintf(stderr, "timerfd_gettime returned:\n" "\tit_value = %.1f it_interval = %.1f\n", tmr.it_value.tv_sec + 1e-9 * tmr.it_value.tv_nsec, tmr.it_interval.tv_sec + 1e-9 * tmr.it_interval.tv_nsec); - fprintf(stdout, "sleeping 1 second ...\n"); + fprintf(stderr, "sleeping 1 second ...\n"); sleep(1); - fprintf(stdout, "wating timer ...\n"); + fprintf(stderr, "waiting timer ...\n"); ticks = waittmr(tfd, -1); ttmr = getustime(clks[i].id); if (ticks <= 0) - fprintf(stdout, "whooops! no timer showed up!\n"); + fprintf(stderr, "whooops! no timer showed up!\n"); else - fprintf(stdout, "got timer ticks (%ld) after %.1f s\n", - ticks, (ttmr - tnow) * 1e-6); + { + const double delta = (ttmr - tnow) * 1e-6; + if (19 <= ticks && ticks <= 25 && 1.9 < delta && delta < 2.5) + fprintf(stderr, "got about 20 timer ticks after about 2s\n"); + else + fprintf(stderr, "got timer ticks (%ld) after %.2f s\n", ticks, delta); + } - fprintf(stdout, "O_NONBLOCK test ...\n"); + fprintf(stderr, "O_NONBLOCK test ...\n"); tnow = getustime(clks[i].id); set_timespec(&tmr.it_value, 100 * 1000); set_timespec(&tmr.it_interval, 0); @@ -275,27 +285,27 @@ int main(int ac, char **av) return 1; } #if 0 - fprintf(stdout, "timerfd = %d\n", tfd); + fprintf(stderr, "timerfd = %d\n", tfd); #endif - fprintf(stdout, "wating timer (flush the single tick) ...\n"); + fprintf(stderr, "waiting timer (flush the single tick) ...\n"); ticks = waittmr(tfd, -1); ttmr = getustime(clks[i].id); if (ticks <= 0) - fprintf(stdout, "whooops! no timer showed up!\n"); + fprintf(stderr, "whooops! no timer showed up!\n"); else - fprintf(stdout, "got timer ticks (%ld) after %.1f s\n", + fprintf(stderr, "got timer ticks (%ld) after %.1f s\n", ticks, (ttmr - tnow) * 1e-6); fcntl(tfd, F_SETFL, fcntl(tfd, F_GETFL, 0) | O_NONBLOCK); if (read(tfd, &uticks, sizeof(uticks)) > 0) - fprintf(stdout, "whooops! timer ticks not zero when should have been\n"); + fprintf(stderr, "whooops! timer ticks not zero when should have been\n"); else if (errno != EAGAIN) - fprintf(stdout, "whooops! bad errno value (%d = '%s')!\n", + fprintf(stderr, "whooops! bad errno value (%d = '%s')!\n", errno, strerror(errno)); else - fprintf(stdout, "success\n"); + fprintf(stderr, "success\n"); fcntl(tfd, F_SETFL, fcntl(tfd, F_GETFL, 0) & ~O_NONBLOCK); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stderr.exp index c22dd7f4c..31ffa8468 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stderr.exp @@ -1,5 +1,51 @@ + +--------------------------------------- +| testing CLOCK MONOTONIC +--------------------------------------- + +relative timer test (at 500 ms) ... +waiting timer ... +got timer ticks (1) after 0.5 s +absolute timer test (at 500 ms) ... +waiting timer ... +got timer ticks (1) after 0.5 s +sequential timer test (100 ms clock) ... +sleeping one second ... +timerfd_gettime returned: + it_value = 0.1 it_interval = 0.1 +sleeping 1 second ... +waiting timer ... +got about 20 timer ticks after about 2s +O_NONBLOCK test ... +waiting timer (flush the single tick) ... +got timer ticks (1) after 0.1 s +success + + +--------------------------------------- +| testing CLOCK REALTIME +--------------------------------------- + +relative timer test (at 500 ms) ... +waiting timer ... +got timer ticks (1) after 0.5 s +absolute timer test (at 500 ms) ... +waiting timer ... +got timer ticks (1) after 0.5 s +sequential timer test (100 ms clock) ... +sleeping one second ... +timerfd_gettime returned: + it_value = 0.1 it_interval = 0.1 +sleeping 1 second ... +waiting timer ... +got about 20 timer ticks after about 2s +O_NONBLOCK test ... +waiting timer (flush the single tick) ... +got timer ticks (1) after 0.1 s +success + HEAP SUMMARY: in use at exit: 0 bytes in 0 blocks total heap usage: 0 allocs, 0 frees, 0 bytes allocated diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stdout.exp index 651d6f37c..e69de29bb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/linux/timerfd-syscall.stdout.exp @@ -1,46 +0,0 @@ - - ---------------------------------------- -| testing CLOCK MONOTONIC ---------------------------------------- - -relative timer test (at 500 ms) ... -wating timer ... -got timer ticks (1) after 0.5 s -absolute timer test (at 500 ms) ... -wating timer ... -got timer ticks (1) after 0.5 s -sequential timer test (100 ms clock) ... -sleeping one second ... -timerfd_gettime returned: - it_value = 0.1 it_interval = 0.1 -sleeping 1 second ... -wating timer ... -got timer ticks (20) after 2.0 s -O_NONBLOCK test ... -wating timer (flush the single tick) ... -got timer ticks (1) after 0.1 s -success - - ---------------------------------------- -| testing CLOCK REALTIME ---------------------------------------- - -relative timer test (at 500 ms) ... -wating timer ... -got timer ticks (1) after 0.5 s -absolute timer test (at 500 ms) ... -wating timer ... -got timer ticks (1) after 0.5 s -sequential timer test (100 ms clock) ... -sleeping one second ... -timerfd_gettime returned: - it_value = 0.1 it_interval = 0.1 -sleeping 1 second ... -wating timer ... -got timer ticks (20) after 2.0 s -O_NONBLOCK test ... -wating timer (flush the single tick) ... -got timer ticks (1) after 0.1 s -success diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/malloc2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/malloc2.stderr.exp index 0c29fa4db..7ba042699 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/malloc2.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/malloc2.stderr.exp @@ -4,7 +4,7 @@ Invalid write of size 1 at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (malloc2.c:38) -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (malloc2.c:43) Address 0x........ is 0 bytes inside a block of size 429 free'd diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/memalign_test.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/memalign_test.stderr.exp index 5a01c4ad7..aa8d58833 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/memalign_test.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/memalign_test.stderr.exp @@ -1,4 +1,4 @@ -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (memalign_test.c:25) Address 0x........ is 0 bytes inside a block of size 111,110 free'd diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool.stderr.exp index 8ca7f0625..b2ab3b4b4 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool.stderr.exp @@ -1,19 +1,17 @@ Invalid write of size 1 at 0x........: test (mempool.c:130) by 0x........: main (mempool.c:154) - Address 0x........ is 7 bytes inside a block of size 100,000 alloc'd - at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: make_pool (mempool.c:44) - by 0x........: test (mempool.c:117) + Address 0x........ is 1 bytes before a block of size 10 client-defined + at 0x........: allocate (mempool.c:105) + by 0x........: test (mempool.c:121) by 0x........: main (mempool.c:154) Invalid write of size 1 at 0x........: test (mempool.c:131) by 0x........: main (mempool.c:154) - Address 0x........ is 18 bytes inside a block of size 100,000 alloc'd - at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: make_pool (mempool.c:44) - by 0x........: test (mempool.c:117) + Address 0x........ is 0 bytes after a block of size 10 client-defined + at 0x........: allocate (mempool.c:105) + by 0x........: test (mempool.c:121) by 0x........: main (mempool.c:154) Invalid write of size 1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.c new file mode 100644 index 000000000..9404ade60 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.c @@ -0,0 +1,176 @@ + +// Simplified version of mempool.c, that is more oriented towards +// checking that the description of invalid addresses is correct. + +#include +#include +#include "tests/sys_mman.h" +#include +#include + +#include "../memcheck.h" + +#define SUPERBLOCK_SIZE 100000 +#define REDZONE_SIZE 8 + +typedef struct _level_list +{ + struct _level_list *next; + char *where; + // Padding ensures the struct is the same size on 32-bit and 64-bit + // machines. + char padding[16 - 2*sizeof(char*)]; +} level_list; + +typedef struct _pool { + char *mem; + char *where; + level_list *levels; + int size, left; + // Padding ensures the struct is the same size on 32-bit and 64-bit + // machines. + char padding[24 - 3*sizeof(char*)]; +} pool; + +pool *make_pool( int use_mmap ) +{ + pool *p; + + if (use_mmap) { + p = (pool *)mmap(0, sizeof(pool), PROT_READ|PROT_WRITE|PROT_EXEC, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + p->where = p->mem = (char *)mmap(NULL, SUPERBLOCK_SIZE, + PROT_READ|PROT_WRITE|PROT_EXEC, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + } else { + p = (pool *)malloc(sizeof(pool)); + p->where = p->mem = (char *)malloc(SUPERBLOCK_SIZE); + } + + p->size = p->left = SUPERBLOCK_SIZE; + p->levels = NULL; + VALGRIND_MAKE_MEM_NOACCESS(p->where, SUPERBLOCK_SIZE); + return p; +} + +void push(pool *p, int use_mmap ) +{ + level_list *l; + + if (use_mmap) + l = (level_list *)mmap(0, sizeof(level_list), + PROT_READ|PROT_WRITE|PROT_EXEC, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + else + l = (level_list *)malloc(sizeof(level_list)); + + l->next = p->levels; + l->where = p->where; + VALGRIND_CREATE_MEMPOOL(l->where, REDZONE_SIZE, 0); + p->levels = l; +} + +void pop(pool *p, int use_mmap) +{ + level_list *l = p->levels; + p->levels = l->next; + VALGRIND_DESTROY_MEMPOOL(l->where); + VALGRIND_MAKE_MEM_NOACCESS(l->where, p->where-l->where); + p->where = l->where; + if (use_mmap) + munmap(l, sizeof(level_list)); + else + free(l); +} + +void destroy_pool(pool *p, int use_mmap) +{ + level_list *l = p->levels; + + while(l) { + pop(p, use_mmap); + } + if (use_mmap) { + munmap(p->mem, SUPERBLOCK_SIZE); + munmap(p, sizeof(pool)); + } else { + free(p->mem); + free(p); + } +} + +char *allocate(pool *p, int size) +{ + char *where; + p->left -= size + (REDZONE_SIZE*2); + where = p->where + REDZONE_SIZE; + p->where += size + (REDZONE_SIZE*2); + VALGRIND_MEMPOOL_ALLOC(p->levels->where, where, size); + return where; +} + +//------------------------------------------------------------------------- +// Rest +//------------------------------------------------------------------------- + +void test(void) +{ + char *x1, *x2; + char res = 0; + + // p1 is a malloc-backed pool + pool *p1 = make_pool(0); + + // p2 is a mmap-backed pool + pool *p2 = make_pool(1); + + push(p1, 0); + push(p2, 1); + + x1 = allocate(p1, 10); + x2 = allocate(p2, 20); + + fprintf(stderr, + "\n------ out of range reads in malloc-backed pool ------\n\n"); + res += x1[-1]; + res += x1[10]; + + fprintf(stderr, + "\n------ out of range reads in mmap-backed pool ------\n\n"); + res += x2[-1]; // invalid + res += x2[20]; // invalid + + fprintf(stderr, + "\n------ read free in malloc-backed pool ------\n\n"); + VALGRIND_MEMPOOL_FREE(p1, x1); + res += x1[5]; + + fprintf(stderr, + "\n------ read free in mmap-backed pool ------\n\n"); + VALGRIND_MEMPOOL_FREE(p2, x2); + res += x2[11]; + + fprintf(stderr, + "\n------ double free in malloc-backed pool ------\n\n"); + VALGRIND_MEMPOOL_FREE(p1, x1); + + fprintf(stderr, + "\n------ double free in mmap-backed pool ------\n\n"); + VALGRIND_MEMPOOL_FREE(p2, x2); + + // claim res is used, so gcc can't nuke this all + __asm__ __volatile__("" : : "r"(res)); + + fprintf(stderr, + "\n------ done ------\n\n"); + pop(p1, 0); + pop(p2, 1); + destroy_pool(p1, 0); + destroy_pool(p2, 1); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.stderr.exp new file mode 100644 index 000000000..76d84adc7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.stderr.exp @@ -0,0 +1,81 @@ + +------ out of range reads in malloc-backed pool ------ + +Invalid read of size 1 + at 0x........: test (mempool2.c:135) + by 0x........: main (mempool2.c:174) + Address 0x........ is 1 bytes before a block of size 10 client-defined + at 0x........: allocate (mempool2.c:108) + by 0x........: test (mempool2.c:130) + by 0x........: main (mempool2.c:174) + +Invalid read of size 1 + at 0x........: test (mempool2.c:136) + by 0x........: main (mempool2.c:174) + Address 0x........ is 0 bytes after a block of size 10 client-defined + at 0x........: allocate (mempool2.c:108) + by 0x........: test (mempool2.c:130) + by 0x........: main (mempool2.c:174) + + +------ out of range reads in mmap-backed pool ------ + +Invalid read of size 1 + at 0x........: test (mempool2.c:140) + by 0x........: main (mempool2.c:174) + Address 0x........ is 1 bytes before a block of size 20 client-defined + at 0x........: allocate (mempool2.c:108) + by 0x........: test (mempool2.c:131) + by 0x........: main (mempool2.c:174) + +Invalid read of size 1 + at 0x........: test (mempool2.c:141) + by 0x........: main (mempool2.c:174) + Address 0x........ is 0 bytes after a block of size 20 client-defined + at 0x........: allocate (mempool2.c:108) + by 0x........: test (mempool2.c:131) + by 0x........: main (mempool2.c:174) + + +------ read free in malloc-backed pool ------ + +Illegal memory pool address + at 0x........: test (mempool2.c:145) + by 0x........: main (mempool2.c:174) + Address 0x........ is 0 bytes inside a block of size 32 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: make_pool (mempool2.c:46) + by 0x........: test (mempool2.c:122) + by 0x........: main (mempool2.c:174) + + +------ read free in mmap-backed pool ------ + +Illegal memory pool address + at 0x........: test (mempool2.c:150) + by 0x........: main (mempool2.c:174) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + +------ double free in malloc-backed pool ------ + +Illegal memory pool address + at 0x........: test (mempool2.c:155) + by 0x........: main (mempool2.c:174) + Address 0x........ is 0 bytes inside a block of size 32 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: make_pool (mempool2.c:46) + by 0x........: test (mempool2.c:122) + by 0x........: main (mempool2.c:174) + + +------ double free in mmap-backed pool ------ + +Illegal memory pool address + at 0x........: test (mempool2.c:159) + by 0x........: main (mempool2.c:174) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + + +------ done ------ + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.vgtest new file mode 100644 index 000000000..4d6837c29 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/mempool2.vgtest @@ -0,0 +1,2 @@ +prog: mempool2 +vgopts: -q --leak-check=yes diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x new file mode 100644 index 000000000..ae0af5d4e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc212-s390x @@ -0,0 +1,133 @@ +Conditional jump or move depends on uninitialised value(s) + at 0x........: main (origin5-bz2.c:6481) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: handle_compress (origin5-bz2.c:4686) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2820) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2823) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2854) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2858) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2859) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2963) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: mainSort (origin5-bz2.c:2964) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: fallbackSort (origin5-bz2.c:2269) + by 0x........: BZ2_blockSort (origin5-bz2.c:3116) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Use of uninitialised value of size 8 + at 0x........: fallbackSort (origin5-bz2.c:2275) + by 0x........: BZ2_blockSort (origin5-bz2.c:3116) + by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) + by 0x........: handle_compress (origin5-bz2.c:4753) + by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) + by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630) + by 0x........: main (origin5-bz2.c:6484) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: main (origin5-bz2.c:6512) + Uninitialised value was created by a client request + at 0x........: main (origin5-bz2.c:6479) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc27-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc27-ppc64 index 6dfe8df76..e0958e4b8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc27-ppc64 +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/origin5-bz2.stderr.exp-glibc27-ppc64 @@ -28,7 +28,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2820) + at 0x........: mainSort (origin5-bz2.c:2820) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) @@ -38,7 +39,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2823) + at 0x........: mainSort (origin5-bz2.c:2823) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) @@ -48,7 +50,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2854) + at 0x........: mainSort (origin5-bz2.c:2854) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) @@ -58,7 +61,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2858) + at 0x........: mainSort (origin5-bz2.c:2858) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) @@ -68,7 +72,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2963) + at 0x........: mainSort (origin5-bz2.c:2963) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) @@ -78,7 +83,8 @@ Use of uninitialised value of size 8 at 0x........: main (origin5-bz2.c:6481) Use of uninitialised value of size 8 - at 0x........: BZ2_blockSort (origin5-bz2.c:2964) + at 0x........: mainSort (origin5-bz2.c:2964) + by 0x........: BZ2_blockSort (origin5-bz2.c:3105) by 0x........: BZ2_compressBlock (origin5-bz2.c:4034) by 0x........: handle_compress (origin5-bz2.c:4753) by 0x........: BZ2_bzCompress (origin5-bz2.c:4822) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.c index 7d63126cb..79fd69854 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.c @@ -64,9 +64,16 @@ int main ( void ) // and so never appears as a literal, and so the instrumenter // never spots it and so doesn't use the expensive scheme (for foo). // Hence also on ARM we get 3 errors, not 2. +// +// s390x is even more complicated: Depending on the architecture +// level we have the 0x80808080 either in the literal pool (3 errors) +// or with the extended immediate facility in an instruction (2 errors). static __attribute__((noinline)) void bar ( void ) { #if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__) fprintf(stderr, "Currently running on ppc32/64/arm: this test should give 3 errors, not 2.\n"); #endif +#if defined(__s390__) + fprintf(stderr, "On s390 we might see 2 or 3 errors.\n"); +#endif } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp3 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp3 new file mode 100644 index 000000000..227c060cf --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp3 @@ -0,0 +1,20 @@ + +On s390 we might see 2 or 3 errors. +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:52) + + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp4 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp4 new file mode 100644 index 000000000..adfe8a92e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/partiallydefinedeq.stderr.exp4 @@ -0,0 +1,24 @@ + +On s390 we might see 2 or 3 errors. +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:45) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: foo (partiallydefinedeq.c:15) + by 0x........: main (partiallydefinedeq.c:52) + + +HEAP SUMMARY: + in use at exit: ... bytes in ... blocks + total heap usage: ... allocs, ... frees, ... bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.am new file mode 100644 index 000000000..40033fc31 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.am @@ -0,0 +1,13 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr + +EXTRA_DIST = $(noinst_SCRIPTS) \ + power_ISA2_05.stderr.exp power_ISA2_05.stdout.exp power_ISA2_05.vgtest + +check_PROGRAMS = \ + power_ISA2_05 + +power_ISA2_05_CFLAGS = $(AM_CFLAGS) $(WERROR) -Winline -Wall -Wshadow -g \ + -I$(top_srcdir)/include @FLAG_M32@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.in new file mode 100644 index 000000000..87e41a15a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/Makefile.in @@ -0,0 +1,736 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am +check_PROGRAMS = power_ISA2_05$(EXEEXT) +subdir = memcheck/tests/ppc32 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +power_ISA2_05_SOURCES = power_ISA2_05.c +power_ISA2_05_OBJECTS = power_ISA2_05-power_ISA2_05.$(OBJEXT) +power_ISA2_05_LDADD = $(LDADD) +power_ISA2_05_LINK = $(CCLD) $(power_ISA2_05_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SCRIPTS = $(dist_noinst_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = power_ISA2_05.c +DIST_SOURCES = power_ISA2_05.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub \ + -DVGA_$(VGCONF_ARCH_PRI)=1 \ + -DVGO_$(VGCONF_OS)=1 \ + -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1 + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -g +AM_CXXFLAGS = -Winline -Wall -Wshadow -g +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = filter_stderr +EXTRA_DIST = $(noinst_SCRIPTS) \ + power_ISA2_05.stderr.exp power_ISA2_05.stdout.exp power_ISA2_05.vgtest + +power_ISA2_05_CFLAGS = $(AM_CFLAGS) $(WERROR) -Winline -Wall -Wshadow -g \ + -I$(top_srcdir)/include @FLAG_M32@ + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign memcheck/tests/ppc32/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign memcheck/tests/ppc32/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +power_ISA2_05$(EXEEXT): $(power_ISA2_05_OBJECTS) $(power_ISA2_05_DEPENDENCIES) + @rm -f power_ISA2_05$(EXEEXT) + $(power_ISA2_05_LINK) $(power_ISA2_05_OBJECTS) $(power_ISA2_05_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power_ISA2_05-power_ISA2_05.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +power_ISA2_05-power_ISA2_05.o: power_ISA2_05.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -MT power_ISA2_05-power_ISA2_05.o -MD -MP -MF $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo -c -o power_ISA2_05-power_ISA2_05.o `test -f 'power_ISA2_05.c' || echo '$(srcdir)/'`power_ISA2_05.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo $(DEPDIR)/power_ISA2_05-power_ISA2_05.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='power_ISA2_05.c' object='power_ISA2_05-power_ISA2_05.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -c -o power_ISA2_05-power_ISA2_05.o `test -f 'power_ISA2_05.c' || echo '$(srcdir)/'`power_ISA2_05.c + +power_ISA2_05-power_ISA2_05.obj: power_ISA2_05.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -MT power_ISA2_05-power_ISA2_05.obj -MD -MP -MF $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo -c -o power_ISA2_05-power_ISA2_05.obj `if test -f 'power_ISA2_05.c'; then $(CYGPATH_W) 'power_ISA2_05.c'; else $(CYGPATH_W) '$(srcdir)/power_ISA2_05.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo $(DEPDIR)/power_ISA2_05-power_ISA2_05.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='power_ISA2_05.c' object='power_ISA2_05-power_ISA2_05.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -c -o power_ISA2_05-power_ISA2_05.obj `if test -f 'power_ISA2_05.c'; then $(CYGPATH_W) 'power_ISA2_05.c'; else $(CYGPATH_W) '$(srcdir)/power_ISA2_05.c'; fi` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-local ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/filter_stderr new file mode 100644 index 000000000..0ae9313a9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/filter_stderr @@ -0,0 +1,3 @@ +#! /bin/sh + +../filter_stderr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.c new file mode 100644 index 000000000..82893a297 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.c @@ -0,0 +1,207 @@ +#include + +double foo = -1.0; +double FRT1; +double FRT2; +int base256(int val) +{ +/* interpret the bitstream representing val as a base 256 number for testing + * the parity instrs + */ + int sum = 0; + int scale = 1; + int i; + + for (i = 0; i < 8; i++) { + int bit = val & 1; + sum = sum + bit * scale; + val <<= 1; + scale *= 256; + } + return sum; +} + +void test_parity_instrs() +{ + unsigned long long_word; + unsigned int word; + int i, parity; + + for (i = 0; i < 50; i++) { + word = base256(i); + long_word = word; + __asm__ volatile ("prtyd %0, %1":"=r" (parity):"r"(long_word)); + printf("prtyd (%x) => parity=%x\n", i, parity); + __asm__ volatile ("prtyw %0, %1":"=r" (parity):"r"(word)); + printf("prtyw (%x) => parity=%x\n", i, parity); + } +} + +void test_lfiwax() +{ + unsigned long base; + unsigned long offset; + + typedef struct { + unsigned int hi; + unsigned int lo; + } int_pair_t; + + int_pair_t *ip; + foo = -1024.0; + base = (unsigned long) &foo; + offset = 0; + __asm__ volatile ("lfiwax %0, %1, %2":"=f" (FRT1):"r"(base), + "r"(offset)); + ip = (int_pair_t *) & FRT1; + printf("lfiwax (%f) => FRT=(%x, %x)\n", foo, ip->hi, ip->lo); + + +} + + + +/* lfdp FPp, DS(RA) : load float double pair +** FPp = leftmost 64 bits stored at DS(RA) +** FPp+1= rightmost 64 bits stored at DS(RA) +** FPp must be an even float register +*/ +int test_double_pair_instrs() +{ + typedef struct { + double hi; + double lo; + } dbl_pair_t; + + /* the following decls are for alignment */ + int i; + int j; + int k; + int l; +#ifdef __powerpc64__ + int m; + int n; + int o; +#endif + dbl_pair_t dbl_pair[3]; /* must be quad word aligned */ + unsigned long base; + unsigned long offset; + + for (i = 0; i < 3; i++) { + dbl_pair[i].hi = -1024.0 + i; + dbl_pair[i].lo = 1024.0 + i + 1; + } + + __asm__ volatile ("lfdp 10, %0"::"m" (dbl_pair[0])); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + printf("lfdp (%f, %f) => F_hi=%f, F_lo=%f\n", + dbl_pair[0].hi, dbl_pair[0].lo, FRT1, FRT2); + + + FRT1 = 2.2048; + FRT2 = -4.1024; + __asm__ volatile ("fmr 10, %0"::"f" (FRT1)); + __asm__ volatile ("fmr 11, %0"::"f" (FRT2)); + __asm__ volatile ("stfdp 10, %0"::"m" (dbl_pair[1])); + printf("stfdp (%f, %f) => F_hi=%f, F_lo=%f\n", + FRT1, FRT2, dbl_pair[1].hi, dbl_pair[1].lo); + + FRT1 = 0.0; + FRT2 = -1.0; + base = (unsigned long) &dbl_pair; + offset = (unsigned long) &dbl_pair[1] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("lfdpx 10, 20, 21"); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + printf("lfdpx (%f, %f) => F_hi=%f, F_lo=%f\n", + dbl_pair[1].hi, dbl_pair[1].lo, FRT1, FRT2); + + FRT1 = 8.2048; + FRT2 = -16.1024; + base = (unsigned long) &dbl_pair; + offset = (unsigned long) &dbl_pair[2] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + __asm__ volatile ("stfdpx 10, 20, 21"); + printf("stfdpx (%f, %f) => F_hi=%f, F_lo=%f\n", + FRT1, FRT2, dbl_pair[2].hi, dbl_pair[2].lo); +#ifdef __powerpc64__ + return i + j + k + l + m + n + o; +#else + return i + j + k + l; +#endif +} + + +/* The contents of FRB with bit set 0 set to bit 0 of FRA copied into FRT */ +void test_fcpsgn() +{ + double A[] = { + 10.101010, + -0.0, + 0.0, + -10.101010 + }; + + double B[] = { + 11.111111, + -0.0, + 0.0, + -11.111111 + }; + + double FRT, FRA, FRB; + int i, j; + + for (i = 0; i < 4; i++) { + FRA = A[i]; + for (j = 0; j < 4; j++) { + FRB = B[j]; + __asm__ volatile ("fcpsgn %0, %1, %2":"=f" (FRT):"f"(FRA), + "f"(FRB)); + printf("fcpsgn sign=%f, base=%f => %f\n", FRA, FRB, FRT); + } + } +} + +/* b0 may be non-zero in lwarx/ldarx Power6 instrs */ +int test_reservation() +{ + + int RT; + int i, j; + unsigned long base; + unsigned long offset; + long arr[4] = { 0xdeadbeef, 0xbad0beef, 0xbeefdead, 0xbeef0bad }; + + + base = (unsigned long) &arr; + offset = (unsigned long) &arr[1] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("lwarx %0, 20, 21, 1":"=r" (RT)); + printf("lwarx => %x\n", RT); + +#ifdef __powerpc64__ + offset = (unsigned long) &arr[1] - base; + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("ldarx %0, 20, 21, 1":"=r" (RT)); + printf("ldarx => %x\n", RT); +#endif + return i + j; +} + +int main(void) +{ + (void) test_reservation(); + test_fcpsgn(); + (void) test_double_pair_instrs(); + test_lfiwax(); + test_parity_instrs(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stderr.exp new file mode 100644 index 000000000..c22dd7f4c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stderr.exp @@ -0,0 +1,10 @@ + + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stdout.exp new file mode 100644 index 000000000..551396041 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.stdout.exp @@ -0,0 +1,122 @@ +lwarx => bad0beef +fcpsgn sign=10.101010, base=11.111111 => 11.111111 +fcpsgn sign=10.101010, base=-0.000000 => 0.000000 +fcpsgn sign=10.101010, base=0.000000 => 0.000000 +fcpsgn sign=10.101010, base=-11.111111 => 11.111111 +fcpsgn sign=-0.000000, base=11.111111 => -11.111111 +fcpsgn sign=-0.000000, base=-0.000000 => -0.000000 +fcpsgn sign=-0.000000, base=0.000000 => -0.000000 +fcpsgn sign=-0.000000, base=-11.111111 => -11.111111 +fcpsgn sign=0.000000, base=11.111111 => 11.111111 +fcpsgn sign=0.000000, base=-0.000000 => 0.000000 +fcpsgn sign=0.000000, base=0.000000 => 0.000000 +fcpsgn sign=0.000000, base=-11.111111 => 11.111111 +fcpsgn sign=-10.101010, base=11.111111 => -11.111111 +fcpsgn sign=-10.101010, base=-0.000000 => -0.000000 +fcpsgn sign=-10.101010, base=0.000000 => -0.000000 +fcpsgn sign=-10.101010, base=-11.111111 => -11.111111 +lfdp (-1024.000000, 1025.000000) => F_hi=-1024.000000, F_lo=1025.000000 +stfdp (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400 +lfdpx (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400 +stfdpx (2.204800, 2.204800) => F_hi=2.204800, F_lo=2.204800 +lfiwax (-1024.000000) => FRT=(ffffffff, c0900000) +prtyd (0) => parity=0 +prtyw (0) => parity=0 +prtyd (1) => parity=1 +prtyw (1) => parity=1 +prtyd (2) => parity=0 +prtyw (2) => parity=0 +prtyd (3) => parity=1 +prtyw (3) => parity=1 +prtyd (4) => parity=0 +prtyw (4) => parity=0 +prtyd (5) => parity=1 +prtyw (5) => parity=1 +prtyd (6) => parity=0 +prtyw (6) => parity=0 +prtyd (7) => parity=1 +prtyw (7) => parity=1 +prtyd (8) => parity=0 +prtyw (8) => parity=0 +prtyd (9) => parity=1 +prtyw (9) => parity=1 +prtyd (a) => parity=0 +prtyw (a) => parity=0 +prtyd (b) => parity=1 +prtyw (b) => parity=1 +prtyd (c) => parity=0 +prtyw (c) => parity=0 +prtyd (d) => parity=1 +prtyw (d) => parity=1 +prtyd (e) => parity=0 +prtyw (e) => parity=0 +prtyd (f) => parity=1 +prtyw (f) => parity=1 +prtyd (10) => parity=0 +prtyw (10) => parity=0 +prtyd (11) => parity=1 +prtyw (11) => parity=1 +prtyd (12) => parity=0 +prtyw (12) => parity=0 +prtyd (13) => parity=1 +prtyw (13) => parity=1 +prtyd (14) => parity=0 +prtyw (14) => parity=0 +prtyd (15) => parity=1 +prtyw (15) => parity=1 +prtyd (16) => parity=0 +prtyw (16) => parity=0 +prtyd (17) => parity=1 +prtyw (17) => parity=1 +prtyd (18) => parity=0 +prtyw (18) => parity=0 +prtyd (19) => parity=1 +prtyw (19) => parity=1 +prtyd (1a) => parity=0 +prtyw (1a) => parity=0 +prtyd (1b) => parity=1 +prtyw (1b) => parity=1 +prtyd (1c) => parity=0 +prtyw (1c) => parity=0 +prtyd (1d) => parity=1 +prtyw (1d) => parity=1 +prtyd (1e) => parity=0 +prtyw (1e) => parity=0 +prtyd (1f) => parity=1 +prtyw (1f) => parity=1 +prtyd (20) => parity=0 +prtyw (20) => parity=0 +prtyd (21) => parity=1 +prtyw (21) => parity=1 +prtyd (22) => parity=0 +prtyw (22) => parity=0 +prtyd (23) => parity=1 +prtyw (23) => parity=1 +prtyd (24) => parity=0 +prtyw (24) => parity=0 +prtyd (25) => parity=1 +prtyw (25) => parity=1 +prtyd (26) => parity=0 +prtyw (26) => parity=0 +prtyd (27) => parity=1 +prtyw (27) => parity=1 +prtyd (28) => parity=0 +prtyw (28) => parity=0 +prtyd (29) => parity=1 +prtyw (29) => parity=1 +prtyd (2a) => parity=0 +prtyw (2a) => parity=0 +prtyd (2b) => parity=1 +prtyw (2b) => parity=1 +prtyd (2c) => parity=0 +prtyw (2c) => parity=0 +prtyd (2d) => parity=1 +prtyw (2d) => parity=1 +prtyd (2e) => parity=0 +prtyw (2e) => parity=0 +prtyd (2f) => parity=1 +prtyw (2f) => parity=1 +prtyd (30) => parity=0 +prtyw (30) => parity=0 +prtyd (31) => parity=1 +prtyw (31) => parity=1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.vgtest new file mode 100644 index 000000000..712ec3b10 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc32/power_ISA2_05.vgtest @@ -0,0 +1 @@ +prog: power_ISA2_05 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.am new file mode 100644 index 000000000..a18afd76f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.am @@ -0,0 +1,13 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr + +EXTRA_DIST = $(noinst_SCRIPTS) \ + power_ISA2_05.stderr.exp power_ISA2_05.stdout.exp power_ISA2_05.vgtest + +check_PROGRAMS = \ + power_ISA2_05 + +power_ISA2_05_CFLAGS = $(AM_CFLAGS) $(WERROR) -Winline -Wall -Wshadow -g \ + -I$(top_srcdir)/include @FLAG_M64@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.in new file mode 100644 index 000000000..9a98b885e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/Makefile.in @@ -0,0 +1,736 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am +check_PROGRAMS = power_ISA2_05$(EXEEXT) +subdir = memcheck/tests/ppc64 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +power_ISA2_05_SOURCES = power_ISA2_05.c +power_ISA2_05_OBJECTS = power_ISA2_05-power_ISA2_05.$(OBJEXT) +power_ISA2_05_LDADD = $(LDADD) +power_ISA2_05_LINK = $(CCLD) $(power_ISA2_05_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SCRIPTS = $(dist_noinst_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = power_ISA2_05.c +DIST_SOURCES = power_ISA2_05.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub \ + -DVGA_$(VGCONF_ARCH_PRI)=1 \ + -DVGO_$(VGCONF_OS)=1 \ + -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1 + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -g +AM_CXXFLAGS = -Winline -Wall -Wshadow -g +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = filter_stderr +EXTRA_DIST = $(noinst_SCRIPTS) \ + power_ISA2_05.stderr.exp power_ISA2_05.stdout.exp power_ISA2_05.vgtest + +power_ISA2_05_CFLAGS = $(AM_CFLAGS) $(WERROR) -Winline -Wall -Wshadow -g \ + -I$(top_srcdir)/include @FLAG_M64@ + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign memcheck/tests/ppc64/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign memcheck/tests/ppc64/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +power_ISA2_05$(EXEEXT): $(power_ISA2_05_OBJECTS) $(power_ISA2_05_DEPENDENCIES) + @rm -f power_ISA2_05$(EXEEXT) + $(power_ISA2_05_LINK) $(power_ISA2_05_OBJECTS) $(power_ISA2_05_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power_ISA2_05-power_ISA2_05.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +power_ISA2_05-power_ISA2_05.o: power_ISA2_05.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -MT power_ISA2_05-power_ISA2_05.o -MD -MP -MF $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo -c -o power_ISA2_05-power_ISA2_05.o `test -f 'power_ISA2_05.c' || echo '$(srcdir)/'`power_ISA2_05.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo $(DEPDIR)/power_ISA2_05-power_ISA2_05.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='power_ISA2_05.c' object='power_ISA2_05-power_ISA2_05.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -c -o power_ISA2_05-power_ISA2_05.o `test -f 'power_ISA2_05.c' || echo '$(srcdir)/'`power_ISA2_05.c + +power_ISA2_05-power_ISA2_05.obj: power_ISA2_05.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -MT power_ISA2_05-power_ISA2_05.obj -MD -MP -MF $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo -c -o power_ISA2_05-power_ISA2_05.obj `if test -f 'power_ISA2_05.c'; then $(CYGPATH_W) 'power_ISA2_05.c'; else $(CYGPATH_W) '$(srcdir)/power_ISA2_05.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/power_ISA2_05-power_ISA2_05.Tpo $(DEPDIR)/power_ISA2_05-power_ISA2_05.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='power_ISA2_05.c' object='power_ISA2_05-power_ISA2_05.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(power_ISA2_05_CFLAGS) $(CFLAGS) -c -o power_ISA2_05-power_ISA2_05.obj `if test -f 'power_ISA2_05.c'; then $(CYGPATH_W) 'power_ISA2_05.c'; else $(CYGPATH_W) '$(srcdir)/power_ISA2_05.c'; fi` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-local ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/filter_stderr new file mode 100644 index 000000000..0ae9313a9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/filter_stderr @@ -0,0 +1,3 @@ +#! /bin/sh + +../filter_stderr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.c new file mode 100644 index 000000000..82893a297 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.c @@ -0,0 +1,207 @@ +#include + +double foo = -1.0; +double FRT1; +double FRT2; +int base256(int val) +{ +/* interpret the bitstream representing val as a base 256 number for testing + * the parity instrs + */ + int sum = 0; + int scale = 1; + int i; + + for (i = 0; i < 8; i++) { + int bit = val & 1; + sum = sum + bit * scale; + val <<= 1; + scale *= 256; + } + return sum; +} + +void test_parity_instrs() +{ + unsigned long long_word; + unsigned int word; + int i, parity; + + for (i = 0; i < 50; i++) { + word = base256(i); + long_word = word; + __asm__ volatile ("prtyd %0, %1":"=r" (parity):"r"(long_word)); + printf("prtyd (%x) => parity=%x\n", i, parity); + __asm__ volatile ("prtyw %0, %1":"=r" (parity):"r"(word)); + printf("prtyw (%x) => parity=%x\n", i, parity); + } +} + +void test_lfiwax() +{ + unsigned long base; + unsigned long offset; + + typedef struct { + unsigned int hi; + unsigned int lo; + } int_pair_t; + + int_pair_t *ip; + foo = -1024.0; + base = (unsigned long) &foo; + offset = 0; + __asm__ volatile ("lfiwax %0, %1, %2":"=f" (FRT1):"r"(base), + "r"(offset)); + ip = (int_pair_t *) & FRT1; + printf("lfiwax (%f) => FRT=(%x, %x)\n", foo, ip->hi, ip->lo); + + +} + + + +/* lfdp FPp, DS(RA) : load float double pair +** FPp = leftmost 64 bits stored at DS(RA) +** FPp+1= rightmost 64 bits stored at DS(RA) +** FPp must be an even float register +*/ +int test_double_pair_instrs() +{ + typedef struct { + double hi; + double lo; + } dbl_pair_t; + + /* the following decls are for alignment */ + int i; + int j; + int k; + int l; +#ifdef __powerpc64__ + int m; + int n; + int o; +#endif + dbl_pair_t dbl_pair[3]; /* must be quad word aligned */ + unsigned long base; + unsigned long offset; + + for (i = 0; i < 3; i++) { + dbl_pair[i].hi = -1024.0 + i; + dbl_pair[i].lo = 1024.0 + i + 1; + } + + __asm__ volatile ("lfdp 10, %0"::"m" (dbl_pair[0])); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + printf("lfdp (%f, %f) => F_hi=%f, F_lo=%f\n", + dbl_pair[0].hi, dbl_pair[0].lo, FRT1, FRT2); + + + FRT1 = 2.2048; + FRT2 = -4.1024; + __asm__ volatile ("fmr 10, %0"::"f" (FRT1)); + __asm__ volatile ("fmr 11, %0"::"f" (FRT2)); + __asm__ volatile ("stfdp 10, %0"::"m" (dbl_pair[1])); + printf("stfdp (%f, %f) => F_hi=%f, F_lo=%f\n", + FRT1, FRT2, dbl_pair[1].hi, dbl_pair[1].lo); + + FRT1 = 0.0; + FRT2 = -1.0; + base = (unsigned long) &dbl_pair; + offset = (unsigned long) &dbl_pair[1] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("lfdpx 10, 20, 21"); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + printf("lfdpx (%f, %f) => F_hi=%f, F_lo=%f\n", + dbl_pair[1].hi, dbl_pair[1].lo, FRT1, FRT2); + + FRT1 = 8.2048; + FRT2 = -16.1024; + base = (unsigned long) &dbl_pair; + offset = (unsigned long) &dbl_pair[2] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("fmr %0, 10":"=f" (FRT1)); + __asm__ volatile ("fmr %0, 11":"=f" (FRT2)); + __asm__ volatile ("stfdpx 10, 20, 21"); + printf("stfdpx (%f, %f) => F_hi=%f, F_lo=%f\n", + FRT1, FRT2, dbl_pair[2].hi, dbl_pair[2].lo); +#ifdef __powerpc64__ + return i + j + k + l + m + n + o; +#else + return i + j + k + l; +#endif +} + + +/* The contents of FRB with bit set 0 set to bit 0 of FRA copied into FRT */ +void test_fcpsgn() +{ + double A[] = { + 10.101010, + -0.0, + 0.0, + -10.101010 + }; + + double B[] = { + 11.111111, + -0.0, + 0.0, + -11.111111 + }; + + double FRT, FRA, FRB; + int i, j; + + for (i = 0; i < 4; i++) { + FRA = A[i]; + for (j = 0; j < 4; j++) { + FRB = B[j]; + __asm__ volatile ("fcpsgn %0, %1, %2":"=f" (FRT):"f"(FRA), + "f"(FRB)); + printf("fcpsgn sign=%f, base=%f => %f\n", FRA, FRB, FRT); + } + } +} + +/* b0 may be non-zero in lwarx/ldarx Power6 instrs */ +int test_reservation() +{ + + int RT; + int i, j; + unsigned long base; + unsigned long offset; + long arr[4] = { 0xdeadbeef, 0xbad0beef, 0xbeefdead, 0xbeef0bad }; + + + base = (unsigned long) &arr; + offset = (unsigned long) &arr[1] - base; + __asm__ volatile ("or 20, 0, %0"::"r" (base)); + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("lwarx %0, 20, 21, 1":"=r" (RT)); + printf("lwarx => %x\n", RT); + +#ifdef __powerpc64__ + offset = (unsigned long) &arr[1] - base; + __asm__ volatile ("or 21, 0, %0"::"r" (offset)); + __asm__ volatile ("ldarx %0, 20, 21, 1":"=r" (RT)); + printf("ldarx => %x\n", RT); +#endif + return i + j; +} + +int main(void) +{ + (void) test_reservation(); + test_fcpsgn(); + (void) test_double_pair_instrs(); + test_lfiwax(); + test_parity_instrs(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stderr.exp new file mode 100644 index 000000000..c22dd7f4c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stderr.exp @@ -0,0 +1,10 @@ + + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 0 allocs, 0 frees, 0 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +For counts of detected and suppressed errors, rerun with: -v +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stdout.exp new file mode 100644 index 000000000..b5a7458d2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.stdout.exp @@ -0,0 +1,123 @@ +lwarx => 0 +ldarx => bad0beef +fcpsgn sign=10.101010, base=11.111111 => 11.111111 +fcpsgn sign=10.101010, base=-0.000000 => 0.000000 +fcpsgn sign=10.101010, base=0.000000 => 0.000000 +fcpsgn sign=10.101010, base=-11.111111 => 11.111111 +fcpsgn sign=-0.000000, base=11.111111 => -11.111111 +fcpsgn sign=-0.000000, base=-0.000000 => -0.000000 +fcpsgn sign=-0.000000, base=0.000000 => -0.000000 +fcpsgn sign=-0.000000, base=-11.111111 => -11.111111 +fcpsgn sign=0.000000, base=11.111111 => 11.111111 +fcpsgn sign=0.000000, base=-0.000000 => 0.000000 +fcpsgn sign=0.000000, base=0.000000 => 0.000000 +fcpsgn sign=0.000000, base=-11.111111 => 11.111111 +fcpsgn sign=-10.101010, base=11.111111 => -11.111111 +fcpsgn sign=-10.101010, base=-0.000000 => -0.000000 +fcpsgn sign=-10.101010, base=0.000000 => -0.000000 +fcpsgn sign=-10.101010, base=-11.111111 => -11.111111 +lfdp (-1024.000000, 1025.000000) => F_hi=-1024.000000, F_lo=1025.000000 +stfdp (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400 +lfdpx (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400 +stfdpx (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400 +lfiwax (-1024.000000) => FRT=(ffffffff, c0900000) +prtyd (0) => parity=0 +prtyw (0) => parity=0 +prtyd (1) => parity=1 +prtyw (1) => parity=1 +prtyd (2) => parity=0 +prtyw (2) => parity=0 +prtyd (3) => parity=1 +prtyw (3) => parity=1 +prtyd (4) => parity=0 +prtyw (4) => parity=0 +prtyd (5) => parity=1 +prtyw (5) => parity=1 +prtyd (6) => parity=0 +prtyw (6) => parity=0 +prtyd (7) => parity=1 +prtyw (7) => parity=1 +prtyd (8) => parity=0 +prtyw (8) => parity=0 +prtyd (9) => parity=1 +prtyw (9) => parity=1 +prtyd (a) => parity=0 +prtyw (a) => parity=0 +prtyd (b) => parity=1 +prtyw (b) => parity=1 +prtyd (c) => parity=0 +prtyw (c) => parity=0 +prtyd (d) => parity=1 +prtyw (d) => parity=1 +prtyd (e) => parity=0 +prtyw (e) => parity=0 +prtyd (f) => parity=1 +prtyw (f) => parity=1 +prtyd (10) => parity=0 +prtyw (10) => parity=0 +prtyd (11) => parity=1 +prtyw (11) => parity=1 +prtyd (12) => parity=0 +prtyw (12) => parity=0 +prtyd (13) => parity=1 +prtyw (13) => parity=1 +prtyd (14) => parity=0 +prtyw (14) => parity=0 +prtyd (15) => parity=1 +prtyw (15) => parity=1 +prtyd (16) => parity=0 +prtyw (16) => parity=0 +prtyd (17) => parity=1 +prtyw (17) => parity=1 +prtyd (18) => parity=0 +prtyw (18) => parity=0 +prtyd (19) => parity=1 +prtyw (19) => parity=1 +prtyd (1a) => parity=0 +prtyw (1a) => parity=0 +prtyd (1b) => parity=1 +prtyw (1b) => parity=1 +prtyd (1c) => parity=0 +prtyw (1c) => parity=0 +prtyd (1d) => parity=1 +prtyw (1d) => parity=1 +prtyd (1e) => parity=0 +prtyw (1e) => parity=0 +prtyd (1f) => parity=1 +prtyw (1f) => parity=1 +prtyd (20) => parity=0 +prtyw (20) => parity=0 +prtyd (21) => parity=1 +prtyw (21) => parity=1 +prtyd (22) => parity=0 +prtyw (22) => parity=0 +prtyd (23) => parity=1 +prtyw (23) => parity=1 +prtyd (24) => parity=0 +prtyw (24) => parity=0 +prtyd (25) => parity=1 +prtyw (25) => parity=1 +prtyd (26) => parity=0 +prtyw (26) => parity=0 +prtyd (27) => parity=1 +prtyw (27) => parity=1 +prtyd (28) => parity=0 +prtyw (28) => parity=0 +prtyd (29) => parity=1 +prtyw (29) => parity=1 +prtyd (2a) => parity=0 +prtyw (2a) => parity=0 +prtyd (2b) => parity=1 +prtyw (2b) => parity=1 +prtyd (2c) => parity=0 +prtyw (2c) => parity=0 +prtyd (2d) => parity=1 +prtyw (2d) => parity=1 +prtyd (2e) => parity=0 +prtyw (2e) => parity=0 +prtyd (2f) => parity=1 +prtyw (2f) => parity=1 +prtyd (30) => parity=0 +prtyw (30) => parity=0 +prtyd (31) => parity=1 +prtyw (31) => parity=1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.vgtest new file mode 100644 index 000000000..7f0006a86 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/ppc64/power_ISA2_05.vgtest @@ -0,0 +1,2 @@ +prog: power_ISA2_05 +vgopts: --workaround-gcc296-bugs=yes diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem-random.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem-random.c index bcf1fb198..556485839 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem-random.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem-random.c @@ -53,9 +53,9 @@ U8 build(int size, U1 byte) // res is now considered partially defined, but we know exactly what its // value is (it happens to be the same as its metavalue). - VALGRIND_GET_VBITS(&res, &shres, 8); + (void)VALGRIND_GET_VBITS(&res, &shres, 8); res2 = res; - VALGRIND_MAKE_MEM_DEFINED(&res2, 8); // avoid the 'undefined' warning + (void)VALGRIND_MAKE_MEM_DEFINED(&res2, 8); // avoid the 'undefined' warning assert(res2 == shres); return res; } @@ -73,7 +73,7 @@ void check(U1* arr, int n, char* who) U1* shadow = malloc(n); U1 arr_i; U8 sum = 0; - VALGRIND_GET_VBITS(arr, shadow, n); + (void)VALGRIND_GET_VBITS(arr, shadow, n); for (i = 0; i < n; i++) { arr_i = make_defined(arr[i]); if (arr_i != shadow[i]) { diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem.c index a0f018441..f168c7602 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sh-mem.c @@ -54,9 +54,9 @@ U8 build(int size, U1 byte) // res is now considered partially defined, but we know exactly what its // value is (it happens to be the same as its metavalue). - VALGRIND_GET_VBITS(&res, &shres, 8); + (void)VALGRIND_GET_VBITS(&res, &shres, 8); res2 = res; - VALGRIND_MAKE_MEM_DEFINED(&res2, 8); // avoid the 'undefined' warning + (void)VALGRIND_MAKE_MEM_DEFINED(&res2, 8); // avoid the 'undefined' warning assert(res2 == shres); return res; } @@ -71,7 +71,7 @@ void check_all(U4 x, U4 y, U1 expected_byte, U1 expected_byte_alt, U1 sh[SZB_OF_a]; // Used for getting a[]'s V bits int i; - VALGRIND_GET_VBITS(a, sh, sizeof(a)); + (void)VALGRIND_GET_VBITS(a, sh, sizeof(a)); for (i = x; i < y; i++) { if ( expected_byte != sh[i] && expected_byte_alt != sh[i] ) { fprintf(stderr, "\n\nFAILURE: %s, offset %d, byte %d -- " diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sigprocmask.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sigprocmask.c index 05eb87a51..5747dcb21 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sigprocmask.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/sigprocmask.c @@ -13,6 +13,7 @@ int main(void) { #if defined(__NR_sigprocmask) \ && !defined(__powerpc64__) \ + && !defined(__s390x__) \ && !defined(_AIX) \ && !defined(__arm__) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/strchr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/strchr.c index 01aaef9d3..2c77f0903 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/strchr.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/strchr.c @@ -7,7 +7,7 @@ int main(int argc, char* argv[]) { - char *s, *a, *b; + char *s, *a __attribute__((unused)), *b __attribute__((unused)); s = malloc(sizeof(char)); // Nb: s[0] is uninitialised, but almost certainly a zero diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.stderr.exp-s390x b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.stderr.exp-s390x new file mode 100644 index 000000000..5adcfa64d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.stderr.exp-s390x @@ -0,0 +1,10 @@ + +Process terminating with default action of signal 11 (SIGSEGV) + Access not within mapped region at address 0x........ + at 0x........: ??? + by 0x........: main (badjump.c:17) + If you believe this happened as a result of a stack + overflow in your program's main thread (unlikely but + possible), you can try to increase the size of the + main thread stack using the --main-stacksize= flag. + The main thread stack size used in this run was .... diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.supp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.supp index f702e90d0..50ef42595 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.supp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/supp_unknown.supp @@ -6,3 +6,10 @@ fun:(below main) } +{ + + Memcheck:Jump + obj:* + fun:main +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/suppfree.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/suppfree.stderr.exp index a75d35604..e29d17bfd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/suppfree.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/suppfree.stderr.exp @@ -1,4 +1,4 @@ -Invalid free() / delete / delete[] +Invalid free() / delete / delete[] / realloc() at 0x........: free (vg_replace_malloc.c:...) by 0x........: ddd (suppfree.c:7) by 0x........: ccc (suppfree.c:12) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/trivialleak.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/trivialleak.c index f3a896335..7ffcb8735 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/trivialleak.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/trivialleak.c @@ -2,7 +2,7 @@ static void test() { - void* leak; + void* leak __attribute__((unused)); int i; for (i = 0; i < 1000; i++) leak = (void*)malloc( 1 ); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo1.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo1.stderr.exp-ppc64 new file mode 100644 index 000000000..c339195b1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo1.stderr.exp-ppc64 @@ -0,0 +1,37 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:49) + Address 0x........ is 1 bytes inside a block of size 3 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: main (varinfo1.c:47) + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:52) + Location 0x........ is 0 bytes inside global var "global_u1" + declared at varinfo1.c:35 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:53) + Location 0x........ is 0 bytes inside global var "global_i1" + declared at varinfo1.c:37 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:54) + Location 0x........ is 0 bytes inside global_u2[3], + a global variable declared at varinfo1.c:39 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:55) + Location 0x........ is 0 bytes inside global_i2[7], + a global variable declared at varinfo1.c:41 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo1.c:29) + by 0x........: main (varinfo1.c:56) + Location 0x........ is 0 bytes inside local var "local" + declared at varinfo1.c:46, in frame #1 of thread 1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo2.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo2.stderr.exp-ppc64 new file mode 100644 index 000000000..81d117924 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo2.stderr.exp-ppc64 @@ -0,0 +1,21 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo2.c:29) + by 0x........: foo (varinfo2.c:41) + by 0x........: main (varinfo2.c:51) + Location 0x........ is 0 bytes inside var[7], + declared at varinfo2.c:39, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo2.c:29) + by 0x........: foo (varinfo2.c:43) + by 0x........: main (varinfo2.c:51) + Location 0x........ is 2 bytes inside var.bar, + declared at varinfo2.c:42, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo2.c:29) + by 0x........: foo (varinfo2.c:46) + by 0x........: main (varinfo2.c:51) + Location 0x........ is 1 byte inside local var "var" + declared at varinfo2.c:37, in frame #1 of thread 1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo3.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo3.stderr.exp-ppc64 new file mode 100644 index 000000000..e02a3c803 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo3.stderr.exp-ppc64 @@ -0,0 +1,58 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: foo (varinfo3.c:54) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside static_global_def[1], + declared at varinfo3.c:35, in frame #0 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: foo (varinfo3.c:55) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside nonstatic_global_def[2], + a global variable declared at varinfo3.c:36 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: foo (varinfo3.c:56) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside static_global_undef[3], + declared at varinfo3.c:37, in frame #0 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: foo (varinfo3.c:57) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside nonstatic_global_undef[4], + a global variable declared at varinfo3.c:38 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: bar (varinfo3.c:42) + by 0x........: foo (varinfo3.c:58) + by 0x........: main (varinfo3.c:66) + Address 0x........ is 5 bytes inside data symbol "static_local_def.XXXX" + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: bar (varinfo3.c:43) + by 0x........: foo (varinfo3.c:58) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside nonstatic_local_def[6], + declared at varinfo3.c:51, in frame #2 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: bar (varinfo3.c:44) + by 0x........: foo (varinfo3.c:58) + by 0x........: main (varinfo3.c:66) + Address 0x........ is 7 bytes inside data symbol "static_local_undef.XXXX" + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo3.c:29) + by 0x........: bar (varinfo3.c:45) + by 0x........: foo (varinfo3.c:58) + by 0x........: main (varinfo3.c:66) + Location 0x........ is 0 bytes inside nonstatic_local_undef[8], + declared at varinfo3.c:53, in frame #2 of thread 1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo4.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo4.stderr.exp-ppc64 new file mode 100644 index 000000000..a47db5f96 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo4.stderr.exp-ppc64 @@ -0,0 +1,21 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo4.c:29) + by 0x........: blah (varinfo4.c:47) + by 0x........: main (varinfo4.c:56) + Location 0x........ is 1 byte inside a[3].xyzzy[21].c1, + declared at varinfo4.c:45, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo4.c:29) + by 0x........: blah (varinfo4.c:48) + by 0x........: main (varinfo4.c:56) + Location 0x........ is 0 bytes inside a[5].bong, + declared at varinfo4.c:45, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo4.c:29) + by 0x........: blah (varinfo4.c:49) + by 0x........: main (varinfo4.c:56) + Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2], + declared at varinfo4.c:45, in frame #1 of thread 1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo5.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo5.stderr.exp-ppc64 new file mode 100644 index 000000000..db0c4fd64 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo5.stderr.exp-ppc64 @@ -0,0 +1,180 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:52) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Address 0x........ is 1 bytes inside a block of size 3 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: varinfo1_main (varinfo5so.c:50) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:55) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside global var "global_u1" + declared at varinfo5so.c:38 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:56) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside global var "global_i1" + declared at varinfo5so.c:40 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:57) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside global_u2[3], + a global variable declared at varinfo5so.c:42 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:58) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside global_i2[7], + a global variable declared at varinfo5so.c:44 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: varinfo1_main (varinfo5so.c:59) + by 0x........: varinfo5_main (varinfo5so.c:154) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside local var "local" + declared at varinfo5so.c:49, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo2 (varinfo5so.c:71) + by 0x........: varinfo2_main (varinfo5so.c:81) + by 0x........: varinfo5_main (varinfo5so.c:155) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside var[7], + declared at varinfo5so.c:69, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo2 (varinfo5so.c:73) + by 0x........: varinfo2_main (varinfo5so.c:81) + by 0x........: varinfo5_main (varinfo5so.c:155) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 2 bytes inside var.bar, + declared at varinfo5so.c:72, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo2 (varinfo5so.c:76) + by 0x........: varinfo2_main (varinfo5so.c:81) + by 0x........: varinfo5_main (varinfo5so.c:155) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 1 byte inside local var "var" + declared at varinfo5so.c:67, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo3 (varinfo5so.c:106) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside static_global_def[1], + declared at varinfo5so.c:87, in frame #0 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo3 (varinfo5so.c:107) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside nonstatic_global_def[2], + a global variable declared at varinfo5so.c:88 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo3 (varinfo5so.c:108) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside static_global_undef[3], + declared at varinfo5so.c:89, in frame #0 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: foo3 (varinfo5so.c:109) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside nonstatic_global_undef[4], + a global variable declared at varinfo5so.c:90 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: bar3 (varinfo5so.c:94) + by 0x........: foo3 (varinfo5so.c:110) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Address 0x........ is 5 bytes inside data symbol "static_local_def.XXXX" + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: bar3 (varinfo5so.c:95) + by 0x........: foo3 (varinfo5so.c:110) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside nonstatic_local_def[6], + declared at varinfo5so.c:103, in frame #2 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: bar3 (varinfo5so.c:96) + by 0x........: foo3 (varinfo5so.c:110) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Address 0x........ is 7 bytes inside data symbol "static_local_undef.XXXX" + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: bar3 (varinfo5so.c:97) + by 0x........: foo3 (varinfo5so.c:110) + by 0x........: varinfo3_main (varinfo5so.c:118) + by 0x........: varinfo5_main (varinfo5so.c:156) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside nonstatic_local_undef[8], + declared at varinfo5so.c:105, in frame #2 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: blah4 (varinfo5so.c:137) + by 0x........: varinfo4_main (varinfo5so.c:146) + by 0x........: varinfo5_main (varinfo5so.c:157) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 1 byte inside a[3].xyzzy[21].c1, + declared at varinfo5so.c:135, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: blah4 (varinfo5so.c:138) + by 0x........: varinfo4_main (varinfo5so.c:146) + by 0x........: varinfo5_main (varinfo5so.c:157) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 0 bytes inside a[5].bong, + declared at varinfo5so.c:135, in frame #1 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo5so.c:30) + by 0x........: blah4 (varinfo5so.c:139) + by 0x........: varinfo4_main (varinfo5so.c:146) + by 0x........: varinfo5_main (varinfo5so.c:157) + by 0x........: main (varinfo5.c:5) + Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2], + declared at varinfo5so.c:135, in frame #1 of thread 1 + +answer is 0 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo6.stderr.exp-ppc64 b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo6.stderr.exp-ppc64 new file mode 100644 index 000000000..f574c73aa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/varinfo6.stderr.exp-ppc64 @@ -0,0 +1,20 @@ +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:35) + by 0x........: mainSort (varinfo6.c:2999) + by 0x........: BZ2_blockSort (varinfo6.c:3143) + by 0x........: BZ2_compressBlock (varinfo6.c:4072) + by 0x........: handle_compress (varinfo6.c:4790) + by 0x........: BZ2_bzCompress (varinfo6.c:4860) + by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667) + by 0x........: main (varinfo6.c:6517) + Address 0x........ is on thread 1's stack + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:35) + by 0x........: BZ2_decompress (varinfo6.c:1699) + by 0x........: BZ2_bzDecompress (varinfo6.c:5230) + by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715) + by 0x........: main (varinfo6.c:6532) + Location 0x........ is 2 bytes inside local var "i" + declared at varinfo6.c:1517, in frame #1 of thread 1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/Makefile.in index 0920102a5..154e5f1ef 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/Makefile.in @@ -140,6 +140,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -169,12 +171,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -327,7 +324,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -356,6 +353,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -384,6 +386,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_exit_group.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_exit_group.c index 214d6c3df..f843988b2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_exit_group.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_exit_group.c @@ -5,7 +5,7 @@ int main(void) // uninitialised, but we know px[0] is 0x0 long* px = malloc(sizeof(long)); long x0 = px[0]; - int res; + int res __attribute__((unused)); // All __NR_xxx numbers are taken from x86 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_fork.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_fork.c index 805ade844..914fdfbdb 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_fork.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_fork.c @@ -2,7 +2,7 @@ int main(void) { - int res; + int res __attribute__((unused)); // All __NR_xxx numbers are taken from x86 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_vfork.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_vfork.c index fe999fb92..984c22edd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_vfork.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86-linux/scalar_vfork.c @@ -2,7 +2,7 @@ int main(void) { - int res; + int res __attribute__((unused)); // All __NR_xxx numbers are taken from x86 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86/Makefile.in index e7435613f..b0b38586e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/x86/Makefile.in @@ -162,6 +162,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -191,12 +193,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -349,7 +346,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -378,6 +375,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -406,6 +408,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/xml1.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/xml1.stderr.exp index 8471e5fa9..b6cb890b2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/xml1.stderr.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/memcheck/tests/xml1.stderr.exp @@ -198,7 +198,7 @@ 0x........ ... InvalidFree - Invalid free() / delete / delete[] + Invalid free() / delete / delete[] / realloc() 0x........ @@ -290,7 +290,7 @@ 0x........ ... InvalidFree - Invalid free() / delete / delete[] + Invalid free() / delete / delete[] / realloc() 0x........ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/mpi/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/mpi/Makefile.in index c7126c6ae..3756eb9f2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/mpi/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/mpi/Makefile.in @@ -141,6 +141,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -170,12 +172,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -328,7 +325,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -357,6 +354,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -385,6 +387,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ DEFAULT_INCLUDES = EXTRA_DIST = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/Makefile.in index ac061af74..0e39a0d19 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/Makefile.in @@ -163,6 +163,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -192,12 +194,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -351,7 +348,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -380,6 +377,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -408,6 +410,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ #---------------------------------------------------------------------------- @@ -460,6 +463,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \ TOOL_LDFLAGS_ARM_LINUX = \ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +TOOL_LDFLAGS_S390X_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_PPC32_AIX5 = \ $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ @@ -523,6 +529,9 @@ LIBREPLACEMALLOC_AMD64_DARWIN = \ LIBREPLACEMALLOC_X86_L4RE = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-l4re.a +LIBREPLACEMALLOC_S390X_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a + LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_LINUX) \ @@ -565,6 +574,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_L4RE = \ $(LIBREPLACEMALLOC_X86_L4RE) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_S390X_LINUX) \ + -Wl,--no-whole-archive + EXTRA_DIST = docs/nl-manual.xml NONE_SOURCES_COMMON = nl_main.c none_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/nl_main.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/nl_main.c index 98dd65d42..80203fcc3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/nl_main.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/nl_main.c @@ -62,6 +62,8 @@ static void nl_pre_clo_init(void) "Copyright (C) 2002-2010, and GNU GPL'd, by Nicholas Nethercote."); VG_(details_bug_reports_to) (VG_BUGS_TO); + VG_(details_avg_translation_sizeB) ( 275 ); + VG_(basic_tool_funcs) (nl_post_clo_init, nl_instrument, nl_fini); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.am index d2d71866a..5c3fc8147 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.am @@ -19,6 +19,9 @@ endif if VGCONF_ARCHS_INCLUDE_ARM SUBDIRS += arm endif +if VGCONF_ARCHS_INCLUDE_S390X +SUBDIRS += s390x +endif # OS-specific tests if VGCONF_OS_IS_LINUX @@ -33,7 +36,7 @@ if VGCONF_PLATFORMS_INCLUDE_X86_LINUX SUBDIRS += x86-linux endif -DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm linux darwin x86-linux . +DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm s390x linux darwin x86-linux . dist_noinst_SCRIPTS = \ filter_cmdline0 \ @@ -211,6 +214,7 @@ AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) # Extra stuff for C tests ansi_CFLAGS = $(AM_CFLAGS) -ansi +execve_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ floored_LDADD = -lm manythreads_LDADD = -lpthread if VGCONF_OS_IS_DARWIN diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.in index af5be1560..fa8405b01 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/Makefile.in @@ -55,13 +55,14 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(noinst_HEADERS) \ @VGCONF_ARCHS_INCLUDE_PPC32_TRUE@am__append_3 = ppc32 @VGCONF_ARCHS_INCLUDE_PPC64_TRUE@am__append_4 = ppc64 @VGCONF_ARCHS_INCLUDE_ARM_TRUE@am__append_5 = arm +@VGCONF_ARCHS_INCLUDE_S390X_TRUE@am__append_6 = s390x # OS-specific tests -@VGCONF_OS_IS_LINUX_TRUE@am__append_6 = linux -@VGCONF_OS_IS_DARWIN_TRUE@am__append_7 = darwin +@VGCONF_OS_IS_LINUX_TRUE@am__append_7 = linux +@VGCONF_OS_IS_DARWIN_TRUE@am__append_8 = darwin # Platform-specific tests -@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_8 = x86-linux +@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_9 = x86-linux check_PROGRAMS = ansi$(EXEEXT) args$(EXEEXT) async-sigs$(EXEEXT) \ bitfield1$(EXEEXT) bug129866$(EXEEXT) closeall$(EXEEXT) \ coolo_strlen$(EXEEXT) discard$(EXEEXT) exec-sigmask$(EXEEXT) \ @@ -100,7 +101,7 @@ check_PROGRAMS = ansi$(EXEEXT) args$(EXEEXT) async-sigs$(EXEEXT) \ # --61831:0:aspacem NSegment{ , start=0x10067a000, end=0x109a1efff, # smode=SmFixed, dev=0, ino=0, offset=0, fnIdx=-1, hasR=0, # hasW=0, hasX=0, hasT=0, mark=0, name="(none)"} -@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@am__append_9 = \ +@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@am__append_10 = \ @VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@ manythreads \ @VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@ thread-exits @@ -148,8 +149,10 @@ exec_sigmask_SOURCES = exec-sigmask.c exec_sigmask_OBJECTS = exec-sigmask.$(OBJEXT) exec_sigmask_LDADD = $(LDADD) execve_SOURCES = execve.c -execve_OBJECTS = execve.$(OBJEXT) +execve_OBJECTS = execve-execve.$(OBJEXT) execve_LDADD = $(LDADD) +execve_LINK = $(CCLD) $(execve_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ faultstatus_SOURCES = faultstatus.c faultstatus_OBJECTS = faultstatus.$(OBJEXT) faultstatus_LDADD = $(LDADD) @@ -477,6 +480,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -506,12 +511,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -664,7 +664,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -693,6 +693,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -721,6 +726,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -739,8 +745,8 @@ AM_CCASFLAGS = $(AM_CPPFLAGS) @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) SUBDIRS = . $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_5) $(am__append_6) \ - $(am__append_7) $(am__append_8) -DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm linux darwin x86-linux . + $(am__append_7) $(am__append_8) $(am__append_9) +DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm s390x linux darwin x86-linux . dist_noinst_SCRIPTS = \ filter_cmdline0 \ filter_cmdline1 \ @@ -860,6 +866,7 @@ EXTRA_DIST = \ # Extra stuff for C tests ansi_CFLAGS = $(AM_CFLAGS) -ansi +execve_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ floored_LDADD = -lm manythreads_LDADD = -lpthread @VGCONF_OS_IS_DARWIN_FALSE@nestedfns_CFLAGS = $(AM_CFLAGS) @@ -977,7 +984,7 @@ exec-sigmask$(EXEEXT): $(exec_sigmask_OBJECTS) $(exec_sigmask_DEPENDENCIES) $(LINK) $(exec_sigmask_OBJECTS) $(exec_sigmask_LDADD) $(LIBS) execve$(EXEEXT): $(execve_OBJECTS) $(execve_DEPENDENCIES) @rm -f execve$(EXEEXT) - $(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) + $(execve_LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) faultstatus$(EXEEXT): $(faultstatus_OBJECTS) $(faultstatus_DEPENDENCIES) @rm -f faultstatus$(EXEEXT) $(LINK) $(faultstatus_OBJECTS) $(faultstatus_LDADD) $(LIBS) @@ -1181,7 +1188,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coolo_strlen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/discard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exec-sigmask.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-execve.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faultstatus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl_setown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdleak_cmsg.Po@am__quote@ @@ -1274,6 +1281,20 @@ ansi-ansi.obj: ansi.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ansi_CFLAGS) $(CFLAGS) -c -o ansi-ansi.obj `if test -f 'ansi.c'; then $(CYGPATH_W) 'ansi.c'; else $(CYGPATH_W) '$(srcdir)/ansi.c'; fi` +execve-execve.o: execve.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -MT execve-execve.o -MD -MP -MF $(DEPDIR)/execve-execve.Tpo -c -o execve-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve-execve.Tpo $(DEPDIR)/execve-execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve.c' object='execve-execve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -c -o execve-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c + +execve-execve.obj: execve.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -MT execve-execve.obj -MD -MP -MF $(DEPDIR)/execve-execve.Tpo -c -o execve-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/execve-execve.Tpo $(DEPDIR)/execve-execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='execve.c' object='execve-execve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(execve_CFLAGS) $(CFLAGS) -c -o execve-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi` + nestedfns-nestedfns.o: nestedfns.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestedfns_CFLAGS) $(CFLAGS) -MT nestedfns-nestedfns.o -MD -MP -MF $(DEPDIR)/nestedfns-nestedfns.Tpo -c -o nestedfns-nestedfns.o `test -f 'nestedfns.c' || echo '$(srcdir)/'`nestedfns.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nestedfns-nestedfns.Tpo $(DEPDIR)/nestedfns-nestedfns.Po diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.am index 38e1ebbc3..215cc3f7f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.am @@ -12,13 +12,14 @@ endif if BUILD_SSSE3_TESTS INSN_TESTS += insn_ssse3 endif +if BUILD_PCLMULQDQ_TESTS +INSN_TESTS += insn_pclmulqdq +endif # Explicitly include insn_sse3 even if ! BUILD_SSE3_TESTS, # to avoid packaging screwups if 'make dist' is run on a machine # which failed the BUILD_SSE3_TESTS test in configure.in. -## FIXME: move lzcnt64 to SSE4 conditionalisation, when that happens. - EXTRA_DIST = \ amd64locked.vgtest amd64locked.stdout.exp amd64locked.stderr.exp \ bug127521-64.vgtest bug127521-64.stdout.exp bug127521-64.stderr.exp \ @@ -30,6 +31,8 @@ EXTRA_DIST = \ bug156404-amd64.vgtest bug156404-amd64.stdout.exp \ bug156404-amd64.stderr.exp \ clc.vgtest clc.stdout.exp clc.stderr.exp \ + crc32.vgtest crc32.stdout.exp crc32.stderr.exp \ + cmpxchg.vgtest cmpxchg.stdout.exp cmpxchg.stderr.exp \ faultstatus.disabled faultstatus.stderr.exp \ fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \ fxtract.vgtest fxtract.stderr.exp fxtract.stdout.exp \ @@ -40,17 +43,23 @@ EXTRA_DIST = \ insn_ssse3.stdout.exp insn_ssse3.stderr.exp insn_ssse3.vgtest \ jrcxz.stderr.exp jrcxz.stdout.exp jrcxz.vgtest \ looper.stderr.exp looper.stdout.exp looper.vgtest \ + loopnel.stderr.exp loopnel.stdout.exp loopnel.vgtest \ lzcnt64.stderr.exp lzcnt64.stdout.exp lzcnt64.vgtest \ nibz_bennee_mmap.stderr.exp nibz_bennee_mmap.stdout.exp \ nibz_bennee_mmap.vgtest \ + pcmpstr64.stderr.exp pcmpstr64.stdout.exp \ + pcmpstr64.vgtest \ + pcmpxstrx64.stderr.exp pcmpxstrx64.stdout.exp \ + pcmpxstrx64.vgtest \ rcl-amd64.vgtest rcl-amd64.stdout.exp rcl-amd64.stderr.exp \ redundantRexW.vgtest redundantRexW.stdout.exp \ redundantRexW.stderr.exp \ smc1.stderr.exp smc1.stdout.exp smc1.vgtest \ + sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \ shrld.stderr.exp shrld.stdout.exp shrld.vgtest \ ssse3_misaligned.stderr.exp ssse3_misaligned.stdout.exp \ ssse3_misaligned.vgtest \ - ssse3_misaligned.c \ + sse4-64.stderr.exp sse4-64.stdout.exp sse4-64.vgtest \ slahf-amd64.stderr.exp slahf-amd64.stdout.exp \ slahf-amd64.vgtest \ xadd.stderr.exp xadd.stdout.exp xadd.vgtest @@ -59,16 +68,23 @@ check_PROGRAMS = \ amd64locked \ bug127521-64 bug132813-amd64 bug132918 \ clc \ + cmpxchg \ $(INSN_TESTS) \ - lzcnt64 \ rcl-amd64 \ redundantRexW \ smc1 \ + sbbmisc \ nibz_bennee_mmap \ xadd if BUILD_SSSE3_TESTS check_PROGRAMS += ssse3_misaligned endif +if BUILD_LZCNT_TESTS + check_PROGRAMS += lzcnt64 +endif +if BUILD_SSE42_TESTS + check_PROGRAMS += pcmpstr64 pcmpxstrx64 sse4-64 crc32 +endif # DDD: these need to be made to work on Darwin like the x86/ ones were. if ! VGCONF_OS_IS_DARWIN @@ -79,6 +95,7 @@ if ! VGCONF_OS_IS_DARWIN fcmovnu \ fxtract \ looper \ + loopnel \ jrcxz \ shrld \ slahf-amd64 @@ -91,6 +108,7 @@ AM_CCASFLAGS += @FLAG_M64@ # generic C ones amd64locked_CFLAGS = $(AM_CFLAGS) -O bug132918_LDADD = -lm +fxtract_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_OVERFLOW@ insn_basic_SOURCES = insn_basic.def insn_basic_LDADD = -lm insn_mmx_SOURCES = insn_mmx.def diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.in index 9e9deeb55..9c36cca38 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/Makefile.in @@ -48,21 +48,26 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(top_srcdir)/Makefile.tool-tests.am @BUILD_SSE3_TESTS_TRUE@am__append_1 = insn_sse3 @BUILD_SSSE3_TESTS_TRUE@am__append_2 = insn_ssse3 +@BUILD_PCLMULQDQ_TESTS_TRUE@am__append_3 = insn_pclmulqdq check_PROGRAMS = amd64locked$(EXEEXT) bug127521-64$(EXEEXT) \ bug132813-amd64$(EXEEXT) bug132918$(EXEEXT) clc$(EXEEXT) \ - $(am__EXEEXT_3) lzcnt64$(EXEEXT) rcl-amd64$(EXEEXT) \ - redundantRexW$(EXEEXT) smc1$(EXEEXT) nibz_bennee_mmap$(EXEEXT) \ - xadd$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) -@BUILD_SSSE3_TESTS_TRUE@am__append_3 = ssse3_misaligned + cmpxchg$(EXEEXT) $(am__EXEEXT_4) rcl-amd64$(EXEEXT) \ + redundantRexW$(EXEEXT) smc1$(EXEEXT) sbbmisc$(EXEEXT) \ + nibz_bennee_mmap$(EXEEXT) xadd$(EXEEXT) $(am__EXEEXT_5) \ + $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8) +@BUILD_SSSE3_TESTS_TRUE@am__append_4 = ssse3_misaligned +@BUILD_LZCNT_TESTS_TRUE@am__append_5 = lzcnt64 +@BUILD_SSE42_TESTS_TRUE@am__append_6 = pcmpstr64 pcmpxstrx64 sse4-64 crc32 # DDD: these need to be made to work on Darwin like the x86/ ones were. -@VGCONF_OS_IS_DARWIN_FALSE@am__append_4 = \ +@VGCONF_OS_IS_DARWIN_FALSE@am__append_7 = \ @VGCONF_OS_IS_DARWIN_FALSE@ bug137714-amd64 \ @VGCONF_OS_IS_DARWIN_FALSE@ bug156404-amd64 \ @VGCONF_OS_IS_DARWIN_FALSE@ faultstatus \ @VGCONF_OS_IS_DARWIN_FALSE@ fcmovnu \ @VGCONF_OS_IS_DARWIN_FALSE@ fxtract \ @VGCONF_OS_IS_DARWIN_FALSE@ looper \ +@VGCONF_OS_IS_DARWIN_FALSE@ loopnel \ @VGCONF_OS_IS_DARWIN_FALSE@ jrcxz \ @VGCONF_OS_IS_DARWIN_FALSE@ shrld \ @VGCONF_OS_IS_DARWIN_FALSE@ slahf-amd64 @@ -78,16 +83,22 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @BUILD_SSE3_TESTS_TRUE@am__EXEEXT_1 = insn_sse3$(EXEEXT) @BUILD_SSSE3_TESTS_TRUE@am__EXEEXT_2 = insn_ssse3$(EXEEXT) -am__EXEEXT_3 = insn_basic$(EXEEXT) insn_mmx$(EXEEXT) insn_sse$(EXEEXT) \ +@BUILD_PCLMULQDQ_TESTS_TRUE@am__EXEEXT_3 = insn_pclmulqdq$(EXEEXT) +am__EXEEXT_4 = insn_basic$(EXEEXT) insn_mmx$(EXEEXT) insn_sse$(EXEEXT) \ insn_sse2$(EXEEXT) insn_fpu$(EXEEXT) $(am__EXEEXT_1) \ - $(am__EXEEXT_2) -@BUILD_SSSE3_TESTS_TRUE@am__EXEEXT_4 = ssse3_misaligned$(EXEEXT) -@VGCONF_OS_IS_DARWIN_FALSE@am__EXEEXT_5 = bug137714-amd64$(EXEEXT) \ + $(am__EXEEXT_2) $(am__EXEEXT_3) +@BUILD_SSSE3_TESTS_TRUE@am__EXEEXT_5 = ssse3_misaligned$(EXEEXT) +@BUILD_LZCNT_TESTS_TRUE@am__EXEEXT_6 = lzcnt64$(EXEEXT) +@BUILD_SSE42_TESTS_TRUE@am__EXEEXT_7 = pcmpstr64$(EXEEXT) \ +@BUILD_SSE42_TESTS_TRUE@ pcmpxstrx64$(EXEEXT) sse4-64$(EXEEXT) \ +@BUILD_SSE42_TESTS_TRUE@ crc32$(EXEEXT) +@VGCONF_OS_IS_DARWIN_FALSE@am__EXEEXT_8 = bug137714-amd64$(EXEEXT) \ @VGCONF_OS_IS_DARWIN_FALSE@ bug156404-amd64$(EXEEXT) \ @VGCONF_OS_IS_DARWIN_FALSE@ faultstatus$(EXEEXT) \ @VGCONF_OS_IS_DARWIN_FALSE@ fcmovnu$(EXEEXT) fxtract$(EXEEXT) \ -@VGCONF_OS_IS_DARWIN_FALSE@ looper$(EXEEXT) jrcxz$(EXEEXT) \ -@VGCONF_OS_IS_DARWIN_FALSE@ shrld$(EXEEXT) slahf-amd64$(EXEEXT) +@VGCONF_OS_IS_DARWIN_FALSE@ looper$(EXEEXT) loopnel$(EXEEXT) \ +@VGCONF_OS_IS_DARWIN_FALSE@ jrcxz$(EXEEXT) shrld$(EXEEXT) \ +@VGCONF_OS_IS_DARWIN_FALSE@ slahf-amd64$(EXEEXT) amd64locked_SOURCES = amd64locked.c amd64locked_OBJECTS = amd64locked-amd64locked.$(OBJEXT) amd64locked_LDADD = $(LDADD) @@ -111,6 +122,12 @@ bug156404_amd64_LDADD = $(LDADD) clc_SOURCES = clc.c clc_OBJECTS = clc.$(OBJEXT) clc_LDADD = $(LDADD) +cmpxchg_SOURCES = cmpxchg.c +cmpxchg_OBJECTS = cmpxchg.$(OBJEXT) +cmpxchg_LDADD = $(LDADD) +crc32_SOURCES = crc32.c +crc32_OBJECTS = crc32.$(OBJEXT) +crc32_LDADD = $(LDADD) faultstatus_SOURCES = faultstatus.c faultstatus_OBJECTS = faultstatus.$(OBJEXT) faultstatus_LDADD = $(LDADD) @@ -118,8 +135,10 @@ fcmovnu_SOURCES = fcmovnu.c fcmovnu_OBJECTS = fcmovnu.$(OBJEXT) fcmovnu_LDADD = $(LDADD) fxtract_SOURCES = fxtract.c -fxtract_OBJECTS = fxtract.$(OBJEXT) +fxtract_OBJECTS = fxtract-fxtract.$(OBJEXT) fxtract_DEPENDENCIES = +fxtract_LINK = $(CCLD) $(fxtract_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ am_insn_basic_OBJECTS = insn_basic.$(OBJEXT) insn_basic_OBJECTS = $(am_insn_basic_OBJECTS) insn_basic_DEPENDENCIES = @@ -129,6 +148,9 @@ insn_fpu_DEPENDENCIES = am_insn_mmx_OBJECTS = insn_mmx.$(OBJEXT) insn_mmx_OBJECTS = $(am_insn_mmx_OBJECTS) insn_mmx_DEPENDENCIES = +insn_pclmulqdq_SOURCES = insn_pclmulqdq.c +insn_pclmulqdq_OBJECTS = insn_pclmulqdq.$(OBJEXT) +insn_pclmulqdq_LDADD = $(LDADD) am_insn_sse_OBJECTS = insn_sse.$(OBJEXT) insn_sse_OBJECTS = $(am_insn_sse_OBJECTS) insn_sse_DEPENDENCIES = @@ -147,18 +169,30 @@ jrcxz_LDADD = $(LDADD) looper_SOURCES = looper.c looper_OBJECTS = looper.$(OBJEXT) looper_LDADD = $(LDADD) +loopnel_SOURCES = loopnel.c +loopnel_OBJECTS = loopnel.$(OBJEXT) +loopnel_LDADD = $(LDADD) lzcnt64_SOURCES = lzcnt64.c lzcnt64_OBJECTS = lzcnt64.$(OBJEXT) lzcnt64_LDADD = $(LDADD) nibz_bennee_mmap_SOURCES = nibz_bennee_mmap.c nibz_bennee_mmap_OBJECTS = nibz_bennee_mmap.$(OBJEXT) nibz_bennee_mmap_LDADD = $(LDADD) +pcmpstr64_SOURCES = pcmpstr64.c +pcmpstr64_OBJECTS = pcmpstr64.$(OBJEXT) +pcmpstr64_LDADD = $(LDADD) +pcmpxstrx64_SOURCES = pcmpxstrx64.c +pcmpxstrx64_OBJECTS = pcmpxstrx64.$(OBJEXT) +pcmpxstrx64_LDADD = $(LDADD) rcl_amd64_SOURCES = rcl-amd64.c rcl_amd64_OBJECTS = rcl-amd64.$(OBJEXT) rcl_amd64_LDADD = $(LDADD) redundantRexW_SOURCES = redundantRexW.c redundantRexW_OBJECTS = redundantRexW.$(OBJEXT) redundantRexW_LDADD = $(LDADD) +sbbmisc_SOURCES = sbbmisc.c +sbbmisc_OBJECTS = sbbmisc.$(OBJEXT) +sbbmisc_LDADD = $(LDADD) shrld_SOURCES = shrld.c shrld_OBJECTS = shrld.$(OBJEXT) shrld_LDADD = $(LDADD) @@ -168,6 +202,9 @@ slahf_amd64_LDADD = $(LDADD) smc1_SOURCES = smc1.c smc1_OBJECTS = smc1.$(OBJEXT) smc1_LDADD = $(LDADD) +sse4_64_SOURCES = sse4-64.c +sse4_64_OBJECTS = sse4-64.$(OBJEXT) +sse4_64_LDADD = $(LDADD) ssse3_misaligned_SOURCES = ssse3_misaligned.c ssse3_misaligned_OBJECTS = ssse3_misaligned.$(OBJEXT) ssse3_misaligned_LDADD = $(LDADD) @@ -184,20 +221,23 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = amd64locked.c bug127521-64.c bug132813-amd64.c bug132918.c \ - bug137714-amd64.c bug156404-amd64.c clc.c faultstatus.c \ - fcmovnu.c fxtract.c $(insn_basic_SOURCES) $(insn_fpu_SOURCES) \ - $(insn_mmx_SOURCES) $(insn_sse_SOURCES) $(insn_sse2_SOURCES) \ - $(insn_sse3_SOURCES) $(insn_ssse3_SOURCES) jrcxz.c looper.c \ - lzcnt64.c nibz_bennee_mmap.c rcl-amd64.c redundantRexW.c \ - shrld.c slahf-amd64.c smc1.c ssse3_misaligned.c xadd.c + bug137714-amd64.c bug156404-amd64.c clc.c cmpxchg.c crc32.c \ + faultstatus.c fcmovnu.c fxtract.c $(insn_basic_SOURCES) \ + $(insn_fpu_SOURCES) $(insn_mmx_SOURCES) insn_pclmulqdq.c \ + $(insn_sse_SOURCES) $(insn_sse2_SOURCES) $(insn_sse3_SOURCES) \ + $(insn_ssse3_SOURCES) jrcxz.c looper.c loopnel.c lzcnt64.c \ + nibz_bennee_mmap.c pcmpstr64.c pcmpxstrx64.c rcl-amd64.c \ + redundantRexW.c sbbmisc.c shrld.c slahf-amd64.c smc1.c \ + sse4-64.c ssse3_misaligned.c xadd.c DIST_SOURCES = amd64locked.c bug127521-64.c bug132813-amd64.c \ bug132918.c bug137714-amd64.c bug156404-amd64.c clc.c \ - faultstatus.c fcmovnu.c fxtract.c $(insn_basic_SOURCES) \ - $(insn_fpu_SOURCES) $(insn_mmx_SOURCES) $(insn_sse_SOURCES) \ - $(insn_sse2_SOURCES) $(insn_sse3_SOURCES) \ - $(insn_ssse3_SOURCES) jrcxz.c looper.c lzcnt64.c \ - nibz_bennee_mmap.c rcl-amd64.c redundantRexW.c shrld.c \ - slahf-amd64.c smc1.c ssse3_misaligned.c xadd.c + cmpxchg.c crc32.c faultstatus.c fcmovnu.c fxtract.c \ + $(insn_basic_SOURCES) $(insn_fpu_SOURCES) $(insn_mmx_SOURCES) \ + insn_pclmulqdq.c $(insn_sse_SOURCES) $(insn_sse2_SOURCES) \ + $(insn_sse3_SOURCES) $(insn_ssse3_SOURCES) jrcxz.c looper.c \ + loopnel.c lzcnt64.c nibz_bennee_mmap.c pcmpstr64.c \ + pcmpxstrx64.c rcl-amd64.c redundantRexW.c sbbmisc.c shrld.c \ + slahf-amd64.c smc1.c sse4-64.c ssse3_misaligned.c xadd.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -243,6 +283,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -272,12 +314,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -430,7 +467,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -459,6 +496,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -487,6 +529,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -506,7 +549,7 @@ AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M64@ dist_noinst_SCRIPTS = filter_cpuid filter_stderr filter_int gen_insn_test.pl CLEANFILES = $(addsuffix .c,$(INSN_TESTS)) INSN_TESTS = insn_basic insn_mmx insn_sse insn_sse2 insn_fpu \ - $(am__append_1) $(am__append_2) + $(am__append_1) $(am__append_2) $(am__append_3) # Explicitly include insn_sse3 even if ! BUILD_SSE3_TESTS, # to avoid packaging screwups if 'make dist' is run on a machine @@ -522,6 +565,8 @@ EXTRA_DIST = \ bug156404-amd64.vgtest bug156404-amd64.stdout.exp \ bug156404-amd64.stderr.exp \ clc.vgtest clc.stdout.exp clc.stderr.exp \ + crc32.vgtest crc32.stdout.exp crc32.stderr.exp \ + cmpxchg.vgtest cmpxchg.stdout.exp cmpxchg.stderr.exp \ faultstatus.disabled faultstatus.stderr.exp \ fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \ fxtract.vgtest fxtract.stderr.exp fxtract.stdout.exp \ @@ -532,17 +577,23 @@ EXTRA_DIST = \ insn_ssse3.stdout.exp insn_ssse3.stderr.exp insn_ssse3.vgtest \ jrcxz.stderr.exp jrcxz.stdout.exp jrcxz.vgtest \ looper.stderr.exp looper.stdout.exp looper.vgtest \ + loopnel.stderr.exp loopnel.stdout.exp loopnel.vgtest \ lzcnt64.stderr.exp lzcnt64.stdout.exp lzcnt64.vgtest \ nibz_bennee_mmap.stderr.exp nibz_bennee_mmap.stdout.exp \ nibz_bennee_mmap.vgtest \ + pcmpstr64.stderr.exp pcmpstr64.stdout.exp \ + pcmpstr64.vgtest \ + pcmpxstrx64.stderr.exp pcmpxstrx64.stdout.exp \ + pcmpxstrx64.vgtest \ rcl-amd64.vgtest rcl-amd64.stdout.exp rcl-amd64.stderr.exp \ redundantRexW.vgtest redundantRexW.stdout.exp \ redundantRexW.stderr.exp \ smc1.stderr.exp smc1.stdout.exp smc1.vgtest \ + sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \ shrld.stderr.exp shrld.stdout.exp shrld.vgtest \ ssse3_misaligned.stderr.exp ssse3_misaligned.stdout.exp \ ssse3_misaligned.vgtest \ - ssse3_misaligned.c \ + sse4-64.stderr.exp sse4-64.stdout.exp sse4-64.vgtest \ slahf-amd64.stderr.exp slahf-amd64.stdout.exp \ slahf-amd64.vgtest \ xadd.stderr.exp xadd.stdout.exp xadd.vgtest @@ -551,6 +602,7 @@ EXTRA_DIST = \ # generic C ones amd64locked_CFLAGS = $(AM_CFLAGS) -O bug132918_LDADD = -lm +fxtract_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_OVERFLOW@ insn_basic_SOURCES = insn_basic.def insn_basic_LDADD = -lm insn_mmx_SOURCES = insn_mmx.def @@ -624,6 +676,12 @@ bug156404-amd64$(EXEEXT): $(bug156404_amd64_OBJECTS) $(bug156404_amd64_DEPENDENC clc$(EXEEXT): $(clc_OBJECTS) $(clc_DEPENDENCIES) @rm -f clc$(EXEEXT) $(LINK) $(clc_OBJECTS) $(clc_LDADD) $(LIBS) +cmpxchg$(EXEEXT): $(cmpxchg_OBJECTS) $(cmpxchg_DEPENDENCIES) + @rm -f cmpxchg$(EXEEXT) + $(LINK) $(cmpxchg_OBJECTS) $(cmpxchg_LDADD) $(LIBS) +crc32$(EXEEXT): $(crc32_OBJECTS) $(crc32_DEPENDENCIES) + @rm -f crc32$(EXEEXT) + $(LINK) $(crc32_OBJECTS) $(crc32_LDADD) $(LIBS) faultstatus$(EXEEXT): $(faultstatus_OBJECTS) $(faultstatus_DEPENDENCIES) @rm -f faultstatus$(EXEEXT) $(LINK) $(faultstatus_OBJECTS) $(faultstatus_LDADD) $(LIBS) @@ -632,7 +690,7 @@ fcmovnu$(EXEEXT): $(fcmovnu_OBJECTS) $(fcmovnu_DEPENDENCIES) $(LINK) $(fcmovnu_OBJECTS) $(fcmovnu_LDADD) $(LIBS) fxtract$(EXEEXT): $(fxtract_OBJECTS) $(fxtract_DEPENDENCIES) @rm -f fxtract$(EXEEXT) - $(LINK) $(fxtract_OBJECTS) $(fxtract_LDADD) $(LIBS) + $(fxtract_LINK) $(fxtract_OBJECTS) $(fxtract_LDADD) $(LIBS) insn_basic$(EXEEXT): $(insn_basic_OBJECTS) $(insn_basic_DEPENDENCIES) @rm -f insn_basic$(EXEEXT) $(LINK) $(insn_basic_OBJECTS) $(insn_basic_LDADD) $(LIBS) @@ -642,6 +700,9 @@ insn_fpu$(EXEEXT): $(insn_fpu_OBJECTS) $(insn_fpu_DEPENDENCIES) insn_mmx$(EXEEXT): $(insn_mmx_OBJECTS) $(insn_mmx_DEPENDENCIES) @rm -f insn_mmx$(EXEEXT) $(LINK) $(insn_mmx_OBJECTS) $(insn_mmx_LDADD) $(LIBS) +insn_pclmulqdq$(EXEEXT): $(insn_pclmulqdq_OBJECTS) $(insn_pclmulqdq_DEPENDENCIES) + @rm -f insn_pclmulqdq$(EXEEXT) + $(LINK) $(insn_pclmulqdq_OBJECTS) $(insn_pclmulqdq_LDADD) $(LIBS) insn_sse$(EXEEXT): $(insn_sse_OBJECTS) $(insn_sse_DEPENDENCIES) @rm -f insn_sse$(EXEEXT) $(LINK) $(insn_sse_OBJECTS) $(insn_sse_LDADD) $(LIBS) @@ -660,18 +721,30 @@ jrcxz$(EXEEXT): $(jrcxz_OBJECTS) $(jrcxz_DEPENDENCIES) looper$(EXEEXT): $(looper_OBJECTS) $(looper_DEPENDENCIES) @rm -f looper$(EXEEXT) $(LINK) $(looper_OBJECTS) $(looper_LDADD) $(LIBS) +loopnel$(EXEEXT): $(loopnel_OBJECTS) $(loopnel_DEPENDENCIES) + @rm -f loopnel$(EXEEXT) + $(LINK) $(loopnel_OBJECTS) $(loopnel_LDADD) $(LIBS) lzcnt64$(EXEEXT): $(lzcnt64_OBJECTS) $(lzcnt64_DEPENDENCIES) @rm -f lzcnt64$(EXEEXT) $(LINK) $(lzcnt64_OBJECTS) $(lzcnt64_LDADD) $(LIBS) nibz_bennee_mmap$(EXEEXT): $(nibz_bennee_mmap_OBJECTS) $(nibz_bennee_mmap_DEPENDENCIES) @rm -f nibz_bennee_mmap$(EXEEXT) $(LINK) $(nibz_bennee_mmap_OBJECTS) $(nibz_bennee_mmap_LDADD) $(LIBS) +pcmpstr64$(EXEEXT): $(pcmpstr64_OBJECTS) $(pcmpstr64_DEPENDENCIES) + @rm -f pcmpstr64$(EXEEXT) + $(LINK) $(pcmpstr64_OBJECTS) $(pcmpstr64_LDADD) $(LIBS) +pcmpxstrx64$(EXEEXT): $(pcmpxstrx64_OBJECTS) $(pcmpxstrx64_DEPENDENCIES) + @rm -f pcmpxstrx64$(EXEEXT) + $(LINK) $(pcmpxstrx64_OBJECTS) $(pcmpxstrx64_LDADD) $(LIBS) rcl-amd64$(EXEEXT): $(rcl_amd64_OBJECTS) $(rcl_amd64_DEPENDENCIES) @rm -f rcl-amd64$(EXEEXT) $(LINK) $(rcl_amd64_OBJECTS) $(rcl_amd64_LDADD) $(LIBS) redundantRexW$(EXEEXT): $(redundantRexW_OBJECTS) $(redundantRexW_DEPENDENCIES) @rm -f redundantRexW$(EXEEXT) $(LINK) $(redundantRexW_OBJECTS) $(redundantRexW_LDADD) $(LIBS) +sbbmisc$(EXEEXT): $(sbbmisc_OBJECTS) $(sbbmisc_DEPENDENCIES) + @rm -f sbbmisc$(EXEEXT) + $(LINK) $(sbbmisc_OBJECTS) $(sbbmisc_LDADD) $(LIBS) shrld$(EXEEXT): $(shrld_OBJECTS) $(shrld_DEPENDENCIES) @rm -f shrld$(EXEEXT) $(LINK) $(shrld_OBJECTS) $(shrld_LDADD) $(LIBS) @@ -681,6 +754,9 @@ slahf-amd64$(EXEEXT): $(slahf_amd64_OBJECTS) $(slahf_amd64_DEPENDENCIES) smc1$(EXEEXT): $(smc1_OBJECTS) $(smc1_DEPENDENCIES) @rm -f smc1$(EXEEXT) $(LINK) $(smc1_OBJECTS) $(smc1_LDADD) $(LIBS) +sse4-64$(EXEEXT): $(sse4_64_OBJECTS) $(sse4_64_DEPENDENCIES) + @rm -f sse4-64$(EXEEXT) + $(LINK) $(sse4_64_OBJECTS) $(sse4_64_LDADD) $(LIBS) ssse3_misaligned$(EXEEXT): $(ssse3_misaligned_OBJECTS) $(ssse3_misaligned_DEPENDENCIES) @rm -f ssse3_misaligned$(EXEEXT) $(LINK) $(ssse3_misaligned_OBJECTS) $(ssse3_misaligned_LDADD) $(LIBS) @@ -701,25 +777,33 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bug137714-amd64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bug156404-amd64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmpxchg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faultstatus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcmovnu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxtract.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxtract-fxtract.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_basic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_fpu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_mmx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_pclmulqdq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_sse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_sse2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_sse3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_ssse3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jrcxz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/looper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopnel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzcnt64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nibz_bennee_mmap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcmpstr64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcmpxstrx64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcl-amd64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redundantRexW.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbbmisc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrld.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slahf-amd64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smc1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sse4-64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssse3_misaligned.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xadd.Po@am__quote@ @@ -751,6 +835,20 @@ amd64locked-amd64locked.obj: amd64locked.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amd64locked_CFLAGS) $(CFLAGS) -c -o amd64locked-amd64locked.obj `if test -f 'amd64locked.c'; then $(CYGPATH_W) 'amd64locked.c'; else $(CYGPATH_W) '$(srcdir)/amd64locked.c'; fi` +fxtract-fxtract.o: fxtract.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -MT fxtract-fxtract.o -MD -MP -MF $(DEPDIR)/fxtract-fxtract.Tpo -c -o fxtract-fxtract.o `test -f 'fxtract.c' || echo '$(srcdir)/'`fxtract.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fxtract-fxtract.Tpo $(DEPDIR)/fxtract-fxtract.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fxtract.c' object='fxtract-fxtract.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -c -o fxtract-fxtract.o `test -f 'fxtract.c' || echo '$(srcdir)/'`fxtract.c + +fxtract-fxtract.obj: fxtract.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -MT fxtract-fxtract.obj -MD -MP -MF $(DEPDIR)/fxtract-fxtract.Tpo -c -o fxtract-fxtract.obj `if test -f 'fxtract.c'; then $(CYGPATH_W) 'fxtract.c'; else $(CYGPATH_W) '$(srcdir)/fxtract.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fxtract-fxtract.Tpo $(DEPDIR)/fxtract-fxtract.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fxtract.c' object='fxtract-fxtract.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -c -o fxtract-fxtract.obj `if test -f 'fxtract.c'; then $(CYGPATH_W) 'fxtract.c'; else $(CYGPATH_W) '$(srcdir)/fxtract.c'; fi` + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.c new file mode 100644 index 000000000..7a1c86b51 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.c @@ -0,0 +1,377 @@ +#include "tests/asm.h" +#include + +/* This test only checks register/register cmpxchg */ + +typedef unsigned long long int ULong; +typedef unsigned int UInt; + +ULong m64; + +ULong rax; +ULong rbx; +ULong rcx; +ULong rdx; +ULong rax_out; +ULong rbx_out; +ULong rcx_out; + +int main ( void ) +{ + + /* 8-bit */ + + rdx = 0x11111111; rax = 0x22222222; + rcx = 0x33333333; rbx = 0x44444444; + + printf("cmpxchg %%bl,%%cl (al=%llx bl=%llx cl=%llx)\n", + rax&0xff,rbx&0xff,rcx&0xff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %bl,%cl \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" al!=cl so al should equal cl (Result al=%llx bl=%llx cl=%llx)\n", + rax_out&0xff,rbx_out&0xff,rcx_out&0xff); + + + + rdx = 0x99999999; rax = 0x77777777; + rcx = 0x55555555; rbx = 0x55555555; + + printf("cmpxchg %%bl,%%cl (al=%llx bl=%llx cl=%llx)\n", + rax&0xff,rbx&0xff,rcx&0xff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %bl,%cl \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" al==cl so cl should equal bl (Result al=%llx bl=%llx cl=%llx)\n", + rax_out&0xff,rbx_out&0xff,rcx_out&0xff); + + /* 16-bit */ + + rdx = 0x11111111; rax = 0x22222222; + rcx = 0x33333333; rbx = 0x44444444; + + printf("cmpxchg %%bx,%%cx (ax=%llx bx=%llx cx=%llx)\n", + rax&0xffff,rbx&0xffff,rcx&0xffff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %bx,%cx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" ax!=cx so ax should equal cx (Result ax=%llx bx=%llx cx=%llx)\n", + rax_out&0xffff,rbx_out&0xffff,rcx_out&0xffff); + + + + rdx = 0x99999999; rax = 0x77777777; + rcx = 0x55555555; rbx = 0x55555555; + + printf("cmpxchg %%bx,%%cx (ax=%llx bx=%llx cx=%llx)\n", + rax&0xffff,rbx&0xffff,rcx&0xffff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %bx,%cx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" ax==cx so cx should equal bx (Result ax=%llx bx=%llx cx=%llx)\n", + rax_out&0xffff,rbx_out&0xffff,rcx_out&0xffff); + + + /* 32-bit */ + + rdx = 0x11111111; rax = 0x22222222; + rcx = 0x33333333; rbx = 0x44444444; + + printf("cmpxchg %%ebx,%%ecx (eax=%llx ebx=%llx ecx=%llx)\n", + rax&0xffffffff,rbx&0xffffffff,rcx&0xffffffff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %ebx,%ecx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" eax!=ecx so eax should equal ecx (Result eax=%llx ebx=%llx ecx=%llx)\n", + rax_out&0xffffffff,rbx_out&0xffffffff,rcx_out&0xffffffff); + + + + rdx = 0x99999999; rax = 0x77777777; + rcx = 0x55555555; rbx = 0x55555555; + + printf("cmpxchg %%ebx,%%ecx (eax=%llx ebx=%llx ecx=%llx)\n", + rax&0xffffffff,rbx&0xffffffff,rcx&0xffffffff); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %ebx,%ecx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" eax==ecx so ecx should equal ebx (Result eax=%llx ebx=%llx ecx=%llx)\n", + rax_out&0xffffffff,rbx_out&0xffffffff,rcx_out&0xffffffff); + + + /* 64-bit */ + + rdx = 0x111111111; rax = 0x222222222; + rcx = 0x333333333; rbx = 0x444444444; + + printf("cmpxchg %%rbx,%%rcx (rax=%llx rbx=%llx rcx=%llx)\n", + rax,rbx,rcx); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %rbx,%rcx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" rax!=rcx so rax should equal rcx (Result rax=%llx rbx=%llx rcx=%llx)\n", + rax_out,rbx_out,rcx_out); + + + + rdx = 0x999999999; rax = 0x777777777; + rcx = 0x555555555; rbx = 0x555555555; + + printf("cmpxchg %%rbx,%%rcx (rax=%llx rbx=%llx rcx=%llx)\n", + rax,rbx,rcx); + + asm("\n" + "\tpush %rax\n" + "\tpush %rbx\n" + "\tpush %rcx\n" + "\tpush %rdx\n" + "\txor %rax, %rax\n" // get eflags in a known state +#ifndef VGP_amd64_darwin + "\tmov " VG_SYM(rax) ",%rax\n" + "\tmov " VG_SYM(rbx) ",%rbx\n" + "\tmov " VG_SYM(rcx) ",%rcx\n" + "\tmov " VG_SYM(rdx) ",%rdx\n" +#else + "\tmov " VG_SYM(rax) "(%rip),%rax\n" + "\tmov " VG_SYM(rbx) "(%rip),%rbx\n" + "\tmov " VG_SYM(rcx) "(%rip),%rcx\n" + "\tmov " VG_SYM(rdx) "(%rip),%rdx\n" +#endif + "\tcmpxchg %rbx,%rcx \n" +#ifndef VGP_amd64_darwin + "\tmov %rax," VG_SYM(rax_out) "\n" + "\tmov %rbx," VG_SYM(rbx_out) "\n" + "\tmov %rcx," VG_SYM(rcx_out) "\n" +#else + "\tmov %rax," VG_SYM(rax_out) "(%rip)\n" + "\tmov %rbx," VG_SYM(rbx_out) "(%rip)\n" + "\tmov %rcx," VG_SYM(rcx_out) "(%rip)\n" +#endif + "\tpop %rdx\n" + "\tpop %rcx\n" + "\tpop %rbx\n" + "\tpop %rax\n" + ); + + printf(" rax==rcx so ecx should equal rbx (Result rax=%llx rbx=%llx rcx=%llx)\n", + rax_out,rbx_out,rcx_out); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stdout.exp new file mode 100644 index 000000000..75a54b48b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.stdout.exp @@ -0,0 +1,16 @@ +cmpxchg %bl,%cl (al=22 bl=44 cl=33) + al!=cl so al should equal cl (Result al=33 bl=44 cl=33) +cmpxchg %bl,%cl (al=77 bl=55 cl=55) + al==cl so cl should equal bl (Result al=55 bl=55 cl=55) +cmpxchg %bx,%cx (ax=2222 bx=4444 cx=3333) + ax!=cx so ax should equal cx (Result ax=3333 bx=4444 cx=3333) +cmpxchg %bx,%cx (ax=7777 bx=5555 cx=5555) + ax==cx so cx should equal bx (Result ax=5555 bx=5555 cx=5555) +cmpxchg %ebx,%ecx (eax=22222222 ebx=44444444 ecx=33333333) + eax!=ecx so eax should equal ecx (Result eax=33333333 ebx=44444444 ecx=33333333) +cmpxchg %ebx,%ecx (eax=77777777 ebx=55555555 ecx=55555555) + eax==ecx so ecx should equal ebx (Result eax=55555555 ebx=55555555 ecx=55555555) +cmpxchg %rbx,%rcx (rax=222222222 rbx=444444444 rcx=333333333) + rax!=rcx so rax should equal rcx (Result rax=333333333 rbx=444444444 rcx=333333333) +cmpxchg %rbx,%rcx (rax=777777777 rbx=555555555 rcx=555555555) + rax==rcx so ecx should equal rbx (Result rax=555555555 rbx=555555555 rcx=555555555) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.vgtest new file mode 100644 index 000000000..a6d32f32a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/cmpxchg.vgtest @@ -0,0 +1 @@ +prog: cmpxchg diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.c new file mode 100644 index 000000000..b198e9931 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.c @@ -0,0 +1,213 @@ + +#include +#include + +typedef unsigned int UInt; +typedef unsigned long long int ULong; +typedef unsigned char UChar; +typedef unsigned short int UShort; + + +///////////////////////////////////////////////////////////////// + +UInt do_s_crc32b ( UInt crcIn, UChar b ) +{ + UInt i, crc = (b & 0xFF) ^ crcIn; + for (i = 0; i < 8; i++) + crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78 : 0); + return crc; +} + +UInt do_s_crc32w ( UInt crcIn, UShort w ) +{ + UInt i, crc = (w & 0xFFFF) ^ crcIn; + for (i = 0; i < 16; i++) + crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78 : 0); + return crc; +} + +UInt do_s_crc32l ( UInt crcIn, UInt l ) +{ + UInt i, crc = l ^ crcIn; + for (i = 0; i < 32; i++) + crc = (crc >> 1) ^ ((crc & 1) ? 0x82f63b78 : 0); + return crc; +} + +UInt do_s_crc32q ( UInt crcIn, ULong q ) +{ + UInt crc = do_s_crc32l(crcIn, (UInt)q); + return do_s_crc32l(crc, (UInt)(q >> 32)); +} + +UInt do_h_crc32b ( UInt crcIn, UChar b ) +{ + __asm__ __volatile__( + "crc32b %%cl,%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "c"(b) + ); + return crcIn; +} + +UInt do_h_crc32w ( UInt crcIn, UShort w ) +{ + __asm__ __volatile__( + "crc32w %%cx,%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "c"(w) + ); + return crcIn; +} + +UInt do_h_crc32l ( UInt crcIn, UInt l ) +{ + __asm__ __volatile__( + "crc32l %%ecx,%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "c"(l) + ); + return crcIn; +} + +UInt do_h_crc32q ( UInt crcIn, ULong q ) +{ + __asm__ __volatile__( + "crc32q %%rcx,%%rsi\n\t" + : "=S"(crcIn) : "0"(crcIn), "c"(q) + ); + return crcIn; +} + +//////////////// + +UInt do_h_crc32b_mem ( UInt crcIn, UChar* a ) +{ + __asm__ __volatile__( + "crc32b (%2),%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "r"(a) + ); + return crcIn; +} + +UInt do_h_crc32w_mem ( UInt crcIn, UShort* a ) +{ + __asm__ __volatile__( + "crc32w (%2),%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "r"(a) + ); + return crcIn; +} + +UInt do_h_crc32l_mem ( UInt crcIn, UInt* a ) +{ + __asm__ __volatile__( + "crc32l (%2),%%esi\n\t" + : "=S"(crcIn) : "0"(crcIn), "r"(a) + ); + return crcIn; +} + +UInt do_h_crc32q_mem ( UInt crcIn, ULong* a ) +{ + __asm__ __volatile__( + "crc32q (%2),%%rsi\n\t" + : "=S"(crcIn) : "0"(crcIn), "r"(a) + ); + return crcIn; +} + +void try_simple ( void ) +{ + UInt c0 = 0xFFFFFFFF; + UChar c = 0x42; + + UInt cs = do_s_crc32b(c0, c); + UInt ch = do_h_crc32b(c0, c); + printf("b %08x %08x\n", cs, ch); + + UShort w = 0xed78;; + cs = do_s_crc32w(c0, w); + ch = do_h_crc32w(c0, w); + printf("w %08x %08x\n", cs, ch); + + UInt i = 0xCAFEBABE; + cs = do_s_crc32l(c0, i); + ch = do_h_crc32l(c0, i); + printf("l %08x %08x\n", cs, ch); + + ULong q = 0x0ddC0ffeeBadF00d; + cs = do_s_crc32q(c0, q); + ch = do_h_crc32q(c0, q); + printf("q %08x %08x\n", cs, ch); +} + +#define NMEM 1000 +void try_mem ( void ) +{ + UInt al, i; + UChar* b = malloc(NMEM); + for (i = 0; i < NMEM; i++) + b[i] = (UChar)(i % 177); + + for (al = 0; al < 1; al++) { + UInt crc = 0xFFFFFFFF; + for (i = 0; i <= 1000-1-al; i += 1) + crc = do_h_crc32b_mem( crc, &b[i+al] ); + printf("mem b misalign %d = %08x\n", al, crc); + } + + for (al = 0; al < 2; al++) { + UInt crc = 0xFFFFFFFF; + for (i = 0; i <= 1000-2-al; i += 2) + crc = do_h_crc32w_mem( crc, (UShort*)&b[i+al] ); + printf("mem w misalign %d = %08x\n", al, crc); + } + + for (al = 0; al < 4; al++) { + UInt crc = 0xFFFFFFFF; + for (i = 0; i <= 1000-4-al; i += 4) + crc = do_h_crc32l_mem( crc, (UInt*)&b[i+al] ); + printf("mem l misalign %d = %08x\n", al, crc); + } + + for (al = 0; al < 8; al++) { + UInt crc = 0xFFFFFFFF; + for (i = 0; i <= 1000-8-al; i += 8) + crc = do_h_crc32q_mem( crc, (ULong*)&b[i+al] ); + printf("mem q misalign %d = %08x\n", al, crc); + } + + free(b); +} + +void try_misc ( void ) +{ + ULong res = 0xAAAAAAAAAAAAAAAAULL; + __asm__ __volatile__( + "movabsq $0x5555555555555555, %%rax" "\n\t" + "movabsq $042, %%rbx" "\n\t" + "crc32b %%bl,%%rax" "\n\t" + "movq %%rax, %0" "\n" + : "=r"(res) : : "rax","rbx" + ); + printf("try_misc 64bit-dst 0x%016llx\n", res); + + __asm__ __volatile__( + "movabsq $0x5555555555555555, %%rax" "\n\t" + "movabsq $042, %%rbx" "\n\t" + "crc32b %%bl,%%eax" "\n\t" + "movq %%rax, %0" "\n" + : "=r"(res) : : "rax","rbx" + ); + printf("try_misc 32bit-dst 0x%016llx\n", res); +} + +///////////////////////////////////////////////////////////////// + + + +int main ( int argc, char** argv ) +{ + try_simple(); + try_mem(); + try_misc(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.stdout.exp new file mode 100644 index 000000000..2ceed814b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.stdout.exp @@ -0,0 +1,21 @@ +b 0dc2c1e5 0dc2c1e5 +w 70cb7bdb 70cb7bdb +l 9ca98638 9ca98638 +q f264a907 f264a907 +mem b misalign 0 = f502c278 +mem w misalign 0 = f502c278 +mem w misalign 1 = 0a72a365 +mem l misalign 0 = f502c278 +mem l misalign 1 = 246088f7 +mem l misalign 2 = bcf12db3 +mem l misalign 3 = 00d2a6af +mem q misalign 0 = f502c278 +mem q misalign 1 = 5be5d059 +mem q misalign 2 = ebc9f7d0 +mem q misalign 3 = c185a801 +mem q misalign 4 = 11ada892 +mem q misalign 5 = c5a2f160 +mem q misalign 6 = 7b84c760 +mem q misalign 7 = ab827214 +try_misc 64bit-dst 0x00000000a50765b3 +try_misc 32bit-dst 0x00000000a50765b3 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.vgtest new file mode 100644 index 000000000..8ebf4ffa3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/crc32.vgtest @@ -0,0 +1,3 @@ +prog: crc32 +prereq: ../../../tests/x86_amd64_features amd64-sse42 +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/gen_insn_test.pl b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/gen_insn_test.pl index faa1c7f9b..409249e3e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/gen_insn_test.pl +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/gen_insn_test.pl @@ -628,7 +628,12 @@ while (<>) foreach my $result (@results) { - if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/) + if ($result->{type} eq "xmm") + { + $result->{argnuml} = $argnum++; + $result->{argnumh} = $argnum++; + } + else { $result->{argnum} = $argnum++; } @@ -638,15 +643,15 @@ while (<>) { if (defined($arg->{name})) { - $arg->{argnum} = $argnum++; - } - } - - foreach my $result (@results) - { - if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/) - { - $result->{argnum} = $argnum++; + if ($arg->{type} eq "xmm") + { + $arg->{argnuml} = $argnum++; + $arg->{argnumh} = $argnum++; + } + else + { + $arg->{argnum} = $argnum++; + } } } @@ -689,8 +694,8 @@ while (<>) } elsif ($arg->{type} eq "xmm") { - print qq| \"movlps 0+%$arg->{argnum}, %%$arg->{register}\\n\"\n|; - print qq| \"movhps 8+%$arg->{argnum}, %%$arg->{register}\\n\"\n|; + print qq| \"movlps %$arg->{argnuml}, %%$arg->{register}\\n\"\n|; + print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|; } elsif ($arg->{type} eq "st") { @@ -803,8 +808,8 @@ while (<>) } elsif ($result->{type} eq "xmm") { - print qq| \"movlps %%$result->{register}, 0+%$result->{argnum}\\n\"\n|; - print qq| \"movhps %%$result->{register}, 8+%$result->{argnum}\\n\"\n|; + print qq| \"movlps %%$result->{register}, %$result->{argnuml}\\n\"\n|; + print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|; } elsif ($result->{type} eq "st") { @@ -852,11 +857,16 @@ while (<>) foreach my $result (@results) { - if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/) + if ($result->{type} eq "xmm") + { + print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|; + } + else { print qq|$prefix\"=m\" \($result->{name}\)|; - $prefix = ", "; } + + $prefix = ", "; } print qq|\n|; @@ -867,16 +877,15 @@ while (<>) { if (defined($arg->{name})) { - print qq|$prefix\"m\" \($arg->{name}\)|; - $prefix = ", "; - } - } - - foreach my $result (@results) - { - if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/) - { - print qq|$prefix\"m\" \($result->{name}\)|; + if ($arg->{type} eq "xmm") + { + print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|; + } + else + { + print qq|$prefix\"m\" \($arg->{name}\)|; + } + $prefix = ", "; } } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.def b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.def new file mode 100644 index 000000000..95934243f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.def @@ -0,0 +1,160 @@ +pclmulqdq imm8[0] xmm.uq[0x00017004200ab0cd,0xc000b802f6b31753] xmm.uq[0xa0005c0252074a9a,0x50002e0207b1643c] => 2.uq[0x5ff61cc8b1043fa2,0x00009602d147dc12] +pclmulqdq imm8[1] xmm.uq[0x28001701e286710d,0xd4000b81d7f0f773] xmm.uq[0xaa0005c1c2a63aaa,0x550002e1c000dc44] => 2.uq[0xd33d2883021ccb74,0x080804b056c3c3bd] +pclmulqdq imm8[16] xmm.uq[0x2a800171beae2d11,0xd54000b9b604d579] xmm.uq[0xaaa0005db1b029ad,0x9550002faf85d3c3] => 2.uq[0x5bd93710a920a9f5,0x777888724b473f64] +pclmulqdq imm8[17] xmm.uq[0x8aa80018be70a8d2,0x4554000d3de61358] xmm.uq[0x22aa00077da0c89b,0xd1550004957e233e] => 2.uq[0xd222922d28094790,0x37fb44403e2d3407] +pclmulqdq imm8[0] m128.uq[0x68aa8003296cd08e,0x3455400273642736] xmm.uq[0x1a2aa002185fd28a,0x0d155001eadda834] => 2.uq[0x6f56f9abeba01e6c,0x05101111e9709d8f] +pclmulqdq imm8[1] m128.uq[0x068aa801d41c9309,0xc3455401c0bc0875] xmm.uq[0xa1a2aa01c70bc327,0x90d15501ca33a080] => 2.uq[0x0c18b0e8ab072480,0x032f76887b10d528] +pclmulqdq imm8[16] m128.uq[0x4868aa81c3c78f2f,0xe4345541c8918684] xmm.uq[0x721a2aa1c2f68231,0xf90d1551c8290009] => 2.uq[0x11d8b7b8f72e3644,0x2a080288f207712b] +pclmulqdq imm8[17] m128.uq[0xbc868aa9cac23ef5,0x9e434555cc0ede67] xmm.uq[0x8f21a2abccb52e20,0x4790d156c50855ff] => 2.uq[0xd2e5bdd1665023dd,0x240dbdff7a0eb888] +pclmulqdq imm8[0] xmm.uq[0xe3c868ac4931e9ec,0x71e434570346b3e5] xmm.uq[0xf8f21a2c685118df,0xbc790d171ad64b5c] => 2.uq[0x0eebfc038c776124,0x5c177a6fb4d9adf2] +pclmulqdq imm8[1] xmm.uq[0x5e3c868c6c18e49d,0xef1e43471cba313b] xmm.uq[0xb78f21a4650ad78e,0x5bc790d311332ab6] => 2.uq[0x01f223ce761bbdbe,0x1046696140e99a8d] +pclmulqdq imm8[16] xmm.uq[0x2de3c86a6747544a,0x16f1e43612516914] xmm.uq[0x0b78f21be7d67379,0xc5bc790eda98f8ad] => 2.uq[0xf1b07b5d2dce2b74,0x008a2a80a6dea4c8] +pclmulqdq imm8[17] xmm.uq[0xa2de3c8843fa3b43,0x916f1e4508aadc92] xmm.uq[0x48b78f2363032d38,0x245bc792902f558b] => 2.uq[0xf8b35e3453aab226,0x10404514973eeacd] +pclmulqdq imm8[0] m128.uq[0xd22de3ca1ec569b6,0x6916f1e5ee1073ca] xmm.uq[0x348b78f3d5b5f8d4,0x1a45bc7ac988bb59] => 2.uq[0x6e44f4974d351b38,0x14410114bf2270ea] +pclmulqdq imm8[1] m128.uq[0xcd22de3e4b721c9d,0xa6916f200c66cd3b] xmm.uq[0x9348b790ece1258e,0x49a45bc9551e51b6] => 2.uq[0xd9ebb20510c452be,0x3590bae854a1ffd5] +pclmulqdq imm8[16] m128.uq[0x24d22de5893ce7ca,0x126916f3a34c32d4] xmm.uq[0x09348b7ab053d859,0xc49a45be2ed7ab1d] => 2.uq[0xeb5e5f29e6badc34,0x00820a20b0fa8ced] +pclmulqdq imm8[17] m128.uq[0xa24d22dffe19947b,0x91269170d5ba892e] xmm.uq[0x489348b9498b0386,0x2449a45d837340b2] => 2.uq[0x1934a4ec2d51b27c,0x10404105d1aac198] +pclmulqdq imm8[0] xmm.uq[0x1224d22fa0675f48,0x09126918aee16e93] xmm.uq[0xc489348d3e1e763a,0x62449a477dbcfa0c] => 2.uq[0x1411baeeee166950,0x0dda5c984c642a65] +pclmulqdq imm8[1] xmm.uq[0x31224d249d8c3bf5,0xd89126932573dce7] xmm.uq[0xac48934a7967ad60,0x562449a61b61959f] => 2.uq[0xf21b031e1f9fc8b3,0x0ffa971b97fa8b81] +pclmulqdq imm8[16] xmm.uq[0xeb1224d3e45e89bc,0x7589126ad0dd03cd] xmm.uq[0xfac489363f1c40d3,0xbd62449bf63bdf5a] => 2.uq[0x751e203b33096d47,0x2d2e6d8fd926d075] +pclmulqdq imm8[17] xmm.uq[0x5eb1224ed9cbae9c,0x2f5891284b93963d] xmm.uq[0xd7ac48950c778a0b,0xabd6244b6ce983f6] => 2.uq[0x6c7f0f43ad1d863e,0x13521ee11ef3275e] +pclmulqdq imm8[0] m128.uq[0x55eb1226952280ea,0x2af58914293eff64] xmm.uq[0x157ac48af34d3ea1,0xcabd624650545e41] => 2.uq[0x249f99dae3b624aa,0x04445511afa5163b] +pclmulqdq imm8[1] m128.uq[0xa55eb123fed7ee11,0x92af5892d619b5f9] xmm.uq[0x8957ac4a41ba99ed,0x84abd626078b0be3] => 2.uq[0x98f8fc12fdf0c7d3,0x507891a8303b6e0d] +pclmulqdq imm8[16] m128.uq[0x8255eb13ea7344e2,0x412af58ad3e76160] xmm.uq[0x20957ac648a16f9f,0xd04abd640afe76bc] => 2.uq[0x5d4e25af2f70ab20,0x08008222e18727b6] +pclmulqdq imm8[17] m128.uq[0x68255eb2e42cfa4d,0xf412af5a58c43c13] xmm.uq[0xba0957ae030fdcfa,0x5d04abd7e035ad6c] => 2.uq[0xa2f470774f11b174,0x36c2fe7c16d26dab] +pclmulqdq imm8[0] xmm.uq[0x2e8255eccec895a5,0xd7412af74e1209bf] xmm.uq[0xaba0957c8db6c3cc,0x55d04abf258920d5] => 2.uq[0xc3db9ad675a26f7c,0x1384704a229c5d7f] +pclmulqdq imm8[1] xmm.uq[0xeae8256079724f57,0xb57412b11366e698] xmm.uq[0x5aba09596861323b,0xed5d04ad9ade580e] => 2.uq[0x631d20044d9fd14a,0x56b5179ab8f1355f] +pclmulqdq imm8[16] xmm.uq[0x76ae8257ac1ceaf6,0x3b57412cb4bc346a] xmm.uq[0x1daba097390bd924,0x0ed5d04c7b33ab81] => 2.uq[0x43140ac0e96646e8,0x02a2888abaa8a737] +pclmulqdq imm8[17] xmm.uq[0xc76ae827144794b1,0xa3b5741460d18949] xmm.uq[0x91daba0b17168395,0x88ed5d06623900b7] => 2.uq[0x84dbc63cd168a7cf,0x54ad45cd2f140103] +pclmulqdq imm8[0] m128.uq[0x8476ae8417ca3f48,0x423b5742ea92de93] xmm.uq[0xe11daba25bf72e3a,0x708ed5d20ca9560c] => 2.uq[0x2f6fd6d371c96950,0x7322f9a7bdfbf7ce] +pclmulqdq imm8[1] m128.uq[0x38476ae9e50269f5,0xdc23b575d92ef3e7] xmm.uq[0xae11dabbc34538e0,0x5708ed5ec0505b5f] => 2.uq[0x36ab4b9f08a71773,0x0d3dae161adae679] +pclmulqdq imm8[16] m128.uq[0xeb8476b046d5ec9c,0x75c23b590218b53d] xmm.uq[0xfae11dad67ba198b,0xbd708ed79a8acbb6] => 2.uq[0x90ab3040b69bed2f,0x2d193b789ecdb8bf] +pclmulqdq imm8[17] m128.uq[0x5eb8476cabf324ca,0x2f5c23b734a75154] xmm.uq[0x17ae11dc79016799,0xcbd708ef132e72bd] => 2.uq[0x58394f2a30276364,0x1d6c5d6217d64627] +pclmulqdq imm8[0] xmm.uq[0xa5eb84786044f84b,0x92f5c23d16d03b16] xmm.uq[0x497ae11f6a15dc7a,0x24bd709093b8ad2c] => 2.uq[0xa19f5f3d150729de,0x2cc3c480d7262702] +pclmulqdq imm8[1] xmm.uq[0x125eb849288a1585,0xc92f5c257af2c9af] xmm.uq[0xa497ae13942723c4,0x524bd70aa8c150d1] => 2.uq[0xd86609565dd8fe15,0x0592c7bc6f0bff4b] +pclmulqdq imm8[16] xmm.uq[0xe925eb863b0e6759,0xb492f5c3f434f29d] xmm.uq[0x9a497ae2d0c8383b,0x8d24bd723f11db0e] => 2.uq[0x5a7c0b0663ed613f,0x55e5e712e20a7f3d] +pclmulqdq imm8[17] xmm.uq[0x46925eb9fe36ac76,0x23492f5dddc9152a] xmm.uq[0x11a497afcd924984,0x08d24bd8c576e3b1] => 2.uq[0x64d528322b29c9ca,0x01014411a41cd8f9] +pclmulqdq imm8[0] m128.uq[0xc46925ed496930c9,0xa23492f78b625755] xmm.uq[0x911a497cac5eea97,0x888d24bf3cdd3438] => 2.uq[0x9ee57eac6392c06f,0x6ebdb35952de298b] +pclmulqdq imm8[1] m128.uq[0x444692607d1c590b,0xe2234931153beb76] xmm.uq[0x7111a499694bb4aa,0x3888d24d93539944] => 2.uq[0xe76d06e2b08e45ec,0x0eceb968e17faa1f] +pclmulqdq imm8[16] m128.uq[0x1c446927a8578b91,0xce223494bad984b9] xmm.uq[0xa7111a4b341a814d,0x93888d2670baff93] => 2.uq[0x351bc2f119e0a4d5,0x7cb3956d93a777bb] +pclmulqdq imm8[17] m128.uq[0x89c446940f0b3eba,0x44e2234ae6335e4c] xmm.uq[0x227111a651c76e15,0xd13888d3ff9175f7] => 2.uq[0x52b883d7adab3fa4,0x374d8c769fd3cfd2] +pclmulqdq imm8[0] xmm.uq[0xa89c446ad67679e8,0x544e223649e8fbe3] xmm.uq[0xea27111c0ba23ce2,0x7513888ee47edd60] => 2.uq[0x71258e2844da20d0,0x6f79237864913e89] +pclmulqdq imm8[1] xmm.uq[0x3a89c44850ed2d9f,0xdd44e224ff2455bc] xmm.uq[0x6ea271135e3fe9cd,0xf751388a85cdb3d3] => 2.uq[0x0dce470a58b03611,0x17b7bff3cae3b878] +pclmulqdq imm8[16] xmm.uq[0xbba89c46299498da,0x5dd44e23f3780b5c] xmm.uq[0x2eea2712d869c49d,0xd775138a42e2a13b] => 2.uq[0x8e66578f04b5170c,0x08a8a888e58cdcd5] +pclmulqdq imm8[17] xmm.uq[0xabba89c6081f0f8e,0x55dd44e3e2bd46b6] xmm.uq[0x2aeea272d00c624a,0x1577513a46b3f014] => 2.uq[0x00039e62361051b8,0x04445454c9e2e3b4] +pclmulqdq imm8[0] m128.uq[0x0abba89e0207b6f9,0xc55dd44fe7b19a6d] xmm.uq[0xa2aeea28da868c23,0x9157751543f10502] => 2.uq[0xec91a12c1e78a82b,0x041bb00df2e9eeb3] +pclmulqdq imm8[1] m128.uq[0x48abba8b80a64170,0x2455dd469f00dfa7] xmm.uq[0xd22aeea4262e2ec0,0x69157752f1c4d64f] => 2.uq[0x4570a9283f65b1d0,0x1937917bc5469bf6] +pclmulqdq imm8[16] m128.uq[0xf48abbaa4f902a14,0x7a455dd60675d3f9] xmm.uq[0xfd22aeebe9e8a8ed,0xbe915776dba21363] => 2.uq[0x9708dd208b1f1635,0x2911f19625f63a33] +pclmulqdq imm8[17] m128.uq[0x9f48abbc447ec8a2,0x4fa455df00ed2340] xmm.uq[0x27d22af05f24508f,0xd3e91579063fe734] => 2.uq[0x9e438129c0f21100,0x302e6e9fad692a63] +pclmulqdq imm8[0] xmm.uq[0x69f48abd61cdb289,0xf4fa455f97949835] xmm.uq[0xba7d22b0a2780b07,0x9d3e915937e9c470] => 2.uq[0x77453ab2e39bcebf,0x3cd48149e75425dc] +pclmulqdq imm8[1] xmm.uq[0x4e9f48ad7aa2a127,0xe74fa45793ff0f80] xmm.uq[0x73a7d22ca8ad46af,0xf9d3e9173b046244] => 2.uq[0x6e590e31be91a35c,0x3bd8e3c886ba7063] +pclmulqdq imm8[16] xmm.uq[0x7ce9f48c7c2ff011,0xfe74fa4714c5b6f9] xmm.uq[0xbf3a7d2461109a6d,0x9f9d3e9317360c23] => 2.uq[0xd73226ad987c91b5,0x6a0d4938c709c850] +pclmulqdq imm8[17] xmm.uq[0x8fce9f4a6248c502,0x47e74fa60fd22170] xmm.uq[0x23f3a7d3e696cfa7,0xd1f9d3ead9f926c0] => 2.uq[0x098aae5ab281c400,0x360f213f1f15053e] +pclmulqdq imm8[0] m128.uq[0x68fce9f64baa524f,0xf47e74fc0c82e814] xmm.uq[0x7a3f3a7ee4ef32f9,0xfd1f9d405925586d] => 2.uq[0xc7150c4a11569767,0x1230b217e7562125] +pclmulqdq imm8[1] m128.uq[0xbe8fcea103406b23,0x9f47e751684df482] xmm.uq[0x4fa3f3a992d4b930,0x27d1f9d5a8181b87] => 2.uq[0x7ec8d0bb7e8acd69,0x14938d347e59462d] +pclmulqdq imm8[16] m128.uq[0xd3e8fcebbab9ccb0,0x69f47e76bc0aa547] xmm.uq[0xf4fa3f3c34b31190,0x7a7d1f9ef90747b7] => 2.uq[0x4d62ab2759d0c0f0,0x24a78a2ff2816467] +pclmulqdq imm8[17] m128.uq[0xfd3e8fd0533162c8,0x7e9f47e908467053] xmm.uq[0xff4fa3f56ad0f71a,0x7fa7d1fb94163a7c] => 2.uq[0xb7fc82a330a83644,0x152129527f84cd53] +pclmulqdq imm8[0] xmm.uq[0x3fd3e8fea8b8dc2d,0xdfe9f4803b0a2d03] xmm.uq[0xaff4fa40f432d572,0x57fa7d2158c729a8] => 2.uq[0xad24061697897d6a,0x1946dd2b6b334aa6] +pclmulqdq imm8[1] xmm.uq[0x2bfd3e918b1153c3,0xd5fe9f49ac3668d2] xmm.uq[0x6aff4fa5b4c8f358,0x357fa7d3b912389b] => 2.uq[0x01e66902d969ffed,0x0748de913628c280] +pclmulqdq imm8[16] xmm.uq[0xdabfd3eab336db3e,0x6d5fe9f638492c8e] xmm.uq[0x36aff4fbfad25536,0x1b57fa7edc16e98a] => 2.uq[0x9a16d14091086404,0x0a2888aa8b3b5dd4] +pclmulqdq imm8[17] xmm.uq[0x0dabfd404cb933b4,0x06d5fea1050a58c9] xmm.uq[0xc36aff516932eb55,0xa1b57fa99b473497] => 2.uq[0x3f904f57b277f66f,0x03b554c0f32d4dfa] +pclmulqdq imm8[0] m128.uq[0x90dabfd5a4515938,0x486d5febb0d66b8b] xmm.uq[0xe436aff6af18f4b6,0x721b57fc363a394a] => 2.uq[0x8c5f6ad18d379e10,0x7c1be44f7439dfec] +pclmulqdq imm8[1] m128.uq[0x390dabfef9cadb94,0x1c86d6005b932cb9] xmm.uq[0xce436b010477554d,0xa721b58168e96993] => 2.uq[0x5cfbe32f78bbabfc,0x1b0f409db94d30ce] +pclmulqdq imm8[16] m128.uq[0x9390dac19b2273ba,0x49c86d61ac3ef8cc] xmm.uq[0x24e436b1b4cd3b55,0xd2721b59b1145c97] => 2.uq[0x6a2bef2bac52d03c,0x0820a820580aebf6] +pclmulqdq imm8[17] m128.uq[0xa9390dadaf37ed38,0x549c86d7b649b58b] xmm.uq[0xea4e436cb1d299b6,0x752721b737970bca] => 2.uq[0xe374fdf10b9aa50e,0x1bf0a13b9a4b2d32] +pclmulqdq imm8[0] xmm.uq[0x3a9390dc7a7944d4,0x1d49c86f1bea6159] xmm.uq[0xcea4e43864a2ef9d,0xa752721d18ff36bb] => 2.uq[0xd6c456490d755a64,0x12bc3c19097f5a00] +pclmulqdq imm8[1] xmm.uq[0x93a9390f632d5a4e,0x49d49c8890446c16] xmm.uq[0x24ea4e4526cff4fa,0x127527237215b96c] => 2.uq[0x8d19b35c04f67f08,0x0820a88940df4faa] +pclmulqdq imm8[16] xmm.uq[0x093a939297b89ba5,0xc49d49ca228a0cbf] xmm.uq[0xa24ea4e5f7f2c54c,0x51275273daa72195] => 2.uq[0xa98a2c26439b7bc4,0x7b61d63f58d2a46a] +pclmulqdq imm8[17] xmm.uq[0xe893a93ac4014fb7,0xb449d49e48ae66c8] xmm.uq[0x5a24ea500304f253,0xed127528e830381a] => 2.uq[0xcd6a96a3f2ca5750,0x66729b7e79914803] +pclmulqdq imm8[0] m128.uq[0x76893a9552c5dafc,0x3b449d4b8810ac6d] xmm.uq[0xdda24ea6aab61523,0xaed127543c08c982] => 2.uq[0x71e1947ce8a3fc84,0x23a3c3ff0ac48e0c] +pclmulqdq imm8[1] m128.uq[0x576893aafcb223b0,0x2bb449d65d06d0c7] xmm.uq[0xd5da24ec05312750,0x6aed1276e1465297] => 2.uq[0x83bc107e3e1d6910,0x1d159417367f29d6] +pclmulqdq imm8[16] m128.uq[0xf576893c5750e838,0x7abb449f0a56330b] xmm.uq[0xfd5da2506bd8d876,0x7eaed129149a2b2a] => 2.uq[0x162d65810a9a912a,0x295151cffabdfebc] +pclmulqdq imm8[17] m128.uq[0x3f57689568fad484,0x1fabb44b932b2931] xmm.uq[0xcfd5da26a0435389,0xa7eaed1436cf68b5] => 2.uq[0xd2b7ff103f384845,0x0c75fdbda2b7fa1d] +pclmulqdq imm8[0] xmm.uq[0x93f5768af2157347,0x89fabb464fb87890] xmm.uq[0x44fd5da40689fb37,0xe27eaed2e9f2bc88] => 2.uq[0x1efac67fed4d2545,0x26c2a63498b85e4e] +pclmulqdq imm8[1] xmm.uq[0x713f576a53a71d33,0xf89fabb600814d8a] xmm.uq[0x7c4fd5dbdeee65b4,0x3e27eaeece24f1c9] => 2.uq[0x25ac28bd28c702eb,0x0b943f31e76dc46a] +pclmulqdq imm8[16] xmm.uq[0xdf13f5784dc037d5,0xaf89fabd0d8ddad7] xmm.uq[0x97c4fd5f6d74ac58,0x4be27eb09568151b] => 2.uq[0x88ede6d4e2454a08,0x5e0c23d1ad9c93aa] +pclmulqdq imm8[17] xmm.uq[0xe5f13f592161c97e,0x72f89fad6f5ea3ae] xmm.uq[0x397c4fd7965d10c6,0x1cbe27eca9dc4752] => 2.uq[0x5dd6030446d65c3c,0x0541155160eaa5f3] +pclmulqdq imm8[0] m128.uq[0x0e5f13f7339be298,0x072f89fc787bb03b] xmm.uq[0xc397c4ff12eb970e,0x61cbe28068238a76] => 2.uq[0x9d37888783271390,0x04ad49530ddeba57] +pclmulqdq imm8[1] m128.uq[0x30e5f14112bf842a,0x1872f8a1680d8104] xmm.uq[0x0c397c5192b47f71,0xc61cbe29a007fea9] => 2.uq[0xda22a0000546f93a,0x14eb8e72cfa9f51d] +pclmulqdq imm8[16] m128.uq[0xa30e5f15b6b1be45,0x91872f8bb2069e0f] xmm.uq[0x88c397c6afb10df4,0x4461cbe4368645e9] => 2.uq[0x0afb9d418fc1966c,0x4c22fc2c395f9b0a] +pclmulqdq imm8[17] m128.uq[0xe230e5f2f1f0e1e5,0xb11872fa4fa62fdf] xmm.uq[0x988c397e0e80d6dc,0x4c461cbfe5ee2a5d] => 2.uq[0x4a4c895ad9a6426b,0x2b2552b15c95b45a] +pclmulqdq imm8[0] xmm.uq[0xe6230e60d9a4d41b,0xb3118731438028fe] xmm.uq[0x5988c399806dd36e,0x2cc461cd9ee4a8a6] => 2.uq[0xb4bce4629b6a0022,0x3049a355e88b747d] +pclmulqdq imm8[1] xmm.uq[0x166230e7ae201342,0x0b311874b5bdc890] xmm.uq[0x05988c3b398ca337,0xc2cc461e73741088] => 2.uq[0x1443368a87d51b10,0x0e8b16ca9bb0a8d6] +pclmulqdq imm8[16] xmm.uq[0x616623101867c733,0xf0b31188e2e1a28a] xmm.uq[0x785988c5501e9034,0x3c2cc46386bd0709] => 2.uq[0x505b0a15e10953c8,0x2a8022826ef2c0ed] +pclmulqdq imm8[17] xmm.uq[0xde166232aa0c4275,0xaf0b311a3bb3e027] xmm.uq[0x9785988df487af00,0x4bc2cc47d8f1966f] => 2.uq[0x73b0bf7077a68eed,0x2f36ea74050c13fe] +pclmulqdq imm8[0] m128.uq[0xe5e16624c3268a24,0x72f0b31340410401] xmm.uq[0xf978598a86ce40f1,0xbcbc2cc62a14df69] => 2.uq[0xbd20232a4309f7e4,0x5e8cbf9a58306d67] +pclmulqdq imm8[1] m128.uq[0x9e5e1663fbb82ea5,0x8f2f0b32d489d63f] xmm.uq[0x8797859a40f2aa0c,0x43cbc2cdff2713f5] => 2.uq[0x6e66a095df81ee01,0x2658e6d490286e46] +pclmulqdq imm8[16] m128.uq[0xe1e5e167d64148e7,0xb0f2f0b4c1ce6360] xmm.uq[0x5879785b3f94f09f,0xec3cbc2e7678373c] => 2.uq[0xa1411d12187db520,0x22802a82bbe48273] +pclmulqdq imm8[17] m128.uq[0x761e5e1819e9da8d,0xfb0f2f0ce3a2ac33] xmm.uq[0xbd879787587f150a,0x5ec3cbc48aed4974] => 2.uq[0x98102e76a4d8925c,0x34f36e356807a7b8] +pclmulqdq imm8[0] xmm.uq[0x2f61e5e3242463a9,0xd7b0f2f278bff0c5] xmm.uq[0xabd8797a130db74f,0x95ec3cbde0349a94] => 2.uq[0xa9db52b34932b257,0x13498b4de2ead42b] +pclmulqdq imm8[1] xmm.uq[0x4af61e5fcec80c39,0xe57b0f30ce11c50d] xmm.uq[0xb2bd87994db6a173,0x995ec3cd8d890faa] => 2.uq[0x02bdfd5b8ae3851a,0x23dce4693be7adf0] +pclmulqdq imm8[16] xmm.uq[0x4caf61e7a57246c4,0x2657b0f4b166e251] xmm.uq[0xd32bd87b2f613019,0xa995ec3e7e5e56fd] => 2.uq[0x65396ddebd61e5c9,0x18b43ccdffec0aab] +pclmulqdq imm8[17] xmm.uq[0x94caf62015dcea6b,0x8a657b10e19c3426] xmm.uq[0x4532bd894f7bd902,0x22995ec5866bab70] => 2.uq[0xe5df1fa230385520,0x101105049484270b] +pclmulqdq imm8[0] m128.uq[0x114caf63a1e394a7,0xc8a657b2b79f8940] xmm.uq[0x64532bda3a7d838f,0xf22995edf3ec80b4] => 2.uq[0x14b59c3f07c170cd,0x063afa20a20bf1d3] +pclmulqdq imm8[1] m128.uq[0x7914caf7d8a3ff49,0xfc8a657cc2ffbe95] xmm.uq[0xbe4532bf482d9e37,0x9f2299608ac48e08] => 2.uq[0xd1b3a3b63ca68448,0x39b309fce070d54f] +pclmulqdq imm8[16] m128.uq[0x4f914cb1241005f3,0xe7c8a65978b5c1ea] xmm.uq[0x73e4532d9b089fe4,0x39f22997ac320ee1] => 2.uq[0xfe28658d590ed368,0x2a0aa820dbbaae83] +pclmulqdq imm8[17] m128.uq[0xdcf914ccbcc6c661,0xae7c8a6735112221] xmm.uq[0x973e453471365001,0x8b9f229b0f48e6f1] => 2.uq[0x12081cb0e7a6fad1,0x53e4d12a4d38b461] +pclmulqdq imm8[0] xmm.uq[0x85cf914e6e523269,0x82e7c8a81dd6d825] xmm.uq[0x8173e454e5992aff,0x80b9f22b597a546c] => 2.uq[0x747ebfee06547327,0x425a6e980d6f32f8] +pclmulqdq imm8[1] xmm.uq[0x405cf9168b6ae925,0xe02e7c8c2c63337f] xmm.uq[0xb0173e46fcdf58ac,0x580b9f245d1d6b45] => 2.uq[0x10d3ee4c6cada3f1,0x1612f3ff623fded0] +pclmulqdq imm8[16] xmm.uq[0xec05cf93053c748f,0xb602e7ca694bf934] xmm.uq[0x5b0173e61353bb89,0xed80b9f3e0579cb5] => 2.uq[0x465f8b79f0199694,0x228a0003e5a76b0c] +pclmulqdq imm8[17] xmm.uq[0xb6c05cfad6d98d47,0x9b602e7e421a8590] xmm.uq[0x4db0173fffbb01b7,0xe6d80ba0d68b3fc8] => 2.uq[0xf7caf3aef858f080,0x7b3959bd543d5319] +pclmulqdq imm8[0] m128.uq[0x736c05d149f35ed3,0xf9b602e98ba76e5a] xmm.uq[0x7cdb0175a481761c,0x3e6d80bbb0ee79fd] => 2.uq[0x4d7e2029ce741ae4,0x17f7c4da2519e2fb] +pclmulqdq imm8[1] m128.uq[0xdf36c05eaf24fbeb,0xaf9b60303e403ce6] xmm.uq[0x57cdb018fdcddd62,0x2be6d80d5d94ada0] => 2.uq[0x0b6d29afcf3d77e0,0x1c3f14ae1ee34afc] +pclmulqdq imm8[16] m128.uq[0x15f36c078d7815bf,0xcaf9b604ad69c9cc] xmm.uq[0x657cdb033562a3d5,0xf2be6d82715f10d7] => 2.uq[0x45492b482259333c,0x28222aa042940471] +pclmulqdq imm8[17] m128.uq[0xb95f36c20f5d4758,0x5caf9b61e65c629b] xmm.uq[0xee57cdb1d9dbf03e,0x772be6d9cb9bb70e] => 2.uq[0xa564c7636b75ca82,0x18ea04a16910639d] +pclmulqdq imm8[0] xmm.uq[0x3b95f36dc47b9a76,0x1dcaf9b7c0eb8c2a] xmm.uq[0x0ee57cdcbf238504,0x0772be6f3e3f8171] => 2.uq[0x93da7ceefb7cc7d8,0x01515044e5c70080] +pclmulqdq imm8[1] xmm.uq[0xc3b95f3875cd7fa9,0xa1dcaf9d11947ec5] xmm.uq[0x90ee57cf5f77fe4f,0x88772be88669be14] => 2.uq[0x1ff2cadc63448a34,0x67e792c3afe8cc55] +pclmulqdq imm8[16] xmm.uq[0x443b95f521e29df9,0xe21dcafb779f0ded] xmm.uq[0xb10ee57e927d45e3,0x988772c01fec61e2] => 2.uq[0x0fa35a87a4453f57,0x638b976af3ff9af9] +pclmulqdq imm8[17] xmm.uq[0x4c43b960eea3efe0,0x2621dcb155ffb6df] xmm.uq[0xd310ee5981ad9a5c,0x6988772d9f848c1d] => 2.uq[0x51c023c60bf9b2ab,0x0c494dba164d6a1a] +pclmulqdq imm8[0] m128.uq[0xf4c43b97a67004fb,0xba621dccb9e5c16e] xmm.uq[0x5d310ee73ba09fa6,0x2e9887747c7e0ec2] => 2.uq[0x031c347016c9f1fa,0x36ed9d92bc682f1e] +pclmulqdq imm8[1] m128.uq[0x174c43bb1cecc650,0x0ba621de6d242217] xmm.uq[0xc5d310f01d3fcff8,0x62e98878ed4da6eb] => 2.uq[0xacf5238d6a7eee70,0x07183a9373413ee5] +pclmulqdq imm8[16] m128.uq[0xf174c43d5d549266,0x78ba621f8d580822] xmm.uq[0x3c5d3110a559c300,0x1e2e9889315aa06f] => 2.uq[0xf27d9c6ac793e600,0x0aa022a73ecb539d] +pclmulqdq imm8[17] m128.uq[0xcf174c456f5b0f24,0x678ba623965b4681] xmm.uq[0xf3c5d312a1db6231,0xb9e2e98a379b7009] => 2.uq[0xd950b5c449820289,0x3a31f7c40b66ebf6] +pclmulqdq imm8[0] xmm.uq[0x9cf174c5f27b76f5,0x8e78ba63cfeb7a67] xmm.uq[0x873c5d32cea37c20,0x439e2e9a45ff7cff] => 2.uq[0xd8c13a16143112a0,0x4db281bbf229390c] +pclmulqdq imm8[1] xmm.uq[0xe1cf174e09ad7d6c,0x70e78ba7e3847da5] xmm.uq[0xf873c5d4d86ffdbf,0xbc39e2eb42e5bdcc] => 2.uq[0x71ad667673cd0fd0,0x665e4345d7dcc057] +pclmulqdq imm8[16] xmm.uq[0x5e1cf17680209dd5,0xef0e78bc26be0dd7] xmm.uq[0xb7873c5efa0cc5d8,0x5bc39e305bb421db] => 2.uq[0x4b74700bf2d5e688,0x666e225b4656f8e1] +pclmulqdq imm8[17] xmm.uq[0xede1cf190487cfde,0x76f0e78d60f1a6de] xmm.uq[0x3b7873c78f26925e,0x1dbc39e4a641081e] => 2.uq[0x17a07657d2da7dd4,0x0545154178351fca] +pclmulqdq imm8[0] m128.uq[0x0ede1cf331ce42fe,0x076f0e7a7794e06e] xmm.uq[0x03b7873e1a782f26,0x01dbc39febe9d682] => 2.uq[0x964b33c978b91bc4,0x0015145519fbe3f5] +pclmulqdq imm8[1] m128.uq[0x00ede1d0d4a2aa30,0x0076f0e948ff1407] xmm.uq[0xc03b78758b2d48f0,0x601dbc3ba4446367] => 2.uq[0x55314fda6f66cc90,0x0026cec405b1e6f8] +pclmulqdq imm8[16] m128.uq[0xf00ede1eb8cff0a0,0x78076f103b15b73f] xmm.uq[0xfc03b788f4389a8c,0x7e01dbc558ca0c35] => 2.uq[0x6a82fe6939f30c84,0x28a26c46b7ebe635] +pclmulqdq imm8[17] m128.uq[0xff00ede38312c507,0xbf8076f2a8372170] xmm.uq[0x5fc03b7a32c94fa7,0xefe01dbdf01266c0] => 2.uq[0xdcc216f4dd0dc400,0x617576c564455645] +pclmulqdq imm8[0] xmm.uq[0x77f00edfd6b6f24f,0xfbf80770c2093814] xmm.uq[0x7dfc03b93fb25af9,0xfefe01dd7686ec6d] => 2.uq[0x8bf569c40aba6f67,0x1647572ea59fec88] +pclmulqdq imm8[1] xmm.uq[0xbf7f00ef91f13523,0x9fbf80789fa65982] xmm.uq[0x4fdfc03d2e80ebb0,0x27efe01f75ee34c7] => 2.uq[0x1884b704d5d08ea9,0x14b2b2b889275ed6] +pclmulqdq imm8[16] xmm.uq[0xd3f7f01091a4d950,0x69fbf80927802b97] xmm.uq[0xf4fdfc057a6dd4b8,0x7a7efe039be4a94b] => 2.uq[0x2fa301cae17930a8,0x24a3a8a439dad38b] +pclmulqdq imm8[17] xmm.uq[0xfd3f7f02a4a01396,0x7e9fbf8230fdc8ba] xmm.uq[0x3f4fdfc1f72ca34c,0x1fa7efe1da441095] => 2.uq[0x5cff626dd6d19cf2,0x0555105536974019] +pclmulqdq imm8[0] m128.uq[0xcfd3f7f1c3cfc737,0xa7e9fbf9c895a288] xmm.uq[0x53f4fdfdc2f89033,0xe9fa7effc82a070a] => 2.uq[0xf6af04decad42cc9,0x3e1bd743a16ab263] +pclmulqdq imm8[1] m128.uq[0x74fd3f80c2c2c274,0x3a7e9fc1400f2029] xmm.uq[0xdd3f4fe186b54f05,0xae9fa7f1aa08666f] => 2.uq[0x663f048b0f4c376c,0x3643329a1e33c49c] +pclmulqdq imm8[16] m128.uq[0x974fd3f9bbb1f224,0x4ba7e9fdbc86b801] xmm.uq[0xe5d3f4ffb4f11af1,0xb2e9fa80b1264c69] => 2.uq[0x2db9e522590922f1,0x3f18ac8b499a5fdb] +pclmulqdq imm8[17] m128.uq[0x9974fd412f40e525,0x8cba7ea17e4e317f] xmm.uq[0x865d3f5195d4d7ac,0x432e9fa9a9982ac5] => 2.uq[0x10a01544dcacf2c3,0x22adc12d86b454a7] +pclmulqdq imm8[0] xmm.uq[0xe1974fd5bb79d44f,0xb0cba7ebb46aa914] xmm.uq[0x5865d3f6b8e31379,0xec32e9fc331f48ad] => 2.uq[0x39f8c415582c89e7,0x31576a4bfbf9de3f] +pclmulqdq imm8[1] xmm.uq[0xb61974fef03d6343,0x9b0cba804ecc7092] xmm.uq[0x4d865d410613f738,0x26c32ea161b7ba8b] => 2.uq[0xfe6e5df6e325505d,0x150039e3f5d91dc7] +pclmulqdq imm8[16] xmm.uq[0xd361975197899c36,0x69b0cba9aa728d0a] xmm.uq[0x34d865d5b3e70574,0x1a6c32ebb8a141a9] => 2.uq[0x51a65ce85f5f2548,0x0a20a2805797ed23] +pclmulqdq imm8[17] xmm.uq[0xcd361976b2fe5fc5,0xa69b0cbc302ceecf] xmm.uq[0x934d865eeec43654,0x49a6c330560fda19] => 2.uq[0x743fc6e863032247,0x2c70b2e5c1075701] +pclmulqdq imm8[0] m128.uq[0xe4d3619901b5abfd,0xb269b0cd678894eb] xmm.uq[0x9934d8679a720966,0x4c9a6c34abe6c3a2] => 2.uq[0xe48d608e6c5c6dee,0x7bf7c8be42cbc359] +pclmulqdq imm8[1] m128.uq[0x264d361b34a120c0,0x13269b0e78fe4f4f] xmm.uq[0xc9934d88132ce694,0x64c9a6c4e8443239] => 2.uq[0x4e519b2288cbb2c0,0x0dd8694f6a24e1f8] +pclmulqdq imm8[16] m128.uq[0xf264d3635acfd80d,0xb93269b28415aaf3] xmm.uq[0x9c9934da28b8946a,0x4e4c9a6df30a0924] => 2.uq[0xe72a61cb516c9cde,0x50752c361fe9f790] +pclmulqdq imm8[17] m128.uq[0x27264d37d832c381,0xd393269cc2c720b1] xmm.uq[0xa9c9934f48114f49,0x94e4c9a88ab66695] => 2.uq[0x086a7585d4d637e5,0x67faa7d867e596e8] +pclmulqdq imm8[0] xmm.uq[0x8a7264d52c08f237,0x8539326b7cb23808] xmm.uq[0x429c99369d06daf3,0xe14e4c9c25312c6a] => 2.uq[0x4100ed2820bf0389,0x23c3d0ef192c679b] +pclmulqdq imm8[1] xmm.uq[0x70a7264ef1465524,0x385393285750e981] xmm.uq[0xdc29c995025633b1,0xae14e4cb67d8d8c9] => 2.uq[0x8f6981733d8b4704,0x34e77f6cd5d2d608] +pclmulqdq imm8[16] xmm.uq[0x970a72669a9a2b55,0x8b85393423fad497] xmm.uq[0x85c29c9af8ab2938,0x42e14e4e5b03538b] => 2.uq[0x334171ba41a2b028,0x470172dfe90ec7a3] +pclmulqdq imm8[17] xmm.uq[0xe170a728042f68b6,0x70b85394e0c5734a] xmm.uq[0x385c29cb4f107894,0x1c2e14e68635fb39] => 2.uq[0x464de85ad5b05afa,0x05401150a66ea4dd] +pclmulqdq imm8[0] m128.uq[0xce170a7429c8bc8d,0xa70b853afb921d33] xmm.uq[0x9385c29e5476cd8a,0x49c2e15008e925b4] => 2.uq[0x6f7ef804725bcaf2,0x6adc6430b8465eaf] +pclmulqdq imm8[1] m128.uq[0x24e170a8e32251c9,0xd270b855583ee7d5] xmm.uq[0xa9385c2b82cd32d7,0x949c2e16a8145858] => 2.uq[0x1be3bccbf3f77898,0x10bca5dea41e786f] +pclmulqdq imm8[16] m128.uq[0x4a4e170c32b7eb1b,0xe5270b86f009b47e] xmm.uq[0x729385c456b2992e,0x3949c2e30a070b86] => 2.uq[0x2b68e2765ffdfb34,0x2a08820822669a21] +pclmulqdq imm8[17] m128.uq[0x1ca4e17263b144b2,0x0e5270ba10866148] xmm.uq[0x0729385de6f0ef93,0xc3949c2fda2636ba] => 2.uq[0x27bb3d7f7f6f6150,0x04a8a03284562190] +pclmulqdq imm8[0] xmm.uq[0x61ca4e18cbc0da4c,0x30e5270d448e2c15] xmm.uq[0xd872938788f4d4f7,0xac3949c4ab282968] => 2.uq[0x45795f55a307afa4,0x2d97e09b0bc3ba6e] +pclmulqdq imm8[1] xmm.uq[0x561ca4e33441d3a3,0xeb0e527270cea8c2] xmm.uq[0x7587293a17151350,0x3ac3949dea384897] => 2.uq[0x8952066b3e0c09d9,0x0d80def82390fa59] +pclmulqdq imm8[16] xmm.uq[0xdd61ca4fdbc9e338,0x6eb0e528cc92b08b] xmm.uq[0xf75872954cf71736,0x7bac394b85294a8a] => 2.uq[0x07e8e44eff28bbea,0x26de695e1f9507ac] +pclmulqdq imm8[17] xmm.uq[0x3dd61ca6a1426434,0x1eeb0e542f4ef109] xmm.uq[0xcf75872afe553775,0xa7bac39655d85aa7] => 2.uq[0x8fad3e20986ef89f,0x0cfdf3f1f7833e00] +pclmulqdq imm8[0] m128.uq[0x93dd61cc0199ec40,0x49eeb0e6df7ab50f] xmm.uq[0xe4f75874466b1974,0x727bac3b01e34ba9] => 2.uq[0xc93a243ecc35ad00,0x7d58bcc299211eab] +pclmulqdq imm8[1] m128.uq[0xf93dd61e679f64c5,0xbc9eeb101a7d714f] xmm.uq[0x9e4f7588e3ec7794,0x4f27bac550a3fab9] => 2.uq[0x96014936edcb669d,0x3b74884e3421a5a6] +pclmulqdq imm8[16] m128.uq[0xe793dd637effbc4d,0xb3c9eeb2962d9d13] xmm.uq[0x99e4f75a21c48d7a,0x4cf27badef9005ac] => 2.uq[0xe083eb2842bea22e,0x579424d4aee04284] +pclmulqdq imm8[17] m128.uq[0x26793dd7d675c1c5,0xd33c9eecc1e89fcf] xmm.uq[0xa99e4f7747a20ed4,0x54cf27bc827ec659] => 2.uq[0xbbe2a4fae75c8c87,0x3ae9f530feca9e83] +pclmulqdq imm8[0] xmm.uq[0xea6793df27ed221d,0xb533c9f07aa44ffb] xmm.uq[0x9a99e4f913ffe6ee,0x4d4cf27d68adb266] => 2.uq[0x2ecb87e2ee7738c6,0x7d6e3e944eaff450] +pclmulqdq imm8[1] xmm.uq[0x26a6793f93049822,0x13533ca0a8300b00] xmm.uq[0x09a99e5132c5c46f,0xc4d4cf297010a124] => 2.uq[0xae7428c8952c06c8,0x1a782a535e1cf462] +pclmulqdq imm8[16] xmm.uq[0x626a679596b60f81,0xf13533cba208c6b1] xmm.uq[0xb89a99e6b7b22249,0x9c4d4cf43286d015] => 2.uq[0x4a8f4c6ff6f61d79,0x6e57579e887d4fc8] +pclmulqdq imm8[17] xmm.uq[0x8e26a67aeff126f7,0x8713533e5ea65268] xmm.uq[0x4389a9a00e00e823,0xe1c4d4d0edae3302] => 2.uq[0x7752ad4e77e19cd0,0x72483d1e1c0e1d3a] +pclmulqdq imm8[0] m128.uq[0x70e26a695584d870,0x3871353589702b27] xmm.uq[0xdc389a9bab65d480,0x6e1c4d4eb460a92f] => 2.uq[0xd8c101b07d1ef800,0x2109baafa5af4636] +pclmulqdq imm8[1] m128.uq[0xf70e26a830de1384,0x7b871354f71cc8b1] xmm.uq[0xfdc389ab523c2349,0xbee1c4d67fcbd095] => 2.uq[0x2e0ab5ce0af9e7d4,0x6fc4778aacb0c279] +pclmulqdq imm8[16] m128.uq[0x9f70e26c1693a737,0x8fb87136e1f79288] xmm.uq[0x47dc389c4fa98833,0xe3ee1c4f0e82830a] => 2.uq[0x5e76a6469d8b8e18,0x202aa2a3ba5c9f52] +pclmulqdq imm8[17] m128.uq[0x71f70e2865ef0074,0x38fb871511a53f29] xmm.uq[0xdc7dc38b5f805e85,0xae3ee1c6866dee2f] => 2.uq[0xe9f524d62e90ffb7,0x1a32a63921dddcea] diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.stdout.exp new file mode 100644 index 000000000..7bfc79092 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.stdout.exp @@ -0,0 +1,160 @@ +pclmulqdq_1 ... ok +pclmulqdq_2 ... ok +pclmulqdq_3 ... ok +pclmulqdq_4 ... ok +pclmulqdq_5 ... ok +pclmulqdq_6 ... ok +pclmulqdq_7 ... ok +pclmulqdq_8 ... ok +pclmulqdq_9 ... ok +pclmulqdq_10 ... ok +pclmulqdq_11 ... ok +pclmulqdq_12 ... ok +pclmulqdq_13 ... ok +pclmulqdq_14 ... ok +pclmulqdq_15 ... ok +pclmulqdq_16 ... ok +pclmulqdq_17 ... ok +pclmulqdq_18 ... ok +pclmulqdq_19 ... ok +pclmulqdq_20 ... ok +pclmulqdq_21 ... ok +pclmulqdq_22 ... ok +pclmulqdq_23 ... ok +pclmulqdq_24 ... ok +pclmulqdq_25 ... ok +pclmulqdq_26 ... ok +pclmulqdq_27 ... ok +pclmulqdq_28 ... ok +pclmulqdq_29 ... ok +pclmulqdq_30 ... ok +pclmulqdq_31 ... ok +pclmulqdq_32 ... ok +pclmulqdq_33 ... ok +pclmulqdq_34 ... ok +pclmulqdq_35 ... ok +pclmulqdq_36 ... ok +pclmulqdq_37 ... ok +pclmulqdq_38 ... ok +pclmulqdq_39 ... ok +pclmulqdq_40 ... ok +pclmulqdq_41 ... ok +pclmulqdq_42 ... ok +pclmulqdq_43 ... ok +pclmulqdq_44 ... ok +pclmulqdq_45 ... ok +pclmulqdq_46 ... ok +pclmulqdq_47 ... ok +pclmulqdq_48 ... ok +pclmulqdq_49 ... ok +pclmulqdq_50 ... ok +pclmulqdq_51 ... ok +pclmulqdq_52 ... ok +pclmulqdq_53 ... ok +pclmulqdq_54 ... ok +pclmulqdq_55 ... ok +pclmulqdq_56 ... ok +pclmulqdq_57 ... ok +pclmulqdq_58 ... ok +pclmulqdq_59 ... ok +pclmulqdq_60 ... ok +pclmulqdq_61 ... ok +pclmulqdq_62 ... ok +pclmulqdq_63 ... ok +pclmulqdq_64 ... ok +pclmulqdq_65 ... ok +pclmulqdq_66 ... ok +pclmulqdq_67 ... ok +pclmulqdq_68 ... ok +pclmulqdq_69 ... ok +pclmulqdq_70 ... ok +pclmulqdq_71 ... ok +pclmulqdq_72 ... ok +pclmulqdq_73 ... ok +pclmulqdq_74 ... ok +pclmulqdq_75 ... ok +pclmulqdq_76 ... ok +pclmulqdq_77 ... ok +pclmulqdq_78 ... ok +pclmulqdq_79 ... ok +pclmulqdq_80 ... ok +pclmulqdq_81 ... ok +pclmulqdq_82 ... ok +pclmulqdq_83 ... ok +pclmulqdq_84 ... ok +pclmulqdq_85 ... ok +pclmulqdq_86 ... ok +pclmulqdq_87 ... ok +pclmulqdq_88 ... ok +pclmulqdq_89 ... ok +pclmulqdq_90 ... ok +pclmulqdq_91 ... ok +pclmulqdq_92 ... ok +pclmulqdq_93 ... ok +pclmulqdq_94 ... ok +pclmulqdq_95 ... ok +pclmulqdq_96 ... ok +pclmulqdq_97 ... ok +pclmulqdq_98 ... ok +pclmulqdq_99 ... ok +pclmulqdq_100 ... ok +pclmulqdq_101 ... ok +pclmulqdq_102 ... ok +pclmulqdq_103 ... ok +pclmulqdq_104 ... ok +pclmulqdq_105 ... ok +pclmulqdq_106 ... ok +pclmulqdq_107 ... ok +pclmulqdq_108 ... ok +pclmulqdq_109 ... ok +pclmulqdq_110 ... ok +pclmulqdq_111 ... ok +pclmulqdq_112 ... ok +pclmulqdq_113 ... ok +pclmulqdq_114 ... ok +pclmulqdq_115 ... ok +pclmulqdq_116 ... ok +pclmulqdq_117 ... ok +pclmulqdq_118 ... ok +pclmulqdq_119 ... ok +pclmulqdq_120 ... ok +pclmulqdq_121 ... ok +pclmulqdq_122 ... ok +pclmulqdq_123 ... ok +pclmulqdq_124 ... ok +pclmulqdq_125 ... ok +pclmulqdq_126 ... ok +pclmulqdq_127 ... ok +pclmulqdq_128 ... ok +pclmulqdq_129 ... ok +pclmulqdq_130 ... ok +pclmulqdq_131 ... ok +pclmulqdq_132 ... ok +pclmulqdq_133 ... ok +pclmulqdq_134 ... ok +pclmulqdq_135 ... ok +pclmulqdq_136 ... ok +pclmulqdq_137 ... ok +pclmulqdq_138 ... ok +pclmulqdq_139 ... ok +pclmulqdq_140 ... ok +pclmulqdq_141 ... ok +pclmulqdq_142 ... ok +pclmulqdq_143 ... ok +pclmulqdq_144 ... ok +pclmulqdq_145 ... ok +pclmulqdq_146 ... ok +pclmulqdq_147 ... ok +pclmulqdq_148 ... ok +pclmulqdq_149 ... ok +pclmulqdq_150 ... ok +pclmulqdq_151 ... ok +pclmulqdq_152 ... ok +pclmulqdq_153 ... ok +pclmulqdq_154 ... ok +pclmulqdq_155 ... ok +pclmulqdq_156 ... ok +pclmulqdq_157 ... ok +pclmulqdq_158 ... ok +pclmulqdq_159 ... ok +pclmulqdq_160 ... ok diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.vgtest new file mode 100644 index 000000000..d40ded15c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/insn_pclmulqdq.vgtest @@ -0,0 +1,3 @@ +prog: ../../../none/tests/amd64/insn_pclmulqdq +prereq: ../../../tests/x86_amd64_features amd64-pclmulqdq +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.c new file mode 100644 index 000000000..88bc09969 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.c @@ -0,0 +1,11 @@ +#include + +int +main (void) +{ + long rcx = 0x200000005UL; + long rax = 5UL; + asm volatile ("1: addq $1, %0; loopnel 1b" : "+a" (rax), "+c" (rcx) : : "cc"); + printf ("%ld %ld\n", rax, rcx); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stdout.exp new file mode 100644 index 000000000..58d2fb649 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.stdout.exp @@ -0,0 +1 @@ +10 0 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.vgtest new file mode 100644 index 000000000..ce6acb83a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/loopnel.vgtest @@ -0,0 +1 @@ +prog: loopnel diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.c index c655ffb11..71a344f97 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.c @@ -202,6 +202,7 @@ Bool pcmpXstrX_WRK ( /*OUT*/V128* resV, even if they would probably work. Life is too short to have unvalidated cases in the code base. */ switch (imm8) { + case 0x00: case 0x02: case 0x08: case 0x0C: case 0x12: case 0x1A: case 0x3A: case 0x44: case 0x4A: break; @@ -1072,6 +1073,86 @@ void istri_44 ( void ) } +////////////////////////////////////////////////////////// +// // +// ISTRI_00 // +// // +////////////////////////////////////////////////////////// + +UInt h_pcmpistri_00 ( V128* argL, V128* argR ) +{ + V128 block[2]; + memcpy(&block[0], argL, sizeof(V128)); + memcpy(&block[1], argR, sizeof(V128)); + ULong res, flags; + __asm__ __volatile__( + "subq $1024, %%rsp" "\n\t" + "movdqu 0(%2), %%xmm2" "\n\t" + "movdqu 16(%2), %%xmm11" "\n\t" + "pcmpistri $0x00, %%xmm2, %%xmm11" "\n\t" +//"pcmpistrm $0x00, %%xmm2, %%xmm11" "\n\t" +//"movd %%xmm0, %%ecx" "\n\t" + "pushfq" "\n\t" + "popq %%rdx" "\n\t" + "movq %%rcx, %0" "\n\t" + "movq %%rdx, %1" "\n\t" + "addq $1024, %%rsp" "\n\t" + : /*out*/ "=r"(res), "=r"(flags) : "r"/*in*/(&block[0]) + : "rcx","rdx","xmm0","xmm2","xmm11","cc","memory" + ); + return ((flags & 0x8D5) << 16) | (res & 0xFFFF); +} + +UInt s_pcmpistri_00 ( V128* argLU, V128* argRU ) +{ + V128 resV; + UInt resOSZACP, resECX; + Bool ok + = pcmpXstrX_WRK( &resV, &resOSZACP, argLU, argRU, + zmask_from_V128(argLU), + zmask_from_V128(argRU), + 0x00, False/*!isSTRM*/ + ); + assert(ok); + resECX = resV.uInt[0]; + return (resOSZACP << 16) | resECX; +} + +void istri_00 ( void ) +{ + char* wot = "00"; + UInt(*h)(V128*,V128*) = h_pcmpistri_00; + UInt(*s)(V128*,V128*) = s_pcmpistri_00; + + try_istri(wot,h,s, "abcdacbdabcdabcd", "000000000000000a"); + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000000b"); + try_istri(wot,h,s, "abcdabcdabcdabcd", "00000000000000ab"); + try_istri(wot,h,s, "abcdabc0abcdabcd", "000000000000abcd"); + + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abcd"); + try_istri(wot,h,s, "0bcdabcdabcdabcd", "000000000000abcd"); + try_istri(wot,h,s, "abcdabcdabcda0cd", "000000000000abcd"); + try_istri(wot,h,s, "abcdabcdabcdab0d", "000000000000abcd"); + try_istri(wot,h,s, "abcdabcdabcdabc0", "000000000000abcd"); + + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abcd"); + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000a0cd"); + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000ab0d"); + try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abc0"); + + try_istri(wot,h,s, "0000000000000000", "0000000000000000"); + try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); + + try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000abcd"); + try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000dcba"); + try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000bbbb"); + try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000baba"); + + try_istri(wot,h,s, "0000abcdabcdabcd", "00000000000baba0"); + + try_istri(wot,h,s, "0ddc0ffeebadf00d", "00000000cafebabe"); + try_istri(wot,h,s, "0ddc0ffeebadfeed", "00000000cafebabe"); +} @@ -1091,5 +1172,6 @@ int main ( void ) istri_0C(); istri_12(); istri_44(); + istri_00(); return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.stdout.exp new file mode 100644 index 000000000..a5596cd89 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.stdout.exp @@ -0,0 +1,228 @@ +istri 4A 0000000000000000 0000000000000000 -> 08c1000f 08c1000f +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaa2aaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaa2aaaaaa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaaaaaa2aa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaaaaaaaaa aaaa2aaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaa2aaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaa2a -> 0801000f 0801000f +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A baaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000e 0801000e +istri 4A b9aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000d 0801000d +istri 4A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000c 0801000c +istri 4A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000c 0801000c +istri 4A b9baaaaaaaaaaaaa aaaaaaaaaaaa7aaa -> 0801000c 0801000c +istri 4A b9baaaaaaaaaaaaa aaaaaaaa2aaa4aaa -> 0801000c 0801000c +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0801000f 0801000f +istri 4A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 08410002 08410002 +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 08810002 08810002 +istri 4A aaaaaaaaaaaa0aaa aaaaaaaaaaaa0aaa -> 08c1000f 08c1000f +istri 4A aaaaaaaa0aaaaaaa aaaaaaaaaaaaaaaa -> 08410006 08410006 +istri 4A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 08810002 08810002 +istri 4A aaaaaaaa0aaaaaaa aaaaaaaaaaaa0aaa -> 08c1000f 08c1000f +istri 4A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 08410002 08410002 +istri 4A aaaaaaaaaaaaaaaa aaaaaaaa0aaaaaaa -> 08810006 08810006 +istri 4A aaaaaaaaaaaa0aaa aaaaaaaa0aaaaaaa -> 08c1000f 08c1000f +istri 4A 0000000000000000 aaaaaaaa0aaaaaaa -> 00c1000f 00c1000f +istri 4A 8000000000000000 aaaaaaaa0aaaaaaa -> 00c1000f 00c1000f +istri 4A 0000000000000001 aaaaaaaa0aaaaaaa -> 00c1000f 00c1000f +istri 4A 0000000000000000 aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 4A aaaaaaaaaaaaaaaa 0000000000000000 -> 00800010 00800010 +istri 3A 0000000000000000 0000000000000000 -> 08c10000 08c10000 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 3A aaaa2aaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000b 0001000b +istri 3A aaaaaaaaa2aaaaaa aaaaaaaaaaaaaaaa -> 00010006 00010006 +istri 3A aaaaaaaaaaaaa2aa aaaaaaaaaaaaaaaa -> 00010002 00010002 +istri 3A aaaaaaaaaaaaaaaa aaaa2aaaaaaaaaaa -> 0001000b 0001000b +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaa2aaaaaa -> 00010006 00010006 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaa2a -> 00010001 00010001 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 3A baaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000f 0001000f +istri 3A b9aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000e 0001000e +istri 3A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000d 0001000d +istri 3A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000d 0001000d +istri 3A b9baaaaaaaaaaaaa aaaaaaaaaaaa7aaa -> 00010003 00010003 +istri 3A b9baaaaaaaaaaaaa aaaaaaaa2aaa4aaa -> 00010003 00010003 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 3A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 00810003 00810003 +istri 3A aaaaaaaaaaaa0aaa aaaaaaaaaaaa0aaa -> 00c10003 00c10003 +istri 3A aaaaaaaa0aaaaaaa aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 00810003 00810003 +istri 3A aaaaaaaa0aaaaaaa aaaaaaaaaaaa0aaa -> 00c10003 00c10003 +istri 3A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 3A aaaaaaaaaaaaaaaa aaaaaaaa0aaaaaaa -> 00810007 00810007 +istri 3A aaaaaaaaaaaa0aaa aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 3A 0000000000000000 aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 3A 8000000000000000 aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 3A 0000000000000001 aaaaaaaa0aaaaaaa -> 08c10000 08c10000 +istri 3A 0000000000000000 aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 3A aaaaaaaaaaaaaaaa 0000000000000000 -> 08810000 08810000 +istri 08 0000000000000000 0000000000000000 -> 08c10000 08c10000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaa2aaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaa2aaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaaa2aa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaaaaaa aaaa2aaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaa2aaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaa2a -> 08010000 08010000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 baaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 b9aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 b9baaaaaaaaaaaaa aaaaaaaaaaaa7aaa -> 08010000 08010000 +istri 08 b9baaaaaaaaaaaaa aaaaaaaa2aaa4aaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 08 aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 08410000 08410000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 08810000 08810000 +istri 08 aaaaaaaaaaaa0aaa aaaaaaaaaaaa0aaa -> 08c10000 08c10000 +istri 08 aaaaaaaa0aaaaaaa aaaaaaaaaaaaaaaa -> 08410000 08410000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 08810000 08810000 +istri 08 aaaaaaaa0aaaaaaa aaaaaaaaaaaa0aaa -> 08c10000 08c10000 +istri 08 aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 08410000 08410000 +istri 08 aaaaaaaaaaaaaaaa aaaaaaaa0aaaaaaa -> 08810000 08810000 +istri 08 aaaaaaaaaaaa0aaa aaaaaaaa0aaaaaaa -> 08c10000 08c10000 +istri 08 0000000000000000 aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 08 8000000000000000 aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 08 0000000000000001 aaaaaaaa0aaaaaaa -> 00c10007 00c10007 +istri 08 0000000000000000 aaaaaaaaaaaaaaaa -> 00400010 00400010 +istri 08 aaaaaaaaaaaaaaaa 0000000000000000 -> 00800010 00800010 +istri 1A 0000000000000000 0000000000000000 -> 00c00010 00c00010 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 1A aaaa2aaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000b 0001000b +istri 1A aaaaaaaaa2aaaaaa aaaaaaaaaaaaaaaa -> 00010006 00010006 +istri 1A aaaaaaaaaaaaa2aa aaaaaaaaaaaaaaaa -> 00010002 00010002 +istri 1A aaaaaaaaaaaaaaaa aaaa2aaaaaaaaaaa -> 0001000b 0001000b +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaa2aaaaaa -> 00010006 00010006 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaa2a -> 00010001 00010001 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 1A baaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000f 0001000f +istri 1A b9aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000e 0001000e +istri 1A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000d 0001000d +istri 1A b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 0001000d 0001000d +istri 1A b9baaaaaaaaaaaaa aaaaaaaaaaaa7aaa -> 00010003 00010003 +istri 1A b9baaaaaaaaaaaaa aaaaaaaa2aaa4aaa -> 00010003 00010003 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 1A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 00410003 00410003 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 00810003 00810003 +istri 1A aaaaaaaaaaaa0aaa aaaaaaaaaaaa0aaa -> 00c00010 00c00010 +istri 1A aaaaaaaa0aaaaaaa aaaaaaaaaaaaaaaa -> 00410007 00410007 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaaaaaa0aaa -> 00810003 00810003 +istri 1A aaaaaaaa0aaaaaaa aaaaaaaaaaaa0aaa -> 00c10003 00c10003 +istri 1A aaaaaaaaaaaa0aaa aaaaaaaaaaaaaaaa -> 00410003 00410003 +istri 1A aaaaaaaaaaaaaaaa aaaaaaaa0aaaaaaa -> 00810007 00810007 +istri 1A aaaaaaaaaaaa0aaa aaaaaaaa0aaaaaaa -> 00c10003 00c10003 +istri 1A 0000000000000000 aaaaaaaa0aaaaaaa -> 08c10000 08c10000 +istri 1A 8000000000000000 aaaaaaaa0aaaaaaa -> 08c10000 08c10000 +istri 1A 0000000000000001 aaaaaaaa0aaaaaaa -> 08c10000 08c10000 +istri 1A 0000000000000000 aaaaaaaaaaaaaaaa -> 08410000 08410000 +istri 1A aaaaaaaaaaaaaaaa 0000000000000000 -> 08810000 08810000 +istri 02 abcdacbdabcdabcd 000000000000000a -> 00810003 00810003 +istri 02 abcdabcdabcdabcd 000000000000000b -> 00810002 00810002 +istri 02 abcdabcdabcdabcd 00000000000000ab -> 00810002 00810002 +istri 02 abcdabc0abcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 02 abcdabcdabcdabcd 000000000000abcd -> 08810000 08810000 +istri 02 0bcdabcdabcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 02 abcdabcdabcda0cd 000000000000abcd -> 08c10000 08c10000 +istri 02 abcdabcdabcdab0d 000000000000abcd -> 08c10000 08c10000 +istri 02 abcdabcdabcdabc0 000000000000abcd -> 00c00010 00c00010 +istri 02 abcdabcdabcdabcd 000000000000abcd -> 08810000 08810000 +istri 02 abcdabcdabcdabcd 000000000000a0cd -> 08810000 08810000 +istri 02 abcdabcdabcdabcd 000000000000ab0d -> 08810000 08810000 +istri 02 abcdabcdabcdabcd 000000000000abc0 -> 00800010 00800010 +istri 02 0000000000000000 0000000000000000 -> 00c00010 00c00010 +istri 02 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 02 0000abcdabcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 02 0000abcdabcdabcd 000000000000dcba -> 08c10000 08c10000 +istri 02 0000abcdabcdabcd 000000000000bbbb -> 00c10002 00c10002 +istri 02 0000abcdabcdabcd 000000000000baba -> 00c10002 00c10002 +istri 02 0000abcdabcdabcd 00000000000baba0 -> 00c00010 00c00010 +istri 02 0ddc0ffeebadf00d 00000000cafebabe -> 00c00010 00c00010 +istri 02 0ddc0ffeebadfeed 00000000cafebabe -> 00c10001 00c10001 +istri 0C 111111111abcde11 00000000000abcde -> 00810002 00810002 +istri 0C 111111111abcde11 0000abcde00abcde -> 00810002 00810002 +istri 0C 1111111111abcde1 00000000000abcde -> 00810001 00810001 +istri 0C 11111111111abcde 00000000000abcde -> 08810000 08810000 +istri 0C 111111111111abcd 00000000000abcde -> 00800010 00800010 +istri 0C 111abcde1abcde11 00000000000abcde -> 00810002 00810002 +istri 0C 11abcde11abcde11 00000000000abcde -> 00810002 00810002 +istri 0C 1abcde111abcde11 00000000000abcde -> 00810002 00810002 +istri 0C abcde1111abcde11 00000000000abcde -> 00810002 00810002 +istri 0C bcde11111abcde11 00000000000abcde -> 00810002 00810002 +istri 0C cde111111abcde11 00000000000abcde -> 00810002 00810002 +istri 0C 01abcde11abcde11 00000000000abcde -> 00c10002 00c10002 +istri 0C 00abcde11abcde11 00000000000abcde -> 00c10002 00c10002 +istri 0C 000bcde11abcde11 00000000000abcde -> 00c10002 00c10002 +istri 0C 00abcde10abcde11 00000000000abcde -> 00c10002 00c10002 +istri 0C 00abcde100bcde11 00000000000abcde -> 00c00010 00c00010 +istri 0C 1111111111111234 0000000000000000 -> 08810000 08810000 +istri 0C 1111111111111234 0000000000000001 -> 00810003 00810003 +istri 0C 1111111111111234 0000000000000011 -> 00810003 00810003 +istri 0C 1111111111111234 1111111111111234 -> 08010000 08010000 +istri 0C a111111111111111 000000000000000a -> 0081000f 0081000f +istri 0C b111111111111111 000000000000000a -> 00800010 00800010 +istri 12 abcdacbdabcdabcd 000000000000000a -> 08810000 08810000 +istri 12 abcdabcdabcdabcd 000000000000000b -> 08810000 08810000 +istri 12 abcdabcdabcdabcd 00000000000000ab -> 08810000 08810000 +istri 12 abcdabc0abcdabcd 000000000000abcd -> 00c10008 00c10008 +istri 12 abcdabcdabcdabcd 000000000000abcd -> 00800010 00800010 +istri 12 0bcdabcdabcdabcd 000000000000abcd -> 00c1000f 00c1000f +istri 12 abcdabcdabcda0cd 000000000000abcd -> 00c10002 00c10002 +istri 12 abcdabcdabcdab0d 000000000000abcd -> 00c10001 00c10001 +istri 12 abcdabcdabcdabc0 000000000000abcd -> 08c10000 08c10000 +istri 12 abcdabcdabcdabcd 000000000000abcd -> 00800010 00800010 +istri 12 abcdabcdabcdabcd 000000000000a0cd -> 00810002 00810002 +istri 12 abcdabcdabcdabcd 000000000000ab0d -> 00810001 00810001 +istri 12 abcdabcdabcdabcd 000000000000abc0 -> 08810000 08810000 +istri 12 0000000000000000 0000000000000000 -> 08c10000 08c10000 +istri 12 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 +istri 12 0000abcdabcdabcd 000000000000abcd -> 00c1000c 00c1000c +istri 12 0000abcdabcdabcd 000000000000dcba -> 00c1000c 00c1000c +istri 12 0000abcdabcdabcd 000000000000bbbb -> 08c10000 08c10000 +istri 12 0000abcdabcdabcd 000000000000baba -> 08c10000 08c10000 +istri 12 0000abcdabcdabcd 00000000000baba0 -> 08c10000 08c10000 +istri 12 0ddc0ffeebadf00d 00000000cafebabe -> 08c10000 08c10000 +istri 12 0ddc0ffeebadfeed 00000000cafebabe -> 08c10000 08c10000 +istri 44 aaaabbbbccccdddd 00000000000000bc -> 00800010 00800010 +istri 44 aaaabbbbccccdddd 00000000000000cb -> 0081000b 0081000b +istri 44 baaabbbbccccdddd 00000000000000cb -> 0081000f 0081000f +istri 44 baaabbbbccccdddc 00000000000000cb -> 0881000f 0881000f +istri 44 bbbbbbbbbbbbbbbb 00000000000000cb -> 0881000f 0881000f +istri 44 bbbbbbbb0bbbbbbb 00000000000000cb -> 08c10006 08c10006 +istri 44 bbbbbbbbbbbbbb0b 00000000000000cb -> 08c10000 08c10000 +istri 44 bbbbbbbbbbbbbbb0 00000000000000cb -> 00c00010 00c00010 +istri 44 0000000000000000 00000000000000cb -> 00c00010 00c00010 +istri 44 0000000000000000 0000000000000000 -> 00c00010 00c00010 +istri 44 bbbbbbbbbbbbbbbb 00000000000000cb -> 0881000f 0881000f +istri 44 bbbbbbbbbbbbbbbb 000000000000000b -> 00800010 00800010 +istri 44 b4b4b4b4b4b4b4b4 00000000000062cb -> 0881000f 0881000f +istri 44 b4b4b4b4b4b4b4b4 00000000000002cb -> 0081000f 0081000f +istri 44 b4b4b4b4b4b4b4b4 00000000000000cb -> 0081000f 0081000f +istri 44 b4b4b4b4b4b4b4b4 000000000000000b -> 00800010 00800010 +istri 44 0123456789abcdef 000000fecb975421 -> 08c1000e 08c1000e +istri 44 123456789abcdef1 000000fecb975421 -> 0881000f 0881000f +istri 44 0123456789abcdef 00000000dca86532 -> 00c1000d 00c1000d +istri 44 123456789abcdef1 00000000dca86532 -> 0081000e 0081000e +istri 00 abcdacbdabcdabcd 000000000000000a -> 00810003 00810003 +istri 00 abcdabcdabcdabcd 000000000000000b -> 00810002 00810002 +istri 00 abcdabcdabcdabcd 00000000000000ab -> 00810002 00810002 +istri 00 abcdabc0abcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 00 abcdabcdabcdabcd 000000000000abcd -> 08810000 08810000 +istri 00 0bcdabcdabcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 00 abcdabcdabcda0cd 000000000000abcd -> 08c10000 08c10000 +istri 00 abcdabcdabcdab0d 000000000000abcd -> 08c10000 08c10000 +istri 00 abcdabcdabcdabc0 000000000000abcd -> 00c00010 00c00010 +istri 00 abcdabcdabcdabcd 000000000000abcd -> 08810000 08810000 +istri 00 abcdabcdabcdabcd 000000000000a0cd -> 08810000 08810000 +istri 00 abcdabcdabcdabcd 000000000000ab0d -> 08810000 08810000 +istri 00 abcdabcdabcdabcd 000000000000abc0 -> 00800010 00800010 +istri 00 0000000000000000 0000000000000000 -> 00c00010 00c00010 +istri 00 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 08010000 08010000 +istri 00 0000abcdabcdabcd 000000000000abcd -> 08c10000 08c10000 +istri 00 0000abcdabcdabcd 000000000000dcba -> 08c10000 08c10000 +istri 00 0000abcdabcdabcd 000000000000bbbb -> 00c10002 00c10002 +istri 00 0000abcdabcdabcd 000000000000baba -> 00c10002 00c10002 +istri 00 0000abcdabcdabcd 00000000000baba0 -> 00c00010 00c00010 +istri 00 0ddc0ffeebadf00d 00000000cafebabe -> 00c00010 00c00010 +istri 00 0ddc0ffeebadfeed 00000000cafebabe -> 00c10001 00c10001 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.vgtest new file mode 100644 index 000000000..352a9b476 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpstr64.vgtest @@ -0,0 +1,3 @@ +prog: pcmpstr64 +prereq: ../../../tests/x86_amd64_features amd64-sse42 +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.stdout.exp new file mode 100644 index 000000000..720c7976f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.stdout.exp @@ -0,0 +1,210 @@ + +rdx 0000000000000000 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000000 argR aaaaaaaaaaaaaaaa00aaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550006 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 000000000000000000ffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 0000000000000000000000000000007f rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffffffffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffff rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000000 argL 00000000000000000000000000000000 rax 0000000000000000 argR aaaaaaaaaaaaaaaa00aaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000000c1 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 000000c1 + istrm $0x4A: xmm0 ffffffffffffffffff00000000000000 rcx 5555555555555555 flags 000000c1 + istrm $0x0A: xmm0 0000000000000000000000000000ff80 rcx 5555555555555555 flags 000000c1 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffffffffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffff rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000000 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000000 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffffffffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffff rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000000 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000000c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550005 flags 000000c1 + estrm $0x4A: xmm0 ffffffffffffffffffffff0000000000 rcx 5555555555555555 flags 000000c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffe0 rcx 5555555555555555 flags 000000c1 + +rdx 0000000000000000 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000000c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550006 flags 000000c1 + estrm $0x4A: xmm0 ffffffffffffffffffff000000000000 rcx 5555555555555555 flags 000000c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffc0 rcx 5555555555555555 flags 000000c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffff00ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffdf rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 000000000000000f argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ff00000000000000000000ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000801f rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000010 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550004 flags 00000881 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + estrm $0x4A: xmm0 0000000000000000000000ffffffffff rcx 5555555555555555 flags 00000881 + estrm $0x0A: xmm0 0000000000000000000000000000001f rcx 5555555555555555 flags 00000881 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000011 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550004 flags 00000881 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + estrm $0x4A: xmm0 0000000000000000000000ffffffffff rcx 5555555555555555 flags 00000881 + estrm $0x0A: xmm0 0000000000000000000000000000001f rcx 5555555555555555 flags 00000881 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax fffffffffffffffa argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffff00ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffdf rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax fffffffffffffff1 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ff00000000000000000000ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000801f rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax fffffffffffffff0 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550004 flags 00000881 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + estrm $0x4A: xmm0 0000000000000000000000ffffffffff rcx 5555555555555555 flags 00000881 + estrm $0x0A: xmm0 0000000000000000000000000000001f rcx 5555555555555555 flags 00000881 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax ffffffffffffffef argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550004 flags 00000881 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + estrm $0x4A: xmm0 0000000000000000000000ffffffffff rcx 5555555555555555 flags 00000881 + estrm $0x0A: xmm0 0000000000000000000000000000001f rcx 5555555555555555 flags 00000881 + +rdx 0000000000000005 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffff00ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffdf rcx 5555555555555555 flags 000008c1 + +rdx 000000000000000f argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ff000000000000000000ffffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000803f rcx 5555555555555555 flags 000008c1 + +rdx 0000000000000010 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550005 flags 00000841 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000841 + estrm $0x4A: xmm0 00000000000000000000ffffffffffff rcx 5555555555555555 flags 00000841 + estrm $0x0A: xmm0 0000000000000000000000000000003f rcx 5555555555555555 flags 00000841 + +rdx 0000000000000011 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000881 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000881 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000881 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000881 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550005 flags 00000841 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000841 + estrm $0x4A: xmm0 00000000000000000000ffffffffffff rcx 5555555555555555 flags 00000841 + estrm $0x0A: xmm0 0000000000000000000000000000003f rcx 5555555555555555 flags 00000841 + +rdx fffffffffffffffb argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000801 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000801 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000801 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000801 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ffffffffffffffffffff00ffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000ffdf rcx 5555555555555555 flags 000008c1 + +rdx fffffffffffffff1 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000801 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000801 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000801 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000801 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 555555555555000f flags 000008c1 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 000008c1 + estrm $0x4A: xmm0 ff000000000000000000ffffffffffff rcx 5555555555555555 flags 000008c1 + estrm $0x0A: xmm0 0000000000000000000000000000803f rcx 5555555555555555 flags 000008c1 + +rdx fffffffffffffff0 argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000801 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000801 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000801 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000801 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550005 flags 00000841 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000841 + estrm $0x4A: xmm0 00000000000000000000ffffffffffff rcx 5555555555555555 flags 00000841 + estrm $0x0A: xmm0 0000000000000000000000000000003f rcx 5555555555555555 flags 00000841 + +rdx ffffffffffffffef argL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa rax 0000000000000006 argR aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + istri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550007 flags 00000801 + istri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000801 + istrm $0x4A: xmm0 0000000000000000ffffffffffffffff rcx 5555555555555555 flags 00000801 + istrm $0x0A: xmm0 000000000000000000000000000000ff rcx 5555555555555555 flags 00000801 + estri $0x4A: xmm0 55555555555555555555555555555555 rcx 5555555555550005 flags 00000841 + estri $0x0A: xmm0 55555555555555555555555555555555 rcx 5555555555550000 flags 00000841 + estrm $0x4A: xmm0 00000000000000000000ffffffffffff rcx 5555555555555555 flags 00000841 + estrm $0x0A: xmm0 0000000000000000000000000000003f rcx 5555555555555555 flags 00000841 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.vgtest new file mode 100644 index 000000000..dd793acba --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/pcmpxstrx64.vgtest @@ -0,0 +1,3 @@ +prog: pcmpxstrx64 +prereq: ../../../tests/x86_amd64_features amd64-sse42 +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.c new file mode 100644 index 000000000..dd70efadc --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.c @@ -0,0 +1,393 @@ +#include "tests/asm.h" +#include + +char in_b, out_b1, out_b2, in_b2; + +short in_w, out_w1, out_w2; + +int in_l, out_l1, out_l2; + +extern void sbb_ib_al ( void ); +asm("\n" +VG_SYM(sbb_ib_al) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif + +"\tclc\n" +"\tsbbb $5, %al\n" +#ifndef VGP_amd64_darwin +"\tmovb %al, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb %al, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tstc\n" +"\tsbbb $5, %al\n" +#ifndef VGP_amd64_darwin +"\tmovb %al, " VG_SYM(out_b2) "\n" +#else +"\tmovb %al," VG_SYM(out_b2) "(%rip) \n" +#endif + +"\tretq\n" +); + + +extern void sbb_iw_ax ( void ); +asm("\n" +VG_SYM(sbb_iw_ax) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovw " VG_SYM(in_w) ", %ax\n" +#else +"\tmovw " VG_SYM(in_w) "(%rip), %ax\n" +#endif +"\tclc\n" +"\tsbbw $555, %ax\n" +#ifndef VGP_amd64_darwin +"\tmovw %ax, " VG_SYM(out_w1) "\n" + +"\tmovw " VG_SYM(in_w) ", %ax\n" +#else +"\tmovw %ax, " VG_SYM(out_w1) "(%rip)\n" + +"\tmovw " VG_SYM(in_w) "(%rip), %ax\n" +#endif +"\tstc\n" +"\tsbbw $555, %ax\n" +#ifndef VGP_amd64_darwin +"\tmovw %ax, " VG_SYM(out_w2) "\n" +#else +"\tmovw %ax, " VG_SYM(out_w2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void sbb_il_eax ( void ); +asm("\n" +VG_SYM(sbb_il_eax) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovl " VG_SYM(in_l) ", %eax\n" +#else +"\tmovl " VG_SYM(in_l) "(%rip), %eax\n" +#endif +"\tclc\n" +"\tsbbl $555666, %eax\n" +#ifndef VGP_amd64_darwin +"\tmovl %eax, " VG_SYM(out_l1) "\n" + +"\tmovl " VG_SYM(in_l) ", %eax\n" +#else +"\tmovl %eax, " VG_SYM(out_l1) "(%rip)\n" + +"\tmovl " VG_SYM(in_l) "(%rip), %eax\n" +#endif +"\tstc\n" +"\tsbbl $555666, %eax\n" +#ifndef VGP_amd64_darwin +"\tmovl %eax, " VG_SYM(out_l2) "\n" +#else +"\tmovl %eax, " VG_SYM(out_l2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void sbb_eb_gb ( void ); +asm("\n" +VG_SYM(sbb_eb_gb) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tclc\n" +#ifndef VGP_amd64_darwin +"\tsbbb " VG_SYM(in_b2) ", %al\n" +"\tmovb %al, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tsbbb " VG_SYM(in_b2) "(%rip), %al\n" +"\tmovb %al, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tstc\n" +#ifndef VGP_amd64_darwin +"\tsbbb " VG_SYM(in_b2) ", %al\n" +"\tmovb %al, " VG_SYM(out_b2) "\n" +#else +"\tsbbb " VG_SYM(in_b2) "(%rip), %al\n" +"\tmovb %al, " VG_SYM(out_b2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void sbb_eb_gb_2 ( void ); +asm("\n" +VG_SYM(sbb_eb_gb_2) ":\n" +"\tpushq %rcx\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %cl\n" +"\tmovb " VG_SYM(in_b2) ", %dh\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %cl\n" +"\tmovb " VG_SYM(in_b2) "(%rip), %dh\n" +#endif +"\tclc\n" +"\tsbbb %dh,%cl\n" +#ifndef VGP_amd64_darwin +"\tmovb %cl, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %cl\n" +"\tmovb " VG_SYM(in_b2) ", %dh\n" +#else +"\tmovb %cl, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %cl\n" +"\tmovb " VG_SYM(in_b2) "(%rip), %dh\n" +#endif +"\tstc\n" +"\tsbbb %dh,%cl\n" +#ifndef VGP_amd64_darwin +"\tmovb %cl, " VG_SYM(out_b2) "\n" +#else +"\tmovb %cl, " VG_SYM(out_b2) "(%rip)\n" +#endif + +"\tpopq %rcx\n" +"\tretq\n" +); + + +extern void adc_eb_gb ( void ); +asm("\n" +VG_SYM(adc_eb_gb) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tclc\n" +#ifndef VGP_amd64_darwin +"\tadcb " VG_SYM(in_b2) ", %al\n" +"\tmovb %al, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tadcb " VG_SYM(in_b2) "(%rip), %al\n" +"\tmovb %al, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tstc\n" +#ifndef VGP_amd64_darwin +"\tadcb " VG_SYM(in_b2) ", %al\n" +"\tmovb %al, " VG_SYM(out_b2) "\n" +#else +"\tadcb " VG_SYM(in_b2) "(%rip), %al\n" +"\tmovb %al, " VG_SYM(out_b2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void adc_eb_gb_2 ( void ); +asm("\n" +VG_SYM(adc_eb_gb_2) ":\n" +"\tpushq %rcx\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %cl\n" +"\tmovb " VG_SYM(in_b2) ", %dh\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %cl\n" +"\tmovb " VG_SYM(in_b2) "(%rip), %dh\n" +#endif +"\tclc\n" +"\tadcb %dh,%cl\n" +#ifndef VGP_amd64_darwin +"\tmovb %cl, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %cl\n" +"\tmovb " VG_SYM(in_b2) ", %dh\n" +#else +"\tmovb %cl, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %cl\n" +"\tmovb " VG_SYM(in_b2) "(%rip), %dh\n" +#endif +"\tstc\n" +"\tadcb %dh,%cl\n" +#ifndef VGP_amd64_darwin +"\tmovb %cl, " VG_SYM(out_b2) "\n" +#else +"\tmovb %cl, " VG_SYM(out_b2) "(%rip)\n" +#endif + +"\tpopq %rcx\n" +"\tretq\n" +); + +extern void adc_ib_al ( void ); +asm("\n" +VG_SYM(adc_ib_al) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tclc\n" +"\tadcb $5, %al\n" +#ifndef VGP_amd64_darwin +"\tmovb %al, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +#else +"\tmovb %al, " VG_SYM(out_b1) "(%rip)\n" + +"\tmovb " VG_SYM(in_b) "(%rip), %al\n" +#endif +"\tstc\n" +"\tadcb $5, %al\n" +#ifndef VGP_amd64_darwin +"\tmovb %al, " VG_SYM(out_b2) "\n" +#else +"\tmovb %al, " VG_SYM(out_b2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void adc_iw_ax ( void ); +asm("\n" +VG_SYM(adc_iw_ax) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovw " VG_SYM(in_w) ", %ax\n" +#else +"\tmovw " VG_SYM(in_w) "(%rip), %ax\n" +#endif +"\tclc\n" +"\tadcw $555, %ax\n" +#ifndef VGP_amd64_darwin +"\tmovw %ax, " VG_SYM(out_w1) "\n" + +"\tmovw " VG_SYM(in_w) ", %ax\n" +#else +"\tmovw %ax, " VG_SYM(out_w1) "(%rip)\n" + +"\tmovw " VG_SYM(in_w) "(%rip), %ax\n" +#endif +"\tstc\n" +"\tadcw $555, %ax\n" +#ifndef VGP_amd64_darwin +"\tmovw %ax, " VG_SYM(out_w2) "\n" +#else +"\tmovw %ax, " VG_SYM(out_w2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +extern void adc_il_eax ( void ); +asm("\n" +VG_SYM(adc_il_eax) ":\n" + +#ifndef VGP_amd64_darwin +"\tmovl " VG_SYM(in_l) ", %eax\n" +#else +"\tmovl " VG_SYM(in_l) "(%rip), %eax\n" +#endif +"\tclc\n" +"\tadcl $555666, %eax\n" +#ifndef VGP_amd64_darwin +"\tmovl %eax, " VG_SYM(out_l1) "\n" + +"\tmovl " VG_SYM(in_l) ", %eax\n" +#else +"\tmovl %eax, " VG_SYM(out_l1) "(%rip)\n" + +"\tmovl " VG_SYM(in_l) "(%rip), %eax\n" +#endif +"\tstc\n" +"\tadcl $555666, %eax\n" +#ifndef VGP_amd64_darwin +"\tmovl %eax, " VG_SYM(out_l2) "\n" +#else +"\tmovl %eax, " VG_SYM(out_l2) "(%rip)\n" +#endif + +"\tretq\n" +); + + +int main ( void ) +{ + in_b = 99; + sbb_ib_al(); + printf("r1 = %d %d\n", (int)out_b1, (int)out_b2); + + in_w = 49999; + sbb_iw_ax(); + printf("r2 = %d %d\n", (int)out_w1, (int)out_w2); + + in_l = 0xF0000000; + sbb_il_eax(); + printf("r3 = %d %d\n", (int)out_l1, (int)out_l2); + + in_b = 99; + in_b2 = 88; + sbb_eb_gb(); + printf("r4 = %d %d\n", (int)out_b1, (int)out_b2); + + in_b = 66; + in_b2 = 77; + sbb_eb_gb_2(); + printf("r5 = %d %d\n", (int)out_b1, (int)out_b2); + + in_b = 99; + in_b2 = 88; + adc_eb_gb(); + printf("r6 = %d %d\n", (int)out_b1, (int)out_b2); + + in_b = 66; + in_b2 = 77; + adc_eb_gb_2(); + printf("r7 = %d %d\n", (int)out_b1, (int)out_b2); + + in_b = 99; + adc_ib_al(); + printf("r8 = %d %d\n", (int)out_b1, (int)out_b2); + + in_w = 49999; + adc_iw_ax(); + printf("r9 = %d %d\n", (int)out_w1, (int)out_w2); + + in_l = 0xF0000000; + adc_il_eax(); + printf("r10 = %d %d\n", (int)out_l1, (int)out_l2); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stdout.exp new file mode 100644 index 000000000..2945cc32b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.stdout.exp @@ -0,0 +1,10 @@ +r1 = 94 93 +r2 = -16092 -16093 +r3 = -268991122 -268991123 +r4 = 11 10 +r5 = -11 -12 +r6 = -69 -68 +r7 = -113 -112 +r8 = 104 105 +r9 = -14982 -14981 +r10 = -267879790 -267879789 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.vgtest new file mode 100644 index 000000000..b90ba2af6 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sbbmisc.vgtest @@ -0,0 +1 @@ +prog: sbbmisc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.c index 467a03fe6..105def952 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.c @@ -19,7 +19,11 @@ // rmme when reintegrated // Allocates a 16-aligned block. Asserts if the allocation fails. +#ifdef VGO_darwin +#include +#else #include +#endif __attribute__((unused)) static void* memalign16(size_t szB) { @@ -163,10 +167,12 @@ static V128 AllMask = { 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF }; /* Mark for insns which produce approximated vector short results. */ +__attribute__((unused)) static V128 ApproxPS = { 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF }; /* Mark for insns which produce approximated scalar short results. */ +__attribute__((unused)) static V128 ApproxSS = { 0x00,0x00,0x80,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF }; @@ -181,6 +187,51 @@ double mkNegInf ( void ) { return -mkPosInf(); } double mkPosNan ( void ) { return 0.0 / 0.0; } double mkNegNan ( void ) { return -mkPosNan(); } +__attribute__((noinline)) +UInt get_mxcsr ( void ) +{ + ULong w64; + __asm__ __volatile__( + "subq $8, %%rsp" "\n\t" + "stmxcsr (%%rsp)" "\n\t" + "movq (%%rsp), %0" "\n" + "addq $8, %%rsp" + : /*OUT*/"=r"(w64) : /*IN*/ : "memory","cc" + ); + if (0) printf("get %08x\n", (UInt)w64); + return (UInt)w64; +} + +__attribute__((noinline)) +void set_mxcsr ( UInt w32 ) +{ + if (0) printf("set %08x\n", w32); + ULong w64 = (ULong)w32; + __asm__ __volatile__( + "subq $8, %%rsp" "\n\t" + "movq %0, (%%rsp)" "\n\t" + "ldmxcsr (%%rsp)" "\n\t" + "addq $8, %%rsp" + : /*OUT*/ : /*IN*/"r"(w64) : "memory",/*"mxcsr",*/"cc" + ); +} + +UInt get_sse_roundingmode ( void ) +{ + UInt w = get_mxcsr(); + return (w >> 13) & 3; +} + +void set_sse_roundingmode ( UInt m ) +{ + UInt w; + assert(0 == (m & ~3)); + w = get_mxcsr(); + w &= ~(3 << 13); + w |= (m << 13); + set_mxcsr(w); +} + #define DO_imm_r_r(_opname, _imm, _src, _dst) \ { \ @@ -1679,6 +1730,17 @@ void test_PINSRQ ( void ) } +void test_EXTRACTPS ( void ) +{ + V128 src; + randV128(&src); + DO_imm_r_to_mandrscalar("extractps", 0, src, "d"); + DO_imm_r_to_mandrscalar("extractps", 1, src, "d"); + DO_imm_r_to_mandrscalar("extractps", 2, src, "d"); + DO_imm_r_to_mandrscalar("extractps", 3, src, "d"); +} + + void test_PHMINPOSUW ( void ) { V128 src, dst; @@ -1948,7 +2010,11 @@ void test_POPCNTQ ( void ) "movq %0, %%rax" "\n\t" "movq 0(%%rax), %%rdi" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntq %%rdi, %%r11" "\n\t" +#else + "popcnt %%rdi, %%r11" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -1967,7 +2033,11 @@ void test_POPCNTQ ( void ) __asm__ __volatile__( "movq %0, %%rax" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntq 0(%%rax), %%r11" "\n\t" +#else + "popcnt 0(%%rax), %%r11" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -1996,7 +2066,11 @@ void test_POPCNTL ( void ) "movq %0, %%rax" "\n\t" "movq 0(%%rax), %%rdi" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntl %%edi, %%r11d" "\n\t" +#else + "popcnt %%edi, %%r11d" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -2015,7 +2089,11 @@ void test_POPCNTL ( void ) __asm__ __volatile__( "movq %0, %%rax" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntl 0(%%rax), %%r11d" "\n\t" +#else + "popcnt 0(%%rax), %%r11d" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -2044,7 +2122,11 @@ void test_POPCNTW ( void ) "movq %0, %%rax" "\n\t" "movq 0(%%rax), %%rdi" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntw %%di, %%r11w" "\n\t" +#else + "popcnt %%di, %%r11w" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -2063,7 +2145,11 @@ void test_POPCNTW ( void ) __asm__ __volatile__( "movq %0, %%rax" "\n\t" "movq 8(%%rax), %%r11" "\n\t" +#ifndef VGP_amd64_darwin "popcntw 0(%%rax), %%r11w" "\n\t" +#else + "popcnt 0(%%rax), %%r11w" "\n\t" +#endif "movq %%r11, 16(%%rax)" "\n\t" "pushfq" "\n\t" "popq %%r12" "\n\t" @@ -2203,6 +2289,29 @@ void do_ROUNDSD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) } } +void do_ROUNDSD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundsd $4, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundsd $4, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} void test_ROUNDSD_w_immediate_rounding ( void ) { @@ -2328,6 +2437,76 @@ void test_ROUNDSD_w_immediate_rounding ( void ) } } +void test_ROUNDSD_w_mxcsr_rounding ( void ) +{ + UInt rm; + double vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); + + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default + + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; + + for (rm = 0; rm <= 3; rm++) { + set_sse_roundingmode(rm); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + do_ROUNDSD_1XX(False/*reg*/, &src, &dst); + printf("r (rm=%u) roundsd_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f %10f", vals[i], *(double*)(&dst[0])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + do_ROUNDSD_1XX(True/*mem*/, &src, &dst); + printf("m (rm=%u) roundsd_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f %10f", vals[i], *(double*)(&dst[0])); + printf("\n"); + } + } + + rm = get_sse_roundingmode(); + assert(rm == 3); + set_sse_roundingmode(0); + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default +} + + /* ------------ ROUNDSS ------------ */ void do_ROUNDSS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) @@ -2426,6 +2605,29 @@ void do_ROUNDSS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) } } +void do_ROUNDSS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundss $4, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundss $4, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} void test_ROUNDSS_w_immediate_rounding ( void ) { @@ -2551,131 +2753,1103 @@ void test_ROUNDSS_w_immediate_rounding ( void ) } } -void test_PTEST ( void ) +void test_ROUNDSS_w_mxcsr_rounding ( void ) { - const Int ntests = 8; - V128 spec[ntests]; - do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0x0000000000000000ULL ); - do64HLtoV128( &spec[1], 0x0000000000000000ULL, 0x0000000000000001ULL ); - do64HLtoV128( &spec[2], 0x0000000000000001ULL, 0x0000000000000000ULL ); - do64HLtoV128( &spec[3], 0x0000000000000001ULL, 0x0000000000000001ULL ); - do64HLtoV128( &spec[4], 0xffffffffffffffffULL, 0xffffffffffffffffULL ); - do64HLtoV128( &spec[5], 0xffffffffffffffffULL, 0xfffffffffffffffeULL ); - do64HLtoV128( &spec[6], 0xfffffffffffffffeULL, 0xffffffffffffffffULL ); - do64HLtoV128( &spec[7], 0xfffffffffffffffeULL, 0xfffffffffffffffeULL ); - V128 block[2]; - Int i, j; - ULong flags; - for (i = 0; i < ntests; i++) { - for (j = 0; j < ntests; j++) { - memcpy(&block[0], &spec[i], 16); - memcpy(&block[1], &spec[j], 16); - __asm__ __volatile__( - "subq $256, %%rsp" "\n\t" - "movupd 0(%1), %%xmm2" "\n\t" - "ptest 16(%1), %%xmm2" "\n\t" - "pushfq" "\n\t" - "popq %0" "\n\t" - "addq $256, %%rsp" "\n\t" - : /*out*/"=r"(flags) : /*in*/ "r"(&block[0]) : - "xmm2", "memory", "cc" - ); - printf("r ptest "); - showV128(&block[0]); - printf(" "); - showV128(&block[1]); - printf(" -> eflags %04x\n", (UInt)flags & 0x8D5); - } - } -} + UInt rm; + float vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); -int main ( int argc, char** argv ) -{ -#if 1 - // ------ SSE 4.1 ------ - test_BLENDPD(); // done Apr.01.2010 - test_BLENDPS(); // done Apr.02.2010 - //test_PBLENDW(); - // BLENDVPD - // BLENDVPS - test_DPPD(); // done Apr.08.2010 - test_DPPS(); // done Apr.09.2010 - // EXTRACTPS - test_INSERTPS(); // done Apr.01.2010 - // MOVNTDQA - //test_MPSADBW(); - //test_PACKUSDW(); - // PBLENDVB - //test_PCMPEQQ(); - test_PEXTRB(); // done Apr.15.2010 - test_PEXTRD(); // done Apr.14.2010 - test_PEXTRQ(); // done Apr.14.2010 - test_PEXTRW(); // done Apr.14.2010 - test_PINSRQ(); // done Apr.16.2010 - test_PINSRD(); // todo - //test_PINSRW(); // todo - test_PINSRB(); // todo - //test_PHMINPOSUW(); - test_PMAXSB(); - test_PMAXSD(); // done Apr.09.2010 - test_PMAXUD(); // done Apr.16.2010 - test_PMAXUW(); - test_PMINSB(); - test_PMINSD(); // done Apr.09.2010 - test_PMINUD(); - test_PMINUW(); - test_PMOVSXBW(); // done Apr.02.2010 - test_PMOVSXBD(); // done Mar.30.2010 - test_PMOVSXBQ(); // done Mar.30.2010 - test_PMOVSXWD(); // done Mar.31.2010 - test_PMOVSXWQ(); // done Mar.31.2010 - test_PMOVSXDQ(); // done Mar.31.2010 - test_PMOVZXBW(); // done Mar.28.2010 - test_PMOVZXBD(); // done Mar.29.2010 - test_PMOVZXBQ(); // done Mar.29.2010 - test_PMOVZXWD(); // done Mar.28.2010 - test_PMOVZXWQ(); // done Mar.29.2010 - test_PMOVZXDQ(); // done Mar.29.2010 - test_POPCNTW(); - test_POPCNTL(); - test_POPCNTQ(); - //test_PMULDQ(); - test_PMULLD(); - test_PTEST(); - // ROUNDPD - // ROUNDPS - // ROUNDSD - // ROUNDSS - test_ROUNDSD_w_immediate_rounding(); - test_ROUNDSS_w_immediate_rounding(); - // ------ SSE 4.2 ------ - test_PCMPGTQ(); -#else - test_PTEST(); -#endif + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default - return 0; + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; - ////////////////// + for (rm = 0; rm <= 3; rm++) { + set_sse_roundingmode(rm); - Int sse1 = 0, sse2 = 0; + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + do_ROUNDSS_1XX(False/*reg*/, &src, &dst); + printf("r (rm=%u) roundss_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); + printf("\n"); - if (argc == 2 && 0==strcmp(argv[1], "sse1")) { - sse1 = 1; - } - else - if (argc == 2 && 0==strcmp(argv[1], "sse2")) { - sse2 = 1; - } - else - if (argc == 2 && 0==strcmp(argv[1], "all")) { - sse1 = sse2 = 1; - } - else { - fprintf(stderr, "usage: sse_memory [sse1|sse2|all]\n"); - return 0; + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + do_ROUNDSS_1XX(True/*mem*/, &src, &dst); + printf("m (rm=%u) roundss_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); + printf("\n"); + } } - return 0; + rm = get_sse_roundingmode(); + assert(rm == 3); + set_sse_roundingmode(0); + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default +} + +/* ------------ ROUNDPD ------------ */ + +void do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundpd $0, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundpd $0, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundpd $1, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundpd $1, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundpd $2, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundpd $2, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundpd $3, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundpd $3, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundpd $4, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundpd $4, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void test_ROUNDPD_w_immediate_rounding ( void ) +{ + double vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); + + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_000(False/*reg*/, &src, &dst); + printf("r roundpd_000 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_000(True/*mem*/, &src, &dst); + printf("m roundpd_000 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_001(False/*reg*/, &src, &dst); + printf("r roundpd_001 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_001(True/*mem*/, &src, &dst); + printf("m roundpd_001 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_010(False/*reg*/, &src, &dst); + printf("r roundpd_010 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_010(True/*mem*/, &src, &dst); + printf("m roundpd_010 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_011(False/*reg*/, &src, &dst); + printf("r roundpd_011 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_011(True/*mem*/, &src, &dst); + printf("m roundpd_011 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + } +} + +void test_ROUNDPD_w_mxcsr_rounding ( void ) +{ + UInt rm; + double vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); + + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default + + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; + + for (rm = 0; rm <= 3; rm++) { + set_sse_roundingmode(rm); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_1XX(False/*reg*/, &src, &dst); + printf("r (rm=%u) roundpd_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 8); + memcpy(&src[8], &vals[(i+11)%22], 8); + do_ROUNDPD_1XX(True/*mem*/, &src, &dst); + printf("m (rm=%u) roundpd_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); + printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); + printf("\n"); + } + } + + rm = get_sse_roundingmode(); + assert(rm == 3); + set_sse_roundingmode(0); + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default +} + +/* ------------ ROUNDPS ------------ */ + +void do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundps $0, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundps $0, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundps $1, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundps $1, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundps $2, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundps $2, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundps $3, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundps $3, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "roundps $4, (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11" + ); + } else { + __asm__ __volatile__( + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "roundps $4, %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst) + : /*TRASH*/ "xmm11","xmm2" + ); + } +} + +void test_ROUNDPS_w_immediate_rounding ( void ) +{ + float vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); + + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_000(False/*reg*/, &src, &dst); + printf("r roundps_000 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_000(True/*mem*/, &src, &dst); + printf("m roundps_000 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_001(False/*reg*/, &src, &dst); + printf("r roundps_001 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_001(True/*mem*/, &src, &dst); + printf("m roundps_001 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_010(False/*reg*/, &src, &dst); + printf("r roundps_010 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_010(True/*mem*/, &src, &dst); + printf("m roundps_010 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_011(False/*reg*/, &src, &dst); + printf("r roundps_011 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_011(True/*mem*/, &src, &dst); + printf("m roundps_011 "); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + } +} + +void test_ROUNDPS_w_mxcsr_rounding ( void ) +{ + UInt rm; + float vals[22]; + Int i = 0; + vals[i++] = 0.0; + vals[i++] = -0.0; + vals[i++] = mkPosInf(); + vals[i++] = mkNegInf(); + vals[i++] = mkPosNan(); + vals[i++] = mkNegNan(); + vals[i++] = -1.3; + vals[i++] = -1.1; + vals[i++] = -0.9; + vals[i++] = -0.7; + vals[i++] = -0.50001; + vals[i++] = -0.49999; + vals[i++] = -0.3; + vals[i++] = -0.1; + vals[i++] = 0.1; + vals[i++] = 0.3; + vals[i++] = 0.49999; + vals[i++] = 0.50001; + vals[i++] = 0.7; + vals[i++] = 0.9; + vals[i++] = 1.1; + vals[i++] = 1.3; + assert(i == 22); + + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default + + for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { + V128 src, dst; + + for (rm = 0; rm <= 3; rm++) { + set_sse_roundingmode(rm); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_1XX(False/*reg*/, &src, &dst); + printf("r (rm=%u) roundps_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + + randV128(&src); + randV128(&dst); + memcpy(&src[0], &vals[i], 4); + memcpy(&src[4], &vals[(i+5)%22], 4); + memcpy(&src[8], &vals[(i+11)%22], 4); + memcpy(&src[12], &vals[(i+17)%22], 4); + do_ROUNDPS_1XX(True/*mem*/, &src, &dst); + printf("m (rm=%u) roundps_1XX ", rm); + showV128(&src); + printf(" "); + showV128(&dst); + printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); + printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); + printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); + printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); + printf("\n"); + } + } + + rm = get_sse_roundingmode(); + assert(rm == 3); + set_sse_roundingmode(0); + rm = get_sse_roundingmode(); + assert(rm == 0); // 0 == RN == default +} + +/* ------------ PTEST ------------ */ + +void test_PTEST ( void ) +{ + const Int ntests = 8; + V128 spec[ntests]; + do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0x0000000000000000ULL ); + do64HLtoV128( &spec[1], 0x0000000000000000ULL, 0x0000000000000001ULL ); + do64HLtoV128( &spec[2], 0x0000000000000001ULL, 0x0000000000000000ULL ); + do64HLtoV128( &spec[3], 0x0000000000000001ULL, 0x0000000000000001ULL ); + do64HLtoV128( &spec[4], 0xffffffffffffffffULL, 0xffffffffffffffffULL ); + do64HLtoV128( &spec[5], 0xffffffffffffffffULL, 0xfffffffffffffffeULL ); + do64HLtoV128( &spec[6], 0xfffffffffffffffeULL, 0xffffffffffffffffULL ); + do64HLtoV128( &spec[7], 0xfffffffffffffffeULL, 0xfffffffffffffffeULL ); + V128 block[2]; + Int i, j; + ULong flags; + for (i = 0; i < ntests; i++) { + for (j = 0; j < ntests; j++) { + memcpy(&block[0], &spec[i], 16); + memcpy(&block[1], &spec[j], 16); + __asm__ __volatile__( + "subq $256, %%rsp" "\n\t" + "movupd 0(%1), %%xmm2" "\n\t" + "ptest 16(%1), %%xmm2" "\n\t" + "pushfq" "\n\t" + "popq %0" "\n\t" + "addq $256, %%rsp" "\n\t" + : /*out*/"=r"(flags) : /*in*/ "r"(&block[0]) : + "xmm2", "memory", "cc" + ); + printf("r ptest "); + showV128(&block[0]); + printf(" "); + showV128(&block[1]); + printf(" -> eflags %04x\n", (UInt)flags & 0x8D5); + } + } +} + +/* ------------ PBLENDVB ------------ */ + +void do_PBLENDVB ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "pblendvb (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm0" + ); + } else { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "pblendvb %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm2","xmm0" + ); + } +} + +void test_PBLENDVB ( void ) +{ + V128 xmm0, src, dst, t_xmm0, t_src, t_dst; + Int i; + for (i = 0; i < 10; i++) { + randV128(&t_xmm0); + randV128(&t_src); + randV128(&t_dst); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_PBLENDVB(False/*reg*/, &xmm0, &src, &dst); + printf("r pblendvb "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_PBLENDVB(True/*mem*/, &xmm0, &src, &dst); + printf("m pblendvb "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + } +} + +/* ------------ BLENDVPD ------------ */ + +void do_BLENDVPD ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "blendvpd (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm0" + ); + } else { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "blendvpd %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm2","xmm0" + ); + } +} + +void test_BLENDVPD ( void ) +{ + V128 xmm0, src, dst, t_xmm0, t_src, t_dst; + Int i; + for (i = 0; i < 10; i++) { + randV128(&t_xmm0); + randV128(&t_src); + randV128(&t_dst); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_BLENDVPD(False/*reg*/, &xmm0, &src, &dst); + printf("r blendvpd "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_BLENDVPD(True/*mem*/, &xmm0, &src, &dst); + printf("m blendvpd "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + } +} + +/* ------------ BLENDVPS ------------ */ + +void do_BLENDVPS ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) +{ + if (mem) { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "blendvps (%0), %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm0" + ); + } else { + __asm__ __volatile__( + "movupd (%2), %%xmm0" "\n\t" + "movupd (%1), %%xmm11" "\n\t" + "movupd (%0), %%xmm2" "\n\t" + "blendvps %%xmm2, %%xmm11" "\n\t" + "movupd %%xmm11, (%1)" "\n" + : /*OUT*/ + : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) + : /*TRASH*/ "xmm11","xmm2","xmm0" + ); + } +} + +void test_BLENDVPS ( void ) +{ + V128 xmm0, src, dst, t_xmm0, t_src, t_dst; + Int i; + for (i = 0; i < 10; i++) { + randV128(&t_xmm0); + randV128(&t_src); + randV128(&t_dst); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_BLENDVPS(False/*reg*/, &xmm0, &src, &dst); + printf("r blendvps "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + + memcpy(&xmm0, &t_xmm0, 16); + memcpy(&src, &t_src, 16); + memcpy(&dst, &t_dst, 16); + do_BLENDVPS(True/*mem*/, &xmm0, &src, &dst); + printf("m blendvps "); + showV128(&t_xmm0); + printf(" "); + showV128(&t_src); + printf(" "); + showV128(&t_dst); + printf(" -> "); + showV128(&dst); + printf("\n"); + } +} + +/* ------------ main ------------ */ + +int main ( int argc, char** argv ) +{ +#if 1 + // ------ SSE 4.1 ------ + test_BLENDPD(); // done Apr.01.2010 + test_BLENDPS(); // done Apr.02.2010 + test_PBLENDW(); + test_PBLENDVB(); + test_BLENDVPD(); + test_BLENDVPS(); + test_DPPD(); // done Apr.08.2010 + test_DPPS(); // done Apr.09.2010 + test_EXTRACTPS(); + test_INSERTPS(); // done Apr.01.2010 + // MOVNTDQA *** + //test_MPSADBW(); + //test_PACKUSDW(); + //test_PCMPEQQ(); + test_PEXTRB(); // done Apr.15.2010 + test_PEXTRD(); // done Apr.14.2010 + test_PEXTRQ(); // done Apr.14.2010 + test_PEXTRW(); // done Apr.14.2010 + test_PINSRQ(); // done Apr.16.2010 + test_PINSRD(); // todo + test_PINSRW(); /* Umm, this is SSE2, not SSE4. Right? */ + test_PINSRB(); // todo + //test_PHMINPOSUW(); + test_PMAXSB(); + test_PMAXSD(); // done Apr.09.2010 + test_PMAXUD(); // done Apr.16.2010 + test_PMAXUW(); + test_PMINSB(); + test_PMINSD(); // done Apr.09.2010 + test_PMINUD(); + test_PMINUW(); + test_PMOVSXBW(); // done Apr.02.2010 + test_PMOVSXBD(); // done Mar.30.2010 + test_PMOVSXBQ(); // done Mar.30.2010 + test_PMOVSXWD(); // done Mar.31.2010 + test_PMOVSXWQ(); // done Mar.31.2010 + test_PMOVSXDQ(); // done Mar.31.2010 + test_PMOVZXBW(); // done Mar.28.2010 + test_PMOVZXBD(); // done Mar.29.2010 + test_PMOVZXBQ(); // done Mar.29.2010 + test_PMOVZXWD(); // done Mar.28.2010 + test_PMOVZXWQ(); // done Mar.29.2010 + test_PMOVZXDQ(); // done Mar.29.2010 + test_POPCNTW(); + test_POPCNTL(); + test_POPCNTQ(); + //test_PMULDQ(); + test_PMULLD(); + test_PTEST(); + test_ROUNDSD_w_immediate_rounding(); + test_ROUNDSS_w_immediate_rounding(); + test_ROUNDPD_w_immediate_rounding(); + test_ROUNDPS_w_immediate_rounding(); + test_ROUNDSD_w_mxcsr_rounding(); + test_ROUNDSS_w_mxcsr_rounding(); + test_ROUNDPD_w_mxcsr_rounding(); + test_ROUNDPS_w_mxcsr_rounding(); + // ------ SSE 4.2 ------ + test_PCMPGTQ(); + // CRC32B,Q + +#else +#if 0 + test_MPSADBW(); + test_PACKUSDW(); + test_PCMPEQQ(); + test_PHMINPOSUW(); + test_PMULDQ(); +#endif +#endif + + return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.stdout.exp new file mode 100644 index 000000000..afa8f6bed --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.stdout.exp @@ -0,0 +1,4706 @@ +r blendpd $0 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 7d6528c5fa956a0d69c3e9a6af27d13b +m blendpd $0 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 7d6528c5fa956a0d69c3e9a6af27d13b +r blendpd $1 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 7d6528c5fa956a0d98f24a4984175700 +m blendpd $1 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 7d6528c5fa956a0d98f24a4984175700 +r blendpd $2 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 5175e39d19c9ca1e69c3e9a6af27d13b +m blendpd $2 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 5175e39d19c9ca1e69c3e9a6af27d13b +r blendpd $3 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 5175e39d19c9ca1e98f24a4984175700 +m blendpd $3 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 5175e39d19c9ca1e98f24a4984175700 +r blendpd $0 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 b6d2fb5aa7bc5127fe9915e556a044b2 +m blendpd $0 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 b6d2fb5aa7bc5127fe9915e556a044b2 +r blendpd $1 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 b6d2fb5aa7bc512747b8d8c0eeef1e50 +m blendpd $1 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 b6d2fb5aa7bc512747b8d8c0eeef1e50 +r blendpd $2 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 60b160857d45c484fe9915e556a044b2 +m blendpd $2 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 60b160857d45c484fe9915e556a044b2 +r blendpd $3 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 60b160857d45c48447b8d8c0eeef1e50 +m blendpd $3 60b160857d45c48447b8d8c0eeef1e50 b6d2fb5aa7bc5127fe9915e556a044b2 60b160857d45c48447b8d8c0eeef1e50 +r blendpd $0 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 065d77195d623e6b842adc6450659e17 +m blendpd $0 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 065d77195d623e6b842adc6450659e17 +r blendpd $1 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 065d77195d623e6b399182c2dbcc2d38 +m blendpd $1 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 065d77195d623e6b399182c2dbcc2d38 +r blendpd $2 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 19a348215c3a67fd842adc6450659e17 +m blendpd $2 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 19a348215c3a67fd842adc6450659e17 +r blendpd $3 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 19a348215c3a67fd399182c2dbcc2d38 +m blendpd $3 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 19a348215c3a67fd399182c2dbcc2d38 +r blendpd $0 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 cb509970b8136c85d740b80eb7839b97 +m blendpd $0 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 cb509970b8136c85d740b80eb7839b97 +r blendpd $1 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 cb509970b8136c854a4bc43968bc40e5 +m blendpd $1 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 cb509970b8136c854a4bc43968bc40e5 +r blendpd $2 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 d89998df5035ed36d740b80eb7839b97 +m blendpd $2 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 d89998df5035ed36d740b80eb7839b97 +r blendpd $3 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 d89998df5035ed364a4bc43968bc40e5 +m blendpd $3 d89998df5035ed364a4bc43968bc40e5 cb509970b8136c85d740b80eb7839b97 d89998df5035ed364a4bc43968bc40e5 +r blendpd $0 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d 5ff85bc9535c191fd3a727d1a705f65d +m blendpd $0 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d 5ff85bc9535c191fd3a727d1a705f65d +r blendpd $1 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d 5ff85bc9535c191f56b01a12b0ca1583 +m blendpd $1 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d 5ff85bc9535c191f56b01a12b0ca1583 +r blendpd $2 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d f9dd4a29f8c093dbd3a727d1a705f65d +m blendpd $2 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d f9dd4a29f8c093dbd3a727d1a705f65d +r blendpd $3 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d f9dd4a29f8c093db56b01a12b0ca1583 +m blendpd $3 f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d f9dd4a29f8c093db56b01a12b0ca1583 +r blendpd $0 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 20a1bb92cbc97fe8542da4983df76c96 +m blendpd $0 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 20a1bb92cbc97fe8542da4983df76c96 +r blendpd $1 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 20a1bb92cbc97fe8398e0039cf03663d +m blendpd $1 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 20a1bb92cbc97fe8398e0039cf03663d +r blendpd $2 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 d8bc5c6dee699597542da4983df76c96 +m blendpd $2 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 d8bc5c6dee699597542da4983df76c96 +r blendpd $3 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 d8bc5c6dee699597398e0039cf03663d +m blendpd $3 d8bc5c6dee699597398e0039cf03663d 20a1bb92cbc97fe8542da4983df76c96 d8bc5c6dee699597398e0039cf03663d +r blendpd $0 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8a369dab4f9465b86e +m blendpd $0 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8a369dab4f9465b86e +r blendpd $1 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8acfaff39be272ef40 +m blendpd $1 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8acfaff39be272ef40 +r blendpd $2 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e d182c916cebc2e17369dab4f9465b86e +m blendpd $2 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e d182c916cebc2e17369dab4f9465b86e +r blendpd $3 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e d182c916cebc2e17cfaff39be272ef40 +m blendpd $3 d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e d182c916cebc2e17cfaff39be272ef40 +r blendpd $0 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 95264321bf3b68b255c2b9e2c95c9810 +m blendpd $0 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 95264321bf3b68b255c2b9e2c95c9810 +r blendpd $1 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 95264321bf3b68b2f4e06e2205236eb7 +m blendpd $1 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 95264321bf3b68b2f4e06e2205236eb7 +r blendpd $2 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 407b8d9035449b0655c2b9e2c95c9810 +m blendpd $2 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 407b8d9035449b0655c2b9e2c95c9810 +r blendpd $3 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 407b8d9035449b06f4e06e2205236eb7 +m blendpd $3 407b8d9035449b06f4e06e2205236eb7 95264321bf3b68b255c2b9e2c95c9810 407b8d9035449b06f4e06e2205236eb7 +r blendpd $0 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 019963bf7459630b8d69483df7e8c6a9 +m blendpd $0 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 019963bf7459630b8d69483df7e8c6a9 +r blendpd $1 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 019963bf7459630b84ededbc53239dcf +m blendpd $1 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 019963bf7459630b84ededbc53239dcf +r blendpd $2 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 81f2a547be8d18118d69483df7e8c6a9 +m blendpd $2 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 81f2a547be8d18118d69483df7e8c6a9 +r blendpd $3 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 81f2a547be8d181184ededbc53239dcf +m blendpd $3 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 81f2a547be8d181184ededbc53239dcf +r blendpd $0 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 0a3e0f7c75cb0842b95ed64d3b13ff64 +m blendpd $0 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 0a3e0f7c75cb0842b95ed64d3b13ff64 +r blendpd $1 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 0a3e0f7c75cb08425ba1ec54e87d39b3 +m blendpd $1 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 0a3e0f7c75cb08425ba1ec54e87d39b3 +r blendpd $2 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 f0350ca70523e0e4b95ed64d3b13ff64 +m blendpd $2 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 f0350ca70523e0e4b95ed64d3b13ff64 +r blendpd $3 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 f0350ca70523e0e45ba1ec54e87d39b3 +m blendpd $3 f0350ca70523e0e45ba1ec54e87d39b3 0a3e0f7c75cb0842b95ed64d3b13ff64 f0350ca70523e0e45ba1ec54e87d39b3 +r blendps $0 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c9202b76ddefcb0ebfe6e +m blendps $0 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c9202b76ddefcb0ebfe6e +r blendps $1 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c9202b76ddefce13dfe91 +m blendps $1 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c9202b76ddefce13dfe91 +r blendps $2 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c920254cae7d5b0ebfe6e +m blendps $2 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c920254cae7d5b0ebfe6e +r blendps $3 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c920254cae7d5e13dfe91 +m blendps $3 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c55f1c920254cae7d5e13dfe91 +r blendps $4 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312ab76ddefcb0ebfe6e +m blendps $4 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312ab76ddefcb0ebfe6e +r blendps $5 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312ab76ddefce13dfe91 +m blendps $5 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312ab76ddefce13dfe91 +r blendps $6 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312a54cae7d5b0ebfe6e +m blendps $6 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312a54cae7d5b0ebfe6e +r blendps $7 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312a54cae7d5e13dfe91 +m blendps $7 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0a5f45c5a893312a54cae7d5e13dfe91 +r blendps $8 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c9202b76ddefcb0ebfe6e +m blendps $8 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c9202b76ddefcb0ebfe6e +r blendps $9 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c9202b76ddefce13dfe91 +m blendps $9 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c9202b76ddefce13dfe91 +r blendps $10 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c920254cae7d5b0ebfe6e +m blendps $10 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c920254cae7d5b0ebfe6e +r blendps $11 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c920254cae7d5e13dfe91 +m blendps $11 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1c5f1c920254cae7d5e13dfe91 +r blendps $12 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312ab76ddefcb0ebfe6e +m blendps $12 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312ab76ddefcb0ebfe6e +r blendps $13 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312ab76ddefce13dfe91 +m blendps $13 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312ab76ddefce13dfe91 +r blendps $14 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312a54cae7d5b0ebfe6e +m blendps $14 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312a54cae7d5b0ebfe6e +r blendps $15 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312a54cae7d5e13dfe91 +m blendps $15 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e e98ebd1ca893312a54cae7d5e13dfe91 +r blendps $0 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff86262dd37727c80f3 +m blendps $0 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff86262dd37727c80f3 +r blendps $1 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff86262dd375a70a792 +m blendps $1 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff86262dd375a70a792 +r blendps $2 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff84d325b2d727c80f3 +m blendps $2 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff84d325b2d727c80f3 +r blendps $3 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff84d325b2d5a70a792 +m blendps $3 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104ced83ff84d325b2d5a70a792 +r blendps $4 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845906262dd37727c80f3 +m blendps $4 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845906262dd37727c80f3 +r blendps $5 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845906262dd375a70a792 +m blendps $5 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845906262dd375a70a792 +r blendps $6 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845904d325b2d727c80f3 +m blendps $6 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845904d325b2d727c80f3 +r blendps $7 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845904d325b2d5a70a792 +m blendps $7 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 5f490104406845904d325b2d5a70a792 +r blendps $8 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff86262dd37727c80f3 +m blendps $8 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff86262dd37727c80f3 +r blendps $9 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff86262dd375a70a792 +m blendps $9 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff86262dd375a70a792 +r blendps $10 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff84d325b2d727c80f3 +m blendps $10 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff84d325b2d727c80f3 +r blendps $11 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff84d325b2d5a70a792 +m blendps $11 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713ced83ff84d325b2d5a70a792 +r blendps $12 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845906262dd37727c80f3 +m blendps $12 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845906262dd37727c80f3 +r blendps $13 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845906262dd375a70a792 +m blendps $13 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845906262dd375a70a792 +r blendps $14 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845904d325b2d727c80f3 +m blendps $14 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845904d325b2d727c80f3 +r blendps $15 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845904d325b2d5a70a792 +m blendps $15 c84ab713406845904d325b2d5a70a792 5f490104ced83ff86262dd37727c80f3 c84ab713406845904d325b2d5a70a792 +r blendps $0 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d096084deb9ed0411e +m blendps $0 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d096084deb9ed0411e +r blendps $1 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d096084deb6d21f1e5 +m blendps $1 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d096084deb6d21f1e5 +r blendps $2 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d021a6c3479ed0411e +m blendps $2 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d021a6c3479ed0411e +r blendps $3 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d021a6c3476d21f1e5 +m blendps $3 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da65c8c49d021a6c3476d21f1e5 +r blendps $4 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c196084deb9ed0411e +m blendps $4 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c196084deb9ed0411e +r blendps $5 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c196084deb6d21f1e5 +m blendps $5 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c196084deb6d21f1e5 +r blendps $6 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c121a6c3479ed0411e +m blendps $6 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c121a6c3479ed0411e +r blendps $7 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c121a6c3476d21f1e5 +m blendps $7 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 63483da66b2e58c121a6c3476d21f1e5 +r blendps $8 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d096084deb9ed0411e +m blendps $8 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d096084deb9ed0411e +r blendps $9 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d096084deb6d21f1e5 +m blendps $9 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d096084deb6d21f1e5 +r blendps $10 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d021a6c3479ed0411e +m blendps $10 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d021a6c3479ed0411e +r blendps $11 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d021a6c3476d21f1e5 +m blendps $11 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f65c8c49d021a6c3476d21f1e5 +r blendps $12 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c196084deb9ed0411e +m blendps $12 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c196084deb9ed0411e +r blendps $13 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c196084deb6d21f1e5 +m blendps $13 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c196084deb6d21f1e5 +r blendps $14 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c121a6c3479ed0411e +m blendps $14 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c121a6c3479ed0411e +r blendps $15 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c121a6c3476d21f1e5 +m blendps $15 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e e9b5f3f66b2e58c121a6c3476d21f1e5 +r blendps $0 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec352e2dac0350f6fd1c +m blendps $0 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec352e2dac0350f6fd1c +r blendps $1 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec352e2dac03395c98b4 +m blendps $1 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec352e2dac03395c98b4 +r blendps $2 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec35acf29b0f50f6fd1c +m blendps $2 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec35acf29b0f50f6fd1c +r blendps $3 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec35acf29b0f395c98b4 +m blendps $3 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718a8c3ec35acf29b0f395c98b4 +r blendps $4 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86a2e2dac0350f6fd1c +m blendps $4 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86a2e2dac0350f6fd1c +r blendps $5 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86a2e2dac03395c98b4 +m blendps $5 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86a2e2dac03395c98b4 +r blendps $6 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86aacf29b0f50f6fd1c +m blendps $6 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86aacf29b0f50f6fd1c +r blendps $7 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86aacf29b0f395c98b4 +m blendps $7 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c 73a8f718c572a86aacf29b0f395c98b4 +r blendps $8 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec352e2dac0350f6fd1c +m blendps $8 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec352e2dac0350f6fd1c +r blendps $9 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec352e2dac03395c98b4 +m blendps $9 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec352e2dac03395c98b4 +r blendps $10 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec35acf29b0f50f6fd1c +m blendps $10 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec35acf29b0f50f6fd1c +r blendps $11 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec35acf29b0f395c98b4 +m blendps $11 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33a8c3ec35acf29b0f395c98b4 +r blendps $12 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86a2e2dac0350f6fd1c +m blendps $12 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86a2e2dac0350f6fd1c +r blendps $13 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86a2e2dac03395c98b4 +m blendps $13 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86a2e2dac03395c98b4 +r blendps $14 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86aacf29b0f50f6fd1c +m blendps $14 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86aacf29b0f50f6fd1c +r blendps $15 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86aacf29b0f395c98b4 +m blendps $15 a81b6e33c572a86aacf29b0f395c98b4 73a8f718a8c3ec352e2dac0350f6fd1c a81b6e33c572a86aacf29b0f395c98b4 +r blendps $0 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4089b756aa3f77018 +m blendps $0 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4089b756aa3f77018 +r blendps $1 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4089b756ad82e582b +m blendps $1 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4089b756ad82e582b +r blendps $2 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4c9e25f72a3f77018 +m blendps $2 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4c9e25f72a3f77018 +r blendps $3 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4c9e25f72d82e582b +m blendps $3 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac54b0966d4c9e25f72d82e582b +r blendps $4 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37089b756aa3f77018 +m blendps $4 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37089b756aa3f77018 +r blendps $5 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37089b756ad82e582b +m blendps $5 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37089b756ad82e582b +r blendps $6 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37c9e25f72a3f77018 +m blendps $6 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37c9e25f72a3f77018 +r blendps $7 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37c9e25f72d82e582b +m blendps $7 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 ecb42ac5e9bf6f37c9e25f72d82e582b +r blendps $8 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4089b756aa3f77018 +m blendps $8 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4089b756aa3f77018 +r blendps $9 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4089b756ad82e582b +m blendps $9 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4089b756ad82e582b +r blendps $10 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4c9e25f72a3f77018 +m blendps $10 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4c9e25f72a3f77018 +r blendps $11 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4c9e25f72d82e582b +m blendps $11 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c825344b0966d4c9e25f72d82e582b +r blendps $12 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37089b756aa3f77018 +m blendps $12 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37089b756aa3f77018 +r blendps $13 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37089b756ad82e582b +m blendps $13 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37089b756ad82e582b +r blendps $14 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37c9e25f72a3f77018 +m blendps $14 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37c9e25f72a3f77018 +r blendps $15 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37c9e25f72d82e582b +m blendps $15 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 61c82534e9bf6f37c9e25f72d82e582b +r blendps $0 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf159ff1f240eb3e1553f +m blendps $0 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf159ff1f240eb3e1553f +r blendps $1 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf159ff1f240e66a2ec77 +m blendps $1 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf159ff1f240e66a2ec77 +r blendps $2 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf15956428c5ab3e1553f +m blendps $2 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf15956428c5ab3e1553f +r blendps $3 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf15956428c5a66a2ec77 +m blendps $3 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad218e4ebf15956428c5a66a2ec77 +r blendps $4 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead3ff1f240eb3e1553f +m blendps $4 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead3ff1f240eb3e1553f +r blendps $5 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead3ff1f240e66a2ec77 +m blendps $5 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead3ff1f240e66a2ec77 +r blendps $6 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead356428c5ab3e1553f +m blendps $6 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead356428c5ab3e1553f +r blendps $7 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead356428c5a66a2ec77 +m blendps $7 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 28bad21873a2ead356428c5a66a2ec77 +r blendps $8 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf159ff1f240eb3e1553f +m blendps $8 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf159ff1f240eb3e1553f +r blendps $9 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf159ff1f240e66a2ec77 +m blendps $9 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf159ff1f240e66a2ec77 +r blendps $10 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf15956428c5ab3e1553f +m blendps $10 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf15956428c5ab3e1553f +r blendps $11 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf15956428c5a66a2ec77 +m blendps $11 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f071367e4ebf15956428c5a66a2ec77 +r blendps $12 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead3ff1f240eb3e1553f +m blendps $12 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead3ff1f240eb3e1553f +r blendps $13 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead3ff1f240e66a2ec77 +m blendps $13 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead3ff1f240e66a2ec77 +r blendps $14 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead356428c5ab3e1553f +m blendps $14 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead356428c5ab3e1553f +r blendps $15 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead356428c5a66a2ec77 +m blendps $15 6f07136773a2ead356428c5a66a2ec77 28bad218e4ebf159ff1f240eb3e1553f 6f07136773a2ead356428c5a66a2ec77 +r blendps $0 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6fee8536da9dbf68bc +m blendps $0 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6fee8536da9dbf68bc +r blendps $1 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6fee8536daffc411c4 +m blendps $1 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6fee8536daffc411c4 +r blendps $2 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6f2ddd9db49dbf68bc +m blendps $2 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6f2ddd9db49dbf68bc +r blendps $3 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6f2ddd9db4ffc411c4 +m blendps $3 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f0cf4ca6f2ddd9db4ffc411c4 +r blendps $4 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654ebee8536da9dbf68bc +m blendps $4 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654ebee8536da9dbf68bc +r blendps $5 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654ebee8536daffc411c4 +m blendps $5 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654ebee8536daffc411c4 +r blendps $6 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654eb2ddd9db49dbf68bc +m blendps $6 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654eb2ddd9db49dbf68bc +r blendps $7 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654eb2ddd9db4ffc411c4 +m blendps $7 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 8404eb7f00a654eb2ddd9db4ffc411c4 +r blendps $8 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6fee8536da9dbf68bc +m blendps $8 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6fee8536da9dbf68bc +r blendps $9 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6fee8536daffc411c4 +m blendps $9 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6fee8536daffc411c4 +r blendps $10 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6f2ddd9db49dbf68bc +m blendps $10 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6f2ddd9db49dbf68bc +r blendps $11 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6f2ddd9db4ffc411c4 +m blendps $11 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 302634370cf4ca6f2ddd9db4ffc411c4 +r blendps $12 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654ebee8536da9dbf68bc +m blendps $12 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654ebee8536da9dbf68bc +r blendps $13 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654ebee8536daffc411c4 +m blendps $13 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654ebee8536daffc411c4 +r blendps $14 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654eb2ddd9db49dbf68bc +m blendps $14 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654eb2ddd9db49dbf68bc +r blendps $15 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654eb2ddd9db4ffc411c4 +m blendps $15 3026343700a654eb2ddd9db4ffc411c4 8404eb7f0cf4ca6fee8536da9dbf68bc 3026343700a654eb2ddd9db4ffc411c4 +r blendps $0 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc2b39925ba7d9d67bc +m blendps $0 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc2b39925ba7d9d67bc +r blendps $1 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc2b39925bac1a1833d +m blendps $1 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc2b39925bac1a1833d +r blendps $2 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc22c810e6d7d9d67bc +m blendps $2 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc22c810e6d7d9d67bc +r blendps $3 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc22c810e6dc1a1833d +m blendps $3 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf726562b02dc22c810e6dc1a1833d +r blendps $4 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2ab39925ba7d9d67bc +m blendps $4 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2ab39925ba7d9d67bc +r blendps $5 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2ab39925bac1a1833d +m blendps $5 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2ab39925bac1a1833d +r blendps $6 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2a2c810e6d7d9d67bc +m blendps $6 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2a2c810e6d7d9d67bc +r blendps $7 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2a2c810e6dc1a1833d +m blendps $7 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc 5cdf72652c57ea2a2c810e6dc1a1833d +r blendps $8 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc2b39925ba7d9d67bc +m blendps $8 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc2b39925ba7d9d67bc +r blendps $9 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc2b39925bac1a1833d +m blendps $9 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc2b39925bac1a1833d +r blendps $10 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc22c810e6d7d9d67bc +m blendps $10 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc22c810e6d7d9d67bc +r blendps $11 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc22c810e6dc1a1833d +m blendps $11 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f62b02dc22c810e6dc1a1833d +r blendps $12 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2ab39925ba7d9d67bc +m blendps $12 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2ab39925ba7d9d67bc +r blendps $13 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2ab39925bac1a1833d +m blendps $13 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2ab39925bac1a1833d +r blendps $14 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2a2c810e6d7d9d67bc +m blendps $14 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2a2c810e6d7d9d67bc +r blendps $15 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2a2c810e6dc1a1833d +m blendps $15 ff6f850f2c57ea2a2c810e6dc1a1833d 5cdf726562b02dc2b39925ba7d9d67bc ff6f850f2c57ea2a2c810e6dc1a1833d +r blendps $0 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff28276f9a6e880c6b +m blendps $0 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff28276f9a6e880c6b +r blendps $1 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff28276f9ac544fd0f +m blendps $1 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff28276f9ac544fd0f +r blendps $2 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff2ef85b6f6e880c6b +m blendps $2 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff2ef85b6f6e880c6b +r blendps $3 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff2ef85b6fc544fd0f +m blendps $3 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761367fac55ff2ef85b6fc544fd0f +r blendps $4 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d28276f9a6e880c6b +m blendps $4 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d28276f9a6e880c6b +r blendps $5 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d28276f9ac544fd0f +m blendps $5 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d28276f9ac544fd0f +r blendps $6 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d2ef85b6f6e880c6b +m blendps $6 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d2ef85b6f6e880c6b +r blendps $7 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d2ef85b6fc544fd0f +m blendps $7 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 0c9761369242e83d2ef85b6fc544fd0f +r blendps $8 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff28276f9a6e880c6b +m blendps $8 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff28276f9a6e880c6b +r blendps $9 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff28276f9ac544fd0f +m blendps $9 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff28276f9ac544fd0f +r blendps $10 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff2ef85b6f6e880c6b +m blendps $10 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff2ef85b6f6e880c6b +r blendps $11 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff2ef85b6fc544fd0f +m blendps $11 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d7fac55ff2ef85b6fc544fd0f +r blendps $12 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d28276f9a6e880c6b +m blendps $12 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d28276f9a6e880c6b +r blendps $13 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d28276f9ac544fd0f +m blendps $13 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d28276f9ac544fd0f +r blendps $14 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d2ef85b6f6e880c6b +m blendps $14 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d2ef85b6f6e880c6b +r blendps $15 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d2ef85b6fc544fd0f +m blendps $15 372f015d9242e83d2ef85b6fc544fd0f 0c9761367fac55ff28276f9a6e880c6b 372f015d9242e83d2ef85b6fc544fd0f +r blendps $0 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd22bfa8f668c8b14f4 +m blendps $0 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd22bfa8f668c8b14f4 +r blendps $1 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd22bfa8f6629ba3c66 +m blendps $1 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd22bfa8f6629ba3c66 +r blendps $2 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd20e0f01a88c8b14f4 +m blendps $2 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd20e0f01a88c8b14f4 +r blendps $3 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd20e0f01a829ba3c66 +m blendps $3 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65e01737fd20e0f01a829ba3c66 +r blendps $4 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf2bfa8f668c8b14f4 +m blendps $4 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf2bfa8f668c8b14f4 +r blendps $5 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf2bfa8f6629ba3c66 +m blendps $5 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf2bfa8f6629ba3c66 +r blendps $6 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf0e0f01a88c8b14f4 +m blendps $6 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf0e0f01a88c8b14f4 +r blendps $7 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf0e0f01a829ba3c66 +m blendps $7 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 f078b65ecef18acf0e0f01a829ba3c66 +r blendps $8 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd22bfa8f668c8b14f4 +m blendps $8 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd22bfa8f668c8b14f4 +r blendps $9 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd22bfa8f6629ba3c66 +m blendps $9 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd22bfa8f6629ba3c66 +r blendps $10 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd20e0f01a88c8b14f4 +m blendps $10 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd20e0f01a88c8b14f4 +r blendps $11 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd20e0f01a829ba3c66 +m blendps $11 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38d01737fd20e0f01a829ba3c66 +r blendps $12 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf2bfa8f668c8b14f4 +m blendps $12 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf2bfa8f668c8b14f4 +r blendps $13 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf2bfa8f6629ba3c66 +m blendps $13 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf2bfa8f6629ba3c66 +r blendps $14 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf0e0f01a88c8b14f4 +m blendps $14 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf0e0f01a88c8b14f4 +r blendps $15 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf0e0f01a829ba3c66 +m blendps $15 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 36b2a38dcef18acf0e0f01a829ba3c66 +r pblendw $0 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010bf4b23b84 +m pblendw $0 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010bf4b23b84 +r pblendw $1 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010bf4b2fc6d +m pblendw $1 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010bf4b2fc6d +r pblendw $2 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010b090d3b84 +m pblendw $2 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010b090d3b84 +r pblendw $3 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010b090dfc6d +m pblendw $3 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df010b090dfc6d +r pblendw $4 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03f4b23b84 +m pblendw $4 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03f4b23b84 +r pblendw $5 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03f4b2fc6d +m pblendw $5 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03f4b2fc6d +r pblendw $6 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03090d3b84 +m pblendw $6 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03090d3b84 +r pblendw $7 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03090dfc6d +m pblendw $7 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e796df7a03090dfc6d +r pblendw $8 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010bf4b23b84 +m pblendw $8 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010bf4b23b84 +r pblendw $9 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010bf4b2fc6d +m pblendw $9 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010bf4b2fc6d +r pblendw $10 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010b090d3b84 +m pblendw $10 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010b090d3b84 +r pblendw $11 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010b090dfc6d +m pblendw $11 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa92010b090dfc6d +r pblendw $12 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03f4b23b84 +m pblendw $12 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03f4b23b84 +r pblendw $13 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03f4b2fc6d +m pblendw $13 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03f4b2fc6d +r pblendw $14 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03090d3b84 +m pblendw $14 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03090d3b84 +r pblendw $15 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03090dfc6d +m pblendw $15 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d498492e7e7aa927a03090dfc6d +r pblendw $16 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010bf4b23b84 +m pblendw $16 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010bf4b23b84 +r pblendw $17 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010bf4b2fc6d +m pblendw $17 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010bf4b2fc6d +r pblendw $18 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010b090d3b84 +m pblendw $18 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010b090d3b84 +r pblendw $19 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010b090dfc6d +m pblendw $19 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df010b090dfc6d +r pblendw $20 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03f4b23b84 +m pblendw $20 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03f4b23b84 +r pblendw $21 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03f4b2fc6d +m pblendw $21 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03f4b2fc6d +r pblendw $22 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03090d3b84 +m pblendw $22 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03090d3b84 +r pblendw $23 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03090dfc6d +m pblendw $23 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8d96df7a03090dfc6d +r pblendw $24 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010bf4b23b84 +m pblendw $24 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010bf4b23b84 +r pblendw $25 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010bf4b2fc6d +m pblendw $25 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010bf4b2fc6d +r pblendw $26 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010b090d3b84 +m pblendw $26 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010b090d3b84 +r pblendw $27 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010b090dfc6d +m pblendw $27 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa92010b090dfc6d +r pblendw $28 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03f4b23b84 +m pblendw $28 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03f4b23b84 +r pblendw $29 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03f4b2fc6d +m pblendw $29 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03f4b2fc6d +r pblendw $30 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03090d3b84 +m pblendw $30 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03090d3b84 +r pblendw $31 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03090dfc6d +m pblendw $31 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d4984920b8daa927a03090dfc6d +r pblendw $32 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010bf4b23b84 +m pblendw $32 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010bf4b23b84 +r pblendw $33 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010bf4b2fc6d +m pblendw $33 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010bf4b2fc6d +r pblendw $34 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010b090d3b84 +m pblendw $34 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010b090d3b84 +r pblendw $35 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010b090dfc6d +m pblendw $35 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df010b090dfc6d +r pblendw $36 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03f4b23b84 +m pblendw $36 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03f4b23b84 +r pblendw $37 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03f4b2fc6d +m pblendw $37 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03f4b2fc6d +r pblendw $38 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03090d3b84 +m pblendw $38 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03090d3b84 +r pblendw $39 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03090dfc6d +m pblendw $39 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e796df7a03090dfc6d +r pblendw $40 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010bf4b23b84 +m pblendw $40 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010bf4b23b84 +r pblendw $41 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010bf4b2fc6d +m pblendw $41 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010bf4b2fc6d +r pblendw $42 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010b090d3b84 +m pblendw $42 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010b090d3b84 +r pblendw $43 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010b090dfc6d +m pblendw $43 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa92010b090dfc6d +r pblendw $44 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03f4b23b84 +m pblendw $44 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03f4b23b84 +r pblendw $45 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03f4b2fc6d +m pblendw $45 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03f4b2fc6d +r pblendw $46 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03090d3b84 +m pblendw $46 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03090d3b84 +r pblendw $47 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03090dfc6d +m pblendw $47 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df3e7e7aa927a03090dfc6d +r pblendw $48 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010bf4b23b84 +m pblendw $48 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010bf4b23b84 +r pblendw $49 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010bf4b2fc6d +m pblendw $49 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010bf4b2fc6d +r pblendw $50 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010b090d3b84 +m pblendw $50 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010b090d3b84 +r pblendw $51 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010b090dfc6d +m pblendw $51 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df010b090dfc6d +r pblendw $52 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03f4b23b84 +m pblendw $52 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03f4b23b84 +r pblendw $53 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03f4b2fc6d +m pblendw $53 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03f4b2fc6d +r pblendw $54 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03090d3b84 +m pblendw $54 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03090d3b84 +r pblendw $55 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03090dfc6d +m pblendw $55 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8d96df7a03090dfc6d +r pblendw $56 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010bf4b23b84 +m pblendw $56 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010bf4b23b84 +r pblendw $57 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010bf4b2fc6d +m pblendw $57 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010bf4b2fc6d +r pblendw $58 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010b090d3b84 +m pblendw $58 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010b090d3b84 +r pblendw $59 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010b090dfc6d +m pblendw $59 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa92010b090dfc6d +r pblendw $60 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03f4b23b84 +m pblendw $60 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03f4b23b84 +r pblendw $61 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03f4b2fc6d +m pblendw $61 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03f4b2fc6d +r pblendw $62 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03090d3b84 +m pblendw $62 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03090d3b84 +r pblendw $63 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03090dfc6d +m pblendw $63 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6d497df30b8daa927a03090dfc6d +r pblendw $64 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010bf4b23b84 +m pblendw $64 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010bf4b23b84 +r pblendw $65 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010bf4b2fc6d +m pblendw $65 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010bf4b2fc6d +r pblendw $66 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010b090d3b84 +m pblendw $66 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010b090d3b84 +r pblendw $67 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010b090dfc6d +m pblendw $67 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df010b090dfc6d +r pblendw $68 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03f4b23b84 +m pblendw $68 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03f4b23b84 +r pblendw $69 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03f4b2fc6d +m pblendw $69 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03f4b2fc6d +r pblendw $70 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03090d3b84 +m pblendw $70 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03090d3b84 +r pblendw $71 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03090dfc6d +m pblendw $71 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e796df7a03090dfc6d +r pblendw $72 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010bf4b23b84 +m pblendw $72 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010bf4b23b84 +r pblendw $73 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010bf4b2fc6d +m pblendw $73 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010bf4b2fc6d +r pblendw $74 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010b090d3b84 +m pblendw $74 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010b090d3b84 +r pblendw $75 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010b090dfc6d +m pblendw $75 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa92010b090dfc6d +r pblendw $76 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03f4b23b84 +m pblendw $76 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03f4b23b84 +r pblendw $77 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03f4b2fc6d +m pblendw $77 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03f4b2fc6d +r pblendw $78 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03090d3b84 +m pblendw $78 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03090d3b84 +r pblendw $79 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03090dfc6d +m pblendw $79 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a098492e7e7aa927a03090dfc6d +r pblendw $80 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010bf4b23b84 +m pblendw $80 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010bf4b23b84 +r pblendw $81 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010bf4b2fc6d +m pblendw $81 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010bf4b2fc6d +r pblendw $82 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010b090d3b84 +m pblendw $82 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010b090d3b84 +r pblendw $83 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010b090dfc6d +m pblendw $83 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df010b090dfc6d +r pblendw $84 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03f4b23b84 +m pblendw $84 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03f4b23b84 +r pblendw $85 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03f4b2fc6d +m pblendw $85 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03f4b2fc6d +r pblendw $86 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03090d3b84 +m pblendw $86 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03090d3b84 +r pblendw $87 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03090dfc6d +m pblendw $87 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8d96df7a03090dfc6d +r pblendw $88 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010bf4b23b84 +m pblendw $88 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010bf4b23b84 +r pblendw $89 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010bf4b2fc6d +m pblendw $89 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010bf4b2fc6d +r pblendw $90 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010b090d3b84 +m pblendw $90 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010b090d3b84 +r pblendw $91 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010b090dfc6d +m pblendw $91 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa92010b090dfc6d +r pblendw $92 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03f4b23b84 +m pblendw $92 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03f4b23b84 +r pblendw $93 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03f4b2fc6d +m pblendw $93 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03f4b2fc6d +r pblendw $94 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03090d3b84 +m pblendw $94 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03090d3b84 +r pblendw $95 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03090dfc6d +m pblendw $95 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a0984920b8daa927a03090dfc6d +r pblendw $96 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010bf4b23b84 +m pblendw $96 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010bf4b23b84 +r pblendw $97 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010bf4b2fc6d +m pblendw $97 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010bf4b2fc6d +r pblendw $98 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010b090d3b84 +m pblendw $98 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010b090d3b84 +r pblendw $99 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010b090dfc6d +m pblendw $99 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df010b090dfc6d +r pblendw $100 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03f4b23b84 +m pblendw $100 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03f4b23b84 +r pblendw $101 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03f4b2fc6d +m pblendw $101 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03f4b2fc6d +r pblendw $102 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03090d3b84 +m pblendw $102 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03090d3b84 +r pblendw $103 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03090dfc6d +m pblendw $103 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e796df7a03090dfc6d +r pblendw $104 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010bf4b23b84 +m pblendw $104 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010bf4b23b84 +r pblendw $105 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010bf4b2fc6d +m pblendw $105 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010bf4b2fc6d +r pblendw $106 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010b090d3b84 +m pblendw $106 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010b090d3b84 +r pblendw $107 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010b090dfc6d +m pblendw $107 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa92010b090dfc6d +r pblendw $108 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03f4b23b84 +m pblendw $108 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03f4b23b84 +r pblendw $109 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03f4b2fc6d +m pblendw $109 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03f4b2fc6d +r pblendw $110 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03090d3b84 +m pblendw $110 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03090d3b84 +r pblendw $111 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03090dfc6d +m pblendw $111 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df3e7e7aa927a03090dfc6d +r pblendw $112 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010bf4b23b84 +m pblendw $112 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010bf4b23b84 +r pblendw $113 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010bf4b2fc6d +m pblendw $113 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010bf4b2fc6d +r pblendw $114 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010b090d3b84 +m pblendw $114 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010b090d3b84 +r pblendw $115 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010b090dfc6d +m pblendw $115 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df010b090dfc6d +r pblendw $116 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03f4b23b84 +m pblendw $116 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03f4b23b84 +r pblendw $117 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03f4b2fc6d +m pblendw $117 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03f4b2fc6d +r pblendw $118 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03090d3b84 +m pblendw $118 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03090d3b84 +r pblendw $119 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03090dfc6d +m pblendw $119 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8d96df7a03090dfc6d +r pblendw $120 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010bf4b23b84 +m pblendw $120 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010bf4b23b84 +r pblendw $121 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010bf4b2fc6d +m pblendw $121 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010bf4b2fc6d +r pblendw $122 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010b090d3b84 +m pblendw $122 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010b090d3b84 +r pblendw $123 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010b090dfc6d +m pblendw $123 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa92010b090dfc6d +r pblendw $124 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03f4b23b84 +m pblendw $124 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03f4b23b84 +r pblendw $125 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03f4b2fc6d +m pblendw $125 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03f4b2fc6d +r pblendw $126 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03090d3b84 +m pblendw $126 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03090d3b84 +r pblendw $127 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03090dfc6d +m pblendw $127 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 65ce6a097df30b8daa927a03090dfc6d +r pblendw $128 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010bf4b23b84 +m pblendw $128 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010bf4b23b84 +r pblendw $129 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010bf4b2fc6d +m pblendw $129 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010bf4b2fc6d +r pblendw $130 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010b090d3b84 +m pblendw $130 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010b090d3b84 +r pblendw $131 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010b090dfc6d +m pblendw $131 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df010b090dfc6d +r pblendw $132 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03f4b23b84 +m pblendw $132 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03f4b23b84 +r pblendw $133 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03f4b2fc6d +m pblendw $133 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03f4b2fc6d +r pblendw $134 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03090d3b84 +m pblendw $134 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03090d3b84 +r pblendw $135 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03090dfc6d +m pblendw $135 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e796df7a03090dfc6d +r pblendw $136 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010bf4b23b84 +m pblendw $136 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010bf4b23b84 +r pblendw $137 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010bf4b2fc6d +m pblendw $137 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010bf4b2fc6d +r pblendw $138 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010b090d3b84 +m pblendw $138 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010b090d3b84 +r pblendw $139 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010b090dfc6d +m pblendw $139 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa92010b090dfc6d +r pblendw $140 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03f4b23b84 +m pblendw $140 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03f4b23b84 +r pblendw $141 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03f4b2fc6d +m pblendw $141 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03f4b2fc6d +r pblendw $142 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03090d3b84 +m pblendw $142 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03090d3b84 +r pblendw $143 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03090dfc6d +m pblendw $143 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d498492e7e7aa927a03090dfc6d +r pblendw $144 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010bf4b23b84 +m pblendw $144 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010bf4b23b84 +r pblendw $145 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010bf4b2fc6d +m pblendw $145 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010bf4b2fc6d +r pblendw $146 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010b090d3b84 +m pblendw $146 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010b090d3b84 +r pblendw $147 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010b090dfc6d +m pblendw $147 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df010b090dfc6d +r pblendw $148 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03f4b23b84 +m pblendw $148 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03f4b23b84 +r pblendw $149 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03f4b2fc6d +m pblendw $149 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03f4b2fc6d +r pblendw $150 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03090d3b84 +m pblendw $150 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03090d3b84 +r pblendw $151 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03090dfc6d +m pblendw $151 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8d96df7a03090dfc6d +r pblendw $152 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010bf4b23b84 +m pblendw $152 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010bf4b23b84 +r pblendw $153 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010bf4b2fc6d +m pblendw $153 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010bf4b2fc6d +r pblendw $154 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010b090d3b84 +m pblendw $154 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010b090d3b84 +r pblendw $155 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010b090dfc6d +m pblendw $155 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa92010b090dfc6d +r pblendw $156 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03f4b23b84 +m pblendw $156 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03f4b23b84 +r pblendw $157 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03f4b2fc6d +m pblendw $157 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03f4b2fc6d +r pblendw $158 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03090d3b84 +m pblendw $158 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03090d3b84 +r pblendw $159 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03090dfc6d +m pblendw $159 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d4984920b8daa927a03090dfc6d +r pblendw $160 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010bf4b23b84 +m pblendw $160 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010bf4b23b84 +r pblendw $161 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010bf4b2fc6d +m pblendw $161 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010bf4b2fc6d +r pblendw $162 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010b090d3b84 +m pblendw $162 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010b090d3b84 +r pblendw $163 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010b090dfc6d +m pblendw $163 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df010b090dfc6d +r pblendw $164 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03f4b23b84 +m pblendw $164 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03f4b23b84 +r pblendw $165 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03f4b2fc6d +m pblendw $165 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03f4b2fc6d +r pblendw $166 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03090d3b84 +m pblendw $166 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03090d3b84 +r pblendw $167 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03090dfc6d +m pblendw $167 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e796df7a03090dfc6d +r pblendw $168 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010bf4b23b84 +m pblendw $168 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010bf4b23b84 +r pblendw $169 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010bf4b2fc6d +m pblendw $169 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010bf4b2fc6d +r pblendw $170 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010b090d3b84 +m pblendw $170 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010b090d3b84 +r pblendw $171 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010b090dfc6d +m pblendw $171 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa92010b090dfc6d +r pblendw $172 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03f4b23b84 +m pblendw $172 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03f4b23b84 +r pblendw $173 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03f4b2fc6d +m pblendw $173 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03f4b2fc6d +r pblendw $174 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03090d3b84 +m pblendw $174 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03090d3b84 +r pblendw $175 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03090dfc6d +m pblendw $175 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df3e7e7aa927a03090dfc6d +r pblendw $176 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010bf4b23b84 +m pblendw $176 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010bf4b23b84 +r pblendw $177 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010bf4b2fc6d +m pblendw $177 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010bf4b2fc6d +r pblendw $178 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010b090d3b84 +m pblendw $178 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010b090d3b84 +r pblendw $179 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010b090dfc6d +m pblendw $179 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df010b090dfc6d +r pblendw $180 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03f4b23b84 +m pblendw $180 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03f4b23b84 +r pblendw $181 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03f4b2fc6d +m pblendw $181 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03f4b2fc6d +r pblendw $182 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03090d3b84 +m pblendw $182 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03090d3b84 +r pblendw $183 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03090dfc6d +m pblendw $183 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8d96df7a03090dfc6d +r pblendw $184 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010bf4b23b84 +m pblendw $184 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010bf4b23b84 +r pblendw $185 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010bf4b2fc6d +m pblendw $185 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010bf4b2fc6d +r pblendw $186 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010b090d3b84 +m pblendw $186 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010b090d3b84 +r pblendw $187 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010b090dfc6d +m pblendw $187 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa92010b090dfc6d +r pblendw $188 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03f4b23b84 +m pblendw $188 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03f4b23b84 +r pblendw $189 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03f4b2fc6d +m pblendw $189 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03f4b2fc6d +r pblendw $190 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03090d3b84 +m pblendw $190 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03090d3b84 +r pblendw $191 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03090dfc6d +m pblendw $191 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436d497df30b8daa927a03090dfc6d +r pblendw $192 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010bf4b23b84 +m pblendw $192 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010bf4b23b84 +r pblendw $193 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010bf4b2fc6d +m pblendw $193 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010bf4b2fc6d +r pblendw $194 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010b090d3b84 +m pblendw $194 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010b090d3b84 +r pblendw $195 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010b090dfc6d +m pblendw $195 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df010b090dfc6d +r pblendw $196 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03f4b23b84 +m pblendw $196 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03f4b23b84 +r pblendw $197 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03f4b2fc6d +m pblendw $197 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03f4b2fc6d +r pblendw $198 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03090d3b84 +m pblendw $198 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03090d3b84 +r pblendw $199 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03090dfc6d +m pblendw $199 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e796df7a03090dfc6d +r pblendw $200 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010bf4b23b84 +m pblendw $200 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010bf4b23b84 +r pblendw $201 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010bf4b2fc6d +m pblendw $201 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010bf4b2fc6d +r pblendw $202 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010b090d3b84 +m pblendw $202 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010b090d3b84 +r pblendw $203 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010b090dfc6d +m pblendw $203 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa92010b090dfc6d +r pblendw $204 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03f4b23b84 +m pblendw $204 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03f4b23b84 +r pblendw $205 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03f4b2fc6d +m pblendw $205 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03f4b2fc6d +r pblendw $206 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03090d3b84 +m pblendw $206 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03090d3b84 +r pblendw $207 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03090dfc6d +m pblendw $207 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a098492e7e7aa927a03090dfc6d +r pblendw $208 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010bf4b23b84 +m pblendw $208 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010bf4b23b84 +r pblendw $209 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010bf4b2fc6d +m pblendw $209 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010bf4b2fc6d +r pblendw $210 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010b090d3b84 +m pblendw $210 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010b090d3b84 +r pblendw $211 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010b090dfc6d +m pblendw $211 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df010b090dfc6d +r pblendw $212 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03f4b23b84 +m pblendw $212 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03f4b23b84 +r pblendw $213 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03f4b2fc6d +m pblendw $213 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03f4b2fc6d +r pblendw $214 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03090d3b84 +m pblendw $214 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03090d3b84 +r pblendw $215 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03090dfc6d +m pblendw $215 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8d96df7a03090dfc6d +r pblendw $216 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010bf4b23b84 +m pblendw $216 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010bf4b23b84 +r pblendw $217 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010bf4b2fc6d +m pblendw $217 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010bf4b2fc6d +r pblendw $218 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010b090d3b84 +m pblendw $218 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010b090d3b84 +r pblendw $219 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010b090dfc6d +m pblendw $219 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa92010b090dfc6d +r pblendw $220 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03f4b23b84 +m pblendw $220 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03f4b23b84 +r pblendw $221 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03f4b2fc6d +m pblendw $221 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03f4b2fc6d +r pblendw $222 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03090d3b84 +m pblendw $222 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03090d3b84 +r pblendw $223 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03090dfc6d +m pblendw $223 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a0984920b8daa927a03090dfc6d +r pblendw $224 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010bf4b23b84 +m pblendw $224 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010bf4b23b84 +r pblendw $225 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010bf4b2fc6d +m pblendw $225 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010bf4b2fc6d +r pblendw $226 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010b090d3b84 +m pblendw $226 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010b090d3b84 +r pblendw $227 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010b090dfc6d +m pblendw $227 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df010b090dfc6d +r pblendw $228 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03f4b23b84 +m pblendw $228 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03f4b23b84 +r pblendw $229 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03f4b2fc6d +m pblendw $229 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03f4b2fc6d +r pblendw $230 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03090d3b84 +m pblendw $230 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03090d3b84 +r pblendw $231 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03090dfc6d +m pblendw $231 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e796df7a03090dfc6d +r pblendw $232 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010bf4b23b84 +m pblendw $232 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010bf4b23b84 +r pblendw $233 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010bf4b2fc6d +m pblendw $233 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010bf4b2fc6d +r pblendw $234 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010b090d3b84 +m pblendw $234 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010b090d3b84 +r pblendw $235 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010b090dfc6d +m pblendw $235 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa92010b090dfc6d +r pblendw $236 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03f4b23b84 +m pblendw $236 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03f4b23b84 +r pblendw $237 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03f4b2fc6d +m pblendw $237 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03f4b2fc6d +r pblendw $238 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03090d3b84 +m pblendw $238 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03090d3b84 +r pblendw $239 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03090dfc6d +m pblendw $239 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df3e7e7aa927a03090dfc6d +r pblendw $240 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010bf4b23b84 +m pblendw $240 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010bf4b23b84 +r pblendw $241 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010bf4b2fc6d +m pblendw $241 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010bf4b2fc6d +r pblendw $242 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010b090d3b84 +m pblendw $242 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010b090d3b84 +r pblendw $243 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010b090dfc6d +m pblendw $243 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df010b090dfc6d +r pblendw $244 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03f4b23b84 +m pblendw $244 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03f4b23b84 +r pblendw $245 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03f4b2fc6d +m pblendw $245 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03f4b2fc6d +r pblendw $246 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03090d3b84 +m pblendw $246 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03090d3b84 +r pblendw $247 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03090dfc6d +m pblendw $247 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8d96df7a03090dfc6d +r pblendw $248 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010bf4b23b84 +m pblendw $248 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010bf4b23b84 +r pblendw $249 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010bf4b2fc6d +m pblendw $249 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010bf4b2fc6d +r pblendw $250 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010b090d3b84 +m pblendw $250 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010b090d3b84 +r pblendw $251 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010b090dfc6d +m pblendw $251 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa92010b090dfc6d +r pblendw $252 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03f4b23b84 +m pblendw $252 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03f4b23b84 +r pblendw $253 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03f4b2fc6d +m pblendw $253 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03f4b2fc6d +r pblendw $254 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03090d3b84 +m pblendw $254 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03090d3b84 +r pblendw $255 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03090dfc6d +m pblendw $255 57436a097df30b8daa927a03090dfc6d 65ce6d498492e7e796df010bf4b23b84 57436a097df30b8daa927a03090dfc6d +r pblendvb f5304f3e3ad1a923dc4c446c804bf950 c5e48064a393c8e947a34273c10a3c47 6ec34f98a2199d3c810bdacfab80ee3d -> c5c34f98a293c83c470bdacfc1803c3d +m pblendvb f5304f3e3ad1a923dc4c446c804bf950 c5e48064a393c8e947a34273c10a3c47 6ec34f98a2199d3c810bdacfab80ee3d -> c5c34f98a293c83c470bdacfc1803c3d +r pblendvb 6d08ed19fa045f841810cd8c109ed568 1c4a678450562685769ab818a5b7985e b984aed62671e865e6f21d40fc7bc013 -> b98467d65071e885e6f2b818fcb79813 +m pblendvb 6d08ed19fa045f841810cd8c109ed568 1c4a678450562685769ab818a5b7985e b984aed62671e865e6f21d40fc7bc013 -> b98467d65071e885e6f2b818fcb79813 +r pblendvb 5d0f926ce1157eaa95c45b338afcb3df 05a5c205c3659f388e17b17da2acb976 8b5fccbef0e1e256bc563e0c775bfaed -> 8b5fc2bec3e1e2388e173e0ca2acb976 +m pblendvb 5d0f926ce1157eaa95c45b338afcb3df 05a5c205c3659f388e17b17da2acb976 8b5fccbef0e1e256bc563e0c775bfaed -> 8b5fc2bec3e1e2388e173e0ca2acb976 +r pblendvb acb722146c6cbfa9ea4a022e1d3d7dbb 048612e51a468e36c51cdd8f87e12ab4 0c05cb6ebd128663d7568e3e8a3ac80e -> 0486cb6ebd128e36c5568e3e8a3ac8b4 +m pblendvb acb722146c6cbfa9ea4a022e1d3d7dbb 048612e51a468e36c51cdd8f87e12ab4 0c05cb6ebd128663d7568e3e8a3ac80e -> 0486cb6ebd128e36c5568e3e8a3ac8b4 +r pblendvb 22cf5e4cfad1bdf58de2b4a9d799ff5f 80ddba7e53e42d123208cf9b04b0569c 4288ae612c0dad40f0733f448390351b -> 42ddae6153e42d123208cf9b04b0561b +m pblendvb 22cf5e4cfad1bdf58de2b4a9d799ff5f 80ddba7e53e42d123208cf9b04b0569c 4288ae612c0dad40f0733f448390351b -> 42ddae6153e42d123208cf9b04b0561b +r pblendvb 6489eab2c96df363d52c4330a7aae391 c1fbfd8f4d8698c2cb9dfb4ea5d18713 14575775bc3a12029d8e66ea90352a18 -> 14fbfd8f4d3a9802cb8e66eaa5d18713 +m pblendvb 6489eab2c96df363d52c4330a7aae391 c1fbfd8f4d8698c2cb9dfb4ea5d18713 14575775bc3a12029d8e66ea90352a18 -> 14fbfd8f4d3a9802cb8e66eaa5d18713 +r pblendvb f9754842f9c9ba28f82a63b15c68b274 ec91fe34c7d6c79a66fab2b3db5ce85e 474289e7cb61501e54e7f35bc162726a -> ec4289e7c7d6c71e66e7f3b3c162e86a +m pblendvb f9754842f9c9ba28f82a63b15c68b274 ec91fe34c7d6c79a66fab2b3db5ce85e 474289e7cb61501e54e7f35bc162726a -> ec4289e7c7d6c71e66e7f3b3c162e86a +r pblendvb 4784d95987cd4ed80c3ca578a32bd88e 08aebee85fda964fbba02737f3c98220 837be65197abe2686b1fba2604afb8d5 -> 83aebe515fdae24f6b1f2726f3af8220 +m pblendvb 4784d95987cd4ed80c3ca578a32bd88e 08aebee85fda964fbba02737f3c98220 837be65197abe2686b1fba2604afb8d5 -> 83aebe515fdae24f6b1f2726f3af8220 +r pblendvb 9605e2b252c1c86809217c310baca0c3 fbc4208894fdc0f55f706da71bf2425f 4e92f1b240a122141a366d352714867e -> fb92208840fdc0141a366d3527f2425f +m pblendvb 9605e2b252c1c86809217c310baca0c3 fbc4208894fdc0f55f706da71bf2425f 4e92f1b240a122141a366d352714867e -> fb92208840fdc0141a366d3527f2425f +r pblendvb 0aaa836b194e242cc5fc3ae904033357 8ca3e752c306df00caab752f630ff07e 0e780c65c22b4ab8778d9ed6d9eb46ea -> 0ea3e765c22b4ab8caab9e2fd9eb46ea +m pblendvb 0aaa836b194e242cc5fc3ae904033357 8ca3e752c306df00caab752f630ff07e 0e780c65c22b4ab8778d9ed6d9eb46ea -> 0ea3e765c22b4ab8caab9e2fd9eb46ea +r blendvpd ac82c1007a7d3cd8f54b130cdaa89cef 627bb6e12d1f6d4651ef145cb9b83843 0a7c7a27fe91744777e3c0b6a9ec44fc -> 627bb6e12d1f6d4651ef145cb9b83843 +m blendvpd ac82c1007a7d3cd8f54b130cdaa89cef 627bb6e12d1f6d4651ef145cb9b83843 0a7c7a27fe91744777e3c0b6a9ec44fc -> 627bb6e12d1f6d4651ef145cb9b83843 +r blendvpd 61ff7d4df3b6ca8131f01866bd76c58f 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 69505d14b27d9d16f25b26e0042fa9fa -> 69505d14b27d9d16f25b26e0042fa9fa +m blendvpd 61ff7d4df3b6ca8131f01866bd76c58f 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 69505d14b27d9d16f25b26e0042fa9fa -> 69505d14b27d9d16f25b26e0042fa9fa +r blendvpd f0f1798fe3c1699cf02b3b25bca27a9c d4ba52a206ff21b170fbbab6a7f19faf 3004b7a97cf69dda9f7301c1392d8087 -> d4ba52a206ff21b170fbbab6a7f19faf +m blendvpd f0f1798fe3c1699cf02b3b25bca27a9c d4ba52a206ff21b170fbbab6a7f19faf 3004b7a97cf69dda9f7301c1392d8087 -> d4ba52a206ff21b170fbbab6a7f19faf +r blendvpd 0088596389c893fd879d51d4c5c764db 1e61c5ec52f79c6015e3c8dc7e9273bf 47086cc3da642fa7130d662777beb4a9 -> 47086cc3da642fa715e3c8dc7e9273bf +m blendvpd 0088596389c893fd879d51d4c5c764db 1e61c5ec52f79c6015e3c8dc7e9273bf 47086cc3da642fa7130d662777beb4a9 -> 47086cc3da642fa715e3c8dc7e9273bf +r blendvpd 16559ec50352a3d92d460a61a5dd0f6f 0784892e9360315bf0177599dbe14b46 742c3e9e2b92eef2c569453ccd1b0fc4 -> 742c3e9e2b92eef2c569453ccd1b0fc4 +m blendvpd 16559ec50352a3d92d460a61a5dd0f6f 0784892e9360315bf0177599dbe14b46 742c3e9e2b92eef2c569453ccd1b0fc4 -> 742c3e9e2b92eef2c569453ccd1b0fc4 +r blendvpd 9a49ac115048d4c4f987fa170d3ce4dd 9432a2e46543b956b819f459105730e9 5da3cfd6aea6558e0c28728e28dc3c9c -> 9432a2e46543b956b819f459105730e9 +m blendvpd 9a49ac115048d4c4f987fa170d3ce4dd 9432a2e46543b956b819f459105730e9 5da3cfd6aea6558e0c28728e28dc3c9c -> 9432a2e46543b956b819f459105730e9 +r blendvpd d2b3c4044ef23fb2e22093a48a9d2e0b adddf0eb4808f06704c857e949cc0fac 89fba268812abdb21e4a9e0958fac555 -> adddf0eb4808f06704c857e949cc0fac +m blendvpd d2b3c4044ef23fb2e22093a48a9d2e0b adddf0eb4808f06704c857e949cc0fac 89fba268812abdb21e4a9e0958fac555 -> adddf0eb4808f06704c857e949cc0fac +r blendvpd e4450ababbfae0f9bc3127138b19183c 1755377e9a786f014a6592749579b0f4 5f2619b1a20662f012305efa0acd1475 -> 1755377e9a786f014a6592749579b0f4 +m blendvpd e4450ababbfae0f9bc3127138b19183c 1755377e9a786f014a6592749579b0f4 5f2619b1a20662f012305efa0acd1475 -> 1755377e9a786f014a6592749579b0f4 +r blendvpd d70f7fb13667914c413cead25e27ac14 7acb193b9abab2f9e1917689e3f6bf86 2573776df1835e3ede9a220dce0e75e0 -> 7acb193b9abab2f9de9a220dce0e75e0 +m blendvpd d70f7fb13667914c413cead25e27ac14 7acb193b9abab2f9e1917689e3f6bf86 2573776df1835e3ede9a220dce0e75e0 -> 7acb193b9abab2f9de9a220dce0e75e0 +r blendvpd 918107c43ea20cc00420edac31a0d599 5cce191e65591384ff4cb613013cc685 0194ddb82b49abf059a93d4f11d611db -> 5cce191e6559138459a93d4f11d611db +m blendvpd 918107c43ea20cc00420edac31a0d599 5cce191e65591384ff4cb613013cc685 0194ddb82b49abf059a93d4f11d611db -> 5cce191e6559138459a93d4f11d611db +r blendvps da6c63303173ecc97e1e22cf15bd5c2f 24509983fc3bcc36baf7e45e9fa43077 fa99500fef6024ba39dce32c239cf309 -> 24509983ef6024ba39dce32c239cf309 +m blendvps da6c63303173ecc97e1e22cf15bd5c2f 24509983fc3bcc36baf7e45e9fa43077 fa99500fef6024ba39dce32c239cf309 -> 24509983ef6024ba39dce32c239cf309 +r blendvps 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 f6f2b14fbb3184b2141625713239066f -> f6f2b14fbb3184b21416257149e54740 +m blendvps 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 f6f2b14fbb3184b2141625713239066f -> f6f2b14fbb3184b21416257149e54740 +r blendvps 8fcf04e5b2dca44fcf4c517ea3a413ff 5d700527e24d9241c57eb74d70183523 bc70c3b3ef84644b6295f64a4ce61473 -> 5d700527e24d9241c57eb74d70183523 +m blendvps 8fcf04e5b2dca44fcf4c517ea3a413ff 5d700527e24d9241c57eb74d70183523 bc70c3b3ef84644b6295f64a4ce61473 -> 5d700527e24d9241c57eb74d70183523 +r blendvps e8c72e865de41295f2db8f44cbbf37e2 fcd015ff8f2e73a3a0fae06860b606c7 f34428d9c8833f5b78fb29445f3bc8d7 -> fcd015ffc8833f5ba0fae06860b606c7 +m blendvps e8c72e865de41295f2db8f44cbbf37e2 fcd015ff8f2e73a3a0fae06860b606c7 f34428d9c8833f5b78fb29445f3bc8d7 -> fcd015ffc8833f5ba0fae06860b606c7 +r blendvps a93bf6332d650e0266478ac4fc21a428 da30ef8bc0b5573e34a901384a97a32f 20fd62bd65b571158e48704b3c31abc2 -> da30ef8b65b571158e48704b4a97a32f +m blendvps a93bf6332d650e0266478ac4fc21a428 da30ef8bc0b5573e34a901384a97a32f 20fd62bd65b571158e48704b3c31abc2 -> da30ef8b65b571158e48704b4a97a32f +r blendvps f9da7f07e00794eb00b0940ba5e08516 be625608d5abd787f5c90ee73af5d7c0 ac8dd5bbc503330eb9dd5dab8e212ab7 -> be625608d5abd787b9dd5dab3af5d7c0 +m blendvps f9da7f07e00794eb00b0940ba5e08516 be625608d5abd787f5c90ee73af5d7c0 ac8dd5bbc503330eb9dd5dab8e212ab7 -> be625608d5abd787b9dd5dab3af5d7c0 +r blendvps ddb5cd8016d27d057796e0861576e44f 4e94ec120b386f523bfcd80321664d3e db43c391c6b69f3af17a6312e7c28d9a -> 4e94ec12c6b69f3af17a6312e7c28d9a +m blendvps ddb5cd8016d27d057796e0861576e44f 4e94ec120b386f523bfcd80321664d3e db43c391c6b69f3af17a6312e7c28d9a -> 4e94ec12c6b69f3af17a6312e7c28d9a +r blendvps 3d3cc0784c2f856363d9810079bbabd9 125934a781e479d33d431279cce48fce d4d14e592776b1ef0b40d58cb22d00b1 -> d4d14e592776b1ef0b40d58cb22d00b1 +m blendvps 3d3cc0784c2f856363d9810079bbabd9 125934a781e479d33d431279cce48fce d4d14e592776b1ef0b40d58cb22d00b1 -> d4d14e592776b1ef0b40d58cb22d00b1 +r blendvps df411d2ee2e7467c38bb69a6e1e9a617 6f9f902235982fa010fd4e94e9c808f5 9e477892854b43e0beafe48541dc8da0 -> 6f9f902235982fa0beafe485e9c808f5 +m blendvps df411d2ee2e7467c38bb69a6e1e9a617 6f9f902235982fa010fd4e94e9c808f5 9e477892854b43e0beafe48541dc8da0 -> 6f9f902235982fa0beafe485e9c808f5 +r blendvps 69f2843d15223a224edb6a053a967ecf acb9433f079dacacabeb000208c90296 20162517609f0f22a1a7a4c9c0a51f6b -> 20162517609f0f22a1a7a4c9c0a51f6b +m blendvps 69f2843d15223a224edb6a053a967ecf acb9433f079dacacabeb000208c90296 20162517609f0f22a1a7a4c9c0a51f6b -> 20162517609f0f22a1a7a4c9c0a51f6b +r dppd $0 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $0 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $1 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $1 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $2 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $2 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $3 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $3 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $4 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $4 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $5 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $5 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $6 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $6 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $7 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $7 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $8 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $8 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $9 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $9 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $10 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $10 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $11 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $11 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $12 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $12 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $13 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $13 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $14 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $14 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $15 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $15 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $16 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $16 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $17 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $17 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $18 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $18 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $19 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $19 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $20 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $20 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $21 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $21 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $22 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $22 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $23 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $23 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $24 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $24 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $25 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $25 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $26 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $26 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $27 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $27 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $28 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $28 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $29 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $29 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $30 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $30 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $31 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $31 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $32 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $32 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $33 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $33 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $34 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $34 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $35 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $35 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $36 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $36 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $37 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $37 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $38 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $38 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $39 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $39 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $40 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $40 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $41 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $41 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $42 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $42 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $43 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $43 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $44 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $44 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $45 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $45 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $46 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $46 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $47 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $47 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $48 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $48 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $49 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $49 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $50 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $50 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $51 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $51 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $52 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $52 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $53 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $53 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $54 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $54 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $55 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $55 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $56 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $56 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $57 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $57 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $58 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $58 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $59 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $59 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $60 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $60 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $61 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $61 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $62 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $62 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $63 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $63 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $64 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $64 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $65 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $65 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $66 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $66 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $67 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $67 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $68 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $68 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $69 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $69 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $70 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $70 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $71 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $71 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $72 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $72 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $73 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $73 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $74 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $74 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $75 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $75 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $76 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $76 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $77 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $77 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $78 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $78 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $79 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $79 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $80 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $80 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $81 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $81 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $82 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $82 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $83 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $83 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $84 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $84 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $85 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $85 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $86 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $86 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $87 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $87 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $88 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $88 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $89 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $89 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $90 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $90 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $91 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $91 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $92 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $92 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $93 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $93 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $94 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $94 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $95 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $95 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $96 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $96 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $97 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $97 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $98 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $98 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $99 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $99 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $100 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $100 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $101 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $101 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $102 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $102 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $103 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $103 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $104 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $104 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $105 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $105 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $106 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $106 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $107 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $107 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $108 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $108 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $109 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $109 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $110 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $110 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $111 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $111 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $112 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $112 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $113 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $113 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $114 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $114 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $115 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $115 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $116 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $116 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $117 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $117 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $118 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $118 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $119 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $119 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $120 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $120 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $121 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $121 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $122 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $122 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $123 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $123 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $124 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $124 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $125 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $125 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $126 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $126 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $127 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $127 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $128 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $128 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $129 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $129 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $130 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $130 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $131 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $131 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $132 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $132 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $133 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $133 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $134 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $134 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $135 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $135 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $136 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $136 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $137 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $137 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $138 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $138 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $139 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $139 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $140 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $140 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $141 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $141 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $142 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $142 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $143 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $143 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $144 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $144 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $145 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $145 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $146 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $146 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $147 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $147 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $148 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $148 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $149 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $149 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $150 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $150 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $151 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $151 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $152 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $152 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $153 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $153 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $154 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $154 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $155 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $155 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $156 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $156 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $157 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $157 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $158 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $158 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $159 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $159 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $160 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $160 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $161 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $161 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $162 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $162 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $163 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $163 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $164 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $164 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $165 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $165 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $166 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $166 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $167 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $167 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $168 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $168 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $169 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $169 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $170 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $170 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $171 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $171 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $172 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $172 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $173 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $173 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $174 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $174 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $175 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $175 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $176 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $176 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $177 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $177 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $178 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $178 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $179 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $179 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $180 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $180 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $181 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $181 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $182 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $182 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $183 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $183 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $184 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $184 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $185 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $185 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $186 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $186 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $187 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $187 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $188 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $188 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $189 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $189 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $190 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $190 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $191 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $191 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $192 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $192 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $193 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $193 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $194 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $194 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $195 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $195 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $196 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $196 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $197 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $197 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $198 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $198 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $199 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $199 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $200 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $200 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $201 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $201 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $202 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $202 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $203 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $203 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $204 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $204 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $205 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $205 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $206 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $206 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $207 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $207 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $208 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $208 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $209 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $209 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $210 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $210 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $211 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $211 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $212 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $212 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $213 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $213 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $214 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $214 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $215 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $215 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $216 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $216 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $217 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $217 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $218 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $218 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $219 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $219 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $220 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $220 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $221 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +m dppd $221 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c02b7561d8a6e474 +r dppd $222 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +m dppd $222 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e4740000000000000000 +r dppd $223 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +m dppd $223 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c02b7561d8a6e474c02b7561d8a6e474 +r dppd $224 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $224 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $225 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $225 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $226 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $226 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $227 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $227 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $228 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $228 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $229 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $229 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $230 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $230 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $231 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $231 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $232 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $232 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $233 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $233 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $234 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $234 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $235 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $235 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $236 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $236 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $237 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +m dppd $237 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c059bbcd882ced71 +r dppd $238 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +m dppd $238 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced710000000000000000 +r dppd $239 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +m dppd $239 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c059bbcd882ced71c059bbcd882ced71 +r dppd $240 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $240 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $241 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $241 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $242 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $242 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $243 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $243 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $244 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $244 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $245 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $245 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $246 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $246 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $247 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $247 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $248 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $248 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $249 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $249 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $250 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $250 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $251 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $251 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dppd $252 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +m dppd $252 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 00000000000000000000000000000000 +r dppd $253 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +m dppd $253 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 0000000000000000c05d2a79c341ca00 +r dppd $254 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +m dppd $254 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca000000000000000000 +r dppd $255 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +m dppd $255 c01b2809d495182b3ff3c083126e978d 402e52ccb3a2595cc0263e1cde5d1809 c05d2a79c341ca00c05d2a79c341ca00 +r dpps $0 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $0 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $1 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $1 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $2 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $2 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $3 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $3 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $4 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $4 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $5 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $5 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $6 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $6 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $7 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $7 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $8 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $8 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $9 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $9 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $10 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $10 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $11 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $11 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $12 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $12 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $13 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $13 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $14 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $14 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $15 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $15 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $16 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $16 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $17 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c1421cac +m dpps $17 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c1421cac +r dpps $18 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c1421cac00000000 +m dpps $18 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c1421cac00000000 +r dpps $19 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c1421cacc1421cac +m dpps $19 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c1421cacc1421cac +r dpps $20 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cac0000000000000000 +m dpps $20 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cac0000000000000000 +r dpps $21 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cac00000000c1421cac +m dpps $21 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cac00000000c1421cac +r dpps $22 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cacc1421cac00000000 +m dpps $22 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cacc1421cac00000000 +r dpps $23 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cacc1421cacc1421cac +m dpps $23 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c1421cacc1421cacc1421cac +r dpps $24 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac000000000000000000000000 +m dpps $24 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac000000000000000000000000 +r dpps $25 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac0000000000000000c1421cac +m dpps $25 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac0000000000000000c1421cac +r dpps $26 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac00000000c1421cac00000000 +m dpps $26 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac00000000c1421cac00000000 +r dpps $27 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac00000000c1421cacc1421cac +m dpps $27 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cac00000000c1421cacc1421cac +r dpps $28 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cac0000000000000000 +m dpps $28 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cac0000000000000000 +r dpps $29 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cac00000000c1421cac +m dpps $29 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cac00000000c1421cac +r dpps $30 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cacc1421cac00000000 +m dpps $30 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cacc1421cac00000000 +r dpps $31 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cacc1421cacc1421cac +m dpps $31 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1421cacc1421cacc1421cacc1421cac +r dpps $32 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $32 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $33 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c224f7cf +m dpps $33 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c224f7cf +r dpps $34 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c224f7cf00000000 +m dpps $34 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c224f7cf00000000 +r dpps $35 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c224f7cfc224f7cf +m dpps $35 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c224f7cfc224f7cf +r dpps $36 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cf0000000000000000 +m dpps $36 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cf0000000000000000 +r dpps $37 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cf00000000c224f7cf +m dpps $37 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cf00000000c224f7cf +r dpps $38 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cfc224f7cf00000000 +m dpps $38 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cfc224f7cf00000000 +r dpps $39 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cfc224f7cfc224f7cf +m dpps $39 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c224f7cfc224f7cfc224f7cf +r dpps $40 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf000000000000000000000000 +m dpps $40 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf000000000000000000000000 +r dpps $41 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf0000000000000000c224f7cf +m dpps $41 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf0000000000000000c224f7cf +r dpps $42 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf00000000c224f7cf00000000 +m dpps $42 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf00000000c224f7cf00000000 +r dpps $43 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf00000000c224f7cfc224f7cf +m dpps $43 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cf00000000c224f7cfc224f7cf +r dpps $44 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cf0000000000000000 +m dpps $44 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cf0000000000000000 +r dpps $45 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cf00000000c224f7cf +m dpps $45 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cf00000000c224f7cf +r dpps $46 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cfc224f7cf00000000 +m dpps $46 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cfc224f7cf00000000 +r dpps $47 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cfc224f7cfc224f7cf +m dpps $47 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c224f7cfc224f7cfc224f7cfc224f7cf +r dpps $48 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $48 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $49 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2557efa +m dpps $49 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2557efa +r dpps $50 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2557efa00000000 +m dpps $50 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2557efa00000000 +r dpps $51 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2557efac2557efa +m dpps $51 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2557efac2557efa +r dpps $52 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efa0000000000000000 +m dpps $52 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efa0000000000000000 +r dpps $53 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efa00000000c2557efa +m dpps $53 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efa00000000c2557efa +r dpps $54 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efac2557efa00000000 +m dpps $54 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efac2557efa00000000 +r dpps $55 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efac2557efac2557efa +m dpps $55 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2557efac2557efac2557efa +r dpps $56 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa000000000000000000000000 +m dpps $56 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa000000000000000000000000 +r dpps $57 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa0000000000000000c2557efa +m dpps $57 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa0000000000000000c2557efa +r dpps $58 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa00000000c2557efa00000000 +m dpps $58 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa00000000c2557efa00000000 +r dpps $59 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa00000000c2557efac2557efa +m dpps $59 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efa00000000c2557efac2557efa +r dpps $60 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efa0000000000000000 +m dpps $60 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efa0000000000000000 +r dpps $61 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efa00000000c2557efa +m dpps $61 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efa00000000c2557efa +r dpps $62 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efac2557efa00000000 +m dpps $62 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efac2557efa00000000 +r dpps $63 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efac2557efac2557efa +m dpps $63 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2557efac2557efac2557efac2557efa +r dpps $64 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $64 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $65 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2bd9c28 +m dpps $65 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2bd9c28 +r dpps $66 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2bd9c2800000000 +m dpps $66 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2bd9c2800000000 +r dpps $67 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2bd9c28c2bd9c28 +m dpps $67 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2bd9c28c2bd9c28 +r dpps $68 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c280000000000000000 +m dpps $68 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c280000000000000000 +r dpps $69 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c2800000000c2bd9c28 +m dpps $69 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c2800000000c2bd9c28 +r dpps $70 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c28c2bd9c2800000000 +m dpps $70 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c28c2bd9c2800000000 +r dpps $71 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c28c2bd9c28c2bd9c28 +m dpps $71 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2bd9c28c2bd9c28c2bd9c28 +r dpps $72 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28000000000000000000000000 +m dpps $72 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28000000000000000000000000 +r dpps $73 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c280000000000000000c2bd9c28 +m dpps $73 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c280000000000000000c2bd9c28 +r dpps $74 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c2800000000c2bd9c2800000000 +m dpps $74 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c2800000000c2bd9c2800000000 +r dpps $75 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c2800000000c2bd9c28c2bd9c28 +m dpps $75 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c2800000000c2bd9c28c2bd9c28 +r dpps $76 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c280000000000000000 +m dpps $76 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c280000000000000000 +r dpps $77 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c2800000000c2bd9c28 +m dpps $77 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c2800000000c2bd9c28 +r dpps $78 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c28c2bd9c2800000000 +m dpps $78 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c28c2bd9c2800000000 +r dpps $79 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c28c2bd9c28c2bd9c28 +m dpps $79 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2bd9c28c2bd9c28c2bd9c28c2bd9c28 +r dpps $80 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $80 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $81 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2d5dfbe +m dpps $81 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c2d5dfbe +r dpps $82 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2d5dfbe00000000 +m dpps $82 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2d5dfbe00000000 +r dpps $83 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2d5dfbec2d5dfbe +m dpps $83 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c2d5dfbec2d5dfbe +r dpps $84 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbe0000000000000000 +m dpps $84 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbe0000000000000000 +r dpps $85 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbe00000000c2d5dfbe +m dpps $85 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbe00000000c2d5dfbe +r dpps $86 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbec2d5dfbe00000000 +m dpps $86 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbec2d5dfbe00000000 +r dpps $87 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbec2d5dfbec2d5dfbe +m dpps $87 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c2d5dfbec2d5dfbec2d5dfbe +r dpps $88 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe000000000000000000000000 +m dpps $88 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe000000000000000000000000 +r dpps $89 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe0000000000000000c2d5dfbe +m dpps $89 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe0000000000000000c2d5dfbe +r dpps $90 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe00000000c2d5dfbe00000000 +m dpps $90 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe00000000c2d5dfbe00000000 +r dpps $91 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe00000000c2d5dfbec2d5dfbe +m dpps $91 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbe00000000c2d5dfbec2d5dfbe +r dpps $92 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbe0000000000000000 +m dpps $92 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbe0000000000000000 +r dpps $93 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbe00000000c2d5dfbe +m dpps $93 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbe00000000c2d5dfbe +r dpps $94 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbec2d5dfbe00000000 +m dpps $94 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbec2d5dfbe00000000 +r dpps $95 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbec2d5dfbec2d5dfbe +m dpps $95 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c2d5dfbec2d5dfbec2d5dfbec2d5dfbe +r dpps $96 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $96 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $97 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3080c08 +m dpps $97 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3080c08 +r dpps $98 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3080c0800000000 +m dpps $98 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3080c0800000000 +r dpps $99 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3080c08c3080c08 +m dpps $99 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3080c08c3080c08 +r dpps $100 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c080000000000000000 +m dpps $100 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c080000000000000000 +r dpps $101 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c0800000000c3080c08 +m dpps $101 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c0800000000c3080c08 +r dpps $102 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c08c3080c0800000000 +m dpps $102 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c08c3080c0800000000 +r dpps $103 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c08c3080c08c3080c08 +m dpps $103 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3080c08c3080c08c3080c08 +r dpps $104 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08000000000000000000000000 +m dpps $104 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08000000000000000000000000 +r dpps $105 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c080000000000000000c3080c08 +m dpps $105 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c080000000000000000c3080c08 +r dpps $106 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c0800000000c3080c0800000000 +m dpps $106 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c0800000000c3080c0800000000 +r dpps $107 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c0800000000c3080c08c3080c08 +m dpps $107 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c0800000000c3080c08c3080c08 +r dpps $108 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c080000000000000000 +m dpps $108 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c080000000000000000 +r dpps $109 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c0800000000c3080c08 +m dpps $109 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c0800000000c3080c08 +r dpps $110 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c08c3080c0800000000 +m dpps $110 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c08c3080c0800000000 +r dpps $111 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c08c3080c08c3080c08 +m dpps $111 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3080c08c3080c08c3080c08c3080c08 +r dpps $112 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $112 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $113 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3142dd2 +m dpps $113 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3142dd2 +r dpps $114 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3142dd200000000 +m dpps $114 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3142dd200000000 +r dpps $115 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3142dd2c3142dd2 +m dpps $115 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3142dd2c3142dd2 +r dpps $116 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd20000000000000000 +m dpps $116 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd20000000000000000 +r dpps $117 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd200000000c3142dd2 +m dpps $117 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd200000000c3142dd2 +r dpps $118 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd2c3142dd200000000 +m dpps $118 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd2c3142dd200000000 +r dpps $119 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd2c3142dd2c3142dd2 +m dpps $119 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3142dd2c3142dd2c3142dd2 +r dpps $120 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2000000000000000000000000 +m dpps $120 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2000000000000000000000000 +r dpps $121 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd20000000000000000c3142dd2 +m dpps $121 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd20000000000000000c3142dd2 +r dpps $122 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd200000000c3142dd200000000 +m dpps $122 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd200000000c3142dd200000000 +r dpps $123 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd200000000c3142dd2c3142dd2 +m dpps $123 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd200000000c3142dd2c3142dd2 +r dpps $124 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd20000000000000000 +m dpps $124 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd20000000000000000 +r dpps $125 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd200000000c3142dd2 +m dpps $125 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd200000000c3142dd2 +r dpps $126 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd2c3142dd200000000 +m dpps $126 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd2c3142dd200000000 +r dpps $127 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd2c3142dd2c3142dd2 +m dpps $127 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3142dd2c3142dd2c3142dd2c3142dd2 +r dpps $128 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $128 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $129 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c30fe9ba +m dpps $129 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c30fe9ba +r dpps $130 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c30fe9ba00000000 +m dpps $130 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c30fe9ba00000000 +r dpps $131 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c30fe9bac30fe9ba +m dpps $131 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c30fe9bac30fe9ba +r dpps $132 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9ba0000000000000000 +m dpps $132 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9ba0000000000000000 +r dpps $133 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9ba00000000c30fe9ba +m dpps $133 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9ba00000000c30fe9ba +r dpps $134 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9bac30fe9ba00000000 +m dpps $134 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9bac30fe9ba00000000 +r dpps $135 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9bac30fe9bac30fe9ba +m dpps $135 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c30fe9bac30fe9bac30fe9ba +r dpps $136 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba000000000000000000000000 +m dpps $136 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba000000000000000000000000 +r dpps $137 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba0000000000000000c30fe9ba +m dpps $137 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba0000000000000000c30fe9ba +r dpps $138 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba00000000c30fe9ba00000000 +m dpps $138 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba00000000c30fe9ba00000000 +r dpps $139 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba00000000c30fe9bac30fe9ba +m dpps $139 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9ba00000000c30fe9bac30fe9ba +r dpps $140 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9ba0000000000000000 +m dpps $140 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9ba0000000000000000 +r dpps $141 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9ba00000000c30fe9ba +m dpps $141 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9ba00000000c30fe9ba +r dpps $142 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9bac30fe9ba00000000 +m dpps $142 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9bac30fe9ba00000000 +r dpps $143 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9bac30fe9bac30fe9ba +m dpps $143 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c30fe9bac30fe9bac30fe9bac30fe9ba +r dpps $144 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $144 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $145 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c31c0b85 +m dpps $145 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c31c0b85 +r dpps $146 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c31c0b8500000000 +m dpps $146 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c31c0b8500000000 +r dpps $147 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c31c0b85c31c0b85 +m dpps $147 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c31c0b85c31c0b85 +r dpps $148 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b850000000000000000 +m dpps $148 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b850000000000000000 +r dpps $149 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b8500000000c31c0b85 +m dpps $149 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b8500000000c31c0b85 +r dpps $150 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b85c31c0b8500000000 +m dpps $150 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b85c31c0b8500000000 +r dpps $151 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b85c31c0b85c31c0b85 +m dpps $151 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c31c0b85c31c0b85c31c0b85 +r dpps $152 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85000000000000000000000000 +m dpps $152 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85000000000000000000000000 +r dpps $153 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b850000000000000000c31c0b85 +m dpps $153 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b850000000000000000c31c0b85 +r dpps $154 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b8500000000c31c0b8500000000 +m dpps $154 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b8500000000c31c0b8500000000 +r dpps $155 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b8500000000c31c0b85c31c0b85 +m dpps $155 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b8500000000c31c0b85c31c0b85 +r dpps $156 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b850000000000000000 +m dpps $156 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b850000000000000000 +r dpps $157 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b8500000000c31c0b85 +m dpps $157 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b8500000000c31c0b85 +r dpps $158 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b85c31c0b8500000000 +m dpps $158 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b85c31c0b8500000000 +r dpps $159 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b85c31c0b85c31c0b85 +m dpps $159 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c31c0b85c31c0b85c31c0b85c31c0b85 +r dpps $160 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $160 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $161 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c33927ae +m dpps $161 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c33927ae +r dpps $162 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c33927ae00000000 +m dpps $162 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c33927ae00000000 +r dpps $163 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c33927aec33927ae +m dpps $163 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c33927aec33927ae +r dpps $164 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927ae0000000000000000 +m dpps $164 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927ae0000000000000000 +r dpps $165 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927ae00000000c33927ae +m dpps $165 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927ae00000000c33927ae +r dpps $166 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927aec33927ae00000000 +m dpps $166 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927aec33927ae00000000 +r dpps $167 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927aec33927aec33927ae +m dpps $167 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c33927aec33927aec33927ae +r dpps $168 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae000000000000000000000000 +m dpps $168 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae000000000000000000000000 +r dpps $169 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae0000000000000000c33927ae +m dpps $169 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae0000000000000000c33927ae +r dpps $170 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae00000000c33927ae00000000 +m dpps $170 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae00000000c33927ae00000000 +r dpps $171 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae00000000c33927aec33927ae +m dpps $171 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927ae00000000c33927aec33927ae +r dpps $172 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927ae0000000000000000 +m dpps $172 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927ae0000000000000000 +r dpps $173 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927ae00000000c33927ae +m dpps $173 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927ae00000000c33927ae +r dpps $174 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927aec33927ae00000000 +m dpps $174 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927aec33927ae00000000 +r dpps $175 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927aec33927aec33927ae +m dpps $175 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c33927aec33927aec33927aec33927ae +r dpps $176 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $176 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $177 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3454978 +m dpps $177 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3454978 +r dpps $178 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c345497800000000 +m dpps $178 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c345497800000000 +r dpps $179 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3454978c3454978 +m dpps $179 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3454978c3454978 +r dpps $180 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c34549780000000000000000 +m dpps $180 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c34549780000000000000000 +r dpps $181 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c345497800000000c3454978 +m dpps $181 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c345497800000000c3454978 +r dpps $182 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3454978c345497800000000 +m dpps $182 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3454978c345497800000000 +r dpps $183 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3454978c3454978c3454978 +m dpps $183 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3454978c3454978c3454978 +r dpps $184 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978000000000000000000000000 +m dpps $184 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978000000000000000000000000 +r dpps $185 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c34549780000000000000000c3454978 +m dpps $185 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c34549780000000000000000c3454978 +r dpps $186 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c345497800000000c345497800000000 +m dpps $186 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c345497800000000c345497800000000 +r dpps $187 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c345497800000000c3454978c3454978 +m dpps $187 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c345497800000000c3454978c3454978 +r dpps $188 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c34549780000000000000000 +m dpps $188 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c34549780000000000000000 +r dpps $189 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c345497800000000c3454978 +m dpps $189 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c345497800000000c3454978 +r dpps $190 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c3454978c345497800000000 +m dpps $190 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c3454978c345497800000000 +r dpps $191 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c3454978c3454978c3454978 +m dpps $191 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3454978c3454978c3454978c3454978 +r dpps $192 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $192 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $193 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c36eb7ce +m dpps $193 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c36eb7ce +r dpps $194 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c36eb7ce00000000 +m dpps $194 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c36eb7ce00000000 +r dpps $195 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c36eb7cec36eb7ce +m dpps $195 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c36eb7cec36eb7ce +r dpps $196 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7ce0000000000000000 +m dpps $196 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7ce0000000000000000 +r dpps $197 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7ce00000000c36eb7ce +m dpps $197 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7ce00000000c36eb7ce +r dpps $198 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7cec36eb7ce00000000 +m dpps $198 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7cec36eb7ce00000000 +r dpps $199 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7cec36eb7cec36eb7ce +m dpps $199 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c36eb7cec36eb7cec36eb7ce +r dpps $200 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce000000000000000000000000 +m dpps $200 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce000000000000000000000000 +r dpps $201 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce0000000000000000c36eb7ce +m dpps $201 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce0000000000000000c36eb7ce +r dpps $202 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce00000000c36eb7ce00000000 +m dpps $202 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce00000000c36eb7ce00000000 +r dpps $203 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce00000000c36eb7cec36eb7ce +m dpps $203 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7ce00000000c36eb7cec36eb7ce +r dpps $204 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7ce0000000000000000 +m dpps $204 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7ce0000000000000000 +r dpps $205 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7ce00000000c36eb7ce +m dpps $205 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7ce00000000c36eb7ce +r dpps $206 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7cec36eb7ce00000000 +m dpps $206 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7cec36eb7ce00000000 +r dpps $207 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7cec36eb7cec36eb7ce +m dpps $207 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c36eb7cec36eb7cec36eb7cec36eb7ce +r dpps $208 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $208 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $209 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c37ad999 +m dpps $209 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c37ad999 +r dpps $210 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c37ad99900000000 +m dpps $210 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c37ad99900000000 +r dpps $211 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c37ad999c37ad999 +m dpps $211 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c37ad999c37ad999 +r dpps $212 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad9990000000000000000 +m dpps $212 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad9990000000000000000 +r dpps $213 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad99900000000c37ad999 +m dpps $213 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad99900000000c37ad999 +r dpps $214 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad999c37ad99900000000 +m dpps $214 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad999c37ad99900000000 +r dpps $215 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad999c37ad999c37ad999 +m dpps $215 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c37ad999c37ad999c37ad999 +r dpps $216 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999000000000000000000000000 +m dpps $216 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999000000000000000000000000 +r dpps $217 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad9990000000000000000c37ad999 +m dpps $217 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad9990000000000000000c37ad999 +r dpps $218 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad99900000000c37ad99900000000 +m dpps $218 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad99900000000c37ad99900000000 +r dpps $219 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad99900000000c37ad999c37ad999 +m dpps $219 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad99900000000c37ad999c37ad999 +r dpps $220 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad9990000000000000000 +m dpps $220 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad9990000000000000000 +r dpps $221 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad99900000000c37ad999 +m dpps $221 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad99900000000c37ad999 +r dpps $222 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad999c37ad99900000000 +m dpps $222 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad999c37ad99900000000 +r dpps $223 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad999c37ad999c37ad999 +m dpps $223 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c37ad999c37ad999c37ad999c37ad999 +r dpps $224 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $224 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $225 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c38bfae1 +m dpps $225 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c38bfae1 +r dpps $226 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c38bfae100000000 +m dpps $226 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c38bfae100000000 +r dpps $227 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c38bfae1c38bfae1 +m dpps $227 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c38bfae1c38bfae1 +r dpps $228 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae10000000000000000 +m dpps $228 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae10000000000000000 +r dpps $229 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae100000000c38bfae1 +m dpps $229 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae100000000c38bfae1 +r dpps $230 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae1c38bfae100000000 +m dpps $230 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae1c38bfae100000000 +r dpps $231 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae1c38bfae1c38bfae1 +m dpps $231 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c38bfae1c38bfae1c38bfae1 +r dpps $232 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1000000000000000000000000 +m dpps $232 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1000000000000000000000000 +r dpps $233 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae10000000000000000c38bfae1 +m dpps $233 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae10000000000000000c38bfae1 +r dpps $234 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae100000000c38bfae100000000 +m dpps $234 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae100000000c38bfae100000000 +r dpps $235 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae100000000c38bfae1c38bfae1 +m dpps $235 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae100000000c38bfae1c38bfae1 +r dpps $236 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae10000000000000000 +m dpps $236 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae10000000000000000 +r dpps $237 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae100000000c38bfae1 +m dpps $237 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae100000000c38bfae1 +r dpps $238 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae1c38bfae100000000 +m dpps $238 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae1c38bfae100000000 +r dpps $239 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae1c38bfae1c38bfae1 +m dpps $239 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c38bfae1c38bfae1c38bfae1c38bfae1 +r dpps $240 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m dpps $240 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r dpps $241 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3920bc6 +m dpps $241 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c3920bc6 +r dpps $242 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3920bc600000000 +m dpps $242 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3920bc600000000 +r dpps $243 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3920bc6c3920bc6 +m dpps $243 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c3920bc6c3920bc6 +r dpps $244 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc60000000000000000 +m dpps $244 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc60000000000000000 +r dpps $245 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc600000000c3920bc6 +m dpps $245 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc600000000c3920bc6 +r dpps $246 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc6c3920bc600000000 +m dpps $246 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc6c3920bc600000000 +r dpps $247 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc6c3920bc6c3920bc6 +m dpps $247 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c3920bc6c3920bc6c3920bc6 +r dpps $248 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6000000000000000000000000 +m dpps $248 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6000000000000000000000000 +r dpps $249 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc60000000000000000c3920bc6 +m dpps $249 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc60000000000000000c3920bc6 +r dpps $250 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc600000000c3920bc600000000 +m dpps $250 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc600000000c3920bc600000000 +r dpps $251 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc600000000c3920bc6c3920bc6 +m dpps $251 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc600000000c3920bc6c3920bc6 +r dpps $252 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc60000000000000000 +m dpps $252 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc60000000000000000 +r dpps $253 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc600000000c3920bc6 +m dpps $253 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc600000000c3920bc6 +r dpps $254 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc6c3920bc600000000 +m dpps $254 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc6c3920bc600000000 +r dpps $255 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc6c3920bc6c3920bc6 +m dpps $255 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c3920bc6c3920bc6c3920bc6c3920bc6 +r extractps $0 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 0000000054bcbf24 +m extractps $0 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 5555555554bcbf24 +r extractps $1 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 00000000db3b3709 +m extractps $1 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 55555555db3b3709 +r extractps $2 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 000000000368bc8b +m extractps $2 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 555555550368bc8b +r extractps $3 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 0000000063e279a2 +m extractps $3 63e279a20368bc8bdb3b370954bcbf24 5555555555555555 5555555563e279a2 +r insertps $0 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b3f99999a +m insertps $0 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b3f99999a +r insertps $1 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +m insertps $1 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +r insertps $2 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666000000003f99999a +m insertps $2 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666000000003f99999a +r insertps $3 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $3 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $4 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b3f99999a +m insertps $4 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b3f99999a +r insertps $5 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $5 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $6 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000000000003f99999a +m insertps $6 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000000000003f99999a +r insertps $7 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $7 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $8 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b3f99999a +m insertps $8 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b3f99999a +r insertps $9 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $9 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $10 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666000000003f99999a +m insertps $10 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666000000003f99999a +r insertps $11 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $11 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $12 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b3f99999a +m insertps $12 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b3f99999a +r insertps $13 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $13 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $14 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000000000003f99999a +m insertps $14 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000000000003f99999a +r insertps $15 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $15 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $16 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999ac121c28f +m insertps $16 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999ac121c28f +r insertps $17 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999a00000000 +m insertps $17 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999a00000000 +r insertps $18 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +m insertps $18 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +r insertps $19 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $19 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $20 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999ac121c28f +m insertps $20 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999ac121c28f +r insertps $21 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999a00000000 +m insertps $21 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999a00000000 +r insertps $22 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $22 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $23 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $23 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $24 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999ac121c28f +m insertps $24 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999ac121c28f +r insertps $25 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999a00000000 +m insertps $25 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999a00000000 +r insertps $26 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $26 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $27 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $27 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $28 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999ac121c28f +m insertps $28 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999ac121c28f +r insertps $29 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999a00000000 +m insertps $29 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999a00000000 +r insertps $30 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $30 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $31 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $31 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $32 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147bc121c28f +m insertps $32 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147bc121c28f +r insertps $33 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147b00000000 +m insertps $33 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147b00000000 +r insertps $34 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a00000000c121c28f +m insertps $34 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a00000000c121c28f +r insertps $35 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a0000000000000000 +m insertps $35 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a0000000000000000 +r insertps $36 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +m insertps $36 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +r insertps $37 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $37 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $38 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $38 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $39 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $39 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $40 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147bc121c28f +m insertps $40 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147bc121c28f +r insertps $41 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147b00000000 +m insertps $41 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147b00000000 +r insertps $42 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a00000000c121c28f +m insertps $42 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a00000000c121c28f +r insertps $43 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a0000000000000000 +m insertps $43 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a0000000000000000 +r insertps $44 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $44 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $45 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $45 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $46 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $46 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $47 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $47 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $48 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147bc121c28f +m insertps $48 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147bc121c28f +r insertps $49 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147b00000000 +m insertps $49 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147b00000000 +r insertps $50 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a4162666600000000c121c28f +m insertps $50 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a4162666600000000c121c28f +r insertps $51 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266660000000000000000 +m insertps $51 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266660000000000000000 +r insertps $52 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147bc121c28f +m insertps $52 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147bc121c28f +r insertps $53 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147b00000000 +m insertps $53 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147b00000000 +r insertps $54 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a0000000000000000c121c28f +m insertps $54 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a0000000000000000c121c28f +r insertps $55 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000000000000000000000 +m insertps $55 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000000000000000000000 +r insertps $56 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +m insertps $56 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +r insertps $57 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $57 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $58 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $58 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $59 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $59 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $60 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $60 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $61 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $61 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $62 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $62 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $63 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $63 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $64 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147bc059999a +m insertps $64 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b3f99999a +r insertps $65 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +m insertps $65 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +r insertps $66 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c059999a +m insertps $66 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666000000003f99999a +r insertps $67 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $67 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $68 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc059999a +m insertps $68 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b3f99999a +r insertps $69 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $69 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $70 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c059999a +m insertps $70 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000000000003f99999a +r insertps $71 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $71 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $72 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc059999a +m insertps $72 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b3f99999a +r insertps $73 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $73 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $74 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c059999a +m insertps $74 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666000000003f99999a +r insertps $75 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $75 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $76 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc059999a +m insertps $76 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b3f99999a +r insertps $77 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $77 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $78 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c059999a +m insertps $78 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000000000003f99999a +r insertps $79 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $79 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $80 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666c059999ac121c28f +m insertps $80 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999ac121c28f +r insertps $81 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666c059999a00000000 +m insertps $81 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999a00000000 +r insertps $82 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +m insertps $82 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +r insertps $83 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $83 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $84 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000c059999ac121c28f +m insertps $84 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999ac121c28f +r insertps $85 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000c059999a00000000 +m insertps $85 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999a00000000 +r insertps $86 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $86 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $87 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $87 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $88 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666c059999ac121c28f +m insertps $88 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999ac121c28f +r insertps $89 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666c059999a00000000 +m insertps $89 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999a00000000 +r insertps $90 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $90 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $91 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $91 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $92 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c059999ac121c28f +m insertps $92 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999ac121c28f +r insertps $93 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c059999a00000000 +m insertps $93 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999a00000000 +r insertps $94 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $94 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $95 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $95 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $96 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c059999a4142147bc121c28f +m insertps $96 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147bc121c28f +r insertps $97 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c059999a4142147b00000000 +m insertps $97 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147b00000000 +r insertps $98 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c059999a00000000c121c28f +m insertps $98 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a00000000c121c28f +r insertps $99 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c059999a0000000000000000 +m insertps $99 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a0000000000000000 +r insertps $100 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +m insertps $100 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +r insertps $101 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $101 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $102 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $102 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $103 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $103 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $104 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c059999a4142147bc121c28f +m insertps $104 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147bc121c28f +r insertps $105 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c059999a4142147b00000000 +m insertps $105 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147b00000000 +r insertps $106 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c059999a00000000c121c28f +m insertps $106 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a00000000c121c28f +r insertps $107 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c059999a0000000000000000 +m insertps $107 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a0000000000000000 +r insertps $108 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $108 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $109 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $109 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $110 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $110 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $111 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $111 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $112 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a416266664142147bc121c28f +m insertps $112 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147bc121c28f +r insertps $113 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a416266664142147b00000000 +m insertps $113 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147b00000000 +r insertps $114 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a4162666600000000c121c28f +m insertps $114 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a4162666600000000c121c28f +r insertps $115 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a416266660000000000000000 +m insertps $115 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266660000000000000000 +r insertps $116 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a000000004142147bc121c28f +m insertps $116 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147bc121c28f +r insertps $117 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a000000004142147b00000000 +m insertps $117 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147b00000000 +r insertps $118 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a0000000000000000c121c28f +m insertps $118 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a0000000000000000c121c28f +r insertps $119 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c059999a000000000000000000000000 +m insertps $119 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000000000000000000000 +r insertps $120 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +m insertps $120 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +r insertps $121 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $121 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $122 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $122 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $123 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $123 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $124 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $124 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $125 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $125 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $126 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $126 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $127 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $127 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $128 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147bc0d66666 +m insertps $128 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b3f99999a +r insertps $129 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +m insertps $129 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +r insertps $130 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c0d66666 +m insertps $130 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666000000003f99999a +r insertps $131 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $131 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $132 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc0d66666 +m insertps $132 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b3f99999a +r insertps $133 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $133 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $134 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c0d66666 +m insertps $134 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000000000003f99999a +r insertps $135 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $135 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $136 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc0d66666 +m insertps $136 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b3f99999a +r insertps $137 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $137 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $138 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c0d66666 +m insertps $138 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666000000003f99999a +r insertps $139 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $139 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $140 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc0d66666 +m insertps $140 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b3f99999a +r insertps $141 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $141 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $142 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c0d66666 +m insertps $142 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000000000003f99999a +r insertps $143 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $143 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $144 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666c0d66666c121c28f +m insertps $144 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999ac121c28f +r insertps $145 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666c0d6666600000000 +m insertps $145 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999a00000000 +r insertps $146 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +m insertps $146 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +r insertps $147 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $147 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $148 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000c0d66666c121c28f +m insertps $148 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999ac121c28f +r insertps $149 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000c0d6666600000000 +m insertps $149 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999a00000000 +r insertps $150 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $150 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $151 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $151 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $152 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666c0d66666c121c28f +m insertps $152 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999ac121c28f +r insertps $153 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666c0d6666600000000 +m insertps $153 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999a00000000 +r insertps $154 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $154 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $155 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $155 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $156 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c0d66666c121c28f +m insertps $156 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999ac121c28f +r insertps $157 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000c0d6666600000000 +m insertps $157 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999a00000000 +r insertps $158 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $158 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $159 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $159 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $160 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c0d666664142147bc121c28f +m insertps $160 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147bc121c28f +r insertps $161 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c0d666664142147b00000000 +m insertps $161 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147b00000000 +r insertps $162 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c0d6666600000000c121c28f +m insertps $162 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a00000000c121c28f +r insertps $163 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29c0d666660000000000000000 +m insertps $163 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a0000000000000000 +r insertps $164 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +m insertps $164 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +r insertps $165 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $165 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $166 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $166 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $167 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $167 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $168 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c0d666664142147bc121c28f +m insertps $168 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147bc121c28f +r insertps $169 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c0d666664142147b00000000 +m insertps $169 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147b00000000 +r insertps $170 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c0d6666600000000c121c28f +m insertps $170 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a00000000c121c28f +r insertps $171 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000c0d666660000000000000000 +m insertps $171 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a0000000000000000 +r insertps $172 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $172 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $173 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $173 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $174 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $174 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $175 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $175 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $176 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666416266664142147bc121c28f +m insertps $176 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147bc121c28f +r insertps $177 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666416266664142147b00000000 +m insertps $177 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147b00000000 +r insertps $178 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d666664162666600000000c121c28f +m insertps $178 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a4162666600000000c121c28f +r insertps $179 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666416266660000000000000000 +m insertps $179 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266660000000000000000 +r insertps $180 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666000000004142147bc121c28f +m insertps $180 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147bc121c28f +r insertps $181 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666000000004142147b00000000 +m insertps $181 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147b00000000 +r insertps $182 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d666660000000000000000c121c28f +m insertps $182 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a0000000000000000c121c28f +r insertps $183 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c0d66666000000000000000000000000 +m insertps $183 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000000000000000000000 +r insertps $184 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +m insertps $184 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +r insertps $185 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $185 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $186 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $186 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $187 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $187 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $188 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $188 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $189 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $189 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $190 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $190 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $191 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $191 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $192 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b410e6666 +m insertps $192 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b3f99999a +r insertps $193 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +m insertps $193 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266664142147b00000000 +r insertps $194 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000410e6666 +m insertps $194 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666000000003f99999a +r insertps $195 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $195 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $196 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b410e6666 +m insertps $196 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b3f99999a +r insertps $197 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $197 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $198 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000410e6666 +m insertps $198 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000000000003f99999a +r insertps $199 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $199 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $200 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b410e6666 +m insertps $200 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b3f99999a +r insertps $201 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $201 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $202 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000410e6666 +m insertps $202 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666000000003f99999a +r insertps $203 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $203 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $204 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b410e6666 +m insertps $204 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b3f99999a +r insertps $205 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $205 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $206 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000410e6666 +m insertps $206 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000000000003f99999a +r insertps $207 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $207 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $208 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666410e6666c121c28f +m insertps $208 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999ac121c28f +r insertps $209 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2941626666410e666600000000 +m insertps $209 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266663f99999a00000000 +r insertps $210 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +m insertps $210 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c294162666600000000c121c28f +r insertps $211 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +m insertps $211 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29416266660000000000000000 +r insertps $212 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000410e6666c121c28f +m insertps $212 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999ac121c28f +r insertps $213 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c2900000000410e666600000000 +m insertps $213 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000003f99999a00000000 +r insertps $214 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $214 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $215 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $215 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $216 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666410e6666c121c28f +m insertps $216 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999ac121c28f +r insertps $217 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000041626666410e666600000000 +m insertps $217 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266663f99999a00000000 +r insertps $218 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $218 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $219 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $219 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $220 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000410e6666c121c28f +m insertps $220 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999ac121c28f +r insertps $221 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 0000000000000000410e666600000000 +m insertps $221 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000003f99999a00000000 +r insertps $222 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $222 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $223 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $223 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $224 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29410e66664142147bc121c28f +m insertps $224 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147bc121c28f +r insertps $225 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29410e66664142147b00000000 +m insertps $225 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a4142147b00000000 +r insertps $226 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29410e666600000000c121c28f +m insertps $226 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a00000000c121c28f +r insertps $227 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29410e66660000000000000000 +m insertps $227 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c293f99999a0000000000000000 +r insertps $228 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +m insertps $228 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147bc121c28f +r insertps $229 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +m insertps $229 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000004142147b00000000 +r insertps $230 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +m insertps $230 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c290000000000000000c121c28f +r insertps $231 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +m insertps $231 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f c1815c29000000000000000000000000 +r insertps $232 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000410e66664142147bc121c28f +m insertps $232 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147bc121c28f +r insertps $233 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000410e66664142147b00000000 +m insertps $233 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a4142147b00000000 +r insertps $234 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000410e666600000000c121c28f +m insertps $234 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a00000000c121c28f +r insertps $235 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000410e66660000000000000000 +m insertps $235 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000003f99999a0000000000000000 +r insertps $236 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $236 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $237 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $237 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $238 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $238 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $239 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $239 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r insertps $240 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666416266664142147bc121c28f +m insertps $240 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147bc121c28f +r insertps $241 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666416266664142147b00000000 +m insertps $241 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266664142147b00000000 +r insertps $242 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e66664162666600000000c121c28f +m insertps $242 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a4162666600000000c121c28f +r insertps $243 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666416266660000000000000000 +m insertps $243 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a416266660000000000000000 +r insertps $244 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666000000004142147bc121c28f +m insertps $244 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147bc121c28f +r insertps $245 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666000000004142147b00000000 +m insertps $245 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000004142147b00000000 +r insertps $246 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e66660000000000000000c121c28f +m insertps $246 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a0000000000000000c121c28f +r insertps $247 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 410e6666000000000000000000000000 +m insertps $247 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 3f99999a000000000000000000000000 +r insertps $248 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +m insertps $248 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147bc121c28f +r insertps $249 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +m insertps $249 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266664142147b00000000 +r insertps $250 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +m insertps $250 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000004162666600000000c121c28f +r insertps $251 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +m insertps $251 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000416266660000000000000000 +r insertps $252 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +m insertps $252 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147bc121c28f +r insertps $253 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +m insertps $253 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000004142147b00000000 +r insertps $254 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +m insertps $254 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 000000000000000000000000c121c28f +r insertps $255 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +m insertps $255 410e6666c0d66666c059999a3f99999a c1815c29416266664142147bc121c28f 00000000000000000000000000000000 +r pextrb $0 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000f7 +m pextrb $0 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555f7 +r pextrb $1 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000a7 +m pextrb $1 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555a7 +r pextrb $2 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 0000000000000000 +m pextrb $2 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 5555555555555500 +r pextrb $3 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 0000000000000097 +m pextrb $3 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 5555555555555597 +r pextrb $4 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000ce +m pextrb $4 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555ce +r pextrb $5 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 0000000000000079 +m pextrb $5 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 5555555555555579 +r pextrb $6 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 000000000000002e +m pextrb $6 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 555555555555552e +r pextrb $7 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000e5 +m pextrb $7 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555e5 +r pextrb $8 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 000000000000004c +m pextrb $8 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 555555555555554c +r pextrb $9 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000ea +m pextrb $9 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555ea +r pextrb $10 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 000000000000009b +m pextrb $10 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 555555555555559b +r pextrb $11 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000b4 +m pextrb $11 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555b4 +r pextrb $12 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 000000000000001d +m pextrb $12 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 555555555555551d +r pextrb $13 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 0000000000000070 +m pextrb $13 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 5555555555555570 +r pextrb $14 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 0000000000000056 +m pextrb $14 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 5555555555555556 +r pextrb $15 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 00000000000000ef +m pextrb $15 ef56701db49bea4ce52e79ce9700a7f7 5555555555555555 55555555555555ef +r pextrd $0 200d17261638b12a2a6a07863ec28077 5555555555555555 000000003ec28077 +m pextrd $0 200d17261638b12a2a6a07863ec28077 5555555555555555 555555553ec28077 +r pextrd $1 200d17261638b12a2a6a07863ec28077 5555555555555555 000000002a6a0786 +m pextrd $1 200d17261638b12a2a6a07863ec28077 5555555555555555 555555552a6a0786 +r pextrd $2 200d17261638b12a2a6a07863ec28077 5555555555555555 000000001638b12a +m pextrd $2 200d17261638b12a2a6a07863ec28077 5555555555555555 555555551638b12a +r pextrd $3 200d17261638b12a2a6a07863ec28077 5555555555555555 00000000200d1726 +m pextrd $3 200d17261638b12a2a6a07863ec28077 5555555555555555 55555555200d1726 +r pextrq $0 31005fb9ada2074bf63a63fedcb4d29c 5555555555555555 f63a63fedcb4d29c +m pextrq $0 31005fb9ada2074bf63a63fedcb4d29c 5555555555555555 f63a63fedcb4d29c +r pextrq $1 31005fb9ada2074bf63a63fedcb4d29c 5555555555555555 31005fb9ada2074b +m pextrq $1 31005fb9ada2074bf63a63fedcb4d29c 5555555555555555 31005fb9ada2074b +r pextrw $0 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 00000000000003bb +m pextrw $0 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 55555555555503bb +r pextrw $1 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 000000000000e4e7 +m pextrw $1 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 555555555555e4e7 +r pextrw $2 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 000000000000eb65 +m pextrw $2 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 555555555555eb65 +r pextrw $3 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 0000000000007446 +m pextrw $3 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 5555555555557446 +r pextrw $4 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 000000000000c535 +m pextrw $4 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 555555555555c535 +r pextrw $5 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 000000000000dc9a +m pextrw $5 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 555555555555dc9a +r pextrw $6 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 0000000000001736 +m pextrw $6 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 5555555555551736 +r pextrw $7 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 0000000000003f87 +m pextrw $7 3f871736dc9ac5357446eb65e4e703bb 5555555555555555 5555555555553f87 +r pinsrq $0 895bccaa47e097b0 55555555555555555555555555555555 5555555555555555895bccaa47e097b0 +m pinsrq $0 895bccaa47e097b0 55555555555555555555555555555555 5555555555555555895bccaa47e097b0 +r pinsrq $1 cca141e659f05e44 55555555555555555555555555555555 cca141e659f05e445555555555555555 +m pinsrq $1 cca141e659f05e44 55555555555555555555555555555555 cca141e659f05e445555555555555555 +r pinsrd $0 1b02356292609995 55555555555555555555555555555555 55555555555555555555555592609995 +m pinsrd $0 1b02356292609995 55555555555555555555555555555555 55555555555555555555555592609995 +r pinsrd $1 573419ef40779c1c 55555555555555555555555555555555 555555555555555540779c1c55555555 +m pinsrd $1 573419ef40779c1c 55555555555555555555555555555555 555555555555555540779c1c55555555 +r pinsrd $2 e8ff541e946b13ef 55555555555555555555555555555555 55555555946b13ef5555555555555555 +m pinsrd $2 e8ff541e946b13ef 55555555555555555555555555555555 55555555946b13ef5555555555555555 +r pinsrd $3 7bf503fb681ebd83 55555555555555555555555555555555 681ebd83555555555555555555555555 +m pinsrd $3 7bf503fb681ebd83 55555555555555555555555555555555 681ebd83555555555555555555555555 +r pinsrw $0 c439bad3fae03069 55555555555555555555555555555555 55555555555555555555555555553069 +m pinsrw $0 c439bad3fae03069 55555555555555555555555555555555 55555555555555555555555555553069 +r pinsrw $1 3d3c42eeaf329813 55555555555555555555555555555555 55555555555555555555555598135555 +m pinsrw $1 3d3c42eeaf329813 55555555555555555555555555555555 55555555555555555555555598135555 +r pinsrw $2 e5795953d180798f 55555555555555555555555555555555 55555555555555555555798f55555555 +m pinsrw $2 e5795953d180798f 55555555555555555555555555555555 55555555555555555555798f55555555 +r pinsrw $3 033f758952e56949 55555555555555555555555555555555 55555555555555556949555555555555 +m pinsrw $3 033f758952e56949 55555555555555555555555555555555 55555555555555556949555555555555 +r pinsrw $4 e166815387e9d7cc 55555555555555555555555555555555 555555555555d7cc5555555555555555 +m pinsrw $4 e166815387e9d7cc 55555555555555555555555555555555 555555555555d7cc5555555555555555 +r pinsrw $5 92179f72ef45c780 55555555555555555555555555555555 55555555c78055555555555555555555 +m pinsrw $5 92179f72ef45c780 55555555555555555555555555555555 55555555c78055555555555555555555 +r pinsrw $6 ae87e666ea9c946c 55555555555555555555555555555555 5555946c555555555555555555555555 +m pinsrw $6 ae87e666ea9c946c 55555555555555555555555555555555 5555946c555555555555555555555555 +r pinsrw $7 11ba222c8341adf4 55555555555555555555555555555555 adf45555555555555555555555555555 +m pinsrw $7 11ba222c8341adf4 55555555555555555555555555555555 adf45555555555555555555555555555 +r pinsrb $0 9f4397ff27f65a9a 55555555555555555555555555555555 5555555555555555555555555555559a +m pinsrb $0 9f4397ff27f65a9a 55555555555555555555555555555555 5555555555555555555555555555559a +r pinsrb $1 0301be1a6caa75bf 55555555555555555555555555555555 5555555555555555555555555555bf55 +m pinsrb $1 0301be1a6caa75bf 55555555555555555555555555555555 5555555555555555555555555555bf55 +r pinsrb $2 6ce30772cb393162 55555555555555555555555555555555 55555555555555555555555555625555 +m pinsrb $2 6ce30772cb393162 55555555555555555555555555555555 55555555555555555555555555625555 +r pinsrb $3 50a3967f672fd7de 55555555555555555555555555555555 555555555555555555555555de555555 +m pinsrb $3 50a3967f672fd7de 55555555555555555555555555555555 555555555555555555555555de555555 +r pinsrb $4 2a8d07f3c58484af 55555555555555555555555555555555 5555555555555555555555af55555555 +m pinsrb $4 2a8d07f3c58484af 55555555555555555555555555555555 5555555555555555555555af55555555 +r pinsrb $5 3c382b7f925fed2c 55555555555555555555555555555555 555555555555555555552c5555555555 +m pinsrb $5 3c382b7f925fed2c 55555555555555555555555555555555 555555555555555555552c5555555555 +r pinsrb $6 4e4ac99461d51c4c 55555555555555555555555555555555 5555555555555555554c555555555555 +m pinsrb $6 4e4ac99461d51c4c 55555555555555555555555555555555 5555555555555555554c555555555555 +r pinsrb $7 6d365e1e6aaa3164 55555555555555555555555555555555 55555555555555556455555555555555 +m pinsrb $7 6d365e1e6aaa3164 55555555555555555555555555555555 55555555555555556455555555555555 +r pinsrb $8 ad00dd4a4d0d23e6 55555555555555555555555555555555 55555555555555e65555555555555555 +m pinsrb $8 ad00dd4a4d0d23e6 55555555555555555555555555555555 55555555555555e65555555555555555 +r pinsrb $9 e8f6713fcd5f7d23 55555555555555555555555555555555 55555555555523555555555555555555 +m pinsrb $9 e8f6713fcd5f7d23 55555555555555555555555555555555 55555555555523555555555555555555 +r pinsrb $10 7e7737e796eb2108 55555555555555555555555555555555 55555555550855555555555555555555 +m pinsrb $10 7e7737e796eb2108 55555555555555555555555555555555 55555555550855555555555555555555 +r pinsrb $11 13af05a6f8ae09e3 55555555555555555555555555555555 55555555e35555555555555555555555 +m pinsrb $11 13af05a6f8ae09e3 55555555555555555555555555555555 55555555e35555555555555555555555 +r pinsrb $12 55572620ab0f011d 55555555555555555555555555555555 5555551d555555555555555555555555 +m pinsrb $12 55572620ab0f011d 55555555555555555555555555555555 5555551d555555555555555555555555 +r pinsrb $13 b4781cf689a66f00 55555555555555555555555555555555 55550055555555555555555555555555 +m pinsrb $13 b4781cf689a66f00 55555555555555555555555555555555 55550055555555555555555555555555 +r pinsrb $14 28275d8857f70c71 55555555555555555555555555555555 55715555555555555555555555555555 +m pinsrb $14 28275d8857f70c71 55555555555555555555555555555555 55715555555555555555555555555555 +r pinsrb $15 ef4917b37e37a9b5 55555555555555555555555555555555 b5555555555555555555555555555555 +m pinsrb $15 ef4917b37e37a9b5 55555555555555555555555555555555 b5555555555555555555555555555555 +r pmaxsb 1f1030333fb8fa4b2feb05cb92ed4f4d 385e4166df2141ad63a8769192481679 385e41663f21414b63eb76cb92484f79 +m pmaxsb 1f1030333fb8fa4b2feb05cb92ed4f4d 385e4166df2141ad63a8769192481679 385e41663f21414b63eb76cb92484f79 +r pmaxsb dbacfa35b7d2b75af8ad6b99bb3fa4c2 c673c91ec9aed3f8b9c3e32f2103009d db73fa35c9d2d35af8c36b2f213f00c2 +m pmaxsb dbacfa35b7d2b75af8ad6b99bb3fa4c2 c673c91ec9aed3f8b9c3e32f2103009d db73fa35c9d2d35af8c36b2f213f00c2 +r pmaxsb 928efefdf9f5ec8d5313bd01b82612e0 bc36ca100a4a3a7d5127ba1c529aa0bf bc36fe100a4a3a7d5327bd1c522612e0 +m pmaxsb 928efefdf9f5ec8d5313bd01b82612e0 bc36ca100a4a3a7d5127ba1c529aa0bf bc36fe100a4a3a7d5327bd1c522612e0 +r pmaxsb 9f043af6a1aed58f1ee978efa4b054d2 76f140aa4182b4e706a17746411ab40c 760440f641aed5e71ee97846411a540c +m pmaxsb 9f043af6a1aed58f1ee978efa4b054d2 76f140aa4182b4e706a17746411ab40c 760440f641aed5e71ee97846411a540c +r pmaxsb 5e58aa8b4c88ae0d34fa174f9ce927c4 51f2275707e17ae4b3fd9698098ef5b0 5e5827574ce17a0d34fd174f09e927c4 +m pmaxsb 5e58aa8b4c88ae0d34fa174f9ce927c4 51f2275707e17ae4b3fd9698098ef5b0 5e5827574ce17a0d34fd174f09e927c4 +r pmaxsb 2ad7482a960fb2b27014160ebbdb47e4 a7837c83faf3cb1d360794fec60222d6 2ad77c2afa0fcb1d7014160ec60247e4 +m pmaxsb 2ad7482a960fb2b27014160ebbdb47e4 a7837c83faf3cb1d360794fec60222d6 2ad77c2afa0fcb1d7014160ec60247e4 +r pmaxsb 61cd123e19cf1e2bb001f1161e946f5c d5f13a9ab645e140698bec649583f5aa 61f13a3e19451e406901f1641e946f5c +m pmaxsb 61cd123e19cf1e2bb001f1161e946f5c d5f13a9ab645e140698bec649583f5aa 61f13a3e19451e406901f1641e946f5c +r pmaxsb 5e86033374552e23ce8e2455e0205c58 37885d08d662faf92a541ab7911c2b5a 5e885d3374622e232a542455e0205c5a +m pmaxsb 5e86033374552e23ce8e2455e0205c58 37885d08d662faf92a541ab7911c2b5a 5e885d3374622e232a542455e0205c5a +r pmaxsb 7c4e1775412d1d47a8872cb61d8aca05 2993e139f7d64ff4532f9ae1d7da8010 7c4e1775412d4f47532f2ce11ddaca10 +m pmaxsb 7c4e1775412d1d47a8872cb61d8aca05 2993e139f7d64ff4532f9ae1d7da8010 7c4e1775412d4f47532f2ce11ddaca10 +r pmaxsb 19714a711ce1284318b88425f2de758f 0760c299b42e1fdcc2e9e9cf82c7aff8 19714a711c2e284318e9e925f2de75f8 +m pmaxsb 19714a711ce1284318b88425f2de758f 0760c299b42e1fdcc2e9e9cf82c7aff8 19714a711c2e284318e9e925f2de75f8 +r pmaxsd 8f3a9991a2ff8bc2fceca88e7b281821 2d39fd95a9f5a45d514c816eaff2763f 2d39fd95a9f5a45d514c816e7b281821 +m pmaxsd 8f3a9991a2ff8bc2fceca88e7b281821 2d39fd95a9f5a45d514c816eaff2763f 2d39fd95a9f5a45d514c816e7b281821 +r pmaxsd 3cf6fe426e1281712ef114ddd37570e8 f76b8d9773b81b24de24e0a879648e11 3cf6fe4273b81b242ef114dd79648e11 +m pmaxsd 3cf6fe426e1281712ef114ddd37570e8 f76b8d9773b81b24de24e0a879648e11 3cf6fe4273b81b242ef114dd79648e11 +r pmaxsd 7af177f11da748fc8b9145fe16d0390f c1426e0dae01c0dd433f816bfd2bb699 7af177f11da748fc433f816b16d0390f +m pmaxsd 7af177f11da748fc8b9145fe16d0390f c1426e0dae01c0dd433f816bfd2bb699 7af177f11da748fc433f816b16d0390f +r pmaxsd a77700084a491a0ef099b6dd61462ec3 e70a9c61f55fce335d68e1a25652a804 e70a9c614a491a0e5d68e1a261462ec3 +m pmaxsd a77700084a491a0ef099b6dd61462ec3 e70a9c61f55fce335d68e1a25652a804 e70a9c614a491a0e5d68e1a261462ec3 +r pmaxsd 1dd493f59184345437d5e366d0e20c30 c50f1401e45b82d3086a7a39a1e6217d 1dd493f5e45b82d337d5e366d0e20c30 +m pmaxsd 1dd493f59184345437d5e366d0e20c30 c50f1401e45b82d3086a7a39a1e6217d 1dd493f5e45b82d337d5e366d0e20c30 +r pmaxsd 3a542e238fe5d1793d1148867eb08f81 b79cd058188318692112ca1cf9f1dd31 3a542e23188318693d1148867eb08f81 +m pmaxsd 3a542e238fe5d1793d1148867eb08f81 b79cd058188318692112ca1cf9f1dd31 3a542e23188318693d1148867eb08f81 +r pmaxsd 5842cbfee0f72e2ade18612787bc73e3 19ffced22c62cba0822c4c377b82984c 5842cbfe2c62cba0de1861277b82984c +m pmaxsd 5842cbfee0f72e2ade18612787bc73e3 19ffced22c62cba0822c4c377b82984c 5842cbfe2c62cba0de1861277b82984c +r pmaxsd d4ec68f21f468712f7b8ab3708137382 478209dbbd84d92508847c7642a20df9 478209db1f46871208847c7642a20df9 +m pmaxsd d4ec68f21f468712f7b8ab3708137382 478209dbbd84d92508847c7642a20df9 478209db1f46871208847c7642a20df9 +r pmaxsd 0b9c016be95f18de62bba1a11cc04c89 9c727edf66767ca38fe6d7c56a5ff965 0b9c016b66767ca362bba1a16a5ff965 +m pmaxsd 0b9c016be95f18de62bba1a11cc04c89 9c727edf66767ca38fe6d7c56a5ff965 0b9c016b66767ca362bba1a16a5ff965 +r pmaxsd 579f90d5d9cd1c3afceebf50e0d0ba24 761b274ac4c4f0c7f31ed81010c417bc 761b274ad9cd1c3afceebf5010c417bc +m pmaxsd 579f90d5d9cd1c3afceebf50e0d0ba24 761b274ac4c4f0c7f31ed81010c417bc 761b274ad9cd1c3afceebf5010c417bc +r pmaxud 1541139c8b1cd0d1a11d81326f4e7880 30c9028972f8733d11f7fa4450de2529 30c902898b1cd0d1a11d81326f4e7880 +m pmaxud 1541139c8b1cd0d1a11d81326f4e7880 30c9028972f8733d11f7fa4450de2529 30c902898b1cd0d1a11d81326f4e7880 +r pmaxud a1cd852d9cd970502d146432e64644c9 25c80a060da03fb0c33ebc4b44b8ddd8 a1cd852d9cd97050c33ebc4be64644c9 +m pmaxud a1cd852d9cd970502d146432e64644c9 25c80a060da03fb0c33ebc4b44b8ddd8 a1cd852d9cd97050c33ebc4be64644c9 +r pmaxud 5791e2f2a78f37627c9fe23c60c5d82b b3633c2f304791cde6c097130b5efcf6 b3633c2fa78f3762e6c0971360c5d82b +m pmaxud 5791e2f2a78f37627c9fe23c60c5d82b b3633c2f304791cde6c097130b5efcf6 b3633c2fa78f3762e6c0971360c5d82b +r pmaxud 94d7265949ca62b46a8a793cf9d5f0d1 35e7926e777aa43f56470887bfdd3daf 94d72659777aa43f6a8a793cf9d5f0d1 +m pmaxud 94d7265949ca62b46a8a793cf9d5f0d1 35e7926e777aa43f56470887bfdd3daf 94d72659777aa43f6a8a793cf9d5f0d1 +r pmaxud b2ed4ecc1e172df2d3a0a41fce854ae7 06a10a317fc4b5b3ef9f8c927c405d2f b2ed4ecc7fc4b5b3ef9f8c92ce854ae7 +m pmaxud b2ed4ecc1e172df2d3a0a41fce854ae7 06a10a317fc4b5b3ef9f8c927c405d2f b2ed4ecc7fc4b5b3ef9f8c92ce854ae7 +r pmaxud 0e1d55b9c001d4c793aee0cffbdea09a 84db9fe3e4b100d48d969e225f9318a0 84db9fe3e4b100d493aee0cffbdea09a +m pmaxud 0e1d55b9c001d4c793aee0cffbdea09a 84db9fe3e4b100d48d969e225f9318a0 84db9fe3e4b100d493aee0cffbdea09a +r pmaxud 04b4378bce1492e08680a7399beeae16 09e14df041cdc14f0bf7ba2283e22a31 09e14df0ce1492e08680a7399beeae16 +m pmaxud 04b4378bce1492e08680a7399beeae16 09e14df041cdc14f0bf7ba2283e22a31 09e14df0ce1492e08680a7399beeae16 +r pmaxud f0fdf0aee1dda4e888e2774acbc13287 f30110c432a534d0478d5d7e053a4e0c f30110c4e1dda4e888e2774acbc13287 +m pmaxud f0fdf0aee1dda4e888e2774acbc13287 f30110c432a534d0478d5d7e053a4e0c f30110c4e1dda4e888e2774acbc13287 +r pmaxud 2e467d8e98e7468c75a0cbeda561e618 9c86e5cb54c594021c25022200a7415e 9c86e5cb98e7468c75a0cbeda561e618 +m pmaxud 2e467d8e98e7468c75a0cbeda561e618 9c86e5cb54c594021c25022200a7415e 9c86e5cb98e7468c75a0cbeda561e618 +r pmaxud 1adad8978cbfb47829861f0d48dc87f5 62bbc77143b71e92668b24fb9133bf52 62bbc7718cbfb478668b24fb9133bf52 +m pmaxud 1adad8978cbfb47829861f0d48dc87f5 62bbc77143b71e92668b24fb9133bf52 62bbc7718cbfb478668b24fb9133bf52 +r pmaxuw 1004ff355bf02957805ff098ce3ed14b 9fedb2229a090d2c018b42f3d3ec8415 9fedff359a092957805ff098d3ecd14b +m pmaxuw 1004ff355bf02957805ff098ce3ed14b 9fedb2229a090d2c018b42f3d3ec8415 9fedff359a092957805ff098d3ecd14b +r pmaxuw 6c11edd5a106e2d655f9b97953917f46 b168a24af5479e7bc9f1d5f8e2de4bd3 b168edd5f547e2d6c9f1d5f8e2de7f46 +m pmaxuw 6c11edd5a106e2d655f9b97953917f46 b168a24af5479e7bc9f1d5f8e2de4bd3 b168edd5f547e2d6c9f1d5f8e2de7f46 +r pmaxuw 894d9fe1f98d1aa0861ef69cf4e34e11 f2789356f1fb0d2b99885af4db13d1b7 f2789fe1f98d1aa09988f69cf4e3d1b7 +m pmaxuw 894d9fe1f98d1aa0861ef69cf4e34e11 f2789356f1fb0d2b99885af4db13d1b7 f2789fe1f98d1aa09988f69cf4e3d1b7 +r pmaxuw c5040fc700120f62ee9b23edcc40fad9 bf6982b029b396ea4f1e4ed5da99d2ee c50482b029b396eaee9b4ed5da99fad9 +m pmaxuw c5040fc700120f62ee9b23edcc40fad9 bf6982b029b396ea4f1e4ed5da99d2ee c50482b029b396eaee9b4ed5da99fad9 +r pmaxuw 7b813bf15120fbc8683cbc58f8b23fca 74876ac63afb7562c67d2c86fa7c09a3 7b816ac65120fbc8c67dbc58fa7c3fca +m pmaxuw 7b813bf15120fbc8683cbc58f8b23fca 74876ac63afb7562c67d2c86fa7c09a3 7b816ac65120fbc8c67dbc58fa7c3fca +r pmaxuw 07121ecd88441b7dd2cc3eca9347d80f 6e1d4703bf5de53fd97270f257c73303 6e1d4703bf5de53fd97270f29347d80f +m pmaxuw 07121ecd88441b7dd2cc3eca9347d80f 6e1d4703bf5de53fd97270f257c73303 6e1d4703bf5de53fd97270f29347d80f +r pmaxuw c501b4c64209aa2e0719232dba0b82d5 077815d35567232e66c997070e860c39 c501b4c65567aa2e66c99707ba0b82d5 +m pmaxuw c501b4c64209aa2e0719232dba0b82d5 077815d35567232e66c997070e860c39 c501b4c65567aa2e66c99707ba0b82d5 +r pmaxuw 109cfa471afbe686e2ede96f8809f947 9ce5d1a297a56adb474e1bb03bc55073 9ce5fa4797a5e686e2ede96f8809f947 +m pmaxuw 109cfa471afbe686e2ede96f8809f947 9ce5d1a297a56adb474e1bb03bc55073 9ce5fa4797a5e686e2ede96f8809f947 +r pmaxuw 462deabeada6093241150c7a1a4df892 89ad76dc21a1f8f15acd7ad9f991bada 89adeabeada6f8f15acd7ad9f991f892 +m pmaxuw 462deabeada6093241150c7a1a4df892 89ad76dc21a1f8f15acd7ad9f991bada 89adeabeada6f8f15acd7ad9f991f892 +r pmaxuw c201829797974fddfe5d063c8be33ce1 2a1f00ed91e9071d79112f6f64f5079c c201829797974fddfe5d2f6f8be33ce1 +m pmaxuw c201829797974fddfe5d063c8be33ce1 2a1f00ed91e9071d79112f6f64f5079c c201829797974fddfe5d2f6f8be33ce1 +r pminsb df63bd3c7359f634f791559ff8d88161 db866b418009d40a82e7b65c99fdf3e5 db86bd3c8009d40a8291b69f99d881e5 +m pminsb df63bd3c7359f634f791559ff8d88161 db866b418009d40a82e7b65c99fdf3e5 db86bd3c8009d40a8291b69f99d881e5 +r pminsb fba1981add7938e3067d74917c37833e f82db3448c8c9a654f1c8c8db3b639e1 f8a1981a8c8c9ae3061c8c8db3b683e1 +m pminsb fba1981add7938e3067d74917c37833e f82db3448c8c9a654f1c8c8db3b639e1 f8a1981a8c8c9ae3061c8c8db3b683e1 +r pminsb 70050d9d7282529509eddffd330cfda3 de62d56351fe96dabe7a2cefcf2b96bb de05d59d51829695beeddfefcf0c96a3 +m pminsb 70050d9d7282529509eddffd330cfda3 de62d56351fe96dabe7a2cefcf2b96bb de05d59d51829695beeddfefcf0c96a3 +r pminsb 9cdd1a32cd007ff7daac12cf3a64acbd e76fcc086aeb0414a9cd126c0869c6a0 9cddcc08cdeb04f7a9ac12cf0864aca0 +m pminsb 9cdd1a32cd007ff7daac12cf3a64acbd e76fcc086aeb0414a9cd126c0869c6a0 9cddcc08cdeb04f7a9ac12cf0864aca0 +r pminsb d973ba438b80fdb556878af3ad4a4cb8 6fa194a173e020c0ede3baf27b7b85bb d9a194a18b80fdb5ed878af2ad4a85b8 +m pminsb d973ba438b80fdb556878af3ad4a4cb8 6fa194a173e020c0ede3baf27b7b85bb d9a194a18b80fdb5ed878af2ad4a85b8 +r pminsb 8514e93e478d067a5a4ac156a6cb98bf d4442998096825896787a06c436d8e39 8514e998098d06895a87a056a6cb8ebf +m pminsb 8514e93e478d067a5a4ac156a6cb98bf d4442998096825896787a06c436d8e39 8514e998098d06895a87a056a6cb8ebf +r pminsb fa0ba48e9db3d6f2c0c135e244f24dfe 71a4885bc70f501cf18441c67d4b9e45 faa4888e9db3d6f2c08435c644f29efe +m pminsb fa0ba48e9db3d6f2c0c135e244f24dfe 71a4885bc70f501cf18441c67d4b9e45 faa4888e9db3d6f2c08435c644f29efe +r pminsb 95a6e59e2a7fabcb65b86284a1cb27a3 a20cab554a62dd2468a718ec4422710c 95a6ab9e2a62abcb65a71884a1cb27a3 +m pminsb 95a6e59e2a7fabcb65b86284a1cb27a3 a20cab554a62dd2468a718ec4422710c 95a6ab9e2a62abcb65a71884a1cb27a3 +r pminsb b330aadc8a7cbfaf26fbc229d962e2d7 c3ca90f22dec084fa9bca1cab4fdc2ba b3ca90dc8aecbfafa9bca1cab4fdc2ba +m pminsb b330aadc8a7cbfaf26fbc229d962e2d7 c3ca90f22dec084fa9bca1cab4fdc2ba b3ca90dc8aecbfafa9bca1cab4fdc2ba +r pminsb aef4eeb358364f4add55d3bb09c439c9 3028339e0d3a0c468e8f584ceae94e7a aef4ee9e0d360c468e8fd3bbeac439c9 +m pminsb aef4eeb358364f4add55d3bb09c439c9 3028339e0d3a0c468e8f584ceae94e7a aef4ee9e0d360c468e8fd3bbeac439c9 +r pminsd e33fad8f313a964967940f284cfce9a3 45738ec585d726b8f4ecb95e02f1d179 e33fad8f85d726b8f4ecb95e02f1d179 +m pminsd e33fad8f313a964967940f284cfce9a3 45738ec585d726b8f4ecb95e02f1d179 e33fad8f85d726b8f4ecb95e02f1d179 +r pminsd af5de4ddb013d258a082f55bbf17ae91 5df79fd3324f914fb79f41ec172107e2 af5de4ddb013d258a082f55bbf17ae91 +m pminsd af5de4ddb013d258a082f55bbf17ae91 5df79fd3324f914fb79f41ec172107e2 af5de4ddb013d258a082f55bbf17ae91 +r pminsd 6c9a8e07714d3d2264ecfe407d2043c1 d6006035af2e8bb7b3736be34585abe2 d6006035af2e8bb7b3736be34585abe2 +m pminsd 6c9a8e07714d3d2264ecfe407d2043c1 d6006035af2e8bb7b3736be34585abe2 d6006035af2e8bb7b3736be34585abe2 +r pminsd 7742a77a117513548f9ea7c3a323665c 0bd9cf5599014e9dc435b32da92a7aa5 0bd9cf5599014e9d8f9ea7c3a323665c +m pminsd 7742a77a117513548f9ea7c3a323665c 0bd9cf5599014e9dc435b32da92a7aa5 0bd9cf5599014e9d8f9ea7c3a323665c +r pminsd 2ca02ba32b169299fd646dd04c2dd191 57d0e8a18b5417adc6b295b85f1c3056 2ca02ba38b5417adc6b295b84c2dd191 +m pminsd 2ca02ba32b169299fd646dd04c2dd191 57d0e8a18b5417adc6b295b85f1c3056 2ca02ba38b5417adc6b295b84c2dd191 +r pminsd e70216ec5cbcf49e8a09cb539549408a 182fa58322b1219295b48e6f81658922 e70216ec22b121928a09cb5381658922 +m pminsd e70216ec5cbcf49e8a09cb539549408a 182fa58322b1219295b48e6f81658922 e70216ec22b121928a09cb5381658922 +r pminsd 05b265c33ff4760f125b3d3899837173 a9430469f9a6aaf90d07193d2e134034 a9430469f9a6aaf90d07193d99837173 +m pminsd 05b265c33ff4760f125b3d3899837173 a9430469f9a6aaf90d07193d2e134034 a9430469f9a6aaf90d07193d99837173 +r pminsd e0fd1393714954977124406c74e81e7a 655800beacbeec8e0a79b210803112b9 e0fd1393acbeec8e0a79b210803112b9 +m pminsd e0fd1393714954977124406c74e81e7a 655800beacbeec8e0a79b210803112b9 e0fd1393acbeec8e0a79b210803112b9 +r pminsd d52f1cc78e47c9e383314ed9438203c8 aaba95edd88623fc68d5d5d393ccbadd aaba95ed8e47c9e383314ed993ccbadd +m pminsd d52f1cc78e47c9e383314ed9438203c8 aaba95edd88623fc68d5d5d393ccbadd aaba95ed8e47c9e383314ed993ccbadd +r pminsd 40947ccd307b129e244ee56d2260de8c d2b5bf6419898df003e6fe7283eff6cb d2b5bf6419898df003e6fe7283eff6cb +m pminsd 40947ccd307b129e244ee56d2260de8c d2b5bf6419898df003e6fe7283eff6cb d2b5bf6419898df003e6fe7283eff6cb +r pminud 7d772f10f5706b75304780122c8b69f0 3b947b8f0a536415b779aada6ea680b0 3b947b8f0a536415304780122c8b69f0 +m pminud 7d772f10f5706b75304780122c8b69f0 3b947b8f0a536415b779aada6ea680b0 3b947b8f0a536415304780122c8b69f0 +r pminud e82632fc79b30f1483e79bb67d116120 3fa5c4d84771e518605a54f56dfe15b7 3fa5c4d84771e518605a54f56dfe15b7 +m pminud e82632fc79b30f1483e79bb67d116120 3fa5c4d84771e518605a54f56dfe15b7 3fa5c4d84771e518605a54f56dfe15b7 +r pminud ddeb80fe57ce3c26f9fcb34432fe8249 3b3296ac6d6e4ba4d95578b09e02700d 3b3296ac57ce3c26d95578b032fe8249 +m pminud ddeb80fe57ce3c26f9fcb34432fe8249 3b3296ac6d6e4ba4d95578b09e02700d 3b3296ac57ce3c26d95578b032fe8249 +r pminud b71315802c502c586d5043a8665c8797 8c88ed7717d6d466003692f81dbe4ede 8c88ed7717d6d466003692f81dbe4ede +m pminud b71315802c502c586d5043a8665c8797 8c88ed7717d6d466003692f81dbe4ede 8c88ed7717d6d466003692f81dbe4ede +r pminud d4eaedef93c21b55bdb0c6ce36392d36 8cf3c5a6e236ba0ab0c81fb7053f6b55 8cf3c5a693c21b55b0c81fb7053f6b55 +m pminud d4eaedef93c21b55bdb0c6ce36392d36 8cf3c5a6e236ba0ab0c81fb7053f6b55 8cf3c5a693c21b55b0c81fb7053f6b55 +r pminud 8fbc05b829b247cac4e8bba2bda13050 98bf1ba36919393bc4d999db7390839e 8fbc05b829b247cac4d999db7390839e +m pminud 8fbc05b829b247cac4e8bba2bda13050 98bf1ba36919393bc4d999db7390839e 8fbc05b829b247cac4d999db7390839e +r pminud 44d5584589abea635dc49b10189f4c14 0d37eadc490b8fa61a337e4f82bd51e7 0d37eadc490b8fa61a337e4f189f4c14 +m pminud 44d5584589abea635dc49b10189f4c14 0d37eadc490b8fa61a337e4f82bd51e7 0d37eadc490b8fa61a337e4f189f4c14 +r pminud 4f80e2044f3a41cb6610e404623f3cac 45a92ebc1d99f6f68da34afe4ed3935a 45a92ebc1d99f6f66610e4044ed3935a +m pminud 4f80e2044f3a41cb6610e404623f3cac 45a92ebc1d99f6f68da34afe4ed3935a 45a92ebc1d99f6f66610e4044ed3935a +r pminud 0b0b9f6018e987aeba97106bb88dbd45 9d5fe4af824eabd8f8f577d6f4dd0223 0b0b9f6018e987aeba97106bb88dbd45 +m pminud 0b0b9f6018e987aeba97106bb88dbd45 9d5fe4af824eabd8f8f577d6f4dd0223 0b0b9f6018e987aeba97106bb88dbd45 +r pminud d6c08bc57f47f9ba34279d2f35968b0a 71a6062013b6eaf839f583c290e85d6f 71a6062013b6eaf834279d2f35968b0a +m pminud d6c08bc57f47f9ba34279d2f35968b0a 71a6062013b6eaf839f583c290e85d6f 71a6062013b6eaf834279d2f35968b0a +r pminuw 0beca39f21ddd399b28a073ef6656128 1eca927d6d5eee012a6fe8ae3cfe5e6a 0bec927d21ddd3992a6f073e3cfe5e6a +m pminuw 0beca39f21ddd399b28a073ef6656128 1eca927d6d5eee012a6fe8ae3cfe5e6a 0bec927d21ddd3992a6f073e3cfe5e6a +r pminuw 05dbe25a9a3951f70e8dc8821606fcca fe1783322bd1f4a0a92e2587172ec23f 05db83322bd151f70e8d25871606c23f +m pminuw 05dbe25a9a3951f70e8dc8821606fcca fe1783322bd1f4a0a92e2587172ec23f 05db83322bd151f70e8d25871606c23f +r pminuw 22d9446284e6ae8126fc5ee9b286181e 6ed9d5a9ea9b388090ffb3373b81451b 22d9446284e6388026fc5ee93b81181e +m pminuw 22d9446284e6ae8126fc5ee9b286181e 6ed9d5a9ea9b388090ffb3373b81451b 22d9446284e6388026fc5ee93b81181e +r pminuw bd31c5237e7128e3d4a3445ee5f0714d ca5b844f4549f54ebdaf0fabc405a22a bd31844f454928e3bdaf0fabc405714d +m pminuw bd31c5237e7128e3d4a3445ee5f0714d ca5b844f4549f54ebdaf0fabc405a22a bd31844f454928e3bdaf0fabc405714d +r pminuw 3131620a2265f8c8f64df6cdcb51c286 6eeb8d90d86668b60a08b6d0cfc59797 3131620a226568b60a08b6d0cb519797 +m pminuw 3131620a2265f8c8f64df6cdcb51c286 6eeb8d90d86668b60a08b6d0cfc59797 3131620a226568b60a08b6d0cb519797 +r pminuw dc2316810c4e5ddd66c8f02281b3c8f2 b6d3ebd9407ecd6355d7239077cddd8e b6d316810c4e5ddd55d7239077cdc8f2 +m pminuw dc2316810c4e5ddd66c8f02281b3c8f2 b6d3ebd9407ecd6355d7239077cddd8e b6d316810c4e5ddd55d7239077cdc8f2 +r pminuw 1854ddf6d8b991ce01deaf4923243fc0 fe609a94181e600278e7d2d9d92a333d 18549a94181e600201deaf492324333d +m pminuw 1854ddf6d8b991ce01deaf4923243fc0 fe609a94181e600278e7d2d9d92a333d 18549a94181e600201deaf492324333d +r pminuw 4210b3d32431d146a45cad2eccb0e21a a2de962ffdd15c3e50063f9610e753cd 4210962f24315c3e50063f9610e753cd +m pminuw 4210b3d32431d146a45cad2eccb0e21a a2de962ffdd15c3e50063f9610e753cd 4210962f24315c3e50063f9610e753cd +r pminuw b7a39486894259f1290e68be98626e2d fe98dc158b24fec4bafee7b33811fa6d b7a39486894259f1290e68be38116e2d +m pminuw b7a39486894259f1290e68be98626e2d fe98dc158b24fec4bafee7b33811fa6d b7a39486894259f1290e68be38116e2d +r pminuw d1587d7aa579647d6dc05be3a4469f24 6ddc67b25da28240909c451c6eb3e447 6ddc67b25da2647d6dc0451c6eb39f24 +m pminuw d1587d7aa579647d6dc05be3a4469f24 6ddc67b25da28240909c451c6eb3e447 6ddc67b25da2647d6dc0451c6eb39f24 +r pmovsxbw ee7d691b146130944d3d038a0b69312c 4df433720fd7245dafacd5bdced9cd88 004d003d0003ff8a000b00690031002c +m pmovsxbw ee7d691b146130944d3d038a0b69312c 4df433720fd7245dafacd5bdced9cd88 004d003d0003ff8a000b00690031002c +r pmovsxbw 685c54d57186f6e2a353dba0ead5df70 f92e3cc13e4f1fc8f3fa1382738f705b ffa30053ffdbffa0ffeaffd5ffdf0070 +m pmovsxbw 685c54d57186f6e2a353dba0ead5df70 f92e3cc13e4f1fc8f3fa1382738f705b ffa30053ffdbffa0ffeaffd5ffdf0070 +r pmovsxbw 9c423a145875f5144ccc5e105c99661d cdd47e0b8597b02c38527c577ae28aed 004cffcc005e0010005cff990066001d +m pmovsxbw 9c423a145875f5144ccc5e105c99661d cdd47e0b8597b02c38527c577ae28aed 004cffcc005e0010005cff990066001d +r pmovsxbw e77b184466b967d624750ac67ebe825f 2533f6bc813a13365b808a28feded669 00240075000affc6007effbeff82005f +m pmovsxbw e77b184466b967d624750ac67ebe825f 2533f6bc813a13365b808a28feded669 00240075000affc6007effbeff82005f +r pmovsxbw a353e8d137de89d3071b5bad6b52ee61 5c979f40cdc58392364fbbe21b8d12fc 0007001b005bffad006b0052ffee0061 +m pmovsxbw a353e8d137de89d3071b5bad6b52ee61 5c979f40cdc58392364fbbe21b8d12fc 0007001b005bffad006b0052ffee0061 +r pmovsxbw 2d16a827667197b8d187cbb340606850 d04b750405c33deba68d8a6feefdf8d2 ffd1ff87ffcbffb30040006000680050 +m pmovsxbw 2d16a827667197b8d187cbb340606850 d04b750405c33deba68d8a6feefdf8d2 ffd1ff87ffcbffb30040006000680050 +r pmovsxbw e11053b38ffdcd305e88d8c318f5aa57 dc9d7472c7c07dee870474bd92394516 005eff88ffd8ffc30018fff5ffaa0057 +m pmovsxbw e11053b38ffdcd305e88d8c318f5aa57 dc9d7472c7c07dee870474bd92394516 005eff88ffd8ffc30018fff5ffaa0057 +r pmovsxbw 1b8ce6e04f0e66e88ae9fdca101c70a3 dbd798f8ac487f46b581f3b7244eb4f5 ff8affe9fffdffca0010001c0070ffa3 +m pmovsxbw 1b8ce6e04f0e66e88ae9fdca101c70a3 dbd798f8ac487f46b581f3b7244eb4f5 ff8affe9fffdffca0010001c0070ffa3 +r pmovsxbw 37d75b1941319f8c3175b6b243e17860 2b46de0152e87ea00ccf8549bf47029a 00310075ffb6ffb20043ffe100780060 +m pmovsxbw 37d75b1941319f8c3175b6b243e17860 2b46de0152e87ea00ccf8549bf47029a 00310075ffb6ffb20043ffe100780060 +r pmovsxbw 913db0cc02f1b3c72ff97f68cd517cb9 263641f8552cb7a768bca55e8030eb32 002ffff9007f0068ffcd0051007cffb9 +m pmovsxbw 913db0cc02f1b3c72ff97f68cd517cb9 263641f8552cb7a768bca55e8030eb32 002ffff9007f0068ffcd0051007cffb9 +r pmovsxbd 850ae0642ddae0466041d5d9cb7738db 2af3bd4b509e6608a513cfe482162be8 ffffffcb0000007700000038ffffffdb +m pmovsxbd 850ae0642ddae0466041d5d9cb7738db 2af3bd4b509e6608a513cfe482162be8 ffffffcb0000007700000038ffffffdb +r pmovsxbd 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 000000590000005f0000006afffffff1 +m pmovsxbd 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 000000590000005f0000006afffffff1 +r pmovsxbd ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 ffffff9200000016ffffffcc00000028 +m pmovsxbd ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 ffffff9200000016ffffffcc00000028 +r pmovsxbd 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c ffffff92ffffffa70000001bffffffac +m pmovsxbd 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c ffffff92ffffffa70000001bffffffac +r pmovsxbd 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 000000760000001e00000013ffffffa8 +m pmovsxbd 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 000000760000001e00000013ffffffa8 +r pmovsxbd e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 0000005affffff880000006f00000048 +m pmovsxbd e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 0000005affffff880000006f00000048 +r pmovsxbd ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00000058fffffff0ffffffecffffffba +m pmovsxbd ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00000058fffffff0ffffffecffffffba +r pmovsxbd 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af ffffff8f000000620000004600000028 +m pmovsxbd 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af ffffff8f000000620000004600000028 +r pmovsxbd ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00000018ffffffeb00000039ffffffbe +m pmovsxbd ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00000018ffffffeb00000039ffffffbe +r pmovsxbd 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 00000012ffffff96ffffff80ffffffa9 +m pmovsxbd 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 00000012ffffff96ffffff80ffffffa9 +r pmovsxbq 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d ffffffffffffffd80000000000000015 +m pmovsxbq 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d ffffffffffffffd80000000000000015 +r pmovsxbq 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc fffffffffffffffd000000000000002d +m pmovsxbq 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc fffffffffffffffd000000000000002d +r pmovsxbq b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a ffffffffffffffaa000000000000001e +m pmovsxbq b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a ffffffffffffffaa000000000000001e +r pmovsxbq 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 ffffffffffffff9c0000000000000014 +m pmovsxbq 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 ffffffffffffff9c0000000000000014 +r pmovsxbq 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 ffffffffffffff8f000000000000003a +m pmovsxbq 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 ffffffffffffff8f000000000000003a +r pmovsxbq 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 000000000000003fffffffffffffffbc +m pmovsxbq 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 000000000000003fffffffffffffffbc +r pmovsxbq d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 0000000000000067ffffffffffffffc8 +m pmovsxbq d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 0000000000000067ffffffffffffffc8 +r pmovsxbq fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd ffffffffffffffc4ffffffffffffff88 +m pmovsxbq fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd ffffffffffffffc4ffffffffffffff88 +r pmovsxbq 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00000000000000120000000000000028 +m pmovsxbq 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00000000000000120000000000000028 +r pmovsxbq e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 000000000000000cffffffffffffffd5 +m pmovsxbq e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 000000000000000cffffffffffffffd5 +r pmovsxwd 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 000072bb00007bf9ffffcc3200006fbb +m pmovsxwd 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 000072bb00007bf9ffffcc3200006fbb +r pmovsxwd ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00005527000035a2ffff8721fffff705 +m pmovsxwd ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00005527000035a2ffff8721fffff705 +r pmovsxwd 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 000054e00000244c00001dcf000060e0 +m pmovsxwd 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 000054e00000244c00001dcf000060e0 +r pmovsxwd 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 000049b0ffffc2e5ffffab4700006577 +m pmovsxwd 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 000049b0ffffc2e5ffffab4700006577 +r pmovsxwd 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00001165ffff8d5700004d95ffffc3f7 +m pmovsxwd 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00001165ffff8d5700004d95ffffc3f7 +r pmovsxwd fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 ffff88c90000009000001dc50000368c +m pmovsxwd fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 ffff88c90000009000001dc50000368c +r pmovsxwd ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 ffff8aa9ffff987b000039e400007961 +m pmovsxwd ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 ffff8aa9ffff987b000039e400007961 +r pmovsxwd c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e fffff3d1ffffcf04ffffbdfd00004aa3 +m pmovsxwd c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e fffff3d1ffffcf04ffffbdfd00004aa3 +r pmovsxwd 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 ffff9f0d00002317ffffc41d0000637d +m pmovsxwd 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 ffff9f0d00002317ffffc41d0000637d +r pmovsxwd 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00006a2800000fa000006b4fffff801c +m pmovsxwd 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00006a2800000fa000006b4fffff801c +r pmovsxwq 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 ffffffffffffcd9f0000000000005fac +m pmovsxwq 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 ffffffffffffcd9f0000000000005fac +r pmovsxwq 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 000000000000071affffffffffffba58 +m pmovsxwq 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 000000000000071affffffffffffba58 +r pmovsxwq 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00000000000034cb0000000000004d4d +m pmovsxwq 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00000000000034cb0000000000004d4d +r pmovsxwq 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 00000000000070beffffffffffffd6b6 +m pmovsxwq 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 00000000000070beffffffffffffd6b6 +r pmovsxwq bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 ffffffffffffd8000000000000000fc0 +m pmovsxwq bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 ffffffffffffd8000000000000000fc0 +r pmovsxwq 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 ffffffffffff879cffffffffffffb597 +m pmovsxwq 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 ffffffffffff879cffffffffffffb597 +r pmovsxwq 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c ffffffffffff9a9effffffffffff8466 +m pmovsxwq 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c ffffffffffff9a9effffffffffff8466 +r pmovsxwq ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0000000000002d13000000000000375a +m pmovsxwq ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0000000000002d13000000000000375a +r pmovsxwq 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0000000000005b06ffffffffffff8b9e +m pmovsxwq 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0000000000005b06ffffffffffff8b9e +r pmovsxwq c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 00000000000040830000000000003c5f +m pmovsxwq c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 00000000000040830000000000003c5f +r pmovsxdq 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e ffffffffe8f5f99ffffffffff99706c8 +m pmovsxdq 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e ffffffffe8f5f99ffffffffff99706c8 +r pmovsxdq 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 000000002eb7cf99ffffffffa14da407 +m pmovsxdq 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 000000002eb7cf99ffffffffa14da407 +r pmovsxdq 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 ffffffffc0b48a060000000055b1d345 +m pmovsxdq 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 ffffffffc0b48a060000000055b1d345 +r pmovsxdq 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 0000000078baa5d00000000030d04fb1 +m pmovsxdq 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 0000000078baa5d00000000030d04fb1 +r pmovsxdq 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 0000000034939ce5000000004eb5d374 +m pmovsxdq 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 0000000034939ce5000000004eb5d374 +r pmovsxdq 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 ffffffffce0cec2fffffffffcc6d1cbd +m pmovsxdq 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 ffffffffce0cec2fffffffffcc6d1cbd +r pmovsxdq 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 0000000024f10f9cffffffffc602e6b6 +m pmovsxdq 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 0000000024f10f9cffffffffc602e6b6 +r pmovsxdq e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 00000000100e8317000000005782ed8c +m pmovsxdq e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 00000000100e8317000000005782ed8c +r pmovsxdq 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 00000000702ec38cffffffff9cf9ec6a +m pmovsxdq 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 00000000702ec38cffffffff9cf9ec6a +r pmovsxdq fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 000000001e1f4ce7ffffffffb072a07d +m pmovsxdq fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 000000001e1f4ce7ffffffffb072a07d +r pmovzxbw 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 00f800ab0098001400af00f900c500f0 +m pmovzxbw 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 00f800ab0098001400af00f900c500f0 +r pmovzxbw 5e28e61e7d9809fed89f25ffb69a16f0 dc31117d86c46bc9c3241e0a49fd7e17 00d8009f002500ff00b6009a001600f0 +m pmovzxbw 5e28e61e7d9809fed89f25ffb69a16f0 dc31117d86c46bc9c3241e0a49fd7e17 00d8009f002500ff00b6009a001600f0 +r pmovzxbw d1f115970180fe0f9bc76e95e06250a9 b6a224a9b26dfb35eb12d4ad50bc53dc 009b00c7006e009500e00062005000a9 +m pmovzxbw d1f115970180fe0f9bc76e95e06250a9 b6a224a9b26dfb35eb12d4ad50bc53dc 009b00c7006e009500e00062005000a9 +r pmovzxbw e9dd4c503b8c78011defefc04a5c2f46 a49c7d8b21406d977fa6409c64f46bdc 001d00ef00ef00c0004a005c002f0046 +m pmovzxbw e9dd4c503b8c78011defefc04a5c2f46 a49c7d8b21406d977fa6409c64f46bdc 001d00ef00ef00c0004a005c002f0046 +r pmovzxbw 033786b7c84ab17d3be2256e10956ff4 026a179172ccfc9a5caddec3a1b08243 003b00e20025006e00100095006f00f4 +m pmovzxbw 033786b7c84ab17d3be2256e10956ff4 026a179172ccfc9a5caddec3a1b08243 003b00e20025006e00100095006f00f4 +r pmovzxbw 7c4dbf374346e632cf6e8a894c18cbde 2c59ee263f9ae6eb5ef02a0e24fd533c 00cf006e008a0089004c001800cb00de +m pmovzxbw 7c4dbf374346e632cf6e8a894c18cbde 2c59ee263f9ae6eb5ef02a0e24fd533c 00cf006e008a0089004c001800cb00de +r pmovzxbw ae69f33c480a53cab65d9cff1df10031 7db5feb724386535623ea06909e69bf4 00b6005d009c00ff001d00f100000031 +m pmovzxbw ae69f33c480a53cab65d9cff1df10031 7db5feb724386535623ea06909e69bf4 00b6005d009c00ff001d00f100000031 +r pmovzxbw f6d81f33742433f2cc7dd6bb9c2cca19 53ca44aebd31b5254262bdc16b771596 00cc007d00d600bb009c002c00ca0019 +m pmovzxbw f6d81f33742433f2cc7dd6bb9c2cca19 53ca44aebd31b5254262bdc16b771596 00cc007d00d600bb009c002c00ca0019 +r pmovzxbw b0e63d866320c355ed98b4a9e8d6e4c1 09e4bb78a8121467db27fc0066bc7f4f 00ed009800b400a900e800d600e400c1 +m pmovzxbw b0e63d866320c355ed98b4a9e8d6e4c1 09e4bb78a8121467db27fc0066bc7f4f 00ed009800b400a900e800d600e400c1 +r pmovzxbw 39df4ba2b0883fa0f57ab3b51afb0c56 fb4f5f827e66bca6095bd91417c2934b 00f5007a00b300b5001a00fb000c0056 +m pmovzxbw 39df4ba2b0883fa0f57ab3b51afb0c56 fb4f5f827e66bca6095bd91417c2934b 00f5007a00b300b5001a00fb000c0056 +r pmovzxbd eb0e45f4f7eae27ec0f14ecb50a5fc04 84562c36ddb9ea8ea8c8d0e79a950eb5 00000050000000a5000000fc00000004 +m pmovzxbd eb0e45f4f7eae27ec0f14ecb50a5fc04 84562c36ddb9ea8ea8c8d0e79a950eb5 00000050000000a5000000fc00000004 +r pmovzxbd 23c025e6d5d2e99c2ac801d7a6e270f6 02471f026197d9cd943b5e67093fabba 000000a6000000e200000070000000f6 +m pmovzxbd 23c025e6d5d2e99c2ac801d7a6e270f6 02471f026197d9cd943b5e67093fabba 000000a6000000e200000070000000f6 +r pmovzxbd 3d42e9e6e5cb90a60fca48c537bd2658 cf6c3250a58dc60da980fe7f83ce2785 00000037000000bd0000002600000058 +m pmovzxbd 3d42e9e6e5cb90a60fca48c537bd2658 cf6c3250a58dc60da980fe7f83ce2785 00000037000000bd0000002600000058 +r pmovzxbd 95de8b5fc46113474bc49f812043d857 4912638e4626edfac3622c1b224d3e43 0000002000000043000000d800000057 +m pmovzxbd 95de8b5fc46113474bc49f812043d857 4912638e4626edfac3622c1b224d3e43 0000002000000043000000d800000057 +r pmovzxbd 87e109bc0d20ad2cba8283f87c7f421f cb85ad27dfef8a41beaf642702c9ac20 0000007c0000007f000000420000001f +m pmovzxbd 87e109bc0d20ad2cba8283f87c7f421f cb85ad27dfef8a41beaf642702c9ac20 0000007c0000007f000000420000001f +r pmovzxbd 6f975f6b5d959b0038d06f14677d22db b0100d870c73d98e7631228f404d2c47 000000670000007d00000022000000db +m pmovzxbd 6f975f6b5d959b0038d06f14677d22db b0100d870c73d98e7631228f404d2c47 000000670000007d00000022000000db +r pmovzxbd a94b87d74f4b1970a17adfc3fe4a32b8 56017d1a6a3e158cc6b5e33ff7e57be5 000000fe0000004a00000032000000b8 +m pmovzxbd a94b87d74f4b1970a17adfc3fe4a32b8 56017d1a6a3e158cc6b5e33ff7e57be5 000000fe0000004a00000032000000b8 +r pmovzxbd 914b7f6c80ce6328d14c4ff05df12fe2 17a2fb4c94dd7be88c072223439e5525 0000005d000000f10000002f000000e2 +m pmovzxbd 914b7f6c80ce6328d14c4ff05df12fe2 17a2fb4c94dd7be88c072223439e5525 0000005d000000f10000002f000000e2 +r pmovzxbd 83e142978babb4d3a4113b879f7ed584 5040828927db464ea3f35b2742837634 0000009f0000007e000000d500000084 +m pmovzxbd 83e142978babb4d3a4113b879f7ed584 5040828927db464ea3f35b2742837634 0000009f0000007e000000d500000084 +r pmovzxbd db5accc20d6d491ef5972073e0fedfcb 5e270e3ebfc4b369e7450a380da0993e 000000e0000000fe000000df000000cb +m pmovzxbd db5accc20d6d491ef5972073e0fedfcb 5e270e3ebfc4b369e7450a380da0993e 000000e0000000fe000000df000000cb +r pmovzxbq f502195aa1a15db4a2a879a23d7c0ae2 9ba39cd5f625fee533c9ac40c2027b6e 000000000000000a00000000000000e2 +m pmovzxbq f502195aa1a15db4a2a879a23d7c0ae2 9ba39cd5f625fee533c9ac40c2027b6e 000000000000000a00000000000000e2 +r pmovzxbq 2c2526cce3d22e428611c200d10412f6 640027bc6b896370654abc2d7db4d8f1 000000000000001200000000000000f6 +m pmovzxbq 2c2526cce3d22e428611c200d10412f6 640027bc6b896370654abc2d7db4d8f1 000000000000001200000000000000f6 +r pmovzxbq de0fee83708cf6737d9e7877b9a3b333 168aaa5db77c1eb35895b6ea59c26bf2 00000000000000b30000000000000033 +m pmovzxbq de0fee83708cf6737d9e7877b9a3b333 168aaa5db77c1eb35895b6ea59c26bf2 00000000000000b30000000000000033 +r pmovzxbq 660b6deae45bf2f5621a15f41064a8c4 0b8c2426798b6a5de77616637239f19e 00000000000000a800000000000000c4 +m pmovzxbq 660b6deae45bf2f5621a15f41064a8c4 0b8c2426798b6a5de77616637239f19e 00000000000000a800000000000000c4 +r pmovzxbq 20669f6fdacc5d7113531763f353aed5 a0538e824a418418f0b95884e5242620 00000000000000ae00000000000000d5 +m pmovzxbq 20669f6fdacc5d7113531763f353aed5 a0538e824a418418f0b95884e5242620 00000000000000ae00000000000000d5 +r pmovzxbq 676d807dee6a75966a13f9b17d7d8194 312ce5ddc92aa7904e2af939ce90c5a5 00000000000000810000000000000094 +m pmovzxbq 676d807dee6a75966a13f9b17d7d8194 312ce5ddc92aa7904e2af939ce90c5a5 00000000000000810000000000000094 +r pmovzxbq 996a0d80bdc2740e452737c8cbeddc2b 1a6126a38fd31173dc95746e47878c59 00000000000000dc000000000000002b +m pmovzxbq 996a0d80bdc2740e452737c8cbeddc2b 1a6126a38fd31173dc95746e47878c59 00000000000000dc000000000000002b +r pmovzxbq 11aa41e4e25f96857f5b4e96f8b07cc6 b83e4c403ac7fc6a78c5450f6f173567 000000000000007c00000000000000c6 +m pmovzxbq 11aa41e4e25f96857f5b4e96f8b07cc6 b83e4c403ac7fc6a78c5450f6f173567 000000000000007c00000000000000c6 +r pmovzxbq 2a781815facd19a8f37bb80620d01d92 651153206692a424fc88e808604c7cfc 000000000000001d0000000000000092 +m pmovzxbq 2a781815facd19a8f37bb80620d01d92 651153206692a424fc88e808604c7cfc 000000000000001d0000000000000092 +r pmovzxbq 42228e7fa19937237e53f304605c7bbb 7e2538b0aec1474b46a8d94636311f44 000000000000007b00000000000000bb +m pmovzxbq 42228e7fa19937237e53f304605c7bbb 7e2538b0aec1474b46a8d94636311f44 000000000000007b00000000000000bb +r pmovzxwd b3f2a08f714e2da1fdaf7a7cd45d516c 5fc5f55aaedf1f8b30f295b30ed2d86a 0000fdaf00007a7c0000d45d0000516c +m pmovzxwd b3f2a08f714e2da1fdaf7a7cd45d516c 5fc5f55aaedf1f8b30f295b30ed2d86a 0000fdaf00007a7c0000d45d0000516c +r pmovzxwd db3648af097836cf4a5aca5a97e15cd2 643e888b037969929732973d033b649a 00004a5a0000ca5a000097e100005cd2 +m pmovzxwd db3648af097836cf4a5aca5a97e15cd2 643e888b037969929732973d033b649a 00004a5a0000ca5a000097e100005cd2 +r pmovzxwd 1438844d02a38f5943215d8ac5f35818 e9dcecb04919610958335bce32797f02 0000432100005d8a0000c5f300005818 +m pmovzxwd 1438844d02a38f5943215d8ac5f35818 e9dcecb04919610958335bce32797f02 0000432100005d8a0000c5f300005818 +r pmovzxwd bc4550d3fa5c74eac2d1b1f87b9f006c 4aeb1e341b4e429f4dc35e54b697e4cc 0000c2d10000b1f800007b9f0000006c +m pmovzxwd bc4550d3fa5c74eac2d1b1f87b9f006c 4aeb1e341b4e429f4dc35e54b697e4cc 0000c2d10000b1f800007b9f0000006c +r pmovzxwd 2da9a6af8d2f212ea4344190d5f211f7 e3b7188215a149fe53ac1abaaba25024 0000a434000041900000d5f2000011f7 +m pmovzxwd 2da9a6af8d2f212ea4344190d5f211f7 e3b7188215a149fe53ac1abaaba25024 0000a434000041900000d5f2000011f7 +r pmovzxwd c5af844c56a6d2d3c616893fedf747e7 0f8bd808d4a0b2d247bb0dec2ea57f37 0000c6160000893f0000edf7000047e7 +m pmovzxwd c5af844c56a6d2d3c616893fedf747e7 0f8bd808d4a0b2d247bb0dec2ea57f37 0000c6160000893f0000edf7000047e7 +r pmovzxwd dea5e516f24fc282024505efe2bb5e68 2cb55931f3d6b9c803bdb2d65bac2c31 00000245000005ef0000e2bb00005e68 +m pmovzxwd dea5e516f24fc282024505efe2bb5e68 2cb55931f3d6b9c803bdb2d65bac2c31 00000245000005ef0000e2bb00005e68 +r pmovzxwd d5d5c579fcb62eea358c328ece4911a6 957f97690fcf998c647b85644dc3143d 0000358c0000328e0000ce49000011a6 +m pmovzxwd d5d5c579fcb62eea358c328ece4911a6 957f97690fcf998c647b85644dc3143d 0000358c0000328e0000ce49000011a6 +r pmovzxwd 078c20e1106551b53bb68b07cdad1dcc a6368e1cc3188fca46c4038221f7f388 00003bb600008b070000cdad00001dcc +m pmovzxwd 078c20e1106551b53bb68b07cdad1dcc a6368e1cc3188fca46c4038221f7f388 00003bb600008b070000cdad00001dcc +r pmovzxwd ce16f2bacbea6990f0908c45fcf43e06 bb263bb7ac3dd62d8563a61df253853d 0000f09000008c450000fcf400003e06 +m pmovzxwd ce16f2bacbea6990f0908c45fcf43e06 bb263bb7ac3dd62d8563a61df253853d 0000f09000008c450000fcf400003e06 +r pmovzxwq 87bf3870c9d1b02630e6b13676282f82 2f9b99a465c8ac61fd23ec1fdce48589 00000000000076280000000000002f82 +m pmovzxwq 87bf3870c9d1b02630e6b13676282f82 2f9b99a465c8ac61fd23ec1fdce48589 00000000000076280000000000002f82 +r pmovzxwq 8ed3ed6fa5a46224d78477c55858ae69 60e0a4508b474b138ad25076fcb5b098 0000000000005858000000000000ae69 +m pmovzxwq 8ed3ed6fa5a46224d78477c55858ae69 60e0a4508b474b138ad25076fcb5b098 0000000000005858000000000000ae69 +r pmovzxwq 409d0d24fbf1bd35c23659debd8d75ea a9435828b945f0ef083a4f0c6dd2c295 000000000000bd8d00000000000075ea +m pmovzxwq 409d0d24fbf1bd35c23659debd8d75ea a9435828b945f0ef083a4f0c6dd2c295 000000000000bd8d00000000000075ea +r pmovzxwq f76b95fa6844fb06cbc7d36dc1d5402f 650eb2968b4fd6a0532863cf4c4877ad 000000000000c1d5000000000000402f +m pmovzxwq f76b95fa6844fb06cbc7d36dc1d5402f 650eb2968b4fd6a0532863cf4c4877ad 000000000000c1d5000000000000402f +r pmovzxwq 10877f5c87275943cf05615f813bcd64 f28eac089ff03bd347680aaab4228a0b 000000000000813b000000000000cd64 +m pmovzxwq 10877f5c87275943cf05615f813bcd64 f28eac089ff03bd347680aaab4228a0b 000000000000813b000000000000cd64 +r pmovzxwq e73ec9b8f5291397a9ba7f9e19ccd6b6 aa0f44e98eb45934c0c5bf89c26cb8dc 00000000000019cc000000000000d6b6 +m pmovzxwq e73ec9b8f5291397a9ba7f9e19ccd6b6 aa0f44e98eb45934c0c5bf89c26cb8dc 00000000000019cc000000000000d6b6 +r pmovzxwq d8dc6e794dd364af37b3aa17a4931751 ebdd75a5f6276c6e9a0dfe589133bc4c 000000000000a4930000000000001751 +m pmovzxwq d8dc6e794dd364af37b3aa17a4931751 ebdd75a5f6276c6e9a0dfe589133bc4c 000000000000a4930000000000001751 +r pmovzxwq 3fad6a0b2cb3893654bc5db73e9c4e61 0f443ca873d6b22db10a44033e825486 0000000000003e9c0000000000004e61 +m pmovzxwq 3fad6a0b2cb3893654bc5db73e9c4e61 0f443ca873d6b22db10a44033e825486 0000000000003e9c0000000000004e61 +r pmovzxwq 78fcbada2d54bed9dca1146904f43511 7490935e9f4d651fe1890b76e4653ab7 00000000000004f40000000000003511 +m pmovzxwq 78fcbada2d54bed9dca1146904f43511 7490935e9f4d651fe1890b76e4653ab7 00000000000004f40000000000003511 +r pmovzxwq df175852ed423e44ab2d4b1812a6898d 740c78331916c2ee0656d19da0e92b0a 00000000000012a6000000000000898d +m pmovzxwq df175852ed423e44ab2d4b1812a6898d 740c78331916c2ee0656d19da0e92b0a 00000000000012a6000000000000898d +r pmovzxdq d04842df070a47229d2e7eb283be0602 6d05e6937bbf0446fc3d11658d19e2ac 000000009d2e7eb20000000083be0602 +m pmovzxdq d04842df070a47229d2e7eb283be0602 6d05e6937bbf0446fc3d11658d19e2ac 000000009d2e7eb20000000083be0602 +r pmovzxdq a7dc73ed183713208e6e2a227349679c b9c7d9eb61d469d49e0a48b8c8011cc8 000000008e6e2a22000000007349679c +m pmovzxdq a7dc73ed183713208e6e2a227349679c b9c7d9eb61d469d49e0a48b8c8011cc8 000000008e6e2a22000000007349679c +r pmovzxdq bf1fe8e9bb56dee959baca54ff526986 b59e4ea568df2b44ca89f0846cae958b 0000000059baca5400000000ff526986 +m pmovzxdq bf1fe8e9bb56dee959baca54ff526986 b59e4ea568df2b44ca89f0846cae958b 0000000059baca5400000000ff526986 +r pmovzxdq 765d9b3d8cf2e62adcdeda3442e5c8ed bed6402f2b6e86415b8587b3952b0921 00000000dcdeda340000000042e5c8ed +m pmovzxdq 765d9b3d8cf2e62adcdeda3442e5c8ed bed6402f2b6e86415b8587b3952b0921 00000000dcdeda340000000042e5c8ed +r pmovzxdq 27e28a572897658ef2a6d6ae590f40fd 2ebbabf3470db8782ccb8833608433b6 00000000f2a6d6ae00000000590f40fd +m pmovzxdq 27e28a572897658ef2a6d6ae590f40fd 2ebbabf3470db8782ccb8833608433b6 00000000f2a6d6ae00000000590f40fd +r pmovzxdq 2ef9b0a22bd197c376de3baf5fdb8ce1 62988b5f5746fb941b276fefe9c6d174 0000000076de3baf000000005fdb8ce1 +m pmovzxdq 2ef9b0a22bd197c376de3baf5fdb8ce1 62988b5f5746fb941b276fefe9c6d174 0000000076de3baf000000005fdb8ce1 +r pmovzxdq e7f00989302dba7246518421715669c6 b6badcdef8a78c420365b8d34bfc9c8a 000000004651842100000000715669c6 +m pmovzxdq e7f00989302dba7246518421715669c6 b6badcdef8a78c420365b8d34bfc9c8a 000000004651842100000000715669c6 +r pmovzxdq ad11927ad336084a3ccd2df1aa8a93d7 876d9bdcc5bca72ebf51e0cba2325322 000000003ccd2df100000000aa8a93d7 +m pmovzxdq ad11927ad336084a3ccd2df1aa8a93d7 876d9bdcc5bca72ebf51e0cba2325322 000000003ccd2df100000000aa8a93d7 +r pmovzxdq dea946e0b179bef5361cb20c2785c541 2ffdc2c55b0f87032db762c30b75b069 00000000361cb20c000000002785c541 +m pmovzxdq dea946e0b179bef5361cb20c2785c541 2ffdc2c55b0f87032db762c30b75b069 00000000361cb20c000000002785c541 +r pmovzxdq d50420276581181f0f0b8f5d0353bc2f 0bb64f05552e696e2762baa7a1d0708a 000000000f0b8f5d000000000353bc2f +m pmovzxdq d50420276581181f0f0b8f5d0353bc2f 0bb64f05552e696e2762baa7a1d0708a 000000000f0b8f5d000000000353bc2f +r popcntw 0000000000000000 ce34ff5acf4166a2 ce34ff5acf410000 0000000000000040 +m popcntw 0000000000000000 1a89a54f083de477 1a89a54f083d0000 0000000000000040 +r popcntw 0c08ffc7e4ddbb33 b422ffe63a89d2cf b422ffe63a89000a 0000000000000000 +m popcntw c559ec8d149f00fc e871c8b6082ece6f e871c8b6082e0006 0000000000000000 +r popcntw 09fb20f2e128bbc3 61b28c5adc2722b3 61b28c5adc27000a 0000000000000000 +m popcntw 03ada90f35f4b762 cc21d86e24721bf7 cc21d86e24720009 0000000000000000 +r popcntw e0299202fe7dc2b7 d4f9378f4a0b0597 d4f9378f4a0b0009 0000000000000000 +m popcntw cc2ce7e72741a69c 26773558bcec2cef 26773558bcec0008 0000000000000000 +r popcntw f272b5d99cba30ee 6ed75f66e513db5b 6ed75f66e5130008 0000000000000000 +m popcntw 7eb707f549662d89 57554055317b6037 57554055317b0007 0000000000000000 +r popcntw 9eb6ea561ac16649 8e2c65bf0c2005de 8e2c65bf0c200007 0000000000000000 +m popcntw 7b2c6918fb45aa0b be995943e2ff17ae be995943e2ff0007 0000000000000000 +r popcntw 44d49058d970c4a9 94d8a87a1f12e202 94d8a87a1f120007 0000000000000000 +m popcntw 236c6c329ebd7f00 bc24de033057b236 bc24de0330570007 0000000000000000 +r popcntw 44ae08c138a8a9ec e1ba88777fc9d2a5 e1ba88777fc90009 0000000000000000 +m popcntw d556702191ad0c49 afd632747a6490ad afd632747a640005 0000000000000000 +r popcntw ff22b06f974975f3 d4b466968b2536a9 d4b466968b25000b 0000000000000000 +m popcntw f1ccd5c635f6b0c6 fa8fb278200711f4 fa8fb27820070007 0000000000000000 +r popcntw d511eb435732889e cda4a1b6a4056dec cda4a1b6a4050007 0000000000000000 +m popcntw d7adfc01e979cb57 fa2fc0ed831e96eb fa2fc0ed831e000a 0000000000000000 +r popcntl 0000000000000000 245b161dd74543cd 0000000000000000 0000000000000040 +m popcntl 0000000000000000 a243bdeb3ccc0e27 0000000000000000 0000000000000040 +r popcntl 98c3bba7a1276f65 c0fa163a9712430d 0000000000000011 0000000000000000 +m popcntl e0175e473ea1aa76 d1b9c96387230ffd 0000000000000011 0000000000000000 +r popcntl cdcff4e63114a606 82bc610379fbbf52 000000000000000b 0000000000000000 +m popcntl 8ba888a166fb2df0 7e3f6bb5d7969d6a 0000000000000013 0000000000000000 +r popcntl 445e2793c9d20c12 727d71150ff1f5a0 000000000000000c 0000000000000000 +m popcntl 27addbd946150f47 09b302c08b071550 000000000000000e 0000000000000000 +r popcntl 5e50b28ec941016a f11da752b9d448d6 000000000000000b 0000000000000000 +m popcntl 1604b8cf3fd1b059 d3f7ee660454d98d 0000000000000011 0000000000000000 +r popcntl 7a85f7b79241e6ef 5e7c6298d88315d3 0000000000000011 0000000000000000 +m popcntl b78e7e63b00d7007 3ce99085a05e4803 000000000000000c 0000000000000000 +r popcntl f9dc56ee83b11b7f 197a03c8cbe0be78 0000000000000012 0000000000000000 +m popcntl 6b2b8d75f9aab031 a26a47fec205c390 0000000000000010 0000000000000000 +r popcntl 39372e13fd73fefb 83f6e8c2f2c9a3a6 000000000000001a 0000000000000000 +m popcntl 91bb45e47b88d0b7 675a73b1c729a915 0000000000000011 0000000000000000 +r popcntl 9c74df055f65f142 fbd27466ae20223b 0000000000000011 0000000000000000 +m popcntl 891e079295872f79 eb99757e11aa5a72 0000000000000012 0000000000000000 +r popcntl 8274caa609695436 e2ec04945ec39d18 000000000000000d 0000000000000000 +m popcntl b433335da7872d56 8c07ac4500673787 0000000000000011 0000000000000000 +r popcntq 0000000000000000 4a174ed45c5d85b6 0000000000000000 0000000000000040 +m popcntq 0000000000000000 69dd7fd9222e8b86 0000000000000000 0000000000000040 +r popcntq 2c21c36e1cfbfdf0 45d10b96917d6a21 0000000000000023 0000000000000000 +m popcntq 5e37713e30dcb20f ef9f5a500f89eb08 0000000000000022 0000000000000000 +r popcntq cf443bf0d567f0af 1283f9a2084f5896 0000000000000025 0000000000000000 +m popcntq ab042d9ff51985ac 5bb97329e8c9fe29 0000000000000020 0000000000000000 +r popcntq 1d3253677d6d3be2 767c55801cf5281c 0000000000000024 0000000000000000 +m popcntq 518bba655adfe02d 0e092a440ece24cb 0000000000000022 0000000000000000 +r popcntq 74cb6eb576ec3e6a d09c7e102c503d91 0000000000000026 0000000000000000 +m popcntq b2ad7971bf0e2273 6771dd80e078becc 0000000000000023 0000000000000000 +r popcntq 36efe9b820c35824 80c3d4319841f4d6 000000000000001e 0000000000000000 +m popcntq 2d4bc9a48586ab5b c7cfefbfbfa72b0d 000000000000001f 0000000000000000 +r popcntq c37d2651dad3e9f3 e7d1b8c5c1a6afcb 0000000000000025 0000000000000000 +m popcntq 23430bdc0b26dcc8 8c04bddf093acc6e 000000000000001c 0000000000000000 +r popcntq 7a57846004fc51b6 64a589aa0660cd50 000000000000001d 0000000000000000 +m popcntq f3769ef9b1d01499 18f0a9c22112ffcf 0000000000000023 0000000000000000 +r popcntq bb5b64c5ff1ef14d 5721a8c2c74eaf45 0000000000000027 0000000000000000 +m popcntq fec3e2ddd862b4ad cb73124664102710 0000000000000025 0000000000000000 +r popcntq e76a255f2a192997 212374eb6552b48a 0000000000000021 0000000000000000 +m popcntq a30c3867dfbe1be6 046d594c3412a110 0000000000000024 0000000000000000 +r pmulld ff3c4b3f064d8c217557cde51027645d 5df6d73059dd837e3e8527449ee9f43b b00a04d03a5cdb3ef9a993d40361c56f +m pmulld ff3c4b3f064d8c217557cde51027645d 5df6d73059dd837e3e8527449ee9f43b b00a04d03a5cdb3ef9a993d40361c56f +r pmulld b1cff9f1b4ddbe2322a9c22776ff3042 14227fde7c0f14944c6efdbc0d7a7fc6 655b4dfefb19a83c3a4d1fa4fbc4110c +m pmulld b1cff9f1b4ddbe2322a9c22776ff3042 14227fde7c0f14944c6efdbc0d7a7fc6 655b4dfefb19a83c3a4d1fa4fbc4110c +r pmulld 83a818b6f3943cb7c8dd1991b6cb297d d97955953deed0d281603593a4c5577d 6510cfee4e107e1ec4a0b3434d7dbd09 +m pmulld 83a818b6f3943cb7c8dd1991b6cb297d d97955953deed0d281603593a4c5577d 6510cfee4e107e1ec4a0b3434d7dbd09 +r pmulld d111a5f95efe458942bf4f0fec980e3b 084857c13907f4e2b82548b37fd6378d 13bdbfb99e7ef6f2af2b7f7d2520837f +m pmulld d111a5f95efe458942bf4f0fec980e3b 084857c13907f4e2b82548b37fd6378d 13bdbfb99e7ef6f2af2b7f7d2520837f +r pmulld f7579b2891a813446e1bdf8d327099a8 fcd880ce0be4bb73cf8ab30ab9b9dc22 1fd2da304923538c4f685282e968c850 +m pmulld f7579b2891a813446e1bdf8d327099a8 fcd880ce0be4bb73cf8ab30ab9b9dc22 1fd2da304923538c4f685282e968c850 +r pmulld 51c6f6af2a1de39526bc45f7a76187ef 1378cc285014632fa05bf3836f7b0267 f2b1ff58a223675bc78e42650c228f29 +m pmulld 51c6f6af2a1de39526bc45f7a76187ef 1378cc285014632fa05bf3836f7b0267 f2b1ff58a223675bc78e42650c228f29 +r pmulld 3ca9b2f8c2eaf1274870fd3a6577943d a773373ba32026c309648309bc276589 9df7872852a17ab55235950adbc565a5 +m pmulld 3ca9b2f8c2eaf1274870fd3a6577943d a773373ba32026c309648309bc276589 9df7872852a17ab55235950adbc565a5 +r pmulld 124ecb70f79979a7ae01844088bd7bbe 1614be74a19641dae470df8abcc9c0b3 4b714ec01f6eff36fb050a80697a05da +m pmulld 124ecb70f79979a7ae01844088bd7bbe 1614be74a19641dae470df8abcc9c0b3 4b714ec01f6eff36fb050a80697a05da +r pmulld 30ff3e8365b8b6c1363c54f62d3ffa9d baa85b3de501ef210e4d83f18c6ed012 9c027637eb2ebde1f043dd96b5952f0a +m pmulld 30ff3e8365b8b6c1363c54f62d3ffa9d baa85b3de501ef210e4d83f18c6ed012 9c027637eb2ebde1f043dd96b5952f0a +r pmulld f209069ea7d3e520baedeb496f09ca07 f17c0c040cee6e4364c5ec2b482151d1 26fb82787ca8b7604e0ad143c2d126b7 +m pmulld f209069ea7d3e520baedeb496f09ca07 f17c0c040cee6e4364c5ec2b482151d1 26fb82787ca8b7604e0ad143c2d126b7 +r ptest 00000000000000000000000000000000 00000000000000000000000000000000 -> eflags 0041 +r ptest 00000000000000000000000000000000 00000000000000000000000000000001 -> eflags 0040 +r ptest 00000000000000000000000000000000 00000000000000010000000000000000 -> eflags 0040 +r ptest 00000000000000000000000000000000 00000000000000010000000000000001 -> eflags 0040 +r ptest 00000000000000000000000000000000 ffffffffffffffffffffffffffffffff -> eflags 0040 +r ptest 00000000000000000000000000000000 fffffffffffffffffffffffffffffffe -> eflags 0040 +r ptest 00000000000000000000000000000000 fffffffffffffffeffffffffffffffff -> eflags 0040 +r ptest 00000000000000000000000000000000 fffffffffffffffefffffffffffffffe -> eflags 0040 +r ptest 00000000000000000000000000000001 00000000000000000000000000000000 -> eflags 0041 +r ptest 00000000000000000000000000000001 00000000000000000000000000000001 -> eflags 0001 +r ptest 00000000000000000000000000000001 00000000000000010000000000000000 -> eflags 0040 +r ptest 00000000000000000000000000000001 00000000000000010000000000000001 -> eflags 0000 +r ptest 00000000000000000000000000000001 ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest 00000000000000000000000000000001 fffffffffffffffffffffffffffffffe -> eflags 0040 +r ptest 00000000000000000000000000000001 fffffffffffffffeffffffffffffffff -> eflags 0000 +r ptest 00000000000000000000000000000001 fffffffffffffffefffffffffffffffe -> eflags 0040 +r ptest 00000000000000010000000000000000 00000000000000000000000000000000 -> eflags 0041 +r ptest 00000000000000010000000000000000 00000000000000000000000000000001 -> eflags 0040 +r ptest 00000000000000010000000000000000 00000000000000010000000000000000 -> eflags 0001 +r ptest 00000000000000010000000000000000 00000000000000010000000000000001 -> eflags 0000 +r ptest 00000000000000010000000000000000 ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest 00000000000000010000000000000000 fffffffffffffffffffffffffffffffe -> eflags 0000 +r ptest 00000000000000010000000000000000 fffffffffffffffeffffffffffffffff -> eflags 0040 +r ptest 00000000000000010000000000000000 fffffffffffffffefffffffffffffffe -> eflags 0040 +r ptest 00000000000000010000000000000001 00000000000000000000000000000000 -> eflags 0041 +r ptest 00000000000000010000000000000001 00000000000000000000000000000001 -> eflags 0001 +r ptest 00000000000000010000000000000001 00000000000000010000000000000000 -> eflags 0001 +r ptest 00000000000000010000000000000001 00000000000000010000000000000001 -> eflags 0001 +r ptest 00000000000000010000000000000001 ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest 00000000000000010000000000000001 fffffffffffffffffffffffffffffffe -> eflags 0000 +r ptest 00000000000000010000000000000001 fffffffffffffffeffffffffffffffff -> eflags 0000 +r ptest 00000000000000010000000000000001 fffffffffffffffefffffffffffffffe -> eflags 0040 +r ptest ffffffffffffffffffffffffffffffff 00000000000000000000000000000000 -> eflags 0041 +r ptest ffffffffffffffffffffffffffffffff 00000000000000000000000000000001 -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff 00000000000000010000000000000000 -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff 00000000000000010000000000000001 -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffe -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff fffffffffffffffeffffffffffffffff -> eflags 0001 +r ptest ffffffffffffffffffffffffffffffff fffffffffffffffefffffffffffffffe -> eflags 0001 +r ptest fffffffffffffffffffffffffffffffe 00000000000000000000000000000000 -> eflags 0041 +r ptest fffffffffffffffffffffffffffffffe 00000000000000000000000000000001 -> eflags 0040 +r ptest fffffffffffffffffffffffffffffffe 00000000000000010000000000000000 -> eflags 0001 +r ptest fffffffffffffffffffffffffffffffe 00000000000000010000000000000001 -> eflags 0000 +r ptest fffffffffffffffffffffffffffffffe ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest fffffffffffffffffffffffffffffffe fffffffffffffffffffffffffffffffe -> eflags 0001 +r ptest fffffffffffffffffffffffffffffffe fffffffffffffffeffffffffffffffff -> eflags 0000 +r ptest fffffffffffffffffffffffffffffffe fffffffffffffffefffffffffffffffe -> eflags 0001 +r ptest fffffffffffffffeffffffffffffffff 00000000000000000000000000000000 -> eflags 0041 +r ptest fffffffffffffffeffffffffffffffff 00000000000000000000000000000001 -> eflags 0001 +r ptest fffffffffffffffeffffffffffffffff 00000000000000010000000000000000 -> eflags 0040 +r ptest fffffffffffffffeffffffffffffffff 00000000000000010000000000000001 -> eflags 0000 +r ptest fffffffffffffffeffffffffffffffff ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest fffffffffffffffeffffffffffffffff fffffffffffffffffffffffffffffffe -> eflags 0000 +r ptest fffffffffffffffeffffffffffffffff fffffffffffffffeffffffffffffffff -> eflags 0001 +r ptest fffffffffffffffeffffffffffffffff fffffffffffffffefffffffffffffffe -> eflags 0001 +r ptest fffffffffffffffefffffffffffffffe 00000000000000000000000000000000 -> eflags 0041 +r ptest fffffffffffffffefffffffffffffffe 00000000000000000000000000000001 -> eflags 0040 +r ptest fffffffffffffffefffffffffffffffe 00000000000000010000000000000000 -> eflags 0040 +r ptest fffffffffffffffefffffffffffffffe 00000000000000010000000000000001 -> eflags 0040 +r ptest fffffffffffffffefffffffffffffffe ffffffffffffffffffffffffffffffff -> eflags 0000 +r ptest fffffffffffffffefffffffffffffffe fffffffffffffffffffffffffffffffe -> eflags 0000 +r ptest fffffffffffffffefffffffffffffffe fffffffffffffffeffffffffffffffff -> eflags 0000 +r ptest fffffffffffffffefffffffffffffffe fffffffffffffffefffffffffffffffe -> eflags 0001 +r roundsd_000 b4b81f2b597541710000000000000000 15dacc33b1e8f8ee0000000000000000 0.000000 0.000000 +m roundsd_000 d2588598182a085f0000000000000000 840e9838717bc9cb0000000000000000 0.000000 0.000000 +r roundsd_001 a73535507f7e74970000000000000000 98666b7ee7341f880000000000000000 0.000000 0.000000 +m roundsd_001 919b29bf2bfec2c50000000000000000 ae2d4071b09e34d10000000000000000 0.000000 0.000000 +r roundsd_010 ebd55f51b7352d940000000000000000 23ae157d674545520000000000000000 0.000000 0.000000 +m roundsd_010 1130d272c0b0f3b10000000000000000 5136e60ea8b68eb60000000000000000 0.000000 0.000000 +r roundsd_011 5ff87f8ee1fa4dc70000000000000000 9511ad90107c4aa90000000000000000 0.000000 0.000000 +m roundsd_011 30796011b79f7a830000000000000000 4c8b686f3a23b6d90000000000000000 0.000000 0.000000 +r roundsd_000 e2ff7367dd2bb5908000000000000000 d0f01218c3380ef08000000000000000 -0.000000 -0.000000 +m roundsd_000 d0d6b3fdf02b399c8000000000000000 7e8ba7f547468d9a8000000000000000 -0.000000 -0.000000 +r roundsd_001 56491d3d8b2a43508000000000000000 b2aa237461d970848000000000000000 -0.000000 -0.000000 +m roundsd_001 cfa6ab954bb50e5b8000000000000000 c89783ffad7ef35a8000000000000000 -0.000000 -0.000000 +r roundsd_010 99375b70cb57d7668000000000000000 1c9fc204c8c052c78000000000000000 -0.000000 -0.000000 +m roundsd_010 0e492839a79cda208000000000000000 0a0edcee4d2cc8788000000000000000 -0.000000 -0.000000 +r roundsd_011 8c280e5e7c1153338000000000000000 ee30cd29d94c92188000000000000000 -0.000000 -0.000000 +m roundsd_011 6d1f094ae6417d4c8000000000000000 2450922107afec548000000000000000 -0.000000 -0.000000 +r roundsd_000 0f7c166980b896167ff0000000000000 08bc254274de12d87ff0000000000000 inf inf +m roundsd_000 cc893028e602d73e7ff0000000000000 f6be84f8bb673f4f7ff0000000000000 inf inf +r roundsd_001 029353f1b5ac7f6f7ff0000000000000 4aa3aaaf78d5b0657ff0000000000000 inf inf +m roundsd_001 0be77b318842c8567ff0000000000000 60b794d448b4a0c87ff0000000000000 inf inf +r roundsd_010 44cea455fc4eef9f7ff0000000000000 94463cd1c7914d227ff0000000000000 inf inf +m roundsd_010 0a97cbc7ac5e30f57ff0000000000000 419ca01490f7f11f7ff0000000000000 inf inf +r roundsd_011 b78debf535fec7057ff0000000000000 c504bb084073c96c7ff0000000000000 inf inf +m roundsd_011 a8fb004a32b8ef7b7ff0000000000000 7bcc8918719010b57ff0000000000000 inf inf +r roundsd_000 392f0631401ae502fff0000000000000 bf3e07b2c2da04a6fff0000000000000 -inf -inf +m roundsd_000 c773fa18fab0e446fff0000000000000 eca72f41cddddee9fff0000000000000 -inf -inf +r roundsd_001 ac14d76afd052af4fff0000000000000 6053ff312e26dd2dfff0000000000000 -inf -inf +m roundsd_001 455d9993e4a5f1b8fff0000000000000 768d72ee82413c1cfff0000000000000 -inf -inf +r roundsd_010 ee9c3c004c1c753efff0000000000000 89a385e564b83663fff0000000000000 -inf -inf +m roundsd_010 031cbc1bd0f7f431fff0000000000000 f7df3280711908adfff0000000000000 -inf -inf +r roundsd_011 e02816510cc1a83dfff0000000000000 1a8f772c44efeda7fff0000000000000 -inf -inf +m roundsd_011 e10d450f9d06ce0ffff0000000000000 50fd4f567ac722fcfff0000000000000 -inf -inf +r roundsd_000 621745bf1e53a253fff8000000000000 f376b669ae2ce35afff8000000000000 -nan -nan +m roundsd_000 bf9212cf2c335fb5fff8000000000000 6146a9d07daa6c6afff8000000000000 -nan -nan +r roundsd_001 54caa9aa633342e0fff8000000000000 f4b822f982cef9dafff8000000000000 -nan -nan +m roundsd_001 7d0a04bc5edd8780fff8000000000000 091a1f4f5923c556fff8000000000000 -nan -nan +r roundsd_010 95a02171b9c06a42fff8000000000000 fdb69b3e9f350d8afff8000000000000 -nan -nan +m roundsd_010 fad6fc35116526d2fff8000000000000 2ad99232f0910c21fff8000000000000 -nan -nan +r roundsd_011 07f98f74015af8dbfff8000000000000 edcf0197e7c200c7fff8000000000000 -nan -nan +m roundsd_011 1855d89a262a1b0afff8000000000000 a2e4e3d92054232afff8000000000000 -nan -nan +r roundsd_000 8836d1131b62cd0b7ff8000000000000 a664346538d4b1f37ff8000000000000 nan nan +m roundsd_000 b5e8784c7c8c48897ff8000000000000 539af0a5cbcde8d17ff8000000000000 nan nan +r roundsd_001 fab6c9afe737c9317ff8000000000000 06d4130774cb026e7ff8000000000000 nan nan +m roundsd_001 b2edbeaaf5ec8bae7ff8000000000000 1b5c9af6cf5b3c777ff8000000000000 nan nan +r roundsd_010 3bda55a84439ccad7ff8000000000000 ee7f7fdd7908d2977ff8000000000000 nan nan +m roundsd_010 f0c7891470a9c6d97ff8000000000000 db89c02a0d5fff7b7ff8000000000000 nan nan +r roundsd_011 2c00565c14c9b5e07ff8000000000000 3ec6594828ea00ce7ff8000000000000 nan nan +m roundsd_011 4dd3b8ebcc24d76b7ff8000000000000 738244a36537113d7ff8000000000000 nan nan +r roundsd_000 ad8bac2d35466629bff4cccccccccccd d6087fa761d26d73bff0000000000000 -1.300000 -1.000000 +m roundsd_000 a9732d8eebbc9fc3bff4cccccccccccd c3a505c0b746521ebff0000000000000 -1.300000 -1.000000 +r roundsd_001 9ed8377b8811bde8bff4cccccccccccd 96a5d25b031ff9e7c000000000000000 -1.300000 -2.000000 +m roundsd_001 e606c65eabd1fe42bff4cccccccccccd ab54e2e2e2e9a17dc000000000000000 -1.300000 -2.000000 +r roundsd_010 df49d6a4ee899c7ebff4cccccccccccd 5efe32c3f031858abff0000000000000 -1.300000 -1.000000 +m roundsd_010 e3ed64baedc4d347bff4cccccccccccd 0aefbd68c882e0babff0000000000000 -1.300000 -1.000000 +r roundsd_011 4f3e6b0b450ee14abff4cccccccccccd 0d727f3f0669eebabff0000000000000 -1.300000 -1.000000 +m roundsd_011 7f87e70291f40032bff4cccccccccccd c2d574b34771ed36bff0000000000000 -1.300000 -1.000000 +r roundsd_000 d015d40d6e016dacbff199999999999a 84629830272617d9bff0000000000000 -1.100000 -1.000000 +m roundsd_000 9c342f9777c16464bff199999999999a b166e8214114a950bff0000000000000 -1.100000 -1.000000 +r roundsd_001 4030f30c48c12005bff199999999999a a42d5ff531c8df47c000000000000000 -1.100000 -2.000000 +m roundsd_001 18551cd87e8cde3cbff199999999999a b803f91594cef469c000000000000000 -1.100000 -2.000000 +r roundsd_010 80efa667b5aedab4bff199999999999a 4b33b2ee05b02563bff0000000000000 -1.100000 -1.000000 +m roundsd_010 d4498d2688b44f1abff199999999999a b70b87ec21fcaee0bff0000000000000 -1.100000 -1.000000 +r roundsd_011 70b1ce7f93297a1abff199999999999a 5ad5737c833dcb8dbff0000000000000 -1.100000 -1.000000 +m roundsd_011 b07164e0739a975fbff199999999999a 8ede7208c800b715bff0000000000000 -1.100000 -1.000000 +r roundsd_000 f0d64bb3c491e296bfeccccccccccccd b17280fe8bd0af25bff0000000000000 -0.900000 -1.000000 +m roundsd_000 8c2c7f66219d966abfeccccccccccccd 1ddd99c96939ef69bff0000000000000 -0.900000 -1.000000 +r roundsd_001 e0bffd642647f088bfeccccccccccccd 306bbad4fdc8b28cbff0000000000000 -0.900000 -1.000000 +m roundsd_001 48dac018701d2c9cbfeccccccccccccd 4467de8de308363bbff0000000000000 -0.900000 -1.000000 +r roundsd_010 20cbc3f09aaa8651bfeccccccccccccd b61e015fb885b4228000000000000000 -0.900000 -0.000000 +m roundsd_010 c4dc0557417a3954bfeccccccccccccd e3dd1fb618cc6bec8000000000000000 -0.900000 -0.000000 +r roundsd_011 8f5a7fba001a8250bfeccccccccccccd 25ee34ff9e6895458000000000000000 -0.900000 -0.000000 +m roundsd_011 df912f8374159df2bfeccccccccccccd d99d3da4e6e56fdb8000000000000000 -0.900000 -0.000000 +r roundsd_000 0fcd0f1f38f8c5e5bfe6666666666666 5b3835128dd03557bff0000000000000 -0.700000 -1.000000 +m roundsd_000 7a591efbe94e37d6bfe6666666666666 080a18b62fb42368bff0000000000000 -0.700000 -1.000000 +r roundsd_001 7e83558122a32f71bfe6666666666666 3a5ee3fa671d74b8bff0000000000000 -0.700000 -1.000000 +m roundsd_001 7695b11f8084e961bfe6666666666666 4e81904cd19865f4bff0000000000000 -0.700000 -1.000000 +r roundsd_010 bddc2f3f9e7ca053bfe6666666666666 a0bf1d170ab031c78000000000000000 -0.700000 -0.000000 +m roundsd_010 b1a4ca4f181791f3bfe6666666666666 8c6485c6adf116de8000000000000000 -0.700000 -0.000000 +r roundsd_011 ac397eba8be1f8ecbfe6666666666666 6ebcc4c757e84ee48000000000000000 -0.700000 -0.000000 +m roundsd_011 0ce747ec936710ebbfe6666666666666 a213d785a32016868000000000000000 -0.700000 -0.000000 +r roundsd_000 2bf92251cb35169bbfe00014f8b588e3 84b4b96d2e26a96fbff0000000000000 -0.500010 -1.000000 +m roundsd_000 67bd0a55cfd546a9bfe00014f8b588e3 70ed65e99385444dbff0000000000000 -0.500010 -1.000000 +r roundsd_001 1a7dfb643cd5dcc0bfe00014f8b588e3 c208da666ec923c9bff0000000000000 -0.500010 -1.000000 +m roundsd_001 a286f1ebadc1138dbfe00014f8b588e3 d55211505c7e8292bff0000000000000 -0.500010 -1.000000 +r roundsd_010 5924e954bf2328bcbfe00014f8b588e3 07170714f9319c528000000000000000 -0.500010 -0.000000 +m roundsd_010 9ca3dd0d0d8957f8bfe00014f8b588e3 b3a2b91de06daeb58000000000000000 -0.500010 -0.000000 +r roundsd_011 c74ecb80347fdbeebfe00014f8b588e3 354122d6adbff4688000000000000000 -0.500010 -0.000000 +m roundsd_011 3773ae1bcf8ff14abfe00014f8b588e3 e93e3eadfdb2aa178000000000000000 -0.500010 -0.000000 +r roundsd_000 465c83497b47d5b7bfdfffd60e94ee39 2ae60a0d6cd20b6d8000000000000000 -0.499990 -0.000000 +m roundsd_000 51564476d333c3e1bfdfffd60e94ee39 5685816295ab54178000000000000000 -0.499990 -0.000000 +r roundsd_001 b4adef0e74ddf675bfdfffd60e94ee39 c8679e1814cac1c1bff0000000000000 -0.499990 -1.000000 +m roundsd_001 cbad7f7df9d3ab1fbfdfffd60e94ee39 dbd8609b86ba8d16bff0000000000000 -0.499990 -1.000000 +r roundsd_010 f2a2f02ffea11e8bbfdfffd60e94ee39 ed24c0578608f5c38000000000000000 -0.499990 -0.000000 +m roundsd_010 86d73e9120d28a64bfdfffd60e94ee39 5896bbb9b13f35738000000000000000 -0.499990 -0.000000 +r roundsd_011 e19a660dfbf22d56bfdfffd60e94ee39 7a7b4e2ba2eb89d38000000000000000 -0.499990 -0.000000 +m roundsd_011 603563102a8d410ebfdfffd60e94ee39 ad1f741bf6992c8e8000000000000000 -0.499990 -0.000000 +r roundsd_000 5ff5310749300238bfd3333333333333 4fce29f348d45b518000000000000000 -0.300000 -0.000000 +m roundsd_000 3926cc5df566ae80bfd3333333333333 bad46a21352852c88000000000000000 -0.300000 -0.000000 +r roundsd_001 4c13317dcabb7f91bfd3333333333333 4c7d311058224c9ebff0000000000000 -0.300000 -1.000000 +m roundsd_001 f30a5bd562bcb117bfd3333333333333 5f147c2c4d4d8680bff0000000000000 -0.300000 -1.000000 +r roundsd_010 8a5546d05cf482bfbfd3333333333333 50e746e1b1353c1a8000000000000000 -0.300000 -0.000000 +m roundsd_010 6d42eeda52f02c35bfd3333333333333 7b408c9b2067aa178000000000000000 -0.300000 -0.000000 +r roundsd_011 f81b4f5fe03bec24bfd3333333333333 3d6c48c6356e0b238000000000000000 -0.300000 -0.000000 +m roundsd_011 862d66cca261fe39bfd3333333333333 f0b778ce8cd69cec8000000000000000 -0.300000 -0.000000 +r roundsd_000 75c32e8b36ee9d20bfb999999999999a f16c1720c22c991b8000000000000000 -0.100000 -0.000000 +m roundsd_000 202ba309356f0684bfb999999999999a 9cd9212673fb3d5f8000000000000000 -0.100000 -0.000000 +r roundsd_001 e2b0c1b33d707512bfb999999999999a 4d48924e39cfc662bff0000000000000 -0.100000 -1.000000 +m roundsd_001 199d84f3ea7b2675bfb999999999999a 61076702b3356dd0bff0000000000000 -0.100000 -1.000000 +r roundsd_010 203fe937d71e545abfb999999999999a 32609bb07bb871578000000000000000 -0.100000 -0.000000 +m roundsd_010 52e2ebeaa1e43c6cbfb999999999999a 1da02ac32de40ca08000000000000000 -0.100000 -0.000000 +r roundsd_011 0dd28678e35a1a58bfb999999999999a 7e1210a766467c5a8000000000000000 -0.100000 -0.000000 +m roundsd_011 ab5bb74d390b29cabfb999999999999a b10449c8c169fa2f8000000000000000 -0.100000 -0.000000 +r roundsd_000 8ac878d54083a66d3fb999999999999a 12c1d292dadac5cb0000000000000000 0.100000 0.000000 +m roundsd_000 0467c77c934fcdee3fb999999999999a fd94a6714f2317dc0000000000000000 0.100000 0.000000 +r roundsd_001 76829faecffadaf93fb999999999999a cdcac1d1b9d32d0b0000000000000000 0.100000 0.000000 +m roundsd_001 3d66fcd8901008393fb999999999999a e0af201fb67343070000000000000000 0.100000 0.000000 +r roundsd_010 b35fdb64701e945a3fb999999999999a 918fbdc5e291947a3ff0000000000000 0.100000 1.000000 +m roundsd_010 36b936c00eafba0a3fb999999999999a 3cb59631d8b85d103ff0000000000000 0.100000 1.000000 +r roundsd_011 20bf0b56034fb5f33fb999999999999a 3d6fa6ce3475da760000000000000000 0.100000 0.000000 +m roundsd_011 cebf5594ee8bc3c13fb999999999999a ef07e907935246580000000000000000 0.100000 0.000000 +r roundsd_000 9c0311e568ee1d213fd3333333333333 b0cb5c4a91dedf610000000000000000 0.300000 0.000000 +m roundsd_000 e6d839b5100402bf3fd3333333333333 db05f902c9a2df3e0000000000000000 0.300000 0.000000 +r roundsd_001 098acb707f5aac463fd3333333333333 cb02be9bd72c829b0000000000000000 0.300000 0.000000 +m roundsd_001 5f65c282537b58633fd3333333333333 de0da681580706230000000000000000 0.300000 0.000000 +r roundsd_010 45b41a5728f342c13fd3333333333333 6f74ad21e7c0a5833ff0000000000000 0.300000 1.000000 +m roundsd_010 17c5d05b994fa60d3fd3333333333333 d981d0e521e29c663ff0000000000000 0.300000 1.000000 +r roundsd_011 31e2defb421abff33fd3333333333333 7a820a3aa1f926790000000000000000 0.300000 0.000000 +m roundsd_011 ef5942a1c0e0ca1e3fd3333333333333 acc1578d049281670000000000000000 0.300000 0.000000 +r roundsd_000 ad74f7bbaf2e023b3fdfffd60e94ee39 cd8bb349e538e7dd0000000000000000 0.499990 0.000000 +m roundsd_000 c77ffab3aa8fa5f53fdfffd60e94ee39 372b1ad9e17794870000000000000000 0.499990 0.000000 +r roundsd_001 99c845f74d90edf93fdfffd60e94ee39 47ef89ab93dcc6100000000000000000 0.499990 0.000000 +m roundsd_001 7f9ad6f235bc17f33fdfffd60e94ee39 5a22fb2a97f2b7250000000000000000 0.499990 0.000000 +r roundsd_010 d440a810fd9f5e8e3fdfffd60e94ee39 ca0f6cc28a45a4723ff0000000000000 0.499990 1.000000 +m roundsd_010 f607b7bd42c5ff763fdfffd60e94ee39 f403d8df0862c9a23ff0000000000000 0.499990 1.000000 +r roundsd_011 403cff659fbb36593fdfffd60e94ee39 354a3cedacd461610000000000000000 0.499990 0.000000 +m roundsd_011 0e287d74b10c3fe13fdfffd60e94ee39 e73092581227a95d0000000000000000 0.499990 0.000000 +r roundsd_000 bb1a2c57134556ba3fe00014f8b588e3 6701d88dd7e8dd3f3ff0000000000000 0.500010 1.000000 +m roundsd_000 a55d087862f1b6913fe00014f8b588e3 11080af697a238b63ff0000000000000 0.500010 1.000000 +r roundsd_001 273c0d45399c9b123fe00014f8b588e3 41932201ece1f76c0000000000000000 0.500010 0.000000 +m roundsd_001 9c05382834d243e83fe00014f8b588e3 53ec1d197532560d0000000000000000 0.500010 0.000000 +r roundsd_010 6202838ff120e8c03fe00014f8b588e3 a360f8a9cb2091473ff0000000000000 0.500010 1.000000 +m roundsd_010 d380ece50912c7463fe00014f8b588e3 8e3bae1f8d37e3c33ff0000000000000 0.500010 1.000000 +r roundsd_011 4dcb6e961a321c253fe00014f8b588e3 6ec93ce6540489300000000000000000 0.500010 0.000000 +m roundsd_011 2b2e060ec00e220a3fe00014f8b588e3 9f559c6abf12bf380000000000000000 0.500010 0.000000 +r roundsd_000 c8f7aeb9953117a03fe6666666666666 7f2dcc1767eec1873ff0000000000000 0.700000 1.000000 +m roundsd_000 81706403382834943fe6666666666666 699bc759eb22cacb3ff0000000000000 0.700000 1.000000 +r roundsd_001 b3e72358437eb8913fe6666666666666 b9ec899de43c17ad0000000000000000 0.700000 0.000000 +m roundsd_001 b8a6e72552bfdd443fe6666666666666 cb6c0e4df0c8e3dc0000000000000000 0.700000 0.000000 +r roundsd_010 eefaadd40278e0593fe6666666666666 fb6753d7ab516c023ff0000000000000 0.700000 1.000000 +m roundsd_010 af2e6fd3ee34fd7b3fe6666666666666 a52952a5b063eccb3ff0000000000000 0.700000 1.000000 +r roundsd_011 58902b8cb37f70573fe6666666666666 24fd09259b8aa0e40000000000000000 0.700000 0.000000 +m roundsd_011 456adc6dece674983fe6666666666666 d63174c20953c3f90000000000000000 0.700000 0.000000 +r roundsd_000 d30a7fe136f446eb3feccccccccccccd 160f8de8964a92b53ff0000000000000 0.900000 1.000000 +m roundsd_000 5cba0e542c3521fc3feccccccccccccd 40e45202dcf949c53ff0000000000000 0.900000 1.000000 +r roundsd_001 3dc787326b3643763feccccccccccccd affcbe7f7aee24d50000000000000000 0.900000 0.000000 +m roundsd_001 d27de5e78e82e6063feccccccccccccd c1a3cdc80ab45f900000000000000000 0.900000 0.000000 +r roundsd_010 772724df31a646583feccccccccccccd d0247b4a28d835a33ff0000000000000 0.900000 1.000000 +m roundsd_010 88134186f12ca1173feccccccccccccd 3acdc57171e5e3b93ff0000000000000 0.900000 1.000000 +r roundsd_011 618b36496aa231ef3feccccccccccccd 59e8a5aa8067a47f0000000000000000 0.900000 0.000000 +m roundsd_011 5edc01923794338d3feccccccccccccd 8bc2195ff2ebb5a00000000000000000 0.900000 0.000000 +r roundsd_000 db529dcff48de39d3ff199999999999a 2aa71dfe62fc52c93ff0000000000000 1.100000 1.000000 +m roundsd_000 3439076a3e197cca3ff199999999999a 94e3abf26c26b7a63ff0000000000000 1.100000 1.000000 +r roundsd_001 c5dd39d1b0c43bc13ff199999999999a 23c1c1a6aef520e23ff0000000000000 1.100000 1.000000 +m roundsd_001 ea8a316fe71b5c2e3ff199999999999a 348f5988c1f6c82a3ff0000000000000 1.100000 1.000000 +r roundsd_010 ff8beab07fa91abc3ff199999999999a 2497720343b5ec2a4000000000000000 1.100000 2.000000 +m roundsd_010 5f2d600012fbb3183ff199999999999a 4d260583d0bcc78d4000000000000000 1.100000 2.000000 +r roundsd_011 68bc8fcb3f9c61ed3ff199999999999a 0c880f75039997ff3ff0000000000000 1.100000 1.000000 +m roundsd_011 7584747d9f1860e83ff199999999999a be098d4378d8962e3ff0000000000000 1.100000 1.000000 +r roundsd_000 e2d10a83d1fbeeb53ff4cccccccccccd bdf57a5acc0300c33ff0000000000000 1.300000 1.000000 +m roundsd_000 0aef4d476ed245ff3ff4cccccccccccd 6698d2279aa9136d3ff0000000000000 1.300000 1.000000 +r roundsd_001 4b2939371428a2733ff4cccccccccccd 153d92147f5309d63ff0000000000000 1.300000 1.000000 +m roundsd_001 00cccbbd5f8a40bc3ff4cccccccccccd 2631b48f178f1faa3ff0000000000000 1.300000 1.000000 +r roundsd_010 8425fd47ea835d873ff4cccccccccccd f5c03603fce891974000000000000000 1.300000 2.000000 +m roundsd_010 357ecd40529f337f3ff4cccccccccccd de3613dbcdea9a464000000000000000 1.300000 2.000000 +r roundsd_011 6d233614316bfe513ff4cccccccccccd 3ddf4785232277663ff0000000000000 1.300000 1.000000 +m roundsd_011 8a62352f2672fca93ff4cccccccccccd 6e07cf6c9d1b64a13ff0000000000000 1.300000 1.000000 +r roundss_000 e686c4fdcb40673235a9ceaf00000000 cdf9a5fdd4619ca3fbbaaadd00000000 0.000000 0.000000 +m roundss_000 dfdae1eabc617c99524fccee00000000 b602c7a266815d1ae592158f00000000 0.000000 0.000000 +r roundss_001 cfab87629662768a400d44cd00000000 856f30c8ef06e0afceaaf91700000000 0.000000 0.000000 +m roundss_001 1345b2d1f5cf93b0dbb2b33900000000 968adddb0a7d641192ced16100000000 0.000000 0.000000 +r roundss_010 08f45fa473320db7fe09931c00000000 459fc848547124ea0cca195900000000 0.000000 0.000000 +m roundss_010 08048945af19204d87dd626400000000 eefcef7a686e5be61a6a4deb00000000 0.000000 0.000000 +r roundss_011 70c12b2242100a1b51fb9bfc00000000 ecec4ddce20045b2977aea0300000000 0.000000 0.000000 +m roundss_011 9d7644a6cba105d03730bacf00000000 9dbadedc5fb420fa5ec66b8e00000000 0.000000 0.000000 +r roundss_000 e970cd3de35a4e1617453bcb80000000 5cb39fe57b1526694d194c7680000000 -0.000000 -0.000000 +m roundss_000 b1fcc35228c7219acc099bdb80000000 84238a63d0b094ac3e4009a980000000 -0.000000 -0.000000 +r roundss_001 516423533673b907314755ec80000000 73569dc2fd10a66f0f071e1180000000 -0.000000 -0.000000 +m roundss_001 25f4e8aca8ea530a24cae5e880000000 8498d36e9cc1975d9a3a089c80000000 -0.000000 -0.000000 +r roundss_010 89fa0ec71bb82b4e7f60c7bc80000000 123429d34950a423bda5423580000000 -0.000000 -0.000000 +m roundss_010 d9c192112a6a7c8020d3785480000000 7b78995ea148096c521348c880000000 -0.000000 -0.000000 +r roundss_011 71946ef6718b834ce1f0729d80000000 19ae21793f3502e53752964180000000 -0.000000 -0.000000 +m roundss_011 adc0a0e38da77c5d9f83338180000000 4a23bc92c0a3ca39462ca98c80000000 -0.000000 -0.000000 +r roundss_000 e99123421a4ba360375837ee7f800000 68236613bf1f9e155c6efc957f800000 inf inf +m roundss_000 8153f481b3023300833af8cf7f800000 d1fa1c6ad835ba2556e40b497f800000 inf inf +r roundss_001 d1520d0bf45969ea60f6f3107f800000 dff4d802a96f59140e5a52927f800000 inf inf +m roundss_001 35d96c4c7ada81c9ab59a59d7f800000 ef5c9847cb5bb98f619c4d5e7f800000 inf inf +r roundss_010 09360cb0e014b74b3e2d89627f800000 5e7f57a5dc8513422b7579977f800000 inf inf +m roundss_010 a9b3e9a3c3904619f63f1c4b7f800000 86aa11887877a6d849b3512b7f800000 inf inf +r roundss_011 719d0091bedc6be2af5ad8447f800000 c427c35c3abfacfd952051057f800000 inf inf +m roundss_011 bc404be66e836250454c3b397f800000 7443688dbee9625eec89f5107f800000 inf inf +r roundss_000 e8e8c80e6e12660f94e0c017ff800000 f349fc88a17f04a72ababa3aff800000 -inf -inf +m roundss_000 50e072765b13b4cc78e1e3c8ff800000 9b877bb77e0fce842b7e1a6eff800000 -inf -inf +r roundss_001 4f764588d0158833cd1c203aff800000 c947e188f225fba0cba39399ff800000 -inf -inf +m roundss_001 43f43eb269a11eef6f5df458ff800000 d9d62b65994cc8a7e6f3a0a5ff800000 -inf -inf +r roundss_010 87a7575fc345b1ad3a70d90eff800000 278154bc0d107047583cbe7fff800000 -inf -inf +m roundss_010 76db8efa7a8c7e190a204d47ff800000 0f9158f8edfd3129fd486714ff800000 -inf -inf +r roundss_011 6edcdff12903c0debb3bccf1ff800000 ed553385d2a045fcb1e4194eff800000 -inf -inf +m roundss_011 c9f644af6c35b5a9298bd0f8ff800000 1d18e1cf5b84e96a50db4f1bff800000 -inf -inf +r roundss_000 e575baa0e0ae972530ded746ffc00000 fb255f422135581fb5fb8666ffc00000 -nan -nan +m roundss_000 1ca43e3121fba3ffacfe5cc8ffc00000 e3caa84ac240cfc8be0f381affc00000 -nan -nan +r roundss_001 cbd0cbcccaa715e279b7db6affc00000 3151b853da308a1146e2e325ffc00000 -nan -nan +m roundss_001 4f455ede773e287b72d7d019ffc00000 41078bca0492c5a629410272ffc00000 -nan -nan +r roundss_010 024ff1d4c54d19767529b7bfffc00000 6f381e19ddf1bb3242f811edffc00000 -nan -nan +m roundss_010 413a82184f5f247e5d780d4affc00000 162f6cae00d9a9616fd38c83ffc00000 -nan -nan +r roundss_011 69510c18b200844005914da5ffc00000 943a71f409d6cbe08b9ef01effc00000 -nan -nan +m roundss_011 d4e28b3f89bd76674b41f3bcffc00000 44a3295695755d5b7124b8abffc00000 -nan -nan +r roundss_000 df37fbf8712136a00a527c7a7fc00000 81b790423f419a7dff3260177fc00000 nan nan +m roundss_000 e69d59b105b800971d9062cd7fc00000 a9c2a323a4c7bff31095644c7fc00000 nan nan +r roundss_001 45609fd5e10f0ff762c923a17fc00000 17105d65609208697f1740387fc00000 nan nan +m roundss_001 59cccbd0a3b1a06db3c73ae07fc00000 26edba740e2eb08a2a8571c67fc00000 nan nan +r roundss_010 7c2dd90fe42aefa4ee5824777fc00000 34a5b6bd4a28f403ebaa72e27fc00000 nan nan +m roundss_010 0bcec3fc42073749ed465b527fc00000 9c834eaab10a107f9f54bf777fc00000 nan nan +r roundss_011 62fd870459d3b6088d5e5d5e7fc00000 b9d47da8de6340ab234dd4747fc00000 nan nan +m roundss_011 dd041f94c41ba68cab6ca5867fc00000 e9e53f246ebcbf3251632ec27fc00000 nan nan +r roundss_000 d8308a161f694382213cafb5bfa66666 86ff9089fca3cac10660484ebf800000 -1.300000 -1.000000 +m roundss_000 afcdc1f8074ccb95cd99f7d9bfa66666 ed716c4224a49d041f119e04bf800000 -1.300000 -1.000000 +r roundss_001 be27c1a5174d78728950faddbfa66666 7b86d0bd834973a67642acd1c0000000 -1.300000 -2.000000 +m roundss_001 60898789ecfa86c5322e33adbfa66666 8a89b765b5208954e8beee9fc0000000 -1.300000 -2.000000 +r roundss_010 f3400e1021de3339a4fd1e35bfa66666 77c81da655b51bba5253e15cbf800000 -1.300000 -1.000000 +m roundss_010 d29952a65385b97bbb8a3761bfa66666 9f8dfeec009265838ecb00f2bf800000 -1.300000 -1.000000 +r roundss_011 59de50b71e7c553654a0fa1dbfa66666 5c2557a35145a25b79f3c74fbf800000 -1.300000 -1.000000 +m roundss_011 e45c02af1c4e4317490de456bfa66666 0bdc2237e45a0fefef97b25ebf800000 -1.300000 -1.000000 +r roundss_000 ce5f66faeb88beca779c70f6bf8ccccd 08fe5d15565be8ebcc833e0bbf800000 -1.100000 -1.000000 +m roundss_000 7532770527b503faba181aebbf8ccccd b0d603a742d668fbec83e542bf800000 -1.100000 -1.000000 +r roundss_001 3423313a6b614e53ee4e5e1fbf8ccccd 5db2115b4557cdca2b6225efc0000000 -1.100000 -2.000000 +m roundss_001 667c91075419db83ef0ab980bf8ccccd 6cdc819cfa68500465ee79fec0000000 -1.100000 -2.000000 +r roundss_010 698a92d77d68e5349918a6f9bf8ccccd 39a151d5fe98305776f15e5cbf800000 -1.100000 -1.000000 +m roundss_010 9799301582daa912c843a176bf8ccccd 204d7c74ed70a76c3a384ef3bf800000 -1.100000 -1.000000 +r roundss_011 4ef5672f00fb63ca585926e3bf8ccccd 7d2cfee4617ef2f28d8fc7b1bf800000 -1.100000 -1.000000 +m roundss_011 e8ea339093584e082524b12cbf8ccccd ac89d491f84d4d934bc24480bf800000 -1.100000 -1.000000 +r roundss_000 c3c391a4d67da7770a72bf3dbf666666 09b2f9e74e69f4fb509d414ebf800000 -0.900000 -1.000000 +m roundss_000 39ce7bd765f4aac4e50dcb02bf666666 f0f16952fe5f22d777eb3b06bf800000 -0.900000 -1.000000 +r roundss_001 a855ef96dd4b939b91c15167bf666666 bd93203fa5ba14d39e79ad94bf800000 -0.900000 -1.000000 +m roundss_001 6aa5e94bd90e9da7ea5ccd59bf666666 cce41a18de07069ba01413e4bf800000 -0.900000 -1.000000 +r roundss_010 dc0a6363f6c70594cca9bcc2bf666666 7830544b46d033d95986e9e280000000 -0.900000 -0.000000 +m roundss_010 5bd05b4bcf04071012739990bf666666 1fc3c84278a4d83ca49bab7a80000000 -0.900000 -0.000000 +r roundss_011 4142cc6e0151dec49a87e0aebf666666 1ce8746b100c316e5f21d69880000000 -0.900000 -0.000000 +m roundss_011 ebaeb2372738c75f3fb20d08bf666666 cbec5431ab96791c64e3e42980000000 -0.900000 -0.000000 +r roundss_000 b55e0914de47fe8bdcbe9c8abf333333 871c6200e4cdeef191ac5317bf800000 -0.700000 -1.000000 +m roundss_000 fc9fce70c10abff54f770a20bf333333 aec29c43583eca9ac1499f50bf800000 -0.700000 -1.000000 +r roundss_001 1abdfbb76d0b454872abd2b6bf333333 9b2bfd69a37449c3cf8642bfbf800000 -0.700000 -1.000000 +m roundss_001 6c048e557dd8cd3123247038bf333333 a9a281db5ffba917992fba4fbf800000 -0.700000 -1.000000 +r roundss_010 4ec083b68efd935b3cb06092bf333333 367524062b5f2442f91082ee80000000 -0.700000 -0.000000 +m roundss_010 1c3cd4473b05d3739b191eb1bf333333 9ceee356a12df7f2ccf4168780000000 -0.700000 -0.000000 +r roundss_011 32c57f72207cc8251a2c277fbf333333 395bb8385df15dd1efa9f20680000000 -0.700000 -0.000000 +m roundss_011 eca87fa5daeeaf1c96b5f6eabf333333 6706a116fb35948b3cf9935780000000 -0.700000 -0.000000 +r roundss_000 a62fd04a04e8c304ec8007dcbf0000a8 843c995e1987d6cd91b17366bf800000 -0.500010 -1.000000 +m roundss_000 bca76ecf3bf5428bf658d743bf0000a8 ea499d7b50735f43c89d1020bf800000 -0.500010 -1.000000 +r roundss_001 8a5b559f1ba1665b910ae00abf0000a8 f778a7d83e836d98be89e66fbf800000 -0.500010 -1.000000 +m roundss_001 6c9982253f796c209a63a01dbf0000a8 0517b5e37f453a794f416f41bf800000 -0.500010 -1.000000 +r roundss_010 beabf0cf43088f88eb2d9268bf0000a8 7170c207ae4403915890298080000000 -0.500010 -0.000000 +m roundss_010 dbdf9b08c4db0c3c613532d7bf0000a8 98d0cbb0670d038eb3448f1a80000000 -0.500010 -0.000000 +r roundss_011 217f803d5d7d1febd846fd56bf0000a8 d483ca4b472b78193d271dfa80000000 -0.500010 -0.000000 +m roundss_011 ebd899d8ab7a043f2c2e6dd2bf0000a8 82d5bd42ea2a9ce0d2064f0c80000000 -0.500010 -0.000000 +r roundss_000 9535e446495ef6e439b80035befffeb0 fe129f02eb97ac8f4eada13c80000000 -0.499990 -0.000000 +m roundss_000 7ae45cf4d3b63387dbaf316dbefffeb0 a4856cf8e6fde3d28de7907680000000 -0.499990 -0.000000 +r roundss_001 f82ffe4ce70ef4d4efe07d64befffeb0 d17c208e78e97e546b8297a6bf800000 -0.499990 -1.000000 +m roundss_001 6a64c4bc1ef078764f175e08befffeb0 df41b8323ce5b9c1c44832b8bf800000 -0.499990 -1.000000 +r roundss_010 2bcdacae16eaf91ad7205244befffeb0 2b212f4fcf7fd0c67407de9880000000 -0.499990 -0.000000 +m roundss_010 99b7b1906b87b46c65c6d404befffeb0 11688150cc43fe0f5789153380000000 -0.499990 -0.000000 +r roundss_011 0e6ecfcdb854e517d4d76034befffeb0 ed62aaa3d0bc8048499b557380000000 -0.499990 -0.000000 +m roundss_011 e83e02d199dcc7c7001d73c0befffeb0 1b5aa7b37676921c2608194680000000 -0.499990 -0.000000 +r roundss_000 81724708abab982ac5668794be99999a f79e72ed5bfd7037ca9edd9780000000 -0.300000 -0.000000 +m roundss_000 375799de8a4e91eaff7c1a9cbe99999a dd7809bb1ade554610281e5280000000 -0.300000 -0.000000 +r roundss_001 643af4c0d050f1b38a2ba7c4be99999a 2835678a50a47ef5d6715762bf800000 -0.300000 -1.000000 +m roundss_001 656554181c3df2324141abf9be99999a 362189c698dc26f0f74603b5bf800000 -0.300000 -1.000000 +r roundss_010 9725b55308a2d1130289a026be99999a 628869dc8e108be14f73a13780000000 -0.300000 -0.000000 +m roundss_010 54c514de300aca01a8ce0436be99999a 08b60537cfcfe777b9c4aad280000000 -0.300000 -0.000000 +r roundss_011 f9936c23310119a90ede5217be99999a 84f65842f7a2775c13059c7380000000 -0.300000 -0.000000 +m roundss_011 e3d9b990a614f9b6128306b4be99999a 31965e6ba117763d3801f10680000000 -0.300000 -0.000000 +r roundss_000 6ce5f7902ccea7d58f8a9df9bdcccccd 6de0141d69b921c50385277880000000 -0.100000 -0.000000 +m roundss_000 f101238f5ebb5eb260be91d2bdcccccd 932174c4ec15b4a1525ebab380000000 -0.100000 -0.000000 +r roundss_001 ce7a38f9d8685cf863ed602bbdcccccd fea57cccc6b66b7dff5624a5bf800000 -0.100000 -1.000000 +m roundss_001 5f9c323a3760db5472e185f0bdcccccd 0cb827a191288204e83ae339bf800000 -0.100000 -1.000000 +r roundss_010 00b20dbe172f17716b687c0dbdcccccd 18a572afecf734e2e7d5725b80000000 -0.100000 -0.000000 +m roundss_010 0d0ac5f213624efc284cc26fbdcccccd 7dba576370b0bec5daf54df780000000 -0.100000 -0.000000 +r roundss_011 e2ee5740c884baa1875ad200bdcccccd 9941d427bcdf5b579b64f0f980000000 -0.100000 -0.000000 +m roundss_011 dbabbe15d021980b625e27aebdcccccd c687e469690e484407f0d84d80000000 -0.100000 -0.000000 +r roundss_000 548df6decac624e7962440633dcccccd 62d8839316cbc139fb637fdf00000000 0.100000 0.000000 +m roundss_000 a9e0fb0650fe99e00077960d3dcccccd c780ad135ca102e2518a639b00000000 0.100000 0.000000 +r roundss_001 36f0caf8fe5634a37a25a7973dcccccd 52ca5f54d91d47eae631ff6e00000000 0.100000 0.000000 +m roundss_001 57095d22715931dce1f8eded3dcccccd 600494c229cacbfe9623d04200000000 0.100000 0.000000 +r roundss_010 6876b2ef4493cb3611bde6fb3dcccccd 4b7848c9e734cbc93e2e51053f800000 0.100000 1.000000 +m roundss_010 c584c4cb1490405ee7400ead3dcccccd 707377d5afe882f8b81cfda23f800000 0.100000 1.000000 +r roundss_011 c97f90227cddcaff3d4ddfef3dcccccd 2c421e521e712e37e1ba520400000000 0.100000 0.000000 +m roundss_011 d2b310611905a5c6f0afd7ae3dcccccd d92e37acd05b093195d4cc1900000000 0.100000 0.000000 +r roundss_000 3b6c42f286950f5fdc3471d43e99999a d486c05060334f93b036e5cc00000000 0.300000 0.000000 +m roundss_000 60f6214260184275dda6294f3e99999a 7995b5a86a843e090eac1b0900000000 0.300000 0.000000 +r roundss_001 9c9caabe421a7bb4cfd27b093e99999a 24a610228bdb103e8b02e9bc00000000 0.300000 0.000000 +m roundss_001 4dacd7d0c927f5ca8e84e4f03e99999a 3106cf285ec202de0303cbd200000000 0.300000 0.000000 +r roundss_010 cd70a6e690ccee61f688dfef3e99999a fc01ec2880c75096527c3d353f800000 0.300000 1.000000 +m roundss_010 7a35126b3395a025e3aae8f23e99999a e2e3658d8c7635125439bcd23f800000 0.300000 1.000000 +r roundss_011 af4717cb4f0c47c331b57be53e99999a 3df836c31f59eefee506c39600000000 0.300000 0.000000 +m roundss_011 c7f1b17280bf21e7bc7614b43e99999a 6a8c5936d4ffb705e1afce6c00000000 0.300000 0.000000 +r roundss_000 1f81ddcc6139683c60ba304b3efffeb0 c4eacc5248f1cbd32400593f00000000 0.499990 0.000000 +m roundss_000 144196458e07596ff84b4a963efffeb0 a95f8a8316bd671589c4e1fd00000000 0.499990 0.000000 +r roundss_001 007ed849a4b42f2c62f6de823efffeb0 74388f35dbeec777eec8e09100000000 0.499990 0.000000 +m roundss_001 41859f453ecc281e798668f93efffeb0 81bfd7d5321027a42ed9d4e700000000 0.499990 0.000000 +r roundss_010 319fe7a3f9dc7ef119c965e93efffeb0 2c405fcdb7b0c24925c138eb3f800000 0.499990 1.000000 +m roundss_010 2d1badd1706f6d521d894f3c3efffeb0 d109228b0759d612ae4c89893f800000 0.499990 1.000000 +r roundss_011 9244ec39401133ed6394a4e03efffeb0 cb651c7abe989caaa74841ae00000000 0.499990 0.000000 +m roundss_011 ba65a049044f0a6ec6b4dfc03efffeb0 789f490577f853beeb80de4400000000 0.499990 0.000000 +r roundss_000 02ccc56c59b42f8021b67dc83f0000a8 3304a59ace0535f955bfdb383f800000 0.500010 1.000000 +m roundss_000 c6c3580edaccddcf5265f9e43f0000a8 58e02da4604c7f08c3d2b4773f800000 0.500010 1.000000 +r roundss_001 6297549b24245209338fce003f0000a8 427fdc8fc8576d970f85e6ec00000000 0.500010 0.000000 +m roundss_001 3393b57fd247c8d7a2ff7a083f0000a8 4f2daec7a3b53a5117a4ec8200000000 0.500010 0.000000 +r roundss_010 9305772680c27ce8798079e83f0000a8 d9369fb98def23e2b5fb41273f800000 0.500010 1.000000 +m roundss_010 df3896fccb1fa9e696df458d3f0000a8 3ee5accf209364f8c75664c63f800000 0.500010 1.000000 +r roundss_011 73770f6e4fec8c7dd3e85ce13f0000a8 d887cf76fb2c393d2780ce4b00000000 0.500010 0.000000 +m roundss_011 ab0fdde6a7b5615b0e6739d23f0000a8 0568061bb747dd5db246fca200000000 0.500010 0.000000 +r roundss_000 e34cfcd26f0564292128584a3f333333 1fd44d29f26f8d0545746bb83f800000 0.700000 1.000000 +m roundss_000 777a689d4468d096e9f635373f333333 84179e0b483085e1bad696773f800000 0.700000 1.000000 +r roundss_001 c2e51eb2c26ae24c429f4d843f333333 8e7df72f5417009cee38f9cc00000000 0.700000 0.000000 +m roundss_001 22d8187f8398d6f709ed1b1d3f333333 9b515300b3af3be3bd6611a400000000 0.700000 0.000000 +r roundss_010 f2a1546f267de84418ad1bee3f333333 05e1aeea00847261042b58e93f800000 0.700000 1.000000 +m roundss_010 8e8aceee45a653df4cabc9e33f333333 29770459d723e1c39d554c893f800000 0.700000 1.000000 +r roundss_011 52e080687c9d547481b3a1e93f333333 636051b9d517c3b565ae686f00000000 0.700000 0.000000 +m roundss_011 9aef684968f127ae939020ea3f333333 10e8927696ec55e23803298700000000 0.700000 0.000000 +r roundss_000 c10380fea42b07395f10c1d33f666666 8a5ac2fdb52fd3f7f22009bd3f800000 0.900000 1.000000 +m roundss_000 2568c6f1ccd931c2bffd00913f666666 2e04ddb8ce6b79a06fd086fd3f800000 0.900000 1.000000 +r roundss_001 216936907d86e1f590245a0e3f666666 5830e0157e2c82888be11b3300000000 0.900000 0.000000 +m roundss_001 1053ca4553bf527dae5149383f666666 642cc57f60ff2b5b221d444b00000000 0.900000 0.000000 +r roundss_010 5073807ee90fc207f5504bfa3f666666 ae428a61116fafc610527d323f800000 0.900000 1.000000 +m roundss_010 3b1353a6dc026b3f41eddb403f666666 92bf2a292c094c75314a43d23f800000 0.900000 1.000000 +r roundss_011 2f7f3f29c72589d06df375f63f666666 6ceea1424e573c1461d2111900000000 0.900000 0.000000 +m roundss_011 8605407346035a66572f96083f666666 981dec1812e8bc4e7cb663f100000000 0.900000 0.000000 +r roundss_000 9ef053f0f62818afda6eb8623f8ccccd 72960517154507cf5ec1b5483f800000 1.100000 1.000000 +m roundss_000 d18b730c72200055d27a59f03f8ccccd 56a7eaabf2fc5a44e2c184093f800000 1.100000 1.000000 +r roundss_001 7d239c3357784d041b20f49f3f8ccccd a09a97414698f159e6804a203f800000 1.100000 1.000000 +m roundss_001 fc04cad241bc3d69912b05593f8ccccd acbc0643aca508b945cb85793f800000 1.100000 1.000000 +r roundss_010 ab7af953ca760a300f69090c3f8ccccd d659341fc0b0da11db6eb00040000000 1.100000 2.000000 +m roundss_010 e7d126249134f10473a47ba23f8ccccd 7abc1e3f1f44a40d833548a140000000 1.100000 2.000000 +r roundss_011 0a554caf30822d9298aad7093f8ccccd f333bf1165eea2581becc7483f800000 1.100000 1.000000 +m roundss_011 7151676243eafb855945992c3f8ccccd 9f0813002d39109f7e5eabe23f800000 1.100000 1.000000 +r roundss_000 781273a866fa978a94423df73fa66666 d989177813b1298d87596f593f800000 1.300000 1.000000 +m roundss_000 7ce46ded373e3d4d236c40563fa66666 fc00c6e4b4e22acf14a78f9b3f800000 1.300000 1.000000 +r roundss_001 d713509d4f402879e4911d353fa66666 66b91bb3ab594f11ff1588923f800000 1.300000 1.000000 +m roundss_001 e6eb18244c8f95bbb17c50803fa66666 7202154e95a2d3fe266fd42c3f800000 1.300000 1.000000 +r roundss_010 05b8c1eecab4c0be68f855233fa66666 7b26ad220e47f3426380f15440000000 1.300000 2.000000 +m roundss_010 90c54767643de42fe3d2a90b3fa66666 df70e09bb0d6eb8b94165af640000000 1.300000 2.000000 +r roundss_011 e360a7fcb6b53fba00d6c6223fa66666 f82dab261adaf78393fc8cfe3f800000 1.300000 1.000000 +m roundss_011 5ad3dc175da80b0a99d02a563fa66666 24aa092de5e052d63dfd01583f800000 1.300000 1.000000 +r roundpd_000 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m roundpd_000 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r roundpd_001 bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -1.000000 +m roundpd_001 bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -1.000000 +r roundpd_010 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m roundpd_010 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r roundpd_011 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m roundpd_011 bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r roundpd_000 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m roundpd_000 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r roundpd_001 bfd33333333333338000000000000000 bff00000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -1.000000 +m roundpd_001 bfd33333333333338000000000000000 bff00000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -1.000000 +r roundpd_010 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m roundpd_010 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r roundpd_011 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m roundpd_011 bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r roundpd_000 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m roundpd_000 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r roundpd_001 bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000 inf -> inf -0.100000 -> -1.000000 +m roundpd_001 bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000 inf -> inf -0.100000 -> -1.000000 +r roundpd_010 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m roundpd_010 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r roundpd_011 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m roundpd_011 bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r roundpd_000 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m roundpd_000 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r roundpd_001 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m roundpd_001 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r roundpd_010 3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000 -inf -> -inf 0.100000 -> 1.000000 +m roundpd_010 3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000 -inf -> -inf 0.100000 -> 1.000000 +r roundpd_011 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m roundpd_011 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r roundpd_000 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m roundpd_000 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r roundpd_001 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m roundpd_001 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r roundpd_010 3fd3333333333333fff8000000000000 3ff0000000000000fff8000000000000 -nan -> -nan 0.300000 -> 1.000000 +m roundpd_010 3fd3333333333333fff8000000000000 3ff0000000000000fff8000000000000 -nan -> -nan 0.300000 -> 1.000000 +r roundpd_011 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m roundpd_011 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r roundpd_000 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m roundpd_000 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r roundpd_001 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m roundpd_001 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r roundpd_010 3fdfffd60e94ee397ff8000000000000 3ff00000000000007ff8000000000000 nan -> nan 0.499990 -> 1.000000 +m roundpd_010 3fdfffd60e94ee397ff8000000000000 3ff00000000000007ff8000000000000 nan -> nan 0.499990 -> 1.000000 +r roundpd_011 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m roundpd_011 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r roundpd_000 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +m roundpd_000 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +r roundpd_001 3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000 -1.300000 -> -2.000000 0.500010 -> 0.000000 +m roundpd_001 3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000 -1.300000 -> -2.000000 0.500010 -> 0.000000 +r roundpd_010 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +m roundpd_010 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +r roundpd_011 3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 0.000000 +m roundpd_011 3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 0.000000 +r roundpd_000 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +m roundpd_000 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +r roundpd_001 3fe6666666666666bff199999999999a 0000000000000000c000000000000000 -1.100000 -> -2.000000 0.700000 -> 0.000000 +m roundpd_001 3fe6666666666666bff199999999999a 0000000000000000c000000000000000 -1.100000 -> -2.000000 0.700000 -> 0.000000 +r roundpd_010 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +m roundpd_010 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +r roundpd_011 3fe6666666666666bff199999999999a 0000000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 0.000000 +m roundpd_011 3fe6666666666666bff199999999999a 0000000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 0.000000 +r roundpd_000 3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 1.000000 +m roundpd_000 3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 1.000000 +r roundpd_001 3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 0.000000 +m roundpd_001 3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 0.000000 +r roundpd_010 3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 1.000000 +m roundpd_010 3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 1.000000 +r roundpd_011 3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 0.000000 +m roundpd_011 3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 0.000000 +r roundpd_000 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +m roundpd_000 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +r roundpd_001 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +m roundpd_001 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +r roundpd_010 3ff199999999999abfe6666666666666 40000000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 2.000000 +m roundpd_010 3ff199999999999abfe6666666666666 40000000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 2.000000 +r roundpd_011 3ff199999999999abfe6666666666666 3ff00000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 1.000000 +m roundpd_011 3ff199999999999abfe6666666666666 3ff00000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 1.000000 +r roundpd_000 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +m roundpd_000 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +r roundpd_001 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +m roundpd_001 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +r roundpd_010 3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 2.000000 +m roundpd_010 3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 2.000000 +r roundpd_011 3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 1.000000 +m roundpd_011 3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 1.000000 +r roundpd_000 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m roundpd_000 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r roundpd_001 0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000 -0.499990 -> -1.000000 0.000000 -> 0.000000 +m roundpd_001 0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000 -0.499990 -> -1.000000 0.000000 -> 0.000000 +r roundpd_010 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m roundpd_010 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r roundpd_011 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m roundpd_011 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r roundpd_000 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m roundpd_000 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r roundpd_001 8000000000000000bfd3333333333333 8000000000000000bff0000000000000 -0.300000 -> -1.000000 -0.000000 -> -0.000000 +m roundpd_001 8000000000000000bfd3333333333333 8000000000000000bff0000000000000 -0.300000 -> -1.000000 -0.000000 -> -0.000000 +r roundpd_010 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m roundpd_010 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r roundpd_011 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m roundpd_011 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r roundpd_000 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m roundpd_000 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r roundpd_001 7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000 -0.100000 -> -1.000000 inf -> inf +m roundpd_001 7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000 -0.100000 -> -1.000000 inf -> inf +r roundpd_010 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m roundpd_010 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r roundpd_011 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m roundpd_011 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r roundpd_000 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m roundpd_000 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r roundpd_001 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m roundpd_001 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r roundpd_010 fff00000000000003fb999999999999a fff00000000000003ff0000000000000 0.100000 -> 1.000000 -inf -> -inf +m roundpd_010 fff00000000000003fb999999999999a fff00000000000003ff0000000000000 0.100000 -> 1.000000 -inf -> -inf +r roundpd_011 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m roundpd_011 fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r roundpd_000 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m roundpd_000 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r roundpd_001 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m roundpd_001 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r roundpd_010 fff80000000000003fd3333333333333 fff80000000000003ff0000000000000 0.300000 -> 1.000000 -nan -> -nan +m roundpd_010 fff80000000000003fd3333333333333 fff80000000000003ff0000000000000 0.300000 -> 1.000000 -nan -> -nan +r roundpd_011 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m roundpd_011 fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r roundpd_000 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m roundpd_000 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r roundpd_001 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m roundpd_001 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r roundpd_010 7ff80000000000003fdfffd60e94ee39 7ff80000000000003ff0000000000000 0.499990 -> 1.000000 nan -> nan +m roundpd_010 7ff80000000000003fdfffd60e94ee39 7ff80000000000003ff0000000000000 0.499990 -> 1.000000 nan -> nan +r roundpd_011 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m roundpd_011 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r roundpd_000 bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +m roundpd_000 bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +r roundpd_001 bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -2.000000 +m roundpd_001 bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -2.000000 +r roundpd_010 bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +m roundpd_010 bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +r roundpd_011 bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -1.000000 +m roundpd_011 bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -1.000000 +r roundpd_000 bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +m roundpd_000 bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +r roundpd_001 bff199999999999a3fe6666666666666 c0000000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -2.000000 +m roundpd_001 bff199999999999a3fe6666666666666 c0000000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -2.000000 +r roundpd_010 bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +m roundpd_010 bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +r roundpd_011 bff199999999999a3fe6666666666666 bff00000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -1.000000 +m roundpd_011 bff199999999999a3fe6666666666666 bff00000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -1.000000 +r roundpd_000 bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -1.000000 +m roundpd_000 bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -1.000000 +r roundpd_001 bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -1.000000 +m roundpd_001 bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -1.000000 +r roundpd_010 bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -0.000000 +m roundpd_010 bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -0.000000 +r roundpd_011 bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -0.000000 +m roundpd_011 bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -0.000000 +r roundpd_000 bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +m roundpd_000 bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +r roundpd_001 bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +m roundpd_001 bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +r roundpd_010 bfe66666666666663ff199999999999a 80000000000000004000000000000000 1.100000 -> 2.000000 -0.700000 -> -0.000000 +m roundpd_010 bfe66666666666663ff199999999999a 80000000000000004000000000000000 1.100000 -> 2.000000 -0.700000 -> -0.000000 +r roundpd_011 bfe66666666666663ff199999999999a 80000000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -0.000000 +m roundpd_011 bfe66666666666663ff199999999999a 80000000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -0.000000 +r roundpd_000 bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +m roundpd_000 bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +r roundpd_001 bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +m roundpd_001 bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +r roundpd_010 bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000 1.300000 -> 2.000000 -0.500010 -> -0.000000 +m roundpd_010 bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000 1.300000 -> 2.000000 -0.500010 -> -0.000000 +r roundpd_011 bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -0.000000 +m roundpd_011 bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -0.000000 +r roundps_000 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +m roundps_000 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +r roundps_001 3f0000a8befffeb07fc0000000000000 00000000bf8000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-1.000000 0.500010: 0.000000 +m roundps_001 3f0000a8befffeb07fc0000000000000 00000000bf8000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-1.000000 0.500010: 0.000000 +r roundps_010 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +m roundps_010 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +r roundps_011 3f0000a8befffeb07fc0000000000000 00000000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 0.000000 +m roundps_011 3f0000a8befffeb07fc0000000000000 00000000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 0.000000 +r roundps_000 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +m roundps_000 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +r roundps_001 3f333333be99999abfa6666680000000 00000000bf800000c000000080000000 -0.000000:-0.000000 -1.300000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 +m roundps_001 3f333333be99999abfa6666680000000 00000000bf800000c000000080000000 -0.000000:-0.000000 -1.300000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 +r roundps_010 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +m roundps_010 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +r roundps_011 3f333333be99999abfa6666680000000 0000000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 +m roundps_011 3f333333be99999abfa6666680000000 0000000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 +r roundps_000 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +m roundps_000 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +r roundps_001 3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000 inf: inf -1.100000:-2.000000 -0.100000:-1.000000 0.900000: 0.000000 +m roundps_001 3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000 inf: inf -1.100000:-2.000000 -0.100000:-1.000000 0.900000: 0.000000 +r roundps_010 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +m roundps_010 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +r roundps_011 3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 0.000000 +m roundps_011 3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 0.000000 +r roundps_000 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +m roundps_000 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +r roundps_001 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +m roundps_001 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +r roundps_010 3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 +m roundps_010 3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 +r roundps_011 3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 +m roundps_011 3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 +r roundps_000 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +m roundps_000 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +r roundps_001 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +m roundps_001 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +r roundps_010 3fa666663e99999abf333333ffc00000 400000003f80000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 1.000000 1.300000: 2.000000 +m roundps_010 3fa666663e99999abf333333ffc00000 400000003f80000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 1.000000 1.300000: 2.000000 +r roundps_011 3fa666663e99999abf333333ffc00000 3f8000000000000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 0.000000 1.300000: 1.000000 +m roundps_011 3fa666663e99999abf333333ffc00000 3f8000000000000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 0.000000 1.300000: 1.000000 +r roundps_000 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +m roundps_000 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +r roundps_001 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +m roundps_001 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +r roundps_010 000000003efffeb0bf0000a87fc00000 000000003f800000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 1.000000 0.000000: 0.000000 +m roundps_010 000000003efffeb0bf0000a87fc00000 000000003f800000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 1.000000 0.000000: 0.000000 +r roundps_011 000000003efffeb0bf0000a87fc00000 0000000000000000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 0.000000 0.000000: 0.000000 +m roundps_011 000000003efffeb0bf0000a87fc00000 0000000000000000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 0.000000 0.000000: 0.000000 +r roundps_000 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +m roundps_000 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +r roundps_001 800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000 -1.300000:-2.000000 -0.499990:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 +m roundps_001 800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000 -1.300000:-2.000000 -0.499990:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 +r roundps_010 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +m roundps_010 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +r roundps_011 800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 +m roundps_011 800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 +r roundps_000 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +m roundps_000 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +r roundps_001 7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000 -1.100000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 inf: inf +m roundps_001 7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000 -1.100000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 inf: inf +r roundps_010 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +m roundps_010 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +r roundps_011 7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 inf: inf +m roundps_011 7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 inf: inf +r roundps_000 ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000 -0.900000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +m roundps_000 ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000 -0.900000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +r roundps_001 ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000 -0.900000:-1.000000 -0.100000:-1.000000 0.900000: 0.000000 -inf: -inf +m roundps_001 ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000 -0.900000:-1.000000 -0.100000:-1.000000 0.900000: 0.000000 -inf: -inf +r roundps_010 ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +m roundps_010 ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +r roundps_011 ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 0.000000 -inf: -inf +m roundps_011 ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 0.000000 -inf: -inf +r roundps_000 ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m roundps_000 ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r roundps_001 ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m roundps_001 ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r roundps_010 ffc000003f8ccccd3dcccccdbf333333 ffc00000400000003f80000080000000 -0.700000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 -nan: -nan +m roundps_010 ffc000003f8ccccd3dcccccdbf333333 ffc00000400000003f80000080000000 -0.700000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 -nan: -nan +r roundps_011 ffc000003f8ccccd3dcccccdbf333333 ffc000003f8000000000000080000000 -0.700000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m roundps_011 ffc000003f8ccccd3dcccccdbf333333 ffc000003f8000000000000080000000 -0.700000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r roundps_000 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m roundps_000 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r roundps_001 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m roundps_001 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r roundps_010 7fc000003fa666663e99999abf0000a8 7fc00000400000003f80000080000000 -0.500010:-0.000000 0.300000: 1.000000 1.300000: 2.000000 nan: nan +m roundps_010 7fc000003fa666663e99999abf0000a8 7fc00000400000003f80000080000000 -0.500010:-0.000000 0.300000: 1.000000 1.300000: 2.000000 nan: nan +r roundps_011 7fc000003fa666663e99999abf0000a8 7fc000003f8000000000000080000000 -0.500010:-0.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m roundps_011 7fc000003fa666663e99999abf0000a8 7fc000003f8000000000000080000000 -0.500010:-0.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r roundps_000 bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +m roundps_000 bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +r roundps_001 bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000 -0.499990:-1.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 +m roundps_001 bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000 -0.499990:-1.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 +r roundps_010 bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000 -0.499990:-0.000000 0.499990: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 +m roundps_010 bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000 -0.499990:-0.000000 0.499990: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 +r roundps_011 bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +m roundps_011 bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +r roundps_000 bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m roundps_000 bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r roundps_001 bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000 -0.300000:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 +m roundps_001 bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000 -0.300000:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 +r roundps_010 bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m roundps_010 bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r roundps_011 bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000 -0.300000:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m roundps_011 bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000 -0.300000:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r roundps_000 bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-1.000000 +m roundps_000 bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-1.000000 +r roundps_001 bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000 -0.100000:-1.000000 0.700000: 0.000000 inf: inf -0.900000:-1.000000 +m roundps_001 bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000 -0.100000:-1.000000 0.700000: 0.000000 inf: inf -0.900000:-1.000000 +r roundps_010 bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-0.000000 +m roundps_010 bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-0.000000 +r roundps_011 bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000 -0.100000:-0.000000 0.700000: 0.000000 inf: inf -0.900000:-0.000000 +m roundps_011 bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000 -0.100000:-0.000000 0.700000: 0.000000 inf: inf -0.900000:-0.000000 +r roundps_000 bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000 0.100000: 0.000000 0.900000: 1.000000 -inf: -inf -0.700000:-1.000000 +m roundps_000 bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000 0.100000: 0.000000 0.900000: 1.000000 -inf: -inf -0.700000:-1.000000 +r roundps_001 bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-1.000000 +m roundps_001 bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-1.000000 +r roundps_010 bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000 0.100000: 1.000000 0.900000: 1.000000 -inf: -inf -0.700000:-0.000000 +m roundps_010 bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000 0.100000: 1.000000 0.900000: 1.000000 -inf: -inf -0.700000:-0.000000 +r roundps_011 bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-0.000000 +m roundps_011 bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-0.000000 +r roundps_000 bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +m roundps_000 bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +r roundps_001 bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +m roundps_001 bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +r roundps_010 bf0000a8ffc000003f8ccccd3e99999a 80000000ffc00000400000003f800000 0.300000: 1.000000 1.100000: 2.000000 -nan: -nan -0.500010:-0.000000 +m roundps_010 bf0000a8ffc000003f8ccccd3e99999a 80000000ffc00000400000003f800000 0.300000: 1.000000 1.100000: 2.000000 -nan: -nan -0.500010:-0.000000 +r roundps_011 bf0000a8ffc000003f8ccccd3e99999a 80000000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-0.000000 +m roundps_011 bf0000a8ffc000003f8ccccd3e99999a 80000000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-0.000000 +r roundps_000 befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +m roundps_000 befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +r roundps_001 befffeb07fc000003fa666663efffeb0 bf8000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-1.000000 +m roundps_001 befffeb07fc000003fa666663efffeb0 bf8000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-1.000000 +r roundps_010 befffeb07fc000003fa666663efffeb0 800000007fc00000400000003f800000 0.499990: 1.000000 1.300000: 2.000000 nan: nan -0.499990:-0.000000 +m roundps_010 befffeb07fc000003fa666663efffeb0 800000007fc00000400000003f800000 0.499990: 1.000000 1.300000: 2.000000 nan: nan -0.499990:-0.000000 +r roundps_011 befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +m roundps_011 befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +r roundps_000 be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m roundps_000 be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r roundps_001 be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 -0.300000:-1.000000 +m roundps_001 be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 -0.300000:-1.000000 +r roundps_010 be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m roundps_010 be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r roundps_011 be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m roundps_011 be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r roundps_000 bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m roundps_000 bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r roundps_001 bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 -0.100000:-1.000000 +m roundps_001 bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 -0.100000:-1.000000 +r roundps_010 bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m roundps_010 bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r roundps_011 bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m roundps_011 bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r roundps_000 3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +m roundps_000 3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +r roundps_001 3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +m roundps_001 3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +r roundps_010 3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-0.000000 0.100000: 1.000000 +m roundps_010 3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-0.000000 0.100000: 1.000000 +r roundps_011 3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-0.000000 0.100000: 0.000000 +m roundps_011 3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-0.000000 0.100000: 0.000000 +r roundps_000 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +m roundps_000 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +r roundps_001 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +m roundps_001 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +r roundps_010 3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000 1.100000: 2.000000 -inf: -inf -0.700000:-0.000000 0.300000: 1.000000 +m roundps_010 3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000 1.100000: 2.000000 -inf: -inf -0.700000:-0.000000 0.300000: 1.000000 +r roundps_011 3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-0.000000 0.300000: 0.000000 +m roundps_011 3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-0.000000 0.300000: 0.000000 +r roundps_000 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +m roundps_000 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +r roundps_001 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +m roundps_001 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +r roundps_010 3efffeb0bf0000a8ffc000003fa66666 3f80000080000000ffc0000040000000 1.300000: 2.000000 -nan: -nan -0.500010:-0.000000 0.499990: 1.000000 +m roundps_010 3efffeb0bf0000a8ffc000003fa66666 3f80000080000000ffc0000040000000 1.300000: 2.000000 -nan: -nan -0.500010:-0.000000 0.499990: 1.000000 +r roundps_011 3efffeb0bf0000a8ffc000003fa66666 0000000080000000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-0.000000 0.499990: 0.000000 +m roundps_011 3efffeb0bf0000a8ffc000003fa66666 0000000080000000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-0.000000 0.499990: 0.000000 +r (rm=0) roundsd_1XX ce7d85807031a7870000000000000000 45e800698e5e5ad50000000000000000 0.000000 0.000000 +m (rm=0) roundsd_1XX 56efc6eff999a7570000000000000000 9d6e25ef9723e6140000000000000000 0.000000 0.000000 +r (rm=1) roundsd_1XX 969e4fa82b9f4d710000000000000000 9c1852b7570ef5340000000000000000 0.000000 0.000000 +m (rm=1) roundsd_1XX ead61e19a1d1d5810000000000000000 9c31822c6aaac4de0000000000000000 0.000000 0.000000 +r (rm=2) roundsd_1XX aee22eadf7ba7b320000000000000000 fa04b1ba6b838fc10000000000000000 0.000000 0.000000 +m (rm=2) roundsd_1XX 3e0f7bd0cae67a310000000000000000 13dedbcdf72692870000000000000000 0.000000 0.000000 +r (rm=3) roundsd_1XX f5a901eeb5e20f290000000000000000 410bfdd1a81e08dd0000000000000000 0.000000 0.000000 +m (rm=3) roundsd_1XX 31fcbd74553975c70000000000000000 e1d712331df72e6e0000000000000000 0.000000 0.000000 +r (rm=0) roundsd_1XX 4d54aacc4578eab78000000000000000 4f8e155df03e40e78000000000000000 -0.000000 -0.000000 +m (rm=0) roundsd_1XX a5fdc463222aa8a48000000000000000 e87b05bcbd7e79f38000000000000000 -0.000000 -0.000000 +r (rm=1) roundsd_1XX 944207a687dbec3a8000000000000000 06ecdbbd2143173f8000000000000000 -0.000000 -0.000000 +m (rm=1) roundsd_1XX 787170ff1018f1278000000000000000 062b95cbb71a54778000000000000000 -0.000000 -0.000000 +r (rm=2) roundsd_1XX abd4f9dc5a6cf5158000000000000000 44852d511c8e6c468000000000000000 -0.000000 -0.000000 +m (rm=2) roundsd_1XX 8bb8a0a8016332b08000000000000000 1c46a1bdeb2b9d598000000000000000 -0.000000 -0.000000 +r (rm=3) roundsd_1XX 726960cfa089e4a58000000000000000 eabaed7ac17e215b8000000000000000 -0.000000 -0.000000 +m (rm=3) roundsd_1XX be3236bdd36b49a08000000000000000 0a2c0bf4391234f98000000000000000 -0.000000 -0.000000 +r (rm=0) roundsd_1XX c9611cde37959b4c7ff0000000000000 d8eaf997f07414df7ff0000000000000 inf inf +m (rm=0) roundsd_1XX f140109e689117567ff0000000000000 b03eb2cf812ffbb87ff0000000000000 inf inf +r (rm=1) roundsd_1XX 901c0d6900edf86a7ff0000000000000 ee75320989cf26317ff0000000000000 inf inf +m (rm=1) roundsd_1XX 04420fac9e347c337ff0000000000000 eedb75afa3e0d1f57ff0000000000000 inf inf +r (rm=2) roundsd_1XX a7fb13d1dcf3dd5d7ff0000000000000 0bbc782f6bef37b17ff0000000000000 inf inf +m (rm=2) roundsd_1XX d696144656b557957ff0000000000000 a36436f37e8795107ff0000000000000 inf inf +r (rm=3) roundsd_1XX ee5e0d75a90628877ff0000000000000 111eab69783527c07ff0000000000000 inf inf +m (rm=3) roundsd_1XX 499efdcc70738adf7ff0000000000000 b138d3fcf484296a7ff0000000000000 inf inf +r (rm=0) roundsd_1XX 44a4ddb64887ba48fff0000000000000 defcaa188e00d6bdfff0000000000000 -inf -inf +m (rm=0) roundsd_1XX 3bbaaa9fcccff46efff0000000000000 f6b72d29e3356b63fff0000000000000 -inf -inf +r (rm=1) roundsd_1XX 8a2d61f398d573fffff0000000000000 54b5579b8fb02408fff0000000000000 -inf -inf +m (rm=1) roundsd_1XX 8d49fd1e492774a4fff0000000000000 534124da2cfc3c59fff0000000000000 -inf -inf +r (rm=2) roundsd_1XX a1597a8c7b51330cfff0000000000000 51a9905259a6f002fff0000000000000 -inf -inf +m (rm=2) roundsd_1XX 20abd5a9c9ddebe1fff0000000000000 a838986faf397caefff0000000000000 -inf -inf +r (rm=3) roundsd_1XX 678908e2d05ad9cffff0000000000000 b639379ecd411b0afff0000000000000 -inf -inf +m (rm=3) roundsd_1XX d24011a12a513984fff0000000000000 d5f968494c4b0bc2fff0000000000000 -inf -inf +r (rm=0) roundsd_1XX bd1ceb54765047a9fff8000000000000 63c42adecbe28681fff8000000000000 -nan -nan +m (rm=0) roundsd_1XX 846993654ee23eedfff8000000000000 bae676c8e392c9f3fff8000000000000 -nan -nan +r (rm=1) roundsd_1XX 827303424e935cfafff8000000000000 38aa4a7232e80fc6fff8000000000000 -nan -nan +m (rm=1) roundsd_1XX 1585395613f0da7cfff8000000000000 375ea14a546f95a3fff8000000000000 -nan -nan +r (rm=2) roundsd_1XX 98ed300d3884f720fff8000000000000 144c77bbe4b39739fff8000000000000 -nan -nan +m (rm=2) roundsd_1XX 67f5e4d35adced92fff8000000000000 2cc1c8317e415132fff8000000000000 -nan -nan +r (rm=3) roundsd_1XX deea52141483f97efff8000000000000 d9099019bfa4fe3bfff8000000000000 -nan -nan +m (rm=3) roundsd_1XX 5818743c0305578efff8000000000000 7870ccdd4368dbfffff8000000000000 -nan -nan +r (rm=0) roundsd_1XX 33cb48b8c2ee42717ff8000000000000 654277eaa51a242b7ff8000000000000 nan nan +m (rm=0) roundsd_1XX ca4fc9f2eecbf7d17ff8000000000000 fcca8dad8145146a7ff8000000000000 nan nan +r (rm=1) roundsd_1XX 79eff3582227b25b7ff8000000000000 9a560b907475e8697ff8000000000000 nan nan +m (rm=1) roundsd_1XX 9bf8c354fb8fafba7ff8000000000000 9930eb011937dcd47ff8000000000000 nan nan +r (rm=2) roundsd_1XX 8eb73354148e299b7ff8000000000000 56a52b6b0d162c567ff8000000000000 nan nan +m (rm=2) roundsd_1XX ac7641c309b05daa7ff8000000000000 2d01c639eb9e139c7ff8000000000000 nan nan +r (rm=3) roundsd_1XX 5381e90d778287927ff8000000000000 7a90b8d9505cce517ff8000000000000 nan nan +m (rm=3) roundsd_1XX dd26259efa8fe2ff7ff8000000000000 999efeb6d7db99227ff8000000000000 nan nan +r (rm=0) roundsd_1XX a8b0f2e22d63ab9fbff4cccccccccccd e676923d1da8b0bbbff0000000000000 -1.300000 -1.000000 +m (rm=0) roundsd_1XX 0e6a4d45ac8b1e1cbff4cccccccccccd bd6572d8bd4d4ec7bff0000000000000 -1.300000 -1.000000 +r (rm=1) roundsd_1XX 6da1313314927722bff4cccccccccccd 7ab79af45459b0f3c000000000000000 -1.300000 -2.000000 +m (rm=1) roundsd_1XX 1fa19b180004f15ebff4cccccccccccd 78b804fd7d5511eac000000000000000 -1.300000 -2.000000 +r (rm=2) roundsd_1XX 81b685610d6ec97cbff4cccccccccccd 15b4ad60d4cfaf59bff0000000000000 -1.300000 -1.000000 +m (rm=2) roundsd_1XX f02ced78d65b3b27bff4cccccccccccd acf79288f652c4ebbff0000000000000 -1.300000 -1.000000 +r (rm=3) roundsd_1XX c64fcecbf857820cbff4cccccccccccd 99ccaee07f6b8d4ebff0000000000000 -1.300000 -1.000000 +m (rm=3) roundsd_1XX 606a24c50eefdbd6bff4cccccccccccd 3781fdd60aa4452bbff0000000000000 -1.300000 -1.000000 +r (rm=0) roundsd_1XX 1acaebd2b5ae8232bff199999999999a e4607cd5338c2a31bff0000000000000 -1.100000 -1.000000 +m (rm=0) roundsd_1XX 51bb205d8820b3ccbff199999999999a fbb6264997ac760abff0000000000000 -1.100000 -1.000000 +r (rm=1) roundsd_1XX 5f89bdd524d2a94fbff199999999999a d7cff69ed2926562c000000000000000 -1.100000 -2.000000 +m (rm=1) roundsd_1XX a180c0a3244fa168bff199999999999a d6f7eb407ec935e6c000000000000000 -1.100000 -2.000000 +r (rm=2) roundsd_1XX 73ec25342423d7c2bff199999999999a 5379fe9b3ade2042bff0000000000000 -1.100000 -1.000000 +m (rm=2) roundsd_1XX 3118e6f4c1db870abff199999999999a a9a32c1c9f5c6321bff0000000000000 -1.100000 -1.000000 +r (rm=3) roundsd_1XX 3752014f9702ececbff199999999999a 36bf722d4ccf3930bff0000000000000 -1.100000 -1.000000 +m (rm=3) roundsd_1XX e1e470b241244313bff199999999999a 541acb3cdac4e01bbff0000000000000 -1.100000 -1.000000 +r (rm=0) roundsd_1XX 8b1b32885bcec72cbfeccccccccccccd 610033b3e7c6928dbff0000000000000 -0.900000 -1.000000 +m (rm=0) roundsd_1XX 9143403c828bb6e2bfeccccccccccccd b7bda7000f618b32bff0000000000000 -0.900000 -1.000000 +r (rm=1) roundsd_1XX 4fa8973c52e84ae2bfeccccccccccccd b39d218eed2209b8bff0000000000000 -0.900000 -1.000000 +m (rm=1) roundsd_1XX 219534f36570c0d8bfeccccccccccccd b2eb9fc91e9346c8bff0000000000000 -0.900000 -1.000000 +r (rm=2) roundsd_1XX 625812cd5aaf536fbfeccccccccccccd 0ef41c1d3d437f118000000000000000 -0.900000 -0.000000 +m (rm=2) roundsd_1XX 703b2d36cb314054bfeccccccccccccd 240595f6e6bbef3d8000000000000000 -0.900000 -0.000000 +r (rm=3) roundsd_1XX a68b829a5483c332bfeccccccccccccd 516804c0b68ad4f98000000000000000 -0.900000 -0.000000 +m (rm=3) roundsd_1XX 60940b65923018b6bfeccccccccccccd ef6967e7493968f08000000000000000 -0.900000 -0.000000 +r (rm=0) roundsd_1XX f9a2c60320c57a8bbfe6666666666666 5b56b9d83a56e7cfbff0000000000000 -0.700000 -1.000000 +m (rm=0) roundsd_1XX cf00aee19acd265fbfe6666666666666 f17af6fd256c8f41bff0000000000000 -0.700000 -1.000000 +r (rm=1) roundsd_1XX 3dfcbf699dd458dbbfe6666666666666 0d201ac4a7079af3bff0000000000000 -0.700000 -1.000000 +m (rm=1) roundsd_1XX 9ee0f609c5664caebfe6666666666666 0b9522975bb44591bff0000000000000 -0.700000 -1.000000 +r (rm=2) roundsd_1XX 50f94e2cad103d82bfe6666666666666 482509e4defeccc68000000000000000 -0.700000 -0.000000 +m (rm=2) roundsd_1XX ae93c33ef25e6803bfe6666666666666 1e1ccb16cb716a3f8000000000000000 -0.700000 -0.000000 +r (rm=3) roundsd_1XX 13fa51aa2fda09debfe6666666666666 eac66499bf9a5ca78000000000000000 -0.700000 -0.000000 +m (rm=3) roundsd_1XX dd7af4de00125bbfbfe6666666666666 086fd0d95504deab8000000000000000 -0.700000 -0.000000 +r (rm=0) roundsd_1XX 665ea94502919b51bfe00014f8b588e3 d4620c422a3c2bf7bff0000000000000 -0.500010 -1.000000 +m (rm=0) roundsd_1XX 0bf46a4cd0e40541bfe00014f8b588e3 a9ed1340d9cc8136bff0000000000000 -0.500010 -1.000000 +r (rm=1) roundsd_1XX 2986355d0796d53abfe00014f8b588e3 e55ae13fff421a15bff0000000000000 -0.500010 -1.000000 +m (rm=1) roundsd_1XX 1a6106e5433346eabfe00014f8b588e3 e3f672ac372a323fbff0000000000000 -0.500010 -1.000000 +r (rm=2) roundsd_1XX 3cd1d7511e4895fabfe00014f8b588e3 ff0dc3f11d0f07618000000000000000 -0.500010 -0.000000 +m (rm=2) roundsd_1XX e922a60b3760fe18bfe00014f8b588e3 95eacf7c4e7dd3268000000000000000 -0.500010 -0.000000 +r (rm=3) roundsd_1XX 7e9f6e812807bcf0bfe00014f8b588e3 01db92b86600d33c8000000000000000 -0.500010 -0.000000 +m (rm=3) roundsd_1XX 57962b1e8dca0d2ebfe00014f8b588e3 9e2a08100025424c8000000000000000 -0.500010 -0.000000 +r (rm=0) roundsd_1XX d151d94d02342a7dbfdfffd60e94ee39 ca242ef2b8785d058000000000000000 -0.499990 -0.000000 +m (rm=0) roundsd_1XX 461d757c25d15289bfdfffd60e94ee39 e015fec92b8360118000000000000000 -0.499990 -0.000000 +r (rm=1) roundsd_1XX 1346f9168f2ebf00bfdfffd60e94ee39 3b497601f4d4871cbff0000000000000 -0.499990 -1.000000 +m (rm=1) roundsd_1XX 94186387ded6ae8bbfdfffd60e94ee39 390c9106b0f60dd3bff0000000000000 -0.499990 -1.000000 +r (rm=2) roundsd_1XX 25dfaf3cae565bd9bfdfffd60e94ee39 34aa4b45fb7630e28000000000000000 -0.499990 -0.000000 +m (rm=2) roundsd_1XX 22e6d79f9a380294bfdfffd60e94ee39 8a6ea1286fdf29f48000000000000000 -0.499990 -0.000000 +r (rm=3) roundsd_1XX e77bd91d3e0ade68bfdfffd60e94ee39 96a58e1cabbd37b68000000000000000 -0.499990 -0.000000 +m (rm=3) roundsd_1XX d0e8b02337582c03bfdfffd60e94ee39 b39b0e8e489d94d38000000000000000 -0.499990 -0.000000 +r (rm=0) roundsd_1XX 397a581b21ad280ebfd3333333333333 3e9c1de9e4097df98000000000000000 -0.300000 -0.000000 +m (rm=0) roundsd_1XX 7e7dcd7397950d38bfd3333333333333 94f4b7981b902ed18000000000000000 -0.300000 -0.000000 +r (rm=1) roundsd_1XX fb3c0b96359c182bbfd3333333333333 0fefd90988bbe20abff0000000000000 -0.300000 -1.000000 +m (rm=1) roundsd_1XX 0c050ff0984f8593bfd3333333333333 0dd87ea7c818d74dbff0000000000000 -0.300000 -1.000000 +r (rm=2) roundsd_1XX 0d22d4ed5b398f1dbfd3333333333333 e8fda2de763346498000000000000000 -0.300000 -0.000000 +m (rm=2) roundsd_1XX 5ae156f91be77475bfd3333333333333 fda8411a2e966ea88000000000000000 -0.300000 -0.000000 +r (rm=3) roundsd_1XX 4e8c928073e36e46bfd3333333333333 a82658c78dcf89178000000000000000 -0.300000 -0.000000 +m (rm=3) roundsd_1XX 477082ee00bcb93dbfd3333333333333 46c3e1522f6ad4418000000000000000 -0.300000 -0.000000 +r (rm=0) roundsd_1XX a0d924af5dfb9306bfb999999999999a 31cada25aff18bd38000000000000000 -0.100000 -0.000000 +m (rm=0) roundsd_1XX b4127330272e364cbfb999999999999a c6893eada9f3ea788000000000000000 -0.100000 -0.000000 +r (rm=1) roundsd_1XX e1696cdbf9e0dfbcbfb999999999999a 614a0a57baf92cddbff0000000000000 -0.100000 -1.000000 +m (rm=1) roundsd_1XX 8228091e709ec901bfb999999999999a 5e5b388e7d918eaebff0000000000000 -0.100000 -1.000000 +r (rm=2) roundsd_1XX f29c486427f331c8bfb999999999999a 1906c6bd8f464b968000000000000000 -0.100000 -0.000000 +m (rm=2) roundsd_1XX 8f112418ba6b53bdbfb999999999999a ee98af528ba4a1428000000000000000 -0.100000 -0.000000 +r (rm=3) roundsd_1XX b3d399a8c6936b8bbfb999999999999a 395cf0b80e38ca5d8000000000000000 -0.100000 -0.000000 +m (rm=3) roundsd_1XX bc2ea37fe7f6b5debfb999999999999a 56a0835bb38d03948000000000000000 -0.100000 -0.000000 +r (rm=0) roundsd_1XX 046d3f09b7206c643fb999999999999a a1af66a7172f87930000000000000000 0.100000 0.000000 +m (rm=0) roundsd_1XX e9de68b2d59dcdc63fb999999999999a 76d49408d5ab93050000000000000000 0.100000 0.000000 +r (rm=1) roundsd_1XX c5cb1ae7dbfa13b33fb999999999999a 315c09eb8a8c63960000000000000000 0.100000 0.000000 +m (rm=1) roundsd_1XX f681511265c37bd53fb999999999999a 2e93c1bad15f33f40000000000000000 0.100000 0.000000 +r (rm=2) roundsd_1XX d64c09a1108241d93fb999999999999a c9c5b9e346af3ec93ff0000000000000 0.100000 1.000000 +m (rm=2) roundsd_1XX c2783ffe77c5a16a3fb999999999999a 5e3eebd08608c1c13ff0000000000000 0.100000 1.000000 +r (rm=3) roundsd_1XX 1650ee973718d7353fb999999999999a 484955ef2df6f8890000000000000000 0.100000 0.000000 +m (rm=3) roundsd_1XX 2f2212d6eb051ee53fb999999999999a e533f3abd6061fcd0000000000000000 0.100000 0.000000 +r (rm=0) roundsd_1XX 6738a729301ab3273fd3333333333333 9049bf701dc371390000000000000000 0.300000 0.000000 +m (rm=0) roundsd_1XX 1bdfaafba1e3d1a73fd3333333333333 a4d5b7aa9fba2b770000000000000000 0.300000 0.000000 +r (rm=1) roundsd_1XX a76316b8dbeab6103fd3333333333333 7f24d6c5f77689360000000000000000 0.300000 0.000000 +m (rm=1) roundsd_1XX 6710e7cc79be9c0f3fd3333333333333 7c81182dc283c6200000000000000000 0.300000 0.000000 +r (rm=2) roundsd_1XX b73119a317e8c04f3fd3333333333333 f63a794e9b6e1fe23ff0000000000000 0.300000 1.000000 +m (rm=2) roundsd_1XX f414a8aa52f65d7d3fd3333333333333 4b99f6941fc2d0273ff0000000000000 0.300000 1.000000 +r (rm=3) roundsd_1XX 7803914bc673b0453fd3333333333333 d5ec896ce90b159c0000000000000000 0.300000 0.000000 +m (rm=3) roundsd_1XX a04ccff40eebf5523fd3333333333333 f27d304096d529ec0000000000000000 0.300000 0.000000 +r (rm=0) roundsd_1XX c8395e0fc6eb68513fdfffd60e94ee39 fc99e77ec1ad49c50000000000000000 0.499990 0.000000 +m (rm=0) roundsd_1XX 4b163a0a8bfe44ed3fdfffd60e94ee39 518ba891071fb1d00000000000000000 0.499990 0.000000 +r (rm=1) roundsd_1XX 87316050f8b1c6d33fdfffd60e94ee39 4ba171e403b59cbb0000000000000000 0.499990 0.000000 +m (rm=1) roundsd_1XX d7d5ca4caa8e2aaf3fdfffd60e94ee39 47263ce552fd47320000000000000000 0.499990 0.000000 +r (rm=2) roundsd_1XX 974d766c3d24ac2c3fdfffd60e94ee39 a26507ff8f83eee13ff0000000000000 0.499990 1.000000 +m (rm=2) roundsd_1XX 23e65f1b4bfc87f73fdfffd60e94ee39 b6abce9e56d1cd733ff0000000000000 0.499990 1.000000 +r (rm=3) roundsd_1XX d7ed82c673a4f8bb3fdfffd60e94ee39 e0448b2f44751f940000000000000000 0.499990 0.000000 +m (rm=3) roundsd_1XX 0eabd9d74ea73a253fdfffd60e94ee39 7c7c3c1cf5fb21f20000000000000000 0.499990 0.000000 +r (rm=0) roundsd_1XX 266f62bb7b928be03fe00014f8b588e3 e79fdcd204ed0f373ff0000000000000 0.500010 1.000000 +m (rm=0) roundsd_1XX 7a8418df93ef259a3fe00014f8b588e3 7bf867be0dd9240f3ff0000000000000 0.500010 1.000000 +r (rm=1) roundsd_1XX 6535f8ad344d45fc3fe00014f8b588e3 95d5d94aad4b9e270000000000000000 0.500010 0.000000 +m (rm=1) roundsd_1XX 45d0fc93fa3526b53fe00014f8b588e3 91802fe47fceb72b0000000000000000 0.500010 0.000000 +r (rm=2) roundsd_1XX 759f22fb8035066e3fe00014f8b588e3 cb4664f720eeabc63ff0000000000000 0.500010 1.000000 +m (rm=2) roundsd_1XX 50ef655363d81fd63fe00014f8b588e3 9f7374ee2b37b8a53ff0000000000000 0.500010 1.000000 +r (rm=3) roundsd_1XX 340cc1063eabad973fe00014f8b588e3 69535b373d3618730000000000000000 0.500010 0.000000 +m (rm=3) roundsd_1XX 7b413280ad39ee5e3fe00014f8b588e3 8531163df17607dd0000000000000000 0.500010 0.000000 +r (rm=0) roundsd_1XX 83dcb52d4d0e1cd63fe6666666666666 4f5b9f6de483c38f3ff0000000000000 0.700000 1.000000 +m (rm=0) roundsd_1XX a6274579b9b774ac3fe6666666666666 231bf431b1ea86343ff0000000000000 0.700000 1.000000 +r (rm=1) roundsd_1XX 4270ded18ebf318b3fe6666666666666 5dbe10f6f5368d780000000000000000 0.700000 0.000000 +m (rm=1) roundsd_1XX b1017c9f68b291203fe6666666666666 5990f0284bf414090000000000000000 0.700000 0.000000 +r (rm=2) roundsd_1XX 50271b50e11dce173fe6666666666666 73dd8e344faf56913ff0000000000000 0.700000 1.000000 +m (rm=2) roundsd_1XX 7c2db851988b241b3fe6666666666666 06f1e8859ef390bc3ff0000000000000 0.700000 1.000000 +r (rm=3) roundsd_1XX 8f614e0d2688d1d93fe6666666666666 7017f986d44cfe370000000000000000 0.700000 0.000000 +m (rm=3) roundsd_1XX e60dd9ef2aa10ffd3fe6666666666666 0c9dbda58c47dcae0000000000000000 0.700000 0.000000 +r (rm=0) roundsd_1XX dd7f55653d611b323feccccccccccccd 36cd314d626f65cd3ff0000000000000 0.900000 1.000000 +m (rm=0) roundsd_1XX d001bfdafd5431243feccccccccccccd 49f44feaf351d63e3ff0000000000000 0.900000 1.000000 +r (rm=1) roundsd_1XX 1ce012ba06078c803feccccccccccccd a35e15e8da786ab00000000000000000 0.900000 0.000000 +m (rm=1) roundsd_1XX 1b684a71f30569f23feccccccccccccd 9e577eb3b4705fcd0000000000000000 0.900000 0.000000 +r (rm=2) roundsd_1XX 2ae4636b61da04263feccccccccccccd 982a87b71cc6ef423ff0000000000000 0.900000 1.000000 +m (rm=2) roundsd_1XX a5a25915eb1398c73feccccccccccccd ec252a61af0457ba3ff0000000000000 0.900000 1.000000 +r (rm=3) roundsd_1XX e8ec29d92d3b62813feccccccccccccd f592651b08b9d2e20000000000000000 0.900000 0.000000 +m (rm=3) roundsd_1XX 4f0fce24c4df9e013feccccccccccccd 11be3353c46e9e650000000000000000 0.900000 0.000000 +r (rm=0) roundsd_1XX 365744634c8988f33ff199999999999a 9af590737eb1f5f03ff0000000000000 1.100000 1.000000 +m (rm=0) roundsd_1XX f910870160c85b033ff199999999999a ed8379e9d30e132f3ff0000000000000 1.100000 1.000000 +r (rm=1) roundsd_1XX f48694699c2554dc3ff199999999999a 67b3e8205e0f36cd3ff0000000000000 1.100000 1.000000 +m (rm=1) roundsd_1XX 830565099d2eaf2a3ff199999999999a 62d3db84bc4298773ff0000000000000 1.100000 1.000000 +r (rm=2) roundsd_1XX 01d8f84cfe6ea89a3ff199999999999a 3c2d4d81883376d94000000000000000 1.100000 2.000000 +m (rm=2) roundsd_1XX cc4c499e5c717ad83ff199999999999a 4f0e3a835e6c0c9e4000000000000000 1.100000 2.000000 +r (rm=3) roundsd_1XX 3fad526b52c4628f3ff199999999999a f8c29ff6db7b95723ff0000000000000 1.100000 1.000000 +m (rm=3) roundsd_1XX b64711207df29c6c3ff199999999999a 939577469bec4e033ff0000000000000 1.100000 1.000000 +r (rm=0) roundsd_1XX 8c6680277888631b3ff4cccccccccccd 7cd3bee0394973fa3ff0000000000000 1.300000 1.000000 +m (rm=0) roundsd_1XX 1f569dede011f4473ff4cccccccccccd 10c8702e51203f063ff0000000000000 1.300000 1.000000 +r (rm=1) roundsd_1XX ca6264df50198b9d3ff4cccccccccccd a9bf899e80fdefd13ff0000000000000 1.300000 1.000000 +m (rm=1) roundsd_1XX e8d7cf68642d64c83ff4cccccccccccd a405069a616abf083ff0000000000000 1.300000 1.000000 +r (rm=2) roundsd_1XX d702dcf3b9d8ba753ff4cccccccccccd 5de6e29091f5eb564000000000000000 1.300000 2.000000 +m (rm=2) roundsd_1XX f12d86eeeba6ca4f3ff4cccccccccccd 30ae19ebab2aae684000000000000000 1.300000 2.000000 +r (rm=3) roundsd_1XX 94a5c9c49523d0043ff4cccccccccccd 79a9a7174c9445e93ff0000000000000 1.300000 1.000000 +m (rm=3) roundsd_1XX 1bb5a1e153dc073d3ff4cccccccccccd 942388800fbfec863ff0000000000000 1.300000 1.000000 +r (rm=0) roundss_1XX e1ab0bb1c25daca8dec2a64b00000000 dd67b9929137dfea19fbaf3a00000000 0.000000 0.000000 +m (rm=0) roundss_1XX 43d102a07e30fbf124f93e4c00000000 b0c235b96d8959c3ace6342e00000000 0.000000 0.000000 +r (rm=1) roundss_1XX 9e74821a22e330c43c4a50ed00000000 6981f8613f4097ba3f1032f800000000 0.000000 0.000000 +m (rm=1) roundss_1XX 4ce0878c4a0186cc0181591b00000000 64eefef7a5e9d47ead46248400000000 0.000000 0.000000 +r (rm=2) roundss_1XX ab610d6093173ab64f69d3c000000000 fc5544e5380e4eb9d25486be00000000 0.000000 0.000000 +m (rm=2) roundss_1XX 1543110498b0882d01d03cca00000000 8f04c599963e3f178906d49200000000 0.000000 0.000000 +r (rm=3) roundss_1XX e7d28ee2f658abdef5800f2400000000 78467d7e5b02e445b0288bec00000000 0.000000 0.000000 +m (rm=3) roundss_1XX 7d598068489ce0740646c8b900000000 136668ff22e878ef228526b900000000 0.000000 0.000000 +r (rm=0) roundss_1XX 3425e3012b07639c0feee47780000000 bbb1828a877b39c0baea21e380000000 -0.000000 -0.000000 +m (rm=0) roundss_1XX 6683b4193a267002ee44dd4980000000 ce73c88a274861655624f85880000000 -0.000000 -0.000000 +r (rm=1) roundss_1XX 70bdee1c118342517d13311b80000000 a7f8356b9dda2c8ad0fd270280000000 -0.000000 -0.000000 +m (rm=1) roundss_1XX ae1f8d764eac16369a295bda80000000 a18cc59986bdd8da06422bcf80000000 -0.000000 -0.000000 +r (rm=2) roundss_1XX 7cf78d938a2d285c1f50d77080000000 1a7a74817d7d9f02d2be7faa80000000 -0.000000 -0.000000 +m (rm=2) roundss_1XX 3690eadf6390b370ea5522ca80000000 6c103f8d1fa7bead123f9f7f80000000 -0.000000 -0.000000 +r (rm=3) roundss_1XX 3835a1c77564f51ed504b7d580000000 f598212a07c77088a08f073a80000000 -0.000000 -0.000000 +m (rm=3) roundss_1XX de33adb55b322811be29117b80000000 0f5f16c5d267f23e597c34c780000000 -0.000000 -0.000000 +r (rm=0) roundss_1XX 84d60a17b18888f67f90afaa7f800000 18b11ac91b15807c1ad0a1127f800000 inf inf +m (rm=0) roundss_1XX 866ab45814f15378f5050a4d7f800000 6ada29a17f5c56eebd58ca077f800000 inf inf +r (rm=1) roundss_1XX 403ba8e31ff9c344fc53a0507f800000 632640bb99c9b03f1fe02b937f800000 inf inf +m (rm=1) roundss_1XX 0e94e1266f2d15067147eb9f7f800000 5de05a8206e7c91c1c3340a07f800000 inf inf +r (rm=2) roundss_1XX 4cc35b8c9f1884692ead69267f800000 b55673626142de31911f861c7f800000 inf inf +m (rm=2) roundss_1XX 551212814c474d1a105196d17f800000 c8d287c746672a29586e78f27f800000 inf inf +r (rm=3) roundss_1XX 87ce02711245acc4f3ffec8c7f800000 f0a1931d52e1ebb04eed920d7f800000 inf inf +m (rm=3) roundss_1XX 3d4328c98b9edd14b383e9437f800000 8a0f91d1213c5b744f68505b7f800000 inf inf +r (rm=0) roundss_1XX d3bd7ff355de1bb52ca808e3ff800000 f2677f4d4d05b61e37ab2fc7ff800000 -inf -inf +m (rm=0) roundss_1XX a487035c0c92a3543b3bc556ff800000 84f758fe75c73a5de282a93dff800000 -inf -inf +r (rm=1) roundss_1XX 0eefb0714b45b19dba089c8aff800000 9d091951330f21db2cb83caaff800000 -inf -inf +m (rm=1) roundss_1XX 6c3f829caf84813b86db0a6aff800000 97eabcb12367a844f11b64f8ff800000 -inf -inf +r (rm=2) roundss_1XX 19c4764bd3da4edb7b8089e1ff800000 cfe73f89e25d0b460d759b14ff800000 -inf -inf +m (rm=2) roundss_1XX 73ca87e953d3552975c397ddff800000 a14a9d470b7d858a5c935febff800000 -inf -inf +r (rm=3) roundss_1XX d49db1e2ccfcd2d04f6fb049ff800000 695fd2563b5253bfba412a67ff800000 -inf -inf +m (rm=3) roundss_1XX 9a89f0a2dae0007de7524e11ff800000 8374db220d68b18f034b7a76ff800000 -inf -inf +r (rm=0) roundss_1XX 1fda4195180b1cdb1836ef22ffc00000 4bd3b3171e4bdaa6137dcb02ffc00000 -nan -nan +m (rm=0) roundss_1XX c1db9f27220a6297bee80e66ffc00000 1dca55a109880cb2c5a297f9ffc00000 -nan -nan +r (rm=1) roundss_1XX dad906c495680e5cb53427caffc00000 55a3c02d6aaa815cf7875c46ffc00000 -nan -nan +m (rm=1) roundss_1XX c72072d90cb15bd7d8e6b63bffc00000 4eabed25de3e755384f995d5ffc00000 -nan -nan +r (rm=2) roundss_1XX e5fce0d0247286b405c938a3ffc00000 662edaf701ce264148c2be92ffc00000 -nan -nan +m (rm=2) roundss_1XX 8eb94a177836cb9e17ab27f0ffc00000 f877810d6ee9ced21eae5369ffc00000 -nan -nan +r (rm=3) roundss_1XX 1fa2ae18a5896542ea56010dffc00000 60d4e0d5c218aab3e48bd147ffc00000 -nan -nan +m (rm=3) roundss_1XX f505074146f8924c599741e5ffc00000 fa8ff3ba97e9f5907524b316ffc00000 -nan -nan +r (rm=0) roundss_1XX 6a2c52fdf80e8b67423a64667fc00000 21f5b4288ce7ec14ac4475c47fc00000 nan nan +m (rm=0) roundss_1XX db6489b856578f3f7f0be47b7fc00000 3352218b3b9fcbec67b8933b7fc00000 nan nan +r (rm=1) roundss_1XX a4f9aadefd60d881eed53f107fc00000 8bf2354f409ccec4804c89697fc00000 nan nan +m (rm=1) roundss_1XX 2137b0db88b4a3d96966f0127fc00000 8421ece0386a3047d5ccd4397fc00000 nan nan +r (rm=2) roundss_1XX ae6a971b94df2cf3ce88746b7fc00000 7c2b42aabe952f224004ef967fc00000 nan nan +m (rm=2) roundss_1XX a7dd5c0abc6eaf7af70845087fc00000 cd5b33196faa04009fbf566e7fc00000 nan nan +r (rm=3) roundss_1XX 68def9159cec671ac2b2e1d67fc00000 d5febc9ae635ee8ecccb85ac7fc00000 nan nan +m (rm=3) roundss_1XX 4db76ca6d1e591800952c3bf7fc00000 ee61d897c0c02777a4f2f93d7fc00000 nan nan +r (rm=0) roundss_1XX b2b5b02bf6e66958a9b467b1bfa66666 76cd837e98d9ec6804012d0bbf800000 -1.300000 -1.000000 +m (rm=0) roundss_1XX f324c10ea87a2a4e7fa44997bfa66666 c791baba0b0b790dc6c49d03bf800000 -1.300000 -1.000000 +r (rm=1) roundss_1XX 6c509cbd832e110d65ede65dbfa66666 3ef877b6b4e30911c707c511c0000000 -1.300000 -2.000000 +m (rm=1) roundss_1XX 79843ca3228d5a41385cb9efbfa66666 384db8e02fecda21e4962122c0000000 -1.300000 -2.000000 +r (rm=2) roundss_1XX 760e9d2c21234097d4bd3e39bfa66666 0fde78a31ab225e9f73c2e21bf800000 -1.300000 -1.000000 +m (rm=2) roundss_1XX bf38bbc41d7c01bb16dcf127bfa66666 20f5b46b0ec22914ddc767f9bf800000 -1.300000 -1.000000 +r (rm=3) roundss_1XX b04f92d7b125d758d8854ea5bfa66666 c8df66a5a9a7204e72014898bf800000 -1.300000 -1.000000 +m (rm=3) roundss_1XX a49f1fd17aa9fe1bf784d29fbfa66666 61e88cbb86ed474592b74de9bf800000 -1.300000 -1.000000 +r (rm=0) roundss_1XX f9745d1f1395b4b04fa4f802bf8ccccd 485c211a4221daa219b5f3d8bf800000 -1.100000 -1.000000 +m (rm=0) roundss_1XX 0a19482b197433c2bcb23cb8bf8ccccd d986212f79ce1514e3c6b451bf800000 -1.100000 -1.000000 +r (rm=1) roundss_1XX 32dcdc6327d2b8fe1a7a1bafbf8ccccd 70b48864c6803345ccb80e40c0000000 -1.100000 -2.000000 +m (rm=1) roundss_1XX cf071531d93b7e0f45c80fd2bf8ccccd 6a305327c5c471e1b0557c91c0000000 -1.100000 -2.000000 +r (rm=2) roundss_1XX 3ce7f003cc3cc2a21968960dbf8ccccd 21477de313250a966b6b7b31bf800000 -1.100000 -1.000000 +m (rm=2) roundss_1XX d4c868449c61c06272262b4bbf8ccccd f24502044b303c0dd9c4850abf800000 -1.100000 -1.000000 +r (rm=3) roundss_1XX f5f67960e434b4fc2ccd4a7abf8ccccd 3976def50a6f41f5d62d180abf800000 -1.100000 -1.000000 +m (rm=3) roundss_1XX f9bd20c34043d91c232b6f85bf8ccccd 52250d24eb7156f83e71af1bbf800000 -1.100000 -1.000000 +r (rm=0) roundss_1XX 3e6857d94d196d6d330a1759bf666666 99a08cfd8bbfb6c2ed5ec72bbf800000 -0.900000 -1.000000 +m (rm=0) roundss_1XX 1e451c0ea743aa9c3837bde0bf666666 693156ea85e79e01bfbfda25bf800000 -0.900000 -1.000000 +r (rm=1) roundss_1XX f69e6acee84ccc550d7edd07bf666666 2025675875744a5e8f5f66f5bf800000 -0.900000 -1.000000 +m (rm=1) roundss_1XX 23c03d85afc0104390abf3bbbf666666 19c8bcb4f8f2f6883b0be687bf800000 -0.900000 -1.000000 +r (rm=2) roundss_1XX fff792a0962cb2129c897ce6bf666666 b0664f68aaeedd299e8fd6c780000000 -0.900000 -0.000000 +m (rm=2) roundss_1XX e78f6389391bee700ce6f376bf666666 414b1ee226f33ced93b7b2a180000000 -0.900000 -0.000000 +r (rm=3) roundss_1XX 38d3aeae35190007be8cd456bf666666 28c2248c088e4f81f84ff70180000000 -0.900000 -0.000000 +m (rm=3) roundss_1XX 4c116e7a25b323838d489b72bf666666 c0185dd4ed4a5291a82220d480000000 -0.900000 -0.000000 +r (rm=0) roundss_1XX 8093a059a674949154e6c4b5bf333333 679ac62571b380c87efda904bf800000 -0.700000 -1.000000 +m (rm=0) roundss_1XX 30a63eb753e88eddf132cc0dbf333333 789259eb2f5616d358ad0e7fbf800000 -0.700000 -1.000000 +r (rm=1) roundss_1XX b8964600c89c4f123ef72e66bf333333 4e4d1492c3bd505e10fccb2fbf800000 -0.700000 -1.000000 +m (rm=1) roundss_1XX 75afb3a0a21b11dd190366aabf333333 4716f286ca77691484b75d02bf800000 -0.700000 -1.000000 +r (rm=2) roundss_1XX c13d81037df210e95c20f0c6bf333333 bd3bf033df0d9ea28ea93fe380000000 -0.700000 -0.000000 +m (rm=2) roundss_1XX f98bad95f4ab8ae3e51b49a6bf333333 0e0608069f0d2bb30ca0edbe80000000 -0.700000 -0.000000 +r (rm=3) roundss_1XX 79e631c3a4d4b9778ec0eb37bf333333 95c53869a5024cf4d866e37f80000000 -0.700000 -0.000000 +m (rm=3) roundss_1XX 9d9b0bf727f9da5035db5464bf333333 adc27bca8e793c10cfc99e1280000000 -0.700000 -0.000000 +r (rm=0) roundss_1XX c1f4369f1ca5291bb438ff18bf0000a8 b34acd93f5fd38b4ce939863bf800000 -0.500010 -1.000000 +m (rm=0) roundss_1XX 413eaf251d64e183e8a36941bf0000a8 04a92a32771a7c8caf914f5fbf800000 -0.500010 -1.000000 +r (rm=1) roundss_1XX 79c470f7c6c23f35aee70ccabf0000a8 fa2a8f12af5d43434f8f3ff0bf800000 -0.500010 -1.000000 +m (rm=1) roundss_1XX c4d47780b44c7fdde0d1669fbf0000a8 f31bf79f3951ca868b58e204bf800000 -0.500010 -1.000000 +r (rm=2) roundss_1XX 80b8bf2c828ddd265b2df2acbf0000a8 49c65e45b2824d013dbab68580000000 -0.500010 -0.000000 +m (rm=2) roundss_1XX 08be4467cd1294bcfbc72cddbf0000a8 5978c070b67d085f427f366180000000 -0.500010 -0.000000 +r (rm=3) roundss_1XX b830029d3065e14d9c6b911ebf0000a8 7f7d1a8ce0cd364c7674de8380000000 -0.500010 -0.000000 +m (rm=3) roundss_1XX ec5bf63a4815ff831be59c5cbf0000a8 18216605ccfe1476b5652ad780000000 -0.500010 -0.000000 +r (rm=0) roundss_1XX ff8a1babb0ab2c0a5200c881befffeb0 7eb0a248179dde86db1e964880000000 -0.499990 -0.000000 +m (rm=0) roundss_1XX 4f0b6d5a05b5a28f1e89947bbefffeb0 0e75cabf5d35cf2bc46b9fc580000000 -0.499990 -0.000000 +r (rm=1) roundss_1XX 3728e8b4e2be9ebe5b4d7934befffeb0 24bed8d83952250f4c18c037bf800000 -0.499990 -1.000000 +m (rm=1) roundss_1XX 122f8926e4535b42e515f49abefffeb0 1cd5cafd47811ade4ff0758bbf800000 -0.499990 -1.000000 +r (rm=2) roundss_1XX 3e6a4a1ba6ff17c898b08298befffeb0 52079a9c244dea46a9c03bad80000000 -0.499990 -0.000000 +m (rm=2) roundss_1XX 152629ffc44e0cfc50e99e1abefffeb0 22a046206b43d2f036548c8a80000000 -0.499990 -0.000000 +r (rm=3) roundss_1XX f5af213ddbcd7689e98cc40cbefffeb0 e8eccaf5b9ed0f8bd278e60c80000000 -0.499990 -0.000000 +m (rm=3) roundss_1XX 38512f438707931c3e64715abefffeb0 00362087a9d9dac159f8c42180000000 -0.499990 -0.000000 +r (rm=0) roundss_1XX 3c574d7c63889d602d3e20f0be99999a c6cc4642d893723ea7a0a2b480000000 -0.300000 -0.000000 +m (rm=0) roundss_1XX 5b0e79550bdcd10291e64cbabe99999a 96f83792e1a611b0983bfdb080000000 -0.300000 -0.000000 +r (rm=1) roundss_1XX f3c3ae381c906aad462873a4be99999a cc07efe3609ef4c007965003bf800000 -0.300000 -1.000000 +m (rm=1) roundss_1XX 5ec0e8923130a60e28d0119bbe99999a c4456aa2f207571dd27e1798bf800000 -0.300000 -1.000000 +r (rm=2) roundss_1XX f95224d0e746bfd112a9a089be99999a dafea539336e7571d4bdce5b80000000 -0.300000 -0.000000 +m (rm=2) roundss_1XX 21c45c5cd960f1a1e2819e5cbe99999a 6a7e9b16be5e8b68e81ff13980000000 -0.300000 -0.000000 +r (rm=3) roundss_1XX 30648ea4a40a7a2b732286ffbe99999a cf1048a42f64d5afec72fd1c80000000 -0.300000 -0.000000 +m (rm=3) roundss_1XX 837cb613e3ce941aa059d45ebe99999a 6702a84e230b8ff2bb816cf180000000 -0.300000 -0.000000 +r (rm=0) roundss_1XX 765ace14333a7c1b47f20565bdcccccd 8d9eb78236dff4dc3017bca580000000 -0.100000 -0.000000 +m (rm=0) roundss_1XX 6648d3152fda6eda42b99300bdcccccd 9c3172ab036c411a2901692280000000 -0.100000 -0.000000 +r (rm=1) roundss_1XX ad93c2817438a5026f7afc1bbdcccccd f207d435263fb158800bed56bf800000 -0.100000 -1.000000 +m (rm=1) roundss_1XX a88796c49de35e40a800bba2bdcccccd ea6cd98c3ce482411301c62cbf800000 -0.100000 -1.000000 +r (rm=2) roundss_1XX b36f4b4b4664d540cb184c81bdcccccd dfab7d1de0e5ee82bcaf6f9080000000 -0.100000 -0.000000 +m (rm=2) roundss_1XX 2a99de800c4945adb28f2ca5bdcccccd 2f12bd52afd032c659e1646e80000000 -0.100000 -0.000000 +r (rm=3) roundss_1XX 694f49d08b1deb333b2fd6f8bdcccccd 34eb9398443089bac46221b280000000 -0.100000 -0.000000 +m (rm=3) roundss_1XX ccde8aa85e6c037f40c4c668bdcccccd 4c83fd5c3c923109daff234880000000 -0.100000 -0.000000 +r (rm=0) roundss_1XX af929c7221c3c93d9f1c78df3dcccccd d126f709328164607884e41c00000000 0.100000 0.000000 +m (rm=0) roundss_1XX 6eb77c9c71ad78183202684b3dcccccd 21207b0ac3895e6b78bde21a00000000 0.100000 0.000000 +r (rm=1) roundss_1XX 65992491eab74dbdd64113973dcccccd 96bc87cd8a375dd5b776992f00000000 0.100000 0.000000 +m (rm=1) roundss_1XX f08492bd266b84d867a6f3af3dcccccd 8d4815bd23169b4b127b834500000000 0.100000 0.000000 +r (rm=2) roundss_1XX 6bc3c18cc4585914c2fd867f3dcccccd 630e24462bb2557963971e4a3f800000 0.100000 1.000000 +m (rm=2) roundss_1XX 31a3ad6a5e07071ec11248f33dcccccd 725cadd43e98c70a8798e4283f800000 0.100000 1.000000 +r (rm=3) roundss_1XX a07052c39006cba141b1b3f73dcccccd 177cadd3f7532caa5a4854cd00000000 0.100000 0.000000 +m (rm=3) roundss_1XX 1376ad03f7e0e14a1ea645783dcccccd afba21b0f26fc107b874e72400000000 0.100000 0.000000 +r (rm=0) roundss_1XX e601b9962e2284c534bc79603e99999a 946404d5cc79c2ca7de81a1900000000 0.300000 0.000000 +m (rm=0) roundss_1XX 745d72e9d156f1bd5fc0cb9d3e99999a 23c552af21fc6aa2856f6a9800000000 0.300000 0.000000 +r (rm=1) roundss_1XX 1bd5d4667d0b64df7b7fb7193e99999a b82808ab8b84f639acd7528d00000000 0.300000 0.000000 +m (rm=1) roundss_1XX 36b7dc7bceca19d664c3bac23e99999a afda2034a99ea23bceea4ee500000000 0.300000 0.000000 +r (rm=2) roundss_1XX 204d84935f214b4ff6584f833e99999a 642798b515d5aa56c776db8a3f800000 0.300000 1.000000 +m (rm=2) roundss_1XX 37e4ca19cd9b37f50d0cf2483e99999a 335b6b9c6bb64933734573693f800000 0.300000 1.000000 +r (rm=3) roundss_1XX d5c8a97bb3c5197585aa1ffd3e99999a 78c2955448cbbc81ae24946f00000000 0.300000 0.000000 +m (rm=3) roundss_1XX 58441e24ad2a2c7b3afd528e3e99999a 8fa8134947a23fea54dfb98600000000 0.300000 0.000000 +r (rm=0) roundss_1XX 1aa623805856adb208d208e73efffeb0 d458dfe704c70e1a41415e9c00000000 0.499990 0.000000 +m (rm=0) roundss_1XX 7938b6fb4fd6d8c7cbf5bcf43efffeb0 a31ff79a1dc564be5118009c00000000 0.499990 0.000000 +r (rm=1) roundss_1XX cf47d2022f35e9665e32eaa13efffeb0 584a56cf2b287e825f2e197200000000 0.499990 0.000000 +m (rm=1) roundss_1XX 792073ff94ff1b3a9f550edb3efffeb0 4f23f9f0cc7c97124950270a00000000 0.499990 0.000000 +r (rm=2) roundss_1XX d40c966019c1abef6929a58c3efffeb0 e4f6da6b9c4eed19ea4aa6503f800000 0.499990 1.000000 +m (rm=2) roundss_1XX 3a5a368f5a06d533987c29a23efffeb0 7211f7aa3629ba431ee810303f800000 0.499990 1.000000 +r (rm=3) roundss_1XX 08554ffaf45ad4af071818083efffeb0 57bf4b1b369a3b3dc0f6e29700000000 0.499990 0.000000 +m (rm=3) roundss_1XX 9b48dd0b824ae51294caeeaa3efffeb0 ee4bd229392cabb3ae3f996f00000000 0.499990 0.000000 +r (rm=0) roundss_1XX 4d81dc30a0614406195e25743f0000a8 93028940db6b4850c291b0a53f800000 0.500010 1.000000 +m (rm=0) roundss_1XX 7b4a49d4ec2b2d3874a03b523f0000a8 a1306accb7e34cc1dab6a3263f800000 0.500010 1.000000 +r (rm=1) roundss_1XX 81f01e63ff35db53805caa303f0000a8 762173396921f3b2d07befdd00000000 0.500010 0.000000 +m (rm=1) roundss_1XX bbbe5949770a8b04185df0fa3f0000a8 6d219ff38eb07bce82ac0fb500000000 0.500010 0.000000 +r (rm=2) roundss_1XX 8502f5f2f03679f61a70899c3f0000a8 e17ceb66c11d1ec2ca147e9c3f800000 0.500010 1.000000 +m (rm=2) roundss_1XX 3b07efcb0546e0d66062ef033f0000a8 307d51fe9ff319398681bb7d3f800000 0.500010 1.000000 +r (rm=3) roundss_1XX 3918423e52c5fe50c7fda0193f0000a8 b471cf28c3bea7e090bd3f4400000000 0.500010 0.000000 +m (rm=3) roundss_1XX db82e9b974400d0f2c0d17cc3f0000a8 cba4604eca0b0562c69687dd00000000 0.500010 0.000000 +r (rm=0) roundss_1XX 7d91e2a6074149c06960d0063f333333 cf6200de4f656f6c02d610353f800000 0.700000 1.000000 +m (rm=0) roundss_1XX 7b912973a656f00e5bc147b53f333333 1df7ac43ef5821aa214a55363f800000 0.700000 1.000000 +r (rm=1) roundss_1XX 31ceb88bed0b3ca6dffbf9c43f333333 12af5ee8457157c7ffbed2cd00000000 0.700000 0.000000 +m (rm=1) roundss_1XX fb938d5a79eb6a33cfdb611f3f333333 08d5143bed3b4c7079fd04e700000000 0.700000 0.000000 +r (rm=2) roundss_1XX 352ea34be582b563082dfbb23f333333 5db7c9a784423d5169d5656e3f800000 0.700000 1.000000 +m (rm=2) roundss_1XX 3be9f6ccce5c5adf66bd43693f333333 6b9f7998a6136515ac1073503f800000 0.700000 1.000000 +r (rm=3) roundss_1XX 68118349cf069556c557b6303f333333 8fda217bee3902681e7ba97800000000 0.700000 0.000000 +m (rm=3) roundss_1XX 1af2442c850ba27202c7cef43f333333 25b4bcbaf8404ef79be284d200000000 0.700000 0.000000 +r (rm=0) roundss_1XX acd837e28bf8bcdff7d8099f3f666666 8a7846c261b5856eff117e4a3f800000 0.900000 1.000000 +m (rm=0) roundss_1XX 7a0f57d87e58204a8157e21f3f666666 1874bb00c523e57926d415cc3f800000 0.900000 1.000000 +r (rm=1) roundss_1XX dfe2a078f9b70a5f7c11d65e3f666666 2cf217debe16a8c3ecf7c44400000000 0.900000 0.000000 +m (rm=1) roundss_1XX 399e0f3099a2b6c9c4d05f4a3f666666 224057caeb1b0bf82d45079e00000000 0.900000 0.000000 +r (rm=2) roundss_1XX e2909f6af9a45f353560fbce3f666666 56a8762fe6bd4ac6c58b5ac63f800000 0.900000 1.000000 +m (rm=2) roundss_1XX 38024b94b549424fab8f25d63f666666 247770794b88a0d690953aa93f800000 0.900000 1.000000 +r (rm=3) roundss_1XX 964012196a1d9bc20228594e3f666666 e8f84113b7094ad76a2f223100000000 0.900000 0.000000 +m (rm=3) roundss_1XX 5798ed65b4ada53b16f614223f666666 fe79e56bc5cb84732f258e4c00000000 0.900000 0.000000 +r (rm=0) roundss_1XX d955dae42e859d65c2c6d03e3f8ccccd c24459ed115b8956bb43fae53f800000 1.100000 1.000000 +m (rm=0) roundss_1XX 76c2d302742fbfede4640b8e3f8ccccd 90a798033944972dea54e3e83f800000 1.100000 1.000000 +r (rm=1) roundss_1XX 8b2cd62c2339477e579c40ff3f8ccccd c4ec9e1ad612e8a49725c3413f800000 1.100000 1.000000 +m (rm=1) roundss_1XX 75dfdfccd62e70c5f73aec7b3f8ccccd ba60679f8651b867a08318dc3f800000 1.100000 1.000000 +r (rm=2) roundss_1XX 8e27e84f2a9b776e9f0989f03f8ccccd cd4ff0fce58e4521e0385da540000000 1.100000 2.000000 +m (rm=2) roundss_1XX 3350ef22ba0b98242dd795483f8ccccd 5b04349f8e54c97e33100f8840000000 1.100000 2.000000 +r (rm=3) roundss_1XX c1a6efb0230a0e947c6e8b713f8ccccd bfcd2ff21d30802b74d9a8713f800000 1.100000 1.000000 +m (rm=3) roundss_1XX 9274e46400251769679be7563f8ccccd 55f4dd632faca8d4815ea64c3f800000 1.100000 1.000000 +r (rm=0) roundss_1XX 0307caaceee7ec50cc2a25e33fa66666 78c73a5d60577b24346a84063f800000 1.300000 1.000000 +m (rm=0) roundss_1XX 70ab9ef388ddccf586e7c2043fa66666 8690434c4bba36c86bcabe8a3f800000 1.300000 1.000000 +r (rm=1) roundss_1XX 35ac5aa56b91f103709e39a53fa66666 da9bf39c8c63156c004ad1c33f800000 1.300000 1.000000 +m (rm=1) roundss_1XX af56fc2e32919827681a06b23fa66666 cf3646b9c0dd53bbd1b6379f3f800000 1.300000 1.000000 +r (rm=2) roundss_1XX 38f580fa7969fd0c4828a5173fa66666 c3ac380f82b52d62b8da6e0940000000 1.300000 2.000000 +m (rm=2) roundss_1XX 2dd4e076dda35c5fee9593c13fa66666 1048c60b6f76df0c9382f1ed40000000 1.300000 2.000000 +r (rm=3) roundss_1XX ea411a0cfacef0cc342b4a9a3fa66666 1458eb1722aca5663c793d373f800000 1.300000 1.000000 +m (rm=3) roundss_1XX cb8629296b73f6fef7b648903fa66666 2926a3a138e4ba1b918cccd33f800000 1.300000 1.000000 +r (rm=0) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m (rm=0) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r (rm=1) roundpd_1XX bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -1.000000 +m (rm=1) roundpd_1XX bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -1.000000 +r (rm=2) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m (rm=2) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r (rm=3) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +m (rm=3) roundpd_1XX bfdfffd60e94ee390000000000000000 80000000000000000000000000000000 0.000000 -> 0.000000 -0.499990 -> -0.000000 +r (rm=0) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m (rm=0) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r (rm=1) roundpd_1XX bfd33333333333338000000000000000 bff00000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -1.000000 +m (rm=1) roundpd_1XX bfd33333333333338000000000000000 bff00000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -1.000000 +r (rm=2) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m (rm=2) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r (rm=3) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +m (rm=3) roundpd_1XX bfd33333333333338000000000000000 80000000000000008000000000000000 -0.000000 -> -0.000000 -0.300000 -> -0.000000 +r (rm=0) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m (rm=0) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r (rm=1) roundpd_1XX bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000 inf -> inf -0.100000 -> -1.000000 +m (rm=1) roundpd_1XX bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000 inf -> inf -0.100000 -> -1.000000 +r (rm=2) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m (rm=2) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r (rm=3) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +m (rm=3) roundpd_1XX bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000 inf -> inf -0.100000 -> -0.000000 +r (rm=0) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m (rm=0) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r (rm=1) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m (rm=1) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r (rm=2) roundpd_1XX 3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000 -inf -> -inf 0.100000 -> 1.000000 +m (rm=2) roundpd_1XX 3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000 -inf -> -inf 0.100000 -> 1.000000 +r (rm=3) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +m (rm=3) roundpd_1XX 3fb999999999999afff0000000000000 0000000000000000fff0000000000000 -inf -> -inf 0.100000 -> 0.000000 +r (rm=0) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m (rm=0) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r (rm=1) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m (rm=1) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r (rm=2) roundpd_1XX 3fd3333333333333fff8000000000000 3ff0000000000000fff8000000000000 -nan -> -nan 0.300000 -> 1.000000 +m (rm=2) roundpd_1XX 3fd3333333333333fff8000000000000 3ff0000000000000fff8000000000000 -nan -> -nan 0.300000 -> 1.000000 +r (rm=3) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +m (rm=3) roundpd_1XX 3fd3333333333333fff8000000000000 0000000000000000fff8000000000000 -nan -> -nan 0.300000 -> 0.000000 +r (rm=0) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m (rm=0) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r (rm=1) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m (rm=1) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r (rm=2) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 3ff00000000000007ff8000000000000 nan -> nan 0.499990 -> 1.000000 +m (rm=2) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 3ff00000000000007ff8000000000000 nan -> nan 0.499990 -> 1.000000 +r (rm=3) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +m (rm=3) roundpd_1XX 3fdfffd60e94ee397ff8000000000000 00000000000000007ff8000000000000 nan -> nan 0.499990 -> 0.000000 +r (rm=0) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +m (rm=0) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +r (rm=1) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000 -1.300000 -> -2.000000 0.500010 -> 0.000000 +m (rm=1) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000 -1.300000 -> -2.000000 0.500010 -> 0.000000 +r (rm=2) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +m (rm=2) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 1.000000 +r (rm=3) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 0.000000 +m (rm=3) roundpd_1XX 3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000 -1.300000 -> -1.000000 0.500010 -> 0.000000 +r (rm=0) roundpd_1XX 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +m (rm=0) roundpd_1XX 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +r (rm=1) roundpd_1XX 3fe6666666666666bff199999999999a 0000000000000000c000000000000000 -1.100000 -> -2.000000 0.700000 -> 0.000000 +m (rm=1) roundpd_1XX 3fe6666666666666bff199999999999a 0000000000000000c000000000000000 -1.100000 -> -2.000000 0.700000 -> 0.000000 +r (rm=2) roundpd_1XX 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +m (rm=2) roundpd_1XX 3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 1.000000 +r (rm=3) roundpd_1XX 3fe6666666666666bff199999999999a 0000000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 0.000000 +m (rm=3) roundpd_1XX 3fe6666666666666bff199999999999a 0000000000000000bff0000000000000 -1.100000 -> -1.000000 0.700000 -> 0.000000 +r (rm=0) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 1.000000 +m (rm=0) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 1.000000 +r (rm=1) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 0.000000 +m (rm=1) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000 -0.900000 -> -1.000000 0.900000 -> 0.000000 +r (rm=2) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 1.000000 +m (rm=2) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 1.000000 +r (rm=3) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 0.000000 +m (rm=3) roundpd_1XX 3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000 -0.900000 -> -0.000000 0.900000 -> 0.000000 +r (rm=0) roundpd_1XX 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +m (rm=0) roundpd_1XX 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +r (rm=1) roundpd_1XX 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +m (rm=1) roundpd_1XX 3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000 -0.700000 -> -1.000000 1.100000 -> 1.000000 +r (rm=2) roundpd_1XX 3ff199999999999abfe6666666666666 40000000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 2.000000 +m (rm=2) roundpd_1XX 3ff199999999999abfe6666666666666 40000000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 2.000000 +r (rm=3) roundpd_1XX 3ff199999999999abfe6666666666666 3ff00000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 1.000000 +m (rm=3) roundpd_1XX 3ff199999999999abfe6666666666666 3ff00000000000008000000000000000 -0.700000 -> -0.000000 1.100000 -> 1.000000 +r (rm=0) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +m (rm=0) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +r (rm=1) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +m (rm=1) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000 -0.500010 -> -1.000000 1.300000 -> 1.000000 +r (rm=2) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 2.000000 +m (rm=2) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 2.000000 +r (rm=3) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 1.000000 +m (rm=3) roundpd_1XX 3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000 -0.500010 -> -0.000000 1.300000 -> 1.000000 +r (rm=0) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m (rm=0) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r (rm=1) roundpd_1XX 0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000 -0.499990 -> -1.000000 0.000000 -> 0.000000 +m (rm=1) roundpd_1XX 0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000 -0.499990 -> -1.000000 0.000000 -> 0.000000 +r (rm=2) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m (rm=2) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r (rm=3) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +m (rm=3) roundpd_1XX 0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000 -0.499990 -> -0.000000 0.000000 -> 0.000000 +r (rm=0) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m (rm=0) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r (rm=1) roundpd_1XX 8000000000000000bfd3333333333333 8000000000000000bff0000000000000 -0.300000 -> -1.000000 -0.000000 -> -0.000000 +m (rm=1) roundpd_1XX 8000000000000000bfd3333333333333 8000000000000000bff0000000000000 -0.300000 -> -1.000000 -0.000000 -> -0.000000 +r (rm=2) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m (rm=2) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r (rm=3) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +m (rm=3) roundpd_1XX 8000000000000000bfd3333333333333 80000000000000008000000000000000 -0.300000 -> -0.000000 -0.000000 -> -0.000000 +r (rm=0) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m (rm=0) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r (rm=1) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000 -0.100000 -> -1.000000 inf -> inf +m (rm=1) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000 -0.100000 -> -1.000000 inf -> inf +r (rm=2) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m (rm=2) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r (rm=3) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +m (rm=3) roundpd_1XX 7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000 -0.100000 -> -0.000000 inf -> inf +r (rm=0) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m (rm=0) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r (rm=1) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m (rm=1) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r (rm=2) roundpd_1XX fff00000000000003fb999999999999a fff00000000000003ff0000000000000 0.100000 -> 1.000000 -inf -> -inf +m (rm=2) roundpd_1XX fff00000000000003fb999999999999a fff00000000000003ff0000000000000 0.100000 -> 1.000000 -inf -> -inf +r (rm=3) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +m (rm=3) roundpd_1XX fff00000000000003fb999999999999a fff00000000000000000000000000000 0.100000 -> 0.000000 -inf -> -inf +r (rm=0) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m (rm=0) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r (rm=1) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m (rm=1) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r (rm=2) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000003ff0000000000000 0.300000 -> 1.000000 -nan -> -nan +m (rm=2) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000003ff0000000000000 0.300000 -> 1.000000 -nan -> -nan +r (rm=3) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +m (rm=3) roundpd_1XX fff80000000000003fd3333333333333 fff80000000000000000000000000000 0.300000 -> 0.000000 -nan -> -nan +r (rm=0) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m (rm=0) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r (rm=1) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m (rm=1) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r (rm=2) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000003ff0000000000000 0.499990 -> 1.000000 nan -> nan +m (rm=2) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000003ff0000000000000 0.499990 -> 1.000000 nan -> nan +r (rm=3) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +m (rm=3) roundpd_1XX 7ff80000000000003fdfffd60e94ee39 7ff80000000000000000000000000000 0.499990 -> 0.000000 nan -> nan +r (rm=0) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +m (rm=0) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +r (rm=1) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -2.000000 +m (rm=1) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -2.000000 +r (rm=2) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +m (rm=2) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000 0.500010 -> 1.000000 -1.300000 -> -1.000000 +r (rm=3) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -1.000000 +m (rm=3) roundpd_1XX bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000 0.500010 -> 0.000000 -1.300000 -> -1.000000 +r (rm=0) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +m (rm=0) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +r (rm=1) roundpd_1XX bff199999999999a3fe6666666666666 c0000000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -2.000000 +m (rm=1) roundpd_1XX bff199999999999a3fe6666666666666 c0000000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -2.000000 +r (rm=2) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +m (rm=2) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000 0.700000 -> 1.000000 -1.100000 -> -1.000000 +r (rm=3) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -1.000000 +m (rm=3) roundpd_1XX bff199999999999a3fe6666666666666 bff00000000000000000000000000000 0.700000 -> 0.000000 -1.100000 -> -1.000000 +r (rm=0) roundpd_1XX bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -1.000000 +m (rm=0) roundpd_1XX bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -1.000000 +r (rm=1) roundpd_1XX bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -1.000000 +m (rm=1) roundpd_1XX bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -1.000000 +r (rm=2) roundpd_1XX bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -0.000000 +m (rm=2) roundpd_1XX bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000 0.900000 -> 1.000000 -0.900000 -> -0.000000 +r (rm=3) roundpd_1XX bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -0.000000 +m (rm=3) roundpd_1XX bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000 0.900000 -> 0.000000 -0.900000 -> -0.000000 +r (rm=0) roundpd_1XX bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +m (rm=0) roundpd_1XX bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +r (rm=1) roundpd_1XX bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +m (rm=1) roundpd_1XX bfe66666666666663ff199999999999a bff00000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -1.000000 +r (rm=2) roundpd_1XX bfe66666666666663ff199999999999a 80000000000000004000000000000000 1.100000 -> 2.000000 -0.700000 -> -0.000000 +m (rm=2) roundpd_1XX bfe66666666666663ff199999999999a 80000000000000004000000000000000 1.100000 -> 2.000000 -0.700000 -> -0.000000 +r (rm=3) roundpd_1XX bfe66666666666663ff199999999999a 80000000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -0.000000 +m (rm=3) roundpd_1XX bfe66666666666663ff199999999999a 80000000000000003ff0000000000000 1.100000 -> 1.000000 -0.700000 -> -0.000000 +r (rm=0) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +m (rm=0) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +r (rm=1) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +m (rm=1) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -1.000000 +r (rm=2) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000 1.300000 -> 2.000000 -0.500010 -> -0.000000 +m (rm=2) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000 1.300000 -> 2.000000 -0.500010 -> -0.000000 +r (rm=3) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -0.000000 +m (rm=3) roundpd_1XX bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000 1.300000 -> 1.000000 -0.500010 -> -0.000000 +r (rm=0) roundps_1XX 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +m (rm=0) roundps_1XX 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +r (rm=1) roundps_1XX 3f0000a8befffeb07fc0000000000000 00000000bf8000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-1.000000 0.500010: 0.000000 +m (rm=1) roundps_1XX 3f0000a8befffeb07fc0000000000000 00000000bf8000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-1.000000 0.500010: 0.000000 +r (rm=2) roundps_1XX 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +m (rm=2) roundps_1XX 3f0000a8befffeb07fc0000000000000 3f800000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 1.000000 +r (rm=3) roundps_1XX 3f0000a8befffeb07fc0000000000000 00000000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 0.000000 +m (rm=3) roundps_1XX 3f0000a8befffeb07fc0000000000000 00000000800000007fc0000000000000 0.000000: 0.000000 nan: nan -0.499990:-0.000000 0.500010: 0.000000 +r (rm=0) roundps_1XX 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +m (rm=0) roundps_1XX 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +r (rm=1) roundps_1XX 3f333333be99999abfa6666680000000 00000000bf800000c000000080000000 -0.000000:-0.000000 -1.300000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 +m (rm=1) roundps_1XX 3f333333be99999abfa6666680000000 00000000bf800000c000000080000000 -0.000000:-0.000000 -1.300000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 +r (rm=2) roundps_1XX 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +m (rm=2) roundps_1XX 3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 +r (rm=3) roundps_1XX 3f333333be99999abfa6666680000000 0000000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 +m (rm=3) roundps_1XX 3f333333be99999abfa6666680000000 0000000080000000bf80000080000000 -0.000000:-0.000000 -1.300000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 +r (rm=0) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +m (rm=0) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +r (rm=1) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000 inf: inf -1.100000:-2.000000 -0.100000:-1.000000 0.900000: 0.000000 +m (rm=1) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000 inf: inf -1.100000:-2.000000 -0.100000:-1.000000 0.900000: 0.000000 +r (rm=2) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +m (rm=2) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 +r (rm=3) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 0.000000 +m (rm=3) roundps_1XX 3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000 inf: inf -1.100000:-1.000000 -0.100000:-0.000000 0.900000: 0.000000 +r (rm=0) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +m (rm=0) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +r (rm=1) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +m (rm=1) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000 -inf: -inf -0.900000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 +r (rm=2) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 +m (rm=2) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 +r (rm=3) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 +m (rm=3) roundps_1XX 3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000 -inf: -inf -0.900000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 +r (rm=0) roundps_1XX 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +m (rm=0) roundps_1XX 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +r (rm=1) roundps_1XX 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +m (rm=1) roundps_1XX 3fa666663e99999abf333333ffc00000 3f80000000000000bf800000ffc00000 -nan: -nan -0.700000:-1.000000 0.300000: 0.000000 1.300000: 1.000000 +r (rm=2) roundps_1XX 3fa666663e99999abf333333ffc00000 400000003f80000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 1.000000 1.300000: 2.000000 +m (rm=2) roundps_1XX 3fa666663e99999abf333333ffc00000 400000003f80000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 1.000000 1.300000: 2.000000 +r (rm=3) roundps_1XX 3fa666663e99999abf333333ffc00000 3f8000000000000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 0.000000 1.300000: 1.000000 +m (rm=3) roundps_1XX 3fa666663e99999abf333333ffc00000 3f8000000000000080000000ffc00000 -nan: -nan -0.700000:-0.000000 0.300000: 0.000000 1.300000: 1.000000 +r (rm=0) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +m (rm=0) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +r (rm=1) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +m (rm=1) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000bf8000007fc00000 nan: nan -0.500010:-1.000000 0.499990: 0.000000 0.000000: 0.000000 +r (rm=2) roundps_1XX 000000003efffeb0bf0000a87fc00000 000000003f800000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 1.000000 0.000000: 0.000000 +m (rm=2) roundps_1XX 000000003efffeb0bf0000a87fc00000 000000003f800000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 1.000000 0.000000: 0.000000 +r (rm=3) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 0.000000 0.000000: 0.000000 +m (rm=3) roundps_1XX 000000003efffeb0bf0000a87fc00000 0000000000000000800000007fc00000 nan: nan -0.500010:-0.000000 0.499990: 0.000000 0.000000: 0.000000 +r (rm=0) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +m (rm=0) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +r (rm=1) roundps_1XX 800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000 -1.300000:-2.000000 -0.499990:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 +m (rm=1) roundps_1XX 800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000 -1.300000:-2.000000 -0.499990:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 +r (rm=2) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +m (rm=2) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 +r (rm=3) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 +m (rm=3) roundps_1XX 800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000 -1.300000:-1.000000 -0.499990:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 +r (rm=0) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +m (rm=0) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +r (rm=1) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000 -1.100000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 inf: inf +m (rm=1) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000 -1.100000:-2.000000 -0.300000:-1.000000 0.700000: 0.000000 inf: inf +r (rm=2) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +m (rm=2) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 1.000000 inf: inf +r (rm=3) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 inf: inf +m (rm=3) roundps_1XX 7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000 -1.100000:-1.000000 -0.300000:-0.000000 0.700000: 0.000000 inf: inf +r (rm=0) roundps_1XX ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000 -0.900000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +m (rm=0) roundps_1XX ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000 -0.900000:-1.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +r (rm=1) roundps_1XX ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000 -0.900000:-1.000000 -0.100000:-1.000000 0.900000: 0.000000 -inf: -inf +m (rm=1) roundps_1XX ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000 -0.900000:-1.000000 -0.100000:-1.000000 0.900000: 0.000000 -inf: -inf +r (rm=2) roundps_1XX ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +m (rm=2) roundps_1XX ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 1.000000 -inf: -inf +r (rm=3) roundps_1XX ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 0.000000 -inf: -inf +m (rm=3) roundps_1XX ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000 -0.900000:-0.000000 -0.100000:-0.000000 0.900000: 0.000000 -inf: -inf +r (rm=0) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m (rm=0) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r (rm=1) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m (rm=1) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f80000000000000bf800000 -0.700000:-1.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r (rm=2) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc00000400000003f80000080000000 -0.700000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 -nan: -nan +m (rm=2) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc00000400000003f80000080000000 -0.700000:-0.000000 0.100000: 1.000000 1.100000: 2.000000 -nan: -nan +r (rm=3) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f8000000000000080000000 -0.700000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +m (rm=3) roundps_1XX ffc000003f8ccccd3dcccccdbf333333 ffc000003f8000000000000080000000 -0.700000:-0.000000 0.100000: 0.000000 1.100000: 1.000000 -nan: -nan +r (rm=0) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m (rm=0) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r (rm=1) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m (rm=1) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f80000000000000bf800000 -0.500010:-1.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r (rm=2) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc00000400000003f80000080000000 -0.500010:-0.000000 0.300000: 1.000000 1.300000: 2.000000 nan: nan +m (rm=2) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc00000400000003f80000080000000 -0.500010:-0.000000 0.300000: 1.000000 1.300000: 2.000000 nan: nan +r (rm=3) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f8000000000000080000000 -0.500010:-0.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +m (rm=3) roundps_1XX 7fc000003fa666663e99999abf0000a8 7fc000003f8000000000000080000000 -0.500010:-0.000000 0.300000: 0.000000 1.300000: 1.000000 nan: nan +r (rm=0) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +m (rm=0) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +r (rm=1) roundps_1XX bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000 -0.499990:-1.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 +m (rm=1) roundps_1XX bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000 -0.499990:-1.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 +r (rm=2) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000 -0.499990:-0.000000 0.499990: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 +m (rm=2) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000 -0.499990:-0.000000 0.499990: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 +r (rm=3) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +m (rm=3) roundps_1XX bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000 -0.499990:-0.000000 0.499990: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 +r (rm=0) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m (rm=0) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r (rm=1) roundps_1XX bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000 -0.300000:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 +m (rm=1) roundps_1XX bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000 -0.300000:-1.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 +r (rm=2) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m (rm=2) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000 -0.300000:-0.000000 0.500010: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r (rm=3) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000 -0.300000:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 +m (rm=3) roundps_1XX bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000 -0.300000:-0.000000 0.500010: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 +r (rm=0) roundps_1XX bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-1.000000 +m (rm=0) roundps_1XX bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-1.000000 +r (rm=1) roundps_1XX bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000 -0.100000:-1.000000 0.700000: 0.000000 inf: inf -0.900000:-1.000000 +m (rm=1) roundps_1XX bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000 -0.100000:-1.000000 0.700000: 0.000000 inf: inf -0.900000:-1.000000 +r (rm=2) roundps_1XX bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-0.000000 +m (rm=2) roundps_1XX bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000 -0.100000:-0.000000 0.700000: 1.000000 inf: inf -0.900000:-0.000000 +r (rm=3) roundps_1XX bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000 -0.100000:-0.000000 0.700000: 0.000000 inf: inf -0.900000:-0.000000 +m (rm=3) roundps_1XX bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000 -0.100000:-0.000000 0.700000: 0.000000 inf: inf -0.900000:-0.000000 +r (rm=0) roundps_1XX bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000 0.100000: 0.000000 0.900000: 1.000000 -inf: -inf -0.700000:-1.000000 +m (rm=0) roundps_1XX bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000 0.100000: 0.000000 0.900000: 1.000000 -inf: -inf -0.700000:-1.000000 +r (rm=1) roundps_1XX bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-1.000000 +m (rm=1) roundps_1XX bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-1.000000 +r (rm=2) roundps_1XX bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000 0.100000: 1.000000 0.900000: 1.000000 -inf: -inf -0.700000:-0.000000 +m (rm=2) roundps_1XX bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000 0.100000: 1.000000 0.900000: 1.000000 -inf: -inf -0.700000:-0.000000 +r (rm=3) roundps_1XX bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-0.000000 +m (rm=3) roundps_1XX bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000 0.100000: 0.000000 0.900000: 0.000000 -inf: -inf -0.700000:-0.000000 +r (rm=0) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +m (rm=0) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +r (rm=1) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +m (rm=1) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a bf800000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-1.000000 +r (rm=2) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a 80000000ffc00000400000003f800000 0.300000: 1.000000 1.100000: 2.000000 -nan: -nan -0.500010:-0.000000 +m (rm=2) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a 80000000ffc00000400000003f800000 0.300000: 1.000000 1.100000: 2.000000 -nan: -nan -0.500010:-0.000000 +r (rm=3) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a 80000000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-0.000000 +m (rm=3) roundps_1XX bf0000a8ffc000003f8ccccd3e99999a 80000000ffc000003f80000000000000 0.300000: 0.000000 1.100000: 1.000000 -nan: -nan -0.500010:-0.000000 +r (rm=0) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +m (rm=0) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +r (rm=1) roundps_1XX befffeb07fc000003fa666663efffeb0 bf8000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-1.000000 +m (rm=1) roundps_1XX befffeb07fc000003fa666663efffeb0 bf8000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-1.000000 +r (rm=2) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc00000400000003f800000 0.499990: 1.000000 1.300000: 2.000000 nan: nan -0.499990:-0.000000 +m (rm=2) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc00000400000003f800000 0.499990: 1.000000 1.300000: 2.000000 nan: nan -0.499990:-0.000000 +r (rm=3) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +m (rm=3) roundps_1XX befffeb07fc000003fa666663efffeb0 800000007fc000003f80000000000000 0.499990: 0.000000 1.300000: 1.000000 nan: nan -0.499990:-0.000000 +r (rm=0) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m (rm=0) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r (rm=1) roundps_1XX be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 -0.300000:-1.000000 +m (rm=1) roundps_1XX be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-2.000000 -0.300000:-1.000000 +r (rm=2) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m (rm=2) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000 0.500010: 1.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r (rm=3) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +m (rm=3) roundps_1XX be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000 0.500010: 0.000000 0.000000: 0.000000 -1.300000:-1.000000 -0.300000:-0.000000 +r (rm=0) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m (rm=0) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r (rm=1) roundps_1XX bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 -0.100000:-1.000000 +m (rm=1) roundps_1XX bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-2.000000 -0.100000:-1.000000 +r (rm=2) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m (rm=2) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000 0.700000: 1.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r (rm=3) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +m (rm=3) roundps_1XX bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000 0.700000: 0.000000 -0.000000:-0.000000 -1.100000:-1.000000 -0.100000:-0.000000 +r (rm=0) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +m (rm=0) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +r (rm=1) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +m (rm=1) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-1.000000 0.100000: 0.000000 +r (rm=2) roundps_1XX 3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-0.000000 0.100000: 1.000000 +m (rm=2) roundps_1XX 3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000 0.900000: 1.000000 inf: inf -0.900000:-0.000000 0.100000: 1.000000 +r (rm=3) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-0.000000 0.100000: 0.000000 +m (rm=3) roundps_1XX 3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000 0.900000: 0.000000 inf: inf -0.900000:-0.000000 0.100000: 0.000000 +r (rm=0) roundps_1XX 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +m (rm=0) roundps_1XX 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +r (rm=1) roundps_1XX 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +m (rm=1) roundps_1XX 3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-1.000000 0.300000: 0.000000 +r (rm=2) roundps_1XX 3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000 1.100000: 2.000000 -inf: -inf -0.700000:-0.000000 0.300000: 1.000000 +m (rm=2) roundps_1XX 3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000 1.100000: 2.000000 -inf: -inf -0.700000:-0.000000 0.300000: 1.000000 +r (rm=3) roundps_1XX 3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-0.000000 0.300000: 0.000000 +m (rm=3) roundps_1XX 3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000 1.100000: 1.000000 -inf: -inf -0.700000:-0.000000 0.300000: 0.000000 +r (rm=0) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +m (rm=0) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +r (rm=1) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +m (rm=1) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 00000000bf800000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-1.000000 0.499990: 0.000000 +r (rm=2) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 3f80000080000000ffc0000040000000 1.300000: 2.000000 -nan: -nan -0.500010:-0.000000 0.499990: 1.000000 +m (rm=2) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 3f80000080000000ffc0000040000000 1.300000: 2.000000 -nan: -nan -0.500010:-0.000000 0.499990: 1.000000 +r (rm=3) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 0000000080000000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-0.000000 0.499990: 0.000000 +m (rm=3) roundps_1XX 3efffeb0bf0000a8ffc000003fa66666 0000000080000000ffc000003f800000 1.300000: 1.000000 -nan: -nan -0.500010:-0.000000 0.499990: 0.000000 +r pcmpgtq 69c36c54086e8c1d28d0341bc599e8b2 f576b41eea543c3cbbe85f9caf91f60a 00000000000000000000000000000000 +m pcmpgtq 69c36c54086e8c1d28d0341bc599e8b2 f576b41eea543c3cbbe85f9caf91f60a 00000000000000000000000000000000 +r pcmpgtq 5b0686c55b87c7cf8ef500eeaafc86f9 374e33273e4b82dd4e20f8c1a9698053 0000000000000000ffffffffffffffff +m pcmpgtq 5b0686c55b87c7cf8ef500eeaafc86f9 374e33273e4b82dd4e20f8c1a9698053 0000000000000000ffffffffffffffff +r pcmpgtq 0587ea815640a7cb85f3052180cbab4e 204aba7048674c5fa058c97ce373af80 ffffffffffffffffffffffffffffffff +m pcmpgtq 0587ea815640a7cb85f3052180cbab4e 204aba7048674c5fa058c97ce373af80 ffffffffffffffffffffffffffffffff +r pcmpgtq c39192f4962468bdea98c1a0641313de 0ab54467a435d56c8d5c4eba78bc3ebe ffffffffffffffff0000000000000000 +m pcmpgtq c39192f4962468bdea98c1a0641313de 0ab54467a435d56c8d5c4eba78bc3ebe ffffffffffffffff0000000000000000 +r pcmpgtq f16f7c89b6bf485097aeaf5772df79d5 52dacd77ef415ab0f2f70465854feb39 ffffffffffffffffffffffffffffffff +m pcmpgtq f16f7c89b6bf485097aeaf5772df79d5 52dacd77ef415ab0f2f70465854feb39 ffffffffffffffffffffffffffffffff +r pcmpgtq ea6ea4af539d813169024c32c53c9a5e 5406510cc51516d8a9f6666b2538701c ffffffffffffffff0000000000000000 +m pcmpgtq ea6ea4af539d813169024c32c53c9a5e 5406510cc51516d8a9f6666b2538701c ffffffffffffffff0000000000000000 +r pcmpgtq 0cda04cf084b500b3c5f121d7a3532a6 6d85cc93c13f47908f26f0b775848a93 ffffffffffffffff0000000000000000 +m pcmpgtq 0cda04cf084b500b3c5f121d7a3532a6 6d85cc93c13f47908f26f0b775848a93 ffffffffffffffff0000000000000000 +r pcmpgtq b2ff9a567254f18bec937f05abd6fdd9 f7a33b767f4b278380511e35903df4cb ffffffffffffffff0000000000000000 +m pcmpgtq b2ff9a567254f18bec937f05abd6fdd9 f7a33b767f4b278380511e35903df4cb ffffffffffffffff0000000000000000 +r pcmpgtq 382960b02c459f5d55680ed4772cb622 4fac99229cc4f25e58446dd193726bf0 ffffffffffffffffffffffffffffffff +m pcmpgtq 382960b02c459f5d55680ed4772cb622 4fac99229cc4f25e58446dd193726bf0 ffffffffffffffffffffffffffffffff +r pcmpgtq f9a4544ad3a9972c53ac3b78f8411aad d1ebe204b436e6ccf3ca5777992cab2e 00000000000000000000000000000000 +m pcmpgtq f9a4544ad3a9972c53ac3b78f8411aad d1ebe204b436e6ccf3ca5777992cab2e 00000000000000000000000000000000 +r pcmpgtq 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff 00000000000000000000000000000000 +m pcmpgtq 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff 00000000000000000000000000000000 +r pcmpgtq 0000000000000000ffffffffffffffff 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +m pcmpgtq 0000000000000000ffffffffffffffff 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +r pcmpgtq 0000000000000000ffffffffffffffff 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq 0000000000000000ffffffffffffffff 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq 0000000000000000ffffffffffffffff 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq 0000000000000000ffffffffffffffff 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq 0000000000000000ffffffffffffffff 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000000ffffffffffffffff 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000000ffffffffffffffff fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000000ffffffffffffffff fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000001fffffffffffffffe 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000001fffffffffffffffe 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000001fffffffffffffffe 0000000000000001fffffffffffffffe 00000000000000000000000000000000 +m pcmpgtq 0000000000000001fffffffffffffffe 0000000000000001fffffffffffffffe 00000000000000000000000000000000 +r pcmpgtq 0000000000000001fffffffffffffffe 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq 0000000000000001fffffffffffffffe 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq 0000000000000001fffffffffffffffe 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq 0000000000000001fffffffffffffffe 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq 0000000000000001fffffffffffffffe 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000001fffffffffffffffe 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000001fffffffffffffffe fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000001fffffffffffffffe fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +r pcmpgtq 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +m pcmpgtq 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +r pcmpgtq 7fffffffffffffff8000000000000001 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq 7fffffffffffffff8000000000000001 0000000000000000ffffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq 7fffffffffffffff8000000000000001 0000000000000001fffffffffffffffe 0000000000000000ffffffffffffffff +m pcmpgtq 7fffffffffffffff8000000000000001 0000000000000001fffffffffffffffe 0000000000000000ffffffffffffffff +r pcmpgtq 7fffffffffffffff8000000000000001 7fffffffffffffff8000000000000001 00000000000000000000000000000000 +m pcmpgtq 7fffffffffffffff8000000000000001 7fffffffffffffff8000000000000001 00000000000000000000000000000000 +r pcmpgtq 7fffffffffffffff8000000000000001 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq 7fffffffffffffff8000000000000001 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq 7fffffffffffffff8000000000000001 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq 7fffffffffffffff8000000000000001 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq 7fffffffffffffff8000000000000001 fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +m pcmpgtq 7fffffffffffffff8000000000000001 fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +r pcmpgtq 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +m pcmpgtq 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 0000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 0000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 0000000000000001fffffffffffffffe ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 0000000000000001fffffffffffffffe ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 7fffffffffffffff8000000000000001 ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 7fffffffffffffff8000000000000001 ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq 80000000000000008000000000000000 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq 80000000000000008000000000000000 80000000000000017fffffffffffffff ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 80000000000000017fffffffffffffff ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 fffffffffffffffe0000000000000001 ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 fffffffffffffffe0000000000000001 ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000008000000000000000 ffffffffffffffff0000000000000000 ffffffffffffffffffffffffffffffff +m pcmpgtq 80000000000000008000000000000000 ffffffffffffffff0000000000000000 ffffffffffffffffffffffffffffffff +r pcmpgtq 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff 80000000000000017fffffffffffffff 00000000000000000000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff 80000000000000017fffffffffffffff 00000000000000000000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff fffffffffffffffe0000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff fffffffffffffffe0000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq 80000000000000017fffffffffffffff ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 +m pcmpgtq 80000000000000017fffffffffffffff ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq fffffffffffffffe0000000000000001 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq fffffffffffffffe0000000000000001 fffffffffffffffe0000000000000001 00000000000000000000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 fffffffffffffffe0000000000000001 00000000000000000000000000000000 +r pcmpgtq fffffffffffffffe0000000000000001 ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 +m pcmpgtq fffffffffffffffe0000000000000001 ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 +r pcmpgtq ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +m pcmpgtq ffffffffffffffff0000000000000000 0000000000000000ffffffffffffffff ffffffffffffffff0000000000000000 +r pcmpgtq ffffffffffffffff0000000000000000 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +m pcmpgtq ffffffffffffffff0000000000000000 0000000000000001fffffffffffffffe ffffffffffffffff0000000000000000 +r pcmpgtq ffffffffffffffff0000000000000000 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +m pcmpgtq ffffffffffffffff0000000000000000 7fffffffffffffff8000000000000001 ffffffffffffffff0000000000000000 +r pcmpgtq ffffffffffffffff0000000000000000 80000000000000008000000000000000 00000000000000000000000000000000 +m pcmpgtq ffffffffffffffff0000000000000000 80000000000000008000000000000000 00000000000000000000000000000000 +r pcmpgtq ffffffffffffffff0000000000000000 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +m pcmpgtq ffffffffffffffff0000000000000000 80000000000000017fffffffffffffff 0000000000000000ffffffffffffffff +r pcmpgtq ffffffffffffffff0000000000000000 fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +m pcmpgtq ffffffffffffffff0000000000000000 fffffffffffffffe0000000000000001 0000000000000000ffffffffffffffff +r pcmpgtq ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 00000000000000000000000000000000 +m pcmpgtq ffffffffffffffff0000000000000000 ffffffffffffffff0000000000000000 00000000000000000000000000000000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.vgtest new file mode 100644 index 000000000..a5e7f1976 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/amd64/sse4-64.vgtest @@ -0,0 +1,3 @@ +prog: sse4-64 +prereq: ../../../tests/x86_amd64_features amd64-sse42 +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.am index a0a3eeadb..ffa52bdd0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.am @@ -7,13 +7,17 @@ EXTRA_DIST = \ neon128.stdout.exp neon128.stderr.exp neon128.vgtest \ neon64.stdout.exp neon64.stderr.exp neon64.vgtest \ v6intARM.stdout.exp v6intARM.stderr.exp v6intARM.vgtest \ - v6intThumb.stdout.exp v6intThumb.stderr.exp v6intThumb.vgtest + v6intThumb.stdout.exp v6intThumb.stderr.exp v6intThumb.vgtest \ + v6media.stdout.exp v6media.stderr.exp v6media.vgtest \ + vfp.stdout.exp vfp.stderr.exp vfp.vgtest check_PROGRAMS = \ neon128 \ neon64 \ v6intARM \ - v6intThumb + v6intThumb \ + v6media \ + vfp AM_CFLAGS += @FLAG_M32@ AM_CXXFLAGS += @FLAG_M32@ @@ -29,6 +33,13 @@ AM_CCASFLAGS += @FLAG_M32@ v6intARM_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -marm v6intThumb_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb +v6media_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb + +vfp_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \ + -mfpu=neon -mfloat-abi=softfp \ + -mthumb + + neon128_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \ -mfpu=neon -mfloat-abi=softfp \ -mthumb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.in index 3244100b4..33dc83285 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/Makefile.in @@ -47,7 +47,7 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am check_PROGRAMS = neon128$(EXEEXT) neon64$(EXEEXT) v6intARM$(EXEEXT) \ - v6intThumb$(EXEEXT) + v6intThumb$(EXEEXT) v6media$(EXEEXT) vfp$(EXEEXT) subdir = none/tests/arm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -77,6 +77,16 @@ v6intThumb_OBJECTS = v6intThumb-v6intThumb.$(OBJEXT) v6intThumb_LDADD = $(LDADD) v6intThumb_LINK = $(CCLD) $(v6intThumb_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +v6media_SOURCES = v6media.c +v6media_OBJECTS = v6media-v6media.$(OBJEXT) +v6media_LDADD = $(LDADD) +v6media_LINK = $(CCLD) $(v6media_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +vfp_SOURCES = vfp.c +vfp_OBJECTS = vfp-vfp.$(OBJEXT) +vfp_LDADD = $(LDADD) +vfp_LINK = $(CCLD) $(vfp_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ + $@ SCRIPTS = $(dist_noinst_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -86,8 +96,9 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = neon128.c neon64.c v6intARM.c v6intThumb.c -DIST_SOURCES = neon128.c neon64.c v6intARM.c v6intThumb.c +SOURCES = neon128.c neon64.c v6intARM.c v6intThumb.c v6media.c vfp.c +DIST_SOURCES = neon128.c neon64.c v6intARM.c v6intThumb.c v6media.c \ + vfp.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -133,6 +144,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -162,12 +175,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -320,7 +328,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -349,6 +357,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -377,6 +390,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -398,7 +412,9 @@ EXTRA_DIST = \ neon128.stdout.exp neon128.stderr.exp neon128.vgtest \ neon64.stdout.exp neon64.stderr.exp neon64.vgtest \ v6intARM.stdout.exp v6intARM.stderr.exp v6intARM.vgtest \ - v6intThumb.stdout.exp v6intThumb.stderr.exp v6intThumb.vgtest + v6intThumb.stdout.exp v6intThumb.stderr.exp v6intThumb.vgtest \ + v6media.stdout.exp v6media.stderr.exp v6media.vgtest \ + vfp.stdout.exp vfp.stderr.exp vfp.vgtest # These two are specific to their ARM/Thumb respectively and so we @@ -410,6 +426,11 @@ EXTRA_DIST = \ # for v6intThumb.c. v6intARM_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -marm v6intThumb_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb +v6media_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb +vfp_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \ + -mfpu=neon -mfloat-abi=softfp \ + -mthumb + neon128_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \ -mfpu=neon -mfloat-abi=softfp \ -mthumb @@ -467,6 +488,12 @@ v6intARM$(EXEEXT): $(v6intARM_OBJECTS) $(v6intARM_DEPENDENCIES) v6intThumb$(EXEEXT): $(v6intThumb_OBJECTS) $(v6intThumb_DEPENDENCIES) @rm -f v6intThumb$(EXEEXT) $(v6intThumb_LINK) $(v6intThumb_OBJECTS) $(v6intThumb_LDADD) $(LIBS) +v6media$(EXEEXT): $(v6media_OBJECTS) $(v6media_DEPENDENCIES) + @rm -f v6media$(EXEEXT) + $(v6media_LINK) $(v6media_OBJECTS) $(v6media_LDADD) $(LIBS) +vfp$(EXEEXT): $(vfp_OBJECTS) $(vfp_DEPENDENCIES) + @rm -f vfp$(EXEEXT) + $(vfp_LINK) $(vfp_OBJECTS) $(vfp_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -478,6 +505,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/neon64-neon64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v6intARM-v6intARM.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v6intThumb-v6intThumb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v6media-v6media.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vfp-vfp.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -549,6 +578,34 @@ v6intThumb-v6intThumb.obj: v6intThumb.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(v6intThumb_CFLAGS) $(CFLAGS) -c -o v6intThumb-v6intThumb.obj `if test -f 'v6intThumb.c'; then $(CYGPATH_W) 'v6intThumb.c'; else $(CYGPATH_W) '$(srcdir)/v6intThumb.c'; fi` +v6media-v6media.o: v6media.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(v6media_CFLAGS) $(CFLAGS) -MT v6media-v6media.o -MD -MP -MF $(DEPDIR)/v6media-v6media.Tpo -c -o v6media-v6media.o `test -f 'v6media.c' || echo '$(srcdir)/'`v6media.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/v6media-v6media.Tpo $(DEPDIR)/v6media-v6media.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='v6media.c' object='v6media-v6media.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(v6media_CFLAGS) $(CFLAGS) -c -o v6media-v6media.o `test -f 'v6media.c' || echo '$(srcdir)/'`v6media.c + +v6media-v6media.obj: v6media.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(v6media_CFLAGS) $(CFLAGS) -MT v6media-v6media.obj -MD -MP -MF $(DEPDIR)/v6media-v6media.Tpo -c -o v6media-v6media.obj `if test -f 'v6media.c'; then $(CYGPATH_W) 'v6media.c'; else $(CYGPATH_W) '$(srcdir)/v6media.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/v6media-v6media.Tpo $(DEPDIR)/v6media-v6media.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='v6media.c' object='v6media-v6media.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(v6media_CFLAGS) $(CFLAGS) -c -o v6media-v6media.obj `if test -f 'v6media.c'; then $(CYGPATH_W) 'v6media.c'; else $(CYGPATH_W) '$(srcdir)/v6media.c'; fi` + +vfp-vfp.o: vfp.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vfp_CFLAGS) $(CFLAGS) -MT vfp-vfp.o -MD -MP -MF $(DEPDIR)/vfp-vfp.Tpo -c -o vfp-vfp.o `test -f 'vfp.c' || echo '$(srcdir)/'`vfp.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vfp-vfp.Tpo $(DEPDIR)/vfp-vfp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vfp.c' object='vfp-vfp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vfp_CFLAGS) $(CFLAGS) -c -o vfp-vfp.o `test -f 'vfp.c' || echo '$(srcdir)/'`vfp.c + +vfp-vfp.obj: vfp.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vfp_CFLAGS) $(CFLAGS) -MT vfp-vfp.obj -MD -MP -MF $(DEPDIR)/vfp-vfp.Tpo -c -o vfp-vfp.obj `if test -f 'vfp.c'; then $(CYGPATH_W) 'vfp.c'; else $(CYGPATH_W) '$(srcdir)/vfp.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vfp-vfp.Tpo $(DEPDIR)/vfp-vfp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vfp.c' object='vfp-vfp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vfp_CFLAGS) $(CFLAGS) -c -o vfp-vfp.obj `if test -f 'vfp.c'; then $(CYGPATH_W) 'vfp.c'; else $(CYGPATH_W) '$(srcdir)/vfp.c'; fi` + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.c index 9b122fe7f..9ca94fba3 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.c @@ -41,6 +41,13 @@ static inline unsigned int f2u(float x) { /* test macros to generate and output the result of a single instruction */ +const unsigned int mem[] = { + 0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d, + 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, + 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, + 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c +}; + #define TESTINSN_imm(instruction, QD, imm) \ { \ unsigned int out[4]; \ @@ -55,6 +62,22 @@ static inline unsigned int f2u(float x) { ); \ printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \ instruction, out[3], out[2], out[1], out[0]); \ +}\ +{ \ + unsigned int out[4]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %1, %2\n\t" \ + "vldmia %1!, {" #QD "}\n\t" \ + instruction ", #" #imm "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (addr), "r" (mem) \ + : #QD, "%2", "memory" \ + ); \ + printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + instruction, out[3], out[2], out[1], out[0]); \ } #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ @@ -72,8 +95,26 @@ static inline unsigned int f2u(float x) { ); \ printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ instruction, out[3], out[2], out[1], out[0], QMval); \ +} \ +{ \ + unsigned int out[4]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %2, %3\n\t" \ + "vldmia %2!, {" #QD "}\n\t" \ + "vldmia %2!, {" #QM "}\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ + : #QD, #QM, "%2", "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ + instruction, out[3], out[2], out[1], out[0], QMval); \ } + #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ { \ unsigned int out[4]; \ @@ -95,6 +136,29 @@ static inline unsigned int f2u(float x) { printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " fpscr: %08x\n", \ instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \ +} \ +{ \ + unsigned int out[4]; \ + unsigned int fpscr; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + "mov %3, %4\n\t" \ + "vldmia %3!, {" #QM "}\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + MOVE_to_R4_from_FPSCR \ + "mov %0, r4" \ + : "=r" (fpscr) \ + : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ + : #QD, #QM, "memory", "r4" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " fpscr: %08x\n", \ + instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \ } #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ @@ -114,7 +178,26 @@ static inline unsigned int f2u(float x) { printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x\n", \ instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ -} +} \ +/*{ \ + unsigned int out[4]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %0, %4\n\t" \ + "vldmia %0!, {" #QM "}\n\t" \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ +} */ #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ { \ @@ -133,6 +216,25 @@ static inline unsigned int f2u(float x) { printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x\n", \ instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ +} \ +{ \ + unsigned int out[4]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vdup.i32 " #QD ", %3\n\t" \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ } #define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ @@ -157,6 +259,33 @@ static inline unsigned int f2u(float x) { printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \ +} \ +{ \ + unsigned int out[4]; \ + unsigned int fpscr; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + MOVE_to_R4_from_FPSCR \ + "mov %0, r4" \ + : "=r" (fpscr) \ + : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ + : #QD, #QM, #QN, "memory", "r4" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ + instruction, out[1], out[0], QMval, QNval, fpscr); \ + printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ + instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \ } #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ @@ -178,26 +307,27 @@ static inline unsigned int f2u(float x) { " Qm (" #QMtype ")0x%08x Qn (" #QNtype ")0x%08x\n", \ instruction, out1[3], out1[2], out1[1], out1[0], \ out2[3], out2[2], out2[1], out2[0], QMval, QNval); \ -} - -// Ditto TESTING_bin(), but in QD all zeros -#define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ +} \ { \ - unsigned int out[4]; \ -\ - __asm__ volatile( \ - "vmov.i8 " #QD ", #0x00" "\n\t" \ - "vdup." #QMtype " " #QM ", %1\n\t" \ - "vdup." #QNtype " " #QN ", %2\n\t" \ - instruction "\n\t" \ - "vstmia %0, {" #QD "}\n\t" \ - : \ - : "r" (out), "r" (QMval), "r" (QNval) \ - : #QD, #QM, #QN, "memory" \ - ); \ - printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ - " Qn (" #QNtype ")0x%08x\n", \ - instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ + unsigned int out1[4]; \ + unsigned int out2[4]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QM "}\n\t" \ + "vstmia %1, {" #QN "}\n\t" \ + : \ + : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ + : #QM, #QN, "%4", "memory" \ + ); \ + printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x Qn 0x%08x 0x%08x 0x%08x 0x%08x\nQm (" \ +#QMtype ")0x%08x" " Qn (" #QNtype ")0x%08x\n", \ + instruction, out1[3], out1[2], out1[1], out1[0],\ + out2[3], out2[2], out2[1], out2[0], QMval, QNval); \ } #if 0 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.stdout.exp index fe1ca6624..ff75a019a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon128.stdout.exp @@ -1,51 +1,92 @@ ----- VMOV (immediate) ----- vmov.i32 q0, #0x7 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 +vmov.i32 q0, #0x7 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 +vmov.i16 q1, #0x7 :: Qd 0x00070007 0x00070007 0x00070007 0x00070007 vmov.i16 q1, #0x7 :: Qd 0x00070007 0x00070007 0x00070007 0x00070007 vmov.i8 q2, #0x7 :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 +vmov.i8 q2, #0x7 :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 vmov.i32 q5, #0x700 :: Qd 0x00000700 0x00000700 0x00000700 0x00000700 +vmov.i32 q5, #0x700 :: Qd 0x00000700 0x00000700 0x00000700 0x00000700 +vmov.i16 q7, #0x700 :: Qd 0x07000700 0x07000700 0x07000700 0x07000700 vmov.i16 q7, #0x700 :: Qd 0x07000700 0x07000700 0x07000700 0x07000700 vmov.i32 q10, #0x70000 :: Qd 0x00070000 0x00070000 0x00070000 0x00070000 +vmov.i32 q10, #0x70000 :: Qd 0x00070000 0x00070000 0x00070000 0x00070000 vmov.i32 q12, #0x7000000 :: Qd 0x07000000 0x07000000 0x07000000 0x07000000 +vmov.i32 q12, #0x7000000 :: Qd 0x07000000 0x07000000 0x07000000 0x07000000 +vmov.i32 q13, #0x7FF :: Qd 0x000007ff 0x000007ff 0x000007ff 0x000007ff vmov.i32 q13, #0x7FF :: Qd 0x000007ff 0x000007ff 0x000007ff 0x000007ff vmov.i32 q14, #0x7FFFF :: Qd 0x0007ffff 0x0007ffff 0x0007ffff 0x0007ffff +vmov.i32 q14, #0x7FFFF :: Qd 0x0007ffff 0x0007ffff 0x0007ffff 0x0007ffff +vmov.i64 q15, #0xFF0000FF00FFFF00 :: Qd 0xff0000ff 0x00ffff00 0xff0000ff 0x00ffff00 vmov.i64 q15, #0xFF0000FF00FFFF00 :: Qd 0xff0000ff 0x00ffff00 0xff0000ff 0x00ffff00 ----- VMVN (immediate) ----- vmvn.i32 q0, #0x7 :: Qd 0xfffffff8 0xfffffff8 0xfffffff8 0xfffffff8 +vmvn.i32 q0, #0x7 :: Qd 0xfffffff8 0xfffffff8 0xfffffff8 0xfffffff8 vmvn.i16 q1, #0x7 :: Qd 0xfff8fff8 0xfff8fff8 0xfff8fff8 0xfff8fff8 +vmvn.i16 q1, #0x7 :: Qd 0xfff8fff8 0xfff8fff8 0xfff8fff8 0xfff8fff8 +vmvn.i8 q2, #0x7 :: Qd 0xf8f8f8f8 0xf8f8f8f8 0xf8f8f8f8 0xf8f8f8f8 vmvn.i8 q2, #0x7 :: Qd 0xf8f8f8f8 0xf8f8f8f8 0xf8f8f8f8 0xf8f8f8f8 vmvn.i32 q5, #0x700 :: Qd 0xfffff8ff 0xfffff8ff 0xfffff8ff 0xfffff8ff +vmvn.i32 q5, #0x700 :: Qd 0xfffff8ff 0xfffff8ff 0xfffff8ff 0xfffff8ff vmvn.i16 q7, #0x700 :: Qd 0xf8fff8ff 0xf8fff8ff 0xf8fff8ff 0xf8fff8ff +vmvn.i16 q7, #0x700 :: Qd 0xf8fff8ff 0xf8fff8ff 0xf8fff8ff 0xf8fff8ff +vmvn.i32 q10, #0x70000 :: Qd 0xfff8ffff 0xfff8ffff 0xfff8ffff 0xfff8ffff vmvn.i32 q10, #0x70000 :: Qd 0xfff8ffff 0xfff8ffff 0xfff8ffff 0xfff8ffff vmvn.i32 q13, #0x7000000 :: Qd 0xf8ffffff 0xf8ffffff 0xf8ffffff 0xf8ffffff +vmvn.i32 q13, #0x7000000 :: Qd 0xf8ffffff 0xf8ffffff 0xf8ffffff 0xf8ffffff +vmvn.i32 q11, #0x7FF :: Qd 0xfffff800 0xfffff800 0xfffff800 0xfffff800 vmvn.i32 q11, #0x7FF :: Qd 0xfffff800 0xfffff800 0xfffff800 0xfffff800 vmvn.i32 q14, #0x7FFFF :: Qd 0xfff80000 0xfff80000 0xfff80000 0xfff80000 +vmvn.i32 q14, #0x7FFFF :: Qd 0xfff80000 0xfff80000 0xfff80000 0xfff80000 +vmvn.i64 q15, #0xFF0000FF00FFFF00 :: Qd 0x00ffff00 0xff0000ff 0x00ffff00 0xff0000ff vmvn.i64 q15, #0xFF0000FF00FFFF00 :: Qd 0x00ffff00 0xff0000ff 0x00ffff00 0xff0000ff ----- VORR (immediate) ----- vorr.i32 q0, #0x7 :: Qd 0x55555557 0x55555557 0x55555557 0x55555557 +vorr.i32 q0, #0x7 :: Qd 0x151d191f 0x141c1f1f 0x131b1a1f 0x121f1e1f vorr.i16 q2, #0x7 :: Qd 0x55575557 0x55575557 0x55575557 0x55575557 +vorr.i16 q2, #0x7 :: Qd 0x151f191f 0x141f1f1f 0x131f1a1f 0x121f1e1f vorr.i32 q8, #0x700 :: Qd 0x55555755 0x55555755 0x55555755 0x55555755 +vorr.i32 q8, #0x700 :: Qd 0x151d1f1d 0x141c1f1c 0x131b1f1b 0x121f1f1f vorr.i16 q6, #0x700 :: Qd 0x57555755 0x57555755 0x57555755 0x57555755 +vorr.i16 q6, #0x700 :: Qd 0x171d1f1d 0x171c1f1c 0x171b1f1b 0x171f1f1f vorr.i32 q14, #0x70000 :: Qd 0x55575555 0x55575555 0x55575555 0x55575555 +vorr.i32 q14, #0x70000 :: Qd 0x151f191d 0x141f1f1c 0x131f1a1b 0x121f1e1f vorr.i32 q15, #0x7000000 :: Qd 0x57555555 0x57555555 0x57555555 0x57555555 +vorr.i32 q15, #0x7000000 :: Qd 0x171d191d 0x171c1f1c 0x171b1a1b 0x171f1e1f ----- VBIC (immediate) ----- vbic.i32 q0, #0x7 :: Qd 0x55555550 0x55555550 0x55555550 0x55555550 +vbic.i32 q0, #0x7 :: Qd 0x151d1918 0x141c1f18 0x131b1a18 0x121f1e18 vbic.i16 q3, #0x7 :: Qd 0x55505550 0x55505550 0x55505550 0x55505550 +vbic.i16 q3, #0x7 :: Qd 0x15181918 0x14181f18 0x13181a18 0x12181e18 vbic.i32 q5, #0x700 :: Qd 0x55555055 0x55555055 0x55555055 0x55555055 +vbic.i32 q5, #0x700 :: Qd 0x151d181d 0x141c181c 0x131b181b 0x121f181f vbic.i16 q8, #0x700 :: Qd 0x50555055 0x50555055 0x50555055 0x50555055 +vbic.i16 q8, #0x700 :: Qd 0x101d181d 0x101c181c 0x101b181b 0x101f181f vbic.i32 q10, #0x70000 :: Qd 0x55505555 0x55505555 0x55505555 0x55505555 +vbic.i32 q10, #0x70000 :: Qd 0x1518191d 0x14181f1c 0x13181a1b 0x12181e1f vbic.i32 q15, #0x7000000 :: Qd 0x50555555 0x50555555 0x50555555 0x50555555 +vbic.i32 q15, #0x7000000 :: Qd 0x101d191d 0x101c1f1c 0x101b1a1b 0x101f1e1f ---- VMVN (register) ---- vmvn q0, q1 :: Qd 0xffffffe7 0xffffffe7 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn q0, q1 :: Qd 0xd9d2d2d5 0xdad5d1d4 0xdbd3d4d4 0xdcd0d1d0 Qm (i32)0x00000018 vmvn q10, q15 :: Qd 0xffffffe7 0xffffffe7 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn q10, q15 :: Qd 0xd9d2d2d5 0xdad5d1d4 0xdbd3d4d4 0xdcd0d1d0 Qm (i32)0x00000018 vmvn q0, q14 :: Qd 0xffffffe7 0xffffffe7 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn q0, q14 :: Qd 0xd9d2d2d5 0xdad5d1d4 0xdbd3d4d4 0xdcd0d1d0 Qm (i32)0x00000018 ---- VMOV (register) ---- vmov q0, q1 :: Qd 0x00000018 0x00000018 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000018 vmov q10, q15 :: Qd 0x00000018 0x00000018 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov q10, q15 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000018 vmov q0, q14 :: Qd 0x00000018 0x00000018 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov q0, q14 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000018 ---- VDUP (ARM core register) (tested indirectly) ---- vmov q0, q1 :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 Qm (i8)0x00000007 +vmov q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i8)0x00000007 vmov q10, q11 :: Qd 0x00070007 0x00070007 0x00070007 0x00070007 Qm (i16)0x00000007 +vmov q10, q11 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i16)0x00000007 vmov q0, q15 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i32)0x00000007 +vmov q0, q15 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000007 ---- VADD ---- vadd.i32 q0, q1, q2 :: Qd 0x00000090 0x00000090 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 vadd.i64 q0, q1, q2 :: Qd 0x00000104 0x00000104 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 @@ -171,38 +212,102 @@ vhsub.u32 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32) vhsub.u32 q10, q11, q12 :: Qd 0xffffffd0 0xffffffd0 0xffffffd0 0xffffffd0 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VQADD ---- vqadd.s32 q0, q1, q2 :: Qd 0x00000090 0x00000090 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.s32 q0, q1, q2 :: Qd 0x00000104 0x00000104 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.s16 q0, q1, q2 :: Qd 0x00000104 0x00000104 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s16 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s16 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.s8 q0, q1, q2 :: Qd 0x00000004 0x00000004 0x00000004 0x00000004 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s8 q0, q1, q2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqadd.s8 q0, q1, q2 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 vqadd.s8 q0, q1, q2 :: Qd 0x80000003 0x80000003 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s8 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.s8 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s16 q0, q1, q2 :: Qd 0x80000003 0x80000003 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s16 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.s16 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s32 q0, q1, q2 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s32 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.s32 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s32 q10, q11, q12 :: Qd 0x00000090 0x00000090 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q10, q11, q12 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 q10, q11, q12 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.u32 q0, q1, q2 :: Qd 0x00000090 0x00000090 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.u32 q0, q1, q2 :: Qd 0x00000104 0x00000104 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u16 q0, q1, q2 :: Qd 0x00000104 0x00000104 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u16 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u16 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u8 q0, q1, q2 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqadd.u8 q0, q1, q2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u8 q0, q1, q2 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u8 q0, q1, q2 :: Qd 0xff000003 0xff000003 0xff000003 0xff000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u8 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.u8 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u16 q0, q1, q2 :: Qd 0xffff0003 0xffff0003 0xffff0003 0xffff0003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u16 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.u16 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u32 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u32 q0, q1, q2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqadd.u32 q0, q1, q2 :: Qd 0x951d191f 0x941c1f1e 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u32 q10, q11, q12 :: Qd 0x00000090 0x00000090 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q10, q11, q12 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 q10, q11, q12 :: Qd 0x151d1995 0x141c1f94 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 ---- VQSUB ---- vqsub.s32 q0, q1, q2 :: Qd 0xffffffa0 0xffffffa0 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.s32 q0, q1, q2 :: Qd 0x00000014 0x00000014 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s16 q0, q1, q2 :: Qd 0x00000014 0x00000014 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s16 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s16 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s8 q0, q1, q2 :: Qd 0x00000080 0x00000080 0x00000080 0x00000080 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqsub.s8 q0, q1, q2 :: Qd 0x131b1aa3 0x121f1ea7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s8 q0, q1, q2 :: Qd 0x151d19a5 0x141c1fa4 0x131b1aa3 0x121f1ea7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s8 q0, q1, q2 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s8 q0, q1, q2 :: Qd 0x7f1b1a19 0x7f1f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.s8 q0, q1, q2 :: Qd 0x7f1d191b 0x7f1c1f1a 0x7f1b1a19 0x7f1f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s16 q0, q1, q2 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s16 q0, q1, q2 :: Qd 0x7fff1a19 0x7fff1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.s16 q0, q1, q2 :: Qd 0x7fff191b 0x7fff1f1a 0x7fff1a19 0x7fff1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s32 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s32 q0, q1, q2 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.s32 q0, q1, q2 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s32 q10, q11, q12 :: Qd 0xffffffa0 0xffffffa0 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q10, q11, q12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 q10, q11, q12 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqsub.u32 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u32 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.u32 q0, q1, q2 :: Qd 0x00000014 0x00000014 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u32 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u32 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.u16 q0, q1, q2 :: Qd 0x00000014 0x00000014 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u16 q0, q1, q2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u16 q0, q1, q2 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.u8 q0, q1, q2 :: Qd 0x00000014 0x00000014 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u8 q0, q1, q2 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqsub.u8 q0, q1, q2 :: Qd 0x151d1900 0x141c1f00 0x131b1a00 0x121f1e00 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 vqsub.u8 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u8 q0, q1, q2 :: Qd 0x001b1a19 0x001f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u8 q0, q1, q2 :: Qd 0x001d191b 0x001c1f1a 0x001b1a19 0x001f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u16 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u16 q0, q1, q2 :: Qd 0x00001a19 0x00001e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u16 q0, q1, q2 :: Qd 0x0000191b 0x00001f1a 0x00001a19 0x00001e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u32 q10, q11, q12 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqsub.u32 q10, q11, q12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u32 q10, q11, q12 :: Qd 0x151d18a5 0x141c1ea4 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 ---- VRHADD ---- vrhadd.s32 q0, q1, q2 :: Qd 0x00000049 0x00000049 0x00000049 0x00000049 Qm (i32)0x00000019 Qn (i32)0x00000078 vrhadd.s32 q0, q1, q2 :: Qd 0x00000049 0x00000049 0x00000049 0x00000049 Qm (i32)0x00000019 Qn (i32)0x00000079 @@ -344,257 +449,625 @@ vshl.u64 q8, q2, q4 :: Qd 0x000000f0 0x000000f0 0x000000f0 0x000000f0 Qm (i32)0 vshl.u64 q5, q12, q4 :: Qd 0x60000000 0x40000000 0x60000000 0x40000000 Qm (i32)0x80000001 Qn (i32)0x0000001e ---- VQSHL (register) ---- vqshl.s64 q0, q1, q2 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 q0, q1, q2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 q0, q1, q2 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqshl.s64 q3, q4, q5 :: Qd 0xffffff03 0xffffff02 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 q3, q4, q5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 q3, q4, q5 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqshl.s64 q3, q4, q5 :: Qd 0xfffffff0 0x3ffffff0 0xfffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s64 q3, q4, q5 :: Qd 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s64 q3, q4, q5 :: Qd 0x02a3a323 0xa28383e3 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.s64 q0, q1, q2 :: Qd 0x00040000 0x00040000 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqshl.s64 q0, q1, q2 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 +vqshl.s64 q0, q1, q2 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqshl.s64 q13, q14, q15 :: Qd 0xffffffff 0xfffffbff 0xffffffff 0xfffffbff Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.s64 q13, q14, q15 :: Qd 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.s64 q13, q14, q15 :: Qd 0x00000005 0x47464745 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000001 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 +vqshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.s32 q2, q8, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.s32 q2, q8, q4 :: Qd 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.s32 q2, q8, q4 :: Qd 0x0151d191 0x0141c1f1 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqshl.s32 q12, q11, q13 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.s32 q12, q11, q13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.s32 q12, q11, q13 :: Qd 0x000a8e8c 0x000a0e0f 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqshl.s32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.s32 q0, q1, q2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.s32 q0, q1, q2 :: Qd 0x002a3a32 0x0028383e 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqshl.s32 q9, q10, q11 :: Qd 0xc0000004 0xc0000004 0xc0000004 0xc0000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s32 q9, q10, q11 :: Qd 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s32 q9, q10, q11 :: Qd 0x0a8e8c8e 0x0a0e0f8e 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqshl.s32 q13, q3, q5 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqshl.s32 q13, q3, q5 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 +vqshl.s32 q13, q3, q5 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 vqshl.s16 q11, q10, q2 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 q11, q10, q2 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 q11, q10, q2 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.s16 q3, q14, q7 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s16 q3, q14, q7 :: Qd 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s16 q3, q14, q7 :: Qd 0x0a8e0323 0x0a0e03e3 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.s16 q0, q11, q2 :: Qd 0xc0000080 0xc0000080 0xc0000080 0xc0000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s16 q0, q11, q2 :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s16 q0, q11, q2 :: Qd 0x0a8e0c8e 0x0a0e0f8e 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqshl.s16 q1, q2, q3 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 q1, q2, q3 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 q1, q2, q3 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.s16 q3, q4, q5 :: Qd 0xd0000000 0xd0000000 0xd0000000 0xd0000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.s16 q3, q4, q5 :: Qd 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.s16 q3, q4, q5 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqshl.s16 q0, q15, q2 :: Qd 0x00007fff 0x00007fff 0x00007fff 0x00007fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s16 q0, q15, q2 :: Qd 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s16 q0, q15, q2 :: Qd 0x151d7fff 0x141c7fff 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqshl.s8 q2, q7, q11 :: Qd 0xffffff80 0xffffff80 0xffffff80 0xffffff80 Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.s8 q2, q7, q11 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.s8 q2, q7, q11 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqshl.s8 q13, q1, q2 :: Qd 0xffffff80 0xffffff80 0xffffff80 0xffffff80 Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s8 q13, q1, q2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s8 q13, q1, q2 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqshl.s8 q3, q7, q5 :: Qd 0x80000058 0x80000058 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqshl.s8 q3, q7, q5 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 +vqshl.s8 q3, q7, q5 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 vqshl.s8 q10, q11, q12 :: Qd 0x00010000 0x00010000 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqshl.s8 q10, q11, q12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 +vqshl.s8 q10, q11, q12 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqshl.s8 q6, q7, q8 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.s8 q6, q7, q8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.s8 q6, q7, q8 :: Qd 0x151d1974 0x141c1f70 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqshl.s8 q10, q11, q12 :: Qd 0x0000007f 0x0000007f 0x0000007f 0x0000007f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.s8 q10, q11, q12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.s8 q10, q11, q12 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 vqshl.u64 q0, q1, q2 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.u64 q0, q1, q2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.u64 q0, q1, q2 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqshl.u64 q3, q4, q5 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 08000000 +vqshl.u64 q3, q4, q5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.u64 q3, q4, q5 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqshl.u64 q3, q4, q5 :: Qd 0x1ffffff0 0x3ffffff0 0x1ffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u64 q3, q4, q5 :: Qd 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u64 q3, q4, q5 :: Qd 0x02a3a323 0xa28383e3 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.u64 q0, q1, q2 :: Qd 0x00040000 0x00040000 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqshl.u64 q0, q1, q2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 +vqshl.u64 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqshl.u64 q13, q14, q15 :: Qd 0x0000003f 0xfffffbff 0x0000003f 0xfffffbff Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.u64 q13, q14, q15 :: Qd 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.u64 q13, q14, q15 :: Qd 0x00000005 0x47464745 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000001 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 +vqshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.u32 q2, q8, q4 :: Qd 0x0fffffff 0x0fffffff 0x0fffffff 0x0fffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.u32 q2, q8, q4 :: Qd 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.u32 q2, q8, q4 :: Qd 0x0151d191 0x0141c1f1 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqshl.u32 q12, q11, q13 :: Qd 0x007fffff 0x007fffff 0x007fffff 0x007fffff Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.u32 q12, q11, q13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.u32 q12, q11, q13 :: Qd 0x000a8e8c 0x000a0e0f 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqshl.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.u32 q0, q1, q2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.u32 q0, q1, q2 :: Qd 0x002a3a32 0x0028383e 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqshl.u32 q9, q10, q11 :: Qd 0x40000004 0x40000004 0x40000004 0x40000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u32 q9, q10, q11 :: Qd 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u32 q9, q10, q11 :: Qd 0x0a8e8c8e 0x0a0e0f8e 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqshl.u32 q13, q3, q5 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u32 q13, q3, q5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u32 q13, q3, q5 :: Qd 0xa8e8c8e8 0xa0e0f8e0 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 vqshl.u16 q11, q10, q2 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 q11, q10, q2 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 q11, q10, q2 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.u16 q3, q14, q7 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u16 q3, q14, q7 :: Qd 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u16 q3, q14, q7 :: Qd 0x0a8e0323 0x0a0e03e3 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.u16 q0, q11, q2 :: Qd 0x40000080 0x40000080 0x40000080 0x40000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u16 q0, q11, q2 :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u16 q0, q11, q2 :: Qd 0x0a8e0c8e 0x0a0e0f8e 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqshl.u16 q1, q2, q3 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 q1, q2, q3 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 q1, q2, q3 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.u16 q3, q4, q5 :: Qd 0x50000000 0x50000000 0x50000000 0x50000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.u16 q3, q4, q5 :: Qd 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.u16 q3, q4, q5 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqshl.u16 q0, q15, q2 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u16 q0, q15, q2 :: Qd 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u16 q0, q15, q2 :: Qd 0x151dffff 0x141cffff 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqshl.u8 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.u8 q2, q7, q11 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.u8 q2, q7, q11 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqshl.u8 q13, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u8 q13, q1, q2 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u8 q13, q1, q2 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqshl.u8 q3, q7, q5 :: Qd 0x80000058 0x80000058 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u8 q3, q7, q5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u8 q3, q7, q5 :: Qd 0x151d19e8 0x141c1fe0 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 vqshl.u8 q10, q11, q12 :: Qd 0x00010000 0x00010000 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqshl.u8 q10, q11, q12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 +vqshl.u8 q10, q11, q12 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqshl.u8 q6, q7, q8 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.u8 q6, q7, q8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.u8 q6, q7, q8 :: Qd 0x151d1974 0x141c1f70 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqshl.u8 q10, q11, q12 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.u8 q10, q11, q12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.u8 q10, q11, q12 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 ---- VQSHL / VQSHLU (immediate) ---- vqshl.s64 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.s64 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.s64 q15, q14, #1 :: Qd 0xffffff03 0xffffff02 0xffffff03 0xffffff02 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s64 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s64 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s64 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s64 q5, q4, #63 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #63 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #60 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s64 q5, q4, #60 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s64 q5, q4, #59 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #59 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #58 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s64 q5, q4, #58 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s64 q5, q4, #17 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s64 q5, q4, #63 :: Qd 0x80000000 0x00000000 0x80000000 0x00000000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s64 q5, q4, #63 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s64 q5, q4, #60 :: Qd 0xf0000000 0x00000000 0xf0000000 0x00000000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s64 q5, q4, #60 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s64 q5, q4, #7 :: Qd 0x80000000 0x00000000 0x80000000 0x00000000 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.s64 q5, q4, #7 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.s32 q10, q11, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.s32 q10, q11, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.s32 q15, q14, #1 :: Qd 0xffffff02 0xffffff02 0xffffff02 0xffffff02 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s32 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s32 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s32 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s32 q5, q4, #31 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s32 q5, q4, #31 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s32 q5, q4, #28 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s32 q5, q4, #28 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s32 q5, q4, #27 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s32 q5, q4, #27 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s32 q5, q4, #26 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s32 q5, q4, #26 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s32 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s32 q5, q4, #17 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s32 q5, q4, #31 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s32 q5, q4, #31 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s32 q5, q4, #29 :: Qd 0xe0000000 0xe0000000 0xe0000000 0xe0000000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s32 q5, q4, #29 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s32 q5, q4, #7 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.s32 q5, q4, #7 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.s16 q9, q8, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.s16 q9, q8, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.s16 q15, q14, #1 :: Qd 0xfffeff02 0xfffeff02 0xfffeff02 0xfffeff02 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s16 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s16 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s16 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s16 q9, q8, #15 :: Qd 0x00007fff 0x00007fff 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s16 q9, q8, #15 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s16 q5, q4, #12 :: Qd 0x00007fff 0x00007fff 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s16 q5, q4, #12 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s16 q5, q4, #11 :: Qd 0x00007fff 0x00007fff 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s16 q5, q4, #11 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s16 q5, q4, #10 :: Qd 0x00004000 0x00004000 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s16 q5, q4, #10 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s16 q5, q4, #4 :: Qd 0x00000100 0x00000100 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s16 q5, q4, #4 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr: 08000000 vqshl.s16 q5, q4, #15 :: Qd 0x80008000 0x80008000 0x80008000 0x80008000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s16 q5, q4, #15 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s16 q5, q4, #12 :: Qd 0xf000f000 0xf000f000 0xf000f000 0xf000f000 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s16 q5, q4, #12 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr: 08000000 vqshl.s16 q5, q4, #7 :: Qd 0x80000100 0x80000100 0x80000100 0x80000100 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.s16 q5, q4, #7 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0x80000002 fpscr: 08000000 vqshl.s8 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.s8 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.s8 q15, q14, #1 :: Qd 0xfefefe80 0xfefefe80 0xfefefe80 0xfefefe80 Qm (i32)0xffffff81 fpscr: 08000000 +vqshl.s8 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s8 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.s8 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.s8 q5, q4, #7 :: Qd 0x0000007f 0x0000007f 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s8 q5, q4, #7 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr: 08000000 vqshl.s8 q5, q4, #4 :: Qd 0x0000007f 0x0000007f 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s8 q5, q4, #4 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr: 08000000 vqshl.s8 q5, q4, #3 :: Qd 0x0000007f 0x0000007f 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr: 08000000 +vqshl.s8 q5, q4, #3 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr: 08000000 vqshl.s8 q5, q4, #2 :: Qd 0x00000040 0x00000040 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr: 00000000 vqshl.s8 q5, q4, #1 :: Qd 0x00000020 0x00000020 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.s8 q5, q4, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr: 00000000 vqshl.s8 q5, q4, #7 :: Qd 0x80808080 0x80808080 0x80808080 0x80808080 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s8 q5, q4, #7 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr: 08000000 vqshl.s8 q5, q4, #5 :: Qd 0xe0e0e0e0 0xe0e0e0e0 0xe0e0e0e0 0xe0e0e0e0 Qm (i32)0xffffffff fpscr: 00000000 +vqshl.s8 q5, q4, #5 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr: 08000000 vqshl.s8 q5, q4, #2 :: Qd 0x80000008 0x80000008 0x80000008 0x80000008 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.s8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr: 00000000 vqshl.u64 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.u64 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.u64 q15, q14, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr: 08000000 +vqshl.u64 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u64 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.u64 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u64 q5, q4, #59 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u64 q5, q4, #59 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u64 q5, q4, #58 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u64 q5, q4, #58 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u64 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u64 q5, q4, #17 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u64 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.u64 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.u32 q10, q11, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.u32 q10, q11, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.u32 q15, q14, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr: 08000000 +vqshl.u32 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u32 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.u32 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u32 q5, q4, #28 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u32 q5, q4, #28 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u32 q5, q4, #27 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u32 q5, q4, #27 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u32 q5, q4, #26 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u32 q5, q4, #26 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u32 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u32 q5, q4, #17 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u32 q5, q4, #29 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u32 q5, q4, #29 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u32 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.u32 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.u16 q9, q8, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.u16 q9, q8, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.u16 q15, q14, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr: 08000000 +vqshl.u16 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u16 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.u16 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u16 q9, q8, #15 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u16 q9, q8, #15 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u16 q5, q4, #12 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u16 q5, q4, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u16 q5, q4, #11 :: Qd 0x00008000 0x00008000 0x00008000 0x00008000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u16 q5, q4, #11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u16 q5, q4, #10 :: Qd 0x00004000 0x00004000 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u16 q5, q4, #10 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u16 q5, q4, #4 :: Qd 0x00000100 0x00000100 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u16 q5, q4, #4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u16 q5, q4, #15 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u16 q5, q4, #15 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u16 q5, q4, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u16 q5, q4, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u16 q5, q4, #7 :: Qd 0xffff0100 0xffff0100 0xffff0100 0xffff0100 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.u16 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshl.u8 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshl.u8 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshl.u8 q15, q14, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr: 08000000 +vqshl.u8 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u8 q5, q4, #0 :: Qd 0xffffff81 0xffffff81 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr: 00000000 +vqshl.u8 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshl.u8 q5, q4, #7 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u8 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u8 q5, q4, #4 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr: 08000000 +vqshl.u8 q5, q4, #4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshl.u8 q5, q4, #3 :: Qd 0x00000080 0x00000080 0x00000080 0x00000080 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u8 q5, q4, #3 :: Qd 0xa8e8c8e8 0xa0e0f8e0 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x00000010 fpscr: 00000000 vqshl.u8 q5, q4, #2 :: Qd 0x00000040 0x00000040 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr: 00000000 vqshl.u8 q5, q4, #1 :: Qd 0x00000020 0x00000020 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u8 q5, q4, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr: 00000000 +vqshl.u8 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u8 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u8 q5, q4, #5 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 +vqshl.u8 q5, q4, #5 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshl.u8 q5, q4, #2 :: Qd 0xff000008 0xff000008 0xff000008 0xff000008 Qm (i32)0x80000002 fpscr: 08000000 +vqshl.u8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr: 00000000 vqshlu.s64 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshlu.s64 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshlu.s64 q15, q14, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s64 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s64 q5, q4, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s64 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 +vqshlu.s64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #59 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s64 q5, q4, #59 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s64 q5, q4, #58 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #58 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s64 q5, q4, #17 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s64 q5, q4, #63 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s64 q5, q4, #63 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s64 q5, q4, #60 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s64 q5, q4, #60 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s64 q5, q4, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000002 fpscr: 08000000 +vqshlu.s64 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshlu.s32 q10, q11, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshlu.s32 q10, q11, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshlu.s32 q15, q14, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s32 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s32 q5, q4, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s32 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 +vqshlu.s32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #28 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s32 q5, q4, #28 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #27 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s32 q5, q4, #27 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #26 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s32 q5, q4, #26 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #17 :: Qd 0x00200000 0x00200000 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s32 q5, q4, #17 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s32 q5, q4, #31 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s32 q5, q4, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s32 q5, q4, #29 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s32 q5, q4, #29 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s32 q5, q4, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000002 fpscr: 08000000 +vqshlu.s32 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshlu.s16 q9, q8, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshlu.s16 q9, q8, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshlu.s16 q15, q14, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s16 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s16 q5, q4, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s16 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s16 q9, q8, #15 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s16 q9, q8, #15 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s16 q5, q4, #12 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s16 q5, q4, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s16 q5, q4, #11 :: Qd 0x00008000 0x00008000 0x00008000 0x00008000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s16 q5, q4, #11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s16 q5, q4, #10 :: Qd 0x00004000 0x00004000 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s16 q5, q4, #10 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s16 q5, q4, #4 :: Qd 0x00000100 0x00000100 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s16 q5, q4, #4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s16 q5, q4, #15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s16 q5, q4, #15 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s16 q5, q4, #12 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s16 q5, q4, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s16 q5, q4, #7 :: Qd 0x00000100 0x00000100 0x00000100 0x00000100 Qm (i32)0x80000002 fpscr: 08000000 +vqshlu.s16 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr: 08000000 vqshlu.s8 q0, q1, #1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr: 00000000 +vqshlu.s8 q0, q1, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr: 00000000 vqshlu.s8 q15, q14, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s8 q15, q14, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s8 q5, q4, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr: 08000000 +vqshlu.s8 q5, q4, #0 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr: 00000000 vqshlu.s8 q5, q4, #7 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s8 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s8 q5, q4, #4 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr: 08000000 +vqshlu.s8 q5, q4, #4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr: 08000000 vqshlu.s8 q5, q4, #3 :: Qd 0x00000080 0x00000080 0x00000080 0x00000080 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s8 q5, q4, #3 :: Qd 0xa8e8c8e8 0xa0e0f8e0 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x00000010 fpscr: 00000000 vqshlu.s8 q5, q4, #2 :: Qd 0x00000040 0x00000040 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr: 00000000 vqshlu.s8 q5, q4, #1 :: Qd 0x00000020 0x00000020 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr: 00000000 +vqshlu.s8 q5, q4, #1 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr: 00000000 vqshlu.s8 q5, q4, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s8 q5, q4, #7 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s8 q5, q4, #5 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr: 08000000 +vqshlu.s8 q5, q4, #5 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr: 08000000 vqshlu.s8 q5, q4, #2 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x80000002 fpscr: 08000000 +vqshlu.s8 q5, q4, #2 :: Qd 0x54746474 0x50707c70 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr: 00000000 ---- VQRSHL (register) ---- vqrshl.s64 q0, q1, q2 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 q0, q1, q2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 q0, q1, q2 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.s64 q3, q4, q5 :: Qd 0xffffff03 0xffffff02 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 q3, q4, q5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 q3, q4, q5 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.s64 q3, q4, q5 :: Qd 0xfffffff0 0x3ffffff0 0xfffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s64 q3, q4, q5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s64 q3, q4, q5 :: Qd 0x02a3a323 0xa28383e4 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.s64 q0, q1, q2 :: Qd 0x00040000 0x00040000 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqrshl.s64 q0, q1, q2 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 +vqrshl.s64 q0, q1, q2 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqrshl.s64 q13, q14, q15 :: Qd 0xffffffff 0xfffffc00 0xffffffff 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.s64 q13, q14, q15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.s64 q13, q14, q15 :: Qd 0x00000005 0x47464745 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqrshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.s64 q7, q8, q2 :: Qd 0x00000000 0x00000001 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 +vqrshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.s32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.s32 q2, q8, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.s32 q2, q8, q4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.s32 q2, q8, q4 :: Qd 0x0151d192 0x0141c1f2 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqrshl.s32 q12, q11, q13 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.s32 q12, q11, q13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.s32 q12, q11, q13 :: Qd 0x000a8e8d 0x000a0e10 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqrshl.s32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.s32 q0, q1, q2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.s32 q0, q1, q2 :: Qd 0x002a3a32 0x0028383e 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqrshl.s32 q9, q10, q11 :: Qd 0xc0000004 0xc0000004 0xc0000004 0xc0000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q9, q10, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q9, q10, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 q13, q3, q5 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.s32 q13, q3, q5 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 +vqrshl.s32 q13, q3, q5 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 vqrshl.s16 q11, q10, q2 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 q11, q10, q2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 q11, q10, q2 :: Qd 0x0a8f0000 0x0a0e0000 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.s16 q3, q14, q7 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s16 q3, q14, q7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s16 q3, q14, q7 :: Qd 0x0a8f0324 0x0a0e03e4 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.s16 q0, q11, q2 :: Qd 0xc0000080 0xc0000080 0xc0000080 0xc0000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q0, q11, q2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q0, q11, q2 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 q1, q2, q3 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 q1, q2, q3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 q1, q2, q3 :: Qd 0x0a8f0000 0x0a0e0000 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.s16 q3, q4, q5 :: Qd 0xd0000000 0xd0000000 0xd0000000 0xd0000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.s16 q3, q4, q5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.s16 q3, q4, q5 :: Qd 0x0a8f0001 0x0a0e0001 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqrshl.s16 q0, q15, q2 :: Qd 0x00007fff 0x00007fff 0x00007fff 0x00007fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s16 q0, q15, q2 :: Qd 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s16 q0, q15, q2 :: Qd 0x151d7fff 0x141c7fff 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqrshl.s8 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 q2, q7, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 q2, q7, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 q2, q7, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 q2, q7, q11 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 q2, q7, q11 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s16 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s16 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s32 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s32 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s8 q2, q7, q11 :: Qd 0xffffff80 0xffffff80 0xffffff80 0xffffff80 Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.s8 q2, q7, q11 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqrshl.s8 q13, q1, q2 :: Qd 0xffffff80 0xffffff80 0xffffff80 0xffffff80 Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s8 q13, q1, q2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s8 q13, q1, q2 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqrshl.s8 q3, q7, q5 :: Qd 0x80000058 0x80000058 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.s8 q3, q7, q5 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 +vqrshl.s8 q3, q7, q5 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 vqrshl.s8 q10, q11, q12 :: Qd 0x00010000 0x00010000 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqrshl.s8 q10, q11, q12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 +vqrshl.s8 q10, q11, q12 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqrshl.s8 q6, q7, q8 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.s8 q6, q7, q8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.s8 q6, q7, q8 :: Qd 0x151d1974 0x141c1f70 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqrshl.s8 q10, q11, q12 :: Qd 0x0000007f 0x0000007f 0x0000007f 0x0000007f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.s8 q10, q11, q12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.s8 q10, q11, q12 :: Qd 0x151d197f 0x141c1f7f 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 vqrshl.u64 q0, q1, q2 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.u64 q0, q1, q2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.u64 q0, q1, q2 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.u64 q3, q4, q5 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 08000000 +vqrshl.u64 q3, q4, q5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.u64 q3, q4, q5 :: Qd 0x2a3a323a 0x28383e38 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.u64 q3, q4, q5 :: Qd 0x1ffffff0 0x3ffffff0 0x1ffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u64 q3, q4, q5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u64 q3, q4, q5 :: Qd 0x02a3a323 0xa28383e4 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.u64 q0, q1, q2 :: Qd 0x00040000 0x00040000 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqrshl.u64 q0, q1, q2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 +vqrshl.u64 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqrshl.u64 q13, q14, q15 :: Qd 0x0000003f 0xfffffc00 0x0000003f 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.u64 q13, q14, q15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.u64 q13, q14, q15 :: Qd 0x00000005 0x47464745 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqrshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.u64 q7, q8, q2 :: Qd 0x00000000 0x00000001 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 +vqrshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.u32 q3, q4, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.u32 q2, q8, q4 :: Qd 0x0fffffff 0x0fffffff 0x0fffffff 0x0fffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.u32 q2, q8, q4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.u32 q2, q8, q4 :: Qd 0x0151d192 0x0141c1f2 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqrshl.u32 q12, q11, q13 :: Qd 0x00800000 0x00800000 0x00800000 0x00800000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.u32 q12, q11, q13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.u32 q12, q11, q13 :: Qd 0x000a8e8d 0x000a0e10 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqrshl.u32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.u32 q0, q1, q2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.u32 q0, q1, q2 :: Qd 0x002a3a32 0x0028383e 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqrshl.u32 q9, q10, q11 :: Qd 0x40000004 0x40000004 0x40000004 0x40000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q9, q10, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q9, q10, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 q13, q3, q5 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u32 q13, q3, q5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u32 q13, q3, q5 :: Qd 0xa8e8c8e8 0xa0e0f8e0 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 vqrshl.u16 q11, q10, q2 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 q11, q10, q2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 q11, q10, q2 :: Qd 0x0a8f0000 0x0a0e0000 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.u16 q3, q14, q7 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u16 q3, q14, q7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u16 q3, q14, q7 :: Qd 0x0a8f0324 0x0a0e03e4 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.u16 q0, q11, q2 :: Qd 0x40000080 0x40000080 0x40000080 0x40000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q0, q11, q2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q0, q11, q2 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 q1, q2, q3 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 q1, q2, q3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 q1, q2, q3 :: Qd 0x0a8f0000 0x0a0e0000 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.u16 q3, q4, q5 :: Qd 0x50000000 0x50000000 0x50000000 0x50000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.u16 q3, q4, q5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.u16 q3, q4, q5 :: Qd 0x0a8f0001 0x0a0e0001 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqrshl.u16 q0, q15, q2 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u16 q0, q15, q2 :: Qd 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u16 q0, q15, q2 :: Qd 0x151dffff 0x141cffff 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqrshl.u8 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqrshl.u8 q2, q7, q11 :: Qd 0x80808080 0x80808080 0x80808080 0x80808080 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 q2, q7, q11 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 q2, q7, q11 :: Qd 0x8080807f 0x8080807f 0x8080807f 0x8080807f Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x0b0f0d0f 0x0a0e100e 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 q2, q7, q11 :: Qd 0x80007fff 0x80007fff 0x80007fff 0x80007fff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 q2, q7, q11 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x0a8e8c8f 0x0a0e0f8e 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u8 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u16 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u16 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u32 q2, q7, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u32 q2, q7, q11 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u8 q13, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u8 q13, q1, q2 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u8 q13, q1, q2 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqrshl.u8 q3, q7, q5 :: Qd 0x80000058 0x80000058 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u8 q3, q7, q5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u8 q3, q7, q5 :: Qd 0x151d19e8 0x141c1fe0 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 vqrshl.u8 q10, q11, q12 :: Qd 0x00010000 0x00010000 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqrshl.u8 q10, q11, q12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 +vqrshl.u8 q10, q11, q12 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqrshl.u8 q6, q7, q8 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.u8 q6, q7, q8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.u8 q6, q7, q8 :: Qd 0x151d1974 0x141c1f70 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqrshl.u8 q10, q11, q12 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.u8 q10, q11, q12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.u8 q10, q11, q12 :: Qd 0x151d19ff 0x141c1fff 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 ---- VRSHL (register) ---- vrshl.s64 q0, q1, q2 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 vrshl.s64 q3, q4, q5 :: Qd 0xffffff03 0xffffff02 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 @@ -1020,127 +1493,242 @@ vmlsl.u16 q4, d5, d6[0] :: Qd 0x53553555 0x55359359 0x53553555 0x55359359 Qm (i vmlsl.u32 q7, d7, d1[1] :: Qd 0x15555553 0xd5555553 0x15555553 0xd5555553 Qm (i32)0x80000001 Qn (i32)0x80000002 ---- VRSHR ---- vrshr.s8 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vrshr.s8 q0, q1, #0 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xffffffff vrshr.s8 q0, q1, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff +vrshr.s8 q0, q1, #1 :: Qd 0x13171715 0x13151716 0x12161616 0x12181718 Qm (i32)0xffffffff vrshr.s16 q3, q4, #2 :: Qd 0x0000ffe1 0x0000ffe1 0x0000ffe1 0x0000ffe1 Qm (i32)0xffffff84 +vrshr.s16 q3, q4, #2 :: Qd 0x098b0b4b 0x094b0b8b 0x090b0acb 0x08cc0b8c Qm (i32)0xffffff84 +vrshr.s32 q2, q5, #31 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.s32 q2, q5, #31 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.s8 q6, q7, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000ffff +vrshr.s8 q6, q7, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000ffff vrshr.s16 q8, q9, #12 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xfffffff6 +vrshr.s16 q8, q9, #12 :: Qd 0x00020003 0x00020003 0x00020003 0x00020003 Qm (i32)0xfffffff6 vrshr.s32 q10, q11, #5 :: Qd 0x00000140 0x00000140 0x00000140 0x00000140 Qm (i32)0x000027fa +vrshr.s32 q10, q11, #5 :: Qd 0x01316969 0x01295171 0x01216159 0x01197971 Qm (i32)0x000027fa vrshr.u8 q12, q13, #1 :: Qd 0x80808080 0x80808080 0x80808080 0x80808080 Qm (i32)0xffffffff +vrshr.u8 q12, q13, #1 :: Qd 0x13171715 0x13151716 0x12161616 0x12181718 Qm (i32)0xffffffff vrshr.u16 q14, q15, #11 :: Qd 0x00200020 0x00200020 0x00200020 0x00200020 Qm (i32)0xffffffff +vrshr.u16 q14, q15, #11 :: Qd 0x00050006 0x00050006 0x00050005 0x00040006 Qm (i32)0xffffffff vrshr.u32 q10, q11, #9 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x000003e8 +vrshr.u32 q10, q11, #9 :: Qd 0x00131697 0x00129517 0x00121616 0x00119797 Qm (i32)0x000003e8 vrshr.u8 q7, q13, #7 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i32)0xffffffff +vrshr.u8 q7, q13, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.u16 q8, q1, #5 :: Qd 0x0000055e 0x0000055e 0x0000055e 0x0000055e Qm (i32)0x0000abcf +vrshr.u16 q8, q1, #5 :: Qd 0x01310169 0x01290171 0x01210159 0x01190171 Qm (i32)0x0000abcf vrshr.u32 q12, q3, #15 :: Qd 0x00020000 0x00020000 0x00020000 0x00020000 Qm (i32)0xfffffe50 +vrshr.u32 q12, q3, #15 :: Qd 0x00004c5a 0x00004a54 0x00004858 0x0000465e Qm (i32)0xfffffe50 vrshr.u64 q0, q1, #42 :: Qd 0x00000000 0x00400000 0x00000000 0x00400000 Qm (i32)0xffffffff +vrshr.u64 q0, q1, #42 :: Qd 0x00000000 0x00098b4b 0x00000000 0x00090b0b Qm (i32)0xffffffff vrshr.s64 q6, q7, #12 :: Qd 0x00000000 0xfac00001 0x00000000 0xfac00001 Qm (i32)0x00000fac +vrshr.s64 q6, q7, #12 :: Qd 0x000262d2 0xd2a252a3 0x000242c2 0xb2b232f3 Qm (i32)0x00000fac vrshr.u64 q8, q4, #9 :: Qd 0x0000001a 0x7c00001a 0x0000001a 0x7c00001a Qm (i32)0x000034f8 +vrshr.u64 q8, q4, #9 :: Qd 0x00131696 0x95129517 0x00121615 0x95919797 Qm (i32)0x000034f8 vrshr.s64 q9, q12, #11 :: Qd 0x00000030 0x32c00030 0x00000030 0x32c00030 Qm (i32)0x00018196 +vrshr.s64 q9, q12, #11 :: Qd 0x0004c5a5 0xa544a546 0x00048585 0x656465e6 Qm (i32)0x00018196 ---- VRSRA ---- vrsra.s8 q0, q1, #1 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0xffffffff +vrsra.s8 q0, q1, #1 :: Qd 0x28343032 0x27313632 0x25313031 0x24373537 Qm (i32)0xffffffff vrsra.s16 q3, q4, #2 :: Qd 0x55555536 0x55555536 0x55555536 0x55555536 Qm (i32)0xffffff84 +vrsra.s16 q3, q4, #2 :: Qd 0x1ea82468 0x1d672aa7 0x1c2624e6 0x1aeb29ab Qm (i32)0xffffff84 vrsra.s32 q2, q5, #31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0xffffffff +vrsra.s32 q2, q5, #31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vrsra.s8 q6, q7, #7 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0x0000ffff +vrsra.s8 q6, q7, #7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x0000ffff vrsra.s16 q8, q9, #12 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0xfffffff6 +vrsra.s16 q8, q9, #12 :: Qd 0x151f1920 0x141e1f1f 0x131d1a1e 0x12211e22 Qm (i32)0xfffffff6 vrsra.s32 q10, q11, #5 :: Qd 0x55555695 0x55555695 0x55555695 0x55555695 Qm (i32)0x000027fa +vrsra.s32 q10, q11, #5 :: Qd 0x164e8286 0x1545708d 0x143c7b74 0x13389790 Qm (i32)0x000027fa vrsra.u8 q12, q13, #1 :: Qd 0xd5d5d5d5 0xd5d5d5d5 0xd5d5d5d5 0xd5d5d5d5 Qm (i32)0xffffffff +vrsra.u8 q12, q13, #1 :: Qd 0x28343032 0x27313632 0x25313031 0x24373537 Qm (i32)0xffffffff vrsra.u16 q14, q15, #11 :: Qd 0x55755575 0x55755575 0x55755575 0x55755575 Qm (i32)0xffffffff +vrsra.u16 q14, q15, #11 :: Qd 0x15221923 0x14211f22 0x13201a20 0x12231e25 Qm (i32)0xffffffff vrsra.u32 q10, q11, #9 :: Qd 0x55555557 0x55555557 0x55555557 0x55555557 Qm (i32)0x000003e8 +vrsra.u32 q10, q11, #9 :: Qd 0x15302fb4 0x142eb433 0x132d3031 0x1230b5b6 Qm (i32)0x000003e8 vrsra.u8 q7, q13, #7 :: Qd 0x57575757 0x57575757 0x57575757 0x57575757 Qm (i32)0xffffffff +vrsra.u8 q7, q13, #7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vrsra.u16 q8, q1, #5 :: Qd 0x55555ab3 0x55555ab3 0x55555ab3 0x55555ab3 Qm (i32)0x0000abcf +vrsra.u16 q8, q1, #5 :: Qd 0x164e1a86 0x1545208d 0x143c1b74 0x13381f90 Qm (i32)0x0000abcf vrsra.u32 q12, q3, #15 :: Qd 0x55575555 0x55575555 0x55575555 0x55575555 Qm (i32)0xfffffe50 +vrsra.u32 q12, q3, #15 :: Qd 0x151d6577 0x141c6970 0x131b6273 0x121f647d Qm (i32)0xfffffe50 vrsra.u64 q0, q1, #42 :: Qd 0x55555555 0x55955555 0x55555555 0x55955555 Qm (i32)0xffffffff +vrsra.u64 q0, q1, #42 :: Qd 0x151d191d 0x1425aa67 0x131b1a1b 0x1228292a Qm (i32)0xffffffff vrsra.s64 q6, q7, #12 :: Qd 0x55555556 0x50155556 0x55555556 0x50155556 Qm (i32)0x00000fac +vrsra.s64 q6, q7, #12 :: Qd 0x151f7bef 0xe6be71bf 0x131d5cdd 0xc4d15112 Qm (i32)0x00000fac vrsra.u64 q8, q4, #9 :: Qd 0x5555556f 0xd155556f 0x5555556f 0xd155556f Qm (i32)0x000034f8 +vrsra.u64 q8, q4, #9 :: Qd 0x15302fb3 0xa92eb433 0x132d3030 0xa7b0b5b6 Qm (i32)0x000034f8 vrsra.s64 q9, q12, #11 :: Qd 0x55555585 0x88155585 0x55555585 0x88155585 Qm (i32)0x00018196 +vrsra.s64 q9, q12, #11 :: Qd 0x1521dec2 0xb960c462 0x131f9fa0 0x77838405 Qm (i32)0x00018196 ---- VSHR ---- vshr.s8 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s8 q0, q1, #0 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xffffffff vshr.s8 q0, q1, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s8 q0, q1, #1 :: Qd 0x13161615 0x12151715 0x12161515 0x11171717 Qm (i32)0xffffffff vshr.s16 q3, q4, #2 :: Qd 0xffffffe1 0xffffffe1 0xffffffe1 0xffffffe1 Qm (i32)0xffffff84 +vshr.s16 q3, q4, #2 :: Qd 0x098b0b4a 0x094a0b8a 0x090b0aca 0x08cb0b8b Qm (i32)0xffffff84 vshr.s32 q2, q5, #31 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s32 q2, q5, #31 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff vshr.s8 q6, q7, #7 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x0000ffff +vshr.s8 q6, q7, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000ffff vshr.s16 q8, q9, #12 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xfffffff6 +vshr.s16 q8, q9, #12 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i32)0xfffffff6 vshr.s32 q10, q11, #5 :: Qd 0x0000013f 0x0000013f 0x0000013f 0x0000013f Qm (i32)0x000027fa +vshr.s32 q10, q11, #5 :: Qd 0x01316969 0x01295171 0x01216159 0x01197971 Qm (i32)0x000027fa vshr.u8 q12, q13, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff +vshr.u8 q12, q13, #1 :: Qd 0x13161615 0x12151715 0x12161515 0x11171717 Qm (i32)0xffffffff vshr.u16 q14, q15, #11 :: Qd 0x001f001f 0x001f001f 0x001f001f 0x001f001f Qm (i32)0xffffffff +vshr.u16 q14, q15, #11 :: Qd 0x00040005 0x00040005 0x00040005 0x00040005 Qm (i32)0xffffffff vshr.u32 q10, q11, #9 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x000003e8 +vshr.u32 q10, q11, #9 :: Qd 0x00131696 0x00129517 0x00121615 0x00119797 Qm (i32)0x000003e8 vshr.u8 q7, q13, #7 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i32)0xffffffff +vshr.u8 q7, q13, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xffffffff vshr.u16 q8, q1, #5 :: Qd 0x0000055e 0x0000055e 0x0000055e 0x0000055e Qm (i32)0x0000abcf +vshr.u16 q8, q1, #5 :: Qd 0x01310169 0x01290171 0x01210159 0x01190171 Qm (i32)0x0000abcf vshr.u32 q12, q3, #15 :: Qd 0x0001ffff 0x0001ffff 0x0001ffff 0x0001ffff Qm (i32)0xfffffe50 +vshr.u32 q12, q3, #15 :: Qd 0x00004c5a 0x00004a54 0x00004858 0x0000465e Qm (i32)0xfffffe50 vshr.u64 q0, q1, #42 :: Qd 0x00000000 0x003fffff 0x00000000 0x003fffff Qm (i32)0xffffffff +vshr.u64 q0, q1, #42 :: Qd 0x00000000 0x00098b4b 0x00000000 0x00090b0a Qm (i32)0xffffffff vshr.s64 q6, q7, #12 :: Qd 0x00000000 0xfac00000 0x00000000 0xfac00000 Qm (i32)0x00000fac +vshr.s64 q6, q7, #12 :: Qd 0x000262d2 0xd2a252a2 0x000242c2 0xb2b232f2 Qm (i32)0x00000fac vshr.u64 q8, q4, #9 :: Qd 0x0000001a 0x7c00001a 0x0000001a 0x7c00001a Qm (i32)0x000034f8 +vshr.u64 q8, q4, #9 :: Qd 0x00131696 0x95129517 0x00121615 0x95919797 Qm (i32)0x000034f8 vshr.s64 q9, q12, #11 :: Qd 0x00000030 0x32c00030 0x00000030 0x32c00030 Qm (i32)0x00018196 +vshr.s64 q9, q12, #11 :: Qd 0x0004c5a5 0xa544a545 0x00048585 0x656465e5 Qm (i32)0x00018196 ---- VSRA ---- vsra.s8 q0, q1, #1 :: Qd 0x54545454 0x54545454 0x54545454 0x54545454 Qm (i32)0xffffffff +vsra.s8 q0, q1, #1 :: Qd 0x28332f32 0x26313631 0x25312f30 0x23363536 Qm (i32)0xffffffff vsra.s16 q3, q4, #2 :: Qd 0x55545536 0x55545536 0x55545536 0x55545536 Qm (i32)0xffffff84 +vsra.s16 q3, q4, #2 :: Qd 0x1ea82467 0x1d662aa6 0x1c2624e5 0x1aea29aa Qm (i32)0xffffff84 vsra.s32 q2, q5, #31 :: Qd 0x55555554 0x55555554 0x55555554 0x55555554 Qm (i32)0xffffffff +vsra.s32 q2, q5, #31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vsra.s8 q6, q7, #7 :: Qd 0x55555454 0x55555454 0x55555454 0x55555454 Qm (i32)0x0000ffff +vsra.s8 q6, q7, #7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x0000ffff vsra.s16 q8, q9, #12 :: Qd 0x55545554 0x55545554 0x55545554 0x55545554 Qm (i32)0xfffffff6 +vsra.s16 q8, q9, #12 :: Qd 0x151f191f 0x141e1f1e 0x131d1a1d 0x12211e21 Qm (i32)0xfffffff6 vsra.s32 q10, q11, #5 :: Qd 0x55555694 0x55555694 0x55555694 0x55555694 Qm (i32)0x000027fa +vsra.s32 q10, q11, #5 :: Qd 0x164e8286 0x1545708d 0x143c7b74 0x13389790 Qm (i32)0x000027fa vsra.u8 q12, q13, #1 :: Qd 0xd4d4d4d4 0xd4d4d4d4 0xd4d4d4d4 0xd4d4d4d4 Qm (i32)0xffffffff +vsra.u8 q12, q13, #1 :: Qd 0x28332f32 0x26313631 0x25312f30 0x23363536 Qm (i32)0xffffffff vsra.u16 q14, q15, #11 :: Qd 0x55745574 0x55745574 0x55745574 0x55745574 Qm (i32)0xffffffff +vsra.u16 q14, q15, #11 :: Qd 0x15211922 0x14201f21 0x131f1a20 0x12231e24 Qm (i32)0xffffffff vsra.u32 q10, q11, #9 :: Qd 0x55555556 0x55555556 0x55555556 0x55555556 Qm (i32)0x000003e8 +vsra.u32 q10, q11, #9 :: Qd 0x15302fb3 0x142eb433 0x132d3030 0x1230b5b6 Qm (i32)0x000003e8 vsra.u8 q7, q13, #7 :: Qd 0x56565656 0x56565656 0x56565656 0x56565656 Qm (i32)0xffffffff +vsra.u8 q7, q13, #7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vsra.u16 q8, q1, #5 :: Qd 0x55555ab3 0x55555ab3 0x55555ab3 0x55555ab3 Qm (i32)0x0000abcf +vsra.u16 q8, q1, #5 :: Qd 0x164e1a86 0x1545208d 0x143c1b74 0x13381f90 Qm (i32)0x0000abcf vsra.u32 q12, q3, #15 :: Qd 0x55575554 0x55575554 0x55575554 0x55575554 Qm (i32)0xfffffe50 +vsra.u32 q12, q3, #15 :: Qd 0x151d6577 0x141c6970 0x131b6273 0x121f647d Qm (i32)0xfffffe50 vsra.u64 q0, q1, #42 :: Qd 0x55555555 0x55955554 0x55555555 0x55955554 Qm (i32)0xffffffff +vsra.u64 q0, q1, #42 :: Qd 0x151d191d 0x1425aa67 0x131b1a1b 0x12282929 Qm (i32)0xffffffff vsra.s64 q6, q7, #12 :: Qd 0x55555556 0x50155555 0x55555556 0x50155555 Qm (i32)0x00000fac +vsra.s64 q6, q7, #12 :: Qd 0x151f7bef 0xe6be71be 0x131d5cdd 0xc4d15111 Qm (i32)0x00000fac vsra.u64 q8, q4, #9 :: Qd 0x5555556f 0xd155556f 0x5555556f 0xd155556f Qm (i32)0x000034f8 +vsra.u64 q8, q4, #9 :: Qd 0x15302fb3 0xa92eb433 0x132d3030 0xa7b0b5b6 Qm (i32)0x000034f8 vsra.s64 q9, q12, #11 :: Qd 0x55555585 0x88155585 0x55555585 0x88155585 Qm (i32)0x00018196 +vsra.s64 q9, q12, #11 :: Qd 0x1521dec2 0xb960c461 0x131f9fa0 0x77838404 Qm (i32)0x00018196 ---- VSRI ---- vsri.16 q0, q1, #1 :: Qd 0x7fff7fff 0x7fff7fff 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff +vsri.16 q0, q1, #1 :: Qd 0x13161695 0x12951715 0x12161595 0x11971717 Qm (i32)0xffffffff vsri.16 q3, q4, #2 :: Qd 0x7fff7fe1 0x7fff7fe1 0x7fff7fe1 0x7fff7fe1 Qm (i32)0xffffff84 +vsri.16 q3, q4, #2 :: Qd 0x098b0b4a 0x094a0b8a 0x090b0aca 0x08cb0b8b Qm (i32)0xffffff84 vsri.32 q2, q5, #31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0xffffffff +vsri.32 q2, q5, #31 :: Qd 0x151d191c 0x141c1f1c 0x131b1a1a 0x121f1e1e Qm (i32)0xffffffff vsri.8 q6, q7, #7 :: Qd 0x54545555 0x54545555 0x54545555 0x54545555 Qm (i32)0x0000ffff +vsri.8 q6, q7, #7 :: Qd 0x141c181c 0x141c1e1c 0x121a1a1a 0x121e1e1e Qm (i32)0x0000ffff vsri.16 q8, q9, #12 :: Qd 0x555f555f 0x555f555f 0x555f555f 0x555f555f Qm (i32)0xfffffff6 +vsri.16 q8, q9, #12 :: Qd 0x15121912 0x14121f12 0x13121a12 0x12121e12 Qm (i32)0xfffffff6 vsri.32 q10, q11, #5 :: Qd 0x5000013f 0x5000013f 0x5000013f 0x5000013f Qm (i32)0x000027fa +vsri.32 q10, q11, #5 :: Qd 0x11316969 0x11295171 0x11216159 0x11197971 Qm (i32)0x000027fa vsri.8 q12, q13, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff +vsri.8 q12, q13, #1 :: Qd 0x13161615 0x12151715 0x12161515 0x11171717 Qm (i32)0xffffffff vsri.16 q14, q15, #11 :: Qd 0x555f555f 0x555f555f 0x555f555f 0x555f555f Qm (i32)0xffffffff +vsri.16 q14, q15, #11 :: Qd 0x15041905 0x14041f05 0x13041a05 0x12041e05 Qm (i32)0xffffffff vsri.32 q10, q11, #9 :: Qd 0x55000001 0x55000001 0x55000001 0x55000001 Qm (i32)0x000003e8 +vsri.32 q10, q11, #9 :: Qd 0x15131696 0x14129517 0x13121615 0x12119797 Qm (i32)0x000003e8 vsri.8 q7, q13, #7 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0xffffffff +vsri.8 q7, q13, #7 :: Qd 0x141c181c 0x141c1e1c 0x121a1a1a 0x121e1e1e Qm (i32)0xffffffff vsri.16 q8, q1, #5 :: Qd 0x5000555e 0x5000555e 0x5000555e 0x5000555e Qm (i32)0x0000abcf +vsri.16 q8, q1, #5 :: Qd 0x11311969 0x11291971 0x11211959 0x11191971 Qm (i32)0x0000abcf vsri.32 q12, q3, #15 :: Qd 0x5555ffff 0x5555ffff 0x5555ffff 0x5555ffff Qm (i32)0xfffffe50 +vsri.32 q12, q3, #15 :: Qd 0x151c4c5a 0x141c4a54 0x131a4858 0x121e465e Qm (i32)0xfffffe50 vsri.64 q0, q1, #42 :: Qd 0x55555555 0x557fffff 0x55555555 0x557fffff Qm (i32)0xffffffff +vsri.64 q0, q1, #42 :: Qd 0x151d191d 0x14098b4b 0x131b1a1b 0x12090b0a Qm (i32)0xffffffff vsri.64 q6, q7, #12 :: Qd 0x55500000 0xfac00000 0x55500000 0xfac00000 Qm (i32)0x00000fac +vsri.64 q6, q7, #12 :: Qd 0x151262d2 0xd2a252a2 0x131242c2 0xb2b232f2 Qm (i32)0x00000fac vsri.64 q8, q4, #9 :: Qd 0x5500001a 0x7c00001a 0x5500001a 0x7c00001a Qm (i32)0x000034f8 +vsri.64 q8, q4, #9 :: Qd 0x15131696 0x95129517 0x13121615 0x95919797 Qm (i32)0x000034f8 vsri.64 q9, q12, #11 :: Qd 0x55400030 0x32c00030 0x55400030 0x32c00030 Qm (i32)0x00018196 +vsri.64 q9, q12, #11 :: Qd 0x1504c5a5 0xa544a545 0x13048585 0x656465e5 Qm (i32)0x00018196 ---- VMOVL ---- vmovl.u32 q0, d2 :: Qd 0x00000000 0x00000042 0x00000000 0x00000042 Qm (i32)0x00000042 +vmovl.u32 q0, d2 :: Qd 0x00000000 0x242c2b2b 0x00000000 0x232f2e2f Qm (i32)0x00000042 vmovl.u16 q15, d2 :: Qd 0x00000000 0x00000042 0x00000000 0x00000042 Qm (i32)0x00000042 +vmovl.u16 q15, d2 :: Qd 0x0000242c 0x00002b2b 0x0000232f 0x00002e2f Qm (i32)0x00000042 vmovl.u8 q3, d31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0x00000042 +vmovl.u8 q3, d31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x00000042 vmovl.s32 q0, d2 :: Qd 0x00000000 0x00000042 0x00000000 0x00000042 Qm (i32)0x00000042 +vmovl.s32 q0, d2 :: Qd 0x00000000 0x242c2b2b 0x00000000 0x232f2e2f Qm (i32)0x00000042 vmovl.s16 q15, d2 :: Qd 0x00000000 0x00000042 0x00000000 0x00000042 Qm (i32)0x00000042 +vmovl.s16 q15, d2 :: Qd 0x0000242c 0x00002b2b 0x0000232f 0x00002e2f Qm (i32)0x00000042 vmovl.s8 q3, d31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i32)0x00000042 +vmovl.s8 q3, d31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x00000042 vmovl.u32 q0, d2 :: Qd 0x00000000 0xedededed 0x00000000 0xedededed Qm (i8)0x000000ed +vmovl.u32 q0, d2 :: Qd 0x00000000 0x242c2b2b 0x00000000 0x232f2e2f Qm (i8)0x000000ed vmovl.u16 q15, d2 :: Qd 0x0000eded 0x0000eded 0x0000eded 0x0000eded Qm (i8)0x000000ed +vmovl.u16 q15, d2 :: Qd 0x0000242c 0x00002b2b 0x0000232f 0x00002e2f Qm (i8)0x000000ed vmovl.u8 q3, d31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i8)0x000000ed +vmovl.u8 q3, d31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i8)0x000000ed vmovl.s32 q0, d2 :: Qd 0xffffffff 0xedededed 0xffffffff 0xedededed Qm (i8)0x000000ed +vmovl.s32 q0, d2 :: Qd 0x00000000 0x242c2b2b 0x00000000 0x232f2e2f Qm (i8)0x000000ed vmovl.s16 q15, d2 :: Qd 0xffffeded 0xffffeded 0xffffeded 0xffffeded Qm (i8)0x000000ed +vmovl.s16 q15, d2 :: Qd 0x0000242c 0x00002b2b 0x0000232f 0x00002e2f Qm (i8)0x000000ed vmovl.s8 q3, d31 :: Qd 0x55555555 0x55555555 0x55555555 0x55555555 Qm (i8)0x000000ed +vmovl.s8 q3, d31 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i8)0x000000ed ---- VABS ---- vabs.s32 q0, q1 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000073 vabs.s16 q15, q4 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s16 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000073 vabs.s8 q8, q7 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s8 q8, q7 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000073 vabs.s32 q0, q1 :: Qd 0x000000fe 0x000000fe 0x000000fe 0x000000fe Qm (i32)0x000000fe +vabs.s32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x000000fe vabs.s16 q15, q4 :: Qd 0x000000ef 0x000000ef 0x000000ef 0x000000ef Qm (i32)0x000000ef +vabs.s16 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x000000ef vabs.s8 q8, q7 :: Qd 0x00000022 0x00000022 0x00000022 0x00000022 Qm (i32)0x000000de +vabs.s8 q8, q7 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x000000de vabs.s32 q0, q1 :: Qd 0x01f501f6 0x01f501f6 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a +vabs.s32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i16)0x0000fe0a vabs.s16 q15, q4 :: Qd 0x10f510f5 0x10f510f5 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b +vabs.s16 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i16)0x0000ef0b vabs.s8 q8, q7 :: Qd 0x220c220c 0x220c220c 0x220c220c 0x220c220c Qm (i16)0x0000de0c +vabs.s8 q8, q7 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i16)0x0000de0c ---- VQABS ---- vqabs.s32 q0, q1 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr: 00000000 +vqabs.s32 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr: 00000000 vqabs.s32 q0, q1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000000 fpscr: 08000000 +vqabs.s32 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr: 00000000 vqabs.s16 q0, q1 :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 fpscr: 08000000 +vqabs.s16 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr: 00000000 vqabs.s8 q0, q1 :: Qd 0x7f000000 0x7f000000 0x7f000000 0x7f000000 Qm (i32)0x80000000 fpscr: 08000000 +vqabs.s8 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr: 00000000 vqabs.s16 q15, q4 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr: 00000000 +vqabs.s16 q15, q4 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr: 00000000 vqabs.s8 q8, q7 :: Qd 0x00000073 0x00000073 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr: 00000000 +vqabs.s8 q8, q7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr: 00000000 vqabs.s32 q0, q1 :: Qd 0x000000fe 0x000000fe 0x000000fe 0x000000fe Qm (i32)0x000000fe fpscr: 00000000 +vqabs.s32 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x000000fe fpscr: 00000000 vqabs.s16 q15, q4 :: Qd 0x000000ef 0x000000ef 0x000000ef 0x000000ef Qm (i32)0x000000ef fpscr: 00000000 +vqabs.s16 q15, q4 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x000000ef fpscr: 00000000 vqabs.s8 q8, q7 :: Qd 0x00000022 0x00000022 0x00000022 0x00000022 Qm (i32)0x000000de fpscr: 00000000 +vqabs.s8 q8, q7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i32)0x000000de fpscr: 00000000 vqabs.s32 q0, q1 :: Qd 0x01f501f6 0x01f501f6 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a fpscr: 00000000 +vqabs.s32 q0, q1 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i16)0x0000fe0a fpscr: 00000000 vqabs.s16 q15, q4 :: Qd 0x10f510f5 0x10f510f5 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b fpscr: 00000000 +vqabs.s16 q15, q4 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i16)0x0000ef0b fpscr: 00000000 vqabs.s8 q8, q7 :: Qd 0x220c220c 0x220c220c 0x220c220c 0x220c220c Qm (i16)0x0000de0c fpscr: 00000000 +vqabs.s8 q8, q7 :: Qd 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f Qm (i16)0x0000de0c fpscr: 00000000 ---- VADDW ---- vaddw.s32 q0, q1, d4 :: Qd 0x00000073 0x12121285 0x00000073 0x12121285 Qm (i32)0x00000073 Qn (i8)0x00000012 vaddw.s16 q15, q14, d4 :: Qd 0x00001285 0x00001285 0x00001285 0x00001285 Qm (i32)0x00000073 Qn (i8)0x00000012 @@ -1219,401 +1807,904 @@ vsubl.u16 q0, d2, d4 :: Qd 0xffffb0b1 0xffffb0b1 0xffffb0b1 0xffffb0b1 Qm (i8)0 vsubl.u8 q0, d2, d4 :: Qd 0xffb1ffb1 0xffb1ffb1 0xffb1ffb1 0xffb1ffb1 Qm (i8)0x00000093 Qn (i8)0x000000e2 ---- VCEQ #0 ---- vceq.i32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 +vceq.i32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i16 q2, q1, #0 :: Qd 0xffff0000 0xffff0000 0xffff0000 0xffff0000 Qm (i32)0x00000021 +vceq.i16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i8 q10, q11, #0 :: Qd 0xffffff00 0xffffff00 0xffffff00 0xffffff00 Qm (i32)0x00000021 +vceq.i8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vceq.i16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vceq.i8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 ---- VCGT #0 ---- vcgt.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcgt.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s16 q2, q1, #0 :: Qd 0x0000ffff 0x0000ffff 0x0000ffff 0x0000ffff Qm (i32)0x00000021 +vcgt.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s8 q10, q11, #0 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x00000021 +vcgt.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ef +vcgt.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ef vcgt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ed +vcgt.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ed vcgt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ae +vcgt.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ae ---- VCGE #0 ---- vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ef +vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ef vcge.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ed +vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ed vcge.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ae +vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ae +vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x000000ef vcge.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x000000ef vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x000000ed +vcge.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x000000ed vcge.s8 q10, q11, #0 :: Qd 0xffffff00 0xffffff00 0xffffff00 0xffffff00 Qm (i32)0x000000ae +vcge.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x000000ae ---- VCLE #0 ---- vcle.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 +vcle.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s16 q2, q1, #0 :: Qd 0xffff0000 0xffff0000 0xffff0000 0xffff0000 Qm (i32)0x00000021 +vcle.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s8 q10, q11, #0 :: Qd 0xffffff00 0xffffff00 0xffffff00 0xffffff00 Qm (i32)0x00000021 +vcle.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ef +vcle.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ef vcle.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ed +vcle.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ed vcle.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ae +vcle.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ae ---- VCLT #0 ---- vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000021 vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ef +vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ef vclt.s16 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ed +vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ed vclt.s8 q10, q11, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i8)0x000000ae +vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ae vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000000ef +vclt.s32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000000ef +vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000000ed vclt.s16 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000000ed vclt.s8 q10, q11, #0 :: Qd 0x000000ff 0x000000ff 0x000000ff 0x000000ff Qm (i32)0x000000ae +vclt.s8 q10, q11, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000000ae ---- VCNT ---- vcnt.8 q0, q1 :: Qd 0x04050306 0x04050306 0x04050306 0x04050306 Qm (i32)0xac3d25eb +vcnt.8 q0, q1 :: Qd 0x03040403 0x03030404 0x02030404 0x03050405 Qm (i32)0xac3d25eb vcnt.8 q11, q14 :: Qd 0x04050306 0x04050306 0x04050306 0x04050306 Qm (i32)0xac3d25eb +vcnt.8 q11, q14 :: Qd 0x03040403 0x03030404 0x02030404 0x03050405 Qm (i32)0xac3d25eb vcnt.8 q6, q2 :: Qd 0x00020306 0x00020306 0x00020306 0x00020306 Qm (i32)0x000ad0eb +vcnt.8 q6, q2 :: Qd 0x03040403 0x03030404 0x02030404 0x03050405 Qm (i32)0x000ad0eb ---- VCLS ---- vcls.s8 q0, q1 :: Qd 0x07070701 0x07070701 0x07070701 0x07070701 Qm (i32)0x00000021 +vcls.s8 q0, q1 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i32)0x00000021 vcls.s8 q10, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s8 q10, q15 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i8)0x00000082 vcls.s16 q0, q1 :: Qd 0x000f0009 0x000f0009 0x000f0009 0x000f0009 Qm (i32)0x00000021 +vcls.s16 q0, q1 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i32)0x00000021 vcls.s16 q15, q10 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s16 q15, q10 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i8)0x00000082 vcls.s32 q6, q1 :: Qd 0x00000019 0x00000019 0x00000019 0x00000019 Qm (i32)0x00000021 +vcls.s32 q6, q1 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x00000021 vcls.s32 q10, q5 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s32 q10, q5 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i8)0x00000082 vcls.s8 q2, q4 :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 Qm (i8)0x000000ff +vcls.s8 q2, q4 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i8)0x000000ff vcls.s16 q2, q4 :: Qd 0x000f000f 0x000f000f 0x000f000f 0x000f000f Qm (i8)0x000000ff +vcls.s16 q2, q4 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i8)0x000000ff vcls.s32 q2, q4 :: Qd 0x0000001f 0x0000001f 0x0000001f 0x0000001f Qm (i8)0x000000ff +vcls.s32 q2, q4 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i8)0x000000ff vcls.s8 q2, q4 :: Qd 0x07020702 0x07020702 0x07020702 0x07020702 Qm (i16)0x0000ffef +vcls.s8 q2, q4 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i16)0x0000ffef vcls.s16 q2, q4 :: Qd 0x000a000a 0x000a000a 0x000a000a 0x000a000a Qm (i16)0x0000ffef +vcls.s16 q2, q4 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i16)0x0000ffef vcls.s32 q2, q4 :: Qd 0x0000000a 0x0000000a 0x0000000a 0x0000000a Qm (i16)0x0000ffef +vcls.s32 q2, q4 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i16)0x0000ffef vcls.s8 q2, q4 :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 Qm (i8)0x00000000 +vcls.s8 q2, q4 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i8)0x00000000 vcls.s16 q2, q4 :: Qd 0x000f000f 0x000f000f 0x000f000f 0x000f000f Qm (i8)0x00000000 +vcls.s16 q2, q4 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i8)0x00000000 vcls.s32 q2, q4 :: Qd 0x0000001f 0x0000001f 0x0000001f 0x0000001f Qm (i8)0x00000000 +vcls.s32 q2, q4 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i8)0x00000000 vcls.s8 q2, q4 :: Qd 0x07020702 0x07020702 0x07020702 0x07020702 Qm (i16)0x000000ef +vcls.s8 q2, q4 :: Qd 0x01010101 0x01010101 0x01010101 0x01010101 Qm (i16)0x000000ef vcls.s16 q2, q4 :: Qd 0x00070007 0x00070007 0x00070007 0x00070007 Qm (i16)0x000000ef +vcls.s16 q2, q4 :: Qd 0x00010001 0x00010001 0x00010001 0x00010001 Qm (i16)0x000000ef vcls.s32 q2, q4 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i16)0x000000ef +vcls.s32 q2, q4 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i16)0x000000ef ---- VCLZ ---- vclz.i8 q0, q1 :: Qd 0x08080802 0x08080802 0x08080802 0x08080802 Qm (i32)0x00000021 +vclz.i8 q0, q1 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i32)0x00000021 vclz.i8 q10, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i8 q10, q15 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i8)0x00000082 vclz.i16 q0, q1 :: Qd 0x0010000a 0x0010000a 0x0010000a 0x0010000a Qm (i32)0x00000021 +vclz.i16 q0, q1 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i32)0x00000021 vclz.i16 q15, q10 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i16 q15, q10 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i8)0x00000082 vclz.i32 q6, q1 :: Qd 0x0000001a 0x0000001a 0x0000001a 0x0000001a Qm (i32)0x00000021 +vclz.i32 q6, q1 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000021 vclz.i32 q10, q5 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i32 q10, q5 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i8)0x00000082 vclz.i8 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i8 q2, q4 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i8)0x000000ff vclz.i16 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i16 q2, q4 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i8)0x000000ff vclz.i32 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i32 q2, q4 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i8)0x000000ff vclz.i8 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i8 q2, q4 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i16)0x0000ffef vclz.i16 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i16 q2, q4 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i16)0x0000ffef vclz.i32 q2, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i32 q2, q4 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i16)0x0000ffef vclz.i8 q2, q4 :: Qd 0x08080808 0x08080808 0x08080808 0x08080808 Qm (i8)0x00000000 +vclz.i8 q2, q4 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i8)0x00000000 vclz.i16 q2, q4 :: Qd 0x00100010 0x00100010 0x00100010 0x00100010 Qm (i8)0x00000000 +vclz.i16 q2, q4 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i8)0x00000000 vclz.i32 q2, q4 :: Qd 0x00000020 0x00000020 0x00000020 0x00000020 Qm (i8)0x00000000 +vclz.i32 q2, q4 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i8)0x00000000 vclz.i8 q2, q4 :: Qd 0x08000800 0x08000800 0x08000800 0x08000800 Qm (i16)0x000000ef +vclz.i8 q2, q4 :: Qd 0x02020202 0x02020202 0x02020202 0x02020202 Qm (i16)0x000000ef vclz.i16 q2, q4 :: Qd 0x00080008 0x00080008 0x00080008 0x00080008 Qm (i16)0x000000ef +vclz.i16 q2, q4 :: Qd 0x00020002 0x00020002 0x00020002 0x00020002 Qm (i16)0x000000ef vclz.i32 q2, q4 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i16)0x000000ef +vclz.i32 q2, q4 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i16)0x000000ef ---- VSLI ---- vsli.16 q0, q1, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vsli.16 q0, q1, #1 :: Qd 0x4c5b5a55 0x4a545c56 0x48595657 0x465f5c5f Qm (i32)0xffffffff vsli.16 q3, q4, #2 :: Qd 0xfffdfe11 0xfffdfe11 0xfffdfe11 0xfffdfe11 Qm (i32)0xffffff84 +vsli.16 q3, q4, #2 :: Qd 0x98b5b4a9 0x94a8b8ac 0x90b3acaf 0x8cbfb8bf Qm (i32)0xffffff84 vsli.32 q2, q5, #31 :: Qd 0xd5555555 0xd5555555 0xd5555555 0xd5555555 Qm (i32)0xffffffff +vsli.32 q2, q5, #31 :: Qd 0x151d191d 0x941c1f1c 0x931b1a1b 0x921f1e1f Qm (i32)0xffffffff vsli.8 q6, q7, #7 :: Qd 0x5555d5d5 0x5555d5d5 0x5555d5d5 0x5555d5d5 Qm (i32)0x0000ffff +vsli.8 q6, q7, #7 :: Qd 0x159d991d 0x941c1f9c 0x131b9a9b 0x929f1e9f Qm (i32)0x0000ffff vsli.16 q8, q9, #12 :: Qd 0xf5556555 0xf5556555 0xf5556555 0xf5556555 Qm (i32)0xfffffff6 +vsli.16 q8, q9, #12 :: Qd 0xd51da91d 0xa41cbf1c 0xc31bba1b 0xf21ffe1f Qm (i32)0xfffffff6 vsli.32 q10, q11, #5 :: Qd 0x0004ff55 0x0004ff55 0x0004ff55 0x0004ff55 Qm (i32)0x000027fa +vsli.32 q10, q11, #5 :: Qd 0xc5a5a55d 0xa545c57c 0x8585657b 0x65e5c5ff Qm (i32)0x000027fa vsli.8 q12, q13, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vsli.8 q12, q13, #1 :: Qd 0x4d5b5b55 0x4a545d56 0x49595657 0x465f5c5f Qm (i32)0xffffffff vsli.16 q14, q15, #11 :: Qd 0xfd55fd55 0xfd55fd55 0xfd55fd55 0xfd55fd55 Qm (i32)0xffffffff +vsli.16 q14, q15, #11 :: Qd 0x6d1d511d 0x541c5f1c 0x631b5a1b 0x7a1f7e1f Qm (i32)0xffffffff vsli.32 q10, q11, #9 :: Qd 0x0007d155 0x0007d155 0x0007d155 0x0007d155 Qm (i32)0x000003e8 +vsli.32 q10, q11, #9 :: Qd 0x5a5a551d 0x545c571c 0x5856561b 0x5e5c5e1f Qm (i32)0x000003e8 vsli.8 q7, q13, #7 :: Qd 0xd5d5d5d5 0xd5d5d5d5 0xd5d5d5d5 0xd5d5d5d5 Qm (i32)0xffffffff +vsli.8 q7, q13, #7 :: Qd 0x159d991d 0x941c1f9c 0x131b9a9b 0x929f1e9f Qm (i32)0xffffffff vsli.16 q8, q1, #1 :: Qd 0x0001579f 0x0001579f 0x0001579f 0x0001579f Qm (i32)0x0000abcf +vsli.16 q8, q1, #1 :: Qd 0x4c5b5a55 0x4a545c56 0x48595657 0x465f5c5f Qm (i32)0x0000abcf vsli.32 q12, q3, #15 :: Qd 0xff285555 0xff285555 0xff285555 0xff285555 Qm (i32)0xfffffe50 +vsli.32 q12, q3, #15 :: Qd 0x9695191d 0x17159f1c 0x15959a1b 0x97179e1f Qm (i32)0xfffffe50 vsli.64 q0, q1, #42 :: Qd 0xfffffd55 0x55555555 0xfffffd55 0x55555555 Qm (i32)0xffffffff +vsli.64 q0, q1, #42 :: Qd 0xa8b8ad1d 0x141c1f1c 0xbcb8be1b 0x121f1e1f Qm (i32)0xffffffff vsli.64 q6, q7, #12 :: Qd 0x00fac000 0x00fac555 0x00fac000 0x00fac555 Qm (i32)0x00000fac +vsli.64 q6, q7, #12 :: Qd 0xd2d2a252 0xa2e2bf1c 0xc2b2b232 0xf2e2fe1f Qm (i32)0x00000fac vsli.64 q8, q4, #9 :: Qd 0x0069f000 0x0069f155 0x0069f000 0x0069f155 Qm (i32)0x000034f8 +vsli.64 q8, q4, #9 :: Qd 0x5a5a544a 0x545c571c 0x58565646 0x5e5c5e1f Qm (i32)0x000034f8 vsli.64 q9, q12, #11 :: Qd 0x0c0cb000 0x0c0cb555 0x0c0cb000 0x0c0cb555 Qm (i32)0x00018196 +vsli.64 q9, q12, #11 :: Qd 0x69695129 0x51715f1c 0x61595919 0x79717e1f Qm (i32)0x00018196 ---- VPADDL ---- vpaddl.u32 q0, q1 :: Qd 0x00000000 0x00000030 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.u32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x00000018 vpaddl.u32 q0, q1 :: Qd 0x00000000 0x00000118 0x00000000 0x00000118 Qm (i32)0x0000008c +vpaddl.u32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x0000008c vpaddl.u16 q0, q1 :: Qd 0x0000008c 0x0000008c 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.u16 q0, q1 :: Qd 0x00005357 0x00005355 0x00004f57 0x0000515e Qm (i32)0x0000008c vpaddl.u8 q0, q1 :: Qd 0x0000008c 0x0000008c 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.u8 q0, q1 :: Qd 0x00530057 0x004f0059 0x00500056 0x0052005d Qm (i32)0x0000008c vpaddl.u8 q0, q1 :: Qd 0x00800001 0x00800001 0x00800001 0x00800001 Qm (i32)0x80000001 +vpaddl.u8 q0, q1 :: Qd 0x00530057 0x004f0059 0x00500056 0x0052005d Qm (i32)0x80000001 vpaddl.u16 q0, q1 :: Qd 0x00008001 0x00008001 0x00008001 0x00008001 Qm (i32)0x80000001 +vpaddl.u16 q0, q1 :: Qd 0x00005357 0x00005355 0x00004f57 0x0000515e Qm (i32)0x80000001 vpaddl.u32 q0, q1 :: Qd 0x00000001 0x00000002 0x00000001 0x00000002 Qm (i32)0x80000001 +vpaddl.u32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x80000001 vpaddl.u32 q10, q11 :: Qd 0x00000000 0x00000030 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.u32 q10, q11 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x00000018 vpaddl.s32 q0, q1 :: Qd 0x00000000 0x00000030 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.s32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x00000018 vpaddl.s32 q0, q1 :: Qd 0x00000000 0x00000118 0x00000000 0x00000118 Qm (i32)0x0000008c +vpaddl.s32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x0000008c vpaddl.s16 q0, q1 :: Qd 0x0000008c 0x0000008c 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.s16 q0, q1 :: Qd 0x00005357 0x00005355 0x00004f57 0x0000515e Qm (i32)0x0000008c vpaddl.s8 q0, q1 :: Qd 0x0000ff8c 0x0000ff8c 0x0000ff8c 0x0000ff8c Qm (i32)0x0000008c +vpaddl.s8 q0, q1 :: Qd 0x00530057 0x004f0059 0x00500056 0x0052005d Qm (i32)0x0000008c vpaddl.s8 q0, q1 :: Qd 0xff800001 0xff800001 0xff800001 0xff800001 Qm (i32)0x80000001 +vpaddl.s8 q0, q1 :: Qd 0x00530057 0x004f0059 0x00500056 0x0052005d Qm (i32)0x80000001 vpaddl.s16 q0, q1 :: Qd 0xffff8001 0xffff8001 0xffff8001 0xffff8001 Qm (i32)0x80000001 +vpaddl.s16 q0, q1 :: Qd 0x00005357 0x00005355 0x00004f57 0x0000515e Qm (i32)0x80000001 vpaddl.s32 q0, q1 :: Qd 0xffffffff 0x00000002 0xffffffff 0x00000002 Qm (i32)0x80000001 +vpaddl.s32 q0, q1 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x80000001 vpaddl.s32 q10, q11 :: Qd 0x00000000 0x00000030 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.s32 q10, q11 :: Qd 0x00000000 0x4b575b55 0x00000000 0x475b595a Qm (i32)0x00000018 ---- VPADAL ---- vpadal.u32 q0, q1 :: Qd 0x55555555 0x55555585 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.u32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x00000018 vpadal.u32 q0, q1 :: Qd 0x55555555 0x5555566d 0x55555555 0x5555566d Qm (i32)0x0000008c +vpadal.u32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x0000008c vpadal.u16 q0, q1 :: Qd 0x555555e1 0x555555e1 0x555555e1 0x555555e1 Qm (i32)0x0000008c +vpadal.u16 q0, q1 :: Qd 0x151d6c74 0x141c7271 0x131b6972 0x121f6f7d Qm (i32)0x0000008c vpadal.u8 q0, q1 :: Qd 0x566d566d 0x566d566d 0x566d566d 0x566d566d Qm (i8)0x0000008c +vpadal.u8 q0, q1 :: Qd 0x15701974 0x146b1f75 0x136b1a71 0x12711e7c Qm (i8)0x0000008c vpadal.u8 q0, q1 :: Qd 0x55d55556 0x55d55556 0x55d55556 0x55d55556 Qm (i32)0x80000001 +vpadal.u8 q0, q1 :: Qd 0x15701974 0x146b1f75 0x136b1a71 0x12711e7c Qm (i32)0x80000001 vpadal.u16 q0, q1 :: Qd 0x5555d556 0x5555d556 0x5555d556 0x5555d556 Qm (i32)0x80000001 +vpadal.u16 q0, q1 :: Qd 0x151d6c74 0x141c7271 0x131b6972 0x121f6f7d Qm (i32)0x80000001 vpadal.u32 q0, q1 :: Qd 0x55555556 0x55555557 0x55555556 0x55555557 Qm (i32)0x80000001 +vpadal.u32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x80000001 vpadal.u32 q10, q11 :: Qd 0x55555555 0x55555585 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.u32 q10, q11 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x00000018 vpadal.s32 q0, q1 :: Qd 0x55555555 0x55555585 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.s32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x00000018 vpadal.s32 q0, q1 :: Qd 0x55555555 0x5555566d 0x55555555 0x5555566d Qm (i32)0x0000008c +vpadal.s32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x0000008c vpadal.s16 q0, q1 :: Qd 0x555555e1 0x555555e1 0x555555e1 0x555555e1 Qm (i32)0x0000008c +vpadal.s16 q0, q1 :: Qd 0x151d6c74 0x141c7271 0x131b6972 0x121f6f7d Qm (i32)0x0000008c vpadal.s8 q0, q1 :: Qd 0x546d546d 0x546d546d 0x546d546d 0x546d546d Qm (i8)0x0000008c +vpadal.s8 q0, q1 :: Qd 0x15701974 0x146b1f75 0x136b1a71 0x12711e7c Qm (i8)0x0000008c vpadal.s8 q0, q1 :: Qd 0x54d55556 0x54d55556 0x54d55556 0x54d55556 Qm (i32)0x80000001 +vpadal.s8 q0, q1 :: Qd 0x15701974 0x146b1f75 0x136b1a71 0x12711e7c Qm (i32)0x80000001 vpadal.s16 q0, q1 :: Qd 0x5554d556 0x5554d556 0x5554d556 0x5554d556 Qm (i32)0x80000001 +vpadal.s16 q0, q1 :: Qd 0x151d6c74 0x141c7271 0x131b6972 0x121f6f7d Qm (i32)0x80000001 vpadal.s32 q0, q1 :: Qd 0x55555554 0x55555557 0x55555554 0x55555557 Qm (i32)0x80000001 +vpadal.s32 q0, q1 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x80000001 vpadal.s32 q10, q11 :: Qd 0x55555555 0x55555585 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.s32 q10, q11 :: Qd 0x151d191d 0x5f737a71 0x131b1a1b 0x597a7779 Qm (i32)0x00000018 ---- VZIP ---- vzip.32 q0, q1 :: Qm 0x34343434 0x12121212 0x34343434 0x12121212 Qn 0x34343434 0x12121212 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.32 q0, q1 :: Qm 0x34343434 0x131b1a1b 0x34343434 0x121f1e1f Qn 0x34343434 0x151d191d 0x34343434 0x141c1f1c +Qm (i8)0x00000012 Qn (i8)0x00000034 vzip.16 q1, q0 :: Qm 0x12123434 0x12123434 0x12123434 0x12123434 Qn 0x12123434 0x12123434 0x12123434 0x12123434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.16 q1, q0 :: Qm 0x151d3434 0x191d3434 0x141c3434 0x1f1c3434 Qn 0x131b3434 0x1a1b3434 0x121f3434 0x1e1f3434 +Qm (i8)0x00000012 Qn (i8)0x00000034 vzip.8 q10, q11 :: Qm 0x34123412 0x34123412 0x34123412 0x34123412 Qn 0x34123412 0x34123412 0x34123412 0x34123412 Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.8 q10, q11 :: Qm 0x3413341b 0x341a341b 0x3412341f 0x341e341f Qn 0x3415341d 0x3419341d 0x3414341c 0x341f341c +Qm (i8)0x00000012 Qn (i8)0x00000034 vzip.32 q0, q1 :: Qm 0x0a0b0c0d 0x12345678 0x0a0b0c0d 0x12345678 Qn 0x0a0b0c0d 0x12345678 0x0a0b0c0d 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.32 q0, q1 :: Qm 0x0a0b0c0d 0x131b1a1b 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x151d191d 0x0a0b0c0d 0x141c1f1c +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vzip.16 q1, q0 :: Qm 0x12340a0b 0x56780c0d 0x12340a0b 0x56780c0d Qn 0x12340a0b 0x56780c0d 0x12340a0b 0x56780c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.16 q1, q0 :: Qm 0x151d0a0b 0x191d0c0d 0x141c0a0b 0x1f1c0c0d Qn 0x131b0a0b 0x1a1b0c0d 0x121f0a0b 0x1e1f0c0d +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vzip.8 q10, q11 :: Qm 0x0a120b34 0x0c560d78 0x0a120b34 0x0c560d78 Qn 0x0a120b34 0x0c560d78 0x0a120b34 0x0c560d78 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.8 q10, q11 :: Qm 0x0a130b1b 0x0c1a0d1b 0x0a120b1f 0x0c1e0d1f Qn 0x0a150b1d 0x0c190d1d 0x0a140b1c 0x0c1f0d1c +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VUZP ---- vuzp.32 q0, q1 :: Qm 0x34343434 0x34343434 0x12121212 0x12121212 Qn 0x34343434 0x34343434 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.32 q0, q1 :: Qm 0x34343434 0x34343434 0x141c1f1c 0x121f1e1f Qn 0x34343434 0x34343434 0x151d191d 0x131b1a1b +Qm (i8)0x00000012 Qn (i8)0x00000034 vuzp.16 q1, q0 :: Qm 0x12121212 0x12121212 0x34343434 0x34343434 Qn 0x12121212 0x12121212 0x34343434 0x34343434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.16 q1, q0 :: Qm 0x151d141c 0x131b121f 0x34343434 0x34343434 Qn 0x191d1f1c 0x1a1b1e1f 0x34343434 0x34343434 +Qm (i8)0x00000012 Qn (i8)0x00000034 vuzp.8 q10, q11 :: Qm 0x34343434 0x34343434 0x12121212 0x12121212 Qn 0x34343434 0x34343434 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.8 q10, q11 :: Qm 0x34343434 0x34343434 0x1d1d1c1c 0x1b1b1f1f Qn 0x34343434 0x34343434 0x1519141f 0x131a121e +Qm (i8)0x00000012 Qn (i8)0x00000034 vuzp.32 q0, q1 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x12345678 0x12345678 Qn 0x0a0b0c0d 0x0a0b0c0d 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.32 q0, q1 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x141c1f1c 0x121f1e1f Qn 0x0a0b0c0d 0x0a0b0c0d 0x151d191d 0x131b1a1b +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vuzp.16 q1, q0 :: Qm 0x12341234 0x12341234 0x0a0b0a0b 0x0a0b0a0b Qn 0x56785678 0x56785678 0x0c0d0c0d 0x0c0d0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.16 q1, q0 :: Qm 0x151d141c 0x131b121f 0x0a0b0a0b 0x0a0b0a0b Qn 0x191d1f1c 0x1a1b1e1f 0x0c0d0c0d 0x0c0d0c0d +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vuzp.8 q10, q11 :: Qm 0x0b0d0b0d 0x0b0d0b0d 0x34783478 0x34783478 Qn 0x0a0c0a0c 0x0a0c0a0c 0x12561256 0x12561256 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.8 q10, q11 :: Qm 0x0b0d0b0d 0x0b0d0b0d 0x1d1d1c1c 0x1b1b1f1f Qn 0x0a0c0a0c 0x0a0c0a0c 0x1519141f 0x131a121e +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VTRN ---- vtrn.32 q0, q1 :: Qm 0x34343434 0x12121212 0x34343434 0x12121212 Qn 0x34343434 0x12121212 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.32 q0, q1 :: Qm 0x34343434 0x141c1f1c 0x34343434 0x121f1e1f Qn 0x34343434 0x151d191d 0x34343434 0x131b1a1b +Qm (i8)0x00000012 Qn (i8)0x00000034 vtrn.16 q1, q0 :: Qm 0x12123434 0x12123434 0x12123434 0x12123434 Qn 0x12123434 0x12123434 0x12123434 0x12123434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.16 q1, q0 :: Qm 0x151d3434 0x141c3434 0x131b3434 0x121f3434 Qn 0x191d3434 0x1f1c3434 0x1a1b3434 0x1e1f3434 +Qm (i8)0x00000012 Qn (i8)0x00000034 vtrn.8 q10, q11 :: Qm 0x34123412 0x34123412 0x34123412 0x34123412 Qn 0x34123412 0x34123412 0x34123412 0x34123412 Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.8 q10, q11 :: Qm 0x341d341d 0x341c341c 0x341b341b 0x341f341f Qn 0x34153419 0x3414341f 0x3413341a 0x3412341e +Qm (i8)0x00000012 Qn (i8)0x00000034 vtrn.32 q0, q1 :: Qm 0x0a0b0c0d 0x12345678 0x0a0b0c0d 0x12345678 Qn 0x0a0b0c0d 0x12345678 0x0a0b0c0d 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.32 q0, q1 :: Qm 0x0a0b0c0d 0x141c1f1c 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x151d191d 0x0a0b0c0d 0x131b1a1b +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vtrn.16 q1, q0 :: Qm 0x12340a0b 0x12340a0b 0x12340a0b 0x12340a0b Qn 0x56780c0d 0x56780c0d 0x56780c0d 0x56780c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.16 q1, q0 :: Qm 0x151d0a0b 0x141c0a0b 0x131b0a0b 0x121f0a0b Qn 0x191d0c0d 0x1f1c0c0d 0x1a1b0c0d 0x1e1f0c0d +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vtrn.8 q10, q11 :: Qm 0x0b340d78 0x0b340d78 0x0b340d78 0x0b340d78 Qn 0x0a120c56 0x0a120c56 0x0a120c56 0x0a120c56 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.8 q10, q11 :: Qm 0x0b1d0d1d 0x0b1c0d1c 0x0b1b0d1b 0x0b1f0d1f Qn 0x0a150c19 0x0a140c1f 0x0a130c1a 0x0a120c1e +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VSWP ---- vswp q0, q1 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x12121212 0x12121212 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp q0, q1 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i8)0x00000012 Qn (i8)0x00000034 vswp q1, q0 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x12121212 0x12121212 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp q1, q0 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i8)0x00000012 Qn (i8)0x00000034 vswp q10, q11 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x12121212 0x12121212 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp q10, q11 :: Qm 0x34343434 0x34343434 0x34343434 0x34343434 Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i8)0x00000012 Qn (i8)0x00000034 vswp q0, q1 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp q0, q1 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vswp q1, q0 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp q1, q0 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d vswp q10, q11 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp q10, q11 :: Qm 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d 0x0a0b0c0d Qn 0x151d191d 0x141c1f1c 0x131b1a1b 0x121f1e1f +Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VDUP ---- vdup.8 q2, d2[0] :: Qd 0x57575757 0x57575757 0x57575757 0x57575757 Qm (i32)0x0abc4657 +vdup.8 q2, d2[0] :: Qd 0x2f2f2f2f 0x2f2f2f2f 0x2f2f2f2f 0x2f2f2f2f Qm (i32)0x0abc4657 vdup.8 q3, d3[2] :: Qd 0x07070707 0x07070707 0x07070707 0x07070707 Qm (i32)0x0007a1b3 +vdup.8 q3, d3[2] :: Qd 0x2f2f2f2f 0x2f2f2f2f 0x2f2f2f2f 0x2f2f2f2f Qm (i32)0x0007a1b3 vdup.8 q1, d0[7] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00713aaa +vdup.8 q1, d0[7] :: Qd 0x24242424 0x24242424 0x24242424 0x24242424 Qm (i32)0x00713aaa vdup.8 q0, d4[3] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x000aa713 +vdup.8 q0, d4[3] :: Qd 0x23232323 0x23232323 0x23232323 0x23232323 Qm (i32)0x000aa713 vdup.8 q4, d28[4] :: Qd 0xc3c3c3c3 0xc3c3c3c3 0xc3c3c3c3 0xc3c3c3c3 Qm (i32)0x0007b1c3 +vdup.8 q4, d28[4] :: Qd 0x2b2b2b2b 0x2b2b2b2b 0x2b2b2b2b 0x2b2b2b2b Qm (i32)0x0007b1c3 vdup.16 q7, d19[3] :: Qd 0x07130713 0x07130713 0x07130713 0x07130713 Qm (i32)0x0713ffff +vdup.16 q7, d19[3] :: Qd 0x242c242c 0x242c242c 0x242c242c 0x242c242c Qm (i32)0x0713ffff vdup.16 q15, d31[0] :: Qd 0x00fa00fa 0x00fa00fa 0x00fa00fa 0x00fa00fa Qm (i32)0x007f00fa +vdup.16 q15, d31[0] :: Qd 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f Qm (i32)0x007f00fa vdup.16 q6, d2[0] :: Qd 0xbcdebcde 0xbcdebcde 0xbcdebcde 0xbcdebcde Qm (i32)0x0ffabcde +vdup.16 q6, d2[0] :: Qd 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f Qm (i32)0x0ffabcde vdup.16 q8, d22[3] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000713 +vdup.16 q8, d22[3] :: Qd 0x242c242c 0x242c242c 0x242c242c 0x242c242c Qm (i32)0x00000713 vdup.16 q9, d2[0] :: Qd 0x07130713 0x07130713 0x07130713 0x07130713 Qm (i32)0x00000713 +vdup.16 q9, d2[0] :: Qd 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f 0x2e2f2e2f Qm (i32)0x00000713 vdup.32 q10, d17[1] :: Qd 0x00000713 0x00000713 0x00000713 0x00000713 Qm (i32)0x00000713 +vdup.32 q10, d17[1] :: Qd 0x242c2b2b 0x242c2b2b 0x242c2b2b 0x242c2b2b Qm (i32)0x00000713 vdup.32 q15, d11[0] :: Qd 0x00000003 0x00000003 0x00000003 0x00000003 Qm (i32)0x00000003 +vdup.32 q15, d11[0] :: Qd 0x232f2e2f 0x232f2e2f 0x232f2e2f 0x232f2e2f Qm (i32)0x00000003 vdup.32 q10, d29[1] :: Qd 0xf00000aa 0xf00000aa 0xf00000aa 0xf00000aa Qm (i32)0xf00000aa +vdup.32 q10, d29[1] :: Qd 0x242c2b2b 0x242c2b2b 0x242c2b2b 0x242c2b2b Qm (i32)0xf00000aa vdup.32 q12, d0[1] :: Qd 0x0000000f 0x0000000f 0x0000000f 0x0000000f Qm (i32)0x0000000f +vdup.32 q12, d0[1] :: Qd 0x242c2b2b 0x242c2b2b 0x242c2b2b 0x242c2b2b Qm (i32)0x0000000f vdup.32 q13, d13[0] :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xffffffff +vdup.32 q13, d13[0] :: Qd 0x232f2e2f 0x232f2e2f 0x232f2e2f 0x232f2e2f Qm (i32)0xffffffff ---- VQDMULL ---- vqdmull.s32 q0, d1, d2 :: Qd 0x00000000 0x00001680 0x00000000 0x00001680 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q0, d1, d2 :: Qd 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q0, d1, d2 :: Qd 0x00000011 0xe9687950 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmull.s32 q6, d7, d8 :: Qd 0xffffffff 0xffff7cc0 0xffffffff 0xffff7cc0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmull.s32 q6, d7, d8 :: Qd 0xffffffef 0x02d3c2f0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmull.s32 q6, d7, d8 :: Qd 0xffffffee 0x169786b0 0xffffffef 0x02d3c2f0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmull.s16 q9, d11, d12 :: Qd 0x00000000 0x0002d000 0x00000000 0x0002d000 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmull.s16 q9, d11, d12 :: Qd 0x00000000 0x0043c5c0 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmull.s16 q9, d11, d12 :: Qd 0x00000000 0x003abcc0 0x00000000 0x0043c5c0 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x10014004 0x00000000 0x10014004 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0788387c Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0687286c 0x00000000 0x0788387c Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d9 :: Qd 0x7ffffffd 0x00000004 0x7ffffffd 0x00000004 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0xece4e5e5 0x4c6c686c 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0xe50b10cc 0x00000000 0xe50b10cc Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0788387c Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0687286c 0x00000000 0x0788387c Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d9 :: Qd 0xfffffff4 0x00000000 0xfffffff4 0x00000000 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0x00000001 0xb2ead2e8 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0x00000001 0xca8a7288 0x00000001 0xb2ead2e8 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x003f83f8 0x00000000 0x003f83f8 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0788387c Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6 :: Qd 0x00000000 0x0687286c 0x00000000 0x0788387c Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d9 :: Qd 0x7ffffffd 0x00000004 0x7ffffffd 0x00000004 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d9 :: Qd 0xece4e5e5 0x4c6c686c 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmull.s32 q10, d11, d15 :: Qd 0x00000000 0x00001680 0x00000000 0x00001680 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q10, d11, d15 :: Qd 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q10, d11, d15 :: Qd 0x00000011 0xe9687950 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmull.s32 q10, d30, d31 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmull.s32 q10, d30, d31 :: Qd 0xede0e1e1 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d31 :: Qd 0xece4e5e5 0x00000000 0xede0e1e1 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s16 q10, d30, d31 :: Qd 0x7fffffff 0x00000000 0x7fffffff 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmull.s16 q10, d30, d31 :: Qd 0xede10000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d31 :: Qd 0xece50000 0x00000000 0xede10000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s32 q10, d30, d31 :: Qd 0xc0000000 0x00000000 0xc0000000 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d31 :: Qd 0xede0e1e1 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d31 :: Qd 0xece4e5e5 0x00000000 0xede0e1e1 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s16 q10, d30, d31 :: Qd 0xc0000000 0x00000000 0xc0000000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d31 :: Qd 0x090f8000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d31 :: Qd 0x098d8000 0x00000000 0x090f8000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMULL (by scalar) ---- vqdmull.s32 q0, d1, d7[0] :: Qd 0x00000000 0x00001680 0x00000000 0x00001680 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q0, d1, d7[0] :: Qd 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q0, d1, d7[0] :: Qd 0x00000011 0xe9687950 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmull.s32 q6, d7, d6[0] :: Qd 0xffffffff 0xffff7cc0 0xffffffff 0xffff7cc0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmull.s32 q6, d7, d6[0] :: Qd 0xffffffef 0x02d3c2f0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmull.s32 q6, d7, d6[0] :: Qd 0xffffffee 0x169786b0 0xffffffef 0x02d3c2f0 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmull.s16 q9, d11, d7[2] :: Qd 0x00000000 0x0002d000 0x00000000 0x0002d000 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmull.s16 q9, d11, d7[2] :: Qd 0x0028c5c0 0x0043c5c0 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmull.s16 q9, d11, d7[2] :: Qd 0x002afcc0 0x003abcc0 0x0028c5c0 0x0043c5c0 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmull.s16 q4, d5, d6[2] :: Qd 0x00000000 0x10014004 0x00000000 0x10014004 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[2] :: Qd 0x0488087c 0x0788387c Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[2] :: Qd 0x04c70c6c 0x0687286c 0x0488087c 0x0788387c Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d3[1] :: Qd 0x7ffffffd 0x00000004 0x7ffffffd 0x00000004 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d3[1] :: Qd 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d3[1] :: Qd 0xece4e5e5 0x4c6c686c 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmull.s16 q4, d5, d6[1] :: Qd 0xffffbffc 0xe50b10cc 0xffffbffc 0xe50b10cc Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[1] :: Qd 0x0488087c 0x0788387c Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[1] :: Qd 0x04c70c6c 0x0687286c 0x0488087c 0x0788387c Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d3[0] :: Qd 0xfffffff4 0x00000000 0xfffffff4 0x00000000 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmull.s32 q7, d8, d3[0] :: Qd 0x00000001 0xb2ead2e8 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmull.s32 q7, d8, d3[0] :: Qd 0x00000001 0xca8a7288 0x00000001 0xb2ead2e8 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmull.s16 q4, d5, d6[2] :: Qd 0x04004000 0x003f83f8 0x04004000 0x003f83f8 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[2] :: Qd 0x0488087c 0x0788387c Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmull.s16 q4, d5, d6[2] :: Qd 0x04c70c6c 0x0687286c 0x0488087c 0x0788387c Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmull.s32 q7, d8, d3[1] :: Qd 0x7ffffffd 0x00000004 0x7ffffffd 0x00000004 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d3[1] :: Qd 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmull.s32 q7, d8, d3[1] :: Qd 0xece4e5e5 0x4c6c686c 0xede0e1e1 0x487c787c Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmull.s32 q10, d11, d15[1] :: Qd 0x00000000 0x00001680 0x00000000 0x00001680 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q10, d11, d15[1] :: Qd 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmull.s32 q10, d11, d15[1] :: Qd 0x00000011 0xe9687950 0x00000010 0xfd2c3d10 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmull.s32 q10, d30, d1[0] :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmull.s32 q10, d30, d1[0] :: Qd 0xede0e1e1 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d1[0] :: Qd 0xece4e5e5 0x00000000 0xede0e1e1 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s16 q10, d30, d1[1] :: Qd 0x7fffffff 0x00000000 0x7fffffff 0x00000000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmull.s16 q10, d30, d1[1] :: Qd 0xede10000 0xe1e10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d1[1] :: Qd 0xece50000 0xe5e50000 0xede10000 0xe1e10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s32 q10, d30, d1[1] :: Qd 0xc0000000 0x00000000 0xc0000000 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d1[1] :: Qd 0xede0e1e1 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmull.s32 q10, d30, d1[1] :: Qd 0xece4e5e5 0x00000000 0xede0e1e1 0x00000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmull.s16 q10, d30, d1[3] :: Qd 0xc0000000 0x00000000 0xc0000000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d1[3] :: Qd 0x090f8000 0x0f0f8000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmull.s16 q10, d30, d1[3] :: Qd 0x098d8000 0x0d0d8000 0x090f8000 0x0f0f8000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMLSL ---- vqdmlsl.s32 q0, d1, d2 :: Qd 0x00000017 0xffffe998 0x55555555 0x55553ed5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q0, d1, d2 :: Qd 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q0, d1, d2 :: Qd 0x131b1a09 0x28b6a4cf 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlsl.s32 q6, d7, d8 :: Qd 0x55555555 0x5555d895 0x55555555 0x5555d895 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlsl.s32 q6, d7, d8 :: Qd 0x55555566 0x52819265 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlsl.s32 q6, d7, d8 :: Qd 0x55555567 0x3ebdcea5 0x55555566 0x52819265 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmlsl.s16 q9, d11, d12 :: Qd 0x55555555 0x55528555 0x55555555 0x55528555 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlsl.s16 q9, d11, d12 :: Qd 0x55555555 0x55118f95 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlsl.s16 q9, d11, d12 :: Qd 0x55555555 0x551a9895 0x55555555 0x55118f95 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x45541551 0x55555555 0x45541551 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4dcd1cd9 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4ece2ce9 0x55555555 0x4dcd1cd9 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d9 :: Qd 0xd5555558 0x55555551 0xd5555558 0x55555551 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x68706f70 0x08e8ece9 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x704a4489 0x55555555 0x704a4489 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4dcd1cd9 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4ece2ce9 0x55555555 0x4dcd1cd9 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d9 :: Qd 0x55555561 0x55555555 0x55555561 0x55555555 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x55555553 0xa26a826d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x55555553 0x8acae2cd 0x55555553 0xa26a826d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x5515d15d 0x55555555 0x5515d15d Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4dcd1cd9 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6 :: Qd 0x55555555 0x4ece2ce9 0x55555555 0x4dcd1cd9 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d9 :: Qd 0xd5555558 0x55555551 0xd5555558 0x55555551 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d9 :: Qd 0x68706f70 0x08e8ece9 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlsl.s32 q10, d11, d15 :: Qd 0x55555555 0x55553ed5 0x55555555 0x55553ed5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q10, d11, d15 :: Qd 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q10, d11, d15 :: Qd 0x55555543 0x6becdc05 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlsl.s32 q10, d30, d31 :: Qd 0xd5555555 0x55555556 0xd5555555 0x55555556 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s32 q10, d30, d31 :: Qd 0x67747374 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s32 q10, d30, d31 :: Qd 0x68706f70 0x55555555 0x67747374 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s16 q10, d30, d31 :: Qd 0xd5555556 0x55555555 0xd5555556 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s16 q10, d30, d31 :: Qd 0x67745555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s16 q10, d30, d31 :: Qd 0x68705555 0x55555555 0x67745555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s32 q10, d30, d31 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s32 q10, d30, d31 :: Qd 0x67747374 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s32 q10, d30, d31 :: Qd 0x68706f70 0x55555555 0x67747374 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s16 q10, d30, d31 :: Qd 0x7fffffff 0x55555555 0x7fffffff 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 08000000 +vqdmlsl.s16 q10, d30, d31 :: Qd 0x4c45d555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlsl.s16 q10, d30, d31 :: Qd 0x4bc7d555 0x55555555 0x4c45d555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMLSL (by scalar) ---- vqdmlsl.s32 q0, d1, d7[0] :: Qd 0x00000017 0xffffe998 0x55555555 0x55553ed5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q0, d1, d7[0] :: Qd 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q0, d1, d7[0] :: Qd 0x131b1a09 0x28b6a4cf 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlsl.s32 q6, d7, d6[0] :: Qd 0x55555555 0x5555d895 0x55555555 0x5555d895 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlsl.s32 q6, d7, d6[0] :: Qd 0x55555566 0x52819265 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlsl.s32 q6, d7, d6[0] :: Qd 0x55555567 0x3ebdcea5 0x55555566 0x52819265 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmlsl.s16 q9, d11, d7[2] :: Qd 0x55555555 0x55528555 0x55555555 0x55528555 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlsl.s16 q9, d11, d7[2] :: Qd 0x552c8f95 0x55118f95 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlsl.s16 q9, d11, d7[2] :: Qd 0x552a5895 0x551a9895 0x552c8f95 0x55118f95 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x55555555 0x45541551 0x55555555 0x45541551 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x508e48e9 0x4ece2ce9 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d3[1] :: Qd 0xd5555558 0x55555551 0xd5555558 0x55555551 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[1] :: Qd 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[1] :: Qd 0x68706f70 0x08e8ece9 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlsl.s16 q4, d5, d6[1] :: Qd 0x55559559 0x704a4489 0x55559559 0x704a4489 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[1] :: Qd 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[1] :: Qd 0x508e48e9 0x4ece2ce9 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d3[0] :: Qd 0x55555561 0x55555555 0x55555561 0x55555555 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[0] :: Qd 0x55555553 0xa26a826d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[0] :: Qd 0x55555553 0x8acae2cd 0x55555553 0xa26a826d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x51551555 0x5515d15d 0x51551555 0x5515d15d Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlsl.s16 q4, d5, d6[2] :: Qd 0x508e48e9 0x4ece2ce9 0x50cd4cd9 0x4dcd1cd9 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmlsl.s32 q7, d8, d3[1] :: Qd 0xd5555558 0x55555551 0xd5555558 0x55555551 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[1] :: Qd 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlsl.s32 q7, d8, d3[1] :: Qd 0x68706f70 0x08e8ece9 0x67747374 0x0cd8dcd9 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlsl.s32 q10, d11, d15[1] :: Qd 0x55555555 0x55553ed5 0x55555555 0x55553ed5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q10, d11, d15[1] :: Qd 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlsl.s32 q10, d11, d15[1] :: Qd 0x55555543 0x6becdc05 0x55555544 0x58291845 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlsl.s32 q10, d30, d1[0] :: Qd 0xd5555555 0x55555556 0xd5555555 0x55555556 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s32 q10, d30, d1[0] :: Qd 0x67747374 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s32 q10, d30, d1[0] :: Qd 0x68706f70 0x55555555 0x67747374 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s16 q10, d30, d1[1] :: Qd 0xd5555556 0x55555555 0xd5555556 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s16 q10, d30, d1[1] :: Qd 0x67745555 0x73745555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s16 q10, d30, d1[1] :: Qd 0x68705555 0x6f705555 0x67745555 0x73745555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s32 q10, d30, d1[1] :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlsl.s32 q10, d30, d1[1] :: Qd 0x67747374 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlsl.s32 q10, d30, d1[1] :: Qd 0x68706f70 0x55555555 0x67747374 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlsl.s16 q10, d30, d1[3] :: Qd 0x7fffffff 0x55555555 0x7fffffff 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 08000000 +vqdmlsl.s16 q10, d30, d1[3] :: Qd 0x4c45d555 0x4645d555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlsl.s16 q10, d30, d1[3] :: Qd 0x4bc7d555 0x4847d555 0x4c45d555 0x4645d555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMLAL ---- vqdmlal.s32 q0, d1, d2 :: Qd 0x00000018 0x00001698 0x55555555 0x55556bd5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q0, d1, d2 :: Qd 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q0, d1, d2 :: Qd 0x131b1a2c 0xfb87976f 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlal.s32 q6, d7, d8 :: Qd 0x55555555 0x5554d215 0x55555555 0x5554d215 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlal.s32 q6, d7, d8 :: Qd 0x55555544 0x58291845 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlal.s32 q6, d7, d8 :: Qd 0x55555543 0x6becdc05 0x55555544 0x58291845 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmlal.s16 q9, d11, d12 :: Qd 0x55555555 0x55582555 0x55555555 0x55582555 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlal.s16 q9, d11, d12 :: Qd 0x55555555 0x55991b15 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlal.s16 q9, d11, d12 :: Qd 0x55555555 0x55901215 0x55555555 0x55991b15 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x65569559 0x55555555 0x65569559 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5cdd8dd1 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5bdc7dc1 0x55555555 0x5cdd8dd1 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d9 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x423a3b3a 0xa1c1bdc1 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x3a606621 0x55555555 0x3a606621 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5cdd8dd1 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5bdc7dc1 0x55555555 0x5cdd8dd1 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d9 :: Qd 0x55555549 0x55555555 0x55555549 0x55555555 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x55555557 0x0840283d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x55555557 0x1fdfc7dd 0x55555557 0x0840283d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5594d94d 0x55555555 0x5594d94d Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5cdd8dd1 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6 :: Qd 0x55555555 0x5bdc7dc1 0x55555555 0x5cdd8dd1 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d9 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlal.s32 q7, d8, d9 :: Qd 0x423a3b3a 0xa1c1bdc1 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlal.s32 q10, d11, d15 :: Qd 0x55555555 0x55556bd5 0x55555555 0x55556bd5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q10, d11, d15 :: Qd 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q10, d11, d15 :: Qd 0x55555567 0x3ebdcea5 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlal.s32 q10, d30, d31 :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlal.s32 q10, d30, d31 :: Qd 0x43363736 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d31 :: Qd 0x423a3b3a 0x55555555 0x43363736 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s16 q10, d30, d31 :: Qd 0x7fffffff 0x55555555 0x7fffffff 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlal.s16 q10, d30, d31 :: Qd 0x43365555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d31 :: Qd 0x423a5555 0x55555555 0x43365555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s32 q10, d30, d31 :: Qd 0x15555555 0x55555555 0x15555555 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d31 :: Qd 0x43363736 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d31 :: Qd 0x423a3b3a 0x55555555 0x43363736 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s16 q10, d30, d31 :: Qd 0x15555555 0x55555555 0x15555555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d31 :: Qd 0x5e64d555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d31 :: Qd 0x5ee2d555 0x55555555 0x5e64d555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMLAL (by scalar) ---- vqdmlal.s32 q0, d1, d7[0] :: Qd 0x00000018 0x00001698 0x55555555 0x55556bd5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q0, d1, d7[0] :: Qd 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q0, d1, d7[0] :: Qd 0x131b1a2c 0xfb87976f 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlal.s32 q6, d7, d6[0] :: Qd 0x55555555 0x5554d215 0x55555555 0x5554d215 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlal.s32 q6, d7, d6[0] :: Qd 0x55555544 0x58291845 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmlal.s32 q6, d7, d6[0] :: Qd 0x55555543 0x6becdc05 0x55555544 0x58291845 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmlal.s16 q9, d11, d7[2] :: Qd 0x55555555 0x55582555 0x55555555 0x55582555 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlal.s16 q9, d11, d7[2] :: Qd 0x557e1b15 0x55991b15 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmlal.s16 q9, d11, d7[2] :: Qd 0x55805215 0x55901215 0x557e1b15 0x55991b15 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmlal.s16 q4, d5, d6[2] :: Qd 0x55555555 0x65569559 0x55555555 0x65569559 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[2] :: Qd 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[2] :: Qd 0x5a1c61c1 0x5bdc7dc1 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d3[1] :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqdmlal.s32 q7, d8, d3[1] :: Qd 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlal.s32 q7, d8, d3[1] :: Qd 0x423a3b3a 0xa1c1bdc1 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlal.s16 q4, d5, d6[1] :: Qd 0x55551551 0x3a606621 0x55551551 0x3a606621 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[1] :: Qd 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[1] :: Qd 0x5a1c61c1 0x5bdc7dc1 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d3[0] :: Qd 0x55555549 0x55555555 0x55555549 0x55555555 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlal.s32 q7, d8, d3[0] :: Qd 0x55555557 0x0840283d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmlal.s32 q7, d8, d3[0] :: Qd 0x55555557 0x1fdfc7dd 0x55555557 0x0840283d Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmlal.s16 q4, d5, d6[2] :: Qd 0x59559555 0x5594d94d 0x59559555 0x5594d94d Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[2] :: Qd 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmlal.s16 q4, d5, d6[2] :: Qd 0x5a1c61c1 0x5bdc7dc1 0x59dd5dd1 0x5cdd8dd1 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmlal.s32 q7, d8, d3[1] :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqdmlal.s32 q7, d8, d3[1] :: Qd 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmlal.s32 q7, d8, d3[1] :: Qd 0x423a3b3a 0xa1c1bdc1 0x43363736 0x9dd1cdd1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmlal.s32 q10, d11, d15[1] :: Qd 0x55555555 0x55556bd5 0x55555555 0x55556bd5 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q10, d11, d15[1] :: Qd 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmlal.s32 q10, d11, d15[1] :: Qd 0x55555567 0x3ebdcea5 0x55555566 0x52819265 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmlal.s32 q10, d30, d1[0] :: Qd 0x7fffffff 0xffffffff 0x7fffffff 0xffffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlal.s32 q10, d30, d1[0] :: Qd 0x43363736 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d1[0] :: Qd 0x423a3b3a 0x55555555 0x43363736 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s16 q10, d30, d1[1] :: Qd 0x7fffffff 0x55555555 0x7fffffff 0x55555555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmlal.s16 q10, d30, d1[1] :: Qd 0x43365555 0x37365555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d1[1] :: Qd 0x423a5555 0x3b3a5555 0x43365555 0x37365555 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s32 q10, d30, d1[1] :: Qd 0x15555555 0x55555555 0x15555555 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d1[1] :: Qd 0x43363736 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmlal.s32 q10, d30, d1[1] :: Qd 0x423a3b3a 0x55555555 0x43363736 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmlal.s16 q10, d30, d1[3] :: Qd 0x15555555 0x55555555 0x15555555 0x55555555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d1[3] :: Qd 0x5e64d555 0x6464d555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmlal.s16 q10, d30, d1[3] :: Qd 0x5ee2d555 0x6262d555 0x5e64d555 0x6464d555 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMULH ---- vqdmulh.s32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q0, q1, q2 :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q0, q1, q2 :: Qd 0x00000013 0x00000012 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 q6, q7, q8 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 q6, q7, q8 :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 q6, q7, q8 :: Qd 0xffffffec 0xffffffed 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmulh.s16 q9, q11, q12 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 q9, q11, q12 :: Qd 0x0000003a 0x00000043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 q9, q11, q12 :: Qd 0x00000038 0x00000045 0x0000003a 0x00000043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmulh.s16 q4, q5, q6 :: Qd 0x00001001 0x00001001 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000647 0x000007c7 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, q9 :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s16 q4, q5, q6 :: Qd 0x0000e50b 0x0000e50b 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000647 0x000007c7 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, q9 :: Qd 0xfffffff4 0xfffffff4 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmulh.s16 q4, q5, q6 :: Qd 0x0000003f 0x0000003f 0x0000003f 0x0000003f Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, q6 :: Qd 0x00000647 0x000007c7 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, q9 :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, q9 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s32 q10, q11, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q10, q11, q15 :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q10, q11, q15 :: Qd 0x00000013 0x00000012 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 q10, q14, q15 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s32 q10, q14, q15 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, q15 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 q10, q14, q15 :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s16 q10, q14, q15 :: Qd 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, q15 :: Qd 0xeae30000 0xebe40000 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s32 q10, q14, q15 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, q15 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, q15 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 q10, q14, q15 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, q15 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, q15 :: Qd 0x0a8e0000 0x0a0e0000 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMULH (by scalar) ---- vqdmulh.s32 q0, q1, d6[0] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q0, q1, d6[0] :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q0, q1, d6[0] :: Qd 0x00000013 0x00000012 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 q6, q7, d1[1] :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 q6, q7, d1[1] :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 q6, q7, d1[1] :: Qd 0xffffffec 0xffffffed 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmulh.s16 q9, q11, d7[0] :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 q9, q11, d7[0] :: Qd 0x002a003a 0x00280043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 q9, q11, d7[0] :: Qd 0x002f0038 0x002d0045 0x002a003a 0x00280043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmulh.s16 q4, q5, d6[0] :: Qd 0x00001001 0x00001001 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[0] :: Qd 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[0] :: Qd 0x05470647 0x050707c7 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, d9[1] :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[1] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s16 q4, q5, d6[1] :: Qd 0xffffe50b 0xffffe50b 0xffffe50b 0xffffe50b Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[1] :: Qd 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[1] :: Qd 0x05470647 0x050707c7 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, d9[0] :: Qd 0xfffffff4 0xfffffff4 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[0] :: Qd 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[0] :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmulh.s16 q4, q5, d6[2] :: Qd 0x0400003f 0x0400003f 0x0400003f 0x0400003f Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[2] :: Qd 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 q4, q5, d6[2] :: Qd 0x05470647 0x050707c7 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 q7, q8, d9[0] :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[0] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 q7, q8, d9[0] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s32 q10, q11, d15[0] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q10, q11, d15[0] :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 q10, q11, d15[0] :: Qd 0x00000013 0x00000012 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 q10, q14, d15[1] :: Qd 0xffffff88 0xffffff88 0xffffff88 0xffffff88 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, d15[1] :: Qd 0x00000011 0x00000010 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, d15[1] :: Qd 0x00000013 0x00000012 0x00000011 0x00000010 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 q10, q14, d7[3] :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s16 q10, q14, d7[3] :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, d7[3] :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s32 q10, q14, d15[1] :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, d15[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 q10, q14, d15[1] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 q10, q14, d7[1] :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, d7[1] :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 q10, q14, d7[1] :: Qd 0x0a8e0c8e 0x0a0e0f8e 0x098d0d0d 0x090f0f0f Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VSHL (immediate) ---- vshl.i64 q0, q1, #1 :: Qd 0x00000030 0x00000030 0x00000030 0x00000030 Qm (i32)0x00000018 +vshl.i64 q0, q1, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x00000018 vshl.i64 q5, q2, #1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i64 q5, q2, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x40000000 vshl.i64 q9, q12, #2 :: Qd 0x0000000a 0x00000008 0x0000000a 0x00000008 Qm (i32)0x80000002 +vshl.i64 q9, q12, #2 :: Qd 0x98b4b4a8 0x94a8b8ac 0x90b0acac 0x8cbcb8bc Qm (i32)0x80000002 vshl.i64 q11, q2, #12 :: Qd 0xffffffff 0xfffff000 0xffffffff 0xfffff000 Qm (i32)0xffffffff +vshl.i64 q11, q2, #12 :: Qd 0xd2d2a252 0xa2e2b000 0xc2b2b232 0xf2e2f000 Qm (i32)0xffffffff +vshl.i64 q15, q12, #63 :: Qd 0x80000000 0x00000000 0x80000000 0x00000000 Qm (i32)0x00000005 vshl.i64 q15, q12, #63 :: Qd 0x80000000 0x00000000 0x80000000 0x00000000 Qm (i32)0x00000005 vshl.i64 q5, q12, #62 :: Qd 0x40000000 0x00000000 0x40000000 0x00000000 Qm (i32)0x80000001 +vshl.i64 q5, q12, #62 :: Qd 0xc0000000 0x00000000 0xc0000000 0x00000000 Qm (i32)0x80000001 vshl.i32 q0, q1, #1 :: Qd 0x00000030 0x00000030 0x00000030 0x00000030 Qm (i32)0x00000018 +vshl.i32 q0, q1, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x00000018 vshl.i32 q5, q2, #1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i32 q5, q2, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x40000000 vshl.i32 q9, q12, #2 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i32 q9, q12, #2 :: Qd 0x98b4b4a8 0x94a8b8ac 0x90b0acac 0x8cbcb8bc Qm (i32)0x80000002 vshl.i32 q11, q2, #12 :: Qd 0xfffff000 0xfffff000 0xfffff000 0xfffff000 Qm (i32)0xffffffff +vshl.i32 q11, q2, #12 :: Qd 0xd2d2a000 0xa2e2b000 0xc2b2b000 0xf2e2f000 Qm (i32)0xffffffff vshl.i32 q15, q12, #20 :: Qd 0x00500000 0x00500000 0x00500000 0x00500000 Qm (i32)0x00000005 +vshl.i32 q15, q12, #20 :: Qd 0xd2a00000 0xe2b00000 0xb2b00000 0xe2f00000 Qm (i32)0x00000005 vshl.i32 q5, q12, #30 :: Qd 0x40000000 0x40000000 0x40000000 0x40000000 Qm (i32)0x80000001 +vshl.i32 q5, q12, #30 :: Qd 0x80000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000001 vshl.i16 q0, q1, #1 :: Qd 0x00300030 0x00300030 0x00300030 0x00300030 Qm (i16)0x00000018 +vshl.i16 q0, q1, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i16)0x00000018 vshl.i16 q5, q2, #1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i16 q5, q2, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x40000000 vshl.i16 q9, q12, #2 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i16 q9, q12, #2 :: Qd 0x98b4b4a8 0x94a8b8ac 0x90b0acac 0x8cbcb8bc Qm (i32)0x80000002 vshl.i16 q11, q2, #12 :: Qd 0xf000f000 0xf000f000 0xf000f000 0xf000f000 Qm (i16)0xffffffff +vshl.i16 q11, q2, #12 :: Qd 0xd000a000 0xa000b000 0xc000b000 0xf000f000 Qm (i16)0xffffffff vshl.i16 q15, q12, #3 :: Qd 0x00280028 0x00280028 0x00280028 0x00280028 Qm (i16)0x00000005 +vshl.i16 q15, q12, #3 :: Qd 0x31686950 0x29507158 0x21605958 0x19787178 Qm (i16)0x00000005 vshl.i16 q5, q12, #14 :: Qd 0x00004000 0x00004000 0x00004000 0x00004000 Qm (i32)0x80000001 +vshl.i16 q5, q12, #14 :: Qd 0x40008000 0x8000c000 0x0000c000 0xc000c000 Qm (i32)0x80000001 vshl.i8 q0, q1, #1 :: Qd 0x30303030 0x30303030 0x30303030 0x30303030 Qm (i8)0x00000018 +vshl.i8 q0, q1, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i8)0x00000018 vshl.i8 q5, q2, #1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i8 q5, q2, #1 :: Qd 0x4c5a5a54 0x4a545c56 0x48585656 0x465e5c5e Qm (i32)0x40000000 vshl.i8 q9, q12, #2 :: Qd 0x00000008 0x00000008 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i8 q9, q12, #2 :: Qd 0x98b4b4a8 0x94a8b8ac 0x90b0acac 0x8cbcb8bc Qm (i32)0x80000002 vshl.i8 q11, q2, #7 :: Qd 0x80808080 0x80808080 0x80808080 0x80808080 Qm (i8)0xffffffff +vshl.i8 q11, q2, #7 :: Qd 0x00808000 0x80000080 0x00008080 0x80800080 Qm (i8)0xffffffff vshl.i8 q15, q12, #3 :: Qd 0x28282828 0x28282828 0x28282828 0x28282828 Qm (i8)0x00000005 +vshl.i8 q15, q12, #3 :: Qd 0x30686850 0x28507058 0x20605858 0x18787078 Qm (i8)0x00000005 vshl.i8 q5, q12, #6 :: Qd 0x00000040 0x00000040 0x00000040 0x00000040 Qm (i32)0x80000001 +vshl.i8 q5, q12, #6 :: Qd 0x80404080 0x408080c0 0x0000c0c0 0xc0c080c0 Qm (i32)0x80000001 ---- VNEG ---- vneg.s32 q0, q1 :: Qd 0xffffff8d 0xffffff8d 0xffffff8d 0xffffff8d Qm (i32)0x00000073 +vneg.s32 q0, q1 :: Qd 0xd9d2d2d6 0xdad5d1d5 0xdbd3d4d5 0xdcd0d1d1 Qm (i32)0x00000073 vneg.s16 q15, q4 :: Qd 0x0000ff8d 0x0000ff8d 0x0000ff8d 0x0000ff8d Qm (i32)0x00000073 +vneg.s16 q15, q4 :: Qd 0xd9d3d2d6 0xdad6d1d5 0xdbd4d4d5 0xdcd1d1d1 Qm (i32)0x00000073 vneg.s8 q8, q7 :: Qd 0x0000008d 0x0000008d 0x0000008d 0x0000008d Qm (i32)0x00000073 +vneg.s8 q8, q7 :: Qd 0xdad3d3d6 0xdbd6d2d5 0xdcd4d5d5 0xddd1d2d1 Qm (i32)0x00000073 vneg.s32 q0, q1 :: Qd 0xffffff02 0xffffff02 0xffffff02 0xffffff02 Qm (i32)0x000000fe +vneg.s32 q0, q1 :: Qd 0xd9d2d2d6 0xdad5d1d5 0xdbd3d4d5 0xdcd0d1d1 Qm (i32)0x000000fe vneg.s16 q15, q4 :: Qd 0x0000ff11 0x0000ff11 0x0000ff11 0x0000ff11 Qm (i32)0x000000ef +vneg.s16 q15, q4 :: Qd 0xd9d3d2d6 0xdad6d1d5 0xdbd4d4d5 0xdcd1d1d1 Qm (i32)0x000000ef vneg.s8 q8, q7 :: Qd 0x00000022 0x00000022 0x00000022 0x00000022 Qm (i32)0x000000de +vneg.s8 q8, q7 :: Qd 0xdad3d3d6 0xdbd6d2d5 0xdcd4d5d5 0xddd1d2d1 Qm (i32)0x000000de vneg.s32 q0, q1 :: Qd 0x01f501f6 0x01f501f6 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a +vneg.s32 q0, q1 :: Qd 0xd9d2d2d6 0xdad5d1d5 0xdbd3d4d5 0xdcd0d1d1 Qm (i16)0x0000fe0a vneg.s16 q15, q4 :: Qd 0x10f510f5 0x10f510f5 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b +vneg.s16 q15, q4 :: Qd 0xd9d3d2d6 0xdad6d1d5 0xdbd4d4d5 0xdcd1d1d1 Qm (i16)0x0000ef0b vneg.s8 q8, q7 :: Qd 0x22f422f4 0x22f422f4 0x22f422f4 0x22f422f4 Qm (i16)0x0000de0c +vneg.s8 q8, q7 :: Qd 0xdad3d3d6 0xdbd6d2d5 0xdcd4d5d5 0xddd1d2d1 Qm (i16)0x0000de0c ---- VQNEG ---- vqneg.s32 q0, q1 :: Qd 0xffffff8d 0xffffff8d 0xffffff8d 0xffffff8d Qm (i32)0x00000073 fpscr: 00000000 +vqneg.s32 q0, q1 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x00000073 fpscr: 00000000 vqneg.s32 q0, q1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000000 fpscr: 08000000 +vqneg.s32 q0, q1 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 fpscr: 00000000 vqneg.s16 q0, q1 :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 fpscr: 08000000 +vqneg.s16 q0, q1 :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 fpscr: 00000000 vqneg.s8 q0, q1 :: Qd 0x7f000000 0x7f000000 0x7f000000 0x7f000000 Qm (i32)0x80000000 fpscr: 08000000 +vqneg.s8 q0, q1 :: Qd 0xebe3e7e3 0xece4e1e4 0xede5e6e5 0xeee1e2e1 Qm (i32)0x80000000 fpscr: 00000000 vqneg.s16 q15, q4 :: Qd 0x0000ff8d 0x0000ff8d 0x0000ff8d 0x0000ff8d Qm (i32)0x00000073 fpscr: 00000000 +vqneg.s16 q15, q4 :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i32)0x00000073 fpscr: 00000000 vqneg.s8 q8, q7 :: Qd 0x0000008d 0x0000008d 0x0000008d 0x0000008d Qm (i32)0x00000073 fpscr: 00000000 +vqneg.s8 q8, q7 :: Qd 0xebe3e7e3 0xece4e1e4 0xede5e6e5 0xeee1e2e1 Qm (i32)0x00000073 fpscr: 00000000 vqneg.s32 q0, q1 :: Qd 0xffffff02 0xffffff02 0xffffff02 0xffffff02 Qm (i32)0x000000fe fpscr: 00000000 +vqneg.s32 q0, q1 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x000000fe fpscr: 00000000 vqneg.s16 q15, q4 :: Qd 0x0000ff11 0x0000ff11 0x0000ff11 0x0000ff11 Qm (i32)0x000000ef fpscr: 00000000 +vqneg.s16 q15, q4 :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i32)0x000000ef fpscr: 00000000 vqneg.s8 q8, q7 :: Qd 0x00000022 0x00000022 0x00000022 0x00000022 Qm (i32)0x000000de fpscr: 00000000 +vqneg.s8 q8, q7 :: Qd 0xebe3e7e3 0xece4e1e4 0xede5e6e5 0xeee1e2e1 Qm (i32)0x000000de fpscr: 00000000 vqneg.s32 q0, q1 :: Qd 0x01f501f6 0x01f501f6 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a fpscr: 00000000 +vqneg.s32 q0, q1 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i16)0x0000fe0a fpscr: 00000000 vqneg.s16 q15, q4 :: Qd 0x10f510f5 0x10f510f5 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b fpscr: 00000000 +vqneg.s16 q15, q4 :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i16)0x0000ef0b fpscr: 00000000 vqneg.s8 q8, q7 :: Qd 0x22f422f4 0x22f422f4 0x22f422f4 0x22f422f4 Qm (i16)0x0000de0c fpscr: 00000000 +vqneg.s8 q8, q7 :: Qd 0xebe3e7e3 0xece4e1e4 0xede5e6e5 0xeee1e2e1 Qm (i16)0x0000de0c fpscr: 00000000 ---- VREV ---- vrev64.8 q0, q1 :: Qd 0xddccbbaa 0xddccbbaa 0xddccbbaa 0xddccbbaa Qm (i32)0xaabbccdd +vrev64.8 q0, q1 :: Qd 0x2b2e2a25 0x2a2d2d26 0x2f2e2f23 0x2b2b2c24 Qm (i32)0xaabbccdd vrev64.16 q10, q15 :: Qd 0xccddaabb 0xccddaabb 0xccddaabb 0xccddaabb Qm (i32)0xaabbccdd +vrev64.16 q10, q15 :: Qd 0x2e2b252a 0x2d2a262d 0x2e2f232f 0x2b2b242c Qm (i32)0xaabbccdd vrev64.32 q1, q14 :: Qd 0xaabbccdd 0xaabbccdd 0xaabbccdd 0xaabbccdd Qm (i32)0xaabbccdd +vrev64.32 q1, q14 :: Qd 0x252a2e2b 0x262d2d2a 0x232f2e2f 0x242c2b2b Qm (i32)0xaabbccdd vrev32.8 q0, q1 :: Qd 0xddccbbaa 0xddccbbaa 0xddccbbaa 0xddccbbaa Qm (i32)0xaabbccdd +vrev32.8 q0, q1 :: Qd 0x2a2d2d26 0x2b2e2a25 0x2b2b2c24 0x2f2e2f23 Qm (i32)0xaabbccdd vrev32.16 q10, q15 :: Qd 0xccddaabb 0xccddaabb 0xccddaabb 0xccddaabb Qm (i32)0xaabbccdd +vrev32.16 q10, q15 :: Qd 0x2d2a262d 0x2e2b252a 0x2b2b242c 0x2e2f232f Qm (i32)0xaabbccdd vrev16.8 q0, q1 :: Qd 0xbbaaddcc 0xbbaaddcc 0xbbaaddcc 0xbbaaddcc Qm (i32)0xaabbccdd +vrev16.8 q0, q1 :: Qd 0x2d262a2d 0x2a252b2e 0x2c242b2b 0x2f232f2e Qm (i32)0xaabbccdd ---- VSHLL ---- vshll.s32 q0, d1, #1 :: Qd 0x00000000 0x00000030 0x00000000 0x00000030 Qm (i32)0x00000018 +vshll.s32 q0, d1, #1 :: Qd 0x00000000 0x48585656 0x00000000 0x465e5c5e Qm (i32)0x00000018 vshll.s32 q5, d2, #1 :: Qd 0x00000000 0x80000000 0x00000000 0x80000000 Qm (i32)0x40000000 +vshll.s32 q5, d2, #1 :: Qd 0x00000000 0x48585656 0x00000000 0x465e5c5e Qm (i32)0x40000000 vshll.s32 q9, d12, #2 :: Qd 0xfffffffe 0x00000008 0xfffffffe 0x00000008 Qm (i32)0x80000002 +vshll.s32 q9, d12, #2 :: Qd 0x00000000 0x90b0acac 0x00000000 0x8cbcb8bc Qm (i32)0x80000002 vshll.u32 q11, d2, #12 :: Qd 0x00000fff 0xfffff000 0x00000fff 0xfffff000 Qm (i32)0xffffffff +vshll.u32 q11, d2, #12 :: Qd 0x00000242 0xc2b2b000 0x00000232 0xf2e2f000 Qm (i32)0xffffffff vshll.u32 q15, d12, #20 :: Qd 0x00000000 0x00500000 0x00000000 0x00500000 Qm (i32)0x00000005 +vshll.u32 q15, d12, #20 :: Qd 0x000242c2 0xb2b00000 0x000232f2 0xe2f00000 Qm (i32)0x00000005 vshll.u32 q5, d22, #30 :: Qd 0x20000000 0x40000000 0x20000000 0x40000000 Qm (i32)0x80000001 +vshll.u32 q5, d22, #30 :: Qd 0x090b0aca 0xc0000000 0x08cbcb8b 0xc0000000 Qm (i32)0x80000001 vshll.s16 q0, d1, #1 :: Qd 0x00000030 0x00000030 0x00000030 0x00000030 Qm (i16)0x00000018 +vshll.s16 q0, d1, #1 :: Qd 0x00004858 0x00005656 0x0000465e 0x00005c5e Qm (i16)0x00000018 vshll.s16 q5, d2, #1 :: Qd 0x00008000 0x00000000 0x00008000 0x00000000 Qm (i32)0x40000000 +vshll.s16 q5, d2, #1 :: Qd 0x00004858 0x00005656 0x0000465e 0x00005c5e Qm (i32)0x40000000 vshll.s16 q9, d12, #2 :: Qd 0xfffe0000 0x00000008 0xfffe0000 0x00000008 Qm (i32)0x80000002 +vshll.s16 q9, d12, #2 :: Qd 0x000090b0 0x0000acac 0x00008cbc 0x0000b8bc Qm (i32)0x80000002 vshll.u16 q11, d2, #12 :: Qd 0x0ffff000 0x0ffff000 0x0ffff000 0x0ffff000 Qm (i16)0xffffffff +vshll.u16 q11, d2, #12 :: Qd 0x0242c000 0x02b2b000 0x0232f000 0x02e2f000 Qm (i16)0xffffffff vshll.u16 q15, d22, #3 :: Qd 0x00000028 0x00000028 0x00000028 0x00000028 Qm (i16)0x00000005 +vshll.u16 q15, d22, #3 :: Qd 0x00012160 0x00015958 0x00011978 0x00017178 Qm (i16)0x00000005 vshll.u16 q5, d12, #14 :: Qd 0x20000000 0x00004000 0x20000000 0x00004000 Qm (i32)0x80000001 +vshll.u16 q5, d12, #14 :: Qd 0x090b0000 0x0acac000 0x08cbc000 0x0b8bc000 Qm (i32)0x80000001 vshll.s8 q0, d1, #1 :: Qd 0x00300030 0x00300030 0x00300030 0x00300030 Qm (i8)0x00000018 +vshll.s8 q0, d1, #1 :: Qd 0x00480058 0x00560056 0x0046005e 0x005c005e Qm (i8)0x00000018 vshll.s8 q5, d2, #1 :: Qd 0x00800000 0x00000000 0x00800000 0x00000000 Qm (i32)0x40000000 +vshll.s8 q5, d2, #1 :: Qd 0x00480058 0x00560056 0x0046005e 0x005c005e Qm (i32)0x40000000 vshll.s8 q9, d12, #2 :: Qd 0xfe000000 0x00000008 0xfe000000 0x00000008 Qm (i32)0x80000002 +vshll.s8 q9, d12, #2 :: Qd 0x009000b0 0x00ac00ac 0x008c00bc 0x00b800bc Qm (i32)0x80000002 vshll.u8 q11, d2, #7 :: Qd 0x7f807f80 0x7f807f80 0x7f807f80 0x7f807f80 Qm (i8)0xffffffff +vshll.u8 q11, d2, #7 :: Qd 0x12001600 0x15801580 0x11801780 0x17001780 Qm (i8)0xffffffff vshll.u8 q15, d19, #3 :: Qd 0x00280028 0x00280028 0x00280028 0x00280028 Qm (i8)0x00000005 +vshll.u8 q15, d19, #3 :: Qd 0x01200160 0x01580158 0x01180178 0x01700178 Qm (i8)0x00000005 vshll.u8 q5, d12, #6 :: Qd 0x20000000 0x00000040 0x20000000 0x00000040 Qm (i32)0x80000001 +vshll.u8 q5, d12, #6 :: Qd 0x09000b00 0x0ac00ac0 0x08c00bc0 0x0b800bc0 Qm (i32)0x80000001 ---- VSHLL (max shift) ---- vshll.i32 q0, d1, #32 :: Qd 0x00000018 0x00000000 0x00000018 0x00000000 Qm (i32)0x00000018 +vshll.i32 q0, d1, #32 :: Qd 0x242c2b2b 0x00000000 0x232f2e2f 0x00000000 Qm (i32)0x00000018 vshll.i32 q5, d2, #32 :: Qd 0x40000000 0x00000000 0x40000000 0x00000000 Qm (i32)0x40000000 +vshll.i32 q5, d2, #32 :: Qd 0x242c2b2b 0x00000000 0x232f2e2f 0x00000000 Qm (i32)0x40000000 vshll.i32 q11, d2, #32 :: Qd 0xffffffff 0x00000000 0xffffffff 0x00000000 Qm (i32)0xffffffff +vshll.i32 q11, d2, #32 :: Qd 0x242c2b2b 0x00000000 0x232f2e2f 0x00000000 Qm (i32)0xffffffff vshll.i32 q15, d12, #32 :: Qd 0x00000005 0x00000000 0x00000005 0x00000000 Qm (i32)0x00000005 +vshll.i32 q15, d12, #32 :: Qd 0x242c2b2b 0x00000000 0x232f2e2f 0x00000000 Qm (i32)0x00000005 vshll.i16 q0, d1, #16 :: Qd 0x00180000 0x00180000 0x00180000 0x00180000 Qm (i16)0x00000018 +vshll.i16 q0, d1, #16 :: Qd 0x242c0000 0x2b2b0000 0x232f0000 0x2e2f0000 Qm (i16)0x00000018 vshll.i16 q5, d2, #16 :: Qd 0x40000000 0x00000000 0x40000000 0x00000000 Qm (i32)0x40000000 +vshll.i16 q5, d2, #16 :: Qd 0x242c0000 0x2b2b0000 0x232f0000 0x2e2f0000 Qm (i32)0x40000000 vshll.i16 q11, d2, #16 :: Qd 0xffff0000 0xffff0000 0xffff0000 0xffff0000 Qm (i16)0xffffffff +vshll.i16 q11, d2, #16 :: Qd 0x242c0000 0x2b2b0000 0x232f0000 0x2e2f0000 Qm (i16)0xffffffff vshll.i16 q15, d22, #16 :: Qd 0x00050000 0x00050000 0x00050000 0x00050000 Qm (i16)0x00000005 +vshll.i16 q15, d22, #16 :: Qd 0x242c0000 0x2b2b0000 0x232f0000 0x2e2f0000 Qm (i16)0x00000005 vshll.i8 q0, d1, #8 :: Qd 0x18001800 0x18001800 0x18001800 0x18001800 Qm (i8)0x00000018 +vshll.i8 q0, d1, #8 :: Qd 0x24002c00 0x2b002b00 0x23002f00 0x2e002f00 Qm (i8)0x00000018 vshll.i8 q5, d2, #8 :: Qd 0x40000000 0x00000000 0x40000000 0x00000000 Qm (i32)0x40000000 +vshll.i8 q5, d2, #8 :: Qd 0x24002c00 0x2b002b00 0x23002f00 0x2e002f00 Qm (i32)0x40000000 vshll.i8 q11, d2, #8 :: Qd 0xff00ff00 0xff00ff00 0xff00ff00 0xff00ff00 Qm (i8)0xffffffff +vshll.i8 q11, d2, #8 :: Qd 0x24002c00 0x2b002b00 0x23002f00 0x2e002f00 Qm (i8)0xffffffff vshll.i8 q15, d19, #8 :: Qd 0x05000500 0x05000500 0x05000500 0x05000500 Qm (i8)0x00000005 +vshll.i8 q15, d19, #8 :: Qd 0x24002c00 0x2b002b00 0x23002f00 0x2e002f00 Qm (i8)0x00000005 ---- VMULL ---- vmull.s8 q0, d1, d12 :: Qd 0x0000fe0c 0x01980d94 0x0000fe0c 0x01980d94 Qm (i32)0x000abcd4 Qn (i32)0x00cefab1 vmull.s8 q9, d11, d12 :: Qd 0x00000000 0x00010800 0x00000000 0x00010800 Qm (i32)0x00000140 Qn (i32)0x00000120 @@ -1760,35 +2851,93 @@ vmlsl.u32 q10, d30, d31 :: Qd 0x15555555 0x55555555 0x15555555 0x55555555 Qm (i vmlsl.u32 q10, d30, d31 :: Qd 0x35555555 0x55555555 0x35555555 0x55555555 Qm (i32)0x40000000 Qn (i32)0x80000000 ---- VQRDMULH ---- vqrdmulh.s32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q0, q1, q2 :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q0, q1, q2 :: Qd 0x00000014 0x00000013 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 q6, q7, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 q6, q7, q8 :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 q6, q7, q8 :: Qd 0xffffffec 0xffffffed 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqrdmulh.s16 q9, q11, q12 :: Qd 0x00000003 0x00000003 0x00000003 0x00000003 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 q9, q11, q12 :: Qd 0x0000003b 0x00000044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 q9, q11, q12 :: Qd 0x00000039 0x00000046 0x0000003b 0x00000044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqrdmulh.s16 q4, q5, q6 :: Qd 0x00001001 0x00001001 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000648 0x000007c7 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, q9 :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s16 q4, q5, q6 :: Qd 0x0000e50b 0x0000e50b 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000648 0x000007c7 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, q9 :: Qd 0xfffffff4 0xfffffff4 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000040 0x00000040 0x00000040 0x00000040 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, q6 :: Qd 0x00000648 0x000007c7 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, q9 :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, q9 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s32 q10, q11, q15 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q10, q11, q15 :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q10, q11, q15 :: Qd 0x00000014 0x00000013 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 q10, q14, q15 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s32 q10, q14, q15 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 vqrdmulh.s16 q10, q14, q15 :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqrdmulh.s16 q10, q14, q15 :: Qd 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s16 q10, q14, q15 :: Qd 0xeae30000 0xebe40000 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s32 q10, q14, q15 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, q15 :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 q10, q14, q15 :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 q10, q14, q15 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 q10, q14, q15 :: Qd 0x0a8f0000 0x0a0e0000 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQRDMULH (by scalar) ---- vqrdmulh.s32 q0, q1, d6[0] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q0, q1, d6[0] :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q0, q1, d6[0] :: Qd 0x00000014 0x00000013 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 q6, q7, d1[1] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 q6, q7, d1[1] :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 q6, q7, d1[1] :: Qd 0xffffffec 0xffffffed 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqrdmulh.s16 q9, q11, d7[0] :: Qd 0x00000003 0x00000003 0x00000003 0x00000003 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 q9, q11, d7[0] :: Qd 0x002b003b 0x00290044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 q9, q11, d7[0] :: Qd 0x00300039 0x002d0046 0x002b003b 0x00290044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqrdmulh.s16 q4, q5, d6[0] :: Qd 0x00001001 0x00001001 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[0] :: Qd 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[0] :: Qd 0x05480648 0x050707c7 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, d9[1] :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[1] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s16 q4, q5, d6[1] :: Qd 0x0000e50b 0x0000e50b 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[1] :: Qd 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[1] :: Qd 0x05480648 0x050707c7 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, d9[0] :: Qd 0xfffffff4 0xfffffff4 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[0] :: Qd 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[0] :: Qd 0x00000002 0x00000002 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqrdmulh.s16 q4, q5, d6[2] :: Qd 0x04000040 0x04000040 0x04000040 0x04000040 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[2] :: Qd 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 q4, q5, d6[2] :: Qd 0x05480648 0x050707c7 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 q7, q8, d9[0] :: Qd 0x7ffffffd 0x7ffffffd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[0] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 q7, q8, d9[0] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s32 q10, q11, d15[0] :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q10, q11, d15[0] :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 q10, q11, d15[0] :: Qd 0x00000014 0x00000013 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 q10, q14, d15[1] :: Qd 0xffffff88 0xffffff88 0xffffff88 0xffffff88 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, d15[1] :: Qd 0x00000012 0x00000011 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, d15[1] :: Qd 0x00000014 0x00000013 0x00000012 0x00000011 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 q10, q14, d7[3] :: Qd 0x7fff0000 0x7fff0000 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 08000000 +vqrdmulh.s16 q10, q14, d7[3] :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 +vqrdmulh.s16 q10, q14, d7[3] :: Qd 0xeae3e6e3 0xebe4e0e4 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 vqrdmulh.s32 q10, q14, d15[1] :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, d15[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 q10, q14, d15[1] :: Qd 0xeae2e6e3 0xebe3e0e4 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 q10, q14, d7[1] :: Qd 0xc0000000 0xc0000000 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 q10, q14, d7[1] :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 q10, q14, d7[1] :: Qd 0x0a8f0c8f 0x0a0e0f8e 0x098e0d0e 0x09100f10 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VADD (fp) ---- vadd.f32 q0, q5, q2 :: Qd 0xc1b43ac6 0xc1b43ac6 0xc1b43ac6 0xc1b43ac6 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vadd.f32 q3, q4, q5 :: Qd 0xc8a931cf 0xc8a931cf 0xc8a931cf 0xc8a931cf Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 @@ -1955,208 +3104,406 @@ vmul.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0 vmul.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLA (fp) ---- vmla.f32 q0, q5, q2 :: Qd 0xc4831ce4 0xc4831ce4 0xc4831ce4 0xc4831ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmla.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmla.f32 q3, q4, q5 :: Qd 0xcddf4321 0xcddf4321 0xcddf4321 0xcddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmla.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmla.f32 q10, q11, q2 :: Qd 0xcf050e7f 0xcf050e7f 0xcf050e7f 0xcf050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmla.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmla.f32 q9, q5, q7 :: Qd 0x4ec3063f 0x4ec3063f 0x4ec3063f 0x4ec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmla.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmla.f32 q0, q5, q2 :: Qd 0x5029254c 0x5029254c 0x5029254c 0x5029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmla.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmla.f32 q3, q4, q5 :: Qd 0x46fc6200 0x46fc6200 0x46fc6200 0x46fc6200 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vmla.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vmla.f32 q10, q11, q2 :: Qd 0x4c4a89cd 0x4c4a89cd 0x4c4a89cd 0x4c4a89cd Qm (i32)0x473e7300 Qn (i32)0x44882000 +vmla.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vmla.f32 q9, q5, q7 :: Qd 0x4db2c947 0x4db2c947 0x4db2c947 0x4db2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmla.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmla.f32 q0, q11, q12 :: Qd 0x4ef90536 0x4ef90536 0x4ef90536 0x4ef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmla.f32 q0, q11, q12 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmla.f32 q7, q1, q6 :: Qd 0x3f8ab1f8 0x3f8ab1f8 0x3f8ab1f8 0x3f8ab1f8 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmla.f32 q7, q1, q6 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmla.f32 q0, q1, q2 :: Qd 0x488fe2e0 0x488fe2e0 0x488fe2e0 0x488fe2e0 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmla.f32 q3, q4, q5 :: Qd 0x4993b8eb 0x4993b8eb 0x4993b8eb 0x4993b8eb Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmla.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmla.f32 q10, q11, q2 :: Qd 0x474f9bfc 0x474f9bfc 0x474f9bfc 0x474f9bfc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmla.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmla.f32 q9, q5, q7 :: Qd 0x4a657ac4 0x4a657ac4 0x4a657ac4 0x4a657ac4 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmla.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmla.f32 q0, q11, q12 :: Qd 0x489eee3e 0x489eee3e 0x489eee3e 0x489eee3e Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmla.f32 q0, q11, q12 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmla.f32 q7, q1, q6 :: Qd 0xc54ff239 0xc54ff239 0xc54ff239 0xc54ff239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmla.f32 q7, q1, q6 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmla.f32 q0, q5, q2 :: Qd 0xbfb8fa0e 0xbfb8fa0e 0xbfb8fa0e 0xbfb8fa0e Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmla.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmla.f32 q10, q13, q15 :: Qd 0x488666c6 0x488666c6 0x488666c6 0x488666c6 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmla.f32 q10, q13, q15 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmla.f32 q10, q13, q15 :: Qd 0x4f115379 0x4f115379 0x4f115379 0x4f115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmla.f32 q10, q13, q15 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmla.f32 q0, q1, q2 :: Qd 0x5d6e81fd 0x5d6e81fd 0x5d6e81fd 0x5d6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmla.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmla.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmla.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmla.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLA (fp by scalar) ---- vmla.f32 q0, q1, d4[0] :: Qd 0x45341000 0x45341000 0x45341000 0x45341000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 +vmla.f32 q0, q1, d4[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 vmla.f32 q15, q8, d7[1] :: Qd 0xc6833e00 0xc6833e00 0xc6833e00 0xc6833e00 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmla.f32 q15, q8, d7[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmla.f32 q4, q8, d15[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 q4, q8, d15[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmla.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmla.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 q7, q8, d1[0] :: Qd 0x447a3fff 0x447a3fff 0x447a3fff 0x447a3fff Qm (i32)0x64078678 Qn (i32)0x1fec1e4a +vmla.f32 q7, q8, d1[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x64078678 Qn (i32)0x1fec1e4a vmla.f32 q7, q8, d1[0] :: Qd 0x65a96816 0x65a96816 0x65a96816 0x65a96816 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmla.f32 q7, q8, d1[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x40000000 0x40000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x40000000 0x40000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x40000000 0x40000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x40000000 0x40000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x40000000 0x40000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x40000000 0x40000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmla.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmla.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmla.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLS (fp) ---- vmls.f32 q0, q5, q2 :: Qd 0x44835ce4 0x44835ce4 0x44835ce4 0x44835ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmls.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmls.f32 q3, q4, q5 :: Qd 0x4ddf4321 0x4ddf4321 0x4ddf4321 0x4ddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmls.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmls.f32 q10, q11, q2 :: Qd 0x4f050e7f 0x4f050e7f 0x4f050e7f 0x4f050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmls.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmls.f32 q9, q5, q7 :: Qd 0xcec3063f 0xcec3063f 0xcec3063f 0xcec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmls.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmls.f32 q0, q5, q2 :: Qd 0xd029254c 0xd029254c 0xd029254c 0xd029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmls.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmls.f32 q3, q4, q5 :: Qd 0xc6fc5e00 0xc6fc5e00 0xc6fc5e00 0xc6fc5e00 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vmls.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vmls.f32 q10, q11, q2 :: Qd 0xcc4a89cd 0xcc4a89cd 0xcc4a89cd 0xcc4a89cd Qm (i32)0x473e7300 Qn (i32)0x44882000 +vmls.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vmls.f32 q9, q5, q7 :: Qd 0xcdb2c947 0xcdb2c947 0xcdb2c947 0xcdb2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmls.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmls.f32 q0, q11, q12 :: Qd 0xcef90536 0xcef90536 0xcef90536 0xcef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmls.f32 q0, q11, q12 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmls.f32 q7, q1, q6 :: Qd 0x3f6a9c11 0x3f6a9c11 0x3f6a9c11 0x3f6a9c11 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmls.f32 q7, q1, q6 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmls.f32 q0, q1, q2 :: Qd 0xc88fe2a0 0xc88fe2a0 0xc88fe2a0 0xc88fe2a0 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmls.f32 q3, q4, q5 :: Qd 0xc993b8db 0xc993b8db 0xc993b8db 0xc993b8db Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmls.f32 q3, q4, q5 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmls.f32 q10, q11, q2 :: Qd 0xc74f99fc 0xc74f99fc 0xc74f99fc 0xc74f99fc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmls.f32 q10, q11, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmls.f32 q9, q5, q7 :: Qd 0xca657abc 0xca657abc 0xca657abc 0xca657abc Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmls.f32 q9, q5, q7 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmls.f32 q0, q11, q12 :: Qd 0xc89eedfe 0xc89eedfe 0xc89eedfe 0xc89eedfe Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmls.f32 q0, q11, q12 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmls.f32 q7, q1, q6 :: Qd 0x45501239 0x45501239 0x45501239 0x45501239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmls.f32 q7, q1, q6 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmls.f32 q0, q5, q2 :: Qd 0x405c7d07 0x405c7d07 0x405c7d07 0x405c7d07 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmls.f32 q0, q5, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmls.f32 q10, q13, q15 :: Qd 0xc8866686 0xc8866686 0xc8866686 0xc8866686 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmls.f32 q10, q13, q15 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmls.f32 q10, q13, q15 :: Qd 0xcf115379 0xcf115379 0xcf115379 0xcf115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmls.f32 q10, q13, q15 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmls.f32 q0, q1, q2 :: Qd 0xdd6e81fd 0xdd6e81fd 0xdd6e81fd 0xdd6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmls.f32 q0, q1, q2 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, q2 :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLS (fp by scalar) ---- vmls.f32 q0, q1, d4[0] :: Qd 0xc533f000 0xc533f000 0xc533f000 0xc533f000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 +vmls.f32 q0, q1, d4[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 vmls.f32 q15, q8, d7[1] :: Qd 0x46834200 0x46834200 0x46834200 0x46834200 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmls.f32 q15, q8, d7[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmls.f32 q4, q8, d15[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 q4, q8, d15[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmls.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmls.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 q7, q8, d1[1] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 q7, q8, d1[0] :: Qd 0xc479bfff 0xc479bfff 0xc479bfff 0xc479bfff Qm (i32)0x64078678 Qn (i32)0x1fec1e4a +vmls.f32 q7, q8, d1[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x64078678 Qn (i32)0x1fec1e4a vmls.f32 q7, q8, d1[0] :: Qd 0xe5a96816 0xe5a96816 0xe5a96816 0xe5a96816 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmls.f32 q7, q8, d1[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmls.f32 q0, q1, d2[0] :: Qd 0x7fc00000 0x7fc00000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmls.f32 q0, q1, d2[0] :: Qd 0x3f800000 0x3f800000 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmls.f32 q0, q1, d2[0] :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmls.f32 q0, q1, d2[0] :: Qd 0x7f800000 0x7f800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCVT (integer <-> fp) ---- vcvt.u32.f32 q0, q1 :: Qd 0x00000003 0x00000003 0x00000003 0x00000003 Qm (i32)0x404ccccd +vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.u32.f32 q10, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vcvt.u32.f32 q10, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.u32.f32 q15, q4 :: Qd 0xb2d05e00 0xb2d05e00 0xb2d05e00 0xb2d05e00 Qm (i32)0x4f32d05e +vcvt.u32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x4f32d05e +vcvt.u32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 +vcvt.u32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.u32.f32 q12, q8 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i32)0x40fff800 +vcvt.u32.f32 q12, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x40fff800 +vcvt.u32.f32 q12, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.u32.f32 q12, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.s32.f32 q0, q1 :: Qd 0x00000003 0x00000003 0x00000003 0x00000003 Qm (i32)0x404ccccd +vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.s32.f32 q10, q11 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x64cb49b4 +vcvt.s32.f32 q10, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.s32.f32 q15, q4 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x4f32d05e +vcvt.s32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x4f32d05e +vcvt.s32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 q15, q4 :: Qd 0xfffffff9 0xfffffff9 0xfffffff9 0xfffffff9 Qm (i32)0xc0e33333 +vcvt.s32.f32 q15, q4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.s32.f32 q12, q8 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i32)0x40fff800 +vcvt.s32.f32 q12, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x40fff800 vcvt.s32.f32 q12, q8 :: Qd 0xfffffff9 0xfffffff9 0xfffffff9 0xfffffff9 Qm (i32)0xc0fff800 +vcvt.s32.f32 q12, q8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.f32.u32 q0, q1 :: Qd 0x40e00000 0x40e00000 0x40e00000 0x40e00000 Qm (i32)0x00000007 +vcvt.f32.u32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x00000007 vcvt.f32.u32 q10, q11 :: Qd 0x4f000000 0x4f000000 0x4f000000 0x4f000000 Qm (i32)0x80000000 +vcvt.f32.u32 q10, q11 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x80000000 vcvt.f32.u32 q0, q1 :: Qd 0x4f000000 0x4f000000 0x4f000000 0x4f000000 Qm (i32)0x80000001 +vcvt.f32.u32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x80000001 vcvt.f32.u32 q0, q1 :: Qd 0x4f000000 0x4f000000 0x4f000000 0x4f000000 Qm (i32)0x7fffffff +vcvt.f32.u32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x7fffffff vcvt.f32.u32 q0, q14 :: Qd 0x4e4282f4 0x4e4282f4 0x4e4282f4 0x4e4282f4 Qm (i32)0x30a0bcef +vcvt.f32.u32 q0, q14 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x30a0bcef vcvt.f32.s32 q0, q1 :: Qd 0x40e00000 0x40e00000 0x40e00000 0x40e00000 Qm (i32)0x00000007 +vcvt.f32.s32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x00000007 vcvt.f32.s32 q10, q11 :: Qd 0xcf000000 0xcf000000 0xcf000000 0xcf000000 Qm (i32)0x80000000 +vcvt.f32.s32 q10, q11 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x80000000 vcvt.f32.s32 q0, q1 :: Qd 0xcf000000 0xcf000000 0xcf000000 0xcf000000 Qm (i32)0x80000001 +vcvt.f32.s32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x80000001 vcvt.f32.s32 q0, q1 :: Qd 0x4f000000 0x4f000000 0x4f000000 0x4f000000 Qm (i32)0x7fffffff +vcvt.f32.s32 q0, q1 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x7fffffff vcvt.f32.s32 q0, q14 :: Qd 0x4e4282f4 0x4e4282f4 0x4e4282f4 0x4e4282f4 Qm (i32)0x30a0bcef +vcvt.f32.s32 q0, q14 :: Qd 0x4e18b4b5 0x4e14a8b9 0x4e10b0ad 0x4e0cbcb9 Qm (i32)0x30a0bcef vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.u32.f32 q0, q1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 +vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.u32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.s32.f32 q0, q1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x7f800000 +vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.s32.f32 q0, q1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0xff800000 +vcvt.s32.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCVT (fixed <-> fp) ---- vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000019 0x00000019 0x00000019 0x00000019 Qm (i32)0x404ccccd +vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.u32.f32 q10, q11, #1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vcvt.u32.f32 q10, q11, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.u32.f32 q15, q4, #32 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x4f32d05e +vcvt.u32.f32 q15, q4, #32 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x4f32d05e vcvt.u32.f32 q15, q4, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 +vcvt.u32.f32 q15, q4, #7 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 +vcvt.u32.f32 q15, q4, #4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.u32.f32 q15, q4, #4 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.u32.f32 q12, q8, #3 :: Qd 0x0000003f 0x0000003f 0x0000003f 0x0000003f Qm (i32)0x40fff800 +vcvt.u32.f32 q12, q8, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x40fff800 +vcvt.u32.f32 q12, q8, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.u32.f32 q12, q8, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.s32.f32 q0, q1, #5 :: Qd 0x00000066 0x00000066 0x00000066 0x00000066 Qm (i32)0x404ccccd +vcvt.s32.f32 q0, q1, #5 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.s32.f32 q10, q11, #1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x64cb49b4 +vcvt.s32.f32 q10, q11, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.s32.f32 q15, q4, #8 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x4f32d05e +vcvt.s32.f32 q15, q4, #8 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x4f32d05e vcvt.s32.f32 q15, q4, #2 :: Qd 0xfffffffe 0xfffffffe 0xfffffffe 0xfffffffe Qm (i32)0xbf000000 +vcvt.s32.f32 q15, q4, #2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 q15, q4, #1 :: Qd 0xfffffff2 0xfffffff2 0xfffffff2 0xfffffff2 Qm (i32)0xc0e33333 +vcvt.s32.f32 q15, q4, #1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.s32.f32 q12, q8, #2 :: Qd 0x0000001f 0x0000001f 0x0000001f 0x0000001f Qm (i32)0x40fff800 +vcvt.s32.f32 q12, q8, #2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x40fff800 vcvt.s32.f32 q12, q8, #2 :: Qd 0xffffffe1 0xffffffe1 0xffffffe1 0xffffffe1 Qm (i32)0xc0fff800 +vcvt.s32.f32 q12, q8, #2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.f32.u32 q0, q1, #5 :: Qd 0x3e600000 0x3e600000 0x3e600000 0x3e600000 Qm (i32)0x00000007 +vcvt.f32.u32 q0, q1, #5 :: Qd 0x4b98b4b5 0x4b94a8b9 0x4b90b0ad 0x4b8cbcb9 Qm (i32)0x00000007 vcvt.f32.u32 q10, q11, #9 :: Qd 0x4a800000 0x4a800000 0x4a800000 0x4a800000 Qm (i32)0x80000000 +vcvt.f32.u32 q10, q11, #9 :: Qd 0x4998b4b5 0x4994a8b9 0x4990b0ad 0x498cbcb9 Qm (i32)0x80000000 vcvt.f32.u32 q0, q1, #4 :: Qd 0x4d000000 0x4d000000 0x4d000000 0x4d000000 Qm (i32)0x80000001 +vcvt.f32.u32 q0, q1, #4 :: Qd 0x4c18b4b5 0x4c14a8b9 0x4c10b0ad 0x4c0cbcb9 Qm (i32)0x80000001 vcvt.f32.u32 q0, q1, #6 :: Qd 0x4c000000 0x4c000000 0x4c000000 0x4c000000 Qm (i32)0x7fffffff +vcvt.f32.u32 q0, q1, #6 :: Qd 0x4b18b4b5 0x4b14a8b9 0x4b10b0ad 0x4b0cbcb9 Qm (i32)0x7fffffff vcvt.f32.u32 q0, q14, #5 :: Qd 0x4bc282f4 0x4bc282f4 0x4bc282f4 0x4bc282f4 Qm (i32)0x30a0bcef +vcvt.f32.u32 q0, q14, #5 :: Qd 0x4b98b4b5 0x4b94a8b9 0x4b90b0ad 0x4b8cbcb9 Qm (i32)0x30a0bcef vcvt.f32.s32 q0, q1, #12 :: Qd 0x3ae00000 0x3ae00000 0x3ae00000 0x3ae00000 Qm (i32)0x00000007 +vcvt.f32.s32 q0, q1, #12 :: Qd 0x4818b4b5 0x4814a8b9 0x4810b0ad 0x480cbcb9 Qm (i32)0x00000007 vcvt.f32.s32 q10, q11, #8 :: Qd 0xcb000000 0xcb000000 0xcb000000 0xcb000000 Qm (i32)0x80000000 +vcvt.f32.s32 q10, q11, #8 :: Qd 0x4a18b4b5 0x4a14a8b9 0x4a10b0ad 0x4a0cbcb9 Qm (i32)0x80000000 vcvt.f32.s32 q0, q1, #2 :: Qd 0xce000000 0xce000000 0xce000000 0xce000000 Qm (i32)0x80000001 +vcvt.f32.s32 q0, q1, #2 :: Qd 0x4d18b4b5 0x4d14a8b9 0x4d10b0ad 0x4d0cbcb9 Qm (i32)0x80000001 vcvt.f32.s32 q0, q1, #1 :: Qd 0x4e800000 0x4e800000 0x4e800000 0x4e800000 Qm (i32)0x7fffffff +vcvt.f32.s32 q0, q1, #1 :: Qd 0x4d98b4b5 0x4d94a8b9 0x4d90b0ad 0x4d8cbcb9 Qm (i32)0x7fffffff vcvt.f32.s32 q0, q14, #6 :: Qd 0x4b4282f4 0x4b4282f4 0x4b4282f4 0x4b4282f4 Qm (i32)0x30a0bcef +vcvt.f32.s32 q0, q14, #6 :: Qd 0x4b18b4b5 0x4b14a8b9 0x4b10b0ad 0x4b0cbcb9 Qm (i32)0x30a0bcef +vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.u32.f32 q0, q1, #3 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 +vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.u32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.s32.f32 q0, q1, #3 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x7f800000 +vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.s32.f32 q0, q1, #3 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0xff800000 +vcvt.s32.f32 q0, q1, #3 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VMAX (fp) ---- vmax.f32 q0, q5, q2 :: Qd 0x41b851ec 0x41b851ec 0x41b851ec 0x41b851ec Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmax.f32 q3, q4, q5 :: Qd 0x44a84000 0x44a84000 0x44a84000 0x44a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 @@ -2253,37 +3600,69 @@ vmin.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0 vmin.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VRECPE ---- vrecpe.u32 q0, q1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x404ccccd +vrecpe.u32 q0, q1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x404ccccd +vrecpe.u32 q10, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 vrecpe.u32 q10, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x4f32d05e +vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.u32 q15, q4 :: Qd 0xab800000 0xab800000 0xab800000 0xab800000 Qm (i32)0xbf000000 +vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xbf000000 vrecpe.u32 q15, q4 :: Qd 0xaa000000 0xaa000000 0xaa000000 0xaa000000 Qm (i32)0xc0e33333 +vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc0e33333 +vrecpe.u32 q12, q8 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x40fff800 vrecpe.u32 q12, q8 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x40fff800 vrecpe.u32 q12, q8 :: Qd 0xaa000000 0xaa000000 0xaa000000 0xaa000000 Qm (i32)0xc0fff800 +vrecpe.u32 q12, q8 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc0fff800 +vrecpe.u32 q0, q1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x404ccccd vrecpe.u32 q0, q1 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x404ccccd vrecpe.u32 q10, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vrecpe.u32 q10, q11 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.u32 q15, q4 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.f32 q15, q4 :: Qd 0xbfff8000 0xbfff8000 0xbfff8000 0xbfff8000 Qm (i32)0xbf000000 +vrecpe.f32 q15, q4 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0xbf000000 vrecpe.f32 q15, q4 :: Qd 0xbe100000 0xbe100000 0xbe100000 0xbe100000 Qm (i32)0xc0e33333 +vrecpe.f32 q15, q4 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0xc0e33333 vrecpe.f32 q12, q8 :: Qd 0x3e000000 0x3e000000 0x3e000000 0x3e000000 Qm (i32)0x40fff800 +vrecpe.f32 q12, q8 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x40fff800 vrecpe.f32 q12, q8 :: Qd 0xbe000000 0xbe000000 0xbe000000 0xbe000000 Qm (i32)0xc0fff800 +vrecpe.f32 q12, q8 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0xc0fff800 vrecpe.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x00000007 vrecpe.f32 q10, q11 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000000 +vrecpe.f32 q10, q11 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x80000000 vrecpe.f32 q0, q1 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000001 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x80000001 vrecpe.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7fffffff vrecpe.f32 q0, q14 :: Qd 0x4e4c0000 0x4e4c0000 0x4e4c0000 0x4e4c0000 Qm (i32)0x30a0bcef +vrecpe.f32 q0, q14 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x30a0bcef vrecpe.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x00000007 vrecpe.f32 q10, q11 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000000 +vrecpe.f32 q10, q11 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x80000000 vrecpe.f32 q0, q1 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000001 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x80000001 vrecpe.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7fffffff vrecpe.f32 q0, q14 :: Qd 0x4e4c0000 0x4e4c0000 0x4e4c0000 0x4e4c0000 Qm (i32)0x30a0bcef +vrecpe.f32 q0, q14 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x30a0bcef vrecpe.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7fc00000 vrecpe.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x00000000 vrecpe.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7f800000 vrecpe.f32 q0, q1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0xff800000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0xff800000 vrecpe.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7fc00000 vrecpe.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x00000000 vrecpe.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0x7f800000 vrecpe.f32 q0, q1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0xff800000 +vrecpe.f32 q0, q1 :: Qd 0x58bd0000 0x59c08000 0x5abe0000 0x5bbb0000 Qm (i32)0xff800000 ---- VRECPS ---- vrecps.f32 q0, q5, q2 :: Qd 0x44837ce4 0x44837ce4 0x44837ce4 0x44837ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vrecps.f32 q3, q4, q5 :: Qd 0x4ddf4321 0x4ddf4321 0x4ddf4321 0x4ddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 @@ -2327,37 +3706,69 @@ vrecps.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32 vrecps.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VABS (fp) ---- vabs.f32 q0, q1 :: Qd 0x404ccccd 0x404ccccd 0x404ccccd 0x404ccccd Qm (i32)0x404ccccd +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x404ccccd vabs.f32 q10, q11 :: Qd 0x64cb49b4 0x64cb49b4 0x64cb49b4 0x64cb49b4 Qm (i32)0x64cb49b4 +vabs.f32 q10, q11 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x64cb49b4 vabs.f32 q15, q4 :: Qd 0x4f32d05e 0x4f32d05e 0x4f32d05e 0x4f32d05e Qm (i32)0x4f32d05e +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x4f32d05e vabs.f32 q15, q4 :: Qd 0x3f000000 0x3f000000 0x3f000000 0x3f000000 Qm (i32)0xbf000000 +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xbf000000 vabs.f32 q15, q4 :: Qd 0x40e33333 0x40e33333 0x40e33333 0x40e33333 Qm (i32)0xc0e33333 +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xc0e33333 vabs.f32 q12, q8 :: Qd 0x40fff800 0x40fff800 0x40fff800 0x40fff800 Qm (i32)0x40fff800 +vabs.f32 q12, q8 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x40fff800 vabs.f32 q12, q8 :: Qd 0x40fff800 0x40fff800 0x40fff800 0x40fff800 Qm (i32)0xc0fff800 +vabs.f32 q12, q8 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xc0fff800 vabs.f32 q0, q1 :: Qd 0x404ccccd 0x404ccccd 0x404ccccd 0x404ccccd Qm (i32)0x404ccccd +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x404ccccd vabs.f32 q10, q11 :: Qd 0x64cb49b4 0x64cb49b4 0x64cb49b4 0x64cb49b4 Qm (i32)0x64cb49b4 +vabs.f32 q10, q11 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x64cb49b4 vabs.f32 q15, q4 :: Qd 0x4f32d05e 0x4f32d05e 0x4f32d05e 0x4f32d05e Qm (i32)0x4f32d05e +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x4f32d05e vabs.f32 q15, q4 :: Qd 0x3f000000 0x3f000000 0x3f000000 0x3f000000 Qm (i32)0xbf000000 +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xbf000000 vabs.f32 q15, q4 :: Qd 0x40e33333 0x40e33333 0x40e33333 0x40e33333 Qm (i32)0xc0e33333 +vabs.f32 q15, q4 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xc0e33333 vabs.f32 q12, q8 :: Qd 0x40fff800 0x40fff800 0x40fff800 0x40fff800 Qm (i32)0x40fff800 +vabs.f32 q12, q8 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x40fff800 vabs.f32 q12, q8 :: Qd 0x40fff800 0x40fff800 0x40fff800 0x40fff800 Qm (i32)0xc0fff800 +vabs.f32 q12, q8 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xc0fff800 vabs.f32 q0, q1 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i32)0x00000007 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000007 vabs.f32 q10, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vabs.f32 q10, q11 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x80000000 vabs.f32 q0, q1 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x80000001 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x80000001 vabs.f32 q0, q1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x7fffffff +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7fffffff vabs.f32 q0, q14 :: Qd 0x30a0bcef 0x30a0bcef 0x30a0bcef 0x30a0bcef Qm (i32)0x30a0bcef +vabs.f32 q0, q14 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x30a0bcef vabs.f32 q0, q1 :: Qd 0x00000007 0x00000007 0x00000007 0x00000007 Qm (i32)0x00000007 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000007 vabs.f32 q10, q11 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vabs.f32 q10, q11 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x80000000 vabs.f32 q0, q1 :: Qd 0x00000001 0x00000001 0x00000001 0x00000001 Qm (i32)0x80000001 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x80000001 vabs.f32 q0, q1 :: Qd 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff Qm (i32)0x7fffffff +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7fffffff vabs.f32 q0, q14 :: Qd 0x30a0bcef 0x30a0bcef 0x30a0bcef 0x30a0bcef Qm (i32)0x30a0bcef +vabs.f32 q0, q14 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x30a0bcef vabs.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7fc00000 vabs.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000000 vabs.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7f800000 vabs.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xff800000 vabs.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7fc00000 vabs.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x00000000 vabs.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x7f800000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0x7f800000 vabs.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 +vabs.f32 q0, q1 :: Qd 0x262d2d2a 0x252a2e2b 0x242c2b2b 0x232f2e2f Qm (i32)0xff800000 ---- VCGT (fp) ---- vcgt.f32 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 vcgt.f32 q2, q15, q12 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 @@ -2610,70 +4021,130 @@ vceq.f32 q0, q1, q2 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0 vceq.f32 q0, q1, q2 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCEQ (fp) #0 ---- vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 vceq.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000001 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000001 vceq.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000000 +vceq.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 vceq.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec +vceq.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec +vceq.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec vceq.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec vceq.f32 q10, q15, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.f32 q10, q15, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vceq.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vceq.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCGT (fp) #0 ---- vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x01000000 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x01000000 vcgt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000001 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000001 vcgt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vcgt.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000000 +vcgt.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcgt.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcgt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec +vcgt.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc1b851ec vcgt.f32 q10, q15, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.f32 q10, q15, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7fc00000 vcgt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 vcgt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcgt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xff800000 ---- VCLT (fp) #0 ---- vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000001 vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000001 vclt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vclt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vclt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec vclt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec vclt.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc1b851ec +vclt.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec vclt.f32 q10, q15, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 q10, q15, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vclt.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xff800000 +vclt.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCGE (fp) #0 ---- vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x01000000 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x01000000 vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcge.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000000 vcge.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000000 vcge.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x41b851ec +vcge.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcge.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec +vcge.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc1b851ec +vcge.f32 q10, q15, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.f32 q10, q15, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7fc00000 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x7f800000 vcge.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 +vcge.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xff800000 ---- VCLE (fp) #0 ---- vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x01000000 vcle.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000001 vcle.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x80000000 +vcle.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vcle.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec vcle.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x41b851ec vcle.f32 q2, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xc1b851ec +vcle.f32 q2, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xc1b851ec vcle.f32 q10, q15, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 q10, q15, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x00000000 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 q0, q1, #0 :: Qd 0xffffffff 0xffffffff 0xffffffff 0xffffffff Qm (i32)0xff800000 +vcle.f32 q0, q1, #0 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VNEG (fp) ---- vneg.f32 q0, q1 :: Qd 0x81000000 0x81000000 0x81000000 0x81000000 Qm (i32)0x01000000 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x01000000 vneg.f32 q0, q1 :: Qd 0x80000001 0x80000001 0x80000001 0x80000001 Qm (i32)0x00000001 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x00000001 vneg.f32 q2, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x80000000 +vneg.f32 q2, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x80000000 vneg.f32 q2, q1 :: Qd 0xc1b851ec 0xc1b851ec 0xc1b851ec 0xc1b851ec Qm (i32)0x41b851ec +vneg.f32 q2, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x41b851ec vneg.f32 q2, q1 :: Qd 0x41b851ec 0x41b851ec 0x41b851ec 0x41b851ec Qm (i32)0xc1b851ec +vneg.f32 q2, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0xc1b851ec vneg.f32 q10, q15 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x00000000 +vneg.f32 q10, q15 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x00000000 vneg.f32 q0, q1 :: Qd 0xffc00000 0xffc00000 0xffc00000 0xffc00000 Qm (i32)0x7fc00000 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x7fc00000 vneg.f32 q0, q1 :: Qd 0x80000000 0x80000000 0x80000000 0x80000000 Qm (i32)0x00000000 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x00000000 vneg.f32 q0, q1 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x7f800000 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0x7f800000 vneg.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0xff800000 +vneg.f32 q0, q1 :: Qd 0xa62d2d2a 0xa52a2e2b 0xa42c2b2b 0xa32f2e2f Qm (i32)0xff800000 ---- VRSQRTS ---- vrsqrts.f32 q0, q5, q2 :: Qd 0x44039ce4 0x44039ce4 0x44039ce4 0x44039ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vrsqrts.f32 q3, q4, q5 :: Qd 0x4d5f4321 0x4d5f4321 0x4d5f4321 0x4d5f4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 @@ -2717,30 +4188,58 @@ vrsqrts.f32 q0, q1, q2 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i3 vrsqrts.f32 q0, q1, q2 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VRSQRTE (fp) ---- vrsqrte.f32 q0, q1 :: Qd 0x3f0f0000 0x3f0f0000 0x3f0f0000 0x3f0f0000 Qm (i32)0x404ccccd +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x404ccccd vrsqrte.f32 q10, q11 :: Qd 0x2ccb0000 0x2ccb0000 0x2ccb0000 0x2ccb0000 Qm (i32)0x64cb49b4 +vrsqrte.f32 q10, q11 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x64cb49b4 vrsqrte.f32 q15, q4 :: Qd 0x37998000 0x37998000 0x37998000 0x37998000 Qm (i32)0x4f32d05e +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x4f32d05e vrsqrte.f32 q15, q4 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xbf000000 +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xbf000000 vrsqrte.f32 q15, q4 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xc0e33333 +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xc0e33333 vrsqrte.f32 q12, q8 :: Qd 0x3eb50000 0x3eb50000 0x3eb50000 0x3eb50000 Qm (i32)0x40fff800 +vrsqrte.f32 q12, q8 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x40fff800 vrsqrte.f32 q12, q8 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xc0fff800 +vrsqrte.f32 q12, q8 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xc0fff800 vrsqrte.f32 q0, q1 :: Qd 0x3f0f0000 0x3f0f0000 0x3f0f0000 0x3f0f0000 Qm (i32)0x404ccccd +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x404ccccd vrsqrte.f32 q10, q11 :: Qd 0x2ccb0000 0x2ccb0000 0x2ccb0000 0x2ccb0000 Qm (i32)0x64cb49b4 +vrsqrte.f32 q10, q11 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x64cb49b4 vrsqrte.f32 q15, q4 :: Qd 0x37998000 0x37998000 0x37998000 0x37998000 Qm (i32)0x4f32d05e +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x4f32d05e vrsqrte.f32 q15, q4 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xbf000000 +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xbf000000 vrsqrte.f32 q15, q4 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xc0e33333 +vrsqrte.f32 q15, q4 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xc0e33333 vrsqrte.f32 q12, q8 :: Qd 0x3eb50000 0x3eb50000 0x3eb50000 0x3eb50000 Qm (i32)0x40fff800 +vrsqrte.f32 q12, q8 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x40fff800 vrsqrte.f32 q12, q8 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xc0fff800 +vrsqrte.f32 q12, q8 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xc0fff800 vrsqrte.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x00000007 vrsqrte.f32 q10, q11 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000000 +vrsqrte.f32 q10, q11 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x80000000 vrsqrte.f32 q0, q1 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000001 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x80000001 vrsqrte.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x7fffffff vrsqrte.f32 q0, q14 :: Qd 0x46e48000 0x46e48000 0x46e48000 0x46e48000 Qm (i32)0x30a0bcef +vrsqrte.f32 q0, q14 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x30a0bcef vrsqrte.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x00000007 vrsqrte.f32 q10, q11 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000000 +vrsqrte.f32 q10, q11 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x80000000 vrsqrte.f32 q0, q1 :: Qd 0xff800000 0xff800000 0xff800000 0xff800000 Qm (i32)0x80000001 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x80000001 vrsqrte.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x7fffffff vrsqrte.f32 q0, q14 :: Qd 0x46e48000 0x46e48000 0x46e48000 0x46e48000 Qm (i32)0x30a0bcef +vrsqrte.f32 q0, q14 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x30a0bcef vrsqrte.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x7fc00000 vrsqrte.f32 q0, q1 :: Qd 0x7f800000 0x7f800000 0x7f800000 0x7f800000 Qm (i32)0x00000000 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x00000000 vrsqrte.f32 q0, q1 :: Qd 0x00000000 0x00000000 0x00000000 0x00000000 Qm (i32)0x7f800000 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0x7f800000 vrsqrte.f32 q0, q1 :: Qd 0x7fc00000 0x7fc00000 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 +vrsqrte.f32 q0, q1 :: Qd 0x4c1b8000 0x4c9d0000 0x4d1c0000 0x4d9a8000 Qm (i32)0xff800000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.c index e826c1663..a936302b1 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.c @@ -63,6 +63,22 @@ const unsigned int mem[] = { ); \ printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ instruction, out[1], out[0]); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %1, %2\n\t" \ + "vldmia %1!, {" #QD "}\n\t" \ + instruction ", #" #imm "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (addr), "r" (mem) \ + : #QD, "%2", "memory" \ + ); \ + printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ + instruction, out[1], out[0]); \ } #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ @@ -80,6 +96,24 @@ const unsigned int mem[] = { ); \ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ instruction, out[1], out[0], QMval); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %2, %3\n\t" \ + "vldmia %2!, {" #QD "}\n\t" \ + "vldmia %2!, {" #QM "}\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ + : #QD, #QM, "%2", "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ + instruction, out[1], out[0], QMval ); \ } #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ @@ -102,6 +136,28 @@ const unsigned int mem[] = { ); \ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ instruction, out[1], out[0], QMval, fpscr); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int fpscr; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + "mov %3, %4\n\t" \ + "vldmia %3!, {" #QM "}\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + MOVE_to_R4_from_FPSCR \ + "mov %0, r4" \ + : "=r" (fpscr) \ + : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ + : #QD, #QM, "memory", "r4" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ + instruction, out[1], out[0], QMval, fpscr); \ } #define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \ @@ -140,7 +196,7 @@ const unsigned int mem[] = { #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \ { \ - unsigned int out[8]; \ + unsigned int out[9]; \ \ __asm__ volatile( \ "vmov.i8 " #QD1 ", #0x55" "\n\t" \ @@ -153,20 +209,21 @@ const unsigned int mem[] = { "vstmia %0!, {" #QD2 "}\n\t" \ "vstmia %0!, {" #QD3 "}\n\t" \ "vstmia %0!, {" #QD4 "}\n\t" \ + "str %1, [%2]\n\t" \ "mov %0, r4\n\t" \ : \ - : "r" (out), "r" (mem) \ + : "r" (out), "r" (mem), "r"(&out[8]) \ : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ ); \ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ - "0x%08x 0x%08x 0x%08x 0x%08x\n", \ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ instruction, out[0], out[1], out[2], out[3], out[4],\ - out[5], out[6], out[7]); \ + out[5], out[6], out[7], (int)out[8]-(int)mem); \ } #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \ { \ - unsigned int out[8]; \ + unsigned int out[9]; \ \ memset(out, 0x55, 8 * (sizeof(unsigned int)));\ __asm__ volatile( \ @@ -177,14 +234,126 @@ const unsigned int mem[] = { "vldmia %1!, {" #QD4 "}\n\t" \ "mov %1, r4\n\t" \ instruction ", [%0]\n\t" \ + "str %0, [%2]\n\t" \ : \ - : "r" (out), "r" (mem) \ + : "r" (out), "r" (mem), "r"(&out[8]) \ : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ ); \ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ - "0x%08x 0x%08x 0x%08x 0x%08x\n", \ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ instruction, out[0], out[1], out[2], out[3], out[4],\ - out[5], out[6], out[7]); \ + out[5], out[6], out[7], (int)out[8]-(int)out); \ +} + +#define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \ +{ \ + unsigned int out[9]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %0, %2\n\t" \ + "vmov.i8 " #QD1 ", #0x55" "\n\t" \ + "vmov.i8 " #QD2 ", #0x55" "\n\t" \ + "vmov.i8 " #QD3 ", #0x55" "\n\t" \ + "vmov.i8 " #QD4 ", #0x55" "\n\t" \ + instruction ", [%0]!\n\t" \ + "mov r4, %1\n\t" \ + "vstmia %1!, {" #QD1 "}\n\t" \ + "vstmia %1!, {" #QD2 "}\n\t" \ + "vstmia %1!, {" #QD3 "}\n\t" \ + "vstmia %1!, {" #QD4 "}\n\t" \ + "str %0, [%3]\n\t" \ + "mov %1, r4\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (mem), "r"(&out[8]) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7], (int)out[8]-(int)mem); \ +} + +#define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \ +{ \ + unsigned int out[9]; \ + unsigned int addr = 0; \ + \ + memset(out, 0x55, 8 * (sizeof(unsigned int)));\ + __asm__ volatile( \ + "mov %0, %1\n\t" \ + "mov r4, %2\n\t" \ + "vldmia r4!, {" #QD1 "}\n\t" \ + "vldmia r4!, {" #QD2 "}\n\t" \ + "vldmia r4!, {" #QD3 "}\n\t" \ + "vldmia r4!, {" #QD4 "}\n\t" \ + instruction ", [%0]!\n\t" \ + "str %0, [%3]\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (mem), "r"(&out[8]) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7], (int)out[8]-(int)out); \ +} + +#define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ +{ \ + unsigned int out[9]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %0, %2\n\t" \ + "vmov.i8 " #QD1 ", #0x55" "\n\t" \ + "vmov.i8 " #QD2 ", #0x55" "\n\t" \ + "vmov.i8 " #QD3 ", #0x55" "\n\t" \ + "vmov.i8 " #QD4 ", #0x55" "\n\t" \ + "mov " #RM ", %4\n\t" \ + instruction ", [%0], " #RM "\n\t" \ + "mov r4, %1\n\t" \ + "vstmia %1!, {" #QD1 "}\n\t" \ + "vstmia %1!, {" #QD2 "}\n\t" \ + "vstmia %1!, {" #QD3 "}\n\t" \ + "vstmia %1!, {" #QD4 "}\n\t" \ + "str %0, [%3]\n\t" \ + "mov %1, r4\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7], (int)out[8]-(int)addr); \ +} + + +#define TESTINSN_VSTn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ +{ \ + unsigned int out[9]; \ + unsigned int addr = 0; \ + \ + memset(out, 0x55, 8 * (sizeof(unsigned int)));\ + __asm__ volatile( \ + "mov %0, %1\n\t" \ + "mov r4, %2\n\t" \ + "vldmia r4!, {" #QD1 "}\n\t" \ + "vldmia r4!, {" #QD2 "}\n\t" \ + "vldmia r4!, {" #QD3 "}\n\t" \ + "vldmia r4!, {" #QD4 "}\n\t" \ + "mov " #RM ", %4\n\t" \ + instruction ", [%0], " #RM "\n\t" \ + "str %0, [%3]\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (mem), "r"(&out[8]), "r"(#RMval) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7], (int)out[8]-(int)out); \ } #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ @@ -204,6 +373,25 @@ const unsigned int mem[] = { printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x\n", \ instruction, out[1], out[0], QMval, QNval); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %0, %4\n\t" \ + "vldmia %0!, {" #QM "}\n\t" \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + : "+r" (addr) \ + : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out[1], out[0], QMval, QNval); \ } #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ @@ -223,6 +411,25 @@ const unsigned int mem[] = { printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x\n", \ instruction, out[1], out[0], QMval, QNval); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vdup.i32 " #QD ", %3\n\t" \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out[1], out[0], QMval, QNval); \ } #define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ @@ -250,7 +457,34 @@ const unsigned int mem[] = { " Qn3 (" #QN3type ")0x%08x" \ " Qn4 (" #QN4type ")0x%08x\n", \ instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %6, %7\n\t" \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "vdup." #QMtype " " #QM ", %1\n\t" \ + "vldmia %6!, {" #QN1 "}\n\t" \ + "vdup." #QN2type " " #QN2 ", %3\n\t" \ + "vldmia %6!, {" #QN3 "}\n\t" \ + "vdup." #QN4type " " #QN4 ", %5\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ + "r" (QN4val), "r" (addr), "r" (mem) \ + : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn1 (" #QN1type ")0x%08x" \ + " Qn2 (" #QN2type ")0x%08x" \ + " Qn3 (" #QN3type ")0x%08x" \ + " Qn4 (" #QN4type ")0x%08x\n", \ + instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ } + #define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \ TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val) @@ -289,46 +523,72 @@ const unsigned int mem[] = { printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ instruction, out[1], out[0], QMval, QNval, fpscr); \ +} \ +{ \ + unsigned int out[2]; \ + unsigned int fpscr; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #QD "}\n\t" \ + MOVE_to_R4_from_FPSCR \ + "mov %0, r4" \ + : "=r" (fpscr) \ + : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ + : #QD, #QM, #QN, "memory", "r4" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ + instruction, out[1], out[0], QMval, QNval, fpscr); \ } #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ { \ - unsigned int out1[2]; \ - unsigned int out2[2]; \ -\ - __asm__ volatile( \ - "vdup." #QMtype " " #QM ", %2\n\t" \ - "vdup." #QNtype " " #QN ", %3\n\t" \ - instruction "\n\t" \ - "vstmia %0, {" #QM "}\n\t" \ - "vstmia %1, {" #QN "}\n\t" \ - : \ - : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \ - : #QM, #QN, "memory" \ - ); \ - printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ - " Qn (" #QNtype ")0x%08x\n", \ - instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ -} - -// Ditto TESTING_bin(), but in QD all zeros -#define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ + unsigned int out1[2]; \ + unsigned int out2[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QM "}\n\t" \ + "vstmia %1, {" #QN "}\n\t" \ + : \ + : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ + : #QM, #QN, "memory" \ + ); \ + printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ +} \ { \ - unsigned int out[2]; \ -\ - __asm__ volatile( \ - "vmov.i8 " #QD ", #0x00" "\n\t" \ - "vdup." #QMtype " " #QM ", %1\n\t" \ - "vdup." #QNtype " " #QN ", %2\n\t" \ - instruction "\n\t" \ - "vstmia %0, {" #QD "}\n\t" \ - : \ - : "r" (out), "r" (QMval), "r" (QNval) \ - : #QD, #QM, #QN, "memory" \ - ); \ - printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ - " Qn (" #QNtype ")0x%08x\n", \ - instruction, out[1], out[0], QMval, QNval); \ + unsigned int out1[2]; \ + unsigned int out2[2]; \ + unsigned int addr = 0; \ + \ + __asm__ volatile( \ + "mov %4, %5\n\t" \ + "vldmia %4!, {" #QM "}\n\t" \ + "vdup." #QNtype " " #QN ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QM "}\n\t" \ + "vstmia %1, {" #QN "}\n\t" \ + : \ + : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ + : #QM, #QN, "%4", "memory" \ + ); \ + printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ } #if 0 @@ -1734,6 +1994,618 @@ int main(int argc, char **argv) TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); + printf("---- VLD1 (multiple single elements) ----\n"); + TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.32 {d0}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.64 {d0}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d9}", d9, d9, d9, d9); + TESTINSN_VLDn_WB("vld1.16 {d17}", d17, d17, d17, d17); + TESTINSN_VLDn_WB("vld1.32 {d31}", d31, d31, d31, d31); + TESTINSN_VLDn_WB("vld1.64 {d14}", d14, d14, d14, d14); + TESTINSN_VLDn_WB("vld1.8 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld1.16 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld1.32 {d5-d6}", d5, d6, d5, d6); + TESTINSN_VLDn_WB("vld1.64 {d30-d31}", d30, d31, d30, d31); + TESTINSN_VLDn_WB("vld1.8 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld1.16 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld1.32 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld1.64 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld1.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld1.16 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3); + + printf("---- VLD1 (single element to one lane) ----\n"); + TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.16 {d1[0]}", d1, d1, d1, d1); + TESTINSN_VLDn_WB("vld1.16 {d1[1]}", d1, d1, d1, d1); + TESTINSN_VLDn_WB("vld1.16 {d1[2]}", d1, d1, d1, d1); + TESTINSN_VLDn_WB("vld1.16 {d1[3]}", d1, d1, d1, d1); + TESTINSN_VLDn_WB("vld1.8 {d0[7]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d1[6]}", d1, d1, d1, d1); + TESTINSN_VLDn_WB("vld1.8 {d0[5]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d0[4]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d20[3]}", d20, d20, d20, d20); + TESTINSN_VLDn_WB("vld1.8 {d0[2]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17); + TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30); + + printf("---- VLD1 (single element to all lanes) ----\n"); + TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.32 {d0[]}", d0, d0, d0, d0); + TESTINSN_VLDn_WB("vld1.8 {d9[]}", d9, d9, d9, d9); + TESTINSN_VLDn_WB("vld1.16 {d17[]}", d17, d17, d17, d17); + TESTINSN_VLDn_WB("vld1.32 {d31[]}", d31, d31, d31, d31); + TESTINSN_VLDn_WB("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); + + printf("---- VLD2 (multiple 2-elements) ----\n"); + TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31); + TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.32 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d10,d12}", d10, d12, d10, d12); + TESTINSN_VLDn_WB("vld2.16 {d20,d22}", d20, d22, d20, d22); + TESTINSN_VLDn_WB("vld2.32 {d0,d2}", d0, d2, d0, d2); + TESTINSN_VLDn_WB("vld2.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23); + TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3); + + printf("---- VLD2 (single 2-element structure to one lane) ----\n"); + TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); + TESTINSN_VLDn_WB("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); + TESTINSN_VLDn_WB("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); + TESTINSN_VLDn_WB("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); + TESTINSN_VLDn_WB("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); + TESTINSN_VLDn_WB("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); + TESTINSN_VLDn_WB("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); + TESTINSN_VLDn_WB("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); + TESTINSN_VLDn_WB("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); + TESTINSN_VLDn_WB("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); + TESTINSN_VLDn_WB("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); + TESTINSN_VLDn_WB("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); + TESTINSN_VLDn_WB("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); + TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); + + printf("---- VLD2 (2-elements to all lanes) ----\n"); + TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); + TESTINSN_VLDn_WB("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); + TESTINSN_VLDn_WB("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); + TESTINSN_VLDn_WB("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); + TESTINSN_VLDn_WB("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); + TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); + TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); + + printf("---- VLD3 (multiple 3-elements) ----\n"); + TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20); + TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld3.32 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VLDn_WB("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); + TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); + TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); + + printf("---- VLD3 (single 3-element structure to one lane) ----\n"); + TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); + TESTINSN_VLDn_WB("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); + TESTINSN_VLDn_WB("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); + TESTINSN_VLDn_WB("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); + TESTINSN_VLDn_WB("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); + TESTINSN_VLDn_WB("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); + TESTINSN_VLDn_WB("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); + TESTINSN_VLDn_WB("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); + TESTINSN_VLDn_WB("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); + TESTINSN_VLDn_WB("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); + TESTINSN_VLDn_WB("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); + TESTINSN_VLDn_WB("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); + TESTINSN_VLDn_WB("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); + TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); + + printf("---- VLD3 (3-elements to all lanes) ----\n"); + TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); + TESTINSN_VLDn_WB("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); + TESTINSN_VLDn_WB("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); + TESTINSN_VLDn_WB("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); + TESTINSN_VLDn_WB("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); + TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); + TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); + + printf("---- VLD4 (multiple 3-elements) ----\n"); + TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23); + TESTINSN_VLDn_WB("vld4.32 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); + TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); + TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); + + printf("---- VLD4 (single 4-element structure to one lane) ----\n"); + TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); + TESTINSN_VLDn_WB("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); + TESTINSN_VLDn_WB("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); + TESTINSN_VLDn_WB("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); + TESTINSN_VLDn_WB("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); + TESTINSN_VLDn_WB("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); + TESTINSN_VLDn_WB("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); + TESTINSN_VLDn_WB("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); + TESTINSN_VLDn_WB("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); + TESTINSN_VLDn_WB("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); + TESTINSN_VLDn_WB("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); + TESTINSN_VLDn_WB("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); + TESTINSN_VLDn_WB("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); + TESTINSN_VLDn_WB("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); + TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); + + printf("---- VLD4 (4-elements to all lanes) ----\n"); + TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); + TESTINSN_VLDn_WB("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); + TESTINSN_VLDn_WB("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); + TESTINSN_VLDn_WB("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); + TESTINSN_VLDn_WB("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); + TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); + TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); + + printf("---- VST1 (multiple single elements) ----\n"); + TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.32 {d0}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.64 {d0}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.8 {d9}", d9, d9, d9, d9); + TESTINSN_VSTn_WB("vst1.16 {d17}", d17, d17, d17, d17); + TESTINSN_VSTn_WB("vst1.32 {d31}", d31, d31, d31, d31); + TESTINSN_VSTn_WB("vst1.64 {d14}", d14, d14, d14, d14); + TESTINSN_VSTn_WB("vst1.8 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst1.16 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst1.32 {d5-d6}", d5, d6, d5, d6); + TESTINSN_VSTn_WB("vst1.64 {d30-d31}", d30, d31, d30, d31); + TESTINSN_VSTn_WB("vst1.8 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst1.16 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst1.32 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst1.64 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst1.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst1.16 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3); + + printf("---- VST1 (single element from one lane) ----\n"); + TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.16 {d1[0]}", d1, d1, d1, d1); + TESTINSN_VSTn_WB("vst1.16 {d1[1]}", d1, d1, d1, d1); + TESTINSN_VSTn_WB("vst1.16 {d1[2]}", d1, d1, d1, d1); + TESTINSN_VSTn_WB("vst1.16 {d1[3]}", d1, d1, d1, d1); + TESTINSN_VSTn_WB("vst1.8 {d0[7]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.8 {d1[6]}", d1, d1, d1, d1); + TESTINSN_VSTn_WB("vst1.8 {d0[5]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.8 {d0[4]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.8 {d20[3]}", d20, d20, d20, d20); + TESTINSN_VSTn_WB("vst1.8 {d0[2]}", d0, d0, d0, d0); + TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17); + TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30); + + printf("---- VST2 (multiple 2-elements) ----\n"); + TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31); + TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.32 {d0-d1}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.8 {d10,d12}", d10, d12, d10, d12); + TESTINSN_VSTn_WB("vst2.16 {d20,d22}", d20, d22, d20, d22); + TESTINSN_VSTn_WB("vst2.32 {d0,d2}", d0, d2, d0, d2); + TESTINSN_VSTn_WB("vst2.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23); + TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3); + + printf("---- VST2 (single 2-element structure from one lane) ----\n"); + TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); + TESTINSN_VSTn_WB("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); + TESTINSN_VSTn_WB("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); + TESTINSN_VSTn_WB("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); + TESTINSN_VSTn_WB("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); + TESTINSN_VSTn_WB("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); + TESTINSN_VSTn_WB("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); + TESTINSN_VSTn_WB("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); + TESTINSN_VSTn_WB("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); + TESTINSN_VSTn_WB("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); + TESTINSN_VSTn_WB("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); + TESTINSN_VSTn_WB("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); + TESTINSN_VSTn_WB("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); + TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); + TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); + + printf("---- VST3 (multiple 3-elements) ----\n"); + TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20); + TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst3.32 {d0-d2}", d0, d1, d2, d0); + TESTINSN_VSTn_WB("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); + TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); + TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); + + printf("---- VST3 (single 3-element structure from one lane) ----\n"); + TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); + TESTINSN_VSTn_WB("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); + TESTINSN_VSTn_WB("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); + TESTINSN_VSTn_WB("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); + TESTINSN_VSTn_WB("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); + TESTINSN_VSTn_WB("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); + TESTINSN_VSTn_WB("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); + TESTINSN_VSTn_WB("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); + TESTINSN_VSTn_WB("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); + TESTINSN_VSTn_WB("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); + TESTINSN_VSTn_WB("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); + TESTINSN_VSTn_WB("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); + TESTINSN_VSTn_WB("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); + TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); + TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); + + printf("---- VST4 (multiple 4-elements) ----\n"); + TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23); + TESTINSN_VSTn_WB("vst4.32 {d0-d3}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); + TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); + TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); + + printf("---- VST4 (single 4-element structure from one lane) ----\n"); + TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); + TESTINSN_VSTn_WB("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); + TESTINSN_VSTn_WB("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); + TESTINSN_VSTn_WB("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); + TESTINSN_VSTn_WB("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); + TESTINSN_VSTn_WB("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); + TESTINSN_VSTn_WB("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); + TESTINSN_VSTn_WB("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); + TESTINSN_VSTn_WB("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); + TESTINSN_VSTn_WB("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); + TESTINSN_VSTn_WB("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); + TESTINSN_VSTn_WB("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); + TESTINSN_VSTn_WB("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); + TESTINSN_VSTn_WB("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); + TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); + TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); + + printf("---- VLD1 (multiple single elements) ----\n"); + TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13); + TESTINSN_VLDn_RI("vld1.32 {d0}", d0, d0, d0, d0, r5, 42); + TESTINSN_VLDn_RI("vld1.64 {d0}", d0, d0, d0, d0, r5, 0); + TESTINSN_VLDn_RI("vld1.8 {d9}", d9, d9, d9, d9, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d17}", d17, d17, d17, d17, r6, 13); + TESTINSN_VLDn_RI("vld1.32 {d31}", d31, d31, d31, d31, r5, -3); + TESTINSN_VLDn_RI("vld1.64 {d14}", d14, d14, d14, d14, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); + TESTINSN_VLDn_RI("vld1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); + + printf("---- VLD1 (single element to one lane) ----\n"); + TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); + TESTINSN_VLDn_RI("vld1.16 {d1[0]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d1[1]}", d1, d1, d1, d1, r1, 0); + TESTINSN_VLDn_RI("vld1.16 {d1[2]}", d1, d1, d1, d1, r5, -3); + TESTINSN_VLDn_RI("vld1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); + + printf("---- VLD1 (single element to all lanes) ----\n"); + TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42); + TESTINSN_VLDn_RI("vld1.32 {d0[]}", d0, d0, d0, d0, r1, 0); + TESTINSN_VLDn_RI("vld1.8 {d9[]}", d9, d9, d9, d9, r5, -3); + TESTINSN_VLDn_RI("vld1.16 {d17[]}", d17, d17, d17, d17, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d31[]}", d31, d31, d31, d31, r5, 13); + TESTINSN_VLDn_RI("vld1.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13); + + printf("---- VLD2 (multiple 2-elements) ----\n"); + TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); + TESTINSN_VLDn_RI("vld2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); + TESTINSN_VLDn_RI("vld2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); + TESTINSN_VLDn_RI("vld2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); + TESTINSN_VLDn_RI("vld2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); + TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); + + printf("---- VLD2 (single 2-element structure to one lane) ----\n"); + TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); + TESTINSN_VLDn_RI("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); + TESTINSN_VLDn_RI("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); + TESTINSN_VLDn_RI("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); + + printf("---- VLD2 (2-elements to all lanes) ----\n"); + TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42); + TESTINSN_VLDn_RI("vld2.32 {d0[],d1[]}", d0, d1, d0, d1, r1, 0); + TESTINSN_VLDn_RI("vld2.8 {d9[],d11[]}", d9, d11, d9, d11, r5, -3); + TESTINSN_VLDn_RI("vld2.16 {d17[],d18[]}", d17, d18, d17, d18, r5, 13); + TESTINSN_VLDn_RI("vld2.32 {d30[],d31[]}", d30, d31, d30, d31, r5, 13); + TESTINSN_VLDn_RI("vld2.8 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); + TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13); + + printf("---- VLD3 (multiple 3-elements) ----\n"); + TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); + TESTINSN_VLDn_RI("vld3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); + TESTINSN_VLDn_RI("vld3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); + TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); + TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); + + printf("---- VLD3 (single 3-element structure to one lane) ----\n"); + TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); + TESTINSN_VLDn_RI("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); + TESTINSN_VLDn_RI("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); + TESTINSN_VLDn_RI("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); + + printf("---- VLD3 (3-elements to all lanes) ----\n"); + TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42); + TESTINSN_VLDn_RI("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1, r1, 0); + TESTINSN_VLDn_RI("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11, r5, -3); + TESTINSN_VLDn_RI("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18, r5, 13); + TESTINSN_VLDn_RI("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31, r5, 13); + TESTINSN_VLDn_RI("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); + TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13); + + printf("---- VLD4 (multiple 3-elements) ----\n"); + TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0); + TESTINSN_VLDn_RI("vld4.32 {d0-d3}", d0, d1, d2, d3, r0, 42); + TESTINSN_VLDn_RI("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); + TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); + TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); + + printf("---- VLD4 (single 4-element structure to one lane) ----\n"); + TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); + TESTINSN_VLDn_RI("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); + TESTINSN_VLDn_RI("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); + TESTINSN_VLDn_RI("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); + + printf("---- VLD4 (4-elements to all lanes) ----\n"); + TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42); + TESTINSN_VLDn_RI("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r1, 0); + TESTINSN_VLDn_RI("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15, r5, -3); + TESTINSN_VLDn_RI("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20, r5, 13); + TESTINSN_VLDn_RI("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31, r5, 13); + TESTINSN_VLDn_RI("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); + TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); + TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13); + + printf("---- VST1 (multiple single elements) ----\n"); + TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42); + TESTINSN_VSTn_RI("vst1.32 {d0}", d0, d0, d0, d0, r5, 0); + TESTINSN_VSTn_RI("vst1.64 {d0}", d0, d0, d0, d0, r5, -3); + TESTINSN_VSTn_RI("vst1.8 {d9}", d9, d9, d9, d9, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d17}", d17, d17, d17, d17, r5, 13); + TESTINSN_VSTn_RI("vst1.32 {d31}", d31, d31, d31, d31, r5, 13); + TESTINSN_VSTn_RI("vst1.64 {d14}", d14, d14, d14, d14, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); + TESTINSN_VSTn_RI("vst1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); + + printf("---- VST1 (single element from one lane) ----\n"); + TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); + TESTINSN_VSTn_RI("vst1.16 {d1[0]}", d1, d1, d1, d1, r1, 0); + TESTINSN_VSTn_RI("vst1.16 {d1[1]}", d1, d1, d1, d1, r5, -3); + TESTINSN_VSTn_RI("vst1.16 {d1[2]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VSTn_RI("vst1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); + TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); + + printf("---- VST2 (multiple 2-elements) ----\n"); + TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); + TESTINSN_VSTn_RI("vst2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); + TESTINSN_VSTn_RI("vst2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); + TESTINSN_VSTn_RI("vst2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); + TESTINSN_VSTn_RI("vst2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); + TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); + + printf("---- VST2 (single 2-element structure from one lane) ----\n"); + TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); + TESTINSN_VSTn_RI("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); + TESTINSN_VSTn_RI("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); + TESTINSN_VSTn_RI("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VSTn_RI("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); + TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); + + printf("---- VST3 (multiple 3-elements) ----\n"); + TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); + TESTINSN_VSTn_RI("vst3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); + TESTINSN_VSTn_RI("vst3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); + TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); + TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); + + printf("---- VST3 (single 3-element structure from one lane) ----\n"); + TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); + TESTINSN_VSTn_RI("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); + TESTINSN_VSTn_RI("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); + TESTINSN_VSTn_RI("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VSTn_RI("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); + TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); + + printf("---- VST4 (multiple 4-elements) ----\n"); + TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42); + TESTINSN_VSTn_RI("vst4.32 {d0-d3}", d0, d1, d2, d3, r1, 0); + TESTINSN_VSTn_RI("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); + TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); + TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); + + printf("---- VST4 (single 4-element structure from one lane) ----\n"); + TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); + TESTINSN_VSTn_RI("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); + TESTINSN_VSTn_RI("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); + TESTINSN_VSTn_RI("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VSTn_RI("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); + TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); + printf("---- VMOVN ----\n"); TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.stdout.exp index 6ec95e47a..a42cf783b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/neon64.stdout.exp @@ -1,989 +1,1928 @@ ----- VMOV (immediate) ----- vmov.i32 d0, #0x7 :: Qd 0x00000007 0x00000007 +vmov.i32 d0, #0x7 :: Qd 0x00000007 0x00000007 +vmov.i16 d1, #0x7 :: Qd 0x00070007 0x00070007 vmov.i16 d1, #0x7 :: Qd 0x00070007 0x00070007 vmov.i8 d2, #0x7 :: Qd 0x07070707 0x07070707 +vmov.i8 d2, #0x7 :: Qd 0x07070707 0x07070707 +vmov.i32 d5, #0x700 :: Qd 0x00000700 0x00000700 vmov.i32 d5, #0x700 :: Qd 0x00000700 0x00000700 vmov.i16 d7, #0x700 :: Qd 0x07000700 0x07000700 +vmov.i16 d7, #0x700 :: Qd 0x07000700 0x07000700 +vmov.i32 d10, #0x70000 :: Qd 0x00070000 0x00070000 vmov.i32 d10, #0x70000 :: Qd 0x00070000 0x00070000 vmov.i32 d12, #0x7000000 :: Qd 0x07000000 0x07000000 +vmov.i32 d12, #0x7000000 :: Qd 0x07000000 0x07000000 +vmov.i32 d13, #0x7FF :: Qd 0x000007ff 0x000007ff vmov.i32 d13, #0x7FF :: Qd 0x000007ff 0x000007ff vmov.i32 d14, #0x7FFFF :: Qd 0x0007ffff 0x0007ffff +vmov.i32 d14, #0x7FFFF :: Qd 0x0007ffff 0x0007ffff +vmov.i64 d15, #0xFF0000FF00FFFF00 :: Qd 0xff0000ff 0x00ffff00 vmov.i64 d15, #0xFF0000FF00FFFF00 :: Qd 0xff0000ff 0x00ffff00 ----- VMVN (immediate) ----- vmvn.i32 d0, #0x7 :: Qd 0xfffffff8 0xfffffff8 +vmvn.i32 d0, #0x7 :: Qd 0xfffffff8 0xfffffff8 +vmvn.i16 d1, #0x7 :: Qd 0xfff8fff8 0xfff8fff8 vmvn.i16 d1, #0x7 :: Qd 0xfff8fff8 0xfff8fff8 vmvn.i8 d2, #0x7 :: Qd 0xf8f8f8f8 0xf8f8f8f8 +vmvn.i8 d2, #0x7 :: Qd 0xf8f8f8f8 0xf8f8f8f8 +vmvn.i32 d5, #0x700 :: Qd 0xfffff8ff 0xfffff8ff vmvn.i32 d5, #0x700 :: Qd 0xfffff8ff 0xfffff8ff vmvn.i16 d7, #0x700 :: Qd 0xf8fff8ff 0xf8fff8ff +vmvn.i16 d7, #0x700 :: Qd 0xf8fff8ff 0xf8fff8ff +vmvn.i32 d10, #0x70000 :: Qd 0xfff8ffff 0xfff8ffff vmvn.i32 d10, #0x70000 :: Qd 0xfff8ffff 0xfff8ffff vmvn.i32 d13, #0x7000000 :: Qd 0xf8ffffff 0xf8ffffff +vmvn.i32 d13, #0x7000000 :: Qd 0xf8ffffff 0xf8ffffff +vmvn.i32 d11, #0x7FF :: Qd 0xfffff800 0xfffff800 vmvn.i32 d11, #0x7FF :: Qd 0xfffff800 0xfffff800 vmvn.i32 d14, #0x7FFFF :: Qd 0xfff80000 0xfff80000 +vmvn.i32 d14, #0x7FFFF :: Qd 0xfff80000 0xfff80000 +vmvn.i64 d15, #0xFF0000FF00FFFF00 :: Qd 0x00ffff00 0xff0000ff vmvn.i64 d15, #0xFF0000FF00FFFF00 :: Qd 0x00ffff00 0xff0000ff ----- VORR (immediate) ----- vorr.i32 d0, #0x7 :: Qd 0x55555557 0x55555557 +vorr.i32 d0, #0x7 :: Qd 0x131b1a1f 0x121f1e1f vorr.i16 d2, #0x7 :: Qd 0x55575557 0x55575557 +vorr.i16 d2, #0x7 :: Qd 0x131f1a1f 0x121f1e1f vorr.i32 d8, #0x700 :: Qd 0x55555755 0x55555755 +vorr.i32 d8, #0x700 :: Qd 0x131b1f1b 0x121f1f1f vorr.i16 d6, #0x700 :: Qd 0x57555755 0x57555755 +vorr.i16 d6, #0x700 :: Qd 0x171b1f1b 0x171f1f1f vorr.i32 d14, #0x70000 :: Qd 0x55575555 0x55575555 +vorr.i32 d14, #0x70000 :: Qd 0x131f1a1b 0x121f1e1f vorr.i32 d15, #0x7000000 :: Qd 0x57555555 0x57555555 +vorr.i32 d15, #0x7000000 :: Qd 0x171b1a1b 0x171f1e1f ----- VBIC (immediate) ----- vbic.i32 d0, #0x7 :: Qd 0x55555550 0x55555550 +vbic.i32 d0, #0x7 :: Qd 0x131b1a18 0x121f1e18 vbic.i16 d3, #0x7 :: Qd 0x55505550 0x55505550 +vbic.i16 d3, #0x7 :: Qd 0x13181a18 0x12181e18 vbic.i32 d5, #0x700 :: Qd 0x55555055 0x55555055 +vbic.i32 d5, #0x700 :: Qd 0x131b181b 0x121f181f vbic.i16 d8, #0x700 :: Qd 0x50555055 0x50555055 +vbic.i16 d8, #0x700 :: Qd 0x101b181b 0x101f181f vbic.i32 d10, #0x70000 :: Qd 0x55505555 0x55505555 +vbic.i32 d10, #0x70000 :: Qd 0x13181a1b 0x12181e1f vbic.i32 d15, #0x7000000 :: Qd 0x50555555 0x50555555 +vbic.i32 d15, #0x7000000 :: Qd 0x101b1a1b 0x101f1e1f ---- VMVN (register) ---- vmvn d0, d1 :: Qd 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn d0, d1 :: Qd 0xeae2e6e2 0xebe3e0e3 Qm (i32)0x00000018 vmvn d10, d15 :: Qd 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn d10, d15 :: Qd 0xeae2e6e2 0xebe3e0e3 Qm (i32)0x00000018 vmvn d0, d14 :: Qd 0xffffffe7 0xffffffe7 Qm (i32)0x00000018 +vmvn d0, d14 :: Qd 0xeae2e6e2 0xebe3e0e3 Qm (i32)0x00000018 ---- VMOV (register) ---- vmov d0, d1 :: Qd 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000018 vmov d10, d15 :: Qd 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov d10, d15 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000018 vmov d0, d14 :: Qd 0x00000018 0x00000018 Qm (i32)0x00000018 +vmov d0, d14 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000018 ---- VDUP (ARM core register) (tested indirectly) ---- vmov d0, d1 :: Qd 0x07070707 0x07070707 Qm (i8)0x00000007 +vmov d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i8)0x00000007 vmov d10, d11 :: Qd 0x00070007 0x00070007 Qm (i16)0x00000007 +vmov d10, d11 :: Qd 0x151d191d 0x141c1f1c Qm (i16)0x00000007 vmov d0, d15 :: Qd 0x00000007 0x00000007 Qm (i32)0x00000007 +vmov d0, d15 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000007 ---- VADD ---- vadd.i32 d0, d1, d2 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 +vadd.i32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 vadd.i64 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 +vadd.i64 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 vadd.i32 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 +vadd.i32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 vadd.i16 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 +vadd.i16 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 vadd.i8 d0, d1, d2 :: Qd 0x00000004 0x00000004 Qm (i32)0x0000008c Qn (i32)0x00000078 +vadd.i8 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 vadd.i8 d0, d1, d2 :: Qd 0x00000003 0x00000003 Qm (i32)0x80000001 Qn (i32)0x80000002 +vadd.i8 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 vadd.i16 d0, d1, d2 :: Qd 0x00000003 0x00000003 Qm (i32)0x80000001 Qn (i32)0x80000002 +vadd.i16 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 vadd.i32 d0, d1, d2 :: Qd 0x00000003 0x00000003 Qm (i32)0x80000001 Qn (i32)0x80000002 +vadd.i32 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 vadd.i64 d0, d1, d2 :: Qd 0x00000004 0x00000003 Qm (i32)0x80000001 Qn (i32)0x80000002 +vadd.i64 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 vadd.i32 d10, d11, d12 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 +vadd.i32 d10, d11, d12 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 vadd.i64 d13, d14, d15 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 +vadd.i64 d13, d14, d15 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 ---- VSUB ---- vsub.i32 d0, d1, d2 :: Qd 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vsub.i32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 vsub.i64 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vsub.i64 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 vsub.i32 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vsub.i32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 vsub.i16 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vsub.i16 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 vsub.i8 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vsub.i8 d0, d1, d2 :: Qd 0x131b1aa3 0x121f1ea7 Qm (i32)0x0000008c Qn (i32)0x00000078 vsub.i8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 +vsub.i8 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vsub.i16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vsub.i16 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vsub.i32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vsub.i32 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vsub.i64 d0, d1, d2 :: Qd 0xfffffffe 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vsub.i64 d0, d1, d2 :: Qd 0x931b1a18 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vsub.i32 d10, d11, d12 :: Qd 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vsub.i32 d10, d11, d12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 vsub.i64 d13, d14, d15 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vsub.i64 d13, d14, d15 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 ---- VAND ---- vand d0, d1, d2 :: Qd 0x00240024 0x00240024 Qm (i8)0x00000024 Qn (i16)0x00000077 +vand d0, d1, d2 :: Qd 0x00130013 0x00170017 Qm (i8)0x00000024 Qn (i16)0x00000077 vand d4, d6, d5 :: Qd 0x00570057 0x00570057 Qm (i8)0x000000ff Qn (i16)0x00000057 +vand d4, d6, d5 :: Qd 0x00130013 0x00170017 Qm (i8)0x000000ff Qn (i16)0x00000057 vand d10, d11, d12 :: Qd 0xecececec 0xecececec Qm (i8)0x000000fe Qn (i8)0x000000ed +vand d10, d11, d12 :: Qd 0x01090809 0x000d0c0d Qm (i8)0x000000fe Qn (i8)0x000000ed +vand d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vand d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff ---- VBIC ---- vbic d0, d1, d2 :: Qd 0x24002400 0x24002400 Qm (i8)0x00000024 Qn (i16)0x00000077 +vbic d0, d1, d2 :: Qd 0x13081a08 0x12081e08 Qm (i8)0x00000024 Qn (i16)0x00000077 vbic d4, d6, d5 :: Qd 0xffa8ffa8 0xffa8ffa8 Qm (i8)0x000000ff Qn (i16)0x00000057 +vbic d4, d6, d5 :: Qd 0x13081a08 0x12081e08 Qm (i8)0x000000ff Qn (i16)0x00000057 +vbic d10, d11, d12 :: Qd 0x12121212 0x12121212 Qm (i8)0x000000fe Qn (i8)0x000000ed vbic d10, d11, d12 :: Qd 0x12121212 0x12121212 Qm (i8)0x000000fe Qn (i8)0x000000ed vbic d15, d15, d15 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff +vbic d15, d15, d15 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff ---- VORR ---- vorr d0, d1, d2 :: Qd 0x24772477 0x24772477 Qm (i8)0x00000024 Qn (i16)0x00000073 +vorr d0, d1, d2 :: Qd 0x137b1a7b 0x127f1e7f Qm (i8)0x00000024 Qn (i16)0x00000073 vorr d7, d3, d0 :: Qd 0x24ff24ff 0x24ff24ff Qm (i8)0x00000024 Qn (i16)0x000000ff +vorr d7, d3, d0 :: Qd 0x13ff1aff 0x12ff1eff Qm (i8)0x00000024 Qn (i16)0x000000ff +vorr d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vorr d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vorr d2, d3, d15 :: Qd 0x0000003f 0x0000003f Qm (i32)0x00000024 Qn (i32)0x0000001f +vorr d2, d3, d15 :: Qd 0x131b1a1f 0x121f1e1f Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VORN ---- vorn d0, d1, d2 :: Qd 0xffacffac 0xffacffac Qm (i8)0x00000024 Qn (i16)0x00000073 +vorn d0, d1, d2 :: Qd 0xff9fff9f 0xff9fff9f Qm (i8)0x00000024 Qn (i16)0x00000073 vorn d7, d3, d0 :: Qd 0xff24ff24 0xff24ff24 Qm (i8)0x00000024 Qn (i16)0x000000ff +vorn d7, d3, d0 :: Qd 0xff1bff1b 0xff1fff1f Qm (i8)0x00000024 Qn (i16)0x000000ff +vorn d4, d4, d4 :: Qd 0xffffffff 0xffffffff Qm (i16)0x000000ff Qn (i16)0x000000ff vorn d4, d4, d4 :: Qd 0xffffffff 0xffffffff Qm (i16)0x000000ff Qn (i16)0x000000ff vorn d2, d3, d15 :: Qd 0xffffffe4 0xffffffe4 Qm (i32)0x00000024 Qn (i32)0x0000001f +vorn d2, d3, d15 :: Qd 0xfffffffb 0xffffffff Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VEOR ---- veor d0, d1, d2 :: Qd 0x24532453 0x24532453 Qm (i8)0x00000024 Qn (i16)0x00000077 +veor d0, d1, d2 :: Qd 0x136c1a6c 0x12681e68 Qm (i8)0x00000024 Qn (i16)0x00000077 veor d4, d6, d5 :: Qd 0xffa8ffa8 0xffa8ffa8 Qm (i8)0x000000ff Qn (i16)0x00000057 +veor d4, d6, d5 :: Qd 0x134c1a4c 0x12481e48 Qm (i8)0x000000ff Qn (i16)0x00000057 veor d10, d11, d12 :: Qd 0x13131313 0x13131313 Qm (i8)0x000000fe Qn (i8)0x000000ed +veor d10, d11, d12 :: Qd 0xfef6f7f6 0xfff2f3f2 Qm (i8)0x000000fe Qn (i8)0x000000ed +veor d15, d15, d15 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff veor d15, d15, d15 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff veor d0, d1, d2 :: Qd 0x24572457 0x24572457 Qm (i8)0x00000024 Qn (i16)0x00000073 +veor d0, d1, d2 :: Qd 0x13681a68 0x126c1e6c Qm (i8)0x00000024 Qn (i16)0x00000073 veor d7, d3, d0 :: Qd 0x24db24db 0x24db24db Qm (i8)0x00000024 Qn (i16)0x000000ff +veor d7, d3, d0 :: Qd 0x13e41ae4 0x12e01ee0 Qm (i8)0x00000024 Qn (i16)0x000000ff +veor d4, d4, d4 :: Qd 0x00000000 0x00000000 Qm (i16)0x000000ff Qn (i16)0x000000ff veor d4, d4, d4 :: Qd 0x00000000 0x00000000 Qm (i16)0x000000ff Qn (i16)0x000000ff veor d2, d3, d15 :: Qd 0x0000003b 0x0000003b Qm (i32)0x00000024 Qn (i32)0x0000001f +veor d2, d3, d15 :: Qd 0x131b1a04 0x121f1e00 Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VBSL ---- vbsl d0, d1, d2 :: Qd 0x04260426 0x04260426 Qm (i8)0x00000024 Qn (i16)0x00000077 +vbsl d0, d1, d2 :: Qd 0x11331033 0x10371437 Qm (i8)0x00000024 Qn (i16)0x00000077 vbsl d4, d6, d5 :: Qd 0x55575557 0x55575557 Qm (i8)0x000000ff Qn (i16)0x00000057 +vbsl d4, d6, d5 :: Qd 0x11131013 0x10171417 Qm (i8)0x000000ff Qn (i16)0x00000057 vbsl d10, d11, d12 :: Qd 0xfcfcfcfc 0xfcfcfcfc Qm (i8)0x000000fe Qn (i8)0x000000ed +vbsl d10, d11, d12 :: Qd 0xb9b9b8b9 0xb8bdbcbd Qm (i8)0x000000fe Qn (i8)0x000000ed +vbsl d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vbsl d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vbsl d0, d1, d2 :: Qd 0x04260426 0x04260426 Qm (i8)0x00000024 Qn (i16)0x00000073 +vbsl d0, d1, d2 :: Qd 0x11331033 0x10371437 Qm (i8)0x00000024 Qn (i16)0x00000073 vbsl d7, d3, d0 :: Qd 0x04ae04ae 0x04ae04ae Qm (i8)0x00000024 Qn (i16)0x000000ff +vbsl d7, d3, d0 :: Qd 0x11bb10bb 0x10bf14bf Qm (i8)0x00000024 Qn (i16)0x000000ff +vbsl d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbsl d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbsl d2, d3, d15 :: Qd 0x0000000e 0x0000000e Qm (i32)0x00000024 Qn (i32)0x0000001f +vbsl d2, d3, d15 :: Qd 0x1111101b 0x1015141f Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VBIT ---- vbit d0, d1, d2 :: Qd 0x55245524 0x55245524 Qm (i8)0x00000024 Qn (i16)0x00000077 +vbit d0, d1, d2 :: Qd 0x55135513 0x55175517 Qm (i8)0x00000024 Qn (i16)0x00000077 vbit d4, d6, d5 :: Qd 0x55575557 0x55575557 Qm (i8)0x000000ff Qn (i16)0x00000057 +vbit d4, d6, d5 :: Qd 0x55135513 0x55175517 Qm (i8)0x000000ff Qn (i16)0x00000057 vbit d10, d11, d12 :: Qd 0xfcfcfcfc 0xfcfcfcfc Qm (i8)0x000000fe Qn (i8)0x000000ed +vbit d10, d11, d12 :: Qd 0x11191819 0x101d1c1d Qm (i8)0x000000fe Qn (i8)0x000000ed +vbit d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vbit d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vbit d0, d1, d2 :: Qd 0x55245524 0x55245524 Qm (i8)0x00000024 Qn (i16)0x00000073 +vbit d0, d1, d2 :: Qd 0x55175517 0x55175517 Qm (i8)0x00000024 Qn (i16)0x00000073 vbit d7, d3, d0 :: Qd 0x55245524 0x55245524 Qm (i8)0x00000024 Qn (i16)0x000000ff +vbit d7, d3, d0 :: Qd 0x551b551b 0x551f551f Qm (i8)0x00000024 Qn (i16)0x000000ff +vbit d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbit d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbit d2, d3, d15 :: Qd 0x55555544 0x55555544 Qm (i32)0x00000024 Qn (i32)0x0000001f +vbit d2, d3, d15 :: Qd 0x5555555b 0x5555555f Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VBIF ---- vbif d0, d1, d2 :: Qd 0x24552455 0x24552455 Qm (i8)0x00000024 Qn (i16)0x00000077 +vbif d0, d1, d2 :: Qd 0x135d1a5d 0x125d1e5d Qm (i8)0x00000024 Qn (i16)0x00000077 vbif d4, d6, d5 :: Qd 0xfffdfffd 0xfffdfffd Qm (i8)0x000000ff Qn (i16)0x00000057 +vbif d4, d6, d5 :: Qd 0x135d1a5d 0x125d1e5d Qm (i8)0x000000ff Qn (i16)0x00000057 +vbif d10, d11, d12 :: Qd 0x57575757 0x57575757 Qm (i8)0x000000fe Qn (i8)0x000000ed vbif d10, d11, d12 :: Qd 0x57575757 0x57575757 Qm (i8)0x000000fe Qn (i8)0x000000ed vbif d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff +vbif d15, d15, d15 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff vbif d0, d1, d2 :: Qd 0x24552455 0x24552455 Qm (i8)0x00000024 Qn (i16)0x00000073 +vbif d0, d1, d2 :: Qd 0x13591a59 0x125d1e5d Qm (i8)0x00000024 Qn (i16)0x00000073 vbif d7, d3, d0 :: Qd 0x24552455 0x24552455 Qm (i8)0x00000024 Qn (i16)0x000000ff +vbif d7, d3, d0 :: Qd 0x13551a55 0x12551e55 Qm (i8)0x00000024 Qn (i16)0x000000ff +vbif d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbif d4, d4, d4 :: Qd 0x00ff00ff 0x00ff00ff Qm (i16)0x000000ff Qn (i16)0x000000ff vbif d2, d3, d15 :: Qd 0x00000035 0x00000035 Qm (i32)0x00000024 Qn (i32)0x0000001f +vbif d2, d3, d15 :: Qd 0x131b1a15 0x121f1e15 Qm (i32)0x00000024 Qn (i32)0x0000001f ---- VEXT ---- vext.8 d0, d1, d2, #0 :: Qd 0x77777777 0x77777777 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d0, d1, d2, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i8)0x00000077 Qn (i8)0x000000ff vext.8 d0, d1, d2, #1 :: Qd 0xff777777 0x77777777 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d0, d1, d2, #1 :: Qd 0xff131b1a 0x1b121f1e Qm (i8)0x00000077 Qn (i8)0x000000ff vext.8 d0, d1, d2, #7 :: Qd 0xffffffff 0xffffff77 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d0, d1, d2, #7 :: Qd 0xffffffff 0xffffff13 Qm (i8)0x00000077 Qn (i8)0x000000ff vext.8 d0, d1, d2, #6 :: Qd 0xffffffff 0xffff7777 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d0, d1, d2, #6 :: Qd 0xffffffff 0xffff131b Qm (i8)0x00000077 Qn (i8)0x000000ff vext.8 d10, d11, d12, #4 :: Qd 0xffffffff 0x77777777 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d10, d11, d12, #4 :: Qd 0xffffffff 0x131b1a1b Qm (i8)0x00000077 Qn (i8)0x000000ff vext.8 d0, d5, d15, #5 :: Qd 0xffffffff 0xff777777 Qm (i8)0x00000077 Qn (i8)0x000000ff +vext.8 d0, d5, d15, #5 :: Qd 0xffffffff 0xff131b1a Qm (i8)0x00000077 Qn (i8)0x000000ff ---- VHADD ---- vhadd.s32 d0, d1, d2 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhadd.s32 d0, d1, d2 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x00000018 Qn (i32)0x00000078 vhadd.s32 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.s32 d0, d1, d2 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.s16 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.s16 d0, d1, d2 :: Qd 0x098d0d49 0x090f0f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.s8 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.s8 d0, d1, d2 :: Qd 0x090d0d49 0x090f0f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.s8 d0, d1, d2 :: Qd 0x03030303 0x03030303 Qm (i8)0x0000008d Qn (i8)0x00000079 +vhadd.s8 d0, d1, d2 :: Qd 0x464a494a 0x454c4b4c Qm (i8)0x0000008d Qn (i8)0x00000079 vhadd.s8 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.s8 d0, d1, d2 :: Qd 0xc90d0d0e 0xc90f0f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.s16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.s16 d0, d1, d2 :: Qd 0xc98d0d0e 0xc90f0f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.s32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.s32 d0, d1, d2 :: Qd 0xc98d8d0e 0xc90f8f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.s32 d10, d11, d12 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhadd.s32 d10, d11, d12 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x00000018 Qn (i32)0x00000078 vhadd.u32 d0, d1, d2 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhadd.u32 d0, d1, d2 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x00000018 Qn (i32)0x00000078 vhadd.u32 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.u32 d0, d1, d2 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.u16 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.u16 d0, d1, d2 :: Qd 0x098d0d49 0x090f0f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.u8 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vhadd.u8 d0, d1, d2 :: Qd 0x090d0d49 0x090f0f4b Qm (i32)0x0000008c Qn (i32)0x00000078 vhadd.u8 d0, d1, d2 :: Qd 0x83838383 0x83838383 Qm (i8)0x0000008d Qn (i8)0x00000079 +vhadd.u8 d0, d1, d2 :: Qd 0x464a494a 0x454c4b4c Qm (i8)0x0000008d Qn (i8)0x00000079 vhadd.u8 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.u8 d0, d1, d2 :: Qd 0x490d0d0e 0x490f0f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.u16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.u16 d0, d1, d2 :: Qd 0x498d0d0e 0x490f0f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.u32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vhadd.u32 d0, d1, d2 :: Qd 0x498d8d0e 0x490f8f10 Qm (i32)0x80000001 Qn (i32)0x80000002 vhadd.u32 d10, d11, d12 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhadd.u32 d10, d11, d12 :: Qd 0x098d8d49 0x090f8f4b Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VHSUB ---- vhsub.s32 d0, d1, d2 :: Qd 0xffffffd0 0xffffffd0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhsub.s32 d0, d1, d2 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x00000018 Qn (i32)0x00000078 vhsub.s32 d0, d1, d2 :: Qd 0x0000000a 0x0000000a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.s32 d0, d1, d2 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.s16 d0, d1, d2 :: Qd 0x0000000a 0x0000000a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.s16 d0, d1, d2 :: Qd 0x098d0cd1 0x090f0ed3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.s8 d0, d1, d2 :: Qd 0x0000008a 0x0000008a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.s8 d0, d1, d2 :: Qd 0x090d0dd1 0x090f0fd3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.s8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.s8 d0, d1, d2 :: Qd 0x490d0d0c 0x490f0f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.s16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.s16 d0, d1, d2 :: Qd 0x498d0d0c 0x490f0f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.s32 d0, d1, d2 :: Qd 0x498d8d0c 0x490f8f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.s32 d10, d11, d12 :: Qd 0xffffffd0 0xffffffd0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhsub.s32 d10, d11, d12 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x00000018 Qn (i32)0x00000078 vhsub.u32 d0, d1, d2 :: Qd 0xffffffd0 0xffffffd0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhsub.u32 d0, d1, d2 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x00000018 Qn (i32)0x00000078 vhsub.u32 d0, d1, d2 :: Qd 0x0000000a 0x0000000a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.u32 d0, d1, d2 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.u16 d0, d1, d2 :: Qd 0x0000000a 0x0000000a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.u16 d0, d1, d2 :: Qd 0x098d0cd1 0x090f0ed3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.u8 d0, d1, d2 :: Qd 0x0000000a 0x0000000a Qm (i32)0x0000008c Qn (i32)0x00000078 +vhsub.u8 d0, d1, d2 :: Qd 0x090d0dd1 0x090f0fd3 Qm (i32)0x0000008c Qn (i32)0x00000078 vhsub.u8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.u8 d0, d1, d2 :: Qd 0xc90d0d0c 0xc90f0f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.u16 d0, d1, d2 :: Qd 0xc98d0d0c 0xc90f0f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 +vhsub.u32 d0, d1, d2 :: Qd 0xc98d8d0c 0xc90f8f0e Qm (i32)0x80000001 Qn (i32)0x80000002 vhsub.u32 d10, d11, d12 :: Qd 0xffffffd0 0xffffffd0 Qm (i32)0x00000018 Qn (i32)0x00000078 +vhsub.u32 d10, d11, d12 :: Qd 0x098d8cd1 0x090f8ed3 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VQADD ---- vqadd.s32 d0, d1, d2 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.s32 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.s16 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s16 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.s8 d0, d1, d2 :: Qd 0x00000004 0x00000004 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s8 d0, d1, d2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 vqadd.s8 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s8 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s16 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s32 d0, d1, d2 :: Qd 0x80000000 0x80000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.s32 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.s32 d10, d11, d12 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.s32 d10, d11, d12 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.u32 d0, d1, d2 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqadd.u32 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u16 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u16 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqadd.u8 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqadd.u8 d0, d1, d2 :: Qd 0xff000003 0xff000003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u8 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u16 d0, d1, d2 :: Qd 0xffff0003 0xffff0003 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u16 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqadd.u32 d0, d1, d2 :: Qd 0x931b1a1d 0x921f1e21 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqadd.u32 d10, d11, d12 :: Qd 0x00000090 0x00000090 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqadd.u32 d10, d11, d12 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 ---- VQSUB ---- vqsub.s32 d0, d1, d2 :: Qd 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.s32 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s16 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s16 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s8 d0, d1, d2 :: Qd 0x00000080 0x00000080 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 +vqsub.s8 d0, d1, d2 :: Qd 0x131b1aa3 0x121f1ea7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.s8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s8 d0, d1, d2 :: Qd 0x7f1b1a19 0x7f1f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s16 d0, d1, d2 :: Qd 0x7fff1a19 0x7fff1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqsub.s32 d0, d1, d2 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.s32 d10, d11, d12 :: Qd 0xffffffa0 0xffffffa0 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqsub.s32 d10, d11, d12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqsub.u32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqsub.u32 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.u16 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u16 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 vqsub.u8 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 00000000 +vqsub.u8 d0, d1, d2 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x0000008c Qn (i32)0x00000078 fpscr: 08000000 vqsub.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u8 d0, d1, d2 :: Qd 0x001b1a19 0x001f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u16 d0, d1, d2 :: Qd 0x00001a19 0x00001e1d Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 +vqsub.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 08000000 vqsub.u32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqsub.u32 d10, d11, d12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 ---- VRHADD ---- vrhadd.s32 d0, d1, d2 :: Qd 0x00000049 0x00000049 Qm (i32)0x00000019 Qn (i32)0x00000078 +vrhadd.s32 d0, d1, d2 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x00000019 Qn (i32)0x00000078 vrhadd.s32 d0, d1, d2 :: Qd 0x00000049 0x00000049 Qm (i32)0x00000019 Qn (i32)0x00000079 +vrhadd.s32 d0, d1, d2 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x00000019 Qn (i32)0x00000079 vrhadd.s32 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.s32 d0, d1, d2 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.s16 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.s16 d0, d1, d2 :: Qd 0x098e0d4a 0x09100f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.s8 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.s8 d0, d1, d2 :: Qd 0x0a0e0d4a 0x09100f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.s8 d5, d7, d5 :: Qd 0xca0e0d0f 0xc9100f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.s16 d0, d1, d2 :: Qd 0xc98e0d0f 0xc9100f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.s32 d0, d1, d2 :: Qd 0xc98d8d0f 0xc90f8f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.s8 d5, d7, d5 :: Qd 0xca0e0d0f 0xc9100f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.s16 d0, d1, d2 :: Qd 0xc98e0d0f 0xc9100f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.s32 d0, d1, d2 :: Qd 0xc98d8d0f 0xc90f8f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.s8 d5, d7, d5 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.s8 d5, d7, d5 :: Qd 0xca0e0d0f 0xc9100f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.s16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.s16 d0, d1, d2 :: Qd 0xc98e0d0f 0xc9100f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.s32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.s32 d0, d1, d2 :: Qd 0xc98d8d0f 0xc90f8f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.s32 d10, d11, d12 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vrhadd.s32 d10, d11, d12 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x00000018 Qn (i32)0x00000078 vrhadd.u32 d0, d1, d2 :: Qd 0x00000049 0x00000049 Qm (i32)0x00000019 Qn (i32)0x00000078 +vrhadd.u32 d0, d1, d2 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x00000019 Qn (i32)0x00000078 vrhadd.u32 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.u32 d0, d1, d2 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.u16 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.u16 d0, d1, d2 :: Qd 0x098e0d4a 0x09100f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.u8 d0, d1, d2 :: Qd 0x00000082 0x00000082 Qm (i32)0x0000008c Qn (i32)0x00000078 +vrhadd.u8 d0, d1, d2 :: Qd 0x0a0e0d4a 0x09100f4c Qm (i32)0x0000008c Qn (i32)0x00000078 vrhadd.u8 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.u8 d0, d1, d2 :: Qd 0x4a0e0d0f 0x49100f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.u16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.u16 d0, d1, d2 :: Qd 0x498e0d0f 0x49100f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vrhadd.u32 d0, d1, d2 :: Qd 0x498d8d0f 0x490f8f11 Qm (i32)0x80000001 Qn (i32)0x80000002 vrhadd.u8 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.u8 d0, d1, d2 :: Qd 0x4a0e0d0f 0x49100f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.u16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.u16 d0, d1, d2 :: Qd 0x498e0d0f 0x49100f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vrhadd.u32 d0, d1, d2 :: Qd 0x498d8d0f 0x490f8f11 Qm (i32)0x80000001 Qn (i32)0x80000003 vrhadd.u8 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.u8 d0, d1, d2 :: Qd 0x4a0e0d0f 0x49100f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.u16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.u16 d0, d1, d2 :: Qd 0x498e0d0f 0x49100f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.u32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000004 Qn (i32)0x80000002 +vrhadd.u32 d0, d1, d2 :: Qd 0x498d8d0f 0x490f8f11 Qm (i32)0x80000004 Qn (i32)0x80000002 vrhadd.u32 d10, d11, d12 :: Qd 0x00000048 0x00000048 Qm (i32)0x00000018 Qn (i32)0x00000078 +vrhadd.u32 d10, d11, d12 :: Qd 0x098d8d4a 0x090f8f4c Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VCGT ---- vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000078 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000078 vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000079 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000079 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.s16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.s8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x00000078 +vcgt.s8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.s16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.s8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.s8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x0000008c +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c vcgt.s16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x0000008c +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c vcgt.s8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000078 Qn (i32)0x0000008c +vcgt.s8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c vcgt.s8 d5, d7, d5 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.s16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.s8 d5, d7, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.s16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.s8 d5, d7, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.s16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.s32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vcgt.s32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000078 +vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000078 +vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcgt.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.u8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcgt.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.u16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcgt.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000078 Qn (i32)0x00000078 vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x0000008c +vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c vcgt.u16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x0000008c +vcgt.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c vcgt.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x0000008c +vcgt.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x0000008c vcgt.u8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000003 Qn (i32)0x80000002 vcgt.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.u16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000003 +vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 vcgt.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.u16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 vcgt.u32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vcgt.u32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VCGE ---- vcge.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000078 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000078 vcge.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000079 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000079 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcge.s8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.s8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.s8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.s8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x0000008c +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c vcge.s16 d0, d1, d2 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x00000078 Qn (i32)0x0000008c +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c vcge.s8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c +vcge.s8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x0000008c +vcge.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.s8 d5, d7, d5 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.s16 d0, d1, d2 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.s8 d5, d7, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.s16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.s32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.s32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vcge.s32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 vcge.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000019 Qn (i32)0x00000078 +vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000019 Qn (i32)0x00000078 +vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vcge.u8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 +vcge.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 +vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 vcge.u8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000078 Qn (i32)0x00000078 +vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c +vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c vcge.u8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x0000008c +vcge.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x0000008c vcge.u8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcge.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcge.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000003 Qn (i32)0x80000002 +vcge.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000003 Qn (i32)0x80000002 vcge.u8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.u16 d0, d1, d2 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000001 Qn (i32)0x80000003 +vcge.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 vcge.u8 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.u8 d0, d1, d2 :: Qd 0x00ffffff 0x00ffffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.u16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.u16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.u32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 Qn (i32)0x80000002 +vcge.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 Qn (i32)0x80000002 vcge.u32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vcge.u32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VSHL (register) ---- vshl.s8 d0, d1, d2 :: Qd 0x00000030 0x00000030 Qm (i32)0x00000018 Qn (i32)0x00000001 +vshl.s8 d0, d1, d2 :: Qd 0x131b1a36 0x121f1e3e Qm (i32)0x00000018 Qn (i32)0x00000001 vshl.s8 d8, d1, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000008 +vshl.s8 d8, d1, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00000018 Qn (i32)0x00000008 vshl.s8 d10, d31, d7 :: Qd 0x00000080 0x00000080 Qm (i32)0x00000018 Qn (i32)0x00000004 +vshl.s8 d10, d31, d7 :: Qd 0x131b1ab0 0x121f1ef0 Qm (i32)0x00000018 Qn (i32)0x00000004 vshl.s16 d3, d8, d11 :: Qd 0x00000038 0x00000038 Qm (i32)0x0000000e Qn (i32)0x00000002 +vshl.s16 d3, d8, d11 :: Qd 0x131b686c 0x121f787c Qm (i32)0x0000000e Qn (i32)0x00000002 vshl.s16 d5, d12, d14 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000001 +vshl.s16 d5, d12, d14 :: Qd 0x131b3436 0x121f3c3e Qm (i32)0x40000000 Qn (i32)0x00000001 vshl.s16 d15, d2, d1 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x0000000b +vshl.s16 d15, d2, d1 :: Qd 0x131bd800 0x121ff800 Qm (i32)0x40000000 Qn (i32)0x0000000b vshl.s32 d9, d12, d19 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 Qn (i32)0x00000002 +vshl.s32 d9, d12, d19 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x80000002 Qn (i32)0x00000002 vshl.s32 d11, d22, d0 :: Qd 0xfffff000 0xfffff000 Qm (i32)0xffffffff Qn (i32)0x0000000c +vshl.s32 d11, d22, d0 :: Qd 0xb1a1b000 0xf1e1f000 Qm (i32)0xffffffff Qn (i32)0x0000000c vshl.s32 d5, d2, d3 :: Qd 0x00000000 0x00000000 Qm (i32)0x40000000 Qn (i32)0x00000015 +vshl.s32 d5, d2, d3 :: Qd 0x43600000 0xc3e00000 Qm (i32)0x40000000 Qn (i32)0x00000015 vshl.s64 d15, d12, d4 :: Qd 0x00500000 0x00500000 Qm (i32)0x00000005 Qn (i32)0x00000014 +vshl.s64 d15, d12, d4 :: Qd 0xa1b121f1 0xe1f00000 Qm (i32)0x00000005 Qn (i32)0x00000014 vshl.s64 d8, d2, d4 :: Qd 0x000000f0 0x000000f0 Qm (i32)0x0000000f Qn (i32)0x00000004 +vshl.s64 d8, d2, d4 :: Qd 0x31b1a1b1 0x21f1e1f0 Qm (i32)0x0000000f Qn (i32)0x00000004 vshl.s64 d5, d12, d4 :: Qd 0x60000000 0x40000000 Qm (i32)0x80000001 Qn (i32)0x0000001e +vshl.s64 d5, d12, d4 :: Qd 0xc487c787 0xc0000000 Qm (i32)0x80000001 Qn (i32)0x0000001e vshl.s64 d15, d2, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffabcd59 Qn (i32)0xabcdefab +vshl.s64 d15, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xffabcd59 Qn (i32)0xabcdefab +vshl.s64 d8, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f Qn (i32)0x00400bb5 vshl.s64 d8, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f Qn (i32)0x00400bb5 vshl.s64 d5, d12, d4 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000001 Qn (i32)0x030abcff +vshl.s64 d5, d12, d4 :: Qd 0x098d8d0d 0x890f8f0f Qm (i32)0x80000001 Qn (i32)0x030abcff vshl.u8 d0, d1, d2 :: Qd 0x00000030 0x00000030 Qm (i32)0x00000018 Qn (i32)0x00000001 +vshl.u8 d0, d1, d2 :: Qd 0x131b1a36 0x121f1e3e Qm (i32)0x00000018 Qn (i32)0x00000001 vshl.u8 d8, d1, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000008 +vshl.u8 d8, d1, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00000018 Qn (i32)0x00000008 vshl.u8 d10, d11, d7 :: Qd 0x00000080 0x00000080 Qm (i32)0x00000018 Qn (i32)0x00000004 +vshl.u8 d10, d11, d7 :: Qd 0x131b1ab0 0x121f1ef0 Qm (i32)0x00000018 Qn (i32)0x00000004 vshl.u16 d3, d8, d11 :: Qd 0x00000038 0x00000038 Qm (i32)0x0000000e Qn (i32)0x00000002 +vshl.u16 d3, d8, d11 :: Qd 0x131b686c 0x121f787c Qm (i32)0x0000000e Qn (i32)0x00000002 vshl.u16 d5, d12, d14 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000001 +vshl.u16 d5, d12, d14 :: Qd 0x131b3436 0x121f3c3e Qm (i32)0x40000000 Qn (i32)0x00000001 vshl.u16 d15, d2, d1 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x0000000b +vshl.u16 d15, d2, d1 :: Qd 0x131bd800 0x121ff800 Qm (i32)0x40000000 Qn (i32)0x0000000b vshl.u32 d9, d12, d15 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 Qn (i32)0x00000002 +vshl.u32 d9, d12, d15 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x80000002 Qn (i32)0x00000002 vshl.u32 d11, d2, d0 :: Qd 0xfffff000 0xfffff000 Qm (i32)0xffffffff Qn (i32)0x0000000c +vshl.u32 d11, d2, d0 :: Qd 0xb1a1b000 0xf1e1f000 Qm (i32)0xffffffff Qn (i32)0x0000000c vshl.u32 d5, d2, d3 :: Qd 0x00000000 0x00000000 Qm (i32)0x40000000 Qn (i32)0x00000015 +vshl.u32 d5, d2, d3 :: Qd 0x43600000 0xc3e00000 Qm (i32)0x40000000 Qn (i32)0x00000015 vshl.u64 d15, d12, d4 :: Qd 0x00500000 0x00500000 Qm (i32)0x00000005 Qn (i32)0x00000014 +vshl.u64 d15, d12, d4 :: Qd 0xa1b121f1 0xe1f00000 Qm (i32)0x00000005 Qn (i32)0x00000014 vshl.u64 d8, d2, d4 :: Qd 0x000000f0 0x000000f0 Qm (i32)0x0000000f Qn (i32)0x00000004 +vshl.u64 d8, d2, d4 :: Qd 0x31b1a1b1 0x21f1e1f0 Qm (i32)0x0000000f Qn (i32)0x00000004 vshl.u64 d5, d12, d4 :: Qd 0x60000000 0x40000000 Qm (i32)0x80000001 Qn (i32)0x0000001e +vshl.u64 d5, d12, d4 :: Qd 0xc487c787 0xc0000000 Qm (i32)0x80000001 Qn (i32)0x0000001e +vshl.u64 d15, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xffabcd59 Qn (i32)0xabcdefab vshl.u64 d15, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xffabcd59 Qn (i32)0xabcdefab vshl.u64 d8, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f Qn (i32)0x00400bb5 +vshl.u64 d8, d2, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f Qn (i32)0x00400bb5 vshl.u64 d5, d12, d4 :: Qd 0x40000000 0xc0000000 Qm (i32)0x80000001 Qn (i32)0x030abcff +vshl.u64 d5, d12, d4 :: Qd 0x098d8d0d 0x890f8f0f Qm (i32)0x80000001 Qn (i32)0x030abcff ---- VQSHL (register) ---- vqshl.s64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqshl.s64 d3, d4, d5 :: Qd 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.s64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqshl.s64 d3, d4, d5 :: Qd 0xfffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.s64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqshl.s64 d0, d1, d2 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqshl.s64 d13, d14, d31 :: Qd 0xffffffff 0xfffffbff Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.s64 d13, d14, d31 :: Qd 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.s32 d2, d8, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.s32 d2, d8, d4 :: Qd 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqshl.s32 d12, d11, d13 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.s32 d12, d11, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqshl.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.s32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqshl.s32 d9, d30, d11 :: Qd 0xc0000004 0xc0000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s32 d9, d30, d11 :: Qd 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqshl.s32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqshl.s32 d13, d3, d5 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 vqshl.s16 d11, d10, d2 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 d11, d10, d2 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.s16 d3, d14, d7 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.s16 d3, d14, d7 :: Qd 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.s16 d0, d11, d2 :: Qd 0xc0000080 0xc0000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.s16 d0, d11, d2 :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqshl.s16 d1, d2, d3 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.s16 d1, d2, d3 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.s16 d3, d4, d5 :: Qd 0xd0000000 0xd0000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.s16 d3, d4, d5 :: Qd 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqshl.s16 d0, d15, d2 :: Qd 0x00007fff 0x00007fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s16 d0, d15, d2 :: Qd 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqshl.s8 d2, d7, d11 :: Qd 0xffffff80 0xffffff80 Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.s8 d2, d7, d11 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqshl.s8 d13, d1, d2 :: Qd 0xffffff80 0xffffff80 Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.s8 d13, d1, d2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqshl.s8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqshl.s8 d3, d7, d5 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 vqshl.s8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqshl.s8 d10, d11, d12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqshl.s8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.s8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqshl.s8 d10, d11, d12 :: Qd 0x0000007f 0x0000007f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.s8 d10, d11, d12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 vqshl.u64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqshl.u64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqshl.u64 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 08000000 +vqshl.u64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqshl.u64 d3, d4, d5 :: Qd 0x1ffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c3 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.u64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqshl.u64 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqshl.u64 d13, d14, d15 :: Qd 0x0000003f 0xfffffbff Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqshl.u64 d13, d14, d15 :: Qd 0x00000004 0xc6c686c4 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqshl.u32 d2, d8, d4 :: Qd 0x0fffffff 0x0fffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqshl.u32 d2, d8, d4 :: Qd 0x0131b1a1 0x0121f1e1 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqshl.u32 d12, d31, d13 :: Qd 0x007fffff 0x007fffff Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqshl.u32 d12, d31, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqshl.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqshl.u32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqshl.u32 d9, d10, d11 :: Qd 0x40000004 0x40000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u32 d9, d10, d11 :: Qd 0x098d8d0d 0x090f8f0f Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqshl.u32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u32 d13, d3, d5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 vqshl.u16 d11, d10, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 d11, d10, d2 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.u16 d3, d14, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqshl.u16 d3, d14, d7 :: Qd 0x098d0343 0x090f03c3 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqshl.u16 d0, d11, d2 :: Qd 0x40000080 0x40000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqshl.u16 d0, d11, d2 :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqshl.u16 d1, d2, d3 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqshl.u16 d1, d2, d3 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqshl.u16 d3, d4, d5 :: Qd 0x50000000 0x50000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqshl.u16 d3, d4, d5 :: Qd 0x098d0000 0x090f0000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqshl.u16 d0, d15, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u16 d0, d15, d2 :: Qd 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqshl.u8 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqshl.u8 d2, d7, d11 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqshl.u8 d13, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqshl.u8 d13, d1, d2 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqshl.u8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqshl.u8 d3, d7, d5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 vqshl.u8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqshl.u8 d10, d11, d12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqshl.u8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqshl.u8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqshl.u8 d10, d11, d12 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqshl.u8 d10, d11, d12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 ---- VQSHL / VQSHLU (immediate) ---- vqshl.s64 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.s64 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.s64 d31, d30, #1 :: Qd 0xffffff03 0xffffff02 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s64 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.s64 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s64 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s64 d5, d4, #63 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #63 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #60 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s64 d5, d4, #60 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s64 d5, d4, #59 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #59 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #58 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s64 d5, d4, #58 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s64 d5, d4, #17 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s64 d5, d4, #63 :: Qd 0x80000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s64 d5, d4, #63 :: Qd 0x7fffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.s64 d5, d4, #60 :: Qd 0xf0000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s64 d5, d4, #60 :: Qd 0x7fffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.s64 d5, d4, #7 :: Qd 0x80000000 0x00000000 Qm (i32)0x80000002 fpscr 08000000 +vqshl.s64 d5, d4, #7 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.s32 d10, d11, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.s32 d10, d11, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.s32 d31, d30, #1 :: Qd 0xffffff02 0xffffff02 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s32 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.s32 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s32 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s32 d5, d4, #31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #28 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s32 d5, d4, #28 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s32 d5, d4, #27 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #27 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #26 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s32 d5, d4, #26 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s32 d5, d4, #17 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.s32 d5, d4, #31 :: Qd 0x80000000 0x80000000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s32 d5, d4, #31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.s32 d5, d4, #29 :: Qd 0xe0000000 0xe0000000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s32 d5, d4, #29 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.s32 d5, d4, #7 :: Qd 0x80000000 0x80000000 Qm (i32)0x80000002 fpscr 08000000 +vqshl.s32 d5, d4, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.s16 d9, d8, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.s16 d9, d8, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.s16 d31, d30, #1 :: Qd 0xfffeff02 0xfffeff02 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s16 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.s16 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s16 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshl.s16 d9, d8, #15 :: Qd 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s16 d9, d8, #15 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr 08000000 vqshl.s16 d5, d4, #12 :: Qd 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s16 d5, d4, #12 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr 08000000 vqshl.s16 d5, d4, #11 :: Qd 0x00007fff 0x00007fff Qm (i32)0x00000010 fpscr 08000000 +vqshl.s16 d5, d4, #11 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr 08000000 vqshl.s16 d5, d4, #10 :: Qd 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s16 d5, d4, #10 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr 08000000 vqshl.s16 d5, d4, #4 :: Qd 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s16 d5, d4, #4 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x00000010 fpscr 08000000 vqshl.s16 d5, d4, #15 :: Qd 0x80008000 0x80008000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s16 d5, d4, #15 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr 08000000 vqshl.s16 d5, d4, #12 :: Qd 0xf000f000 0xf000f000 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s16 d5, d4, #12 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr 08000000 vqshl.s16 d5, d4, #7 :: Qd 0x80000100 0x80000100 Qm (i32)0x80000002 fpscr 08000000 +vqshl.s16 d5, d4, #7 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x80000002 fpscr 08000000 vqshl.s8 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.s8 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.s8 d31, d30, #1 :: Qd 0xfefefe80 0xfefefe80 Qm (i32)0xffffff81 fpscr 08000000 +vqshl.s8 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.s8 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.s8 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshl.s8 d5, d4, #7 :: Qd 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr 08000000 +vqshl.s8 d5, d4, #7 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr 08000000 vqshl.s8 d25, d4, #4 :: Qd 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr 08000000 +vqshl.s8 d25, d4, #4 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr 08000000 vqshl.s8 d5, d4, #3 :: Qd 0x0000007f 0x0000007f Qm (i32)0x00000010 fpscr 08000000 +vqshl.s8 d5, d4, #3 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x00000010 fpscr 08000000 vqshl.s8 d5, d4, #2 :: Qd 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr 00000000 vqshl.s8 d5, d4, #1 :: Qd 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr 00000000 +vqshl.s8 d5, d4, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr 00000000 vqshl.s8 d5, d4, #7 :: Qd 0x80808080 0x80808080 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s8 d5, d4, #7 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr 08000000 vqshl.s8 d5, d4, #5 :: Qd 0xe0e0e0e0 0xe0e0e0e0 Qm (i32)0xffffffff fpscr 00000000 +vqshl.s8 d5, d4, #5 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr 08000000 vqshl.s8 d5, d4, #2 :: Qd 0x80000008 0x80000008 Qm (i32)0x80000002 fpscr 08000000 +vqshl.s8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr 00000000 vqshl.u64 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.u64 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.u64 d31, d30, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr 08000000 +vqshl.u64 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.u64 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.u64 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshl.u64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u64 d5, d4, #59 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u64 d5, d4, #59 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u64 d5, d4, #58 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u64 d5, d4, #58 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u64 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u64 d5, d4, #17 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u64 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 +vqshl.u64 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.u32 d10, d11, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.u32 d10, d11, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.u32 d31, d30, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr 08000000 +vqshl.u32 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.u32 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.u32 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 +vqshl.u32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u32 d5, d4, #28 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u32 d5, d4, #28 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u32 d5, d4, #27 :: Qd 0x80000000 0x80000000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u32 d5, d4, #27 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u32 d5, d4, #26 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u32 d5, d4, #26 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u32 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u32 d5, d4, #17 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u32 d5, d4, #29 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u32 d5, d4, #29 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u32 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.u32 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.u16 d9, d8, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.u16 d9, d8, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.u16 d31, d30, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr 08000000 +vqshl.u16 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.u16 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.u16 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshl.u16 d9, d8, #15 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u16 d9, d8, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u16 d5, d4, #12 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u16 d5, d4, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u16 d5, d4, #11 :: Qd 0x00008000 0x00008000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u16 d5, d4, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u16 d5, d4, #10 :: Qd 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u16 d5, d4, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u16 d5, d4, #4 :: Qd 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u16 d5, d4, #4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u16 d5, d4, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u16 d5, d4, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u16 d5, d4, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u16 d5, d4, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u16 d5, d4, #7 :: Qd 0xffff0100 0xffff0100 Qm (i32)0x80000002 fpscr 08000000 +vqshl.u16 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshl.u8 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshl.u8 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshl.u8 d31, d30, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 fpscr 08000000 +vqshl.u8 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshl.u8 d5, d4, #0 :: Qd 0xffffff81 0xffffff81 Qm (i32)0xffffff81 fpscr 00000000 +vqshl.u8 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshl.u8 d5, d4, #7 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u8 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u8 d5, d4, #4 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr 08000000 +vqshl.u8 d5, d4, #4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshl.u8 d5, d4, #3 :: Qd 0x00000080 0x00000080 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u8 d5, d4, #3 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x00000010 fpscr 00000000 vqshl.u8 d5, d4, #2 :: Qd 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr 00000000 vqshl.u8 d5, d4, #1 :: Qd 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr 00000000 +vqshl.u8 d5, d4, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr 00000000 vqshl.u8 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u8 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshl.u8 d5, d4, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u8 d5, d4, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshl.u8 d5, d4, #2 :: Qd 0xff000008 0xff000008 Qm (i32)0x80000002 fpscr 08000000 +vqshl.u8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr 00000000 vqshlu.s64 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshlu.s64 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshlu.s64 d31, d30, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s64 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s64 d5, d4, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s64 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s64 d5, d4, #59 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s64 d5, d4, #59 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s64 d5, d4, #58 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s64 d5, d4, #58 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s64 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s64 d5, d4, #17 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s64 d5, d4, #63 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s64 d5, d4, #63 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s64 d5, d4, #60 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s64 d5, d4, #60 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s64 d5, d4, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 fpscr 08000000 +vqshlu.s64 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshlu.s32 d10, d11, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshlu.s32 d10, d11, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshlu.s32 d31, d30, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s32 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s32 d5, d4, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s32 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s32 d5, d4, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s32 d25, d24, #28 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s32 d25, d24, #28 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s32 d5, d4, #27 :: Qd 0x80000000 0x80000000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s32 d5, d4, #27 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s32 d5, d4, #26 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s32 d5, d4, #26 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s32 d5, d4, #17 :: Qd 0x00200000 0x00200000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s32 d5, d4, #17 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s32 d5, d24, #31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s32 d5, d24, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s32 d5, d4, #29 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s32 d5, d4, #29 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s32 d5, d4, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000002 fpscr 08000000 +vqshlu.s32 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshlu.s16 d9, d8, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshlu.s16 d9, d8, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshlu.s16 d31, d30, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s16 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s16 d5, d4, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s16 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s16 d9, d8, #15 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s16 d9, d8, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s16 d5, d4, #12 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s16 d5, d4, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s16 d5, d4, #11 :: Qd 0x00008000 0x00008000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s16 d5, d4, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s16 d5, d4, #10 :: Qd 0x00004000 0x00004000 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s16 d5, d4, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s16 d5, d4, #4 :: Qd 0x00000100 0x00000100 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s16 d5, d4, #4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s16 d15, d14, #15 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s16 d15, d14, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s16 d5, d4, #12 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s16 d5, d4, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s16 d5, d4, #7 :: Qd 0x00000100 0x00000100 Qm (i32)0x80000002 fpscr 08000000 +vqshlu.s16 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000002 fpscr 08000000 vqshlu.s8 d0, d1, #1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 fpscr 00000000 +vqshlu.s8 d0, d1, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 fpscr 00000000 vqshlu.s8 d31, d30, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s8 d31, d30, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s8 d5, d4, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff81 fpscr 08000000 +vqshlu.s8 d5, d4, #0 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff81 fpscr 00000000 vqshlu.s8 d5, d4, #7 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s8 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s8 d5, d4, #4 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000010 fpscr 08000000 +vqshlu.s8 d5, d4, #4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 fpscr 08000000 vqshlu.s8 d5, d4, #3 :: Qd 0x00000080 0x00000080 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s8 d5, d4, #3 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x00000010 fpscr 00000000 vqshlu.s8 d5, d4, #2 :: Qd 0x00000040 0x00000040 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x00000010 fpscr 00000000 vqshlu.s8 d5, d4, #1 :: Qd 0x00000020 0x00000020 Qm (i32)0x00000010 fpscr 00000000 +vqshlu.s8 d5, d4, #1 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000010 fpscr 00000000 vqshlu.s8 d5, d4, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s8 d5, d4, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s8 d5, d4, #5 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshlu.s8 d5, d4, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshlu.s8 d5, d4, #2 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 fpscr 08000000 +vqshlu.s8 d5, d4, #2 :: Qd 0x4c6c686c 0x487c787c Qm (i32)0x80000002 fpscr 00000000 ---- VQRSHL (register) ---- vqrshl.s64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.s64 d3, d4, d5 :: Qd 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.s64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.s64 d3, d4, d5 :: Qd 0xfffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.s64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqrshl.s64 d0, d1, d2 :: Qd 0x7fffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqrshl.s64 d13, d14, d15 :: Qd 0xffffffff 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.s64 d13, d14, d15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqrshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.s32 d2, d8, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.s32 d2, d8, d4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqrshl.s32 d12, d11, d13 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.s32 d12, d11, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqrshl.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.s32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqrshl.s32 d9, d10, d11 :: Qd 0xc0000004 0xc0000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 d9, d10, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.s32 d13, d3, d5 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 08000000 vqrshl.s16 d11, d10, d2 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 d11, d10, d2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.s16 d3, d14, d7 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.s16 d3, d14, d7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.s16 d0, d31, d2 :: Qd 0xc0000080 0xc0000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 d0, d31, d2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 d1, d2, d3 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.s16 d1, d2, d3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.s16 d3, d4, d5 :: Qd 0xd0000000 0xd0000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.s16 d3, d4, d5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqrshl.s16 d0, d15, d2 :: Qd 0x00007fff 0x00007fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s16 d0, d15, d2 :: Qd 0x131b7fff 0x121f7fff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqrshl.s8 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 d2, d7, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 d2, d7, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 d2, d7, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 d2, d7, d11 :: Qd 0x000000ff 0x000000ff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s16 d2, d7, d11 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s32 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.s32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.s8 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s8 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s16 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s16 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s32 d2, d7, d31 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.s32 d2, d7, d31 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.s8 d2, d7, d11 :: Qd 0xffffff80 0xffffff80 Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.s8 d2, d7, d11 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqrshl.s8 d13, d1, d2 :: Qd 0xffffff80 0xffffff80 Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.s8 d13, d1, d2 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqrshl.s8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.s8 d3, d7, d5 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 08000000 vqrshl.s8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqrshl.s8 d10, d11, d12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqrshl.s8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.s8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqrshl.s8 d10, d11, d12 :: Qd 0x0000007f 0x0000007f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.s8 d10, d11, d12 :: Qd 0x131b1a7f 0x121f1e7f Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 vqrshl.u64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 +vqrshl.u64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.u64 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 08000000 +vqrshl.u64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 fpscr: 00000000 vqrshl.u64 d3, d4, d5 :: Qd 0x1ffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.u64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 00000000 +vqrshl.u64 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000010 Qn (i32)0x0000000e fpscr: 08000000 vqrshl.u64 d13, d14, d15 :: Qd 0x0000003f 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 +vqrshl.u64 d13, d14, d15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 fpscr: 00000000 vqrshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 fpscr: 00000000 +vqrshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 fpscr: 00000000 vqrshl.u32 d2, d8, d4 :: Qd 0x0fffffff 0x0fffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 +vqrshl.u32 d2, d8, d4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc fpscr: 00000000 vqrshl.u32 d12, d11, d13 :: Qd 0x00800000 0x00800000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 +vqrshl.u32 d12, d11, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 fpscr: 00000000 vqrshl.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 +vqrshl.u32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 fpscr: 00000000 vqrshl.u32 d9, d10, d11 :: Qd 0x40000004 0x40000004 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 d9, d10, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u32 d13, d3, d5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 fpscr: 00000000 vqrshl.u16 d11, d10, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 d11, d10, d2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.u16 d3, d14, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 +vqrshl.u16 d3, d14, d7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd fpscr: 00000000 vqrshl.u16 d0, d31, d2 :: Qd 0x40000080 0x40000080 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 d0, d31, d2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 d1, d2, d3 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 +vqrshl.u16 d1, d2, d3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 fpscr: 00000000 vqrshl.u16 d3, d4, d5 :: Qd 0x50000000 0x50000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 +vqrshl.u16 d3, d4, d5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 fpscr: 00000000 vqrshl.u16 d0, d15, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u16 d0, d15, d2 :: Qd 0x131bffff 0x121fffff Qm (i32)0x00000001 Qn (i32)0x0000001e fpscr: 08000000 vqrshl.u8 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 +vqrshl.u8 d2, d7, d11 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xffffffff Qn (i32)0x00000028 fpscr: 08000000 vqrshl.u8 d2, d7, d11 :: Qd 0x80808080 0x80808080 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 d2, d7, d11 :: Qd 0x8080807f 0x8080807f Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u16 d2, d7, d11 :: Qd 0x80007fff 0x80007fff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u32 d2, d7, d11 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 +vqrshl.u32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff fpscr: 00000000 vqrshl.u8 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u8 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u16 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u16 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u32 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 +vqrshl.u32 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 fpscr: 00000000 vqrshl.u8 d13, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 +vqrshl.u8 d13, d1, d2 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0xfffffffc Qn (i32)0x0000001e fpscr: 08000000 vqrshl.u8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 +vqrshl.u8 d3, d7, d5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 fpscr: 00000000 vqrshl.u8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 00000000 +vqrshl.u8 d10, d11, d12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00010000 Qn (i32)0x00000010 fpscr: 08000000 vqrshl.u8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 +vqrshl.u8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 fpscr: 00000000 vqrshl.u8 d10, d11, d12 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 +vqrshl.u8 d10, d11, d12 :: Qd 0x131b1aff 0x121f1eff Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 08000000 ---- VRSHL (register) ---- vrshl.s64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 +vrshl.s64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 vrshl.s64 d3, d4, d5 :: Qd 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 +vrshl.s64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 vrshl.s64 d3, d4, d5 :: Qd 0xfffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd +vrshl.s64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd vrshl.s64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e +vrshl.s64 d0, d1, d2 :: Qd 0xc686c487 0xc787c000 Qm (i32)0x00000010 Qn (i32)0x0000000e vrshl.s64 d13, d14, d15 :: Qd 0xffffffff 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 +vrshl.s64 d13, d14, d15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 vrshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 +vrshl.s64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 +vrshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 vrshl.s32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 vrshl.s32 d2, d8, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc +vrshl.s32 d2, d8, d4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc vrshl.s32 d12, d11, d13 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 +vrshl.s32 d12, d11, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 vrshl.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 +vrshl.s32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 vrshl.s32 d9, d10, d11 :: Qd 0xc0000004 0xc0000004 Qm (i32)0x80000008 Qn (i32)0xffffffff +vrshl.s32 d9, d10, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff vrshl.s32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 +vrshl.s32 d13, d3, d5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 vrshl.s16 d11, d10, d2 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 +vrshl.s16 d11, d10, d2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 vrshl.s16 d3, d14, d7 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd +vrshl.s16 d3, d14, d7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd vrshl.s16 d0, d11, d2 :: Qd 0xc0000080 0xc0000080 Qm (i32)0x80000100 Qn (i32)0xffffffff +vrshl.s16 d0, d11, d2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff vrshl.s16 d1, d2, d3 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 +vrshl.s16 d1, d2, d3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 vrshl.s16 d3, d4, d5 :: Qd 0xd0000000 0xd0000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 +vrshl.s16 d3, d4, d5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 vrshl.s16 d0, d15, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x0000001e +vrshl.s16 d0, d15, d2 :: Qd 0x131b0000 0x121f0000 Qm (i32)0x00000001 Qn (i32)0x0000001e vrshl.s8 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.s8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.s16 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.s16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.s32 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.s32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.s8 d2, d7, d31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.s8 d2, d7, d31 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.s16 d2, d7, d31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.s16 d2, d7, d31 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.s32 d2, d7, d31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.s32 d2, d7, d31 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.s8 d2, d7, d11 :: Qd 0x000000ff 0x000000ff Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.s8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.s16 d2, d7, d11 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.s16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.s32 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.s32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.s8 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 +vrshl.s8 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 vrshl.s16 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 +vrshl.s16 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 vrshl.s32 d2, d7, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff Qn (i32)0x00000000 +vrshl.s32 d2, d7, d11 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff Qn (i32)0x00000000 vrshl.s8 d2, d7, d11 :: Qd 0xffffff00 0xffffff00 Qm (i32)0xffffffff Qn (i32)0x00000028 +vrshl.s8 d2, d7, d11 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0xffffffff Qn (i32)0x00000028 vrshl.s8 d13, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0xfffffffc Qn (i32)0x0000001e +vrshl.s8 d13, d1, d2 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0xfffffffc Qn (i32)0x0000001e vrshl.s8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 +vrshl.s8 d3, d7, d5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 vrshl.s8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 +vrshl.s8 d10, d11, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00010000 Qn (i32)0x00000010 vrshl.s8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 +vrshl.s8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 vrshl.s8 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vrshl.s8 d10, d11, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00000018 Qn (i32)0x00000078 vrshl.u64 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000001 Qn (i32)0x00000001 +vrshl.u64 d0, d1, d2 :: Qd 0x26363436 0x243e3c3e Qm (i32)0x00000001 Qn (i32)0x00000001 vrshl.u64 d3, d4, d5 :: Qd 0xffffff03 0xffffff02 Qm (i32)0xffffff81 Qn (i32)0x00000001 +vrshl.u64 d3, d4, d5 :: Qd 0x26363436 0x243e3c3e Qm (i32)0xffffff81 Qn (i32)0x00000001 vrshl.u64 d3, d4, d5 :: Qd 0x1ffffff0 0x3ffffff0 Qm (i32)0xffffff81 Qn (i32)0xfffffffd +vrshl.u64 d3, d4, d5 :: Qd 0x02636343 0x6243e3c4 Qm (i32)0xffffff81 Qn (i32)0xfffffffd vrshl.u64 d0, d1, d2 :: Qd 0x00040000 0x00040000 Qm (i32)0x00000010 Qn (i32)0x0000000e +vrshl.u64 d0, d1, d2 :: Qd 0xc686c487 0xc787c000 Qm (i32)0x00000010 Qn (i32)0x0000000e vrshl.u64 d13, d14, d15 :: Qd 0x0000003f 0xfffffc00 Qm (i32)0xffffffef Qn (i32)0xffffffe6 +vrshl.u64 d13, d14, d15 :: Qd 0x00000004 0xc6c686c5 Qm (i32)0xffffffef Qn (i32)0xffffffe6 vrshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0xffffffc4 +vrshl.u64 d7, d8, d2 :: Qd 0x00000000 0x00000001 Qm (i32)0x00000018 Qn (i32)0xffffffc4 +vrshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 vrshl.u32 d3, d4, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000007f Qn (i32)0xffffffe2 vrshl.u32 d2, d8, d4 :: Qd 0x0fffffff 0x0fffffff Qm (i32)0xfffffff5 Qn (i32)0xfffffffc +vrshl.u32 d2, d8, d4 :: Qd 0x0131b1a2 0x0121f1e2 Qm (i32)0xfffffff5 Qn (i32)0xfffffffc vrshl.u32 d12, d11, d13 :: Qd 0x00800000 0x00800000 Qm (i32)0xffffff88 Qn (i32)0xfffffff7 +vrshl.u32 d12, d11, d13 :: Qd 0x00098d8d 0x00090f8f Qm (i32)0xffffff88 Qn (i32)0xfffffff7 vrshl.u32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000022 Qn (i32)0xfffffff9 +vrshl.u32 d0, d1, d2 :: Qd 0x00263634 0x00243e3c Qm (i32)0x00000022 Qn (i32)0xfffffff9 vrshl.u32 d9, d10, d11 :: Qd 0x40000004 0x40000004 Qm (i32)0x80000008 Qn (i32)0xffffffff +vrshl.u32 d9, d10, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x80000008 Qn (i32)0xffffffff vrshl.u32 d13, d3, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x08000000 Qn (i32)0x00000003 +vrshl.u32 d13, d3, d5 :: Qd 0x98d8d0d8 0x90f8f0f8 Qm (i32)0x08000000 Qn (i32)0x00000003 vrshl.u16 d11, d10, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 +vrshl.u16 d11, d10, d2 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0xffffffe1 vrshl.u16 d3, d14, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000000 Qn (i32)0xfffffffd +vrshl.u16 d3, d14, d7 :: Qd 0x098e0343 0x091003c4 Qm (i32)0x80000000 Qn (i32)0xfffffffd vrshl.u16 d0, d31, d2 :: Qd 0x40000080 0x40000080 Qm (i32)0x80000100 Qn (i32)0xffffffff +vrshl.u16 d0, d31, d2 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000100 Qn (i32)0xffffffff vrshl.u16 d1, d2, d3 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 +vrshl.u16 d1, d2, d3 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000100 Qn (i32)0xffffffe1 vrshl.u16 d3, d4, d5 :: Qd 0x50000000 0x50000000 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 +vrshl.u16 d3, d4, d5 :: Qd 0x098e0001 0x09100001 Qm (i32)0xa0000000 Qn (i32)0xfffffff3 vrshl.u16 d0, d15, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x0000001e +vrshl.u16 d0, d15, d2 :: Qd 0x131b0000 0x121f0000 Qm (i32)0x00000001 Qn (i32)0x0000001e vrshl.u8 d2, d7, d11 :: Qd 0xffffff00 0xffffff00 Qm (i32)0xffffffff Qn (i32)0x00000028 +vrshl.u8 d2, d7, d11 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0xffffffff Qn (i32)0x00000028 vrshl.u8 d2, d7, d11 :: Qd 0x80808080 0x80808080 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.u8 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.u16 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.u16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.u32 d2, d7, d11 :: Qd 0x00000008 0x00000008 Qm (i32)0x0000000f Qn (i32)0xffffffff +vrshl.u32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0x0000000f Qn (i32)0xffffffff vrshl.u8 d2, d7, d11 :: Qd 0x80808080 0x80808080 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.u8 d2, d7, d11 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.u16 d2, d7, d11 :: Qd 0x80008000 0x80008000 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.u16 d2, d7, d11 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.u32 d2, d7, d11 :: Qd 0x80000000 0x80000000 Qm (i32)0xffffffff Qn (i32)0xffffffff +vrshl.u32 d2, d7, d11 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xffffffff Qn (i32)0xffffffff vrshl.u8 d2, d7, d31 :: Qd 0x8080807f 0x8080807f Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.u8 d2, d7, d31 :: Qd 0x0a0e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.u16 d2, d7, d31 :: Qd 0x80007fff 0x80007fff Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.u16 d2, d7, d31 :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.u32 d2, d7, d31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xfffffffe Qn (i32)0xffffffff +vrshl.u32 d2, d7, d31 :: Qd 0x098d8d0e 0x090f8f10 Qm (i32)0xfffffffe Qn (i32)0xffffffff vrshl.u8 d13, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0xfffffffc Qn (i32)0x0000001e +vrshl.u8 d13, d1, d2 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0xfffffffc Qn (i32)0x0000001e vrshl.u8 d3, d7, d5 :: Qd 0x80000058 0x80000058 Qm (i32)0x8000000b Qn (i32)0x00000003 +vrshl.u8 d3, d7, d5 :: Qd 0x131b1ad8 0x121f1ef8 Qm (i32)0x8000000b Qn (i32)0x00000003 vrshl.u8 d10, d11, d12 :: Qd 0x00010000 0x00010000 Qm (i32)0x00010000 Qn (i32)0x00000010 +vrshl.u8 d10, d11, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00010000 Qn (i32)0x00000010 vrshl.u8 d6, d7, d8 :: Qd 0x40000000 0x40000000 Qm (i32)0x40000000 Qn (i32)0x00000002 +vrshl.u8 d6, d7, d8 :: Qd 0x131b1a6c 0x121f1e7c Qm (i32)0x40000000 Qn (i32)0x00000002 vrshl.u8 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vrshl.u8 d10, d11, d12 :: Qd 0x131b1a00 0x121f1e00 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VMAX (integer) ---- vmax.s32 d0, d1, d2 :: Qd 0x00000079 0x00000079 Qm (i32)0x00000019 Qn (i32)0x00000079 +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000019 Qn (i32)0x00000079 vmax.s32 d0, d1, d2 :: Qd 0x000000fa 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000079 +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x000000fa Qn (i32)0x00000079 vmax.s32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x0000008c vmax.s16 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x00000078 +vmax.s16 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x00000078 vmax.s8 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 +vmax.s8 d0, d1, d2 :: Qd 0x131b1a78 0x121f1e78 Qm (i32)0x00000078 Qn (i32)0x00000078 vmax.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.s16 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.s8 d5, d7, d5 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.s16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.s16 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.s32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.s8 d5, d7, d5 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.s16 d0, d1, d2 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.s16 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.s32 d0, d1, d2 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.s32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.s32 d10, d11, d12 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmax.s32 d10, d11, d12 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000018 Qn (i32)0x00000078 vmax.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000019 Qn (i32)0x00000078 +vmax.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000019 Qn (i32)0x00000078 vmax.u32 d0, d1, d2 :: Qd 0x000000fa 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000078 +vmax.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x000000fa Qn (i32)0x00000078 vmax.u32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vmax.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x0000008c vmax.u16 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x00000078 +vmax.u16 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x00000078 vmax.u8 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 +vmax.u8 d0, d1, d2 :: Qd 0x131b1a78 0x121f1e78 Qm (i32)0x00000078 Qn (i32)0x00000078 vmax.u8 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.u8 d0, d1, d2 :: Qd 0x801b1a1b 0x801f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.u16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.u16 d0, d1, d2 :: Qd 0x80001a1b 0x80001e1f Qm (i32)0x80000001 Qn (i32)0x80000002 +vmax.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmax.u8 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.u8 d0, d1, d2 :: Qd 0x801b1a1b 0x801f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.u16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.u16 d0, d1, d2 :: Qd 0x80001a1b 0x80001e1f Qm (i32)0x80000001 Qn (i32)0x80000003 +vmax.u32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.u32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmax.u8 d0, d1, d2 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.u8 d0, d1, d2 :: Qd 0x801b1a1b 0x801f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.u16 d0, d1, d2 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.u16 d0, d1, d2 :: Qd 0x80001a1b 0x80001e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.u32 d0, d1, d2 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmax.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmax.u32 d10, d11, d12 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmax.u32 d10, d11, d12 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VMIN (integer) ---- vmin.s32 d0, d1, d2 :: Qd 0x00000019 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000079 +vmin.s32 d0, d1, d2 :: Qd 0x00000079 0x00000079 Qm (i32)0x00000019 Qn (i32)0x00000079 vmin.s32 d0, d1, d2 :: Qd 0x00000079 0x00000079 Qm (i32)0x000000fa Qn (i32)0x00000079 +vmin.s32 d0, d1, d2 :: Qd 0x00000079 0x00000079 Qm (i32)0x000000fa Qn (i32)0x00000079 +vmin.s32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x0000008c Qn (i32)0x00000078 vmin.s32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x0000008c Qn (i32)0x00000078 vmin.s16 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 +vmin.s16 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 +vmin.s8 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c vmin.s8 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c vmin.s8 d5, d7, d5 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.s16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.s32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.s8 d5, d7, d5 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.s8 d5, d7, d5 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.s16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.s16 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.s32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.s32 d0, d1, d2 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.s8 d5, d7, d5 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.s16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.s32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.s32 d10, d11, d12 :: Qd 0x00000018 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmin.s32 d10, d11, d12 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000018 Qn (i32)0x00000078 vmin.u32 d0, d1, d2 :: Qd 0x00000019 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000078 +vmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000019 Qn (i32)0x00000078 +vmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x000000fa Qn (i32)0x00000078 vmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x000000fa Qn (i32)0x00000078 vmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x0000008c Qn (i32)0x00000078 +vmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x0000008c Qn (i32)0x00000078 +vmin.u16 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 vmin.u16 d0, d1, d2 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000078 Qn (i32)0x00000078 vmin.u8 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vmin.u8 d0, d1, d2 :: Qd 0x0000001b 0x0000001f Qm (i32)0x0000008c Qn (i32)0x0000008c vmin.u8 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.u8 d0, d1, d2 :: Qd 0x13000002 0x12000002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.u16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.u16 d0, d1, d2 :: Qd 0x131b0002 0x121f0002 Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.u32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmin.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vmin.u8 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.u8 d0, d1, d2 :: Qd 0x13000003 0x12000003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.u16 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.u16 d0, d1, d2 :: Qd 0x131b0003 0x121f0003 Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.u32 d0, d1, d2 :: Qd 0x80000001 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vmin.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vmin.u8 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.u8 d0, d1, d2 :: Qd 0x13000002 0x12000002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.u16 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.u16 d0, d1, d2 :: Qd 0x131b0002 0x121f0002 Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.u32 d0, d1, d2 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vmin.u32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vmin.u32 d10, d11, d12 :: Qd 0x00000018 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmin.u32 d10, d11, d12 :: Qd 0x00000078 0x00000078 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VABD ---- vabd.s32 d0, d1, d2 :: Qd 0x0000005f 0x0000005f Qm (i32)0x00000019 Qn (i32)0x00000078 +vabd.s32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000019 Qn (i32)0x00000078 vabd.s32 d0, d1, d2 :: Qd 0x00000060 0x00000060 Qm (i32)0x00000019 Qn (i32)0x00000079 +vabd.s32 d0, d1, d2 :: Qd 0x131b19a2 0x121f1da6 Qm (i32)0x00000019 Qn (i32)0x00000079 vabd.s32 d0, d1, d2 :: Qd 0x00000104 0x00000104 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vabd.s32 d0, d1, d2 :: Qd 0x131b1a93 0x121f1e97 Qm (i32)0x0000008c Qn (i32)0xffffff88 vabd.s16 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vabd.s16 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 vabd.s8 d0, d1, d2 :: Qd 0x000000ec 0x000000ec Qm (i32)0x0000008c Qn (i32)0x00000078 +vabd.s8 d0, d1, d2 :: Qd 0x131b1a5d 0x121f1e59 Qm (i32)0x0000008c Qn (i32)0x00000078 vabd.s8 d5, d7, d5 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.s8 d5, d7, d5 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.s8 d5, d7, d5 :: Qd 0x7f010101 0x7f010101 Qm (i32)0xffffff01 Qn (i32)0x80000002 +vabd.s8 d5, d7, d5 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0xffffff01 Qn (i32)0x80000002 vabd.s8 d5, d7, d5 :: Qd 0x7f010137 0x7f010137 Qm (i32)0x80000001 Qn (i32)0xffffff38 +vabd.s8 d5, d7, d5 :: Qd 0x141c1b1d 0x13201f19 Qm (i32)0x80000001 Qn (i32)0xffffff38 vabd.s16 d0, d1, d2 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.s16 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.s32 d0, d1, d2 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.s32 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.s8 d5, d7, d5 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.s8 d5, d7, d5 :: Qd 0x931b1a18 0x921f1e1c Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.s16 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.s16 d0, d1, d2 :: Qd 0x931b1a18 0x921f1e1c Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.s32 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.s32 d0, d1, d2 :: Qd 0x931b1a18 0x921f1e1c Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.s8 d5, d7, d5 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.s8 d5, d7, d5 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.s16 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.s16 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.s32 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.s32 d0, d1, d2 :: Qd 0x931b1a19 0x921f1e1d Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.s32 d10, d11, d12 :: Qd 0x00000060 0x00000060 Qm (i32)0x00000018 Qn (i32)0x00000078 +vabd.s32 d10, d11, d12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 vabd.u32 d0, d1, d2 :: Qd 0x0000005f 0x0000005f Qm (i32)0x00000019 Qn (i32)0x00000078 +vabd.u32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000019 Qn (i32)0x00000078 vabd.u32 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vabd.u32 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x0000008c Qn (i32)0x00000078 vabd.u16 d0, d1, d2 :: Qd 0xfffffefc 0xfffffefc Qm (i32)0xffffff74 Qn (i32)0x00000078 +vabd.u16 d0, d1, d2 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0xffffff74 Qn (i32)0x00000078 vabd.u8 d0, d1, d2 :: Qd 0x00000014 0x00000014 Qm (i32)0x0000008c Qn (i32)0x00000078 +vabd.u8 d0, d1, d2 :: Qd 0x131b1a5d 0x121f1e59 Qm (i32)0x0000008c Qn (i32)0x00000078 vabd.u8 d5, d7, d5 :: Qd 0x7fffff01 0x7fffff01 Qm (i32)0xffffff01 Qn (i32)0x80000002 +vabd.u8 d5, d7, d5 :: Qd 0x6d1b1a19 0x6e1f1e1d Qm (i32)0xffffff01 Qn (i32)0x80000002 vabd.u8 d5, d7, d5 :: Qd 0x7fffff37 0x7fffff37 Qm (i32)0x80000001 Qn (i32)0xffffff38 +vabd.u8 d5, d7, d5 :: Qd 0xece4e51d 0xede0e119 Qm (i32)0x80000001 Qn (i32)0xffffff38 vabd.u8 d0, d1, d2 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.u8 d0, d1, d2 :: Qd 0x6d1b1a19 0x6e1f1e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.u16 d0, d1, d2 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.u16 d0, d1, d2 :: Qd 0x6ce51a19 0x6de11e1d Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.u32 d0, d1, d2 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vabd.u32 d0, d1, d2 :: Qd 0x6ce4e5e7 0x6de0e1e3 Qm (i32)0x80000001 Qn (i32)0x80000002 vabd.u8 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.u8 d0, d1, d2 :: Qd 0x6d1b1a18 0x6e1f1e1c Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.u16 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.u16 d0, d1, d2 :: Qd 0x6ce51a18 0x6de11e1c Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.u32 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000003 +vabd.u32 d0, d1, d2 :: Qd 0x6ce4e5e8 0x6de0e1e4 Qm (i32)0x80000001 Qn (i32)0x80000003 vabd.u8 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.u8 d0, d1, d2 :: Qd 0x6d1b1a19 0x6e1f1e1d Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.u16 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.u16 d0, d1, d2 :: Qd 0x6ce51a19 0x6de11e1d Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.u32 d0, d1, d2 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000004 Qn (i32)0x80000002 +vabd.u32 d0, d1, d2 :: Qd 0x6ce4e5e7 0x6de0e1e3 Qm (i32)0x80000004 Qn (i32)0x80000002 vabd.u32 d10, d11, d12 :: Qd 0x00000060 0x00000060 Qm (i32)0x00000018 Qn (i32)0x00000078 +vabd.u32 d10, d11, d12 :: Qd 0x131b19a3 0x121f1da7 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VABA ---- vaba.s32 d0, d1, d2 :: Qd 0x555555b4 0x555555b4 Qm (i32)0x00000019 Qn (i32)0x00000078 +vaba.s32 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x00000019 Qn (i32)0x00000078 vaba.s32 d0, d1, d2 :: Qd 0x555555b5 0x555555b5 Qm (i32)0x00000019 Qn (i32)0x00000079 +vaba.s32 d0, d1, d2 :: Qd 0x68706ef7 0x677472fb Qm (i32)0x00000019 Qn (i32)0x00000079 vaba.s32 d0, d1, d2 :: Qd 0x55555569 0x55555569 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.s32 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.s16 d0, d1, d2 :: Qd 0x55555569 0x55555569 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.s16 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.s8 d0, d1, d2 :: Qd 0x55555541 0x55555541 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.s8 d0, d1, d2 :: Qd 0x68706fb2 0x677473ae Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.s8 d5, d7, d5 :: Qd 0x80000003 0x80000003 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.s8 d5, d7, d5 :: Qd 0xff010103 0xff010103 Qm (i32)0xffffff01 Qn (i32)0x80000002 +vaba.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffff01 Qn (i32)0x80000002 vaba.s8 d5, d7, d5 :: Qd 0x7e00006f 0x7e00006f Qm (i32)0x80000001 Qn (i32)0xffffff38 +vaba.s8 d5, d7, d5 :: Qd 0x131b1a55 0x121f1e51 Qm (i32)0x80000001 Qn (i32)0xffffff38 vaba.s16 d0, d1, d2 :: Qd 0x55555556 0x55555556 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.s16 d0, d1, d2 :: Qd 0xe8706f6e 0xe7747372 Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.s32 d0, d1, d2 :: Qd 0x55555556 0x55555556 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.s32 d0, d1, d2 :: Qd 0xe8706f6e 0xe7747372 Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.s8 d5, d7, d5 :: Qd 0x80000005 0x80000005 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.s16 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.s16 d0, d1, d2 :: Qd 0xe8706f6d 0xe7747371 Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.s32 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.s32 d0, d1, d2 :: Qd 0xe8706f6d 0xe7747371 Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.s8 d5, d7, d5 :: Qd 0x80000004 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.s8 d5, d7, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.s16 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.s16 d0, d1, d2 :: Qd 0xe8706f6e 0xe7747372 Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.s32 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.s32 d0, d1, d2 :: Qd 0xe8706f6e 0xe7747372 Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.s32 d10, d11, d12 :: Qd 0x555555b5 0x555555b5 Qm (i32)0x00000018 Qn (i32)0x00000078 +vaba.s32 d10, d11, d12 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x00000018 Qn (i32)0x00000078 vaba.u32 d0, d1, d2 :: Qd 0x555555b4 0x555555b4 Qm (i32)0x00000019 Qn (i32)0x00000078 +vaba.u32 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x00000019 Qn (i32)0x00000078 vaba.u32 d0, d1, d2 :: Qd 0x55555569 0x55555569 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.u32 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.u16 d0, d1, d2 :: Qd 0x55555569 0x55555569 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.u16 d0, d1, d2 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.u8 d0, d1, d2 :: Qd 0x55555569 0x55555569 Qm (i32)0x0000008c Qn (i32)0x00000078 +vaba.u8 d0, d1, d2 :: Qd 0x68706fb2 0x677473ae Qm (i32)0x0000008c Qn (i32)0x00000078 vaba.u8 d5, d7, d5 :: Qd 0xffffff03 0xffffff03 Qm (i32)0xffffff01 Qn (i32)0x80000002 +vaba.u8 d5, d7, d5 :: Qd 0xed1b1a1b 0xee1f1e1f Qm (i32)0xffffff01 Qn (i32)0x80000002 vaba.u8 d5, d7, d5 :: Qd 0x7efefe6f 0x7efefe6f Qm (i32)0x80000001 Qn (i32)0xffffff38 +vaba.u8 d5, d7, d5 :: Qd 0xebe3e455 0xecdfe051 Qm (i32)0x80000001 Qn (i32)0xffffff38 vaba.u8 d0, d1, d2 :: Qd 0x55555556 0x55555556 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.u8 d0, d1, d2 :: Qd 0xc2706f6e 0xc3747372 Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.u16 d0, d1, d2 :: Qd 0x55555556 0x55555556 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.u16 d0, d1, d2 :: Qd 0xc23a6f6e 0xc3367372 Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.u32 d0, d1, d2 :: Qd 0x55555556 0x55555556 Qm (i32)0x80000001 Qn (i32)0x80000002 +vaba.u32 d0, d1, d2 :: Qd 0xc23a3b3c 0xc3363738 Qm (i32)0x80000001 Qn (i32)0x80000002 vaba.u8 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.u8 d0, d1, d2 :: Qd 0xc2706f6d 0xc3747371 Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.u16 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.u16 d0, d1, d2 :: Qd 0xc23a6f6d 0xc3367371 Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.u32 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000001 Qn (i32)0x80000003 +vaba.u32 d0, d1, d2 :: Qd 0xc23a3b3d 0xc3363739 Qm (i32)0x80000001 Qn (i32)0x80000003 vaba.u8 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.u8 d0, d1, d2 :: Qd 0xc2706f6e 0xc3747372 Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.u16 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.u16 d0, d1, d2 :: Qd 0xc23a6f6e 0xc3367372 Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.u32 d0, d1, d2 :: Qd 0x55555557 0x55555557 Qm (i32)0x80000004 Qn (i32)0x80000002 +vaba.u32 d0, d1, d2 :: Qd 0xc23a3b3c 0xc3363738 Qm (i32)0x80000004 Qn (i32)0x80000002 vaba.u32 d10, d11, d12 :: Qd 0x555555b5 0x555555b5 Qm (i32)0x00000018 Qn (i32)0x00000078 +vaba.u32 d10, d11, d12 :: Qd 0x68706ef8 0x677472fc Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VTST ---- vtst.32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 +vtst.32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 +vtst.32 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vtst.32 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0x00000078 vtst.16 d6, d7, d8 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vtst.16 d6, d7, d8 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vtst.8 d9, d10, d12 :: Qd 0x000000ff 0x000000ff Qm (i32)0x0000008c Qn (i32)0x00000078 vtst.8 d9, d10, d12 :: Qd 0x000000ff 0x000000ff Qm (i32)0x0000008c Qn (i32)0x00000078 vtst.8 d0, d1, d2 :: Qd 0xff000000 0xff000000 Qm (i32)0x80000001 Qn (i32)0x80000002 +vtst.8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x80000002 vtst.16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00004001 Qn (i32)0x00004001 +vtst.16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00004001 Qn (i32)0x00004001 +vtst.32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 vtst.32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000001 Qn (i32)0x80000002 vtst.8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x00000002 +vtst.8 d0, d1, d2 :: Qd 0x000000ff 0x000000ff Qm (i32)0x80000001 Qn (i32)0x00000002 +vtst.16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00004001 Qn (i32)0x00004001 vtst.16 d0, d1, d2 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00004001 Qn (i32)0x00004001 vtst.32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x80000002 +vtst.32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 Qn (i32)0x80000002 +vtst.32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 vtst.32 d10, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VCEQ ---- vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vceq.i32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x00000078 vceq.i32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x00000078 vceq.i16 d6, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000078 Qn (i32)0x00000078 +vceq.i16 d6, d7, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 vceq.i8 d9, d10, d12 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x0000008c Qn (i32)0x00000078 +vceq.i8 d9, d10, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0x00000078 vceq.i8 d0, d1, d2 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x80000001 Qn (i32)0x80000002 +vceq.i8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 vceq.i16 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00004001 Qn (i32)0x00004001 +vceq.i16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00004001 Qn (i32)0x00004001 +vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 vceq.i8 d0, d1, d2 :: Qd 0x00ffff00 0x00ffff00 Qm (i32)0x80000001 Qn (i32)0x00000002 +vceq.i8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x00000002 vceq.i16 d0, d1, d2 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x00000001 Qn (i32)0x00004001 +vceq.i16 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x00004001 +vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x80000002 vceq.i32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 Qn (i32)0x80000002 vceq.i32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 +vceq.i32 d10, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VMLA ---- vmla.i32 d0, d1, d2 :: Qd 0x55554a15 0x55554a15 Qm (i32)0xffffffe8 Qn (i32)0x00000078 +vmla.i32 d0, d1, d2 :: Qd 0x4a0991fd 0xd3eb73dd Qm (i32)0xffffffe8 Qn (i32)0x00000078 vmla.i32 d6, d7, d8 :: Qd 0x555596f5 0x555596f5 Qm (i32)0x0000008c Qn (i32)0x00000078 +vmla.i32 d6, d7, d8 :: Qd 0x4a0991fd 0xd3eb73dd Qm (i32)0x0000008c Qn (i32)0x00000078 vmla.i16 d9, d11, d12 :: Qd 0x5555bd55 0x5555bd55 Qm (i32)0x00000140 Qn (i32)0x00000120 +vmla.i16 d9, d11, d12 :: Qd 0x5555b3b5 0x55553835 Qm (i32)0x00000140 Qn (i32)0x00000120 vmla.i8 d0, d1, d2 :: Qd 0x555555b5 0x555555b5 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmla.i8 d0, d1, d2 :: Qd 0x423a3bad 0x433637cd Qm (i32)0x0000008c Qn (i32)0xffffff88 vmla.i8 d10, d11, d12 :: Qd 0x5555559f 0x5555559f Qm (i32)0x00000021 Qn (i32)0x0000000a +vmla.i8 d10, d11, d12 :: Qd 0x55555563 0x5555558b Qm (i32)0x00000021 Qn (i32)0x0000000a vmla.i16 d4, d5, d6 :: Qd 0x5555f557 0x5555f557 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmla.i16 d4, d5, d6 :: Qd 0x5555e98b 0x55557193 Qm (i32)0x00004001 Qn (i32)0x00002002 vmla.i32 d7, d8, d9 :: Qd 0xd5555557 0xd5555557 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmla.i32 d7, d8, d9 :: Qd 0xfb8b898b 0xf9939193 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.i8 d10, d13, d12 :: Qd 0x5555559f 0x5555559f Qm (i32)0x00000021 Qn (i32)0x0000000a +vmla.i8 d10, d13, d12 :: Qd 0x55555563 0x5555558b Qm (i32)0x00000021 Qn (i32)0x0000000a vmla.i16 d4, d5, d6 :: Qd 0x55551751 0x55551751 Qm (i32)0x100000fe Qn (i32)0x00002002 +vmla.i16 d4, d5, d6 :: Qd 0x5555e98b 0x55557193 Qm (i32)0x100000fe Qn (i32)0x00002002 vmla.i32 d7, d8, d9 :: Qd 0xd5555557 0xd5555557 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmla.i32 d7, d8, d9 :: Qd 0xfb8b898b 0xf9939193 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.i32 d10, d11, d15 :: Qd 0x55554a15 0x55554a15 Qm (i32)0x00000018 Qn (i32)0xffffff88 +vmla.i32 d10, d11, d15 :: Qd 0x60a118ad 0xd6bf36cd Qm (i32)0x00000018 Qn (i32)0xffffff88 ---- VMLS ---- vmls.i32 d0, d1, d2 :: Qd 0x55556095 0x55556095 Qm (i32)0xffffffe8 Qn (i32)0x00000078 +vmls.i32 d0, d1, d2 :: Qd 0x60a118ad 0xd6bf36cd Qm (i32)0xffffffe8 Qn (i32)0x00000078 vmls.i32 d6, d7, d8 :: Qd 0x555596f5 0x555596f5 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmls.i32 d6, d7, d8 :: Qd 0x4a0991fd 0xd3eb73dd Qm (i32)0x0000008c Qn (i32)0xffffff88 vmls.i16 d9, d11, d12 :: Qd 0x5555ed55 0x5555ed55 Qm (i32)0x00000140 Qn (i32)0x00000120 +vmls.i16 d9, d11, d12 :: Qd 0x5555f6f5 0x55557275 Qm (i32)0x00000140 Qn (i32)0x00000120 vmls.i8 d0, d1, d2 :: Qd 0x555555b5 0x555555b5 Qm (i32)0x0000008c Qn (i32)0x00000078 +vmls.i8 d0, d1, d2 :: Qd 0x555555ad 0x555555cd Qm (i32)0x0000008c Qn (i32)0x00000078 vmls.i8 d10, d11, d12 :: Qd 0x5555550b 0x5555550b Qm (i32)0x00000021 Qn (i32)0x0000000a +vmls.i8 d10, d11, d12 :: Qd 0x55555547 0x5555551f Qm (i32)0x00000021 Qn (i32)0x0000000a vmls.i16 d4, d5, d6 :: Qd 0x5555b553 0x5555b553 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmls.i16 d4, d5, d6 :: Qd 0x5555c11f 0x55553917 Qm (i32)0x00004001 Qn (i32)0x00002002 vmls.i32 d7, d8, d9 :: Qd 0xd5555553 0xd5555553 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmls.i32 d7, d8, d9 :: Qd 0xaf1f211f 0xb1171917 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.i8 d10, d13, d12 :: Qd 0x5555550b 0x5555550b Qm (i32)0x00000021 Qn (i32)0x0000000a +vmls.i8 d10, d13, d12 :: Qd 0x55555547 0x5555551f Qm (i32)0x00000021 Qn (i32)0x0000000a vmls.i16 d4, d5, d6 :: Qd 0x55559359 0x55559359 Qm (i32)0x100000fe Qn (i32)0x00002002 +vmls.i16 d4, d5, d6 :: Qd 0x5555c11f 0x55553917 Qm (i32)0x100000fe Qn (i32)0x00002002 vmls.i32 d7, d8, d9 :: Qd 0xd5555553 0xd5555553 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmls.i32 d7, d8, d9 :: Qd 0xaf1f211f 0xb1171917 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.i32 d10, d11, d15 :: Qd 0x55556095 0x55556095 Qm (i32)0xffffffe8 Qn (i32)0x00000078 +vmls.i32 d10, d11, d15 :: Qd 0x60a118ad 0xd6bf36cd Qm (i32)0xffffffe8 Qn (i32)0x00000078 ---- VMUL ---- vmul.i32 d0, d1, d2 :: Qd 0x00000b40 0x00000b40 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmul.i32 d0, d1, d2 :: Qd 0xf4b43ca8 0x7e961e88 Qm (i32)0x00000018 Qn (i32)0x00000078 vmul.i32 d6, d7, d8 :: Qd 0xffffbe60 0xffffbe60 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmul.i32 d6, d7, d8 :: Qd 0x0b4bc358 0x8169e178 Qm (i32)0x0000008c Qn (i32)0xffffff88 vmul.i16 d9, d11, d12 :: Qd 0x00006800 0x00006800 Qm (i32)0x00000140 Qn (i32)0x00000120 +vmul.i16 d9, d11, d12 :: Qd 0x00005e60 0x0000e2e0 Qm (i32)0x00000140 Qn (i32)0x00000120 vmul.i8 d0, d1, d2 :: Qd 0x000000a0 0x000000a0 Qm (i32)0x0000008c Qn (i32)0x00000078 +vmul.i8 d0, d1, d2 :: Qd 0x000000a8 0x00000088 Qm (i32)0x0000008c Qn (i32)0x00000078 vmul.i8 d10, d11, d12 :: Qd 0x0000004a 0x0000004a Qm (i32)0x00000021 Qn (i32)0x0000000a +vmul.i8 d10, d11, d12 :: Qd 0x0000000e 0x00000036 Qm (i32)0x00000021 Qn (i32)0x0000000a vmul.i16 d4, d5, d6 :: Qd 0x0000a002 0x0000a002 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmul.i16 d4, d5, d6 :: Qd 0x00009436 0x00001c3e Qm (i32)0x00004001 Qn (i32)0x00002002 vmul.i32 d7, d8, d9 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmul.i32 d7, d8, d9 :: Qd 0xa6363436 0xa43e3c3e Qm (i32)0x80000001 Qn (i32)0x80000002 vmul.i8 d10, d11, d12 :: Qd 0x0000c00e 0x0000c00e Qm (i32)0x0200feb2 Qn (i32)0x000020df +vmul.i8 d10, d11, d12 :: Qd 0x00004085 0x0000c001 Qm (i32)0x0200feb2 Qn (i32)0x000020df vmul.i16 d4, d5, d6 :: Qd 0x00008866 0x00008866 Qm (i32)0xffff9433 Qn (i32)0x00002002 +vmul.i16 d4, d5, d6 :: Qd 0x00009436 0x00001c3e Qm (i32)0xffff9433 Qn (i32)0x00002002 vmul.i32 d7, d8, d9 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 Qn (i32)0x0000000c +vmul.i32 d7, d8, d9 :: Qd 0xe5453944 0xd9756974 Qm (i32)0x80000000 Qn (i32)0x0000000c vmul.i8 d10, d13, d12 :: Qd 0x0000004a 0x0000004a Qm (i32)0x00000021 Qn (i32)0x0000000a +vmul.i8 d10, d13, d12 :: Qd 0x0000000e 0x00000036 Qm (i32)0x00000021 Qn (i32)0x0000000a vmul.i16 d4, d5, d6 :: Qd 0x0000c1fc 0x0000c1fc Qm (i32)0x100000fe Qn (i32)0x00002002 +vmul.i16 d4, d5, d6 :: Qd 0x00009436 0x00001c3e Qm (i32)0x100000fe Qn (i32)0x00002002 vmul.i32 d7, d8, d9 :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmul.i32 d7, d8, d9 :: Qd 0xa6363436 0xa43e3c3e Qm (i32)0x80000001 Qn (i32)0x80000002 vmul.i32 d10, d11, d15 :: Qd 0x00000b40 0x00000b40 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmul.i32 d10, d11, d15 :: Qd 0xf4b43ca8 0x7e961e88 Qm (i32)0x00000018 Qn (i32)0x00000078 vmul.p8 q0, q1, q2 :: Qd 0x00000005 0x00000005 Qm (i32)0x00000003 Qn (i32)0x00000003 +vmul.p8 q0, q1, q2 :: Qd 0x0000002d 0x00000021 Qm (i32)0x00000003 Qn (i32)0x00000003 vmul.p8 q0, q1, q2 :: Qd 0x00000044 0x00000044 Qm (i32)0x0000000c Qn (i8)0x0000000f +vmul.p8 q0, q1, q2 :: Qd 0xe1999699 0xeea5aaa5 Qm (i32)0x0000000c Qn (i8)0x0000000f ---- VMUL (by scalar) ---- vmul.i32 d0, d1, d4[0] :: Qd 0x00000b40 0x00000b40 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmul.i32 d0, d1, d4[0] :: Qd 0xf4b43ca8 0x7e961e88 Qm (i32)0x00000018 Qn (i32)0x00000078 vmul.i32 d31, d8, d7[1] :: Qd 0xffffbe60 0xffffbe60 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmul.i32 d31, d8, d7[1] :: Qd 0x0b4bc358 0x8169e178 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmul.i16 d30, d9, d7[3] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000140 Qn (i32)0x00000120 vmul.i16 d30, d9, d7[3] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000140 Qn (i32)0x00000120 vmul.i16 d4, d5, d6[2] :: Qd 0x0000a002 0x0000a002 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmul.i16 d4, d5, d6[2] :: Qd 0x86369436 0x043e1c3e Qm (i32)0x00004001 Qn (i32)0x00002002 vmul.i32 d4, d8, d15[1] :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmul.i32 d4, d8, d15[1] :: Qd 0xa6363436 0xa43e3c3e Qm (i32)0x80000001 Qn (i32)0x80000002 vmul.i16 d4, d5, d6[0] :: Qd 0xdffe8866 0xdffe8866 Qm (i32)0xffff9433 Qn (i32)0x00002002 +vmul.i16 d4, d5, d6[0] :: Qd 0x86369436 0x043e1c3e Qm (i32)0xffff9433 Qn (i32)0x00002002 vmul.i32 d7, d8, d1[1] :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmul.i32 d7, d8, d1[1] :: Qd 0x1e893944 0x42e96974 Qm (i32)0x80000000 Qn (i16)0x0000000c vmul.i16 d4, d5, d6[0] :: Qd 0x2000c1fc 0x2000c1fc Qm (i32)0x100000fe Qn (i32)0x00002002 +vmul.i16 d4, d5, d6[0] :: Qd 0x86369436 0x043e1c3e Qm (i32)0x100000fe Qn (i32)0x00002002 vmul.i32 d7, d8, d1[1] :: Qd 0x80000002 0x80000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmul.i32 d7, d8, d1[1] :: Qd 0xa6363436 0xa43e3c3e Qm (i32)0x80000001 Qn (i32)0x80000002 ---- VMLA (by scalar) ---- vmla.i32 d0, d1, d4[0] :: Qd 0x55556095 0x55556095 Qm (i32)0x00000018 Qn (i32)0x00000078 +vmla.i32 d0, d1, d4[0] :: Qd 0x4a0991fd 0xd3eb73dd Qm (i32)0x00000018 Qn (i32)0x00000078 vmla.i32 d31, d8, d7[1] :: Qd 0x555513b5 0x555513b5 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmla.i32 d31, d8, d7[1] :: Qd 0x60a118ad 0xd6bf36cd Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmla.i16 d30, d9, d7[3] :: Qd 0x55555555 0x55555555 Qm (i32)0x00000140 Qn (i32)0x00000120 vmla.i16 d30, d9, d7[3] :: Qd 0x55555555 0x55555555 Qm (i32)0x00000140 Qn (i32)0x00000120 vmla.i16 d4, d5, d6[2] :: Qd 0x5555f557 0x5555f557 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmla.i16 d4, d5, d6[2] :: Qd 0xdb8be98b 0x59937193 Qm (i32)0x00004001 Qn (i32)0x00002002 vmla.i32 d4, d8, d15[1] :: Qd 0xd5555557 0xd5555557 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmla.i32 d4, d8, d15[1] :: Qd 0xfb8b898b 0xf9939193 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.i16 d4, d5, d6[0] :: Qd 0x3553ddbb 0x3553ddbb Qm (i32)0xffff9433 Qn (i32)0x00002002 +vmla.i16 d4, d5, d6[0] :: Qd 0xdb8be98b 0x59937193 Qm (i32)0xffff9433 Qn (i32)0x00002002 vmla.i32 d7, d8, d1[1] :: Qd 0x55555555 0x55555555 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmla.i32 d7, d8, d1[1] :: Qd 0x73de8e99 0x983ebec9 Qm (i32)0x80000000 Qn (i16)0x0000000c vmla.i16 d4, d5, d6[0] :: Qd 0x75551751 0x75551751 Qm (i32)0x100000fe Qn (i32)0x00002002 +vmla.i16 d4, d5, d6[0] :: Qd 0xdb8be98b 0x59937193 Qm (i32)0x100000fe Qn (i32)0x00002002 vmla.i32 d7, d8, d1[1] :: Qd 0xd5555557 0xd5555557 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmla.i32 d7, d8, d1[1] :: Qd 0xfb8b898b 0xf9939193 Qm (i32)0x80000001 Qn (i32)0x80000002 ---- VMLS (by scalar) ---- vmls.i32 d0, d1, d4[0] :: Qd 0x5555557d 0x5555557d Qm (i32)0x00000018 Qn (i32)0x00000078 +vmls.i32 d0, d1, d4[0] :: Qd 0x5555557d 0x5555557d Qm (i32)0x00000018 Qn (i32)0x00000078 vmls.i32 d31, d8, d7[1] :: Qd 0x555596f5 0x555596f5 Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmls.i32 d31, d8, d7[1] :: Qd 0x4a0991fd 0xd3eb73dd Qm (i32)0x0000008c Qn (i32)0xffffff88 +vmls.i16 d30, d9, d7[3] :: Qd 0x55555555 0x55555555 Qm (i32)0x00000140 Qn (i32)0x00000120 vmls.i16 d30, d9, d7[3] :: Qd 0x55555555 0x55555555 Qm (i32)0x00000140 Qn (i32)0x00000120 vmls.i16 d4, d5, d6[2] :: Qd 0x5555b553 0x5555b553 Qm (i32)0x00004001 Qn (i32)0x00002002 +vmls.i16 d4, d5, d6[2] :: Qd 0xcf1fc11f 0x51173917 Qm (i32)0x00004001 Qn (i32)0x00002002 vmls.i32 d4, d8, d15[1] :: Qd 0xd5555553 0xd5555553 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmls.i32 d4, d8, d15[1] :: Qd 0xaf1f211f 0xb1171917 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.i16 d4, d5, d6[0] :: Qd 0x7557ccef 0x7557ccef Qm (i32)0xffff9433 Qn (i32)0x00002002 +vmls.i16 d4, d5, d6[0] :: Qd 0xcf1fc11f 0x51173917 Qm (i32)0xffff9433 Qn (i32)0x00002002 vmls.i32 d7, d8, d1[1] :: Qd 0x55555555 0x55555555 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmls.i32 d7, d8, d1[1] :: Qd 0x36cc1c11 0x126bebe1 Qm (i32)0x80000000 Qn (i16)0x0000000c vmls.i16 d4, d5, d6[0] :: Qd 0x35559359 0x35559359 Qm (i32)0x100000fe Qn (i32)0x00002002 +vmls.i16 d4, d5, d6[0] :: Qd 0xcf1fc11f 0x51173917 Qm (i32)0x100000fe Qn (i32)0x00002002 vmls.i32 d7, d8, d1[1] :: Qd 0xd5555553 0xd5555553 Qm (i32)0x80000001 Qn (i32)0x80000002 +vmls.i32 d7, d8, d1[1] :: Qd 0xaf1f211f 0xb1171917 Qm (i32)0x80000001 Qn (i32)0x80000002 ---- VRSHR ---- vrshr.s8 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vrshr.s8 d0, d1, #0 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xffffffff vrshr.s8 d0, d1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff +vrshr.s8 d0, d1, #1 :: Qd 0x0b0f0d0f 0x0a0e100e Qm (i32)0xffffffff vrshr.s16 d3, d4, #2 :: Qd 0x0000ffe1 0x0000ffe1 Qm (i32)0xffffff84 +vrshr.s16 d3, d4, #2 :: Qd 0x05470647 0x050707c7 Qm (i32)0xffffff84 +vrshr.s32 d2, d5, #31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.s32 d2, d5, #31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.s8 d6, d7, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000ffff +vrshr.s8 d6, d7, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000ffff vrshr.s16 d8, d9, #12 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffff6 +vrshr.s16 d8, d9, #12 :: Qd 0x00010002 0x00010002 Qm (i32)0xfffffff6 vrshr.s32 d10, d11, #5 :: Qd 0x00000140 0x00000140 Qm (i32)0x000027fa +vrshr.s32 d10, d11, #5 :: Qd 0x00a8e8c9 0x00a0e0f9 Qm (i32)0x000027fa vrshr.u8 d12, d13, #1 :: Qd 0x80808080 0x80808080 Qm (i32)0xffffffff +vrshr.u8 d12, d13, #1 :: Qd 0x0b0f0d0f 0x0a0e100e Qm (i32)0xffffffff vrshr.u16 d14, d15, #11 :: Qd 0x00200020 0x00200020 Qm (i32)0xffffffff +vrshr.u16 d14, d15, #11 :: Qd 0x00030003 0x00030004 Qm (i32)0xffffffff vrshr.u32 d10, d11, #9 :: Qd 0x00000002 0x00000002 Qm (i32)0x000003e8 +vrshr.u32 d10, d11, #9 :: Qd 0x000a8e8d 0x000a0e10 Qm (i32)0x000003e8 vrshr.u8 d7, d13, #7 :: Qd 0x02020202 0x02020202 Qm (i32)0xffffffff +vrshr.u8 d7, d13, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff vrshr.u16 d8, d1, #5 :: Qd 0x0000055e 0x0000055e Qm (i32)0x0000abcf +vrshr.u16 d8, d1, #5 :: Qd 0x00a900c9 0x00a100f9 Qm (i32)0x0000abcf vrshr.u32 d12, d3, #15 :: Qd 0x00020000 0x00020000 Qm (i32)0xfffffe50 +vrshr.u32 d12, d3, #15 :: Qd 0x00002a3a 0x00002838 Qm (i32)0xfffffe50 vrshr.u64 d0, d1, #42 :: Qd 0x00000000 0x00400000 Qm (i32)0xffffffff +vrshr.u64 d0, d1, #42 :: Qd 0x00000000 0x00054746 Qm (i32)0xffffffff vrshr.s64 d6, d7, #12 :: Qd 0x00000000 0xfac00001 Qm (i32)0x00000fac +vrshr.s64 d6, d7, #12 :: Qd 0x000151d1 0x91d141c2 Qm (i32)0x00000fac vrshr.u64 d8, d4, #9 :: Qd 0x0000001a 0x7c00001a Qm (i32)0x000034f8 +vrshr.u64 d8, d4, #9 :: Qd 0x000a8e8c 0x8e8a0e10 Qm (i32)0x000034f8 vrshr.s64 d9, d12, #11 :: Qd 0x00000030 0x32c00030 Qm (i32)0x00018196 +vrshr.s64 d9, d12, #11 :: Qd 0x0002a3a3 0x23a28384 Qm (i32)0x00018196 ---- VRSRA ---- vrsra.s8 d0, d1, #1 :: Qd 0x55555555 0x55555555 Qm (i32)0xffffffff +vrsra.s8 d0, d1, #1 :: Qd 0x1e2a272a 0x1c2d2e2d Qm (i32)0xffffffff vrsra.s16 d3, d4, #2 :: Qd 0x55555536 0x55555536 Qm (i32)0xffffff84 +vrsra.s16 d3, d4, #2 :: Qd 0x18622062 0x172625e6 Qm (i32)0xffffff84 vrsra.s32 d2, d5, #31 :: Qd 0x55555555 0x55555555 Qm (i32)0xffffffff +vrsra.s32 d2, d5, #31 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vrsra.s8 d6, d7, #7 :: Qd 0x55555555 0x55555555 Qm (i32)0x0000ffff +vrsra.s8 d6, d7, #7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000ffff vrsra.s16 d8, d9, #12 :: Qd 0x55555555 0x55555555 Qm (i32)0xfffffff6 +vrsra.s16 d8, d9, #12 :: Qd 0x131c1a1d 0x12201e21 Qm (i32)0xfffffff6 vrsra.s32 d10, d11, #5 :: Qd 0x55555695 0x55555695 Qm (i32)0x000027fa +vrsra.s32 d10, d11, #5 :: Qd 0x13c402e4 0x12bfff18 Qm (i32)0x000027fa vrsra.u8 d12, d13, #1 :: Qd 0xd5d5d5d5 0xd5d5d5d5 Qm (i32)0xffffffff +vrsra.u8 d12, d13, #1 :: Qd 0x1e2a272a 0x1c2d2e2d Qm (i32)0xffffffff vrsra.u16 d14, d15, #11 :: Qd 0x55755575 0x55755575 Qm (i32)0xffffffff +vrsra.u16 d14, d15, #11 :: Qd 0x131e1a1e 0x12221e23 Qm (i32)0xffffffff vrsra.u32 d10, d11, #9 :: Qd 0x55555557 0x55555557 Qm (i32)0x000003e8 +vrsra.u32 d10, d11, #9 :: Qd 0x1325a8a8 0x12292c2f Qm (i32)0x000003e8 vrsra.u8 d7, d13, #7 :: Qd 0x57575757 0x57575757 Qm (i32)0xffffffff +vrsra.u8 d7, d13, #7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vrsra.u16 d8, d1, #5 :: Qd 0x55555ab3 0x55555ab3 Qm (i32)0x0000abcf +vrsra.u16 d8, d1, #5 :: Qd 0x13c41ae4 0x12c01f18 Qm (i32)0x0000abcf vrsra.u32 d12, d3, #15 :: Qd 0x55575555 0x55575555 Qm (i32)0xfffffe50 +vrsra.u32 d12, d3, #15 :: Qd 0x131b4455 0x121f4657 Qm (i32)0xfffffe50 vrsra.u64 d0, d1, #42 :: Qd 0x55555555 0x55955555 Qm (i32)0xffffffff +vrsra.u64 d0, d1, #42 :: Qd 0x131b1a1b 0x12246565 Qm (i32)0xffffffff vrsra.s64 d6, d7, #12 :: Qd 0x55555556 0x50155556 Qm (i32)0x00000fac +vrsra.s64 d6, d7, #12 :: Qd 0x131c6bec 0xa3f05fe1 Qm (i32)0x00000fac vrsra.u64 d8, d4, #9 :: Qd 0x5555556f 0xd155556f Qm (i32)0x000034f8 +vrsra.u64 d8, d4, #9 :: Qd 0x1325a8a7 0xa0a92c2f Qm (i32)0x000034f8 vrsra.s64 d9, d12, #11 :: Qd 0x55555585 0x88155585 Qm (i32)0x00018196 +vrsra.s64 d9, d12, #11 :: Qd 0x131dbdbe 0x35c1a1a3 Qm (i32)0x00018196 ---- VSHR ---- vshr.s8 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s8 d0, d1, #0 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xffffffff vshr.s8 d0, d1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s8 d0, d1, #1 :: Qd 0x0a0e0c0e 0x0a0e0f0e Qm (i32)0xffffffff vshr.s16 d3, d4, #2 :: Qd 0xffffffe1 0xffffffe1 Qm (i32)0xffffff84 +vshr.s16 d3, d4, #2 :: Qd 0x05470647 0x050707c7 Qm (i32)0xffffff84 vshr.s32 d2, d5, #31 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshr.s32 d2, d5, #31 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff vshr.s8 d6, d7, #7 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x0000ffff +vshr.s8 d6, d7, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000ffff vshr.s16 d8, d9, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff6 +vshr.s16 d8, d9, #12 :: Qd 0x00010001 0x00010001 Qm (i32)0xfffffff6 vshr.s32 d10, d11, #5 :: Qd 0x0000013f 0x0000013f Qm (i32)0x000027fa +vshr.s32 d10, d11, #5 :: Qd 0x00a8e8c8 0x00a0e0f8 Qm (i32)0x000027fa vshr.u8 d12, d13, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff +vshr.u8 d12, d13, #1 :: Qd 0x0a0e0c0e 0x0a0e0f0e Qm (i32)0xffffffff vshr.u16 d14, d15, #11 :: Qd 0x001f001f 0x001f001f Qm (i32)0xffffffff +vshr.u16 d14, d15, #11 :: Qd 0x00020003 0x00020003 Qm (i32)0xffffffff vshr.u32 d10, d11, #9 :: Qd 0x00000001 0x00000001 Qm (i32)0x000003e8 +vshr.u32 d10, d11, #9 :: Qd 0x000a8e8c 0x000a0e0f Qm (i32)0x000003e8 vshr.u8 d7, d13, #7 :: Qd 0x01010101 0x01010101 Qm (i32)0xffffffff +vshr.u8 d7, d13, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff vshr.u16 d8, d1, #5 :: Qd 0x0000055e 0x0000055e Qm (i32)0x0000abcf +vshr.u16 d8, d1, #5 :: Qd 0x00a800c8 0x00a000f8 Qm (i32)0x0000abcf vshr.u32 d12, d3, #15 :: Qd 0x0001ffff 0x0001ffff Qm (i32)0xfffffe50 +vshr.u32 d12, d3, #15 :: Qd 0x00002a3a 0x00002838 Qm (i32)0xfffffe50 vshr.u64 d0, d1, #42 :: Qd 0x00000000 0x003fffff Qm (i32)0xffffffff +vshr.u64 d0, d1, #42 :: Qd 0x00000000 0x00054746 Qm (i32)0xffffffff vshr.s64 d6, d7, #12 :: Qd 0x00000000 0xfac00000 Qm (i32)0x00000fac +vshr.s64 d6, d7, #12 :: Qd 0x000151d1 0x91d141c1 Qm (i32)0x00000fac vshr.u64 d8, d4, #9 :: Qd 0x0000001a 0x7c00001a Qm (i32)0x000034f8 +vshr.u64 d8, d4, #9 :: Qd 0x000a8e8c 0x8e8a0e0f Qm (i32)0x000034f8 vshr.s64 d9, d12, #11 :: Qd 0x00000030 0x32c00030 Qm (i32)0x00018196 +vshr.s64 d9, d12, #11 :: Qd 0x0002a3a3 0x23a28383 Qm (i32)0x00018196 ---- VSRA ---- vsra.s8 d0, d1, #1 :: Qd 0x54545454 0x54545454 Qm (i32)0xffffffff +vsra.s8 d0, d1, #1 :: Qd 0x1d292629 0x1c2d2d2d Qm (i32)0xffffffff vsra.s16 d3, d4, #2 :: Qd 0x55545536 0x55545536 Qm (i32)0xffffff84 +vsra.s16 d3, d4, #2 :: Qd 0x18622062 0x172625e6 Qm (i32)0xffffff84 vsra.s32 d2, d5, #31 :: Qd 0x55555554 0x55555554 Qm (i32)0xffffffff +vsra.s32 d2, d5, #31 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vsra.s8 d6, d7, #7 :: Qd 0x55555454 0x55555454 Qm (i32)0x0000ffff +vsra.s8 d6, d7, #7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x0000ffff vsra.s16 d8, d9, #12 :: Qd 0x55545554 0x55545554 Qm (i32)0xfffffff6 +vsra.s16 d8, d9, #12 :: Qd 0x131c1a1c 0x12201e20 Qm (i32)0xfffffff6 vsra.s32 d10, d11, #5 :: Qd 0x55555694 0x55555694 Qm (i32)0x000027fa +vsra.s32 d10, d11, #5 :: Qd 0x13c402e3 0x12bfff17 Qm (i32)0x000027fa vsra.u8 d12, d13, #1 :: Qd 0xd4d4d4d4 0xd4d4d4d4 Qm (i32)0xffffffff +vsra.u8 d12, d13, #1 :: Qd 0x1d292629 0x1c2d2d2d Qm (i32)0xffffffff vsra.u16 d14, d15, #11 :: Qd 0x55745574 0x55745574 Qm (i32)0xffffffff +vsra.u16 d14, d15, #11 :: Qd 0x131d1a1e 0x12211e22 Qm (i32)0xffffffff vsra.u32 d10, d11, #9 :: Qd 0x55555556 0x55555556 Qm (i32)0x000003e8 +vsra.u32 d10, d11, #9 :: Qd 0x1325a8a7 0x12292c2e Qm (i32)0x000003e8 vsra.u8 d7, d13, #7 :: Qd 0x56565656 0x56565656 Qm (i32)0xffffffff +vsra.u8 d7, d13, #7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xffffffff vsra.u16 d8, d1, #5 :: Qd 0x55555ab3 0x55555ab3 Qm (i32)0x0000abcf +vsra.u16 d8, d1, #5 :: Qd 0x13c31ae3 0x12bf1f17 Qm (i32)0x0000abcf vsra.u32 d12, d3, #15 :: Qd 0x55575554 0x55575554 Qm (i32)0xfffffe50 +vsra.u32 d12, d3, #15 :: Qd 0x131b4455 0x121f4657 Qm (i32)0xfffffe50 vsra.u64 d0, d1, #42 :: Qd 0x55555555 0x55955554 Qm (i32)0xffffffff +vsra.u64 d0, d1, #42 :: Qd 0x131b1a1b 0x12246565 Qm (i32)0xffffffff vsra.s64 d6, d7, #12 :: Qd 0x55555556 0x50155555 Qm (i32)0x00000fac +vsra.s64 d6, d7, #12 :: Qd 0x131c6bec 0xa3f05fe0 Qm (i32)0x00000fac vsra.u64 d8, d4, #9 :: Qd 0x5555556f 0xd155556f Qm (i32)0x000034f8 +vsra.u64 d8, d4, #9 :: Qd 0x1325a8a7 0xa0a92c2e Qm (i32)0x000034f8 vsra.s64 d9, d12, #11 :: Qd 0x55555585 0x88155585 Qm (i32)0x00018196 +vsra.s64 d9, d12, #11 :: Qd 0x131dbdbe 0x35c1a1a2 Qm (i32)0x00018196 ---- VSRI ---- vsri.16 d0, d1, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff +vsri.16 d0, d1, #1 :: Qd 0x0a8e0c8e 0x0a0e0f8e Qm (i32)0xffffffff vsri.16 d3, d4, #2 :: Qd 0x7fff7fe1 0x7fff7fe1 Qm (i32)0xffffff84 +vsri.16 d3, d4, #2 :: Qd 0x05470647 0x050707c7 Qm (i32)0xffffff84 vsri.32 d2, d5, #31 :: Qd 0x55555555 0x55555555 Qm (i32)0xffffffff +vsri.32 d2, d5, #31 :: Qd 0x131b1a1a 0x121f1e1e Qm (i32)0xffffffff vsri.8 d6, d7, #7 :: Qd 0x54545555 0x54545555 Qm (i32)0x0000ffff +vsri.8 d6, d7, #7 :: Qd 0x121a1a1a 0x121e1e1e Qm (i32)0x0000ffff vsri.16 d8, d9, #12 :: Qd 0x555f555f 0x555f555f Qm (i32)0xfffffff6 +vsri.16 d8, d9, #12 :: Qd 0x13111a11 0x12111e11 Qm (i32)0xfffffff6 vsri.32 d10, d11, #5 :: Qd 0x5000013f 0x5000013f Qm (i32)0x000027fa +vsri.32 d10, d11, #5 :: Qd 0x10a8e8c8 0x10a0e0f8 Qm (i32)0x000027fa vsri.8 d12, d13, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff +vsri.8 d12, d13, #1 :: Qd 0x0a0e0c0e 0x0a0e0f0e Qm (i32)0xffffffff vsri.16 d14, d15, #11 :: Qd 0x555f555f 0x555f555f Qm (i32)0xffffffff +vsri.16 d14, d15, #11 :: Qd 0x13021a03 0x12021e03 Qm (i32)0xffffffff vsri.32 d10, d11, #9 :: Qd 0x55000001 0x55000001 Qm (i32)0x000003e8 +vsri.32 d10, d11, #9 :: Qd 0x130a8e8c 0x120a0e0f Qm (i32)0x000003e8 vsri.8 d7, d13, #7 :: Qd 0x55555555 0x55555555 Qm (i32)0xffffffff +vsri.8 d7, d13, #7 :: Qd 0x121a1a1a 0x121e1e1e Qm (i32)0xffffffff vsri.16 d8, d1, #5 :: Qd 0x5000555e 0x5000555e Qm (i32)0x0000abcf +vsri.16 d8, d1, #5 :: Qd 0x10a818c8 0x10a018f8 Qm (i32)0x0000abcf vsri.32 d12, d3, #15 :: Qd 0x5555ffff 0x5555ffff Qm (i32)0xfffffe50 +vsri.32 d12, d3, #15 :: Qd 0x131a2a3a 0x121e2838 Qm (i32)0xfffffe50 vsri.64 d0, d1, #42 :: Qd 0x55555555 0x557fffff Qm (i32)0xffffffff +vsri.64 d0, d1, #42 :: Qd 0x131b1a1b 0x12054746 Qm (i32)0xffffffff vsri.64 d6, d7, #12 :: Qd 0x55500000 0xfac00000 Qm (i32)0x00000fac +vsri.64 d6, d7, #12 :: Qd 0x131151d1 0x91d141c1 Qm (i32)0x00000fac vsri.64 d8, d4, #9 :: Qd 0x5500001a 0x7c00001a Qm (i32)0x000034f8 +vsri.64 d8, d4, #9 :: Qd 0x130a8e8c 0x8e8a0e0f Qm (i32)0x000034f8 vsri.64 d9, d12, #11 :: Qd 0x55400030 0x32c00030 Qm (i32)0x00018196 +vsri.64 d9, d12, #11 :: Qd 0x1302a3a3 0x23a28383 Qm (i32)0x00018196 ---- VMOV (ARM core register to scalar) ---- vmov.32 d0[0], r5 :: Qd 0x55555555 0x0000000d Qm 0x0000000d vmov.32 d1[1], r3 :: Qd 0x0000000c 0x55555555 Qm 0x0000000c @@ -1026,2108 +1965,4424 @@ vmov.s8 r2, d4[5] :: Rd 0xffffff82 Qm (i8)0x00000082 vmov.s8 r2, d4[6] :: Rd 0xffffff81 Qm (i8)0x00000081 vmov.s8 r2, d4[7] :: Rd 0xffffff83 Qm (i8)0x00000083 ---- VLD1 (multiple single elements) ---- -vld1.8 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.16 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.32 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.64 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.8 {d9} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.16 {d17} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.32 {d31} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.64 {d14} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b -vld1.8 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d -vld1.16 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d -vld1.32 {d5-d6} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d -vld1.64 {d30-d31} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d -vld1.8 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b -vld1.16 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b -vld1.32 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b -vld1.64 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b -vld1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vld1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vld1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vld1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a +vld1.8 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d9} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d17} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d31} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d14} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.16 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.32 {d5-d6} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.64 {d30-d31} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.8 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +---- VLD1 (single element to one lane) ---- +vld1.32 {d0[0]} :: Result 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 delta 0 +vld1.32 {d0[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f delta 0 +vld1.16 {d1[0]} :: Result 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 delta 0 +vld1.16 {d1[1]} :: Result 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 delta 0 +vld1.16 {d1[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f delta 0 +vld1.16 {d1[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 delta 0 +vld1.8 {d0[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 delta 0 +vld1.8 {d1[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 delta 0 +vld1.8 {d0[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 delta 0 +vld1.8 {d0[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f delta 0 +vld1.8 {d20[3]} :: Result 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 delta 0 +vld1.8 {d0[2]} :: Result 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 delta 0 +vld1.8 {d17[1]} :: Result 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 delta 0 +vld1.8 {d30[0]} :: Result 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 0 +---- VLD1 (single element to all lanes) ---- +vld1.8 {d0[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d0[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d0[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 +vld1.8 {d9[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d17[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 +vld1.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d5[],d6[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 +---- VLD2 (multiple 2-elements) ---- +vld2.8 {d30-d31} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 0 +vld2.16 {d0-d1} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 0 +vld2.32 {d0-d1} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 0 +vld2.8 {d10,d12} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 0 +vld2.16 {d20,d22} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 0 +vld2.32 {d0,d2} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 0 +vld2.8 {d0-d3} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x2c2b2f2f 0x2d2a2a2b 0x131a121e 0x1519141f 0x242b232e 0x262d252e delta 0 +vld2.16 {d20-d23} :: Result 0x1a1b1e1f 0x191d1f1c 0x2b2b2e2f 0x2d2a2e2b 0x131b121f 0x151d141c 0x242c232f 0x262d252a delta 0 +vld2.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 0 +---- VLD2 (single 2-element structure to one lane) ---- +vld2.32 {d0[0],d1[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld2.32 {d0[1],d1[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 0 +vld2.32 {d0[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld2.32 {d0[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 0 +vld2.16 {d1[0],d2[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 0 +vld2.16 {d1[1],d2[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld2.16 {d1[2],d2[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 0 +vld2.16 {d1[3],d2[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 0 +vld2.16 {d1[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 0 +vld2.16 {d1[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld2.16 {d1[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 0 +vld2.16 {d1[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 0 +vld2.8 {d0[7],d1[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 0 +vld2.8 {d1[6],d2[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 0 +vld2.8 {d0[5],d1[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 0 +vld2.8 {d0[4],d1[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 0 +vld2.8 {d20[3],d21[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 0 +vld2.8 {d0[2],d1[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 0 +vld2.8 {d17[1],d18[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 0 +vld2.8 {d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 delta 0 +---- VLD2 (2-elements to all lanes) ---- +vld2.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d0[],d1[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 +vld2.8 {d9[],d11[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d17[],d18[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 +vld2.8 {d0[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d0[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d5[],d7[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 +---- VLD3 (multiple 3-elements) ---- +vld3.8 {d20-d22} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 0 +vld3.16 {d0-d2} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 0 +vld3.32 {d0-d2} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 0 +vld3.8 {d0,d2,d4} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 0 +vld3.16 {d20,d22,d24} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 0 +vld3.32 {d0,d2,d4} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 0 +---- VLD3 (single 3-element structure to one lane) ---- +vld3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld3.32 {d0[1],d1[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 0 +vld3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld3.32 {d0[1],d2[1],d4[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 0 +vld3.16 {d1[0],d2[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f 0x55555555 delta 0 +vld3.16 {d1[1],d2[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld3.16 {d1[2],d2[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f delta 0 +vld3.16 {d1[3],d2[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 delta 0 +vld3.16 {d1[0],d3[0],d5[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 delta 0 +vld3.16 {d1[1],d3[1],d5[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 delta 0 +vld3.16 {d1[2],d3[2],d5[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b delta 0 +vld3.16 {d1[3],d3[3],d5[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 delta 0 +vld3.8 {d0[7],d1[7],d2[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 0 +vld3.8 {d1[6],d2[6],d3[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 0 +vld3.8 {d0[5],d1[5],d2[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 0 +vld3.8 {d0[4],d1[4],d2[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 0 +vld3.8 {d20[3],d21[3],d22[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 0 +vld3.8 {d0[2],d1[2],d2[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 0 +vld3.8 {d17[1],d18[1],d19[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 0 +vld3.8 {d29[0],d30[0],d31[0]} :: Result 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 0 +---- VLD3 (3-elements to all lanes) ---- +vld3.8 {d0[],d1[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d0[],d1[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d0[],d1[],d2[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 0 +vld3.8 {d9[],d11[],d13[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d17[],d18[],d19[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c delta 0 +vld3.8 {d0[],d2[],d4[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d0[],d2[],d4[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d5[],d7[],d9[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 0 +---- VLD4 (multiple 3-elements) ---- +vld4.8 {d0-d3} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 0 +vld4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vld4.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 0 +vld4.8 {d0,d2,d4,d6} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 0 +vld4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vld4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 0 +---- VLD4 (single 4-element structure to one lane) ---- +vld4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 0 +vld4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x55555555 delta 0 +vld4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 0 +vld4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d delta 0 +vld4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 0 +vld4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 0 +vld4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 0 +vld4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 0 +vld4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 0 +vld4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 0 +vld4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 0 +vld4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 0 +vld4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 delta 0 +vld4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 delta 0 +vld4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 delta 0 +vld4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 delta 0 +vld4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 0x55555555 delta 0 +vld4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 0x55555555 delta 0 +vld4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 0x55555555 delta 0 +vld4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 0x55555555 delta 0 +---- VLD4 (4-elements to all lanes) ---- +vld4.8 {d0[],d1[],d2[],d3[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d0[],d1[],d2[],d3[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d0[],d1[],d2[],d3[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 +vld4.8 {d9[],d11[],d13[],d15[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d17[],d18[],d19[],d20[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d28[],d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 +vld4.8 {d0[],d2[],d4[],d6[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d0[],d2[],d4[],d6[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d5[],d7[],d9[],d11[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 +---- VST1 (multiple single elements) ---- +vst1.8 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.32 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.64 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d9} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d17} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.32 {d31} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.64 {d14} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.32 {d5-d6} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.64 {d30-d31} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 0 +vst1.16 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 0 +vst1.32 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 0 +vst1.64 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 0 +vst1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vst1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vst1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vst1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +---- VST1 (single element from one lane) ---- +vst1.32 {d0[0]} :: Result 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.32 {d0[1]} :: Result 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d1[0]} :: Result 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d1[1]} :: Result 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d1[2]} :: Result 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.16 {d1[3]} :: Result 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0[7]} :: Result 0x55555526 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d1[6]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0[5]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0[4]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d20[3]} :: Result 0x55555525 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d0[2]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d17[1]} :: Result 0x5555552e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst1.8 {d30[0]} :: Result 0x5555552b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +---- VST2 (multiple 2-elements) ---- +vst2.8 {d30-d31} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d0-d1} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.32 {d0-d1} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d10,d12} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d20,d22} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.32 {d0,d2} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d0-d3} :: Result 0x2e1e2f1f 0x23122f1f 0x2b1a2b1b 0x24132c1b 0x2e1f2b1c 0x25142a1c 0x2d192a1d 0x26152d1d delta 0 +vst2.16 {d20-d23} :: Result 0x2e2f1e1f 0x232f121f 0x2b2b1a1b 0x242c131b 0x2e2b1f1c 0x252a141c 0x2d2a191d 0x262d151d delta 0 +vst2.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 0 +---- VST2 (single 2-element structure from one lane) ---- +vst2.32 {d0[0],d1[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.32 {d0[1],d1[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.32 {d0[0],d2[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.32 {d0[1],d2[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[0],d2[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[1],d2[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[2],d2[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[3],d2[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[0],d3[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[1],d3[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[2],d3[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.16 {d1[3],d3[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d0[7],d1[7]} :: Result 0x55552624 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d1[6],d2[6]} :: Result 0x55552d2c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d0[5],d1[5]} :: Result 0x55552d2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d0[4],d1[4]} :: Result 0x55552a2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d20[3],d21[3]} :: Result 0x55552523 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d0[2],d1[2]} :: Result 0x55552a2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d17[1],d18[1]} :: Result 0x55552e2e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst2.8 {d30[0],d31[0]} :: Result 0x55552b2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +---- VST3 (multiple 3-elements) ---- +vst3.8 {d20-d22} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 0 +vst3.16 {d0-d2} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 0 +vst3.32 {d0-d2} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 0 +vst3.8 {d0,d2,d4} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 0 +vst3.16 {d20,d22,d24} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 0 +vst3.32 {d0,d2,d4} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 0 +---- VST3 (single 3-element structure from one lane) ---- +vst3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.32 {d0[1],d1[1],d2[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.32 {d0[1],d2[1],d4[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[0],d2[0],d3[0]} :: Result 0x2e2b1e1f 0x55552e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[1],d2[1],d3[1]} :: Result 0x252a121f 0x5555232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[2],d2[2],d3[2]} :: Result 0x2d2a1a1b 0x55552b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[3],d2[3],d3[3]} :: Result 0x262d131b 0x5555242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[0],d3[0],d5[0]} :: Result 0x2e2f1e1f 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[1],d3[1],d5[1]} :: Result 0x232f121f 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[2],d3[2],d5[2]} :: Result 0x2b2b1a1b 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.16 {d1[3],d3[3],d5[3]} :: Result 0x242c131b 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d0[7],d1[7],d2[7]} :: Result 0x55242613 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d1[6],d2[6],d3[6]} :: Result 0x552c2d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d0[5],d1[5],d2[5]} :: Result 0x552b2d1a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d0[4],d1[4],d2[4]} :: Result 0x552b2a1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d20[3],d21[3],d22[3]} :: Result 0x55232512 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d0[2],d1[2],d2[2]} :: Result 0x552f2a1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d17[1],d18[1],d19[1]} :: Result 0x552e2e1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst3.8 {d29[0],d30[0],d31[0]} :: Result 0x552b1f2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +---- VST4 (multiple 4-elements) ---- +vst4.8 {d0-d3} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 0 +vst4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vst4.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 0 +vst4.8 {d0,d2,d4,d6} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 0 +vst4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vst4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 0 +---- VST4 (single 4-element structure from one lane) ---- +vst4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x26241513 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x2d2c1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x2d2b191a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x2a2b1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x25231412 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x2a2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x2e2e1f1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +vst4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x2b2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 0 +---- VLD1 (multiple single elements) ---- +vld1.8 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.16 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.32 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.64 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.8 {d9} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.16 {d17} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.32 {d31} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.64 {d14} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 8 +vld1.8 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 16 +vld1.16 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 16 +vld1.32 {d5-d6} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 16 +vld1.64 {d30-d31} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 16 +vld1.8 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 24 +vld1.16 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 24 +vld1.32 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 24 +vld1.64 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 24 +vld1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vld1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vld1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vld1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +---- VLD1 (single element to one lane) ---- +vld1.32 {d0[0]} :: Result 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 delta 4 +vld1.32 {d0[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f delta 4 +vld1.16 {d1[0]} :: Result 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 delta 2 +vld1.16 {d1[1]} :: Result 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 delta 2 +vld1.16 {d1[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f delta 2 +vld1.16 {d1[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 delta 2 +vld1.8 {d0[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 delta 1 +vld1.8 {d1[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 delta 1 +vld1.8 {d0[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 delta 1 +vld1.8 {d0[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f delta 1 +vld1.8 {d20[3]} :: Result 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 delta 1 +vld1.8 {d0[2]} :: Result 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 delta 1 +vld1.8 {d17[1]} :: Result 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 delta 1 +vld1.8 {d30[0]} :: Result 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 1 +---- VLD1 (single element to all lanes) ---- +vld1.8 {d0[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 1 +vld1.16 {d0[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 2 +vld1.32 {d0[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 4 +vld1.8 {d9[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 1 +vld1.16 {d17[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 2 +vld1.32 {d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 4 +vld1.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 1 +vld1.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 2 +vld1.32 {d5[],d6[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 4 +---- VLD2 (multiple 2-elements) ---- +vld2.8 {d30-d31} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 16 +vld2.16 {d0-d1} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 16 +vld2.32 {d0-d1} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 16 +vld2.8 {d10,d12} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 16 +vld2.16 {d20,d22} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 16 +vld2.32 {d0,d2} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 16 +vld2.8 {d0-d3} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x2c2b2f2f 0x2d2a2a2b 0x131a121e 0x1519141f 0x242b232e 0x262d252e delta 32 +vld2.16 {d20-d23} :: Result 0x1a1b1e1f 0x191d1f1c 0x2b2b2e2f 0x2d2a2e2b 0x131b121f 0x151d141c 0x242c232f 0x262d252a delta 32 +vld2.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 32 +---- VLD2 (single 2-element structure to one lane) ---- +vld2.32 {d0[0],d1[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 8 +vld2.32 {d0[1],d1[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 8 +vld2.32 {d0[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 8 +vld2.32 {d0[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 8 +vld2.16 {d1[0],d2[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 4 +vld2.16 {d1[1],d2[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 4 +vld2.16 {d1[2],d2[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 4 +vld2.16 {d1[3],d2[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 4 +vld2.16 {d1[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 4 +vld2.16 {d1[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 4 +vld2.16 {d1[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 4 +vld2.16 {d1[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 4 +vld2.8 {d0[7],d1[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 2 +vld2.8 {d1[6],d2[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 2 +vld2.8 {d0[5],d1[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 2 +vld2.8 {d0[4],d1[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 2 +vld2.8 {d20[3],d21[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 2 +vld2.8 {d0[2],d1[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 2 +vld2.8 {d17[1],d18[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 2 +vld2.8 {d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 delta 2 +---- VLD2 (2-elements to all lanes) ---- +vld2.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 2 +vld2.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 4 +vld2.32 {d0[],d1[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 8 +vld2.8 {d9[],d11[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 2 +vld2.16 {d17[],d18[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 4 +vld2.32 {d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 8 +vld2.8 {d0[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 2 +vld2.16 {d0[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 4 +vld2.32 {d5[],d7[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 8 +---- VLD3 (multiple 3-elements) ---- +vld3.8 {d20-d22} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 24 +vld3.16 {d0-d2} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 24 +vld3.32 {d0-d2} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 24 +vld3.8 {d0,d2,d4} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 24 +vld3.16 {d20,d22,d24} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 24 +vld3.32 {d0,d2,d4} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 24 +---- VLD3 (single 3-element structure to one lane) ---- +vld3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 12 +vld3.32 {d0[1],d1[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 12 +vld3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 12 +vld3.32 {d0[1],d2[1],d4[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 12 +vld3.16 {d1[0],d2[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f 0x55555555 delta 6 +vld3.16 {d1[1],d2[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 0x55555555 delta 6 +vld3.16 {d1[2],d2[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f delta 6 +vld3.16 {d1[3],d2[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 delta 6 +vld3.16 {d1[0],d3[0],d5[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 delta 6 +vld3.16 {d1[1],d3[1],d5[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 delta 6 +vld3.16 {d1[2],d3[2],d5[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b delta 6 +vld3.16 {d1[3],d3[3],d5[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 delta 6 +vld3.8 {d0[7],d1[7],d2[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 3 +vld3.8 {d1[6],d2[6],d3[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 3 +vld3.8 {d0[5],d1[5],d2[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 3 +vld3.8 {d0[4],d1[4],d2[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 3 +vld3.8 {d20[3],d21[3],d22[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 3 +vld3.8 {d0[2],d1[2],d2[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 3 +vld3.8 {d17[1],d18[1],d19[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 3 +vld3.8 {d29[0],d30[0],d31[0]} :: Result 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 3 +---- VLD3 (3-elements to all lanes) ---- +vld3.8 {d0[],d1[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 3 +vld3.16 {d0[],d1[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 6 +vld3.32 {d0[],d1[],d2[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 12 +vld3.8 {d9[],d11[],d13[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 3 +vld3.16 {d17[],d18[],d19[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 6 +vld3.32 {d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c delta 12 +vld3.8 {d0[],d2[],d4[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 3 +vld3.16 {d0[],d2[],d4[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 6 +vld3.32 {d5[],d7[],d9[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 12 +---- VLD4 (multiple 3-elements) ---- +vld4.8 {d0-d3} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 32 +vld4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 32 +vld4.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 32 +vld4.8 {d0,d2,d4,d6} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 32 +vld4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 32 +vld4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 32 +---- VLD4 (single 4-element structure to one lane) ---- +vld4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 16 +vld4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x55555555 delta 16 +vld4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 16 +vld4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d delta 16 +vld4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 8 +vld4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 8 +vld4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 8 +vld4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 8 +vld4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 8 +vld4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 8 +vld4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 8 +vld4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 8 +vld4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 delta 4 +vld4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 delta 4 +vld4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 delta 4 +vld4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 delta 4 +vld4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 0x55555555 delta 4 +vld4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 0x55555555 delta 4 +vld4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 0x55555555 delta 4 +vld4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 0x55555555 delta 4 +---- VLD4 (4-elements to all lanes) ---- +vld4.8 {d0[],d1[],d2[],d3[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 4 +vld4.16 {d0[],d1[],d2[],d3[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 8 +vld4.32 {d0[],d1[],d2[],d3[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 16 +vld4.8 {d9[],d11[],d13[],d15[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 4 +vld4.16 {d17[],d18[],d19[],d20[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 8 +vld4.32 {d28[],d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 16 +vld4.8 {d0[],d2[],d4[],d6[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 4 +vld4.16 {d0[],d2[],d4[],d6[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 8 +vld4.32 {d5[],d7[],d9[],d11[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 16 +---- VST1 (multiple single elements) ---- +vst1.8 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.16 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.32 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.64 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.8 {d9} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.16 {d17} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.32 {d31} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.64 {d14} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst1.8 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst1.16 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst1.32 {d5-d6} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst1.64 {d30-d31} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst1.8 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 24 +vst1.16 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 24 +vst1.32 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 24 +vst1.64 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 24 +vst1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vst1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vst1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +vst1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 32 +---- VST1 (single element from one lane) ---- +vst1.32 {d0[0]} :: Result 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst1.32 {d0[1]} :: Result 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst1.16 {d1[0]} :: Result 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst1.16 {d1[1]} :: Result 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst1.16 {d1[2]} :: Result 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst1.16 {d1[3]} :: Result 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst1.8 {d0[7]} :: Result 0x55555526 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d1[6]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d0[5]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d0[4]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d20[3]} :: Result 0x55555525 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d0[2]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d17[1]} :: Result 0x5555552e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +vst1.8 {d30[0]} :: Result 0x5555552b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1 +---- VST2 (multiple 2-elements) ---- +vst2.8 {d30-d31} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.16 {d0-d1} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.32 {d0-d1} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.8 {d10,d12} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.16 {d20,d22} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.32 {d0,d2} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst2.8 {d0-d3} :: Result 0x2e1e2f1f 0x23122f1f 0x2b1a2b1b 0x24132c1b 0x2e1f2b1c 0x25142a1c 0x2d192a1d 0x26152d1d delta 32 +vst2.16 {d20-d23} :: Result 0x2e2f1e1f 0x232f121f 0x2b2b1a1b 0x242c131b 0x2e2b1f1c 0x252a141c 0x2d2a191d 0x262d151d delta 32 +vst2.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 32 +---- VST2 (single 2-element structure from one lane) ---- +vst2.32 {d0[0],d1[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst2.32 {d0[1],d1[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst2.32 {d0[0],d2[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst2.32 {d0[1],d2[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst2.16 {d1[0],d2[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[1],d2[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[2],d2[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[3],d2[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[0],d3[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[1],d3[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[2],d3[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.16 {d1[3],d3[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst2.8 {d0[7],d1[7]} :: Result 0x55552624 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d1[6],d2[6]} :: Result 0x55552d2c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d0[5],d1[5]} :: Result 0x55552d2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d0[4],d1[4]} :: Result 0x55552a2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d20[3],d21[3]} :: Result 0x55552523 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d0[2],d1[2]} :: Result 0x55552a2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d17[1],d18[1]} :: Result 0x55552e2e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +vst2.8 {d30[0],d31[0]} :: Result 0x55552b2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 2 +---- VST3 (multiple 3-elements) ---- +vst3.8 {d20-d22} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 24 +vst3.16 {d0-d2} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 24 +vst3.32 {d0-d2} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 24 +vst3.8 {d0,d2,d4} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 24 +vst3.16 {d20,d22,d24} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 24 +vst3.32 {d0,d2,d4} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 24 +---- VST3 (single 3-element structure from one lane) ---- +vst3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 12 +vst3.32 {d0[1],d1[1],d2[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 12 +vst3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 12 +vst3.32 {d0[1],d2[1],d4[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 12 +vst3.16 {d1[0],d2[0],d3[0]} :: Result 0x2e2b1e1f 0x55552e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[1],d2[1],d3[1]} :: Result 0x252a121f 0x5555232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[2],d2[2],d3[2]} :: Result 0x2d2a1a1b 0x55552b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[3],d2[3],d3[3]} :: Result 0x262d131b 0x5555242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[0],d3[0],d5[0]} :: Result 0x2e2f1e1f 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[1],d3[1],d5[1]} :: Result 0x232f121f 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[2],d3[2],d5[2]} :: Result 0x2b2b1a1b 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.16 {d1[3],d3[3],d5[3]} :: Result 0x242c131b 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 6 +vst3.8 {d0[7],d1[7],d2[7]} :: Result 0x55242613 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d1[6],d2[6],d3[6]} :: Result 0x552c2d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d0[5],d1[5],d2[5]} :: Result 0x552b2d1a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d0[4],d1[4],d2[4]} :: Result 0x552b2a1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d20[3],d21[3],d22[3]} :: Result 0x55232512 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d0[2],d1[2],d2[2]} :: Result 0x552f2a1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d17[1],d18[1],d19[1]} :: Result 0x552e2e1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +vst3.8 {d29[0],d30[0],d31[0]} :: Result 0x552b1f2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 3 +---- VST4 (multiple 4-elements) ---- +vst4.8 {d0-d3} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 32 +vst4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 32 +vst4.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 32 +vst4.8 {d0,d2,d4,d6} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 32 +vst4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 32 +vst4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 32 +---- VST4 (single 4-element structure from one lane) ---- +vst4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 16 +vst4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 8 +vst4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x26241513 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x2d2c1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x2d2b191a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x2a2b1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x25231412 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x2a2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x2e2e1f1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +vst4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x2b2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 4 +---- VLD1 (multiple single elements) ---- +vld1.8 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d0} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d9} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d17} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d31} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d14} :: Result 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.16 {d0-d1} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.32 {d5-d6} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.64 {d30-d31} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d delta 0 +vld1.8 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.16 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.32 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.64 {d0-d2} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x121f1e1f 0x131b1a1b delta 0 +vld1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 +vld1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 0 ---- VLD1 (single element to one lane) ---- -vld1.32 {d0[0]} :: Result 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 -vld1.32 {d0[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f -vld1.16 {d1[0]} :: Result 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 -vld1.16 {d1[1]} :: Result 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 -vld1.16 {d1[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f -vld1.16 {d1[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 -vld1.8 {d0[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 -vld1.8 {d1[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 -vld1.8 {d0[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 -vld1.8 {d0[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f -vld1.8 {d20[3]} :: Result 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 -vld1.8 {d0[2]} :: Result 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 -vld1.8 {d17[1]} :: Result 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 -vld1.8 {d30[0]} :: Result 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 +vld1.32 {d0[0]} :: Result 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 delta 0 +vld1.32 {d0[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f 0x55555555 0x121f1e1f delta 0 +vld1.16 {d1[0]} :: Result 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 delta 0 +vld1.16 {d1[1]} :: Result 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 delta 0 +vld1.16 {d1[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f 0x55555555 0x55551e1f delta 0 +vld1.16 {d1[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 0x55555555 0x1e1f5555 delta 0 +vld1.8 {d0[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 delta 0 +vld1.8 {d1[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 delta 0 +vld1.8 {d0[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 delta 0 +vld1.8 {d0[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f delta 0 +vld1.8 {d20[3]} :: Result 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 0x1f555555 0x55555555 delta 0 +vld1.8 {d0[2]} :: Result 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 0x551f5555 0x55555555 delta 0 +vld1.8 {d17[1]} :: Result 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 0x55551f55 0x55555555 delta 0 +vld1.8 {d30[0]} :: Result 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 0 ---- VLD1 (single element to all lanes) ---- -vld1.8 {d0[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f -vld1.16 {d0[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f -vld1.32 {d0[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f -vld1.8 {d9[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f -vld1.16 {d17[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f -vld1.32 {d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f -vld1.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f -vld1.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f -vld1.32 {d5[],d6[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f +vld1.8 {d0[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d0[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d0[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 +vld1.8 {d9[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d17[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 +vld1.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f 0x1f1f1f1f delta 0 +vld1.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f 0x1e1f1e1f delta 0 +vld1.32 {d5[],d6[]} :: Result 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f 0x121f1e1f delta 0 ---- VLD2 (multiple 2-elements) ---- -vld2.8 {d30-d31} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f -vld2.16 {d0-d1} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c -vld2.32 {d0-d1} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d -vld2.8 {d10,d12} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f -vld2.16 {d20,d22} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c -vld2.32 {d0,d2} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d -vld2.8 {d0-d3} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x2c2b2f2f 0x2d2a2a2b 0x131a121e 0x1519141f 0x242b232e 0x262d252e -vld2.16 {d20-d23} :: Result 0x1a1b1e1f 0x191d1f1c 0x2b2b2e2f 0x2d2a2e2b 0x131b121f 0x151d141c 0x242c232f 0x262d252a -vld2.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a +vld2.8 {d30-d31} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 0 +vld2.16 {d0-d1} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 0 +vld2.32 {d0-d1} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 0 +vld2.8 {d10,d12} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f 0x1b1b1f1f 0x1d1d1c1c 0x131a121e 0x1519141f delta 0 +vld2.16 {d20,d22} :: Result 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c 0x1a1b1e1f 0x191d1f1c 0x131b121f 0x151d141c delta 0 +vld2.32 {d0,d2} :: Result 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d 0x121f1e1f 0x141c1f1c 0x131b1a1b 0x151d191d delta 0 +vld2.8 {d0-d3} :: Result 0x1b1b1f1f 0x1d1d1c1c 0x2c2b2f2f 0x2d2a2a2b 0x131a121e 0x1519141f 0x242b232e 0x262d252e delta 0 +vld2.16 {d20-d23} :: Result 0x1a1b1e1f 0x191d1f1c 0x2b2b2e2f 0x2d2a2e2b 0x131b121f 0x151d141c 0x242c232f 0x262d252a delta 0 +vld2.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 0 ---- VLD2 (single 2-element structure to one lane) ---- -vld2.32 {d0[0],d1[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 -vld2.32 {d0[1],d1[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b -vld2.32 {d0[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 -vld2.32 {d0[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b -vld2.16 {d1[0],d2[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 -vld2.16 {d1[1],d2[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 -vld2.16 {d1[2],d2[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f -vld2.16 {d1[3],d2[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 -vld2.16 {d1[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 -vld2.16 {d1[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 -vld2.16 {d1[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f -vld2.16 {d1[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 -vld2.8 {d0[7],d1[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 -vld2.8 {d1[6],d2[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 -vld2.8 {d0[5],d1[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 -vld2.8 {d0[4],d1[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e -vld2.8 {d20[3],d21[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 -vld2.8 {d0[2],d1[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 -vld2.8 {d17[1],d18[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 -vld2.8 {d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 +vld2.32 {d0[0],d1[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld2.32 {d0[1],d1[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 0 +vld2.32 {d0[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld2.32 {d0[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b delta 0 +vld2.16 {d1[0],d2[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 0 +vld2.16 {d1[1],d2[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld2.16 {d1[2],d2[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 0 +vld2.16 {d1[3],d2[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 0 +vld2.16 {d1[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 delta 0 +vld2.16 {d1[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld2.16 {d1[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551e1f 0x55555555 0x5555121f delta 0 +vld2.16 {d1[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1e1f5555 0x55555555 0x121f5555 delta 0 +vld2.8 {d0[7],d1[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 0 +vld2.8 {d1[6],d2[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 0 +vld2.8 {d0[5],d1[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 0 +vld2.8 {d0[4],d1[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 0 +vld2.8 {d20[3],d21[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 0 +vld2.8 {d0[2],d1[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 0 +vld2.8 {d17[1],d18[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 0 +vld2.8 {d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 delta 0 ---- VLD2 (2-elements to all lanes) ---- -vld2.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld2.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f -vld2.32 {d0[],d1[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b -vld2.8 {d9[],d11[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld2.16 {d17[],d18[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f -vld2.32 {d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b -vld2.8 {d0[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld2.16 {d0[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f -vld2.32 {d5[],d7[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b +vld2.8 {d0[],d1[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d0[],d1[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d0[],d1[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 +vld2.8 {d9[],d11[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d17[],d18[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 +vld2.8 {d0[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld2.16 {d0[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f delta 0 +vld2.32 {d5[],d7[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b delta 0 ---- VLD3 (multiple 3-elements) ---- -vld3.8 {d20-d22} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d -vld3.16 {d0-d2} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d -vld3.32 {d0-d2} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d -vld3.8 {d0,d2,d4} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d -vld3.16 {d20,d22,d24} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d -vld3.32 {d0,d2,d4} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d +vld3.8 {d20-d22} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 0 +vld3.16 {d0-d2} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 0 +vld3.32 {d0-d2} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 0 +vld3.8 {d0,d2,d4} :: Result 0x1f1b121f 0x2b2f151d 0x1c131b1e 0x2c232f19 0x141c1a1f 0x242b2e1d 0x1f1b121f 0x2b2f151d delta 0 +vld3.16 {d20,d22,d24} :: Result 0x131b1e1f 0x232f191d 0x1f1c121f 0x2b2b151d 0x141c1a1b 0x242c2e2f 0x131b1e1f 0x232f191d delta 0 +vld3.32 {d0,d2,d4} :: Result 0x121f1e1f 0x151d191d 0x131b1a1b 0x232f2e2f 0x141c1f1c 0x242c2b2b 0x121f1e1f 0x151d191d delta 0 ---- VLD3 (single 3-element structure to one lane) ---- -vld3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 -vld3.32 {d0[1],d1[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b -vld3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 -vld3.32 {d0[1],d2[1],d4[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b -vld3.16 {d1[0],d2[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f 0x55555555 -vld3.16 {d1[1],d2[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 0x55555555 -vld3.16 {d1[2],d2[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f -vld3.16 {d1[3],d2[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 -vld3.16 {d1[0],d3[0],d5[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 -vld3.16 {d1[1],d3[1],d5[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 -vld3.16 {d1[2],d3[2],d5[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b -vld3.16 {d1[3],d3[3],d5[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 -vld3.8 {d0[7],d1[7],d2[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 -vld3.8 {d1[6],d2[6],d3[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 -vld3.8 {d0[5],d1[5],d2[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 -vld3.8 {d0[4],d1[4],d2[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e -vld3.8 {d20[3],d21[3],d22[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 -vld3.8 {d0[2],d1[2],d2[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 -vld3.8 {d17[1],d18[1],d19[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 -vld3.8 {d29[0],d30[0],d31[0]} :: Result 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 +vld3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld3.32 {d0[1],d1[1],d2[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 0 +vld3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b 0x55555555 delta 0 +vld3.32 {d0[1],d2[1],d4[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x131b1a1b delta 0 +vld3.16 {d1[0],d2[0],d3[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f 0x55555555 delta 0 +vld3.16 {d1[1],d2[1],d3[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 0x55555555 delta 0 +vld3.16 {d1[2],d2[2],d3[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555121f delta 0 +vld3.16 {d1[3],d2[3],d3[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x121f5555 delta 0 +vld3.16 {d1[0],d3[0],d5[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 delta 0 +vld3.16 {d1[1],d3[1],d5[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 delta 0 +vld3.16 {d1[2],d3[2],d5[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x5555121f 0x55555555 0x55551a1b delta 0 +vld3.16 {d1[3],d3[3],d5[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 delta 0 +vld3.8 {d0[7],d1[7],d2[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 delta 0 +vld3.8 {d1[6],d2[6],d3[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 delta 0 +vld3.8 {d0[5],d1[5],d2[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 delta 0 +vld3.8 {d0[4],d1[4],d2[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551e delta 0 +vld3.8 {d20[3],d21[3],d22[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 delta 0 +vld3.8 {d0[2],d1[2],d2[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 delta 0 +vld3.8 {d17[1],d18[1],d19[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 delta 0 +vld3.8 {d29[0],d30[0],d31[0]} :: Result 0x5555551e 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 0x5555551f 0x55555555 delta 0 ---- VLD3 (3-elements to all lanes) ---- -vld3.8 {d0[],d1[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld3.16 {d0[],d1[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f -vld3.32 {d0[],d1[],d2[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b -vld3.8 {d9[],d11[],d13[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld3.16 {d17[],d18[],d19[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f -vld3.32 {d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c -vld3.8 {d0[],d2[],d4[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e -vld3.16 {d0[],d2[],d4[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f -vld3.32 {d5[],d7[],d9[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b +vld3.8 {d0[],d1[],d2[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d0[],d1[],d2[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d0[],d1[],d2[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 0 +vld3.8 {d9[],d11[],d13[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d17[],d18[],d19[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c delta 0 +vld3.8 {d0[],d2[],d4[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e delta 0 +vld3.16 {d0[],d2[],d4[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x121f121f 0x121f121f delta 0 +vld3.32 {d5[],d7[],d9[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x131b1a1b 0x131b1a1b delta 0 ---- VLD4 (multiple 3-elements) ---- -vld4.8 {d0-d3} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 -vld4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c -vld4.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a -vld4.8 {d0,d2,d4,d6} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 -vld4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c -vld4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a +vld4.8 {d0-d3} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 0 +vld4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vld4.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 0 +vld4.8 {d0,d2,d4,d6} :: Result 0x1d1c1b1f 0x2a2b2b2f 0x191f1a1e 0x2d2e2b2e 0x1d1c1b1f 0x2d2a2c2f 0x15141312 0x26252423 delta 0 +vld4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 0 +vld4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 0 ---- VLD4 (single 4-element structure to one lane) ---- -vld4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 -vld4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x55555555 -vld4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 -vld4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d -vld4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 -vld4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 -vld4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b -vld4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 -vld4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 -vld4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 -vld4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b -vld4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 -vld4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 -vld4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 -vld4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 -vld4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 -vld4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 0x55555555 -vld4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 0x55555555 -vld4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 0x55555555 -vld4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 0x55555555 +vld4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 0 +vld4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x55555555 delta 0 +vld4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d 0x55555555 delta 0 +vld4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x55555555 0x121f1e1f 0x55555555 0x131b1a1b 0x55555555 0x141c1f1c 0x55555555 0x151d191d delta 0 +vld4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 0 +vld4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 0 +vld4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 0 +vld4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 0 +vld4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b 0x55555555 delta 0 +vld4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 0x55555555 delta 0 +vld4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x55555555 0x55551e1f 0x55555555 0x5555121f 0x55555555 0x55551a1b 0x55555555 0x5555131b delta 0 +vld4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x55555555 0x1e1f5555 0x55555555 0x121f5555 0x55555555 0x1a1b5555 0x55555555 0x131b5555 delta 0 +vld4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x55555555 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 delta 0 +vld4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x55555555 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 delta 0 +vld4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x55555555 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 delta 0 +vld4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x55555555 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 delta 0 +vld4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x1f555555 0x55555555 0x1e555555 0x55555555 0x1f555555 0x55555555 0x12555555 0x55555555 delta 0 +vld4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x551f5555 0x55555555 0x551e5555 0x55555555 0x551f5555 0x55555555 0x55125555 0x55555555 delta 0 +vld4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x55551f55 0x55555555 0x55551e55 0x55555555 0x55551f55 0x55555555 0x55551255 0x55555555 delta 0 +vld4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x5555551f 0x55555555 0x5555551e 0x55555555 0x5555551f 0x55555555 0x55555512 0x55555555 delta 0 ---- VLD4 (4-elements to all lanes) ---- -vld4.8 {d0[],d1[],d2[],d3[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 -vld4.16 {d0[],d1[],d2[],d3[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b -vld4.32 {d0[],d1[],d2[],d3[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d -vld4.8 {d9[],d11[],d13[],d15[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 -vld4.16 {d17[],d18[],d19[],d20[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b -vld4.32 {d28[],d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d -vld4.8 {d0[],d2[],d4[],d6[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 -vld4.16 {d0[],d2[],d4[],d6[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b -vld4.32 {d5[],d7[],d9[],d11[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d +vld4.8 {d0[],d1[],d2[],d3[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d0[],d1[],d2[],d3[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d0[],d1[],d2[],d3[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 +vld4.8 {d9[],d11[],d13[],d15[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d17[],d18[],d19[],d20[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d28[],d29[],d30[],d31[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 +vld4.8 {d0[],d2[],d4[],d6[]} :: Result 0x1f1f1f1f 0x1f1f1f1f 0x1e1e1e1e 0x1e1e1e1e 0x1f1f1f1f 0x1f1f1f1f 0x12121212 0x12121212 delta 0 +vld4.16 {d0[],d2[],d4[],d6[]} :: Result 0x1e1f1e1f 0x1e1f1e1f 0x121f121f 0x121f121f 0x1a1b1a1b 0x1a1b1a1b 0x131b131b 0x131b131b delta 0 +vld4.32 {d5[],d7[],d9[],d11[]} :: Result 0x121f1e1f 0x121f1e1f 0x131b1a1b 0x131b1a1b 0x141c1f1c 0x141c1f1c 0x151d191d 0x151d191d delta 0 ---- VST1 (multiple single elements) ---- -vst1.8 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.32 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.64 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d9} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d17} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.32 {d31} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.64 {d14} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.32 {d5-d6} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.64 {d30-d31} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 -vst1.16 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 -vst1.32 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 -vst1.64 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 -vst1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vst1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vst1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a -vst1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a +vst1.8 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.16 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst1.32 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst1.64 {d0} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst1.8 {d9} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.16 {d17} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.32 {d31} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.64 {d14} :: Result 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.16 {d0-d1} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.32 {d5-d6} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.64 {d30-d31} :: Result 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 1069416 +vst1.16 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 1069416 +vst1.32 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 1069416 +vst1.64 {d0-d2} :: Result 0x252a2e2b 0x262d2d2a 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 1069416 +vst1.16 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 1069416 +vst1.32 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 1069416 +vst1.64 {d0-d3} :: Result 0x121f1e1f 0x131b1a1b 0x141c1f1c 0x151d191d 0x232f2e2f 0x242c2b2b 0x252a2e2b 0x262d2d2a delta 1069416 ---- VST1 (single element from one lane) ---- -vst1.32 {d0[0]} :: Result 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.32 {d0[1]} :: Result 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d1[0]} :: Result 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d1[1]} :: Result 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d1[2]} :: Result 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.16 {d1[3]} :: Result 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0[7]} :: Result 0x55555526 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d1[6]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0[5]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0[4]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d20[3]} :: Result 0x55555525 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d0[2]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d17[1]} :: Result 0x5555552e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst1.8 {d30[0]} :: Result 0x5555552b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 +vst1.32 {d0[0]} :: Result 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.32 {d0[1]} :: Result 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst1.16 {d1[0]} :: Result 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst1.16 {d1[1]} :: Result 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst1.16 {d1[2]} :: Result 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.16 {d1[3]} :: Result 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0[7]} :: Result 0x55555526 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d1[6]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0[5]} :: Result 0x5555552d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0[4]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d20[3]} :: Result 0x55555525 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d0[2]} :: Result 0x5555552a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d17[1]} :: Result 0x5555552e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst1.8 {d30[0]} :: Result 0x5555552b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 ---- VST2 (multiple 2-elements) ---- -vst2.8 {d30-d31} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d0-d1} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.32 {d0-d1} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d10,d12} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d20,d22} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.32 {d0,d2} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d0-d3} :: Result 0x2e1e2f1f 0x23122f1f 0x2b1a2b1b 0x24132c1b 0x2e1f2b1c 0x25142a1c 0x2d192a1d 0x26152d1d -vst2.16 {d20-d23} :: Result 0x2e2f1e1f 0x232f121f 0x2b2b1a1b 0x242c131b 0x2e2b1f1c 0x252a141c 0x2d2a191d 0x262d151d -vst2.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a +vst2.8 {d30-d31} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d0-d1} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst2.32 {d0-d1} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst2.8 {d10,d12} :: Result 0x2e2e2b2f 0x25232a2f 0x2d2b2a2b 0x26242d2c 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst2.16 {d20,d22} :: Result 0x2e2b2e2f 0x252a232f 0x2d2a2b2b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.32 {d0,d2} :: Result 0x232f2e2f 0x252a2e2b 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d0-d3} :: Result 0x2e1e2f1f 0x23122f1f 0x2b1a2b1b 0x24132c1b 0x2e1f2b1c 0x25142a1c 0x2d192a1d 0x26152d1d delta 1069416 +vst2.16 {d20-d23} :: Result 0x2e2f1e1f 0x232f121f 0x2b2b1a1b 0x242c131b 0x2e2b1f1c 0x252a141c 0x2d2a191d 0x262d151d delta 1069416 +vst2.32 {d0-d3} :: Result 0x121f1e1f 0x232f2e2f 0x131b1a1b 0x242c2b2b 0x141c1f1c 0x252a2e2b 0x151d191d 0x262d2d2a delta 1069416 ---- VST2 (single 2-element structure from one lane) ---- -vst2.32 {d0[0],d1[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.32 {d0[1],d1[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.32 {d0[0],d2[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.32 {d0[1],d2[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[0],d2[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[1],d2[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[2],d2[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[3],d2[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[0],d3[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[1],d3[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[2],d3[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.16 {d1[3],d3[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d0[7],d1[7]} :: Result 0x55552624 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d1[6],d2[6]} :: Result 0x55552d2c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d0[5],d1[5]} :: Result 0x55552d2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d0[4],d1[4]} :: Result 0x55552a2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d20[3],d21[3]} :: Result 0x55552523 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d0[2],d1[2]} :: Result 0x55552a2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d17[1],d18[1]} :: Result 0x55552e2e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst2.8 {d30[0],d31[0]} :: Result 0x55552b2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 +vst2.32 {d0[0],d1[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.32 {d0[1],d1[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst2.32 {d0[0],d2[0]} :: Result 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst2.32 {d0[1],d2[1]} :: Result 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst2.16 {d1[0],d2[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[1],d2[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[2],d2[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[3],d2[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[0],d3[0]} :: Result 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[1],d3[1]} :: Result 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[2],d3[2]} :: Result 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.16 {d1[3],d3[3]} :: Result 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d0[7],d1[7]} :: Result 0x55552624 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d1[6],d2[6]} :: Result 0x55552d2c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d0[5],d1[5]} :: Result 0x55552d2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d0[4],d1[4]} :: Result 0x55552a2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d20[3],d21[3]} :: Result 0x55552523 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d0[2],d1[2]} :: Result 0x55552a2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d17[1],d18[1]} :: Result 0x55552e2e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst2.8 {d30[0],d31[0]} :: Result 0x55552b2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 ---- VST3 (multiple 3-elements) ---- -vst3.8 {d20-d22} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 -vst3.16 {d0-d2} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 -vst3.32 {d0-d2} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 -vst3.8 {d0,d2,d4} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 -vst3.16 {d20,d22,d24} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 -vst3.32 {d0,d2,d4} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 +vst3.8 {d20-d22} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 1069416 +vst3.16 {d0-d2} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 1069420 +vst3.32 {d0-d2} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 1069424 +vst3.8 {d0,d2,d4} :: Result 0x2e2f1c2b 0x1c2a2e1f 0x2314252f 0x2d2b1d2a 0x1d2d2b19 0x2415262c 0x55555555 0x55555555 delta 1069428 +vst3.16 {d20,d22,d24} :: Result 0x1f1c2e2b 0x252a2e2f 0x232f141c 0x191d2d2a 0x262d2b2b 0x242c151d 0x55555555 0x55555555 delta 1069416 +vst3.32 {d0,d2,d4} :: Result 0x252a2e2b 0x141c1f1c 0x232f2e2f 0x262d2d2a 0x151d191d 0x242c2b2b 0x55555555 0x55555555 delta 1069416 ---- VST3 (single 3-element structure from one lane) ---- -vst3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.32 {d0[1],d1[1],d2[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.32 {d0[1],d2[1],d4[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[0],d2[0],d3[0]} :: Result 0x2e2b1e1f 0x55552e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[1],d2[1],d3[1]} :: Result 0x252a121f 0x5555232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[2],d2[2],d3[2]} :: Result 0x2d2a1a1b 0x55552b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[3],d2[3],d3[3]} :: Result 0x262d131b 0x5555242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[0],d3[0],d5[0]} :: Result 0x2e2f1e1f 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[1],d3[1],d5[1]} :: Result 0x232f121f 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[2],d3[2],d5[2]} :: Result 0x2b2b1a1b 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.16 {d1[3],d3[3],d5[3]} :: Result 0x242c131b 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d0[7],d1[7],d2[7]} :: Result 0x55242613 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d1[6],d2[6],d3[6]} :: Result 0x552c2d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d0[5],d1[5],d2[5]} :: Result 0x552b2d1a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d0[4],d1[4],d2[4]} :: Result 0x552b2a1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d20[3],d21[3],d22[3]} :: Result 0x55232512 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d0[2],d1[2],d2[2]} :: Result 0x552f2a1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d17[1],d18[1],d19[1]} :: Result 0x552e2e1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst3.8 {d29[0],d30[0],d31[0]} :: Result 0x552b1f2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 +vst3.32 {d0[0],d1[0],d2[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.32 {d0[1],d1[1],d2[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst3.32 {d0[0],d2[0],d4[0]} :: Result 0x121f1e1f 0x252a2e2b 0x232f2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst3.32 {d0[1],d2[1],d4[1]} :: Result 0x131b1a1b 0x262d2d2a 0x242c2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst3.16 {d1[0],d2[0],d3[0]} :: Result 0x2e2b1e1f 0x55552e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[1],d2[1],d3[1]} :: Result 0x252a121f 0x5555232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[2],d2[2],d3[2]} :: Result 0x2d2a1a1b 0x55552b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[3],d2[3],d3[3]} :: Result 0x262d131b 0x5555242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[0],d3[0],d5[0]} :: Result 0x2e2f1e1f 0x55552e2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[1],d3[1],d5[1]} :: Result 0x232f121f 0x5555252a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[2],d3[2],d5[2]} :: Result 0x2b2b1a1b 0x55552d2a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.16 {d1[3],d3[3],d5[3]} :: Result 0x242c131b 0x5555262d 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d0[7],d1[7],d2[7]} :: Result 0x55242613 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d1[6],d2[6],d3[6]} :: Result 0x552c2d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d0[5],d1[5],d2[5]} :: Result 0x552b2d1a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d0[4],d1[4],d2[4]} :: Result 0x552b2a1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d20[3],d21[3],d22[3]} :: Result 0x55232512 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d0[2],d1[2],d2[2]} :: Result 0x552f2a1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d17[1],d18[1],d19[1]} :: Result 0x552e2e1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst3.8 {d29[0],d30[0],d31[0]} :: Result 0x552b1f2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 ---- VST4 (multiple 4-elements) ---- -vst4.8 {d0-d3} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 -vst4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c -vst4.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a -vst4.8 {d0,d2,d4,d6} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 -vst4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c -vst4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a +vst4.8 {d0-d3} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 1069416 +vst4.16 {d20-d23} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 1069420 +vst4.32 {d0-d3} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 1069424 +vst4.8 {d0,d2,d4,d6} :: Result 0x2b2f1c1f 0x2e2e1f1e 0x2a2f1c1f 0x25231412 0x2a2b1d1b 0x2d2b191a 0x2d2c1d1b 0x26241513 delta 1069428 +vst4.16 {d1,d3,d5,d7} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x141c121f 0x252a232f 0x191d1a1b 0x2d2a2b2b 0x151d131b 0x262d242c delta 1069416 +vst4.32 {d20,d22,d24,d26} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a delta 1069416 ---- VST4 (single 4-element structure from one lane) ---- -vst4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x26241513 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x2d2c1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x2d2b191a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x2a2b1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x25231412 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x2a2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x2e2e1f1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 -vst4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x2b2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 +vst4.32 {d0[0],d1[0],d2[0],d3[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.32 {d0[1],d1[1],d2[1],d3[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069420 +vst4.32 {d0[0],d2[0],d4[0],d6[0]} :: Result 0x121f1e1f 0x141c1f1c 0x232f2e2f 0x252a2e2b 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069424 +vst4.32 {d0[1],d2[1],d4[1],d6[1]} :: Result 0x131b1a1b 0x151d191d 0x242c2b2b 0x262d2d2a 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069428 +vst4.16 {d1[0],d2[0],d3[0],d4[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[1],d2[1],d3[1],d4[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[2],d2[2],d3[2],d4[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[3],d2[3],d3[3],d4[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[0],d3[0],d5[0],d7[0]} :: Result 0x1f1c1e1f 0x2e2b2e2f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[1],d3[1],d5[1],d7[1]} :: Result 0x141c121f 0x252a232f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[2],d3[2],d5[2],d7[2]} :: Result 0x191d1a1b 0x2d2a2b2b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.16 {d1[3],d3[3],d5[3],d7[3]} :: Result 0x151d131b 0x262d242c 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d0[7],d1[7],d2[7],d3[7]} :: Result 0x26241513 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d1[6],d2[6],d3[6],d4[6]} :: Result 0x2d2c1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d0[5],d1[5],d2[5],d3[5]} :: Result 0x2d2b191a 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d0[4],d1[4],d2[4],d3[4]} :: Result 0x2a2b1d1b 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d20[3],d21[3],d22[3],d23[3]} :: Result 0x25231412 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d0[2],d1[2],d2[2],d3[2]} :: Result 0x2a2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d17[1],d18[1],d19[1],d20[1]} :: Result 0x2e2e1f1e 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 +vst4.8 {d28[0],d29[0],d30[0],d31[0]} :: Result 0x2b2f1c1f 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 0x55555555 delta 1069416 ---- VMOVN ---- vmovn.i32 d0, q0 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 +vmovn.i32 d0, q0 :: Qd 0x00240024 0x55555555 Qm (i32)0x00000032 Qn (i32)0x00000024 vmovn.i16 d7, q5 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 +vmovn.i16 d7, q5 :: Qd 0x00240024 0x1b1b1f1f Qm (i32)0x00000032 Qn (i32)0x00000024 vmovn.i64 d31, q0 :: Qd 0x00000024 0x00000032 Qm (i32)0x00000032 Qn (i32)0x00000024 +vmovn.i64 d31, q0 :: Qd 0x00000024 0x121f1e1f Qm (i32)0x00000032 Qn (i32)0x00000024 vmovn.i32 d0, q0 :: Qd 0xf0f0f0f0 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000f0 +vmovn.i32 d0, q0 :: Qd 0xf0f0f0f0 0x55555555 Qm (i8)0x000000ff Qn (i8)0x000000f0 vmovn.i16 d7, q5 :: Qd 0xefefefef 0xadadadad Qm (i16)0x0000dead Qn (i16)0x0000beef +vmovn.i16 d7, q5 :: Qd 0xefefefef 0x1b1b1f1f Qm (i16)0x0000dead Qn (i16)0x0000beef vmovn.i64 d31, q0 :: Qd 0x24242424 0xff00fe0f Qm (i32)0xff00fe0f Qn (i8)0x00000024 +vmovn.i64 d31, q0 :: Qd 0x24242424 0x121f1e1f Qm (i32)0xff00fe0f Qn (i8)0x00000024 ---- VQMOVN ---- vqmovn.u32 d0, q0 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovn.u32 d0, q0 :: Qd 0x00240024 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.u16 d7, q5 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovn.u16 d7, q5 :: Qd 0x00240024 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 +vqmovn.u64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.u64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.u32 d0, q0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 +vqmovn.u32 d0, q0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 +vqmovn.u16 d7, q5 :: Qd 0xffffffff 0xffffffff Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 vqmovn.u16 d7, q5 :: Qd 0xffffffff 0xffffffff Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 vqmovn.u64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 +vqmovn.u64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 vqmovn.s32 d0, q0 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovn.s32 d0, q0 :: Qd 0x00240024 0x7fff7fff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.s16 d7, q5 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovn.s16 d7, q5 :: Qd 0x00240024 0x7f7f7f7f Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 +vqmovn.s64 d31, q0 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.s64 d31, q0 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovn.s32 d0, q0 :: Qd 0x80008000 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 +vqmovn.s32 d0, q0 :: Qd 0x80008000 0x7fff7fff Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 vqmovn.s16 d7, q5 :: Qd 0x80808080 0x80808080 Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 +vqmovn.s16 d7, q5 :: Qd 0x80808080 0x7f7f7f7f Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 vqmovn.s64 d31, q0 :: Qd 0x7fffffff 0x80000000 Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 +vqmovn.s64 d31, q0 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 vqmovn.s32 d0, q0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 00000000 +vqmovn.s32 d0, q0 :: Qd 0xffffffff 0x7fff7fff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 vqmovn.s16 d7, q5 :: Qd 0x7f7f7f7f 0xffffffff Qm (i8)0x000000ff Qn (i16)0x000000ff fpscr: 08000000 +vqmovn.s16 d7, q5 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i8)0x000000ff Qn (i16)0x000000ff fpscr: 08000000 vqmovn.s64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 00000000 +vqmovn.s64 d31, q0 :: Qd 0xffffffff 0x7fffffff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 ---- VQMOVN ---- vqmovun.s32 d0, q0 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovun.s32 d0, q0 :: Qd 0x00240024 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovun.s16 d7, q5 :: Qd 0x00240024 0x00320032 Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 00000000 +vqmovun.s16 d7, q5 :: Qd 0x00240024 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 +vqmovun.s64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovun.s64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000032 Qn (i32)0x00000024 fpscr: 08000000 vqmovun.s32 d0, q0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 +vqmovun.s32 d0, q0 :: Qd 0x00000000 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000f0 fpscr: 08000000 vqmovun.s16 d7, q5 :: Qd 0x00000000 0x00000000 Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 +vqmovun.s16 d7, q5 :: Qd 0x00000000 0xffffffff Qm (i16)0x0000dead Qn (i16)0x0000beef fpscr: 08000000 vqmovun.s64 d31, q0 :: Qd 0xffffffff 0x00000000 Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 +vqmovun.s64 d31, q0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff00fe0f Qn (i8)0x00000024 fpscr: 08000000 vqmovun.s32 d0, q0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 +vqmovun.s32 d0, q0 :: Qd 0x00000000 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 vqmovun.s16 d7, q5 :: Qd 0xffffffff 0x00000000 Qm (i8)0x000000ff Qn (i16)0x000000ff fpscr: 08000000 +vqmovun.s16 d7, q5 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ff Qn (i16)0x000000ff fpscr: 08000000 vqmovun.s64 d31, q0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 +vqmovun.s64 d31, q0 :: Qd 0x00000000 0xffffffff Qm (i8)0x000000ff Qn (i8)0x000000ff fpscr: 08000000 ---- VABS ---- vabs.s32 d0, d1 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000073 vabs.s16 d15, d4 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s16 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000073 vabs.s8 d8, d7 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 +vabs.s8 d8, d7 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000073 vabs.s32 d0, d1 :: Qd 0x000000fe 0x000000fe Qm (i32)0x000000fe +vabs.s32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x000000fe vabs.s16 d31, d4 :: Qd 0x000000ef 0x000000ef Qm (i32)0x000000ef +vabs.s16 d31, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x000000ef vabs.s8 d8, d7 :: Qd 0x00000022 0x00000022 Qm (i32)0x000000de +vabs.s8 d8, d7 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x000000de vabs.s32 d0, d1 :: Qd 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a +vabs.s32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i16)0x0000fe0a vabs.s16 d15, d4 :: Qd 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b +vabs.s16 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i16)0x0000ef0b vabs.s8 d8, d7 :: Qd 0x220c220c 0x220c220c Qm (i16)0x0000de0c +vabs.s8 d8, d7 :: Qd 0x151d191d 0x141c1f1c Qm (i16)0x0000de0c ---- VQABS ---- vqabs.s32 d0, d1 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr 00000000 +vqabs.s32 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr 00000000 vqabs.s32 d0, d1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000000 fpscr 08000000 +vqabs.s32 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr 00000000 vqabs.s16 d0, d1 :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 fpscr 08000000 +vqabs.s16 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr 00000000 vqabs.s8 d0, d1 :: Qd 0x7f000000 0x7f000000 Qm (i32)0x80000000 fpscr 08000000 +vqabs.s8 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x80000000 fpscr 00000000 vqabs.s16 d15, d4 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr 00000000 +vqabs.s16 d15, d4 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr 00000000 vqabs.s8 d8, d7 :: Qd 0x00000073 0x00000073 Qm (i32)0x00000073 fpscr 00000000 +vqabs.s8 d8, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000073 fpscr 00000000 vqabs.s32 d0, d1 :: Qd 0x000000fe 0x000000fe Qm (i32)0x000000fe fpscr 00000000 +vqabs.s32 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x000000fe fpscr 00000000 vqabs.s16 d31, d4 :: Qd 0x000000ef 0x000000ef Qm (i32)0x000000ef fpscr 00000000 +vqabs.s16 d31, d4 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x000000ef fpscr 00000000 vqabs.s8 d8, d7 :: Qd 0x00000022 0x00000022 Qm (i32)0x000000de fpscr 00000000 +vqabs.s8 d8, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x000000de fpscr 00000000 vqabs.s32 d0, d1 :: Qd 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a fpscr 00000000 +vqabs.s32 d0, d1 :: Qd 0x131b1a1b 0x121f1e1f Qm (i16)0x0000fe0a fpscr 00000000 vqabs.s16 d15, d4 :: Qd 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b fpscr 00000000 +vqabs.s16 d15, d4 :: Qd 0x131b1a1b 0x121f1e1f Qm (i16)0x0000ef0b fpscr 00000000 vqabs.s8 d8, d7 :: Qd 0x220c220c 0x220c220c Qm (i16)0x0000de0c fpscr 00000000 +vqabs.s8 d8, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i16)0x0000de0c fpscr 00000000 ---- VADDHN ---- vaddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vaddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 vaddhn.i16 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vaddhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i32)0x00000073 Qn (i32)0x00000072 vaddhn.i32 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vaddhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i32)0x00000073 Qn (i32)0x00000072 vaddhn.i64 d0, q1, q2 :: Qd 0x000000e5 0x000000e5 Qm (i32)0x00000073 Qn (i32)0x00000072 +vaddhn.i64 d0, q1, q2 :: Qd 0x151d198f 0x131b1a8d Qm (i32)0x00000073 Qn (i32)0x00000072 vaddhn.i16 d0, q15, q2 :: Qd 0xeff0eff0 0xeff0eff0 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vaddhn.i16 d0, q15, q2 :: Qd 0x151a1420 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000172 vaddhn.i32 d31, q1, q2 :: Qd 0xef73ef73 0xef73ef73 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vaddhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000172 vaddhn.i64 d0, q1, q8 :: Qd 0xef73f0e5 0xef73f0e5 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vaddhn.i64 d0, q1, q8 :: Qd 0x151d1a8f 0x131b1b8d Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vaddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vaddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vaddhn.i16 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vaddhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i8)0x00000073 Qn (i32)0x00000072 vaddhn.i32 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vaddhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000072 vaddhn.i64 d0, q1, q2 :: Qd 0x737373e5 0x737373e5 Qm (i8)0x00000073 Qn (i32)0x00000072 +vaddhn.i64 d0, q1, q2 :: Qd 0x151d198f 0x131b1a8d Qm (i8)0x00000073 Qn (i32)0x00000072 ---- VRADDHN ---- vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 vraddhn.i16 d0, q1, q2 :: Qd 0x00010001 0x00010001 Qm (i32)0x00000073 Qn (i32)0x00000072 +vraddhn.i16 d0, q1, q2 :: Qd 0x151a1420 0x131b121f Qm (i32)0x00000073 Qn (i32)0x00000072 vraddhn.i32 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vraddhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i32)0x00000073 Qn (i32)0x00000072 vraddhn.i64 d0, q1, q2 :: Qd 0x000000e5 0x000000e5 Qm (i32)0x00000073 Qn (i32)0x00000072 +vraddhn.i64 d0, q1, q2 :: Qd 0x151d198f 0x131b1a8d Qm (i32)0x00000073 Qn (i32)0x00000072 vraddhn.i16 d0, q15, q2 :: Qd 0xeff1eff1 0xeff1eff1 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vraddhn.i16 d0, q15, q2 :: Qd 0x151b1421 0x131c1220 Qm (i16)0x0000ef73 Qn (i32)0x00000172 vraddhn.i32 d31, q1, q2 :: Qd 0xef74ef74 0xef74ef74 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vraddhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000172 vraddhn.i64 d0, q1, q8 :: Qd 0xef73f0e6 0xef73f0e6 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vraddhn.i64 d0, q1, q8 :: Qd 0x151d1a8f 0x131b1b8d Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vraddhn.i16 d0, q1, q2 :: Qd 0x73747374 0x73747374 Qm (i8)0x00000073 Qn (i32)0x00000072 +vraddhn.i16 d0, q1, q2 :: Qd 0x151a1420 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000072 vraddhn.i32 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vraddhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000072 vraddhn.i64 d0, q1, q2 :: Qd 0x737373e5 0x737373e5 Qm (i8)0x00000073 Qn (i32)0x00000072 +vraddhn.i64 d0, q1, q2 :: Qd 0x151d198f 0x131b1a8d Qm (i8)0x00000073 Qn (i32)0x00000072 vraddhn.i16 d0, q15, q2 :: Qd 0xeff0eff0 0xeff0eff0 Qm (i16)0x0000ef73 Qn (i32)0x00000102 +vraddhn.i16 d0, q15, q2 :: Qd 0x151a1420 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000102 vraddhn.i32 d31, q1, q2 :: Qd 0xef74ef74 0xef74ef74 Qm (i16)0x0000ef73 Qn (i32)0x00000102 +vraddhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000102 vraddhn.i64 d0, q1, q8 :: Qd 0xef73f076 0xef73f076 Qm (i16)0x0000ef73 Qn (i32)0x00000102 +vraddhn.i64 d0, q1, q8 :: Qd 0x151d1a1f 0x131b1b1d Qm (i16)0x0000ef73 Qn (i32)0x00000102 +vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000002 vraddhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000002 vraddhn.i16 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000002 +vraddhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i8)0x00000073 Qn (i32)0x00000002 vraddhn.i32 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000002 +vraddhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000002 vraddhn.i64 d0, q1, q2 :: Qd 0x73737375 0x73737375 Qm (i8)0x00000073 Qn (i32)0x00000002 +vraddhn.i64 d0, q1, q2 :: Qd 0x151d191f 0x131b1a1d Qm (i8)0x00000073 Qn (i32)0x00000002 ---- VSUBHN ---- vsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 vsubhn.i16 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vsubhn.i16 d0, q1, q2 :: Qd 0x1518141e 0x1319121d Qm (i32)0x00000073 Qn (i32)0x00000072 vsubhn.i32 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vsubhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i32)0x00000073 Qn (i32)0x00000072 vsubhn.i64 d0, q1, q2 :: Qd 0x00000001 0x00000001 Qm (i32)0x00000073 Qn (i32)0x00000072 +vsubhn.i64 d0, q1, q2 :: Qd 0x151d18ab 0x131b19a9 Qm (i32)0x00000073 Qn (i32)0x00000072 vsubhn.i16 d0, q15, q2 :: Qd 0xefeeefee 0xefeeefee Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vsubhn.i16 d0, q15, q2 :: Qd 0x1517141d 0x1318121c Qm (i16)0x0000ef73 Qn (i32)0x00000172 vsubhn.i32 d31, q1, q2 :: Qd 0xef73ef73 0xef73ef73 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vsubhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000172 vsubhn.i64 d0, q1, q8 :: Qd 0xef73ee01 0xef73ee01 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vsubhn.i64 d0, q1, q8 :: Qd 0x151d17ab 0x131b18a9 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vsubhn.i16 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vsubhn.i16 d0, q1, q2 :: Qd 0x1518141e 0x1319121d Qm (i8)0x00000073 Qn (i32)0x00000072 vsubhn.i32 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vsubhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000072 vsubhn.i64 d0, q1, q2 :: Qd 0x73737301 0x73737301 Qm (i8)0x00000073 Qn (i32)0x00000072 +vsubhn.i64 d0, q1, q2 :: Qd 0x151d18ab 0x131b19a9 Qm (i8)0x00000073 Qn (i32)0x00000072 ---- VRSUBHN ---- vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 vrsubhn.i16 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vrsubhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i32)0x00000073 Qn (i32)0x00000072 vrsubhn.i32 d0, q1, q2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000073 Qn (i32)0x00000072 +vrsubhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i32)0x00000073 Qn (i32)0x00000072 vrsubhn.i64 d0, q1, q2 :: Qd 0x00000001 0x00000001 Qm (i32)0x00000073 Qn (i32)0x00000072 +vrsubhn.i64 d0, q1, q2 :: Qd 0x151d18ab 0x131b19a9 Qm (i32)0x00000073 Qn (i32)0x00000072 vrsubhn.i16 d0, q15, q2 :: Qd 0xefeeefee 0xefeeefee Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vrsubhn.i16 d0, q15, q2 :: Qd 0x1518141e 0x1319121d Qm (i16)0x0000ef73 Qn (i32)0x00000172 vrsubhn.i32 d31, q1, q2 :: Qd 0xef74ef74 0xef74ef74 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vrsubhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef73 Qn (i32)0x00000172 vrsubhn.i64 d0, q1, q8 :: Qd 0xef73ee02 0xef73ee02 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vrsubhn.i64 d0, q1, q8 :: Qd 0x151d17ab 0x131b18a9 Qm (i16)0x0000ef73 Qn (i32)0x00000172 +vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000073 Qn (i32)0x00000072 vrsubhn.i16 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vrsubhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i8)0x00000073 Qn (i32)0x00000072 vrsubhn.i32 d0, q1, q2 :: Qd 0x73737373 0x73737373 Qm (i8)0x00000073 Qn (i32)0x00000072 +vrsubhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000073 Qn (i32)0x00000072 vrsubhn.i64 d0, q1, q2 :: Qd 0x73737301 0x73737301 Qm (i8)0x00000073 Qn (i32)0x00000072 +vrsubhn.i64 d0, q1, q2 :: Qd 0x151d18ab 0x131b19a9 Qm (i8)0x00000073 Qn (i32)0x00000072 vrsubhn.i16 d0, q15, q2 :: Qd 0xf0eff0ef 0xf0eff0ef Qm (i16)0x0000ef93 Qn (i32)0x00000102 +vrsubhn.i16 d0, q15, q2 :: Qd 0x1518141e 0x1319121d Qm (i16)0x0000ef93 Qn (i32)0x00000102 vrsubhn.i32 d31, q1, q2 :: Qd 0xef94ef94 0xef94ef94 Qm (i16)0x0000ef93 Qn (i32)0x00000102 +vrsubhn.i32 d31, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i16)0x0000ef93 Qn (i32)0x00000102 vrsubhn.i64 d0, q1, q8 :: Qd 0xef93ee92 0xef93ee92 Qm (i16)0x0000ef93 Qn (i32)0x00000102 +vrsubhn.i64 d0, q1, q8 :: Qd 0x151d181b 0x131b1919 Qm (i16)0x0000ef93 Qn (i32)0x00000102 +vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000093 Qn (i32)0x00000002 vrsubhn.i32 d0, q1, q1 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000093 Qn (i32)0x00000002 vrsubhn.i16 d0, q1, q2 :: Qd 0x94949494 0x94949494 Qm (i8)0x00000093 Qn (i32)0x00000002 +vrsubhn.i16 d0, q1, q2 :: Qd 0x1519141f 0x131a121e Qm (i8)0x00000093 Qn (i32)0x00000002 vrsubhn.i32 d0, q1, q2 :: Qd 0x93949394 0x93949394 Qm (i8)0x00000093 Qn (i32)0x00000002 +vrsubhn.i32 d0, q1, q2 :: Qd 0x151d141c 0x131b121f Qm (i8)0x00000093 Qn (i32)0x00000002 vrsubhn.i64 d0, q1, q2 :: Qd 0x93939392 0x93939392 Qm (i8)0x00000093 Qn (i32)0x00000002 +vrsubhn.i64 d0, q1, q2 :: Qd 0x151d191b 0x131b1a19 Qm (i8)0x00000093 Qn (i32)0x00000002 ---- VCEQ #0 ---- vceq.i32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vceq.i32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i16 d2, d1, #0 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x00000021 +vceq.i16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i8 d10, d11, #0 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000021 +vceq.i8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vceq.i32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vceq.i16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vceq.i8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.i8 d10, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 ---- VCGT #0 ---- vcgt.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcgt.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s16 d2, d1, #0 :: Qd 0x0000ffff 0x0000ffff Qm (i32)0x00000021 +vcgt.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s8 d10, d31, #0 :: Qd 0x000000ff 0x000000ff Qm (i32)0x00000021 +vcgt.s8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcgt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ef +vcgt.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ef vcgt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ed +vcgt.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ed vcgt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ae +vcgt.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ae ---- VCGE #0 ---- vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 +vcge.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000021 vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.s8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcge.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ef +vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ef vcge.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ed +vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ed vcge.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ae +vcge.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ae +vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000000ef vcge.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000000ef vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000000ed +vcge.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000000ed vcge.s8 d10, d11, #0 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x000000ae +vcge.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000000ae ---- VCLE #0 ---- vcle.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vcle.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s16 d2, d1, #0 :: Qd 0xffff0000 0xffff0000 Qm (i32)0x00000021 +vcle.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s8 d10, d11, #0 :: Qd 0xffffff00 0xffffff00 Qm (i32)0x00000021 +vcle.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vcle.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.s8 d10, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcle.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ef +vcle.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ef vcle.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ed +vcle.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ed vcle.s8 d10, d11, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ae +vcle.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ae ---- VCLT #0 ---- vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 vclt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000021 +vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vclt.s32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ef +vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ef vclt.s16 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ed +vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ed vclt.s8 d10, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i8)0x000000ae +vclt.s8 d10, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ae vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x000000ef +vclt.s32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x000000ef +vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x000000ed vclt.s16 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x000000ed vclt.s8 d10, d11, #0 :: Qd 0x000000ff 0x000000ff Qm (i32)0x000000ae +vclt.s8 d10, d11, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x000000ae ---- VCNT ---- vcnt.8 d0, d1 :: Qd 0x04050306 0x04050306 Qm (i32)0xac3d25eb +vcnt.8 d0, d1 :: Qd 0x03040304 0x02030503 Qm (i32)0xac3d25eb vcnt.8 d11, d14 :: Qd 0x04050306 0x04050306 Qm (i32)0xac3d25eb +vcnt.8 d11, d14 :: Qd 0x03040304 0x02030503 Qm (i32)0xac3d25eb vcnt.8 d6, d2 :: Qd 0x00020306 0x00020306 Qm (i32)0x000ad0eb +vcnt.8 d6, d2 :: Qd 0x03040304 0x02030503 Qm (i32)0x000ad0eb ---- VCLS ---- vcls.s8 d0, d1 :: Qd 0x07070701 0x07070701 Qm (i32)0x00000021 +vcls.s8 d0, d1 :: Qd 0x02020202 0x02020202 Qm (i32)0x00000021 vcls.s8 d30, d31 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s8 d30, d31 :: Qd 0x02020202 0x02020202 Qm (i8)0x00000082 vcls.s16 d0, d1 :: Qd 0x000f0009 0x000f0009 Qm (i32)0x00000021 +vcls.s16 d0, d1 :: Qd 0x00020002 0x00020002 Qm (i32)0x00000021 vcls.s16 d31, d30 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s16 d31, d30 :: Qd 0x00020002 0x00020002 Qm (i8)0x00000082 vcls.s32 d6, d1 :: Qd 0x00000019 0x00000019 Qm (i32)0x00000021 +vcls.s32 d6, d1 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000021 vcls.s32 d30, d5 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vcls.s32 d30, d5 :: Qd 0x00000002 0x00000002 Qm (i8)0x00000082 vcls.s8 d2, d4 :: Qd 0x07070707 0x07070707 Qm (i8)0x000000ff +vcls.s8 d2, d4 :: Qd 0x02020202 0x02020202 Qm (i8)0x000000ff vcls.s16 d2, d4 :: Qd 0x000f000f 0x000f000f Qm (i8)0x000000ff +vcls.s16 d2, d4 :: Qd 0x00020002 0x00020002 Qm (i8)0x000000ff vcls.s32 d2, d4 :: Qd 0x0000001f 0x0000001f Qm (i8)0x000000ff +vcls.s32 d2, d4 :: Qd 0x00000002 0x00000002 Qm (i8)0x000000ff vcls.s8 d2, d4 :: Qd 0x07020702 0x07020702 Qm (i16)0x0000ffef +vcls.s8 d2, d4 :: Qd 0x02020202 0x02020202 Qm (i16)0x0000ffef vcls.s16 d2, d4 :: Qd 0x000a000a 0x000a000a Qm (i16)0x0000ffef +vcls.s16 d2, d4 :: Qd 0x00020002 0x00020002 Qm (i16)0x0000ffef vcls.s32 d2, d4 :: Qd 0x0000000a 0x0000000a Qm (i16)0x0000ffef +vcls.s32 d2, d4 :: Qd 0x00000002 0x00000002 Qm (i16)0x0000ffef vcls.s8 d2, d4 :: Qd 0x07070707 0x07070707 Qm (i8)0x00000000 +vcls.s8 d2, d4 :: Qd 0x02020202 0x02020202 Qm (i8)0x00000000 vcls.s16 d2, d4 :: Qd 0x000f000f 0x000f000f Qm (i8)0x00000000 +vcls.s16 d2, d4 :: Qd 0x00020002 0x00020002 Qm (i8)0x00000000 vcls.s32 d2, d4 :: Qd 0x0000001f 0x0000001f Qm (i8)0x00000000 +vcls.s32 d2, d4 :: Qd 0x00000002 0x00000002 Qm (i8)0x00000000 vcls.s8 d2, d4 :: Qd 0x07020702 0x07020702 Qm (i16)0x000000ef +vcls.s8 d2, d4 :: Qd 0x02020202 0x02020202 Qm (i16)0x000000ef vcls.s16 d2, d4 :: Qd 0x00070007 0x00070007 Qm (i16)0x000000ef +vcls.s16 d2, d4 :: Qd 0x00020002 0x00020002 Qm (i16)0x000000ef vcls.s32 d2, d4 :: Qd 0x00000007 0x00000007 Qm (i16)0x000000ef +vcls.s32 d2, d4 :: Qd 0x00000002 0x00000002 Qm (i16)0x000000ef ---- VCLZ ---- vclz.i8 d0, d1 :: Qd 0x08080802 0x08080802 Qm (i32)0x00000021 +vclz.i8 d0, d1 :: Qd 0x03030303 0x03030303 Qm (i32)0x00000021 vclz.i8 d30, d31 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i8 d30, d31 :: Qd 0x03030303 0x03030303 Qm (i8)0x00000082 vclz.i16 d0, d1 :: Qd 0x0010000a 0x0010000a Qm (i32)0x00000021 +vclz.i16 d0, d1 :: Qd 0x00030003 0x00030003 Qm (i32)0x00000021 vclz.i16 d31, d30 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i16 d31, d30 :: Qd 0x00030003 0x00030003 Qm (i8)0x00000082 vclz.i32 d6, d1 :: Qd 0x0000001a 0x0000001a Qm (i32)0x00000021 +vclz.i32 d6, d1 :: Qd 0x00000003 0x00000003 Qm (i32)0x00000021 vclz.i32 d30, d5 :: Qd 0x00000000 0x00000000 Qm (i8)0x00000082 +vclz.i32 d30, d5 :: Qd 0x00000003 0x00000003 Qm (i8)0x00000082 vclz.i8 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i8 d2, d4 :: Qd 0x03030303 0x03030303 Qm (i8)0x000000ff vclz.i16 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i16 d2, d4 :: Qd 0x00030003 0x00030003 Qm (i8)0x000000ff vclz.i32 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i8)0x000000ff +vclz.i32 d2, d4 :: Qd 0x00000003 0x00000003 Qm (i8)0x000000ff vclz.i8 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i8 d2, d4 :: Qd 0x03030303 0x03030303 Qm (i16)0x0000ffef vclz.i16 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i16 d2, d4 :: Qd 0x00030003 0x00030003 Qm (i16)0x0000ffef vclz.i32 d2, d4 :: Qd 0x00000000 0x00000000 Qm (i16)0x0000ffef +vclz.i32 d2, d4 :: Qd 0x00000003 0x00000003 Qm (i16)0x0000ffef vclz.i8 d2, d4 :: Qd 0x08080808 0x08080808 Qm (i8)0x00000000 +vclz.i8 d2, d4 :: Qd 0x03030303 0x03030303 Qm (i8)0x00000000 vclz.i16 d2, d4 :: Qd 0x00100010 0x00100010 Qm (i8)0x00000000 +vclz.i16 d2, d4 :: Qd 0x00030003 0x00030003 Qm (i8)0x00000000 vclz.i32 d2, d4 :: Qd 0x00000020 0x00000020 Qm (i8)0x00000000 +vclz.i32 d2, d4 :: Qd 0x00000003 0x00000003 Qm (i8)0x00000000 vclz.i8 d2, d4 :: Qd 0x08000800 0x08000800 Qm (i16)0x000000ef +vclz.i8 d2, d4 :: Qd 0x03030303 0x03030303 Qm (i16)0x000000ef vclz.i16 d2, d4 :: Qd 0x00080008 0x00080008 Qm (i16)0x000000ef +vclz.i16 d2, d4 :: Qd 0x00030003 0x00030003 Qm (i16)0x000000ef vclz.i32 d2, d4 :: Qd 0x00000008 0x00000008 Qm (i16)0x000000ef +vclz.i32 d2, d4 :: Qd 0x00000003 0x00000003 Qm (i16)0x000000ef ---- VSLI ---- vsli.16 d0, d1, #1 :: Qd 0x0001000f 0x0001000f Qm (i32)0x00000007 +vsli.16 d0, d1, #1 :: Qd 0x2a3b323b 0x28393e39 Qm (i32)0x00000007 vsli.16 d3, d4, #2 :: Qd 0xfffdfe11 0xfffdfe11 Qm (i32)0xffffff84 +vsli.16 d3, d4, #2 :: Qd 0x54776477 0x50737c73 Qm (i32)0xffffff84 vsli.32 d2, d5, #31 :: Qd 0xd5555555 0xd5555555 Qm (i32)0xffffffff +vsli.32 d2, d5, #31 :: Qd 0x931b1a1b 0x121f1e1f Qm (i32)0xffffffff vsli.8 d6, d7, #7 :: Qd 0x5555d5d5 0x5555d5d5 Qm (i32)0x0000ffff +vsli.8 d6, d7, #7 :: Qd 0x939b9a9b 0x121f9e1f Qm (i32)0x0000ffff vsli.16 d8, d9, #12 :: Qd 0xf5556555 0xf5556555 Qm (i32)0xfffffff6 +vsli.16 d8, d9, #12 :: Qd 0xd31bda1b 0xc21fce1f Qm (i32)0xfffffff6 vsli.32 d10, d11, #5 :: Qd 0x0004ff55 0x0004ff55 Qm (i32)0x000027fa +vsli.32 d10, d11, #5 :: Qd 0xa3a323bb 0x8383e39f Qm (i32)0x000027fa vsli.8 d12, d13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vsli.8 d12, d13, #1 :: Qd 0x2b3b323b 0x28393e39 Qm (i32)0xffffffff vsli.16 d14, d15, #11 :: Qd 0xfd55fd55 0xfd55fd55 Qm (i32)0xffffffff +vsli.16 d14, d15, #11 :: Qd 0xeb1bea1b 0xe21fe61f Qm (i32)0xffffffff vsli.32 d10, d11, #9 :: Qd 0x0007d155 0x0007d155 Qm (i32)0x000003e8 +vsli.32 d10, d11, #9 :: Qd 0x3a323a1b 0x383e381f Qm (i32)0x000003e8 vsli.8 d7, d13, #7 :: Qd 0xd5d5d5d5 0xd5d5d5d5 Qm (i32)0xffffffff +vsli.8 d7, d13, #7 :: Qd 0x939b9a9b 0x121f9e1f Qm (i32)0xffffffff vsli.16 d8, d1, #1 :: Qd 0x0001579f 0x0001579f Qm (i32)0x0000abcf +vsli.16 d8, d1, #1 :: Qd 0x2a3b323b 0x28393e39 Qm (i32)0x0000abcf vsli.32 d12, d3, #15 :: Qd 0xff285555 0xff285555 Qm (i32)0xfffffe50 +vsli.32 d12, d3, #15 :: Qd 0x8c8e9a1b 0x0f8e1e1f Qm (i32)0xfffffe50 vsli.64 d0, d1, #42 :: Qd 0xfffffd55 0x55555555 Qm (i32)0xffffffff +vsli.64 d0, d1, #42 :: Qd 0x707c721b 0x121f1e1f Qm (i32)0xffffffff vsli.64 d6, d7, #12 :: Qd 0x00fac000 0x00fac555 Qm (i32)0x00000fac +vsli.64 d6, d7, #12 :: Qd 0xd191d141 0xc1f1ce1f Qm (i32)0x00000fac vsli.64 d8, d4, #9 :: Qd 0x0069f000 0x0069f155 Qm (i32)0x000034f8 +vsli.64 d8, d4, #9 :: Qd 0x3a323a28 0x383e381f Qm (i32)0x000034f8 vsli.64 d9, d12, #11 :: Qd 0x0c0cb000 0x0c0cb555 Qm (i32)0x00018196 +vsli.64 d9, d12, #11 :: Qd 0xe8c8e8a0 0xe0f8e61f Qm (i32)0x00018196 ---- VPADD ---- vpadd.i32 d0, d1, d2 :: Qd 0x000000f0 0x00000030 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpadd.i32 d0, d1, d2 :: Qd 0x000000f0 0x253a383a Qm (i32)0x00000018 Qn (i32)0x00000078 vpadd.i32 d0, d1, d2 :: Qd 0x000000f0 0x00000118 Qm (i32)0x0000008c Qn (i32)0x00000078 +vpadd.i32 d0, d1, d2 :: Qd 0x000000f0 0x253a383a Qm (i32)0x0000008c Qn (i32)0x00000078 vpadd.i16 d0, d1, d2 :: Qd 0x00780078 0x008c008c Qm (i32)0x0000008c Qn (i32)0x00000078 +vpadd.i16 d0, d1, d2 :: Qd 0x00780078 0x2d36303e Qm (i32)0x0000008c Qn (i32)0x00000078 vpadd.i8 d0, d1, d2 :: Qd 0x00780078 0x008c008c Qm (i32)0x0000008c Qn (i32)0x00000078 +vpadd.i8 d0, d1, d2 :: Qd 0x00780078 0x2e35313d Qm (i32)0x0000008c Qn (i32)0x00000078 vpadd.i8 d0, d1, d2 :: Qd 0x80028002 0x80018001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpadd.i8 d0, d1, d2 :: Qd 0x80028002 0x2e35313d Qm (i32)0x80000001 Qn (i32)0x80000002 vpadd.i16 d0, d1, d2 :: Qd 0x80028002 0x80018001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpadd.i16 d0, d1, d2 :: Qd 0x80028002 0x2d36303e Qm (i32)0x80000001 Qn (i32)0x80000002 vpadd.i32 d0, d1, d2 :: Qd 0x00000004 0x00000002 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpadd.i32 d0, d1, d2 :: Qd 0x00000004 0x253a383a Qm (i32)0x80000001 Qn (i32)0x80000002 vpadd.i32 d10, d11, d12 :: Qd 0x000000f0 0x00000030 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpadd.i32 d10, d11, d12 :: Qd 0x000000f0 0x253a383a Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VPADDL ---- vpaddl.u32 d0, d1 :: Qd 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.u32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x00000018 vpaddl.u32 d0, d1 :: Qd 0x00000000 0x00000118 Qm (i32)0x0000008c +vpaddl.u32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x0000008c vpaddl.u16 d0, d1 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.u16 d0, d1 :: Qd 0x00002e3a 0x00003338 Qm (i32)0x0000008c vpaddl.u8 d0, d1 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.u8 d0, d1 :: Qd 0x00320036 0x0030003b Qm (i32)0x0000008c vpaddl.u8 d0, d1 :: Qd 0x00800001 0x00800001 Qm (i32)0x80000001 +vpaddl.u8 d0, d1 :: Qd 0x00320036 0x0030003b Qm (i32)0x80000001 vpaddl.u16 d0, d1 :: Qd 0x00008001 0x00008001 Qm (i32)0x80000001 +vpaddl.u16 d0, d1 :: Qd 0x00002e3a 0x00003338 Qm (i32)0x80000001 vpaddl.u32 d0, d1 :: Qd 0x00000001 0x00000002 Qm (i32)0x80000001 +vpaddl.u32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x80000001 vpaddl.u32 d10, d11 :: Qd 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.u32 d10, d11 :: Qd 0x00000000 0x29393839 Qm (i32)0x00000018 vpaddl.s32 d0, d1 :: Qd 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.s32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x00000018 vpaddl.s32 d0, d1 :: Qd 0x00000000 0x00000118 Qm (i32)0x0000008c +vpaddl.s32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x0000008c vpaddl.s16 d0, d1 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c +vpaddl.s16 d0, d1 :: Qd 0x00002e3a 0x00003338 Qm (i32)0x0000008c vpaddl.s8 d0, d1 :: Qd 0x0000ff8c 0x0000ff8c Qm (i32)0x0000008c +vpaddl.s8 d0, d1 :: Qd 0x00320036 0x0030003b Qm (i32)0x0000008c vpaddl.s8 d0, d1 :: Qd 0xff800001 0xff800001 Qm (i32)0x80000001 +vpaddl.s8 d0, d1 :: Qd 0x00320036 0x0030003b Qm (i32)0x80000001 vpaddl.s16 d0, d1 :: Qd 0xffff8001 0xffff8001 Qm (i32)0x80000001 +vpaddl.s16 d0, d1 :: Qd 0x00002e3a 0x00003338 Qm (i32)0x80000001 vpaddl.s32 d0, d1 :: Qd 0xffffffff 0x00000002 Qm (i32)0x80000001 +vpaddl.s32 d0, d1 :: Qd 0x00000000 0x29393839 Qm (i32)0x80000001 vpaddl.s32 d10, d11 :: Qd 0x00000000 0x00000030 Qm (i32)0x00000018 +vpaddl.s32 d10, d11 :: Qd 0x00000000 0x29393839 Qm (i32)0x00000018 ---- VPADAL ---- vpadal.u32 d0, d1 :: Qd 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.u32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x00000018 vpadal.u32 d0, d1 :: Qd 0x55555555 0x5555566d Qm (i32)0x0000008c +vpadal.u32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x0000008c vpadal.u16 d0, d1 :: Qd 0x555555e1 0x555555e1 Qm (i32)0x0000008c +vpadal.u16 d0, d1 :: Qd 0x131b4855 0x121f5157 Qm (i32)0x0000008c vpadal.u8 d0, d1 :: Qd 0x566d566d 0x566d566d Qm (i8)0x0000008c +vpadal.u8 d0, d1 :: Qd 0x134d1a51 0x124f1e5a Qm (i8)0x0000008c vpadal.u8 d0, d1 :: Qd 0x55d55556 0x55d55556 Qm (i32)0x80000001 +vpadal.u8 d0, d1 :: Qd 0x134d1a51 0x124f1e5a Qm (i32)0x80000001 vpadal.u16 d0, d1 :: Qd 0x5555d556 0x5555d556 Qm (i32)0x80000001 +vpadal.u16 d0, d1 :: Qd 0x131b4855 0x121f5157 Qm (i32)0x80000001 vpadal.u32 d0, d1 :: Qd 0x55555556 0x55555557 Qm (i32)0x80000001 +vpadal.u32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x80000001 vpadal.u32 d10, d11 :: Qd 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.u32 d10, d11 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x00000018 vpadal.s32 d0, d1 :: Qd 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.s32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x00000018 vpadal.s32 d0, d1 :: Qd 0x55555555 0x5555566d Qm (i32)0x0000008c +vpadal.s32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x0000008c vpadal.s16 d0, d1 :: Qd 0x555555e1 0x555555e1 Qm (i32)0x0000008c +vpadal.s16 d0, d1 :: Qd 0x131b4855 0x121f5157 Qm (i32)0x0000008c vpadal.s8 d0, d1 :: Qd 0x546d546d 0x546d546d Qm (i8)0x0000008c +vpadal.s8 d0, d1 :: Qd 0x134d1a51 0x124f1e5a Qm (i8)0x0000008c vpadal.s8 d0, d1 :: Qd 0x54d55556 0x54d55556 Qm (i32)0x80000001 +vpadal.s8 d0, d1 :: Qd 0x134d1a51 0x124f1e5a Qm (i32)0x80000001 vpadal.s16 d0, d1 :: Qd 0x5554d556 0x5554d556 Qm (i32)0x80000001 +vpadal.s16 d0, d1 :: Qd 0x131b4855 0x121f5157 Qm (i32)0x80000001 vpadal.s32 d0, d1 :: Qd 0x55555554 0x55555557 Qm (i32)0x80000001 +vpadal.s32 d0, d1 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x80000001 vpadal.s32 d10, d11 :: Qd 0x55555555 0x55555585 Qm (i32)0x00000018 +vpadal.s32 d10, d11 :: Qd 0x131b1a1b 0x3b585658 Qm (i32)0x00000018 ---- VZIP ---- -vzip.32 d0, d1 :: Qm 0x34343434 0x12121212 Qn 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vzip.16 d1, d0 :: Qm 0x12123434 0x12123434 Qn 0x12123434 0x12123434 Qm (i8)0x00000012 Qn (i8)0x00000034 -vzip.8 d10, d11 :: Qm 0x34123412 0x34123412 Qn 0x34123412 0x34123412 Qm (i8)0x00000012 Qn (i8)0x00000034 -vzip.32 d0, d1 :: Qm 0x0a0b0c0d 0x12345678 Qn 0x0a0b0c0d 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vzip.16 d1, d0 :: Qm 0x12340a0b 0x56780c0d Qn 0x12340a0b 0x56780c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vzip.8 d30, d31 :: Qm 0x0a120b34 0x0c560d78 Qn 0x0a120b34 0x0c560d78 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.16 d1, d0 :: Qm 0x131b3434 0x1a1b3434 Qn 0x121f3434 0x1e1f3434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.16 d1, d0 :: Qm 0x131b3434 0x1a1b3434 Qn 0x121f3434 0x1e1f3434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.8 d10, d11 :: Qm 0x3412341f 0x341e341f Qn 0x3413341b 0x341a341b Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.8 d10, d11 :: Qm 0x3412341f 0x341e341f Qn 0x3413341b 0x341a341b Qm (i8)0x00000012 Qn (i8)0x00000034 +vzip.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.16 d1, d0 :: Qm 0x131b0a0b 0x1a1b0c0d Qn 0x121f0a0b 0x1e1f0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.16 d1, d0 :: Qm 0x131b0a0b 0x1a1b0c0d Qn 0x121f0a0b 0x1e1f0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.8 d30, d31 :: Qm 0x0a120b1f 0x0c1e0d1f Qn 0x0a130b1b 0x0c1a0d1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vzip.8 d30, d31 :: Qm 0x0a120b1f 0x0c1e0d1f Qn 0x0a130b1b 0x0c1a0d1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VUZP ---- -vuzp.32 d0, d1 :: Qm 0x34343434 0x12121212 Qn 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vuzp.16 d1, d0 :: Qm 0x12121212 0x34343434 Qn 0x12121212 0x34343434 Qm (i8)0x00000012 Qn (i8)0x00000034 -vuzp.8 d10, d11 :: Qm 0x34343434 0x12121212 Qn 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vuzp.32 d0, d1 :: Qm 0x0a0b0c0d 0x12345678 Qn 0x0a0b0c0d 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vuzp.16 d1, d0 :: Qm 0x12341234 0x0a0b0a0b Qn 0x56785678 0x0c0d0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vuzp.8 d30, d31 :: Qm 0x0b0d0b0d 0x34783478 Qn 0x0a0c0a0c 0x12561256 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.16 d1, d0 :: Qm 0x131b121f 0x34343434 Qn 0x1a1b1e1f 0x34343434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.16 d1, d0 :: Qm 0x131b121f 0x34343434 Qn 0x1a1b1e1f 0x34343434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.8 d10, d11 :: Qm 0x34343434 0x1b1b1f1f Qn 0x34343434 0x131a121e Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.8 d10, d11 :: Qm 0x34343434 0x1b1b1f1f Qn 0x34343434 0x131a121e Qm (i8)0x00000012 Qn (i8)0x00000034 +vuzp.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.16 d1, d0 :: Qm 0x131b121f 0x0a0b0a0b Qn 0x1a1b1e1f 0x0c0d0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.16 d1, d0 :: Qm 0x131b121f 0x0a0b0a0b Qn 0x1a1b1e1f 0x0c0d0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.8 d30, d31 :: Qm 0x0b0d0b0d 0x1b1b1f1f Qn 0x0a0c0a0c 0x131a121e Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vuzp.8 d30, d31 :: Qm 0x0b0d0b0d 0x1b1b1f1f Qn 0x0a0c0a0c 0x131a121e Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VTRN ---- -vtrn.32 d0, d1 :: Qm 0x34343434 0x12121212 Qn 0x34343434 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vtrn.16 d1, d0 :: Qm 0x12123434 0x12123434 Qn 0x12123434 0x12123434 Qm (i8)0x00000012 Qn (i8)0x00000034 -vtrn.8 d10, d11 :: Qm 0x34123412 0x34123412 Qn 0x34123412 0x34123412 Qm (i8)0x00000012 Qn (i8)0x00000034 -vtrn.32 d0, d1 :: Qm 0x0a0b0c0d 0x12345678 Qn 0x0a0b0c0d 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vtrn.16 d1, d0 :: Qm 0x12340a0b 0x12340a0b Qn 0x56780c0d 0x56780c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vtrn.8 d30, d31 :: Qm 0x0b340d78 0x0b340d78 Qn 0x0a120c56 0x0a120c56 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.32 d0, d1 :: Qm 0x34343434 0x121f1e1f Qn 0x34343434 0x131b1a1b Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.16 d1, d0 :: Qm 0x131b3434 0x121f3434 Qn 0x1a1b3434 0x1e1f3434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.16 d1, d0 :: Qm 0x131b3434 0x121f3434 Qn 0x1a1b3434 0x1e1f3434 Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.8 d10, d11 :: Qm 0x341b341b 0x341f341f Qn 0x3413341a 0x3412341e Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.8 d10, d11 :: Qm 0x341b341b 0x341f341f Qn 0x3413341a 0x3412341e Qm (i8)0x00000012 Qn (i8)0x00000034 +vtrn.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.32 d0, d1 :: Qm 0x0a0b0c0d 0x121f1e1f Qn 0x0a0b0c0d 0x131b1a1b Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.16 d1, d0 :: Qm 0x131b0a0b 0x121f0a0b Qn 0x1a1b0c0d 0x1e1f0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.16 d1, d0 :: Qm 0x131b0a0b 0x121f0a0b Qn 0x1a1b0c0d 0x1e1f0c0d Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.8 d30, d31 :: Qm 0x0b1b0d1b 0x0b1f0d1f Qn 0x0a130c1a 0x0a120c1e Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vtrn.8 d30, d31 :: Qm 0x0b1b0d1b 0x0b1f0d1f Qn 0x0a130c1a 0x0a120c1e Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VSWP ---- -vswp d0, d1 :: Qm 0x34343434 0x34343434 Qn 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vswp d1, d0 :: Qm 0x34343434 0x34343434 Qn 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vswp d10, d11 :: Qm 0x34343434 0x34343434 Qn 0x12121212 0x12121212 Qm (i8)0x00000012 Qn (i8)0x00000034 -vswp d0, d1 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vswp d1, d0 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d -vswp d30, d31 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x12345678 0x12345678 Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d0, d1 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d0, d1 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d1, d0 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d1, d0 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d10, d11 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d10, d11 :: Qm 0x34343434 0x34343434 Qn 0x131b1a1b 0x121f1e1f Qm (i8)0x00000012 Qn (i8)0x00000034 +vswp d0, d1 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d0, d1 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d1, d0 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d1, d0 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d30, d31 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d +vswp d30, d31 :: Qm 0x0a0b0c0d 0x0a0b0c0d Qn 0x131b1a1b 0x121f1e1f Qm (i32)0x12345678 Qn (i32)0x0a0b0c0d ---- VSHRN ---- vshrn.i16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i16 d0, q1, #1 :: Qd 0x16959717 0x8e8e0e8e Qm (i32)0xffffffff vshrn.i16 d3, q4, #2 :: Qd 0xffe1ffe1 0xffe1ffe1 Qm (i32)0xffffff84 +vshrn.i16 d3, q4, #2 :: Qd 0x0bcacb8b 0x474707c7 Qm (i32)0xffffff84 vshrn.i32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i32 d2, q5, #10 :: Qd 0x0b0acbcb 0x47460707 Qm (i32)0xffffffff vshrn.i32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff +vshrn.i32 d2, q5, #1 :: Qd 0x15959717 0x8c8e0f8e Qm (i32)0x7fffffff vshrn.i64 d6, q7, #7 :: Qd 0xfe0001ff 0xfe0001ff Qm (i32)0x0000ffff +vshrn.i64 d6, q7, #7 :: Qd 0x56465e5c 0x3a28383e Qm (i32)0x0000ffff vshrn.i16 d8, q9, #8 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff6 +vshrn.i16 d8, q9, #8 :: Qd 0x242b232e 0x1519141f Qm (i32)0xfffffff6 vshrn.i32 d10, q11, #5 :: Qd 0x013f013f 0x013f013f Qm (i32)0x000027fa +vshrn.i32 d10, q11, #5 :: Qd 0x61597971 0xe8c8e0f8 Qm (i32)0x000027fa vshrn.i64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i64 d12, q13, #1 :: Qd 0x91979717 0x8a0e0f8e Qm (i32)0xffffffff vshrn.i16 d14, q15, #6 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i16 d14, q15, #6 :: Qd 0x90ac8cb8 0x5464507c Qm (i32)0xffffffff vshrn.i32 d10, q11, #9 :: Qd 0x00010001 0x00010001 Qm (i32)0x000003e8 +vshrn.i32 d10, q11, #9 :: Qd 0x16159797 0x8e8c0e0f Qm (i32)0x000003e8 vshrn.i64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i64 d7, q13, #7 :: Qd 0x56465e5c 0x3a28383e Qm (i32)0xffffffff vshrn.i16 d8, q1, #1 :: Qd 0x00e700e7 0x00e700e7 Qm (i32)0x0000abcf +vshrn.i16 d8, q1, #1 :: Qd 0x16959717 0x8e8e0e8e Qm (i32)0x0000abcf vshrn.i32 d12, q3, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffe50 +vshrn.i32 d12, q3, #15 :: Qd 0x4858465e 0x2a3a2838 Qm (i32)0xfffffe50 vshrn.i64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i64 d0, q1, #22 :: Qd 0xb0acac8c 0x74647450 Qm (i32)0xffffffff vshrn.i64 d6, q7, #12 :: Qd 0xfac00000 0xfac00000 Qm (i32)0x00000fac +vshrn.i64 d6, q7, #12 :: Qd 0xb2b232f2 0x91d141c1 Qm (i32)0x00000fac vshrn.i64 d8, q4, #9 :: Qd 0x7c00001a 0x7c00001a Qm (i32)0x000034f8 +vshrn.i64 d8, q4, #9 :: Qd 0x95919797 0x8e8a0e0f Qm (i32)0x000034f8 vshrn.i64 d9, q12, #11 :: Qd 0x32c00030 0x32c00030 Qm (i32)0x00018196 +vshrn.i64 d9, q12, #11 :: Qd 0x656465e5 0x23a28383 Qm (i32)0x00018196 ---- VDUP ---- vdup.8 d12, d2[0] :: Qd 0x57575757 0x57575757 Qm (i32)0x0abc4657 +vdup.8 d12, d2[0] :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i32)0x0abc4657 vdup.8 d0, d3[2] :: Qd 0x07070707 0x07070707 Qm (i32)0x0007a1b3 +vdup.8 d0, d3[2] :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i32)0x0007a1b3 vdup.8 d1, d0[7] :: Qd 0x00000000 0x00000000 Qm (i32)0x00713aaa +vdup.8 d1, d0[7] :: Qd 0x15151515 0x15151515 Qm (i32)0x00713aaa vdup.8 d10, d4[3] :: Qd 0x00000000 0x00000000 Qm (i32)0x000aa713 +vdup.8 d10, d4[3] :: Qd 0x14141414 0x14141414 Qm (i32)0x000aa713 vdup.8 d4, d28[4] :: Qd 0xc3c3c3c3 0xc3c3c3c3 Qm (i32)0x0007b1c3 +vdup.8 d4, d28[4] :: Qd 0x1d1d1d1d 0x1d1d1d1d Qm (i32)0x0007b1c3 vdup.16 d17, d19[1] :: Qd 0x07130713 0x07130713 Qm (i32)0x0713ffff +vdup.16 d17, d19[1] :: Qd 0x141c141c 0x141c141c Qm (i32)0x0713ffff vdup.16 d15, d31[2] :: Qd 0x00fa00fa 0x00fa00fa Qm (i32)0x007f00fa +vdup.16 d15, d31[2] :: Qd 0x191d191d 0x191d191d Qm (i32)0x007f00fa vdup.16 d6, d2[0] :: Qd 0xbcdebcde 0xbcdebcde Qm (i32)0x0ffabcde +vdup.16 d6, d2[0] :: Qd 0x1f1c1f1c 0x1f1c1f1c Qm (i32)0x0ffabcde vdup.16 d8, d22[3] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000713 +vdup.16 d8, d22[3] :: Qd 0x151d151d 0x151d151d Qm (i32)0x00000713 vdup.16 d9, d2[0] :: Qd 0x07130713 0x07130713 Qm (i32)0x00000713 +vdup.16 d9, d2[0] :: Qd 0x1f1c1f1c 0x1f1c1f1c Qm (i32)0x00000713 vdup.32 d10, d17[1] :: Qd 0x00000713 0x00000713 Qm (i32)0x00000713 +vdup.32 d10, d17[1] :: Qd 0x151d191d 0x151d191d Qm (i32)0x00000713 vdup.32 d15, d11[0] :: Qd 0x00000003 0x00000003 Qm (i32)0x00000003 +vdup.32 d15, d11[0] :: Qd 0x141c1f1c 0x141c1f1c Qm (i32)0x00000003 vdup.32 d30, d29[1] :: Qd 0xf00000aa 0xf00000aa Qm (i32)0xf00000aa +vdup.32 d30, d29[1] :: Qd 0x151d191d 0x151d191d Qm (i32)0xf00000aa vdup.32 d22, d0[1] :: Qd 0x0000000f 0x0000000f Qm (i32)0x0000000f +vdup.32 d22, d0[1] :: Qd 0x151d191d 0x151d191d Qm (i32)0x0000000f vdup.32 d13, d13[0] :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vdup.32 d13, d13[0] :: Qd 0x141c1f1c 0x141c1f1c Qm (i32)0xffffffff ---- VQDMULH ---- vqdmulh.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 d0, d1, d2 :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 d6, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 d6, d7, d8 :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmulh.s16 d9, d11, d12 :: Qd 0x00000002 0x00000002 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 d9, d11, d12 :: Qd 0x0000003a 0x00000043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmulh.s16 d4, d5, d6 :: Qd 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9 :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 d7, d8, d9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s16 d4, d5, d6 :: Qd 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9 :: Qd 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 d7, d8, d9 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmulh.s16 d4, d5, d6 :: Qd 0x0000003f 0x0000003f Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9 :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 d7, d8, d9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s32 d10, d11, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 d10, d11, d15 :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 d10, d30, d31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s32 d10, d30, d31 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 d10, d30, d31 :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s16 d10, d30, d31 :: Qd 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s32 d10, d30, d31 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 d10, d30, d31 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 d10, d30, d31 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 d10, d30, d31 :: Qd 0x098d0000 0x090f0000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQDMULH (by scalar) ---- vqdmulh.s32 d0, d1, d6[0] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 d0, d1, d6[0] :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 d6, d7, d1[1] :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqdmulh.s32 d6, d7, d1[1] :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqdmulh.s16 d9, d11, d7[0] :: Qd 0x00000002 0x00000002 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqdmulh.s16 d9, d11, d7[0] :: Qd 0x002a003a 0x00280043 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqdmulh.s16 d4, d5, d6[0] :: Qd 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6[0] :: Qd 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9[1] :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 d7, d8, d9[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s16 d4, d5, d6[1] :: Qd 0xffffe50b 0xffffe50b Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6[1] :: Qd 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9[0] :: Qd 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqdmulh.s32 d7, d8, d9[0] :: Qd 0x00000001 0x00000001 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqdmulh.s16 d4, d5, d6[2] :: Qd 0x0400003f 0x0400003f Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqdmulh.s16 d4, d5, d6[2] :: Qd 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqdmulh.s32 d7, d8, d9[0] :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqdmulh.s32 d7, d8, d9[0] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqdmulh.s32 d10, d31, d15[0] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqdmulh.s32 d10, d31, d15[0] :: Qd 0x00000011 0x00000010 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqdmulh.s32 d10, d14, d15[1] :: Qd 0xffffff88 0xffffff88 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 d10, d14, d15[1] :: Qd 0x00000011 0x00000010 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 d10, d14, d7[3] :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqdmulh.s16 d10, d14, d7[3] :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s32 d10, d14, d15[1] :: Qd 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqdmulh.s32 d10, d14, d15[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqdmulh.s16 d31, d14, d7[1] :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqdmulh.s16 d31, d14, d7[1] :: Qd 0x098d0d0d 0x090f0f0f Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VSHRN ---- vshrn.i64 d2, q2, #1 :: Qd 0x855e232b 0x855e232b Qm (i32)0x0abc4657 +vshrn.i64 d2, q2, #1 :: Qd 0x91979717 0x8a0e0f8e Qm (i32)0x0abc4657 vshrn.i64 d3, q3, #0 :: Qd 0x0007a1b3 0x0007a1b3 Qm (i32)0x0007a1b3 +vshrn.i64 d3, q3, #0 :: Qd 0x232f2e2f 0x141c1f1c Qm (i32)0x0007a1b3 vshrn.i64 d1, q0, #3 :: Qd 0x400e2755 0x400e2755 Qm (i32)0x00713aaa +vshrn.i64 d1, q0, #3 :: Qd 0x6465e5c5 0xa28383e3 Qm (i32)0x00713aaa vshrn.i64 d0, q4, #5 :: Qd 0x98005538 0x98005538 Qm (i32)0x000aa713 +vshrn.i64 d0, q4, #5 :: Qd 0x59197971 0xe8a0e0f8 Qm (i32)0x000aa713 vshrn.i64 d4, q8, #11 :: Qd 0x386000f6 0x386000f6 Qm (i32)0x0007b1c3 +vshrn.i64 d4, q8, #11 :: Qd 0x656465e5 0x23a28383 Qm (i32)0x0007b1c3 vshrn.i16 d7, q12, #6 :: Qd 0x1cff1cff 0x1cff1cff Qm (i32)0x0713ffff +vshrn.i16 d7, q12, #6 :: Qd 0x90ac8cb8 0x5464507c Qm (i32)0x0713ffff vshrn.i16 d15, q11, #2 :: Qd 0x1f3e1f3e 0x1f3e1f3e Qm (i32)0x007f00fa +vshrn.i16 d15, q11, #2 :: Qd 0x0bcacb8b 0x474707c7 Qm (i32)0x007f00fa vshrn.i16 d6, q2, #4 :: Qd 0x00ab00ab 0x00ab00ab Qm (i32)0x000ffabc +vshrn.i16 d6, q2, #4 :: Qd 0x42b232e2 0x519141f1 Qm (i32)0x000ffabc vshrn.i16 d8, q12, #3 :: Qd 0x00e200e2 0x00e200e2 Qm (i32)0x00000713 +vshrn.i16 d8, q12, #3 :: Qd 0x856565c5 0xa32383e3 Qm (i32)0x00000713 vshrn.i16 d9, q2, #7 :: Qd 0x000e000e 0x000e000e Qm (i32)0x00000713 +vshrn.i16 d9, q2, #7 :: Qd 0x4856465c 0x2a32283e Qm (i32)0x00000713 vshrn.i32 d10, q13, #2 :: Qd 0x01c401c4 0x01c401c4 Qm (i32)0x00000713 +vshrn.i32 d10, q13, #2 :: Qd 0x0acacb8b 0x464707c7 Qm (i32)0x00000713 vshrn.i32 d15, q11, #1 :: Qd 0x00010001 0x00010001 Qm (i32)0x00000003 +vshrn.i32 d15, q11, #1 :: Qd 0x15959717 0x8c8e0f8e Qm (i32)0x00000003 vshrn.i32 d10, q9, #5 :: Qd 0x00050005 0x00050005 Qm (i32)0xf00000aa +vshrn.i32 d10, q9, #5 :: Qd 0x61597971 0xe8c8e0f8 Qm (i32)0xf00000aa vshrn.i32 d12, q0, #6 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f +vshrn.i32 d12, q0, #6 :: Qd 0xb0acbcb8 0x7464707c Qm (i32)0x0000000f vshrn.i32 d13, q13, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff +vshrn.i32 d13, q13, #2 :: Qd 0x0acacb8b 0x464707c7 Qm (i32)0xffffffff ---- VQSHRN ---- vqshrn.s16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s16 d0, q1, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr 08000000 vqshrn.s16 d3, q4, #2 :: Qd 0xffe1ffe1 0xffe1ffe1 Qm (i32)0xffffff84 fpscr 00000000 +vqshrn.s16 d3, q4, #2 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffff84 fpscr 08000000 vqshrn.s32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s32 d2, q5, #10 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr 08000000 vqshrn.s32 d2, q5, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x7fffffff fpscr 08000000 +vqshrn.s32 d2, q5, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x7fffffff fpscr 08000000 +vqshrn.s16 d2, q5, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i16)0x00007fff fpscr 08000000 vqshrn.s16 d2, q5, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i16)0x00007fff fpscr 08000000 vqshrn.s64 d6, q7, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x0000ffff fpscr 08000000 +vqshrn.s64 d6, q7, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x0000ffff fpscr 08000000 vqshrn.s16 d8, q9, #8 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff6 fpscr 00000000 +vqshrn.s16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqshrn.s32 d10, q11, #5 :: Qd 0x013f013f 0x013f013f Qm (i32)0x000027fa fpscr 00000000 +vqshrn.s32 d10, q11, #5 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x000027fa fpscr 08000000 vqshrn.s64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s64 d12, q13, #1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.s16 d14, q15, #6 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqshrn.s32 d10, q11, #9 :: Qd 0x00010001 0x00010001 Qm (i32)0x000003e8 fpscr 00000000 +vqshrn.s32 d10, q11, #9 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x000003e8 fpscr 08000000 vqshrn.s64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s64 d7, q13, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.s16 d8, q1, #1 :: Qd 0x00800080 0x00800080 Qm (i32)0x0000abcf fpscr 08000000 +vqshrn.s16 d8, q1, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x0000abcf fpscr 08000000 vqshrn.s32 d8, q1, #1 :: Qd 0x55e755e7 0x55e755e7 Qm (i32)0x0000abcf fpscr 00000000 +vqshrn.s32 d8, q1, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x0000abcf fpscr 08000000 vqshrn.s32 d12, q3, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffe50 fpscr 00000000 +vqshrn.s32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 vqshrn.s64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 00000000 +vqshrn.s64 d0, q1, #22 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.s64 d6, q7, #12 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000fac fpscr 08000000 vqshrn.s64 d6, q7, #12 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000fac fpscr 08000000 vqshrn.s64 d8, q4, #9 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x000034f8 fpscr 08000000 +vqshrn.s64 d8, q4, #9 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x000034f8 fpscr 08000000 +vqshrn.s64 d9, q12, #11 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00018196 fpscr 08000000 vqshrn.s64 d9, q12, #11 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00018196 fpscr 08000000 vqshrn.u16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.u16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.u16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqshrn.u16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqshrn.u32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.u32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.u32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqshrn.u32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqshrn.u16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqshrn.u16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqshrn.u64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqshrn.u64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqshrn.u16 d8, q9, #8 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff6 fpscr 00000000 +vqshrn.u16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqshrn.u32 d10, q11, #5 :: Qd 0x013f013f 0x013f013f Qm (i32)0x000027fa fpscr 00000000 +vqshrn.u32 d10, q11, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000027fa fpscr 08000000 +vqshrn.u64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u16 d14, q15, #6 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrn.u16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqshrn.u32 d10, q11, #9 :: Qd 0x00010001 0x00010001 Qm (i32)0x000003e8 fpscr 00000000 +vqshrn.u32 d10, q11, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000003e8 fpscr 08000000 +vqshrn.u64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u16 d8, q1, #1 :: Qd 0x00ff00ff 0x00ff00ff Qm (i32)0x0000abcf fpscr 08000000 +vqshrn.u16 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqshrn.u32 d8, q1, #1 :: Qd 0x55e755e7 0x55e755e7 Qm (i32)0x0000abcf fpscr 00000000 +vqshrn.u32 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqshrn.u32 d12, q3, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffe50 fpscr 08000000 +vqshrn.u32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 +vqshrn.u64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrn.u64 d6, q7, #12 :: Qd 0xfac00000 0xfac00000 Qm (i32)0x00000fac fpscr 00000000 +vqshrn.u64 d6, q7, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000fac fpscr 08000000 +vqshrn.u64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 vqshrn.u64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 vqshrn.u64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 +vqshrn.u64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 ---- VQSHRUN ---- vqshrun.s16 d0, q1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrun.s16 d3, q4, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff84 fpscr 08000000 +vqshrun.s16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqshrun.s32 d2, q5, #10 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqshrun.s32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqshrun.s16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqshrun.s16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqshrun.s64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqshrun.s64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqshrun.s16 d8, q9, #8 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffff6 fpscr 08000000 +vqshrun.s16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqshrun.s32 d10, q11, #5 :: Qd 0x013f013f 0x013f013f Qm (i32)0x000027fa fpscr 00000000 +vqshrun.s32 d10, q11, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000027fa fpscr 08000000 vqshrun.s64 d12, q13, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrun.s16 d14, q15, #6 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqshrun.s32 d10, q11, #9 :: Qd 0x00010001 0x00010001 Qm (i32)0x000003e8 fpscr 00000000 +vqshrun.s32 d10, q11, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000003e8 fpscr 08000000 vqshrun.s64 d7, q13, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrun.s16 d8, q1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000abcf fpscr 08000000 +vqshrun.s16 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqshrun.s32 d8, q1, #1 :: Qd 0x55e755e7 0x55e755e7 Qm (i32)0x0000abcf fpscr 00000000 +vqshrun.s32 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqshrun.s32 d12, q3, #15 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffe50 fpscr 08000000 +vqshrun.s32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 vqshrun.s64 d0, q1, #22 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 08000000 +vqshrun.s64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqshrun.s64 d6, q7, #12 :: Qd 0xfac00000 0xfac00000 Qm (i32)0x00000fac fpscr 00000000 +vqshrun.s64 d6, q7, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000fac fpscr 08000000 vqshrun.s64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 +vqshrun.s64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 +vqshrun.s64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 vqshrun.s64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 ---- VQRSHRN ---- vqrshrn.s16 d0, q1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s16 d0, q1, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffffff fpscr 08000000 vqrshrn.s16 d3, q4, #2 :: Qd 0x00e100e1 0x00e100e1 Qm (i32)0xffffff84 fpscr 00000000 +vqrshrn.s16 d3, q4, #2 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0xffffff84 fpscr 08000000 vqrshrn.s32 d2, q5, #10 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s32 d2, q5, #10 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.s32 d2, q5, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x7fffffff fpscr 08000000 +vqrshrn.s32 d2, q5, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x7fffffff fpscr 08000000 +vqrshrn.s16 d2, q5, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i16)0x00007fff fpscr 08000000 vqrshrn.s16 d2, q5, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i16)0x00007fff fpscr 08000000 vqrshrn.s64 d6, q7, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x0000ffff fpscr 08000000 +vqrshrn.s64 d6, q7, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x0000ffff fpscr 08000000 vqrshrn.s16 d8, q9, #8 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffff6 fpscr 00000000 +vqrshrn.s16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqrshrn.s32 d10, q11, #5 :: Qd 0x01400140 0x01400140 Qm (i32)0x000027fa fpscr 00000000 +vqrshrn.s32 d10, q11, #5 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x000027fa fpscr 08000000 vqrshrn.s64 d12, q13, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s64 d12, q13, #1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.s16 d14, q15, #6 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqrshrn.s32 d10, q11, #9 :: Qd 0x00020002 0x00020002 Qm (i32)0x000003e8 fpscr 00000000 +vqrshrn.s32 d10, q11, #9 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x000003e8 fpscr 08000000 vqrshrn.s64 d7, q13, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s64 d7, q13, #7 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.s16 d8, q1, #1 :: Qd 0x00800080 0x00800080 Qm (i32)0x0000abcf fpscr 08000000 +vqrshrn.s16 d8, q1, #1 :: Qd 0x7f7f7f7f 0x7f7f7f7f Qm (i32)0x0000abcf fpscr 08000000 vqrshrn.s32 d8, q1, #1 :: Qd 0x55e855e8 0x55e855e8 Qm (i32)0x0000abcf fpscr 00000000 +vqrshrn.s32 d8, q1, #1 :: Qd 0x7fff7fff 0x7fff7fff Qm (i32)0x0000abcf fpscr 08000000 vqrshrn.s32 d12, q3, #15 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffe50 fpscr 00000000 +vqrshrn.s32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 vqrshrn.s64 d0, q1, #22 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrn.s64 d0, q1, #22 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.s64 d6, q7, #12 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000fac fpscr 08000000 vqrshrn.s64 d6, q7, #12 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00000fac fpscr 08000000 vqrshrn.s64 d8, q4, #9 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x000034f8 fpscr 08000000 +vqrshrn.s64 d8, q4, #9 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x000034f8 fpscr 08000000 +vqrshrn.s64 d9, q12, #11 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00018196 fpscr 08000000 vqrshrn.s64 d9, q12, #11 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x00018196 fpscr 08000000 vqrshrn.u16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.u16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.u16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqrshrn.u16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqrshrn.u32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.u32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.u32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqrshrn.u32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqrshrn.u16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqrshrn.u16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqrshrn.u64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqrshrn.u64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqrshrn.u16 d8, q9, #8 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffff6 fpscr 08000000 +vqrshrn.u16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqrshrn.u32 d10, q11, #5 :: Qd 0x01400140 0x01400140 Qm (i32)0x000027fa fpscr 00000000 +vqrshrn.u32 d10, q11, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000027fa fpscr 08000000 +vqrshrn.u64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u16 d14, q15, #6 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrn.u16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqrshrn.u32 d10, q11, #9 :: Qd 0x00020002 0x00020002 Qm (i32)0x000003e8 fpscr 00000000 +vqrshrn.u32 d10, q11, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000003e8 fpscr 08000000 +vqrshrn.u64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u16 d8, q1, #1 :: Qd 0x00ff00ff 0x00ff00ff Qm (i32)0x0000abcf fpscr 08000000 +vqrshrn.u16 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqrshrn.u32 d8, q1, #1 :: Qd 0x55e855e8 0x55e855e8 Qm (i32)0x0000abcf fpscr 00000000 +vqrshrn.u32 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqrshrn.u32 d12, q3, #15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xfffffe50 fpscr 08000000 +vqrshrn.u32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 +vqrshrn.u64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrn.u64 d6, q7, #12 :: Qd 0xfac00001 0xfac00001 Qm (i32)0x00000fac fpscr 00000000 +vqrshrn.u64 d6, q7, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000fac fpscr 08000000 +vqrshrn.u64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 vqrshrn.u64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 vqrshrn.u64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 +vqrshrn.u64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 ---- VQRSHRUN ---- vqrshrun.s16 d0, q1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s16 d0, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrun.s16 d3, q4, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffff84 fpscr 08000000 +vqrshrun.s16 d3, q4, #2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffff84 fpscr 08000000 vqrshrun.s32 d2, q5, #10 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s32 d2, q5, #10 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 +vqrshrun.s32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqrshrun.s32 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fffffff fpscr 08000000 vqrshrun.s16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqrshrun.s16 d2, q5, #1 :: Qd 0xffffffff 0xffffffff Qm (i16)0x00007fff fpscr 08000000 +vqrshrun.s64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqrshrun.s64 d6, q7, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000ffff fpscr 08000000 vqrshrun.s16 d8, q9, #8 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffff6 fpscr 00000000 +vqrshrun.s16 d8, q9, #8 :: Qd 0x1519141f 0x131a121e Qm (i32)0xfffffff6 fpscr 00000000 vqrshrun.s32 d10, q11, #5 :: Qd 0x01400140 0x01400140 Qm (i32)0x000027fa fpscr 00000000 +vqrshrun.s32 d10, q11, #5 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000027fa fpscr 08000000 vqrshrun.s64 d12, q13, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s64 d12, q13, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrun.s16 d14, q15, #6 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s16 d14, q15, #6 :: Qd 0x5464507c 0x4c684878 Qm (i32)0xffffffff fpscr 00000000 vqrshrun.s32 d10, q11, #9 :: Qd 0x00020002 0x00020002 Qm (i32)0x000003e8 fpscr 00000000 +vqrshrun.s32 d10, q11, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000003e8 fpscr 08000000 vqrshrun.s64 d7, q13, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s64 d7, q13, #7 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrun.s16 d8, q1, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000abcf fpscr 08000000 +vqrshrun.s16 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqrshrun.s32 d8, q1, #1 :: Qd 0x55e855e8 0x55e855e8 Qm (i32)0x0000abcf fpscr 00000000 +vqrshrun.s32 d8, q1, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x0000abcf fpscr 08000000 vqrshrun.s32 d12, q3, #15 :: Qd 0x00000000 0x00000000 Qm (i32)0xfffffe50 fpscr 00000000 +vqrshrun.s32 d12, q3, #15 :: Qd 0x2a3a2838 0x2636243e Qm (i32)0xfffffe50 fpscr 00000000 vqrshrun.s64 d0, q1, #22 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff fpscr 00000000 +vqrshrun.s64 d0, q1, #22 :: Qd 0xffffffff 0xffffffff Qm (i32)0xffffffff fpscr 08000000 vqrshrun.s64 d6, q7, #12 :: Qd 0xfac00001 0xfac00001 Qm (i32)0x00000fac fpscr 00000000 +vqrshrun.s64 d6, q7, #12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000fac fpscr 08000000 vqrshrun.s64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 +vqrshrun.s64 d8, q4, #9 :: Qd 0xffffffff 0xffffffff Qm (i32)0x000034f8 fpscr 08000000 +vqrshrun.s64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 vqrshrun.s64 d9, q12, #11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00018196 fpscr 08000000 ---- VRSHRN ---- vrshrn.i64 d2, q2, #1 :: Qd 0x855e232c 0x855e232c Qm (i32)0x0abc4657 +vrshrn.i64 d2, q2, #1 :: Qd 0x91979718 0x8a0e0f8e Qm (i32)0x0abc4657 vrshrn.i64 d3, q3, #0 :: Qd 0x0007a1b3 0x0007a1b3 Qm (i32)0x0007a1b3 +vrshrn.i64 d3, q3, #0 :: Qd 0x232f2e2f 0x141c1f1c Qm (i32)0x0007a1b3 vrshrn.i64 d1, q0, #3 :: Qd 0x400e2755 0x400e2755 Qm (i32)0x00713aaa +vrshrn.i64 d1, q0, #3 :: Qd 0x6465e5c6 0xa28383e4 Qm (i32)0x00713aaa vrshrn.i64 d0, q4, #5 :: Qd 0x98005539 0x98005539 Qm (i32)0x000aa713 +vrshrn.i64 d0, q4, #5 :: Qd 0x59197971 0xe8a0e0f9 Qm (i32)0x000aa713 vrshrn.i64 d4, q8, #11 :: Qd 0x386000f6 0x386000f6 Qm (i32)0x0007b1c3 +vrshrn.i64 d4, q8, #11 :: Qd 0x656465e6 0x23a28384 Qm (i32)0x0007b1c3 vrshrn.i16 d7, q12, #6 :: Qd 0x1c001c00 0x1c001c00 Qm (i32)0x0713ffff +vrshrn.i16 d7, q12, #6 :: Qd 0x91ad8db9 0x5464507c Qm (i32)0x0713ffff vrshrn.i16 d15, q11, #2 :: Qd 0x203f203f 0x203f203f Qm (i32)0x007f00fa +vrshrn.i16 d15, q11, #2 :: Qd 0x0bcbcc8c 0x474707c7 Qm (i32)0x007f00fa vrshrn.i16 d6, q2, #4 :: Qd 0x01ac01ac 0x01ac01ac Qm (i32)0x000ffabc +vrshrn.i16 d6, q2, #4 :: Qd 0x43b333e3 0x529242f2 Qm (i32)0x000ffabc vrshrn.i16 d8, q12, #3 :: Qd 0x00e200e2 0x00e200e2 Qm (i32)0x00000713 +vrshrn.i16 d8, q12, #3 :: Qd 0x866566c6 0xa42484e4 Qm (i32)0x00000713 vrshrn.i16 d9, q2, #7 :: Qd 0x000e000e 0x000e000e Qm (i32)0x00000713 +vrshrn.i16 d9, q2, #7 :: Qd 0x4856465c 0x2a32283e Qm (i32)0x00000713 vrshrn.i32 d10, q13, #2 :: Qd 0x01c501c5 0x01c501c5 Qm (i32)0x00000713 +vrshrn.i32 d10, q13, #2 :: Qd 0x0acbcb8c 0x464707c7 Qm (i32)0x00000713 vrshrn.i32 d15, q11, #1 :: Qd 0x00020002 0x00020002 Qm (i32)0x00000003 +vrshrn.i32 d15, q11, #1 :: Qd 0x15969718 0x8c8f0f8e Qm (i32)0x00000003 vrshrn.i32 d10, q9, #5 :: Qd 0x00050005 0x00050005 Qm (i32)0xf00000aa +vrshrn.i32 d10, q9, #5 :: Qd 0x61597971 0xe8c9e0f9 Qm (i32)0xf00000aa vrshrn.i32 d12, q0, #6 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000000f +vrshrn.i32 d12, q0, #6 :: Qd 0xb0adbcb9 0x7464707c Qm (i32)0x0000000f vrshrn.i32 d13, q13, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0xffffffff +vrshrn.i32 d13, q13, #2 :: Qd 0x0acbcb8c 0x464707c7 Qm (i32)0xffffffff ---- VSHL (immediate) ---- vshl.i64 d0, d1, #1 :: Qd 0x00000030 0x00000030 Qm (i32)0x00000018 +vshl.i64 d0, d1, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x00000018 vshl.i64 d5, d2, #1 :: Qd 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i64 d5, d2, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x40000000 vshl.i64 d9, d12, #2 :: Qd 0x0000000a 0x00000008 Qm (i32)0x80000002 +vshl.i64 d9, d12, #2 :: Qd 0x54746474 0x50707c70 Qm (i32)0x80000002 vshl.i64 d11, d2, #12 :: Qd 0xffffffff 0xfffff000 Qm (i32)0xffffffff +vshl.i64 d11, d2, #12 :: Qd 0xd191d141 0xc1f1c000 Qm (i32)0xffffffff vshl.i64 d15, d12, #63 :: Qd 0x80000000 0x00000000 Qm (i32)0x00000005 +vshl.i64 d15, d12, #63 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000005 vshl.i64 d5, d12, #62 :: Qd 0x40000000 0x00000000 Qm (i32)0x80000001 +vshl.i64 d5, d12, #62 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 vshl.i32 d0, d1, #1 :: Qd 0x00000030 0x00000030 Qm (i32)0x00000018 +vshl.i32 d0, d1, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x00000018 vshl.i32 d5, d2, #1 :: Qd 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i32 d5, d2, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x40000000 vshl.i32 d9, d12, #2 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i32 d9, d12, #2 :: Qd 0x54746474 0x50707c70 Qm (i32)0x80000002 vshl.i32 d11, d2, #12 :: Qd 0xfffff000 0xfffff000 Qm (i32)0xffffffff +vshl.i32 d11, d2, #12 :: Qd 0xd191d000 0xc1f1c000 Qm (i32)0xffffffff vshl.i32 d15, d12, #20 :: Qd 0x00500000 0x00500000 Qm (i32)0x00000005 +vshl.i32 d15, d12, #20 :: Qd 0x91d00000 0xf1c00000 Qm (i32)0x00000005 vshl.i32 d5, d12, #30 :: Qd 0x40000000 0x40000000 Qm (i32)0x80000001 +vshl.i32 d5, d12, #30 :: Qd 0x40000000 0x00000000 Qm (i32)0x80000001 vshl.i16 d0, d1, #1 :: Qd 0x00300030 0x00300030 Qm (i16)0x00000018 +vshl.i16 d0, d1, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i16)0x00000018 vshl.i16 d5, d2, #1 :: Qd 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i16 d5, d2, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x40000000 vshl.i16 d9, d12, #2 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i16 d9, d12, #2 :: Qd 0x54746474 0x50707c70 Qm (i32)0x80000002 vshl.i16 d11, d2, #12 :: Qd 0xf000f000 0xf000f000 Qm (i16)0xffffffff +vshl.i16 d11, d2, #12 :: Qd 0xd000d000 0xc000c000 Qm (i16)0xffffffff vshl.i16 d15, d12, #3 :: Qd 0x00280028 0x00280028 Qm (i16)0x00000005 +vshl.i16 d15, d12, #3 :: Qd 0xa8e8c8e8 0xa0e0f8e0 Qm (i16)0x00000005 vshl.i16 d5, d12, #14 :: Qd 0x00004000 0x00004000 Qm (i32)0x80000001 +vshl.i16 d5, d12, #14 :: Qd 0x40004000 0x00000000 Qm (i32)0x80000001 vshl.i8 d0, d1, #1 :: Qd 0x30303030 0x30303030 Qm (i8)0x00000018 +vshl.i8 d0, d1, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i8)0x00000018 vshl.i8 d5, d2, #1 :: Qd 0x80000000 0x80000000 Qm (i32)0x40000000 +vshl.i8 d5, d2, #1 :: Qd 0x2a3a323a 0x28383e38 Qm (i32)0x40000000 vshl.i8 d9, d12, #2 :: Qd 0x00000008 0x00000008 Qm (i32)0x80000002 +vshl.i8 d9, d12, #2 :: Qd 0x54746474 0x50707c70 Qm (i32)0x80000002 vshl.i8 d11, d2, #7 :: Qd 0x80808080 0x80808080 Qm (i8)0xffffffff +vshl.i8 d11, d2, #7 :: Qd 0x80808080 0x00008000 Qm (i8)0xffffffff vshl.i8 d15, d12, #3 :: Qd 0x28282828 0x28282828 Qm (i8)0x00000005 +vshl.i8 d15, d12, #3 :: Qd 0xa8e8c8e8 0xa0e0f8e0 Qm (i8)0x00000005 vshl.i8 d5, d12, #6 :: Qd 0x00000040 0x00000040 Qm (i32)0x80000001 +vshl.i8 d5, d12, #6 :: Qd 0x40404040 0x0000c000 Qm (i32)0x80000001 ---- VNEG ---- vneg.s32 d0, d1 :: Qd 0xffffff8d 0xffffff8d Qm (i32)0x00000073 +vneg.s32 d0, d1 :: Qd 0xeae2e6e3 0xebe3e0e4 Qm (i32)0x00000073 vneg.s16 d15, d4 :: Qd 0x0000ff8d 0x0000ff8d Qm (i32)0x00000073 +vneg.s16 d15, d4 :: Qd 0xeae3e6e3 0xebe4e0e4 Qm (i32)0x00000073 vneg.s8 d8, d7 :: Qd 0x0000008d 0x0000008d Qm (i32)0x00000073 +vneg.s8 d8, d7 :: Qd 0xebe3e7e3 0xece4e1e4 Qm (i32)0x00000073 vneg.s32 d0, d1 :: Qd 0xffffff02 0xffffff02 Qm (i32)0x000000fe +vneg.s32 d0, d1 :: Qd 0xeae2e6e3 0xebe3e0e4 Qm (i32)0x000000fe vneg.s16 d31, d4 :: Qd 0x0000ff11 0x0000ff11 Qm (i32)0x000000ef +vneg.s16 d31, d4 :: Qd 0xeae3e6e3 0xebe4e0e4 Qm (i32)0x000000ef vneg.s8 d8, d7 :: Qd 0x00000022 0x00000022 Qm (i32)0x000000de +vneg.s8 d8, d7 :: Qd 0xebe3e7e3 0xece4e1e4 Qm (i32)0x000000de vneg.s32 d0, d1 :: Qd 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a +vneg.s32 d0, d1 :: Qd 0xeae2e6e3 0xebe3e0e4 Qm (i16)0x0000fe0a vneg.s16 d15, d4 :: Qd 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b +vneg.s16 d15, d4 :: Qd 0xeae3e6e3 0xebe4e0e4 Qm (i16)0x0000ef0b vneg.s8 d8, d7 :: Qd 0x22f422f4 0x22f422f4 Qm (i16)0x0000de0c +vneg.s8 d8, d7 :: Qd 0xebe3e7e3 0xece4e1e4 Qm (i16)0x0000de0c ---- VQNEG ---- vqneg.s32 d0, d1 :: Qd 0xffffff8d 0xffffff8d Qm (i32)0x00000073 fpscr 00000000 +vqneg.s32 d0, d1 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x00000073 fpscr 00000000 vqneg.s32 d0, d1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000000 fpscr 08000000 +vqneg.s32 d0, d1 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 fpscr 00000000 vqneg.s16 d0, d1 :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 fpscr 08000000 +vqneg.s16 d0, d1 :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 fpscr 00000000 vqneg.s8 d0, d1 :: Qd 0x7f000000 0x7f000000 Qm (i32)0x80000000 fpscr 08000000 +vqneg.s8 d0, d1 :: Qd 0xede5e6e5 0xeee1e2e1 Qm (i32)0x80000000 fpscr 00000000 vqneg.s16 d15, d4 :: Qd 0x0000ff8d 0x0000ff8d Qm (i32)0x00000073 fpscr 00000000 +vqneg.s16 d15, d4 :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x00000073 fpscr 00000000 vqneg.s8 d8, d7 :: Qd 0x0000008d 0x0000008d Qm (i32)0x00000073 fpscr 00000000 +vqneg.s8 d8, d7 :: Qd 0xede5e6e5 0xeee1e2e1 Qm (i32)0x00000073 fpscr 00000000 vqneg.s32 d0, d1 :: Qd 0xffffff02 0xffffff02 Qm (i32)0x000000fe fpscr 00000000 +vqneg.s32 d0, d1 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x000000fe fpscr 00000000 vqneg.s16 d31, d4 :: Qd 0x0000ff11 0x0000ff11 Qm (i32)0x000000ef fpscr 00000000 +vqneg.s16 d31, d4 :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x000000ef fpscr 00000000 vqneg.s8 d8, d7 :: Qd 0x00000022 0x00000022 Qm (i32)0x000000de fpscr 00000000 +vqneg.s8 d8, d7 :: Qd 0xede5e6e5 0xeee1e2e1 Qm (i32)0x000000de fpscr 00000000 vqneg.s32 d0, d1 :: Qd 0x01f501f6 0x01f501f6 Qm (i16)0x0000fe0a fpscr 00000000 +vqneg.s32 d0, d1 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i16)0x0000fe0a fpscr 00000000 vqneg.s16 d15, d4 :: Qd 0x10f510f5 0x10f510f5 Qm (i16)0x0000ef0b fpscr 00000000 +vqneg.s16 d15, d4 :: Qd 0xece5e5e5 0xede1e1e1 Qm (i16)0x0000ef0b fpscr 00000000 vqneg.s8 d8, d7 :: Qd 0x22f422f4 0x22f422f4 Qm (i16)0x0000de0c fpscr 00000000 +vqneg.s8 d8, d7 :: Qd 0xede5e6e5 0xeee1e2e1 Qm (i16)0x0000de0c fpscr 00000000 ---- VREV ---- vrev64.8 d0, d1 :: Qd 0xddccbbaa 0xddccbbaa Qm (i32)0xaabbccdd +vrev64.8 d0, d1 :: Qd 0x1c1f1c14 0x1d191d15 Qm (i32)0xaabbccdd vrev64.16 d10, d31 :: Qd 0xccddaabb 0xccddaabb Qm (i32)0xaabbccdd +vrev64.16 d10, d31 :: Qd 0x1f1c141c 0x191d151d Qm (i32)0xaabbccdd vrev64.32 d1, d14 :: Qd 0xaabbccdd 0xaabbccdd Qm (i32)0xaabbccdd +vrev64.32 d1, d14 :: Qd 0x141c1f1c 0x151d191d Qm (i32)0xaabbccdd vrev32.8 d0, d1 :: Qd 0xddccbbaa 0xddccbbaa Qm (i32)0xaabbccdd +vrev32.8 d0, d1 :: Qd 0x1d191d15 0x1c1f1c14 Qm (i32)0xaabbccdd vrev32.16 d30, d15 :: Qd 0xccddaabb 0xccddaabb Qm (i32)0xaabbccdd +vrev32.16 d30, d15 :: Qd 0x191d151d 0x1f1c141c Qm (i32)0xaabbccdd vrev16.8 d0, d1 :: Qd 0xbbaaddcc 0xbbaaddcc Qm (i32)0xaabbccdd +vrev16.8 d0, d1 :: Qd 0x1d151d19 0x1c141c1f Qm (i32)0xaabbccdd ---- VTBL ---- vtbl.8 d0, {d2}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d0, {d2}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d0, {d31}, d1 :: Qd 0x12121212 0x12121212 Qm (i8)0x00000007 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d0, {d31}, d1 :: Qd 0x12121212 0x12121212 Qm (i8)0x00000007 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d0, {d20}, d1 :: Qd 0x56565656 0x56565656 Qm (i8)0x00000001 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d0, {d20}, d1 :: Qd 0x56565656 0x56565656 Qm (i8)0x00000001 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d0, {d2}, d31 :: Qd 0x34343434 0x34343434 Qm (i8)0x00000002 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d0, {d2}, d31 :: Qd 0x34343434 0x34343434 Qm (i8)0x00000002 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d30, {d2}, d1 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d30, {d2}, d1 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d31, {d2}, d1 :: Qd 0x56785678 0x56785678 Qm (i16)0x00000104 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d31, {d2}, d1 :: Qd 0x56785678 0x56785678 Qm (i16)0x00000104 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d30, {d2}, d1 :: Qd 0x12005656 0x12005656 Qm (i32)0x07080501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d30, {d2}, d1 :: Qd 0x12005656 0x12005656 Qm (i32)0x07080501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbl.8 d30, {d2}, d1 :: Qd 0x12005600 0x12005600 Qm (i32)0x07ed05ee Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d30, {d2}, d1 :: Qd 0x12005600 0x12005600 Qm (i32)0x07ed05ee Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbl.8 d0, {d2-d3}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d2-d3}, d1 :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d1-d2}, d3 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d1-d2}, d3 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d30-d31}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d30-d31}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d23}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d23}, d1 :: Qd 0x1d1d1d1d 0x1d1d1d1d Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000e Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000e Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d3}, d31 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d3}, d31 :: Qd 0x1514191f 0x1514191f Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d3}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d3}, d31 :: Qd 0xa4a2191f 0xa4a2191f Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d3}, d31 :: Qd 0x12a2a256 0x12a2a256 Qm (i32)0x070e0e01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d3}, d31 :: Qd 0x15a2a21f 0x15a2a21f Qm (i32)0x070e0e01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d3}, d31 :: Qd 0xa300a156 0xa300a156 Qm (i32)0x0d130f01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d3}, d31 :: Qd 0xa300a11f 0xa300a11f Qm (i32)0x0d130f01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d3}, d31 :: Qd 0x12125600 0x12125600 Qm (i32)0x07030511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d3}, d31 :: Qd 0x15141900 0x15141900 Qm (i32)0x07030511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d2-d4}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d2-d4}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d1-d3}, d10 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d1-d3}, d10 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d29-d31}, d1 :: Qd 0xcacacaca 0xcacacaca Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d29-d31}, d1 :: Qd 0x15151515 0x15151515 Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d24}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d24}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d24}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d24}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d24}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d24}, d1 :: Qd 0x1b1b1b1b 0x1b1b1b1b Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d24}, d1 :: Qd 0xcdcdcdcd 0xcdcdcdcd Qm (i8)0x00000010 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d24}, d1 :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i8)0x00000010 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d22-d24}, d1 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d0, {d22-d24}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa212cc78 0xa212cc78 Qm (i32)0x0a031504 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa212191b 0xa212191b Qm (i32)0x0a031504 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa4a21a1e 0xa4a21a1e Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d4}, d31 :: Qd 0xcaa200a1 0xcaa200a1 Qm (i32)0x170efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d4}, d31 :: Qd 0x15a200a1 0x15a200a1 Qm (i32)0x170efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa3caa1cc 0xa3caa1cc Qm (i32)0x0d130f11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d4}, d31 :: Qd 0xa314a11f 0xa314a11f Qm (i32)0x0d130f11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d30, {d2-d4}, d31 :: Qd 0x12a1cccc 0x12a1cccc Qm (i32)0x070f1511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbl.8 d30, {d2-d4}, d31 :: Qd 0x13a1191f 0x13a1191f Qm (i32)0x070f1511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbl.8 d0, {d2-d5}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d2-d5}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d1-d4}, d10 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d1-d4}, d10 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d28-d31}, d1 :: Qd 0xcacacaca 0xcacacaca Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d28-d31}, d1 :: Qd 0x15151515 0x15151515 Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d22-d25}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d22-d25}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d22-d25}, d1 :: Qd 0xfdfdfdfd 0xfdfdfdfd Qm (i8)0x0000001a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d22-d25}, d1 :: Qd 0xfdfdfdfd 0xfdfdfdfd Qm (i8)0x0000001a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d22-d25}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d22-d25}, d1 :: Qd 0x1b1b1b1b 0x1b1b1b1b Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d22-d25}, d1 :: Qd 0xcbcbcbcb 0xcbcbcbcb Qm (i8)0x00000016 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d22-d25}, d1 :: Qd 0x1d1d1d1d 0x1d1d1d1d Qm (i8)0x00000016 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d0, {d22-d25}, d1 :: Qd 0xfefefefe 0xfefefefe Qm (i8)0x0000001f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d0, {d22-d25}, d1 :: Qd 0xfefefefe 0xfefefefe Qm (i8)0x0000001f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d30, {d2-d5}, d31 :: Qd 0xfd12cc00 0xfd12cc00 Qm (i32)0x1a0315ff Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d30, {d2-d5}, d31 :: Qd 0xfd121900 0xfd121900 Qm (i32)0x1a0315ff Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d30, {d2-d5}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d30, {d2-d5}, d31 :: Qd 0xa4a21a1e 0xa4a21a1e Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d30, {d2-d5}, d31 :: Qd 0xcafd00a1 0xcafd00a1 Qm (i32)0x171efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d30, {d2-d5}, d31 :: Qd 0x15fd00a1 0x15fd00a1 Qm (i32)0x171efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d30, {d2-d5}, d31 :: Qd 0xfccaa1fd 0xfccaa1fd Qm (i32)0x1d130f1a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d30, {d2-d5}, d31 :: Qd 0xfc14a1fd 0xfc14a1fd Qm (i32)0x1d130f1a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbl.8 d30, {d2-d5}, d31 :: Qd 0xcacdfbcc 0xcacdfbcc Qm (i32)0x17101c11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbl.8 d30, {d2-d5}, d31 :: Qd 0x151cfb1f 0x151cfb1f Qm (i32)0x17101c11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb ---- VTBX ---- vtbx.8 d0, {d2}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d0, {d2}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d0, {d31}, d1 :: Qd 0x12121212 0x12121212 Qm (i8)0x00000007 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d0, {d31}, d1 :: Qd 0x12121212 0x12121212 Qm (i8)0x00000007 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d0, {d20}, d1 :: Qd 0x56565656 0x56565656 Qm (i8)0x00000001 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d0, {d20}, d1 :: Qd 0x56565656 0x56565656 Qm (i8)0x00000001 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d0, {d2}, d31 :: Qd 0x34343434 0x34343434 Qm (i8)0x00000002 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d0, {d2}, d31 :: Qd 0x34343434 0x34343434 Qm (i8)0x00000002 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d30, {d2}, d1 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d30, {d2}, d1 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d31, {d2}, d1 :: Qd 0x56785678 0x56785678 Qm (i16)0x00000104 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d31, {d2}, d1 :: Qd 0x56785678 0x56785678 Qm (i16)0x00000104 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d30, {d2}, d1 :: Qd 0x12555656 0x12555656 Qm (i32)0x07080501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d30, {d2}, d1 :: Qd 0x12555656 0x12555656 Qm (i32)0x07080501 Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 +vtbx.8 d30, {d2}, d1 :: Qd 0x12555655 0x12555655 Qm (i32)0x07ed05ee Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d30, {d2}, d1 :: Qd 0x12555655 0x12555655 Qm (i32)0x07ed05ee Qn1 (i32)0x12345678 Qn2 (i32)0x12345678 Qn3 (i32)0x12345678 Qn4 (i32)0x12345678 vtbx.8 d0, {d2-d3}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d2-d3}, d1 :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d1-d2}, d3 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d1-d2}, d3 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d30-d31}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d30-d31}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d23}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d23}, d1 :: Qd 0x1d1d1d1d 0x1d1d1d1d Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000e Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa2a2a2a2 0xa2a2a2a2 Qm (i8)0x0000000e Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d23}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d3}, d31 :: Qd 0x12125656 0x12125656 Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d3}, d31 :: Qd 0x1514191f 0x1514191f Qm (i32)0x07030501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d3}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d3}, d31 :: Qd 0xa4a2191f 0xa4a2191f Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d3}, d31 :: Qd 0x12a2a256 0x12a2a256 Qm (i32)0x070e0e01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d3}, d31 :: Qd 0x15a2a21f 0x15a2a21f Qm (i32)0x070e0e01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d3}, d31 :: Qd 0xa355a156 0xa355a156 Qm (i32)0x0d130f01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d3}, d31 :: Qd 0xa355a11f 0xa355a11f Qm (i32)0x0d130f01 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d3}, d31 :: Qd 0x12125655 0x12125655 Qm (i32)0x07030511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d3}, d31 :: Qd 0x15141955 0x15141955 Qm (i32)0x07030511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0x12345678 Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d2-d4}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d2-d4}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d1-d3}, d10 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d1-d3}, d10 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d29-d31}, d1 :: Qd 0xcacacaca 0xcacacaca Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d29-d31}, d1 :: Qd 0x15151515 0x15151515 Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d24}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d24}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d24}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d24}, d1 :: Qd 0xa1a1a1a1 0xa1a1a1a1 Qm (i8)0x0000000f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d24}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d24}, d1 :: Qd 0x1b1b1b1b 0x1b1b1b1b Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d24}, d1 :: Qd 0xcdcdcdcd 0xcdcdcdcd Qm (i8)0x00000010 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d24}, d1 :: Qd 0x1c1c1c1c 0x1c1c1c1c Qm (i8)0x00000010 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d22-d24}, d1 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d0, {d22-d24}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa212cc78 0xa212cc78 Qm (i32)0x0a031504 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa212191b 0xa212191b Qm (i32)0x0a031504 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa4a21a1e 0xa4a21a1e Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d4}, d31 :: Qd 0xcaa255a1 0xcaa255a1 Qm (i32)0x170efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d4}, d31 :: Qd 0x15a255a1 0x15a255a1 Qm (i32)0x170efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa3caa1cc 0xa3caa1cc Qm (i32)0x0d130f11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d4}, d31 :: Qd 0xa314a11f 0xa314a11f Qm (i32)0x0d130f11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d30, {d2-d4}, d31 :: Qd 0x12a1cccc 0x12a1cccc Qm (i32)0x070f1511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 +vtbx.8 d30, {d2-d4}, d31 :: Qd 0x13a1191f 0x13a1191f Qm (i32)0x070f1511 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xa1a2a3a4 vtbx.8 d0, {d2-d5}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d2-d5}, d1 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000000 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d1-d4}, d10 :: Qd 0xcccccccc 0xcccccccc Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d1-d4}, d10 :: Qd 0x1f1f1f1f 0x1f1f1f1f Qm (i8)0x00000011 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d28-d31}, d1 :: Qd 0xcacacaca 0xcacacaca Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d28-d31}, d1 :: Qd 0x15151515 0x15151515 Qm (i8)0x00000017 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d22-d25}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d22-d25}, d1 :: Qd 0xa3a3a3a3 0xa3a3a3a3 Qm (i8)0x00000009 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d22-d25}, d1 :: Qd 0xfdfdfdfd 0xfdfdfdfd Qm (i8)0x0000001a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d22-d25}, d1 :: Qd 0xfdfdfdfd 0xfdfdfdfd Qm (i8)0x0000001a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d22-d25}, d1 :: Qd 0x78787878 0x78787878 Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d22-d25}, d1 :: Qd 0x1b1b1b1b 0x1b1b1b1b Qm (i8)0x00000004 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d22-d25}, d1 :: Qd 0xcbcbcbcb 0xcbcbcbcb Qm (i8)0x00000016 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d22-d25}, d1 :: Qd 0x1d1d1d1d 0x1d1d1d1d Qm (i8)0x00000016 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d0, {d22-d25}, d1 :: Qd 0xfefefefe 0xfefefefe Qm (i8)0x0000001f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d0, {d22-d25}, d1 :: Qd 0xfefefefe 0xfefefefe Qm (i8)0x0000001f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d30, {d2-d5}, d31 :: Qd 0xfd12cc55 0xfd12cc55 Qm (i32)0x1a0315ff Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d30, {d2-d5}, d31 :: Qd 0xfd121955 0xfd121955 Qm (i32)0x1a0315ff Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d30, {d2-d5}, d31 :: Qd 0xa4a25656 0xa4a25656 Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d30, {d2-d5}, d31 :: Qd 0xa4a21a1e 0xa4a21a1e Qm (i32)0x0c0a0501 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d30, {d2-d5}, d31 :: Qd 0xcafd55a1 0xcafd55a1 Qm (i32)0x171efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d30, {d2-d5}, d31 :: Qd 0x15fd55a1 0x15fd55a1 Qm (i32)0x171efe0f Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d30, {d2-d5}, d31 :: Qd 0xfccaa1fd 0xfccaa1fd Qm (i32)0x1d130f1a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d30, {d2-d5}, d31 :: Qd 0xfc14a1fd 0xfc14a1fd Qm (i32)0x1d130f1a Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb vtbx.8 d30, {d2-d5}, d31 :: Qd 0xcacdfbcc 0xcacdfbcc Qm (i32)0x17101c11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb +vtbx.8 d30, {d2-d5}, d31 :: Qd 0x151cfb1f 0x151cfb1f Qm (i32)0x17101c11 Qn1 (i32)0x12345678 Qn2 (i32)0xa1a2a3a4 Qn3 (i32)0xcacbcccd Qn4 (i32)0xfefdfcfb ---- VPMAX (integer) ---- vpmax.s32 d0, d1, d2 :: Qd 0x00000079 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000079 +vpmax.s32 d0, d1, d2 :: Qd 0x00000079 0x131b1a1b Qm (i32)0x00000019 Qn (i32)0x00000079 vpmax.s32 d0, d1, d2 :: Qd 0x00000079 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000079 +vpmax.s32 d0, d1, d2 :: Qd 0x00000079 0x131b1a1b Qm (i32)0x000000fa Qn (i32)0x00000079 vpmax.s32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vpmax.s32 d0, d1, d2 :: Qd 0x0000008c 0x131b1a1b Qm (i32)0x0000008c Qn (i32)0x0000008c vpmax.s16 d0, d1, d2 :: Qd 0x00780078 0x01400140 Qm (i32)0x01200140 Qn (i32)0x00000078 +vpmax.s16 d0, d1, d2 :: Qd 0x00780078 0x1a1b1e1f Qm (i32)0x01200140 Qn (i32)0x00000078 vpmax.s8 d0, d1, d2 :: Qd 0x00780078 0x00780078 Qm (i32)0x00000078 Qn (i32)0x00000078 +vpmax.s8 d0, d1, d2 :: Qd 0x00780078 0x1b1b1f1f Qm (i32)0x00000078 Qn (i32)0x00000078 vpmax.s8 d5, d7, d5 :: Qd 0x00020002 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.s8 d5, d7, d5 :: Qd 0x00020002 0x1b1b1f1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.s16 d0, d1, d2 :: Qd 0x00020002 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.s16 d0, d1, d2 :: Qd 0x00020002 0x1a1b1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.s32 d0, d1, d2 :: Qd 0x80000002 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.s32 d0, d1, d2 :: Qd 0x80000002 0x131b1a1b Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.s8 d5, d7, d5 :: Qd 0x00030003 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.s8 d5, d7, d5 :: Qd 0x00030003 0x1b1b1f1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.s16 d0, d1, d2 :: Qd 0x00030003 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.s16 d0, d1, d2 :: Qd 0x00030003 0x1a1b1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.s32 d0, d1, d2 :: Qd 0x80000003 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.s32 d0, d1, d2 :: Qd 0x80000003 0x131b1a1b Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.s8 d5, d7, d5 :: Qd 0x00020002 0x00040004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.s8 d5, d7, d5 :: Qd 0x00020002 0x1b1b1f1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.s16 d0, d1, d2 :: Qd 0x00020002 0x00040004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.s16 d0, d1, d2 :: Qd 0x00020002 0x1a1b1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.s32 d0, d1, d2 :: Qd 0x80000002 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.s32 d0, d1, d2 :: Qd 0x80000002 0x131b1a1b Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.s32 d10, d11, d12 :: Qd 0x00000078 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpmax.s32 d10, d11, d12 :: Qd 0x00000078 0x131b1a1b Qm (i32)0x00000018 Qn (i32)0x00000078 vpmax.u32 d0, d1, d2 :: Qd 0x00000078 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000078 +vpmax.u32 d0, d1, d2 :: Qd 0x00000078 0x131b1a1b Qm (i32)0x00000019 Qn (i32)0x00000078 vpmax.u32 d0, d1, d2 :: Qd 0x00000078 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000078 +vpmax.u32 d0, d1, d2 :: Qd 0x00000078 0x131b1a1b Qm (i32)0x000000fa Qn (i32)0x00000078 vpmax.u32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vpmax.u32 d0, d1, d2 :: Qd 0x0000008c 0x131b1a1b Qm (i32)0x0000008c Qn (i32)0x0000008c vpmax.u16 d0, d1, d2 :: Qd 0x00780078 0x01400140 Qm (i32)0x01200140 Qn (i32)0x00000078 +vpmax.u16 d0, d1, d2 :: Qd 0x00780078 0x1a1b1e1f Qm (i32)0x01200140 Qn (i32)0x00000078 vpmax.u8 d0, d1, d2 :: Qd 0x00780078 0x20212021 Qm (i32)0x01202120 Qn (i32)0x00000078 +vpmax.u8 d0, d1, d2 :: Qd 0x00780078 0x1b1b1f1f Qm (i32)0x01202120 Qn (i32)0x00000078 vpmax.u8 d0, d1, d2 :: Qd 0x80028002 0x80018001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.u8 d0, d1, d2 :: Qd 0x80028002 0x1b1b1f1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x1a1b1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.u32 d0, d1, d2 :: Qd 0x80000002 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmax.u32 d0, d1, d2 :: Qd 0x80000002 0x131b1a1b Qm (i32)0x80000001 Qn (i32)0x80000002 vpmax.u8 d0, d1, d2 :: Qd 0x80038003 0x80018001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.u8 d0, d1, d2 :: Qd 0x80038003 0x1b1b1f1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x1a1b1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.u32 d0, d1, d2 :: Qd 0x80000003 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmax.u32 d0, d1, d2 :: Qd 0x80000003 0x131b1a1b Qm (i32)0x80000001 Qn (i32)0x80000003 vpmax.u8 d0, d1, d2 :: Qd 0x80028002 0x80048004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.u8 d0, d1, d2 :: Qd 0x80028002 0x1b1b1f1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.u16 d0, d1, d2 :: Qd 0x80008000 0x1a1b1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.u32 d0, d1, d2 :: Qd 0x80000002 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmax.u32 d0, d1, d2 :: Qd 0x80000002 0x131b1a1b Qm (i32)0x80000004 Qn (i32)0x80000002 vpmax.u32 d10, d11, d12 :: Qd 0x00000078 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpmax.u32 d10, d11, d12 :: Qd 0x00000078 0x131b1a1b Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VPMIN (integer) ---- vpmin.s32 d0, d1, d2 :: Qd 0x00000079 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000079 +vpmin.s32 d0, d1, d2 :: Qd 0x00000079 0x121f1e1f Qm (i32)0x00000019 Qn (i32)0x00000079 vpmin.s32 d0, d1, d2 :: Qd 0x00000079 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000079 +vpmin.s32 d0, d1, d2 :: Qd 0x00000079 0x121f1e1f Qm (i32)0x000000fa Qn (i32)0x00000079 vpmin.s32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vpmin.s32 d0, d1, d2 :: Qd 0x0000008c 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x0000008c vpmin.s16 d0, d1, d2 :: Qd 0x00000000 0x01200120 Qm (i32)0x01200140 Qn (i32)0x00000078 +vpmin.s16 d0, d1, d2 :: Qd 0x00000000 0x131b121f Qm (i32)0x01200140 Qn (i32)0x00000078 vpmin.s8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000078 Qn (i32)0x00000078 +vpmin.s8 d0, d1, d2 :: Qd 0x00000000 0x131a121e Qm (i32)0x00000078 Qn (i32)0x00000078 vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x131a121e Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x131b121f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.s32 d0, d1, d2 :: Qd 0x80000002 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.s32 d0, d1, d2 :: Qd 0x80000002 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x131a121e Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x131b121f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.s32 d0, d1, d2 :: Qd 0x80000003 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.s32 d0, d1, d2 :: Qd 0x80000003 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.s8 d5, d7, d5 :: Qd 0x80008000 0x131a121e Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x80008000 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.s16 d0, d1, d2 :: Qd 0x80008000 0x131b121f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.s32 d0, d1, d2 :: Qd 0x80000002 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.s32 d0, d1, d2 :: Qd 0x80000002 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.s32 d10, d11, d12 :: Qd 0x00000078 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpmin.s32 d10, d11, d12 :: Qd 0x00000078 0x121f1e1f Qm (i32)0x00000018 Qn (i32)0x00000078 vpmin.u32 d0, d1, d2 :: Qd 0x00000078 0x00000019 Qm (i32)0x00000019 Qn (i32)0x00000078 +vpmin.u32 d0, d1, d2 :: Qd 0x00000078 0x121f1e1f Qm (i32)0x00000019 Qn (i32)0x00000078 vpmin.u32 d0, d1, d2 :: Qd 0x00000078 0x000000fa Qm (i32)0x000000fa Qn (i32)0x00000078 +vpmin.u32 d0, d1, d2 :: Qd 0x00000078 0x121f1e1f Qm (i32)0x000000fa Qn (i32)0x00000078 vpmin.u32 d0, d1, d2 :: Qd 0x0000008c 0x0000008c Qm (i32)0x0000008c Qn (i32)0x0000008c +vpmin.u32 d0, d1, d2 :: Qd 0x0000008c 0x121f1e1f Qm (i32)0x0000008c Qn (i32)0x0000008c vpmin.u16 d0, d1, d2 :: Qd 0x00000000 0x01200120 Qm (i32)0x01200140 Qn (i32)0x00000078 +vpmin.u16 d0, d1, d2 :: Qd 0x00000000 0x131b121f Qm (i32)0x01200140 Qn (i32)0x00000078 vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x01200120 Qm (i32)0x01202120 Qn (i32)0x00000078 +vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x131a121e Qm (i32)0x01202120 Qn (i32)0x00000078 vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x131a121e Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.u16 d0, d1, d2 :: Qd 0x00020002 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.u16 d0, d1, d2 :: Qd 0x00020002 0x131b121f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.u32 d0, d1, d2 :: Qd 0x80000002 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000002 +vpmin.u32 d0, d1, d2 :: Qd 0x80000002 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000002 vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x131a121e Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.u16 d0, d1, d2 :: Qd 0x00030003 0x00010001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.u16 d0, d1, d2 :: Qd 0x00030003 0x131b121f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.u32 d0, d1, d2 :: Qd 0x80000003 0x80000001 Qm (i32)0x80000001 Qn (i32)0x80000003 +vpmin.u32 d0, d1, d2 :: Qd 0x80000003 0x121f1e1f Qm (i32)0x80000001 Qn (i32)0x80000003 vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.u8 d0, d1, d2 :: Qd 0x00000000 0x131a121e Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.u16 d0, d1, d2 :: Qd 0x00020002 0x00040004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.u16 d0, d1, d2 :: Qd 0x00020002 0x131b121f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.u32 d0, d1, d2 :: Qd 0x80000002 0x80000004 Qm (i32)0x80000004 Qn (i32)0x80000002 +vpmin.u32 d0, d1, d2 :: Qd 0x80000002 0x121f1e1f Qm (i32)0x80000004 Qn (i32)0x80000002 vpmin.u32 d10, d11, d12 :: Qd 0x00000078 0x00000018 Qm (i32)0x00000018 Qn (i32)0x00000078 +vpmin.u32 d10, d11, d12 :: Qd 0x00000078 0x121f1e1f Qm (i32)0x00000018 Qn (i32)0x00000078 ---- VQRDMULH ---- vqrdmulh.s32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 d0, d1, d2 :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 d6, d7, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 d6, d7, d8 :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqrdmulh.s16 d9, d11, d12 :: Qd 0x00000003 0x00000003 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 d9, d11, d12 :: Qd 0x0000003b 0x00000044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqrdmulh.s16 d4, d5, d6 :: Qd 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9 :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s16 d4, d5, d6 :: Qd 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0xffff9433 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9 :: Qd 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9 :: Qd 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqrdmulh.s16 d4, d5, d6 :: Qd 0x00000040 0x00000040 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6 :: Qd 0x00000687 0x00000788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9 :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s32 d10, d11, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 d10, d11, d15 :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 d10, d30, d31 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 08000000 +vqrdmulh.s32 d10, d30, d31 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 d10, d30, d31 :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 08000000 +vqrdmulh.s16 d10, d30, d31 :: Qd 0xece50000 0xede10000 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 vqrdmulh.s32 d10, d30, d31 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 d10, d30, d31 :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 d10, d30, d31 :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 d10, d30, d31 :: Qd 0x098e0000 0x09100000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VQRDMULH (by scalar) ---- vqrdmulh.s32 d0, d1, d6[0] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 d0, d1, d6[0] :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 d6, d7, d1[1] :: Qd 0x00000000 0x00000000 Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 +vqrdmulh.s32 d6, d7, d1[1] :: Qd 0xffffffee 0xffffffef Qm (i32)0x0000008c Qn (i32)0xffffff88 fpscr: 00000000 vqrdmulh.s16 d9, d11, d7[0] :: Qd 0x00000003 0x00000003 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 +vqrdmulh.s16 d9, d11, d7[0] :: Qd 0x002b003b 0x00290044 Qm (i32)0x00000140 Qn (i32)0x00000120 fpscr: 00000000 vqrdmulh.s16 d4, d5, d6[0] :: Qd 0x00001001 0x00001001 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6[0] :: Qd 0x04c70687 0x04880788 Qm (i32)0x00004001 Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9[1] :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s16 d4, d5, d6[1] :: Qd 0x0000e50b 0x0000e50b Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6[1] :: Qd 0x04c70687 0x04880788 Qm (i32)0xffff9433 Qn (i16)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9[0] :: Qd 0xfffffff4 0xfffffff4 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9[0] :: Qd 0x00000002 0x00000002 Qm (i32)0x80000000 Qn (i32)0x0000000c fpscr: 00000000 vqrdmulh.s16 d4, d5, d6[2] :: Qd 0x04000040 0x04000040 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 +vqrdmulh.s16 d4, d5, d6[2] :: Qd 0x04c70687 0x04880788 Qm (i32)0x100000fe Qn (i32)0x00002002 fpscr: 00000000 vqrdmulh.s32 d7, d8, d9[0] :: Qd 0x7ffffffd 0x7ffffffd Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 +vqrdmulh.s32 d7, d8, d9[0] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x80000001 Qn (i32)0x80000002 fpscr: 00000000 vqrdmulh.s32 d10, d31, d15[0] :: Qd 0x00000000 0x00000000 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 +vqrdmulh.s32 d10, d31, d15[0] :: Qd 0x00000012 0x00000011 Qm (i32)0x00000018 Qn (i32)0x00000078 fpscr: 00000000 vqrdmulh.s32 d10, d14, d15[1] :: Qd 0xffffff88 0xffffff88 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 d10, d14, d15[1] :: Qd 0x00000012 0x00000011 Qm (i32)0x80000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 d10, d14, d7[3] :: Qd 0x7fff0000 0x7fff0000 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 08000000 +vqrdmulh.s16 d10, d14, d7[3] :: Qd 0xece5e5e5 0xede1e1e1 Qm (i32)0x80000000 Qn (i32)0x80000001 fpscr: 00000000 vqrdmulh.s32 d10, d14, d15[1] :: Qd 0xc0000000 0xc0000000 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 +vqrdmulh.s32 d10, d14, d15[1] :: Qd 0xece4e5e5 0xede0e1e1 Qm (i32)0x40000000 Qn (i32)0x80000000 fpscr: 00000000 vqrdmulh.s16 d31, d14, d7[1] :: Qd 0xc0000000 0xc0000000 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 +vqrdmulh.s16 d31, d14, d7[1] :: Qd 0x098e0d0e 0x09100f10 Qm (i32)0x80000000 Qn (i32)0x40000000 fpscr: 00000000 ---- VADD (fp) ---- vadd.f32 d0, d5, d2 :: Qd 0xc1b43ac6 0xc1b43ac6 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vadd.f32 d0, d5, d2 :: Qd 0xc2364659 0xc2364659 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vadd.f32 d3, d4, d5 :: Qd 0xc8a931cf 0xc8a931cf Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vadd.f32 d3, d4, d5 :: Qd 0x44a84000 0x44a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vadd.f32 d10, d11, d2 :: Qd 0x45398860 0x45398860 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vadd.f32 d10, d11, d2 :: Qd 0xc732da7a 0xc732da7a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vadd.f32 d9, d5, d7 :: Qd 0x47dc9261 0x47dc9261 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vadd.f32 d9, d5, d7 :: Qd 0x46855200 0x46855200 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vadd.f32 d0, d5, d2 :: Qd 0xc88faac0 0xc88faac0 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vadd.f32 d0, d5, d2 :: Qd 0xc872bcb1 0xc872bcb1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vadd.f32 d3, d4, d5 :: Qd 0x44ab5c08 0x44ab5c08 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vadd.f32 d3, d4, d5 :: Qd 0x44a84003 0x44a84003 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vadd.f32 d10, d11, d2 :: Qd 0x4742b4e6 0x4742b4e6 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vadd.f32 d10, d11, d2 :: Qd 0x44882666 0x44882666 Qm (i32)0x473e73b3 Qn (i32)0x44882666 vadd.f32 d9, d5, d7 :: Qd 0x49d5e6b8 0x49d5e6b8 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vadd.f32 d9, d5, d7 :: Qd 0x49d5e008 0x49d5e008 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vadd.f32 d0, d11, d12 :: Qd 0x48b0b752 0x48b0b752 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vadd.f32 d0, d11, d12 :: Qd 0x45b75812 0x45b75812 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vadd.f32 d7, d1, d6 :: Qd 0x420802fd 0x420802fd Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vadd.f32 d7, d1, d6 :: Qd 0x3b210e02 0x3b210e02 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vadd.f32 d0, d1, d2 :: Qd 0x4532d000 0x4532d000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vadd.f32 d0, d1, d2 :: Qd 0x42d60000 0x42d60000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vadd.f32 d3, d4, d5 :: Qd 0x450d299a 0x450d299a Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vadd.f32 d3, d4, d5 :: Qd 0x44ad1333 0x44ad1333 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vadd.f32 d10, d11, d2 :: Qd 0x44152592 0x44152592 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vadd.f32 d10, d11, d2 :: Qd 0x42da0000 0x42da0000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vadd.f32 d9, d5, d7 :: Qd 0x4573a000 0x4573a000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vadd.f32 d9, d5, d7 :: Qd 0x44db0000 0x44db0000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vadd.f32 d0, d11, d12 :: Qd 0xc5b695c3 0xc5b695c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vadd.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0xc5b4d3c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vadd.f32 d7, d1, d6 :: Qd 0x43e07a2a 0x43e07a2a Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vadd.f32 d7, d1, d6 :: Qd 0xc0e96d19 0xc0e96d19 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vadd.f32 d0, d5, d2 :: Qd 0x44053ee0 0x44053ee0 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vadd.f32 d0, d5, d2 :: Qd 0xbb965394 0xbb965394 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vadd.f32 d10, d13, d15 :: Qd 0xc4838fb4 0xc4838fb4 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vadd.f32 d10, d13, d15 :: Qd 0xc40dcfae 0xc40dcfae Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vadd.f32 d10, d13, d15 :: Qd 0x488c3d8e 0x488c3d8e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vadd.f32 d10, d13, d15 :: Qd 0x4608d008 0x4608d008 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vadd.f32 d0, d1, d2 :: Qd 0x4efa8dc5 0x4efa8dc5 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vadd.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e920233 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vadd.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x00000000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vadd.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vadd.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vadd.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vadd.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vadd.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x00000000 vadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 vadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VSUB (fp) ---- vsub.f32 d0, d5, d2 :: Qd 0x428937a8 0x428937a8 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vsub.f32 d0, d5, d2 :: Qd 0x42364659 0x42364659 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vsub.f32 d3, d4, d5 :: Qd 0xc8aa824f 0xc8aa824f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vsub.f32 d3, d4, d5 :: Qd 0xc4a84000 0xc4a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vsub.f32 d10, d11, d2 :: Qd 0x47b8a6bd 0x47b8a6bd Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vsub.f32 d10, d11, d2 :: Qd 0x4732da7a 0x4732da7a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vsub.f32 d9, d5, d7 :: Qd 0x4799e961 0x4799e961 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vsub.f32 d9, d5, d7 :: Qd 0xc6855200 0xc6855200 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vsub.f32 d0, d5, d2 :: Qd 0x484623e2 0x484623e2 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vsub.f32 d0, d5, d2 :: Qd 0x4872bcb1 0x4872bcb1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vsub.f32 d3, d4, d5 :: Qd 0xc4a54000 0xc4a54000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vsub.f32 d3, d4, d5 :: Qd 0xc4a84000 0xc4a84000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vsub.f32 d10, d11, d2 :: Qd 0x473a3200 0x473a3200 Qm (i32)0x473e7300 Qn (i32)0x44882000 +vsub.f32 d10, d11, d2 :: Qd 0xc4882000 0xc4882000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vsub.f32 d9, d5, d7 :: Qd 0xc9d5d958 0xc9d5d958 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vsub.f32 d9, d5, d7 :: Qd 0xc9d5e008 0xc9d5e008 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vsub.f32 d0, d11, d12 :: Qd 0x48aafc92 0x48aafc92 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vsub.f32 d0, d11, d12 :: Qd 0xc5b75812 0xc5b75812 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vsub.f32 d7, d1, d6 :: Qd 0x4207fdf5 0x4207fdf5 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vsub.f32 d7, d1, d6 :: Qd 0xbb210e02 0xbb210e02 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vsub.f32 d0, d1, d2 :: Qd 0x45257000 0x45257000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vsub.f32 d0, d1, d2 :: Qd 0xc2d60000 0xc2d60000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vsub.f32 d3, d4, d5 :: Qd 0xc3ff4ccc 0xc3ff4ccc Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vsub.f32 d3, d4, d5 :: Qd 0xc4ad1333 0xc4ad1333 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vsub.f32 d10, d11, d2 :: Qd 0x43bd4b23 0x43bd4b23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vsub.f32 d10, d11, d2 :: Qd 0xc2da0000 0xc2da0000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vsub.f32 d9, d5, d7 :: Qd 0x43c50000 0x43c50000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vsub.f32 d9, d5, d7 :: Qd 0xc4db0000 0xc4db0000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vsub.f32 d0, d11, d12 :: Qd 0x45b311c3 0x45b311c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vsub.f32 d0, d11, d12 :: Qd 0x45b4d3c3 0x45b4d3c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vsub.f32 d7, d1, d6 :: Qd 0x43e7c592 0x43e7c592 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vsub.f32 d7, d1, d6 :: Qd 0x40e96d19 0x40e96d19 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vsub.f32 d0, d5, d2 :: Qd 0x44053f76 0x44053f76 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vsub.f32 d0, d5, d2 :: Qd 0x3b965394 0x3b965394 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vsub.f32 d10, d13, d15 :: Qd 0x42a3ffa4 0x42a3ffa4 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vsub.f32 d10, d13, d15 :: Qd 0x440dcfae 0x440dcfae Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vsub.f32 d10, d13, d15 :: Qd 0x4883b08e 0x4883b08e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vsub.f32 d10, d13, d15 :: Qd 0xc608d008 0xc608d008 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vsub.f32 d0, d1, d2 :: Qd 0xcda5da84 0xcda5da84 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vsub.f32 d0, d1, d2 :: Qd 0xce920233 0xce920233 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vsub.f32 d0, d1, d2 :: Qd 0xbf800000 0xbf800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x00000000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0xbf800000 0xbf800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vsub.f32 d0, d1, d2 :: Qd 0xbf800000 0xbf800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vsub.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vsub.f32 d0, d1, d2 :: Qd 0xbf800000 0xbf800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x00000000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vsub.f32 d0, d1, d2 :: Qd 0xbf800000 0xbf800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x00000000 +vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vsub.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vsub.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vsub.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMUL (fp) ---- vmul.f32 d0, d5, d2 :: Qd 0xc4833ce4 0xc4833ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmul.f32 d0, d5, d2 :: Qd 0x95dcde5d 0x94e29647 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmul.f32 d3, d4, d5 :: Qd 0xcddf4321 0xcddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmul.f32 d3, d4, d5 :: Qd 0x184bdfd0 0x17512718 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmul.f32 d10, d11, d2 :: Qd 0xcf050e7f 0xcf050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmul.f32 d10, d11, d2 :: Qd 0x9ad8b90a 0x99de557a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmul.f32 d9, d5, d7 :: Qd 0x4ec3063f 0x4ec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmul.f32 d9, d5, d7 :: Qd 0x1a218c7d 0x1925bb3c Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmul.f32 d0, d5, d2 :: Qd 0x5029254c 0x5029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmul.f32 d0, d5, d2 :: Qd 0x9c131100 0x9b16dfc1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmul.f32 d3, d4, d5 :: Qd 0x46fc6000 0x46fc6000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vmul.f32 d3, d4, d5 :: Qd 0x184bdfd0 0x17512718 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vmul.f32 d10, d11, d2 :: Qd 0x4c4a89cd 0x4c4a89cd Qm (i32)0x473e7300 Qn (i32)0x44882000 +vmul.f32 d10, d11, d2 :: Qd 0x1824f283 0x172937c8 Qm (i32)0x473e7300 Qn (i32)0x44882000 vmul.f32 d9, d5, d7 :: Qd 0x4db2c947 0x4db2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmul.f32 d9, d5, d7 :: Qd 0x1d819474 0x1c84ef4f Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmul.f32 d0, d11, d12 :: Qd 0x4ef90536 0x4ef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmul.f32 d0, d11, d12 :: Qd 0x195e2a0a 0x1863ea8b Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmul.f32 d7, d1, d6 :: Qd 0x3dab1f7a 0x3dab1f7a Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmul.f32 d7, d1, d6 :: Qd 0x0ec327cf 0x0dc8354d Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmul.f32 d0, d1, d2 :: Qd 0x488fe2c0 0x488fe2c0 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmul.f32 d0, d1, d2 :: Qd 0x1681a7d3 0x1585032e Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmul.f32 d3, d4, d5 :: Qd 0x4993b8e3 0x4993b8e3 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmul.f32 d3, d4, d5 :: Qd 0x1851b88c 0x17572694 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmul.f32 d10, d11, d2 :: Qd 0x474f9afc 0x474f9afc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmul.f32 d10, d11, d2 :: Qd 0x1684143b 0x15877fa6 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmul.f32 d9, d5, d7 :: Qd 0x4a657ac0 0x4a657ac0 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmul.f32 d9, d5, d7 :: Qd 0x1884af55 0x17881ec5 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmul.f32 d0, d11, d12 :: Qd 0x489eee1e 0x489eee1e Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmul.f32 d0, d11, d12 :: Qd 0x995b1d4f 0x9860c99a Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmul.f32 d7, d1, d6 :: Qd 0xc5500239 0xc5500239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmul.f32 d7, d1, d6 :: Qd 0x948d6cdc 0x9391163a Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmul.f32 d0, d5, d2 :: Qd 0xc01c7d07 0xc01c7d07 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmul.f32 d0, d5, d2 :: Qd 0x8f3627de 0x8e3adf32 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmul.f32 d10, d13, d15 :: Qd 0x488666a6 0x488666a6 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmul.f32 d10, d13, d15 :: Qd 0x97abd669 0x96b04959 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmul.f32 d10, d13, d15 :: Qd 0x4f115379 0x4f115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmul.f32 d10, d13, d15 :: Qd 0x19a5c7d1 0x18aa129c Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmul.f32 d0, d1, d2 :: Qd 0x5d6e81fd 0x5d6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmul.f32 d0, d1, d2 :: Qd 0x2230ec71 0x21358117 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmul.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmul.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmul.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmul.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x3f800000 vmul.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmul.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmul.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmul.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLA (fp) ---- vmla.f32 d0, d5, d2 :: Qd 0xc4831ce4 0xc4831ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmla.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmla.f32 d3, d4, d5 :: Qd 0xcddf4321 0xcddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmla.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmla.f32 d10, d11, d2 :: Qd 0xcf050e7f 0xcf050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmla.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmla.f32 d9, d5, d7 :: Qd 0x4ec3063f 0x4ec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmla.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmla.f32 d0, d5, d2 :: Qd 0x5029254c 0x5029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmla.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmla.f32 d3, d4, d5 :: Qd 0x46fc6200 0x46fc6200 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vmla.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vmla.f32 d10, d11, d2 :: Qd 0x4c4a89cd 0x4c4a89cd Qm (i32)0x473e7300 Qn (i32)0x44882000 +vmla.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vmla.f32 d9, d5, d7 :: Qd 0x4db2c947 0x4db2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmla.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmla.f32 d0, d11, d12 :: Qd 0x4ef90536 0x4ef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmla.f32 d0, d11, d12 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmla.f32 d7, d1, d6 :: Qd 0x3f8ab1f8 0x3f8ab1f8 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmla.f32 d7, d1, d6 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmla.f32 d0, d1, d2 :: Qd 0x488fe2e0 0x488fe2e0 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmla.f32 d3, d4, d5 :: Qd 0x4993b8eb 0x4993b8eb Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmla.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmla.f32 d10, d11, d2 :: Qd 0x474f9bfc 0x474f9bfc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmla.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmla.f32 d9, d5, d7 :: Qd 0x4a657ac4 0x4a657ac4 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmla.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmla.f32 d0, d11, d12 :: Qd 0x489eee3e 0x489eee3e Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmla.f32 d0, d11, d12 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmla.f32 d7, d1, d6 :: Qd 0xc54ff239 0xc54ff239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmla.f32 d7, d1, d6 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmla.f32 d0, d5, d2 :: Qd 0xbfb8fa0e 0xbfb8fa0e Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmla.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmla.f32 d10, d13, d15 :: Qd 0x488666c6 0x488666c6 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmla.f32 d10, d13, d15 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmla.f32 d10, d13, d15 :: Qd 0x4f115379 0x4f115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmla.f32 d10, d13, d15 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmla.f32 d0, d1, d2 :: Qd 0x5d6e81fd 0x5d6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLA (fp by scalar) ---- vmla.f32 d0, d1, d4[0] :: Qd 0x45341000 0x45341000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 +vmla.f32 d0, d1, d4[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 vmla.f32 d31, d8, d7[1] :: Qd 0xc6833e00 0xc6833e00 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmla.f32 d31, d8, d7[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmla.f32 d4, d8, d15[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 d4, d8, d15[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 d7, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmla.f32 d7, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmla.f32 d17, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 d17, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmla.f32 d7, d8, d1[0] :: Qd 0x447a3fff 0x447a3fff Qm (i32)0x64078678 Qn (i32)0x1fec1e4a +vmla.f32 d7, d8, d1[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x64078678 Qn (i32)0x1fec1e4a vmla.f32 d7, d24, d1[0] :: Qd 0x65a96816 0x65a96816 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmla.f32 d7, d24, d1[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmla.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmla.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmla.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLS (fp) ---- vmls.f32 d0, d5, d2 :: Qd 0x44835ce4 0x44835ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmls.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmls.f32 d3, d4, d5 :: Qd 0x4ddf4321 0x4ddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmls.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmls.f32 d10, d11, d2 :: Qd 0x4f050e7f 0x4f050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmls.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmls.f32 d9, d5, d7 :: Qd 0xcec3063f 0xcec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmls.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmls.f32 d0, d5, d2 :: Qd 0xd029254c 0xd029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmls.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmls.f32 d3, d4, d5 :: Qd 0xc6fc5e00 0xc6fc5e00 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vmls.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vmls.f32 d10, d11, d2 :: Qd 0xcc4a89cd 0xcc4a89cd Qm (i32)0x473e7300 Qn (i32)0x44882000 +vmls.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vmls.f32 d9, d5, d7 :: Qd 0xcdb2c947 0xcdb2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmls.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmls.f32 d0, d11, d12 :: Qd 0xcef90536 0xcef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmls.f32 d0, d11, d12 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmls.f32 d7, d1, d6 :: Qd 0x3f6a9c11 0x3f6a9c11 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmls.f32 d7, d1, d6 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmls.f32 d0, d1, d2 :: Qd 0xc88fe2a0 0xc88fe2a0 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmls.f32 d3, d4, d5 :: Qd 0xc993b8db 0xc993b8db Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmls.f32 d3, d4, d5 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmls.f32 d10, d11, d2 :: Qd 0xc74f99fc 0xc74f99fc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmls.f32 d10, d11, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmls.f32 d9, d5, d7 :: Qd 0xca657abc 0xca657abc Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmls.f32 d9, d5, d7 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmls.f32 d0, d11, d12 :: Qd 0xc89eedfe 0xc89eedfe Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmls.f32 d0, d11, d12 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmls.f32 d7, d1, d6 :: Qd 0x45501239 0x45501239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmls.f32 d7, d1, d6 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmls.f32 d0, d5, d2 :: Qd 0x405c7d07 0x405c7d07 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmls.f32 d0, d5, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmls.f32 d10, d13, d15 :: Qd 0xc8866686 0xc8866686 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmls.f32 d10, d13, d15 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmls.f32 d10, d13, d15 :: Qd 0xcf115379 0xcf115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmls.f32 d10, d13, d15 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmls.f32 d0, d1, d2 :: Qd 0xdd6e81fd 0xdd6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMLS (fp by scalar) ---- vmls.f32 d0, d1, d4[0] :: Qd 0xc533f000 0xc533f000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 +vmls.f32 d0, d1, d4[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x41c00000 Qn (i32)0x42f00000 vmls.f32 d31, d8, d7[1] :: Qd 0x46834200 0x46834200 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmls.f32 d31, d8, d7[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x430c0000 Qn (i32)0xc2f00000 +vmls.f32 d4, d8, d15[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 d4, d8, d15[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 d7, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmls.f32 d7, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000000 Qn (i16)0x0000000c +vmls.f32 d17, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 d17, d8, d1[1] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x80000001 Qn (i32)0x80000002 vmls.f32 d7, d8, d1[0] :: Qd 0xc479bfff 0xc479bfff Qm (i32)0x64078678 Qn (i32)0x1fec1e4a +vmls.f32 d7, d8, d1[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x64078678 Qn (i32)0x1fec1e4a vmls.f32 d7, d24, d1[0] :: Qd 0xe5a96816 0xe5a96816 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmls.f32 d7, d24, d1[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x5368d4a5 Qn (i32)0x51ba43b7 +vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmls.f32 d0, d1, d2[0] :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmls.f32 d0, d1, d2[0] :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmls.f32 d0, d1, d2[0] :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmls.f32 d0, d1, d2[0] :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VABD (fp) ---- vabd.f32 d0, d5, d2 :: Qd 0x428937a8 0x428937a8 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vabd.f32 d0, d5, d2 :: Qd 0x42364659 0x42364659 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vabd.f32 d3, d4, d5 :: Qd 0x48aa824f 0x48aa824f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vabd.f32 d3, d4, d5 :: Qd 0x44a84000 0x44a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vabd.f32 d10, d11, d2 :: Qd 0x47b8a6bd 0x47b8a6bd Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vabd.f32 d10, d11, d2 :: Qd 0x4732da7a 0x4732da7a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vabd.f32 d9, d5, d7 :: Qd 0x4799e961 0x4799e961 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vabd.f32 d9, d5, d7 :: Qd 0x46855200 0x46855200 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vabd.f32 d0, d5, d2 :: Qd 0x484623e2 0x484623e2 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vabd.f32 d0, d5, d2 :: Qd 0x4872bcb1 0x4872bcb1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vabd.f32 d3, d4, d5 :: Qd 0x44a54000 0x44a54000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vabd.f32 d3, d4, d5 :: Qd 0x44a84000 0x44a84000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vabd.f32 d10, d11, d2 :: Qd 0x473a3200 0x473a3200 Qm (i32)0x473e7300 Qn (i32)0x44882000 +vabd.f32 d10, d11, d2 :: Qd 0x44882000 0x44882000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vabd.f32 d9, d5, d7 :: Qd 0x49d5d958 0x49d5d958 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vabd.f32 d9, d5, d7 :: Qd 0x49d5e008 0x49d5e008 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vabd.f32 d0, d11, d12 :: Qd 0x48aafc92 0x48aafc92 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vabd.f32 d0, d11, d12 :: Qd 0x45b75812 0x45b75812 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vabd.f32 d7, d1, d6 :: Qd 0x4207fdf5 0x4207fdf5 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vabd.f32 d7, d1, d6 :: Qd 0x3b210e02 0x3b210e02 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vabd.f32 d0, d1, d2 :: Qd 0x45257000 0x45257000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vabd.f32 d0, d1, d2 :: Qd 0x42d60000 0x42d60000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vabd.f32 d3, d4, d5 :: Qd 0x43ff4ccc 0x43ff4ccc Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vabd.f32 d3, d4, d5 :: Qd 0x44ad1333 0x44ad1333 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vabd.f32 d10, d11, d2 :: Qd 0x43bd4b23 0x43bd4b23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vabd.f32 d10, d11, d2 :: Qd 0x42da0000 0x42da0000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vabd.f32 d9, d5, d7 :: Qd 0x43c50000 0x43c50000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vabd.f32 d9, d5, d7 :: Qd 0x44db0000 0x44db0000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vabd.f32 d0, d11, d12 :: Qd 0x45b311c3 0x45b311c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vabd.f32 d0, d11, d12 :: Qd 0x45b4d3c3 0x45b4d3c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vabd.f32 d7, d1, d6 :: Qd 0x43e7c592 0x43e7c592 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vabd.f32 d7, d1, d6 :: Qd 0x40e96d19 0x40e96d19 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vabd.f32 d0, d5, d2 :: Qd 0x44053f76 0x44053f76 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vabd.f32 d0, d5, d2 :: Qd 0x3b965394 0x3b965394 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vabd.f32 d10, d13, d15 :: Qd 0x42a3ffa4 0x42a3ffa4 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vabd.f32 d10, d13, d15 :: Qd 0x440dcfae 0x440dcfae Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vabd.f32 d10, d13, d15 :: Qd 0x4883b08e 0x4883b08e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vabd.f32 d10, d13, d15 :: Qd 0x4608d008 0x4608d008 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vabd.f32 d0, d1, d2 :: Qd 0x4da5da84 0x4da5da84 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vabd.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e920233 Qm (i32)0x4e511724 Qn (i32)0x4e920233 ---- VPADD (fp) ---- vpadd.f32 d0, d5, d2 :: Qd 0xc2b64659 0x423851ec Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vpadd.f32 d0, d5, d2 :: Qd 0xc2b64659 0x1342e1a3 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vpadd.f32 d3, d4, d5 :: Qd 0x45284000 0xc929da0f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vpadd.f32 d3, d4, d5 :: Qd 0x45284000 0x1342e1a3 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vpadd.f32 d10, d11, d2 :: Qd 0xc7b2da7a 0x47be7300 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vpadd.f32 d10, d11, d2 :: Qd 0xc7b2da7a 0x1342e1a3 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vpadd.f32 d9, d5, d7 :: Qd 0x47055200 0x483b3de1 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vpadd.f32 d9, d5, d7 :: Qd 0x47055200 0x1342e1a3 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vpadd.f32 d0, d5, d2 :: Qd 0xc8f2bcb1 0xc7b2633d Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vpadd.f32 d0, d5, d2 :: Qd 0xc8f2bcb1 0x1342e1a3 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vpadd.f32 d3, d4, d5 :: Qd 0x45284000 0x42400000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vpadd.f32 d3, d4, d5 :: Qd 0x45284000 0x1342e1a3 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vpadd.f32 d10, d11, d2 :: Qd 0x45082000 0x47be7300 Qm (i32)0x473e7300 Qn (i32)0x44882000 +vpadd.f32 d10, d11, d2 :: Qd 0x45082000 0x1342e1a3 Qm (i32)0x473e7300 Qn (i32)0x44882000 vpadd.f32 d9, d5, d7 :: Qd 0x4a55e008 0x43d60000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vpadd.f32 d9, d5, d7 :: Qd 0x4a55e008 0x1342e1a3 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vpadd.f32 d0, d11, d12 :: Qd 0x46375812 0x492dd9f2 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vpadd.f32 d0, d11, d12 :: Qd 0x46375812 0x1342e1a3 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vpadd.f32 d7, d1, d6 :: Qd 0x3ba10e02 0x42880079 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vpadd.f32 d7, d1, d6 :: Qd 0x3ba10e02 0x1342e1a3 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vpadd.f32 d0, d1, d2 :: Qd 0x43560000 0x45ac2000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vpadd.f32 d0, d1, d2 :: Qd 0x43560000 0x1342e1a3 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vpadd.f32 d3, d4, d5 :: Qd 0x452d1333 0x44da8000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vpadd.f32 d3, d4, d5 :: Qd 0x452d1333 0x1342e1a3 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vpadd.f32 d10, d11, d2 :: Qd 0x435a0000 0x4473cb23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vpadd.f32 d10, d11, d2 :: Qd 0x435a0000 0x1342e1a3 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vpadd.f32 d9, d5, d7 :: Qd 0x455b0000 0x45862000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vpadd.f32 d9, d5, d7 :: Qd 0x455b0000 0x1342e1a3 Qm (i32)0x45062000 Qn (i32)0x44db0000 vpadd.f32 d0, d11, d12 :: Qd 0xc634d3c3 0xc2e10000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vpadd.f32 d0, d11, d12 :: Qd 0xc634d3c3 0x1342e1a3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vpadd.f32 d7, d1, d6 :: Qd 0xc1696d19 0x44641fde Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vpadd.f32 d7, d1, d6 :: Qd 0xc1696d19 0x1342e1a3 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vpadd.f32 d0, d5, d2 :: Qd 0xbc165394 0x44853f2b Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vpadd.f32 d0, d5, d2 :: Qd 0xbc165394 0x1342e1a3 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vpadd.f32 d10, d13, d15 :: Qd 0xc48dcfae 0xc4729f73 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vpadd.f32 d10, d13, d15 :: Qd 0xc48dcfae 0x1342e1a3 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vpadd.f32 d10, d13, d15 :: Qd 0x4688d008 0x4907f70e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vpadd.f32 d10, d13, d15 :: Qd 0x4688d008 0x1342e1a3 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vpadd.f32 d0, d1, d2 :: Qd 0x4f120233 0x4ed11724 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vpadd.f32 d0, d1, d2 :: Qd 0x4f120233 0x1342e1a3 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x1342e1a3 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x1342e1a3 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x1342e1a3 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x1342e1a3 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x1342e1a3 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x1342e1a3 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x1342e1a3 Qm (i32)0x00000000 Qn (i32)0x3f800000 vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x1342e1a3 Qm (i32)0x00000000 Qn (i32)0x00000000 vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x1342e1a3 Qm (i32)0x00000000 Qn (i32)0x7f800000 vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x1342e1a3 Qm (i32)0x00000000 Qn (i32)0xff800000 vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x1342e1a3 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x1342e1a3 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x1342e1a3 Qm (i32)0x7f800000 Qn (i32)0x00000000 vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x1342e1a3 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x1342e1a3 Qm (i32)0x7f800000 Qn (i32)0xff800000 vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vpadd.f32 d0, d1, d2 :: Qd 0x7fc00000 0x1342e1a3 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x40000000 0x1342e1a3 Qm (i32)0xff800000 Qn (i32)0x3f800000 vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vpadd.f32 d0, d1, d2 :: Qd 0x00000000 0x1342e1a3 Qm (i32)0xff800000 Qn (i32)0x00000000 vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vpadd.f32 d0, d1, d2 :: Qd 0x7f800000 0x1342e1a3 Qm (i32)0xff800000 Qn (i32)0x7f800000 vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vpadd.f32 d0, d1, d2 :: Qd 0xff800000 0x1342e1a3 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCVT (integer <-> fp) ---- vcvt.u32.f32 d0, d1 :: Qd 0x00000003 0x00000003 Qm (i32)0x404ccccd +vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.u32.f32 d10, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vcvt.u32.f32 d10, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.u32.f32 d15, d4 :: Qd 0xb2d05e00 0xb2d05e00 Qm (i32)0x4f32d05e +vcvt.u32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x4f32d05e +vcvt.u32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 +vcvt.u32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.u32.f32 d12, d8 :: Qd 0x00000007 0x00000007 Qm (i32)0x40fff800 +vcvt.u32.f32 d12, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x40fff800 +vcvt.u32.f32 d12, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.u32.f32 d12, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.s32.f32 d0, d1 :: Qd 0x00000003 0x00000003 Qm (i32)0x404ccccd +vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.s32.f32 d20, d21 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x64cb49b4 +vcvt.s32.f32 d20, d21 :: Qd 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.s32.f32 d15, d4 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x4f32d05e +vcvt.s32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0x4f32d05e +vcvt.s32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 d15, d4 :: Qd 0xfffffff9 0xfffffff9 Qm (i32)0xc0e33333 +vcvt.s32.f32 d15, d4 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.s32.f32 d12, d8 :: Qd 0x00000007 0x00000007 Qm (i32)0x40fff800 +vcvt.s32.f32 d12, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x40fff800 vcvt.s32.f32 d12, d8 :: Qd 0xfffffff9 0xfffffff9 Qm (i32)0xc0fff800 +vcvt.s32.f32 d12, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.f32.u32 d0, d1 :: Qd 0x40e00000 0x40e00000 Qm (i32)0x00000007 +vcvt.f32.u32 d0, d1 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x00000007 vcvt.f32.u32 d10, d11 :: Qd 0x4f000000 0x4f000000 Qm (i32)0x80000000 +vcvt.f32.u32 d10, d11 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x80000000 vcvt.f32.u32 d0, d1 :: Qd 0x4f000000 0x4f000000 Qm (i32)0x80000001 +vcvt.f32.u32 d0, d1 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x80000001 vcvt.f32.u32 d24, d26 :: Qd 0x4f000000 0x4f000000 Qm (i32)0x7fffffff +vcvt.f32.u32 d24, d26 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x7fffffff vcvt.f32.u32 d0, d14 :: Qd 0x4e4282f4 0x4e4282f4 Qm (i32)0x30a0bcef +vcvt.f32.u32 d0, d14 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x30a0bcef vcvt.f32.s32 d0, d1 :: Qd 0x40e00000 0x40e00000 Qm (i32)0x00000007 +vcvt.f32.s32 d0, d1 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x00000007 vcvt.f32.s32 d30, d31 :: Qd 0xcf000000 0xcf000000 Qm (i32)0x80000000 +vcvt.f32.s32 d30, d31 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x80000000 vcvt.f32.s32 d0, d1 :: Qd 0xcf000000 0xcf000000 Qm (i32)0x80000001 +vcvt.f32.s32 d0, d1 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x80000001 vcvt.f32.s32 d0, d1 :: Qd 0x4f000000 0x4f000000 Qm (i32)0x7fffffff +vcvt.f32.s32 d0, d1 :: Qd 0x4da8e8c9 0x4da0e0f9 Qm (i32)0x7fffffff +vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.u32.f32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 +vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 +vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 vcvt.u32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.s32.f32 d0, d1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x7f800000 +vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.s32.f32 d0, d1 :: Qd 0x80000000 0x80000000 Qm (i32)0xff800000 +vcvt.s32.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCVT (fixed <-> fp) ---- vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000019 0x00000019 Qm (i32)0x404ccccd +vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.u32.f32 d10, d11, #1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vcvt.u32.f32 d10, d11, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.u32.f32 d15, d4, #32 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4f32d05e +vcvt.u32.f32 d15, d4, #32 :: Qd 0x00000000 0x00000000 Qm (i32)0x4f32d05e +vcvt.u32.f32 d15, d4, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 d15, d4, #7 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.u32.f32 d15, d4, #4 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 +vcvt.u32.f32 d15, d4, #4 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.u32.f32 d12, d8, #3 :: Qd 0x0000003f 0x0000003f Qm (i32)0x40fff800 +vcvt.u32.f32 d12, d8, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x40fff800 +vcvt.u32.f32 d12, d8, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.u32.f32 d12, d8, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.s32.f32 d0, d1, #5 :: Qd 0x00000066 0x00000066 Qm (i32)0x404ccccd +vcvt.s32.f32 d0, d1, #5 :: Qd 0x00000000 0x00000000 Qm (i32)0x404ccccd vcvt.s32.f32 d20, d21, #1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x64cb49b4 +vcvt.s32.f32 d20, d21, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0x64cb49b4 vcvt.s32.f32 d15, d4, #8 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x4f32d05e +vcvt.s32.f32 d15, d4, #8 :: Qd 0x00000000 0x00000000 Qm (i32)0x4f32d05e vcvt.s32.f32 d15, d4, #2 :: Qd 0xfffffffe 0xfffffffe Qm (i32)0xbf000000 +vcvt.s32.f32 d15, d4, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf000000 vcvt.s32.f32 d15, d4, #1 :: Qd 0xfffffff2 0xfffffff2 Qm (i32)0xc0e33333 +vcvt.s32.f32 d15, d4, #1 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0e33333 vcvt.s32.f32 d12, d8, #2 :: Qd 0x0000001f 0x0000001f Qm (i32)0x40fff800 +vcvt.s32.f32 d12, d8, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0x40fff800 vcvt.s32.f32 d12, d8, #2 :: Qd 0xffffffe1 0xffffffe1 Qm (i32)0xc0fff800 +vcvt.s32.f32 d12, d8, #2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc0fff800 vcvt.f32.u32 d0, d1, #5 :: Qd 0x3e600000 0x3e600000 Qm (i32)0x00000007 +vcvt.f32.u32 d0, d1, #5 :: Qd 0x4b28e8c9 0x4b20e0f9 Qm (i32)0x00000007 vcvt.f32.u32 d10, d11, #9 :: Qd 0x4a800000 0x4a800000 Qm (i32)0x80000000 +vcvt.f32.u32 d10, d11, #9 :: Qd 0x4928e8c9 0x4920e0f9 Qm (i32)0x80000000 vcvt.f32.u32 d0, d1, #4 :: Qd 0x4d000000 0x4d000000 Qm (i32)0x80000001 +vcvt.f32.u32 d0, d1, #4 :: Qd 0x4ba8e8c9 0x4ba0e0f9 Qm (i32)0x80000001 vcvt.f32.u32 d24, d26, #6 :: Qd 0x4c000000 0x4c000000 Qm (i32)0x7fffffff +vcvt.f32.u32 d24, d26, #6 :: Qd 0x4aa8e8c9 0x4aa0e0f9 Qm (i32)0x7fffffff vcvt.f32.u32 d0, d14, #5 :: Qd 0x4bc282f4 0x4bc282f4 Qm (i32)0x30a0bcef +vcvt.f32.u32 d0, d14, #5 :: Qd 0x4b28e8c9 0x4b20e0f9 Qm (i32)0x30a0bcef vcvt.f32.s32 d0, d1, #12 :: Qd 0x3ae00000 0x3ae00000 Qm (i32)0x00000007 +vcvt.f32.s32 d0, d1, #12 :: Qd 0x47a8e8c9 0x47a0e0f9 Qm (i32)0x00000007 vcvt.f32.s32 d30, d31, #8 :: Qd 0xcb000000 0xcb000000 Qm (i32)0x80000000 +vcvt.f32.s32 d30, d31, #8 :: Qd 0x49a8e8c9 0x49a0e0f9 Qm (i32)0x80000000 vcvt.f32.s32 d0, d1, #1 :: Qd 0xce800000 0xce800000 Qm (i32)0x80000001 +vcvt.f32.s32 d0, d1, #1 :: Qd 0x4d28e8c9 0x4d20e0f9 Qm (i32)0x80000001 vcvt.f32.s32 d0, d1, #6 :: Qd 0x4c000000 0x4c000000 Qm (i32)0x7fffffff +vcvt.f32.s32 d0, d1, #6 :: Qd 0x4aa8e8c9 0x4aa0e0f9 Qm (i32)0x7fffffff vcvt.f32.s32 d0, d14, #2 :: Qd 0x4d4282f4 0x4d4282f4 Qm (i32)0x30a0bcef +vcvt.f32.s32 d0, d14, #2 :: Qd 0x4ca8e8c9 0x4ca0e0f9 Qm (i32)0x30a0bcef +vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.u32.f32 d0, d1, #3 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 +vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.u32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 +vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vcvt.s32.f32 d0, d1, #3 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x7f800000 +vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcvt.s32.f32 d0, d1, #3 :: Qd 0x80000000 0x80000000 Qm (i32)0xff800000 +vcvt.s32.f32 d0, d1, #3 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VMAX (fp) ---- vmax.f32 d0, d5, d2 :: Qd 0x41b851ec 0x41b851ec Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmax.f32 d0, d5, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmax.f32 d3, d4, d5 :: Qd 0x44a84000 0x44a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmax.f32 d3, d4, d5 :: Qd 0x44a84000 0x44a84000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vmax.f32 d10, d11, d2 :: Qd 0x473e7300 0x473e7300 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vmax.f32 d10, d11, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmax.f32 d9, d5, d7 :: Qd 0x47bb3de1 0x47bb3de1 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmax.f32 d9, d5, d7 :: Qd 0x46855200 0x46855200 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vmax.f32 d0, d5, d2 :: Qd 0xc732633d 0xc732633d Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmax.f32 d0, d5, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vmax.f32 d3, d4, d5 :: Qd 0x44a84003 0x44a84003 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vmax.f32 d3, d4, d5 :: Qd 0x44a84003 0x44a84003 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vmax.f32 d10, d11, d2 :: Qd 0x473e73b3 0x473e73b3 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vmax.f32 d10, d11, d2 :: Qd 0x44882666 0x44882666 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vmax.f32 d9, d5, d7 :: Qd 0x49d5e008 0x49d5e008 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmax.f32 d9, d5, d7 :: Qd 0x49d5e008 0x49d5e008 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmax.f32 d0, d11, d12 :: Qd 0x48add9f2 0x48add9f2 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmax.f32 d0, d11, d12 :: Qd 0x45b75812 0x45b75812 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmax.f32 d7, d1, d6 :: Qd 0x42080079 0x42080079 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmax.f32 d7, d1, d6 :: Qd 0x3b210e02 0x3b210e02 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmax.f32 d0, d1, d2 :: Qd 0x452c2000 0x452c2000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmax.f32 d0, d1, d2 :: Qd 0x42d60000 0x42d60000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmax.f32 d3, d4, d5 :: Qd 0x44ad1333 0x44ad1333 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmax.f32 d3, d4, d5 :: Qd 0x44ad1333 0x44ad1333 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmax.f32 d10, d11, d2 :: Qd 0x43f3cb23 0x43f3cb23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmax.f32 d10, d11, d2 :: Qd 0x42da0000 0x42da0000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmax.f32 d9, d5, d7 :: Qd 0x45062000 0x45062000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmax.f32 d9, d5, d7 :: Qd 0x44db0000 0x44db0000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vmax.f32 d0, d11, d12 :: Qd 0xc2610000 0xc2610000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vmax.f32 d0, d11, d12 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmax.f32 d7, d1, d6 :: Qd 0x43e41fde 0x43e41fde Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmax.f32 d7, d1, d6 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vmax.f32 d0, d5, d2 :: Qd 0x44053f2b 0x44053f2b Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vmax.f32 d0, d5, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmax.f32 d10, d13, d15 :: Qd 0xc3f29f73 0xc3f29f73 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmax.f32 d10, d13, d15 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmax.f32 d10, d13, d15 :: Qd 0x4887f70e 0x4887f70e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmax.f32 d10, d13, d15 :: Qd 0x4608d008 0x4608d008 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmax.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e920233 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vmax.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e920233 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 vmax.f32 d0, d1, d2 :: Qd 0x3a800000 0x3a800000 Qm (i32)0x3a800000 Qn (i32)0xba800000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x3a800000 Qn (i32)0xba800000 +vmax.f32 d0, d1, d2 :: Qd 0x3a800000 0x3a800000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vmax.f32 d0, d1, d2 :: Qd 0x3a800000 0x3a800000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vmax.f32 d0, d1, d2 :: Qd 0x45126004 0x45126004 Qm (i32)0x45126004 Qn (i32)0x45125ffc +vmax.f32 d0, d1, d2 :: Qd 0x45125ffc 0x45125ffc Qm (i32)0x45126004 Qn (i32)0x45125ffc vmax.f32 d0, d1, d2 :: Qd 0xc5125ffc 0xc5125ffc Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vmax.f32 d0, d1, d2 :: Qd 0x47bff200 0x47bff200 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vmax.f32 d0, d1, d2 :: Qd 0x47bff200 0x47bff200 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0xff800000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x00000000 +vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vmax.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vmax.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VMIN (fp) ---- vmin.f32 d0, d5, d2 :: Qd 0xc2364659 0xc2364659 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vmin.f32 d0, d5, d2 :: Qd 0xc2364659 0xc2364659 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vmin.f32 d3, d4, d5 :: Qd 0xc8a9da0f 0xc8a9da0f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmin.f32 d3, d4, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vmin.f32 d10, d11, d2 :: Qd 0xc732da7a 0xc732da7a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmin.f32 d10, d11, d2 :: Qd 0xc732da7a 0xc732da7a Qm (i32)0x473e7300 Qn (i32)0xc732da7a vmin.f32 d9, d5, d7 :: Qd 0x46855200 0x46855200 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmin.f32 d9, d5, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vmin.f32 d0, d5, d2 :: Qd 0xc872bcb1 0xc872bcb1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmin.f32 d0, d5, d2 :: Qd 0xc872bcb1 0xc872bcb1 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vmin.f32 d3, d4, d5 :: Qd 0x41c70126 0x41c70126 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vmin.f32 d3, d4, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x41c70126 Qn (i32)0x44a84003 vmin.f32 d10, d11, d2 :: Qd 0x44882666 0x44882666 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vmin.f32 d10, d11, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x473e73b3 Qn (i32)0x44882666 vmin.f32 d9, d5, d7 :: Qd 0x43560000 0x43560000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vmin.f32 d9, d5, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x43560000 Qn (i32)0x49d5e008 vmin.f32 d0, d11, d12 :: Qd 0x45b75812 0x45b75812 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vmin.f32 d0, d11, d12 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vmin.f32 d7, d1, d6 :: Qd 0x3b210e02 0x3b210e02 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vmin.f32 d7, d1, d6 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x42080079 Qn (i32)0x3b210e02 vmin.f32 d0, d1, d2 :: Qd 0x42d60000 0x42d60000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x452c2000 Qn (i32)0x42d60000 vmin.f32 d3, d4, d5 :: Qd 0x445a8000 0x445a8000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vmin.f32 d3, d4, d5 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vmin.f32 d10, d11, d2 :: Qd 0x42da0000 0x42da0000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vmin.f32 d10, d11, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vmin.f32 d9, d5, d7 :: Qd 0x44db0000 0x44db0000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmin.f32 d9, d5, d7 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x45062000 Qn (i32)0x44db0000 +vmin.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0xc5b4d3c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmin.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0xc5b4d3c3 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vmin.f32 d7, d1, d6 :: Qd 0xc0e96d19 0xc0e96d19 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmin.f32 d7, d1, d6 :: Qd 0xc0e96d19 0xc0e96d19 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vmin.f32 d0, d5, d2 :: Qd 0xbb965394 0xbb965394 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmin.f32 d0, d5, d2 :: Qd 0xbb965394 0xbb965394 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vmin.f32 d10, d13, d15 :: Qd 0xc40dcfae 0xc40dcfae Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vmin.f32 d10, d13, d15 :: Qd 0xc40dcfae 0xc40dcfae Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vmin.f32 d10, d13, d15 :: Qd 0x4608d008 0x4608d008 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vmin.f32 d10, d13, d15 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x4887f70e Qn (i32)0x4608d008 vmin.f32 d0, d1, d2 :: Qd 0x4e511724 0x4e511724 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x4e511724 Qn (i32)0x4e920233 vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vmin.f32 d0, d1, d2 :: Qd 0xba800000 0xba800000 Qm (i32)0x3a800000 Qn (i32)0xba800000 vmin.f32 d0, d1, d2 :: Qd 0xba800000 0xba800000 Qm (i32)0x3a800000 Qn (i32)0xba800000 vmin.f32 d0, d1, d2 :: Qd 0xba800000 0xba800000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xba800000 Qn (i32)0x3a800000 vmin.f32 d0, d1, d2 :: Qd 0x45125ffc 0x45125ffc Qm (i32)0x45126004 Qn (i32)0x45125ffc +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x45126004 Qn (i32)0x45125ffc +vmin.f32 d0, d1, d2 :: Qd 0xc5126004 0xc5126004 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vmin.f32 d0, d1, d2 :: Qd 0xc5126004 0xc5126004 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vmin.f32 d0, d1, d2 :: Qd 0x47ae5e00 0x47ae5e00 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0xff800000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x3f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x3f800000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0x131b1a1b 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x7f800000 +vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 vmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VPMAX (fp) ---- vpmax.f32 d0, d5, d2 :: Qd 0xc2364659 0x41b851ec Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vpmax.f32 d0, d5, d2 :: Qd 0xc2364659 0x131b1a1b Qm (i32)0x41b851ec Qn (i32)0xc2364659 vpmax.f32 d3, d4, d5 :: Qd 0x44a84000 0xc8a9da0f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vpmax.f32 d3, d4, d5 :: Qd 0x44a84000 0x131b1a1b Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vpmax.f32 d10, d11, d2 :: Qd 0xc732da7a 0x473e7300 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vpmax.f32 d10, d11, d2 :: Qd 0xc732da7a 0x131b1a1b Qm (i32)0x473e7300 Qn (i32)0xc732da7a vpmax.f32 d9, d5, d7 :: Qd 0x46855200 0x47bb3de1 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vpmax.f32 d9, d5, d7 :: Qd 0x46855200 0x131b1a1b Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vpmax.f32 d0, d5, d2 :: Qd 0xc872bcb1 0xc732633d Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vpmax.f32 d0, d5, d2 :: Qd 0xc872bcb1 0x131b1a1b Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vpmax.f32 d3, d4, d5 :: Qd 0x44a84003 0x41c70126 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vpmax.f32 d3, d4, d5 :: Qd 0x44a84003 0x131b1a1b Qm (i32)0x41c70126 Qn (i32)0x44a84003 vpmax.f32 d10, d11, d2 :: Qd 0x44882666 0x473e73b3 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vpmax.f32 d10, d11, d2 :: Qd 0x44882666 0x131b1a1b Qm (i32)0x473e73b3 Qn (i32)0x44882666 vpmax.f32 d9, d5, d7 :: Qd 0x49d5e008 0x43560000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vpmax.f32 d9, d5, d7 :: Qd 0x49d5e008 0x131b1a1b Qm (i32)0x43560000 Qn (i32)0x49d5e008 vpmax.f32 d0, d11, d12 :: Qd 0x45b75812 0x48add9f2 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vpmax.f32 d0, d11, d12 :: Qd 0x45b75812 0x131b1a1b Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vpmax.f32 d7, d1, d6 :: Qd 0x3b210e02 0x42080079 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vpmax.f32 d7, d1, d6 :: Qd 0x3b210e02 0x131b1a1b Qm (i32)0x42080079 Qn (i32)0x3b210e02 vpmax.f32 d0, d1, d2 :: Qd 0x42d60000 0x452c2000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vpmax.f32 d0, d1, d2 :: Qd 0x42d60000 0x131b1a1b Qm (i32)0x452c2000 Qn (i32)0x42d60000 vpmax.f32 d3, d4, d5 :: Qd 0x44ad1333 0x445a8000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vpmax.f32 d3, d4, d5 :: Qd 0x44ad1333 0x131b1a1b Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vpmax.f32 d10, d11, d2 :: Qd 0x42da0000 0x43f3cb23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vpmax.f32 d10, d11, d2 :: Qd 0x42da0000 0x131b1a1b Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vpmax.f32 d9, d5, d7 :: Qd 0x44db0000 0x45062000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vpmax.f32 d9, d5, d7 :: Qd 0x44db0000 0x131b1a1b Qm (i32)0x45062000 Qn (i32)0x44db0000 vpmax.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0xc2610000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vpmax.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0x131b1a1b Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vpmax.f32 d7, d1, d6 :: Qd 0xc0e96d19 0x43e41fde Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vpmax.f32 d7, d1, d6 :: Qd 0xc0e96d19 0x131b1a1b Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vpmax.f32 d0, d5, d2 :: Qd 0xbb965394 0x44053f2b Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vpmax.f32 d0, d5, d2 :: Qd 0xbb965394 0x131b1a1b Qm (i32)0x44053f2b Qn (i32)0xbb965394 vpmax.f32 d10, d13, d15 :: Qd 0xc40dcfae 0xc3f29f73 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vpmax.f32 d10, d13, d15 :: Qd 0xc40dcfae 0x131b1a1b Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vpmax.f32 d10, d13, d15 :: Qd 0x4608d008 0x4887f70e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vpmax.f32 d10, d13, d15 :: Qd 0x4608d008 0x131b1a1b Qm (i32)0x4887f70e Qn (i32)0x4608d008 vpmax.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e511724 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vpmax.f32 d0, d1, d2 :: Qd 0x4e920233 0x131b1a1b Qm (i32)0x4e511724 Qn (i32)0x4e920233 vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0x00000000 vpmax.f32 d0, d1, d2 :: Qd 0xba800000 0x3a800000 Qm (i32)0x3a800000 Qn (i32)0xba800000 +vpmax.f32 d0, d1, d2 :: Qd 0xba800000 0x131b1a1b Qm (i32)0x3a800000 Qn (i32)0xba800000 vpmax.f32 d0, d1, d2 :: Qd 0x3a800000 0xba800000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vpmax.f32 d0, d1, d2 :: Qd 0x3a800000 0x131b1a1b Qm (i32)0xba800000 Qn (i32)0x3a800000 vpmax.f32 d0, d1, d2 :: Qd 0x45125ffc 0x45126004 Qm (i32)0x45126004 Qn (i32)0x45125ffc +vpmax.f32 d0, d1, d2 :: Qd 0x45125ffc 0x131b1a1b Qm (i32)0x45126004 Qn (i32)0x45125ffc vpmax.f32 d0, d1, d2 :: Qd 0xc5126004 0xc5125ffc Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vpmax.f32 d0, d1, d2 :: Qd 0xc5126004 0x131b1a1b Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vpmax.f32 d0, d1, d2 :: Qd 0x47bff200 0x47ae5e00 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vpmax.f32 d0, d1, d2 :: Qd 0x47bff200 0x131b1a1b Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x131b1a1b Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x131b1a1b Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x131b1a1b Qm (i32)0x7fc00000 Qn (i32)0x00000000 vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x131b1a1b Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x131b1a1b Qm (i32)0x7fc00000 Qn (i32)0xff800000 vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0x7fc00000 vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0x3f800000 vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0x00000000 vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0x7f800000 vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x131b1a1b Qm (i32)0x00000000 Qn (i32)0xff800000 vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x131b1a1b Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x131b1a1b Qm (i32)0x7f800000 Qn (i32)0x3f800000 vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x131b1a1b Qm (i32)0x7f800000 Qn (i32)0x00000000 vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x131b1a1b Qm (i32)0x7f800000 Qn (i32)0x7f800000 vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x131b1a1b Qm (i32)0x7f800000 Qn (i32)0xff800000 vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vpmax.f32 d0, d1, d2 :: Qd 0x7fc00000 0x131b1a1b Qm (i32)0xff800000 Qn (i32)0x7fc00000 vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x3f800000 0x131b1a1b Qm (i32)0xff800000 Qn (i32)0x3f800000 vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vpmax.f32 d0, d1, d2 :: Qd 0x00000000 0x131b1a1b Qm (i32)0xff800000 Qn (i32)0x00000000 vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vpmax.f32 d0, d1, d2 :: Qd 0x7f800000 0x131b1a1b Qm (i32)0xff800000 Qn (i32)0x7f800000 vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vpmax.f32 d0, d1, d2 :: Qd 0xff800000 0x131b1a1b Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VPMIN (fp) ---- vpmin.f32 d0, d5, d2 :: Qd 0xc2364659 0x41b851ec Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vpmin.f32 d0, d5, d2 :: Qd 0xc2364659 0x121f1e1f Qm (i32)0x41b851ec Qn (i32)0xc2364659 vpmin.f32 d3, d4, d5 :: Qd 0x44a84000 0xc8a9da0f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vpmin.f32 d3, d4, d5 :: Qd 0x44a84000 0x121f1e1f Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vpmin.f32 d10, d11, d2 :: Qd 0xc732da7a 0x473e7300 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vpmin.f32 d10, d11, d2 :: Qd 0xc732da7a 0x121f1e1f Qm (i32)0x473e7300 Qn (i32)0xc732da7a vpmin.f32 d9, d5, d7 :: Qd 0x46855200 0x47bb3de1 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vpmin.f32 d9, d5, d7 :: Qd 0x46855200 0x121f1e1f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vpmin.f32 d0, d5, d2 :: Qd 0xc872bcb1 0xc732633d Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vpmin.f32 d0, d5, d2 :: Qd 0xc872bcb1 0x121f1e1f Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vpmin.f32 d3, d4, d5 :: Qd 0x44a84003 0x41c70126 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vpmin.f32 d3, d4, d5 :: Qd 0x44a84003 0x121f1e1f Qm (i32)0x41c70126 Qn (i32)0x44a84003 vpmin.f32 d10, d11, d2 :: Qd 0x44882666 0x473e73b3 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vpmin.f32 d10, d11, d2 :: Qd 0x44882666 0x121f1e1f Qm (i32)0x473e73b3 Qn (i32)0x44882666 vpmin.f32 d9, d5, d7 :: Qd 0x49d5e008 0x43560000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vpmin.f32 d9, d5, d7 :: Qd 0x49d5e008 0x121f1e1f Qm (i32)0x43560000 Qn (i32)0x49d5e008 vpmin.f32 d0, d11, d12 :: Qd 0x45b75812 0x48add9f2 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vpmin.f32 d0, d11, d12 :: Qd 0x45b75812 0x121f1e1f Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vpmin.f32 d7, d1, d6 :: Qd 0x3b210e02 0x42080079 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vpmin.f32 d7, d1, d6 :: Qd 0x3b210e02 0x121f1e1f Qm (i32)0x42080079 Qn (i32)0x3b210e02 vpmin.f32 d0, d1, d2 :: Qd 0x42d60000 0x452c2000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vpmin.f32 d0, d1, d2 :: Qd 0x42d60000 0x121f1e1f Qm (i32)0x452c2000 Qn (i32)0x42d60000 vpmin.f32 d3, d4, d5 :: Qd 0x44ad1333 0x445a8000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vpmin.f32 d3, d4, d5 :: Qd 0x44ad1333 0x121f1e1f Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vpmin.f32 d10, d11, d2 :: Qd 0x42da0000 0x43f3cb23 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vpmin.f32 d10, d11, d2 :: Qd 0x42da0000 0x121f1e1f Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vpmin.f32 d9, d5, d7 :: Qd 0x44db0000 0x45062000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vpmin.f32 d9, d5, d7 :: Qd 0x44db0000 0x121f1e1f Qm (i32)0x45062000 Qn (i32)0x44db0000 vpmin.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0xc2610000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vpmin.f32 d0, d11, d12 :: Qd 0xc5b4d3c3 0x121f1e1f Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vpmin.f32 d7, d1, d6 :: Qd 0xc0e96d19 0x43e41fde Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vpmin.f32 d7, d1, d6 :: Qd 0xc0e96d19 0x121f1e1f Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vpmin.f32 d0, d5, d2 :: Qd 0xbb965394 0x44053f2b Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vpmin.f32 d0, d5, d2 :: Qd 0xbb965394 0x121f1e1f Qm (i32)0x44053f2b Qn (i32)0xbb965394 vpmin.f32 d10, d13, d15 :: Qd 0xc40dcfae 0xc3f29f73 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vpmin.f32 d10, d13, d15 :: Qd 0xc40dcfae 0x121f1e1f Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vpmin.f32 d10, d13, d15 :: Qd 0x4608d008 0x4887f70e Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vpmin.f32 d10, d13, d15 :: Qd 0x4608d008 0x121f1e1f Qm (i32)0x4887f70e Qn (i32)0x4608d008 vpmin.f32 d0, d1, d2 :: Qd 0x4e920233 0x4e511724 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vpmin.f32 d0, d1, d2 :: Qd 0x4e920233 0x121f1e1f Qm (i32)0x4e511724 Qn (i32)0x4e920233 vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 vpmin.f32 d0, d1, d2 :: Qd 0xba800000 0x3a800000 Qm (i32)0x3a800000 Qn (i32)0xba800000 +vpmin.f32 d0, d1, d2 :: Qd 0xba800000 0x121f1e1f Qm (i32)0x3a800000 Qn (i32)0xba800000 vpmin.f32 d0, d1, d2 :: Qd 0x3a800000 0xba800000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vpmin.f32 d0, d1, d2 :: Qd 0x3a800000 0x121f1e1f Qm (i32)0xba800000 Qn (i32)0x3a800000 vpmin.f32 d0, d1, d2 :: Qd 0x45125ffc 0x45126004 Qm (i32)0x45126004 Qn (i32)0x45125ffc +vpmin.f32 d0, d1, d2 :: Qd 0x45125ffc 0x121f1e1f Qm (i32)0x45126004 Qn (i32)0x45125ffc vpmin.f32 d0, d1, d2 :: Qd 0xc5126004 0xc5125ffc Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vpmin.f32 d0, d1, d2 :: Qd 0xc5126004 0x121f1e1f Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vpmin.f32 d0, d1, d2 :: Qd 0x47bff200 0x47ae5e00 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vpmin.f32 d0, d1, d2 :: Qd 0x47bff200 0x121f1e1f Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x00000000 vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x121f1e1f Qm (i32)0x7fc00000 Qn (i32)0xff800000 vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x7fc00000 vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x3f800000 vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x00000000 vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0x7f800000 vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x121f1e1f Qm (i32)0x00000000 Qn (i32)0xff800000 vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x3f800000 vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x00000000 vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0x7f800000 vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x121f1e1f Qm (i32)0x7f800000 Qn (i32)0xff800000 vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vpmin.f32 d0, d1, d2 :: Qd 0x7fc00000 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x7fc00000 vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x3f800000 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x3f800000 vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vpmin.f32 d0, d1, d2 :: Qd 0x00000000 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x00000000 vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vpmin.f32 d0, d1, d2 :: Qd 0x7f800000 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0x7f800000 vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vpmin.f32 d0, d1, d2 :: Qd 0xff800000 0x121f1e1f Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VRECPE ---- vrecpe.u32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x404ccccd +vrecpe.u32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x404ccccd vrecpe.u32 d0, d1 :: Qd 0xa7000000 0xa7000000 Qm (i32)0xc4234ccd +vrecpe.u32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc4234ccd +vrecpe.u32 d10, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 vrecpe.u32 d10, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4f32d05e +vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.u32 d15, d4 :: Qd 0xab800000 0xab800000 Qm (i32)0xbf000000 +vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xbf000000 vrecpe.u32 d15, d4 :: Qd 0xaa000000 0xaa000000 Qm (i32)0xc0e33333 +vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc0e33333 +vrecpe.u32 d12, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x40fff800 vrecpe.u32 d12, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x40fff800 vrecpe.u32 d12, d8 :: Qd 0xaa000000 0xaa000000 Qm (i32)0xc0fff800 +vrecpe.u32 d12, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc0fff800 +vrecpe.u32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x404ccccd vrecpe.u32 d0, d1 :: Qd 0xffffffff 0xffffffff Qm (i32)0x404ccccd vrecpe.u32 d10, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vrecpe.u32 d10, d11 :: Qd 0xffffffff 0xffffffff Qm (i32)0x64cb49b4 +vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.u32 d15, d4 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4f32d05e vrecpe.f32 d15, d4 :: Qd 0xbfff8000 0xbfff8000 Qm (i32)0xbf000000 +vrecpe.f32 d15, d4 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0xbf000000 vrecpe.f32 d15, d4 :: Qd 0xbe100000 0xbe100000 Qm (i32)0xc0e33333 +vrecpe.f32 d15, d4 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0xc0e33333 vrecpe.f32 d12, d8 :: Qd 0x3e000000 0x3e000000 Qm (i32)0x40fff800 +vrecpe.f32 d12, d8 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x40fff800 vrecpe.f32 d12, d8 :: Qd 0xbe000000 0xbe000000 Qm (i32)0xc0fff800 +vrecpe.f32 d12, d8 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0xc0fff800 vrecpe.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x00000007 vrecpe.f32 d10, d11 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000000 +vrecpe.f32 d10, d11 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x80000000 vrecpe.f32 d0, d1 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000001 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x80000001 vrecpe.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x7fffffff vrecpe.f32 d0, d14 :: Qd 0x4e4c0000 0x4e4c0000 Qm (i32)0x30a0bcef +vrecpe.f32 d0, d14 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x30a0bcef vrecpe.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x00000007 vrecpe.f32 d10, d11 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000000 +vrecpe.f32 d10, d11 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x80000000 vrecpe.f32 d0, d1 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000001 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x80000001 vrecpe.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x7fffffff vrecpe.f32 d0, d14 :: Qd 0x4e4c0000 0x4e4c0000 Qm (i32)0x30a0bcef +vrecpe.f32 d0, d14 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x30a0bcef vrecpe.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x7fc00000 vrecpe.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x00000000 vrecpe.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0x7f800000 vrecpe.f32 d0, d1 :: Qd 0x80000000 0x80000000 Qm (i32)0xff800000 +vrecpe.f32 d0, d1 :: Qd 0x69d08000 0x6ad18000 Qm (i32)0xff800000 ---- VRECPS ---- vrecps.f32 d0, d5, d2 :: Qd 0x44837ce4 0x44837ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vrecps.f32 d0, d5, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vrecps.f32 d3, d4, d5 :: Qd 0x4ddf4321 0x4ddf4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vrecps.f32 d3, d4, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vrecps.f32 d10, d11, d2 :: Qd 0x4f050e7f 0x4f050e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vrecps.f32 d10, d11, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vrecps.f32 d9, d5, d7 :: Qd 0xcec3063f 0xcec3063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vrecps.f32 d9, d5, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vrecps.f32 d0, d5, d2 :: Qd 0xd029254c 0xd029254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vrecps.f32 d0, d5, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vrecps.f32 d3, d4, d5 :: Qd 0xc6fc5c00 0xc6fc5c00 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vrecps.f32 d3, d4, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vrecps.f32 d10, d11, d2 :: Qd 0xcc4a89cc 0xcc4a89cc Qm (i32)0x473e7300 Qn (i32)0x44882000 +vrecps.f32 d10, d11, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vrecps.f32 d9, d5, d7 :: Qd 0xcdb2c947 0xcdb2c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vrecps.f32 d9, d5, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vrecps.f32 d0, d11, d12 :: Qd 0xcef90536 0xcef90536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vrecps.f32 d0, d11, d12 :: Qd 0x40000000 0x40000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vrecps.f32 d7, d1, d6 :: Qd 0x3ff54e08 0x3ff54e08 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vrecps.f32 d7, d1, d6 :: Qd 0x40000000 0x40000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vrecps.f32 d0, d1, d2 :: Qd 0xc88fe280 0xc88fe280 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vrecps.f32 d3, d4, d5 :: Qd 0xc993b8d3 0xc993b8d3 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vrecps.f32 d3, d4, d5 :: Qd 0x40000000 0x40000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vrecps.f32 d10, d11, d2 :: Qd 0xc74f98fc 0xc74f98fc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vrecps.f32 d10, d11, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vrecps.f32 d9, d5, d7 :: Qd 0xca657ab8 0xca657ab8 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vrecps.f32 d9, d5, d7 :: Qd 0x40000000 0x40000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vrecps.f32 d0, d11, d12 :: Qd 0xc89eedde 0xc89eedde Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vrecps.f32 d0, d11, d12 :: Qd 0x40000000 0x40000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vrecps.f32 d7, d1, d6 :: Qd 0x45502239 0x45502239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vrecps.f32 d7, d1, d6 :: Qd 0x40000000 0x40000000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vrecps.f32 d0, d5, d2 :: Qd 0x408e3e84 0x408e3e84 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vrecps.f32 d0, d5, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vrecps.f32 d10, d13, d15 :: Qd 0xc8866666 0xc8866666 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vrecps.f32 d10, d13, d15 :: Qd 0x40000000 0x40000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vrecps.f32 d10, d13, d15 :: Qd 0xcf115379 0xcf115379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vrecps.f32 d10, d13, d15 :: Qd 0x40000000 0x40000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vrecps.f32 d0, d1, d2 :: Qd 0xdd6e81fd 0xdd6e81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0xff800000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0x40000000 0x40000000 Qm (i32)0xff800000 Qn (i32)0x00000000 vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vrecps.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vrecps.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VABS (fp) ---- vabs.f32 d0, d1 :: Qd 0x404ccccd 0x404ccccd Qm (i32)0x404ccccd +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x404ccccd vabs.f32 d10, d11 :: Qd 0x64cb49b4 0x64cb49b4 Qm (i32)0x64cb49b4 +vabs.f32 d10, d11 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x64cb49b4 vabs.f32 d15, d4 :: Qd 0x4f32d05e 0x4f32d05e Qm (i32)0x4f32d05e +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x4f32d05e vabs.f32 d15, d4 :: Qd 0x3f000000 0x3f000000 Qm (i32)0xbf000000 +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xbf000000 vabs.f32 d15, d4 :: Qd 0x40e33333 0x40e33333 Qm (i32)0xc0e33333 +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xc0e33333 vabs.f32 d12, d8 :: Qd 0x40fff800 0x40fff800 Qm (i32)0x40fff800 +vabs.f32 d12, d8 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x40fff800 vabs.f32 d12, d8 :: Qd 0x40fff800 0x40fff800 Qm (i32)0xc0fff800 +vabs.f32 d12, d8 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xc0fff800 vabs.f32 d0, d1 :: Qd 0x404ccccd 0x404ccccd Qm (i32)0x404ccccd +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x404ccccd vabs.f32 d10, d11 :: Qd 0x64cb49b4 0x64cb49b4 Qm (i32)0x64cb49b4 +vabs.f32 d10, d11 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x64cb49b4 vabs.f32 d15, d4 :: Qd 0x4f32d05e 0x4f32d05e Qm (i32)0x4f32d05e +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x4f32d05e vabs.f32 d15, d4 :: Qd 0x3f000000 0x3f000000 Qm (i32)0xbf000000 +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xbf000000 vabs.f32 d15, d4 :: Qd 0x40e33333 0x40e33333 Qm (i32)0xc0e33333 +vabs.f32 d15, d4 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xc0e33333 vabs.f32 d12, d8 :: Qd 0x40fff800 0x40fff800 Qm (i32)0x40fff800 +vabs.f32 d12, d8 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x40fff800 vabs.f32 d12, d8 :: Qd 0x40fff800 0x40fff800 Qm (i32)0xc0fff800 +vabs.f32 d12, d8 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xc0fff800 vabs.f32 d0, d1 :: Qd 0x00000007 0x00000007 Qm (i32)0x00000007 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000007 vabs.f32 d10, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 +vabs.f32 d10, d11 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x80000000 vabs.f32 d0, d1 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x80000001 vabs.f32 d0, d1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x7fffffff +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x7fffffff vabs.f32 d0, d14 :: Qd 0x30a0bcef 0x30a0bcef Qm (i32)0x30a0bcef +vabs.f32 d0, d14 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x30a0bcef vabs.f32 d0, d1 :: Qd 0x00000007 0x00000007 Qm (i32)0x00000007 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000007 vabs.f32 d10, d11 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 +vabs.f32 d10, d11 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x80000000 vabs.f32 d0, d1 :: Qd 0x00000001 0x00000001 Qm (i32)0x80000001 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x80000001 vabs.f32 d0, d1 :: Qd 0x7fffffff 0x7fffffff Qm (i32)0x7fffffff +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x7fffffff vabs.f32 d0, d14 :: Qd 0x30a0bcef 0x30a0bcef Qm (i32)0x30a0bcef +vabs.f32 d0, d14 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x30a0bcef vabs.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x7fc00000 vabs.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x00000000 vabs.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0x7f800000 vabs.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 +vabs.f32 d0, d1 :: Qd 0x151d191d 0x141c1f1c Qm (i32)0xff800000 ---- VCGT (fp) ---- vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vcgt.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 vcgt.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 vcgt.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 +vcgt.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 +vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec Qn (i32)0xc2364659 vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec Qn (i32)0xc2364659 vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vcgt.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a vcgt.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a vcgt.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vcgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vcgt.f32 d10, d31, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vcgt.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vcgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vcgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vcgt.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vcgt.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vcgt.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vcgt.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vcgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vcgt.f32 d20, d21, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vcgt.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vcgt.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45062000 Qn (i32)0x44db0000 +vcgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vcgt.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vcgt.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vcgt.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vcgt.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 vcgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 vcgt.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vcgt.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vcgt.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vcgt.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3a800000 Qn (i32)0xba800000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3a800000 Qn (i32)0xba800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45126004 Qn (i32)0x45125ffc +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0xff800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0xff800000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0xff800000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0xff800000 vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0xff800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 +vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vcgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vcgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCGE (fp) ---- vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 vcge.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vcge.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vcge.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vcge.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec Qn (i32)0xc2364659 vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vcge.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a vcge.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a vcge.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vcge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vcge.f32 d10, d31, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vcge.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vcge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vcge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vcge.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vcge.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vcge.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vcge.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vcge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vcge.f32 d20, d21, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vcge.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vcge.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45062000 Qn (i32)0x44db0000 +vcge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vcge.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vcge.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vcge.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vcge.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vcge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vcge.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vcge.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vcge.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vcge.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3a800000 Qn (i32)0xba800000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3a800000 Qn (i32)0xba800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45126004 Qn (i32)0x45125ffc +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0xff800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vcge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 vcge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VACGT (fp) ---- vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3f000000 Qn (i32)0xbf000000 vacgt.f32 d2, d15, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vacgt.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vacgt.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vacgt.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vacgt.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vacgt.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vacgt.f32 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vacgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vacgt.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vacgt.f32 d10, d11, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vacgt.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vacgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vacgt.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vacgt.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vacgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vacgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vacgt.f32 d10, d31, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vacgt.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vacgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vacgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vacgt.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vacgt.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vacgt.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vacgt.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vacgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vacgt.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vacgt.f32 d20, d21, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vacgt.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vacgt.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45062000 Qn (i32)0x44db0000 +vacgt.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vacgt.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vacgt.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vacgt.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vacgt.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vacgt.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vacgt.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vacgt.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vacgt.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vacgt.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vacgt.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3a800000 Qn (i32)0xba800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3a800000 Qn (i32)0xba800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45126004 Qn (i32)0x45125ffc +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x3f800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 vacgt.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0xff800000 vacgt.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VACGE (fp) ---- vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3f000000 Qn (i32)0xbf000000 vacge.f32 d2, d15, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vacge.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 +vacge.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vacge.f32 d15, d7, d8 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43677333 Qn (i32)0x43677333 vacge.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vacge.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vacge.f32 d3, d4, d5 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vacge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vacge.f32 d10, d11, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vacge.f32 d10, d11, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vacge.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vacge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vacge.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vacge.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vacge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vacge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vacge.f32 d10, d31, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vacge.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vacge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vacge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vacge.f32 d0, d11, d12 :: Qd 0xffffffff 0xffffffff Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vacge.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vacge.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vacge.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vacge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vacge.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vacge.f32 d20, d21, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vacge.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vacge.f32 d9, d5, d7 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45062000 Qn (i32)0x44db0000 +vacge.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vacge.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vacge.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vacge.f32 d7, d1, d6 :: Qd 0xffffffff 0xffffffff Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vacge.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vacge.f32 d0, d5, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vacge.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vacge.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vacge.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vacge.f32 d10, d13, d15 :: Qd 0xffffffff 0xffffffff Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vacge.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x3a800000 Qn (i32)0xba800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3a800000 Qn (i32)0xba800000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xba800000 Qn (i32)0x3a800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x45126004 Qn (i32)0x45125ffc +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0xff800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x3f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x00000000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0x7f800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vacge.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 +vacge.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCEQ (fp) ---- vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3f000000 Qn (i32)0xbf000000 +vceq.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 vceq.f32 d2, d15, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xbf07ae14 Qn (i32)0x3f051eb8 vceq.f32 d15, d7, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x43677333 Qn (i32)0x43677333 +vceq.f32 d15, d7, d8 :: Qd 0x00000000 0x00000000 Qm (i32)0x43677333 Qn (i32)0x43677333 vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vceq.f32 d10, d11, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vceq.f32 d10, d11, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 +vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x41c70126 Qn (i32)0x44a84003 vceq.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vceq.f32 d10, d31, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x473e73b3 Qn (i32)0x44882666 +vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vceq.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vceq.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vceq.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vceq.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vceq.f32 d3, d4, d5 :: Qd 0x00000000 0x00000000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vceq.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vceq.f32 d20, d21, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vceq.f32 d9, d5, d7 :: Qd 0x00000000 0x00000000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vceq.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vceq.f32 d0, d11, d12 :: Qd 0x00000000 0x00000000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vceq.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vceq.f32 d7, d1, d6 :: Qd 0x00000000 0x00000000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vceq.f32 d0, d5, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vceq.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vceq.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vceq.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vceq.f32 d10, d13, d15 :: Qd 0x00000000 0x00000000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 vceq.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3a800000 Qn (i32)0xba800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x3a800000 Qn (i32)0xba800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xba800000 Qn (i32)0x3a800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x45126004 Qn (i32)0x45125ffc vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xc5125ffc Qn (i32)0xc5126004 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x47ae5e00 Qn (i32)0x47bff200 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x3f800000 vceq.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 Qn (i32)0x00000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x00000000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 Qn (i32)0xff800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x00000000 vceq.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 Qn (i32)0x7f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x3f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x00000000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vceq.f32 d0, d1, d2 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 Qn (i32)0xff800000 +vceq.f32 d0, d1, d2 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VCEQ (fp) #0 ---- vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 vceq.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 vceq.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000000 +vceq.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 vceq.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec +vceq.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec +vceq.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec vceq.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec vceq.f32 d30, d15, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.f32 d30, d15, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vceq.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 +vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 vceq.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCGT (fp) #0 ---- vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x01000000 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x01000000 vcgt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 vcgt.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 +vcgt.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000000 +vcgt.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcgt.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcgt.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec +vcgt.f32 d2, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc1b851ec vcgt.f32 d30, d15, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.f32 d30, d15, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 vcgt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7fc00000 vcgt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x7f800000 vcgt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 +vcgt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 ---- VCLT (fp) #0 ---- vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 +vclt.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 vclt.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 vclt.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec +vclt.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec vclt.f32 d2, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc1b851ec +vclt.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec vclt.f32 d30, d15, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 d30, d15, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vclt.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 +vclt.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCGE (fp) #0 ---- vcge.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x01000000 +vcge.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x01000000 vcge.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcge.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcge.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000000 vcge.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000000 vcge.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec +vcge.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x41b851ec vcge.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec +vcge.f32 d2, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc1b851ec vcge.f32 d30, d15, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcge.f32 d30, d15, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VCLE (fp) #0 ---- vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x01000000 vcle.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000001 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000001 vcle.f32 d2, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x80000000 +vcle.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 +vcle.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec vcle.f32 d2, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x41b851ec vcle.f32 d2, d31, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xc1b851ec +vcle.f32 d2, d31, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xc1b851ec vcle.f32 d30, d15, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 d30, d15, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7fc00000 vcle.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x00000000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 vcle.f32 d0, d1, #0 :: Qd 0xffffffff 0xffffffff Qm (i32)0xff800000 +vcle.f32 d0, d1, #0 :: Qd 0x00000000 0x00000000 Qm (i32)0xff800000 ---- VNEG (fp) ---- vneg.f32 d0, d1 :: Qd 0x81000000 0x81000000 Qm (i32)0x01000000 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x01000000 vneg.f32 d0, d1 :: Qd 0x80000001 0x80000001 Qm (i32)0x00000001 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x00000001 vneg.f32 d2, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x80000000 +vneg.f32 d2, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x80000000 vneg.f32 d2, d1 :: Qd 0xc1b851ec 0xc1b851ec Qm (i32)0x41b851ec +vneg.f32 d2, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x41b851ec vneg.f32 d2, d31 :: Qd 0x41b851ec 0x41b851ec Qm (i32)0xc1b851ec +vneg.f32 d2, d31 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0xc1b851ec vneg.f32 d30, d15 :: Qd 0x80000000 0x80000000 Qm (i32)0x00000000 +vneg.f32 d30, d15 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x00000000 vneg.f32 d0, d1 :: Qd 0xffc00000 0xffc00000 Qm (i32)0x7fc00000 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x7fc00000 vneg.f32 d0, d1 :: Qd 0x80000000 0x80000000 Qm (i32)0x00000000 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x00000000 vneg.f32 d0, d1 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0x7f800000 vneg.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 +vneg.f32 d0, d1 :: Qd 0x951d191d 0x941c1f1c Qm (i32)0xff800000 ---- VRSQRTS ---- vrsqrts.f32 d0, d5, d2 :: Qd 0x44039ce4 0x44039ce4 Qm (i32)0x41b851ec Qn (i32)0xc2364659 +vrsqrts.f32 d0, d5, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x41b851ec Qn (i32)0xc2364659 vrsqrts.f32 d3, d4, d5 :: Qd 0x4d5f4321 0x4d5f4321 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 +vrsqrts.f32 d3, d4, d5 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xc8a9da0f Qn (i32)0x44a84000 vrsqrts.f32 d10, d11, d2 :: Qd 0x4e850e7f 0x4e850e7f Qm (i32)0x473e7300 Qn (i32)0xc732da7a +vrsqrts.f32 d10, d11, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x473e7300 Qn (i32)0xc732da7a vrsqrts.f32 d9, d5, d7 :: Qd 0xce43063f 0xce43063f Qm (i32)0x47bb3de1 Qn (i32)0x46855200 +vrsqrts.f32 d9, d5, d7 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x47bb3de1 Qn (i32)0x46855200 vrsqrts.f32 d0, d5, d2 :: Qd 0xcfa9254c 0xcfa9254c Qm (i32)0xc732633d Qn (i32)0xc872bcb1 +vrsqrts.f32 d0, d5, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xc732633d Qn (i32)0xc872bcb1 vrsqrts.f32 d3, d4, d5 :: Qd 0xc67c5a00 0xc67c5a00 Qm (i32)0x41c00000 Qn (i32)0x44a84000 +vrsqrts.f32 d3, d4, d5 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x41c00000 Qn (i32)0x44a84000 vrsqrts.f32 d10, d11, d2 :: Qd 0xcbca89cc 0xcbca89cc Qm (i32)0x473e7300 Qn (i32)0x44882000 +vrsqrts.f32 d10, d11, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x473e7300 Qn (i32)0x44882000 vrsqrts.f32 d9, d5, d7 :: Qd 0xcd32c947 0xcd32c947 Qm (i32)0x43560000 Qn (i32)0x49d5e008 +vrsqrts.f32 d9, d5, d7 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x43560000 Qn (i32)0x49d5e008 vrsqrts.f32 d0, d11, d12 :: Qd 0xce790536 0xce790536 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 +vrsqrts.f32 d0, d11, d12 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x48add9f2 Qn (i32)0x45b75812 vrsqrts.f32 d7, d1, d6 :: Qd 0x3fbaa704 0x3fbaa704 Qm (i32)0x42080079 Qn (i32)0x3b210e02 +vrsqrts.f32 d7, d1, d6 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x42080079 Qn (i32)0x3b210e02 vrsqrts.f32 d0, d1, d2 :: Qd 0xc80fe260 0xc80fe260 Qm (i32)0x452c2000 Qn (i32)0x42d60000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x452c2000 Qn (i32)0x42d60000 vrsqrts.f32 d3, d4, d5 :: Qd 0xc913b8cb 0xc913b8cb Qm (i32)0x445a8000 Qn (i32)0x44ad1333 +vrsqrts.f32 d3, d4, d5 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x445a8000 Qn (i32)0x44ad1333 vrsqrts.f32 d10, d11, d2 :: Qd 0xc6cf97fc 0xc6cf97fc Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 +vrsqrts.f32 d10, d11, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x43f3cb23 Qn (i32)0x42da0000 vrsqrts.f32 d9, d5, d7 :: Qd 0xc9e57ab4 0xc9e57ab4 Qm (i32)0x45062000 Qn (i32)0x44db0000 +vrsqrts.f32 d9, d5, d7 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x45062000 Qn (i32)0x44db0000 vrsqrts.f32 d0, d11, d12 :: Qd 0xc81eedbe 0xc81eedbe Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 +vrsqrts.f32 d0, d11, d12 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xc2610000 Qn (i32)0xc5b4d3c3 vrsqrts.f32 d7, d1, d6 :: Qd 0x44d03239 0x44d03239 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 +vrsqrts.f32 d7, d1, d6 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x43e41fde Qn (i32)0xc0e96d19 vrsqrts.f32 d0, d5, d2 :: Qd 0x402e3e84 0x402e3e84 Qm (i32)0x44053f2b Qn (i32)0xbb965394 +vrsqrts.f32 d0, d5, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x44053f2b Qn (i32)0xbb965394 vrsqrts.f32 d10, d13, d15 :: Qd 0xc8066646 0xc8066646 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae +vrsqrts.f32 d10, d13, d15 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xc3f29f73 Qn (i32)0xc40dcfae vrsqrts.f32 d10, d13, d15 :: Qd 0xce915379 0xce915379 Qm (i32)0x4887f70e Qn (i32)0x4608d008 +vrsqrts.f32 d10, d13, d15 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x4887f70e Qn (i32)0x4608d008 vrsqrts.f32 d0, d1, d2 :: Qd 0xdcee81fd 0xdcee81fd Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x4e511724 Qn (i32)0x4e920233 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x7fc00000 Qn (i32)0x3f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x7fc00000 Qn (i32)0x00000000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7fc00000 Qn (i32)0x7f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7fc00000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x00000000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0x00000000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0x00000000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0x7f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x00000000 Qn (i32)0x7f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7f800000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x7f800000 Qn (i32)0x3f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0x7f800000 Qn (i32)0x00000000 +vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0x7f800000 Qn (i32)0x7f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x7f800000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 Qn (i32)0x7fc00000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xff800000 Qn (i32)0x3f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 vrsqrts.f32 d0, d1, d2 :: Qd 0x3fc00000 0x3fc00000 Qm (i32)0xff800000 Qn (i32)0x00000000 vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0x7f800000 vrsqrts.f32 d0, d1, d2 :: Qd 0xff800000 0xff800000 Qm (i32)0xff800000 Qn (i32)0xff800000 +vrsqrts.f32 d0, d1, d2 :: Qd 0x7f800000 0x7f800000 Qm (i32)0xff800000 Qn (i32)0xff800000 ---- VRSQRTE (fp) ---- vrsqrte.f32 d0, d1 :: Qd 0x3f0f0000 0x3f0f0000 Qm (i32)0x404ccccd +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x404ccccd vrsqrte.f32 d10, d11 :: Qd 0x2ccb0000 0x2ccb0000 Qm (i32)0x64cb49b4 +vrsqrte.f32 d10, d11 :: Qd 0x54a30000 0x55238000 Qm (i32)0x64cb49b4 vrsqrte.f32 d15, d4 :: Qd 0x37998000 0x37998000 Qm (i32)0x4f32d05e +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0x4f32d05e vrsqrte.f32 d15, d4 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xbf000000 +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0xbf000000 vrsqrte.f32 d15, d4 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xc0e33333 +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0xc0e33333 vrsqrte.f32 d12, d8 :: Qd 0x3eb50000 0x3eb50000 Qm (i32)0x40fff800 +vrsqrte.f32 d12, d8 :: Qd 0x54a30000 0x55238000 Qm (i32)0x40fff800 vrsqrte.f32 d12, d8 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xc0fff800 +vrsqrte.f32 d12, d8 :: Qd 0x54a30000 0x55238000 Qm (i32)0xc0fff800 vrsqrte.f32 d0, d1 :: Qd 0x3f0f0000 0x3f0f0000 Qm (i32)0x404ccccd +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x404ccccd vrsqrte.f32 d10, d11 :: Qd 0x2ccb0000 0x2ccb0000 Qm (i32)0x64cb49b4 +vrsqrte.f32 d10, d11 :: Qd 0x54a30000 0x55238000 Qm (i32)0x64cb49b4 vrsqrte.f32 d15, d4 :: Qd 0x37998000 0x37998000 Qm (i32)0x4f32d05e +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0x4f32d05e vrsqrte.f32 d15, d4 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xbf000000 +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0xbf000000 vrsqrte.f32 d15, d4 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xc0e33333 +vrsqrte.f32 d15, d4 :: Qd 0x54a30000 0x55238000 Qm (i32)0xc0e33333 vrsqrte.f32 d12, d8 :: Qd 0x3eb50000 0x3eb50000 Qm (i32)0x40fff800 +vrsqrte.f32 d12, d8 :: Qd 0x54a30000 0x55238000 Qm (i32)0x40fff800 vrsqrte.f32 d12, d8 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xc0fff800 +vrsqrte.f32 d12, d8 :: Qd 0x54a30000 0x55238000 Qm (i32)0xc0fff800 vrsqrte.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x00000007 vrsqrte.f32 d10, d11 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000000 +vrsqrte.f32 d10, d11 :: Qd 0x54a30000 0x55238000 Qm (i32)0x80000000 vrsqrte.f32 d0, d1 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000001 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x80000001 vrsqrte.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x7fffffff vrsqrte.f32 d0, d14 :: Qd 0x46e48000 0x46e48000 Qm (i32)0x30a0bcef +vrsqrte.f32 d0, d14 :: Qd 0x54a30000 0x55238000 Qm (i32)0x30a0bcef vrsqrte.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000007 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x00000007 vrsqrte.f32 d10, d11 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000000 +vrsqrte.f32 d10, d11 :: Qd 0x54a30000 0x55238000 Qm (i32)0x80000000 vrsqrte.f32 d0, d1 :: Qd 0xff800000 0xff800000 Qm (i32)0x80000001 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x80000001 vrsqrte.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fffffff +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x7fffffff vrsqrte.f32 d0, d14 :: Qd 0x46e48000 0x46e48000 Qm (i32)0x30a0bcef +vrsqrte.f32 d0, d14 :: Qd 0x54a30000 0x55238000 Qm (i32)0x30a0bcef vrsqrte.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0x7fc00000 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x7fc00000 vrsqrte.f32 d0, d1 :: Qd 0x7f800000 0x7f800000 Qm (i32)0x00000000 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x00000000 vrsqrte.f32 d0, d1 :: Qd 0x00000000 0x00000000 Qm (i32)0x7f800000 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0x7f800000 vrsqrte.f32 d0, d1 :: Qd 0x7fc00000 0x7fc00000 Qm (i32)0xff800000 +vrsqrte.f32 d0, d1 :: Qd 0x54a30000 0x55238000 Qm (i32)0xff800000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.c index bc3254a1f..761485c53 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.c @@ -845,6 +845,74 @@ int main(int argc, char **argv) } printf("------------ PLD/PLDW (done) ------------\n"); + printf("------------ RBIT ------------\n"); + TESTINST2("rbit r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x68983cc9, r0, r1, 0); + + printf("------------ REV ------------\n"); + TESTINST2("rev r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rev r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rev r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rev r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rev r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rev r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rev r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rev r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rev r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rev r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rev r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rev r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rev r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rev r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rev r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rev r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rev r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rev r0, r1", 0x68983cc9, r0, r1, 0); + + printf("------------ REV16 ------------\n"); + TESTINST2("rev16 r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x68983cc9, r0, r1, 0); + + printf("------------ NOP (begin) ------------\n"); + printf("nop\n"); + __asm__ __volatile__("nop" ::: "memory","cc"); + printf("nopeq\n"); + __asm__ __volatile__("nopeq" ::: "memory","cc"); + printf("nopne\n"); + __asm__ __volatile__("nopne" ::: "memory","cc"); + printf("------------ NOP (end) ------------\n"); return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.stdout.exp index 064b52672..2dbd1eeae 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intARM.stdout.exp @@ -737,3 +737,65 @@ uxtah r0, r1, r2, ROR #0 :: rd 0x3141f140 rm 0x31415927, rn 0x27189819, carryin pld reg +/- imm12 cases pld reg +/- shifted reg cases ------------ PLD/PLDW (done) ------------ +------------ RBIT ------------ +rbit r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x00000001 rm 0x80000000, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x80000000 rm 0x00000001, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xe49a828c rm 0x31415927, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x46a82828 rm 0x14141562, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xf89c17d5 rm 0xabe8391f, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x01551409 rm 0x9028aa80, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xb63f8b57 rm 0xead1fc6d, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xaa3193ac rm 0x35c98c55, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xd78f52ca rm 0x534af1eb, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x10d88aa2 rm 0x45511b08, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x8efee009 rm 0x90077f71, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xd215317b rm 0xde8ca84b, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x5bb05ec7 rm 0xe37a0dda, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0xd2bc1da7 rm 0xe5b83d4b, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x3728b6dd rm 0xbb6d14ec, carryin 0, cpsr 0x00000000 +rbit r0, r1 :: rd 0x933c1916 rm 0x68983cc9, carryin 0, cpsr 0x00000000 +------------ REV ------------ +rev r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x00000080 rm 0x80000000, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x01000000 rm 0x00000001, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x27594131 rm 0x31415927, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x62151414 rm 0x14141562, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x1f39e8ab rm 0xabe8391f, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x80aa2890 rm 0x9028aa80, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x6dfcd1ea rm 0xead1fc6d, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x558cc935 rm 0x35c98c55, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0xebf14a53 rm 0x534af1eb, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x081b5145 rm 0x45511b08, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x717f0790 rm 0x90077f71, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x4ba88cde rm 0xde8ca84b, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0xda0d7ae3 rm 0xe37a0dda, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0x4b3db8e5 rm 0xe5b83d4b, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0xec146dbb rm 0xbb6d14ec, carryin 0, cpsr 0x00000000 +rev r0, r1 :: rd 0xc93c9868 rm 0x68983cc9, carryin 0, cpsr 0x00000000 +------------ REV16 ------------ +rev16 r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x00800000 rm 0x80000000, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x00000100 rm 0x00000001, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x41312759 rm 0x31415927, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x14146215 rm 0x14141562, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0xe8ab1f39 rm 0xabe8391f, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x289080aa rm 0x9028aa80, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0xd1ea6dfc rm 0xead1fc6d, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0xc935558c rm 0x35c98c55, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x4a53ebf1 rm 0x534af1eb, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x5145081b rm 0x45511b08, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x0790717f rm 0x90077f71, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x8cde4ba8 rm 0xde8ca84b, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x7ae3da0d rm 0xe37a0dda, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0xb8e54b3d rm 0xe5b83d4b, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x6dbbec14 rm 0xbb6d14ec, carryin 0, cpsr 0x00000000 +rev16 r0, r1 :: rd 0x9868c93c rm 0x68983cc9, carryin 0, cpsr 0x00000000 +------------ NOP (begin) ------------ +nop +nopeq +nopne +------------ NOP (end) ------------ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.c index a1961e8b0..99215f2e0 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.c @@ -1683,6 +1683,36 @@ int main ( void ) TESTINST2("bic.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv); TESTCARRYEND + printf("(T3) ORN{S}.W Rd, Rn, #constT [allegedly]\n"); + TESTCARRY + TESTINST2("orns.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv); + TESTINST2("orns.w r1, r2, #255 ", 0, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0 ", 1, r1, r2, cv); + TESTINST2("orns.w r1, r2, #1 ", 0, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0 ", -1, r1, r2, cv); + TESTINST2("orns.w r1, r2, #-1 ", 0, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0x80000000", 0, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0 ", 0x80000000, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv); + TESTINST2("orns.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv); + TESTINST2("orn.w r1, r2, #255 ", 0, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0 ", 1, r1, r2, cv); + TESTINST2("orn.w r1, r2, #1 ", 0, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0 ", -1, r1, r2, cv); + TESTINST2("orn.w r1, r2, #-1 ", 0, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0x80000000", 0, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0 ", 0x80000000, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv); + TESTINST2("orn.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv); + TESTCARRYEND + printf("ADD{S}.W Rd, Rn, Rm, {shift}\n"); TESTCARRY TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); @@ -4845,6 +4875,322 @@ int main ( void ) TESTINST3("bic.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); TESTCARRYEND + printf("ORN{S}.W Rd, Rn, Rm, {shift}\n"); + TESTCARRY + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0, 1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0, 1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", -1, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", -1, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0, -1, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0, -1, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x80000000, 0, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orns.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTINST3("orn.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv); + TESTCARRYEND + printf("(T?) LSL{S}.W Rd, Rn, Rm\n"); TESTCARRY TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv); @@ -5396,6 +5742,113 @@ int main ( void ) TESTINST1("mvn.w r9, 0x00000043", r9, cv); TESTCARRYEND + printf("(T1) RBIT Rd, Rm\n"); + TESTINST2("rbit r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rbit r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rbit r0, r1", 0x68983cc9, r0, r1, 0); + + printf("(T1) REV Rd, Rm ------------\n"); + TESTINST2("rev r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rev r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rev r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rev r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rev r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rev r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rev r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rev r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rev r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rev r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rev r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rev r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rev r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rev r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rev r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rev r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rev r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rev r0, r1", 0x68983cc9, r0, r1, 0); + + printf("(T2) REV Rd, Rm ------------\n"); + TESTINST2("rev r8, r9", 0x00000000, r8, r9, 0); + TESTINST2("rev r8, r9", 0xFFFFFFFF, r8, r9, 0); + TESTINST2("rev r8, r9", 0x80000000, r8, r9, 0); + TESTINST2("rev r8, r9", 0x00000001, r8, r9, 0); + TESTINST2("rev r8, r9", 0x31415927, r8, r9, 0); + TESTINST2("rev r8, r9", 0x14141562, r8, r9, 0); + TESTINST2("rev r8, r9", 0xabe8391f, r8, r9, 0); + TESTINST2("rev r8, r9", 0x9028aa80, r8, r9, 0); + TESTINST2("rev r8, r9", 0xead1fc6d, r8, r9, 0); + TESTINST2("rev r8, r9", 0x35c98c55, r8, r9, 0); + TESTINST2("rev r8, r9", 0x534af1eb, r8, r9, 0); + TESTINST2("rev r8, r9", 0x45511b08, r8, r9, 0); + TESTINST2("rev r8, r9", 0x90077f71, r8, r9, 0); + TESTINST2("rev r8, r9", 0xde8ca84b, r8, r9, 0); + TESTINST2("rev r8, r9", 0xe37a0dda, r8, r9, 0); + TESTINST2("rev r8, r9", 0xe5b83d4b, r8, r9, 0); + TESTINST2("rev r8, r9", 0xbb6d14ec, r8, r9, 0); + TESTINST2("rev r8, r9", 0x68983cc9, r8, r9, 0); + + printf("(T1) REV16 Rd, Rm ------------\n"); + TESTINST2("rev16 r0, r1", 0x00000000, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x80000000, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x00000001, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x31415927, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x14141562, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xabe8391f, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x9028aa80, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xead1fc6d, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x35c98c55, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x534af1eb, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x45511b08, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x90077f71, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xde8ca84b, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xe37a0dda, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xe5b83d4b, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0xbb6d14ec, r0, r1, 0); + TESTINST2("rev16 r0, r1", 0x68983cc9, r0, r1, 0); + + printf("(T2) REV16 Rd, Rm ------------\n"); + TESTINST2("rev16 r8, r9", 0x00000000, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xFFFFFFFF, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x80000000, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x00000001, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x31415927, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x14141562, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xabe8391f, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x9028aa80, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xead1fc6d, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x35c98c55, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x534af1eb, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x45511b08, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x90077f71, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xde8ca84b, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xe37a0dda, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xe5b83d4b, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0xbb6d14ec, r8, r9, 0); + TESTINST2("rev16 r8, r9", 0x68983cc9, r8, r9, 0); + + printf("------------ NOP (begin) ------------\n"); + printf("nop\n"); + __asm__ __volatile__("nop" ::: "memory","cc"); + printf("nop.w\n"); + __asm__ __volatile__("nop.w" ::: "memory","cc"); + printf("------------ NOP (end) ------------\n"); + // plus whatever stuff we can throw in from the old ARM test program old_main(); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.stdout.exp index 7a4d4dcc8..dfb0acb5b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6intThumb.stdout.exp @@ -1986,6 +1986,111 @@ bic.w r1, r2, #0x80000000 :: rd 0x00000000 rm 0x80000000, c:v-in 3, cpsr 0xf000 bic.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV bic.w r1, r2, #0xff000000 :: rd 0x00000000 rm 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV bic.w r1, r2, #0x0dd00000 :: rd 0x722fffff rm 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +(T3) ORN{S}.W Rd, Rn, #constT [allegedly] +orns.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0x40000000 Z +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 1, cpsr 0x50000000 Z V +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, #0xffffffff :: rd 0x31415927 rm 0x31415927, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0xee00ee00 :: rd 0x31ff59ff rm 0x31415927, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #255 :: rd 0xffffff00 rm 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #1 :: rd 0xfffffffe rm 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0 :: rd 0xffffffff rm 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #-1 :: rd 0x00000000 rm 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0 :: rd 0xffffffff rm 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0x80000000 :: rd 0xffffffff rm 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0x80000000 :: rd 0x7fffffff rm 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0xff000000 :: rd 0x80ffffff rm 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, #0x0dd00000 :: rd 0xffffffff rm 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV ADD{S}.W Rd, Rn, Rm, {shift} adds.w r1, r2, r3, lsl #0 :: rd 0x5859704f rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x00000000 adds.w r1, r2, r3, lsl #1 :: rd 0x7f718777 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x00000000 @@ -13227,6 +13332,1255 @@ bic.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x7fffffff, rn 0x7fffffff, c:v-in bic.w r1, r2, r3, asr #1 :: rd 0x40000000 rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV bic.w r1, r2, r3, asr #15 :: rd 0x7fff0000 rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV bic.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +ORN{S}.W Rd, Rn, Rm, {shift} +orns.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0x00000000 +orn.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x40000000 Z +orns.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x40000000 Z +orns.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x40000000 Z +orns.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x60000000 ZC +orns.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x60000000 ZC +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0x60000000 ZC +orn.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0x40000000 Z +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0x00000000 +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orn.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x00000000 +orns.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xa0000000 N C +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 0, cpsr 0xc0000000 NZ +orns.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0x10000000 V +orn.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x50000000 Z V +orns.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x50000000 Z V +orns.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x50000000 Z V +orns.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0x70000000 ZCV +orn.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0x50000000 Z V +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0x10000000 V +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orn.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x10000000 V +orns.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xb0000000 N CV +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 1, cpsr 0xd0000000 NZ V +orns.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0x00000000 +orn.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0x60000000 ZC +orn.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0x40000000 Z +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0x00000000 +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0x80000000 N +orns.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orn.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0x00000000 +orns.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0x20000000 C +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xa0000000 N C +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 2, cpsr 0xe0000000 NZC +orns.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xb1cfd9af rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xf9e7f9f7 rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xfd73fd6f rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xfffff9ef rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x31415927, rn 0x27181728, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0x10000000 V +orn.w r1, r2, r3, lsl #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xf1cfd9af rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xf56bffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xb573fd6f rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffd9ef rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0x79e7f9f7 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0x3573fd6f rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0x3141d9ef rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0x31415927 rm 0x31415927, rn 0x97181728, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000001, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xfffffffd rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffff7fff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xfffffffe rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x00000000, rn 0x00000001, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0xffffffff, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0x70000000 ZCV +orn.w r1, r2, r3, lsl #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0x00007fff rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0x80000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xfffe0000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0x50000000 Z V +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0x3fffffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0x0000ffff rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0x00000000 rm 0x00000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x00000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xfffeffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xfffffffe rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xbfffffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0x8000ffff rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0x80000000 rm 0x80000000, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0x10000000 V +orn.w r1, r2, r3, lsl #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x80000000, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0x90000000 N V +orns.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orn.w r1, r2, r3, lsl #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0x80000001 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0x80007fff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0x80000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xc0000000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffff0000 rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x80000000, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orns.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0x10000000 V +orns.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0x30000000 CV +orns.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orns.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xb0000000 N CV +orn.w r1, r2, r3, lsl #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #1 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #15 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsl #31 :: rd 0x7fffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, lsr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #0 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #1 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #15 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV +orn.w r1, r2, r3, asr #31 :: rd 0xffffffff rm 0x7fffffff, rn 0x7fffffff, c:v-in 3, cpsr 0xf0000000 NZCV (T?) LSL{S}.W Rd, Rn, Rm lsls.w r1, r2, r3 :: rd 0x31415927 rm 0x31415927, rn 0x00000000, c:v-in 0, cpsr 0x00000000 lsls.w r1, r2, r3 :: rd 0x6282b24e rm 0x31415927, rn 0x00000001, c:v-in 0, cpsr 0x00000000 @@ -15189,6 +16543,105 @@ mvn.w r9, 0x00000930 :: rd 0xfffff6cf, c:v-in 3, cpsr 0xf0000000 NZCV mvn.w r9, 0x00000430 :: rd 0xfffffbcf, c:v-in 3, cpsr 0xf0000000 NZCV mvn.w r9, 0x00000093 :: rd 0xffffff6c, c:v-in 3, cpsr 0xf0000000 NZCV mvn.w r9, 0x00000043 :: rd 0xffffffbc, c:v-in 3, cpsr 0xf0000000 NZCV +(T1) RBIT Rd, Rm +rbit r0, r1 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x00000001 rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x80000000 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xe49a828c rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x46a82828 rm 0x14141562, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xf89c17d5 rm 0xabe8391f, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x01551409 rm 0x9028aa80, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xb63f8b57 rm 0xead1fc6d, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xaa3193ac rm 0x35c98c55, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xd78f52ca rm 0x534af1eb, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x10d88aa2 rm 0x45511b08, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x8efee009 rm 0x90077f71, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xd215317b rm 0xde8ca84b, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x5bb05ec7 rm 0xe37a0dda, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0xd2bc1da7 rm 0xe5b83d4b, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x3728b6dd rm 0xbb6d14ec, c:v-in 0, cpsr 0xc0000000 NZ +rbit r0, r1 :: rd 0x933c1916 rm 0x68983cc9, c:v-in 0, cpsr 0xc0000000 NZ +(T1) REV Rd, Rm ------------ +rev r0, r1 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x00000080 rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x01000000 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x27594131 rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x62151414 rm 0x14141562, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x1f39e8ab rm 0xabe8391f, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x80aa2890 rm 0x9028aa80, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x6dfcd1ea rm 0xead1fc6d, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x558cc935 rm 0x35c98c55, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0xebf14a53 rm 0x534af1eb, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x081b5145 rm 0x45511b08, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x717f0790 rm 0x90077f71, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x4ba88cde rm 0xde8ca84b, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0xda0d7ae3 rm 0xe37a0dda, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0x4b3db8e5 rm 0xe5b83d4b, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0xec146dbb rm 0xbb6d14ec, c:v-in 0, cpsr 0xc0000000 NZ +rev r0, r1 :: rd 0xc93c9868 rm 0x68983cc9, c:v-in 0, cpsr 0xc0000000 NZ +(T2) REV Rd, Rm ------------ +rev r8, r9 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x00000080 rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x01000000 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x27594131 rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x62151414 rm 0x14141562, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x1f39e8ab rm 0xabe8391f, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x80aa2890 rm 0x9028aa80, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x6dfcd1ea rm 0xead1fc6d, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x558cc935 rm 0x35c98c55, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0xebf14a53 rm 0x534af1eb, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x081b5145 rm 0x45511b08, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x717f0790 rm 0x90077f71, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x4ba88cde rm 0xde8ca84b, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0xda0d7ae3 rm 0xe37a0dda, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0x4b3db8e5 rm 0xe5b83d4b, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0xec146dbb rm 0xbb6d14ec, c:v-in 0, cpsr 0xc0000000 NZ +rev r8, r9 :: rd 0xc93c9868 rm 0x68983cc9, c:v-in 0, cpsr 0xc0000000 NZ +(T1) REV16 Rd, Rm ------------ +rev16 r0, r1 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x00800000 rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x00000100 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x41312759 rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x14146215 rm 0x14141562, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0xe8ab1f39 rm 0xabe8391f, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x289080aa rm 0x9028aa80, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0xd1ea6dfc rm 0xead1fc6d, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0xc935558c rm 0x35c98c55, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x4a53ebf1 rm 0x534af1eb, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x5145081b rm 0x45511b08, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x0790717f rm 0x90077f71, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x8cde4ba8 rm 0xde8ca84b, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x7ae3da0d rm 0xe37a0dda, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0xb8e54b3d rm 0xe5b83d4b, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x6dbbec14 rm 0xbb6d14ec, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r0, r1 :: rd 0x9868c93c rm 0x68983cc9, c:v-in 0, cpsr 0xc0000000 NZ +(T2) REV16 Rd, Rm ------------ +rev16 r8, r9 :: rd 0x00000000 rm 0x00000000, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0xffffffff rm 0xffffffff, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x00800000 rm 0x80000000, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x00000100 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x41312759 rm 0x31415927, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x14146215 rm 0x14141562, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0xe8ab1f39 rm 0xabe8391f, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x289080aa rm 0x9028aa80, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0xd1ea6dfc rm 0xead1fc6d, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0xc935558c rm 0x35c98c55, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x4a53ebf1 rm 0x534af1eb, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x5145081b rm 0x45511b08, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x0790717f rm 0x90077f71, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x8cde4ba8 rm 0xde8ca84b, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x7ae3da0d rm 0xe37a0dda, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0xb8e54b3d rm 0xe5b83d4b, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x6dbbec14 rm 0xbb6d14ec, c:v-in 0, cpsr 0xc0000000 NZ +rev16 r8, r9 :: rd 0x9868c93c rm 0x68983cc9, c:v-in 0, cpsr 0xc0000000 NZ +------------ NOP (begin) ------------ +nop +nop.w +------------ NOP (end) ------------ MOV mov r0, r1 :: rd 0x00000001 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ cpy r0, r1 :: rd 0x00000001 rm 0x00000001, c:v-in 0, cpsr 0xc0000000 NZ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.c new file mode 100644 index 000000000..af2ae8b1b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.c @@ -0,0 +1,4093 @@ + +/* How to compile: + gcc -g -Wall -mcpu=cortex-a8 -o v6mediaA -marm none/tests/arm/v6media.c + or + gcc -g -Wall -mcpu=cortex-a8 -o v6mediaT -mthumb none/tests/arm/v6media.c +*/ + +#include + +static int gen_cin(cin) +{ + int r = ((cin & 1) ? (1<<29) : 0); + //r |= (1 << 31) | (1 << 30); + return r; +} + +/* test macros to generate and output the result of a single instruction */ +#define TESTINST2(instruction, RMval, RD, RM, carryin) \ +{ \ + unsigned int out; \ + unsigned int cpsr; \ +\ + __asm__ volatile( \ + "msr cpsr_fs, %3;" \ + "mov " #RM ",%2;" \ + /* set #RD to 0x55555555 so we can see which parts get overwritten */ \ + "mov " #RD ", #0x55" "\n\t" \ + "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t" \ + "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \ + instruction ";" \ + "mov %0," #RD ";" \ + "mrs %1,cpsr;" \ + : "=&r" (out), "=&r" (cpsr) \ + : "r" (RMval), "r" (gen_cin(carryin)) \ + : #RD, #RM, "cc", "memory" \ + ); \ + printf("%s :: rd 0x%08x rm 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \ + instruction, out, RMval, \ + carryin ? 1 : 0, \ + cpsr & 0xffff0000, \ + ((1<<31) & cpsr) ? 'N' : ' ', \ + ((1<<30) & cpsr) ? 'Z' : ' ', \ + ((1<<29) & cpsr) ? 'C' : ' ', \ + ((1<<28) & cpsr) ? 'V' : ' ', \ + ((1<<27) & cpsr) ? 'Q' : ' ', \ + (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \ + ); \ +} + +#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \ +{ \ + unsigned int out; \ + unsigned int cpsr; \ +\ + __asm__ volatile( \ + "msr cpsr_fs, %4;" \ + "mov " #RM ",%2;" \ + "mov " #RN ",%3;" \ + instruction ";" \ + "mov %0," #RD ";" \ + "mrs %1,cpsr;" \ + : "=&r" (out), "=&r" (cpsr) \ + : "r" (RMval), "r" (RNval), "r" (gen_cin(carryin)) \ + : #RD, #RM, #RN, "cc", "memory" \ + ); \ + printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \ + instruction, out, RMval, RNval, \ + carryin ? 1 : 0, \ + cpsr & 0xffff0000, \ + ((1<<31) & cpsr) ? 'N' : ' ', \ + ((1<<30) & cpsr) ? 'Z' : ' ', \ + ((1<<29) & cpsr) ? 'C' : ' ', \ + ((1<<28) & cpsr) ? 'V' : ' ', \ + ((1<<27) & cpsr) ? 'Q' : ' ', \ + (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \ + ); \ +} + +#define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, carryin) \ +{ \ + unsigned int out; \ + unsigned int cpsr; \ +\ + __asm__ volatile( \ + "msr cpsr_fs, %5;" \ + "mov " #RM ",%2;" \ + "mov " #RN ",%3;" \ + "mov " #RS ",%4;" \ + instruction ";" \ + "mov %0," #RD ";" \ + "mrs %1,cpsr;" \ + : "=&r" (out), "=&r" (cpsr) \ + : "r" (RMval), "r" (RNval), "r" (RSval), "r" (gen_cin(carryin)) \ + : #RD, #RM, #RN, #RS, "cc", "memory" \ + ); \ + printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \ + instruction, out, RMval, RNval, RSval, \ + carryin ? 1 : 0, \ + cpsr & 0xffff0000, \ + ((1<<31) & cpsr) ? 'N' : ' ', \ + ((1<<30) & cpsr) ? 'Z' : ' ', \ + ((1<<29) & cpsr) ? 'C' : ' ', \ + ((1<<28) & cpsr) ? 'V' : ' ', \ + ((1<<27) & cpsr) ? 'Q' : ' ', \ + (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \ + ); \ +} + +#define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, carryin) \ +{ \ + unsigned int out; \ + unsigned int out2; \ + unsigned int cpsr; \ +\ + __asm__ volatile( \ + "msr cpsr_fs, %7;" \ + "mov " #RD ",%3;" \ + "mov " #RD2 ",%4;" \ + "mov " #RM ",%5;" \ + "mov " #RS ",%6;" \ + instruction ";" \ + "mov %0," #RD ";" \ + "mov %1," #RD2 ";" \ + "mrs %2,cpsr;" \ + : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \ + : "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (gen_cin(carryin)) \ + : #RD, #RD2, #RM, #RS, "cc", "memory" \ + ); \ + printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \ + instruction, out, out2, RMval, RSval, \ + carryin ? 1 : 0, \ + cpsr & 0xffff0000, \ + ((1<<31) & cpsr) ? 'N' : ' ', \ + ((1<<30) & cpsr) ? 'Z' : ' ', \ + ((1<<29) & cpsr) ? 'C' : ' ', \ + ((1<<28) & cpsr) ? 'V' : ' ', \ + ((1<<27) & cpsr) ? 'Q' : ' ', \ + (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \ + ); \ +} + +/* helpers */ +#define TESTCARRY { int c = 0; for (c = 0; c < 2; c++) { +#define TESTCARRYEND }} + + + + +int main(int argc, char **argv) +{ + printf("MUL\n"); + TESTINST3("mul r0, r1, r2", 0, 0, r0, r1, r2, 0); + TESTINST3("mul r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); + TESTINST3("mul r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); + TESTINST3("mul r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); + TESTINST3("mul r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); + TESTINST3("mul r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); + +#if 0 + printf("MULS\n"); + TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0); + TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); + TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); + TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); + TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); + TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); +#endif + + printf("MLA\n"); + TESTINST4("mla r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mla r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mla r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mla r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); + +#if 0 + printf("MLAS\n"); + TESTINST4("mlas r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mlas r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); +#endif + + printf("MLS\n"); + TESTINST4("mls r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); + TESTINST4("mls r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mls r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); + TESTINST4("mls r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); + + printf("UMULL\n"); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#if 0 + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#endif + printf("SMULL\n"); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#if 0 + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#endif + + printf("UMLAL\n"); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#if 0 + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#endif + + printf("SMLAL\n"); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#if 0 + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); + TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); +#endif + + printf("CLZ\n"); + TESTCARRY + TESTINST2("clz r0, r1", 0, r0, r1, c); + TESTINST2("clz r0, r1", 1, r0, r1, c); + TESTINST2("clz r0, r1", 0x10, r0, r1, c); + TESTINST2("clz r0, r1", 0xffffffff, r0, r1, c); + TESTCARRYEND + + printf("extend instructions\n"); + TESTINST2("uxtb r0, r1", 0, r0, r1, 0); + TESTINST2("uxtb r0, r1", 1, r0, r1, 0); + TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0); + TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0); + TESTINST2("sxtb r0, r1", 0, r0, r1, 0); + TESTINST2("sxtb r0, r1", 1, r0, r1, 0); + TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0); + TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0); + + TESTINST2("uxth r0, r1", 0, r0, r1, 0); + TESTINST2("uxth r0, r1", 1, r0, r1, 0); + TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0); + TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0); + TESTINST2("sxth r0, r1", 0, r0, r1, 0); + TESTINST2("sxth r0, r1", 1, r0, r1, 0); + TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0); + TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0); + TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0); + TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0); + TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0); + + TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0); + TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0); + TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0); + TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0); + TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0); + + TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0); + TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0); + TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0); + TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0); + TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0); + + printf("------------ BFI ------------\n"); + /* bfi rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */ + TESTINST2("bfi r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("bfi r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("bfi r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); + + TESTINST2("bfi r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfi r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfi r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0); + + TESTINST2("bfi r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfi r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0); + + TESTINST2("bfi r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfi r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfi r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0); + + printf("------------ BFC ------------\n"); + /* bfi rDst, #lsb-in-dst, #number-of-bits-to-copy */ + TESTINST2("bfc r0, #0, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("bfc r0, #1, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("bfc r0, #2, #11", 0xAAAAAAAA, r0, r1, 0); + + TESTINST2("bfc r0, #19, #11", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfc r0, #20, #11", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfc r0, #21, #11", 0xFFFFFFFF, r0, r1, 0); + + TESTINST2("bfc r0, #0, #32", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfc r0, #1, #31", 0xFFFFFFFF, r0, r1, 0); + + TESTINST2("bfc r0, #29, #3", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfc r0, #30, #2", 0xFFFFFFFF, r0, r1, 0); + TESTINST2("bfc r0, #31, #1", 0xFFFFFFFF, r0, r1, 0); + + printf("------------ SBFX ------------\n"); + /* sbfx rDst, rSrc, #lsb, #width */ + TESTINST2("sbfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); + TESTINST2("sbfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); + + TESTINST2("sbfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); + TESTINST2("sbfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); + + TESTINST2("sbfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("sbfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("sbfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("sbfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); + + printf("------------ UBFX ------------\n"); + /* ubfx rDst, rSrc, #lsb, #width */ + TESTINST2("ubfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); + TESTINST2("ubfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); + + TESTINST2("ubfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); + TESTINST2("ubfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); + + TESTINST2("ubfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("ubfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("ubfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); + TESTINST2("ubfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); + + printf("------------ SMUL{B,T}{B,T} ------------\n"); + /* SMULbb rD, rN, rM */ + TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000, r0, r1, r2, 0); + TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002, r0, r1, r2, 0); + TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smulbb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + /* SMULtt rD, rN, rM */ + TESTINST3("smultt r0, r1, r2", 0x00000003, 0x00000004, r0, r1, r2, 0); + TESTINST3("smultt r0, r1, r2", 0x00010003, 0x00020004, r0, r1, r2, 0); + TESTINST3("smultt r0, r1, r2", 0x80010003, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smultt r0, r1, r2", 0x7fff0003, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smultt r0, r1, r2", 0xffff0003, 0xffff0004, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smultt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + /* SMULtb rD, rN, rM */ + TESTINST3("smultb r0, r1, r2", 0x00000003, 0x00040000, r0, r1, r2, 0); + TESTINST3("smultb r0, r1, r2", 0x00010003, 0x00040002, r0, r1, r2, 0); + TESTINST3("smultb r0, r1, r2", 0x80010003, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smultb r0, r1, r2", 0x7fff0003, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smultb r0, r1, r2", 0xffff0003, 0x0004ffff, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smultb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + /* SMULbt rD, rN, rM */ + TESTINST3("smulbt r0, r1, r2", 0x00030000, 0x00000004, r0, r1, r2, 0); + TESTINST3("smulbt r0, r1, r2", 0x00030001, 0x00020004, r0, r1, r2, 0); + TESTINST3("smulbt r0, r1, r2", 0x00038001, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smulbt r0, r1, r2", 0x00037fff, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smulbt r0, r1, r2", 0x0003ffff, 0xffff0004, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smulbt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + + printf("-------------- SMULW{B,T} --------------\n"); + /* SMULWB rD, rN, rM : Rn x Rm[31..16] */ + TESTINST3("smulwb r0, r1, r2", 0x00000003, 0x00020004, r0, r1, r2, 0); + TESTINST3("smulwb r0, r1, r2", 0x00010003, 0x47ff0004, r0, r1, r2, 0); + TESTINST3("smulwb r0, r1, r2", 0x80010003, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smulwb r0, r1, r2", 0x7fff0003, 0x7fff0004, r0, r1, r2, 0); + TESTINST3("smulwb r0, r1, r2", 0xffff0003, 0xffff0004, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smulwb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + /* SMULWT rD, rN, rM - Rn x Rm[15.. 0] */ + TESTINST3("smulwt r0, r1, r2", 0x00000003, 0x00040000, r0, r1, r2, 0); + TESTINST3("smulwt r0, r1, r2", 0x00010003, 0x00040002, r0, r1, r2, 0); + TESTINST3("smulwt r0, r1, r2", 0x80010003, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smulwt r0, r1, r2", 0x7fff0003, 0x00047fff, r0, r1, r2, 0); + TESTINST3("smulwt r0, r1, r2", 0xffff0003, 0x0004ffff, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0); +TESTINST3("smulwt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0); + + printf("------------ PKHBT / PKHTB ------------\n"); + /* PKHBT */ + TESTINST3("pkhbt r0, r1, r2, lsl #0", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #1", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #2", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #3", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #22", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x11223344, 0x55667788, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #0", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #1", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #2", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #3", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #8", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #0", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #1", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #2", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #3", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #8", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #0", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #1", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #2", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #3", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #8", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #0", 0xd5dc5407, 0xf87b961e, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #1", 0xd65db979, 0xc61b323b, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #2", 0xa3268abe, 0xed2cbf78, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #3", 0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x281703ed, 0x925ef472, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #8", 0xeaa652c7, 0x137741f4, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #0", 0x40b094e2, 0x17913309, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #1", 0x5388b5cd, 0x86582032, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #2", 0x5de41558, 0xccfa1c7e, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #3", 0x23ba1b46, 0x4437983c, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #4", 0x48d06549, 0xa9085781, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #8", 0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0); +TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0); + /* PKHTB */ + TESTINST3("pkhtb r0, r1, r2, asr #0", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #1", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #2", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #3", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #4", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #16", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #22", 0x11223344, 0x55667788, r0,r1,r2, 0); + TESTINST3("pkhtb r0, r1, r2, asr #31", 0x11223344, 0x55667788, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #0", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #1", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #2", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #3", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #4", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #8", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #32", 0x5f986e68, 0x35232047, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #0", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #1", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #2", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #3", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #4", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #8", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #32", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #0", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #1", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #2", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #3", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #4", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #8", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #32", 0x216158cb, 0x57a50a01, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #0", 0xd5dc5407, 0xf87b961e, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #1", 0xd65db979, 0xc61b323b, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #2", 0xa3268abe, 0xed2cbf78, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #3", 0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #4", 0x281703ed, 0x925ef472, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #8", 0xeaa652c7, 0x137741f4, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #32", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #0", 0x40b094e2, 0x17913309, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #1", 0x5388b5cd, 0x86582032, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #2", 0x5de41558, 0xccfa1c7e, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #3", 0x23ba1b46, 0x4437983c, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #4", 0x48d06549, 0xa9085781, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #8", 0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0); +TESTINST3("pkhtb r0, r1, r2, asr #32", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0); + + printf("----------------- USAT ----------------- \n"); + TESTINST2("usat r0, #0, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat r0, #1, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat r0, #5, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat r0, #8, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat r0, #11, r1", 0x11110000, r0, r1, 0); + TESTINST2("usat r0, #13, r1", 0x11110000, r0, r1, 0); + TESTINST2("usat r0, #15, r1", 0x11110000, r0, r1, 0); +TESTINST2("usat r0, #0, r1", 0xebbff82b, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #0", 0x5f986e68, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #0", 0xe7aa57b4, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #0", 0x89d2ef86, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #8", 0xc53aaba9, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #8", 0x216158cb, r0, r1, 0); +TESTINST2("usat r0, #31, r1, lsl #8", 0x3cd6cd94, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #0", 0xf87b961e, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #0", 0xc61b323b, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #0", 0xa3268abe, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #8", 0xbf73f0a5, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #8", 0x925ef472, r0, r1, 0); +TESTINST2("usat r0, #0, r1, lsl #8", 0x137741f4, r0, r1, 0); +TESTINST2("usat r0, #24, r1, lsl #2", 0x50c28082, r0, r1, 0); +TESTINST2("usat r0, #16, r1, lsl #3", 0x17962e8f, r0, r1, 0); +TESTINST2("usat r0, #12, r1, lsl #4", 0xc57243b7, r0, r1, 0); +TESTINST2("usat r0, #8, r1, lsl #8", 0xf20fb90f, r0, r1, 0); +TESTINST2("usat r0, #4, r1, lsl #12", 0xbb151055, r0, r1, 0); +TESTINST2("usat r0, #3, r1, lsl #16", 0x957440d2, r0, r1, 0); +TESTINST2("usat r0, #2, r1, lsl #24", 0x728b7771, r0, r1, 0); +TESTINST2("usat r0, #1, r1, lsl #31", 0xf13c20f3, r0, r1, 0); +TESTINST2("usat r0, #0, r1", 0xebbff82b, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0x5f986e68, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0xe7aa57b4, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0x89d2ef86, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0xc53aaba9, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0x216158cb, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0x3cd6cd94, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xf87b961e, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xc61b323b, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xa3268abe, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0xbf73f0a5, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0x925ef472, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0x137741f4, r0, r1, 0); +TESTINST2("usat r0, #24, r1, asr #2", 0x50c28082, r0, r1, 0); +TESTINST2("usat r0, #16, r1, asr #3", 0x17962e8f, r0, r1, 0); +TESTINST2("usat r0, #12, r1, asr #4", 0xc57243b7, r0, r1, 0); +TESTINST2("usat r0, #8, r1, asr #8", 0xf20fb90f, r0, r1, 0); +TESTINST2("usat r0, #4, r1, asr #12", 0xbb151055, r0, r1, 0); +TESTINST2("usat r0, #3, r1, asr #16", 0x957440d2, r0, r1, 0); +TESTINST2("usat r0, #2, r1, asr #24", 0x728b7771, r0, r1, 0); +TESTINST2("usat r0, #1, r1, asr #31", 0xf13c20f3, r0, r1, 0); +TESTINST2("usat r0, #0, r1", 0xebbff82b, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0x5f986e68, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0xe7aa57b4, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #0", 0x89d2ef86, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0xc53aaba9, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0x216158cb, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #8", 0x3cd6cd94, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xf87b961e, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xc61b323b, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #0", 0xa3268abe, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0xbf73f0a5, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0x925ef472, r0, r1, 0); +TESTINST2("usat r0, #0, r1, asr #8", 0x137741f4, r0, r1, 0); +TESTINST2("usat r0, #24, r1, asr #2", 0x50c28082, r0, r1, 0); +TESTINST2("usat r0, #16, r1, asr #3", 0x17962e8f, r0, r1, 0); +TESTINST2("usat r0, #12, r1, asr #4", 0xc57243b7, r0, r1, 0); +TESTINST2("usat r0, #8, r1, asr #8", 0xf20fb90f, r0, r1, 0); +TESTINST2("usat r0, #4, r1, asr #12", 0xbb151055, r0, r1, 0); +TESTINST2("usat r0, #3, r1, asr #16", 0x957440d2, r0, r1, 0); +TESTINST2("usat r0, #2, r1, asr #24", 0x728b7771, r0, r1, 0); +TESTINST2("usat r0, #1, r1, asr #31", 0xf13c20f3, r0, r1, 0); +#ifndef __thumb__ +TESTINST2("usat r0, #0, r1, asr #32", 0xa9085781, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #32", 0x40b094e2, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #32", 0x17913309, r0, r1, 0); +TESTINST2("usat r0, #31, r1, asr #32", 0x5388b5cd, r0, r1, 0); +TESTINST2("usat r0, #24, r1, asr #32", 0x86582032, r0, r1, 0); +TESTINST2("usat r0, #16, r1, asr #32", 0x5de41558, r0, r1, 0); +TESTINST2("usat r0, #12, r1, asr #32", 0xccfa1c7e, r0, r1, 0); +TESTINST2("usat r0, #8, r1, asr #32", 0x23ba1b46, r0, r1, 0); +TESTINST2("usat r0, #4, r1, asr #32", 0x4437983c, r0, r1, 0); +TESTINST2("usat r0, #3, r1, asr #32", 0x48d06549, r0, r1, 0); +TESTINST2("usat r0, #2, r1, asr #32", 0xa9085781, r0, r1, 0); +TESTINST2("usat r0, #1, r1, asr #32", 0xc6b4ac58, r0, r1, 0); +#endif + + printf("------------ USAT16 sat_imm ------------ \n"); + TESTINST2("usat16 r0, #0, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat16 r0, #1, r1", 0xffcdabcd, r0, r1, 0); + TESTINST2("usat16 r0, #5, r1", 0x0123feff, r0, r1, 0); + TESTINST2("usat16 r0, #8, r1", 0x0123abcd, r0, r1, 0); + TESTINST2("usat16 r0, #11, r1", 0x11110000, r0, r1, 0); + TESTINST2("usat16 r0, #13, r1", 0x1111f111, r0, r1, 0); + TESTINST2("usat16 r0, #15, r1", 0x00001111, r0, r1, 0); +TESTINST2("usat16 r0, #0, r1", 0xebbff82b, r0, r1, 0); +TESTINST2("usat16 r0, #1, r1", 0xebbff82b, r0, r1, 0); +TESTINST2("usat16 r0, #3, r1", 0x50c28082, r0, r1, 0); +TESTINST2("usat16 r0, #5, r1", 0x17962e8f, r0, r1, 0); +TESTINST2("usat16 r0, #8, r1", 0xc57243b7, r0, r1, 0); +TESTINST2("usat16 r0, #10, r1", 0xf20fb90f, r0, r1, 0); +TESTINST2("usat16 r0, #11, r1", 0xbb151055, r0, r1, 0); +TESTINST2("usat16 r0, #13, r1", 0x957440d2, r0, r1, 0); +TESTINST2("usat16 r0, #14, r1", 0x728b7771, r0, r1, 0); +TESTINST2("usat16 r0, #15, r1", 0xf13c20f3, r0, r1, 0); +TESTINST2("usat16 r0, #0, r1", 0x86398371, r0, r1, 0); +TESTINST2("usat16 r0, #1, r1", 0x03d0fb78, r0, r1, 0); +TESTINST2("usat16 r0, #3, r1", 0xd0d49b7c, r0, r1, 0); +TESTINST2("usat16 r0, #5, r1", 0x76354a58, r0, r1, 0); +TESTINST2("usat16 r0, #8, r1", 0x9fa45fb7, r0, r1, 0); +TESTINST2("usat16 r0, #10, r1", 0x7572bdec, r0, r1, 0); +TESTINST2("usat16 r0, #11, r1", 0xfea59eb6, r0, r1, 0); +TESTINST2("usat16 r0, #13, r1", 0xf2669090, r0, r1, 0); +TESTINST2("usat16 r0, #14, r1", 0xbc1ff573, r0, r1, 0); +TESTINST2("usat16 r0, #15, r1", 0x7eb226ac, r0, r1, 0); +TESTINST2("usat16 r0, #0, r1", 0x22b65db1, r0, r1, 0); +TESTINST2("usat16 r0, #1, r1", 0x776c41c7, r0, r1, 0); +TESTINST2("usat16 r0, #3, r1", 0xe50dd77c, r0, r1, 0); +TESTINST2("usat16 r0, #5, r1", 0xd6f9a698, r0, r1, 0); +TESTINST2("usat16 r0, #8, r1", 0xeda5110c, r0, r1, 0); +TESTINST2("usat16 r0, #10, r1", 0x0be36f70, r0, r1, 0); +TESTINST2("usat16 r0, #11, r1", 0xd759eb72, r0, r1, 0); +TESTINST2("usat16 r0, #13, r1", 0xd9c4b1f4, r0, r1, 0); +TESTINST2("usat16 r0, #14, r1", 0xa29eb320, r0, r1, 0); +TESTINST2("usat16 r0, #15, r1", 0xcf1e4487, r0, r1, 0); +TESTINST2("usat16 r0, #0, r1", 0x2eb68500, r0, r1, 0); +TESTINST2("usat16 r0, #1, r1", 0xcdb7ed11, r0, r1, 0); +TESTINST2("usat16 r0, #3, r1", 0x2eaea305, r0, r1, 0); +TESTINST2("usat16 r0, #5, r1", 0x6ebd04d9, r0, r1, 0); +TESTINST2("usat16 r0, #8, r1", 0xa5ec1aa8, r0, r1, 0); +TESTINST2("usat16 r0, #10, r1", 0x72f33509, r0, r1, 0); +TESTINST2("usat16 r0, #11, r1", 0xa3e6f759, r0, r1, 0); +TESTINST2("usat16 r0, #13, r1", 0xfaceab39, r0, r1, 0); +TESTINST2("usat16 r0, #14, r1", 0x2738f0ff, r0, r1, 0); +TESTINST2("usat16 r0, #15, r1", 0xe79fd570, r0, r1, 0); +TESTINST2("usat16 r0, #0, r1", 0x55ea3e4e, r0, r1, 0); +TESTINST2("usat16 r0, #1, r1", 0x2b62ba5a, r0, r1, 0); +TESTINST2("usat16 r0, #3, r1", 0x9b41bfb1, r0, r1, 0); +TESTINST2("usat16 r0, #5, r1", 0x557c7ba2, r0, r1, 0); +TESTINST2("usat16 r0, #8, r1", 0x2973c051, r0, r1, 0); +TESTINST2("usat16 r0, #10, r1", 0x6a228b19, r0, r1, 0); +TESTINST2("usat16 r0, #11, r1", 0x0cdafabe, r0, r1, 0); +TESTINST2("usat16 r0, #13, r1", 0x50865114, r0, r1, 0); +TESTINST2("usat16 r0, #14, r1", 0xd83b849b, r0, r1, 0); +TESTINST2("usat16 r0, #15, r1", 0xca5e5605, r0, r1, 0); + + printf("---------------- UADD16 ---------------- \n"); + TESTINST3("uadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); + + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0); + TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0); + +TESTINST3("uadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("uadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- SADD16 ---------------- \n"); + TESTINST3("sadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); + + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0); + TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0); + +TESTINST3("sadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("sadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- USUB16 ---------------- \n"); + TESTINST3("usub16 r0, r1, r2", 0x04000022, 0x03000011, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); + + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0); + TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0); + +TESTINST3("usub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("usub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- SSUB16 ---------------- \n"); + TESTINST3("ssub16 r0, r1, r2", 0x04000022, 0x03000011, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); + + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0); + TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0); + +TESTINST3("ssub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("ssub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- UADD8 ----------------- \n"); + TESTINST3("uadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0); + TESTINST3("uadd8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("uadd8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- USUB8 ----------------- \n"); + TESTINST3("usub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0); + TESTINST3("usub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("usub8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- QADD16 ---------------- \n"); + TESTINST3("qadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("qadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("qadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("qadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("qadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("---------------- QSUB16 ---------------- \n"); + TESTINST3("qsub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("qsub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("qsub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("qsub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("qsub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- QSAX ----------------- \n"); + TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("qsax r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("qsax r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("qsax r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("qsax r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("qsax r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- QASX ----------------- \n"); + TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("qasx r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("qasx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("qasx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("qasx r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("qasx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- SASX ----------------- \n"); + TESTINST3("sasx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("sasx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("sasx r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("sasx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("sasx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("sasx r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("sasx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- SMUAD ----------------- \n"); + TESTINST3("smuad r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0); + TESTINST3("smuad r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("smuad r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + printf("----------------- SMUADX ---------------- \n"); + TESTINST3("smuadx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0); + TESTINST3("smuadx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("smuadx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- SMLAD ----------------- \n"); + TESTINST4("smlad r0, r1, r2, r3", + 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); + TESTINST4("smlad r0, r1, r2, r3", + 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlad r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + printf("----------------- SMLADX ----------------- \n"); + TESTINST4("smladx r0, r1, r2, r3", + 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); + TESTINST4("smladx r0, r1, r2, r3", + 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); +TESTINST4("smladx r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smladx r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smladx r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); + + printf("------------ SMLABB, SMLATT, SMLATB, SMLABT ------------\n"); + /* smlabb rD, rN, rM, rA */ + TESTINST4("smlabb r0, r1, r2, r3", + 0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlabb r0, r1, r2, r3", + 0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlabb r0, r1, r2, r3", + 0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlabb r0, r1, r2, r3", + 0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlabb r0, r1, r2, r3", + 0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlabb r0, r1, r2, r3", + 0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlabb r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + /* smlatt rD, rN, rM, rA */ + TESTINST4("smlatt r0, r1, r2, r3", + 0x00000003, 0x00000004, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlatt r0, r1, r2, r3", + 0x00010003, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlatt r0, r1, r2, r3", + 0x80010003, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlatt r0, r1, r2, r3", + 0x7fff0003, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlatt r0, r1, r2, r3", + 0xffff0003, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlatt r0, r1, r2, r3", + 0xfffc0003, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlatt r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + /* smlatb rD, rN, rM, rA */ + TESTINST4("smlatb r0, r1, r2, r3", + 0x00000003, 0x00040000, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlatb r0, r1, r2, r3", + 0x00010003, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlatb r0, r1, r2, r3", + 0x80010003, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlatb r0, r1, r2, r3", + 0x7fff0003, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlatb r0, r1, r2, r3", + 0xffff0003, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlatb r0, r1, r2, r3", + 0xfffc0003, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlatb r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + /* smlabt rD, rN, rM, rA */ + TESTINST4("smlabt r0, r1, r2, r3", + 0x00030000, 0x00000004, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlabt r0, r1, r2, r3", + 0x00030001, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlabt r0, r1, r2, r3", + 0x00038001, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlabt r0, r1, r2, r3", + 0x00037fff, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlabt r0, r1, r2, r3", + 0x0003ffff, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlabt r0, r1, r2, r3", + 0x0003fffc, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlabt r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + printf("------------ UQSUB8 -----------------------------------\n"); + TESTINST3("uqsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0); + TESTINST3("uqsub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uqsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ UQADD8 -----------------------------------\n"); + TESTINST3("uqadd8 r0, r1, r2", 0x0009ffff, 0x001800aa, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0x00aa0018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0x0000aa18, 0xff00ff09, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0xff9fefcc, 0xff9ffedd, r0, r1, r2, 0); + TESTINST3("uqadd8 r0, r1, r2", 0xff07ff09, 0xaa020318, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uqadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ SEL --------------------------------------\n"); + TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("sel r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("sel r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("sel r0, r1, r2", 0xfffcffff, 0xffff0001, r0, r1, r2, 0); + TESTINST3("sel r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sel r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ QSUB8-------------------------------------\n"); + TESTINST3("qsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("qsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ QADD8-------------------------------------\n"); + TESTINST3("qadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("qadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ SHADD8 -----------------------------------\n"); + TESTINST3("shadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("shadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ UHADD8 -----------------------------------\n"); + TESTINST3("uhadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0); + TESTINST3("uhadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uhadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("----------------- SSAT ----------------- \n"); + TESTINST2("ssat r0, #1, r1, LSL #31", 0x80008000, r0, r1, 0); + TESTINST2("ssat r0, #6, r1, LSL #24", 0x80008000, r0, r1, 0); + TESTINST2("ssat r0, #8, r1, ASR #18", 0x80008000, r0, r1, 0); + TESTINST2("ssat r0, #12, r1, ASR #16", 0x80008000, r0, r1, 0); + TESTINST2("ssat r0, #16, r1, LSL #12", 0xffff0009, r0, r1, 0); + TESTINST2("ssat r0, #18, r1, LSL #8", 0xffff0009, r0, r1, 0); + TESTINST2("ssat r0, #24, r1, ASR #6", 0xffff0009, r0, r1, 0); + TESTINST2("ssat r0, #31, r1, ASR #1", 0xffff0009, r0, r1, 0); +TESTINST2("ssat r0, #1, r1", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #1, r1", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #1, r1", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #1, r1", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #32, r1", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, LSL #31", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #3, r1, LSL #28", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #6, r1, LSL #24", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #8, r1, ASR #18", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #12, r1, ASR #16", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #16, r1, LSL #12", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #18, r1, LSL #8", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #24, r1, ASR #6", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #28, r1, ASR #3", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #31, r1, ASR #1", 0xffc134df, r0, r1, 0); +#ifndef __thumb__ +TESTINST2("ssat r0, #1, r1, ASR #32", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #1, r1, ASR #32", 0xffc134df, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x256bfdd6, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0xc02a0c05, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0xee2fa46e, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x97a7da20, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0xa231d5e6, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x10e1968a, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x0e089270, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x9e8e0185, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0x3096f12e, r0, r1, 0); +TESTINST2("ssat r0, #32, r1, ASR #32", 0xffc134df, r0, r1, 0); +#endif + + printf("---------------- SADD8 ----------------- \n"); + TESTINST3("sadd8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0x00fd00e8, 0xffff00f7, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd0018, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0x0000fd18, 0xff00fff7, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd00e8, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0x00fefd18, 0xff07fff7, r0, r1, r2, 0); + TESTINST3("sadd8 r0, r1, r2", 0xff07fff7, 0x00fefde8, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("---------------- SSUB8 ----------------- \n"); + TESTINST3("ssub8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0x00fd00e8, 0xffff00f7, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0xffff00f7, 0x00fd0018, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0x0000fd18, 0xff00fff7, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0xffff00f7, 0x00fd00e8, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0x00fefd18, 0xff07fff7, r0, r1, r2, 0); + TESTINST3("ssub8 r0, r1, r2", 0xff07fff7, 0x00fefde8, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("ssub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ SXTAB ------------\n"); + TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, r0, r1, r2, 0); + + TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, r0, r1, r2, 0); + +TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ UXTAB ------------\n"); + TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, r0, r1, r2, 0); + + TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, r0, r1, r2, 0); + +TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("----------- UXTAB16 -----------\n"); + TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182819, r0, r1, r2, 0); + + TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182899, r0, r1, r2, 0); + TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x3141FFFF, 0x27182899, r0, r1, r2, 0); + +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ SXTAH ------------\n"); + TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0); + + TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0); + +TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("sxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ UXTAH ------------\n"); + TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0); + + TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0); + TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0); + +TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + +TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("uxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); + + printf("------------ SMLAWB ------------\n"); + /* smlawb rD, rN, rM, rA */ + TESTINST4("smlawb r0, r1, r2, r3", + 0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlawb r0, r1, r2, r3", + 0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlawb r0, r1, r2, r3", + 0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlawb r0, r1, r2, r3", + 0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlawb r0, r1, r2, r3", + 0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlawb r0, r1, r2, r3", + 0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlawb r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + printf("------------ SMLAWT ------------\n"); + /* smlawt rD, rN, rM, rA */ + TESTINST4("smlawt r0, r1, r2, r3", + 0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0); + TESTINST4("smlawt r0, r1, r2, r3", + 0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlawt r0, r1, r2, r3", + 0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0); + TESTINST4("smlawt r0, r1, r2, r3", + 0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0); + TESTINST4("smlawt r0, r1, r2, r3", + 0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0); + TESTINST4("smlawt r0, r1, r2, r3", + 0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlawt r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + + printf("----------------- SMLSD ----------------- \n"); + TESTINST4("smlsd r0, r1, r2, r3", + 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); + TESTINST4("smlsd r0, r1, r2, r3", + 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("smlsd r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + printf("----------------- SMLSDX ----------------- \n"); + TESTINST4("smlsdx r0, r1, r2, r3", + 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); + TESTINST4("smlsdx r0, r1, r2, r3", + 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); +TESTINST4("smlsdx r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("smlsdx r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("smlsdx r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); + + + printf("----------------- SMUSD ----------------- \n"); + TESTINST3("smusd r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0); + TESTINST3("smusd r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("smusd r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + printf("----------------- SMUSDX ---------------- \n"); + TESTINST3("smusdx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0); + TESTINST3("smusdx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("smusdx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- USAD8 ---------------- \n"); + TESTINST3("usad8 r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0); + TESTINST3("usad8 r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); +TESTINST3("usad8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0); + + printf("----------------- USADA8 ----------------- \n"); + TESTINST4("usada8 r0, r1, r2, r3", + 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); + TESTINST4("usada8 r0, r1, r2, r3", + 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); +TESTINST4("usada8 r0, r1, r2, r3", + 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); + + + + +/* +TESTINST3("theinsn", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0); +TESTINST3("theinsn", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0); +TESTINST3("theinsn", 0x299da970, 0xe8108f1b, r0, r1, r2, 0); +TESTINST3("theinsn", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0); +TESTINST3("theinsn", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0); +TESTINST3("theinsn", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0); +TESTINST3("theinsn", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0); +TESTINST3("theinsn", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0); +TESTINST3("theinsn", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0); +TESTINST3("theinsn", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0); +*/ + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.stdout.exp new file mode 100644 index 000000000..2e8e9d84b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.stdout.exp @@ -0,0 +1,3173 @@ +MUL +mul r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mul r0, r1, r2 :: rd 0x00000000 rm 0xffffffff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mul r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mul r0, r1, r2 :: rd 0x00000001 rm 0xffffffff, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mul r0, r1, r2 :: rd 0x00000001 rm 0x7fffffff, rn 0x7fffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mul r0, r1, r2 :: rd 0xfffe0001 rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +MLA +mla r0, r1, r2, r3 :: rd 0x00000001 rm 0x00000000, rn 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mla r0, r1, r2, r3 :: rd 0x00000001 rm 0xffffffff, rn 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mla r0, r1, r2, r3 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mla r0, r1, r2, r3 :: rd 0x00000002 rm 0xffffffff, rn 0xffffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mla r0, r1, r2, r3 :: rd 0x00000002 rm 0x7fffffff, rn 0x7fffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mla r0, r1, r2, r3 :: rd 0xfffe0002 rm 0x0000ffff, rn 0x0000ffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +MLS +mls r0, r1, r2, r3 :: rd 0x00000001 rm 0x00000000, rn 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mls r0, r1, r2, r3 :: rd 0x00000001 rm 0xffffffff, rn 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mls r0, r1, r2, r3 :: rd 0x00000001 rm 0x00000000, rn 0xffffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mls r0, r1, r2, r3 :: rd 0x00000000 rm 0xffffffff, rn 0xffffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mls r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fffffff, rn 0x7fffffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +mls r0, r1, r2, r3 :: rd 0x00020000 rm 0x0000ffff, rn 0x0000ffff rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +UMULL +umull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000001 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umull r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umull r0, r1, r2, r3 :: rd 0xfffe0001 rd2 0x00000000, rm 0x0000ffff rs 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umull r0, r1, r2, r3 :: rd 0x00000001 rd2 0xfffffffe, rm 0xffffffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +SMULL +smull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smull r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000001 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smull r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smull r0, r1, r2, r3 :: rd 0xfffe0001 rd2 0x00000000, rm 0x0000ffff rs 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smull r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0xffffffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +UMLAL +umlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000001, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000001, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0xffffffff, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000001 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0xfffe0001 rd2 0x00000000, rm 0x0000ffff rs 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +umlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0xfffffffe, rm 0xffffffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +SMLAL +smlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000001, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000001, rm 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0xffffffff, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000000 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000000 rd2 0x00000000, rm 0x00000001 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0x00000001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0xfffe0001 rd2 0x00000000, rm 0x0000ffff rs 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlal r0, r1, r2, r3 :: rd 0x00000001 rd2 0x00000000, rm 0xffffffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +CLZ +clz r0, r1 :: rd 0x00000020 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +clz r0, r1 :: rd 0x0000001f rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +clz r0, r1 :: rd 0x0000001b rm 0x00000010, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +clz r0, r1 :: rd 0x00000000 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +clz r0, r1 :: rd 0x00000020 rm 0x00000000, carryin 1, cpsr 0x20000000 C ge[3:0]=0000 +clz r0, r1 :: rd 0x0000001f rm 0x00000001, carryin 1, cpsr 0x20000000 C ge[3:0]=0000 +clz r0, r1 :: rd 0x0000001b rm 0x00000010, carryin 1, cpsr 0x20000000 C ge[3:0]=0000 +clz r0, r1 :: rd 0x00000000 rm 0xffffffff, carryin 1, cpsr 0x20000000 C ge[3:0]=0000 +extend instructions +uxtb r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1 :: rd 0x000000ff rm 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1 :: rd 0x000000ff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb r0, r1 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb r0, r1 :: rd 0xffffffff rm 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxth r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxth r0, r1 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxth r0, r1 :: rd 0x0000ffff rm 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxth r0, r1 :: rd 0x0000ffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0x00007fff rm 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0xffffffff rm 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0xffffffff rm 0x0010ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0x00007fff rm 0x00107fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxth r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1, ror #0 :: rd 0x000000ff rm 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1, ror #8 :: rd 0x00000000 rm 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1, ror #8 :: rd 0x000000ff rm 0x0000ff00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1, ror #16 :: rd 0x000000ff rm 0x00ff0000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb r0, r1, ror #24 :: rd 0x000000ff rm 0xff000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb16 r0, r1 :: rd 0x00ff00ff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtb16 r0, r1, ror #16 :: rd 0x00ff0000 rm 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb16 r0, r1 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb16 r0, r1 :: rd 0xffffffff rm 0x00ff00ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtb16 r0, r1 :: rd 0x007f007f rm 0x007f007f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ BFI ------------ +bfi r0, r1, #0, #11 :: rd 0x555552aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #1, #11 :: rd 0x55555555 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #2, #11 :: rd 0x55554aa9 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #19, #11 :: rd 0x7ffd5555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #20, #11 :: rd 0x7ff55555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #21, #11 :: rd 0xfff55555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #0, #32 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #1, #31 :: rd 0xffffffff rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #29, #3 :: rd 0xf5555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #30, #2 :: rd 0xd5555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfi r0, r1, #31, #1 :: rd 0xd5555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ BFC ------------ +bfc r0, #0, #11 :: rd 0x55555000 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #1, #11 :: rd 0x55555001 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #2, #11 :: rd 0x55554001 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #19, #11 :: rd 0x40055555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #20, #11 :: rd 0x00055555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #21, #11 :: rd 0x00155555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #0, #32 :: rd 0x00000000 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #1, #31 :: rd 0x00000001 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #29, #3 :: rd 0x15555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #30, #2 :: rd 0x15555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +bfc r0, #31, #1 :: rd 0x55555555 rm 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SBFX ------------ +sbfx r0, r1, #0, #1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #0, #1 :: rd 0xffffffff rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #1 :: rd 0x00000000 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #1 :: rd 0xffffffff rm 0x00000002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #1 :: rd 0xffffffff rm 0x00000003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #0, #2 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #0, #2 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #2 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #2 :: rd 0x00000000 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #2 :: rd 0x00000001 rm 0x00000002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #2 :: rd 0x00000001 rm 0x00000003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #0, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #1, #11 :: rd 0xfffffd55 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #2, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #2, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #31, #1 :: rd 0xffffffff rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sbfx r0, r1, #30, #2 :: rd 0xfffffffe rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UBFX ------------ +ubfx r0, r1, #0, #1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #0, #1 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #1 :: rd 0x00000000 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #1 :: rd 0x00000001 rm 0x00000002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #1 :: rd 0x00000001 rm 0x00000003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #0, #2 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #0, #2 :: rd 0x00000001 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #2 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #2 :: rd 0x00000000 rm 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #2 :: rd 0x00000001 rm 0x00000002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #2 :: rd 0x00000001 rm 0x00000003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #0, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #1, #11 :: rd 0x00000555 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #2, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #2, #11 :: rd 0x000002aa rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #31, #1 :: rd 0x00000001 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ubfx r0, r1, #30, #2 :: rd 0x00000002 rm 0xaaaaaaaa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SMUL{B,T}{B,T} ------------ +smulbb r0, r1, r2 :: rd 0x00000000 rm 0x00030000, rn 0x00040000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x00000002 rm 0x00030001, rn 0x00040002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xc000ffff rm 0x00038001, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x3fff0001 rm 0x00037fff, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x00000001 rm 0x0003ffff, rn 0x0004ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xffcb2e38 rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x07a8b29d rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xff5c9d7c rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xfecbe07c rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xff042c1a rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x01484910 rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0dd1cd08 rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x023a5a06 rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xd832f800 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0056d6f4 rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x10c39d25 rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x07035c90 rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xe8fa4ae9 rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xea7e2dc4 rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xfbb41d80 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf7c8c69a rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0792e7b8 rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf437f0b0 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf602272f rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xfe76ad20 rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xc8ea11a0 rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0cb3fcd3 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xefe9fcf3 rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xef9befb8 rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x26be8fe0 rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf1b742a0 rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x20456454 rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xeed72dd0 rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0fd5b9da rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0440f214 rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf21aba04 rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf39d9f16 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xd2cefb78 rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x03c56208 rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xea7902bc rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x1c6ede49 rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf16e45b5 rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf8597100 rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0dc69ed8 rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x028565c4 rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x0e6bd97c rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xd61a32e0 rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x09b06e51 rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xc9215a70 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xed3740f0 rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf7045ab6 rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x06632384 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xe1d4f1da rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0x20d81c27 rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbb r0, r1, r2 :: rd 0xf81cf537 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x00000000 rm 0x00000003, rn 0x00000004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x00000002 rm 0x00010003, rn 0x00020004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xc000ffff rm 0x80010003, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x3fff0001 rm 0x7fff0003, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x00000001 rm 0xffff0003, rn 0xffff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf961a794 rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xfe995f90 rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xfff8ec65 rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xffb2ef91 rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x11e3356c rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf47479d7 rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf357ff64 rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf6f7b4c6 rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x12125961 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xe37ea72a rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x215567c7 rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x1d17a20d rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x1fe4089e rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x23125d5d rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0c590fd8 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x07e4f4bf rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xfcef02be rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xde8dc080 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xd809e8f8 rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0d7aa233 rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xe1e51788 rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x080b03d8 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x1bd44694 rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0439c92c rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x09573b0f rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x12eb1314 rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0161f097 rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0938f4b4 rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xe832b3a0 rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf2e3e9ec rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x14ddd088 rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xefff9438 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf2bf54b4 rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xe71bc6a2 rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xef6388cd rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xd1d70c79 rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x0528ed18 rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x064f5290 rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x2a26c1f2 rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xfb18e4a9 rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xe748a42c rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x069a597e rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x02afb688 rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xead49311 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf080ee3a rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xf40b8308 rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xff48ec80 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x002937f8 rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0xfb59e3d2 rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultt r0, r1, r2 :: rd 0x1a0108a8 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x00000000 rm 0x00000003, rn 0x00040000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x00000002 rm 0x00010003, rn 0x00040002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xc000ffff rm 0x80010003, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x3fff0001 rm 0x7fff0003, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x00000001 rm 0xffff0003, rn 0x0004ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x05ec6cac rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfefee06d rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x000bf85c rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfe0b9cf3 rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf17ba3d7 rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfed1e48c rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x07d9b884 rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x023049f2 rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x0ee5e6a0 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfd726def rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xee5e2381 rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf96881f8 rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x14d7ecc2 rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xe2e60a96 rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfc2bf7c0 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xef9a9946 rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfeac4758 rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf98ccce0 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xeea90989 rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfddc2f4e rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x36a1ba64 rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xe48c78a4 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xee231715 rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x0f77aa68 rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x0e4d01f8 rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf49d0772 rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x15bd279c rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x1080777c rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xc9e2bc84 rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf07dc20c rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf558e25c rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf065a516 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x12e41cc8 rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x37346b50 rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf63870d3 rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x1ed8f6a9 rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xef674168 rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xdb25a6c0 rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf3f3fe24 rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xff192223 rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x11cafd44 rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xf29ea4e8 rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x03d8464c rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x212f12e8 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x08e8ae60 rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfcb6112a rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfee60308 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x21080a58 rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0xfd62dd9a rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smultb r0, r1, r2 :: rd 0x078646b8 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x00000000 rm 0x00030000, rn 0x00000004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x00000002 rm 0x00030001, rn 0x00020004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xc000ffff rm 0x00038001, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x3fff0001 rm 0x00037fff, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x00000001 rm 0x0003ffff, rn 0xffff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x003b0448 rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0aaeb690 rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0060973d rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xffd08bd4 rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x01364bc8 rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0c8ba034 rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xe9b87ac8 rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xf6ce2d62 rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xcfb878c0 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x03c99878 rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xe04ec043 rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xe10c4b16 rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xdcc68d47 rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x19eb600e rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0ddba470 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x03f4a7f1 rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x11803376 rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xc2e84f40 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xe8f92748 rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x09ad81d0 rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x1e5af140 rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xfc4730f2 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x190f938c rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xfb85a144 rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x194e6d3c rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x17bb7c40 rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x020d6b25 rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xf668f470 rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x06f70390 rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x03987f34 rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x1b37e8b8 rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xf34c9c38 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x1fb3fdec rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xfe4cb6ed rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xdb6f35c4 rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xd573f619 rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0487909b rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x014f56c0 rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xcfcc90ac rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x0db4b44c rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xebf7a214 rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x14acfbe8 rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x06c513f6 rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x23010c06 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x20ac71c1 rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xdf589e78 rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x04259640 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xffda5ab2 rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0x3a6a827b rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulbt r0, r1, r2 :: rd 0xe4be6035 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +-------------- SMULW{B,T} -------------- +smulwb r0, r1, r2 :: rd 0x00000000 rm 0x00000003, rn 0x00020004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x00000004 rm 0x00010003, rn 0x47ff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfffe0004 rm 0x80010003, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x0001fffc rm 0x7fff0003, rn 0x7fff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfffffffc rm 0xffff0003, rn 0xffff0004, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x05ec94f3 rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfefee815 rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x000c1f84 rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfe0bd12f rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf17bdc1c rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfed1def8 rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x07d9c655 rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x023044ba rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x0ee61cf2 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfd7265d6 rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xee5df32b rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf96888fb rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x14d7d5bc rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xe2e5f514 rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfc2bf374 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xef9b0af4 rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfeac4eea rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf98cd965 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xeea930ea rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfddc3ed2 rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x36a2015b rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xe48c1390 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xee2306fe rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x0f77e42d rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x0e4d28b6 rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf49cf929 rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x15bd47e1 rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x1080adae rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xc9e26000 rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf07dc64c rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf558d476 rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf06598b3 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x12e451be rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x3733fc9d rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf6389d95 rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x1ed91317 rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xef67760b rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xdb259f19 rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf3f3ee6c rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xff191737 rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x11cad579 rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xf29efaa6 rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x03d8048b rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x212f5a21 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x08e8e0a7 rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfcb6082e rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfee5f817 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x2108411e rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0xfd62fe72 rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwb r0, r1, r2 :: rd 0x07863ed4 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x00000000 rm 0x00000003, rn 0x00040000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x00000004 rm 0x00010003, rn 0x00040002, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfffe0004 rm 0x80010003, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0001fffc rm 0x7fff0003, rn 0x00047fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfffffffc rm 0xffff0003, rn 0x0004ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf9617a93 rm 0x2575feb2, rn 0xd2c4287c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfe996a3e rm 0xfb412431, rn 0x4b90362d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfff8d53e rm 0x004dfbe5, rn 0xe87927cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xffb2f79c rm 0xf6a3fa3c, rn 0x083b3571, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x11e2f016 rm 0xbf17fb9a, rn 0xb9743941, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf4744347 rm 0x2c0bd024, rn 0xbce5f924, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf357e91c rm 0x3e976e2e, rn 0xcc3c201c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf6f7ca4e rm 0xb4bfb365, rn 0x1ebaf88e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x12129b46 rm 0x288593c0, rn 0x722d5e20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xe37e4cc9 rm 0x4d7ff5b4, rn 0xa1d6f791, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x2155c326 rm 0x4557be13, rn 0x7b11bee7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x1d178319 rm 0xadcf5772, rn 0xa5631488, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x1fe3e564 rm 0x989a7235, rn 0xb10bcc65, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x23127748 rm 0x4d6f393a, rn 0x73f39fca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0c591db3 rm 0x24a3291e, rn 0x5648e540, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x07e4be02 rm 0xdd91eebf, rn 0xc54f79e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfcef143e rm 0xf7ce2ec6, rn 0x5fc92974, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xde8e0170 rm 0xbc1083e8, rn 0x7e08184e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xd80a43b9 rm 0xa617cc31, rn 0x71c8315f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0d7a4073 rm 0xdfe1e8f0, rn 0x9493110e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xe1e4f06c rm 0x6ef49020, rn 0xba8a7e0d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x080b2175 rm 0x3dc4e36b, rn 0x21568e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x1bd45fa3 rm 0x52db4a9d, rn 0x55fcc8cf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0439d8f4 rm 0x3564c76c, rn 0x14434a2a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0957545d rm 0x27836b0c, rn 0x3c855ca8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x12eb2acf rm 0x62ff7c30, rn 0x30ece28e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0161f2a4 rm 0x40955fdf, rn 0x057b562c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x093912fd rm 0x3b34c270, rn 0x27e1475b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xe8328aef rm 0x7fdcda96, rn 0xd05893a7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf2e3ed84 rm 0xb6ab141d, rn 0x2dc43624, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x14ddebbf rm 0x403d53cb, rn 0x5328d58c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xefff8784 rm 0x21ef1aef, rn 0x87488a4a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf2bf2f8b rm 0x31458a23, rn 0xbb246228, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xe71bf88b rm 0x848af791, rn 0x339d8d88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xef63d4d3 rm 0xda3bacdc, rn 0x70974249, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xd1d6e1ec rm 0x649d5cbd, rn 0x8a8d4e7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0528dcba rm 0xc0c8c881, rn 0xeb1b4335, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x064f53df rm 0x7dd81a20, rn 0x0cd6b508, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x2a26f8ef rm 0x6892886c, rn 0x6731e282, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfb18a94a rm 0x112dcffc, rn 0xb6edf28f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xe748db71 rm 0xabfabbe6, rn 0x4b4ec9ca, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x069a2f2d rm 0xe52aabf8, rn 0xc1037fa4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x02af8897 rm 0xf2f4df1f, rn 0xcb4ab48f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xead465a1 rm 0x435f909a, rn 0xaf8f7e18, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf08096c5 rm 0x2106ba5f, rn 0x87df4510, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xf40b6260 rm 0x246a6376, rn 0xabf4e8e1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xff48e565 rm 0x1046a1a3, rn 0xf4c0eeac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x0029383c rm 0x638ca515, rn 0x006a54f2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0xfb5a1e3c rm 0xf63e7a9d, rn 0x79f74493, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smulwt r0, r1, r2 :: rd 0x1a00ed66 rm 0xbd6845cd, rn 0x9c09e313, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ PKHBT / PKHTB ------------ +pkhbt r0, r1, r2, lsl #0 :: rd 0x55663344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0xaacc3344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0x55993344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0xab333344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x56673344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0x77883344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #22 :: rd 0xe2003344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x00003344 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0xc1558082 rm 0x50c28082, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x69ec2e8f rm 0x17962e8f, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x03fa43b7 rm 0xc57243b7, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0xf52e26ac rm 0x7eb226ac, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x7fcbf026 rm 0xbce0f026, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x2dd07252 rm 0xa5757252, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x5e4b77c1 rm 0xf4a477c1, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0x464a3a21 rm 0x76723a21, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0xe8101105 rm 0x74d01105, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2 :: rd 0xcd903e2c rm 0xc1273e2c, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #0 :: rd 0x35236e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0x6a466e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0xd48c6e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0xa9196e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x52326e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #8 :: rd 0x23206e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #12 :: rd 0x32046e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0x20476e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #24 :: rd 0x47006e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x80006e68 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #0 :: rd 0x89d26261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0x13a56261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0x274b6261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0x4e976261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x9d2e6261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #8 :: rd 0xd2ef6261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #12 :: rd 0x2ef86261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0xef866261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #24 :: rd 0x86006261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x00006261 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #0 :: rd 0x57a558cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0xaf4a58cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0x5e9458cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0xbd2858cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x7a5058cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #8 :: rd 0xa50a58cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #12 :: rd 0x50a058cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0x0a0158cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #24 :: rd 0x010058cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x800058cb rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #0 :: rd 0xf87b5407 rm 0xd5dc5407, rn 0xf87b961e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0x8c36b979 rm 0xd65db979, rn 0xc61b323b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0xb4b28abe rm 0xa3268abe, rn 0xed2cbf78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0x7db8f0a5 rm 0xbf73f0a5, rn 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x25ef03ed rm 0x281703ed, rn 0x925ef472, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #8 :: rd 0x774152c7 rm 0xeaa652c7, rn 0x137741f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #12 :: rd 0x5bd2de8b rm 0x71fbde8b, rn 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0x821a0ad8 rm 0x884c0ad8, rn 0xc00b821a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #24 :: rd 0x69008606 rm 0xe1bb8606, rn 0x58293969, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x8000d624 rm 0xa3cfd624, rn 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #0 :: rd 0x179194e2 rm 0x40b094e2, rn 0x17913309, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #1 :: rd 0x0cb0b5cd rm 0x5388b5cd, rn 0x86582032, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #2 :: rd 0x33e81558 rm 0x5de41558, rn 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #3 :: rd 0x21bc1b46 rm 0x23ba1b46, rn 0x4437983c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #4 :: rd 0x90856549 rm 0x48d06549, rn 0xa9085781, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #8 :: rd 0xaeadac58 rm 0xc6b4ac58, rn 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #12 :: rd 0x1e6af597 rm 0xc2bdf597, rn 0xdde1e6a4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #16 :: rd 0x0dea3a72 rm 0x852e3a72, rn 0x157b0dea, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #24 :: rd 0x740057b4 rm 0xe7aa57b4, rn 0x1584bd74, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhbt r0, r1, r2, lsl #31 :: rd 0x80004d54 rm 0xd4b64d54, rn 0xc53aaba9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0x11220000 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0x11223bc4 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0x11229de2 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0x1122cef1 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x11226778 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x11225566 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #22 :: rd 0x11220155 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0x11220000 rm 0x11223344, rn 0x55667788, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0x50c23709 rm 0x50c28082, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0x17960212 rm 0x17962e8f, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0xc5729bb5 rm 0xc57243b7, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0x7eb29fbf rm 0x7eb226ac, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0xbce0e5a9 rm 0xbce0f026, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0xa5751366 rm 0xa5757252, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0xf4a41cbf rm 0xf4a477c1, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0x767221cc rm 0x76723a21, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0x74d08f1b rm 0x74d01105, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2 :: rd 0xc127d604 rm 0xc1273e2c, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0x5f980000 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0x5f989023 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0x5f98c811 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0x5f986408 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x5f983204 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #8 :: rd 0x5f982320 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #12 :: rd 0x5f985232 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x5f983523 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #24 :: rd 0x5f980035 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0x5f980000 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #32 :: rd 0x5f980000 rm 0x5f986e68, rn 0x35232047, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0x36f2ffff rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0x36f277c3 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0x36f2bbe1 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0x36f25df0 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x36f22ef8 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #8 :: rd 0x36f2d2ef rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #12 :: rd 0x36f29d2e rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x36f289d2 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #24 :: rd 0x36f2ff89 rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0x36f2ffff rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #32 :: rd 0x36f2ffff rm 0x36f26261, rn 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0x21610000 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0x21618500 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0x21614280 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0x2161a140 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x216150a0 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #8 :: rd 0x2161a50a rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #12 :: rd 0x21617a50 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x216157a5 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #24 :: rd 0x21610057 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0x21610000 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #32 :: rd 0x21610000 rm 0x216158cb, rn 0x57a50a01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0xd5dcffff rm 0xd5dc5407, rn 0xf87b961e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0xd65d991d rm 0xd65db979, rn 0xc61b323b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0xa3262fde rm 0xa3268abe, rn 0xed2cbf78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0xbf73e299 rm 0xbf73f0a5, rn 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x2817ef47 rm 0x281703ed, rn 0x925ef472, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #8 :: rd 0xeaa67741 rm 0xeaa652c7, rn 0x137741f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #12 :: rd 0x71fbba5b rm 0x71fbde8b, rn 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x884cc00b rm 0x884c0ad8, rn 0xc00b821a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #24 :: rd 0xe1bb0058 rm 0xe1bb8606, rn 0x58293969, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0xa3cf0000 rm 0xa3cfd624, rn 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #32 :: rd 0xa3cf0000 rm 0xa3cfd624, rn 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #0 :: rd 0x40b00000 rm 0x40b094e2, rn 0x17913309, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #1 :: rd 0x53881019 rm 0x5388b5cd, rn 0x86582032, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #2 :: rd 0x5de4871f rm 0x5de41558, rn 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #3 :: rd 0x23baf307 rm 0x23ba1b46, rn 0x4437983c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #4 :: rd 0x48d08578 rm 0x48d06549, rn 0xa9085781, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #8 :: rd 0xc6b4aead rm 0xc6b4ac58, rn 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #12 :: rd 0xc2bdde1e rm 0xc2bdf597, rn 0xdde1e6a4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #16 :: rd 0x852e157b rm 0x852e3a72, rn 0x157b0dea, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #24 :: rd 0xe7aa0015 rm 0xe7aa57b4, rn 0x1584bd74, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #31 :: rd 0xd4b6ffff rm 0xd4b64d54, rn 0xc53aaba9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +pkhtb r0, r1, r2, asr #32 :: rd 0xd4b6ffff rm 0xd4b64d54, rn 0xc53aaba9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- USAT ----------------- +usat r0, #0, r1 :: rd 0x00000000 rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #1, r1 :: rd 0x00000001 rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #5, r1 :: rd 0x0000001f rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #8, r1 :: rd 0x000000ff rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #11, r1 :: rd 0x000007ff rm 0x11110000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #13, r1 :: rd 0x00001fff rm 0x11110000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #15, r1 :: rd 0x00007fff rm 0x11110000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1 :: rd 0x00000000 rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, lsl #0 :: rd 0x5f986e68 rm 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, lsl #0 :: rd 0x00000000 rm 0xe7aa57b4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, lsl #0 :: rd 0x00000000 rm 0x89d2ef86, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, lsl #8 :: rd 0x3aaba900 rm 0xc53aaba9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, lsl #8 :: rd 0x6158cb00 rm 0x216158cb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, lsl #8 :: rd 0x00000000 rm 0x3cd6cd94, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #0 :: rd 0x00000000 rm 0xf87b961e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #0 :: rd 0x00000000 rm 0xc61b323b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #0 :: rd 0x00000000 rm 0xa3268abe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #8 :: rd 0x00000000 rm 0xbf73f0a5, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #8 :: rd 0x00000000 rm 0x925ef472, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, lsl #8 :: rd 0x00000000 rm 0x137741f4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #24, r1, lsl #2 :: rd 0x00ffffff rm 0x50c28082, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #16, r1, lsl #3 :: rd 0x00000000 rm 0x17962e8f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #12, r1, lsl #4 :: rd 0x00000fff rm 0xc57243b7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #8, r1, lsl #8 :: rd 0x000000ff rm 0xf20fb90f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #4, r1, lsl #12 :: rd 0x0000000f rm 0xbb151055, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #3, r1, lsl #16 :: rd 0x00000007 rm 0x957440d2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #2, r1, lsl #24 :: rd 0x00000003 rm 0x728b7771, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #1, r1, lsl #31 :: rd 0x00000000 rm 0xf13c20f3, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1 :: rd 0x00000000 rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x5f986e68 rm 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x00000000 rm 0xe7aa57b4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x00000000 rm 0x89d2ef86, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x00000000 rm 0xc53aaba9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x00216158 rm 0x216158cb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x003cd6cd rm 0x3cd6cd94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xf87b961e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xc61b323b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xa3268abe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0xbf73f0a5, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0x925ef472, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0x137741f4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #24, r1, asr #2 :: rd 0x00ffffff rm 0x50c28082, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #16, r1, asr #3 :: rd 0x0000ffff rm 0x17962e8f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #12, r1, asr #4 :: rd 0x00000000 rm 0xc57243b7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #8, r1, asr #8 :: rd 0x00000000 rm 0xf20fb90f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #4, r1, asr #12 :: rd 0x00000000 rm 0xbb151055, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #3, r1, asr #16 :: rd 0x00000000 rm 0x957440d2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #2, r1, asr #24 :: rd 0x00000003 rm 0x728b7771, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #1, r1, asr #31 :: rd 0x00000000 rm 0xf13c20f3, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1 :: rd 0x00000000 rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x5f986e68 rm 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x00000000 rm 0xe7aa57b4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #0 :: rd 0x00000000 rm 0x89d2ef86, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x00000000 rm 0xc53aaba9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x00216158 rm 0x216158cb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #31, r1, asr #8 :: rd 0x003cd6cd rm 0x3cd6cd94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xf87b961e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xc61b323b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #0 :: rd 0x00000000 rm 0xa3268abe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0xbf73f0a5, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0x925ef472, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #0, r1, asr #8 :: rd 0x00000000 rm 0x137741f4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #24, r1, asr #2 :: rd 0x00ffffff rm 0x50c28082, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #16, r1, asr #3 :: rd 0x0000ffff rm 0x17962e8f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #12, r1, asr #4 :: rd 0x00000000 rm 0xc57243b7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #8, r1, asr #8 :: rd 0x00000000 rm 0xf20fb90f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #4, r1, asr #12 :: rd 0x00000000 rm 0xbb151055, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #3, r1, asr #16 :: rd 0x00000000 rm 0x957440d2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #2, r1, asr #24 :: rd 0x00000003 rm 0x728b7771, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat r0, #1, r1, asr #31 :: rd 0x00000000 rm 0xf13c20f3, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +------------ USAT16 sat_imm ------------ +usat16 r0, #0, r1 :: rd 0x00000000 rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00000000 rm 0xffcdabcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x001f0000 rm 0x0123feff, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x00ff0000 rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x07ff0000 rm 0x11110000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x11110000 rm 0x1111f111, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x00001111 rm 0x00001111, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat16 r0, #0, r1 :: rd 0x00000000 rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00000000 rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #3, r1 :: rd 0x00070000 rm 0x50c28082, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x001f001f rm 0x17962e8f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x000000ff rm 0xc57243b7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #10, r1 :: rd 0x00000000 rm 0xf20fb90f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x000007ff rm 0xbb151055, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x00001fff rm 0x957440d2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #14, r1 :: rd 0x3fff3fff rm 0x728b7771, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x000020f3 rm 0xf13c20f3, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #0, r1 :: rd 0x00000000 rm 0x86398371, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00010000 rm 0x03d0fb78, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #3, r1 :: rd 0x00000000 rm 0xd0d49b7c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x001f001f rm 0x76354a58, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x000000ff rm 0x9fa45fb7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #10, r1 :: rd 0x03ff0000 rm 0x7572bdec, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x00000000 rm 0xfea59eb6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x00000000 rm 0xf2669090, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #14, r1 :: rd 0x00000000 rm 0xbc1ff573, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x7eb226ac rm 0x7eb226ac, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usat16 r0, #0, r1 :: rd 0x00000000 rm 0x22b65db1, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00010001 rm 0x776c41c7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #3, r1 :: rd 0x00000000 rm 0xe50dd77c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x00000000 rm 0xd6f9a698, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x000000ff rm 0xeda5110c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #10, r1 :: rd 0x03ff03ff rm 0x0be36f70, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x00000000 rm 0xd759eb72, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x00000000 rm 0xd9c4b1f4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #14, r1 :: rd 0x00000000 rm 0xa29eb320, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x00004487 rm 0xcf1e4487, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #0, r1 :: rd 0x00000000 rm 0x2eb68500, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00000000 rm 0xcdb7ed11, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #3, r1 :: rd 0x00070000 rm 0x2eaea305, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x001f001f rm 0x6ebd04d9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x000000ff rm 0xa5ec1aa8, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #10, r1 :: rd 0x03ff03ff rm 0x72f33509, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x00000000 rm 0xa3e6f759, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x00000000 rm 0xfaceab39, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #14, r1 :: rd 0x27380000 rm 0x2738f0ff, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x00000000 rm 0xe79fd570, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #0, r1 :: rd 0x00000000 rm 0x55ea3e4e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #1, r1 :: rd 0x00010000 rm 0x2b62ba5a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #3, r1 :: rd 0x00000000 rm 0x9b41bfb1, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #5, r1 :: rd 0x001f001f rm 0x557c7ba2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #8, r1 :: rd 0x00ff0000 rm 0x2973c051, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #10, r1 :: rd 0x03ff0000 rm 0x6a228b19, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #11, r1 :: rd 0x07ff0000 rm 0x0cdafabe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #13, r1 :: rd 0x1fff1fff rm 0x50865114, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #14, r1 :: rd 0x00000000 rm 0xd83b849b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +usat16 r0, #15, r1 :: rd 0x00005605 rm 0xca5e5605, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +---------------- UADD16 ---------------- +uadd16 r0, r1, r2 :: rd 0x00210002 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x00210002 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x00020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x00020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00000002 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x0000fffe rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x00020000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xfffe0000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x5d604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x915a7c18 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x24416b8a rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xf96272fb rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x0e34f4ba rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0xd14ed502 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xc4a74327 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x164d7875 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xf06d4ac2 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0xa622c6c7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xbc067e14 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xf988807c rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xc318e39d rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x2a863276 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xba34e1af rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x9490883e rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x70c1dfbb rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x77f5007b rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x3ae9b324 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x672fef32 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x67ae5b14 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0xfb099476 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0xc4f739a4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0xae6f11cf rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x541b7a29 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x639faa4d rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x1713cd42 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x4a22ee8f rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x8f73708c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x0ba1c6ef rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x3c80c488 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x316e6d4e rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xed7176b3 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0x3919bcb5 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x1b2b3c05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0xdbc459b0 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xf8623908 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x7b31e04a rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x73302af1 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0xb6cee004 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uadd16 r0, r1, r2 :: rd 0x09dd64ff rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x428be5e7 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x0ac31feb rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xba32d245 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xa8fa218b rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x5c3d09b6 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd16 r0, r1, r2 :: rd 0x4ab260a3 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd16 r0, r1, r2 :: rd 0x01a8204f rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd16 r0, r1, r2 :: rd 0xe7f2fb84 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +---------------- SADD16 ---------------- +sadd16 r0, r1, r2 :: rd 0x00210002 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00210002 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00000002 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x0000fffe rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x00020000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xfffe0000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x5d604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x915a7c18 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x24416b8a rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xf96272fb rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x0e34f4ba rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xd14ed502 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0xc4a74327 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x164d7875 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xf06d4ac2 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xa622c6c7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xbc067e14 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0xf988807c rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xc318e39d rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x2a863276 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xba34e1af rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x9490883e rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x70c1dfbb rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x77f5007b rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x3ae9b324 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x672fef32 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x67ae5b14 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0xfb099476 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0xc4f739a4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0xae6f11cf rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x541b7a29 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x639faa4d rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x1713cd42 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x4a22ee8f rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x8f73708c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x0ba1c6ef rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x3c80c488 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x316e6d4e rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xed7176b3 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x3919bcb5 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x1b2b3c05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0xdbc459b0 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0xf8623908 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd16 r0, r1, r2 :: rd 0x7b31e04a rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x73302af1 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0xb6cee004 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x09dd64ff rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x428be5e7 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd16 r0, r1, r2 :: rd 0x0ac31feb rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0xba32d245 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0xa8fa218b rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd16 r0, r1, r2 :: rd 0x5c3d09b6 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x4ab260a3 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0x01a8204f rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd16 r0, r1, r2 :: rd 0xe7f2fb84 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +---------------- USUB16 ---------------- +usub16 r0, r1, r2 :: rd 0x01000011 rm 0x04000022, rn 0x03000011, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0xfff1fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x000f0004 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x0004000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xfffcfff1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x00000000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x0ddd2e96 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xd15beae8 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x4e6a7bb7 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0xd7b27558 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x7a8a604e rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x18d3c68b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x470fcd95 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x54ff70a0 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x48b6bcc7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x0e1430e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x1e3e5e64 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x14660cb9 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x76fece8e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x74f87b6f rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xf654ff30 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x8ca36d9d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0x01cbdfd1 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x10013180 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x82190050 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x8536192e rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xee978d94 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xbd5742b4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x0cc7dad7 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x67b1e579 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x2457eadf rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x2c2f516a rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x4cd8b123 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xaaa74f6c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x9363dc09 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xd3c2f4bc rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xb2fcbe52 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0xf7170bfd rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x11bd3ef7 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0x6529dc05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x009aef2c rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x36ec7b38 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub16 r0, r1, r2 :: rd 0xc931cb82 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0xae920223 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x654244dc rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x333f9e0b rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x1ea1fc75 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0xf4bf49d3 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x0e56e605 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x64da14c9 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub16 r0, r1, r2 :: rd 0x2ce16b08 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x4b66e5cb rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub16 r0, r1, r2 :: rd 0xf0929e5d rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub16 r0, r1, r2 :: rd 0x081e8b18 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +---------------- SSUB16 ---------------- +ssub16 r0, r1, r2 :: rd 0x01000011 rm 0x04000022, rn 0x03000011, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xfff1fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x000f0004 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x0004000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xfffcfff1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x00000000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x0ddd2e96 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0xd15beae8 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x4e6a7bb7 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xd7b27558 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x7a8a604e rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x18d3c68b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x470fcd95 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x54ff70a0 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x48b6bcc7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x0e1430e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x1e3e5e64 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x14660cb9 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x76fece8e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x74f87b6f rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xf654ff30 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x8ca36d9d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x01cbdfd1 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x10013180 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x82190050 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x8536192e rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xee978d94 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xbd5742b4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x0cc7dad7 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x67b1e579 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x2457eadf rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x2c2f516a rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x4cd8b123 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0xaaa74f6c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x9363dc09 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0xd3c2f4bc rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xb2fcbe52 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xf7170bfd rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x11bd3ef7 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x6529dc05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x009aef2c rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x36ec7b38 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xc931cb82 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0xae920223 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x654244dc rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x333f9e0b rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub16 r0, r1, r2 :: rd 0x1ea1fc75 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0xf4bf49d3 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x0e56e605 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0x64da14c9 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x2ce16b08 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub16 r0, r1, r2 :: rd 0x4b66e5cb rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub16 r0, r1, r2 :: rd 0xf0929e5d rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub16 r0, r1, r2 :: rd 0x081e8b18 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +---------------- UADD8 ----------------- +uadd8 r0, r1, r2 :: rd 0x0021ff02 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +uadd8 r0, r1, r2 :: rd 0x0021ff02 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +uadd8 r0, r1, r2 :: rd 0xff020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xff020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xff000221 rm 0x00000318, rn 0xff00ff09, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +uadd8 r0, r1, r2 :: rd 0xff020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xff090221 rm 0x00020318, rn 0xff07ff09, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +uadd8 r0, r1, r2 :: rd 0xff090221 rm 0xff07ff09, rn 0x00020318, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +uadd8 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +uadd8 r0, r1, r2 :: rd 0x5c604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0x915a7b18 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +uadd8 r0, r1, r2 :: rd 0x23416b8a rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +uadd8 r0, r1, r2 :: rd 0xf86272fb rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0x0d34f4ba rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +uadd8 r0, r1, r2 :: rd 0xd04ed402 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +uadd8 r0, r1, r2 :: rd 0xc3a74227 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +uadd8 r0, r1, r2 :: rd 0x154d7875 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +uadd8 r0, r1, r2 :: rd 0xef6d4ac2 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0xa522c6c7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xbb067d14 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd8 r0, r1, r2 :: rd 0xf888807c rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xc218e39d rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +uadd8 r0, r1, r2 :: rd 0x29863176 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +uadd8 r0, r1, r2 :: rd 0xb934e1af rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0x9490873e rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +uadd8 r0, r1, r2 :: rd 0x70c1dfbb rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +uadd8 r0, r1, r2 :: rd 0x77f5007b rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +uadd8 r0, r1, r2 :: rd 0x3ae9b224 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +uadd8 r0, r1, r2 :: rd 0x662fee32 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +uadd8 r0, r1, r2 :: rd 0x67ae5a14 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +uadd8 r0, r1, r2 :: rd 0xfa099476 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +uadd8 r0, r1, r2 :: rd 0xc4f739a4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +uadd8 r0, r1, r2 :: rd 0xad6f11cf rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +uadd8 r0, r1, r2 :: rd 0x531b7929 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +uadd8 r0, r1, r2 :: rd 0x629fa94d rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +uadd8 r0, r1, r2 :: rd 0x1613cc42 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +uadd8 r0, r1, r2 :: rd 0x4922ed8f rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +uadd8 r0, r1, r2 :: rd 0x8f736f8c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +uadd8 r0, r1, r2 :: rd 0x0ba1c6ef rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +uadd8 r0, r1, r2 :: rd 0x3c80c388 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +uadd8 r0, r1, r2 :: rd 0x316e6c4e rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +uadd8 r0, r1, r2 :: rd 0xed7176b3 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +uadd8 r0, r1, r2 :: rd 0x3819bbb5 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +uadd8 r0, r1, r2 :: rd 0x1b2b3c05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +uadd8 r0, r1, r2 :: rd 0xdbc459b0 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +uadd8 r0, r1, r2 :: rd 0xf7623808 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +uadd8 r0, r1, r2 :: rd 0x7b31df4a rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +uadd8 r0, r1, r2 :: rd 0x72302af1 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0xb6cedf04 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +uadd8 r0, r1, r2 :: rd 0x09dd64ff rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +uadd8 r0, r1, r2 :: rd 0x418be5e7 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0x0ac31feb rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +uadd8 r0, r1, r2 :: rd 0xb932d245 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +uadd8 r0, r1, r2 :: rd 0xa8fa218b rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +uadd8 r0, r1, r2 :: rd 0x5b3d09b6 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +uadd8 r0, r1, r2 :: rd 0x4ab260a3 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +uadd8 r0, r1, r2 :: rd 0x01a81f4f rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +uadd8 r0, r1, r2 :: rd 0xe7f2fb84 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +---------------- USUB8 ----------------- +usub8 r0, r1, r2 :: rd 0x00f1fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +usub8 r0, r1, r2 :: rd 0x000f0104 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub8 r0, r1, r2 :: rd 0x0104000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub8 r0, r1, r2 :: rd 0xfffc00f1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x0100040f rm 0x00000318, rn 0xff00ff09, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +usub8 r0, r1, r2 :: rd 0xfffc00f1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x01fb040f rm 0x00020318, rn 0xff07ff09, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +usub8 r0, r1, r2 :: rd 0xff05fcf1 rm 0xff07ff09, rn 0x00020318, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x0edd2e96 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +usub8 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +usub8 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +usub8 r0, r1, r2 :: rd 0xd15bebe8 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub8 r0, r1, r2 :: rd 0x4e6a7cb7 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0xd7b27658 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +usub8 r0, r1, r2 :: rd 0x7a8a604e rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +usub8 r0, r1, r2 :: rd 0x19d3c68b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0x470fce95 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +usub8 r0, r1, r2 :: rd 0x55ff70a0 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +usub8 r0, r1, r2 :: rd 0x49b6bcc7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0x0f1431e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +usub8 r0, r1, r2 :: rd 0x1e3e5e64 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +usub8 r0, r1, r2 :: rd 0x14660db9 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x77fecf8e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub8 r0, r1, r2 :: rd 0x75f87b6f rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +usub8 r0, r1, r2 :: rd 0xf654ff30 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +usub8 r0, r1, r2 :: rd 0x8ca36d9d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +usub8 r0, r1, r2 :: rd 0x01cbe0d1 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x10013280 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +usub8 r0, r1, r2 :: rd 0x82190050 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +usub8 r0, r1, r2 :: rd 0x85361a2e rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +usub8 r0, r1, r2 :: rd 0xee978e94 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +usub8 r0, r1, r2 :: rd 0xbe5743b4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +usub8 r0, r1, r2 :: rd 0x0dc7dbd7 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +usub8 r0, r1, r2 :: rd 0x67b1e579 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +usub8 r0, r1, r2 :: rd 0x2457ebdf rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub8 r0, r1, r2 :: rd 0x2c2f526a rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +usub8 r0, r1, r2 :: rd 0x4dd8b123 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +usub8 r0, r1, r2 :: rd 0xaba74f6c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +usub8 r0, r1, r2 :: rd 0x9363dc09 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +usub8 r0, r1, r2 :: rd 0xd4c2f5bc rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub8 r0, r1, r2 :: rd 0xb3fcbe52 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0xf7170cfd rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +usub8 r0, r1, r2 :: rd 0x12bd3ff7 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +usub8 r0, r1, r2 :: rd 0x6529dc05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +usub8 r0, r1, r2 :: rd 0x019aef2c rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0x37ec7c38 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +usub8 r0, r1, r2 :: rd 0xc931cb82 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +usub8 r0, r1, r2 :: rd 0xae920223 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +usub8 r0, r1, r2 :: rd 0x664245dc rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +usub8 r0, r1, r2 :: rd 0x333f9e0b rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +usub8 r0, r1, r2 :: rd 0x1fa1fd75 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +usub8 r0, r1, r2 :: rd 0xf4bf49d3 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +usub8 r0, r1, r2 :: rd 0x0f56e605 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0x64da15c9 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +usub8 r0, r1, r2 :: rd 0x2de16b08 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +usub8 r0, r1, r2 :: rd 0x4c66e6cb rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usub8 r0, r1, r2 :: rd 0xf1929f5d rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +usub8 r0, r1, r2 :: rd 0x091e8b18 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +---------------- QADD16 ---------------- +qadd16 r0, r1, r2 :: rd 0x00210002 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x00210002 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x00020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x00020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x5d604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x7fff8000 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x24418000 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xf96272fb rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x0e34f4ba rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xd14ed502 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x7fff4327 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x164d8000 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xf06d4ac2 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x7fffc6c7 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xbc068000 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xf9887fff rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xc318e39d rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x2a868000 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xba34e1af rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x94907fff rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x70c1dfbb rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x8000007b rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x80007fff rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x672f7fff rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x67ae5b14 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xfb099476 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xc4f739a4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xae6f11cf rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x541b7a29 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x80007fff rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x1713cd42 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x4a22ee8f rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x8f738000 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x0ba1c6ef rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x3c807fff rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x316e8000 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xed718000 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x3919bcb5 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x1b2b3c05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xdbc48000 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xf8623908 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x8000e04a rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x73308000 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xb6cee004 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x09dd64ff rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x428be5e7 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x0ac31feb rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xba32d245 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xa8fa8000 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x5c3d09b6 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x4ab260a3 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0x01a8204f rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd16 r0, r1, r2 :: rd 0xe7f2fb84 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +---------------- QSUB16 ---------------- +qsub16 r0, r1, r2 :: rd 0xfff1fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x000f0004 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x0004000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xfffcfff1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x0ddd8000 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xd15beae8 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x80008000 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x7fff7558 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x8000604e rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x18d3c68b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x470fcd95 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x54ff70a0 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x48b67fff rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x0e1430e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x1e3e5e64 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x14660cb9 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x76fece8e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x74f87b6f rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xf654ff30 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x7fff6d9d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x01cbdfd1 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x10013180 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x82190050 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x7fff192e rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x7fff7fff rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xbd5742b4 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x0cc77fff rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x8000e579 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x2457eadf rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x8000516a rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x4cd87fff rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xaaa74f6c rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x7fffdc09 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xd3c2f4bc rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xb2fcbe52 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xf7170bfd rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x11bd3ef7 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x8000dc05 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x009aef2c rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x80008000 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xc931cb82 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xae920223 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x65428000 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x80009e0b rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x1ea1fc75 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xf4bf49d3 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x0e56e605 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x64da14c9 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x2ce16b08 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x4b66e5cb rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0xf0927fff rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub16 r0, r1, r2 :: rd 0x081e7fff rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- QSAX ----------------- +qsax r0, r1, r2 :: rd 0x7fff7fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7ffe7fff rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80008000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80018000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x00610067 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xff9f0067 rm 0x00030003, rn 0x00640064, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x82368000 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xbbc64b44 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff5b21 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x3a7dd4ac rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80004cd5 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fffd04a rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xeb92460a rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x306f5ac3 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x593e8aa4 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x35a52b68 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff707d rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x3e75ae75 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xfad75d15 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x004dcf84 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff8000 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x6476d12d rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80eb12d5 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff18bb rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xac8bab3b rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x800007c6 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80007fff rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x557f2b5d rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff973e rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xc5af41fc rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x421f4727 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x938e7fff rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x8000ea3a rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xe3b57fff rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff4e7e rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x0c7dd262 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x5a0f8d9b rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xa03b7fff rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x1ab7d509 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x3ce9bc85 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x668c1184 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x902a6706 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x38ed9203 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80003adb rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x97cdaee6 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7c7af8d9 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xc0748000 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x80006cd4 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x3bdd0323 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x14b53fe1 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0xee24b213 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7fff8000 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x7538520d rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x0da022dd rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x382467e1 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsax r0, r1, r2 :: rd 0x3fd23338 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- QASX ----------------- +qasx r0, r1, r2 :: rd 0x7fff7fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x7fff7ffe rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x80008000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x80008001 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x00670061 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x0067ff9f rm 0x00030003, rn 0x00640064, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x2e40ba3d rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x5deeaa38 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xb25186dd rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xbb1f81c6 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x1f88a1dd rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x32a47fff rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x8000ef46 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x7fffaeef rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x041ebb66 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x0fc77fff rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xfc6c1311 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x8ba50083 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x1cef7fff rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xd73120d2 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x02b6a6be rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xcab67fff rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x09f97499 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x37c1349d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xcd353511 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xe6477fff rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x6c150536 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x7fff48e5 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xf8417fff rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xbc9f3a5c rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x80007fff rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x283eb99c rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x23b27fff rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x800099e4 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xea335134 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x8000ed96 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x44f5155d rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x70072843 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xc9b38000 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xa79fc62b rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xe44aea28 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xf02ab104 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xa371b6d9 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xf68f8000 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xac95fce6 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xa5488000 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x5b9ce9aa rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x02089636 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x254fdf39 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xeacd29dd rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xda640637 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x8d4bf91a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x13e622b1 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0x7fff2391 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xba1656cb rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qasx r0, r1, r2 :: rd 0xb03e5364 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SASX ----------------- +sasx r0, r1, r2 :: rd 0x7fff7fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x80007ffe rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x80008000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x7fff8001 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x00670061 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x0067ff9f rm 0x00030003, rn 0x00640064, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x2e40ba3d rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x5deeaa38 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0xb25186dd rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xbb1f81c6 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x1f88a1dd rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x32a499c8 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x6046ef46 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xad0baeef rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x041ebb66 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x0fc78ffa rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xfc6c1311 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x8ba50083 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x1cef81cb rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xd73120d2 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x02b6a6be rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0xcab68bf1 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x09f97499 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x37c1349d rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xcd353511 rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0xe647dcde rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x6c150536 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x976548e5 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xf8418acc rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0xbc9f3a5c rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x7917a57f rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x283eb99c rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x23b2aaf2 rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x5f8d99e4 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xea335134 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x2d9ded96 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x44f5155d rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x70072843 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xc9b35697 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xa79fc62b rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xe44aea28 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xf02ab104 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xa371b6d9 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xf68f7965 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xac95fce6 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0xa548343b rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x5b9ce9aa rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x02089636 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0x254fdf39 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sasx r0, r1, r2 :: rd 0xeacd29dd rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0xda640637 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0x8d4bf91a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sasx r0, r1, r2 :: rd 0x13e622b1 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0x88782391 rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sasx r0, r1, r2 :: rd 0xba1656cb rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sasx r0, r1, r2 :: rd 0xb03e5364 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +----------------- SMUAD ----------------- +smuad r0, r1, r2 :: rd 0x80000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x0000fffe rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00010000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00000258 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00000003 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00002fe2 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xdede9cb1 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x02608ef4 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x171c6357 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x143f9593 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xdd110aba rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xc570b2ec rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xe97b9768 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x265801e0 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x0b037b42 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xf240a3db rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xf62fb1c8 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x12780145 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x0691798f rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x03d85a8d rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x1acea470 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xe96a4974 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x1d4ea2dd rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xee624082 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x110f3afe rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x42a15948 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x32ca703d rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x00a6620b rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xc026f485 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xfdf6ad50 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xd7e10590 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xfe23ce76 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x327a6d06 rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xd0bf2ffa rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xe1415fd7 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x13319aee rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xecd5df72 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x27421fcb rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x0d65652d rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x1287343c rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x036d5124 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xeb8f9e2a rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x1c044eb7 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xca87d3fd rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x0c9512d8 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x32ceb0f5 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xda0472f0 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xd7be7034 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x040f97cc rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xfba979f6 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x05f0ddd8 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x2d5e498a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xfb3f197b rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0x085893fc rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xe84c6565 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuad r0, r1, r2 :: rd 0xeda071c4 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMUADX ---------------- +smuadx r0, r1, r2 :: rd 0x80000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0000fffe rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x00010000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x00000258 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x00000003 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x00002fe2 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0c7d0a11 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x026a9a7c rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xe7ded456 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf390e6c9 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xd0a195a8 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xce40b14c rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x1d063948 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x1c93fef0 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0117f53b rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xeb07829d rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xd29fa17a rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0fe7ad54 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf8cd24d4 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x02deb401 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xfa6bb070 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xe7ef0f02 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xe3654f90 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xdac8ea82 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xfffc2b7e rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xb97e8122 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x3048302f rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0be45ef2 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xbf1167ed rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0209cf08 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf7b39cd0 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0c2cff55 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xcd7c2f85 rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x1f64ffb8 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xe2e395bb rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x2cc61db8 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x090e8f6a rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x163fdcc4 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xe7f54466 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x052f76a4 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf6506ba9 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf84db305 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x0bca2d24 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xcb0116b8 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x029b3b24 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xd068271d rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x29954740 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xdac588b7 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xfcd1f36c rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x024b26ca rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x06f653e6 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x21b7614a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xf85e232b rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x11f523ba rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0x04e080e7 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smuadx r0, r1, r2 :: rd 0xfe0168fc rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMLAD ----------------- +smlad r0, r1, r2, r3 :: rd 0x80000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x0000ffff rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x0001001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x00000278 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x00000102 rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x000030e2 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x62e906cb rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xbdfa058d rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x132facec rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x94fd1e4f rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xd3a8b06c rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xfed933b9 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xbfb7c8c7 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x87826758 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xe9176301 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x23a346d9 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xaa26f4cc rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x18a2cb54 rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x7b87d52b rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x090f2dfd rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x516de33a rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xf5860663 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xc743547a rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x8f412c7f rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x5b9a2a7c rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x3e1eae90 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x460a7598 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x9ce3256b rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x2f2d1057 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xdb70b536 rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x47476ea7 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xa98d7719 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x8e608a4b rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xe66cced8 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xe9e21a30 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xd4d7fe4a rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x5607de5f rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x84b77889 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x949f6c87 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x39036479 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x9a767683 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x21c2fb62 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x2473a541 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x18d37e68 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x42a38017 rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x591d6066 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x8a977ce3 rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x7cb70fa8 rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x116c76e8 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x6a0f70ed rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x17c9dd9b rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xa4a1fbcf rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x7beb0ad6 rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x183c60b5 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x00b7b139 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0xc79bbb47 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlad r0, r1, r2, r3 :: rd 0x0f5e5bec rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMLADX ----------------- +smladx r0, r1, r2, r3 :: rd 0x80000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x0000ffff rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x0001001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x00000278 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x00000102 rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x000030e2 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x5639ee73 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0xc5eafef5 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smladx r0, r1, r2, r3 :: rd 0x39ba1d8c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SMLABB, SMLATT, SMLATB, SMLABT ------------ +smlabb r0, r1, r2, r3 :: rd 0x00000000 rm 0x00030000, rn 0x00040000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x00008001 rm 0x00030001, rn 0x00040002 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xc0015ffe rm 0x00038001, rn 0x00047fff rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x3fff8000 rm 0x00037fff, rn 0x00047fff rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x7fff8000 rm 0x0003ffff, rn 0x0004ffff rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x00000003 rm 0x0003fffc, rn 0x0004ffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x54dcfca7 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xb9bef227 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x153b4744 rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x8a0c31fb rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xd4e3d8d4 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x084deed9 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xb44a4e42 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x78bba4e4 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xe370e823 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x248056d7 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xa0bc6afd rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x30935611 rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x8b5b77e1 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x04dde729 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x530d7e10 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xdb5218a5 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xb6e8d187 rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xaf23f094 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x6606bb89 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x5ba1b213 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x45c47d16 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x9e30058b rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x56df2997 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xd2991046 rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x3dc259b1 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x96166d79 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x8636392e rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xe7b29f81 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x08a72bb8 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x9ea9e2ca rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x4075d0f7 rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x8e7e199f rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xb4ec51d4 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x56fd0b6f rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x7f33d7e4 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x0666387a rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xf8578d3b rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x1f9f9fe0 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x63afa7cb rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x5960736c rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x88c74551 rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x79890b42 rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xff6a0b78 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x50b1bfe3 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x1badfbcb rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x93c2e0ef rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x88604d49 rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x458622b3 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x232dd133 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0xc928c69c rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabb r0, r1, r2, r3 :: rd 0x04300a90 rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x00000000 rm 0x00000003, rn 0x00000004 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x00008001 rm 0x00010003, rn 0x00020004 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xc0015ffe rm 0x80010003, rn 0x7fff0004 rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x3fff8000 rm 0x7fff0003, rn 0x7fff0004 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x7fff8000 rm 0xffff0003, rn 0xffff0004 rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x00000003 rm 0xfffc0003, rn 0xffff0004 rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x6da4788c rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xaf1e56a5 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x29fc0b5c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x94c3dbda rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xd37b24ec rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x018e0a6a rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xbc3f81fc rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x8cfe240c rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xdb82cee5 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xf1d93837 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xb7fd93e9 rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x17c68a0c rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x9352e808 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xf3cfe6ad rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x3c1a768e rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xf5d9aae3 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x98a68dcb rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x7a6d2da3 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x76f4dc06 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x42f4f79c rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x40f68d64 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x90a0e1fd rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x3881ee4d rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xd5d1c16e rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x52557a3f rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xc625b6c1 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x8d588b8f rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xe672ad90 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xe692b574 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xb7b56582 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x525ce15f rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x7c355080 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x68f68a3b rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x1b138539 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x9ba81adf rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x2d19cab9 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x10b5b3f8 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x1c472748 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x36598a4f rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x69a8ef0c rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x8b6dc924 rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x82f9ea0f rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x09b31cae rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x5fa7d2d6 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xf19d6ecb rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x92f6d2bf rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0x674d4ded rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xefc97b3f rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xff440fb9 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xec1805b7 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatt r0, r1, r2, r3 :: rd 0xfd3e0a6b rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x00000000 rm 0x00000003, rn 0x00040000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x00008001 rm 0x00010003, rn 0x00040002 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xc0015ffe rm 0x80010003, rn 0x00047fff rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x3fff8000 rm 0x7fff0003, rn 0x00047fff rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x7fff8000 rm 0xffff0003, rn 0x0004ffff rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x00000003 rm 0xfffc0003, rn 0x0004ffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x680d6c2f rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xc35917c7 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x325b20bc rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x9d69f440 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xd4370054 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x091ff500 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xb21ff2d8 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x71f82a30 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xc9653619 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xf63f799a rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xa6679b89 rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x2a05361e rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x9a127c08 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xf5d1a121 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x3839dd9c rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xd3f4bd83 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x9aac6fb7 rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xa4e49fda rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x7a97a5c6 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x5311a34b rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x403f808c rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x9796e87b rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x6ab5581d rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xcefcb21e rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x3a5534e1 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xcf1a27e1 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x8b3fc986 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xe7af6e55 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x004dd8e0 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x5045227f rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x4815eff7 rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x7852cb64 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x6abbe852 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x26e6b11f rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x82b6eeac rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x31fc8463 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xfc5bf193 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x2488f008 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x3b5c0f7b rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x7cc2fe64 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x5be18a33 rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x7f17b6ab rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xff50e330 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x686b554f rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xe327a38a rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x9751921f rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x6bdba395 rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xf59d74c1 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0x3127286b rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xdf1acafc rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlatb r0, r1, r2, r3 :: rd 0xe263202d rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x00000000 rm 0x00030000, rn 0x00000004 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x00008001 rm 0x00030001, rn 0x00020004 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xc0015ffe rm 0x00038001, rn 0x7fff0004 rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x3fff8000 rm 0x00037fff, rn 0x7fff0004 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x7fff8000 rm 0x0003ffff, rn 0xffff0004 rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x00000003 rm 0x0003fffc, rn 0xffff0004 rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x4dc4f0ac rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xad752a6d rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x3366a284 rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x89f2ea60 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xd5270eb0 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xfd71063a rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xcf383f4e rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x84d50b52 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xcfb4740b rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xe68d7e29 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xbe862fdd rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x3354fb41 rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x79abb1e1 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xfdfd2861 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x440550e5 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xdcc2b0a5 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xb1c7335b rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x5b8baa12 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x575ff409 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x55d0c59a rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x3d8c3b46 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x8f1ce2fd rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x8376d405 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xe5b406ca rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x5014d953 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x9f18f9d5 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x86916f29 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xe6e571eb rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x198e7544 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x617b7602 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x43cc4e75 rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x8c12acf1 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xb774acb2 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x6a7e0a27 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x725b4c55 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x081e00c5 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x094073e8 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x33268ce0 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x65e1c8d7 rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x6a26e9b4 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x89a610c0 rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x9c151fa4 rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x09ee866e rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x4e05cb6e rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xfd99a3fb rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x9022f557 rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x94433a01 rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x4b7f7e58 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0x1e7bf393 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xe9c0c3b9 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlabt r0, r1, r2, r3 :: rd 0xe521a181 rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UQSUB8 ----------------------------------- +uqsub8 r0, r1, r2 :: rd 0x0000fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x000f0000 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0xfffc0000 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000000f rm 0x00000318, rn 0xff00ff09, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0xfffc0000 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000000f rm 0x00020318, rn 0xff07ff09, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0xff05fc00 rm 0xff07ff09, rn 0x00020318, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00000000 rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00003299 rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000a51f rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x8c0f275c rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x1e2e0000 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x72a40000 rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x006d0000 rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00003f6a rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x50000000 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00a3007e rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00610c00 rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x03000f00 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x4a001d1e rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00520000 rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x30005000 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00000068 rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x60000061 rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x48180022 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x091d815b rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x002e003c rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00000754 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00004213 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x380007c7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000baee rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00000000 rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x46ce0364 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x45000000 rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x57009001 rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x29620000 rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x11000000 rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x2d004200 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x19273100 rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x008d6cc2 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x3423a500 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00003800 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00107b00 rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x0000b100 rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x71000000 rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x006f0000 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x35000000 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x37005289 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x99659500 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00943b00 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x008d1a55 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x280000f7 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x28470000 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x6c000000 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00341400 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x42641600 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00000000 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqsub8 r0, r1, r2 :: rd 0x00210084 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UQADD8 ----------------------------------- +uqadd8 r0, r1, r2 :: rd 0x0021ffff rm 0x0009ffff, rn 0x001800aa, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x0021ffff rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffff0021 rm 0x00aa0018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffff0021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xff00ff21 rm 0x0000aa18, rn 0xff00ff09, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffff0021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffffff rm 0xff9fefcc, rn 0xff9ffedd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xff09ff21 rm 0xff07ff09, rn 0xaa020318, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xff0fffff rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xbeffb8ff rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x5effa5ff rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x90ff299c rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x3432cdc1 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xeeff22ff rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffff78ff rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffcfd4 rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xfffffbc2 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xa0ffffff rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffffff rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x77ff13e4 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffff98 rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xfff0ffff rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xd2ff8aa8 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x10bbffff rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffff9b rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x78504af8 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffffcd rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xc0ffffff rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x71ffffff rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffd617 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x9ea63dc7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffecff rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xc3ffff97 rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xfff4d378 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xcdc8fdff rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xc90fe85f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffe0ffff rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xefffffdf rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x4fff50ff rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xd5ff95ff rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffa5caff rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x7a49ffff rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xe4fffff3 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffbae90c rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x6afeb51c rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x77ff9dd8 rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffcbffff rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xfffff5ff rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x91ff78ff rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xfffbcdfd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x8aff7dff rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffadff8b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffffff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xff75ffff rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffd290ff rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xf9ffffdd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0x7c8a906b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xddcb39c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uqadd8 r0, r1, r2 :: rd 0xffffdbe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SEL -------------------------------------- +sel r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x00010001 rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xffffffff rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x00030003 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xffff0001 rm 0xfffcffff, rn 0xffff0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x00030003 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xce0ce1ed rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xaae3433f rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x32fa0095 rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x02c90120 rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x0b02c58a rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x3e2e1bd7 rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xdd914bf7 rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xf2b64835 rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x5ef1f1a8 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x815bb75b rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xef9e9fd9 rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x3ada0280 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x90f9833d rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x9a4ff1b8 rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x51f31d95 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x0872f25a rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x91edc21d rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x181c436b rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xe7b87e39 rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x82aceb7a rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x6cc9bfa8 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x81874a02 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x33921b00 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xd7ce1909 rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x85fbf196 rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x6e13680a rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x44858efc rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x390d2c2f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x953ff6ec rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x6ffed89f rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x11bd07d1 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x5e6e32dd rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xec0c2f30 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x231348c0 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x95bca5d8 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xc1553709 rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x69ec0212 rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x03fa9bb5 rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xf52e9fbf rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x7fcbe5a9 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x2dd01366 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x5e4b1cbf rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x464a21cc rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xe8108f1b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xcd90d604 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x8217b7df rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x7acb4de3 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x868e7c7d rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x1d133d3d rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0x8f6d3264 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sel r0, r1, r2 :: rd 0xde99ac2f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ QSUB8------------------------------------- +qsub8 r0, r1, r2 :: rd 0x00f1fffc rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x000f0104 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x0104000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xfffc00f1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7fff7fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7ffe81fe rm 0x7fff00ff, rn 0x80017f01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80008000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x81018101 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xeaf77a6e rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x6a7f3299 rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xfa0da51f rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x8c0f275c rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x1e2e437f rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80a4ec7f rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xf86de2cd rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x2b7f8080 rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80a21972 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7fa37f80 rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xd7610cdd rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x03e00f7f rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x4a521d1e rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7f80e4ee rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x806e507e rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x00d7ae80 rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x60f37b61 rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x4818c480 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x091d8180 rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7f2eeb80 rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x997f0754 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7ff98013 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x387f07c7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x65fcbaee rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7f48666b rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80ce0364 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x807f7f8c rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80f59001 rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x29802bbf rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80677f7f rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x2dcf42e6 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x1980317f rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xf88d80c2 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x3423a57f rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7fe13843 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7f1080fa rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x9826b1f8 rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x71c3676e rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x9480f2d3 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x80fa2bfe rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x37d35289 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x9980957f rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0xfe943bdd rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x418d1a55 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x28f1b6f7 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x2847dd65 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x803cf6e0 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7f3480e3 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x426416f1 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x7ff1d5fc rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qsub8 r0, r1, r2 :: rd 0x43217f84 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ QADD8------------------------------------- +qadd8 r0, r1, r2 :: rd 0x0021ff02 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x0021ff02 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xff020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xff020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7fff7fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xff007f00 rm 0x7fff00ff, rn 0x80017f01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x80008000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x80ff80ff rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x860f3c48 rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xbe457f17 rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x5e01a580 rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x90a1297f rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x3432cdc1 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xee00224e rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xb28f78bb rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x0f1ccfd4 rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x0c84fbc2 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xa0590a34 rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xb59d808f rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x779413e4 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x8044807f rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x19f0c680 rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xd2547fa8 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x107f921c rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x82cdff7f rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x78504af8 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xd78d7dcd rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xc086c130 rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x712085a4 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x0080d617 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7fa63dc7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x1398ec00 rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xc33e4897 rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x22f47f78 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xcdc8fd84 rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xc90fe85f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x80e01797 rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xef6354df rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x4f805088 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7f037f3a rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xd0a5ca22 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7a493506 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xe48082f3 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x187fe90c rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x6afeb51c rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x77b79dd8 rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x80cb8080 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x3390f580 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7f807855 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x55fbcdfd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7f287d80 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x11ad807f rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xc28080ff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x80758023 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x60d27fa6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xf9800c7f rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0x7c7f7f6b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xdd7f397f rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +qadd8 r0, r1, r2 :: rd 0xff80dbe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SHADD8 ----------------------------------- +shadd8 r0, r1, r2 :: rd 0x0010ff01 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x0010ff01 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xff010010 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xff010010 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3fff3fff rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xff003f00 rm 0x7fff00ff, rn 0x80017f01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xc000c000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xbfffbfff rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xc3071e24 rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xdf225c0b rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x2f00d2a4 rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xc8d0144e rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x1a19e6e0 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xf7001127 rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xd9c73cdd rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x070ee7ea rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x06c2fde1 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xd02c051a rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xdacea5c7 rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3bca09f2 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xb522914c rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x0cf8e3af rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe92a45d4 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x085dc90e rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xc1e6ff4d rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3c2825fc rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xebc63ee6 rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe0c3e018 rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3810c2d2 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x0083eb0b rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x4fd31ee3 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x09ccf600 rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe11f24cb rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x11fa693c rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe6e4fec2 rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe407f42f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xa9f00bcb rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xf7312aef rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x27a428c4 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x6a014a1d rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe8d2e511 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3d241a03 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xf2acc1f9 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x0c5df406 rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x35ffda0e rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3bdbceec rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xbfe598a8 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x19c8faa8 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x48b93c2a rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x2afde6fe rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x45143eba rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x08d69c45 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xe188b1ff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x963aa511 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x30e948d3 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xfca8066e rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0x3e454835 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xee651c62 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +shadd8 r0, r1, r2 :: rd 0xffa9edf1 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UHADD8 ----------------------------------- +uhadd8 r0, r1, r2 :: rd 0x00107f81 rm 0x0009ffff, rn 0x00180003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x00107f81 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x7f810010 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x7f810010 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3f7f3f7f rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x7f803f80 rm 0x7fff00ff, rn 0x80017f01, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x40004000 rm 0x80008000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xbf7fbf7f rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xc3079ea4 rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x5fa25c8b rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x2f8052a4 rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x48d0144e rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x1a196660 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x778011a7 rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xd9c73cdd rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x878e676a rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x86c27d61 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x50ac859a rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xdacea5c7 rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3bca0972 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xb5a2914c rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x8c78e3af rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x69aa4554 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x085dc98e rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xc1e67f4d rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3c28257c rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xebc6be66 rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x60c3e098 rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3890c2d2 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x80836b0b rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x4f531e63 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x89cc7680 rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x619fa44b rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x917a693c rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x66647ec2 rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x6407742f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xa9708bcb rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x77b1aa6f rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x27a428c4 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x6a814a9d rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xe8526591 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3d249a83 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x72acc179 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x8c5d7406 rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x357f5a0e rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3bdb4e6c rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xbf6598a8 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x99c87aa8 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x48b93caa rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xaa7d667e rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x45943eba rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x88569c45 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xe188b17f rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x963aa591 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0xb06948d3 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x7ca8866e rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x3e454835 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x6e651c62 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uhadd8 r0, r1, r2 :: rd 0x7fa96d71 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SSAT ----------------- +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x00000000 rm 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0x80008000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0x80008000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0xffff0009, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0xffff0009, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xfffffc00 rm 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xffff8004 rm 0xffff0009, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1 :: rd 0x00000000 rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #1, r1 :: rd 0xffffffff rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #1, r1 :: rd 0xffffffff rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #1, r1 :: rd 0xffffffff rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0xa231d5e6 rm 0xa231d5e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0x10e1968a rm 0x10e1968a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0x0e089270 rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0x9e8e0185 rm 0x9e8e0185, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0x3096f12e rm 0x3096f12e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #32, r1 :: rd 0xffc134df rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x256bfdd6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0xffffffff rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0xee2fa46e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x97a7da20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0xa231d5e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x10e1968a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0xffffffff rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0x00000000 rm 0x3096f12e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #1, r1, LSL #31 :: rd 0xffffffff rm 0xffc134df, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000003 rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000003 rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0xfffffffc rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000000 rm 0x97a7da20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000003 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0xfffffffc rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000000 rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0x00000003 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0xfffffffc rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #3, r1, LSL #28 :: rd 0xfffffffc rm 0xffc134df, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0xffffffe0 rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x0000001f rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x0000001f rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x0000001f rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0xffffffe0 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0xffffffe0 rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x0000001f rm 0x0e089270, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0xffffffe0 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0x0000001f rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #6, r1, LSL #24 :: rd 0xffffffe0 rm 0xffc134df, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0x0000007f rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0x0000007f rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0x0000007f rm 0x0e089270, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xffffff80 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0x0000007f rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #8, r1, ASR #18 :: rd 0xfffffff0 rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0x000007ff rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0x000007ff rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0x000007ff rm 0x0e089270, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xfffff800 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0x000007ff rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #12, r1, ASR #16 :: rd 0xffffffc1 rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0x00007fff rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0x00007fff rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0x00007fff rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0x0e089270, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0xffff8000 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0x00007fff rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #16, r1, LSL #12 :: rd 0x00007fff rm 0xffc134df, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0x0001ffff rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0x0001ffff rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0x0001ffff rm 0xee2fa46e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0x0001ffff rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0x10e1968a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0x0001ffff rm 0x0e089270, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #18, r1, LSL #8 :: rd 0xfffe0000 rm 0xffc134df, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0x007fffff rm 0x256bfdd6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xff800000 rm 0xc02a0c05, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xffb8be91 rm 0xee2fa46e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xff800000 rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xff800000 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0x0043865a rm 0x10e1968a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0x00382249 rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xff800000 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0x007fffff rm 0x3096f12e, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #24, r1, ASR #6 :: rd 0xffff04d3 rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0x04ad7fba rm 0x256bfdd6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xf8054180 rm 0xc02a0c05, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xfdc5f48d rm 0xee2fa46e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xf8000000 rm 0x97a7da20, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xf8000000 rm 0xa231d5e6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0x021c32d1 rm 0x10e1968a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0x01c1124e rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xf8000000 rm 0x9e8e0185, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0x0612de25 rm 0x3096f12e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #28, r1, ASR #3 :: rd 0xfff8269b rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0x12b5feeb rm 0x256bfdd6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xe0150602 rm 0xc02a0c05, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xf717d237 rm 0xee2fa46e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xcbd3ed10 rm 0x97a7da20, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xd118eaf3 rm 0xa231d5e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0x0870cb45 rm 0x10e1968a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0x07044938 rm 0x0e089270, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xcf4700c2 rm 0x9e8e0185, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0x184b7897 rm 0x3096f12e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssat r0, #31, r1, ASR #1 :: rd 0xffe09a6f rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +---------------- SADD8 ----------------- +sadd8 r0, r1, r2 :: rd 0x00dffffc rm 0x00f7ffff, rn 0x00e800fd, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0x00dffffc rm 0x00e800fd, rn 0x00f7ffff, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0xfffc00df rm 0x00fd00e8, rn 0xffff00f7, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +sadd8 r0, r1, r2 :: rd 0xfffc000f rm 0xffff00f7, rn 0x00fd0018, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd8 r0, r1, r2 :: rd 0xff00fc0f rm 0x0000fd18, rn 0xff00fff7, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +sadd8 r0, r1, r2 :: rd 0xfffc00df rm 0xffff00f7, rn 0x00fd00e8, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +sadd8 r0, r1, r2 :: rd 0xff05fc0f rm 0x00fefd18, rn 0xff07fff7, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +sadd8 r0, r1, r2 :: rd 0xff05fcdf rm 0xff07fff7, rn 0x00fefde8, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +sadd8 r0, r1, r2 :: rd 0x860f3c48 rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +sadd8 r0, r1, r2 :: rd 0xbe45b817 rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +sadd8 r0, r1, r2 :: rd 0x5e01a549 rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd8 r0, r1, r2 :: rd 0x90a1299c rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd8 r0, r1, r2 :: rd 0x3432cdc1 rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd8 r0, r1, r2 :: rd 0xee00224e rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +sadd8 r0, r1, r2 :: rd 0xb28f78bb rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +sadd8 r0, r1, r2 :: rd 0x0f1ccfd4 rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd8 r0, r1, r2 :: rd 0x0c84fbc2 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0xa0590a34 rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +sadd8 r0, r1, r2 :: rd 0xb59d4a8f rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd8 r0, r1, r2 :: rd 0x779413e4 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +sadd8 r0, r1, r2 :: rd 0x6a442398 rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +sadd8 r0, r1, r2 :: rd 0x19f0c65e rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0xd2548aa8 rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +sadd8 r0, r1, r2 :: rd 0x10bb921c rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +sadd8 r0, r1, r2 :: rd 0x82cdff9b rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +sadd8 r0, r1, r2 :: rd 0x78504af8 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +sadd8 r0, r1, r2 :: rd 0xd78d7dcd rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +sadd8 r0, r1, r2 :: rd 0xc086c130 rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +sadd8 r0, r1, r2 :: rd 0x712085a4 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +sadd8 r0, r1, r2 :: rd 0x0007d617 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +sadd8 r0, r1, r2 :: rd 0x9ea63dc7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +sadd8 r0, r1, r2 :: rd 0x1398ec00 rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +sadd8 r0, r1, r2 :: rd 0xc33e4897 rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +sadd8 r0, r1, r2 :: rd 0x22f4d378 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +sadd8 r0, r1, r2 :: rd 0xcdc8fd84 rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd8 r0, r1, r2 :: rd 0xc90fe85f rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +sadd8 r0, r1, r2 :: rd 0x53e01797 rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +sadd8 r0, r1, r2 :: rd 0xef6354df rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +sadd8 r0, r1, r2 :: rd 0x4f495088 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +sadd8 r0, r1, r2 :: rd 0xd503953a rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd8 r0, r1, r2 :: rd 0xd0a5ca22 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +sadd8 r0, r1, r2 :: rd 0x7a493506 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd8 r0, r1, r2 :: rd 0xe45982f3 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd8 r0, r1, r2 :: rd 0x18bae90c rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +sadd8 r0, r1, r2 :: rd 0x6afeb51c rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +sadd8 r0, r1, r2 :: rd 0x77b79dd8 rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0x7ecb3051 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd8 r0, r1, r2 :: rd 0x3390f550 rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0x91737855 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +sadd8 r0, r1, r2 :: rd 0x55fbcdfd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +sadd8 r0, r1, r2 :: rd 0x8a287d75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +sadd8 r0, r1, r2 :: rd 0x11ad388b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +sadd8 r0, r1, r2 :: rd 0xc21162ff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sadd8 r0, r1, r2 :: rd 0x2c754b23 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +sadd8 r0, r1, r2 :: rd 0x60d290a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +sadd8 r0, r1, r2 :: rd 0xf9500cdd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +sadd8 r0, r1, r2 :: rd 0x7c8a906b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +sadd8 r0, r1, r2 :: rd 0xddcb39c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +sadd8 r0, r1, r2 :: rd 0xff53dbe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +---------------- SSUB8 ----------------- +ssub8 r0, r1, r2 :: rd 0x000fff02 rm 0x00f7ffff, rn 0x00e800fd, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +ssub8 r0, r1, r2 :: rd 0x00f101fe rm 0x00e800fd, rn 0x00f7ffff, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0x01fe00f1 rm 0x00fd00e8, rn 0xffff00f7, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0xff0200df rm 0xffff00f7, rn 0x00fd0018, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +ssub8 r0, r1, r2 :: rd 0x0100fe21 rm 0x0000fd18, rn 0xff00fff7, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +ssub8 r0, r1, r2 :: rd 0xff02000f rm 0xffff00f7, rn 0x00fd00e8, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0x01f7fe21 rm 0x00fefd18, rn 0xff07fff7, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +ssub8 r0, r1, r2 :: rd 0xff09020f rm 0xff07fff7, rn 0x00fefde8, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0xeaf77a6e rm 0xb8035b5b, rn 0xce0ce1ed, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub8 r0, r1, r2 :: rd 0x6a7f3299 rm 0x146275d8, rn 0xaae3433f, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +ssub8 r0, r1, r2 :: rd 0xfa0da51f rm 0x2c07a5b4, rn 0x32fa0095, carryin 0, cpsr 0x00050000 ge[3:0]=0101 +ssub8 r0, r1, r2 :: rd 0x8c0f275c rm 0x8ed8287c, rn 0x02c90120, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0x1e2e43ad rm 0x29300837, rn 0x0b02c58a, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub8 r0, r1, r2 :: rd 0x72a4eca0 rm 0xb0d20777, rn 0x3e2e1bd7, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +ssub8 r0, r1, r2 :: rd 0xf86de2cd rm 0xd5fe2dc4, rn 0xdd914bf7, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +ssub8 r0, r1, r2 :: rd 0x2bb03f6a rm 0x1d66879f, rn 0xf2b64835, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0x50a21972 rm 0xae930a1a, rn 0x5ef1f1a8, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub8 r0, r1, r2 :: rd 0x9ea39c7e rm 0x1ffe53d9, rn 0x815bb75b, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0xd7610cdd rm 0xc6ffabb6, rn 0xef9e9fd9, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +ssub8 r0, r1, r2 :: rd 0x03e00fe4 rm 0x3dba1164, rn 0x3ada0280, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0x4a521d1e rm 0xda4ba05b, rn 0x90f9833d, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub8 r0, r1, r2 :: rd 0xe552e4ee rm 0x7fa1d5a6, rn 0x9a4ff1b8, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +ssub8 r0, r1, r2 :: rd 0x306e507e rm 0x81616d13, rn 0x51f31d95, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0x00d7ae68 rm 0x0849a0c2, rn 0x0872f25a, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +ssub8 r0, r1, r2 :: rd 0x60f37b61 rm 0xf1e03d7e, rn 0x91edc21d, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0x4818c422 rm 0x6034078d, rn 0x181c436b, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0x091d815b rm 0xf0d5ff94, rn 0xe7b87e39, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0xbc2eeb3c rm 0x3edad6b6, rn 0x82aceb7a, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0x998e0754 rm 0x0557c6fc, rn 0x6cc9bfa8, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0xfef94213 rm 0x7f808c15, rn 0x81874a02, carryin 0, cpsr 0x00090000 ge[3:0]=1001 +ssub8 r0, r1, r2 :: rd 0x388207c7 rm 0x6b1422c7, rn 0x33921b00, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +ssub8 r0, r1, r2 :: rd 0x65fcbaee rm 0x3ccad3f7, rn 0xd7ce1909, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +ssub8 r0, r1, r2 :: rd 0xb948666b rm 0x3e435701, rn 0x85fbf196, carryin 0, cpsr 0x000f0000 ge[3:0]=1111 +ssub8 r0, r1, r2 :: rd 0x46ce0364 rm 0xb4e16b6e, rn 0x6e13680a, carryin 0, cpsr 0x00030000 ge[3:0]=0011 +ssub8 r0, r1, r2 :: rd 0x45bee18c rm 0x89436f88, rn 0x44858efc, carryin 0, cpsr 0x00060000 ge[3:0]=0110 +ssub8 r0, r1, r2 :: rd 0x57f59001 rm 0x9002bc30, rn 0x390d2c2f, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +ssub8 r0, r1, r2 :: rd 0x29622bbf rm 0xbea121ab, rn 0x953ff6ec, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0x1167a4a1 rm 0x80657c40, rn 0x6ffed89f, carryin 0, cpsr 0x00070000 ge[3:0]=0111 +ssub8 r0, r1, r2 :: rd 0x2dcf42e6 rm 0x3e8c49b7, rn 0x11bd07d1, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0x19273180 rm 0x7795635d, rn 0x5e6e32dd, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0xf88d6cc2 rm 0xe4999bf2, rn 0xec0c2f30, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub8 r0, r1, r2 :: rd 0x3423a586 rm 0x5736ed46, rn 0x231348c0, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +ssub8 r0, r1, r2 :: rd 0xbae13843 rm 0x4f9ddd1b, rn 0x95bca5d8, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0x96107bfa rm 0x5765b203, rn 0xc1553709, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0x9826b1f8 rm 0x0112b30a, rn 0x69ec0212, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +ssub8 r0, r1, r2 :: rd 0x71c3676e rm 0x74bd0223, rn 0x03fa9bb5, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0x946ff2d3 rm 0x899d9192, rn 0xf52e9fbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +ssub8 r0, r1, r2 :: rd 0x35fa2bfe rm 0xb4c510a7, rn 0x7fcbe5a9, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +ssub8 r0, r1, r2 :: rd 0x37d35289 rm 0x64a365ef, rn 0x2dd01366, carryin 0, cpsr 0x000a0000 ge[3:0]=1010 +ssub8 r0, r1, r2 :: rd 0x9965957f rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00010000 ge[3:0]=0001 +ssub8 r0, r1, r2 :: rd 0xfe943bdd rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00020000 ge[3:0]=0010 +ssub8 r0, r1, r2 :: rd 0x418d1a55 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x000b0000 ge[3:0]=1011 +ssub8 r0, r1, r2 :: rd 0x28f1b6f7 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +ssub8 r0, r1, r2 :: rd 0x2847dd65 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x000d0000 ge[3:0]=1101 +ssub8 r0, r1, r2 :: rd 0x6c3cf6e0 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00040000 ge[3:0]=0100 +ssub8 r0, r1, r2 :: rd 0xed3414e3 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x000c0000 ge[3:0]=1100 +ssub8 r0, r1, r2 :: rd 0x426416f1 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +ssub8 r0, r1, r2 :: rd 0xbff1d5fc rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00080000 ge[3:0]=1000 +ssub8 r0, r1, r2 :: rd 0x43218384 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x000e0000 ge[3:0]=1110 +------------ SXTAB ------------ +sxtab r0, r1, r2, ROR #24 :: rd 0x3141594e rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x3141593f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x3141594f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x31415940 rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x3141594e rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x3141593f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x3141594f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x314158c0 rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0xf7b0b19c rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x44de5cef rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x299da958 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0xf5818cc8 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0xaa5e93c6 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0xe607443d rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x73c28fe6 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x5f77534b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x4e5e06ef rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #24 :: rd 0x21ba2f91 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0xf7b0b189 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x44de5cf3 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x299da980 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0xf5818c8b rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0xaa5e945b rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0xe607438e rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x73c28fee rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x5f775341 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x4e5e07cd rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #16 :: rd 0x21ba2f4c rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0xf7b0b15a rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x44de5cca rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x299da8ff rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0xf5818cd1 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0xaa5e93fb rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0xe6074410 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x73c290dc rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x5f77536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x4e5e0792 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #8 :: rd 0x21ba2f5f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0xf7b0b0fd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x44de5c75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x299da98b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0xf5818cff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0xaa5e9423 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0xe60743a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x73c290dd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x5f77536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x4e5e07c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtab r0, r1, r2, ROR #0 :: rd 0x21ba2fe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UXTAB ------------ +uxtab r0, r1, r2, ROR #24 :: rd 0x3141594e rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x3141593f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x3141594f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x31415940 rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x3141594e rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x3141593f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x3141594f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x314159c0 rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0xf7b0b19c rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x44de5cef rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x299daa58 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0xf5818dc8 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0xaa5e94c6 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0xe607443d rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x73c290e6 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x5f77534b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x4e5e07ef rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #24 :: rd 0x21ba3091 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0xf7b0b189 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x44de5cf3 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x299da980 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0xf5818d8b rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0xaa5e945b rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0xe607448e rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x73c290ee rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x5f775341 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x4e5e07cd rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #16 :: rd 0x21ba304c rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0xf7b0b15a rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x44de5cca rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x299da9ff rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0xf5818dd1 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0xaa5e94fb rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0xe6074410 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x73c290dc rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x5f77536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x4e5e0792 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #8 :: rd 0x21ba305f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0xf7b0b1fd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x44de5d75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x299da98b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0xf5818cff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0xaa5e9523 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0xe60744a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x73c290dd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x5f77536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x4e5e07c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab r0, r1, r2, ROR #0 :: rd 0x21ba2fe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------- UXTAB16 ----------- +uxtab16 r0, r1, r2, ROR #24 :: rd 0x3169594e rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x315a593f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x3168594f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x31595940 rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x3169594e rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x31da593f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x3168594f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x315959c0 rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x31590098 rm 0x3141ffff, rn 0x27182899, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0xf7ccb19c rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x44ff5cef rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x2a2caa58 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0xf6578dc8 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0xab1594c6 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0xe654443d rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x743e90e6 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x5fb4534b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x4e9007ef rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #24 :: rd 0x22663091 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0xf86fb189 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x45aa5cf3 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x29b8a980 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0xf5858d8b rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0xab3d945b rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0xe6ea448e rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x743f90ee rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x5fb45341 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x4ec207cd rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #16 :: rd 0x21e9304c rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0xf80eb15a rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x45245cca rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x2a85a9ff rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0xf64e8dd1 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0xaae094fb rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0xe6814410 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x744890dc rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x5f94536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x4eed0792 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #8 :: rd 0x2298305f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0xf7fbb1fd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x45285d75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x29ada98b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0xf6118cff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0xaa759523 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0xe6d244a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x745090dd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x5f8a536b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x4ecb07c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtab16 r0, r1, r2, ROR #0 :: rd 0x22532fe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SXTAH ------------ +sxtah r0, r1, r2, ROR #24 :: rd 0x3141724e rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x3141803f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x3141714f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x31418140 rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x3141724e rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x3141803f rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x314171bf rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x3140f140 rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0xf7b0709c rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x44de28ef rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x299dc558 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0xf58191c8 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0xaa5e73c6 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0xe607273d rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x73c30de6 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x5f77904b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x4e5e6bef rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #24 :: rd 0x21ba5f91 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0xf7b10f89 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x44dea2f3 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x299d9180 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0xf5815a8b rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0xaa5e165b rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0xe607be8e rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x73c216ee rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x5f777041 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x4e5d96cd rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #16 :: rd 0x21ba0e4c rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0xf7b0fc5a rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x44dea6ca rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x299db9ff rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0xf5811dd1 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0xaa5eabfb rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0xe6070f10 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x73c21edc rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x5f77666b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x4e5e7492 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #8 :: rd 0x21b9c95f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0xf7b0cdfd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x44de7e75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x299d388b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0xf58162ff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0xaa5e4c23 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0xe60791a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x73c30cdd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x5f77906b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x4e5e39c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +sxtah r0, r1, r2, ROR #0 :: rd 0x21b9dbe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ UXTAH ------------ +uxtah r0, r1, r2, ROR #24 :: rd 0x3141724e rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x3141803f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x3141714f rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x31418140 rm 0x31415927, rn 0x27182819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x3141724e rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x3141803f rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x314171bf rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x3141f140 rm 0x31415927, rn 0x27189819, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0xf7b1709c rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x44df28ef rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x299dc558 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0xf58191c8 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0xaa5f73c6 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0xe608273d rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x73c30de6 rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x5f77904b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x4e5e6bef rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #24 :: rd 0x21ba5f91 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0xf7b10f89 rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x44dea2f3 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x299e9180 rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0xf5825a8b rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0xaa5f165b rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0xe607be8e rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x73c316ee rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x5f777041 rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x4e5e96cd rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #16 :: rd 0x21bb0e4c rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0xf7b0fc5a rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x44dea6ca rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x299db9ff rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0xf5821dd1 rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0xaa5eabfb rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0xe6080f10 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x73c31edc rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x5f77666b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x4e5e7492 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #8 :: rd 0x21bac95f rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0xf7b0cdfd rm 0xf7b0b13e, rn 0x5e4b1cbf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x44de7e75 rm 0x44de5ca9, rn 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x299e388b rm 0x299da970, rn 0xe8108f1b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0xf58262ff rm 0xf5818cfb, rn 0xcd90d604, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0xaa5f4c23 rm 0xaa5e9444, rn 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0xe60791a6 rm 0xe60743c3, rn 0x7acb4de3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x73c30cdd rm 0x73c29060, rn 0x868e7c7d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x5f77906b rm 0x5f77532e, rn 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x4e5e39c4 rm 0x4e5e0760, rn 0x8f6d3264, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +uxtah r0, r1, r2, ROR #0 :: rd 0x21badbe2 rm 0x21ba2fb3, rn 0xde99ac2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SMLAWB ------------ +smlawb r0, r1, r2, r3 :: rd 0x00000000 rm 0x00030000, rn 0x00040000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x00008005 rm 0x00030001, rn 0x00040002 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x00021ffb rm 0x00038001, rn 0x00047fff rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x00023ffb rm 0x00037fff, rn 0x00047fff rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x7fff7ffb rm 0x0003ffff, rn 0x0004ffff rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xfffffffb rm 0x0003fffc, rn 0x0004ffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x680d6173 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xc35926a2 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x325b09ef rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x9d69f479 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xd4370081 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x091ffa82 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xb21ff650 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x71f824b4 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xc96543ad rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xf63f3303 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xa667bfed rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x2a05279f rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x9a12643c rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xf5d16216 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x3839f2ef rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xd3f4bd2f rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x9aac2190 rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xa4e48a53 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x7a97c3d4 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x53119e74 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x403f77f9 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x9796f4bd rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x6ab56efa rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xcefcb7bc rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x3a5529d2 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xcf1a0b48 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x8b3fb131 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xe7af6e4f rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x004dc7a9 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x5044cbb6 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x4815f3a1 rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x7852d3e6 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x6abc13fa rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x26e68b3e rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x82b6ed7a rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x31fcc2c3 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xfc5c0550 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x2488ec94 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x3b5bc19c rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x7cc2edd8 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x5be1895c rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x7f17c10f rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xff50eae9 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x686b5fb6 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xe32758d1 rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x9751380e rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x6bdbb832 rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xf59d9d33 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0x312729de rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xdf1b15ef rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawb r0, r1, r2, r3 :: rd 0xe263324d rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +------------ SMLAWT ------------ +smlawt r0, r1, r2, r3 :: rd 0x0000000c rm 0x00030000, rn 0x00040000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x0000800b rm 0x00030001, rn 0x00040002 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x0000600d rm 0x00038001, rn 0x00047fff rs 0x00005fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x0000800c rm 0x00037fff, rn 0x00047fff rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x7fff800e rm 0x0003ffff, rn 0x0004ffff rs 0x7fff7fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x0000000e rm 0x0003fffc, rn 0x0004ffff rs 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x6da466b8 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xaf1e5936 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x29fc12ba rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x94c3dbf9 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xd37b255c rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x018e2608 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xbc3fa062 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x8cfe2aa9 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xdb82c8bd rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xf1d94974 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xb7fd69f7 rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x17c64d1c rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x9352be8d rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xf3cfbc0a rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x3c1a7cd9 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xf5d9abff rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x98a6483f rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x7a6d6e7f rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x76f50a2d rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x42f4ecf4 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x40f692b1 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x90a0df2c rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x388197e7 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xd5d1da27 rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x52558183 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xc625a32b rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x8d586ad3 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xe672acbc rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xe6924c56 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xb7b5c4f6 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x525ce860 rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x7c355696 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x68f6b86c rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x1b1346ab rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x9ba80cd4 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x2d19ffa5 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x10b5d89e rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x1c47375b rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x36592e87 rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x69a8ef46 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x8b6dc92c rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x82f9bb1d rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x09b32eeb rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x5fa7da91 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xf19d5ef3 rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x92f68b28 rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0x674d6e6d rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xefc9a9ab rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xff440c7a rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xec180db5 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlawt r0, r1, r2, r3 :: rd 0xfd3dfd7c rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMLSD ----------------- +smlsd r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x00000001 rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x0000001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x00000020 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x000000fa rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x00003118 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x46d0f283 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xb583dec1 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x1746e19c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x7f1b45a7 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xd61f013c rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x11c2a9f9 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xa8dcd3bd rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x69f4e270 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xddca6d45 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x255d66d5 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x9751e12e rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x4883e0ce rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x9b2f1a97 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x00aca055 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x54ad18e6 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xc11e2ae7 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xa68e4e94 rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xcf06b4a9 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x70734c96 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x7924b596 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x457e8494 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x9f7ce5ab rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x7e9142d7 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xc9c16b56 rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x343d44bb rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x829f63d9 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x7e0be811 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xe8f8702a rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x276c3d40 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x687bc74a rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x2ae3c38f rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x9844bab5 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xd5393721 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x74f6b265 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x63f13945 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xeb097592 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xcc3b7535 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x266bc158 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x84bbcf7f rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x59a38672 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x86f70dbf rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x765b06dc rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xed67a008 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x37540ed9 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x1f9219fb rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x82e3c60f rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x94d58fbc rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x72cfe4b1 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0x45a3f12d rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xcab5d1f1 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsd r0, r1, r2, r3 :: rd 0xf901b934 rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMLSDX ----------------- +smlsdx r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x00000001 rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x0000001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x00000020 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x00000104 rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x00003118 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x454ff2e5 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x94ff55e5 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smlsdx r0, r1, r2, r3 :: rd 0x2d13277c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMUSD ----------------- +smusd r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x00000000 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfffffffb rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x00003018 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xce34b55d rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfa4adabc rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xf6979877 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x15ee447f rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x1a9387ea rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x1fea1186 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x080346b8 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xdc040e5c rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x13e77b1e rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xffe387a7 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xca9b1438 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x09d4b1fb rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x0845d8f1 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfd699dbf rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x32ee1760 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfa9f544c rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x06f20025 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfc2edfa6 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xeceafe3e rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xf7433540 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x3cf4b625 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x0e50389b rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x2f492fe5 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xffd5e3f0 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xcb341cd8 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x1da1e53a rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x054b896e rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x27561296 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xe20e04b5 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x08ade092 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x16ffadf6 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x23eeaf4d rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x14357393 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x1202b054 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfdac91b0 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x18f241d6 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x19740601 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x19630603 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xf00000d8 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x25d80217 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xe3943e90 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x296fe090 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfd3eacb0 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfbaee4f2 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xfcd34768 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x3271444a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xee903517 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0x088d586c rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xe8c20fe7 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusd r0, r1, r2 :: rd 0xeca01324 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- SMUSDX ---------------- +smusdx r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00000000 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00000005 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x00003018 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x2736f3c3 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xfa46a46c rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0bb05b66 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xf0fb306d rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x29972290 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x08012346 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xec029f58 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xe6acf7c4 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x109d90fb rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xf029ea71 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x4561697a rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xfd14d1e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xf737e18c rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xff9e13e5 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x2ba97aa0 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xf6196582 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x02be8154 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x2100cda6 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x088cbebe rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xe7588d2e rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x3ae1bf67 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xed670286 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x30bd684d rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xffd04078 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xdcb13ca8 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x1ffb7935 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xfa5db4ab rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xeead44e0 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x1c43f3ff rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xd6a0cf18 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0f9c4c9e rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0fa6b378 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xe397d23a rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xfd2d124c rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x095a673f rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x103df305 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0162e6e8 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x185f9408 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0a38b0dc rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xde986a0f rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x21143e00 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x2680955f rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0119caa0 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x0240d6b2 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x04d292e6 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x28492bf6 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x126e47f9 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xedf2199a rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0x017c667d rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +smusdx r0, r1, r2 :: rd 0xf989459c rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- USAD8 ---------------- +usad8 r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000002fc rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000002fa rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000002fc rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000c2 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000200 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000002fe rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000f5 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001eb rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001a4 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000159 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000017d rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000020d rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001f2 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000010b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000165 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001dc rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000019e rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000148 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001e2 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000ce rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000012e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000187 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000008f rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000247 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001db rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000c3 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000eb rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000019d rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000187 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000270 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000094 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001ac rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000b1 rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000019f rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000014d rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000169 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000fd rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000b9 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000014b rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000002f rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000009d rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000b7 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000a4 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000018f rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001b5 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000109 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001c1 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000df rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000010c rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000033d rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000d8 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000001c2 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x000000e9 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x0000019d rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000263 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usad8 r0, r1, r2 :: rd 0x00000178 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +----------------- USADA8 ----------------- +usada8 r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x000002fc rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x000002fb rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x0000031b rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x000000e2 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x000002ff rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x000003fe rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x5f986f9f rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xaae34485 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x2c07a752 rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x89d2f028 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xd4b64e72 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x0b02c745 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xb0d20909 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x7e376337 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xd5dc54cd rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xf2b649b5 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xae930b31 rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x2fb715ac rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xa3268ca5 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xef9ea125 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x3dba12a8 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xdba5be64 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x884c0c0b rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x9a4ff36e rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x81616ede rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x6077fcbf rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x40b095c5 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x91edc3c5 rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x60340920 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xccfa1dcc rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x48d06674 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xb2aeae68 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x852e3acd rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xe7b880b6 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x0557c7bf rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x81874b24 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x3ccad57b rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x85fbf300 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x89437103 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x390d2df8 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x80657de1 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x11bd091b rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xe4999ce3 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x23134a53 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x5765b35d rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x69ec0392 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x899d936b rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x7fcbe728 rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xf7b0b27d rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x464a22cf rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xf5818eb6 rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x8217b8b6 rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x73c291ba rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x1d133df3 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0x21ba3032 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xeda512a7 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000 +usada8 r0, r1, r2, r3 :: rd 0xf20fb99e rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.vgtest new file mode 100644 index 000000000..275239da5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/v6media.vgtest @@ -0,0 +1,2 @@ +prog: v6media +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.c new file mode 100644 index 000000000..7d7f0dc8c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.c @@ -0,0 +1,2277 @@ + +/* Can be compiled both as ARM or Thumb using + gcc -Wall -g -O0 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -m{arm,thumb} -o vfp vfp.c +*/ + +#include +#include +#include + +#ifndef __thumb__ +// ARM +#define MOVE_to_FPSCR_from_R4 \ + ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t" +#define MOVE_to_R4_from_FPSCR \ + ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t" +#endif + +#ifdef __thumb__ +// Thumb +#define MOVE_to_FPSCR_from_R4 \ + ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t" +#define MOVE_to_R4_from_FPSCR \ + ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t" +#endif + +static inline unsigned int f2u(float x) { + union { + float f; + unsigned int u; + } cvt; + cvt.f = x; + return cvt.u; +} + +static inline unsigned int f2u0(double x) { + union { + double f; + unsigned int u[2]; + } cvt; + cvt.f = x; + return cvt.u[0]; +} + +static inline unsigned int f2u1(double x) { + union { + double f; + unsigned int u[2]; + } cvt; + cvt.f = x; + return cvt.u[1]; +} + +/* test macros to generate and output the result of a single instruction */ + +const unsigned int mem[] = { + 0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d, + 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, + 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, + 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c +}; + +#define TESTINSN_vmovf32_imm(instruction, DD, imm) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + instruction ", #"#imm"\n\t"\ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out) \ + : #DD, "memory" \ + ); \ + printf("%s, #" #imm " :: Sd 0x%08x\n", \ + instruction, out[0]); \ +} + +#define TESTINSN_vmov_core_single(instruction, RN, SD, SDval) \ +{ \ + unsigned int out[1]; \ +\ + printf(#SD" 0x%08x\t", SDval); \ + __asm__ volatile( \ + "mov " #RN ", #0\n\t" \ + "vmov.f32 " #SD ", %1\n\t" \ + instruction "\n\t" \ + "str " #RN ", [%0]\n\t" \ + : \ + : "r" (out), "r" (SDval) \ + : #SD, #RN, "memory" \ + ); \ + printf("%s :: "#RN" 0x%08x\n", \ + instruction, out[0]); \ +} + +#define TESTINSN_vmov_single_core(instruction, SD, RN, RNval) \ +{ \ + unsigned int out[1]; \ +\ + printf(#RN" 0x%08x\t", RNval); \ + __asm__ volatile( \ + "mov " #RN ", %1\n\t" \ + "vmov " #SD ", #0x40000000\n\t" \ + instruction "\n\t"\ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (RNval) \ + : #SD, #RN, "memory" \ + ); \ + printf("%s :: "#SD" 0x%08x\n", \ + instruction, out[0]); \ +} + +#define TESTINSN_vmov_2core_2single(instruction, RD1, RD2, SN, SM, SNval, SMval) \ +{ \ + unsigned int out[2]; \ +\ + printf("\t\t\t "#SN" 0x%08x "#SM" 0x%08x\n", SNval, SMval); \ + __asm__ volatile( \ + "vmov " #SN ", %1\n\t" \ + "vmov " #SM ", %2\n\t" \ + "mov " #RD1 ", #0x4\n\t" \ + "mov " #RD2 ", #0x4\n\t" \ + instruction "\n\t"\ + "str " #RD1 ", [%0]\n\t" \ + "str " #RD2 ", [%0, #+4]\n\t" \ + : \ + : "r" (out), "r" (SNval), "r" (SMval) \ + : #RD1, #RD2, #SN, #SM, "memory" \ + ); \ + printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \ + instruction, out[0], out[1]); \ +} + +#define TESTINSN_vmov_2single_2core(instruction, SD1, SD2, RN, RM, RNval, RMval) \ +{ \ + unsigned int out[2]; \ +\ + printf("\t\t\t "#RN" 0x%08x "#RM" 0x%08x\n", RNval, RMval); \ + __asm__ volatile( \ + "mov " #RN ", %1\n\t" \ + "mov " #RM ", %2\n\t" \ + "vmov " #SD1 ", #0x40000000\n\t" \ + "vmov " #SD2 ", #0x40000000\n\t" \ + instruction "\n\t"\ + "vstmia %0, {" #SD1 ", " #SD2 " }\n\t" \ + : \ + : "r" (out), "r" (RNval), "r" (RMval) \ + : #SD1, #SD2, #RN, #RM, "memory" \ + ); \ + printf("%s :: "#SD1" 0x%08x "#SD2" 0x%08x\n", \ + instruction, out[0], out[1]); \ +} + +#define TESTINSN_vmov_double_2core(instruction, DD, RN, RM, RNval, RMval) \ +{ \ + unsigned int out[2]; \ +\ + printf(#RN" 0x%08x "#RM" 0x%08x\t", RNval, RMval); \ + __asm__ volatile( \ + "mov " #RN ", %1\n\t" \ + "mov " #RM ", %2\n\t" \ + "vmov.i8 " #DD ", #0x55\n\t" \ + instruction "\n\t"\ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (RNval), "r" (RMval) \ + : #DD, #RN, #RM, "memory" \ + ); \ + printf("%s :: "#DD" 0x%08x 0x%08x\n", \ + instruction, out[0], out[1]); \ +} + +#define TESTINSN_vmov_2core_double(instruction, RD1, RD2, DN, DNval0, DNval1) \ +{ \ + unsigned int out[2]; \ +\ + printf(#DN" 0x%08x 0x%08x\t", DNval0, DNval1); \ + __asm__ volatile( \ + "mov " #RD1 ", #55\n\t" \ + "mov " #RD2 ", #55\n\t" \ + "vmov " #DN ", %1, %2\n\t" \ + instruction "\n\t" \ + "str " #RD1 ", [%0]\n\t" \ + "str " #RD2 ", [%0, #+4]\n\t" \ + : \ + : "r" (out), "r" (DNval0), "r" (DNval1) \ + : #DN, #RD1, #RD2, "memory" \ + ); \ + printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \ + instruction, out[0], out[1]); \ +} + +#define TESTINSN_un_f64(instruction, DD, DM, DMtype, DMval0, DMval1) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #DD ", #0x55" "\n\t" \ + "vmov " #DM ", %1, %2 \n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (DMval0), "r" (DMval1) \ + : #DD, #DM, "memory" \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x Dm (" #DMtype ")0x%08x %08x\n", \ + instruction, out[1], out[0], DMval1, DMval0); \ +} + +#define TESTINSN_un_f32(instruction, SD, SM, SMtype, SMval) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov.f32 " #SM ", %1\n\t" \ + "vmov.f32 " #SD ", %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (SMval), "r" (0xffffaaaa) \ + : #SD, #SM, "memory" \ + ); \ + printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x\n", \ + instruction, out[0], SMval); \ +} + +#define TESTINSN_un_cvt_ds(instruction, DD, SM, SMval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov " #SM ", %1\n\t" \ + "vmov " #DD ", %2, %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (SMval), "r" (0xffffaaaa) \ + : #DD, #SM, "memory" \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x Sm 0x%08x\n", \ + instruction, out[1], out[0], SMval); \ +} + +#define TESTINSN_un_cvt_sd(instruction, SD, DM, DMval0, DMval1) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", %3\n\t" \ + "vmov " #DM ", %1, %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \ + : #SD, #DM, "memory" \ + ); \ + printf("%s :: Sd 0x%08x Dm 0x%08x %08x\n", \ + instruction, out[0], DMval1, DMval0); \ +} + +#define TESTINSN_cvt_i32_f64(instruction, SD, DM, DMval0, DMval1) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #DM ", %1, %2\n\t" \ + "vmov " #SD ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \ + : #SD, #DM, "memory" \ + ); \ + printf("%s :: Sd 0x%08x Dm 0x%08x %08x\n", \ + instruction, out[0], DMval1, DMval0); \ +} + +#define TESTINSN_cvt_f64_i32(instruction, DD, SM, SMval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov " #SM ", %1\n\t" \ + "vmov " #DD ", %2, %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (SMval), "r" (0xfffffff0) \ + : #DD, #SM, "memory" \ + ); \ + printf("%s :: Dd 0x%08x %08x Sm 0x%08x\n", \ + instruction, out[0], out[1], SMval); \ +} + +#define TESTINSN_un_f64_q_vmrs(instruction, DD, DM, DMtype, DMval, RN) \ +{ \ + unsigned int out[2]; \ + unsigned int fpscr; \ +\ + __asm__ volatile( \ + "vmov.i8 " #DD ", #0x55" "\n\t" \ + "mov r4, #0\n\t" \ + ".word 0xEEE14A10 @ vmsr FPSCR, "#RN"\n\t" \ + "vdup." #DMtype " " #DM ", %2\n\t" \ + instruction "\n\t" \ + "vstmia %1, {" #DD "}\n\t" \ + ".word 0xEEF14A10 @ vmrs "#RN", FPSCR\n\t" \ + "mov %0, r4" \ + : "=r" (fpscr) \ + : "r" (out), "r" (DMval) \ + : #DD, #DM, "memory", #RN \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x Dm (" #DMtype ")0x%08x fpscr %08x\n", \ + instruction, out[1], out[0], DMval, fpscr); \ +} + +#define TESTINSN_core_to_scalar(instruction, DD, DM, DMval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #DD ", #0x55" "\n\t" \ + "mov " #DM ", %1\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (DMval) \ + : #DD, #DM, "memory" \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x Dm 0x%08x\n", \ + instruction, out[1], out[0], DMval); \ +} + +#define TESTINSN_vldr_f64(instruction, DD, RN, RNval, imm) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #DD ", #0x55" "\n\t" \ + "mov " #RN ", %1\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (RNval) \ + : #DD, #RN, "memory" \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x *(int*) (Rn + shift) 0x%04x\n", \ + instruction, out[1], out[0], *(int*) (RNval + imm)); \ +} + +#define TESTINSN_vldr_f32(instruction, SD, RN, RNval, imm) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", %3" "\n\t" \ + "mov " #RN ", %1\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (RNval), "r" (imm), "r" (0xffffffaa) \ + : #SD, #RN, "memory" \ + ); \ + printf("%s :: Sd 0x%08x *(int*) (Rn + shift) 0x%04x\n", \ + instruction, out[0], *(int*) (RNval + imm)); \ +} + +#define TESTINSN_vstr64(instruction, DD, DDval, RM, RMval, imm) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #DD ", #" #DDval "\n\t" \ + "add %1, %1, #" #imm "\n\t" \ + "mov " #RM ", #0x55\n\t" \ + "str " #RM ", [%1]\n\t" \ + "str " #RM ", [%1, #4]\n\t" \ + "sub %1, %1, #" #imm "\n\t" \ + "mov " #RM ", %1\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #DD "}\n\t" \ + : \ + : "r" (out), "r" (RMval) \ + : #DD, #RM, "memory" \ + ); \ + printf("%s :: Dd 0x%08x 0x%08x *(int*) (Rm + shift) 0x%04x\n", \ + instruction, out[1], out[0], *(int*) (RMval + imm)); \ +} + +#define TESTINSN_vstr32(instruction, SD, RM, RMval, imm) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", #0xbe280000\n\t" \ + "mov " #RM ", #0x55\n\t" \ + "str " #RM ", [%1, #" #imm "]\n\t" \ + "mov " #RM ", %1\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (RMval) \ + : #SD, #RM, "memory" \ + ); \ + printf("%s :: Sd 0x%08x, *(int*) (Rm + shift) 0x%04x\n", \ + instruction, out[0], *(int*) (RMval + imm)); \ +} + +#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "mov " #QD ", #0x55" "\n\t" \ + "vdup." #QMtype " " #QM ", %1\n\t" \ + instruction "\n\t" \ + "str " #QD ", [%0]\n\t" \ + : \ + : "r" (out), "r" (QMval) \ + : #QD, #QM, "memory" \ + ); \ + printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \ + instruction, out[0], QMval); \ +} + +#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \ +{ \ + unsigned int out[8]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD1 ", #0x55" "\n\t" \ + "vmov.i8 " #QD2 ", #0x55" "\n\t" \ + "vmov.i8 " #QD3 ", #0x55" "\n\t" \ + "vmov.i8 " #QD4 ", #0x55" "\n\t" \ + instruction ", [%1]\n\t" \ + "mov r4, %0\n\t" \ + "vstmia %0!, {" #QD1 "}\n\t" \ + "vstmia %0!, {" #QD2 "}\n\t" \ + "vstmia %0!, {" #QD3 "}\n\t" \ + "vstmia %0!, {" #QD4 "}\n\t" \ + "mov %0, r4\n\t" \ + : \ + : "r" (out), "r" (mem) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7]); \ +} + +#define TESTINSN_VSTMIAnoWB(instruction, RN, QD, QDval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD ", " #QDval "\n\t" \ + "mov " #RN ", %0\n\t" \ + instruction "\n\t" \ + : \ + : "r" (out), "r" (mem) \ + : #QD, "memory", #RN \ + ); \ + printf("%s :: Result 0x%08x 0x%08x\n", \ + instruction, out[0], out[1]); \ +} + +#define TESTINSN_VSTMIAnoWB32(instruction, RN, SD, SDval) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", %2\n\t" \ + "mov " #RN ", %0\n\t" \ + instruction "\n\t" \ + : \ + : "r" (out), "r" (mem), "r" (SDval) \ + : #SD, "memory", #RN \ + ); \ + printf("%s :: Result 0x%08x\n", \ + instruction, out[0]); \ +} + +#define TESTINSN_VSTMIAWB(RN, QD1, QD2) \ +{ \ + unsigned int out[4]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD1 ", #0xa0" "\n\t" \ + "vmov.i8 " #QD2 ", #0xb1" "\n\t" \ + "mov " #RN ", %0\n\t" \ + "vstmia " #RN "!, {" #QD1 "}\n\t" \ + "vstmia " #RN "!, {" #QD2 "}\n\t" \ + : \ + : "r" (out), "r" (mem) \ + : #QD1, #QD2, "memory", #RN \ + ); \ + printf("vstmia "#RN"!, "#QD1"; vstmia "#RN"!, "#QD2" :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + out[0], out[1], out[2], out[3]); \ +} + +#define TESTINSN_VSTMIAWB32(RN, SD1, SD2) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov " #SD1 ", #0xbff80000" "\n\t" \ + "vmov " #SD2 ", #0x3fa80000" "\n\t" \ + "mov " #RN ", %0\n\t" \ + "vstmia " #RN "!, {" #SD1 "}\n\t" \ + "vstmia " #RN "!, {" #SD2 "}\n\t" \ + : \ + : "r" (out), "r" (mem) \ + : #SD1, #SD2, "memory", #RN \ + ); \ + printf("vstmia " #RN "!, "#SD1"; vstmia "#RN"!, "#SD2" :: Result 0x%08x 0x%08x\n", \ + out[0], out[1]); \ +} + +#define TESTINSN_VSTMDB(RN, QD1, QD2) \ +{ \ + unsigned int out[4]; \ + long endout = (long) out + 8; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD1 ", #0xaa" "\n\t" \ + "vmov.i8 " #QD2 ", #0xbb" "\n\t" \ + "mov " #RN ", %0\n\t" \ + "vstmdb " #RN "!, {" #QD1 "}\n\t" \ + "vstmdb " #RN "!, {" #QD2 "}\n\t" \ + "mov %0, " #RN "\n\t" \ + : \ + : "r" (endout), "r" (mem) \ + : #QD1, #QD2, "memory", #RN \ + ); \ + printf("vstmdb " #RN "!, " #QD2 "; vstmdb " #RN "!, " #QD2 \ + " :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + out[0], out[1], out[2], out[3]); \ +} + +#define TESTINSN_VLDMIAnoWB(instruction, RN, QD) \ +{ \ + unsigned int in[2] = {0xaa0, 0xbb1}; \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "mov " #RN ", %0\n\t" \ + instruction "\n\t" \ + "mov " #RN ", %1\n\t" \ + "vstmia " #RN ", {" #QD "}\n\t" \ + : \ + : "r" (in), "r" (out), "r" (mem) \ + : #QD, "memory", #RN \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + instruction, out[0], out[1], out[2], out[3]); \ +} + +#define TESTINSN_VLDMIAWB(RN, QD1, QD2) \ +{ \ + unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \ + unsigned int out[4]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD1 ", #0x55" "\n\t" \ + "vmov.i8 " #QD2 ", #0x55" "\n\t" \ + "mov " #RN ", %0\n\t" \ + "vldmia " #RN "!, {" #QD1 "}\n\t" \ + "vldmia " #RN "!, {" #QD2 "}\n\t" \ + "mov " #RN ", %1\n\t" \ + "vstmia " #RN "!, {" #QD1 "}\n\t" \ + "vstmia " #RN "!, {" #QD2 "}\n\t" \ + : \ + : "r" (in), "r" (out), "r" (mem) \ + : #QD1, #QD2, "memory", #RN \ + ); \ + printf("vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + out[0], out[1], out[2], out[3]); \ +} + +#define TESTINSN_VLDMDB(RN, QD1, QD2) \ +{ \ + unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \ + unsigned int out[4]; \ + long endin = (long) in + 16; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD1 ", #0x55" "\n\t" \ + "vmov.i8 " #QD2 ", #0x55" "\n\t" \ + "mov " #RN ", %0\n\t" \ + "vldmdb " #RN "!, {" #QD1 "}\n\t" \ + "vldmdb " #RN "!, {" #QD2 "}\n\t" \ + "mov " #RN ", %1\n\t" \ + "vstmia " #RN "!, {" #QD1 "}\n\t" \ + "vstmia " #RN "!, {" #QD2 "}\n\t" \ + : \ + : "r" (endin), "r" (out), "r" (mem) \ + : #QD1, #QD2, "memory", #RN \ + ); \ + printf("vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \ + out[0], out[1], out[2], out[3]); \ +} + +#define TESTINSN_VLDR(instruction, dD, rN, rNval, offset) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #dD ", #0x55\n\t" \ + "mov " #rN ", %1\n\t" \ + instruction ", #" #offset "]\n\t" \ + "vstmia %0, {" #dD "}\n\t" \ + : \ + : "r" (out), "r" (rNval) \ + : #dD, "memory" \ + ); \ + printf("%s :: dD 0x%08x 0x%08x rN 0x%08x\n", \ + instruction, out[1], out[0], rNval); \ +} + + +#define TESTINSN_vpush_vpop_f32(S1, Sval1, S2, Sval2, S3, Sval3, S4, S5, S6) \ +{ \ + unsigned int out[6]; \ +\ + __asm__ volatile( \ + "vmov "#S4", %4\n\t" \ + "vmov "#S5", %4\n\t" \ + "vmov "#S6", %4\n\t" \ + "vmov "#S1", %1\n\t" \ + "vmov "#S2", %2\n\t" \ + "vmov "#S3", %3\n\t" \ + "vpush {"#S1", "#S2"}\n\t" \ + "vpush {"#S3"}\n\t" \ + "vpop {"#S4"}\n\t" \ + "vpop {"#S5", "#S6"}\n\t" \ + "mov r4, %0\n\t" \ + "vstmia %0!, {"#S1"}\n\t" \ + "vstmia %0!, {"#S2"}\n\t" \ + "vstmia %0!, {"#S3"}\n\t" \ + "vstmia %0!, {"#S4"}\n\t" \ + "vstmia %0!, {"#S5"}\n\t" \ + "vstmia %0!, {"#S6"}\n\t" \ + "mov %0, r4\n\t" \ + : \ + : "r" (out), "r" (Sval1), "r" (Sval2), "r" (Sval3), "r" (0x55555555) \ + : #S1, #S2, #S3, #S4, #S5, #S6, "r4", "memory" \ + ); \ + printf(#S1" 0x%08x "#S2" 0x%08x "#S3" 0x%08x "#S4" 0x%08x "\ + #S5" 0x%08x "#S6" 0x%08x\n", out[0], out[1],\ + out[2], out[3], out[4], out[5]); \ +} + +#define TESTINSN_vpush_vpop_f64(D1, Dval10, Dval11, D2, Dval20, Dval21, D3, D4) \ +{ \ + unsigned int out[8]; \ +\ + __asm__ volatile( \ + "vmov "#D3", %4, %4\n\t" \ + "vmov "#D4", %4, %4\n\t" \ + "vmov "#D1", %1, %2\n\t" \ + "vmov "#D2", %3, %4\n\t" \ + "vpush {"#D1", "#D2"}\n\t" \ + "vpop {"#D3", "#D4"}\n\t" \ + "mov r4, %0\n\t" \ + "vstmia %0!, {"#D1"}\n\t" \ + "vstmia %0!, {"#D2"}\n\t" \ + "vstmia %0!, {"#D3"}\n\t" \ + "vstmia %0!, {"#D4"}\n\t" \ + "mov %0, r4\n\t" \ + : \ + : "r" (out), "r" (Dval10), "r" (Dval11), "r" (Dval20), "r" (Dval21), "r" (0x55555555) \ + : #D1, #D2, #D3, #D4, "r4", "memory" \ + ); \ + printf(#D1" 0x%08x %08x "#D2" 0x%08x %08x "#D3" 0x%08x %08x "#D4" 0x%08x %08x\n",\ + out[0],out[1], out[2],out[3], out[4],out[5], out[6],out[7]); \ +} + +#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \ +{ \ + unsigned int out[8]; \ +\ + memset(out, 0x55, 8 * (sizeof(unsigned int)));\ + __asm__ volatile( \ + "mov r4, %1\n\t" \ + "vldmia %1!, {" #QD1 "}\n\t" \ + "vldmia %1!, {" #QD2 "}\n\t" \ + "vldmia %1!, {" #QD3 "}\n\t" \ + "vldmia %1!, {" #QD4 "}\n\t" \ + "mov %1, r4\n\t" \ + instruction ", [%0]\n\t" \ + : \ + : "r" (out), "r" (mem) \ + : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ + ); \ + printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ + "0x%08x 0x%08x 0x%08x 0x%08x\n", \ + instruction, out[0], out[1], out[2], out[3], out[4],\ + out[5], out[6], out[7]); \ +} + +#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vmov.i8 " #QD ", #0x55" "\n\t" \ + "vdup." #QMtype " " #QM ", %1\n\t" \ + "vdup." #QNtype " " #QN ", %2\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval), "r" (QNval) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ + " Qn (" #QNtype ")0x%08x\n", \ + instruction, out[1], out[0], QMval, QNval); \ +} + +#define TESTINSN_bin_f64(instruction, QD, QM, QMtype, QMval0, QMval1, QN, QNtype, QNval0, QNval1) \ +{ \ + unsigned int out[2]; \ +\ + __asm__ volatile( \ + "vdup.i32 " #QD ", %5\n\t" \ + "vmov " #QM ", %1, %2 \n\t" \ + "vmov " #QN ", %3, %4 \n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #QD "}\n\t" \ + : \ + : "r" (out), "r" (QMval0), "r" (QMval1), "r" (QNval0), "r" (QNval1), "r"(0x3f800000) \ + : #QD, #QM, #QN, "memory" \ + ); \ + printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x %08x" \ + " Qn 0x%08x %08x\n", \ + instruction, out[1], out[0], QMval1, QMval0, QNval1, QNval0); \ +} + +#define TESTINSN_bin_f32(instruction, SD, SM, SMtype, SMval, SN, SNtype, SNval) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov.f32 " #SM ", %1\n\t" \ + "vmov.f32 " #SN ", %2\n\t" \ + "vmov.f32 " #SD ", %3\n\t" \ + instruction "\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (SMval), "r" (SNval), "r" (0xaaaaaaaa) \ + : #SD, #SM, #SN, "memory" \ + ); \ + printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x" \ + " Sn (" #SNtype ")0x%08x\n", \ + instruction, out[0], SMval, SNval); \ +} + +#define TESTINSN_cmp_f64(instruction, DD, DDval0, DDval1, DM, DMval0, DMval1) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #DD ", %1, %2\n\t" \ + "vmov " #DM ", %3, %4\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + instruction "\n\t" \ + MOVE_to_R4_from_FPSCR \ + "str r4, [%0]\n\t" \ + : \ + : "r" (out), "r" (DDval0), "r" (DDval1),"r" (DMval0), "r" (DMval1) \ + : #DD, #DM, "r4", "memory" \ + ); \ + printf("%s :: FPSCR 0x%08x Dd 0x%08x %08x" \ + " Dm 0x%08x %08x\n", \ + instruction, out[0] & 0xffffff60, DDval1, DDval0, DMval1, DMval0); \ +} + +#define TESTINSN_cmp_f32(instruction, SD, SDval, SM, SMval) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", %1\n\t" \ + "vmov " #SM ", %2\n\t" \ + "mov r4, #0\n\t" \ + MOVE_to_FPSCR_from_R4 \ + instruction "\n\t" \ + MOVE_to_R4_from_FPSCR \ + "str r4, [%0]\n\t" \ + : \ + : "r" (out), "r" (SDval),"r" (SMval) \ + : #SD, #SM, "r4", "memory" \ + ); \ + printf("%s :: FPSCR 0x%01x Sd 0x%08x" \ + " Sm 0x%08x\n", \ + instruction, (out[0] & 0xf0000000) >> 28, SDval, SMval); \ +} + +#define TESTINSN_cmpz_f32(instruction, SD, SDval) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #SD ", %1\n\t" \ + instruction ", #0\n\t" \ + MOVE_to_R4_from_FPSCR \ + "vmov " #SD ", r4\n\t" \ + "vstmia %0, {" #SD "}\n\t" \ + : \ + : "r" (out), "r" (SDval)\ + : #SD, "r4", "memory" \ + ); \ + printf("%s :: FPSCR 0x%08x Sd 0x%08x\n", \ + instruction, out[0] & 0xffffff60, SDval); \ +} + +#define TESTINSN_cmpz_f64(instruction, DD, DDval0, DDval1) \ +{ \ + unsigned int out[1]; \ +\ + __asm__ volatile( \ + "vmov " #DD ", %1, %2\n\t" \ + instruction ", #0\n\t" \ + MOVE_to_R4_from_FPSCR \ + "str r4, [%0]\n\t" \ + : \ + : "r" (out), "r" (DDval0), "r" (DDval1) \ + : #DD, "r4", "memory" \ + ); \ + printf("%s :: FPSCR 0x%08x Dd 0x%08x %08x\n", \ + instruction, out[0] & 0xffffff60, DDval1, DDval0); \ +} + +static void do_vldm_vstm_check(void) +{ + int i; + const char *format = "\t0x%08x\n"; + unsigned int data[] = { + 0x1a1b1c1d, 0x2a2b2c2d, 0x3a3b3c3d, 0x4a4b4c4d, + 0x5a5b5c5d, 0x6a6b6c6d, 0x7a7b7c7d, 0x8a8b8c8d, + 0x9a9b9c9d, 0xaaabacad, 0xbabbbcbd, 0xcacbcccd, + 0xdadbdcdd, 0xeaebeced, 0xfafbfcfd, 0x0a0b0c0d + }; + unsigned int res; + printf("do_vldm_vstm_check:\n"); + __asm__ volatile( + "mov r1, %0\n\t" + "vldmia r1!, {s0, s1, s2, s3}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s2\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s3\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "add r1, %0, #32\n\t" + "vldmdb r1!, {s5, s6}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s6\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "add r1, %0, #4\n\t" + "vldmia r1, {s0, s1, s2, s3}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s2\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s3\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, s0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "add r1, %0, #48\n\t" + "vldmia r1!, {d30, d31}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d30\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d31\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "add r1, %0, #44\n\t" + "vldmia r1, {d30, d31}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d30\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d31\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "add r1, %0, #40\n\t" + "vldmdb r1!, {d30, d31}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d30\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "vmov r1, r5, d31\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + "mov r0, %1\n\t" + "mov r1, r5\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x55\n\t" + "vmov s0, r0\n\t" + "mov r0, #0x56\n\t" + "vmov s1, r0\n\t" + "mov r0, #0x57\n\t" + "vmov s2, r0\n\t" + "mov r0, #0x58\n\t" + "vmov s3, r0\n\t" + "add r1, %0, #0\n\t" + "vstmia r1!, {s0, s1, s2, s3}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x65\n\t" + "vmov s16, r0\n\t" + "mov r0, #0x66\n\t" + "vmov s17, r0\n\t" + "add r1, %0, #16\n\t" + "vstmia r1, {s16, s17}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x75\n\t" + "vmov s16, r0\n\t" + "mov r0, #0x76\n\t" + "vmov s17, r0\n\t" + "add r1, %0, #32\n\t" + "vstmdb r1!, {s16, s17}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x42\n\t" + "mov r1, #0x43\n\t" + "vmov d30, r0, r1\n\t" + "mov r0, #0x40\n\t" + "mov r1, #0x41\n\t" + "vmov d31, r0, r1\n\t" + "mov r0, #0x57\n\t" + "add r1, %0, #32\n\t" + "vstmia r1!, {d30, d31}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x32\n\t" + "mov r1, #0x33\n\t" + "vmov d10, r0, r1\n\t" + "mov r0, #0x57\n\t" + "add r1, %0, #48\n\t" + "vstmia r1, {d10}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" +/* --- */ + "mov r0, #0x22\n\t" + "mov r1, #0x23\n\t" + "vmov d10, r0, r1\n\t" + "mov r0, #0x57\n\t" + "add r1, %0, #64\n\t" + "vstmdb r1!, {d10}\n\t" + "mov r0, %1\n\t" + "sub r1, r1, %0\n\t" + "mov r3, r1\n\t" + "bl printf\n\t" + : + : "r" (data), "r" (format), "r"(&res) + : "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory", + "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", + "d10", "d30", "d31" + ); + printf("data:\n"); + for (i = 0; i < 16; i++) { + printf("\t0x%08x\n", data[i]); + } +} + +int main(int argc, char **argv) +{ + do_vldm_vstm_check(); + + printf("---- VMOV (ARM core register to scalar) ----\n"); + TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, f2u(13)); + TESTINSN_core_to_scalar("vmov.32 d1[1], r6", d1, r6, 0x12); + TESTINSN_core_to_scalar("vmov.32 d20[0], r5", d20, r5, f2u(NAN)); + TESTINSN_core_to_scalar("vmov.32 d29[1], r6", d29, r6, f2u(172)); + TESTINSN_core_to_scalar("vmov.32 d30[0], r5", d30, r5, f2u(INFINITY)); + TESTINSN_core_to_scalar("vmov.32 d11[1], r6", d11, r6, f2u(-INFINITY)); + TESTINSN_core_to_scalar("vmov.32 d18[0], r5", d11, r5, f2u(653)); + TESTINSN_core_to_scalar("vmov.32 d9[1], r6", d9, r6, 12); + TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13); + TESTINSN_core_to_scalar("vmov.16 d14[1], r5", d14, r5, f2u(NAN)); + TESTINSN_core_to_scalar("vmov.16 d28[2], r6", d28, r6, 14); + TESTINSN_core_to_scalar("vmov.16 d30[3], r1", d30, r1, 17); + TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, f2u(INFINITY)); + TESTINSN_core_to_scalar("vmov.16 d7[1], r5", d7, r5, f2u(-INFINITY)); + TESTINSN_core_to_scalar("vmov.16 d21[2], r6", d21, r6, 14); + TESTINSN_core_to_scalar("vmov.16 d17[3], r1", d17, r1, 17); + TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13); + TESTINSN_core_to_scalar("vmov.8 d10[1], r5", d10, r5, f2u(NAN)); + TESTINSN_core_to_scalar("vmov.8 d20[2], r5", d20, r5, f2u(INFINITY)); + TESTINSN_core_to_scalar("vmov.8 d30[3], r5", d30, r5, f2u(-INFINITY)); + TESTINSN_core_to_scalar("vmov.8 d13[4], r5", d13, r5, 213); + TESTINSN_core_to_scalar("vmov.8 d17[5], r5", d17, r5, 1343); + TESTINSN_core_to_scalar("vmov.8 d24[6], r5", d24, r5, 111); + TESTINSN_core_to_scalar("vmov.8 d29[7], r5", d29, r5, 173); + + printf("---- VMOV (scalar to ARM core register) ----\n"); + TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, f2u(NAN)); + TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, f2u(INFINITY)); + TESTINSN_scalar_to_core("vmov.32 r4, d10[0]", r4, d10, i32, f2u(-INFINITY)); + TESTINSN_scalar_to_core("vmov.32 r5, d15[1]", r5, d15, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.32 r9, d20[0]", r9, d20, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.32 r8, d25[1]", r8, d25, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.32 r0, d30[0]", r0, d30, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.32 r2, d19[1]", r2, d19, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, f2u(NAN)); + TESTINSN_scalar_to_core("vmov.u16 r3, d30[1]", r3, d30, i32, f2u(INFINITY)); + TESTINSN_scalar_to_core("vmov.u16 r6, d21[2]", r6, d21, i32, f2u(-INFINITY)); + TESTINSN_scalar_to_core("vmov.u16 r9, d26[3]", r9, d26, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u16 r12, d11[0]", r12, d11, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u16 r0, d10[1]", r0, d10, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u16 r6, d1[2]", r6, d1, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u16 r8, d5[3]", r8, d5, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, f2u(NAN)); + TESTINSN_scalar_to_core("vmov.u8 r6, d14[1]", r6, d14, i32, f2u(INFINITY)); + TESTINSN_scalar_to_core("vmov.u8 r9, d24[2]", r9, d24, i32, f2u(-INFINITY)); + TESTINSN_scalar_to_core("vmov.u8 r8, d31[3]", r8, d31, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u8 r10, d29[4]", r10, d29, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u8 r3, d19[5]", r3, d19, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u8 r12, d12[6]", r12, d12, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.u8 r10, d18[4]", r10, d18, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i32, f2u(NAN)); + TESTINSN_scalar_to_core("vmov.s16 r3, d30[1]", r3, d30, i32, f2u(INFINITY)); + TESTINSN_scalar_to_core("vmov.s16 r6, d21[2]", r6, d21, i32, f2u(-INFINITY)); + TESTINSN_scalar_to_core("vmov.s16 r9, d26[3]", r9, d26, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s16 r4, d11[0]", r4, d11, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s16 r0, d10[1]", r0, d10, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s16 r6, d1[2]", r6, d1, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s16 r8, d5[3]", r8, d5, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i32, f2u(NAN)); + TESTINSN_scalar_to_core("vmov.s8 r6, d14[1]", r6, d14, i32, f2u(INFINITY)); + TESTINSN_scalar_to_core("vmov.s8 r9, d24[2]", r9, d24, i32, f2u(-INFINITY)); + TESTINSN_scalar_to_core("vmov.s8 r8, d31[3]", r8, d31, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s8 r6, d29[4]", r6, d29, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s8 r3, d19[5]", r3, d19, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s8 r12, d12[6]", r12, d12, i32, 0x11223344); + TESTINSN_scalar_to_core("vmov.s8 r10, d18[7]", r10, d18, i32, 0x11223344); + + printf("---- VMLA (fp) ----\n"); + TESTINSN_bin_f64("vmla.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmla.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmla.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vmla.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vmla.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmla.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vmla.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vmla.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vmla.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vmla.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vmla.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vmla.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vmla.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vmla.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vmla.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vmla.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vmla.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vmla.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vmla.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vmla.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vmla.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vmla.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vmla.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vmla.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vmla.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vmla.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vmla.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vmla.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VNMLA (fp) ----\n"); + TESTINSN_bin_f64("vnmla.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmla.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmla.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vnmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vnmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vnmla.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vnmla.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmla.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vnmla.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vnmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vnmla.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vnmla.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vnmla.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vnmla.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vnmla.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vnmla.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vnmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vnmla.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vnmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vnmla.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmla.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmla.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vnmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vnmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vnmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vnmla.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vnmla.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vnmla.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vnmla.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vnmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vnmla.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vnmla.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vnmla.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vnmla.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vnmla.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752.)); + TESTINSN_bin_f32("vnmla.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vnmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vnmla.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vnmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VMLS (fp) ----\n"); + TESTINSN_bin_f64("vmls.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmls.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmls.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vmls.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vmls.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmls.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vmls.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vmls.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vmls.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vmls.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vmls.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vmls.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vmls.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vmls.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vmls.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vmls.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vmls.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vmls.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vmls.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vmls.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vmls.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vmls.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vmls.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vmls.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vmls.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vmls.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vmls.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vmls.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VNMLS (fp) ----\n"); + TESTINSN_bin_f64("vnmls.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmls.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmls.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vnmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vnmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vnmls.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vnmls.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmls.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vnmls.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vnmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vnmls.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vnmls.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vnmls.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vnmls.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vnmls.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vnmls.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vnmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vnmls.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vnmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vnmls.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmls.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmls.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vnmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vnmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vnmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vnmls.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vnmls.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vnmls.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vnmls.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vnmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vnmls.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vnmls.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vnmls.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vnmls.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vnmls.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vnmls.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vnmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vnmls.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vnmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VMUL (fp) ----\n"); + TESTINSN_bin_f64("vmul.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmul.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmul.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vmul.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vmul.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vmul.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vmul.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vmul.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vmul.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vmul.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vmul.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vmul.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vmul.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vmul.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vmul.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vmul.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vmul.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vmul.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vmul.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vmul.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vmul.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vmul.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vmul.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vmul.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vmul.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vmul.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vmul.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vmul.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VNMUL (fp) ----\n"); + TESTINSN_bin_f64("vnmul.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmul.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmul.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vnmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vnmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vnmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vnmul.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vnmul.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vnmul.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vnmul.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vnmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vnmul.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vnmul.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vnmul.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vnmul.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vnmul.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vnmul.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vnmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vnmul.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vnmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vnmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vnmul.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmul.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmul.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vnmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vnmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vnmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vnmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vnmul.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vnmul.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vnmul.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vnmul.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vnmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vnmul.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vnmul.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vnmul.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vnmul.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vnmul.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vnmul.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vnmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vnmul.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vnmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vnmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VADD (fp) ----\n"); + TESTINSN_bin_f64("vadd.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vadd.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vadd.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vadd.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vadd.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vadd.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vadd.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vadd.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vadd.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vadd.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vadd.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vadd.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vadd.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vadd.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vadd.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vadd.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vadd.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vadd.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vadd.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vadd.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vadd.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vadd.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vadd.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vadd.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vadd.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vadd.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vadd.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vadd.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vadd.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vadd.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vadd.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vadd.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vadd.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vadd.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vadd.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vadd.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vadd.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vadd.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vadd.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vadd.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vadd.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vadd.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vadd.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vadd.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VSUB (fp) ----\n"); + TESTINSN_bin_f64("vsub.f64 d0, d11, d12", d0, d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vsub.f64 d7, d1, d6", d7, d1, i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vsub.f64 d0, d5, d2", d0, d5, i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0)); + TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_bin_f64("vsub.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vsub.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vsub.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vsub.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vsub.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vsub.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vsub.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vsub.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vsub.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vsub.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vsub.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vsub.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vsub.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vsub.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vsub.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vsub.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vsub.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vsub.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vsub.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vsub.f32 s0, s11, s12", s0, s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN)); + TESTINSN_bin_f32("vsub.f32 s7, s1, s6", s7, s1, i32, f2u(INFINITY), s6, i32, f2u(NAN)); + TESTINSN_bin_f32("vsub.f32 s0, s5, s2", s0, s5, i32, f2u(NAN), s2, i32, f2u(-1.0)); + TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN)); + TESTINSN_bin_f32("vsub.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vsub.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vsub.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vsub.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vsub.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vsub.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vsub.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vsub.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vsub.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vsub.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vsub.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vsub.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vsub.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vsub.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vsub.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vsub.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vsub.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vsub.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vsub.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VDIV (fp) ----\n"); + TESTINSN_bin_f64("vdiv.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687)); + TESTINSN_bin_f64("vdiv.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vdiv.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476)); + TESTINSN_bin_f64("vdiv.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065)); + TESTINSN_bin_f64("vdiv.f64 d30, d15, d2", d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76)); + TESTINSN_bin_f64("vdiv.f64 d23, d24, d5", d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346)); + TESTINSN_bin_f64("vdiv.f64 d10, d11, d2", d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089)); + TESTINSN_bin_f64("vdiv.f64 d29, d15, d7", d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065)); + TESTINSN_bin_f64("vdiv.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009)); + TESTINSN_bin_f64("vdiv.f64 d27, d21, d6", d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575)); + TESTINSN_bin_f64("vdiv.f64 d30, d31, d2", d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107)); + TESTINSN_bin_f64("vdiv.f64 d13, d24, d5", d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6)); + TESTINSN_bin_f64("vdiv.f64 d10, d11, d2", d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109)); + TESTINSN_bin_f64("vdiv.f64 d29, d25, d7", d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752)); + TESTINSN_bin_f64("vdiv.f64 d0, d11, d12", d0, d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47)); + TESTINSN_bin_f64("vdiv.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676)); + TESTINSN_bin_f64("vdiv.f64 d0, d5, d2", d0, d5, i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_bin_f64("vdiv.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f64("vdiv.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0)); + TESTINSN_bin_f32("vdiv.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687)); + TESTINSN_bin_f32("vdiv.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346)); + TESTINSN_bin_f32("vdiv.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476)); + TESTINSN_bin_f32("vdiv.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065)); + TESTINSN_bin_f32("vdiv.f32 s30, s15, s2", s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76)); + TESTINSN_bin_f32("vdiv.f32 s23, s24, s5", s23, s24, i32, f2u(24), s5, i32, f2u(1346)); + TESTINSN_bin_f32("vdiv.f32 s10, s11, s2", s10, s11, i32, f2u(48755), s2, i32, f2u(1089)); + TESTINSN_bin_f32("vdiv.f32 s29, s15, s7", s29, s15, i32, f2u(214), s7, i32, f2u(1752065)); + TESTINSN_bin_f32("vdiv.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009)); + TESTINSN_bin_f32("vdiv.f32 s27, s21, s6", s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575)); + TESTINSN_bin_f32("vdiv.f32 s30, s31, s2", s30, s31, i32, f2u(2754), s2, i32, f2u(107)); + TESTINSN_bin_f32("vdiv.f32 s13, s24, s5", s13, s24, i32, f2u(874), s5, i32, f2u(1384.6)); + TESTINSN_bin_f32("vdiv.f32 s10, s11, s2", s10, s11, i32, f2u(487.587), s2, i32, f2u(109)); + TESTINSN_bin_f32("vdiv.f32 s29, s25, s7", s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752)); + TESTINSN_bin_f32("vdiv.f32 s0, s11, s12", s0, s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47)); + TESTINSN_bin_f32("vdiv.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676)); + TESTINSN_bin_f32("vdiv.f32 s0, s5, s2", s0, s5, i32, f2u(INFINITY), s2, i32, f2u(-INFINITY)); + TESTINSN_bin_f32("vdiv.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0)); + TESTINSN_bin_f32("vdiv.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0)); + + printf("---- VABS ----\n"); + TESTINSN_un_f64("vabs.f64 d15, d4", d15, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vabs.f64 d31, d4", d31, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vabs.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vabs.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vabs.f64 d30, d1", d30, d1, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vabs.f64 d8, d27", d8, d27, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vabs.f64 d20, d1", d20, d1, i32, f2u0(76543.001002), f2u1(76543.001002)); + TESTINSN_un_f64("vabs.f64 d28, d7", d28, d7, i32, f2u0(-4856.234), f2u1(-4856.234)); + TESTINSN_un_f64("vabs.f64 d2, d19", d2, d19, i32,f2u0(87.098217), f2u1(87.098217)); + TESTINSN_un_f64("vabs.f64 d8, d7", d8, d7, i32, f2u0(-122156.2), f2u1(-122156.2)); + TESTINSN_un_f32("vabs.f32 s15, s4", s15, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vabs.f32 s31, s4", s31, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vabs.f32 s25, s25", s25, s24, i32, f2u(INFINITY)); + TESTINSN_un_f32("vabs.f32 s18, s17", s18, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vabs.f32 s30, s1", s30, s1, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vabs.f32 s8, s27", s8, s27, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vabs.f32 s20, s1", s20, s1, i32, f2u(76543.001002)); + TESTINSN_un_f32("vabs.f32 s28, s7", s28, s7, i32, f2u(-4856.234)); + TESTINSN_un_f32("vabs.f32 s2, s19", s2, s19, i32,f2u(87.098217)); + TESTINSN_un_f32("vabs.f32 s8, s7", s8, s7, i32, f2u(-122156.2)); + + printf("---- VNEG ----\n"); + TESTINSN_un_f64("vneg.f64 d15, d4", d15, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vneg.f64 d31, d4", d31, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vneg.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vneg.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vneg.f64 d30, d1", d30, d1, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vneg.f64 d8, d27", d8, d27, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vneg.f64 d20, d1", d20, d1, i32, f2u0(76543.001002), f2u1(76543.001002)); + TESTINSN_un_f64("vneg.f64 d28, d7", d28, d7, i32, f2u0(-4856.234), f2u1(-4856.234)); + TESTINSN_un_f64("vneg.f64 d2, d19", d2, d19, i32,f2u0(87.098217), f2u1(87.098217)); + TESTINSN_un_f64("vneg.f64 d8, d7", d8, d7, i32, f2u0(-122156.2), f2u1(-122156.2)); + TESTINSN_un_f32("vneg.f32 s15, s4", s15, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vneg.f32 s31, s4", s31, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vneg.f32 s25, s25", s25, s24, i32, f2u(INFINITY)); + TESTINSN_un_f32("vneg.f32 s18, s17", s18, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vneg.f32 s30, s1", s30, s1, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vneg.f32 s8, s27", s8, s27, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vneg.f32 s20, s1", s20, s1, i32, f2u(76543.001002)); + TESTINSN_un_f32("vneg.f32 s28, s7", s28, s7, i32, f2u(-4856.234)); + TESTINSN_un_f32("vneg.f32 s2, s19", s2, s19, i32,f2u(87.098217)); + TESTINSN_un_f32("vneg.f32 s8, s7", s8, s7, i32, f2u(-122156.2)); + + printf("---- VMOV (register) ----\n"); + TESTINSN_un_f64("vmov.f64 d15, d4", d15, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vmov.f64 d31, d4", d31, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vmov.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vmov.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vmov.f64 d30, d1", d30, d1, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vmov.f64 d8, d27", d8, d27, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vmov.f64 d20, d1", d20, d1, i32, f2u0(76543.001002), f2u1(76543.001002)); + TESTINSN_un_f64("vmov.f64 d28, d7", d28, d7, i32, f2u0(-4856.234), f2u1(-4856.234)); + TESTINSN_un_f64("vmov.f64 d2, d19", d2, d19, i32,f2u0(87.098217), f2u1(87.098217)); + TESTINSN_un_f64("vmov.f64 d8, d7", d8, d7, i32, f2u0(-122156.2), f2u1(-122156.2)); + TESTINSN_un_f32("vmov.f32 s15, s4", s15, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vmov.f32 s31, s4", s31, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vmov.f32 s25, s25", s25, s24, i32, f2u(INFINITY)); + TESTINSN_un_f32("vmov.f32 s18, s17", s18, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vmov.f32 s30, s1", s30, s1, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vmov.f32 s8, s27", s8, s27, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vmov.f32 s20, s1", s20, s1, i32, f2u(76543.001002)); + TESTINSN_un_f32("vmov.f32 s28, s7", s28, s7, i32, f2u(-4856.234)); + TESTINSN_un_f32("vmov.f32 s2, s19", s2, s19, i32,f2u(87.098217)); + TESTINSN_un_f32("vmov.f32 s8, s7", s8, s7, i32, f2u(-122156.2)); + + printf("---- VSQRT ----\n"); + TESTINSN_un_f64("vsqrt.f64 d15, d4", d15, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vsqrt.f64 d31, d4", d31, d4, i32, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_f64("vsqrt.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vsqrt.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_un_f64("vsqrt.f64 d30, d1", d30, d1, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vsqrt.f64 d8, d27", d8, d27, i32, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_f64("vsqrt.f64 d20, d1", d20, d1, i32, f2u0(76543.001002), f2u1(76543.001002)); + TESTINSN_un_f64("vsqrt.f64 d28, d7", d28, d7, i32, f2u0(-4856.234), f2u1(-4856.234)); + TESTINSN_un_f64("vsqrt.f64 d2, d19", d2, d19, i32,f2u0(87.098217), f2u1(87.098217)); + TESTINSN_un_f64("vsqrt.f64 d8, d7", d8, d7, i32, f2u0(-122156.2), f2u1(-122156.2)); + TESTINSN_un_f32("vsqrt.f32 s15, s4", s15, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vsqrt.f32 s31, s4", s31, s4, i32, f2u(NAN)); + TESTINSN_un_f32("vsqrt.f32 s25, s25", s25, s24, i32, f2u(INFINITY)); + TESTINSN_un_f32("vsqrt.f32 s18, s17", s18, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vsqrt.f32 s30, s1", s30, s1, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vsqrt.f32 s8, s27", s8, s27, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vsqrt.f32 s20, s1", s20, s1, i32, f2u(76543.001002)); + TESTINSN_un_f32("vsqrt.f32 s28, s7", s28, s7, i32, f2u(-4856.234)); + TESTINSN_un_f32("vsqrt.f32 s2, s19", s2, s19, i32,f2u(87.098217)); + TESTINSN_un_f32("vsqrt.f32 s8, s7", s8, s7, i32, f2u(-122156.2)); + + printf("---- VCVT (integer <-> fp) ----\n"); + TESTINSN_un_f32("vcvt.u32.f32 s0, s1", s0, s1, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.u32.f32 s10, s11", s10, s11, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.u32.f32 s15, s4", s15, s4, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.u32.f32 s25, s24", s25, s24, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.u32.f32 s19, s21", s19, s21, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.u32.f32 s12, s8", s12, s8, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.u32.f32 s12, s18", s12, s18, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.u32.f32 s30, s1", s30, s1, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.u32.f32 s11, s1", s11, s1, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.u32.f32 s21, s12", s21, s12, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.u32.f32 s20, s11", s20, s11, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.s32.f32 s29, s13", s29, s13, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.s32.f32 s9, s19", s9, s19, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.s32.f32 s0, s17", s0, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.s32.f32 s0, s1", s0, s1, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.s32.f32 s30, s11", s30, s11, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.s32.f32 s20, s21", s20, s21, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.s32.f32 s15, s14", s15, s14, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.s32.f32 s15, s24", s15, s24, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.s32.f32 s15, s29", s15, s29, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.s32.f32 s12, s31", s12, s31, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.s32.f32 s1, s8", s1, s8, i32, f2u(-8.0 + 1.0/1024.0)); + + TESTINSN_un_f32("vcvt.f32.u32 s30, s1", s30, s1, i32, f2u(7)); + TESTINSN_un_f32("vcvt.f32.u32 s10, s17", s10, s17, i32, f2u(1 << 31)); + TESTINSN_un_f32("vcvt.f32.u32 s20, s1", s20, s1, i32, f2u((1U << 31) + 1)); + TESTINSN_un_f32("vcvt.f32.u32 s24, s26", s24, s26, i32, f2u((1U << 31) - 1)); + TESTINSN_un_f32("vcvt.f32.u32 s0, s14", s0, s14, i32, f2u(0x30a0bcef)); + TESTINSN_un_f32("vcvt.f32.u32 s11, s1", s11, s1, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.f32.u32 s21, s12", s21, s12, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.f32.u32 s29, s13", s29, s13, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.f32.s32 s0, s1", s0, s1, i32, f2u(7)); + TESTINSN_un_f32("vcvt.f32.s32 s30, s31", s30, s31, i32, f2u(1 << 31)); + TESTINSN_un_f32("vcvt.f32.s32 s0, s12", s0, s12, i32, f2u((1U << 31) + 1)); + TESTINSN_un_f32("vcvt.f32.s32 s10, s16", s10, s16, i32, f2u((1U << 31) - 1)); + TESTINSN_un_f32("vcvt.f32.s32 s1, s8", s1, s8, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.f32.s32 s29, s13", s29, s13, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.f32.s32 s9, s19", s9, s19, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.f32.s32 s0, s17", s0, s17, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.f32.s32 s0, s1", s0, s1, i32, f2u(-INFINITY)); + + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s0, d1", s0, d1, f2u0(3.2), f2u1(3.2)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s11, d8", s11, d8, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s8, d12", s8, d12, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s19, d7", s19, d7, f2u0(NAN), f2u1(NAN)); + TESTINSN_cvt_i32_f64("vcvt.u32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s0, d1", s0, d1, f2u0(3.2), f2u1(3.2)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s11, d8", s11, d8, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s8, d12", s8, d12, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s19, d7", s19, d7, f2u0(NAN), f2u1(NAN)); + TESTINSN_cvt_i32_f64("vcvt.s32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67)); + + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d0, s1", d0, s1, f2u(3.2)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d30, s21", d30, s21, f2u(-656.42)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d16, s12", d16, s12, f2u(870.024)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d29, s7", d29, s7, f2u(-2543.4506)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d12, s28", d12, s28, f2u(5.00003245)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d7, s5", d7, s5, f2u(-INFINITY)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d21, s20", d21, s20, f2u(INFINITY)); + TESTINSN_cvt_f64_i32("vcvt.f64.u32 d11, s11", d11, s11, f2u(NAN)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d0, s1", d0, s1, f2u(3.2)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d30, s21", d30, s21, f2u(-656.42)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d16, s12", d16, s12, f2u(870.024)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d29, s7", d29, s7, f2u(-2543.4506)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d12, s28", d12, s28, f2u(5.00003245)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d7, s5", d7, s5, f2u(-INFINITY)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d21, s20", d21, s20, f2u(INFINITY)); + TESTINSN_cvt_f64_i32("vcvt.f64.s32 d11, s11", d11, s11, f2u(NAN)); + +/* printf("---- VCVT (fixed <-> fp) ----\n"); + TESTINSN_un_f32("vcvt.u32.f32 s0, s0, #3", s0, s0, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.u32.f32 s11, s11, #1", s11, s11, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.u32.f32 s15, s15, #32", s15, s15, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.u32.f32 s4, s4, #7", s4, s4, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.u32.f32 s6, s6, #4", s6, s6, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.u32.f32 s12, s12, #3", s12, s12, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.u32.f32 s8, s8, #3", s8, s8, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.u32.f32 s30, s30, #3", s30, s30, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.u32.f32 s20, s20, #3", s20, s20, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.u32.f32 s13, s13, #6", s13, s13, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.u32.f32 s16, s16, #3", s16, s16, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.s32.f32 s1, s1, #5", s1, s1, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.s32.f32 s21, s21, #1", s21, s21, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.s32.f32 s17, s17, #8", s17, s17, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.s32.f32 s27, s27, #2", s27, s27, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.s32.f32 s15, s15, #1", s15, s15, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.s32.f32 s8, s8, #2", s8, s8, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.s32.f32 s31, s31, #2", s31, s31, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.s32.f32 s10, s10, #3", s10, s10, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.s32.f32 s13, s13, #9", s13, s13, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.s32.f32 s22, s22, #3", s22, s22, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.s32.f32 s1, s1, #7", s1, s1, i32, f2u(NAN)); + + TESTINSN_un_f32("vcvt.f32.u32 s0, s0, #3", s0, s0, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.f32.u32 s11, s11, #1", s11, s11, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.f32.u32 s15, s15, #32", s15, s15, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.f32.u32 s4, s4, #7", s4, s4, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.f32.u32 s6, s6, #4", s6, s6, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.f32.u32 s12, s12, #3", s12, s12, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.f32.u32 s8, s8, #3", s8, s8, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.f32.u32 s30, s30, #3", s30, s30, i32, f2u(NAN)); + TESTINSN_un_f32("vcvt.f32.u32 s20, s20, #3", s20, s20, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.f32.u32 s13, s13, #6", s13, s13, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.f32.u32 s16, s16, #3", s16, s16, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.f32.s32 s1, s1, #5", s1, s1, i32, f2u(3.2)); + TESTINSN_un_f32("vcvt.f32.s32 s21, s21, #1", s21, s21, i32, f2u(3e22)); + TESTINSN_un_f32("vcvt.f32.s32 s17, s17, #8", s17, s17, i32, f2u(3e9)); + TESTINSN_un_f32("vcvt.f32.s32 s27, s27, #2", s27, s27, i32, f2u(-0.5)); + TESTINSN_un_f32("vcvt.f32.s32 s15, s15, #1", s15, s15, i32, f2u(-7.1)); + TESTINSN_un_f32("vcvt.f32.s32 s8, s8, #2", s8, s8, i32, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_f32("vcvt.f32.s32 s31, s31, #2", s31, s31, i32, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_f32("vcvt.f32.s32 s10, s10, #3", s10, s10, i32, f2u(0.0)); + TESTINSN_un_f32("vcvt.f32.s32 s13, s13, #9", s13, s13, i32, f2u(INFINITY)); + TESTINSN_un_f32("vcvt.f32.s32 s22, s22, #3", s22, s22, i32, f2u(-INFINITY)); + TESTINSN_un_f32("vcvt.f32.s32 s1, s1, #7", s1, s1, i32, f2u(NAN)); + */ + + printf("---- VCVT (single <-> double) ----\n"); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d0, s1", d0, s1, f2u(3.2)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d29, s21", d29, s21, f2u(234.65)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d16, s30", d16, s30, f2u(-700.63)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d11, s7", d11, s7, f2u(8.0 - 1.0/1024.0)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d30, s3", d30, s3, f2u(-8.0 + 1.0/1024.0)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d7, s19", d7, s19, f2u(12.43303)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d2, s11", d2, s11, f2u(65.4235)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d9, s21", d9, s21, f2u(NAN)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d17, s29", d17, s29, f2u(-INFINITY)); + TESTINSN_un_cvt_ds("vcvt.f64.f32 d19, s0", d19, s0, f2u(INFINITY)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s0, d1", s0, d1, f2u0(3.2), f2u1(3.2)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s29, d21", s29, d21, f2u0(234.65), f2u1(234.65)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s16, d30", s16, d30, f2u0(-700.63), f2u1(-700.63)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s11, d7", s11, d7, f2u0(8.0 - 1.0/1024.0), f2u1(8.0 - 1.0/1024.0)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s30, d3", s30, d3, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s7, d19", s7, d19, f2u0(12.43303), f2u1(12.43303)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s2, d11", s2, d11, f2u0(65.4235), f2u1(65.4235)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s9, d21", s9, d21, f2u0(NAN), f2u1(NAN)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s17, d29", s17, d29, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_un_cvt_sd("vcvt.f32.f64 s19, d0", s19, d0, f2u0(INFINITY), f2u1(INFINITY)); + + printf("---- VCMP ----\n"); + TESTINSN_cmp_f64("vcmp.f64 d0, d19", d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245)); + TESTINSN_cmp_f64("vcmp.f64 d11, d16", d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5)); + TESTINSN_cmp_f64("vcmp.f64 d21, d30", d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5)); + TESTINSN_cmp_f64("vcmp.f64 d7, d28", d7, f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3)); + TESTINSN_cmp_f64("vcmp.f64 d29, d3", d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45)); + TESTINSN_cmp_f64("vcmp.f64 d3, d22", d3, f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0)); + TESTINSN_cmp_f64("vcmp.f64 d3, d22", d3, f2u0(12.023), f2u1(12.023), d22, f2u0(12.023), f2u1(12.023)); + TESTINSN_cmp_f64("vcmp.f64 d3, d22", d3, f2u0(0.0), f2u1(0.0), d22, f2u0(0.0), f2u1(0.0)); + TESTINSN_cmp_f64("vcmp.f64 d9, d2", d9, f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmp_f64("vcmp.f64 d30, d15", d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmp_f64("vcmp.f64 d0, d19", d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245)); + TESTINSN_cmp_f64("vcmp.f64 d11, d16", d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmp_f64("vcmp.f64 d21, d30", d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7)); + TESTINSN_cmp_f64("vcmp.f64 d7, d28", d7, f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456)); + TESTINSN_cmp_f64("vcmp.f64 d29, d3", d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5)); + TESTINSN_cmp_f64("vcmp.f64 d3, d22", d3, f2u0(NAN), f2u1(NAN), d22, f2u0(-6.46524), f2u1(-6.46524)); + TESTINSN_cmp_f64("vcmp.f64 d9, d2", d9, f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56)); + TESTINSN_cmp_f64("vcmp.f64 d30, d15", d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5)); + TESTINSN_cmp_f64("vcmpe.f64 d0, d19", d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245)); + TESTINSN_cmp_f64("vcmpe.f64 d11, d16", d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5)); + TESTINSN_cmp_f64("vcmpe.f64 d11, d16", d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(NAN), f2u1(NAN)); + TESTINSN_cmp_f64("vcmpe.f64 d21, d30", d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5)); + TESTINSN_cmp_f64("vcmpe.f64 d7, d28", d7, f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3)); + TESTINSN_cmp_f64("vcmpe.f64 d29, d3", d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45)); + TESTINSN_cmp_f64("vcmpe.f64 d3, d22", d3, f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0)); + TESTINSN_cmp_f64("vcmpe.f64 d9, d2", d9, f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmp_f64("vcmpe.f64 d30, d15", d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmp_f64("vcmpe.f64 d0, d19", d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245)); + TESTINSN_cmp_f64("vcmpe.f64 d11, d16", d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmp_f64("vcmpe.f64 d21, d30", d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7)); + TESTINSN_cmp_f64("vcmpe.f64 d7, d28", d7, f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456)); + TESTINSN_cmp_f64("vcmpe.f64 d29, d3", d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5)); + TESTINSN_cmp_f64("vcmpe.f64 d3, d22", d3, f2u0(4624.5), f2u1(4624.5), d22, f2u0(-6.46524), f2u1(-6.46524)); + TESTINSN_cmp_f64("vcmpe.f64 d9, d2", d9, f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56)); + TESTINSN_cmp_f64("vcmpe.f64 d30, d15", d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5)); + + TESTINSN_cmp_f32("vcmp.f32 s0, s19", s0, f2u(-3.4567), s19, f2u(-2.6245)); + TESTINSN_cmp_f32("vcmp.f32 s11, s16", s11, f2u(23475.45), s16, f2u(3425.5)); + TESTINSN_cmp_f32("vcmp.f32 s3, s22", s3, f2u(2.0), s22, f2u(2.0)); + TESTINSN_cmp_f32("vcmp.f32 s0, s19", s0, f2u(-3.4567), s19, f2u(-2.6245)); + TESTINSN_cmp_f32("vcmp.f32 s11, s16", s11, f2u(23475.45), s16, f2u(3425.5)); + TESTINSN_cmp_f32("vcmp.f32 s21, s30", s21, f2u(-4524.5), s30, f2u(-452345.5)); + TESTINSN_cmp_f32("vcmp.f32 s7, s28", s7, f2u(425.5), s28, f2u(-456.3)); + TESTINSN_cmp_f32("vcmp.f32 s29, s3", s29, f2u(INFINITY), s3, f2u(34562.45)); + TESTINSN_cmp_f32("vcmp.f32 s3, s22", s3, f2u(12.023), s22, f2u(12.023)); + TESTINSN_cmp_f32("vcmp.f32 s3, s22", s3, f2u(0.0), s22, f2u(0.0)); + TESTINSN_cmp_f32("vcmp.f32 s9, s2", s9, f2u(INFINITY), s2, f2u(INFINITY)); + TESTINSN_cmp_f32("vcmp.f32 s30, s15", s30, f2u(-INFINITY),s15, f2u(-INFINITY)); + TESTINSN_cmp_f32("vcmp.f32 s0, s19", s0, f2u(-3.4567), s19, f2u(-2.6245)); + TESTINSN_cmp_f32("vcmp.f32 s11, s16", s11, f2u(-5463.7), s16, f2u(-INFINITY)); + TESTINSN_cmp_f32("vcmp.f32 s21, s30", s21, f2u(-INFINITY),s30, f2u(86.7)); + TESTINSN_cmp_f32("vcmp.f32 s7, s28", s7, f2u(INFINITY), s28, f2u(-8567.456)); + TESTINSN_cmp_f32("vcmp.f32 s29, s3", s29, f2u(-524.4), s3, f2u(654.5)); + TESTINSN_cmp_f32("vcmp.f32 s3, s22", s3, f2u(NAN), s22, f2u(-6.46524)); + TESTINSN_cmp_f32("vcmp.f32 s9, s2", s9, f2u(56.563), s2, f2u(56.56)); + TESTINSN_cmp_f32("vcmp.f32 s30, s15", s30, f2u(5365.60001), s15, f2u(56763.5)); + TESTINSN_cmp_f32("vcmpe.f32 s0, s19", s0, f2u(-3.4567), s19, f2u(-2.6245)); + TESTINSN_cmp_f32("vcmpe.f32 s11, s16", s11, f2u(23475.45), s16, f2u(3425.5)); + TESTINSN_cmp_f32("vcmpe.f32 s11, s16", s11, f2u(23475.45), s16, f2u(NAN)); + TESTINSN_cmp_f32("vcmpe.f32 s21, s30", s21, f2u(-4524.5), s30, f2u(-452345.5)); + TESTINSN_cmp_f32("vcmpe.f32 s7, s28", s7, f2u(425.5), s28, f2u(-456.3)); + TESTINSN_cmp_f32("vcmpe.f32 s29, s3", s29, f2u(INFINITY), s3, f2u(34562.45)); + TESTINSN_cmp_f32("vcmpe.f32 s3, s22", s3, f2u(2.0), s22, f2u(2.0)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(INFINITY), s2, f2u(INFINITY)); + TESTINSN_cmp_f32("vcmpe.f32 s30, s15", s30, f2u(-INFINITY), s15, f2u(-INFINITY)); + TESTINSN_cmp_f32("vcmpe.f32 s0, s19", s0, f2u(-3.4567), s19, f2u(-2.6245)); + TESTINSN_cmp_f32("vcmpe.f32 s11, s16", s11, f2u(-5463.7), s16, f2u(-INFINITY)); + TESTINSN_cmp_f32("vcmpe.f32 s21, s30", s21, f2u(-INFINITY), s30, f2u(86.7)); + TESTINSN_cmp_f32("vcmpe.f32 s7, s28", s7, f2u(INFINITY), s28, f2u(-8567.456)); + TESTINSN_cmp_f32("vcmpe.f32 s29, s3", s29, f2u(-524.4), s3, f2u(654.5)); + TESTINSN_cmp_f32("vcmpe.f32 s3, s22", s3, f2u(4624.5), s22, f2u(-6.46524)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(56.563), s2, f2u(56.56)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(0.0), s2, f2u(56.56)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(10.0), s2, f2u(0.0)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(0.0), s2, f2u(0.0)); + TESTINSN_cmp_f32("vcmpe.f32 s9, s2", s9, f2u(0.0), s2, f2u(0.0)); + + printf("---- VCMP (zero) ----\n"); + TESTINSN_cmpz_f64("vcmp.f64 d0", d0, f2u0(-3.4567), f2u1(-3.4567)); + TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(23475.45), f2u1(23475.45)); + TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5)); + TESTINSN_cmpz_f64("vcmp.f64 d7", d7, f2u0(425.5), f2u1(425.5)); + TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmp.f64 d3", d3, f2u0(2.0), f2u1(2.0)); + TESTINSN_cmpz_f64("vcmp.f64 d3", d3, f2u0(0.0), f2u1(0.0)); + TESTINSN_cmpz_f64("vcmp.f64 d9", d9, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmpz_f64("vcmp.f64 d0", d0, f2u0(-3.4567), f2u1(-3.4567)); + TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7)); + TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmpz_f64("vcmp.f64 d7", d7, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(-524.4), f2u1(-524.4)); + TESTINSN_cmpz_f64("vcmp.f64 d3", d3, f2u0(4624.5), f2u1(4624.5)); + TESTINSN_cmpz_f64("vcmp.f64 d9", d9, f2u0(NAN), f2u1(NAN)); + TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001)); + + TESTINSN_cmpz_f64("vcmpe.f64 d0", d0, f2u0(-3.4567), f2u1(-3.4567)); + TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(23475.45), f2u1(23475.45)); + TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5)); + TESTINSN_cmpz_f64("vcmpe.f64 d7", d7, f2u0(425.5), f2u1(425.5)); + TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmpe.f64 d3", d3, f2u0(2.0), f2u1(2.0)); + TESTINSN_cmpz_f64("vcmpe.f64 d3", d3, f2u0(0.0), f2u1(0.0)); + TESTINSN_cmpz_f64("vcmpe.f64 d9", d9, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmpz_f64("vcmpe.f64 d0", d0, f2u0(-3.4567), f2u1(-3.4567)); + TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7)); + TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY)); + TESTINSN_cmpz_f64("vcmpe.f64 d7", d7, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(-524.4), f2u1(-524.4)); + TESTINSN_cmpz_f64("vcmpe.f64 d3", d3, f2u0(4624.5), f2u1(4624.5)); + TESTINSN_cmpz_f64("vcmpe.f64 d9", d9, f2u0(NAN), f2u1(NAN)); + TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001)); + + TESTINSN_cmpz_f32("vcmp.f32 s0", s0, f2u(-3.4567)); + TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(23475.45)); + TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-4524.5)); + TESTINSN_cmpz_f32("vcmp.f32 s7", s7, f2u(425.5)); + TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmp.f32 s3", s3, f2u(2.0)); + TESTINSN_cmpz_f32("vcmp.f32 s3", s3, f2u(0.0)); + TESTINSN_cmpz_f32("vcmp.f32 s9", s9, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(-INFINITY)); + TESTINSN_cmpz_f32("vcmp.f32 s0", s0, f2u(-3.4567)); + TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(-5463.7)); + TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-INFINITY)); + TESTINSN_cmpz_f32("vcmp.f32 s7", s7, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(-524.4)); + TESTINSN_cmpz_f32("vcmp.f32 s3", s3, f2u(4624.5)); + TESTINSN_cmpz_f32("vcmp.f32 s9", s9, f2u(NAN)); + TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(5365.60001)); + TESTINSN_cmpz_f32("vcmpe.f32 s0", s0, f2u(-3.4567)); + TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(23475.45)); + TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-4524.5)); + TESTINSN_cmpz_f32("vcmpe.f32 s7", s7, f2u(425.5)); + TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmpe.f32 s3", s3, f2u(2.0)); + TESTINSN_cmpz_f32("vcmpe.f32 s3", s3, f2u(0.0)); + TESTINSN_cmpz_f32("vcmpe.f32 s9", s9, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(-INFINITY)); + TESTINSN_cmpz_f32("vcmpe.f32 s0", s0, f2u(-3.4567)); + TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(-5463.7)); + TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-INFINITY)); + TESTINSN_cmpz_f32("vcmpe.f32 s7", s7, f2u(INFINITY)); + TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(-524.4)); + TESTINSN_cmpz_f32("vcmpe.f32 s3", s3, f2u(4624.5)); + TESTINSN_cmpz_f32("vcmpe.f32 s9", s9, f2u(NAN)); + TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(5365.60001)); + + int numbers[8] ={ 0xaa0, 0xbb1, 0xcc2, 0xdd3, 0x11a, 0x22b, 0x33c, 0x44d }; + + printf("---- VLDR ----\n"); + TESTINSN_vldr_f64("vldr d9, [r6, #+4]", d9, r6, (long) numbers + 8, 4); + TESTINSN_vldr_f64("vldr d16, [r9, #-4]", d16, r9, (long) numbers + 8, -4); + TESTINSN_vldr_f64("vldr d30, [r12]", d30, r12, (long) numbers + 8, 0); + TESTINSN_vldr_f64("vldr d22, [r9, #+8]", d22, r9, (long) numbers + 8, 8); + TESTINSN_vldr_f64("vldr d29, [r2, #-8]", d29, r2, (long) numbers + 8, -8); + TESTINSN_vldr_f64("vldr d8, [r8, #+8]", d8, r8, (long) numbers + 8, 8); + TESTINSN_vldr_f64("vldr d11, [r12, #-4]", d11, r12, (long) numbers + 8, -4); + TESTINSN_vldr_f64("vldr d18, [r3]", d18, r3, (long) numbers + 8, 0); + TESTINSN_vldr_f64("vldr d5, [r10, #+8]", d5, r10, (long) numbers + 8, 8); + TESTINSN_vldr_f64("vldr d17, [r10]", d17, r10, (long) numbers + 8, 0); + TESTINSN_vldr_f64("vldr d9, [r9, #-4]", d9, r9, (long) numbers + 8, -4); + TESTINSN_vldr_f64("vldr d29, [r4, #-8]", d29, r4, (long) numbers + 8, -8); + TESTINSN_vldr_f64("vldr d21, [r6, #+4]", d21, r6, (long) numbers + 8, 4); + TESTINSN_vldr_f64("vldr d8, [r4]", d8, r4, (long) numbers + 8, 0); + TESTINSN_vldr_f64("vldr d19, [r0, #-8]", d19, r0, (long) numbers + 8, -8); + TESTINSN_vldr_f64("vldr d10, [r3, #+4]", d10, r3, (long) numbers + 8, 4); + TESTINSN_vldr_f32("vldr s10, [r3, #+4]", s10, r3, (long) numbers + 8, 4); + TESTINSN_vldr_f32("vldr s9, [r6, #+4]", s9, r6, (long) numbers + 8, 4); + TESTINSN_vldr_f32("vldr s16, [r9, #-4]", s16, r9, (long) numbers + 8, -4); + TESTINSN_vldr_f32("vldr s30, [r12]", s30, r12, (long) numbers + 8, 0); + TESTINSN_vldr_f32("vldr s22, [r9, #+8]", s22, r9, (long) numbers + 8, 8); + TESTINSN_vldr_f32("vldr s29, [r2, #-8]", s29, r2, (long) numbers + 8, -8); + TESTINSN_vldr_f32("vldr s8, [r8, #+8]", s8, r8, (long) numbers + 8, 8); + TESTINSN_vldr_f32("vldr s11, [r12, #-4]", s11, r12, (long) numbers + 8, -4); + TESTINSN_vldr_f32("vldr s18, [r3]", s18, r3, (long) numbers + 8, 0); + TESTINSN_vldr_f32("vldr s5, [r10, #+8]", s5, r10, (long) numbers + 8, 8); + TESTINSN_vldr_f32("vldr s17, [r10]", s17, r10, (long) numbers + 8, 0); + TESTINSN_vldr_f32("vldr s9, [r9, #-4]", s9, r9, (long) numbers + 8, -4); + TESTINSN_vldr_f32("vldr s29, [r4, #-8]", s29, r4, (long) numbers + 8, -8); + TESTINSN_vldr_f32("vldr s21, [r6, #+4]", s21, r6, (long) numbers + 8, 4); + TESTINSN_vldr_f32("vldr s8, [r4]", s8, r4, (long) numbers + 8, 0); + TESTINSN_vldr_f32("vldr s19, [r0, #-8]", s19, r0, (long) numbers + 8, -8); + TESTINSN_vldr_f32("vldr s10, [r3, #+4]", s10, r3, (long) numbers + 8, 4); + + printf("---- VLDM (Increment After, writeback) ----\n"); + TESTINSN_VLDMIAWB(r6, d17, d7); + TESTINSN_VLDMIAWB(r4, d11, d23); + TESTINSN_VLDMIAWB(r9, d29, d12); + TESTINSN_VLDMIAWB(r9, d0, d30); + TESTINSN_VLDMIAWB(r12, d8, d24); + TESTINSN_VLDMIAWB(r3, d27, d13); + TESTINSN_VLDMIAWB(r10, d20, d30); + TESTINSN_VLDMIAWB(r0, d0, d1); + TESTINSN_VLDMIAWB(r8, d15, d19); + TESTINSN_VLDMIAWB(r3, d31, d30); + TESTINSN_VLDMIAWB(r10, d6, d23); + TESTINSN_VLDMIAWB(r8, d8, d16); + TESTINSN_VLDMIAWB(r9, d13, d11); + TESTINSN_VLDMIAWB(r1, d3, d8); + TESTINSN_VLDMIAWB(r2, d4, d8); + TESTINSN_VLDMIAWB(r3, d9, d27); + + printf("---- VSTR ----\n"); + TESTINSN_vstr64("vstr d9, [r6, #+4]", d9, 0xa0, r6, (long) numbers + 8, 4); + TESTINSN_vstr64("vstr d16, [r9, #-4]", d16, 0xb1, r9, (long) numbers + 8, -4); + TESTINSN_vstr64("vstr d30, [r12]", d30, 0xc2, r12, (long) numbers + 8, 0); + TESTINSN_vstr64("vstr d22, [r9, #+8]", d22, 0xd4, r9, (long) numbers + 8, 8); + TESTINSN_vstr64("vstr d29, [r2, #-8]", d29, 0x00, r2, (long) numbers + 8, -8); + TESTINSN_vstr64("vstr d8, [r8, #+8]", d8, 0x11, r8, (long) numbers + 8, 8); + TESTINSN_vstr64("vstr d11, [r12, #-4]", d11, 0x22, r12, (long) numbers + 8, -4); + TESTINSN_vstr64("vstr d18, [r3]", d18, 0x33, r3, (long) numbers + 8, 0); + TESTINSN_vstr64("vstr d5, [r10, #+8]", d5, 0x99, r10, (long) numbers + 8, 8); + TESTINSN_vstr64("vstr d17, [r10]", d17, 0x77, r10, (long) numbers + 8, 0); + TESTINSN_vstr64("vstr d9, [r9, #-4]", d9, 0xee, r9, (long) numbers + 8, -4); + TESTINSN_vstr64("vstr d29, [r4, #-8]", d29, 0xff, r4, (long) numbers + 8, -8); + TESTINSN_vstr64("vstr d10, [r3, #+4]", d10, 0xbc, r3, (long) numbers + 8, 4); + TESTINSN_vstr64("vstr d21, [r6, #+4]", d21, 0x48, r6, (long) numbers + 8, 4); + TESTINSN_vstr64("vstr d8, [r4]", d8, 0x1f, r4, (long) numbers + 8, 0); + TESTINSN_vstr64("vstr d19, [r0, #-8]", d19, 0xf9, r0, (long) numbers + 8, -8); + TESTINSN_vstr32("vstr s9, [r6, #+4]", s9, r6, (long) numbers + 8, 4); + TESTINSN_vstr32("vstr s21, [r9, #-4]", s21, r9, (long) numbers + 8, -4); + TESTINSN_vstr32("vstr s4, [r3, #+8]", s4, r3, (long) numbers + 8, 8); + TESTINSN_vstr32("vstr s19, [r4, #-8]", s19, r4, (long) numbers + 8, -8); + TESTINSN_vstr32("vstr s29, [r8]", s29, r8, (long) numbers + 8, 0); + TESTINSN_vstr32("vstr s8, [r12]", s8, r12, (long) numbers + 8, 0); + TESTINSN_vstr32("vstr s16, [r0, #+4]", s16, r0, (long) numbers + 8, 4); + TESTINSN_vstr32("vstr s0, [r8, #-4]", s0, r8, (long) numbers + 8, -4); + TESTINSN_vstr32("vstr s3, [r9, #+8]", s3, r9, (long) numbers + 8, 8); + TESTINSN_vstr32("vstr s9, [r10, #-8]", s9, r10, (long) numbers + 8, -8); + TESTINSN_vstr32("vstr s11, [r2]", s11, r2, (long) numbers + 8, 0); + TESTINSN_vstr32("vstr s30, [r0]", s30, r0, (long) numbers + 8, 0); + + printf("---- VSTM (Increment After, no writeback) ----\n"); + TESTINSN_VSTMIAnoWB("vstmia r6, {d21}", r6, d21, 0xab); + TESTINSN_VSTMIAnoWB("vstmia r1, {d1}", r1, d1, 0x13); + TESTINSN_VSTMIAnoWB("vstmia r9, {d2}", r9, d2, 0x78); + TESTINSN_VSTMIAnoWB("vstmia r4, {d30}", r4, d30, 0x0); + TESTINSN_VSTMIAnoWB("vstmia r12, {d23}", r12, d23, 0xb9); + TESTINSN_VSTMIAnoWB("vstmia r6, {d16}", r6, d16, 0xa6); + TESTINSN_VSTMIAnoWB("vstmia r6, {d8}", r6, d8, 0x7f); + TESTINSN_VSTMIAnoWB("vstmia r6, {d27}", r6, d27, 0xff); + TESTINSN_VSTMIAnoWB("vstmia r5, {d11}", r5, d11, 0x32); + TESTINSN_VSTMIAnoWB("vstmia r6, {d4}", r6, d4, 0x10); + TESTINSN_VSTMIAnoWB("vstmia r10, {d9}", r10, d9, 0x4f); + TESTINSN_VSTMIAnoWB("vstmia r9, {d29}", r9, d29, 0x97); + TESTINSN_VSTMIAnoWB("vstmia r10, {d17}", r10, d17, 0xaa); + TESTINSN_VSTMIAnoWB("vstmia r5, {d5}", r5, d5, 0x2b); + TESTINSN_VSTMIAnoWB("vstmia r9, {d7}", r9, d7, 0x7b); + TESTINSN_VSTMIAnoWB("vstmia r3, {d16}", r3, d16, 0x11); + TESTINSN_VSTMIAnoWB32("vstmia r6, {s21}", r6, s21, 0xab); + TESTINSN_VSTMIAnoWB32("vstmia r1, {s1}", r1, s1, 0x13); + TESTINSN_VSTMIAnoWB32("vstmia r9, {s2}", r9, s2, 0x78); + TESTINSN_VSTMIAnoWB32("vstmia r4, {s30}", r4, s30, 0x0); + TESTINSN_VSTMIAnoWB32("vstmia r12, {s23}", r12, s23, 0xb9); + TESTINSN_VSTMIAnoWB32("vstmia r6, {s16}", r6, s16, 0xa613451d); + TESTINSN_VSTMIAnoWB32("vstmia r6, {s8}", r6, s8, 0x7f); + TESTINSN_VSTMIAnoWB32("vstmia r6, {s27}", r6, s27, f2u(-INFINITY)); + TESTINSN_VSTMIAnoWB32("vstmia r5, {s11}", r5, s11, f2u(NAN)); + TESTINSN_VSTMIAnoWB32("vstmia r6, {s4}", r6, s4, 0x10ccb); + TESTINSN_VSTMIAnoWB32("vstmia r10, {s9}", r10, s9, 0x4f543); + TESTINSN_VSTMIAnoWB32("vstmia r9, {s29}", r9, s29, 0x97001a); + TESTINSN_VSTMIAnoWB32("vstmia r10, {s17}", r10, s17, 0xaa45f); + TESTINSN_VSTMIAnoWB32("vstmia r5, {s5}", r5, s5, f2u(NAN)); + TESTINSN_VSTMIAnoWB32("vstmia r9, {s7}", r9, s7, f2u(-INFINITY)); + TESTINSN_VSTMIAnoWB32("vstmia r3, {s16}", r3, s16, f2u(INFINITY)); + + printf("---- VSTM (Increment After, writeback) ----\n"); + TESTINSN_VSTMIAWB(r6, d21, d2); + TESTINSN_VSTMIAWB(r1, d1, d5); + TESTINSN_VSTMIAWB(r9, d2, d17); + TESTINSN_VSTMIAWB(r4, d30, d21); + TESTINSN_VSTMIAWB(r12, d23, d29); + TESTINSN_VSTMIAWB(r6, d16, d30); + TESTINSN_VSTMIAWB(r6, d8, d12); + TESTINSN_VSTMIAWB(r6, d27, d24); + TESTINSN_VSTMIAWB(r5, d11, d13); + TESTINSN_VSTMIAWB(r6, d4, d31); + TESTINSN_VSTMIAWB(r10, d9, d27); + TESTINSN_VSTMIAWB(r9, d29, d17); + TESTINSN_VSTMIAWB(r10, d17, d7); + TESTINSN_VSTMIAWB(r5, d5, d8); + TESTINSN_VSTMIAWB(r9, d7, d16); + TESTINSN_VSTMIAWB(r3, d16, d21); + TESTINSN_VSTMIAWB32(r6, s21, s2); + TESTINSN_VSTMIAWB32(r12, s23, s21); + TESTINSN_VSTMIAWB32(r3, s3, s3); + TESTINSN_VSTMIAWB32(r10, s19, s5); + TESTINSN_VSTMIAWB32(r2, s3, s12); + TESTINSN_VSTMIAWB32(r8, s7, s10); + TESTINSN_VSTMIAWB32(r4, s30, s13); + TESTINSN_VSTMIAWB32(r6, s17, s17); + TESTINSN_VSTMIAWB32(r9, s11, s21); + TESTINSN_VSTMIAWB32(r9, s8, s30); + TESTINSN_VSTMIAWB32(r3, s12, s9); + TESTINSN_VSTMIAWB32(r6, s6, s11); + TESTINSN_VSTMIAWB32(r8, s17, s12); + TESTINSN_VSTMIAWB32(r9, s12, s12); + TESTINSN_VSTMIAWB32(r4, s11, s11); + + printf("---- VLDM (Decrement Before) ----\n"); + TESTINSN_VLDMDB(r4, d11, d23); + TESTINSN_VLDMDB(r9, d29, d12); + TESTINSN_VLDMDB(r9, d0, d30); + TESTINSN_VLDMDB(r12, d8, d24); + TESTINSN_VLDMDB(r3, d27, d13); + TESTINSN_VLDMDB(r6, d17, d7); + TESTINSN_VLDMDB(r10, d20, d30); + TESTINSN_VLDMDB(r0, d0, d1); + TESTINSN_VLDMDB(r8, d15, d19); + TESTINSN_VLDMDB(r3, d31, d30); + TESTINSN_VLDMDB(r10, d6, d23); + TESTINSN_VLDMDB(r8, d8, d16); + TESTINSN_VLDMDB(r9, d13, d11); + TESTINSN_VLDMDB(r1, d3, d8); + TESTINSN_VLDMDB(r2, d4, d8); + TESTINSN_VLDMDB(r3, d9, d27); + + printf("----- VMOV (immediate) -----\n"); + TESTINSN_vmovf32_imm("vmov s0", s0, 0xbe880000); + TESTINSN_vmovf32_imm("vmov s1", s1, 0x3fa80000); + TESTINSN_vmovf32_imm("vmov s2", s2, 0xbf080000); + TESTINSN_vmovf32_imm("vmov s5", s5, 0x3eb80000); + TESTINSN_vmovf32_imm("vmov s7", s7, 0xbff80000); + TESTINSN_vmovf32_imm("vmov s10", s10, 0xbe280000); + TESTINSN_vmovf32_imm("vmov s12", s12, 0x40000000); + TESTINSN_vmovf32_imm("vmov s13", s13, 0x3e880000); + TESTINSN_vmovf32_imm("vmov s14", s14, 0xbee80000); + TESTINSN_vmovf32_imm("vmov s15", s15, 0xc0b80000); + + printf("----- VMOV (ARM core register and single register) -----\n"); + TESTINSN_vmov_core_single("vmov r12, s12", r12, s12, 0x4000aad); + TESTINSN_vmov_core_single("vmov r2, s5", r2, s5, 0xab45e7); + TESTINSN_vmov_core_single("vmov r5, s15", r5, s15, 0x00add12); + TESTINSN_vmov_core_single("vmov r8, s11", r8, s11, 0x876450ff); + TESTINSN_vmov_core_single("vmov r9, s5", r9, s5, 0xffff); + TESTINSN_vmov_core_single("vmov r10, s9", r10, s9, 0x87d34f); + TESTINSN_vmov_core_single("vmov r9, s10", r9, s10, 0x00ffff); + TESTINSN_vmov_core_single("vmov r6, s8", r6, s8, 0xad4f8); + TESTINSN_vmov_core_single("vmov r4, s14", r4, s14, 0x920b8cf); + TESTINSN_vmov_core_single("vmov r3, s7", r3, s7, f2u(NAN)); + TESTINSN_vmov_core_single("vmov r2, s0", r2, s0, f2u(-INFINITY)); + TESTINSN_vmov_core_single("vmov r0, s1", r0, s1, f2u(INFINITY)); + TESTINSN_vmov_single_core("vmov s2, r9", s2, r9, 0x9465a); + TESTINSN_vmov_single_core("vmov s14, r0", s14, r0, 0xd0b87a); + TESTINSN_vmov_single_core("vmov s4, r2", s4, r2, 0x452bbc8); + TESTINSN_vmov_single_core("vmov s7, r8", s7, r8, 0xa7cb3d); + TESTINSN_vmov_single_core("vmov s9, r4", s9, r4, 0xdd8ec); + TESTINSN_vmov_single_core("vmov s10, r12", s10, r12, 0x8a7b6e); + TESTINSN_vmov_single_core("vmov s13, r9", s13, r9, 0x4b00a); + TESTINSN_vmov_single_core("vmov s3, r3", s3, r3, 0x0023455); + TESTINSN_vmov_single_core("vmov s5, r5", s5, r5, f2u(INFINITY)); + TESTINSN_vmov_single_core("vmov s8, r6", s8, r6, f2u(-INFINITY)); + TESTINSN_vmov_single_core("vmov s4, r0", s4, r0, 0x000acb45); + TESTINSN_vmov_single_core("vmov s0, r6", s0, r6, f2u(NAN)); + + printf("----- VMOV (ARM two core registers and two single registers) -----\n"); + TESTINSN_vmov_2single_2core("vmov s0, s1, r6, r9", s0, s1, r6, r9, 0x43252acc, 0xabcc4); + TESTINSN_vmov_2single_2core("vmov s0, s1, r9, r9", s0, s1, r9, r9, 0x43252acc, 0xabcc4); + TESTINSN_vmov_2single_2core("vmov s30, s31, r9, r1", s30, s31, r9, r1, 0xaa2e2acc, 0x00337); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(-INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(0)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(NAN)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(-INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(0)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(NAN)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(-INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(0)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(-INFINITY)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(0)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(NAN)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(0)); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN) - 1); + TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN) - 1); + TESTINSN_vmov_2core_2single("vmov r12, r9, s12, s13", r12, r9, s12, s13, 0x4000aad, 0xaffff); + TESTINSN_vmov_2core_2single("vmov r0, r9, s12, s13", r0, r9, s12, s13, 0x40ee56d, 0x123ff); + TESTINSN_vmov_2core_2single("vmov r12, r9, s12, s13", r12, r9, s12, s13, 0x4000aad, 0xaffff); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(-INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(0)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(NAN)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(-INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(0)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(NAN)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(-INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(0)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(-INFINITY)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(0)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(NAN)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(0)); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN) - 1); + TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN) - 1); + + printf("----- VMOV (ARM two core registers and double register) -----\n"); + TESTINSN_vmov_double_2core("vmov d3, r6, r9", d3, r6, r9, 0x43252acc, 0x45bbd); + TESTINSN_vmov_double_2core("vmov d4, r10, r2", d4, r10, r2, 0x1243b4, 0x237ffb); + TESTINSN_vmov_double_2core("vmov d21, r1, r6", d21, r1, r6, 0x30cc4, 0x314c043); + TESTINSN_vmov_double_2core("vmov d30, r9, r9", d30, r9, r9, 0x08ddf, 0x87bbca); + TESTINSN_vmov_double_2core("vmov d29, r3, r5", d29, r3, r5, 0xaaa0, 0xbbb1); + TESTINSN_vmov_double_2core("vmov d16, r8, r8", d16, r8, r8, 0xaa455bb, 0x13434); + TESTINSN_vmov_double_2core("vmov d17, r12, r9", d17, r12, r9, 0x004003, 0x452bbc1); + TESTINSN_vmov_double_2core("vmov d9, r9, r0", d9, r9, r0, 0x134c, 0x41ffb6); + TESTINSN_vmov_double_2core("vmov d7, r0, r6", d7, r0, r6, 0x35425dcc, 0x0876c43); + TESTINSN_vmov_double_2core("vmov d13, r3, r9", d13, r3, r9, f2u0(NAN), f2u1(NAN)); + TESTINSN_vmov_double_2core("vmov d19, r6, r5", d19, r6, r5, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_vmov_double_2core("vmov d0, r2, r6", d0, r2, r6, f2u0(-INFINITY), f2u1(-INFINITY)); + + TESTINSN_vmov_2core_double("vmov r3, r6, d9", r3, r6, d9, 0x43252acc, 0x45bbd); + TESTINSN_vmov_2core_double("vmov r4, r10, d2", r4, r10, d2, 0x1243b4, 0x237ffb); + TESTINSN_vmov_2core_double("vmov r2, r1, d6", r2, r1, d6, 0x30cc4, 0x314c043); + TESTINSN_vmov_2core_double("vmov r0, r9, d11", r0, r9, d11, 0x08ddf, 0x87bbca); + TESTINSN_vmov_2core_double("vmov r9, r3, d5", r9, r3, d5, 0xaaa0, 0xbbb1); + TESTINSN_vmov_2core_double("vmov r10, r8, d8", r10, r8, d8, 0xaa455bb, 0x13434); + TESTINSN_vmov_2core_double("vmov r9, r12, d11", r9, r12, d11, 0x004003, 0x452bbc1); + + // ARM ARM says this is UNDEFINED, hence we don't decode it + //TESTINSN_vmov_2core_double("vmov r9, r9, d0", r9, r9, d0, 0x134c, 0x41ffb6); + + TESTINSN_vmov_2core_double("vmov r6, r0, d7", r6, r0, d7, 0x35425dcc, 0x0876c43); + TESTINSN_vmov_2core_double("vmov r12, r3, d11", r12, r3, d11, f2u0(NAN), f2u1(NAN)); + TESTINSN_vmov_2core_double("vmov r1, r6, d5", r1, r6, d5, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_vmov_2core_double("vmov r0, r2, d7", r0, r2, d7, f2u0(-INFINITY), f2u1(-INFINITY)); + + TESTINSN_vmov_2core_double("vmov r2, r9, d0", r2, r9, d0, f2u0(INFINITY), f2u1(INFINITY)); + TESTINSN_vmov_2core_double("vmov r6, r9, d10", r6, r9, d10, 0x14534c, 0x41ffb6); + TESTINSN_vmov_2core_double("vmov r0, r9, d20", r0, r9, d20, f2u0(NAN), f2u1(NAN)); + + printf("----- VPUSH, VPOP -----\n"); + TESTINSN_vpush_vpop_f32(s3, 0x00aaaaaa, s4, 0x00bbbbbb, s5, 0x00cccccc, s0, s1, s2); + TESTINSN_vpush_vpop_f32(s1, 0x000134f4, s2, 0x0870ccb3, s3, 0x00aba0f1, s9, s10, s11); + TESTINSN_vpush_vpop_f32(s3, 0x00dddddd, s4, 0x00eeeeee, s5, 0x00ffffff, s0, s1, s2); + TESTINSN_vpush_vpop_f32(s11, 0x13454c, s12, 0x341, s13, 0xaac45f, s6, s7, s8); + TESTINSN_vpush_vpop_f32(s21, 0x0, s22, f2u(NAN), s23, f2u(INFINITY), s23, s24, s25); + TESTINSN_vpush_vpop_f32(s12, 0xffffff, s13, 0xf542dd4, s14, f2u(-INFINITY), s11, s12, s13); + TESTINSN_vpush_vpop_f32(s25, 0x45cd, s26, 0xa3ccb5, s27, 0xbbcaf, s0, s1, s2); + TESTINSN_vpush_vpop_f32(s1, f2u(NAN), s2, 0xaaca3, s3, 0x876008, s6, s7, s8); + TESTINSN_vpush_vpop_f32(s9, 0x2f43, s10, f2u(INFINITY), s11, 0x3cc66a, s9, s10, s11); + TESTINSN_vpush_vpop_f32(s10, f2u(INFINITY), s11, 0x134cc5, s12, f2u(NAN), s2, s3, s4); + TESTINSN_vpush_vpop_f32(s7, 0xcc006d, s8, 0x1308c, s9, 0xabbc45, s21, s22, s23); + TESTINSN_vpush_vpop_f32(s19, f2u(-INFINITY), s20, 0x452146, s21, 0x388bbc, s4, s5, s6); + TESTINSN_vpush_vpop_f32(s16, 0x542aa, s17, 0xaddcd5, s18, 0x87acc, s18, s19, s20); + TESTINSN_vpush_vpop_f32(s22, 0x5ccb708, s23, 0x52345c, s24, 0x98745c, s12, s13, s14); + TESTINSN_vpush_vpop_f32(s24, 0x99234f, s25, 0x1aac, s26, 0x3746c, s28, s29, s30); + TESTINSN_vpush_vpop_f32(s13, 0x134ccc, s14, 0x6bb43, s15, 0x834aa, s0, s1, s2); + TESTINSN_vpush_vpop_f64(d3, 0x00aaaaaa, 0xaac3, d4, 0x00bbbbbb, 0x34ccb, d0, d1); + TESTINSN_vpush_vpop_f64(d1, 0x000134f4, 0x341531, d2, 0x0870ccb3, 0x4576bbc, d9, d10); + TESTINSN_vpush_vpop_f64(d3, 0x00dddddd, 0x13451cc, d4, 0x00eeeeee, 0x123ddc8, d0, d1); + TESTINSN_vpush_vpop_f64(d11, 0x13454c, 0x541bbc3, d12, 0x341, 0xccb5, d6, d7); + TESTINSN_vpush_vpop_f64(d21, 0x0, 0x123c33, d22, f2u0(NAN), f2u1(NAN), d23, d24); + TESTINSN_vpush_vpop_f64(d12, 0xffffff, 0x1940c, d13, 0xf542dd4, 0x788ffc, d11, d12); + TESTINSN_vpush_vpop_f64(d25, 0x45cd, 0x1309c, d26, 0xa3ccb5, 0x4588b, d0, d1); + TESTINSN_vpush_vpop_f64(d1, f2u0(NAN), f2u1(NAN), d2, 0xaaca3, 0x1120a, d6, d7); + TESTINSN_vpush_vpop_f64(d9, 0x2f43, 0x19ff9, d10, f2u0(INFINITY), f2u1(INFINITY), d9, d10); + TESTINSN_vpush_vpop_f64(d10, f2u0(INFINITY), f2u1(INFINITY), d11, 0x134cc5, 0x78cbbd, d2, d3); + TESTINSN_vpush_vpop_f64(d7, 0xcc006d, 0x28354, d8, 0x1308c, 0x1993bc, d21, d22); + TESTINSN_vpush_vpop_f64(d19, f2u0(-INFINITY), f2u1(-INFINITY), d20, 0x452146, 0x138476c, d4, d5); + TESTINSN_vpush_vpop_f64(d16, 0x542aa, 0x12dd4, d17, 0xaddcd5, 0x399cb, d18, d19); + TESTINSN_vpush_vpop_f64(d22, 0x5ccb708, 0x8009c, d23, 0x52345c, 0x29902c, d12, d13); + TESTINSN_vpush_vpop_f64(d24, 0x99234f, 0x3457ff, d25, 0x1aac, 0x1002cba, d28, d29); + TESTINSN_vpush_vpop_f64(d13, 0x134ccc, 0xfaa309, d14, 0x6bb43, 0x199cb, d0, d1); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.stdout.exp new file mode 100644 index 000000000..1f6be32ef --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.stdout.exp @@ -0,0 +1,1220 @@ +do_vldm_vstm_check: + 0x00000010 + 0x3a3b3c3d + 0x4a4b4c4d + 0x1a1b1c1d + 0x00000018 + 0x7a7b7c7d + 0x8a8b8c8d + 0x00000004 + 0x4a4b4c4d + 0x5a5b5c5d + 0x2a2b2c2d + 0x00000040 + 0xdadbdcdd + 0xeaebeced + 0xfafbfcfd + 0x0a0b0c0d + 0x0000002c + 0xcacbcccd + 0xdadbdcdd + 0xeaebeced + 0xfafbfcfd + 0x00000018 + 0x7a7b7c7d + 0x8a8b8c8d + 0x9a9b9c9d + 0xaaabacad + 0x00000010 + 0x00000010 + 0x00000018 + 0x00000030 + 0x00000030 + 0x00000038 +data: + 0x00000055 + 0x00000056 + 0x00000057 + 0x00000058 + 0x00000065 + 0x00000066 + 0x00000075 + 0x00000076 + 0x00000042 + 0x00000043 + 0x00000040 + 0x00000041 + 0x00000032 + 0x00000033 + 0x00000022 + 0x00000023 +---- VMOV (ARM core register to scalar) ---- +vmov.32 d0[0], r5 :: Dd 0x55555555 0x41500000 Dm 0x41500000 +vmov.32 d1[1], r6 :: Dd 0x00000012 0x55555555 Dm 0x00000012 +vmov.32 d20[0], r5 :: Dd 0x55555555 0x7fc00000 Dm 0x7fc00000 +vmov.32 d29[1], r6 :: Dd 0x432c0000 0x55555555 Dm 0x432c0000 +vmov.32 d30[0], r5 :: Dd 0x55555555 0x7f800000 Dm 0x7f800000 +vmov.32 d11[1], r6 :: Dd 0xff800000 0x55555555 Dm 0xff800000 +vmov.32 d18[0], r5 :: Dd 0x55555555 0x55555555 Dm 0x44234000 +vmov.32 d9[1], r6 :: Dd 0x0000000c 0x55555555 Dm 0x0000000c +vmov.16 d0[0], r5 :: Dd 0x55555555 0x5555000d Dm 0x0000000d +vmov.16 d14[1], r5 :: Dd 0x55555555 0x00005555 Dm 0x7fc00000 +vmov.16 d28[2], r6 :: Dd 0x5555000e 0x55555555 Dm 0x0000000e +vmov.16 d30[3], r1 :: Dd 0x00115555 0x55555555 Dm 0x00000011 +vmov.16 d0[0], r5 :: Dd 0x55555555 0x55550000 Dm 0x7f800000 +vmov.16 d7[1], r5 :: Dd 0x55555555 0x00005555 Dm 0xff800000 +vmov.16 d21[2], r6 :: Dd 0x5555000e 0x55555555 Dm 0x0000000e +vmov.16 d17[3], r1 :: Dd 0x00115555 0x55555555 Dm 0x00000011 +vmov.8 d0[0], r5 :: Dd 0x55555555 0x5555550d Dm 0x0000000d +vmov.8 d10[1], r5 :: Dd 0x55555555 0x55550055 Dm 0x7fc00000 +vmov.8 d20[2], r5 :: Dd 0x55555555 0x55005555 Dm 0x7f800000 +vmov.8 d30[3], r5 :: Dd 0x55555555 0x00555555 Dm 0xff800000 +vmov.8 d13[4], r5 :: Dd 0x555555d5 0x55555555 Dm 0x000000d5 +vmov.8 d17[5], r5 :: Dd 0x55553f55 0x55555555 Dm 0x0000053f +vmov.8 d24[6], r5 :: Dd 0x556f5555 0x55555555 Dm 0x0000006f +vmov.8 d29[7], r5 :: Dd 0xad555555 0x55555555 Dm 0x000000ad +---- VMOV (scalar to ARM core register) ---- +vmov.32 r5, d0[0] :: Rd 0x7fc00000 Qm (i32)0x7fc00000 +vmov.32 r6, d5[1] :: Rd 0x7f800000 Qm (i32)0x7f800000 +vmov.32 r4, d10[0] :: Rd 0xff800000 Qm (i32)0xff800000 +vmov.32 r5, d15[1] :: Rd 0x11223344 Qm (i32)0x11223344 +vmov.32 r9, d20[0] :: Rd 0x11223344 Qm (i32)0x11223344 +vmov.32 r8, d25[1] :: Rd 0x11223344 Qm (i32)0x11223344 +vmov.32 r0, d30[0] :: Rd 0x11223344 Qm (i32)0x11223344 +vmov.32 r2, d19[1] :: Rd 0x11223344 Qm (i32)0x11223344 +vmov.u16 r5, d31[0] :: Rd 0x00000000 Qm (i32)0x7fc00000 +vmov.u16 r3, d30[1] :: Rd 0x00007f80 Qm (i32)0x7f800000 +vmov.u16 r6, d21[2] :: Rd 0x00000000 Qm (i32)0xff800000 +vmov.u16 r9, d26[3] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.u16 r12, d11[0] :: Rd 0x00003344 Qm (i32)0x11223344 +vmov.u16 r0, d10[1] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.u16 r6, d1[2] :: Rd 0x00003344 Qm (i32)0x11223344 +vmov.u16 r8, d5[3] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.u8 r2, d4[0] :: Rd 0x00000000 Qm (i32)0x7fc00000 +vmov.u8 r6, d14[1] :: Rd 0x00000000 Qm (i32)0x7f800000 +vmov.u8 r9, d24[2] :: Rd 0x00000080 Qm (i32)0xff800000 +vmov.u8 r8, d31[3] :: Rd 0x00000011 Qm (i32)0x11223344 +vmov.u8 r10, d29[4] :: Rd 0x00000044 Qm (i32)0x11223344 +vmov.u8 r3, d19[5] :: Rd 0x00000033 Qm (i32)0x11223344 +vmov.u8 r12, d12[6] :: Rd 0x00000022 Qm (i32)0x11223344 +vmov.u8 r10, d18[4] :: Rd 0x00000044 Qm (i32)0x11223344 +vmov.s16 r5, d31[0] :: Rd 0x00000000 Qm (i32)0x7fc00000 +vmov.s16 r3, d30[1] :: Rd 0x00007f80 Qm (i32)0x7f800000 +vmov.s16 r6, d21[2] :: Rd 0x00000000 Qm (i32)0xff800000 +vmov.s16 r9, d26[3] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.s16 r4, d11[0] :: Rd 0x00003344 Qm (i32)0x11223344 +vmov.s16 r0, d10[1] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.s16 r6, d1[2] :: Rd 0x00003344 Qm (i32)0x11223344 +vmov.s16 r8, d5[3] :: Rd 0x00001122 Qm (i32)0x11223344 +vmov.s8 r2, d4[0] :: Rd 0x00000000 Qm (i32)0x7fc00000 +vmov.s8 r6, d14[1] :: Rd 0x00000000 Qm (i32)0x7f800000 +vmov.s8 r9, d24[2] :: Rd 0xffffff80 Qm (i32)0xff800000 +vmov.s8 r8, d31[3] :: Rd 0x00000011 Qm (i32)0x11223344 +vmov.s8 r6, d29[4] :: Rd 0x00000044 Qm (i32)0x11223344 +vmov.s8 r3, d19[5] :: Rd 0x00000033 Qm (i32)0x11223344 +vmov.s8 r12, d12[6] :: Rd 0x00000022 Qm (i32)0x11223344 +vmov.s8 r10, d18[7] :: Rd 0x00000011 Qm (i32)0x11223344 +---- VMLA (fp) ---- +vmla.f64 d0, d11, d12 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vmla.f64 d7, d1, d6 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vmla.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vmla.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vmla.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vmla.f64 d20, d25, d22 :: Qd 0xc0906794 0x842f8549 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vmla.f64 d23, d24, d25 :: Qd 0xc1bbe864 0x1f579999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vmla.f64 d20, d31, d12 :: Qd 0xc1e0a1cf 0xd2abe8f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vmla.f64 d19, d25, d27 :: Qd 0x41d860c7 0xf71a1999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vmla.f64 d30, d15, d2 :: Qd 0x420524a9 0x817febf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vmla.f64 d23, d24, d5 :: Qd 0x40df8c00 0x800001fc Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vmla.f64 d10, d11, d2 :: Qd 0x41895139 0x98100000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vmla.f64 d29, d15, d7 :: Qd 0x41b65928 0xd6020000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vmla.f64 d30, d11, d12 :: Qd 0x41df20a6 0xd7bd2cb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vmla.f64 d27, d21, d6 :: Qd 0x3fb763ef 0x4799be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vmla.f64 d30, d31, d2 :: Qd 0x4111fc58 0x08000020 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vmla.f64 d13, d24, d5 :: Qd 0x4132771c 0x6866666e Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vmla.f64 d10, d11, d2 :: Qd 0x40e9f35f 0xb4bc6b7d Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vmla.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vmla.f64 d0, d11, d12 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vmla.f64 d27, d21, d16 :: Qd 0xc0aa0043 0x17cbec9d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vmla.f64 d0, d5, d2 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vmla.f64 d20, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vmla.f64 d10, d23, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vmla.f32 s0, s11, s12 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vmla.f32 s7, s1, s6 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vmla.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vmla.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vmla.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vmla.f32 s20, s25, s22 :: Sd 0xc4833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vmla.f32 s23, s24, s25 :: Sd 0xcddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vmla.f32 s20, s31, s12 :: Sd 0xcf050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vmla.f32 s19, s25, s27 :: Sd 0x4ec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vmla.f32 s30, s15, s2 :: Sd 0x5029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vmla.f32 s23, s24, s5 :: Sd 0x46fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vmla.f32 s10, s11, s2 :: Sd 0x4c4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vmla.f32 s29, s15, s7 :: Sd 0x4db2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vmla.f32 s30, s11, s12 :: Sd 0x4ef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vmla.f32 s27, s21, s6 :: Sd 0x3dab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vmla.f32 s30, s31, s2 :: Sd 0x488fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vmla.f32 s13, s24, s5 :: Sd 0x4993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vmla.f32 s10, s11, s2 :: Sd 0x474f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vmla.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vmla.f32 s0, s11, s12 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vmla.f32 s27, s21, s16 :: Sd 0xc5500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vmla.f32 s0, s5, s2 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vmla.f32 s20, s13, s15 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vmla.f32 s10, s23, s15 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VNMLA (fp) ---- +vnmla.f64 d0, d11, d12 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vnmla.f64 d7, d1, d6 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vnmla.f64 d0, d5, d2 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vnmla.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vnmla.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vnmla.f64 d20, d25, d22 :: Qd 0x409067a4 0x842fc4c9 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vnmla.f64 d23, d24, d25 :: Qd 0x41bbe864 0x1f5b9999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vnmla.f64 d20, d31, d12 :: Qd 0x41e0a1cf 0xd2ac68f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vnmla.f64 d19, d25, d27 :: Qd 0xc1d860c7 0xf7191999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vnmla.f64 d30, d15, d2 :: Qd 0xc20524a9 0x817fcbf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vnmla.f64 d23, d24, d5 :: Qd 0xc0df8bff 0x7ffffe04 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vnmla.f64 d10, d11, d2 :: Qd 0xc1895139 0x97f00000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vnmla.f64 d29, d15, d7 :: Qd 0xc1b65928 0xd5fe0000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vnmla.f64 d30, d11, d12 :: Qd 0xc1df20a6 0xd7bc2cb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vnmla.f64 d27, d21, d6 :: Qd 0xbfb363ef 0x37b9be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vnmla.f64 d30, d31, d2 :: Qd 0xc111fc57 0xf7ffffe0 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vnmla.f64 d13, d24, d5 :: Qd 0xc132771c 0x6466665e Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vnmla.f64 d10, d11, d2 :: Qd 0xc0e9f35f 0x34bc6981 Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vnmla.f64 d29, d25, d7 :: Qd 0x7ff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vnmla.f64 d0, d11, d12 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vnmla.f64 d27, d21, d16 :: Qd 0x40aa004b 0x17cc0c5d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vnmla.f64 d0, d5, d2 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vnmla.f64 d20, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vnmla.f64 d10, d23, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vnmla.f32 s0, s11, s12 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vnmla.f32 s7, s1, s6 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vnmla.f32 s0, s5, s2 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vnmla.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vnmla.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vnmla.f32 s20, s25, s22 :: Sd 0x44833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vnmla.f32 s23, s24, s25 :: Sd 0x4ddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vnmla.f32 s20, s31, s12 :: Sd 0x4f050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vnmla.f32 s19, s25, s27 :: Sd 0xcec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vnmla.f32 s30, s15, s2 :: Sd 0xd029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vnmla.f32 s23, s24, s5 :: Sd 0xc6fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vnmla.f32 s10, s11, s2 :: Sd 0xcc4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vnmla.f32 s29, s15, s7 :: Sd 0xcdb2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vnmla.f32 s30, s11, s12 :: Sd 0xcef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vnmla.f32 s27, s21, s6 :: Sd 0xbdab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vnmla.f32 s30, s31, s2 :: Sd 0xc88fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vnmla.f32 s13, s24, s5 :: Sd 0xc993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vnmla.f32 s10, s11, s2 :: Sd 0xc74f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vnmla.f32 s29, s25, s7 :: Sd 0x7f800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vnmla.f32 s0, s11, s12 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vnmla.f32 s27, s21, s16 :: Sd 0x45500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vnmla.f32 s0, s5, s2 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vnmla.f32 s20, s13, s15 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vnmla.f32 s10, s23, s15 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VMLS (fp) ---- +vmls.f64 d0, d11, d12 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vmls.f64 d7, d1, d6 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vmls.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vmls.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vmls.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vmls.f64 d20, d25, d22 :: Qd 0xc09067a4 0x842fc4c9 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vmls.f64 d23, d24, d25 :: Qd 0xc1bbe864 0x1f5b9999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vmls.f64 d20, d31, d12 :: Qd 0xc1e0a1cf 0xd2ac68f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vmls.f64 d19, d25, d27 :: Qd 0x41d860c7 0xf7191999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vmls.f64 d30, d15, d2 :: Qd 0x420524a9 0x817fcbf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vmls.f64 d23, d24, d5 :: Qd 0x40df8bff 0x7ffffe04 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vmls.f64 d10, d11, d2 :: Qd 0x41895139 0x97f00000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vmls.f64 d29, d15, d7 :: Qd 0x41b65928 0xd5fe0000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vmls.f64 d30, d11, d12 :: Qd 0x41df20a6 0xd7bc2cb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vmls.f64 d27, d21, d6 :: Qd 0x3fb363ef 0x37b9be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vmls.f64 d30, d31, d2 :: Qd 0x4111fc57 0xf7ffffe0 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vmls.f64 d13, d24, d5 :: Qd 0x4132771c 0x6466665e Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vmls.f64 d10, d11, d2 :: Qd 0x40e9f35f 0x34bc6981 Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vmls.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vmls.f64 d0, d11, d12 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vmls.f64 d27, d21, d16 :: Qd 0xc0aa004b 0x17cc0c5d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vmls.f64 d0, d5, d2 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vmls.f64 d20, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vmls.f64 d10, d23, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vmls.f32 s0, s11, s12 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vmls.f32 s7, s1, s6 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vmls.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vmls.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vmls.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vmls.f32 s20, s25, s22 :: Sd 0xc4833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vmls.f32 s23, s24, s25 :: Sd 0xcddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vmls.f32 s20, s31, s12 :: Sd 0xcf050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vmls.f32 s19, s25, s27 :: Sd 0x4ec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vmls.f32 s30, s15, s2 :: Sd 0x5029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vmls.f32 s23, s24, s5 :: Sd 0x46fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vmls.f32 s10, s11, s2 :: Sd 0x4c4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vmls.f32 s29, s15, s7 :: Sd 0x4db2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vmls.f32 s30, s11, s12 :: Sd 0x4ef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vmls.f32 s27, s21, s6 :: Sd 0x3dab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vmls.f32 s30, s31, s2 :: Sd 0x488fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vmls.f32 s13, s24, s5 :: Sd 0x4993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vmls.f32 s10, s11, s2 :: Sd 0x474f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vmls.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vmls.f32 s0, s11, s12 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vmls.f32 s27, s21, s16 :: Sd 0xc5500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vmls.f32 s0, s5, s2 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vmls.f32 s20, s13, s15 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vmls.f32 s10, s23, s15 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VNMLS (fp) ---- +vnmls.f64 d0, d11, d12 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vnmls.f64 d7, d1, d6 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vnmls.f64 d0, d5, d2 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vnmls.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vnmls.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vnmls.f64 d20, d25, d22 :: Qd 0x40906794 0x842f8549 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vnmls.f64 d23, d24, d25 :: Qd 0x41bbe864 0x1f579999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vnmls.f64 d20, d31, d12 :: Qd 0x41e0a1cf 0xd2abe8f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vnmls.f64 d19, d25, d27 :: Qd 0xc1d860c7 0xf71a1999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vnmls.f64 d30, d15, d2 :: Qd 0xc20524a9 0x817febf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vnmls.f64 d23, d24, d5 :: Qd 0xc0df8c00 0x800001fc Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vnmls.f64 d10, d11, d2 :: Qd 0xc1895139 0x98100000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vnmls.f64 d29, d15, d7 :: Qd 0xc1b65928 0xd6020000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vnmls.f64 d30, d11, d12 :: Qd 0xc1df20a6 0xd7bd2cb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vnmls.f64 d27, d21, d6 :: Qd 0xbfb763ef 0x4799be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vnmls.f64 d30, d31, d2 :: Qd 0xc111fc58 0x08000020 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vnmls.f64 d13, d24, d5 :: Qd 0xc132771c 0x6866666e Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vnmls.f64 d10, d11, d2 :: Qd 0xc0e9f35f 0xb4bc6b7d Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vnmls.f64 d29, d25, d7 :: Qd 0x7ff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vnmls.f64 d0, d11, d12 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vnmls.f64 d27, d21, d16 :: Qd 0x40aa0043 0x17cbec9d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vnmls.f64 d0, d5, d2 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vnmls.f64 d20, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vnmls.f64 d10, d23, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vnmls.f32 s0, s11, s12 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vnmls.f32 s7, s1, s6 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vnmls.f32 s0, s5, s2 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vnmls.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vnmls.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vnmls.f32 s20, s25, s22 :: Sd 0x44833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vnmls.f32 s23, s24, s25 :: Sd 0x4ddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vnmls.f32 s20, s31, s12 :: Sd 0x4f050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vnmls.f32 s19, s25, s27 :: Sd 0xcec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vnmls.f32 s30, s15, s2 :: Sd 0xd029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vnmls.f32 s23, s24, s5 :: Sd 0xc6fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vnmls.f32 s10, s11, s2 :: Sd 0xcc4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vnmls.f32 s29, s15, s7 :: Sd 0xcdb2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vnmls.f32 s30, s11, s12 :: Sd 0xcef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vnmls.f32 s27, s21, s6 :: Sd 0xbdab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vnmls.f32 s30, s31, s2 :: Sd 0xc88fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vnmls.f32 s13, s24, s5 :: Sd 0xc993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vnmls.f32 s10, s11, s2 :: Sd 0xc74f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vnmls.f32 s29, s25, s7 :: Sd 0x7f800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vnmls.f32 s0, s11, s12 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vnmls.f32 s27, s21, s16 :: Sd 0x45500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vnmls.f32 s0, s5, s2 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vnmls.f32 s20, s13, s15 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vnmls.f32 s10, s23, s15 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VMUL (fp) ---- +vmul.f64 d0, d11, d12 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vmul.f64 d7, d1, d6 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vmul.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vmul.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vmul.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vmul.f64 d20, d25, d22 :: Qd 0xc090679c 0x842fa509 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vmul.f64 d23, d24, d25 :: Qd 0xc1bbe864 0x1f599999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vmul.f64 d20, d31, d12 :: Qd 0xc1e0a1cf 0xd2ac28f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vmul.f64 d19, d25, d27 :: Qd 0x41d860c7 0xf7199999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vmul.f64 d30, d15, d2 :: Qd 0x420524a9 0x817fdbf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vmul.f64 d23, d24, d5 :: Qd 0x40df8c00 0x00000000 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vmul.f64 d10, d11, d2 :: Qd 0x41895139 0x98000000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vmul.f64 d29, d15, d7 :: Qd 0x41b65928 0xd6000000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vmul.f64 d30, d11, d12 :: Qd 0x41df20a6 0xd7bcacb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vmul.f64 d27, d21, d6 :: Qd 0x3fb563ef 0x3fa9be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vmul.f64 d30, d31, d2 :: Qd 0x4111fc58 0x00000000 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vmul.f64 d13, d24, d5 :: Qd 0x4132771c 0x66666666 Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vmul.f64 d10, d11, d2 :: Qd 0x40e9f35f 0x74bc6a7f Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vmul.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vmul.f64 d0, d11, d12 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vmul.f64 d27, d21, d16 :: Qd 0xc0aa0047 0x17cbfc7d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vmul.f64 d0, d5, d2 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vmul.f64 d20, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vmul.f64 d10, d23, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vmul.f32 s0, s11, s12 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vmul.f32 s7, s1, s6 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vmul.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vmul.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vmul.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vmul.f32 s20, s25, s22 :: Sd 0xc4833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vmul.f32 s23, s24, s25 :: Sd 0xcddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vmul.f32 s20, s31, s12 :: Sd 0xcf050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vmul.f32 s19, s25, s27 :: Sd 0x4ec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vmul.f32 s30, s15, s2 :: Sd 0x5029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vmul.f32 s23, s24, s5 :: Sd 0x46fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vmul.f32 s10, s11, s2 :: Sd 0x4c4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vmul.f32 s29, s15, s7 :: Sd 0x4db2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vmul.f32 s30, s11, s12 :: Sd 0x4ef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vmul.f32 s27, s21, s6 :: Sd 0x3dab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vmul.f32 s30, s31, s2 :: Sd 0x488fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vmul.f32 s13, s24, s5 :: Sd 0x4993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vmul.f32 s10, s11, s2 :: Sd 0x474f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vmul.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vmul.f32 s0, s11, s12 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vmul.f32 s27, s21, s16 :: Sd 0xc5500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vmul.f32 s0, s5, s2 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vmul.f32 s20, s13, s15 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vmul.f32 s10, s23, s15 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VNMUL (fp) ---- +vnmul.f64 d0, d11, d12 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vnmul.f64 d7, d1, d6 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vnmul.f64 d0, d5, d2 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vnmul.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vnmul.f64 d10, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vnmul.f64 d20, d25, d22 :: Qd 0x4090679c 0x842fa509 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vnmul.f64 d23, d24, d25 :: Qd 0x41bbe864 0x1f599999 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vnmul.f64 d20, d31, d12 :: Qd 0x41e0a1cf 0xd2ac28f6 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vnmul.f64 d19, d25, d27 :: Qd 0xc1d860c7 0xf7199999 Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vnmul.f64 d30, d15, d2 :: Qd 0xc20524a9 0x817fdbf4 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vnmul.f64 d23, d24, d5 :: Qd 0xc0df8c00 0x00000000 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vnmul.f64 d10, d11, d2 :: Qd 0xc1895139 0x98000000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vnmul.f64 d29, d15, d7 :: Qd 0xc1b65928 0xd6000000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vnmul.f64 d30, d11, d12 :: Qd 0xc1df20a6 0xd7bcacb0 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vnmul.f64 d27, d21, d6 :: Qd 0xbfb563ef 0x3fa9be48 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vnmul.f64 d30, d31, d2 :: Qd 0xc111fc58 0x00000000 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vnmul.f64 d13, d24, d5 :: Qd 0xc132771c 0x66666666 Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vnmul.f64 d10, d11, d2 :: Qd 0xc0e9f35f 0x74bc6a7f Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vnmul.f64 d29, d25, d7 :: Qd 0x7ff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vnmul.f64 d0, d11, d12 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vnmul.f64 d27, d21, d16 :: Qd 0x40aa0047 0x17cbfc7d Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vnmul.f64 d0, d5, d2 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vnmul.f64 d20, d13, d15 :: Qd 0xfff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vnmul.f64 d10, d23, d15 :: Qd 0xfff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vnmul.f32 s0, s11, s12 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vnmul.f32 s7, s1, s6 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vnmul.f32 s0, s5, s2 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vnmul.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vnmul.f32 s10, s13, s15 :: Sd 0xffc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vnmul.f32 s20, s25, s22 :: Sd 0x44833ce4 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vnmul.f32 s23, s24, s25 :: Sd 0x4ddf4321 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vnmul.f32 s20, s31, s12 :: Sd 0x4f050e7f Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vnmul.f32 s19, s25, s27 :: Sd 0xcec3063f Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vnmul.f32 s30, s15, s2 :: Sd 0xd029254c Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vnmul.f32 s23, s24, s5 :: Sd 0xc6fc6000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vnmul.f32 s10, s11, s2 :: Sd 0xcc4a89cd Sm (i32)0x473e7300 Sn (i32)0x44882000 +vnmul.f32 s29, s15, s7 :: Sd 0xcdb2c947 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vnmul.f32 s30, s11, s12 :: Sd 0xcef90536 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vnmul.f32 s27, s21, s6 :: Sd 0xbdab1f7a Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vnmul.f32 s30, s31, s2 :: Sd 0xc88fe2c0 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vnmul.f32 s13, s24, s5 :: Sd 0xc993b8e3 Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vnmul.f32 s10, s11, s2 :: Sd 0xc74f9afc Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vnmul.f32 s29, s25, s7 :: Sd 0x7f800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vnmul.f32 s0, s11, s12 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vnmul.f32 s27, s21, s16 :: Sd 0x45500239 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vnmul.f32 s0, s5, s2 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vnmul.f32 s20, s13, s15 :: Sd 0xffc00000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vnmul.f32 s10, s23, s15 :: Sd 0xffc00000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VADD (fp) ---- +vadd.f64 d0, d11, d12 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vadd.f64 d7, d1, d6 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vadd.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vadd.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vadd.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vadd.f64 d20, d25, d22 :: Qd 0xc0368758 0xe219652c Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vadd.f64 d23, d24, d25 :: Qd 0xc1152639 0xe6666666 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vadd.f64 d20, d31, d12 :: Qd 0x40a7310c 0x49ba5e30 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vadd.f64 d19, d25, d27 :: Qd 0x40fb924c 0x28f5c28f Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vadd.f64 d30, d15, d2 :: Qd 0xc111f558 0x00000000 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vadd.f64 d23, d24, d5 :: Qd 0x40956800 0x00000000 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vadd.f64 d10, d11, d2 :: Qd 0x40e85680 0x00000000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vadd.f64 d29, d15, d7 :: Qd 0x413abcd7 0x00000000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vadd.f64 d30, d11, d12 :: Qd 0x411616ea 0x46a7ef9e Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vadd.f64 d27, d21, d6 :: Qd 0x4041005f 0x99c38b04 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vadd.f64 d30, d31, d2 :: Qd 0x40a65a00 0x00000000 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vadd.f64 d13, d24, d5 :: Qd 0x40a1a533 0x33333333 Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vadd.f64 d10, d11, d2 :: Qd 0x4082a4b2 0x2d0e5604 Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vadd.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vadd.f64 d0, d11, d12 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vadd.f64 d27, d21, d16 :: Qd 0x407c0f45 0x2cfb0ace Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vadd.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vadd.f64 d20, d13, d15 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vadd.f64 d10, d23, d15 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vadd.f32 s0, s11, s12 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vadd.f32 s7, s1, s6 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vadd.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vadd.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vadd.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vadd.f32 s20, s25, s22 :: Sd 0xc1b43ac6 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vadd.f32 s23, s24, s25 :: Sd 0xc8a931cf Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vadd.f32 s20, s31, s12 :: Sd 0x45398860 Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vadd.f32 s19, s25, s27 :: Sd 0x47dc9261 Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vadd.f32 s30, s15, s2 :: Sd 0xc88faac0 Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vadd.f32 s23, s24, s5 :: Sd 0x44ab4000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vadd.f32 s10, s11, s2 :: Sd 0x4742b400 Sm (i32)0x473e7300 Sn (i32)0x44882000 +vadd.f32 s29, s15, s7 :: Sd 0x49d5e6b8 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vadd.f32 s30, s11, s12 :: Sd 0x48b0b752 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vadd.f32 s27, s21, s6 :: Sd 0x420802fd Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vadd.f32 s30, s31, s2 :: Sd 0x4532d000 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vadd.f32 s13, s24, s5 :: Sd 0x450d299a Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vadd.f32 s10, s11, s2 :: Sd 0x44152592 Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vadd.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vadd.f32 s0, s11, s12 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vadd.f32 s27, s21, s16 :: Sd 0x43e07a2a Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vadd.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vadd.f32 s20, s13, s15 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vadd.f32 s10, s23, s15 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VSUB (fp) ---- +vsub.f64 d0, d11, d12 :: Qd 0x7ff80000 0x00000000 Qm 0xfff00000 00000000 Qn 0x7ff80000 00000000 +vsub.f64 d7, d1, d6 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x7ff80000 00000000 +vsub.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0xbff00000 00000000 +vsub.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x00000000 00000000 +vsub.f64 d10, d13, d15 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff80000 00000000 Qn 0x7ff80000 00000000 +vsub.f64 d20, d25, d22 :: Qd 0x405126f4 0xf0d844d0 Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vsub.f64 d23, d24, d25 :: Qd 0xc1155049 0xe6666666 Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vsub.f64 d20, d31, d12 :: Qd 0x40f714d7 0x9db22d0e Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vsub.f64 d19, d25, d27 :: Qd 0x40f33d2c 0x28f5c28f Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vsub.f64 d30, d15, d2 :: Qd 0x4108c47c 0x28f5c290 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vsub.f64 d23, d24, d5 :: Qd 0xc094a800 0x00000000 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vsub.f64 d10, d11, d2 :: Qd 0x40e74640 0x00000000 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vsub.f64 d29, d15, d7 :: Qd 0xc13abb2b 0x00000000 Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vsub.f64 d30, d11, d12 :: Qd 0x41155f92 0x34395810 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vsub.f64 d27, d21, d6 :: Qd 0x4040ffbe 0x8bc169c2 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vsub.f64 d30, d31, d2 :: Qd 0x40a4ae00 0x00000000 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vsub.f64 d13, d24, d5 :: Qd 0xc07fe999 0x99999998 Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vsub.f64 d10, d11, d2 :: Qd 0x4077a964 0x5a1cac08 Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vsub.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vsub.f64 d0, d11, d12 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vsub.f64 d27, d21, d16 :: Qd 0x407cf8b2 0x46031990 Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vsub.f64 d0, d5, d2 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vsub.f64 d20, d13, d15 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vsub.f64 d10, d23, d15 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vsub.f32 s0, s11, s12 :: Sd 0x7fc00000 Sm (i32)0xff800000 Sn (i32)0x7fc00000 +vsub.f32 s7, s1, s6 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0x7fc00000 +vsub.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0xbf800000 +vsub.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x00000000 +vsub.f32 s10, s13, s15 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 Sn (i32)0x7fc00000 +vsub.f32 s20, s25, s22 :: Sd 0x428937a8 Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vsub.f32 s23, s24, s25 :: Sd 0xc8aa824f Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vsub.f32 s20, s31, s12 :: Sd 0x47b8a6bd Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vsub.f32 s19, s25, s27 :: Sd 0x4799e961 Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vsub.f32 s30, s15, s2 :: Sd 0x484623e2 Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vsub.f32 s23, s24, s5 :: Sd 0xc4a54000 Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vsub.f32 s10, s11, s2 :: Sd 0x473a3200 Sm (i32)0x473e7300 Sn (i32)0x44882000 +vsub.f32 s29, s15, s7 :: Sd 0xc9d5d958 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vsub.f32 s30, s11, s12 :: Sd 0x48aafc92 Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vsub.f32 s27, s21, s6 :: Sd 0x4207fdf5 Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vsub.f32 s30, s31, s2 :: Sd 0x45257000 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vsub.f32 s13, s24, s5 :: Sd 0xc3ff4ccc Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vsub.f32 s10, s11, s2 :: Sd 0x43bd4b23 Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vsub.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vsub.f32 s0, s11, s12 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vsub.f32 s27, s21, s16 :: Sd 0x43e7c592 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vsub.f32 s0, s5, s2 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vsub.f32 s20, s13, s15 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vsub.f32 s10, s23, s15 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VDIV (fp) ---- +vdiv.f64 d20, d25, d22 :: Qd 0xbfe02df5 0x76d6419a Qm 0x40370a3d 70a3d70a Qn 0xc046c8cb 295e9e1b +vdiv.f64 d23, d24, d25 :: Qd 0xc07026fe 0xc863346b Qm 0xc1153b41 e6666666 Qn 0x40950800 00000000 +vdiv.f64 d20, d31, d12 :: Qd 0xbff1098f 0x758c5d80 Qm 0x40e7ce60 00000000 Qn 0xc0e65b4f 3b645a1d +vdiv.f64 d19, d25, d27 :: Qd 0x401678a0 0x9bfa11ab Qm 0x40f767bc 28f5c28f Qn 0x40d0aa40 00000000 +vdiv.f64 d30, d15, d2 :: Qd 0x3fc7844e 0x96972113 Qm 0xc0e64c67 ae147ae1 Qn 0xc10e5796 147ae148 +vdiv.f64 d23, d24, d5 :: Qd 0x3f92422f 0xedbdd012 Qm 0x40380000 00000000 Qn 0x40950800 00000000 +vdiv.f64 d10, d11, d2 :: Qd 0x4046629d 0x80967330 Qm 0x40e7ce60 00000000 Qn 0x40910400 00000000 +vdiv.f64 d29, d15, d7 :: Qd 0x3f200264 0x3ec040af Qm 0x406ac000 00000000 Qn 0x413abc01 00000000 +vdiv.f64 d30, d11, d12 :: Qd 0x404e57db 0x6cbb9f42 Qm 0x4115bb3e 3d70a3d7 Qn 0x40b6eb02 4dd2f1aa +vdiv.f64 d27, d21, d6 :: Qd 0x40cb05b1 0x59d8ef97 Qm 0x4041000f 12c27a63 Qn 0x3f6421c0 44284dfd +vdiv.f64 d30, d31, d2 :: Qd 0x4039bd02 0x647c6945 Qm 0x40a58400 00000000 Qn 0x405ac000 00000000 +vdiv.f64 d13, d24, d5 :: Qd 0x3fe43307 0xa78c550d Qm 0x408b5000 00000000 Qn 0x4095a266 66666666 +vdiv.f64 d10, d11, d2 :: Qd 0x4011e4a2 0x43006502 Qm 0x407e7964 5a1cac08 Qn 0x405b4000 00000000 +vdiv.f64 d29, d25, d7 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x409b6000 00000000 +vdiv.f64 d0, d11, d12 :: Qd 0xfff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xc0b69a78 51eb851f +vdiv.f64 d27, d21, d16 :: Qd 0xc04f45f0 0x7ea9eeda Qm 0x407c83fb b97f122f Qn 0xc01d2da3 2101d847 +vdiv.f64 d0, d5, d2 :: Qd 0x7ff80000 0x00000000 Qm 0x7ff00000 00000000 Qn 0xfff00000 00000000 +vdiv.f64 d20, d13, d15 :: Qd 0xfff00000 0x00000000 Qm 0xfff00000 00000000 Qn 0x00000000 00000000 +vdiv.f64 d10, d23, d15 :: Qd 0x7ff00000 0x00000000 Qm 0x7ff00000 00000000 Qn 0x00000000 00000000 +vdiv.f32 s20, s25, s22 :: Sd 0xbf016fac Sm (i32)0x41b851ec Sn (i32)0xc2364659 +vdiv.f32 s23, s24, s25 :: Sd 0xc38137f6 Sm (i32)0xc8a9da0f Sn (i32)0x44a84000 +vdiv.f32 s20, s31, s12 :: Sd 0xbf884c7c Sm (i32)0x473e7300 Sn (i32)0xc732da7a +vdiv.f32 s19, s25, s27 :: Sd 0x40b3c505 Sm (i32)0x47bb3de1 Sn (i32)0x46855200 +vdiv.f32 s30, s15, s2 :: Sd 0x3e3c2274 Sm (i32)0xc732633d Sn (i32)0xc872bcb1 +vdiv.f32 s23, s24, s5 :: Sd 0x3c92117f Sm (i32)0x41c00000 Sn (i32)0x44a84000 +vdiv.f32 s10, s11, s2 :: Sd 0x423314ec Sm (i32)0x473e7300 Sn (i32)0x44882000 +vdiv.f32 s29, s15, s7 :: Sd 0x39001322 Sm (i32)0x43560000 Sn (i32)0x49d5e008 +vdiv.f32 s30, s11, s12 :: Sd 0x4272bedc Sm (i32)0x48add9f2 Sn (i32)0x45b75812 +vdiv.f32 s27, s21, s6 :: Sd 0x46582d8c Sm (i32)0x42080079 Sn (i32)0x3b210e02 +vdiv.f32 s30, s31, s2 :: Sd 0x41cde813 Sm (i32)0x452c2000 Sn (i32)0x42d60000 +vdiv.f32 s13, s24, s5 :: Sd 0x3f21983d Sm (i32)0x445a8000 Sn (i32)0x44ad1333 +vdiv.f32 s10, s11, s2 :: Sd 0x408f2512 Sm (i32)0x43f3cb23 Sn (i32)0x42da0000 +vdiv.f32 s29, s25, s7 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x44db0000 +vdiv.f32 s0, s11, s12 :: Sd 0xff800000 Sm (i32)0x7f800000 Sn (i32)0xc5b4d3c3 +vdiv.f32 s27, s21, s16 :: Sd 0xc27a2f84 Sm (i32)0x43e41fde Sn (i32)0xc0e96d19 +vdiv.f32 s0, s5, s2 :: Sd 0x7fc00000 Sm (i32)0x7f800000 Sn (i32)0xff800000 +vdiv.f32 s20, s13, s15 :: Sd 0xff800000 Sm (i32)0xff800000 Sn (i32)0x00000000 +vdiv.f32 s10, s23, s15 :: Sd 0x7f800000 Sm (i32)0x7f800000 Sn (i32)0x00000000 +---- VABS ---- +vabs.f64 d15, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vabs.f64 d31, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vabs.f64 d25, d25 :: Dd 0x55555555 0x55555555 Dm (i32)0x7ff00000 00000000 +vabs.f64 d18, d17 :: Dd 0x7ff00000 0x00000000 Dm (i32)0x7ff00000 00000000 +vabs.f64 d30, d1 :: Dd 0x7ff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vabs.f64 d8, d27 :: Dd 0x7ff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vabs.f64 d20, d1 :: Dd 0x40f2aff0 0x041aac54 Dm (i32)0x40f2aff0 041aac54 +vabs.f64 d28, d7 :: Dd 0x40b2f83b 0xe76c8b44 Dm (i32)0xc0b2f83b e76c8b44 +vabs.f64 d2, d19 :: Dd 0x4055c649 0x2ff4ba52 Dm (i32)0x4055c649 2ff4ba52 +vabs.f64 d8, d7 :: Dd 0x40fdd2c3 0x33333333 Dm (i32)0xc0fdd2c3 33333333 +vabs.f32 s15, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vabs.f32 s31, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vabs.f32 s25, s25 :: Sd 0x7fffaaaa Sm (i32)0x7f800000 +vabs.f32 s18, s17 :: Sd 0x7f800000 Sm (i32)0x7f800000 +vabs.f32 s30, s1 :: Sd 0x7f800000 Sm (i32)0xff800000 +vabs.f32 s8, s27 :: Sd 0x7f800000 Sm (i32)0xff800000 +vabs.f32 s20, s1 :: Sd 0x47957f80 Sm (i32)0x47957f80 +vabs.f32 s28, s7 :: Sd 0x4597c1df Sm (i32)0xc597c1df +vabs.f32 s2, s19 :: Sd 0x42ae3249 Sm (i32)0x42ae3249 +vabs.f32 s8, s7 :: Sd 0x47ee961a Sm (i32)0xc7ee961a +---- VNEG ---- +vneg.f64 d15, d4 :: Dd 0xfff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vneg.f64 d31, d4 :: Dd 0xfff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vneg.f64 d25, d25 :: Dd 0xd5555555 0x55555555 Dm (i32)0x7ff00000 00000000 +vneg.f64 d18, d17 :: Dd 0xfff00000 0x00000000 Dm (i32)0x7ff00000 00000000 +vneg.f64 d30, d1 :: Dd 0x7ff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vneg.f64 d8, d27 :: Dd 0x7ff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vneg.f64 d20, d1 :: Dd 0xc0f2aff0 0x041aac54 Dm (i32)0x40f2aff0 041aac54 +vneg.f64 d28, d7 :: Dd 0x40b2f83b 0xe76c8b44 Dm (i32)0xc0b2f83b e76c8b44 +vneg.f64 d2, d19 :: Dd 0xc055c649 0x2ff4ba52 Dm (i32)0x4055c649 2ff4ba52 +vneg.f64 d8, d7 :: Dd 0x40fdd2c3 0x33333333 Dm (i32)0xc0fdd2c3 33333333 +vneg.f32 s15, s4 :: Sd 0xffc00000 Sm (i32)0x7fc00000 +vneg.f32 s31, s4 :: Sd 0xffc00000 Sm (i32)0x7fc00000 +vneg.f32 s25, s25 :: Sd 0x7fffaaaa Sm (i32)0x7f800000 +vneg.f32 s18, s17 :: Sd 0xff800000 Sm (i32)0x7f800000 +vneg.f32 s30, s1 :: Sd 0x7f800000 Sm (i32)0xff800000 +vneg.f32 s8, s27 :: Sd 0x7f800000 Sm (i32)0xff800000 +vneg.f32 s20, s1 :: Sd 0xc7957f80 Sm (i32)0x47957f80 +vneg.f32 s28, s7 :: Sd 0x4597c1df Sm (i32)0xc597c1df +vneg.f32 s2, s19 :: Sd 0xc2ae3249 Sm (i32)0x42ae3249 +vneg.f32 s8, s7 :: Sd 0x47ee961a Sm (i32)0xc7ee961a +---- VMOV (register) ---- +vmov.f64 d15, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vmov.f64 d31, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vmov.f64 d25, d25 :: Dd 0x55555555 0x55555555 Dm (i32)0x7ff00000 00000000 +vmov.f64 d18, d17 :: Dd 0x7ff00000 0x00000000 Dm (i32)0x7ff00000 00000000 +vmov.f64 d30, d1 :: Dd 0xfff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vmov.f64 d8, d27 :: Dd 0xfff00000 0x00000000 Dm (i32)0xfff00000 00000000 +vmov.f64 d20, d1 :: Dd 0x40f2aff0 0x041aac54 Dm (i32)0x40f2aff0 041aac54 +vmov.f64 d28, d7 :: Dd 0xc0b2f83b 0xe76c8b44 Dm (i32)0xc0b2f83b e76c8b44 +vmov.f64 d2, d19 :: Dd 0x4055c649 0x2ff4ba52 Dm (i32)0x4055c649 2ff4ba52 +vmov.f64 d8, d7 :: Dd 0xc0fdd2c3 0x33333333 Dm (i32)0xc0fdd2c3 33333333 +vmov.f32 s15, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vmov.f32 s31, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vmov.f32 s25, s25 :: Sd 0xffffaaaa Sm (i32)0x7f800000 +vmov.f32 s18, s17 :: Sd 0x7f800000 Sm (i32)0x7f800000 +vmov.f32 s30, s1 :: Sd 0xff800000 Sm (i32)0xff800000 +vmov.f32 s8, s27 :: Sd 0xff800000 Sm (i32)0xff800000 +vmov.f32 s20, s1 :: Sd 0x47957f80 Sm (i32)0x47957f80 +vmov.f32 s28, s7 :: Sd 0xc597c1df Sm (i32)0xc597c1df +vmov.f32 s2, s19 :: Sd 0x42ae3249 Sm (i32)0x42ae3249 +vmov.f32 s8, s7 :: Sd 0xc7ee961a Sm (i32)0xc7ee961a +---- VSQRT ---- +vsqrt.f64 d15, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vsqrt.f64 d31, d4 :: Dd 0x7ff80000 0x00000000 Dm (i32)0x7ff80000 00000000 +vsqrt.f64 d25, d25 :: Dd 0x4aa279a7 0x4590331c Dm (i32)0x7ff00000 00000000 +vsqrt.f64 d18, d17 :: Dd 0x7ff00000 0x00000000 Dm (i32)0x7ff00000 00000000 +vsqrt.f64 d30, d1 :: Dd 0x7ff80000 0x00000000 Dm (i32)0xfff00000 00000000 +vsqrt.f64 d8, d27 :: Dd 0x7ff80000 0x00000000 Dm (i32)0xfff00000 00000000 +vsqrt.f64 d20, d1 :: Dd 0x40714a9f 0xfb4e5577 Dm (i32)0x40f2aff0 041aac54 +vsqrt.f64 d28, d7 :: Dd 0x7ff80000 0x00000000 Dm (i32)0xc0b2f83b e76c8b44 +vsqrt.f64 d2, d19 :: Dd 0x4022aa50 0x1fe2a179 Dm (i32)0x4055c649 2ff4ba52 +vsqrt.f64 d8, d7 :: Dd 0x7ff80000 0x00000000 Dm (i32)0xc0fdd2c3 33333333 +vsqrt.f32 s15, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vsqrt.f32 s31, s4 :: Sd 0x7fc00000 Sm (i32)0x7fc00000 +vsqrt.f32 s25, s25 :: Sd 0xffffaaaa Sm (i32)0x7f800000 +vsqrt.f32 s18, s17 :: Sd 0x7f800000 Sm (i32)0x7f800000 +vsqrt.f32 s30, s1 :: Sd 0x7fc00000 Sm (i32)0xff800000 +vsqrt.f32 s8, s27 :: Sd 0x7fc00000 Sm (i32)0xff800000 +vsqrt.f32 s20, s1 :: Sd 0x438a5500 Sm (i32)0x47957f80 +vsqrt.f32 s28, s7 :: Sd 0x7fc00000 Sm (i32)0xc597c1df +vsqrt.f32 s2, s19 :: Sd 0x41155281 Sm (i32)0x42ae3249 +vsqrt.f32 s8, s7 :: Sd 0x7fc00000 Sm (i32)0xc7ee961a +---- VCVT (integer <-> fp) ---- +vcvt.u32.f32 s0, s1 :: Sd 0x00000003 Sm (i32)0x404ccccd +vcvt.u32.f32 s10, s11 :: Sd 0xffffffff Sm (i32)0x64cb49b4 +vcvt.u32.f32 s15, s4 :: Sd 0xb2d05e00 Sm (i32)0x4f32d05e +vcvt.u32.f32 s25, s24 :: Sd 0x00000000 Sm (i32)0xbf000000 +vcvt.u32.f32 s19, s21 :: Sd 0x00000000 Sm (i32)0xc0e33333 +vcvt.u32.f32 s12, s8 :: Sd 0x00000008 Sm (i32)0x40fff800 +vcvt.u32.f32 s12, s18 :: Sd 0x00000000 Sm (i32)0xc0fff800 +vcvt.u32.f32 s30, s1 :: Sd 0x00000000 Sm (i32)0x00000000 +vcvt.u32.f32 s11, s1 :: Sd 0xffffffff Sm (i32)0x7f800000 +vcvt.u32.f32 s21, s12 :: Sd 0x00000000 Sm (i32)0xff800000 +vcvt.u32.f32 s20, s11 :: Sd 0x00000000 Sm (i32)0x7fc00000 +vcvt.s32.f32 s29, s13 :: Sd 0x00000000 Sm (i32)0x7fc00000 +vcvt.s32.f32 s9, s19 :: Sd 0x00000000 Sm (i32)0x00000000 +vcvt.s32.f32 s0, s17 :: Sd 0x7fffffff Sm (i32)0x7f800000 +vcvt.s32.f32 s0, s1 :: Sd 0x80000000 Sm (i32)0xff800000 +vcvt.s32.f32 s30, s11 :: Sd 0x00000003 Sm (i32)0x404ccccd +vcvt.s32.f32 s20, s21 :: Sd 0x7fffffff Sm (i32)0x64cb49b4 +vcvt.s32.f32 s15, s14 :: Sd 0x7fffffff Sm (i32)0x4f32d05e +vcvt.s32.f32 s15, s24 :: Sd 0x00000000 Sm (i32)0xbf000000 +vcvt.s32.f32 s15, s29 :: Sd 0xfffffff9 Sm (i32)0xc0e33333 +vcvt.s32.f32 s12, s31 :: Sd 0x00000008 Sm (i32)0x40fff800 +vcvt.s32.f32 s1, s8 :: Sd 0xfffffff8 Sm (i32)0xc0fff800 +vcvt.f32.u32 s30, s1 :: Sd 0x4e81c000 Sm (i32)0x40e00000 +vcvt.f32.u32 s10, s17 :: Sd 0x4f4f0000 Sm (i32)0xcf000000 +vcvt.f32.u32 s20, s1 :: Sd 0x4e9e0000 Sm (i32)0x4f000000 +vcvt.f32.u32 s24, s26 :: Sd 0x4e9e0000 Sm (i32)0x4f000000 +vcvt.f32.u32 s0, s14 :: Sd 0x4e9c8506 Sm (i32)0x4e4282f4 +vcvt.f32.u32 s11, s1 :: Sd 0x4eff0000 Sm (i32)0x7f800000 +vcvt.f32.u32 s21, s12 :: Sd 0x4f7f8000 Sm (i32)0xff800000 +vcvt.f32.u32 s29, s13 :: Sd 0x4eff8000 Sm (i32)0x7fc00000 +vcvt.f32.s32 s0, s1 :: Sd 0x4e81c000 Sm (i32)0x40e00000 +vcvt.f32.s32 s30, s31 :: Sd 0xce440000 Sm (i32)0xcf000000 +vcvt.f32.s32 s0, s12 :: Sd 0x4e9e0000 Sm (i32)0x4f000000 +vcvt.f32.s32 s10, s16 :: Sd 0x4e9e0000 Sm (i32)0x4f000000 +vcvt.f32.s32 s1, s8 :: Sd 0xce7c0020 Sm (i32)0xc0fff800 +vcvt.f32.s32 s29, s13 :: Sd 0x4eff8000 Sm (i32)0x7fc00000 +vcvt.f32.s32 s9, s19 :: Sd 0x00000000 Sm (i32)0x00000000 +vcvt.f32.s32 s0, s17 :: Sd 0x4eff0000 Sm (i32)0x7f800000 +vcvt.f32.s32 s0, s1 :: Sd 0xcb000000 Sm (i32)0xff800000 +vcvt.u32.f64 s0, d1 :: Sd 0x00000003 Dm 0x40099999 9999999a +vcvt.u32.f64 s13, d26 :: Sd 0x000000eb Dm 0x406d5147 ae147ae1 +vcvt.u32.f64 s29, d30 :: Sd 0x0000b4a5 Dm 0x40e694ab 0a3d70a4 +vcvt.u32.f64 s30, d21 :: Sd 0x00000000 Dm 0xc01fff00 00000000 +vcvt.u32.f64 s11, d8 :: Sd 0xffffffff Dm 0x7ff00000 00000000 +vcvt.u32.f64 s8, d12 :: Sd 0x00000000 Dm 0xfff00000 00000000 +vcvt.u32.f64 s19, d7 :: Sd 0x00000000 Dm 0x7ff80000 00000000 +vcvt.u32.f64 s16, d16 :: Sd 0x0000004d Dm 0x40532ae1 47ae147b +vcvt.s32.f64 s0, d1 :: Sd 0x00000003 Dm 0x40099999 9999999a +vcvt.s32.f64 s13, d26 :: Sd 0x000000eb Dm 0x406d5147 ae147ae1 +vcvt.s32.f64 s29, d30 :: Sd 0x0000b4a5 Dm 0x40e694ab 0a3d70a4 +vcvt.s32.f64 s30, d21 :: Sd 0xfffffff8 Dm 0xc01fff00 00000000 +vcvt.s32.f64 s11, d8 :: Sd 0x7fffffff Dm 0x7ff00000 00000000 +vcvt.s32.f64 s8, d12 :: Sd 0x80000000 Dm 0xfff00000 00000000 +vcvt.s32.f64 s19, d7 :: Sd 0x00000000 Dm 0x7ff80000 00000000 +vcvt.s32.f64 s16, d16 :: Sd 0x0000004d Dm 0x40532ae1 47ae147b +vcvt.f64.u32 d0, s1 :: Dd 0xfe000000 41efffff Sm 0x404ccccd +vcvt.f64.u32 d30, s21 :: Dd 0x5c200000 41e88483 Sm 0xc4241ae1 +vcvt.f64.u32 d16, s12 :: Dd 0x62400000 41d11660 Sm 0x44598189 +vcvt.f64.u32 d29, s7 :: Dd 0xe6c00000 41e8a3de Sm 0xc51ef736 +vcvt.f64.u32 d12, s28 :: Dd 0x11000000 41d02800 Sm 0x40a00044 +vcvt.f64.u32 d7, s5 :: Dd 0x00000000 41eff000 Sm 0xff800000 +vcvt.f64.u32 d21, s20 :: Dd 0x00000000 41dfe000 Sm 0x7f800000 +vcvt.f64.u32 d11, s11 :: Dd 0x00000000 41dff000 Sm 0x7fc00000 +vcvt.f64.s32 d0, s1 :: Dd 0x00000000 c0300000 Sm 0x404ccccd +vcvt.f64.s32 d30, s21 :: Dd 0x8f800000 c1cdedf2 Sm 0xc4241ae1 +vcvt.f64.s32 d16, s12 :: Dd 0x62400000 41d11660 Sm 0x44598189 +vcvt.f64.s32 d29, s7 :: Dd 0x65000000 c1cd7084 Sm 0xc51ef736 +vcvt.f64.s32 d12, s28 :: Dd 0x11000000 41d02800 Sm 0x40a00044 +vcvt.f64.s32 d7, s5 :: Dd 0x00000000 c1600000 Sm 0xff800000 +vcvt.f64.s32 d21, s20 :: Dd 0x00000000 41dfe000 Sm 0x7f800000 +vcvt.f64.s32 d11, s11 :: Dd 0x00000000 41dff000 Sm 0x7fc00000 +---- VCVT (single <-> double) ---- +vcvt.f64.f32 d0, s1 :: Dd 0xfffff555 0x40000000 Sm 0x404ccccd +vcvt.f64.f32 d29, s21 :: Dd 0x406d54cc 0xc0000000 Sm 0x436aa666 +vcvt.f64.f32 d16, s30 :: Dd 0xc085e50a 0x40000000 Sm 0xc42f2852 +vcvt.f64.f32 d11, s7 :: Dd 0x401fff00 0x00000000 Sm 0x40fff800 +vcvt.f64.f32 d30, s3 :: Dd 0xc01fff00 0x00000000 Sm 0xc0fff800 +vcvt.f64.f32 d7, s19 :: Dd 0x4028ddb6 0x20000000 Sm 0x4146edb1 +vcvt.f64.f32 d2, s11 :: Dd 0x40505b1a 0xa0000000 Sm 0x4282d8d5 +vcvt.f64.f32 d9, s21 :: Dd 0x7ff80000 0x00000000 Sm 0x7fc00000 +vcvt.f64.f32 d17, s29 :: Dd 0xfff00000 0x00000000 Sm 0xff800000 +vcvt.f64.f32 d19, s0 :: Dd 0x7ff00000 0x00000000 Sm 0x7f800000 +vcvt.f32.f64 s0, d1 :: Sd 0x404ccccd Dm 0x40099999 9999999a +vcvt.f32.f64 s29, d21 :: Sd 0x436aa666 Dm 0x406d54cc cccccccd +vcvt.f32.f64 s16, d30 :: Sd 0xc42f2852 Dm 0xc085e50a 3d70a3d7 +vcvt.f32.f64 s11, d7 :: Sd 0x40fff800 Dm 0x401fff00 00000000 +vcvt.f32.f64 s30, d3 :: Sd 0xc0fff800 Dm 0xc01fff00 00000000 +vcvt.f32.f64 s7, d19 :: Sd 0x4146edb1 Dm 0x4028ddb6 1bb05faf +vcvt.f32.f64 s2, d11 :: Sd 0x4282d8d5 Dm 0x40505b1a 9fbe76c9 +vcvt.f32.f64 s9, d21 :: Sd 0x7fc00000 Dm 0x7ff80000 00000000 +vcvt.f32.f64 s17, d29 :: Sd 0xff800000 Dm 0xfff00000 00000000 +vcvt.f32.f64 s19, d0 :: Sd 0x7f800000 Dm 0x7ff00000 00000000 +---- VCMP ---- +vcmp.f64 d0, d19 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 Dm 0xc004fef9 db22d0e5 +vcmp.f64 d11, d16 :: FPSCR 0x20000000 Dd 0x40d6ecdc cccccccd Dm 0x40aac300 00000000 +vcmp.f64 d21, d30 :: FPSCR 0x20000000 Dd 0xc0b1ac80 00000000 Dm 0xc11b9be6 00000000 +vcmp.f64 d7, d28 :: FPSCR 0x20000000 Dd 0x407a9800 00000000 Dm 0xc07c84cc cccccccd +vcmp.f64 d29, d3 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 Dm 0x40e0e04e 66666666 +vcmp.f64 d3, d22 :: FPSCR 0x60000000 Dd 0x40000000 00000000 Dm 0x40000000 00000000 +vcmp.f64 d3, d22 :: FPSCR 0x60000000 Dd 0x40280bc6 a7ef9db2 Dm 0x40280bc6 a7ef9db2 +vcmp.f64 d3, d22 :: FPSCR 0x60000000 Dd 0x00000000 00000000 Dm 0x00000000 00000000 +vcmp.f64 d9, d2 :: FPSCR 0x60000000 Dd 0x7ff00000 00000000 Dm 0x7ff00000 00000000 +vcmp.f64 d30, d15 :: FPSCR 0x60000000 Dd 0xfff00000 00000000 Dm 0xfff00000 00000000 +vcmp.f64 d0, d19 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 Dm 0xc004fef9 db22d0e5 +vcmp.f64 d11, d16 :: FPSCR 0x20000000 Dd 0xc0b557b3 33333333 Dm 0xfff00000 00000000 +vcmp.f64 d21, d30 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 Dm 0x4055accc cccccccd +vcmp.f64 d7, d28 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 Dm 0xc0c0bbba 5e353f7d +vcmp.f64 d29, d3 :: FPSCR 0x80000000 Dd 0xc0806333 33333333 Dm 0x40847400 00000000 +vcmp.f64 d3, d22 :: FPSCR 0x30000000 Dd 0x7ff80000 00000000 Dm 0xc019dc67 dfe32a06 +vcmp.f64 d9, d2 :: FPSCR 0x20000000 Dd 0x404c4810 624dd2f2 Dm 0x404c47ae 147ae148 +vcmp.f64 d30, d15 :: FPSCR 0x80000000 Dd 0x40b4f599 9a415f46 Dm 0x40ebb770 00000000 +vcmpe.f64 d0, d19 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 Dm 0xc004fef9 db22d0e5 +vcmpe.f64 d11, d16 :: FPSCR 0x20000000 Dd 0x40d6ecdc cccccccd Dm 0x40aac300 00000000 +vcmpe.f64 d11, d16 :: FPSCR 0x30000000 Dd 0x40d6ecdc cccccccd Dm 0x7ff80000 00000000 +vcmpe.f64 d21, d30 :: FPSCR 0x20000000 Dd 0xc0b1ac80 00000000 Dm 0xc11b9be6 00000000 +vcmpe.f64 d7, d28 :: FPSCR 0x20000000 Dd 0x407a9800 00000000 Dm 0xc07c84cc cccccccd +vcmpe.f64 d29, d3 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 Dm 0x40e0e04e 66666666 +vcmpe.f64 d3, d22 :: FPSCR 0x60000000 Dd 0x40000000 00000000 Dm 0x40000000 00000000 +vcmpe.f64 d9, d2 :: FPSCR 0x60000000 Dd 0x7ff00000 00000000 Dm 0x7ff00000 00000000 +vcmpe.f64 d30, d15 :: FPSCR 0x60000000 Dd 0xfff00000 00000000 Dm 0xfff00000 00000000 +vcmpe.f64 d0, d19 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 Dm 0xc004fef9 db22d0e5 +vcmpe.f64 d11, d16 :: FPSCR 0x20000000 Dd 0xc0b557b3 33333333 Dm 0xfff00000 00000000 +vcmpe.f64 d21, d30 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 Dm 0x4055accc cccccccd +vcmpe.f64 d7, d28 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 Dm 0xc0c0bbba 5e353f7d +vcmpe.f64 d29, d3 :: FPSCR 0x80000000 Dd 0xc0806333 33333333 Dm 0x40847400 00000000 +vcmpe.f64 d3, d22 :: FPSCR 0x20000000 Dd 0x40b21080 00000000 Dm 0xc019dc67 dfe32a06 +vcmpe.f64 d9, d2 :: FPSCR 0x20000000 Dd 0x404c4810 624dd2f2 Dm 0x404c47ae 147ae148 +vcmpe.f64 d30, d15 :: FPSCR 0x80000000 Dd 0x40b4f599 9a415f46 Dm 0x40ebb770 00000000 +vcmp.f32 s0, s19 :: FPSCR 0x8 Sd 0xc05d3a93 Sm 0xc027f7cf +vcmp.f32 s11, s16 :: FPSCR 0x2 Sd 0x46b766e6 Sm 0x45561800 +vcmp.f32 s3, s22 :: FPSCR 0x6 Sd 0x40000000 Sm 0x40000000 +vcmp.f32 s0, s19 :: FPSCR 0x8 Sd 0xc05d3a93 Sm 0xc027f7cf +vcmp.f32 s11, s16 :: FPSCR 0x2 Sd 0x46b766e6 Sm 0x45561800 +vcmp.f32 s21, s30 :: FPSCR 0x2 Sd 0xc58d6400 Sm 0xc8dcdf30 +vcmp.f32 s7, s28 :: FPSCR 0x2 Sd 0x43d4c000 Sm 0xc3e42666 +vcmp.f32 s29, s3 :: FPSCR 0x2 Sd 0x7f800000 Sm 0x47070273 +vcmp.f32 s3, s22 :: FPSCR 0x6 Sd 0x41405e35 Sm 0x41405e35 +vcmp.f32 s3, s22 :: FPSCR 0x6 Sd 0x00000000 Sm 0x00000000 +vcmp.f32 s9, s2 :: FPSCR 0x6 Sd 0x7f800000 Sm 0x7f800000 +vcmp.f32 s30, s15 :: FPSCR 0x6 Sd 0xff800000 Sm 0xff800000 +vcmp.f32 s0, s19 :: FPSCR 0x8 Sd 0xc05d3a93 Sm 0xc027f7cf +vcmp.f32 s11, s16 :: FPSCR 0x2 Sd 0xc5aabd9a Sm 0xff800000 +vcmp.f32 s21, s30 :: FPSCR 0x8 Sd 0xff800000 Sm 0x42ad6666 +vcmp.f32 s7, s28 :: FPSCR 0x2 Sd 0x7f800000 Sm 0xc605ddd3 +vcmp.f32 s29, s3 :: FPSCR 0x8 Sd 0xc403199a Sm 0x4423a000 +vcmp.f32 s3, s22 :: FPSCR 0x3 Sd 0x7fc00000 Sm 0xc0cee33f +vcmp.f32 s9, s2 :: FPSCR 0x2 Sd 0x42624083 Sm 0x42623d71 +vcmp.f32 s30, s15 :: FPSCR 0x8 Sd 0x45a7accd Sm 0x475dbb80 +vcmpe.f32 s0, s19 :: FPSCR 0x8 Sd 0xc05d3a93 Sm 0xc027f7cf +vcmpe.f32 s11, s16 :: FPSCR 0x2 Sd 0x46b766e6 Sm 0x45561800 +vcmpe.f32 s11, s16 :: FPSCR 0x3 Sd 0x46b766e6 Sm 0x7fc00000 +vcmpe.f32 s21, s30 :: FPSCR 0x2 Sd 0xc58d6400 Sm 0xc8dcdf30 +vcmpe.f32 s7, s28 :: FPSCR 0x2 Sd 0x43d4c000 Sm 0xc3e42666 +vcmpe.f32 s29, s3 :: FPSCR 0x2 Sd 0x7f800000 Sm 0x47070273 +vcmpe.f32 s3, s22 :: FPSCR 0x6 Sd 0x40000000 Sm 0x40000000 +vcmpe.f32 s9, s2 :: FPSCR 0x6 Sd 0x7f800000 Sm 0x7f800000 +vcmpe.f32 s30, s15 :: FPSCR 0x6 Sd 0xff800000 Sm 0xff800000 +vcmpe.f32 s0, s19 :: FPSCR 0x8 Sd 0xc05d3a93 Sm 0xc027f7cf +vcmpe.f32 s11, s16 :: FPSCR 0x2 Sd 0xc5aabd9a Sm 0xff800000 +vcmpe.f32 s21, s30 :: FPSCR 0x8 Sd 0xff800000 Sm 0x42ad6666 +vcmpe.f32 s7, s28 :: FPSCR 0x2 Sd 0x7f800000 Sm 0xc605ddd3 +vcmpe.f32 s29, s3 :: FPSCR 0x8 Sd 0xc403199a Sm 0x4423a000 +vcmpe.f32 s3, s22 :: FPSCR 0x2 Sd 0x45908400 Sm 0xc0cee33f +vcmpe.f32 s9, s2 :: FPSCR 0x2 Sd 0x42624083 Sm 0x42623d71 +vcmpe.f32 s9, s2 :: FPSCR 0x8 Sd 0x00000000 Sm 0x42623d71 +vcmpe.f32 s9, s2 :: FPSCR 0x2 Sd 0x41200000 Sm 0x00000000 +vcmpe.f32 s9, s2 :: FPSCR 0x6 Sd 0x00000000 Sm 0x00000000 +vcmpe.f32 s9, s2 :: FPSCR 0x6 Sd 0x00000000 Sm 0x00000000 +---- VCMP (zero) ---- +vcmp.f64 d0 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 +vcmp.f64 d11 :: FPSCR 0x20000000 Dd 0x40d6ecdc cccccccd +vcmp.f64 d21 :: FPSCR 0x80000000 Dd 0xc0b1ac80 00000000 +vcmp.f64 d7 :: FPSCR 0x20000000 Dd 0x407a9800 00000000 +vcmp.f64 d29 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmp.f64 d3 :: FPSCR 0x20000000 Dd 0x40000000 00000000 +vcmp.f64 d3 :: FPSCR 0x60000000 Dd 0x00000000 00000000 +vcmp.f64 d9 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmp.f64 d30 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 +vcmp.f64 d0 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 +vcmp.f64 d11 :: FPSCR 0x80000000 Dd 0xc0b557b3 33333333 +vcmp.f64 d21 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 +vcmp.f64 d7 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmp.f64 d29 :: FPSCR 0x80000000 Dd 0xc0806333 33333333 +vcmp.f64 d3 :: FPSCR 0x20000000 Dd 0x40b21080 00000000 +vcmp.f64 d9 :: FPSCR 0x30000000 Dd 0x7ff80000 00000000 +vcmp.f64 d30 :: FPSCR 0x20000000 Dd 0x40b4f599 9a415f46 +vcmpe.f64 d0 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 +vcmpe.f64 d11 :: FPSCR 0x20000000 Dd 0x40d6ecdc cccccccd +vcmpe.f64 d21 :: FPSCR 0x80000000 Dd 0xc0b1ac80 00000000 +vcmpe.f64 d7 :: FPSCR 0x20000000 Dd 0x407a9800 00000000 +vcmpe.f64 d29 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmpe.f64 d3 :: FPSCR 0x20000000 Dd 0x40000000 00000000 +vcmpe.f64 d3 :: FPSCR 0x60000000 Dd 0x00000000 00000000 +vcmpe.f64 d9 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmpe.f64 d30 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 +vcmpe.f64 d0 :: FPSCR 0x80000000 Dd 0xc00ba752 5460aa65 +vcmpe.f64 d11 :: FPSCR 0x80000000 Dd 0xc0b557b3 33333333 +vcmpe.f64 d21 :: FPSCR 0x80000000 Dd 0xfff00000 00000000 +vcmpe.f64 d7 :: FPSCR 0x20000000 Dd 0x7ff00000 00000000 +vcmpe.f64 d29 :: FPSCR 0x80000000 Dd 0xc0806333 33333333 +vcmpe.f64 d3 :: FPSCR 0x20000000 Dd 0x40b21080 00000000 +vcmpe.f64 d9 :: FPSCR 0x30000000 Dd 0x7ff80000 00000000 +vcmpe.f64 d30 :: FPSCR 0x20000000 Dd 0x40b4f599 9a415f46 +vcmp.f32 s0 :: FPSCR 0x80000000 Sd 0xc05d3a93 +vcmp.f32 s11 :: FPSCR 0x20000000 Sd 0x46b766e6 +vcmp.f32 s21 :: FPSCR 0x80000000 Sd 0xc58d6400 +vcmp.f32 s7 :: FPSCR 0x20000000 Sd 0x43d4c000 +vcmp.f32 s29 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmp.f32 s3 :: FPSCR 0x20000000 Sd 0x40000000 +vcmp.f32 s3 :: FPSCR 0x60000000 Sd 0x00000000 +vcmp.f32 s9 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmp.f32 s30 :: FPSCR 0x80000000 Sd 0xff800000 +vcmp.f32 s0 :: FPSCR 0x80000000 Sd 0xc05d3a93 +vcmp.f32 s11 :: FPSCR 0x80000000 Sd 0xc5aabd9a +vcmp.f32 s21 :: FPSCR 0x80000000 Sd 0xff800000 +vcmp.f32 s7 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmp.f32 s29 :: FPSCR 0x80000000 Sd 0xc403199a +vcmp.f32 s3 :: FPSCR 0x20000000 Sd 0x45908400 +vcmp.f32 s9 :: FPSCR 0x30000000 Sd 0x7fc00000 +vcmp.f32 s30 :: FPSCR 0x20000000 Sd 0x45a7accd +vcmpe.f32 s0 :: FPSCR 0x80000000 Sd 0xc05d3a93 +vcmpe.f32 s11 :: FPSCR 0x20000000 Sd 0x46b766e6 +vcmpe.f32 s21 :: FPSCR 0x80000000 Sd 0xc58d6400 +vcmpe.f32 s7 :: FPSCR 0x20000000 Sd 0x43d4c000 +vcmpe.f32 s29 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmpe.f32 s3 :: FPSCR 0x20000000 Sd 0x40000000 +vcmpe.f32 s3 :: FPSCR 0x60000000 Sd 0x00000000 +vcmpe.f32 s9 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmpe.f32 s30 :: FPSCR 0x80000000 Sd 0xff800000 +vcmpe.f32 s0 :: FPSCR 0x80000000 Sd 0xc05d3a93 +vcmpe.f32 s11 :: FPSCR 0x80000000 Sd 0xc5aabd9a +vcmpe.f32 s21 :: FPSCR 0x80000000 Sd 0xff800000 +vcmpe.f32 s7 :: FPSCR 0x20000000 Sd 0x7f800000 +vcmpe.f32 s29 :: FPSCR 0x80000000 Sd 0xc403199a +vcmpe.f32 s3 :: FPSCR 0x20000000 Sd 0x45908400 +vcmpe.f32 s9 :: FPSCR 0x30000000 Sd 0x7fc00000 +vcmpe.f32 s30 :: FPSCR 0x20000000 Sd 0x45a7accd +---- VLDR ---- +vldr d9, [r6, #+4] :: Dd 0x0000011a 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr d16, [r9, #-4] :: Dd 0x00000cc2 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr d30, [r12] :: Dd 0x00000dd3 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr d22, [r9, #+8] :: Dd 0x0000022b 0x0000011a *(int*) (Rn + shift) 0x011a +vldr d29, [r2, #-8] :: Dd 0x00000bb1 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr d8, [r8, #+8] :: Dd 0x0000022b 0x0000011a *(int*) (Rn + shift) 0x011a +vldr d11, [r12, #-4] :: Dd 0x00000cc2 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr d18, [r3] :: Dd 0x00000dd3 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr d5, [r10, #+8] :: Dd 0x0000022b 0x0000011a *(int*) (Rn + shift) 0x011a +vldr d17, [r10] :: Dd 0x00000dd3 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr d9, [r9, #-4] :: Dd 0x00000cc2 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr d29, [r4, #-8] :: Dd 0x00000bb1 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr d21, [r6, #+4] :: Dd 0x0000011a 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr d8, [r4] :: Dd 0x00000dd3 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr d19, [r0, #-8] :: Dd 0x00000bb1 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr d10, [r3, #+4] :: Dd 0x0000011a 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr s10, [r3, #+4] :: Sd 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr s9, [r6, #+4] :: Sd 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr s16, [r9, #-4] :: Sd 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr s30, [r12] :: Sd 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr s22, [r9, #+8] :: Sd 0x0000011a *(int*) (Rn + shift) 0x011a +vldr s29, [r2, #-8] :: Sd 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr s8, [r8, #+8] :: Sd 0x0000011a *(int*) (Rn + shift) 0x011a +vldr s11, [r12, #-4] :: Sd 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr s18, [r3] :: Sd 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr s5, [r10, #+8] :: Sd 0x0000011a *(int*) (Rn + shift) 0x011a +vldr s17, [r10] :: Sd 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr s9, [r9, #-4] :: Sd 0x00000bb1 *(int*) (Rn + shift) 0x0bb1 +vldr s29, [r4, #-8] :: Sd 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr s21, [r6, #+4] :: Sd 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +vldr s8, [r4] :: Sd 0x00000cc2 *(int*) (Rn + shift) 0x0cc2 +vldr s19, [r0, #-8] :: Sd 0x00000aa0 *(int*) (Rn + shift) 0x0aa0 +vldr s10, [r3, #+4] :: Sd 0x00000dd3 *(int*) (Rn + shift) 0x0dd3 +---- VLDM (Increment After, writeback) ---- +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x00000aa0 0x00000bb1 0x00000cc2 0x00000dd3 +---- VSTR ---- +vstr d9, [r6, #+4] :: Dd 0xa0a0a0a0 0xa0a0a0a0 *(int*) (Rm + shift) 0xa0a0a0a0 +vstr d16, [r9, #-4] :: Dd 0xb1b1b1b1 0xb1b1b1b1 *(int*) (Rm + shift) 0xb1b1b1b1 +vstr d30, [r12] :: Dd 0xc2c2c2c2 0xc2c2c2c2 *(int*) (Rm + shift) 0xc2c2c2c2 +vstr d22, [r9, #+8] :: Dd 0xd4d4d4d4 0xd4d4d4d4 *(int*) (Rm + shift) 0xd4d4d4d4 +vstr d29, [r2, #-8] :: Dd 0x00000000 0x00000000 *(int*) (Rm + shift) 0x0000 +vstr d8, [r8, #+8] :: Dd 0x11111111 0x11111111 *(int*) (Rm + shift) 0x11111111 +vstr d11, [r12, #-4] :: Dd 0x22222222 0x22222222 *(int*) (Rm + shift) 0x22222222 +vstr d18, [r3] :: Dd 0x33333333 0x33333333 *(int*) (Rm + shift) 0x33333333 +vstr d5, [r10, #+8] :: Dd 0x99999999 0x99999999 *(int*) (Rm + shift) 0x99999999 +vstr d17, [r10] :: Dd 0x77777777 0x77777777 *(int*) (Rm + shift) 0x77777777 +vstr d9, [r9, #-4] :: Dd 0xeeeeeeee 0xeeeeeeee *(int*) (Rm + shift) 0xeeeeeeee +vstr d29, [r4, #-8] :: Dd 0xffffffff 0xffffffff *(int*) (Rm + shift) 0xffffffff +vstr d10, [r3, #+4] :: Dd 0xbcbcbcbc 0xbcbcbcbc *(int*) (Rm + shift) 0xbcbcbcbc +vstr d21, [r6, #+4] :: Dd 0x48484848 0x48484848 *(int*) (Rm + shift) 0x48484848 +vstr d8, [r4] :: Dd 0x1f1f1f1f 0x1f1f1f1f *(int*) (Rm + shift) 0x1f1f1f1f +vstr d19, [r0, #-8] :: Dd 0xf9f9f9f9 0xf9f9f9f9 *(int*) (Rm + shift) 0xf9f9f9f9 +vstr s9, [r6, #+4] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s21, [r9, #-4] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s4, [r3, #+8] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s19, [r4, #-8] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s29, [r8] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s8, [r12] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s16, [r0, #+4] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s0, [r8, #-4] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s3, [r9, #+8] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s9, [r10, #-8] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s11, [r2] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +vstr s30, [r0] :: Sd 0xbe280000, *(int*) (Rm + shift) 0xbe280000 +---- VSTM (Increment After, no writeback) ---- +vstmia r6, {d21} :: Result 0xabababab 0xabababab +vstmia r1, {d1} :: Result 0x13131313 0x13131313 +vstmia r9, {d2} :: Result 0x78787878 0x78787878 +vstmia r4, {d30} :: Result 0x00000000 0x00000000 +vstmia r12, {d23} :: Result 0xb9b9b9b9 0xb9b9b9b9 +vstmia r6, {d16} :: Result 0xa6a6a6a6 0xa6a6a6a6 +vstmia r6, {d8} :: Result 0x7f7f7f7f 0x7f7f7f7f +vstmia r6, {d27} :: Result 0xffffffff 0xffffffff +vstmia r5, {d11} :: Result 0x32323232 0x32323232 +vstmia r6, {d4} :: Result 0x10101010 0x10101010 +vstmia r10, {d9} :: Result 0x4f4f4f4f 0x4f4f4f4f +vstmia r9, {d29} :: Result 0x97979797 0x97979797 +vstmia r10, {d17} :: Result 0xaaaaaaaa 0xaaaaaaaa +vstmia r5, {d5} :: Result 0x2b2b2b2b 0x2b2b2b2b +vstmia r9, {d7} :: Result 0x7b7b7b7b 0x7b7b7b7b +vstmia r3, {d16} :: Result 0x11111111 0x11111111 +vstmia r6, {s21} :: Result 0x000000ab +vstmia r1, {s1} :: Result 0x00000013 +vstmia r9, {s2} :: Result 0x00000078 +vstmia r4, {s30} :: Result 0x00000000 +vstmia r12, {s23} :: Result 0x000000b9 +vstmia r6, {s16} :: Result 0xa613451d +vstmia r6, {s8} :: Result 0x0000007f +vstmia r6, {s27} :: Result 0xff800000 +vstmia r5, {s11} :: Result 0x7fc00000 +vstmia r6, {s4} :: Result 0x00010ccb +vstmia r10, {s9} :: Result 0x0004f543 +vstmia r9, {s29} :: Result 0x0097001a +vstmia r10, {s17} :: Result 0x000aa45f +vstmia r5, {s5} :: Result 0x7fc00000 +vstmia r9, {s7} :: Result 0xff800000 +vstmia r3, {s16} :: Result 0x7f800000 +---- VSTM (Increment After, writeback) ---- +vstmia r6!, d21; vstmia r6!, d2 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r1!, d1; vstmia r1!, d5 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r9!, d2; vstmia r9!, d17 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r4!, d30; vstmia r4!, d21 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r12!, d23; vstmia r12!, d29 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r6!, d16; vstmia r6!, d30 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r6!, d8; vstmia r6!, d12 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r6!, d27; vstmia r6!, d24 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r5!, d11; vstmia r5!, d13 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r6!, d4; vstmia r6!, d31 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r10!, d9; vstmia r10!, d27 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r9!, d29; vstmia r9!, d17 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r10!, d17; vstmia r10!, d7 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r5!, d5; vstmia r5!, d8 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r9!, d7; vstmia r9!, d16 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r3!, d16; vstmia r3!, d21 :: Result 0xa0a0a0a0 0xa0a0a0a0 0xb1b1b1b1 0xb1b1b1b1 +vstmia r6!, s21; vstmia r6!, s2 :: Result 0xbff80000 0x3fa80000 +vstmia r12!, s23; vstmia r12!, s21 :: Result 0xbff80000 0x3fa80000 +vstmia r3!, s3; vstmia r3!, s3 :: Result 0x3fa80000 0x3fa80000 +vstmia r10!, s19; vstmia r10!, s5 :: Result 0xbff80000 0x3fa80000 +vstmia r2!, s3; vstmia r2!, s12 :: Result 0xbff80000 0x3fa80000 +vstmia r8!, s7; vstmia r8!, s10 :: Result 0xbff80000 0x3fa80000 +vstmia r4!, s30; vstmia r4!, s13 :: Result 0xbff80000 0x3fa80000 +vstmia r6!, s17; vstmia r6!, s17 :: Result 0x3fa80000 0x3fa80000 +vstmia r9!, s11; vstmia r9!, s21 :: Result 0xbff80000 0x3fa80000 +vstmia r9!, s8; vstmia r9!, s30 :: Result 0xbff80000 0x3fa80000 +vstmia r3!, s12; vstmia r3!, s9 :: Result 0xbff80000 0x3fa80000 +vstmia r6!, s6; vstmia r6!, s11 :: Result 0xbff80000 0x3fa80000 +vstmia r8!, s17; vstmia r8!, s12 :: Result 0xbff80000 0x3fa80000 +vstmia r9!, s12; vstmia r9!, s12 :: Result 0x3fa80000 0x3fa80000 +vstmia r4!, s11; vstmia r4!, s11 :: Result 0x3fa80000 0x3fa80000 +---- VLDM (Decrement Before) ---- +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x00000cc2 0x00000dd3 0x00000aa0 0x00000bb1 +----- VMOV (immediate) ----- +vmov s0, #0xbe880000 :: Sd 0xbe880000 +vmov s1, #0x3fa80000 :: Sd 0x3fa80000 +vmov s2, #0xbf080000 :: Sd 0xbf080000 +vmov s5, #0x3eb80000 :: Sd 0x3eb80000 +vmov s7, #0xbff80000 :: Sd 0xbff80000 +vmov s10, #0xbe280000 :: Sd 0xbe280000 +vmov s12, #0x40000000 :: Sd 0x40000000 +vmov s13, #0x3e880000 :: Sd 0x3e880000 +vmov s14, #0xbee80000 :: Sd 0xbee80000 +vmov s15, #0xc0b80000 :: Sd 0xc0b80000 +----- VMOV (ARM core register and single register) ----- +s12 0x04000aad vmov r12, s12 :: r12 0x04000aad +s5 0x00ab45e7 vmov r2, s5 :: r2 0x00ab45e7 +s15 0x000add12 vmov r5, s15 :: r5 0x000add12 +s11 0x876450ff vmov r8, s11 :: r8 0x876450ff +s5 0x0000ffff vmov r9, s5 :: r9 0x0000ffff +s9 0x0087d34f vmov r10, s9 :: r10 0x0087d34f +s10 0x0000ffff vmov r9, s10 :: r9 0x0000ffff +s8 0x000ad4f8 vmov r6, s8 :: r6 0x000ad4f8 +s14 0x0920b8cf vmov r4, s14 :: r4 0x0920b8cf +s7 0x7fc00000 vmov r3, s7 :: r3 0x7fc00000 +s0 0xff800000 vmov r2, s0 :: r2 0xff800000 +s1 0x7f800000 vmov r0, s1 :: r0 0x7f800000 +r9 0x0009465a vmov s2, r9 :: s2 0x0009465a +r0 0x00d0b87a vmov s14, r0 :: s14 0x00d0b87a +r2 0x0452bbc8 vmov s4, r2 :: s4 0x0452bbc8 +r8 0x00a7cb3d vmov s7, r8 :: s7 0x00a7cb3d +r4 0x000dd8ec vmov s9, r4 :: s9 0x000dd8ec +r12 0x008a7b6e vmov s10, r12 :: s10 0x008a7b6e +r9 0x0004b00a vmov s13, r9 :: s13 0x0004b00a +r3 0x00023455 vmov s3, r3 :: s3 0x00023455 +r5 0x7f800000 vmov s5, r5 :: s5 0x7f800000 +r6 0xff800000 vmov s8, r6 :: s8 0xff800000 +r0 0x000acb45 vmov s4, r0 :: s4 0x000acb45 +r6 0x7fc00000 vmov s0, r6 :: s0 0x7fc00000 +----- VMOV (ARM two core registers and two single registers) ----- + r6 0x43252acc r9 0x000abcc4 +vmov s0, s1, r6, r9 :: s0 0x43252acc s1 0x000abcc4 + r9 0x43252acc r9 0x000abcc4 +vmov s0, s1, r9, r9 :: s0 0x000abcc4 s1 0x000abcc4 + r9 0xaa2e2acc r1 0x00000337 +vmov s30, s31, r9, r1 :: s30 0xaa2e2acc s31 0x00000337 + r10 0x7fc00000 r9 0x7fc00000 +vmov s20, s21, r10, r9 :: s20 0x7fc00000 s21 0x7fc00000 + r10 0x7fc00000 r9 0x7f800000 +vmov s20, s21, r10, r9 :: s20 0x7fc00000 s21 0x7f800000 + r10 0x7fc00000 r9 0xff800000 +vmov s20, s21, r10, r9 :: s20 0x7fc00000 s21 0xff800000 + r10 0x7fc00000 r9 0x00000000 +vmov s20, s21, r10, r9 :: s20 0x7fc00000 s21 0x00000000 + r10 0x7f800000 r9 0x7fc00000 +vmov s20, s21, r10, r9 :: s20 0x7f800000 s21 0x7fc00000 + r10 0x7f800000 r9 0x7f800000 +vmov s20, s21, r10, r9 :: s20 0x7f800000 s21 0x7f800000 + r10 0x7f800000 r9 0xff800000 +vmov s20, s21, r10, r9 :: s20 0x7f800000 s21 0xff800000 + r10 0x7f800000 r9 0x00000000 +vmov s20, s21, r10, r9 :: s20 0x7f800000 s21 0x00000000 + r10 0xff800000 r9 0x7fc00000 +vmov s20, s21, r10, r9 :: s20 0xff800000 s21 0x7fc00000 + r10 0xff800000 r9 0x7f800000 +vmov s20, s21, r10, r9 :: s20 0xff800000 s21 0x7f800000 + r10 0xff800000 r9 0xff800000 +vmov s20, s21, r10, r9 :: s20 0xff800000 s21 0xff800000 + r10 0xff800000 r9 0x00000000 +vmov s20, s21, r10, r9 :: s20 0xff800000 s21 0x00000000 + r10 0x00000000 r9 0x7fc00000 +vmov s20, s21, r10, r9 :: s20 0x00000000 s21 0x7fc00000 + r10 0x00000000 r9 0x7f800000 +vmov s20, s21, r10, r9 :: s20 0x00000000 s21 0x7f800000 + r10 0x00000000 r9 0xff800000 +vmov s20, s21, r10, r9 :: s20 0x00000000 s21 0xff800000 + r10 0x00000000 r9 0x00000000 +vmov s20, s21, r10, r9 :: s20 0x00000000 s21 0x00000000 + r10 0x7fc00001 r9 0x7fc00000 +vmov s20, s21, r10, r9 :: s20 0x7fc00001 s21 0x7fc00000 + r10 0x7fc00001 r9 0x00000000 +vmov s20, s21, r10, r9 :: s20 0x7fc00001 s21 0x00000000 + r10 0x7fc00000 r9 0x7fbfffff +vmov s20, s21, r10, r9 :: s20 0x7fc00000 s21 0x7fbfffff + r10 0x00000000 r9 0x7fbfffff +vmov s20, s21, r10, r9 :: s20 0x00000000 s21 0x7fbfffff + s12 0x04000aad s13 0x000affff +vmov r12, r9, s12, s13 :: r12 0x04000aad r9 0x000affff + s12 0x040ee56d s13 0x000123ff +vmov r0, r9, s12, s13 :: r0 0x040ee56d r9 0x000123ff + s12 0x04000aad s13 0x000affff +vmov r12, r9, s12, s13 :: r12 0x04000aad r9 0x000affff + s20 0x7fc00000 s21 0x7fc00000 +vmov r10, r9, s20, s21 :: r10 0x7fc00000 r9 0x7fc00000 + s20 0x7fc00000 s21 0x7f800000 +vmov r10, r9, s20, s21 :: r10 0x7fc00000 r9 0x7f800000 + s20 0x7fc00000 s21 0xff800000 +vmov r10, r9, s20, s21 :: r10 0x7fc00000 r9 0xff800000 + s20 0x7fc00000 s21 0x00000000 +vmov r10, r9, s20, s21 :: r10 0x7fc00000 r9 0x00000000 + s20 0x7f800000 s21 0x7fc00000 +vmov r10, r9, s20, s21 :: r10 0x7f800000 r9 0x7fc00000 + s20 0x7f800000 s21 0x7f800000 +vmov r10, r9, s20, s21 :: r10 0x7f800000 r9 0x7f800000 + s20 0x7f800000 s21 0xff800000 +vmov r10, r9, s20, s21 :: r10 0x7f800000 r9 0xff800000 + s20 0x7f800000 s21 0x00000000 +vmov r10, r9, s20, s21 :: r10 0x7f800000 r9 0x00000000 + s20 0xff800000 s21 0x7fc00000 +vmov r10, r9, s20, s21 :: r10 0xff800000 r9 0x7fc00000 + s20 0xff800000 s21 0x7f800000 +vmov r10, r9, s20, s21 :: r10 0xff800000 r9 0x7f800000 + s20 0xff800000 s21 0xff800000 +vmov r10, r9, s20, s21 :: r10 0xff800000 r9 0xff800000 + s20 0xff800000 s21 0x00000000 +vmov r10, r9, s20, s21 :: r10 0xff800000 r9 0x00000000 + s20 0x00000000 s21 0x7fc00000 +vmov r10, r9, s20, s21 :: r10 0x00000000 r9 0x7fc00000 + s20 0x00000000 s21 0x7f800000 +vmov r10, r9, s20, s21 :: r10 0x00000000 r9 0x7f800000 + s20 0x00000000 s21 0xff800000 +vmov r10, r9, s20, s21 :: r10 0x00000000 r9 0xff800000 + s20 0x00000000 s21 0x00000000 +vmov r10, r9, s20, s21 :: r10 0x00000000 r9 0x00000000 + s20 0x7fc00001 s21 0x7fc00000 +vmov r10, r9, s20, s21 :: r10 0x7fc00001 r9 0x7fc00000 + s20 0x7fc00001 s21 0x00000000 +vmov r10, r9, s20, s21 :: r10 0x7fc00001 r9 0x00000000 + s20 0x7fc00000 s21 0x7fbfffff +vmov r10, r9, s20, s21 :: r10 0x7fc00000 r9 0x7fbfffff + s20 0x00000000 s21 0x7fbfffff +vmov r10, r9, s20, s21 :: r10 0x00000000 r9 0x7fbfffff +----- VMOV (ARM two core registers and double register) ----- +r6 0x43252acc r9 0x00045bbd vmov d3, r6, r9 :: d3 0x43252acc 0x00045bbd +r10 0x001243b4 r2 0x00237ffb vmov d4, r10, r2 :: d4 0x001243b4 0x00237ffb +r1 0x00030cc4 r6 0x0314c043 vmov d21, r1, r6 :: d21 0x00030cc4 0x0314c043 +r9 0x00008ddf r9 0x0087bbca vmov d30, r9, r9 :: d30 0x0087bbca 0x0087bbca +r3 0x0000aaa0 r5 0x0000bbb1 vmov d29, r3, r5 :: d29 0x0000aaa0 0x0000bbb1 +r8 0x0aa455bb r8 0x00013434 vmov d16, r8, r8 :: d16 0x00013434 0x00013434 +r12 0x00004003 r9 0x0452bbc1 vmov d17, r12, r9 :: d17 0x00004003 0x0452bbc1 +r9 0x0000134c r0 0x0041ffb6 vmov d9, r9, r0 :: d9 0x0000134c 0x0041ffb6 +r0 0x35425dcc r6 0x00876c43 vmov d7, r0, r6 :: d7 0x35425dcc 0x00876c43 +r3 0x00000000 r9 0x7ff80000 vmov d13, r3, r9 :: d13 0x00000000 0x7ff80000 +r6 0x00000000 r5 0x7ff00000 vmov d19, r6, r5 :: d19 0x00000000 0x7ff00000 +r2 0x00000000 r6 0xfff00000 vmov d0, r2, r6 :: d0 0x00000000 0xfff00000 +d9 0x43252acc 0x00045bbd vmov r3, r6, d9 :: r3 0x43252acc r6 0x00045bbd +d2 0x001243b4 0x00237ffb vmov r4, r10, d2 :: r4 0x001243b4 r10 0x00237ffb +d6 0x00030cc4 0x0314c043 vmov r2, r1, d6 :: r2 0x00030cc4 r1 0x0314c043 +d11 0x00008ddf 0x0087bbca vmov r0, r9, d11 :: r0 0x00008ddf r9 0x0087bbca +d5 0x0000aaa0 0x0000bbb1 vmov r9, r3, d5 :: r9 0x0000aaa0 r3 0x0000bbb1 +d8 0x0aa455bb 0x00013434 vmov r10, r8, d8 :: r10 0x0aa455bb r8 0x00013434 +d11 0x00004003 0x0452bbc1 vmov r9, r12, d11 :: r9 0x00004003 r12 0x0452bbc1 +d7 0x35425dcc 0x00876c43 vmov r6, r0, d7 :: r6 0x35425dcc r0 0x00876c43 +d11 0x00000000 0x7ff80000 vmov r12, r3, d11 :: r12 0x00000000 r3 0x7ff80000 +d5 0x00000000 0x7ff00000 vmov r1, r6, d5 :: r1 0x00000000 r6 0x7ff00000 +d7 0x00000000 0xfff00000 vmov r0, r2, d7 :: r0 0x00000000 r2 0xfff00000 +d0 0x00000000 0x7ff00000 vmov r2, r9, d0 :: r2 0x00000000 r9 0x7ff00000 +d10 0x0014534c 0x0041ffb6 vmov r6, r9, d10 :: r6 0x0014534c r9 0x0041ffb6 +d20 0x00000000 0x7ff80000 vmov r0, r9, d20 :: r0 0x00000000 r9 0x7ff80000 +----- VPUSH, VPOP ----- +s3 0x00aaaaaa s4 0x00bbbbbb s5 0x00cccccc s0 0x00cccccc s1 0x00aaaaaa s2 0x00bbbbbb +s1 0x000134f4 s2 0x0870ccb3 s3 0x00aba0f1 s9 0x00aba0f1 s10 0x000134f4 s11 0x0870ccb3 +s3 0x00dddddd s4 0x00eeeeee s5 0x00ffffff s0 0x00ffffff s1 0x00dddddd s2 0x00eeeeee +s11 0x0013454c s12 0x00000341 s13 0x00aac45f s6 0x00aac45f s7 0x0013454c s8 0x00000341 +s21 0x00000000 s22 0x7fc00000 s23 0x7f800000 s23 0x7f800000 s24 0x00000000 s25 0x7fc00000 +s12 0x00ffffff s13 0x0f542dd4 s14 0xff800000 s11 0xff800000 s12 0x00ffffff s13 0x0f542dd4 +s25 0x000045cd s26 0x00a3ccb5 s27 0x000bbcaf s0 0x000bbcaf s1 0x000045cd s2 0x00a3ccb5 +s1 0x7fc00000 s2 0x000aaca3 s3 0x00876008 s6 0x00876008 s7 0x7fc00000 s8 0x000aaca3 +s9 0x003cc66a s10 0x00002f43 s11 0x7f800000 s9 0x003cc66a s10 0x00002f43 s11 0x7f800000 +s10 0x7f800000 s11 0x00134cc5 s12 0x7fc00000 s2 0x7fc00000 s3 0x7f800000 s4 0x00134cc5 +s7 0x00cc006d s8 0x0001308c s9 0x00abbc45 s21 0x00abbc45 s22 0x00cc006d s23 0x0001308c +s19 0xff800000 s20 0x00452146 s21 0x00388bbc s4 0x00388bbc s5 0xff800000 s6 0x00452146 +s16 0x000542aa s17 0x00addcd5 s18 0x00087acc s18 0x00087acc s19 0x000542aa s20 0x00addcd5 +s22 0x05ccb708 s23 0x0052345c s24 0x0098745c s12 0x0098745c s13 0x05ccb708 s14 0x0052345c +s24 0x0099234f s25 0x00001aac s26 0x0003746c s28 0x0003746c s29 0x0099234f s30 0x00001aac +s13 0x00134ccc s14 0x0006bb43 s15 0x000834aa s0 0x000834aa s1 0x00134ccc s2 0x0006bb43 +d3 0x00aaaaaa 0000aac3 d4 0x00bbbbbb 00034ccb d0 0x00aaaaaa 0000aac3 d1 0x00bbbbbb 00034ccb +d1 0x000134f4 00341531 d2 0x0870ccb3 04576bbc d9 0x000134f4 00341531 d10 0x0870ccb3 04576bbc +d3 0x00dddddd 013451cc d4 0x00eeeeee 0123ddc8 d0 0x00dddddd 013451cc d1 0x00eeeeee 0123ddc8 +d11 0x0013454c 0541bbc3 d12 0x00000341 0000ccb5 d6 0x0013454c 0541bbc3 d7 0x00000341 0000ccb5 +d21 0x00000000 00123c33 d22 0x00000000 7ff80000 d23 0x00000000 00123c33 d24 0x00000000 7ff80000 +d12 0x0f542dd4 00788ffc d13 0x0f542dd4 00788ffc d11 0x00ffffff 0001940c d12 0x0f542dd4 00788ffc +d25 0x000045cd 0001309c d26 0x00a3ccb5 0004588b d0 0x000045cd 0001309c d1 0x00a3ccb5 0004588b +d1 0x00000000 7ff80000 d2 0x000aaca3 0001120a d6 0x00000000 7ff80000 d7 0x000aaca3 0001120a +d9 0x00002f43 00019ff9 d10 0x00000000 7ff00000 d9 0x00002f43 00019ff9 d10 0x00000000 7ff00000 +d10 0x00000000 7ff00000 d11 0x00134cc5 0078cbbd d2 0x00000000 7ff00000 d3 0x00134cc5 0078cbbd +d7 0x00cc006d 00028354 d8 0x0001308c 001993bc d21 0x00cc006d 00028354 d22 0x0001308c 001993bc +d19 0x00000000 fff00000 d20 0x00452146 0138476c d4 0x00000000 fff00000 d5 0x00452146 0138476c +d16 0x000542aa 00012dd4 d17 0x00addcd5 000399cb d18 0x000542aa 00012dd4 d19 0x00addcd5 000399cb +d22 0x05ccb708 0008009c d23 0x0052345c 0029902c d12 0x05ccb708 0008009c d13 0x0052345c 0029902c +d24 0x0099234f 003457ff d25 0x00001aac 01002cba d28 0x0099234f 003457ff d29 0x00001aac 01002cba +d13 0x00134ccc 00faa309 d14 0x0006bb43 000199cb d0 0x00134ccc 00faa309 d1 0x0006bb43 000199cb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.vgtest new file mode 100644 index 000000000..fd3e759bd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/arm/vfp.vgtest @@ -0,0 +1,2 @@ +prog: vfp +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/bug129866.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/bug129866.c index abb8b2f0e..da13aca87 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/bug129866.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/bug129866.c @@ -25,7 +25,7 @@ char * touch_realloc (char * ptr, int size) int main ( void ) { - char *a1, *b1, *a2, *b2; + char *a1, *b1, *a2 __attribute__((unused)), *b2 __attribute__((unused)); printf("started\n"); a1 = touch_malloc(1600000) ; b1 = touch_malloc(200000) ; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline1.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline1.stdout.exp index c06b53fd3..641304a89 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline1.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline1.stdout.exp @@ -12,7 +12,13 @@ usage: valgrind [options] prog-and-args --trace-children=no|yes Valgrind-ise child processes (follow execve)? [no] --trace-children-skip=patt1,patt2,... specifies a list of executables that --trace-children=yes should not trace into + --trace-children-skip-by-arg=patt1,patt2,... same as --trace-children-skip= + but check the argv[] entries for children, rather + than the exe name, to make a follow/no-follow decision --child-silent-after-fork=no|yes omit child output between fork & exec? [no] + --vgdb=no|yes|full activate gdbserver? [yes] + full is slower but provides precise watchpoint/step + --vgdb-error= invoke gdbserver after errors [999999999] --track-fds=no|yes track open file descriptors? [no] --time-stamp=no|yes add timestamps to log messages? [no] --log-fd= log messages to file descriptor [2=stderr] @@ -45,12 +51,21 @@ usage: valgrind [options] prog-and-args --alignment= set minimum alignment of heap allocations [...] uncommon user options for all Valgrind tools: + --fullpath-after= (with nothing after the '=') + show full source paths in call stacks + --fullpath-after=string like --fullpath-after=, but only show the + part of the path after 'string'. Allows removal + of path prefixes. Use this flag multiple times + to specify a set of prefixes to remove. --smc-check=none|stack|all checks for self-modifying code: none, only for code found in stacks, or all [stack] --read-var-info=yes|no read debug info on stack and global variables and use it to print better error messages in tools that make use of it (Memcheck, Helgrind, DRD) [no] + --vgdb-poll= gdbserver poll max every basic blocks [5000] + --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no] + --vgdb-prefix= prefix for vgdb FIFOs [/tmp/vgdb-pipe] --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes] --sim-hints=hint1,hint2,... known hints: lax-ioctls, enable-outer [none] @@ -68,7 +83,7 @@ usage: valgrind [options] prog-and-args Nulgrind is Copyright (C) 2002-2010, and GNU GPL'd, by Nicholas Nethercote. Valgrind is Copyright (C) 2000-2010, and GNU GPL'd, by Julian Seward et al. - LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP. + LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP et al. Bug reports, feedback, admiration, abuse, etc, to: www.valgrind.org. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline2.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline2.stdout.exp index caa7eb068..e66858d38 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline2.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/cmdline2.stdout.exp @@ -12,7 +12,13 @@ usage: valgrind [options] prog-and-args --trace-children=no|yes Valgrind-ise child processes (follow execve)? [no] --trace-children-skip=patt1,patt2,... specifies a list of executables that --trace-children=yes should not trace into + --trace-children-skip-by-arg=patt1,patt2,... same as --trace-children-skip= + but check the argv[] entries for children, rather + than the exe name, to make a follow/no-follow decision --child-silent-after-fork=no|yes omit child output between fork & exec? [no] + --vgdb=no|yes|full activate gdbserver? [yes] + full is slower but provides precise watchpoint/step + --vgdb-error= invoke gdbserver after errors [999999999] --track-fds=no|yes track open file descriptors? [no] --time-stamp=no|yes add timestamps to log messages? [no] --log-fd= log messages to file descriptor [2=stderr] @@ -45,12 +51,21 @@ usage: valgrind [options] prog-and-args --alignment= set minimum alignment of heap allocations [...] uncommon user options for all Valgrind tools: + --fullpath-after= (with nothing after the '=') + show full source paths in call stacks + --fullpath-after=string like --fullpath-after=, but only show the + part of the path after 'string'. Allows removal + of path prefixes. Use this flag multiple times + to specify a set of prefixes to remove. --smc-check=none|stack|all checks for self-modifying code: none, only for code found in stacks, or all [stack] --read-var-info=yes|no read debug info on stack and global variables and use it to print better error messages in tools that make use of it (Memcheck, Helgrind, DRD) [no] + --vgdb-poll= gdbserver poll max every basic blocks [5000] + --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no] + --vgdb-prefix= prefix for vgdb FIFOs [/tmp/vgdb-pipe] --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes] --sim-hints=hint1,hint2,... known hints: lax-ioctls, enable-outer [none] @@ -119,7 +134,7 @@ usage: valgrind [options] prog-and-args Nulgrind is Copyright (C) 2002-2010, and GNU GPL'd, by Nicholas Nethercote. Valgrind is Copyright (C) 2000-2010, and GNU GPL'd, by Julian Seward et al. - LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP. + LibVEX is Copyright (C) 2004-2010, and GNU GPL'd, by OpenWorks LLP et al. Bug reports, feedback, admiration, abuse, etc, to: www.valgrind.org. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/coolo_sigaction.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/coolo_sigaction.cpp index 248174646..a1913ee13 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/coolo_sigaction.cpp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/coolo_sigaction.cpp @@ -42,12 +42,11 @@ int main() { int i; char buffer[200]; - size_t dummy_size_t; setupHandlers(); FILE *p = popen("echo Hallo World", "r"); while (!feof(p)) { int n = fread(buffer, 200, 1, p); - dummy_size_t = write(2, buffer, n); + __attribute__((unused)) ssize_t nw = write(2, buffer, n); } fclose(p); for (i = 0; i < 1000000; i++) ; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/darwin/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/darwin/Makefile.in index a6288512f..d6ac35c1f 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/darwin/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/darwin/Makefile.in @@ -122,6 +122,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -151,12 +153,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -309,7 +306,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -338,6 +335,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -366,6 +368,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/discard.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/discard.c index 3a1fc653d..a5e6b5210 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/discard.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/discard.c @@ -22,7 +22,7 @@ void someother ( void ) int main ( void ) { printf("fooble-1() = %d\n", fooble() ); - VALGRIND_DISCARD_TRANSLATIONS( (char*)(&fooble), + (void)VALGRIND_DISCARD_TRANSLATIONS( (char*)(&fooble), ((char*)(&someother)) - ((char*)(&fooble)) ); printf("fooble-2() = %d\n", fooble() ); return 0; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/faultstatus.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/faultstatus.c index a41dfd442..4f2de03dd 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/faultstatus.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/faultstatus.c @@ -70,7 +70,13 @@ static int testcode(int code, int want) static int testaddr(void *addr, volatile void *want) { + /* Some architectures (e.g. s390) just provide enough information to + resolve the page fault, but do not provide the offset within a page */ +#if defined(__s390__) + if (addr != (void *) ((unsigned long) want & ~0xffful)) { +#else if (addr != want) { +#endif fprintf(stderr, " FAIL: expected si_addr==%p, not %p\n", want, addr); return 0; } @@ -132,7 +138,8 @@ int main() for(i = 0; i < sizeof(sigs)/sizeof(*sigs); i++) sigaction(sigs[i], &sa, NULL); - fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL, 0600); + /* we need O_RDWR for the truncate below */ + fd = open("faultstatus.tmp", O_CREAT|O_TRUNC|O_EXCL|O_RDWR, 0600); if (fd == -1) { perror("tmpfile"); exit(1); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/Makefile.in index 7c1df8fa5..e0fb53784 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/Makefile.in @@ -121,6 +121,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -150,12 +152,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -308,7 +305,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -337,6 +334,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -365,6 +367,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/mremap2.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/mremap2.c index 76c282624..b8ad06821 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/mremap2.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/linux/mremap2.c @@ -74,7 +74,7 @@ char* setup ( void* other_stuff, int other_len ) /* show the working area */ void show ( void ) { - int i,r; + int i,r __attribute__((unused)); for (i = 0; i < 200; i++) { r = mprotect( workingarea + i * PAGE, PAGE, PROT_NONE ); // We used to print 'X' or '.' according to the mprotect result, but the diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.am index 1f564fb57..1da5435f8 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.am @@ -12,27 +12,54 @@ EXTRA_DIST = \ lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ + jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.stdout.exp_Minus_nan \ + jm-vmx.vgtest \ mftocrf.stderr.exp mftocrf.stdout.exp mftocrf.vgtest \ mcrfs.stderr.exp mcrfs.stdout.exp mcrfs.vgtest \ round.stderr.exp round.stdout.exp round.vgtest \ - test_fx.stderr.exp test_fx.stdout.exp test_fx.vgtest \ - test_gx.stderr.exp test_gx.stdout.exp test_gx.vgtest \ + test_fx.stderr.exp test_fx.stdout.exp test_fx.stdout.exp_Minus_nan \ + test_fx.vgtest \ + test_gx.stderr.exp test_gx.stdout.exp test_gx.stdout.exp_Minus_nan \ + test_gx.vgtest \ testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ twi.stderr.exp twi.stdout.exp twi.vgtest \ tw.stderr.exp tw.stdout.exp tw.vgtest \ - xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest + xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ + power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ + power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ + test_isa_2_06_part1.stderr.exp test_isa_2_06_part1.stdout.exp test_isa_2_06_part1.vgtest check_PROGRAMS = \ bug129390-ppc32 \ bug139050-ppc32 \ ldstrev lsw jm-insns mftocrf mcrfs round test_fx test_gx \ - testVMX twi tw xlc_dbl_u32 + testVMX twi tw xlc_dbl_u32 power5+_round power6_bcmp \ + test_isa_2_06_part1 AM_CFLAGS += @FLAG_M32@ AM_CXXFLAGS += @FLAG_M32@ AM_CCASFLAGS += @FLAG_M32@ -jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec @FLAG_M32@ +if HAS_ALTIVEC +ALTIVEC_FLAG = -DHAS_ALTIVEC +else +ALTIVEC_FLAG = +endif + +if HAS_VSX +BUILD_FLAG_VSX = -mvsx +VSX_FLAG = -DHAS_VSX +else +BUILD_FLAG_VSX = +VSX_FLAG = +endif + +jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec \ + @FLAG_M32@ $(ALTIVEC_FLAG) + testVMX_CFLAGS = $(AM_CFLAGS) -O -g -Wall -maltivec -mabi=altivec -DALTIVEC \ -DGCC_COMPILER @FLAG_M32@ + +test_isa_2_06_part1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_FLAG) \ + @FLAG_M32@ $(ALTIVEC_FLAG) $(BUILD_FLAG_VSX) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.in index d53de596f..c1513753d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/Makefile.in @@ -50,7 +50,9 @@ check_PROGRAMS = bug129390-ppc32$(EXEEXT) bug139050-ppc32$(EXEEXT) \ ldstrev$(EXEEXT) lsw$(EXEEXT) jm-insns$(EXEEXT) \ mftocrf$(EXEEXT) mcrfs$(EXEEXT) round$(EXEEXT) \ test_fx$(EXEEXT) test_gx$(EXEEXT) testVMX$(EXEEXT) \ - twi$(EXEEXT) tw$(EXEEXT) xlc_dbl_u32$(EXEEXT) + twi$(EXEEXT) tw$(EXEEXT) xlc_dbl_u32$(EXEEXT) \ + power5+_round$(EXEEXT) power6_bcmp$(EXEEXT) \ + test_isa_2_06_part1$(EXEEXT) subdir = none/tests/ppc32 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -83,6 +85,12 @@ mcrfs_LDADD = $(LDADD) mftocrf_SOURCES = mftocrf.c mftocrf_OBJECTS = mftocrf.$(OBJEXT) mftocrf_LDADD = $(LDADD) +power5__round_SOURCES = power5+_round.c +power5__round_OBJECTS = power5+_round.$(OBJEXT) +power5__round_LDADD = $(LDADD) +power6_bcmp_SOURCES = power6_bcmp.c +power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) +power6_bcmp_LDADD = $(LDADD) round_SOURCES = round.c round_OBJECTS = round.$(OBJEXT) round_LDADD = $(LDADD) @@ -97,6 +105,12 @@ test_fx_LDADD = $(LDADD) test_gx_SOURCES = test_gx.c test_gx_OBJECTS = test_gx.$(OBJEXT) test_gx_LDADD = $(LDADD) +test_isa_2_06_part1_SOURCES = test_isa_2_06_part1.c +test_isa_2_06_part1_OBJECTS = \ + test_isa_2_06_part1-test_isa_2_06_part1.$(OBJEXT) +test_isa_2_06_part1_LDADD = $(LDADD) +test_isa_2_06_part1_LINK = $(CCLD) $(test_isa_2_06_part1_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ tw_SOURCES = tw.c tw_OBJECTS = tw.$(OBJEXT) tw_LDADD = $(LDADD) @@ -116,11 +130,13 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = bug129390-ppc32.c bug139050-ppc32.c jm-insns.c ldstrev.c \ - lsw.c mcrfs.c mftocrf.c round.c testVMX.c test_fx.c test_gx.c \ - tw.c twi.c xlc_dbl_u32.c + lsw.c mcrfs.c mftocrf.c power5+_round.c power6_bcmp.c round.c \ + testVMX.c test_fx.c test_gx.c test_isa_2_06_part1.c tw.c twi.c \ + xlc_dbl_u32.c DIST_SOURCES = bug129390-ppc32.c bug139050-ppc32.c jm-insns.c \ - ldstrev.c lsw.c mcrfs.c mftocrf.c round.c testVMX.c test_fx.c \ - test_gx.c tw.c twi.c xlc_dbl_u32.c + ldstrev.c lsw.c mcrfs.c mftocrf.c power5+_round.c \ + power6_bcmp.c round.c testVMX.c test_fx.c test_gx.c \ + test_isa_2_06_part1.c tw.c twi.c xlc_dbl_u32.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -166,6 +182,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -195,12 +213,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -353,7 +366,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -382,6 +395,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -410,6 +428,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -436,21 +455,38 @@ EXTRA_DIST = \ lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ + jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.stdout.exp_Minus_nan \ + jm-vmx.vgtest \ mftocrf.stderr.exp mftocrf.stdout.exp mftocrf.vgtest \ mcrfs.stderr.exp mcrfs.stdout.exp mcrfs.vgtest \ round.stderr.exp round.stdout.exp round.vgtest \ - test_fx.stderr.exp test_fx.stdout.exp test_fx.vgtest \ - test_gx.stderr.exp test_gx.stdout.exp test_gx.vgtest \ + test_fx.stderr.exp test_fx.stdout.exp test_fx.stdout.exp_Minus_nan \ + test_fx.vgtest \ + test_gx.stderr.exp test_gx.stdout.exp test_gx.stdout.exp_Minus_nan \ + test_gx.vgtest \ testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest \ twi.stderr.exp twi.stdout.exp twi.vgtest \ tw.stderr.exp tw.stdout.exp tw.vgtest \ - xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest + xlc_dbl_u32.stderr.exp xlc_dbl_u32.stdout.exp xlc_dbl_u32.vgtest \ + power5+_round.stderr.exp power5+_round.stdout.exp power5+_round.vgtest \ + power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ + test_isa_2_06_part1.stderr.exp test_isa_2_06_part1.stdout.exp test_isa_2_06_part1.vgtest + +@HAS_ALTIVEC_FALSE@ALTIVEC_FLAG = +@HAS_ALTIVEC_TRUE@ALTIVEC_FLAG = -DHAS_ALTIVEC +@HAS_VSX_FALSE@BUILD_FLAG_VSX = +@HAS_VSX_TRUE@BUILD_FLAG_VSX = -mvsx +@HAS_VSX_FALSE@VSX_FLAG = +@HAS_VSX_TRUE@VSX_FLAG = -DHAS_VSX +jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec \ + @FLAG_M32@ $(ALTIVEC_FLAG) -jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec @FLAG_M32@ testVMX_CFLAGS = $(AM_CFLAGS) -O -g -Wall -maltivec -mabi=altivec -DALTIVEC \ -DGCC_COMPILER @FLAG_M32@ +test_isa_2_06_part1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_FLAG) \ + @FLAG_M32@ $(ALTIVEC_FLAG) $(BUILD_FLAG_VSX) + all: all-am .SUFFIXES: @@ -509,6 +545,12 @@ mcrfs$(EXEEXT): $(mcrfs_OBJECTS) $(mcrfs_DEPENDENCIES) mftocrf$(EXEEXT): $(mftocrf_OBJECTS) $(mftocrf_DEPENDENCIES) @rm -f mftocrf$(EXEEXT) $(LINK) $(mftocrf_OBJECTS) $(mftocrf_LDADD) $(LIBS) +power5+_round$(EXEEXT): $(power5__round_OBJECTS) $(power5__round_DEPENDENCIES) + @rm -f power5+_round$(EXEEXT) + $(LINK) $(power5__round_OBJECTS) $(power5__round_LDADD) $(LIBS) +power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) + @rm -f power6_bcmp$(EXEEXT) + $(LINK) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) @rm -f round$(EXEEXT) $(LINK) $(round_OBJECTS) $(round_LDADD) $(LIBS) @@ -521,6 +563,9 @@ test_fx$(EXEEXT): $(test_fx_OBJECTS) $(test_fx_DEPENDENCIES) test_gx$(EXEEXT): $(test_gx_OBJECTS) $(test_gx_DEPENDENCIES) @rm -f test_gx$(EXEEXT) $(LINK) $(test_gx_OBJECTS) $(test_gx_LDADD) $(LIBS) +test_isa_2_06_part1$(EXEEXT): $(test_isa_2_06_part1_OBJECTS) $(test_isa_2_06_part1_DEPENDENCIES) + @rm -f test_isa_2_06_part1$(EXEEXT) + $(test_isa_2_06_part1_LINK) $(test_isa_2_06_part1_OBJECTS) $(test_isa_2_06_part1_LDADD) $(LIBS) tw$(EXEEXT): $(tw_OBJECTS) $(tw_DEPENDENCIES) @rm -f tw$(EXEEXT) $(LINK) $(tw_OBJECTS) $(tw_LDADD) $(LIBS) @@ -544,10 +589,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcrfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mftocrf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power5+_round.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testVMX-testVMX.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xlc_dbl_u32.Po@am__quote@ @@ -594,6 +642,20 @@ testVMX-testVMX.obj: testVMX.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testVMX_CFLAGS) $(CFLAGS) -c -o testVMX-testVMX.obj `if test -f 'testVMX.c'; then $(CYGPATH_W) 'testVMX.c'; else $(CYGPATH_W) '$(srcdir)/testVMX.c'; fi` +test_isa_2_06_part1-test_isa_2_06_part1.o: test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -MT test_isa_2_06_part1-test_isa_2_06_part1.o -MD -MP -MF $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo -c -o test_isa_2_06_part1-test_isa_2_06_part1.o `test -f 'test_isa_2_06_part1.c' || echo '$(srcdir)/'`test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_isa_2_06_part1.c' object='test_isa_2_06_part1-test_isa_2_06_part1.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -c -o test_isa_2_06_part1-test_isa_2_06_part1.o `test -f 'test_isa_2_06_part1.c' || echo '$(srcdir)/'`test_isa_2_06_part1.c + +test_isa_2_06_part1-test_isa_2_06_part1.obj: test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -MT test_isa_2_06_part1-test_isa_2_06_part1.obj -MD -MP -MF $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo -c -o test_isa_2_06_part1-test_isa_2_06_part1.obj `if test -f 'test_isa_2_06_part1.c'; then $(CYGPATH_W) 'test_isa_2_06_part1.c'; else $(CYGPATH_W) '$(srcdir)/test_isa_2_06_part1.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_isa_2_06_part1.c' object='test_isa_2_06_part1-test_isa_2_06_part1.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -c -o test_isa_2_06_part1-test_isa_2_06_part1.obj `if test -f 'test_isa_2_06_part1.c'; then $(CYGPATH_W) 'test_isa_2_06_part1.c'; else $(CYGPATH_W) '$(srcdir)/test_isa_2_06_part1.c'; fi` + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/bug129390-ppc32.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/bug129390-ppc32.vgtest index a4fb6ba67..d7d05b3c7 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/bug129390-ppc32.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/bug129390-ppc32.vgtest @@ -1,2 +1,3 @@ +prereq: ../../../tests/check_vmx_cap prog: bug129390-ppc32 vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-insns.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-insns.c index 16adc731b..f056d8e1e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-insns.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-insns.c @@ -167,15 +167,32 @@ case I chased). #include #include "tests/sys_mman.h" +#include "tests/malloc.h" // memalign16 + +#define STATIC_ASSERT(e) sizeof(struct { int:-!(e); }) /* Something of the same size as void*, so can be safely be coerced - to/from a pointer type. Also same size as the host's gp registers. */ + * to/from a pointer type. Also same size as the host's gp registers. + * According to the AltiVec section of the GCC manual, the syntax does + * not allow the use of a typedef name as a type specifier in conjunction + * with the vector keyword, so typedefs uint[32|64]_t are #undef'ed here + * and redefined using #define. + */ +#undef uint32_t +#undef uint64_t +#define uint32_t unsigned int +#define uint64_t unsigned long long int + #ifndef __powerpc64__ typedef uint32_t HWord_t; #else typedef uint64_t HWord_t; -#endif // #ifndef __powerpc64__ +#endif /* __powerpc64__ */ +enum { + compile_time_test1 = STATIC_ASSERT(sizeof(uint32_t) == 4), + compile_time_test2 = STATIC_ASSERT(sizeof(uint64_t) == 8), +}; #define ALLCR "cr0","cr1","cr2","cr3","cr4","cr5","cr6","cr7" @@ -210,17 +227,17 @@ typedef uint64_t HWord_t; /* XXXX these must all be callee-save regs! */ -register double f14 __asm__ ("f14"); -register double f15 __asm__ ("f15"); -register double f16 __asm__ ("f16"); -register double f17 __asm__ ("f17"); +register double f14 __asm__ ("fr14"); +register double f15 __asm__ ("fr15"); +register double f16 __asm__ ("fr16"); +register double f17 __asm__ ("fr17"); register HWord_t r14 __asm__ ("r14"); register HWord_t r15 __asm__ ("r15"); register HWord_t r16 __asm__ ("r16"); register HWord_t r17 __asm__ ("r17"); -#include "config.h" -#if defined (HAVE_ALTIVEC_H) +#include "config.h" // HAS_ALTIVEC +#if defined (HAS_ALTIVEC) # include #endif #include @@ -4597,7 +4614,7 @@ static void test_int_three_args (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s %08x, %08x, %08x => %08x (%08x %08x)\n", #else - printf("%s %016lx, %016lx, %016lx => %016lx (%08x %08x)\n", + printf("%s %016llx, %016llx, %016llx => %016llx (%08x %08x)\n", #endif name, iargs[i], iargs[j], iargs[k], res, flags, xer); } @@ -4641,7 +4658,7 @@ static void test_int_two_args (const char* name, test_func_t func, printf("%s %08x, %08x => %08x (%08x %08x)\n", #else if (zap_hi32) res &= 0xFFFFFFFFULL; - printf("%s %016lx, %016lx => %016lx (%08x %08x)\n", + printf("%s %016llx, %016llx => %016llx (%08x %08x)\n", #endif name, iargs[i], iargs[j], res, flags, xer); } @@ -4673,7 +4690,7 @@ static void test_int_one_arg (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s %08x => %08x (%08x %08x)\n", #else - printf("%s %016lx => %016lx (%08x %08x)\n", + printf("%s %016llx => %016llx (%08x %08x)\n", #endif name, iargs[i], res, flags, xer); } @@ -4773,7 +4790,7 @@ static void test_int_one_reg_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %08x, %08x => %08x (%08x %08x)\n", #else - printf("%s %016lx, %08x => %016lx (%08x %08x)\n", + printf("%s %016llx, %08x => %016llx (%08x %08x)\n", #endif name, iargs[i], ii16[j], res, flags, xer); } @@ -4838,7 +4855,7 @@ static void rlwi_cb (const char* name, test_func_t func_IN, #ifndef __powerpc64__ printf("%s %08x, %2d, %2d, %2d => %08x (%08x %08x)\n", #else - printf("%s %016lx, %2d, %2d, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %2d, %2d, %2d => %016llx (%08x %08x)\n", #endif name, iargs[i], j, k, l, res, flags, xer); } @@ -4879,7 +4896,7 @@ static void rlwnm_cb (const char* name, test_func_t func_IN, #ifndef __powerpc64__ printf("%s %08x, %08x, %2d, %2d => %08x (%08x %08x)\n", #else - printf("%s %016lx, %016lx, %2d, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %016llx, %2d, %2d => %016llx (%08x %08x)\n", #endif name, iargs[i], iargs[j], k, l, res, flags, xer); } @@ -4916,7 +4933,7 @@ static void srawi_cb (const char* name, test_func_t func_IN, #ifndef __powerpc64__ printf("%s %08x, %2d => %08x (%08x %08x)\n", #else - printf("%s %016lx, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %2d => %016llx (%08x %08x)\n", #endif name, iargs[i], j, res, flags, xer); } @@ -4952,7 +4969,7 @@ static void mcrf_cb (const char* name, test_func_t func_IN, #ifndef __powerpc64__ printf("%s %d, %d (%08x) => (%08x %08x)\n", #else - printf("%s %d, %d (%016lx) => (%08x %08x)\n", + printf("%s %d, %d (%016llx) => (%08x %08x)\n", #endif name, j, k, iargs[i], flags, xer); } @@ -5012,7 +5029,7 @@ static void mfcr_cb (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s (%08x) => %08x (%08x %08x)\n", #else - printf("%s (%016lx) => %016lx (%08x %08x)\n", + printf("%s (%016llx) => %016llx (%08x %08x)\n", #endif name, iargs[i], res, flags, xer); } @@ -5040,7 +5057,7 @@ static void mfspr_cb (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s 1 (%08x) -> mtxer -> mfxer => %08x\n", #else - printf("%s 1 (%08x) -> mtxer -> mfxer => %016lx\n", + printf("%s 1 (%08x) -> mtxer -> mfxer => %016llx\n", #endif name, j, res); } @@ -5057,7 +5074,7 @@ static void mfspr_cb (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s 8 (%08x) -> mtlr -> mflr => %08x\n", #else - printf("%s 8 (%08x) -> mtlr -> mflr => %016lx\n", + printf("%s 8 (%08x) -> mtlr -> mflr => %016llx\n", #endif name, j, res); } @@ -5074,7 +5091,7 @@ static void mfspr_cb (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s 9 (%08x) -> mtctr -> mfctr => %08x\n", #else - printf("%s 9 (%08x) -> mtctr -> mfctr => %016lx\n", + printf("%s 9 (%08x) -> mtctr -> mfctr => %016llx\n", #endif name, j, res); } @@ -5105,7 +5122,7 @@ static void mtcrf_cb (const char* name, test_func_t func_IN, #ifndef __powerpc64__ printf("%s %3d, %08x => (%08x %08x)\n", #else - printf("%s %3d, %016lx => (%08x %08x)\n", + printf("%s %3d, %016llx => (%08x %08x)\n", #endif name, j, iargs[i], flags, xer); } @@ -5146,7 +5163,7 @@ static void rldc_cb (const char* name, test_func_t func_IN, GET_CR_XER(flags,xer); res = r17; - printf("%s %016lx, %016lx, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %016llx, %2d => %016llx (%08x %08x)\n", name, iargs[i], iargs[j], k, res, flags, xer); } if (verbose) printf("\n"); @@ -5181,7 +5198,7 @@ static void rldi_cb (const char* name, test_func_t func_IN, GET_CR_XER(flags,xer); res = r17; - printf("%s %016lx, %2d, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %2d, %2d => %016llx (%08x %08x)\n", name, iargs[i], j, k, res, flags, xer); } if (verbose) printf("\n"); @@ -5214,7 +5231,7 @@ static void sradi_cb (const char* name, test_func_t func_IN, GET_CR_XER(flags,xer); res = r17; - printf("%s %016lx, %2d => %016lx (%08x %08x)\n", + printf("%s %016llx, %2d => %016llx (%08x %08x)\n", name, iargs[i], j, res, flags, xer); } if (verbose) printf("\n"); @@ -5429,7 +5446,7 @@ static void test_int_ld_one_reg_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %2d, (%08x) => %08x, %2d (%08x %08x)\n", #else - printf("%s %3d, (%016lx) => %016lx, %3ld (%08x %08x)\n", + printf("%s %3d, (%016llx) => %016llx, %3lld (%08x %08x)\n", #endif name, offs, iargs[i], res, r14-base, flags, xer); } @@ -5454,7 +5471,7 @@ static void test_int_ld_one_reg_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %2d, (%08x) => %08x, %2d (%08x %08x)\n", #else - printf("%s %3d, (%016lx) => %016lx, %3ld (%08x %08x)\n", + printf("%s %3d, (%016llx) => %016llx, %3lld (%08x %08x)\n", #endif name, offs, iargs[nb_iargs-1+i], res, r14-base, flags, xer); } @@ -5483,7 +5500,7 @@ static void test_int_ld_two_regs (const char* name, #ifndef __powerpc64__ printf("%s %d (%08x) => %08x, %d (%08x %08x)\n", #else - printf("%s %3d, (%016lx) => %016lx, %2ld (%08x %08x)\n", + printf("%s %3d, (%016llx) => %016llx, %2lld (%08x %08x)\n", #endif name, offs, iargs[i], res, r14-base, flags, xer); } @@ -5524,7 +5541,7 @@ static void test_int_st_two_regs_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %08x, %2d => %08x, %2d (%08x %08x)\n", #else - printf("%s %016lx, %3d => %016lx, %3ld (%08x %08x)\n", + printf("%s %016llx, %3d => %016llx, %3lld (%08x %08x)\n", #endif name, iargs[i], offs, iargs_priv[i], r15-base, flags, xer); } @@ -5552,7 +5569,7 @@ static void test_int_st_two_regs_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %08x, %2d => %08x, %2d (%08x %08x)\n", #else - printf("%s %016lx, %3d => %016lx, %3ld (%08x %08x)\n", + printf("%s %016llx, %3d => %016llx, %3lld (%08x %08x)\n", #endif name, iargs[nb_iargs-1+i], offs, iargs_priv[nb_iargs-1+i], r15-base, flags, xer); @@ -5588,7 +5605,7 @@ static void test_int_st_three_regs (const char* name, #ifndef __powerpc64__ printf("%s %08x, %d => %08x, %d (%08x %08x)\n", #else - printf("%s %016lx, %3d => %016lx, %2ld (%08x %08x)\n", + printf("%s %016llx, %3d => %016llx, %2lld (%08x %08x)\n", #endif name, iargs[i], offs, iargs_priv[i], r15-base, flags, xer); } @@ -5650,7 +5667,7 @@ static void test_float_three_args (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s %016llx, %016llx, %016llx => %016llx", #else - printf("%s %016lx, %016lx, %016lx => %016lx", + printf("%s %016llx, %016llx, %016llx => %016llx", #endif name, u0, u1, u2, ur); #if defined TEST_FLOAT_FLAGS @@ -5688,7 +5705,7 @@ static void test_float_two_args (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s %016llx, %016llx => %016llx", #else - printf("%s %016lx, %016lx => %016lx", + printf("%s %016llx, %016llx => %016llx", #endif name, u0, u1, ur); #if defined TEST_FLOAT_FLAGS @@ -5729,7 +5746,7 @@ static void test_float_one_arg (const char* name, test_func_t func, #ifndef __powerpc64__ printf("%s %016llx => %016llx", #else - printf("%s %016lx => %016lx", + printf("%s %016llx => %016llx", #endif name, u0, ur); #if defined TEST_FLOAT_FLAGS @@ -5837,7 +5854,7 @@ static void test_float_ld_one_reg_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %016llx, %4d => %016llx, %4d", #else - printf("%s %016lx, %4d => %016lx, %4ld", + printf("%s %016llx, %4d => %016llx, %4lld", #endif name, double_to_bits(src), offs, double_to_bits(res), r14-base); @@ -5880,7 +5897,7 @@ static void test_float_ld_two_regs (const char* name, #ifndef __powerpc64__ printf("%s %016llx, %4d => %016llx, %4d", #else - printf("%s %016lx, %4ld => %016lx, %4ld", + printf("%s %016llx, %4lld => %016llx, %4lld", #endif name, double_to_bits(src), r15/*offs*/, double_to_bits(res), r14-base); @@ -5948,7 +5965,7 @@ static void test_float_st_two_regs_imm16 (const char* name, #ifndef __powerpc64__ printf("%s %016llx, %4d => %016llx, %4d", #else - printf("%s %016lx, %4d => %016lx, %4ld", + printf("%s %016llx, %4d => %016llx, %4lld", #endif name, double_to_bits(src), offs, double_to_bits(*p_dst), r15-base); @@ -6011,7 +6028,7 @@ static void test_float_st_three_regs (const char* name, #ifndef __powerpc64__ printf("%s %016llx, %4d => %016llx, %4d", #else - printf("%s %016lx, %4ld => %016lx, %4ld", + printf("%s %016llx, %4lld => %016llx, %4lld", #endif name, double_to_bits(src), r16/*offs*/, double_to_bits(*p_dst), r15-base); @@ -6026,7 +6043,7 @@ static void test_float_st_three_regs (const char* name, #ifndef __powerpc64__ printf("%s %016llx (%014e), %4d => %016llx (%014e), %08x (%08x %08x)\n", #else - printf("%s %016lx (%014e), %4d => %016lx (%014e), %08x (%08x %08x)\n", + printf("%s %016llx (%014e), %4d => %016llx (%014e), %08x (%08x %08x)\n", #endif name, double_to_bits(src), src, offs, double_to_bits(*p_dst), *p_dst, r15, flags, xer); @@ -6035,7 +6052,7 @@ static void test_float_st_three_regs (const char* name, #ifndef __powerpc64__ printf("%s %016llx (%014e), %4d => %08x (%f), %08x (%08x %08x)\n", #else - printf("%s %016lx (%014e), %4d => %08x (%f), %08x (%08x %08x)\n", + printf("%s %016llx (%014e), %4d => %08x (%f), %08x (%08x %08x)\n", #endif name, double_to_bits(src), src, offs, (uint32_t)(double_to_bits(*p_dst) >> 32), @@ -6075,9 +6092,9 @@ static test_loop_t float_loops[] = { volatile vector unsigned int v2 = // (vector unsigned int){ 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; (vector unsigned int){ 0x01010101,0x01010101,0x01010101,0x01010101 }; - //__asm__ __volatile__ ("vcmpequw. 31,%0,%1" : : "vr" (v1), "vr" (v2)); // sets CR[6] - //__asm__ __volatile__ ("vpkswss 31,%0,%1" : : "vr" (v1), "vr" (v2)); // sets VSCR[SAT] - __asm__ __volatile__ ("vsubsbs 31,%0,%1" : : "vr" (v1), "vr" (v2)); // sets VSCR[SAT] + //__asm__ __volatile__ ("vcmpequw. 31,%0,%1" : : "v" (v1), "v" (v2)); // sets CR[6] + //__asm__ __volatile__ ("vpkswss 31,%0,%1" : : "v" (v1), "v" (v2)); // sets VSCR[SAT] + __asm__ __volatile__ ("vsubsbs 31,%0,%1" : : "v" (v1), "v" (v2)); // sets VSCR[SAT] */ //#define DEFAULT_VSCR 0x00010000 @@ -6106,11 +6123,11 @@ static void test_av_int_one_arg (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load input -> r14 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in)); // do stuff (*func)(); @@ -6124,7 +6141,7 @@ static void test_av_int_one_arg (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src = (unsigned int*)&vec_in; dst = (unsigned int*)&vec_out; @@ -6167,12 +6184,12 @@ static void test_av_int_two_args (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_in2)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_in2)); // do stuff (*func)(); @@ -6186,7 +6203,7 @@ static void test_av_int_two_args (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_in2; @@ -6235,13 +6252,13 @@ static void test_av_int_three_args (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15,r16 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_in2)); - __asm__ __volatile__ ("vor 16,%0,%0" : : "vr" (vec_in3)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_in2)); + __asm__ __volatile__ ("vor 16,%0,%0" : : "v" (vec_in3)); // do stuff (*func)(); @@ -6255,7 +6272,7 @@ static void test_av_int_three_args (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_in2; @@ -6309,12 +6326,12 @@ static void vs128_cb (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_shft)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_shft)); // do stuff (*func)(); @@ -6328,7 +6345,7 @@ static void vs128_cb (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_shft; @@ -6382,11 +6399,11 @@ static void vsplt_cb (const char* name, test_func_t func_IN, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load input -> r14 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); // do stuff (*func)(); @@ -6400,7 +6417,7 @@ static void vsplt_cb (const char* name, test_func_t func_IN, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; dst = (unsigned int*)&vec_out; @@ -6449,7 +6466,7 @@ static void vspltis_cb (const char* name, test_func_t func_IN, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // do stuff @@ -6464,7 +6481,7 @@ static void vspltis_cb (const char* name, test_func_t func_IN, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); dst = (unsigned int*)&vec_out; @@ -6511,12 +6528,12 @@ static void vsldoi_cb (const char* name, test_func_t func_IN, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_in2)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_in2)); // do stuff (*func)(); @@ -6530,7 +6547,7 @@ static void vsldoi_cb (const char* name, test_func_t func_IN, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_in2; @@ -6582,7 +6599,7 @@ static void lvs_cb (const char *name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // do stuff @@ -6597,7 +6614,7 @@ static void lvs_cb (const char *name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); dst = (unsigned int*)&vec_out; @@ -6695,7 +6712,7 @@ static void test_av_int_ld_two_regs (const char *name, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // do stuff @@ -6710,7 +6727,7 @@ static void test_av_int_ld_two_regs (const char *name, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); vec_in = (vector unsigned int)viargs[i]; src = (unsigned int*)&vec_in; @@ -6781,11 +6798,11 @@ static void test_av_int_st_three_regs (const char *name, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in)); // do stuff (*func)(); @@ -6798,7 +6815,7 @@ static void test_av_int_st_three_regs (const char *name, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); vec_out = (vector unsigned int)viargs_priv[i]; src = (unsigned int*)&vec_in; @@ -6862,11 +6879,11 @@ static void test_av_float_one_arg (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load input -> r14 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in)); // do stuff (*func)(); @@ -6880,7 +6897,7 @@ static void test_av_float_one_arg (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src = (unsigned int*)&vec_in; dst = (unsigned int*)&vec_out; @@ -6924,12 +6941,12 @@ static void test_av_float_two_args (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_in2)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_in2)); // do stuff (*func)(); @@ -6943,7 +6960,7 @@ static void test_av_float_two_args (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_in2; @@ -6993,13 +7010,13 @@ static void test_av_float_three_args (const char* name, test_func_t func, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load inputs -> r14,r15,r16 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in1)); - __asm__ __volatile__ ("vor 15,%0,%0" : : "vr" (vec_in2)); - __asm__ __volatile__ ("vor 16,%0,%0" : : "vr" (vec_in3)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in1)); + __asm__ __volatile__ ("vor 15,%0,%0" : : "v" (vec_in2)); + __asm__ __volatile__ ("vor 16,%0,%0" : : "v" (vec_in3)); // do stuff (*func)(); @@ -7013,7 +7030,7 @@ static void test_av_float_three_args (const char* name, test_func_t func, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src1 = (unsigned int*)&vec_in1; src2 = (unsigned int*)&vec_in2; @@ -7069,11 +7086,11 @@ static void vcvt_cb (const char* name, test_func_t func_IN, // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; flags = 0; - __asm__ __volatile__ ("mtvscr %0" : : "vr" (vscr) ); + __asm__ __volatile__ ("mtvscr %0" : : "v" (vscr) ); __asm__ __volatile__ ("mtcr %0" : : "r" (flags)); // load input -> r14 - __asm__ __volatile__ ("vor 14,%0,%0" : : "vr" (vec_in)); + __asm__ __volatile__ ("vor 14,%0,%0" : : "v" (vec_in)); // do stuff (*func)(); @@ -7087,7 +7104,7 @@ static void vcvt_cb (const char* name, test_func_t func_IN, /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); - __asm__ __volatile__ ("mtvscr %0" : : "vr" (tmpvscr)); + __asm__ __volatile__ ("mtvscr %0" : : "v" (tmpvscr)); src = (unsigned int*)&vec_in; dst = (unsigned int*)&vec_out; diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.stdout.exp_Minus_nan b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.stdout.exp_Minus_nan new file mode 100644 index 000000000..8c72a548e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.stdout.exp_Minus_nan @@ -0,0 +1,3036 @@ +PPC altivec integer arith insns with three args: + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 010403160538076a09ad0c000f970f9a (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1f4f406f628f85afa9dfcf00087008a (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 00e502bb04a10697089d0ab30df00df2 (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1d5f3abf591f787f98dfba3fee0fee2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 00e502bb04a10697089d0ab30df00df2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1d5f3abf591f787f98dfba3fee0fee2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 028d042605cf078909520b2c0e0f0e11 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f37df516f6bff879fa42fc1cfeffff01 (00000000) + + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 010403160538076b09ad0c000f980f9a (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1f4f406f628f85bfa9dfcf00088008a (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 00e602bb04a10697089d0ab30df10df3 (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1d6f3abf591f787f98dfba3fee1fee3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 00e602bb04a10697089d0ab30df10df3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1d6f3abf591f787f98dfba3fee1fee3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 028d042605d0078909530b2c0e0f0e11 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f37df516f6c0f879fa43fc1cfeffff01 (00000000) + + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => 05061b14412a7748bd6e139c7ab6b2f0 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => f5f60c04321a6838ae5e048c6ba6a3e0 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => d6e6aed496ca8ec896ceaedcd6e6f100 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => c7d69fc487ba7fb887be9fccc7d6e1f0 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => d6e6aed496ca8ec896ceaedcd6e6f100 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => c7d69fc487ba7fb887be9fccc7d6e1f0 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => 89c62394cd6a8748512e2b1c14161010 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => 7ab61484be5a7838421e1c0c05060100 (00000000) + + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020322050607b6090a0cca0e0d1121 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2f412f5f6f8a6f9fafdbafefe0211 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 010599e20509bc76090ddf8a0e10fe21 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f68ad2f5faad66f9fed07aff01ef11 (00000000) + + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f5c675a8019a117c0dae2d901afdaac9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f5c675a8019a117c0dae2d901afdaac9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => ce24ac58e1874facf52a73400a071619 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => bf159d48d278409ce61b6430faf80709 (00000000) + + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 0258ac5805ab4fac093e73400e0f1619 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f3499d48f69c409cfa2f6430ff000709 (00000000) + + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f1fd1008f641a45cfac6b8f0ffffffff (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f5c675a8ffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f5c675a8ffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => ffffffffffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => ffffffffffffffffffffffffffffffff (00000000) + + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 01020322050607b6090a0cca0e0d1121 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2f412f5f6f8a6f9fafdbafefe0211 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 0102028205060616090a0a2a0e0d0da1 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2f372f5f6f706f9fafb1afefdfe91 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 0101cfe20505e2760909f58a0e0d0621 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2c0d2f5f6d366f9fae67afefdf711 (00000000) + + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 0258ac5805ab4fac093e73400e0f1619 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f3499d48f69c409cfa2f6430ff000709 (00000000) + +PPC altivec integer logical insns with three args: + vperm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + + vsel: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + +PPC altivec integer arith insns with two args: + vaddubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddubm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubm: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddubm: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubm: => e2e4e6e8 eaeceef0 f2f4f6f8 fcfafcfe (00000000) + + vadduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduhm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhm: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vadduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduhm: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vadduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhm: => e3e4e7e8 ebeceff0 f3f4f7f8 fdfafdfe (00000000) + + vadduwm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduwm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduwm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduwm: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vadduwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduwm: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vadduwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduwm: => e3e5e7e8 ebedeff0 f3f5f7f8 fdfbfdfe (00000000) + + vaddubs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddubs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddubs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubs: => f2f4f6f8 fafcfeff ffffffff ffffffff (00000000) + vaddubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddubs: => f2f4f6f8 fafcfeff ffffffff ffffffff (00000000) + vaddubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubs: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vadduhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduhs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhs: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduhs: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhs: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vadduws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduws: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduws: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduws: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduws: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vaddsbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddsbs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddsbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsbs: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddsbs: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsbs: => e2e4e6e8 eaeceef0 f2f4f6f8 fcfafcfe (00000000) + + vaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddshs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddshs: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddshs: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddshs: => e3e4e7e8 ebeceff0 f3f4f7f8 fdfafdfe (00000000) + + vaddsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddsws: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsws: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vaddsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddsws: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vaddsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsws: => e3e5e7e8 ebedeff0 f3f5f7f8 fdfbfdfe (00000000) + + vaddcuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddcuw: => 00000000 00000000 00000000 00000000 (00000000) + vaddcuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddcuw: => 00000000 00000000 00000001 00000001 (00000000) + vaddcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddcuw: => 00000000 00000000 00000001 00000001 (00000000) + vaddcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddcuw: => 00000001 00000001 00000001 00000001 (00000000) + + vsububm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsububm: => 00000000 00000000 00000000 00000000 (00000000) + vsububm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububm: => 10101010 10101010 10101010 10101010 (00000000) + vsububm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsububm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsububm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububm: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuhm: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhm: => 0f100f10 0f100f10 0f100f10 0f100f10 (00000000) + vsubuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuhm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhm: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuwm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuwm: => 00000000 00000000 00000000 00000000 (00000000) + vsubuwm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuwm: => 0f0f0f10 0f0f0f10 0f0f0f10 0f0f0f10 (00000000) + vsubuwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuwm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuwm: => 00000000 00000000 00000000 00000000 (00000000) + + vsububs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + vsububs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + vsububs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsububs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsububs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuhs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + vsubuws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + vsubuws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuws: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + + vsubsbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubsbs: => 00000000 00000000 00000000 00000000 (00000000) + vsubsbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsbs: => 10101010 10101010 10101010 10101010 (00000000) + vsubsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubsbs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsbs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubshs: => 00000000 00000000 00000000 00000000 (00000000) + vsubshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubshs: => 0f100f10 0f100f10 0f100f10 0f100f10 (00000000) + vsubshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubshs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubshs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubsws: => 00000000 00000000 00000000 00000000 (00000000) + vsubsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsws: => 0f0f0f10 0f0f0f10 0f0f0f10 0f0f0f10 (00000000) + vsubsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubsws: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsws: => 00000000 00000000 00000000 00000000 (00000000) + + vsubcuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + vsubcuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubcuw: => 00000000 00000000 00000000 00000000 (00000000) + vsubcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + vsubcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + + vmuloub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuloub: => 00040010 00240040 00640090 00a900e1 (00000000) + vmuloub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuloub: => 01e403d0 05c407c0 09c40bd0 0cd90ef1 (00000000) + vmuloub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuloub: => 01e403d0 05c407c0 09c40bd0 0cd90ef1 (00000000) + vmuloub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuloub: => e4c4e890 ec64f040 f424f810 fa09fe01 (00000000) + + vmulouh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulouh: => 00091810 00317040 007a0890 00c5a4e1 (00000000) + vmulouh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulouh: => 02dfabd0 06cf87c0 0adfa3d0 0e00e2f1 (00000000) + vmulouh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulouh: => 02dfabd0 06cf87c0 0adfa3d0 0e00e2f1 (00000000) + vmulouh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulouh: => e8792090 f0308040 f8082010 fdff0201 (00000000) + + vmulosb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulosb: => 00040010 00240040 00640090 00a900e1 (00000000) + vmulosb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosb: => ffe4ffd0 ffc4ffc0 ffc4ffd0 ffd9fff1 (00000000) + vmulosb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulosb: => ffe4ffd0 ffc4ffc0 ffc4ffd0 ffd9fff1 (00000000) + vmulosb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosb: => 00c40090 00640040 00240010 00090001 (00000000) + + vmulosh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulosh: => 00091810 00317040 007a0890 00c5a4e1 (00000000) + vmulosh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosh: => ffdbabd0 ffc787c0 ffd3a3d0 fff1e2f1 (00000000) + vmulosh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulosh: => ffdbabd0 ffc787c0 ffd3a3d0 fff1e2f1 (00000000) + vmulosh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosh: => 00912090 00408040 00102010 00010201 (00000000) + + vmuleub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuleub: => 00010009 00190031 00510079 00c400c4 (00000000) + vmuleub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleub: => 00f102d9 04c906c1 08c10ac9 0de40de4 (00000000) + vmuleub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuleub: => 00f102d9 04c906c1 08c10ac9 0de40de4 (00000000) + vmuleub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleub: => e2e1e6a9 ea79ee51 f231f619 fc04fc04 (00000000) + + vmuleuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuleuh: => 00010404 00193c24 0051b464 00c56ca9 (00000000) + vmuleuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleuh: => 00f3d5e4 04d391c4 08d38dc4 0dfec8d9 (00000000) + vmuleuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuleuh: => 00f3d5e4 04d391c4 08d38dc4 0dfec8d9 (00000000) + vmuleuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleuh: => e4a988c4 ec50c864 f4184824 fdfb0609 (00000000) + + vmulesb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulesb: => 00010009 00190031 00510079 00c400c4 (00000000) + vmulesb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesb: => fff1ffd9 ffc9ffc1 ffc1ffc9 ffe4ffe4 (00000000) + vmulesb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulesb: => fff1ffd9 ffc9ffc1 ffc1ffc9 ffe4ffe4 (00000000) + vmulesb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesb: => 00e100a9 00790051 00310019 00040004 (00000000) + + vmulesh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulesh: => 00010404 00193c24 0051b464 00c56ca9 (00000000) + vmulesh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesh: => fff1d5e4 ffcd91c4 ffc98dc4 fff1c8d9 (00000000) + vmulesh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulesh: => fff1d5e4 ffcd91c4 ffc98dc4 fff1c8d9 (00000000) + vmulesh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesh: => 00c588c4 0064c864 00244824 00010609 (00000000) + + vsumsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsumsws: => 00000000 00000000 00000000 2b2c3136 (00000000) + vsumsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsumsws: => 00000000 00000000 00000000 1c1d2226 (00000000) + vsumsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsumsws: => 00000000 00000000 00000000 eeeff4f6 (00000000) + vsumsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsumsws: => 00000000 00000000 00000000 dfe0e5e6 (00000000) + + vsum2sws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum2sws: => 00000000 0b0e1114 00000000 2524272a (00000000) + vsum2sws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum2sws: => 00000000 fbff0204 00000000 1615181a (00000000) + vsum2sws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum2sws: => 00000000 eceff2f4 00000000 0706090a (00000000) + vsum2sws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum2sws: => 00000000 dde0e3e4 00000000 f7f6f9fa (00000000) + + vsum4ubs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4ubs: => 0102030e 05060722 090a0b36 0e0d0e47 (00000000) + vsum4ubs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4ubs: => f1f2f3fe f5f6f812 f9fafc26 fefdff37 (00000000) + vsum4ubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4ubs: => 010206ce 05060ae2 090a0ef6 0e0d1207 (00000000) + vsum4ubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4ubs: => f1f2f7be f5f6fbd2 f9faffe6 fefe02f7 (00000000) + + vsum4sbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4sbs: => 0102030e 05060722 090a0b36 0e0d0e47 (00000000) + vsum4sbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4sbs: => f1f2f3fe f5f6f812 f9fafc26 fefdff37 (00000000) + vsum4sbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4sbs: => 010202ce 050606e2 090a0af6 0e0d0e07 (00000000) + vsum4sbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4sbs: => f1f2f3be f5f6f7d2 f9fafbe6 fefdfef7 (00000000) + + vsum4shs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4shs: => 0102070a 05061316 090a1f22 0e0d2a2b (00000000) + vsum4shs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4shs: => f1f2f7fa f5f70406 f9fb1012 fefe1b1b (00000000) + vsum4shs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4shs: => 0101e8ea 0505f4f6 090a0102 0e0d0c0b (00000000) + vsum4shs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4shs: => f1f2d9da f5f6e5e6 f9faf1f2 fefdfcfb (00000000) + + vavgub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgub: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavgub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgub: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavgub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavguh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavguh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavguh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguh: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavguh: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavguw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavguw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavguw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguw: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavguw: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsb: => f9fafbfc fdfeff00 01020304 06050607 (00000000) + vavgsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsb: => f9fafbfc fdfeff00 01020304 06050607 (00000000) + vavgsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsh: => f97afb7c fd7eff80 01820384 06850687 (00000000) + vavgsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsh: => f97afb7c fd7eff80 01820384 06850687 (00000000) + vavgsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsw: => f97a7b7c fd7e7f80 01828384 06858687 (00000000) + vavgsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsw: => f97a7b7c fd7e7f80 01828384 06858687 (00000000) + vavgsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +PPC altivec integer logical insns with two args: + vand: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vand: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vor: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vxor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vxor: => 00000000 00000000 00000000 00000000 (00000000) + vxor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vxor: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vxor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vxor: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vxor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vxor: => 00000000 00000000 00000000 00000000 (00000000) + + vandc: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vandc: => 00000000 00000000 00000000 00000000 (00000000) + vandc: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vandc: => 00000000 00000000 00000000 00000000 (00000000) + vandc: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vandc: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vandc: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vandc: => 00000000 00000000 00000000 00000000 (00000000) + + vnor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vnor: => fefdfcfb faf9f8f7 f6f5f4f3 f1f2f1f0 (00000000) + vnor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + vnor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + vnor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + + vrlb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlb: => 02081840 a0818308 122858c0 83a18387 (00000000) + vrlb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlb: => 02081840 a0818308 122858c0 83a18387 (00000000) + vrlb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlb: => e3cb9f4f bebdfbf8 f3ebdfcf bfbfbfff (00000000) + vrlb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlb: => e3cb9f4f bebdfbf8 f3ebdfcf bfbfbfff (00000000) + + vrlh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlh: => 04083040 41810807 2824c0b0 a1c18707 (00000000) + vrlh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlh: => 04083040 41810807 2824c0b0 a1c18707 (00000000) + vrlh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlh: => c7cb3f4f 7dbdf8f7 ebe7cfbf bfdfff7f (00000000) + vrlh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlh: => c7cb3f4f 7dbdf8f7 ebe7cfbf bfdfff7f (00000000) + + vrlw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlw: => 10203040 06070805 a0b0c090 87078706 (00000000) + vrlw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlw: => 30401020 08050607 c090a0b0 87068707 (00000000) + vrlw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlw: => 1f2f3f4f f6f7f8f5 afbfcf9f ff7fff7e (00000000) + vrlw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlw: => 3f4f1f2f f8f5f6f7 cf9fafbf ff7eff7f (00000000) + + vslb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslb: => 02081840 a0808008 122858c0 80a08080 (00000000) + vslb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslb: => 02081840 a0808008 122858c0 80a08080 (00000000) + vslb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslb: => e2c89840 a08080f8 f2e8d8c0 80a08080 (00000000) + vslb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslb: => e2c89840 a08080f8 f2e8d8c0 80a08080 (00000000) + + vslh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslh: => 04083040 41800800 2800c000 a0008000 (00000000) + vslh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslh: => 04083040 41800800 2800c000 a0008000 (00000000) + vslh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslh: => c7c83f40 7d80f800 e800c000 a0008000 (00000000) + vslh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslh: => c7c83f40 7d80f800 e800c000 a0008000 (00000000) + + vslw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslw: => 10203040 06070800 a0b0c000 87078000 (00000000) + vslw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslw: => 30400000 08000000 c0000000 80000000 (00000000) + vslw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslw: => 1f2f3f40 f6f7f800 afbfc000 ff7f8000 (00000000) + vslw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslw: => 3f400000 f8000000 c0000000 80000000 (00000000) + + vsrb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrb: => 00000000 00000008 04020100 00000000 (00000000) + vsrb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrb: => 00000000 00000008 04020100 00000000 (00000000) + vsrb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrb: => 783c1e0f 070301f8 7c3e1f0f 03070301 (00000000) + vsrb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrb: => 783c1e0f 070301f8 7c3e1f0f 03070301 (00000000) + + vsrh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrh: => 00400030 00140007 00020000 00000000 (00000000) + vsrh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrh: => 00400030 00140007 00020000 00000000 (00000000) + vsrh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrh: => 3c7c0f3f 03d700f7 003e000f 00070001 (00000000) + vsrh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrh: => 3c7c0f3f 03d700f7 003e000f 00070001 (00000000) + + vsrw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrw: => 00102030 00050607 000090a0 00001c1a (00000000) + vsrw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrw: => 00000010 00000005 00000000 00000000 (00000000) + vsrw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrw: => 0f1f2f3f 00f5f6f7 000f9faf 0001fdfb (00000000) + vsrw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrw: => 00000f1f 000000f5 0000000f 00000001 (00000000) + + vsrab: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrab: => 00000000 00000008 04020100 00000000 (00000000) + vsrab: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrab: => 00000000 00000008 04020100 00000000 (00000000) + vsrab: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrab: => f8fcfeff fffffff8 fcfeffff ffffffff (00000000) + vsrab: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrab: => f8fcfeff fffffff8 fcfeffff ffffffff (00000000) + + vsrah: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrah: => 00400030 00140007 00020000 00000000 (00000000) + vsrah: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrah: => 00400030 00140007 00020000 00000000 (00000000) + vsrah: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrah: => fc7cff3f ffd7fff7 fffeffff ffffffff (00000000) + vsrah: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrah: => fc7cff3f ffd7fff7 fffeffff ffffffff (00000000) + + vsraw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsraw: => 00102030 00050607 000090a0 00001c1a (00000000) + vsraw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsraw: => 00000010 00000005 00000000 00000000 (00000000) + vsraw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsraw: => ff1f2f3f fff5f6f7 ffff9faf fffffdfb (00000000) + vsraw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsraw: => ffffff1f fffffff5 ffffffff ffffffff (00000000) + + vpkuhum: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuhum: => 02040608 0a0c0d0f 02040608 0a0c0d0f (00000000) + vpkuhum: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhum: => 02040608 0a0c0d0f f2f4f6f8 fafcfdff (00000000) + vpkuhum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuhum: => f2f4f6f8 fafcfdff 02040608 0a0c0d0f (00000000) + vpkuhum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhum: => f2f4f6f8 fafcfdff f2f4f6f8 fafcfdff (00000000) + + vpkuwum: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuwum: => 03040708 0b0c0e0f 03040708 0b0c0e0f (00000000) + vpkuwum: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwum: => 03040708 0b0c0e0f f3f4f7f8 fbfcfeff (00000000) + vpkuwum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuwum: => f3f4f7f8 fbfcfeff 03040708 0b0c0e0f (00000000) + vpkuwum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwum: => f3f4f7f8 fbfcfeff f3f4f7f8 fbfcfeff (00000000) + + vpkuhus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vpkuwus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vpkshus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkshus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkshus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshus: => ffffffff ffffffff 00000000 00000000 (00000000) + vpkshus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkshus: => 00000000 00000000 ffffffff ffffffff (00000000) + vpkshus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshus: => 00000000 00000000 00000000 00000000 (00000000) + + vpkswus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkswus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkswus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswus: => ffffffff ffffffff 00000000 00000000 (00000000) + vpkswus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkswus: => 00000000 00000000 ffffffff ffffffff (00000000) + vpkswus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswus: => 00000000 00000000 00000000 00000000 (00000000) + + vpkshss: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkshss: => 7f7f7f7f 7f7f7f7f 7f7f7f7f 7f7f7f7f (00000000) + vpkshss: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshss: => 7f7f7f7f 7f7f7f7f 80808080 80808080 (00000000) + vpkshss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkshss: => 80808080 80808080 7f7f7f7f 7f7f7f7f (00000000) + vpkshss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshss: => 80808080 80808080 80808080 80808080 (00000000) + + vpkswss: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkswss: => 7fff7fff 7fff7fff 7fff7fff 7fff7fff (00000000) + vpkswss: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswss: => 7fff7fff 7fff7fff 80008000 80008000 (00000000) + vpkswss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkswss: => 80008000 80008000 7fff7fff 7fff7fff (00000000) + vpkswss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswss: => 80008000 80008000 80008000 80008000 (00000000) + + vpkpx: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkpx: => 80008001 84210421 80008001 84210421 (00000000) + vpkpx: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkpx: => 80008001 84210421 fbdefbdf ffff7fff (00000000) + vpkpx: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkpx: => fbdefbdf ffff7fff 80008001 84210421 (00000000) + vpkpx: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkpx: => fbdefbdf ffff7fff fbdefbdf ffff7fff (00000000) + + vmrghb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghb: => 01010202 03030404 05050606 07070808 (00000000) + vmrghb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghb: => 01f102f2 03f304f4 05f506f6 07f708f8 (00000000) + vmrghb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghb: => f101f202 f303f404 f505f606 f707f808 (00000000) + vmrghb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghb: => f1f1f2f2 f3f3f4f4 f5f5f6f6 f7f7f8f8 (00000000) + + vmrghh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghh: => 01020102 03040304 05060506 07080708 (00000000) + vmrghh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghh: => 0102f1f2 0304f3f4 0506f5f6 0708f7f8 (00000000) + vmrghh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghh: => f1f20102 f3f40304 f5f60506 f7f80708 (00000000) + vmrghh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghh: => f1f2f1f2 f3f4f3f4 f5f6f5f6 f7f8f7f8 (00000000) + + vmrghw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghw: => 01020304 01020304 05060708 05060708 (00000000) + vmrghw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghw: => 01020304 f1f2f3f4 05060708 f5f6f7f8 (00000000) + vmrghw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghw: => f1f2f3f4 01020304 f5f6f7f8 05060708 (00000000) + vmrghw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghw: => f1f2f3f4 f1f2f3f4 f5f6f7f8 f5f6f7f8 (00000000) + + vmrglb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglb: => 09090a0a 0b0b0c0c 0e0e0d0d 0e0e0f0f (00000000) + vmrglb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglb: => 09f90afa 0bfb0cfc 0efe0dfd 0efe0fff (00000000) + vmrglb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglb: => f909fa0a fb0bfc0c fe0efd0d fe0eff0f (00000000) + vmrglb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglb: => f9f9fafa fbfbfcfc fefefdfd fefeffff (00000000) + + vmrglh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglh: => 090a090a 0b0c0b0c 0e0d0e0d 0e0f0e0f (00000000) + vmrglh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglh: => 090af9fa 0b0cfbfc 0e0dfefd 0e0ffeff (00000000) + vmrglh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglh: => f9fa090a fbfc0b0c fefd0e0d feff0e0f (00000000) + vmrglh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglh: => f9faf9fa fbfcfbfc fefdfefd fefffeff (00000000) + + vmrglw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglw: => 090a0b0c 090a0b0c 0e0d0e0f 0e0d0e0f (00000000) + vmrglw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglw: => 090a0b0c f9fafbfc 0e0d0e0f fefdfeff (00000000) + vmrglw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglw: => f9fafbfc 090a0b0c fefdfeff 0e0d0e0f (00000000) + vmrglw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglw: => f9fafbfc f9fafbfc fefdfeff fefdfeff (00000000) + + vslo: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslo: => 02030405 06070809 0a0b0c0e 0d0e0f00 (00000000) + vslo: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslo: => 0f000000 00000000 00000000 00000000 (00000000) + vslo: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslo: => f2f3f4f5 f6f7f8f9 fafbfcfe fdfeff00 (00000000) + vslo: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslo: => ff000000 00000000 00000000 00000000 (00000000) + + vsro: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsro: => 00010203 04050607 08090a0b 0c0e0d0e (00000000) + vsro: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsro: => 00000000 00000000 00000000 00000001 (00000000) + vsro: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsro: => 00f1f2f3 f4f5f6f7 f8f9fafb fcfefdfe (00000000) + vsro: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsro: => 00000000 00000000 00000000 000000f1 (00000000) + +PPC altivec integer logical insns with one arg: + vupkhsb: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhsb: => 00010002 00030004 00050006 00070008 (00000000) + vupkhsb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhsb: => fff1fff2 fff3fff4 fff5fff6 fff7fff8 (00000000) + + vupkhsh: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhsh: => 00000102 00000304 00000506 00000708 (00000000) + vupkhsh: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhsh: => fffff1f2 fffff3f4 fffff5f6 fffff7f8 (00000000) + + vupkhpx: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhpx: => 00000802 00001804 00010806 00011808 (00000000) + vupkhpx: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhpx: => ff1c0f12 ff1c1f14 ff1d0f16 ff1d1f18 (00000000) + + vupklsb: 01020304 05060708 090a0b0c 0e0d0e0f + vupklsb: => 0009000a 000b000c 000e000d 000e000f (00000000) + vupklsb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklsb: => fff9fffa fffbfffc fffefffd fffeffff (00000000) + + vupklsh: 01020304 05060708 090a0b0c 0e0d0e0f + vupklsh: => 0000090a 00000b0c 00000e0d 00000e0f (00000000) + vupklsh: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklsh: => fffff9fa fffffbfc fffffefd fffffeff (00000000) + + vupklpx: 01020304 05060708 090a0b0c 0e0d0e0f + vupklpx: => 0002080a 0002180c 0003100d 0003100f (00000000) + vupklpx: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklpx: => ff1e0f1a ff1e1f1c ff1f171d ff1f171f (00000000) + +Altivec integer compare insns: + vcmpgtub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpequb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequb: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vcmpequh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vcmpequw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw: => ffffffff ffffffff ffffffff ffffffff (00000000) + +Altivec integer compare insns with flags update: + vcmpgtub.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtub.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtub.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtub.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtuh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtuh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtuw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtuw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsb.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsb.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpequb.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequb.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + + vcmpequh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + + vcmpequw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + +Altivec integer special insns: + vsl: 0102030405060708090a0b0c0e0d0e0f, 00000000000000000000000000000000 + vsl: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 01010101010101010101010101010101 + vsl: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 02020202020202020202020202020202 + vsl: => 04080c10 14181c20 24282c30 3834383c (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 03030303030303030303030303030303 + vsl: => 08101820 28303840 48505860 70687078 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 04040404040404040404040404040404 + vsl: => 10203040 50607080 90a0b0c0 e0d0e0f0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 05050505050505050505050505050505 + vsl: => 20406080 a0c0e101 21416181 c1a1c1e0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 06060606060606060606060606060606 + vsl: => 4080c101 4181c202 4282c303 834383c0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 07070707070707070707070707070707 + vsl: => 81018202 83038404 85058607 06870780 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 00000000000000000000000000000000 + vsl: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 01010101010101010101010101010101 + vsl: => e3e5e7e9 ebedeff1 f3f5f7f9 fdfbfdfe (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 02020202020202020202020202020202 + vsl: => c7cbcfd3 d7dbdfe3 e7ebeff3 fbf7fbfc (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 03030303030303030303030303030303 + vsl: => 8f979fa7 afb7bfc7 cfd7dfe7 f7eff7f8 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 04040404040404040404040404040404 + vsl: => 1f2f3f4f 5f6f7f8f 9fafbfcf efdfeff0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 05050505050505050505050505050505 + vsl: => 3e5e7e9e bedeff1f 3f5f7f9f dfbfdfe0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 06060606060606060606060606060606 + vsl: => 7cbcfd3d 7dbdfe3e 7ebeff3f bf7fbfc0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 07070707070707070707070707070707 + vsl: => f979fa7a fb7bfc7c fd7dfe7f 7eff7f80 (00000000) + + vsr: 0102030405060708090a0b0c0e0d0e0f, 00000000000000000000000000000000 + vsr: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 01010101010101010101010101010101 + vsr: => 00810182 02830384 04850586 07068707 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 02020202020202020202020202020202 + vsr: => 004080c1 014181c2 024282c3 03834383 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 03030303030303030303030303030303 + vsr: => 00204060 80a0c0e1 01214161 81c1a1c1 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 04040404040404040404040404040404 + vsr: => 00102030 40506070 8090a0b0 c0e0d0e0 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 05050505050505050505050505050505 + vsr: => 00081018 20283038 40485058 60706870 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 06060606060606060606060606060606 + vsr: => 0004080c 1014181c 2024282c 30383438 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 07070707070707070707070707070707 + vsr: => 00020406 080a0c0e 10121416 181c1a1c (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 00000000000000000000000000000000 + vsr: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 01010101010101010101010101010101 + vsr: => 78f979fa 7afb7bfc 7cfd7dfe 7f7eff7f (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 02020202020202020202020202020202 + vsr: => 3c7cbcfd 3d7dbdfe 3e7ebeff 3fbf7fbf (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 03030303030303030303030303030303 + vsr: => 1e3e5e7e 9ebedeff 1f3f5f7f 9fdfbfdf (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 04040404040404040404040404040404 + vsr: => 0f1f2f3f 4f5f6f7f 8f9fafbf cfefdfef (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 05050505050505050505050505050505 + vsr: => 078f979f a7afb7bf c7cfd7df e7f7eff7 (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 06060606060606060606060606060606 + vsr: => 03c7cbcf d3d7dbdf e3e7ebef f3fbf7fb (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 07070707070707070707070707070707 + vsr: => 01e3e5e7 e9ebedef f1f3f5f7 f9fdfbfd (00000000) + + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vspltb: => 01010101 01010101 01010101 01010101 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vspltb: => 04040404 04040404 04040404 04040404 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vspltb: => 07070707 07070707 07070707 07070707 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vspltb: => 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vspltb: => 0e0e0e0e 0e0e0e0e 0e0e0e0e 0e0e0e0e (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vspltb: => 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vspltb: => f1f1f1f1 f1f1f1f1 f1f1f1f1 f1f1f1f1 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vspltb: => f4f4f4f4 f4f4f4f4 f4f4f4f4 f4f4f4f4 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vspltb: => f7f7f7f7 f7f7f7f7 f7f7f7f7 f7f7f7f7 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vspltb: => fafafafa fafafafa fafafafa fafafafa (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vspltb: => fefefefe fefefefe fefefefe fefefefe (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vspltb: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vsplth: => 01020102 01020102 01020102 01020102 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vsplth: => 07080708 07080708 07080708 07080708 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vsplth: => 0e0d0e0d 0e0d0e0d 0e0d0e0d 0e0d0e0d (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vsplth: => 03040304 03040304 03040304 03040304 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vsplth: => 090a090a 090a090a 090a090a 090a090a (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vsplth: => 0e0f0e0f 0e0f0e0f 0e0f0e0f 0e0f0e0f (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vsplth: => f1f2f1f2 f1f2f1f2 f1f2f1f2 f1f2f1f2 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vsplth: => f7f8f7f8 f7f8f7f8 f7f8f7f8 f7f8f7f8 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vsplth: => fefdfefd fefdfefd fefdfefd fefdfefd (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vsplth: => f3f4f3f4 f3f4f3f4 f3f4f3f4 f3f4f3f4 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vsplth: => f9faf9fa f9faf9fa f9faf9fa f9faf9fa (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vsplth: => fefffeff fefffeff fefffeff fefffeff (00000000) + + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vspltw: => 01020304 01020304 01020304 01020304 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vspltw: => 0e0d0e0f 0e0d0e0f 0e0d0e0f 0e0d0e0f (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vspltw: => 090a0b0c 090a0b0c 090a0b0c 090a0b0c (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vspltw: => 05060708 05060708 05060708 05060708 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vspltw: => 01020304 01020304 01020304 01020304 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vspltw: => 0e0d0e0f 0e0d0e0f 0e0d0e0f 0e0d0e0f (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vspltw: => f1f2f3f4 f1f2f3f4 f1f2f3f4 f1f2f3f4 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vspltw: => fefdfeff fefdfeff fefdfeff fefdfeff (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vspltw: => f9fafbfc f9fafbfc f9fafbfc f9fafbfc (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vspltw: => f5f6f7f8 f5f6f7f8 f5f6f7f8 f5f6f7f8 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vspltw: => f1f2f3f4 f1f2f3f4 f1f2f3f4 f1f2f3f4 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vspltw: => fefdfeff fefdfeff fefdfeff fefdfeff (00000000) + + vspltisb: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltisb: 1 => 01010101 01010101 01010101 01010101 (00000000) + vspltisb: 2 => 02020202 02020202 02020202 02020202 (00000000) + vspltisb: 3 => 03030303 03030303 03030303 03030303 (00000000) + vspltisb: 4 => 04040404 04040404 04040404 04040404 (00000000) + vspltisb: 5 => 05050505 05050505 05050505 05050505 (00000000) + vspltisb: 6 => 06060606 06060606 06060606 06060606 (00000000) + vspltisb: 7 => 07070707 07070707 07070707 07070707 (00000000) + vspltisb: 8 => 08080808 08080808 08080808 08080808 (00000000) + vspltisb: 9 => 09090909 09090909 09090909 09090909 (00000000) + vspltisb: 10 => 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a (00000000) + vspltisb: 11 => 0b0b0b0b 0b0b0b0b 0b0b0b0b 0b0b0b0b (00000000) + vspltisb: 12 => 0c0c0c0c 0c0c0c0c 0c0c0c0c 0c0c0c0c (00000000) + vspltisb: 13 => 0d0d0d0d 0d0d0d0d 0d0d0d0d 0d0d0d0d (00000000) + vspltisb: 14 => 0e0e0e0e 0e0e0e0e 0e0e0e0e 0e0e0e0e (00000000) + vspltisb: 15 => 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f (00000000) + vspltisb: 16 => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vspltisb: 17 => f1f1f1f1 f1f1f1f1 f1f1f1f1 f1f1f1f1 (00000000) + vspltisb: 18 => f2f2f2f2 f2f2f2f2 f2f2f2f2 f2f2f2f2 (00000000) + vspltisb: 19 => f3f3f3f3 f3f3f3f3 f3f3f3f3 f3f3f3f3 (00000000) + vspltisb: 20 => f4f4f4f4 f4f4f4f4 f4f4f4f4 f4f4f4f4 (00000000) + vspltisb: 21 => f5f5f5f5 f5f5f5f5 f5f5f5f5 f5f5f5f5 (00000000) + vspltisb: 22 => f6f6f6f6 f6f6f6f6 f6f6f6f6 f6f6f6f6 (00000000) + vspltisb: 23 => f7f7f7f7 f7f7f7f7 f7f7f7f7 f7f7f7f7 (00000000) + vspltisb: 24 => f8f8f8f8 f8f8f8f8 f8f8f8f8 f8f8f8f8 (00000000) + vspltisb: 25 => f9f9f9f9 f9f9f9f9 f9f9f9f9 f9f9f9f9 (00000000) + vspltisb: 26 => fafafafa fafafafa fafafafa fafafafa (00000000) + vspltisb: 27 => fbfbfbfb fbfbfbfb fbfbfbfb fbfbfbfb (00000000) + vspltisb: 28 => fcfcfcfc fcfcfcfc fcfcfcfc fcfcfcfc (00000000) + vspltisb: 29 => fdfdfdfd fdfdfdfd fdfdfdfd fdfdfdfd (00000000) + vspltisb: 30 => fefefefe fefefefe fefefefe fefefefe (00000000) + vspltisb: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vspltish: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltish: 1 => 00010001 00010001 00010001 00010001 (00000000) + vspltish: 2 => 00020002 00020002 00020002 00020002 (00000000) + vspltish: 3 => 00030003 00030003 00030003 00030003 (00000000) + vspltish: 4 => 00040004 00040004 00040004 00040004 (00000000) + vspltish: 5 => 00050005 00050005 00050005 00050005 (00000000) + vspltish: 6 => 00060006 00060006 00060006 00060006 (00000000) + vspltish: 7 => 00070007 00070007 00070007 00070007 (00000000) + vspltish: 8 => 00080008 00080008 00080008 00080008 (00000000) + vspltish: 9 => 00090009 00090009 00090009 00090009 (00000000) + vspltish: 10 => 000a000a 000a000a 000a000a 000a000a (00000000) + vspltish: 11 => 000b000b 000b000b 000b000b 000b000b (00000000) + vspltish: 12 => 000c000c 000c000c 000c000c 000c000c (00000000) + vspltish: 13 => 000d000d 000d000d 000d000d 000d000d (00000000) + vspltish: 14 => 000e000e 000e000e 000e000e 000e000e (00000000) + vspltish: 15 => 000f000f 000f000f 000f000f 000f000f (00000000) + vspltish: 16 => fff0fff0 fff0fff0 fff0fff0 fff0fff0 (00000000) + vspltish: 17 => fff1fff1 fff1fff1 fff1fff1 fff1fff1 (00000000) + vspltish: 18 => fff2fff2 fff2fff2 fff2fff2 fff2fff2 (00000000) + vspltish: 19 => fff3fff3 fff3fff3 fff3fff3 fff3fff3 (00000000) + vspltish: 20 => fff4fff4 fff4fff4 fff4fff4 fff4fff4 (00000000) + vspltish: 21 => fff5fff5 fff5fff5 fff5fff5 fff5fff5 (00000000) + vspltish: 22 => fff6fff6 fff6fff6 fff6fff6 fff6fff6 (00000000) + vspltish: 23 => fff7fff7 fff7fff7 fff7fff7 fff7fff7 (00000000) + vspltish: 24 => fff8fff8 fff8fff8 fff8fff8 fff8fff8 (00000000) + vspltish: 25 => fff9fff9 fff9fff9 fff9fff9 fff9fff9 (00000000) + vspltish: 26 => fffafffa fffafffa fffafffa fffafffa (00000000) + vspltish: 27 => fffbfffb fffbfffb fffbfffb fffbfffb (00000000) + vspltish: 28 => fffcfffc fffcfffc fffcfffc fffcfffc (00000000) + vspltish: 29 => fffdfffd fffdfffd fffdfffd fffdfffd (00000000) + vspltish: 30 => fffefffe fffefffe fffefffe fffefffe (00000000) + vspltish: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vspltisw: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltisw: 1 => 00000001 00000001 00000001 00000001 (00000000) + vspltisw: 2 => 00000002 00000002 00000002 00000002 (00000000) + vspltisw: 3 => 00000003 00000003 00000003 00000003 (00000000) + vspltisw: 4 => 00000004 00000004 00000004 00000004 (00000000) + vspltisw: 5 => 00000005 00000005 00000005 00000005 (00000000) + vspltisw: 6 => 00000006 00000006 00000006 00000006 (00000000) + vspltisw: 7 => 00000007 00000007 00000007 00000007 (00000000) + vspltisw: 8 => 00000008 00000008 00000008 00000008 (00000000) + vspltisw: 9 => 00000009 00000009 00000009 00000009 (00000000) + vspltisw: 10 => 0000000a 0000000a 0000000a 0000000a (00000000) + vspltisw: 11 => 0000000b 0000000b 0000000b 0000000b (00000000) + vspltisw: 12 => 0000000c 0000000c 0000000c 0000000c (00000000) + vspltisw: 13 => 0000000d 0000000d 0000000d 0000000d (00000000) + vspltisw: 14 => 0000000e 0000000e 0000000e 0000000e (00000000) + vspltisw: 15 => 0000000f 0000000f 0000000f 0000000f (00000000) + vspltisw: 16 => fffffff0 fffffff0 fffffff0 fffffff0 (00000000) + vspltisw: 17 => fffffff1 fffffff1 fffffff1 fffffff1 (00000000) + vspltisw: 18 => fffffff2 fffffff2 fffffff2 fffffff2 (00000000) + vspltisw: 19 => fffffff3 fffffff3 fffffff3 fffffff3 (00000000) + vspltisw: 20 => fffffff4 fffffff4 fffffff4 fffffff4 (00000000) + vspltisw: 21 => fffffff5 fffffff5 fffffff5 fffffff5 (00000000) + vspltisw: 22 => fffffff6 fffffff6 fffffff6 fffffff6 (00000000) + vspltisw: 23 => fffffff7 fffffff7 fffffff7 fffffff7 (00000000) + vspltisw: 24 => fffffff8 fffffff8 fffffff8 fffffff8 (00000000) + vspltisw: 25 => fffffff9 fffffff9 fffffff9 fffffff9 (00000000) + vspltisw: 26 => fffffffa fffffffa fffffffa fffffffa (00000000) + vspltisw: 27 => fffffffb fffffffb fffffffb fffffffb (00000000) + vspltisw: 28 => fffffffc fffffffc fffffffc fffffffc (00000000) + vspltisw: 29 => fffffffd fffffffd fffffffd fffffffd (00000000) + vspltisw: 30 => fffffffe fffffffe fffffffe fffffffe (00000000) + vspltisw: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsldoi: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0 + vsldoi: => 01020304 05060708 090a0b0c 0e0d0e0f] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 14 + vsldoi: => 0e0f0102 03040506 0708090a 0b0c0e0d] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0 + vsldoi: => 01020304 05060708 090a0b0c 0e0d0e0f] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 14 + vsldoi: => 0e0ff1f2 f3f4f5f6 f7f8f9fa fbfcfefd] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0 + vsldoi: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 14 + vsldoi: => feff0102 03040506 0708090a 0b0c0e0d] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0 + vsldoi: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 14 + vsldoi: => fefff1f2 f3f4f5f6 f7f8f9fa fbfcfefd] (00000000) + + lvsl -1, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsl 0, 0 => 00010203 04050607 08090a0b 0c0d0e0f (00000000) + lvsl 1, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsl 2, 0 => 02030405 06070809 0a0b0c0d 0e0f1011 (00000000) + lvsl 3, 0 => 03040506 0708090a 0b0c0d0e 0f101112 (00000000) + lvsl 4, 0 => 04050607 08090a0b 0c0d0e0f 10111213 (00000000) + lvsl 5, 0 => 05060708 090a0b0c 0d0e0f10 11121314 (00000000) + lvsl 6, 0 => 06070809 0a0b0c0d 0e0f1011 12131415 (00000000) + lvsl 7, 0 => 0708090a 0b0c0d0e 0f101112 13141516 (00000000) + lvsl 8, 0 => 08090a0b 0c0d0e0f 10111213 14151617 (00000000) + lvsl 9, 0 => 090a0b0c 0d0e0f10 11121314 15161718 (00000000) + lvsl 10, 0 => 0a0b0c0d 0e0f1011 12131415 16171819 (00000000) + lvsl 11, 0 => 0b0c0d0e 0f101112 13141516 1718191a (00000000) + lvsl 12, 0 => 0c0d0e0f 10111213 14151617 18191a1b (00000000) + lvsl 13, 0 => 0d0e0f10 11121314 15161718 191a1b1c (00000000) + lvsl 14, 0 => 0e0f1011 12131415 16171819 1a1b1c1d (00000000) + lvsl 15, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsl 16, 0 => 00010203 04050607 08090a0b 0c0d0e0f (00000000) + + lvsr -1, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsr 0, 0 => 10111213 14151617 18191a1b 1c1d1e1f (00000000) + lvsr 1, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsr 2, 0 => 0e0f1011 12131415 16171819 1a1b1c1d (00000000) + lvsr 3, 0 => 0d0e0f10 11121314 15161718 191a1b1c (00000000) + lvsr 4, 0 => 0c0d0e0f 10111213 14151617 18191a1b (00000000) + lvsr 5, 0 => 0b0c0d0e 0f101112 13141516 1718191a (00000000) + lvsr 6, 0 => 0a0b0c0d 0e0f1011 12131415 16171819 (00000000) + lvsr 7, 0 => 090a0b0c 0d0e0f10 11121314 15161718 (00000000) + lvsr 8, 0 => 08090a0b 0c0d0e0f 10111213 14151617 (00000000) + lvsr 9, 0 => 0708090a 0b0c0d0e 0f101112 13141516 (00000000) + lvsr 10, 0 => 06070809 0a0b0c0d 0e0f1011 12131415 (00000000) + lvsr 11, 0 => 05060708 090a0b0c 0d0e0f10 11121314 (00000000) + lvsr 12, 0 => 04050607 08090a0b 0c0d0e0f 10111213 (00000000) + lvsr 13, 0 => 03040506 0708090a 0b0c0d0e 0f101112 (00000000) + lvsr 14, 0 => 02030405 06070809 0a0b0c0d 0e0f1011 (00000000) + lvsr 15, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsr 16, 0 => 10111213 14151617 18191a1b 1c1d1e1f (00000000) + +Altivec load insns with two register args: + lvebx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000000 00000000 00000000 (00000000) + lvebx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000008 00000000 00000000 (00000000) + lvebx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 00000e00 (00000000) + lvebx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 00000000 00000000 00000000 (00000000) + lvebx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 000000f8 00000000 00000000 (00000000) + lvebx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 0000fe00 (00000000) + + lvehx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000000 00000000 00000000 (00000000) + lvehx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000708 00000000 00000000 (00000000) + lvehx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 00000e0f (00000000) + lvehx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 00000000 00000000 00000000 (00000000) + lvehx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 0000f7f8 00000000 00000000 (00000000) + lvehx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 0000feff (00000000) + + lvewx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 00000000 00000000 00000000 (00000000) + lvewx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 05060708 00000000 00000000 (00000000) + lvewx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 0e0d0e0f (00000000) + lvewx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 00000000 00000000 00000000 (00000000) + lvewx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 f5f6f7f8 00000000 00000000 (00000000) + lvewx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 fefdfeff (00000000) + + lvx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + lvxl 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvxl 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvxl 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +Altivec store insns with three register args: + stvebx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000000 00000000 00000000 (00000000) + stvebx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000008 00000000 00000000 (00000000) + stvebx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000008 00000000 00000e00 (00000000) + stvebx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 00000000 00000000 00000000 (00000000) + stvebx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 000000f8 00000000 00000000 (00000000) + stvebx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 000000f8 00000000 0000fe00 (00000000) + + stvehx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000000 00000000 00000000 (00000000) + stvehx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000708 00000000 00000000 (00000000) + stvehx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000708 00000000 00000e0f (00000000) + stvehx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 00000000 00000000 00000000 (00000000) + stvehx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 0000f7f8 00000000 00000000 (00000000) + stvehx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 0000f7f8 00000000 0000feff (00000000) + + stvewx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 00000000 00000000 00000000 (00000000) + stvewx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 00000000 00000000 (00000000) + stvewx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 00000000 0e0d0e0f (00000000) + stvewx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 00000000 00000000 00000000 (00000000) + stvewx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 00000000 00000000 (00000000) + stvewx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 00000000 fefdfeff (00000000) + + stvx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + stvxl 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvxl 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvxl 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +Altivec floating point arith insns with three args: +Altivec floating point arith insns with two args: + vaddfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 033fffff 033fffff 033fffff 033fffff (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 00000000 00000000 00000000 00000000 (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 00000000 00000000 00000000 00000000 (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d1bfffff d1bfffff d1bfffff d1bfffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vaddfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vaddfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsubfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 00000000 00000000 00000000 00000000 (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 51bfffff 51bfffff 51bfffff 51bfffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 833fffff 833fffff 833fffff 833fffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 00000000 00000000 00000000 00000000 (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vsubfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vsubfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 00000000 00000000 00000000 00000000 (00000000) + vmaxfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 80000000 80000000 80000000 80000000 (00000000) + vmaxfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vminfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vminfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 00000000 00000000 00000000 00000000 (00000000) + vminfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vminfp: => 00000000 00000000 00000000 00000000 (00000000) + vminfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 80000000 80000000 80000000 80000000 (00000000) + vminfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vminfp: => 80000000 80000000 80000000 80000000 (00000000) + vminfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vminfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vminfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + +Altivec floating point arith insns with one arg: + vrfin: 02bfffff 02bfffff 02bfffff 02bfffff + vrfin: => 00000000 00000000 00000000 00000000 (00000000) + vrfin: 513fffff 513fffff 513fffff 513fffff + vrfin: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfin: 82bfffff 82bfffff 82bfffff 82bfffff + vrfin: => 80000000 80000000 80000000 80000000 (00000000) + vrfin: d13fffff d13fffff d13fffff d13fffff + vrfin: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfin: 00000000 00000000 00000000 00000000 + vrfin: => 00000000 00000000 00000000 00000000 (00000000) + vrfin: 80000000 80000000 80000000 80000000 + vrfin: => 80000000 80000000 80000000 80000000 (00000000) + vrfin: 7f800000 7f800000 7f800000 7f800000 + vrfin: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfin: ff800000 ff800000 ff800000 ff800000 + vrfin: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfin: 7fffffff 7fffffff 7fffffff 7fffffff + vrfin: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfin: ffffffff ffffffff ffffffff ffffffff + vrfin: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfin: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfin: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfin: ffbfffff ffbfffff ffbfffff ffbfffff + vrfin: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfiz: 02bfffff 02bfffff 02bfffff 02bfffff + vrfiz: => 00000000 00000000 00000000 00000000 (00000000) + vrfiz: 513fffff 513fffff 513fffff 513fffff + vrfiz: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfiz: 82bfffff 82bfffff 82bfffff 82bfffff + vrfiz: => 80000000 80000000 80000000 80000000 (00000000) + vrfiz: d13fffff d13fffff d13fffff d13fffff + vrfiz: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfiz: 00000000 00000000 00000000 00000000 + vrfiz: => 00000000 00000000 00000000 00000000 (00000000) + vrfiz: 80000000 80000000 80000000 80000000 + vrfiz: => 80000000 80000000 80000000 80000000 (00000000) + vrfiz: 7f800000 7f800000 7f800000 7f800000 + vrfiz: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfiz: ff800000 ff800000 ff800000 ff800000 + vrfiz: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfiz: 7fffffff 7fffffff 7fffffff 7fffffff + vrfiz: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfiz: ffffffff ffffffff ffffffff ffffffff + vrfiz: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfiz: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfiz: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfiz: ffbfffff ffbfffff ffbfffff ffbfffff + vrfiz: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfip: 02bfffff 02bfffff 02bfffff 02bfffff + vrfip: => 3f800000 3f800000 3f800000 3f800000 (00000000) + vrfip: 513fffff 513fffff 513fffff 513fffff + vrfip: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfip: 82bfffff 82bfffff 82bfffff 82bfffff + vrfip: => 80000000 80000000 80000000 80000000 (00000000) + vrfip: d13fffff d13fffff d13fffff d13fffff + vrfip: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfip: 00000000 00000000 00000000 00000000 + vrfip: => 00000000 00000000 00000000 00000000 (00000000) + vrfip: 80000000 80000000 80000000 80000000 + vrfip: => 80000000 80000000 80000000 80000000 (00000000) + vrfip: 7f800000 7f800000 7f800000 7f800000 + vrfip: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfip: ff800000 ff800000 ff800000 ff800000 + vrfip: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfip: 7fffffff 7fffffff 7fffffff 7fffffff + vrfip: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfip: ffffffff ffffffff ffffffff ffffffff + vrfip: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfip: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfip: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfip: ffbfffff ffbfffff ffbfffff ffbfffff + vrfip: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfim: 02bfffff 02bfffff 02bfffff 02bfffff + vrfim: => 00000000 00000000 00000000 00000000 (00000000) + vrfim: 513fffff 513fffff 513fffff 513fffff + vrfim: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfim: 82bfffff 82bfffff 82bfffff 82bfffff + vrfim: => bf800000 bf800000 bf800000 bf800000 (00000000) + vrfim: d13fffff d13fffff d13fffff d13fffff + vrfim: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfim: 00000000 00000000 00000000 00000000 + vrfim: => 00000000 00000000 00000000 00000000 (00000000) + vrfim: 80000000 80000000 80000000 80000000 + vrfim: => 80000000 80000000 80000000 80000000 (00000000) + vrfim: 7f800000 7f800000 7f800000 7f800000 + vrfim: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfim: ff800000 ff800000 ff800000 ff800000 + vrfim: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfim: 7fffffff 7fffffff 7fffffff 7fffffff + vrfim: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfim: ffffffff ffffffff ffffffff ffffffff + vrfim: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfim: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfim: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfim: ffbfffff ffbfffff ffbfffff ffbfffff + vrfim: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrefp: 02bfffff 02bfffff 02bfffff 02bfffff + vrefp: => 7c2aa900 7c2aa900 7c2aa900 7c2aa900 (00000000) + vrefp: 513fffff 513fffff 513fffff 513fffff + vrefp: => 2daaa900 2daaa900 2daaa900 2daaa900 (00000000) + vrefp: 82bfffff 82bfffff 82bfffff 82bfffff + vrefp: => fc2aa900 fc2aa900 fc2aa900 fc2aa900 (00000000) + vrefp: d13fffff d13fffff d13fffff d13fffff + vrefp: => adaaa900 adaaa900 adaaa900 adaaa900 (00000000) + vrefp: 00000000 00000000 00000000 00000000 + vrefp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrefp: 80000000 80000000 80000000 80000000 + vrefp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrefp: 7f800000 7f800000 7f800000 7f800000 + vrefp: => 00000000 00000000 00000000 00000000 (00000000) + vrefp: ff800000 ff800000 ff800000 ff800000 + vrefp: => 80000000 80000000 80000000 80000000 (00000000) + vrefp: 7fffffff 7fffffff 7fffffff 7fffffff + vrefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrefp: ffffffff ffffffff ffffffff ffffffff + vrefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + vrefp: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrefp: ffbfffff ffbfffff ffbfffff ffbfffff + vrefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + + vrsqrtefp: 02bfffff 02bfffff 02bfffff 02bfffff + vrsqrtefp: => 5dd10300 5dd10300 5dd10300 5dd10300 (00000000) + vrsqrtefp: 513fffff 513fffff 513fffff 513fffff + vrsqrtefp: => 3693ca00 3693ca00 3693ca00 3693ca00 (00000000) + vrsqrtefp: 82bfffff 82bfffff 82bfffff 82bfffff + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: d13fffff d13fffff d13fffff d13fffff + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: 00000000 00000000 00000000 00000000 + vrsqrtefp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrsqrtefp: 80000000 80000000 80000000 80000000 + vrsqrtefp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrsqrtefp: 7f800000 7f800000 7f800000 7f800000 + vrsqrtefp: => 00000000 00000000 00000000 00000000 (00000000) + vrsqrtefp: ff800000 ff800000 ff800000 ff800000 + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: 7fffffff 7fffffff 7fffffff 7fffffff + vrsqrtefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrsqrtefp: ffffffff ffffffff ffffffff ffffffff + vrsqrtefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + vrsqrtefp: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrsqrtefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrsqrtefp: ffbfffff ffbfffff ffbfffff ffbfffff + vrsqrtefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + +Altivec floating point compare insns: + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + +Altivec floating point compare insns with flags update: + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + +Altivec float special insns: + vcfux: 02bfffff ( 2.821186e-37), 0 => 4c300000 ( 4.613734e+07) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 9 => 47b00000 ( 9.011200e+04) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 18 => 43300000 ( 1.760000e+02) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 27 => 3eb00000 ( 3.437500e-01) (00000000) + vcfux: 513fffff ( 5.153960e+10), 0 => 4ea28000 ( 1.363149e+09) (00000000) + vcfux: 513fffff ( 5.153960e+10), 9 => 4a228000 ( 2.662400e+06) (00000000) + vcfux: 513fffff ( 5.153960e+10), 18 => 45a28000 ( 5.200000e+03) (00000000) + vcfux: 513fffff ( 5.153960e+10), 27 => 41228000 ( 1.015625e+01) (00000000) + vcfux: 82bfffff (-2.821186e-37), 0 => 4f02c000 ( 2.193621e+09) (00000000) + vcfux: 82bfffff (-2.821186e-37), 9 => 4a82c000 ( 4.284416e+06) (00000000) + vcfux: 82bfffff (-2.821186e-37), 18 => 4602c000 ( 8.368000e+03) (00000000) + vcfux: 82bfffff (-2.821186e-37), 27 => 4182c000 ( 1.634375e+01) (00000000) + vcfux: d13fffff (-5.153960e+10), 0 => 4f514000 ( 3.510632e+09) (00000000) + vcfux: d13fffff (-5.153960e+10), 9 => 4ad14000 ( 6.856704e+06) (00000000) + vcfux: d13fffff (-5.153960e+10), 18 => 46514000 ( 1.339200e+04) (00000000) + vcfux: d13fffff (-5.153960e+10), 27 => 41d14000 ( 2.615625e+01) (00000000) + vcfux: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 80000000 (-0.000000e+00), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfux: 80000000 (-0.000000e+00), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfux: 80000000 (-0.000000e+00), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfux: 80000000 (-0.000000e+00), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfux: 7f800000 ( inf), 0 => 4eff0000 ( 2.139095e+09) (00000000) + vcfux: 7f800000 ( inf), 9 => 4a7f0000 ( 4.177920e+06) (00000000) + vcfux: 7f800000 ( inf), 18 => 45ff0000 ( 8.160000e+03) (00000000) + vcfux: 7f800000 ( inf), 27 => 417f0000 ( 1.593750e+01) (00000000) + vcfux: ff800000 ( -inf), 0 => 4f7f8000 ( 4.286579e+09) (00000000) + vcfux: ff800000 ( -inf), 9 => 4aff8000 ( 8.372224e+06) (00000000) + vcfux: ff800000 ( -inf), 18 => 467f8000 ( 1.635200e+04) (00000000) + vcfux: ff800000 ( -inf), 27 => 41ff8000 ( 3.193750e+01) (00000000) + vcfux: 7fffffff ( nan), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfux: 7fffffff ( nan), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfux: 7fffffff ( nan), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfux: 7fffffff ( nan), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfux: ffffffff ( -nan), 0 => 4f800000 ( 4.294967e+09) (00000000) + vcfux: ffffffff ( -nan), 9 => 4b000000 ( 8.388608e+06) (00000000) + vcfux: ffffffff ( -nan), 18 => 46800000 ( 1.638400e+04) (00000000) + vcfux: ffffffff ( -nan), 27 => 42000000 ( 3.200000e+01) (00000000) + vcfux: 7fbfffff ( nan), 0 => 4eff8000 ( 2.143289e+09) (00000000) + vcfux: 7fbfffff ( nan), 9 => 4a7f8000 ( 4.186112e+06) (00000000) + vcfux: 7fbfffff ( nan), 18 => 45ff8000 ( 8.176000e+03) (00000000) + vcfux: 7fbfffff ( nan), 27 => 417f8000 ( 1.596875e+01) (00000000) + vcfux: ffbfffff ( -nan), 0 => 4f7fc000 ( 4.290773e+09) (00000000) + vcfux: ffbfffff ( -nan), 9 => 4affc000 ( 8.380416e+06) (00000000) + vcfux: ffbfffff ( -nan), 18 => 467fc000 ( 1.636800e+04) (00000000) + vcfux: ffbfffff ( -nan), 27 => 41ffc000 ( 3.196875e+01) (00000000) + + vcfsx: 02bfffff ( 2.821186e-37), 0 => 4c300000 ( 4.613734e+07) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 9 => 47b00000 ( 9.011200e+04) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 18 => 43300000 ( 1.760000e+02) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 27 => 3eb00000 ( 3.437500e-01) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 0 => 4ea28000 ( 1.363149e+09) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 9 => 4a228000 ( 2.662400e+06) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 18 => 45a28000 ( 5.200000e+03) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 27 => 41228000 ( 1.015625e+01) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 0 => cefa8000 (-2.101346e+09) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 9 => ca7a8000 (-4.104192e+06) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 18 => c5fa8000 (-8.016000e+03) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 27 => c17a8000 (-1.565625e+01) (00000000) + vcfsx: d13fffff (-5.153960e+10), 0 => ce3b0000 (-7.843348e+08) (00000000) + vcfsx: d13fffff (-5.153960e+10), 9 => c9bb0000 (-1.531904e+06) (00000000) + vcfsx: d13fffff (-5.153960e+10), 18 => c53b0000 (-2.992000e+03) (00000000) + vcfsx: d13fffff (-5.153960e+10), 27 => c0bb0000 (-5.843750e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 80000000 (-0.000000e+00), 0 => cf000000 (-2.147484e+09) (00000000) + vcfsx: 80000000 (-0.000000e+00), 9 => ca800000 (-4.194304e+06) (00000000) + vcfsx: 80000000 (-0.000000e+00), 18 => c6000000 (-8.192000e+03) (00000000) + vcfsx: 80000000 (-0.000000e+00), 27 => c1800000 (-1.600000e+01) (00000000) + vcfsx: 7f800000 ( inf), 0 => 4eff0000 ( 2.139095e+09) (00000000) + vcfsx: 7f800000 ( inf), 9 => 4a7f0000 ( 4.177920e+06) (00000000) + vcfsx: 7f800000 ( inf), 18 => 45ff0000 ( 8.160000e+03) (00000000) + vcfsx: 7f800000 ( inf), 27 => 417f0000 ( 1.593750e+01) (00000000) + vcfsx: ff800000 ( -inf), 0 => cb000000 (-8.388608e+06) (00000000) + vcfsx: ff800000 ( -inf), 9 => c6800000 (-1.638400e+04) (00000000) + vcfsx: ff800000 ( -inf), 18 => c2000000 (-3.200000e+01) (00000000) + vcfsx: ff800000 ( -inf), 27 => bd800000 (-6.250000e-02) (00000000) + vcfsx: 7fffffff ( nan), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfsx: 7fffffff ( nan), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfsx: 7fffffff ( nan), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfsx: 7fffffff ( nan), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfsx: ffffffff ( -nan), 0 => bf800000 (-1.000000e+00) (00000000) + vcfsx: ffffffff ( -nan), 9 => bb000000 (-1.953125e-03) (00000000) + vcfsx: ffffffff ( -nan), 18 => b6800000 (-3.814697e-06) (00000000) + vcfsx: ffffffff ( -nan), 27 => b2000000 (-7.450581e-09) (00000000) + vcfsx: 7fbfffff ( nan), 0 => 4eff8000 ( 2.143289e+09) (00000000) + vcfsx: 7fbfffff ( nan), 9 => 4a7f8000 ( 4.186112e+06) (00000000) + vcfsx: 7fbfffff ( nan), 18 => 45ff8000 ( 8.176000e+03) (00000000) + vcfsx: 7fbfffff ( nan), 27 => 417f8000 ( 1.596875e+01) (00000000) + vcfsx: ffbfffff ( -nan), 0 => ca800002 (-4.194305e+06) (00000000) + vcfsx: ffbfffff ( -nan), 9 => c6000002 (-8.192002e+03) (00000000) + vcfsx: ffbfffff ( -nan), 18 => c1800002 (-1.600000e+01) (00000000) + vcfsx: ffbfffff ( -nan), 27 => bd000002 (-3.125001e-02) (00000000) + + vctuxs: 02bfffff ( 2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 0 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 9 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 18 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 27 => ffffffff ( -nan) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7f800000 ( inf), 0 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 9 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 18 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 27 => ffffffff ( -nan) (00000000) + vctuxs: ff800000 ( -inf), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + + vctsxs: 02bfffff ( 2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 0 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 9 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 18 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 27 => 7fffffff ( nan) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 0 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 9 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 18 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 27 => 80000000 (-0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7f800000 ( inf), 0 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 9 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 18 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 27 => 7fffffff ( nan) (00000000) + vctsxs: ff800000 ( -inf), 0 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 9 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 18 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 27 => 80000000 (-0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + +All done. Tested 163 different instructions diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.vgtest index 0f32c0d2b..183536b56 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/jm-vmx.vgtest @@ -1 +1,2 @@ +prereq: ../../../tests/check_vmx_cap prog: jm-insns -a diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.c new file mode 100644 index 000000000..d6f6bc320 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power5+_round.c @@ -0,0 +1,168 @@ +/* Copyright (C) 2007 IBM + + Author: Pete Eberlein eberlein@us.ibm.com + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + + + +#include +#include +#include + +#define POS_NORMAL 0x4000 +#define NEG_NORMAL 0x8000 +#define POS_INF 0x5000 +#define NEG_INF 0x9000 +#define POS_ZERO 0x2000 +#define NEG_ZERO 0x12000 +#define POS_DENORMAL 0x14000 +#define NEG_DENORMAL 0x18000 +#define NAN 0x11000 +#define FPRF_MASK 0x1F000 + + +int main(int argc, char *argv[]) +{ + + double inf, neg0, nan; + union { + double d; + struct { + unsigned int dummy, dummy2:15, fprf:17; + }; + } fpscr; + + inf = strtod("inf", NULL); + neg0 = strtod("-0", NULL); + nan = strtod("nan", NULL); + + + /* This set is disabled until fprf is implemented. */ + if (0) { + double set[] = { inf, 1.5, 0, neg0, -1.5, -inf, nan }; + int i, j, fprf; + for (i = 0; i < 7; ++i) { + for (j = 0; j < 7; ++j) { + asm("fcmpu 1, %1, %2\n\t" "mffs %0\n":"=f"(fpscr.d) + : "f"(set[i]), "f"(set[j]) + ); + + if (i == 6 || j == 6) { + fprf = 0x1000; // Unordered + } else if (i == j || (i == 2 && j == 3) || (i == 3 && j == 2)) { + fprf = 0x2000; // Equal + } else if (i < j) { + fprf = 0x4000; // Greater Than + } else if (i > j) { + fprf = 0x8000; // Less Than + } + + printf("fcmpu\t%.1f\t%.1f\t%x\t%s\n", set[i], set[j], + fpscr.fprf, fpscr.fprf == fprf ? "PASS" : "FAIL"); + } + } + } + + { + double set[] = { inf, 1.9, 1.1, 0, neg0, -1.1, -1.9, -inf, nan }; + double frin[] = { inf, 2.0, 1.0, 0, neg0, -1.0, -2.0, -inf, nan }; + double friz[] = { inf, 1.0, 1.0, 0, neg0, -1.0, -1.0, -inf, nan }; + double frip[] = { inf, 2.0, 2.0, 0, neg0, -1.0, -1.0, -inf, nan }; + double frim[] = { inf, 1.0, 1.0, 0, neg0, -2.0, -2.0, -inf, nan }; + int fprf[] = { POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO, + NEG_NORMAL, NEG_NORMAL, NEG_INF, NAN + }; + double set2[] = { 0.9, 0.1, -0.1, -0.9, 1e-40, -1e-40 }; + double frin2[] = { 1.0, 0.0, -0.0, -1.0, 0.0, -0.0 }; + int frin2rf[] = + { POS_NORMAL, POS_ZERO, NEG_ZERO, NEG_NORMAL, POS_ZERO, + NEG_ZERO }; + double friz2[] = { 0.0, 0.0, -0.0, -0.0, 0.0, -0.0 }; + int friz2rf[] = + { POS_ZERO, POS_ZERO, NEG_ZERO, NEG_ZERO, POS_ZERO, NEG_ZERO }; + double frip2[] = { 1.0, 1.0, -0.0, -0.0, 1.0, -0.0 }; + int frip2rf[] = + { POS_NORMAL, POS_NORMAL, NEG_ZERO, NEG_ZERO, POS_NORMAL, + NEG_ZERO }; + double frim2[] = { 0.0, 0.0, -1.0, -1.0, 0.0, -1.0 }; + int frim2rf[] = + { POS_ZERO, POS_ZERO, NEG_NORMAL, NEG_NORMAL, POS_ZERO, + NEG_NORMAL }; + double ret; + int i; + +#define DO_TEST(op,in,out,rf) for (i=0; i +#include +#include + +#define CMPB(result,a,b) \ + asm __volatile ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) + + +int main(int argc, char *argv[]) +{ + int i, j, k; + long mask; + for (i = 1; i < 16; i++) { + mask = 0; + if (i & 1) + mask += 0xff; + if (i & 2) + mask += 0xff00; + if (i & 4) + mask += 0xff0000; + if (i & 8) + mask += 0xff000000; + + for (j = 0; j < 256; j++) + for (k = 0; k < 256; k++) + if (j != k) { + + long a, b, result; + a = (mask & (j * 0x1010101)) + ((~mask) & (k * 0x1010101)); + b = j * 0x1010101; + CMPB(result, a, b); + if (result != mask) { + printf("%llx %llx %llx %llx\n", + (unsigned long long) mask, (unsigned long long) a, + (unsigned long long) b, + (unsigned long long) result); + exit(1); + } + } + + } + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.vgtest new file mode 100644 index 000000000..28146c0ff --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/power6_bcmp.vgtest @@ -0,0 +1 @@ +prog: power6_bcmp diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/testVMX.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/testVMX.vgtest index 7c5150313..81c59f201 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/testVMX.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/testVMX.vgtest @@ -1 +1,2 @@ +prereq: ../../../tests/check_vmx_cap prog: testVMX diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_fx.stdout.exp_Minus_nan b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_fx.stdout.exp_Minus_nan new file mode 100644 index 000000000..c5610f821 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_fx.stdout.exp_Minus_nan @@ -0,0 +1,40 @@ + +fsqrt 0.000000e+00 -> 0.00000000000000e+00 +fsqrt inf -> inf +fsqrt -inf -> nan +fsqrt nan -> nan +fsqrt -nan -> -nan +fsqrt -5.000000e+100 -> nan +fsqrt -5.000000e+20 -> nan +fsqrt -5.010000e+02 -> nan +fsqrt -6.000000e+00 -> nan +fsqrt -1.000000e+00 -> nan +fsqrt -2.000000e-20 -> nan +fsqrt -2.000000e-200 -> nan +fsqrt 2.000000e-200 -> 1.41421356237310e-100 +fsqrt 2.000000e-20 -> 1.41421356237310e-10 +fsqrt 1.000000e+00 -> 1.00000000000000e+00 +fsqrt 6.000000e+00 -> 2.44948974278318e+00 +fsqrt 5.010000e+02 -> 2.23830292855994e+01 +fsqrt 5.000000e+20 -> 2.23606797749979e+10 +fsqrt 5.000000e+100 -> 2.23606797749979e+50 + +fsqrts 0.000000e+00 -> 0.000000e+00 +fsqrts inf -> inf +fsqrts -inf -> nan +fsqrts nan -> nan +fsqrts -nan -> -nan +fsqrts -5.000000e+100 -> nan +fsqrts -5.000000e+20 -> nan +fsqrts -5.010000e+02 -> nan +fsqrts -6.000000e+00 -> nan +fsqrts -1.000000e+00 -> nan +fsqrts -2.000000e-20 -> nan +fsqrts -2.000000e-200 -> nan +fsqrts 2.000000e-200 -> 1.414214e-100 +fsqrts 2.000000e-20 -> 1.414214e-10 +fsqrts 1.000000e+00 -> 1.000000e+00 +fsqrts 6.000000e+00 -> 2.449490e+00 +fsqrts 5.010000e+02 -> 2.238303e+01 +fsqrts 5.000000e+20 -> 2.236068e+10 +fsqrts 5.000000e+100 -> 2.236068e+50 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_gx.stdout.exp_Minus_nan b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_gx.stdout.exp_Minus_nan new file mode 100644 index 000000000..5fe4e19e0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_gx.stdout.exp_Minus_nan @@ -0,0 +1,80 @@ + +fre 0.000000e+00 -> inf +fre inf -> 0.0e+00 +fre -inf -> -0.0e+00 +fre nan -> nan +fre -nan -> -nan +fre -5.000000e+100 -> -2.0e-101 +fre -5.000000e+20 -> -2.0e-21 +fre -5.010000e+02 -> -2.0e-03 +fre -6.000000e+00 -> -1.7e-01 +fre -1.010000e+00 -> -9.9e-01 +fre -2.000000e-20 -> -5.0e+19 +fre -2.000000e-200 -> -5.0e+199 +fre 2.000000e-200 -> 5.0e+199 +fre 2.000000e-20 -> 5.0e+19 +fre 1.010000e+00 -> 9.9e-01 +fre 6.000000e+00 -> 1.7e-01 +fre 5.010000e+02 -> 2.0e-03 +fre 5.000000e+20 -> 2.0e-21 +fre 5.000000e+100 -> 2.0e-101 + +fres 0.000000e+00 -> inf +fres inf -> 0.0e+00 +fres -inf -> -0.0e+00 +fres nan -> nan +fres -nan -> -nan +fres -5.000000e+100 -> -0.0e+00 +fres -5.000000e+20 -> -2.0e-21 +fres -5.010000e+02 -> -2.0e-03 +fres -6.000000e+00 -> -1.7e-01 +fres -1.010000e+00 -> -9.9e-01 +fres -2.000000e-20 -> -5.0e+19 +fres -2.000000e-200 -> -inf +fres 2.000000e-200 -> inf +fres 2.000000e-20 -> 5.0e+19 +fres 1.010000e+00 -> 9.9e-01 +fres 6.000000e+00 -> 1.7e-01 +fres 5.010000e+02 -> 2.0e-03 +fres 5.000000e+20 -> 2.0e-21 +fres 5.000000e+100 -> 0.0e+00 + +frsqrte 0.000000e+00 -> inf +frsqrte inf -> 0.0e+00 +frsqrte -inf -> nan +frsqrte nan -> nan +frsqrte -nan -> -nan +frsqrte -5.000000e+100 -> nan +frsqrte -5.000000e+20 -> nan +frsqrte -5.010000e+02 -> nan +frsqrte -6.000000e+00 -> nan +frsqrte -1.010000e+00 -> nan +frsqrte -2.000000e-20 -> nan +frsqrte -2.000000e-200 -> nan +frsqrte 2.000000e-200 -> 7.1e+99 +frsqrte 2.000000e-20 -> 7.1e+09 +frsqrte 1.010000e+00 -> 1.0e+00 +frsqrte 6.000000e+00 -> 4.1e-01 +frsqrte 5.010000e+02 -> 4.5e-02 +frsqrte 5.000000e+20 -> 4.5e-11 +frsqrte 5.000000e+100 -> 4.5e-51 + +frsqrtes 0.000000e+00 -> inf +frsqrtes inf -> 0.0e+00 +frsqrtes -inf -> nan +frsqrtes nan -> nan +frsqrtes -nan -> -nan +frsqrtes -5.000000e+100 -> nan +frsqrtes -5.000000e+20 -> nan +frsqrtes -5.010000e+02 -> nan +frsqrtes -6.000000e+00 -> nan +frsqrtes -1.010000e+00 -> nan +frsqrtes -2.000000e-20 -> nan +frsqrtes -2.000000e-200 -> nan +frsqrtes 2.000000e-200 -> 7.1e+99 +frsqrtes 2.000000e-20 -> 7.1e+09 +frsqrtes 1.010000e+00 -> 1.0e+00 +frsqrtes 6.000000e+00 -> 4.1e-01 +frsqrtes 5.010000e+02 -> 4.5e-02 +frsqrtes 5.000000e+20 -> 4.5e-11 +frsqrtes 5.000000e+100 -> 4.5e-51 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.c new file mode 100644 index 000000000..9138f4ad3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.c @@ -0,0 +1,2189 @@ +/* Copyright (C) 2011 IBM + + Author: Maynard Johnson + + 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. + + The GNU General Public License is contained in the file COPYING. + */ + +#ifdef HAS_VSX + +#include +#include +#include +#include +#include +#include + +#ifndef __powerpc64__ +typedef uint32_t HWord_t; +#else +typedef uint64_t HWord_t; +#endif /* __powerpc64__ */ + +static int errors; +register HWord_t r14 __asm__ ("r14"); +register HWord_t r15 __asm__ ("r15"); +register HWord_t r16 __asm__ ("r16"); +register HWord_t r17 __asm__ ("r17"); +register double f14 __asm__ ("fr14"); +register double f15 __asm__ ("fr15"); +register double f16 __asm__ ("fr16"); +register double f17 __asm__ ("fr17"); + +static volatile unsigned int cond_reg; + +#define ALLCR "cr0","cr1","cr2","cr3","cr4","cr5","cr6","cr7" + +#define SET_CR(_arg) \ + __asm__ __volatile__ ("mtcr %0" : : "b"(_arg) : ALLCR ); + +#define SET_XER(_arg) \ + __asm__ __volatile__ ("mtxer %0" : : "b"(_arg) : "xer" ); + +#define GET_CR(_lval) \ + __asm__ __volatile__ ("mfcr %0" : "=b"(_lval) ) + +#define GET_XER(_lval) \ + __asm__ __volatile__ ("mfxer %0" : "=b"(_lval) ) + +#define GET_CR_XER(_lval_cr,_lval_xer) \ + do { GET_CR(_lval_cr); GET_XER(_lval_xer); } while (0) + +#define SET_CR_ZERO \ + SET_CR(0) + +#define SET_XER_ZERO \ + SET_XER(0) + +#define SET_CR_XER_ZERO \ + do { SET_CR_ZERO; SET_XER_ZERO; } while (0) + +#define SET_FPSCR_ZERO \ + do { double _d = 0.0; \ + __asm__ __volatile__ ("mtfsf 0xFF, %0" : : "f"(_d) ); \ + } while (0) + + +typedef void (*test_func_t)(void); +typedef struct ldst_test ldst_test_t; +typedef struct vsx_logic_test logic_test_t; +typedef struct xs_conv_test xs_conv_test_t; +typedef struct p7_fp_test fp_test_t; +typedef struct vx_fp_test vx_fp_test_t; +typedef struct vsx_move_test move_test_t; +typedef struct vsx_permute_test permute_test_t; +typedef struct test_table test_table_t; + +static double *fargs = NULL; +static int nb_fargs; + +/* These functions below that construct a table of floating point + * values were lifted from none/tests/ppc32/jm-insns.c. + */ + +#if defined (DEBUG_ARGS_BUILD) +#define AB_DPRINTF(fmt, args...) do { fprintf(stderr, fmt , ##args); } while (0) +#else +#define AB_DPRINTF(fmt, args...) do { } while (0) +#endif + +static inline void register_farg (void *farg, + int s, uint16_t _exp, uint64_t mant) +{ + uint64_t tmp; + + tmp = ((uint64_t)s << 63) | ((uint64_t)_exp << 52) | mant; + *(uint64_t *)farg = tmp; + AB_DPRINTF("%d %03x %013llx => %016llx %0e\n", + s, _exp, mant, *(uint64_t *)farg, *(double *)farg); +} + +static void build_fargs_table(void) +/* + * Double precision: + * Sign goes from zero to one (1 bit) + * Exponent goes from 0 to ((1 << 12) - 1) (11 bits) + * Mantissa goes from 1 to ((1 << 52) - 1) (52 bits) + * + special values: + * +0.0 : 0 0x000 0x0000000000000 => 0x0000000000000000 + * -0.0 : 1 0x000 0x0000000000000 => 0x8000000000000000 + * +infinity : 0 0x7FF 0x0000000000000 => 0x7FF0000000000000 + * -infinity : 1 0x7FF 0x0000000000000 => 0xFFF0000000000000 + * +QNaN : 0 0x7FF 0x7FFFFFFFFFFFF => 0x7FF7FFFFFFFFFFFF + * -QNaN : 1 0x7FF 0x7FFFFFFFFFFFF => 0xFFF7FFFFFFFFFFFF + * +SNaN : 0 0x7FF 0x8000000000000 => 0x7FF8000000000000 + * -SNaN : 1 0x7FF 0x8000000000000 => 0xFFF8000000000000 + * (8 values) + * + * Single precision + * Sign: 1 bit + * Exponent: 8 bits + * Mantissa: 23 bits + * +0.0 : 0 0x00 0x000000 => 0x00000000 + * -0.0 : 1 0x00 0x000000 => 0x80000000 + * +infinity : 0 0xFF 0x000000 => 0x7F800000 + * -infinity : 1 0xFF 0x000000 => 0xFF800000 + * +QNaN : 0 0xFF 0x3FFFFF => 0x7FBFFFFF + * -QNaN : 1 0xFF 0x3FFFFF => 0xFFBFFFFF + * +SNaN : 0 0xFF 0x400000 => 0x7FC00000 + * -SNaN : 1 0xFF 0x400000 => 0xFFC00000 +*/ +{ + uint64_t mant; + uint16_t _exp, e1; + int s; + int i=0; + + if (nb_fargs) + return; + + fargs = malloc( 16 * sizeof(double) ); + for (s = 0; s < 2; s++) { + for (e1 = 0x001;; e1 = ((e1 + 1) << 13) + 7) { + if (e1 >= 0x400) + e1 = 0x3fe; + _exp = e1; + for (mant = 0x0000000000001ULL; mant < (1ULL << 52); + /* Add 'random' bits */ + mant = ((mant + 0x4A6) << 29) + 0x359) { + register_farg( &fargs[i++], s, _exp, mant ); + } + if (e1 == 0x3fe) + break; + } + } + // add a few smaller values to fargs . . . + s = 0; + _exp = 0x002; + mant = 0x0000000000b01ULL; + register_farg(&fargs[i++], s, _exp, mant); + + _exp = 0x000; + mant = 0x00000203f0b3dULL; + register_farg(&fargs[i++], s, _exp, mant); + + mant = 0x00000005a203dULL; + register_farg(&fargs[i++], s, _exp, mant); + + s = 1; + _exp = 0x002; + mant = 0x0000000000b01ULL; + register_farg(&fargs[i++], s, _exp, mant); + + _exp = 0x000; + mant = 0x00000203f0b3dULL; + register_farg(&fargs[i++], s, _exp, mant); + + nb_fargs = i; +} + + +typedef struct ftdiv_test { + int fra_idx; + int frb_idx; + int cr_flags; +} ftdiv_test_args_t; + +typedef struct fp_test_args { + int fra_idx; + int frb_idx; + int cr_flags; + unsigned long long dp_bin_result; +} fp_test_args_t; + +unsigned long long xscvuxddp_results[] = { + 0x43cfec0000000000ULL, + 0x43d013c000000000ULL, + 0x4338000000b77501ULL, + 0x43dffa0000000001ULL, + 0x4372321456990000ULL, + 0x0000000000000000ULL, + 0x43e0000000000000ULL, + 0x43dffc0000000000ULL, + 0x43effe0000000000ULL, + 0x43dffe0000000000ULL, + 0x43efff0000000000ULL, + 0x43dffe0000000000ULL, + 0x43efff0000000000ULL, + 0x43e00106800000f0ULL, + 0x43e81a0ca1eb40f6ULL +}; + +unsigned long long xscvsxddp_results[] = { + 0x43cfec0000000000ULL, + 0x43d013c000000000ULL, + 0x4338000000b77501ULL, + 0x43dffa0000000001ULL, + 0x4372321456990000ULL, + 0x0000000000000000ULL, + 0xc3e0000000000000ULL, + 0x43dffc0000000000ULL, + 0xc330000000000000ULL, + 0x43dffe0000000000ULL, + 0xc320000000000002ULL, + 0x43dffe0000000000ULL, + 0xc320000000000000ULL, + 0xc3dffdf2fffffe20ULL, + 0xc3cf97cd7852fc26ULL, +}; + +unsigned long long xscvdpsxds_results[] = { + 0x0000000000000000ULL, + 0x000000000000003eULL, + 0x0000000000000000ULL, + 0x7fffffffffffffffULL, + 0x0000000000000000ULL, + 0x0000000000000000ULL, + 0x0000000000000000ULL, + 0x7fffffffffffffffULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x0000000000000000ULL, + 0xffffffffffffbe6cULL +}; + +ftdiv_test_args_t ftdiv_tests[] = { + {0, 1, 0x8}, + {9, 1, 0xa}, + {1, 12, 0xa}, + {0, 2, 0xa}, + {1, 3, 0xa}, + {3, 0, 0xa}, + {0, 3, 0xa}, + {4, 0, 0xa}, + {7, 1, 0xe}, + {8, 1, 0xe}, + {1, 7, 0xe}, + {0, 13, 0xe}, + {5, 5, 0xe}, + {5, 6, 0xe}, +}; + +fp_test_args_t xscmpX_tests[] = { + {8, 8, 0x2, 0ULL}, + {8, 14, 0x8, 0ULL}, + {8, 6, 0x8, 0ULL}, + {8, 5, 0x8, 0ULL}, + {8, 4, 0x8, 0ULL}, + {8, 7, 0x8, 0ULL}, + {8, 9, 0x1, 0ULL}, + {8, 11, 0x1, 0ULL}, + {14, 8, 0x4, 0ULL}, + {14, 14, 0x2, 0ULL}, + {14, 6, 0x8, 0ULL}, + {14, 5, 0x8, 0ULL}, + {14, 4, 0x8, 0ULL}, + {14, 7, 0x8, 0ULL}, + {14, 9, 0x1, 0ULL}, + {14, 11, 0x1, 0ULL}, + {6, 8, 0x4, 0ULL}, + {6, 14, 0x4, 0ULL}, + {6, 6, 0x2, 0ULL}, + {6, 5, 0x2, 0ULL}, + {6, 4, 0x8, 0ULL}, + {6, 7, 0x8, 0ULL}, + {6, 9, 0x1, 0ULL}, + {6, 11, 0x1, 0ULL}, + {5, 8, 0x4, 0ULL}, + {5, 14, 0x4, 0ULL}, + {5, 6, 0x2, 0ULL}, + {5, 5, 0x2, 0ULL}, + {5, 4, 0x8, 0ULL}, + {5, 7, 0x8, 0ULL}, + {5, 9, 0x1, 0ULL}, + {5, 11, 0x1, 0ULL}, + {4, 8, 0x4, 0ULL}, + {4, 14, 0x4, 0ULL}, + {4, 6, 0x4, 0ULL}, + {4, 5, 0x4, 0ULL}, + {4, 1, 0x8, 0ULL}, + {4, 7, 0x8, 0ULL}, + {4, 9, 0x1, 0ULL}, + {4, 11, 0x1, 0ULL}, + {7, 8, 0x4, 0ULL}, + {7, 14, 0x4, 0ULL}, + {7, 6, 0x4, 0ULL}, + {7, 5, 0x4, 0ULL}, + {7, 4, 0x4, 0ULL}, + {7, 7, 0x2, 0ULL}, + {7, 9, 0x1, 0ULL}, + {7, 11, 0x1, 0ULL}, + {10, 8, 0x1, 0ULL}, + {10, 14, 0x1, 0ULL}, + {10, 6, 0x1, 0ULL}, + {10, 5, 0x1, 0ULL}, + {10, 4, 0x1, 0ULL}, + {10, 7, 0x1, 0ULL}, + {10, 9, 0x1, 0ULL}, + {10, 11, 0x1, 0ULL}, + {12, 8, 0x1, 0ULL}, + {12, 14, 0x1, 0ULL}, + {12, 6, 0x1, 0ULL}, + {12, 5, 0x1, 0ULL}, + {12, 4, 0x1, 0ULL}, + {12, 7, 0x1, 0ULL}, + {12, 9, 0x1, 0ULL}, + {12, 11, 0x1, 0ULL}, +}; + +fp_test_args_t xsadddp_tests[] = { + {8, 8, 0x0, 0xfff0000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0xfff0000000000000ULL}, + {14, 14, 0x0, 0xc0e0650f5a07b353ULL}, + {14, 6, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 5, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 4, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 7, 0x0, 0x7ff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0xfff0000000000000ULL}, + {6, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {6, 6, 0x0, 0x8000000000000000ULL}, + {6, 5, 0x0, 0x0000000000000000ULL}, + {6, 4, 0x0, 0x0123214569900000ULL}, + {6, 7, 0x0, 0x7ff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0xfff0000000000000ULL}, + {5, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0123214569900000ULL}, + {5, 7, 0x0, 0x7ff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {4, 6, 0x0, 0x0123214569900000ULL}, + {4, 5, 0x0, 0x0123214569900000ULL}, + {4, 1, 0x0, 0x404f000000000000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsdivdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x0000000000000000ULL}, + {14, 14, 0x0, 0x3ff0000000000000ULL}, + {14, 6, 0x0, 0x7ff0000000000000ULL}, + {14, 5, 0x0, 0xfff0000000000000ULL}, + {14, 4, 0x0, 0xff9b6cb57ca13c00ULL}, + {14, 7, 0x0, 0x8000000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x0000000000000000ULL}, + {6, 14, 0x0, 0x0000000000000000ULL}, + {6, 6, 0x0, 0x7ff8000000000000ULL}, + {6, 5, 0x0, 0x7ff8000000000000ULL}, + {6, 4, 0x0, 0x8000000000000000ULL}, + {6, 7, 0x0, 0x8000000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x8000000000000000ULL}, + {5, 14, 0x0, 0x8000000000000000ULL}, + {5, 6, 0x0, 0x7ff8000000000000ULL}, + {5, 5, 0x0, 0x7ff8000000000000ULL}, + {5, 4, 0x0, 0x0000000000000000ULL}, + {5, 7, 0x0, 0x0000000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x8000000000000000ULL}, + {4, 14, 0x0, 0x8042ab59d8b6ec87ULL}, + {4, 6, 0x0, 0xfff0000000000000ULL}, + {4, 5, 0x0, 0x7ff0000000000000ULL}, + {4, 1, 0x0, 0x00c3bf3f64b5ad6bULL}, + {4, 7, 0x0, 0x0000000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmaddXdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0x7ff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0xfff0000000000000ULL}, + {14, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 6, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 4, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0x7ff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0xfff0000000000000ULL}, + {6, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x0000000000000000ULL}, + {6, 4, 0x0, 0x0123214569900000ULL}, + {6, 7, 0x0, 0x7ff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0xfff0000000000000ULL}, + {5, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {5, 6, 0x0, 0x8000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0123214569900000ULL}, + {5, 7, 0x0, 0x7ff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {4, 6, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0x404f000000000000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0xfff0000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0xfff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmsubXdp_tests[] = { + {8, 8, 0x0, 0x7ff0000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0x7ff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x40d0650f5a07b353ULL}, + {14, 6, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 4, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0xfff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsnmaddXdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0x7ff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x40d0650f5a07b353ULL}, + {14, 6, 0x0, 0xc1b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x02039a19ca8fcb5fULL}, + {14, 4, 0x0, 0xc1b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x8000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x8000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x02039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x8000000000000000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff0000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0xfff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0xfff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmuldp_tests[] = { + {8, 8, 0x0, 0x7ff0000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0x7ff8000000000000ULL}, + {8, 5, 0x0, 0x7ff8000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 6, 0x0, 0x0000000000000000ULL}, + {14, 5, 0x0, 0x8000000000000000ULL}, + {14, 4, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff8000000000000ULL}, + {6, 14, 0x0, 0x0000000000000000ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8000000000000000ULL}, + {6, 7, 0x0, 0x7ff8000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff8000000000000ULL}, + {5, 14, 0x0, 0x8000000000000000ULL}, + {5, 6, 0x0, 0x8000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0000000000000000ULL}, + {5, 7, 0x0, 0x7ff8000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 6, 0x0, 0x8000000000000000ULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0x0182883b3e438000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0xfff0000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0x7ff8000000000000ULL}, + {7, 5, 0x0, 0x7ff8000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xssubdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x0000000000000000ULL}, + {14, 6, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 5, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 4, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x0123214569900000ULL}, + {4, 5, 0x0, 0x0123214569900000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff0000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + + + +static int nb_special_fargs; +static double * spec_fargs; + +static void build_special_fargs_table(void) +{ + /* The special floating point values created below are for + * use in the ftdiv tests for setting the fe_flag and fg_flag, + * but they can also be used for other tests (e.g., xscmpudp). + * + * Note that fl_flag is 'always '1' on ppc64 Linux. + * + Entry Sign Exp fraction Special value + 0 0 3fd 0x8000000000000ULL Positive finite number + 1 0 404 0xf000000000000ULL ... + 2 0 001 0x8000000b77501ULL ... + 3 0 7fe 0x800000000051bULL ... + 4 0 012 0x3214569900000ULL ... + 5 0 000 0x0000000000000ULL +0.0 (+zero) + 6 1 000 0x0000000000000ULL -0.0 (-zero) + 7 0 7ff 0x0000000000000ULL +infinity + 8 1 7ff 0x0000000000000ULL -infinity + 9 0 7ff 0x7FFFFFFFFFFFFULL +QNaN + 10 1 7ff 0x7FFFFFFFFFFFFULL -QNaN + 11 0 7ff 0x8000000000000ULL +SNaN + 12 1 7ff 0x8000000000000ULL -SNaN + 13 1 000 0x8340000078000ULL Denormalized val (zero exp and non-zero fraction) + 14 1 40d 0x0650f5a07b353ULL Negative finite number + */ + + uint64_t mant; + uint16_t _exp; + int s; + int i = 0; + + if (spec_fargs) + return; + + spec_fargs = malloc( 16 * sizeof(double) ); + + // #0 + s = 0; + _exp = 0x3fd; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + // #1 + s = 0; + _exp = 0x404; + mant = 0xf000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* None of the ftdiv tests succeed. + * FRA = value #0; FRB = value #1 + * ea_ = -2; e_b = 5 + * fl_flag || fg_flag || fe_flag = 100 + */ + + /************************************************* + * fe_flag tests + * + *************************************************/ + + /* fe_flag <- 1 if FRA is a NaN + * FRA = value #9; FRB = value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRB is a NaN + * FRA = value #1; FRB = value #12 + * e_a = 5; e_b = 1024 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if e_b <= -1022 + * FRA = value #0; FRB = value #2 + * e_a = -2; e_b = -1022 + * fl_flag || fg_flag || fe_flag = 101 + * + */ + // #2 + s = 0; + _exp = 0x001; + mant = 0x8000000b77501ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* fe_flag <- 1 if e_b >= 1021 + * FRA = value #1; FRB = value #3 + * e_a = 5; e_b = 1023 + * fl_flag || fg_flag || fe_flag = 101 + */ + // #3 + s = 0; + _exp = 0x7fe; + mant = 0x800000000051bULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* fe_flag <- 1 if FRA != 0 && e_a - e_b >= 1023 + * Let FRA = value #3 and FRB be value #0. + * e_a = 1023; e_b = -2 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRA != 0 && e_a - e_b <= -1023 + * Let FRA = value #0 above and FRB be value #3 above + * e_a = -2; e_b = 1023 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRA != 0 && e_a <= -970 + * Let FRA = value #4 and FRB be value #0 + * e_a = -1005; e_b = -2 + * fl_flag || fg_flag || fe_flag = 101 + */ + // #4 + s = 0; + _exp = 0x012; + mant = 0x3214569900000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /************************************************* + * fg_flag tests + * + *************************************************/ + /* fg_flag <- 1 if FRA is an Infinity + * NOTE: FRA = Inf also sets fe_flag + * Do two tests, using values #7 and #8 (+/- Inf) for FRA. + * Test 1: + * Let FRA be value #7 and FRB be value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 111 + * + * Test 2: + * Let FRA be value #8 and FRB be value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 111 + * + */ + + /* fg_flag <- 1 if FRB is an Infinity + * NOTE: FRB = Inf also sets fe_flag + * Let FRA be value #1 and FRB be value #7 + * e_a = 5; e_b = 1024 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is denormalized + * NOTE: e_b < -1022 ==> fe_flag <- 1 + * Let FRA be value #0 and FRB be value #13 + * e_a = -2; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is +zero + * NOTE: FRA = Inf also sets fe_flag + * Let FRA = val #5; FRB = val #5 + * ea_ = -1023; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is -zero + * NOTE: FRA = Inf also sets fe_flag + * Let FRA = val #5; FRB = val #6 + * ea_ = -1023; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* Special values */ + /* +0.0 : 0 0x000 0x0000000000000 */ + // #5 + s = 0; + _exp = 0x000; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -0.0 : 1 0x000 0x0000000000000 */ + // #6 + s = 1; + _exp = 0x000; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +infinity : 0 0x7FF 0x0000000000000 */ + // #7 + s = 0; + _exp = 0x7FF; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -infinity : 1 0x7FF 0x0000000000000 */ + // #8 + s = 1; + _exp = 0x7FF; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +QNaN : 0 0x7FF 0x7FFFFFFFFFFFF */ + // #9 + s = 0; + _exp = 0x7FF; + mant = 0x7FFFFFFFFFFFFULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -QNaN : 1 0x7FF 0x7FFFFFFFFFFFF */ + // #10 + s = 1; + _exp = 0x7FF; + mant = 0x7FFFFFFFFFFFFULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +SNaN : 0 0x7FF 0x8000000000000 */ + // #11 + s = 0; + _exp = 0x7FF; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -SNaN : 1 0x7FF 0x8000000000000 */ + // #12 + s = 1; + _exp = 0x7FF; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* denormalized value */ + // #13 + s = 1; + _exp = 0x000; + mant = 0x8340000078000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* Negative finite number */ + // #14 + s = 1; + _exp = 0x40d; + mant = 0x0650f5a07b353ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + nb_special_fargs = i; +} + + +struct test_table +{ + test_func_t test_category; + char * name; +}; + +struct p7_fp_test +{ + test_func_t test_func; + const char *name; + int single; // 1=single precision result; 0=double precision result +}; + +typedef enum { + VX_FP_CMP, + VX_FP_SMA, + VX_FP_SMS, + VX_FP_SNMA, + VX_FP_OTHER +} vx_fp_test_type; + +struct vx_fp_test +{ + test_func_t test_func; + const char *name; + fp_test_args_t * targs; + int num_tests; + vx_fp_test_type test_type; +}; + +struct xs_conv_test +{ + test_func_t test_func; + const char *name; + unsigned long long * results; + int num_tests; +}; + +typedef enum { + VSX_LOAD =1, + VSX_LOAD_SPLAT, + VSX_STORE +} vsx_ldst_type; + +struct ldst_test +{ + test_func_t test_func; + const char *name; + void * base_addr; + uint32_t offset; + int num_words_to_process; + vsx_ldst_type type; +}; + +typedef enum { + VSX_AND = 1, + VSX_XOR, + VSX_ANDC, + VSX_OR, + VSX_NOR +} vsx_log_op; + +struct vsx_logic_test +{ + test_func_t test_func; + const char *name; + vsx_log_op op; +}; + +struct vsx_move_test +{ + test_func_t test_func; + const char *name; + int xa_idx, xb_idx; + unsigned long long expected_result; +}; + +struct vsx_permute_test +{ + test_func_t test_func; + const char *name; + unsigned int xa[4]; + unsigned int xb[4]; + unsigned int expected_output[4]; +}; + +static vector unsigned int vec_out, vec_inA, vec_inB; + +static void test_lxsdx(void) +{ + __asm__ __volatile__ ("lxsdx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void +test_lxvd2x(void) +{ + __asm__ __volatile__ ("lxvd2x %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxvdsx(void) +{ + __asm__ __volatile__ ("lxvdsx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxvw4x(void) +{ + __asm__ __volatile__ ("lxvw4x %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_stxsdx(void) +{ + __asm__ __volatile__ ("stxsdx %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_stxvd2x(void) +{ + __asm__ __volatile__ ("stxvd2x %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_stxvw4x(void) +{ + __asm__ __volatile__ ("stxvw4x %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_xxlxor(void) +{ + __asm__ __volatile__ ("xxlxor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlor(void) +{ + __asm__ __volatile__ ("xxlor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlnor(void) +{ + __asm__ __volatile__ ("xxlnor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxland(void) +{ + __asm__ __volatile__ ("xxland %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlandc(void) +{ + __asm__ __volatile__ ("xxlandc %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxmrghw(void) +{ + __asm__ __volatile__ ("xxmrghw %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxmrglw(void) +{ + __asm__ __volatile__ ("xxmrglw %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_00(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x0" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_01(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x1" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_10(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_11(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x3" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_0(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 0" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_1(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 1" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_2(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_3(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 3" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_fcfids (void) +{ + __asm__ __volatile__ ("fcfids %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_fcfidus (void) +{ + __asm__ __volatile__ ("fcfidus %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_fcfidu (void) +{ + __asm__ __volatile__ ("fcfidu %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_xsabsdp (void) +{ + __asm__ __volatile__ ("xsabsdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscpsgndp (void) +{ + __asm__ __volatile__ ("xscpsgndp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsnabsdp (void) +{ + __asm__ __volatile__ ("xsnabsdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xsnegdp (void) +{ + __asm__ __volatile__ ("xsnegdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static int do_cmpudp; +static void test_xscmp (void) +{ + if (do_cmpudp) + __asm__ __volatile__ ("xscmpudp cr1, %x0, %x1" : : "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xscmpodp cr1, %x0, %x1" : : "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsadddp(void) +{ + __asm__ __volatile__ ("xsadddp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsdivdp(void) +{ + __asm__ __volatile__ ("xsdivdp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static int do_adp; +static void test_xsmadd(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsmaddadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmaddmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsmsub(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsmsubadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmsubmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsnmadd(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsnmaddadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsnmaddmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsmuldp(void) +{ + __asm__ __volatile__ ("xsmuldp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xssubdp(void) +{ + __asm__ __volatile__ ("xssubdp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xscvdpsxds (void) +{ + __asm__ __volatile__ ("xscvdpsxds %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscvsxddp (void) +{ + __asm__ __volatile__ ("xscvsxddp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscvuxddp (void) +{ + __asm__ __volatile__ ("xscvuxddp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static unsigned int vstg[] __attribute__ ((aligned (16))) = { 0, 0, 0,0, + 0, 0, 0, 0 }; + +#define NUM_VSTG_INTS (sizeof vstg/sizeof vstg[0]) +#define NUM_VSTG_VECS (NUM_VSTG_INTS/4) + +static unsigned int viargs[] __attribute__ ((aligned (16))) = { 0x01234567, + 0x89abcdef, + 0x00112233, + 0x44556677, + 0x8899aabb, + 0x91929394, + 0xa1a2a3a4, + 0xb1b2b3b4, + 0xc1c2c3c4, + 0xd1d2d3d4, + 0x7a6b5d3e +}; +#define NUM_VIARGS_INTS (sizeof viargs/sizeof viargs[0]) +#define NUM_VIARGS_VECS (NUM_VIARGS_INTS/4) + +static ldst_test_t ldst_tests[] = { { &test_lxsdx, "lxsdx", viargs, 0, 2, VSX_LOAD }, + { &test_lxsdx, "lxsdx", viargs, 4, 2, VSX_LOAD }, + { &test_lxvd2x, "lxvd2x", viargs, 0, 4, VSX_LOAD }, + { &test_lxvd2x, "lxvd2x", viargs, 4, 4, VSX_LOAD }, + { &test_lxvdsx, "lxvdsx", viargs, 0, 4, VSX_LOAD_SPLAT }, + { &test_lxvdsx, "lxvdsx", viargs, 4, 4, VSX_LOAD_SPLAT }, + { &test_lxvw4x, "lxvw4x", viargs, 0, 4, VSX_LOAD }, + { &test_lxvw4x, "lxvw4x", viargs, 4, 4, VSX_LOAD }, + { &test_stxsdx, "stxsdx", vstg, 0, 2, VSX_STORE }, + { &test_stxsdx, "stxsdx", vstg, 4, 2, VSX_STORE }, + { &test_stxvd2x, "stxvd2x", vstg, 0, 4, VSX_STORE }, + { &test_stxvd2x, "stxvd2x", vstg, 4, 4, VSX_STORE }, + { &test_stxvw4x, "stxvw4x", vstg, 0, 4, VSX_STORE }, + { &test_stxvw4x, "stxvw4x", vstg, 4, 4, VSX_STORE }, + { NULL, NULL, NULL, 0, 0, 0 } }; + +static logic_test_t logic_tests[] = { { &test_xxlxor, "xxlxor", VSX_XOR }, + { &test_xxlor, "xxlor", VSX_OR } , + { &test_xxlnor, "xxlnor", VSX_NOR }, + { &test_xxland, "xxland", VSX_AND }, + { &test_xxlandc, "xxlandc", VSX_ANDC }, + { NULL, NULL}}; + +static move_test_t move_tests[] = { { &test_xsabsdp, "xsabsdp", 0, 4, 0x0899aabb91929394ULL }, + { &test_xscpsgndp, "xscpsgndp", 4, 0, 0x8123456789abcdefULL }, + { &test_xsnabsdp, "xsnabsdp", 7, 3, 0xc45566778899aabbULL, }, + { &test_xsnegdp, "xsnegdp", 0, 7, 0x31b2b3b4c1c2c3c4ULL, }, + { NULL, NULL, 0, 0, 0 } + +}; + +static permute_test_t permute_tests[] = +{ + { &test_xxmrghw, "xxmrghw", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x55555555, 0x22222222, 0x66666666 } /* XT expected output */ + }, + { &test_xxmrghw, "xxmrghw", + { 0x00112233, 0x44556677, 0x8899aabb, 0xccddeeff }, /* XA input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XB input */ + { 0x00112233, 0x11111111, 0x44556677, 0x22222222 } /* XT expected output */ + }, + { &test_xxmrglw, "xxmrglw", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x77777777, 0x44444444, 0x88888888 } /* XT expected output */ + }, + { &test_xxmrglw, "xxmrglw", + { 0x00112233, 0x44556677, 0x8899aabb, 0xccddeeff}, /* XA input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444}, /* XB input */ + { 0x8899aabb, 0x33333333, 0xccddeeff, 0x44444444} /* XT expected output */ + }, + { &test_xxpermdi_00, "xxpermdi DM=00", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxpermdi_01, "xxpermdi DM=01", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x77777777, 0x88888888 } /* XT expected output */ + }, + { &test_xxpermdi_10, "xxpermdi DM=10", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxpermdi_11, "xxpermdi DM=11", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x77777777, 0x88888888 } /* XT expected output */ + }, + { &test_xxsldwi_0, "xxsldwi SHW=0", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 } /* XT expected output */ + }, + { &test_xxsldwi_1, "xxsldwi SHW=1", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x22222222, 0x33333333, 0x44444444, 0x55555555 } /* XT expected output */ + }, + { &test_xxsldwi_2, "xxsldwi SHW=2", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxsldwi_3, "xxsldwi SHW=3", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x44444444, 0x55555555, 0x66666666, 0x77777777 } /* XT expected output */ + }, + { NULL, NULL } +}; + +static fp_test_t fp_tests[] = { { &test_fcfids, "fcfids", 1 }, + { &test_fcfidus, "fcfidus", 1 }, + { &test_fcfidu, "fcfidu", 1 }, + { NULL, NULL, 0 }, + +}; + +static vx_fp_test_t vx_fp_tests[] = { + { &test_xscmp, "xscmp", xscmpX_tests, 64, VX_FP_CMP}, + { &test_xsadddp, "xsadddp", xsadddp_tests, 64, VX_FP_OTHER}, + { &test_xsdivdp, "xsdivdp", xsdivdp_tests, 64, VX_FP_OTHER}, + { &test_xsmadd, "xsmadd", xsmaddXdp_tests, 64, VX_FP_SMA}, + { &test_xsmsub, "xsmsub", xsmsubXdp_tests, 64, VX_FP_SMS}, + { &test_xsnmadd, "xsnmadd", xsnmaddXdp_tests, 64, VX_FP_SNMA}, + { & test_xsmuldp, "xsmuldp", xsmuldp_tests, 64, VX_FP_OTHER}, + { & test_xssubdp, "xssubdp", xssubdp_tests, 64, VX_FP_OTHER}, + { NULL, NULL, NULL, 0, 0 } +}; + +static xs_conv_test_t xs_conv_tests[] = { + { &test_xscvdpsxds, "xscvdpsxds", xscvdpsxds_results, 15}, + { &test_xscvsxddp, "xscvsxddp", xscvsxddp_results, 15}, + { &test_xscvuxddp, "xscvuxddp", xscvuxddp_results, 15}, + { NULL, NULL, NULL, 0} +}; + +#ifdef __powerpc64__ +static void test_ldbrx(void) +{ + int i, equality; + HWord_t reg_out; + unsigned char * byteIn, * byteOut; + r14 = (HWord_t)viargs; + // Just try the instruction an arbitrary number of times at different r15 offsets. + for (i = 0; i < 3; i++) { + int j, k; + reg_out = 0; + r15 = i * 4; + equality = 1; + __asm__ __volatile__ ("ldbrx %0, %1, %2" : "=r" (reg_out): "b" (r14),"r" (r15)); + byteIn = ((unsigned char *)(r14 + r15)); + byteOut = (unsigned char *)®_out; + + printf("ldbrx:"); + for (k = 0; k < 7; k++) { + printf( " %02x", (byteIn[k])); + } + printf(" (reverse) =>"); + for (j = 0; j < 8; j++) { + printf( " %02x", (byteOut[j])); + } + printf("\n"); + for (j = 0, k = 7; j < 8; j++, k--) { + equality &= (byteIn[k] == byteOut[j]); + } + if (!equality) { + printf("FAILED: load with byte reversal is incorrect\n"); + errors++; + } + } + printf( "\n" ); +} + +static void +test_popcntd(void) +{ + uint64_t res; + unsigned long long src = 0x9182736405504536ULL; + int i, answer = 0; + r14 = src; + __asm__ __volatile__ ("popcntd %0, %1" : "=r" (res): "r" (r14)); + for (i = 0; i < 64; i++) { + answer += (r14 & 1ULL); + r14 = r14 >> 1; + } + printf("popcntd: 0x%llx => %d\n", src, (int)res); + if (res!= answer) { + printf("Error: unexpected result from popcntd\n"); + errors++; + } + printf( "\n" ); +} +#endif + +static void +test_lfiwzx(void) +{ + unsigned int i; + unsigned int * src; + uint64_t reg_out; + r14 = (HWord_t)viargs; + // Just try the instruction an arbitrary number of times at different r15 offsets. + for (i = 0; i < 3; i++) { + reg_out = 0; + r15 = i * 4; + __asm__ __volatile__ ("lfiwzx %0, %1, %2" : "=d" (reg_out): "b" (r14),"r" (r15)); + src = ((unsigned int *)(r14 + r15)); + printf("lfiwzx: %u => %llu.00\n", *src, (unsigned long long)reg_out); + + if (reg_out > 0xFFFFFFFFULL || *src != (unsigned int)reg_out) { + printf("FAILED: integer load to FP register is incorrect\n"); + errors++; + } + } + printf( "\n" ); +} + +static void test_vx_fp_ops(void) +{ + + test_func_t func; + int k; + char * test_name = (char *)malloc(20); + k = 0; + + build_special_fargs_table(); + while ((func = vx_fp_tests[k].test_func)) { + int i, condreg, repeat = 0; + unsigned int flags; + unsigned long long * frap, * frbp, * dst; + vx_fp_test_t test_group = vx_fp_tests[k]; + vx_fp_test_type test_type = test_group.test_type; + + switch (test_type) { + case VX_FP_CMP: + strcpy(test_name, "xscmp"); + if (!repeat) { + repeat = 1; + strcat(test_name, "udp"); + do_cmpudp = 1; + } + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + if (test_type == VX_FP_SMA) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMS) + strcpy(test_name, "xsmsub"); + else + strcpy(test_name, "xsnmadd"); + if (!repeat) { + repeat = 1; + strcat(test_name, "adp"); + do_adp = 1; + } + break; + case VX_FP_OTHER: + strcpy(test_name, test_group.name); + break; + default: + printf("ERROR: Invalid VX FP test type %d\n", test_type); + exit(1); + } + +again: + for (i = 0; i < test_group.num_tests; i++) { + unsigned int * inA, * inB, * pv; + + fp_test_args_t aTest = test_group.targs[i]; + inA = (unsigned int *)&spec_fargs[aTest.fra_idx]; + inB = (unsigned int *)&spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + // Only need to copy one doubleword into each vector's element 0 + memcpy(&vec_inA, inA, 8); + memcpy(&vec_inB, inB, 8); + + switch (test_type) { + case VX_FP_CMP: + SET_FPSCR_ZERO; + SET_CR_XER_ZERO; + (*func)(); + GET_CR(flags); + condreg = (flags & 0x0f000000) >> 24; + printf("#%d: %s %016llx <=> %016llx ? %x (CRx)\n", i, test_name, *frap, *frbp, condreg); + // printf("\tFRA: %e; FRB: %e\n", spec_fargs[aTest.fra_idx], spec_fargs[aTest.frb_idx]); + if ( condreg != aTest.cr_flags) { + printf("Error: Expected CR flags 0x%x; actual flags: 0x%x\n", aTest.cr_flags, condreg); + errors++; + } + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + case VX_FP_OTHER: + { + int idx; + unsigned long long vsr_XT; + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + if (test_type != VX_FP_OTHER) { + /* Then we need a third src argument, which is stored in element 0 of + * VSX[XT] -- i.e., vec_out. For the xsmdp cases, VSX[XT] holds + * src3 and VSX[XB] holds src2; for the xsadp cases, VSX[XT] holds + * src2 and VSX[XB] holds src3. The fp_test_args_t that holds the test + * data (input args, result) contain only two inputs, so I arbitrarily + * use spec_fargs elements 4 and 14 (alternating) for the third source + * argument. We can use the same input data for a given pair of + * adp/mdp-type instructions by swapping the src2 and src3 arguments; thus + * the expected result should be the same. + */ + int extra_arg_idx; + if (i % 2) + extra_arg_idx = 4; + else + extra_arg_idx = 14; + + //memcpy(&vec_out, &spec_fargs[14], 8); + + if (repeat) { + /* We're on the first time through of one of the VX_FP_SMx + * test types, meaning we're testing a xsadp case, thus we + * have to swap inputs as described above: + * src2 <= VSX[XT] + * src3 <= VSX[XB] + */ + memcpy(&vec_out, inB, 8); // src2 + memcpy(&vec_inB, &spec_fargs[extra_arg_idx], 8); //src3 + frbp = (unsigned long long *)&spec_fargs[extra_arg_idx]; + } else { + // Don't need to init src2, as it's done before the switch() + memcpy(&vec_out, &spec_fargs[extra_arg_idx], 8); //src3 + } + memcpy(&vsr_XT, &vec_out, 8); + } + + (*func)(); + dst = (unsigned long long *) &vec_out; + if (test_type == VX_FP_OTHER) + printf("#%d: %s %016llx %016llx = %016llx\n", i, test_name, *frap, *frbp, *dst); + else + printf( "#%d: %s %016llx %016llx %016llx = %016llx\n", i, + test_name, vsr_XT, *frap, *frbp, *dst ); + + if ( *dst != aTest.dp_bin_result) { + printf("Error: Expected result %016llx; actual result %016llx\n", aTest.dp_bin_result, *dst); + errors++; + } + /* + { + // Debug code. Keep this block commented out except when debugging. + double result, expected; + memcpy(&result, dst, 8); + memcpy(&expected, &aTest.dp_bin_result, 8); + printf( "\tFRA + FRB: %e + %e: Expected = %e; Actual = %e\n", + spec_fargs[aTest.fra_idx], spec_fargs[aTest.frb_idx], + expected, result ); + } + */ + break; + } + } + + + } + printf( "\n" ); + + if (repeat) { + repeat = 0; + switch (test_type) { + case VX_FP_CMP: + strcpy(test_name, "xscmp"); + strcat(test_name, "odp"); + do_cmpudp = 0; + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + if (test_type == VX_FP_SMA) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMS) + strcpy(test_name, "xsmsub"); + else + strcpy(test_name, "xsnmadd"); + strcat(test_name, "mdp"); + do_adp = 0; + break; + case VX_FP_OTHER: + break; + } + goto again; + } + k++; + } + printf( "\n" ); + free(test_name); +} + +static void test_xs_conv_ops(void) +{ + + test_func_t func; + int k = 0; + + build_special_fargs_table(); + while ((func = xs_conv_tests[k].test_func)) { + int i; + unsigned long long * frbp, * dst; + xs_conv_test_t test_group = xs_conv_tests[k]; + for (i = 0; i < test_group.num_tests; i++) { + unsigned int * inB, * pv; + int idx; + unsigned long long exp_result = test_group.results[i]; + inB = (unsigned int *)&spec_fargs[i]; + frbp = (unsigned long long *)&spec_fargs[i]; + memcpy(&vec_inB, inB, 8); + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + (*func)(); + dst = (unsigned long long *) &vec_out; + printf("#%d: %s %016llx => %016llx\n", i, test_group.name, *frbp, *dst); + + if ( *dst != exp_result) { + printf("Error: Expected result %016llx; actual result %016llx\n", exp_result, *dst); + errors++; + } + } + k++; + printf("\n"); + } + printf( "\n" ); +} + +static void do_load_test(ldst_test_t loadTest) +{ + test_func_t func; + unsigned int *src, *dst; + int splat = loadTest.type == VSX_LOAD_SPLAT ? 1: 0; + int i, j, m, equality; + i = j = 0; + + func = loadTest.test_func; + for (i = 0, r14 = (HWord_t) loadTest.base_addr; i < NUM_VIARGS_VECS; i++) { + int again; + j = 0; + r14 += i * 16; + do { + unsigned int * pv = (unsigned int *)&vec_out; + int idx; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv+=idx) + *pv = 0; + + again = 0; + r15 = j; + + // execute test insn + (*func)(); + + src = (unsigned int*) (((unsigned char *)r14) + j); + dst = (unsigned int*) &vec_out; + + printf( "%s:", loadTest.name); + for (m = 0; m < loadTest.num_words_to_process; m++) { + printf( " %08x", src[splat ? m % 2 : m]); + } + printf( " =>"); + for (m = 0; m < loadTest.num_words_to_process; m++) { + printf( " %08x", dst[m]); + } + printf("\n"); + equality = 1; + for (m = 0; m < loadTest.num_words_to_process; m++) { + equality = equality && (src[splat ? m % 2 : m] == dst[m]); + } + + if (!equality) { + printf("FAILED: loaded vector is incorrect\n"); + errors++; + } + + if (j == 0 && loadTest.offset) { + again = 1; + j += loadTest.offset; + } + } + while (again); + } +} + +static void +do_store_test ( ldst_test_t storeTest ) +{ + test_func_t func; + unsigned int *src, *dst; + int i, j, m, equality; + i = j = 0; + + func = storeTest.test_func; + r14 = (HWord_t) storeTest.base_addr; + r15 = (HWord_t) storeTest.offset; + unsigned int * pv = (unsigned int *) storeTest.base_addr; + int idx; + // clear out storage destination + for (idx = 0; idx < 4; idx++, pv += idx) + *pv = 0; + + memcpy(&vec_inA, &viargs[0], sizeof(vector unsigned char)); + + // execute test insn + (*func)(); + src = &viargs[0]; + dst = (unsigned int*) (((unsigned char *) r14) + storeTest.offset); + + printf( "%s:", storeTest.name ); + for (m = 0; m < storeTest.num_words_to_process; m++) { + printf( " %08x", src[m] ); + } + printf( " =>" ); + for (m = 0; m < storeTest.num_words_to_process; m++) { + printf( " %08x", dst[m] ); + } + printf( "\n" ); + equality = 1; + for (m = 0; m < storeTest.num_words_to_process; m++) { + equality = equality && (src[m] == dst[m]); + } + + if (!equality) { + printf( "FAILED: vector store result is incorrect\n" ); + errors++; + } + +} + + +static void test_ldst(void) +{ + int k = 0; + + while (ldst_tests[k].test_func) { + if (ldst_tests[k].type == VSX_STORE) + do_store_test(ldst_tests[k]); + else + do_load_test(ldst_tests[k]); + k++; + printf("\n"); + } +} + +static void test_ftdiv(void) +{ + int i, num_tests, crx; + unsigned int flags; + unsigned long long * frap, * frbp; + build_special_fargs_table(); + + num_tests = sizeof ftdiv_tests/sizeof ftdiv_tests[0]; + + for (i = 0; i < num_tests; i++) { + ftdiv_test_args_t aTest = ftdiv_tests[i]; + f14 = spec_fargs[aTest.fra_idx]; + f15 = spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + SET_FPSCR_ZERO; + SET_CR_XER_ZERO; + __asm__ __volatile__ ("ftdiv cr1, %0, %1" : : "d" (f14), "d" (f15)); + GET_CR(flags); + crx = (flags & 0x0f000000) >> 24; + printf( "ftdiv: %016llx <=> %016llx ? %x (CRx)\n", *frap, *frbp, crx); +// printf("\tFRA: %e; FRB: %e\n", f14, f15); + if ( crx != aTest.cr_flags) { + printf("Error: Expected CR flags 0x%x; actual flags: 0x%x\n", aTest.cr_flags, crx); + errors++; + } + } + printf( "\n" ); +} + + +static void test_p7_fpops ( void ) +{ + int k = 0; + test_func_t func; + + build_fargs_table(); + while ((func = fp_tests[k].test_func)) { + float res; + double resd; + unsigned long long u0; + int i; + int res32 = strcmp(fp_tests[k].name, "fcfidu"); + + for (i = 0; i < nb_fargs; i++) { + u0 = *(unsigned long long *) (&fargs[i]); + f14 = fargs[i]; + (*func)(); + if (res32) { + res = f17; + printf( "%s %016llx => (raw sp) %08x)", + fp_tests[k].name, u0, *((unsigned int *)&res)); + } else { + resd = f17; + printf( "%s %016llx => (raw sp) %016llx)", + fp_tests[k].name, u0, *(unsigned long long *)(&resd)); + } + printf( "\n" ); + } + + k++; + printf( "\n" ); + } +} + +static void test_vsx_logic(void) +{ + logic_test_t aTest; + test_func_t func; + int equality, k; + k = 0; + + while ((func = logic_tests[k].test_func)) { + unsigned int * pv; + int startA, startB; + unsigned int * inA, * inB, * dst; + int idx, i; + startA = 0; + aTest = logic_tests[k]; + for (i = 0; i <= (NUM_VIARGS_INTS - (NUM_VIARGS_VECS * sizeof(int))); i++, startA++) { + startB = startA + 4; + pv = (unsigned int *)&vec_out; + inA = &viargs[startA]; + inB = &viargs[startB]; + memcpy(&vec_inA, inA, sizeof(vector unsigned char)); + memcpy(&vec_inB, inB, sizeof(vector unsigned char)); + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + // execute test insn + (*func)(); + dst = (unsigned int*) &vec_out; + + printf( "%s:", aTest.name); + printf( " %08x %08x %08x %08x %s", inA[0], inA[1], inA[2], inA[3], aTest.name); + printf( " %08x %08x %08x %08x", inB[0], inB[1], inB[2], inB[3]); + printf(" => %08x %08x %08x %08x\n", dst[0], dst[1], dst[2], dst[3]); + + equality = 1; + for (idx = 0; idx < 4; idx++) { + switch (aTest.op) { + case VSX_AND: + equality &= (dst[idx] == (inA[idx] & inB[idx])); + break; + case VSX_ANDC: + equality &= (dst[idx] == (inA[idx] & ~inB[idx])); + break; + case VSX_NOR: + equality &= (dst[idx] == ~(inA[idx] | inB[idx])); + break; + case VSX_XOR: + equality &= (dst[idx] == (inA[idx] ^ inB[idx])); + break; + case VSX_OR: + equality &= (dst[idx] == (inA[idx] | inB[idx])); + break; + default: + fprintf(stderr, "Error in test_vsx_logic(): unknown VSX logical op %d\n", aTest.op); + exit(1); + } + } + if (!equality) { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + } + k++; + } + printf( "\n" ); +} + +static void test_move_ops (void) +{ + move_test_t aTest; + test_func_t func; + int equality, k; + k = 0; + + while ((func = move_tests[k].test_func)) { + unsigned int * pv; + int startA, startB; + unsigned int * inA, * inB, * dst; + unsigned long long exp_out; + int idx; + aTest = move_tests[k]; + exp_out = aTest.expected_result; + startA = aTest.xa_idx; + startB = aTest.xb_idx; + pv = (unsigned int *)&vec_out; + inA = &viargs[startA]; + inB = &viargs[startB]; + memcpy(&vec_inA, inA, sizeof(vector unsigned char)); + memcpy(&vec_inB, inB, sizeof(vector unsigned char)); + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + // execute test insn + (*func)(); + dst = (unsigned int*) &vec_out; + + printf( "%s:", aTest.name); + printf( " %08x %08x %s", inA[0], inA[1], aTest.name); + printf( " %08x %08xx", inB[0], inB[1]); + printf(" => %08x %08x\n", dst[0], dst[1]); + + equality = 1; + pv = (unsigned int *)&exp_out; + for (idx = 0; idx < 2; idx++) { + equality &= (dst[idx] == pv[idx]); + } + if (!equality) { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + k++; + printf( "\n" ); + } +} + +static void test_permute_ops (void) +{ + permute_test_t *aTest; + unsigned int *dst = (unsigned int *) &vec_out; + + for (aTest = &(permute_tests[0]); aTest->test_func != NULL; aTest++) + { + /* Grab test input and clear output vector. */ + memcpy(&vec_inA, aTest->xa, sizeof(vec_inA)); + memcpy(&vec_inB, aTest->xb, sizeof(vec_inB)); + memset(dst, 0, sizeof(vec_out)); + + /* execute test insn */ + aTest->test_func(); + + printf( "%s:\n", aTest->name); + printf( " XA[%08x,%08x,%08x,%08x]\n", + aTest->xa[0], aTest->xa[1], aTest->xa[2], aTest->xa[3]); + printf( " XB[%08x,%08x,%08x,%08x]\n", + aTest->xb[0], aTest->xb[1], aTest->xb[2], aTest->xb[3]); + printf( " => XT[%08x,%08x,%08x,%08x]\n", + dst[0], dst[1], dst[2], dst[3]); + + if (memcmp (dst, &aTest->expected_output, sizeof(vec_out))) + { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + } + printf( "\n" ); +} + +static test_table_t all_tests[] = { { &test_ldst, + "Test VSX load/store instructions" }, + { &test_vsx_logic, + "Test VSX logic instructions" }, +#ifdef __powerpc64__ + { &test_ldbrx, + "Test ldbrx instruction" }, + { &test_popcntd, + "Test popcntd instruction" }, +#endif + { &test_lfiwzx, + "Test lfiwzx instruction" }, + { &test_p7_fpops, + "Test P7 floating point convert instructions"}, + { &test_ftdiv, + "Test ftdiv instruction" }, + { &test_move_ops, + "Test VSX move instructions"}, + { &test_permute_ops, + "Test VSX permute instructions"}, + { &test_vx_fp_ops, + "Test VSX floating point instructions"}, + { &test_xs_conv_ops, + "Test VSX scalar integer conversion instructions" }, + { NULL, NULL } +}; +#endif // HAS_VSX + +int main(int argc, char *argv[]) +{ +#ifdef HAS_VSX + + test_table_t aTest; + test_func_t func; + int i = 0; + + while ((func = all_tests[i].test_category)) { + aTest = all_tests[i]; + printf( "%s\n", aTest.name ); + (*func)(); + i++; + } + if (errors) + printf("Testcase FAILED with %d errors \n", errors); + else + printf("Testcase PASSED\n"); + +#endif // HAS _VSX + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stdout.exp new file mode 100644 index 000000000..80f856419 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.stdout.exp @@ -0,0 +1,1023 @@ +Test VSX load/store instructions +lxsdx: 01234567 89abcdef => 01234567 89abcdef +lxsdx: 8899aabb 91929394 => 8899aabb 91929394 + +lxsdx: 01234567 89abcdef => 01234567 89abcdef +lxsdx: 89abcdef 00112233 => 89abcdef 00112233 +lxsdx: 8899aabb 91929394 => 8899aabb 91929394 +lxsdx: 91929394 a1a2a3a4 => 91929394 a1a2a3a4 + +lxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvd2x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 + +lxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvd2x: 89abcdef 00112233 44556677 8899aabb => 89abcdef 00112233 44556677 8899aabb +lxvd2x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 +lxvd2x: 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 + +lxvdsx: 01234567 89abcdef 01234567 89abcdef => 01234567 89abcdef 01234567 89abcdef +lxvdsx: 8899aabb 91929394 8899aabb 91929394 => 8899aabb 91929394 8899aabb 91929394 + +lxvdsx: 01234567 89abcdef 01234567 89abcdef => 01234567 89abcdef 01234567 89abcdef +lxvdsx: 89abcdef 00112233 89abcdef 00112233 => 89abcdef 00112233 89abcdef 00112233 +lxvdsx: 8899aabb 91929394 8899aabb 91929394 => 8899aabb 91929394 8899aabb 91929394 +lxvdsx: 91929394 a1a2a3a4 91929394 a1a2a3a4 => 91929394 a1a2a3a4 91929394 a1a2a3a4 + +lxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvw4x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 + +lxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvw4x: 89abcdef 00112233 44556677 8899aabb => 89abcdef 00112233 44556677 8899aabb +lxvw4x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 +lxvw4x: 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 + +stxsdx: 01234567 89abcdef => 01234567 89abcdef + +stxsdx: 01234567 89abcdef => 01234567 89abcdef + +stxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +Test VSX logic instructions +xxlxor: 01234567 89abcdef 00112233 44556677 xxlxor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 89baefdc 18395e7b a1b38197 f5e7d5c3 +xxlxor: 89abcdef 00112233 44556677 8899aabb xxlxor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 18395e7b a1b38197 f5e7d5c3 495b697f +xxlxor: 00112233 44556677 8899aabb 91929394 xxlxor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => a1b38197 f5e7d5c3 495b697f 40404040 +xxlxor: 44556677 8899aabb 91929394 a1a2a3a4 xxlxor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => f5e7d5c3 495b697f 40404040 dbc9fe9a +xxlor: 01234567 89abcdef 00112233 44556677 xxlor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 89bbefff 99bbdfff a1b3a3b7 f5f7f7f7 +xxlor: 89abcdef 00112233 44556677 8899aabb xxlor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 99bbdfff a1b3a3b7 f5f7f7f7 c9dbebff +xxlor: 00112233 44556677 8899aabb 91929394 xxlor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => a1b3a3b7 f5f7f7f7 c9dbebff d1d2d3d4 +xxlor: 44556677 8899aabb 91929394 a1a2a3a4 xxlor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => f5f7f7f7 c9dbebff d1d2d3d4 fbebffbe +xxlnor: 01234567 89abcdef 00112233 44556677 xxlnor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 76441000 66442000 5e4c5c48 0a080808 +xxlnor: 89abcdef 00112233 44556677 8899aabb xxlnor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 66442000 5e4c5c48 0a080808 36241400 +xxlnor: 00112233 44556677 8899aabb 91929394 xxlnor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 5e4c5c48 0a080808 36241400 2e2d2c2b +xxlnor: 44556677 8899aabb 91929394 a1a2a3a4 xxlnor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 0a080808 36241400 2e2d2c2b 04140041 +xxland: 01234567 89abcdef 00112233 44556677 xxland 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 00010023 81828184 00002220 00102234 +xxland: 89abcdef 00112233 44556677 8899aabb xxland 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 81828184 00002220 00102234 80808280 +xxland: 00112233 44556677 8899aabb 91929394 xxland a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 00002220 00102234 80808280 91929394 +xxland: 44556677 8899aabb 91929394 a1a2a3a4 xxland b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 00102234 80808280 91929394 20220124 +xxlandc: 01234567 89abcdef 00112233 44556677 xxlandc 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 01224544 08294c6b 00110013 44454443 +xxlandc: 89abcdef 00112233 44556677 8899aabb xxlandc 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 08294c6b 00110013 44454443 0819283b +xxlandc: 00112233 44556677 8899aabb 91929394 xxlandc a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 00110013 44454443 0819283b 00000000 +xxlandc: 44556677 8899aabb 91929394 a1a2a3a4 xxlandc b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 44454443 0819283b 00000000 8180a280 + +Test lfiwzx instruction +lfiwzx: 19088743 => 19088743.00 +lfiwzx: 2309737967 => 2309737967.00 +lfiwzx: 1122867 => 1122867.00 + +Test P7 floating point convert instructions +fcfids 0010000000000001 => (raw sp) 59800000) +fcfids 00100094e0000359 => (raw sp) 598004a7) +fcfids 3fe0000000000001 => (raw sp) 5e7f8000) +fcfids 3fe00094e0000359 => (raw sp) 5e7f8002) +fcfids 8010000000000001 => (raw sp) deffe000) +fcfids 80100094e0000359 => (raw sp) deffdfff) +fcfids bfe0000000000001 => (raw sp) de804000) +fcfids bfe00094e0000359 => (raw sp) de803fff) +fcfids 0020000000000b01 => (raw sp) 5a000000) +fcfids 00000000203f0b3d => (raw sp) 4e00fc2d) +fcfids 00000000005a203d => (raw sp) 4ab4407a) +fcfids 8020000000000b01 => (raw sp) deffc000) +fcfids 80000000203f0b3d => (raw sp) df000000) + +fcfidus 0010000000000001 => (raw sp) 59800000) +fcfidus 00100094e0000359 => (raw sp) 598004a7) +fcfidus 3fe0000000000001 => (raw sp) 5e7f8000) +fcfidus 3fe00094e0000359 => (raw sp) 5e7f8002) +fcfidus 8010000000000001 => (raw sp) 5f001000) +fcfidus 80100094e0000359 => (raw sp) 5f001001) +fcfidus bfe0000000000001 => (raw sp) 5f3fe000) +fcfidus bfe00094e0000359 => (raw sp) 5f3fe001) +fcfidus 0020000000000b01 => (raw sp) 5a000000) +fcfidus 00000000203f0b3d => (raw sp) 4e00fc2d) +fcfidus 00000000005a203d => (raw sp) 4ab4407a) +fcfidus 8020000000000b01 => (raw sp) 5f002000) +fcfidus 80000000203f0b3d => (raw sp) 5f000000) + +fcfidu 0010000000000001 => (raw sp) 4330000000000001) +fcfidu 00100094e0000359 => (raw sp) 43300094e0000359) +fcfidu 3fe0000000000001 => (raw sp) 43cff00000000000) +fcfidu 3fe00094e0000359 => (raw sp) 43cff0004a700002) +fcfidu 8010000000000001 => (raw sp) 43e0020000000000) +fcfidu 80100094e0000359 => (raw sp) 43e00200129c0000) +fcfidu bfe0000000000001 => (raw sp) 43e7fc0000000000) +fcfidu bfe00094e0000359 => (raw sp) 43e7fc00129c0000) +fcfidu 0020000000000b01 => (raw sp) 4340000000000580) +fcfidu 00000000203f0b3d => (raw sp) 41c01f859e800000) +fcfidu 00000000005a203d => (raw sp) 4156880f40000000) +fcfidu 8020000000000b01 => (raw sp) 43e0040000000001) +fcfidu 80000000203f0b3d => (raw sp) 43e00000000407e1) + +Test ftdiv instruction +ftdiv: 3fd8000000000000 <=> 404f000000000000 ? 8 (CRx) +ftdiv: 7ff7ffffffffffff <=> 404f000000000000 ? a (CRx) +ftdiv: 404f000000000000 <=> fff8000000000000 ? a (CRx) +ftdiv: 3fd8000000000000 <=> 0018000000b77501 ? a (CRx) +ftdiv: 404f000000000000 <=> 7fe800000000051b ? a (CRx) +ftdiv: 7fe800000000051b <=> 3fd8000000000000 ? a (CRx) +ftdiv: 3fd8000000000000 <=> 7fe800000000051b ? a (CRx) +ftdiv: 0123214569900000 <=> 3fd8000000000000 ? a (CRx) +ftdiv: 7ff0000000000000 <=> 404f000000000000 ? e (CRx) +ftdiv: fff0000000000000 <=> 404f000000000000 ? e (CRx) +ftdiv: 404f000000000000 <=> 7ff0000000000000 ? e (CRx) +ftdiv: 3fd8000000000000 <=> 8008340000078000 ? e (CRx) +ftdiv: 0000000000000000 <=> 0000000000000000 ? e (CRx) +ftdiv: 0000000000000000 <=> 8000000000000000 ? e (CRx) + +Test VSX move instructions +xsabsdp: 01234567 89abcdef xsabsdp 8899aabb 91929394x => 0899aabb 91929394 + +xscpsgndp: 8899aabb 91929394 xscpsgndp 01234567 89abcdefx => 81234567 89abcdef + +xsnabsdp: b1b2b3b4 c1c2c3c4 xsnabsdp 44556677 8899aabbx => c4556677 8899aabb + +xsnegdp: 01234567 89abcdef xsnegdp b1b2b3b4 c1c2c3c4x => 31b2b3b4 c1c2c3c4 + +Test VSX permute instructions +xxmrghw: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,55555555,22222222,66666666] +xxmrghw: + XA[00112233,44556677,8899aabb,ccddeeff] + XB[11111111,22222222,33333333,44444444] + => XT[00112233,11111111,44556677,22222222] +xxmrglw: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,77777777,44444444,88888888] +xxmrglw: + XA[00112233,44556677,8899aabb,ccddeeff] + XB[11111111,22222222,33333333,44444444] + => XT[8899aabb,33333333,ccddeeff,44444444] +xxpermdi DM=00: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,55555555,66666666] +xxpermdi DM=01: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,77777777,88888888] +xxpermdi DM=10: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,55555555,66666666] +xxpermdi DM=11: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,77777777,88888888] +xxsldwi SHW=0: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,33333333,44444444] +xxsldwi SHW=1: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[22222222,33333333,44444444,55555555] +xxsldwi SHW=2: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,55555555,66666666] +xxsldwi SHW=3: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[44444444,55555555,66666666,77777777] + +Test VSX floating point instructions +#0: xscmpudp fff0000000000000 <=> fff0000000000000 ? 2 (CRx) +#1: xscmpudp fff0000000000000 <=> c0d0650f5a07b353 ? 8 (CRx) +#2: xscmpudp fff0000000000000 <=> 8000000000000000 ? 8 (CRx) +#3: xscmpudp fff0000000000000 <=> 0000000000000000 ? 8 (CRx) +#4: xscmpudp fff0000000000000 <=> 0123214569900000 ? 8 (CRx) +#5: xscmpudp fff0000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#6: xscmpudp fff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#7: xscmpudp fff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#8: xscmpudp c0d0650f5a07b353 <=> fff0000000000000 ? 4 (CRx) +#9: xscmpudp c0d0650f5a07b353 <=> c0d0650f5a07b353 ? 2 (CRx) +#10: xscmpudp c0d0650f5a07b353 <=> 8000000000000000 ? 8 (CRx) +#11: xscmpudp c0d0650f5a07b353 <=> 0000000000000000 ? 8 (CRx) +#12: xscmpudp c0d0650f5a07b353 <=> 0123214569900000 ? 8 (CRx) +#13: xscmpudp c0d0650f5a07b353 <=> 7ff0000000000000 ? 8 (CRx) +#14: xscmpudp c0d0650f5a07b353 <=> 7ff7ffffffffffff ? 1 (CRx) +#15: xscmpudp c0d0650f5a07b353 <=> 7ff8000000000000 ? 1 (CRx) +#16: xscmpudp 8000000000000000 <=> fff0000000000000 ? 4 (CRx) +#17: xscmpudp 8000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#18: xscmpudp 8000000000000000 <=> 8000000000000000 ? 2 (CRx) +#19: xscmpudp 8000000000000000 <=> 0000000000000000 ? 2 (CRx) +#20: xscmpudp 8000000000000000 <=> 0123214569900000 ? 8 (CRx) +#21: xscmpudp 8000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#22: xscmpudp 8000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#23: xscmpudp 8000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#24: xscmpudp 0000000000000000 <=> fff0000000000000 ? 4 (CRx) +#25: xscmpudp 0000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#26: xscmpudp 0000000000000000 <=> 8000000000000000 ? 2 (CRx) +#27: xscmpudp 0000000000000000 <=> 0000000000000000 ? 2 (CRx) +#28: xscmpudp 0000000000000000 <=> 0123214569900000 ? 8 (CRx) +#29: xscmpudp 0000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#30: xscmpudp 0000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#31: xscmpudp 0000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#32: xscmpudp 0123214569900000 <=> fff0000000000000 ? 4 (CRx) +#33: xscmpudp 0123214569900000 <=> c0d0650f5a07b353 ? 4 (CRx) +#34: xscmpudp 0123214569900000 <=> 8000000000000000 ? 4 (CRx) +#35: xscmpudp 0123214569900000 <=> 0000000000000000 ? 4 (CRx) +#36: xscmpudp 0123214569900000 <=> 404f000000000000 ? 8 (CRx) +#37: xscmpudp 0123214569900000 <=> 7ff0000000000000 ? 8 (CRx) +#38: xscmpudp 0123214569900000 <=> 7ff7ffffffffffff ? 1 (CRx) +#39: xscmpudp 0123214569900000 <=> 7ff8000000000000 ? 1 (CRx) +#40: xscmpudp 7ff0000000000000 <=> fff0000000000000 ? 4 (CRx) +#41: xscmpudp 7ff0000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#42: xscmpudp 7ff0000000000000 <=> 8000000000000000 ? 4 (CRx) +#43: xscmpudp 7ff0000000000000 <=> 0000000000000000 ? 4 (CRx) +#44: xscmpudp 7ff0000000000000 <=> 0123214569900000 ? 4 (CRx) +#45: xscmpudp 7ff0000000000000 <=> 7ff0000000000000 ? 2 (CRx) +#46: xscmpudp 7ff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#47: xscmpudp 7ff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#48: xscmpudp fff7ffffffffffff <=> fff0000000000000 ? 1 (CRx) +#49: xscmpudp fff7ffffffffffff <=> c0d0650f5a07b353 ? 1 (CRx) +#50: xscmpudp fff7ffffffffffff <=> 8000000000000000 ? 1 (CRx) +#51: xscmpudp fff7ffffffffffff <=> 0000000000000000 ? 1 (CRx) +#52: xscmpudp fff7ffffffffffff <=> 0123214569900000 ? 1 (CRx) +#53: xscmpudp fff7ffffffffffff <=> 7ff0000000000000 ? 1 (CRx) +#54: xscmpudp fff7ffffffffffff <=> 7ff7ffffffffffff ? 1 (CRx) +#55: xscmpudp fff7ffffffffffff <=> 7ff8000000000000 ? 1 (CRx) +#56: xscmpudp fff8000000000000 <=> fff0000000000000 ? 1 (CRx) +#57: xscmpudp fff8000000000000 <=> c0d0650f5a07b353 ? 1 (CRx) +#58: xscmpudp fff8000000000000 <=> 8000000000000000 ? 1 (CRx) +#59: xscmpudp fff8000000000000 <=> 0000000000000000 ? 1 (CRx) +#60: xscmpudp fff8000000000000 <=> 0123214569900000 ? 1 (CRx) +#61: xscmpudp fff8000000000000 <=> 7ff0000000000000 ? 1 (CRx) +#62: xscmpudp fff8000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#63: xscmpudp fff8000000000000 <=> 7ff8000000000000 ? 1 (CRx) + +#0: xscmpodp fff0000000000000 <=> fff0000000000000 ? 2 (CRx) +#1: xscmpodp fff0000000000000 <=> c0d0650f5a07b353 ? 8 (CRx) +#2: xscmpodp fff0000000000000 <=> 8000000000000000 ? 8 (CRx) +#3: xscmpodp fff0000000000000 <=> 0000000000000000 ? 8 (CRx) +#4: xscmpodp fff0000000000000 <=> 0123214569900000 ? 8 (CRx) +#5: xscmpodp fff0000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#6: xscmpodp fff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#7: xscmpodp fff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#8: xscmpodp c0d0650f5a07b353 <=> fff0000000000000 ? 4 (CRx) +#9: xscmpodp c0d0650f5a07b353 <=> c0d0650f5a07b353 ? 2 (CRx) +#10: xscmpodp c0d0650f5a07b353 <=> 8000000000000000 ? 8 (CRx) +#11: xscmpodp c0d0650f5a07b353 <=> 0000000000000000 ? 8 (CRx) +#12: xscmpodp c0d0650f5a07b353 <=> 0123214569900000 ? 8 (CRx) +#13: xscmpodp c0d0650f5a07b353 <=> 7ff0000000000000 ? 8 (CRx) +#14: xscmpodp c0d0650f5a07b353 <=> 7ff7ffffffffffff ? 1 (CRx) +#15: xscmpodp c0d0650f5a07b353 <=> 7ff8000000000000 ? 1 (CRx) +#16: xscmpodp 8000000000000000 <=> fff0000000000000 ? 4 (CRx) +#17: xscmpodp 8000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#18: xscmpodp 8000000000000000 <=> 8000000000000000 ? 2 (CRx) +#19: xscmpodp 8000000000000000 <=> 0000000000000000 ? 2 (CRx) +#20: xscmpodp 8000000000000000 <=> 0123214569900000 ? 8 (CRx) +#21: xscmpodp 8000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#22: xscmpodp 8000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#23: xscmpodp 8000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#24: xscmpodp 0000000000000000 <=> fff0000000000000 ? 4 (CRx) +#25: xscmpodp 0000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#26: xscmpodp 0000000000000000 <=> 8000000000000000 ? 2 (CRx) +#27: xscmpodp 0000000000000000 <=> 0000000000000000 ? 2 (CRx) +#28: xscmpodp 0000000000000000 <=> 0123214569900000 ? 8 (CRx) +#29: xscmpodp 0000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#30: xscmpodp 0000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#31: xscmpodp 0000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#32: xscmpodp 0123214569900000 <=> fff0000000000000 ? 4 (CRx) +#33: xscmpodp 0123214569900000 <=> c0d0650f5a07b353 ? 4 (CRx) +#34: xscmpodp 0123214569900000 <=> 8000000000000000 ? 4 (CRx) +#35: xscmpodp 0123214569900000 <=> 0000000000000000 ? 4 (CRx) +#36: xscmpodp 0123214569900000 <=> 404f000000000000 ? 8 (CRx) +#37: xscmpodp 0123214569900000 <=> 7ff0000000000000 ? 8 (CRx) +#38: xscmpodp 0123214569900000 <=> 7ff7ffffffffffff ? 1 (CRx) +#39: xscmpodp 0123214569900000 <=> 7ff8000000000000 ? 1 (CRx) +#40: xscmpodp 7ff0000000000000 <=> fff0000000000000 ? 4 (CRx) +#41: xscmpodp 7ff0000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#42: xscmpodp 7ff0000000000000 <=> 8000000000000000 ? 4 (CRx) +#43: xscmpodp 7ff0000000000000 <=> 0000000000000000 ? 4 (CRx) +#44: xscmpodp 7ff0000000000000 <=> 0123214569900000 ? 4 (CRx) +#45: xscmpodp 7ff0000000000000 <=> 7ff0000000000000 ? 2 (CRx) +#46: xscmpodp 7ff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#47: xscmpodp 7ff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#48: xscmpodp fff7ffffffffffff <=> fff0000000000000 ? 1 (CRx) +#49: xscmpodp fff7ffffffffffff <=> c0d0650f5a07b353 ? 1 (CRx) +#50: xscmpodp fff7ffffffffffff <=> 8000000000000000 ? 1 (CRx) +#51: xscmpodp fff7ffffffffffff <=> 0000000000000000 ? 1 (CRx) +#52: xscmpodp fff7ffffffffffff <=> 0123214569900000 ? 1 (CRx) +#53: xscmpodp fff7ffffffffffff <=> 7ff0000000000000 ? 1 (CRx) +#54: xscmpodp fff7ffffffffffff <=> 7ff7ffffffffffff ? 1 (CRx) +#55: xscmpodp fff7ffffffffffff <=> 7ff8000000000000 ? 1 (CRx) +#56: xscmpodp fff8000000000000 <=> fff0000000000000 ? 1 (CRx) +#57: xscmpodp fff8000000000000 <=> c0d0650f5a07b353 ? 1 (CRx) +#58: xscmpodp fff8000000000000 <=> 8000000000000000 ? 1 (CRx) +#59: xscmpodp fff8000000000000 <=> 0000000000000000 ? 1 (CRx) +#60: xscmpodp fff8000000000000 <=> 0123214569900000 ? 1 (CRx) +#61: xscmpodp fff8000000000000 <=> 7ff0000000000000 ? 1 (CRx) +#62: xscmpodp fff8000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#63: xscmpodp fff8000000000000 <=> 7ff8000000000000 ? 1 (CRx) + +#0: xsadddp fff0000000000000 fff0000000000000 = fff0000000000000 +#1: xsadddp fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsadddp fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsadddp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsadddp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsadddp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsadddp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsadddp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsadddp c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsadddp c0d0650f5a07b353 c0d0650f5a07b353 = c0e0650f5a07b353 +#10: xsadddp c0d0650f5a07b353 8000000000000000 = c0d0650f5a07b353 +#11: xsadddp c0d0650f5a07b353 0000000000000000 = c0d0650f5a07b353 +#12: xsadddp c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#13: xsadddp c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsadddp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsadddp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsadddp 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsadddp 8000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#18: xsadddp 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsadddp 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsadddp 8000000000000000 0123214569900000 = 0123214569900000 +#21: xsadddp 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsadddp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsadddp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsadddp 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsadddp 0000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#26: xsadddp 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsadddp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsadddp 0000000000000000 0123214569900000 = 0123214569900000 +#29: xsadddp 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsadddp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsadddp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsadddp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsadddp 0123214569900000 c0d0650f5a07b353 = c0d0650f5a07b353 +#34: xsadddp 0123214569900000 8000000000000000 = 0123214569900000 +#35: xsadddp 0123214569900000 0000000000000000 = 0123214569900000 +#36: xsadddp 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsadddp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsadddp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsadddp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsadddp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsadddp 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsadddp 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsadddp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsadddp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsadddp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsadddp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsadddp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsadddp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsadddp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsadddp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsadddp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsadddp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsadddp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsadddp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsadddp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsadddp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsadddp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsadddp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsadddp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsadddp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsadddp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsadddp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsadddp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsdivdp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsdivdp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsdivdp fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsdivdp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsdivdp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsdivdp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsdivdp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsdivdp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsdivdp c0d0650f5a07b353 fff0000000000000 = 0000000000000000 +#9: xsdivdp c0d0650f5a07b353 c0d0650f5a07b353 = 3ff0000000000000 +#10: xsdivdp c0d0650f5a07b353 8000000000000000 = 7ff0000000000000 +#11: xsdivdp c0d0650f5a07b353 0000000000000000 = fff0000000000000 +#12: xsdivdp c0d0650f5a07b353 0123214569900000 = ff9b6cb57ca13c00 +#13: xsdivdp c0d0650f5a07b353 7ff0000000000000 = 8000000000000000 +#14: xsdivdp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsdivdp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsdivdp 8000000000000000 fff0000000000000 = 0000000000000000 +#17: xsdivdp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsdivdp 8000000000000000 8000000000000000 = 7ff8000000000000 +#19: xsdivdp 8000000000000000 0000000000000000 = 7ff8000000000000 +#20: xsdivdp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsdivdp 8000000000000000 7ff0000000000000 = 8000000000000000 +#22: xsdivdp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsdivdp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsdivdp 0000000000000000 fff0000000000000 = 8000000000000000 +#25: xsdivdp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsdivdp 0000000000000000 8000000000000000 = 7ff8000000000000 +#27: xsdivdp 0000000000000000 0000000000000000 = 7ff8000000000000 +#28: xsdivdp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsdivdp 0000000000000000 7ff0000000000000 = 0000000000000000 +#30: xsdivdp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsdivdp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsdivdp 0123214569900000 fff0000000000000 = 8000000000000000 +#33: xsdivdp 0123214569900000 c0d0650f5a07b353 = 8042ab59d8b6ec87 +#34: xsdivdp 0123214569900000 8000000000000000 = fff0000000000000 +#35: xsdivdp 0123214569900000 0000000000000000 = 7ff0000000000000 +#36: xsdivdp 0123214569900000 404f000000000000 = 00c3bf3f64b5ad6b +#37: xsdivdp 0123214569900000 7ff0000000000000 = 0000000000000000 +#38: xsdivdp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsdivdp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsdivdp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsdivdp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsdivdp 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsdivdp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsdivdp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsdivdp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsdivdp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsdivdp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsdivdp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsdivdp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsdivdp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsdivdp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsdivdp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsdivdp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsdivdp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsdivdp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsdivdp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsdivdp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsdivdp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsdivdp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsdivdp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsdivdp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsdivdp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsdivdp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmaddadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsmaddadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmaddadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmaddadp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmaddadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmaddadp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsmaddadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsmaddadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmaddadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsmaddadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#10: xsmaddadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#11: xsmaddadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#12: xsmaddadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#13: xsmaddadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsmaddadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsmaddadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmaddadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsmaddadp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f5a07b353 +#18: xsmaddadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmaddadp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsmaddadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0123214569900000 +#21: xsmaddadp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsmaddadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsmaddadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmaddadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsmaddadp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f5a07b353 +#26: xsmaddadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsmaddadp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmaddadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0123214569900000 +#29: xsmaddadp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsmaddadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsmaddadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmaddadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsmaddadp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f5a07b353 +#34: xsmaddadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#35: xsmaddadp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmaddadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsmaddadp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsmaddadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsmaddadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmaddadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#41: xsmaddadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmaddadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmaddadp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmaddadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmaddadp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#46: xsmaddadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsmaddadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmaddadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsmaddadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsmaddadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsmaddadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsmaddadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsmaddadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsmaddadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsmaddadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsmaddadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmaddadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmaddadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmaddadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmaddadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmaddadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmaddadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmaddadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmaddmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsmaddmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmaddmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmaddmdp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmaddmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmaddmdp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsmaddmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmaddmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsmaddmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f5a07b353 +#10: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d05eec2a7 +#11: xsmaddmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 82039a19ca8fcb5f +#12: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d05eec2a7 +#13: xsmaddmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmaddmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmaddmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsmaddmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#18: xsmaddmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmaddmdp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsmaddmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0123214569900000 +#21: xsmaddmdp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsmaddmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmaddmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmaddmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsmaddmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#26: xsmaddmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmaddmdp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmaddmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0123214569900000 +#29: xsmaddmdp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsmaddmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmaddmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmaddmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmaddmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f5a07b353 +#34: xsmaddmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 82039a19ca8fcb5f +#35: xsmaddmdp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmaddmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsmaddmdp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmaddmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmaddmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmaddmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmaddmdp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmaddmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmaddmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmaddmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmaddmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmaddmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmaddmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmaddmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmaddmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmaddmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmaddmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmaddmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmaddmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmaddmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmaddmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmsubadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#1: xsmsubadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmsubadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmsubadp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmsubadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmsubadp 7ff0000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#6: xsmsubadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsmsubadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmsubadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsmsubadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f5a07b353 +#10: xsmsubadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#11: xsmsubadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#12: xsmsubadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#13: xsmsubadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsmsubadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsmsubadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmsubadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsmsubadp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f5a07b353 +#18: xsmsubadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmsubadp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsmsubadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8123214569900000 +#21: xsmsubadp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsmsubadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsmsubadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmsubadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsmsubadp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f5a07b353 +#26: xsmsubadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsmsubadp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmsubadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8123214569900000 +#29: xsmsubadp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsmsubadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsmsubadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmsubadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsmsubadp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f5a07b353 +#34: xsmsubadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#35: xsmsubadp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmsubadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsmsubadp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsmsubadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsmsubadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmsubadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsmsubadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmsubadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmsubadp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmsubadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmsubadp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsmsubadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsmsubadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmsubadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsmsubadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsmsubadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsmsubadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsmsubadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsmsubadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsmsubadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsmsubadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsmsubadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmsubadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmsubadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmsubadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmsubadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmsubadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmsubadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmsubadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmsubmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmsubmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmsubmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmsubmdp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmsubmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmsubmdp 0123214569900000 fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmsubmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmsubmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmsubmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f5a07b353 +#10: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d05eec2a7 +#11: xsmsubmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 82039a19ca8fcb5f +#12: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d05eec2a7 +#13: xsmsubmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmsubmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmsubmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsmsubmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xsmsubmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmsubmdp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmsubmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8123214569900000 +#21: xsmsubmdp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsmsubmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmsubmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmsubmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsmsubmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xsmsubmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsmsubmdp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmsubmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8123214569900000 +#29: xsmsubmdp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsmsubmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmsubmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmsubmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsmsubmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xsmsubmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 82039a19ca8fcb5f +#35: xsmsubmdp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmsubmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsmsubmdp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsmsubmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmsubmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsmsubmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmsubmdp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmsubmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmsubmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmsubmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmsubmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmsubmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmsubmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmsubmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmsubmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmsubmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmsubmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmsubmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmsubmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmsubmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmsubmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmaddadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsnmaddadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmaddadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmaddadp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmaddadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmaddadp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsnmaddadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsnmaddadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmaddadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsnmaddadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f5a07b353 +#10: xsnmaddadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d05eec2a7 +#11: xsnmaddadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 02039a19ca8fcb5f +#12: xsnmaddadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d05eec2a7 +#13: xsnmaddadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsnmaddadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsnmaddadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmaddadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsnmaddadp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f5a07b353 +#18: xsnmaddadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmaddadp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsnmaddadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8123214569900000 +#21: xsnmaddadp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsnmaddadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsnmaddadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmaddadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsnmaddadp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f5a07b353 +#26: xsnmaddadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsnmaddadp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmaddadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8123214569900000 +#29: xsnmaddadp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsnmaddadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsnmaddadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmaddadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsnmaddadp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f5a07b353 +#34: xsnmaddadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 02039a19ca8fcb5f +#35: xsnmaddadp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmaddadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsnmaddadp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsnmaddadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsnmaddadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmaddadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#41: xsnmaddadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmaddadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmaddadp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmaddadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmaddadp 7ff0000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#46: xsnmaddadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsnmaddadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmaddadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsnmaddadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsnmaddadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsnmaddadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsnmaddadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsnmaddadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsnmaddadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsnmaddadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsnmaddadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmaddadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmaddadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmaddadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmaddadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmaddadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmaddadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmaddadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsnmaddmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmaddmdp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmaddmdp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsnmaddmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f5a07b353 +#10: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d05eec2a7 +#11: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 02039a19ca8fcb5f +#12: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d05eec2a7 +#13: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmaddmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsnmaddmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xsnmaddmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmaddmdp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsnmaddmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8123214569900000 +#21: xsnmaddmdp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsnmaddmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsnmaddmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmaddmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsnmaddmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xsnmaddmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsnmaddmdp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmaddmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8123214569900000 +#29: xsnmaddmdp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsnmaddmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsnmaddmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmaddmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsnmaddmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xsnmaddmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 02039a19ca8fcb5f +#35: xsnmaddmdp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmaddmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsnmaddmdp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsnmaddmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsnmaddmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xsnmaddmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmaddmdp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmaddmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = fff0000000000000 +#46: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsnmaddmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsnmaddmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsnmaddmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsnmaddmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsnmaddmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmaddmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmaddmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmaddmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmaddmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmuldp fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmuldp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsmuldp fff0000000000000 8000000000000000 = 7ff8000000000000 +#3: xsmuldp fff0000000000000 0000000000000000 = 7ff8000000000000 +#4: xsmuldp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsmuldp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmuldp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmuldp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmuldp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmuldp c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#10: xsmuldp c0d0650f5a07b353 8000000000000000 = 0000000000000000 +#11: xsmuldp c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmuldp c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#13: xsmuldp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmuldp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmuldp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmuldp 8000000000000000 fff0000000000000 = 7ff8000000000000 +#17: xsmuldp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsmuldp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmuldp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmuldp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmuldp 8000000000000000 7ff0000000000000 = 7ff8000000000000 +#22: xsmuldp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmuldp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmuldp 0000000000000000 fff0000000000000 = 7ff8000000000000 +#25: xsmuldp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsmuldp 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmuldp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmuldp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmuldp 0000000000000000 7ff0000000000000 = 7ff8000000000000 +#30: xsmuldp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmuldp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmuldp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmuldp 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#34: xsmuldp 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmuldp 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmuldp 0123214569900000 404f000000000000 = 0182883b3e438000 +#37: xsmuldp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmuldp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmuldp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmuldp 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmuldp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsmuldp 7ff0000000000000 8000000000000000 = 7ff8000000000000 +#43: xsmuldp 7ff0000000000000 0000000000000000 = 7ff8000000000000 +#44: xsmuldp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsmuldp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmuldp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmuldp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmuldp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmuldp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmuldp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmuldp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmuldp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmuldp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmuldp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmuldp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmuldp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmuldp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmuldp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmuldp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmuldp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmuldp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmuldp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmuldp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xssubdp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xssubdp fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xssubdp fff0000000000000 8000000000000000 = fff0000000000000 +#3: xssubdp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xssubdp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xssubdp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xssubdp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xssubdp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xssubdp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xssubdp c0d0650f5a07b353 c0d0650f5a07b353 = 0000000000000000 +#10: xssubdp c0d0650f5a07b353 8000000000000000 = c0d0650f5a07b353 +#11: xssubdp c0d0650f5a07b353 0000000000000000 = c0d0650f5a07b353 +#12: xssubdp c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#13: xssubdp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xssubdp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xssubdp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xssubdp 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xssubdp 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xssubdp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xssubdp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xssubdp 8000000000000000 0123214569900000 = 8123214569900000 +#21: xssubdp 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xssubdp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xssubdp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xssubdp 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xssubdp 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xssubdp 0000000000000000 8000000000000000 = 0000000000000000 +#27: xssubdp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xssubdp 0000000000000000 0123214569900000 = 8123214569900000 +#29: xssubdp 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xssubdp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xssubdp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xssubdp 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xssubdp 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xssubdp 0123214569900000 8000000000000000 = 0123214569900000 +#35: xssubdp 0123214569900000 0000000000000000 = 0123214569900000 +#36: xssubdp 0123214569900000 404f000000000000 = c04f000000000000 +#37: xssubdp 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xssubdp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xssubdp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xssubdp 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xssubdp 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xssubdp 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xssubdp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xssubdp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xssubdp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xssubdp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xssubdp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xssubdp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xssubdp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xssubdp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xssubdp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xssubdp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xssubdp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xssubdp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xssubdp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xssubdp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xssubdp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xssubdp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xssubdp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xssubdp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xssubdp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xssubdp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xssubdp fff8000000000000 7ff8000000000000 = fff8000000000000 + + +Test VSX scalar integer conversion instructions +#0: xscvdpsxds 3fd8000000000000 => 0000000000000000 +#1: xscvdpsxds 404f000000000000 => 000000000000003e +#2: xscvdpsxds 0018000000b77501 => 0000000000000000 +#3: xscvdpsxds 7fe800000000051b => 7fffffffffffffff +#4: xscvdpsxds 0123214569900000 => 0000000000000000 +#5: xscvdpsxds 0000000000000000 => 0000000000000000 +#6: xscvdpsxds 8000000000000000 => 0000000000000000 +#7: xscvdpsxds 7ff0000000000000 => 7fffffffffffffff +#8: xscvdpsxds fff0000000000000 => 8000000000000000 +#9: xscvdpsxds 7ff7ffffffffffff => 8000000000000000 +#10: xscvdpsxds fff7ffffffffffff => 8000000000000000 +#11: xscvdpsxds 7ff8000000000000 => 8000000000000000 +#12: xscvdpsxds fff8000000000000 => 8000000000000000 +#13: xscvdpsxds 8008340000078000 => 0000000000000000 +#14: xscvdpsxds c0d0650f5a07b353 => ffffffffffffbe6c + +#0: xscvsxddp 3fd8000000000000 => 43cfec0000000000 +#1: xscvsxddp 404f000000000000 => 43d013c000000000 +#2: xscvsxddp 0018000000b77501 => 4338000000b77501 +#3: xscvsxddp 7fe800000000051b => 43dffa0000000001 +#4: xscvsxddp 0123214569900000 => 4372321456990000 +#5: xscvsxddp 0000000000000000 => 0000000000000000 +#6: xscvsxddp 8000000000000000 => c3e0000000000000 +#7: xscvsxddp 7ff0000000000000 => 43dffc0000000000 +#8: xscvsxddp fff0000000000000 => c330000000000000 +#9: xscvsxddp 7ff7ffffffffffff => 43dffe0000000000 +#10: xscvsxddp fff7ffffffffffff => c320000000000002 +#11: xscvsxddp 7ff8000000000000 => 43dffe0000000000 +#12: xscvsxddp fff8000000000000 => c320000000000000 +#13: xscvsxddp 8008340000078000 => c3dffdf2fffffe20 +#14: xscvsxddp c0d0650f5a07b353 => c3cf97cd7852fc26 + +#0: xscvuxddp 3fd8000000000000 => 43cfec0000000000 +#1: xscvuxddp 404f000000000000 => 43d013c000000000 +#2: xscvuxddp 0018000000b77501 => 4338000000b77501 +#3: xscvuxddp 7fe800000000051b => 43dffa0000000001 +#4: xscvuxddp 0123214569900000 => 4372321456990000 +#5: xscvuxddp 0000000000000000 => 0000000000000000 +#6: xscvuxddp 8000000000000000 => 43e0000000000000 +#7: xscvuxddp 7ff0000000000000 => 43dffc0000000000 +#8: xscvuxddp fff0000000000000 => 43effe0000000000 +#9: xscvuxddp 7ff7ffffffffffff => 43dffe0000000000 +#10: xscvuxddp fff7ffffffffffff => 43efff0000000000 +#11: xscvuxddp 7ff8000000000000 => 43dffe0000000000 +#12: xscvuxddp fff8000000000000 => 43efff0000000000 +#13: xscvuxddp 8008340000078000 => 43e00106800000f0 +#14: xscvuxddp c0d0650f5a07b353 => 43e81a0ca1eb40f6 + + +Testcase PASSED diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.vgtest new file mode 100644 index 000000000..512a21812 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/test_isa_2_06_part1.vgtest @@ -0,0 +1,2 @@ +prereq: ../../../tests/check_isa-2_06_cap +prog: test_isa_2_06_part1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/xlc_dbl_u32.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/xlc_dbl_u32.c index 32a7b97e9..83a623304 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/xlc_dbl_u32.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc32/xlc_dbl_u32.c @@ -37,6 +37,7 @@ asm("\n" " .long 0\n" " .long 0x00000000\n" " .long 0x00000000\n" +".previous\n" "\n" " .section \".rodata\",\"a\"\n" " .align 3\n" @@ -48,6 +49,7 @@ asm("\n" " .long 0x3fe66666\n" " .long 0x66666666\n" " .long 0x25640a00\n" +".previous\n" ); int main (int argc, char** argv) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.am index 5d8b08d77..61b9bd1c2 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.am @@ -6,18 +6,41 @@ dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ + jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.stdout.exp_Minus_nan \ + jm-vmx.vgtest \ lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ std_reg_imm.vgtest std_reg_imm.stderr.exp std_reg_imm.stdout.exp \ round.stderr.exp round.stdout.exp round.vgtest \ twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ - tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest + tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest \ + power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ + power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest \ + test_isa_2_06_part1.stderr.exp test_isa_2_06_part1.stdout.exp test_isa_2_06_part1.vgtest check_PROGRAMS = \ - jm-insns lsw round std_reg_imm twi_tdi tw_td + jm-insns lsw round std_reg_imm twi_tdi tw_td power6_bcmp power6_mf_gpr test_isa_2_06_part1 AM_CFLAGS += @FLAG_M64@ AM_CXXFLAGS += @FLAG_M64@ AM_CCASFLAGS += @FLAG_M64@ -jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec @FLAG_M64@ +if HAS_ALTIVEC +ALTIVEC_FLAG = -DHAS_ALTIVEC +else +ALTIVEC_FLAG = +endif + +if HAS_VSX +BUILD_FLAG_VSX = -mvsx +VSX_FLAG = -DHAS_VSX +else +VSX_FLAG = +BUILD_FLAG_VSX = +endif + +test_isa_2_06_part1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_FLAG) \ + @FLAG_M64@ $(ALTIVEC_FLAG) $(BUILD_FLAG_VSX) + +jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec \ + @FLAG_M64@ $(ALTIVEC_FLAG) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.in index d3eef29a5..aab780877 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/Makefile.in @@ -47,7 +47,9 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am check_PROGRAMS = jm-insns$(EXEEXT) lsw$(EXEEXT) round$(EXEEXT) \ - std_reg_imm$(EXEEXT) twi_tdi$(EXEEXT) tw_td$(EXEEXT) + std_reg_imm$(EXEEXT) twi_tdi$(EXEEXT) tw_td$(EXEEXT) \ + power6_bcmp$(EXEEXT) power6_mf_gpr$(EXEEXT) \ + test_isa_2_06_part1$(EXEEXT) subdir = none/tests/ppc64 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -65,12 +67,24 @@ jm_insns_LINK = $(CCLD) $(jm_insns_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ lsw_SOURCES = lsw.c lsw_OBJECTS = lsw.$(OBJEXT) lsw_LDADD = $(LDADD) +power6_bcmp_SOURCES = power6_bcmp.c +power6_bcmp_OBJECTS = power6_bcmp.$(OBJEXT) +power6_bcmp_LDADD = $(LDADD) +power6_mf_gpr_SOURCES = power6_mf_gpr.c +power6_mf_gpr_OBJECTS = power6_mf_gpr.$(OBJEXT) +power6_mf_gpr_LDADD = $(LDADD) round_SOURCES = round.c round_OBJECTS = round.$(OBJEXT) round_LDADD = $(LDADD) std_reg_imm_SOURCES = std_reg_imm.c std_reg_imm_OBJECTS = std_reg_imm.$(OBJEXT) std_reg_imm_LDADD = $(LDADD) +test_isa_2_06_part1_SOURCES = test_isa_2_06_part1.c +test_isa_2_06_part1_OBJECTS = \ + test_isa_2_06_part1-test_isa_2_06_part1.$(OBJEXT) +test_isa_2_06_part1_LDADD = $(LDADD) +test_isa_2_06_part1_LINK = $(CCLD) $(test_isa_2_06_part1_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ tw_td_SOURCES = tw_td.c tw_td_OBJECTS = tw_td.$(OBJEXT) tw_td_LDADD = $(LDADD) @@ -86,9 +100,10 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = jm-insns.c lsw.c round.c std_reg_imm.c tw_td.c twi_tdi.c -DIST_SOURCES = jm-insns.c lsw.c round.c std_reg_imm.c tw_td.c \ - twi_tdi.c +SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ + std_reg_imm.c test_isa_2_06_part1.c tw_td.c twi_tdi.c +DIST_SOURCES = jm-insns.c lsw.c power6_bcmp.c power6_mf_gpr.c round.c \ + std_reg_imm.c test_isa_2_06_part1.c tw_td.c twi_tdi.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -134,6 +149,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -163,12 +180,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -321,7 +333,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -350,6 +362,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -378,6 +395,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -398,14 +416,29 @@ dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest \ - jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \ + jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.stdout.exp_Minus_nan \ + jm-vmx.vgtest \ lsw.stderr.exp lsw.stdout.exp lsw.vgtest \ std_reg_imm.vgtest std_reg_imm.stderr.exp std_reg_imm.stdout.exp \ round.stderr.exp round.stdout.exp round.vgtest \ twi_tdi.stderr.exp twi_tdi.stdout.exp twi_tdi.vgtest \ - tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest + tw_td.stderr.exp tw_td.stdout.exp tw_td.vgtest \ + power6_bcmp.stderr.exp power6_bcmp.stdout.exp power6_bcmp.vgtest \ + power6_mf_gpr.stderr.exp power6_mf_gpr.stdout.exp power6_mf_gpr.vgtest \ + test_isa_2_06_part1.stderr.exp test_isa_2_06_part1.stdout.exp test_isa_2_06_part1.vgtest + +@HAS_ALTIVEC_FALSE@ALTIVEC_FLAG = +@HAS_ALTIVEC_TRUE@ALTIVEC_FLAG = -DHAS_ALTIVEC +@HAS_VSX_FALSE@BUILD_FLAG_VSX = +@HAS_VSX_TRUE@BUILD_FLAG_VSX = -mvsx +@HAS_VSX_FALSE@VSX_FLAG = +@HAS_VSX_TRUE@VSX_FLAG = -DHAS_VSX +test_isa_2_06_part1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_FLAG) \ + @FLAG_M64@ $(ALTIVEC_FLAG) $(BUILD_FLAG_VSX) + +jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec \ + @FLAG_M64@ $(ALTIVEC_FLAG) -jm_insns_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames -maltivec @FLAG_M64@ all: all-am .SUFFIXES: @@ -449,12 +482,21 @@ jm-insns$(EXEEXT): $(jm_insns_OBJECTS) $(jm_insns_DEPENDENCIES) lsw$(EXEEXT): $(lsw_OBJECTS) $(lsw_DEPENDENCIES) @rm -f lsw$(EXEEXT) $(LINK) $(lsw_OBJECTS) $(lsw_LDADD) $(LIBS) +power6_bcmp$(EXEEXT): $(power6_bcmp_OBJECTS) $(power6_bcmp_DEPENDENCIES) + @rm -f power6_bcmp$(EXEEXT) + $(LINK) $(power6_bcmp_OBJECTS) $(power6_bcmp_LDADD) $(LIBS) +power6_mf_gpr$(EXEEXT): $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_DEPENDENCIES) + @rm -f power6_mf_gpr$(EXEEXT) + $(LINK) $(power6_mf_gpr_OBJECTS) $(power6_mf_gpr_LDADD) $(LIBS) round$(EXEEXT): $(round_OBJECTS) $(round_DEPENDENCIES) @rm -f round$(EXEEXT) $(LINK) $(round_OBJECTS) $(round_LDADD) $(LIBS) std_reg_imm$(EXEEXT): $(std_reg_imm_OBJECTS) $(std_reg_imm_DEPENDENCIES) @rm -f std_reg_imm$(EXEEXT) $(LINK) $(std_reg_imm_OBJECTS) $(std_reg_imm_LDADD) $(LIBS) +test_isa_2_06_part1$(EXEEXT): $(test_isa_2_06_part1_OBJECTS) $(test_isa_2_06_part1_DEPENDENCIES) + @rm -f test_isa_2_06_part1$(EXEEXT) + $(test_isa_2_06_part1_LINK) $(test_isa_2_06_part1_OBJECTS) $(test_isa_2_06_part1_LDADD) $(LIBS) tw_td$(EXEEXT): $(tw_td_OBJECTS) $(tw_td_DEPENDENCIES) @rm -f tw_td$(EXEEXT) $(LINK) $(tw_td_OBJECTS) $(tw_td_LDADD) $(LIBS) @@ -470,8 +512,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jm_insns-jm-insns.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_bcmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power6_mf_gpr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/std_reg_imm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tw_td.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twi_tdi.Po@am__quote@ @@ -503,6 +548,20 @@ jm_insns-jm-insns.obj: jm-insns.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jm_insns_CFLAGS) $(CFLAGS) -c -o jm_insns-jm-insns.obj `if test -f 'jm-insns.c'; then $(CYGPATH_W) 'jm-insns.c'; else $(CYGPATH_W) '$(srcdir)/jm-insns.c'; fi` +test_isa_2_06_part1-test_isa_2_06_part1.o: test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -MT test_isa_2_06_part1-test_isa_2_06_part1.o -MD -MP -MF $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo -c -o test_isa_2_06_part1-test_isa_2_06_part1.o `test -f 'test_isa_2_06_part1.c' || echo '$(srcdir)/'`test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_isa_2_06_part1.c' object='test_isa_2_06_part1-test_isa_2_06_part1.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -c -o test_isa_2_06_part1-test_isa_2_06_part1.o `test -f 'test_isa_2_06_part1.c' || echo '$(srcdir)/'`test_isa_2_06_part1.c + +test_isa_2_06_part1-test_isa_2_06_part1.obj: test_isa_2_06_part1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -MT test_isa_2_06_part1-test_isa_2_06_part1.obj -MD -MP -MF $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo -c -o test_isa_2_06_part1-test_isa_2_06_part1.obj `if test -f 'test_isa_2_06_part1.c'; then $(CYGPATH_W) 'test_isa_2_06_part1.c'; else $(CYGPATH_W) '$(srcdir)/test_isa_2_06_part1.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Tpo $(DEPDIR)/test_isa_2_06_part1-test_isa_2_06_part1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_isa_2_06_part1.c' object='test_isa_2_06_part1-test_isa_2_06_part1.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_isa_2_06_part1_CFLAGS) $(CFLAGS) -c -o test_isa_2_06_part1-test_isa_2_06_part1.obj `if test -f 'test_isa_2_06_part1.c'; then $(CYGPATH_W) 'test_isa_2_06_part1.c'; else $(CYGPATH_W) '$(srcdir)/test_isa_2_06_part1.c'; fi` + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.stdout.exp_Minus_nan b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.stdout.exp_Minus_nan new file mode 100644 index 000000000..8c72a548e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.stdout.exp_Minus_nan @@ -0,0 +1,3036 @@ +PPC altivec integer arith insns with three args: + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 010403160538076a09ad0c000f970f9a (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1f4f406f628f85afa9dfcf00087008a (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 00e502bb04a10697089d0ab30df00df2 (00000000) + vmhaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1d5f3abf591f787f98dfba3fee0fee2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 00e502bb04a10697089d0ab30df00df2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f1d5f3abf591f787f98dfba3fee0fee2 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhaddshs: => 028d042605cf078909520b2c0e0f0e11 (00000000) + vmhaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhaddshs: => f37df516f6bff879fa42fc1cfeffff01 (00000000) + + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 010403160538076b09ad0c000f980f9a (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1f4f406f628f85bfa9dfcf00088008a (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 00e602bb04a10697089d0ab30df10df3 (00000000) + vmhraddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1d6f3abf591f787f98dfba3fee1fee3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 00e602bb04a10697089d0ab30df10df3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f1d6f3abf591f787f98dfba3fee1fee3 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmhraddshs: => 028d042605d0078909530b2c0e0f0e11 (00000000) + vmhraddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmhraddshs: => f37df516f6c0f879fa43fc1cfeffff01 (00000000) + + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => 05061b14412a7748bd6e139c7ab6b2f0 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => f5f60c04321a6838ae5e048c6ba6a3e0 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => d6e6aed496ca8ec896ceaedcd6e6f100 (00000000) + vmladduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => c7d69fc487ba7fb887be9fccc7d6e1f0 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => d6e6aed496ca8ec896ceaedcd6e6f100 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => c7d69fc487ba7fb887be9fccc7d6e1f0 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmladduhm: => 89c62394cd6a8748512e2b1c14161010 (00000000) + vmladduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmladduhm: => 7ab61484be5a7838421e1c0c05060100 (00000000) + + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020322050607b6090a0cca0e0d1121 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2f412f5f6f8a6f9fafdbafefe0211 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsumubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumubm: => 010599e20509bc76090ddf8a0e10fe21 (00000000) + vmsumubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumubm: => f1f68ad2f5faad66f9fed07aff01ef11 (00000000) + + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f5c675a8019a117c0dae2d901afdaac9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => f5c675a8019a117c0dae2d901afdaac9 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhm: => ce24ac58e1874facf52a73400a071619 (00000000) + vmsumuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhm: => bf159d48d278409ce61b6430faf80709 (00000000) + + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshs: => 0258ac5805ab4fac093e73400e0f1619 (00000000) + vmsumshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshs: => f3499d48f69c409cfa2f6430ff000709 (00000000) + + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f1fd1008f641a45cfac6b8f0ffffffff (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f5c675a8ffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => 04d584b810a9208c1cbd3ca02a0cb9d9 (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => f5c675a8ffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumuhs: => ffffffffffffffffffffffffffffffff (00000000) + vmsumuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumuhs: => ffffffffffffffffffffffffffffffff (00000000) + + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 01020322050607b6090a0cca0e0d1121 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2f412f5f6f8a6f9fafdbafefe0211 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 01020c8205062016090a342a0e0d45a1 (00000000) + vmsummbm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2fd72f5f71106f9fb251afefe3691 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 0102028205060616090a0a2a0e0d0da1 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2f372f5f6f706f9fafb1afefdfe91 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsummbm: => 0101cfe20505e2760909f58a0e0d0621 (00000000) + vmsummbm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsummbm: => f1f2c0d2f5f6d366f9fae67afefdf711 (00000000) + + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 010c1f180550b36c09d5c8000f981f99 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1fd1008f641a45cfac6b8f000891089 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 00cf84b8049b208c08a73ca00df0b9d9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f1c075a8f58c117cf9982d90fee1aac9 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmsumshm: => 0258ac5805ab4fac093e73400e0f1619 (00000000) + vmsumshm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmsumshm: => f3499d48f69c409cfa2f6430ff000709 (00000000) + +PPC altivec integer logical insns with three args: + vperm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => 02030405060708090a0b0c0e0e0d0e0f (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + vperm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vperm: => f2f3f4f5f6f7f8f9fafbfcfefefdfeff (00000000) + + vsel: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => 0102030405060708090a0b0c0e0d0e0f (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + vsel: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsel: => f1f2f3f4f5f6f7f8f9fafbfcfefdfeff (00000000) + +PPC altivec integer arith insns with two args: + vaddubm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddubm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddubm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubm: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddubm: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddubm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubm: => e2e4e6e8 eaeceef0 f2f4f6f8 fcfafcfe (00000000) + + vadduhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduhm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhm: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vadduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduhm: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vadduhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhm: => e3e4e7e8 ebeceff0 f3f4f7f8 fdfafdfe (00000000) + + vadduwm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduwm: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduwm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduwm: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vadduwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduwm: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vadduwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduwm: => e3e5e7e8 ebedeff0 f3f5f7f8 fdfbfdfe (00000000) + + vaddubs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddubs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddubs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubs: => f2f4f6f8 fafcfeff ffffffff ffffffff (00000000) + vaddubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddubs: => f2f4f6f8 fafcfeff ffffffff ffffffff (00000000) + vaddubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddubs: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vadduhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduhs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhs: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduhs: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduhs: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vadduws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vadduws: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vadduws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduws: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vadduws: => f2f4f6f8 fafcff00 ffffffff ffffffff (00000000) + vadduws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vadduws: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vaddsbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddsbs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddsbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsbs: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddsbs: => f2f4f6f8 fafcfe00 02040608 0c0a0c0e (00000000) + vaddsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsbs: => e2e4e6e8 eaeceef0 f2f4f6f8 fcfafcfe (00000000) + + vaddshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddshs: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddshs: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddshs: => f2f4f6f8 fafcff00 03040708 0d0a0d0e (00000000) + vaddshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddshs: => e3e4e7e8 ebeceff0 f3f4f7f8 fdfafdfe (00000000) + + vaddsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddsws: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vaddsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsws: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vaddsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddsws: => f2f4f6f8 fafcff00 03050708 0d0b0d0e (00000000) + vaddsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddsws: => e3e5e7e8 ebedeff0 f3f5f7f8 fdfbfdfe (00000000) + + vaddcuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vaddcuw: => 00000000 00000000 00000000 00000000 (00000000) + vaddcuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddcuw: => 00000000 00000000 00000001 00000001 (00000000) + vaddcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vaddcuw: => 00000000 00000000 00000001 00000001 (00000000) + vaddcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vaddcuw: => 00000001 00000001 00000001 00000001 (00000000) + + vsububm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsububm: => 00000000 00000000 00000000 00000000 (00000000) + vsububm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububm: => 10101010 10101010 10101010 10101010 (00000000) + vsububm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsububm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsububm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububm: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuhm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuhm: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhm: => 0f100f10 0f100f10 0f100f10 0f100f10 (00000000) + vsubuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuhm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuhm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhm: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuwm: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuwm: => 00000000 00000000 00000000 00000000 (00000000) + vsubuwm: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuwm: => 0f0f0f10 0f0f0f10 0f0f0f10 0f0f0f10 (00000000) + vsubuwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuwm: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuwm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuwm: => 00000000 00000000 00000000 00000000 (00000000) + + vsububs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + vsububs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + vsububs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsububs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsububs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsububs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuhs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + vsubuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuhs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuhs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuhs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubuws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + vsubuws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + vsubuws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubuws: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubuws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubuws: => 00000000 00000000 00000000 00000000 (00000000) + + vsubsbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubsbs: => 00000000 00000000 00000000 00000000 (00000000) + vsubsbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsbs: => 10101010 10101010 10101010 10101010 (00000000) + vsubsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubsbs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubsbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsbs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubshs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubshs: => 00000000 00000000 00000000 00000000 (00000000) + vsubshs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubshs: => 0f100f10 0f100f10 0f100f10 0f100f10 (00000000) + vsubshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubshs: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubshs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubshs: => 00000000 00000000 00000000 00000000 (00000000) + + vsubsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubsws: => 00000000 00000000 00000000 00000000 (00000000) + vsubsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsws: => 0f0f0f10 0f0f0f10 0f0f0f10 0f0f0f10 (00000000) + vsubsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubsws: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vsubsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubsws: => 00000000 00000000 00000000 00000000 (00000000) + + vsubcuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + vsubcuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubcuw: => 00000000 00000000 00000000 00000000 (00000000) + vsubcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + vsubcuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsubcuw: => 00000001 00000001 00000001 00000001 (00000000) + + vmuloub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuloub: => 00040010 00240040 00640090 00a900e1 (00000000) + vmuloub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuloub: => 01e403d0 05c407c0 09c40bd0 0cd90ef1 (00000000) + vmuloub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuloub: => 01e403d0 05c407c0 09c40bd0 0cd90ef1 (00000000) + vmuloub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuloub: => e4c4e890 ec64f040 f424f810 fa09fe01 (00000000) + + vmulouh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulouh: => 00091810 00317040 007a0890 00c5a4e1 (00000000) + vmulouh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulouh: => 02dfabd0 06cf87c0 0adfa3d0 0e00e2f1 (00000000) + vmulouh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulouh: => 02dfabd0 06cf87c0 0adfa3d0 0e00e2f1 (00000000) + vmulouh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulouh: => e8792090 f0308040 f8082010 fdff0201 (00000000) + + vmulosb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulosb: => 00040010 00240040 00640090 00a900e1 (00000000) + vmulosb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosb: => ffe4ffd0 ffc4ffc0 ffc4ffd0 ffd9fff1 (00000000) + vmulosb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulosb: => ffe4ffd0 ffc4ffc0 ffc4ffd0 ffd9fff1 (00000000) + vmulosb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosb: => 00c40090 00640040 00240010 00090001 (00000000) + + vmulosh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulosh: => 00091810 00317040 007a0890 00c5a4e1 (00000000) + vmulosh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosh: => ffdbabd0 ffc787c0 ffd3a3d0 fff1e2f1 (00000000) + vmulosh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulosh: => ffdbabd0 ffc787c0 ffd3a3d0 fff1e2f1 (00000000) + vmulosh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulosh: => 00912090 00408040 00102010 00010201 (00000000) + + vmuleub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuleub: => 00010009 00190031 00510079 00c400c4 (00000000) + vmuleub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleub: => 00f102d9 04c906c1 08c10ac9 0de40de4 (00000000) + vmuleub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuleub: => 00f102d9 04c906c1 08c10ac9 0de40de4 (00000000) + vmuleub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleub: => e2e1e6a9 ea79ee51 f231f619 fc04fc04 (00000000) + + vmuleuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmuleuh: => 00010404 00193c24 0051b464 00c56ca9 (00000000) + vmuleuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleuh: => 00f3d5e4 04d391c4 08d38dc4 0dfec8d9 (00000000) + vmuleuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmuleuh: => 00f3d5e4 04d391c4 08d38dc4 0dfec8d9 (00000000) + vmuleuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmuleuh: => e4a988c4 ec50c864 f4184824 fdfb0609 (00000000) + + vmulesb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulesb: => 00010009 00190031 00510079 00c400c4 (00000000) + vmulesb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesb: => fff1ffd9 ffc9ffc1 ffc1ffc9 ffe4ffe4 (00000000) + vmulesb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulesb: => fff1ffd9 ffc9ffc1 ffc1ffc9 ffe4ffe4 (00000000) + vmulesb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesb: => 00e100a9 00790051 00310019 00040004 (00000000) + + vmulesh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmulesh: => 00010404 00193c24 0051b464 00c56ca9 (00000000) + vmulesh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesh: => fff1d5e4 ffcd91c4 ffc98dc4 fff1c8d9 (00000000) + vmulesh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmulesh: => fff1d5e4 ffcd91c4 ffc98dc4 fff1c8d9 (00000000) + vmulesh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmulesh: => 00c588c4 0064c864 00244824 00010609 (00000000) + + vsumsws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsumsws: => 00000000 00000000 00000000 2b2c3136 (00000000) + vsumsws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsumsws: => 00000000 00000000 00000000 1c1d2226 (00000000) + vsumsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsumsws: => 00000000 00000000 00000000 eeeff4f6 (00000000) + vsumsws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsumsws: => 00000000 00000000 00000000 dfe0e5e6 (00000000) + + vsum2sws: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum2sws: => 00000000 0b0e1114 00000000 2524272a (00000000) + vsum2sws: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum2sws: => 00000000 fbff0204 00000000 1615181a (00000000) + vsum2sws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum2sws: => 00000000 eceff2f4 00000000 0706090a (00000000) + vsum2sws: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum2sws: => 00000000 dde0e3e4 00000000 f7f6f9fa (00000000) + + vsum4ubs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4ubs: => 0102030e 05060722 090a0b36 0e0d0e47 (00000000) + vsum4ubs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4ubs: => f1f2f3fe f5f6f812 f9fafc26 fefdff37 (00000000) + vsum4ubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4ubs: => 010206ce 05060ae2 090a0ef6 0e0d1207 (00000000) + vsum4ubs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4ubs: => f1f2f7be f5f6fbd2 f9faffe6 fefe02f7 (00000000) + + vsum4sbs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4sbs: => 0102030e 05060722 090a0b36 0e0d0e47 (00000000) + vsum4sbs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4sbs: => f1f2f3fe f5f6f812 f9fafc26 fefdff37 (00000000) + vsum4sbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4sbs: => 010202ce 050606e2 090a0af6 0e0d0e07 (00000000) + vsum4sbs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4sbs: => f1f2f3be f5f6f7d2 f9fafbe6 fefdfef7 (00000000) + + vsum4shs: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsum4shs: => 0102070a 05061316 090a1f22 0e0d2a2b (00000000) + vsum4shs: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4shs: => f1f2f7fa f5f70406 f9fb1012 fefe1b1b (00000000) + vsum4shs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsum4shs: => 0101e8ea 0505f4f6 090a0102 0e0d0c0b (00000000) + vsum4shs: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsum4shs: => f1f2d9da f5f6e5e6 f9faf1f2 fefdfcfb (00000000) + + vavgub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgub: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavgub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgub: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavgub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavguh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavguh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavguh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguh: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavguh: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavguw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavguw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavguw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguw: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavguw: => 797a7b7c 7d7e7f80 81828384 86858687 (00000000) + vavguw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavguw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsb: => f9fafbfc fdfeff00 01020304 06050607 (00000000) + vavgsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsb: => f9fafbfc fdfeff00 01020304 06050607 (00000000) + vavgsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsh: => f97afb7c fd7eff80 01820384 06850687 (00000000) + vavgsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsh: => f97afb7c fd7eff80 01820384 06850687 (00000000) + vavgsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vavgsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vavgsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vavgsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsw: => f97a7b7c fd7e7f80 01828384 06858687 (00000000) + vavgsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vavgsw: => f97a7b7c fd7e7f80 01828384 06858687 (00000000) + vavgsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vavgsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vmaxuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vmaxsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmaxsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vmaxsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmaxsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminub: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminub: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminuh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminuw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminuw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsb: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsb: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsh: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsh: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vminsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vminsw: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vminsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vminsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vminsw: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +PPC altivec integer logical insns with two args: + vand: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vand: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vand: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vand: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vor: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vor: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + vxor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vxor: => 00000000 00000000 00000000 00000000 (00000000) + vxor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vxor: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vxor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vxor: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vxor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vxor: => 00000000 00000000 00000000 00000000 (00000000) + + vandc: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vandc: => 00000000 00000000 00000000 00000000 (00000000) + vandc: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vandc: => 00000000 00000000 00000000 00000000 (00000000) + vandc: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vandc: => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vandc: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vandc: => 00000000 00000000 00000000 00000000 (00000000) + + vnor: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vnor: => fefdfcfb faf9f8f7 f6f5f4f3 f1f2f1f0 (00000000) + vnor: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + vnor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + vnor: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vnor: => 0e0d0c0b 0a090807 06050403 01020100 (00000000) + + vrlb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlb: => 02081840 a0818308 122858c0 83a18387 (00000000) + vrlb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlb: => 02081840 a0818308 122858c0 83a18387 (00000000) + vrlb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlb: => e3cb9f4f bebdfbf8 f3ebdfcf bfbfbfff (00000000) + vrlb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlb: => e3cb9f4f bebdfbf8 f3ebdfcf bfbfbfff (00000000) + + vrlh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlh: => 04083040 41810807 2824c0b0 a1c18707 (00000000) + vrlh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlh: => 04083040 41810807 2824c0b0 a1c18707 (00000000) + vrlh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlh: => c7cb3f4f 7dbdf8f7 ebe7cfbf bfdfff7f (00000000) + vrlh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlh: => c7cb3f4f 7dbdf8f7 ebe7cfbf bfdfff7f (00000000) + + vrlw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vrlw: => 10203040 06070805 a0b0c090 87078706 (00000000) + vrlw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlw: => 30401020 08050607 c090a0b0 87068707 (00000000) + vrlw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vrlw: => 1f2f3f4f f6f7f8f5 afbfcf9f ff7fff7e (00000000) + vrlw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vrlw: => 3f4f1f2f f8f5f6f7 cf9fafbf ff7eff7f (00000000) + + vslb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslb: => 02081840 a0808008 122858c0 80a08080 (00000000) + vslb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslb: => 02081840 a0808008 122858c0 80a08080 (00000000) + vslb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslb: => e2c89840 a08080f8 f2e8d8c0 80a08080 (00000000) + vslb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslb: => e2c89840 a08080f8 f2e8d8c0 80a08080 (00000000) + + vslh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslh: => 04083040 41800800 2800c000 a0008000 (00000000) + vslh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslh: => 04083040 41800800 2800c000 a0008000 (00000000) + vslh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslh: => c7c83f40 7d80f800 e800c000 a0008000 (00000000) + vslh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslh: => c7c83f40 7d80f800 e800c000 a0008000 (00000000) + + vslw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslw: => 10203040 06070800 a0b0c000 87078000 (00000000) + vslw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslw: => 30400000 08000000 c0000000 80000000 (00000000) + vslw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslw: => 1f2f3f40 f6f7f800 afbfc000 ff7f8000 (00000000) + vslw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslw: => 3f400000 f8000000 c0000000 80000000 (00000000) + + vsrb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrb: => 00000000 00000008 04020100 00000000 (00000000) + vsrb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrb: => 00000000 00000008 04020100 00000000 (00000000) + vsrb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrb: => 783c1e0f 070301f8 7c3e1f0f 03070301 (00000000) + vsrb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrb: => 783c1e0f 070301f8 7c3e1f0f 03070301 (00000000) + + vsrh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrh: => 00400030 00140007 00020000 00000000 (00000000) + vsrh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrh: => 00400030 00140007 00020000 00000000 (00000000) + vsrh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrh: => 3c7c0f3f 03d700f7 003e000f 00070001 (00000000) + vsrh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrh: => 3c7c0f3f 03d700f7 003e000f 00070001 (00000000) + + vsrw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrw: => 00102030 00050607 000090a0 00001c1a (00000000) + vsrw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrw: => 00000010 00000005 00000000 00000000 (00000000) + vsrw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrw: => 0f1f2f3f 00f5f6f7 000f9faf 0001fdfb (00000000) + vsrw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrw: => 00000f1f 000000f5 0000000f 00000001 (00000000) + + vsrab: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrab: => 00000000 00000008 04020100 00000000 (00000000) + vsrab: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrab: => 00000000 00000008 04020100 00000000 (00000000) + vsrab: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrab: => f8fcfeff fffffff8 fcfeffff ffffffff (00000000) + vsrab: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrab: => f8fcfeff fffffff8 fcfeffff ffffffff (00000000) + + vsrah: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsrah: => 00400030 00140007 00020000 00000000 (00000000) + vsrah: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrah: => 00400030 00140007 00020000 00000000 (00000000) + vsrah: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsrah: => fc7cff3f ffd7fff7 fffeffff ffffffff (00000000) + vsrah: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsrah: => fc7cff3f ffd7fff7 fffeffff ffffffff (00000000) + + vsraw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsraw: => 00102030 00050607 000090a0 00001c1a (00000000) + vsraw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsraw: => 00000010 00000005 00000000 00000000 (00000000) + vsraw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsraw: => ff1f2f3f fff5f6f7 ffff9faf fffffdfb (00000000) + vsraw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsraw: => ffffff1f fffffff5 ffffffff ffffffff (00000000) + + vpkuhum: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuhum: => 02040608 0a0c0d0f 02040608 0a0c0d0f (00000000) + vpkuhum: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhum: => 02040608 0a0c0d0f f2f4f6f8 fafcfdff (00000000) + vpkuhum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuhum: => f2f4f6f8 fafcfdff 02040608 0a0c0d0f (00000000) + vpkuhum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhum: => f2f4f6f8 fafcfdff f2f4f6f8 fafcfdff (00000000) + + vpkuwum: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuwum: => 03040708 0b0c0e0f 03040708 0b0c0e0f (00000000) + vpkuwum: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwum: => 03040708 0b0c0e0f f3f4f7f8 fbfcfeff (00000000) + vpkuwum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuwum: => f3f4f7f8 fbfcfeff 03040708 0b0c0e0f (00000000) + vpkuwum: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwum: => f3f4f7f8 fbfcfeff f3f4f7f8 fbfcfeff (00000000) + + vpkuhus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuhus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuhus: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vpkuwus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkuwus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkuwus: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vpkshus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkshus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkshus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshus: => ffffffff ffffffff 00000000 00000000 (00000000) + vpkshus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkshus: => 00000000 00000000 ffffffff ffffffff (00000000) + vpkshus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshus: => 00000000 00000000 00000000 00000000 (00000000) + + vpkswus: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkswus: => ffffffff ffffffff ffffffff ffffffff (00000000) + vpkswus: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswus: => ffffffff ffffffff 00000000 00000000 (00000000) + vpkswus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkswus: => 00000000 00000000 ffffffff ffffffff (00000000) + vpkswus: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswus: => 00000000 00000000 00000000 00000000 (00000000) + + vpkshss: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkshss: => 7f7f7f7f 7f7f7f7f 7f7f7f7f 7f7f7f7f (00000000) + vpkshss: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshss: => 7f7f7f7f 7f7f7f7f 80808080 80808080 (00000000) + vpkshss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkshss: => 80808080 80808080 7f7f7f7f 7f7f7f7f (00000000) + vpkshss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkshss: => 80808080 80808080 80808080 80808080 (00000000) + + vpkswss: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkswss: => 7fff7fff 7fff7fff 7fff7fff 7fff7fff (00000000) + vpkswss: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswss: => 7fff7fff 7fff7fff 80008000 80008000 (00000000) + vpkswss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkswss: => 80008000 80008000 7fff7fff 7fff7fff (00000000) + vpkswss: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkswss: => 80008000 80008000 80008000 80008000 (00000000) + + vpkpx: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vpkpx: => 80008001 84210421 80008001 84210421 (00000000) + vpkpx: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkpx: => 80008001 84210421 fbdefbdf ffff7fff (00000000) + vpkpx: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vpkpx: => fbdefbdf ffff7fff 80008001 84210421 (00000000) + vpkpx: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vpkpx: => fbdefbdf ffff7fff fbdefbdf ffff7fff (00000000) + + vmrghb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghb: => 01010202 03030404 05050606 07070808 (00000000) + vmrghb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghb: => 01f102f2 03f304f4 05f506f6 07f708f8 (00000000) + vmrghb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghb: => f101f202 f303f404 f505f606 f707f808 (00000000) + vmrghb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghb: => f1f1f2f2 f3f3f4f4 f5f5f6f6 f7f7f8f8 (00000000) + + vmrghh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghh: => 01020102 03040304 05060506 07080708 (00000000) + vmrghh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghh: => 0102f1f2 0304f3f4 0506f5f6 0708f7f8 (00000000) + vmrghh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghh: => f1f20102 f3f40304 f5f60506 f7f80708 (00000000) + vmrghh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghh: => f1f2f1f2 f3f4f3f4 f5f6f5f6 f7f8f7f8 (00000000) + + vmrghw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrghw: => 01020304 01020304 05060708 05060708 (00000000) + vmrghw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghw: => 01020304 f1f2f3f4 05060708 f5f6f7f8 (00000000) + vmrghw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrghw: => f1f2f3f4 01020304 f5f6f7f8 05060708 (00000000) + vmrghw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrghw: => f1f2f3f4 f1f2f3f4 f5f6f7f8 f5f6f7f8 (00000000) + + vmrglb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglb: => 09090a0a 0b0b0c0c 0e0e0d0d 0e0e0f0f (00000000) + vmrglb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglb: => 09f90afa 0bfb0cfc 0efe0dfd 0efe0fff (00000000) + vmrglb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglb: => f909fa0a fb0bfc0c fe0efd0d fe0eff0f (00000000) + vmrglb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglb: => f9f9fafa fbfbfcfc fefefdfd fefeffff (00000000) + + vmrglh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglh: => 090a090a 0b0c0b0c 0e0d0e0d 0e0f0e0f (00000000) + vmrglh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglh: => 090af9fa 0b0cfbfc 0e0dfefd 0e0ffeff (00000000) + vmrglh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglh: => f9fa090a fbfc0b0c fefd0e0d feff0e0f (00000000) + vmrglh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglh: => f9faf9fa fbfcfbfc fefdfefd fefffeff (00000000) + + vmrglw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vmrglw: => 090a0b0c 090a0b0c 0e0d0e0f 0e0d0e0f (00000000) + vmrglw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglw: => 090a0b0c f9fafbfc 0e0d0e0f fefdfeff (00000000) + vmrglw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vmrglw: => f9fafbfc 090a0b0c fefdfeff 0e0d0e0f (00000000) + vmrglw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vmrglw: => f9fafbfc f9fafbfc fefdfeff fefdfeff (00000000) + + vslo: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vslo: => 02030405 06070809 0a0b0c0e 0d0e0f00 (00000000) + vslo: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslo: => 0f000000 00000000 00000000 00000000 (00000000) + vslo: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vslo: => f2f3f4f5 f6f7f8f9 fafbfcfe fdfeff00 (00000000) + vslo: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vslo: => ff000000 00000000 00000000 00000000 (00000000) + + vsro: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vsro: => 00010203 04050607 08090a0b 0c0e0d0e (00000000) + vsro: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsro: => 00000000 00000000 00000000 00000001 (00000000) + vsro: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vsro: => 00f1f2f3 f4f5f6f7 f8f9fafb fcfefdfe (00000000) + vsro: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vsro: => 00000000 00000000 00000000 000000f1 (00000000) + +PPC altivec integer logical insns with one arg: + vupkhsb: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhsb: => 00010002 00030004 00050006 00070008 (00000000) + vupkhsb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhsb: => fff1fff2 fff3fff4 fff5fff6 fff7fff8 (00000000) + + vupkhsh: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhsh: => 00000102 00000304 00000506 00000708 (00000000) + vupkhsh: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhsh: => fffff1f2 fffff3f4 fffff5f6 fffff7f8 (00000000) + + vupkhpx: 01020304 05060708 090a0b0c 0e0d0e0f + vupkhpx: => 00000802 00001804 00010806 00011808 (00000000) + vupkhpx: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupkhpx: => ff1c0f12 ff1c1f14 ff1d0f16 ff1d1f18 (00000000) + + vupklsb: 01020304 05060708 090a0b0c 0e0d0e0f + vupklsb: => 0009000a 000b000c 000e000d 000e000f (00000000) + vupklsb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklsb: => fff9fffa fffbfffc fffefffd fffeffff (00000000) + + vupklsh: 01020304 05060708 090a0b0c 0e0d0e0f + vupklsh: => 0000090a 00000b0c 00000e0d 00000e0f (00000000) + vupklsh: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklsh: => fffff9fa fffffbfc fffffefd fffffeff (00000000) + + vupklpx: 01020304 05060708 090a0b0c 0e0d0e0f + vupklpx: => 0002080a 0002180c 0003100d 0003100f (00000000) + vupklpx: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff + vupklpx: => ff1e0f1a ff1e1f1c ff1f171d ff1f171f (00000000) + +Altivec integer compare insns: + vcmpgtub: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtub: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtub: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtuh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtuh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtuw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtuw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgtsw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtsw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpequb: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequb: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequb: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequb: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequb: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vcmpequh: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequh: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequh: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequh: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequh: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vcmpequw: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequw: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpequw: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequw: => 00000000 00000000 00000000 00000000 (00000000) + vcmpequw: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw: => ffffffff ffffffff ffffffff ffffffff (00000000) + +Altivec integer compare insns with flags update: + vcmpgtub.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtub.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtub.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtub.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtub.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtub.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtuh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtuh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuh.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtuw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtuw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtuw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtuw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtuw.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsb.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsb.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsb.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsh.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgtsw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtsw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtsw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpgtsw.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpequb.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequb.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequb.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequb.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequb.: => ffffffff ffffffff ffffffff ffffffff (00000080) + + vcmpequh.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequh.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequh.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequh.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequh.: => ffffffff ffffffff ffffffff ffffffff (00000080) + + vcmpequw.: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f + vcmpequw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpequw.: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f + vcmpequw.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpequw.: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff + vcmpequw.: => ffffffff ffffffff ffffffff ffffffff (00000080) + +Altivec integer special insns: + vsl: 0102030405060708090a0b0c0e0d0e0f, 00000000000000000000000000000000 + vsl: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 01010101010101010101010101010101 + vsl: => 02040608 0a0c0e10 12141618 1c1a1c1e (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 02020202020202020202020202020202 + vsl: => 04080c10 14181c20 24282c30 3834383c (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 03030303030303030303030303030303 + vsl: => 08101820 28303840 48505860 70687078 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 04040404040404040404040404040404 + vsl: => 10203040 50607080 90a0b0c0 e0d0e0f0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 05050505050505050505050505050505 + vsl: => 20406080 a0c0e101 21416181 c1a1c1e0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 06060606060606060606060606060606 + vsl: => 4080c101 4181c202 4282c303 834383c0 (00000000) + vsl: 0102030405060708090a0b0c0e0d0e0f, 07070707070707070707070707070707 + vsl: => 81018202 83038404 85058607 06870780 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 00000000000000000000000000000000 + vsl: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 01010101010101010101010101010101 + vsl: => e3e5e7e9 ebedeff1 f3f5f7f9 fdfbfdfe (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 02020202020202020202020202020202 + vsl: => c7cbcfd3 d7dbdfe3 e7ebeff3 fbf7fbfc (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 03030303030303030303030303030303 + vsl: => 8f979fa7 afb7bfc7 cfd7dfe7 f7eff7f8 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 04040404040404040404040404040404 + vsl: => 1f2f3f4f 5f6f7f8f 9fafbfcf efdfeff0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 05050505050505050505050505050505 + vsl: => 3e5e7e9e bedeff1f 3f5f7f9f dfbfdfe0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 06060606060606060606060606060606 + vsl: => 7cbcfd3d 7dbdfe3e 7ebeff3f bf7fbfc0 (00000000) + vsl: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 07070707070707070707070707070707 + vsl: => f979fa7a fb7bfc7c fd7dfe7f 7eff7f80 (00000000) + + vsr: 0102030405060708090a0b0c0e0d0e0f, 00000000000000000000000000000000 + vsr: => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 01010101010101010101010101010101 + vsr: => 00810182 02830384 04850586 07068707 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 02020202020202020202020202020202 + vsr: => 004080c1 014181c2 024282c3 03834383 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 03030303030303030303030303030303 + vsr: => 00204060 80a0c0e1 01214161 81c1a1c1 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 04040404040404040404040404040404 + vsr: => 00102030 40506070 8090a0b0 c0e0d0e0 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 05050505050505050505050505050505 + vsr: => 00081018 20283038 40485058 60706870 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 06060606060606060606060606060606 + vsr: => 0004080c 1014181c 2024282c 30383438 (00000000) + vsr: 0102030405060708090a0b0c0e0d0e0f, 07070707070707070707070707070707 + vsr: => 00020406 080a0c0e 10121416 181c1a1c (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 00000000000000000000000000000000 + vsr: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 01010101010101010101010101010101 + vsr: => 78f979fa 7afb7bfc 7cfd7dfe 7f7eff7f (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 02020202020202020202020202020202 + vsr: => 3c7cbcfd 3d7dbdfe 3e7ebeff 3fbf7fbf (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 03030303030303030303030303030303 + vsr: => 1e3e5e7e 9ebedeff 1f3f5f7f 9fdfbfdf (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 04040404040404040404040404040404 + vsr: => 0f1f2f3f 4f5f6f7f 8f9fafbf cfefdfef (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 05050505050505050505050505050505 + vsr: => 078f979f a7afb7bf c7cfd7df e7f7eff7 (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 06060606060606060606060606060606 + vsr: => 03c7cbcf d3d7dbdf e3e7ebef f3fbf7fb (00000000) + vsr: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 07070707070707070707070707070707 + vsr: => 01e3e5e7 e9ebedef f1f3f5f7 f9fdfbfd (00000000) + + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vspltb: => 01010101 01010101 01010101 01010101 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vspltb: => 04040404 04040404 04040404 04040404 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vspltb: => 07070707 07070707 07070707 07070707 (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vspltb: => 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vspltb: => 0e0e0e0e 0e0e0e0e 0e0e0e0e 0e0e0e0e (00000000) + vspltb: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vspltb: => 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vspltb: => f1f1f1f1 f1f1f1f1 f1f1f1f1 f1f1f1f1 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vspltb: => f4f4f4f4 f4f4f4f4 f4f4f4f4 f4f4f4f4 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vspltb: => f7f7f7f7 f7f7f7f7 f7f7f7f7 f7f7f7f7 (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vspltb: => fafafafa fafafafa fafafafa fafafafa (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vspltb: => fefefefe fefefefe fefefefe fefefefe (00000000) + vspltb: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vspltb: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vsplth: => 01020102 01020102 01020102 01020102 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vsplth: => 07080708 07080708 07080708 07080708 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vsplth: => 0e0d0e0d 0e0d0e0d 0e0d0e0d 0e0d0e0d (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vsplth: => 03040304 03040304 03040304 03040304 (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vsplth: => 090a090a 090a090a 090a090a 090a090a (00000000) + vsplth: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vsplth: => 0e0f0e0f 0e0f0e0f 0e0f0e0f 0e0f0e0f (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vsplth: => f1f2f1f2 f1f2f1f2 f1f2f1f2 f1f2f1f2 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vsplth: => f7f8f7f8 f7f8f7f8 f7f8f7f8 f7f8f7f8 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vsplth: => fefdfefd fefdfefd fefdfefd fefdfefd (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vsplth: => f3f4f3f4 f3f4f3f4 f3f4f3f4 f3f4f3f4 (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vsplth: => f9faf9fa f9faf9fa f9faf9fa f9faf9fa (00000000) + vsplth: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vsplth: => fefffeff fefffeff fefffeff fefffeff (00000000) + + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 0 + vspltw: => 01020304 01020304 01020304 01020304 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 3 + vspltw: => 0e0d0e0f 0e0d0e0f 0e0d0e0f 0e0d0e0f (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 6 + vspltw: => 090a0b0c 090a0b0c 090a0b0c 090a0b0c (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 9 + vspltw: => 05060708 05060708 05060708 05060708 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 12 + vspltw: => 01020304 01020304 01020304 01020304 (00000000) + vspltw: 01020304 05060708 090a0b0c 0e0d0e0f, 15 + vspltw: => 0e0d0e0f 0e0d0e0f 0e0d0e0f 0e0d0e0f (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 0 + vspltw: => f1f2f3f4 f1f2f3f4 f1f2f3f4 f1f2f3f4 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 3 + vspltw: => fefdfeff fefdfeff fefdfeff fefdfeff (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 6 + vspltw: => f9fafbfc f9fafbfc f9fafbfc f9fafbfc (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 9 + vspltw: => f5f6f7f8 f5f6f7f8 f5f6f7f8 f5f6f7f8 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 12 + vspltw: => f1f2f3f4 f1f2f3f4 f1f2f3f4 f1f2f3f4 (00000000) + vspltw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff, 15 + vspltw: => fefdfeff fefdfeff fefdfeff fefdfeff (00000000) + + vspltisb: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltisb: 1 => 01010101 01010101 01010101 01010101 (00000000) + vspltisb: 2 => 02020202 02020202 02020202 02020202 (00000000) + vspltisb: 3 => 03030303 03030303 03030303 03030303 (00000000) + vspltisb: 4 => 04040404 04040404 04040404 04040404 (00000000) + vspltisb: 5 => 05050505 05050505 05050505 05050505 (00000000) + vspltisb: 6 => 06060606 06060606 06060606 06060606 (00000000) + vspltisb: 7 => 07070707 07070707 07070707 07070707 (00000000) + vspltisb: 8 => 08080808 08080808 08080808 08080808 (00000000) + vspltisb: 9 => 09090909 09090909 09090909 09090909 (00000000) + vspltisb: 10 => 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a (00000000) + vspltisb: 11 => 0b0b0b0b 0b0b0b0b 0b0b0b0b 0b0b0b0b (00000000) + vspltisb: 12 => 0c0c0c0c 0c0c0c0c 0c0c0c0c 0c0c0c0c (00000000) + vspltisb: 13 => 0d0d0d0d 0d0d0d0d 0d0d0d0d 0d0d0d0d (00000000) + vspltisb: 14 => 0e0e0e0e 0e0e0e0e 0e0e0e0e 0e0e0e0e (00000000) + vspltisb: 15 => 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f (00000000) + vspltisb: 16 => f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 (00000000) + vspltisb: 17 => f1f1f1f1 f1f1f1f1 f1f1f1f1 f1f1f1f1 (00000000) + vspltisb: 18 => f2f2f2f2 f2f2f2f2 f2f2f2f2 f2f2f2f2 (00000000) + vspltisb: 19 => f3f3f3f3 f3f3f3f3 f3f3f3f3 f3f3f3f3 (00000000) + vspltisb: 20 => f4f4f4f4 f4f4f4f4 f4f4f4f4 f4f4f4f4 (00000000) + vspltisb: 21 => f5f5f5f5 f5f5f5f5 f5f5f5f5 f5f5f5f5 (00000000) + vspltisb: 22 => f6f6f6f6 f6f6f6f6 f6f6f6f6 f6f6f6f6 (00000000) + vspltisb: 23 => f7f7f7f7 f7f7f7f7 f7f7f7f7 f7f7f7f7 (00000000) + vspltisb: 24 => f8f8f8f8 f8f8f8f8 f8f8f8f8 f8f8f8f8 (00000000) + vspltisb: 25 => f9f9f9f9 f9f9f9f9 f9f9f9f9 f9f9f9f9 (00000000) + vspltisb: 26 => fafafafa fafafafa fafafafa fafafafa (00000000) + vspltisb: 27 => fbfbfbfb fbfbfbfb fbfbfbfb fbfbfbfb (00000000) + vspltisb: 28 => fcfcfcfc fcfcfcfc fcfcfcfc fcfcfcfc (00000000) + vspltisb: 29 => fdfdfdfd fdfdfdfd fdfdfdfd fdfdfdfd (00000000) + vspltisb: 30 => fefefefe fefefefe fefefefe fefefefe (00000000) + vspltisb: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vspltish: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltish: 1 => 00010001 00010001 00010001 00010001 (00000000) + vspltish: 2 => 00020002 00020002 00020002 00020002 (00000000) + vspltish: 3 => 00030003 00030003 00030003 00030003 (00000000) + vspltish: 4 => 00040004 00040004 00040004 00040004 (00000000) + vspltish: 5 => 00050005 00050005 00050005 00050005 (00000000) + vspltish: 6 => 00060006 00060006 00060006 00060006 (00000000) + vspltish: 7 => 00070007 00070007 00070007 00070007 (00000000) + vspltish: 8 => 00080008 00080008 00080008 00080008 (00000000) + vspltish: 9 => 00090009 00090009 00090009 00090009 (00000000) + vspltish: 10 => 000a000a 000a000a 000a000a 000a000a (00000000) + vspltish: 11 => 000b000b 000b000b 000b000b 000b000b (00000000) + vspltish: 12 => 000c000c 000c000c 000c000c 000c000c (00000000) + vspltish: 13 => 000d000d 000d000d 000d000d 000d000d (00000000) + vspltish: 14 => 000e000e 000e000e 000e000e 000e000e (00000000) + vspltish: 15 => 000f000f 000f000f 000f000f 000f000f (00000000) + vspltish: 16 => fff0fff0 fff0fff0 fff0fff0 fff0fff0 (00000000) + vspltish: 17 => fff1fff1 fff1fff1 fff1fff1 fff1fff1 (00000000) + vspltish: 18 => fff2fff2 fff2fff2 fff2fff2 fff2fff2 (00000000) + vspltish: 19 => fff3fff3 fff3fff3 fff3fff3 fff3fff3 (00000000) + vspltish: 20 => fff4fff4 fff4fff4 fff4fff4 fff4fff4 (00000000) + vspltish: 21 => fff5fff5 fff5fff5 fff5fff5 fff5fff5 (00000000) + vspltish: 22 => fff6fff6 fff6fff6 fff6fff6 fff6fff6 (00000000) + vspltish: 23 => fff7fff7 fff7fff7 fff7fff7 fff7fff7 (00000000) + vspltish: 24 => fff8fff8 fff8fff8 fff8fff8 fff8fff8 (00000000) + vspltish: 25 => fff9fff9 fff9fff9 fff9fff9 fff9fff9 (00000000) + vspltish: 26 => fffafffa fffafffa fffafffa fffafffa (00000000) + vspltish: 27 => fffbfffb fffbfffb fffbfffb fffbfffb (00000000) + vspltish: 28 => fffcfffc fffcfffc fffcfffc fffcfffc (00000000) + vspltish: 29 => fffdfffd fffdfffd fffdfffd fffdfffd (00000000) + vspltish: 30 => fffefffe fffefffe fffefffe fffefffe (00000000) + vspltish: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vspltisw: 0 => 00000000 00000000 00000000 00000000 (00000000) + vspltisw: 1 => 00000001 00000001 00000001 00000001 (00000000) + vspltisw: 2 => 00000002 00000002 00000002 00000002 (00000000) + vspltisw: 3 => 00000003 00000003 00000003 00000003 (00000000) + vspltisw: 4 => 00000004 00000004 00000004 00000004 (00000000) + vspltisw: 5 => 00000005 00000005 00000005 00000005 (00000000) + vspltisw: 6 => 00000006 00000006 00000006 00000006 (00000000) + vspltisw: 7 => 00000007 00000007 00000007 00000007 (00000000) + vspltisw: 8 => 00000008 00000008 00000008 00000008 (00000000) + vspltisw: 9 => 00000009 00000009 00000009 00000009 (00000000) + vspltisw: 10 => 0000000a 0000000a 0000000a 0000000a (00000000) + vspltisw: 11 => 0000000b 0000000b 0000000b 0000000b (00000000) + vspltisw: 12 => 0000000c 0000000c 0000000c 0000000c (00000000) + vspltisw: 13 => 0000000d 0000000d 0000000d 0000000d (00000000) + vspltisw: 14 => 0000000e 0000000e 0000000e 0000000e (00000000) + vspltisw: 15 => 0000000f 0000000f 0000000f 0000000f (00000000) + vspltisw: 16 => fffffff0 fffffff0 fffffff0 fffffff0 (00000000) + vspltisw: 17 => fffffff1 fffffff1 fffffff1 fffffff1 (00000000) + vspltisw: 18 => fffffff2 fffffff2 fffffff2 fffffff2 (00000000) + vspltisw: 19 => fffffff3 fffffff3 fffffff3 fffffff3 (00000000) + vspltisw: 20 => fffffff4 fffffff4 fffffff4 fffffff4 (00000000) + vspltisw: 21 => fffffff5 fffffff5 fffffff5 fffffff5 (00000000) + vspltisw: 22 => fffffff6 fffffff6 fffffff6 fffffff6 (00000000) + vspltisw: 23 => fffffff7 fffffff7 fffffff7 fffffff7 (00000000) + vspltisw: 24 => fffffff8 fffffff8 fffffff8 fffffff8 (00000000) + vspltisw: 25 => fffffff9 fffffff9 fffffff9 fffffff9 (00000000) + vspltisw: 26 => fffffffa fffffffa fffffffa fffffffa (00000000) + vspltisw: 27 => fffffffb fffffffb fffffffb fffffffb (00000000) + vspltisw: 28 => fffffffc fffffffc fffffffc fffffffc (00000000) + vspltisw: 29 => fffffffd fffffffd fffffffd fffffffd (00000000) + vspltisw: 30 => fffffffe fffffffe fffffffe fffffffe (00000000) + vspltisw: 31 => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsldoi: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 0 + vsldoi: => 01020304 05060708 090a0b0c 0e0d0e0f] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, 0102030405060708090a0b0c0e0d0e0f, 14 + vsldoi: => 0e0f0102 03040506 0708090a 0b0c0e0d] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0 + vsldoi: => 01020304 05060708 090a0b0c 0e0d0e0f] (00000000) + vsldoi: 0102030405060708090a0b0c0e0d0e0f, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 14 + vsldoi: => 0e0ff1f2 f3f4f5f6 f7f8f9fa fbfcfefd] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 0 + vsldoi: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0102030405060708090a0b0c0e0d0e0f, 14 + vsldoi: => feff0102 03040506 0708090a 0b0c0e0d] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 0 + vsldoi: => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff] (00000000) + vsldoi: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, f1f2f3f4f5f6f7f8f9fafbfcfefdfeff, 14 + vsldoi: => fefff1f2 f3f4f5f6 f7f8f9fa fbfcfefd] (00000000) + + lvsl -1, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsl 0, 0 => 00010203 04050607 08090a0b 0c0d0e0f (00000000) + lvsl 1, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsl 2, 0 => 02030405 06070809 0a0b0c0d 0e0f1011 (00000000) + lvsl 3, 0 => 03040506 0708090a 0b0c0d0e 0f101112 (00000000) + lvsl 4, 0 => 04050607 08090a0b 0c0d0e0f 10111213 (00000000) + lvsl 5, 0 => 05060708 090a0b0c 0d0e0f10 11121314 (00000000) + lvsl 6, 0 => 06070809 0a0b0c0d 0e0f1011 12131415 (00000000) + lvsl 7, 0 => 0708090a 0b0c0d0e 0f101112 13141516 (00000000) + lvsl 8, 0 => 08090a0b 0c0d0e0f 10111213 14151617 (00000000) + lvsl 9, 0 => 090a0b0c 0d0e0f10 11121314 15161718 (00000000) + lvsl 10, 0 => 0a0b0c0d 0e0f1011 12131415 16171819 (00000000) + lvsl 11, 0 => 0b0c0d0e 0f101112 13141516 1718191a (00000000) + lvsl 12, 0 => 0c0d0e0f 10111213 14151617 18191a1b (00000000) + lvsl 13, 0 => 0d0e0f10 11121314 15161718 191a1b1c (00000000) + lvsl 14, 0 => 0e0f1011 12131415 16171819 1a1b1c1d (00000000) + lvsl 15, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsl 16, 0 => 00010203 04050607 08090a0b 0c0d0e0f (00000000) + + lvsr -1, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsr 0, 0 => 10111213 14151617 18191a1b 1c1d1e1f (00000000) + lvsr 1, 0 => 0f101112 13141516 1718191a 1b1c1d1e (00000000) + lvsr 2, 0 => 0e0f1011 12131415 16171819 1a1b1c1d (00000000) + lvsr 3, 0 => 0d0e0f10 11121314 15161718 191a1b1c (00000000) + lvsr 4, 0 => 0c0d0e0f 10111213 14151617 18191a1b (00000000) + lvsr 5, 0 => 0b0c0d0e 0f101112 13141516 1718191a (00000000) + lvsr 6, 0 => 0a0b0c0d 0e0f1011 12131415 16171819 (00000000) + lvsr 7, 0 => 090a0b0c 0d0e0f10 11121314 15161718 (00000000) + lvsr 8, 0 => 08090a0b 0c0d0e0f 10111213 14151617 (00000000) + lvsr 9, 0 => 0708090a 0b0c0d0e 0f101112 13141516 (00000000) + lvsr 10, 0 => 06070809 0a0b0c0d 0e0f1011 12131415 (00000000) + lvsr 11, 0 => 05060708 090a0b0c 0d0e0f10 11121314 (00000000) + lvsr 12, 0 => 04050607 08090a0b 0c0d0e0f 10111213 (00000000) + lvsr 13, 0 => 03040506 0708090a 0b0c0d0e 0f101112 (00000000) + lvsr 14, 0 => 02030405 06070809 0a0b0c0d 0e0f1011 (00000000) + lvsr 15, 0 => 01020304 05060708 090a0b0c 0d0e0f10 (00000000) + lvsr 16, 0 => 10111213 14151617 18191a1b 1c1d1e1f (00000000) + +Altivec load insns with two register args: + lvebx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000000 00000000 00000000 (00000000) + lvebx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000008 00000000 00000000 (00000000) + lvebx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 00000e00 (00000000) + lvebx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 00000000 00000000 00000000 (00000000) + lvebx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 000000f8 00000000 00000000 (00000000) + lvebx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 0000fe00 (00000000) + + lvehx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000000 00000000 00000000 (00000000) + lvehx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000708 00000000 00000000 (00000000) + lvehx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 00000e0f (00000000) + lvehx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 00000000 00000000 00000000 (00000000) + lvehx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 0000f7f8 00000000 00000000 (00000000) + lvehx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 0000feff (00000000) + + lvewx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 00000000 00000000 00000000 (00000000) + lvewx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 05060708 00000000 00000000 (00000000) + lvewx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 00000000 00000000 00000000 0e0d0e0f (00000000) + lvewx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 00000000 00000000 00000000 (00000000) + lvewx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 f5f6f7f8 00000000 00000000 (00000000) + lvewx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => 00000000 00000000 00000000 fefdfeff (00000000) + + lvx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + lvxl 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + lvxl 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvxl 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + lvxl 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +Altivec store insns with three register args: + stvebx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000000 00000000 00000000 (00000000) + stvebx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000008 00000000 00000000 (00000000) + stvebx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01000000 00000008 00000000 00000e00 (00000000) + stvebx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 00000000 00000000 00000000 (00000000) + stvebx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 000000f8 00000000 00000000 (00000000) + stvebx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1000000 000000f8 00000000 0000fe00 (00000000) + + stvehx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000000 00000000 00000000 (00000000) + stvehx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000708 00000000 00000000 (00000000) + stvehx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020000 00000708 00000000 00000e0f (00000000) + stvehx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 00000000 00000000 00000000 (00000000) + stvehx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 0000f7f8 00000000 00000000 (00000000) + stvehx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f20000 0000f7f8 00000000 0000feff (00000000) + + stvewx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 00000000 00000000 00000000 (00000000) + stvewx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 00000000 00000000 (00000000) + stvewx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 00000000 0e0d0e0f (00000000) + stvewx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 00000000 00000000 00000000 (00000000) + stvewx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 00000000 00000000 (00000000) + stvewx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 00000000 fefdfeff (00000000) + + stvx 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvx 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvx 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvx 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + + stvxl 0, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 7, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 14, 01020304 05060708 090a0b0c 0e0d0e0f => 01020304 05060708 090a0b0c 0e0d0e0f (00000000) + stvxl 0, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvxl 7, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + stvxl 14, f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff => f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff (00000000) + +Altivec floating point arith insns with three args: +Altivec floating point arith insns with two args: + vaddfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 033fffff 033fffff 033fffff 033fffff (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 00000000 00000000 00000000 00000000 (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 00000000 00000000 00000000 00000000 (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d1bfffff d1bfffff d1bfffff d1bfffff (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vaddfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vaddfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vaddfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vaddfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vaddfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vaddfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vaddfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vaddfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vsubfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 00000000 00000000 00000000 00000000 (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 51bfffff 51bfffff 51bfffff 51bfffff (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 833fffff 833fffff 833fffff 833fffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 00000000 00000000 00000000 00000000 (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vsubfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vsubfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vsubfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vsubfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vsubfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vsubfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vsubfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vsubfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vsubfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 00000000 00000000 00000000 00000000 (00000000) + vmaxfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 80000000 80000000 80000000 80000000 (00000000) + vmaxfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vmaxfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vmaxfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vmaxfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vminfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vminfp: => 513fffff 513fffff 513fffff 513fffff (00000000) + vminfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 82bfffff 82bfffff 82bfffff 82bfffff (00000000) + vminfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 00000000 00000000 00000000 00000000 (00000000) + vminfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vminfp: => 00000000 00000000 00000000 00000000 (00000000) + vminfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 80000000 80000000 80000000 80000000 (00000000) + vminfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vminfp: => 80000000 80000000 80000000 80000000 (00000000) + vminfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 02bfffff 02bfffff 02bfffff 02bfffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vminfp: => d13fffff d13fffff d13fffff d13fffff (00000000) + vminfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vminfp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vminfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vminfp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vminfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vminfp: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vminfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vminfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + +Altivec floating point arith insns with one arg: + vrfin: 02bfffff 02bfffff 02bfffff 02bfffff + vrfin: => 00000000 00000000 00000000 00000000 (00000000) + vrfin: 513fffff 513fffff 513fffff 513fffff + vrfin: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfin: 82bfffff 82bfffff 82bfffff 82bfffff + vrfin: => 80000000 80000000 80000000 80000000 (00000000) + vrfin: d13fffff d13fffff d13fffff d13fffff + vrfin: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfin: 00000000 00000000 00000000 00000000 + vrfin: => 00000000 00000000 00000000 00000000 (00000000) + vrfin: 80000000 80000000 80000000 80000000 + vrfin: => 80000000 80000000 80000000 80000000 (00000000) + vrfin: 7f800000 7f800000 7f800000 7f800000 + vrfin: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfin: ff800000 ff800000 ff800000 ff800000 + vrfin: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfin: 7fffffff 7fffffff 7fffffff 7fffffff + vrfin: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfin: ffffffff ffffffff ffffffff ffffffff + vrfin: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfin: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfin: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfin: ffbfffff ffbfffff ffbfffff ffbfffff + vrfin: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfiz: 02bfffff 02bfffff 02bfffff 02bfffff + vrfiz: => 00000000 00000000 00000000 00000000 (00000000) + vrfiz: 513fffff 513fffff 513fffff 513fffff + vrfiz: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfiz: 82bfffff 82bfffff 82bfffff 82bfffff + vrfiz: => 80000000 80000000 80000000 80000000 (00000000) + vrfiz: d13fffff d13fffff d13fffff d13fffff + vrfiz: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfiz: 00000000 00000000 00000000 00000000 + vrfiz: => 00000000 00000000 00000000 00000000 (00000000) + vrfiz: 80000000 80000000 80000000 80000000 + vrfiz: => 80000000 80000000 80000000 80000000 (00000000) + vrfiz: 7f800000 7f800000 7f800000 7f800000 + vrfiz: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfiz: ff800000 ff800000 ff800000 ff800000 + vrfiz: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfiz: 7fffffff 7fffffff 7fffffff 7fffffff + vrfiz: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfiz: ffffffff ffffffff ffffffff ffffffff + vrfiz: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfiz: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfiz: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfiz: ffbfffff ffbfffff ffbfffff ffbfffff + vrfiz: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfip: 02bfffff 02bfffff 02bfffff 02bfffff + vrfip: => 3f800000 3f800000 3f800000 3f800000 (00000000) + vrfip: 513fffff 513fffff 513fffff 513fffff + vrfip: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfip: 82bfffff 82bfffff 82bfffff 82bfffff + vrfip: => 80000000 80000000 80000000 80000000 (00000000) + vrfip: d13fffff d13fffff d13fffff d13fffff + vrfip: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfip: 00000000 00000000 00000000 00000000 + vrfip: => 00000000 00000000 00000000 00000000 (00000000) + vrfip: 80000000 80000000 80000000 80000000 + vrfip: => 80000000 80000000 80000000 80000000 (00000000) + vrfip: 7f800000 7f800000 7f800000 7f800000 + vrfip: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfip: ff800000 ff800000 ff800000 ff800000 + vrfip: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfip: 7fffffff 7fffffff 7fffffff 7fffffff + vrfip: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfip: ffffffff ffffffff ffffffff ffffffff + vrfip: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfip: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfip: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfip: ffbfffff ffbfffff ffbfffff ffbfffff + vrfip: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrfim: 02bfffff 02bfffff 02bfffff 02bfffff + vrfim: => 00000000 00000000 00000000 00000000 (00000000) + vrfim: 513fffff 513fffff 513fffff 513fffff + vrfim: => 513fffff 513fffff 513fffff 513fffff (00000000) + vrfim: 82bfffff 82bfffff 82bfffff 82bfffff + vrfim: => bf800000 bf800000 bf800000 bf800000 (00000000) + vrfim: d13fffff d13fffff d13fffff d13fffff + vrfim: => d13fffff d13fffff d13fffff d13fffff (00000000) + vrfim: 00000000 00000000 00000000 00000000 + vrfim: => 00000000 00000000 00000000 00000000 (00000000) + vrfim: 80000000 80000000 80000000 80000000 + vrfim: => 80000000 80000000 80000000 80000000 (00000000) + vrfim: 7f800000 7f800000 7f800000 7f800000 + vrfim: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrfim: ff800000 ff800000 ff800000 ff800000 + vrfim: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrfim: 7fffffff 7fffffff 7fffffff 7fffffff + vrfim: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfim: ffffffff ffffffff ffffffff ffffffff + vrfim: => ffffffff ffffffff ffffffff ffffffff (00000000) + vrfim: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrfim: => 7fffffff 7fffffff 7fffffff 7fffffff (00000000) + vrfim: ffbfffff ffbfffff ffbfffff ffbfffff + vrfim: => ffffffff ffffffff ffffffff ffffffff (00000000) + + vrefp: 02bfffff 02bfffff 02bfffff 02bfffff + vrefp: => 7c2aa900 7c2aa900 7c2aa900 7c2aa900 (00000000) + vrefp: 513fffff 513fffff 513fffff 513fffff + vrefp: => 2daaa900 2daaa900 2daaa900 2daaa900 (00000000) + vrefp: 82bfffff 82bfffff 82bfffff 82bfffff + vrefp: => fc2aa900 fc2aa900 fc2aa900 fc2aa900 (00000000) + vrefp: d13fffff d13fffff d13fffff d13fffff + vrefp: => adaaa900 adaaa900 adaaa900 adaaa900 (00000000) + vrefp: 00000000 00000000 00000000 00000000 + vrefp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrefp: 80000000 80000000 80000000 80000000 + vrefp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrefp: 7f800000 7f800000 7f800000 7f800000 + vrefp: => 00000000 00000000 00000000 00000000 (00000000) + vrefp: ff800000 ff800000 ff800000 ff800000 + vrefp: => 80000000 80000000 80000000 80000000 (00000000) + vrefp: 7fffffff 7fffffff 7fffffff 7fffffff + vrefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrefp: ffffffff ffffffff ffffffff ffffffff + vrefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + vrefp: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrefp: ffbfffff ffbfffff ffbfffff ffbfffff + vrefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + + vrsqrtefp: 02bfffff 02bfffff 02bfffff 02bfffff + vrsqrtefp: => 5dd10300 5dd10300 5dd10300 5dd10300 (00000000) + vrsqrtefp: 513fffff 513fffff 513fffff 513fffff + vrsqrtefp: => 3693ca00 3693ca00 3693ca00 3693ca00 (00000000) + vrsqrtefp: 82bfffff 82bfffff 82bfffff 82bfffff + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: d13fffff d13fffff d13fffff d13fffff + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: 00000000 00000000 00000000 00000000 + vrsqrtefp: => 7f800000 7f800000 7f800000 7f800000 (00000000) + vrsqrtefp: 80000000 80000000 80000000 80000000 + vrsqrtefp: => ff800000 ff800000 ff800000 ff800000 (00000000) + vrsqrtefp: 7f800000 7f800000 7f800000 7f800000 + vrsqrtefp: => 00000000 00000000 00000000 00000000 (00000000) + vrsqrtefp: ff800000 ff800000 ff800000 ff800000 + vrsqrtefp: => 7fc00000 7fc00000 7fc00000 7fc00000 (00000000) + vrsqrtefp: 7fffffff 7fffffff 7fffffff 7fffffff + vrsqrtefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrsqrtefp: ffffffff ffffffff ffffffff ffffffff + vrsqrtefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + vrsqrtefp: 7fbfffff 7fbfffff 7fbfffff 7fbfffff + vrsqrtefp: => 7fffff00 7fffff00 7fffff00 7fffff00 (00000000) + vrsqrtefp: ffbfffff ffbfffff ffbfffff ffbfffff + vrsqrtefp: => ffffff00 ffffff00 ffffff00 ffffff00 (00000000) + +Altivec floating point compare insns: + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgtfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpeqfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpeqfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => ffffffff ffffffff ffffffff ffffffff (00000000) + vcmpgefp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpgefp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp: => 00000000 00000000 00000000 00000000 (00000000) + + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpbfp: => 00000000 00000000 00000000 00000000 (00000000) + vcmpbfp: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp: => c0000000 c0000000 c0000000 c0000000 (00000000) + +Altivec floating point compare insns with flags update: + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgtfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgtfp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpeqfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpeqfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpeqfp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => ffffffff ffffffff ffffffff ffffffff (00000080) + vcmpgefp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpgefp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpgefp.: => 00000000 00000000 00000000 00000000 (00000020) + + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 02bfffff02bfffff02bfffff02bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 513fffff513fffff513fffff513fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 513fffff513fffff513fffff513fffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 82bfffff82bfffff82bfffff82bfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: d13fffffd13fffffd13fffffd13fffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 00000000000000000000000000000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 00000000000000000000000000000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 00000000000000000000000000000000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 00000000000000000000000000000000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 80000000800000008000000080000000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 80000000800000008000000080000000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 80000000800000008000000080000000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 80000000800000008000000080000000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 80000000 80000000 80000000 80000000 (00000000) + vcmpbfp.: 7f8000007f8000007f8000007f800000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: 7f8000007f8000007f8000007f800000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => 40000000 40000000 40000000 40000000 (00000000) + vcmpbfp.: ff800000ff800000ff800000ff800000, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => 00000000 00000000 00000000 00000000 (00000020) + vcmpbfp.: ff800000ff800000ff800000ff800000, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fffffff7fffffff7fffffff7fffffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffffffffffffffffffffffffffffffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: 7fbfffff7fbfffff7fbfffff7fbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, 02bfffff02bfffff02bfffff02bfffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, d13fffffd13fffffd13fffffd13fffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, 7f8000007f8000007f8000007f800000 + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + vcmpbfp.: ffbfffffffbfffffffbfffffffbfffff, ffffffffffffffffffffffffffffffff + vcmpbfp.: => c0000000 c0000000 c0000000 c0000000 (00000000) + +Altivec float special insns: + vcfux: 02bfffff ( 2.821186e-37), 0 => 4c300000 ( 4.613734e+07) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 9 => 47b00000 ( 9.011200e+04) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 18 => 43300000 ( 1.760000e+02) (00000000) + vcfux: 02bfffff ( 2.821186e-37), 27 => 3eb00000 ( 3.437500e-01) (00000000) + vcfux: 513fffff ( 5.153960e+10), 0 => 4ea28000 ( 1.363149e+09) (00000000) + vcfux: 513fffff ( 5.153960e+10), 9 => 4a228000 ( 2.662400e+06) (00000000) + vcfux: 513fffff ( 5.153960e+10), 18 => 45a28000 ( 5.200000e+03) (00000000) + vcfux: 513fffff ( 5.153960e+10), 27 => 41228000 ( 1.015625e+01) (00000000) + vcfux: 82bfffff (-2.821186e-37), 0 => 4f02c000 ( 2.193621e+09) (00000000) + vcfux: 82bfffff (-2.821186e-37), 9 => 4a82c000 ( 4.284416e+06) (00000000) + vcfux: 82bfffff (-2.821186e-37), 18 => 4602c000 ( 8.368000e+03) (00000000) + vcfux: 82bfffff (-2.821186e-37), 27 => 4182c000 ( 1.634375e+01) (00000000) + vcfux: d13fffff (-5.153960e+10), 0 => 4f514000 ( 3.510632e+09) (00000000) + vcfux: d13fffff (-5.153960e+10), 9 => 4ad14000 ( 6.856704e+06) (00000000) + vcfux: d13fffff (-5.153960e+10), 18 => 46514000 ( 1.339200e+04) (00000000) + vcfux: d13fffff (-5.153960e+10), 27 => 41d14000 ( 2.615625e+01) (00000000) + vcfux: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vcfux: 80000000 (-0.000000e+00), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfux: 80000000 (-0.000000e+00), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfux: 80000000 (-0.000000e+00), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfux: 80000000 (-0.000000e+00), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfux: 7f800000 ( inf), 0 => 4eff0000 ( 2.139095e+09) (00000000) + vcfux: 7f800000 ( inf), 9 => 4a7f0000 ( 4.177920e+06) (00000000) + vcfux: 7f800000 ( inf), 18 => 45ff0000 ( 8.160000e+03) (00000000) + vcfux: 7f800000 ( inf), 27 => 417f0000 ( 1.593750e+01) (00000000) + vcfux: ff800000 ( -inf), 0 => 4f7f8000 ( 4.286579e+09) (00000000) + vcfux: ff800000 ( -inf), 9 => 4aff8000 ( 8.372224e+06) (00000000) + vcfux: ff800000 ( -inf), 18 => 467f8000 ( 1.635200e+04) (00000000) + vcfux: ff800000 ( -inf), 27 => 41ff8000 ( 3.193750e+01) (00000000) + vcfux: 7fffffff ( nan), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfux: 7fffffff ( nan), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfux: 7fffffff ( nan), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfux: 7fffffff ( nan), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfux: ffffffff ( -nan), 0 => 4f800000 ( 4.294967e+09) (00000000) + vcfux: ffffffff ( -nan), 9 => 4b000000 ( 8.388608e+06) (00000000) + vcfux: ffffffff ( -nan), 18 => 46800000 ( 1.638400e+04) (00000000) + vcfux: ffffffff ( -nan), 27 => 42000000 ( 3.200000e+01) (00000000) + vcfux: 7fbfffff ( nan), 0 => 4eff8000 ( 2.143289e+09) (00000000) + vcfux: 7fbfffff ( nan), 9 => 4a7f8000 ( 4.186112e+06) (00000000) + vcfux: 7fbfffff ( nan), 18 => 45ff8000 ( 8.176000e+03) (00000000) + vcfux: 7fbfffff ( nan), 27 => 417f8000 ( 1.596875e+01) (00000000) + vcfux: ffbfffff ( -nan), 0 => 4f7fc000 ( 4.290773e+09) (00000000) + vcfux: ffbfffff ( -nan), 9 => 4affc000 ( 8.380416e+06) (00000000) + vcfux: ffbfffff ( -nan), 18 => 467fc000 ( 1.636800e+04) (00000000) + vcfux: ffbfffff ( -nan), 27 => 41ffc000 ( 3.196875e+01) (00000000) + + vcfsx: 02bfffff ( 2.821186e-37), 0 => 4c300000 ( 4.613734e+07) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 9 => 47b00000 ( 9.011200e+04) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 18 => 43300000 ( 1.760000e+02) (00000000) + vcfsx: 02bfffff ( 2.821186e-37), 27 => 3eb00000 ( 3.437500e-01) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 0 => 4ea28000 ( 1.363149e+09) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 9 => 4a228000 ( 2.662400e+06) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 18 => 45a28000 ( 5.200000e+03) (00000000) + vcfsx: 513fffff ( 5.153960e+10), 27 => 41228000 ( 1.015625e+01) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 0 => cefa8000 (-2.101346e+09) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 9 => ca7a8000 (-4.104192e+06) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 18 => c5fa8000 (-8.016000e+03) (00000000) + vcfsx: 82bfffff (-2.821186e-37), 27 => c17a8000 (-1.565625e+01) (00000000) + vcfsx: d13fffff (-5.153960e+10), 0 => ce3b0000 (-7.843348e+08) (00000000) + vcfsx: d13fffff (-5.153960e+10), 9 => c9bb0000 (-1.531904e+06) (00000000) + vcfsx: d13fffff (-5.153960e+10), 18 => c53b0000 (-2.992000e+03) (00000000) + vcfsx: d13fffff (-5.153960e+10), 27 => c0bb0000 (-5.843750e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vcfsx: 80000000 (-0.000000e+00), 0 => cf000000 (-2.147484e+09) (00000000) + vcfsx: 80000000 (-0.000000e+00), 9 => ca800000 (-4.194304e+06) (00000000) + vcfsx: 80000000 (-0.000000e+00), 18 => c6000000 (-8.192000e+03) (00000000) + vcfsx: 80000000 (-0.000000e+00), 27 => c1800000 (-1.600000e+01) (00000000) + vcfsx: 7f800000 ( inf), 0 => 4eff0000 ( 2.139095e+09) (00000000) + vcfsx: 7f800000 ( inf), 9 => 4a7f0000 ( 4.177920e+06) (00000000) + vcfsx: 7f800000 ( inf), 18 => 45ff0000 ( 8.160000e+03) (00000000) + vcfsx: 7f800000 ( inf), 27 => 417f0000 ( 1.593750e+01) (00000000) + vcfsx: ff800000 ( -inf), 0 => cb000000 (-8.388608e+06) (00000000) + vcfsx: ff800000 ( -inf), 9 => c6800000 (-1.638400e+04) (00000000) + vcfsx: ff800000 ( -inf), 18 => c2000000 (-3.200000e+01) (00000000) + vcfsx: ff800000 ( -inf), 27 => bd800000 (-6.250000e-02) (00000000) + vcfsx: 7fffffff ( nan), 0 => 4f000000 ( 2.147484e+09) (00000000) + vcfsx: 7fffffff ( nan), 9 => 4a800000 ( 4.194304e+06) (00000000) + vcfsx: 7fffffff ( nan), 18 => 46000000 ( 8.192000e+03) (00000000) + vcfsx: 7fffffff ( nan), 27 => 41800000 ( 1.600000e+01) (00000000) + vcfsx: ffffffff ( -nan), 0 => bf800000 (-1.000000e+00) (00000000) + vcfsx: ffffffff ( -nan), 9 => bb000000 (-1.953125e-03) (00000000) + vcfsx: ffffffff ( -nan), 18 => b6800000 (-3.814697e-06) (00000000) + vcfsx: ffffffff ( -nan), 27 => b2000000 (-7.450581e-09) (00000000) + vcfsx: 7fbfffff ( nan), 0 => 4eff8000 ( 2.143289e+09) (00000000) + vcfsx: 7fbfffff ( nan), 9 => 4a7f8000 ( 4.186112e+06) (00000000) + vcfsx: 7fbfffff ( nan), 18 => 45ff8000 ( 8.176000e+03) (00000000) + vcfsx: 7fbfffff ( nan), 27 => 417f8000 ( 1.596875e+01) (00000000) + vcfsx: ffbfffff ( -nan), 0 => ca800002 (-4.194305e+06) (00000000) + vcfsx: ffbfffff ( -nan), 9 => c6000002 (-8.192002e+03) (00000000) + vcfsx: ffbfffff ( -nan), 18 => c1800002 (-1.600000e+01) (00000000) + vcfsx: ffbfffff ( -nan), 27 => bd000002 (-3.125001e-02) (00000000) + + vctuxs: 02bfffff ( 2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 02bfffff ( 2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 0 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 9 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 18 => ffffffff ( -nan) (00000000) + vctuxs: 513fffff ( 5.153960e+10), 27 => ffffffff ( -nan) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 82bfffff (-2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: d13fffff (-5.153960e+10), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 80000000 (-0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7f800000 ( inf), 0 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 9 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 18 => ffffffff ( -nan) (00000000) + vctuxs: 7f800000 ( inf), 27 => ffffffff ( -nan) (00000000) + vctuxs: ff800000 ( -inf), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ff800000 ( -inf), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fffffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffffffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: 7fbfffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctuxs: ffbfffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + + vctsxs: 02bfffff ( 2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 02bfffff ( 2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 0 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 9 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 18 => 7fffffff ( nan) (00000000) + vctsxs: 513fffff ( 5.153960e+10), 27 => 7fffffff ( nan) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 82bfffff (-2.821186e-37), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 0 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 9 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 18 => 80000000 (-0.000000e+00) (00000000) + vctsxs: d13fffff (-5.153960e+10), 27 => 80000000 (-0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 00000000 ( 0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 80000000 (-0.000000e+00), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7f800000 ( inf), 0 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 9 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 18 => 7fffffff ( nan) (00000000) + vctsxs: 7f800000 ( inf), 27 => 7fffffff ( nan) (00000000) + vctsxs: ff800000 ( -inf), 0 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 9 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 18 => 80000000 (-0.000000e+00) (00000000) + vctsxs: ff800000 ( -inf), 27 => 80000000 (-0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fffffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffffffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: 7fbfffff ( nan), 27 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 0 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 9 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 18 => 00000000 ( 0.000000e+00) (00000000) + vctsxs: ffbfffff ( -nan), 27 => 00000000 ( 0.000000e+00) (00000000) + +All done. Tested 163 different instructions diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.vgtest index 0f32c0d2b..183536b56 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/jm-vmx.vgtest @@ -1 +1,2 @@ +prereq: ../../../tests/check_vmx_cap prog: jm-insns -a diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.c new file mode 100644 index 000000000..31377431b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.c @@ -0,0 +1,73 @@ +/* Copyright (C) 2007 IBM + + Author: Pete Eberlein eberlein@us.ibm.com + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + + +#include +#include +#include + +#define CMPB(result,a,b) \ + asm ("cmpb %0, %1, %2\n" : "=r"(result) : "r"(a), "r"(b)) + + +int main(int argc, char *argv[]) +{ + int i, j, k; + unsigned long mask; + for (i = 1; i < 256; i++) { + mask = 0; + if (i & 1) + mask += 0xff; + if (i & 2) + mask += 0xff00; + if (i & 4) + mask += 0xff0000; + if (i & 8) + mask += 0xff000000; + if (i & 16) + mask += 0xff00000000; + if (i & 32) + mask += 0xff0000000000; + if (i & 64) + mask += 0xff000000000000; + if (i & 128) + mask += 0xff00000000000000; + + for (j = 0; j < 256; j++) + for (k = 0; k < 256; k++) + if (j != k) { + + unsigned long a, b, result; + a = (mask & (j * 0x101010101010101)) + + ((~mask) & (k * 0x101010101010101)); + b = j * 0x101010101010101; + CMPB(result, a, b); + if (result != mask) { + printf("%8lx %8lx %8lx %8lx\n", mask, a, b, result); + exit(1); + } + } + + } + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.vgtest new file mode 100644 index 000000000..28146c0ff --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_bcmp.vgtest @@ -0,0 +1 @@ +prog: power6_bcmp diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.c new file mode 100644 index 000000000..ba4bf4d7c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.c @@ -0,0 +1,49 @@ +/* Copyright (C) 2007 IBM + + Author: Pete Eberlein eberlein@us.ibm.com + + 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. + + The GNU General Public License is contained in the file COPYING. +*/ + +#include +#include + + + +int main(int argc, char *argv[]) +{ + + long i; + double f; + + i = 0; + f = 100.0; + + printf("%lx %f\n", i, f); + + asm("mftgpr %0, %1\n": "=r"(i):"f"(f)); + + f = 0.0; + printf("%lx %f\n", i, f); + + asm("mffgpr %0, %1\n": "=f"(f):"r"(i)); + + printf("%lx %f\n", i, f); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stdout.exp new file mode 100644 index 000000000..7bc827dd2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.stdout.exp @@ -0,0 +1,3 @@ +0 100.000000 +4059000000000000 0.000000 +4059000000000000 100.000000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.vgtest new file mode 100644 index 000000000..5868fe66e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/power6_mf_gpr.vgtest @@ -0,0 +1 @@ +prog: power6_mf_gpr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.c new file mode 100644 index 000000000..9138f4ad3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.c @@ -0,0 +1,2189 @@ +/* Copyright (C) 2011 IBM + + Author: Maynard Johnson + + 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. + + The GNU General Public License is contained in the file COPYING. + */ + +#ifdef HAS_VSX + +#include +#include +#include +#include +#include +#include + +#ifndef __powerpc64__ +typedef uint32_t HWord_t; +#else +typedef uint64_t HWord_t; +#endif /* __powerpc64__ */ + +static int errors; +register HWord_t r14 __asm__ ("r14"); +register HWord_t r15 __asm__ ("r15"); +register HWord_t r16 __asm__ ("r16"); +register HWord_t r17 __asm__ ("r17"); +register double f14 __asm__ ("fr14"); +register double f15 __asm__ ("fr15"); +register double f16 __asm__ ("fr16"); +register double f17 __asm__ ("fr17"); + +static volatile unsigned int cond_reg; + +#define ALLCR "cr0","cr1","cr2","cr3","cr4","cr5","cr6","cr7" + +#define SET_CR(_arg) \ + __asm__ __volatile__ ("mtcr %0" : : "b"(_arg) : ALLCR ); + +#define SET_XER(_arg) \ + __asm__ __volatile__ ("mtxer %0" : : "b"(_arg) : "xer" ); + +#define GET_CR(_lval) \ + __asm__ __volatile__ ("mfcr %0" : "=b"(_lval) ) + +#define GET_XER(_lval) \ + __asm__ __volatile__ ("mfxer %0" : "=b"(_lval) ) + +#define GET_CR_XER(_lval_cr,_lval_xer) \ + do { GET_CR(_lval_cr); GET_XER(_lval_xer); } while (0) + +#define SET_CR_ZERO \ + SET_CR(0) + +#define SET_XER_ZERO \ + SET_XER(0) + +#define SET_CR_XER_ZERO \ + do { SET_CR_ZERO; SET_XER_ZERO; } while (0) + +#define SET_FPSCR_ZERO \ + do { double _d = 0.0; \ + __asm__ __volatile__ ("mtfsf 0xFF, %0" : : "f"(_d) ); \ + } while (0) + + +typedef void (*test_func_t)(void); +typedef struct ldst_test ldst_test_t; +typedef struct vsx_logic_test logic_test_t; +typedef struct xs_conv_test xs_conv_test_t; +typedef struct p7_fp_test fp_test_t; +typedef struct vx_fp_test vx_fp_test_t; +typedef struct vsx_move_test move_test_t; +typedef struct vsx_permute_test permute_test_t; +typedef struct test_table test_table_t; + +static double *fargs = NULL; +static int nb_fargs; + +/* These functions below that construct a table of floating point + * values were lifted from none/tests/ppc32/jm-insns.c. + */ + +#if defined (DEBUG_ARGS_BUILD) +#define AB_DPRINTF(fmt, args...) do { fprintf(stderr, fmt , ##args); } while (0) +#else +#define AB_DPRINTF(fmt, args...) do { } while (0) +#endif + +static inline void register_farg (void *farg, + int s, uint16_t _exp, uint64_t mant) +{ + uint64_t tmp; + + tmp = ((uint64_t)s << 63) | ((uint64_t)_exp << 52) | mant; + *(uint64_t *)farg = tmp; + AB_DPRINTF("%d %03x %013llx => %016llx %0e\n", + s, _exp, mant, *(uint64_t *)farg, *(double *)farg); +} + +static void build_fargs_table(void) +/* + * Double precision: + * Sign goes from zero to one (1 bit) + * Exponent goes from 0 to ((1 << 12) - 1) (11 bits) + * Mantissa goes from 1 to ((1 << 52) - 1) (52 bits) + * + special values: + * +0.0 : 0 0x000 0x0000000000000 => 0x0000000000000000 + * -0.0 : 1 0x000 0x0000000000000 => 0x8000000000000000 + * +infinity : 0 0x7FF 0x0000000000000 => 0x7FF0000000000000 + * -infinity : 1 0x7FF 0x0000000000000 => 0xFFF0000000000000 + * +QNaN : 0 0x7FF 0x7FFFFFFFFFFFF => 0x7FF7FFFFFFFFFFFF + * -QNaN : 1 0x7FF 0x7FFFFFFFFFFFF => 0xFFF7FFFFFFFFFFFF + * +SNaN : 0 0x7FF 0x8000000000000 => 0x7FF8000000000000 + * -SNaN : 1 0x7FF 0x8000000000000 => 0xFFF8000000000000 + * (8 values) + * + * Single precision + * Sign: 1 bit + * Exponent: 8 bits + * Mantissa: 23 bits + * +0.0 : 0 0x00 0x000000 => 0x00000000 + * -0.0 : 1 0x00 0x000000 => 0x80000000 + * +infinity : 0 0xFF 0x000000 => 0x7F800000 + * -infinity : 1 0xFF 0x000000 => 0xFF800000 + * +QNaN : 0 0xFF 0x3FFFFF => 0x7FBFFFFF + * -QNaN : 1 0xFF 0x3FFFFF => 0xFFBFFFFF + * +SNaN : 0 0xFF 0x400000 => 0x7FC00000 + * -SNaN : 1 0xFF 0x400000 => 0xFFC00000 +*/ +{ + uint64_t mant; + uint16_t _exp, e1; + int s; + int i=0; + + if (nb_fargs) + return; + + fargs = malloc( 16 * sizeof(double) ); + for (s = 0; s < 2; s++) { + for (e1 = 0x001;; e1 = ((e1 + 1) << 13) + 7) { + if (e1 >= 0x400) + e1 = 0x3fe; + _exp = e1; + for (mant = 0x0000000000001ULL; mant < (1ULL << 52); + /* Add 'random' bits */ + mant = ((mant + 0x4A6) << 29) + 0x359) { + register_farg( &fargs[i++], s, _exp, mant ); + } + if (e1 == 0x3fe) + break; + } + } + // add a few smaller values to fargs . . . + s = 0; + _exp = 0x002; + mant = 0x0000000000b01ULL; + register_farg(&fargs[i++], s, _exp, mant); + + _exp = 0x000; + mant = 0x00000203f0b3dULL; + register_farg(&fargs[i++], s, _exp, mant); + + mant = 0x00000005a203dULL; + register_farg(&fargs[i++], s, _exp, mant); + + s = 1; + _exp = 0x002; + mant = 0x0000000000b01ULL; + register_farg(&fargs[i++], s, _exp, mant); + + _exp = 0x000; + mant = 0x00000203f0b3dULL; + register_farg(&fargs[i++], s, _exp, mant); + + nb_fargs = i; +} + + +typedef struct ftdiv_test { + int fra_idx; + int frb_idx; + int cr_flags; +} ftdiv_test_args_t; + +typedef struct fp_test_args { + int fra_idx; + int frb_idx; + int cr_flags; + unsigned long long dp_bin_result; +} fp_test_args_t; + +unsigned long long xscvuxddp_results[] = { + 0x43cfec0000000000ULL, + 0x43d013c000000000ULL, + 0x4338000000b77501ULL, + 0x43dffa0000000001ULL, + 0x4372321456990000ULL, + 0x0000000000000000ULL, + 0x43e0000000000000ULL, + 0x43dffc0000000000ULL, + 0x43effe0000000000ULL, + 0x43dffe0000000000ULL, + 0x43efff0000000000ULL, + 0x43dffe0000000000ULL, + 0x43efff0000000000ULL, + 0x43e00106800000f0ULL, + 0x43e81a0ca1eb40f6ULL +}; + +unsigned long long xscvsxddp_results[] = { + 0x43cfec0000000000ULL, + 0x43d013c000000000ULL, + 0x4338000000b77501ULL, + 0x43dffa0000000001ULL, + 0x4372321456990000ULL, + 0x0000000000000000ULL, + 0xc3e0000000000000ULL, + 0x43dffc0000000000ULL, + 0xc330000000000000ULL, + 0x43dffe0000000000ULL, + 0xc320000000000002ULL, + 0x43dffe0000000000ULL, + 0xc320000000000000ULL, + 0xc3dffdf2fffffe20ULL, + 0xc3cf97cd7852fc26ULL, +}; + +unsigned long long xscvdpsxds_results[] = { + 0x0000000000000000ULL, + 0x000000000000003eULL, + 0x0000000000000000ULL, + 0x7fffffffffffffffULL, + 0x0000000000000000ULL, + 0x0000000000000000ULL, + 0x0000000000000000ULL, + 0x7fffffffffffffffULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x8000000000000000ULL, + 0x0000000000000000ULL, + 0xffffffffffffbe6cULL +}; + +ftdiv_test_args_t ftdiv_tests[] = { + {0, 1, 0x8}, + {9, 1, 0xa}, + {1, 12, 0xa}, + {0, 2, 0xa}, + {1, 3, 0xa}, + {3, 0, 0xa}, + {0, 3, 0xa}, + {4, 0, 0xa}, + {7, 1, 0xe}, + {8, 1, 0xe}, + {1, 7, 0xe}, + {0, 13, 0xe}, + {5, 5, 0xe}, + {5, 6, 0xe}, +}; + +fp_test_args_t xscmpX_tests[] = { + {8, 8, 0x2, 0ULL}, + {8, 14, 0x8, 0ULL}, + {8, 6, 0x8, 0ULL}, + {8, 5, 0x8, 0ULL}, + {8, 4, 0x8, 0ULL}, + {8, 7, 0x8, 0ULL}, + {8, 9, 0x1, 0ULL}, + {8, 11, 0x1, 0ULL}, + {14, 8, 0x4, 0ULL}, + {14, 14, 0x2, 0ULL}, + {14, 6, 0x8, 0ULL}, + {14, 5, 0x8, 0ULL}, + {14, 4, 0x8, 0ULL}, + {14, 7, 0x8, 0ULL}, + {14, 9, 0x1, 0ULL}, + {14, 11, 0x1, 0ULL}, + {6, 8, 0x4, 0ULL}, + {6, 14, 0x4, 0ULL}, + {6, 6, 0x2, 0ULL}, + {6, 5, 0x2, 0ULL}, + {6, 4, 0x8, 0ULL}, + {6, 7, 0x8, 0ULL}, + {6, 9, 0x1, 0ULL}, + {6, 11, 0x1, 0ULL}, + {5, 8, 0x4, 0ULL}, + {5, 14, 0x4, 0ULL}, + {5, 6, 0x2, 0ULL}, + {5, 5, 0x2, 0ULL}, + {5, 4, 0x8, 0ULL}, + {5, 7, 0x8, 0ULL}, + {5, 9, 0x1, 0ULL}, + {5, 11, 0x1, 0ULL}, + {4, 8, 0x4, 0ULL}, + {4, 14, 0x4, 0ULL}, + {4, 6, 0x4, 0ULL}, + {4, 5, 0x4, 0ULL}, + {4, 1, 0x8, 0ULL}, + {4, 7, 0x8, 0ULL}, + {4, 9, 0x1, 0ULL}, + {4, 11, 0x1, 0ULL}, + {7, 8, 0x4, 0ULL}, + {7, 14, 0x4, 0ULL}, + {7, 6, 0x4, 0ULL}, + {7, 5, 0x4, 0ULL}, + {7, 4, 0x4, 0ULL}, + {7, 7, 0x2, 0ULL}, + {7, 9, 0x1, 0ULL}, + {7, 11, 0x1, 0ULL}, + {10, 8, 0x1, 0ULL}, + {10, 14, 0x1, 0ULL}, + {10, 6, 0x1, 0ULL}, + {10, 5, 0x1, 0ULL}, + {10, 4, 0x1, 0ULL}, + {10, 7, 0x1, 0ULL}, + {10, 9, 0x1, 0ULL}, + {10, 11, 0x1, 0ULL}, + {12, 8, 0x1, 0ULL}, + {12, 14, 0x1, 0ULL}, + {12, 6, 0x1, 0ULL}, + {12, 5, 0x1, 0ULL}, + {12, 4, 0x1, 0ULL}, + {12, 7, 0x1, 0ULL}, + {12, 9, 0x1, 0ULL}, + {12, 11, 0x1, 0ULL}, +}; + +fp_test_args_t xsadddp_tests[] = { + {8, 8, 0x0, 0xfff0000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0xfff0000000000000ULL}, + {14, 14, 0x0, 0xc0e0650f5a07b353ULL}, + {14, 6, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 5, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 4, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 7, 0x0, 0x7ff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0xfff0000000000000ULL}, + {6, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {6, 6, 0x0, 0x8000000000000000ULL}, + {6, 5, 0x0, 0x0000000000000000ULL}, + {6, 4, 0x0, 0x0123214569900000ULL}, + {6, 7, 0x0, 0x7ff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0xfff0000000000000ULL}, + {5, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0123214569900000ULL}, + {5, 7, 0x0, 0x7ff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {4, 6, 0x0, 0x0123214569900000ULL}, + {4, 5, 0x0, 0x0123214569900000ULL}, + {4, 1, 0x0, 0x404f000000000000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsdivdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x0000000000000000ULL}, + {14, 14, 0x0, 0x3ff0000000000000ULL}, + {14, 6, 0x0, 0x7ff0000000000000ULL}, + {14, 5, 0x0, 0xfff0000000000000ULL}, + {14, 4, 0x0, 0xff9b6cb57ca13c00ULL}, + {14, 7, 0x0, 0x8000000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x0000000000000000ULL}, + {6, 14, 0x0, 0x0000000000000000ULL}, + {6, 6, 0x0, 0x7ff8000000000000ULL}, + {6, 5, 0x0, 0x7ff8000000000000ULL}, + {6, 4, 0x0, 0x8000000000000000ULL}, + {6, 7, 0x0, 0x8000000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x8000000000000000ULL}, + {5, 14, 0x0, 0x8000000000000000ULL}, + {5, 6, 0x0, 0x7ff8000000000000ULL}, + {5, 5, 0x0, 0x7ff8000000000000ULL}, + {5, 4, 0x0, 0x0000000000000000ULL}, + {5, 7, 0x0, 0x0000000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x8000000000000000ULL}, + {4, 14, 0x0, 0x8042ab59d8b6ec87ULL}, + {4, 6, 0x0, 0xfff0000000000000ULL}, + {4, 5, 0x0, 0x7ff0000000000000ULL}, + {4, 1, 0x0, 0x00c3bf3f64b5ad6bULL}, + {4, 7, 0x0, 0x0000000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmaddXdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0x7ff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0xfff0000000000000ULL}, + {14, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 6, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 4, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0x7ff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0xfff0000000000000ULL}, + {6, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x0000000000000000ULL}, + {6, 4, 0x0, 0x0123214569900000ULL}, + {6, 7, 0x0, 0x7ff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0xfff0000000000000ULL}, + {5, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {5, 6, 0x0, 0x8000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0123214569900000ULL}, + {5, 7, 0x0, 0x7ff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0xc0d0650f5a07b353ULL}, + {4, 6, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0x404f000000000000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0xfff0000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0xfff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmsubXdp_tests[] = { + {8, 8, 0x0, 0x7ff0000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0x7ff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0x7ff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x40d0650f5a07b353ULL}, + {14, 6, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 4, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff8000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0xfff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0xfff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsnmaddXdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0x7ff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0x7ff8000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x40d0650f5a07b353ULL}, + {14, 6, 0x0, 0xc1b0cc9d05eec2a7ULL}, + {14, 5, 0x0, 0x02039a19ca8fcb5fULL}, + {14, 4, 0x0, 0xc1b0cc9d05eec2a7ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x8000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x8000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x02039a19ca8fcb5fULL}, + {4, 5, 0x0, 0x8000000000000000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff0000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0xfff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0xfff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xsmuldp_tests[] = { + {8, 8, 0x0, 0x7ff0000000000000ULL}, + {8, 14, 0x0, 0x7ff0000000000000ULL}, + {8, 6, 0x0, 0x7ff8000000000000ULL}, + {8, 5, 0x0, 0x7ff8000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x41b0cc9d05eec2a7ULL}, + {14, 6, 0x0, 0x0000000000000000ULL}, + {14, 5, 0x0, 0x8000000000000000ULL}, + {14, 4, 0x0, 0x82039a19ca8fcb5fULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff8000000000000ULL}, + {6, 14, 0x0, 0x0000000000000000ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8000000000000000ULL}, + {6, 7, 0x0, 0x7ff8000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff8000000000000ULL}, + {5, 14, 0x0, 0x8000000000000000ULL}, + {5, 6, 0x0, 0x8000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x0000000000000000ULL}, + {5, 7, 0x0, 0x7ff8000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0xfff0000000000000ULL}, + {4, 14, 0x0, 0x82039a19ca8fcb5fULL}, + {4, 6, 0x0, 0x8000000000000000ULL}, + {4, 5, 0x0, 0x0000000000000000ULL}, + {4, 1, 0x0, 0x0182883b3e438000ULL}, + {4, 7, 0x0, 0x7ff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0xfff0000000000000ULL}, + {7, 14, 0x0, 0xfff0000000000000ULL}, + {7, 6, 0x0, 0x7ff8000000000000ULL}, + {7, 5, 0x0, 0x7ff8000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff0000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + +fp_test_args_t xssubdp_tests[] = { + {8, 8, 0x0, 0x7ff8000000000000ULL}, + {8, 14, 0x0, 0xfff0000000000000ULL}, + {8, 6, 0x0, 0xfff0000000000000ULL}, + {8, 5, 0x0, 0xfff0000000000000ULL}, + {8, 4, 0x0, 0xfff0000000000000ULL}, + {8, 7, 0x0, 0xfff0000000000000ULL}, + {8, 9, 0x0, 0x7fffffffffffffffULL}, + {8, 11, 0x0, 0x7ff8000000000000ULL}, + {14, 8, 0x0, 0x7ff0000000000000ULL}, + {14, 14, 0x0, 0x0000000000000000ULL}, + {14, 6, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 5, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 4, 0x0, 0xc0d0650f5a07b353ULL}, + {14, 7, 0x0, 0xfff0000000000000ULL}, + {14, 9, 0x0, 0x7fffffffffffffffULL}, + {14, 11, 0x0, 0x7ff8000000000000ULL}, + {6, 8, 0x0, 0x7ff0000000000000ULL}, + {6, 14, 0x0, 0x40d0650f5a07b353ULL}, + {6, 6, 0x0, 0x0000000000000000ULL}, + {6, 5, 0x0, 0x8000000000000000ULL}, + {6, 4, 0x0, 0x8123214569900000ULL}, + {6, 7, 0x0, 0xfff0000000000000ULL}, + {6, 9, 0x0, 0x7fffffffffffffffULL}, + {6, 11, 0x0, 0x7ff8000000000000ULL}, + {5, 8, 0x0, 0x7ff0000000000000ULL}, + {5, 14, 0x0, 0x40d0650f5a07b353ULL}, + {5, 6, 0x0, 0x0000000000000000ULL}, + {5, 5, 0x0, 0x0000000000000000ULL}, + {5, 4, 0x0, 0x8123214569900000ULL}, + {5, 7, 0x0, 0xfff0000000000000ULL}, + {5, 9, 0x0, 0x7fffffffffffffffULL}, + {5, 11, 0x0, 0x7ff8000000000000ULL}, + {4, 8, 0x0, 0x7ff0000000000000ULL}, + {4, 14, 0x0, 0x40d0650f5a07b353ULL}, + {4, 6, 0x0, 0x0123214569900000ULL}, + {4, 5, 0x0, 0x0123214569900000ULL}, + {4, 1, 0x0, 0xc04f000000000000ULL}, + {4, 7, 0x0, 0xfff0000000000000ULL}, + {4, 9, 0x0, 0x7fffffffffffffffULL}, + {4, 11, 0x0, 0x7ff8000000000000ULL}, + {7, 8, 0x0, 0x7ff0000000000000ULL}, + {7, 14, 0x0, 0x7ff0000000000000ULL}, + {7, 6, 0x0, 0x7ff0000000000000ULL}, + {7, 5, 0x0, 0x7ff0000000000000ULL}, + {7, 4, 0x0, 0x7ff0000000000000ULL}, + {7, 7, 0x0, 0x7ff8000000000000ULL}, + {7, 9, 0x0, 0x7fffffffffffffffULL}, + {7, 11, 0x0, 0x7ff8000000000000ULL}, + {10, 8, 0x0, 0xffffffffffffffffULL}, + {10, 14, 0x0, 0xffffffffffffffffULL}, + {10, 6, 0x0, 0xffffffffffffffffULL}, + {10, 5, 0x0, 0xffffffffffffffffULL}, + {10, 4, 0x0, 0xffffffffffffffffULL}, + {10, 7, 0x0, 0xffffffffffffffffULL}, + {10, 9, 0x0, 0xffffffffffffffffULL}, + {10, 11, 0x0, 0xffffffffffffffffULL}, + {12, 8, 0x0, 0xfff8000000000000ULL}, + {12, 14, 0x0, 0xfff8000000000000ULL}, + {12, 6, 0x0, 0xfff8000000000000ULL}, + {12, 5, 0x0, 0xfff8000000000000ULL}, + {12, 4, 0x0, 0xfff8000000000000ULL}, + {12, 7, 0x0, 0xfff8000000000000ULL}, + {12, 9, 0x0, 0xfff8000000000000ULL}, + {12, 11, 0x0, 0xfff8000000000000ULL}, +}; + + + +static int nb_special_fargs; +static double * spec_fargs; + +static void build_special_fargs_table(void) +{ + /* The special floating point values created below are for + * use in the ftdiv tests for setting the fe_flag and fg_flag, + * but they can also be used for other tests (e.g., xscmpudp). + * + * Note that fl_flag is 'always '1' on ppc64 Linux. + * + Entry Sign Exp fraction Special value + 0 0 3fd 0x8000000000000ULL Positive finite number + 1 0 404 0xf000000000000ULL ... + 2 0 001 0x8000000b77501ULL ... + 3 0 7fe 0x800000000051bULL ... + 4 0 012 0x3214569900000ULL ... + 5 0 000 0x0000000000000ULL +0.0 (+zero) + 6 1 000 0x0000000000000ULL -0.0 (-zero) + 7 0 7ff 0x0000000000000ULL +infinity + 8 1 7ff 0x0000000000000ULL -infinity + 9 0 7ff 0x7FFFFFFFFFFFFULL +QNaN + 10 1 7ff 0x7FFFFFFFFFFFFULL -QNaN + 11 0 7ff 0x8000000000000ULL +SNaN + 12 1 7ff 0x8000000000000ULL -SNaN + 13 1 000 0x8340000078000ULL Denormalized val (zero exp and non-zero fraction) + 14 1 40d 0x0650f5a07b353ULL Negative finite number + */ + + uint64_t mant; + uint16_t _exp; + int s; + int i = 0; + + if (spec_fargs) + return; + + spec_fargs = malloc( 16 * sizeof(double) ); + + // #0 + s = 0; + _exp = 0x3fd; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + // #1 + s = 0; + _exp = 0x404; + mant = 0xf000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* None of the ftdiv tests succeed. + * FRA = value #0; FRB = value #1 + * ea_ = -2; e_b = 5 + * fl_flag || fg_flag || fe_flag = 100 + */ + + /************************************************* + * fe_flag tests + * + *************************************************/ + + /* fe_flag <- 1 if FRA is a NaN + * FRA = value #9; FRB = value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRB is a NaN + * FRA = value #1; FRB = value #12 + * e_a = 5; e_b = 1024 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if e_b <= -1022 + * FRA = value #0; FRB = value #2 + * e_a = -2; e_b = -1022 + * fl_flag || fg_flag || fe_flag = 101 + * + */ + // #2 + s = 0; + _exp = 0x001; + mant = 0x8000000b77501ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* fe_flag <- 1 if e_b >= 1021 + * FRA = value #1; FRB = value #3 + * e_a = 5; e_b = 1023 + * fl_flag || fg_flag || fe_flag = 101 + */ + // #3 + s = 0; + _exp = 0x7fe; + mant = 0x800000000051bULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* fe_flag <- 1 if FRA != 0 && e_a - e_b >= 1023 + * Let FRA = value #3 and FRB be value #0. + * e_a = 1023; e_b = -2 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRA != 0 && e_a - e_b <= -1023 + * Let FRA = value #0 above and FRB be value #3 above + * e_a = -2; e_b = 1023 + * fl_flag || fg_flag || fe_flag = 101 + */ + + /* fe_flag <- 1 if FRA != 0 && e_a <= -970 + * Let FRA = value #4 and FRB be value #0 + * e_a = -1005; e_b = -2 + * fl_flag || fg_flag || fe_flag = 101 + */ + // #4 + s = 0; + _exp = 0x012; + mant = 0x3214569900000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /************************************************* + * fg_flag tests + * + *************************************************/ + /* fg_flag <- 1 if FRA is an Infinity + * NOTE: FRA = Inf also sets fe_flag + * Do two tests, using values #7 and #8 (+/- Inf) for FRA. + * Test 1: + * Let FRA be value #7 and FRB be value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 111 + * + * Test 2: + * Let FRA be value #8 and FRB be value #1 + * e_a = 1024; e_b = 5 + * fl_flag || fg_flag || fe_flag = 111 + * + */ + + /* fg_flag <- 1 if FRB is an Infinity + * NOTE: FRB = Inf also sets fe_flag + * Let FRA be value #1 and FRB be value #7 + * e_a = 5; e_b = 1024 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is denormalized + * NOTE: e_b < -1022 ==> fe_flag <- 1 + * Let FRA be value #0 and FRB be value #13 + * e_a = -2; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is +zero + * NOTE: FRA = Inf also sets fe_flag + * Let FRA = val #5; FRB = val #5 + * ea_ = -1023; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* fg_flag <- 1 if FRB is -zero + * NOTE: FRA = Inf also sets fe_flag + * Let FRA = val #5; FRB = val #6 + * ea_ = -1023; e_b = -1023 + * fl_flag || fg_flag || fe_flag = 111 + */ + + /* Special values */ + /* +0.0 : 0 0x000 0x0000000000000 */ + // #5 + s = 0; + _exp = 0x000; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -0.0 : 1 0x000 0x0000000000000 */ + // #6 + s = 1; + _exp = 0x000; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +infinity : 0 0x7FF 0x0000000000000 */ + // #7 + s = 0; + _exp = 0x7FF; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -infinity : 1 0x7FF 0x0000000000000 */ + // #8 + s = 1; + _exp = 0x7FF; + mant = 0x0000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +QNaN : 0 0x7FF 0x7FFFFFFFFFFFF */ + // #9 + s = 0; + _exp = 0x7FF; + mant = 0x7FFFFFFFFFFFFULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -QNaN : 1 0x7FF 0x7FFFFFFFFFFFF */ + // #10 + s = 1; + _exp = 0x7FF; + mant = 0x7FFFFFFFFFFFFULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* +SNaN : 0 0x7FF 0x8000000000000 */ + // #11 + s = 0; + _exp = 0x7FF; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* -SNaN : 1 0x7FF 0x8000000000000 */ + // #12 + s = 1; + _exp = 0x7FF; + mant = 0x8000000000000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* denormalized value */ + // #13 + s = 1; + _exp = 0x000; + mant = 0x8340000078000ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + /* Negative finite number */ + // #14 + s = 1; + _exp = 0x40d; + mant = 0x0650f5a07b353ULL; + register_farg(&spec_fargs[i++], s, _exp, mant); + + nb_special_fargs = i; +} + + +struct test_table +{ + test_func_t test_category; + char * name; +}; + +struct p7_fp_test +{ + test_func_t test_func; + const char *name; + int single; // 1=single precision result; 0=double precision result +}; + +typedef enum { + VX_FP_CMP, + VX_FP_SMA, + VX_FP_SMS, + VX_FP_SNMA, + VX_FP_OTHER +} vx_fp_test_type; + +struct vx_fp_test +{ + test_func_t test_func; + const char *name; + fp_test_args_t * targs; + int num_tests; + vx_fp_test_type test_type; +}; + +struct xs_conv_test +{ + test_func_t test_func; + const char *name; + unsigned long long * results; + int num_tests; +}; + +typedef enum { + VSX_LOAD =1, + VSX_LOAD_SPLAT, + VSX_STORE +} vsx_ldst_type; + +struct ldst_test +{ + test_func_t test_func; + const char *name; + void * base_addr; + uint32_t offset; + int num_words_to_process; + vsx_ldst_type type; +}; + +typedef enum { + VSX_AND = 1, + VSX_XOR, + VSX_ANDC, + VSX_OR, + VSX_NOR +} vsx_log_op; + +struct vsx_logic_test +{ + test_func_t test_func; + const char *name; + vsx_log_op op; +}; + +struct vsx_move_test +{ + test_func_t test_func; + const char *name; + int xa_idx, xb_idx; + unsigned long long expected_result; +}; + +struct vsx_permute_test +{ + test_func_t test_func; + const char *name; + unsigned int xa[4]; + unsigned int xb[4]; + unsigned int expected_output[4]; +}; + +static vector unsigned int vec_out, vec_inA, vec_inB; + +static void test_lxsdx(void) +{ + __asm__ __volatile__ ("lxsdx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void +test_lxvd2x(void) +{ + __asm__ __volatile__ ("lxvd2x %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxvdsx(void) +{ + __asm__ __volatile__ ("lxvdsx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxvw4x(void) +{ + __asm__ __volatile__ ("lxvw4x %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_stxsdx(void) +{ + __asm__ __volatile__ ("stxsdx %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_stxvd2x(void) +{ + __asm__ __volatile__ ("stxvd2x %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_stxvw4x(void) +{ + __asm__ __volatile__ ("stxvw4x %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_xxlxor(void) +{ + __asm__ __volatile__ ("xxlxor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlor(void) +{ + __asm__ __volatile__ ("xxlor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlnor(void) +{ + __asm__ __volatile__ ("xxlnor %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxland(void) +{ + __asm__ __volatile__ ("xxland %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlandc(void) +{ + __asm__ __volatile__ ("xxlandc %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxmrghw(void) +{ + __asm__ __volatile__ ("xxmrghw %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxmrglw(void) +{ + __asm__ __volatile__ ("xxmrglw %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_00(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x0" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_01(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x1" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_10(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxpermdi_11(void) +{ + __asm__ __volatile__ ("xxpermdi %x0, %x1, %x2, 0x3" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_0(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 0" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_1(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 1" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_2(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxsldwi_3(void) +{ + __asm__ __volatile__ ("xxsldwi %x0, %x1, %x2, 3" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_fcfids (void) +{ + __asm__ __volatile__ ("fcfids %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_fcfidus (void) +{ + __asm__ __volatile__ ("fcfidus %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_fcfidu (void) +{ + __asm__ __volatile__ ("fcfidu %0, %1" : "=f" (f17): "d" (f14)); +} + +static void test_xsabsdp (void) +{ + __asm__ __volatile__ ("xsabsdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscpsgndp (void) +{ + __asm__ __volatile__ ("xscpsgndp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsnabsdp (void) +{ + __asm__ __volatile__ ("xsnabsdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xsnegdp (void) +{ + __asm__ __volatile__ ("xsnegdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static int do_cmpudp; +static void test_xscmp (void) +{ + if (do_cmpudp) + __asm__ __volatile__ ("xscmpudp cr1, %x0, %x1" : : "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xscmpodp cr1, %x0, %x1" : : "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsadddp(void) +{ + __asm__ __volatile__ ("xsadddp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsdivdp(void) +{ + __asm__ __volatile__ ("xsdivdp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static int do_adp; +static void test_xsmadd(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsmaddadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmaddmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsmsub(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsmsubadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmsubmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsnmadd(void) +{ + if (do_adp) + __asm__ __volatile__ ("xsnmaddadp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsnmaddmdp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsmuldp(void) +{ + __asm__ __volatile__ ("xsmuldp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xssubdp(void) +{ + __asm__ __volatile__ ("xssubdp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xscvdpsxds (void) +{ + __asm__ __volatile__ ("xscvdpsxds %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscvsxddp (void) +{ + __asm__ __volatile__ ("xscvsxddp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscvuxddp (void) +{ + __asm__ __volatile__ ("xscvuxddp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static unsigned int vstg[] __attribute__ ((aligned (16))) = { 0, 0, 0,0, + 0, 0, 0, 0 }; + +#define NUM_VSTG_INTS (sizeof vstg/sizeof vstg[0]) +#define NUM_VSTG_VECS (NUM_VSTG_INTS/4) + +static unsigned int viargs[] __attribute__ ((aligned (16))) = { 0x01234567, + 0x89abcdef, + 0x00112233, + 0x44556677, + 0x8899aabb, + 0x91929394, + 0xa1a2a3a4, + 0xb1b2b3b4, + 0xc1c2c3c4, + 0xd1d2d3d4, + 0x7a6b5d3e +}; +#define NUM_VIARGS_INTS (sizeof viargs/sizeof viargs[0]) +#define NUM_VIARGS_VECS (NUM_VIARGS_INTS/4) + +static ldst_test_t ldst_tests[] = { { &test_lxsdx, "lxsdx", viargs, 0, 2, VSX_LOAD }, + { &test_lxsdx, "lxsdx", viargs, 4, 2, VSX_LOAD }, + { &test_lxvd2x, "lxvd2x", viargs, 0, 4, VSX_LOAD }, + { &test_lxvd2x, "lxvd2x", viargs, 4, 4, VSX_LOAD }, + { &test_lxvdsx, "lxvdsx", viargs, 0, 4, VSX_LOAD_SPLAT }, + { &test_lxvdsx, "lxvdsx", viargs, 4, 4, VSX_LOAD_SPLAT }, + { &test_lxvw4x, "lxvw4x", viargs, 0, 4, VSX_LOAD }, + { &test_lxvw4x, "lxvw4x", viargs, 4, 4, VSX_LOAD }, + { &test_stxsdx, "stxsdx", vstg, 0, 2, VSX_STORE }, + { &test_stxsdx, "stxsdx", vstg, 4, 2, VSX_STORE }, + { &test_stxvd2x, "stxvd2x", vstg, 0, 4, VSX_STORE }, + { &test_stxvd2x, "stxvd2x", vstg, 4, 4, VSX_STORE }, + { &test_stxvw4x, "stxvw4x", vstg, 0, 4, VSX_STORE }, + { &test_stxvw4x, "stxvw4x", vstg, 4, 4, VSX_STORE }, + { NULL, NULL, NULL, 0, 0, 0 } }; + +static logic_test_t logic_tests[] = { { &test_xxlxor, "xxlxor", VSX_XOR }, + { &test_xxlor, "xxlor", VSX_OR } , + { &test_xxlnor, "xxlnor", VSX_NOR }, + { &test_xxland, "xxland", VSX_AND }, + { &test_xxlandc, "xxlandc", VSX_ANDC }, + { NULL, NULL}}; + +static move_test_t move_tests[] = { { &test_xsabsdp, "xsabsdp", 0, 4, 0x0899aabb91929394ULL }, + { &test_xscpsgndp, "xscpsgndp", 4, 0, 0x8123456789abcdefULL }, + { &test_xsnabsdp, "xsnabsdp", 7, 3, 0xc45566778899aabbULL, }, + { &test_xsnegdp, "xsnegdp", 0, 7, 0x31b2b3b4c1c2c3c4ULL, }, + { NULL, NULL, 0, 0, 0 } + +}; + +static permute_test_t permute_tests[] = +{ + { &test_xxmrghw, "xxmrghw", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x55555555, 0x22222222, 0x66666666 } /* XT expected output */ + }, + { &test_xxmrghw, "xxmrghw", + { 0x00112233, 0x44556677, 0x8899aabb, 0xccddeeff }, /* XA input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XB input */ + { 0x00112233, 0x11111111, 0x44556677, 0x22222222 } /* XT expected output */ + }, + { &test_xxmrglw, "xxmrglw", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x77777777, 0x44444444, 0x88888888 } /* XT expected output */ + }, + { &test_xxmrglw, "xxmrglw", + { 0x00112233, 0x44556677, 0x8899aabb, 0xccddeeff}, /* XA input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444}, /* XB input */ + { 0x8899aabb, 0x33333333, 0xccddeeff, 0x44444444} /* XT expected output */ + }, + { &test_xxpermdi_00, "xxpermdi DM=00", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxpermdi_01, "xxpermdi DM=01", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x77777777, 0x88888888 } /* XT expected output */ + }, + { &test_xxpermdi_10, "xxpermdi DM=10", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxpermdi_11, "xxpermdi DM=11", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x77777777, 0x88888888 } /* XT expected output */ + }, + { &test_xxsldwi_0, "xxsldwi SHW=0", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 } /* XT expected output */ + }, + { &test_xxsldwi_1, "xxsldwi SHW=1", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x22222222, 0x33333333, 0x44444444, 0x55555555 } /* XT expected output */ + }, + { &test_xxsldwi_2, "xxsldwi SHW=2", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x33333333, 0x44444444, 0x55555555, 0x66666666 } /* XT expected output */ + }, + { &test_xxsldwi_3, "xxsldwi SHW=3", + { 0x11111111, 0x22222222, 0x33333333, 0x44444444 }, /* XA input */ + { 0x55555555, 0x66666666, 0x77777777, 0x88888888 }, /* XB input */ + { 0x44444444, 0x55555555, 0x66666666, 0x77777777 } /* XT expected output */ + }, + { NULL, NULL } +}; + +static fp_test_t fp_tests[] = { { &test_fcfids, "fcfids", 1 }, + { &test_fcfidus, "fcfidus", 1 }, + { &test_fcfidu, "fcfidu", 1 }, + { NULL, NULL, 0 }, + +}; + +static vx_fp_test_t vx_fp_tests[] = { + { &test_xscmp, "xscmp", xscmpX_tests, 64, VX_FP_CMP}, + { &test_xsadddp, "xsadddp", xsadddp_tests, 64, VX_FP_OTHER}, + { &test_xsdivdp, "xsdivdp", xsdivdp_tests, 64, VX_FP_OTHER}, + { &test_xsmadd, "xsmadd", xsmaddXdp_tests, 64, VX_FP_SMA}, + { &test_xsmsub, "xsmsub", xsmsubXdp_tests, 64, VX_FP_SMS}, + { &test_xsnmadd, "xsnmadd", xsnmaddXdp_tests, 64, VX_FP_SNMA}, + { & test_xsmuldp, "xsmuldp", xsmuldp_tests, 64, VX_FP_OTHER}, + { & test_xssubdp, "xssubdp", xssubdp_tests, 64, VX_FP_OTHER}, + { NULL, NULL, NULL, 0, 0 } +}; + +static xs_conv_test_t xs_conv_tests[] = { + { &test_xscvdpsxds, "xscvdpsxds", xscvdpsxds_results, 15}, + { &test_xscvsxddp, "xscvsxddp", xscvsxddp_results, 15}, + { &test_xscvuxddp, "xscvuxddp", xscvuxddp_results, 15}, + { NULL, NULL, NULL, 0} +}; + +#ifdef __powerpc64__ +static void test_ldbrx(void) +{ + int i, equality; + HWord_t reg_out; + unsigned char * byteIn, * byteOut; + r14 = (HWord_t)viargs; + // Just try the instruction an arbitrary number of times at different r15 offsets. + for (i = 0; i < 3; i++) { + int j, k; + reg_out = 0; + r15 = i * 4; + equality = 1; + __asm__ __volatile__ ("ldbrx %0, %1, %2" : "=r" (reg_out): "b" (r14),"r" (r15)); + byteIn = ((unsigned char *)(r14 + r15)); + byteOut = (unsigned char *)®_out; + + printf("ldbrx:"); + for (k = 0; k < 7; k++) { + printf( " %02x", (byteIn[k])); + } + printf(" (reverse) =>"); + for (j = 0; j < 8; j++) { + printf( " %02x", (byteOut[j])); + } + printf("\n"); + for (j = 0, k = 7; j < 8; j++, k--) { + equality &= (byteIn[k] == byteOut[j]); + } + if (!equality) { + printf("FAILED: load with byte reversal is incorrect\n"); + errors++; + } + } + printf( "\n" ); +} + +static void +test_popcntd(void) +{ + uint64_t res; + unsigned long long src = 0x9182736405504536ULL; + int i, answer = 0; + r14 = src; + __asm__ __volatile__ ("popcntd %0, %1" : "=r" (res): "r" (r14)); + for (i = 0; i < 64; i++) { + answer += (r14 & 1ULL); + r14 = r14 >> 1; + } + printf("popcntd: 0x%llx => %d\n", src, (int)res); + if (res!= answer) { + printf("Error: unexpected result from popcntd\n"); + errors++; + } + printf( "\n" ); +} +#endif + +static void +test_lfiwzx(void) +{ + unsigned int i; + unsigned int * src; + uint64_t reg_out; + r14 = (HWord_t)viargs; + // Just try the instruction an arbitrary number of times at different r15 offsets. + for (i = 0; i < 3; i++) { + reg_out = 0; + r15 = i * 4; + __asm__ __volatile__ ("lfiwzx %0, %1, %2" : "=d" (reg_out): "b" (r14),"r" (r15)); + src = ((unsigned int *)(r14 + r15)); + printf("lfiwzx: %u => %llu.00\n", *src, (unsigned long long)reg_out); + + if (reg_out > 0xFFFFFFFFULL || *src != (unsigned int)reg_out) { + printf("FAILED: integer load to FP register is incorrect\n"); + errors++; + } + } + printf( "\n" ); +} + +static void test_vx_fp_ops(void) +{ + + test_func_t func; + int k; + char * test_name = (char *)malloc(20); + k = 0; + + build_special_fargs_table(); + while ((func = vx_fp_tests[k].test_func)) { + int i, condreg, repeat = 0; + unsigned int flags; + unsigned long long * frap, * frbp, * dst; + vx_fp_test_t test_group = vx_fp_tests[k]; + vx_fp_test_type test_type = test_group.test_type; + + switch (test_type) { + case VX_FP_CMP: + strcpy(test_name, "xscmp"); + if (!repeat) { + repeat = 1; + strcat(test_name, "udp"); + do_cmpudp = 1; + } + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + if (test_type == VX_FP_SMA) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMS) + strcpy(test_name, "xsmsub"); + else + strcpy(test_name, "xsnmadd"); + if (!repeat) { + repeat = 1; + strcat(test_name, "adp"); + do_adp = 1; + } + break; + case VX_FP_OTHER: + strcpy(test_name, test_group.name); + break; + default: + printf("ERROR: Invalid VX FP test type %d\n", test_type); + exit(1); + } + +again: + for (i = 0; i < test_group.num_tests; i++) { + unsigned int * inA, * inB, * pv; + + fp_test_args_t aTest = test_group.targs[i]; + inA = (unsigned int *)&spec_fargs[aTest.fra_idx]; + inB = (unsigned int *)&spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + // Only need to copy one doubleword into each vector's element 0 + memcpy(&vec_inA, inA, 8); + memcpy(&vec_inB, inB, 8); + + switch (test_type) { + case VX_FP_CMP: + SET_FPSCR_ZERO; + SET_CR_XER_ZERO; + (*func)(); + GET_CR(flags); + condreg = (flags & 0x0f000000) >> 24; + printf("#%d: %s %016llx <=> %016llx ? %x (CRx)\n", i, test_name, *frap, *frbp, condreg); + // printf("\tFRA: %e; FRB: %e\n", spec_fargs[aTest.fra_idx], spec_fargs[aTest.frb_idx]); + if ( condreg != aTest.cr_flags) { + printf("Error: Expected CR flags 0x%x; actual flags: 0x%x\n", aTest.cr_flags, condreg); + errors++; + } + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + case VX_FP_OTHER: + { + int idx; + unsigned long long vsr_XT; + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + if (test_type != VX_FP_OTHER) { + /* Then we need a third src argument, which is stored in element 0 of + * VSX[XT] -- i.e., vec_out. For the xsmdp cases, VSX[XT] holds + * src3 and VSX[XB] holds src2; for the xsadp cases, VSX[XT] holds + * src2 and VSX[XB] holds src3. The fp_test_args_t that holds the test + * data (input args, result) contain only two inputs, so I arbitrarily + * use spec_fargs elements 4 and 14 (alternating) for the third source + * argument. We can use the same input data for a given pair of + * adp/mdp-type instructions by swapping the src2 and src3 arguments; thus + * the expected result should be the same. + */ + int extra_arg_idx; + if (i % 2) + extra_arg_idx = 4; + else + extra_arg_idx = 14; + + //memcpy(&vec_out, &spec_fargs[14], 8); + + if (repeat) { + /* We're on the first time through of one of the VX_FP_SMx + * test types, meaning we're testing a xsadp case, thus we + * have to swap inputs as described above: + * src2 <= VSX[XT] + * src3 <= VSX[XB] + */ + memcpy(&vec_out, inB, 8); // src2 + memcpy(&vec_inB, &spec_fargs[extra_arg_idx], 8); //src3 + frbp = (unsigned long long *)&spec_fargs[extra_arg_idx]; + } else { + // Don't need to init src2, as it's done before the switch() + memcpy(&vec_out, &spec_fargs[extra_arg_idx], 8); //src3 + } + memcpy(&vsr_XT, &vec_out, 8); + } + + (*func)(); + dst = (unsigned long long *) &vec_out; + if (test_type == VX_FP_OTHER) + printf("#%d: %s %016llx %016llx = %016llx\n", i, test_name, *frap, *frbp, *dst); + else + printf( "#%d: %s %016llx %016llx %016llx = %016llx\n", i, + test_name, vsr_XT, *frap, *frbp, *dst ); + + if ( *dst != aTest.dp_bin_result) { + printf("Error: Expected result %016llx; actual result %016llx\n", aTest.dp_bin_result, *dst); + errors++; + } + /* + { + // Debug code. Keep this block commented out except when debugging. + double result, expected; + memcpy(&result, dst, 8); + memcpy(&expected, &aTest.dp_bin_result, 8); + printf( "\tFRA + FRB: %e + %e: Expected = %e; Actual = %e\n", + spec_fargs[aTest.fra_idx], spec_fargs[aTest.frb_idx], + expected, result ); + } + */ + break; + } + } + + + } + printf( "\n" ); + + if (repeat) { + repeat = 0; + switch (test_type) { + case VX_FP_CMP: + strcpy(test_name, "xscmp"); + strcat(test_name, "odp"); + do_cmpudp = 0; + break; + case VX_FP_SMA: + case VX_FP_SMS: + case VX_FP_SNMA: + if (test_type == VX_FP_SMA) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMS) + strcpy(test_name, "xsmsub"); + else + strcpy(test_name, "xsnmadd"); + strcat(test_name, "mdp"); + do_adp = 0; + break; + case VX_FP_OTHER: + break; + } + goto again; + } + k++; + } + printf( "\n" ); + free(test_name); +} + +static void test_xs_conv_ops(void) +{ + + test_func_t func; + int k = 0; + + build_special_fargs_table(); + while ((func = xs_conv_tests[k].test_func)) { + int i; + unsigned long long * frbp, * dst; + xs_conv_test_t test_group = xs_conv_tests[k]; + for (i = 0; i < test_group.num_tests; i++) { + unsigned int * inB, * pv; + int idx; + unsigned long long exp_result = test_group.results[i]; + inB = (unsigned int *)&spec_fargs[i]; + frbp = (unsigned long long *)&spec_fargs[i]; + memcpy(&vec_inB, inB, 8); + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + (*func)(); + dst = (unsigned long long *) &vec_out; + printf("#%d: %s %016llx => %016llx\n", i, test_group.name, *frbp, *dst); + + if ( *dst != exp_result) { + printf("Error: Expected result %016llx; actual result %016llx\n", exp_result, *dst); + errors++; + } + } + k++; + printf("\n"); + } + printf( "\n" ); +} + +static void do_load_test(ldst_test_t loadTest) +{ + test_func_t func; + unsigned int *src, *dst; + int splat = loadTest.type == VSX_LOAD_SPLAT ? 1: 0; + int i, j, m, equality; + i = j = 0; + + func = loadTest.test_func; + for (i = 0, r14 = (HWord_t) loadTest.base_addr; i < NUM_VIARGS_VECS; i++) { + int again; + j = 0; + r14 += i * 16; + do { + unsigned int * pv = (unsigned int *)&vec_out; + int idx; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv+=idx) + *pv = 0; + + again = 0; + r15 = j; + + // execute test insn + (*func)(); + + src = (unsigned int*) (((unsigned char *)r14) + j); + dst = (unsigned int*) &vec_out; + + printf( "%s:", loadTest.name); + for (m = 0; m < loadTest.num_words_to_process; m++) { + printf( " %08x", src[splat ? m % 2 : m]); + } + printf( " =>"); + for (m = 0; m < loadTest.num_words_to_process; m++) { + printf( " %08x", dst[m]); + } + printf("\n"); + equality = 1; + for (m = 0; m < loadTest.num_words_to_process; m++) { + equality = equality && (src[splat ? m % 2 : m] == dst[m]); + } + + if (!equality) { + printf("FAILED: loaded vector is incorrect\n"); + errors++; + } + + if (j == 0 && loadTest.offset) { + again = 1; + j += loadTest.offset; + } + } + while (again); + } +} + +static void +do_store_test ( ldst_test_t storeTest ) +{ + test_func_t func; + unsigned int *src, *dst; + int i, j, m, equality; + i = j = 0; + + func = storeTest.test_func; + r14 = (HWord_t) storeTest.base_addr; + r15 = (HWord_t) storeTest.offset; + unsigned int * pv = (unsigned int *) storeTest.base_addr; + int idx; + // clear out storage destination + for (idx = 0; idx < 4; idx++, pv += idx) + *pv = 0; + + memcpy(&vec_inA, &viargs[0], sizeof(vector unsigned char)); + + // execute test insn + (*func)(); + src = &viargs[0]; + dst = (unsigned int*) (((unsigned char *) r14) + storeTest.offset); + + printf( "%s:", storeTest.name ); + for (m = 0; m < storeTest.num_words_to_process; m++) { + printf( " %08x", src[m] ); + } + printf( " =>" ); + for (m = 0; m < storeTest.num_words_to_process; m++) { + printf( " %08x", dst[m] ); + } + printf( "\n" ); + equality = 1; + for (m = 0; m < storeTest.num_words_to_process; m++) { + equality = equality && (src[m] == dst[m]); + } + + if (!equality) { + printf( "FAILED: vector store result is incorrect\n" ); + errors++; + } + +} + + +static void test_ldst(void) +{ + int k = 0; + + while (ldst_tests[k].test_func) { + if (ldst_tests[k].type == VSX_STORE) + do_store_test(ldst_tests[k]); + else + do_load_test(ldst_tests[k]); + k++; + printf("\n"); + } +} + +static void test_ftdiv(void) +{ + int i, num_tests, crx; + unsigned int flags; + unsigned long long * frap, * frbp; + build_special_fargs_table(); + + num_tests = sizeof ftdiv_tests/sizeof ftdiv_tests[0]; + + for (i = 0; i < num_tests; i++) { + ftdiv_test_args_t aTest = ftdiv_tests[i]; + f14 = spec_fargs[aTest.fra_idx]; + f15 = spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + SET_FPSCR_ZERO; + SET_CR_XER_ZERO; + __asm__ __volatile__ ("ftdiv cr1, %0, %1" : : "d" (f14), "d" (f15)); + GET_CR(flags); + crx = (flags & 0x0f000000) >> 24; + printf( "ftdiv: %016llx <=> %016llx ? %x (CRx)\n", *frap, *frbp, crx); +// printf("\tFRA: %e; FRB: %e\n", f14, f15); + if ( crx != aTest.cr_flags) { + printf("Error: Expected CR flags 0x%x; actual flags: 0x%x\n", aTest.cr_flags, crx); + errors++; + } + } + printf( "\n" ); +} + + +static void test_p7_fpops ( void ) +{ + int k = 0; + test_func_t func; + + build_fargs_table(); + while ((func = fp_tests[k].test_func)) { + float res; + double resd; + unsigned long long u0; + int i; + int res32 = strcmp(fp_tests[k].name, "fcfidu"); + + for (i = 0; i < nb_fargs; i++) { + u0 = *(unsigned long long *) (&fargs[i]); + f14 = fargs[i]; + (*func)(); + if (res32) { + res = f17; + printf( "%s %016llx => (raw sp) %08x)", + fp_tests[k].name, u0, *((unsigned int *)&res)); + } else { + resd = f17; + printf( "%s %016llx => (raw sp) %016llx)", + fp_tests[k].name, u0, *(unsigned long long *)(&resd)); + } + printf( "\n" ); + } + + k++; + printf( "\n" ); + } +} + +static void test_vsx_logic(void) +{ + logic_test_t aTest; + test_func_t func; + int equality, k; + k = 0; + + while ((func = logic_tests[k].test_func)) { + unsigned int * pv; + int startA, startB; + unsigned int * inA, * inB, * dst; + int idx, i; + startA = 0; + aTest = logic_tests[k]; + for (i = 0; i <= (NUM_VIARGS_INTS - (NUM_VIARGS_VECS * sizeof(int))); i++, startA++) { + startB = startA + 4; + pv = (unsigned int *)&vec_out; + inA = &viargs[startA]; + inB = &viargs[startB]; + memcpy(&vec_inA, inA, sizeof(vector unsigned char)); + memcpy(&vec_inB, inB, sizeof(vector unsigned char)); + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + // execute test insn + (*func)(); + dst = (unsigned int*) &vec_out; + + printf( "%s:", aTest.name); + printf( " %08x %08x %08x %08x %s", inA[0], inA[1], inA[2], inA[3], aTest.name); + printf( " %08x %08x %08x %08x", inB[0], inB[1], inB[2], inB[3]); + printf(" => %08x %08x %08x %08x\n", dst[0], dst[1], dst[2], dst[3]); + + equality = 1; + for (idx = 0; idx < 4; idx++) { + switch (aTest.op) { + case VSX_AND: + equality &= (dst[idx] == (inA[idx] & inB[idx])); + break; + case VSX_ANDC: + equality &= (dst[idx] == (inA[idx] & ~inB[idx])); + break; + case VSX_NOR: + equality &= (dst[idx] == ~(inA[idx] | inB[idx])); + break; + case VSX_XOR: + equality &= (dst[idx] == (inA[idx] ^ inB[idx])); + break; + case VSX_OR: + equality &= (dst[idx] == (inA[idx] | inB[idx])); + break; + default: + fprintf(stderr, "Error in test_vsx_logic(): unknown VSX logical op %d\n", aTest.op); + exit(1); + } + } + if (!equality) { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + } + k++; + } + printf( "\n" ); +} + +static void test_move_ops (void) +{ + move_test_t aTest; + test_func_t func; + int equality, k; + k = 0; + + while ((func = move_tests[k].test_func)) { + unsigned int * pv; + int startA, startB; + unsigned int * inA, * inB, * dst; + unsigned long long exp_out; + int idx; + aTest = move_tests[k]; + exp_out = aTest.expected_result; + startA = aTest.xa_idx; + startB = aTest.xb_idx; + pv = (unsigned int *)&vec_out; + inA = &viargs[startA]; + inB = &viargs[startB]; + memcpy(&vec_inA, inA, sizeof(vector unsigned char)); + memcpy(&vec_inB, inB, sizeof(vector unsigned char)); + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + // execute test insn + (*func)(); + dst = (unsigned int*) &vec_out; + + printf( "%s:", aTest.name); + printf( " %08x %08x %s", inA[0], inA[1], aTest.name); + printf( " %08x %08xx", inB[0], inB[1]); + printf(" => %08x %08x\n", dst[0], dst[1]); + + equality = 1; + pv = (unsigned int *)&exp_out; + for (idx = 0; idx < 2; idx++) { + equality &= (dst[idx] == pv[idx]); + } + if (!equality) { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + k++; + printf( "\n" ); + } +} + +static void test_permute_ops (void) +{ + permute_test_t *aTest; + unsigned int *dst = (unsigned int *) &vec_out; + + for (aTest = &(permute_tests[0]); aTest->test_func != NULL; aTest++) + { + /* Grab test input and clear output vector. */ + memcpy(&vec_inA, aTest->xa, sizeof(vec_inA)); + memcpy(&vec_inB, aTest->xb, sizeof(vec_inB)); + memset(dst, 0, sizeof(vec_out)); + + /* execute test insn */ + aTest->test_func(); + + printf( "%s:\n", aTest->name); + printf( " XA[%08x,%08x,%08x,%08x]\n", + aTest->xa[0], aTest->xa[1], aTest->xa[2], aTest->xa[3]); + printf( " XB[%08x,%08x,%08x,%08x]\n", + aTest->xb[0], aTest->xb[1], aTest->xb[2], aTest->xb[3]); + printf( " => XT[%08x,%08x,%08x,%08x]\n", + dst[0], dst[1], dst[2], dst[3]); + + if (memcmp (dst, &aTest->expected_output, sizeof(vec_out))) + { + printf( "FAILED: vector out is incorrect\n" ); + errors++; + } + } + printf( "\n" ); +} + +static test_table_t all_tests[] = { { &test_ldst, + "Test VSX load/store instructions" }, + { &test_vsx_logic, + "Test VSX logic instructions" }, +#ifdef __powerpc64__ + { &test_ldbrx, + "Test ldbrx instruction" }, + { &test_popcntd, + "Test popcntd instruction" }, +#endif + { &test_lfiwzx, + "Test lfiwzx instruction" }, + { &test_p7_fpops, + "Test P7 floating point convert instructions"}, + { &test_ftdiv, + "Test ftdiv instruction" }, + { &test_move_ops, + "Test VSX move instructions"}, + { &test_permute_ops, + "Test VSX permute instructions"}, + { &test_vx_fp_ops, + "Test VSX floating point instructions"}, + { &test_xs_conv_ops, + "Test VSX scalar integer conversion instructions" }, + { NULL, NULL } +}; +#endif // HAS_VSX + +int main(int argc, char *argv[]) +{ +#ifdef HAS_VSX + + test_table_t aTest; + test_func_t func; + int i = 0; + + while ((func = all_tests[i].test_category)) { + aTest = all_tests[i]; + printf( "%s\n", aTest.name ); + (*func)(); + i++; + } + if (errors) + printf("Testcase FAILED with %d errors \n", errors); + else + printf("Testcase PASSED\n"); + +#endif // HAS _VSX + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stdout.exp new file mode 100644 index 000000000..d234f79cf --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.stdout.exp @@ -0,0 +1,1031 @@ +Test VSX load/store instructions +lxsdx: 01234567 89abcdef => 01234567 89abcdef +lxsdx: 8899aabb 91929394 => 8899aabb 91929394 + +lxsdx: 01234567 89abcdef => 01234567 89abcdef +lxsdx: 89abcdef 00112233 => 89abcdef 00112233 +lxsdx: 8899aabb 91929394 => 8899aabb 91929394 +lxsdx: 91929394 a1a2a3a4 => 91929394 a1a2a3a4 + +lxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvd2x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 + +lxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvd2x: 89abcdef 00112233 44556677 8899aabb => 89abcdef 00112233 44556677 8899aabb +lxvd2x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 +lxvd2x: 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 + +lxvdsx: 01234567 89abcdef 01234567 89abcdef => 01234567 89abcdef 01234567 89abcdef +lxvdsx: 8899aabb 91929394 8899aabb 91929394 => 8899aabb 91929394 8899aabb 91929394 + +lxvdsx: 01234567 89abcdef 01234567 89abcdef => 01234567 89abcdef 01234567 89abcdef +lxvdsx: 89abcdef 00112233 89abcdef 00112233 => 89abcdef 00112233 89abcdef 00112233 +lxvdsx: 8899aabb 91929394 8899aabb 91929394 => 8899aabb 91929394 8899aabb 91929394 +lxvdsx: 91929394 a1a2a3a4 91929394 a1a2a3a4 => 91929394 a1a2a3a4 91929394 a1a2a3a4 + +lxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvw4x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 + +lxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 +lxvw4x: 89abcdef 00112233 44556677 8899aabb => 89abcdef 00112233 44556677 8899aabb +lxvw4x: 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 8899aabb 91929394 a1a2a3a4 b1b2b3b4 +lxvw4x: 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 + +stxsdx: 01234567 89abcdef => 01234567 89abcdef + +stxsdx: 01234567 89abcdef => 01234567 89abcdef + +stxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvd2x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +stxvw4x: 01234567 89abcdef 00112233 44556677 => 01234567 89abcdef 00112233 44556677 + +Test VSX logic instructions +xxlxor: 01234567 89abcdef 00112233 44556677 xxlxor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 89baefdc 18395e7b a1b38197 f5e7d5c3 +xxlxor: 89abcdef 00112233 44556677 8899aabb xxlxor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 18395e7b a1b38197 f5e7d5c3 495b697f +xxlxor: 00112233 44556677 8899aabb 91929394 xxlxor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => a1b38197 f5e7d5c3 495b697f 40404040 +xxlxor: 44556677 8899aabb 91929394 a1a2a3a4 xxlxor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => f5e7d5c3 495b697f 40404040 dbc9fe9a +xxlor: 01234567 89abcdef 00112233 44556677 xxlor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 89bbefff 99bbdfff a1b3a3b7 f5f7f7f7 +xxlor: 89abcdef 00112233 44556677 8899aabb xxlor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 99bbdfff a1b3a3b7 f5f7f7f7 c9dbebff +xxlor: 00112233 44556677 8899aabb 91929394 xxlor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => a1b3a3b7 f5f7f7f7 c9dbebff d1d2d3d4 +xxlor: 44556677 8899aabb 91929394 a1a2a3a4 xxlor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => f5f7f7f7 c9dbebff d1d2d3d4 fbebffbe +xxlnor: 01234567 89abcdef 00112233 44556677 xxlnor 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 76441000 66442000 5e4c5c48 0a080808 +xxlnor: 89abcdef 00112233 44556677 8899aabb xxlnor 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 66442000 5e4c5c48 0a080808 36241400 +xxlnor: 00112233 44556677 8899aabb 91929394 xxlnor a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 5e4c5c48 0a080808 36241400 2e2d2c2b +xxlnor: 44556677 8899aabb 91929394 a1a2a3a4 xxlnor b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 0a080808 36241400 2e2d2c2b 04140041 +xxland: 01234567 89abcdef 00112233 44556677 xxland 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 00010023 81828184 00002220 00102234 +xxland: 89abcdef 00112233 44556677 8899aabb xxland 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 81828184 00002220 00102234 80808280 +xxland: 00112233 44556677 8899aabb 91929394 xxland a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 00002220 00102234 80808280 91929394 +xxland: 44556677 8899aabb 91929394 a1a2a3a4 xxland b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 00102234 80808280 91929394 20220124 +xxlandc: 01234567 89abcdef 00112233 44556677 xxlandc 8899aabb 91929394 a1a2a3a4 b1b2b3b4 => 01224544 08294c6b 00110013 44454443 +xxlandc: 89abcdef 00112233 44556677 8899aabb xxlandc 91929394 a1a2a3a4 b1b2b3b4 c1c2c3c4 => 08294c6b 00110013 44454443 0819283b +xxlandc: 00112233 44556677 8899aabb 91929394 xxlandc a1a2a3a4 b1b2b3b4 c1c2c3c4 d1d2d3d4 => 00110013 44454443 0819283b 00000000 +xxlandc: 44556677 8899aabb 91929394 a1a2a3a4 xxlandc b1b2b3b4 c1c2c3c4 d1d2d3d4 7a6b5d3e => 44454443 0819283b 00000000 8180a280 + +Test ldbrx instruction +ldbrx: 01 23 45 67 89 ab cd (reverse) => ef cd ab 89 67 45 23 01 +ldbrx: 89 ab cd ef 00 11 22 (reverse) => 33 22 11 00 ef cd ab 89 +ldbrx: 00 11 22 33 44 55 66 (reverse) => 77 66 55 44 33 22 11 00 + +Test popcntd instruction +popcntd: 0x9182736405504536 => 24 + +Test lfiwzx instruction +lfiwzx: 19088743 => 19088743.00 +lfiwzx: 2309737967 => 2309737967.00 +lfiwzx: 1122867 => 1122867.00 + +Test P7 floating point convert instructions +fcfids 0010000000000001 => (raw sp) 59800000) +fcfids 00100094e0000359 => (raw sp) 598004a7) +fcfids 3fe0000000000001 => (raw sp) 5e7f8000) +fcfids 3fe00094e0000359 => (raw sp) 5e7f8002) +fcfids 8010000000000001 => (raw sp) deffe000) +fcfids 80100094e0000359 => (raw sp) deffdfff) +fcfids bfe0000000000001 => (raw sp) de804000) +fcfids bfe00094e0000359 => (raw sp) de803fff) +fcfids 0020000000000b01 => (raw sp) 5a000000) +fcfids 00000000203f0b3d => (raw sp) 4e00fc2d) +fcfids 00000000005a203d => (raw sp) 4ab4407a) +fcfids 8020000000000b01 => (raw sp) deffc000) +fcfids 80000000203f0b3d => (raw sp) df000000) + +fcfidus 0010000000000001 => (raw sp) 59800000) +fcfidus 00100094e0000359 => (raw sp) 598004a7) +fcfidus 3fe0000000000001 => (raw sp) 5e7f8000) +fcfidus 3fe00094e0000359 => (raw sp) 5e7f8002) +fcfidus 8010000000000001 => (raw sp) 5f001000) +fcfidus 80100094e0000359 => (raw sp) 5f001001) +fcfidus bfe0000000000001 => (raw sp) 5f3fe000) +fcfidus bfe00094e0000359 => (raw sp) 5f3fe001) +fcfidus 0020000000000b01 => (raw sp) 5a000000) +fcfidus 00000000203f0b3d => (raw sp) 4e00fc2d) +fcfidus 00000000005a203d => (raw sp) 4ab4407a) +fcfidus 8020000000000b01 => (raw sp) 5f002000) +fcfidus 80000000203f0b3d => (raw sp) 5f000000) + +fcfidu 0010000000000001 => (raw sp) 4330000000000001) +fcfidu 00100094e0000359 => (raw sp) 43300094e0000359) +fcfidu 3fe0000000000001 => (raw sp) 43cff00000000000) +fcfidu 3fe00094e0000359 => (raw sp) 43cff0004a700002) +fcfidu 8010000000000001 => (raw sp) 43e0020000000000) +fcfidu 80100094e0000359 => (raw sp) 43e00200129c0000) +fcfidu bfe0000000000001 => (raw sp) 43e7fc0000000000) +fcfidu bfe00094e0000359 => (raw sp) 43e7fc00129c0000) +fcfidu 0020000000000b01 => (raw sp) 4340000000000580) +fcfidu 00000000203f0b3d => (raw sp) 41c01f859e800000) +fcfidu 00000000005a203d => (raw sp) 4156880f40000000) +fcfidu 8020000000000b01 => (raw sp) 43e0040000000001) +fcfidu 80000000203f0b3d => (raw sp) 43e00000000407e1) + +Test ftdiv instruction +ftdiv: 3fd8000000000000 <=> 404f000000000000 ? 8 (CRx) +ftdiv: 7ff7ffffffffffff <=> 404f000000000000 ? a (CRx) +ftdiv: 404f000000000000 <=> fff8000000000000 ? a (CRx) +ftdiv: 3fd8000000000000 <=> 0018000000b77501 ? a (CRx) +ftdiv: 404f000000000000 <=> 7fe800000000051b ? a (CRx) +ftdiv: 7fe800000000051b <=> 3fd8000000000000 ? a (CRx) +ftdiv: 3fd8000000000000 <=> 7fe800000000051b ? a (CRx) +ftdiv: 0123214569900000 <=> 3fd8000000000000 ? a (CRx) +ftdiv: 7ff0000000000000 <=> 404f000000000000 ? e (CRx) +ftdiv: fff0000000000000 <=> 404f000000000000 ? e (CRx) +ftdiv: 404f000000000000 <=> 7ff0000000000000 ? e (CRx) +ftdiv: 3fd8000000000000 <=> 8008340000078000 ? e (CRx) +ftdiv: 0000000000000000 <=> 0000000000000000 ? e (CRx) +ftdiv: 0000000000000000 <=> 8000000000000000 ? e (CRx) + +Test VSX move instructions +xsabsdp: 01234567 89abcdef xsabsdp 8899aabb 91929394x => 0899aabb 91929394 + +xscpsgndp: 8899aabb 91929394 xscpsgndp 01234567 89abcdefx => 81234567 89abcdef + +xsnabsdp: b1b2b3b4 c1c2c3c4 xsnabsdp 44556677 8899aabbx => c4556677 8899aabb + +xsnegdp: 01234567 89abcdef xsnegdp b1b2b3b4 c1c2c3c4x => 31b2b3b4 c1c2c3c4 + +Test VSX permute instructions +xxmrghw: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,55555555,22222222,66666666] +xxmrghw: + XA[00112233,44556677,8899aabb,ccddeeff] + XB[11111111,22222222,33333333,44444444] + => XT[00112233,11111111,44556677,22222222] +xxmrglw: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,77777777,44444444,88888888] +xxmrglw: + XA[00112233,44556677,8899aabb,ccddeeff] + XB[11111111,22222222,33333333,44444444] + => XT[8899aabb,33333333,ccddeeff,44444444] +xxpermdi DM=00: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,55555555,66666666] +xxpermdi DM=01: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,77777777,88888888] +xxpermdi DM=10: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,55555555,66666666] +xxpermdi DM=11: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,77777777,88888888] +xxsldwi SHW=0: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[11111111,22222222,33333333,44444444] +xxsldwi SHW=1: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[22222222,33333333,44444444,55555555] +xxsldwi SHW=2: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[33333333,44444444,55555555,66666666] +xxsldwi SHW=3: + XA[11111111,22222222,33333333,44444444] + XB[55555555,66666666,77777777,88888888] + => XT[44444444,55555555,66666666,77777777] + +Test VSX floating point instructions +#0: xscmpudp fff0000000000000 <=> fff0000000000000 ? 2 (CRx) +#1: xscmpudp fff0000000000000 <=> c0d0650f5a07b353 ? 8 (CRx) +#2: xscmpudp fff0000000000000 <=> 8000000000000000 ? 8 (CRx) +#3: xscmpudp fff0000000000000 <=> 0000000000000000 ? 8 (CRx) +#4: xscmpudp fff0000000000000 <=> 0123214569900000 ? 8 (CRx) +#5: xscmpudp fff0000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#6: xscmpudp fff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#7: xscmpudp fff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#8: xscmpudp c0d0650f5a07b353 <=> fff0000000000000 ? 4 (CRx) +#9: xscmpudp c0d0650f5a07b353 <=> c0d0650f5a07b353 ? 2 (CRx) +#10: xscmpudp c0d0650f5a07b353 <=> 8000000000000000 ? 8 (CRx) +#11: xscmpudp c0d0650f5a07b353 <=> 0000000000000000 ? 8 (CRx) +#12: xscmpudp c0d0650f5a07b353 <=> 0123214569900000 ? 8 (CRx) +#13: xscmpudp c0d0650f5a07b353 <=> 7ff0000000000000 ? 8 (CRx) +#14: xscmpudp c0d0650f5a07b353 <=> 7ff7ffffffffffff ? 1 (CRx) +#15: xscmpudp c0d0650f5a07b353 <=> 7ff8000000000000 ? 1 (CRx) +#16: xscmpudp 8000000000000000 <=> fff0000000000000 ? 4 (CRx) +#17: xscmpudp 8000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#18: xscmpudp 8000000000000000 <=> 8000000000000000 ? 2 (CRx) +#19: xscmpudp 8000000000000000 <=> 0000000000000000 ? 2 (CRx) +#20: xscmpudp 8000000000000000 <=> 0123214569900000 ? 8 (CRx) +#21: xscmpudp 8000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#22: xscmpudp 8000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#23: xscmpudp 8000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#24: xscmpudp 0000000000000000 <=> fff0000000000000 ? 4 (CRx) +#25: xscmpudp 0000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#26: xscmpudp 0000000000000000 <=> 8000000000000000 ? 2 (CRx) +#27: xscmpudp 0000000000000000 <=> 0000000000000000 ? 2 (CRx) +#28: xscmpudp 0000000000000000 <=> 0123214569900000 ? 8 (CRx) +#29: xscmpudp 0000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#30: xscmpudp 0000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#31: xscmpudp 0000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#32: xscmpudp 0123214569900000 <=> fff0000000000000 ? 4 (CRx) +#33: xscmpudp 0123214569900000 <=> c0d0650f5a07b353 ? 4 (CRx) +#34: xscmpudp 0123214569900000 <=> 8000000000000000 ? 4 (CRx) +#35: xscmpudp 0123214569900000 <=> 0000000000000000 ? 4 (CRx) +#36: xscmpudp 0123214569900000 <=> 404f000000000000 ? 8 (CRx) +#37: xscmpudp 0123214569900000 <=> 7ff0000000000000 ? 8 (CRx) +#38: xscmpudp 0123214569900000 <=> 7ff7ffffffffffff ? 1 (CRx) +#39: xscmpudp 0123214569900000 <=> 7ff8000000000000 ? 1 (CRx) +#40: xscmpudp 7ff0000000000000 <=> fff0000000000000 ? 4 (CRx) +#41: xscmpudp 7ff0000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#42: xscmpudp 7ff0000000000000 <=> 8000000000000000 ? 4 (CRx) +#43: xscmpudp 7ff0000000000000 <=> 0000000000000000 ? 4 (CRx) +#44: xscmpudp 7ff0000000000000 <=> 0123214569900000 ? 4 (CRx) +#45: xscmpudp 7ff0000000000000 <=> 7ff0000000000000 ? 2 (CRx) +#46: xscmpudp 7ff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#47: xscmpudp 7ff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#48: xscmpudp fff7ffffffffffff <=> fff0000000000000 ? 1 (CRx) +#49: xscmpudp fff7ffffffffffff <=> c0d0650f5a07b353 ? 1 (CRx) +#50: xscmpudp fff7ffffffffffff <=> 8000000000000000 ? 1 (CRx) +#51: xscmpudp fff7ffffffffffff <=> 0000000000000000 ? 1 (CRx) +#52: xscmpudp fff7ffffffffffff <=> 0123214569900000 ? 1 (CRx) +#53: xscmpudp fff7ffffffffffff <=> 7ff0000000000000 ? 1 (CRx) +#54: xscmpudp fff7ffffffffffff <=> 7ff7ffffffffffff ? 1 (CRx) +#55: xscmpudp fff7ffffffffffff <=> 7ff8000000000000 ? 1 (CRx) +#56: xscmpudp fff8000000000000 <=> fff0000000000000 ? 1 (CRx) +#57: xscmpudp fff8000000000000 <=> c0d0650f5a07b353 ? 1 (CRx) +#58: xscmpudp fff8000000000000 <=> 8000000000000000 ? 1 (CRx) +#59: xscmpudp fff8000000000000 <=> 0000000000000000 ? 1 (CRx) +#60: xscmpudp fff8000000000000 <=> 0123214569900000 ? 1 (CRx) +#61: xscmpudp fff8000000000000 <=> 7ff0000000000000 ? 1 (CRx) +#62: xscmpudp fff8000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#63: xscmpudp fff8000000000000 <=> 7ff8000000000000 ? 1 (CRx) + +#0: xscmpodp fff0000000000000 <=> fff0000000000000 ? 2 (CRx) +#1: xscmpodp fff0000000000000 <=> c0d0650f5a07b353 ? 8 (CRx) +#2: xscmpodp fff0000000000000 <=> 8000000000000000 ? 8 (CRx) +#3: xscmpodp fff0000000000000 <=> 0000000000000000 ? 8 (CRx) +#4: xscmpodp fff0000000000000 <=> 0123214569900000 ? 8 (CRx) +#5: xscmpodp fff0000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#6: xscmpodp fff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#7: xscmpodp fff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#8: xscmpodp c0d0650f5a07b353 <=> fff0000000000000 ? 4 (CRx) +#9: xscmpodp c0d0650f5a07b353 <=> c0d0650f5a07b353 ? 2 (CRx) +#10: xscmpodp c0d0650f5a07b353 <=> 8000000000000000 ? 8 (CRx) +#11: xscmpodp c0d0650f5a07b353 <=> 0000000000000000 ? 8 (CRx) +#12: xscmpodp c0d0650f5a07b353 <=> 0123214569900000 ? 8 (CRx) +#13: xscmpodp c0d0650f5a07b353 <=> 7ff0000000000000 ? 8 (CRx) +#14: xscmpodp c0d0650f5a07b353 <=> 7ff7ffffffffffff ? 1 (CRx) +#15: xscmpodp c0d0650f5a07b353 <=> 7ff8000000000000 ? 1 (CRx) +#16: xscmpodp 8000000000000000 <=> fff0000000000000 ? 4 (CRx) +#17: xscmpodp 8000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#18: xscmpodp 8000000000000000 <=> 8000000000000000 ? 2 (CRx) +#19: xscmpodp 8000000000000000 <=> 0000000000000000 ? 2 (CRx) +#20: xscmpodp 8000000000000000 <=> 0123214569900000 ? 8 (CRx) +#21: xscmpodp 8000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#22: xscmpodp 8000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#23: xscmpodp 8000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#24: xscmpodp 0000000000000000 <=> fff0000000000000 ? 4 (CRx) +#25: xscmpodp 0000000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#26: xscmpodp 0000000000000000 <=> 8000000000000000 ? 2 (CRx) +#27: xscmpodp 0000000000000000 <=> 0000000000000000 ? 2 (CRx) +#28: xscmpodp 0000000000000000 <=> 0123214569900000 ? 8 (CRx) +#29: xscmpodp 0000000000000000 <=> 7ff0000000000000 ? 8 (CRx) +#30: xscmpodp 0000000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#31: xscmpodp 0000000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#32: xscmpodp 0123214569900000 <=> fff0000000000000 ? 4 (CRx) +#33: xscmpodp 0123214569900000 <=> c0d0650f5a07b353 ? 4 (CRx) +#34: xscmpodp 0123214569900000 <=> 8000000000000000 ? 4 (CRx) +#35: xscmpodp 0123214569900000 <=> 0000000000000000 ? 4 (CRx) +#36: xscmpodp 0123214569900000 <=> 404f000000000000 ? 8 (CRx) +#37: xscmpodp 0123214569900000 <=> 7ff0000000000000 ? 8 (CRx) +#38: xscmpodp 0123214569900000 <=> 7ff7ffffffffffff ? 1 (CRx) +#39: xscmpodp 0123214569900000 <=> 7ff8000000000000 ? 1 (CRx) +#40: xscmpodp 7ff0000000000000 <=> fff0000000000000 ? 4 (CRx) +#41: xscmpodp 7ff0000000000000 <=> c0d0650f5a07b353 ? 4 (CRx) +#42: xscmpodp 7ff0000000000000 <=> 8000000000000000 ? 4 (CRx) +#43: xscmpodp 7ff0000000000000 <=> 0000000000000000 ? 4 (CRx) +#44: xscmpodp 7ff0000000000000 <=> 0123214569900000 ? 4 (CRx) +#45: xscmpodp 7ff0000000000000 <=> 7ff0000000000000 ? 2 (CRx) +#46: xscmpodp 7ff0000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#47: xscmpodp 7ff0000000000000 <=> 7ff8000000000000 ? 1 (CRx) +#48: xscmpodp fff7ffffffffffff <=> fff0000000000000 ? 1 (CRx) +#49: xscmpodp fff7ffffffffffff <=> c0d0650f5a07b353 ? 1 (CRx) +#50: xscmpodp fff7ffffffffffff <=> 8000000000000000 ? 1 (CRx) +#51: xscmpodp fff7ffffffffffff <=> 0000000000000000 ? 1 (CRx) +#52: xscmpodp fff7ffffffffffff <=> 0123214569900000 ? 1 (CRx) +#53: xscmpodp fff7ffffffffffff <=> 7ff0000000000000 ? 1 (CRx) +#54: xscmpodp fff7ffffffffffff <=> 7ff7ffffffffffff ? 1 (CRx) +#55: xscmpodp fff7ffffffffffff <=> 7ff8000000000000 ? 1 (CRx) +#56: xscmpodp fff8000000000000 <=> fff0000000000000 ? 1 (CRx) +#57: xscmpodp fff8000000000000 <=> c0d0650f5a07b353 ? 1 (CRx) +#58: xscmpodp fff8000000000000 <=> 8000000000000000 ? 1 (CRx) +#59: xscmpodp fff8000000000000 <=> 0000000000000000 ? 1 (CRx) +#60: xscmpodp fff8000000000000 <=> 0123214569900000 ? 1 (CRx) +#61: xscmpodp fff8000000000000 <=> 7ff0000000000000 ? 1 (CRx) +#62: xscmpodp fff8000000000000 <=> 7ff7ffffffffffff ? 1 (CRx) +#63: xscmpodp fff8000000000000 <=> 7ff8000000000000 ? 1 (CRx) + +#0: xsadddp fff0000000000000 fff0000000000000 = fff0000000000000 +#1: xsadddp fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsadddp fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsadddp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsadddp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsadddp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsadddp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsadddp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsadddp c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsadddp c0d0650f5a07b353 c0d0650f5a07b353 = c0e0650f5a07b353 +#10: xsadddp c0d0650f5a07b353 8000000000000000 = c0d0650f5a07b353 +#11: xsadddp c0d0650f5a07b353 0000000000000000 = c0d0650f5a07b353 +#12: xsadddp c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#13: xsadddp c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsadddp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsadddp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsadddp 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsadddp 8000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#18: xsadddp 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsadddp 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsadddp 8000000000000000 0123214569900000 = 0123214569900000 +#21: xsadddp 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsadddp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsadddp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsadddp 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsadddp 0000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#26: xsadddp 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsadddp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsadddp 0000000000000000 0123214569900000 = 0123214569900000 +#29: xsadddp 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsadddp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsadddp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsadddp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsadddp 0123214569900000 c0d0650f5a07b353 = c0d0650f5a07b353 +#34: xsadddp 0123214569900000 8000000000000000 = 0123214569900000 +#35: xsadddp 0123214569900000 0000000000000000 = 0123214569900000 +#36: xsadddp 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsadddp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsadddp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsadddp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsadddp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsadddp 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsadddp 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsadddp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsadddp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsadddp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsadddp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsadddp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsadddp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsadddp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsadddp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsadddp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsadddp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsadddp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsadddp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsadddp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsadddp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsadddp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsadddp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsadddp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsadddp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsadddp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsadddp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsadddp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsdivdp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsdivdp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsdivdp fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsdivdp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsdivdp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsdivdp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsdivdp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsdivdp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsdivdp c0d0650f5a07b353 fff0000000000000 = 0000000000000000 +#9: xsdivdp c0d0650f5a07b353 c0d0650f5a07b353 = 3ff0000000000000 +#10: xsdivdp c0d0650f5a07b353 8000000000000000 = 7ff0000000000000 +#11: xsdivdp c0d0650f5a07b353 0000000000000000 = fff0000000000000 +#12: xsdivdp c0d0650f5a07b353 0123214569900000 = ff9b6cb57ca13c00 +#13: xsdivdp c0d0650f5a07b353 7ff0000000000000 = 8000000000000000 +#14: xsdivdp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsdivdp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsdivdp 8000000000000000 fff0000000000000 = 0000000000000000 +#17: xsdivdp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsdivdp 8000000000000000 8000000000000000 = 7ff8000000000000 +#19: xsdivdp 8000000000000000 0000000000000000 = 7ff8000000000000 +#20: xsdivdp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsdivdp 8000000000000000 7ff0000000000000 = 8000000000000000 +#22: xsdivdp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsdivdp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsdivdp 0000000000000000 fff0000000000000 = 8000000000000000 +#25: xsdivdp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsdivdp 0000000000000000 8000000000000000 = 7ff8000000000000 +#27: xsdivdp 0000000000000000 0000000000000000 = 7ff8000000000000 +#28: xsdivdp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsdivdp 0000000000000000 7ff0000000000000 = 0000000000000000 +#30: xsdivdp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsdivdp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsdivdp 0123214569900000 fff0000000000000 = 8000000000000000 +#33: xsdivdp 0123214569900000 c0d0650f5a07b353 = 8042ab59d8b6ec87 +#34: xsdivdp 0123214569900000 8000000000000000 = fff0000000000000 +#35: xsdivdp 0123214569900000 0000000000000000 = 7ff0000000000000 +#36: xsdivdp 0123214569900000 404f000000000000 = 00c3bf3f64b5ad6b +#37: xsdivdp 0123214569900000 7ff0000000000000 = 0000000000000000 +#38: xsdivdp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsdivdp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsdivdp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsdivdp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsdivdp 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsdivdp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsdivdp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsdivdp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsdivdp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsdivdp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsdivdp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsdivdp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsdivdp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsdivdp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsdivdp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsdivdp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsdivdp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsdivdp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsdivdp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsdivdp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsdivdp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsdivdp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsdivdp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsdivdp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsdivdp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsdivdp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmaddadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsmaddadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmaddadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmaddadp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmaddadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmaddadp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsmaddadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsmaddadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmaddadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsmaddadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#10: xsmaddadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#11: xsmaddadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#12: xsmaddadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#13: xsmaddadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsmaddadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsmaddadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmaddadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsmaddadp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f5a07b353 +#18: xsmaddadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmaddadp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsmaddadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0123214569900000 +#21: xsmaddadp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsmaddadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsmaddadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmaddadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsmaddadp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f5a07b353 +#26: xsmaddadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsmaddadp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmaddadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0123214569900000 +#29: xsmaddadp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsmaddadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsmaddadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmaddadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsmaddadp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f5a07b353 +#34: xsmaddadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#35: xsmaddadp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmaddadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsmaddadp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsmaddadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsmaddadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmaddadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#41: xsmaddadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmaddadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmaddadp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmaddadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmaddadp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#46: xsmaddadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsmaddadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmaddadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsmaddadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsmaddadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsmaddadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsmaddadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsmaddadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsmaddadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsmaddadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsmaddadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmaddadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmaddadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmaddadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmaddadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmaddadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmaddadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmaddadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmaddmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsmaddmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmaddmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmaddmdp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmaddmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmaddmdp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsmaddmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmaddmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsmaddmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f5a07b353 +#10: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d05eec2a7 +#11: xsmaddmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 82039a19ca8fcb5f +#12: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d05eec2a7 +#13: xsmaddmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmaddmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmaddmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsmaddmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#18: xsmaddmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmaddmdp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsmaddmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0123214569900000 +#21: xsmaddmdp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsmaddmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmaddmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmaddmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsmaddmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f5a07b353 +#26: xsmaddmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmaddmdp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmaddmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0123214569900000 +#29: xsmaddmdp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsmaddmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmaddmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmaddmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmaddmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f5a07b353 +#34: xsmaddmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 82039a19ca8fcb5f +#35: xsmaddmdp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmaddmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsmaddmdp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmaddmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmaddmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmaddmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmaddmdp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmaddmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmaddmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmaddmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmaddmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmaddmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmaddmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmaddmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmaddmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmaddmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmaddmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmaddmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmaddmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmaddmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmaddmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmaddmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmaddmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmsubadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#1: xsmsubadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmsubadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmsubadp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmsubadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmsubadp 7ff0000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#6: xsmsubadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsmsubadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmsubadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsmsubadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f5a07b353 +#10: xsmsubadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#11: xsmsubadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#12: xsmsubadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#13: xsmsubadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsmsubadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsmsubadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmsubadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsmsubadp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f5a07b353 +#18: xsmsubadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmsubadp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsmsubadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8123214569900000 +#21: xsmsubadp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsmsubadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsmsubadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmsubadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsmsubadp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f5a07b353 +#26: xsmsubadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsmsubadp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmsubadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8123214569900000 +#29: xsmsubadp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsmsubadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsmsubadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmsubadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsmsubadp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f5a07b353 +#34: xsmsubadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#35: xsmsubadp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmsubadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsmsubadp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsmsubadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsmsubadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmsubadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsmsubadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmsubadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmsubadp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmsubadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmsubadp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsmsubadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsmsubadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmsubadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsmsubadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsmsubadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsmsubadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsmsubadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsmsubadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsmsubadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsmsubadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsmsubadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmsubadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmsubadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmsubadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmsubadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmsubadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmsubadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmsubadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmsubmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmsubmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmsubmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmsubmdp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmsubmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmsubmdp 0123214569900000 fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmsubmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmsubmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmsubmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f5a07b353 +#10: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d05eec2a7 +#11: xsmsubmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 82039a19ca8fcb5f +#12: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d05eec2a7 +#13: xsmsubmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmsubmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmsubmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmsubmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsmsubmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xsmsubmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmsubmdp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmsubmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8123214569900000 +#21: xsmsubmdp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsmsubmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmsubmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmsubmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsmsubmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xsmsubmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsmsubmdp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmsubmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8123214569900000 +#29: xsmsubmdp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsmsubmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmsubmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmsubmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsmsubmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xsmsubmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 82039a19ca8fcb5f +#35: xsmsubmdp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmsubmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsmsubmdp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsmsubmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmsubmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsmsubmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmsubmdp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmsubmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsmsubmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmsubmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmsubmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmsubmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmsubmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmsubmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmsubmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmsubmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmsubmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmsubmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmsubmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmsubmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmsubmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmsubmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmsubmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmaddadp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsnmaddadp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmaddadp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmaddadp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmaddadp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmaddadp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsnmaddadp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#7: xsnmaddadp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmaddadp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsnmaddadp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f5a07b353 +#10: xsnmaddadp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d05eec2a7 +#11: xsnmaddadp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 02039a19ca8fcb5f +#12: xsnmaddadp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d05eec2a7 +#13: xsnmaddadp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsnmaddadp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffffffffff +#15: xsnmaddadp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmaddadp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsnmaddadp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f5a07b353 +#18: xsnmaddadp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmaddadp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsnmaddadp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8123214569900000 +#21: xsnmaddadp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsnmaddadp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#23: xsnmaddadp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmaddadp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsnmaddadp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f5a07b353 +#26: xsnmaddadp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsnmaddadp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmaddadp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8123214569900000 +#29: xsnmaddadp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsnmaddadp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#31: xsnmaddadp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmaddadp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsnmaddadp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f5a07b353 +#34: xsnmaddadp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 02039a19ca8fcb5f +#35: xsnmaddadp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmaddadp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsnmaddadp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsnmaddadp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffffffffff +#39: xsnmaddadp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmaddadp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#41: xsnmaddadp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmaddadp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmaddadp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmaddadp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmaddadp 7ff0000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#46: xsnmaddadp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffffffffff +#47: xsnmaddadp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmaddadp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#49: xsnmaddadp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#50: xsnmaddadp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#51: xsnmaddadp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#52: xsnmaddadp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#53: xsnmaddadp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#54: xsnmaddadp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#55: xsnmaddadp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#56: xsnmaddadp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmaddadp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmaddadp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmaddadp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmaddadp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmaddadp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmaddadp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmaddadp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsnmaddmdp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmaddmdp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmaddmdp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsnmaddmdp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsnmaddmdp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f5a07b353 +#10: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d05eec2a7 +#11: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 02039a19ca8fcb5f +#12: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d05eec2a7 +#13: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsnmaddmdp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsnmaddmdp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmaddmdp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsnmaddmdp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xsnmaddmdp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmaddmdp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsnmaddmdp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8123214569900000 +#21: xsnmaddmdp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsnmaddmdp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsnmaddmdp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmaddmdp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsnmaddmdp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xsnmaddmdp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsnmaddmdp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmaddmdp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8123214569900000 +#29: xsnmaddmdp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsnmaddmdp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsnmaddmdp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmaddmdp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsnmaddmdp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xsnmaddmdp c0d0650f5a07b353 0123214569900000 8000000000000000 = 02039a19ca8fcb5f +#35: xsnmaddmdp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmaddmdp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsnmaddmdp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsnmaddmdp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsnmaddmdp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xsnmaddmdp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmaddmdp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmaddmdp 0123214569900000 7ff0000000000000 7ff0000000000000 = fff0000000000000 +#46: xsnmaddmdp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsnmaddmdp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsnmaddmdp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsnmaddmdp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsnmaddmdp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsnmaddmdp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsnmaddmdp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmaddmdp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmaddmdp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmaddmdp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmaddmdp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmaddmdp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmuldp fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmuldp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsmuldp fff0000000000000 8000000000000000 = 7ff8000000000000 +#3: xsmuldp fff0000000000000 0000000000000000 = 7ff8000000000000 +#4: xsmuldp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsmuldp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmuldp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xsmuldp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmuldp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmuldp c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d05eec2a7 +#10: xsmuldp c0d0650f5a07b353 8000000000000000 = 0000000000000000 +#11: xsmuldp c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmuldp c0d0650f5a07b353 0123214569900000 = 82039a19ca8fcb5f +#13: xsmuldp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmuldp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xsmuldp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmuldp 8000000000000000 fff0000000000000 = 7ff8000000000000 +#17: xsmuldp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsmuldp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmuldp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmuldp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmuldp 8000000000000000 7ff0000000000000 = 7ff8000000000000 +#22: xsmuldp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xsmuldp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmuldp 0000000000000000 fff0000000000000 = 7ff8000000000000 +#25: xsmuldp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsmuldp 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmuldp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmuldp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmuldp 0000000000000000 7ff0000000000000 = 7ff8000000000000 +#30: xsmuldp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xsmuldp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmuldp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmuldp 0123214569900000 c0d0650f5a07b353 = 82039a19ca8fcb5f +#34: xsmuldp 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmuldp 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmuldp 0123214569900000 404f000000000000 = 0182883b3e438000 +#37: xsmuldp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmuldp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xsmuldp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmuldp 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmuldp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsmuldp 7ff0000000000000 8000000000000000 = 7ff8000000000000 +#43: xsmuldp 7ff0000000000000 0000000000000000 = 7ff8000000000000 +#44: xsmuldp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsmuldp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmuldp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xsmuldp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmuldp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xsmuldp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xsmuldp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xsmuldp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xsmuldp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xsmuldp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xsmuldp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xsmuldp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xsmuldp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmuldp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmuldp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmuldp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmuldp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmuldp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmuldp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmuldp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xssubdp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xssubdp fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xssubdp fff0000000000000 8000000000000000 = fff0000000000000 +#3: xssubdp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xssubdp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xssubdp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xssubdp fff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#7: xssubdp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xssubdp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xssubdp c0d0650f5a07b353 c0d0650f5a07b353 = 0000000000000000 +#10: xssubdp c0d0650f5a07b353 8000000000000000 = c0d0650f5a07b353 +#11: xssubdp c0d0650f5a07b353 0000000000000000 = c0d0650f5a07b353 +#12: xssubdp c0d0650f5a07b353 0123214569900000 = c0d0650f5a07b353 +#13: xssubdp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xssubdp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffffffffff +#15: xssubdp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xssubdp 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xssubdp 8000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#18: xssubdp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xssubdp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xssubdp 8000000000000000 0123214569900000 = 8123214569900000 +#21: xssubdp 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xssubdp 8000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#23: xssubdp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xssubdp 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xssubdp 0000000000000000 c0d0650f5a07b353 = 40d0650f5a07b353 +#26: xssubdp 0000000000000000 8000000000000000 = 0000000000000000 +#27: xssubdp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xssubdp 0000000000000000 0123214569900000 = 8123214569900000 +#29: xssubdp 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xssubdp 0000000000000000 7ff7ffffffffffff = 7fffffffffffffff +#31: xssubdp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xssubdp 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xssubdp 0123214569900000 c0d0650f5a07b353 = 40d0650f5a07b353 +#34: xssubdp 0123214569900000 8000000000000000 = 0123214569900000 +#35: xssubdp 0123214569900000 0000000000000000 = 0123214569900000 +#36: xssubdp 0123214569900000 404f000000000000 = c04f000000000000 +#37: xssubdp 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xssubdp 0123214569900000 7ff7ffffffffffff = 7fffffffffffffff +#39: xssubdp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xssubdp 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xssubdp 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xssubdp 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xssubdp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xssubdp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xssubdp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xssubdp 7ff0000000000000 7ff7ffffffffffff = 7fffffffffffffff +#47: xssubdp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xssubdp fff7ffffffffffff fff0000000000000 = ffffffffffffffff +#49: xssubdp fff7ffffffffffff c0d0650f5a07b353 = ffffffffffffffff +#50: xssubdp fff7ffffffffffff 8000000000000000 = ffffffffffffffff +#51: xssubdp fff7ffffffffffff 0000000000000000 = ffffffffffffffff +#52: xssubdp fff7ffffffffffff 0123214569900000 = ffffffffffffffff +#53: xssubdp fff7ffffffffffff 7ff0000000000000 = ffffffffffffffff +#54: xssubdp fff7ffffffffffff 7ff7ffffffffffff = ffffffffffffffff +#55: xssubdp fff7ffffffffffff 7ff8000000000000 = ffffffffffffffff +#56: xssubdp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xssubdp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xssubdp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xssubdp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xssubdp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xssubdp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xssubdp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xssubdp fff8000000000000 7ff8000000000000 = fff8000000000000 + + +Test VSX scalar integer conversion instructions +#0: xscvdpsxds 3fd8000000000000 => 0000000000000000 +#1: xscvdpsxds 404f000000000000 => 000000000000003e +#2: xscvdpsxds 0018000000b77501 => 0000000000000000 +#3: xscvdpsxds 7fe800000000051b => 7fffffffffffffff +#4: xscvdpsxds 0123214569900000 => 0000000000000000 +#5: xscvdpsxds 0000000000000000 => 0000000000000000 +#6: xscvdpsxds 8000000000000000 => 0000000000000000 +#7: xscvdpsxds 7ff0000000000000 => 7fffffffffffffff +#8: xscvdpsxds fff0000000000000 => 8000000000000000 +#9: xscvdpsxds 7ff7ffffffffffff => 8000000000000000 +#10: xscvdpsxds fff7ffffffffffff => 8000000000000000 +#11: xscvdpsxds 7ff8000000000000 => 8000000000000000 +#12: xscvdpsxds fff8000000000000 => 8000000000000000 +#13: xscvdpsxds 8008340000078000 => 0000000000000000 +#14: xscvdpsxds c0d0650f5a07b353 => ffffffffffffbe6c + +#0: xscvsxddp 3fd8000000000000 => 43cfec0000000000 +#1: xscvsxddp 404f000000000000 => 43d013c000000000 +#2: xscvsxddp 0018000000b77501 => 4338000000b77501 +#3: xscvsxddp 7fe800000000051b => 43dffa0000000001 +#4: xscvsxddp 0123214569900000 => 4372321456990000 +#5: xscvsxddp 0000000000000000 => 0000000000000000 +#6: xscvsxddp 8000000000000000 => c3e0000000000000 +#7: xscvsxddp 7ff0000000000000 => 43dffc0000000000 +#8: xscvsxddp fff0000000000000 => c330000000000000 +#9: xscvsxddp 7ff7ffffffffffff => 43dffe0000000000 +#10: xscvsxddp fff7ffffffffffff => c320000000000002 +#11: xscvsxddp 7ff8000000000000 => 43dffe0000000000 +#12: xscvsxddp fff8000000000000 => c320000000000000 +#13: xscvsxddp 8008340000078000 => c3dffdf2fffffe20 +#14: xscvsxddp c0d0650f5a07b353 => c3cf97cd7852fc26 + +#0: xscvuxddp 3fd8000000000000 => 43cfec0000000000 +#1: xscvuxddp 404f000000000000 => 43d013c000000000 +#2: xscvuxddp 0018000000b77501 => 4338000000b77501 +#3: xscvuxddp 7fe800000000051b => 43dffa0000000001 +#4: xscvuxddp 0123214569900000 => 4372321456990000 +#5: xscvuxddp 0000000000000000 => 0000000000000000 +#6: xscvuxddp 8000000000000000 => 43e0000000000000 +#7: xscvuxddp 7ff0000000000000 => 43dffc0000000000 +#8: xscvuxddp fff0000000000000 => 43effe0000000000 +#9: xscvuxddp 7ff7ffffffffffff => 43dffe0000000000 +#10: xscvuxddp fff7ffffffffffff => 43efff0000000000 +#11: xscvuxddp 7ff8000000000000 => 43dffe0000000000 +#12: xscvuxddp fff8000000000000 => 43efff0000000000 +#13: xscvuxddp 8008340000078000 => 43e00106800000f0 +#14: xscvuxddp c0d0650f5a07b353 => 43e81a0ca1eb40f6 + + +Testcase PASSED diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.vgtest new file mode 100644 index 000000000..512a21812 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/test_isa_2_06_part1.vgtest @@ -0,0 +1,2 @@ +prereq: ../../../tests/check_isa-2_06_cap +prog: test_isa_2_06_part1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/require-text-symbol-2.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/require-text-symbol-2.vgtest index 9469990be..640f3f917 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/require-text-symbol-2.vgtest +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/require-text-symbol-2.vgtest @@ -1,4 +1,5 @@ prog: require-text-symbol vgopts: -q "--require-text-symbol=:*libc.so*:doesntexist" prog: require-text-symbol -vgopts: -q "--require-text-symbol=:*libc.so*:doesntexist" +vgopts: -q "--require-text-symbol=:*libc.so*:doesntexist" --vgdb-prefix=./vgdb-prefix-require-text-symbol-2 +cleanup: rm ./vgdb-prefix-require-text-symbol-2* diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.am new file mode 100644 index 000000000..a100e8867 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.am @@ -0,0 +1,28 @@ +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr + +INSN_TESTS = clc clcle cvb cvd icm lpr tcxb lam_stam xc mvst add sub mul \ + and or xor insert div srst fold_And16 flogr sub_EI add_EI \ + and_EI or_EI xor_EI insert_EI mul_GE add_GE condloadstore \ + op_exception fgx stck stckf stcke + +check_PROGRAMS = $(INSN_TESTS) \ + ex_sig \ + ex_clone + +EXTRA_DIST = \ + $(addsuffix .stderr.exp,$(INSN_TESTS)) \ + $(addsuffix .stdout.exp,$(INSN_TESTS)) \ + $(addsuffix .vgtest,$(INSN_TESTS)) \ + ex_sig.stdout.exp ex_sig.stderr.exp ex_sig.vgtest \ + ex_clone.stdout.exp ex_clone.stderr.exp ex_clone.vgtest \ + test.h opcodes.h add.h and.h div.h insert.h \ + mul.h or.h sub.h test.h xor.h + +AM_CFLAGS += @FLAG_M64@ +AM_CXXFLAGS += @FLAG_M64@ +AM_CCASFLAGS += @FLAG_M64@ + +ex_clone_LDFLAGS = -lpthread +tcxb_CFLAGS = $(AM_CFLAGS) -std=gnu99 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.in new file mode 100644 index 000000000..f51bd4829 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/Makefile.in @@ -0,0 +1,1020 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am +check_PROGRAMS = $(am__EXEEXT_1) ex_sig$(EXEEXT) ex_clone$(EXEEXT) +subdir = none/tests/s390x +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__EXEEXT_1 = clc$(EXEEXT) clcle$(EXEEXT) cvb$(EXEEXT) cvd$(EXEEXT) \ + icm$(EXEEXT) lpr$(EXEEXT) tcxb$(EXEEXT) lam_stam$(EXEEXT) \ + xc$(EXEEXT) mvst$(EXEEXT) add$(EXEEXT) sub$(EXEEXT) \ + mul$(EXEEXT) and$(EXEEXT) or$(EXEEXT) xor$(EXEEXT) \ + insert$(EXEEXT) div$(EXEEXT) srst$(EXEEXT) fold_And16$(EXEEXT) \ + flogr$(EXEEXT) sub_EI$(EXEEXT) add_EI$(EXEEXT) and_EI$(EXEEXT) \ + or_EI$(EXEEXT) xor_EI$(EXEEXT) insert_EI$(EXEEXT) \ + mul_GE$(EXEEXT) add_GE$(EXEEXT) condloadstore$(EXEEXT) \ + op_exception$(EXEEXT) fgx$(EXEEXT) stck$(EXEEXT) \ + stckf$(EXEEXT) stcke$(EXEEXT) +add_SOURCES = add.c +add_OBJECTS = add.$(OBJEXT) +add_LDADD = $(LDADD) +add_EI_SOURCES = add_EI.c +add_EI_OBJECTS = add_EI.$(OBJEXT) +add_EI_LDADD = $(LDADD) +add_GE_SOURCES = add_GE.c +add_GE_OBJECTS = add_GE.$(OBJEXT) +add_GE_LDADD = $(LDADD) +and_SOURCES = and.c +and_OBJECTS = and.$(OBJEXT) +and_LDADD = $(LDADD) +and_EI_SOURCES = and_EI.c +and_EI_OBJECTS = and_EI.$(OBJEXT) +and_EI_LDADD = $(LDADD) +clc_SOURCES = clc.c +clc_OBJECTS = clc.$(OBJEXT) +clc_LDADD = $(LDADD) +clcle_SOURCES = clcle.c +clcle_OBJECTS = clcle.$(OBJEXT) +clcle_LDADD = $(LDADD) +condloadstore_SOURCES = condloadstore.c +condloadstore_OBJECTS = condloadstore.$(OBJEXT) +condloadstore_LDADD = $(LDADD) +cvb_SOURCES = cvb.c +cvb_OBJECTS = cvb.$(OBJEXT) +cvb_LDADD = $(LDADD) +cvd_SOURCES = cvd.c +cvd_OBJECTS = cvd.$(OBJEXT) +cvd_LDADD = $(LDADD) +div_SOURCES = div.c +div_OBJECTS = div.$(OBJEXT) +div_LDADD = $(LDADD) +ex_clone_SOURCES = ex_clone.c +ex_clone_OBJECTS = ex_clone.$(OBJEXT) +ex_clone_LDADD = $(LDADD) +ex_clone_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ex_clone_LDFLAGS) \ + $(LDFLAGS) -o $@ +ex_sig_SOURCES = ex_sig.c +ex_sig_OBJECTS = ex_sig.$(OBJEXT) +ex_sig_LDADD = $(LDADD) +fgx_SOURCES = fgx.c +fgx_OBJECTS = fgx.$(OBJEXT) +fgx_LDADD = $(LDADD) +flogr_SOURCES = flogr.c +flogr_OBJECTS = flogr.$(OBJEXT) +flogr_LDADD = $(LDADD) +fold_And16_SOURCES = fold_And16.c +fold_And16_OBJECTS = fold_And16.$(OBJEXT) +fold_And16_LDADD = $(LDADD) +icm_SOURCES = icm.c +icm_OBJECTS = icm.$(OBJEXT) +icm_LDADD = $(LDADD) +insert_SOURCES = insert.c +insert_OBJECTS = insert.$(OBJEXT) +insert_LDADD = $(LDADD) +insert_EI_SOURCES = insert_EI.c +insert_EI_OBJECTS = insert_EI.$(OBJEXT) +insert_EI_LDADD = $(LDADD) +lam_stam_SOURCES = lam_stam.c +lam_stam_OBJECTS = lam_stam.$(OBJEXT) +lam_stam_LDADD = $(LDADD) +lpr_SOURCES = lpr.c +lpr_OBJECTS = lpr.$(OBJEXT) +lpr_LDADD = $(LDADD) +mul_SOURCES = mul.c +mul_OBJECTS = mul.$(OBJEXT) +mul_LDADD = $(LDADD) +mul_GE_SOURCES = mul_GE.c +mul_GE_OBJECTS = mul_GE.$(OBJEXT) +mul_GE_LDADD = $(LDADD) +mvst_SOURCES = mvst.c +mvst_OBJECTS = mvst.$(OBJEXT) +mvst_LDADD = $(LDADD) +op_exception_SOURCES = op_exception.c +op_exception_OBJECTS = op_exception.$(OBJEXT) +op_exception_LDADD = $(LDADD) +or_SOURCES = or.c +or_OBJECTS = or.$(OBJEXT) +or_LDADD = $(LDADD) +or_EI_SOURCES = or_EI.c +or_EI_OBJECTS = or_EI.$(OBJEXT) +or_EI_LDADD = $(LDADD) +srst_SOURCES = srst.c +srst_OBJECTS = srst.$(OBJEXT) +srst_LDADD = $(LDADD) +stck_SOURCES = stck.c +stck_OBJECTS = stck.$(OBJEXT) +stck_LDADD = $(LDADD) +stcke_SOURCES = stcke.c +stcke_OBJECTS = stcke.$(OBJEXT) +stcke_LDADD = $(LDADD) +stckf_SOURCES = stckf.c +stckf_OBJECTS = stckf.$(OBJEXT) +stckf_LDADD = $(LDADD) +sub_SOURCES = sub.c +sub_OBJECTS = sub.$(OBJEXT) +sub_LDADD = $(LDADD) +sub_EI_SOURCES = sub_EI.c +sub_EI_OBJECTS = sub_EI.$(OBJEXT) +sub_EI_LDADD = $(LDADD) +tcxb_SOURCES = tcxb.c +tcxb_OBJECTS = tcxb-tcxb.$(OBJEXT) +tcxb_LDADD = $(LDADD) +tcxb_LINK = $(CCLD) $(tcxb_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +xc_SOURCES = xc.c +xc_OBJECTS = xc.$(OBJEXT) +xc_LDADD = $(LDADD) +xor_SOURCES = xor.c +xor_OBJECTS = xor.$(OBJEXT) +xor_LDADD = $(LDADD) +xor_EI_SOURCES = xor_EI.c +xor_EI_OBJECTS = xor_EI.$(OBJEXT) +xor_EI_LDADD = $(LDADD) +SCRIPTS = $(dist_noinst_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = add.c add_EI.c add_GE.c and.c and_EI.c clc.c clcle.c \ + condloadstore.c cvb.c cvd.c div.c ex_clone.c ex_sig.c fgx.c \ + flogr.c fold_And16.c icm.c insert.c insert_EI.c lam_stam.c \ + lpr.c mul.c mul_GE.c mvst.c op_exception.c or.c or_EI.c srst.c \ + stck.c stcke.c stckf.c sub.c sub_EI.c tcxb.c xc.c xor.c \ + xor_EI.c +DIST_SOURCES = add.c add_EI.c add_GE.c and.c and_EI.c clc.c clcle.c \ + condloadstore.c cvb.c cvd.c div.c ex_clone.c ex_sig.c fgx.c \ + flogr.c fold_And16.c icm.c insert.c insert_EI.c lam_stam.c \ + lpr.c mul.c mul_GE.c mvst.c op_exception.c or.c or_EI.c srst.c \ + stck.c stcke.c stckf.c sub.c sub_EI.c tcxb.c xc.c xor.c \ + xor_EI.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MAIX32 = @FLAG_MAIX32@ +FLAG_MAIX64 = @FLAG_MAIX64@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ +FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +GDB = @GDB@ +GENERATED_SUPP = @GENERATED_SUPP@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +AM_CFLAGS_BASE = \ + -O2 -g \ + -Wall \ + -Wmissing-prototypes \ + -Wshadow \ + -Wpointer-arith \ + -Wstrict-prototypes \ + -Wmissing-declarations \ + @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ + -fno-strict-aliasing + +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing + +# These flags are used for building the preload shared objects. +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -mno-dynamic-no-pic -fpic -fPIC + +@VGCONF_OS_IS_L4RE_FALSE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_FALSE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +# +# Also: in newer versions of automake (1.10 onwards?) asm files ending with +# '.S' are considered "pre-processed" (as opposed to those ending in '.s') +# and so the CPPFLAGS are passed to the assembler. But this is not true for +# older automakes (e.g. 1.8.5, 1.9.6), sigh. So we include +# AM_CPPFLAGS_ in each AM_CCASFLAGS_ variable. This +# means some of the flags are duplicated on systems with newer versions of +# automake, but this does not really matter and seems hard to avoid. +@VGCONF_OS_IS_L4RE_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = $(L4_CPPFLAGS)\ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir) \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGA_@VGCONF_ARCH_PRI@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_OS_IS_L4RE_TRUE@ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 + +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_LINUX = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ -fomit-frame-pointer \ + @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_AMD64_LINUX = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_LINUX = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g +AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_LINUX = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(AM_CFLAGS_BASE) -marm + +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g +AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ +AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ + @FLAG_MAIX32@ -mcpu=powerpc -g + +AM_FLAG_M3264_PPC64_AIX5 = @FLAG_MAIX64@ +AM_CFLAGS_PPC64_AIX5 = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE) +AM_CCASFLAGS_PPC64_AIX5 = $(AM_CPPFLAGS_PPC64_AIX5) \ + @FLAG_MAIX64@ -mcpu=powerpc64 -g + +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 \ + -fno-stack-protector -fno-pic -fno-PIC + +AM_CCASFLAGS_X86_DARWIN = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.5 -fno-stack-protector + +AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g +AM_FLAG_M3264_X86_L4RE = @FLAG_M32@ +AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ + $(L4_CFLAGS) $(AM_CFLAGS_BASE) + +AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g +AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ +#AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CXXFLAGS_PRI = $(AM_CXXFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_L4RE = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ +PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub \ + -DVGA_$(VGCONF_ARCH_PRI)=1 \ + -DVGO_$(VGCONF_OS)=1 \ + -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1 + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -g @FLAG_M64@ +AM_CXXFLAGS = -Winline -Wall -Wshadow -g @FLAG_M64@ +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M64@ +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = filter_stderr +INSN_TESTS = clc clcle cvb cvd icm lpr tcxb lam_stam xc mvst add sub mul \ + and or xor insert div srst fold_And16 flogr sub_EI add_EI \ + and_EI or_EI xor_EI insert_EI mul_GE add_GE condloadstore \ + op_exception fgx stck stckf stcke + +EXTRA_DIST = \ + $(addsuffix .stderr.exp,$(INSN_TESTS)) \ + $(addsuffix .stdout.exp,$(INSN_TESTS)) \ + $(addsuffix .vgtest,$(INSN_TESTS)) \ + ex_sig.stdout.exp ex_sig.stderr.exp ex_sig.vgtest \ + ex_clone.stdout.exp ex_clone.stderr.exp ex_clone.vgtest \ + test.h opcodes.h add.h and.h div.h insert.h \ + mul.h or.h sub.h test.h xor.h + +ex_clone_LDFLAGS = -lpthread +tcxb_CFLAGS = $(AM_CFLAGS) -std=gnu99 +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign none/tests/s390x/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign none/tests/s390x/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +add$(EXEEXT): $(add_OBJECTS) $(add_DEPENDENCIES) + @rm -f add$(EXEEXT) + $(LINK) $(add_OBJECTS) $(add_LDADD) $(LIBS) +add_EI$(EXEEXT): $(add_EI_OBJECTS) $(add_EI_DEPENDENCIES) + @rm -f add_EI$(EXEEXT) + $(LINK) $(add_EI_OBJECTS) $(add_EI_LDADD) $(LIBS) +add_GE$(EXEEXT): $(add_GE_OBJECTS) $(add_GE_DEPENDENCIES) + @rm -f add_GE$(EXEEXT) + $(LINK) $(add_GE_OBJECTS) $(add_GE_LDADD) $(LIBS) +and$(EXEEXT): $(and_OBJECTS) $(and_DEPENDENCIES) + @rm -f and$(EXEEXT) + $(LINK) $(and_OBJECTS) $(and_LDADD) $(LIBS) +and_EI$(EXEEXT): $(and_EI_OBJECTS) $(and_EI_DEPENDENCIES) + @rm -f and_EI$(EXEEXT) + $(LINK) $(and_EI_OBJECTS) $(and_EI_LDADD) $(LIBS) +clc$(EXEEXT): $(clc_OBJECTS) $(clc_DEPENDENCIES) + @rm -f clc$(EXEEXT) + $(LINK) $(clc_OBJECTS) $(clc_LDADD) $(LIBS) +clcle$(EXEEXT): $(clcle_OBJECTS) $(clcle_DEPENDENCIES) + @rm -f clcle$(EXEEXT) + $(LINK) $(clcle_OBJECTS) $(clcle_LDADD) $(LIBS) +condloadstore$(EXEEXT): $(condloadstore_OBJECTS) $(condloadstore_DEPENDENCIES) + @rm -f condloadstore$(EXEEXT) + $(LINK) $(condloadstore_OBJECTS) $(condloadstore_LDADD) $(LIBS) +cvb$(EXEEXT): $(cvb_OBJECTS) $(cvb_DEPENDENCIES) + @rm -f cvb$(EXEEXT) + $(LINK) $(cvb_OBJECTS) $(cvb_LDADD) $(LIBS) +cvd$(EXEEXT): $(cvd_OBJECTS) $(cvd_DEPENDENCIES) + @rm -f cvd$(EXEEXT) + $(LINK) $(cvd_OBJECTS) $(cvd_LDADD) $(LIBS) +div$(EXEEXT): $(div_OBJECTS) $(div_DEPENDENCIES) + @rm -f div$(EXEEXT) + $(LINK) $(div_OBJECTS) $(div_LDADD) $(LIBS) +ex_clone$(EXEEXT): $(ex_clone_OBJECTS) $(ex_clone_DEPENDENCIES) + @rm -f ex_clone$(EXEEXT) + $(ex_clone_LINK) $(ex_clone_OBJECTS) $(ex_clone_LDADD) $(LIBS) +ex_sig$(EXEEXT): $(ex_sig_OBJECTS) $(ex_sig_DEPENDENCIES) + @rm -f ex_sig$(EXEEXT) + $(LINK) $(ex_sig_OBJECTS) $(ex_sig_LDADD) $(LIBS) +fgx$(EXEEXT): $(fgx_OBJECTS) $(fgx_DEPENDENCIES) + @rm -f fgx$(EXEEXT) + $(LINK) $(fgx_OBJECTS) $(fgx_LDADD) $(LIBS) +flogr$(EXEEXT): $(flogr_OBJECTS) $(flogr_DEPENDENCIES) + @rm -f flogr$(EXEEXT) + $(LINK) $(flogr_OBJECTS) $(flogr_LDADD) $(LIBS) +fold_And16$(EXEEXT): $(fold_And16_OBJECTS) $(fold_And16_DEPENDENCIES) + @rm -f fold_And16$(EXEEXT) + $(LINK) $(fold_And16_OBJECTS) $(fold_And16_LDADD) $(LIBS) +icm$(EXEEXT): $(icm_OBJECTS) $(icm_DEPENDENCIES) + @rm -f icm$(EXEEXT) + $(LINK) $(icm_OBJECTS) $(icm_LDADD) $(LIBS) +insert$(EXEEXT): $(insert_OBJECTS) $(insert_DEPENDENCIES) + @rm -f insert$(EXEEXT) + $(LINK) $(insert_OBJECTS) $(insert_LDADD) $(LIBS) +insert_EI$(EXEEXT): $(insert_EI_OBJECTS) $(insert_EI_DEPENDENCIES) + @rm -f insert_EI$(EXEEXT) + $(LINK) $(insert_EI_OBJECTS) $(insert_EI_LDADD) $(LIBS) +lam_stam$(EXEEXT): $(lam_stam_OBJECTS) $(lam_stam_DEPENDENCIES) + @rm -f lam_stam$(EXEEXT) + $(LINK) $(lam_stam_OBJECTS) $(lam_stam_LDADD) $(LIBS) +lpr$(EXEEXT): $(lpr_OBJECTS) $(lpr_DEPENDENCIES) + @rm -f lpr$(EXEEXT) + $(LINK) $(lpr_OBJECTS) $(lpr_LDADD) $(LIBS) +mul$(EXEEXT): $(mul_OBJECTS) $(mul_DEPENDENCIES) + @rm -f mul$(EXEEXT) + $(LINK) $(mul_OBJECTS) $(mul_LDADD) $(LIBS) +mul_GE$(EXEEXT): $(mul_GE_OBJECTS) $(mul_GE_DEPENDENCIES) + @rm -f mul_GE$(EXEEXT) + $(LINK) $(mul_GE_OBJECTS) $(mul_GE_LDADD) $(LIBS) +mvst$(EXEEXT): $(mvst_OBJECTS) $(mvst_DEPENDENCIES) + @rm -f mvst$(EXEEXT) + $(LINK) $(mvst_OBJECTS) $(mvst_LDADD) $(LIBS) +op_exception$(EXEEXT): $(op_exception_OBJECTS) $(op_exception_DEPENDENCIES) + @rm -f op_exception$(EXEEXT) + $(LINK) $(op_exception_OBJECTS) $(op_exception_LDADD) $(LIBS) +or$(EXEEXT): $(or_OBJECTS) $(or_DEPENDENCIES) + @rm -f or$(EXEEXT) + $(LINK) $(or_OBJECTS) $(or_LDADD) $(LIBS) +or_EI$(EXEEXT): $(or_EI_OBJECTS) $(or_EI_DEPENDENCIES) + @rm -f or_EI$(EXEEXT) + $(LINK) $(or_EI_OBJECTS) $(or_EI_LDADD) $(LIBS) +srst$(EXEEXT): $(srst_OBJECTS) $(srst_DEPENDENCIES) + @rm -f srst$(EXEEXT) + $(LINK) $(srst_OBJECTS) $(srst_LDADD) $(LIBS) +stck$(EXEEXT): $(stck_OBJECTS) $(stck_DEPENDENCIES) + @rm -f stck$(EXEEXT) + $(LINK) $(stck_OBJECTS) $(stck_LDADD) $(LIBS) +stcke$(EXEEXT): $(stcke_OBJECTS) $(stcke_DEPENDENCIES) + @rm -f stcke$(EXEEXT) + $(LINK) $(stcke_OBJECTS) $(stcke_LDADD) $(LIBS) +stckf$(EXEEXT): $(stckf_OBJECTS) $(stckf_DEPENDENCIES) + @rm -f stckf$(EXEEXT) + $(LINK) $(stckf_OBJECTS) $(stckf_LDADD) $(LIBS) +sub$(EXEEXT): $(sub_OBJECTS) $(sub_DEPENDENCIES) + @rm -f sub$(EXEEXT) + $(LINK) $(sub_OBJECTS) $(sub_LDADD) $(LIBS) +sub_EI$(EXEEXT): $(sub_EI_OBJECTS) $(sub_EI_DEPENDENCIES) + @rm -f sub_EI$(EXEEXT) + $(LINK) $(sub_EI_OBJECTS) $(sub_EI_LDADD) $(LIBS) +tcxb$(EXEEXT): $(tcxb_OBJECTS) $(tcxb_DEPENDENCIES) + @rm -f tcxb$(EXEEXT) + $(tcxb_LINK) $(tcxb_OBJECTS) $(tcxb_LDADD) $(LIBS) +xc$(EXEEXT): $(xc_OBJECTS) $(xc_DEPENDENCIES) + @rm -f xc$(EXEEXT) + $(LINK) $(xc_OBJECTS) $(xc_LDADD) $(LIBS) +xor$(EXEEXT): $(xor_OBJECTS) $(xor_DEPENDENCIES) + @rm -f xor$(EXEEXT) + $(LINK) $(xor_OBJECTS) $(xor_LDADD) $(LIBS) +xor_EI$(EXEEXT): $(xor_EI_OBJECTS) $(xor_EI_DEPENDENCIES) + @rm -f xor_EI$(EXEEXT) + $(LINK) $(xor_EI_OBJECTS) $(xor_EI_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_EI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_GE.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/and.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/and_EI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clcle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/condloadstore.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cvb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cvd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/div.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ex_clone.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ex_sig.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fgx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flogr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fold_And16.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insert_EI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lam_stam.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lpr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mul.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mul_GE.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mvst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/op_exception.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/or.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/or_EI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stck.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stcke.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stckf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sub_EI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcxb-tcxb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xor_EI.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +tcxb-tcxb.o: tcxb.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tcxb_CFLAGS) $(CFLAGS) -MT tcxb-tcxb.o -MD -MP -MF $(DEPDIR)/tcxb-tcxb.Tpo -c -o tcxb-tcxb.o `test -f 'tcxb.c' || echo '$(srcdir)/'`tcxb.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tcxb-tcxb.Tpo $(DEPDIR)/tcxb-tcxb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tcxb.c' object='tcxb-tcxb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tcxb_CFLAGS) $(CFLAGS) -c -o tcxb-tcxb.o `test -f 'tcxb.c' || echo '$(srcdir)/'`tcxb.c + +tcxb-tcxb.obj: tcxb.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tcxb_CFLAGS) $(CFLAGS) -MT tcxb-tcxb.obj -MD -MP -MF $(DEPDIR)/tcxb-tcxb.Tpo -c -o tcxb-tcxb.obj `if test -f 'tcxb.c'; then $(CYGPATH_W) 'tcxb.c'; else $(CYGPATH_W) '$(srcdir)/tcxb.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tcxb-tcxb.Tpo $(DEPDIR)/tcxb-tcxb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tcxb.c' object='tcxb-tcxb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tcxb_CFLAGS) $(CFLAGS) -c -o tcxb-tcxb.obj `if test -f 'tcxb.c'; then $(CYGPATH_W) 'tcxb.c'; else $(CYGPATH_W) '$(srcdir)/tcxb.c'; fi` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-local ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.c new file mode 100644 index 000000000..0041ed207 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.c @@ -0,0 +1,67 @@ +#include +#include "add.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(ahi, 0, 0); + immsweep(ahi, -1, 0); + immsweep(ahi, -32768, 0); + immsweep(ahi, 32767, 0); + immsweep(aghi, 0, 0); + immsweep(aghi, -1, 0); + immsweep(aghi, -32768, 0); + immsweep(aghi, 32767, 0); +} + + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(a, s2, 0); + memsweep(ah, s2, 0); + memsweep(ag, s2, 0); + memsweep(agf, s2, 0); + memsweep(al, s2, 0); + memsweep(alg, s2, 0); + memsweep(agf, s2, 0); + memsweep(algf, s2, 0); + regsweep(ar, s2, 0); + regsweep(agr, s2, 0); + regsweep(agfr, s2, 0); + regsweep(alr, s2, 0); + regsweep(algr, s2, 0); + regsweep(algfr, s2, 0); + memsweep(alc, s2, 0); + memsweep(alcg, s2, 0); + regsweep(alcr, s2, 0); + regsweep(alcgr, s2, 0); + memsweep(alc, s2, 1); + memsweep(alcg, s2, 1); + regsweep(alcr, s2, 1); + regsweep(alcgr, s2, 1); + ldispsweep(AHY, s2, 0); + ldispsweep(AY, s2, 0); + ldispsweep(ALY, s2, 0); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x7ffffffffffffffful); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.h new file mode 100644 index 000000000..53111617a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.h @@ -0,0 +1,206 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define ADD_REG_MEM(insn, s1, s2, CARRY) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define ADD_REG_REG(insn, s1, s2, CARRY) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d" (s2) \ + : "0", "cc"); \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define ADD_REG_IMM(insn, s1, s2, CARRY) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + #insn " %0," #s2 "\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "0", "cc"); \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) s2, tmp, cc); \ +}) + +#define ADD_MEM_IMM(insn, s1, s2, CARRY) \ +({ \ + unsigned long tmp = s1, v2; \ + register unsigned long *addr asm("5") = &tmp; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + insn(s2,5,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp), "d" (addr) \ + : "0", "cc"); \ + v2 = (((signed long)((unsigned long)0x##s2 << 56)) >> 56); \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, v2, tmp, cc); \ +}) + + +#define memsweep(i, s2, carryset) \ +({ \ + ADD_REG_MEM(i, 0ul, s2, carryset); \ + ADD_REG_MEM(i, 1ul, s2, carryset); \ + ADD_REG_MEM(i, 0xfffful, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffful, s2, carryset); \ + ADD_REG_MEM(i, 0x8000ul, s2, carryset); \ + ADD_REG_MEM(i, 0xfffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0x80000000ul, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0x8000000000000000ul, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define regsweep(i, s2, carryset) \ +({ \ + ADD_REG_REG(i, 0ul, s2, carryset); \ + ADD_REG_REG(i, 1ul, s2, carryset); \ + ADD_REG_REG(i, 0xfffful, s2, carryset); \ + ADD_REG_REG(i, 0x7ffful, s2, carryset); \ + ADD_REG_REG(i, 0x8000ul, s2, carryset); \ + ADD_REG_REG(i, 0xfffffffful, s2, carryset); \ + ADD_REG_REG(i, 0x80000000ul, s2, carryset); \ + ADD_REG_REG(i, 0x7ffffffful, s2, carryset); \ + ADD_REG_REG(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_REG_REG(i, 0x8000000000000000ul, s2, carryset); \ + ADD_REG_REG(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define immsweep(i, s2, carryset) \ +({ \ + ADD_REG_IMM(i, 0ul, s2, carryset); \ + ADD_REG_IMM(i, 1ul, s2, carryset); \ + ADD_REG_IMM(i, 0xfffful, s2, carryset); \ + ADD_REG_IMM(i, 0x7ffful, s2, carryset); \ + ADD_REG_IMM(i, 0x8000ul, s2, carryset); \ + ADD_REG_IMM(i, 0xfffffffful, s2, carryset); \ + ADD_REG_IMM(i, 0x80000000ul, s2, carryset); \ + ADD_REG_IMM(i, 0x7ffffffful, s2, carryset); \ + ADD_REG_IMM(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_REG_IMM(i, 0x8000000000000000ul, s2, carryset); \ + ADD_REG_IMM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define memimmsweep(i, s2, carryset) \ +({ \ + ADD_MEM_IMM(i, 0ul, s2, carryset); \ + ADD_MEM_IMM(i, 1ul, s2, carryset); \ + ADD_MEM_IMM(i, 0xfffful, s2, carryset); \ + ADD_MEM_IMM(i, 0x7ffful, s2, carryset); \ + ADD_MEM_IMM(i, 0x8000ul, s2, carryset); \ + ADD_MEM_IMM(i, 0xfffffffful, s2, carryset); \ + ADD_MEM_IMM(i, 0x80000000ul, s2, carryset); \ + ADD_MEM_IMM(i, 0x7ffffffful, s2, carryset); \ + ADD_MEM_IMM(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_MEM_IMM(i, 0x8000000000000000ul, s2, carryset); \ + ADD_MEM_IMM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define ahysweep(i, s2, carryset) \ +({ \ + ADD_REG_MEM(i, 0ul, s2, carryset); \ + ADD_REG_MEM(i, 1ul, s2, carryset); \ + ADD_REG_MEM(i, 0xfffful, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffful, s2, carryset); \ + ADD_REG_MEM(i, 0x8000ul, s2, carryset); \ + ADD_REG_MEM(i, 0xfffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0x80000000ul, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_REG_MEM(i, 0x8000000000000000ul, s2, carryset); \ + ADD_REG_MEM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define ADD_REG_LDISP(insn, s1, s2, CARRY) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + register unsigned long *addr asm("5") = &s2; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + insn(2,0,5,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2), "d"(addr) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, v, cc); \ +}) + +#define ldispsweep(i, s2, carryset) \ +({ \ + ADD_REG_LDISP(i, 0ul, s2, carryset); \ + ADD_REG_LDISP(i, 1ul, s2, carryset); \ + ADD_REG_LDISP(i, 0xfffful, s2, carryset); \ + ADD_REG_LDISP(i, 0x7ffful, s2, carryset); \ + ADD_REG_LDISP(i, 0x8000ul, s2, carryset); \ + ADD_REG_LDISP(i, 0xfffffffful, s2, carryset); \ + ADD_REG_LDISP(i, 0x80000000ul, s2, carryset); \ + ADD_REG_LDISP(i, 0x7ffffffful, s2, carryset); \ + ADD_REG_LDISP(i, 0xfffffffffffffffful, s2, carryset); \ + ADD_REG_LDISP(i, 0x8000000000000000ul, s2, carryset); \ + ADD_REG_LDISP(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define ADD_REG_XIMM(insn, s1, us2,s2, CARRY) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( "lghi 0," #CARRY "\n" \ + "aghi 0, 0\n" \ + insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "0", "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##us2##s2, v, cc); \ +}) + +#define ximmsweep(i, us2, s2, carryset) \ +({ \ + ADD_REG_XIMM(i, 0ul, us2, s2, carryset); \ + ADD_REG_XIMM(i, 1ul, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0xfffful, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x7ffful, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x8000ul, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0xfffffffful, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x80000000ul, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x7ffffffful, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0xfffffffffffffffful, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x8000000000000000ul, us2, s2, carryset); \ + ADD_REG_XIMM(i, 0x7ffffffffffffffful, us2, s2, carryset); \ +}) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stdout.exp new file mode 100644 index 000000000..afe21a473 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.stdout.exp @@ -0,0 +1,3938 @@ +a 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ag 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +ag 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +ag 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +ag 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +ag 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +ag 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +ag 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ag 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +agf 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alg 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alg 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alg 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alg 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alg 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alg 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alg 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alg 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ar 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +ar 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +ar 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +ar 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ar 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ar 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +ar 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +agr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +agr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +agr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +agr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +agr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +agr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +agr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +agfr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +agfr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +agfr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +agfr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +agfr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +agfr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +agfr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +alr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +alr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +algr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +algr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +algr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +algr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +algr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +algr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +algr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +algfr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +algfr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +algfr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +algfr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +algfr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alcg 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alcg 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alcg 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alcg 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alcg 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alcg 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcg 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alcr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alcr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alcr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alcr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +alcr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +alcgr 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +alcgr 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +alcgr 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 1 + 0000000000000000 + 0000000000000000 = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 0000000000000000 = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 0000000000000000 = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 0000000000000000 = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 0000000000000000 = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 0000000000000000 = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 0000000000000000 = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 0000000000000000 = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 0000000000000000 = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 0000000000000000 = 0000000000000001 (cc=1) +alcg 1 + 0000000000000001 + 0000000000000000 = 0000000000000002 (cc=1) +alcg 1 + 000000000000FFFF + 0000000000000000 = 0000000000010000 (cc=1) +alcg 1 + 0000000000007FFF + 0000000000000000 = 0000000000008000 (cc=1) +alcg 1 + 0000000000008000 + 0000000000000000 = 0000000000008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 0000000000000000 = 0000000100000000 (cc=1) +alcg 1 + 0000000080000000 + 0000000000000000 = 0000000080000001 (cc=1) +alcg 1 + 000000007FFFFFFF + 0000000000000000 = 0000000080000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 0000000000000000 = 0000000000000000 (cc=2) +alcg 1 + 8000000000000000 + 0000000000000000 = 8000000000000001 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 8000000000000000 (cc=1) +alcr 1 + 0000000000000000 + 0000000000000000 = 0000000000000001 (cc=1) +alcr 1 + 0000000000000001 + 0000000000000000 = 0000000000000002 (cc=1) +alcr 1 + 000000000000FFFF + 0000000000000000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000007FFF + 0000000000000000 = 0000000000008000 (cc=1) +alcr 1 + 0000000000008000 + 0000000000000000 = 0000000000008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 0000000000000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000080000000 + 0000000000000000 = 0000000080000001 (cc=1) +alcr 1 + 000000007FFFFFFF + 0000000000000000 = 0000000080000000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFF00000000 (cc=2) +alcr 1 + 8000000000000000 + 0000000000000000 = 8000000000000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFF00000000 (cc=2) +alcgr 1 + 0000000000000000 + 0000000000000000 = 0000000000000001 (cc=1) +alcgr 1 + 0000000000000001 + 0000000000000000 = 0000000000000002 (cc=1) +alcgr 1 + 000000000000FFFF + 0000000000000000 = 0000000000010000 (cc=1) +alcgr 1 + 0000000000007FFF + 0000000000000000 = 0000000000008000 (cc=1) +alcgr 1 + 0000000000008000 + 0000000000000000 = 0000000000008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 0000000000000000 = 0000000100000000 (cc=1) +alcgr 1 + 0000000080000000 + 0000000000000000 = 0000000080000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 0000000000000000 = 0000000080000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 0000000000000000 = 0000000000000000 (cc=2) +alcgr 1 + 8000000000000000 + 0000000000000000 = 8000000000000001 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 8000000000000000 (cc=1) +AHY 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +a 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +a 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=3) +a 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=3) +a 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=3) +a 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +a 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +a 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +a 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFE (cc=2) +a 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=2) +a 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE (cc=2) +ah 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000008000 (cc=2) +ah 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 0000000000017FFE (cc=2) +ah 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ah 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 000000000000FFFF (cc=2) +ah 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ah 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +ah 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=3) +ah 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF00007FFE (cc=2) +ah 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=2) +ah 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF00007FFE (cc=2) +ag 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +ag 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=3) +ag 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=3) +ag 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=3) +ag 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=3) +ag 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=3) +ag 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=3) +ag 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=3) +ag 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +ag 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +agf 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=2) +agf 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=2) +agf 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=2) +agf 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agf 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=3) +al 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +al 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +al 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=1) +al 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=1) +al 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +al 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +al 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +al 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +al 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +alg 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +alg 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=1) +alg 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=1) +alg 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +alg 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +alg 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alg 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alg 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agf 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=2) +agf 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=2) +agf 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=2) +agf 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agf 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=3) +algf 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +algf 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +algf 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=1) +algf 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=1) +algf 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +algf 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=1) +algf 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +algf 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=1) +ar 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ar 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ar 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ar 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ar 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +ar 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ar 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ar 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +ar 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +agr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +agr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=3) +agr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=3) +agr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=3) +agr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=3) +agr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=3) +agr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=3) +agr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=3) +agr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +agr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +agfr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +agfr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +agfr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +agfr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agfr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agfr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agfr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agfr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +alr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +algr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +algr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=1) +algr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=1) +algr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +algr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +algr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +algr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +algr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +algfr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000100000000 (cc=1) +algfr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000010000FFFE (cc=1) +algfr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000100007FFE (cc=1) +algfr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000100007FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000001FFFFFFFE (cc=1) +algfr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 000000017FFFFFFF (cc=1) +algfr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +algfr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +alc 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +alc 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +alc 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=1) +alc 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=1) +alc 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +alc 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alc 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +alc 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +alcg 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +alcg 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=1) +alcg 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=1) +alcg 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +alcg 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alcg 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcg 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +alcr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alcr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alcr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alcr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alcr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alcr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcgr 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +alcgr 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFE (cc=1) +alcgr 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFE (cc=1) +alcgr 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +alcgr 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcgr 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +alc 1 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +alc 1 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000001 (cc=1) +alc 1 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFF (cc=1) +alc 1 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +alc 1 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080008000 (cc=1) +alc 1 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alc 1 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alc 1 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFF (cc=3) +alc 1 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 8000000080000000 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFF (cc=3) +alcg 1 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +alcg 1 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000001 (cc=1) +alcg 1 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFF (cc=1) +alcg 1 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +alcg 1 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000008000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alcg 1 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 8000000080000000 (cc=1) +alcg 1 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcg 1 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcg 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alcr 1 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcr 1 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000000001 (cc=3) +alcr 1 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000000000FFFF (cc=3) +alcr 1 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcr 1 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000000008000 (cc=3) +alcr 1 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=3) +alcr 1 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +alcr 1 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 1 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alcr 1 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=2) +alcr 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 1 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +alcgr 1 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 8000000000000001 (cc=1) +alcgr 1 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 800000000000FFFF (cc=1) +alcgr 1 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=1) +alcgr 1 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 8000000000008000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alcgr 1 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 8000000080000000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 1 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcgr 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000000008000 (cc=2) +AHY 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 0000000000017FFE (cc=2) +AHY 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AHY 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 000000000000FFFF (cc=2) +AHY 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AHY 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +AHY 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=3) +AHY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF00007FFE (cc=2) +AHY 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 8000000000007FFF (cc=2) +AHY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF00007FFE (cc=2) +AY 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +AY 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +AY 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=3) +AY 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=3) +AY 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=3) +AY 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AY 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +AY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFE (cc=2) +AY 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=2) +AY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE (cc=2) +ALY 0 + 0000000000000000 + 7FFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +ALY 0 + 0000000000000001 + 7FFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +ALY 0 + 000000000000FFFF + 7FFFFFFFFFFFFFFF = 000000008000FFFE (cc=1) +ALY 0 + 0000000000007FFF + 7FFFFFFFFFFFFFFF = 0000000080007FFE (cc=1) +ALY 0 + 0000000000008000 + 7FFFFFFFFFFFFFFF = 0000000080007FFF (cc=1) +ALY 0 + 00000000FFFFFFFF + 7FFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +ALY 0 + 0000000080000000 + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 000000007FFFFFFF + 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +ALY 0 + 8000000000000000 + 7FFFFFFFFFFFFFFF = 800000007FFFFFFF (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +a 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +a 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +a 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +a 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +a 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +a 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +a 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=3) +a 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +a 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +a 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +a 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +ah 0 + 0000000000000000 + 8000000000000000 = 00000000FFFF8000 (cc=1) +ah 0 + 0000000000000001 + 8000000000000000 = 00000000FFFF8001 (cc=1) +ah 0 + 000000000000FFFF + 8000000000000000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000007FFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000000008000 + 8000000000000000 = 0000000000000000 (cc=0) +ah 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFF7FFF (cc=1) +ah 0 + 0000000080000000 + 8000000000000000 = 000000007FFF8000 (cc=3) +ah 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFF7FFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFF7FFF (cc=1) +ah 0 + 8000000000000000 + 8000000000000000 = 80000000FFFF8000 (cc=1) +ah 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFF7FFF (cc=1) +ag 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +ag 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +ag 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +ag 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +ag 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +ag 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +ag 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +ag 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +ag 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +ag 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=3) +ag 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 8000000000000000 = FFFFFFFF80000000 (cc=1) +agf 0 + 0000000000000001 + 8000000000000000 = FFFFFFFF80000001 (cc=1) +agf 0 + 000000000000FFFF + 8000000000000000 = FFFFFFFF8000FFFF (cc=1) +agf 0 + 0000000000007FFF + 8000000000000000 = FFFFFFFF80007FFF (cc=1) +agf 0 + 0000000000008000 + 8000000000000000 = FFFFFFFF80008000 (cc=1) +agf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=0) +agf 0 + 000000007FFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +agf 0 + 8000000000000000 + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=2) +al 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +al 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +al 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +al 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +al 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +al 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +al 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +al 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +al 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +alg 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alg 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alg 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alg 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alg 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alg 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alg 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alg 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alg 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alg 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 8000000000000000 = FFFFFFFF80000000 (cc=1) +agf 0 + 0000000000000001 + 8000000000000000 = FFFFFFFF80000001 (cc=1) +agf 0 + 000000000000FFFF + 8000000000000000 = FFFFFFFF8000FFFF (cc=1) +agf 0 + 0000000000007FFF + 8000000000000000 = FFFFFFFF80007FFF (cc=1) +agf 0 + 0000000000008000 + 8000000000000000 = FFFFFFFF80008000 (cc=1) +agf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=0) +agf 0 + 000000007FFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +agf 0 + 8000000000000000 + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=2) +algf 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +algf 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +algf 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +algf 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +algf 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000017FFFFFFF (cc=1) +algf 0 + 0000000080000000 + 8000000000000000 = 0000000100000000 (cc=1) +algf 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +algf 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +ar 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +ar 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=2) +ar 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=2) +ar 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=2) +ar 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +ar 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ar 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +ar 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +agr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +agr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +agr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +agr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +agr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +agr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +agr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +agr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +agr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=3) +agr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +agfr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=2) +agfr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=2) +agfr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=2) +agfr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=2) +agfr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=2) +agfr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +alr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +alr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +alr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +alr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +alr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +alr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +alr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +algr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +algr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +algr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +algr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +algr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +algr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +algr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +algr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +algr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +algfr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +algfr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +algfr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +algfr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +alc 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +alc 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +alc 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +alc 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +alc 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +alc 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +alc 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +alcg 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alcg 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alcg 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alcg 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alcg 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alcg 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alcg 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alcg 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alcg 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +alcr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +alcr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +alcr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +alcr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +alcr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alcgr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alcgr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alcgr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alcgr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alc 1 + 0000000000000000 + 8000000000000000 = 0000000080000001 (cc=1) +alc 1 + 0000000000000001 + 8000000000000000 = 0000000080000002 (cc=1) +alc 1 + 000000000000FFFF + 8000000000000000 = 0000000080010000 (cc=1) +alc 1 + 0000000000007FFF + 8000000000000000 = 0000000080008000 (cc=1) +alc 1 + 0000000000008000 + 8000000000000000 = 0000000080008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 8000000000000000 = 0000000080000000 (cc=3) +alc 1 + 0000000080000000 + 8000000000000000 = 0000000000000001 (cc=3) +alc 1 + 000000007FFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alc 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF80000000 (cc=3) +alc 1 + 8000000000000000 + 8000000000000000 = 8000000080000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +alcg 1 + 0000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcg 1 + 0000000000000001 + 8000000000000000 = 8000000000000002 (cc=1) +alcg 1 + 000000000000FFFF + 8000000000000000 = 8000000000010000 (cc=1) +alcg 1 + 0000000000007FFF + 8000000000000000 = 8000000000008000 (cc=1) +alcg 1 + 0000000000008000 + 8000000000000000 = 8000000000008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 8000000000000000 = 8000000100000000 (cc=1) +alcg 1 + 0000000080000000 + 8000000000000000 = 8000000080000001 (cc=1) +alcg 1 + 000000007FFFFFFF + 8000000000000000 = 8000000080000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = 8000000000000000 (cc=3) +alcg 1 + 8000000000000000 + 8000000000000000 = 0000000000000001 (cc=3) +alcg 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000000000000 + 8000000000000000 = 0000000000000001 (cc=1) +alcr 1 + 0000000000000001 + 8000000000000000 = 0000000000000002 (cc=1) +alcr 1 + 000000000000FFFF + 8000000000000000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000007FFF + 8000000000000000 = 0000000000008000 (cc=1) +alcr 1 + 0000000000008000 + 8000000000000000 = 0000000000008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000080000000 + 8000000000000000 = 0000000080000001 (cc=1) +alcr 1 + 000000007FFFFFFF + 8000000000000000 = 0000000080000000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF00000000 (cc=2) +alcr 1 + 8000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF00000000 (cc=2) +alcgr 1 + 0000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcgr 1 + 0000000000000001 + 8000000000000000 = 8000000000000002 (cc=1) +alcgr 1 + 000000000000FFFF + 8000000000000000 = 8000000000010000 (cc=1) +alcgr 1 + 0000000000007FFF + 8000000000000000 = 8000000000008000 (cc=1) +alcgr 1 + 0000000000008000 + 8000000000000000 = 8000000000008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 8000000000000000 = 8000000100000000 (cc=1) +alcgr 1 + 0000000080000000 + 8000000000000000 = 8000000080000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 8000000000000000 = 8000000080000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = 8000000000000000 (cc=3) +alcgr 1 + 8000000000000000 + 8000000000000000 = 0000000000000001 (cc=3) +alcgr 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +AHY 0 + 0000000000000000 + 8000000000000000 = 00000000FFFF8000 (cc=1) +AHY 0 + 0000000000000001 + 8000000000000000 = 00000000FFFF8001 (cc=1) +AHY 0 + 000000000000FFFF + 8000000000000000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000007FFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000000008000 + 8000000000000000 = 0000000000000000 (cc=0) +AHY 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFF7FFF (cc=1) +AHY 0 + 0000000080000000 + 8000000000000000 = 000000007FFF8000 (cc=3) +AHY 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFF7FFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFF7FFF (cc=1) +AHY 0 + 8000000000000000 + 8000000000000000 = 80000000FFFF8000 (cc=1) +AHY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFF7FFF (cc=1) +AY 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +AY 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +AY 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +AY 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +AY 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +AY 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +AY 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=3) +AY 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +AY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +AY 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +AY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +ALY 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +ALY 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +ALY 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +ALY 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +ALY 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +ALY 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +ALY 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +a 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +a 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +a 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +a 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +a 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +a 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +a 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +a 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +a 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +a 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +ah 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ah 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ah 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ah 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ah 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +ah 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ah 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ah 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +ah 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +ag 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ag 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ag 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ag 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ag 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +ag 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +ag 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ag 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +ag 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +agf 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +agf 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +agf 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +agf 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agf 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agf 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +al 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +al 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +al 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +al 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +al 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +al 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +al 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +al 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +al 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alg 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alg 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alg 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alg 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alg 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alg 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alg 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alg 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alg 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alg 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +agf 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +agf 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +agf 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +agf 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agf 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agf 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +algf 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000100000000 (cc=1) +algf 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000010000FFFE (cc=1) +algf 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000100007FFE (cc=1) +algf 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000100007FFF (cc=1) +algf 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000001FFFFFFFE (cc=1) +algf 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000017FFFFFFF (cc=1) +algf 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +algf 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +ar 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ar 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ar 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ar 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ar 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +ar 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ar 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ar 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +ar 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +agr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +agr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +agr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +agr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +agr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +agfr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +agfr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +agfr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +agfr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +agfr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +agfr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agfr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agfr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +alr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +algr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +algr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +algr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +algr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +algr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +algr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +algr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +algr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +algr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +algr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +algfr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000100000000 (cc=1) +algfr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000010000FFFE (cc=1) +algfr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000100007FFE (cc=1) +algfr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000100007FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000001FFFFFFFE (cc=1) +algfr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000017FFFFFFF (cc=1) +algfr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000017FFFFFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +algfr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 80000000FFFFFFFE (cc=1) +alc 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alc 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alc 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alc 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alc 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alc 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alc 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alc 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alc 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcg 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcg 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alcg 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alcg 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcg 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alcg 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcg 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alcg 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alcg 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcg 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alcr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alcr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alcr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alcr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alcr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcgr 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcgr 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +alcgr 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +alcgr 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcgr 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +alcgr 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcgr 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +alcgr 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alcgr 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alc 1 + 0000000000000000 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alc 1 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000001 (cc=3) +alc 1 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=3) +alc 1 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alc 1 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000008000 (cc=3) +alc 1 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=3) +alc 1 + 0000000080000000 + FFFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +alc 1 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alc 1 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alc 1 + 8000000000000000 + FFFFFFFFFFFFFFFF = 8000000000000000 (cc=2) +alc 1 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcg 1 + 0000000000000000 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcg 1 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000001 (cc=3) +alcg 1 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=3) +alcg 1 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcg 1 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000008000 (cc=3) +alcg 1 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=3) +alcg 1 + 0000000080000000 + FFFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +alcg 1 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcg 1 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alcg 1 + 8000000000000000 + FFFFFFFFFFFFFFFF = 8000000000000000 (cc=3) +alcg 1 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcr 1 + 0000000000000000 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcr 1 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000001 (cc=3) +alcr 1 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=3) +alcr 1 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcr 1 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000008000 (cc=3) +alcr 1 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=3) +alcr 1 + 0000000080000000 + FFFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +alcr 1 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 1 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alcr 1 + 8000000000000000 + FFFFFFFFFFFFFFFF = 8000000000000000 (cc=2) +alcr 1 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 1 + 0000000000000000 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +alcgr 1 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000001 (cc=3) +alcgr 1 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=3) +alcgr 1 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +alcgr 1 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000008000 (cc=3) +alcgr 1 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=3) +alcgr 1 + 0000000080000000 + FFFFFFFFFFFFFFFF = 0000000080000000 (cc=3) +alcgr 1 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +alcgr 1 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alcgr 1 + 8000000000000000 + FFFFFFFFFFFFFFFF = 8000000000000000 (cc=3) +alcgr 1 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +AHY 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AHY 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AHY 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AHY 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AHY 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +AHY 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +AHY 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AHY 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +AHY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +AY 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AY 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AY 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AY 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AY 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +AY 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +AY 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AY 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +AY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +ALY 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +ALY 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +ALY 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +ALY 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +ALY 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +ALY 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ALY 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +ALY 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +ALY 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +a 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +a 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=3) +a 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=3) +a 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=3) +a 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=3) +a 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=2) +a 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +a 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +a 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFE (cc=2) +a 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=2) +a 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE (cc=2) +ah 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000008000 (cc=2) +ah 0 + 000000000000FFFF + 7FFFFFFF00000000 = 0000000000017FFE (cc=2) +ah 0 + 0000000000007FFF + 7FFFFFFF00000000 = 000000000000FFFE (cc=2) +ah 0 + 0000000000008000 + 7FFFFFFF00000000 = 000000000000FFFF (cc=2) +ah 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 0000000000007FFE (cc=2) +ah 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +ah 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=3) +ah 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF00007FFE (cc=2) +ah 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000007FFF (cc=2) +ah 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFE (cc=2) +ag 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=2) +ag 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=2) +ag 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=2) +ag 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=2) +ag 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=2) +ag 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=2) +ag 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=2) +ag 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=2) +ag 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +agf 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=2) +agf 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=2) +agf 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=2) +agf 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000017FFFFFFE (cc=2) +agf 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=2) +agf 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 800000007FFFFFFE (cc=3) +al 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +al 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +al 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=1) +al 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=1) +al 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +al 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=3) +al 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +al 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFE (cc=3) +al 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE (cc=3) +alg 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +alg 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +alg 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +alg 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +alg 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +alg 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +alg 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +alg 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=2) +agf 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=2) +agf 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=2) +agf 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000017FFFFFFE (cc=2) +agf 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=2) +agf 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 800000007FFFFFFE (cc=3) +algf 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +algf 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +algf 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=1) +algf 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=1) +algf 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +algf 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000017FFFFFFE (cc=1) +algf 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +algf 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=3) +algf 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 800000007FFFFFFE (cc=1) +ar 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ar 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000001 (cc=2) +ar 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000007FFF (cc=2) +ar 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008000 (cc=2) +ar 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +ar 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ar 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000000 (cc=0) +ar 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=2) +agr 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=2) +agr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=2) +agr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=2) +agr 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=2) +agr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=2) +agr 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=2) +agr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=2) +agr 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +agfr 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=0) +agfr 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000001 (cc=2) +agfr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000007FFF (cc=2) +agfr 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008000 (cc=2) +agfr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=2) +agfr 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=2) +agfr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=2) +alr 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=0) +alr 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000001 (cc=1) +alr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +alr 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008000 (cc=1) +alr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +alr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alr 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000000 (cc=0) +alr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +algr 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +algr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +algr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +algr 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +algr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +algr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +algr 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +algfr 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=0) +algfr 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000001 (cc=1) +algfr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +algfr 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +algfr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +alc 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +alc 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=1) +alc 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=1) +alc 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +alc 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=3) +alc 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alc 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFE (cc=3) +alc 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE (cc=3) +alcg 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +alcg 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +alcg 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +alcg 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +alcg 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +alcg 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +alcg 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +alcr 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=0) +alcr 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000001 (cc=1) +alcr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +alcr 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +alcr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000000 (cc=0) +alcr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +alcgr 0 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +alcgr 0 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +alcgr 0 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +alcgr 0 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +alc 1 + 0000000000000000 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +alc 1 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000001 (cc=1) +alc 1 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFF (cc=1) +alc 1 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +alc 1 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080008000 (cc=1) +alc 1 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=3) +alc 1 + 0000000080000000 + 7FFFFFFF00000000 = 0000000000000000 (cc=2) +alc 1 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=3) +alc 1 + 8000000000000000 + 7FFFFFFF00000000 = 8000000080000000 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=3) +alcg 1 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +alcg 1 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000002 (cc=1) +alcg 1 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF00010000 (cc=1) +alcg 1 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +alcg 1 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 8000000000000000 (cc=1) +alcg 1 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000001 (cc=1) +alcg 1 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alcg 1 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alcr 1 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000000001 (cc=1) +alcr 1 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000000002 (cc=1) +alcr 1 + 000000000000FFFF + 7FFFFFFF00000000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000000008000 (cc=1) +alcr 1 + 0000000000008000 + 7FFFFFFF00000000 = 0000000000008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080000001 (cc=1) +alcr 1 + 000000007FFFFFFF + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=2) +alcr 1 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=2) +alcgr 1 + 0000000000000000 + 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +alcgr 1 + 0000000000000001 + 7FFFFFFF00000000 = 7FFFFFFF00000002 (cc=1) +alcgr 1 + 000000000000FFFF + 7FFFFFFF00000000 = 7FFFFFFF00010000 (cc=1) +alcgr 1 + 0000000000007FFF + 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +alcgr 1 + 0000000000008000 + 7FFFFFFF00000000 = 7FFFFFFF00008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 8000000000000000 (cc=1) +alcgr 1 + 0000000080000000 + 7FFFFFFF00000000 = 7FFFFFFF80000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alcgr 1 + 8000000000000000 + 7FFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +AHY 0 + 0000000000000000 + 7FFFFFFF00000000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000000008000 (cc=2) +AHY 0 + 000000000000FFFF + 7FFFFFFF00000000 = 0000000000017FFE (cc=2) +AHY 0 + 0000000000007FFF + 7FFFFFFF00000000 = 000000000000FFFE (cc=2) +AHY 0 + 0000000000008000 + 7FFFFFFF00000000 = 000000000000FFFF (cc=2) +AHY 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 0000000000007FFE (cc=2) +AHY 0 + 0000000080000000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +AHY 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=3) +AHY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF00007FFE (cc=2) +AHY 0 + 8000000000000000 + 7FFFFFFF00000000 = 8000000000007FFF (cc=2) +AHY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF00007FFE (cc=2) +AY 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=2) +AY 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=3) +AY 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=3) +AY 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=3) +AY 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=3) +AY 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=2) +AY 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +AY 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +AY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFE (cc=2) +AY 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=2) +AY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE (cc=2) +ALY 0 + 0000000000000000 + 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +ALY 0 + 0000000000000001 + 7FFFFFFF00000000 = 0000000080000000 (cc=1) +ALY 0 + 000000000000FFFF + 7FFFFFFF00000000 = 000000008000FFFE (cc=1) +ALY 0 + 0000000000007FFF + 7FFFFFFF00000000 = 0000000080007FFE (cc=1) +ALY 0 + 0000000000008000 + 7FFFFFFF00000000 = 0000000080007FFF (cc=1) +ALY 0 + 00000000FFFFFFFF + 7FFFFFFF00000000 = 000000007FFFFFFE (cc=3) +ALY 0 + 0000000080000000 + 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + 000000007FFFFFFF + 7FFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 7FFFFFFF00000000 = FFFFFFFF7FFFFFFE (cc=3) +ALY 0 + 8000000000000000 + 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE (cc=3) +a 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +a 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +a 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +a 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +a 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +a 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +a 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=3) +a 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +a 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +a 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +a 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +ah 0 + 0000000000000000 + 8000000000000000 = 00000000FFFF8000 (cc=1) +ah 0 + 0000000000000001 + 8000000000000000 = 00000000FFFF8001 (cc=1) +ah 0 + 000000000000FFFF + 8000000000000000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000007FFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000000008000 + 8000000000000000 = 0000000000000000 (cc=0) +ah 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFF7FFF (cc=1) +ah 0 + 0000000080000000 + 8000000000000000 = 000000007FFF8000 (cc=3) +ah 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFF7FFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFF7FFF (cc=1) +ah 0 + 8000000000000000 + 8000000000000000 = 80000000FFFF8000 (cc=1) +ah 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFF7FFF (cc=1) +ag 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +ag 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +ag 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +ag 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +ag 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +ag 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +ag 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +ag 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +ag 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +ag 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=3) +ag 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 8000000000000000 = FFFFFFFF80000000 (cc=1) +agf 0 + 0000000000000001 + 8000000000000000 = FFFFFFFF80000001 (cc=1) +agf 0 + 000000000000FFFF + 8000000000000000 = FFFFFFFF8000FFFF (cc=1) +agf 0 + 0000000000007FFF + 8000000000000000 = FFFFFFFF80007FFF (cc=1) +agf 0 + 0000000000008000 + 8000000000000000 = FFFFFFFF80008000 (cc=1) +agf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=0) +agf 0 + 000000007FFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +agf 0 + 8000000000000000 + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=2) +al 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +al 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +al 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +al 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +al 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +al 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +al 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +al 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +al 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +alg 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alg 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alg 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alg 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alg 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alg 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alg 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alg 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alg 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alg 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000000 + 8000000000000000 = FFFFFFFF80000000 (cc=1) +agf 0 + 0000000000000001 + 8000000000000000 = FFFFFFFF80000001 (cc=1) +agf 0 + 000000000000FFFF + 8000000000000000 = FFFFFFFF8000FFFF (cc=1) +agf 0 + 0000000000007FFF + 8000000000000000 = FFFFFFFF80007FFF (cc=1) +agf 0 + 0000000000008000 + 8000000000000000 = FFFFFFFF80008000 (cc=1) +agf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agf 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=0) +agf 0 + 000000007FFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +agf 0 + 8000000000000000 + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=2) +algf 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +algf 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +algf 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +algf 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +algf 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 8000000000000000 = 000000017FFFFFFF (cc=1) +algf 0 + 0000000080000000 + 8000000000000000 = 0000000100000000 (cc=1) +algf 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +algf 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +ar 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +ar 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=2) +ar 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=2) +ar 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=2) +ar 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +ar 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ar 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +ar 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +agr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +agr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +agr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +agr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +agr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +agr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +agr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +agr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +agr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=3) +agr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +agfr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=2) +agfr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=2) +agfr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=2) +agfr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=2) +agfr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=2) +agfr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +alr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +alr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +alr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +alr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +alr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +alr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +alr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +algr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +algr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +algr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +algr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +algr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +algr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +algr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +algr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +algr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +algfr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +algfr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +algfr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +algfr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +alc 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +alc 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +alc 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +alc 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +alc 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +alc 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +alc 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +alcg 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alcg 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alcg 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alcg 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alcg 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alcg 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alcg 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alcg 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alcg 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 0000000000000000 + 8000000000000000 = 0000000000000000 (cc=0) +alcr 0 + 0000000000000001 + 8000000000000000 = 0000000000000001 (cc=1) +alcr 0 + 000000000000FFFF + 8000000000000000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000007FFF + 8000000000000000 = 0000000000007FFF (cc=1) +alcr 0 + 0000000000008000 + 8000000000000000 = 0000000000008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000080000000 + 8000000000000000 = 0000000080000000 (cc=1) +alcr 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 8000000000000000 + 8000000000000000 = 8000000000000000 (cc=0) +alcr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000000 + 8000000000000000 = 8000000000000000 (cc=1) +alcgr 0 + 0000000000000001 + 8000000000000000 = 8000000000000001 (cc=1) +alcgr 0 + 000000000000FFFF + 8000000000000000 = 800000000000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + 8000000000000000 = 8000000000007FFF (cc=1) +alcgr 0 + 0000000000008000 + 8000000000000000 = 8000000000008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 8000000000000000 = 80000000FFFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + 8000000000000000 = 8000000080000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 8000000000000000 = 800000007FFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 0 + 8000000000000000 + 8000000000000000 = 0000000000000000 (cc=2) +alcgr 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +alc 1 + 0000000000000000 + 8000000000000000 = 0000000080000001 (cc=1) +alc 1 + 0000000000000001 + 8000000000000000 = 0000000080000002 (cc=1) +alc 1 + 000000000000FFFF + 8000000000000000 = 0000000080010000 (cc=1) +alc 1 + 0000000000007FFF + 8000000000000000 = 0000000080008000 (cc=1) +alc 1 + 0000000000008000 + 8000000000000000 = 0000000080008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 8000000000000000 = 0000000080000000 (cc=3) +alc 1 + 0000000080000000 + 8000000000000000 = 0000000000000001 (cc=3) +alc 1 + 000000007FFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alc 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF80000000 (cc=3) +alc 1 + 8000000000000000 + 8000000000000000 = 8000000080000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF80000000 (cc=3) +alcg 1 + 0000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcg 1 + 0000000000000001 + 8000000000000000 = 8000000000000002 (cc=1) +alcg 1 + 000000000000FFFF + 8000000000000000 = 8000000000010000 (cc=1) +alcg 1 + 0000000000007FFF + 8000000000000000 = 8000000000008000 (cc=1) +alcg 1 + 0000000000008000 + 8000000000000000 = 8000000000008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 8000000000000000 = 8000000100000000 (cc=1) +alcg 1 + 0000000080000000 + 8000000000000000 = 8000000080000001 (cc=1) +alcg 1 + 000000007FFFFFFF + 8000000000000000 = 8000000080000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = 8000000000000000 (cc=3) +alcg 1 + 8000000000000000 + 8000000000000000 = 0000000000000001 (cc=3) +alcg 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000000000000 + 8000000000000000 = 0000000000000001 (cc=1) +alcr 1 + 0000000000000001 + 8000000000000000 = 0000000000000002 (cc=1) +alcr 1 + 000000000000FFFF + 8000000000000000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000007FFF + 8000000000000000 = 0000000000008000 (cc=1) +alcr 1 + 0000000000008000 + 8000000000000000 = 0000000000008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000080000000 + 8000000000000000 = 0000000080000001 (cc=1) +alcr 1 + 000000007FFFFFFF + 8000000000000000 = 0000000080000000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF00000000 (cc=2) +alcr 1 + 8000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF00000000 (cc=2) +alcgr 1 + 0000000000000000 + 8000000000000000 = 8000000000000001 (cc=1) +alcgr 1 + 0000000000000001 + 8000000000000000 = 8000000000000002 (cc=1) +alcgr 1 + 000000000000FFFF + 8000000000000000 = 8000000000010000 (cc=1) +alcgr 1 + 0000000000007FFF + 8000000000000000 = 8000000000008000 (cc=1) +alcgr 1 + 0000000000008000 + 8000000000000000 = 8000000000008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 8000000000000000 = 8000000100000000 (cc=1) +alcgr 1 + 0000000080000000 + 8000000000000000 = 8000000080000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 8000000000000000 = 8000000080000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 8000000000000000 = 8000000000000000 (cc=3) +alcgr 1 + 8000000000000000 + 8000000000000000 = 0000000000000001 (cc=3) +alcgr 1 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 0000000000000000 (cc=2) +AHY 0 + 0000000000000000 + 8000000000000000 = 00000000FFFF8000 (cc=1) +AHY 0 + 0000000000000001 + 8000000000000000 = 00000000FFFF8001 (cc=1) +AHY 0 + 000000000000FFFF + 8000000000000000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000007FFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000000008000 + 8000000000000000 = 0000000000000000 (cc=0) +AHY 0 + 00000000FFFFFFFF + 8000000000000000 = 00000000FFFF7FFF (cc=1) +AHY 0 + 0000000080000000 + 8000000000000000 = 000000007FFF8000 (cc=3) +AHY 0 + 000000007FFFFFFF + 8000000000000000 = 000000007FFF7FFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFFFFFF7FFF (cc=1) +AHY 0 + 8000000000000000 + 8000000000000000 = 80000000FFFF8000 (cc=1) +AHY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFFFFFF7FFF (cc=1) +AY 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +AY 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +AY 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +AY 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +AY 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +AY 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +AY 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=3) +AY 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +AY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +AY 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +AY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +ALY 0 + 0000000000000000 + 8000000000000000 = 0000000080000000 (cc=1) +ALY 0 + 0000000000000001 + 8000000000000000 = 0000000080000001 (cc=1) +ALY 0 + 000000000000FFFF + 8000000000000000 = 000000008000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 8000000000000000 = 0000000080007FFF (cc=1) +ALY 0 + 0000000000008000 + 8000000000000000 = 0000000080008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 8000000000000000 = 000000007FFFFFFF (cc=3) +ALY 0 + 0000000080000000 + 8000000000000000 = 0000000000000000 (cc=2) +ALY 0 + 000000007FFFFFFF + 8000000000000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 8000000000000000 = FFFFFFFF7FFFFFFF (cc=3) +ALY 0 + 8000000000000000 + 8000000000000000 = 8000000080000000 (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + 8000000000000000 = 7FFFFFFF7FFFFFFF (cc=3) +a 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +a 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +a 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +a 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +a 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +a 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +a 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +a 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +a 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +a 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +a 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=1) +ah 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +ah 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +ah 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +ah 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +ah 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +ah 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +ah 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +ah 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +ah 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=1) +ag 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ag 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +ag 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +ag 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +ag 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +ag 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +ag 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +ag 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +ag 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +ag 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=2) +agf 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +agf 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +agf 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +agf 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=2) +agf 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +agf 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=2) +al 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +al 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=2) +al 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=3) +al 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=3) +al 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=3) +al 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +al 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +al 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=3) +al 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=3) +al 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +al 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=3) +alg 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alg 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alg 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +alg 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +alg 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +alg 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +alg 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +alg 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alg 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +agf 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +agf 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +agf 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +agf 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +agf 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=2) +agf 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agf 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +agf 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=3) +agf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=2) +algf 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000100000000 (cc=1) +algf 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000010000FFFE (cc=1) +algf 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000100007FFE (cc=1) +algf 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000100007FFF (cc=1) +algf 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000001FFFFFFFE (cc=1) +algf 0 + 0000000080000000 + FFFFFFFF00000000 = 000000017FFFFFFF (cc=1) +algf 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000017FFFFFFE (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +algf 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 80000000FFFFFFFE (cc=1) +ar 0 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +ar 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=2) +ar 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +ar 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=2) +ar 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=1) +ar 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ar 0 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=0) +ar 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +agr 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +agr 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +agr 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +agr 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +agr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +agr 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +agr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +agr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=1) +agr 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +agr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=2) +agfr 0 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +agfr 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=2) +agfr 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +agfr 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=2) +agfr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=2) +agfr 0 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=2) +agfr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=2) +alr 0 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +alr 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=1) +alr 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=1) +alr 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=1) +alr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=1) +alr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alr 0 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=0) +alr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +algr 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +algr 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +algr 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +algr 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +algr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +algr 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +algr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +algr 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +algr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +algfr 0 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +algfr 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=1) +algfr 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=1) +algfr 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=1) +algfr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +algfr 0 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alc 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=2) +alc 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=3) +alc 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=3) +alc 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=3) +alc 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +alc 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +alc 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=3) +alc 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=3) +alc 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +alc 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=3) +alcg 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alcg 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcg 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +alcg 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +alcg 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +alcg 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +alcg 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alcg 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +alcr 0 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +alcr 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=1) +alcr 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=1) +alcr 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=1) +alcr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alcr 0 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=0) +alcr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +alcgr 0 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcgr 0 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +alcgr 0 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFEFFFFFFFF (cc=3) +alcgr 0 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alcgr 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFEFFFFFFFF (cc=3) +alc 1 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000000 (cc=2) +alc 1 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000001 (cc=3) +alc 1 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFF (cc=3) +alc 1 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFF (cc=3) +alc 1 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008000 (cc=3) +alc 1 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=3) +alc 1 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000000 (cc=3) +alc 1 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +alc 1 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=3) +alc 1 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000000 (cc=2) +alc 1 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=3) +alcg 1 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcg 1 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000002 (cc=1) +alcg 1 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF00010000 (cc=1) +alcg 1 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +alcg 1 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + FFFFFFFF00000000 = 0000000000000000 (cc=2) +alcg 1 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000001 (cc=1) +alcg 1 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=3) +alcg 1 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000001 (cc=3) +alcg 1 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +alcr 1 + 0000000000000000 + FFFFFFFF00000000 = 0000000000000001 (cc=1) +alcr 1 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000002 (cc=1) +alcr 1 + 000000000000FFFF + FFFFFFFF00000000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000008000 (cc=1) +alcr 1 + 0000000000008000 + FFFFFFFF00000000 = 0000000000008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + FFFFFFFF00000000 = 0000000000000000 (cc=2) +alcr 1 + 0000000080000000 + FFFFFFFF00000000 = 0000000080000001 (cc=1) +alcr 1 + 000000007FFFFFFF + FFFFFFFF00000000 = 0000000080000000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=2) +alcr 1 + 8000000000000000 + FFFFFFFF00000000 = 8000000000000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=2) +alcgr 1 + 0000000000000000 + FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +alcgr 1 + 0000000000000001 + FFFFFFFF00000000 = FFFFFFFF00000002 (cc=1) +alcgr 1 + 000000000000FFFF + FFFFFFFF00000000 = FFFFFFFF00010000 (cc=1) +alcgr 1 + 0000000000007FFF + FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +alcgr 1 + 0000000000008000 + FFFFFFFF00000000 = FFFFFFFF00008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + FFFFFFFF00000000 = 0000000000000000 (cc=2) +alcgr 1 + 0000000080000000 + FFFFFFFF00000000 = FFFFFFFF80000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFF00000000 (cc=3) +alcgr 1 + 8000000000000000 + FFFFFFFF00000000 = 7FFFFFFF00000001 (cc=3) +alcgr 1 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=3) +AHY 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +AHY 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +AHY 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +AHY 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +AHY 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +AHY 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +AHY 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +AHY 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +AHY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=1) +AY 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=0) +AY 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=2) +AY 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=2) +AY 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=2) +AY 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +AY 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +AY 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=1) +AY 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +AY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=1) +ALY 0 + 0000000000000000 + FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000000000001 + FFFFFFFF00000000 = 0000000000000000 (cc=2) +ALY 0 + 000000000000FFFF + FFFFFFFF00000000 = 000000000000FFFE (cc=3) +ALY 0 + 0000000000007FFF + FFFFFFFF00000000 = 0000000000007FFE (cc=3) +ALY 0 + 0000000000008000 + FFFFFFFF00000000 = 0000000000007FFF (cc=3) +ALY 0 + 00000000FFFFFFFF + FFFFFFFF00000000 = 00000000FFFFFFFE (cc=3) +ALY 0 + 0000000080000000 + FFFFFFFF00000000 = 000000007FFFFFFF (cc=3) +ALY 0 + 000000007FFFFFFF + FFFFFFFF00000000 = 000000007FFFFFFE (cc=3) +ALY 0 + FFFFFFFFFFFFFFFF + FFFFFFFF00000000 = FFFFFFFFFFFFFFFE (cc=3) +ALY 0 + 8000000000000000 + FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +ALY 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE (cc=3) +a 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +ag 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=2) +ag 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=2) +ag 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=2) +ag 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=2) +ag 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=2) +ag 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +ag 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +ag 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=3) +agf 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alg 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alg 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +alg 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +alg 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alg 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +alg 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alg 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +alg 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) +agf 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +ar 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=3) +ar 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=3) +ar 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=3) +ar 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=3) +ar 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +ar 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ar 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=3) +ar 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFE (cc=2) +ar 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=2) +ar 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFE (cc=2) +agr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +agr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=2) +agr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=2) +agr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=2) +agr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=2) +agr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=2) +agr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +agr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +agr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=3) +agfr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +agfr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=2) +agfr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=2) +agfr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=2) +agfr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=2) +agfr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +agfr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +agfr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=3) +alr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +alr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +alr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +alr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +alr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +algr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +algr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +algr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +algr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +algr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +algr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +algr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +algr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +algr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) +algfr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +algfr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +algfr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +algfr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +algfr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +algfr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +algfr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +algfr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) +alc 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alcg 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcg 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +alcg 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +alcg 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +alcg 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcg 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +alcg 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) +alcr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alcr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +alcr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +alcr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +alcr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +alcr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +alcgr 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +alcgr 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcgr 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +alcgr 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +alcgr 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +alcgr 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +alcgr 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) +alc 1 + 0000000000000000 + 000000007FFFFFFF = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 000000007FFFFFFF = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 000000007FFFFFFF = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 000000007FFFFFFF = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 000000007FFFFFFF = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 000000007FFFFFFF = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 000000007FFFFFFF = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 000000007FFFFFFF = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 000000007FFFFFFF = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcg 1 + 0000000000000001 + 000000007FFFFFFF = 0000000080000001 (cc=1) +alcg 1 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFF (cc=1) +alcg 1 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcg 1 + 0000000000008000 + 000000007FFFFFFF = 0000000080008000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFF (cc=1) +alcg 1 + 0000000080000000 + 000000007FFFFFFF = 0000000100000000 (cc=1) +alcg 1 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=3) +alcg 1 + 8000000000000000 + 000000007FFFFFFF = 8000000080000000 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +alcr 1 + 0000000000000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcr 1 + 0000000000000001 + 000000007FFFFFFF = 0000000080000001 (cc=1) +alcr 1 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFF (cc=1) +alcr 1 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcr 1 + 0000000000008000 + 000000007FFFFFFF = 0000000080008000 (cc=1) +alcr 1 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=3) +alcr 1 + 0000000080000000 + 000000007FFFFFFF = 0000000000000000 (cc=2) +alcr 1 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFF (cc=3) +alcr 1 + 8000000000000000 + 000000007FFFFFFF = 8000000080000000 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFF (cc=3) +alcgr 1 + 0000000000000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +alcgr 1 + 0000000000000001 + 000000007FFFFFFF = 0000000080000001 (cc=1) +alcgr 1 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFF (cc=1) +alcgr 1 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFF (cc=1) +alcgr 1 + 0000000000008000 + 000000007FFFFFFF = 0000000080008000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFF (cc=1) +alcgr 1 + 0000000080000000 + 000000007FFFFFFF = 0000000100000000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=3) +alcgr 1 + 8000000000000000 + 000000007FFFFFFF = 8000000080000000 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +AHY 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 000000007FFFFFFF = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 000000007FFFFFFF = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 000000007FFFFFFF = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 000000007FFFFFFF = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 000000007FFFFFFF = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 000000007FFFFFFF = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=2) +ag 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=2) +ag 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=2) +ag 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=2) +ag 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=2) +ag 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=2) +ag 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=2) +ag 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +ag 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=3) +agf 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +alg 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +alg 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +alg 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +alg 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +alg 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +alg 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +alg 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +alg 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +agf 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +ar 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +ar 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +ar 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +ar 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +ar 0 + 00000000FFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +ar 0 + 0000000080000000 + 0000000080000000 = 0000000000000000 (cc=3) +ar 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +ar 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF7FFFFFFF (cc=3) +ar 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +ar 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF7FFFFFFF (cc=3) +agr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=2) +agr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=2) +agr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=2) +agr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=2) +agr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=2) +agr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=2) +agr 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=2) +agr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +agr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=3) +agfr 0 + 0000000000000000 + 0000000080000000 = FFFFFFFF80000000 (cc=1) +agfr 0 + 0000000000000001 + 0000000080000000 = FFFFFFFF80000001 (cc=1) +agfr 0 + 000000000000FFFF + 0000000080000000 = FFFFFFFF8000FFFF (cc=1) +agfr 0 + 0000000000007FFF + 0000000080000000 = FFFFFFFF80007FFF (cc=1) +agfr 0 + 0000000000008000 + 0000000080000000 = FFFFFFFF80008000 (cc=1) +agfr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +agfr 0 + 0000000080000000 + 0000000080000000 = 0000000000000000 (cc=0) +agfr 0 + 000000007FFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF7FFFFFFF (cc=1) +agfr 0 + 8000000000000000 + 0000000080000000 = 7FFFFFFF80000000 (cc=3) +agfr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF7FFFFFFF (cc=2) +alr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +alr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +alr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +alr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +alr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +alr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +alr 0 + 0000000080000000 + 0000000080000000 = 0000000000000000 (cc=2) +alr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF7FFFFFFF (cc=3) +alr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF7FFFFFFF (cc=3) +algr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +algr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +algr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +algr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +algr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +algr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +algr 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +algr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +algr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +algfr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +algfr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +algfr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +algfr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +algfr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +algfr 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +algfr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +algfr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +alc 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +alcg 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +alcg 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +alcg 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +alcg 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +alcg 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +alcg 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +alcg 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +alcr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +alcr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +alcr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +alcr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +alcr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +alcr 0 + 0000000080000000 + 0000000080000000 = 0000000000000000 (cc=2) +alcr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF7FFFFFFF (cc=3) +alcr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF7FFFFFFF (cc=3) +alcgr 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +alcgr 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +alcgr 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +alcgr 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +alcgr 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +alcgr 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +alcgr 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +alc 1 + 0000000000000000 + 0000000080000000 = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 0000000080000000 = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 0000000080000000 = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 0000000080000000 = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 0000000080000000 = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 0000000080000000 = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 0000000080000000 = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 0000000080000000 = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 0000000080000000 = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 0000000080000000 = 0000000080000001 (cc=1) +alcg 1 + 0000000000000001 + 0000000080000000 = 0000000080000002 (cc=1) +alcg 1 + 000000000000FFFF + 0000000080000000 = 0000000080010000 (cc=1) +alcg 1 + 0000000000007FFF + 0000000080000000 = 0000000080008000 (cc=1) +alcg 1 + 0000000000008000 + 0000000080000000 = 0000000080008001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 0000000080000000 = 0000000180000000 (cc=1) +alcg 1 + 0000000080000000 + 0000000080000000 = 0000000100000001 (cc=1) +alcg 1 + 000000007FFFFFFF + 0000000080000000 = 0000000100000000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 0000000080000000 = 0000000080000000 (cc=3) +alcg 1 + 8000000000000000 + 0000000080000000 = 8000000080000001 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 8000000080000000 (cc=1) +alcr 1 + 0000000000000000 + 0000000080000000 = 0000000080000001 (cc=1) +alcr 1 + 0000000000000001 + 0000000080000000 = 0000000080000002 (cc=1) +alcr 1 + 000000000000FFFF + 0000000080000000 = 0000000080010000 (cc=1) +alcr 1 + 0000000000007FFF + 0000000080000000 = 0000000080008000 (cc=1) +alcr 1 + 0000000000008000 + 0000000080000000 = 0000000080008001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 0000000080000000 = 0000000080000000 (cc=3) +alcr 1 + 0000000080000000 + 0000000080000000 = 0000000000000001 (cc=3) +alcr 1 + 000000007FFFFFFF + 0000000080000000 = 0000000000000000 (cc=2) +alcr 1 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF80000000 (cc=3) +alcr 1 + 8000000000000000 + 0000000080000000 = 8000000080000001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF80000000 (cc=3) +alcgr 1 + 0000000000000000 + 0000000080000000 = 0000000080000001 (cc=1) +alcgr 1 + 0000000000000001 + 0000000080000000 = 0000000080000002 (cc=1) +alcgr 1 + 000000000000FFFF + 0000000080000000 = 0000000080010000 (cc=1) +alcgr 1 + 0000000000007FFF + 0000000080000000 = 0000000080008000 (cc=1) +alcgr 1 + 0000000000008000 + 0000000080000000 = 0000000080008001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 0000000080000000 = 0000000180000000 (cc=1) +alcgr 1 + 0000000080000000 + 0000000080000000 = 0000000100000001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 0000000080000000 = 0000000100000000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 0000000080000000 = 0000000080000000 (cc=3) +alcgr 1 + 8000000000000000 + 0000000080000000 = 8000000080000001 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 8000000080000000 (cc=1) +AHY 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 0000000080000000 = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 0000000080000000 = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 0000000080000000 = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 0000000080000000 = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 0000000080000000 = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 0000000080000000 = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 0000000080000000 = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=2) +ag 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=2) +ag 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=2) +ag 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=2) +ag 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=2) +ag 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=2) +ag 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=2) +ag 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=2) +ag 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=3) +agf 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alg 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +alg 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +alg 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +alg 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +alg 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +alg 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +alg 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +alg 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +agf 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ar 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +ar 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFE (cc=2) +ar 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFE (cc=2) +ar 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +ar 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=1) +ar 0 + 0000000080000000 + 00000000FFFFFFFF = 000000007FFFFFFF (cc=3) +ar 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFE (cc=2) +ar 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ar 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +ar 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +agr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=2) +agr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=2) +agr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=2) +agr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=2) +agr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=2) +agr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=2) +agr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=2) +agr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=2) +agr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=3) +agfr 0 + 0000000000000000 + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +agfr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +agfr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFE (cc=2) +agfr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFE (cc=2) +agfr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=2) +agfr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +agfr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +agfr 0 + 8000000000000000 + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +agfr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +alr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000000 (cc=2) +alr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFE (cc=3) +alr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFE (cc=3) +alr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000007FFF (cc=3) +alr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +alr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000007FFFFFFF (cc=3) +alr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFE (cc=3) +alr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +algr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +algr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +algr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +algr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +algr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +algr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +algr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +algr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +algr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +algfr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +algfr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +algfr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +algfr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +algfr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +algfr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +algfr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +algfr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +alc 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alcg 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +alcg 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +alcg 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +alcg 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +alcg 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +alcg 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +alcg 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +alcr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alcr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000000 (cc=2) +alcr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFE (cc=3) +alcr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFE (cc=3) +alcr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000007FFF (cc=3) +alcr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +alcr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFE (cc=3) +alcr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +alcr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +alcgr 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +alcgr 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +alcgr 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +alcgr 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +alcgr 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +alcgr 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +alcgr 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +alc 1 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 00000000FFFFFFFF = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 00000000FFFFFFFF = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 00000000FFFFFFFF = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +alcg 1 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000001 (cc=1) +alcg 1 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFF (cc=1) +alcg 1 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +alcg 1 + 0000000000008000 + 00000000FFFFFFFF = 0000000100008000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFF (cc=1) +alcg 1 + 0000000080000000 + 00000000FFFFFFFF = 0000000180000000 (cc=1) +alcg 1 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=3) +alcg 1 + 8000000000000000 + 00000000FFFFFFFF = 8000000100000000 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +alcr 1 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=2) +alcr 1 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=3) +alcr 1 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=3) +alcr 1 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=3) +alcr 1 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=3) +alcr 1 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=3) +alcr 1 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=3) +alcr 1 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=3) +alcr 1 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=3) +alcr 1 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=2) +alcr 1 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +alcgr 1 + 0000000000000000 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +alcgr 1 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000001 (cc=1) +alcgr 1 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFF (cc=1) +alcgr 1 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +alcgr 1 + 0000000000008000 + 00000000FFFFFFFF = 0000000100008000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFF (cc=1) +alcgr 1 + 0000000080000000 + 00000000FFFFFFFF = 0000000180000000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=3) +alcgr 1 + 8000000000000000 + 00000000FFFFFFFF = 8000000100000000 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +AHY 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 00000000FFFFFFFF = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 00000000FFFFFFFF = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 00000000FFFFFFFF = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +ag 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +ag 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +ag 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +ag 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +ag 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +ag 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +ag 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +ag 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +agf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alg 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alg 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alg 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alg 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alg 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alg 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alg 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alg 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +agf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +ar 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +ar 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +ar 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +ar 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +ar 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +ar 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +ar 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=3) +ar 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=2) +ar 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=2) +ar 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=2) +agr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +agr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +agr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +agr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +agr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +agr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +agr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +agr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +agr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +agfr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +agfr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +agfr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +agfr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +agfr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +agfr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +agfr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +agfr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +alr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=3) +alr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=3) +algr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +algr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +algr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +algr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +algr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +algr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +algr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +algr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +algr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +algfr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +algfr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +algfr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +algfr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +algfr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +algfr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +algfr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +algfr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alc 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcg 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcg 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcg 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcg 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alcg 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcg 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcg 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alcr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=3) +alcr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=3) +alcgr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcgr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcgr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcgr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcgr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alcgr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcgr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alc 1 + 0000000000000000 + 000000000000FFFF = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 000000000000FFFF = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 000000000000FFFF = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 000000000000FFFF = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 000000000000FFFF = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 000000000000FFFF = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 000000000000FFFF = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 000000000000FFFF = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 000000000000FFFF = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcg 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcg 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcg 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcg 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFF (cc=1) +alcg 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcg 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcg 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFF (cc=1) +alcr 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcr 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcr 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcr 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcr 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcr 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcr 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcr 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFF (cc=3) +alcr 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFF (cc=3) +alcgr 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcgr 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcgr 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcgr 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcgr 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFF (cc=1) +alcgr 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcgr 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFF (cc=1) +AHY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +ag 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +ag 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +ag 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +ag 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +ag 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=2) +ag 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=2) +ag 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +ag 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=3) +agf 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +alg 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +alg 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +alg 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +alg 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +alg 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +alg 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +alg 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +alg 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +agf 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +ar 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +ar 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +ar 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +ar 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +ar 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +ar 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +ar 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=3) +ar 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=2) +ar 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=2) +ar 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=2) +agr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +agr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +agr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +agr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +agr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +agr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=2) +agr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=2) +agr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +agr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=3) +agfr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +agfr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +agfr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +agfr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +agfr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=2) +agfr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=2) +agfr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +agfr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=3) +alr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +alr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +alr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +alr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +alr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +alr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +alr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +alr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=3) +alr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=3) +algr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +algr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +algr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +algr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +algr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +algr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +algr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +algr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +algr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +algfr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +algfr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +algfr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +algfr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +algfr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +algfr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +algfr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +algfr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +alc 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +alcg 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +alcg 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +alcg 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +alcg 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +alcg 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +alcg 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +alcg 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +alcr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +alcr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +alcr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +alcr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +alcr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +alcr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +alcr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +alcr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=3) +alcr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=3) +alcgr 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +alcgr 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +alcgr 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +alcgr 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +alcgr 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +alcgr 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +alcgr 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +alc 1 + 0000000000000000 + 0000000000007FFF = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 0000000000007FFF = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 0000000000007FFF = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 0000000000007FFF = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 0000000000007FFF = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 0000000000007FFF = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 0000000000007FFF = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 0000000000007FFF = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 0000000000007FFF = 0000000000008000 (cc=1) +alcg 1 + 0000000000000001 + 0000000000007FFF = 0000000000008001 (cc=1) +alcg 1 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFF (cc=1) +alcg 1 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFF (cc=1) +alcg 1 + 0000000000008000 + 0000000000007FFF = 0000000000010000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFF (cc=1) +alcg 1 + 0000000080000000 + 0000000000007FFF = 0000000080008000 (cc=1) +alcg 1 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFF (cc=3) +alcg 1 + 8000000000000000 + 0000000000007FFF = 8000000000008000 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFF (cc=1) +alcr 1 + 0000000000000000 + 0000000000007FFF = 0000000000008000 (cc=1) +alcr 1 + 0000000000000001 + 0000000000007FFF = 0000000000008001 (cc=1) +alcr 1 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFF (cc=1) +alcr 1 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFF (cc=1) +alcr 1 + 0000000000008000 + 0000000000007FFF = 0000000000010000 (cc=1) +alcr 1 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFF (cc=3) +alcr 1 + 0000000080000000 + 0000000000007FFF = 0000000080008000 (cc=1) +alcr 1 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFF (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFF (cc=3) +alcr 1 + 8000000000000000 + 0000000000007FFF = 8000000000008000 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFF (cc=3) +alcgr 1 + 0000000000000000 + 0000000000007FFF = 0000000000008000 (cc=1) +alcgr 1 + 0000000000000001 + 0000000000007FFF = 0000000000008001 (cc=1) +alcgr 1 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFF (cc=1) +alcgr 1 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFF (cc=1) +alcgr 1 + 0000000000008000 + 0000000000007FFF = 0000000000010000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFF (cc=1) +alcgr 1 + 0000000080000000 + 0000000000007FFF = 0000000080008000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFF (cc=3) +alcgr 1 + 8000000000000000 + 0000000000007FFF = 8000000000008000 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFF (cc=1) +AHY 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 0000000000007FFF = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 0000000000007FFF = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 0000000000007FFF = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 0000000000007FFF = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 0000000000007FFF = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 0000000000007FFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 0000000000007FFF = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 0000000000007FFF = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 0000000000007FFF = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=2) +ag 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=2) +ag 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=2) +ag 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=2) +ag 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=2) +ag 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=2) +ag 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=2) +ag 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=2) +ag 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=3) +agf 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +alg 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +alg 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +alg 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +alg 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +alg 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +alg 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +alg 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +alg 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +agf 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=2) +ar 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=2) +ar 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=2) +ar 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=2) +ar 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=2) +ar 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=2) +ar 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +ar 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=3) +ar 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00007FFF (cc=2) +ar 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=2) +ar 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00007FFF (cc=2) +agr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=2) +agr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=2) +agr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=2) +agr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=2) +agr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=2) +agr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=2) +agr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=2) +agr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=2) +agr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=3) +agfr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=2) +agfr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=2) +agfr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=2) +agfr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=2) +agfr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=2) +agfr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=2) +agfr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=2) +agfr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=2) +agfr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=3) +alr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +alr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +alr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +alr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +alr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +alr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +alr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +alr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00007FFF (cc=3) +alr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00007FFF (cc=3) +algr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +algr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +algr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +algr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +algr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +algr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +algr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +algr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +algr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +algfr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +algfr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +algfr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +algfr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +algfr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +algfr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +algfr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +algfr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +algfr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +alc 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +alcg 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +alcg 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +alcg 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +alcg 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +alcg 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +alcg 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +alcg 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +alcg 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +alcr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +alcr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +alcr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +alcr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +alcr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +alcr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +alcr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +alcr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00007FFF (cc=3) +alcr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00007FFF (cc=3) +alcgr 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +alcgr 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +alcgr 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +alcgr 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +alcgr 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +alcgr 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +alcgr 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +alcgr 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +alcgr 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +alc 1 + 0000000000000000 + 0000000000008000 = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 0000000000008000 = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 0000000000008000 = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 0000000000008000 = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 0000000000008000 = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 0000000000008000 = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 0000000000008000 = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 0000000000008000 = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 0000000000008000 = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 0000000000008000 = 0000000000008001 (cc=1) +alcg 1 + 0000000000000001 + 0000000000008000 = 0000000000008002 (cc=1) +alcg 1 + 000000000000FFFF + 0000000000008000 = 0000000000018000 (cc=1) +alcg 1 + 0000000000007FFF + 0000000000008000 = 0000000000010000 (cc=1) +alcg 1 + 0000000000008000 + 0000000000008000 = 0000000000010001 (cc=1) +alcg 1 + 00000000FFFFFFFF + 0000000000008000 = 0000000100008000 (cc=1) +alcg 1 + 0000000080000000 + 0000000000008000 = 0000000080008001 (cc=1) +alcg 1 + 000000007FFFFFFF + 0000000000008000 = 0000000080008000 (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000008000 (cc=3) +alcg 1 + 8000000000000000 + 0000000000008000 = 8000000000008001 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000008000 (cc=1) +alcr 1 + 0000000000000000 + 0000000000008000 = 0000000000008001 (cc=1) +alcr 1 + 0000000000000001 + 0000000000008000 = 0000000000008002 (cc=1) +alcr 1 + 000000000000FFFF + 0000000000008000 = 0000000000018000 (cc=1) +alcr 1 + 0000000000007FFF + 0000000000008000 = 0000000000010000 (cc=1) +alcr 1 + 0000000000008000 + 0000000000008000 = 0000000000010001 (cc=1) +alcr 1 + 00000000FFFFFFFF + 0000000000008000 = 0000000000008000 (cc=3) +alcr 1 + 0000000080000000 + 0000000000008000 = 0000000080008001 (cc=1) +alcr 1 + 000000007FFFFFFF + 0000000000008000 = 0000000080008000 (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00008000 (cc=3) +alcr 1 + 8000000000000000 + 0000000000008000 = 8000000000008001 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00008000 (cc=3) +alcgr 1 + 0000000000000000 + 0000000000008000 = 0000000000008001 (cc=1) +alcgr 1 + 0000000000000001 + 0000000000008000 = 0000000000008002 (cc=1) +alcgr 1 + 000000000000FFFF + 0000000000008000 = 0000000000018000 (cc=1) +alcgr 1 + 0000000000007FFF + 0000000000008000 = 0000000000010000 (cc=1) +alcgr 1 + 0000000000008000 + 0000000000008000 = 0000000000010001 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 0000000000008000 = 0000000100008000 (cc=1) +alcgr 1 + 0000000080000000 + 0000000000008000 = 0000000080008001 (cc=1) +alcgr 1 + 000000007FFFFFFF + 0000000000008000 = 0000000080008000 (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000008000 (cc=3) +alcgr 1 + 8000000000000000 + 0000000000008000 = 8000000000008001 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000008000 (cc=1) +AHY 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 0000000000008000 = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 0000000000008000 = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 0000000000008000 = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 0000000000008000 = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 0000000000008000 = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 0000000000008000 = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 0000000000008000 = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 0000000000008000 = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 0000000000008000 = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFFFFFFFFFF (cc=1) +a 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +a 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +a 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +a 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +a 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +a 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +a 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +a 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +a 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +a 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +a 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ah 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +ah 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +ah 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +ah 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +ah 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +ah 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ah 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +ah 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +ah 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ah 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +ah 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ag 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +ag 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +ag 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +ag 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +ag 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +ag 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +ag 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +ag 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +ag 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +ag 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +ag 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +agf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=2) +al 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +al 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +al 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +al 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +al 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +al 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +al 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +al 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +al 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +al 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +al 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +alg 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alg 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alg 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alg 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alg 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alg 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alg 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alg 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alg 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alg 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alg 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +agf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +agf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +agf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +agf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +agf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +agf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=2) +agf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=2) +agf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +agf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +agf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +agf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=2) +algf 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +algf 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +algf 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +algf 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +algf 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +algf 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +algf 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +algf 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +algf 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +algf 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=1) +algf 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ar 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +ar 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +ar 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +ar 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +ar 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +ar 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +ar 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +ar 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=3) +ar 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=2) +ar 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=2) +ar 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=2) +agr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +agr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +agr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +agr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +agr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +agr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +agr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +agr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +agr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +agr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +agr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +agfr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=2) +agfr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=2) +agfr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=2) +agfr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=2) +agfr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=2) +agfr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=2) +agfr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=2) +agfr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=2) +agfr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=2) +agfr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +agfr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=3) +alr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=3) +alr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=3) +algr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +algr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +algr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +algr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +algr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +algr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +algr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +algr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +algr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +algr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +algr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +algfr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +algfr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +algfr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +algfr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +algfr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +algfr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +algfr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +algfr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +algfr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +algfr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +algfr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alc 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +alc 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +alc 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +alc 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +alc 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +alc 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +alc 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +alc 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +alc 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +alc 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +alc 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +alcg 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcg 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcg 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcg 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcg 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcg 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alcg 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcg 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcg 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcg 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcg 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alcr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=3) +alcr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=3) +alcgr 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +alcgr 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +alcgr 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +alcgr 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +alcgr 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +alcgr 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +alcgr 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +alcgr 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +alcgr 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +alcgr 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +alcgr 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +alc 1 + 0000000000000000 + 000000000000FFFF = 0000000000000001 (cc=1) +alc 1 + 0000000000000001 + 000000000000FFFF = 0000000000000002 (cc=1) +alc 1 + 000000000000FFFF + 000000000000FFFF = 0000000000010000 (cc=1) +alc 1 + 0000000000007FFF + 000000000000FFFF = 0000000000008000 (cc=1) +alc 1 + 0000000000008000 + 000000000000FFFF = 0000000000008001 (cc=1) +alc 1 + 00000000FFFFFFFF + 000000000000FFFF = 0000000000000000 (cc=2) +alc 1 + 0000000080000000 + 000000000000FFFF = 0000000080000001 (cc=1) +alc 1 + 000000007FFFFFFF + 000000000000FFFF = 0000000080000000 (cc=1) +alc 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF00000000 (cc=2) +alc 1 + 8000000000000000 + 000000000000FFFF = 8000000000000001 (cc=1) +alc 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF00000000 (cc=2) +alcg 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcg 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcg 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcg 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcg 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcg 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFF (cc=1) +alcg 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcg 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcg 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcg 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcg 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFF (cc=1) +alcr 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcr 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcr 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcr 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcr 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcr 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcr 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcr 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcr 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFF (cc=3) +alcr 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcr 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFF (cc=3) +alcgr 1 + 0000000000000000 + 000000000000FFFF = 0000000000010000 (cc=1) +alcgr 1 + 0000000000000001 + 000000000000FFFF = 0000000000010001 (cc=1) +alcgr 1 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFF (cc=1) +alcgr 1 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFF (cc=1) +alcgr 1 + 0000000000008000 + 000000000000FFFF = 0000000000018000 (cc=1) +alcgr 1 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFF (cc=1) +alcgr 1 + 0000000080000000 + 000000000000FFFF = 0000000080010000 (cc=1) +alcgr 1 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFF (cc=1) +alcgr 1 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFF (cc=3) +alcgr 1 + 8000000000000000 + 000000000000FFFF = 8000000000010000 (cc=1) +alcgr 1 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFF (cc=1) +AHY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +AHY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +AHY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +AHY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +AHY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +AHY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +AHY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +AHY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +AHY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +AHY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +AHY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +AY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +AY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=2) +AY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=2) +AY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=2) +AY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=2) +AY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +AY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +AY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=2) +AY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +AY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +AY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ALY 0 + 0000000000000000 + 000000000000FFFF = 0000000000000000 (cc=0) +ALY 0 + 0000000000000001 + 000000000000FFFF = 0000000000000001 (cc=1) +ALY 0 + 000000000000FFFF + 000000000000FFFF = 000000000000FFFF (cc=1) +ALY 0 + 0000000000007FFF + 000000000000FFFF = 0000000000007FFF (cc=1) +ALY 0 + 0000000000008000 + 000000000000FFFF = 0000000000008000 (cc=1) +ALY 0 + 00000000FFFFFFFF + 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ALY 0 + 0000000080000000 + 000000000000FFFF = 0000000080000000 (cc=1) +ALY 0 + 000000007FFFFFFF + 000000000000FFFF = 000000007FFFFFFF (cc=1) +ALY 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ALY 0 + 8000000000000000 + 000000000000FFFF = 8000000000000000 (cc=0) +ALY 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFFFFFFFFFF (cc=1) +ahi 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ahi 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +ahi 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +ahi 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +ahi 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +ahi 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ahi 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ahi 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +ahi 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ahi 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +ahi 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ahi 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ahi 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ahi 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +ahi 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +ahi 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +ahi 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +ahi 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ahi 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +ahi 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +ahi 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +ahi 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +ahi 0 + 0000000000000000 + FFFFFFFFFFFF8000 = 00000000FFFF8000 (cc=1) +ahi 0 + 0000000000000001 + FFFFFFFFFFFF8000 = 00000000FFFF8001 (cc=1) +ahi 0 + 000000000000FFFF + FFFFFFFFFFFF8000 = 0000000000007FFF (cc=2) +ahi 0 + 0000000000007FFF + FFFFFFFFFFFF8000 = 00000000FFFFFFFF (cc=1) +ahi 0 + 0000000000008000 + FFFFFFFFFFFF8000 = 0000000000000000 (cc=0) +ahi 0 + 00000000FFFFFFFF + FFFFFFFFFFFF8000 = 00000000FFFF7FFF (cc=1) +ahi 0 + 0000000080000000 + FFFFFFFFFFFF8000 = 000000007FFF8000 (cc=3) +ahi 0 + 000000007FFFFFFF + FFFFFFFFFFFF8000 = 000000007FFF7FFF (cc=2) +ahi 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFF7FFF (cc=1) +ahi 0 + 8000000000000000 + FFFFFFFFFFFF8000 = 80000000FFFF8000 (cc=1) +ahi 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF7FFF (cc=1) +ahi 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +ahi 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +ahi 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +ahi 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +ahi 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +ahi 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +ahi 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +ahi 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=3) +ahi 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=2) +ahi 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=2) +ahi 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=2) +aghi 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +aghi 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +aghi 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +aghi 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +aghi 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +aghi 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +aghi 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +aghi 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +aghi 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +aghi 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +aghi 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +aghi 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +aghi 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +aghi 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +aghi 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +aghi 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +aghi 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +aghi 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +aghi 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +aghi 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +aghi 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +aghi 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +aghi 0 + 0000000000000000 + FFFFFFFFFFFF8000 = FFFFFFFFFFFF8000 (cc=1) +aghi 0 + 0000000000000001 + FFFFFFFFFFFF8000 = FFFFFFFFFFFF8001 (cc=1) +aghi 0 + 000000000000FFFF + FFFFFFFFFFFF8000 = 0000000000007FFF (cc=2) +aghi 0 + 0000000000007FFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFFFFFF (cc=1) +aghi 0 + 0000000000008000 + FFFFFFFFFFFF8000 = 0000000000000000 (cc=0) +aghi 0 + 00000000FFFFFFFF + FFFFFFFFFFFF8000 = 00000000FFFF7FFF (cc=2) +aghi 0 + 0000000080000000 + FFFFFFFFFFFF8000 = 000000007FFF8000 (cc=2) +aghi 0 + 000000007FFFFFFF + FFFFFFFFFFFF8000 = 000000007FFF7FFF (cc=2) +aghi 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFF7FFF (cc=1) +aghi 0 + 8000000000000000 + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF8000 (cc=3) +aghi 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF7FFF (cc=2) +aghi 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +aghi 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +aghi 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +aghi 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +aghi 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +aghi 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=2) +aghi 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=2) +aghi 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=2) +aghi 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +aghi 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +aghi 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=3) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.vgtest new file mode 100644 index 000000000..e146339aa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add.vgtest @@ -0,0 +1 @@ +prog: add diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.c new file mode 100644 index 000000000..fa29aa1b9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.c @@ -0,0 +1,45 @@ +#include +#include "add.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + ximmsweep(AFI, 00000000, 00000000, 0); + ximmsweep(AFI, ffffffff, ffffffff, 0); + ximmsweep(AFI, ffffffff, ffff8000, 0); + ximmsweep(AFI, 00000000, 00007fff, 0); + ximmsweep(AFI, ffffffff, ffffffff, 0); + ximmsweep(AFI, ffffffff, 80000000, 0); + ximmsweep(AFI, 00000000, 7fffffff, 0); + + ximmsweep(AGFI, 00000000, 00000000, 0); + ximmsweep(AGFI, ffffffff, ffffffff, 0); + ximmsweep(AGFI, ffffffff, ffff8000, 0); + ximmsweep(AGFI, 00000000, 00007fff, 0); + ximmsweep(AGFI, ffffffff, ffffffff, 0); + ximmsweep(AGFI, ffffffff, 80000000, 0); + ximmsweep(AGFI, 00000000, 7fffffff, 0); + + ximmsweep(ALFI, 00000000, 00000000, 0); + ximmsweep(ALFI, 00000000, 0000ffff, 0); + ximmsweep(ALFI, 00000000, 00008000, 0); + ximmsweep(ALFI, 00000000, 00007fff, 0); + ximmsweep(ALFI, 00000000, ffffffff, 0); + ximmsweep(ALFI, 00000000, 80000000, 0); + ximmsweep(ALFI, 00000000, 7fffffff, 0); + + ximmsweep(ALGFI, 00000000, 00000000, 0); + ximmsweep(ALGFI, 00000000, 0000ffff, 0); + ximmsweep(ALGFI, 00000000, 00008000, 0); + ximmsweep(ALGFI, 00000000, 00007fff, 0); + ximmsweep(ALGFI, 00000000, ffffffff, 0); + ximmsweep(ALGFI, 00000000, 80000000, 0); + ximmsweep(ALGFI, 00000000, 7fffffff, 0); +} + +int main() +{ + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stdout.exp new file mode 100644 index 000000000..279dd9a70 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.stdout.exp @@ -0,0 +1,308 @@ +AFI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +AFI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +AFI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +AFI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +AFI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +AFI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +AFI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +AFI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +AFI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +AFI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +AFI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +AFI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +AFI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AFI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AFI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AFI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +AFI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +AFI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AFI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +AFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +AFI 0 + 0000000000000000 + FFFFFFFFFFFF8000 = 00000000FFFF8000 (cc=1) +AFI 0 + 0000000000000001 + FFFFFFFFFFFF8000 = 00000000FFFF8001 (cc=1) +AFI 0 + 000000000000FFFF + FFFFFFFFFFFF8000 = 0000000000007FFF (cc=2) +AFI 0 + 0000000000007FFF + FFFFFFFFFFFF8000 = 00000000FFFFFFFF (cc=1) +AFI 0 + 0000000000008000 + FFFFFFFFFFFF8000 = 0000000000000000 (cc=0) +AFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFF8000 = 00000000FFFF7FFF (cc=1) +AFI 0 + 0000000080000000 + FFFFFFFFFFFF8000 = 000000007FFF8000 (cc=3) +AFI 0 + 000000007FFFFFFF + FFFFFFFFFFFF8000 = 000000007FFF7FFF (cc=2) +AFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFF7FFF (cc=1) +AFI 0 + 8000000000000000 + FFFFFFFFFFFF8000 = 80000000FFFF8000 (cc=1) +AFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF7FFF (cc=1) +AFI 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +AFI 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +AFI 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +AFI 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +AFI 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +AFI 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +AFI 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +AFI 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=3) +AFI 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=2) +AFI 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=2) +AFI 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=2) +AFI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +AFI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AFI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AFI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AFI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +AFI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +AFI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AFI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +AFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=1) +AFI 0 + 0000000000000000 + FFFFFFFF80000000 = 0000000080000000 (cc=1) +AFI 0 + 0000000000000001 + FFFFFFFF80000000 = 0000000080000001 (cc=1) +AFI 0 + 000000000000FFFF + FFFFFFFF80000000 = 000000008000FFFF (cc=1) +AFI 0 + 0000000000007FFF + FFFFFFFF80000000 = 0000000080007FFF (cc=1) +AFI 0 + 0000000000008000 + FFFFFFFF80000000 = 0000000080008000 (cc=1) +AFI 0 + 00000000FFFFFFFF + FFFFFFFF80000000 = 000000007FFFFFFF (cc=3) +AFI 0 + 0000000080000000 + FFFFFFFF80000000 = 0000000000000000 (cc=3) +AFI 0 + 000000007FFFFFFF + FFFFFFFF80000000 = 00000000FFFFFFFF (cc=1) +AFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFF80000000 = FFFFFFFF7FFFFFFF (cc=3) +AFI 0 + 8000000000000000 + FFFFFFFF80000000 = 8000000080000000 (cc=1) +AFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF80000000 = 7FFFFFFF7FFFFFFF (cc=3) +AFI 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +AFI 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=3) +AFI 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=3) +AFI 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=3) +AFI 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=3) +AFI 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +AFI 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +AFI 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=3) +AFI 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFE (cc=2) +AFI 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=2) +AFI 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFE (cc=2) +AGFI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +AGFI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +AGFI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +AGFI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +AGFI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +AGFI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +AGFI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +AGFI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +AGFI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +AGFI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +AGFI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AGFI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AGFI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AGFI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AGFI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AGFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +AGFI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +AGFI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AGFI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +AGFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +AGFI 0 + 0000000000000000 + FFFFFFFFFFFF8000 = FFFFFFFFFFFF8000 (cc=1) +AGFI 0 + 0000000000000001 + FFFFFFFFFFFF8000 = FFFFFFFFFFFF8001 (cc=1) +AGFI 0 + 000000000000FFFF + FFFFFFFFFFFF8000 = 0000000000007FFF (cc=2) +AGFI 0 + 0000000000007FFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFFFFFF (cc=1) +AGFI 0 + 0000000000008000 + FFFFFFFFFFFF8000 = 0000000000000000 (cc=0) +AGFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFF8000 = 00000000FFFF7FFF (cc=2) +AGFI 0 + 0000000080000000 + FFFFFFFFFFFF8000 = 000000007FFF8000 (cc=2) +AGFI 0 + 000000007FFFFFFF + FFFFFFFFFFFF8000 = 000000007FFF7FFF (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = FFFFFFFFFFFF7FFF (cc=1) +AGFI 0 + 8000000000000000 + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF8000 (cc=3) +AGFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFF8000 = 7FFFFFFFFFFF7FFF (cc=2) +AGFI 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=2) +AGFI 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=2) +AGFI 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=2) +AGFI 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=2) +AGFI 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=2) +AGFI 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=2) +AGFI 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=2) +AGFI 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=2) +AGFI 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +AGFI 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=3) +AGFI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AGFI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AGFI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AGFI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AGFI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AGFI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +AGFI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +AGFI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AGFI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +AGFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +AGFI 0 + 0000000000000000 + FFFFFFFF80000000 = FFFFFFFF80000000 (cc=1) +AGFI 0 + 0000000000000001 + FFFFFFFF80000000 = FFFFFFFF80000001 (cc=1) +AGFI 0 + 000000000000FFFF + FFFFFFFF80000000 = FFFFFFFF8000FFFF (cc=1) +AGFI 0 + 0000000000007FFF + FFFFFFFF80000000 = FFFFFFFF80007FFF (cc=1) +AGFI 0 + 0000000000008000 + FFFFFFFF80000000 = FFFFFFFF80008000 (cc=1) +AGFI 0 + 00000000FFFFFFFF + FFFFFFFF80000000 = 000000007FFFFFFF (cc=2) +AGFI 0 + 0000000080000000 + FFFFFFFF80000000 = 0000000000000000 (cc=0) +AGFI 0 + 000000007FFFFFFF + FFFFFFFF80000000 = FFFFFFFFFFFFFFFF (cc=1) +AGFI 0 + FFFFFFFFFFFFFFFF + FFFFFFFF80000000 = FFFFFFFF7FFFFFFF (cc=1) +AGFI 0 + 8000000000000000 + FFFFFFFF80000000 = 7FFFFFFF80000000 (cc=3) +AGFI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFF80000000 = 7FFFFFFF7FFFFFFF (cc=2) +AGFI 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=2) +AGFI 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=2) +AGFI 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=2) +AGFI 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=2) +AGFI 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=2) +AGFI 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=2) +AGFI 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=2) +AGFI 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=2) +AGFI 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=2) +AGFI 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +AGFI 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=3) +ALFI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ALFI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +ALFI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +ALFI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +ALFI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +ALFI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ALFI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ALFI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ALFI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=0) +ALFI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ALFI 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +ALFI 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +ALFI 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +ALFI 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +ALFI 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +ALFI 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +ALFI 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +ALFI 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = FFFFFFFF0000FFFE (cc=3) +ALFI 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 7FFFFFFF0000FFFE (cc=3) +ALFI 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +ALFI 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +ALFI 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +ALFI 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +ALFI 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +ALFI 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +ALFI 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +ALFI 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = FFFFFFFF00007FFF (cc=3) +ALFI 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 7FFFFFFF00007FFF (cc=3) +ALFI 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +ALFI 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +ALFI 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +ALFI 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +ALFI 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +ALFI 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +ALFI 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +ALFI 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = FFFFFFFF00007FFE (cc=3) +ALFI 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 7FFFFFFF00007FFE (cc=3) +ALFI 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ALFI 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000000000000 (cc=2) +ALFI 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000000000FFFE (cc=3) +ALFI 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000000007FFE (cc=3) +ALFI 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000000007FFF (cc=3) +ALFI 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +ALFI 0 + 0000000080000000 + 00000000FFFFFFFF = 000000007FFFFFFF (cc=3) +ALFI 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000007FFFFFFE (cc=3) +ALFI 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +ALFI 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +ALFI 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +ALFI 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +ALFI 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +ALFI 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +ALFI 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +ALFI 0 + 00000000FFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +ALFI 0 + 0000000080000000 + 0000000080000000 = 0000000000000000 (cc=2) +ALFI 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = FFFFFFFF7FFFFFFF (cc=3) +ALFI 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 7FFFFFFF7FFFFFFF (cc=3) +ALFI 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ALFI 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +ALFI 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +ALFI 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +ALFI 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +ALFI 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +ALFI 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ALFI 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +ALFI 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = FFFFFFFF7FFFFFFE (cc=3) +ALFI 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +ALFI 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 7FFFFFFF7FFFFFFE (cc=3) +ALGFI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ALGFI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +ALGFI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +ALGFI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +ALGFI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ALGFI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ALGFI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ALGFI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ALGFI 0 + 0000000000000000 + 000000000000FFFF = 000000000000FFFF (cc=1) +ALGFI 0 + 0000000000000001 + 000000000000FFFF = 0000000000010000 (cc=1) +ALGFI 0 + 000000000000FFFF + 000000000000FFFF = 000000000001FFFE (cc=1) +ALGFI 0 + 0000000000007FFF + 000000000000FFFF = 0000000000017FFE (cc=1) +ALGFI 0 + 0000000000008000 + 000000000000FFFF = 0000000000017FFF (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 000000000000FFFF = 000000010000FFFE (cc=1) +ALGFI 0 + 0000000080000000 + 000000000000FFFF = 000000008000FFFF (cc=1) +ALGFI 0 + 000000007FFFFFFF + 000000000000FFFF = 000000008000FFFE (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 000000000000FFFF = 000000000000FFFE (cc=3) +ALGFI 0 + 8000000000000000 + 000000000000FFFF = 800000000000FFFF (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 000000000000FFFF = 800000000000FFFE (cc=1) +ALGFI 0 + 0000000000000000 + 0000000000008000 = 0000000000008000 (cc=1) +ALGFI 0 + 0000000000000001 + 0000000000008000 = 0000000000008001 (cc=1) +ALGFI 0 + 000000000000FFFF + 0000000000008000 = 0000000000017FFF (cc=1) +ALGFI 0 + 0000000000007FFF + 0000000000008000 = 000000000000FFFF (cc=1) +ALGFI 0 + 0000000000008000 + 0000000000008000 = 0000000000010000 (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 0000000000008000 = 0000000100007FFF (cc=1) +ALGFI 0 + 0000000080000000 + 0000000000008000 = 0000000080008000 (cc=1) +ALGFI 0 + 000000007FFFFFFF + 0000000000008000 = 0000000080007FFF (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 0000000000008000 = 0000000000007FFF (cc=3) +ALGFI 0 + 8000000000000000 + 0000000000008000 = 8000000000008000 (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 0000000000008000 = 8000000000007FFF (cc=1) +ALGFI 0 + 0000000000000000 + 0000000000007FFF = 0000000000007FFF (cc=1) +ALGFI 0 + 0000000000000001 + 0000000000007FFF = 0000000000008000 (cc=1) +ALGFI 0 + 000000000000FFFF + 0000000000007FFF = 0000000000017FFE (cc=1) +ALGFI 0 + 0000000000007FFF + 0000000000007FFF = 000000000000FFFE (cc=1) +ALGFI 0 + 0000000000008000 + 0000000000007FFF = 000000000000FFFF (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 0000000000007FFF = 0000000100007FFE (cc=1) +ALGFI 0 + 0000000080000000 + 0000000000007FFF = 0000000080007FFF (cc=1) +ALGFI 0 + 000000007FFFFFFF + 0000000000007FFF = 0000000080007FFE (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 0000000000007FFF = 0000000000007FFE (cc=3) +ALGFI 0 + 8000000000000000 + 0000000000007FFF = 8000000000007FFF (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 0000000000007FFF = 8000000000007FFE (cc=1) +ALGFI 0 + 0000000000000000 + 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ALGFI 0 + 0000000000000001 + 00000000FFFFFFFF = 0000000100000000 (cc=1) +ALGFI 0 + 000000000000FFFF + 00000000FFFFFFFF = 000000010000FFFE (cc=1) +ALGFI 0 + 0000000000007FFF + 00000000FFFFFFFF = 0000000100007FFE (cc=1) +ALGFI 0 + 0000000000008000 + 00000000FFFFFFFF = 0000000100007FFF (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 00000000FFFFFFFF = 00000001FFFFFFFE (cc=1) +ALGFI 0 + 0000000080000000 + 00000000FFFFFFFF = 000000017FFFFFFF (cc=1) +ALGFI 0 + 000000007FFFFFFF + 00000000FFFFFFFF = 000000017FFFFFFE (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 00000000FFFFFFFF = 00000000FFFFFFFE (cc=3) +ALGFI 0 + 8000000000000000 + 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 00000000FFFFFFFF = 80000000FFFFFFFE (cc=1) +ALGFI 0 + 0000000000000000 + 0000000080000000 = 0000000080000000 (cc=1) +ALGFI 0 + 0000000000000001 + 0000000080000000 = 0000000080000001 (cc=1) +ALGFI 0 + 000000000000FFFF + 0000000080000000 = 000000008000FFFF (cc=1) +ALGFI 0 + 0000000000007FFF + 0000000080000000 = 0000000080007FFF (cc=1) +ALGFI 0 + 0000000000008000 + 0000000080000000 = 0000000080008000 (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 0000000080000000 = 000000017FFFFFFF (cc=1) +ALGFI 0 + 0000000080000000 + 0000000080000000 = 0000000100000000 (cc=1) +ALGFI 0 + 000000007FFFFFFF + 0000000080000000 = 00000000FFFFFFFF (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 0000000080000000 = 000000007FFFFFFF (cc=3) +ALGFI 0 + 8000000000000000 + 0000000080000000 = 8000000080000000 (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 0000000080000000 = 800000007FFFFFFF (cc=1) +ALGFI 0 + 0000000000000000 + 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ALGFI 0 + 0000000000000001 + 000000007FFFFFFF = 0000000080000000 (cc=1) +ALGFI 0 + 000000000000FFFF + 000000007FFFFFFF = 000000008000FFFE (cc=1) +ALGFI 0 + 0000000000007FFF + 000000007FFFFFFF = 0000000080007FFE (cc=1) +ALGFI 0 + 0000000000008000 + 000000007FFFFFFF = 0000000080007FFF (cc=1) +ALGFI 0 + 00000000FFFFFFFF + 000000007FFFFFFF = 000000017FFFFFFE (cc=1) +ALGFI 0 + 0000000080000000 + 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ALGFI 0 + 000000007FFFFFFF + 000000007FFFFFFF = 00000000FFFFFFFE (cc=1) +ALGFI 0 + FFFFFFFFFFFFFFFF + 000000007FFFFFFF = 000000007FFFFFFE (cc=3) +ALGFI 0 + 8000000000000000 + 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +ALGFI 0 + 7FFFFFFFFFFFFFFF + 000000007FFFFFFF = 800000007FFFFFFE (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.vgtest new file mode 100644 index 000000000..26b4491f3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_EI.vgtest @@ -0,0 +1,2 @@ +prog: add_EI +prereq: test -x add_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.c new file mode 100644 index 000000000..2433975e4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.c @@ -0,0 +1,34 @@ +#include +#include "add.h" +#include "opcodes.h" + +static void do_memimm_insns(void) +{ + memimmsweep(ASI, 00, 0); + memimmsweep(AGSI, 00, 0); + memimmsweep(ALSI, 00, 0); + memimmsweep(ALGSI, 00, 0); + memimmsweep(ASI, 01, 0); + memimmsweep(AGSI, 01, 0); + memimmsweep(ALSI, 01, 0); + memimmsweep(ALGSI, 01, 0); + memimmsweep(ASI, ff, 0); + memimmsweep(AGSI, ff, 0); + memimmsweep(ALSI, ff, 0); + memimmsweep(ALGSI, ff, 0); + memimmsweep(ASI, 80, 0); + memimmsweep(AGSI, 80, 0); + memimmsweep(ALSI, 80, 0); + memimmsweep(ALGSI, 80, 0); + memimmsweep(ASI, 7f, 0); + memimmsweep(AGSI, 7f, 0); + memimmsweep(ALSI, 7f, 0); + memimmsweep(ALGSI, 7f, 0); +} + +int main() +{ + do_memimm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stdout.exp new file mode 100644 index 000000000..ea9579cfa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.stdout.exp @@ -0,0 +1,220 @@ +ASI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ASI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=0) +ASI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=0) +ASI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=0) +ASI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=0) +ASI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=0) +ASI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=0) +ASI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=0) +ASI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ASI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +ASI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +AGSI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +AGSI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=2) +AGSI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=2) +AGSI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=2) +AGSI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=2) +AGSI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=2) +AGSI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=2) +AGSI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=2) +AGSI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +AGSI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +AGSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=2) +ALSI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ALSI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=0) +ALSI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=0) +ALSI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=0) +ALSI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=0) +ALSI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=0) +ALSI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=0) +ALSI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=0) +ALSI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ALSI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +ALSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ALGSI 0 + 0000000000000000 + 0000000000000000 = 0000000000000000 (cc=0) +ALGSI 0 + 0000000000000001 + 0000000000000000 = 0000000000000001 (cc=1) +ALGSI 0 + 000000000000FFFF + 0000000000000000 = 000000000000FFFF (cc=1) +ALGSI 0 + 0000000000007FFF + 0000000000000000 = 0000000000007FFF (cc=1) +ALGSI 0 + 0000000000008000 + 0000000000000000 = 0000000000008000 (cc=1) +ALGSI 0 + 00000000FFFFFFFF + 0000000000000000 = 00000000FFFFFFFF (cc=1) +ALGSI 0 + 0000000080000000 + 0000000000000000 = 0000000080000000 (cc=1) +ALGSI 0 + 000000007FFFFFFF + 0000000000000000 = 000000007FFFFFFF (cc=1) +ALGSI 0 + FFFFFFFFFFFFFFFF + 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ALGSI 0 + 8000000000000000 + 0000000000000000 = 8000000000000000 (cc=1) +ALGSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +ASI 0 + 0000000000000000 + 0000000000000001 = 0000000100000000 (cc=2) +ASI 0 + 0000000000000001 + 0000000000000001 = 0000000100000001 (cc=2) +ASI 0 + 000000000000FFFF + 0000000000000001 = 000000010000FFFF (cc=2) +ASI 0 + 0000000000007FFF + 0000000000000001 = 0000000100007FFF (cc=2) +ASI 0 + 0000000000008000 + 0000000000000001 = 0000000100008000 (cc=2) +ASI 0 + 00000000FFFFFFFF + 0000000000000001 = 00000001FFFFFFFF (cc=2) +ASI 0 + 0000000080000000 + 0000000000000001 = 0000000180000000 (cc=2) +ASI 0 + 000000007FFFFFFF + 0000000000000001 = 000000017FFFFFFF (cc=2) +ASI 0 + FFFFFFFFFFFFFFFF + 0000000000000001 = 00000000FFFFFFFF (cc=0) +ASI 0 + 8000000000000000 + 0000000000000001 = 8000000100000000 (cc=1) +ASI 0 + 7FFFFFFFFFFFFFFF + 0000000000000001 = 80000000FFFFFFFF (cc=3) +AGSI 0 + 0000000000000000 + 0000000000000001 = 0000000000000001 (cc=2) +AGSI 0 + 0000000000000001 + 0000000000000001 = 0000000000000002 (cc=2) +AGSI 0 + 000000000000FFFF + 0000000000000001 = 0000000000010000 (cc=2) +AGSI 0 + 0000000000007FFF + 0000000000000001 = 0000000000008000 (cc=2) +AGSI 0 + 0000000000008000 + 0000000000000001 = 0000000000008001 (cc=2) +AGSI 0 + 00000000FFFFFFFF + 0000000000000001 = 0000000100000000 (cc=2) +AGSI 0 + 0000000080000000 + 0000000000000001 = 0000000080000001 (cc=2) +AGSI 0 + 000000007FFFFFFF + 0000000000000001 = 0000000080000000 (cc=2) +AGSI 0 + FFFFFFFFFFFFFFFF + 0000000000000001 = 0000000000000000 (cc=0) +AGSI 0 + 8000000000000000 + 0000000000000001 = 8000000000000001 (cc=1) +AGSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000001 = 8000000000000000 (cc=3) +ALSI 0 + 0000000000000000 + 0000000000000001 = 0000000100000000 (cc=1) +ALSI 0 + 0000000000000001 + 0000000000000001 = 0000000100000001 (cc=1) +ALSI 0 + 000000000000FFFF + 0000000000000001 = 000000010000FFFF (cc=1) +ALSI 0 + 0000000000007FFF + 0000000000000001 = 0000000100007FFF (cc=1) +ALSI 0 + 0000000000008000 + 0000000000000001 = 0000000100008000 (cc=1) +ALSI 0 + 00000000FFFFFFFF + 0000000000000001 = 00000001FFFFFFFF (cc=1) +ALSI 0 + 0000000080000000 + 0000000000000001 = 0000000180000000 (cc=1) +ALSI 0 + 000000007FFFFFFF + 0000000000000001 = 000000017FFFFFFF (cc=1) +ALSI 0 + FFFFFFFFFFFFFFFF + 0000000000000001 = 00000000FFFFFFFF (cc=2) +ALSI 0 + 8000000000000000 + 0000000000000001 = 8000000100000000 (cc=1) +ALSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000001 = 80000000FFFFFFFF (cc=1) +ALGSI 0 + 0000000000000000 + 0000000000000001 = 0000000000000001 (cc=1) +ALGSI 0 + 0000000000000001 + 0000000000000001 = 0000000000000002 (cc=1) +ALGSI 0 + 000000000000FFFF + 0000000000000001 = 0000000000010000 (cc=1) +ALGSI 0 + 0000000000007FFF + 0000000000000001 = 0000000000008000 (cc=1) +ALGSI 0 + 0000000000008000 + 0000000000000001 = 0000000000008001 (cc=1) +ALGSI 0 + 00000000FFFFFFFF + 0000000000000001 = 0000000100000000 (cc=1) +ALGSI 0 + 0000000080000000 + 0000000000000001 = 0000000080000001 (cc=1) +ALGSI 0 + 000000007FFFFFFF + 0000000000000001 = 0000000080000000 (cc=1) +ALGSI 0 + FFFFFFFFFFFFFFFF + 0000000000000001 = 0000000000000000 (cc=2) +ALGSI 0 + 8000000000000000 + 0000000000000001 = 8000000000000001 (cc=1) +ALGSI 0 + 7FFFFFFFFFFFFFFF + 0000000000000001 = 8000000000000000 (cc=1) +ASI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=1) +ASI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = FFFFFFFF00000001 (cc=1) +ASI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = FFFFFFFF0000FFFF (cc=1) +ASI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = FFFFFFFF00007FFF (cc=1) +ASI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = FFFFFFFF00008000 (cc=1) +ASI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ASI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = FFFFFFFF80000000 (cc=1) +ASI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +ASI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFEFFFFFFFF (cc=1) +ASI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFF00000000 (cc=3) +ASI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFEFFFFFFFF (cc=2) +AGSI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +AGSI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +AGSI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=2) +AGSI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=2) +AGSI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=2) +AGSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=2) +AGSI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=2) +AGSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=2) +AGSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +AGSI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +AGSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=2) +ALSI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=1) +ALSI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = FFFFFFFF00000001 (cc=1) +ALSI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = FFFFFFFF0000FFFF (cc=1) +ALSI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = FFFFFFFF00007FFF (cc=1) +ALSI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = FFFFFFFF00008000 (cc=1) +ALSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ALSI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = FFFFFFFF80000000 (cc=1) +ALSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +ALSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFEFFFFFFFF (cc=3) +ALSI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFF00000000 (cc=3) +ALSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFEFFFFFFFF (cc=3) +ALGSI 0 + 0000000000000000 + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ALGSI 0 + 0000000000000001 + FFFFFFFFFFFFFFFF = 0000000000000000 (cc=2) +ALGSI 0 + 000000000000FFFF + FFFFFFFFFFFFFFFF = 000000000000FFFE (cc=3) +ALGSI 0 + 0000000000007FFF + FFFFFFFFFFFFFFFF = 0000000000007FFE (cc=3) +ALGSI 0 + 0000000000008000 + FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=3) +ALGSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=3) +ALGSI 0 + 0000000080000000 + FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=3) +ALGSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFFFF = 000000007FFFFFFE (cc=3) +ALGSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=3) +ALGSI 0 + 8000000000000000 + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=3) +ALGSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE (cc=3) +ASI 0 + 0000000000000000 + FFFFFFFFFFFFFF80 = FFFFFF8000000000 (cc=1) +ASI 0 + 0000000000000001 + FFFFFFFFFFFFFF80 = FFFFFF8000000001 (cc=1) +ASI 0 + 000000000000FFFF + FFFFFFFFFFFFFF80 = FFFFFF800000FFFF (cc=1) +ASI 0 + 0000000000007FFF + FFFFFFFFFFFFFF80 = FFFFFF8000007FFF (cc=1) +ASI 0 + 0000000000008000 + FFFFFFFFFFFFFF80 = FFFFFF8000008000 (cc=1) +ASI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF80FFFFFFFF (cc=1) +ASI 0 + 0000000080000000 + FFFFFFFFFFFFFF80 = FFFFFF8080000000 (cc=1) +ASI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF807FFFFFFF (cc=1) +ASI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF7FFFFFFFFF (cc=1) +ASI 0 + 8000000000000000 + FFFFFFFFFFFFFF80 = 7FFFFF8000000000 (cc=3) +ASI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = 7FFFFF7FFFFFFFFF (cc=2) +AGSI 0 + 0000000000000000 + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF80 (cc=1) +AGSI 0 + 0000000000000001 + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF81 (cc=1) +AGSI 0 + 000000000000FFFF + FFFFFFFFFFFFFF80 = 000000000000FF7F (cc=2) +AGSI 0 + 0000000000007FFF + FFFFFFFFFFFFFF80 = 0000000000007F7F (cc=2) +AGSI 0 + 0000000000008000 + FFFFFFFFFFFFFF80 = 0000000000007F80 (cc=2) +AGSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFF80 = 00000000FFFFFF7F (cc=2) +AGSI 0 + 0000000080000000 + FFFFFFFFFFFFFF80 = 000000007FFFFF80 (cc=2) +AGSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFF80 = 000000007FFFFF7F (cc=2) +AGSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF7F (cc=1) +AGSI 0 + 8000000000000000 + FFFFFFFFFFFFFF80 = 7FFFFFFFFFFFFF80 (cc=3) +AGSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = 7FFFFFFFFFFFFF7F (cc=2) +ALSI 0 + 0000000000000000 + FFFFFFFFFFFFFF80 = FFFFFF8000000000 (cc=1) +ALSI 0 + 0000000000000001 + FFFFFFFFFFFFFF80 = FFFFFF8000000001 (cc=1) +ALSI 0 + 000000000000FFFF + FFFFFFFFFFFFFF80 = FFFFFF800000FFFF (cc=1) +ALSI 0 + 0000000000007FFF + FFFFFFFFFFFFFF80 = FFFFFF8000007FFF (cc=1) +ALSI 0 + 0000000000008000 + FFFFFFFFFFFFFF80 = FFFFFF8000008000 (cc=1) +ALSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF80FFFFFFFF (cc=1) +ALSI 0 + 0000000080000000 + FFFFFFFFFFFFFF80 = FFFFFF8080000000 (cc=1) +ALSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF807FFFFFFF (cc=1) +ALSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFF7FFFFFFFFF (cc=3) +ALSI 0 + 8000000000000000 + FFFFFFFFFFFFFF80 = 7FFFFF8000000000 (cc=3) +ALSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = 7FFFFF7FFFFFFFFF (cc=3) +ALGSI 0 + 0000000000000000 + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF80 (cc=1) +ALGSI 0 + 0000000000000001 + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF81 (cc=1) +ALGSI 0 + 000000000000FFFF + FFFFFFFFFFFFFF80 = 000000000000FF7F (cc=3) +ALGSI 0 + 0000000000007FFF + FFFFFFFFFFFFFF80 = 0000000000007F7F (cc=3) +ALGSI 0 + 0000000000008000 + FFFFFFFFFFFFFF80 = 0000000000007F80 (cc=3) +ALGSI 0 + 00000000FFFFFFFF + FFFFFFFFFFFFFF80 = 00000000FFFFFF7F (cc=3) +ALGSI 0 + 0000000080000000 + FFFFFFFFFFFFFF80 = 000000007FFFFF80 (cc=3) +ALGSI 0 + 000000007FFFFFFF + FFFFFFFFFFFFFF80 = 000000007FFFFF7F (cc=3) +ALGSI 0 + FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = FFFFFFFFFFFFFF7F (cc=3) +ALGSI 0 + 8000000000000000 + FFFFFFFFFFFFFF80 = 7FFFFFFFFFFFFF80 (cc=3) +ALGSI 0 + 7FFFFFFFFFFFFFFF + FFFFFFFFFFFFFF80 = 7FFFFFFFFFFFFF7F (cc=3) +ASI 0 + 0000000000000000 + 000000000000007F = 0000007F00000000 (cc=2) +ASI 0 + 0000000000000001 + 000000000000007F = 0000007F00000001 (cc=2) +ASI 0 + 000000000000FFFF + 000000000000007F = 0000007F0000FFFF (cc=2) +ASI 0 + 0000000000007FFF + 000000000000007F = 0000007F00007FFF (cc=2) +ASI 0 + 0000000000008000 + 000000000000007F = 0000007F00008000 (cc=2) +ASI 0 + 00000000FFFFFFFF + 000000000000007F = 0000007FFFFFFFFF (cc=2) +ASI 0 + 0000000080000000 + 000000000000007F = 0000007F80000000 (cc=2) +ASI 0 + 000000007FFFFFFF + 000000000000007F = 0000007F7FFFFFFF (cc=2) +ASI 0 + FFFFFFFFFFFFFFFF + 000000000000007F = 0000007EFFFFFFFF (cc=2) +ASI 0 + 8000000000000000 + 000000000000007F = 8000007F00000000 (cc=1) +ASI 0 + 7FFFFFFFFFFFFFFF + 000000000000007F = 8000007EFFFFFFFF (cc=3) +AGSI 0 + 0000000000000000 + 000000000000007F = 000000000000007F (cc=2) +AGSI 0 + 0000000000000001 + 000000000000007F = 0000000000000080 (cc=2) +AGSI 0 + 000000000000FFFF + 000000000000007F = 000000000001007E (cc=2) +AGSI 0 + 0000000000007FFF + 000000000000007F = 000000000000807E (cc=2) +AGSI 0 + 0000000000008000 + 000000000000007F = 000000000000807F (cc=2) +AGSI 0 + 00000000FFFFFFFF + 000000000000007F = 000000010000007E (cc=2) +AGSI 0 + 0000000080000000 + 000000000000007F = 000000008000007F (cc=2) +AGSI 0 + 000000007FFFFFFF + 000000000000007F = 000000008000007E (cc=2) +AGSI 0 + FFFFFFFFFFFFFFFF + 000000000000007F = 000000000000007E (cc=2) +AGSI 0 + 8000000000000000 + 000000000000007F = 800000000000007F (cc=1) +AGSI 0 + 7FFFFFFFFFFFFFFF + 000000000000007F = 800000000000007E (cc=3) +ALSI 0 + 0000000000000000 + 000000000000007F = 0000007F00000000 (cc=1) +ALSI 0 + 0000000000000001 + 000000000000007F = 0000007F00000001 (cc=1) +ALSI 0 + 000000000000FFFF + 000000000000007F = 0000007F0000FFFF (cc=1) +ALSI 0 + 0000000000007FFF + 000000000000007F = 0000007F00007FFF (cc=1) +ALSI 0 + 0000000000008000 + 000000000000007F = 0000007F00008000 (cc=1) +ALSI 0 + 00000000FFFFFFFF + 000000000000007F = 0000007FFFFFFFFF (cc=1) +ALSI 0 + 0000000080000000 + 000000000000007F = 0000007F80000000 (cc=1) +ALSI 0 + 000000007FFFFFFF + 000000000000007F = 0000007F7FFFFFFF (cc=1) +ALSI 0 + FFFFFFFFFFFFFFFF + 000000000000007F = 0000007EFFFFFFFF (cc=3) +ALSI 0 + 8000000000000000 + 000000000000007F = 8000007F00000000 (cc=1) +ALSI 0 + 7FFFFFFFFFFFFFFF + 000000000000007F = 8000007EFFFFFFFF (cc=1) +ALGSI 0 + 0000000000000000 + 000000000000007F = 000000000000007F (cc=1) +ALGSI 0 + 0000000000000001 + 000000000000007F = 0000000000000080 (cc=1) +ALGSI 0 + 000000000000FFFF + 000000000000007F = 000000000001007E (cc=1) +ALGSI 0 + 0000000000007FFF + 000000000000007F = 000000000000807E (cc=1) +ALGSI 0 + 0000000000008000 + 000000000000007F = 000000000000807F (cc=1) +ALGSI 0 + 00000000FFFFFFFF + 000000000000007F = 000000010000007E (cc=1) +ALGSI 0 + 0000000080000000 + 000000000000007F = 000000008000007F (cc=1) +ALGSI 0 + 000000007FFFFFFF + 000000000000007F = 000000008000007E (cc=1) +ALGSI 0 + FFFFFFFFFFFFFFFF + 000000000000007F = 000000000000007E (cc=3) +ALGSI 0 + 8000000000000000 + 000000000000007F = 800000000000007F (cc=1) +ALGSI 0 + 7FFFFFFFFFFFFFFF + 000000000000007F = 800000000000007E (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.vgtest new file mode 100644 index 000000000..836b526a5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/add_GE.vgtest @@ -0,0 +1,2 @@ +prog: add_GE +prereq: test -x add_GE diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.c new file mode 100644 index 000000000..e1a180d22 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.c @@ -0,0 +1,85 @@ +#include +#include "and.h" +#include "opcodes.h" + +#define nihh(r1,i2) ".long 0xa5" #r1 "4" #i2 "\n\t" +#define nihl(r1,i2) ".long 0xa5" #r1 "5" #i2 "\n\t" +#define nilh(r1,i2) ".long 0xa5" #r1 "6" #i2 "\n\t" +#define nill(r1,i2) ".long 0xa5" #r1 "7" #i2 "\n\t" + +static void do_imm_insns(void) +{ + memimmsweep(ni, 0); + memimmsweep(ni, 255); + memimmsweep(ni, 128); + memimmsweep(ni, 0xaa); + memimmsweep(ni, 0x55); + niysweep(00); + niysweep(ff); + niysweep(80); + niysweep(aa); + niysweep(55); + immsweep(nihh, 0055); + immsweep(nihl, 0055); + immsweep(nilh, 0055); + immsweep(nill, 0055); + immsweep(nihh, 00aa); + immsweep(nihl, 00aa); + immsweep(nilh, 00aa); + immsweep(nill, 00aa); + immsweep(nihh, 00ff); + immsweep(nihl, 00ff); + immsweep(nilh, 00ff); + immsweep(nill, 00ff); + immsweep(nihh, 0000); + immsweep(nihl, 0000); + immsweep(nilh, 0000); + immsweep(nill, 0000); + immsweep(nihh, ffff); + immsweep(nihl, ffff); + immsweep(nilh, ffff); + immsweep(nill, ffff); + immsweep(nihh, aaaa); + immsweep(nihl, aaaa); + immsweep(nilh, aaaa); + immsweep(nill, aaaa); + immsweep(nihh, 5555); + immsweep(nihl, 5555); + immsweep(nilh, 5555); + immsweep(nill, 5555); +} + + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(n, s2); + memsweep(ng, s2); + regsweep(nr, s2); + regsweep(ngr, s2); + nysweep(s2); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x5555555555555555ul); + do_regmem_insns(0xaaaaaaaaaaaaaaaaul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xaaaaaaaa00000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x0000000055555555ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.h new file mode 100644 index 000000000..c10785446 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.h @@ -0,0 +1,182 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define AND_REG_MEM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define AND_REG_REG(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d" (s2) \ + : "0", "cc"); \ + printf(#insn " + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define AND_REG_IMM(insn, s1, s2) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##s2, v, cc); \ +}) + +#define AND_MEM_IMM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0," #s2 "\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp) \ + : "0", "cc"); \ + printf(#insn " + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) s2, tmp, cc); \ +}) + + +#define memsweep(i, s2) \ +({ \ + AND_REG_MEM(i, 0ul, s2); \ + AND_REG_MEM(i, 1ul, s2); \ + AND_REG_MEM(i, 0xfffful, s2); \ + AND_REG_MEM(i, 0x7ffful, s2); \ + AND_REG_MEM(i, 0x8000ul, s2); \ + AND_REG_MEM(i, 0xfffffffful, s2); \ + AND_REG_MEM(i, 0x80000000ul, s2); \ + AND_REG_MEM(i, 0x7ffffffful, s2); \ + AND_REG_MEM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + AND_REG_MEM(i, 0x8000000000000000ul, s2); \ + AND_REG_MEM(i, 0xfffffffffffffffful, s2); \ + AND_REG_MEM(i, 0x5555555555555555ul, s2); \ +}) + +#define regsweep(i, s2) \ +({ \ + AND_REG_REG(i, 0ul, s2); \ + AND_REG_REG(i, 1ul, s2); \ + AND_REG_REG(i, 0xfffful, s2); \ + AND_REG_REG(i, 0x7ffful, s2); \ + AND_REG_REG(i, 0x8000ul, s2); \ + AND_REG_REG(i, 0xfffffffful, s2); \ + AND_REG_REG(i, 0x80000000ul, s2); \ + AND_REG_REG(i, 0x7ffffffful, s2); \ + AND_REG_REG(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + AND_REG_REG(i, 0x8000000000000000ul, s2); \ + AND_REG_REG(i, 0xfffffffffffffffful, s2); \ + AND_REG_REG(i, 0x5555555555555555ul, s2); \ +}) + +#define immsweep(i, s2) \ +({ \ + AND_REG_IMM(i, 0ul, s2); \ + AND_REG_IMM(i, 1ul, s2); \ + AND_REG_IMM(i, 0xfffful, s2); \ + AND_REG_IMM(i, 0x7ffful, s2); \ + AND_REG_IMM(i, 0x8000ul, s2); \ + AND_REG_IMM(i, 0xfffffffful, s2); \ + AND_REG_IMM(i, 0x80000000ul, s2); \ + AND_REG_IMM(i, 0x7ffffffful, s2); \ + AND_REG_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + AND_REG_IMM(i, 0x8000000000000000ul, s2); \ + AND_REG_IMM(i, 0xfffffffffffffffful, s2); \ + AND_REG_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define memimmsweep(i, s2) \ +({ \ + AND_MEM_IMM(i, 0ul, s2); \ + AND_MEM_IMM(i, 1ul, s2); \ + AND_MEM_IMM(i, 0xfffful, s2); \ + AND_MEM_IMM(i, 0x7ffful, s2); \ + AND_MEM_IMM(i, 0x8000ul, s2); \ + AND_MEM_IMM(i, 0xfffffffful, s2); \ + AND_MEM_IMM(i, 0x80000000ul, s2); \ + AND_MEM_IMM(i, 0x7ffffffful, s2); \ + AND_MEM_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + AND_MEM_IMM(i, 0x8000000000000000ul, s2); \ + AND_MEM_IMM(i, 0xfffffffffffffffful, s2); \ + AND_MEM_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define AND_NY(s1, s2) \ +({ \ + register unsigned long tmp asm("1") = s1; \ + register unsigned long *addr asm("2") = &s2; \ + int cc; \ + asm volatile( NY(1,0,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d"(addr) \ + : "cc"); \ + printf("ny + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define AND_NIY(s1, i2) \ +({ \ + unsigned long tmp = s1; \ + register unsigned long *addr asm("2") = &tmp; \ + int cc; \ + asm volatile( NIY(i2,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp), "d" (addr) \ + : "cc"); \ + printf("niy + %16.16lX & %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##i2, tmp, cc); \ +}) + +#define nysweep(s2) \ +({ \ + AND_NY(0ul, s2); \ + AND_NY(1ul, s2); \ + AND_NY(0xfffful, s2); \ + AND_NY(0x7ffful, s2); \ + AND_NY(0x8000ul, s2); \ + AND_NY(0xfffffffful, s2); \ + AND_NY(0x80000000ul, s2); \ + AND_NY(0x7ffffffful, s2); \ + AND_NY(0xaaaaaaaaaaaaaaaaul, s2); \ + AND_NY(0x8000000000000000ul, s2); \ + AND_NY(0xfffffffffffffffful, s2); \ + AND_NY(0x5555555555555555ul, s2); \ +}) + +#define niysweep(s2) \ +({ \ + AND_NIY(0ul, s2); \ + AND_NIY(1ul, s2); \ + AND_NIY(0xfffful, s2); \ + AND_NIY(0x7ffful, s2); \ + AND_NIY(0x8000ul, s2); \ + AND_NIY(0xfffffffful, s2); \ + AND_NIY(0x80000000ul, s2); \ + AND_NIY(0x7ffffffful, s2); \ + AND_NIY(0xaaaaaaaaaaaaaaaaul, s2); \ + AND_NIY(0x8000000000000000ul, s2); \ + AND_NIY(0xfffffffffffffffful, s2); \ + AND_NIY(0x5555555555555555ul, s2); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stdout.exp new file mode 100644 index 000000000..e4f487078 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.stdout.exp @@ -0,0 +1,1476 @@ +n + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +n + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +n + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 0000000000000000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & 0000000000000000 = 0000000000000000 (cc=0) +ng + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ng + 5555555555555555 & 0000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & 0000000000000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ngr + 5555555555555555 & 0000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ny + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 0000000000000000 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 0000000000000000 = 5555555500000000 (cc=0) +n + 0000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +n + 0000000000000001 & 5555555555555555 = 0000000000000001 (cc=1) +n + 000000000000FFFF & 5555555555555555 = 0000000000005555 (cc=1) +n + 0000000000007FFF & 5555555555555555 = 0000000000005555 (cc=1) +n + 0000000000008000 & 5555555555555555 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +n + 0000000080000000 & 5555555555555555 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +n + AAAAAAAAAAAAAAAA & 5555555555555555 = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 5555555555555555 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 5555555555555555 = FFFFFFFF55555555 (cc=1) +n + 5555555555555555 & 5555555555555555 = 5555555555555555 (cc=1) +ng + 0000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 5555555555555555 = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 5555555555555555 = 0000000000005555 (cc=1) +ng + 0000000000007FFF & 5555555555555555 = 0000000000005555 (cc=1) +ng + 0000000000008000 & 5555555555555555 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ng + 0000000080000000 & 5555555555555555 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ng + AAAAAAAAAAAAAAAA & 5555555555555555 = 0000000000000000 (cc=0) +ng + 8000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 5555555555555555 = 5555555555555555 (cc=1) +ng + 5555555555555555 & 5555555555555555 = 5555555555555555 (cc=1) +nr + 0000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 5555555555555555 = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 5555555555555555 = 0000000000005555 (cc=1) +nr + 0000000000007FFF & 5555555555555555 = 0000000000005555 (cc=1) +nr + 0000000000008000 & 5555555555555555 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +nr + 0000000080000000 & 5555555555555555 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +nr + AAAAAAAAAAAAAAAA & 5555555555555555 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 5555555555555555 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 5555555555555555 = FFFFFFFF55555555 (cc=1) +nr + 5555555555555555 & 5555555555555555 = 5555555555555555 (cc=1) +ngr + 0000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 5555555555555555 = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 5555555555555555 = 0000000000005555 (cc=1) +ngr + 0000000000007FFF & 5555555555555555 = 0000000000005555 (cc=1) +ngr + 0000000000008000 & 5555555555555555 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ngr + 0000000080000000 & 5555555555555555 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ngr + AAAAAAAAAAAAAAAA & 5555555555555555 = 0000000000000000 (cc=0) +ngr + 8000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 5555555555555555 = 5555555555555555 (cc=1) +ngr + 5555555555555555 & 5555555555555555 = 5555555555555555 (cc=1) +ny + 0000000000000000 & 5555555555555555 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 5555555555555555 = 0000000000000001 (cc=1) +ny + 000000000000FFFF & 5555555555555555 = 0000000000005555 (cc=1) +ny + 0000000000007FFF & 5555555555555555 = 0000000000005555 (cc=1) +ny + 0000000000008000 & 5555555555555555 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ny + 0000000080000000 & 5555555555555555 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 5555555555555555 = 0000000055555555 (cc=1) +ny + AAAAAAAAAAAAAAAA & 5555555555555555 = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 5555555555555555 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 5555555555555555 = FFFFFFFF55555555 (cc=1) +ny + 5555555555555555 & 5555555555555555 = 5555555555555555 (cc=1) +n + 0000000000000000 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +n + 0000000000000001 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +n + 000000000000FFFF & AAAAAAAAAAAAAAAA = 000000000000AAAA (cc=1) +n + 0000000000007FFF & AAAAAAAAAAAAAAAA = 0000000000002AAA (cc=1) +n + 0000000000008000 & AAAAAAAAAAAAAAAA = 0000000000008000 (cc=1) +n + 00000000FFFFFFFF & AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +n + 0000000080000000 & AAAAAAAAAAAAAAAA = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +n + AAAAAAAAAAAAAAAA & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +n + 8000000000000000 & AAAAAAAAAAAAAAAA = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & AAAAAAAAAAAAAAAA = FFFFFFFFAAAAAAAA (cc=1) +n + 5555555555555555 & AAAAAAAAAAAAAAAA = 5555555500000000 (cc=0) +ng + 0000000000000000 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ng + 0000000000000001 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ng + 000000000000FFFF & AAAAAAAAAAAAAAAA = 000000000000AAAA (cc=1) +ng + 0000000000007FFF & AAAAAAAAAAAAAAAA = 0000000000002AAA (cc=1) +ng + 0000000000008000 & AAAAAAAAAAAAAAAA = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +ng + 0000000080000000 & AAAAAAAAAAAAAAAA = 0000000080000000 (cc=1) +ng + 000000007FFFFFFF & AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +ng + AAAAAAAAAAAAAAAA & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ng + 8000000000000000 & AAAAAAAAAAAAAAAA = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ng + 5555555555555555 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +nr + 0000000000000000 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +nr + 0000000000000001 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +nr + 000000000000FFFF & AAAAAAAAAAAAAAAA = 000000000000AAAA (cc=1) +nr + 0000000000007FFF & AAAAAAAAAAAAAAAA = 0000000000002AAA (cc=1) +nr + 0000000000008000 & AAAAAAAAAAAAAAAA = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +nr + 0000000080000000 & AAAAAAAAAAAAAAAA = 0000000080000000 (cc=1) +nr + 000000007FFFFFFF & AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +nr + AAAAAAAAAAAAAAAA & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +nr + 8000000000000000 & AAAAAAAAAAAAAAAA = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & AAAAAAAAAAAAAAAA = FFFFFFFFAAAAAAAA (cc=1) +nr + 5555555555555555 & AAAAAAAAAAAAAAAA = 5555555500000000 (cc=0) +ngr + 0000000000000000 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ngr + 0000000000000001 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & AAAAAAAAAAAAAAAA = 000000000000AAAA (cc=1) +ngr + 0000000000007FFF & AAAAAAAAAAAAAAAA = 0000000000002AAA (cc=1) +ngr + 0000000000008000 & AAAAAAAAAAAAAAAA = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +ngr + 0000000080000000 & AAAAAAAAAAAAAAAA = 0000000080000000 (cc=1) +ngr + 000000007FFFFFFF & AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +ngr + AAAAAAAAAAAAAAAA & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ngr + 8000000000000000 & AAAAAAAAAAAAAAAA = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ngr + 5555555555555555 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ny + 0000000000000000 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ny + 0000000000000001 & AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +ny + 000000000000FFFF & AAAAAAAAAAAAAAAA = 000000000000AAAA (cc=1) +ny + 0000000000007FFF & AAAAAAAAAAAAAAAA = 0000000000002AAA (cc=1) +ny + 0000000000008000 & AAAAAAAAAAAAAAAA = 0000000000008000 (cc=1) +ny + 00000000FFFFFFFF & AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +ny + 0000000080000000 & AAAAAAAAAAAAAAAA = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +ny + AAAAAAAAAAAAAAAA & AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ny + 8000000000000000 & AAAAAAAAAAAAAAAA = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & AAAAAAAAAAAAAAAA = FFFFFFFFAAAAAAAA (cc=1) +ny + 5555555555555555 & AAAAAAAAAAAAAAAA = 5555555500000000 (cc=0) +n + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 8000000000000000 = 0000000080000000 (cc=1) +n + 0000000080000000 & 8000000000000000 = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA80000000 (cc=1) +n + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF80000000 (cc=1) +n + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & 8000000000000000 = 8000000000000000 (cc=1) +ng + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & 8000000000000000 = 8000000000000000 (cc=1) +ng + 5555555555555555 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & 8000000000000000 = 8000000000000000 (cc=1) +ngr + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & 8000000000000000 = 8000000000000000 (cc=1) +ngr + 5555555555555555 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 8000000000000000 = 0000000080000000 (cc=1) +ny + 0000000080000000 & 8000000000000000 = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA80000000 (cc=1) +ny + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF80000000 (cc=1) +ny + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +n + 0000000000000000 & FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +n + 0000000000000001 & FFFFFFFFFFFFFFFF = 0000000000000001 (cc=1) +n + 000000000000FFFF & FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=1) +n + 0000000000007FFF & FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=1) +n + 0000000000008000 & FFFFFFFFFFFFFFFF = 0000000000008000 (cc=1) +n + 00000000FFFFFFFF & FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +n + 0000000080000000 & FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +n + AAAAAAAAAAAAAAAA & FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +n + 8000000000000000 & FFFFFFFFFFFFFFFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +n + 5555555555555555 & FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +ng + 0000000000000000 & FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & FFFFFFFFFFFFFFFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=1) +ng + 0000000000007FFF & FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & FFFFFFFFFFFFFFFF = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ng + 0000000080000000 & FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +ng + 000000007FFFFFFF & FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +ng + AAAAAAAAAAAAAAAA & FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +ng + 8000000000000000 & FFFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ng + 5555555555555555 & FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +nr + 0000000000000000 & FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & FFFFFFFFFFFFFFFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=1) +nr + 0000000000007FFF & FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & FFFFFFFFFFFFFFFF = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +nr + 0000000080000000 & FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +nr + 000000007FFFFFFF & FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +nr + AAAAAAAAAAAAAAAA & FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +nr + 8000000000000000 & FFFFFFFFFFFFFFFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +nr + 5555555555555555 & FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +ngr + 0000000000000000 & FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & FFFFFFFFFFFFFFFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=1) +ngr + 0000000000007FFF & FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & FFFFFFFFFFFFFFFF = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ngr + 0000000080000000 & FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +ngr + 000000007FFFFFFF & FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +ngr + 8000000000000000 & FFFFFFFFFFFFFFFF = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ngr + 5555555555555555 & FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +ny + 0000000000000000 & FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & FFFFFFFFFFFFFFFF = 0000000000000001 (cc=1) +ny + 000000000000FFFF & FFFFFFFFFFFFFFFF = 000000000000FFFF (cc=1) +ny + 0000000000007FFF & FFFFFFFFFFFFFFFF = 0000000000007FFF (cc=1) +ny + 0000000000008000 & FFFFFFFFFFFFFFFF = 0000000000008000 (cc=1) +ny + 00000000FFFFFFFF & FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +ny + 0000000080000000 & FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +ny + AAAAAAAAAAAAAAAA & FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +ny + 8000000000000000 & FFFFFFFFFFFFFFFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ny + 5555555555555555 & FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +n + 0000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 7FFFFFFF00000000 = 0000000000000001 (cc=1) +n + 000000000000FFFF & 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +n + 0000000000007FFF & 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +n + 0000000000008000 & 7FFFFFFF00000000 = 0000000000008000 (cc=1) +n + 00000000FFFFFFFF & 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +n + 0000000080000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +n + AAAAAAAAAAAAAAAA & 7FFFFFFF00000000 = AAAAAAAA2AAAAAAA (cc=1) +n + 8000000000000000 & 7FFFFFFF00000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 7FFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +n + 5555555555555555 & 7FFFFFFF00000000 = 5555555555555555 (cc=1) +ng + 0000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & 7FFFFFFF00000000 = 2AAAAAAA00000000 (cc=1) +ng + 8000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +ng + 5555555555555555 & 7FFFFFFF00000000 = 5555555500000000 (cc=1) +nr + 0000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & 7FFFFFFF00000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 7FFFFFFF00000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & 7FFFFFFF00000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & 7FFFFFFF00000000 = 2AAAAAAA00000000 (cc=1) +ngr + 8000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +ngr + 5555555555555555 & 7FFFFFFF00000000 = 5555555500000000 (cc=1) +ny + 0000000000000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 7FFFFFFF00000000 = 0000000000000001 (cc=1) +ny + 000000000000FFFF & 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +ny + 0000000000007FFF & 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +ny + 0000000000008000 & 7FFFFFFF00000000 = 0000000000008000 (cc=1) +ny + 00000000FFFFFFFF & 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +ny + 0000000080000000 & 7FFFFFFF00000000 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +ny + AAAAAAAAAAAAAAAA & 7FFFFFFF00000000 = AAAAAAAA2AAAAAAA (cc=1) +ny + 8000000000000000 & 7FFFFFFF00000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 7FFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +ny + 5555555555555555 & 7FFFFFFF00000000 = 5555555555555555 (cc=1) +n + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +n + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 8000000000000000 = 0000000080000000 (cc=1) +n + 0000000080000000 & 8000000000000000 = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA80000000 (cc=1) +n + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF80000000 (cc=1) +n + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & 8000000000000000 = 8000000000000000 (cc=1) +ng + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & 8000000000000000 = 8000000000000000 (cc=1) +ng + 5555555555555555 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & 8000000000000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & 8000000000000000 = 8000000000000000 (cc=1) +ngr + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & 8000000000000000 = 8000000000000000 (cc=1) +ngr + 5555555555555555 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 8000000000000000 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 8000000000000000 = 0000000080000000 (cc=1) +ny + 0000000080000000 & 8000000000000000 = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & 8000000000000000 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 8000000000000000 = AAAAAAAA80000000 (cc=1) +ny + 8000000000000000 & 8000000000000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 8000000000000000 = FFFFFFFF80000000 (cc=1) +ny + 5555555555555555 & 8000000000000000 = 5555555500000000 (cc=0) +n + 0000000000000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & AAAAAAAA00000000 = 000000000000AAAA (cc=1) +n + 0000000000007FFF & AAAAAAAA00000000 = 0000000000002AAA (cc=1) +n + 0000000000008000 & AAAAAAAA00000000 = 0000000000008000 (cc=1) +n + 00000000FFFFFFFF & AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +n + 0000000080000000 & AAAAAAAA00000000 = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & AAAAAAAA00000000 = 000000002AAAAAAA (cc=1) +n + AAAAAAAAAAAAAAAA & AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +n + 8000000000000000 & AAAAAAAA00000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & AAAAAAAA00000000 = FFFFFFFFAAAAAAAA (cc=1) +n + 5555555555555555 & AAAAAAAA00000000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ng + 8000000000000000 & AAAAAAAA00000000 = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ng + 5555555555555555 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & AAAAAAAA00000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & AAAAAAAA00000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & AAAAAAAA00000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & AAAAAAAA00000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ngr + 8000000000000000 & AAAAAAAA00000000 = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ngr + 5555555555555555 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & AAAAAAAA00000000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & AAAAAAAA00000000 = 000000000000AAAA (cc=1) +ny + 0000000000007FFF & AAAAAAAA00000000 = 0000000000002AAA (cc=1) +ny + 0000000000008000 & AAAAAAAA00000000 = 0000000000008000 (cc=1) +ny + 00000000FFFFFFFF & AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +ny + 0000000080000000 & AAAAAAAA00000000 = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & AAAAAAAA00000000 = 000000002AAAAAAA (cc=1) +ny + AAAAAAAAAAAAAAAA & AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +ny + 8000000000000000 & AAAAAAAA00000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & AAAAAAAA00000000 = FFFFFFFFAAAAAAAA (cc=1) +ny + 5555555555555555 & AAAAAAAA00000000 = 5555555500000000 (cc=0) +n + 0000000000000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & FFFFFFFF00000000 = 0000000000000001 (cc=1) +n + 000000000000FFFF & FFFFFFFF00000000 = 000000000000FFFF (cc=1) +n + 0000000000007FFF & FFFFFFFF00000000 = 0000000000007FFF (cc=1) +n + 0000000000008000 & FFFFFFFF00000000 = 0000000000008000 (cc=1) +n + 00000000FFFFFFFF & FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +n + 0000000080000000 & FFFFFFFF00000000 = 0000000080000000 (cc=1) +n + 000000007FFFFFFF & FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +n + AAAAAAAAAAAAAAAA & FFFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +n + 8000000000000000 & FFFFFFFF00000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +n + 5555555555555555 & FFFFFFFF00000000 = 5555555555555555 (cc=1) +ng + 0000000000000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 0000000080000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & FFFFFFFF00000000 = AAAAAAAA00000000 (cc=1) +ng + 8000000000000000 & FFFFFFFF00000000 = 8000000000000000 (cc=1) +ng + FFFFFFFFFFFFFFFF & FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ng + 5555555555555555 & FFFFFFFF00000000 = 5555555500000000 (cc=1) +nr + 0000000000000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 0000000080000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & FFFFFFFF00000000 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & FFFFFFFF00000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & FFFFFFFF00000000 = FFFFFFFF00000000 (cc=0) +nr + 5555555555555555 & FFFFFFFF00000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 0000000080000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & FFFFFFFF00000000 = AAAAAAAA00000000 (cc=1) +ngr + 8000000000000000 & FFFFFFFF00000000 = 8000000000000000 (cc=1) +ngr + FFFFFFFFFFFFFFFF & FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ngr + 5555555555555555 & FFFFFFFF00000000 = 5555555500000000 (cc=1) +ny + 0000000000000000 & FFFFFFFF00000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & FFFFFFFF00000000 = 0000000000000001 (cc=1) +ny + 000000000000FFFF & FFFFFFFF00000000 = 000000000000FFFF (cc=1) +ny + 0000000000007FFF & FFFFFFFF00000000 = 0000000000007FFF (cc=1) +ny + 0000000000008000 & FFFFFFFF00000000 = 0000000000008000 (cc=1) +ny + 00000000FFFFFFFF & FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +ny + 0000000080000000 & FFFFFFFF00000000 = 0000000080000000 (cc=1) +ny + 000000007FFFFFFF & FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +ny + AAAAAAAAAAAAAAAA & FFFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +ny + 8000000000000000 & FFFFFFFF00000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ny + 5555555555555555 & FFFFFFFF00000000 = 5555555555555555 (cc=1) +n + 0000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 0000000000000001 & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 000000000000FFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 0000000000007FFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 0000000000008000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 0000000080000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 000000007FFFFFFF = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 000000007FFFFFFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 000000007FFFFFFF = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 000000007FFFFFFF = 5555555500000000 (cc=0) +ng + 0000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & 000000007FFFFFFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 000000007FFFFFFF = 000000000000FFFF (cc=1) +ng + 0000000000007FFF & 000000007FFFFFFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & 000000007FFFFFFF = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ng + 0000000080000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ng + AAAAAAAAAAAAAAAA & 000000007FFFFFFF = 000000002AAAAAAA (cc=1) +ng + 8000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ng + 5555555555555555 & 000000007FFFFFFF = 0000000055555555 (cc=1) +nr + 0000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & 000000007FFFFFFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 000000007FFFFFFF = 000000000000FFFF (cc=1) +nr + 0000000000007FFF & 000000007FFFFFFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & 000000007FFFFFFF = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +nr + 0000000080000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +nr + AAAAAAAAAAAAAAAA & 000000007FFFFFFF = AAAAAAAA2AAAAAAA (cc=1) +nr + 8000000000000000 & 000000007FFFFFFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 000000007FFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +nr + 5555555555555555 & 000000007FFFFFFF = 5555555555555555 (cc=1) +ngr + 0000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 000000007FFFFFFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 000000007FFFFFFF = 000000000000FFFF (cc=1) +ngr + 0000000000007FFF & 000000007FFFFFFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & 000000007FFFFFFF = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ngr + 0000000080000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & 000000007FFFFFFF = 000000002AAAAAAA (cc=1) +ngr + 8000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ngr + 5555555555555555 & 000000007FFFFFFF = 0000000055555555 (cc=1) +ny + 0000000000000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000008000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 0000000080000000 & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 000000007FFFFFFF = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 000000007FFFFFFF = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 000000007FFFFFFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 000000007FFFFFFF = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 000000007FFFFFFF = 5555555500000000 (cc=0) +n + 0000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 0000000080000000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 0000000080000000 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 0000000080000000 = 0000000000000000 (cc=0) +n + 0000000000008000 & 0000000080000000 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +n + 0000000080000000 & 0000000080000000 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 0000000080000000 = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 0000000080000000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 0000000080000000 = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 0000000080000000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 0000000080000000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 0000000080000000 = 0000000000000000 (cc=0) +ng + 0000000000007FFF & 0000000080000000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 0000000080000000 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 0000000080000000 = 0000000080000000 (cc=1) +ng + 0000000080000000 & 0000000080000000 = 0000000080000000 (cc=1) +ng + 000000007FFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +ng + AAAAAAAAAAAAAAAA & 0000000080000000 = 0000000080000000 (cc=1) +ng + 8000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 0000000080000000 = 0000000080000000 (cc=1) +ng + 5555555555555555 & 0000000080000000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 0000000080000000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 0000000080000000 = 0000000000000000 (cc=0) +nr + 0000000000007FFF & 0000000080000000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 0000000080000000 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 0000000080000000 = 0000000080000000 (cc=1) +nr + 0000000080000000 & 0000000080000000 = 0000000080000000 (cc=1) +nr + 000000007FFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +nr + AAAAAAAAAAAAAAAA & 0000000080000000 = AAAAAAAA80000000 (cc=1) +nr + 8000000000000000 & 0000000080000000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 0000000080000000 = FFFFFFFF80000000 (cc=1) +nr + 5555555555555555 & 0000000080000000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 0000000080000000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 0000000080000000 = 0000000000000000 (cc=0) +ngr + 0000000000007FFF & 0000000080000000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 0000000080000000 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 0000000080000000 = 0000000080000000 (cc=1) +ngr + 0000000080000000 & 0000000080000000 = 0000000080000000 (cc=1) +ngr + 000000007FFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +ngr + AAAAAAAAAAAAAAAA & 0000000080000000 = 0000000080000000 (cc=1) +ngr + 8000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 0000000080000000 = 0000000080000000 (cc=1) +ngr + 5555555555555555 & 0000000080000000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & 0000000080000000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 0000000080000000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 0000000080000000 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 0000000080000000 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 0000000080000000 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +ny + 0000000080000000 & 0000000080000000 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 0000000080000000 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 0000000080000000 = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 0000000080000000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 0000000080000000 = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 0000000080000000 = 5555555500000000 (cc=0) +n + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +n + 0000000000000001 & 0000000055555555 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 0000000055555555 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 0000000055555555 = 0000000000000000 (cc=0) +n + 0000000000008000 & 0000000055555555 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 0000000055555555 = 0000000000000000 (cc=0) +n + 0000000080000000 & 0000000055555555 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 0000000055555555 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 0000000055555555 = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 0000000055555555 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 0000000055555555 = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 0000000055555555 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 0000000055555555 = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 0000000055555555 = 0000000000005555 (cc=1) +ng + 0000000000007FFF & 0000000055555555 = 0000000000005555 (cc=1) +ng + 0000000000008000 & 0000000055555555 = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ng + 0000000080000000 & 0000000055555555 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ng + AAAAAAAAAAAAAAAA & 0000000055555555 = 0000000000000000 (cc=0) +ng + 8000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ng + 5555555555555555 & 0000000055555555 = 0000000055555555 (cc=1) +nr + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 0000000055555555 = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 0000000055555555 = 0000000000005555 (cc=1) +nr + 0000000000007FFF & 0000000055555555 = 0000000000005555 (cc=1) +nr + 0000000000008000 & 0000000055555555 = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +nr + 0000000080000000 & 0000000055555555 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +nr + AAAAAAAAAAAAAAAA & 0000000055555555 = AAAAAAAA00000000 (cc=0) +nr + 8000000000000000 & 0000000055555555 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 0000000055555555 = FFFFFFFF55555555 (cc=1) +nr + 5555555555555555 & 0000000055555555 = 5555555555555555 (cc=1) +ngr + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 0000000055555555 = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 0000000055555555 = 0000000000005555 (cc=1) +ngr + 0000000000007FFF & 0000000055555555 = 0000000000005555 (cc=1) +ngr + 0000000000008000 & 0000000055555555 = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ngr + 0000000080000000 & 0000000055555555 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ngr + AAAAAAAAAAAAAAAA & 0000000055555555 = 0000000000000000 (cc=0) +ngr + 8000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 0000000055555555 = 0000000055555555 (cc=1) +ngr + 5555555555555555 & 0000000055555555 = 0000000055555555 (cc=1) +ny + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 0000000055555555 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 0000000055555555 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 0000000055555555 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 0000000055555555 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 0000000055555555 = 0000000000000000 (cc=0) +ny + 0000000080000000 & 0000000055555555 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 0000000055555555 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 0000000055555555 = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 0000000055555555 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 0000000055555555 = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 0000000055555555 = 5555555500000000 (cc=0) +n + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 0000000000000001 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 000000000000FFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 0000000000007FFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 0000000000008000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 0000000080000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 00000000FFFFFFFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 00000000FFFFFFFF = 5555555500000000 (cc=0) +ng + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & 00000000FFFFFFFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 00000000FFFFFFFF = 000000000000FFFF (cc=1) +ng + 0000000000007FFF & 00000000FFFFFFFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & 00000000FFFFFFFF = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ng + 0000000080000000 & 00000000FFFFFFFF = 0000000080000000 (cc=1) +ng + 000000007FFFFFFF & 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +ng + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = 00000000AAAAAAAA (cc=1) +ng + 8000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ng + 5555555555555555 & 00000000FFFFFFFF = 0000000055555555 (cc=1) +nr + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & 00000000FFFFFFFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 00000000FFFFFFFF = 000000000000FFFF (cc=1) +nr + 0000000000007FFF & 00000000FFFFFFFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & 00000000FFFFFFFF = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +nr + 0000000080000000 & 00000000FFFFFFFF = 0000000080000000 (cc=1) +nr + 000000007FFFFFFF & 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +nr + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +nr + 8000000000000000 & 00000000FFFFFFFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +nr + 5555555555555555 & 00000000FFFFFFFF = 5555555555555555 (cc=1) +ngr + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 00000000FFFFFFFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 00000000FFFFFFFF = 000000000000FFFF (cc=1) +ngr + 0000000000007FFF & 00000000FFFFFFFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & 00000000FFFFFFFF = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ngr + 0000000080000000 & 00000000FFFFFFFF = 0000000080000000 (cc=1) +ngr + 000000007FFFFFFF & 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = 00000000AAAAAAAA (cc=1) +ngr + 8000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ngr + 5555555555555555 & 00000000FFFFFFFF = 0000000055555555 (cc=1) +ny + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 0000000000008000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 0000000080000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 00000000FFFFFFFF = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 00000000FFFFFFFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 00000000FFFFFFFF = 5555555500000000 (cc=0) +n + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000000001 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 000000000000FFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000007FFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000008000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 000000000000FFFF = 5555555500000000 (cc=0) +ng + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + AAAAAAAAAAAAAAAA & 000000000000FFFF = 000000000000AAAA (cc=1) +ng + 8000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 5555555555555555 & 000000000000FFFF = 0000000000005555 (cc=1) +nr + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA0000AAAA (cc=1) +nr + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF0000FFFF (cc=1) +nr + 5555555555555555 & 000000000000FFFF = 5555555500005555 (cc=1) +ngr + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & 000000000000FFFF = 000000000000AAAA (cc=1) +ngr + 8000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 5555555555555555 & 000000000000FFFF = 0000000000005555 (cc=1) +ny + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000008000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 000000000000FFFF = 5555555500000000 (cc=0) +n + 0000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +n + 0000000000000001 & 0000000000007FFF = 0000000000000000 (cc=0) +n + 000000000000FFFF & 0000000000007FFF = 0000000000000000 (cc=0) +n + 0000000000007FFF & 0000000000007FFF = 0000000000000000 (cc=0) +n + 0000000000008000 & 0000000000007FFF = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 0000000000007FFF = 0000000000000000 (cc=0) +n + 0000000080000000 & 0000000000007FFF = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 0000000000007FFF = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 0000000000007FFF = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 0000000000007FFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 0000000000007FFF = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 0000000000007FFF = 5555555500000000 (cc=0) +ng + 0000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & 0000000000007FFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ng + 0000000000007FFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & 0000000000007FFF = 0000000000000000 (cc=0) +ng + 00000000FFFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ng + 0000000080000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ng + AAAAAAAAAAAAAAAA & 0000000000007FFF = 0000000000002AAA (cc=1) +ng + 8000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ng + 5555555555555555 & 0000000000007FFF = 0000000000005555 (cc=1) +nr + 0000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & 0000000000007FFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +nr + 0000000000007FFF & 0000000000007FFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & 0000000000007FFF = 0000000000000000 (cc=0) +nr + 00000000FFFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +nr + 0000000080000000 & 0000000000007FFF = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +nr + AAAAAAAAAAAAAAAA & 0000000000007FFF = AAAAAAAA00002AAA (cc=1) +nr + 8000000000000000 & 0000000000007FFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 0000000000007FFF = FFFFFFFF00007FFF (cc=1) +nr + 5555555555555555 & 0000000000007FFF = 5555555500005555 (cc=1) +ngr + 0000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 0000000000007FFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ngr + 0000000000007FFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & 0000000000007FFF = 0000000000000000 (cc=0) +ngr + 00000000FFFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ngr + 0000000080000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & 0000000000007FFF = 0000000000002AAA (cc=1) +ngr + 8000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 0000000000007FFF = 0000000000007FFF (cc=1) +ngr + 5555555555555555 & 0000000000007FFF = 0000000000005555 (cc=1) +ny + 0000000000000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 0000000000008000 & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 0000000080000000 & 0000000000007FFF = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 0000000000007FFF = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 0000000000007FFF = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 0000000000007FFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 0000000000007FFF = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 0000000000007FFF = 5555555500000000 (cc=0) +n + 0000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +n + 0000000000000001 & 0000000000008000 = 0000000000000000 (cc=0) +n + 000000000000FFFF & 0000000000008000 = 0000000000000000 (cc=0) +n + 0000000000007FFF & 0000000000008000 = 0000000000000000 (cc=0) +n + 0000000000008000 & 0000000000008000 = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 0000000000008000 = 0000000000000000 (cc=0) +n + 0000000080000000 & 0000000000008000 = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 0000000000008000 = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 0000000000008000 = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 0000000000008000 = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 0000000000008000 = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 0000000000008000 = 5555555500000000 (cc=0) +ng + 0000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +ng + 0000000000000001 & 0000000000008000 = 0000000000000000 (cc=0) +ng + 000000000000FFFF & 0000000000008000 = 0000000000008000 (cc=1) +ng + 0000000000007FFF & 0000000000008000 = 0000000000000000 (cc=0) +ng + 0000000000008000 & 0000000000008000 = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ng + 0000000080000000 & 0000000000008000 = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ng + AAAAAAAAAAAAAAAA & 0000000000008000 = 0000000000008000 (cc=1) +ng + 8000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ng + 5555555555555555 & 0000000000008000 = 0000000000000000 (cc=0) +nr + 0000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +nr + 0000000000000001 & 0000000000008000 = 0000000000000000 (cc=0) +nr + 000000000000FFFF & 0000000000008000 = 0000000000008000 (cc=1) +nr + 0000000000007FFF & 0000000000008000 = 0000000000000000 (cc=0) +nr + 0000000000008000 & 0000000000008000 = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +nr + 0000000080000000 & 0000000000008000 = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +nr + AAAAAAAAAAAAAAAA & 0000000000008000 = AAAAAAAA00008000 (cc=1) +nr + 8000000000000000 & 0000000000008000 = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 0000000000008000 = FFFFFFFF00008000 (cc=1) +nr + 5555555555555555 & 0000000000008000 = 5555555500000000 (cc=0) +ngr + 0000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 0000000000008000 = 0000000000000000 (cc=0) +ngr + 000000000000FFFF & 0000000000008000 = 0000000000008000 (cc=1) +ngr + 0000000000007FFF & 0000000000008000 = 0000000000000000 (cc=0) +ngr + 0000000000008000 & 0000000000008000 = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ngr + 0000000080000000 & 0000000000008000 = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ngr + AAAAAAAAAAAAAAAA & 0000000000008000 = 0000000000008000 (cc=1) +ngr + 8000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 0000000000008000 = 0000000000008000 (cc=1) +ngr + 5555555555555555 & 0000000000008000 = 0000000000000000 (cc=0) +ny + 0000000000000000 & 0000000000008000 = 0000000000000000 (cc=0) +ny + 0000000000000001 & 0000000000008000 = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 0000000000008000 = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 0000000000008000 = 0000000000000000 (cc=0) +ny + 0000000000008000 & 0000000000008000 = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 0000000000008000 = 0000000000000000 (cc=0) +ny + 0000000080000000 & 0000000000008000 = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 0000000000008000 = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 0000000000008000 = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 0000000000008000 = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 0000000000008000 = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 0000000000008000 = 5555555500000000 (cc=0) +n + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000000001 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 000000000000FFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000007FFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000000008000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 00000000FFFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +n + 000000007FFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +n + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA00000000 (cc=0) +n + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +n + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF00000000 (cc=0) +n + 5555555555555555 & 000000000000FFFF = 5555555500000000 (cc=0) +ng + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +ng + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +ng + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +ng + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + AAAAAAAAAAAAAAAA & 000000000000FFFF = 000000000000AAAA (cc=1) +ng + 8000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ng + FFFFFFFFFFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ng + 5555555555555555 & 000000000000FFFF = 0000000000005555 (cc=1) +nr + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nr + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +nr + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +nr + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +nr + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nr + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nr + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA0000AAAA (cc=1) +nr + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +nr + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF0000FFFF (cc=1) +nr + 5555555555555555 & 000000000000FFFF = 5555555500005555 (cc=1) +ngr + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +ngr + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +ngr + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +ngr + 00000000FFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + 000000007FFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + AAAAAAAAAAAAAAAA & 000000000000FFFF = 000000000000AAAA (cc=1) +ngr + 8000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ngr + FFFFFFFFFFFFFFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +ngr + 5555555555555555 & 000000000000FFFF = 0000000000005555 (cc=1) +ny + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000000001 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 000000000000FFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000007FFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000000008000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 00000000FFFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 0000000080000000 & 000000000000FFFF = 0000000000000000 (cc=0) +ny + 000000007FFFFFFF & 000000000000FFFF = 0000000000000000 (cc=0) +ny + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAA00000000 (cc=0) +ny + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +ny + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFF00000000 (cc=0) +ny + 5555555555555555 & 000000000000FFFF = 5555555500000000 (cc=0) +ni + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ni + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +ni + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +ni + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +ni + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +ni + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +ni + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +ni + 000000007FFFFFFF & 0000000000000000 = 000000007FFFFFFF (cc=0) +ni + AAAAAAAAAAAAAAAA & 0000000000000000 = 00AAAAAAAAAAAAAA (cc=0) +ni + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +ni + FFFFFFFFFFFFFFFF & 0000000000000000 = 00FFFFFFFFFFFFFF (cc=0) +ni + 5555555555555555 & 0000000000000000 = 0055555555555555 (cc=0) +ni + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +ni + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +ni + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +ni + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +ni + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +ni + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFFFFFF (cc=0) +ni + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +ni + 000000007FFFFFFF & 00000000000000FF = 000000007FFFFFFF (cc=0) +ni + AAAAAAAAAAAAAAAA & 00000000000000FF = AAAAAAAAAAAAAAAA (cc=1) +ni + 8000000000000000 & 00000000000000FF = 8000000000000000 (cc=1) +ni + FFFFFFFFFFFFFFFF & 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +ni + 5555555555555555 & 00000000000000FF = 5555555555555555 (cc=1) +ni + 0000000000000000 & 0000000000000080 = 0000000000000000 (cc=0) +ni + 0000000000000001 & 0000000000000080 = 0000000000000001 (cc=0) +ni + 000000000000FFFF & 0000000000000080 = 000000000000FFFF (cc=0) +ni + 0000000000007FFF & 0000000000000080 = 0000000000007FFF (cc=0) +ni + 0000000000008000 & 0000000000000080 = 0000000000008000 (cc=0) +ni + 00000000FFFFFFFF & 0000000000000080 = 00000000FFFFFFFF (cc=0) +ni + 0000000080000000 & 0000000000000080 = 0000000080000000 (cc=0) +ni + 000000007FFFFFFF & 0000000000000080 = 000000007FFFFFFF (cc=0) +ni + AAAAAAAAAAAAAAAA & 0000000000000080 = 80AAAAAAAAAAAAAA (cc=1) +ni + 8000000000000000 & 0000000000000080 = 8000000000000000 (cc=1) +ni + FFFFFFFFFFFFFFFF & 0000000000000080 = 80FFFFFFFFFFFFFF (cc=1) +ni + 5555555555555555 & 0000000000000080 = 0055555555555555 (cc=0) +ni + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +ni + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +ni + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +ni + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +ni + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +ni + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFFFFFF (cc=0) +ni + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +ni + 000000007FFFFFFF & 00000000000000AA = 000000007FFFFFFF (cc=0) +ni + AAAAAAAAAAAAAAAA & 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +ni + 8000000000000000 & 00000000000000AA = 8000000000000000 (cc=1) +ni + FFFFFFFFFFFFFFFF & 00000000000000AA = AAFFFFFFFFFFFFFF (cc=1) +ni + 5555555555555555 & 00000000000000AA = 0055555555555555 (cc=0) +ni + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +ni + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +ni + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +ni + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +ni + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +ni + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFFFFFF (cc=0) +ni + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +ni + 000000007FFFFFFF & 0000000000000055 = 000000007FFFFFFF (cc=0) +ni + AAAAAAAAAAAAAAAA & 0000000000000055 = 00AAAAAAAAAAAAAA (cc=0) +ni + 8000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +ni + FFFFFFFFFFFFFFFF & 0000000000000055 = 55FFFFFFFFFFFFFF (cc=1) +ni + 5555555555555555 & 0000000000000055 = 5555555555555555 (cc=1) +niy + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +niy + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +niy + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +niy + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +niy + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +niy + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +niy + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +niy + 000000007FFFFFFF & 0000000000000000 = 000000007FFFFFFF (cc=0) +niy + AAAAAAAAAAAAAAAA & 0000000000000000 = 00AAAAAAAAAAAAAA (cc=0) +niy + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +niy + FFFFFFFFFFFFFFFF & 0000000000000000 = 00FFFFFFFFFFFFFF (cc=0) +niy + 5555555555555555 & 0000000000000000 = 0055555555555555 (cc=0) +niy + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +niy + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +niy + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +niy + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +niy + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +niy + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFFFFFF (cc=0) +niy + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +niy + 000000007FFFFFFF & 00000000000000FF = 000000007FFFFFFF (cc=0) +niy + AAAAAAAAAAAAAAAA & 00000000000000FF = AAAAAAAAAAAAAAAA (cc=1) +niy + 8000000000000000 & 00000000000000FF = 8000000000000000 (cc=1) +niy + FFFFFFFFFFFFFFFF & 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +niy + 5555555555555555 & 00000000000000FF = 5555555555555555 (cc=1) +niy + 0000000000000000 & 0000000000000080 = 0000000000000000 (cc=0) +niy + 0000000000000001 & 0000000000000080 = 0000000000000001 (cc=0) +niy + 000000000000FFFF & 0000000000000080 = 000000000000FFFF (cc=0) +niy + 0000000000007FFF & 0000000000000080 = 0000000000007FFF (cc=0) +niy + 0000000000008000 & 0000000000000080 = 0000000000008000 (cc=0) +niy + 00000000FFFFFFFF & 0000000000000080 = 00000000FFFFFFFF (cc=0) +niy + 0000000080000000 & 0000000000000080 = 0000000080000000 (cc=0) +niy + 000000007FFFFFFF & 0000000000000080 = 000000007FFFFFFF (cc=0) +niy + AAAAAAAAAAAAAAAA & 0000000000000080 = 80AAAAAAAAAAAAAA (cc=1) +niy + 8000000000000000 & 0000000000000080 = 8000000000000000 (cc=1) +niy + FFFFFFFFFFFFFFFF & 0000000000000080 = 80FFFFFFFFFFFFFF (cc=1) +niy + 5555555555555555 & 0000000000000080 = 0055555555555555 (cc=0) +niy + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +niy + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +niy + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +niy + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +niy + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +niy + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFFFFFF (cc=0) +niy + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +niy + 000000007FFFFFFF & 00000000000000AA = 000000007FFFFFFF (cc=0) +niy + AAAAAAAAAAAAAAAA & 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +niy + 8000000000000000 & 00000000000000AA = 8000000000000000 (cc=1) +niy + FFFFFFFFFFFFFFFF & 00000000000000AA = AAFFFFFFFFFFFFFF (cc=1) +niy + 5555555555555555 & 00000000000000AA = 0055555555555555 (cc=0) +niy + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +niy + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +niy + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +niy + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +niy + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +niy + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFFFFFF (cc=0) +niy + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +niy + 000000007FFFFFFF & 0000000000000055 = 000000007FFFFFFF (cc=0) +niy + AAAAAAAAAAAAAAAA & 0000000000000055 = 00AAAAAAAAAAAAAA (cc=0) +niy + 8000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +niy + FFFFFFFFFFFFFFFF & 0000000000000055 = 55FFFFFFFFFFFFFF (cc=1) +niy + 5555555555555555 & 0000000000000055 = 5555555555555555 (cc=1) +nihh + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 0000000000000055 = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 0000000000000055 = 0000AAAAAAAAAAAA (cc=0) +nihh + 8000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +nihh + FFFFFFFFFFFFFFFF & 0000000000000055 = 0055FFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 0000000000000055 = 0055555555555555 (cc=1) +nihl + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 0000000000000055 = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 0000000000000055 = AAAA0000AAAAAAAA (cc=0) +nihl + 8000000000000000 & 0000000000000055 = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 0000000000000055 = FFFF0055FFFFFFFF (cc=1) +nihl + 5555555555555555 & 0000000000000055 = 5555005555555555 (cc=1) +nilh + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 0000000000000055 = 000000000055FFFF (cc=1) +nilh + 0000000080000000 & 0000000000000055 = 0000000000000000 (cc=0) +nilh + 000000007FFFFFFF & 0000000000000055 = 000000000055FFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 0000000000000055 = AAAAAAAA0000AAAA (cc=0) +nilh + 8000000000000000 & 0000000000000055 = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 0000000000000055 = FFFFFFFF0055FFFF (cc=1) +nilh + 5555555555555555 & 0000000000000055 = 5555555500555555 (cc=1) +nill + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +nill + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=1) +nill + 000000000000FFFF & 0000000000000055 = 0000000000000055 (cc=1) +nill + 0000000000007FFF & 0000000000000055 = 0000000000000055 (cc=1) +nill + 0000000000008000 & 0000000000000055 = 0000000000000000 (cc=0) +nill + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFF0055 (cc=1) +nill + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 0000000000000055 = 000000007FFF0055 (cc=1) +nill + AAAAAAAAAAAAAAAA & 0000000000000055 = AAAAAAAAAAAA0000 (cc=0) +nill + 8000000000000000 & 0000000000000055 = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 0000000000000055 = FFFFFFFFFFFF0055 (cc=1) +nill + 5555555555555555 & 0000000000000055 = 5555555555550055 (cc=1) +nihh + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 00000000000000AA = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 00000000000000AA = 00AAAAAAAAAAAAAA (cc=1) +nihh + 8000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +nihh + FFFFFFFFFFFFFFFF & 00000000000000AA = 00AAFFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 00000000000000AA = 0000555555555555 (cc=0) +nihl + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 00000000000000AA = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 00000000000000AA = AAAA00AAAAAAAAAA (cc=1) +nihl + 8000000000000000 & 00000000000000AA = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 00000000000000AA = FFFF00AAFFFFFFFF (cc=1) +nihl + 5555555555555555 & 00000000000000AA = 5555000055555555 (cc=0) +nilh + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 00000000000000AA = 0000000000AAFFFF (cc=1) +nilh + 0000000080000000 & 00000000000000AA = 0000000000000000 (cc=0) +nilh + 000000007FFFFFFF & 00000000000000AA = 0000000000AAFFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 00000000000000AA = AAAAAAAA00AAAAAA (cc=1) +nilh + 8000000000000000 & 00000000000000AA = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 00000000000000AA = FFFFFFFF00AAFFFF (cc=1) +nilh + 5555555555555555 & 00000000000000AA = 5555555500005555 (cc=0) +nill + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +nill + 0000000000000001 & 00000000000000AA = 0000000000000000 (cc=0) +nill + 000000000000FFFF & 00000000000000AA = 00000000000000AA (cc=1) +nill + 0000000000007FFF & 00000000000000AA = 00000000000000AA (cc=1) +nill + 0000000000008000 & 00000000000000AA = 0000000000000000 (cc=0) +nill + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFF00AA (cc=1) +nill + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 00000000000000AA = 000000007FFF00AA (cc=1) +nill + AAAAAAAAAAAAAAAA & 00000000000000AA = AAAAAAAAAAAA00AA (cc=1) +nill + 8000000000000000 & 00000000000000AA = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 00000000000000AA = FFFFFFFFFFFF00AA (cc=1) +nill + 5555555555555555 & 00000000000000AA = 5555555555550000 (cc=0) +nihh + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 00000000000000FF = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 00000000000000FF = 00AAAAAAAAAAAAAA (cc=1) +nihh + 8000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +nihh + FFFFFFFFFFFFFFFF & 00000000000000FF = 00FFFFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 00000000000000FF = 0055555555555555 (cc=1) +nihl + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 00000000000000FF = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 00000000000000FF = AAAA00AAAAAAAAAA (cc=1) +nihl + 8000000000000000 & 00000000000000FF = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 00000000000000FF = FFFF00FFFFFFFFFF (cc=1) +nihl + 5555555555555555 & 00000000000000FF = 5555005555555555 (cc=1) +nilh + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 00000000000000FF = 0000000000FFFFFF (cc=1) +nilh + 0000000080000000 & 00000000000000FF = 0000000000000000 (cc=0) +nilh + 000000007FFFFFFF & 00000000000000FF = 0000000000FFFFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 00000000000000FF = AAAAAAAA00AAAAAA (cc=1) +nilh + 8000000000000000 & 00000000000000FF = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 00000000000000FF = FFFFFFFF00FFFFFF (cc=1) +nilh + 5555555555555555 & 00000000000000FF = 5555555500555555 (cc=1) +nill + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +nill + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=1) +nill + 000000000000FFFF & 00000000000000FF = 00000000000000FF (cc=1) +nill + 0000000000007FFF & 00000000000000FF = 00000000000000FF (cc=1) +nill + 0000000000008000 & 00000000000000FF = 0000000000000000 (cc=0) +nill + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFF00FF (cc=1) +nill + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 00000000000000FF = 000000007FFF00FF (cc=1) +nill + AAAAAAAAAAAAAAAA & 00000000000000FF = AAAAAAAAAAAA00AA (cc=1) +nill + 8000000000000000 & 00000000000000FF = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 00000000000000FF = FFFFFFFFFFFF00FF (cc=1) +nill + 5555555555555555 & 00000000000000FF = 5555555555550055 (cc=1) +nihh + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 0000000000000000 = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 0000000000000000 = 0000AAAAAAAAAAAA (cc=0) +nihh + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nihh + FFFFFFFFFFFFFFFF & 0000000000000000 = 0000FFFFFFFFFFFF (cc=0) +nihh + 5555555555555555 & 0000000000000000 = 0000555555555555 (cc=0) +nihl + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 0000000000000000 = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAA0000AAAAAAAA (cc=0) +nihl + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFF0000FFFFFFFF (cc=0) +nihl + 5555555555555555 & 0000000000000000 = 5555000055555555 (cc=0) +nilh + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 0000000000000000 = 000000000000FFFF (cc=0) +nilh + 0000000080000000 & 0000000000000000 = 0000000000000000 (cc=0) +nilh + 000000007FFFFFFF & 0000000000000000 = 000000000000FFFF (cc=0) +nilh + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAAAAAA0000AAAA (cc=0) +nilh + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFFFFFF0000FFFF (cc=0) +nilh + 5555555555555555 & 0000000000000000 = 5555555500005555 (cc=0) +nill + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +nill + 0000000000000001 & 0000000000000000 = 0000000000000000 (cc=0) +nill + 000000000000FFFF & 0000000000000000 = 0000000000000000 (cc=0) +nill + 0000000000007FFF & 0000000000000000 = 0000000000000000 (cc=0) +nill + 0000000000008000 & 0000000000000000 = 0000000000000000 (cc=0) +nill + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFF0000 (cc=0) +nill + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 0000000000000000 = 000000007FFF0000 (cc=0) +nill + AAAAAAAAAAAAAAAA & 0000000000000000 = AAAAAAAAAAAA0000 (cc=0) +nill + 8000000000000000 & 0000000000000000 = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 0000000000000000 = FFFFFFFFFFFF0000 (cc=0) +nill + 5555555555555555 & 0000000000000000 = 5555555555550000 (cc=0) +nihh + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 000000000000FFFF = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 000000000000FFFF = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 000000000000FFFF = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +nihh + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=1) +nihh + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 000000000000FFFF = 5555555555555555 (cc=1) +nihl + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 000000000000FFFF = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 000000000000FFFF = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 000000000000FFFF = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +nihl + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +nihl + 5555555555555555 & 000000000000FFFF = 5555555555555555 (cc=1) +nilh + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 000000000000FFFF = 00000000FFFFFFFF (cc=1) +nilh + 0000000080000000 & 000000000000FFFF = 0000000080000000 (cc=1) +nilh + 000000007FFFFFFF & 000000000000FFFF = 000000007FFFFFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +nilh + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +nilh + 5555555555555555 & 000000000000FFFF = 5555555555555555 (cc=1) +nill + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +nill + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=1) +nill + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=1) +nill + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=1) +nill + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=1) +nill + 00000000FFFFFFFF & 000000000000FFFF = 00000000FFFFFFFF (cc=1) +nill + 0000000080000000 & 000000000000FFFF = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 000000000000FFFF = 000000007FFFFFFF (cc=1) +nill + AAAAAAAAAAAAAAAA & 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +nill + 8000000000000000 & 000000000000FFFF = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +nill + 5555555555555555 & 000000000000FFFF = 5555555555555555 (cc=1) +nihh + 0000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 000000000000AAAA = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 000000000000AAAA = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 000000000000AAAA = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 000000000000AAAA = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 000000000000AAAA = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 000000000000AAAA = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 000000000000AAAA = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +nihh + 8000000000000000 & 000000000000AAAA = 8000000000000000 (cc=1) +nihh + FFFFFFFFFFFFFFFF & 000000000000AAAA = AAAAFFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 000000000000AAAA = 0000555555555555 (cc=0) +nihl + 0000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 000000000000AAAA = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 000000000000AAAA = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 000000000000AAAA = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 000000000000AAAA = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 000000000000AAAA = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 000000000000AAAA = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 000000000000AAAA = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +nihl + 8000000000000000 & 000000000000AAAA = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 000000000000AAAA = FFFFAAAAFFFFFFFF (cc=1) +nihl + 5555555555555555 & 000000000000AAAA = 5555000055555555 (cc=0) +nilh + 0000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 000000000000AAAA = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 000000000000AAAA = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 000000000000AAAA = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 000000000000AAAA = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 000000000000AAAA = 00000000AAAAFFFF (cc=1) +nilh + 0000000080000000 & 000000000000AAAA = 0000000080000000 (cc=1) +nilh + 000000007FFFFFFF & 000000000000AAAA = 000000002AAAFFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +nilh + 8000000000000000 & 000000000000AAAA = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 000000000000AAAA = FFFFFFFFAAAAFFFF (cc=1) +nilh + 5555555555555555 & 000000000000AAAA = 5555555500005555 (cc=0) +nill + 0000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +nill + 0000000000000001 & 000000000000AAAA = 0000000000000000 (cc=0) +nill + 000000000000FFFF & 000000000000AAAA = 000000000000AAAA (cc=1) +nill + 0000000000007FFF & 000000000000AAAA = 0000000000002AAA (cc=1) +nill + 0000000000008000 & 000000000000AAAA = 0000000000008000 (cc=1) +nill + 00000000FFFFFFFF & 000000000000AAAA = 00000000FFFFAAAA (cc=1) +nill + 0000000080000000 & 000000000000AAAA = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 000000000000AAAA = 000000007FFFAAAA (cc=1) +nill + AAAAAAAAAAAAAAAA & 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +nill + 8000000000000000 & 000000000000AAAA = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 000000000000AAAA = FFFFFFFFFFFFAAAA (cc=1) +nill + 5555555555555555 & 000000000000AAAA = 5555555555550000 (cc=0) +nihh + 0000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +nihh + 0000000000000001 & 0000000000005555 = 0000000000000001 (cc=0) +nihh + 000000000000FFFF & 0000000000005555 = 000000000000FFFF (cc=0) +nihh + 0000000000007FFF & 0000000000005555 = 0000000000007FFF (cc=0) +nihh + 0000000000008000 & 0000000000005555 = 0000000000008000 (cc=0) +nihh + 00000000FFFFFFFF & 0000000000005555 = 00000000FFFFFFFF (cc=0) +nihh + 0000000080000000 & 0000000000005555 = 0000000080000000 (cc=0) +nihh + 000000007FFFFFFF & 0000000000005555 = 000000007FFFFFFF (cc=0) +nihh + AAAAAAAAAAAAAAAA & 0000000000005555 = 0000AAAAAAAAAAAA (cc=0) +nihh + 8000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +nihh + FFFFFFFFFFFFFFFF & 0000000000005555 = 5555FFFFFFFFFFFF (cc=1) +nihh + 5555555555555555 & 0000000000005555 = 5555555555555555 (cc=1) +nihl + 0000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +nihl + 0000000000000001 & 0000000000005555 = 0000000000000001 (cc=0) +nihl + 000000000000FFFF & 0000000000005555 = 000000000000FFFF (cc=0) +nihl + 0000000000007FFF & 0000000000005555 = 0000000000007FFF (cc=0) +nihl + 0000000000008000 & 0000000000005555 = 0000000000008000 (cc=0) +nihl + 00000000FFFFFFFF & 0000000000005555 = 00000000FFFFFFFF (cc=0) +nihl + 0000000080000000 & 0000000000005555 = 0000000080000000 (cc=0) +nihl + 000000007FFFFFFF & 0000000000005555 = 000000007FFFFFFF (cc=0) +nihl + AAAAAAAAAAAAAAAA & 0000000000005555 = AAAA0000AAAAAAAA (cc=0) +nihl + 8000000000000000 & 0000000000005555 = 8000000000000000 (cc=0) +nihl + FFFFFFFFFFFFFFFF & 0000000000005555 = FFFF5555FFFFFFFF (cc=1) +nihl + 5555555555555555 & 0000000000005555 = 5555555555555555 (cc=1) +nilh + 0000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +nilh + 0000000000000001 & 0000000000005555 = 0000000000000001 (cc=0) +nilh + 000000000000FFFF & 0000000000005555 = 000000000000FFFF (cc=0) +nilh + 0000000000007FFF & 0000000000005555 = 0000000000007FFF (cc=0) +nilh + 0000000000008000 & 0000000000005555 = 0000000000008000 (cc=0) +nilh + 00000000FFFFFFFF & 0000000000005555 = 000000005555FFFF (cc=1) +nilh + 0000000080000000 & 0000000000005555 = 0000000000000000 (cc=0) +nilh + 000000007FFFFFFF & 0000000000005555 = 000000005555FFFF (cc=1) +nilh + AAAAAAAAAAAAAAAA & 0000000000005555 = AAAAAAAA0000AAAA (cc=0) +nilh + 8000000000000000 & 0000000000005555 = 8000000000000000 (cc=0) +nilh + FFFFFFFFFFFFFFFF & 0000000000005555 = FFFFFFFF5555FFFF (cc=1) +nilh + 5555555555555555 & 0000000000005555 = 5555555555555555 (cc=1) +nill + 0000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +nill + 0000000000000001 & 0000000000005555 = 0000000000000001 (cc=1) +nill + 000000000000FFFF & 0000000000005555 = 0000000000005555 (cc=1) +nill + 0000000000007FFF & 0000000000005555 = 0000000000005555 (cc=1) +nill + 0000000000008000 & 0000000000005555 = 0000000000000000 (cc=0) +nill + 00000000FFFFFFFF & 0000000000005555 = 00000000FFFF5555 (cc=1) +nill + 0000000080000000 & 0000000000005555 = 0000000080000000 (cc=0) +nill + 000000007FFFFFFF & 0000000000005555 = 000000007FFF5555 (cc=1) +nill + AAAAAAAAAAAAAAAA & 0000000000005555 = AAAAAAAAAAAA0000 (cc=0) +nill + 8000000000000000 & 0000000000005555 = 8000000000000000 (cc=0) +nill + FFFFFFFFFFFFFFFF & 0000000000005555 = FFFFFFFFFFFF5555 (cc=1) +nill + 5555555555555555 & 0000000000005555 = 5555555555555555 (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.vgtest new file mode 100644 index 000000000..8582c6a55 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and.vgtest @@ -0,0 +1 @@ +prog: and diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.c new file mode 100644 index 000000000..6f3040c0d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.c @@ -0,0 +1,28 @@ +#include +#include "and.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(NIHF, 00000000); + immsweep(NIHF, 000000ff); + immsweep(NIHF, 00000055); + immsweep(NIHF, 000000aa); + immsweep(NIHF, 0000ffff); + immsweep(NIHF, 00005555); + immsweep(NIHF, 0000aaaa); + immsweep(NIHF, ffff0000); + immsweep(NIHF, 55550000); + immsweep(NIHF, aaaa0000); + immsweep(NIHF, ffffffff); + immsweep(NIHF, 55555555); + immsweep(NIHF, aaaaaaaa); +} + + +int main() +{ + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stdout.exp new file mode 100644 index 000000000..312cb0e9f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.stdout.exp @@ -0,0 +1,156 @@ +NIHF + 0000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 0000000000000000 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 0000000000000000 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 0000000000000000 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 0000000000000000 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 0000000000000000 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 0000000000000000 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 0000000000000000 = 00000000AAAAAAAA (cc=0) +NIHF + 8000000000000000 & 0000000000000000 = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 0000000000000000 = 00000000FFFFFFFF (cc=0) +NIHF + 5555555555555555 & 0000000000000000 = 0000000055555555 (cc=0) +NIHF + 0000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000000000FF = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000000000FF = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000000000FF = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000000000FF = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000000000FF = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000000000FF = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000000000FF = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000000000FF = 000000AAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000000000FF = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 00000000000000FF = 000000FFFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000000000FF = 0000005555555555 (cc=1) +NIHF + 0000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 0000000000000055 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 0000000000000055 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 0000000000000055 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 0000000000000055 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 0000000000000055 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 0000000000000055 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 0000000000000055 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 0000000000000055 = 00000000AAAAAAAA (cc=0) +NIHF + 8000000000000000 & 0000000000000055 = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 0000000000000055 = 00000055FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 0000000000000055 = 0000005555555555 (cc=1) +NIHF + 0000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000000000AA = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000000000AA = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000000000AA = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000000000AA = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000000000AA = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000000000AA = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000000000AA = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000000000AA = 000000AAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000000000AA = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 00000000000000AA = 000000AAFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000000000AA = 0000000055555555 (cc=0) +NIHF + 0000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 000000000000FFFF = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 000000000000FFFF = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 000000000000FFFF = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 000000000000FFFF = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 000000000000FFFF = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 000000000000FFFF = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 000000000000FFFF = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 000000000000FFFF = 0000AAAAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 000000000000FFFF = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 000000000000FFFF = 0000FFFFFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 000000000000FFFF = 0000555555555555 (cc=1) +NIHF + 0000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 0000000000005555 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 0000000000005555 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 0000000000005555 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 0000000000005555 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 0000000000005555 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 0000000000005555 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 0000000000005555 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 0000000000005555 = 00000000AAAAAAAA (cc=0) +NIHF + 8000000000000000 & 0000000000005555 = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 0000000000005555 = 00005555FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 0000000000005555 = 0000555555555555 (cc=1) +NIHF + 0000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 000000000000AAAA = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 000000000000AAAA = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 000000000000AAAA = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 000000000000AAAA = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 000000000000AAAA = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 000000000000AAAA = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 000000000000AAAA = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 000000000000AAAA = 0000AAAAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 000000000000AAAA = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 000000000000AAAA = 0000AAAAFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 000000000000AAAA = 0000000055555555 (cc=0) +NIHF + 0000000000000000 & 00000000FFFF0000 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000FFFF0000 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000FFFF0000 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000FFFF0000 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000FFFF0000 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000FFFF0000 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000FFFF0000 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000FFFF0000 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000FFFF0000 = AAAA0000AAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000FFFF0000 = 8000000000000000 (cc=1) +NIHF + FFFFFFFFFFFFFFFF & 00000000FFFF0000 = FFFF0000FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000FFFF0000 = 5555000055555555 (cc=1) +NIHF + 0000000000000000 & 0000000055550000 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 0000000055550000 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 0000000055550000 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 0000000055550000 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 0000000055550000 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 0000000055550000 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 0000000055550000 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 0000000055550000 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 0000000055550000 = 00000000AAAAAAAA (cc=0) +NIHF + 8000000000000000 & 0000000055550000 = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 0000000055550000 = 55550000FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 0000000055550000 = 5555000055555555 (cc=1) +NIHF + 0000000000000000 & 00000000AAAA0000 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000AAAA0000 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000AAAA0000 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000AAAA0000 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000AAAA0000 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000AAAA0000 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000AAAA0000 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000AAAA0000 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000AAAA0000 = AAAA0000AAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000AAAA0000 = 8000000000000000 (cc=1) +NIHF + FFFFFFFFFFFFFFFF & 00000000AAAA0000 = AAAA0000FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000AAAA0000 = 0000000055555555 (cc=0) +NIHF + 0000000000000000 & 00000000FFFFFFFF = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000FFFFFFFF = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000FFFFFFFF = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000FFFFFFFF = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000FFFFFFFF = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000FFFFFFFF = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000FFFFFFFF = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000FFFFFFFF = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000FFFFFFFF = 8000000000000000 (cc=1) +NIHF + FFFFFFFFFFFFFFFF & 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000FFFFFFFF = 5555555555555555 (cc=1) +NIHF + 0000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 0000000055555555 = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 0000000055555555 = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 0000000055555555 = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 0000000055555555 = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 0000000055555555 = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 0000000055555555 = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 0000000055555555 = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 0000000055555555 = 00000000AAAAAAAA (cc=0) +NIHF + 8000000000000000 & 0000000055555555 = 0000000000000000 (cc=0) +NIHF + FFFFFFFFFFFFFFFF & 0000000055555555 = 55555555FFFFFFFF (cc=1) +NIHF + 5555555555555555 & 0000000055555555 = 5555555555555555 (cc=1) +NIHF + 0000000000000000 & 00000000AAAAAAAA = 0000000000000000 (cc=0) +NIHF + 0000000000000001 & 00000000AAAAAAAA = 0000000000000001 (cc=0) +NIHF + 000000000000FFFF & 00000000AAAAAAAA = 000000000000FFFF (cc=0) +NIHF + 0000000000007FFF & 00000000AAAAAAAA = 0000000000007FFF (cc=0) +NIHF + 0000000000008000 & 00000000AAAAAAAA = 0000000000008000 (cc=0) +NIHF + 00000000FFFFFFFF & 00000000AAAAAAAA = 00000000FFFFFFFF (cc=0) +NIHF + 0000000080000000 & 00000000AAAAAAAA = 0000000080000000 (cc=0) +NIHF + 000000007FFFFFFF & 00000000AAAAAAAA = 000000007FFFFFFF (cc=0) +NIHF + AAAAAAAAAAAAAAAA & 00000000AAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +NIHF + 8000000000000000 & 00000000AAAAAAAA = 8000000000000000 (cc=1) +NIHF + FFFFFFFFFFFFFFFF & 00000000AAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +NIHF + 5555555555555555 & 00000000AAAAAAAA = 0000000055555555 (cc=0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.vgtest new file mode 100644 index 000000000..0f2a829de --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/and_EI.vgtest @@ -0,0 +1,2 @@ +prog: and_EI +prereq: test -x and_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.c new file mode 100644 index 000000000..e3e8301ff --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.c @@ -0,0 +1,74 @@ +#include +#include + +char b1[23] ="0123456789abcdefghijklm"; +char b2[23] ="mlkjihgfedcba9876543210"; +char b3[23] ="mmmmmmmmmmmmmmmmmmmmmmm"; +char b4[23] ="00000000000000000000000"; +char longbuf1[256]; +char longbuf2[256]; + +static int clc(char *a1,char *a2, int l) +{ + int cc; + + asm volatile( "larl 1, 1f\n" + "ex %3,0(1)\n" + "j 2f\n" + "1: clc 0(1,%1),0(%2)\n" + "2: ipm %0\n" + "srl %0,28\n" + :"=d" (cc) + :"a" (a1), "a" (a2), "d" (l): "1", "cc"); + return cc; +} + + +void testrun(char *a1, char *a2, int l) +{ + int cc; + + cc = clc(a1, a2, l); + printf("%d bytes:%d\n",l, cc); +} + + +void multiplex(int l, long offset1, long offset2) +{ + testrun(b1 + offset1, b1 + offset2, l); + testrun(b1 + offset1, b2 + offset2, l); + testrun(b1 + offset1, b3 + offset2, l); + testrun(b1 + offset1, b4 + offset2, l); + testrun(b2 + offset1, b2 + offset2, l); + testrun(b2 + offset1, b3 + offset2, l); + testrun(b2 + offset1, b4 + offset2, l); + testrun(b3 + offset1, b3 + offset2, l); + testrun(b3 + offset1, b4 + offset2, l); + testrun(b4 + offset1, b4 + offset2, l); +} + +void sweep(int l) +{ + multiplex(l, 0, 0); + multiplex(l, 1, 0); + multiplex(l, 1, 1); + multiplex(l, 0, 1); +} + +int main() +{ + sweep(0); + sweep(1); + sweep(2); + sweep(3); + sweep(4); + sweep(5); + sweep(22); + testrun(longbuf1, longbuf2, 255); + longbuf1[255] = 'a'; + testrun(longbuf1, longbuf2, 255); + longbuf2[255] = 'b'; + testrun(longbuf1, longbuf2, 255); + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stdout.exp new file mode 100644 index 000000000..fb115d822 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.stdout.exp @@ -0,0 +1,283 @@ +0 bytes:0 +0 bytes:1 +0 bytes:1 +0 bytes:0 +0 bytes:0 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:1 +0 bytes:1 +0 bytes:2 +0 bytes:1 +0 bytes:1 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:0 +0 bytes:1 +0 bytes:1 +0 bytes:2 +0 bytes:0 +0 bytes:1 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:1 +0 bytes:1 +0 bytes:1 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:0 +0 bytes:2 +0 bytes:0 +1 bytes:0 +1 bytes:1 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:2 +1 bytes:0 +1 bytes:2 +1 bytes:1 +1 bytes:1 +1 bytes:2 +1 bytes:1 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:2 +1 bytes:0 +1 bytes:0 +1 bytes:1 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:2 +1 bytes:0 +1 bytes:1 +1 bytes:1 +1 bytes:1 +1 bytes:2 +1 bytes:2 +1 bytes:1 +1 bytes:2 +1 bytes:0 +1 bytes:2 +1 bytes:0 +2 bytes:0 +2 bytes:1 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:2 +2 bytes:0 +2 bytes:2 +2 bytes:1 +2 bytes:1 +2 bytes:2 +2 bytes:1 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:2 +2 bytes:0 +2 bytes:0 +2 bytes:1 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:2 +2 bytes:0 +2 bytes:1 +2 bytes:1 +2 bytes:1 +2 bytes:2 +2 bytes:2 +2 bytes:1 +2 bytes:2 +2 bytes:0 +2 bytes:2 +2 bytes:0 +3 bytes:0 +3 bytes:1 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:2 +3 bytes:0 +3 bytes:2 +3 bytes:1 +3 bytes:1 +3 bytes:2 +3 bytes:1 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:2 +3 bytes:0 +3 bytes:0 +3 bytes:1 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:2 +3 bytes:0 +3 bytes:1 +3 bytes:1 +3 bytes:1 +3 bytes:2 +3 bytes:2 +3 bytes:1 +3 bytes:2 +3 bytes:0 +3 bytes:2 +3 bytes:0 +4 bytes:0 +4 bytes:1 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:2 +4 bytes:0 +4 bytes:2 +4 bytes:1 +4 bytes:1 +4 bytes:2 +4 bytes:1 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:2 +4 bytes:0 +4 bytes:0 +4 bytes:1 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:2 +4 bytes:0 +4 bytes:1 +4 bytes:1 +4 bytes:1 +4 bytes:2 +4 bytes:2 +4 bytes:1 +4 bytes:2 +4 bytes:0 +4 bytes:2 +4 bytes:0 +5 bytes:0 +5 bytes:1 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:2 +5 bytes:0 +5 bytes:2 +5 bytes:1 +5 bytes:1 +5 bytes:2 +5 bytes:1 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:2 +5 bytes:0 +5 bytes:0 +5 bytes:1 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:2 +5 bytes:0 +5 bytes:1 +5 bytes:1 +5 bytes:1 +5 bytes:2 +5 bytes:2 +5 bytes:1 +5 bytes:2 +5 bytes:0 +5 bytes:2 +5 bytes:0 +22 bytes:0 +22 bytes:1 +22 bytes:1 +22 bytes:2 +22 bytes:0 +22 bytes:1 +22 bytes:2 +22 bytes:0 +22 bytes:2 +22 bytes:0 +22 bytes:2 +22 bytes:1 +22 bytes:1 +22 bytes:2 +22 bytes:1 +22 bytes:1 +22 bytes:2 +22 bytes:1 +22 bytes:2 +22 bytes:1 +22 bytes:0 +22 bytes:1 +22 bytes:1 +22 bytes:2 +22 bytes:0 +22 bytes:1 +22 bytes:2 +22 bytes:0 +22 bytes:2 +22 bytes:0 +22 bytes:1 +22 bytes:1 +22 bytes:1 +22 bytes:2 +22 bytes:2 +22 bytes:1 +22 bytes:2 +22 bytes:2 +22 bytes:2 +22 bytes:2 +255 bytes:0 +255 bytes:2 +255 bytes:1 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.vgtest new file mode 100644 index 000000000..bc2cea401 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clc.vgtest @@ -0,0 +1 @@ +prog: clc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.c new file mode 100644 index 000000000..58a1f30ea --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.c @@ -0,0 +1,74 @@ +#include +#include + +char b1[23] ="0123456789abcdefghijklm"; +char b2[23] ="mlkjihgfedcba9876543210"; +char b3[23] ="mmmmmmmmmmmmmmmmmmmmmmm"; +char b4[23] ="00000000000000000000000"; +char longbuf[17000000]; + +static int clcle(unsigned long *_a1, unsigned long *_l1, unsigned long *_a3, unsigned long *_l3, char _pad) +{ + register unsigned long a1 asm ("2") = *_a1; + register unsigned long l1 asm ("3") = *_l1; + register unsigned long a3 asm ("4") = *_a3; + register unsigned long l3 asm ("5") = *_l3; + register unsigned long pad asm ("6") = _pad; + register unsigned long cc asm ("7"); + + asm volatile( "0: clcle 2,4,0(6)\n\t" + "jo 0b\n\t" + "ipm %0\n\t" + "srl %0,28\n\t" + :"=d" (cc), "+d" (a1),"+d" (l1), "+d" (a3), "+d" (l3) + : "d" (pad) + : "memory", "cc"); + *_a1 = a1; + *_a3 = a3; + *_l1 = l1; + *_l3 = l3; + + return cc; +} + + +void testrun(void *_a1, unsigned long _l1, void *_a3, unsigned long _l3, char pad) +{ + unsigned long a1,a3,l1,l3; + int cc; + + a1 = (unsigned long) _a1; l1 = _l1; a3 = (unsigned long) _a3; l3 = _l3; + cc = clcle(&a1, &l1, &a3, &l3, pad); + printf("cc: %d, l1: %lu(%lu) l3: %lu(%lu) diff1: %lu diff3: %lu\n", + cc, l1, _l1, l3, _l3, a1-(unsigned long) _a1, a3-(unsigned long) _a3); +} + + +void multiplex(unsigned long l1, unsigned long l3, char pad) +{ + testrun(b1, l1, b1, l3, pad); + testrun(b1, l1, b2, l3, pad); + testrun(b1, l1, b3, l3, pad); + testrun(b1, l1, b4, l3, pad); + testrun(b2, l1, b2, l3, pad); + testrun(b2, l1, b3, l3, pad); + testrun(b2, l1, b4, l3, pad); + testrun(b3, l1, b3, l3, pad); + testrun(b3, l1, b4, l3, pad); + testrun(b4, l1, b4, l3, pad); +} + +int main() +{ + multiplex(0,0,9); + multiplex(1,0,9); + multiplex(0,1,9); + multiplex(1,1,9); + multiplex(5,23,9); + multiplex(23,5,9); + testrun(longbuf,10000,longbuf,100000,0); + testrun(longbuf,10000,longbuf,100000,128); + testrun(longbuf,10000,longbuf,100000,255); + exit(0); +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stdout.exp new file mode 100644 index 000000000..92222636b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.stdout.exp @@ -0,0 +1,63 @@ +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 0, l1: 0(0) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 2, l1: 1(1) l3: 0(0) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 0(0) l3: 1(1) diff1: 0 diff3: 0 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 1, l1: 1(1) l3: 1(1) diff1: 0 diff3: 0 +cc: 1, l1: 1(1) l3: 1(1) diff1: 0 diff3: 0 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 2, l1: 1(1) l3: 1(1) diff1: 0 diff3: 0 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 2, l1: 1(1) l3: 1(1) diff1: 0 diff3: 0 +cc: 0, l1: 0(1) l3: 0(1) diff1: 1 diff3: 1 +cc: 1, l1: 0(5) l3: 18(23) diff1: 5 diff3: 5 +cc: 1, l1: 5(5) l3: 23(23) diff1: 0 diff3: 0 +cc: 1, l1: 5(5) l3: 23(23) diff1: 0 diff3: 0 +cc: 2, l1: 4(5) l3: 22(23) diff1: 1 diff3: 1 +cc: 1, l1: 0(5) l3: 18(23) diff1: 5 diff3: 5 +cc: 1, l1: 4(5) l3: 22(23) diff1: 1 diff3: 1 +cc: 2, l1: 5(5) l3: 23(23) diff1: 0 diff3: 0 +cc: 1, l1: 0(5) l3: 18(23) diff1: 5 diff3: 5 +cc: 2, l1: 5(5) l3: 23(23) diff1: 0 diff3: 0 +cc: 1, l1: 0(5) l3: 18(23) diff1: 5 diff3: 5 +cc: 2, l1: 18(23) l3: 0(5) diff1: 5 diff3: 5 +cc: 1, l1: 23(23) l3: 5(5) diff1: 0 diff3: 0 +cc: 1, l1: 23(23) l3: 5(5) diff1: 0 diff3: 0 +cc: 2, l1: 22(23) l3: 4(5) diff1: 1 diff3: 1 +cc: 2, l1: 18(23) l3: 0(5) diff1: 5 diff3: 5 +cc: 1, l1: 22(23) l3: 4(5) diff1: 1 diff3: 1 +cc: 2, l1: 23(23) l3: 5(5) diff1: 0 diff3: 0 +cc: 2, l1: 18(23) l3: 0(5) diff1: 5 diff3: 5 +cc: 2, l1: 23(23) l3: 5(5) diff1: 0 diff3: 0 +cc: 2, l1: 18(23) l3: 0(5) diff1: 5 diff3: 5 +cc: 0, l1: 0(10000) l3: 0(100000) diff1: 10000 diff3: 100000 +cc: 2, l1: 0(10000) l3: 90000(100000) diff1: 10000 diff3: 10000 +cc: 2, l1: 0(10000) l3: 90000(100000) diff1: 10000 diff3: 10000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.vgtest new file mode 100644 index 000000000..285487776 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/clcle.vgtest @@ -0,0 +1 @@ +prog: clcle diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.c new file mode 100644 index 000000000..10f0e095c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.c @@ -0,0 +1,129 @@ +#include +#include +#include "opcodes.h" + +#define LOAD_REG_MEM(insn, s, ccset, initial, mask) \ +({ \ + register unsigned long target asm("1") = initial; \ + unsigned long source = s; \ + register unsigned long *addr asm("5") = &source; \ + unsigned int a,b; \ + switch(ccset) { \ + case 0: a = 0; b = 0; break; \ + case 1: a = 1; b = 0; break; \ + case 2: a = 0xffffffff; b = 1; break; \ + case 3: a = 0xffffffff; b = 2; break; \ + default: abort(); \ + } \ + asm volatile( "alr %1, %3\n" /* set cc */ \ + insn(1,mask,5,000,00) \ + : "+d" (target), "+d" (a) \ + : "Q" (source), "d" (b), "d"(addr) \ + : "cc"); \ + printf(#insn " %16.16lX into %16.16lX if mask" \ + "%d for cc %d: %16.16lX\n",s, initial, \ + 0x##mask, ccset, target); \ +}) + + +#define LOAD_REG_REG(insn, s, ccset, initial, mask) \ +({ \ + register unsigned long target asm("1") = initial; \ + register unsigned long source asm("2")= s; \ + unsigned int a,b; \ + switch(ccset) { \ + case 0: a = 0; b = 0; break; \ + case 1: a = 1; b = 0; break; \ + case 2: a = 0xffffffff; b = 1; break; \ + case 3: a = 0xffffffff; b = 2; break; \ + default: abort(); \ + } \ + asm volatile( "alr %1, %3\n" /* set cc */ \ + insn(mask,1,2) \ + : "+d" (target), "+d" (a) \ + : "d" (source), "d" (b) \ + : "cc"); \ + printf(#insn " %16.16lX into %16.16lX if mask" \ + "%d for cc %d: %16.16lX\n",s, initial, \ + 0x##mask, ccset, target); \ +}) + +#define STORE_REG_REG(insn, s, ccset, initial, mask) \ +({ \ + unsigned long target = initial; \ + register unsigned long source asm("1") = s; \ + register unsigned long *addr asm("5") = ⌖ \ + unsigned int a,b; \ + switch(ccset) { \ + case 0: a = 0; b = 0; break; \ + case 1: a = 1; b = 0; break; \ + case 2: a = 0xffffffff; b = 1; break; \ + case 3: a = 0xffffffff; b = 2; break; \ + default: abort(); \ + } \ + asm volatile( "alr %1, %3\n" /* set cc */ \ + insn(1,mask,5,000,00) \ + : "+Q" (target), "+d" (a) \ + : "d" (source), "d" (b), "d"(addr) \ + : "cc"); \ + printf(#insn " %16.16lX into %16.16lX if mask" \ + "%d for cc %d: %16.16lX\n",s, initial, \ + 0x##mask, ccset, target); \ +}) + + +#define INSNVALCCINIT(insn, value, ccset, INIT, FUNC) \ +({ \ + FUNC(insn, value, ccset, INIT, 0); \ + FUNC(insn, value, ccset, INIT, 1); \ + FUNC(insn, value, ccset, INIT, 2); \ + FUNC(insn, value, ccset, INIT, 3); \ + FUNC(insn, value, ccset, INIT, 4); \ + FUNC(insn, value, ccset, INIT, 5); \ + FUNC(insn, value, ccset, INIT, 6); \ + FUNC(insn, value, ccset, INIT, 7); \ + FUNC(insn, value, ccset, INIT, 8); \ + FUNC(insn, value, ccset, INIT, 9); \ + FUNC(insn, value, ccset, INIT, A); \ + FUNC(insn, value, ccset, INIT, B); \ + FUNC(insn, value, ccset, INIT, C); \ + FUNC(insn, value, ccset, INIT, D); \ + FUNC(insn, value, ccset, INIT, E); \ + FUNC(insn, value, ccset, INIT, F); \ +}) + + + + +#define INSNVALCC(insn, value, ccset, FUNC) \ +({ \ + INSNVALCCINIT(insn, value, ccset, 0UL, FUNC); \ + INSNVALCCINIT(insn, value, ccset, 0xffffffffffffffffUL, FUNC); \ +}) + +#define INSNVAL(insn, value, FUNC) \ +({ \ + INSNVALCC(insn, value, 0, FUNC); \ + INSNVALCC(insn, value, 1, FUNC); \ + INSNVALCC(insn, value, 2, FUNC); \ + INSNVALCC(insn, value, 3, FUNC); \ +}) + +#define DO_INSN(insn, FUNC) \ +({ \ + INSNVAL(insn, 0UL, FUNC); \ + INSNVAL(insn, 0xffffffffUL, FUNC); \ + INSNVAL(insn, 0xffffffffffffffffUL, FUNC); \ + INSNVAL(insn, 0xffffffff00000000UL, FUNC); \ +}) + +int main() +{ + DO_INSN(LOC, LOAD_REG_MEM); + DO_INSN(LOCG, LOAD_REG_MEM); + DO_INSN(LOCR, LOAD_REG_REG); + DO_INSN(LOCGR, LOAD_REG_REG); + DO_INSN(STOC, STORE_REG_REG); + DO_INSN(STOCG, STORE_REG_REG); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stdout.exp new file mode 100644 index 000000000..317a4cfa7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.stdout.exp @@ -0,0 +1,3072 @@ +LOC 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOC 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOC 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOC 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOC 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCG 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: 0000000000000000 +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: 00000000FFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: 00000000FFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOCR 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOCR 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOCR 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCR 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +LOCGR 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: 0000000000000000 +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCGR 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: 00000000FFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCGR 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: 00000000FFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCGR FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +LOCGR FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +LOCGR FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 +STOC 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: 00000000FFFFFFFF +STOC 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: 00000000FFFFFFFF +STOC 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: 00000000FFFFFFFF +STOC 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOC 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: 00000000FFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOC 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: 00000000FFFFFFFF +STOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOC 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: FFFFFFFF00000000 +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOC 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOC FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: FFFFFFFF00000000 +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: 00000000FFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOC FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: 00000000FFFFFFFF +STOCG 0000000000000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask8 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask9 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask10 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask11 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask12 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask13 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask14 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask15 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask4 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask5 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask6 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask7 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask12 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask13 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask14 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask15 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask2 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask3 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask6 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask7 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask10 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask11 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask14 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask15 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask1 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask3 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask5 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask7 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask9 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask11 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask13 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOCG 0000000000000000 into 0000000000000000 if mask15 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: 0000000000000000 +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOCG 0000000000000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask1 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask3 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask5 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask7 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask9 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask11 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask13 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOCG 00000000FFFFFFFF into 0000000000000000 if mask15 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: 00000000FFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOCG 00000000FFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: 00000000FFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask1 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask3 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask5 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask7 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask9 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask11 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask13 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOCG FFFFFFFFFFFFFFFF into 0000000000000000 if mask15 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFFFFFFFFFF into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 0: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 0: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 0: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 1: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 1: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 1: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 2: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 2: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 2: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask0 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask1 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask2 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask3 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask4 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask5 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask6 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask7 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask8 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask9 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask10 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask11 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask12 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask13 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask14 for cc 3: 0000000000000000 +STOCG FFFFFFFF00000000 into 0000000000000000 if mask15 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask0 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask1 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask2 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask3 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask4 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask5 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask6 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask7 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask8 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask9 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask10 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask11 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask12 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask13 for cc 3: FFFFFFFF00000000 +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask14 for cc 3: FFFFFFFFFFFFFFFF +STOCG FFFFFFFF00000000 into FFFFFFFFFFFFFFFF if mask15 for cc 3: FFFFFFFF00000000 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.vgtest new file mode 100644 index 000000000..be500e91a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/condloadstore.vgtest @@ -0,0 +1,2 @@ +prog: condloadstore +prereq: test -x condloadstore diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.c new file mode 100644 index 000000000..ce5f9e405 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.c @@ -0,0 +1,104 @@ +#include + +static unsigned long test[] ={ + 0x000000000000000a, + 0x000000000000001a, + 0x000000000000012a, + 0x000000000000123a, + 0x000000000001234a, + 0x000000000012345a, + 0x000000000123456a, + 0x000000001234567a, + 0x000000012345678a, + 0x000000123456789a, + 0x000001234567890a, + 0x000000000000000b, + 0x000000000000001b, + 0x000000000000012b, + 0x000000000000123b, + 0x000000000001234b, + 0x000000000012345b, + 0x000000000123456b, + 0x000000001234567b, + 0x000000012345678b, + 0x000000123456789b, + 0x000001234567890b, + 0x000000000000000c, + 0x000000000000001c, + 0x000000000000012c, + 0x000000000000123c, + 0x000000000001234c, + 0x000000000012345c, + 0x000000000123456c, + 0x000000001234567c, + 0x000000012345678c, + 0x000000123456789c, + 0x000001234567890c, + 0x000000000000000d, + 0x000000000000001d, + 0x000000000000012d, + 0x000000000000123d, + 0x000000000001234d, + 0x000000000012345d, + 0x000000000123456d, + 0x000000001234567d, + 0x000000012345678d, + 0x000000123456789d, + 0x000001234567890d, + 0x000000000000000e, + 0x000000000000001e, + 0x000000000000012e, + 0x000000000000123e, + 0x000000000001234e, + 0x000000000012345e, + 0x000000000123456e, + 0x000000001234567e, + 0x000000012345678e, + 0x000000123456789e, + 0x000001234567890e, + 0x000000000000000f, + 0x000000000000001f, + 0x000000000000012f, + 0x000000000000123f, + 0x000000000001234f, + 0x000000000012345f, + 0x000000000123456f, + 0x000000001234567f, + 0x000000012345678f, + 0x000000123456789f, + 0x000001234567890f, + /* min and max */ + 0x000002147483647c, + 0x000002147483648d, + +/* fixs390: we also need to check if invalid values cause a fixed-point-devide exception. + Not yet implemented. */ +/* 0x000002147483648c, + 0x000002147483649d, + 0x00000000000000fa, */ + +}; + + +static signed int dec_to_hex(unsigned long *addr) +{ + register signed int res asm("2") = 0; + register unsigned long *_addr asm("4") = addr; + + asm volatile( + " cvb %0,0(0,%1)" + : "=d" (res) : "d" (_addr) : "memory"); + return res & 0xffffffff; +} + + + + +int main() +{ + int i; + + for (i = 0; i < sizeof(test) / sizeof(test[0]); i++) + printf("%d\n", dec_to_hex(&test[i])); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stdout.exp new file mode 100644 index 000000000..35d6a600f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.stdout.exp @@ -0,0 +1,68 @@ +0 +1 +12 +123 +1234 +12345 +123456 +1234567 +12345678 +123456789 +1234567890 +0 +-1 +-12 +-123 +-1234 +-12345 +-123456 +-1234567 +-12345678 +-123456789 +-1234567890 +0 +1 +12 +123 +1234 +12345 +123456 +1234567 +12345678 +123456789 +1234567890 +0 +-1 +-12 +-123 +-1234 +-12345 +-123456 +-1234567 +-12345678 +-123456789 +-1234567890 +0 +1 +12 +123 +1234 +12345 +123456 +1234567 +12345678 +123456789 +1234567890 +0 +1 +12 +123 +1234 +12345 +123456 +1234567 +12345678 +123456789 +1234567890 +2147483647 +-2147483648 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.vgtest new file mode 100644 index 000000000..c68fccb20 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvb.vgtest @@ -0,0 +1 @@ +prog: cvb diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.c new file mode 100644 index 000000000..3fe8f487a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.c @@ -0,0 +1,34 @@ +#include + +static signed int test[] ={ + 0, + 1, + -1, + 0x7fffffff, + 0x80000000, + 0x12345678, + 0x87654321, + 0x55555555, + 0x11111111, + 0xaaaaaaaa, +}; + + +static unsigned long hex_to_dec(signed int num) +{ + unsigned long addr = 0; + + asm volatile( + " cvd %2,%0" + : "=m" (addr) : "a" (&addr) , "d" (num) : "memory"); + return addr; +} + +int main() +{ + int i; + + for (i = 0; i < sizeof(test) / sizeof(test[0]); i++) + printf("%lx\n", hex_to_dec(test[i])); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stdout.exp new file mode 100644 index 000000000..93bfe83cd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.stdout.exp @@ -0,0 +1,10 @@ +c +1c +1d +2147483647c +2147483648d +305419896c +2023406815d +1431655765c +286331153c +1431655766d diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.vgtest new file mode 100644 index 000000000..b63146fe7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/cvd.vgtest @@ -0,0 +1 @@ +prog: cvd diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.c new file mode 100644 index 000000000..102b8ffa1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.c @@ -0,0 +1,30 @@ +#include +#include "div.h" + +static void do_regmem_insns(unsigned long m2) +{ + memsweep(d, m2); + regsweep(dr, m2); + memsweep(dl, m2); + regsweep(dlr, m2); + memsweep(dlg, m2); + regsweep(dlgr, m2); + memsweep(dsg, m2); + regsweep(dsgr, m2); + memsweep(dsgf, m2); + regsweep(dsgfr, m2); +} + +int main() +{ + do_regmem_insns(0x7ffffffffffffffaul); + do_regmem_insns(0x80000000f0000000ul); + do_regmem_insns(0xfffffffafffffffaul); + do_regmem_insns(0x7ffffffff0000000ul); + do_regmem_insns(0x80000000f0000000ul); + do_regmem_insns(0xfffffffaf0000000ul); + do_regmem_insns(0x000000087ffffffful); + do_regmem_insns(0x0000000480000000ul); + do_regmem_insns(0x00000008fffffffaul); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.h new file mode 100644 index 000000000..52609dfed --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.h @@ -0,0 +1,65 @@ +#include + +#define DIV_REG_MEM(insn, d1_1, d1_2, d2) \ +({ \ + unsigned long tmp1 = d1_1; \ + unsigned long tmp2 = d1_2; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + #insn " 2, %2\n" \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "Q" (d2) \ + : "2","3"); \ + printf(#insn " %16.16lX%16.16lX / %16.16lX = %16.16lX (rem %16.16lX)\n", d1_1, d1_2, d2, tmp2, tmp1); \ +}) + +#define DIV_REG_REG(insn, d1_1, d1_2, d2) \ +({ \ + unsigned long tmp1 = d1_1; \ + unsigned long tmp2 = d1_2; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + #insn " 2, %2\n" \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "d" (d2) \ + : "2","3"); \ + printf(#insn " %16.16lX%16.16lX / %16.16lX = %16.16lX (rem %16.16lX)\n", d1_1, d1_2, d2, tmp2, tmp1); \ +}) + + +#define memsweep(i, d2) \ +({ \ + DIV_REG_MEM(i, 0x0ul, 0ul, d2); \ + DIV_REG_MEM(i, 0x0ul, 1ul, d2); \ + DIV_REG_MEM(i, 0x0ul, 0xfffful, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x7ffful, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x8000ul, d2); \ + DIV_REG_MEM(i, 0x0ul, 0xfffffffful, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x80000000ul, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x7ffffffful, d2); \ + DIV_REG_MEM(i, 0x0ul, 0xfffffffffffffffful, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x8000000000000000ul, d2); \ + DIV_REG_MEM(i, 0x0ul, 0x7ffffffffffffffful, d2); \ + DIV_REG_MEM(i, 0x1ul, 0xaffffffful, d2); \ +}) + +#define regsweep(i, d2) \ +({ \ + DIV_REG_REG(i, 0x0ul, 0ul, d2); \ + DIV_REG_REG(i, 0x0ul, 1ul, d2); \ + DIV_REG_REG(i, 0x0ul, 0xfffful, d2); \ + DIV_REG_REG(i, 0x0ul, 0x7ffful, d2); \ + DIV_REG_REG(i, 0x0ul, 0x8000ul, d2); \ + DIV_REG_REG(i, 0x0ul, 0xfffffffful, d2); \ + DIV_REG_REG(i, 0x0ul, 0x80000000ul, d2); \ + DIV_REG_REG(i, 0x0ul, 0x7ffffffful, d2); \ + DIV_REG_REG(i, 0x0ul, 0xfffffffffffffffful, d2); \ + DIV_REG_REG(i, 0x0ul, 0x8000000000000000ul, d2); \ + DIV_REG_REG(i, 0x0ul, 0x7ffffffffffffffful, d2); \ + DIV_REG_REG(i, 0x1ul, 0xaffffffful, d2); \ +}) + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stdout.exp new file mode 100644 index 000000000..515b0dbac --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.stdout.exp @@ -0,0 +1,1080 @@ +d 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +d 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +d 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +d 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 0000000000000001) +d 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000001) +d 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000000) +d 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFF00000002 (rem 0000000000000001) +d 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 7FFFFFFF00000002 (rem 0000000000000001) +d 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000003 (rem 0000000030000002) +dr 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 00000000FFFFD556 (rem 0000000000000003) +dr 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000001) +dr 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000002) +dr 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 00000000D5555556 (rem 0000000000000003) +dr 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000002) +dr 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000001) +dr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dr 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 7FFFFFFFD5555556 (rem 0000000000000003) +dr 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 00000000B8000001 (rem 0000000000000005) +dl 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 0000000000000001) +dl 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000001) +dl 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000000) +dl 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFF00000002 (rem 0000000000000001) +dl 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 7FFFFFFF00000002 (rem 0000000000000001) +dl 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000003 (rem 0000000030000002) +dlr 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dlr 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFF00000001 (rem 0000000000000005) +dlr 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 7FFFFFFF00000001 (rem 0000000000000005) +dlr 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 00000000B0000005) +dlg 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 000000000000000B) +dlg 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000006) +dlg 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dlg 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 00000000B000000B) +dlgr 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 000000000000000B) +dlgr 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000006) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dlgr 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 00000000B000000B) +dsg 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = FFFFFFFFFFFFFFFF (rem FFFFFFFFFFFFFFFA) +dsg 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dsg 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = FFFFFFFFFFFFFFFF (rem FFFFFFFFFFFFFFFA) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dsgr 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsgf 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsgf 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsgf 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000002 (rem 0000000000000001) +dsgf 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000001) +dsgf 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000000000000) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = FFFFFFFEFFFFFFFE (rem FFFFFFFFFFFFFFFE) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000100000002 (rem 0000000000000001) +dsgf 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000001 (rem 0000000030000000) +dsgfr 00000000000000000000000000000000 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 7FFFFFFFFFFFFFFA = FFFFFFFFFFFFD556 (rem 0000000000000003) +dsgfr 00000000000000000000000000007FFF / 7FFFFFFFFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000001) +dsgfr 00000000000000000000000000008000 / 7FFFFFFFFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000002) +dsgfr 000000000000000000000000FFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dsgfr 00000000000000000000000080000000 / 7FFFFFFFFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000002) +dsgfr 0000000000000000000000007FFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000001) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 7FFFFFFFFFFFFFFA = 1555555555555555 (rem FFFFFFFFFFFFFFFE) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFFFFFFFFA = EAAAAAAAAAAAAAAB (rem 0000000000000001) +dsgfr 000000000000000100000000AFFFFFFF / 7FFFFFFFFFFFFFFA = FFFFFFFFE2AAAAAB (rem 0000000000000001) +d 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +d 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +d 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +d 000000000000000000000000FFFFFFFF / 80000000F0000000 = 00000000FFFFFFFF (rem 000000007FFFFFFF) +d 00000000000000000000000080000000 / 80000000F0000000 = 00000000FFFFFFFF (rem 0000000000000000) +d 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +d 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +d 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +d 000000000000000100000000AFFFFFFF / 80000000F0000000 = 00000000FFFFFFFD (rem 000000002FFFFFFF) +dr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 00000000FFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000000000000080000000 / 80000000F0000000 = 00000000FFFFFFF8 (rem 0000000000000000) +dr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 00000000FFFFFFF9 (rem 000000000FFFFFFF) +dr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 00000000FFFFFFE6 (rem 000000000FFFFFFF) +dl 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 000000007FFFFFFF) +dl 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000001 (rem 0000000000000000) +dl 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dl 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dl 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFF00000001 (rem 000000007FFFFFFF) +dl 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000003 (rem 000000002FFFFFFF) +dlr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 00000000BFFFFFFF) +dlg 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFF0FFFFFFF) +dlg 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000000 (rem 8000000000000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlg 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFFBFFFFFFF) +dlgr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFF0FFFFFFF) +dlgr 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000000 (rem 8000000000000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFFBFFFFFFF) +dsg 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000001 (rem FFFFFFFF10000000) +dsg 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 00000000EFFFFFFF) +dsg 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000001 (rem FFFFFFFF10000000) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 00000000EFFFFFFF) +dsgr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgf 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgf 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgf 000000000000000000000000FFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +dsgf 00000000000000000000000080000000 / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 0000000000000000) +dsgf 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 80000000F0000000 = 0000000100000000 (rem 0000000000000000) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dsgf 000000000000000100000000AFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000002FFFFFFF) +dsgfr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dsgfr 00000000000000000000000080000000 / 80000000F0000000 = FFFFFFFFFFFFFFF8 (rem 0000000000000000) +dsgfr 0000000000000000000000007FFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF9 (rem 000000000FFFFFFF) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 80000000F0000000 = 0000000800000000 (rem 0000000000000000) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFF800000001 (rem 000000000FFFFFFF) +dsgfr 000000000000000100000000AFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF6 (rem 000000000FFFFFFF) +d 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 00000000FFFFD556 (rem 0000000000000003) +d 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000001) +d 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000002) +d 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 00000000D5555556 (rem 0000000000000003) +d 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000002) +d 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000001) +d 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +d 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 7FFFFFFFD5555556 (rem 0000000000000003) +d 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 00000000B8000001 (rem 0000000000000005) +dr 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 00000000FFFFD556 (rem 0000000000000003) +dr 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000001) +dr 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 00000000FFFFEAAB (rem 0000000000000002) +dr 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 00000000D5555556 (rem 0000000000000003) +dr 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000002) +dr 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 00000000EAAAAAAB (rem 0000000000000001) +dr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dr 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 7FFFFFFFD5555556 (rem 0000000000000003) +dr 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 00000000B8000001 (rem 0000000000000005) +dl 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dl 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dl 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dl 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFF00000001 (rem 0000000000000005) +dl 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 7FFFFFFF00000001 (rem 0000000000000005) +dl 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 00000000B0000005) +dlr 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 0000000000000005) +dlr 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFF00000001 (rem 0000000000000005) +dlr 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 7FFFFFFF00000001 (rem 0000000000000005) +dlr 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 00000000B0000005) +dlg 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 0000000500000005) +dlg 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 8000000000000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlg 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 00000005B0000005) +dlgr 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 0000000500000005) +dlgr 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 8000000000000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000001 (rem 00000005B0000005) +dsg 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 0000000019999999 (rem FFFFFFFD99999996) +dsg 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFE6666667 (rem 0000000266666669) +dsg 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 0000000019999999 (rem FFFFFFFD99999996) +dsgr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFE6666667 (rem 0000000266666669) +dsgr 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFD556 (rem 0000000000000003) +dsgf 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000001) +dsgf 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000002) +dsgf 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dsgf 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000002) +dsgf 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000001) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 1555555555555555 (rem FFFFFFFFFFFFFFFE) +dsgf 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = EAAAAAAAAAAAAAAB (rem 0000000000000001) +dsgf 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFE2AAAAAB (rem 0000000000000001) +dsgfr 00000000000000000000000000000000 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / FFFFFFFAFFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFD556 (rem 0000000000000003) +dsgfr 00000000000000000000000000007FFF / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000001) +dsgfr 00000000000000000000000000008000 / FFFFFFFAFFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000002) +dsgfr 000000000000000000000000FFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dsgfr 00000000000000000000000080000000 / FFFFFFFAFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000002) +dsgfr 0000000000000000000000007FFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000001) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / FFFFFFFAFFFFFFFA = 1555555555555555 (rem FFFFFFFFFFFFFFFE) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAFFFFFFFA = EAAAAAAAAAAAAAAB (rem 0000000000000001) +dsgfr 000000000000000100000000AFFFFFFF / FFFFFFFAFFFFFFFA = FFFFFFFFE2AAAAAB (rem 0000000000000001) +d 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +d 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +d 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +d 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 0000000000000001) +d 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000001) +d 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000000) +d 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFF00000002 (rem 0000000000000001) +d 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 7FFFFFFF00000002 (rem 0000000000000001) +d 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000003 (rem 0000000030000002) +dr 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 00000000FFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 00000000FFFFFFF8 (rem 0000000000000000) +dr 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 00000000FFFFFFF9 (rem 000000000FFFFFFF) +dr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 7FFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 00000000FFFFFFE6 (rem 000000000FFFFFFF) +dl 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 0000000000000001) +dl 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000001) +dl 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000000) +dl 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFF00000002 (rem 0000000000000001) +dl 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 7FFFFFFF00000002 (rem 0000000000000001) +dl 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000003 (rem 0000000030000002) +dlr 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlr 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 7FFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 00000000BFFFFFFF) +dlg 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 000000001FFFFFFF) +dlg 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000010000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlg 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 00000000CFFFFFFF) +dlgr 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 000000001FFFFFFF) +dlgr 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000010000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 00000000CFFFFFFF) +dsg 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFFF (rem FFFFFFFFF0000000) +dsg 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dsg 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFFF (rem FFFFFFFFF0000000) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dsgr 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgf 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgf 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dsgf 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = 0000000000000002 (rem 0000000000000001) +dsgf 00000000000000000000000080000000 / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000001) +dsgf 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000000000000) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 7FFFFFFFF0000000 = FFFFFFFEFFFFFFFE (rem FFFFFFFFFFFFFFFE) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000100000002 (rem 0000000000000001) +dsgf 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = 0000000000000001 (rem 0000000030000000) +dsgfr 00000000000000000000000000000000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / 7FFFFFFFF0000000 = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dsgfr 00000000000000000000000080000000 / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFF8 (rem 0000000000000000) +dsgfr 0000000000000000000000007FFFFFFF / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFF9 (rem 000000000FFFFFFF) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 7FFFFFFFF0000000 = 0000000800000000 (rem 0000000000000000) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 7FFFFFFFF0000000 = FFFFFFF800000001 (rem 000000000FFFFFFF) +dsgfr 000000000000000100000000AFFFFFFF / 7FFFFFFFF0000000 = FFFFFFFFFFFFFFF6 (rem 000000000FFFFFFF) +d 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +d 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +d 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +d 000000000000000000000000FFFFFFFF / 80000000F0000000 = 00000000FFFFFFFF (rem 000000007FFFFFFF) +d 00000000000000000000000080000000 / 80000000F0000000 = 00000000FFFFFFFF (rem 0000000000000000) +d 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +d 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +d 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +d 000000000000000100000000AFFFFFFF / 80000000F0000000 = 00000000FFFFFFFD (rem 000000002FFFFFFF) +dr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 00000000FFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000000000000080000000 / 80000000F0000000 = 00000000FFFFFFF8 (rem 0000000000000000) +dr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 00000000FFFFFFF9 (rem 000000000FFFFFFF) +dr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 00000000FFFFFFE6 (rem 000000000FFFFFFF) +dl 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 000000007FFFFFFF) +dl 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000001 (rem 0000000000000000) +dl 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dl 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dl 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFF00000001 (rem 000000007FFFFFFF) +dl 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000003 (rem 000000002FFFFFFF) +dlr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 00000000000000008000000000000000 / 80000000F0000000 = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 7FFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 00000000BFFFFFFF) +dlg 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFF0FFFFFFF) +dlg 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000000 (rem 8000000000000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlg 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFFBFFFFFFF) +dlgr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFF0FFFFFFF) +dlgr 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000000 (rem 8000000000000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000001 (rem 7FFFFFFFBFFFFFFF) +dsg 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000001 (rem FFFFFFFF10000000) +dsg 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 00000000EFFFFFFF) +dsg 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 80000000F0000000 = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 80000000F0000000 = 0000000000000001 (rem FFFFFFFF10000000) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 00000000EFFFFFFF) +dsgr 000000000000000100000000AFFFFFFF / 80000000F0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgf 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgf 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgf 000000000000000000000000FFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +dsgf 00000000000000000000000080000000 / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 0000000000000000) +dsgf 0000000000000000000000007FFFFFFF / 80000000F0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 80000000F0000000 = 0000000100000000 (rem 0000000000000000) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dsgf 000000000000000100000000AFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFFF (rem 000000002FFFFFFF) +dsgfr 00000000000000000000000000000000 / 80000000F0000000 = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 80000000F0000000 = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 80000000F0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / 80000000F0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / 80000000F0000000 = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dsgfr 00000000000000000000000080000000 / 80000000F0000000 = FFFFFFFFFFFFFFF8 (rem 0000000000000000) +dsgfr 0000000000000000000000007FFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF9 (rem 000000000FFFFFFF) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 80000000F0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 80000000F0000000 = 0000000800000000 (rem 0000000000000000) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 80000000F0000000 = FFFFFFF800000001 (rem 000000000FFFFFFF) +dsgfr 000000000000000100000000AFFFFFFF / 80000000F0000000 = FFFFFFFFFFFFFFF6 (rem 000000000FFFFFFF) +d 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 00000000FFFFD556 (rem 0000000000000003) +d 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 00000000FFFFEAAB (rem 0000000000000001) +d 00000000000000000000000000008000 / FFFFFFFAF0000000 = 00000000FFFFEAAB (rem 0000000000000002) +d 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 00000000D5555556 (rem 0000000000000003) +d 00000000000000000000000080000000 / FFFFFFFAF0000000 = 00000000EAAAAAAB (rem 0000000000000002) +d 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 00000000EAAAAAAB (rem 0000000000000001) +d 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFD5555556 (rem 0000000000000003) +d 00000000000000008000000000000000 / FFFFFFFAF0000000 = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 7FFFFFFFD5555556 (rem 0000000000000003) +d 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 00000000B8000001 (rem 0000000000000005) +dr 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 00000000FFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000000000000080000000 / FFFFFFFAF0000000 = 00000000FFFFFFF8 (rem 0000000000000000) +dr 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 00000000FFFFFFF9 (rem 000000000FFFFFFF) +dr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 00000000000000008000000000000000 / FFFFFFFAF0000000 = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 7FFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dr 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 00000000FFFFFFE6 (rem 000000000FFFFFFF) +dl 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dl 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dl 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dl 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 0000000000000005) +dl 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dl 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dl 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFF00000001 (rem 0000000000000005) +dl 00000000000000008000000000000000 / FFFFFFFAF0000000 = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 7FFFFFFF00000001 (rem 0000000000000005) +dl 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 00000000B0000005) +dlr 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 000000000FFFFFFF) +dlr 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 00000000000000008000000000000000 / FFFFFFFAF0000000 = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 7FFFFFFF00000001 (rem 000000000FFFFFFF) +dlr 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 00000000BFFFFFFF) +dlg 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 000000050FFFFFFF) +dlg 00000000000000008000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 8000000000000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlg 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 00000005BFFFFFFF) +dlgr 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 000000050FFFFFFF) +dlgr 00000000000000008000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 8000000000000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 7FFFFFFFFFFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000001 (rem 00000005BFFFFFFF) +dsg 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / FFFFFFFAF0000000 = 000000001948B0FC (rem FFFFFFFBC0000000) +dsg 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFE6B74F04 (rem 000000043FFFFFFF) +dsg 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / FFFFFFFAF0000000 = 000000001948B0FC (rem FFFFFFFBC0000000) +dsgr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFE6B74F04 (rem 000000043FFFFFFF) +dsgr 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = FFFFFFFFFFFFD556 (rem 0000000000000003) +dsgf 00000000000000000000000000007FFF / FFFFFFFAF0000000 = FFFFFFFFFFFFEAAB (rem 0000000000000001) +dsgf 00000000000000000000000000008000 / FFFFFFFAF0000000 = FFFFFFFFFFFFEAAB (rem 0000000000000002) +dsgf 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFD5555556 (rem 0000000000000003) +dsgf 00000000000000000000000080000000 / FFFFFFFAF0000000 = FFFFFFFFEAAAAAAB (rem 0000000000000002) +dsgf 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = FFFFFFFFEAAAAAAB (rem 0000000000000001) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / FFFFFFFAF0000000 = 1555555555555555 (rem FFFFFFFFFFFFFFFE) +dsgf 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = EAAAAAAAAAAAAAAB (rem 0000000000000001) +dsgf 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFE2AAAAAB (rem 0000000000000001) +dsgfr 00000000000000000000000000000000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / FFFFFFFAF0000000 = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / FFFFFFFAF0000000 = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFFFFFFFF1 (rem 000000000FFFFFFF) +dsgfr 00000000000000000000000080000000 / FFFFFFFAF0000000 = FFFFFFFFFFFFFFF8 (rem 0000000000000000) +dsgfr 0000000000000000000000007FFFFFFF / FFFFFFFAF0000000 = FFFFFFFFFFFFFFF9 (rem 000000000FFFFFFF) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / FFFFFFFAF0000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / FFFFFFFAF0000000 = 0000000800000000 (rem 0000000000000000) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / FFFFFFFAF0000000 = FFFFFFF800000001 (rem 000000000FFFFFFF) +dsgfr 000000000000000100000000AFFFFFFF / FFFFFFFAF0000000 = FFFFFFFFFFFFFFF6 (rem 000000000FFFFFFF) +d 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000001FFF (rem 0000000000000007) +d 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000FFF (rem 0000000000000007) +d 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000001000 (rem 0000000000000000) +d 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 000000001FFFFFFF (rem 0000000000000007) +d 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000010000000 (rem 0000000000000000) +d 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 000000000FFFFFFF (rem 0000000000000007) +d 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = FFFFFFFF1FFFFFFF (rem 0000000000000007) +d 00000000000000008000000000000000 / 000000087FFFFFFF = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 7FFFFFFF1FFFFFFF (rem 0000000000000007) +d 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000035FFFFFF (rem 0000000000000007) +dr 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000002 (rem 0000000000000001) +dr 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000001) +dr 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000000) +dr 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = FFFFFFFF00000002 (rem 0000000000000001) +dr 00000000000000008000000000000000 / 000000087FFFFFFF = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 7FFFFFFF00000002 (rem 0000000000000001) +dr 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000000000003 (rem 0000000030000002) +dl 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000001FFF (rem 0000000000000007) +dl 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000FFF (rem 0000000000000007) +dl 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000001000 (rem 0000000000000000) +dl 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 000000001FFFFFFF (rem 0000000000000007) +dl 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000010000000 (rem 0000000000000000) +dl 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 000000000FFFFFFF (rem 0000000000000007) +dl 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = FFFFFFFF1FFFFFFF (rem 0000000000000007) +dl 00000000000000008000000000000000 / 000000087FFFFFFF = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 7FFFFFFF1FFFFFFF (rem 0000000000000007) +dl 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000035FFFFFF (rem 0000000000000007) +dlr 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000002 (rem 0000000000000001) +dlr 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000001) +dlr 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000000) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = FFFFFFFF00000002 (rem 0000000000000001) +dlr 00000000000000008000000000000000 / 000000087FFFFFFF = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 7FFFFFFF00000002 (rem 0000000000000001) +dlr 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000000000003 (rem 0000000030000002) +dlg 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000001E1E1E1E (rem 000000011E1E1E1D) +dlg 00000000000000008000000000000000 / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0F) +dlg 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0E) +dlg 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 000000001E1E1E1E (rem 00000001CE1E1E1D) +dlgr 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000001E1E1E1E (rem 000000011E1E1E1D) +dlgr 00000000000000008000000000000000 / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0F) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0E) +dlgr 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 000000001E1E1E1E (rem 00000001CE1E1E1D) +dsg 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 000000087FFFFFFF = FFFFFFFFF0F0F0F1 (rem FFFFFFFF70F0F0F1) +dsg 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0E) +dsg 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 000000087FFFFFFF = FFFFFFFFF0F0F0F1 (rem FFFFFFFF70F0F0F1) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 000000000F0F0F0F (rem 000000008F0F0F0E) +dsgr 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000001FFF (rem 0000000000000007) +dsgf 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000FFF (rem 0000000000000007) +dsgf 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000001000 (rem 0000000000000000) +dsgf 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 000000001FFFFFFF (rem 0000000000000007) +dsgf 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000010000000 (rem 0000000000000000) +dsgf 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 000000000FFFFFFF (rem 0000000000000007) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 000000087FFFFFFF = F000000000000000 (rem 0000000000000000) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 0FFFFFFFFFFFFFFF (rem 0000000000000007) +dsgf 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000015FFFFFF (rem 0000000000000007) +dsgfr 00000000000000000000000000000000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 000000087FFFFFFF = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / 000000087FFFFFFF = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / 000000087FFFFFFF = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / 000000087FFFFFFF = 0000000000000002 (rem 0000000000000001) +dsgfr 00000000000000000000000080000000 / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000001) +dsgfr 0000000000000000000000007FFFFFFF / 000000087FFFFFFF = 0000000000000001 (rem 0000000000000000) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 000000087FFFFFFF = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 000000087FFFFFFF = FFFFFFFEFFFFFFFE (rem FFFFFFFFFFFFFFFE) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 000000087FFFFFFF = 0000000100000002 (rem 0000000000000001) +dsgfr 000000000000000100000000AFFFFFFF / 000000087FFFFFFF = 0000000000000001 (rem 0000000030000000) +d 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000003FFF (rem 0000000000000003) +d 00000000000000000000000000007FFF / 0000000480000000 = 0000000000001FFF (rem 0000000000000003) +d 00000000000000000000000000008000 / 0000000480000000 = 0000000000002000 (rem 0000000000000000) +d 000000000000000000000000FFFFFFFF / 0000000480000000 = 000000003FFFFFFF (rem 0000000000000003) +d 00000000000000000000000080000000 / 0000000480000000 = 0000000020000000 (rem 0000000000000000) +d 0000000000000000000000007FFFFFFF / 0000000480000000 = 000000001FFFFFFF (rem 0000000000000003) +d 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = FFFFFFFF3FFFFFFF (rem 0000000000000003) +d 00000000000000008000000000000000 / 0000000480000000 = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 7FFFFFFF3FFFFFFF (rem 0000000000000003) +d 000000000000000100000000AFFFFFFF / 0000000480000000 = 000000006BFFFFFF (rem 0000000000000003) +dr 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dr 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dr 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dr 000000000000000000000000FFFFFFFF / 0000000480000000 = 00000000FFFFFFFF (rem 000000007FFFFFFF) +dr 00000000000000000000000080000000 / 0000000480000000 = 00000000FFFFFFFF (rem 0000000000000000) +dr 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dr 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +dr 00000000000000008000000000000000 / 0000000480000000 = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 7FFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +dr 000000000000000100000000AFFFFFFF / 0000000480000000 = 00000000FFFFFFFD (rem 000000002FFFFFFF) +dl 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000003FFF (rem 0000000000000003) +dl 00000000000000000000000000007FFF / 0000000480000000 = 0000000000001FFF (rem 0000000000000003) +dl 00000000000000000000000000008000 / 0000000480000000 = 0000000000002000 (rem 0000000000000000) +dl 000000000000000000000000FFFFFFFF / 0000000480000000 = 000000003FFFFFFF (rem 0000000000000003) +dl 00000000000000000000000080000000 / 0000000480000000 = 0000000020000000 (rem 0000000000000000) +dl 0000000000000000000000007FFFFFFF / 0000000480000000 = 000000001FFFFFFF (rem 0000000000000003) +dl 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = FFFFFFFF3FFFFFFF (rem 0000000000000003) +dl 00000000000000008000000000000000 / 0000000480000000 = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 7FFFFFFF3FFFFFFF (rem 0000000000000003) +dl 000000000000000100000000AFFFFFFF / 0000000480000000 = 000000006BFFFFFF (rem 0000000000000003) +dlr 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 0000000480000000 = 0000000000000001 (rem 000000007FFFFFFF) +dlr 00000000000000000000000080000000 / 0000000480000000 = 0000000000000001 (rem 0000000000000000) +dlr 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dlr 00000000000000008000000000000000 / 0000000480000000 = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 7FFFFFFF00000001 (rem 000000007FFFFFFF) +dlr 000000000000000100000000AFFFFFFF / 0000000480000000 = 0000000000000003 (rem 000000002FFFFFFF) +dlg 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 0000000480000000 = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000038E38E38 (rem 00000003FFFFFFFF) +dlg 00000000000000008000000000000000 / 0000000480000000 = 000000001C71C71C (rem 0000000200000000) +dlg 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 000000001C71C71C (rem 00000001FFFFFFFF) +dlg 000000000000000100000000AFFFFFFF / 0000000480000000 = 0000000038E38E39 (rem 000000002FFFFFFF) +dlgr 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 0000000480000000 = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000038E38E38 (rem 00000003FFFFFFFF) +dlgr 00000000000000008000000000000000 / 0000000480000000 = 000000001C71C71C (rem 0000000200000000) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 000000001C71C71C (rem 00000001FFFFFFFF) +dlgr 000000000000000100000000AFFFFFFF / 0000000480000000 = 0000000038E38E39 (rem 000000002FFFFFFF) +dsg 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 0000000480000000 = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 0000000480000000 = FFFFFFFFE38E38E4 (rem FFFFFFFE00000000) +dsg 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 000000001C71C71C (rem 00000001FFFFFFFF) +dsg 000000000000000100000000AFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 0000000480000000 = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 0000000480000000 = FFFFFFFFE38E38E4 (rem FFFFFFFE00000000) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 000000001C71C71C (rem 00000001FFFFFFFF) +dsgr 000000000000000100000000AFFFFFFF / 0000000480000000 = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000003FFF (rem 0000000000000003) +dsgf 00000000000000000000000000007FFF / 0000000480000000 = 0000000000001FFF (rem 0000000000000003) +dsgf 00000000000000000000000000008000 / 0000000480000000 = 0000000000002000 (rem 0000000000000000) +dsgf 000000000000000000000000FFFFFFFF / 0000000480000000 = 000000003FFFFFFF (rem 0000000000000003) +dsgf 00000000000000000000000080000000 / 0000000480000000 = 0000000020000000 (rem 0000000000000000) +dsgf 0000000000000000000000007FFFFFFF / 0000000480000000 = 000000001FFFFFFF (rem 0000000000000003) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 0000000480000000 = E000000000000000 (rem 0000000000000000) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = 1FFFFFFFFFFFFFFF (rem 0000000000000003) +dsgf 000000000000000100000000AFFFFFFF / 0000000480000000 = 000000002BFFFFFF (rem 0000000000000003) +dsgfr 00000000000000000000000000000000 / 0000000480000000 = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 0000000480000000 = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 0000000480000000 = 0000000000000000 (rem 000000000000FFFF) +dsgfr 00000000000000000000000000007FFF / 0000000480000000 = 0000000000000000 (rem 0000000000007FFF) +dsgfr 00000000000000000000000000008000 / 0000000480000000 = 0000000000000000 (rem 0000000000008000) +dsgfr 000000000000000000000000FFFFFFFF / 0000000480000000 = FFFFFFFFFFFFFFFF (rem 000000007FFFFFFF) +dsgfr 00000000000000000000000080000000 / 0000000480000000 = FFFFFFFFFFFFFFFF (rem 0000000000000000) +dsgfr 0000000000000000000000007FFFFFFF / 0000000480000000 = 0000000000000000 (rem 000000007FFFFFFF) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 0000000480000000 = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 0000000480000000 = 0000000100000000 (rem 0000000000000000) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 0000000480000000 = FFFFFFFF00000001 (rem 000000007FFFFFFF) +dsgfr 000000000000000100000000AFFFFFFF / 0000000480000000 = FFFFFFFFFFFFFFFF (rem 000000002FFFFFFF) +d 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +d 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +d 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000001FFF (rem 0000000000000007) +d 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000FFF (rem 0000000000000007) +d 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000001000 (rem 0000000000000000) +d 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 000000001FFFFFFF (rem 0000000000000007) +d 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000010000000 (rem 0000000000000000) +d 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 000000000FFFFFFF (rem 0000000000000007) +d 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = FFFFFFFF1FFFFFFF (rem 0000000000000007) +d 00000000000000008000000000000000 / 00000008FFFFFFFA = 8000000000000000 (rem 0000000000000000) +d 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 7FFFFFFF1FFFFFFF (rem 0000000000000007) +d 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000035FFFFFF (rem 0000000000000007) +dr 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dr 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dr 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 00000000FFFFD556 (rem 0000000000000003) +dr 00000000000000000000000000007FFF / 00000008FFFFFFFA = 00000000FFFFEAAB (rem 0000000000000001) +dr 00000000000000000000000000008000 / 00000008FFFFFFFA = 00000000FFFFEAAB (rem 0000000000000002) +dr 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 00000000D5555556 (rem 0000000000000003) +dr 00000000000000000000000080000000 / 00000008FFFFFFFA = 00000000EAAAAAAB (rem 0000000000000002) +dr 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 00000000EAAAAAAB (rem 0000000000000001) +dr 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dr 00000000000000008000000000000000 / 00000008FFFFFFFA = 8000000000000000 (rem 0000000000000000) +dr 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 7FFFFFFFD5555556 (rem 0000000000000003) +dr 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 00000000B8000001 (rem 0000000000000005) +dl 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dl 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dl 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000001FFF (rem 0000000000000007) +dl 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000FFF (rem 0000000000000007) +dl 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000001000 (rem 0000000000000000) +dl 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 000000001FFFFFFF (rem 0000000000000007) +dl 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000010000000 (rem 0000000000000000) +dl 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 000000000FFFFFFF (rem 0000000000000007) +dl 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = FFFFFFFF1FFFFFFF (rem 0000000000000007) +dl 00000000000000008000000000000000 / 00000008FFFFFFFA = 8000000000000000 (rem 0000000000000000) +dl 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 7FFFFFFF1FFFFFFF (rem 0000000000000007) +dl 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000035FFFFFF (rem 0000000000000007) +dlr 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlr 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlr 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlr 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlr 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlr 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 0000000000000001 (rem 0000000000000005) +dlr 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlr 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlr 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = FFFFFFFF00000001 (rem 0000000000000005) +dlr 00000000000000008000000000000000 / 00000008FFFFFFFA = 8000000000000000 (rem 0000000000000000) +dlr 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 7FFFFFFF00000001 (rem 0000000000000005) +dlr 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000000000001 (rem 00000000B0000005) +dlg 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlg 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlg 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlg 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlg 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlg 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlg 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlg 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlg 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000001C71C71C (rem 00000004AAAAAAA7) +dlg 00000000000000008000000000000000 / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555554) +dlg 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555553) +dlg 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 000000001C71C71C (rem 000000055AAAAAA7) +dlgr 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dlgr 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dlgr 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dlgr 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dlgr 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000008000) +dlgr 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dlgr 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000080000000) +dlgr 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dlgr 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000001C71C71C (rem 00000004AAAAAAA7) +dlgr 00000000000000008000000000000000 / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555554) +dlgr 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555553) +dlgr 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 000000001C71C71C (rem 000000055AAAAAA7) +dsg 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsg 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsg 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsg 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsg 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsg 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsg 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsg 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsg 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsg 00000000000000008000000000000000 / 00000008FFFFFFFA = FFFFFFFFF1C71C72 (rem FFFFFFFDAAAAAAAC) +dsg 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555553) +dsg 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgr 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgr 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgr 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000000000FFFF) +dsgr 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000007FFF) +dsgr 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000008000) +dsgr 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000FFFFFFFF) +dsgr 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000080000000) +dsgr 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 000000007FFFFFFF) +dsgr 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgr 00000000000000008000000000000000 / 00000008FFFFFFFA = FFFFFFFFF1C71C72 (rem FFFFFFFDAAAAAAAC) +dsgr 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 000000000E38E38E (rem 0000000255555553) +dsgr 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem 00000000AFFFFFFF) +dsgf 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgf 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgf 0000000000000000000000000000FFFF / 00000008FFFFFFFA = 0000000000001FFF (rem 0000000000000007) +dsgf 00000000000000000000000000007FFF / 00000008FFFFFFFA = 0000000000000FFF (rem 0000000000000007) +dsgf 00000000000000000000000000008000 / 00000008FFFFFFFA = 0000000000001000 (rem 0000000000000000) +dsgf 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = 000000001FFFFFFF (rem 0000000000000007) +dsgf 00000000000000000000000080000000 / 00000008FFFFFFFA = 0000000010000000 (rem 0000000000000000) +dsgf 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = 000000000FFFFFFF (rem 0000000000000007) +dsgf 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgf 00000000000000008000000000000000 / 00000008FFFFFFFA = F000000000000000 (rem 0000000000000000) +dsgf 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = 0FFFFFFFFFFFFFFF (rem 0000000000000007) +dsgf 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = 0000000015FFFFFF (rem 0000000000000007) +dsgfr 00000000000000000000000000000000 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000000) +dsgfr 00000000000000000000000000000001 / 00000008FFFFFFFA = 0000000000000000 (rem 0000000000000001) +dsgfr 0000000000000000000000000000FFFF / 00000008FFFFFFFA = FFFFFFFFFFFFD556 (rem 0000000000000003) +dsgfr 00000000000000000000000000007FFF / 00000008FFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000001) +dsgfr 00000000000000000000000000008000 / 00000008FFFFFFFA = FFFFFFFFFFFFEAAB (rem 0000000000000002) +dsgfr 000000000000000000000000FFFFFFFF / 00000008FFFFFFFA = FFFFFFFFD5555556 (rem 0000000000000003) +dsgfr 00000000000000000000000080000000 / 00000008FFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000002) +dsgfr 0000000000000000000000007FFFFFFF / 00000008FFFFFFFA = FFFFFFFFEAAAAAAB (rem 0000000000000001) +dsgfr 0000000000000000FFFFFFFFFFFFFFFF / 00000008FFFFFFFA = 0000000000000000 (rem FFFFFFFFFFFFFFFF) +dsgfr 00000000000000008000000000000000 / 00000008FFFFFFFA = 1555555555555555 (rem FFFFFFFFFFFFFFFE) +dsgfr 00000000000000007FFFFFFFFFFFFFFF / 00000008FFFFFFFA = EAAAAAAAAAAAAAAB (rem 0000000000000001) +dsgfr 000000000000000100000000AFFFFFFF / 00000008FFFFFFFA = FFFFFFFFE2AAAAAB (rem 0000000000000001) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.vgtest new file mode 100644 index 000000000..84492b428 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/div.vgtest @@ -0,0 +1 @@ +prog: div diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.c new file mode 100644 index 000000000..bd7e7f0fd --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +char source[40] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0"; +char target[40] = " \0"; + +pthread_t thread; + +void *threadfunc(void *arg) +{ + char buf2[40]; + int i; + + memset(buf2, 0, sizeof(buf2)); + for (i=0; i<5000; i++) + asm volatile( + "lghi 2,0\n" + "lghi 3,0\n" + "lgr 4,%0\n" + "lgr 5,%1\n" + "larl 1,1f\n" + "0: ex 0,0(1)\n" + "j 2f\n" + "1: mvc 0(30,4),0(5)\n" + "2:\n" + ::"a" (buf2), "a" (source) + : "1", "2", "3", "4", "5", "memory"); + printf("%s\n", buf2); + pthread_exit(0); +} + +int main() +{ + int i; + + pthread_create(&thread, NULL, threadfunc, NULL); + + for (i=0; i<5000; i++) + asm volatile( + "lghi 4,0\n" + "lghi 5,0\n" + "lgr 2,%0\n" + "lgr 3,%1\n" + "larl 1,1f\n" + "0: ex 0,0(1)\n" + "j 2f\n" + "1: mvc 0(20,2),0(3)\n" + "2:\n" + ::"a" (target), "a" (source) + : "1", "2", "3", "4", "5", "memory"); + pthread_join(thread, NULL); + printf("%s\n", target); + pthread_exit(0); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stdout.exp new file mode 100644 index 000000000..d8b0a7e7e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.stdout.exp @@ -0,0 +1,2 @@ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaa diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.vgtest new file mode 100644 index 000000000..4d3ee3572 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_clone.vgtest @@ -0,0 +1 @@ +prog: ex_clone diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.c new file mode 100644 index 000000000..9ff33fcd4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +char source[40] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0"; +char target[40] = " \0"; + +void handle_SIG(int sig) +{ + static int counter; + char buf2[40]; + + counter++; + asm volatile( "larl 1,1f\n" + "ex 0,0(1)\n" + "j 2f\n" + "1: mvc 0(30,%0),0(%1)\n" + "2:\n" + ::"a" (buf2), "a" (source) + : "1"); + if (counter == 2) { + printf("%s\n", target); + exit(1); + } else + alarm(1); +} + +int main() +{ + signal(SIGALRM, handle_SIG); + alarm(1); + + asm volatile( "larl 1,1f\n" + "0: ex 0,0(1)\n" + "j 0b\n" + "1: mvc 0(20,%0),0(%1)\n" + ::"a" (target), "a" (source) + : "1"); + exit(0); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stdout.exp new file mode 100644 index 000000000..e1626d034 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.stdout.exp @@ -0,0 +1 @@ +aaaaaaaaaaaaaaaaaaaa diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.vgtest new file mode 100644 index 000000000..436860ef5 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/ex_sig.vgtest @@ -0,0 +1 @@ +prog: ex_sig diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.c new file mode 100644 index 000000000..83d9723c0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.c @@ -0,0 +1,32 @@ +#include +#include "opcodes.h" + +int main() +{ + register long g asm("r7"); + register double f asm("f8"); + double f1; + + memset(&f1, 0x0f, sizeof(double)); + f = f1; + g = 42; + printf("test LGDR\n\n"); + printf("before g = %ld\n", g); + printf("before f = %a\n", f); + printf("copy f to g\n"); + asm volatile ( LGDR(7,8) : "=d"(g) : "f"(f)); + printf("after g = %16.16lx\n", g); /* 0x0x0x0...... */ + printf("after f = %a\n", f); + + printf("\ntest LDGR\n\n"); + f = 3.14; + printf("before g = %16.16lx\n", g); /* 0x0x0x0...... */ + printf("before f = %a\n", f); + printf("copy g to f\n"); + asm volatile ( LDGR(8,7) : "=f"(f) : "d"(g)); + printf("after g = %16.16lx\n", g); /* 0x0x0x0...... */ + printf("after f = %a\n", f); + + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stdout.exp new file mode 100644 index 000000000..242ff5ed8 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.stdout.exp @@ -0,0 +1,15 @@ +test LGDR + +before g = 42 +before f = 0x1.f0f0f0f0f0f0fp-783 +copy f to g +after g = 0f0f0f0f0f0f0f0f +after f = 0x1.f0f0f0f0f0f0fp-783 + +test LDGR + +before g = 0f0f0f0f0f0f0f0f +before f = 0x1.91eb851eb851fp+1 +copy g to f +after g = 0f0f0f0f0f0f0f0f +after f = 0x1.f0f0f0f0f0f0fp-783 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.vgtest new file mode 100644 index 000000000..7bd7dac43 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fgx.vgtest @@ -0,0 +1 @@ +prog: fgx diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/filter_stderr b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/filter_stderr new file mode 100644 index 000000000..616ce05e1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/filter_stderr @@ -0,0 +1,4 @@ +#! /bin/sh + +../filter_stderr + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.c new file mode 100644 index 000000000..72f1d5ae1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.c @@ -0,0 +1,130 @@ +#include +#include "opcodes.h" + +/* The FLOGR insn reads from register R2 and writes to register R1 and + R1 + 1. So we need to distinguish three cases: + + (1) All three registers R1, R1 + 1, and R2 are distinct + (2) R2 == R1 + (3) R2 == R1 + 1 + + These are tested by flogr1, flogr2, and flogr3, respectively. */ + +/* Call FLOGR on INPUT. The results are returned through the parms. */ + +/* R2 != R1 && R2 != R1 + 1 */ +void +flogr1(unsigned long input, unsigned long *bitpos, unsigned long *modval, + unsigned int *cc) +{ + unsigned int psw; + register unsigned long value asm("4") = input; + + asm volatile ( FLOGR(2,4) + "ipm %[psw]\n\t" + "stg 2, %[bitpos]\n\t" + "stg 3, %[modval]\n\t" + : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval), + [psw]"=d"(psw) + : [val] "d"(value) + : "2", "3", "cc"); + + *cc = psw >> 28; +#if 0 + printf("value = %lx, bitpos = %lu, modval = %lx, cc = %d\n", + value, *bitpos, *modval, *cc); +#endif +} + +/* R2 == R1 */ +void +flogr2(unsigned long input, unsigned long *bitpos, unsigned long *modval, + unsigned int *cc) +{ + unsigned int psw; + register unsigned long value asm("2") = input; + + asm volatile ( FLOGR(2,2) + "ipm %[psw]\n\t" + "stg 2, %[bitpos]\n\t" + "stg 3, %[modval]\n\t" + : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval), + [psw]"=d"(psw), [val] "+d"(value) + : + : "3", "cc"); + + *cc = psw >> 28; +#if 0 + printf("value = %lx, bitpos = %lu, modval = %lx, cc = %d\n", + value, *bitpos, *modval, *cc); +#endif +} + +/* R2 == R1 + 1 */ +void +flogr3(unsigned long input, unsigned long *bitpos, unsigned long *modval, + unsigned int *cc) +{ + unsigned int psw; + register unsigned long value asm("3") = input; + + asm volatile ( FLOGR(2,3) + "ipm %[psw]\n\t" + "stg 2, %[bitpos]\n\t" + "stg 3, %[modval]\n\t" + : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval), + [psw]"=d"(psw), [val] "+d"(value) + : + : "2", "cc"); + + *cc = psw >> 28; +#if 0 + printf("value = %lx, bitpos = %lu, modval = %lx, cc = %d\n", + value, *bitpos, *modval, *cc); +#endif +} + +void +runtest(void (*func)(unsigned long, unsigned long *, unsigned long *, + unsigned int *)) +{ + unsigned long bitpos, modval, value; + unsigned int cc; + int i; + + /* Value 0 is special */ + value = 0; + func(value, &bitpos, &modval, &cc); + if (modval != 0) fprintf(stderr, "modval is wrong for %lx\n", value); + if (bitpos != 64) fprintf(stderr, "bitpos is wrong for %lx\n", value); + if (cc != 0) fprintf(stderr, "cc is wrong for %lx\n", value); + + /* Test with exactly 1 bit set */ + for (i = 0; i < 64; ++i) { + value = 1ull << i; + func(value, &bitpos, &modval, &cc); + if (modval != 0) fprintf(stderr, "modval is wrong for %lx\n", value); + if (bitpos != 63 - i) fprintf(stderr, "bitpos is wrong for %lx\n", value); + if (cc != 2) fprintf(stderr, "cc is wrong for %lx\n", value); + } + + /* Test with all bits 1 right from first 1 bit */ + for (i = 1; i < 64; ++i) { + value = 1ull << i; + value = value | (value - 1); + func(value, &bitpos, &modval, &cc); + if (modval != (value >> 1)) fprintf(stderr, "modval is wrong for %lx\n", value); + if (bitpos != 63 - i) fprintf(stderr, "bitpos is wrong for %lx\n", value); + if (cc != 2) fprintf(stderr, "cc is wrong for %lx\n", value); + } +} + + +int main() +{ + runtest(flogr1); + runtest(flogr2); + runtest(flogr3); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.vgtest new file mode 100644 index 000000000..c5a32db66 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/flogr.vgtest @@ -0,0 +1,2 @@ +prog: flogr +prereq: test -x flogr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.c new file mode 100644 index 000000000..dfa0c8aee --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.c @@ -0,0 +1,17 @@ +#include + +int main() +{ + unsigned long p; + register unsigned long *msg = &p; + + /* Load "hi\n\0" into P; then convert the 'i' into an 'h' */ + __asm__ volatile ( "iihl %[p],0x0a00\n\t" + "iihh %[p],0x6869\n\t" + "nihh %[p],0x6868\n\t" : [p] "+d" (p) : : "cc"); + + /* Write P to stdout; should read "hh\n" */ + printf("%s", (char *)msg); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stdout.exp new file mode 100644 index 000000000..e8689b24f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.stdout.exp @@ -0,0 +1 @@ +hh diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.vgtest new file mode 100644 index 000000000..e73cf091e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/fold_And16.vgtest @@ -0,0 +1 @@ +prog: fold_And16 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.c new file mode 100644 index 000000000..c971e4cb7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.c @@ -0,0 +1,94 @@ +#include +#include "test.h" +#define icm(r1, mask, b) do {\ + asm volatile( "lg 1, 0(%0)\n" \ + "icm 1," #mask ",0(%1)\n" \ + "stg 1, 0(%0)\n" \ + :: "a" (r1), "a" (b) \ + : "1", "memory", "cc"); \ +} while(0) + +#define icmh(r1, mask, b) do {\ + asm volatile( "lg 1, 0(%0)\n" \ + "icmh 1," #mask ",0(%1)\n" \ + "stg 1, 0(%0)\n" \ + :: "a" (r1), "a" (b) \ + : "1", "memory", "cc"); \ +} while(0) + +int main() +{ + long a[320]; + char buffer[256]; + char *b1="\x80\x00\x00\x00"; + char *b2="\x00\x00\x00\x01"; + char *b3="\xff\x00\x00\x00"; + char *b4="\x00\xff\x00\x00"; + char *b5="\x00\x00\xff\x00"; + char *b6="\x00\x00\x00\xff"; + int n; + int cc; + + for (n=0; n<320; n++) + a[n] = n; + +#define test(what, offset) do { \ + icm(&a[0+offset], 0, what); cc = get_cc(); \ + icm(&a[1+offset+cc], 1, what); cc = get_cc(); \ + icm(&a[2+offset+cc], 2, what); cc = get_cc(); \ + icm(&a[3+offset+cc], 3, what); cc = get_cc(); \ + icm(&a[4+offset+cc], 4, what); cc = get_cc(); \ + icm(&a[5+offset+cc], 5, what); cc = get_cc(); \ + icm(&a[6+offset+cc], 6, what); cc = get_cc(); \ + icm(&a[7+offset+cc], 7, what); cc = get_cc(); \ + icm(&a[8+offset+cc], 8, what); cc = get_cc(); \ + icm(&a[9+offset+cc], 9, what); cc = get_cc(); \ + icm(&a[10+offset+cc], 10, what); cc = get_cc(); \ + icm(&a[11+offset+cc], 11, what); cc = get_cc(); \ + icm(&a[12+offset+cc], 12, what); cc = get_cc(); \ + icm(&a[13+offset+cc], 13, what); cc = get_cc(); \ + icm(&a[14+offset+cc], 14, what); cc = get_cc(); \ + icm(&a[15+offset+cc], 15, what); cc = get_cc(); \ + icmh(&a[0+offset+cc], 0, what); cc = get_cc(); \ + icmh(&a[1+offset+cc], 1, what); cc = get_cc(); \ + icmh(&a[2+offset+cc], 2, what); cc = get_cc(); \ + icmh(&a[3+offset+cc], 3, what); cc = get_cc(); \ + icmh(&a[4+offset+cc], 4, what); cc = get_cc(); \ + icmh(&a[5+offset+cc], 5, what); cc = get_cc(); \ + icmh(&a[6+offset+cc], 6, what); cc = get_cc(); \ + icmh(&a[7+offset+cc], 7, what); cc = get_cc(); \ + icmh(&a[8+offset+cc], 8, what); cc = get_cc(); \ + icmh(&a[9+offset+cc], 9, what); cc = get_cc(); \ + icmh(&a[10+offset+cc], 10, what); cc = get_cc(); \ + icmh(&a[11+offset+cc], 11, what); cc = get_cc(); \ + icmh(&a[12+offset+cc], 12, what); cc = get_cc(); \ + icmh(&a[13+offset+cc], 13, what); cc = get_cc(); \ + icmh(&a[14+offset+cc], 14, what); cc = get_cc(); \ + icmh(&a[15+offset+cc], 15, what); \ +} while (0) + + for (n=0; n<256; n++) + buffer[n] = n; + + test(&buffer[0],0); + test(&buffer[60],16); + test(&buffer[120],32); + test(&buffer[180],48); + test(&buffer[240],64); + test(&buffer[252],80); + test(b1,96); + test(b2,112); + for (n=0; n<256; n++) + buffer[n] = 255-n; + test(&buffer[0],128); + test(&buffer[60],144); + test(&buffer[160],160); + test(b3,176); + test(b4,192); + test(b5,208); + test(b6,224); + + dump_field((char *) a, sizeof(a)); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stdout.exp new file mode 100644 index 000000000..a27369cde --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.stdout.exp @@ -0,0 +1 @@ +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 07 00 00 01 00 00 00 01 08 00 00 01 01 00 00 01 01 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 0B 00 00 01 00 00 00 01 0C 00 00 01 02 00 00 01 02 00 01 00 00 00 01 00 0E 00 01 00 02 00 01 00 02 00 01 02 00 00 01 02 10 00 01 02 3C 00 01 02 3C 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 13 00 00 3C 00 00 00 3C 14 00 00 3C 3D 00 00 3C 3D 00 3C 00 00 00 3C 00 16 00 3C 00 3D 00 3C 00 3D 00 3C 3D 00 00 3C 3D 18 00 3C 3D 3E 00 3C 3D 3E 3C 00 00 00 3C 00 00 1A 3C 00 00 3D 3C 00 00 3D 3C 00 3D 00 3C 00 3D 1C 3C 00 3D 3E 3C 00 3D 3E 3C 3D 00 00 3C 3D 00 1E 3C 3D 00 3E 3C 3D 00 3E 3C 3D 3E 00 3C 3D 3E 20 3C 3D 3E 78 3C 3D 3E 78 00 00 00 00 00 00 00 22 00 00 00 00 00 00 00 23 00 00 78 00 00 00 78 24 00 00 78 79 00 00 78 79 00 78 00 00 00 78 00 26 00 78 00 79 00 78 00 79 00 78 79 00 00 78 79 28 00 78 79 7A 00 78 79 7A 78 00 00 00 78 00 00 2A 78 00 00 79 78 00 00 79 78 00 79 00 78 00 79 2C 78 00 79 7A 78 00 79 7A 78 79 00 00 78 79 00 2E 78 79 00 7A 78 79 00 7A 78 79 7A 00 78 79 7A 30 78 79 7A B4 78 79 7A B4 00 00 00 00 00 00 00 32 00 00 B4 00 00 00 B4 33 00 00 B4 B5 00 00 B4 B5 00 B4 00 00 00 B4 00 35 00 B4 00 B5 00 B4 00 B5 00 B4 B5 00 00 B4 B5 37 00 B4 B5 B6 00 B4 B5 B6 B4 00 00 00 B4 00 00 39 B4 00 00 B5 B4 00 00 B5 B4 00 B5 00 B4 00 B5 3B B4 00 B5 B6 B4 00 B5 B6 B4 B5 00 00 B4 B5 00 3D B4 B5 00 B6 B4 B5 00 B6 B4 B5 B6 00 B4 B5 B6 3F B4 B5 B6 B7 B4 B5 B6 B7 00 00 00 F0 00 00 00 F0 00 00 00 00 00 00 00 42 00 00 F0 00 00 00 F0 43 00 00 F0 F1 00 00 F0 F1 00 F0 00 00 00 F0 00 45 00 F0 00 F1 00 F0 00 F1 00 F0 F1 00 00 F0 F1 47 00 F0 F1 F2 00 F0 F1 F2 F0 00 00 00 F0 00 00 49 F0 00 00 F1 F0 00 00 F1 F0 00 F1 00 F0 00 F1 4B F0 00 F1 F2 F0 00 F1 F2 F0 F1 00 00 F0 F1 00 4D F0 F1 00 F2 F0 F1 00 F2 F0 F1 F2 00 F0 F1 F2 4F F0 F1 F2 F3 F0 F1 F2 F3 00 00 00 FC 00 00 00 FC 00 00 00 00 00 00 00 52 00 00 FC 00 00 00 FC 53 00 00 FC FD 00 00 FC FD 00 FC 00 00 00 FC 00 55 00 FC 00 FD 00 FC 00 FD 00 FC FD 00 00 FC FD 57 00 FC FD FE 00 FC FD FE FC 00 00 00 FC 00 00 59 FC 00 00 FD FC 00 00 FD FC 00 FD 00 FC 00 FD 5B FC 00 FD FE FC 00 FD FE FC FD 00 00 FC FD 00 5D FC FD 00 FE FC FD 00 FE FC FD FE 00 FC FD FE 5F FC FD FE FF FC FD FE FF 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 62 00 00 80 00 00 00 80 63 00 00 80 00 00 00 80 00 00 80 00 00 00 80 00 65 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 67 00 80 00 00 00 80 00 00 80 00 00 00 80 00 00 69 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 6B 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 6D 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 6F 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7E 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 80 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 82 00 00 FF 00 00 00 FF 83 00 00 FF FE 00 00 FF FE 00 FF 00 00 00 FF 00 85 00 FF 00 FE 00 FF 00 FE 00 FF FE 00 00 FF FE 87 00 FF FE FD 00 FF FE FD FF 00 00 00 FF 00 00 89 FF 00 00 FE FF 00 00 FE FF 00 FE 00 FF 00 FE 8B FF 00 FE FD FF 00 FE FD FF FE 00 00 FF FE 00 8D FF FE 00 FD FF FE 00 FD FF FE FD 00 FF FE FD 8F FF FE FD FC FF FE FD FC 00 00 00 C3 00 00 00 C3 00 00 00 00 00 00 00 92 00 00 C3 00 00 00 C3 93 00 00 C3 C2 00 00 C3 C2 00 C3 00 00 00 C3 00 95 00 C3 00 C2 00 C3 00 C2 00 C3 C2 00 00 C3 C2 97 00 C3 C2 C1 00 C3 C2 C1 C3 00 00 00 C3 00 00 99 C3 00 00 C2 C3 00 00 C2 C3 00 C2 00 C3 00 C2 9B C3 00 C2 C1 C3 00 C2 C1 C3 C2 00 00 C3 C2 00 9D C3 C2 00 C1 C3 C2 00 C1 C3 C2 C1 00 C3 C2 C1 9F C3 C2 C1 C0 C3 C2 C1 C0 00 00 00 5F 00 00 00 5F 00 00 00 00 00 00 00 A2 00 00 00 00 00 00 00 A3 00 00 5F 00 00 00 5F A4 00 00 5F 5E 00 00 5F 5E 00 5F 00 00 00 5F 00 A6 00 5F 00 5E 00 5F 00 5E 00 5F 5E 00 00 5F 5E A8 00 5F 5E 5D 00 5F 5E 5D 5F 00 00 00 5F 00 00 AA 5F 00 00 5E 5F 00 00 5E 5F 00 5E 00 5F 00 5E AC 5F 00 5E 5D 5F 00 5E 5D 5F 5E 00 00 5F 5E 00 AE 5F 5E 00 5D 5F 5E 00 5D 5F 5E 5D 00 5F 5E 5D B0 5F 5E 5D FF 5F 5E 5D FF 00 00 00 00 00 00 00 B2 00 00 FF 00 00 00 FF B3 00 00 FF 00 00 00 FF 00 00 FF 00 00 00 FF 00 B5 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 B7 00 FF 00 00 00 FF 00 00 FF 00 00 00 FF 00 00 B9 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 BB FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 BD FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 BF FF 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C2 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 C4 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 C6 00 00 00 00 00 00 00 C7 00 00 FF 00 00 00 FF C8 00 00 FF FF 00 00 FF FF 00 00 00 00 00 00 00 CA 00 00 00 00 00 00 00 CB 00 00 FF 00 00 00 FF CC 00 00 FF 00 00 00 FF 00 00 FF 00 00 00 FF 00 CE 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 D0 00 FF 00 00 00 FF 00 00 00 00 00 00 00 00 00 D2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D6 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 D8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DA 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 DC 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 DE 00 00 00 00 00 00 00 DF 00 00 FF 00 00 00 FF E0 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 00 E2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EE 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 00 F0 00 00 00 00 00 00 00 F1 00 00 00 00 00 00 00 F2 00 00 00 00 00 00 00 F3 00 00 00 00 00 00 00 F4 00 00 00 00 00 00 00 F5 00 00 00 00 00 00 00 F6 00 00 00 00 00 00 00 F7 00 00 00 00 00 00 00 F8 00 00 00 00 00 00 00 F9 00 00 00 00 00 00 00 FA 00 00 00 00 00 00 00 FB 00 00 00 00 00 00 00 FC 00 00 00 00 00 00 00 FD 00 00 00 00 00 00 00 FE 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 01 00 00 00 00 00 00 01 02 00 00 00 00 00 00 01 03 00 00 00 00 00 00 01 04 00 00 00 00 00 00 01 05 00 00 00 00 00 00 01 06 00 00 00 00 00 00 01 07 00 00 00 00 00 00 01 08 00 00 00 00 00 00 01 09 00 00 00 00 00 00 01 0A 00 00 00 00 00 00 01 0B 00 00 00 00 00 00 01 0C 00 00 00 00 00 00 01 0D 00 00 00 00 00 00 01 0E 00 00 00 00 00 00 01 0F 00 00 00 00 00 00 01 10 00 00 00 00 00 00 01 11 00 00 00 00 00 00 01 12 00 00 00 00 00 00 01 13 00 00 00 00 00 00 01 14 00 00 00 00 00 00 01 15 00 00 00 00 00 00 01 16 00 00 00 00 00 00 01 17 00 00 00 00 00 00 01 18 00 00 00 00 00 00 01 19 00 00 00 00 00 00 01 1A 00 00 00 00 00 00 01 1B 00 00 00 00 00 00 01 1C 00 00 00 00 00 00 01 1D 00 00 00 00 00 00 01 1E 00 00 00 00 00 00 01 1F 00 00 00 00 00 00 01 20 00 00 00 00 00 00 01 21 00 00 00 00 00 00 01 22 00 00 00 00 00 00 01 23 00 00 00 00 00 00 01 24 00 00 00 00 00 00 01 25 00 00 00 00 00 00 01 26 00 00 00 00 00 00 01 27 00 00 00 00 00 00 01 28 00 00 00 00 00 00 01 29 00 00 00 00 00 00 01 2A 00 00 00 00 00 00 01 2B 00 00 00 00 00 00 01 2C 00 00 00 00 00 00 01 2D 00 00 00 00 00 00 01 2E 00 00 00 00 00 00 01 2F 00 00 00 00 00 00 01 30 00 00 00 00 00 00 01 31 00 00 00 00 00 00 01 32 00 00 00 00 00 00 01 33 00 00 00 00 00 00 01 34 00 00 00 00 00 00 01 35 00 00 00 00 00 00 01 36 00 00 00 00 00 00 01 37 00 00 00 00 00 00 01 38 00 00 00 00 00 00 01 39 00 00 00 00 00 00 01 3A 00 00 00 00 00 00 01 3B 00 00 00 00 00 00 01 3C 00 00 00 00 00 00 01 3D 00 00 00 00 00 00 01 3E 00 00 00 00 00 00 01 3F \ No newline at end of file diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.vgtest new file mode 100644 index 000000000..b0709b9d1 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/icm.vgtest @@ -0,0 +1 @@ +prog: icm diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.c new file mode 100644 index 000000000..7b0995d51 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.c @@ -0,0 +1,71 @@ +#include +#include "insert.h" +#include "opcodes.h" + +#define iihh(r1,i2) ".long 0xa5" #r1 "0" #i2 "\n\t" +#define iihl(r1,i2) ".long 0xa5" #r1 "1" #i2 "\n\t" +#define iilh(r1,i2) ".long 0xa5" #r1 "2" #i2 "\n\t" +#define iill(r1,i2) ".long 0xa5" #r1 "3" #i2 "\n\t" + +static void do_imm_insns(void) +{ + immsweep(iihh, 0055); + immsweep(iihl, 0055); + immsweep(iilh, 0055); + immsweep(iill, 0055); + immsweep(iihh, 00aa); + immsweep(iihl, 00aa); + immsweep(iilh, 00aa); + immsweep(iill, 00aa); + immsweep(iihh, 00ff); + immsweep(iihl, 00ff); + immsweep(iilh, 00ff); + immsweep(iill, 00ff); + immsweep(iihh, 0000); + immsweep(iihl, 0000); + immsweep(iilh, 0000); + immsweep(iill, 0000); + immsweep(iihh, ffff); + immsweep(iihl, ffff); + immsweep(iilh, ffff); + immsweep(iill, ffff); + immsweep(iihh, aaaa); + immsweep(iihl, aaaa); + immsweep(iilh, aaaa); + immsweep(iill, aaaa); + immsweep(iihh, 5555); + immsweep(iihl, 5555); + immsweep(iilh, 5555); + immsweep(iill, 5555); +} + + +static void do_mem_insns(unsigned long s2) +{ + memsweep(ic, s2); + icysweep(s2); +} + +int main() +{ + do_mem_insns(0x0ul); + do_mem_insns(0x5555555555555555ul); + do_mem_insns(0xaaaaaaaaaaaaaaaaul); + do_mem_insns(0x8000000000000000ul); + do_mem_insns(0xfffffffffffffffful); + do_mem_insns(0x7fffffff00000000ul); + do_mem_insns(0x8000000000000000ul); + do_mem_insns(0xaaaaaaaa00000000ul); + do_mem_insns(0xffffffff00000000ul); + do_mem_insns(0x000000007ffffffful); + do_mem_insns(0x0000000080000000ul); + do_mem_insns(0x0000000055555555ul); + do_mem_insns(0x00000000fffffffful); + do_mem_insns(0x000000000000fffful); + do_mem_insns(0x0000000000007ffful); + do_mem_insns(0x0000000000008000ul); + do_mem_insns(0x000000000000fffful); + + do_imm_insns(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.h new file mode 100644 index 000000000..7074c05f0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.h @@ -0,0 +1,94 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define INSERT_REG_MEM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX <- %16.16lX = %16.16lX\n", s1, s2, tmp); \ +}) + +#define INSERT_REG_IMM(insn, s1, s2) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " %16.16lX <- %16.16lX = %16.16lX\n", s1, (unsigned long) 0x##s2, v); \ +}) + + +#define memsweep(i, s2) \ +({ \ + INSERT_REG_MEM(i, 0ul, s2); \ + INSERT_REG_MEM(i, 1ul, s2); \ + INSERT_REG_MEM(i, 0xfffful, s2); \ + INSERT_REG_MEM(i, 0x7ffful, s2); \ + INSERT_REG_MEM(i, 0x8000ul, s2); \ + INSERT_REG_MEM(i, 0xfffffffful, s2); \ + INSERT_REG_MEM(i, 0x80000000ul, s2); \ + INSERT_REG_MEM(i, 0x7ffffffful, s2); \ + INSERT_REG_MEM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + INSERT_REG_MEM(i, 0x8000000000000000ul, s2); \ + INSERT_REG_MEM(i, 0xfffffffffffffffful, s2); \ + INSERT_REG_MEM(i, 0x5555555555555555ul, s2); \ +}) + +#define immsweep(i, s2) \ +({ \ + INSERT_REG_IMM(i, 0ul, s2); \ + INSERT_REG_IMM(i, 1ul, s2); \ + INSERT_REG_IMM(i, 0xfffful, s2); \ + INSERT_REG_IMM(i, 0x7ffful, s2); \ + INSERT_REG_IMM(i, 0x8000ul, s2); \ + INSERT_REG_IMM(i, 0xfffffffful, s2); \ + INSERT_REG_IMM(i, 0x80000000ul, s2); \ + INSERT_REG_IMM(i, 0x7ffffffful, s2); \ + INSERT_REG_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + INSERT_REG_IMM(i, 0x8000000000000000ul, s2); \ + INSERT_REG_IMM(i, 0xfffffffffffffffful, s2); \ + INSERT_REG_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define INSERT_ICY(s1, s2) \ +({ \ + register unsigned long tmp asm("1") = s1; \ + register unsigned long *addr asm("2") = &s2; \ + int cc; \ + asm volatile( ICY(1,0,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2), "d" (addr) \ + : "cc"); \ + printf("icy %16.16lX <- %16.16lX = %16.16lX\n", s1, s2, tmp); \ +}) + +#define icysweep(s2) \ +({ \ + INSERT_ICY(0ul, s2); \ + INSERT_ICY(1ul, s2); \ + INSERT_ICY(0xfffful, s2); \ + INSERT_ICY(0x7ffful, s2); \ + INSERT_ICY(0x8000ul, s2); \ + INSERT_ICY(0xfffffffful, s2); \ + INSERT_ICY(0x80000000ul, s2); \ + INSERT_ICY(0x7ffffffful, s2); \ + INSERT_ICY(0xaaaaaaaaaaaaaaaaul, s2); \ + INSERT_ICY(0x8000000000000000ul, s2); \ + INSERT_ICY(0xfffffffffffffffful, s2); \ + INSERT_ICY(0x5555555555555555ul, s2); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stdout.exp new file mode 100644 index 000000000..d49126ab3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.stdout.exp @@ -0,0 +1,744 @@ +ic 0000000000000000 <- 0000000000000000 = 0000000000000000 +ic 0000000000000001 <- 0000000000000000 = 0000000000000000 +ic 000000000000FFFF <- 0000000000000000 = 000000000000FF00 +ic 0000000000007FFF <- 0000000000000000 = 0000000000007F00 +ic 0000000000008000 <- 0000000000000000 = 0000000000008000 +ic 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFFFF00 +ic 0000000080000000 <- 0000000000000000 = 0000000080000000 +ic 000000007FFFFFFF <- 0000000000000000 = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 0000000000000000 = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 0000000000000000 = 5555555555555500 +icy 0000000000000000 <- 0000000000000000 = 0000000000000000 +icy 0000000000000001 <- 0000000000000000 = 0000000000000000 +icy 000000000000FFFF <- 0000000000000000 = 000000000000FF00 +icy 0000000000007FFF <- 0000000000000000 = 0000000000007F00 +icy 0000000000008000 <- 0000000000000000 = 0000000000008000 +icy 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFFFF00 +icy 0000000080000000 <- 0000000000000000 = 0000000080000000 +icy 000000007FFFFFFF <- 0000000000000000 = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 0000000000000000 = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 0000000000000000 = 5555555555555500 +ic 0000000000000000 <- 5555555555555555 = 0000000000000055 +ic 0000000000000001 <- 5555555555555555 = 0000000000000055 +ic 000000000000FFFF <- 5555555555555555 = 000000000000FF55 +ic 0000000000007FFF <- 5555555555555555 = 0000000000007F55 +ic 0000000000008000 <- 5555555555555555 = 0000000000008055 +ic 00000000FFFFFFFF <- 5555555555555555 = 00000000FFFFFF55 +ic 0000000080000000 <- 5555555555555555 = 0000000080000055 +ic 000000007FFFFFFF <- 5555555555555555 = 000000007FFFFF55 +ic AAAAAAAAAAAAAAAA <- 5555555555555555 = AAAAAAAAAAAAAA55 +ic 8000000000000000 <- 5555555555555555 = 8000000000000055 +ic FFFFFFFFFFFFFFFF <- 5555555555555555 = FFFFFFFFFFFFFF55 +ic 5555555555555555 <- 5555555555555555 = 5555555555555555 +icy 0000000000000000 <- 5555555555555555 = 0000000000000055 +icy 0000000000000001 <- 5555555555555555 = 0000000000000055 +icy 000000000000FFFF <- 5555555555555555 = 000000000000FF55 +icy 0000000000007FFF <- 5555555555555555 = 0000000000007F55 +icy 0000000000008000 <- 5555555555555555 = 0000000000008055 +icy 00000000FFFFFFFF <- 5555555555555555 = 00000000FFFFFF55 +icy 0000000080000000 <- 5555555555555555 = 0000000080000055 +icy 000000007FFFFFFF <- 5555555555555555 = 000000007FFFFF55 +icy AAAAAAAAAAAAAAAA <- 5555555555555555 = AAAAAAAAAAAAAA55 +icy 8000000000000000 <- 5555555555555555 = 8000000000000055 +icy FFFFFFFFFFFFFFFF <- 5555555555555555 = FFFFFFFFFFFFFF55 +icy 5555555555555555 <- 5555555555555555 = 5555555555555555 +ic 0000000000000000 <- AAAAAAAAAAAAAAAA = 00000000000000AA +ic 0000000000000001 <- AAAAAAAAAAAAAAAA = 00000000000000AA +ic 000000000000FFFF <- AAAAAAAAAAAAAAAA = 000000000000FFAA +ic 0000000000007FFF <- AAAAAAAAAAAAAAAA = 0000000000007FAA +ic 0000000000008000 <- AAAAAAAAAAAAAAAA = 00000000000080AA +ic 00000000FFFFFFFF <- AAAAAAAAAAAAAAAA = 00000000FFFFFFAA +ic 0000000080000000 <- AAAAAAAAAAAAAAAA = 00000000800000AA +ic 000000007FFFFFFF <- AAAAAAAAAAAAAAAA = 000000007FFFFFAA +ic AAAAAAAAAAAAAAAA <- AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA +ic 8000000000000000 <- AAAAAAAAAAAAAAAA = 80000000000000AA +ic FFFFFFFFFFFFFFFF <- AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFAA +ic 5555555555555555 <- AAAAAAAAAAAAAAAA = 55555555555555AA +icy 0000000000000000 <- AAAAAAAAAAAAAAAA = 00000000000000AA +icy 0000000000000001 <- AAAAAAAAAAAAAAAA = 00000000000000AA +icy 000000000000FFFF <- AAAAAAAAAAAAAAAA = 000000000000FFAA +icy 0000000000007FFF <- AAAAAAAAAAAAAAAA = 0000000000007FAA +icy 0000000000008000 <- AAAAAAAAAAAAAAAA = 00000000000080AA +icy 00000000FFFFFFFF <- AAAAAAAAAAAAAAAA = 00000000FFFFFFAA +icy 0000000080000000 <- AAAAAAAAAAAAAAAA = 00000000800000AA +icy 000000007FFFFFFF <- AAAAAAAAAAAAAAAA = 000000007FFFFFAA +icy AAAAAAAAAAAAAAAA <- AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA +icy 8000000000000000 <- AAAAAAAAAAAAAAAA = 80000000000000AA +icy FFFFFFFFFFFFFFFF <- AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFAA +icy 5555555555555555 <- AAAAAAAAAAAAAAAA = 55555555555555AA +ic 0000000000000000 <- 8000000000000000 = 0000000000000080 +ic 0000000000000001 <- 8000000000000000 = 0000000000000080 +ic 000000000000FFFF <- 8000000000000000 = 000000000000FF80 +ic 0000000000007FFF <- 8000000000000000 = 0000000000007F80 +ic 0000000000008000 <- 8000000000000000 = 0000000000008080 +ic 00000000FFFFFFFF <- 8000000000000000 = 00000000FFFFFF80 +ic 0000000080000000 <- 8000000000000000 = 0000000080000080 +ic 000000007FFFFFFF <- 8000000000000000 = 000000007FFFFF80 +ic AAAAAAAAAAAAAAAA <- 8000000000000000 = AAAAAAAAAAAAAA80 +ic 8000000000000000 <- 8000000000000000 = 8000000000000080 +ic FFFFFFFFFFFFFFFF <- 8000000000000000 = FFFFFFFFFFFFFF80 +ic 5555555555555555 <- 8000000000000000 = 5555555555555580 +icy 0000000000000000 <- 8000000000000000 = 0000000000000080 +icy 0000000000000001 <- 8000000000000000 = 0000000000000080 +icy 000000000000FFFF <- 8000000000000000 = 000000000000FF80 +icy 0000000000007FFF <- 8000000000000000 = 0000000000007F80 +icy 0000000000008000 <- 8000000000000000 = 0000000000008080 +icy 00000000FFFFFFFF <- 8000000000000000 = 00000000FFFFFF80 +icy 0000000080000000 <- 8000000000000000 = 0000000080000080 +icy 000000007FFFFFFF <- 8000000000000000 = 000000007FFFFF80 +icy AAAAAAAAAAAAAAAA <- 8000000000000000 = AAAAAAAAAAAAAA80 +icy 8000000000000000 <- 8000000000000000 = 8000000000000080 +icy FFFFFFFFFFFFFFFF <- 8000000000000000 = FFFFFFFFFFFFFF80 +icy 5555555555555555 <- 8000000000000000 = 5555555555555580 +ic 0000000000000000 <- FFFFFFFFFFFFFFFF = 00000000000000FF +ic 0000000000000001 <- FFFFFFFFFFFFFFFF = 00000000000000FF +ic 000000000000FFFF <- FFFFFFFFFFFFFFFF = 000000000000FFFF +ic 0000000000007FFF <- FFFFFFFFFFFFFFFF = 0000000000007FFF +ic 0000000000008000 <- FFFFFFFFFFFFFFFF = 00000000000080FF +ic 00000000FFFFFFFF <- FFFFFFFFFFFFFFFF = 00000000FFFFFFFF +ic 0000000080000000 <- FFFFFFFFFFFFFFFF = 00000000800000FF +ic 000000007FFFFFFF <- FFFFFFFFFFFFFFFF = 000000007FFFFFFF +ic AAAAAAAAAAAAAAAA <- FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAFF +ic 8000000000000000 <- FFFFFFFFFFFFFFFF = 80000000000000FF +ic FFFFFFFFFFFFFFFF <- FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF +ic 5555555555555555 <- FFFFFFFFFFFFFFFF = 55555555555555FF +icy 0000000000000000 <- FFFFFFFFFFFFFFFF = 00000000000000FF +icy 0000000000000001 <- FFFFFFFFFFFFFFFF = 00000000000000FF +icy 000000000000FFFF <- FFFFFFFFFFFFFFFF = 000000000000FFFF +icy 0000000000007FFF <- FFFFFFFFFFFFFFFF = 0000000000007FFF +icy 0000000000008000 <- FFFFFFFFFFFFFFFF = 00000000000080FF +icy 00000000FFFFFFFF <- FFFFFFFFFFFFFFFF = 00000000FFFFFFFF +icy 0000000080000000 <- FFFFFFFFFFFFFFFF = 00000000800000FF +icy 000000007FFFFFFF <- FFFFFFFFFFFFFFFF = 000000007FFFFFFF +icy AAAAAAAAAAAAAAAA <- FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAFF +icy 8000000000000000 <- FFFFFFFFFFFFFFFF = 80000000000000FF +icy FFFFFFFFFFFFFFFF <- FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF +icy 5555555555555555 <- FFFFFFFFFFFFFFFF = 55555555555555FF +ic 0000000000000000 <- 7FFFFFFF00000000 = 000000000000007F +ic 0000000000000001 <- 7FFFFFFF00000000 = 000000000000007F +ic 000000000000FFFF <- 7FFFFFFF00000000 = 000000000000FF7F +ic 0000000000007FFF <- 7FFFFFFF00000000 = 0000000000007F7F +ic 0000000000008000 <- 7FFFFFFF00000000 = 000000000000807F +ic 00000000FFFFFFFF <- 7FFFFFFF00000000 = 00000000FFFFFF7F +ic 0000000080000000 <- 7FFFFFFF00000000 = 000000008000007F +ic 000000007FFFFFFF <- 7FFFFFFF00000000 = 000000007FFFFF7F +ic AAAAAAAAAAAAAAAA <- 7FFFFFFF00000000 = AAAAAAAAAAAAAA7F +ic 8000000000000000 <- 7FFFFFFF00000000 = 800000000000007F +ic FFFFFFFFFFFFFFFF <- 7FFFFFFF00000000 = FFFFFFFFFFFFFF7F +ic 5555555555555555 <- 7FFFFFFF00000000 = 555555555555557F +icy 0000000000000000 <- 7FFFFFFF00000000 = 000000000000007F +icy 0000000000000001 <- 7FFFFFFF00000000 = 000000000000007F +icy 000000000000FFFF <- 7FFFFFFF00000000 = 000000000000FF7F +icy 0000000000007FFF <- 7FFFFFFF00000000 = 0000000000007F7F +icy 0000000000008000 <- 7FFFFFFF00000000 = 000000000000807F +icy 00000000FFFFFFFF <- 7FFFFFFF00000000 = 00000000FFFFFF7F +icy 0000000080000000 <- 7FFFFFFF00000000 = 000000008000007F +icy 000000007FFFFFFF <- 7FFFFFFF00000000 = 000000007FFFFF7F +icy AAAAAAAAAAAAAAAA <- 7FFFFFFF00000000 = AAAAAAAAAAAAAA7F +icy 8000000000000000 <- 7FFFFFFF00000000 = 800000000000007F +icy FFFFFFFFFFFFFFFF <- 7FFFFFFF00000000 = FFFFFFFFFFFFFF7F +icy 5555555555555555 <- 7FFFFFFF00000000 = 555555555555557F +ic 0000000000000000 <- 8000000000000000 = 0000000000000080 +ic 0000000000000001 <- 8000000000000000 = 0000000000000080 +ic 000000000000FFFF <- 8000000000000000 = 000000000000FF80 +ic 0000000000007FFF <- 8000000000000000 = 0000000000007F80 +ic 0000000000008000 <- 8000000000000000 = 0000000000008080 +ic 00000000FFFFFFFF <- 8000000000000000 = 00000000FFFFFF80 +ic 0000000080000000 <- 8000000000000000 = 0000000080000080 +ic 000000007FFFFFFF <- 8000000000000000 = 000000007FFFFF80 +ic AAAAAAAAAAAAAAAA <- 8000000000000000 = AAAAAAAAAAAAAA80 +ic 8000000000000000 <- 8000000000000000 = 8000000000000080 +ic FFFFFFFFFFFFFFFF <- 8000000000000000 = FFFFFFFFFFFFFF80 +ic 5555555555555555 <- 8000000000000000 = 5555555555555580 +icy 0000000000000000 <- 8000000000000000 = 0000000000000080 +icy 0000000000000001 <- 8000000000000000 = 0000000000000080 +icy 000000000000FFFF <- 8000000000000000 = 000000000000FF80 +icy 0000000000007FFF <- 8000000000000000 = 0000000000007F80 +icy 0000000000008000 <- 8000000000000000 = 0000000000008080 +icy 00000000FFFFFFFF <- 8000000000000000 = 00000000FFFFFF80 +icy 0000000080000000 <- 8000000000000000 = 0000000080000080 +icy 000000007FFFFFFF <- 8000000000000000 = 000000007FFFFF80 +icy AAAAAAAAAAAAAAAA <- 8000000000000000 = AAAAAAAAAAAAAA80 +icy 8000000000000000 <- 8000000000000000 = 8000000000000080 +icy FFFFFFFFFFFFFFFF <- 8000000000000000 = FFFFFFFFFFFFFF80 +icy 5555555555555555 <- 8000000000000000 = 5555555555555580 +ic 0000000000000000 <- AAAAAAAA00000000 = 00000000000000AA +ic 0000000000000001 <- AAAAAAAA00000000 = 00000000000000AA +ic 000000000000FFFF <- AAAAAAAA00000000 = 000000000000FFAA +ic 0000000000007FFF <- AAAAAAAA00000000 = 0000000000007FAA +ic 0000000000008000 <- AAAAAAAA00000000 = 00000000000080AA +ic 00000000FFFFFFFF <- AAAAAAAA00000000 = 00000000FFFFFFAA +ic 0000000080000000 <- AAAAAAAA00000000 = 00000000800000AA +ic 000000007FFFFFFF <- AAAAAAAA00000000 = 000000007FFFFFAA +ic AAAAAAAAAAAAAAAA <- AAAAAAAA00000000 = AAAAAAAAAAAAAAAA +ic 8000000000000000 <- AAAAAAAA00000000 = 80000000000000AA +ic FFFFFFFFFFFFFFFF <- AAAAAAAA00000000 = FFFFFFFFFFFFFFAA +ic 5555555555555555 <- AAAAAAAA00000000 = 55555555555555AA +icy 0000000000000000 <- AAAAAAAA00000000 = 00000000000000AA +icy 0000000000000001 <- AAAAAAAA00000000 = 00000000000000AA +icy 000000000000FFFF <- AAAAAAAA00000000 = 000000000000FFAA +icy 0000000000007FFF <- AAAAAAAA00000000 = 0000000000007FAA +icy 0000000000008000 <- AAAAAAAA00000000 = 00000000000080AA +icy 00000000FFFFFFFF <- AAAAAAAA00000000 = 00000000FFFFFFAA +icy 0000000080000000 <- AAAAAAAA00000000 = 00000000800000AA +icy 000000007FFFFFFF <- AAAAAAAA00000000 = 000000007FFFFFAA +icy AAAAAAAAAAAAAAAA <- AAAAAAAA00000000 = AAAAAAAAAAAAAAAA +icy 8000000000000000 <- AAAAAAAA00000000 = 80000000000000AA +icy FFFFFFFFFFFFFFFF <- AAAAAAAA00000000 = FFFFFFFFFFFFFFAA +icy 5555555555555555 <- AAAAAAAA00000000 = 55555555555555AA +ic 0000000000000000 <- FFFFFFFF00000000 = 00000000000000FF +ic 0000000000000001 <- FFFFFFFF00000000 = 00000000000000FF +ic 000000000000FFFF <- FFFFFFFF00000000 = 000000000000FFFF +ic 0000000000007FFF <- FFFFFFFF00000000 = 0000000000007FFF +ic 0000000000008000 <- FFFFFFFF00000000 = 00000000000080FF +ic 00000000FFFFFFFF <- FFFFFFFF00000000 = 00000000FFFFFFFF +ic 0000000080000000 <- FFFFFFFF00000000 = 00000000800000FF +ic 000000007FFFFFFF <- FFFFFFFF00000000 = 000000007FFFFFFF +ic AAAAAAAAAAAAAAAA <- FFFFFFFF00000000 = AAAAAAAAAAAAAAFF +ic 8000000000000000 <- FFFFFFFF00000000 = 80000000000000FF +ic FFFFFFFFFFFFFFFF <- FFFFFFFF00000000 = FFFFFFFFFFFFFFFF +ic 5555555555555555 <- FFFFFFFF00000000 = 55555555555555FF +icy 0000000000000000 <- FFFFFFFF00000000 = 00000000000000FF +icy 0000000000000001 <- FFFFFFFF00000000 = 00000000000000FF +icy 000000000000FFFF <- FFFFFFFF00000000 = 000000000000FFFF +icy 0000000000007FFF <- FFFFFFFF00000000 = 0000000000007FFF +icy 0000000000008000 <- FFFFFFFF00000000 = 00000000000080FF +icy 00000000FFFFFFFF <- FFFFFFFF00000000 = 00000000FFFFFFFF +icy 0000000080000000 <- FFFFFFFF00000000 = 00000000800000FF +icy 000000007FFFFFFF <- FFFFFFFF00000000 = 000000007FFFFFFF +icy AAAAAAAAAAAAAAAA <- FFFFFFFF00000000 = AAAAAAAAAAAAAAFF +icy 8000000000000000 <- FFFFFFFF00000000 = 80000000000000FF +icy FFFFFFFFFFFFFFFF <- FFFFFFFF00000000 = FFFFFFFFFFFFFFFF +icy 5555555555555555 <- FFFFFFFF00000000 = 55555555555555FF +ic 0000000000000000 <- 000000007FFFFFFF = 0000000000000000 +ic 0000000000000001 <- 000000007FFFFFFF = 0000000000000000 +ic 000000000000FFFF <- 000000007FFFFFFF = 000000000000FF00 +ic 0000000000007FFF <- 000000007FFFFFFF = 0000000000007F00 +ic 0000000000008000 <- 000000007FFFFFFF = 0000000000008000 +ic 00000000FFFFFFFF <- 000000007FFFFFFF = 00000000FFFFFF00 +ic 0000000080000000 <- 000000007FFFFFFF = 0000000080000000 +ic 000000007FFFFFFF <- 000000007FFFFFFF = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 000000007FFFFFFF = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 000000007FFFFFFF = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 000000007FFFFFFF = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 000000007FFFFFFF = 5555555555555500 +icy 0000000000000000 <- 000000007FFFFFFF = 0000000000000000 +icy 0000000000000001 <- 000000007FFFFFFF = 0000000000000000 +icy 000000000000FFFF <- 000000007FFFFFFF = 000000000000FF00 +icy 0000000000007FFF <- 000000007FFFFFFF = 0000000000007F00 +icy 0000000000008000 <- 000000007FFFFFFF = 0000000000008000 +icy 00000000FFFFFFFF <- 000000007FFFFFFF = 00000000FFFFFF00 +icy 0000000080000000 <- 000000007FFFFFFF = 0000000080000000 +icy 000000007FFFFFFF <- 000000007FFFFFFF = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 000000007FFFFFFF = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 000000007FFFFFFF = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 000000007FFFFFFF = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 000000007FFFFFFF = 5555555555555500 +ic 0000000000000000 <- 0000000080000000 = 0000000000000000 +ic 0000000000000001 <- 0000000080000000 = 0000000000000000 +ic 000000000000FFFF <- 0000000080000000 = 000000000000FF00 +ic 0000000000007FFF <- 0000000080000000 = 0000000000007F00 +ic 0000000000008000 <- 0000000080000000 = 0000000000008000 +ic 00000000FFFFFFFF <- 0000000080000000 = 00000000FFFFFF00 +ic 0000000080000000 <- 0000000080000000 = 0000000080000000 +ic 000000007FFFFFFF <- 0000000080000000 = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 0000000080000000 = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 0000000080000000 = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 0000000080000000 = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 0000000080000000 = 5555555555555500 +icy 0000000000000000 <- 0000000080000000 = 0000000000000000 +icy 0000000000000001 <- 0000000080000000 = 0000000000000000 +icy 000000000000FFFF <- 0000000080000000 = 000000000000FF00 +icy 0000000000007FFF <- 0000000080000000 = 0000000000007F00 +icy 0000000000008000 <- 0000000080000000 = 0000000000008000 +icy 00000000FFFFFFFF <- 0000000080000000 = 00000000FFFFFF00 +icy 0000000080000000 <- 0000000080000000 = 0000000080000000 +icy 000000007FFFFFFF <- 0000000080000000 = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 0000000080000000 = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 0000000080000000 = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 0000000080000000 = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 0000000080000000 = 5555555555555500 +ic 0000000000000000 <- 0000000055555555 = 0000000000000000 +ic 0000000000000001 <- 0000000055555555 = 0000000000000000 +ic 000000000000FFFF <- 0000000055555555 = 000000000000FF00 +ic 0000000000007FFF <- 0000000055555555 = 0000000000007F00 +ic 0000000000008000 <- 0000000055555555 = 0000000000008000 +ic 00000000FFFFFFFF <- 0000000055555555 = 00000000FFFFFF00 +ic 0000000080000000 <- 0000000055555555 = 0000000080000000 +ic 000000007FFFFFFF <- 0000000055555555 = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 0000000055555555 = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 0000000055555555 = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 0000000055555555 = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 0000000055555555 = 5555555555555500 +icy 0000000000000000 <- 0000000055555555 = 0000000000000000 +icy 0000000000000001 <- 0000000055555555 = 0000000000000000 +icy 000000000000FFFF <- 0000000055555555 = 000000000000FF00 +icy 0000000000007FFF <- 0000000055555555 = 0000000000007F00 +icy 0000000000008000 <- 0000000055555555 = 0000000000008000 +icy 00000000FFFFFFFF <- 0000000055555555 = 00000000FFFFFF00 +icy 0000000080000000 <- 0000000055555555 = 0000000080000000 +icy 000000007FFFFFFF <- 0000000055555555 = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 0000000055555555 = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 0000000055555555 = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 0000000055555555 = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 0000000055555555 = 5555555555555500 +ic 0000000000000000 <- 00000000FFFFFFFF = 0000000000000000 +ic 0000000000000001 <- 00000000FFFFFFFF = 0000000000000000 +ic 000000000000FFFF <- 00000000FFFFFFFF = 000000000000FF00 +ic 0000000000007FFF <- 00000000FFFFFFFF = 0000000000007F00 +ic 0000000000008000 <- 00000000FFFFFFFF = 0000000000008000 +ic 00000000FFFFFFFF <- 00000000FFFFFFFF = 00000000FFFFFF00 +ic 0000000080000000 <- 00000000FFFFFFFF = 0000000080000000 +ic 000000007FFFFFFF <- 00000000FFFFFFFF = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 00000000FFFFFFFF = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 00000000FFFFFFFF = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 00000000FFFFFFFF = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 00000000FFFFFFFF = 5555555555555500 +icy 0000000000000000 <- 00000000FFFFFFFF = 0000000000000000 +icy 0000000000000001 <- 00000000FFFFFFFF = 0000000000000000 +icy 000000000000FFFF <- 00000000FFFFFFFF = 000000000000FF00 +icy 0000000000007FFF <- 00000000FFFFFFFF = 0000000000007F00 +icy 0000000000008000 <- 00000000FFFFFFFF = 0000000000008000 +icy 00000000FFFFFFFF <- 00000000FFFFFFFF = 00000000FFFFFF00 +icy 0000000080000000 <- 00000000FFFFFFFF = 0000000080000000 +icy 000000007FFFFFFF <- 00000000FFFFFFFF = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 00000000FFFFFFFF = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 00000000FFFFFFFF = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 00000000FFFFFFFF = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 00000000FFFFFFFF = 5555555555555500 +ic 0000000000000000 <- 000000000000FFFF = 0000000000000000 +ic 0000000000000001 <- 000000000000FFFF = 0000000000000000 +ic 000000000000FFFF <- 000000000000FFFF = 000000000000FF00 +ic 0000000000007FFF <- 000000000000FFFF = 0000000000007F00 +ic 0000000000008000 <- 000000000000FFFF = 0000000000008000 +ic 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFF00 +ic 0000000080000000 <- 000000000000FFFF = 0000000080000000 +ic 000000007FFFFFFF <- 000000000000FFFF = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 000000000000FFFF = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 000000000000FFFF = 5555555555555500 +icy 0000000000000000 <- 000000000000FFFF = 0000000000000000 +icy 0000000000000001 <- 000000000000FFFF = 0000000000000000 +icy 000000000000FFFF <- 000000000000FFFF = 000000000000FF00 +icy 0000000000007FFF <- 000000000000FFFF = 0000000000007F00 +icy 0000000000008000 <- 000000000000FFFF = 0000000000008000 +icy 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFF00 +icy 0000000080000000 <- 000000000000FFFF = 0000000080000000 +icy 000000007FFFFFFF <- 000000000000FFFF = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 000000000000FFFF = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 000000000000FFFF = 5555555555555500 +ic 0000000000000000 <- 0000000000007FFF = 0000000000000000 +ic 0000000000000001 <- 0000000000007FFF = 0000000000000000 +ic 000000000000FFFF <- 0000000000007FFF = 000000000000FF00 +ic 0000000000007FFF <- 0000000000007FFF = 0000000000007F00 +ic 0000000000008000 <- 0000000000007FFF = 0000000000008000 +ic 00000000FFFFFFFF <- 0000000000007FFF = 00000000FFFFFF00 +ic 0000000080000000 <- 0000000000007FFF = 0000000080000000 +ic 000000007FFFFFFF <- 0000000000007FFF = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 0000000000007FFF = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 0000000000007FFF = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 0000000000007FFF = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 0000000000007FFF = 5555555555555500 +icy 0000000000000000 <- 0000000000007FFF = 0000000000000000 +icy 0000000000000001 <- 0000000000007FFF = 0000000000000000 +icy 000000000000FFFF <- 0000000000007FFF = 000000000000FF00 +icy 0000000000007FFF <- 0000000000007FFF = 0000000000007F00 +icy 0000000000008000 <- 0000000000007FFF = 0000000000008000 +icy 00000000FFFFFFFF <- 0000000000007FFF = 00000000FFFFFF00 +icy 0000000080000000 <- 0000000000007FFF = 0000000080000000 +icy 000000007FFFFFFF <- 0000000000007FFF = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 0000000000007FFF = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 0000000000007FFF = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 0000000000007FFF = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 0000000000007FFF = 5555555555555500 +ic 0000000000000000 <- 0000000000008000 = 0000000000000000 +ic 0000000000000001 <- 0000000000008000 = 0000000000000000 +ic 000000000000FFFF <- 0000000000008000 = 000000000000FF00 +ic 0000000000007FFF <- 0000000000008000 = 0000000000007F00 +ic 0000000000008000 <- 0000000000008000 = 0000000000008000 +ic 00000000FFFFFFFF <- 0000000000008000 = 00000000FFFFFF00 +ic 0000000080000000 <- 0000000000008000 = 0000000080000000 +ic 000000007FFFFFFF <- 0000000000008000 = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 0000000000008000 = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 0000000000008000 = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 0000000000008000 = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 0000000000008000 = 5555555555555500 +icy 0000000000000000 <- 0000000000008000 = 0000000000000000 +icy 0000000000000001 <- 0000000000008000 = 0000000000000000 +icy 000000000000FFFF <- 0000000000008000 = 000000000000FF00 +icy 0000000000007FFF <- 0000000000008000 = 0000000000007F00 +icy 0000000000008000 <- 0000000000008000 = 0000000000008000 +icy 00000000FFFFFFFF <- 0000000000008000 = 00000000FFFFFF00 +icy 0000000080000000 <- 0000000000008000 = 0000000080000000 +icy 000000007FFFFFFF <- 0000000000008000 = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 0000000000008000 = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 0000000000008000 = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 0000000000008000 = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 0000000000008000 = 5555555555555500 +ic 0000000000000000 <- 000000000000FFFF = 0000000000000000 +ic 0000000000000001 <- 000000000000FFFF = 0000000000000000 +ic 000000000000FFFF <- 000000000000FFFF = 000000000000FF00 +ic 0000000000007FFF <- 000000000000FFFF = 0000000000007F00 +ic 0000000000008000 <- 000000000000FFFF = 0000000000008000 +ic 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFF00 +ic 0000000080000000 <- 000000000000FFFF = 0000000080000000 +ic 000000007FFFFFFF <- 000000000000FFFF = 000000007FFFFF00 +ic AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAAAAAAA00 +ic 8000000000000000 <- 000000000000FFFF = 8000000000000000 +ic FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFF00 +ic 5555555555555555 <- 000000000000FFFF = 5555555555555500 +icy 0000000000000000 <- 000000000000FFFF = 0000000000000000 +icy 0000000000000001 <- 000000000000FFFF = 0000000000000000 +icy 000000000000FFFF <- 000000000000FFFF = 000000000000FF00 +icy 0000000000007FFF <- 000000000000FFFF = 0000000000007F00 +icy 0000000000008000 <- 000000000000FFFF = 0000000000008000 +icy 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFF00 +icy 0000000080000000 <- 000000000000FFFF = 0000000080000000 +icy 000000007FFFFFFF <- 000000000000FFFF = 000000007FFFFF00 +icy AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAAAAAAA00 +icy 8000000000000000 <- 000000000000FFFF = 8000000000000000 +icy FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFF00 +icy 5555555555555555 <- 000000000000FFFF = 5555555555555500 +iihh 0000000000000000 <- 0000000000000055 = 0055000000000000 +iihh 0000000000000001 <- 0000000000000055 = 0055000000000001 +iihh 000000000000FFFF <- 0000000000000055 = 005500000000FFFF +iihh 0000000000007FFF <- 0000000000000055 = 0055000000007FFF +iihh 0000000000008000 <- 0000000000000055 = 0055000000008000 +iihh 00000000FFFFFFFF <- 0000000000000055 = 00550000FFFFFFFF +iihh 0000000080000000 <- 0000000000000055 = 0055000080000000 +iihh 000000007FFFFFFF <- 0000000000000055 = 005500007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 0000000000000055 = 0055AAAAAAAAAAAA +iihh 8000000000000000 <- 0000000000000055 = 0055000000000000 +iihh FFFFFFFFFFFFFFFF <- 0000000000000055 = 0055FFFFFFFFFFFF +iihh 5555555555555555 <- 0000000000000055 = 0055555555555555 +iihl 0000000000000000 <- 0000000000000055 = 0000005500000000 +iihl 0000000000000001 <- 0000000000000055 = 0000005500000001 +iihl 000000000000FFFF <- 0000000000000055 = 000000550000FFFF +iihl 0000000000007FFF <- 0000000000000055 = 0000005500007FFF +iihl 0000000000008000 <- 0000000000000055 = 0000005500008000 +iihl 00000000FFFFFFFF <- 0000000000000055 = 00000055FFFFFFFF +iihl 0000000080000000 <- 0000000000000055 = 0000005580000000 +iihl 000000007FFFFFFF <- 0000000000000055 = 000000557FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 0000000000000055 = AAAA0055AAAAAAAA +iihl 8000000000000000 <- 0000000000000055 = 8000005500000000 +iihl FFFFFFFFFFFFFFFF <- 0000000000000055 = FFFF0055FFFFFFFF +iihl 5555555555555555 <- 0000000000000055 = 5555005555555555 +iilh 0000000000000000 <- 0000000000000055 = 0000000000550000 +iilh 0000000000000001 <- 0000000000000055 = 0000000000550001 +iilh 000000000000FFFF <- 0000000000000055 = 000000000055FFFF +iilh 0000000000007FFF <- 0000000000000055 = 0000000000557FFF +iilh 0000000000008000 <- 0000000000000055 = 0000000000558000 +iilh 00000000FFFFFFFF <- 0000000000000055 = 000000000055FFFF +iilh 0000000080000000 <- 0000000000000055 = 0000000000550000 +iilh 000000007FFFFFFF <- 0000000000000055 = 000000000055FFFF +iilh AAAAAAAAAAAAAAAA <- 0000000000000055 = AAAAAAAA0055AAAA +iilh 8000000000000000 <- 0000000000000055 = 8000000000550000 +iilh FFFFFFFFFFFFFFFF <- 0000000000000055 = FFFFFFFF0055FFFF +iilh 5555555555555555 <- 0000000000000055 = 5555555500555555 +iill 0000000000000000 <- 0000000000000055 = 0000000000000055 +iill 0000000000000001 <- 0000000000000055 = 0000000000000055 +iill 000000000000FFFF <- 0000000000000055 = 0000000000000055 +iill 0000000000007FFF <- 0000000000000055 = 0000000000000055 +iill 0000000000008000 <- 0000000000000055 = 0000000000000055 +iill 00000000FFFFFFFF <- 0000000000000055 = 00000000FFFF0055 +iill 0000000080000000 <- 0000000000000055 = 0000000080000055 +iill 000000007FFFFFFF <- 0000000000000055 = 000000007FFF0055 +iill AAAAAAAAAAAAAAAA <- 0000000000000055 = AAAAAAAAAAAA0055 +iill 8000000000000000 <- 0000000000000055 = 8000000000000055 +iill FFFFFFFFFFFFFFFF <- 0000000000000055 = FFFFFFFFFFFF0055 +iill 5555555555555555 <- 0000000000000055 = 5555555555550055 +iihh 0000000000000000 <- 00000000000000AA = 00AA000000000000 +iihh 0000000000000001 <- 00000000000000AA = 00AA000000000001 +iihh 000000000000FFFF <- 00000000000000AA = 00AA00000000FFFF +iihh 0000000000007FFF <- 00000000000000AA = 00AA000000007FFF +iihh 0000000000008000 <- 00000000000000AA = 00AA000000008000 +iihh 00000000FFFFFFFF <- 00000000000000AA = 00AA0000FFFFFFFF +iihh 0000000080000000 <- 00000000000000AA = 00AA000080000000 +iihh 000000007FFFFFFF <- 00000000000000AA = 00AA00007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 00000000000000AA = 00AAAAAAAAAAAAAA +iihh 8000000000000000 <- 00000000000000AA = 00AA000000000000 +iihh FFFFFFFFFFFFFFFF <- 00000000000000AA = 00AAFFFFFFFFFFFF +iihh 5555555555555555 <- 00000000000000AA = 00AA555555555555 +iihl 0000000000000000 <- 00000000000000AA = 000000AA00000000 +iihl 0000000000000001 <- 00000000000000AA = 000000AA00000001 +iihl 000000000000FFFF <- 00000000000000AA = 000000AA0000FFFF +iihl 0000000000007FFF <- 00000000000000AA = 000000AA00007FFF +iihl 0000000000008000 <- 00000000000000AA = 000000AA00008000 +iihl 00000000FFFFFFFF <- 00000000000000AA = 000000AAFFFFFFFF +iihl 0000000080000000 <- 00000000000000AA = 000000AA80000000 +iihl 000000007FFFFFFF <- 00000000000000AA = 000000AA7FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 00000000000000AA = AAAA00AAAAAAAAAA +iihl 8000000000000000 <- 00000000000000AA = 800000AA00000000 +iihl FFFFFFFFFFFFFFFF <- 00000000000000AA = FFFF00AAFFFFFFFF +iihl 5555555555555555 <- 00000000000000AA = 555500AA55555555 +iilh 0000000000000000 <- 00000000000000AA = 0000000000AA0000 +iilh 0000000000000001 <- 00000000000000AA = 0000000000AA0001 +iilh 000000000000FFFF <- 00000000000000AA = 0000000000AAFFFF +iilh 0000000000007FFF <- 00000000000000AA = 0000000000AA7FFF +iilh 0000000000008000 <- 00000000000000AA = 0000000000AA8000 +iilh 00000000FFFFFFFF <- 00000000000000AA = 0000000000AAFFFF +iilh 0000000080000000 <- 00000000000000AA = 0000000000AA0000 +iilh 000000007FFFFFFF <- 00000000000000AA = 0000000000AAFFFF +iilh AAAAAAAAAAAAAAAA <- 00000000000000AA = AAAAAAAA00AAAAAA +iilh 8000000000000000 <- 00000000000000AA = 8000000000AA0000 +iilh FFFFFFFFFFFFFFFF <- 00000000000000AA = FFFFFFFF00AAFFFF +iilh 5555555555555555 <- 00000000000000AA = 5555555500AA5555 +iill 0000000000000000 <- 00000000000000AA = 00000000000000AA +iill 0000000000000001 <- 00000000000000AA = 00000000000000AA +iill 000000000000FFFF <- 00000000000000AA = 00000000000000AA +iill 0000000000007FFF <- 00000000000000AA = 00000000000000AA +iill 0000000000008000 <- 00000000000000AA = 00000000000000AA +iill 00000000FFFFFFFF <- 00000000000000AA = 00000000FFFF00AA +iill 0000000080000000 <- 00000000000000AA = 00000000800000AA +iill 000000007FFFFFFF <- 00000000000000AA = 000000007FFF00AA +iill AAAAAAAAAAAAAAAA <- 00000000000000AA = AAAAAAAAAAAA00AA +iill 8000000000000000 <- 00000000000000AA = 80000000000000AA +iill FFFFFFFFFFFFFFFF <- 00000000000000AA = FFFFFFFFFFFF00AA +iill 5555555555555555 <- 00000000000000AA = 55555555555500AA +iihh 0000000000000000 <- 00000000000000FF = 00FF000000000000 +iihh 0000000000000001 <- 00000000000000FF = 00FF000000000001 +iihh 000000000000FFFF <- 00000000000000FF = 00FF00000000FFFF +iihh 0000000000007FFF <- 00000000000000FF = 00FF000000007FFF +iihh 0000000000008000 <- 00000000000000FF = 00FF000000008000 +iihh 00000000FFFFFFFF <- 00000000000000FF = 00FF0000FFFFFFFF +iihh 0000000080000000 <- 00000000000000FF = 00FF000080000000 +iihh 000000007FFFFFFF <- 00000000000000FF = 00FF00007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 00000000000000FF = 00FFAAAAAAAAAAAA +iihh 8000000000000000 <- 00000000000000FF = 00FF000000000000 +iihh FFFFFFFFFFFFFFFF <- 00000000000000FF = 00FFFFFFFFFFFFFF +iihh 5555555555555555 <- 00000000000000FF = 00FF555555555555 +iihl 0000000000000000 <- 00000000000000FF = 000000FF00000000 +iihl 0000000000000001 <- 00000000000000FF = 000000FF00000001 +iihl 000000000000FFFF <- 00000000000000FF = 000000FF0000FFFF +iihl 0000000000007FFF <- 00000000000000FF = 000000FF00007FFF +iihl 0000000000008000 <- 00000000000000FF = 000000FF00008000 +iihl 00000000FFFFFFFF <- 00000000000000FF = 000000FFFFFFFFFF +iihl 0000000080000000 <- 00000000000000FF = 000000FF80000000 +iihl 000000007FFFFFFF <- 00000000000000FF = 000000FF7FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 00000000000000FF = AAAA00FFAAAAAAAA +iihl 8000000000000000 <- 00000000000000FF = 800000FF00000000 +iihl FFFFFFFFFFFFFFFF <- 00000000000000FF = FFFF00FFFFFFFFFF +iihl 5555555555555555 <- 00000000000000FF = 555500FF55555555 +iilh 0000000000000000 <- 00000000000000FF = 0000000000FF0000 +iilh 0000000000000001 <- 00000000000000FF = 0000000000FF0001 +iilh 000000000000FFFF <- 00000000000000FF = 0000000000FFFFFF +iilh 0000000000007FFF <- 00000000000000FF = 0000000000FF7FFF +iilh 0000000000008000 <- 00000000000000FF = 0000000000FF8000 +iilh 00000000FFFFFFFF <- 00000000000000FF = 0000000000FFFFFF +iilh 0000000080000000 <- 00000000000000FF = 0000000000FF0000 +iilh 000000007FFFFFFF <- 00000000000000FF = 0000000000FFFFFF +iilh AAAAAAAAAAAAAAAA <- 00000000000000FF = AAAAAAAA00FFAAAA +iilh 8000000000000000 <- 00000000000000FF = 8000000000FF0000 +iilh FFFFFFFFFFFFFFFF <- 00000000000000FF = FFFFFFFF00FFFFFF +iilh 5555555555555555 <- 00000000000000FF = 5555555500FF5555 +iill 0000000000000000 <- 00000000000000FF = 00000000000000FF +iill 0000000000000001 <- 00000000000000FF = 00000000000000FF +iill 000000000000FFFF <- 00000000000000FF = 00000000000000FF +iill 0000000000007FFF <- 00000000000000FF = 00000000000000FF +iill 0000000000008000 <- 00000000000000FF = 00000000000000FF +iill 00000000FFFFFFFF <- 00000000000000FF = 00000000FFFF00FF +iill 0000000080000000 <- 00000000000000FF = 00000000800000FF +iill 000000007FFFFFFF <- 00000000000000FF = 000000007FFF00FF +iill AAAAAAAAAAAAAAAA <- 00000000000000FF = AAAAAAAAAAAA00FF +iill 8000000000000000 <- 00000000000000FF = 80000000000000FF +iill FFFFFFFFFFFFFFFF <- 00000000000000FF = FFFFFFFFFFFF00FF +iill 5555555555555555 <- 00000000000000FF = 55555555555500FF +iihh 0000000000000000 <- 0000000000000000 = 0000000000000000 +iihh 0000000000000001 <- 0000000000000000 = 0000000000000001 +iihh 000000000000FFFF <- 0000000000000000 = 000000000000FFFF +iihh 0000000000007FFF <- 0000000000000000 = 0000000000007FFF +iihh 0000000000008000 <- 0000000000000000 = 0000000000008000 +iihh 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFFFFFF +iihh 0000000080000000 <- 0000000000000000 = 0000000080000000 +iihh 000000007FFFFFFF <- 0000000000000000 = 000000007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 0000000000000000 = 0000AAAAAAAAAAAA +iihh 8000000000000000 <- 0000000000000000 = 0000000000000000 +iihh FFFFFFFFFFFFFFFF <- 0000000000000000 = 0000FFFFFFFFFFFF +iihh 5555555555555555 <- 0000000000000000 = 0000555555555555 +iihl 0000000000000000 <- 0000000000000000 = 0000000000000000 +iihl 0000000000000001 <- 0000000000000000 = 0000000000000001 +iihl 000000000000FFFF <- 0000000000000000 = 000000000000FFFF +iihl 0000000000007FFF <- 0000000000000000 = 0000000000007FFF +iihl 0000000000008000 <- 0000000000000000 = 0000000000008000 +iihl 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFFFFFF +iihl 0000000080000000 <- 0000000000000000 = 0000000080000000 +iihl 000000007FFFFFFF <- 0000000000000000 = 000000007FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAA0000AAAAAAAA +iihl 8000000000000000 <- 0000000000000000 = 8000000000000000 +iihl FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFF0000FFFFFFFF +iihl 5555555555555555 <- 0000000000000000 = 5555000055555555 +iilh 0000000000000000 <- 0000000000000000 = 0000000000000000 +iilh 0000000000000001 <- 0000000000000000 = 0000000000000001 +iilh 000000000000FFFF <- 0000000000000000 = 000000000000FFFF +iilh 0000000000007FFF <- 0000000000000000 = 0000000000007FFF +iilh 0000000000008000 <- 0000000000000000 = 0000000000008000 +iilh 00000000FFFFFFFF <- 0000000000000000 = 000000000000FFFF +iilh 0000000080000000 <- 0000000000000000 = 0000000000000000 +iilh 000000007FFFFFFF <- 0000000000000000 = 000000000000FFFF +iilh AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAAAAAA0000AAAA +iilh 8000000000000000 <- 0000000000000000 = 8000000000000000 +iilh FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFFFFFF0000FFFF +iilh 5555555555555555 <- 0000000000000000 = 5555555500005555 +iill 0000000000000000 <- 0000000000000000 = 0000000000000000 +iill 0000000000000001 <- 0000000000000000 = 0000000000000000 +iill 000000000000FFFF <- 0000000000000000 = 0000000000000000 +iill 0000000000007FFF <- 0000000000000000 = 0000000000000000 +iill 0000000000008000 <- 0000000000000000 = 0000000000000000 +iill 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFF0000 +iill 0000000080000000 <- 0000000000000000 = 0000000080000000 +iill 000000007FFFFFFF <- 0000000000000000 = 000000007FFF0000 +iill AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAAAAAAAAAA0000 +iill 8000000000000000 <- 0000000000000000 = 8000000000000000 +iill FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFFFFFFFFFF0000 +iill 5555555555555555 <- 0000000000000000 = 5555555555550000 +iihh 0000000000000000 <- 000000000000FFFF = FFFF000000000000 +iihh 0000000000000001 <- 000000000000FFFF = FFFF000000000001 +iihh 000000000000FFFF <- 000000000000FFFF = FFFF00000000FFFF +iihh 0000000000007FFF <- 000000000000FFFF = FFFF000000007FFF +iihh 0000000000008000 <- 000000000000FFFF = FFFF000000008000 +iihh 00000000FFFFFFFF <- 000000000000FFFF = FFFF0000FFFFFFFF +iihh 0000000080000000 <- 000000000000FFFF = FFFF000080000000 +iihh 000000007FFFFFFF <- 000000000000FFFF = FFFF00007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 000000000000FFFF = FFFFAAAAAAAAAAAA +iihh 8000000000000000 <- 000000000000FFFF = FFFF000000000000 +iihh FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFFFF +iihh 5555555555555555 <- 000000000000FFFF = FFFF555555555555 +iihl 0000000000000000 <- 000000000000FFFF = 0000FFFF00000000 +iihl 0000000000000001 <- 000000000000FFFF = 0000FFFF00000001 +iihl 000000000000FFFF <- 000000000000FFFF = 0000FFFF0000FFFF +iihl 0000000000007FFF <- 000000000000FFFF = 0000FFFF00007FFF +iihl 0000000000008000 <- 000000000000FFFF = 0000FFFF00008000 +iihl 00000000FFFFFFFF <- 000000000000FFFF = 0000FFFFFFFFFFFF +iihl 0000000080000000 <- 000000000000FFFF = 0000FFFF80000000 +iihl 000000007FFFFFFF <- 000000000000FFFF = 0000FFFF7FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAFFFFAAAAAAAA +iihl 8000000000000000 <- 000000000000FFFF = 8000FFFF00000000 +iihl FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFFFF +iihl 5555555555555555 <- 000000000000FFFF = 5555FFFF55555555 +iilh 0000000000000000 <- 000000000000FFFF = 00000000FFFF0000 +iilh 0000000000000001 <- 000000000000FFFF = 00000000FFFF0001 +iilh 000000000000FFFF <- 000000000000FFFF = 00000000FFFFFFFF +iilh 0000000000007FFF <- 000000000000FFFF = 00000000FFFF7FFF +iilh 0000000000008000 <- 000000000000FFFF = 00000000FFFF8000 +iilh 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFFFF +iilh 0000000080000000 <- 000000000000FFFF = 00000000FFFF0000 +iilh 000000007FFFFFFF <- 000000000000FFFF = 00000000FFFFFFFF +iilh AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAFFFFAAAA +iilh 8000000000000000 <- 000000000000FFFF = 80000000FFFF0000 +iilh FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFFFF +iilh 5555555555555555 <- 000000000000FFFF = 55555555FFFF5555 +iill 0000000000000000 <- 000000000000FFFF = 000000000000FFFF +iill 0000000000000001 <- 000000000000FFFF = 000000000000FFFF +iill 000000000000FFFF <- 000000000000FFFF = 000000000000FFFF +iill 0000000000007FFF <- 000000000000FFFF = 000000000000FFFF +iill 0000000000008000 <- 000000000000FFFF = 000000000000FFFF +iill 00000000FFFFFFFF <- 000000000000FFFF = 00000000FFFFFFFF +iill 0000000080000000 <- 000000000000FFFF = 000000008000FFFF +iill 000000007FFFFFFF <- 000000000000FFFF = 000000007FFFFFFF +iill AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAAAAAAFFFF +iill 8000000000000000 <- 000000000000FFFF = 800000000000FFFF +iill FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFFFFFFFFFF +iill 5555555555555555 <- 000000000000FFFF = 555555555555FFFF +iihh 0000000000000000 <- 000000000000AAAA = AAAA000000000000 +iihh 0000000000000001 <- 000000000000AAAA = AAAA000000000001 +iihh 000000000000FFFF <- 000000000000AAAA = AAAA00000000FFFF +iihh 0000000000007FFF <- 000000000000AAAA = AAAA000000007FFF +iihh 0000000000008000 <- 000000000000AAAA = AAAA000000008000 +iihh 00000000FFFFFFFF <- 000000000000AAAA = AAAA0000FFFFFFFF +iihh 0000000080000000 <- 000000000000AAAA = AAAA000080000000 +iihh 000000007FFFFFFF <- 000000000000AAAA = AAAA00007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 000000000000AAAA = AAAAAAAAAAAAAAAA +iihh 8000000000000000 <- 000000000000AAAA = AAAA000000000000 +iihh FFFFFFFFFFFFFFFF <- 000000000000AAAA = AAAAFFFFFFFFFFFF +iihh 5555555555555555 <- 000000000000AAAA = AAAA555555555555 +iihl 0000000000000000 <- 000000000000AAAA = 0000AAAA00000000 +iihl 0000000000000001 <- 000000000000AAAA = 0000AAAA00000001 +iihl 000000000000FFFF <- 000000000000AAAA = 0000AAAA0000FFFF +iihl 0000000000007FFF <- 000000000000AAAA = 0000AAAA00007FFF +iihl 0000000000008000 <- 000000000000AAAA = 0000AAAA00008000 +iihl 00000000FFFFFFFF <- 000000000000AAAA = 0000AAAAFFFFFFFF +iihl 0000000080000000 <- 000000000000AAAA = 0000AAAA80000000 +iihl 000000007FFFFFFF <- 000000000000AAAA = 0000AAAA7FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 000000000000AAAA = AAAAAAAAAAAAAAAA +iihl 8000000000000000 <- 000000000000AAAA = 8000AAAA00000000 +iihl FFFFFFFFFFFFFFFF <- 000000000000AAAA = FFFFAAAAFFFFFFFF +iihl 5555555555555555 <- 000000000000AAAA = 5555AAAA55555555 +iilh 0000000000000000 <- 000000000000AAAA = 00000000AAAA0000 +iilh 0000000000000001 <- 000000000000AAAA = 00000000AAAA0001 +iilh 000000000000FFFF <- 000000000000AAAA = 00000000AAAAFFFF +iilh 0000000000007FFF <- 000000000000AAAA = 00000000AAAA7FFF +iilh 0000000000008000 <- 000000000000AAAA = 00000000AAAA8000 +iilh 00000000FFFFFFFF <- 000000000000AAAA = 00000000AAAAFFFF +iilh 0000000080000000 <- 000000000000AAAA = 00000000AAAA0000 +iilh 000000007FFFFFFF <- 000000000000AAAA = 00000000AAAAFFFF +iilh AAAAAAAAAAAAAAAA <- 000000000000AAAA = AAAAAAAAAAAAAAAA +iilh 8000000000000000 <- 000000000000AAAA = 80000000AAAA0000 +iilh FFFFFFFFFFFFFFFF <- 000000000000AAAA = FFFFFFFFAAAAFFFF +iilh 5555555555555555 <- 000000000000AAAA = 55555555AAAA5555 +iill 0000000000000000 <- 000000000000AAAA = 000000000000AAAA +iill 0000000000000001 <- 000000000000AAAA = 000000000000AAAA +iill 000000000000FFFF <- 000000000000AAAA = 000000000000AAAA +iill 0000000000007FFF <- 000000000000AAAA = 000000000000AAAA +iill 0000000000008000 <- 000000000000AAAA = 000000000000AAAA +iill 00000000FFFFFFFF <- 000000000000AAAA = 00000000FFFFAAAA +iill 0000000080000000 <- 000000000000AAAA = 000000008000AAAA +iill 000000007FFFFFFF <- 000000000000AAAA = 000000007FFFAAAA +iill AAAAAAAAAAAAAAAA <- 000000000000AAAA = AAAAAAAAAAAAAAAA +iill 8000000000000000 <- 000000000000AAAA = 800000000000AAAA +iill FFFFFFFFFFFFFFFF <- 000000000000AAAA = FFFFFFFFFFFFAAAA +iill 5555555555555555 <- 000000000000AAAA = 555555555555AAAA +iihh 0000000000000000 <- 0000000000005555 = 5555000000000000 +iihh 0000000000000001 <- 0000000000005555 = 5555000000000001 +iihh 000000000000FFFF <- 0000000000005555 = 555500000000FFFF +iihh 0000000000007FFF <- 0000000000005555 = 5555000000007FFF +iihh 0000000000008000 <- 0000000000005555 = 5555000000008000 +iihh 00000000FFFFFFFF <- 0000000000005555 = 55550000FFFFFFFF +iihh 0000000080000000 <- 0000000000005555 = 5555000080000000 +iihh 000000007FFFFFFF <- 0000000000005555 = 555500007FFFFFFF +iihh AAAAAAAAAAAAAAAA <- 0000000000005555 = 5555AAAAAAAAAAAA +iihh 8000000000000000 <- 0000000000005555 = 5555000000000000 +iihh FFFFFFFFFFFFFFFF <- 0000000000005555 = 5555FFFFFFFFFFFF +iihh 5555555555555555 <- 0000000000005555 = 5555555555555555 +iihl 0000000000000000 <- 0000000000005555 = 0000555500000000 +iihl 0000000000000001 <- 0000000000005555 = 0000555500000001 +iihl 000000000000FFFF <- 0000000000005555 = 000055550000FFFF +iihl 0000000000007FFF <- 0000000000005555 = 0000555500007FFF +iihl 0000000000008000 <- 0000000000005555 = 0000555500008000 +iihl 00000000FFFFFFFF <- 0000000000005555 = 00005555FFFFFFFF +iihl 0000000080000000 <- 0000000000005555 = 0000555580000000 +iihl 000000007FFFFFFF <- 0000000000005555 = 000055557FFFFFFF +iihl AAAAAAAAAAAAAAAA <- 0000000000005555 = AAAA5555AAAAAAAA +iihl 8000000000000000 <- 0000000000005555 = 8000555500000000 +iihl FFFFFFFFFFFFFFFF <- 0000000000005555 = FFFF5555FFFFFFFF +iihl 5555555555555555 <- 0000000000005555 = 5555555555555555 +iilh 0000000000000000 <- 0000000000005555 = 0000000055550000 +iilh 0000000000000001 <- 0000000000005555 = 0000000055550001 +iilh 000000000000FFFF <- 0000000000005555 = 000000005555FFFF +iilh 0000000000007FFF <- 0000000000005555 = 0000000055557FFF +iilh 0000000000008000 <- 0000000000005555 = 0000000055558000 +iilh 00000000FFFFFFFF <- 0000000000005555 = 000000005555FFFF +iilh 0000000080000000 <- 0000000000005555 = 0000000055550000 +iilh 000000007FFFFFFF <- 0000000000005555 = 000000005555FFFF +iilh AAAAAAAAAAAAAAAA <- 0000000000005555 = AAAAAAAA5555AAAA +iilh 8000000000000000 <- 0000000000005555 = 8000000055550000 +iilh FFFFFFFFFFFFFFFF <- 0000000000005555 = FFFFFFFF5555FFFF +iilh 5555555555555555 <- 0000000000005555 = 5555555555555555 +iill 0000000000000000 <- 0000000000005555 = 0000000000005555 +iill 0000000000000001 <- 0000000000005555 = 0000000000005555 +iill 000000000000FFFF <- 0000000000005555 = 0000000000005555 +iill 0000000000007FFF <- 0000000000005555 = 0000000000005555 +iill 0000000000008000 <- 0000000000005555 = 0000000000005555 +iill 00000000FFFFFFFF <- 0000000000005555 = 00000000FFFF5555 +iill 0000000080000000 <- 0000000000005555 = 0000000080005555 +iill 000000007FFFFFFF <- 0000000000005555 = 000000007FFF5555 +iill AAAAAAAAAAAAAAAA <- 0000000000005555 = AAAAAAAAAAAA5555 +iill 8000000000000000 <- 0000000000005555 = 8000000000005555 +iill FFFFFFFFFFFFFFFF <- 0000000000005555 = FFFFFFFFFFFF5555 +iill 5555555555555555 <- 0000000000005555 = 5555555555555555 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.vgtest new file mode 100644 index 000000000..f32f41120 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert.vgtest @@ -0,0 +1 @@ +prog: insert diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.c new file mode 100644 index 000000000..4504ae803 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.c @@ -0,0 +1,39 @@ +#include +#include "insert.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(IIHF, 00000000); + immsweep(IIHF, 000000ff); + immsweep(IIHF, 00000055); + immsweep(IIHF, 000000aa); + immsweep(IIHF, 0000ffff); + immsweep(IIHF, 00005555); + immsweep(IIHF, 0000aaaa); + immsweep(IIHF, ffff0000); + immsweep(IIHF, 55550000); + immsweep(IIHF, aaaa0000); + immsweep(IIHF, ffffffff); + immsweep(IIHF, 55555555); + immsweep(IIHF, aaaaaaaa); + immsweep(IILF, 00000000); + immsweep(IILF, 000000ff); + immsweep(IILF, 00000055); + immsweep(IILF, 000000aa); + immsweep(IILF, 0000ffff); + immsweep(IILF, 00005555); + immsweep(IILF, 0000aaaa); + immsweep(IILF, ffff0000); + immsweep(IILF, 55550000); + immsweep(IILF, aaaa0000); + immsweep(IILF, ffffffff); + immsweep(IILF, 55555555); + immsweep(IILF, aaaaaaaa); +} + +int main() +{ + do_imm_insns(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stdout.exp new file mode 100644 index 000000000..1497b7cd6 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.stdout.exp @@ -0,0 +1,312 @@ +IIHF 0000000000000000 <- 0000000000000000 = 0000000000000000 +IIHF 0000000000000001 <- 0000000000000000 = 0000000000000001 +IIHF 000000000000FFFF <- 0000000000000000 = 000000000000FFFF +IIHF 0000000000007FFF <- 0000000000000000 = 0000000000007FFF +IIHF 0000000000008000 <- 0000000000000000 = 0000000000008000 +IIHF 00000000FFFFFFFF <- 0000000000000000 = 00000000FFFFFFFF +IIHF 0000000080000000 <- 0000000000000000 = 0000000080000000 +IIHF 000000007FFFFFFF <- 0000000000000000 = 000000007FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 0000000000000000 = 00000000AAAAAAAA +IIHF 8000000000000000 <- 0000000000000000 = 0000000000000000 +IIHF FFFFFFFFFFFFFFFF <- 0000000000000000 = 00000000FFFFFFFF +IIHF 5555555555555555 <- 0000000000000000 = 0000000055555555 +IIHF 0000000000000000 <- 00000000000000FF = 000000FF00000000 +IIHF 0000000000000001 <- 00000000000000FF = 000000FF00000001 +IIHF 000000000000FFFF <- 00000000000000FF = 000000FF0000FFFF +IIHF 0000000000007FFF <- 00000000000000FF = 000000FF00007FFF +IIHF 0000000000008000 <- 00000000000000FF = 000000FF00008000 +IIHF 00000000FFFFFFFF <- 00000000000000FF = 000000FFFFFFFFFF +IIHF 0000000080000000 <- 00000000000000FF = 000000FF80000000 +IIHF 000000007FFFFFFF <- 00000000000000FF = 000000FF7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000000000FF = 000000FFAAAAAAAA +IIHF 8000000000000000 <- 00000000000000FF = 000000FF00000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000000000FF = 000000FFFFFFFFFF +IIHF 5555555555555555 <- 00000000000000FF = 000000FF55555555 +IIHF 0000000000000000 <- 0000000000000055 = 0000005500000000 +IIHF 0000000000000001 <- 0000000000000055 = 0000005500000001 +IIHF 000000000000FFFF <- 0000000000000055 = 000000550000FFFF +IIHF 0000000000007FFF <- 0000000000000055 = 0000005500007FFF +IIHF 0000000000008000 <- 0000000000000055 = 0000005500008000 +IIHF 00000000FFFFFFFF <- 0000000000000055 = 00000055FFFFFFFF +IIHF 0000000080000000 <- 0000000000000055 = 0000005580000000 +IIHF 000000007FFFFFFF <- 0000000000000055 = 000000557FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 0000000000000055 = 00000055AAAAAAAA +IIHF 8000000000000000 <- 0000000000000055 = 0000005500000000 +IIHF FFFFFFFFFFFFFFFF <- 0000000000000055 = 00000055FFFFFFFF +IIHF 5555555555555555 <- 0000000000000055 = 0000005555555555 +IIHF 0000000000000000 <- 00000000000000AA = 000000AA00000000 +IIHF 0000000000000001 <- 00000000000000AA = 000000AA00000001 +IIHF 000000000000FFFF <- 00000000000000AA = 000000AA0000FFFF +IIHF 0000000000007FFF <- 00000000000000AA = 000000AA00007FFF +IIHF 0000000000008000 <- 00000000000000AA = 000000AA00008000 +IIHF 00000000FFFFFFFF <- 00000000000000AA = 000000AAFFFFFFFF +IIHF 0000000080000000 <- 00000000000000AA = 000000AA80000000 +IIHF 000000007FFFFFFF <- 00000000000000AA = 000000AA7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000000000AA = 000000AAAAAAAAAA +IIHF 8000000000000000 <- 00000000000000AA = 000000AA00000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000000000AA = 000000AAFFFFFFFF +IIHF 5555555555555555 <- 00000000000000AA = 000000AA55555555 +IIHF 0000000000000000 <- 000000000000FFFF = 0000FFFF00000000 +IIHF 0000000000000001 <- 000000000000FFFF = 0000FFFF00000001 +IIHF 000000000000FFFF <- 000000000000FFFF = 0000FFFF0000FFFF +IIHF 0000000000007FFF <- 000000000000FFFF = 0000FFFF00007FFF +IIHF 0000000000008000 <- 000000000000FFFF = 0000FFFF00008000 +IIHF 00000000FFFFFFFF <- 000000000000FFFF = 0000FFFFFFFFFFFF +IIHF 0000000080000000 <- 000000000000FFFF = 0000FFFF80000000 +IIHF 000000007FFFFFFF <- 000000000000FFFF = 0000FFFF7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 000000000000FFFF = 0000FFFFAAAAAAAA +IIHF 8000000000000000 <- 000000000000FFFF = 0000FFFF00000000 +IIHF FFFFFFFFFFFFFFFF <- 000000000000FFFF = 0000FFFFFFFFFFFF +IIHF 5555555555555555 <- 000000000000FFFF = 0000FFFF55555555 +IIHF 0000000000000000 <- 0000000000005555 = 0000555500000000 +IIHF 0000000000000001 <- 0000000000005555 = 0000555500000001 +IIHF 000000000000FFFF <- 0000000000005555 = 000055550000FFFF +IIHF 0000000000007FFF <- 0000000000005555 = 0000555500007FFF +IIHF 0000000000008000 <- 0000000000005555 = 0000555500008000 +IIHF 00000000FFFFFFFF <- 0000000000005555 = 00005555FFFFFFFF +IIHF 0000000080000000 <- 0000000000005555 = 0000555580000000 +IIHF 000000007FFFFFFF <- 0000000000005555 = 000055557FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 0000000000005555 = 00005555AAAAAAAA +IIHF 8000000000000000 <- 0000000000005555 = 0000555500000000 +IIHF FFFFFFFFFFFFFFFF <- 0000000000005555 = 00005555FFFFFFFF +IIHF 5555555555555555 <- 0000000000005555 = 0000555555555555 +IIHF 0000000000000000 <- 000000000000AAAA = 0000AAAA00000000 +IIHF 0000000000000001 <- 000000000000AAAA = 0000AAAA00000001 +IIHF 000000000000FFFF <- 000000000000AAAA = 0000AAAA0000FFFF +IIHF 0000000000007FFF <- 000000000000AAAA = 0000AAAA00007FFF +IIHF 0000000000008000 <- 000000000000AAAA = 0000AAAA00008000 +IIHF 00000000FFFFFFFF <- 000000000000AAAA = 0000AAAAFFFFFFFF +IIHF 0000000080000000 <- 000000000000AAAA = 0000AAAA80000000 +IIHF 000000007FFFFFFF <- 000000000000AAAA = 0000AAAA7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 000000000000AAAA = 0000AAAAAAAAAAAA +IIHF 8000000000000000 <- 000000000000AAAA = 0000AAAA00000000 +IIHF FFFFFFFFFFFFFFFF <- 000000000000AAAA = 0000AAAAFFFFFFFF +IIHF 5555555555555555 <- 000000000000AAAA = 0000AAAA55555555 +IIHF 0000000000000000 <- 00000000FFFF0000 = FFFF000000000000 +IIHF 0000000000000001 <- 00000000FFFF0000 = FFFF000000000001 +IIHF 000000000000FFFF <- 00000000FFFF0000 = FFFF00000000FFFF +IIHF 0000000000007FFF <- 00000000FFFF0000 = FFFF000000007FFF +IIHF 0000000000008000 <- 00000000FFFF0000 = FFFF000000008000 +IIHF 00000000FFFFFFFF <- 00000000FFFF0000 = FFFF0000FFFFFFFF +IIHF 0000000080000000 <- 00000000FFFF0000 = FFFF000080000000 +IIHF 000000007FFFFFFF <- 00000000FFFF0000 = FFFF00007FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000FFFF0000 = FFFF0000AAAAAAAA +IIHF 8000000000000000 <- 00000000FFFF0000 = FFFF000000000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000FFFF0000 = FFFF0000FFFFFFFF +IIHF 5555555555555555 <- 00000000FFFF0000 = FFFF000055555555 +IIHF 0000000000000000 <- 0000000055550000 = 5555000000000000 +IIHF 0000000000000001 <- 0000000055550000 = 5555000000000001 +IIHF 000000000000FFFF <- 0000000055550000 = 555500000000FFFF +IIHF 0000000000007FFF <- 0000000055550000 = 5555000000007FFF +IIHF 0000000000008000 <- 0000000055550000 = 5555000000008000 +IIHF 00000000FFFFFFFF <- 0000000055550000 = 55550000FFFFFFFF +IIHF 0000000080000000 <- 0000000055550000 = 5555000080000000 +IIHF 000000007FFFFFFF <- 0000000055550000 = 555500007FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 0000000055550000 = 55550000AAAAAAAA +IIHF 8000000000000000 <- 0000000055550000 = 5555000000000000 +IIHF FFFFFFFFFFFFFFFF <- 0000000055550000 = 55550000FFFFFFFF +IIHF 5555555555555555 <- 0000000055550000 = 5555000055555555 +IIHF 0000000000000000 <- 00000000AAAA0000 = AAAA000000000000 +IIHF 0000000000000001 <- 00000000AAAA0000 = AAAA000000000001 +IIHF 000000000000FFFF <- 00000000AAAA0000 = AAAA00000000FFFF +IIHF 0000000000007FFF <- 00000000AAAA0000 = AAAA000000007FFF +IIHF 0000000000008000 <- 00000000AAAA0000 = AAAA000000008000 +IIHF 00000000FFFFFFFF <- 00000000AAAA0000 = AAAA0000FFFFFFFF +IIHF 0000000080000000 <- 00000000AAAA0000 = AAAA000080000000 +IIHF 000000007FFFFFFF <- 00000000AAAA0000 = AAAA00007FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000AAAA0000 = AAAA0000AAAAAAAA +IIHF 8000000000000000 <- 00000000AAAA0000 = AAAA000000000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000AAAA0000 = AAAA0000FFFFFFFF +IIHF 5555555555555555 <- 00000000AAAA0000 = AAAA000055555555 +IIHF 0000000000000000 <- 00000000FFFFFFFF = FFFFFFFF00000000 +IIHF 0000000000000001 <- 00000000FFFFFFFF = FFFFFFFF00000001 +IIHF 000000000000FFFF <- 00000000FFFFFFFF = FFFFFFFF0000FFFF +IIHF 0000000000007FFF <- 00000000FFFFFFFF = FFFFFFFF00007FFF +IIHF 0000000000008000 <- 00000000FFFFFFFF = FFFFFFFF00008000 +IIHF 00000000FFFFFFFF <- 00000000FFFFFFFF = FFFFFFFFFFFFFFFF +IIHF 0000000080000000 <- 00000000FFFFFFFF = FFFFFFFF80000000 +IIHF 000000007FFFFFFF <- 00000000FFFFFFFF = FFFFFFFF7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000FFFFFFFF = FFFFFFFFAAAAAAAA +IIHF 8000000000000000 <- 00000000FFFFFFFF = FFFFFFFF00000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000FFFFFFFF = FFFFFFFFFFFFFFFF +IIHF 5555555555555555 <- 00000000FFFFFFFF = FFFFFFFF55555555 +IIHF 0000000000000000 <- 0000000055555555 = 5555555500000000 +IIHF 0000000000000001 <- 0000000055555555 = 5555555500000001 +IIHF 000000000000FFFF <- 0000000055555555 = 555555550000FFFF +IIHF 0000000000007FFF <- 0000000055555555 = 5555555500007FFF +IIHF 0000000000008000 <- 0000000055555555 = 5555555500008000 +IIHF 00000000FFFFFFFF <- 0000000055555555 = 55555555FFFFFFFF +IIHF 0000000080000000 <- 0000000055555555 = 5555555580000000 +IIHF 000000007FFFFFFF <- 0000000055555555 = 555555557FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 0000000055555555 = 55555555AAAAAAAA +IIHF 8000000000000000 <- 0000000055555555 = 5555555500000000 +IIHF FFFFFFFFFFFFFFFF <- 0000000055555555 = 55555555FFFFFFFF +IIHF 5555555555555555 <- 0000000055555555 = 5555555555555555 +IIHF 0000000000000000 <- 00000000AAAAAAAA = AAAAAAAA00000000 +IIHF 0000000000000001 <- 00000000AAAAAAAA = AAAAAAAA00000001 +IIHF 000000000000FFFF <- 00000000AAAAAAAA = AAAAAAAA0000FFFF +IIHF 0000000000007FFF <- 00000000AAAAAAAA = AAAAAAAA00007FFF +IIHF 0000000000008000 <- 00000000AAAAAAAA = AAAAAAAA00008000 +IIHF 00000000FFFFFFFF <- 00000000AAAAAAAA = AAAAAAAAFFFFFFFF +IIHF 0000000080000000 <- 00000000AAAAAAAA = AAAAAAAA80000000 +IIHF 000000007FFFFFFF <- 00000000AAAAAAAA = AAAAAAAA7FFFFFFF +IIHF AAAAAAAAAAAAAAAA <- 00000000AAAAAAAA = AAAAAAAAAAAAAAAA +IIHF 8000000000000000 <- 00000000AAAAAAAA = AAAAAAAA00000000 +IIHF FFFFFFFFFFFFFFFF <- 00000000AAAAAAAA = AAAAAAAAFFFFFFFF +IIHF 5555555555555555 <- 00000000AAAAAAAA = AAAAAAAA55555555 +IILF 0000000000000000 <- 0000000000000000 = 0000000000000000 +IILF 0000000000000001 <- 0000000000000000 = 0000000000000000 +IILF 000000000000FFFF <- 0000000000000000 = 0000000000000000 +IILF 0000000000007FFF <- 0000000000000000 = 0000000000000000 +IILF 0000000000008000 <- 0000000000000000 = 0000000000000000 +IILF 00000000FFFFFFFF <- 0000000000000000 = 0000000000000000 +IILF 0000000080000000 <- 0000000000000000 = 0000000000000000 +IILF 000000007FFFFFFF <- 0000000000000000 = 0000000000000000 +IILF AAAAAAAAAAAAAAAA <- 0000000000000000 = AAAAAAAA00000000 +IILF 8000000000000000 <- 0000000000000000 = 8000000000000000 +IILF FFFFFFFFFFFFFFFF <- 0000000000000000 = FFFFFFFF00000000 +IILF 5555555555555555 <- 0000000000000000 = 5555555500000000 +IILF 0000000000000000 <- 00000000000000FF = 00000000000000FF +IILF 0000000000000001 <- 00000000000000FF = 00000000000000FF +IILF 000000000000FFFF <- 00000000000000FF = 00000000000000FF +IILF 0000000000007FFF <- 00000000000000FF = 00000000000000FF +IILF 0000000000008000 <- 00000000000000FF = 00000000000000FF +IILF 00000000FFFFFFFF <- 00000000000000FF = 00000000000000FF +IILF 0000000080000000 <- 00000000000000FF = 00000000000000FF +IILF 000000007FFFFFFF <- 00000000000000FF = 00000000000000FF +IILF AAAAAAAAAAAAAAAA <- 00000000000000FF = AAAAAAAA000000FF +IILF 8000000000000000 <- 00000000000000FF = 80000000000000FF +IILF FFFFFFFFFFFFFFFF <- 00000000000000FF = FFFFFFFF000000FF +IILF 5555555555555555 <- 00000000000000FF = 55555555000000FF +IILF 0000000000000000 <- 0000000000000055 = 0000000000000055 +IILF 0000000000000001 <- 0000000000000055 = 0000000000000055 +IILF 000000000000FFFF <- 0000000000000055 = 0000000000000055 +IILF 0000000000007FFF <- 0000000000000055 = 0000000000000055 +IILF 0000000000008000 <- 0000000000000055 = 0000000000000055 +IILF 00000000FFFFFFFF <- 0000000000000055 = 0000000000000055 +IILF 0000000080000000 <- 0000000000000055 = 0000000000000055 +IILF 000000007FFFFFFF <- 0000000000000055 = 0000000000000055 +IILF AAAAAAAAAAAAAAAA <- 0000000000000055 = AAAAAAAA00000055 +IILF 8000000000000000 <- 0000000000000055 = 8000000000000055 +IILF FFFFFFFFFFFFFFFF <- 0000000000000055 = FFFFFFFF00000055 +IILF 5555555555555555 <- 0000000000000055 = 5555555500000055 +IILF 0000000000000000 <- 00000000000000AA = 00000000000000AA +IILF 0000000000000001 <- 00000000000000AA = 00000000000000AA +IILF 000000000000FFFF <- 00000000000000AA = 00000000000000AA +IILF 0000000000007FFF <- 00000000000000AA = 00000000000000AA +IILF 0000000000008000 <- 00000000000000AA = 00000000000000AA +IILF 00000000FFFFFFFF <- 00000000000000AA = 00000000000000AA +IILF 0000000080000000 <- 00000000000000AA = 00000000000000AA +IILF 000000007FFFFFFF <- 00000000000000AA = 00000000000000AA +IILF AAAAAAAAAAAAAAAA <- 00000000000000AA = AAAAAAAA000000AA +IILF 8000000000000000 <- 00000000000000AA = 80000000000000AA +IILF FFFFFFFFFFFFFFFF <- 00000000000000AA = FFFFFFFF000000AA +IILF 5555555555555555 <- 00000000000000AA = 55555555000000AA +IILF 0000000000000000 <- 000000000000FFFF = 000000000000FFFF +IILF 0000000000000001 <- 000000000000FFFF = 000000000000FFFF +IILF 000000000000FFFF <- 000000000000FFFF = 000000000000FFFF +IILF 0000000000007FFF <- 000000000000FFFF = 000000000000FFFF +IILF 0000000000008000 <- 000000000000FFFF = 000000000000FFFF +IILF 00000000FFFFFFFF <- 000000000000FFFF = 000000000000FFFF +IILF 0000000080000000 <- 000000000000FFFF = 000000000000FFFF +IILF 000000007FFFFFFF <- 000000000000FFFF = 000000000000FFFF +IILF AAAAAAAAAAAAAAAA <- 000000000000FFFF = AAAAAAAA0000FFFF +IILF 8000000000000000 <- 000000000000FFFF = 800000000000FFFF +IILF FFFFFFFFFFFFFFFF <- 000000000000FFFF = FFFFFFFF0000FFFF +IILF 5555555555555555 <- 000000000000FFFF = 555555550000FFFF +IILF 0000000000000000 <- 0000000000005555 = 0000000000005555 +IILF 0000000000000001 <- 0000000000005555 = 0000000000005555 +IILF 000000000000FFFF <- 0000000000005555 = 0000000000005555 +IILF 0000000000007FFF <- 0000000000005555 = 0000000000005555 +IILF 0000000000008000 <- 0000000000005555 = 0000000000005555 +IILF 00000000FFFFFFFF <- 0000000000005555 = 0000000000005555 +IILF 0000000080000000 <- 0000000000005555 = 0000000000005555 +IILF 000000007FFFFFFF <- 0000000000005555 = 0000000000005555 +IILF AAAAAAAAAAAAAAAA <- 0000000000005555 = AAAAAAAA00005555 +IILF 8000000000000000 <- 0000000000005555 = 8000000000005555 +IILF FFFFFFFFFFFFFFFF <- 0000000000005555 = FFFFFFFF00005555 +IILF 5555555555555555 <- 0000000000005555 = 5555555500005555 +IILF 0000000000000000 <- 000000000000AAAA = 000000000000AAAA +IILF 0000000000000001 <- 000000000000AAAA = 000000000000AAAA +IILF 000000000000FFFF <- 000000000000AAAA = 000000000000AAAA +IILF 0000000000007FFF <- 000000000000AAAA = 000000000000AAAA +IILF 0000000000008000 <- 000000000000AAAA = 000000000000AAAA +IILF 00000000FFFFFFFF <- 000000000000AAAA = 000000000000AAAA +IILF 0000000080000000 <- 000000000000AAAA = 000000000000AAAA +IILF 000000007FFFFFFF <- 000000000000AAAA = 000000000000AAAA +IILF AAAAAAAAAAAAAAAA <- 000000000000AAAA = AAAAAAAA0000AAAA +IILF 8000000000000000 <- 000000000000AAAA = 800000000000AAAA +IILF FFFFFFFFFFFFFFFF <- 000000000000AAAA = FFFFFFFF0000AAAA +IILF 5555555555555555 <- 000000000000AAAA = 555555550000AAAA +IILF 0000000000000000 <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 0000000000000001 <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 000000000000FFFF <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 0000000000007FFF <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 0000000000008000 <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 00000000FFFFFFFF <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 0000000080000000 <- 00000000FFFF0000 = 00000000FFFF0000 +IILF 000000007FFFFFFF <- 00000000FFFF0000 = 00000000FFFF0000 +IILF AAAAAAAAAAAAAAAA <- 00000000FFFF0000 = AAAAAAAAFFFF0000 +IILF 8000000000000000 <- 00000000FFFF0000 = 80000000FFFF0000 +IILF FFFFFFFFFFFFFFFF <- 00000000FFFF0000 = FFFFFFFFFFFF0000 +IILF 5555555555555555 <- 00000000FFFF0000 = 55555555FFFF0000 +IILF 0000000000000000 <- 0000000055550000 = 0000000055550000 +IILF 0000000000000001 <- 0000000055550000 = 0000000055550000 +IILF 000000000000FFFF <- 0000000055550000 = 0000000055550000 +IILF 0000000000007FFF <- 0000000055550000 = 0000000055550000 +IILF 0000000000008000 <- 0000000055550000 = 0000000055550000 +IILF 00000000FFFFFFFF <- 0000000055550000 = 0000000055550000 +IILF 0000000080000000 <- 0000000055550000 = 0000000055550000 +IILF 000000007FFFFFFF <- 0000000055550000 = 0000000055550000 +IILF AAAAAAAAAAAAAAAA <- 0000000055550000 = AAAAAAAA55550000 +IILF 8000000000000000 <- 0000000055550000 = 8000000055550000 +IILF FFFFFFFFFFFFFFFF <- 0000000055550000 = FFFFFFFF55550000 +IILF 5555555555555555 <- 0000000055550000 = 5555555555550000 +IILF 0000000000000000 <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 0000000000000001 <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 000000000000FFFF <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 0000000000007FFF <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 0000000000008000 <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 00000000FFFFFFFF <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 0000000080000000 <- 00000000AAAA0000 = 00000000AAAA0000 +IILF 000000007FFFFFFF <- 00000000AAAA0000 = 00000000AAAA0000 +IILF AAAAAAAAAAAAAAAA <- 00000000AAAA0000 = AAAAAAAAAAAA0000 +IILF 8000000000000000 <- 00000000AAAA0000 = 80000000AAAA0000 +IILF FFFFFFFFFFFFFFFF <- 00000000AAAA0000 = FFFFFFFFAAAA0000 +IILF 5555555555555555 <- 00000000AAAA0000 = 55555555AAAA0000 +IILF 0000000000000000 <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 0000000000000001 <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 000000000000FFFF <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 0000000000007FFF <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 0000000000008000 <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 00000000FFFFFFFF <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 0000000080000000 <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF 000000007FFFFFFF <- 00000000FFFFFFFF = 00000000FFFFFFFF +IILF AAAAAAAAAAAAAAAA <- 00000000FFFFFFFF = AAAAAAAAFFFFFFFF +IILF 8000000000000000 <- 00000000FFFFFFFF = 80000000FFFFFFFF +IILF FFFFFFFFFFFFFFFF <- 00000000FFFFFFFF = FFFFFFFFFFFFFFFF +IILF 5555555555555555 <- 00000000FFFFFFFF = 55555555FFFFFFFF +IILF 0000000000000000 <- 0000000055555555 = 0000000055555555 +IILF 0000000000000001 <- 0000000055555555 = 0000000055555555 +IILF 000000000000FFFF <- 0000000055555555 = 0000000055555555 +IILF 0000000000007FFF <- 0000000055555555 = 0000000055555555 +IILF 0000000000008000 <- 0000000055555555 = 0000000055555555 +IILF 00000000FFFFFFFF <- 0000000055555555 = 0000000055555555 +IILF 0000000080000000 <- 0000000055555555 = 0000000055555555 +IILF 000000007FFFFFFF <- 0000000055555555 = 0000000055555555 +IILF AAAAAAAAAAAAAAAA <- 0000000055555555 = AAAAAAAA55555555 +IILF 8000000000000000 <- 0000000055555555 = 8000000055555555 +IILF FFFFFFFFFFFFFFFF <- 0000000055555555 = FFFFFFFF55555555 +IILF 5555555555555555 <- 0000000055555555 = 5555555555555555 +IILF 0000000000000000 <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 0000000000000001 <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 000000000000FFFF <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 0000000000007FFF <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 0000000000008000 <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 00000000FFFFFFFF <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 0000000080000000 <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF 000000007FFFFFFF <- 00000000AAAAAAAA = 00000000AAAAAAAA +IILF AAAAAAAAAAAAAAAA <- 00000000AAAAAAAA = AAAAAAAAAAAAAAAA +IILF 8000000000000000 <- 00000000AAAAAAAA = 80000000AAAAAAAA +IILF FFFFFFFFFFFFFFFF <- 00000000AAAAAAAA = FFFFFFFFAAAAAAAA +IILF 5555555555555555 <- 00000000AAAAAAAA = 55555555AAAAAAAA diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.vgtest new file mode 100644 index 000000000..31daf8391 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/insert_EI.vgtest @@ -0,0 +1,2 @@ +prog: insert_EI +prereq: test -x insert_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.c new file mode 100644 index 000000000..0e7bdae1f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.c @@ -0,0 +1,20 @@ +/* LAM, STAM, load,store access multiple */ +#include +#include + +char output[44]; +char input[44] = "0123456789\n" + "0123456789\n" + "0123456789\n" + "0123456789\n"; + +int main() +{ + asm volatile( "larl 1,input\n\t" + "larl 2,output\n\t" + "lam 3,13,0(1)\n\t" + "stam 3,13,0(2)\n\t":::"1", "2"); + + write(1, output, sizeof output); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stdout.exp new file mode 100644 index 000000000..dec3dd0d0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.stdout.exp @@ -0,0 +1,4 @@ +0123456789 +0123456789 +0123456789 +0123456789 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.vgtest new file mode 100644 index 000000000..79b780dc9 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lam_stam.vgtest @@ -0,0 +1 @@ +prog: lam_stam diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.c new file mode 100644 index 000000000..2b03da149 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.c @@ -0,0 +1,95 @@ +#include +#include + +int lpr(int org, int *new) +{ + int _new, cc; + asm volatile( "lpr %0,%2\n\t" + "ipm %1\n\t" + "srl %1,28\n\t" + : "=d" (_new), "=d" (cc) + : "d" (org) + : "cc"); + *new = _new; + return cc; +} + +int lpgr(unsigned long org, unsigned long *new) +{ + unsigned long _new; + int cc; + asm volatile( "lpgr %0,%2\n\t" + "ipm %1\n\t" + "srl %1,28\n\t" + : "=d" (_new), "=d" (cc) + : "d" (org) + : "cc"); + *new = _new; + return cc; +} + +int lpgfr(unsigned long org, unsigned long *new) +{ + unsigned long _new; + int cc; + asm volatile( "lpgfr %0,%2\n\t" + "ipm %1\n\t" + "srl %1,28\n\t" + : "=d" (_new), "=d" (cc) + : "d" (org) + : "cc"); + *new = _new; + return cc; +} + + +void t32(int value) +{ + int n,cc; + + cc = lpr(value, &n); + + printf("new: %d cc: %d\n", n, cc); +} + +void t64(unsigned long value) +{ + int cc; + unsigned long n; + + cc = lpgr(value, &n); + + printf("new: %ld cc: %d\n", n, cc); +} + +void t3264(unsigned long value) +{ + int cc; + unsigned long n; + + cc = lpgfr(value, &n); + + printf("new: %ld cc: %d\n", n, cc); +} + + + +int main() +{ + printf("lpr\n"); + t32(0); t32(1); t32(-1); + t32(INT_MAX); t32(INT_MIN); t32(UINT_MAX); + + printf("lpgr\n"); + t64(0); t64(1); t64(-1); + t64(INT_MAX); t64(INT_MIN); t64(UINT_MAX); + t64(LONG_MAX); t64(LONG_MIN); t64(ULONG_MAX); + + printf("lpgfr\n"); + t3264(0); t3264(1); t64(-1); + t3264(INT_MAX); t3264(INT_MIN); t3264(UINT_MAX); + t3264(LONG_MAX); t3264(LONG_MIN); t3264(ULONG_MAX); + + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stdout.exp new file mode 100644 index 000000000..e917b593c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.stdout.exp @@ -0,0 +1,27 @@ +lpr +new: 0 cc: 0 +new: 1 cc: 2 +new: 1 cc: 2 +new: 2147483647 cc: 2 +new: -2147483648 cc: 3 +new: 1 cc: 2 +lpgr +new: 0 cc: 0 +new: 1 cc: 2 +new: 1 cc: 2 +new: 2147483647 cc: 2 +new: 2147483648 cc: 2 +new: 4294967295 cc: 2 +new: 9223372036854775807 cc: 2 +new: -9223372036854775808 cc: 3 +new: 1 cc: 2 +lpgfr +new: 0 cc: 0 +new: 1 cc: 2 +new: 1 cc: 2 +new: 2147483647 cc: 2 +new: 2147483648 cc: 2 +new: 1 cc: 2 +new: 1 cc: 2 +new: 0 cc: 0 +new: 1 cc: 2 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.vgtest new file mode 100644 index 000000000..9b2c167f3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/lpr.vgtest @@ -0,0 +1 @@ +prog: lpr diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.c new file mode 100644 index 000000000..95a11dc23 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.c @@ -0,0 +1,54 @@ +#include +#include "mul.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(mhi, 0); + immsweep(mhi, -1); + immsweep(mhi, -32768); + immsweep(mhi, 32767); + immsweep(mghi, 0); + immsweep(mghi, -1); + immsweep(mghi, -32768); + immsweep(mghi, 32767); +} + + +static void do_regmem_insns(unsigned long m2) +{ + memsweep(m, m2); + regsweep(mr, m2); + memsweep(mh, m2); + memsweep(mlg, m2); + regsweep(mlgr, m2); + memsweep(ml, m2); + regsweep(mlr, m2); + memsweep(ms, m2); + regsweep(msr, m2); + memsweep(msg, m2); + regsweep(msgr, m2); + memsweep(msgf, m2); + regsweep(msgfr, m2); + msysweep(m2); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x7ffffffffffffffful); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + do_imm_insns(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.h new file mode 100644 index 000000000..edb2aa876 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.h @@ -0,0 +1,213 @@ +#include + +#define MUL_REG_MEM(insn, m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + #insn " 2, %2\n" \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "Q" (m2) \ + : "2","3"); \ + printf(#insn " %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, m2, tmp1, tmp2); \ +}) + +#define MUL_REG_REG(insn, m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + #insn " 2, %2\n" \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "d" (m2) \ + : "2","3"); \ + printf(#insn " %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, m2, tmp1, tmp2); \ +}) + +#define MUL_REG_IMM(insn, m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + #insn " 2, " #m2 "\n" \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + :: "2","3"); \ + printf(#insn " %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, (unsigned long) m2, tmp1, tmp2); \ +}) + +#define MUL_REG_XIMM(insn, m1, um2, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + insn(2,m2) \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + :: "2","3"); \ + printf(#insn " %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, (unsigned long) 0x##um2##m2, tmp1, tmp2); \ +}) + + +#define memsweep(i, m2) \ +({ \ + MUL_REG_MEM(i, 0ul, m2); \ + MUL_REG_MEM(i, 1ul, m2); \ + MUL_REG_MEM(i, 0xfffful, m2); \ + MUL_REG_MEM(i, 0x7ffful, m2); \ + MUL_REG_MEM(i, 0x8000ul, m2); \ + MUL_REG_MEM(i, 0xfffffffful, m2); \ + MUL_REG_MEM(i, 0x80000000ul, m2); \ + MUL_REG_MEM(i, 0x7ffffffful, m2); \ + MUL_REG_MEM(i, 0xfffffffffffffffful, m2); \ + MUL_REG_MEM(i, 0x8000000000000000ul, m2); \ + MUL_REG_MEM(i, 0x7ffffffffffffffful, m2); \ +}) + +#define regsweep(i, m2) \ +({ \ + MUL_REG_REG(i, 0ul, m2); \ + MUL_REG_REG(i, 1ul, m2); \ + MUL_REG_REG(i, 0xfffful, m2); \ + MUL_REG_REG(i, 0x7ffful, m2); \ + MUL_REG_REG(i, 0x8000ul, m2); \ + MUL_REG_REG(i, 0xfffffffful, m2); \ + MUL_REG_REG(i, 0x80000000ul, m2); \ + MUL_REG_REG(i, 0x7ffffffful, m2); \ + MUL_REG_REG(i, 0xfffffffffffffffful, m2); \ + MUL_REG_REG(i, 0x8000000000000000ul, m2); \ + MUL_REG_REG(i, 0x7ffffffffffffffful, m2); \ +}) + +#define immsweep(i, m2) \ +({ \ + MUL_REG_IMM(i, 0ul, m2); \ + MUL_REG_IMM(i, 1ul, m2); \ + MUL_REG_IMM(i, 0xfffful, m2); \ + MUL_REG_IMM(i, 0x7ffful, m2); \ + MUL_REG_IMM(i, 0x8000ul, m2); \ + MUL_REG_IMM(i, 0xfffffffful, m2); \ + MUL_REG_IMM(i, 0x80000000ul, m2); \ + MUL_REG_IMM(i, 0x7ffffffful, m2); \ + MUL_REG_IMM(i, 0xfffffffffffffffful, m2); \ + MUL_REG_IMM(i, 0x8000000000000000ul, m2); \ + MUL_REG_IMM(i, 0x7ffffffffffffffful, m2); \ +}) + +#define ximmsweep(i, um2, m2) \ +({ \ + MUL_REG_XIMM(i, 0ul, um2, m2); \ + MUL_REG_XIMM(i, 1ul, um2, m2); \ + MUL_REG_XIMM(i, 0xfffful, um2, m2); \ + MUL_REG_XIMM(i, 0x7ffful, um2, m2); \ + MUL_REG_XIMM(i, 0x8000ul, um2, m2); \ + MUL_REG_XIMM(i, 0xfffffffful, um2, m2); \ + MUL_REG_XIMM(i, 0x80000000ul, um2, m2); \ + MUL_REG_XIMM(i, 0x7ffffffful, um2, m2); \ + MUL_REG_XIMM(i, 0xfffffffffffffffful, um2, m2); \ + MUL_REG_XIMM(i, 0x8000000000000000ul, um2, m2); \ + MUL_REG_XIMM(i, 0x7ffffffffffffffful, um2, m2); \ +}) + +#define MUL_MSY(m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + register unsigned long *addr asm("5") = &m2; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + MSY(2,0,5,000,00) \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "Q" (m2), "d" (addr) \ + : "2","3"); \ + printf("msy %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, m2, tmp1, tmp2); \ +}) + +#define msysweep(s2) \ +({ \ + MUL_MSY(0ul, s2); \ + MUL_MSY(1ul, s2); \ + MUL_MSY(0xfffful, s2); \ + MUL_MSY(0x7ffful, s2); \ + MUL_MSY(0x8000ul, s2); \ + MUL_MSY(0xfffffffful, s2); \ + MUL_MSY(0x80000000ul, s2); \ + MUL_MSY(0x7ffffffful, s2); \ + MUL_MSY(0xfffffffffffffffful, s2); \ + MUL_MSY(0x8000000000000000ul, s2); \ + MUL_MSY(0x7ffffffffffffffful, s2); \ +}) + +#define MUL_MHY(m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + register unsigned long *addr asm("5") = &m2; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + MHY(2,0,5,000,00) \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "Q" (m2), "d" (addr) \ + : "2","3"); \ + printf("mhy %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, m2, tmp1, tmp2); \ +}) + +#define mhysweep(s2) \ +({ \ + MUL_MHY(0ul, s2); \ + MUL_MHY(1ul, s2); \ + MUL_MHY(0xfffful, s2); \ + MUL_MHY(0x7ffful, s2); \ + MUL_MHY(0x8000ul, s2); \ + MUL_MHY(0xfffffffful, s2); \ + MUL_MHY(0x80000000ul, s2); \ + MUL_MHY(0x7ffffffful, s2); \ + MUL_MHY(0xfffffffffffffffful, s2); \ + MUL_MHY(0x8000000000000000ul, s2); \ + MUL_MHY(0x7ffffffffffffffful, s2); \ +}) + +#define MUL_MFY(m1, m2) \ +({ \ + unsigned long tmp1 = m1; \ + unsigned long tmp2 = m1; \ + register unsigned long *addr asm("5") = &m2; \ + asm volatile( "lgr 2, %0\n" \ + "lgr 3, %1\n" \ + MFY(2,0,5,000,00) \ + "lgr %0,2\n" \ + "lgr %1,3\n" \ + : "+d" (tmp1), "+d" (tmp2) \ + : "Q" (m2), "d" (addr) \ + : "2","3"); \ + printf("mfy %16.16lX * %16.16lX = %16.16lX%16.16lX\n", m1, m2, tmp1, tmp2); \ +}) + +#define mfysweep(s2) \ +({ \ + MUL_MFY(0ul, s2); \ + MUL_MFY(1ul, s2); \ + MUL_MFY(0xfffful, s2); \ + MUL_MFY(0x7ffful, s2); \ + MUL_MFY(0x8000ul, s2); \ + MUL_MFY(0xfffffffful, s2); \ + MUL_MFY(0x80000000ul, s2); \ + MUL_MFY(0x7ffffffful, s2); \ + MUL_MFY(0xfffffffffffffffful, s2); \ + MUL_MFY(0x8000000000000000ul, s2); \ + MUL_MFY(0x7ffffffffffffffful, s2); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stdout.exp new file mode 100644 index 000000000..0c4a5c519 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.stdout.exp @@ -0,0 +1,2244 @@ +m 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +m 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +m 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +m 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +m 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +m 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +m 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +mr 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +mr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +mr 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +mr 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mr 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +mr 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mr FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mr 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mh 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mh 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +mh 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +mh 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +mlg 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +mlg 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +mlg 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +mlg 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlg 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +mlg 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlg FFFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlg 8000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +mlgr 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +mlgr 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +mlgr 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr FFFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlgr 8000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +ml 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +ml 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +ml 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +ml 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +ml 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +ml 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +mlr 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +mlr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +mlr 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +mlr 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlr 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +mlr 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mlr FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mlr 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +ms 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +ms 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +ms 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +ms 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msr 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msr 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msr 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msg 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msg 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msg 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msg 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msg 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msg 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msg 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msg 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msgr 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msgr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msgr 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msgr 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msgr 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msgr 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msgf 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msgf 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msgfr 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msgfr 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msgfr 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msgfr 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msgfr 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msgfr 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msy 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +msy 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +msy 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +msy 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +m 0000000000000001 * 7FFFFFFFFFFFFFFF = 0000000000000000000000007FFFFFFF +m 000000000000FFFF * 7FFFFFFFFFFFFFFF = 0000000000007FFF000000007FFF0001 +m 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000003FFF000000007FFF8001 +m 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000003FFF00000000FFFF8000 +m 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +m 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000C00000000000000080000000 +m 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF0000000000000001 +m FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFFFFFFFFFF80000001 +m 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF7FFFFFFF80000001 +mr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mr 0000000000000001 * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFFFFFF +mr 000000000000FFFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF0001 +mr 0000000000007FFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8001 +mr 0000000000008000 * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8000 +mr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000001 +mr 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000080000000 +mr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +mr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF00000000FFFFFFFF00000001 +mr 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF000000007FFFFFFF00000001 +mh 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mh 0000000000000001 * 7FFFFFFFFFFFFFFF = 0000000000007FFF0000000000000001 +mh 000000000000FFFF * 7FFFFFFFFFFFFFFF = 000000007FFE8001000000000000FFFF +mh 0000000000007FFF * 7FFFFFFFFFFFFFFF = 000000003FFF00010000000000007FFF +mh 0000000000008000 * 7FFFFFFFFFFFFFFF = 000000003FFF80000000000000008000 +mh 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFF800100000000FFFFFFFF +mh 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000800000000000000080000000 +mh 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFF8001000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mh 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +mlg 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 7FFFFFFFFFFFFFFF = 00000000000000007FFFFFFFFFFFFFFF +mlg 000000000000FFFF * 7FFFFFFFFFFFFFFF = 0000000000007FFF7FFFFFFFFFFF0001 +mlg 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000003FFF7FFFFFFFFFFF8001 +mlg 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000003FFFFFFFFFFFFFFF8000 +mlg 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF7FFFFFFF00000001 +mlg 0000000080000000 * 7FFFFFFFFFFFFFFF = 000000003FFFFFFFFFFFFFFF80000000 +mlg 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF7FFFFFFF80000001 +mlg FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE8000000000000001 +mlg 8000000000000000 * 7FFFFFFFFFFFFFFF = 3FFFFFFFFFFFFFFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 3FFFFFFFFFFFFFFF0000000000000001 +mlgr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 7FFFFFFFFFFFFFFF = 00000000000000007FFFFFFFFFFFFFFF +mlgr 000000000000FFFF * 7FFFFFFFFFFFFFFF = 0000000000007FFF7FFFFFFFFFFF0001 +mlgr 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000003FFF7FFFFFFFFFFF8001 +mlgr 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000003FFFFFFFFFFFFFFF8000 +mlgr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF7FFFFFFF00000001 +mlgr 0000000080000000 * 7FFFFFFFFFFFFFFF = 000000003FFFFFFFFFFFFFFF80000000 +mlgr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF7FFFFFFF80000001 +mlgr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE8000000000000001 +mlgr 8000000000000000 * 7FFFFFFFFFFFFFFF = 3FFFFFFFFFFFFFFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 3FFFFFFFFFFFFFFF0000000000000001 +ml 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +ml 0000000000000001 * 7FFFFFFFFFFFFFFF = 0000000000000000000000007FFFFFFF +ml 000000000000FFFF * 7FFFFFFFFFFFFFFF = 0000000000007FFF000000007FFF0001 +ml 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000003FFF000000007FFF8001 +ml 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000003FFF00000000FFFF8000 +ml 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFFFFFE0000000080000001 +ml 0000000080000000 * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF0000000080000000 +ml 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF0000000000000001 +ml FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFEFFFFFFFF80000001 +ml 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF7FFFFFFE7FFFFFFF80000001 +mlr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 7FFFFFFFFFFFFFFF = 000000000000000000000000FFFFFFFF +mlr 000000000000FFFF * 7FFFFFFFFFFFFFFF = 000000000000FFFE00000000FFFF0001 +mlr 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000007FFE00000000FFFF8001 +mlr 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000007FFF00000000FFFF8000 +mlr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFE0000000000000001 +mlr 0000000080000000 * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF0000000080000000 +mlr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFFFFFE0000000080000001 +mlr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFEFFFFFFFF00000001 +mlr 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE7FFFFFFF00000001 +ms 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +ms 0000000000000001 * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF0000000000000001 +ms 000000000000FFFF * 7FFFFFFFFFFFFFFF = 000000007FFF0001000000000000FFFF +ms 0000000000007FFF * 7FFFFFFFFFFFFFFF = 000000007FFF80010000000000007FFF +ms 0000000000008000 * 7FFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +ms 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000008000000100000000FFFFFFFF +ms 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000800000000000000080000000 +ms 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 0000000000000001000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +ms 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msr 0000000000000001 * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +msr 000000000000FFFF * 7FFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +msr 0000000000007FFF * 7FFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +msr 0000000000008000 * 7FFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +msr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +msr 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msg 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msg 0000000000000001 * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF0000000000000001 +msg 000000000000FFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF0001000000000000FFFF +msg 0000000000007FFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF80010000000000007FFF +msg 0000000000008000 * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msg 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF0000000100000000FFFFFFFF +msg 0000000080000000 * 7FFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msg 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF80000001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 8000000000000001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000000000017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF0000000000000001 +msgr 000000000000FFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF0001000000000000FFFF +msgr 0000000000007FFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF80010000000000007FFF +msgr 0000000000008000 * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF0000000100000000FFFFFFFF +msgr 0000000080000000 * 7FFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msgr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF80000001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 8000000000000001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000000000017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF0000000000000001 +msgf 000000000000FFFF * 7FFFFFFFFFFFFFFF = 00007FFF7FFF0001000000000000FFFF +msgf 0000000000007FFF * 7FFFFFFFFFFFFFFF = 00003FFF7FFF80010000000000007FFF +msgf 0000000000008000 * 7FFFFFFFFFFFFFFF = 00003FFFFFFF80000000000000008000 +msgf 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFE8000000100000000FFFFFFFF +msgf 0000000080000000 * 7FFFFFFFFFFFFFFF = 3FFFFFFF800000000000000080000000 +msgf 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 3FFFFFFF00000001000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msgfr 000000000000FFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msgfr 0000000000007FFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msgfr 0000000000008000 * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgfr 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msgfr 0000000080000000 * 7FFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msgfr 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msy 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msy 0000000000000001 * 7FFFFFFFFFFFFFFF = 000000007FFFFFFF0000000000000001 +msy 000000000000FFFF * 7FFFFFFFFFFFFFFF = 000000007FFF0001000000000000FFFF +msy 0000000000007FFF * 7FFFFFFFFFFFFFFF = 000000007FFF80010000000000007FFF +msy 0000000000008000 * 7FFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +msy 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 000000008000000100000000FFFFFFFF +msy 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000800000000000000080000000 +msy 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 0000000000000001000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msy 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +m 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +m 0000000000000001 * 8000000000000000 = 00000000FFFFFFFF0000000080000000 +m 000000000000FFFF * 8000000000000000 = 00000000FFFF80000000000080000000 +m 0000000000007FFF * 8000000000000000 = 00000000FFFFC0000000000080000000 +m 0000000000008000 * 8000000000000000 = 00000000FFFFC0000000000000000000 +m 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000080000000 +m 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +m 000000007FFFFFFF * 8000000000000000 = 00000000C00000000000000080000000 +m FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF80000000 +m 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF80000000 +mr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000000 +mr 000000000000FFFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000008000 * 8000000000000000 = 00000000000000000000000000000000 +mr 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000080000000 * 8000000000000000 = 00000000000000000000000000000000 +mr 000000007FFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mh 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mh 0000000000000001 * 8000000000000000 = 00000000FFFF80000000000000000001 +mh 000000000000FFFF * 8000000000000000 = 0000000080008000000000000000FFFF +mh 0000000000007FFF * 8000000000000000 = 00000000C00080000000000000007FFF +mh 0000000000008000 * 8000000000000000 = 00000000C00000000000000000008000 +mh 00000000FFFFFFFF * 8000000000000000 = 000000000000800000000000FFFFFFFF +mh 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 8000000000000000 = 0000000000008000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 8000000000000000 = 00000000000000008000000000000000 +mlg 000000000000FFFF * 8000000000000000 = 0000000000007FFF8000000000000000 +mlg 0000000000007FFF * 8000000000000000 = 0000000000003FFF8000000000000000 +mlg 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +mlg 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF8000000000000000 +mlg 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mlg 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF8000000000000000 +mlg FFFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFFFFFFFFFF8000000000000000 +mlg 8000000000000000 * 8000000000000000 = 40000000000000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 8000000000000000 = 3FFFFFFFFFFFFFFF8000000000000000 +mlgr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 8000000000000000 = 00000000000000008000000000000000 +mlgr 000000000000FFFF * 8000000000000000 = 0000000000007FFF8000000000000000 +mlgr 0000000000007FFF * 8000000000000000 = 0000000000003FFF8000000000000000 +mlgr 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +mlgr 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF8000000000000000 +mlgr 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mlgr 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF8000000000000000 +mlgr FFFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFFFFFFFFFF8000000000000000 +mlgr 8000000000000000 * 8000000000000000 = 40000000000000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 8000000000000000 = 3FFFFFFFFFFFFFFF8000000000000000 +ml 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +ml 0000000000000001 * 8000000000000000 = 00000000000000000000000080000000 +ml 000000000000FFFF * 8000000000000000 = 0000000000007FFF0000000080000000 +ml 0000000000007FFF * 8000000000000000 = 0000000000003FFF0000000080000000 +ml 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +ml 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF0000000080000000 +ml 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +ml 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF0000000080000000 +ml FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF7FFFFFFFFFFFFFFF80000000 +ml 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF7FFFFFFF7FFFFFFF80000000 +mlr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000000 +mlr 000000000000FFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000008000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000080000000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 000000007FFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mlr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +ms 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +ms 0000000000000001 * 8000000000000000 = 00000000800000000000000000000001 +ms 000000000000FFFF * 8000000000000000 = 0000000080000000000000000000FFFF +ms 0000000000007FFF * 8000000000000000 = 00000000800000000000000000007FFF +ms 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 8000000000000000 = 000000008000000000000000FFFFFFFF +ms 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 8000000000000000 = 0000000080000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000001 +msr 000000000000FFFF * 8000000000000000 = 0000000000000000000000000000FFFF +msr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000007FFF +msr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * 8000000000000000 = 000000000000000000000000FFFFFFFF +msr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 8000000000000000 = 0000000000000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msg 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msg 0000000000000001 * 8000000000000000 = 80000000000000000000000000000001 +msg 000000000000FFFF * 8000000000000000 = 8000000000000000000000000000FFFF +msg 0000000000007FFF * 8000000000000000 = 80000000000000000000000000007FFF +msg 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msg 00000000FFFFFFFF * 8000000000000000 = 800000000000000000000000FFFFFFFF +msg 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msg 000000007FFFFFFF * 8000000000000000 = 8000000000000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 8000000000000000 = 8000000000000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 8000000000000000 = 80000000000000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 8000000000000000 = 80000000000000000000000000000001 +msgr 000000000000FFFF * 8000000000000000 = 8000000000000000000000000000FFFF +msgr 0000000000007FFF * 8000000000000000 = 80000000000000000000000000007FFF +msgr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msgr 00000000FFFFFFFF * 8000000000000000 = 800000000000000000000000FFFFFFFF +msgr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msgr 000000007FFFFFFF * 8000000000000000 = 8000000000000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 8000000000000000 = 8000000000000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 8000000000000000 = 80000000000000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 8000000000000000 = FFFFFFFF800000000000000000000001 +msgf 000000000000FFFF * 8000000000000000 = FFFF800080000000000000000000FFFF +msgf 0000000000007FFF * 8000000000000000 = FFFFC000800000000000000000007FFF +msgf 0000000000008000 * 8000000000000000 = FFFFC000000000000000000000008000 +msgf 00000000FFFFFFFF * 8000000000000000 = 800000008000000000000000FFFFFFFF +msgf 0000000080000000 * 8000000000000000 = C0000000000000000000000080000000 +msgf 000000007FFFFFFF * 8000000000000000 = C000000080000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 8000000000000000 = 0000000080000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 8000000000000000 = 00000000800000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000001 +msgfr 000000000000FFFF * 8000000000000000 = 0000000000000000000000000000FFFF +msgfr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000007FFF +msgfr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msgfr 00000000FFFFFFFF * 8000000000000000 = 000000000000000000000000FFFFFFFF +msgfr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msgfr 000000007FFFFFFF * 8000000000000000 = 0000000000000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 8000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 8000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msy 0000000000000001 * 8000000000000000 = 00000000800000000000000000000001 +msy 000000000000FFFF * 8000000000000000 = 0000000080000000000000000000FFFF +msy 0000000000007FFF * 8000000000000000 = 00000000800000000000000000007FFF +msy 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 8000000000000000 = 000000008000000000000000FFFFFFFF +msy 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 8000000000000000 = 0000000080000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +m 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +m 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFFFFFF +m 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF0001 +m 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8001 +m 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8000 +m 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000000000000000000000000001 +m 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000080000000 +m 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +m FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000000FFFFFFFF00000001 +m 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000007FFFFFFF00000001 +mr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mr 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFFFFFF +mr 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF0001 +mr 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8001 +mr 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8000 +mr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000000000000000000000000001 +mr 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000080000000 +mr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +mr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000000FFFFFFFF00000001 +mr 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000007FFFFFFF00000001 +mh 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mh 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +mh 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +mh 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +mh 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +mh 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +mh 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +mh 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +mh 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +mlg 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * FFFFFFFFFFFFFFFF = 0000000000000000FFFFFFFFFFFFFFFF +mlg 000000000000FFFF * FFFFFFFFFFFFFFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlg 0000000000007FFF * FFFFFFFFFFFFFFFF = 0000000000007FFEFFFFFFFFFFFF8001 +mlg 0000000000008000 * FFFFFFFFFFFFFFFF = 0000000000007FFFFFFFFFFFFFFF8000 +mlg 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFEFFFFFFFF00000001 +mlg 0000000080000000 * FFFFFFFFFFFFFFFF = 000000007FFFFFFFFFFFFFFF80000000 +mlg 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 000000007FFFFFFEFFFFFFFF80000001 +mlg FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE0000000000000001 +mlg 8000000000000000 * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE8000000000000001 +mlgr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * FFFFFFFFFFFFFFFF = 0000000000000000FFFFFFFFFFFFFFFF +mlgr 000000000000FFFF * FFFFFFFFFFFFFFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlgr 0000000000007FFF * FFFFFFFFFFFFFFFF = 0000000000007FFEFFFFFFFFFFFF8001 +mlgr 0000000000008000 * FFFFFFFFFFFFFFFF = 0000000000007FFFFFFFFFFFFFFF8000 +mlgr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFEFFFFFFFF00000001 +mlgr 0000000080000000 * FFFFFFFFFFFFFFFF = 000000007FFFFFFFFFFFFFFF80000000 +mlgr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 000000007FFFFFFEFFFFFFFF80000001 +mlgr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE0000000000000001 +mlgr 8000000000000000 * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE8000000000000001 +ml 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +ml 0000000000000001 * FFFFFFFFFFFFFFFF = 000000000000000000000000FFFFFFFF +ml 000000000000FFFF * FFFFFFFFFFFFFFFF = 000000000000FFFE00000000FFFF0001 +ml 0000000000007FFF * FFFFFFFFFFFFFFFF = 0000000000007FFE00000000FFFF8001 +ml 0000000000008000 * FFFFFFFFFFFFFFFF = 0000000000007FFF00000000FFFF8000 +ml 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFE0000000000000001 +ml 0000000080000000 * FFFFFFFFFFFFFFFF = 000000007FFFFFFF0000000080000000 +ml 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 000000007FFFFFFE0000000080000001 +ml FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFEFFFFFFFF00000001 +ml 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE7FFFFFFF00000001 +mlr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * FFFFFFFFFFFFFFFF = 000000000000000000000000FFFFFFFF +mlr 000000000000FFFF * FFFFFFFFFFFFFFFF = 000000000000FFFE00000000FFFF0001 +mlr 0000000000007FFF * FFFFFFFFFFFFFFFF = 0000000000007FFE00000000FFFF8001 +mlr 0000000000008000 * FFFFFFFFFFFFFFFF = 0000000000007FFF00000000FFFF8000 +mlr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFE0000000000000001 +mlr 0000000080000000 * FFFFFFFFFFFFFFFF = 000000007FFFFFFF0000000080000000 +mlr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 000000007FFFFFFE0000000080000001 +mlr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFEFFFFFFFF00000001 +mlr 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFE7FFFFFFF00000001 +ms 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +ms 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +ms 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +ms 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +ms 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +ms 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +ms 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +ms 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +ms 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msr 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +msr 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +msr 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +msr 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +msr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +msr 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msr 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msg 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msg 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msg 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msg 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msg 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msg 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msg 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msg 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msg 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msgr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msgr 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msgr 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msgr 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msgr 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msgr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msgf 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msgf 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msgf 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msgf 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgf 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msgf 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msgf 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msgf 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msgfr 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msgfr 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msgfr 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msgfr 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgfr 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msgfr 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +msgfr 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msy 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +msy 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +msy 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +msy 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +msy 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +msy 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +msy 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +msy 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msy 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +m 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +m 0000000000000001 * 7FFFFFFF00000000 = 0000000000000000000000007FFFFFFF +m 000000000000FFFF * 7FFFFFFF00000000 = 0000000000007FFF000000007FFF0001 +m 0000000000007FFF * 7FFFFFFF00000000 = 0000000000003FFF000000007FFF8001 +m 0000000000008000 * 7FFFFFFF00000000 = 0000000000003FFF00000000FFFF8000 +m 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000FFFFFFFF0000000080000001 +m 0000000080000000 * 7FFFFFFF00000000 = 00000000C00000000000000080000000 +m 000000007FFFFFFF * 7FFFFFFF00000000 = 000000003FFFFFFF0000000000000001 +m FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFFFFFFFFFFFFFFFFFF80000001 +m 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF7FFFFFFF80000001 +mr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000000001 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 000000000000FFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000007FFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000008000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000080000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr 000000007FFFFFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000000 +mr 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000000 +mh 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mh 0000000000000001 * 7FFFFFFF00000000 = 0000000000007FFF0000000000000001 +mh 000000000000FFFF * 7FFFFFFF00000000 = 000000007FFE8001000000000000FFFF +mh 0000000000007FFF * 7FFFFFFF00000000 = 000000003FFF00010000000000007FFF +mh 0000000000008000 * 7FFFFFFF00000000 = 000000003FFF80000000000000008000 +mh 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000FFFF800100000000FFFFFFFF +mh 0000000080000000 * 7FFFFFFF00000000 = 00000000800000000000000080000000 +mh 000000007FFFFFFF * 7FFFFFFF00000000 = 000000007FFF8001000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mh 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +mlg 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 7FFFFFFF00000000 = 00000000000000007FFFFFFF00000000 +mlg 000000000000FFFF * 7FFFFFFF00000000 = 0000000000007FFF7FFF000100000000 +mlg 0000000000007FFF * 7FFFFFFF00000000 = 0000000000003FFF7FFF800100000000 +mlg 0000000000008000 * 7FFFFFFF00000000 = 0000000000003FFFFFFF800000000000 +mlg 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000007FFFFFFE8000000100000000 +mlg 0000000080000000 * 7FFFFFFF00000000 = 000000003FFFFFFF8000000000000000 +mlg 000000007FFFFFFF * 7FFFFFFF00000000 = 000000003FFFFFFF0000000100000000 +mlg FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF8000000100000000 +mlg 8000000000000000 * 7FFFFFFF00000000 = 3FFFFFFF800000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 3FFFFFFF7FFFFFFF8000000100000000 +mlgr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 7FFFFFFF00000000 = 00000000000000007FFFFFFF00000000 +mlgr 000000000000FFFF * 7FFFFFFF00000000 = 0000000000007FFF7FFF000100000000 +mlgr 0000000000007FFF * 7FFFFFFF00000000 = 0000000000003FFF7FFF800100000000 +mlgr 0000000000008000 * 7FFFFFFF00000000 = 0000000000003FFFFFFF800000000000 +mlgr 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000007FFFFFFE8000000100000000 +mlgr 0000000080000000 * 7FFFFFFF00000000 = 000000003FFFFFFF8000000000000000 +mlgr 000000007FFFFFFF * 7FFFFFFF00000000 = 000000003FFFFFFF0000000100000000 +mlgr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFEFFFFFFFF8000000100000000 +mlgr 8000000000000000 * 7FFFFFFF00000000 = 3FFFFFFF800000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 3FFFFFFF7FFFFFFF8000000100000000 +ml 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +ml 0000000000000001 * 7FFFFFFF00000000 = 0000000000000000000000007FFFFFFF +ml 000000000000FFFF * 7FFFFFFF00000000 = 0000000000007FFF000000007FFF0001 +ml 0000000000007FFF * 7FFFFFFF00000000 = 0000000000003FFF000000007FFF8001 +ml 0000000000008000 * 7FFFFFFF00000000 = 0000000000003FFF00000000FFFF8000 +ml 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000007FFFFFFE0000000080000001 +ml 0000000080000000 * 7FFFFFFF00000000 = 000000003FFFFFFF0000000080000000 +ml 000000007FFFFFFF * 7FFFFFFF00000000 = 000000003FFFFFFF0000000000000001 +ml FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF7FFFFFFEFFFFFFFF80000001 +ml 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFE7FFFFFFF80000001 +mlr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 000000000000FFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000007FFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000008000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000080000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr 000000007FFFFFFF * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mlr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000000 +mlr 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000000 +ms 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +ms 0000000000000001 * 7FFFFFFF00000000 = 000000007FFFFFFF0000000000000001 +ms 000000000000FFFF * 7FFFFFFF00000000 = 000000007FFF0001000000000000FFFF +ms 0000000000007FFF * 7FFFFFFF00000000 = 000000007FFF80010000000000007FFF +ms 0000000000008000 * 7FFFFFFF00000000 = 00000000FFFF80000000000000008000 +ms 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000008000000100000000FFFFFFFF +ms 0000000080000000 * 7FFFFFFF00000000 = 00000000800000000000000080000000 +ms 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000000000001000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF80000001FFFFFFFFFFFFFFFF +ms 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msr 0000000000000001 * 7FFFFFFF00000000 = 00000000000000000000000000000001 +msr 000000000000FFFF * 7FFFFFFF00000000 = 0000000000000000000000000000FFFF +msr 0000000000007FFF * 7FFFFFFF00000000 = 00000000000000000000000000007FFF +msr 0000000000008000 * 7FFFFFFF00000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000000000000000000000FFFFFFFF +msr 0000000080000000 * 7FFFFFFF00000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000000000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msg 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msg 0000000000000001 * 7FFFFFFF00000000 = 7FFFFFFF000000000000000000000001 +msg 000000000000FFFF * 7FFFFFFF00000000 = 7FFF000100000000000000000000FFFF +msg 0000000000007FFF * 7FFFFFFF00000000 = 7FFF8001000000000000000000007FFF +msg 0000000000008000 * 7FFFFFFF00000000 = FFFF8000000000000000000000008000 +msg 00000000FFFFFFFF * 7FFFFFFF00000000 = 800000010000000000000000FFFFFFFF +msg 0000000080000000 * 7FFFFFFF00000000 = 80000000000000000000000080000000 +msg 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000100000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 8000000100000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 7FFFFFFF00000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 80000001000000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 7FFFFFFF00000000 = 7FFFFFFF000000000000000000000001 +msgr 000000000000FFFF * 7FFFFFFF00000000 = 7FFF000100000000000000000000FFFF +msgr 0000000000007FFF * 7FFFFFFF00000000 = 7FFF8001000000000000000000007FFF +msgr 0000000000008000 * 7FFFFFFF00000000 = FFFF8000000000000000000000008000 +msgr 00000000FFFFFFFF * 7FFFFFFF00000000 = 800000010000000000000000FFFFFFFF +msgr 0000000080000000 * 7FFFFFFF00000000 = 80000000000000000000000080000000 +msgr 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000100000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 8000000100000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 7FFFFFFF00000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 80000001000000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 7FFFFFFF00000000 = 000000007FFFFFFF0000000000000001 +msgf 000000000000FFFF * 7FFFFFFF00000000 = 00007FFF7FFF0001000000000000FFFF +msgf 0000000000007FFF * 7FFFFFFF00000000 = 00003FFF7FFF80010000000000007FFF +msgf 0000000000008000 * 7FFFFFFF00000000 = 00003FFFFFFF80000000000000008000 +msgf 00000000FFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFE8000000100000000FFFFFFFF +msgf 0000000080000000 * 7FFFFFFF00000000 = 3FFFFFFF800000000000000080000000 +msgf 000000007FFFFFFF * 7FFFFFFF00000000 = 3FFFFFFF00000001000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 7FFFFFFF00000000 = 00000000000000000000000000000001 +msgfr 000000000000FFFF * 7FFFFFFF00000000 = 0000000000000000000000000000FFFF +msgfr 0000000000007FFF * 7FFFFFFF00000000 = 00000000000000000000000000007FFF +msgfr 0000000000008000 * 7FFFFFFF00000000 = 00000000000000000000000000008000 +msgfr 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000000000000000000000FFFFFFFF +msgfr 0000000080000000 * 7FFFFFFF00000000 = 00000000000000000000000080000000 +msgfr 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000000000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 7FFFFFFF00000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 00000000000000007FFFFFFFFFFFFFFF +msy 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +msy 0000000000000001 * 7FFFFFFF00000000 = 000000007FFFFFFF0000000000000001 +msy 000000000000FFFF * 7FFFFFFF00000000 = 000000007FFF0001000000000000FFFF +msy 0000000000007FFF * 7FFFFFFF00000000 = 000000007FFF80010000000000007FFF +msy 0000000000008000 * 7FFFFFFF00000000 = 00000000FFFF80000000000000008000 +msy 00000000FFFFFFFF * 7FFFFFFF00000000 = 000000008000000100000000FFFFFFFF +msy 0000000080000000 * 7FFFFFFF00000000 = 00000000800000000000000080000000 +msy 000000007FFFFFFF * 7FFFFFFF00000000 = 0000000000000001000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msy 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFF800000017FFFFFFFFFFFFFFF +m 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +m 0000000000000001 * 8000000000000000 = 00000000FFFFFFFF0000000080000000 +m 000000000000FFFF * 8000000000000000 = 00000000FFFF80000000000080000000 +m 0000000000007FFF * 8000000000000000 = 00000000FFFFC0000000000080000000 +m 0000000000008000 * 8000000000000000 = 00000000FFFFC0000000000000000000 +m 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000080000000 +m 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +m 000000007FFFFFFF * 8000000000000000 = 00000000C00000000000000080000000 +m FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF80000000 +m 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF80000000 +mr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000000 +mr 000000000000FFFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000000008000 * 8000000000000000 = 00000000000000000000000000000000 +mr 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mr 0000000080000000 * 8000000000000000 = 00000000000000000000000000000000 +mr 000000007FFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mh 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mh 0000000000000001 * 8000000000000000 = 00000000FFFF80000000000000000001 +mh 000000000000FFFF * 8000000000000000 = 0000000080008000000000000000FFFF +mh 0000000000007FFF * 8000000000000000 = 00000000C00080000000000000007FFF +mh 0000000000008000 * 8000000000000000 = 00000000C00000000000000000008000 +mh 00000000FFFFFFFF * 8000000000000000 = 000000000000800000000000FFFFFFFF +mh 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 8000000000000000 = 0000000000008000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 8000000000000000 = 00000000000000008000000000000000 +mlg 000000000000FFFF * 8000000000000000 = 0000000000007FFF8000000000000000 +mlg 0000000000007FFF * 8000000000000000 = 0000000000003FFF8000000000000000 +mlg 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +mlg 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF8000000000000000 +mlg 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mlg 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF8000000000000000 +mlg FFFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFFFFFFFFFF8000000000000000 +mlg 8000000000000000 * 8000000000000000 = 40000000000000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 8000000000000000 = 3FFFFFFFFFFFFFFF8000000000000000 +mlgr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 8000000000000000 = 00000000000000008000000000000000 +mlgr 000000000000FFFF * 8000000000000000 = 0000000000007FFF8000000000000000 +mlgr 0000000000007FFF * 8000000000000000 = 0000000000003FFF8000000000000000 +mlgr 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +mlgr 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF8000000000000000 +mlgr 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mlgr 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF8000000000000000 +mlgr FFFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFFFFFFFFFF8000000000000000 +mlgr 8000000000000000 * 8000000000000000 = 40000000000000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 8000000000000000 = 3FFFFFFFFFFFFFFF8000000000000000 +ml 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +ml 0000000000000001 * 8000000000000000 = 00000000000000000000000080000000 +ml 000000000000FFFF * 8000000000000000 = 0000000000007FFF0000000080000000 +ml 0000000000007FFF * 8000000000000000 = 0000000000003FFF0000000080000000 +ml 0000000000008000 * 8000000000000000 = 00000000000040000000000000000000 +ml 00000000FFFFFFFF * 8000000000000000 = 000000007FFFFFFF0000000080000000 +ml 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +ml 000000007FFFFFFF * 8000000000000000 = 000000003FFFFFFF0000000080000000 +ml FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF7FFFFFFFFFFFFFFF80000000 +ml 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF7FFFFFFF7FFFFFFF80000000 +mlr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000000 +mlr 000000000000FFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000000008000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr 0000000080000000 * 8000000000000000 = 00000000000000000000000000000000 +mlr 000000007FFFFFFF * 8000000000000000 = 00000000000000000000000000000000 +mlr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mlr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +ms 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +ms 0000000000000001 * 8000000000000000 = 00000000800000000000000000000001 +ms 000000000000FFFF * 8000000000000000 = 0000000080000000000000000000FFFF +ms 0000000000007FFF * 8000000000000000 = 00000000800000000000000000007FFF +ms 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 8000000000000000 = 000000008000000000000000FFFFFFFF +ms 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 8000000000000000 = 0000000080000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000001 +msr 000000000000FFFF * 8000000000000000 = 0000000000000000000000000000FFFF +msr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000007FFF +msr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * 8000000000000000 = 000000000000000000000000FFFFFFFF +msr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 8000000000000000 = 0000000000000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msg 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msg 0000000000000001 * 8000000000000000 = 80000000000000000000000000000001 +msg 000000000000FFFF * 8000000000000000 = 8000000000000000000000000000FFFF +msg 0000000000007FFF * 8000000000000000 = 80000000000000000000000000007FFF +msg 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msg 00000000FFFFFFFF * 8000000000000000 = 800000000000000000000000FFFFFFFF +msg 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msg 000000007FFFFFFF * 8000000000000000 = 8000000000000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 8000000000000000 = 8000000000000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 8000000000000000 = 80000000000000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 8000000000000000 = 80000000000000000000000000000001 +msgr 000000000000FFFF * 8000000000000000 = 8000000000000000000000000000FFFF +msgr 0000000000007FFF * 8000000000000000 = 80000000000000000000000000007FFF +msgr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msgr 00000000FFFFFFFF * 8000000000000000 = 800000000000000000000000FFFFFFFF +msgr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msgr 000000007FFFFFFF * 8000000000000000 = 8000000000000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 8000000000000000 = 8000000000000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 8000000000000000 = 80000000000000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 8000000000000000 = FFFFFFFF800000000000000000000001 +msgf 000000000000FFFF * 8000000000000000 = FFFF800080000000000000000000FFFF +msgf 0000000000007FFF * 8000000000000000 = FFFFC000800000000000000000007FFF +msgf 0000000000008000 * 8000000000000000 = FFFFC000000000000000000000008000 +msgf 00000000FFFFFFFF * 8000000000000000 = 800000008000000000000000FFFFFFFF +msgf 0000000080000000 * 8000000000000000 = C0000000000000000000000080000000 +msgf 000000007FFFFFFF * 8000000000000000 = C000000080000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 8000000000000000 = 0000000080000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 8000000000000000 = 00000000800000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 8000000000000000 = 00000000000000000000000000000001 +msgfr 000000000000FFFF * 8000000000000000 = 0000000000000000000000000000FFFF +msgfr 0000000000007FFF * 8000000000000000 = 00000000000000000000000000007FFF +msgfr 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msgfr 00000000FFFFFFFF * 8000000000000000 = 000000000000000000000000FFFFFFFF +msgfr 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msgfr 000000007FFFFFFF * 8000000000000000 = 0000000000000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 8000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 8000000000000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 8000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +msy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +msy 0000000000000001 * 8000000000000000 = 00000000800000000000000000000001 +msy 000000000000FFFF * 8000000000000000 = 0000000080000000000000000000FFFF +msy 0000000000007FFF * 8000000000000000 = 00000000800000000000000000007FFF +msy 0000000000008000 * 8000000000000000 = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 8000000000000000 = 000000008000000000000000FFFFFFFF +msy 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 8000000000000000 = 0000000080000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +m 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +m 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFFFFFF +m 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF0001 +m 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF8001 +m 0000000000008000 * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF8000 +m 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000001 +m 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000080000000 +m 000000007FFFFFFF * FFFFFFFF00000000 = 00000000FFFFFFFF0000000080000001 +m FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000001 +m 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000001 +mr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000000001 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 000000000000FFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000007FFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000000008000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr 000000007FFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000000 +mr 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000000 +mh 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mh 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF0000000000000001 +mh 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFF0001000000000000FFFF +mh 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFF80010000000000007FFF +mh 0000000000008000 * FFFFFFFF00000000 = 00000000FFFF80000000000000008000 +mh 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000100000000FFFFFFFF +mh 0000000080000000 * FFFFFFFF00000000 = 00000000800000000000000080000000 +mh 000000007FFFFFFF * FFFFFFFF00000000 = 0000000080000001000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000001FFFFFFFFFFFFFFFF +mh 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000017FFFFFFFFFFFFFFF +mlg 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * FFFFFFFF00000000 = 0000000000000000FFFFFFFF00000000 +mlg 000000000000FFFF * FFFFFFFF00000000 = 000000000000FFFEFFFF000100000000 +mlg 0000000000007FFF * FFFFFFFF00000000 = 0000000000007FFEFFFF800100000000 +mlg 0000000000008000 * FFFFFFFF00000000 = 0000000000007FFFFFFF800000000000 +mlg 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000FFFFFFFE0000000100000000 +mlg 0000000080000000 * FFFFFFFF00000000 = 000000007FFFFFFF8000000000000000 +mlg 000000007FFFFFFF * FFFFFFFF00000000 = 000000007FFFFFFE8000000100000000 +mlg FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFEFFFFFFFF0000000100000000 +mlg 8000000000000000 * FFFFFFFF00000000 = 7FFFFFFF800000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF7FFFFFFF0000000100000000 +mlgr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * FFFFFFFF00000000 = 0000000000000000FFFFFFFF00000000 +mlgr 000000000000FFFF * FFFFFFFF00000000 = 000000000000FFFEFFFF000100000000 +mlgr 0000000000007FFF * FFFFFFFF00000000 = 0000000000007FFEFFFF800100000000 +mlgr 0000000000008000 * FFFFFFFF00000000 = 0000000000007FFFFFFF800000000000 +mlgr 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000FFFFFFFE0000000100000000 +mlgr 0000000080000000 * FFFFFFFF00000000 = 000000007FFFFFFF8000000000000000 +mlgr 000000007FFFFFFF * FFFFFFFF00000000 = 000000007FFFFFFE8000000100000000 +mlgr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFEFFFFFFFF0000000100000000 +mlgr 8000000000000000 * FFFFFFFF00000000 = 7FFFFFFF800000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF7FFFFFFF0000000100000000 +ml 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +ml 0000000000000001 * FFFFFFFF00000000 = 000000000000000000000000FFFFFFFF +ml 000000000000FFFF * FFFFFFFF00000000 = 000000000000FFFE00000000FFFF0001 +ml 0000000000007FFF * FFFFFFFF00000000 = 0000000000007FFE00000000FFFF8001 +ml 0000000000008000 * FFFFFFFF00000000 = 0000000000007FFF00000000FFFF8000 +ml 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000FFFFFFFE0000000000000001 +ml 0000000080000000 * FFFFFFFF00000000 = 000000007FFFFFFF0000000080000000 +ml 000000007FFFFFFF * FFFFFFFF00000000 = 000000007FFFFFFE0000000080000001 +ml FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFFFFFFFFFEFFFFFFFF00000001 +ml 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFFFFFFFFFE7FFFFFFF00000001 +mlr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 000000000000FFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000007FFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000000008000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr 000000007FFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000000 +mlr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000000 +mlr 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000000 +ms 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +ms 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF0000000000000001 +ms 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFF0001000000000000FFFF +ms 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFF80010000000000007FFF +ms 0000000000008000 * FFFFFFFF00000000 = 00000000FFFF80000000000000008000 +ms 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000100000000FFFFFFFF +ms 0000000080000000 * FFFFFFFF00000000 = 00000000800000000000000080000000 +ms 000000007FFFFFFF * FFFFFFFF00000000 = 0000000080000001000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000001FFFFFFFFFFFFFFFF +ms 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msr 0000000000000001 * FFFFFFFF00000000 = 00000000000000000000000000000001 +msr 000000000000FFFF * FFFFFFFF00000000 = 0000000000000000000000000000FFFF +msr 0000000000007FFF * FFFFFFFF00000000 = 00000000000000000000000000007FFF +msr 0000000000008000 * FFFFFFFF00000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000000000000FFFFFFFF +msr 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * FFFFFFFF00000000 = 0000000000000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msg 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msg 0000000000000001 * FFFFFFFF00000000 = FFFFFFFF000000000000000000000001 +msg 000000000000FFFF * FFFFFFFF00000000 = FFFF000100000000000000000000FFFF +msg 0000000000007FFF * FFFFFFFF00000000 = FFFF8001000000000000000000007FFF +msg 0000000000008000 * FFFFFFFF00000000 = FFFF8000000000000000000000008000 +msg 00000000FFFFFFFF * FFFFFFFF00000000 = 000000010000000000000000FFFFFFFF +msg 0000000080000000 * FFFFFFFF00000000 = 80000000000000000000000080000000 +msg 000000007FFFFFFF * FFFFFFFF00000000 = 8000000100000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = 0000000100000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * FFFFFFFF00000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 00000001000000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * FFFFFFFF00000000 = FFFFFFFF000000000000000000000001 +msgr 000000000000FFFF * FFFFFFFF00000000 = FFFF000100000000000000000000FFFF +msgr 0000000000007FFF * FFFFFFFF00000000 = FFFF8001000000000000000000007FFF +msgr 0000000000008000 * FFFFFFFF00000000 = FFFF8000000000000000000000008000 +msgr 00000000FFFFFFFF * FFFFFFFF00000000 = 000000010000000000000000FFFFFFFF +msgr 0000000080000000 * FFFFFFFF00000000 = 80000000000000000000000080000000 +msgr 000000007FFFFFFF * FFFFFFFF00000000 = 8000000100000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = 0000000100000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * FFFFFFFF00000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 00000001000000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * FFFFFFFF00000000 = FFFFFFFFFFFFFFFF0000000000000001 +msgf 000000000000FFFF * FFFFFFFF00000000 = FFFFFFFFFFFF0001000000000000FFFF +msgf 0000000000007FFF * FFFFFFFF00000000 = FFFFFFFFFFFF80010000000000007FFF +msgf 0000000000008000 * FFFFFFFF00000000 = FFFFFFFFFFFF80000000000000008000 +msgf 00000000FFFFFFFF * FFFFFFFF00000000 = FFFFFFFF0000000100000000FFFFFFFF +msgf 0000000080000000 * FFFFFFFF00000000 = FFFFFFFF800000000000000080000000 +msgf 000000007FFFFFFF * FFFFFFFF00000000 = FFFFFFFF80000001000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = 0000000000000001FFFFFFFFFFFFFFFF +msgf 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 80000000000000017FFFFFFFFFFFFFFF +msgfr 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * FFFFFFFF00000000 = 00000000000000000000000000000001 +msgfr 000000000000FFFF * FFFFFFFF00000000 = 0000000000000000000000000000FFFF +msgfr 0000000000007FFF * FFFFFFFF00000000 = 00000000000000000000000000007FFF +msgfr 0000000000008000 * FFFFFFFF00000000 = 00000000000000000000000000008000 +msgfr 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000000000000FFFFFFFF +msgfr 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000080000000 +msgfr 000000007FFFFFFF * FFFFFFFF00000000 = 0000000000000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * FFFFFFFF00000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 00000000000000007FFFFFFFFFFFFFFF +msy 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +msy 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF0000000000000001 +msy 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFF0001000000000000FFFF +msy 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFF80010000000000007FFF +msy 0000000000008000 * FFFFFFFF00000000 = 00000000FFFF80000000000000008000 +msy 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000100000000FFFFFFFF +msy 0000000080000000 * FFFFFFFF00000000 = 00000000800000000000000080000000 +msy 000000007FFFFFFF * FFFFFFFF00000000 = 0000000080000001000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msy 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000017FFFFFFFFFFFFFFF +m 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +m 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000000 +m 000000000000FFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +m 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000000000 +m 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +m 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +m 000000007FFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mr 0000000000000001 * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mr 000000000000FFFF * 000000007FFFFFFF = 0000000000007FFF000000007FFF0001 +mr 0000000000007FFF * 000000007FFFFFFF = 0000000000003FFF000000007FFF8001 +mr 0000000000008000 * 000000007FFFFFFF = 0000000000003FFF00000000FFFF8000 +mr 00000000FFFFFFFF * 000000007FFFFFFF = 00000000FFFFFFFF0000000080000001 +mr 0000000080000000 * 000000007FFFFFFF = 00000000C00000000000000080000000 +mr 000000007FFFFFFF * 000000007FFFFFFF = 000000003FFFFFFF0000000000000001 +mr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFFFFFFFFFFFFFFFFFF80000001 +mr 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFFFFFFFFFF7FFFFFFF80000001 +mh 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mh 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000001 +mh 000000000000FFFF * 000000007FFFFFFF = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000007FFF +mh 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 000000007FFFFFFF = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mlg 000000000000FFFF * 000000007FFFFFFF = 000000000000000000007FFF7FFF0001 +mlg 0000000000007FFF * 000000007FFFFFFF = 000000000000000000003FFF7FFF8001 +mlg 0000000000008000 * 000000007FFFFFFF = 000000000000000000003FFFFFFF8000 +mlg 00000000FFFFFFFF * 000000007FFFFFFF = 00000000000000007FFFFFFE80000001 +mlg 0000000080000000 * 000000007FFFFFFF = 00000000000000003FFFFFFF80000000 +mlg 000000007FFFFFFF * 000000007FFFFFFF = 00000000000000003FFFFFFF00000001 +mlg FFFFFFFFFFFFFFFF * 000000007FFFFFFF = 000000007FFFFFFEFFFFFFFF80000001 +mlg 8000000000000000 * 000000007FFFFFFF = 000000003FFFFFFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 000000003FFFFFFF7FFFFFFF80000001 +mlgr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mlgr 000000000000FFFF * 000000007FFFFFFF = 000000000000000000007FFF7FFF0001 +mlgr 0000000000007FFF * 000000007FFFFFFF = 000000000000000000003FFF7FFF8001 +mlgr 0000000000008000 * 000000007FFFFFFF = 000000000000000000003FFFFFFF8000 +mlgr 00000000FFFFFFFF * 000000007FFFFFFF = 00000000000000007FFFFFFE80000001 +mlgr 0000000080000000 * 000000007FFFFFFF = 00000000000000003FFFFFFF80000000 +mlgr 000000007FFFFFFF * 000000007FFFFFFF = 00000000000000003FFFFFFF00000001 +mlgr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = 000000007FFFFFFEFFFFFFFF80000001 +mlgr 8000000000000000 * 000000007FFFFFFF = 000000003FFFFFFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 000000003FFFFFFF7FFFFFFF80000001 +ml 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 000000000000FFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mlr 000000000000FFFF * 000000007FFFFFFF = 0000000000007FFF000000007FFF0001 +mlr 0000000000007FFF * 000000007FFFFFFF = 0000000000003FFF000000007FFF8001 +mlr 0000000000008000 * 000000007FFFFFFF = 0000000000003FFF00000000FFFF8000 +mlr 00000000FFFFFFFF * 000000007FFFFFFF = 000000007FFFFFFE0000000080000001 +mlr 0000000080000000 * 000000007FFFFFFF = 000000003FFFFFFF0000000080000000 +mlr 000000007FFFFFFF * 000000007FFFFFFF = 000000003FFFFFFF0000000000000001 +mlr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF7FFFFFFEFFFFFFFF80000001 +mlr 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF7FFFFFFE7FFFFFFF80000001 +ms 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +ms 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000001 +ms 000000000000FFFF * 000000007FFFFFFF = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000007FFF +ms 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 000000007FFFFFFF = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msr 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +msr 000000000000FFFF * 000000007FFFFFFF = 000000007FFF0001000000000000FFFF +msr 0000000000007FFF * 000000007FFFFFFF = 000000007FFF80010000000000007FFF +msr 0000000000008000 * 000000007FFFFFFF = 00000000FFFF80000000000000008000 +msr 00000000FFFFFFFF * 000000007FFFFFFF = 000000008000000100000000FFFFFFFF +msr 0000000080000000 * 000000007FFFFFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msg 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msg 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +msg 000000000000FFFF * 000000007FFFFFFF = 00007FFF7FFF0001000000000000FFFF +msg 0000000000007FFF * 000000007FFFFFFF = 00003FFF7FFF80010000000000007FFF +msg 0000000000008000 * 000000007FFFFFFF = 00003FFFFFFF80000000000000008000 +msg 00000000FFFFFFFF * 000000007FFFFFFF = 7FFFFFFE8000000100000000FFFFFFFF +msg 0000000080000000 * 000000007FFFFFFF = 3FFFFFFF800000000000000080000000 +msg 000000007FFFFFFF * 000000007FFFFFFF = 3FFFFFFF00000001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +msgr 000000000000FFFF * 000000007FFFFFFF = 00007FFF7FFF0001000000000000FFFF +msgr 0000000000007FFF * 000000007FFFFFFF = 00003FFF7FFF80010000000000007FFF +msgr 0000000000008000 * 000000007FFFFFFF = 00003FFFFFFF80000000000000008000 +msgr 00000000FFFFFFFF * 000000007FFFFFFF = 7FFFFFFE8000000100000000FFFFFFFF +msgr 0000000080000000 * 000000007FFFFFFF = 3FFFFFFF800000000000000080000000 +msgr 000000007FFFFFFF * 000000007FFFFFFF = 3FFFFFFF00000001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000001 +msgf 000000000000FFFF * 000000007FFFFFFF = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000007FFF +msgf 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 000000007FFFFFFF = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 000000007FFFFFFF = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 000000007FFFFFFF = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +msgfr 000000000000FFFF * 000000007FFFFFFF = 00007FFF7FFF0001000000000000FFFF +msgfr 0000000000007FFF * 000000007FFFFFFF = 00003FFF7FFF80010000000000007FFF +msgfr 0000000000008000 * 000000007FFFFFFF = 00003FFFFFFF80000000000000008000 +msgfr 00000000FFFFFFFF * 000000007FFFFFFF = 7FFFFFFE8000000100000000FFFFFFFF +msgfr 0000000080000000 * 000000007FFFFFFF = 3FFFFFFF800000000000000080000000 +msgfr 000000007FFFFFFF * 000000007FFFFFFF = 3FFFFFFF00000001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +msy 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +msy 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000001 +msy 000000000000FFFF * 000000007FFFFFFF = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000007FFF +msy 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 000000007FFFFFFF = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +m 0000000000000001 * 0000000080000000 = 00000000000000000000000000000000 +m 000000000000FFFF * 0000000080000000 = 00000000000000000000000000000000 +m 0000000000007FFF * 0000000080000000 = 00000000000000000000000000000000 +m 0000000000008000 * 0000000080000000 = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +m 0000000080000000 * 0000000080000000 = 00000000000000000000000000000000 +m 000000007FFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mr 0000000000000001 * 0000000080000000 = 00000000FFFFFFFF0000000080000000 +mr 000000000000FFFF * 0000000080000000 = 00000000FFFF80000000000080000000 +mr 0000000000007FFF * 0000000080000000 = 00000000FFFFC0000000000080000000 +mr 0000000000008000 * 0000000080000000 = 00000000FFFFC0000000000000000000 +mr 00000000FFFFFFFF * 0000000080000000 = 00000000000000000000000080000000 +mr 0000000080000000 * 0000000080000000 = 00000000400000000000000000000000 +mr 000000007FFFFFFF * 0000000080000000 = 00000000C00000000000000080000000 +mr FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFF80000000 +mr 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFF80000000 +mh 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mh 0000000000000001 * 0000000080000000 = 00000000000000000000000000000001 +mh 000000000000FFFF * 0000000080000000 = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 0000000080000000 = 00000000000000000000000000007FFF +mh 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 0000000080000000 = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 0000000080000000 = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 0000000080000000 = 00000000000000000000000080000000 +mlg 000000000000FFFF * 0000000080000000 = 000000000000000000007FFF80000000 +mlg 0000000000007FFF * 0000000080000000 = 000000000000000000003FFF80000000 +mlg 0000000000008000 * 0000000080000000 = 00000000000000000000400000000000 +mlg 00000000FFFFFFFF * 0000000080000000 = 00000000000000007FFFFFFF80000000 +mlg 0000000080000000 * 0000000080000000 = 00000000000000004000000000000000 +mlg 000000007FFFFFFF * 0000000080000000 = 00000000000000003FFFFFFF80000000 +mlg FFFFFFFFFFFFFFFF * 0000000080000000 = 000000007FFFFFFFFFFFFFFF80000000 +mlg 8000000000000000 * 0000000080000000 = 00000000400000000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 0000000080000000 = 000000003FFFFFFFFFFFFFFF80000000 +mlgr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 0000000080000000 = 00000000000000000000000080000000 +mlgr 000000000000FFFF * 0000000080000000 = 000000000000000000007FFF80000000 +mlgr 0000000000007FFF * 0000000080000000 = 000000000000000000003FFF80000000 +mlgr 0000000000008000 * 0000000080000000 = 00000000000000000000400000000000 +mlgr 00000000FFFFFFFF * 0000000080000000 = 00000000000000007FFFFFFF80000000 +mlgr 0000000080000000 * 0000000080000000 = 00000000000000004000000000000000 +mlgr 000000007FFFFFFF * 0000000080000000 = 00000000000000003FFFFFFF80000000 +mlgr FFFFFFFFFFFFFFFF * 0000000080000000 = 000000007FFFFFFFFFFFFFFF80000000 +mlgr 8000000000000000 * 0000000080000000 = 00000000400000000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 0000000080000000 = 000000003FFFFFFFFFFFFFFF80000000 +ml 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +ml 0000000000000001 * 0000000080000000 = 00000000000000000000000000000000 +ml 000000000000FFFF * 0000000080000000 = 00000000000000000000000000000000 +ml 0000000000007FFF * 0000000080000000 = 00000000000000000000000000000000 +ml 0000000000008000 * 0000000080000000 = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +ml 0000000080000000 * 0000000080000000 = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 0000000080000000 = 00000000000000000000000080000000 +mlr 000000000000FFFF * 0000000080000000 = 0000000000007FFF0000000080000000 +mlr 0000000000007FFF * 0000000080000000 = 0000000000003FFF0000000080000000 +mlr 0000000000008000 * 0000000080000000 = 00000000000040000000000000000000 +mlr 00000000FFFFFFFF * 0000000080000000 = 000000007FFFFFFF0000000080000000 +mlr 0000000080000000 * 0000000080000000 = 00000000400000000000000000000000 +mlr 000000007FFFFFFF * 0000000080000000 = 000000003FFFFFFF0000000080000000 +mlr FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF7FFFFFFFFFFFFFFF80000000 +mlr 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF7FFFFFFF7FFFFFFF80000000 +ms 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +ms 0000000000000001 * 0000000080000000 = 00000000000000000000000000000001 +ms 000000000000FFFF * 0000000080000000 = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 0000000080000000 = 00000000000000000000000000007FFF +ms 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 0000000080000000 = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 0000000080000000 = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msr 0000000000000001 * 0000000080000000 = 00000000800000000000000000000001 +msr 000000000000FFFF * 0000000080000000 = 0000000080000000000000000000FFFF +msr 0000000000007FFF * 0000000080000000 = 00000000800000000000000000007FFF +msr 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +msr 00000000FFFFFFFF * 0000000080000000 = 000000008000000000000000FFFFFFFF +msr 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 0000000080000000 = 0000000080000000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +msg 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msg 0000000000000001 * 0000000080000000 = 00000000800000000000000000000001 +msg 000000000000FFFF * 0000000080000000 = 00007FFF80000000000000000000FFFF +msg 0000000000007FFF * 0000000080000000 = 00003FFF800000000000000000007FFF +msg 0000000000008000 * 0000000080000000 = 00004000000000000000000000008000 +msg 00000000FFFFFFFF * 0000000080000000 = 7FFFFFFF8000000000000000FFFFFFFF +msg 0000000080000000 * 0000000080000000 = 40000000000000000000000080000000 +msg 000000007FFFFFFF * 0000000080000000 = 3FFFFFFF80000000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 0000000080000000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF800000007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 0000000080000000 = 00000000800000000000000000000001 +msgr 000000000000FFFF * 0000000080000000 = 00007FFF80000000000000000000FFFF +msgr 0000000000007FFF * 0000000080000000 = 00003FFF800000000000000000007FFF +msgr 0000000000008000 * 0000000080000000 = 00004000000000000000000000008000 +msgr 00000000FFFFFFFF * 0000000080000000 = 7FFFFFFF8000000000000000FFFFFFFF +msgr 0000000080000000 * 0000000080000000 = 40000000000000000000000080000000 +msgr 000000007FFFFFFF * 0000000080000000 = 3FFFFFFF80000000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 0000000080000000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF800000007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 0000000080000000 = 00000000000000000000000000000001 +msgf 000000000000FFFF * 0000000080000000 = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 0000000080000000 = 00000000000000000000000000007FFF +msgf 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 0000000080000000 = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 0000000080000000 = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 0000000080000000 = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 0000000080000000 = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 0000000080000000 = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 0000000080000000 = FFFFFFFF800000000000000000000001 +msgfr 000000000000FFFF * 0000000080000000 = FFFF800080000000000000000000FFFF +msgfr 0000000000007FFF * 0000000080000000 = FFFFC000800000000000000000007FFF +msgfr 0000000000008000 * 0000000080000000 = FFFFC000000000000000000000008000 +msgfr 00000000FFFFFFFF * 0000000080000000 = 800000008000000000000000FFFFFFFF +msgfr 0000000080000000 * 0000000080000000 = C0000000000000000000000080000000 +msgfr 000000007FFFFFFF * 0000000080000000 = C000000080000000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 0000000080000000 = 0000000080000000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 0000000080000000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 0000000080000000 = 00000000800000007FFFFFFFFFFFFFFF +msy 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +msy 0000000000000001 * 0000000080000000 = 00000000000000000000000000000001 +msy 000000000000FFFF * 0000000080000000 = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 0000000080000000 = 00000000000000000000000000007FFF +msy 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 0000000080000000 = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 0000000080000000 = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 000000000000FFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +m 000000007FFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mr 0000000000000001 * 00000000FFFFFFFF = 00000000FFFFFFFF00000000FFFFFFFF +mr 000000000000FFFF * 00000000FFFFFFFF = 00000000FFFFFFFF00000000FFFF0001 +mr 0000000000007FFF * 00000000FFFFFFFF = 00000000FFFFFFFF00000000FFFF8001 +mr 0000000000008000 * 00000000FFFFFFFF = 00000000FFFFFFFF00000000FFFF8000 +mr 00000000FFFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000001 +mr 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +mr 000000007FFFFFFF * 00000000FFFFFFFF = 00000000FFFFFFFF0000000080000001 +mr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFF00000001 +mr 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFF00000001 +mh 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mh 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000001 +mh 000000000000FFFF * 00000000FFFFFFFF = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000007FFF +mh 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 00000000FFFFFFFF = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +mlg 000000000000FFFF * 00000000FFFFFFFF = 00000000000000000000FFFEFFFF0001 +mlg 0000000000007FFF * 00000000FFFFFFFF = 000000000000000000007FFEFFFF8001 +mlg 0000000000008000 * 00000000FFFFFFFF = 000000000000000000007FFFFFFF8000 +mlg 00000000FFFFFFFF * 00000000FFFFFFFF = 0000000000000000FFFFFFFE00000001 +mlg 0000000080000000 * 00000000FFFFFFFF = 00000000000000007FFFFFFF80000000 +mlg 000000007FFFFFFF * 00000000FFFFFFFF = 00000000000000007FFFFFFE80000001 +mlg FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = 00000000FFFFFFFEFFFFFFFF00000001 +mlg 8000000000000000 * 00000000FFFFFFFF = 000000007FFFFFFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 000000007FFFFFFF7FFFFFFF00000001 +mlgr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +mlgr 000000000000FFFF * 00000000FFFFFFFF = 00000000000000000000FFFEFFFF0001 +mlgr 0000000000007FFF * 00000000FFFFFFFF = 000000000000000000007FFEFFFF8001 +mlgr 0000000000008000 * 00000000FFFFFFFF = 000000000000000000007FFFFFFF8000 +mlgr 00000000FFFFFFFF * 00000000FFFFFFFF = 0000000000000000FFFFFFFE00000001 +mlgr 0000000080000000 * 00000000FFFFFFFF = 00000000000000007FFFFFFF80000000 +mlgr 000000007FFFFFFF * 00000000FFFFFFFF = 00000000000000007FFFFFFE80000001 +mlgr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = 00000000FFFFFFFEFFFFFFFF00000001 +mlgr 8000000000000000 * 00000000FFFFFFFF = 000000007FFFFFFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 000000007FFFFFFF7FFFFFFF00000001 +ml 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 000000000000FFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +mlr 000000000000FFFF * 00000000FFFFFFFF = 000000000000FFFE00000000FFFF0001 +mlr 0000000000007FFF * 00000000FFFFFFFF = 0000000000007FFE00000000FFFF8001 +mlr 0000000000008000 * 00000000FFFFFFFF = 0000000000007FFF00000000FFFF8000 +mlr 00000000FFFFFFFF * 00000000FFFFFFFF = 00000000FFFFFFFE0000000000000001 +mlr 0000000080000000 * 00000000FFFFFFFF = 000000007FFFFFFF0000000080000000 +mlr 000000007FFFFFFF * 00000000FFFFFFFF = 000000007FFFFFFE0000000080000001 +mlr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFFFFFFFFFEFFFFFFFF00000001 +mlr 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFFFFFFFFFE7FFFFFFF00000001 +ms 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +ms 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000001 +ms 000000000000FFFF * 00000000FFFFFFFF = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000007FFF +ms 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 00000000FFFFFFFF = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msr 0000000000000001 * 00000000FFFFFFFF = 00000000FFFFFFFF0000000000000001 +msr 000000000000FFFF * 00000000FFFFFFFF = 00000000FFFF0001000000000000FFFF +msr 0000000000007FFF * 00000000FFFFFFFF = 00000000FFFF80010000000000007FFF +msr 0000000000008000 * 00000000FFFFFFFF = 00000000FFFF80000000000000008000 +msr 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000100000000FFFFFFFF +msr 0000000080000000 * 00000000FFFFFFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 00000000FFFFFFFF = 0000000080000001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msg 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msg 0000000000000001 * 00000000FFFFFFFF = 00000000FFFFFFFF0000000000000001 +msg 000000000000FFFF * 00000000FFFFFFFF = 0000FFFEFFFF0001000000000000FFFF +msg 0000000000007FFF * 00000000FFFFFFFF = 00007FFEFFFF80010000000000007FFF +msg 0000000000008000 * 00000000FFFFFFFF = 00007FFFFFFF80000000000000008000 +msg 00000000FFFFFFFF * 00000000FFFFFFFF = FFFFFFFE0000000100000000FFFFFFFF +msg 0000000080000000 * 00000000FFFFFFFF = 7FFFFFFF800000000000000080000000 +msg 000000007FFFFFFF * 00000000FFFFFFFF = 7FFFFFFE80000001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 00000000FFFFFFFF = 00000000FFFFFFFF0000000000000001 +msgr 000000000000FFFF * 00000000FFFFFFFF = 0000FFFEFFFF0001000000000000FFFF +msgr 0000000000007FFF * 00000000FFFFFFFF = 00007FFEFFFF80010000000000007FFF +msgr 0000000000008000 * 00000000FFFFFFFF = 00007FFFFFFF80000000000000008000 +msgr 00000000FFFFFFFF * 00000000FFFFFFFF = FFFFFFFE0000000100000000FFFFFFFF +msgr 0000000080000000 * 00000000FFFFFFFF = 7FFFFFFF800000000000000080000000 +msgr 000000007FFFFFFF * 00000000FFFFFFFF = 7FFFFFFE80000001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000001 +msgf 000000000000FFFF * 00000000FFFFFFFF = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000007FFF +msgf 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 00000000FFFFFFFF = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 00000000FFFFFFFF = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 00000000FFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +msgfr 000000000000FFFF * 00000000FFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +msgfr 0000000000007FFF * 00000000FFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +msgfr 0000000000008000 * 00000000FFFFFFFF = FFFFFFFFFFFF80000000000000008000 +msgfr 00000000FFFFFFFF * 00000000FFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +msgfr 0000000080000000 * 00000000FFFFFFFF = FFFFFFFF800000000000000080000000 +msgfr 000000007FFFFFFF * 00000000FFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +msy 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +msy 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000001 +msy 000000000000FFFF * 00000000FFFFFFFF = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000007FFF +msy 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 00000000FFFFFFFF = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +m 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +m 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mr 00000000FFFFFFFF * 000000000000FFFF = 00000000FFFFFFFF00000000FFFF0001 +mr 0000000080000000 * 000000000000FFFF = 00000000FFFF80000000000080000000 +mr 000000007FFFFFFF * 000000000000FFFF = 0000000000007FFF000000007FFF0001 +mr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFFFFFFFFFFFFFFFFFF0001 +mr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFFFFFF7FFFFFFFFFFF0001 +mh 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mh 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +mh 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +mh 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlg 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlg 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlg 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlg 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000FFFEFFFF0001 +mlg 0000000080000000 * 000000000000FFFF = 000000000000000000007FFF80000000 +mlg 000000007FFFFFFF * 000000000000FFFF = 000000000000000000007FFF7FFF0001 +mlg FFFFFFFFFFFFFFFF * 000000000000FFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlg 8000000000000000 * 000000000000FFFF = 0000000000007FFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000007FFF7FFFFFFFFFFF0001 +mlgr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlgr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlgr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlgr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlgr 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000FFFEFFFF0001 +mlgr 0000000080000000 * 000000000000FFFF = 000000000000000000007FFF80000000 +mlgr 000000007FFFFFFF * 000000000000FFFF = 000000000000000000007FFF7FFF0001 +mlgr FFFFFFFFFFFFFFFF * 000000000000FFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlgr 8000000000000000 * 000000000000FFFF = 0000000000007FFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000007FFF7FFFFFFFFFFF0001 +ml 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +ml 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlr 00000000FFFFFFFF * 000000000000FFFF = 000000000000FFFE00000000FFFF0001 +mlr 0000000080000000 * 000000000000FFFF = 0000000000007FFF0000000080000000 +mlr 000000007FFFFFFF * 000000000000FFFF = 0000000000007FFF000000007FFF0001 +mlr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF0000FFFEFFFFFFFFFFFF0001 +mlr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF0000FFFE7FFFFFFFFFFF0001 +ms 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +ms 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +ms 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +ms 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msr 00000000FFFFFFFF * 000000000000FFFF = 00000000FFFF000100000000FFFFFFFF +msr 0000000080000000 * 000000000000FFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 000000000000FFFF = 000000007FFF0001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msg 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msg 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msg 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msg 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msg 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msg 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msg 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msg 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msgr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msgr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msgr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msgr 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msgr 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msgr 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +msgf 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +msgf 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 000000000000FFFF = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 000000000000FFFF = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msgfr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msgfr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msgfr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msgfr 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msgfr 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msgfr 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +msy 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +msy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +m 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000000 +m 000000000000FFFF * 0000000000007FFF = 00000000000000000000000000000000 +m 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000000000 +m 0000000000008000 * 0000000000007FFF = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +m 0000000080000000 * 0000000000007FFF = 00000000000000000000000000000000 +m 000000007FFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mr 0000000000000001 * 0000000000007FFF = 00000000000000000000000000007FFF +mr 000000000000FFFF * 0000000000007FFF = 0000000000000000000000007FFE8001 +mr 0000000000007FFF * 0000000000007FFF = 0000000000000000000000003FFF0001 +mr 0000000000008000 * 0000000000007FFF = 0000000000000000000000003FFF8000 +mr 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFFFFFF00000000FFFF8001 +mr 0000000080000000 * 0000000000007FFF = 00000000FFFFC0000000000080000000 +mr 000000007FFFFFFF * 0000000000007FFF = 0000000000003FFF000000007FFF8001 +mr FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFFFFFFFFFFFFFFFFFF8001 +mr 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFFFFFF7FFFFFFFFFFF8001 +mh 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mh 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000001 +mh 000000000000FFFF * 0000000000007FFF = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000007FFF +mh 0000000000008000 * 0000000000007FFF = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 0000000000007FFF = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 0000000000007FFF = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 0000000000007FFF = 00000000000000000000000000007FFF +mlg 000000000000FFFF * 0000000000007FFF = 0000000000000000000000007FFE8001 +mlg 0000000000007FFF * 0000000000007FFF = 0000000000000000000000003FFF0001 +mlg 0000000000008000 * 0000000000007FFF = 0000000000000000000000003FFF8000 +mlg 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000007FFEFFFF8001 +mlg 0000000080000000 * 0000000000007FFF = 000000000000000000003FFF80000000 +mlg 000000007FFFFFFF * 0000000000007FFF = 000000000000000000003FFF7FFF8001 +mlg FFFFFFFFFFFFFFFF * 0000000000007FFF = 0000000000007FFEFFFFFFFFFFFF8001 +mlg 8000000000000000 * 0000000000007FFF = 0000000000003FFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 0000000000007FFF = 0000000000003FFF7FFFFFFFFFFF8001 +mlgr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 0000000000007FFF = 00000000000000000000000000007FFF +mlgr 000000000000FFFF * 0000000000007FFF = 0000000000000000000000007FFE8001 +mlgr 0000000000007FFF * 0000000000007FFF = 0000000000000000000000003FFF0001 +mlgr 0000000000008000 * 0000000000007FFF = 0000000000000000000000003FFF8000 +mlgr 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000007FFEFFFF8001 +mlgr 0000000080000000 * 0000000000007FFF = 000000000000000000003FFF80000000 +mlgr 000000007FFFFFFF * 0000000000007FFF = 000000000000000000003FFF7FFF8001 +mlgr FFFFFFFFFFFFFFFF * 0000000000007FFF = 0000000000007FFEFFFFFFFFFFFF8001 +mlgr 8000000000000000 * 0000000000007FFF = 0000000000003FFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 0000000000003FFF7FFFFFFFFFFF8001 +ml 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +ml 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000000 +ml 000000000000FFFF * 0000000000007FFF = 00000000000000000000000000000000 +ml 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000000000 +ml 0000000000008000 * 0000000000007FFF = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +ml 0000000080000000 * 0000000000007FFF = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 0000000000007FFF = 00000000000000000000000000007FFF +mlr 000000000000FFFF * 0000000000007FFF = 0000000000000000000000007FFE8001 +mlr 0000000000007FFF * 0000000000007FFF = 0000000000000000000000003FFF0001 +mlr 0000000000008000 * 0000000000007FFF = 0000000000000000000000003FFF8000 +mlr 00000000FFFFFFFF * 0000000000007FFF = 0000000000007FFE00000000FFFF8001 +mlr 0000000080000000 * 0000000000007FFF = 0000000000003FFF0000000080000000 +mlr 000000007FFFFFFF * 0000000000007FFF = 0000000000003FFF000000007FFF8001 +mlr FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00007FFEFFFFFFFFFFFF8001 +mlr 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF00007FFE7FFFFFFFFFFF8001 +ms 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +ms 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000001 +ms 000000000000FFFF * 0000000000007FFF = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000007FFF +ms 0000000000008000 * 0000000000007FFF = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 0000000000007FFF = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 0000000000007FFF = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msr 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +msr 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +msr 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +msr 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +msr 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFF800100000000FFFFFFFF +msr 0000000080000000 * 0000000000007FFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 0000000000007FFF = 000000007FFF8001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +msg 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msg 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +msg 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +msg 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +msg 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +msg 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +msg 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +msg 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +msgr 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +msgr 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +msgr 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +msgr 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +msgr 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +msgr 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000001 +msgf 000000000000FFFF * 0000000000007FFF = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000007FFF +msgf 0000000000008000 * 0000000000007FFF = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 0000000000007FFF = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 0000000000007FFF = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 0000000000007FFF = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 0000000000007FFF = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 0000000000007FFF = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +msgfr 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +msgfr 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +msgfr 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +msgfr 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +msgfr 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +msgfr 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +msy 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +msy 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000001 +msy 000000000000FFFF * 0000000000007FFF = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000007FFF +msy 0000000000008000 * 0000000000007FFF = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 0000000000007FFF = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 0000000000007FFF = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +m 0000000000000001 * 0000000000008000 = 00000000000000000000000000000000 +m 000000000000FFFF * 0000000000008000 = 00000000000000000000000000000000 +m 0000000000007FFF * 0000000000008000 = 00000000000000000000000000000000 +m 0000000000008000 * 0000000000008000 = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +m 0000000080000000 * 0000000000008000 = 00000000000000000000000000000000 +m 000000007FFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mr 0000000000000001 * 0000000000008000 = 00000000000000000000000000008000 +mr 000000000000FFFF * 0000000000008000 = 0000000000000000000000007FFF8000 +mr 0000000000007FFF * 0000000000008000 = 0000000000000000000000003FFF8000 +mr 0000000000008000 * 0000000000008000 = 00000000000000000000000040000000 +mr 00000000FFFFFFFF * 0000000000008000 = 00000000FFFFFFFF00000000FFFF8000 +mr 0000000080000000 * 0000000000008000 = 00000000FFFFC0000000000000000000 +mr 000000007FFFFFFF * 0000000000008000 = 0000000000003FFF00000000FFFF8000 +mr FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000 +mr 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFFFFFFFFFF7FFFFFFFFFFF8000 +mh 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mh 0000000000000001 * 0000000000008000 = 00000000000000000000000000000001 +mh 000000000000FFFF * 0000000000008000 = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 0000000000008000 = 00000000000000000000000000007FFF +mh 0000000000008000 * 0000000000008000 = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 0000000000008000 = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 0000000000008000 = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mlg 0000000000000001 * 0000000000008000 = 00000000000000000000000000008000 +mlg 000000000000FFFF * 0000000000008000 = 0000000000000000000000007FFF8000 +mlg 0000000000007FFF * 0000000000008000 = 0000000000000000000000003FFF8000 +mlg 0000000000008000 * 0000000000008000 = 00000000000000000000000040000000 +mlg 00000000FFFFFFFF * 0000000000008000 = 000000000000000000007FFFFFFF8000 +mlg 0000000080000000 * 0000000000008000 = 00000000000000000000400000000000 +mlg 000000007FFFFFFF * 0000000000008000 = 000000000000000000003FFFFFFF8000 +mlg FFFFFFFFFFFFFFFF * 0000000000008000 = 0000000000007FFFFFFFFFFFFFFF8000 +mlg 8000000000000000 * 0000000000008000 = 00000000000040000000000000000000 +mlg 7FFFFFFFFFFFFFFF * 0000000000008000 = 0000000000003FFFFFFFFFFFFFFF8000 +mlgr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mlgr 0000000000000001 * 0000000000008000 = 00000000000000000000000000008000 +mlgr 000000000000FFFF * 0000000000008000 = 0000000000000000000000007FFF8000 +mlgr 0000000000007FFF * 0000000000008000 = 0000000000000000000000003FFF8000 +mlgr 0000000000008000 * 0000000000008000 = 00000000000000000000000040000000 +mlgr 00000000FFFFFFFF * 0000000000008000 = 000000000000000000007FFFFFFF8000 +mlgr 0000000080000000 * 0000000000008000 = 00000000000000000000400000000000 +mlgr 000000007FFFFFFF * 0000000000008000 = 000000000000000000003FFFFFFF8000 +mlgr FFFFFFFFFFFFFFFF * 0000000000008000 = 0000000000007FFFFFFFFFFFFFFF8000 +mlgr 8000000000000000 * 0000000000008000 = 00000000000040000000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 0000000000008000 = 0000000000003FFFFFFFFFFFFFFF8000 +ml 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +ml 0000000000000001 * 0000000000008000 = 00000000000000000000000000000000 +ml 000000000000FFFF * 0000000000008000 = 00000000000000000000000000000000 +ml 0000000000007FFF * 0000000000008000 = 00000000000000000000000000000000 +ml 0000000000008000 * 0000000000008000 = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +ml 0000000080000000 * 0000000000008000 = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mlr 0000000000000001 * 0000000000008000 = 00000000000000000000000000008000 +mlr 000000000000FFFF * 0000000000008000 = 0000000000000000000000007FFF8000 +mlr 0000000000007FFF * 0000000000008000 = 0000000000000000000000003FFF8000 +mlr 0000000000008000 * 0000000000008000 = 00000000000000000000000040000000 +mlr 00000000FFFFFFFF * 0000000000008000 = 0000000000007FFF00000000FFFF8000 +mlr 0000000080000000 * 0000000000008000 = 00000000000040000000000000000000 +mlr 000000007FFFFFFF * 0000000000008000 = 0000000000003FFF00000000FFFF8000 +mlr FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00007FFFFFFFFFFFFFFF8000 +mlr 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF00007FFF7FFFFFFFFFFF8000 +ms 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +ms 0000000000000001 * 0000000000008000 = 00000000000000000000000000000001 +ms 000000000000FFFF * 0000000000008000 = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 0000000000008000 = 00000000000000000000000000007FFF +ms 0000000000008000 * 0000000000008000 = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 0000000000008000 = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 0000000000008000 = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msr 0000000000000001 * 0000000000008000 = 00000000000080000000000000000001 +msr 000000000000FFFF * 0000000000008000 = 000000007FFF8000000000000000FFFF +msr 0000000000007FFF * 0000000000008000 = 000000003FFF80000000000000007FFF +msr 0000000000008000 * 0000000000008000 = 00000000400000000000000000008000 +msr 00000000FFFFFFFF * 0000000000008000 = 00000000FFFF800000000000FFFFFFFF +msr 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +msr 000000007FFFFFFF * 0000000000008000 = 00000000FFFF8000000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF8000FFFFFFFFFFFFFFFF +msr 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFFFFFF80007FFFFFFFFFFFFFFF +msg 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msg 0000000000000001 * 0000000000008000 = 00000000000080000000000000000001 +msg 000000000000FFFF * 0000000000008000 = 000000007FFF8000000000000000FFFF +msg 0000000000007FFF * 0000000000008000 = 000000003FFF80000000000000007FFF +msg 0000000000008000 * 0000000000008000 = 00000000400000000000000000008000 +msg 00000000FFFFFFFF * 0000000000008000 = 00007FFFFFFF800000000000FFFFFFFF +msg 0000000080000000 * 0000000000008000 = 00004000000000000000000080000000 +msg 000000007FFFFFFF * 0000000000008000 = 00003FFFFFFF8000000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF8000FFFFFFFFFFFFFFFF +msg 8000000000000000 * 0000000000008000 = 00000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF80007FFFFFFFFFFFFFFF +msgr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msgr 0000000000000001 * 0000000000008000 = 00000000000080000000000000000001 +msgr 000000000000FFFF * 0000000000008000 = 000000007FFF8000000000000000FFFF +msgr 0000000000007FFF * 0000000000008000 = 000000003FFF80000000000000007FFF +msgr 0000000000008000 * 0000000000008000 = 00000000400000000000000000008000 +msgr 00000000FFFFFFFF * 0000000000008000 = 00007FFFFFFF800000000000FFFFFFFF +msgr 0000000080000000 * 0000000000008000 = 00004000000000000000000080000000 +msgr 000000007FFFFFFF * 0000000000008000 = 00003FFFFFFF8000000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF8000FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 0000000000008000 = 00000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF80007FFFFFFFFFFFFFFF +msgf 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msgf 0000000000000001 * 0000000000008000 = 00000000000000000000000000000001 +msgf 000000000000FFFF * 0000000000008000 = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 0000000000008000 = 00000000000000000000000000007FFF +msgf 0000000000008000 * 0000000000008000 = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 0000000000008000 = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 0000000000008000 = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 0000000000008000 = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 0000000000008000 = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 0000000000008000 = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msgfr 0000000000000001 * 0000000000008000 = 00000000000080000000000000000001 +msgfr 000000000000FFFF * 0000000000008000 = 000000007FFF8000000000000000FFFF +msgfr 0000000000007FFF * 0000000000008000 = 000000003FFF80000000000000007FFF +msgfr 0000000000008000 * 0000000000008000 = 00000000400000000000000000008000 +msgfr 00000000FFFFFFFF * 0000000000008000 = 00007FFFFFFF800000000000FFFFFFFF +msgfr 0000000080000000 * 0000000000008000 = 00004000000000000000000080000000 +msgfr 000000007FFFFFFF * 0000000000008000 = 00003FFFFFFF8000000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF8000FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 0000000000008000 = 00000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFFFFFF80007FFFFFFFFFFFFFFF +msy 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +msy 0000000000000001 * 0000000000008000 = 00000000000000000000000000000001 +msy 000000000000FFFF * 0000000000008000 = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 0000000000008000 = 00000000000000000000000000007FFF +msy 0000000000008000 * 0000000000008000 = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 0000000000008000 = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 0000000000008000 = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +m 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +m 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +m 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +m 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +m 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +m FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +m 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +m 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +mr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mr 00000000FFFFFFFF * 000000000000FFFF = 00000000FFFFFFFF00000000FFFF0001 +mr 0000000080000000 * 000000000000FFFF = 00000000FFFF80000000000080000000 +mr 000000007FFFFFFF * 000000000000FFFF = 0000000000007FFF000000007FFF0001 +mr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFFFFFFFFFFFFFFFFFF0001 +mr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFFFFFF7FFFFFFFFFFF0001 +mh 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mh 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +mh 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +mh 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +mh 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +mh 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +mh 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +mh 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +mh FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mh 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mh 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mlg 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlg 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlg 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlg 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlg 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlg 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000FFFEFFFF0001 +mlg 0000000080000000 * 000000000000FFFF = 000000000000000000007FFF80000000 +mlg 000000007FFFFFFF * 000000000000FFFF = 000000000000000000007FFF7FFF0001 +mlg FFFFFFFFFFFFFFFF * 000000000000FFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlg 8000000000000000 * 000000000000FFFF = 0000000000007FFF8000000000000000 +mlg 7FFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000007FFF7FFFFFFFFFFF0001 +mlgr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlgr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlgr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlgr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlgr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlgr 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000FFFEFFFF0001 +mlgr 0000000080000000 * 000000000000FFFF = 000000000000000000007FFF80000000 +mlgr 000000007FFFFFFF * 000000000000FFFF = 000000000000000000007FFF7FFF0001 +mlgr FFFFFFFFFFFFFFFF * 000000000000FFFF = 000000000000FFFEFFFFFFFFFFFF0001 +mlgr 8000000000000000 * 000000000000FFFF = 0000000000007FFF8000000000000000 +mlgr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000007FFF7FFFFFFFFFFF0001 +ml 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +ml 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +ml 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +ml FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +ml 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +ml 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +mlr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mlr 0000000000000001 * 000000000000FFFF = 0000000000000000000000000000FFFF +mlr 000000000000FFFF * 000000000000FFFF = 000000000000000000000000FFFE0001 +mlr 0000000000007FFF * 000000000000FFFF = 0000000000000000000000007FFE8001 +mlr 0000000000008000 * 000000000000FFFF = 0000000000000000000000007FFF8000 +mlr 00000000FFFFFFFF * 000000000000FFFF = 000000000000FFFE00000000FFFF0001 +mlr 0000000080000000 * 000000000000FFFF = 0000000000007FFF0000000080000000 +mlr 000000007FFFFFFF * 000000000000FFFF = 0000000000007FFF000000007FFF0001 +mlr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF0000FFFEFFFFFFFFFFFF0001 +mlr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mlr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF0000FFFE7FFFFFFFFFFF0001 +ms 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +ms 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +ms 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +ms 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +ms 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +ms 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +ms 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +ms 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +ms FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +ms 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +ms 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +msr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msr 00000000FFFFFFFF * 000000000000FFFF = 00000000FFFF000100000000FFFFFFFF +msr 0000000080000000 * 000000000000FFFF = 00000000800000000000000080000000 +msr 000000007FFFFFFF * 000000000000FFFF = 000000007FFF0001000000007FFFFFFF +msr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msg 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msg 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msg 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msg 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msg 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msg 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msg 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msg 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msg FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msg 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msg 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msgr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msgr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msgr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msgr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msgr 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msgr 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msgr 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msgr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msgr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msgr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msgf 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgf 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +msgf 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +msgf 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +msgf 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +msgf 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +msgf 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +msgf 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +msgf FFFFFFFFFFFFFFFF * 000000000000FFFF = 0000000000000000FFFFFFFFFFFFFFFF +msgf 8000000000000000 * 000000000000FFFF = 00000000000000008000000000000000 +msgf 7FFFFFFFFFFFFFFF * 000000000000FFFF = 00000000000000007FFFFFFFFFFFFFFF +msgfr 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msgfr 0000000000000001 * 000000000000FFFF = 000000000000FFFF0000000000000001 +msgfr 000000000000FFFF * 000000000000FFFF = 00000000FFFE0001000000000000FFFF +msgfr 0000000000007FFF * 000000000000FFFF = 000000007FFE80010000000000007FFF +msgfr 0000000000008000 * 000000000000FFFF = 000000007FFF80000000000000008000 +msgfr 00000000FFFFFFFF * 000000000000FFFF = 0000FFFEFFFF000100000000FFFFFFFF +msgfr 0000000080000000 * 000000000000FFFF = 00007FFF800000000000000080000000 +msgfr 000000007FFFFFFF * 000000000000FFFF = 00007FFF7FFF0001000000007FFFFFFF +msgfr FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFFFFFF0001FFFFFFFFFFFFFFFF +msgfr 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msgfr 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFFFFFF00017FFFFFFFFFFFFFFF +msy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +msy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +msy 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +msy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +msy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +msy 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +msy 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +msy 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +msy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +msy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +msy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mhi 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mhi 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +mhi 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +mhi 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +mhi 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +mhi 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +mhi 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +mhi 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +mhi FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhi 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mhi 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mhi 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mhi 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +mhi 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +mhi 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +mhi 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +mhi 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +mhi 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +mhi 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +mhi FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +mhi 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mhi 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +mhi 0000000000000000 * FFFFFFFFFFFF8000 = 00000000000000000000000000000000 +mhi 0000000000000001 * FFFFFFFFFFFF8000 = 00000000FFFF80000000000000000001 +mhi 000000000000FFFF * FFFFFFFFFFFF8000 = 0000000080008000000000000000FFFF +mhi 0000000000007FFF * FFFFFFFFFFFF8000 = 00000000C00080000000000000007FFF +mhi 0000000000008000 * FFFFFFFFFFFF8000 = 00000000C00000000000000000008000 +mhi 00000000FFFFFFFF * FFFFFFFFFFFF8000 = 000000000000800000000000FFFFFFFF +mhi 0000000080000000 * FFFFFFFFFFFF8000 = 00000000000000000000000080000000 +mhi 000000007FFFFFFF * FFFFFFFFFFFF8000 = 0000000000008000000000007FFFFFFF +mhi FFFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +mhi 8000000000000000 * FFFFFFFFFFFF8000 = 80000000000000008000000000000000 +mhi 7FFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +mhi 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mhi 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +mhi 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +mhi 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +mhi 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +mhi 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFF800100000000FFFFFFFF +mhi 0000000080000000 * 0000000000007FFF = 00000000800000000000000080000000 +mhi 000000007FFFFFFF * 0000000000007FFF = 000000007FFF8001000000007FFFFFFF +mhi FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mhi 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mhi 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +mghi 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mghi 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +mghi 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +mghi 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +mghi 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +mghi 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +mghi 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +mghi 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +mghi FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +mghi 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +mghi 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +mghi 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mghi 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +mghi 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +mghi 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +mghi 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +mghi 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +mghi 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +mghi 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +mghi FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +mghi 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mghi 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +mghi 0000000000000000 * FFFFFFFFFFFF8000 = 00000000000000000000000000000000 +mghi 0000000000000001 * FFFFFFFFFFFF8000 = FFFFFFFFFFFF80000000000000000001 +mghi 000000000000FFFF * FFFFFFFFFFFF8000 = FFFFFFFF80008000000000000000FFFF +mghi 0000000000007FFF * FFFFFFFFFFFF8000 = FFFFFFFFC00080000000000000007FFF +mghi 0000000000008000 * FFFFFFFFFFFF8000 = FFFFFFFFC00000000000000000008000 +mghi 00000000FFFFFFFF * FFFFFFFFFFFF8000 = FFFF80000000800000000000FFFFFFFF +mghi 0000000080000000 * FFFFFFFFFFFF8000 = FFFFC000000000000000000080000000 +mghi 000000007FFFFFFF * FFFFFFFFFFFF8000 = FFFFC00000008000000000007FFFFFFF +mghi FFFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 0000000000008000FFFFFFFFFFFFFFFF +mghi 8000000000000000 * FFFFFFFFFFFF8000 = 00000000000000008000000000000000 +mghi 7FFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 00000000000080007FFFFFFFFFFFFFFF +mghi 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mghi 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +mghi 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +mghi 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +mghi 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +mghi 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +mghi 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +mghi 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +mghi FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mghi 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mghi 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.vgtest new file mode 100644 index 000000000..580765c8d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul.vgtest @@ -0,0 +1 @@ +prog: mul diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.c new file mode 100644 index 000000000..f3a0c39fc --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.c @@ -0,0 +1,51 @@ +#include +#include "mul.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + ximmsweep(MSFI, 00000000, 00000000); + ximmsweep(MSFI, ffffffff, ffffffff); + ximmsweep(MSFI, ffffffff, ffff8000); + ximmsweep(MSFI, 00000000, 00007fff); + ximmsweep(MSFI, 00000000, 00007fff); + ximmsweep(MSFI, 00000000, 00007fff); + ximmsweep(MSFI, ffffffff, 80000000); + ximmsweep(MSFI, 00000000, 7fffffff); + ximmsweep(MSGFI, 00000000, 00000000); + ximmsweep(MSGFI, ffffffff, ffffffff); + ximmsweep(MSGFI, ffffffff, ffff8000); + ximmsweep(MSGFI, 00000000, 00007fff); + ximmsweep(MSGFI, 00000000, 00007fff); + ximmsweep(MSGFI, 00000000, 00007fff); + ximmsweep(MSGFI, ffffffff, 80000000); + ximmsweep(MSGFI, 00000000, 7fffffff); + +} + + +static void do_regmem_insns(unsigned long m2) +{ + mhysweep(m2); + mfysweep(m2); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x7ffffffffffffffful); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + do_imm_insns(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stdout.exp new file mode 100644 index 000000000..a94288aa3 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.stdout.exp @@ -0,0 +1,484 @@ +mhy 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +mhy 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +mhy 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 0000000000000000 = 00000000000000000000000000000000 +mfy 000000000000FFFF * 0000000000000000 = 00000000000000000000000000000000 +mfy 0000000000007FFF * 0000000000000000 = 00000000000000000000000000000000 +mfy 0000000000008000 * 0000000000000000 = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mfy 0000000080000000 * 0000000000000000 = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 0000000000000000 = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 7FFFFFFFFFFFFFFF = 0000000000007FFF0000000000000001 +mhy 000000000000FFFF * 7FFFFFFFFFFFFFFF = 000000007FFE8001000000000000FFFF +mhy 0000000000007FFF * 7FFFFFFFFFFFFFFF = 000000003FFF00010000000000007FFF +mhy 0000000000008000 * 7FFFFFFFFFFFFFFF = 000000003FFF80000000000000008000 +mhy 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFF800100000000FFFFFFFF +mhy 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000800000000000000080000000 +mhy 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000007FFF8001000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +mfy 0000000000000000 * 7FFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 7FFFFFFFFFFFFFFF = 0000000000000000000000007FFFFFFF +mfy 000000000000FFFF * 7FFFFFFFFFFFFFFF = 0000000000007FFF000000007FFF0001 +mfy 0000000000007FFF * 7FFFFFFFFFFFFFFF = 0000000000003FFF000000007FFF8001 +mfy 0000000000008000 * 7FFFFFFFFFFFFFFF = 0000000000003FFF00000000FFFF8000 +mfy 00000000FFFFFFFF * 7FFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +mfy 0000000080000000 * 7FFFFFFFFFFFFFFF = 00000000C00000000000000080000000 +mfy 000000007FFFFFFF * 7FFFFFFFFFFFFFFF = 000000003FFFFFFF0000000000000001 +mfy FFFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFFFFFFFFFF80000001 +mfy 8000000000000000 * 7FFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 7FFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF7FFFFFFF80000001 +mhy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 8000000000000000 = 00000000FFFF80000000000000000001 +mhy 000000000000FFFF * 8000000000000000 = 0000000080008000000000000000FFFF +mhy 0000000000007FFF * 8000000000000000 = 00000000C00080000000000000007FFF +mhy 0000000000008000 * 8000000000000000 = 00000000C00000000000000000008000 +mhy 00000000FFFFFFFF * 8000000000000000 = 000000000000800000000000FFFFFFFF +mhy 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 8000000000000000 = 0000000000008000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 8000000000000000 = 00000000FFFFFFFF0000000080000000 +mfy 000000000000FFFF * 8000000000000000 = 00000000FFFF80000000000080000000 +mfy 0000000000007FFF * 8000000000000000 = 00000000FFFFC0000000000080000000 +mfy 0000000000008000 * 8000000000000000 = 00000000FFFFC0000000000000000000 +mfy 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000080000000 +mfy 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mfy 000000007FFFFFFF * 8000000000000000 = 00000000C00000000000000080000000 +mfy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF80000000 +mfy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF80000000 +mhy 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +mhy 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +mhy 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +mhy 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +mhy 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +mhy 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +mhy 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +mhy 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +mfy 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFFFFFF +mfy 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF0001 +mfy 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8001 +mfy 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF00000000FFFF8000 +mfy 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 00000000000000000000000000000001 +mfy 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000080000000 +mfy 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000080000001 +mfy FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000000FFFFFFFF00000001 +mfy 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000007FFFFFFF00000001 +mhy 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 7FFFFFFF00000000 = 0000000000007FFF0000000000000001 +mhy 000000000000FFFF * 7FFFFFFF00000000 = 000000007FFE8001000000000000FFFF +mhy 0000000000007FFF * 7FFFFFFF00000000 = 000000003FFF00010000000000007FFF +mhy 0000000000008000 * 7FFFFFFF00000000 = 000000003FFF80000000000000008000 +mhy 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000FFFF800100000000FFFFFFFF +mhy 0000000080000000 * 7FFFFFFF00000000 = 00000000800000000000000080000000 +mhy 000000007FFFFFFF * 7FFFFFFF00000000 = 000000007FFF8001000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +mfy 0000000000000000 * 7FFFFFFF00000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 7FFFFFFF00000000 = 0000000000000000000000007FFFFFFF +mfy 000000000000FFFF * 7FFFFFFF00000000 = 0000000000007FFF000000007FFF0001 +mfy 0000000000007FFF * 7FFFFFFF00000000 = 0000000000003FFF000000007FFF8001 +mfy 0000000000008000 * 7FFFFFFF00000000 = 0000000000003FFF00000000FFFF8000 +mfy 00000000FFFFFFFF * 7FFFFFFF00000000 = 00000000FFFFFFFF0000000080000001 +mfy 0000000080000000 * 7FFFFFFF00000000 = 00000000C00000000000000080000000 +mfy 000000007FFFFFFF * 7FFFFFFF00000000 = 000000003FFFFFFF0000000000000001 +mfy FFFFFFFFFFFFFFFF * 7FFFFFFF00000000 = FFFFFFFFFFFFFFFFFFFFFFFF80000001 +mfy 8000000000000000 * 7FFFFFFF00000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF7FFFFFFF80000001 +mhy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 8000000000000000 = 00000000FFFF80000000000000000001 +mhy 000000000000FFFF * 8000000000000000 = 0000000080008000000000000000FFFF +mhy 0000000000007FFF * 8000000000000000 = 00000000C00080000000000000007FFF +mhy 0000000000008000 * 8000000000000000 = 00000000C00000000000000000008000 +mhy 00000000FFFFFFFF * 8000000000000000 = 000000000000800000000000FFFFFFFF +mhy 0000000080000000 * 8000000000000000 = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 8000000000000000 = 0000000000008000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 8000000000000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 8000000000000000 = 00000000FFFFFFFF0000000080000000 +mfy 000000000000FFFF * 8000000000000000 = 00000000FFFF80000000000080000000 +mfy 0000000000007FFF * 8000000000000000 = 00000000FFFFC0000000000080000000 +mfy 0000000000008000 * 8000000000000000 = 00000000FFFFC0000000000000000000 +mfy 00000000FFFFFFFF * 8000000000000000 = 00000000000000000000000080000000 +mfy 0000000080000000 * 8000000000000000 = 00000000400000000000000000000000 +mfy 000000007FFFFFFF * 8000000000000000 = 00000000C00000000000000080000000 +mfy FFFFFFFFFFFFFFFF * 8000000000000000 = FFFFFFFF00000000FFFFFFFF80000000 +mfy 8000000000000000 * 8000000000000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 8000000000000000 = 7FFFFFFF000000007FFFFFFF80000000 +mhy 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF0000000000000001 +mhy 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFF0001000000000000FFFF +mhy 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFF80010000000000007FFF +mhy 0000000000008000 * FFFFFFFF00000000 = 00000000FFFF80000000000000008000 +mhy 00000000FFFFFFFF * FFFFFFFF00000000 = 000000000000000100000000FFFFFFFF +mhy 0000000080000000 * FFFFFFFF00000000 = 00000000800000000000000080000000 +mhy 000000007FFFFFFF * FFFFFFFF00000000 = 0000000080000001000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000001FFFFFFFFFFFFFFFF +mhy 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000017FFFFFFFFFFFFFFF +mfy 0000000000000000 * FFFFFFFF00000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFFFFFF +mfy 000000000000FFFF * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF0001 +mfy 0000000000007FFF * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF8001 +mfy 0000000000008000 * FFFFFFFF00000000 = 00000000FFFFFFFF00000000FFFF8000 +mfy 00000000FFFFFFFF * FFFFFFFF00000000 = 00000000000000000000000000000001 +mfy 0000000080000000 * FFFFFFFF00000000 = 00000000000000000000000080000000 +mfy 000000007FFFFFFF * FFFFFFFF00000000 = 00000000FFFFFFFF0000000080000001 +mfy FFFFFFFFFFFFFFFF * FFFFFFFF00000000 = FFFFFFFF00000000FFFFFFFF00000001 +mfy 8000000000000000 * FFFFFFFF00000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * FFFFFFFF00000000 = 7FFFFFFF000000007FFFFFFF00000001 +mhy 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000001 +mhy 000000000000FFFF * 000000007FFFFFFF = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000007FFF +mhy 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 000000007FFFFFFF = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 000000000000FFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 0000000000007FFF * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 0000000000008000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 0000000080000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 000000007FFFFFFF = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 0000000080000000 = 00000000000000000000000000000001 +mhy 000000000000FFFF * 0000000080000000 = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 0000000080000000 = 00000000000000000000000000007FFF +mhy 0000000000008000 * 0000000080000000 = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 0000000080000000 = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 0000000080000000 = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 0000000080000000 = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 0000000080000000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 0000000080000000 = 00000000000000000000000000000000 +mfy 000000000000FFFF * 0000000080000000 = 00000000000000000000000000000000 +mfy 0000000000007FFF * 0000000080000000 = 00000000000000000000000000000000 +mfy 0000000000008000 * 0000000080000000 = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +mfy 0000000080000000 * 0000000080000000 = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 0000000080000000 = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 0000000080000000 = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 0000000080000000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 0000000080000000 = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000001 +mhy 000000000000FFFF * 00000000FFFFFFFF = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000007FFF +mhy 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 00000000FFFFFFFF = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 00000000FFFFFFFF = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 000000000000FFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 0000000000007FFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 0000000000008000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 0000000080000000 * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 00000000FFFFFFFF = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 00000000FFFFFFFF = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 00000000FFFFFFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 00000000FFFFFFFF = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +mhy 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +mhy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000001 +mhy 000000000000FFFF * 0000000000007FFF = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000007FFF +mhy 0000000000008000 * 0000000000007FFF = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 0000000000007FFF = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 0000000000007FFF = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 0000000000007FFF = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 0000000000007FFF = 00000000000000000000000000000000 +mfy 000000000000FFFF * 0000000000007FFF = 00000000000000000000000000000000 +mfy 0000000000007FFF * 0000000000007FFF = 00000000000000000000000000000000 +mfy 0000000000008000 * 0000000000007FFF = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +mfy 0000000080000000 * 0000000000007FFF = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 0000000000007FFF = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mhy 0000000000000001 * 0000000000008000 = 00000000000000000000000000000001 +mhy 000000000000FFFF * 0000000000008000 = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 0000000000008000 = 00000000000000000000000000007FFF +mhy 0000000000008000 * 0000000000008000 = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 0000000000008000 = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 0000000000008000 = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 0000000000008000 = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 0000000000008000 = 00000000000000000000000000000000 +mfy 0000000000000001 * 0000000000008000 = 00000000000000000000000000000000 +mfy 000000000000FFFF * 0000000000008000 = 00000000000000000000000000000000 +mfy 0000000000007FFF * 0000000000008000 = 00000000000000000000000000000000 +mfy 0000000000008000 * 0000000000008000 = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +mfy 0000000080000000 * 0000000000008000 = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 0000000000008000 = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 0000000000008000 = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 0000000000008000 = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 0000000000008000 = 7FFFFFFF000000007FFFFFFF00000000 +mhy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mhy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000001 +mhy 000000000000FFFF * 000000000000FFFF = 0000000000000000000000000000FFFF +mhy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000007FFF +mhy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000008000 +mhy 00000000FFFFFFFF * 000000000000FFFF = 000000000000000000000000FFFFFFFF +mhy 0000000080000000 * 000000000000FFFF = 00000000000000000000000080000000 +mhy 000000007FFFFFFF * 000000000000FFFF = 0000000000000000000000007FFFFFFF +mhy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFFFFFFFFFF +mhy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mhy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFFFFFFFFFF +mfy 0000000000000000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000000001 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 000000000000FFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000007FFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000000008000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 00000000FFFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy 0000000080000000 * 000000000000FFFF = 00000000000000000000000000000000 +mfy 000000007FFFFFFF * 000000000000FFFF = 00000000000000000000000000000000 +mfy FFFFFFFFFFFFFFFF * 000000000000FFFF = FFFFFFFF00000000FFFFFFFF00000000 +mfy 8000000000000000 * 000000000000FFFF = 80000000000000008000000000000000 +mfy 7FFFFFFFFFFFFFFF * 000000000000FFFF = 7FFFFFFF000000007FFFFFFF00000000 +MSFI 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +MSFI 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +MSFI 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +MSFI 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +MSFI 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +MSFI 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +MSFI 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +MSFI 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * 0000000000000000 = FFFFFFFF00000000FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * 0000000000000000 = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * 0000000000000000 = 7FFFFFFF000000007FFFFFFFFFFFFFFF +MSFI 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +MSFI 0000000000000001 * FFFFFFFFFFFFFFFF = 00000000FFFFFFFF0000000000000001 +MSFI 000000000000FFFF * FFFFFFFFFFFFFFFF = 00000000FFFF0001000000000000FFFF +MSFI 0000000000007FFF * FFFFFFFFFFFFFFFF = 00000000FFFF80010000000000007FFF +MSFI 0000000000008000 * FFFFFFFFFFFFFFFF = 00000000FFFF80000000000000008000 +MSFI 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = 000000000000000100000000FFFFFFFF +MSFI 0000000080000000 * FFFFFFFFFFFFFFFF = 00000000800000000000000080000000 +MSFI 000000007FFFFFFF * FFFFFFFFFFFFFFFF = 0000000080000001000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF00000001FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 7FFFFFFF000000017FFFFFFFFFFFFFFF +MSFI 0000000000000000 * FFFFFFFFFFFF8000 = 00000000000000000000000000000000 +MSFI 0000000000000001 * FFFFFFFFFFFF8000 = 00000000FFFF80000000000000000001 +MSFI 000000000000FFFF * FFFFFFFFFFFF8000 = 0000000080008000000000000000FFFF +MSFI 0000000000007FFF * FFFFFFFFFFFF8000 = 00000000C00080000000000000007FFF +MSFI 0000000000008000 * FFFFFFFFFFFF8000 = 00000000C00000000000000000008000 +MSFI 00000000FFFFFFFF * FFFFFFFFFFFF8000 = 000000000000800000000000FFFFFFFF +MSFI 0000000080000000 * FFFFFFFFFFFF8000 = 00000000000000000000000080000000 +MSFI 000000007FFFFFFF * FFFFFFFFFFFF8000 = 0000000000008000000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = FFFFFFFF00008000FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * FFFFFFFFFFFF8000 = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 7FFFFFFF000080007FFFFFFFFFFFFFFF +MSFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSFI 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFF800100000000FFFFFFFF +MSFI 0000000080000000 * 0000000000007FFF = 00000000800000000000000080000000 +MSFI 000000007FFFFFFF * 0000000000007FFF = 000000007FFF8001000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSFI 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFF800100000000FFFFFFFF +MSFI 0000000080000000 * 0000000000007FFF = 00000000800000000000000080000000 +MSFI 000000007FFFFFFF * 0000000000007FFF = 000000007FFF8001000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSFI 00000000FFFFFFFF * 0000000000007FFF = 00000000FFFF800100000000FFFFFFFF +MSFI 0000000080000000 * 0000000000007FFF = 00000000800000000000000080000000 +MSFI 000000007FFFFFFF * 0000000000007FFF = 000000007FFF8001000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSFI 0000000000000000 * FFFFFFFF80000000 = 00000000000000000000000000000000 +MSFI 0000000000000001 * FFFFFFFF80000000 = 00000000800000000000000000000001 +MSFI 000000000000FFFF * FFFFFFFF80000000 = 0000000080000000000000000000FFFF +MSFI 0000000000007FFF * FFFFFFFF80000000 = 00000000800000000000000000007FFF +MSFI 0000000000008000 * FFFFFFFF80000000 = 00000000000000000000000000008000 +MSFI 00000000FFFFFFFF * FFFFFFFF80000000 = 000000008000000000000000FFFFFFFF +MSFI 0000000080000000 * FFFFFFFF80000000 = 00000000000000000000000080000000 +MSFI 000000007FFFFFFF * FFFFFFFF80000000 = 0000000080000000000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * FFFFFFFF80000000 = FFFFFFFF80000000FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * FFFFFFFF80000000 = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * FFFFFFFF80000000 = 7FFFFFFF800000007FFFFFFFFFFFFFFF +MSFI 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +MSFI 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +MSFI 000000000000FFFF * 000000007FFFFFFF = 000000007FFF0001000000000000FFFF +MSFI 0000000000007FFF * 000000007FFFFFFF = 000000007FFF80010000000000007FFF +MSFI 0000000000008000 * 000000007FFFFFFF = 00000000FFFF80000000000000008000 +MSFI 00000000FFFFFFFF * 000000007FFFFFFF = 000000008000000100000000FFFFFFFF +MSFI 0000000080000000 * 000000007FFFFFFF = 00000000800000000000000080000000 +MSFI 000000007FFFFFFF * 000000007FFFFFFF = 0000000000000001000000007FFFFFFF +MSFI FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +MSFI 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +MSFI 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * 0000000000000000 = 00000000000000000000000000000000 +MSGFI 0000000000000001 * 0000000000000000 = 00000000000000000000000000000001 +MSGFI 000000000000FFFF * 0000000000000000 = 0000000000000000000000000000FFFF +MSGFI 0000000000007FFF * 0000000000000000 = 00000000000000000000000000007FFF +MSGFI 0000000000008000 * 0000000000000000 = 00000000000000000000000000008000 +MSGFI 00000000FFFFFFFF * 0000000000000000 = 000000000000000000000000FFFFFFFF +MSGFI 0000000080000000 * 0000000000000000 = 00000000000000000000000080000000 +MSGFI 000000007FFFFFFF * 0000000000000000 = 0000000000000000000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * 0000000000000000 = 0000000000000000FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * 0000000000000000 = 00000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * 0000000000000000 = 00000000000000007FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * FFFFFFFFFFFFFFFF = 00000000000000000000000000000000 +MSGFI 0000000000000001 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF0000000000000001 +MSGFI 000000000000FFFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0001000000000000FFFF +MSGFI 0000000000007FFF * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80010000000000007FFF +MSGFI 0000000000008000 * FFFFFFFFFFFFFFFF = FFFFFFFFFFFF80000000000000008000 +MSGFI 00000000FFFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF0000000100000000FFFFFFFF +MSGFI 0000000080000000 * FFFFFFFFFFFFFFFF = FFFFFFFF800000000000000080000000 +MSGFI 000000007FFFFFFF * FFFFFFFFFFFFFFFF = FFFFFFFF80000001000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 0000000000000001FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * FFFFFFFFFFFFFFFF = 80000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * FFFFFFFFFFFFFFFF = 80000000000000017FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * FFFFFFFFFFFF8000 = 00000000000000000000000000000000 +MSGFI 0000000000000001 * FFFFFFFFFFFF8000 = FFFFFFFFFFFF80000000000000000001 +MSGFI 000000000000FFFF * FFFFFFFFFFFF8000 = FFFFFFFF80008000000000000000FFFF +MSGFI 0000000000007FFF * FFFFFFFFFFFF8000 = FFFFFFFFC00080000000000000007FFF +MSGFI 0000000000008000 * FFFFFFFFFFFF8000 = FFFFFFFFC00000000000000000008000 +MSGFI 00000000FFFFFFFF * FFFFFFFFFFFF8000 = FFFF80000000800000000000FFFFFFFF +MSGFI 0000000080000000 * FFFFFFFFFFFF8000 = FFFFC000000000000000000080000000 +MSGFI 000000007FFFFFFF * FFFFFFFFFFFF8000 = FFFFC00000008000000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 0000000000008000FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * FFFFFFFFFFFF8000 = 00000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * FFFFFFFFFFFF8000 = 00000000000080007FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSGFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSGFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSGFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSGFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSGFI 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +MSGFI 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +MSGFI 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSGFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSGFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSGFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSGFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSGFI 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +MSGFI 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +MSGFI 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * 0000000000007FFF = 00000000000000000000000000000000 +MSGFI 0000000000000001 * 0000000000007FFF = 0000000000007FFF0000000000000001 +MSGFI 000000000000FFFF * 0000000000007FFF = 000000007FFE8001000000000000FFFF +MSGFI 0000000000007FFF * 0000000000007FFF = 000000003FFF00010000000000007FFF +MSGFI 0000000000008000 * 0000000000007FFF = 000000003FFF80000000000000008000 +MSGFI 00000000FFFFFFFF * 0000000000007FFF = 00007FFEFFFF800100000000FFFFFFFF +MSGFI 0000000080000000 * 0000000000007FFF = 00003FFF800000000000000080000000 +MSGFI 000000007FFFFFFF * 0000000000007FFF = 00003FFF7FFF8001000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * 0000000000007FFF = FFFFFFFFFFFF8001FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * 0000000000007FFF = 80000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * 0000000000007FFF = 7FFFFFFFFFFF80017FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * FFFFFFFF80000000 = 00000000000000000000000000000000 +MSGFI 0000000000000001 * FFFFFFFF80000000 = FFFFFFFF800000000000000000000001 +MSGFI 000000000000FFFF * FFFFFFFF80000000 = FFFF800080000000000000000000FFFF +MSGFI 0000000000007FFF * FFFFFFFF80000000 = FFFFC000800000000000000000007FFF +MSGFI 0000000000008000 * FFFFFFFF80000000 = FFFFC000000000000000000000008000 +MSGFI 00000000FFFFFFFF * FFFFFFFF80000000 = 800000008000000000000000FFFFFFFF +MSGFI 0000000080000000 * FFFFFFFF80000000 = C0000000000000000000000080000000 +MSGFI 000000007FFFFFFF * FFFFFFFF80000000 = C000000080000000000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * FFFFFFFF80000000 = 0000000080000000FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * FFFFFFFF80000000 = 00000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * FFFFFFFF80000000 = 00000000800000007FFFFFFFFFFFFFFF +MSGFI 0000000000000000 * 000000007FFFFFFF = 00000000000000000000000000000000 +MSGFI 0000000000000001 * 000000007FFFFFFF = 000000007FFFFFFF0000000000000001 +MSGFI 000000000000FFFF * 000000007FFFFFFF = 00007FFF7FFF0001000000000000FFFF +MSGFI 0000000000007FFF * 000000007FFFFFFF = 00003FFF7FFF80010000000000007FFF +MSGFI 0000000000008000 * 000000007FFFFFFF = 00003FFFFFFF80000000000000008000 +MSGFI 00000000FFFFFFFF * 000000007FFFFFFF = 7FFFFFFE8000000100000000FFFFFFFF +MSGFI 0000000080000000 * 000000007FFFFFFF = 3FFFFFFF800000000000000080000000 +MSGFI 000000007FFFFFFF * 000000007FFFFFFF = 3FFFFFFF00000001000000007FFFFFFF +MSGFI FFFFFFFFFFFFFFFF * 000000007FFFFFFF = FFFFFFFF80000001FFFFFFFFFFFFFFFF +MSGFI 8000000000000000 * 000000007FFFFFFF = 80000000000000008000000000000000 +MSGFI 7FFFFFFFFFFFFFFF * 000000007FFFFFFF = 7FFFFFFF800000017FFFFFFFFFFFFFFF diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.vgtest new file mode 100644 index 000000000..8ed84283a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mul_GE.vgtest @@ -0,0 +1,2 @@ +prog: mul_GE +prereq: test -x mul_GE diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.c new file mode 100644 index 000000000..ac85f12c4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.c @@ -0,0 +1,51 @@ +#include "test.h" + +char buffer[23] ="0123456789abcdef\0XXXXX"; +char bigbuf[512]= + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde\0"; + +char target[512]; + +int mvst(void *targetp, void *source) +{ + asm volatile( + " lhi 0, 0\n" + " mvst %0, %1\n" + ::"a" (targetp),"a" (source): "0", "memory", "cc"); + return get_cc(); +} + +int mvst_full(void *targetp, void *source) +{ + asm volatile( + " lhi 0, 0\n" + "0: mvst %0, %1\n" + " jo 0b\n" + ::"a" (targetp),"a" (source): "0", "memory", "cc"); + return get_cc(); +} + + +int main() +{ + short t; + char s; + printf("CC:%d\n", mvst(target, buffer)); + printf("%s\n", target); + printf("CC:%d\n",mvst_full(target, bigbuf)); + printf("%s\n", target); + t = 0x6161; + s = 0; + printf("%s\n", (char *) &t); + printf("CC:%d\n",mvst(&t,&s)); + printf("%s\n", (char *) &t); + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stdout.exp new file mode 100644 index 000000000..c654bd39a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.stdout.exp @@ -0,0 +1,7 @@ +CC:1 +0123456789abcdef +CC:1 +0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde +aa +CC:1 + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.vgtest new file mode 100644 index 000000000..3e83f5c4d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/mvst.vgtest @@ -0,0 +1 @@ +prog: mvst diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.c new file mode 100644 index 000000000..d6e867968 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.c @@ -0,0 +1,38 @@ +/* zArchitecture specifies that operation exception(illegal opcode) is +suppressing. That means that the program check old psw will point to +the instruction after the illegal one (according to the calculated length). +There are some programs out there that use this mechanism to detect available +intruction (sigh). +This patch checks, that valgrind makes forard progress. */ +#include +#include +#include +static volatile int got_ill; +static void handle_ill(int sig) +{ + got_ill = 1; +} +int main() +{ + struct sigaction sa; + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = handle_ill; + sigaction(SIGILL, &sa, NULL); + + got_ill = 0; + /* most architectures loop here, but on s390 this would increase the + PSW by 2 and then by 2 */ + asm volatile(".long 0\n"); + if (got_ill) + printf("0x00000000 does not loop\n"); + + got_ill = 0; + /* most architectures loop here, but on s390 this would increase the + PSW by 6 and then by 2*/ + asm volatile(".long 0xffffffff\n.long 0xffff0000\n"); + if (got_ill) + printf("0xffffffff does not loop\n"); + +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stderr.exp new file mode 100644 index 000000000..c76666888 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stderr.exp @@ -0,0 +1,54 @@ + +vex s390->IR: unknown insn: 0000 +valgrind: Unrecognised instruction at address 0x......... + at 0x........: main (op_exception.c:23) +Your program just tried to execute an instruction that Valgrind +did not recognise. There are two possible reasons for this. +1. Your program has a bug and erroneously jumped to a non-code + location. If you are running Memcheck and you just saw a + warning about a bad jump, it's probably your program's fault. +2. The instruction is legitimate but Valgrind doesn't handle it, + i.e. it's Valgrind's fault. If you think this is the case or + you are not sure, please let us know and we'll try to fix it. +Either way, Valgrind will now raise a SIGILL signal which will +probably kill your program. +vex s390->IR: unknown insn: 0000 +valgrind: Unrecognised instruction at address 0x......... + at 0x........: main (op_exception.c:27) +Your program just tried to execute an instruction that Valgrind +did not recognise. There are two possible reasons for this. +1. Your program has a bug and erroneously jumped to a non-code + location. If you are running Memcheck and you just saw a + warning about a bad jump, it's probably your program's fault. +2. The instruction is legitimate but Valgrind doesn't handle it, + i.e. it's Valgrind's fault. If you think this is the case or + you are not sure, please let us know and we'll try to fix it. +Either way, Valgrind will now raise a SIGILL signal which will +probably kill your program. +vex s390->IR: unknown insn: FFFF FFFF FFFF +valgrind: Unrecognised instruction at address 0x......... + at 0x........: main (op_exception.c:30) +Your program just tried to execute an instruction that Valgrind +did not recognise. There are two possible reasons for this. +1. Your program has a bug and erroneously jumped to a non-code + location. If you are running Memcheck and you just saw a + warning about a bad jump, it's probably your program's fault. +2. The instruction is legitimate but Valgrind doesn't handle it, + i.e. it's Valgrind's fault. If you think this is the case or + you are not sure, please let us know and we'll try to fix it. +Either way, Valgrind will now raise a SIGILL signal which will +probably kill your program. +vex s390->IR: unknown insn: 0000 +valgrind: Unrecognised instruction at address 0x......... + at 0x........: main (op_exception.c:34) +Your program just tried to execute an instruction that Valgrind +did not recognise. There are two possible reasons for this. +1. Your program has a bug and erroneously jumped to a non-code + location. If you are running Memcheck and you just saw a + warning about a bad jump, it's probably your program's fault. +2. The instruction is legitimate but Valgrind doesn't handle it, + i.e. it's Valgrind's fault. If you think this is the case or + you are not sure, please let us know and we'll try to fix it. +Either way, Valgrind will now raise a SIGILL signal which will +probably kill your program. + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stdout.exp new file mode 100644 index 000000000..b6fcb3a14 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.stdout.exp @@ -0,0 +1,2 @@ +0x00000000 does not loop +0xffffffff does not loop diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.vgtest new file mode 100644 index 000000000..cbac49788 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/op_exception.vgtest @@ -0,0 +1 @@ +prog: op_exception diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/opcodes.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/opcodes.h new file mode 100644 index 000000000..7469c8730 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/opcodes.h @@ -0,0 +1,308 @@ +#ifndef OPCODES_H +#define OPCODES_H + +/* Macro definitions for opcodes that are not generally available and may + require extra facilities to be installed. These macros expand into a + character string suitable for inclusion in an extended ASM statement + in GCC. The macros generate .short and .long directives to encode the + instruction. Those directives are available in all versions of binutils. + + Opcode macros have as many arguments as the opcode has variable fields. + The fields appear in the argument list in the same order as in the opcode + definition from left to right. + + The values to be encoded in those fields must be integer values in + hexadecimal notation without a leading 0x. E.g. FLOGR(3,4) or + NIHF(3,00001234) +*/ + +#define RIL_RI(op1,r1,op2,i2) \ + ".short 0x" #op1 #r1 #op2 "\n\t" \ + ".long 0x" #i2 "\n\t" +#define RIE_RRI0(op1,r1,r3,i2,u0,op2) \ + ".short 0x" #op1 #r1 #r3 "\n\t" \ + ".long 0x" #i2 #u0 #op2 "\n\t" +#define RRF_R0RR2(op,r3,u0,r1,r2) ".long 0x" #op #r3 #u0 #r1 #r2 "\n\t" +#define SIY_IRD(op1,i2,b1,dl1,dh1,op2) \ + ".short 0x" #op1 #i2 "\n\t" \ + ".long 0x" #b1 #dl1 #dh1 #op2 "\n\t" +#define RXY_RRRD(op1,r1,x2,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #x2 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RIL_RU(op1,r1,op2,i2) \ + ".short 0x" #op1 #r1 #op2 "\n\t" \ + ".long 0x" #i2 "\n\t" +#define RIL_RP(op1,r1,op2,i2) \ + ".short 0x" #op1 #r1 #op2 "\n\t" \ + ".long 0x" #i2 "\n\t" +#define SIL_RDI(op,b1,d1,i2) \ + ".short 0x" #op "\n\t" \ + ".long 0x" #b1 #d1 #i2 "\n\t" +#define RIS_RURDI(op1,r1,m3,b4,d4,i2,op2) \ + ".short 0x" #op1 #r1 #m3 "\n\t" \ + ".long 0x" #b4 #d4 #i2 #op2 "\n\t" +#define RIE_RUPI(op1,r1,m3,i4,i2,op2) \ + ".short 0x" #op1 #r1 #m3 "\n\t" \ + ".long 0x" #i4 #i2 #op2 "\n\t" +#define RRS(op1,r1,r2,b4,d4,m3,u0,op2) \ + ".short 0x" #op1 #r1 #r2 "\n\t" \ + ".long 0x" #b4 #d4 #m3 #u0 #op2 "\n\t" +#define RIE_RRPU(op1,r1,r2,i4,m3,u0,op2) \ + ".short 0x" #op1 #r1 #r2 "\n\t" \ + ".long 0x" #i4 #m3 #u0 #op2 "\n\t" +#define RRE_RR(op,u0,r1,r2) ".long 0x" #op #u0 #r1 #r2 "\n\t" +#define SIL_RDU(op,b1,d1,i2) \ + ".short 0x" #op "\n\t" \ + ".long 0x" #b1 #d1 #i2 "\n\t" +#define RIS_RURDU(op1,r1,m3,b4,d4,i2,op2) \ + ".short 0x" #op1 #r1 #m3 "\n\t" \ + ".long 0x" #b4 #d4 #i2 #op2 "\n\t" +#define RIE_RUPU(op1,r1,m3,i4,i2,op2) \ + ".short 0x" #op1 #r1 #m3 "\n\t" \ + ".long 0x" #i4 #i2 #op2 "\n\t" +#define SIY_URD(op1,i2,b1,dl1,dh1,op2) \ + ".short 0x" #op1 #i2 "\n\t" \ + ".long 0x" #b1 #dl1 #dh1 #op2 "\n\t" +#define RSY_RURD(op1,r1,r3,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #r3 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RRF_F0FF2(op,r3,u0,r1,r2) ".long 0x" #op #r3 #u0 #r1 #r2 "\n\t" +#define RSY_RRRD(op1,r1,r3,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #r3 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RSY_AARD(op1,r1,r3,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #r3 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RRE_FF(op,u0,r1,r2) ".long 0x" #op #u0 #r1 #r2 "\n\t" +#define RRE_FR(op,u0,r1,r2) ".long 0x" #op #u0 #r1 #r2 "\n\t" +#define RXY_FRRD(op1,r1,x2,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #x2 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RRE_RF(op,u0,r1,r2) ".long 0x" #op #u0 #r1 #r2 "\n\t" +#define RSY_RDRM(op1,r1,r3,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #r3 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RRF_U0RR(op,r3,u0,r1,r2) ".long 0x" #op #r3 #u0 #r1 #r2 "\n\t" +#define RXY_URRD(op1,r1,x2,b2,dl2,dh2,op2) \ + ".short 0x" #op1 #r1 #x2 "\n\t" \ + ".long 0x" #b2 #dl2 #dh2 #op2 "\n\t" +#define RIL_UP(op1,r1,op2,i2) \ + ".short 0x" #op1 #r1 #op2 "\n\t" \ + ".long 0x" #i2 "\n\t" +#define RIE_RRUUU(op1,r1,r2,i3,i4,i5,op2) \ + ".short 0x" #op1 #r1 #r2 "\n\t" \ + ".long 0x" #i3 #i4 #i5 #op2 "\n\t" + +#define AFI(r1,i2) RIL_RI(c2,r1,9,i2) +#define AGFI(r1,i2) RIL_RI(c2,r1,8,i2) +#define AGHIK(r1,r3,i2) RIE_RRI0(ec,r1,r3,i2,00,d9) +#define AGRK(r3,r1,r2) RRF_R0RR2(b9e8,r3,0,r1,r2) +#define AGSI(i2,b1,dl1,dh1) SIY_IRD(eb,i2,b1,dl1,dh1,7a) +#define AHHHR(r3,r1,r2) RRF_R0RR2(b9c8,r3,0,r1,r2) +#define AHHLR(r3,r1,r2) RRF_R0RR2(b9d8,r3,0,r1,r2) +#define AHIK(r1,r3,i2) RIE_RRI0(ec,r1,r3,i2,00,d8) +#define AHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,7a) +#define AIH(r1,i2) RIL_RI(cc,r1,8,i2) +#define ALFI(r1,i2) RIL_RU(c2,r1,b,i2) +#define ALGFI(r1,i2) RIL_RU(c2,r1,a,i2) +#define ALGHSIK(r1,r3,i2) RIE_RRI0(ec,r1,r3,i2,00,db) +#define ALGRK(r3,r1,r2) RRF_R0RR2(b9ea,r3,0,r1,r2) +#define ALGSI(i2,b1,dl1,dh1) SIY_IRD(eb,i2,b1,dl1,dh1,7e) +#define ALHHHR(r3,r1,r2) RRF_R0RR2(b9ca,r3,0,r1,r2) +#define ALHHLR(r3,r1,r2) RRF_R0RR2(b9da,r3,0,r1,r2) +#define ALHSIK(r1,r3,i2) RIE_RRI0(ec,r1,r3,i2,00,da) +#define ALRK(r3,r1,r2) RRF_R0RR2(b9fa,r3,0,r1,r2) +#define ALSI(i2,b1,dl1,dh1) SIY_IRD(eb,i2,b1,dl1,dh1,6e) +#define ALSIH(r1,i2) RIL_RI(cc,r1,a,i2) +#define ALSIHN(r1,i2) RIL_RI(cc,r1,b,i2) +#define ALY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,5e) +#define ARK(r3,r1,r2) RRF_R0RR2(b9f8,r3,0,r1,r2) +#define ASI(i2,b1,dl1,dh1) SIY_IRD(eb,i2,b1,dl1,dh1,6a) +#define AY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,5a) +#define CFI(r1,i2) RIL_RI(c2,r1,d,i2) +#define CGFI(r1,i2) RIL_RI(c2,r1,c,i2) +#define CGFRL(r1,i2) RIL_RP(c6,r1,c,i2) +#define CGH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,34) +#define CGHRL(r1,i2) RIL_RP(c6,r1,4,i2) +#define CGHSI(b1,d1,i2) SIL_RDI(e558,b1,d1,i2) +#define CGIB(r1,m3,b4,d4,i2) RIS_RURDI(ec,r1,m3,b4,d4,i2,fc) +#define CGIJ(r1,m3,i4,i2) RIE_RUPI(ec,r1,m3,i4,i2,7c) +#define CGRB(r1,r2,b4,d4,m3) RRS(ec,r1,r2,b4,d4,m3,0,e4) +#define CGRJ(r1,r2,i4,m3) RIE_RRPU(ec,r1,r2,i4,m3,0,64) +#define CGRL(r1,i2) RIL_RP(c6,r1,8,i2) +#define CHF(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,cd) +#define CHHR(r1,r2) RRE_RR(b9cd,00,r1,r2) +#define CHHSI(b1,d1,i2) SIL_RDI(e554,b1,d1,i2) +#define CHLR(r1,r2) RRE_RR(b9dd,00,r1,r2) +#define CHRL(r1,i2) RIL_RP(c6,r1,5,i2) +#define CHSI(b1,d1,i2) SIL_RDI(e55c,b1,d1,i2) +#define CHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,79) +#define CIB(r1,m3,b4,d4,i2) RIS_RURDI(ec,r1,m3,b4,d4,i2,fe) +#define CIH(r1,i2) RIL_RI(cc,r1,d,i2) +#define CIJ(r1,m3,i4,i2) RIE_RUPI(ec,r1,m3,i4,i2,7e) +#define CLFHSI(b1,d1,i2) SIL_RDU(e55d,b1,d1,i2) +#define CLFI(r1,i2) RIL_RU(c2,r1,f,i2) +#define CLGFI(r1,i2) RIL_RU(c2,r1,e,i2) +#define CLGFRL(r1,i2) RIL_RP(c6,r1,e,i2) +#define CLGHRL(r1,i2) RIL_RP(c6,r1,6,i2) +#define CLGHSI(b1,d1,i2) SIL_RDU(e559,b1,d1,i2) +#define CLGIB(r1,m3,b4,d4,i2) RIS_RURDU(ec,r1,m3,b4,d4,i2,fd) +#define CLGIJ(r1,m3,i4,i2) RIE_RUPU(ec,r1,m3,i4,i2,7d) +#define CLGRB(r1,r2,b4,d4,m3) RRS(ec,r1,r2,b4,d4,m3,0,e5) +#define CLGRJ(r1,r2,i4,m3) RIE_RRPU(ec,r1,r2,i4,m3,0,65) +#define CLGRL(r1,i2) RIL_RP(c6,r1,a,i2) +#define CLHF(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,cf) +#define CLHHR(r1,r2) RRE_RR(b9cf,00,r1,r2) +#define CLHHSI(b1,d1,i2) SIL_RDU(e555,b1,d1,i2) +#define CLHLR(r1,r2) RRE_RR(b9df,00,r1,r2) +#define CLHRL(r1,i2) RIL_RP(c6,r1,7,i2) +#define CLIB(r1,m3,b4,d4,i2) RIS_RURDU(ec,r1,m3,b4,d4,i2,ff) +#define CLIH(r1,i2) RIL_RU(cc,r1,f,i2) +#define CLIJ(r1,m3,i4,i2) RIE_RUPU(ec,r1,m3,i4,i2,7f) +#define CLIY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,55) +#define CLMY(r1,r3,b2,dl2,dh2) RSY_RURD(eb,r1,r3,b2,dl2,dh2,21) +#define CLRB(r1,r2,b4,d4,m3) RRS(ec,r1,r2,b4,d4,m3,0,f7) +#define CLRJ(r1,r2,i4,m3) RIE_RRPU(ec,r1,r2,i4,m3,0,77) +#define CLRL(r1,i2) RIL_RP(c6,r1,f,i2) +#define CLY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,55) +#define CPSDR(r3,r1,r2) RRF_F0FF2(b372,r3,0,r1,r2) +#define CRB(r1,r2,b4,d4,m3) RRS(ec,r1,r2,b4,d4,m3,0,f6) +#define CRJ(r1,r2,i4,m3) RIE_RRPU(ec,r1,r2,i4,m3,0,76) +#define CRL(r1,i2) RIL_RP(c6,r1,d,i2) +#define CSY(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,14) +#define CVBY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,06) +#define CVDY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,26) +#define CY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,59) +#define EXRL(r1,i2) RIL_RP(c6,r1,0,i2) +#define FLOGR(r1,r2) RRE_RR(b983,00,r1,r2) +#define ICMY(r1,r3,b2,dl2,dh2) RSY_RURD(eb,r1,r3,b2,dl2,dh2,81) +#define ICY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,73) +#define IIHF(r1,i2) RIL_RU(c0,r1,8,i2) +#define IILF(r1,i2) RIL_RU(c0,r1,9,i2) +#define LAA(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,f8) +#define LAAG(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,e8) +#define LAAL(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,fa) +#define LAALG(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,ea) +#define LAEY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,75) +#define LAMY(r1,r3,b2,dl2,dh2) RSY_AARD(eb,r1,r3,b2,dl2,dh2,9a) +#define LAN(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,f4) +#define LANG(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,e4) +#define LAO(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,f6) +#define LAOG(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,e6) +#define LAX(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,f7) +#define LAXG(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,e7) +#define LAY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,71) +#define LB(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,76) +#define LBH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c0) +#define LBR(r1,r2) RRE_RR(b926,00,r1,r2) +#define LCDFR(r1,r2) RRE_FF(b373,00,r1,r2) +#define LDGR(r1,r2) RRE_FR(b3c1,00,r1,r2) +#define LDY(r1,x2,b2,dl2,dh2) RXY_FRRD(ed,r1,x2,b2,dl2,dh2,65) +#define LEY(r1,x2,b2,dl2,dh2) RXY_FRRD(ed,r1,x2,b2,dl2,dh2,64) +#define LFH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,ca) +#define LGB(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,77) +#define LGBR(r1,r2) RRE_RR(b906,00,r1,r2) +#define LGDR(r1,r2) RRE_RF(b3cd,00,r1,r2) +#define LGFI(r1,i2) RIL_RI(c0,r1,1,i2) +#define LGFRL(r1,i2) RIL_RP(c4,r1,c,i2) +#define LGHR(r1,r2) RRE_RR(b907,00,r1,r2) +#define LGHRL(r1,i2) RIL_RP(c4,r1,4,i2) +#define LGRL(r1,i2) RIL_RP(c4,r1,8,i2) +#define LHH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c4) +#define LHR(r1,r2) RRE_RR(b927,00,r1,r2) +#define LHRL(r1,i2) RIL_RP(c4,r1,5,i2) +#define LHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,78) +#define LLC(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,94) +#define LLCH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c2) +#define LLCR(r1,r2) RRE_RR(b994,00,r1,r2) +#define LLGCR(r1,r2) RRE_RR(b984,00,r1,r2) +#define LLGFRL(r1,i2) RIL_RP(c4,r1,e,i2) +#define LLGHR(r1,r2) RRE_RR(b985,00,r1,r2) +#define LLGHRL(r1,i2) RIL_RP(c4,r1,6,i2) +#define LLH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,95) +#define LLHH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c6) +#define LLHR(r1,r2) RRE_RR(b995,00,r1,r2) +#define LLHRL(r1,i2) RIL_RP(c4,r1,2,i2) +#define LLIHF(r1,i2) RIL_RU(c0,r1,e,i2) +#define LLILF(r1,i2) RIL_RU(c0,r1,f,i2) +#define LMY(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,98) +#define LNDFR(r1,r2) RRE_FF(b371,00,r1,r2) +#define LOC(r1,r3,b2,dl2,dh2) RSY_RDRM(eb,r1,r3,b2,dl2,dh2,f2) +#define LOCG(r1,r3,b2,dl2,dh2) RSY_RDRM(eb,r1,r3,b2,dl2,dh2,e2) +#define LOCGR(r3,r1,r2) RRF_U0RR(b9e2,r3,0,r1,r2) +#define LOCR(r3,r1,r2) RRF_U0RR(b9f2,r3,0,r1,r2) +#define LPDFR(r1,r2) RRE_FF(b370,00,r1,r2) +#define LRL(r1,i2) RIL_RP(c4,r1,d,i2) +#define LT(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,12) +#define LTG(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,02) +#define LTGF(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,32) +#define LY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,58) +#define MFY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,5c) +#define MHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,7c) +#define MSFI(r1,i2) RIL_RI(c2,r1,1,i2) +#define MSGFI(r1,i2) RIL_RI(c2,r1,0,i2) +#define MSY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,51) +#define MVGHI(b1,d1,i2) SIL_RDI(e548,b1,d1,i2) +#define MVHHI(b1,d1,i2) SIL_RDI(e544,b1,d1,i2) +#define MVHI(b1,d1,i2) SIL_RDI(e54c,b1,d1,i2) +#define MVIY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,52) +#define NGRK(r3,r1,r2) RRF_R0RR2(b9e4,r3,0,r1,r2) +#define NIHF(r1,i2) RIL_RU(c0,r1,a,i2) +#define NILF(r1,i2) RIL_RU(c0,r1,b,i2) +#define NIY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,54) +#define NRK(r3,r1,r2) RRF_R0RR2(b9f4,r3,0,r1,r2) +#define NY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,54) +#define OGRK(r3,r1,r2) RRF_R0RR2(b9e6,r3,0,r1,r2) +#define OIHF(r1,i2) RIL_RU(c0,r1,c,i2) +#define OILF(r1,i2) RIL_RU(c0,r1,d,i2) +#define OIY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,56) +#define ORK(r3,r1,r2) RRF_R0RR2(b9f6,r3,0,r1,r2) +#define OY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,56) +#define PFD(r1,x2,b2,dl2,dh2) RXY_URRD(e3,r1,x2,b2,dl2,dh2,36) +#define PFDRL(r1,i2) RIL_UP(c6,r1,2,i2) +#define RISBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,55) +#define RNSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,54) +#define ROSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,56) +#define RXSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,57) +#define SGRK(r3,r1,r2) RRF_R0RR2(b9e9,r3,0,r1,r2) +#define SHHHR(r3,r1,r2) RRF_R0RR2(b9c9,r3,0,r1,r2) +#define SHHLR(r3,r1,r2) RRF_R0RR2(b9d9,r3,0,r1,r2) +#define SHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,7b) +#define SLAK(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,dd) +#define SLFI(r1,i2) RIL_RU(c2,r1,5,i2) +#define SLGFI(r1,i2) RIL_RU(c2,r1,4,i2) +#define SLGRK(r3,r1,r2) RRF_R0RR2(b9eb,r3,0,r1,r2) +#define SLHHHR(r3,r1,r2) RRF_R0RR2(b9cb,r3,0,r1,r2) +#define SLHHLR(r3,r1,r2) RRF_R0RR2(b9db,r3,0,r1,r2) +#define SLLK(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,df) +#define SLRK(r3,r1,r2) RRF_R0RR2(b9fb,r3,0,r1,r2) +#define SLY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,5f) +#define SRAK(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,dc) +#define SRK(r3,r1,r2) RRF_R0RR2(b9f9,r3,0,r1,r2) +#define SRLK(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,de) +#define STAMY(r1,r3,b2,dl2,dh2) RSY_AARD(eb,r1,r3,b2,dl2,dh2,9b) +#define STCH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c3) +#define STCMY(r1,r3,b2,dl2,dh2) RSY_RURD(eb,r1,r3,b2,dl2,dh2,2d) +#define STCY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,72) +#define STDY(r1,x2,b2,dl2,dh2) RXY_FRRD(ed,r1,x2,b2,dl2,dh2,67) +#define STEY(r1,x2,b2,dl2,dh2) RXY_FRRD(ed,r1,x2,b2,dl2,dh2,66) +#define STFH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,cb) +#define STGRL(r1,i2) RIL_RP(c4,r1,b,i2) +#define STHH(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,c7) +#define STHRL(r1,i2) RIL_RP(c4,r1,7,i2) +#define STHY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,70) +#define STMY(r1,r3,b2,dl2,dh2) RSY_RRRD(eb,r1,r3,b2,dl2,dh2,90) +#define STOC(r1,r3,b2,dl2,dh2) RSY_RDRM(eb,r1,r3,b2,dl2,dh2,f3) +#define STOCG(r1,r3,b2,dl2,dh2) RSY_RDRM(eb,r1,r3,b2,dl2,dh2,e3) +#define STRL(r1,i2) RIL_RP(c4,r1,f,i2) +#define STY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,50) +#define SY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,5b) +#define TMY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,51) +#define XGRK(r3,r1,r2) RRF_R0RR2(b9e7,r3,0,r1,r2) +#define XIHF(r1,i2) RIL_RU(c0,r1,6,i2) +#define XILF(r1,i2) RIL_RU(c0,r1,7,i2) +#define XIY(i2,b1,dl1,dh1) SIY_URD(eb,i2,b1,dl1,dh1,57) +#define XRK(r3,r1,r2) RRF_R0RR2(b9f7,r3,0,r1,r2) +#define XY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,57) + +#endif /* OPCODES_H */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.c new file mode 100644 index 000000000..45e0b1097 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.c @@ -0,0 +1,85 @@ +#include +#include "or.h" +#include "opcodes.h" + +#define oihh(r1,i2) ".long 0xa5" #r1 "8" #i2 "\n\t" +#define oihl(r1,i2) ".long 0xa5" #r1 "9" #i2 "\n\t" +#define oilh(r1,i2) ".long 0xa5" #r1 "a" #i2 "\n\t" +#define oill(r1,i2) ".long 0xa5" #r1 "b" #i2 "\n\t" + +static void do_imm_insns(void) +{ + memimmsweep(oi, 0); + memimmsweep(oi, 255); + memimmsweep(oi, 128); + memimmsweep(oi, 0xaa); + memimmsweep(oi, 0x55); + oiysweep(00); + oiysweep(ff); + oiysweep(80); + oiysweep(aa); + oiysweep(55); + immsweep(oihh, 0055); + immsweep(oihl, 0055); + immsweep(oilh, 0055); + immsweep(oill, 0055); + immsweep(oihh, 00aa); + immsweep(oihl, 00aa); + immsweep(oilh, 00aa); + immsweep(oill, 00aa); + immsweep(oihh, 00ff); + immsweep(oihl, 00ff); + immsweep(oilh, 00ff); + immsweep(oill, 00ff); + immsweep(oihh, 0000); + immsweep(oihl, 0000); + immsweep(oilh, 0000); + immsweep(oill, 0000); + immsweep(oihh, ffff); + immsweep(oihl, ffff); + immsweep(oilh, ffff); + immsweep(oill, ffff); + immsweep(oihh, aaaa); + immsweep(oihl, aaaa); + immsweep(oilh, aaaa); + immsweep(oill, aaaa); + immsweep(oihh, 5555); + immsweep(oihl, 5555); + immsweep(oilh, 5555); + immsweep(oill, 5555); +} + + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(o, s2); + memsweep(og, s2); + regsweep(or, s2); + regsweep(ogr, s2); + oysweep(s2); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x5555555555555555ul); + do_regmem_insns(0xaaaaaaaaaaaaaaaaul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xaaaaaaaa00000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x0000000055555555ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.h new file mode 100644 index 000000000..ed621d87a --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.h @@ -0,0 +1,182 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define OR_REG_MEM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define OR_REG_REG(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define OR_REG_IMM(insn, s1, s2) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##s2, v, cc); \ +}) + +#define OR_MEM_IMM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0," #s2 "\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp) \ + : "0", "cc"); \ + printf(#insn " %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) s2, tmp, cc); \ +}) + + +#define memsweep(i, s2) \ +({ \ + OR_REG_MEM(i, 0ul, s2); \ + OR_REG_MEM(i, 1ul, s2); \ + OR_REG_MEM(i, 0xfffful, s2); \ + OR_REG_MEM(i, 0x7ffful, s2); \ + OR_REG_MEM(i, 0x8000ul, s2); \ + OR_REG_MEM(i, 0xfffffffful, s2); \ + OR_REG_MEM(i, 0x80000000ul, s2); \ + OR_REG_MEM(i, 0x7ffffffful, s2); \ + OR_REG_MEM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + OR_REG_MEM(i, 0x8000000000000000ul, s2); \ + OR_REG_MEM(i, 0xfffffffffffffffful, s2); \ + OR_REG_MEM(i, 0x5555555555555555ul, s2); \ +}) + +#define regsweep(i, s2) \ +({ \ + OR_REG_REG(i, 0ul, s2); \ + OR_REG_REG(i, 1ul, s2); \ + OR_REG_REG(i, 0xfffful, s2); \ + OR_REG_REG(i, 0x7ffful, s2); \ + OR_REG_REG(i, 0x8000ul, s2); \ + OR_REG_REG(i, 0xfffffffful, s2); \ + OR_REG_REG(i, 0x80000000ul, s2); \ + OR_REG_REG(i, 0x7ffffffful, s2); \ + OR_REG_REG(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + OR_REG_REG(i, 0x8000000000000000ul, s2); \ + OR_REG_REG(i, 0xfffffffffffffffful, s2); \ + OR_REG_REG(i, 0x5555555555555555ul, s2); \ +}) + +#define immsweep(i, s2) \ +({ \ + OR_REG_IMM(i, 0ul, s2); \ + OR_REG_IMM(i, 1ul, s2); \ + OR_REG_IMM(i, 0xfffful, s2); \ + OR_REG_IMM(i, 0x7ffful, s2); \ + OR_REG_IMM(i, 0x8000ul, s2); \ + OR_REG_IMM(i, 0xfffffffful, s2); \ + OR_REG_IMM(i, 0x80000000ul, s2); \ + OR_REG_IMM(i, 0x7ffffffful, s2); \ + OR_REG_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + OR_REG_IMM(i, 0x8000000000000000ul, s2); \ + OR_REG_IMM(i, 0xfffffffffffffffful, s2); \ + OR_REG_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define memimmsweep(i, s2) \ +({ \ + OR_MEM_IMM(i, 0ul, s2); \ + OR_MEM_IMM(i, 1ul, s2); \ + OR_MEM_IMM(i, 0xfffful, s2); \ + OR_MEM_IMM(i, 0x7ffful, s2); \ + OR_MEM_IMM(i, 0x8000ul, s2); \ + OR_MEM_IMM(i, 0xfffffffful, s2); \ + OR_MEM_IMM(i, 0x80000000ul, s2); \ + OR_MEM_IMM(i, 0x7ffffffful, s2); \ + OR_MEM_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + OR_MEM_IMM(i, 0x8000000000000000ul, s2); \ + OR_MEM_IMM(i, 0xfffffffffffffffful, s2); \ + OR_MEM_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define OR_OY(s1, s2) \ +({ \ + register unsigned long tmp asm("1") = s1; \ + register unsigned long *addr asm("2") = &s2; \ + int cc; \ + asm volatile( OY(1,0,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d"(addr) \ + : "cc"); \ + printf("oy %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define OR_OIY(s1, i2) \ +({ \ + unsigned long tmp = s1; \ + register unsigned long *addr asm("2") = &tmp; \ + int cc; \ + asm volatile( OIY(i2,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp), "d" (addr) \ + : "cc"); \ + printf("oiy %16.16lX | %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##i2, tmp, cc); \ +}) + +#define oysweep(s2) \ +({ \ + OR_OY(0ul, s2); \ + OR_OY(1ul, s2); \ + OR_OY(0xfffful, s2); \ + OR_OY(0x7ffful, s2); \ + OR_OY(0x8000ul, s2); \ + OR_OY(0xfffffffful, s2); \ + OR_OY(0x80000000ul, s2); \ + OR_OY(0x7ffffffful, s2); \ + OR_OY(0xaaaaaaaaaaaaaaaaul, s2); \ + OR_OY(0x8000000000000000ul, s2); \ + OR_OY(0xfffffffffffffffful, s2); \ + OR_OY(0x5555555555555555ul, s2); \ +}) + +#define oiysweep(s2) \ +({ \ + OR_OIY(0ul, s2); \ + OR_OIY(1ul, s2); \ + OR_OIY(0xfffful, s2); \ + OR_OIY(0x7ffful, s2); \ + OR_OIY(0x8000ul, s2); \ + OR_OIY(0xfffffffful, s2); \ + OR_OIY(0x80000000ul, s2); \ + OR_OIY(0x7ffffffful, s2); \ + OR_OIY(0xaaaaaaaaaaaaaaaaul, s2); \ + OR_OIY(0x8000000000000000ul, s2); \ + OR_OIY(0xfffffffffffffffful, s2); \ + OR_OIY(0x5555555555555555ul, s2); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stdout.exp new file mode 100644 index 000000000..e8c6db36c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.stdout.exp @@ -0,0 +1,1476 @@ +o 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +o 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +o 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +o 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +o 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +og 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +og 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +og 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +og 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +og 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +og 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +og 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +og FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +or 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +or 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +ogr 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +ogr 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +ogr 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +ogr 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +ogr 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +ogr 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oy 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oy 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +oy 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +oy 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +o 0000000000000000 | 5555555555555555 = 0000000055555555 (cc=1) +o 0000000000000001 | 5555555555555555 = 0000000055555555 (cc=1) +o 000000000000FFFF | 5555555555555555 = 000000005555FFFF (cc=1) +o 0000000000007FFF | 5555555555555555 = 0000000055557FFF (cc=1) +o 0000000000008000 | 5555555555555555 = 000000005555D555 (cc=1) +o 00000000FFFFFFFF | 5555555555555555 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 5555555555555555 = 00000000D5555555 (cc=1) +o 000000007FFFFFFF | 5555555555555555 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +o 8000000000000000 | 5555555555555555 = 8000000055555555 (cc=1) +o FFFFFFFFFFFFFFFF | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 5555555555555555 = 5555555555555555 (cc=1) +og 0000000000000000 | 5555555555555555 = 5555555555555555 (cc=1) +og 0000000000000001 | 5555555555555555 = 5555555555555555 (cc=1) +og 000000000000FFFF | 5555555555555555 = 555555555555FFFF (cc=1) +og 0000000000007FFF | 5555555555555555 = 5555555555557FFF (cc=1) +og 0000000000008000 | 5555555555555555 = 555555555555D555 (cc=1) +og 00000000FFFFFFFF | 5555555555555555 = 55555555FFFFFFFF (cc=1) +og 0000000080000000 | 5555555555555555 = 55555555D5555555 (cc=1) +og 000000007FFFFFFF | 5555555555555555 = 555555557FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +og 8000000000000000 | 5555555555555555 = D555555555555555 (cc=1) +og FFFFFFFFFFFFFFFF | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 5555555555555555 = 5555555555555555 (cc=1) +or 0000000000000000 | 5555555555555555 = 0000000055555555 (cc=1) +or 0000000000000001 | 5555555555555555 = 0000000055555555 (cc=1) +or 000000000000FFFF | 5555555555555555 = 000000005555FFFF (cc=1) +or 0000000000007FFF | 5555555555555555 = 0000000055557FFF (cc=1) +or 0000000000008000 | 5555555555555555 = 000000005555D555 (cc=1) +or 00000000FFFFFFFF | 5555555555555555 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 5555555555555555 = 00000000D5555555 (cc=1) +or 000000007FFFFFFF | 5555555555555555 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +or 8000000000000000 | 5555555555555555 = 8000000055555555 (cc=1) +or FFFFFFFFFFFFFFFF | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 5555555555555555 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 5555555555555555 = 5555555555555555 (cc=1) +ogr 0000000000000001 | 5555555555555555 = 5555555555555555 (cc=1) +ogr 000000000000FFFF | 5555555555555555 = 555555555555FFFF (cc=1) +ogr 0000000000007FFF | 5555555555555555 = 5555555555557FFF (cc=1) +ogr 0000000000008000 | 5555555555555555 = 555555555555D555 (cc=1) +ogr 00000000FFFFFFFF | 5555555555555555 = 55555555FFFFFFFF (cc=1) +ogr 0000000080000000 | 5555555555555555 = 55555555D5555555 (cc=1) +ogr 000000007FFFFFFF | 5555555555555555 = 555555557FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +ogr 8000000000000000 | 5555555555555555 = D555555555555555 (cc=1) +ogr FFFFFFFFFFFFFFFF | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 5555555555555555 = 5555555555555555 (cc=1) +oy 0000000000000000 | 5555555555555555 = 0000000055555555 (cc=1) +oy 0000000000000001 | 5555555555555555 = 0000000055555555 (cc=1) +oy 000000000000FFFF | 5555555555555555 = 000000005555FFFF (cc=1) +oy 0000000000007FFF | 5555555555555555 = 0000000055557FFF (cc=1) +oy 0000000000008000 | 5555555555555555 = 000000005555D555 (cc=1) +oy 00000000FFFFFFFF | 5555555555555555 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 5555555555555555 = 00000000D5555555 (cc=1) +oy 000000007FFFFFFF | 5555555555555555 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +oy 8000000000000000 | 5555555555555555 = 8000000055555555 (cc=1) +oy FFFFFFFFFFFFFFFF | 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 5555555555555555 = 5555555555555555 (cc=1) +o 0000000000000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +o 0000000000000001 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +o 000000000000FFFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +o 0000000000007FFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +o 0000000000008000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +o 00000000FFFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +o 000000007FFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +o FFFFFFFFFFFFFFFF | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +og 0000000000000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +og 0000000000000001 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAB (cc=1) +og 000000000000FFFF | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAFFFF (cc=1) +og 0000000000007FFF | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAFFFF (cc=1) +og 0000000000008000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +og 00000000FFFFFFFF | AAAAAAAAAAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +og 0000000080000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +og 000000007FFFFFFF | AAAAAAAAAAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +og FFFFFFFFFFFFFFFF | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +or 0000000000000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +or 0000000000000001 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +or 000000000000FFFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +or 0000000000007FFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +or 0000000000008000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +or 00000000FFFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +or 000000007FFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +or FFFFFFFFFFFFFFFF | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +ogr 0000000000000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ogr 0000000000000001 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAB (cc=1) +ogr 000000000000FFFF | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAFFFF (cc=1) +ogr 0000000000007FFF | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAFFFF (cc=1) +ogr 0000000000008000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ogr 00000000FFFFFFFF | AAAAAAAAAAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +ogr 0000000080000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ogr 000000007FFFFFFF | AAAAAAAAAAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +ogr FFFFFFFFFFFFFFFF | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +oy 0000000000000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +oy 0000000000000001 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +oy 000000000000FFFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +oy 0000000000007FFF | AAAAAAAAAAAAAAAA = 00000000AAAAFFFF (cc=1) +oy 0000000000008000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +oy 00000000FFFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +oy 000000007FFFFFFF | AAAAAAAAAAAAAAAA = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +oy FFFFFFFFFFFFFFFF | AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +o 0000000000000000 | 8000000000000000 = 0000000080000000 (cc=1) +o 0000000000000001 | 8000000000000000 = 0000000080000001 (cc=1) +o 000000000000FFFF | 8000000000000000 = 000000008000FFFF (cc=1) +o 0000000000007FFF | 8000000000000000 = 0000000080007FFF (cc=1) +o 0000000000008000 | 8000000000000000 = 0000000080008000 (cc=1) +o 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 8000000000000000 = 8000000080000000 (cc=1) +o FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 8000000000000000 = 55555555D5555555 (cc=1) +og 0000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +og 0000000000000001 | 8000000000000000 = 8000000000000001 (cc=1) +og 000000000000FFFF | 8000000000000000 = 800000000000FFFF (cc=1) +og 0000000000007FFF | 8000000000000000 = 8000000000007FFF (cc=1) +og 0000000000008000 | 8000000000000000 = 8000000000008000 (cc=1) +og 00000000FFFFFFFF | 8000000000000000 = 80000000FFFFFFFF (cc=1) +og 0000000080000000 | 8000000000000000 = 8000000080000000 (cc=1) +og 000000007FFFFFFF | 8000000000000000 = 800000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +og FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 8000000000000000 = D555555555555555 (cc=1) +or 0000000000000000 | 8000000000000000 = 0000000000000000 (cc=0) +or 0000000000000001 | 8000000000000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | 8000000000000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | 8000000000000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | 8000000000000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | 8000000000000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 8000000000000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +ogr 0000000000000001 | 8000000000000000 = 8000000000000001 (cc=1) +ogr 000000000000FFFF | 8000000000000000 = 800000000000FFFF (cc=1) +ogr 0000000000007FFF | 8000000000000000 = 8000000000007FFF (cc=1) +ogr 0000000000008000 | 8000000000000000 = 8000000000008000 (cc=1) +ogr 00000000FFFFFFFF | 8000000000000000 = 80000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 8000000000000000 = 8000000080000000 (cc=1) +ogr 000000007FFFFFFF | 8000000000000000 = 800000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 8000000000000000 = D555555555555555 (cc=1) +oy 0000000000000000 | 8000000000000000 = 0000000080000000 (cc=1) +oy 0000000000000001 | 8000000000000000 = 0000000080000001 (cc=1) +oy 000000000000FFFF | 8000000000000000 = 000000008000FFFF (cc=1) +oy 0000000000007FFF | 8000000000000000 = 0000000080007FFF (cc=1) +oy 0000000000008000 | 8000000000000000 = 0000000080008000 (cc=1) +oy 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 8000000000000000 = 8000000080000000 (cc=1) +oy FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 8000000000000000 = 55555555D5555555 (cc=1) +o 0000000000000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000000000001 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 000000000000FFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000000007FFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000000008000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 00000000FFFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o 000000007FFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | FFFFFFFFFFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +o 8000000000000000 | FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +o FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | FFFFFFFFFFFFFFFF = 55555555FFFFFFFF (cc=1) +og 0000000000000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 0000000000000001 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 000000000000FFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 0000000000007FFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 0000000000008000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 00000000FFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 0000000080000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 000000007FFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 8000000000000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +or 0000000000000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000000001 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 000000000000FFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000007FFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000008000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 00000000FFFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or 000000007FFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | FFFFFFFFFFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +or 8000000000000000 | FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +or FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | FFFFFFFFFFFFFFFF = 55555555FFFFFFFF (cc=1) +ogr 0000000000000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 0000000000000001 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 000000000000FFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 0000000000007FFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 0000000000008000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 00000000FFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 0000000080000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 000000007FFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 8000000000000000 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 0000000000000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000000000001 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 000000000000FFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000000007FFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000000008000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 00000000FFFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 000000007FFFFFFF | FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | FFFFFFFFFFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +oy 8000000000000000 | FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +oy FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | FFFFFFFFFFFFFFFF = 55555555FFFFFFFF (cc=1) +o 0000000000000000 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o 0000000000000001 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o 000000000000FFFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o 0000000000007FFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o 0000000000008000 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o 00000000FFFFFFFF | 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 000000007FFFFFFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 7FFFFFFF00000000 = AAAAAAAAFFFFFFFF (cc=1) +o 8000000000000000 | 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +o FFFFFFFFFFFFFFFF | 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 7FFFFFFF00000000 = 555555557FFFFFFF (cc=1) +og 0000000000000000 | 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +og 0000000000000001 | 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +og 000000000000FFFF | 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +og 0000000000007FFF | 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +og 0000000000008000 | 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +og 00000000FFFFFFFF | 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +og 0000000080000000 | 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +og 000000007FFFFFFF | 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 7FFFFFFF00000000 = FFFFFFFFAAAAAAAA (cc=1) +og 8000000000000000 | 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +og FFFFFFFFFFFFFFFF | 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 7FFFFFFF00000000 = 7FFFFFFF55555555 (cc=1) +or 0000000000000000 | 7FFFFFFF00000000 = 0000000000000000 (cc=0) +or 0000000000000001 | 7FFFFFFF00000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | 7FFFFFFF00000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 7FFFFFFF00000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 7FFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 7FFFFFFF00000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 7FFFFFFF00000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +ogr 0000000000000001 | 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +ogr 000000000000FFFF | 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +ogr 0000000000007FFF | 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +ogr 0000000000008000 | 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +ogr 00000000FFFFFFFF | 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +ogr 0000000080000000 | 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +ogr 000000007FFFFFFF | 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 7FFFFFFF00000000 = FFFFFFFFAAAAAAAA (cc=1) +ogr 8000000000000000 | 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 7FFFFFFF00000000 = 7FFFFFFF55555555 (cc=1) +oy 0000000000000000 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy 0000000000000001 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy 000000000000FFFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy 0000000000007FFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy 0000000000008000 | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy 00000000FFFFFFFF | 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 000000007FFFFFFF | 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 7FFFFFFF00000000 = AAAAAAAAFFFFFFFF (cc=1) +oy 8000000000000000 | 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +oy FFFFFFFFFFFFFFFF | 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 7FFFFFFF00000000 = 555555557FFFFFFF (cc=1) +o 0000000000000000 | 8000000000000000 = 0000000080000000 (cc=1) +o 0000000000000001 | 8000000000000000 = 0000000080000001 (cc=1) +o 000000000000FFFF | 8000000000000000 = 000000008000FFFF (cc=1) +o 0000000000007FFF | 8000000000000000 = 0000000080007FFF (cc=1) +o 0000000000008000 | 8000000000000000 = 0000000080008000 (cc=1) +o 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 8000000000000000 = 8000000080000000 (cc=1) +o FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 8000000000000000 = 55555555D5555555 (cc=1) +og 0000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +og 0000000000000001 | 8000000000000000 = 8000000000000001 (cc=1) +og 000000000000FFFF | 8000000000000000 = 800000000000FFFF (cc=1) +og 0000000000007FFF | 8000000000000000 = 8000000000007FFF (cc=1) +og 0000000000008000 | 8000000000000000 = 8000000000008000 (cc=1) +og 00000000FFFFFFFF | 8000000000000000 = 80000000FFFFFFFF (cc=1) +og 0000000080000000 | 8000000000000000 = 8000000080000000 (cc=1) +og 000000007FFFFFFF | 8000000000000000 = 800000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +og FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 8000000000000000 = D555555555555555 (cc=1) +or 0000000000000000 | 8000000000000000 = 0000000000000000 (cc=0) +or 0000000000000001 | 8000000000000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | 8000000000000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | 8000000000000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | 8000000000000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | 8000000000000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 8000000000000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +ogr 0000000000000001 | 8000000000000000 = 8000000000000001 (cc=1) +ogr 000000000000FFFF | 8000000000000000 = 800000000000FFFF (cc=1) +ogr 0000000000007FFF | 8000000000000000 = 8000000000007FFF (cc=1) +ogr 0000000000008000 | 8000000000000000 = 8000000000008000 (cc=1) +ogr 00000000FFFFFFFF | 8000000000000000 = 80000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 8000000000000000 = 8000000080000000 (cc=1) +ogr 000000007FFFFFFF | 8000000000000000 = 800000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | 8000000000000000 = 8000000000000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 8000000000000000 = D555555555555555 (cc=1) +oy 0000000000000000 | 8000000000000000 = 0000000080000000 (cc=1) +oy 0000000000000001 | 8000000000000000 = 0000000080000001 (cc=1) +oy 000000000000FFFF | 8000000000000000 = 000000008000FFFF (cc=1) +oy 0000000000007FFF | 8000000000000000 = 0000000080007FFF (cc=1) +oy 0000000000008000 | 8000000000000000 = 0000000080008000 (cc=1) +oy 00000000FFFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 8000000000000000 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 8000000000000000 = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 8000000000000000 = 8000000080000000 (cc=1) +oy FFFFFFFFFFFFFFFF | 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 8000000000000000 = 55555555D5555555 (cc=1) +o 0000000000000000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +o 0000000000000001 | AAAAAAAA00000000 = 00000000AAAAAAAB (cc=1) +o 000000000000FFFF | AAAAAAAA00000000 = 00000000AAAAFFFF (cc=1) +o 0000000000007FFF | AAAAAAAA00000000 = 00000000AAAAFFFF (cc=1) +o 0000000000008000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +o 00000000FFFFFFFF | AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +o 000000007FFFFFFF | AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | AAAAAAAA00000000 = 80000000AAAAAAAA (cc=1) +o FFFFFFFFFFFFFFFF | AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +og 0000000000000000 | AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +og 0000000000000001 | AAAAAAAA00000000 = AAAAAAAA00000001 (cc=1) +og 000000000000FFFF | AAAAAAAA00000000 = AAAAAAAA0000FFFF (cc=1) +og 0000000000007FFF | AAAAAAAA00000000 = AAAAAAAA00007FFF (cc=1) +og 0000000000008000 | AAAAAAAA00000000 = AAAAAAAA00008000 (cc=1) +og 00000000FFFFFFFF | AAAAAAAA00000000 = AAAAAAAAFFFFFFFF (cc=1) +og 0000000080000000 | AAAAAAAA00000000 = AAAAAAAA80000000 (cc=1) +og 000000007FFFFFFF | AAAAAAAA00000000 = AAAAAAAA7FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +og FFFFFFFFFFFFFFFF | AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +or 0000000000000000 | AAAAAAAA00000000 = 0000000000000000 (cc=0) +or 0000000000000001 | AAAAAAAA00000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | AAAAAAAA00000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | AAAAAAAA00000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | AAAAAAAA00000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | AAAAAAAA00000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | AAAAAAAA00000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | AAAAAAAA00000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | AAAAAAAA00000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ogr 0000000000000001 | AAAAAAAA00000000 = AAAAAAAA00000001 (cc=1) +ogr 000000000000FFFF | AAAAAAAA00000000 = AAAAAAAA0000FFFF (cc=1) +ogr 0000000000007FFF | AAAAAAAA00000000 = AAAAAAAA00007FFF (cc=1) +ogr 0000000000008000 | AAAAAAAA00000000 = AAAAAAAA00008000 (cc=1) +ogr 00000000FFFFFFFF | AAAAAAAA00000000 = AAAAAAAAFFFFFFFF (cc=1) +ogr 0000000080000000 | AAAAAAAA00000000 = AAAAAAAA80000000 (cc=1) +ogr 000000007FFFFFFF | AAAAAAAA00000000 = AAAAAAAA7FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +oy 0000000000000000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +oy 0000000000000001 | AAAAAAAA00000000 = 00000000AAAAAAAB (cc=1) +oy 000000000000FFFF | AAAAAAAA00000000 = 00000000AAAAFFFF (cc=1) +oy 0000000000007FFF | AAAAAAAA00000000 = 00000000AAAAFFFF (cc=1) +oy 0000000000008000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +oy 00000000FFFFFFFF | AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +oy 000000007FFFFFFF | AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | AAAAAAAA00000000 = 80000000AAAAAAAA (cc=1) +oy FFFFFFFFFFFFFFFF | AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +o 0000000000000000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 0000000000000001 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 000000000000FFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 0000000000007FFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 0000000000008000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 00000000FFFFFFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o 000000007FFFFFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | FFFFFFFF00000000 = AAAAAAAAFFFFFFFF (cc=1) +o 8000000000000000 | FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +o FFFFFFFFFFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | FFFFFFFF00000000 = 55555555FFFFFFFF (cc=1) +og 0000000000000000 | FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +og 0000000000000001 | FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +og 000000000000FFFF | FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +og 0000000000007FFF | FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +og 0000000000008000 | FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +og 00000000FFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +og 0000000080000000 | FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +og 000000007FFFFFFF | FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | FFFFFFFF00000000 = FFFFFFFFAAAAAAAA (cc=1) +og 8000000000000000 | FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +og FFFFFFFFFFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | FFFFFFFF00000000 = FFFFFFFF55555555 (cc=1) +or 0000000000000000 | FFFFFFFF00000000 = 0000000000000000 (cc=0) +or 0000000000000001 | FFFFFFFF00000000 = 0000000000000001 (cc=1) +or 000000000000FFFF | FFFFFFFF00000000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | FFFFFFFF00000000 = 0000000000007FFF (cc=1) +or 0000000000008000 | FFFFFFFF00000000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | FFFFFFFF00000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | FFFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | FFFFFFFF00000000 = 8000000000000000 (cc=0) +or FFFFFFFFFFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | FFFFFFFF00000000 = 5555555555555555 (cc=1) +ogr 0000000000000000 | FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ogr 0000000000000001 | FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +ogr 000000000000FFFF | FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +ogr 0000000000007FFF | FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +ogr 0000000000008000 | FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +ogr 00000000FFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 0000000080000000 | FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +ogr 000000007FFFFFFF | FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | FFFFFFFF00000000 = FFFFFFFFAAAAAAAA (cc=1) +ogr 8000000000000000 | FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | FFFFFFFF00000000 = FFFFFFFF55555555 (cc=1) +oy 0000000000000000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000000000001 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 000000000000FFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000000007FFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000000008000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 00000000FFFFFFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy 000000007FFFFFFF | FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | FFFFFFFF00000000 = AAAAAAAAFFFFFFFF (cc=1) +oy 8000000000000000 | FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +oy FFFFFFFFFFFFFFFF | FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | FFFFFFFF00000000 = 55555555FFFFFFFF (cc=1) +o 0000000000000000 | 000000007FFFFFFF = 0000000000000000 (cc=0) +o 0000000000000001 | 000000007FFFFFFF = 0000000000000001 (cc=1) +o 000000000000FFFF | 000000007FFFFFFF = 000000000000FFFF (cc=1) +o 0000000000007FFF | 000000007FFFFFFF = 0000000000007FFF (cc=1) +o 0000000000008000 | 000000007FFFFFFF = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 000000007FFFFFFF = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 000000007FFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 000000007FFFFFFF = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 000000007FFFFFFF = 5555555555555555 (cc=1) +og 0000000000000000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og 0000000000000001 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og 000000000000FFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og 0000000000007FFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og 0000000000008000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og 00000000FFFFFFFF | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +og 000000007FFFFFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 000000007FFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +og 8000000000000000 | 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +og FFFFFFFFFFFFFFFF | 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 000000007FFFFFFF = 555555557FFFFFFF (cc=1) +or 0000000000000000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or 0000000000000001 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or 000000000000FFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or 0000000000007FFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or 0000000000008000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or 00000000FFFFFFFF | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +or 000000007FFFFFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 000000007FFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +or 8000000000000000 | 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +or FFFFFFFFFFFFFFFF | 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 000000007FFFFFFF = 555555557FFFFFFF (cc=1) +ogr 0000000000000000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr 0000000000000001 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr 000000000000FFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr 0000000000007FFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr 0000000000008000 | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr 00000000FFFFFFFF | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 000000007FFFFFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 000000007FFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +ogr 8000000000000000 | 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +ogr FFFFFFFFFFFFFFFF | 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 000000007FFFFFFF = 555555557FFFFFFF (cc=1) +oy 0000000000000000 | 000000007FFFFFFF = 0000000000000000 (cc=0) +oy 0000000000000001 | 000000007FFFFFFF = 0000000000000001 (cc=1) +oy 000000000000FFFF | 000000007FFFFFFF = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 000000007FFFFFFF = 0000000000007FFF (cc=1) +oy 0000000000008000 | 000000007FFFFFFF = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 000000007FFFFFFF = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 000000007FFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 000000007FFFFFFF = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 000000007FFFFFFF = 5555555555555555 (cc=1) +o 0000000000000000 | 0000000080000000 = 0000000000000000 (cc=0) +o 0000000000000001 | 0000000080000000 = 0000000000000001 (cc=1) +o 000000000000FFFF | 0000000080000000 = 000000000000FFFF (cc=1) +o 0000000000007FFF | 0000000080000000 = 0000000000007FFF (cc=1) +o 0000000000008000 | 0000000080000000 = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 0000000080000000 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 0000000080000000 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 0000000080000000 = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 0000000080000000 = 5555555555555555 (cc=1) +og 0000000000000000 | 0000000080000000 = 0000000080000000 (cc=1) +og 0000000000000001 | 0000000080000000 = 0000000080000001 (cc=1) +og 000000000000FFFF | 0000000080000000 = 000000008000FFFF (cc=1) +og 0000000000007FFF | 0000000080000000 = 0000000080007FFF (cc=1) +og 0000000000008000 | 0000000080000000 = 0000000080008000 (cc=1) +og 00000000FFFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 0000000080000000 = 0000000080000000 (cc=1) +og 000000007FFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | 0000000080000000 = 8000000080000000 (cc=1) +og FFFFFFFFFFFFFFFF | 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 0000000080000000 = 55555555D5555555 (cc=1) +or 0000000000000000 | 0000000080000000 = 0000000080000000 (cc=1) +or 0000000000000001 | 0000000080000000 = 0000000080000001 (cc=1) +or 000000000000FFFF | 0000000080000000 = 000000008000FFFF (cc=1) +or 0000000000007FFF | 0000000080000000 = 0000000080007FFF (cc=1) +or 0000000000008000 | 0000000080000000 = 0000000080008000 (cc=1) +or 00000000FFFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 0000000080000000 = 0000000080000000 (cc=1) +or 000000007FFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 0000000080000000 = 8000000080000000 (cc=1) +or FFFFFFFFFFFFFFFF | 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 0000000080000000 = 55555555D5555555 (cc=1) +ogr 0000000000000000 | 0000000080000000 = 0000000080000000 (cc=1) +ogr 0000000000000001 | 0000000080000000 = 0000000080000001 (cc=1) +ogr 000000000000FFFF | 0000000080000000 = 000000008000FFFF (cc=1) +ogr 0000000000007FFF | 0000000080000000 = 0000000080007FFF (cc=1) +ogr 0000000000008000 | 0000000080000000 = 0000000080008000 (cc=1) +ogr 00000000FFFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 0000000080000000 = 0000000080000000 (cc=1) +ogr 000000007FFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | 0000000080000000 = 8000000080000000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 0000000080000000 = 55555555D5555555 (cc=1) +oy 0000000000000000 | 0000000080000000 = 0000000000000000 (cc=0) +oy 0000000000000001 | 0000000080000000 = 0000000000000001 (cc=1) +oy 000000000000FFFF | 0000000080000000 = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 0000000080000000 = 0000000000007FFF (cc=1) +oy 0000000000008000 | 0000000080000000 = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 0000000080000000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 0000000080000000 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 0000000080000000 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 0000000080000000 = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 0000000080000000 = 5555555555555555 (cc=1) +o 0000000000000000 | 0000000055555555 = 0000000000000000 (cc=0) +o 0000000000000001 | 0000000055555555 = 0000000000000001 (cc=1) +o 000000000000FFFF | 0000000055555555 = 000000000000FFFF (cc=1) +o 0000000000007FFF | 0000000055555555 = 0000000000007FFF (cc=1) +o 0000000000008000 | 0000000055555555 = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 0000000055555555 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 0000000055555555 = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +og 0000000000000000 | 0000000055555555 = 0000000055555555 (cc=1) +og 0000000000000001 | 0000000055555555 = 0000000055555555 (cc=1) +og 000000000000FFFF | 0000000055555555 = 000000005555FFFF (cc=1) +og 0000000000007FFF | 0000000055555555 = 0000000055557FFF (cc=1) +og 0000000000008000 | 0000000055555555 = 000000005555D555 (cc=1) +og 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 0000000055555555 = 00000000D5555555 (cc=1) +og 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +og 8000000000000000 | 0000000055555555 = 8000000055555555 (cc=1) +og FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +or 0000000000000000 | 0000000055555555 = 0000000055555555 (cc=1) +or 0000000000000001 | 0000000055555555 = 0000000055555555 (cc=1) +or 000000000000FFFF | 0000000055555555 = 000000005555FFFF (cc=1) +or 0000000000007FFF | 0000000055555555 = 0000000055557FFF (cc=1) +or 0000000000008000 | 0000000055555555 = 000000005555D555 (cc=1) +or 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 0000000055555555 = 00000000D5555555 (cc=1) +or 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +or 8000000000000000 | 0000000055555555 = 8000000055555555 (cc=1) +or FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +ogr 0000000000000000 | 0000000055555555 = 0000000055555555 (cc=1) +ogr 0000000000000001 | 0000000055555555 = 0000000055555555 (cc=1) +ogr 000000000000FFFF | 0000000055555555 = 000000005555FFFF (cc=1) +ogr 0000000000007FFF | 0000000055555555 = 0000000055557FFF (cc=1) +ogr 0000000000008000 | 0000000055555555 = 000000005555D555 (cc=1) +ogr 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 0000000055555555 = 00000000D5555555 (cc=1) +ogr 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +ogr 8000000000000000 | 0000000055555555 = 8000000055555555 (cc=1) +ogr FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +oy 0000000000000000 | 0000000055555555 = 0000000000000000 (cc=0) +oy 0000000000000001 | 0000000055555555 = 0000000000000001 (cc=1) +oy 000000000000FFFF | 0000000055555555 = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 0000000055555555 = 0000000000007FFF (cc=1) +oy 0000000000008000 | 0000000055555555 = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 0000000055555555 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 0000000055555555 = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +o 0000000000000000 | 00000000FFFFFFFF = 0000000000000000 (cc=0) +o 0000000000000001 | 00000000FFFFFFFF = 0000000000000001 (cc=1) +o 000000000000FFFF | 00000000FFFFFFFF = 000000000000FFFF (cc=1) +o 0000000000007FFF | 00000000FFFFFFFF = 0000000000007FFF (cc=1) +o 0000000000008000 | 00000000FFFFFFFF = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 00000000FFFFFFFF = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 00000000FFFFFFFF = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 00000000FFFFFFFF = 5555555555555555 (cc=1) +og 0000000000000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 0000000000000001 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 000000000000FFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 0000000000007FFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 0000000000008000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og 000000007FFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +og 8000000000000000 | 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +og FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 00000000FFFFFFFF = 55555555FFFFFFFF (cc=1) +or 0000000000000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000000001 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 000000000000FFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000007FFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000000008000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or 000000007FFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +or 8000000000000000 | 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +or FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 00000000FFFFFFFF = 55555555FFFFFFFF (cc=1) +ogr 0000000000000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000000000001 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 000000000000FFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000000007FFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000000008000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr 000000007FFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +ogr 8000000000000000 | 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +ogr FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 00000000FFFFFFFF = 55555555FFFFFFFF (cc=1) +oy 0000000000000000 | 00000000FFFFFFFF = 0000000000000000 (cc=0) +oy 0000000000000001 | 00000000FFFFFFFF = 0000000000000001 (cc=1) +oy 000000000000FFFF | 00000000FFFFFFFF = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 00000000FFFFFFFF = 0000000000007FFF (cc=1) +oy 0000000000008000 | 00000000FFFFFFFF = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 00000000FFFFFFFF = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 00000000FFFFFFFF = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 00000000FFFFFFFF = 5555555555555555 (cc=1) +o 0000000000000000 | 000000000000FFFF = 0000000000000000 (cc=0) +o 0000000000000001 | 000000000000FFFF = 0000000000000001 (cc=1) +o 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +o 0000000000007FFF | 000000000000FFFF = 0000000000007FFF (cc=1) +o 0000000000008000 | 000000000000FFFF = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 000000000000FFFF = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 000000000000FFFF = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 000000000000FFFF = 5555555555555555 (cc=1) +og 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +og 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +og 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +og FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +or 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +or 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +or 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +or FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +ogr 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +ogr 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +ogr 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +ogr FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +oy 0000000000000000 | 000000000000FFFF = 0000000000000000 (cc=0) +oy 0000000000000001 | 000000000000FFFF = 0000000000000001 (cc=1) +oy 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 000000000000FFFF = 0000000000007FFF (cc=1) +oy 0000000000008000 | 000000000000FFFF = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 000000000000FFFF = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 000000000000FFFF = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 000000000000FFFF = 5555555555555555 (cc=1) +o 0000000000000000 | 0000000000007FFF = 0000000000000000 (cc=0) +o 0000000000000001 | 0000000000007FFF = 0000000000000001 (cc=1) +o 000000000000FFFF | 0000000000007FFF = 000000000000FFFF (cc=1) +o 0000000000007FFF | 0000000000007FFF = 0000000000007FFF (cc=1) +o 0000000000008000 | 0000000000007FFF = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 0000000000007FFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 0000000000007FFF = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 0000000000007FFF = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 0000000000007FFF = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 0000000000007FFF = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 0000000000007FFF = 5555555555555555 (cc=1) +og 0000000000000000 | 0000000000007FFF = 0000000000007FFF (cc=1) +og 0000000000000001 | 0000000000007FFF = 0000000000007FFF (cc=1) +og 000000000000FFFF | 0000000000007FFF = 000000000000FFFF (cc=1) +og 0000000000007FFF | 0000000000007FFF = 0000000000007FFF (cc=1) +og 0000000000008000 | 0000000000007FFF = 000000000000FFFF (cc=1) +og 00000000FFFFFFFF | 0000000000007FFF = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 0000000000007FFF = 0000000080007FFF (cc=1) +og 000000007FFFFFFF | 0000000000007FFF = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 0000000000007FFF = AAAAAAAAAAAAFFFF (cc=1) +og 8000000000000000 | 0000000000007FFF = 8000000000007FFF (cc=1) +og FFFFFFFFFFFFFFFF | 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 0000000000007FFF = 5555555555557FFF (cc=1) +or 0000000000000000 | 0000000000007FFF = 0000000000007FFF (cc=1) +or 0000000000000001 | 0000000000007FFF = 0000000000007FFF (cc=1) +or 000000000000FFFF | 0000000000007FFF = 000000000000FFFF (cc=1) +or 0000000000007FFF | 0000000000007FFF = 0000000000007FFF (cc=1) +or 0000000000008000 | 0000000000007FFF = 000000000000FFFF (cc=1) +or 00000000FFFFFFFF | 0000000000007FFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 0000000000007FFF = 0000000080007FFF (cc=1) +or 000000007FFFFFFF | 0000000000007FFF = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 0000000000007FFF = AAAAAAAAAAAAFFFF (cc=1) +or 8000000000000000 | 0000000000007FFF = 8000000000007FFF (cc=1) +or FFFFFFFFFFFFFFFF | 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 0000000000007FFF = 5555555555557FFF (cc=1) +ogr 0000000000000000 | 0000000000007FFF = 0000000000007FFF (cc=1) +ogr 0000000000000001 | 0000000000007FFF = 0000000000007FFF (cc=1) +ogr 000000000000FFFF | 0000000000007FFF = 000000000000FFFF (cc=1) +ogr 0000000000007FFF | 0000000000007FFF = 0000000000007FFF (cc=1) +ogr 0000000000008000 | 0000000000007FFF = 000000000000FFFF (cc=1) +ogr 00000000FFFFFFFF | 0000000000007FFF = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 0000000000007FFF = 0000000080007FFF (cc=1) +ogr 000000007FFFFFFF | 0000000000007FFF = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 0000000000007FFF = AAAAAAAAAAAAFFFF (cc=1) +ogr 8000000000000000 | 0000000000007FFF = 8000000000007FFF (cc=1) +ogr FFFFFFFFFFFFFFFF | 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 0000000000007FFF = 5555555555557FFF (cc=1) +oy 0000000000000000 | 0000000000007FFF = 0000000000000000 (cc=0) +oy 0000000000000001 | 0000000000007FFF = 0000000000000001 (cc=1) +oy 000000000000FFFF | 0000000000007FFF = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 0000000000007FFF = 0000000000007FFF (cc=1) +oy 0000000000008000 | 0000000000007FFF = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 0000000000007FFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 0000000000007FFF = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 0000000000007FFF = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 0000000000007FFF = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 0000000000007FFF = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 0000000000007FFF = 5555555555555555 (cc=1) +o 0000000000000000 | 0000000000008000 = 0000000000000000 (cc=0) +o 0000000000000001 | 0000000000008000 = 0000000000000001 (cc=1) +o 000000000000FFFF | 0000000000008000 = 000000000000FFFF (cc=1) +o 0000000000007FFF | 0000000000008000 = 0000000000007FFF (cc=1) +o 0000000000008000 | 0000000000008000 = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 0000000000008000 = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 0000000000008000 = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 0000000000008000 = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 0000000000008000 = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 0000000000008000 = 5555555555555555 (cc=1) +og 0000000000000000 | 0000000000008000 = 0000000000008000 (cc=1) +og 0000000000000001 | 0000000000008000 = 0000000000008001 (cc=1) +og 000000000000FFFF | 0000000000008000 = 000000000000FFFF (cc=1) +og 0000000000007FFF | 0000000000008000 = 000000000000FFFF (cc=1) +og 0000000000008000 | 0000000000008000 = 0000000000008000 (cc=1) +og 00000000FFFFFFFF | 0000000000008000 = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 0000000000008000 = 0000000080008000 (cc=1) +og 000000007FFFFFFF | 0000000000008000 = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +og 8000000000000000 | 0000000000008000 = 8000000000008000 (cc=1) +og FFFFFFFFFFFFFFFF | 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 0000000000008000 = 555555555555D555 (cc=1) +or 0000000000000000 | 0000000000008000 = 0000000000008000 (cc=1) +or 0000000000000001 | 0000000000008000 = 0000000000008001 (cc=1) +or 000000000000FFFF | 0000000000008000 = 000000000000FFFF (cc=1) +or 0000000000007FFF | 0000000000008000 = 000000000000FFFF (cc=1) +or 0000000000008000 | 0000000000008000 = 0000000000008000 (cc=1) +or 00000000FFFFFFFF | 0000000000008000 = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 0000000000008000 = 0000000080008000 (cc=1) +or 000000007FFFFFFF | 0000000000008000 = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +or 8000000000000000 | 0000000000008000 = 8000000000008000 (cc=1) +or FFFFFFFFFFFFFFFF | 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 0000000000008000 = 555555555555D555 (cc=1) +ogr 0000000000000000 | 0000000000008000 = 0000000000008000 (cc=1) +ogr 0000000000000001 | 0000000000008000 = 0000000000008001 (cc=1) +ogr 000000000000FFFF | 0000000000008000 = 000000000000FFFF (cc=1) +ogr 0000000000007FFF | 0000000000008000 = 000000000000FFFF (cc=1) +ogr 0000000000008000 | 0000000000008000 = 0000000000008000 (cc=1) +ogr 00000000FFFFFFFF | 0000000000008000 = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 0000000000008000 = 0000000080008000 (cc=1) +ogr 000000007FFFFFFF | 0000000000008000 = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +ogr 8000000000000000 | 0000000000008000 = 8000000000008000 (cc=1) +ogr FFFFFFFFFFFFFFFF | 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 0000000000008000 = 555555555555D555 (cc=1) +oy 0000000000000000 | 0000000000008000 = 0000000000000000 (cc=0) +oy 0000000000000001 | 0000000000008000 = 0000000000000001 (cc=1) +oy 000000000000FFFF | 0000000000008000 = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 0000000000008000 = 0000000000007FFF (cc=1) +oy 0000000000008000 | 0000000000008000 = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 0000000000008000 = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 0000000000008000 = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 0000000000008000 = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 0000000000008000 = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 0000000000008000 = 5555555555555555 (cc=1) +o 0000000000000000 | 000000000000FFFF = 0000000000000000 (cc=0) +o 0000000000000001 | 000000000000FFFF = 0000000000000001 (cc=1) +o 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +o 0000000000007FFF | 000000000000FFFF = 0000000000007FFF (cc=1) +o 0000000000008000 | 000000000000FFFF = 0000000000008000 (cc=1) +o 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +o 0000000080000000 | 000000000000FFFF = 0000000080000000 (cc=1) +o 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +o AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +o 8000000000000000 | 000000000000FFFF = 8000000000000000 (cc=0) +o FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +o 5555555555555555 | 000000000000FFFF = 5555555555555555 (cc=1) +og 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +og 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +og 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +og 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +og 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +og AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +og 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +og FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +og 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +or 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +or 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +or 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +or 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +or 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +or AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +or 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +or FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +or 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +ogr 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +ogr 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +ogr 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +ogr 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +ogr AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +ogr 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +ogr FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +ogr 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +oy 0000000000000000 | 000000000000FFFF = 0000000000000000 (cc=0) +oy 0000000000000001 | 000000000000FFFF = 0000000000000001 (cc=1) +oy 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +oy 0000000000007FFF | 000000000000FFFF = 0000000000007FFF (cc=1) +oy 0000000000008000 | 000000000000FFFF = 0000000000008000 (cc=1) +oy 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oy 0000000080000000 | 000000000000FFFF = 0000000080000000 (cc=1) +oy 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +oy AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +oy 8000000000000000 | 000000000000FFFF = 8000000000000000 (cc=0) +oy FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oy 5555555555555555 | 000000000000FFFF = 5555555555555555 (cc=1) +oi 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oi 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +oi 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +oi 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +oi 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +oi 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=0) +oi 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +oi 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=0) +oi AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oi 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +oi FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oi 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oi 0000000000000000 | 00000000000000FF = FF00000000000000 (cc=1) +oi 0000000000000001 | 00000000000000FF = FF00000000000001 (cc=1) +oi 000000000000FFFF | 00000000000000FF = FF0000000000FFFF (cc=1) +oi 0000000000007FFF | 00000000000000FF = FF00000000007FFF (cc=1) +oi 0000000000008000 | 00000000000000FF = FF00000000008000 (cc=1) +oi 00000000FFFFFFFF | 00000000000000FF = FF000000FFFFFFFF (cc=1) +oi 0000000080000000 | 00000000000000FF = FF00000080000000 (cc=1) +oi 000000007FFFFFFF | 00000000000000FF = FF0000007FFFFFFF (cc=1) +oi AAAAAAAAAAAAAAAA | 00000000000000FF = FFAAAAAAAAAAAAAA (cc=1) +oi 8000000000000000 | 00000000000000FF = FF00000000000000 (cc=1) +oi FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oi 5555555555555555 | 00000000000000FF = FF55555555555555 (cc=1) +oi 0000000000000000 | 0000000000000080 = 8000000000000000 (cc=1) +oi 0000000000000001 | 0000000000000080 = 8000000000000001 (cc=1) +oi 000000000000FFFF | 0000000000000080 = 800000000000FFFF (cc=1) +oi 0000000000007FFF | 0000000000000080 = 8000000000007FFF (cc=1) +oi 0000000000008000 | 0000000000000080 = 8000000000008000 (cc=1) +oi 00000000FFFFFFFF | 0000000000000080 = 80000000FFFFFFFF (cc=1) +oi 0000000080000000 | 0000000000000080 = 8000000080000000 (cc=1) +oi 000000007FFFFFFF | 0000000000000080 = 800000007FFFFFFF (cc=1) +oi AAAAAAAAAAAAAAAA | 0000000000000080 = AAAAAAAAAAAAAAAA (cc=1) +oi 8000000000000000 | 0000000000000080 = 8000000000000000 (cc=1) +oi FFFFFFFFFFFFFFFF | 0000000000000080 = FFFFFFFFFFFFFFFF (cc=1) +oi 5555555555555555 | 0000000000000080 = D555555555555555 (cc=1) +oi 0000000000000000 | 00000000000000AA = AA00000000000000 (cc=1) +oi 0000000000000001 | 00000000000000AA = AA00000000000001 (cc=1) +oi 000000000000FFFF | 00000000000000AA = AA0000000000FFFF (cc=1) +oi 0000000000007FFF | 00000000000000AA = AA00000000007FFF (cc=1) +oi 0000000000008000 | 00000000000000AA = AA00000000008000 (cc=1) +oi 00000000FFFFFFFF | 00000000000000AA = AA000000FFFFFFFF (cc=1) +oi 0000000080000000 | 00000000000000AA = AA00000080000000 (cc=1) +oi 000000007FFFFFFF | 00000000000000AA = AA0000007FFFFFFF (cc=1) +oi AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oi 8000000000000000 | 00000000000000AA = AA00000000000000 (cc=1) +oi FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oi 5555555555555555 | 00000000000000AA = FF55555555555555 (cc=1) +oi 0000000000000000 | 0000000000000055 = 5500000000000000 (cc=1) +oi 0000000000000001 | 0000000000000055 = 5500000000000001 (cc=1) +oi 000000000000FFFF | 0000000000000055 = 550000000000FFFF (cc=1) +oi 0000000000007FFF | 0000000000000055 = 5500000000007FFF (cc=1) +oi 0000000000008000 | 0000000000000055 = 5500000000008000 (cc=1) +oi 00000000FFFFFFFF | 0000000000000055 = 55000000FFFFFFFF (cc=1) +oi 0000000080000000 | 0000000000000055 = 5500000080000000 (cc=1) +oi 000000007FFFFFFF | 0000000000000055 = 550000007FFFFFFF (cc=1) +oi AAAAAAAAAAAAAAAA | 0000000000000055 = FFAAAAAAAAAAAAAA (cc=1) +oi 8000000000000000 | 0000000000000055 = D500000000000000 (cc=1) +oi FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oi 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oiy 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oiy 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +oiy 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +oiy 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +oiy 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +oiy 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=0) +oiy 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +oiy 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=0) +oiy AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oiy 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +oiy FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oiy 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oiy 0000000000000000 | 00000000000000FF = FF00000000000000 (cc=1) +oiy 0000000000000001 | 00000000000000FF = FF00000000000001 (cc=1) +oiy 000000000000FFFF | 00000000000000FF = FF0000000000FFFF (cc=1) +oiy 0000000000007FFF | 00000000000000FF = FF00000000007FFF (cc=1) +oiy 0000000000008000 | 00000000000000FF = FF00000000008000 (cc=1) +oiy 00000000FFFFFFFF | 00000000000000FF = FF000000FFFFFFFF (cc=1) +oiy 0000000080000000 | 00000000000000FF = FF00000080000000 (cc=1) +oiy 000000007FFFFFFF | 00000000000000FF = FF0000007FFFFFFF (cc=1) +oiy AAAAAAAAAAAAAAAA | 00000000000000FF = FFAAAAAAAAAAAAAA (cc=1) +oiy 8000000000000000 | 00000000000000FF = FF00000000000000 (cc=1) +oiy FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oiy 5555555555555555 | 00000000000000FF = FF55555555555555 (cc=1) +oiy 0000000000000000 | 0000000000000080 = 8000000000000000 (cc=1) +oiy 0000000000000001 | 0000000000000080 = 8000000000000001 (cc=1) +oiy 000000000000FFFF | 0000000000000080 = 800000000000FFFF (cc=1) +oiy 0000000000007FFF | 0000000000000080 = 8000000000007FFF (cc=1) +oiy 0000000000008000 | 0000000000000080 = 8000000000008000 (cc=1) +oiy 00000000FFFFFFFF | 0000000000000080 = 80000000FFFFFFFF (cc=1) +oiy 0000000080000000 | 0000000000000080 = 8000000080000000 (cc=1) +oiy 000000007FFFFFFF | 0000000000000080 = 800000007FFFFFFF (cc=1) +oiy AAAAAAAAAAAAAAAA | 0000000000000080 = AAAAAAAAAAAAAAAA (cc=1) +oiy 8000000000000000 | 0000000000000080 = 8000000000000000 (cc=1) +oiy FFFFFFFFFFFFFFFF | 0000000000000080 = FFFFFFFFFFFFFFFF (cc=1) +oiy 5555555555555555 | 0000000000000080 = D555555555555555 (cc=1) +oiy 0000000000000000 | 00000000000000AA = AA00000000000000 (cc=1) +oiy 0000000000000001 | 00000000000000AA = AA00000000000001 (cc=1) +oiy 000000000000FFFF | 00000000000000AA = AA0000000000FFFF (cc=1) +oiy 0000000000007FFF | 00000000000000AA = AA00000000007FFF (cc=1) +oiy 0000000000008000 | 00000000000000AA = AA00000000008000 (cc=1) +oiy 00000000FFFFFFFF | 00000000000000AA = AA000000FFFFFFFF (cc=1) +oiy 0000000080000000 | 00000000000000AA = AA00000080000000 (cc=1) +oiy 000000007FFFFFFF | 00000000000000AA = AA0000007FFFFFFF (cc=1) +oiy AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oiy 8000000000000000 | 00000000000000AA = AA00000000000000 (cc=1) +oiy FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oiy 5555555555555555 | 00000000000000AA = FF55555555555555 (cc=1) +oiy 0000000000000000 | 0000000000000055 = 5500000000000000 (cc=1) +oiy 0000000000000001 | 0000000000000055 = 5500000000000001 (cc=1) +oiy 000000000000FFFF | 0000000000000055 = 550000000000FFFF (cc=1) +oiy 0000000000007FFF | 0000000000000055 = 5500000000007FFF (cc=1) +oiy 0000000000008000 | 0000000000000055 = 5500000000008000 (cc=1) +oiy 00000000FFFFFFFF | 0000000000000055 = 55000000FFFFFFFF (cc=1) +oiy 0000000080000000 | 0000000000000055 = 5500000080000000 (cc=1) +oiy 000000007FFFFFFF | 0000000000000055 = 550000007FFFFFFF (cc=1) +oiy AAAAAAAAAAAAAAAA | 0000000000000055 = FFAAAAAAAAAAAAAA (cc=1) +oiy 8000000000000000 | 0000000000000055 = D500000000000000 (cc=1) +oiy FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oiy 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oihh 0000000000000000 | 0000000000000055 = 0055000000000000 (cc=1) +oihh 0000000000000001 | 0000000000000055 = 0055000000000001 (cc=1) +oihh 000000000000FFFF | 0000000000000055 = 005500000000FFFF (cc=1) +oihh 0000000000007FFF | 0000000000000055 = 0055000000007FFF (cc=1) +oihh 0000000000008000 | 0000000000000055 = 0055000000008000 (cc=1) +oihh 00000000FFFFFFFF | 0000000000000055 = 00550000FFFFFFFF (cc=1) +oihh 0000000080000000 | 0000000000000055 = 0055000080000000 (cc=1) +oihh 000000007FFFFFFF | 0000000000000055 = 005500007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 0000000000000055 = AAFFAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 0000000000000055 = 8055000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oihl 0000000000000000 | 0000000000000055 = 0000005500000000 (cc=1) +oihl 0000000000000001 | 0000000000000055 = 0000005500000001 (cc=1) +oihl 000000000000FFFF | 0000000000000055 = 000000550000FFFF (cc=1) +oihl 0000000000007FFF | 0000000000000055 = 0000005500007FFF (cc=1) +oihl 0000000000008000 | 0000000000000055 = 0000005500008000 (cc=1) +oihl 00000000FFFFFFFF | 0000000000000055 = 00000055FFFFFFFF (cc=1) +oihl 0000000080000000 | 0000000000000055 = 0000005580000000 (cc=1) +oihl 000000007FFFFFFF | 0000000000000055 = 000000557FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 0000000000000055 = AAAAAAFFAAAAAAAA (cc=1) +oihl 8000000000000000 | 0000000000000055 = 8000005500000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oilh 0000000000000000 | 0000000000000055 = 0000000000550000 (cc=1) +oilh 0000000000000001 | 0000000000000055 = 0000000000550001 (cc=1) +oilh 000000000000FFFF | 0000000000000055 = 000000000055FFFF (cc=1) +oilh 0000000000007FFF | 0000000000000055 = 0000000000557FFF (cc=1) +oilh 0000000000008000 | 0000000000000055 = 0000000000558000 (cc=1) +oilh 00000000FFFFFFFF | 0000000000000055 = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 0000000000000055 = 0000000080550000 (cc=1) +oilh 000000007FFFFFFF | 0000000000000055 = 000000007FFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 0000000000000055 = AAAAAAAAAAFFAAAA (cc=1) +oilh 8000000000000000 | 0000000000000055 = 8000000000550000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oill 0000000000000000 | 0000000000000055 = 0000000000000055 (cc=1) +oill 0000000000000001 | 0000000000000055 = 0000000000000055 (cc=1) +oill 000000000000FFFF | 0000000000000055 = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 0000000000000055 = 0000000000007FFF (cc=1) +oill 0000000000008000 | 0000000000000055 = 0000000000008055 (cc=1) +oill 00000000FFFFFFFF | 0000000000000055 = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 0000000000000055 = 0000000080000055 (cc=1) +oill 000000007FFFFFFF | 0000000000000055 = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 0000000000000055 = AAAAAAAAAAAAAAFF (cc=1) +oill 8000000000000000 | 0000000000000055 = 8000000000000055 (cc=1) +oill FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +oihh 0000000000000000 | 00000000000000AA = 00AA000000000000 (cc=1) +oihh 0000000000000001 | 00000000000000AA = 00AA000000000001 (cc=1) +oihh 000000000000FFFF | 00000000000000AA = 00AA00000000FFFF (cc=1) +oihh 0000000000007FFF | 00000000000000AA = 00AA000000007FFF (cc=1) +oihh 0000000000008000 | 00000000000000AA = 00AA000000008000 (cc=1) +oihh 00000000FFFFFFFF | 00000000000000AA = 00AA0000FFFFFFFF (cc=1) +oihh 0000000080000000 | 00000000000000AA = 00AA000080000000 (cc=1) +oihh 000000007FFFFFFF | 00000000000000AA = 00AA00007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 00000000000000AA = 80AA000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 00000000000000AA = 55FF555555555555 (cc=1) +oihl 0000000000000000 | 00000000000000AA = 000000AA00000000 (cc=1) +oihl 0000000000000001 | 00000000000000AA = 000000AA00000001 (cc=1) +oihl 000000000000FFFF | 00000000000000AA = 000000AA0000FFFF (cc=1) +oihl 0000000000007FFF | 00000000000000AA = 000000AA00007FFF (cc=1) +oihl 0000000000008000 | 00000000000000AA = 000000AA00008000 (cc=1) +oihl 00000000FFFFFFFF | 00000000000000AA = 000000AAFFFFFFFF (cc=1) +oihl 0000000080000000 | 00000000000000AA = 000000AA80000000 (cc=1) +oihl 000000007FFFFFFF | 00000000000000AA = 000000AA7FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oihl 8000000000000000 | 00000000000000AA = 800000AA00000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 00000000000000AA = 555555FF55555555 (cc=1) +oilh 0000000000000000 | 00000000000000AA = 0000000000AA0000 (cc=1) +oilh 0000000000000001 | 00000000000000AA = 0000000000AA0001 (cc=1) +oilh 000000000000FFFF | 00000000000000AA = 0000000000AAFFFF (cc=1) +oilh 0000000000007FFF | 00000000000000AA = 0000000000AA7FFF (cc=1) +oilh 0000000000008000 | 00000000000000AA = 0000000000AA8000 (cc=1) +oilh 00000000FFFFFFFF | 00000000000000AA = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 00000000000000AA = 0000000080AA0000 (cc=1) +oilh 000000007FFFFFFF | 00000000000000AA = 000000007FFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oilh 8000000000000000 | 00000000000000AA = 8000000000AA0000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 00000000000000AA = 5555555555FF5555 (cc=1) +oill 0000000000000000 | 00000000000000AA = 00000000000000AA (cc=1) +oill 0000000000000001 | 00000000000000AA = 00000000000000AB (cc=1) +oill 000000000000FFFF | 00000000000000AA = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 00000000000000AA = 0000000000007FFF (cc=1) +oill 0000000000008000 | 00000000000000AA = 00000000000080AA (cc=1) +oill 00000000FFFFFFFF | 00000000000000AA = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 00000000000000AA = 00000000800000AA (cc=1) +oill 000000007FFFFFFF | 00000000000000AA = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +oill 8000000000000000 | 00000000000000AA = 80000000000000AA (cc=1) +oill FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 00000000000000AA = 55555555555555FF (cc=1) +oihh 0000000000000000 | 00000000000000FF = 00FF000000000000 (cc=1) +oihh 0000000000000001 | 00000000000000FF = 00FF000000000001 (cc=1) +oihh 000000000000FFFF | 00000000000000FF = 00FF00000000FFFF (cc=1) +oihh 0000000000007FFF | 00000000000000FF = 00FF000000007FFF (cc=1) +oihh 0000000000008000 | 00000000000000FF = 00FF000000008000 (cc=1) +oihh 00000000FFFFFFFF | 00000000000000FF = 00FF0000FFFFFFFF (cc=1) +oihh 0000000080000000 | 00000000000000FF = 00FF000080000000 (cc=1) +oihh 000000007FFFFFFF | 00000000000000FF = 00FF00007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 00000000000000FF = AAFFAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 00000000000000FF = 80FF000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 00000000000000FF = 55FF555555555555 (cc=1) +oihl 0000000000000000 | 00000000000000FF = 000000FF00000000 (cc=1) +oihl 0000000000000001 | 00000000000000FF = 000000FF00000001 (cc=1) +oihl 000000000000FFFF | 00000000000000FF = 000000FF0000FFFF (cc=1) +oihl 0000000000007FFF | 00000000000000FF = 000000FF00007FFF (cc=1) +oihl 0000000000008000 | 00000000000000FF = 000000FF00008000 (cc=1) +oihl 00000000FFFFFFFF | 00000000000000FF = 000000FFFFFFFFFF (cc=1) +oihl 0000000080000000 | 00000000000000FF = 000000FF80000000 (cc=1) +oihl 000000007FFFFFFF | 00000000000000FF = 000000FF7FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 00000000000000FF = AAAAAAFFAAAAAAAA (cc=1) +oihl 8000000000000000 | 00000000000000FF = 800000FF00000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 00000000000000FF = 555555FF55555555 (cc=1) +oilh 0000000000000000 | 00000000000000FF = 0000000000FF0000 (cc=1) +oilh 0000000000000001 | 00000000000000FF = 0000000000FF0001 (cc=1) +oilh 000000000000FFFF | 00000000000000FF = 0000000000FFFFFF (cc=1) +oilh 0000000000007FFF | 00000000000000FF = 0000000000FF7FFF (cc=1) +oilh 0000000000008000 | 00000000000000FF = 0000000000FF8000 (cc=1) +oilh 00000000FFFFFFFF | 00000000000000FF = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 00000000000000FF = 0000000080FF0000 (cc=1) +oilh 000000007FFFFFFF | 00000000000000FF = 000000007FFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 00000000000000FF = AAAAAAAAAAFFAAAA (cc=1) +oilh 8000000000000000 | 00000000000000FF = 8000000000FF0000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 00000000000000FF = 5555555555FF5555 (cc=1) +oill 0000000000000000 | 00000000000000FF = 00000000000000FF (cc=1) +oill 0000000000000001 | 00000000000000FF = 00000000000000FF (cc=1) +oill 000000000000FFFF | 00000000000000FF = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 00000000000000FF = 0000000000007FFF (cc=1) +oill 0000000000008000 | 00000000000000FF = 00000000000080FF (cc=1) +oill 00000000FFFFFFFF | 00000000000000FF = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 00000000000000FF = 00000000800000FF (cc=1) +oill 000000007FFFFFFF | 00000000000000FF = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 00000000000000FF = AAAAAAAAAAAAAAFF (cc=1) +oill 8000000000000000 | 00000000000000FF = 80000000000000FF (cc=1) +oill FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 00000000000000FF = 55555555555555FF (cc=1) +oihh 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oihh 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +oihh 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +oihh 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +oihh 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +oihh 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=0) +oihh 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +oihh 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=0) +oihh AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oihl 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oihl 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +oihl 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +oihl 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +oihl 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +oihl 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=0) +oihl 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +oihl 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=0) +oihl AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oihl 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +oihl FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oilh 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oilh 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +oilh 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +oilh 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +oilh 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +oilh 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +oilh 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oilh 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +oilh FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oill 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +oill 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +oill 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +oill 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +oill 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +oill 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +oill 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +oill FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +oihh 0000000000000000 | 000000000000FFFF = FFFF000000000000 (cc=1) +oihh 0000000000000001 | 000000000000FFFF = FFFF000000000001 (cc=1) +oihh 000000000000FFFF | 000000000000FFFF = FFFF00000000FFFF (cc=1) +oihh 0000000000007FFF | 000000000000FFFF = FFFF000000007FFF (cc=1) +oihh 0000000000008000 | 000000000000FFFF = FFFF000000008000 (cc=1) +oihh 00000000FFFFFFFF | 000000000000FFFF = FFFF0000FFFFFFFF (cc=1) +oihh 0000000080000000 | 000000000000FFFF = FFFF000080000000 (cc=1) +oihh 000000007FFFFFFF | 000000000000FFFF = FFFF00007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 000000000000FFFF = FFFFAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 000000000000FFFF = FFFF000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 000000000000FFFF = FFFF555555555555 (cc=1) +oihl 0000000000000000 | 000000000000FFFF = 0000FFFF00000000 (cc=1) +oihl 0000000000000001 | 000000000000FFFF = 0000FFFF00000001 (cc=1) +oihl 000000000000FFFF | 000000000000FFFF = 0000FFFF0000FFFF (cc=1) +oihl 0000000000007FFF | 000000000000FFFF = 0000FFFF00007FFF (cc=1) +oihl 0000000000008000 | 000000000000FFFF = 0000FFFF00008000 (cc=1) +oihl 00000000FFFFFFFF | 000000000000FFFF = 0000FFFFFFFFFFFF (cc=1) +oihl 0000000080000000 | 000000000000FFFF = 0000FFFF80000000 (cc=1) +oihl 000000007FFFFFFF | 000000000000FFFF = 0000FFFF7FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAFFFFAAAAAAAA (cc=1) +oihl 8000000000000000 | 000000000000FFFF = 8000FFFF00000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 000000000000FFFF = 5555FFFF55555555 (cc=1) +oilh 0000000000000000 | 000000000000FFFF = 00000000FFFF0000 (cc=1) +oilh 0000000000000001 | 000000000000FFFF = 00000000FFFF0001 (cc=1) +oilh 000000000000FFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oilh 0000000000007FFF | 000000000000FFFF = 00000000FFFF7FFF (cc=1) +oilh 0000000000008000 | 000000000000FFFF = 00000000FFFF8000 (cc=1) +oilh 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 000000000000FFFF = 00000000FFFF0000 (cc=1) +oilh 000000007FFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAFFFFAAAA (cc=1) +oilh 8000000000000000 | 000000000000FFFF = 80000000FFFF0000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 000000000000FFFF = 55555555FFFF5555 (cc=1) +oill 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +oill 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +oill 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +oill 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +oill 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +oill 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +oill 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +oill FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +oihh 0000000000000000 | 000000000000AAAA = AAAA000000000000 (cc=1) +oihh 0000000000000001 | 000000000000AAAA = AAAA000000000001 (cc=1) +oihh 000000000000FFFF | 000000000000AAAA = AAAA00000000FFFF (cc=1) +oihh 0000000000007FFF | 000000000000AAAA = AAAA000000007FFF (cc=1) +oihh 0000000000008000 | 000000000000AAAA = AAAA000000008000 (cc=1) +oihh 00000000FFFFFFFF | 000000000000AAAA = AAAA0000FFFFFFFF (cc=1) +oihh 0000000080000000 | 000000000000AAAA = AAAA000080000000 (cc=1) +oihh 000000007FFFFFFF | 000000000000AAAA = AAAA00007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 000000000000AAAA = AAAA000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 000000000000AAAA = FFFF555555555555 (cc=1) +oihl 0000000000000000 | 000000000000AAAA = 0000AAAA00000000 (cc=1) +oihl 0000000000000001 | 000000000000AAAA = 0000AAAA00000001 (cc=1) +oihl 000000000000FFFF | 000000000000AAAA = 0000AAAA0000FFFF (cc=1) +oihl 0000000000007FFF | 000000000000AAAA = 0000AAAA00007FFF (cc=1) +oihl 0000000000008000 | 000000000000AAAA = 0000AAAA00008000 (cc=1) +oihl 00000000FFFFFFFF | 000000000000AAAA = 0000AAAAFFFFFFFF (cc=1) +oihl 0000000080000000 | 000000000000AAAA = 0000AAAA80000000 (cc=1) +oihl 000000007FFFFFFF | 000000000000AAAA = 0000AAAA7FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +oihl 8000000000000000 | 000000000000AAAA = 8000AAAA00000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 000000000000AAAA = 5555FFFF55555555 (cc=1) +oilh 0000000000000000 | 000000000000AAAA = 00000000AAAA0000 (cc=1) +oilh 0000000000000001 | 000000000000AAAA = 00000000AAAA0001 (cc=1) +oilh 000000000000FFFF | 000000000000AAAA = 00000000AAAAFFFF (cc=1) +oilh 0000000000007FFF | 000000000000AAAA = 00000000AAAA7FFF (cc=1) +oilh 0000000000008000 | 000000000000AAAA = 00000000AAAA8000 (cc=1) +oilh 00000000FFFFFFFF | 000000000000AAAA = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 000000000000AAAA = 00000000AAAA0000 (cc=1) +oilh 000000007FFFFFFF | 000000000000AAAA = 00000000FFFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +oilh 8000000000000000 | 000000000000AAAA = 80000000AAAA0000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 000000000000AAAA = 55555555FFFF5555 (cc=1) +oill 0000000000000000 | 000000000000AAAA = 000000000000AAAA (cc=1) +oill 0000000000000001 | 000000000000AAAA = 000000000000AAAB (cc=1) +oill 000000000000FFFF | 000000000000AAAA = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 000000000000AAAA = 000000000000FFFF (cc=1) +oill 0000000000008000 | 000000000000AAAA = 000000000000AAAA (cc=1) +oill 00000000FFFFFFFF | 000000000000AAAA = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 000000000000AAAA = 000000008000AAAA (cc=1) +oill 000000007FFFFFFF | 000000000000AAAA = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +oill 8000000000000000 | 000000000000AAAA = 800000000000AAAA (cc=1) +oill FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 000000000000AAAA = 555555555555FFFF (cc=1) +oihh 0000000000000000 | 0000000000005555 = 5555000000000000 (cc=1) +oihh 0000000000000001 | 0000000000005555 = 5555000000000001 (cc=1) +oihh 000000000000FFFF | 0000000000005555 = 555500000000FFFF (cc=1) +oihh 0000000000007FFF | 0000000000005555 = 5555000000007FFF (cc=1) +oihh 0000000000008000 | 0000000000005555 = 5555000000008000 (cc=1) +oihh 00000000FFFFFFFF | 0000000000005555 = 55550000FFFFFFFF (cc=1) +oihh 0000000080000000 | 0000000000005555 = 5555000080000000 (cc=1) +oihh 000000007FFFFFFF | 0000000000005555 = 555500007FFFFFFF (cc=1) +oihh AAAAAAAAAAAAAAAA | 0000000000005555 = FFFFAAAAAAAAAAAA (cc=1) +oihh 8000000000000000 | 0000000000005555 = D555000000000000 (cc=1) +oihh FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +oihh 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) +oihl 0000000000000000 | 0000000000005555 = 0000555500000000 (cc=1) +oihl 0000000000000001 | 0000000000005555 = 0000555500000001 (cc=1) +oihl 000000000000FFFF | 0000000000005555 = 000055550000FFFF (cc=1) +oihl 0000000000007FFF | 0000000000005555 = 0000555500007FFF (cc=1) +oihl 0000000000008000 | 0000000000005555 = 0000555500008000 (cc=1) +oihl 00000000FFFFFFFF | 0000000000005555 = 00005555FFFFFFFF (cc=1) +oihl 0000000080000000 | 0000000000005555 = 0000555580000000 (cc=1) +oihl 000000007FFFFFFF | 0000000000005555 = 000055557FFFFFFF (cc=1) +oihl AAAAAAAAAAAAAAAA | 0000000000005555 = AAAAFFFFAAAAAAAA (cc=1) +oihl 8000000000000000 | 0000000000005555 = 8000555500000000 (cc=1) +oihl FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +oihl 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) +oilh 0000000000000000 | 0000000000005555 = 0000000055550000 (cc=1) +oilh 0000000000000001 | 0000000000005555 = 0000000055550001 (cc=1) +oilh 000000000000FFFF | 0000000000005555 = 000000005555FFFF (cc=1) +oilh 0000000000007FFF | 0000000000005555 = 0000000055557FFF (cc=1) +oilh 0000000000008000 | 0000000000005555 = 0000000055558000 (cc=1) +oilh 00000000FFFFFFFF | 0000000000005555 = 00000000FFFFFFFF (cc=1) +oilh 0000000080000000 | 0000000000005555 = 00000000D5550000 (cc=1) +oilh 000000007FFFFFFF | 0000000000005555 = 000000007FFFFFFF (cc=1) +oilh AAAAAAAAAAAAAAAA | 0000000000005555 = AAAAAAAAFFFFAAAA (cc=1) +oilh 8000000000000000 | 0000000000005555 = 8000000055550000 (cc=1) +oilh FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +oilh 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) +oill 0000000000000000 | 0000000000005555 = 0000000000005555 (cc=1) +oill 0000000000000001 | 0000000000005555 = 0000000000005555 (cc=1) +oill 000000000000FFFF | 0000000000005555 = 000000000000FFFF (cc=1) +oill 0000000000007FFF | 0000000000005555 = 0000000000007FFF (cc=1) +oill 0000000000008000 | 0000000000005555 = 000000000000D555 (cc=1) +oill 00000000FFFFFFFF | 0000000000005555 = 00000000FFFFFFFF (cc=1) +oill 0000000080000000 | 0000000000005555 = 0000000080005555 (cc=1) +oill 000000007FFFFFFF | 0000000000005555 = 000000007FFFFFFF (cc=1) +oill AAAAAAAAAAAAAAAA | 0000000000005555 = AAAAAAAAAAAAFFFF (cc=1) +oill 8000000000000000 | 0000000000005555 = 8000000000005555 (cc=1) +oill FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +oill 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.vgtest new file mode 100644 index 000000000..ab47cc83e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or.vgtest @@ -0,0 +1 @@ +prog: or diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.c new file mode 100644 index 000000000..dfdf33a21 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.c @@ -0,0 +1,41 @@ +#include +#include "or.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(OIHF, 00000000); + immsweep(OIHF, 000000ff); + immsweep(OIHF, 00000055); + immsweep(OIHF, 000000aa); + immsweep(OIHF, 0000ffff); + immsweep(OIHF, 00005555); + immsweep(OIHF, 0000aaaa); + immsweep(OIHF, ffff0000); + immsweep(OIHF, 55550000); + immsweep(OIHF, aaaa0000); + immsweep(OIHF, ffffffff); + immsweep(OIHF, 55555555); + immsweep(OIHF, aaaaaaaa); + immsweep(OILF, 00000000); + immsweep(OILF, 000000ff); + immsweep(OILF, 00000055); + immsweep(OILF, 000000aa); + immsweep(OILF, 0000ffff); + immsweep(OILF, 00005555); + immsweep(OILF, 0000aaaa); + immsweep(OILF, ffff0000); + immsweep(OILF, 55550000); + immsweep(OILF, aaaa0000); + immsweep(OILF, ffffffff); + immsweep(OILF, 55555555); + immsweep(OILF, aaaaaaaa); +} + + +int main() +{ + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stdout.exp new file mode 100644 index 000000000..0317e83d0 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.stdout.exp @@ -0,0 +1,312 @@ +OIHF 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +OIHF 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=0) +OIHF 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=0) +OIHF 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=0) +OIHF 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=0) +OIHF 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=0) +OIHF 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=0) +OIHF 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=0) +OIHF AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +OIHF 0000000000000000 | 00000000000000FF = 000000FF00000000 (cc=1) +OIHF 0000000000000001 | 00000000000000FF = 000000FF00000001 (cc=1) +OIHF 000000000000FFFF | 00000000000000FF = 000000FF0000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000000000FF = 000000FF00007FFF (cc=1) +OIHF 0000000000008000 | 00000000000000FF = 000000FF00008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000000000FF = 000000FFFFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000000000FF = 000000FF80000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000000000FF = 000000FF7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000000000FF = AAAAAAFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000000000FF = 800000FF00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000000000FF = 555555FF55555555 (cc=1) +OIHF 0000000000000000 | 0000000000000055 = 0000005500000000 (cc=1) +OIHF 0000000000000001 | 0000000000000055 = 0000005500000001 (cc=1) +OIHF 000000000000FFFF | 0000000000000055 = 000000550000FFFF (cc=1) +OIHF 0000000000007FFF | 0000000000000055 = 0000005500007FFF (cc=1) +OIHF 0000000000008000 | 0000000000000055 = 0000005500008000 (cc=1) +OIHF 00000000FFFFFFFF | 0000000000000055 = 00000055FFFFFFFF (cc=1) +OIHF 0000000080000000 | 0000000000000055 = 0000005580000000 (cc=1) +OIHF 000000007FFFFFFF | 0000000000000055 = 000000557FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 0000000000000055 = AAAAAAFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 0000000000000055 = 8000005500000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +OIHF 0000000000000000 | 00000000000000AA = 000000AA00000000 (cc=1) +OIHF 0000000000000001 | 00000000000000AA = 000000AA00000001 (cc=1) +OIHF 000000000000FFFF | 00000000000000AA = 000000AA0000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000000000AA = 000000AA00007FFF (cc=1) +OIHF 0000000000008000 | 00000000000000AA = 000000AA00008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000000000AA = 000000AAFFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000000000AA = 000000AA80000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000000000AA = 000000AA7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000000000AA = 800000AA00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000000000AA = 555555FF55555555 (cc=1) +OIHF 0000000000000000 | 000000000000FFFF = 0000FFFF00000000 (cc=1) +OIHF 0000000000000001 | 000000000000FFFF = 0000FFFF00000001 (cc=1) +OIHF 000000000000FFFF | 000000000000FFFF = 0000FFFF0000FFFF (cc=1) +OIHF 0000000000007FFF | 000000000000FFFF = 0000FFFF00007FFF (cc=1) +OIHF 0000000000008000 | 000000000000FFFF = 0000FFFF00008000 (cc=1) +OIHF 00000000FFFFFFFF | 000000000000FFFF = 0000FFFFFFFFFFFF (cc=1) +OIHF 0000000080000000 | 000000000000FFFF = 0000FFFF80000000 (cc=1) +OIHF 000000007FFFFFFF | 000000000000FFFF = 0000FFFF7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAFFFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 000000000000FFFF = 8000FFFF00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 000000000000FFFF = 5555FFFF55555555 (cc=1) +OIHF 0000000000000000 | 0000000000005555 = 0000555500000000 (cc=1) +OIHF 0000000000000001 | 0000000000005555 = 0000555500000001 (cc=1) +OIHF 000000000000FFFF | 0000000000005555 = 000055550000FFFF (cc=1) +OIHF 0000000000007FFF | 0000000000005555 = 0000555500007FFF (cc=1) +OIHF 0000000000008000 | 0000000000005555 = 0000555500008000 (cc=1) +OIHF 00000000FFFFFFFF | 0000000000005555 = 00005555FFFFFFFF (cc=1) +OIHF 0000000080000000 | 0000000000005555 = 0000555580000000 (cc=1) +OIHF 000000007FFFFFFF | 0000000000005555 = 000055557FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 0000000000005555 = AAAAFFFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 0000000000005555 = 8000555500000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) +OIHF 0000000000000000 | 000000000000AAAA = 0000AAAA00000000 (cc=1) +OIHF 0000000000000001 | 000000000000AAAA = 0000AAAA00000001 (cc=1) +OIHF 000000000000FFFF | 000000000000AAAA = 0000AAAA0000FFFF (cc=1) +OIHF 0000000000007FFF | 000000000000AAAA = 0000AAAA00007FFF (cc=1) +OIHF 0000000000008000 | 000000000000AAAA = 0000AAAA00008000 (cc=1) +OIHF 00000000FFFFFFFF | 000000000000AAAA = 0000AAAAFFFFFFFF (cc=1) +OIHF 0000000080000000 | 000000000000AAAA = 0000AAAA80000000 (cc=1) +OIHF 000000007FFFFFFF | 000000000000AAAA = 0000AAAA7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 000000000000AAAA = 8000AAAA00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 000000000000AAAA = 5555FFFF55555555 (cc=1) +OIHF 0000000000000000 | 00000000FFFF0000 = FFFF000000000000 (cc=1) +OIHF 0000000000000001 | 00000000FFFF0000 = FFFF000000000001 (cc=1) +OIHF 000000000000FFFF | 00000000FFFF0000 = FFFF00000000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000FFFF0000 = FFFF000000007FFF (cc=1) +OIHF 0000000000008000 | 00000000FFFF0000 = FFFF000000008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000FFFF0000 = FFFF0000FFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000FFFF0000 = FFFF000080000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000FFFF0000 = FFFF00007FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000FFFF0000 = FFFFAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000FFFF0000 = FFFF000000000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000FFFF0000 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000FFFF0000 = FFFF555555555555 (cc=1) +OIHF 0000000000000000 | 0000000055550000 = 5555000000000000 (cc=1) +OIHF 0000000000000001 | 0000000055550000 = 5555000000000001 (cc=1) +OIHF 000000000000FFFF | 0000000055550000 = 555500000000FFFF (cc=1) +OIHF 0000000000007FFF | 0000000055550000 = 5555000000007FFF (cc=1) +OIHF 0000000000008000 | 0000000055550000 = 5555000000008000 (cc=1) +OIHF 00000000FFFFFFFF | 0000000055550000 = 55550000FFFFFFFF (cc=1) +OIHF 0000000080000000 | 0000000055550000 = 5555000080000000 (cc=1) +OIHF 000000007FFFFFFF | 0000000055550000 = 555500007FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 0000000055550000 = FFFFAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 0000000055550000 = D555000000000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 0000000055550000 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 0000000055550000 = 5555555555555555 (cc=1) +OIHF 0000000000000000 | 00000000AAAA0000 = AAAA000000000000 (cc=1) +OIHF 0000000000000001 | 00000000AAAA0000 = AAAA000000000001 (cc=1) +OIHF 000000000000FFFF | 00000000AAAA0000 = AAAA00000000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000AAAA0000 = AAAA000000007FFF (cc=1) +OIHF 0000000000008000 | 00000000AAAA0000 = AAAA000000008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000AAAA0000 = AAAA0000FFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000AAAA0000 = AAAA000080000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000AAAA0000 = AAAA00007FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000AAAA0000 = AAAAAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000AAAA0000 = AAAA000000000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000AAAA0000 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000AAAA0000 = FFFF555555555555 (cc=1) +OIHF 0000000000000000 | 00000000FFFFFFFF = FFFFFFFF00000000 (cc=1) +OIHF 0000000000000001 | 00000000FFFFFFFF = FFFFFFFF00000001 (cc=1) +OIHF 000000000000FFFF | 00000000FFFFFFFF = FFFFFFFF0000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000FFFFFFFF = FFFFFFFF00007FFF (cc=1) +OIHF 0000000000008000 | 00000000FFFFFFFF = FFFFFFFF00008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000FFFFFFFF = FFFFFFFF80000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000FFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = FFFFFFFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000FFFFFFFF = FFFFFFFF00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000FFFFFFFF = FFFFFFFF55555555 (cc=1) +OIHF 0000000000000000 | 0000000055555555 = 5555555500000000 (cc=1) +OIHF 0000000000000001 | 0000000055555555 = 5555555500000001 (cc=1) +OIHF 000000000000FFFF | 0000000055555555 = 555555550000FFFF (cc=1) +OIHF 0000000000007FFF | 0000000055555555 = 5555555500007FFF (cc=1) +OIHF 0000000000008000 | 0000000055555555 = 5555555500008000 (cc=1) +OIHF 00000000FFFFFFFF | 0000000055555555 = 55555555FFFFFFFF (cc=1) +OIHF 0000000080000000 | 0000000055555555 = 5555555580000000 (cc=1) +OIHF 000000007FFFFFFF | 0000000055555555 = 555555557FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +OIHF 8000000000000000 | 0000000055555555 = D555555500000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +OIHF 0000000000000000 | 00000000AAAAAAAA = AAAAAAAA00000000 (cc=1) +OIHF 0000000000000001 | 00000000AAAAAAAA = AAAAAAAA00000001 (cc=1) +OIHF 000000000000FFFF | 00000000AAAAAAAA = AAAAAAAA0000FFFF (cc=1) +OIHF 0000000000007FFF | 00000000AAAAAAAA = AAAAAAAA00007FFF (cc=1) +OIHF 0000000000008000 | 00000000AAAAAAAA = AAAAAAAA00008000 (cc=1) +OIHF 00000000FFFFFFFF | 00000000AAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +OIHF 0000000080000000 | 00000000AAAAAAAA = AAAAAAAA80000000 (cc=1) +OIHF 000000007FFFFFFF | 00000000AAAAAAAA = AAAAAAAA7FFFFFFF (cc=1) +OIHF AAAAAAAAAAAAAAAA | 00000000AAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +OIHF 8000000000000000 | 00000000AAAAAAAA = AAAAAAAA00000000 (cc=1) +OIHF FFFFFFFFFFFFFFFF | 00000000AAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +OIHF 5555555555555555 | 00000000AAAAAAAA = FFFFFFFF55555555 (cc=1) +OILF 0000000000000000 | 0000000000000000 = 0000000000000000 (cc=0) +OILF 0000000000000001 | 0000000000000000 = 0000000000000001 (cc=1) +OILF 000000000000FFFF | 0000000000000000 = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 0000000000000000 = 0000000000007FFF (cc=1) +OILF 0000000000008000 | 0000000000000000 = 0000000000008000 (cc=1) +OILF 00000000FFFFFFFF | 0000000000000000 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 0000000000000000 = 0000000080000000 (cc=1) +OILF 000000007FFFFFFF | 0000000000000000 = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +OILF 8000000000000000 | 0000000000000000 = 8000000000000000 (cc=0) +OILF FFFFFFFFFFFFFFFF | 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 0000000000000000 = 5555555555555555 (cc=1) +OILF 0000000000000000 | 00000000000000FF = 00000000000000FF (cc=1) +OILF 0000000000000001 | 00000000000000FF = 00000000000000FF (cc=1) +OILF 000000000000FFFF | 00000000000000FF = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 00000000000000FF = 0000000000007FFF (cc=1) +OILF 0000000000008000 | 00000000000000FF = 00000000000080FF (cc=1) +OILF 00000000FFFFFFFF | 00000000000000FF = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000000000FF = 00000000800000FF (cc=1) +OILF 000000007FFFFFFF | 00000000000000FF = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000000000FF = AAAAAAAAAAAAAAFF (cc=1) +OILF 8000000000000000 | 00000000000000FF = 80000000000000FF (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000000000FF = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000000000FF = 55555555555555FF (cc=1) +OILF 0000000000000000 | 0000000000000055 = 0000000000000055 (cc=1) +OILF 0000000000000001 | 0000000000000055 = 0000000000000055 (cc=1) +OILF 000000000000FFFF | 0000000000000055 = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 0000000000000055 = 0000000000007FFF (cc=1) +OILF 0000000000008000 | 0000000000000055 = 0000000000008055 (cc=1) +OILF 00000000FFFFFFFF | 0000000000000055 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 0000000000000055 = 0000000080000055 (cc=1) +OILF 000000007FFFFFFF | 0000000000000055 = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 0000000000000055 = AAAAAAAAAAAAAAFF (cc=1) +OILF 8000000000000000 | 0000000000000055 = 8000000000000055 (cc=1) +OILF FFFFFFFFFFFFFFFF | 0000000000000055 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 0000000000000055 = 5555555555555555 (cc=1) +OILF 0000000000000000 | 00000000000000AA = 00000000000000AA (cc=1) +OILF 0000000000000001 | 00000000000000AA = 00000000000000AB (cc=1) +OILF 000000000000FFFF | 00000000000000AA = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 00000000000000AA = 0000000000007FFF (cc=1) +OILF 0000000000008000 | 00000000000000AA = 00000000000080AA (cc=1) +OILF 00000000FFFFFFFF | 00000000000000AA = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000000000AA = 00000000800000AA (cc=1) +OILF 000000007FFFFFFF | 00000000000000AA = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000000000AA = AAAAAAAAAAAAAAAA (cc=1) +OILF 8000000000000000 | 00000000000000AA = 80000000000000AA (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000000000AA = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000000000AA = 55555555555555FF (cc=1) +OILF 0000000000000000 | 000000000000FFFF = 000000000000FFFF (cc=1) +OILF 0000000000000001 | 000000000000FFFF = 000000000000FFFF (cc=1) +OILF 000000000000FFFF | 000000000000FFFF = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 000000000000FFFF = 000000000000FFFF (cc=1) +OILF 0000000000008000 | 000000000000FFFF = 000000000000FFFF (cc=1) +OILF 00000000FFFFFFFF | 000000000000FFFF = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 000000000000FFFF = 000000008000FFFF (cc=1) +OILF 000000007FFFFFFF | 000000000000FFFF = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 000000000000FFFF = AAAAAAAAAAAAFFFF (cc=1) +OILF 8000000000000000 | 000000000000FFFF = 800000000000FFFF (cc=1) +OILF FFFFFFFFFFFFFFFF | 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 000000000000FFFF = 555555555555FFFF (cc=1) +OILF 0000000000000000 | 0000000000005555 = 0000000000005555 (cc=1) +OILF 0000000000000001 | 0000000000005555 = 0000000000005555 (cc=1) +OILF 000000000000FFFF | 0000000000005555 = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 0000000000005555 = 0000000000007FFF (cc=1) +OILF 0000000000008000 | 0000000000005555 = 000000000000D555 (cc=1) +OILF 00000000FFFFFFFF | 0000000000005555 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 0000000000005555 = 0000000080005555 (cc=1) +OILF 000000007FFFFFFF | 0000000000005555 = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 0000000000005555 = AAAAAAAAAAAAFFFF (cc=1) +OILF 8000000000000000 | 0000000000005555 = 8000000000005555 (cc=1) +OILF FFFFFFFFFFFFFFFF | 0000000000005555 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 0000000000005555 = 5555555555555555 (cc=1) +OILF 0000000000000000 | 000000000000AAAA = 000000000000AAAA (cc=1) +OILF 0000000000000001 | 000000000000AAAA = 000000000000AAAB (cc=1) +OILF 000000000000FFFF | 000000000000AAAA = 000000000000FFFF (cc=1) +OILF 0000000000007FFF | 000000000000AAAA = 000000000000FFFF (cc=1) +OILF 0000000000008000 | 000000000000AAAA = 000000000000AAAA (cc=1) +OILF 00000000FFFFFFFF | 000000000000AAAA = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 000000000000AAAA = 000000008000AAAA (cc=1) +OILF 000000007FFFFFFF | 000000000000AAAA = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 000000000000AAAA = AAAAAAAAAAAAAAAA (cc=1) +OILF 8000000000000000 | 000000000000AAAA = 800000000000AAAA (cc=1) +OILF FFFFFFFFFFFFFFFF | 000000000000AAAA = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 000000000000AAAA = 555555555555FFFF (cc=1) +OILF 0000000000000000 | 00000000FFFF0000 = 00000000FFFF0000 (cc=1) +OILF 0000000000000001 | 00000000FFFF0000 = 00000000FFFF0001 (cc=1) +OILF 000000000000FFFF | 00000000FFFF0000 = 00000000FFFFFFFF (cc=1) +OILF 0000000000007FFF | 00000000FFFF0000 = 00000000FFFF7FFF (cc=1) +OILF 0000000000008000 | 00000000FFFF0000 = 00000000FFFF8000 (cc=1) +OILF 00000000FFFFFFFF | 00000000FFFF0000 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000FFFF0000 = 00000000FFFF0000 (cc=1) +OILF 000000007FFFFFFF | 00000000FFFF0000 = 00000000FFFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000FFFF0000 = AAAAAAAAFFFFAAAA (cc=1) +OILF 8000000000000000 | 00000000FFFF0000 = 80000000FFFF0000 (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000FFFF0000 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000FFFF0000 = 55555555FFFF5555 (cc=1) +OILF 0000000000000000 | 0000000055550000 = 0000000055550000 (cc=1) +OILF 0000000000000001 | 0000000055550000 = 0000000055550001 (cc=1) +OILF 000000000000FFFF | 0000000055550000 = 000000005555FFFF (cc=1) +OILF 0000000000007FFF | 0000000055550000 = 0000000055557FFF (cc=1) +OILF 0000000000008000 | 0000000055550000 = 0000000055558000 (cc=1) +OILF 00000000FFFFFFFF | 0000000055550000 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 0000000055550000 = 00000000D5550000 (cc=1) +OILF 000000007FFFFFFF | 0000000055550000 = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 0000000055550000 = AAAAAAAAFFFFAAAA (cc=1) +OILF 8000000000000000 | 0000000055550000 = 8000000055550000 (cc=1) +OILF FFFFFFFFFFFFFFFF | 0000000055550000 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 0000000055550000 = 5555555555555555 (cc=1) +OILF 0000000000000000 | 00000000AAAA0000 = 00000000AAAA0000 (cc=1) +OILF 0000000000000001 | 00000000AAAA0000 = 00000000AAAA0001 (cc=1) +OILF 000000000000FFFF | 00000000AAAA0000 = 00000000AAAAFFFF (cc=1) +OILF 0000000000007FFF | 00000000AAAA0000 = 00000000AAAA7FFF (cc=1) +OILF 0000000000008000 | 00000000AAAA0000 = 00000000AAAA8000 (cc=1) +OILF 00000000FFFFFFFF | 00000000AAAA0000 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000AAAA0000 = 00000000AAAA0000 (cc=1) +OILF 000000007FFFFFFF | 00000000AAAA0000 = 00000000FFFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000AAAA0000 = AAAAAAAAAAAAAAAA (cc=1) +OILF 8000000000000000 | 00000000AAAA0000 = 80000000AAAA0000 (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000AAAA0000 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000AAAA0000 = 55555555FFFF5555 (cc=1) +OILF 0000000000000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 0000000000000001 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 000000000000FFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 0000000000007FFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 0000000000008000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 00000000FFFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF 000000007FFFFFFF | 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000FFFFFFFF = AAAAAAAAFFFFFFFF (cc=1) +OILF 8000000000000000 | 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000FFFFFFFF = 55555555FFFFFFFF (cc=1) +OILF 0000000000000000 | 0000000055555555 = 0000000055555555 (cc=1) +OILF 0000000000000001 | 0000000055555555 = 0000000055555555 (cc=1) +OILF 000000000000FFFF | 0000000055555555 = 000000005555FFFF (cc=1) +OILF 0000000000007FFF | 0000000055555555 = 0000000055557FFF (cc=1) +OILF 0000000000008000 | 0000000055555555 = 000000005555D555 (cc=1) +OILF 00000000FFFFFFFF | 0000000055555555 = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 0000000055555555 = 00000000D5555555 (cc=1) +OILF 000000007FFFFFFF | 0000000055555555 = 000000007FFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +OILF 8000000000000000 | 0000000055555555 = 8000000055555555 (cc=1) +OILF FFFFFFFFFFFFFFFF | 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 0000000055555555 = 5555555555555555 (cc=1) +OILF 0000000000000000 | 00000000AAAAAAAA = 00000000AAAAAAAA (cc=1) +OILF 0000000000000001 | 00000000AAAAAAAA = 00000000AAAAAAAB (cc=1) +OILF 000000000000FFFF | 00000000AAAAAAAA = 00000000AAAAFFFF (cc=1) +OILF 0000000000007FFF | 00000000AAAAAAAA = 00000000AAAAFFFF (cc=1) +OILF 0000000000008000 | 00000000AAAAAAAA = 00000000AAAAAAAA (cc=1) +OILF 00000000FFFFFFFF | 00000000AAAAAAAA = 00000000FFFFFFFF (cc=1) +OILF 0000000080000000 | 00000000AAAAAAAA = 00000000AAAAAAAA (cc=1) +OILF 000000007FFFFFFF | 00000000AAAAAAAA = 00000000FFFFFFFF (cc=1) +OILF AAAAAAAAAAAAAAAA | 00000000AAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +OILF 8000000000000000 | 00000000AAAAAAAA = 80000000AAAAAAAA (cc=1) +OILF FFFFFFFFFFFFFFFF | 00000000AAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +OILF 5555555555555555 | 00000000AAAAAAAA = 55555555FFFFFFFF (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.vgtest new file mode 100644 index 000000000..f45526772 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/or_EI.vgtest @@ -0,0 +1,2 @@ +prog: or_EI +prereq: test -x or_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.c new file mode 100644 index 000000000..9358783df --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.c @@ -0,0 +1,93 @@ +#include "test.h" +char buffer[24] ="0123456789abcdefghijklmn"; +char *buflong = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.,}[]" + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS%UVWXYZ0123456789_.,}[]"; + +static char * srst3(char *__next, char *__start, char __what, int *__cc) +{ + register unsigned long what asm ("0") = __what; + register char *next asm ("2") = __next; + register char *start asm ("4") = __start; + int cc; + + asm volatile( "0: srst 2,4\n" + "jo 0b\n" + "ipm %2\n" + "srl %2,28\n" + :"+d" (start), "+d" (next), "=d" (cc) :"d" (what): "cc"); + *__cc = cc; + return next; +} + +static char * srst2(char *__start, char __what, int *__cc) +{ + register unsigned long what asm ("0") = __what; + register char *start asm ("4") = __start; + int cc; + + asm volatile( "0: srst 0,4\n" + "jo 0b\n" + "ipm %2\n" + "srl %2,28\n" + :"+d" (start), "+d" (what), "=d" (cc) :: "cc"); + *__cc = cc; + return (char *) what; +} + +int main() +{ + char *buf; + int cc; + + + /* len=0 and start== next should not fault */ + srst3((char *)0x12345678,(char *)0x12345678,'0', &cc); + printf("(cc=%d)\n", cc); + + buf = srst3(&buffer[23], &buffer[23], '0', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst3(&buffer[23], &buffer[0], '0', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst3(&buffer[23], &buffer[0], 'a', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst3(&buffer[23], &buffer[0], 'm', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst3(&buffer[23], &buffer[0], 'n', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst2(&buffer[0], '0', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst2(&buffer[0], 'a', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst2(&buffer[0], 'm', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst2(&buffer[0], 'n', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + + buf = srst3(buflong + 469, buflong, '%', &cc); + dump_field(buf, 1); + printf("(cc=%d)\n", cc); + return 0; +} + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stdout.exp new file mode 100644 index 000000000..cf250f87f --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.stdout.exp @@ -0,0 +1,11 @@ +(cc=2) +6E (cc=2) +30 (cc=1) +61 (cc=1) +6D (cc=1) +6E (cc=2) +30 (cc=1) +61 (cc=1) +6D (cc=1) +6E (cc=1) +25 (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.vgtest new file mode 100644 index 000000000..1ee87526c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/srst.vgtest @@ -0,0 +1 @@ +prog: srst diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.c new file mode 100644 index 000000000..2925d5e65 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +int stck(unsigned long *addr) +{ + int cc; + asm volatile ( "stck %0\n" + "ipm %1\n" + "srl %1,28\n" + :"=Q" (*addr), "=d"(cc)::"memory", "cc"); + return cc; +} + +unsigned long clockticks_in_msec(unsigned long b, unsigned long a) +{ + return (b - a) / 4096000UL; +} + +int main() +{ + + int cc; + unsigned long start, end, diff; + + cc = stck(&start); + if (cc) + printf("cc != 0!\n"); + sleep(1); + cc = stck(&end); + if (cc) + printf("cc != 0!\n"); + diff = clockticks_in_msec(end, start); + if (diff >= 1000 && diff < 1500) + printf("OK.....Testcase passed\n"); + else + printf("FAILED.....Testcase failed\n"); + return 0; + +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stdout.exp new file mode 100644 index 000000000..abd0531df --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.stdout.exp @@ -0,0 +1 @@ +OK.....Testcase passed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.vgtest new file mode 100644 index 000000000..289dced6e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stck.vgtest @@ -0,0 +1 @@ +prog:stck diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.c new file mode 100644 index 000000000..8cd8e0d0b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.c @@ -0,0 +1,56 @@ +#include +#include +#include + +union stcke { + unsigned long buffer[2]; + struct reader { + char pad; + unsigned long long time; + int time2; + short program; + } __attribute__ ((packed)) reader; +}; + +int stcke(unsigned long *addr) +{ + + int cc; + asm volatile ( "stcke %0\n" + "ipm %1\n" + "srl %1, 28\n" + :"+Q" (*addr), "=d"(cc)::"cc"); + + return cc; +} + +unsigned long clockticks_in_msec(unsigned long b, unsigned long a) +{ + return (b -a ) / 4096000UL; +} + +int main() +{ + union stcke start, end; + int cc; + + cc = stcke(start.buffer); + if (cc) + printf("cc != 0!\n"); + + sleep(1); + cc = stcke(end.buffer); + if (cc) + printf("cc != 0!\n"); + + unsigned long c = clockticks_in_msec(end.reader.time, + start.reader.time); + + if (c >= 1000 && c < 1500) + printf("OK.....Testcase passed\n"); + else + printf("FAILED.....Testcase failed\n"); + + return 0; + +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stdout.exp new file mode 100644 index 000000000..abd0531df --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.stdout.exp @@ -0,0 +1 @@ +OK.....Testcase passed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.vgtest new file mode 100644 index 000000000..9ea1ba852 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stcke.vgtest @@ -0,0 +1 @@ +prog:stcke diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.c new file mode 100644 index 000000000..a7cb1068e --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include + +int stckf(unsigned long *addr) +{ + int cc; + asm volatile ( ".insn s,0xb27c0000,%0\n" + "ipm %1\n" + "srl %1,28\n" + :"=Q" (*addr), "=d"(cc)::"memory", "cc"); + return cc; +} + +unsigned long clockticks_in_msec(unsigned long b, unsigned long a) +{ + return (b - a) / 4096000UL; +} + +int main() +{ + + int cc; + unsigned long start, end, diff; + + cc = stckf(&start); + if (cc) + printf("cc != 0!\n"); + sleep(1); + cc = stckf(&end); + if (cc) + printf("cc != 0!\n"); + + diff = clockticks_in_msec(end, start); + if (diff >= 1000 && diff < 1500) + printf("OK.....Testcase passed\n"); + else + printf("FAILED.....Testcase failed\n"); + return 0; + +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stdout.exp new file mode 100644 index 000000000..abd0531df --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.stdout.exp @@ -0,0 +1 @@ +OK.....Testcase passed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.vgtest new file mode 100644 index 000000000..c16fbff19 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.vgtest @@ -0,0 +1,2 @@ +prog:stckf +prereq: ../../../tests/s390x_features s390x-stckf diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.c new file mode 100644 index 000000000..6b610ab2d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.c @@ -0,0 +1,52 @@ +#include +#include "sub.h" +#include "opcodes.h" + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(s, s2, 0); + memsweep(sh, s2, 0); + memsweep(sg, s2, 0); + memsweep(sgf, s2, 0); + memsweep(sl, s2, 0); + memsweep(slg, s2, 0); + memsweep(sgf, s2, 0); + memsweep(slgf, s2, 0); + regsweep(sr, s2, 0); + regsweep(sgr, s2, 0); + regsweep(sgfr, s2, 0); + regsweep(slr, s2, 0); + regsweep(slgr, s2, 0); + regsweep(slgfr, s2, 0); + memsweep(slb, s2, 0); + memsweep(slbg, s2, 0); + regsweep(slbr, s2, 0); + regsweep(slbgr, s2, 0); + memsweep(slb, s2, 1); + memsweep(slbg, s2, 1); + regsweep(slbr, s2, 1); + regsweep(slbgr, s2, 1); + ldispsweep(SHY, s2, 0); + ldispsweep(SLY, s2, 0); + ldispsweep(SY, s2, 0); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x7ffffffffffffffful); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.h new file mode 100644 index 000000000..7d4bed792 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.h @@ -0,0 +1,127 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define SUB_REG_MEM(insn, s1, s2, NOBORROW) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( "lghi 0," #NOBORROW "\n" \ + "aghi 0, 0\n" \ + #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX - %16.16lX - %d = %16.16lX (cc=%d)\n", s1, s2, !NOBORROW, tmp, cc); \ +}) + +#define SUB_REG_REG(insn, s1, s2, NOBORROW) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( "lghi 0," #NOBORROW "\n" \ + "aghi 0, 0\n" \ + #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX - %16.16lX - %d = %16.16lX (cc=%d)\n", s1, s2, !NOBORROW, tmp, cc); \ +}) + +#define SUB_REG_IMM(insn, s1, s2, NOBORROW) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( "lghi 0," #NOBORROW "\n" \ + "aghi 0, 0\n" \ + insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "0", "cc"); \ + v = tmp; \ + printf(#insn " %16.16lX - %16.16lX - %d = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x00000000##s2, !NOBORROW, v, cc); \ +}) + +#define memsweep(i, s2, carryset) \ +({ \ + SUB_REG_MEM(i, 0ul, s2, carryset); \ + SUB_REG_MEM(i, 1ul, s2, carryset); \ + SUB_REG_MEM(i, 0xfffful, s2, carryset); \ + SUB_REG_MEM(i, 0x7ffful, s2, carryset); \ + SUB_REG_MEM(i, 0x8000ul, s2, carryset); \ + SUB_REG_MEM(i, 0xfffffffful, s2, carryset); \ + SUB_REG_MEM(i, 0x80000000ul, s2, carryset); \ + SUB_REG_MEM(i, 0x7ffffffful, s2, carryset); \ + SUB_REG_MEM(i, 0xfffffffffffffffful, s2, carryset); \ + SUB_REG_MEM(i, 0x8000000000000000ul, s2, carryset); \ + SUB_REG_MEM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define regsweep(i, s2, carryset) \ +({ \ + SUB_REG_REG(i, 0ul, s2, carryset); \ + SUB_REG_REG(i, 1ul, s2, carryset); \ + SUB_REG_REG(i, 0xfffful, s2, carryset); \ + SUB_REG_REG(i, 0x7ffful, s2, carryset); \ + SUB_REG_REG(i, 0x8000ul, s2, carryset); \ + SUB_REG_REG(i, 0xfffffffful, s2, carryset); \ + SUB_REG_REG(i, 0x80000000ul, s2, carryset); \ + SUB_REG_REG(i, 0x7ffffffful, s2, carryset); \ + SUB_REG_REG(i, 0xfffffffffffffffful, s2, carryset); \ + SUB_REG_REG(i, 0x8000000000000000ul, s2, carryset); \ + SUB_REG_REG(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define immsweep(i, s2, carryset) \ +({ \ + SUB_REG_IMM(i, 0ul, s2, carryset); \ + SUB_REG_IMM(i, 1ul, s2, carryset); \ + SUB_REG_IMM(i, 0xfffful, s2, carryset); \ + SUB_REG_IMM(i, 0x7ffful, s2, carryset); \ + SUB_REG_IMM(i, 0x8000ul, s2, carryset); \ + SUB_REG_IMM(i, 0xfffffffful, s2, carryset); \ + SUB_REG_IMM(i, 0x80000000ul, s2, carryset); \ + SUB_REG_IMM(i, 0x7ffffffful, s2, carryset); \ + SUB_REG_IMM(i, 0xfffffffffffffffful, s2, carryset); \ + SUB_REG_IMM(i, 0x8000000000000000ul, s2, carryset); \ + SUB_REG_IMM(i, 0x7ffffffffffffffful, s2, carryset); \ +}) + +#define SUB_REG_LDISP(insn, s1, s2, NOBORROW) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + register unsigned long *addr asm("5") = &s2; \ + int cc; \ + asm volatile( "lghi 0," #NOBORROW "\n" \ + "aghi 0, 0\n" \ + insn(2,0,5,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2), "d"(addr) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " %16.16lX - %16.16lX - %d = %16.16lX (cc=%d)\n", s1, s2, !NOBORROW, v, cc); \ +}) + +#define ldispsweep(i, s2, carryset) \ +({ \ + SUB_REG_LDISP(i, 0ul, s2, carryset); \ + SUB_REG_LDISP(i, 1ul, s2, carryset); \ + SUB_REG_LDISP(i, 0xfffful, s2, carryset); \ + SUB_REG_LDISP(i, 0x7ffful, s2, carryset); \ + SUB_REG_LDISP(i, 0x8000ul, s2, carryset); \ + SUB_REG_LDISP(i, 0xfffffffful, s2, carryset); \ + SUB_REG_LDISP(i, 0x80000000ul, s2, carryset); \ + SUB_REG_LDISP(i, 0x7ffffffful, s2, carryset); \ + SUB_REG_LDISP(i, 0xfffffffffffffffful, s2, carryset); \ + SUB_REG_LDISP(i, 0x8000000000000000ul, s2, carryset); \ + SUB_REG_LDISP(i, 0x7ffffffffffffffful, s2, carryset); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stdout.exp new file mode 100644 index 000000000..6895eee44 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.stdout.exp @@ -0,0 +1,3850 @@ +s 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sg 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sg 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sg 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sg 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sg 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sg 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=2) +sg 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sg FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sg 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=1) +sg 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sgf 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slg 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +slg 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +slg 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slg 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +slg 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slg 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +slg 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slg FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slg 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=3) +slg 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sgf 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=1) +sr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=0) +sr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sgr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sgr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sgr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sgr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sgr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sgr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=2) +sgr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=1) +sgr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sgfr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +sgfr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +sgfr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +sgfr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=2) +sgfr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +slr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +slr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +slr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +slr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=2) +slr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slgr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +slgr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +slgr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slgr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +slgr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slgr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +slgr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgfr 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +slgfr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +slgfr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +slgfr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +slgfr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgfr 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slb 0000000000000000 - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 0000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000000000001 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slbg 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFE (cc=3) +slbg 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFE (cc=3) +slbg 0000000000008000 - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slbg 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slbg 0000000080000000 - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slbg 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbg 8000000000000000 - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbr 0000000000000000 - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000000001 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slbr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFE (cc=3) +slbr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000008000 - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slbr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000080000000 - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slbr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbr 8000000000000000 - 0000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 0000000000000000 - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000001 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +slbgr 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFE (cc=3) +slbgr 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFE (cc=3) +slbgr 0000000000008000 - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +slbgr 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slbgr 0000000080000000 - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slbgr 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbgr 8000000000000000 - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slb 0000000000000000 - 0000000000000000 - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 0000000000000000 - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 0000000000000000 - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 0000000000000000 - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 0000000000000000 - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 0000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 0000000000000000 - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 0000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 0000000000000000 - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 0000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 0000000000000000 - 0 = 0000000000000000 (cc=2) +slbg 0000000000000001 - 0000000000000000 - 0 = 0000000000000001 (cc=3) +slbg 000000000000FFFF - 0000000000000000 - 0 = 000000000000FFFF (cc=3) +slbg 0000000000007FFF - 0000000000000000 - 0 = 0000000000007FFF (cc=3) +slbg 0000000000008000 - 0000000000000000 - 0 = 0000000000008000 (cc=3) +slbg 00000000FFFFFFFF - 0000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slbg 0000000080000000 - 0000000000000000 - 0 = 0000000080000000 (cc=3) +slbg 000000007FFFFFFF - 0000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbg 8000000000000000 - 0000000000000000 - 0 = 8000000000000000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbr 0000000000000000 - 0000000000000000 - 0 = 0000000000000000 (cc=2) +slbr 0000000000000001 - 0000000000000000 - 0 = 0000000000000001 (cc=3) +slbr 000000000000FFFF - 0000000000000000 - 0 = 000000000000FFFF (cc=3) +slbr 0000000000007FFF - 0000000000000000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000008000 - 0000000000000000 - 0 = 0000000000008000 (cc=3) +slbr 00000000FFFFFFFF - 0000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000080000000 - 0000000000000000 - 0 = 0000000080000000 (cc=3) +slbr 000000007FFFFFFF - 0000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbr 8000000000000000 - 0000000000000000 - 0 = 8000000000000000 (cc=2) +slbr 7FFFFFFFFFFFFFFF - 0000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 0000000000000000 - 0000000000000000 - 0 = 0000000000000000 (cc=2) +slbgr 0000000000000001 - 0000000000000000 - 0 = 0000000000000001 (cc=3) +slbgr 000000000000FFFF - 0000000000000000 - 0 = 000000000000FFFF (cc=3) +slbgr 0000000000007FFF - 0000000000000000 - 0 = 0000000000007FFF (cc=3) +slbgr 0000000000008000 - 0000000000000000 - 0 = 0000000000008000 (cc=3) +slbgr 00000000FFFFFFFF - 0000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slbgr 0000000080000000 - 0000000000000000 - 0 = 0000000080000000 (cc=3) +slbgr 000000007FFFFFFF - 0000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbgr 8000000000000000 - 0000000000000000 - 0 = 8000000000000000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +SHY 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +s 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000002 (cc=1) +s 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080010000 (cc=1) +s 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080008000 (cc=1) +s 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080008001 (cc=1) +s 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +s 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +s 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +s FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +s 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +s 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=1) +sh 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8001 (cc=1) +sh 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8002 (cc=1) +sh 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sh 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sh 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sh 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8000 (cc=1) +sh 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 000000007FFF8001 (cc=3) +sh 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 000000007FFF8000 (cc=2) +sh FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sh 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 80000000FFFF8001 (cc=1) +sh 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFF8000 (cc=1) +sg 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sg 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000002 (cc=1) +sg 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000010000 (cc=1) +sg 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +sg 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008001 (cc=1) +sg 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000100000000 (cc=1) +sg 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +sg 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +sg FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +sg 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sgf 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +sgf 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +sgf 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +sgf 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +sgf 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sgf 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +sgf 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=2) +sl 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +sl 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000002 (cc=1) +sl 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080010000 (cc=1) +sl 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080008000 (cc=1) +sl 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080008001 (cc=1) +sl 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +sl 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +sl 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +sl FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +sl 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +sl 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slg 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slg 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000002 (cc=1) +slg 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000010000 (cc=1) +slg 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +slg 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008001 (cc=1) +slg 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000100000000 (cc=1) +slg 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +slg 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +slg FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +slg 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +sgf 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sgf 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +sgf 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +sgf 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +sgf 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +sgf 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sgf 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +sgf 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=2) +slgf 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgf 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +slgf 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +slgf 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slgf 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +slgf 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +slgf 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +slgf 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgf FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +slgf 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +sr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +sr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +sr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +sr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +sr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +sgr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000002 (cc=1) +sgr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000010000 (cc=1) +sgr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +sgr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008001 (cc=1) +sgr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000100000000 (cc=1) +sgr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +sgr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +sgr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +sgr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgfr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sgfr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sgfr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sgfr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sgfr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sgfr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sgfr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgfr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +slr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +slr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +slr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +slr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +slr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +slr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +slgr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slgr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000002 (cc=1) +slgr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000010000 (cc=1) +slgr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +slgr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008001 (cc=1) +slgr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000100000000 (cc=1) +slgr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +slgr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +slgr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +slgr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slgfr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slgfr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slgfr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slgfr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slgfr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgfr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slgfr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slgfr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slb 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slb 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +slb 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 000000008000FFFF (cc=1) +slb 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080007FFF (cc=1) +slb 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080008000 (cc=1) +slb 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slb 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slb 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=3) +slb 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +slb 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbg 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +slbg 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slbg 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 800000000000FFFF (cc=1) +slbg 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000007FFF (cc=1) +slbg 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +slbg 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 80000000FFFFFFFF (cc=1) +slbg 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +slbg 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 800000007FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slbg 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +slbr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slbr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 000000000000FFFF (cc=1) +slbr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000007FFF (cc=1) +slbr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slbr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slbr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slbr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=0) +slbr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +slbgr 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slbgr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 800000000000FFFF (cc=1) +slbgr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 8000000000007FFF (cc=1) +slbgr 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 8000000000008000 (cc=1) +slbgr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 80000000FFFFFFFF (cc=1) +slbgr 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000000 (cc=1) +slbgr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 800000007FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slbgr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slb 0000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slb 0000000000000001 - 7FFFFFFFFFFFFFFF - 0 = 0000000080000002 (cc=1) +slb 000000000000FFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000080010000 (cc=1) +slb 0000000000007FFF - 7FFFFFFFFFFFFFFF - 0 = 0000000080008000 (cc=1) +slb 0000000000008000 - 7FFFFFFFFFFFFFFF - 0 = 0000000080008001 (cc=1) +slb 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=3) +slb 0000000080000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=3) +slb 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slb FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = FFFFFFFF80000000 (cc=3) +slb 8000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000080000001 (cc=1) +slb 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 7FFFFFFF80000000 (cc=3) +slbg 0000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbg 0000000000000001 - 7FFFFFFFFFFFFFFF - 0 = 8000000000000002 (cc=1) +slbg 000000000000FFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000010000 (cc=1) +slbg 0000000000007FFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000008000 (cc=1) +slbg 0000000000008000 - 7FFFFFFFFFFFFFFF - 0 = 8000000000008001 (cc=1) +slbg 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000100000000 (cc=1) +slbg 0000000080000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000080000001 (cc=1) +slbg 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000080000000 (cc=1) +slbg FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000000000 (cc=3) +slbg 8000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=1) +slbr 0000000000000001 - 7FFFFFFFFFFFFFFF - 0 = 0000000000000002 (cc=1) +slbr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000010000 (cc=1) +slbr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000008000 (cc=1) +slbr 0000000000008000 - 7FFFFFFFFFFFFFFF - 0 = 0000000000008001 (cc=1) +slbr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000080000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slbr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=1) +slbr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = FFFFFFFF00000000 (cc=2) +slbr 8000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 7FFFFFFF00000000 (cc=2) +slbgr 0000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbgr 0000000000000001 - 7FFFFFFFFFFFFFFF - 0 = 8000000000000002 (cc=1) +slbgr 000000000000FFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000010000 (cc=1) +slbgr 0000000000007FFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000008000 (cc=1) +slbgr 0000000000008000 - 7FFFFFFFFFFFFFFF - 0 = 8000000000008001 (cc=1) +slbgr 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000100000000 (cc=1) +slbgr 0000000080000000 - 7FFFFFFFFFFFFFFF - 0 = 8000000080000001 (cc=1) +slbgr 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000080000000 (cc=1) +slbgr FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 8000000000000000 (cc=3) +slbgr 8000000000000000 - 7FFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +SHY 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8001 (cc=1) +SHY 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8002 (cc=1) +SHY 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +SHY 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +SHY 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 00000000FFFF8000 (cc=1) +SHY 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 000000007FFF8001 (cc=3) +SHY 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 000000007FFF8000 (cc=2) +SHY FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +SHY 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 80000000FFFF8001 (cc=1) +SHY 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFF8000 (cc=1) +SLY 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +SLY 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000002 (cc=1) +SLY 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080010000 (cc=1) +SLY 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080008000 (cc=1) +SLY 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080008001 (cc=1) +SLY 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +SLY 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +SLY 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +SLY FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +SLY 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +SLY 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +SY 0000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +SY 0000000000000001 - 7FFFFFFFFFFFFFFF - 1 = 0000000080000002 (cc=1) +SY 000000000000FFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080010000 (cc=1) +SY 0000000000007FFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080008000 (cc=1) +SY 0000000000008000 - 7FFFFFFFFFFFFFFF - 1 = 0000000080008001 (cc=1) +SY 00000000FFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +SY 0000000080000000 - 7FFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=3) +SY 000000007FFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +SY FFFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +SY 8000000000000000 - 7FFFFFFFFFFFFFFF - 1 = 8000000080000001 (cc=1) +SY 7FFFFFFFFFFFFFFF - 7FFFFFFFFFFFFFFF - 1 = 7FFFFFFF80000000 (cc=1) +s 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +s 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=3) +s 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=3) +s 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +s 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=3) +s 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +s 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +s 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +s FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=2) +s 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +s 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +sh 0000000000000000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sh 0000000000000001 - 8000000000000000 - 1 = 0000000000008001 (cc=2) +sh 000000000000FFFF - 8000000000000000 - 1 = 0000000000017FFF (cc=2) +sh 0000000000007FFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sh 0000000000008000 - 8000000000000000 - 1 = 0000000000010000 (cc=2) +sh 00000000FFFFFFFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sh 0000000080000000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +sh 000000007FFFFFFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +sh FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF00007FFF (cc=2) +sh 8000000000000000 - 8000000000000000 - 1 = 8000000000008000 (cc=2) +sh 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF00007FFF (cc=2) +sg 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +sg 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=3) +sg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=3) +sg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=3) +sg 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=3) +sg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=3) +sg 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +sg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sg 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sgf 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=2) +sgf 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=2) +sgf 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=2) +sgf 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=2) +sgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000017FFFFFFF (cc=2) +sgf 0000000080000000 - 8000000000000000 - 1 = 0000000100000000 (cc=2) +sgf 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sl 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +sl 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=1) +sl 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=1) +sl 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +sl 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +sl 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +sl 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +sl 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sl FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +sl 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sl 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slg 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slg 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=1) +slg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=1) +slg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slg 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=1) +slg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slg 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +slg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=2) +sgf 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=2) +sgf 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=2) +sgf 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=2) +sgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000017FFFFFFF (cc=2) +sgf 0000000080000000 - 8000000000000000 - 1 = 0000000100000000 (cc=2) +sgf 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +slgf 0000000000000000 - 8000000000000000 - 1 = FFFFFFFF80000000 (cc=1) +slgf 0000000000000001 - 8000000000000000 - 1 = FFFFFFFF80000001 (cc=1) +slgf 000000000000FFFF - 8000000000000000 - 1 = FFFFFFFF8000FFFF (cc=1) +slgf 0000000000007FFF - 8000000000000000 - 1 = FFFFFFFF80007FFF (cc=1) +slgf 0000000000008000 - 8000000000000000 - 1 = FFFFFFFF80008000 (cc=1) +slgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgf 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgf 000000007FFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slgf 8000000000000000 - 8000000000000000 - 1 = 7FFFFFFF80000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +sr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=2) +sr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +sr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=0) +sr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sgr 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +sgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=3) +sgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=3) +sgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=3) +sgr 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=3) +sgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=3) +sgr 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +sgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sgr 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sgfr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=2) +sgfr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sgfr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sgfr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgfr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=3) +slr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=3) +slr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=3) +slr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +slr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=2) +slr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=1) +slgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=1) +slgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slgr 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=1) +slgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slgr 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +slgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgfr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=3) +slgfr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=3) +slgfr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=3) +slgfr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +slgfr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgfr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slb 0000000000000000 - 8000000000000000 - 1 = 000000007FFFFFFF (cc=1) +slb 0000000000000001 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +slb 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFE (cc=1) +slb 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFE (cc=1) +slb 0000000000008000 - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +slb 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slb 0000000080000000 - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slb 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFE (cc=1) +slb FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFE (cc=3) +slb 8000000000000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFE (cc=3) +slbg 0000000000000000 - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbg 0000000000000001 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slbg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFE (cc=1) +slbg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFE (cc=1) +slbg 0000000000008000 - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slbg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFE (cc=1) +slbg 0000000080000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slbg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFE (cc=1) +slbg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 8000000000000000 - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbr 0000000000000000 - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000000001 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slbr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFE (cc=3) +slbr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000008000 - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slbr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000080000000 - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slbr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slbr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbr 8000000000000000 - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 0000000000000000 - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slbgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFE (cc=1) +slbgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFE (cc=1) +slbgr 0000000000008000 - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slbgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFE (cc=1) +slbgr 0000000080000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slbgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFE (cc=1) +slbgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 8000000000000000 - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slb 0000000000000000 - 8000000000000000 - 0 = 0000000080000000 (cc=1) +slb 0000000000000001 - 8000000000000000 - 0 = 0000000080000001 (cc=1) +slb 000000000000FFFF - 8000000000000000 - 0 = 000000008000FFFF (cc=1) +slb 0000000000007FFF - 8000000000000000 - 0 = 0000000080007FFF (cc=1) +slb 0000000000008000 - 8000000000000000 - 0 = 0000000080008000 (cc=1) +slb 00000000FFFFFFFF - 8000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slb 0000000080000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slb 000000007FFFFFFF - 8000000000000000 - 0 = 00000000FFFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFF7FFFFFFF (cc=3) +slb 8000000000000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slb 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFF7FFFFFFF (cc=3) +slbg 0000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=1) +slbg 0000000000000001 - 8000000000000000 - 0 = 8000000000000001 (cc=1) +slbg 000000000000FFFF - 8000000000000000 - 0 = 800000000000FFFF (cc=1) +slbg 0000000000007FFF - 8000000000000000 - 0 = 8000000000007FFF (cc=1) +slbg 0000000000008000 - 8000000000000000 - 0 = 8000000000008000 (cc=1) +slbg 00000000FFFFFFFF - 8000000000000000 - 0 = 80000000FFFFFFFF (cc=1) +slbg 0000000080000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slbg 000000007FFFFFFF - 8000000000000000 - 0 = 800000007FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 8000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbg 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbr 0000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbr 0000000000000001 - 8000000000000000 - 0 = 0000000000000001 (cc=3) +slbr 000000000000FFFF - 8000000000000000 - 0 = 000000000000FFFF (cc=3) +slbr 0000000000007FFF - 8000000000000000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000008000 - 8000000000000000 - 0 = 0000000000008000 (cc=3) +slbr 00000000FFFFFFFF - 8000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000080000000 - 8000000000000000 - 0 = 0000000080000000 (cc=3) +slbr 000000007FFFFFFF - 8000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbr 8000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=2) +slbr 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 0000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=1) +slbgr 0000000000000001 - 8000000000000000 - 0 = 8000000000000001 (cc=1) +slbgr 000000000000FFFF - 8000000000000000 - 0 = 800000000000FFFF (cc=1) +slbgr 0000000000007FFF - 8000000000000000 - 0 = 8000000000007FFF (cc=1) +slbgr 0000000000008000 - 8000000000000000 - 0 = 8000000000008000 (cc=1) +slbgr 00000000FFFFFFFF - 8000000000000000 - 0 = 80000000FFFFFFFF (cc=1) +slbgr 0000000080000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slbgr 000000007FFFFFFF - 8000000000000000 - 0 = 800000007FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 8000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +SHY 0000000000000000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +SHY 0000000000000001 - 8000000000000000 - 1 = 0000000000008001 (cc=2) +SHY 000000000000FFFF - 8000000000000000 - 1 = 0000000000017FFF (cc=2) +SHY 0000000000007FFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +SHY 0000000000008000 - 8000000000000000 - 1 = 0000000000010000 (cc=2) +SHY 00000000FFFFFFFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +SHY 0000000080000000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +SHY 000000007FFFFFFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +SHY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF00007FFF (cc=2) +SHY 8000000000000000 - 8000000000000000 - 1 = 8000000000008000 (cc=2) +SHY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF00007FFF (cc=2) +SLY 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +SLY 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=1) +SLY 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=1) +SLY 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +SLY 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +SLY 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +SLY 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +SLY 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +SLY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +SLY 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +SLY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +SY 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +SY 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=3) +SY 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=3) +SY 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +SY 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=3) +SY 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +SY 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +SY 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +SY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=2) +SY 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +SY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +s 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +s 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +s 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +s 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +s 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +s 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +s 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +s 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +s FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +s 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +s 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +sh 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sh 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sh 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sh 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sh 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sh 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sh 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +sh 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +sh FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +sh 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +sh 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +sg 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sg 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sg 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sg 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sg 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sg 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sg 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sg 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sg FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sg 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sg 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +sgf 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sgf 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sgf 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sgf 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sgf 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sgf 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgf 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +sl 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +sl 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +sl 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +sl 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +sl 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +sl 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +sl 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +sl 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +sl FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +sl 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sl 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +slg 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slg 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +slg 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +slg 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slg 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +slg 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=1) +slg 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +slg 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slg FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slg 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slg 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +sgf 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sgf 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sgf 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sgf 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sgf 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sgf 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgf 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +slgf 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slgf 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slgf 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slgf 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slgf 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slgf 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgf 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgf 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slgf FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slgf 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slgf 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +sr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +sr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +sr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +sr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +sr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +sgr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sgr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sgr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sgr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sgr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sgr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sgr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +sgfr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +sgfr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +sgfr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +sgfr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +sgfr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +sgfr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=2) +sgfr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=2) +sgfr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +sgfr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=3) +slr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +slr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +slr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +slr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +slr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +slr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +slgr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slgr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +slgr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +slgr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slgr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +slgr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000100000000 (cc=1) +slgr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +slgr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slgr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +slgr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +slgfr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slgfr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slgfr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slgfr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slgfr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slgfr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgfr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slgfr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slgfr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slb 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +slb 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slb 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 000000000000FFFF (cc=1) +slb 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000007FFF (cc=1) +slb 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slb 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slb 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slb 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=0) +slb 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbg 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +slbg 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slbg 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 000000000000FFFF (cc=1) +slbg 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000007FFF (cc=1) +slbg 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slbg 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbg 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slbg 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +slbg 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +slbr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slbr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 000000000000FFFF (cc=1) +slbr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000007FFF (cc=1) +slbr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slbr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slbr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slbr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=0) +slbr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +slbgr 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +slbgr 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 000000000000FFFF (cc=1) +slbgr 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000007FFF (cc=1) +slbgr 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +slbgr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbgr 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +slbgr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000000 (cc=1) +slbgr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slb 0000000000000000 - FFFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=1) +slb 0000000000000001 - FFFFFFFFFFFFFFFF - 0 = 0000000000000002 (cc=1) +slb 000000000000FFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000010000 (cc=1) +slb 0000000000007FFF - FFFFFFFFFFFFFFFF - 0 = 0000000000008000 (cc=1) +slb 0000000000008000 - FFFFFFFFFFFFFFFF - 0 = 0000000000008001 (cc=1) +slb 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slb 0000000080000000 - FFFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slb 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=1) +slb FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = FFFFFFFF00000000 (cc=2) +slb 8000000000000000 - FFFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slb 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 7FFFFFFF00000000 (cc=2) +slbg 0000000000000000 - FFFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=1) +slbg 0000000000000001 - FFFFFFFFFFFFFFFF - 0 = 0000000000000002 (cc=1) +slbg 000000000000FFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000010000 (cc=1) +slbg 0000000000007FFF - FFFFFFFFFFFFFFFF - 0 = 0000000000008000 (cc=1) +slbg 0000000000008000 - FFFFFFFFFFFFFFFF - 0 = 0000000000008001 (cc=1) +slbg 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000100000000 (cc=1) +slbg 0000000080000000 - FFFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slbg 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=1) +slbg FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slbg 8000000000000000 - FFFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbg 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 8000000000000000 (cc=1) +slbr 0000000000000000 - FFFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=1) +slbr 0000000000000001 - FFFFFFFFFFFFFFFF - 0 = 0000000000000002 (cc=1) +slbr 000000000000FFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000010000 (cc=1) +slbr 0000000000007FFF - FFFFFFFFFFFFFFFF - 0 = 0000000000008000 (cc=1) +slbr 0000000000008000 - FFFFFFFFFFFFFFFF - 0 = 0000000000008001 (cc=1) +slbr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000080000000 - FFFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slbr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=1) +slbr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = FFFFFFFF00000000 (cc=2) +slbr 8000000000000000 - FFFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 7FFFFFFF00000000 (cc=2) +slbgr 0000000000000000 - FFFFFFFFFFFFFFFF - 0 = 0000000000000001 (cc=1) +slbgr 0000000000000001 - FFFFFFFFFFFFFFFF - 0 = 0000000000000002 (cc=1) +slbgr 000000000000FFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000010000 (cc=1) +slbgr 0000000000007FFF - FFFFFFFFFFFFFFFF - 0 = 0000000000008000 (cc=1) +slbgr 0000000000008000 - FFFFFFFFFFFFFFFF - 0 = 0000000000008001 (cc=1) +slbgr 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000100000000 (cc=1) +slbgr 0000000080000000 - FFFFFFFFFFFFFFFF - 0 = 0000000080000001 (cc=1) +slbgr 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000080000000 (cc=1) +slbgr FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 0000000000000000 (cc=2) +slbgr 8000000000000000 - FFFFFFFFFFFFFFFF - 0 = 8000000000000001 (cc=1) +slbgr 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 0 = 8000000000000000 (cc=1) +SHY 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +SHY 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +SHY 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +SHY 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +SHY 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +SHY 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +SHY 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +SHY FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +SHY 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +SHY 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +SLY 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=1) +SLY 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=1) +SLY 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=1) +SLY 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=1) +SLY 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=1) +SLY 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=2) +SLY 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +SLY 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=1) +SLY FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +SLY 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=1) +SLY 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +SY 0000000000000000 - FFFFFFFFFFFFFFFF - 1 = 0000000000000001 (cc=2) +SY 0000000000000001 - FFFFFFFFFFFFFFFF - 1 = 0000000000000002 (cc=2) +SY 000000000000FFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000010000 (cc=2) +SY 0000000000007FFF - FFFFFFFFFFFFFFFF - 1 = 0000000000008000 (cc=2) +SY 0000000000008000 - FFFFFFFFFFFFFFFF - 1 = 0000000000008001 (cc=2) +SY 00000000FFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000000000000 (cc=0) +SY 0000000080000000 - FFFFFFFFFFFFFFFF - 1 = 0000000080000001 (cc=1) +SY 000000007FFFFFFF - FFFFFFFFFFFFFFFF - 1 = 0000000080000000 (cc=3) +SY FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +SY 8000000000000000 - FFFFFFFFFFFFFFFF - 1 = 8000000000000001 (cc=2) +SY 7FFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +s 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +s 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000080000002 (cc=1) +s 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000080010000 (cc=1) +s 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000080008000 (cc=1) +s 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000080008001 (cc=1) +s 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +s 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +s 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +s FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=1) +s 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000080000001 (cc=1) +s 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=1) +sh 0000000000000000 - 7FFFFFFF00000000 - 1 = 00000000FFFF8001 (cc=1) +sh 0000000000000001 - 7FFFFFFF00000000 - 1 = 00000000FFFF8002 (cc=1) +sh 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sh 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sh 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sh 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFF8000 (cc=1) +sh 0000000080000000 - 7FFFFFFF00000000 - 1 = 000000007FFF8001 (cc=3) +sh 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFF8000 (cc=2) +sh FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFF8000 (cc=1) +sh 8000000000000000 - 7FFFFFFF00000000 - 1 = 80000000FFFF8001 (cc=1) +sh 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFF8000 (cc=1) +sg 0000000000000000 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +sg 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000001 (cc=1) +sg 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFF (cc=1) +sg 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +sg 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100008000 (cc=1) +sg 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFF (cc=1) +sg 0000000080000000 - 7FFFFFFF00000000 - 1 = 8000000180000000 (cc=1) +sg 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +sg FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +sg 8000000000000000 - 7FFFFFFF00000000 - 1 = 0000000100000000 (cc=3) +sg 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000000000000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000001 (cc=1) +sgf 0000000000000001 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000002 (cc=1) +sgf 000000000000FFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80010000 (cc=1) +sgf 0000000000007FFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80008000 (cc=1) +sgf 0000000000008000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80008001 (cc=1) +sgf 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgf 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgf FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=1) +sgf 8000000000000000 - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000001 (cc=3) +sgf 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=2) +sl 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +sl 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000080000002 (cc=1) +sl 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000080010000 (cc=1) +sl 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000080008000 (cc=1) +sl 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000080008001 (cc=1) +sl 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +sl 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +sl 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +sl FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=3) +sl 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000080000001 (cc=1) +sl 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=3) +slg 0000000000000000 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slg 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000001 (cc=1) +slg 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFF (cc=1) +slg 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +slg 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100008000 (cc=1) +slg 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFF (cc=1) +slg 0000000080000000 - 7FFFFFFF00000000 - 1 = 8000000180000000 (cc=1) +slg 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +slg FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=3) +slg 8000000000000000 - 7FFFFFFF00000000 - 1 = 0000000100000000 (cc=3) +slg 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +sgf 0000000000000000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000001 (cc=1) +sgf 0000000000000001 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000002 (cc=1) +sgf 000000000000FFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80010000 (cc=1) +sgf 0000000000007FFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80008000 (cc=1) +sgf 0000000000008000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80008001 (cc=1) +sgf 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgf 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgf FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=1) +sgf 8000000000000000 - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000001 (cc=3) +sgf 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=2) +slgf 0000000000000000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000001 (cc=1) +slgf 0000000000000001 - 7FFFFFFF00000000 - 1 = FFFFFFFF80000002 (cc=1) +slgf 000000000000FFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80010000 (cc=1) +slgf 0000000000007FFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80008000 (cc=1) +slgf 0000000000008000 - 7FFFFFFF00000000 - 1 = FFFFFFFF80008001 (cc=1) +slgf 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +slgf 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +slgf 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slgf FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=3) +slgf 8000000000000000 - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000001 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=3) +sr 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sr 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000000000FFFF (cc=2) +sr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +sr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=2) +sr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sr 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000000000000 (cc=0) +sr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sgr 0000000000000000 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +sgr 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000001 (cc=1) +sgr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFF (cc=1) +sgr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +sgr 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100008000 (cc=1) +sgr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFF (cc=1) +sgr 0000000080000000 - 7FFFFFFF00000000 - 1 = 8000000180000000 (cc=1) +sgr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +sgr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +sgr 8000000000000000 - 7FFFFFFF00000000 - 1 = 0000000100000000 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgfr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000000000FFFF (cc=2) +sgfr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sgfr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgfr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000000000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slr 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slr 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +slr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000000000FFFF (cc=3) +slr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=3) +slr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slr 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +slr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slr 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000000000000 (cc=2) +slr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 0000000000000000 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slgr 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000001 (cc=1) +slgr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFF (cc=1) +slgr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +slgr 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100008000 (cc=1) +slgr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFF (cc=1) +slgr 0000000080000000 - 7FFFFFFF00000000 - 1 = 8000000180000000 (cc=1) +slgr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +slgr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=3) +slgr 8000000000000000 - 7FFFFFFF00000000 - 1 = 0000000100000000 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +slgfr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000000000FFFF (cc=3) +slgfr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=3) +slgfr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +slgfr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgfr 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000000000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slb 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +slb 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +slb 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000008000FFFF (cc=1) +slb 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000080007FFF (cc=1) +slb 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000080008000 (cc=1) +slb 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slb 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slb 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slb 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000080000000 (cc=1) +slb 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbg 0000000000000000 - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbg 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slbg 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFE (cc=1) +slbg 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFE (cc=1) +slbg 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +slbg 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFE (cc=1) +slbg 0000000080000000 - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +slbg 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFE (cc=1) +slbg FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFE (cc=3) +slbg 8000000000000000 - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slbg 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000000000000 - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slbr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 000000000000FFFE (cc=3) +slbr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slbr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000080000000 - 7FFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slbr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFFFFFE (cc=3) +slbr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbr 8000000000000000 - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 0000000000000000 - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbgr 0000000000000001 - 7FFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slbgr 000000000000FFFF - 7FFFFFFF00000000 - 1 = 800000010000FFFE (cc=1) +slbgr 0000000000007FFF - 7FFFFFFF00000000 - 1 = 8000000100007FFE (cc=1) +slbgr 0000000000008000 - 7FFFFFFF00000000 - 1 = 8000000100007FFF (cc=1) +slbgr 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 80000001FFFFFFFE (cc=1) +slbgr 0000000080000000 - 7FFFFFFF00000000 - 1 = 800000017FFFFFFF (cc=1) +slbgr 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 800000017FFFFFFE (cc=1) +slbgr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 80000000FFFFFFFE (cc=3) +slbgr 8000000000000000 - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000000000000 - 7FFFFFFF00000000 - 0 = 0000000080000001 (cc=1) +slb 0000000000000001 - 7FFFFFFF00000000 - 0 = 0000000080000002 (cc=1) +slb 000000000000FFFF - 7FFFFFFF00000000 - 0 = 0000000080010000 (cc=1) +slb 0000000000007FFF - 7FFFFFFF00000000 - 0 = 0000000080008000 (cc=1) +slb 0000000000008000 - 7FFFFFFF00000000 - 0 = 0000000080008001 (cc=1) +slb 00000000FFFFFFFF - 7FFFFFFF00000000 - 0 = 0000000080000000 (cc=3) +slb 0000000080000000 - 7FFFFFFF00000000 - 0 = 0000000000000001 (cc=3) +slb 000000007FFFFFFF - 7FFFFFFF00000000 - 0 = 0000000000000000 (cc=2) +slb FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = FFFFFFFF80000000 (cc=3) +slb 8000000000000000 - 7FFFFFFF00000000 - 0 = 8000000080000001 (cc=1) +slb 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 7FFFFFFF80000000 (cc=3) +slbg 0000000000000000 - 7FFFFFFF00000000 - 0 = 8000000100000000 (cc=1) +slbg 0000000000000001 - 7FFFFFFF00000000 - 0 = 8000000100000001 (cc=1) +slbg 000000000000FFFF - 7FFFFFFF00000000 - 0 = 800000010000FFFF (cc=1) +slbg 0000000000007FFF - 7FFFFFFF00000000 - 0 = 8000000100007FFF (cc=1) +slbg 0000000000008000 - 7FFFFFFF00000000 - 0 = 8000000100008000 (cc=1) +slbg 00000000FFFFFFFF - 7FFFFFFF00000000 - 0 = 80000001FFFFFFFF (cc=1) +slbg 0000000080000000 - 7FFFFFFF00000000 - 0 = 8000000180000000 (cc=1) +slbg 000000007FFFFFFF - 7FFFFFFF00000000 - 0 = 800000017FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 80000000FFFFFFFF (cc=3) +slbg 8000000000000000 - 7FFFFFFF00000000 - 0 = 0000000100000000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000000000000 - 7FFFFFFF00000000 - 0 = 0000000000000000 (cc=2) +slbr 0000000000000001 - 7FFFFFFF00000000 - 0 = 0000000000000001 (cc=3) +slbr 000000000000FFFF - 7FFFFFFF00000000 - 0 = 000000000000FFFF (cc=3) +slbr 0000000000007FFF - 7FFFFFFF00000000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000008000 - 7FFFFFFF00000000 - 0 = 0000000000008000 (cc=3) +slbr 00000000FFFFFFFF - 7FFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000080000000 - 7FFFFFFF00000000 - 0 = 0000000080000000 (cc=3) +slbr 000000007FFFFFFF - 7FFFFFFF00000000 - 0 = 000000007FFFFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbr 8000000000000000 - 7FFFFFFF00000000 - 0 = 8000000000000000 (cc=2) +slbr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 0000000000000000 - 7FFFFFFF00000000 - 0 = 8000000100000000 (cc=1) +slbgr 0000000000000001 - 7FFFFFFF00000000 - 0 = 8000000100000001 (cc=1) +slbgr 000000000000FFFF - 7FFFFFFF00000000 - 0 = 800000010000FFFF (cc=1) +slbgr 0000000000007FFF - 7FFFFFFF00000000 - 0 = 8000000100007FFF (cc=1) +slbgr 0000000000008000 - 7FFFFFFF00000000 - 0 = 8000000100008000 (cc=1) +slbgr 00000000FFFFFFFF - 7FFFFFFF00000000 - 0 = 80000001FFFFFFFF (cc=1) +slbgr 0000000080000000 - 7FFFFFFF00000000 - 0 = 8000000180000000 (cc=1) +slbgr 000000007FFFFFFF - 7FFFFFFF00000000 - 0 = 800000017FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 80000000FFFFFFFF (cc=3) +slbgr 8000000000000000 - 7FFFFFFF00000000 - 0 = 0000000100000000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +SHY 0000000000000000 - 7FFFFFFF00000000 - 1 = 00000000FFFF8001 (cc=1) +SHY 0000000000000001 - 7FFFFFFF00000000 - 1 = 00000000FFFF8002 (cc=1) +SHY 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +SHY 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +SHY 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +SHY 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 00000000FFFF8000 (cc=1) +SHY 0000000080000000 - 7FFFFFFF00000000 - 1 = 000000007FFF8001 (cc=3) +SHY 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 000000007FFF8000 (cc=2) +SHY FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFFFFFF8000 (cc=1) +SHY 8000000000000000 - 7FFFFFFF00000000 - 1 = 80000000FFFF8001 (cc=1) +SHY 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFFFFFF8000 (cc=1) +SLY 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +SLY 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000080000002 (cc=1) +SLY 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000080010000 (cc=1) +SLY 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000080008000 (cc=1) +SLY 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000080008001 (cc=1) +SLY 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +SLY 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +SLY 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +SLY FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=3) +SLY 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000080000001 (cc=1) +SLY 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=3) +SY 0000000000000000 - 7FFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +SY 0000000000000001 - 7FFFFFFF00000000 - 1 = 0000000080000002 (cc=1) +SY 000000000000FFFF - 7FFFFFFF00000000 - 1 = 0000000080010000 (cc=1) +SY 0000000000007FFF - 7FFFFFFF00000000 - 1 = 0000000080008000 (cc=1) +SY 0000000000008000 - 7FFFFFFF00000000 - 1 = 0000000080008001 (cc=1) +SY 00000000FFFFFFFF - 7FFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +SY 0000000080000000 - 7FFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +SY 000000007FFFFFFF - 7FFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +SY FFFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=1) +SY 8000000000000000 - 7FFFFFFF00000000 - 1 = 8000000080000001 (cc=1) +SY 7FFFFFFFFFFFFFFF - 7FFFFFFF00000000 - 1 = 7FFFFFFF80000000 (cc=1) +s 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +s 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=3) +s 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=3) +s 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +s 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=3) +s 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +s 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +s 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +s FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=2) +s 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +s 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +sh 0000000000000000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sh 0000000000000001 - 8000000000000000 - 1 = 0000000000008001 (cc=2) +sh 000000000000FFFF - 8000000000000000 - 1 = 0000000000017FFF (cc=2) +sh 0000000000007FFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sh 0000000000008000 - 8000000000000000 - 1 = 0000000000010000 (cc=2) +sh 00000000FFFFFFFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sh 0000000080000000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +sh 000000007FFFFFFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +sh FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF00007FFF (cc=2) +sh 8000000000000000 - 8000000000000000 - 1 = 8000000000008000 (cc=2) +sh 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF00007FFF (cc=2) +sg 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +sg 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=3) +sg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=3) +sg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=3) +sg 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=3) +sg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=3) +sg 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +sg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sg 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sgf 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=2) +sgf 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=2) +sgf 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=2) +sgf 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=2) +sgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000017FFFFFFF (cc=2) +sgf 0000000080000000 - 8000000000000000 - 1 = 0000000100000000 (cc=2) +sgf 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sl 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +sl 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=1) +sl 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=1) +sl 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +sl 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +sl 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +sl 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +sl 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sl FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +sl 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sl 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slg 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slg 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=1) +slg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=1) +slg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slg 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=1) +slg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slg 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +slg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgf 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=2) +sgf 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=2) +sgf 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=2) +sgf 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=2) +sgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000017FFFFFFF (cc=2) +sgf 0000000080000000 - 8000000000000000 - 1 = 0000000100000000 (cc=2) +sgf 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgf 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +slgf 0000000000000000 - 8000000000000000 - 1 = FFFFFFFF80000000 (cc=1) +slgf 0000000000000001 - 8000000000000000 - 1 = FFFFFFFF80000001 (cc=1) +slgf 000000000000FFFF - 8000000000000000 - 1 = FFFFFFFF8000FFFF (cc=1) +slgf 0000000000007FFF - 8000000000000000 - 1 = FFFFFFFF80007FFF (cc=1) +slgf 0000000000008000 - 8000000000000000 - 1 = FFFFFFFF80008000 (cc=1) +slgf 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgf 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgf 000000007FFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgf FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slgf 8000000000000000 - 8000000000000000 - 1 = 7FFFFFFF80000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +sr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=2) +sr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +sr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=0) +sr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sgr 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +sgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=3) +sgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=3) +sgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=3) +sgr 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=3) +sgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=3) +sgr 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +sgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=3) +sgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sgr 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sgfr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=2) +sgfr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +sgfr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +sgfr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=2) +sgfr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=3) +slr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=3) +slr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=3) +slr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +slr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=2) +slr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 0000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000001 (cc=1) +slgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFF (cc=1) +slgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slgr 0000000000008000 - 8000000000000000 - 1 = 8000000000008000 (cc=1) +slgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slgr 0000000080000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +slgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 8000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgfr 0000000000000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000001 - 8000000000000000 - 1 = 0000000000000001 (cc=3) +slgfr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFF (cc=3) +slgfr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000008000 - 8000000000000000 - 1 = 0000000000008000 (cc=3) +slgfr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000080000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +slgfr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgfr 8000000000000000 - 8000000000000000 - 1 = 8000000000000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slb 0000000000000000 - 8000000000000000 - 1 = 000000007FFFFFFF (cc=1) +slb 0000000000000001 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +slb 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFE (cc=1) +slb 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFE (cc=1) +slb 0000000000008000 - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +slb 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slb 0000000080000000 - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slb 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFE (cc=1) +slb FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFE (cc=3) +slb 8000000000000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFE (cc=3) +slbg 0000000000000000 - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbg 0000000000000001 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slbg 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFE (cc=1) +slbg 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFE (cc=1) +slbg 0000000000008000 - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slbg 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFE (cc=1) +slbg 0000000080000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slbg 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFE (cc=1) +slbg FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 8000000000000000 - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbr 0000000000000000 - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000000001 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +slbr 000000000000FFFF - 8000000000000000 - 1 = 000000000000FFFE (cc=3) +slbr 0000000000007FFF - 8000000000000000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000008000 - 8000000000000000 - 1 = 0000000000007FFF (cc=3) +slbr 00000000FFFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000080000000 - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +slbr 000000007FFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFE (cc=3) +slbr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbr 8000000000000000 - 8000000000000000 - 1 = 80000000FFFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 0000000000000000 - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000001 - 8000000000000000 - 1 = 8000000000000000 (cc=1) +slbgr 000000000000FFFF - 8000000000000000 - 1 = 800000000000FFFE (cc=1) +slbgr 0000000000007FFF - 8000000000000000 - 1 = 8000000000007FFE (cc=1) +slbgr 0000000000008000 - 8000000000000000 - 1 = 8000000000007FFF (cc=1) +slbgr 00000000FFFFFFFF - 8000000000000000 - 1 = 80000000FFFFFFFE (cc=1) +slbgr 0000000080000000 - 8000000000000000 - 1 = 800000007FFFFFFF (cc=1) +slbgr 000000007FFFFFFF - 8000000000000000 - 1 = 800000007FFFFFFE (cc=1) +slbgr FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 8000000000000000 - 8000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slb 0000000000000000 - 8000000000000000 - 0 = 0000000080000000 (cc=1) +slb 0000000000000001 - 8000000000000000 - 0 = 0000000080000001 (cc=1) +slb 000000000000FFFF - 8000000000000000 - 0 = 000000008000FFFF (cc=1) +slb 0000000000007FFF - 8000000000000000 - 0 = 0000000080007FFF (cc=1) +slb 0000000000008000 - 8000000000000000 - 0 = 0000000080008000 (cc=1) +slb 00000000FFFFFFFF - 8000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slb 0000000080000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slb 000000007FFFFFFF - 8000000000000000 - 0 = 00000000FFFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFF7FFFFFFF (cc=3) +slb 8000000000000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slb 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFF7FFFFFFF (cc=3) +slbg 0000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=1) +slbg 0000000000000001 - 8000000000000000 - 0 = 8000000000000001 (cc=1) +slbg 000000000000FFFF - 8000000000000000 - 0 = 800000000000FFFF (cc=1) +slbg 0000000000007FFF - 8000000000000000 - 0 = 8000000000007FFF (cc=1) +slbg 0000000000008000 - 8000000000000000 - 0 = 8000000000008000 (cc=1) +slbg 00000000FFFFFFFF - 8000000000000000 - 0 = 80000000FFFFFFFF (cc=1) +slbg 0000000080000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slbg 000000007FFFFFFF - 8000000000000000 - 0 = 800000007FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 8000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbg 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbr 0000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbr 0000000000000001 - 8000000000000000 - 0 = 0000000000000001 (cc=3) +slbr 000000000000FFFF - 8000000000000000 - 0 = 000000000000FFFF (cc=3) +slbr 0000000000007FFF - 8000000000000000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000008000 - 8000000000000000 - 0 = 0000000000008000 (cc=3) +slbr 00000000FFFFFFFF - 8000000000000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000080000000 - 8000000000000000 - 0 = 0000000080000000 (cc=3) +slbr 000000007FFFFFFF - 8000000000000000 - 0 = 000000007FFFFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbr 8000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=2) +slbr 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 0000000000000000 - 8000000000000000 - 0 = 8000000000000000 (cc=1) +slbgr 0000000000000001 - 8000000000000000 - 0 = 8000000000000001 (cc=1) +slbgr 000000000000FFFF - 8000000000000000 - 0 = 800000000000FFFF (cc=1) +slbgr 0000000000007FFF - 8000000000000000 - 0 = 8000000000007FFF (cc=1) +slbgr 0000000000008000 - 8000000000000000 - 0 = 8000000000008000 (cc=1) +slbgr 00000000FFFFFFFF - 8000000000000000 - 0 = 80000000FFFFFFFF (cc=1) +slbgr 0000000080000000 - 8000000000000000 - 0 = 8000000080000000 (cc=1) +slbgr 000000007FFFFFFF - 8000000000000000 - 0 = 800000007FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 8000000000000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 8000000000000000 - 8000000000000000 - 0 = 0000000000000000 (cc=2) +slbgr 7FFFFFFFFFFFFFFF - 8000000000000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +SHY 0000000000000000 - 8000000000000000 - 1 = 0000000000008000 (cc=2) +SHY 0000000000000001 - 8000000000000000 - 1 = 0000000000008001 (cc=2) +SHY 000000000000FFFF - 8000000000000000 - 1 = 0000000000017FFF (cc=2) +SHY 0000000000007FFF - 8000000000000000 - 1 = 000000000000FFFF (cc=2) +SHY 0000000000008000 - 8000000000000000 - 1 = 0000000000010000 (cc=2) +SHY 00000000FFFFFFFF - 8000000000000000 - 1 = 0000000000007FFF (cc=2) +SHY 0000000080000000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +SHY 000000007FFFFFFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +SHY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF00007FFF (cc=2) +SHY 8000000000000000 - 8000000000000000 - 1 = 8000000000008000 (cc=2) +SHY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF00007FFF (cc=2) +SLY 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=1) +SLY 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=1) +SLY 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=1) +SLY 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=1) +SLY 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=1) +SLY 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=3) +SLY 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=2) +SLY 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=1) +SLY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +SLY 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=1) +SLY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +SY 0000000000000000 - 8000000000000000 - 1 = 0000000080000000 (cc=3) +SY 0000000000000001 - 8000000000000000 - 1 = 0000000080000001 (cc=3) +SY 000000000000FFFF - 8000000000000000 - 1 = 000000008000FFFF (cc=3) +SY 0000000000007FFF - 8000000000000000 - 1 = 0000000080007FFF (cc=3) +SY 0000000000008000 - 8000000000000000 - 1 = 0000000080008000 (cc=3) +SY 00000000FFFFFFFF - 8000000000000000 - 1 = 000000007FFFFFFF (cc=2) +SY 0000000080000000 - 8000000000000000 - 1 = 0000000000000000 (cc=0) +SY 000000007FFFFFFF - 8000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +SY FFFFFFFFFFFFFFFF - 8000000000000000 - 1 = FFFFFFFF7FFFFFFF (cc=2) +SY 8000000000000000 - 8000000000000000 - 1 = 8000000080000000 (cc=3) +SY 7FFFFFFFFFFFFFFF - 8000000000000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +s 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +s 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +s 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +s 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +s 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +s 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +s 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +s 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +s FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=0) +s 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=2) +s 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=0) +sh 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sh 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +sh 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +sh 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sh 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +sh 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sh 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +sh 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +sh FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=0) +sh 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=2) +sh 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=0) +sg 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=2) +sg 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000001 (cc=2) +sg 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFF (cc=2) +sg 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=2) +sg 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100008000 (cc=2) +sg 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFF (cc=2) +sg 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000180000000 (cc=2) +sg 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=2) +sg FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sg 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +sg 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=3) +sgf 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgf 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +sgf 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +sgf 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sgf 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +sgf 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=2) +sgf 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=2) +sgf 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgf FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgf 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=1) +sgf 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=3) +sl 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=1) +sl 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=1) +sl 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=1) +sl 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=1) +sl 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=1) +sl 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +sl 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +sl 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +sl FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=2) +sl 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=1) +sl 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=2) +slg 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=1) +slg 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000001 (cc=1) +slg 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFF (cc=1) +slg 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=1) +slg 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100008000 (cc=1) +slg 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFF (cc=1) +slg 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000180000000 (cc=1) +slg 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=1) +slg FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slg 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slg 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +sgf 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgf 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +sgf 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +sgf 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sgf 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +sgf 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=2) +sgf 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=2) +sgf 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgf FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgf 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=1) +sgf 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=3) +slgf 0000000000000000 - FFFFFFFF00000000 - 1 = FFFFFFFF00000001 (cc=1) +slgf 0000000000000001 - FFFFFFFF00000000 - 1 = FFFFFFFF00000002 (cc=1) +slgf 000000000000FFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00010000 (cc=1) +slgf 0000000000007FFF - FFFFFFFF00000000 - 1 = FFFFFFFF00008000 (cc=1) +slgf 0000000000008000 - FFFFFFFF00000000 - 1 = FFFFFFFF00008001 (cc=1) +slgf 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slgf 0000000080000000 - FFFFFFFF00000000 - 1 = FFFFFFFF80000001 (cc=1) +slgf 000000007FFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF80000000 (cc=1) +slgf FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=3) +slgf 8000000000000000 - FFFFFFFF00000000 - 1 = 7FFFFFFF00000001 (cc=3) +slgf 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=3) +sr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFF (cc=2) +sr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +sr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=2) +sr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=0) +sr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sgr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=2) +sgr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000001 (cc=2) +sgr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFF (cc=2) +sgr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=2) +sgr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100008000 (cc=2) +sgr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFF (cc=2) +sgr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000180000000 (cc=2) +sgr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=2) +sgr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sgr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +sgr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=3) +sgfr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +sgfr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +sgfr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFF (cc=2) +sgfr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +sgfr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=2) +sgfr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +slr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFF (cc=3) +slr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=3) +slr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +slr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=2) +slr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slgr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=1) +slgr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000001 (cc=1) +slgr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFF (cc=1) +slgr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=1) +slgr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100008000 (cc=1) +slgr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFF (cc=1) +slgr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000180000000 (cc=1) +slgr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=1) +slgr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slgr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000100000000 (cc=1) +slgr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slgfr 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slgfr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=3) +slgfr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFF (cc=3) +slgfr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=3) +slgfr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=3) +slgfr 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +slgfr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgfr 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slb 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +slb 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=1) +slb 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFF (cc=1) +slb 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=1) +slb 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=1) +slb 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +slb 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=1) +slb FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slb 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000000 (cc=0) +slb 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbg 0000000000000000 - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slbg 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=1) +slbg 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFE (cc=1) +slbg 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFE (cc=1) +slbg 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=1) +slbg 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFE (cc=1) +slbg 0000000080000000 - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=1) +slbg 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFE (cc=1) +slbg FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slbg 8000000000000000 - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbg 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFE (cc=1) +slbr 0000000000000000 - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +slbr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000000000FFFE (cc=3) +slbr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000007FFF (cc=3) +slbr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slbr 0000000080000000 - FFFFFFFF00000000 - 1 = 000000007FFFFFFF (cc=3) +slbr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000007FFFFFFE (cc=3) +slbr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slbr 8000000000000000 - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbgr 0000000000000000 - FFFFFFFF00000000 - 1 = 00000000FFFFFFFF (cc=1) +slbgr 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000100000000 (cc=1) +slbgr 000000000000FFFF - FFFFFFFF00000000 - 1 = 000000010000FFFE (cc=1) +slbgr 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000100007FFE (cc=1) +slbgr 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000100007FFF (cc=1) +slbgr 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 00000001FFFFFFFE (cc=1) +slbgr 0000000080000000 - FFFFFFFF00000000 - 1 = 000000017FFFFFFF (cc=1) +slbgr 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 000000017FFFFFFE (cc=1) +slbgr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 00000000FFFFFFFE (cc=3) +slbgr 8000000000000000 - FFFFFFFF00000000 - 1 = 80000000FFFFFFFF (cc=1) +slbgr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 80000000FFFFFFFE (cc=1) +slb 0000000000000000 - FFFFFFFF00000000 - 0 = 0000000000000001 (cc=1) +slb 0000000000000001 - FFFFFFFF00000000 - 0 = 0000000000000002 (cc=1) +slb 000000000000FFFF - FFFFFFFF00000000 - 0 = 0000000000010000 (cc=1) +slb 0000000000007FFF - FFFFFFFF00000000 - 0 = 0000000000008000 (cc=1) +slb 0000000000008000 - FFFFFFFF00000000 - 0 = 0000000000008001 (cc=1) +slb 00000000FFFFFFFF - FFFFFFFF00000000 - 0 = 0000000000000000 (cc=2) +slb 0000000080000000 - FFFFFFFF00000000 - 0 = 0000000080000001 (cc=1) +slb 000000007FFFFFFF - FFFFFFFF00000000 - 0 = 0000000080000000 (cc=1) +slb FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = FFFFFFFF00000000 (cc=2) +slb 8000000000000000 - FFFFFFFF00000000 - 0 = 8000000000000001 (cc=1) +slb 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 7FFFFFFF00000000 (cc=2) +slbg 0000000000000000 - FFFFFFFF00000000 - 0 = 0000000100000000 (cc=1) +slbg 0000000000000001 - FFFFFFFF00000000 - 0 = 0000000100000001 (cc=1) +slbg 000000000000FFFF - FFFFFFFF00000000 - 0 = 000000010000FFFF (cc=1) +slbg 0000000000007FFF - FFFFFFFF00000000 - 0 = 0000000100007FFF (cc=1) +slbg 0000000000008000 - FFFFFFFF00000000 - 0 = 0000000100008000 (cc=1) +slbg 00000000FFFFFFFF - FFFFFFFF00000000 - 0 = 00000001FFFFFFFF (cc=1) +slbg 0000000080000000 - FFFFFFFF00000000 - 0 = 0000000180000000 (cc=1) +slbg 000000007FFFFFFF - FFFFFFFF00000000 - 0 = 000000017FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +slbg 8000000000000000 - FFFFFFFF00000000 - 0 = 8000000100000000 (cc=1) +slbg 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 80000000FFFFFFFF (cc=1) +slbr 0000000000000000 - FFFFFFFF00000000 - 0 = 0000000000000000 (cc=2) +slbr 0000000000000001 - FFFFFFFF00000000 - 0 = 0000000000000001 (cc=3) +slbr 000000000000FFFF - FFFFFFFF00000000 - 0 = 000000000000FFFF (cc=3) +slbr 0000000000007FFF - FFFFFFFF00000000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000008000 - FFFFFFFF00000000 - 0 = 0000000000008000 (cc=3) +slbr 00000000FFFFFFFF - FFFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +slbr 0000000080000000 - FFFFFFFF00000000 - 0 = 0000000080000000 (cc=3) +slbr 000000007FFFFFFF - FFFFFFFF00000000 - 0 = 000000007FFFFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slbr 8000000000000000 - FFFFFFFF00000000 - 0 = 8000000000000000 (cc=2) +slbr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbgr 0000000000000000 - FFFFFFFF00000000 - 0 = 0000000100000000 (cc=1) +slbgr 0000000000000001 - FFFFFFFF00000000 - 0 = 0000000100000001 (cc=1) +slbgr 000000000000FFFF - FFFFFFFF00000000 - 0 = 000000010000FFFF (cc=1) +slbgr 0000000000007FFF - FFFFFFFF00000000 - 0 = 0000000100007FFF (cc=1) +slbgr 0000000000008000 - FFFFFFFF00000000 - 0 = 0000000100008000 (cc=1) +slbgr 00000000FFFFFFFF - FFFFFFFF00000000 - 0 = 00000001FFFFFFFF (cc=1) +slbgr 0000000080000000 - FFFFFFFF00000000 - 0 = 0000000180000000 (cc=1) +slbgr 000000007FFFFFFF - FFFFFFFF00000000 - 0 = 000000017FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 00000000FFFFFFFF (cc=3) +slbgr 8000000000000000 - FFFFFFFF00000000 - 0 = 8000000100000000 (cc=1) +slbgr 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 0 = 80000000FFFFFFFF (cc=1) +SHY 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +SHY 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +SHY 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +SHY 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +SHY 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +SHY 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +SHY 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +SHY 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +SHY FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=0) +SHY 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=2) +SHY 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=0) +SLY 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=1) +SLY 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=1) +SLY 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=1) +SLY 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=1) +SLY 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=1) +SLY 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=2) +SLY 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +SLY 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=1) +SLY FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=2) +SLY 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=1) +SLY 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=2) +SY 0000000000000000 - FFFFFFFF00000000 - 1 = 0000000000000001 (cc=2) +SY 0000000000000001 - FFFFFFFF00000000 - 1 = 0000000000000002 (cc=2) +SY 000000000000FFFF - FFFFFFFF00000000 - 1 = 0000000000010000 (cc=2) +SY 0000000000007FFF - FFFFFFFF00000000 - 1 = 0000000000008000 (cc=2) +SY 0000000000008000 - FFFFFFFF00000000 - 1 = 0000000000008001 (cc=2) +SY 00000000FFFFFFFF - FFFFFFFF00000000 - 1 = 0000000000000000 (cc=0) +SY 0000000080000000 - FFFFFFFF00000000 - 1 = 0000000080000001 (cc=1) +SY 000000007FFFFFFF - FFFFFFFF00000000 - 1 = 0000000080000000 (cc=3) +SY FFFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = FFFFFFFF00000000 (cc=0) +SY 8000000000000000 - FFFFFFFF00000000 - 1 = 8000000000000001 (cc=2) +SY 7FFFFFFFFFFFFFFF - FFFFFFFF00000000 - 1 = 7FFFFFFF00000000 (cc=0) +s 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sg 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +sg 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +sg 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +sg 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +sg 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=2) +sg 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sg 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sg FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sg 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=2) +sgf 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slg 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +slg 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +slg 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slg 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +slg 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +slg 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +slg 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slg FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +slg 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +sgf 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 000000007FFFFFFF - 1 = 0000000080000001 (cc=1) +sr 0000000000000001 - 000000007FFFFFFF - 1 = 0000000080000002 (cc=1) +sr 000000000000FFFF - 000000007FFFFFFF - 1 = 0000000080010000 (cc=1) +sr 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000080008000 (cc=1) +sr 0000000000008000 - 000000007FFFFFFF - 1 = 0000000080008001 (cc=1) +sr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +sr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +sr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sr 8000000000000000 - 000000007FFFFFFF - 1 = 8000000080000001 (cc=1) +sr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=1) +sgr 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sgr 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +sgr 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +sgr 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +sgr 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +sgr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=2) +sgr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sgr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sgr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sgr 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=2) +sgfr 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sgfr 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +sgfr 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +sgfr 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +sgfr 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +sgfr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=2) +sgfr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +sgfr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +sgfr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sgfr 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +sgfr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=2) +slr 0000000000000000 - 000000007FFFFFFF - 1 = 0000000080000001 (cc=1) +slr 0000000000000001 - 000000007FFFFFFF - 1 = 0000000080000002 (cc=1) +slr 000000000000FFFF - 000000007FFFFFFF - 1 = 0000000080010000 (cc=1) +slr 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000080008000 (cc=1) +slr 0000000000008000 - 000000007FFFFFFF - 1 = 0000000080008001 (cc=1) +slr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +slr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +slr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +slr 8000000000000000 - 000000007FFFFFFF - 1 = 8000000080000001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slgr 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgr 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +slgr 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +slgr 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slgr 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +slgr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +slgr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +slgr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slgr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +slgr 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slgfr 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgfr 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +slgfr 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +slgfr 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slgfr 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +slgfr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +slgfr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +slgfr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slgfr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +slgfr 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slb 0000000000000000 - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 000000007FFFFFFF - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slbg 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slbg 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF8000FFFF (cc=1) +slbg 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80007FFF (cc=1) +slbg 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slbg 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slbg 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slbg 000000007FFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=3) +slbg 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbr 0000000000000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +slbr 0000000000000001 - 000000007FFFFFFF - 1 = 0000000080000001 (cc=1) +slbr 000000000000FFFF - 000000007FFFFFFF - 1 = 000000008000FFFF (cc=1) +slbr 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000080007FFF (cc=1) +slbr 0000000000008000 - 000000007FFFFFFF - 1 = 0000000080008000 (cc=1) +slbr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slbr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slbr 000000007FFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=3) +slbr 8000000000000000 - 000000007FFFFFFF - 1 = 8000000080000000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbgr 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slbgr 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slbgr 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF8000FFFF (cc=1) +slbgr 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80007FFF (cc=1) +slbgr 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +slbgr 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slbgr 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +slbgr 000000007FFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=3) +slbgr 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slb 0000000000000000 - 000000007FFFFFFF - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 000000007FFFFFFF - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 000000007FFFFFFF - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 000000007FFFFFFF - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 000000007FFFFFFF - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 000000007FFFFFFF - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 000000007FFFFFFF - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 000000007FFFFFFF - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 000000007FFFFFFF - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 000000007FFFFFFF - 0 = FFFFFFFF80000001 (cc=1) +slbg 0000000000000001 - 000000007FFFFFFF - 0 = FFFFFFFF80000002 (cc=1) +slbg 000000000000FFFF - 000000007FFFFFFF - 0 = FFFFFFFF80010000 (cc=1) +slbg 0000000000007FFF - 000000007FFFFFFF - 0 = FFFFFFFF80008000 (cc=1) +slbg 0000000000008000 - 000000007FFFFFFF - 0 = FFFFFFFF80008001 (cc=1) +slbg 00000000FFFFFFFF - 000000007FFFFFFF - 0 = 0000000080000000 (cc=3) +slbg 0000000080000000 - 000000007FFFFFFF - 0 = 0000000000000001 (cc=3) +slbg 000000007FFFFFFF - 000000007FFFFFFF - 0 = 0000000000000000 (cc=2) +slbg FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = FFFFFFFF80000000 (cc=3) +slbg 8000000000000000 - 000000007FFFFFFF - 0 = 7FFFFFFF80000001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = 7FFFFFFF80000000 (cc=3) +slbr 0000000000000000 - 000000007FFFFFFF - 0 = 0000000080000001 (cc=1) +slbr 0000000000000001 - 000000007FFFFFFF - 0 = 0000000080000002 (cc=1) +slbr 000000000000FFFF - 000000007FFFFFFF - 0 = 0000000080010000 (cc=1) +slbr 0000000000007FFF - 000000007FFFFFFF - 0 = 0000000080008000 (cc=1) +slbr 0000000000008000 - 000000007FFFFFFF - 0 = 0000000080008001 (cc=1) +slbr 00000000FFFFFFFF - 000000007FFFFFFF - 0 = 0000000080000000 (cc=3) +slbr 0000000080000000 - 000000007FFFFFFF - 0 = 0000000000000001 (cc=3) +slbr 000000007FFFFFFF - 000000007FFFFFFF - 0 = 0000000000000000 (cc=2) +slbr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = FFFFFFFF80000000 (cc=3) +slbr 8000000000000000 - 000000007FFFFFFF - 0 = 8000000080000001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = 7FFFFFFF80000000 (cc=3) +slbgr 0000000000000000 - 000000007FFFFFFF - 0 = FFFFFFFF80000001 (cc=1) +slbgr 0000000000000001 - 000000007FFFFFFF - 0 = FFFFFFFF80000002 (cc=1) +slbgr 000000000000FFFF - 000000007FFFFFFF - 0 = FFFFFFFF80010000 (cc=1) +slbgr 0000000000007FFF - 000000007FFFFFFF - 0 = FFFFFFFF80008000 (cc=1) +slbgr 0000000000008000 - 000000007FFFFFFF - 0 = FFFFFFFF80008001 (cc=1) +slbgr 00000000FFFFFFFF - 000000007FFFFFFF - 0 = 0000000080000000 (cc=3) +slbgr 0000000080000000 - 000000007FFFFFFF - 0 = 0000000000000001 (cc=3) +slbgr 000000007FFFFFFF - 000000007FFFFFFF - 0 = 0000000000000000 (cc=2) +slbgr FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = FFFFFFFF80000000 (cc=3) +slbgr 8000000000000000 - 000000007FFFFFFF - 0 = 7FFFFFFF80000001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 0 = 7FFFFFFF80000000 (cc=3) +SHY 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 000000007FFFFFFF - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 000000007FFFFFFF - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 000000007FFFFFFF - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 000000007FFFFFFF - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 000000007FFFFFFF - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 000000007FFFFFFF - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +sg 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +sg 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +sg 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +sg 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +sg 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sg 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sg 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sg FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=1) +sg 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +sg 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +sgf 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +slg 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +slg 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +slg 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +slg 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +slg 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slg 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slg 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slg FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slg 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +slg 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +sgf 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 0000000080000000 - 1 = 0000000080000000 (cc=3) +sr 0000000000000001 - 0000000080000000 - 1 = 0000000080000001 (cc=3) +sr 000000000000FFFF - 0000000080000000 - 1 = 000000008000FFFF (cc=3) +sr 0000000000007FFF - 0000000080000000 - 1 = 0000000080007FFF (cc=3) +sr 0000000000008000 - 0000000080000000 - 1 = 0000000080008000 (cc=3) +sr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sr 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sr 000000007FFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=3) +sr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=2) +sr 8000000000000000 - 0000000080000000 - 1 = 8000000080000000 (cc=3) +sr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +sgr 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +sgr 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +sgr 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +sgr 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +sgr 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +sgr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sgr 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +sgr 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=1) +sgr 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=2) +sgfr 0000000000000000 - 0000000080000000 - 1 = 0000000080000000 (cc=2) +sgfr 0000000000000001 - 0000000080000000 - 1 = 0000000080000001 (cc=2) +sgfr 000000000000FFFF - 0000000080000000 - 1 = 000000008000FFFF (cc=2) +sgfr 0000000000007FFF - 0000000080000000 - 1 = 0000000080007FFF (cc=2) +sgfr 0000000000008000 - 0000000080000000 - 1 = 0000000080008000 (cc=2) +sgfr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000017FFFFFFF (cc=2) +sgfr 0000000080000000 - 0000000080000000 - 1 = 0000000100000000 (cc=2) +sgfr 000000007FFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +sgfr 8000000000000000 - 0000000080000000 - 1 = 8000000080000000 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 800000007FFFFFFF (cc=3) +slr 0000000000000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +slr 0000000000000001 - 0000000080000000 - 1 = 0000000080000001 (cc=1) +slr 000000000000FFFF - 0000000080000000 - 1 = 000000008000FFFF (cc=1) +slr 0000000000007FFF - 0000000080000000 - 1 = 0000000080007FFF (cc=1) +slr 0000000000008000 - 0000000080000000 - 1 = 0000000080008000 (cc=1) +slr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slr 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slr 000000007FFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +slr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slr 8000000000000000 - 0000000080000000 - 1 = 8000000080000000 (cc=1) +slr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slgr 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +slgr 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +slgr 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +slgr 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +slgr 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +slgr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slgr 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slgr 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slgr 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slgfr 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +slgfr 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +slgfr 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +slgfr 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +slgfr 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +slgfr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slgfr 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slgfr 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgfr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +slgfr 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slb 0000000000000000 - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 0000000080000000 - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 0000000080000000 - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=1) +slbg 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +slbg 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFE (cc=1) +slbg 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFE (cc=1) +slbg 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +slbg 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFE (cc=3) +slbg 0000000080000000 - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbg FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFE (cc=3) +slbg 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFE (cc=3) +slbr 0000000000000000 - 0000000080000000 - 1 = 000000007FFFFFFF (cc=1) +slbr 0000000000000001 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +slbr 000000000000FFFF - 0000000080000000 - 1 = 000000008000FFFE (cc=1) +slbr 0000000000007FFF - 0000000080000000 - 1 = 0000000080007FFE (cc=1) +slbr 0000000000008000 - 0000000080000000 - 1 = 0000000080007FFF (cc=1) +slbr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFE (cc=3) +slbr 0000000080000000 - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 000000007FFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFE (cc=1) +slbr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFE (cc=3) +slbr 8000000000000000 - 0000000080000000 - 1 = 800000007FFFFFFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFE (cc=3) +slbgr 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=1) +slbgr 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +slbgr 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFE (cc=1) +slbgr 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFE (cc=1) +slbgr 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +slbgr 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFE (cc=3) +slbgr 0000000080000000 - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbgr FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFE (cc=3) +slbgr 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFE (cc=3) +slb 0000000000000000 - 0000000080000000 - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 0000000080000000 - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 0000000080000000 - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 0000000080000000 - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 0000000080000000 - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 0000000080000000 - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 0000000080000000 - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 0000000080000000 - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000080000000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 0000000080000000 - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 0000000080000000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 0000000080000000 - 0 = FFFFFFFF80000000 (cc=1) +slbg 0000000000000001 - 0000000080000000 - 0 = FFFFFFFF80000001 (cc=1) +slbg 000000000000FFFF - 0000000080000000 - 0 = FFFFFFFF8000FFFF (cc=1) +slbg 0000000000007FFF - 0000000080000000 - 0 = FFFFFFFF80007FFF (cc=1) +slbg 0000000000008000 - 0000000080000000 - 0 = FFFFFFFF80008000 (cc=1) +slbg 00000000FFFFFFFF - 0000000080000000 - 0 = 000000007FFFFFFF (cc=3) +slbg 0000000080000000 - 0000000080000000 - 0 = 0000000000000000 (cc=2) +slbg 000000007FFFFFFF - 0000000080000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 0000000080000000 - 0 = FFFFFFFF7FFFFFFF (cc=3) +slbg 8000000000000000 - 0000000080000000 - 0 = 7FFFFFFF80000000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000080000000 - 0 = 7FFFFFFF7FFFFFFF (cc=3) +slbr 0000000000000000 - 0000000080000000 - 0 = 0000000080000000 (cc=1) +slbr 0000000000000001 - 0000000080000000 - 0 = 0000000080000001 (cc=1) +slbr 000000000000FFFF - 0000000080000000 - 0 = 000000008000FFFF (cc=1) +slbr 0000000000007FFF - 0000000080000000 - 0 = 0000000080007FFF (cc=1) +slbr 0000000000008000 - 0000000080000000 - 0 = 0000000080008000 (cc=1) +slbr 00000000FFFFFFFF - 0000000080000000 - 0 = 000000007FFFFFFF (cc=3) +slbr 0000000080000000 - 0000000080000000 - 0 = 0000000000000000 (cc=2) +slbr 000000007FFFFFFF - 0000000080000000 - 0 = 00000000FFFFFFFF (cc=1) +slbr FFFFFFFFFFFFFFFF - 0000000080000000 - 0 = FFFFFFFF7FFFFFFF (cc=3) +slbr 8000000000000000 - 0000000080000000 - 0 = 8000000080000000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000080000000 - 0 = 7FFFFFFF7FFFFFFF (cc=3) +slbgr 0000000000000000 - 0000000080000000 - 0 = FFFFFFFF80000000 (cc=1) +slbgr 0000000000000001 - 0000000080000000 - 0 = FFFFFFFF80000001 (cc=1) +slbgr 000000000000FFFF - 0000000080000000 - 0 = FFFFFFFF8000FFFF (cc=1) +slbgr 0000000000007FFF - 0000000080000000 - 0 = FFFFFFFF80007FFF (cc=1) +slbgr 0000000000008000 - 0000000080000000 - 0 = FFFFFFFF80008000 (cc=1) +slbgr 00000000FFFFFFFF - 0000000080000000 - 0 = 000000007FFFFFFF (cc=3) +slbgr 0000000080000000 - 0000000080000000 - 0 = 0000000000000000 (cc=2) +slbgr 000000007FFFFFFF - 0000000080000000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 0000000080000000 - 0 = FFFFFFFF7FFFFFFF (cc=3) +slbgr 8000000000000000 - 0000000080000000 - 0 = 7FFFFFFF80000000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000080000000 - 0 = 7FFFFFFF7FFFFFFF (cc=3) +SHY 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 0000000080000000 - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 0000000080000000 - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 0000000080000000 - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 0000000080000000 - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 0000000080000000 - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 0000000080000000 - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +sg 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +sg 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +sg 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +sg 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +sg 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sg 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sg 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sg FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=1) +sg 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +sgf 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slg 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slg 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slg 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slg 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slg 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slg 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slg 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slg FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slg 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +sgf 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +sr 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000002 (cc=2) +sr 000000000000FFFF - 00000000FFFFFFFF - 1 = 0000000000010000 (cc=2) +sr 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +sr 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008001 (cc=2) +sr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sr 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000001 (cc=1) +sr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=3) +sr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=0) +sr 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000001 (cc=2) +sr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=0) +sgr 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +sgr 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +sgr 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +sgr 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +sgr 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +sgr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sgr 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +sgr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +sgr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=1) +sgr 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +sgfr 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +sgfr 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000002 (cc=2) +sgfr 000000000000FFFF - 00000000FFFFFFFF - 1 = 0000000000010000 (cc=2) +sgfr 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +sgfr 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008001 (cc=2) +sgfr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000100000000 (cc=2) +sgfr 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000001 (cc=2) +sgfr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +sgfr 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000001 (cc=1) +sgfr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=3) +slr 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=1) +slr 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000002 (cc=1) +slr 000000000000FFFF - 00000000FFFFFFFF - 1 = 0000000000010000 (cc=1) +slr 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=1) +slr 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008001 (cc=1) +slr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slr 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000001 (cc=1) +slr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +slr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +slr 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +slgr 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slgr 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slgr 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slgr 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slgr 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slgr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slgr 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slgr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slgr 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slgfr 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slgfr 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +slgfr 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +slgfr 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slgfr 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +slgfr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +slgfr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slgfr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +slgfr 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slb 0000000000000000 - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 00000000FFFFFFFF - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=1) +slbg 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slbg 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF0000FFFF (cc=1) +slbg 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00007FFF (cc=1) +slbg 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slbg 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slbg 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=1) +slbg FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFEFFFFFFFF (cc=3) +slbg 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFEFFFFFFFF (cc=3) +slbr 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +slbr 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=1) +slbr 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=1) +slbr 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=1) +slbr 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=1) +slbr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +slbr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=1) +slbr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbr 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=0) +slbr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=1) +slbgr 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +slbgr 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF0000FFFF (cc=1) +slbgr 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00007FFF (cc=1) +slbgr 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +slbgr 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +slbgr 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF7FFFFFFF (cc=1) +slbgr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFEFFFFFFFF (cc=3) +slbgr 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFEFFFFFFFF (cc=3) +slb 0000000000000000 - 00000000FFFFFFFF - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 00000000FFFFFFFF - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 00000000FFFFFFFF - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 00000000FFFFFFFF - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 00000000FFFFFFFF - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 00000000FFFFFFFF - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 00000000FFFFFFFF - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 00000000FFFFFFFF - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 00000000FFFFFFFF - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 00000000FFFFFFFF - 0 = FFFFFFFF00000001 (cc=1) +slbg 0000000000000001 - 00000000FFFFFFFF - 0 = FFFFFFFF00000002 (cc=1) +slbg 000000000000FFFF - 00000000FFFFFFFF - 0 = FFFFFFFF00010000 (cc=1) +slbg 0000000000007FFF - 00000000FFFFFFFF - 0 = FFFFFFFF00008000 (cc=1) +slbg 0000000000008000 - 00000000FFFFFFFF - 0 = FFFFFFFF00008001 (cc=1) +slbg 00000000FFFFFFFF - 00000000FFFFFFFF - 0 = 0000000000000000 (cc=2) +slbg 0000000080000000 - 00000000FFFFFFFF - 0 = FFFFFFFF80000001 (cc=1) +slbg 000000007FFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFF80000000 (cc=1) +slbg FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFF00000000 (cc=3) +slbg 8000000000000000 - 00000000FFFFFFFF - 0 = 7FFFFFFF00000001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = 7FFFFFFF00000000 (cc=3) +slbr 0000000000000000 - 00000000FFFFFFFF - 0 = 0000000000000001 (cc=1) +slbr 0000000000000001 - 00000000FFFFFFFF - 0 = 0000000000000002 (cc=1) +slbr 000000000000FFFF - 00000000FFFFFFFF - 0 = 0000000000010000 (cc=1) +slbr 0000000000007FFF - 00000000FFFFFFFF - 0 = 0000000000008000 (cc=1) +slbr 0000000000008000 - 00000000FFFFFFFF - 0 = 0000000000008001 (cc=1) +slbr 00000000FFFFFFFF - 00000000FFFFFFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000080000000 - 00000000FFFFFFFF - 0 = 0000000080000001 (cc=1) +slbr 000000007FFFFFFF - 00000000FFFFFFFF - 0 = 0000000080000000 (cc=1) +slbr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFF00000000 (cc=2) +slbr 8000000000000000 - 00000000FFFFFFFF - 0 = 8000000000000001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = 7FFFFFFF00000000 (cc=2) +slbgr 0000000000000000 - 00000000FFFFFFFF - 0 = FFFFFFFF00000001 (cc=1) +slbgr 0000000000000001 - 00000000FFFFFFFF - 0 = FFFFFFFF00000002 (cc=1) +slbgr 000000000000FFFF - 00000000FFFFFFFF - 0 = FFFFFFFF00010000 (cc=1) +slbgr 0000000000007FFF - 00000000FFFFFFFF - 0 = FFFFFFFF00008000 (cc=1) +slbgr 0000000000008000 - 00000000FFFFFFFF - 0 = FFFFFFFF00008001 (cc=1) +slbgr 00000000FFFFFFFF - 00000000FFFFFFFF - 0 = 0000000000000000 (cc=2) +slbgr 0000000080000000 - 00000000FFFFFFFF - 0 = FFFFFFFF80000001 (cc=1) +slbgr 000000007FFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFF80000000 (cc=1) +slbgr FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = FFFFFFFF00000000 (cc=3) +slbgr 8000000000000000 - 00000000FFFFFFFF - 0 = 7FFFFFFF00000001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 0 = 7FFFFFFF00000000 (cc=3) +SHY 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 00000000FFFFFFFF - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sg 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +sgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slg 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +sgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +sr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0002 (cc=1) +sr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +sr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8001 (cc=1) +sr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=1) +sr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +sr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0001 (cc=1) +sr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=1) +sgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sgr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +sgfr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sgfr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sgfr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgfr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgfr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgfr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sgfr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sgfr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sgfr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sgfr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +slr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +slr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0002 (cc=1) +slr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +slr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8001 (cc=1) +slr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slgr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slgfr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slgfr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slgfr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slgfr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgfr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slgfr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slgfr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slgfr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slgfr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slb 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +slbg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slbg 000000000000FFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slbr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=1) +slbr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +slbr 000000000000FFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF7FFF (cc=1) +slbr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +slbr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slbgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +slbgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slbgr 000000000000FFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slb 0000000000000000 - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 000000000000FFFF - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 000000000000FFFF - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 000000000000FFFF - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 000000000000FFFF - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 000000000000FFFF - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 000000000000FFFF - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 000000000000FFFF - 0 = FFFFFFFFFFFF0001 (cc=1) +slbg 0000000000000001 - 000000000000FFFF - 0 = FFFFFFFFFFFF0002 (cc=1) +slbg 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbg 0000000000007FFF - 000000000000FFFF - 0 = FFFFFFFFFFFF8000 (cc=1) +slbg 0000000000008000 - 000000000000FFFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbg 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbg 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbg 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbg FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbg 8000000000000000 - 000000000000FFFF - 0 = 7FFFFFFFFFFF0001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +slbr 0000000000000000 - 000000000000FFFF - 0 = 00000000FFFF0001 (cc=1) +slbr 0000000000000001 - 000000000000FFFF - 0 = 00000000FFFF0002 (cc=1) +slbr 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000000007FFF - 000000000000FFFF - 0 = 00000000FFFF8000 (cc=1) +slbr 0000000000008000 - 000000000000FFFF - 0 = 00000000FFFF8001 (cc=1) +slbr 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbr 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbr 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbr FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbr 8000000000000000 - 000000000000FFFF - 0 = 80000000FFFF0001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +slbgr 0000000000000000 - 000000000000FFFF - 0 = FFFFFFFFFFFF0001 (cc=1) +slbgr 0000000000000001 - 000000000000FFFF - 0 = FFFFFFFFFFFF0002 (cc=1) +slbgr 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbgr 0000000000007FFF - 000000000000FFFF - 0 = FFFFFFFFFFFF8000 (cc=1) +slbgr 0000000000008000 - 000000000000FFFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbgr 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbgr 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbgr 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbgr 8000000000000000 - 000000000000FFFF - 0 = 7FFFFFFFFFFF0001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +SHY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sg 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +sg 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sg 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sg 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sg 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=2) +sg 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=2) +sg 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=2) +sg FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sg 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=2) +sgf 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slg 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +slg 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +slg 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slg 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +slg 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +slg 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +slg 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slg FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +slg 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +sgf 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 0000000000007FFF - 1 = 00000000FFFF8001 (cc=1) +sr 0000000000000001 - 0000000000007FFF - 1 = 00000000FFFF8002 (cc=1) +sr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=1) +sr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +sr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=2) +sr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sr 8000000000000000 - 0000000000007FFF - 1 = 80000000FFFF8001 (cc=1) +sr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=1) +sgr 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgr 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +sgr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sgr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sgr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sgr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=2) +sgr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=2) +sgr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=2) +sgr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgr 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=2) +sgfr 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgfr 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +sgfr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +sgfr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +sgfr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +sgfr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=2) +sgfr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=2) +sgfr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgfr 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +sgfr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=2) +slr 0000000000000000 - 0000000000007FFF - 1 = 00000000FFFF8001 (cc=1) +slr 0000000000000001 - 0000000000007FFF - 1 = 00000000FFFF8002 (cc=1) +slr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +slr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +slr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +slr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +slr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +slr 8000000000000000 - 0000000000007FFF - 1 = 80000000FFFF8001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +slgr 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgr 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +slgr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +slgr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slgr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +slgr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +slgr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +slgr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slgr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +slgr 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +slgfr 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgfr 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +slgfr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +slgfr 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +slgfr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +slgfr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +slgfr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slgfr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +slgfr 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +slb 0000000000000000 - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 0000000000007FFF - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbg 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slbg 000000000000FFFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +slbg 0000000000007FFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000000008000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slbg 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF7FFF (cc=3) +slbg 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slbg 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF7FFF (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF7FFF (cc=3) +slbg 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slbr 0000000000000000 - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=1) +slbr 0000000000000001 - 0000000000007FFF - 1 = 00000000FFFF8001 (cc=1) +slbr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +slbr 0000000000007FFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slbr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF7FFF (cc=3) +slbr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slbr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF7FFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF7FFF (cc=3) +slbr 8000000000000000 - 0000000000007FFF - 1 = 80000000FFFF8000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slbgr 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbgr 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slbgr 000000000000FFFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +slbgr 0000000000007FFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000008000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +slbgr 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF7FFF (cc=3) +slbgr 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +slbgr 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF7FFF (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF7FFF (cc=3) +slbgr 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slb 0000000000000000 - 0000000000007FFF - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 0000000000007FFF - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 0000000000007FFF - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 0000000000007FFF - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 0000000000007FFF - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 0000000000007FFF - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 0000000000007FFF - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 0000000000007FFF - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000007FFF - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 0000000000007FFF - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 0000000000007FFF - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 0000000000007FFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbg 0000000000000001 - 0000000000007FFF - 0 = FFFFFFFFFFFF8002 (cc=1) +slbg 000000000000FFFF - 0000000000007FFF - 0 = 0000000000008000 (cc=3) +slbg 0000000000007FFF - 0000000000007FFF - 0 = 0000000000000000 (cc=2) +slbg 0000000000008000 - 0000000000007FFF - 0 = 0000000000000001 (cc=3) +slbg 00000000FFFFFFFF - 0000000000007FFF - 0 = 00000000FFFF8000 (cc=3) +slbg 0000000080000000 - 0000000000007FFF - 0 = 000000007FFF8001 (cc=3) +slbg 000000007FFFFFFF - 0000000000007FFF - 0 = 000000007FFF8000 (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000007FFF - 0 = FFFFFFFFFFFF8000 (cc=3) +slbg 8000000000000000 - 0000000000007FFF - 0 = 7FFFFFFFFFFF8001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000007FFF - 0 = 7FFFFFFFFFFF8000 (cc=3) +slbr 0000000000000000 - 0000000000007FFF - 0 = 00000000FFFF8001 (cc=1) +slbr 0000000000000001 - 0000000000007FFF - 0 = 00000000FFFF8002 (cc=1) +slbr 000000000000FFFF - 0000000000007FFF - 0 = 0000000000008000 (cc=3) +slbr 0000000000007FFF - 0000000000007FFF - 0 = 0000000000000000 (cc=2) +slbr 0000000000008000 - 0000000000007FFF - 0 = 0000000000000001 (cc=3) +slbr 00000000FFFFFFFF - 0000000000007FFF - 0 = 00000000FFFF8000 (cc=3) +slbr 0000000080000000 - 0000000000007FFF - 0 = 000000007FFF8001 (cc=3) +slbr 000000007FFFFFFF - 0000000000007FFF - 0 = 000000007FFF8000 (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000007FFF - 0 = FFFFFFFFFFFF8000 (cc=3) +slbr 8000000000000000 - 0000000000007FFF - 0 = 80000000FFFF8001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 0 = 7FFFFFFFFFFF8000 (cc=3) +slbgr 0000000000000000 - 0000000000007FFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbgr 0000000000000001 - 0000000000007FFF - 0 = FFFFFFFFFFFF8002 (cc=1) +slbgr 000000000000FFFF - 0000000000007FFF - 0 = 0000000000008000 (cc=3) +slbgr 0000000000007FFF - 0000000000007FFF - 0 = 0000000000000000 (cc=2) +slbgr 0000000000008000 - 0000000000007FFF - 0 = 0000000000000001 (cc=3) +slbgr 00000000FFFFFFFF - 0000000000007FFF - 0 = 00000000FFFF8000 (cc=3) +slbgr 0000000080000000 - 0000000000007FFF - 0 = 000000007FFF8001 (cc=3) +slbgr 000000007FFFFFFF - 0000000000007FFF - 0 = 000000007FFF8000 (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000007FFF - 0 = FFFFFFFFFFFF8000 (cc=3) +slbgr 8000000000000000 - 0000000000007FFF - 0 = 7FFFFFFFFFFF8001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000007FFF - 0 = 7FFFFFFFFFFF8000 (cc=3) +SHY 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 0000000000007FFF - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 0000000000007FFF - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 0000000000007FFF - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 0000000000007FFF - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 0000000000007FFF - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 0000000000007FFF - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 0000000000007FFF - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +sg 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +sg 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sg 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sg 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sg 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=2) +sg 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=2) +sg 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=2) +sg FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +sg 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +sg 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=2) +sgf 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +slg 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +slg 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slg 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slg 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slg 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +slg 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +slg 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slg FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +slg 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +slg 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +sgf 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 0000000000008000 - 1 = 00000000FFFF8000 (cc=1) +sr 0000000000000001 - 0000000000008000 - 1 = 00000000FFFF8001 (cc=1) +sr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sr 0000000000007FFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +sr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=1) +sr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +sr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=2) +sr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +sr 8000000000000000 - 0000000000008000 - 1 = 80000000FFFF8000 (cc=1) +sr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=1) +sgr 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +sgr 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +sgr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sgr 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sgr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=2) +sgr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=2) +sgr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=2) +sgr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +sgr 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=2) +sgfr 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +sgfr 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +sgfr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +sgfr 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgfr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +sgfr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=2) +sgfr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=2) +sgfr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=2) +sgfr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +sgfr 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +sgfr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=2) +slr 0000000000000000 - 0000000000008000 - 1 = 00000000FFFF8000 (cc=1) +slr 0000000000000001 - 0000000000008000 - 1 = 00000000FFFF8001 (cc=1) +slr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slr 0000000000007FFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +slr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +slr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +slr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +slr 8000000000000000 - 0000000000008000 - 1 = 80000000FFFF8000 (cc=1) +slr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slgr 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +slgr 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +slgr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slgr 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slgr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +slgr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +slgr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slgr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +slgr 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slgfr 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +slgfr 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +slgfr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slgfr 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slgfr 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slgfr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +slgfr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +slgfr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slgfr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +slgfr 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slb 0000000000000000 - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 0000000000008000 - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 0000000000008000 - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbg 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +slbg 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFE (cc=3) +slbg 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbg 0000000000008000 - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFE (cc=3) +slbg 0000000080000000 - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slbg 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFE (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFE (cc=3) +slbg 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFE (cc=3) +slbr 0000000000000000 - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=1) +slbr 0000000000000001 - 0000000000008000 - 1 = 00000000FFFF8000 (cc=1) +slbr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFE (cc=3) +slbr 0000000000007FFF - 0000000000008000 - 1 = 00000000FFFFFFFE (cc=1) +slbr 0000000000008000 - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +slbr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFE (cc=3) +slbr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slbr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFE (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFE (cc=3) +slbr 8000000000000000 - 0000000000008000 - 1 = 80000000FFFF7FFF (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFE (cc=3) +slbgr 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbgr 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +slbgr 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFE (cc=3) +slbgr 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFE (cc=1) +slbgr 0000000000008000 - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFE (cc=3) +slbgr 0000000080000000 - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +slbgr 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFE (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFE (cc=3) +slbgr 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFE (cc=3) +slb 0000000000000000 - 0000000000008000 - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 0000000000008000 - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 0000000000008000 - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 0000000000008000 - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 0000000000008000 - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 0000000000008000 - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 0000000000008000 - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 0000000000008000 - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 0000000000008000 - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 0000000000008000 - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 0000000000008000 - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 0000000000008000 - 0 = FFFFFFFFFFFF8000 (cc=1) +slbg 0000000000000001 - 0000000000008000 - 0 = FFFFFFFFFFFF8001 (cc=1) +slbg 000000000000FFFF - 0000000000008000 - 0 = 0000000000007FFF (cc=3) +slbg 0000000000007FFF - 0000000000008000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000000008000 - 0000000000008000 - 0 = 0000000000000000 (cc=2) +slbg 00000000FFFFFFFF - 0000000000008000 - 0 = 00000000FFFF7FFF (cc=3) +slbg 0000000080000000 - 0000000000008000 - 0 = 000000007FFF8000 (cc=3) +slbg 000000007FFFFFFF - 0000000000008000 - 0 = 000000007FFF7FFF (cc=3) +slbg FFFFFFFFFFFFFFFF - 0000000000008000 - 0 = FFFFFFFFFFFF7FFF (cc=3) +slbg 8000000000000000 - 0000000000008000 - 0 = 7FFFFFFFFFFF8000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 0000000000008000 - 0 = 7FFFFFFFFFFF7FFF (cc=3) +slbr 0000000000000000 - 0000000000008000 - 0 = 00000000FFFF8000 (cc=1) +slbr 0000000000000001 - 0000000000008000 - 0 = 00000000FFFF8001 (cc=1) +slbr 000000000000FFFF - 0000000000008000 - 0 = 0000000000007FFF (cc=3) +slbr 0000000000007FFF - 0000000000008000 - 0 = 00000000FFFFFFFF (cc=1) +slbr 0000000000008000 - 0000000000008000 - 0 = 0000000000000000 (cc=2) +slbr 00000000FFFFFFFF - 0000000000008000 - 0 = 00000000FFFF7FFF (cc=3) +slbr 0000000080000000 - 0000000000008000 - 0 = 000000007FFF8000 (cc=3) +slbr 000000007FFFFFFF - 0000000000008000 - 0 = 000000007FFF7FFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 0000000000008000 - 0 = FFFFFFFFFFFF7FFF (cc=3) +slbr 8000000000000000 - 0000000000008000 - 0 = 80000000FFFF8000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 0000000000008000 - 0 = 7FFFFFFFFFFF7FFF (cc=3) +slbgr 0000000000000000 - 0000000000008000 - 0 = FFFFFFFFFFFF8000 (cc=1) +slbgr 0000000000000001 - 0000000000008000 - 0 = FFFFFFFFFFFF8001 (cc=1) +slbgr 000000000000FFFF - 0000000000008000 - 0 = 0000000000007FFF (cc=3) +slbgr 0000000000007FFF - 0000000000008000 - 0 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000008000 - 0000000000008000 - 0 = 0000000000000000 (cc=2) +slbgr 00000000FFFFFFFF - 0000000000008000 - 0 = 00000000FFFF7FFF (cc=3) +slbgr 0000000080000000 - 0000000000008000 - 0 = 000000007FFF8000 (cc=3) +slbgr 000000007FFFFFFF - 0000000000008000 - 0 = 000000007FFF7FFF (cc=3) +slbgr FFFFFFFFFFFFFFFF - 0000000000008000 - 0 = FFFFFFFFFFFF7FFF (cc=3) +slbgr 8000000000000000 - 0000000000008000 - 0 = 7FFFFFFFFFFF8000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 0000000000008000 - 0 = 7FFFFFFFFFFF7FFF (cc=3) +SHY 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 0000000000008000 - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 0000000000008000 - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 0000000000008000 - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 0000000000008000 - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 0000000000008000 - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 0000000000008000 - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 0000000000008000 - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFFFFFF (cc=1) +s 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +s 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +s 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +s 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +s 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +s 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +s 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +s 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +s FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +s 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +s 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sh 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sh 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sh 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sh 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sh 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sh 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +sh 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +sh 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sh FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sh 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +sh 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +sg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sg 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +sgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +sl 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +sl 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +sl 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +sl 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +sl 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +sl 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +sl 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +sl 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +sl FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +sl 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=2) +sl 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +slg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slg 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +sgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +sgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +sgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +sgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +sgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=2) +sgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=2) +sgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +sgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +sgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=1) +sgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=2) +slgf 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgf 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +slgf 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +slgf 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +slgf 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +slgf 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +slgf 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +slgf 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +slgf FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +slgf 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=3) +slgf 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +sr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +sr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0002 (cc=1) +sr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +sr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8001 (cc=1) +sr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=1) +sr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +sr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0001 (cc=1) +sr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=1) +sgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sgr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +sgfr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +sgfr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +sgfr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +sgfr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +sgfr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +sgfr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=2) +sgfr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=2) +sgfr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=2) +sgfr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +sgfr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +sgfr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=2) +slr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +slr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0002 (cc=1) +slr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +slr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8001 (cc=1) +slr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0001 (cc=1) +slr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slgr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slgfr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slgfr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +slgfr 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slgfr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slgfr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +slgfr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +slgfr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +slgfr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slgfr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +slgfr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +slgfr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slb 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +slb 0000000000000001 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +slb 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFE (cc=3) +slb 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFE (cc=3) +slb 0000000000008000 - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +slb 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFE (cc=3) +slb 0000000080000000 - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +slb 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFE (cc=3) +slb FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFE (cc=3) +slb 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFFFFFF (cc=1) +slb 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFE (cc=3) +slbg 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +slbg 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slbg 000000000000FFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbg 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbg 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbg 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbg 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbg 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbg FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbg 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slbr 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=1) +slbr 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +slbr 000000000000FFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +slbr 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF7FFF (cc=1) +slbr 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +slbr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbr 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0000 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slbgr 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=1) +slbgr 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +slbgr 000000000000FFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +slbgr 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF7FFF (cc=1) +slbgr 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +slbgr 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFEFFFF (cc=3) +slbgr 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +slbgr 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFEFFFF (cc=3) +slbgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFEFFFF (cc=3) +slbgr 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFEFFFF (cc=3) +slb 0000000000000000 - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slb 0000000000000001 - 000000000000FFFF - 0 = 0000000000000001 (cc=3) +slb 000000000000FFFF - 000000000000FFFF - 0 = 000000000000FFFF (cc=3) +slb 0000000000007FFF - 000000000000FFFF - 0 = 0000000000007FFF (cc=3) +slb 0000000000008000 - 000000000000FFFF - 0 = 0000000000008000 (cc=3) +slb 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFFFFFF (cc=3) +slb 0000000080000000 - 000000000000FFFF - 0 = 0000000080000000 (cc=3) +slb 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFFFFFF (cc=3) +slb FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFFFFFF (cc=3) +slb 8000000000000000 - 000000000000FFFF - 0 = 8000000000000000 (cc=2) +slb 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFFFFFF (cc=3) +slbg 0000000000000000 - 000000000000FFFF - 0 = FFFFFFFFFFFF0001 (cc=1) +slbg 0000000000000001 - 000000000000FFFF - 0 = FFFFFFFFFFFF0002 (cc=1) +slbg 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbg 0000000000007FFF - 000000000000FFFF - 0 = FFFFFFFFFFFF8000 (cc=1) +slbg 0000000000008000 - 000000000000FFFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbg 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbg 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbg 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbg FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbg 8000000000000000 - 000000000000FFFF - 0 = 7FFFFFFFFFFF0001 (cc=3) +slbg 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +slbr 0000000000000000 - 000000000000FFFF - 0 = 00000000FFFF0001 (cc=1) +slbr 0000000000000001 - 000000000000FFFF - 0 = 00000000FFFF0002 (cc=1) +slbr 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbr 0000000000007FFF - 000000000000FFFF - 0 = 00000000FFFF8000 (cc=1) +slbr 0000000000008000 - 000000000000FFFF - 0 = 00000000FFFF8001 (cc=1) +slbr 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbr 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbr 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbr FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbr 8000000000000000 - 000000000000FFFF - 0 = 80000000FFFF0001 (cc=1) +slbr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +slbgr 0000000000000000 - 000000000000FFFF - 0 = FFFFFFFFFFFF0001 (cc=1) +slbgr 0000000000000001 - 000000000000FFFF - 0 = FFFFFFFFFFFF0002 (cc=1) +slbgr 000000000000FFFF - 000000000000FFFF - 0 = 0000000000000000 (cc=2) +slbgr 0000000000007FFF - 000000000000FFFF - 0 = FFFFFFFFFFFF8000 (cc=1) +slbgr 0000000000008000 - 000000000000FFFF - 0 = FFFFFFFFFFFF8001 (cc=1) +slbgr 00000000FFFFFFFF - 000000000000FFFF - 0 = 00000000FFFF0000 (cc=3) +slbgr 0000000080000000 - 000000000000FFFF - 0 = 000000007FFF0001 (cc=3) +slbgr 000000007FFFFFFF - 000000000000FFFF - 0 = 000000007FFF0000 (cc=3) +slbgr FFFFFFFFFFFFFFFF - 000000000000FFFF - 0 = FFFFFFFFFFFF0000 (cc=3) +slbgr 8000000000000000 - 000000000000FFFF - 0 = 7FFFFFFFFFFF0001 (cc=3) +slbgr 7FFFFFFFFFFFFFFF - 000000000000FFFF - 0 = 7FFFFFFFFFFF0000 (cc=3) +SHY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +SHY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +SHY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +SHY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +SHY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +SHY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +SHY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +SHY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +SHY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SHY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +SHY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) +SLY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +SLY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=3) +SLY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=3) +SLY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=3) +SLY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=3) +SLY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=3) +SLY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=3) +SLY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=3) +SLY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=2) +SLY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SY 0000000000000000 - 000000000000FFFF - 1 = 0000000000000000 (cc=0) +SY 0000000000000001 - 000000000000FFFF - 1 = 0000000000000001 (cc=2) +SY 000000000000FFFF - 000000000000FFFF - 1 = 000000000000FFFF (cc=2) +SY 0000000000007FFF - 000000000000FFFF - 1 = 0000000000007FFF (cc=2) +SY 0000000000008000 - 000000000000FFFF - 1 = 0000000000008000 (cc=2) +SY 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFFFFFF (cc=1) +SY 0000000080000000 - 000000000000FFFF - 1 = 0000000080000000 (cc=1) +SY 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFFFFFF (cc=2) +SY FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFFFFFF (cc=1) +SY 8000000000000000 - 000000000000FFFF - 1 = 8000000000000000 (cc=0) +SY 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFFFFFF (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.vgtest new file mode 100644 index 000000000..1f95dce42 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub.vgtest @@ -0,0 +1 @@ +prog: sub diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.c new file mode 100644 index 000000000..156e43be7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.c @@ -0,0 +1,29 @@ +#include +#include "sub.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(SLFI, 00000000, 0); + immsweep(SLFI, 0000ffff, 0); + immsweep(SLFI, 00008000, 0); + immsweep(SLFI, 00007fff, 0); + immsweep(SLFI, ffffffff, 0); + immsweep(SLFI, 80000000, 0); + immsweep(SLFI, 7fffffff, 0); + immsweep(SLGFI, 00000000, 0); + immsweep(SLGFI, 0000ffff, 0); + immsweep(SLGFI, 00008000, 0); + immsweep(SLGFI, 00007fff, 0); + immsweep(SLGFI, ffffffff, 0); + immsweep(SLGFI, 80000000, 0); + immsweep(SLGFI, 7fffffff, 0); + +} + +int main() +{ + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stdout.exp new file mode 100644 index 000000000..882222082 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.stdout.exp @@ -0,0 +1,154 @@ +SLFI 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +SLFI 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +SLFI 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +SLFI 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +SLFI 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +SLFI 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +SLFI 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +SLFI 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +SLFI FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLFI 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=2) +SLFI 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SLFI 0000000000000000 - 000000000000FFFF - 1 = 00000000FFFF0001 (cc=1) +SLFI 0000000000000001 - 000000000000FFFF - 1 = 00000000FFFF0002 (cc=1) +SLFI 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +SLFI 0000000000007FFF - 000000000000FFFF - 1 = 00000000FFFF8000 (cc=1) +SLFI 0000000000008000 - 000000000000FFFF - 1 = 00000000FFFF8001 (cc=1) +SLFI 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +SLFI 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +SLFI 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +SLFI FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +SLFI 8000000000000000 - 000000000000FFFF - 1 = 80000000FFFF0001 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +SLFI 0000000000000000 - 0000000000008000 - 1 = 00000000FFFF8000 (cc=1) +SLFI 0000000000000001 - 0000000000008000 - 1 = 00000000FFFF8001 (cc=1) +SLFI 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +SLFI 0000000000007FFF - 0000000000008000 - 1 = 00000000FFFFFFFF (cc=1) +SLFI 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +SLFI 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +SLFI 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +SLFI 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +SLFI FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +SLFI 8000000000000000 - 0000000000008000 - 1 = 80000000FFFF8000 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +SLFI 0000000000000000 - 0000000000007FFF - 1 = 00000000FFFF8001 (cc=1) +SLFI 0000000000000001 - 0000000000007FFF - 1 = 00000000FFFF8002 (cc=1) +SLFI 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +SLFI 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +SLFI 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +SLFI 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +SLFI 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +SLFI 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +SLFI FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +SLFI 8000000000000000 - 0000000000007FFF - 1 = 80000000FFFF8001 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +SLFI 0000000000000000 - 00000000FFFFFFFF - 1 = 0000000000000001 (cc=1) +SLFI 0000000000000001 - 00000000FFFFFFFF - 1 = 0000000000000002 (cc=1) +SLFI 000000000000FFFF - 00000000FFFFFFFF - 1 = 0000000000010000 (cc=1) +SLFI 0000000000007FFF - 00000000FFFFFFFF - 1 = 0000000000008000 (cc=1) +SLFI 0000000000008000 - 00000000FFFFFFFF - 1 = 0000000000008001 (cc=1) +SLFI 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +SLFI 0000000080000000 - 00000000FFFFFFFF - 1 = 0000000080000001 (cc=1) +SLFI 000000007FFFFFFF - 00000000FFFFFFFF - 1 = 0000000080000000 (cc=1) +SLFI FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=2) +SLFI 8000000000000000 - 00000000FFFFFFFF - 1 = 8000000000000001 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=2) +SLFI 0000000000000000 - 0000000080000000 - 1 = 0000000080000000 (cc=1) +SLFI 0000000000000001 - 0000000080000000 - 1 = 0000000080000001 (cc=1) +SLFI 000000000000FFFF - 0000000080000000 - 1 = 000000008000FFFF (cc=1) +SLFI 0000000000007FFF - 0000000080000000 - 1 = 0000000080007FFF (cc=1) +SLFI 0000000000008000 - 0000000080000000 - 1 = 0000000080008000 (cc=1) +SLFI 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +SLFI 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +SLFI 000000007FFFFFFF - 0000000080000000 - 1 = 00000000FFFFFFFF (cc=1) +SLFI FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +SLFI 8000000000000000 - 0000000080000000 - 1 = 8000000080000000 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +SLFI 0000000000000000 - 000000007FFFFFFF - 1 = 0000000080000001 (cc=1) +SLFI 0000000000000001 - 000000007FFFFFFF - 1 = 0000000080000002 (cc=1) +SLFI 000000000000FFFF - 000000007FFFFFFF - 1 = 0000000080010000 (cc=1) +SLFI 0000000000007FFF - 000000007FFFFFFF - 1 = 0000000080008000 (cc=1) +SLFI 0000000000008000 - 000000007FFFFFFF - 1 = 0000000080008001 (cc=1) +SLFI 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +SLFI 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +SLFI 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +SLFI FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +SLFI 8000000000000000 - 000000007FFFFFFF - 1 = 8000000080000001 (cc=1) +SLFI 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) +SLGFI 0000000000000000 - 0000000000000000 - 1 = 0000000000000000 (cc=2) +SLGFI 0000000000000001 - 0000000000000000 - 1 = 0000000000000001 (cc=3) +SLGFI 000000000000FFFF - 0000000000000000 - 1 = 000000000000FFFF (cc=3) +SLGFI 0000000000007FFF - 0000000000000000 - 1 = 0000000000007FFF (cc=3) +SLGFI 0000000000008000 - 0000000000000000 - 1 = 0000000000008000 (cc=3) +SLGFI 00000000FFFFFFFF - 0000000000000000 - 1 = 00000000FFFFFFFF (cc=3) +SLGFI 0000000080000000 - 0000000000000000 - 1 = 0000000080000000 (cc=3) +SLGFI 000000007FFFFFFF - 0000000000000000 - 1 = 000000007FFFFFFF (cc=3) +SLGFI FFFFFFFFFFFFFFFF - 0000000000000000 - 1 = FFFFFFFFFFFFFFFF (cc=3) +SLGFI 8000000000000000 - 0000000000000000 - 1 = 8000000000000000 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 0000000000000000 - 1 = 7FFFFFFFFFFFFFFF (cc=3) +SLGFI 0000000000000000 - 000000000000FFFF - 1 = FFFFFFFFFFFF0001 (cc=1) +SLGFI 0000000000000001 - 000000000000FFFF - 1 = FFFFFFFFFFFF0002 (cc=1) +SLGFI 000000000000FFFF - 000000000000FFFF - 1 = 0000000000000000 (cc=2) +SLGFI 0000000000007FFF - 000000000000FFFF - 1 = FFFFFFFFFFFF8000 (cc=1) +SLGFI 0000000000008000 - 000000000000FFFF - 1 = FFFFFFFFFFFF8001 (cc=1) +SLGFI 00000000FFFFFFFF - 000000000000FFFF - 1 = 00000000FFFF0000 (cc=3) +SLGFI 0000000080000000 - 000000000000FFFF - 1 = 000000007FFF0001 (cc=3) +SLGFI 000000007FFFFFFF - 000000000000FFFF - 1 = 000000007FFF0000 (cc=3) +SLGFI FFFFFFFFFFFFFFFF - 000000000000FFFF - 1 = FFFFFFFFFFFF0000 (cc=3) +SLGFI 8000000000000000 - 000000000000FFFF - 1 = 7FFFFFFFFFFF0001 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 000000000000FFFF - 1 = 7FFFFFFFFFFF0000 (cc=3) +SLGFI 0000000000000000 - 0000000000008000 - 1 = FFFFFFFFFFFF8000 (cc=1) +SLGFI 0000000000000001 - 0000000000008000 - 1 = FFFFFFFFFFFF8001 (cc=1) +SLGFI 000000000000FFFF - 0000000000008000 - 1 = 0000000000007FFF (cc=3) +SLGFI 0000000000007FFF - 0000000000008000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SLGFI 0000000000008000 - 0000000000008000 - 1 = 0000000000000000 (cc=2) +SLGFI 00000000FFFFFFFF - 0000000000008000 - 1 = 00000000FFFF7FFF (cc=3) +SLGFI 0000000080000000 - 0000000000008000 - 1 = 000000007FFF8000 (cc=3) +SLGFI 000000007FFFFFFF - 0000000000008000 - 1 = 000000007FFF7FFF (cc=3) +SLGFI FFFFFFFFFFFFFFFF - 0000000000008000 - 1 = FFFFFFFFFFFF7FFF (cc=3) +SLGFI 8000000000000000 - 0000000000008000 - 1 = 7FFFFFFFFFFF8000 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 0000000000008000 - 1 = 7FFFFFFFFFFF7FFF (cc=3) +SLGFI 0000000000000000 - 0000000000007FFF - 1 = FFFFFFFFFFFF8001 (cc=1) +SLGFI 0000000000000001 - 0000000000007FFF - 1 = FFFFFFFFFFFF8002 (cc=1) +SLGFI 000000000000FFFF - 0000000000007FFF - 1 = 0000000000008000 (cc=3) +SLGFI 0000000000007FFF - 0000000000007FFF - 1 = 0000000000000000 (cc=2) +SLGFI 0000000000008000 - 0000000000007FFF - 1 = 0000000000000001 (cc=3) +SLGFI 00000000FFFFFFFF - 0000000000007FFF - 1 = 00000000FFFF8000 (cc=3) +SLGFI 0000000080000000 - 0000000000007FFF - 1 = 000000007FFF8001 (cc=3) +SLGFI 000000007FFFFFFF - 0000000000007FFF - 1 = 000000007FFF8000 (cc=3) +SLGFI FFFFFFFFFFFFFFFF - 0000000000007FFF - 1 = FFFFFFFFFFFF8000 (cc=3) +SLGFI 8000000000000000 - 0000000000007FFF - 1 = 7FFFFFFFFFFF8001 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 0000000000007FFF - 1 = 7FFFFFFFFFFF8000 (cc=3) +SLGFI 0000000000000000 - 00000000FFFFFFFF - 1 = FFFFFFFF00000001 (cc=1) +SLGFI 0000000000000001 - 00000000FFFFFFFF - 1 = FFFFFFFF00000002 (cc=1) +SLGFI 000000000000FFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00010000 (cc=1) +SLGFI 0000000000007FFF - 00000000FFFFFFFF - 1 = FFFFFFFF00008000 (cc=1) +SLGFI 0000000000008000 - 00000000FFFFFFFF - 1 = FFFFFFFF00008001 (cc=1) +SLGFI 00000000FFFFFFFF - 00000000FFFFFFFF - 1 = 0000000000000000 (cc=2) +SLGFI 0000000080000000 - 00000000FFFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +SLGFI 000000007FFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF80000000 (cc=1) +SLGFI FFFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = FFFFFFFF00000000 (cc=3) +SLGFI 8000000000000000 - 00000000FFFFFFFF - 1 = 7FFFFFFF00000001 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 00000000FFFFFFFF - 1 = 7FFFFFFF00000000 (cc=3) +SLGFI 0000000000000000 - 0000000080000000 - 1 = FFFFFFFF80000000 (cc=1) +SLGFI 0000000000000001 - 0000000080000000 - 1 = FFFFFFFF80000001 (cc=1) +SLGFI 000000000000FFFF - 0000000080000000 - 1 = FFFFFFFF8000FFFF (cc=1) +SLGFI 0000000000007FFF - 0000000080000000 - 1 = FFFFFFFF80007FFF (cc=1) +SLGFI 0000000000008000 - 0000000080000000 - 1 = FFFFFFFF80008000 (cc=1) +SLGFI 00000000FFFFFFFF - 0000000080000000 - 1 = 000000007FFFFFFF (cc=3) +SLGFI 0000000080000000 - 0000000080000000 - 1 = 0000000000000000 (cc=2) +SLGFI 000000007FFFFFFF - 0000000080000000 - 1 = FFFFFFFFFFFFFFFF (cc=1) +SLGFI FFFFFFFFFFFFFFFF - 0000000080000000 - 1 = FFFFFFFF7FFFFFFF (cc=3) +SLGFI 8000000000000000 - 0000000080000000 - 1 = 7FFFFFFF80000000 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 0000000080000000 - 1 = 7FFFFFFF7FFFFFFF (cc=3) +SLGFI 0000000000000000 - 000000007FFFFFFF - 1 = FFFFFFFF80000001 (cc=1) +SLGFI 0000000000000001 - 000000007FFFFFFF - 1 = FFFFFFFF80000002 (cc=1) +SLGFI 000000000000FFFF - 000000007FFFFFFF - 1 = FFFFFFFF80010000 (cc=1) +SLGFI 0000000000007FFF - 000000007FFFFFFF - 1 = FFFFFFFF80008000 (cc=1) +SLGFI 0000000000008000 - 000000007FFFFFFF - 1 = FFFFFFFF80008001 (cc=1) +SLGFI 00000000FFFFFFFF - 000000007FFFFFFF - 1 = 0000000080000000 (cc=3) +SLGFI 0000000080000000 - 000000007FFFFFFF - 1 = 0000000000000001 (cc=3) +SLGFI 000000007FFFFFFF - 000000007FFFFFFF - 1 = 0000000000000000 (cc=2) +SLGFI FFFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = FFFFFFFF80000000 (cc=3) +SLGFI 8000000000000000 - 000000007FFFFFFF - 1 = 7FFFFFFF80000001 (cc=3) +SLGFI 7FFFFFFFFFFFFFFF - 000000007FFFFFFF - 1 = 7FFFFFFF80000000 (cc=3) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.vgtest new file mode 100644 index 000000000..cca772079 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/sub_EI.vgtest @@ -0,0 +1,2 @@ +prog: sub_EI +prereq: test -x sub_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.c new file mode 100644 index 000000000..4ff031f86 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/tcxb.c @@ -0,0 +1,95 @@ +/* test data class tests for float, double, long double: TCEB, TCDB, TCXB */ +#include +#include + +static int tcxb(long double f, long long num) +{ + int match; + + asm volatile(" tcxb %1,0(%2)\n" + "ipm %0\n" + "srl %0,28\n" + : "=d" (match) + : "f" (f), "a" (num) + : "cc"); + return match; +} + +static int tcdb(double f, long long num) +{ + int match; + + asm volatile(" tcdb %1,0(%2)\n" + "ipm %0\n" + "srl %0,28\n" + : "=d" (match) + : "f" (f), "a" (num) + : "cc"); + return match; +} + +static int tceb(float f, long long num) +{ + int match; + + asm volatile(" tceb %1,0(%2)\n" + "ipm %0\n" + "srl %0,28\n" + : "=d" (match) + : "f" (f), "a" (num) + : "cc"); + return match; +} + +int main() +{ + int i; + + for (i = 0; i < 64; i++) { + if (sizeof (long double) == 16) { + /* long double 128 bit */ + printf("%d", tcxb(+0.0l, 1UL< +#define get_cc() \ +({ \ + char __cc; \ + /* dont use IPM to better test spechelpers */ \ + asm volatile( " brc 8,1f\n\t" \ + " brc 4,2f\n\t" \ + " brc 2,3f\n\t" \ + " brc 1,4f\n\t" \ + " mvi %0,4\n\t" \ + " j 0f\n\t" \ + "1: mvi %0,0\n\t" \ + " j 0f\n\t" \ + "2: mvi %0,1\n\t" \ + " j 0f\n\t" \ + "3: mvi %0,2\n\t" \ + " j 0f\n\t" \ + "4: mvi %0,3\n\t" \ + " j 0f\n\t" \ + "0: bcr 0,0 /*nop*/\n\t" \ + :"=m" (__cc)::"memory"); \ + __cc; \ +}) + +static inline void dump_field(void *field, int size) +{ + int i; + for (i=0; i < size; i++) + printf("%2.2X ", ((char *) field)[i]); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.c new file mode 100644 index 000000000..9c81b59f2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.c @@ -0,0 +1,102 @@ +/* tests, xc,oc and nc */ +#include +#include "test.h" + +void test_oc(void) +{ + char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n"; + char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n"; + char zero[2] = "\0\0"; + + printf("\nOC:\n"); + asm volatile ("oc %O0(1,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 2); + + asm volatile ("oc %O0(19,%R0),%1\n"::"Q" (*buf1), + "Q"(*buf2):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(buf1, 20); +} + +void test_nc(void) +{ + char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n"; + char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n"; + char zero[2] = "\0\0"; + + printf("\nNC:\n"); + asm volatile ("nc %O0(1,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 2); + + asm volatile ("nc %O0(19,%R0),%1\n"::"Q" (*buf1), + "Q"(*buf2):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(buf1, 20); +} + + +void test_xc(void) +{ + char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n"; + char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n"; + char buf3[20] = "0123456789abcdefghij"; + char zero[300] = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaa"; + + printf("\nXC:\n"); + asm volatile ("xc %O0(1,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 4); + + asm volatile ("xc %O0(10,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 12); + + asm volatile ("xc %O0(100,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 102); + + asm volatile ("xc %O0(256,%R0),%0\n"::"Q" (*zero), + "Q"(*zero):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(zero, 257); + + asm volatile ("lghi 1,256 + 20\n" + "larl 2,1f\n" + "ex 1,0(2)\n" + "j 2f\n" + "1: xc 260(1,%0),260(%0)\n" + "2:\n"::"a" (zero), "a"(zero):"memory", "1", "2"); + printf("CC:%d\n", get_cc()); + dump_field(zero + 260, 30); + + asm volatile ("xc 0(19,%0),0(%1)\n"::"a" (buf1), + "a"(buf2):"memory"); + printf("CC:%d\n", get_cc()); + dump_field(buf1, 20); + asm volatile ("xc 0(10,%0),0(%0)\n"::"a" (buf3):"memory"); + + printf("CC:%d\n", get_cc()); + dump_field(buf3, 20); + return; +} + +int main() +{ + test_oc(); + test_nc(); + test_xc(); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stdout.exp new file mode 100644 index 000000000..873fa3114 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.stdout.exp @@ -0,0 +1,18 @@ + +OC: +CC:0 +00 00 CC:1 +7F 55 55 7F 55 2A 55 55 7F 2A 7F 2A 6B 55 6B 41 2A 55 55 0A +NC: +CC:0 +00 00 CC:1 +00 55 00 00 00 00 55 55 00 00 00 2A 00 55 00 00 00 00 00 0A +XC: +CC:0 +00 61 61 61 CC:0 +00 00 00 00 00 00 00 00 00 00 61 61 CC:0 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 61 CC:0 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 CC:0 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 61 61 61 61 61 61 61 61 CC:1 +7F 00 55 7F 55 2A 00 00 7F 2A 7F 00 6B 00 6B 41 2A 55 55 0A CC:0 +00 00 00 00 00 00 00 00 00 00 61 62 63 64 65 66 67 68 69 6A \ No newline at end of file diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.vgtest new file mode 100644 index 000000000..964d1f393 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.vgtest @@ -0,0 +1 @@ +prog: xc diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.c new file mode 100644 index 000000000..8dc665d82 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.c @@ -0,0 +1,52 @@ +#include +#include "xor.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + memimmsweep(xi, 0); + memimmsweep(xi, 255); + memimmsweep(xi, 128); + memimmsweep(xi, 0xaa); + memimmsweep(xi, 0x55); + xiysweep(00); + xiysweep(ff); + xiysweep(80); + xiysweep(aa); + xiysweep(55); +} + + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(x, s2); + memsweep(xg, s2); + regsweep(xr, s2); + regsweep(xgr, s2); + xysweep(s2); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x5555555555555555ul); + do_regmem_insns(0xaaaaaaaaaaaaaaaaul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xaaaaaaaa00000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x0000000055555555ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.h b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.h new file mode 100644 index 000000000..c73651ab4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.h @@ -0,0 +1,182 @@ +#include + +/* Dummy variable. Needed to work around GCC code generation bugs */ +volatile long v; + +#define XOR_REG_MEM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "Q" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define XOR_REG_REG(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0, %3\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d" (s2) \ + : "0", "cc"); \ + printf(#insn " %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define XOR_REG_IMM(insn, s1, s2) \ +({ \ + register unsigned long tmp asm("2") = s1; \ + int cc; \ + asm volatile( insn(2,s2) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp) \ + : "cc"); \ + v = tmp; /* work around GCC code gen bug */ \ + printf(#insn " %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##s2, v, cc); \ +}) + +#define XOR_MEM_IMM(insn, s1, s2) \ +({ \ + unsigned long tmp = s1; \ + int cc; \ + asm volatile( #insn " %0," #s2 "\n" \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp) \ + : "0", "cc"); \ + printf(#insn " %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) s2, tmp, cc); \ +}) + + +#define memsweep(i, s2) \ +({ \ + XOR_REG_MEM(i, 0ul, s2); \ + XOR_REG_MEM(i, 1ul, s2); \ + XOR_REG_MEM(i, 0xfffful, s2); \ + XOR_REG_MEM(i, 0x7ffful, s2); \ + XOR_REG_MEM(i, 0x8000ul, s2); \ + XOR_REG_MEM(i, 0xfffffffful, s2); \ + XOR_REG_MEM(i, 0x80000000ul, s2); \ + XOR_REG_MEM(i, 0x7ffffffful, s2); \ + XOR_REG_MEM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_REG_MEM(i, 0x8000000000000000ul, s2); \ + XOR_REG_MEM(i, 0xfffffffffffffffful, s2); \ + XOR_REG_MEM(i, 0x5555555555555555ul, s2); \ +}) + +#define regsweep(i, s2) \ +({ \ + XOR_REG_REG(i, 0ul, s2); \ + XOR_REG_REG(i, 1ul, s2); \ + XOR_REG_REG(i, 0xfffful, s2); \ + XOR_REG_REG(i, 0x7ffful, s2); \ + XOR_REG_REG(i, 0x8000ul, s2); \ + XOR_REG_REG(i, 0xfffffffful, s2); \ + XOR_REG_REG(i, 0x80000000ul, s2); \ + XOR_REG_REG(i, 0x7ffffffful, s2); \ + XOR_REG_REG(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_REG_REG(i, 0x8000000000000000ul, s2); \ + XOR_REG_REG(i, 0xfffffffffffffffful, s2); \ + XOR_REG_REG(i, 0x5555555555555555ul, s2); \ +}) + +#define immsweep(i, s2) \ +({ \ + XOR_REG_IMM(i, 0ul, s2); \ + XOR_REG_IMM(i, 1ul, s2); \ + XOR_REG_IMM(i, 0xfffful, s2); \ + XOR_REG_IMM(i, 0x7ffful, s2); \ + XOR_REG_IMM(i, 0x8000ul, s2); \ + XOR_REG_IMM(i, 0xfffffffful, s2); \ + XOR_REG_IMM(i, 0x80000000ul, s2); \ + XOR_REG_IMM(i, 0x7ffffffful, s2); \ + XOR_REG_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_REG_IMM(i, 0x8000000000000000ul, s2); \ + XOR_REG_IMM(i, 0xfffffffffffffffful, s2); \ + XOR_REG_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define memimmsweep(i, s2) \ +({ \ + XOR_MEM_IMM(i, 0ul, s2); \ + XOR_MEM_IMM(i, 1ul, s2); \ + XOR_MEM_IMM(i, 0xfffful, s2); \ + XOR_MEM_IMM(i, 0x7ffful, s2); \ + XOR_MEM_IMM(i, 0x8000ul, s2); \ + XOR_MEM_IMM(i, 0xfffffffful, s2); \ + XOR_MEM_IMM(i, 0x80000000ul, s2); \ + XOR_MEM_IMM(i, 0x7ffffffful, s2); \ + XOR_MEM_IMM(i, 0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_MEM_IMM(i, 0x8000000000000000ul, s2); \ + XOR_MEM_IMM(i, 0xfffffffffffffffful, s2); \ + XOR_MEM_IMM(i, 0x5555555555555555ul, s2); \ +}) + +#define XOR_XY(s1, s2) \ +({ \ + register unsigned long tmp asm("1") = s1; \ + register unsigned long *addr asm("2") = &s2; \ + int cc; \ + asm volatile( XY(1,0,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+d" (tmp), "=d" (cc) \ + : "d" (tmp), "d"(addr) \ + : "cc"); \ + printf("xy %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ +}) + +#define XOR_XIY(s1, i2) \ +({ \ + unsigned long tmp = s1; \ + register unsigned long *addr asm("2") = &tmp; \ + int cc; \ + asm volatile( XIY(i2,2,000,00) \ + "ipm %1\n" \ + "srl %1,28\n" \ + : "+Q" (tmp), "=d" (cc) \ + : "Q" (tmp), "d" (addr) \ + : "cc"); \ + printf("xiy %16.16lX ^ %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##i2, tmp, cc); \ +}) + +#define xysweep(s2) \ +({ \ + XOR_XY(0ul, s2); \ + XOR_XY(1ul, s2); \ + XOR_XY(0xfffful, s2); \ + XOR_XY(0x7ffful, s2); \ + XOR_XY(0x8000ul, s2); \ + XOR_XY(0xfffffffful, s2); \ + XOR_XY(0x80000000ul, s2); \ + XOR_XY(0x7ffffffful, s2); \ + XOR_XY(0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_XY(0x8000000000000000ul, s2); \ + XOR_XY(0xfffffffffffffffful, s2); \ + XOR_XY(0x5555555555555555ul, s2); \ +}) + +#define xiysweep(s2) \ +({ \ + XOR_XIY(0ul, s2); \ + XOR_XIY(1ul, s2); \ + XOR_XIY(0xfffful, s2); \ + XOR_XIY(0x7ffful, s2); \ + XOR_XIY(0x8000ul, s2); \ + XOR_XIY(0xfffffffful, s2); \ + XOR_XIY(0x80000000ul, s2); \ + XOR_XIY(0x7ffffffful, s2); \ + XOR_XIY(0xaaaaaaaaaaaaaaaaul, s2); \ + XOR_XIY(0x8000000000000000ul, s2); \ + XOR_XIY(0xfffffffffffffffful, s2); \ + XOR_XIY(0x5555555555555555ul, s2); \ +}) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stdout.exp new file mode 100644 index 000000000..d33a555d4 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.stdout.exp @@ -0,0 +1,1140 @@ +x 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +x 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xg 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +xg 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +xg 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +xg 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +xg 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +xg 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +xg 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xg 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xg 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xr 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xgr 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +xgr 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +xgr 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +xgr 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +xgr 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +xgr 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +xgr 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xgr 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xgr 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xy 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +x 0000000000000000 ^ 5555555555555555 = 0000000055555555 (cc=1) +x 0000000000000001 ^ 5555555555555555 = 0000000055555554 (cc=1) +x 000000000000FFFF ^ 5555555555555555 = 000000005555AAAA (cc=1) +x 0000000000007FFF ^ 5555555555555555 = 0000000055552AAA (cc=1) +x 0000000000008000 ^ 5555555555555555 = 000000005555D555 (cc=1) +x 00000000FFFFFFFF ^ 5555555555555555 = 00000000AAAAAAAA (cc=1) +x 0000000080000000 ^ 5555555555555555 = 00000000D5555555 (cc=1) +x 000000007FFFFFFF ^ 5555555555555555 = 000000002AAAAAAA (cc=1) +x AAAAAAAAAAAAAAAA ^ 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +x 8000000000000000 ^ 5555555555555555 = 8000000055555555 (cc=1) +x FFFFFFFFFFFFFFFF ^ 5555555555555555 = FFFFFFFFAAAAAAAA (cc=1) +x 5555555555555555 ^ 5555555555555555 = 5555555500000000 (cc=0) +xg 0000000000000000 ^ 5555555555555555 = 5555555555555555 (cc=1) +xg 0000000000000001 ^ 5555555555555555 = 5555555555555554 (cc=1) +xg 000000000000FFFF ^ 5555555555555555 = 555555555555AAAA (cc=1) +xg 0000000000007FFF ^ 5555555555555555 = 5555555555552AAA (cc=1) +xg 0000000000008000 ^ 5555555555555555 = 555555555555D555 (cc=1) +xg 00000000FFFFFFFF ^ 5555555555555555 = 55555555AAAAAAAA (cc=1) +xg 0000000080000000 ^ 5555555555555555 = 55555555D5555555 (cc=1) +xg 000000007FFFFFFF ^ 5555555555555555 = 555555552AAAAAAA (cc=1) +xg AAAAAAAAAAAAAAAA ^ 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +xg 8000000000000000 ^ 5555555555555555 = D555555555555555 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 5555555555555555 = AAAAAAAAAAAAAAAA (cc=1) +xg 5555555555555555 ^ 5555555555555555 = 0000000000000000 (cc=0) +xr 0000000000000000 ^ 5555555555555555 = 0000000055555555 (cc=1) +xr 0000000000000001 ^ 5555555555555555 = 0000000055555554 (cc=1) +xr 000000000000FFFF ^ 5555555555555555 = 000000005555AAAA (cc=1) +xr 0000000000007FFF ^ 5555555555555555 = 0000000055552AAA (cc=1) +xr 0000000000008000 ^ 5555555555555555 = 000000005555D555 (cc=1) +xr 00000000FFFFFFFF ^ 5555555555555555 = 00000000AAAAAAAA (cc=1) +xr 0000000080000000 ^ 5555555555555555 = 00000000D5555555 (cc=1) +xr 000000007FFFFFFF ^ 5555555555555555 = 000000002AAAAAAA (cc=1) +xr AAAAAAAAAAAAAAAA ^ 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +xr 8000000000000000 ^ 5555555555555555 = 8000000055555555 (cc=1) +xr FFFFFFFFFFFFFFFF ^ 5555555555555555 = FFFFFFFFAAAAAAAA (cc=1) +xr 5555555555555555 ^ 5555555555555555 = 5555555500000000 (cc=0) +xgr 0000000000000000 ^ 5555555555555555 = 5555555555555555 (cc=1) +xgr 0000000000000001 ^ 5555555555555555 = 5555555555555554 (cc=1) +xgr 000000000000FFFF ^ 5555555555555555 = 555555555555AAAA (cc=1) +xgr 0000000000007FFF ^ 5555555555555555 = 5555555555552AAA (cc=1) +xgr 0000000000008000 ^ 5555555555555555 = 555555555555D555 (cc=1) +xgr 00000000FFFFFFFF ^ 5555555555555555 = 55555555AAAAAAAA (cc=1) +xgr 0000000080000000 ^ 5555555555555555 = 55555555D5555555 (cc=1) +xgr 000000007FFFFFFF ^ 5555555555555555 = 555555552AAAAAAA (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 5555555555555555 = FFFFFFFFFFFFFFFF (cc=1) +xgr 8000000000000000 ^ 5555555555555555 = D555555555555555 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 5555555555555555 = AAAAAAAAAAAAAAAA (cc=1) +xgr 5555555555555555 ^ 5555555555555555 = 0000000000000000 (cc=0) +xy 0000000000000000 ^ 5555555555555555 = 0000000055555555 (cc=1) +xy 0000000000000001 ^ 5555555555555555 = 0000000055555554 (cc=1) +xy 000000000000FFFF ^ 5555555555555555 = 000000005555AAAA (cc=1) +xy 0000000000007FFF ^ 5555555555555555 = 0000000055552AAA (cc=1) +xy 0000000000008000 ^ 5555555555555555 = 000000005555D555 (cc=1) +xy 00000000FFFFFFFF ^ 5555555555555555 = 00000000AAAAAAAA (cc=1) +xy 0000000080000000 ^ 5555555555555555 = 00000000D5555555 (cc=1) +xy 000000007FFFFFFF ^ 5555555555555555 = 000000002AAAAAAA (cc=1) +xy AAAAAAAAAAAAAAAA ^ 5555555555555555 = AAAAAAAAFFFFFFFF (cc=1) +xy 8000000000000000 ^ 5555555555555555 = 8000000055555555 (cc=1) +xy FFFFFFFFFFFFFFFF ^ 5555555555555555 = FFFFFFFFAAAAAAAA (cc=1) +xy 5555555555555555 ^ 5555555555555555 = 5555555500000000 (cc=0) +x 0000000000000000 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +x 0000000000000001 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +x 000000000000FFFF ^ AAAAAAAAAAAAAAAA = 00000000AAAA5555 (cc=1) +x 0000000000007FFF ^ AAAAAAAAAAAAAAAA = 00000000AAAAD555 (cc=1) +x 0000000000008000 ^ AAAAAAAAAAAAAAAA = 00000000AAAA2AAA (cc=1) +x 00000000FFFFFFFF ^ AAAAAAAAAAAAAAAA = 0000000055555555 (cc=1) +x 0000000080000000 ^ AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +x 000000007FFFFFFF ^ AAAAAAAAAAAAAAAA = 00000000D5555555 (cc=1) +x AAAAAAAAAAAAAAAA ^ AAAAAAAAAAAAAAAA = AAAAAAAA00000000 (cc=0) +x 8000000000000000 ^ AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +x FFFFFFFFFFFFFFFF ^ AAAAAAAAAAAAAAAA = FFFFFFFF55555555 (cc=1) +x 5555555555555555 ^ AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +xg 0000000000000000 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +xg 0000000000000001 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAB (cc=1) +xg 000000000000FFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAA5555 (cc=1) +xg 0000000000007FFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAD555 (cc=1) +xg 0000000000008000 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAA2AAA (cc=1) +xg 00000000FFFFFFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAA55555555 (cc=1) +xg 0000000080000000 ^ AAAAAAAAAAAAAAAA = AAAAAAAA2AAAAAAA (cc=1) +xg 000000007FFFFFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAD5555555 (cc=1) +xg AAAAAAAAAAAAAAAA ^ AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +xg 8000000000000000 ^ AAAAAAAAAAAAAAAA = 2AAAAAAAAAAAAAAA (cc=1) +xg FFFFFFFFFFFFFFFF ^ AAAAAAAAAAAAAAAA = 5555555555555555 (cc=1) +xg 5555555555555555 ^ AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +xr 0000000000000000 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +xr 0000000000000001 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +xr 000000000000FFFF ^ AAAAAAAAAAAAAAAA = 00000000AAAA5555 (cc=1) +xr 0000000000007FFF ^ AAAAAAAAAAAAAAAA = 00000000AAAAD555 (cc=1) +xr 0000000000008000 ^ AAAAAAAAAAAAAAAA = 00000000AAAA2AAA (cc=1) +xr 00000000FFFFFFFF ^ AAAAAAAAAAAAAAAA = 0000000055555555 (cc=1) +xr 0000000080000000 ^ AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +xr 000000007FFFFFFF ^ AAAAAAAAAAAAAAAA = 00000000D5555555 (cc=1) +xr AAAAAAAAAAAAAAAA ^ AAAAAAAAAAAAAAAA = AAAAAAAA00000000 (cc=0) +xr 8000000000000000 ^ AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +xr FFFFFFFFFFFFFFFF ^ AAAAAAAAAAAAAAAA = FFFFFFFF55555555 (cc=1) +xr 5555555555555555 ^ AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +xgr 0000000000000000 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAA (cc=1) +xgr 0000000000000001 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAAAAB (cc=1) +xgr 000000000000FFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAA5555 (cc=1) +xgr 0000000000007FFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAAD555 (cc=1) +xgr 0000000000008000 ^ AAAAAAAAAAAAAAAA = AAAAAAAAAAAA2AAA (cc=1) +xgr 00000000FFFFFFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAA55555555 (cc=1) +xgr 0000000080000000 ^ AAAAAAAAAAAAAAAA = AAAAAAAA2AAAAAAA (cc=1) +xgr 000000007FFFFFFF ^ AAAAAAAAAAAAAAAA = AAAAAAAAD5555555 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ AAAAAAAAAAAAAAAA = 0000000000000000 (cc=0) +xgr 8000000000000000 ^ AAAAAAAAAAAAAAAA = 2AAAAAAAAAAAAAAA (cc=1) +xgr FFFFFFFFFFFFFFFF ^ AAAAAAAAAAAAAAAA = 5555555555555555 (cc=1) +xgr 5555555555555555 ^ AAAAAAAAAAAAAAAA = FFFFFFFFFFFFFFFF (cc=1) +xy 0000000000000000 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAA (cc=1) +xy 0000000000000001 ^ AAAAAAAAAAAAAAAA = 00000000AAAAAAAB (cc=1) +xy 000000000000FFFF ^ AAAAAAAAAAAAAAAA = 00000000AAAA5555 (cc=1) +xy 0000000000007FFF ^ AAAAAAAAAAAAAAAA = 00000000AAAAD555 (cc=1) +xy 0000000000008000 ^ AAAAAAAAAAAAAAAA = 00000000AAAA2AAA (cc=1) +xy 00000000FFFFFFFF ^ AAAAAAAAAAAAAAAA = 0000000055555555 (cc=1) +xy 0000000080000000 ^ AAAAAAAAAAAAAAAA = 000000002AAAAAAA (cc=1) +xy 000000007FFFFFFF ^ AAAAAAAAAAAAAAAA = 00000000D5555555 (cc=1) +xy AAAAAAAAAAAAAAAA ^ AAAAAAAAAAAAAAAA = AAAAAAAA00000000 (cc=0) +xy 8000000000000000 ^ AAAAAAAAAAAAAAAA = 80000000AAAAAAAA (cc=1) +xy FFFFFFFFFFFFFFFF ^ AAAAAAAAAAAAAAAA = FFFFFFFF55555555 (cc=1) +xy 5555555555555555 ^ AAAAAAAAAAAAAAAA = 55555555FFFFFFFF (cc=1) +x 0000000000000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +x 0000000000000001 ^ 8000000000000000 = 0000000080000001 (cc=1) +x 000000000000FFFF ^ 8000000000000000 = 000000008000FFFF (cc=1) +x 0000000000007FFF ^ 8000000000000000 = 0000000080007FFF (cc=1) +x 0000000000008000 ^ 8000000000000000 = 0000000080008000 (cc=1) +x 00000000FFFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +x 0000000080000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +x 000000007FFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAA2AAAAAAA (cc=1) +x 8000000000000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +x FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +x 5555555555555555 ^ 8000000000000000 = 55555555D5555555 (cc=1) +xg 0000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=1) +xg 0000000000000001 ^ 8000000000000000 = 8000000000000001 (cc=1) +xg 000000000000FFFF ^ 8000000000000000 = 800000000000FFFF (cc=1) +xg 0000000000007FFF ^ 8000000000000000 = 8000000000007FFF (cc=1) +xg 0000000000008000 ^ 8000000000000000 = 8000000000008000 (cc=1) +xg 00000000FFFFFFFF ^ 8000000000000000 = 80000000FFFFFFFF (cc=1) +xg 0000000080000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xg 000000007FFFFFFF ^ 8000000000000000 = 800000007FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 8000000000000000 = 2AAAAAAAAAAAAAAA (cc=1) +xg 8000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xg FFFFFFFFFFFFFFFF ^ 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +xg 5555555555555555 ^ 8000000000000000 = D555555555555555 (cc=1) +xr 0000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ 8000000000000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ 8000000000000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ 8000000000000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ 8000000000000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ 8000000000000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=1) +xgr 0000000000000001 ^ 8000000000000000 = 8000000000000001 (cc=1) +xgr 000000000000FFFF ^ 8000000000000000 = 800000000000FFFF (cc=1) +xgr 0000000000007FFF ^ 8000000000000000 = 8000000000007FFF (cc=1) +xgr 0000000000008000 ^ 8000000000000000 = 8000000000008000 (cc=1) +xgr 00000000FFFFFFFF ^ 8000000000000000 = 80000000FFFFFFFF (cc=1) +xgr 0000000080000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xgr 000000007FFFFFFF ^ 8000000000000000 = 800000007FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 8000000000000000 = 2AAAAAAAAAAAAAAA (cc=1) +xgr 8000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xgr FFFFFFFFFFFFFFFF ^ 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +xgr 5555555555555555 ^ 8000000000000000 = D555555555555555 (cc=1) +xy 0000000000000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +xy 0000000000000001 ^ 8000000000000000 = 0000000080000001 (cc=1) +xy 000000000000FFFF ^ 8000000000000000 = 000000008000FFFF (cc=1) +xy 0000000000007FFF ^ 8000000000000000 = 0000000080007FFF (cc=1) +xy 0000000000008000 ^ 8000000000000000 = 0000000080008000 (cc=1) +xy 00000000FFFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +xy 0000000080000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xy 000000007FFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAA2AAAAAAA (cc=1) +xy 8000000000000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xy FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +xy 5555555555555555 ^ 8000000000000000 = 55555555D5555555 (cc=1) +x 0000000000000000 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +x 0000000000000001 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +x 000000000000FFFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF0000 (cc=1) +x 0000000000007FFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF8000 (cc=1) +x 0000000000008000 ^ FFFFFFFFFFFFFFFF = 00000000FFFF7FFF (cc=1) +x 00000000FFFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +x 0000000080000000 ^ FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +x 000000007FFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +x AAAAAAAAAAAAAAAA ^ FFFFFFFFFFFFFFFF = AAAAAAAA55555555 (cc=1) +x 8000000000000000 ^ FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +x FFFFFFFFFFFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=0) +x 5555555555555555 ^ FFFFFFFFFFFFFFFF = 55555555AAAAAAAA (cc=1) +xg 0000000000000000 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +xg 0000000000000001 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +xg 000000000000FFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0000 (cc=1) +xg 0000000000007FFF ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF8000 (cc=1) +xg 0000000000008000 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF7FFF (cc=1) +xg 00000000FFFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=1) +xg 0000000080000000 ^ FFFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +xg 000000007FFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF80000000 (cc=1) +xg AAAAAAAAAAAAAAAA ^ FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +xg 8000000000000000 ^ FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +xg 5555555555555555 ^ FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +xr 0000000000000000 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +xr 0000000000000001 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +xr 000000000000FFFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF0000 (cc=1) +xr 0000000000007FFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF8000 (cc=1) +xr 0000000000008000 ^ FFFFFFFFFFFFFFFF = 00000000FFFF7FFF (cc=1) +xr 00000000FFFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +xr 0000000080000000 ^ FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +xr 000000007FFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +xr AAAAAAAAAAAAAAAA ^ FFFFFFFFFFFFFFFF = AAAAAAAA55555555 (cc=1) +xr 8000000000000000 ^ FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=0) +xr 5555555555555555 ^ FFFFFFFFFFFFFFFF = 55555555AAAAAAAA (cc=1) +xgr 0000000000000000 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +xgr 0000000000000001 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFFFFFE (cc=1) +xgr 000000000000FFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF0000 (cc=1) +xgr 0000000000007FFF ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF8000 (cc=1) +xgr 0000000000008000 ^ FFFFFFFFFFFFFFFF = FFFFFFFFFFFF7FFF (cc=1) +xgr 00000000FFFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=1) +xgr 0000000080000000 ^ FFFFFFFFFFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +xgr 000000007FFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF80000000 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ FFFFFFFFFFFFFFFF = 5555555555555555 (cc=1) +xgr 8000000000000000 ^ FFFFFFFFFFFFFFFF = 7FFFFFFFFFFFFFFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +xgr 5555555555555555 ^ FFFFFFFFFFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +xy 0000000000000000 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFF (cc=1) +xy 0000000000000001 ^ FFFFFFFFFFFFFFFF = 00000000FFFFFFFE (cc=1) +xy 000000000000FFFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF0000 (cc=1) +xy 0000000000007FFF ^ FFFFFFFFFFFFFFFF = 00000000FFFF8000 (cc=1) +xy 0000000000008000 ^ FFFFFFFFFFFFFFFF = 00000000FFFF7FFF (cc=1) +xy 00000000FFFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000000000000 (cc=0) +xy 0000000080000000 ^ FFFFFFFFFFFFFFFF = 000000007FFFFFFF (cc=1) +xy 000000007FFFFFFF ^ FFFFFFFFFFFFFFFF = 0000000080000000 (cc=1) +xy AAAAAAAAAAAAAAAA ^ FFFFFFFFFFFFFFFF = AAAAAAAA55555555 (cc=1) +xy 8000000000000000 ^ FFFFFFFFFFFFFFFF = 80000000FFFFFFFF (cc=1) +xy FFFFFFFFFFFFFFFF ^ FFFFFFFFFFFFFFFF = FFFFFFFF00000000 (cc=0) +xy 5555555555555555 ^ FFFFFFFFFFFFFFFF = 55555555AAAAAAAA (cc=1) +x 0000000000000000 ^ 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +x 0000000000000001 ^ 7FFFFFFF00000000 = 000000007FFFFFFE (cc=1) +x 000000000000FFFF ^ 7FFFFFFF00000000 = 000000007FFF0000 (cc=1) +x 0000000000007FFF ^ 7FFFFFFF00000000 = 000000007FFF8000 (cc=1) +x 0000000000008000 ^ 7FFFFFFF00000000 = 000000007FFF7FFF (cc=1) +x 00000000FFFFFFFF ^ 7FFFFFFF00000000 = 0000000080000000 (cc=1) +x 0000000080000000 ^ 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +x 000000007FFFFFFF ^ 7FFFFFFF00000000 = 0000000000000000 (cc=0) +x AAAAAAAAAAAAAAAA ^ 7FFFFFFF00000000 = AAAAAAAAD5555555 (cc=1) +x 8000000000000000 ^ 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +x FFFFFFFFFFFFFFFF ^ 7FFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +x 5555555555555555 ^ 7FFFFFFF00000000 = 555555552AAAAAAA (cc=1) +xg 0000000000000000 ^ 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +xg 0000000000000001 ^ 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +xg 000000000000FFFF ^ 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +xg 0000000000007FFF ^ 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +xg 0000000000008000 ^ 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +xg 00000000FFFFFFFF ^ 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +xg 0000000080000000 ^ 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +xg 000000007FFFFFFF ^ 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 7FFFFFFF00000000 = D5555555AAAAAAAA (cc=1) +xg 8000000000000000 ^ 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 7FFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +xg 5555555555555555 ^ 7FFFFFFF00000000 = 2AAAAAAA55555555 (cc=1) +xr 0000000000000000 ^ 7FFFFFFF00000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ 7FFFFFFF00000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ 7FFFFFFF00000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ 7FFFFFFF00000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ 7FFFFFFF00000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ 7FFFFFFF00000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 7FFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ 7FFFFFFF00000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ 7FFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ 7FFFFFFF00000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ 7FFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +xgr 0000000000000001 ^ 7FFFFFFF00000000 = 7FFFFFFF00000001 (cc=1) +xgr 000000000000FFFF ^ 7FFFFFFF00000000 = 7FFFFFFF0000FFFF (cc=1) +xgr 0000000000007FFF ^ 7FFFFFFF00000000 = 7FFFFFFF00007FFF (cc=1) +xgr 0000000000008000 ^ 7FFFFFFF00000000 = 7FFFFFFF00008000 (cc=1) +xgr 00000000FFFFFFFF ^ 7FFFFFFF00000000 = 7FFFFFFFFFFFFFFF (cc=1) +xgr 0000000080000000 ^ 7FFFFFFF00000000 = 7FFFFFFF80000000 (cc=1) +xgr 000000007FFFFFFF ^ 7FFFFFFF00000000 = 7FFFFFFF7FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 7FFFFFFF00000000 = D5555555AAAAAAAA (cc=1) +xgr 8000000000000000 ^ 7FFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 7FFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +xgr 5555555555555555 ^ 7FFFFFFF00000000 = 2AAAAAAA55555555 (cc=1) +xy 0000000000000000 ^ 7FFFFFFF00000000 = 000000007FFFFFFF (cc=1) +xy 0000000000000001 ^ 7FFFFFFF00000000 = 000000007FFFFFFE (cc=1) +xy 000000000000FFFF ^ 7FFFFFFF00000000 = 000000007FFF0000 (cc=1) +xy 0000000000007FFF ^ 7FFFFFFF00000000 = 000000007FFF8000 (cc=1) +xy 0000000000008000 ^ 7FFFFFFF00000000 = 000000007FFF7FFF (cc=1) +xy 00000000FFFFFFFF ^ 7FFFFFFF00000000 = 0000000080000000 (cc=1) +xy 0000000080000000 ^ 7FFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xy 000000007FFFFFFF ^ 7FFFFFFF00000000 = 0000000000000000 (cc=0) +xy AAAAAAAAAAAAAAAA ^ 7FFFFFFF00000000 = AAAAAAAAD5555555 (cc=1) +xy 8000000000000000 ^ 7FFFFFFF00000000 = 800000007FFFFFFF (cc=1) +xy FFFFFFFFFFFFFFFF ^ 7FFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +xy 5555555555555555 ^ 7FFFFFFF00000000 = 555555552AAAAAAA (cc=1) +x 0000000000000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +x 0000000000000001 ^ 8000000000000000 = 0000000080000001 (cc=1) +x 000000000000FFFF ^ 8000000000000000 = 000000008000FFFF (cc=1) +x 0000000000007FFF ^ 8000000000000000 = 0000000080007FFF (cc=1) +x 0000000000008000 ^ 8000000000000000 = 0000000080008000 (cc=1) +x 00000000FFFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +x 0000000080000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +x 000000007FFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAA2AAAAAAA (cc=1) +x 8000000000000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +x FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +x 5555555555555555 ^ 8000000000000000 = 55555555D5555555 (cc=1) +xg 0000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=1) +xg 0000000000000001 ^ 8000000000000000 = 8000000000000001 (cc=1) +xg 000000000000FFFF ^ 8000000000000000 = 800000000000FFFF (cc=1) +xg 0000000000007FFF ^ 8000000000000000 = 8000000000007FFF (cc=1) +xg 0000000000008000 ^ 8000000000000000 = 8000000000008000 (cc=1) +xg 00000000FFFFFFFF ^ 8000000000000000 = 80000000FFFFFFFF (cc=1) +xg 0000000080000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xg 000000007FFFFFFF ^ 8000000000000000 = 800000007FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 8000000000000000 = 2AAAAAAAAAAAAAAA (cc=1) +xg 8000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xg FFFFFFFFFFFFFFFF ^ 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +xg 5555555555555555 ^ 8000000000000000 = D555555555555555 (cc=1) +xr 0000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ 8000000000000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ 8000000000000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ 8000000000000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ 8000000000000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ 8000000000000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ 8000000000000000 = 8000000000000000 (cc=1) +xgr 0000000000000001 ^ 8000000000000000 = 8000000000000001 (cc=1) +xgr 000000000000FFFF ^ 8000000000000000 = 800000000000FFFF (cc=1) +xgr 0000000000007FFF ^ 8000000000000000 = 8000000000007FFF (cc=1) +xgr 0000000000008000 ^ 8000000000000000 = 8000000000008000 (cc=1) +xgr 00000000FFFFFFFF ^ 8000000000000000 = 80000000FFFFFFFF (cc=1) +xgr 0000000080000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xgr 000000007FFFFFFF ^ 8000000000000000 = 800000007FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 8000000000000000 = 2AAAAAAAAAAAAAAA (cc=1) +xgr 8000000000000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xgr FFFFFFFFFFFFFFFF ^ 8000000000000000 = 7FFFFFFFFFFFFFFF (cc=1) +xgr 5555555555555555 ^ 8000000000000000 = D555555555555555 (cc=1) +xy 0000000000000000 ^ 8000000000000000 = 0000000080000000 (cc=1) +xy 0000000000000001 ^ 8000000000000000 = 0000000080000001 (cc=1) +xy 000000000000FFFF ^ 8000000000000000 = 000000008000FFFF (cc=1) +xy 0000000000007FFF ^ 8000000000000000 = 0000000080007FFF (cc=1) +xy 0000000000008000 ^ 8000000000000000 = 0000000080008000 (cc=1) +xy 00000000FFFFFFFF ^ 8000000000000000 = 000000007FFFFFFF (cc=1) +xy 0000000080000000 ^ 8000000000000000 = 0000000000000000 (cc=0) +xy 000000007FFFFFFF ^ 8000000000000000 = 00000000FFFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 8000000000000000 = AAAAAAAA2AAAAAAA (cc=1) +xy 8000000000000000 ^ 8000000000000000 = 8000000080000000 (cc=1) +xy FFFFFFFFFFFFFFFF ^ 8000000000000000 = FFFFFFFF7FFFFFFF (cc=1) +xy 5555555555555555 ^ 8000000000000000 = 55555555D5555555 (cc=1) +x 0000000000000000 ^ AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +x 0000000000000001 ^ AAAAAAAA00000000 = 00000000AAAAAAAB (cc=1) +x 000000000000FFFF ^ AAAAAAAA00000000 = 00000000AAAA5555 (cc=1) +x 0000000000007FFF ^ AAAAAAAA00000000 = 00000000AAAAD555 (cc=1) +x 0000000000008000 ^ AAAAAAAA00000000 = 00000000AAAA2AAA (cc=1) +x 00000000FFFFFFFF ^ AAAAAAAA00000000 = 0000000055555555 (cc=1) +x 0000000080000000 ^ AAAAAAAA00000000 = 000000002AAAAAAA (cc=1) +x 000000007FFFFFFF ^ AAAAAAAA00000000 = 00000000D5555555 (cc=1) +x AAAAAAAAAAAAAAAA ^ AAAAAAAA00000000 = AAAAAAAA00000000 (cc=0) +x 8000000000000000 ^ AAAAAAAA00000000 = 80000000AAAAAAAA (cc=1) +x FFFFFFFFFFFFFFFF ^ AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +x 5555555555555555 ^ AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +xg 0000000000000000 ^ AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +xg 0000000000000001 ^ AAAAAAAA00000000 = AAAAAAAA00000001 (cc=1) +xg 000000000000FFFF ^ AAAAAAAA00000000 = AAAAAAAA0000FFFF (cc=1) +xg 0000000000007FFF ^ AAAAAAAA00000000 = AAAAAAAA00007FFF (cc=1) +xg 0000000000008000 ^ AAAAAAAA00000000 = AAAAAAAA00008000 (cc=1) +xg 00000000FFFFFFFF ^ AAAAAAAA00000000 = AAAAAAAAFFFFFFFF (cc=1) +xg 0000000080000000 ^ AAAAAAAA00000000 = AAAAAAAA80000000 (cc=1) +xg 000000007FFFFFFF ^ AAAAAAAA00000000 = AAAAAAAA7FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +xg 8000000000000000 ^ AAAAAAAA00000000 = 2AAAAAAA00000000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +xg 5555555555555555 ^ AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +xr 0000000000000000 ^ AAAAAAAA00000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ AAAAAAAA00000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ AAAAAAAA00000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ AAAAAAAA00000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ AAAAAAAA00000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ AAAAAAAA00000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ AAAAAAAA00000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ AAAAAAAA00000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ AAAAAAAA00000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ AAAAAAAA00000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ AAAAAAAA00000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ AAAAAAAA00000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ AAAAAAAA00000000 = AAAAAAAA00000000 (cc=1) +xgr 0000000000000001 ^ AAAAAAAA00000000 = AAAAAAAA00000001 (cc=1) +xgr 000000000000FFFF ^ AAAAAAAA00000000 = AAAAAAAA0000FFFF (cc=1) +xgr 0000000000007FFF ^ AAAAAAAA00000000 = AAAAAAAA00007FFF (cc=1) +xgr 0000000000008000 ^ AAAAAAAA00000000 = AAAAAAAA00008000 (cc=1) +xgr 00000000FFFFFFFF ^ AAAAAAAA00000000 = AAAAAAAAFFFFFFFF (cc=1) +xgr 0000000080000000 ^ AAAAAAAA00000000 = AAAAAAAA80000000 (cc=1) +xgr 000000007FFFFFFF ^ AAAAAAAA00000000 = AAAAAAAA7FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +xgr 8000000000000000 ^ AAAAAAAA00000000 = 2AAAAAAA00000000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +xgr 5555555555555555 ^ AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +xy 0000000000000000 ^ AAAAAAAA00000000 = 00000000AAAAAAAA (cc=1) +xy 0000000000000001 ^ AAAAAAAA00000000 = 00000000AAAAAAAB (cc=1) +xy 000000000000FFFF ^ AAAAAAAA00000000 = 00000000AAAA5555 (cc=1) +xy 0000000000007FFF ^ AAAAAAAA00000000 = 00000000AAAAD555 (cc=1) +xy 0000000000008000 ^ AAAAAAAA00000000 = 00000000AAAA2AAA (cc=1) +xy 00000000FFFFFFFF ^ AAAAAAAA00000000 = 0000000055555555 (cc=1) +xy 0000000080000000 ^ AAAAAAAA00000000 = 000000002AAAAAAA (cc=1) +xy 000000007FFFFFFF ^ AAAAAAAA00000000 = 00000000D5555555 (cc=1) +xy AAAAAAAAAAAAAAAA ^ AAAAAAAA00000000 = AAAAAAAA00000000 (cc=0) +xy 8000000000000000 ^ AAAAAAAA00000000 = 80000000AAAAAAAA (cc=1) +xy FFFFFFFFFFFFFFFF ^ AAAAAAAA00000000 = FFFFFFFF55555555 (cc=1) +xy 5555555555555555 ^ AAAAAAAA00000000 = 55555555FFFFFFFF (cc=1) +x 0000000000000000 ^ FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +x 0000000000000001 ^ FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +x 000000000000FFFF ^ FFFFFFFF00000000 = 00000000FFFF0000 (cc=1) +x 0000000000007FFF ^ FFFFFFFF00000000 = 00000000FFFF8000 (cc=1) +x 0000000000008000 ^ FFFFFFFF00000000 = 00000000FFFF7FFF (cc=1) +x 00000000FFFFFFFF ^ FFFFFFFF00000000 = 0000000000000000 (cc=0) +x 0000000080000000 ^ FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +x 000000007FFFFFFF ^ FFFFFFFF00000000 = 0000000080000000 (cc=1) +x AAAAAAAAAAAAAAAA ^ FFFFFFFF00000000 = AAAAAAAA55555555 (cc=1) +x 8000000000000000 ^ FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +x FFFFFFFFFFFFFFFF ^ FFFFFFFF00000000 = FFFFFFFF00000000 (cc=0) +x 5555555555555555 ^ FFFFFFFF00000000 = 55555555AAAAAAAA (cc=1) +xg 0000000000000000 ^ FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +xg 0000000000000001 ^ FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +xg 000000000000FFFF ^ FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +xg 0000000000007FFF ^ FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +xg 0000000000008000 ^ FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +xg 00000000FFFFFFFF ^ FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +xg 0000000080000000 ^ FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +xg 000000007FFFFFFF ^ FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ FFFFFFFF00000000 = 55555555AAAAAAAA (cc=1) +xg 8000000000000000 ^ FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xg 5555555555555555 ^ FFFFFFFF00000000 = AAAAAAAA55555555 (cc=1) +xr 0000000000000000 ^ FFFFFFFF00000000 = 0000000000000000 (cc=0) +xr 0000000000000001 ^ FFFFFFFF00000000 = 0000000000000001 (cc=1) +xr 000000000000FFFF ^ FFFFFFFF00000000 = 000000000000FFFF (cc=1) +xr 0000000000007FFF ^ FFFFFFFF00000000 = 0000000000007FFF (cc=1) +xr 0000000000008000 ^ FFFFFFFF00000000 = 0000000000008000 (cc=1) +xr 00000000FFFFFFFF ^ FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xr 0000000080000000 ^ FFFFFFFF00000000 = 0000000080000000 (cc=1) +xr 000000007FFFFFFF ^ FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ FFFFFFFF00000000 = AAAAAAAAAAAAAAAA (cc=1) +xr 8000000000000000 ^ FFFFFFFF00000000 = 8000000000000000 (cc=0) +xr FFFFFFFFFFFFFFFF ^ FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +xr 5555555555555555 ^ FFFFFFFF00000000 = 5555555555555555 (cc=1) +xgr 0000000000000000 ^ FFFFFFFF00000000 = FFFFFFFF00000000 (cc=1) +xgr 0000000000000001 ^ FFFFFFFF00000000 = FFFFFFFF00000001 (cc=1) +xgr 000000000000FFFF ^ FFFFFFFF00000000 = FFFFFFFF0000FFFF (cc=1) +xgr 0000000000007FFF ^ FFFFFFFF00000000 = FFFFFFFF00007FFF (cc=1) +xgr 0000000000008000 ^ FFFFFFFF00000000 = FFFFFFFF00008000 (cc=1) +xgr 00000000FFFFFFFF ^ FFFFFFFF00000000 = FFFFFFFFFFFFFFFF (cc=1) +xgr 0000000080000000 ^ FFFFFFFF00000000 = FFFFFFFF80000000 (cc=1) +xgr 000000007FFFFFFF ^ FFFFFFFF00000000 = FFFFFFFF7FFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ FFFFFFFF00000000 = 55555555AAAAAAAA (cc=1) +xgr 8000000000000000 ^ FFFFFFFF00000000 = 7FFFFFFF00000000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xgr 5555555555555555 ^ FFFFFFFF00000000 = AAAAAAAA55555555 (cc=1) +xy 0000000000000000 ^ FFFFFFFF00000000 = 00000000FFFFFFFF (cc=1) +xy 0000000000000001 ^ FFFFFFFF00000000 = 00000000FFFFFFFE (cc=1) +xy 000000000000FFFF ^ FFFFFFFF00000000 = 00000000FFFF0000 (cc=1) +xy 0000000000007FFF ^ FFFFFFFF00000000 = 00000000FFFF8000 (cc=1) +xy 0000000000008000 ^ FFFFFFFF00000000 = 00000000FFFF7FFF (cc=1) +xy 00000000FFFFFFFF ^ FFFFFFFF00000000 = 0000000000000000 (cc=0) +xy 0000000080000000 ^ FFFFFFFF00000000 = 000000007FFFFFFF (cc=1) +xy 000000007FFFFFFF ^ FFFFFFFF00000000 = 0000000080000000 (cc=1) +xy AAAAAAAAAAAAAAAA ^ FFFFFFFF00000000 = AAAAAAAA55555555 (cc=1) +xy 8000000000000000 ^ FFFFFFFF00000000 = 80000000FFFFFFFF (cc=1) +xy FFFFFFFFFFFFFFFF ^ FFFFFFFF00000000 = FFFFFFFF00000000 (cc=0) +xy 5555555555555555 ^ FFFFFFFF00000000 = 55555555AAAAAAAA (cc=1) +x 0000000000000000 ^ 000000007FFFFFFF = 0000000000000000 (cc=0) +x 0000000000000001 ^ 000000007FFFFFFF = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 000000007FFFFFFF = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 000000007FFFFFFF = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 000000007FFFFFFF = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 000000007FFFFFFF = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 000000007FFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 000000007FFFFFFF = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 000000007FFFFFFF = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +xg 0000000000000001 ^ 000000007FFFFFFF = 000000007FFFFFFE (cc=1) +xg 000000000000FFFF ^ 000000007FFFFFFF = 000000007FFF0000 (cc=1) +xg 0000000000007FFF ^ 000000007FFFFFFF = 000000007FFF8000 (cc=1) +xg 0000000000008000 ^ 000000007FFFFFFF = 000000007FFF7FFF (cc=1) +xg 00000000FFFFFFFF ^ 000000007FFFFFFF = 0000000080000000 (cc=1) +xg 0000000080000000 ^ 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +xg 000000007FFFFFFF ^ 000000007FFFFFFF = 0000000000000000 (cc=0) +xg AAAAAAAAAAAAAAAA ^ 000000007FFFFFFF = AAAAAAAAD5555555 (cc=1) +xg 8000000000000000 ^ 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ 000000007FFFFFFF = FFFFFFFF80000000 (cc=1) +xg 5555555555555555 ^ 000000007FFFFFFF = 555555552AAAAAAA (cc=1) +xr 0000000000000000 ^ 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +xr 0000000000000001 ^ 000000007FFFFFFF = 000000007FFFFFFE (cc=1) +xr 000000000000FFFF ^ 000000007FFFFFFF = 000000007FFF0000 (cc=1) +xr 0000000000007FFF ^ 000000007FFFFFFF = 000000007FFF8000 (cc=1) +xr 0000000000008000 ^ 000000007FFFFFFF = 000000007FFF7FFF (cc=1) +xr 00000000FFFFFFFF ^ 000000007FFFFFFF = 0000000080000000 (cc=1) +xr 0000000080000000 ^ 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +xr 000000007FFFFFFF ^ 000000007FFFFFFF = 0000000000000000 (cc=0) +xr AAAAAAAAAAAAAAAA ^ 000000007FFFFFFF = AAAAAAAAD5555555 (cc=1) +xr 8000000000000000 ^ 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ 000000007FFFFFFF = FFFFFFFF80000000 (cc=1) +xr 5555555555555555 ^ 000000007FFFFFFF = 555555552AAAAAAA (cc=1) +xgr 0000000000000000 ^ 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +xgr 0000000000000001 ^ 000000007FFFFFFF = 000000007FFFFFFE (cc=1) +xgr 000000000000FFFF ^ 000000007FFFFFFF = 000000007FFF0000 (cc=1) +xgr 0000000000007FFF ^ 000000007FFFFFFF = 000000007FFF8000 (cc=1) +xgr 0000000000008000 ^ 000000007FFFFFFF = 000000007FFF7FFF (cc=1) +xgr 00000000FFFFFFFF ^ 000000007FFFFFFF = 0000000080000000 (cc=1) +xgr 0000000080000000 ^ 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +xgr 000000007FFFFFFF ^ 000000007FFFFFFF = 0000000000000000 (cc=0) +xgr AAAAAAAAAAAAAAAA ^ 000000007FFFFFFF = AAAAAAAAD5555555 (cc=1) +xgr 8000000000000000 ^ 000000007FFFFFFF = 800000007FFFFFFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 000000007FFFFFFF = FFFFFFFF80000000 (cc=1) +xgr 5555555555555555 ^ 000000007FFFFFFF = 555555552AAAAAAA (cc=1) +xy 0000000000000000 ^ 000000007FFFFFFF = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 000000007FFFFFFF = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 000000007FFFFFFF = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 000000007FFFFFFF = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 000000007FFFFFFF = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 000000007FFFFFFF = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 000000007FFFFFFF = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 000000007FFFFFFF = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 000000007FFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 000000007FFFFFFF = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 000000007FFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 000000007FFFFFFF = 5555555555555555 (cc=1) +x 0000000000000000 ^ 0000000080000000 = 0000000000000000 (cc=0) +x 0000000000000001 ^ 0000000080000000 = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 0000000080000000 = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 0000000080000000 = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 0000000080000000 = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 0000000080000000 = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 0000000080000000 = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 0000000080000000 = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 0000000080000000 = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 0000000080000000 = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 0000000080000000 = 0000000080000000 (cc=1) +xg 0000000000000001 ^ 0000000080000000 = 0000000080000001 (cc=1) +xg 000000000000FFFF ^ 0000000080000000 = 000000008000FFFF (cc=1) +xg 0000000000007FFF ^ 0000000080000000 = 0000000080007FFF (cc=1) +xg 0000000000008000 ^ 0000000080000000 = 0000000080008000 (cc=1) +xg 00000000FFFFFFFF ^ 0000000080000000 = 000000007FFFFFFF (cc=1) +xg 0000000080000000 ^ 0000000080000000 = 0000000000000000 (cc=0) +xg 000000007FFFFFFF ^ 0000000080000000 = 00000000FFFFFFFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 0000000080000000 = AAAAAAAA2AAAAAAA (cc=1) +xg 8000000000000000 ^ 0000000080000000 = 8000000080000000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 0000000080000000 = FFFFFFFF7FFFFFFF (cc=1) +xg 5555555555555555 ^ 0000000080000000 = 55555555D5555555 (cc=1) +xr 0000000000000000 ^ 0000000080000000 = 0000000080000000 (cc=1) +xr 0000000000000001 ^ 0000000080000000 = 0000000080000001 (cc=1) +xr 000000000000FFFF ^ 0000000080000000 = 000000008000FFFF (cc=1) +xr 0000000000007FFF ^ 0000000080000000 = 0000000080007FFF (cc=1) +xr 0000000000008000 ^ 0000000080000000 = 0000000080008000 (cc=1) +xr 00000000FFFFFFFF ^ 0000000080000000 = 000000007FFFFFFF (cc=1) +xr 0000000080000000 ^ 0000000080000000 = 0000000000000000 (cc=0) +xr 000000007FFFFFFF ^ 0000000080000000 = 00000000FFFFFFFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 0000000080000000 = AAAAAAAA2AAAAAAA (cc=1) +xr 8000000000000000 ^ 0000000080000000 = 8000000080000000 (cc=1) +xr FFFFFFFFFFFFFFFF ^ 0000000080000000 = FFFFFFFF7FFFFFFF (cc=1) +xr 5555555555555555 ^ 0000000080000000 = 55555555D5555555 (cc=1) +xgr 0000000000000000 ^ 0000000080000000 = 0000000080000000 (cc=1) +xgr 0000000000000001 ^ 0000000080000000 = 0000000080000001 (cc=1) +xgr 000000000000FFFF ^ 0000000080000000 = 000000008000FFFF (cc=1) +xgr 0000000000007FFF ^ 0000000080000000 = 0000000080007FFF (cc=1) +xgr 0000000000008000 ^ 0000000080000000 = 0000000080008000 (cc=1) +xgr 00000000FFFFFFFF ^ 0000000080000000 = 000000007FFFFFFF (cc=1) +xgr 0000000080000000 ^ 0000000080000000 = 0000000000000000 (cc=0) +xgr 000000007FFFFFFF ^ 0000000080000000 = 00000000FFFFFFFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 0000000080000000 = AAAAAAAA2AAAAAAA (cc=1) +xgr 8000000000000000 ^ 0000000080000000 = 8000000080000000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 0000000080000000 = FFFFFFFF7FFFFFFF (cc=1) +xgr 5555555555555555 ^ 0000000080000000 = 55555555D5555555 (cc=1) +xy 0000000000000000 ^ 0000000080000000 = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 0000000080000000 = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 0000000080000000 = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 0000000080000000 = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 0000000080000000 = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 0000000080000000 = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 0000000080000000 = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 0000000080000000 = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 0000000080000000 = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 0000000080000000 = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 0000000080000000 = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 0000000080000000 = 5555555555555555 (cc=1) +x 0000000000000000 ^ 0000000055555555 = 0000000000000000 (cc=0) +x 0000000000000001 ^ 0000000055555555 = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 0000000055555555 = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 0000000055555555 = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 0000000055555555 = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 0000000055555555 = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 0000000055555555 = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 0000000055555555 = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 0000000055555555 = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 0000000055555555 = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 0000000055555555 = 0000000055555555 (cc=1) +xg 0000000000000001 ^ 0000000055555555 = 0000000055555554 (cc=1) +xg 000000000000FFFF ^ 0000000055555555 = 000000005555AAAA (cc=1) +xg 0000000000007FFF ^ 0000000055555555 = 0000000055552AAA (cc=1) +xg 0000000000008000 ^ 0000000055555555 = 000000005555D555 (cc=1) +xg 00000000FFFFFFFF ^ 0000000055555555 = 00000000AAAAAAAA (cc=1) +xg 0000000080000000 ^ 0000000055555555 = 00000000D5555555 (cc=1) +xg 000000007FFFFFFF ^ 0000000055555555 = 000000002AAAAAAA (cc=1) +xg AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +xg 8000000000000000 ^ 0000000055555555 = 8000000055555555 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +xg 5555555555555555 ^ 0000000055555555 = 5555555500000000 (cc=1) +xr 0000000000000000 ^ 0000000055555555 = 0000000055555555 (cc=1) +xr 0000000000000001 ^ 0000000055555555 = 0000000055555554 (cc=1) +xr 000000000000FFFF ^ 0000000055555555 = 000000005555AAAA (cc=1) +xr 0000000000007FFF ^ 0000000055555555 = 0000000055552AAA (cc=1) +xr 0000000000008000 ^ 0000000055555555 = 000000005555D555 (cc=1) +xr 00000000FFFFFFFF ^ 0000000055555555 = 00000000AAAAAAAA (cc=1) +xr 0000000080000000 ^ 0000000055555555 = 00000000D5555555 (cc=1) +xr 000000007FFFFFFF ^ 0000000055555555 = 000000002AAAAAAA (cc=1) +xr AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +xr 8000000000000000 ^ 0000000055555555 = 8000000055555555 (cc=1) +xr FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +xr 5555555555555555 ^ 0000000055555555 = 5555555500000000 (cc=0) +xgr 0000000000000000 ^ 0000000055555555 = 0000000055555555 (cc=1) +xgr 0000000000000001 ^ 0000000055555555 = 0000000055555554 (cc=1) +xgr 000000000000FFFF ^ 0000000055555555 = 000000005555AAAA (cc=1) +xgr 0000000000007FFF ^ 0000000055555555 = 0000000055552AAA (cc=1) +xgr 0000000000008000 ^ 0000000055555555 = 000000005555D555 (cc=1) +xgr 00000000FFFFFFFF ^ 0000000055555555 = 00000000AAAAAAAA (cc=1) +xgr 0000000080000000 ^ 0000000055555555 = 00000000D5555555 (cc=1) +xgr 000000007FFFFFFF ^ 0000000055555555 = 000000002AAAAAAA (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +xgr 8000000000000000 ^ 0000000055555555 = 8000000055555555 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +xgr 5555555555555555 ^ 0000000055555555 = 5555555500000000 (cc=1) +xy 0000000000000000 ^ 0000000055555555 = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 0000000055555555 = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 0000000055555555 = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 0000000055555555 = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 0000000055555555 = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 0000000055555555 = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 0000000055555555 = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 0000000055555555 = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 0000000055555555 = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 0000000055555555 = 5555555555555555 (cc=1) +x 0000000000000000 ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +x 0000000000000001 ^ 00000000FFFFFFFF = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 00000000FFFFFFFF = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 00000000FFFFFFFF = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 00000000FFFFFFFF = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 00000000FFFFFFFF = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 00000000FFFFFFFF = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +xg 0000000000000001 ^ 00000000FFFFFFFF = 00000000FFFFFFFE (cc=1) +xg 000000000000FFFF ^ 00000000FFFFFFFF = 00000000FFFF0000 (cc=1) +xg 0000000000007FFF ^ 00000000FFFFFFFF = 00000000FFFF8000 (cc=1) +xg 0000000000008000 ^ 00000000FFFFFFFF = 00000000FFFF7FFF (cc=1) +xg 00000000FFFFFFFF ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +xg 0000000080000000 ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +xg 000000007FFFFFFF ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +xg AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAA55555555 (cc=1) +xg 8000000000000000 ^ 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFF00000000 (cc=1) +xg 5555555555555555 ^ 00000000FFFFFFFF = 55555555AAAAAAAA (cc=1) +xr 0000000000000000 ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +xr 0000000000000001 ^ 00000000FFFFFFFF = 00000000FFFFFFFE (cc=1) +xr 000000000000FFFF ^ 00000000FFFFFFFF = 00000000FFFF0000 (cc=1) +xr 0000000000007FFF ^ 00000000FFFFFFFF = 00000000FFFF8000 (cc=1) +xr 0000000000008000 ^ 00000000FFFFFFFF = 00000000FFFF7FFF (cc=1) +xr 00000000FFFFFFFF ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +xr 0000000080000000 ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +xr 000000007FFFFFFF ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +xr AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAA55555555 (cc=1) +xr 8000000000000000 ^ 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFF00000000 (cc=0) +xr 5555555555555555 ^ 00000000FFFFFFFF = 55555555AAAAAAAA (cc=1) +xgr 0000000000000000 ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +xgr 0000000000000001 ^ 00000000FFFFFFFF = 00000000FFFFFFFE (cc=1) +xgr 000000000000FFFF ^ 00000000FFFFFFFF = 00000000FFFF0000 (cc=1) +xgr 0000000000007FFF ^ 00000000FFFFFFFF = 00000000FFFF8000 (cc=1) +xgr 0000000000008000 ^ 00000000FFFFFFFF = 00000000FFFF7FFF (cc=1) +xgr 00000000FFFFFFFF ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +xgr 0000000080000000 ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +xgr 000000007FFFFFFF ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAA55555555 (cc=1) +xgr 8000000000000000 ^ 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFF00000000 (cc=1) +xgr 5555555555555555 ^ 00000000FFFFFFFF = 55555555AAAAAAAA (cc=1) +xy 0000000000000000 ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 00000000FFFFFFFF = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 00000000FFFFFFFF = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 00000000FFFFFFFF = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 00000000FFFFFFFF = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 00000000FFFFFFFF = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 00000000FFFFFFFF = 5555555555555555 (cc=1) +x 0000000000000000 ^ 000000000000FFFF = 0000000000000000 (cc=0) +x 0000000000000001 ^ 000000000000FFFF = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 000000000000FFFF = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 000000000000FFFF = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 000000000000FFFF = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 000000000000FFFF = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 000000000000FFFF = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 000000000000FFFF = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xg 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xg 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xg 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xg 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xg 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xg 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xg 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xg AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xg 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xg 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xr 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xr 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xr 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xr 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xr 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xr 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xr 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xr 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xr AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xr 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xr 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xgr 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xgr 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xgr 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xgr 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xgr 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xgr 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xgr 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xgr 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xgr 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xgr 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xy 0000000000000000 ^ 000000000000FFFF = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 000000000000FFFF = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 000000000000FFFF = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 000000000000FFFF = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 000000000000FFFF = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 000000000000FFFF = 5555555555555555 (cc=1) +x 0000000000000000 ^ 0000000000007FFF = 0000000000000000 (cc=0) +x 0000000000000001 ^ 0000000000007FFF = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 0000000000007FFF = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 0000000000007FFF = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 0000000000007FFF = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 0000000000007FFF = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 0000000000007FFF = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 0000000000007FFF = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 0000000000007FFF = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 0000000000007FFF = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 0000000000007FFF = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 0000000000007FFF = 0000000000007FFF (cc=1) +xg 0000000000000001 ^ 0000000000007FFF = 0000000000007FFE (cc=1) +xg 000000000000FFFF ^ 0000000000007FFF = 0000000000008000 (cc=1) +xg 0000000000007FFF ^ 0000000000007FFF = 0000000000000000 (cc=0) +xg 0000000000008000 ^ 0000000000007FFF = 000000000000FFFF (cc=1) +xg 00000000FFFFFFFF ^ 0000000000007FFF = 00000000FFFF8000 (cc=1) +xg 0000000080000000 ^ 0000000000007FFF = 0000000080007FFF (cc=1) +xg 000000007FFFFFFF ^ 0000000000007FFF = 000000007FFF8000 (cc=1) +xg AAAAAAAAAAAAAAAA ^ 0000000000007FFF = AAAAAAAAAAAAD555 (cc=1) +xg 8000000000000000 ^ 0000000000007FFF = 8000000000007FFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ 0000000000007FFF = FFFFFFFFFFFF8000 (cc=1) +xg 5555555555555555 ^ 0000000000007FFF = 5555555555552AAA (cc=1) +xr 0000000000000000 ^ 0000000000007FFF = 0000000000007FFF (cc=1) +xr 0000000000000001 ^ 0000000000007FFF = 0000000000007FFE (cc=1) +xr 000000000000FFFF ^ 0000000000007FFF = 0000000000008000 (cc=1) +xr 0000000000007FFF ^ 0000000000007FFF = 0000000000000000 (cc=0) +xr 0000000000008000 ^ 0000000000007FFF = 000000000000FFFF (cc=1) +xr 00000000FFFFFFFF ^ 0000000000007FFF = 00000000FFFF8000 (cc=1) +xr 0000000080000000 ^ 0000000000007FFF = 0000000080007FFF (cc=1) +xr 000000007FFFFFFF ^ 0000000000007FFF = 000000007FFF8000 (cc=1) +xr AAAAAAAAAAAAAAAA ^ 0000000000007FFF = AAAAAAAAAAAAD555 (cc=1) +xr 8000000000000000 ^ 0000000000007FFF = 8000000000007FFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ 0000000000007FFF = FFFFFFFFFFFF8000 (cc=1) +xr 5555555555555555 ^ 0000000000007FFF = 5555555555552AAA (cc=1) +xgr 0000000000000000 ^ 0000000000007FFF = 0000000000007FFF (cc=1) +xgr 0000000000000001 ^ 0000000000007FFF = 0000000000007FFE (cc=1) +xgr 000000000000FFFF ^ 0000000000007FFF = 0000000000008000 (cc=1) +xgr 0000000000007FFF ^ 0000000000007FFF = 0000000000000000 (cc=0) +xgr 0000000000008000 ^ 0000000000007FFF = 000000000000FFFF (cc=1) +xgr 00000000FFFFFFFF ^ 0000000000007FFF = 00000000FFFF8000 (cc=1) +xgr 0000000080000000 ^ 0000000000007FFF = 0000000080007FFF (cc=1) +xgr 000000007FFFFFFF ^ 0000000000007FFF = 000000007FFF8000 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 0000000000007FFF = AAAAAAAAAAAAD555 (cc=1) +xgr 8000000000000000 ^ 0000000000007FFF = 8000000000007FFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 0000000000007FFF = FFFFFFFFFFFF8000 (cc=1) +xgr 5555555555555555 ^ 0000000000007FFF = 5555555555552AAA (cc=1) +xy 0000000000000000 ^ 0000000000007FFF = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 0000000000007FFF = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 0000000000007FFF = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 0000000000007FFF = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 0000000000007FFF = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 0000000000007FFF = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 0000000000007FFF = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 0000000000007FFF = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 0000000000007FFF = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 0000000000007FFF = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 0000000000007FFF = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 0000000000007FFF = 5555555555555555 (cc=1) +x 0000000000000000 ^ 0000000000008000 = 0000000000000000 (cc=0) +x 0000000000000001 ^ 0000000000008000 = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 0000000000008000 = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 0000000000008000 = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 0000000000008000 = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 0000000000008000 = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 0000000000008000 = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 0000000000008000 = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 0000000000008000 = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 0000000000008000 = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 0000000000008000 = 0000000000008000 (cc=1) +xg 0000000000000001 ^ 0000000000008000 = 0000000000008001 (cc=1) +xg 000000000000FFFF ^ 0000000000008000 = 0000000000007FFF (cc=1) +xg 0000000000007FFF ^ 0000000000008000 = 000000000000FFFF (cc=1) +xg 0000000000008000 ^ 0000000000008000 = 0000000000000000 (cc=0) +xg 00000000FFFFFFFF ^ 0000000000008000 = 00000000FFFF7FFF (cc=1) +xg 0000000080000000 ^ 0000000000008000 = 0000000080008000 (cc=1) +xg 000000007FFFFFFF ^ 0000000000008000 = 000000007FFF7FFF (cc=1) +xg AAAAAAAAAAAAAAAA ^ 0000000000008000 = AAAAAAAAAAAA2AAA (cc=1) +xg 8000000000000000 ^ 0000000000008000 = 8000000000008000 (cc=1) +xg FFFFFFFFFFFFFFFF ^ 0000000000008000 = FFFFFFFFFFFF7FFF (cc=1) +xg 5555555555555555 ^ 0000000000008000 = 555555555555D555 (cc=1) +xr 0000000000000000 ^ 0000000000008000 = 0000000000008000 (cc=1) +xr 0000000000000001 ^ 0000000000008000 = 0000000000008001 (cc=1) +xr 000000000000FFFF ^ 0000000000008000 = 0000000000007FFF (cc=1) +xr 0000000000007FFF ^ 0000000000008000 = 000000000000FFFF (cc=1) +xr 0000000000008000 ^ 0000000000008000 = 0000000000000000 (cc=0) +xr 00000000FFFFFFFF ^ 0000000000008000 = 00000000FFFF7FFF (cc=1) +xr 0000000080000000 ^ 0000000000008000 = 0000000080008000 (cc=1) +xr 000000007FFFFFFF ^ 0000000000008000 = 000000007FFF7FFF (cc=1) +xr AAAAAAAAAAAAAAAA ^ 0000000000008000 = AAAAAAAAAAAA2AAA (cc=1) +xr 8000000000000000 ^ 0000000000008000 = 8000000000008000 (cc=1) +xr FFFFFFFFFFFFFFFF ^ 0000000000008000 = FFFFFFFFFFFF7FFF (cc=1) +xr 5555555555555555 ^ 0000000000008000 = 555555555555D555 (cc=1) +xgr 0000000000000000 ^ 0000000000008000 = 0000000000008000 (cc=1) +xgr 0000000000000001 ^ 0000000000008000 = 0000000000008001 (cc=1) +xgr 000000000000FFFF ^ 0000000000008000 = 0000000000007FFF (cc=1) +xgr 0000000000007FFF ^ 0000000000008000 = 000000000000FFFF (cc=1) +xgr 0000000000008000 ^ 0000000000008000 = 0000000000000000 (cc=0) +xgr 00000000FFFFFFFF ^ 0000000000008000 = 00000000FFFF7FFF (cc=1) +xgr 0000000080000000 ^ 0000000000008000 = 0000000080008000 (cc=1) +xgr 000000007FFFFFFF ^ 0000000000008000 = 000000007FFF7FFF (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 0000000000008000 = AAAAAAAAAAAA2AAA (cc=1) +xgr 8000000000000000 ^ 0000000000008000 = 8000000000008000 (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 0000000000008000 = FFFFFFFFFFFF7FFF (cc=1) +xgr 5555555555555555 ^ 0000000000008000 = 555555555555D555 (cc=1) +xy 0000000000000000 ^ 0000000000008000 = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 0000000000008000 = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 0000000000008000 = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 0000000000008000 = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 0000000000008000 = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 0000000000008000 = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 0000000000008000 = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 0000000000008000 = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 0000000000008000 = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 0000000000008000 = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 0000000000008000 = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 0000000000008000 = 5555555555555555 (cc=1) +x 0000000000000000 ^ 000000000000FFFF = 0000000000000000 (cc=0) +x 0000000000000001 ^ 000000000000FFFF = 0000000000000001 (cc=1) +x 000000000000FFFF ^ 000000000000FFFF = 000000000000FFFF (cc=1) +x 0000000000007FFF ^ 000000000000FFFF = 0000000000007FFF (cc=1) +x 0000000000008000 ^ 000000000000FFFF = 0000000000008000 (cc=1) +x 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFFFFFF (cc=1) +x 0000000080000000 ^ 000000000000FFFF = 0000000080000000 (cc=1) +x 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFFFFFF (cc=1) +x AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +x 8000000000000000 ^ 000000000000FFFF = 8000000000000000 (cc=0) +x FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +x 5555555555555555 ^ 000000000000FFFF = 5555555555555555 (cc=1) +xg 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xg 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xg 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xg 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xg 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xg 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xg 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xg 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xg AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xg 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xg FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xg 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xr 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xr 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xr 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xr 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xr 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xr 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xr 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xr 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xr AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xr 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xr FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xr 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xgr 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xgr 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +xgr 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +xgr 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +xgr 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xgr 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +xgr 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +xgr 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +xgr AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +xgr 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +xgr FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +xgr 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +xy 0000000000000000 ^ 000000000000FFFF = 0000000000000000 (cc=0) +xy 0000000000000001 ^ 000000000000FFFF = 0000000000000001 (cc=1) +xy 000000000000FFFF ^ 000000000000FFFF = 000000000000FFFF (cc=1) +xy 0000000000007FFF ^ 000000000000FFFF = 0000000000007FFF (cc=1) +xy 0000000000008000 ^ 000000000000FFFF = 0000000000008000 (cc=1) +xy 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFFFFFF (cc=1) +xy 0000000080000000 ^ 000000000000FFFF = 0000000080000000 (cc=1) +xy 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFFFFFF (cc=1) +xy AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAAAAAA (cc=1) +xy 8000000000000000 ^ 000000000000FFFF = 8000000000000000 (cc=0) +xy FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFFFFFF (cc=1) +xy 5555555555555555 ^ 000000000000FFFF = 5555555555555555 (cc=1) +xi 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xi 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=0) +xi 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=0) +xi 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=0) +xi 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=0) +xi 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=0) +xi 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=0) +xi 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=0) +xi AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xi 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=1) +xi FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xi 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xi 0000000000000000 ^ 00000000000000FF = FF00000000000000 (cc=1) +xi 0000000000000001 ^ 00000000000000FF = FF00000000000001 (cc=1) +xi 000000000000FFFF ^ 00000000000000FF = FF0000000000FFFF (cc=1) +xi 0000000000007FFF ^ 00000000000000FF = FF00000000007FFF (cc=1) +xi 0000000000008000 ^ 00000000000000FF = FF00000000008000 (cc=1) +xi 00000000FFFFFFFF ^ 00000000000000FF = FF000000FFFFFFFF (cc=1) +xi 0000000080000000 ^ 00000000000000FF = FF00000080000000 (cc=1) +xi 000000007FFFFFFF ^ 00000000000000FF = FF0000007FFFFFFF (cc=1) +xi AAAAAAAAAAAAAAAA ^ 00000000000000FF = 55AAAAAAAAAAAAAA (cc=1) +xi 8000000000000000 ^ 00000000000000FF = 7F00000000000000 (cc=1) +xi FFFFFFFFFFFFFFFF ^ 00000000000000FF = 00FFFFFFFFFFFFFF (cc=0) +xi 5555555555555555 ^ 00000000000000FF = AA55555555555555 (cc=1) +xi 0000000000000000 ^ 0000000000000080 = 8000000000000000 (cc=1) +xi 0000000000000001 ^ 0000000000000080 = 8000000000000001 (cc=1) +xi 000000000000FFFF ^ 0000000000000080 = 800000000000FFFF (cc=1) +xi 0000000000007FFF ^ 0000000000000080 = 8000000000007FFF (cc=1) +xi 0000000000008000 ^ 0000000000000080 = 8000000000008000 (cc=1) +xi 00000000FFFFFFFF ^ 0000000000000080 = 80000000FFFFFFFF (cc=1) +xi 0000000080000000 ^ 0000000000000080 = 8000000080000000 (cc=1) +xi 000000007FFFFFFF ^ 0000000000000080 = 800000007FFFFFFF (cc=1) +xi AAAAAAAAAAAAAAAA ^ 0000000000000080 = 2AAAAAAAAAAAAAAA (cc=1) +xi 8000000000000000 ^ 0000000000000080 = 0000000000000000 (cc=0) +xi FFFFFFFFFFFFFFFF ^ 0000000000000080 = 7FFFFFFFFFFFFFFF (cc=1) +xi 5555555555555555 ^ 0000000000000080 = D555555555555555 (cc=1) +xi 0000000000000000 ^ 00000000000000AA = AA00000000000000 (cc=1) +xi 0000000000000001 ^ 00000000000000AA = AA00000000000001 (cc=1) +xi 000000000000FFFF ^ 00000000000000AA = AA0000000000FFFF (cc=1) +xi 0000000000007FFF ^ 00000000000000AA = AA00000000007FFF (cc=1) +xi 0000000000008000 ^ 00000000000000AA = AA00000000008000 (cc=1) +xi 00000000FFFFFFFF ^ 00000000000000AA = AA000000FFFFFFFF (cc=1) +xi 0000000080000000 ^ 00000000000000AA = AA00000080000000 (cc=1) +xi 000000007FFFFFFF ^ 00000000000000AA = AA0000007FFFFFFF (cc=1) +xi AAAAAAAAAAAAAAAA ^ 00000000000000AA = 00AAAAAAAAAAAAAA (cc=0) +xi 8000000000000000 ^ 00000000000000AA = 2A00000000000000 (cc=1) +xi FFFFFFFFFFFFFFFF ^ 00000000000000AA = 55FFFFFFFFFFFFFF (cc=1) +xi 5555555555555555 ^ 00000000000000AA = FF55555555555555 (cc=1) +xi 0000000000000000 ^ 0000000000000055 = 5500000000000000 (cc=1) +xi 0000000000000001 ^ 0000000000000055 = 5500000000000001 (cc=1) +xi 000000000000FFFF ^ 0000000000000055 = 550000000000FFFF (cc=1) +xi 0000000000007FFF ^ 0000000000000055 = 5500000000007FFF (cc=1) +xi 0000000000008000 ^ 0000000000000055 = 5500000000008000 (cc=1) +xi 00000000FFFFFFFF ^ 0000000000000055 = 55000000FFFFFFFF (cc=1) +xi 0000000080000000 ^ 0000000000000055 = 5500000080000000 (cc=1) +xi 000000007FFFFFFF ^ 0000000000000055 = 550000007FFFFFFF (cc=1) +xi AAAAAAAAAAAAAAAA ^ 0000000000000055 = FFAAAAAAAAAAAAAA (cc=1) +xi 8000000000000000 ^ 0000000000000055 = D500000000000000 (cc=1) +xi FFFFFFFFFFFFFFFF ^ 0000000000000055 = AAFFFFFFFFFFFFFF (cc=1) +xi 5555555555555555 ^ 0000000000000055 = 0055555555555555 (cc=0) +xiy 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +xiy 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=0) +xiy 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=0) +xiy 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=0) +xiy 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=0) +xiy 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=0) +xiy 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=0) +xiy 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=0) +xiy AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +xiy 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=1) +xiy FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +xiy 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +xiy 0000000000000000 ^ 00000000000000FF = FF00000000000000 (cc=1) +xiy 0000000000000001 ^ 00000000000000FF = FF00000000000001 (cc=1) +xiy 000000000000FFFF ^ 00000000000000FF = FF0000000000FFFF (cc=1) +xiy 0000000000007FFF ^ 00000000000000FF = FF00000000007FFF (cc=1) +xiy 0000000000008000 ^ 00000000000000FF = FF00000000008000 (cc=1) +xiy 00000000FFFFFFFF ^ 00000000000000FF = FF000000FFFFFFFF (cc=1) +xiy 0000000080000000 ^ 00000000000000FF = FF00000080000000 (cc=1) +xiy 000000007FFFFFFF ^ 00000000000000FF = FF0000007FFFFFFF (cc=1) +xiy AAAAAAAAAAAAAAAA ^ 00000000000000FF = 55AAAAAAAAAAAAAA (cc=1) +xiy 8000000000000000 ^ 00000000000000FF = 7F00000000000000 (cc=1) +xiy FFFFFFFFFFFFFFFF ^ 00000000000000FF = 00FFFFFFFFFFFFFF (cc=0) +xiy 5555555555555555 ^ 00000000000000FF = AA55555555555555 (cc=1) +xiy 0000000000000000 ^ 0000000000000080 = 8000000000000000 (cc=1) +xiy 0000000000000001 ^ 0000000000000080 = 8000000000000001 (cc=1) +xiy 000000000000FFFF ^ 0000000000000080 = 800000000000FFFF (cc=1) +xiy 0000000000007FFF ^ 0000000000000080 = 8000000000007FFF (cc=1) +xiy 0000000000008000 ^ 0000000000000080 = 8000000000008000 (cc=1) +xiy 00000000FFFFFFFF ^ 0000000000000080 = 80000000FFFFFFFF (cc=1) +xiy 0000000080000000 ^ 0000000000000080 = 8000000080000000 (cc=1) +xiy 000000007FFFFFFF ^ 0000000000000080 = 800000007FFFFFFF (cc=1) +xiy AAAAAAAAAAAAAAAA ^ 0000000000000080 = 2AAAAAAAAAAAAAAA (cc=1) +xiy 8000000000000000 ^ 0000000000000080 = 0000000000000000 (cc=0) +xiy FFFFFFFFFFFFFFFF ^ 0000000000000080 = 7FFFFFFFFFFFFFFF (cc=1) +xiy 5555555555555555 ^ 0000000000000080 = D555555555555555 (cc=1) +xiy 0000000000000000 ^ 00000000000000AA = AA00000000000000 (cc=1) +xiy 0000000000000001 ^ 00000000000000AA = AA00000000000001 (cc=1) +xiy 000000000000FFFF ^ 00000000000000AA = AA0000000000FFFF (cc=1) +xiy 0000000000007FFF ^ 00000000000000AA = AA00000000007FFF (cc=1) +xiy 0000000000008000 ^ 00000000000000AA = AA00000000008000 (cc=1) +xiy 00000000FFFFFFFF ^ 00000000000000AA = AA000000FFFFFFFF (cc=1) +xiy 0000000080000000 ^ 00000000000000AA = AA00000080000000 (cc=1) +xiy 000000007FFFFFFF ^ 00000000000000AA = AA0000007FFFFFFF (cc=1) +xiy AAAAAAAAAAAAAAAA ^ 00000000000000AA = 00AAAAAAAAAAAAAA (cc=0) +xiy 8000000000000000 ^ 00000000000000AA = 2A00000000000000 (cc=1) +xiy FFFFFFFFFFFFFFFF ^ 00000000000000AA = 55FFFFFFFFFFFFFF (cc=1) +xiy 5555555555555555 ^ 00000000000000AA = FF55555555555555 (cc=1) +xiy 0000000000000000 ^ 0000000000000055 = 5500000000000000 (cc=1) +xiy 0000000000000001 ^ 0000000000000055 = 5500000000000001 (cc=1) +xiy 000000000000FFFF ^ 0000000000000055 = 550000000000FFFF (cc=1) +xiy 0000000000007FFF ^ 0000000000000055 = 5500000000007FFF (cc=1) +xiy 0000000000008000 ^ 0000000000000055 = 5500000000008000 (cc=1) +xiy 00000000FFFFFFFF ^ 0000000000000055 = 55000000FFFFFFFF (cc=1) +xiy 0000000080000000 ^ 0000000000000055 = 5500000080000000 (cc=1) +xiy 000000007FFFFFFF ^ 0000000000000055 = 550000007FFFFFFF (cc=1) +xiy AAAAAAAAAAAAAAAA ^ 0000000000000055 = FFAAAAAAAAAAAAAA (cc=1) +xiy 8000000000000000 ^ 0000000000000055 = D500000000000000 (cc=1) +xiy FFFFFFFFFFFFFFFF ^ 0000000000000055 = AAFFFFFFFFFFFFFF (cc=1) +xiy 5555555555555555 ^ 0000000000000055 = 0055555555555555 (cc=0) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.vgtest new file mode 100644 index 000000000..d6dae373d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor.vgtest @@ -0,0 +1 @@ +prog: xor diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.c new file mode 100644 index 000000000..b7c3b16da --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.c @@ -0,0 +1,42 @@ +#include +#include "xor.h" +#include "opcodes.h" + +static void do_imm_insns(void) +{ + immsweep(XIHF, 00000000); + immsweep(XIHF, 000000ff); + immsweep(XIHF, 00000055); + immsweep(XIHF, 000000aa); + immsweep(XIHF, 0000ffff); + immsweep(XIHF, 00005555); + immsweep(XIHF, 0000aaaa); + immsweep(XIHF, ffff0000); + immsweep(XIHF, 55550000); + immsweep(XIHF, aaaa0000); + immsweep(XIHF, ffffffff); + immsweep(XIHF, 55555555); + immsweep(XIHF, aaaaaaaa); + immsweep(XILF, 00000000); + immsweep(XILF, 000000ff); + immsweep(XILF, 00000055); + immsweep(XILF, 000000aa); + immsweep(XILF, 0000ffff); + immsweep(XILF, 00005555); + immsweep(XILF, 0000aaaa); + immsweep(XILF, ffff0000); + immsweep(XILF, 55550000); + immsweep(XILF, aaaa0000); + immsweep(XILF, ffffffff); + immsweep(XILF, 55555555); + immsweep(XILF, aaaaaaaa); + +} + + +int main() +{ + do_imm_insns(); + + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stdout.exp new file mode 100644 index 000000000..c1e4a6a7b --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.stdout.exp @@ -0,0 +1,312 @@ +XIHF 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +XIHF 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=0) +XIHF 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=0) +XIHF 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=0) +XIHF 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=0) +XIHF 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=0) +XIHF 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=0) +XIHF 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=0) +XIHF AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +XIHF 0000000000000000 ^ 00000000000000FF = 000000FF00000000 (cc=1) +XIHF 0000000000000001 ^ 00000000000000FF = 000000FF00000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000000000FF = 000000FF0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000000000FF = 000000FF00007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000000000FF = 000000FF00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000000000FF = 000000FFFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000000000FF = 000000FF80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000000000FF = 000000FF7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000000000FF = AAAAAA55AAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 00000000000000FF = 800000FF00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000000000FF = FFFFFF00FFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 00000000000000FF = 555555AA55555555 (cc=1) +XIHF 0000000000000000 ^ 0000000000000055 = 0000005500000000 (cc=1) +XIHF 0000000000000001 ^ 0000000000000055 = 0000005500000001 (cc=1) +XIHF 000000000000FFFF ^ 0000000000000055 = 000000550000FFFF (cc=1) +XIHF 0000000000007FFF ^ 0000000000000055 = 0000005500007FFF (cc=1) +XIHF 0000000000008000 ^ 0000000000000055 = 0000005500008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 0000000000000055 = 00000055FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 0000000000000055 = 0000005580000000 (cc=1) +XIHF 000000007FFFFFFF ^ 0000000000000055 = 000000557FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 0000000000000055 = AAAAAAFFAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 0000000000000055 = 8000005500000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 0000000000000055 = FFFFFFAAFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 0000000000000055 = 5555550055555555 (cc=1) +XIHF 0000000000000000 ^ 00000000000000AA = 000000AA00000000 (cc=1) +XIHF 0000000000000001 ^ 00000000000000AA = 000000AA00000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000000000AA = 000000AA0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000000000AA = 000000AA00007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000000000AA = 000000AA00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000000000AA = 000000AAFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000000000AA = 000000AA80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000000000AA = 000000AA7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000000000AA = AAAAAA00AAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 00000000000000AA = 800000AA00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000000000AA = FFFFFF55FFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 00000000000000AA = 555555FF55555555 (cc=1) +XIHF 0000000000000000 ^ 000000000000FFFF = 0000FFFF00000000 (cc=1) +XIHF 0000000000000001 ^ 000000000000FFFF = 0000FFFF00000001 (cc=1) +XIHF 000000000000FFFF ^ 000000000000FFFF = 0000FFFF0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 000000000000FFFF = 0000FFFF00007FFF (cc=1) +XIHF 0000000000008000 ^ 000000000000FFFF = 0000FFFF00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 000000000000FFFF = 0000FFFFFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 000000000000FFFF = 0000FFFF80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 000000000000FFFF = 0000FFFF7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAA5555AAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 000000000000FFFF = 8000FFFF00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFF0000FFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 000000000000FFFF = 5555AAAA55555555 (cc=1) +XIHF 0000000000000000 ^ 0000000000005555 = 0000555500000000 (cc=1) +XIHF 0000000000000001 ^ 0000000000005555 = 0000555500000001 (cc=1) +XIHF 000000000000FFFF ^ 0000000000005555 = 000055550000FFFF (cc=1) +XIHF 0000000000007FFF ^ 0000000000005555 = 0000555500007FFF (cc=1) +XIHF 0000000000008000 ^ 0000000000005555 = 0000555500008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 0000000000005555 = 00005555FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 0000000000005555 = 0000555580000000 (cc=1) +XIHF 000000007FFFFFFF ^ 0000000000005555 = 000055557FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 0000000000005555 = AAAAFFFFAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 0000000000005555 = 8000555500000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 0000000000005555 = FFFFAAAAFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 0000000000005555 = 5555000055555555 (cc=1) +XIHF 0000000000000000 ^ 000000000000AAAA = 0000AAAA00000000 (cc=1) +XIHF 0000000000000001 ^ 000000000000AAAA = 0000AAAA00000001 (cc=1) +XIHF 000000000000FFFF ^ 000000000000AAAA = 0000AAAA0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 000000000000AAAA = 0000AAAA00007FFF (cc=1) +XIHF 0000000000008000 ^ 000000000000AAAA = 0000AAAA00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 000000000000AAAA = 0000AAAAFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 000000000000AAAA = 0000AAAA80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 000000000000AAAA = 0000AAAA7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 000000000000AAAA = AAAA0000AAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 000000000000AAAA = 8000AAAA00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 000000000000AAAA = FFFF5555FFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 000000000000AAAA = 5555FFFF55555555 (cc=1) +XIHF 0000000000000000 ^ 00000000FFFF0000 = FFFF000000000000 (cc=1) +XIHF 0000000000000001 ^ 00000000FFFF0000 = FFFF000000000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000FFFF0000 = FFFF00000000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000FFFF0000 = FFFF000000007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000FFFF0000 = FFFF000000008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000FFFF0000 = FFFF0000FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000FFFF0000 = FFFF000080000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000FFFF0000 = FFFF00007FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000FFFF0000 = 5555AAAAAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 00000000FFFF0000 = 7FFF000000000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000FFFF0000 = 0000FFFFFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 00000000FFFF0000 = AAAA555555555555 (cc=1) +XIHF 0000000000000000 ^ 0000000055550000 = 5555000000000000 (cc=1) +XIHF 0000000000000001 ^ 0000000055550000 = 5555000000000001 (cc=1) +XIHF 000000000000FFFF ^ 0000000055550000 = 555500000000FFFF (cc=1) +XIHF 0000000000007FFF ^ 0000000055550000 = 5555000000007FFF (cc=1) +XIHF 0000000000008000 ^ 0000000055550000 = 5555000000008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 0000000055550000 = 55550000FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 0000000055550000 = 5555000080000000 (cc=1) +XIHF 000000007FFFFFFF ^ 0000000055550000 = 555500007FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 0000000055550000 = FFFFAAAAAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 0000000055550000 = D555000000000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 0000000055550000 = AAAAFFFFFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 0000000055550000 = 0000555555555555 (cc=1) +XIHF 0000000000000000 ^ 00000000AAAA0000 = AAAA000000000000 (cc=1) +XIHF 0000000000000001 ^ 00000000AAAA0000 = AAAA000000000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000AAAA0000 = AAAA00000000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000AAAA0000 = AAAA000000007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000AAAA0000 = AAAA000000008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000AAAA0000 = AAAA0000FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000AAAA0000 = AAAA000080000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000AAAA0000 = AAAA00007FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000AAAA0000 = 0000AAAAAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 00000000AAAA0000 = 2AAA000000000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000AAAA0000 = 5555FFFFFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 00000000AAAA0000 = FFFF555555555555 (cc=1) +XIHF 0000000000000000 ^ 00000000FFFFFFFF = FFFFFFFF00000000 (cc=1) +XIHF 0000000000000001 ^ 00000000FFFFFFFF = FFFFFFFF00000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000FFFFFFFF = FFFFFFFF0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000FFFFFFFF = FFFFFFFF00007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000FFFFFFFF = FFFFFFFF00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFFFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000FFFFFFFF = FFFFFFFF80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000FFFFFFFF = FFFFFFFF7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = 55555555AAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 00000000FFFFFFFF = 7FFFFFFF00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=0) +XIHF 5555555555555555 ^ 00000000FFFFFFFF = AAAAAAAA55555555 (cc=1) +XIHF 0000000000000000 ^ 0000000055555555 = 5555555500000000 (cc=1) +XIHF 0000000000000001 ^ 0000000055555555 = 5555555500000001 (cc=1) +XIHF 000000000000FFFF ^ 0000000055555555 = 555555550000FFFF (cc=1) +XIHF 0000000000007FFF ^ 0000000055555555 = 5555555500007FFF (cc=1) +XIHF 0000000000008000 ^ 0000000055555555 = 5555555500008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 0000000055555555 = 55555555FFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 0000000055555555 = 5555555580000000 (cc=1) +XIHF 000000007FFFFFFF ^ 0000000055555555 = 555555557FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +XIHF 8000000000000000 ^ 0000000055555555 = D555555500000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 0000000055555555 = 0000000055555555 (cc=0) +XIHF 0000000000000000 ^ 00000000AAAAAAAA = AAAAAAAA00000000 (cc=1) +XIHF 0000000000000001 ^ 00000000AAAAAAAA = AAAAAAAA00000001 (cc=1) +XIHF 000000000000FFFF ^ 00000000AAAAAAAA = AAAAAAAA0000FFFF (cc=1) +XIHF 0000000000007FFF ^ 00000000AAAAAAAA = AAAAAAAA00007FFF (cc=1) +XIHF 0000000000008000 ^ 00000000AAAAAAAA = AAAAAAAA00008000 (cc=1) +XIHF 00000000FFFFFFFF ^ 00000000AAAAAAAA = AAAAAAAAFFFFFFFF (cc=1) +XIHF 0000000080000000 ^ 00000000AAAAAAAA = AAAAAAAA80000000 (cc=1) +XIHF 000000007FFFFFFF ^ 00000000AAAAAAAA = AAAAAAAA7FFFFFFF (cc=1) +XIHF AAAAAAAAAAAAAAAA ^ 00000000AAAAAAAA = 00000000AAAAAAAA (cc=0) +XIHF 8000000000000000 ^ 00000000AAAAAAAA = 2AAAAAAA00000000 (cc=1) +XIHF FFFFFFFFFFFFFFFF ^ 00000000AAAAAAAA = 55555555FFFFFFFF (cc=1) +XIHF 5555555555555555 ^ 00000000AAAAAAAA = FFFFFFFF55555555 (cc=1) +XILF 0000000000000000 ^ 0000000000000000 = 0000000000000000 (cc=0) +XILF 0000000000000001 ^ 0000000000000000 = 0000000000000001 (cc=1) +XILF 000000000000FFFF ^ 0000000000000000 = 000000000000FFFF (cc=1) +XILF 0000000000007FFF ^ 0000000000000000 = 0000000000007FFF (cc=1) +XILF 0000000000008000 ^ 0000000000000000 = 0000000000008000 (cc=1) +XILF 00000000FFFFFFFF ^ 0000000000000000 = 00000000FFFFFFFF (cc=1) +XILF 0000000080000000 ^ 0000000000000000 = 0000000080000000 (cc=1) +XILF 000000007FFFFFFF ^ 0000000000000000 = 000000007FFFFFFF (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 0000000000000000 = AAAAAAAAAAAAAAAA (cc=1) +XILF 8000000000000000 ^ 0000000000000000 = 8000000000000000 (cc=0) +XILF FFFFFFFFFFFFFFFF ^ 0000000000000000 = FFFFFFFFFFFFFFFF (cc=1) +XILF 5555555555555555 ^ 0000000000000000 = 5555555555555555 (cc=1) +XILF 0000000000000000 ^ 00000000000000FF = 00000000000000FF (cc=1) +XILF 0000000000000001 ^ 00000000000000FF = 00000000000000FE (cc=1) +XILF 000000000000FFFF ^ 00000000000000FF = 000000000000FF00 (cc=1) +XILF 0000000000007FFF ^ 00000000000000FF = 0000000000007F00 (cc=1) +XILF 0000000000008000 ^ 00000000000000FF = 00000000000080FF (cc=1) +XILF 00000000FFFFFFFF ^ 00000000000000FF = 00000000FFFFFF00 (cc=1) +XILF 0000000080000000 ^ 00000000000000FF = 00000000800000FF (cc=1) +XILF 000000007FFFFFFF ^ 00000000000000FF = 000000007FFFFF00 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000000000FF = AAAAAAAAAAAAAA55 (cc=1) +XILF 8000000000000000 ^ 00000000000000FF = 80000000000000FF (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000000000FF = FFFFFFFFFFFFFF00 (cc=1) +XILF 5555555555555555 ^ 00000000000000FF = 55555555555555AA (cc=1) +XILF 0000000000000000 ^ 0000000000000055 = 0000000000000055 (cc=1) +XILF 0000000000000001 ^ 0000000000000055 = 0000000000000054 (cc=1) +XILF 000000000000FFFF ^ 0000000000000055 = 000000000000FFAA (cc=1) +XILF 0000000000007FFF ^ 0000000000000055 = 0000000000007FAA (cc=1) +XILF 0000000000008000 ^ 0000000000000055 = 0000000000008055 (cc=1) +XILF 00000000FFFFFFFF ^ 0000000000000055 = 00000000FFFFFFAA (cc=1) +XILF 0000000080000000 ^ 0000000000000055 = 0000000080000055 (cc=1) +XILF 000000007FFFFFFF ^ 0000000000000055 = 000000007FFFFFAA (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 0000000000000055 = AAAAAAAAAAAAAAFF (cc=1) +XILF 8000000000000000 ^ 0000000000000055 = 8000000000000055 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 0000000000000055 = FFFFFFFFFFFFFFAA (cc=1) +XILF 5555555555555555 ^ 0000000000000055 = 5555555555555500 (cc=1) +XILF 0000000000000000 ^ 00000000000000AA = 00000000000000AA (cc=1) +XILF 0000000000000001 ^ 00000000000000AA = 00000000000000AB (cc=1) +XILF 000000000000FFFF ^ 00000000000000AA = 000000000000FF55 (cc=1) +XILF 0000000000007FFF ^ 00000000000000AA = 0000000000007F55 (cc=1) +XILF 0000000000008000 ^ 00000000000000AA = 00000000000080AA (cc=1) +XILF 00000000FFFFFFFF ^ 00000000000000AA = 00000000FFFFFF55 (cc=1) +XILF 0000000080000000 ^ 00000000000000AA = 00000000800000AA (cc=1) +XILF 000000007FFFFFFF ^ 00000000000000AA = 000000007FFFFF55 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000000000AA = AAAAAAAAAAAAAA00 (cc=1) +XILF 8000000000000000 ^ 00000000000000AA = 80000000000000AA (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000000000AA = FFFFFFFFFFFFFF55 (cc=1) +XILF 5555555555555555 ^ 00000000000000AA = 55555555555555FF (cc=1) +XILF 0000000000000000 ^ 000000000000FFFF = 000000000000FFFF (cc=1) +XILF 0000000000000001 ^ 000000000000FFFF = 000000000000FFFE (cc=1) +XILF 000000000000FFFF ^ 000000000000FFFF = 0000000000000000 (cc=0) +XILF 0000000000007FFF ^ 000000000000FFFF = 0000000000008000 (cc=1) +XILF 0000000000008000 ^ 000000000000FFFF = 0000000000007FFF (cc=1) +XILF 00000000FFFFFFFF ^ 000000000000FFFF = 00000000FFFF0000 (cc=1) +XILF 0000000080000000 ^ 000000000000FFFF = 000000008000FFFF (cc=1) +XILF 000000007FFFFFFF ^ 000000000000FFFF = 000000007FFF0000 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 000000000000FFFF = AAAAAAAAAAAA5555 (cc=1) +XILF 8000000000000000 ^ 000000000000FFFF = 800000000000FFFF (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 000000000000FFFF = FFFFFFFFFFFF0000 (cc=1) +XILF 5555555555555555 ^ 000000000000FFFF = 555555555555AAAA (cc=1) +XILF 0000000000000000 ^ 0000000000005555 = 0000000000005555 (cc=1) +XILF 0000000000000001 ^ 0000000000005555 = 0000000000005554 (cc=1) +XILF 000000000000FFFF ^ 0000000000005555 = 000000000000AAAA (cc=1) +XILF 0000000000007FFF ^ 0000000000005555 = 0000000000002AAA (cc=1) +XILF 0000000000008000 ^ 0000000000005555 = 000000000000D555 (cc=1) +XILF 00000000FFFFFFFF ^ 0000000000005555 = 00000000FFFFAAAA (cc=1) +XILF 0000000080000000 ^ 0000000000005555 = 0000000080005555 (cc=1) +XILF 000000007FFFFFFF ^ 0000000000005555 = 000000007FFFAAAA (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 0000000000005555 = AAAAAAAAAAAAFFFF (cc=1) +XILF 8000000000000000 ^ 0000000000005555 = 8000000000005555 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 0000000000005555 = FFFFFFFFFFFFAAAA (cc=1) +XILF 5555555555555555 ^ 0000000000005555 = 5555555555550000 (cc=1) +XILF 0000000000000000 ^ 000000000000AAAA = 000000000000AAAA (cc=1) +XILF 0000000000000001 ^ 000000000000AAAA = 000000000000AAAB (cc=1) +XILF 000000000000FFFF ^ 000000000000AAAA = 0000000000005555 (cc=1) +XILF 0000000000007FFF ^ 000000000000AAAA = 000000000000D555 (cc=1) +XILF 0000000000008000 ^ 000000000000AAAA = 0000000000002AAA (cc=1) +XILF 00000000FFFFFFFF ^ 000000000000AAAA = 00000000FFFF5555 (cc=1) +XILF 0000000080000000 ^ 000000000000AAAA = 000000008000AAAA (cc=1) +XILF 000000007FFFFFFF ^ 000000000000AAAA = 000000007FFF5555 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 000000000000AAAA = AAAAAAAAAAAA0000 (cc=1) +XILF 8000000000000000 ^ 000000000000AAAA = 800000000000AAAA (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 000000000000AAAA = FFFFFFFFFFFF5555 (cc=1) +XILF 5555555555555555 ^ 000000000000AAAA = 555555555555FFFF (cc=1) +XILF 0000000000000000 ^ 00000000FFFF0000 = 00000000FFFF0000 (cc=1) +XILF 0000000000000001 ^ 00000000FFFF0000 = 00000000FFFF0001 (cc=1) +XILF 000000000000FFFF ^ 00000000FFFF0000 = 00000000FFFFFFFF (cc=1) +XILF 0000000000007FFF ^ 00000000FFFF0000 = 00000000FFFF7FFF (cc=1) +XILF 0000000000008000 ^ 00000000FFFF0000 = 00000000FFFF8000 (cc=1) +XILF 00000000FFFFFFFF ^ 00000000FFFF0000 = 000000000000FFFF (cc=1) +XILF 0000000080000000 ^ 00000000FFFF0000 = 000000007FFF0000 (cc=1) +XILF 000000007FFFFFFF ^ 00000000FFFF0000 = 000000008000FFFF (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000FFFF0000 = AAAAAAAA5555AAAA (cc=1) +XILF 8000000000000000 ^ 00000000FFFF0000 = 80000000FFFF0000 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000FFFF0000 = FFFFFFFF0000FFFF (cc=1) +XILF 5555555555555555 ^ 00000000FFFF0000 = 55555555AAAA5555 (cc=1) +XILF 0000000000000000 ^ 0000000055550000 = 0000000055550000 (cc=1) +XILF 0000000000000001 ^ 0000000055550000 = 0000000055550001 (cc=1) +XILF 000000000000FFFF ^ 0000000055550000 = 000000005555FFFF (cc=1) +XILF 0000000000007FFF ^ 0000000055550000 = 0000000055557FFF (cc=1) +XILF 0000000000008000 ^ 0000000055550000 = 0000000055558000 (cc=1) +XILF 00000000FFFFFFFF ^ 0000000055550000 = 00000000AAAAFFFF (cc=1) +XILF 0000000080000000 ^ 0000000055550000 = 00000000D5550000 (cc=1) +XILF 000000007FFFFFFF ^ 0000000055550000 = 000000002AAAFFFF (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 0000000055550000 = AAAAAAAAFFFFAAAA (cc=1) +XILF 8000000000000000 ^ 0000000055550000 = 8000000055550000 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 0000000055550000 = FFFFFFFFAAAAFFFF (cc=1) +XILF 5555555555555555 ^ 0000000055550000 = 5555555500005555 (cc=1) +XILF 0000000000000000 ^ 00000000AAAA0000 = 00000000AAAA0000 (cc=1) +XILF 0000000000000001 ^ 00000000AAAA0000 = 00000000AAAA0001 (cc=1) +XILF 000000000000FFFF ^ 00000000AAAA0000 = 00000000AAAAFFFF (cc=1) +XILF 0000000000007FFF ^ 00000000AAAA0000 = 00000000AAAA7FFF (cc=1) +XILF 0000000000008000 ^ 00000000AAAA0000 = 00000000AAAA8000 (cc=1) +XILF 00000000FFFFFFFF ^ 00000000AAAA0000 = 000000005555FFFF (cc=1) +XILF 0000000080000000 ^ 00000000AAAA0000 = 000000002AAA0000 (cc=1) +XILF 000000007FFFFFFF ^ 00000000AAAA0000 = 00000000D555FFFF (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000AAAA0000 = AAAAAAAA0000AAAA (cc=1) +XILF 8000000000000000 ^ 00000000AAAA0000 = 80000000AAAA0000 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000AAAA0000 = FFFFFFFF5555FFFF (cc=1) +XILF 5555555555555555 ^ 00000000AAAA0000 = 55555555FFFF5555 (cc=1) +XILF 0000000000000000 ^ 00000000FFFFFFFF = 00000000FFFFFFFF (cc=1) +XILF 0000000000000001 ^ 00000000FFFFFFFF = 00000000FFFFFFFE (cc=1) +XILF 000000000000FFFF ^ 00000000FFFFFFFF = 00000000FFFF0000 (cc=1) +XILF 0000000000007FFF ^ 00000000FFFFFFFF = 00000000FFFF8000 (cc=1) +XILF 0000000000008000 ^ 00000000FFFFFFFF = 00000000FFFF7FFF (cc=1) +XILF 00000000FFFFFFFF ^ 00000000FFFFFFFF = 0000000000000000 (cc=0) +XILF 0000000080000000 ^ 00000000FFFFFFFF = 000000007FFFFFFF (cc=1) +XILF 000000007FFFFFFF ^ 00000000FFFFFFFF = 0000000080000000 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000FFFFFFFF = AAAAAAAA55555555 (cc=1) +XILF 8000000000000000 ^ 00000000FFFFFFFF = 80000000FFFFFFFF (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000FFFFFFFF = FFFFFFFF00000000 (cc=0) +XILF 5555555555555555 ^ 00000000FFFFFFFF = 55555555AAAAAAAA (cc=1) +XILF 0000000000000000 ^ 0000000055555555 = 0000000055555555 (cc=1) +XILF 0000000000000001 ^ 0000000055555555 = 0000000055555554 (cc=1) +XILF 000000000000FFFF ^ 0000000055555555 = 000000005555AAAA (cc=1) +XILF 0000000000007FFF ^ 0000000055555555 = 0000000055552AAA (cc=1) +XILF 0000000000008000 ^ 0000000055555555 = 000000005555D555 (cc=1) +XILF 00000000FFFFFFFF ^ 0000000055555555 = 00000000AAAAAAAA (cc=1) +XILF 0000000080000000 ^ 0000000055555555 = 00000000D5555555 (cc=1) +XILF 000000007FFFFFFF ^ 0000000055555555 = 000000002AAAAAAA (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 0000000055555555 = AAAAAAAAFFFFFFFF (cc=1) +XILF 8000000000000000 ^ 0000000055555555 = 8000000055555555 (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 0000000055555555 = FFFFFFFFAAAAAAAA (cc=1) +XILF 5555555555555555 ^ 0000000055555555 = 5555555500000000 (cc=0) +XILF 0000000000000000 ^ 00000000AAAAAAAA = 00000000AAAAAAAA (cc=1) +XILF 0000000000000001 ^ 00000000AAAAAAAA = 00000000AAAAAAAB (cc=1) +XILF 000000000000FFFF ^ 00000000AAAAAAAA = 00000000AAAA5555 (cc=1) +XILF 0000000000007FFF ^ 00000000AAAAAAAA = 00000000AAAAD555 (cc=1) +XILF 0000000000008000 ^ 00000000AAAAAAAA = 00000000AAAA2AAA (cc=1) +XILF 00000000FFFFFFFF ^ 00000000AAAAAAAA = 0000000055555555 (cc=1) +XILF 0000000080000000 ^ 00000000AAAAAAAA = 000000002AAAAAAA (cc=1) +XILF 000000007FFFFFFF ^ 00000000AAAAAAAA = 00000000D5555555 (cc=1) +XILF AAAAAAAAAAAAAAAA ^ 00000000AAAAAAAA = AAAAAAAA00000000 (cc=0) +XILF 8000000000000000 ^ 00000000AAAAAAAA = 80000000AAAAAAAA (cc=1) +XILF FFFFFFFFFFFFFFFF ^ 00000000AAAAAAAA = FFFFFFFF55555555 (cc=1) +XILF 5555555555555555 ^ 00000000AAAAAAAA = 55555555FFFFFFFF (cc=1) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.vgtest new file mode 100644 index 000000000..27baf358d --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xor_EI.vgtest @@ -0,0 +1,2 @@ +prog: xor_EI +prereq: test -x xor_EI diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/valgrind_cpp_test.cpp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/valgrind_cpp_test.cpp index f4edade70..41a522b5e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/valgrind_cpp_test.cpp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/valgrind_cpp_test.cpp @@ -9,9 +9,9 @@ #include "pub_tool_libcbase.h" #include "pub_tool_mallocfree.h" #include "pub_tool_libcprint.h" +#include "pub_tool_vki.h" #include "pub_tool_libcfile.h" #include "pub_tool_libcproc.h" -#include "pub_tool_vki.h" #include "pub_tool_threadstate.h" #include "pub_tool_errormgr.h" #include "pub_tool_options.h" diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86-linux/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86-linux/Makefile.in index 1203e77c2..6ff87a30a 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86-linux/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86-linux/Makefile.in @@ -118,6 +118,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -147,12 +149,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -305,7 +302,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -334,6 +331,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -362,6 +364,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.am index c0f0c08ae..261cadcaf 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.am @@ -21,6 +21,7 @@ endif ## FIXME: move lzcnt32 to SSE4 conditionalisation, when that happens. EXTRA_DIST = \ + aad_aam.stdout.exp aad_aam.stderr.exp aad_aam.vgtest \ badseg.stderr.exp badseg.stdout.exp badseg.vgtest \ bt_everything.stderr.exp bt_everything.stdout.exp bt_everything.vgtest \ bt_literal.stderr.exp bt_literal.stdout.exp bt_literal.vgtest \ @@ -53,6 +54,7 @@ EXTRA_DIST = \ movx.stderr.exp movx.stdout.exp movx.vgtest \ pushpopseg.stderr.exp pushpopseg.stdout.exp pushpopseg.vgtest \ sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \ + shift_ndep.stderr.exp shift_ndep.stdout.exp shift_ndep.vgtest \ smc1.stderr.exp smc1.stdout.exp smc1.vgtest \ ssse3_misaligned.stderr.exp ssse3_misaligned.stdout.exp \ ssse3_misaligned.vgtest ssse3_misaligned.c \ @@ -61,6 +63,7 @@ EXTRA_DIST = \ xadd.stdout.exp xadd.stderr.exp xadd.vgtest check_PROGRAMS = \ + aad_aam \ badseg \ bt_everything \ bt_literal \ @@ -72,8 +75,6 @@ check_PROGRAMS = \ bug152818-x86 \ cmpxchg8b \ cpuid \ - cse_fail \ - faultstatus \ fcmovnu \ fpu_lazy_eflags \ fxtract \ @@ -84,10 +85,10 @@ check_PROGRAMS = \ jcxz \ lahf \ looper \ - lzcnt32 \ movx \ pushpopseg \ sbbmisc \ + shift_ndep \ smc1 \ x86locked \ yield \ @@ -95,6 +96,12 @@ check_PROGRAMS = \ if BUILD_SSSE3_TESTS check_PROGRAMS += ssse3_misaligned endif +if BUILD_LZCNT_TESTS + check_PROGRAMS += lzcnt32 +endif +if !VGCONF_OS_IS_DARWIN + check_PROGRAMS += cse_fail faultstatus +endif AM_CFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE) @@ -113,6 +120,7 @@ endif cpuid_SOURCES = cpuid_c.c cpuid_s.S # fpu_lazy_eflags must use these flags -- the bug only occurred with them. fpu_lazy_eflags_CFLAGS = $(AM_CFLAGS) -O2 -march=pentiumpro +fxtract_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_OVERFLOW@ fxtract_LDADD = -lm insn_basic_SOURCES = insn_basic.def insn_basic_LDADD = -lm diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.in index 720dd0d1d..da1e03492 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/Makefile.in @@ -48,26 +48,28 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(top_srcdir)/Makefile.tool-tests.am @BUILD_SSE3_TESTS_TRUE@am__append_1 = insn_sse3 @BUILD_SSSE3_TESTS_TRUE@am__append_2 = insn_ssse3 -check_PROGRAMS = badseg$(EXEEXT) bt_everything$(EXEEXT) \ - bt_literal$(EXEEXT) bug125959-x86$(EXEEXT) \ - bug126147-x86$(EXEEXT) bug132813-x86$(EXEEXT) \ - bug135421-x86$(EXEEXT) bug137714-x86$(EXEEXT) \ - bug152818-x86$(EXEEXT) cmpxchg8b$(EXEEXT) cpuid$(EXEEXT) \ - cse_fail$(EXEEXT) faultstatus$(EXEEXT) fcmovnu$(EXEEXT) \ +check_PROGRAMS = aad_aam$(EXEEXT) badseg$(EXEEXT) \ + bt_everything$(EXEEXT) bt_literal$(EXEEXT) \ + bug125959-x86$(EXEEXT) bug126147-x86$(EXEEXT) \ + bug132813-x86$(EXEEXT) bug135421-x86$(EXEEXT) \ + bug137714-x86$(EXEEXT) bug152818-x86$(EXEEXT) \ + cmpxchg8b$(EXEEXT) cpuid$(EXEEXT) fcmovnu$(EXEEXT) \ fpu_lazy_eflags$(EXEEXT) fxtract$(EXEEXT) getseg$(EXEEXT) \ incdec_alt$(EXEEXT) $(am__EXEEXT_3) int$(EXEEXT) jcxz$(EXEEXT) \ - lahf$(EXEEXT) looper$(EXEEXT) lzcnt32$(EXEEXT) movx$(EXEEXT) \ - pushpopseg$(EXEEXT) sbbmisc$(EXEEXT) smc1$(EXEEXT) \ - x86locked$(EXEEXT) yield$(EXEEXT) xadd$(EXEEXT) \ - $(am__EXEEXT_4) + lahf$(EXEEXT) looper$(EXEEXT) movx$(EXEEXT) \ + pushpopseg$(EXEEXT) sbbmisc$(EXEEXT) shift_ndep$(EXEEXT) \ + smc1$(EXEEXT) x86locked$(EXEEXT) yield$(EXEEXT) xadd$(EXEEXT) \ + $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) @BUILD_SSSE3_TESTS_TRUE@am__append_3 = ssse3_misaligned +@BUILD_LZCNT_TESTS_TRUE@am__append_4 = lzcnt32 +@VGCONF_OS_IS_DARWIN_FALSE@am__append_5 = cse_fail faultstatus # Some of the tests (bug125959_x86, bug152818_x86, insn_*) need # -mdynamic-no-pic. I tried setting *_CFLAGS separately for all of them, # but it caused problems with the generation of insn_*.c. So just use this # crude approach of setting -mdynamic-no-pic for all tests in this # directory. -@VGCONF_OS_IS_DARWIN_TRUE@am__append_4 = -mdynamic-no-pic +@VGCONF_OS_IS_DARWIN_TRUE@am__append_6 = -mdynamic-no-pic subdir = none/tests/x86 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -84,6 +86,12 @@ am__EXEEXT_3 = insn_basic$(EXEEXT) insn_fpu$(EXEEXT) \ insn_sse$(EXEEXT) insn_sse2$(EXEEXT) $(am__EXEEXT_1) \ $(am__EXEEXT_2) @BUILD_SSSE3_TESTS_TRUE@am__EXEEXT_4 = ssse3_misaligned$(EXEEXT) +@BUILD_LZCNT_TESTS_TRUE@am__EXEEXT_5 = lzcnt32$(EXEEXT) +@VGCONF_OS_IS_DARWIN_FALSE@am__EXEEXT_6 = cse_fail$(EXEEXT) \ +@VGCONF_OS_IS_DARWIN_FALSE@ faultstatus$(EXEEXT) +aad_aam_SOURCES = aad_aam.c +aad_aam_OBJECTS = aad_aam.$(OBJEXT) +aad_aam_LDADD = $(LDADD) badseg_SOURCES = badseg.c badseg_OBJECTS = badseg.$(OBJEXT) badseg_LDADD = $(LDADD) @@ -132,8 +140,10 @@ fpu_lazy_eflags_LDADD = $(LDADD) fpu_lazy_eflags_LINK = $(CCLD) $(fpu_lazy_eflags_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ fxtract_SOURCES = fxtract.c -fxtract_OBJECTS = fxtract.$(OBJEXT) +fxtract_OBJECTS = fxtract-fxtract.$(OBJEXT) fxtract_DEPENDENCIES = +fxtract_LINK = $(CCLD) $(fxtract_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ getseg_SOURCES = getseg.c getseg_OBJECTS = getseg.$(OBJEXT) getseg_LDADD = $(LDADD) @@ -191,6 +201,9 @@ pushpopseg_LDADD = $(LDADD) sbbmisc_SOURCES = sbbmisc.c sbbmisc_OBJECTS = sbbmisc.$(OBJEXT) sbbmisc_LDADD = $(LDADD) +shift_ndep_SOURCES = shift_ndep.c +shift_ndep_OBJECTS = shift_ndep.$(OBJEXT) +shift_ndep_LDADD = $(LDADD) smc1_SOURCES = smc1.c smc1_OBJECTS = smc1.$(OBJEXT) smc1_LDADD = $(LDADD) @@ -219,28 +232,28 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = badseg.c bt_everything.c bt_literal.c bug125959-x86.c \ - bug126147-x86.c bug132813-x86.c bug135421-x86.c \ - bug137714-x86.c bug152818-x86.c cmpxchg8b.c $(cpuid_SOURCES) \ - cse_fail.c faultstatus.c fcmovnu.c fpu_lazy_eflags.c fxtract.c \ - getseg.c incdec_alt.c $(insn_basic_SOURCES) \ - $(insn_cmov_SOURCES) $(insn_fpu_SOURCES) $(insn_mmx_SOURCES) \ - $(insn_mmxext_SOURCES) $(insn_sse_SOURCES) \ +SOURCES = aad_aam.c badseg.c bt_everything.c bt_literal.c \ + bug125959-x86.c bug126147-x86.c bug132813-x86.c \ + bug135421-x86.c bug137714-x86.c bug152818-x86.c cmpxchg8b.c \ + $(cpuid_SOURCES) cse_fail.c faultstatus.c fcmovnu.c \ + fpu_lazy_eflags.c fxtract.c getseg.c incdec_alt.c \ + $(insn_basic_SOURCES) $(insn_cmov_SOURCES) $(insn_fpu_SOURCES) \ + $(insn_mmx_SOURCES) $(insn_mmxext_SOURCES) $(insn_sse_SOURCES) \ $(insn_sse2_SOURCES) $(insn_sse3_SOURCES) \ $(insn_ssse3_SOURCES) int.c jcxz.c lahf.c looper.c lzcnt32.c \ - movx.c pushpopseg.c sbbmisc.c smc1.c ssse3_misaligned.c \ - x86locked.c xadd.c yield.c -DIST_SOURCES = badseg.c bt_everything.c bt_literal.c bug125959-x86.c \ - bug126147-x86.c bug132813-x86.c bug135421-x86.c \ - bug137714-x86.c bug152818-x86.c cmpxchg8b.c $(cpuid_SOURCES) \ - cse_fail.c faultstatus.c fcmovnu.c fpu_lazy_eflags.c fxtract.c \ - getseg.c incdec_alt.c $(insn_basic_SOURCES) \ - $(insn_cmov_SOURCES) $(insn_fpu_SOURCES) $(insn_mmx_SOURCES) \ - $(insn_mmxext_SOURCES) $(insn_sse_SOURCES) \ + movx.c pushpopseg.c sbbmisc.c shift_ndep.c smc1.c \ + ssse3_misaligned.c x86locked.c xadd.c yield.c +DIST_SOURCES = aad_aam.c badseg.c bt_everything.c bt_literal.c \ + bug125959-x86.c bug126147-x86.c bug132813-x86.c \ + bug135421-x86.c bug137714-x86.c bug152818-x86.c cmpxchg8b.c \ + $(cpuid_SOURCES) cse_fail.c faultstatus.c fcmovnu.c \ + fpu_lazy_eflags.c fxtract.c getseg.c incdec_alt.c \ + $(insn_basic_SOURCES) $(insn_cmov_SOURCES) $(insn_fpu_SOURCES) \ + $(insn_mmx_SOURCES) $(insn_mmxext_SOURCES) $(insn_sse_SOURCES) \ $(insn_sse2_SOURCES) $(insn_sse3_SOURCES) \ $(insn_ssse3_SOURCES) int.c jcxz.c lahf.c looper.c lzcnt32.c \ - movx.c pushpopseg.c sbbmisc.c smc1.c ssse3_misaligned.c \ - x86locked.c xadd.c yield.c + movx.c pushpopseg.c sbbmisc.c shift_ndep.c smc1.c \ + ssse3_misaligned.c x86locked.c xadd.c yield.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -286,6 +299,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -315,12 +330,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -473,7 +483,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -502,6 +512,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -530,6 +545,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -541,7 +557,7 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ # Nb: Tools need to augment these flags with an arch-selection option, such # as $(AM_FLAG_M3264_PRI). AM_CFLAGS = -Winline -Wall -Wshadow -g @FLAG_M32@ $(FLAG_MMMX) \ - $(FLAG_MSSE) $(am__append_4) + $(FLAG_MSSE) $(am__append_6) AM_CXXFLAGS = -Winline -Wall -Wshadow -g @FLAG_M32@ $(FLAG_MMMX) \ $(FLAG_MSSE) # Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of @@ -557,6 +573,7 @@ INSN_TESTS = insn_basic insn_fpu insn_cmov insn_mmx insn_mmxext \ # to avoid packaging screwups if 'make dist' is run on a machine # which failed the BUILD_SSE3_TESTS test in configure.in. EXTRA_DIST = \ + aad_aam.stdout.exp aad_aam.stderr.exp aad_aam.vgtest \ badseg.stderr.exp badseg.stdout.exp badseg.vgtest \ bt_everything.stderr.exp bt_everything.stdout.exp bt_everything.vgtest \ bt_literal.stderr.exp bt_literal.stdout.exp bt_literal.vgtest \ @@ -589,6 +606,7 @@ EXTRA_DIST = \ movx.stderr.exp movx.stdout.exp movx.vgtest \ pushpopseg.stderr.exp pushpopseg.stdout.exp pushpopseg.vgtest \ sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \ + shift_ndep.stderr.exp shift_ndep.stdout.exp shift_ndep.vgtest \ smc1.stderr.exp smc1.stdout.exp smc1.vgtest \ ssse3_misaligned.stderr.exp ssse3_misaligned.stdout.exp \ ssse3_misaligned.vgtest ssse3_misaligned.c \ @@ -599,6 +617,7 @@ EXTRA_DIST = \ cpuid_SOURCES = cpuid_c.c cpuid_s.S # fpu_lazy_eflags must use these flags -- the bug only occurred with them. fpu_lazy_eflags_CFLAGS = $(AM_CFLAGS) -O2 -march=pentiumpro +fxtract_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_OVERFLOW@ fxtract_LDADD = -lm insn_basic_SOURCES = insn_basic.def insn_basic_LDADD = -lm @@ -657,6 +676,9 @@ $(am__aclocal_m4_deps): clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +aad_aam$(EXEEXT): $(aad_aam_OBJECTS) $(aad_aam_DEPENDENCIES) + @rm -f aad_aam$(EXEEXT) + $(LINK) $(aad_aam_OBJECTS) $(aad_aam_LDADD) $(LIBS) badseg$(EXEEXT): $(badseg_OBJECTS) $(badseg_DEPENDENCIES) @rm -f badseg$(EXEEXT) $(LINK) $(badseg_OBJECTS) $(badseg_LDADD) $(LIBS) @@ -704,7 +726,7 @@ fpu_lazy_eflags$(EXEEXT): $(fpu_lazy_eflags_OBJECTS) $(fpu_lazy_eflags_DEPENDENC $(fpu_lazy_eflags_LINK) $(fpu_lazy_eflags_OBJECTS) $(fpu_lazy_eflags_LDADD) $(LIBS) fxtract$(EXEEXT): $(fxtract_OBJECTS) $(fxtract_DEPENDENCIES) @rm -f fxtract$(EXEEXT) - $(LINK) $(fxtract_OBJECTS) $(fxtract_LDADD) $(LIBS) + $(fxtract_LINK) $(fxtract_OBJECTS) $(fxtract_LDADD) $(LIBS) getseg$(EXEEXT): $(getseg_OBJECTS) $(getseg_DEPENDENCIES) @rm -f getseg$(EXEEXT) $(LINK) $(getseg_OBJECTS) $(getseg_LDADD) $(LIBS) @@ -762,6 +784,9 @@ pushpopseg$(EXEEXT): $(pushpopseg_OBJECTS) $(pushpopseg_DEPENDENCIES) sbbmisc$(EXEEXT): $(sbbmisc_OBJECTS) $(sbbmisc_DEPENDENCIES) @rm -f sbbmisc$(EXEEXT) $(LINK) $(sbbmisc_OBJECTS) $(sbbmisc_LDADD) $(LIBS) +shift_ndep$(EXEEXT): $(shift_ndep_OBJECTS) $(shift_ndep_DEPENDENCIES) + @rm -f shift_ndep$(EXEEXT) + $(LINK) $(shift_ndep_OBJECTS) $(shift_ndep_LDADD) $(LIBS) smc1$(EXEEXT): $(smc1_OBJECTS) $(smc1_DEPENDENCIES) @rm -f smc1$(EXEEXT) $(LINK) $(smc1_OBJECTS) $(smc1_LDADD) $(LIBS) @@ -784,6 +809,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aad_aam.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/badseg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bt_everything.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bt_literal.Po@am__quote@ @@ -800,7 +826,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faultstatus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcmovnu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpu_lazy_eflags-fpu_lazy_eflags.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxtract.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxtract-fxtract.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getseg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incdec_alt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insn_basic.Po@am__quote@ @@ -820,6 +846,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pushpopseg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbbmisc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shift_ndep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smc1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssse3_misaligned.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86locked-x86locked.Po@am__quote@ @@ -868,6 +895,20 @@ fpu_lazy_eflags-fpu_lazy_eflags.obj: fpu_lazy_eflags.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fpu_lazy_eflags_CFLAGS) $(CFLAGS) -c -o fpu_lazy_eflags-fpu_lazy_eflags.obj `if test -f 'fpu_lazy_eflags.c'; then $(CYGPATH_W) 'fpu_lazy_eflags.c'; else $(CYGPATH_W) '$(srcdir)/fpu_lazy_eflags.c'; fi` +fxtract-fxtract.o: fxtract.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -MT fxtract-fxtract.o -MD -MP -MF $(DEPDIR)/fxtract-fxtract.Tpo -c -o fxtract-fxtract.o `test -f 'fxtract.c' || echo '$(srcdir)/'`fxtract.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fxtract-fxtract.Tpo $(DEPDIR)/fxtract-fxtract.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fxtract.c' object='fxtract-fxtract.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -c -o fxtract-fxtract.o `test -f 'fxtract.c' || echo '$(srcdir)/'`fxtract.c + +fxtract-fxtract.obj: fxtract.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -MT fxtract-fxtract.obj -MD -MP -MF $(DEPDIR)/fxtract-fxtract.Tpo -c -o fxtract-fxtract.obj `if test -f 'fxtract.c'; then $(CYGPATH_W) 'fxtract.c'; else $(CYGPATH_W) '$(srcdir)/fxtract.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fxtract-fxtract.Tpo $(DEPDIR)/fxtract-fxtract.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fxtract.c' object='fxtract-fxtract.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fxtract_CFLAGS) $(CFLAGS) -c -o fxtract-fxtract.obj `if test -f 'fxtract.c'; then $(CYGPATH_W) 'fxtract.c'; else $(CYGPATH_W) '$(srcdir)/fxtract.c'; fi` + x86locked-x86locked.o: x86locked.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x86locked_CFLAGS) $(CFLAGS) -MT x86locked-x86locked.o -MD -MP -MF $(DEPDIR)/x86locked-x86locked.Tpo -c -o x86locked-x86locked.o `test -f 'x86locked.c' || echo '$(srcdir)/'`x86locked.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/x86locked-x86locked.Tpo $(DEPDIR)/x86locked-x86locked.Po diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.c new file mode 100644 index 000000000..f81140b09 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.c @@ -0,0 +1,115 @@ +/* This tests the somewhat obscure 32-bit Intel aam and aad instructions */ +/* by Vince Weaver (vince _at_ deater.net ) */ + +#include + +int parity(int v) { + + int i; + int p = 1; + + for (i = 0; i < 8; i++) + p ^= (1 & (v >> i)); + return p; +} + +int main(int argc, char **argv) { + + printf("test begins\n"); + unsigned short i,out; + unsigned int flags; + int cf __attribute__((unused)),pf,af __attribute__((unused)),zf,sf; + int of __attribute__((unused)); + + /* test AAM */ + + for(i=0;i<65535;i++) { + // printf("%d, %d, %d\n",i,(i&0xff)/10,(i&0xff)%10); + out=i; + __asm__ __volatile__ ("mov %2 ,%%ax\n" + "aam\n" + "pushf\n" + "mov %%ax, %0\n" + "pop %%eax\n" + "mov %%eax, %1\n" + :"=r"(out), "=r"(flags) /* outputs */ + :"r"(out) /* input */ + :"%eax" /* clobbered */ + ); + cf=!!(flags&0x1); + pf=!!(flags&0x4); + af=!!(flags&0x10); + zf=!!(flags&0x40); + sf=!!(flags&0x80); + of=!!(flags&0x800); + + // printf("%d, %d, %d, ",i,(out>>8)&0xff,out&0xff); + // printf("%x CF=%d PF=%d AF=%d ZF=%d SF=%d OF=%d\n", + // flags,cf,pf,af,zf,sf,of); + + if (zf && ((out&0xff)!=0)) { + printf("Error with aam (zf)!\n"); + } + if (pf != parity(out&0xff)) { + printf("Error with aam (pf)!\n"); + } + if (sf != !!(out&0x80)) { + printf("Error with aam (sf)!\n"); + } + + + if ( ((out>>8)&0xff) != ((i&0xff)/10)) { + printf("Error with aam!\n"); + } + if ( (out&0xff) != ((i&0xff)%10)) { + printf("Error with aam!\n"); + } + + } + + /* test AAD */ + + for(i=0;i<65535;i++) { + // printf("%x, %d\n",i, ((((i>>8)&0xff)*10)+(i&0xff))&0xff ); + out=i; + __asm__ __volatile__ ("mov %2 ,%%ax\n" + "aad\n" + "pushf\n" + "mov %%ax, %0\n" + "pop %%eax\n" + "mov %%eax, %1\n" + :"=r"(out), "=r"(flags) /* outputs */ + :"r"(out) /* input */ + :"%eax" /* clobbered */ +); + + cf=!!(flags&0x1); + pf=!!(flags&0x4); + af=!!(flags&0x10); + zf=!!(flags&0x40); + sf=!!(flags&0x80); + of=!!(flags&0x800); + + // printf("%x, %d ",i,out); + // printf("%x CF=%d PF=%d AF=%d ZF=%d SF=%d OF=%d\n", + // flags,cf,pf,af,zf,sf,of); + + if (zf && ((out&0xff)!=0)) { + printf("Error with aad (zf)!\n"); + } + if (pf != parity(out&0xff)) { + printf("Error with aad (pf)!\n"); + } + if (sf != !!(out&0x80)) { + printf("Error with aad (sf) %d %d!\n",sf,!!(out&0x80)); + } + + if ( out != ( ((((i>>8)&0xff)*10)+(i&0xff))&0xff) ) { + printf("Error with aad!\n"); + } + } + + printf("test completed\n"); + return 0; + +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.stdout.exp new file mode 100644 index 000000000..c8bde09b2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.stdout.exp @@ -0,0 +1,2 @@ +test begins +test completed diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.vgtest new file mode 100644 index 000000000..42655d530 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/aad_aam.vgtest @@ -0,0 +1,2 @@ +prog: aad_aam +vgopts: -q diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/gen_insn_test.pl b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/gen_insn_test.pl index 283583dc3..1fc3a3a58 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/gen_insn_test.pl +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/gen_insn_test.pl @@ -605,7 +605,12 @@ while (<>) foreach my $result (@results) { - if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/) + if ($result->{type} eq "xmm") + { + $result->{argnuml} = $argnum++; + $result->{argnumh} = $argnum++; + } + else { $result->{argnum} = $argnum++; } @@ -615,15 +620,15 @@ while (<>) { if (defined($arg->{name})) { - $arg->{argnum} = $argnum++; - } - } - - foreach my $result (@results) - { - if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/) - { - $result->{argnum} = $argnum++; + if ($arg->{type} eq "xmm") + { + $arg->{argnuml} = $argnum++; + $arg->{argnumh} = $argnum++; + } + else + { + $arg->{argnum} = $argnum++; + } } } @@ -658,8 +663,8 @@ while (<>) } elsif ($arg->{type} eq "xmm") { - print qq| \"movlps 0%$arg->{argnum}, %%$arg->{register}\\n\"\n|; - print qq| \"movhps 8%$arg->{argnum}, %%$arg->{register}\\n\"\n|; + print qq| \"movlps %$arg->{argnuml}, %%$arg->{register}\\n\"\n|; + print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|; } elsif ($arg->{type} eq "st") { @@ -767,8 +772,8 @@ while (<>) } elsif ($result->{type} eq "xmm") { - print qq| \"movlps %%$result->{register}, 0%$result->{argnum}\\n\"\n|; - print qq| \"movhps %%$result->{register}, 8%$result->{argnum}\\n\"\n|; + print qq| \"movlps %%$result->{register}, %$result->{argnuml}\\n\"\n|; + print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|; } elsif ($result->{type} eq "st") { @@ -817,11 +822,16 @@ while (<>) foreach my $result (@results) { - if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/) + if ($result->{type} eq "xmm") + { + print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|; + } + else { print qq|$prefix\"=m\" \($result->{name}\)|; - $prefix = ", "; } + + $prefix = ", "; } print qq|\n|; @@ -832,16 +842,15 @@ while (<>) { if (defined($arg->{name})) { - print qq|$prefix\"m\" \($arg->{name}\)|; - $prefix = ", "; - } - } - - foreach my $result (@results) - { - if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/) - { - print qq|$prefix\"m\" \($result->{name}\)|; + if ($arg->{type} eq "xmm") + { + print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|; + } + else + { + print qq|$prefix\"m\" \($arg->{name}\)|; + } + $prefix = ", "; } } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.c index 20340f9f4..322d6e17d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.c @@ -140,7 +140,58 @@ VG_SYM(adc_eb_gb_2) ":\n" "\tret\n" ); +extern void adc_ib_al ( void ); +asm("\n" +VG_SYM(adc_ib_al) ":\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +"\tclc\n" +"\tadcb $5, %al\n" +"\tmovb %al, " VG_SYM(out_b1) "\n" + +"\tmovb " VG_SYM(in_b) ", %al\n" +"\tstc\n" +"\tadcb $5, %al\n" +"\tmovb %al, " VG_SYM(out_b2) "\n" +"\tret\n" +); + + +extern void adc_iw_ax ( void ); +asm("\n" +VG_SYM(adc_iw_ax) ":\n" + +"\tmovw " VG_SYM(in_w) ", %ax\n" +"\tclc\n" +"\tadcw $555, %ax\n" +"\tmovw %ax, " VG_SYM(out_w1) "\n" + +"\tmovw " VG_SYM(in_w) ", %ax\n" +"\tstc\n" +"\tadcw $555, %ax\n" +"\tmovw %ax, " VG_SYM(out_w2) "\n" + +"\tret\n" +); + + +extern void adc_il_eax ( void ); +asm("\n" +VG_SYM(adc_il_eax) ":\n" + +"\tmovl " VG_SYM(in_l) ", %eax\n" +"\tclc\n" +"\tadcl $555666, %eax\n" +"\tmovl %eax, " VG_SYM(out_l1) "\n" + +"\tmovl " VG_SYM(in_l) ", %eax\n" +"\tstc\n" +"\tadcl $555666, %eax\n" +"\tmovl %eax, " VG_SYM(out_l2) "\n" + +"\tret\n" +); int main ( void ) @@ -177,5 +228,17 @@ int main ( void ) adc_eb_gb_2(); printf("r7 = %d %d\n", (int)out_b1, (int)out_b2); + in_b = 99; + adc_ib_al(); + printf("r8 = %d %d\n", (int)out_b1, (int)out_b2); + + in_w = 49999; + adc_iw_ax(); + printf("r9 = %d %d\n", (int)out_w1, (int)out_w2); + + in_l = 0xF0000000; + adc_il_eax(); + printf("r10 = %d %d\n", (int)out_l1, (int)out_l2); + return 0; } diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.stdout.exp index 6c616b05c..2945cc32b 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.stdout.exp +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/sbbmisc.stdout.exp @@ -5,3 +5,6 @@ r4 = 11 10 r5 = -11 -12 r6 = -69 -68 r7 = -113 -112 +r8 = 104 105 +r9 = -14982 -14981 +r10 = -267879790 -267879789 diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.c new file mode 100644 index 000000000..7fc34c982 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.c @@ -0,0 +1,42 @@ +#include "tests/asm.h" +#include + +/* Test whether a shift by zero properly preserves the CC_NDEP thunk. */ + +/* Check whether the carry flag is properly preserved by a variable + shift when the shift amount happens to be zero. */ +int shift_ndep( void ) +{ + char shift_amt = 0; + int x = -2; + /* First we set the carry flag. Then we increment %x, which sets + CC_OP to X86G_CC_OP_INCL and stores the carry (1) in + CC_NDEP. Then we left shift %x by a variable amount that happens + to be zero, which should leave both %x and all the flags + unchanged. Then we add-with-carry 0 to %x, which (assuming the + carry is still set as it should be) increments %x again. Thus the + expected final value for x is -2 + 1 + 1 = 0. + + If instead the shift clears CC_NDEP (as it would legally do if + the shift amount were non-zero), this will be interpeted as + clearing the carry bit, so the adc will be a no-op and the final + value of %x will instead be -1. + */ + asm ( + "stc" "\n\t" + "inc %[x]" "\n\t" + "shl %[shift_amt], %[x]" "\n\t" + "adc $0, %[x]" "\n\t" + : [x] "+r" (x) : [shift_amt] "c" (shift_amt)); + return x; +} + +int main ( void ) +{ + int r = shift_ndep(); + if (r == 0) + printf("Passed (%d).\n", r); + else + printf("Failed (%d).\n", r); + return 0; +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stderr.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stderr.exp new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stdout.exp b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stdout.exp new file mode 100644 index 000000000..9890a0bd7 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.stdout.exp @@ -0,0 +1 @@ +Passed (0). diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.vgtest b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.vgtest new file mode 100644 index 000000000..1629604aa --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/x86/shift_ndep.vgtest @@ -0,0 +1 @@ +prog: shift_ndep diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/Makefile.in index 4a446300b..6ac36650d 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/Makefile.in @@ -142,6 +142,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -171,12 +173,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -329,7 +326,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -358,6 +355,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -386,6 +388,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/sarp.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/sarp.c index 6265ad724..ffb808d24 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/sarp.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/sarp.c @@ -31,7 +31,7 @@ int main(void) { int i, sum = 0; - struct timespec req; + struct timespec req __attribute__((unused)); req.tv_sec = 0; req.tv_nsec = 100*1000*1000; // 0.1s diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/tinycc.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/tinycc.c index 51da47a85..42ff75fc5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/tinycc.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/perf/tinycc.c @@ -17975,7 +17975,8 @@ static void asm_instr(void) { CString astr, astr1; ASMOperand operands[MAX_ASM_OPERANDS]; - int nb_inputs, nb_outputs, nb_operands, i, must_subst, out_reg; + int nb_inputs __attribute__((unused)); + int nb_outputs, nb_operands, i, must_subst, out_reg; uint8_t clobber_regs[NB_ASM_REGS]; next(); @@ -18916,7 +18917,7 @@ static void put_got_entry(TCCState *s1, /* build GOT and PLT entries */ static void build_got_entries(TCCState *s1) { - Section *s, *symtab; + Section *s, *symtab __attribute__((unused)); Elf32_Rel *rel, *rel_end; Elf32_Sym *sym; int i, type, reloc_type, sym_index; @@ -20590,7 +20591,7 @@ static void rt_printline(unsigned long wanted_pc) static int rt_get_caller_pc(unsigned long *paddr, ucontext_t *uc, int level) { - unsigned long fp; + unsigned long fp __attribute__((unused)); //int i; if (level == 0) { @@ -20757,7 +20758,7 @@ TCCState *tcc_new(void) { const char *p, *r; TCCState *s; - TokenSym *ts; + TokenSym *ts __attribute__((unused)); int i, c; s = tcc_mallocz(sizeof(TCCState)); diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.am b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.am index 44e2636a4..6230ec068 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.am +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/Makefile.tool-tests.am dist_noinst_SCRIPTS = \ + check_vmx_cap \ filter_addresses \ filter_discards \ filter_libc \ @@ -20,7 +21,8 @@ check_PROGRAMS = \ arch_test \ os_test \ true \ - x86_amd64_features + x86_amd64_features \ + s390x_features AM_CFLAGS += $(AM_FLAG_M3264_PRI) AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.in index b3d67162c..b7c5ee377 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/Makefile.in @@ -49,7 +49,7 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(noinst_HEADERS) \ $(srcdir)/vg_regtest.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am check_PROGRAMS = arch_test$(EXEEXT) os_test$(EXEEXT) true$(EXEEXT) \ - x86_amd64_features$(EXEEXT) + x86_amd64_features$(EXEEXT) s390x_features$(EXEEXT) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in @@ -65,6 +65,9 @@ arch_test_LDADD = $(LDADD) os_test_SOURCES = os_test.c os_test_OBJECTS = os_test.$(OBJEXT) os_test_LDADD = $(LDADD) +s390x_features_SOURCES = s390x_features.c +s390x_features_OBJECTS = s390x_features.$(OBJEXT) +s390x_features_LDADD = $(LDADD) true_SOURCES = true.c true_OBJECTS = true.$(OBJEXT) true_LDADD = $(LDADD) @@ -83,8 +86,10 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = arch_test.c os_test.c true.c x86_amd64_features.c -DIST_SOURCES = arch_test.c os_test.c true.c x86_amd64_features.c +SOURCES = arch_test.c os_test.c s390x_features.c true.c \ + x86_amd64_features.c +DIST_SOURCES = arch_test.c os_test.c s390x_features.c true.c \ + x86_amd64_features.c HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags @@ -131,6 +136,8 @@ FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ FLAG_W_EXTRA = @FLAG_W_EXTRA@ FLAG_W_NO_EMPTY_BODY = @FLAG_W_NO_EMPTY_BODY@ FLAG_W_NO_FORMAT_ZERO_LENGTH = @FLAG_W_NO_FORMAT_ZERO_LENGTH@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ GDB = @GDB@ GENERATED_SUPP = @GENERATED_SUPP@ @@ -160,12 +167,7 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PREFERRED_STACK_BOUNDARY = @PREFERRED_STACK_BOUNDARY@ -QTCORE_CFLAGS = @QTCORE_CFLAGS@ -QTCORE_LIBS = @QTCORE_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -318,7 +320,7 @@ AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ $(AM_CFLAGS_BASE) -marm -AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g +AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@ AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE) AM_CCASFLAGS_PPC32_AIX5 = $(AM_CPPFLAGS_PPC32_AIX5) \ @@ -347,6 +349,11 @@ AM_CFLAGS_X86_L4RE = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \ AM_CCASFLAGS_X86_L4RE = $(L4_CPPFLAGS) @FLAG_M32@ -g AM_CXXFLAGS_X86_L4RE = $(L4_CXXFLAGS) @FLAG_M32@ #AM_CPPFLAGS_X86_L4RE = $(L4_CPPFLAGS) $(AM_CPPFLAGS_X86_L4RE) +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \ + @FLAG_M64@ -g + # Flags for the primary target. These must be used to build the # regtests and performance tests. In fact, these must be used to @@ -375,6 +382,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@ PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_L4RE = $(PRELOAD_LDFLAGS_COMMON_L4RE) @FLAG_M32@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ @@ -392,6 +400,7 @@ AM_CXXFLAGS = -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) AM_CCASFLAGS = $(AM_CPPFLAGS) @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) dist_noinst_SCRIPTS = \ + check_vmx_cap \ filter_addresses \ filter_discards \ filter_libc \ @@ -453,6 +462,9 @@ arch_test$(EXEEXT): $(arch_test_OBJECTS) $(arch_test_DEPENDENCIES) os_test$(EXEEXT): $(os_test_OBJECTS) $(os_test_DEPENDENCIES) @rm -f os_test$(EXEEXT) $(LINK) $(os_test_OBJECTS) $(os_test_LDADD) $(LIBS) +s390x_features$(EXEEXT): $(s390x_features_OBJECTS) $(s390x_features_DEPENDENCIES) + @rm -f s390x_features$(EXEEXT) + $(LINK) $(s390x_features_OBJECTS) $(s390x_features_LDADD) $(LIBS) true$(EXEEXT): $(true_OBJECTS) $(true_DEPENDENCIES) @rm -f true$(EXEEXT) $(LINK) $(true_OBJECTS) $(true_LDADD) $(LIBS) @@ -468,6 +480,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arch_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390x_features.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/true.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_amd64_features-x86_amd64_features.Po@am__quote@ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/arch_test.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/arch_test.c index 9db75e578..564fb2df5 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/arch_test.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/arch_test.c @@ -28,6 +28,7 @@ char* all_archs[] = { "ppc32", "ppc64", "arm", + "s390x", NULL }; @@ -47,6 +48,9 @@ static Bool go(char* arch) if ( 0 == strcmp( arch, "ppc64" ) ) return True; if ( 0 == strcmp( arch, "ppc32" ) ) return True; +#elif defined(VGP_s390x_linux) + if ( 0 == strcmp( arch, "s390x" ) ) return True; + #elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) if (sizeof(void*) == 8) { /* CPU is in 64-bit mode */ diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_isa-2_06_cap b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_isa-2_06_cap new file mode 100644 index 000000000..2b91cb0c2 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_isa-2_06_cap @@ -0,0 +1,11 @@ +#!/bin/sh + +# We use this script to check whether or not the processor supports Power ISA 2.06. + +LD_SHOW_AUXV=1 /bin/true | grep arch_2_06 > /dev/null 2>&1 +if [ "$?" -ne "0" ]; then + exit 1 +else + exit 0 +fi + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_vmx_cap b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_vmx_cap new file mode 100644 index 000000000..12e5f68ec --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/check_vmx_cap @@ -0,0 +1,11 @@ +#!/bin/sh + +# We use this script to check whether or not the processor supports VMX (aka "Altivec"). + +LD_SHOW_AUXV=1 /bin/true | grep altivec > /dev/null 2>&1 +if [ "$?" -ne "0" ]; then + exit 1 +else + exit 0 +fi + diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/s390x_features.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/s390x_features.c new file mode 100644 index 000000000..1e9e8e216 --- /dev/null +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/s390x_features.c @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include +#include + +// This file determines s390x features a processor supports. +// +// We return: +// - 0 if the machine matches the asked-for feature. +// - 1 if the machine does not. +// - 2 if the asked-for feature isn't recognised (this will be the case for +// any feature if run on a non-s390x machine). +// - 3 if there was a usage error (it also prints an error message). + +jmp_buf env; + +#if defined(VGA_s390x) + +void handle_sigill(int signum) +{ + longjmp(env, 1); +} + +unsigned long long stfle(void) +{ + + unsigned long long ret; + + signal(SIGILL, handle_sigill); + if (setjmp(env)) { + /* stfle not available: assume no facilities */ + return 0; + } else { + asm volatile("lghi 0, 0\n" + ".insn s,0xb2b00000,%0\n" /* stfle */ + : "=Q" (ret)::"0", "cc"); + return ret; + } +} + +static int go(char* cpu) +{ + unsigned long long facilities; + unsigned long long match; + + facilities = stfle(); + + if (strcmp(cpu, "s390x-zarch") == 0 ) { + match = (facilities & (1ULL << 62) && (facilities & (1ULL << 61))); + } else if (strcmp(cpu, "s390x-n3") == 0 ) { + match = (facilities & (1ULL << 63)); + } else if (strcmp(cpu, "s390x-stfle") == 0 ) { + match = (facilities & (1ULL << 56)); + } else if (strcmp(cpu, "s390x-ldisp") == 0 ) { + match = (facilities & (1ULL << 45) && (facilities & (1ULL << 44))); + } else if (strcmp(cpu, "s390x-eimm") == 0 ) { + match = (facilities & (1ULL << 42)); + } else if (strcmp(cpu, "s390x-stckf") == 0 ) { + match = (facilities & (1ULL << 38)); + } else if (strcmp(cpu, "s390x-genins") == 0 ) { + match = (facilities & (1ULL << 29)); + } else if (strcmp(cpu, "s390x-exrl") == 0 ) { + match = (facilities & (1ULL << 28)); + } else { + return 2; // Unrecognised feature. + } + + return match == 0; +} + +#else + +static int go(char* cpu) +{ + return 2; // Feature not recognised (non-s390x machine!) +} + +#endif + + +//--------------------------------------------------------------------------- +// main +//--------------------------------------------------------------------------- +int main(int argc, char **argv) +{ + if ( argc != 2 ) { + fprintf( stderr, "usage: s390x_features \n" ); + exit(3); // Usage error. + } + return go(argv[1]); +} diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/vg_regtest.in b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/vg_regtest.in index 15c53f14a..6712a0495 100755 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/vg_regtest.in +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/vg_regtest.in @@ -37,6 +37,8 @@ # --valgrind-lib: valgrind libraries to use. Default is $tests_dir/.in_place. # (This option should probably only be used in conjunction with # --valgrind.) +# --keep-unfiltered: keep a copy of the unfiltered output/error output +# of each test by adding an extension .unfiltered.out # # The easiest way is to run all tests in valgrind/ with (assuming you installed # in $PREFIX): @@ -55,12 +57,21 @@ # multiple are allowed) # - stdout_filter: (default: none) # - stderr_filter: (default: ./filter_stderr) +# +# - progB: (default: none) +# - argsB: (default: none) +# - stdinB: (default: none) +# - stdoutB_filter: (default: none) +# - stderrB_filter: (default: ./filter_stderr) +# # - prereq: (default: none) # - post: (default: none) # - cleanup: (default: none) # +# If prog or probB is a relative path, it will be prefix with the test directory. # Note that filters are necessary for stderr results to filter out things that # always change, eg. process id numbers. +# Note that if a progB is specified, it is started in background (before prog). # # Expected stdout (filtered) is kept in .stdout.exp* (can be more # than one expected output). It can be missing if it would be empty. Expected @@ -68,8 +79,13 @@ # one stderr.exp* file. Any .exp* file that ends in '~' or '#' is ignored; # this is because Emacs creates temporary files of these names. # +# Expected output for progB is handled similarly, except that +# expected stdout and stderr for progB are in .stdoutB.exp* +# and .stderrB.exp*. +# # If results don't match, the output can be found in .std.out, # and the diff between expected and actual in .std.diff*. +# (for progB, in .std2.out and .std2.diff*). # # The prerequisite command, if present, works like this: # - if it returns 0 the test is run @@ -99,10 +115,10 @@ use strict; # Global vars #---------------------------------------------------------------------------- my $usage="\n" - . "Usage:\n" - . " vg_regtest [--all, --valgrind, --valgrind-lib]\n" - . " Use EXTRA_REGTEST_OPTS to supply extra args for all tests\n" - . "\n"; + . "Usage:\n" + . " vg_regtest [--all, --valgrind, --valgrind-lib, --keep-unfiltered]\n" + . " Use EXTRA_REGTEST_OPTS to supply extra args for all tests\n" + . "\n"; my $tmp="vg_regtest.tmp.$$"; @@ -112,6 +128,11 @@ my $prog; # test prog my $args; # test prog args my $stdout_filter; # filter program to run stdout results file through my $stderr_filter; # filter program to run stderr results file through +my $progB; # Same but for progB +my $argsB; # +my $stdoutB_filter; # +my $stderrB_filter; # +my $stdinB; # Input file for progB my $prereq; # prerequisite test to satisfy before running test my $post; # check command after running test my $cleanup; # cleanup command to run @@ -119,7 +140,9 @@ my $cleanup; # cleanup command to run my @failures; # List of failed tests my $num_tests_done = 0; -my %num_failures = (stderr => 0, stdout => 0, post => 0); +my %num_failures = (stderr => 0, stdout => 0, + stderrB => 0, stdoutB => 0, + post => 0); # Default valgrind to use is this build tree's (uninstalled) one my $valgrind = "./coregrind/valgrind"; @@ -127,6 +150,7 @@ my $valgrind = "./coregrind/valgrind"; chomp(my $tests_dir = `pwd`); my $valgrind_lib = "$tests_dir/.in_place"; +my $keepunfiltered = 0; # default filter is the one named "filter_stderr" in the test's directory my $default_stderr_filter = "filter_stderr"; @@ -175,6 +199,8 @@ sub process_command_line() $valgrind = $1; } elsif ($arg =~ /^--valgrind-lib=(.*)$/) { $valgrind_lib = $1; + } elsif ($arg =~ /^--keep-unfiltered$/) { + $keepunfiltered = 1; } else { die $usage; } @@ -204,12 +230,16 @@ sub read_vgtest_file($) my ($f) = @_; # Defaults. - ($vgopts, $prog, $args) = ("", undef, ""); - ($stdout_filter, $stderr_filter) = (undef, undef); - ($prereq, $post, $cleanup) = (undef, undef, undef); + ($vgopts, $prog, $args) = ("", undef, ""); + ($stdout_filter, $stderr_filter) = (undef, undef); + ($progB, $argsB, $stdinB) = (undef, "", undef); + ($stdoutB_filter, $stderrB_filter) = (undef, undef); + ($prereq, $post, $cleanup) = (undef, undef, undef); # Every test directory must have a "filter_stderr" $stderr_filter = validate_program(".", $default_stderr_filter, 1, 1); + $stderrB_filter = validate_program(".", $default_stderr_filter, 1, 1); + open(INPUTFILE, "< $f") || die "File $f not openable\n"; @@ -217,7 +247,9 @@ sub read_vgtest_file($) if ($line =~ /^\s*#/ || $line =~ /^\s*$/) { next; } elsif ($line =~ /^\s*vgopts:\s*(.*)$/) { - $vgopts = $vgopts . " " . $1; # Nb: Make sure there's a space! + my $addvgopts = $1; + $addvgopts =~ s/\${PWD}/$ENV{PWD}/g; + $vgopts = $vgopts . " " . $addvgopts; # Nb: Make sure there's a space! } elsif ($line =~ /^\s*prog:\s*(.*)$/) { $prog = validate_program(".", $1, 0, 0); } elsif ($line =~ /^\s*args:\s*(.*)$/) { @@ -226,6 +258,16 @@ sub read_vgtest_file($) $stdout_filter = validate_program(".", $1, 1, 1); } elsif ($line =~ /^\s*stderr_filter:\s*(.*)$/) { $stderr_filter = validate_program(".", $1, 1, 1); + } elsif ($line =~ /^\s*progB:\s*(.*)$/) { + $progB = validate_program(".", $1, 0, 0); + } elsif ($line =~ /^\s*argsB:\s*(.*)$/) { + $argsB = $1; + } elsif ($line =~ /^\s*stdinB:\s*(.*)$/) { + $stdinB = $1; + } elsif ($line =~ /^\s*stdoutB_filter:\s*(.*)$/) { + $stdoutB_filter = validate_program(".", $1, 1, 1); + } elsif ($line =~ /^\s*stderrB_filter:\s*(.*)$/) { + $stderrB_filter = validate_program(".", $1, 1, 1); } elsif ($line =~ /^\s*prereq:\s*(.*)$/) { $prereq = $1; } elsif ($line =~ /^\s*post:\s*(.*)$/) { @@ -255,6 +297,17 @@ sub mysystem($) return $exit_code; } +# if $keepunfiltered, copies $1 to $1.unfiltered.out +# renames $0 tp $1 +sub filtered_rename($$) +{ + if ($keepunfiltered == 1) { + mysystem("cp $_[1] $_[1].unfiltered.out"); + } + rename ($_[0], $_[1]); +} + + # from a directory name like "/foo/cachesim/tests/" determine the tool name sub determine_tool() { @@ -331,8 +384,27 @@ sub do_one_test($$) } } - printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:"); + if (defined $progB) { + # If there is a progB, let's start it in background: + printf("%-16s valgrind $extraopts $vgopts $prog $args (progB: $progB $argsB)\n", + "$name:"); + # progB.done used to detect child has finished. See below. + # Note: redirection of stdout and stderr is before $progB to allow argsB + # to e.g. redirect stdoutB to stderrB + if (defined $stdinB) { + mysystem("(rm -f progB.done;" + . " < $stdinB > $name.stdoutB.out 2> $name.stderrB.out $progB $argsB;" + . "touch progB.done) &"); + } else { + mysystem("(rm -f progB.done;" + . " > $name.stdoutB.out 2> $name.stderrB.out $progB $argsB;" + . "touch progB.done) &"); + } + } else { + printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:"); + } + # Pass the appropriate --tool option for the directory (can be overridden # by an "args:" line, though). Set both VALGRIND_LIB and # VALGRIND_LIB_INNER in case this Valgrind was configured with @@ -346,7 +418,7 @@ sub do_one_test($$) # Filter stdout if (defined $stdout_filter) { mysystem("$stdout_filter < $name.stdout.out > $tmp"); - rename($tmp, "$name.stdout.out"); + filtered_rename($tmp, "$name.stdout.out"); } # Find all the .stdout.exp files. If none, use /dev/null. my @stdout_exps = <$name.stdout.exp*>; @@ -355,12 +427,44 @@ sub do_one_test($$) # Filter stderr mysystem("$stderr_filter < $name.stderr.out > $tmp"); - rename($tmp, "$name.stderr.out"); + filtered_rename($tmp, "$name.stderr.out"); # Find all the .stderr.exp files. At least one must exist. my @stderr_exps = <$name.stderr.exp*>; (0 != scalar @stderr_exps) or die "Could not find `$name.stderr.exp*'\n"; do_diffs($fullname, $name, "stderr", \@stderr_exps); + if (defined $progB) { + # wait for the child to be finished + # tried things such as: + # wait; + # $SIG{CHLD} = sub { wait }; + # but nothing worked: + # e.g. running mssnapshot.vgtest in a loop failed from time to time + # due to some missing output (not yet written?). + # So, we search progB.done during max 100 times 100 millisecond. + my $count; + for ($count = 1; $count <= 100; $count++) { + (-f "progB.done") or select(undef, undef, undef, 0.100); + } + # Filter stdout + if (defined $stdoutB_filter) { + mysystem("$stdoutB_filter < $name.stdoutB.out > $tmp"); + filtered_rename($tmp, "$name.stdoutB.out"); + } + # Find all the .stdoutB.exp files. If none, use /dev/null. + my @stdoutB_exps = <$name.stdoutB.exp*>; + @stdoutB_exps = ( "/dev/null" ) if (0 == scalar @stdoutB_exps); + do_diffs($fullname, $name, "stdoutB", \@stdoutB_exps); + + # Filter stderr + mysystem("$stderrB_filter < $name.stderrB.out > $tmp"); + filtered_rename($tmp, "$name.stderrB.out"); + # Find all the .stderrB.exp files. At least one must exist. + my @stderrB_exps = <$name.stderrB.exp*>; + (0 != scalar @stderrB_exps) or die "Could not find `$name.stderrB.exp*'\n"; + do_diffs($fullname, $name, "stderrB", \@stderrB_exps); + } + # Maybe do post-test check if (defined $post) { if (mysystem("$post > $name.post.out") != 0) { @@ -447,10 +551,13 @@ sub summarise_results my $x = ( $num_tests_done == 1 ? "test" : "tests" ); printf("\n== %d test%s, %d stderr failure%s, %d stdout failure%s, " + . "%d stderrB failure%s, %d stdoutB failure%s, " . "%d post failure%s ==\n", $num_tests_done, plural($num_tests_done), $num_failures{"stderr"}, plural($num_failures{"stderr"}), $num_failures{"stdout"}, plural($num_failures{"stdout"}), + $num_failures{"stderrB"}, plural($num_failures{"stderrB"}), + $num_failures{"stdoutB"}, plural($num_failures{"stdoutB"}), $num_failures{"post"}, plural($num_failures{"post"})); foreach my $failure (@failures) { @@ -506,6 +613,8 @@ if ($ENV{"EXTRA_REGTEST_OPTS"}) { if (0 == $num_failures{"stdout"} && 0 == $num_failures{"stderr"} && + 0 == $num_failures{"stdoutB"} && + 0 == $num_failures{"stderrB"} && 0 == $num_failures{"post"}) { exit 0; } else { diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/x86_amd64_features.c b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/x86_amd64_features.c index c497d2201..6597b0f4e 100644 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/x86_amd64_features.c +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/tests/x86_amd64_features.c @@ -79,6 +79,9 @@ static Bool go(char* cpu) } else if ( strcmp( cpu, "amd64-sse3" ) == 0 ) { level = 1; cmask = 1 << 0; + } else if ( strcmp( cpu, "amd64-pclmulqdq" ) == 0 ) { + level = 1; + cmask = 1 << 1; } else if ( strcmp( cpu, "amd64-ssse3" ) == 0 ) { level = 1; cmask = 1 << 9; @@ -89,6 +92,9 @@ static Bool go(char* cpu) level = 0x80000001; cmask = 1 << 5; require_amd = True; + } else if ( strcmp( cpu, "amd64-sse42" ) == 0 ) { + level = 1; + cmask = 1 << 20; #endif } else { return 2; // Unrecognised feature. diff --git a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/vg-in-place b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/vg-in-place index a49036de9..b364c10db 100755 --- a/l4/pkg/valgrind/src/valgrind-3.6.0-svn/vg-in-place +++ b/l4/pkg/valgrind/src/valgrind-3.6.0-svn/vg-in-place @@ -4,6 +4,9 @@ # $0 (the name of the file) and $PWD. dollarzero=$0 +if [ -h "${dollarzero}" ]; then + dollarzero=`readlink "${dollarzero}"` +fi if [ "${dollarzero#/}" = "${dollarzero}" ]; then diff --git a/l4/tool/gendep/deptrack.c b/l4/tool/gendep/deptrack.c index b74a68a63..a38bf29d5 100644 --- a/l4/tool/gendep/deptrack.c +++ b/l4/tool/gendep/deptrack.c @@ -12,11 +12,11 @@ #include #include #include +#include #if defined(__APPLE__) || defined(__FreeBSD__) #include #include -#include #endif #include "gendep.h" @@ -137,19 +137,24 @@ static void gendep__adddep(const char*name){ struct strlist *dep; char *namecopy; - if((namecopy = trim(name))==0) return; + if (!(namecopy = trim(name))) + return; /* special detection mode ? */ - if(detection_mode){ - if(!strcmp(namecopy, target)){ - detection_done=1; + if (detection_mode) + { + if (!strcmp(namecopy, target)) + detection_done = 1; + + free(namecopy); + return; } - free(namecopy); + + if (!strcmp(target, name)) return; - } - if(!strcmp(target, name)) return; + for(dep=dependencies; dep; dep=dep->next){ - if(!strcmp(dep->name, namecopy)){ + if(!strcmp(dep->name, namecopy)){ free(namecopy); return; } @@ -168,7 +173,7 @@ static void gendep__adddep(const char*name){ static void gendep__deldep(const char*name){ struct strlist *dep, *old; char *namecopy; - + old = 0; if((namecopy = trim(name))==0) return; for(dep=dependencies; dep; dep=dep->next){ @@ -212,7 +217,6 @@ setup_regexps (void) } /* standard mode of operation: catch dependencies */ - if (!gendep_getenv (&wanted_executable_name, "BINARY")) return; @@ -237,7 +241,7 @@ setup_regexps (void) */ regexps.re_array = xmalloc (0); regexps.invert_array = xmalloc (0); - + regexp_val = xstrdup (regexp_val); start = regexp_val; end = regexp_val + strlen (regexp_val); @@ -290,7 +294,7 @@ setup_regexps (void) /* Try to get the name of the binary. Is there a portable way to do this? */ -static void get_executable_name (void) +static void get_executable_name(void) { char *basename_p; #ifdef __linux @@ -300,13 +304,13 @@ static void get_executable_name (void) int i=0; int c; cmd[STRLEN-1] = 0; - + if (!cmdline) { fprintf(stderr, "libgendep.o: cannot open %s\n", proc_cmdline); exit(-1); } - + while ((c = fgetc(cmdline))!=EOF && c && i < STRLEN-1) cmd[i++] = c; @@ -315,7 +319,7 @@ static void get_executable_name (void) int mib[3], arglen; size_t size; char *procargs, *cmd; - + /* allocate process argument space */ mib[0] = CTL_KERN; mib[1] = KERN_ARGMAX; @@ -353,13 +357,13 @@ static void get_executable_name (void) #endif /* ugh. man 3 basename -> ? */ - basename_p = strrchr (cmd, '/'); + basename_p = strrchr(cmd, '/'); if (basename_p) basename_p++; else basename_p = cmd; - executable_name = xstrdup (basename_p); + executable_name = xstrdup(basename_p); #if defined(__APPLE__) || defined(__FreeBSD__) free(procargs); @@ -391,9 +395,9 @@ static void initialize (void) strncat (fn, ".d", STRLEN); } fn[STRLEN-1]=0; - + if((output = fopen (fn, "w"))==0){ - fprintf(stderr, "libgendep.so: cannot open %s\n", fn); + fprintf(stderr, "libgendep.so: cannot open %s for writing\n", fn); return; } write_word (target); @@ -402,8 +406,8 @@ static void initialize (void) } /* Someone is opening a file. If it is opened for reading, and - matches the regular expressions, write it to the dep-file. - + matches the regular expressions, write it to the dep-file. + Note that we explicitly ignore accesses to /etc/mtab and /proc/... as these files are inspected by libc for Linux and tend to change. */ @@ -418,7 +422,7 @@ gendep__register_open (char const *fn, int flags) fn == strstr(fn, "/proc/")) return; - for (i =0; i< regexps.no; i++) + for (i = 0; i < regexps.no; i++) { int not_matched = regexec (regexps.re_array +i, fn, 0, NULL, 0); @@ -456,15 +460,24 @@ static void finish (void) fclose (output); return; } - - if(detection_mode && detection_done && depfile_name){ - FILE *file; - - file = fopen(depfile_name, "w"); - if(!file) return; - fwrite(executable_name, strlen(executable_name), 1, file); - fclose(file); - return; - } -} + if (detection_mode && detection_done && depfile_name) + { + FILE *file; + + /* + * libgendep is called in a nested fashion (fork+execve in various + * wrappers), so we only write out the most inner occurence, which + * means we only write as long as depfile_name is not there + */ + if (access(depfile_name, W_OK) == -1 && errno == ENOENT) + { + file = fopen(depfile_name, "w"); + if (!file) + return; + fwrite(executable_name, strlen(executable_name), 1, file); + fclose(file); + } + return; + } +} diff --git a/l4/tool/kconfig/Makefile b/l4/tool/kconfig/Makefile index 6e2267f37..3e3d9b84f 100644 --- a/l4/tool/kconfig/Makefile +++ b/l4/tool/kconfig/Makefile @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 6 -SUBLEVEL = 38 +SUBLEVEL = 39 EXTRAVERSION = NAME = Flesh-Eating Bats with Fangs @@ -102,6 +102,10 @@ ifeq ("$(origin O)", "command line") KBUILD_OUTPUT := $(O) endif +ifeq ("$(origin W)", "command line") + export KBUILD_ENABLE_EXTRA_GCC_CHECKS := 1 +endif + # That's our default target when none is given on the command line PHONY := _all _all: @@ -421,7 +425,7 @@ endif # of make so .config is not included in this case either (for *config). no-dot-config-targets := clean mrproper distclean \ - cscope TAGS tags help %docs check% coccicheck \ + cscope gtags TAGS tags help %docs check% coccicheck \ include/linux/version.h headers_% \ kernelversion %src-pkg @@ -666,7 +670,7 @@ export MODLIB # INSTALL_MOD_STRIP, if defined, will cause modules to be # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then # the default option --strip-debug will be used. Otherwise, -# INSTALL_MOD_STRIP will used as the options to the strip command. +# INSTALL_MOD_STRIP value will be used as the options to the strip command. ifdef INSTALL_MOD_STRIP ifeq ($(INSTALL_MOD_STRIP),1) @@ -1018,7 +1022,7 @@ hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) PHONY += __headers __headers: include/linux/version.h scripts_basic FORCE - $(Q)$(MAKE) $(build)=scripts scripts/unifdef + $(Q)$(MAKE) $(build)=scripts build_unifdef PHONY += headers_install_all headers_install_all: @@ -1135,7 +1139,7 @@ CLEAN_FILES += vmlinux System.map \ MRPROPER_DIRS += include/config usr/include include/generated MRPROPER_FILES += .config .config.old .version .old_version \ include/linux/version.h \ - Module.symvers tags TAGS cscope* + Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS # clean - Delete most, but leave enough to build external modules # @@ -1222,6 +1226,7 @@ help: @echo ' modules_prepare - Set up for building external modules' @echo ' tags/TAGS - Generate tags file for editors' @echo ' cscope - Generate cscope index' + @echo ' gtags - Generate GNU GLOBAL index' @echo ' kernelrelease - Output the release version string' @echo ' kernelversion - Output the version stored in Makefile' @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ @@ -1262,6 +1267,7 @@ help: @echo ' make O=dir [targets] Locate all output files in "dir", including .config' @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' @echo ' make C=2 [targets] Force check of all c source with $$CHECK' + @echo ' make W=1 [targets] Enable extra gcc checks' @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @echo 'For further info see the ./README file' @@ -1380,7 +1386,7 @@ clean: $(clean-dirs) quiet_cmd_tags = GEN $@ cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@ -tags TAGS cscope: FORCE +tags TAGS cscope gtags: FORCE $(call cmd,tags) # Scripts to check various things for consistency diff --git a/l4/tool/kconfig/README b/l4/tool/kconfig/README index 8f41abd33..778d26aee 100644 --- a/l4/tool/kconfig/README +++ b/l4/tool/kconfig/README @@ -1,3 +1,3 @@ -kconfig taken from vanilla Linux 2.6.38, and slightly patched. +kconfig taken from vanilla Linux 2.6.39, and slightly patched. diff --git a/l4/tool/kconfig/scripts/Makefile b/l4/tool/kconfig/scripts/Makefile index 2e088109f..fcea26168 100644 --- a/l4/tool/kconfig/scripts/Makefile +++ b/l4/tool/kconfig/scripts/Makefile @@ -18,6 +18,11 @@ always := $(hostprogs-y) $(hostprogs-m) # The following hostprogs-y programs are only build on demand hostprogs-y += unifdef +# This target is used internally to avoid "is up to date" messages +PHONY += build_unifdef +build_unifdef: scripts/unifdef FORCE + @: + subdir-$(CONFIG_MODVERSIONS) += genksyms subdir-y += mod subdir-$(CONFIG_SECURITY_SELINUX) += selinux diff --git a/l4/tool/kconfig/scripts/Makefile.build b/l4/tool/kconfig/scripts/Makefile.build index 4eb99ab34..d5f925abe 100644 --- a/l4/tool/kconfig/scripts/Makefile.build +++ b/l4/tool/kconfig/scripts/Makefile.build @@ -49,6 +49,40 @@ ifeq ($(KBUILD_NOPEDANTIC),) $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS) endif endif + +# +# make W=1 settings +# +# $(call cc-option... ) handles gcc -W.. options which +# are not supported by all versions of the compiler +ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS +KBUILD_EXTRA_WARNINGS := -Wextra +KBUILD_EXTRA_WARNINGS += -Wunused -Wno-unused-parameter +KBUILD_EXTRA_WARNINGS += -Waggregate-return +KBUILD_EXTRA_WARNINGS += -Wbad-function-cast +KBUILD_EXTRA_WARNINGS += -Wcast-qual +KBUILD_EXTRA_WARNINGS += -Wcast-align +KBUILD_EXTRA_WARNINGS += -Wconversion +KBUILD_EXTRA_WARNINGS += -Wdisabled-optimization +KBUILD_EXTRA_WARNINGS += -Wlogical-op +KBUILD_EXTRA_WARNINGS += -Wmissing-declarations +KBUILD_EXTRA_WARNINGS += -Wmissing-format-attribute +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wmissing-include-dirs,) +KBUILD_EXTRA_WARNINGS += -Wmissing-prototypes +KBUILD_EXTRA_WARNINGS += -Wnested-externs +KBUILD_EXTRA_WARNINGS += -Wold-style-definition +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Woverlength-strings,) +KBUILD_EXTRA_WARNINGS += -Wpacked +KBUILD_EXTRA_WARNINGS += -Wpacked-bitfield-compat +KBUILD_EXTRA_WARNINGS += -Wpadded +KBUILD_EXTRA_WARNINGS += -Wpointer-arith +KBUILD_EXTRA_WARNINGS += -Wredundant-decls +KBUILD_EXTRA_WARNINGS += -Wshadow +KBUILD_EXTRA_WARNINGS += -Wswitch-default +KBUILD_EXTRA_WARNINGS += $(call cc-option, -Wvla,) +KBUILD_CFLAGS += $(KBUILD_EXTRA_WARNINGS) +endif + include scripts/Makefile.lib ifdef host-progs @@ -403,7 +437,6 @@ ifneq ($(cmd_files),) include $(cmd_files) endif - # Declare the contents of the .PHONY variable as phony. We keep that # information in a variable se we can use it in if_changed and friends. diff --git a/l4/tool/kconfig/scripts/Makefile.modpost b/l4/tool/kconfig/scripts/Makefile.modpost index 7d2205658..56dfafc73 100644 --- a/l4/tool/kconfig/scripts/Makefile.modpost +++ b/l4/tool/kconfig/scripts/Makefile.modpost @@ -35,14 +35,14 @@ # KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined # symbols in the final module linking stage # KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. -# This is solely usefull to speed up test compiles +# This is solely useful to speed up test compiles PHONY := _modpost _modpost: __modpost include include/config/auto.conf include scripts/Kbuild.include -# When building external modules load the Kbuild file to retreive EXTRA_SYMBOLS info +# When building external modules load the Kbuild file to retrieve EXTRA_SYMBOLS info ifneq ($(KBUILD_EXTMOD),) # set src + obj - they may be used when building the .mod.c file diff --git a/l4/tool/kconfig/scripts/kconfig/conf.c b/l4/tool/kconfig/scripts/kconfig/conf.c index 659326c3e..006ad817c 100644 --- a/l4/tool/kconfig/scripts/kconfig/conf.c +++ b/l4/tool/kconfig/scripts/kconfig/conf.c @@ -332,7 +332,7 @@ static int conf_choice(struct menu *menu) } if (!child) continue; - if (line[strlen(line) - 1] == '?') { + if (line[0] && line[strlen(line) - 1] == '?') { print_help(child); continue; } diff --git a/repomgr b/repomgr index f2cdb3640..6a8c82ac9 100755 --- a/repomgr +++ b/repomgr @@ -39,23 +39,19 @@ my %modules = ldscripts ldso libc_backends libkproxy libloader libsigma0 - libstdc++-headers libstdc++-v3 libstdc++-v3_r - libsupc++ libsupc++_r + libstdc++-headers libstdc++-v3 libstdc++-v3-minimal + libsupc++ libsupc++-minimal libvbus loader log lua moe ned sigma0 - uclibc uclibc_r + uclibc uclibc-minimal uclibc-headers ) ], pub_module => 1, modules => [ qw(bid toolbin) ], }, - # ./mk/pkgdeps -A mk/aliases.d pkgdeps pkg rtc shmc libvcpu stdlibs log - # l4re_c-util libio + # ./mk/pkgdeps -A mk/aliases.d pkgdeps pkg ... l4linux_requirements => { paths => [ map { "l4/pkg/$_" } qw( - crtn cxx cxx_libc_io l4re l4re_c l4re_vfs l4sys l4util - ldscripts libc_backends libio-io libstdc++-headers - libstdc++-v3 libsupc++ libvbus libvcpu log lxfuxlibc rtc - shmc uclibc + libio-io libvcpu lxfuxlibc rtc shmc ) ], pub_module => 1, modules => [ qw(l4re) ], @@ -187,7 +183,13 @@ my %modules = modules => [ qw(l4re_snapshot) ], }, - remote_repo => { modules => [ qw(fiasco remote_repo_l4re) ], }, + remote_repo => { modules => [ qw(fiasco remote_repo_l4re) ], + # those are going away, we need to keep them to get the + # dirs updated and thus removed + paths => [ qw(l4/pkg/libstdc++-v3_r + l4/pkg/libsupc++_r + l4/pkg/uclibc_r) ], + }, all => { modules => [ qw(remote_repo) ], -- 2.39.2